ZGlmZiAtLWdpdCBhL0FuZHJvaWQubWsgYi9BbmRyb2lkLm1rCmluZGV4IDZlMWJkYzUuLjMwNDEwNjUgMTAwNjQ0Ci0tLSBhL0FuZHJvaWQubWsKKysrIGIvQW5kcm9pZC5tawpAQCAtODYsNyArODYsNiBAQAogCWNvcmUvamF2YS9hbmRyb2lkL2FwcC9JU2VhcmNoTWFuYWdlci5haWRsIFwKIAljb3JlL2phdmEvYW5kcm9pZC9hcHAvSVNlYXJjaE1hbmFnZXJDYWxsYmFjay5haWRsIFwKIAljb3JlL2phdmEvYW5kcm9pZC9hcHAvSVNlcnZpY2VDb25uZWN0aW9uLmFpZGwgXAotCWNvcmUvamF2YS9hbmRyb2lkL2FwcC9JU3RhdHVzQmFyLmFpZGwgXAogCWNvcmUvamF2YS9hbmRyb2lkL2FwcC9JVGh1bWJuYWlsUmVjZWl2ZXIuYWlkbCBcCiAJY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lUcmFuc2llbnROb3RpZmljYXRpb24uYWlkbCBcCiAJY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lVaU1vZGVNYW5hZ2VyLmFpZGwgXApAQCAtMTU1LDYgKzE1NCw4IEBACiAJY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2JhY2t1cC9JQmFja3VwVHJhbnNwb3J0LmFpZGwgXAogCWNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9JRHJvcEJveE1hbmFnZXJTZXJ2aWNlLmFpZGwgXAogCWNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9JUmVzdWx0UmVjZWl2ZXIuYWlkbCBcCisJY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9JU3RhdHVzQmFyLmFpZGwgXAorCWNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvSVN0YXR1c0JhclNlcnZpY2UuYWlkbCBcCiAJY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvSUlucHV0Q29udGV4dC5haWRsIFwKIAljb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9JSW5wdXRDb250ZXh0Q2FsbGJhY2suYWlkbCBcCiAJY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvSUlucHV0TWV0aG9kLmFpZGwgXApAQCAtMTk4LDYgKzE5OSw5IEBACiBMT0NBTF9NT0RVTEUgOj0gZnJhbWV3b3JrCiBMT0NBTF9NT0RVTEVfQ0xBU1MgOj0gSkFWQV9MSUJSQVJJRVMKIAorTE9DQUxfTk9fRU1NQV9JTlNUUlVNRU5UIDo9IHRydWUKK0xPQ0FMX05PX0VNTUFfQ09NUElMRSA6PSB0cnVlCisKICMgTGlzdCBvZiBjbGFzc2VzIGFuZCBpbnRlcmZhY2VzIHdoaWNoIHNob3VsZCBiZSBsb2FkZWQgYnkgdGhlIFp5Z290ZS4KIExPQ0FMX0pBVkFfUkVTT1VSQ0VfRklMRVMgKz0gJChMT0NBTF9QQVRIKS9wcmVsb2FkZWQtY2xhc3NlcwogCkBAIC0yOTQsNyArMjk4LDcgQEAKICMgYXMgImZpbmFsIiBpbiB0aGUgb2ZmaWNpYWwgU0RLIEFQSXMuCiBmd2Jhc2VfZGlyc190b19kb2N1bWVudCArPSBjb3JlL2NvbmZpZy9zZGsKIAotIyBUaGVzZSBhcmUgcmVsYXRpdmUgdG8gZGFsdmlrL2xpYmNvcmUKKyMgVGhlc2UgYXJlIHJlbGF0aXZlIHRvIGxpYmNvcmUKICMgSW50ZW50aW9uYWxseSBub3QgaW5jbHVkZWQgZnJvbSBsaWJjb3JlOgogIyAgICAgaWN1IG9wZW5zc2wgc3VuY29tcGF0IHN1cHBvcnQKIGxpYmNvcmVfdG9fZG9jdW1lbnQgOj0gXApAQCAtMzM0LDcgKzMzOCw3IEBACiBkaXJzX3RvX2RvY3VtZW50IDo9IFwKIAkkKGZ3YmFzZV9kaXJzX3RvX2RvY3VtZW50KSBcCiAJJChub25fYmFzZV9kaXJzKSBcCi0JJChhZGRwcmVmaXggLi4vLi4vZGFsdmlrL2xpYmNvcmUvLCAkKGxpYmNvcmVfdG9fZG9jdW1lbnQpKQorCSQoYWRkcHJlZml4IC4uLy4uL2xpYmNvcmUvLCAkKGxpYmNvcmVfdG9fZG9jdW1lbnQpKQogCiBodG1sX2RpcnMgOj0gXAogCSQoRlJBTUVXT1JLU19CQVNFX1NVQkRJUlMpIFwKQEAgLTM0NSw2ICszNDksMTAgQEAKIAkkKGNhbGwgZmluZC1vdGhlci1qYXZhLWZpbGVzLCAkKGRpcnNfdG9fZG9jdW1lbnQpKSBcCiAJJChjYWxsIGZpbmQtb3RoZXItaHRtbC1maWxlcywgJChodG1sX2RpcnMpKQogCisjIFRoaXMgaXMgdXNlZCBieSBpZGUubWsgYXMgdGhlIGxpc3Qgb2Ygc291cmNlIGZpbGVzIHRoYXQgYXJlCisjIGFsd2F5cyBpbmNsdWRlZC4KK0lOVEVSTkFMX1NES19TT1VSQ0VfRElSUyA6PSAkKGFkZHByZWZpeCAkKExPQ0FMX1BBVEgpLywkKGRpcnNfdG9fZG9jdW1lbnQpKQorCiBmcmFtZXdvcmtfZG9jc19MT0NBTF9EUk9JRERPQ19TT1VSQ0VfUEFUSCA6PSBcCiAJJChGUkFNRVdPUktTX0JBU0VfSkFWQV9TUkNfRElSUykKIApAQCAtMzk2LDYgKzQwNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzL3NhbXBsZXMvQ3ViZUxpdmVXYWxscGFwZXIgIkxpdmUgV2FsbHBhcGVyIiBcCiAJCS1zYW1wbGVjb2RlICQoc2FtcGxlX2RpcikvSG9tZSBcCiAJCSAgICAgICAgICAgIHJlc291cmNlcy9zYW1wbGVzL0hvbWUgIkhvbWUiIFwKKwkJLXNhbXBsZWNvZGUgJChzYW1wbGVfZGlyKS9IZWF2eVdlaWdodCBcCisJCSAgICAgICAgICAgIHJlc291cmNlcy9zYW1wbGVzL0hlYXZ5V2VpZ2h0ICJIZWF2eSBXZWlnaHQgQXBwIiBcCiAJCS1zYW1wbGVjb2RlICQoc2FtcGxlX2RpcikvSmV0Qm95IFwKIAkJICAgICAgICAgICAgcmVzb3VyY2VzL3NhbXBsZXMvSmV0Qm95ICJKZXRCb3kiIFwKIAkJLXNhbXBsZWNvZGUgJChzYW1wbGVfZGlyKS9MdW5hckxhbmRlciBcCkBAIC00MDQsOCArNDE0LDggQEAKIAkJICAgICAgICAgICAgcmVzb3VyY2VzL3NhbXBsZXMvTXVsdGlSZXNvbHV0aW9uICJNdWx0aXBsZSBSZXNvbHV0aW9ucyIgXAogCQktc2FtcGxlY29kZSAkKHNhbXBsZV9kaXIpL05vdGVQYWQgXAogCQkgICAgICAgICAgICByZXNvdXJjZXMvc2FtcGxlcy9Ob3RlUGFkICJOb3RlIFBhZCIgXAotICAgICAgICAgICAgICAgIC1zYW1wbGVjb2RlICQoc2FtcGxlX2RpcikvU2FtcGxlU3luY0FkYXB0ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy9zYW1wbGVzL1NhbXBsZVN5bmNBZGFwdGVyICJTYW1wbGUgU3luYyBBZGFwdGVyIiBcCisJCS1zYW1wbGVjb2RlICQoc2FtcGxlX2RpcikvU2FtcGxlU3luY0FkYXB0ZXIgXAorCQkgICAgICAgICAgICByZXNvdXJjZXMvc2FtcGxlcy9TYW1wbGVTeW5jQWRhcHRlciAiU2FtcGxlIFN5bmMgQWRhcHRlciIgXAogCQktc2FtcGxlY29kZSAkKHNhbXBsZV9kaXIpL1NlYXJjaGFibGVEaWN0aW9uYXJ5IFwKIAkJICAgICAgICAgICAgcmVzb3VyY2VzL3NhbXBsZXMvU2VhcmNoYWJsZURpY3Rpb25hcnkgIlNlYXJjaGFibGUgRGljdGlvbmFyeSB2MiIgXAogCQktc2FtcGxlY29kZSAkKHNhbXBsZV9kaXIpL1NuYWtlIFwKQEAgLTU5Miw2ICs2MDIsOSBAQAogCiBMT0NBTF9NT0RVTEUgOj0gZXh0CiAKK0xPQ0FMX05PX0VNTUFfSU5TVFJVTUVOVCA6PSB0cnVlCitMT0NBTF9OT19FTU1BX0NPTVBJTEUgOj0gdHJ1ZQorCiBpbmNsdWRlICQoQlVJTERfSkFWQV9MSUJSQVJZKQogCiAKZGlmZiAtLWdpdCBhL0NsZWFuU3BlYy5tayBiL0NsZWFuU3BlYy5tawppbmRleCA3MDc0MDRiLi4yNmQ4YTFiIDEwMDY0NAotLS0gYS9DbGVhblNwZWMubWsKKysrIGIvQ2xlYW5TcGVjLm1rCkBAIC01MSw2ICs1MSw5IEBACiAkKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIHJtIC1yZiAkKE9VVF9ESVIpL3RhcmdldC9jb21tb24vb2JqL0pBVkFfTElCUkFSSUVTL2ZyYW1ld29ya19pbnRlcm1lZGlhdGVzL3NyYy9jb3JlL2phdmEvYW5kcm9pZC9hcHApCiAkKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIHJtIC1yZiAkKE9VVF9ESVIpL3RhcmdldC9jb21tb24vb2JqL0pBVkFfTElCUkFSSUVTL2ZyYW1ld29ya19pbnRlcm1lZGlhdGVzL3NyYy9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50KQogJChjYWxsIGFkZC1jbGVhbi1zdGVwLCBybSAtcmYgJChPVVRfRElSKS90YXJnZXQvY29tbW9uL29iai9BUFBTL0ZyYW1ld29ya1Rlc3RfaW50ZXJtZWRpYXRlcy8pCiskKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIHJtIC1yZiAkKE9VVF9ESVIpL3RhcmdldC9jb21tb24vb2JqL0pBVkFfTElCUkFSSUVTL2FuZHJvaWQucG9saWN5KikKKyQoY2FsbCBhZGQtY2xlYW4tc3RlcCwgcm0gLXJmICQoVEFSR0VUX09VVF9KQVZBX0xJQlJBUklFUykvYW5kcm9pZC5wb2xpY3kuamFyKQorJChjYWxsIGFkZC1jbGVhbi1zdGVwLCBybSAtcmYgJChPVVRfRElSKS90YXJnZXQvY29tbW9uL29iai9KQVZBX0xJQlJBUklFUy9mcmFtZXdvcmtfaW50ZXJtZWRpYXRlcykKIAogCiAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvYXBpLzkueG1sIGIvYXBpLzkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTk2YmQKLS0tIC9kZXYvbnVsbAorKysgYi9hcGkvOS54bWwKQEAgLTAsMCArMSwzOTU3MzYgQEAKKzxhcGk+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkIgorPgorPGNsYXNzIG5hbWU9Ik1hbmlmZXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbmlmZXN0IgorIHR5cGU9ImFuZHJvaWQuTWFuaWZlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFuaWZlc3QucGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbmlmZXN0LnBlcm1pc3Npb24iCisgdHlwZT0iYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX0NIRUNLSU5fUFJPUEVSVElFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX0NIRUNLSU5fUFJPUEVSVElFUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NFU1NfQ09BUlNFX0xPQ0FUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfQ09BUlNFX0xPQ0FUSU9OJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ0VTU19GSU5FX0xPQ0FUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfRklORV9MT0NBVElPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NFU1NfTE9DQVRJT05fRVhUUkFfQ09NTUFORFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19MT0NBVElPTl9FWFRSQV9DT01NQU5EUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NFU1NfTU9DS19MT0NBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX01PQ0tfTE9DQVRJT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX05FVFdPUktfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ0VTU19TVVJGQUNFX0ZMSU5HRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19TVVJGQUNFX0ZMSU5HRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX1dJRklfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19XSUZJX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ09VTlRfTUFOQUdFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQUNDT1VOVF9NQU5BR0VSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVVEhFTlRJQ0FURV9BQ0NPVU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQVVUSEVOVElDQVRFX0FDQ09VTlRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfU1RBVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJBVFRFUllfU1RBVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklORF9BUFBXSURHRVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJJTkRfQVBQV0lER0VUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJJTkRfREVWSUNFX0FETUlOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5CSU5EX0RFVklDRV9BRE1JTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCSU5EX0lOUFVUX01FVEhPRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQklORF9JTlBVVF9NRVRIT0QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklORF9XQUxMUEFQRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJJTkRfV0FMTFBBUEVSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQkxVRVRPT1RIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9BRE1JTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQkxVRVRPT1RIX0FETUlOJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJSSUNLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5CUklDSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCUk9BRENBU1RfUEFDS0FHRV9SRU1PVkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5CUk9BRENBU1RfUEFDS0FHRV9SRU1PVkVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJST0FEQ0FTVF9TTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJST0FEQ0FTVF9TTVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJPQURDQVNUX1NUSUNLWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQlJPQURDQVNUX1NUSUNLWSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCUk9BRENBU1RfV0FQX1BVU0giCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJST0FEQ0FTVF9XQVBfUFVTSCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQUxMX1BIT05FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5DQUxMX1BIT05FJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTExfUFJJVklMRUdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0FMTF9QUklWSUxFR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTUVSQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0FNRVJBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5HRV9DT01QT05FTlRfRU5BQkxFRF9TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0hBTkdFX0NPTVBPTkVOVF9FTkFCTEVEX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5HRV9DT05GSUdVUkFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5DSEFOR0VfQ09ORklHVVJBVElPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOR0VfTkVUV09SS19TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTkdFX1dJRklfTVVMVElDQVNUX1NUQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5DSEFOR0VfV0lGSV9NVUxUSUNBU1RfU1RBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTkdFX1dJRklfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkNIQU5HRV9XSUZJX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMRUFSX0FQUF9DQUNIRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0xFQVJfQVBQX0NBQ0hFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMRUFSX0FQUF9VU0VSX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkNMRUFSX0FQUF9VU0VSX0RBVEEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVFJPTF9MT0NBVElPTl9VUERBVEVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5DT05UUk9MX0xPQ0FUSU9OX1VQREFURVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVMRVRFX0NBQ0hFX0ZJTEVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5ERUxFVEVfQ0FDSEVfRklMRVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVMRVRFX1BBQ0tBR0VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5ERUxFVEVfUEFDS0FHRVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVWSUNFX1BPV0VSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5ERVZJQ0VfUE9XRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElBR05PU1RJQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uRElBR05PU1RJQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNBQkxFX0tFWUdVQVJEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5ESVNBQkxFX0tFWUdVQVJEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRVTVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkRVTVAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhQQU5EX1NUQVRVU19CQVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkVYUEFORF9TVEFUVVNfQkFSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZBQ1RPUllfVEVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uRkFDVE9SWV9URVNUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQVNITElHSFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkZMQVNITElHSFQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9SQ0VfQkFDSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uRk9SQ0VfQkFDSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfQUNDT1VOVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkdFVF9BQ0NPVU5UUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfUEFDS0FHRV9TSVpFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5HRVRfUEFDS0FHRV9TSVpFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9UQVNLUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uR0VUX1RBU0tTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMT0JBTF9TRUFSQ0giCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkdMT0JBTF9TRUFSQ0gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFSRFdBUkVfVEVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uSEFSRFdBUkVfVEVTVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTkpFQ1RfRVZFTlRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5JTkpFQ1RfRVZFTlRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOU1RBTExfTE9DQVRJT05fUFJPVklERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLklOU1RBTExfTE9DQVRJT05fUFJPVklERVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5TVEFMTF9QQUNLQUdFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uSU5TVEFMTF9QQUNLQUdFUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUk5BTF9TWVNURU1fV0lORE9XIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5BTF9TWVNURU1fV0lORE9XJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkVUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5FVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSUxMX0JBQ0tHUk9VTkRfUFJPQ0VTU0VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5LSUxMX0JBQ0tHUk9VTkRfUFJPQ0VTU0VTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTkFHRV9BQ0NPVU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uTUFOQUdFX0FDQ09VTlRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTkFHRV9BUFBfVE9LRU5TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5NQU5BR0VfQVBQX1RPS0VOUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVNURVJfQ0xFQVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk1BU1RFUl9DTEVBUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RJRllfQVVESU9fU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk1PRElGWV9BVURJT19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RJRllfUEhPTkVfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk1PRElGWV9QSE9ORV9TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT1VOVF9GT1JNQVRfRklMRVNZU1RFTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk1PVU5UX0ZPUk1BVF9GSUxFU1lTVEVNUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT1VOVF9VTk1PVU5UX0ZJTEVTWVNURU1TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5NT1VOVF9VTk1PVU5UX0ZJTEVTWVNURU1TJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBFUlNJU1RFTlRfQUNUSVZJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlBFUlNJU1RFTlRfQUNUSVZJVFkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPQ0VTU19PVVRHT0lOR19DQUxMUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uUFJPQ0VTU19PVVRHT0lOR19DQUxMUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX0NBTEVOREFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUFEX0NBTEVOREFSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfQ09OVEFDVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfQ09OVEFDVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVBRF9GUkFNRV9CVUZGRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfRlJBTUVfQlVGRkVSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfSElTVE9SWV9CT09LTUFSS1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuYnJvd3Nlci5wZXJtaXNzaW9uLlJFQURfSElTVE9SWV9CT09LTUFSS1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVBRF9JTlBVVF9TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uUkVBRF9JTlBVVF9TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX0xPR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfTE9HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX09XTkVSX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfT1dORVJfREFUQSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX1BIT05FX1NUQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUFEX1BIT05FX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfU01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUFEX1NNUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX1NZTkNfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfU1lOQ19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX1NZTkNfU1RBVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfU1lOQ19TVEFUUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUJPT1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQk9PVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUNFSVZFX0JPT1RfQ09NUExFVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUNFSVZFX0JPT1RfQ09NUExFVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQ0VJVkVfTU1TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUNFSVZFX01NUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUNFSVZFX1NNUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uUkVDRUlWRV9TTVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVDRUlWRV9XQVBfUFVTSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uUkVDRUlWRV9XQVBfUFVTSCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUNPUkRfQVVESU8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQ09SRF9BVURJTyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRU9SREVSX1RBU0tTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRU9SREVSX1RBU0tTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1RBUlRfUEFDS0FHRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFU1RBUlRfUEFDS0FHRVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5EX1NNUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uU0VORF9TTVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX0FDVElWSVRZX1dBVENIRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9BQ1RJVklUWV9XQVRDSEVSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9BTFdBWVNfRklOSVNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfQUxXQVlTX0ZJTklTSCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVRfQU5JTUFUSU9OX1NDQUxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfQU5JTUFUSU9OX1NDQUxFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9ERUJVR19BUFAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9ERUJVR19BUFAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX09SSUVOVEFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfT1JJRU5UQVRJT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX1BSRUZFUlJFRF9BUFBMSUNBVElPTlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9QUkVGRVJSRURfQVBQTElDQVRJT05TJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX1BST0NFU1NfTElNSVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9QUk9DRVNTX0xJTUlUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9USU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfVElNRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVRfVElNRV9aT05FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfVElNRV9aT05FJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9XQUxMUEFQRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9XQUxMUEFQRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX1dBTExQQVBFUl9ISU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uU0VUX1dBTExQQVBFUl9ISU5UUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSUdOQUxfUEVSU0lTVEVOVF9QUk9DRVNTRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNJR05BTF9QRVJTSVNURU5UX1BST0NFU1NFUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfQkFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TVEFUVVNfQkFSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVQlNDUklCRURfRkVFRFNfUkVBRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uU1VCU0NSSUJFRF9GRUVEU19SRUFEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVQlNDUklCRURfRkVFRFNfV1JJVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNVQlNDUklCRURfRkVFRFNfV1JJVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTVEVNX0FMRVJUX1dJTkRPVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uU1lTVEVNX0FMRVJUX1dJTkRPVyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVUERBVEVfREVWSUNFX1NUQVRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5VUERBVEVfREVWSUNFX1NUQVRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRV9DUkVERU5USUFMUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uVVNFX0NSRURFTlRJQUxTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlZJQlJBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FLRV9MT0NLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XQUtFX0xPQ0smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV1JJVEVfQVBOX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9BUE5fU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV1JJVEVfQ0FMRU5EQVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLldSSVRFX0NBTEVOREFSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX0NPTlRBQ1RTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9DT05UQUNUUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUklURV9FWFRFUk5BTF9TVE9SQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9FWFRFUk5BTF9TVE9SQUdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX0dTRVJWSUNFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfR1NFUlZJQ0VTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX0hJU1RPUllfQk9PS01BUktTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmJyb3dzZXIucGVybWlzc2lvbi5XUklURV9ISVNUT1JZX0JPT0tNQVJLUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUklURV9PV05FUl9EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9PV05FUl9EQVRBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX1NFQ1VSRV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfU0VDVVJFX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUklURV9TTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLldSSVRFX1NNUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUklURV9TWU5DX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9TWU5DX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYW5pZmVzdC5wZXJtaXNzaW9uX2dyb3VwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFuaWZlc3QucGVybWlzc2lvbl9ncm91cCIKKyB0eXBlPSJhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb25fZ3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBQ0NPVU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuQUNDT1VOVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09TVF9NT05FWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuQ09TVF9NT05FWSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVZFTE9QTUVOVF9UT09MUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuREVWRUxPUE1FTlRfVE9PTFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFSRFdBUkVfQ09OVFJPTFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLkhBUkRXQVJFX0NPTlRST0xTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0FUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi1ncm91cC5MT0NBVElPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVNTQUdFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuTUVTU0FHRVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuTkVUV09SSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05BTF9JTkZPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi1ncm91cC5QRVJTT05BTF9JTkZPJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FX0NBTExTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi1ncm91cC5QSE9ORV9DQUxMUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVE9SQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi1ncm91cC5TVE9SQUdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZU1RFTV9UT09MUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuU1lTVEVNX1RPT0xTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIiCisgdHlwZT0iYW5kcm9pZC5SIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIuYW5pbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIuYW5pbSIKKyB0eXBlPSJhbmRyb2lkLlIuYW5pbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImFjY2VsZXJhdGVfZGVjZWxlcmF0ZV9pbnRlcnBvbGF0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjU4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY2NlbGVyYXRlX2ludGVycG9sYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFudGljaXBhdGVfaW50ZXJwb2xhdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1ODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYW50aWNpcGF0ZV9vdmVyc2hvb3RfaW50ZXJwb2xhdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYm91bmNlX2ludGVycG9sYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImN5Y2xlX2ludGVycG9sYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlY2VsZXJhdGVfaW50ZXJwb2xhdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmFkZV9pbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZhZGVfb3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGluZWFyX2ludGVycG9sYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im92ZXJzaG9vdF9pbnRlcnBvbGF0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjU4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzbGlkZV9pbl9sZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2xpZGVfb3V0X3JpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIuYXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSLmFycmF5IgorIHR5cGU9ImFuZHJvaWQuUi5hcnJheSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImVtYWlsQWRkcmVzc1R5cGVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyMzU5NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1Qcm90b2NvbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmdhbml6YXRpb25UeXBlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MjM1OTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBob25lVHlwZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3N0YWxBZGRyZXNzVHlwZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUi5hdHRyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5hdHRyIgorIHR5cGU9ImFuZHJvaWQuUi5hdHRyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iYWJzTGlzdFZpZXdTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjY291bnRQcmVmZXJlbmNlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjY291bnRUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3OTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZpdHlDbG9zZUVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZpdHlDbG9zZUV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY3Rpdml0eU9wZW5FbnRlckFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjdGl2aXR5T3BlbkV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhZGRTdGF0ZXNGcm9tQ2hpbGRyZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhZGp1c3RWaWV3Qm91bmRzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxlcnREaWFsb2dTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFsbG93QmFja3VwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dDbGVhclVzZXJEYXRhIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dTaW5nbGVUYXAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbGxvd1Rhc2tSZXBhcmVudGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFscGhhYmV0aWNTaG9ydGN1dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFsd2F5c0RyYXduV2l0aENhY2hlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5OTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWx3YXlzUmV0YWluVGFza1N0YXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYW5nbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbmltYXRlT25DbGljayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFuaW1hdGlvbkNhY2hlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYW5pbWF0aW9uRHVyYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbmltYXRpb25PcmRlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFudGlhbGlhcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFueURlbnNpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcGlLZXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdXRob3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdXRob3JpdGllcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dG9Db21wbGV0ZVRleHRWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdXRvTGluayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dG9TdGFydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dG9UZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdXRvVXJsRGV0ZWN0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhY2tncm91bmREaW1BbW91bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJiYWNrZ3JvdW5kRGltRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhY2t1cEFnZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmFzZWxpbmVBbGlnbkJvdHRvbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhc2VsaW5lQWxpZ25lZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDQ2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhc2VsaW5lQWxpZ25lZENoaWxkSW5kZXgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b21CcmlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b21EYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYm90dG9tTGVmdFJhZGl1cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJvdHRvbU1lZGl1bSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJvdHRvbU9mZnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJvdHRvbVJpZ2h0UmFkaXVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnVmZmVyVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvblN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnV0dG9uU3R5bGVJbnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvblN0eWxlU21hbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidXR0b25TdHlsZVRvZ2dsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNhY2hlQ29sb3JIaW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FuZGlkYXRlc1RleHRTdHlsZVNwYW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FwaXRhbGl6ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyQnJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyQ29sb3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjZW50ZXJEYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyTWVkaXVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNlbnRlclkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGVja0JveFByZWZlcmVuY2VTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrTWFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrYWJsZUJlaGF2aW9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hlY2tib3hTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGVja2VkQnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hpbGREaXZpZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hpbGRJbmRpY2F0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGlsZEluZGljYXRvckxlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAyMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGlsZEluZGljYXRvclJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hvaWNlTW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsZWFyVGFza09uTGF1bmNoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpY2thYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpcENoaWxkcmVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpcE9yaWVudGF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpcFRvUGFkZGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvZGVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29sbGFwc2VDb2x1bW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29sb3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2xvckJhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2xvckJhY2tncm91bmRDYWNoZUhpbnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2xvckZvcmVncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2xvckZvcmVncm91bmRJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29sdW1uRGVsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2x1bW5XaWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbXBsZXRpb25IaW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29tcGxldGlvbkhpbnRWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29tcGxldGlvblRocmVzaG9sZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ0NoYW5nZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb25maWd1cmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb25zdGFudFNpemUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb250ZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29udGVudEF1dGhvcml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbnRlbnREZXNjcmlwdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNyb3BUb1BhZGRpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJzb3JWaXNpYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY3ljbGVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGFzaEdhcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTc1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRhc2hXaWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRhdGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZWJ1Z2dhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVmYXVsdFZhbHVlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZXBlbmRlbmN5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY2VuZGFudEZvY3VzYWJpbGl0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlc2NyaXB0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGV0YWNoV2FsbHBhcGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGV0YWlsQ29sdW1uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGV0YWlsU29jaWFsU3VtbWFyeSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpYWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkaWFsb2dJY29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlhbG9nTGF5b3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlhbG9nTWVzc2FnZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpYWxvZ1ByZWZlcmVuY2VTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpYWxvZ1RpdGxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlnaXRzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlyZWN0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlyZWN0aW9uUHJpb3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkaXNhYmxlRGVwZW5kZW50c1N0YXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlzYWJsZWRBbHBoYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpdGhlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpdmlkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkaXZpZGVySGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd1NlbGVjdG9yT25Ub3AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkcmF3YWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRyYXdhYmxlQm90dG9tIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2FibGVMZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2FibGVQYWRkaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2FibGVSaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRyYXdhYmxlVG9wIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2luZ0NhY2hlUXVhbGl0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRyb3BEb3duQW5jaG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJvcERvd25IZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkcm9wRG93bkhpbnRBcHBlYXJhbmNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJvcERvd25Ib3Jpem9udGFsT2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJvcERvd25JdGVtU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkcm9wRG93bkxpc3RWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkcm9wRG93blNlbGVjdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJvcERvd25WZXJ0aWNhbE9mZnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRyb3BEb3duV2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkdXBsaWNhdGVQYXJlbnRTdGF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImR1cmF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZWRpdFRleHRQcmVmZXJlbmNlU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlZGl0VGV4dFN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZWRpdGFibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzExNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVkaXRvckV4dHJhcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVsbGlwc2l6ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVtcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVuZENvbG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW5kWWVhciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVudHJpZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlbnRyeVZhbHVlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV2ZW50c0ludGVyY2VwdGlvbkVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleGNsdWRlRnJvbVJlY2VudHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHBhbmRhYmxlTGlzdFByZWZlcnJlZENoaWxkSW5kaWNhdG9yTGVmdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVMaXN0UHJlZmVycmVkQ2hpbGRJbmRpY2F0b3JSaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVMaXN0UHJlZmVycmVkQ2hpbGRQYWRkaW5nTGVmdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVMaXN0UHJlZmVycmVkSXRlbUluZGljYXRvckxlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHBhbmRhYmxlTGlzdFByZWZlcnJlZEl0ZW1JbmRpY2F0b3JSaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVMaXN0UHJlZmVycmVkSXRlbVBhZGRpbmdMZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZXhwYW5kYWJsZUxpc3RWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHBhbmRhYmxlTGlzdFZpZXdXaGl0ZVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZXhwb3J0ZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHRyYVRlbnNpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWN0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWRlRHVyYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWRlRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZhZGVPZmZzZXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWRlU2Nyb2xsYmFycyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZhZGluZ0VkZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWRpbmdFZGdlTGVuZ3RoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmFzdFNjcm9sbEVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWxsQWZ0ZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWxsQmVmb3JlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmlsbEVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWxsVmlld3BvcnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWx0ZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaW5pc2hPbkNsb3NlU3lzdGVtRGlhbG9ncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZpbmlzaE9uVGFza0xhdW5jaCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZpdHNTeXN0ZW1XaW5kb3dzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxpcEludGVydmFsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9jdXNhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9jdXNhYmxlSW5Ub3VjaE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmb290ZXJEaXZpZGVyc0VuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmb3JlZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9yZWdyb3VuZEdyYXZpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmb3JtYXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmcmVlemVzVGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZyb21BbHBoYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZyb21EZWdyZWVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZnJvbVhEZWx0YSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZyb21YU2NhbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmcm9tWURlbHRhIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZnJvbVlTY2FsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZ1bGxCcmlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmdWxsRGFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZ1bmN0aW9uYWxUZXN0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2FsbGVyeUl0ZW1CYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2FsbGVyeVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2VzdHVyZUNvbG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2VzdHVyZVN0cm9rZUFuZ2xlVGhyZXNob2xkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2VzdHVyZVN0cm9rZUxlbmd0aFRocmVzaG9sZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imdlc3R1cmVTdHJva2VTcXVhcmVuZXNzVGhyZXNob2xkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2VzdHVyZVN0cm9rZVR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJnZXN0dXJlU3Ryb2tlV2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJnbEVzVmVyc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImdyYWRpZW50UmFkaXVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ3JhbnRVcmlQZXJtaXNzaW9ucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImdyYXZpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJncmlkVmlld1N0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ3JvdXBJbmRpY2F0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoYW5kX2hvdXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoYW5kX21pbnV0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhhbmRsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhhbmRsZVByb2ZpbGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhhcHRpY0ZlZWRiYWNrRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imhhc0NvZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoZWFkZXJCYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVhZGVyRGl2aWRlcnNFbmFibGVkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGludCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imhvcml6b250YWxEaXZpZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaG9yaXpvbnRhbEdhcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imhvcml6b250YWxTcGFjaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaG9zdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uUHJldmlldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWdub3JlR3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltYWdlQnV0dG9uU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbWFnZVdlbGxTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltZUFjdGlvbklkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1lQWN0aW9uTGFiZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbWVFeHRyYWN0RW50ZXJBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbWVFeHRyYWN0RXhpdEFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltZUZ1bGxzY3JlZW5CYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1lT3B0aW9ucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5jbHVkZUZvbnRQYWRkaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5jbHVkZUluR2xvYmFsU2VhcmNoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5kZXRlcm1pbmF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV0ZXJtaW5hdGVCZWhhdmlvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV0ZXJtaW5hdGVEcmF3YWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV0ZXJtaW5hdGVEdXJhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV0ZXJtaW5hdGVPbmx5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5kaWNhdG9yTGVmdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGljYXRvclJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5mbGF0ZWRJZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluaXRPcmRlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluaXRpYWxMYXlvdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbm5lclJhZGl1cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlubmVyUmFkaXVzUmF0aW8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnB1dE1ldGhvZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5wdXRUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5zZXRCb3R0b20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnNldExlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnNldFJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5zZXRUb3AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnN0YWxsTG9jYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnRlcnBvbGF0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc0RlZmF1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc0luZGljYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzTW9kaWZpZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc1JlcGVhdGFibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc1Njcm9sbENvbnRhaW5lciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzU3RpY2t5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXRlbUJhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpdGVtSWNvbkRpc2FibGVkQWxwaGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpdGVtVGV4dEFwcGVhcmFuY2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZWVwU2NyZWVuT24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXlCYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5RWRnZUZsYWdzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5SGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5SWNvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleUxhYmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5T3V0cHV0VGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleVByZXZpZXdIZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXlQcmV2aWV3TGF5b3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5UHJldmlld09mZnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleVRleHRDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleVRleHRTaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5V2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXlib2FyZE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXljb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2lsbEFmdGVyUmVzdG9yZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxhYmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFiZWxUZXh0U2l6ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxhcmdlU2NyZWVucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxhdW5jaE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWJvdmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25CYXNlbGluZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9hbGlnbkJvdHRvbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTQ2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9hbGlnbkxlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25QYXJlbnRCb3R0b20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25QYXJlbnRMZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X2FsaWduUGFyZW50UmlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25QYXJlbnRUb3AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25SaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9hbGlnblRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9hbGlnbldpdGhQYXJlbnRJZk1pc3NpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYmVsb3ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfY2VudGVySG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9jZW50ZXJJblBhcmVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9jZW50ZXJWZXJ0aWNhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9jb2x1bW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfZ3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9oZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfbWFyZ2luIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X21hcmdpbkJvdHRvbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9tYXJnaW5MZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X21hcmdpblJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X21hcmdpblRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9zY2FsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9zcGFuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X3RvTGVmdE9mIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X3RvUmlnaHRPZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF93ZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfd2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfeCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF95IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGVmdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxpbmVTcGFjaW5nRXh0cmEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaW5lU3BhY2luZ011bHRpcGxpZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaW5lcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxpbmtzQ2xpY2thYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdENob2ljZUluZGljYXRvck11bHRpcGxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdENob2ljZUluZGljYXRvclNpbmdsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imxpc3REaXZpZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdFByZWZlcnJlZEl0ZW1IZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaXN0U2VsZWN0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaXN0U2VwYXJhdG9yVGV4dFZpZXdTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imxpc3RWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaXN0Vmlld1doaXRlU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb25nQ2xpY2thYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFuYWdlU3BhY2VBY3Rpdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hcFZpZXdTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hcnF1ZWVSZXBlYXRMaW1pdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heEVtcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heEhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heEl0ZW1zUGVyUm93IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4TGVuZ3RoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4TGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtYXhMaW5lcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heFJvd3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtYXhTZGtWZXJzaW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4V2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtZWFzdXJlQWxsQ2hpbGRyZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtZW51Q2F0ZWdvcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtaW1lVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1pbkVtcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1pbkhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1pbkxldmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWluTGluZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtaW5TZGtWZXJzaW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWluV2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibW9yZUljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtdWx0aXByb2Nlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibmVnYXRpdmVCdXR0b25UZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibmV4dEZvY3VzRG93biIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5leHRGb2N1c0xlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuZXh0Rm9jdXNSaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5leHRGb2N1c1VwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibm9IaXN0b3J5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibm9ybWFsU2NyZWVucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bUNvbHVtbnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1TdGFycyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWVyaWMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWVyaWNTaG9ydGN1dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im9uQ2xpY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvbmVzaG90IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3JkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmRlckluQ2F0ZWdvcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmRlcmluZ0Zyb21YbWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmllbnRhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im91dEFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhZGRpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWRkaW5nQm90dG9tIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFkZGluZ0xlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWRkaW5nUmlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWRkaW5nVG9wIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFuZWxCYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFuZWxDb2xvckJhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYW5lbENvbG9yRm9yZWdyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhbmVsRnVsbEJhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYW5lbFRleHRBcHBlYXJhbmNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFzc3dvcmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXRoUGF0dGVybiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhdGhQcmVmaXgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwZXJtaXNzaW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGVybWlzc2lvbkdyb3VwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGVyc2lzdGVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBlcnNpc3RlbnREcmF3aW5nQ2FjaGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwaG9uZU51bWJlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGl2b3RYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGl2b3RZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBCYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBDaGFyYWN0ZXJzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBLZXlib2FyZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBvcHVwTGF5b3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBXaW5kb3dTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBvcnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3NpdGl2ZUJ1dHRvblRleHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVmZXJlbmNlQ2F0ZWdvcnlTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZWZlcmVuY2VJbmZvcm1hdGlvblN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVyZW5jZUxheW91dENoaWxkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVyZW5jZVNjcmVlblN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4OTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVyZW5jZVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4OTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpb3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcml2YXRlSW1lT3B0aW9ucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2Nlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9ncmVzcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzQmFyU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9ncmVzc0JhclN0eWxlSG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzQmFyU3R5bGVJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvZ3Jlc3NCYXJTdHlsZUxhcmdlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvZ3Jlc3NCYXJTdHlsZUxhcmdlSW52ZXJzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzQmFyU3R5bGVTbWFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzQmFyU3R5bGVTbWFsbEludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9ncmVzc0JhclN0eWxlU21hbGxUaXRsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzRHJhd2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9tcHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm90ZWN0aW9uTGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJxdWVyeUFjdGlvbk1zZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InF1ZXJ5QWZ0ZXJaZXJvUmVzdWx0cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InF1aWNrQ29udGFjdEJhZGdlU3R5bGVTbWFsbFdpbmRvd0xhcmdlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icXVpY2tDb250YWN0QmFkZ2VTdHlsZVNtYWxsV2luZG93TWVkaXVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icXVpY2tDb250YWN0QmFkZ2VTdHlsZVNtYWxsV2luZG93U21hbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJxdWlja0NvbnRhY3RCYWRnZVN0eWxlV2luZG93TGFyZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJxdWlja0NvbnRhY3RCYWRnZVN0eWxlV2luZG93TWVkaXVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icXVpY2tDb250YWN0QmFkZ2VTdHlsZVdpbmRvd1NtYWxsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmFkaW9CdXR0b25TdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJhZGl1cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJhdGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJhdGluZ0JhclN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmF0aW5nQmFyU3R5bGVJbmRpY2F0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyYXRpbmdCYXJTdHlsZVNtYWxsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVhZFBlcm1pc3Npb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXBlYXRDb3VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcGVhdE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFGaXZlV2F5TmF2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVxSGFyZEtleWJvYXJkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVxS2V5Ym9hcmRUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVxTmF2aWdhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcVRvdWNoU2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVxdWlyZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXNpemVhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVzb3VyY2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXN0b3JlQW55VmVyc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc3RvcmVOZWVkc0FwcGxpY2F0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJpbmd0b25lUHJlZmVyZW5jZVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmluZ3RvbmVUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm93RGVsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3dFZGdlRmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3dIZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzYXZlRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjYWxlR3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjYWxlSGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NhbGVUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NhbGVXaWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjaGVtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcmVlbk9yaWVudGF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsSG9yaXpvbnRhbGx5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsVmlld1N0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcm9sbFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JvbGxiYXJBbHdheXNEcmF3SG9yaXpvbnRhbFRyYWNrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyQWx3YXlzRHJhd1ZlcnRpY2FsVHJhY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JvbGxiYXJEZWZhdWx0RGVsYXlCZWZvcmVGYWRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyRmFkZUR1cmF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyU2l6ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcm9sbGJhclN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyVGh1bWJIb3Jpem9udGFsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyVGh1bWJWZXJ0aWNhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcm9sbGJhclRyYWNrSG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcm9sbGJhclRyYWNrVmVydGljYWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JvbGxiYXJzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsaW5nQ2FjaGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hCdXR0b25UZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hNb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VhcmNoU2V0dGluZ3NEZXNjcmlwdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlYXJjaFN1Z2dlc3RBdXRob3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hTdWdnZXN0SW50ZW50QWN0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VhcmNoU3VnZ2VzdEludGVudERhdGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hTdWdnZXN0UGF0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlYXJjaFN1Z2dlc3RTZWxlY3Rpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hTdWdnZXN0VGhyZXNob2xkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Vjb25kYXJ5UHJvZ3Jlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWVrQmFyU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWxlY3RBbGxPbkZvY3VzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0YWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNldHRpbmdzQWN0aXZpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaGFkb3dDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNoYWRvd0R4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hhZG93RHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaGFkb3dSYWRpdXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaGFwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNoYXJlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hhcmVkVXNlcklkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hhcmVkVXNlckxhYmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hvdWxkRGlzYWJsZVZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaG93RGVmYXVsdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNob3dTaWxlbnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaHJpbmtDb2x1bW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2luZ2xlTGluZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic21hbGxJY29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic21hbGxTY3JlZW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic21vb3RoU2Nyb2xsYmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic291bmRFZmZlY3RzRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNwYWNpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzcGlubmVyRHJvcERvd25JdGVtU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzcGlubmVySXRlbVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3Bpbm5lclN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3JjIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhY2tGcm9tQm90dG9tIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhclN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhcnRDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXJ0T2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhcnRZZWFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVOb3ROZWVkZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9hYm92ZV9hbmNob3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9hY3RpdmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9jaGVja2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9jaGVja2VkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVfZW1wdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9lbmFibGVkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVfZXhwYW5kZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9maXJzdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRlX2ZvY3VzZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9sYXN0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVfbG9uZ19wcmVzc2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9taWRkbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9wcmVzc2VkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVfc2VsZWN0ZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9zaW5nbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV93aW5kb3dfZm9jdXNlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0ZXBTaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RyZWFtVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0cmV0Y2hDb2x1bW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RyZXRjaE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdWdnZXN0QWN0aW9uTXNnIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3VnZ2VzdEFjdGlvbk1zZ0NvbHVtbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN1bW1hcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdW1tYXJ5Q29sdW1uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3VtbWFyeU9mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN1bW1hcnlPbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN1cHBvcnRzVXBsb2FkaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3luY2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJTdHJpcEVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJTdHJpcExlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJTdHJpcFJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFiV2lkZ2V0U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXJnZXRBY3Rpdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhcmdldENsYXNzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFyZ2V0UGFja2FnZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhcmdldFNka1ZlcnNpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXNrQWZmaW5pdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXNrQ2xvc2VFbnRlckFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhc2tDbG9zZUV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXNrT3BlbkVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza09wZW5FeGl0QW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza1RvQmFja0VudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza1RvQmFja0V4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXNrVG9Gcm9udEVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza1RvRnJvbnRFeGl0QW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGVuc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRlc3RPbmx5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRBcHBlYXJhbmNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dEFwcGVhcmFuY2VCdXR0b24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0QXBwZWFyYW5jZUludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0QXBwZWFyYW5jZUxhcmdlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dEFwcGVhcmFuY2VMYXJnZUludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0QXBwZWFyYW5jZU1lZGl1bSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRBcHBlYXJhbmNlTWVkaXVtSW52ZXJzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRBcHBlYXJhbmNlU2VhcmNoUmVzdWx0U3VidGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0QXBwZWFyYW5jZVNlYXJjaFJlc3VsdFRpdGxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dEFwcGVhcmFuY2VTbWFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRBcHBlYXJhbmNlU21hbGxJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENoZWNrTWFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDaGVja01hcmtJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9ySGlnaGxpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9ySGludCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvckhpbnRJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9yTGluayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclByaW1hcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JQcmltYXJ5RGlzYWJsZU9ubHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JQcmltYXJ5SW52ZXJzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclByaW1hcnlJbnZlcnNlRGlzYWJsZU9ubHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JQcmltYXJ5SW52ZXJzZU5vRGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclByaW1hcnlOb0Rpc2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JTZWNvbmRhcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JTZWNvbmRhcnlJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9yU2Vjb25kYXJ5SW52ZXJzZU5vRGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclNlY29uZGFyeU5vRGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclRlcnRpYXJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9yVGVydGlhcnlJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dEZpbHRlckVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0T2ZmIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dE9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dFNjYWxlWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRTaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dFN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dFZpZXdTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRoZW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGhpY2tuZXNzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGhpY2tuZXNzUmF0aW8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aHVtYiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRodW1iT2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGh1bWJuYWlsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGlsZU1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aXRsZUNvbmRlbnNlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvQWxwaGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b0RlZ3JlZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b1hEZWx0YSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvWFNjYWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9ZRGVsdGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b1lTY2FsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcEJyaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcERhcmsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b3BMZWZ0UmFkaXVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9wT2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9wUmlnaHRSYWRpdXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0cmFuc2NyaXB0TW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlZmFjZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVuY2VydGFpbkdlc3R1cmVDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVuc2VsZWN0ZWRBbHBoYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVwZGF0ZVBlcmlvZE1pbGxpcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVzZUxldmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idXNlclZpc2libGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YWx1ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZhcmlhYmxlUGFkZGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTU3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnNpb25Db2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmVyc2lvbk5hbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJ0aWNhbENvcnJlY3Rpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJ0aWNhbERpdmlkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJ0aWNhbEdhcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnRpY2FsU3BhY2luZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZpc2liaWxpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aXNpYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idm1TYWZlTW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZvaWNlTGFuZ3VhZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2b2ljZUxhbmd1YWdlTW9kZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2b2ljZU1heFJlc3VsdHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2b2ljZVByb21wdFRleHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2b2ljZVNlYXJjaE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3YWxscGFwZXJDbG9zZUVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2FsbHBhcGVyQ2xvc2VFeGl0QW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2FsbHBhcGVySW50cmFDbG9zZUVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2FsbHBhcGVySW50cmFDbG9zZUV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3YWxscGFwZXJJbnRyYU9wZW5FbnRlckFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndhbGxwYXBlckludHJhT3BlbkV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3YWxscGFwZXJPcGVuRW50ZXJBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3YWxscGFwZXJPcGVuRXhpdEFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndlYlRleHRWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3ZWJWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3ZWlnaHRTdW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aWRnZXRMYXlvdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0FuaW1hdGlvblN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93QmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0NvbnRlbnRPdmVybGF5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93RGlzYWJsZVByZXZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dFbnRlckFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0V4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dGcmFtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0Z1bGxzY3JlZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dIaWRlQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93SXNGbG9hdGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0lzVHJhbnNsdWNlbnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dOb0Rpc3BsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dOb1RpdGxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93U2hvd0FuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd1Nob3dXYWxscGFwZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dTb2Z0SW5wdXRNb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93VGl0bGVCYWNrZ3JvdW5kU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dUaXRsZVNpemUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dUaXRsZVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id3JpdGVQZXJtaXNzaW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5ZXNOb1ByZWZlcmVuY2VTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InpBZGp1c3RtZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIuYm9vbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIuYm9vbCIKKyB0eXBlPSJhbmRyb2lkLlIuYm9vbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLmNvbG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5jb2xvciIKKyB0eXBlPSJhbmRyb2lkLlIuY29sb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJiYWNrZ3JvdW5kX2RhcmsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJiYWNrZ3JvdW5kX2xpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmxhY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkYXJrZXJfZ3JheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByaW1hcnlfdGV4dF9kYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpbWFyeV90ZXh0X2Rhcmtfbm9kaXNhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpbWFyeV90ZXh0X2xpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpbWFyeV90ZXh0X2xpZ2h0X25vZGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlY29uZGFyeV90ZXh0X2RhcmsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWNvbmRhcnlfdGV4dF9kYXJrX25vZGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlY29uZGFyeV90ZXh0X2xpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Vjb25kYXJ5X3RleHRfbGlnaHRfbm9kaXNhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFiX2luZGljYXRvcl90ZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGVydGlhcnlfdGV4dF9kYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGVydGlhcnlfdGV4dF9saWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRyYW5zcGFyZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2hpdGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aWRnZXRfZWRpdHRleHRfZGFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLmRpbWVuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5kaW1lbiIKKyB0eXBlPSJhbmRyb2lkLlIuZGltZW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJhcHBfaWNvbl9zaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ4OTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGh1bWJuYWlsX2hlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0ODk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRodW1ibmFpbF93aWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0ODk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLmRyYXdhYmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5kcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLlIuZHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJhbGVydF9kYXJrX2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxlcnRfbGlnaHRfZnJhbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcnJvd19kb3duX2Zsb2F0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXJyb3dfdXBfZmxvYXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b21fYmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnRuX2RlZmF1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidG5fZGVmYXVsdF9zbWFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ0bl9kaWFsb2ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidG5fZHJvcGRvd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidG5fbWludXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidG5fcGx1cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ0bl9yYWRpbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ0bl9zdGFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnRuX3N0YXJfYmlnX29mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ0bl9zdGFyX2JpZ19vbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvbl9vbm9mZl9pbmRpY2F0b3Jfb2ZmIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnV0dG9uX29ub2ZmX2luZGljYXRvcl9vbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrYm94X29mZl9iYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hlY2tib3hfb25fYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRhcmtfaGVhZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlhbG9nX2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGl2aWRlcl9ob3Jpem9udGFsX2JyaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpdmlkZXJfaG9yaXpvbnRhbF9kYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGl2aWRlcl9ob3Jpem9udGFsX2RpbV9kYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGl2aWRlcl9ob3Jpem9udGFsX3RleHRmaWVsZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVkaXRfdGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVkaXRib3hfYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVkaXRib3hfYmFja2dyb3VuZF9ub3JtYWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlZGl0Ym94X2Ryb3Bkb3duX2RhcmtfZnJhbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlZGl0Ym94X2Ryb3Bkb3duX2xpZ2h0X2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2FsbGVyeV90aHVtYiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX2J0bl9zcGVha19ub3ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19kZWxldGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19kaWFsb2dfYWxlcnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19kaWFsb2dfZGlhbGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfZGlhbG9nX2VtYWlsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfZGlhbG9nX2luZm8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19kaWFsb2dfbWFwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfaW5wdXRfYWRkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfaW5wdXRfZGVsZXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfaW5wdXRfZ2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbG9ja19pZGxlX2FsYXJtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbG9ja19pZGxlX2NoYXJnaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbG9ja19pZGxlX2xvY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19sb2NrX2lkbGVfbG93X2JhdHRlcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19sb2NrX2xvY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19sb2NrX3Bvd2VyX29mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX2xvY2tfc2lsZW50X21vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19sb2NrX3NpbGVudF9tb2RlX29mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lZGlhX2ZmIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVkaWFfbmV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lZGlhX3BhdXNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVkaWFfcGxheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lZGlhX3ByZXZpb3VzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVkaWFfcmV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9hZGQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X2FnZW5kYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfYWx3YXlzX2xhbmRzY2FwZV9wb3J0cmFpdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTU3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfY2FsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfY2FtZXJhIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9jbG9zZV9jbGVhcl9jYW5jZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X2NvbXBhc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X2Nyb3AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X2RheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfZGVsZXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9kaXJlY3Rpb25zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9lZGl0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9nYWxsZXJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9oZWxwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9pbmZvX2RldGFpbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X21hbmFnZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfbWFwbW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfbW9udGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X21vcmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X215X2NhbGVuZGFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9teWxvY2F0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9teXBsYWNlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfcHJlZmVyZW5jZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3JlY2VudF9oaXN0b3J5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9yZXBvcnRfaW1hZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3JldmVydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfcm90YXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9zYXZlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9zZWFyY2giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3NlbmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3NldF9hcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfc2hhcmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3NsaWRlc2hvdyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfc29ydF9hbHBoYWJldGljYWxseSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfc29ydF9ieV9zaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV90b2RheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfdXBsb2FkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV91cGxvYWRfeW91X3R1YmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3ZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3dlZWsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3pvb20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19ub3RpZmljYXRpb25fY2xlYXJfYWxsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1OTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbm90aWZpY2F0aW9uX292ZXJsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19wYXJ0aWFsX3NlY3VyZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX3BvcHVwX2Rpc2tfZnVsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX3BvcHVwX3JlbWluZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfcG9wdXBfc3luYyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX3NlYXJjaF9jYXRlZ29yeV9kZWZhdWx0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfc2VjdXJlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdF9zZWxlY3Rvcl9iYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWVudV9mcmFtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1lbnVfZnVsbF9mcmFtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1lbnVpdGVtX2JhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwaWN0dXJlX2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlc2VuY2VfYXdheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZXNlbmNlX2J1c3kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVzZW5jZV9pbnZpc2libGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVzZW5jZV9vZmZsaW5lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlc2VuY2Vfb25saW5lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvZ3Jlc3NfaG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzX2luZGV0ZXJtaW5hdGVfaG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJhZGlvYnV0dG9uX29mZl9iYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmFkaW9idXR0b25fb25fYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcmVlbl9iYWNrZ3JvdW5kX2RhcmsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JlZW5fYmFja2dyb3VuZF9kYXJrX3RyYW5zcGFyZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NyZWVuX2JhY2tncm91bmRfbGlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JlZW5fYmFja2dyb3VuZF9saWdodF90cmFuc3BhcmVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNwaW5uZXJfYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNwaW5uZXJfZHJvcGRvd25fYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXJfYmlnX29mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXJfYmlnX29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3Rhcl9vZmYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGFyX29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfY2FsbF9tdXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfY2hhdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfbm90aWZ5X2Vycm9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfbWlzc2VkX2NhbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0X25vdGlmeV9tb3JlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfc2RjYXJkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfc2RjYXJkX3ByZXBhcmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0X25vdGlmeV9zZGNhcmRfdXNiIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfc3luYyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfbm90aWZ5X3N5bmNfbm9hbmltIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfdm9pY2VtYWlsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9zeXNfZGF0YV9ibHVldG9vdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0X3N5c19kb3dubG9hZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX2Rvd25sb2FkX2RvbmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0X3N5c19oZWFkc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9zeXNfcGhvbmVfY2FsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3Bob25lX2NhbGxfZm9yd2FyZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3Bob25lX2NhbGxfb25faG9sZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3NwZWFrZXJwaG9uZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3VwbG9hZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3VwbG9hZF9kb25lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9zeXNfdnBfcGhvbmVfY2FsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3ZwX3Bob25lX2NhbGxfb25faG9sZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3dhcm5pbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0dXNfYmFyX2l0ZW1fYXBwX2JhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9hY3Rpb25fY2FsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9hY3Rpb25fY2hhdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9hY3Rpb25fZW1haWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzeW1fY2FsbF9pbmNvbWluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9jYWxsX21pc3NlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9jYWxsX291dGdvaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3ltX2NvbnRhY3RfY2FyZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9kZWZfYXBwX2ljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aXRsZV9iYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aXRsZV9iYXJfdGFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvYXN0X2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iem9vbV9wbGF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLmlkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5pZCIKKyB0eXBlPSJhbmRyb2lkLlIuaWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJiYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnV0dG9uMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvbjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidXR0b24zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FuZGlkYXRlc0FyZWEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGVja2JveCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4Mjg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsb3NlQnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29udGVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MjkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvcHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb3B5VXJsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY3VzdG9tIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZWRpdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MjkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVtcHR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZXh0cmFjdEFyZWEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoaW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4Mjk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imljb24xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyOTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNvbjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODI5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnB1dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4Mjk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlucHV0QXJlYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlucHV0RXh0cmFjdEVkaXRUZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5Ym9hcmRWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4Mjk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1lc3NhZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODI5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXN0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByaW1hcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9ncmVzcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlY29uZGFyeVByb2dyZXNzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0QWxsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0ZWRJY29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhcnRTZWxlY3RpbmdUZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RvcFNlbGVjdGluZ1RleHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdW1tYXJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3dpdGNoSW5wdXRNZXRob2QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJjb250ZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFiaG9zdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhYnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0MSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b2dnbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aWRnZXRfZnJhbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUi5pbnRlZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5pbnRlZ2VyIgorIHR5cGU9ImFuZHJvaWQuUi5pbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iY29uZmlnX2xvbmdBbmltVGltZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ19tZWRpdW1BbmltVGltZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ19zaG9ydEFuaW1UaW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIubGF5b3V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5sYXlvdXQiCisgdHlwZT0iYW5kcm9pZC5SLmxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImFjdGl2aXR5X2xpc3RfaXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJyb3dzZXJfbGlua19jb250ZXh0X2hlYWRlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVfbGlzdF9jb250ZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVyZW5jZV9jYXRlZ29yeSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdF9kaWFsb2dfaXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdF9kaWFsb2dfbXVsdGljaG9pY2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWxlY3RfZGlhbG9nX3NpbmdsZWNob2ljZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNpbXBsZV9kcm9wZG93bl9pdGVtXzFsaW5lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2ltcGxlX2V4cGFuZGFibGVfbGlzdF9pdGVtXzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfZXhwYW5kYWJsZV9saXN0X2l0ZW1fMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNpbXBsZV9nYWxsZXJ5X2l0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfbGlzdF9pdGVtXzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfbGlzdF9pdGVtXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfbGlzdF9pdGVtX2NoZWNrZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfbGlzdF9pdGVtX211bHRpcGxlX2Nob2ljZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNpbXBsZV9saXN0X2l0ZW1fc2luZ2xlX2Nob2ljZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNpbXBsZV9zcGlubmVyX2Ryb3Bkb3duX2l0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfc3Bpbm5lcl9pdGVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGVzdF9saXN0X2l0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0d29fbGluZV9saXN0X2l0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUi5wbHVyYWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5wbHVyYWxzIgorIHR5cGU9ImFuZHJvaWQuUi5wbHVyYWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIucmF3IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5yYXciCisgdHlwZT0iYW5kcm9pZC5SLnJhdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLnN0cmluZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIuc3RyaW5nIgorIHR5cGU9ImFuZHJvaWQuUi5zdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJWaWRlb1ZpZXdfZXJyb3JfYnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVmlkZW9WaWV3X2Vycm9yX3RleHRfaW52YWxpZF9wcm9ncmVzc2l2ZV9wbGF5YmFjayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZpZGVvVmlld19lcnJvcl90ZXh0X3Vua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWaWRlb1ZpZXdfZXJyb3JfdGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjYW5jZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb3B5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzNjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29weVVybCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImN1dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRNc2lzZG5BbHBoYVRhZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRWb2ljZU1haWxBbHBoYVRhZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpYWxvZ19hbGVydF90aXRsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVtcHR5UGhvbmVOdW1iZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJodHRwRXJyb3JCYWRVcmwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJodHRwRXJyb3JVbnN1cHBvcnRlZFNjaGVtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5vIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXN0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlYXJjaF9nbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdEFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVua25vd25OYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idW50aXRsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5ZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUi5zdHlsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIuc3R5bGUiCisgdHlwZT0iYW5kcm9pZC5SLnN0eWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQW5pbWF0aW9uX0FjdGl2aXR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQW5pbWF0aW9uX0RpYWxvZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFuaW1hdGlvbl9JbnB1dE1ldGhvZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFuaW1hdGlvbl9Ub2FzdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFuaW1hdGlvbl9UcmFuc2x1Y2VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1lZGlhQnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTWVkaWFCdXR0b25fRmZ3ZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1lZGlhQnV0dG9uX05leHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNZWRpYUJ1dHRvbl9QYXVzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1lZGlhQnV0dG9uX1BsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNZWRpYUJ1dHRvbl9QcmV2aW91cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1lZGlhQnV0dG9uX1JldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfRGlhbG9nV2luZG93VGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9JbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfTGFyZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9MYXJnZV9JbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4OTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfTWVkaXVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfTWVkaXVtX0ludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9TbWFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1NtYWxsX0ludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9UaGVtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1RoZW1lX0RpYWxvZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9CdXR0b24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9XaWRnZXRfRHJvcERvd25IaW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfV2lkZ2V0X0Ryb3BEb3duSXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9FZGl0VGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9JY29uTWVudV9JdGVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfV2lkZ2V0X1RhYldpZGdldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9UZXh0VmlldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9UZXh0Vmlld19Qb3B1cE1lbnUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9XaWRnZXRfVGV4dFZpZXdfU3Bpbm5lckl0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9XaW5kb3dUaXRsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfQmxhY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzgzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9CbGFja19Ob1RpdGxlQmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfQmxhY2tfTm9UaXRsZUJhcl9GdWxsc2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfRGlhbG9nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfSW5wdXRNZXRob2QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9MaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX0xpZ2h0X05vVGl0bGVCYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzgzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9MaWdodF9Ob1RpdGxlQmFyX0Z1bGxzY3JlZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzgzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9MaWdodF9QYW5lbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX0xpZ2h0X1dhbGxwYXBlclNldHRpbmdzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfTm9EaXNwbGF5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfTm9UaXRsZUJhciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX05vVGl0bGVCYXJfRnVsbHNjcmVlbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX1BhbmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfVHJhbnNsdWNlbnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzgzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9UcmFuc2x1Y2VudF9Ob1RpdGxlQmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfVHJhbnNsdWNlbnRfTm9UaXRsZUJhcl9GdWxsc2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfV2FsbHBhcGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfV2FsbHBhcGVyU2V0dGluZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9XYWxscGFwZXJfTm9UaXRsZUJhciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX1dhbGxwYXBlcl9Ob1RpdGxlQmFyX0Z1bGxzY3JlZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfQWJzTGlzdFZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfQnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0J1dHRvbl9JbnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9CdXR0b25fU21hbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfQnV0dG9uX1RvZ2dsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Db21wb3VuZEJ1dHRvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Db21wb3VuZEJ1dHRvbl9DaGVja0JveCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Db21wb3VuZEJ1dHRvbl9SYWRpb0J1dHRvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Db21wb3VuZEJ1dHRvbl9TdGFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0Ryb3BEb3duSXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Ecm9wRG93bkl0ZW1fU3Bpbm5lciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9FZGl0VGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9FeHBhbmRhYmxlTGlzdFZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfR2FsbGVyeSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9HcmlkVmlldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9JbWFnZUJ1dHRvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9JbWFnZVdlbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfS2V5Ym9hcmRWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0xpc3RWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0xpc3RWaWV3X0Ryb3BEb3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0xpc3RWaWV3X01lbnUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfTGlzdFZpZXdfV2hpdGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUG9wdXBXaW5kb3ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUHJvZ3Jlc3NCYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUHJvZ3Jlc3NCYXJfSG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Qcm9ncmVzc0Jhcl9JbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1Byb2dyZXNzQmFyX0xhcmdlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1Byb2dyZXNzQmFyX0xhcmdlX0ludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUHJvZ3Jlc3NCYXJfU21hbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUHJvZ3Jlc3NCYXJfU21hbGxfSW52ZXJzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9SYXRpbmdCYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfU2Nyb2xsVmlldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9TZWVrQmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1NwaW5uZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfVGFiV2lkZ2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1RleHRWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1RleHRWaWV3X1BvcHVwTWVudSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9UZXh0Vmlld19TcGlubmVySXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9XZWJWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIueG1sIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi54bWwiCisgdHlwZT0iYW5kcm9pZC5SLnhtbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuYWNjZXNzaWJpbGl0eXNlcnZpY2UiCis+Cis8Y2xhc3MgbmFtZT0iQWNjZXNzaWJpbGl0eVNlcnZpY2UiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuU2VydmljZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzaWJpbGl0eVNlcnZpY2UiCisgdHlwZT0iYW5kcm9pZC5hY2Nlc3NpYmlsaXR5c2VydmljZS5BY2Nlc3NpYmlsaXR5U2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkFjY2Vzc2liaWxpdHlFdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkJpbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSW50ZXJydXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VydmljZUNvbm5lY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VydmljZUluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuYWNjZXNzaWJpbGl0eXNlcnZpY2UuQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0VSVklDRV9JTlRFUkZBQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5hY2Nlc3NpYmlsaXR5c2VydmljZS5BY2Nlc3NpYmlsaXR5U2VydmljZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvIgorIHR5cGU9ImFuZHJvaWQuYWNjZXNzaWJpbGl0eXNlcnZpY2UuQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWd6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFRURCQUNLX0FVRElCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFRURCQUNLX0dFTkVSSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUVEQkFDS19IQVBUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFRURCQUNLX1NQT0tFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVFREJBQ0tfVklTVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJldmVudFR5cGVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZlZWRiYWNrVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJub3RpZmljYXRpb25UaW1lb3V0IgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWNrYWdlTmFtZXMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5hY2NvdW50cyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdEFjY291bnRBdXRoZW50aWNhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0QWNjb3VudEF1dGhlbnRpY2F0b3IiCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BYnN0cmFjdEFjY291bnRBdXRoZW50aWNhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRBY2NvdW50IgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudEF1dGhlbnRpY2F0b3JSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudFR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUb2tlblR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVpcmVkRmVhdHVyZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5OZXR3b3JrRXJyb3JFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29uZmlybUNyZWRlbnRpYWxzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudEF1dGhlbnRpY2F0b3JSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRpb25zIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTmV0d29ya0Vycm9yRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZGl0UHJvcGVydGllcyIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRBdXRoZW50aWNhdG9yUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjY291bnRSZW1vdmFsQWxsb3dlZCIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvclJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5OZXR3b3JrRXJyb3JFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXV0aFRva2VuIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudEF1dGhlbnRpY2F0b3JSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoVG9rZW5UeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRpb25zIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTmV0d29ya0Vycm9yRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRoVG9rZW5MYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJQmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRmVhdHVyZXMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvclJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5OZXR3b3JrRXJyb3JFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQ3JlZGVudGlhbHMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvclJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUb2tlblR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOZXR3b3JrRXJyb3JFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuTmV0d29ya0Vycm9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjY291bnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NvdW50IgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY291bnQiCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idHlwZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWNjb3VudEF1dGhlbnRpY2F0b3JBY3Rpdml0eSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY291bnRBdXRoZW50aWNhdG9yQWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvckFjdGl2aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InNldEFjY291bnRBdXRoZW50aWNhdG9yUmVzdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjY291bnRBdXRoZW50aWNhdG9yUmVzcG9uc2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NvdW50QXV0aGVudGljYXRvclJlc3BvbnNlIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudEF1dGhlbnRpY2F0b3JSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvckNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3JNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVxdWVzdENvbnRpbnVlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjY291bnRNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkQWNjb3VudCIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWlyZWRGZWF0dXJlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRBY2NvdW50T3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJDYWxsYmFjayZsdDthbmRyb2lkLm9zLkJ1bmRsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBY2NvdW50RXhwbGljaXRseSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPbkFjY291bnRzVXBkYXRlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT25BY2NvdW50c1VwZGF0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZUltbWVkaWF0ZWx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJsb2NraW5nR2V0QXV0aFRva2VuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoVG9rZW5UeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZnlBdXRoRmFpbHVyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYXNzd29yZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25maXJtQ3JlZGVudGlhbHMiCisgcmV0dXJuPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyRnV0dXJlJmx0O2FuZHJvaWQub3MuQnVuZGxlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRpb25zIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckNhbGxiYWNrJmx0O2FuZHJvaWQub3MuQnVuZGxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVkaXRQcm9wZXJ0aWVzIgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckZ1dHVyZSZsdDthbmRyb2lkLm9zLkJ1bmRsZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY2NvdW50cyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjY291bnRzQnlUeXBlIgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWNjb3VudHNCeVR5cGVBbmRGZWF0dXJlcyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5hY2NvdW50cy5BY2NvdW50W10mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckNhbGxiYWNrJmx0O2FuZHJvaWQuYWNjb3VudHMuQWNjb3VudFtdJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhUb2tlbiIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUb2tlblR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXV0aFRva2VuIgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckZ1dHVyZSZsdDthbmRyb2lkLm9zLkJ1bmRsZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm90aWZ5QXV0aEZhaWx1cmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXV0aFRva2VuQnlGZWF0dXJlcyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRBY2NvdW50T3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdldEF1dGhUb2tlbk9wdGlvbnMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckNhbGxiYWNrJmx0O2FuZHJvaWQub3MuQnVuZGxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhlbnRpY2F0b3JUeXBlcyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQXV0aGVudGljYXRvckRlc2NyaXB0aW9uW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFzc3dvcmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlckRhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNGZWF0dXJlcyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7amF2YS5sYW5nLkJvb2xlYW4mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7amF2YS5sYW5nLkJvb2xlYW4mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZUF1dGhUb2tlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoVG9rZW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla0F1dGhUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBY2NvdW50IgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckZ1dHVyZSZsdDtqYXZhLmxhbmcuQm9vbGVhbiZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJDYWxsYmFjayZsdDtqYXZhLmxhbmcuQm9vbGVhbiZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVPbkFjY291bnRzVXBkYXRlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT25BY2NvdW50c1VwZGF0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1dGhUb2tlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VyRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDcmVkZW50aWFscyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUb2tlblR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVVUSEVOVElDQVRPUl9JTlRFTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVVRIRU5USUNBVE9SX0FUVFJJQlVURVNfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50LWF1dGhlbnRpY2F0b3ImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVUSEVOVElDQVRPUl9NRVRBX0RBVEFfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFjY291bnRzLkFjY291bnRBdXRoZW50aWNhdG9yJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0NPREVfQkFEX0FSR1VNRU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09ERV9CQURfUkVRVUVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09ERV9DQU5DRUxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09ERV9JTlZBTElEX1JFU1BPTlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9DT0RFX05FVFdPUktfRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0NPREVfUkVNT1RFX0VYQ0VQVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09ERV9VTlNVUFBPUlRFRF9PUEVSQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BQ0NPVU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlfQUNDT1VOVF9BVVRIRU5USUNBVE9SX1JFU1BPTlNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnRBdXRoZW50aWNhdG9yUmVzcG9uc2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX0FDQ09VTlRfTUFOQUdFUl9SRVNQT05TRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50TWFuYWdlclJlc3BvbnNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BQ0NPVU5UX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0aEFjY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX0FDQ09VTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50VHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlfQVVUSEVOVElDQVRPUl9UWVBFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdXRoZW50aWNhdG9yX3R5cGVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BVVRIVE9LRU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0aHRva2VuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BVVRIX0ZBSUxFRF9NRVNTQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2F1dGhGYWlsZWRNZXNzYWdlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BVVRIX1RPS0VOX0xBQkVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2F1dGhUb2tlbkxhYmVsS2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9CT09MRUFOX1JFU1VMVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtib29sZWFuUmVzdWx0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9FUlJPUl9DT0RFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Vycm9yQ29kZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlfRVJST1JfTUVTU0FHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlcnJvck1lc3NhZ2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX0lOVEVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbnRlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX1BBU1NXT1JEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bhc3N3b3JkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9VU0VSREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1c2VyZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0dJTl9BQ0NPVU5UU19DSEFOR0VEX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFjY291bnRzLkxPR0lOX0FDQ09VTlRTX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBY2NvdW50TWFuYWdlckNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdXR1cmUiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7ViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJBY2NvdW50TWFuYWdlckZ1dHVyZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF5SW50ZXJydXB0SWZSdW5uaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3VsdCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzdWx0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDYW5jZWxsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBY2NvdW50c0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjb3VudHNFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50c0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY291bnRzRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NvdW50c0V4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY291bnRzRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF1dGhlbnRpY2F0b3JEZXNjcmlwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhlbnRpY2F0b3JEZXNjcmlwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkF1dGhlbnRpY2F0b3JEZXNjcmlwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzbWFsbEljb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3S2V5IgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRGVzY3JpcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjY291bnRQcmVmZXJlbmNlc0lkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNvbklkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFiZWxJZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhY2thZ2VOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNtYWxsSWNvbklkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idHlwZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRzRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkF1dGhlbnRpY2F0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoZW50aWNhdG9yRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQXV0aGVudGljYXRvckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhlbnRpY2F0b3JFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhlbnRpY2F0b3JFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZXR3b3JrRXJyb3JFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50c0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOZXR3b3JrRXJyb3JFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5OZXR3b3JrRXJyb3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJPbkFjY291bnRzVXBkYXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkFjY291bnRzVXBkYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudHMiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRzRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5PcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5hcHAiCis+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LkNvbnRleHRUaGVtZVdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnRDYWxsYmFja3MiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LktleUV2ZW50LkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlci5GYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ3JlYXRlQ29udGV4dE1lbnVMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuV2luZG93LkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eSIKKyB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlT3B0aW9uc01lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVBlbmRpbmdSZXN1bHQiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc21pc3NEaWFsb2ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hLZXlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hQb3B1bGF0ZUFjY2Vzc2liaWxpdHlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hUb3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXYiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXYiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kVmlld0J5SWQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaEFjdGl2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2hBY3Rpdml0eUZyb21DaGlsZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2hGcm9tQ2hpbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxpbmdBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxpbmdQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFuZ2luZ0NvbmZpZ3VyYXRpb25zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudE5hbWUiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50Rm9jdXMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZUNvdW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdE5vbkNvbmZpZ3VyYXRpb25JbnN0YW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0SW5mbGF0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxDbGFzc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1lbnVJbmZsYXRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SW5mbGF0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJlbmNlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RlZE9yaWVudGF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhc2tJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZUNvbG9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9sdW1lQ29udHJvbFN0cmVhbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvdyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2luZG93TWFuYWdlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1dpbmRvd0ZvY3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NoaWxkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmluaXNoaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Rhc2tSb290IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYW5hZ2VkUXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ydE9yZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUYXNrVG9CYWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9uUm9vdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFjdGl2aXR5UmVzdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXR0YWNoZWRUb1dpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CYWNrUHJlc3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DaGlsZFRpdGxlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkQWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q29uZmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db250ZW50Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db250ZXh0SXRlbVNlbGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ29udGV4dE1lbnVDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVDb250ZXh0TWVudSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5Db250ZXh0TWVudSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnVJbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUuQ29udGV4dE1lbnVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlRGVzY3JpcHRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlRGlhbG9nIgorIHJldHVybj0iYW5kcm9pZC5hcHAuRGlhbG9nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVEaWFsb2ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlT3B0aW9uc01lbnUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVBhbmVsTWVudSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVBhbmVsVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVRodW1ibmFpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dEJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRGV0YWNoZWRGcm9tV2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleURvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlMb25nUHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlNdWx0aXBsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVVwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG93TWVtb3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lbnVJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWVudU9wZW5lZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk5ld0ludGVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk9wdGlvbnNJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25PcHRpb25zTWVudUNsb3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFuZWxDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QYXVzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Qb3N0Q3JlYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZWRJbnN0YW5jZVN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblBvc3RSZXN1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJlcGFyZURpYWxvZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmFwcC5EaWFsb2ciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlRGlhbG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmFwcC5EaWFsb2ciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJlcGFyZU9wdGlvbnNNZW51IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlUGFuZWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVzdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmV0YWluTm9uQ29uZmlndXJhdGlvbkluc3RhbmNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNhdmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0U3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VhcmNoUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGl0bGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVzZXJJbnRlcmFjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Vc2VyTGVhdmVIaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbldpbmRvd0F0dHJpYnV0ZXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25XaW5kb3dGb2N1c0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYXNGb2N1cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3B0aW9uc01lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im92ZXJyaWRlUGVuZGluZ1RyYW5zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRlckFuaW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhpdEFuaW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckZvckNvbnRleHRNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlRGlhbG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RXaW5kb3dGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5PblVpVGhyZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dFJlc0lEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRLZXlNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZURyYXdhYmxlQWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmVEcmF3YWJsZVJlc291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGVVcmkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdJbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGVyc2lzdGVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUGVyc2lzdGVudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9ncmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV0ZXJtaW5hdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlVmlzaWJpbGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlzaWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9ncmVzc0JhclZpc2liaWxpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2libGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVxdWVzdGVkT3JpZW50YXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0ZWRPcmllbnRhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc3VsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc3VsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY29uZGFyeVByb2dyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmRhcnlQcm9ncmVzcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGVDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRDb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpc2libGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZvbHVtZUNvbnRyb2xTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93RGlhbG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dEaWFsb2ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWN0aXZpdHlGb3JSZXN1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRBY3Rpdml0eUZyb21DaGlsZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWN0aXZpdHlJZk5lZWRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEludGVudFNlbmRlckZvclJlc3VsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsbEluSW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnc01hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3NWYWx1ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXh0cmFGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW50ZW50U2VuZGVyRnJvbUNoaWxkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxJbkludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3NNYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzVmFsdWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydE1hbmFnaW5nQ3Vyc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnROZXh0TWF0Y2hpbmdBY3Rpdml0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxRdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0SW5pdGlhbFF1ZXJ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBTZWFyY2hEYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2xvYmFsU2VhcmNoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BNYW5hZ2luZ0N1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2VLZXlFdmVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJpZ2dlclNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBTZWFyY2hEYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyRm9yQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfS0VZU19ESUFMRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfS0VZU19ESVNBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX0tFWVNfU0VBUkNIX0dMT0JBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9LRVlTX1NFQVJDSF9MT0NBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9LRVlTX1NIT1JUQ1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfQ0FOQ0VMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVF9GSVJTVF9VU0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHlHcm91cCIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5R3JvdXAiCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlHcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5R3JvdXAiCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlHcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpbmdsZUFjdGl2aXR5TW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQWN0aXZpdHlNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5hcHAuTG9jYWxBY3Rpdml0eU1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBY3Rpdml0eU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXREZXZpY2VDb25maWd1cmF0aW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZW1vcnlDbGFzcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZW1vcnlJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0SW5mbyIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLk1lbW9yeUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvY2Vzc01lbW9yeUluZm8iCisgcmV0dXJuPSJhbmRyb2lkLm9zLkRlYnVnLk1lbW9yeUluZm9bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvY2Vzc2VzSW5FcnJvclN0YXRlIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlByb2Nlc3NFcnJvclN0YXRlSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVjZW50VGFza3MiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXIuUmVjZW50VGFza0luZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhOdW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5uaW5nQXBwUHJvY2Vzc2VzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVubmluZ1NlcnZpY2VDb250cm9sUGFuZWwiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5uaW5nU2VydmljZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXIuUnVubmluZ1NlcnZpY2VJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4TnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNlY3VyaXR5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVubmluZ1Rhc2tzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdUYXNrSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heE51bSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVXNlckFNb25rZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2lsbEJhY2tncm91bmRQcm9jZXNzZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0YXJ0UGFja2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJSRUNFTlRfV0lUSF9FWENMVURFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5NZW1vcnlJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eU1hbmFnZXIuTWVtb3J5SW5mbyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXIuTWVtb3J5SW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF2YWlsTWVtIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb3dNZW1vcnkiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRocmVzaG9sZCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5Qcm9jZXNzRXJyb3JTdGF0ZUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5Qcm9jZXNzRXJyb3JTdGF0ZUluZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlByb2Nlc3NFcnJvclN0YXRlSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkFTSEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PVF9SRVNQT05ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29uZGl0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNyYXNoRGF0YSIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb25nTXNnIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwaWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2Vzc05hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNob3J0TXNnIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGFja1RyYWNlIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVpZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHlNYW5hZ2VyLlJlY2VudFRhc2tJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eU1hbmFnZXIuUmVjZW50VGFza0luZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJlY2VudFRhc2tJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmFzZUludGVudCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3JpZ0FjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBQcm9jZXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icFBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwQXJyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNUE9SVEFOQ0VfQkFDS0dST1VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTVBPUlRBTkNFX0VNUFRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNUE9SVEFOQ0VfRk9SRUdST1VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTVBPUlRBTkNFX1NFUlZJQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1QT1JUQU5DRV9WSVNJQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQVNPTl9QUk9WSURFUl9JTl9VU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQVNPTl9TRVJWSUNFX0lOX1VTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVBU09OX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGFuY2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0YW5jZVJlYXNvbkNvZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0YW5jZVJlYXNvbkNvbXBvbmVudCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGFuY2VSZWFzb25QaWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibHJ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBpZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwa2dMaXN0IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2Nlc3NOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1aWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nU2VydmljZUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nU2VydmljZUluZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdTZXJ2aWNlSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRk9SRUdST1VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19QRVJTSVNURU5UX1BST0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfU1RBUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TWVNURU1fUFJPQ0VTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZlU2luY2UiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsaWVudENvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsaWVudExhYmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsaWVudFBhY2thZ2UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNyYXNoQ291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9yZWdyb3VuZCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFzdEFjdGl2aXR5VGltZSIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGlkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2Nlc3MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc3RhcnRpbmciCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlcnZpY2UiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGFydGVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1aWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nVGFza0luZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nVGFza0luZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdUYXNrSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhc2VBY3Rpdml0eSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlc2NyaXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1BY3Rpdml0aWVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bVJ1bm5pbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGh1bWJuYWlsIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9wQWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxhcm1NYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJpZ2dlckF0VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZXhhY3RSZXBlYXRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyaWdnZXJBdFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVydmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcGVyYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVwZWF0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmlnZ2VyQXRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcnZhbCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZVpvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lWm9uZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVMQVBTRURfUkVBTFRJTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUlZBTF9EQVkiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODY0MDAwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSVkFMX0ZJRlRFRU5fTUlOVVRFUyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5MDAwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSVkFMX0hBTEZfREFZIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzMjAwMDAwTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUlZBTF9IQUxGX0hPVVIiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgwMDAwMEwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URVJWQUxfSE9VUiIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwMDAwTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSVEMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJUQ19XQUtFVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbGVydERpYWxvZyIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsZXJ0RGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsZXJ0RGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsZXJ0RGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCdXR0b24iCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5CdXR0b24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoaWNoQnV0dG9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGlzdFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaEJ1dHRvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaEJ1dHRvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QnV0dG9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QnV0dG9uMyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QnV0dG9uMyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1c3RvbVRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3VzdG9tVGl0bGVWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJY29uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJY29uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnZlcnNlQmFja2dyb3VuZEZvcmNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmNlSW52ZXJzZUJhY2tncm91bmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld1NwYWNpbmdMZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdTcGFjaW5nVG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdTcGFjaW5nUmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld1NwYWNpbmdCb3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbGVydERpYWxvZy5CdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgdHlwZT0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkYXB0ZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FuY2VsYWJsZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3Vyc29yIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbENvbHVtbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXN0b21UaXRsZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1c3RvbVRpdGxlVmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWNvbiIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludmVyc2VCYWNrZ3JvdW5kRm9yY2VkIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlSW52ZXJzZUJhY2tncm91bmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXRlbXMiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJdGVtcyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1zIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXNzYWdlIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVzc2FnZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TXVsdGlDaG9pY2VJdGVtcyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1zSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlZEl0ZW1zIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uTXVsdGlDaG9pY2VDbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE11bHRpQ2hvaWNlSXRlbXMiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtcyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2VkSXRlbXMiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25NdWx0aUNob2ljZUNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TXVsdGlDaG9pY2VJdGVtcyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzQ2hlY2tlZENvbHVtbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWxDb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uTXVsdGlDaG9pY2VDbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZ2F0aXZlQnV0dG9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZWdhdGl2ZUJ1dHRvbiIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXV0cmFsQnV0dG9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXV0cmFsQnV0dG9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ2FuY2VsTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbkNhbmNlbExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25JdGVtU2VsZWN0ZWRMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1TZWxlY3RlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uS2V5TGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbktleUxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uS2V5TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9zaXRpdmVCdXR0b24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aXZlQnV0dG9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpbmdsZUNob2ljZUl0ZW1zIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2VkSXRlbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2luZ2xlQ2hvaWNlSXRlbXMiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2VkSXRlbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbENvbHVtbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpbmdsZUNob2ljZUl0ZW1zIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbXMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2VbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlZEl0ZW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpbmdsZUNob2ljZUl0ZW1zIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrZWRJdGVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaXRsZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaXRsZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxpYXNBY3Rpdml0eSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsaWFzQWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hcHAuQWxpYXNBY3Rpdml0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBcHBsaWNhdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnRDYWxsYmFja3MiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFwcGxpY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQ29uZmlndXJhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDb25maWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Mb3dNZW1vcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGVybWluYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRlUGlja2VyRGlhbG9nIgorIGV4dGVuZHM9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5EYXRlUGlja2VyLk9uRGF0ZUNoYW5nZWRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZVBpY2tlckRpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5EYXRlUGlja2VyRGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxCYWNrIiB0eXBlPSJhbmRyb2lkLmFwcC5EYXRlUGlja2VyRGlhbG9nLk9uRGF0ZVNldExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoT2ZZZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZVBpY2tlckRpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5EYXRlUGlja2VyRGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxCYWNrIiB0eXBlPSJhbmRyb2lkLmFwcC5EYXRlUGlja2VyRGlhbG9nLk9uRGF0ZVNldExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoT2ZZZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQ2xpY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoaWNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EYXRlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkRhdGVQaWNrZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGhPZlllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZNb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEYXRlUGlja2VyRGlhbG9nLk9uRGF0ZVNldExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkRhdGVTZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkRhdGVQaWNrZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGhPZlllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZNb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJEaWFsb2ciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXcuT25DcmVhdGVDb250ZXh0TWVudUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5XaW5kb3cuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLkRpYWxvZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWFsb2ciCisgdHlwZT0iYW5kcm9pZC5hcHAuRGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VPcHRpb25zTWVudSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzbWlzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hLZXlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hQb3B1bGF0ZUFjY2Vzc2liaWxpdHlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hUb3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXYiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXYiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kVmlld0J5SWQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50Rm9jdXMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXRJbmZsYXRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPd25lckFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWb2x1bWVDb250cm9sU3RyZWFtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2luZG93IgorIHJldHVybj0iYW5kcm9pZC52aWV3LldpbmRvdyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Nob3dpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXR0YWNoZWRUb1dpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CYWNrUHJlc3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db250ZW50Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db250ZXh0SXRlbVNlbGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ29udGV4dE1lbnVDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVDb250ZXh0TWVudSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5Db250ZXh0TWVudSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnVJbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUuQ29udGV4dE1lbnVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlT3B0aW9uc01lbnUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVBhbmVsTWVudSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVBhbmVsVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRldGFjaGVkRnJvbVdpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5TG9uZ1ByZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5TXVsdGlwbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlVcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lbnVJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWVudU9wZW5lZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk9wdGlvbnNJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25PcHRpb25zTWVudUNsb3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFuZWxDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlT3B0aW9uc01lbnUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByZXBhcmVQYW5lbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VhcmNoUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25UcmFja2JhbGxFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25XaW5kb3dBdHRyaWJ1dGVzQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uV2luZG93Rm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFzRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkNvbnRleHRNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3Blbk9wdGlvbnNNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckZvckNvbnRleHRNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFdpbmRvd0ZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhbmNlbE1lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDYW5jZWxhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDYW5jZWxlZE9uVG91Y2hPdXRzaWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuY2VsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0UmVzSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzbWlzc01lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGVBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZURyYXdhYmxlUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmVEcmF3YWJsZVVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ2FuY2VsTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNhbmNlbExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uRGlzbWlzc0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25LZXlMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uS2V5TGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25LZXlMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPblNob3dMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uU2hvd0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE93bmVyQWN0aXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaXRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZvbHVtZUNvbnRyb2xTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWtlS2V5RXZlbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2V0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJGb3JDb250ZXh0TWVudSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV4cGFuZGFibGVMaXN0QWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0Vmlldy5PbkNoaWxkQ2xpY2tMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5FeHBhbmRhYmxlTGlzdFZpZXcuT25Hcm91cENvbGxhcHNlTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3Lk9uR3JvdXBFeHBhbmRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlldy5PbkNyZWF0ZUNvbnRleHRNZW51TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4cGFuZGFibGVMaXN0QWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hcHAuRXhwYW5kYWJsZUxpc3RBY3Rpdml0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5FeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXhwYW5kYWJsZUxpc3RWaWV3IgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkUG9zaXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2hpbGRDbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR3JvdXBDb2xsYXBzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdyb3VwRXhwYW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExpc3RBZGFwdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RBZGFwdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGVkQ2hpbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvdWxkRXhwYW5kR3JvdXAiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VsZWN0ZWRHcm91cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnN0cnVtZW50YXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkTW9uaXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbml0b3IiIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkTW9uaXRvciIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsb2NrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZE1vbml0b3IiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uLkFjdGl2aXR5UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibG9jayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNpY2xlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPbkRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbEFjdGl2aXR5T25OZXdJbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblBhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbGxBY3Rpdml0eU9uUG9zdENyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNpY2xlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblJlc3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbEFjdGl2aXR5T25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZWRJbnN0YW5jZVN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblJlc3VtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblNhdmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbEFjdGl2aXR5T25TdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbEFjdGl2aXR5T25Vc2VyTGVhdmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQXBwbGljYXRpb25PbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcCIgdHlwZT0iYW5kcm9pZC5hcHAuQXBwbGljYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tNb25pdG9ySGl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9uaXRvciIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uLkFjdGl2aXR5TW9uaXRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluSGl0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFBlcmZvcm1hbmNlU25hcHNob3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0cyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb2NDb3VudHMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCaW5kZXJDb3VudHMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wb25lbnROYW1lIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldENvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZva2VDb250ZXh0TWVudUFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldEFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imludm9rZU1lbnVBY3Rpb25TeW5jIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0QWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcm9maWxpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0FjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBsaWNhdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuQXBwbGljYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXN0Tm9uQ29uZmlndXJhdGlvbkluc3RhbmNlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3QWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2wiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3QXBwbGljYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2wiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnN0YW50aWF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdBcHBsaWNhdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJndW1lbnRzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRXhjZXB0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU1vbml0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb25pdG9yIiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bk9uTWFpblN5bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJydW5uZXIiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQ2hhcmFjdGVyU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kS2V5RG93blVwU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRLZXlTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUG9pbnRlclN5bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTdHJpbmdTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kVHJhY2tiYWxsRXZlbnRTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRvbWF0aWNQZXJmb3JtYW5jZVNuYXBzaG90cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5Ub3VjaE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblRvdWNoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEFjdGl2aXR5U3luYyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRBbGxvY0NvdW50aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFBlcmZvcm1hbmNlU25hcHNob3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0UHJvZmlsaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wQWxsb2NDb3VudGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFByb2ZpbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FpdEZvcklkbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNpcGllbnQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWl0Rm9ySWRsZVN5bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndhaXRGb3JNb25pdG9yIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbml0b3IiIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FpdEZvck1vbml0b3JXaXRoVGltZW91dCIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb25pdG9yIiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lT3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX0tFWV9JREVOVElGSUVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9LRVlfU1RSRUFNUkVTVUxUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0cmVhbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5zdHJ1bWVudGF0aW9uLkFjdGl2aXR5TW9uaXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIgorIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsb2NrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIgorIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uLkFjdGl2aXR5UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibG9jayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdEFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHQiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Jsb2NraW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndhaXRGb3JBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FpdEZvckFjdGl2aXR5V2l0aFRpbWVvdXQiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lT3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikluc3RydW1lbnRhdGlvbi5BY3Rpdml0eVJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvbi5BY3Rpdml0eVJlc3VsdCIKKyB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdERhdGEiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3VsdERhdGEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVudFNlcnZpY2UiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuU2VydmljZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50U2VydmljZSIKKyB0eXBlPSJhbmRyb2lkLmFwcC5JbnRlbnRTZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQmluZCIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSGFuZGxlSW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZW50UmVkZWxpdmVyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5Z3VhcmRNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZXhpdEtleWd1YXJkU2VjdXJlbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5hcHAuS2V5Z3VhcmRNYW5hZ2VyLk9uS2V5Z3VhcmRFeGl0UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdLZXlndWFyZExvY2siCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5LZXlndWFyZE1hbmFnZXIuS2V5Z3VhcmRMb2NrIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5Z3VhcmRNYW5hZ2VyLktleWd1YXJkTG9jayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGVLZXlndWFyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVlbmFibGVLZXlndWFyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IktleWd1YXJkTWFuYWdlci5PbktleWd1YXJkRXhpdFJlc3VsdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25LZXlndWFyZEV4aXRSZXN1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1Y2Nlc3MiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkxhdW5jaGVyQWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuTGlzdEFjdGl2aXR5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYXVuY2hlckFjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQuYXBwLkxhdW5jaGVyQWN0aXZpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VGFyZ2V0SW50ZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlbnRGb3JQb3NpdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlbUZvclBvc2l0aW9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuTGF1bmNoZXJBY3Rpdml0eS5MaXN0SXRlbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlTGlzdEl0ZW1zIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuTGF1bmNoZXJBY3Rpdml0eS5MaXN0SXRlbSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25RdWVyeVBhY2thZ2VNYW5hZ2VyIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnlJbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGF1bmNoZXJBY3Rpdml0eS5JY29uUmVzaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF1bmNoZXJBY3Rpdml0eS5JY29uUmVzaXplciIKKyB0eXBlPSJhbmRyb2lkLmFwcC5MYXVuY2hlckFjdGl2aXR5Lkljb25SZXNpemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUljb25UaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxhdW5jaGVyQWN0aXZpdHkuTGlzdEl0ZW0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF1bmNoZXJBY3Rpdml0eS5MaXN0SXRlbSIKKyB0eXBlPSJhbmRyb2lkLmFwcC5MYXVuY2hlckFjdGl2aXR5Lkxpc3RJdGVtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iY2xhc3NOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHRyYXMiCisgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYWJlbCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2FnZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc29sdmVJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaXN0QWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaXN0QWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hcHAuTGlzdEFjdGl2aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExpc3RBZGFwdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGlzdFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWxlY3RlZEl0ZW1JZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRJdGVtUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25MaXN0SXRlbUNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGlzdFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaXN0QWRhcHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkYXB0ZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxBY3Rpdml0eU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2FsQWN0aXZpdHlNYW5hZ2VyIgorIHR5cGU9ImFuZHJvaWQuYXBwLkxvY2FsQWN0aXZpdHlNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2luZ2xlTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3lBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaW5pc2giIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hDcmVhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hEZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmluaXNoaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoUGF1c2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaW5pc2hpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hSZXN1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoU3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudEFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudElkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxBY3Rpdml0aWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuV2luZG93IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vdGlmaWNhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vdGlmaWNhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RpZmljYXRpb24iCisgdHlwZT0iYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aWNrZXJUZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RpZmljYXRpb24iCisgdHlwZT0iYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGF0ZXN0RXZlbnRJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRUaXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudFRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9MSUdIVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfVklCUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BVVRPX0NBTkNFTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRk9SRUdST1VORF9TRVJWSUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19JTlNJU1RFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfTk9fQ0xFQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX09OR09JTkdfRVZFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfT05MWV9BTEVSVF9PTkNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NIT1dfTElHSFRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVFJFQU1fREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1ZGlvU3RyZWFtVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb250ZW50SW50ZW50IgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb250ZW50VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlbGV0ZUludGVudCIKKyB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uTGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGVkQVJHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWRPZmZNUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWRPbk1TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWJlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzb3VuZCIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aWNrZXJUZXh0IgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aWJyYXRlIgorIHR5cGU9ImxvbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndoZW4iCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb3RpZmljYXRpb25NYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsQWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZmljYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vdGlmaWNhdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBlbmRpbmdJbnRlbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnJvYWRjYXN0IgorIHJldHVybj0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudFNlbmRlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VydmljZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkUGVuZGluZ0ludGVudE9yTnVsbEZyb21QYXJjZWwiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUGVuZGluZ0ludGVudC5DYW5jZWxlZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudC5DYW5jZWxlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib25GaW5pc2hlZCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudC5PbkZpbmlzaGVkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib25GaW5pc2hlZCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudC5PbkZpbmlzaGVkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVQZW5kaW5nSW50ZW50T3JOdWxsVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbmRlciIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19DQU5DRUxfQ1VSUkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2ODQzNTQ1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX05PX0NSRUFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNjg3MDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX09ORV9TSE9UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3Mzc0MTgyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1VQREFURV9DVVJSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTM0MjE3NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudXRpbC5BbmRyb2lkRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQZW5kaW5nSW50ZW50Lk9uRmluaXNoZWQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2VuZEZpbmlzaGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZW5kaW5nSW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0RGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0RXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJvZ3Jlc3NEaWFsb2ciCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9ncmVzc0RpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5Qcm9ncmVzc0RpYWxvZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9ncmVzc0RpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5Qcm9ncmVzc0RpYWxvZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb2dyZXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlY29uZGFyeVByb2dyZXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlbWVudFByb2dyZXNzQnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jcmVtZW50U2Vjb25kYXJ5UHJvZ3Jlc3NCeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luZGV0ZXJtaW5hdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV0ZXJtaW5hdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRldGVybWluYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV0ZXJtaW5hdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvZ3Jlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzU3R5bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY29uZGFyeVByb2dyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kYXJ5UHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0iYW5kcm9pZC5hcHAuUHJvZ3Jlc3NEaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5Qcm9ncmVzc0RpYWxvZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV0ZXJtaW5hdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvdyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLlByb2dyZXNzRGlhbG9nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXRlcm1pbmF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuY2VsYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0iYW5kcm9pZC5hcHAuUHJvZ3Jlc3NEaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRldGVybWluYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5jZWxhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5jZWxMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNhbmNlbExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU1RZTEVfSE9SSVpPTlRBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RZTEVfU1BJTk5FUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlYXJjaE1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNhbmNlbExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRTZWFyY2hhYmxlSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLlNlYXJjaGFibGVJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21wb25lbnROYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWFyY2hhYmxlc0luR2xvYmFsU2VhcmNoIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuU2VhcmNoYWJsZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DYW5jZWxMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmFwcC5TZWFyY2hNYW5hZ2VyLk9uQ2FuY2VsTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25EaXNtaXNzTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5hcHAuU2VhcmNoTWFuYWdlci5PbkRpc21pc3NMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxRdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0SW5pdGlhbFF1ZXJ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXVuY2hBY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFNlYXJjaERhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnbG9iYWxTZWFyY2giIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJpZ2dlclNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXVuY2hBY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFNlYXJjaERhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0tFWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY3Rpb25fa2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NU0ciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWN0aW9uX21zZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUFBfREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthcHBfZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVJTT1JfRVhUUkFfS0VZX0lOX1BST0dSRVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2luX3Byb2dyZXNzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RBVEFfS0VZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ludGVudF9leHRyYV9kYXRhX2tleSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TRUxFQ1RfUVVFUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2VsZWN0X3F1ZXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVOVF9BQ1RJT05fR0xPQkFMX1NFQVJDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNlYXJjaC5hY3Rpb24uR0xPQkFMX1NFQVJDSCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFTlRfQUNUSU9OX1NFQVJDSEFCTEVTX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZWFyY2guYWN0aW9uLlNFQVJDSEFCTEVTX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URU5UX0FDVElPTl9TRUFSQ0hfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZWFyY2guYWN0aW9uLlNFQVJDSF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFTlRfQUNUSU9OX1NFQVJDSF9TRVRUSU5HU19DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2VhcmNoLmFjdGlvbi5TRVRUSU5HU19DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVOVF9BQ1RJT05fV0VCX1NFQVJDSF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNlYXJjaC5hY3Rpb24uV0VCX1NFQVJDSF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRU5VX0tFWSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVOVV9LRVlDT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVFUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cXVlcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPUlRDVVRfTUlNRV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3ZuZC5hbmRyb2lkLnNlYXJjaC5zdWdnZXN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX0ZPUk1BVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0X2Zvcm1hdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUdHRVNUX0NPTFVNTl9JQ09OXzEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VnZ2VzdF9pY29uXzEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9DT0xVTU5fSUNPTl8yIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3RfaWNvbl8yJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX0lOVEVOVF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VnZ2VzdF9pbnRlbnRfYWN0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX0lOVEVOVF9EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3RfaW50ZW50X2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9DT0xVTU5fSU5URU5UX0RBVEFfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VnZ2VzdF9pbnRlbnRfZGF0YV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUdHRVNUX0NPTFVNTl9JTlRFTlRfRVhUUkFfREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0X2ludGVudF9leHRyYV9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX1FVRVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3RfaW50ZW50X3F1ZXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX1NIT1JUQ1VUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3Rfc2hvcnRjdXRfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9DT0xVTU5fU1BJTk5FUl9XSElMRV9SRUZSRVNISU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3Rfc3Bpbm5lcl93aGlsZV9yZWZyZXNoaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX1RFWFRfMSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0X3RleHRfMSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUdHRVNUX0NPTFVNTl9URVhUXzIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VnZ2VzdF90ZXh0XzImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9DT0xVTU5fVEVYVF8yX1VSTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0X3RleHRfMl91cmwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9NSU1FX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci92bmQuYW5kcm9pZC5zZWFyY2guc3VnZ2VzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUdHRVNUX05FVkVSX01BS0VfU0hPUlRDVVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Xy0xJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfUEFSQU1FVEVSX0xJTUlUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xpbWl0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfVVJJX1BBVEhfUVVFUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2VhcmNoX3N1Z2dlc3RfcXVlcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9VUklfUEFUSF9TSE9SVENVVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZWFyY2hfc3VnZ2VzdF9zaG9ydGN1dCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VSX1FVRVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VzZXJfcXVlcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTZWFyY2hNYW5hZ2VyLk9uQ2FuY2VsTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2VhcmNoTWFuYWdlci5PbkRpc21pc3NMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25EaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTZWFyY2hhYmxlSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImF1dG9VcmxEZXRlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGludElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEltZU9wdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlYXJjaEFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2V0dGluZ3NEZXNjcmlwdGlvbklkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RBdXRob3JpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RJbnRlbnRBY3Rpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RJbnRlbnREYXRhIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWdnZXN0UGFja2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VnZ2VzdFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RTZWxlY3Rpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RUaHJlc2hvbGQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9pY2VMYW5ndWFnZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZvaWNlTGFuZ3VhZ2VNb2RlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9pY2VNYXhSZXN1bHRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZvaWNlUHJvbXB0VGV4dElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZvaWNlU2VhcmNoRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9pY2VTZWFyY2hMYXVuY2hSZWNvZ25pemVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWb2ljZVNlYXJjaExhdW5jaFdlYlNlYXJjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlBZnRlclplcm9SZXN1bHRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG91bGRJbmNsdWRlSW5HbG9iYWxTZWFyY2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZFJld3JpdGVRdWVyeUZyb21EYXRhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG91bGRSZXdyaXRlUXVlcnlGcm9tVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VydmljZSIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudENhbGxiYWNrcyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmljZSIKKyB0eXBlPSJhbmRyb2lkLmFwcC5TZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVyIiB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQmluZCIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25maWd1cmF0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG93TWVtb3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0Q29tbWFuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25VbmJpbmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9yZWdyb3VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc0ZvcmVncm91bmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRGb3JlZ3JvdW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZmljYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wRm9yZWdyb3VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVtb3ZlTm90aWZpY2F0aW9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BTZWxmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BTZWxmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFNlbGZSZXN1bHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNUQVJUX0NPTlRJTlVBVElPTl9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBUlRfRkxBR19SRURFTElWRVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9GTEFHX1JFVFJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9OT1RfU1RJQ0tZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9SRURFTElWRVJfSU5URU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9TVElDS1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVJUX1NUSUNLWV9DT01QQVRJQklMSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGFiQWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWN0aXZpdHlHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYkFjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQuYXBwLlRhYkFjdGl2aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFRhYkhvc3QiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5UYWJIb3N0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYldpZGdldCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYldpZGdldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0VGFiIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRUYWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRpbWVQaWNrZXJEaWFsb2ciCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LlRpbWVQaWNrZXIuT25UaW1lQ2hhbmdlZExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lUGlja2VyRGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLlRpbWVQaWNrZXJEaWFsb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbEJhY2siIHR5cGU9ImFuZHJvaWQuYXBwLlRpbWVQaWNrZXJEaWFsb2cuT25UaW1lU2V0TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJPZkRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMyNEhvdXJWaWV3IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lUGlja2VyRGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLlRpbWVQaWNrZXJEaWFsb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbEJhY2siIHR5cGU9ImFuZHJvaWQuYXBwLlRpbWVQaWNrZXJEaWFsb2cuT25UaW1lU2V0TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJPZkRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMyNEhvdXJWaWV3IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hpY2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRpbWVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGltZVBpY2tlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG91ck9mRGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3VyT2ZEYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRPZkhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVGltZVBpY2tlckRpYWxvZy5PblRpbWVTZXRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25UaW1lU2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UaW1lUGlja2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3VyT2ZEYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlVpTW9kZU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkaXNhYmxlQ2FyTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlQ2FyTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudE1vZGVUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5pZ2h0TW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROaWdodE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRU5URVJfQ0FSX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0VOVEVSX0RFU0tfTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRVhJVF9DQVJfTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRVhJVF9ERVNLX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTQUJMRV9DQVJfTU9ERV9HT19IT01FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVfQ0FSX01PREVfR09fQ0FSX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfTklHSFRfQVVUTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9OSUdIVF9OTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9OSUdIVF9ZRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXYWxscGFwZXJJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXYWxscGFwZXJJbmZvIgorIHR5cGU9ImFuZHJvaWQuYXBwLldhbGxwYXBlckluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2V0dGluZ3NBY3Rpdml0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEF1dGhvciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkSWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZExhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkVGh1bWJuYWlsIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXYWxscGFwZXJNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhcldhbGxwYXBlck9mZnNldHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3dUb2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRNaW5pbXVtSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRNaW5pbXVtV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZhc3REcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5XYWxscGFwZXJNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbGxwYXBlckluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5XYWxscGFwZXJJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWtEcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla0Zhc3REcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFdhbGxwYXBlckNvbW1hbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3dUb2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYWxscGFwZXJPZmZzZXRTdGVwcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhTdGVwIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieVN0ZXAiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdhbGxwYXBlck9mZnNldHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3dUb2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4T2Zmc2V0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieU9mZnNldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VnZ2VzdERlc2lyZWREaW1lbnNpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluaW11bVdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbmltdW1IZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9MSVZFX1dBTExQQVBFUl9DSE9PU0VSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2VydmljZS53YWxscGFwZXIuTElWRV9XQUxMUEFQRVJfQ0hPT1NFUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01NQU5EX0RST1AiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ob21lLmRyb3AmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NTUFORF9UQVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC53YWxscGFwZXIudGFwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuYXBwLmFkbWluIgorPgorPGNsYXNzIG5hbWU9IkRldmljZUFkbWluSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGV2aWNlQWRtaW5JbmZvIgorIHR5cGU9ImFuZHJvaWQuYXBwLmFkbWluLkRldmljZUFkbWluSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5SW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcG9uZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlY2VpdmVyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFnRm9yUG9saWN5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9saWN5SWRlbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Zpc2libGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlc1BvbGljeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGljeUlkZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VTX1BPTElDWV9GT1JDRV9MT0NLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VTX1BPTElDWV9MSU1JVF9QQVNTV09SRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVNFU19QT0xJQ1lfUkVTRVRfUEFTU1dPUkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRVNfUE9MSUNZX1dBVENIX0xPR0lOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VTX1BPTElDWV9XSVBFX0RBVEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZXZpY2VBZG1pblJlY2VpdmVyIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRldmljZUFkbWluUmVjZWl2ZXIiCisgdHlwZT0iYW5kcm9pZC5hcHAuYWRtaW4uRGV2aWNlQWRtaW5SZWNlaXZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5hcHAuYWRtaW4uRGV2aWNlUG9saWN5TWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2hvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRGlzYWJsZVJlcXVlc3RlZCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNhYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblBhc3N3b3JkQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QYXNzd29yZEZhaWxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QYXNzd29yZFN1Y2NlZWRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZWNlaXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9ERVZJQ0VfQURNSU5fRElTQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5hcHAuYWN0aW9uLkRFVklDRV9BRE1JTl9ESVNBQkxFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREVWSUNFX0FETUlOX0RJU0FCTEVfUkVRVUVTVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5ERVZJQ0VfQURNSU5fRElTQUJMRV9SRVFVRVNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RFVklDRV9BRE1JTl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5ERVZJQ0VfQURNSU5fRU5BQkxFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEFTU1dPUkRfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5hY3Rpb24uQUNUSU9OX1BBU1NXT1JEX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BBU1NXT1JEX0ZBSUxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5hY3Rpb24uQUNUSU9OX1BBU1NXT1JEX0ZBSUxFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEFTU1dPUkRfU1VDQ0VFREVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5BQ1RJT05fUEFTU1dPUkRfU1VDQ0VFREVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVklDRV9BRE1JTl9NRVRBX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5hcHAuZGV2aWNlX2FkbWluJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RJU0FCTEVfV0FSTklORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5leHRyYS5ESVNBQkxFX1dBUk5JTkcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRldmljZVBvbGljeU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBY3RpdmVBZG1pbnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudEZhaWxlZFBhc3N3b3JkQXR0ZW1wdHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bUZhaWxlZFBhc3N3b3Jkc0ZvcldpcGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhpbXVtVGltZVRvTG9jayIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZE1heGltdW1MZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1YWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZE1pbmltdW1MZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZFF1YWxpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FjdGl2ZVBhc3N3b3JkU3VmZmljaWVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBZG1pbkFjdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ja05vdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWN0aXZlQWRtaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0UGFzc3dvcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhpbXVtRmFpbGVkUGFzc3dvcmRzRm9yV2lwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4aW11bVRpbWVUb0xvY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZG1pbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVNcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXNzd29yZE1pbmltdW1MZW5ndGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZG1pbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhc3N3b3JkUXVhbGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpcGVEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BRERfREVWSUNFX0FETUlOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5BRERfREVWSUNFX0FETUlOJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TRVRfTkVXX1BBU1NXT1JEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5TRVRfTkVXX1BBU1NXT1JEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0FERF9FWFBMQU5BVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5leHRyYS5BRERfRVhQTEFOQVRJT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfREVWSUNFX0FETUlOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmV4dHJhLkRFVklDRV9BRE1JTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVNTV09SRF9RVUFMSVRZX0FMUEhBQkVUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjIxNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFTU1dPUkRfUVVBTElUWV9BTFBIQU5VTUVSSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc2ODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFTU1dPUkRfUVVBTElUWV9OVU1FUklDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBU1NXT1JEX1FVQUxJVFlfU09NRVRISU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFTU1dPUkRfUVVBTElUWV9VTlNQRUNJRklFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTRVRfUEFTU1dPUkRfUkVRVUlSRV9FTlRSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5hcHAuYmFja3VwIgorPgorPGNsYXNzIG5hbWU9IkJhY2t1cEFnZW50IgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Db250ZXh0V3JhcHBlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFja3VwQWdlbnQiCisgdHlwZT0iYW5kcm9pZC5hcHAuYmFja3VwLkJhY2t1cEFnZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQmFja3VwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5hcHAuYmFja3VwLkJhY2t1cERhdGFPdXRwdXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc3RvcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBEYXRhSW5wdXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFZlcnNpb25Db2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYWNrdXBBZ2VudEhlbHBlciIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwQWdlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYWNrdXBBZ2VudEhlbHBlciIKKyB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwQWdlbnRIZWxwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGVscGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5UHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWxwZXIiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBIZWxwZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CYWNrdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5hcHAuYmFja3VwLkJhY2t1cERhdGFPdXRwdXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc3RvcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwRGF0YUlucHV0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBWZXJzaW9uQ29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFja3VwRGF0YUlucHV0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YVNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRW50aXR5RGF0YSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTmV4dEhlYWRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXBFbnRpdHlEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFja3VwRGF0YUlucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhY2t1cERhdGFPdXRwdXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUVudGl0eURhdGEiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUVudGl0eUhlYWRlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQmFja3VwSGVscGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUJhY2t1cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkU3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBEYXRhT3V0cHV0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0b3JlRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwRGF0YUlucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTmV3U3RhdGVEZXNjcmlwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkJhY2t1cE1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhY2t1cE1hbmFnZXIiCisgdHlwZT0iYW5kcm9pZC5hcHAuYmFja3VwLkJhY2t1cE1hbmFnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRhdGFDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFJlc3RvcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuUmVzdG9yZU9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVCYWNrdXBIZWxwZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuYmFja3VwLkZpbGVCYWNrdXBIZWxwZXJCYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwSGVscGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlQmFja3VwSGVscGVyIgorIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5GaWxlQmFja3VwSGVscGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nLi4uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUJhY2t1cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwRGF0YU91dHB1dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZUVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBEYXRhSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZUJhY2t1cEhlbHBlckJhc2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0iIgorPgorPG1ldGhvZCBuYW1lPSJ3cml0ZU5ld1N0YXRlRGVzY3JpcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXN0b3JlT2JzZXJ2ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzdG9yZU9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5SZXN0b3JlT2JzZXJ2ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25VcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub3dCZWluZ1Jlc3RvcmVkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbnRQYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVGaW5pc2hlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZVN0YXJ0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtUGFja2FnZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaGFyZWRQcmVmZXJlbmNlc0JhY2t1cEhlbHBlciIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5iYWNrdXAuRmlsZUJhY2t1cEhlbHBlckJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBIZWxwZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNoYXJlZFByZWZlcmVuY2VzQmFja3VwSGVscGVyIgorIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5TaGFyZWRQcmVmZXJlbmNlc0JhY2t1cEhlbHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmR3JvdXBzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nLi4uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUJhY2t1cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwRGF0YU91dHB1dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZUVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBEYXRhSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmFwcHdpZGdldCIKKz4KKzxjbGFzcyBuYW1lPSJBcHBXaWRnZXRIb3N0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcHBXaWRnZXRIb3N0IgorIHR5cGU9ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldEhvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZUFwcFdpZGdldElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVZpZXciCisgcmV0dXJuPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRIb3N0VmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0IiB0eXBlPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlQWxsSG9zdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlQXBwV2lkZ2V0SWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcHBXaWRnZXRJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUhvc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlVmlldyIKKyByZXR1cm49ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldEhvc3RWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0IiB0eXBlPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Qcm92aWRlckNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcHBXaWRnZXRJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBXaWRnZXQiIHR5cGU9ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldFByb3ZpZGVySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydExpc3RlbmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcExpc3RlbmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXBwV2lkZ2V0SG9zdFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcHBXaWRnZXRIb3N0VmlldyIKKyB0eXBlPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRIb3N0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcHBXaWRnZXRIb3N0VmlldyIKKyB0eXBlPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRIb3N0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb25JbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb25PdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFwcFdpZGdldElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcFdpZGdldEluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvclZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcFdpZGdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldFByb3ZpZGVySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVBcHBXaWRnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdGVWaWV3cyIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXBwV2lkZ2V0TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJpbmRBcHBXaWRnZXRJZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBXaWRnZXRJZHMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcFdpZGdldEluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVkUHJvdmlkZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0UHJvdmlkZXJJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldE1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQXBwV2lkZ2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0SWRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld3MiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUFwcFdpZGdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdzIiB0eXBlPSJhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVBcHBXaWRnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdzIiB0eXBlPSJhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BUFBXSURHRVRfQ09ORklHVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwd2lkZ2V0LmFjdGlvbi5BUFBXSURHRVRfQ09ORklHVVJFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BUFBXSURHRVRfREVMRVRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5hY3Rpb24uQVBQV0lER0VUX0RFTEVURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUFdJREdFVF9ESVNBQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5hY3Rpb24uQVBQV0lER0VUX0RJU0FCTEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BUFBXSURHRVRfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5hY3Rpb24uQVBQV0lER0VUX0VOQUJMRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUFdJREdFVF9QSUNLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwd2lkZ2V0LmFjdGlvbi5BUFBXSURHRVRfUElDSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVBQV0lER0VUX1VQREFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5hY3Rpb24uQVBQV0lER0VUX1VQREFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9BUFBXSURHRVRfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXBwV2lkZ2V0SWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQVBQV0lER0VUX0lEUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthcHBXaWRnZXRJZHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ1VTVE9NX0VYVFJBUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjdXN0b21FeHRyYXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ1VTVE9NX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y3VzdG9tSW5mbyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlZBTElEX0FQUFdJREdFVF9JRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9EQVRBX0FQUFdJREdFVF9QUk9WSURFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5wcm92aWRlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXBwV2lkZ2V0UHJvdmlkZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwV2lkZ2V0UHJvdmlkZXIiCisgdHlwZT0iYW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25EZWxldGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNhYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVjZWl2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25VcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0TWFuYWdlciIgdHlwZT0iYW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0TWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0SWRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBcHBXaWRnZXRQcm92aWRlckluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcHBXaWRnZXRQcm92aWRlckluZm8iCisgdHlwZT0iYW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0UHJvdmlkZXJJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwV2lkZ2V0UHJvdmlkZXJJbmZvIgorIHR5cGU9ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldFByb3ZpZGVySW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ3VyZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5pdGlhbExheW91dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYWJlbCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWluSGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1pbldpZHRoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idXBkYXRlUGVyaW9kTWlsbGlzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuYmx1ZXRvb3RoIgorPgorPGNsYXNzIG5hbWU9IkJsdWV0b290aEFkYXB0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbERpc2NvdmVyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tCbHVldG9vdGhBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm9uZGVkRGV2aWNlcyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7YW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoRGV2aWNlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0QWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbW90ZURldmljZSIKKyByZXR1cm49ImFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aERldmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FuTW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Rpc2NvdmVyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3RlblVzaW5nUmZjb21tV2l0aFNlcnZpY2VSZWNvcmQiCisgcmV0dXJuPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhTZXJ2ZXJTb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InV1aWQiIHR5cGU9ImphdmEudXRpbC5VVUlEIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERpc2NvdmVyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRElTQ09WRVJZX0ZJTklTSEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmFkYXB0ZXIuYWN0aW9uLkRJU0NPVkVSWV9GSU5JU0hFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRElTQ09WRVJZX1NUQVJURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5hY3Rpb24uRElTQ09WRVJZX1NUQVJURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0xPQ0FMX05BTUVfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5hZGFwdGVyLmFjdGlvbi5MT0NBTF9OQU1FX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1JFUVVFU1RfRElTQ09WRVJBQkxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmFkYXB0ZXIuYWN0aW9uLlJFUVVFU1RfRElTQ09WRVJBQkxFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9SRVFVRVNUX0VOQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5hZGFwdGVyLmFjdGlvbi5SRVFVRVNUX0VOQUJMRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fU0NBTl9NT0RFX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5hY3Rpb24uU0NBTl9NT0RFX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NUQVRFX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5hY3Rpb24uU1RBVEVfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RJU0NPVkVSQUJMRV9EVVJBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5hZGFwdGVyLmV4dHJhLkRJU0NPVkVSQUJMRV9EVVJBVElPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MT0NBTF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmFkYXB0ZXIuZXh0cmEuTE9DQUxfTkFNRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9QUkVWSU9VU19TQ0FOX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5leHRyYS5QUkVWSU9VU19TQ0FOX01PREUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUFJFVklPVVNfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5leHRyYS5QUkVWSU9VU19TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TQ0FOX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5leHRyYS5TQ0FOX01PREUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5leHRyYS5TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0FOX01PREVfQ09OTkVDVEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0FOX01PREVfQ09OTkVDVEFCTEVfRElTQ09WRVJBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NBTl9NT0RFX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9PRkYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRFX1RVUk5JTkdfT0ZGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfVFVSTklOR19PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCbHVldG9vdGhDbGFzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV2aWNlQ2xhc3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFqb3JEZXZpY2VDbGFzcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTZXJ2aWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmx1ZXRvb3RoQ2xhc3MuRGV2aWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJsdWV0b290aENsYXNzLkRldmljZSIKKyB0eXBlPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhDbGFzcy5EZXZpY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19DQU1DT1JERVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPX1ZJREVPX0NBUl9BVURJTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fSEFORFNGUkVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19IRUFEUEhPTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19ISUZJX0FVRElPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19MT1VEU1BFQUtFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fTUlDUk9QSE9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fUE9SVEFCTEVfQVVESU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPX1ZJREVPX1NFVF9UT1BfQk9YIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19VTkNBVEVHT1JJWkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19WQ1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPX1ZJREVPX1ZJREVPX0NBTUVSQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fVklERU9fQ09ORkVSRU5DSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19WSURFT19ESVNQTEFZX0FORF9MT1VEU1BFQUtFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fVklERU9fR0FNSU5HX1RPWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fVklERU9fTU9OSVRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fV0VBUkFCTEVfSEVBRFNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVJfREVTS1RPUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QVVRFUl9IQU5ESEVMRF9QQ19QREEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVJfTEFQVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBVVEVSX1BBTE1fU0laRV9QQ19QREEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVJfU0VSVkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBVVEVSX1VOQ0FURUdPUklaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVJfV0VBUkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIX0JMT09EX1BSRVNTVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUFMVEhfREFUQV9ESVNQTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUFMVEhfR0xVQ09TRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIX1BVTFNFX09YSU1FVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUFMVEhfUFVMU0VfUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIX1RIRVJNT01FVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUFMVEhfVU5DQVRFR09SSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIX1dFSUdISU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9DRUxMVUxBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9DT1JETEVTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9JU0ROIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FX01PREVNX09SX0dBVEVXQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfU01BUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfVU5DQVRFR09SSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT1lfQ09OVFJPTExFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ZX0RPTExfQUNUSU9OX0ZJR1VSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ZX0dBTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPWV9ST0JPVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ZX1VOQ0FURUdPUklaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPWV9WRUhJQ0xFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUFSQUJMRV9HTEFTU0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUFSQUJMRV9IRUxNRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFQVJBQkxFX0pBQ0tFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VBUkFCTEVfUEFHRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFQVJBQkxFX1VOQ0FURUdPUklaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFQVJBQkxFX1dSSVNUX1dBVENIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmx1ZXRvb3RoQ2xhc3MuRGV2aWNlLk1ham9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJsdWV0b290aENsYXNzLkRldmljZS5NYWpvciIKKyB0eXBlPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhDbGFzcy5EZXZpY2UuTWFqb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUFHSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSVNDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBFUklQSEVSQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5DQVRFR09SSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VBUkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCbHVldG9vdGhDbGFzcy5TZXJ2aWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmx1ZXRvb3RoQ2xhc3MuU2VydmljZSIKKyB0eXBlPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhDbGFzcy5TZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQVVESU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDk3MTUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBUFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5GT1JNQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4Mzg4NjA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJTUlURURfRElTQ09WRVJBQklMSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9CSkVDVF9UUkFOU0ZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDg1NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TSVRJT05JTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRU5ERVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjIxNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVMRVBIT05ZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE5NDMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmx1ZXRvb3RoRGV2aWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUmZjb21tU29ja2V0VG9TZXJ2aWNlUmVjb3JkIgorIHJldHVybj0iYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1dWlkIiB0eXBlPSJqYXZhLnV0aWwuVVVJRCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbHVldG9vdGhDbGFzcyIKKyByZXR1cm49ImFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aENsYXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvbmRTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BQ0xfQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5hY3Rpb24uQUNMX0NPTk5FQ1RFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQUNMX0RJU0NPTk5FQ1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuYWN0aW9uLkFDTF9ESVNDT05ORUNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FDTF9ESVNDT05ORUNUX1JFUVVFU1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuYWN0aW9uLkFDTF9ESVNDT05ORUNUX1JFUVVFU1RFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQk9ORF9TVEFURV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5hY3Rpb24uQk9ORF9TVEFURV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9DTEFTU19DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5hY3Rpb24uQ0xBU1NfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRk9VTkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmFjdGlvbi5GT1VORCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTkFNRV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5hY3Rpb24uTkFNRV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJPTkRfQk9OREVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQk9ORF9CT05ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQk9ORF9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0JPTkRfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmV4dHJhLkJPTkRfU1RBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ0xBU1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmV4dHJhLkNMQVNTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RFVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuZXh0cmEuREVWSUNFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmV4dHJhLk5BTUUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUFJFVklPVVNfQk9ORF9TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuZXh0cmEuUFJFVklPVVNfQk9ORF9TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SU1NJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5leHRyYS5SU1NJJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCbHVldG9vdGhTZXJ2ZXJTb2NrZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLkNsb3NlYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFjY2VwdCIKKyByZXR1cm49ImFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aFNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNjZXB0IgorIHJldHVybj0iYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmx1ZXRvb3RoU29ja2V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5DbG9zZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE91dHB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVEZXZpY2UiCisgcmV0dXJuPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhEZXZpY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmNvbnRlbnQiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RUaHJlYWRlZFN5bmNBZGFwdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0VGhyZWFkZWRTeW5jQWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQWJzdHJhY3RUaHJlYWRlZFN5bmNBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9Jbml0aWFsaXplIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5bmNBZGFwdGVyQmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QZXJmb3JtU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyQ2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeW5jUmVzdWx0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU3luY1Jlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN5bmNDYW5jZWxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMT0dfU1lOQ19ERVRBSUxTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjc0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHlOb3RGb3VuZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5BY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFzeW5jUXVlcnlIYW5kbGVyIgorIGV4dGVuZHM9ImFuZHJvaWQub3MuSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXN5bmNRdWVyeUhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkFzeW5jUXVlcnlIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxPcGVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSGFuZGxlciIKKyByZXR1cm49ImFuZHJvaWQub3MuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcGVyIiB0eXBlPSJhbmRyb2lkLm9zLkxvb3BlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlbGV0ZUNvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkluc2VydENvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblF1ZXJ5Q29tcGxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25VcGRhdGVDb21wbGV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnREZWxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW5zZXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFF1ZXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXJCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXN5bmNRdWVyeUhhbmRsZXIuV29ya2VyQXJncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzeW5jUXVlcnlIYW5kbGVyLldvcmtlckFyZ3MiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkFzeW5jUXVlcnlIYW5kbGVyLldvcmtlckFyZ3MiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJjb29raWUiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3JkZXJCeSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvamVjdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXN1bHQiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0aW9uQXJncyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1cmkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmFsdWVzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFzeW5jUXVlcnlIYW5kbGVyLldvcmtlckhhbmRsZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXN5bmNRdWVyeUhhbmRsZXIuV29ya2VySGFuZGxlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQXN5bmNRdWVyeUhhbmRsZXIuV29ya2VySGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BlciIgdHlwZT0iYW5kcm9pZC5vcy5Mb29wZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCcm9hZGNhc3RSZWNlaXZlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCcm9hZGNhc3RSZWNlaXZlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWJvcnRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJBYm9ydEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBYm9ydEJyb2FkY2FzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWJ1Z1VucmVnaXN0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzdWx0Q29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3VsdERhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzdWx0RXh0cmFzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFrZU1hcCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luaXRpYWxTdGlja3lCcm9hZGNhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcmRlcmVkQnJvYWRjYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVjZWl2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrU2VydmljZSIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXlDb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWJ1Z1VucmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlYnVnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9yZGVyZWRIaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc09yZGVyZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzdWx0Q29kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc3VsdERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzdWx0RXh0cmFzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb21wb25lbnRDYWxsYmFja3MiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDb25maWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxvd01lbW9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29tcG9uZW50TmFtZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb25lbnROYW1lIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbXBvbmVudE5hbWUiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbXBvbmVudE5hbWUiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcG9uZW50TmFtZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGF0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsYXR0ZW5Ub1Nob3J0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGF0dGVuVG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0Q2xhc3NOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnJvbVBhcmNlbCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1Nob3J0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmZsYXR0ZW5Gcm9tU3RyaW5nIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFByb3ZpZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudENhbGxiYWNrcyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudFByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwbHlCYXRjaCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9ucyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdHRhY2hJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVsa0luc2VydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXNbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGhQZXJtaXNzaW9ucyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QYXRoUGVybWlzc2lvbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhZFBlcm1pc3Npb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V3JpdGVQZXJtaXNzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1RlbXBvcmFyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25maWd1cmF0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG93TWVtb3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQXNzZXRGaWxlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuRmlsZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlSGVscGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3J0T3JkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aFBlcm1pc3Npb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9ucyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhdGhQZXJtaXNzaW9uW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVhZFBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V3JpdGVQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFByb3ZpZGVyQ2xpZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXBwbHlCYXRjaCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9ucyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJidWxrSW5zZXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXNbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbENvbnRlbnRQcm92aWRlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxWYWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5Bc3NldEZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50UHJvdmlkZXJPcGVyYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXBwbHkiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja1JlZnMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtQmFja1JlZnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWRPcGVyYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV3JpdGVPcGVyYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzWWllbGRBbGxvd2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdBc3NlcnRRdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEZWxldGUiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbi5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1VwZGF0ZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlU2VsZWN0aW9uQXJnc0JhY2tSZWZlcmVuY2VzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrUmVmcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlclJlc3VsdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1CYWNrUmVmcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVWYWx1ZUJhY2tSZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhY2tSZWZzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyUmVzdWx0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUJhY2tSZWZzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uLkJ1aWxkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoRXhwZWN0ZWRDb3VudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoU2VsZWN0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbi5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoU2VsZWN0aW9uQmFja1JlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJnSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJldmlvdXNSZXN1bHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoVmFsdWUiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2l0aFZhbHVlQmFja1JlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmV2aW91c1Jlc3VsdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpdGhWYWx1ZUJhY2tSZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbi5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrUmVmZXJlbmNlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2l0aFZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoWWllbGRBbGxvd2VkIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbi5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5aWVsZEFsbG93ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFByb3ZpZGVyUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudFByb3ZpZGVyUmVzdWx0IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudFByb3ZpZGVyUmVzdWx0IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50UHJvdmlkZXJSZXN1bHQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlclJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVyaSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50UXVlcnlNYXAiCisgZXh0ZW5kcz0iamF2YS51dGlsLk9ic2VydmFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50UXVlcnlNYXAiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRRdWVyeU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVPZktleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcFVwZGF0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXJGb3JVcGRhdGVOb3RpZmljYXRpb25zIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSb3dzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3dOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtlZXBVcGRhdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcFVwZGF0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFJlc29sdmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRlbnRSZXNvbHZlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlQ29udGVudFByb3ZpZGVyQ2xpZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlckNsaWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlQ29udGVudFByb3ZpZGVyQ2xpZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlckNsaWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFBlcmlvZGljU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGxGcmVxdWVuY3kiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3RhdHVzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQuY29udGVudC5TeW5jU3RhdHVzT2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwbHlCYXRjaCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcGVyYXRpb25zIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2FuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJPcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50Lk9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ1bGtJbnNlcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXNbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFN5bmMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU3luY0luZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJc1N5bmNhYmxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1hc3RlclN5bmNBdXRvbWF0aWNhbGx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcmlvZGljU3luY3MiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuUGVyaW9kaWNTeW5jJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeW5jQWRhcHRlclR5cGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlN5bmNBZGFwdGVyVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3luY0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N5bmNBY3RpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3luY1BlbmRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUNoYW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm90aWZ5Q2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3luY1RvTmV0d29yayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQXNzZXRGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuRmlsZURlc2NyaXB0b3IiCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5JbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3Blbk91dHB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5PdXRwdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3J0T3JkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZnlGb3JEZXNjZW5kZW50cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBlcmlvZGljU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlU3RhdHVzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0U3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXNTeW5jYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5bmNhYmxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWFzdGVyU3luY0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5bmMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3luY0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeW5jIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0U3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckNvbnRlbnRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZVN5bmNFeHRyYXNCdW5kbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDVVJTT1JfRElSX0JBU0VfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNVUlNPUl9JVEVNX0JBU0VfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0hFTUVfQU5EUk9JRF9SRVNPVVJDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnJlc291cmNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDSEVNRV9DT05URU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbnRlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NIRU1FX0ZJTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZmlsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19BQ0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19ESVNDQVJEX0xPQ0FMX0RFTEVUSU9OUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkaXNjYXJkX2RlbGV0aW9ucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19ET19OT1RfUkVUUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZG9fbm90X3JldHJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfRVhUUkFTX0VYUEVESVRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtleHBlZGl0ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQ19FWFRSQVNfRk9SQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Zm9yY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19JR05PUkVfQkFDS09GRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpZ25vcmVfYmFja29mZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19JR05PUkVfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aWdub3JlX3NldHRpbmdzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfRVhUUkFTX0lOSVRJQUxJWkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW5pdGlhbGl6ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19NQU5VQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Zm9yY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQ19FWFRSQVNfT1ZFUlJJREVfVE9PX01BTllfREVMRVRJT05TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RlbGV0aW9uc19vdmVycmlkZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19VUExPQUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dXBsb2FkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfT0JTRVJWRVJfVFlQRV9BQ1RJVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfT0JTRVJWRVJfVFlQRV9QRU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX09CU0VSVkVSX1RZUEVfU0VUVElOR1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50VXJpcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudFVyaXMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRVcmlzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZElkIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVpbGRlciIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpLkJ1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoQXBwZW5kZWRJZCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRlbnRWYWx1ZXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRlbnRWYWx1ZXMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50VmFsdWVzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50VmFsdWVzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNCb29sZWFuIgorIHJldHVybj0iamF2YS5sYW5nLkJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBc0J5dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzQnl0ZUFycmF5IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNEb3VibGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuRG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNGbG9hdCIKKyByZXR1cm49ImphdmEubGFuZy5GbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzSW50ZWdlciIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNMb25nIgorIHJldHVybj0iamF2YS5sYW5nLkxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBc1Nob3J0IgorIHJldHVybj0iamF2YS5sYW5nLlNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuQnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5Eb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEFsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlU2V0IgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnV0aWwuTWFwLkVudHJ5Jmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QmZ3Q7Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0NvbnRlbnRWYWx1ZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRleHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGV4dCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kU2VydmljZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0NhbGxpbmdPclNlbGZVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0NhbGxpbmdQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nVXJpUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1VyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyV2FsbHBhcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVBhY2thZ2VDb250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhYmFzZUxpc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVEYXRhYmFzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVGaWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmZvcmNlQ2FsbGluZ09yU2VsZlVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmZvcmNlVXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZVVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGVMaXN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25Db250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNzZXRzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldE1hbmFnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYWNoZURpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFJlc29sdmVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFiYXNlUGF0aCIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxDYWNoZURpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dGVybmFsRmlsZXNEaXIiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlU3RyZWFtUGF0aCIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVzRGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFpbkxvb3BlciIKKyByZXR1cm49ImFuZHJvaWQub3MuTG9vcGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZUNvZGVQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZVJlc291cmNlUGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFByZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXRBcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbVNlcnZpY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaGVtZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLlRoZW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyRGVzaXJlZE1pbmltdW1IZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbGxwYXBlckRlc2lyZWRNaW5pbXVtV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdyYW50VXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9QYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXN0cmljdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5TdHlsZWRBdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5TdHlsZWRBdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5TdHlsZWRBdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNldCIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpblN0eWxlZEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlR5cGVkQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlQXR0ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZVJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlSW5wdXQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlT3V0cHV0IgorIHJldHVybj0iamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3JDcmVhdGVEYXRhYmFzZSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrV2FsbHBhcGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJSZWNlaXZlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyUmVjZWl2ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnJvYWRjYXN0UGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZWR1bGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlU3RpY2t5QnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2b2tlVXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kT3JkZXJlZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlclBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZE9yZGVyZWRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXJQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlZHVsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxFeHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTdGlja3lCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kU3RpY2t5T3JkZXJlZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlZHVsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxFeHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRoZW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdhbGxwYXBlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYWxscGFwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW5zdHJ1bWVudGF0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9maWxlRmlsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJndW1lbnRzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEludGVudFNlbmRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxsSW5JbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzTWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnc1ZhbHVlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRTZXJ2aWNlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wU2VydmljZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmJpbmRTZXJ2aWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlclJlY2VpdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNDRVNTSUJJTElUWV9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY2Vzc2liaWxpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDT1VOVF9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSVZJVFlfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY3Rpdml0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTEFSTV9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FsYXJtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXVkaW8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklORF9BVVRPX0NSRUFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklORF9ERUJVR19VTkJJTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJJTkRfTk9UX0ZPUkVHUk9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMSVBCT0FSRF9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NsaXBib2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05ORUNUSVZJVFlfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb25uZWN0aXZpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVYVF9JR05PUkVfU0VDVVJJVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFWFRfSU5DTFVERV9DT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URVhUX1JFU1RSSUNURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVklDRV9QT0xJQ1lfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkZXZpY2VfcG9saWN5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRST1BCT1hfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkcm9wYm94JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOUFVUX01FVEhPRF9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lucHV0X21ldGhvZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlHVUFSRF9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2tleWd1YXJkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBWU9VVF9JTkZMQVRFUl9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xheW91dF9pbmZsYXRlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0NBVElPTl9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfQVBQRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9QUklWQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX1dPUkxEX1JFQURBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX1dPUkxEX1dSSVRFQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9USUZJQ0FUSU9OX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90aWZpY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPV0VSX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG93ZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VBUkNIX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2VhcmNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NlbnNvciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURUxFUEhPTllfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVSV9NT0RFX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dWltb2RlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVE9SX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmlicmF0b3ImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FMTFBBUEVSX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2FsbHBhcGVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJTkRPV19TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpbmRvdyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGV4dFdyYXBwZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZXh0V3JhcHBlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF0dGFjaEJhc2VDb250ZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZFNlcnZpY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nT3JTZWxmUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0NhbGxpbmdPclNlbGZVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0NhbGxpbmdVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1VyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyV2FsbHBhcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUGFja2FnZUNvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhYmFzZUxpc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlRGF0YWJhc2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdPclNlbGZVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZVVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxlTGlzdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkNvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzc2V0cyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJhc2VDb250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FjaGVEaXIiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3NMb2FkZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFJlc29sdmVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhYmFzZVBhdGgiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxDYWNoZURpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlcm5hbEZpbGVzRGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVTdHJlYW1QYXRoIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVzRGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1haW5Mb29wZXIiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkxvb3BlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlQ29kZVBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlUmVzb3VyY2VQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaGFyZWRQcmVmZXJlbmNlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbVNlcnZpY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRoZW1lIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuVGhlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYWxscGFwZXJEZXNpcmVkTWluaW11bUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYWxscGFwZXJEZXNpcmVkTWluaW11bVdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdyYW50VXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRvUGFja2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlSW5wdXQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuRmlsZU91dHB1dCIKKyByZXR1cm49ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5PckNyZWF0ZURhdGFiYXNlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrV2FsbHBhcGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlclJlY2VpdmVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyUmVjZWl2ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJyb2FkY2FzdFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVkdWxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVN0aWNreUJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZva2VVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXJQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRPcmRlcmVkQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlclBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZE9yZGVyZWRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZWR1bGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxEYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsRXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kU3RpY2t5QnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTdGlja3lPcmRlcmVkQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlZHVsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxFeHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRoZW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYWxscGFwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYWxscGFwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEFjdGl2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW5zdHJ1bWVudGF0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZmlsZUZpbGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3VtZW50cyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRJbnRlbnRTZW5kZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxJbkludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3NNYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzVmFsdWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNlcnZpY2UiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wU2VydmljZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5iaW5kU2VydmljZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9ImFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyUmVjZWl2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEaWFsb2dJbnRlcmZhY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzbWlzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkJVVFRPTjEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVVFRPTjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVVFRPTjMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVVFRPTl9ORUdBVElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVVFRPTl9ORVVUUkFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlVUVE9OX1BPU0lUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoaWNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRGlzbWlzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRGlhbG9nSW50ZXJmYWNlLk9uS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRpYWxvZ0ludGVyZmFjZS5Pbk11bHRpQ2hvaWNlQ2xpY2tMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0NoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEaWFsb2dJbnRlcmZhY2UuT25TaG93TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2hvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJFbnRpdHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW50aXR5IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5FbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkU3ViVmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHlWYWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJWYWx1ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2FuZHJvaWQuY29udGVudC5FbnRpdHkuTmFtZWRDb250ZW50VmFsdWVzJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFbnRpdHkuTmFtZWRDb250ZW50VmFsdWVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudGl0eS5OYW1lZENvbnRlbnRWYWx1ZXMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkVudGl0eS5OYW1lZENvbnRlbnRWYWx1ZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0idXJpIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmFsdWVzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkVudGl0eUl0ZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJJbnRlbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VDb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZUNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZENhdGVnb3J5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRmxhZ3MiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZUZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ2hvb3NlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGxJbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsdGVyRXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsdGVySGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuQXJyYXlFeHRyYSIKKyByZXR1cm49ImJvb2xlYW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuRXh0cmEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnVuZGxlRXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlQXJyYXlFeHRyYSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlRXh0cmEiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2F0ZWdvcmllcyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhckFycmF5RXh0cmEiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhckV4dHJhIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJTZXF1ZW5jZUFycmF5RXh0cmEiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhclNlcXVlbmNlQXJyYXlMaXN0RXh0cmEiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5DaGFyU2VxdWVuY2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJTZXF1ZW5jZUV4dHJhIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wb25lbnQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZUFycmF5RXh0cmEiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGVFeHRyYSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmFzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXRBcnJheUV4dHJhIgorIHJldHVybj0iZmxvYXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdEV4dHJhIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50QXJyYXlFeHRyYSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludEV4dHJhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlZ2VyQXJyYXlMaXN0RXh0cmEiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVUklTeW50YXhFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlbnRPbGQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVVJJU3ludGF4RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZ0FycmF5RXh0cmEiCisgcmV0dXJuPSJsb25nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZ0V4dHJhIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmNlbGFibGVBcnJheUV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyY2VsYWJsZUFycmF5TGlzdEV4dHJhIgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJjZWxhYmxlRXh0cmEiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VyaWFsaXphYmxlRXh0cmEiCisgcmV0dXJuPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydEFycmF5RXh0cmEiCisgcmV0dXJuPSJzaG9ydFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0RXh0cmEiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb3VyY2VCb3VuZHMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nQXJyYXlFeHRyYSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmdBcnJheUxpc3RFeHRyYSIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nRXh0cmEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0NhdGVnb3J5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRXh0cmEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0ZpbGVEZXNjcmlwdG9ycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VJbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlVXJpIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXJTZXF1ZW5jZUFycmF5TGlzdEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLkNoYXJTZXF1ZW5jZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEludGVnZXJBcnJheUxpc3RFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRQYXJjZWxhYmxlQXJyYXlMaXN0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDs/IGV4dGVuZHMgYW5kcm9pZC5vcy5QYXJjZWxhYmxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmdBcnJheUxpc3RFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUNhdGVnb3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlRXh0cmEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VFeHRyYXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZUV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUFjdGl2aXR5SW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZVR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVUeXBlSWZOZWVkZWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY3Rpb24iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xhc3MiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlQ29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNscyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsYXNzTmFtZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VDb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsYXNzTmFtZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29tcG9uZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcG9uZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGFBbmRUeXBlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV4dHJhc0NsYXNzTG9hZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmxhZ3MiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhY2thZ2UiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb3VyY2VCb3VuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHlwZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VcmkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FJUlBMQU5FX01PREVfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uQUlSUExBTkVfTU9ERSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQUxMX0FQUFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkFMTF9BUFBTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BTlNXRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkFOU1dFUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVRUQUNIX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkFUVEFDSF9EQVRBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9CQVRURVJZX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJBVFRFUllfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQkFUVEVSWV9MT1ciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJBVFRFUllfTE9XJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9CQVRURVJZX09LQVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJBVFRFUllfT0tBWSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQk9PVF9DT01QTEVURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJPT1RfQ09NUExFVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9CVUdfUkVQT1JUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5CVUdfUkVQT1JUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9DQUxMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5DQUxMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9DQUxMX0JVVFRPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uQ0FMTF9CVVRUT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NBTUVSQV9CVVRUT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkNBTUVSQV9CVVRUT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NIT09TRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkNIT09TRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5DTE9TRV9TWVNURU1fRElBTE9HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5DT05GSUdVUkFUSU9OX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NSRUFURV9TSE9SVENVVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uQ1JFQVRFX1NIT1JUQ1VUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9EQVRFX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkRBVEVfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREVGQVVMVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uVklFVyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREVMRVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5ERUxFVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RFVklDRV9TVE9SQUdFX0xPVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uREVWSUNFX1NUT1JBR0VfTE9XJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9ERVZJQ0VfU1RPUkFHRV9PSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uREVWSUNFX1NUT1JBR0VfT0smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RJQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkRJQUwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RPQ0tfRVZFTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkRPQ0tfRVZFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0VESVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkVESVQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0ZBQ1RPUllfVEVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uRkFDVE9SWV9URVNUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9HRVRfQ09OVEVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uR0VUX0NPTlRFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0dUQUxLX1NFUlZJQ0VfQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5HVEFMS19DT05ORUNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0dUQUxLX1NFUlZJQ0VfRElTQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5HVEFMS19ESVNDT05ORUNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0hFQURTRVRfUExVRyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSEVBRFNFVF9QTFVHJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9JTlBVVF9NRVRIT0RfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5QVVRfTUVUSE9EX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0lOU0VSVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5TRVJUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9JTlNFUlRfT1JfRURJVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5TRVJUX09SX0VESVQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0xPQ0FMRV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5MT0NBTEVfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUFJTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUFOQUdFX1BBQ0tBR0VfU1RPUkFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUFOQUdFX1BBQ0tBR0VfU1RPUkFHRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUVESUFfQkFEX1JFTU9WQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX0JBRF9SRU1PVkFMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NRURJQV9CVVRUT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX0JVVFRPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUVESUFfQ0hFQ0tJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX0NIRUNLSU5HJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NRURJQV9FSkVDVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfRUpFQ1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX01PVU5URUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX01PVU5URUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX05PRlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX05PRlMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1JFTU9WRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX1JFTU9WRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1NDQU5ORVJfRklOSVNIRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX1NDQU5ORVJfRklOSVNIRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1NDQU5ORVJfU0NBTl9GSUxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NRURJQV9TQ0FOTkVSX1NDQU5fRklMRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUVESUFfU0NBTk5FUl9TVEFSVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NRURJQV9TQ0FOTkVSX1NUQVJURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1NIQVJFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfU0hBUkVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NRURJQV9VTk1PVU5UQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfVU5NT1VOVEFCTEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1VOTU9VTlRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfVU5NT1VOVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9ORVdfT1VUR09JTkdfQ0FMTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTkVXX09VVEdPSU5HX0NBTEwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BBQ0tBR0VfQURERUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlBBQ0tBR0VfQURERUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BBQ0tBR0VfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEFDS0FHRV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QQUNLQUdFX0RBVEFfQ0xFQVJFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEFDS0FHRV9EQVRBX0NMRUFSRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BBQ0tBR0VfSU5TVEFMTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEFDS0FHRV9JTlNUQUxMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QQUNLQUdFX1JFTU9WRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlBBQ0tBR0VfUkVNT1ZFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEFDS0FHRV9SRVBMQUNFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEFDS0FHRV9SRVBMQUNFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEFDS0FHRV9SRVNUQVJURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlBBQ0tBR0VfUkVTVEFSVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QSUNLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5QSUNLJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QSUNLX0FDVElWSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5QSUNLX0FDVElWSVRZJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT1dFUl9DT05ORUNURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkFDVElPTl9QT1dFUl9DT05ORUNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPV0VSX0RJU0NPTk5FQ1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uQUNUSU9OX1BPV0VSX0RJU0NPTk5FQ1RFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9XRVJfVVNBR0VfU1VNTUFSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUE9XRVJfVVNBR0VfU1VNTUFSWSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUFJPVklERVJfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUFJPVklERVJfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUkVCT09UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5SRUJPT1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1JVTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUlVOJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TQ1JFRU5fT0ZGIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5TQ1JFRU5fT0ZGJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TQ1JFRU5fT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlNDUkVFTl9PTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fU0VBUkNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5TRUFSQ0gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NFQVJDSF9MT05HX1BSRVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5TRUFSQ0hfTE9OR19QUkVTUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fU0VORCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uU0VORCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fU0VORFRPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5TRU5EVE8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NFTkRfTVVMVElQTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlNFTkRfTVVMVElQTEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NFVF9XQUxMUEFQRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlNFVF9XQUxMUEFQRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NIVVRET1dOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5BQ1RJT05fU0hVVERPV04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NZTkMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlNZTkMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NZU1RFTV9UVVRPUklBTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uU1lTVEVNX1RVVE9SSUFMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9USU1FWk9ORV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5USU1FWk9ORV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9USU1FX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlRJTUVfU0VUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9USU1FX1RJQ0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlRJTUVfVElDSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVUlEX1JFTU9WRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlVJRF9SRU1PVkVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9VTVNfQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5VTVNfQ09OTkVDVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9VTVNfRElTQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5VTVNfRElTQ09OTkVDVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9VU0VSX1BSRVNFTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlVTRVJfUFJFU0VOVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVklFVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uVklFVyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVk9JQ0VfQ09NTUFORCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uVk9JQ0VfQ09NTUFORCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fV0FMTFBBUEVSX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLldBTExQQVBFUl9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9XRUJfU0VBUkNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5XRUJfU0VBUkNIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0FMVEVSTkFUSVZFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkFMVEVSTkFUSVZFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0JST1dTQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5CUk9XU0FCTEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfQ0FSX0RPQ0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuQ0FSX0RPQ0smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfQ0FSX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuQ0FSX01PREUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfREVGQVVMVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERUZBVUxUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0RFU0tfRE9DSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERVNLX0RPQ0smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfREVWRUxPUE1FTlRfUFJFRkVSRU5DRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERVZFTE9QTUVOVF9QUkVGRVJFTkNFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0VNQkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkVNQkVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0ZSQU1FV09SS19JTlNUUlVNRU5UQVRJT05fVEVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5GUkFNRVdPUktfSU5TVFJVTUVOVEFUSU9OX1RFU1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfSE9NRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5IT01FJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuSU5GTyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9MQVVOQ0hFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9NT05LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTU9OS0VZJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX09QRU5BQkxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5Lk9QRU5BQkxFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX1BSRUZFUkVOQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuUFJFRkVSRU5DRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9TQU1QTEVfQ09ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5TQU1QTEVfQ09ERSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9TRUxFQ1RFRF9BTFRFUk5BVElWRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5TRUxFQ1RFRF9BTFRFUk5BVElWRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9UQUIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuVEFCJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX1RFU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuVEVTVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9VTklUX1RFU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuVU5JVF9URVNUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQUxBUk1fQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuQUxBUk1fQ09VTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQkNDIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLkJDQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9DQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5DQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9DSEFOR0VEX0NPTVBPTkVOVF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLmNoYW5nZWRfY29tcG9uZW50X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9DSEFOR0VEX0NPTVBPTkVOVF9OQU1FX0xJU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuY2hhbmdlZF9jb21wb25lbnRfbmFtZV9saXN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RBVEFfUkVNT1ZFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5EQVRBX1JFTU9WRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfRE9DS19TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5ET0NLX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RPQ0tfU1RBVEVfQ0FSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9ET0NLX1NUQVRFX0RFU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RPQ0tfU1RBVEVfVU5ET0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RPTlRfS0lMTF9BUFAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuRE9OVF9LSUxMX0FQUCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9FTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5FTUFJTCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9JTklUSUFMX0lOVEVOVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuSU5JVElBTF9JTlRFTlRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0lOVEVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5JTlRFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfS0VZX0VWRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLktFWV9FVkVOVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9QSE9ORV9OVU1CRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuUEhPTkVfTlVNQkVSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JFTU9URV9JTlRFTlRfVE9LRU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmVtb3RlX2ludGVudF90b2tlbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SRVBMQUNJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuUkVQTEFDSU5HJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NIT1JUQ1VUX0lDT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuc2hvcnRjdXQuSUNPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TSE9SVENVVF9JQ09OX1JFU09VUkNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNob3J0Y3V0LklDT05fUkVTT1VSQ0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU0hPUlRDVVRfSU5URU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNob3J0Y3V0LklOVEVOVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TSE9SVENVVF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNob3J0Y3V0Lk5BTUUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RSRUFNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLlNUUkVBTSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TVUJKRUNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLlNVQkpFQ1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVEVNUExBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuVEVNUExBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVEVYVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5URVhUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1RJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLlRJVExFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1VJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5VSUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9JTl9BQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTExfSU5fQ0FURUdPUklFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9JTl9DT01QT05FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTExfSU5fREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9JTl9QQUNLQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9JTl9TT1VSQ0VfQk9VTkRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9CUk9VR0hUX1RPX0ZST05UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE5NDMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FDVElWSVRZX0NMRUFSX1RPUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY3MTA4ODY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfQ0xFQVJfV0hFTl9UQVNLX1JFU0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfRVhDTFVERV9GUk9NX1JFQ0VOVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4Mzg4NjA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfRk9SV0FSRF9SRVNVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzU1NDQzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FDVElWSVRZX0xBVU5DSEVEX0ZST01fSElTVE9SWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDg1NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9NVUxUSVBMRV9UQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTM0MjE3NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfTkVXX1RBU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjg0MzU0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9OT19BTklNQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FDVElWSVRZX05PX0hJU1RPUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDczNzQxODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfTk9fVVNFUl9BQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjIxNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9QUkVWSU9VU19JU19UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjc3NzIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FDVElWSVRZX1JFT1JERVJfVE9fRlJPTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwOTcxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM2ODcwOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfREVCVUdfTE9HX1JFU09MVVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRlJPTV9CQUNLR1JPVU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0dSQU5UX1JFQURfVVJJX1BFUk1JU1NJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfR1JBTlRfV1JJVEVfVVJJX1BFUk1JU1NJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfUkVDRUlWRVJfUkVHSVNURVJFRF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3Mzc0MTgyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1JFQ0VJVkVSX1JFUExBQ0VfUEVORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNjg3MDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBREFUQV9ET0NLX0hPTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5kb2NrX2hvbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVJJX0lOVEVOVF9TQ0hFTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnRlbnQuRmlsdGVyQ29tcGFyaXNvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudC5GaWx0ZXJDb21wYXJpc29uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQuRmlsdGVyQ29tcGFyaXNvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50ZW50LlNob3J0Y3V0SWNvblJlc291cmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlbnQuU2hvcnRjdXRJY29uUmVzb3VyY2UiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudC5TaG9ydGN1dEljb25SZXNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyb21Db250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudC5TaG9ydGN1dEljb25SZXNvdXJjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2FnZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc291cmNlTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVudEZpbHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudEZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50RmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudEZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlbnRGaWx0ZXIiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhY3Rpb25zSXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRDYXRlZ29yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRGF0YUF1dGhvcml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGREYXRhUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZERhdGFTY2hlbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGREYXRhVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF1dGhvcml0aWVzSXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7YW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlci5BdXRob3JpdHlFbnRyeSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYXRlZ29yaWVzSXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudEFjdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudENhdGVnb3JpZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudERhdGFBdXRob3JpdGllcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvdW50RGF0YVBhdGhzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY291bnREYXRhU2NoZW1lcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvdW50RGF0YVR5cGVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGFUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHUiIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhdGVnb3J5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFBdXRob3JpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLkF1dGhvcml0eUVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YVBhdGgiCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhdHRlcm5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YVNjaGVtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmlvcml0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0NhdGVnb3J5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRlZ29yeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNEYXRhQXV0aG9yaXR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRGF0YVBhdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRGF0YVNjaGVtZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0RhdGFUeXBlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZ1RhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXRlZ29yaWVzIiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2dUYWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hBY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaENhdGVnb3JpZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGVnb3JpZXMiIHR5cGU9ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hEYXRhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoRGF0YUF1dGhvcml0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF0aHNJdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDthbmRyb2lkLm9zLlBhdHRlcm5NYXRjaGVyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tWG1sIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlbWVzSXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmlvcml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0eXBlc0l0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1htbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcmlhbGl6ZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRDSF9BREpVU1RNRU5UX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRDSF9BREpVU1RNRU5UX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX0NBVEVHT1JZX0VNUFRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0ODU3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRDSF9DQVRFR09SWV9IT1NUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE0NTcyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRDSF9DQVRFR09SWV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4MzY5OTIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX0NBVEVHT1JZX1BBVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX0NBVEVHT1JZX1BPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTk0MzA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX0NBVEVHT1JZX1NDSEVNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwOTcxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFUQ0hfQ0FURUdPUllfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYyOTE0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fTUFUQ0hfQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fTUFUQ0hfQ0FURUdPUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19NQVRDSF9EQVRBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fTUFUQ0hfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZU1RFTV9ISUdIX1BSSU9SSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWVNURU1fTE9XX1BSSU9SSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVudEZpbHRlci5BdXRob3JpdHlFbnRyeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudEZpbHRlci5BdXRob3JpdHlFbnRyeSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLkF1dGhvcml0eUVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnRlbnRGaWx0ZXIuTWFsZm9ybWVkTWltZVR5cGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC51dGlsLkFuZHJvaWRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudEZpbHRlci5NYWxmb3JtZWRNaW1lVHlwZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIuTWFsZm9ybWVkTWltZVR5cGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50ZW50U2VuZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEludGVudFNlbmRlck9yTnVsbEZyb21QYXJjZWwiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kSW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbkZpbmlzaGVkIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyLk9uRmluaXNoZWQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUludGVudFNlbmRlck9yTnVsbFRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZW5kZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSW50ZW50U2VuZGVyLk9uRmluaXNoZWQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2VuZEZpbmlzaGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJJbnRlbnRTZW5kZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHREYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRFeHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJJbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLnV0aWwuQW5kcm9pZEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNdXRhYmxlQ29udGV4dFdyYXBwZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkNvbnRleHRXcmFwcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTXV0YWJsZUNvbnRleHRXcmFwcGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5NdXRhYmxlQ29udGV4dFdyYXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InNldEJhc2VDb250ZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50Lk9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtU3VjY2Vzc2Z1bFlpZWxkUG9pbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bVN1Y2Nlc3NmdWxZaWVsZFBvaW50cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtU3VjY2Vzc2Z1bFlpZWxkUG9pbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBlcmlvZGljU3luYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBlcmlvZGljU3luYyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuUGVyaW9kaWNTeW5jIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcmlvZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY2NvdW50IgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXV0aG9yaXR5IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4dHJhcyIKKyB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGVyaW9kIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWNlaXZlckNhbGxOb3RBbGxvd2VkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudXRpbC5BbmRyb2lkUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlY2VpdmVyQ2FsbE5vdEFsbG93ZWRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlJlY2VpdmVyQ2FsbE5vdEFsbG93ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZWFyY2hSZWNlbnRTdWdnZXN0aW9uc1Byb3ZpZGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWFyY2hSZWNlbnRTdWdnZXN0aW9uc1Byb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5TZWFyY2hSZWNlbnRTdWdnZXN0aW9uc1Byb3ZpZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ydE9yZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldHVwU3VnZ2VzdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRBVEFCQVNFX01PREVfMkxJTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBQkFTRV9NT0RFX1FVRVJJRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU2VydmljZUNvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblNlcnZpY2VDb25uZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZXJ2aWNlRGlzY29ubmVjdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZGl0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzLkVkaXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbCIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgPyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3Rlck9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzLk9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJPblNoYXJlZFByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcy5PblNoYXJlZFByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNoYXJlZFByZWZlcmVuY2VzLkVkaXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEJvb2xlYW4iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RmxvYXQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEludCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcy5FZGl0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dExvbmciCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U3RyaW5nIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzLkVkaXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcy5FZGl0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2hhcmVkUHJlZmVyZW5jZXMuT25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZFByZWZlcmVuY2VzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU3luY0FkYXB0ZXJUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY0FkYXB0ZXJUeXBlIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5TeW5jQWRhcHRlclR5cGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyVmlzaWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwcG9ydHNVcGxvYWRpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN5bmNBZGFwdGVyVHlwZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU3luY0FkYXB0ZXJUeXBlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVc2VyVmlzaWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3S2V5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlN5bmNBZGFwdGVyVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzVXBsb2FkaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjY291bnRUeXBlIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dGhvcml0eSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc0tleSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY0NvbnRleHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRTeW5jQ29udGV4dEJpbmRlciIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbmlzaGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU3luY1Jlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTeW5jSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iYWNjb3VudCIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dGhvcml0eSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGFydFRpbWUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN5bmNSZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN5bmNSZXN1bHQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlN5bmNSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRXJyb3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0hhcmRFcnJvciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU29mdEVycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWRlU29tZVByb2dyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0RlYnVnU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFMUkVBRFlfSU5fUFJPR1JFU1MiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlN5bmNSZXN1bHQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkYXRhYmFzZUVycm9yIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZWxheVVudGlsIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmdWxsU3luY1JlcXVlc3RlZCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibW9yZVJlY29yZHNUb0dldCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFydGlhbFN5bmNVbmF2YWlsYWJsZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdHMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlN5bmNTdGF0cyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3luY0FscmVhZHlJblByb2dyZXNzIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvb01hbnlEZWxldGlvbnMiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvb01hbnlSZXRyaWVzIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY1N0YXRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY1N0YXRzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5TeW5jU3RhdHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTeW5jU3RhdHMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlN5bmNTdGF0cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibnVtQXV0aEV4Y2VwdGlvbnMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bUNvbmZsaWN0RGV0ZWN0ZWRFeGNlcHRpb25zIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1EZWxldGVzIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1FbnRyaWVzIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1JbnNlcnRzIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1Jb0V4Y2VwdGlvbnMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bVBhcnNlRXhjZXB0aW9ucyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibnVtU2tpcHBlZEVudHJpZXMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bVVwZGF0ZXMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3luY1N0YXR1c09ic2VydmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25TdGF0dXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJVcmlNYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVcmlNYXRjaGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5VcmlNYXRjaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkVVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTk9fTUFUQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmNvbnRlbnQucG0iCis+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHlJbmZvIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5wbS5Db21wb25lbnRJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5SW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWN0aXZpdHlJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhlbWVSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09ORklHX0ZPTlRfU0NBTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDczNzQxODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19LRVlCT0FSRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19LRVlCT0FSRF9ISURERU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfTE9DQUxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfTUNDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfTU5DIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfTkFWSUdBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19PUklFTlRBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfU0NSRUVOX0xBWU9VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfVE9VQ0hTQ1JFRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19VSV9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BTExPV19UQVNLX1JFUEFSRU5USU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BTFdBWVNfUkVUQUlOX1RBU0tfU1RBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQ0xFQVJfVEFTS19PTl9MQVVOQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRVhDTFVERV9GUk9NX1JFQ0VOVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0ZJTklTSF9PTl9UQVNLX0xBVU5DSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19NVUxUSVBST0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfTk9fSElTVE9SWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NUQVRFX05PVF9ORUVERUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVVOQ0hfTVVMVElQTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBVU5DSF9TSU5HTEVfVEFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFVTkNIX1NJTkdMRV9UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9PUklFTlRBVElPTl9CRUhJTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9PUklFTlRBVElPTl9MQU5EU0NBUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9PUklFTlRBVElPTl9OT1NFTlNPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX09SSUVOVEFUSU9OX1BPUlRSQUlUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fT1JJRU5UQVRJT05fU0VOU09SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fT1JJRU5UQVRJT05fVU5TUEVDSUZJRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fT1JJRU5UQVRJT05fVVNFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29uZmlnQ2hhbmdlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXVuY2hNb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcmVlbk9yaWVudGF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNvZnRJbnB1dE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFyZ2V0QWN0aXZpdHkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhc2tBZmZpbml0eSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGhlbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFwcGxpY2F0aW9uSW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFwcGxpY2F0aW9uSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwbGljYXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BTExPV19CQUNLVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FMTE9XX0NMRUFSX1VTRVJfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxMT1dfVEFTS19SRVBBUkVOVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfREVCVUdHQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19GQUNUT1JZX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0hBU19DT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0tJTExfQUZURVJfUkVTVE9SRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1NTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfUEVSU0lTVEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19SRVNJWkVBQkxFX0ZPUl9TQ1JFRU5TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1JFU1RPUkVfQU5ZX1ZFUlNJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NVUFBPUlRTX05PUk1BTF9TQ1JFRU5TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NVUFBPUlRTX1NDUkVFTl9ERU5TSVRJRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfU1VQUE9SVFNfU01BTExfU0NSRUVOUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NZU1RFTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19URVNUX09OTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19VUERBVEVEX1NZU1RFTV9BUFAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19WTV9TQUZFX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJiYWNrdXBBZ2VudE5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsYXNzTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGF0YURpciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY3JpcHRpb25SZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW5hYmxlZCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFuYWdlU3BhY2VBY3Rpdml0eU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2Nlc3NOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwdWJsaWNTb3VyY2VEaXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNoYXJlZExpYnJhcnlGaWxlcyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzb3VyY2VEaXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhcmdldFNka1ZlcnNpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza0FmZmluaXR5IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aGVtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1aWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFwcGxpY2F0aW9uSW5mby5EaXNwbGF5TmFtZUNvbXBhcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29tcGFyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwbGljYXRpb25JbmZvLkRpc3BsYXlOYW1lQ29tcGFyYXRvciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvLkRpc3BsYXlOYW1lQ29tcGFyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhYiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb21wb25lbnRJbmZvIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSXRlbUluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb25lbnRJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db21wb25lbnRJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcG9uZW50SW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQ29tcG9uZW50SW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db21wb25lbnRJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb25lbnRJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db21wb25lbnRJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEljb25SZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYXBwbGljYXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZXNjcmlwdGlvblJlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlbmFibGVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHBvcnRlZCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2Vzc05hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb25maWd1cmF0aW9uSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmZpZ3VyYXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmZpZ3VyYXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xFc1ZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsYWJsZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VTX1ZFUlNJT05fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlBVVF9GRUFUVVJFX0ZJVkVfV0FZX05BViIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5QVVRfRkVBVFVSRV9IQVJEX0tFWUJPQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFHbEVzVmVyc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFJbnB1dEZlYXR1cmVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcUtleWJvYXJkVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFOYXZpZ2F0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcVRvdWNoU2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGZWF0dXJlSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZlYXR1cmVJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5GZWF0dXJlSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZlYXR1cmVJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5GZWF0dXJlSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5GZWF0dXJlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xFc1ZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsYWJsZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VTX1ZFUlNJT05fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFHbEVzVmVyc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5zdHJ1bWVudGF0aW9uSW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvbkluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkluc3RydW1lbnRhdGlvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5JbnN0cnVtZW50YXRpb25JbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkluc3RydW1lbnRhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkYXRhRGlyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmdW5jdGlvbmFsVGVzdCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGFuZGxlUHJvZmlsaW5nIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwdWJsaWNTb3VyY2VEaXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNvdXJjZURpciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFyZ2V0UGFja2FnZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxhYmVsZWRJbnRlbnQiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxhYmVsZWRJbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkxhYmVsZWRJbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnSW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VQYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbFJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxhYmVsZWRJbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkxhYmVsZWRJbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnSW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VQYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub25Mb2NhbGl6ZWRMYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYWJlbGVkSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5MYWJlbGVkSW50ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlUGFja2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWxSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYWJlbGVkSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5MYWJlbGVkSW50ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlUGFja2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9uTG9jYWxpemVkTGFiZWwiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imljb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEljb25SZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYWJlbFJlc291cmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vbkxvY2FsaXplZExhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb3VyY2VQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkSWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZExhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhY2thZ2VJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFja2FnZUluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZpdGllcyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcHBsaWNhdGlvbkluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ1ByZWZlcmVuY2VzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mb1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2lkcyIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imluc3RydW1lbnRhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uSW5zdHJ1bWVudGF0aW9uSW5mb1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2FnZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBlcm1pc3Npb25zIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mb1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvdmlkZXJzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm9bXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlY2VpdmVycyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFGZWF0dXJlcyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uRmVhdHVyZUluZm9bXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcXVlc3RlZFBlcm1pc3Npb25zIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlcnZpY2VzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mb1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hhcmVkVXNlcklkIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaGFyZWRVc2VyTGFiZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2lnbmF0dXJlcyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2lnbmF0dXJlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJzaW9uQ29kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJzaW9uTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhY2thZ2VJdGVtSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFja2FnZUl0ZW1JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSXRlbUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWNrYWdlSXRlbUluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJdGVtSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSXRlbUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhY2thZ2VJdGVtSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImR1bXBCYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcEZyb250IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZFhtbE1ldGFEYXRhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbGFibGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iaWNvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYWJlbFJlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtZXRhRGF0YSIKKyB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5vbkxvY2FsaXplZExhYmVsIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWNrYWdlTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhY2thZ2VJdGVtSW5mby5EaXNwbGF5TmFtZUNvbXBhcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29tcGFyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFja2FnZUl0ZW1JbmZvLkRpc3BsYXlOYW1lQ29tcGFyYXRvciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvLkRpc3BsYXlOYW1lQ29tcGFyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhYiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJdGVtSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWNrYWdlTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWNrYWdlTWFuYWdlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUGFja2FnZVRvUHJlZmVycmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFBlcm1pc3Npb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQZXJtaXNzaW9uQXN5bmMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcmVmZXJyZWRBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdGNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNldCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbm9uaWNhbFRvQ3VycmVudFBhY2thZ2VOYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1NpZ25hdHVyZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnMSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnMiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1NpZ25hdHVyZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYWNrYWdlUHJlZmVycmVkQWN0aXZpdGllcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3VycmVudFRvQ2Fub25pY2FsUGFja2FnZU5hbWVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlJY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eU5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlJY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eUluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxQZXJtaXNzaW9uR3JvdXBzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25FbmFibGVkU2V0dGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25JY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkxhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudEVuYWJsZWRTZXR0aW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBvbmVudE5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRBY3Rpdml0eUljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBJbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbGxlZEFwcGxpY2F0aW9ucyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVkUGFja2FnZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVyUGFja2FnZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RydW1lbnRhdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uSW5zdHJ1bWVudGF0aW9uSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF1bmNoSW50ZW50Rm9yUGFja2FnZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZUZvclVpZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZUFyY2hpdmVJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmNoaXZlRmlsZVBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZUdpZHMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZXNGb3JVaWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVybWlzc2lvbkdyb3VwSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uR3JvdXBJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZmVycmVkQWN0aXZpdGllcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRGaWx0ZXJzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0QWN0aXZpdGllcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJyZWRQYWNrYWdlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSW5mbyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWNlaXZlckluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXNGb3JBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5TmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXNGb3JBcHBsaWNhdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlc0ZvckFwcGxpY2F0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwUGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtQXZhaWxhYmxlRmVhdHVyZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uRmVhdHVyZUluZm9bXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbVNoYXJlZExpYnJhcnlOYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBJbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhtbCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcEluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3lzdGVtRmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NhZmVNb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5QnJvYWRjYXN0UmVjZWl2ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlDb250ZW50UHJvdmlkZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlByb3ZpZGVySW5mbyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5SW5zdHJ1bWVudGF0aW9uIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLkluc3RydW1lbnRhdGlvbkluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldFBhY2thZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnRlbnRBY3Rpdml0aWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnRlbnRBY3Rpdml0eU9wdGlvbnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWNpZmljcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnRlbnRTZXJ2aWNlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5UGVybWlzc2lvbnNCeUdyb3VwIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25JbmZvJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBhY2thZ2VGcm9tUHJlZmVycmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlQ29udGVudFByb3ZpZGVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlByb3ZpZGVySW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVTZXJ2aWNlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBcHBsaWNhdGlvbkVuYWJsZWRTZXR0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb25lbnRFbmFibGVkU2V0dGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcG9uZW50TmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT01QT05FTlRfRU5BQkxFRF9TVEFURV9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QT05FTlRfRU5BQkxFRF9TVEFURV9ESVNBQkxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUE9ORU5UX0VOQUJMRURfU1RBVEVfRU5BQkxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9OVF9LSUxMX0FQUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9CTFVFVE9PVEgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS5ibHVldG9vdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9DQU1FUkEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS5jYW1lcmEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9DQU1FUkFfQVVUT0ZPQ1VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUuY2FtZXJhLmF1dG9mb2N1cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX0NBTUVSQV9GTEFTSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mbGFzaCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX0xJVkVfV0FMTFBBUEVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc29mdHdhcmUubGl2ZV93YWxscGFwZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9MT0NBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLmxvY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfTE9DQVRJT05fR1BTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUubG9jYXRpb24uZ3BzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfTE9DQVRJT05fTkVUV09SSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLmxvY2F0aW9uLm5ldHdvcmsmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9NSUNST1BIT05FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUubWljcm9waG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX1NFTlNPUl9BQ0NFTEVST01FVEVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUuc2Vuc29yLmFjY2VsZXJvbWV0ZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9TRU5TT1JfQ09NUEFTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnNlbnNvci5jb21wYXNzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfU0VOU09SX0xJR0hUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUuc2Vuc29yLmxpZ2h0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfU0VOU09SX1BST1hJTUlUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnNlbnNvci5wcm94aW1pdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9URUxFUEhPTlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS50ZWxlcGhvbnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9URUxFUEhPTllfQ0RNQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnRlbGVwaG9ueS5jZG1hJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfVEVMRVBIT05ZX0dTTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnRlbGVwaG9ueS5nc20mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9UT1VDSFNDUkVFTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnRvdWNoc2NyZWVuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfVE9VQ0hTQ1JFRU5fTVVMVElUT1VDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnRvdWNoc2NyZWVuLm11bHRpdG91Y2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9UT1VDSFNDUkVFTl9NVUxUSVRPVUNIX0RJU1RJTkNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUudG91Y2hzY3JlZW4ubXVsdGl0b3VjaC5kaXN0aW5jdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX1dJRkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS53aWZpJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9BQ1RJVklUSUVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfQ09ORklHVVJBVElPTlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfRElTQUJMRURfQ09NUE9ORU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfR0lEUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfSU5TVFJVTUVOVEFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VUX0lOVEVOVF9GSUxURVJTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VUX01FVEFfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfUEVSTUlTU0lPTlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9QUk9WSURFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9SRUNFSVZFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9SRVNPTFZFRF9GSUxURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfU0VSVklDRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9TSEFSRURfTElCUkFSWV9GSUxFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VUX1NJR05BVFVSRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfVU5JTlNUQUxMRURfUEFDS0FHRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9VUklfUEVSTUlTU0lPTl9QQVRURVJOUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFUQ0hfREVGQVVMVF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEVSTUlTU0lPTl9ERU5JRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJNSVNTSU9OX0dSQU5URUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9GSVJTVF9OT1RfU0lHTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0lHTkFUVVJFX01BVENIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSUdOQVRVUkVfTkVJVEhFUl9TSUdORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9OT19NQVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0zIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9TRUNPTkRfTk9UX1NJR05FRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9VTktOT1dOX1BBQ0tBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudXRpbC5BbmRyb2lkRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhY2thZ2VTdGF0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhY2thZ2VTdGF0cyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZVN0YXRzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFja2FnZVN0YXRzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlU3RhdHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWNrYWdlU3RhdHMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VTdGF0cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBTdGF0cyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VTdGF0cyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FjaGVTaXplIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2RlU2l6ZSIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGF0YVNpemUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhY2thZ2VOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGF0aFBlcm1pc3Npb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhdGhQZXJtaXNzaW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYXRoUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0aFBlcm1pc3Npb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhdGhQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFJlYWRQZXJtaXNzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcml0ZVBlcm1pc3Npb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGVybWlzc2lvbkdyb3VwSW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBlcm1pc3Npb25Hcm91cEluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9uR3JvdXBJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uR3JvdXBJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlc2NyaXB0aW9uUmVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5vbkxvY2FsaXplZERlc2NyaXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGVybWlzc2lvbkluZm8iCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJdGVtSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9uSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9uSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RFQ1RJT05fREFOR0VST1VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9URUNUSU9OX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVEVDVElPTl9TSUdOQVRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RFQ1RJT05fU0lHTkFUVVJFX09SX1NZU1RFTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY3JpcHRpb25SZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ3JvdXAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5vbkxvY2FsaXplZERlc2NyaXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm90ZWN0aW9uTGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3ZpZGVySW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uQ29tcG9uZW50SW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3ZpZGVySW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUHJvdmlkZXJJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXJJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUHJvdmlkZXJJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXV0aG9yaXR5IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJncmFudFVyaVBlcm1pc3Npb25zIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbml0T3JkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNTeW5jYWJsZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtdWx0aXByb2Nlc3MiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhdGhQZXJtaXNzaW9ucyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGF0aFBlcm1pc3Npb25bXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlYWRQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1cmlQZXJtaXNzaW9uUGF0dGVybnMiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlcltdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id3JpdGVQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb2x2ZUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvbHZlSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWNvblJlc291cmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZpdHlJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWx0ZXIiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNEZWZhdWx0IgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYWJlbFJlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtYXRjaCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJub25Mb2NhbGl6ZWRMYWJlbCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVycmVkT3JkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpb3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVzb2x2ZVBhY2thZ2VOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZXJ2aWNlSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzcGVjaWZpY0luZGV4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXNvbHZlSW5mby5EaXNwbGF5TmFtZUNvbXBhcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29tcGFyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzb2x2ZUluZm8uRGlzcGxheU5hbWVDb21wYXJhdG9yIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mby5EaXNwbGF5TmFtZUNvbXBhcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZXJ2aWNlSW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uQ29tcG9uZW50SW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2aWNlSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2aWNlSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdyIgdHlwZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpZ25hdHVyZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25hdHVyZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2lnbmF0dXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmF0dXJlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25hdHVyZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2lnbmF0dXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9CeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9DaGFycyIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0NoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGlzdGluZ0FycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dExlbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9DaGFyc1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5jb250ZW50LnJlcyIKKz4KKzxjbGFzcyBuYW1lPSJBc3NldEZpbGVEZXNjcmlwdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXNzZXRGaWxlRGVzY3JpcHRvciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRPZmZzZXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlT3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkTGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJjZWxGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRPZmZzZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTktOT1dOX0xFTkdUSCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMUwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFzc2V0RmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvci5BdXRvQ2xvc2VJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXNzZXRGaWxlRGVzY3JpcHRvci5BdXRvQ2xvc2VJbnB1dFN0cmVhbSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFzc2V0RmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NldEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZU91dHB1dFN0cmVhbSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3NldE1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2Nlc3NNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GZCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3Blbk5vbkFzc2V0RmQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5Ob25Bc3NldEZkIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblhtbFJlc291cmNlUGFyc2VyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblhtbFJlc291cmNlUGFyc2VyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX1JBTkRPTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX1NUUkVBTUlORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3NldE1hbmFnZXIuQXNzZXRJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXZhaWxhYmxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBc3NldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcmsiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcmtTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXAiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbG9yU3RhdGVMaXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JTdGF0ZUxpc3QiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlcyIgdHlwZT0iaW50W11bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyb21YbWwiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sb3JGb3JTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGVTZXQiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0Q29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0Q29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGF0ZWZ1bCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoQWxwaGEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbmZpZ3VyYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmZpZ3VyYXRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29uZmlndXJhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoYXQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpZmYiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhhdCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZWROZXdSZXNvdXJjZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZ0NoYW5nZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJlc3RpbmdDaGFuZ2VzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvRGVmYXVsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUZyb20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVJES0VZQk9BUkRISURERU5fTk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBUkRLRVlCT0FSREhJRERFTl9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBUkRLRVlCT0FSREhJRERFTl9ZRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUJPQVJESElEREVOX05PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlCT0FSREhJRERFTl9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUJPQVJESElEREVOX1lFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQk9BUkRfMTJLRVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUJPQVJEX05PS0VZUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQk9BUkRfUVdFUlRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlCT0FSRF9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05ISURERU5fTk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05ISURERU5fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQVZJR0FUSU9OSElEREVOX1lFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFWSUdBVElPTl9EUEFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQVZJR0FUSU9OX05PTkFWIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQVZJR0FUSU9OX1RSQUNLQkFMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFWSUdBVElPTl9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05fV0hFRUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX0xBTkRTQ0FQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJRU5UQVRJT05fUE9SVFJBSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1NRVUFSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJRU5UQVRJT05fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfTE9OR19NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOTEFZT1VUX0xPTkdfTk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfTE9OR19VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTkxBWU9VVF9MT05HX1lFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTkxBWU9VVF9TSVpFX0xBUkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfU0laRV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOTEFZT1VUX1NJWkVfTk9STUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfU0laRV9TTUFMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOTEFZT1VUX1NJWkVfVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT1VDSFNDUkVFTl9GSU5HRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPVUNIU0NSRUVOX05PVE9VQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPVUNIU0NSRUVOX1NUWUxVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9VQ0hTQ1JFRU5fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVSV9NT0RFX05JR0hUX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVSV9NT0RFX05JR0hUX05PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9OSUdIVF9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVJX01PREVfTklHSFRfWUVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9UWVBFX0NBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9UWVBFX0RFU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVJX01PREVfVFlQRV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9UWVBFX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9UWVBFX1VOREVGSU5FRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9udFNjYWxlIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGFyZEtleWJvYXJkSGlkZGVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleWJvYXJkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleWJvYXJkSGlkZGVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxvY2FsZSIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWNjIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1uYyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuYXZpZ2F0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hdmlnYXRpb25IaWRkZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3JpZW50YXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NyZWVuTGF5b3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvdWNoc2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVpTW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZXMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhc3NldHMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmluaXNoUHJlbG9hZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaExheW91dENhY2hlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNzZXRzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldE1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xvclN0YXRlTGlzdCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uZmlndXJhdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaW1lbnNpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaW1lbnNpb25QaXhlbE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaW1lbnNpb25QaXhlbFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU1ldHJpY3MiCisgcmV0dXJuPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYWN0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGJhc2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJZGVudGlmaWVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZQYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludEFycmF5IgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlhtbFJlc291cmNlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vdmllIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5Nb3ZpZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWFudGl0eVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1YW50aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdEFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVhbnRpdHlTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFudGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1YW50aXR5VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1YW50aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VFbnRyeU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VQYWNrYWdlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VUeXBlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXRBcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZ0FycmF5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0QXJyYXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRWYWx1ZSIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVSZWZzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0VmFsdWUiIHR5cGU9ImFuZHJvaWQudXRpbC5UeXBlZFZhbHVlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlUmVmcyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYbWwiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlhtbFJlc291cmNlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RoZW1lIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuVGhlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5BdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXQiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5UeXBlZEFycmF5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5SYXdSZXNvdXJjZSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblJhd1Jlc291cmNlIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImFuZHJvaWQudXRpbC5UeXBlZFZhbHVlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5SYXdSZXNvdXJjZUZkIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQnVuZGxlRXh0cmEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWdOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0QnVuZGxlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUJ1bmRsZUV4dHJhcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0QnVuZGxlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQ29uZmlndXJhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VzLlRoZW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhcHBseVN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yY2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpblN0eWxlZEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlR5cGVkQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5TdHlsZWRBdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluU3R5bGVkQXR0cmlidXRlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlQXR0ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZVJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVBdHRyaWJ1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRWYWx1ZSIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVSZWZzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLlRoZW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR5cGVkQXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmVmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sb3JTdGF0ZUxpc3QiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpbWVuc2lvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGltZW5zaW9uUGl4ZWxPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGltZW5zaW9uUGl4ZWxTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyYXdhYmxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RnJhY3Rpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYmFzZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXhDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXREaW1lbnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0RGltZW5zaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vblJlc291cmNlU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGlvbkRlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dEFycmF5IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0VmFsdWUiIHR5cGU9ImFuZHJvaWQudXRpbC5UeXBlZFZhbHVlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla1ZhbHVlIgorIHJldHVybj0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjeWNsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlhtbFJlc291cmNlUGFyc2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuZGF0YWJhc2UiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RDdXJzb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmRhdGFiYXNlLkNyb3NzUHJvY2Vzc0N1cnNvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RDdXJzb3IiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVja1Bvc2l0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVN0cmluZ1RvQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWFjdGl2YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsV2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2luZG93IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleE9yVGhyb3ciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYXMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcGRhdGVkRmllbGQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbnRzQWxsT25Nb3ZlQ2FsbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvdyIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWZ0ZXJMYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmVmb3JlRmlyc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDbG9zZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmllbGRVcGRhdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb0ZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb0xhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9Qb3NpdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9QcmV2aW91cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNoYW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGZDaGFuZ2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Nb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckNvbnRlbnRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNwb25kIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Tm90aWZpY2F0aW9uVXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vdGlmeVVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Im1DbG9zZWQiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1Db250ZW50UmVzb2x2ZXIiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1DdXJyZW50Um93SUQiCisgdHlwZT0iamF2YS5sYW5nLkxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtUG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1Sb3dJZENvbHVtbkluZGV4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1VcGRhdGVkUm93cyIKKyB0eXBlPSJqYXZhLnV0aWwuSGFzaE1hcCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdEN1cnNvci5TZWxmQ29udGVudE9ic2VydmVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdEN1cnNvci5TZWxmQ29udGVudE9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQWJzdHJhY3RDdXJzb3IuU2VsZkNvbnRlbnRPYnNlcnZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0V2luZG93ZWRDdXJzb3IiCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RXaW5kb3dlZEN1cnNvciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkFic3RyYWN0V2luZG93ZWRDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNXaW5kb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmxvYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGbG9hdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb25nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3ciIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ibVdpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyQXJyYXlCdWZmZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hhckFycmF5QnVmZmVyIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ2hhckFycmF5QnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQXJyYXlCdWZmZXIiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DaGFyQXJyYXlCdWZmZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iZGF0YSIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaXplQ29waWVkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50T2JzZXJ2YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLk9ic2VydmFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50T2JzZXJ2YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZkNoYW5nZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxmQ2hhbmdlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyT2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudE9ic2VydmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRlbnRPYnNlcnZlciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlbGl2ZXJTZWxmTm90aWZpY2F0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGZDaGFuZ2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxmQ2hhbmdlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDcm9zc1Byb2Nlc3NDdXJzb3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJmaWxsV2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lub3ciIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvdyIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Nb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ3Vyc29yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVN0cmluZ1RvQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlYWN0aXZhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmxvYiIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbkNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleE9yVGhyb3ciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbk5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbnRzQWxsT25Nb3ZlQ2FsbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBZnRlckxhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCZWZvcmVGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvRmlyc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9OZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb1Bvc2l0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb1ByZXZpb3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyQ29udGVudE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3BvbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5vdGlmaWNhdGlvblVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyRGF0YVNldE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhU2V0T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkN1cnNvckluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDdXJzb3JJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29ySW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvckluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3Vyc29ySm9pbmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkl0ZXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29ySm9pbmVyIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySm9pbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yTGVmdCIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVzTGVmdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3JSaWdodCIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVzUmlnaHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imhhc05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2FuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySm9pbmVyLlJlc3VsdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySm9pbmVyLlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkN1cnNvckpvaW5lci5SZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvckpvaW5lci5SZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvckpvaW5lci5SZXN1bHRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3Vyc29yV2luZG93IgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUNsb3NhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkN1cnNvcldpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsV2luZG93IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWxsb2NSb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVN0cmluZ1RvQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlZUxhc3RSb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJsb2IiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1Sb3dzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGFydFBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Jsb2IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGbG9hdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0Zyb21QYXJjZWwiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFsbFJlZmVyZW5jZXNSZWxlYXNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QmxvYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXREb3VibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TnVsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bUNvbHVtbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OdW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFydFBvc2l0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3Vyc29yV3JhcHBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29yV3JhcHBlciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldyYXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHlTdHJpbmdUb0J1ZmZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVhY3RpdmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmxvYiIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleE9yVGhyb3ciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmFzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbnRzQWxsT25Nb3ZlQ2FsbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWZ0ZXJMYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JlZm9yZUZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9GaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvUG9zaXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb1ByZXZpb3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckNvbnRlbnRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNwb25kIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Tm90aWZpY2F0aW9uVXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhU2V0T2JzZXJ2YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLk9ic2VydmFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhU2V0T2JzZXJ2YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUludmFsaWRhdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhU2V0T2JzZXJ2ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YVNldE9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25JbnZhbGlkYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0YWJhc2VVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YWJhc2VVdGlscyIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFiYXNlVXRpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kRXNjYXBlZFNRTFN0cmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcWxTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kVmFsdWVUb1NxbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kT2JqZWN0VG9Qcm9ncmFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVQcm9ncmFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVEYkZyb21TcWxTdGF0ZW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYlZlcnNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsU3RhdGVtZW50cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JEb3VibGVUb0NvbnRlbnRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yRG91YmxlVG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yRG91YmxlVG9DdXJzb3JWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnNvckZsb2F0VG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29ySW50VG9Db250ZW50VmFsdWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JJbnRUb0NvbnRlbnRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29ySW50VG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yTG9uZ1RvQ29udGVudFZhbHVlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yTG9uZ1RvQ29udGVudFZhbHVlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JMb25nVG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yUm93VG9Db250ZW50VmFsdWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnNvclNob3J0VG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yU3RyaW5nVG9Db250ZW50VmFsdWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JTdHJpbmdUb0NvbnRlbnRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yU3RyaW5nVG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yU3RyaW5nVG9JbnNlcnRIZWxwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnNlcnRlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhYmFzZVV0aWxzLkluc2VydEhlbHBlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wQ3VycmVudFJvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wQ3VycmVudFJvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLlByaW50U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXBDdXJyZW50Um93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcEN1cnJlbnRSb3dUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wQ3Vyc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXBDdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wQ3Vyc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcEN1cnNvclRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbGxhdGlvbktleSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZXhDb2xsYXRpb25LZXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ0ZvclF1ZXJ5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYiIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ0ZvclF1ZXJ5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVTdGF0ZW1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeU51bUVudHJpZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEV4Y2VwdGlvbkZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwbHkiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRFeGNlcHRpb25XaXRoRmlsZU5vdEZvdW5kRXhjZXB0aW9uRnJvbVBhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwbHkiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRFeGNlcHRpb25XaXRoT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb25Gcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXBseSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3FsRXNjYXBlU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdHJpbmdGb3JRdWVyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmluZ0ZvclF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVTdGF0ZW1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUV4Y2VwdGlvblRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGx5IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhYmFzZVV0aWxzLkluc2VydEhlbHBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhYmFzZVV0aWxzLkluc2VydEhlbHBlciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFiYXNlVXRpbHMuSW5zZXJ0SGVscGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVGb3JJbnNlcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVGb3JSZXBsYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlRBQkxFX0lORk9fUFJBR01BX0RFRkFVTFRfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYXRyaXhDdXJzb3IiCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hdHJpeEN1cnNvciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLk1hdHJpeEN1cnNvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYXRyaXhDdXJzb3IiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5NYXRyaXhDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uVmFsdWVzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uVmFsdWVzIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdSb3ciCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLk1hdHJpeEN1cnNvci5Sb3dCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hdHJpeEN1cnNvci5Sb3dCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5NYXRyaXhDdXJzb3IuUm93QnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uVmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVyZ2VDdXJzb3IiCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lcmdlQ3Vyc29yIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuTWVyZ2VDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3JzIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcltdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPYnNlcnZhYmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9ic2VydmFibGUiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5PYnNlcnZhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyT2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyQWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyT2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Im1PYnNlcnZlcnMiCisgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhbGVEYXRhRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhbGVEYXRhRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuU3RhbGVEYXRhRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhbGVEYXRhRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuU3RhbGVEYXRhRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlIgorPgorPGNsYXNzIG5hbWU9IlNRTGl0ZUFib3J0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUFib3J0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUFib3J0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlQWJvcnRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlQWJvcnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZUNsb3NhYmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUNsb3NhYmxlIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUNsb3NhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmVSZWZlcmVuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWxsUmVmZXJlbmNlc1JlbGVhc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWxsUmVmZXJlbmNlc1JlbGVhc2VkRnJvbUNvbnRhaW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZVJlZmVyZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZVJlZmVyZW5jZUZyb21Db250YWluZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZUNvbnN0cmFpbnRFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlQ29uc3RyYWludEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDb25zdHJhaW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlQ29uc3RyYWludEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDb25zdHJhaW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTUUxpdGVDdXJzb3IiCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdFdpbmRvd2VkQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlQ3Vyc29yIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUN1cnNvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJpdmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDdXJzb3JEcml2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVkaXRUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZVF1ZXJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2UiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb25Bcmd1bWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNRTGl0ZUN1cnNvckRyaXZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImN1cnNvckNsb3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JEZWFjdGl2YXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JSZXF1ZXJpZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaW5kQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJpbmRBcmd1bWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpbmRBcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNRTGl0ZURhdGFiYXNlIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUNsb3NhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJlZ2luVHJhbnNhY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZ2luVHJhbnNhY3Rpb25XaXRoTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc2FjdGlvbkxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVUcmFuc2FjdGlvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21waWxlU3RhdGVtZW50IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlU3RhdGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZUNsYXVzZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmVBcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kVHJhbnNhY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWNTUUwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY1NRTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmluZEFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kRWRpdFRhYmxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bVNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhZ2VTaXplIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5bmNlZFRhYmxlcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpblRyYW5zYWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVsbENvbHVtbkhhY2siIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0T3JUaHJvdyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudWxsQ29sdW1uSGFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnRXaXRoT25Db25mbGljdCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudWxsQ29sdW1uSGFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZsaWN0QWxnb3JpdGhtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEYkxvY2tlZEJ5Q3VycmVudFRocmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEYkxvY2tlZEJ5T3RoZXJUaHJlYWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcmtUYWJsZVN5bmNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGV0ZWRUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrVGFibGVTeW5jYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JlaWduS2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cGRhdGVUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZWVkVXBncmFkZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZlcnNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFsbFJlZmVyZW5jZXNSZWxlYXNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkRhdGFiYXNlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3JDcmVhdGVEYXRhYmFzZSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3JDcmVhdGVEYXRhYmFzZSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlLkN1cnNvckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGluY3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYXZpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbWl0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYXZpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhdmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXJCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlXaXRoRmFjdG9yeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3JGYWN0b3J5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0aW5jdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhdmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXJCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmF3UXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmF3UXVlcnlXaXRoRmFjdG9yeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3JGYWN0b3J5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdFRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VNZW1vcnkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVsbENvbHVtbkhhY2siIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxWYWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VPclRocm93IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bGxDb2x1bW5IYWNrIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9ja2luZ0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NraW5nRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhpbXVtU2l6ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUJ5dGVzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhZ2VTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtQnl0ZXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHJhbnNhY3Rpb25TdWNjZXNzZnVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlQ2xhdXNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZUFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVXaXRoT25Db25mbGljdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlQ2xhdXNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZUFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmxpY3RBbGdvcml0aG0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ5aWVsZElmQ29udGVuZGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InlpZWxkSWZDb250ZW5kZWRTYWZlbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InlpZWxkSWZDb250ZW5kZWRTYWZlbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzbGVlcEFmdGVyWWllbGREZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTkZMSUNUX0FCT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GTElDVF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GTElDVF9JR05PUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZMSUNUX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZMSUNUX1JFUExBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZMSUNUX1JPTExCQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDUkVBVEVfSUZfTkVDRVNTQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4NDM1NDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX0xPQ0FMSVpFRF9DT0xMQVRPUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUEVOX1JFQURPTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUEVOX1JFQURXUklURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1FMSVRFX01BWF9MSUtFX1BBVFRFUk5fTEVOR1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdDdXJzb3IiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYiIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc3RlclF1ZXJ5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDdXJzb3JEcml2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVkaXRUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZVF1ZXJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTUUxpdGVEYXRhYmFzZUNvcnJ1cHRFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlRGF0YWJhc2VDb3JydXB0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlQ29ycnVwdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZURhdGFiYXNlQ29ycnVwdEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZUNvcnJ1cHRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZURpc2tJT0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVEaXNrSU9FeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGlza0lPRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlRGlza0lPRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURpc2tJT0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1FMaXRlRG9uZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVEb25lRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURvbmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVEb25lRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURvbmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTUUxpdGVGdWxsRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUZ1bGxFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRnVsbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUZ1bGxFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRnVsbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1FMaXRlTWlzdXNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZU1pc3VzZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVNaXN1c2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVNaXN1c2VFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlTWlzdXNlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTUUxpdGVPcGVuSGVscGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZU9wZW5IZWxwZXIiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlT3BlbkhlbHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFkYWJsZURhdGFiYXNlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcml0YWJsZURhdGFiYXNlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uT3BlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVwZ3JhZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkVmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1FMaXRlUHJvZ3JhbSIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDbG9zYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJpbmRCbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kRG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kTG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kU3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJCaW5kaW5ncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yY2VDb21waWxhdGlvbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVbmlxdWVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hdGl2ZV9iaW5kX2Jsb2IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuYXRpdmVfYmluZF9kb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuYXRpdmVfYmluZF9sb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hdGl2ZV9iaW5kX251bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuYXRpdmVfYmluZF9zdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmF0aXZlX2NvbXBpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmF0aXZlX2ZpbmFsaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFsbFJlZmVyZW5jZXNSZWxlYXNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtRGF0YWJhc2UiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5IYW5kbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuU3RhdGVtZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZVF1ZXJ5IgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZVByb2dyYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1FMaXRlUXVlcnlCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVRdWVyeUJ1aWxkZXIiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlUXVlcnlCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZENvbHVtbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kV2hlcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbldoZXJlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZFdoZXJlRXNjYXBlU3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5XaGVyZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJidWlsZFF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbkluIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYXZpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVpbGRRdWVyeVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGluY3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGF2aW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlckJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJidWlsZFVuaW9uUXVlcnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJRdWVyaWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVpbGRVbmlvblN1YlF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZURpc2NyaW1pbmF0b3JDb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaW9uQ29sdW1ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zUHJlc2VudEluVGFibGUiIHR5cGU9ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXB1dGVkQ29sdW1uc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlRGlzY3JpbWluYXRvclZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGF2aW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYmxlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uSW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhdmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ydE9yZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbkluIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYXZpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3Vyc29yRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlLkN1cnNvckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzdGluY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0aW5jdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9qZWN0aW9uTWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhYmxlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluVGFibGVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZVN0YXRlbWVudCIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVQcm9ncmFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGVJbnNlcnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpbXBsZVF1ZXJ5Rm9yTG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2ltcGxlUXVlcnlGb3JTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTUUxpdGVUcmFuc2FjdGlvbkxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25CZWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbW1pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJvbGxiYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuZ2VzdHVyZSIKKz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VzdHVyZSIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRTdHJva2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJva2UiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlU3Ryb2tlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kaW5nQm94IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJRCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3Ryb2tlcyIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVTdHJva2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cm9rZXNDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpdG1hcCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRnZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1TYW1wbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpdG1hcCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1BhdGgiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9QYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9QYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRnZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1TYW1wbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1BhdGgiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVkZ2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtU2FtcGxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlTGlicmFyaWVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmcm9tRmlsZSIKKyByZXR1cm49ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlTGlicmFyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyb21GaWxlIgorIHJldHVybj0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVMaWJyYXJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmcm9tUHJpdmF0ZUZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZUxpYnJhcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVJhd1Jlc291cmNlIgorIHJldHVybj0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVMaWJyYXJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR2VzdHVyZUxpYnJhcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VzdHVyZUxpYnJhcnkiCisgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVMaWJyYXJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEdlc3R1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmUiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVFbnRyaWVzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlcyIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZW50YXRpb25TdHlsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXF1ZW5jZVR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZWFkT25seSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNvZ25pemUiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2FuZHJvaWQuZ2VzdHVyZS5QcmVkaWN0aW9uJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VzdHVyZSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlR2VzdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VzdHVyZSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcmllbnRhdGlvblN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXF1ZW5jZVR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtU3RvcmUiCisgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVTdG9yZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikdlc3R1cmVPdmVybGF5VmlldyIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVPdmVybGF5VmlldyIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVPdmVybGF5VmlldyIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlT3ZlcmxheVZpZXciCisgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVPdmVybGF5VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZE9uR2VzdHVyZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXcuT25HZXN0dXJlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkT25HZXN0dXJlUGVyZm9ybWVkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVPdmVybGF5Vmlldy5Pbkdlc3R1cmVQZXJmb3JtZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPbkdlc3R1cmluZ0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXcuT25HZXN0dXJpbmdMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxDbGVhckFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsR2VzdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50U3Ryb2tlIgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmdlc3R1cmUuR2VzdHVyZVBvaW50Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGYWRlT2Zmc2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlIgorIHJldHVybj0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VzdHVyZUNvbG9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVQYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVQYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VzdHVyZVN0cm9rZUFuZ2xlVGhyZXNob2xkIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VzdHVyZVN0cm9rZUxlbmd0aFRocmVzaG9sZCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVTdHJva2VTcXVhcmVuZXNzVHJlc2hvbGQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlU3Ryb2tlVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlU3Ryb2tlV2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmllbnRhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVbmNlcnRhaW5HZXN0dXJlQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFdmVudHNJbnRlcmNlcHRpb25FbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZhZGVFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0dlc3R1cmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0dlc3R1cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsT25HZXN0dXJlTGlzdGVuZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxPbkdlc3R1cmVQZXJmb3JtZWRMaXN0ZW5lcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbE9uR2VzdHVyaW5nTGlzdGVuZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVPbkdlc3R1cmVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Lk9uR2VzdHVyZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU9uR2VzdHVyZVBlcmZvcm1lZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXcuT25HZXN0dXJlUGVyZm9ybWVkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlT25HZXN0dXJpbmdMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Lk9uR2VzdHVyaW5nTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXZlbnRzSW50ZXJjZXB0aW9uRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmFkZUVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWRlRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGYWRlT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFkZU9mZnNldCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHZXN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VzdHVyZSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R2VzdHVyZUNvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHZXN0dXJlU3Ryb2tlQW5nbGVUaHJlc2hvbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlU3Ryb2tlQW5nbGVUaHJlc2hvbGQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdlc3R1cmVTdHJva2VMZW5ndGhUaHJlc2hvbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlU3Ryb2tlTGVuZ3RoVGhyZXNob2xkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHZXN0dXJlU3Ryb2tlU3F1YXJlbmVzc1RyZXNob2xkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VzdHVyZVN0cm9rZVNxdWFyZW5lc3NUcmVzaG9sZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R2VzdHVyZVN0cm9rZVR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlU3Ryb2tlVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdlc3R1cmVTdHJva2VXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmVTdHJva2VXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R2VzdHVyZVZpc2libGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9yaWVudGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZW50YXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVbmNlcnRhaW5HZXN0dXJlQ29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0VTVFVSRV9TVFJPS0VfVFlQRV9NVUxUSVBMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VTVFVSRV9TVFJPS0VfVFlQRV9TSU5HTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX0hPUklaT05UQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikdlc3R1cmVPdmVybGF5Vmlldy5Pbkdlc3R1cmVMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25HZXN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmVybGF5IiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR2VzdHVyZUNhbmNlbGxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZlcmxheSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVPdmVybGF5VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdlc3R1cmVFbmRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZlcmxheSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVPdmVybGF5VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdlc3R1cmVTdGFydGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmVybGF5IiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR2VzdHVyZU92ZXJsYXlWaWV3Lk9uR2VzdHVyZVBlcmZvcm1lZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkdlc3R1cmVQZXJmb3JtZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im92ZXJsYXkiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmUiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR2VzdHVyZU92ZXJsYXlWaWV3Lk9uR2VzdHVyaW5nTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uR2VzdHVyaW5nRW5kZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im92ZXJsYXkiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXN0dXJpbmdTdGFydGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmVybGF5IiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlUG9pbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVQb2ludCIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZVBvaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0idGltZXN0YW1wIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IngiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InkiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlU3RvcmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVTdG9yZSIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZVN0b3JlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEdlc3R1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmUiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVFbnRyaWVzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlcyIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZW50YXRpb25TdHlsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXF1ZW5jZVR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ2hhbmdlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xvc2VTdHJlYW0iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY29nbml6ZSIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLlByZWRpY3Rpb24mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVHZXN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsb3NlU3RyZWFtIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcmllbnRhdGlvblN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXF1ZW5jZVR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9JTlZBUklBTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1NFTlNJVElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VRVUVOQ0VfSU5WQVJJQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVFVRU5DRV9TRU5TSVRJVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlU3Ryb2tlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlU3Ryb2tlIgorIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlU3Ryb2tlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRzIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2FuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlUG9pbnQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZU9yaWVudGVkQm91bmRpbmdCb3giCisgcmV0dXJuPSJhbmRyb2lkLmdlc3R1cmUuT3JpZW50ZWRCb3VuZGluZ0JveCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUGF0aCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1TYW1wbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJvdW5kaW5nQm94IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imxlbmd0aCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9pbnRzIgorIHR5cGU9ImZsb2F0W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVPcmllbnRlZEJvdW5kaW5nQm94IgorIHJldHVybj0iYW5kcm9pZC5nZXN0dXJlLk9yaWVudGVkQm91bmRpbmdCb3giCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luYWxQb2ludHMiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVQb2ludCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZU9yaWVudGVkQm91bmRpbmdCb3giCisgcmV0dXJuPSJhbmRyb2lkLmdlc3R1cmUuT3JpZW50ZWRCb3VuZGluZ0JveCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW5hbFBvaW50cyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzcGF0aWFsU2FtcGxpbmciCisgcmV0dXJuPSJmbG9hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmUiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXBTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BhdGlhbFNhbXBsaW5nIgorIHJldHVybj0iZmxvYXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZWVwQXNwZWN0UmF0aW8iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVtcG9yYWxTYW1wbGluZyIKKyByZXR1cm49ImZsb2F0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3Ryb2tlIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZVN0cm9rZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtUG9pbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT3JpZW50ZWRCb3VuZGluZ0JveCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iY2VudGVyWCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyWSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVpZ2h0IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmllbnRhdGlvbiIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3F1YXJlbmVzcyIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2lkdGgiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmVkaWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJuYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjb3JlIgorIHR5cGU9ImRvdWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MiCis+Cis8Y2xhc3MgbmFtZT0iQXZvaWRYZmVybW9kZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlhmZXJtb2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXZvaWRYZmVybW9kZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkF2b2lkWGZlcm1vZGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcENvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvbGVyYW5jZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkF2b2lkWGZlcm1vZGUuTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF2b2lkWGZlcm1vZGUuTW9kZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQXZvaWRYZmVybW9kZS5Nb2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5Bdm9pZFhmZXJtb2RlLk1vZGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY29tcHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwLkNvbXByZXNzRm9ybWF0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwLkNvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNNdXRhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHlQaXhlbHNGcm9tQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVBpeGVsc1RvQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQml0bWFwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVCaXRtYXAiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQml0bWFwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUJpdG1hcCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwLkNvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVCaXRtYXAiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwLkNvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVCaXRtYXAiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcC5Db25maWciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU2NhbGVkQml0bWFwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0V2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0SGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVyYXNlQ29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0cmFjdEFscGhhIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0cmFjdEFscGhhIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXRYWSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uZmlnIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAuQ29uZmlnIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVuc2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROaW5lUGF0Y2hDaHVuayIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQaXhlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGl4ZWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um93Qnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXREZW5zaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0RGVuc2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQWxwaGEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNdXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVjeWNsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlcGFyZVRvRHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjeWNsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVuc2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbnNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQaXhlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBpeGVscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVscyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVOU0lUWV9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwLkNvbXByZXNzRm9ybWF0IgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAuQ29tcHJlc3NGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcC5Db21wcmVzc0Zvcm1hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCaXRtYXAuQ29uZmlnIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAuQ29uZmlnIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAuQ29uZmlnW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJpdG1hcEZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcEZhY3RvcnkiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUJ5dGVBcnJheSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVCeXRlQXJyYXkiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVGaWxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeS5PcHRpb25zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRQYWRkaW5nIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeS5PcHRpb25zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUZpbGVEZXNjcmlwdG9yIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlUmVzb3VyY2UiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVSZXNvdXJjZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlUmVzb3VyY2VTdHJlYW0iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0cyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5Lk9wdGlvbnMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlU3RyZWFtIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0cyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5Lk9wdGlvbnMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlU3RyZWFtIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwRmFjdG9yeS5PcHRpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcEZhY3RvcnkuT3B0aW9ucyIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Q2FuY2VsRGVjb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImluRGVuc2l0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbkRpdGhlciIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5JbnB1dFNoYXJlYWJsZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5KdXN0RGVjb2RlQm91bmRzIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpblByZWZlcnJlZENvbmZpZyIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcC5Db25maWciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpblB1cmdlYWJsZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5TYW1wbGVTaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluU2NhbGVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpblNjcmVlbkRlbnNpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5UYXJnZXREZW5zaXR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluVGVtcFN0b3JhZ2UiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibUNhbmNlbCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3V0SGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im91dE1pbWVUeXBlIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdXRXaWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwU2hhZGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQml0bWFwU2hhZGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwU2hhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGlsZVgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyLlRpbGVNb2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aWxlWSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCbHVyTWFza0ZpbHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLk1hc2tGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCbHVyTWFza0ZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJsdXJNYXNrRmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQmx1ck1hc2tGaWx0ZXIuQmx1ciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJsdXJNYXNrRmlsdGVyLkJsdXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJsdXJNYXNrRmlsdGVyLkJsdXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJsdXJNYXNrRmlsdGVyLkJsdXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYW1lcmEiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW1lcmEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwbHlUb0NhbnZhcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG90V2l0aE5vcm1hbCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0cml4IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvdGF0ZVgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlWSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVnIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGVaIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWciIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJhbnNsYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNhbnZhcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FudmFzIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FudmFzIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FudmFzIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xpcFBhdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbi5PcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGlwUGF0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGlwUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbi5PcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGlwUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3AiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uLk9wIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsaXBSZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsaXBSZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xpcFJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3AiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xpcFJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xpcFJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsaXBSZWdpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3AiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xpcFJlZ2lvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29uY2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0cml4IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3QVJHQiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3QXJjIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZhbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN3ZWVwQW5nbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VDZW50ZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0JpdG1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc0FscGhhIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Qml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc0FscGhhIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Qml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0cml4IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0JpdG1hcE1lc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNoV2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzaEhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0cyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVydE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvck9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Q2lyY2xlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0NvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmLk1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0xpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydFgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydFkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdG9wWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0b3BZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0xpbmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3TGluZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdPdmFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZhbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1BhaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1BhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdQaWN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGljdHVyZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaWN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdQaWN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGljdHVyZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaWN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1BpY3R1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaWN0dXJlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdQb2ludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UG9pbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UG9pbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHRzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UG9zVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UG9zVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1JHQiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1JlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1JlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Um91bmRSZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1RleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3VGV4dE9uUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoT2Zmc2V0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idk9mZnNldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdUZXh0T25QYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoT2Zmc2V0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idk9mZnNldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdWZXJ0aWNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzLlZlcnRleE1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRleENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvck9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRpY2VzIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyZWVHbENhY2hlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGlwQm91bmRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xpcEJvdW5kcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlbnNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd0ZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuRHJhd0ZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHTCIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1hdHJpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN0bSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0cml4IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTYXZlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BhcXVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aWNrUmVqZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMuRWRnZVR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVpY2tSZWplY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzLkVkZ2VUeXBlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aWNrUmVqZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMuRWRnZVR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0b3JlVG9Db3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzYXZlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlTGF5ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdW5kcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVMYXllciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVMYXllckFscGhhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJib3VuZHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVMYXllckFscGhhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYXZlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlbnNpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZW5zaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJhd0ZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5EcmF3RmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1hdHJpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld3BvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2V3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2xhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUxMX1NBVkVfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMSVBfU0FWRV9GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDTElQX1RPX0xBWUVSX1NBVkVfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZVTExfQ09MT1JfTEFZRVJfU0FWRV9GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVNfQUxQSEFfTEFZRVJfU0FWRV9GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRSSVhfU0FWRV9GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2FudmFzLkVkZ2VUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMuRWRnZVR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcy5FZGdlVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDYW52YXMuVmVydGV4TW9kZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzLlZlcnRleE1vZGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcy5WZXJ0ZXhNb2RlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xvciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IkhTVlRvQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaHN2IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IkhTVlRvQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaHN2IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IlJHQlRvSFNWIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoc3YiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWxwaGEiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcmdiIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbG9yVG9IU1YiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhzdiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncmVlbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmdiIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCTEFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xNjc3NzIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTE2Nzc2OTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNZQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTY3MTE2ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREtHUkFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEyMzAzMjkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNzgyOTM2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUkVFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xNjcxMTkzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMVEdSQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMzM1NTQ0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQUdFTlRBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTY1MjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii02NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU1BBUkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0hJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZRUxMT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xvckZpbHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JGaWx0ZXIiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xvck1hdHJpeCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JNYXRyaXgiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbG9yTWF0cml4IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXgiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbG9yTWF0cml4IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXgiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBcnJheSIKKyByZXR1cm49ImZsb2F0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0Q29uY2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zdG1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVDb25jYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVtYXRyaXgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29uY2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0QSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0QiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSR0IyWVVWIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSb3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJheGlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNhdHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzYXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjYWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iclNjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ1NjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYlNjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYVNjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRZVVYyUkdCIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xvck1hdHJpeENvbG9yRmlsdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xvck1hdHJpeENvbG9yRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXhDb2xvckZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JNYXRyaXhDb2xvckZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yTWF0cml4Q29sb3JGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbXBvc2VQYXRoRWZmZWN0IgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbXBvc2VQYXRoRWZmZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29tcG9zZVBhdGhFZmZlY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRlcnBlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlubmVycGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbXBvc2VTaGFkZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb3NlU2hhZGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29tcG9zZVNoYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlckEiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXJCIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcG9zZVNoYWRlciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbXBvc2VTaGFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXJBIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyQiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZi5Nb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29ybmVyUGF0aEVmZmVjdCIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb3JuZXJQYXRoRWZmZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29ybmVyUGF0aEVmZmVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXNoUGF0aEVmZmVjdCIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXNoUGF0aEVmZmVjdCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkRhc2hQYXRoRWZmZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJ2YWxzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaGFzZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaXNjcmV0ZVBhdGhFZmZlY3QiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRWZmZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlzY3JldGVQYXRoRWZmZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuRGlzY3JldGVQYXRoRWZmZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VnbWVudExlbmd0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRldmlhdGlvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEcmF3RmlsdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcmF3RmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuRHJhd0ZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFbWJvc3NNYXNrRmlsdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuTWFza0ZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVtYm9zc01hc2tGaWx0ZXIiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5FbWJvc3NNYXNrRmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbWJpZW50IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlY3VsYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVyUmFkaXVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkltYWdlRm9ybWF0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZUZvcm1hdCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkltYWdlRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJpdHNQZXJQaXhlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkpQRUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlYxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5WMjEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSR0JfNTY1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZVVkyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVycG9sYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5JbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEtleUZyYW1lQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZXlGcmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleUZyYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsZW5kIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlcGVhdE1pcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlycm9yIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRpbWVUb1ZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yLlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRpbWVUb1ZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yLlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50ZXJwb2xhdG9yLlJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yLlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yLlJlc3VsdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMYXllclJhc3Rlcml6ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5SYXN0ZXJpemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5ZXJSYXN0ZXJpemVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTGF5ZXJSYXN0ZXJpemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZExheWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZExheWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGlnaHRpbmdDb2xvckZpbHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlnaHRpbmdDb2xvckZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkxpZ2h0aW5nQ29sb3JGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtdWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5lYXJHcmFkaWVudCIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckdyYWRpZW50IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTGluZWFyR3JhZGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4MCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkwIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9ycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9ucyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGlsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckdyYWRpZW50IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTGluZWFyR3JhZGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4MCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkwIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yMCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcjEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGlsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYXNrRmlsdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYXNrRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWFza0ZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYXRyaXgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hdHJpeCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hdHJpeCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52ZXJ0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW52ZXJzZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJZGVudGl0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwUG9pbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3RJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY0luZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXBQb2ludHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXBQb2ludHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwUmFkaXVzIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcFJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcFZlY3RvcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdEluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVjdG9yQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXBWZWN0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwVmVjdG9ycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlY3MiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdENvbmNhdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0Um90YXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVncmVlcyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc3RSb3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0U2NhbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdFNjYWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdFNrZXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJreCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imt5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdFNrZXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJreCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imt5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0VHJhbnNsYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlQ29uY2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZVJvdGF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVSb3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVTY2FsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVTY2FsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZVNrZXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJreCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imt5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlU2tldyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imt4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZVRyYW5zbGF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY3RTdGF5c1JlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbmNhdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb2x5VG9Qb2x5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmNJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdEluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWN0VG9SZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXguU2NhbGVUb0ZpdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSb3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Um90YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVncmVlcyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaW5Db3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaW5WYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvc1ZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2luQ29zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2luVmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3NWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2tldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imt4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTa2V3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia3giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJreSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHJhbnNsYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmFsdWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU2hvcnRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTVBFUlNQXzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1QRVJTUF8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNUEVSU1BfMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVNDQUxFX1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1TQ0FMRV9ZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNU0tFV19YIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNU0tFV19ZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNVFJBTlNfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVRSQU5TX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYXRyaXguU2NhbGVUb0ZpdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4LlNjYWxlVG9GaXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeC5TY2FsZVRvRml0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1vdmllIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZGVjb2RlQnl0ZUFycmF5IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5Nb3ZpZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLk1vdmllIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGhOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZVN0cmVhbSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuTW92aWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVyYXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wYXF1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWxhdGl2ZU1pbGxpc2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmluZVBhdGNoIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOaW5lUGF0Y2giCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5OaW5lUGF0Y2giCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaHVuayIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZW5zaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc3BhcmVudFJlZ2lvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQWxwaGEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOaW5lUGF0Y2hDaHVuayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaHVuayIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWludCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFpbnQiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhaW50IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWludCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc2NlbnQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJyZWFrVGV4dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVkV2lkdGgiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnJlYWtUZXh0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZUZvcndhcmRzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVkV2lkdGgiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnJlYWtUZXh0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZWFzdXJlRm9yd2FyZHMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFdpZHRoIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZWRXaWR0aCIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclNoYWRvd0xheWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjZW50IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbHBoYSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbG9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGxQYXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsYWdzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9udE1ldHJpY3MiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvbnRNZXRyaWNzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb250TWV0cmljc0ludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbWkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuRm9udE1ldHJpY3NJbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9udE1ldHJpY3NJbnQiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzSW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvbnRTcGFjaW5nIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFza0ZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuTWFza0ZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoRWZmZWN0IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRWZmZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhc3Rlcml6ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlJhc3Rlcml6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hhZGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3Ryb2tlQ2FwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5DYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3Ryb2tlSm9pbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuSm9pbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJva2VNaXRlciIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3Ryb2tlV2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0eWxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5TdHlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0QWxpZ24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkFsaWduIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRCb3VuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dEJvdW5kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dFBhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRQYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRTY2FsZVgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRTaXplIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0U2tld1giCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRXaWR0aHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGhzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRXaWR0aHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dFdpZHRocyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRocyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0V2lkdGhzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZWZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhmZXJtb2RlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FudGlBbGlhcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RpdGhlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Zha2VCb2xkVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpbHRlckJpdG1hcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xpbmVhclRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdHJpa2VUaHJ1VGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N1YnBpeGVsVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VuZGVybGluZVRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWVhc3VyZVRleHQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lYXN1cmVUZXh0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lYXN1cmVUZXh0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWVhc3VyZVRleHQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBUkdCIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW50aUFsaWFzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhYSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaXRoZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpdGhlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGYWtlQm9sZFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZha2VCb2xkVGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWx0ZXJCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGbGFncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lYXJUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lYXJUZXh0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1hc2tGaWx0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLk1hc2tGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2tmaWx0ZXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWFza0ZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXRoRWZmZWN0IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRWZmZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlZmZlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSYXN0ZXJpemVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SYXN0ZXJpemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYXN0ZXJpemVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhc3Rlcml6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hhZGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hhZG93TGF5ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmlrZVRocnVUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpa2VUaHJ1VGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJva2VDYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuQ2FwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cm9rZUpvaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJqb2luIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkpvaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3Ryb2tlTWl0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pdGVyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJva2VXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuU3R5bGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VicGl4ZWxUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJwaXhlbFRleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dEFsaWduIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuQWxpZ24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dFNjYWxlWCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGVYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dFNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRTa2V3WCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2tld1giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFR5cGVmYWNlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZWZhY2UiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VW5kZXJsaW5lVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5kZXJsaW5lVGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYZmVybW9kZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuWGZlcm1vZGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhmZXJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlhmZXJtb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQU5USV9BTElBU19GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVZfS0VSTl9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElUSEVSX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZBS0VfQk9MRF9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSUxURVJfQklUTUFQX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJTkVBUl9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVFJJS0VfVEhSVV9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUJQSVhFTF9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJMSU5FX1RFWFRfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhaW50LkFsaWduIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5BbGlnbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuQWxpZ25bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFpbnQuQ2FwIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5DYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkNhcFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWludC5Gb250TWV0cmljcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWludC5Gb250TWV0cmljcyIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iYXNjZW50IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYm90dG9tIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY2VudCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxlYWRpbmciCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b3AiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFpbnQuRm9udE1ldHJpY3NJbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFpbnQuRm9udE1ldHJpY3NJbnQiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljc0ludCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImFzY2VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY2VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWFkaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFpbnQuSm9pbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuSm9pbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuSm9pbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWludC5TdHlsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LlN0eWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhaW50RmxhZ3NEcmF3RmlsdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuRHJhd0ZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhaW50RmxhZ3NEcmF3RmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnRGbGFnc0RyYXdGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGVhckJpdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0Qml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGF0aCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0aCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkQXJjIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZhbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN3ZWVwQW5nbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZENpcmNsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGguRGlyZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZE92YWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmFsIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5EaXJlY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXRyaXgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5EaXJlY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoLkRpcmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRSb3VuZFJlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGguRGlyZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJvdW5kUmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGlpIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5EaXJlY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJjVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmFsIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydEFuZ2xlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3dlZXBBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmNlTW92ZVRvIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFyY1RvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZhbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN3ZWVwQW5nbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlQm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleGFjdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdWJpY1RvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieTIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4MyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxsVHlwZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5GaWxsVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNSZXNlcnZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXh0cmFQdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbnZlcnNlRmlsbFR5cGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGluZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVhZFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieTIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJDdWJpY1RvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieTIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4MyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyTGluZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ick1vdmVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJRdWFkVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeTEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeDIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeTIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXdpbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbGxUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5GaWxsVHlwZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXN0UG9pbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVJbnZlcnNlRmlsbFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zZm9ybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zZm9ybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGF0aC5EaXJlY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGguRGlyZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoLkRpcmVjdGlvbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXRoLkZpbGxUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoLkZpbGxUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoLkZpbGxUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdGhEYXNoUGF0aEVmZmVjdCIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoRGFzaFBhdGhFZmZlY3QiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRGFzaFBhdGhFZmZlY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFwZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZHZhbmNlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGhhc2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRGFzaFBhdGhFZmZlY3QuU3R5bGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXRoRGFzaFBhdGhFZmZlY3QuU3R5bGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhEYXNoUGF0aEVmZmVjdC5TdHlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aERhc2hQYXRoRWZmZWN0LlN0eWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdGhFZmZlY3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhdGhFZmZlY3QiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRWZmZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdGhNZWFzdXJlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoTWVhc3VyZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhNZWFzdXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0aE1lYXN1cmUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoTWVhc3VyZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yY2VDbG9zZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRMZW5ndGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXRyaXgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zVGFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGFuY2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhbiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWdtZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcEQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRXaXRoTW92ZVRvIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2xvc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Q29udG91ciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yY2VDbG9zZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJQT1NJVElPTl9NQVRSSVhfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFOR0VOVF9NQVRSSVhfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpY3R1cmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBpY3R1cmUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaWN0dXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGljdHVyZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGljdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJlZ2luUmVjb3JkaW5nIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyb21TdHJlYW0iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFJlY29yZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQaXhlbEZvcm1hdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGl4ZWxGb3JtYXQiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRIYXNBbHBoYSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGl4ZWxGb3JtYXRJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQV84IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKUEVHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFfODgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMXzgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QQVFVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJHQkFfNDQ0NCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkdCQV81NTUxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSR0JBXzg4ODgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJHQlhfODg4OCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkdCXzMzMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJHQl81NjUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJHQl84ODgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSQU5TTFVDRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNQQVJFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZQ2JDcl80MjBfU1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllDYkNyXzQyMl9JIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZQ2JDcl80MjJfU1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJpdHNQZXJQaXhlbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJieXRlc1BlclBpeGVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQaXhlbFhvclhmZXJtb2RlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuWGZlcm1vZGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXhlbFhvclhmZXJtb2RlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGl4ZWxYb3JYZmVybW9kZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wQ29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBvaW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb2ludCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9pbnQiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb2ludCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb2ludCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZWdhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb2ludEYiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvaW50RiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50RiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvaW50RiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50RiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9pbnRGIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9pbnRGIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb2ludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZ2F0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb2ludEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJ4IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3J0ZXJEdWZmIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb3J0ZXJEdWZmIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3J0ZXJEdWZmLk1vZGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBvcnRlckR1ZmYuTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZi5Nb2RlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBvcnRlckR1ZmZDb2xvckZpbHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9ydGVyRHVmZkNvbG9yRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZkNvbG9yRmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjQ29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmLk1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3J0ZXJEdWZmWGZlcm1vZGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcnRlckR1ZmZYZmVybW9kZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvcnRlckR1ZmZYZmVybW9kZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZi5Nb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmFkaWFsR3JhZGllbnQiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpYWxHcmFkaWVudCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhZGlhbEdyYWRpZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpdXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbnMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyLlRpbGVNb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpYWxHcmFkaWVudCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhZGlhbEdyYWRpZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpdXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcjAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyLlRpbGVNb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmFzdGVyaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFzdGVyaXplciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhc3Rlcml6ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVjdCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNlbnRlclgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjZW50ZXJZIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWlucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhhY3RDZW50ZXJYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGFjdENlbnRlclkiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsYXR0ZW5Ub1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVyc2VjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVyc2VjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlcnNlY3RzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJzZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZnNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdUb3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnJvbVBhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbXB0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJzZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TaG9ydFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5mbGF0dGVuRnJvbVN0cmluZyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5pb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJvdHRvbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVjdEYiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWN0RiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVjdEYiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlY3RGIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWN0RiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2VudGVyWCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2VudGVyWSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhlaWdodCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlcnNlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVyc2VjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJzZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJzZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZnNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1RvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3VuZE91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVtcHR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlcnNlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5pb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b20iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWZ0IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmlnaHQiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b3AiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVnaW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVnaW9uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVnaW9uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVnaW9uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVnaW9uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWdpb24iCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kYXJ5UGF0aCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3VuZGFyeVBhdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm91bmRzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NvbXBsZXgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3AiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbi5PcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3AiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3AiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3AiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3AiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbi5PcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbjEiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24yIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3AiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uLk9wIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aWNrQ29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVpY2tDb250YWlucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVpY2tSZWplY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVpY2tSZWplY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aWNrUmVqZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZ24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVtcHR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGlwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2xhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zbGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZ2lvbi5PcCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uLk9wIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3BbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVnaW9uSXRlcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlZ2lvbkl0ZXJhdG9yIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uSXRlcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNoYWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2hhZGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsTWF0cml4IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxNIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhbE1hdHJpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2hhZGVyLlRpbGVNb2RlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdW1QYXRoRWZmZWN0IgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1bVBhdGhFZmZlY3QiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TdW1QYXRoRWZmZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTd2VlcEdyYWRpZW50IgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3dlZXBHcmFkaWVudCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlN3ZWVwR3JhZGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb25zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTd2VlcEdyYWRpZW50IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU3dlZXBHcmFkaWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcjAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUeXBlZmFjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFtaWx5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhbWlseSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tQXNzZXQiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1nciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldE1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbUZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tRmlsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZhdWx0RnJvbVN0eWxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0eWxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQm9sZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0l0YWxpYyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkJPTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJPTERfSVRBTElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9CT0xEIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVRBTElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT05PU1BBQ0UiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNBTlNfU0VSSUYiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVJJRiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYZmVybW9kZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWGZlcm1vZGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJZdXZJbWFnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWXV2SW1hZ2UiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5ZdXZJbWFnZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Inl1diIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcHJlc3NUb0pwZWciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0YW5nbGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpZGVzIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WXV2RGF0YSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZdXZGb3JtYXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlIgorPgorPGludGVyZmFjZSBuYW1lPSJBbmltYXRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaXNSdW5uaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkFuaW1hdGlvbkRyYXdhYmxlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVDb250YWluZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQW5pbWF0YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuaW1hdGlvbkRyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQW5pbWF0aW9uRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkRnJhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREdXJhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYW1lIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJPZkZyYW1lcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09uZVNob3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUnVubmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbmVTaG90IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lU2hvdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQml0bWFwRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQml0bWFwRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaXRtYXBEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkJpdG1hcERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaXRtYXBEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkJpdG1hcERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQml0bWFwRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5CaXRtYXBEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZXBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQml0bWFwRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlcGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQml0bWFwRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5CaXRtYXBEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQml0bWFwRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpdG1hcCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc3RhbnRTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ29uc3RhbnRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyYXZpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWludCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaWxlTW9kZVgiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaWxlTW9kZVkiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW50aUFsaWFzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWEiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcmF2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhcmdldERlbnNpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhcmdldERlbnNpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0RGVuc2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbnNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaWxlTW9kZVgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaWxlTW9kZVhZIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieG1vZGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyLlRpbGVNb2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5bW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGlsZU1vZGVZIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbGlwRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZS5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xpcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQ2xpcERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZW50YXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkhPUklaT05UQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29sb3JEcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkNvbG9yRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xvckRyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQ29sb3JEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbHBoYSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yRmlsdGVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRyYXdhYmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weUJvdW5kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weUJvdW5kcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyb21QYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tUmVzb3VyY2VTdHJlYW0iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLnV0aWwuVHlwZWRWYWx1ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbVJlc291cmNlU3RyZWFtIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tU3RyZWFtIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tWG1sIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tWG1sSW5uZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5naW5nQ29uZmlndXJhdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc3RhbnRTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ29uc3RhbnRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRyaW5zaWNIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50cmluc2ljV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGV2ZWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW5pbXVtSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbmltdW1XaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFkZGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0ZSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRyYW5zcGFyZW50UmVnaW9uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlU2VsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGF0ZWZ1bCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im11dGF0ZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Cb3VuZHNDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJib3VuZHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxldmVsQ2hhbmdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXRlQ2hhbmdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcDIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZVNlbGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FsbGJhY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYW5naW5nQ29uZmlndXJhdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmLk1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGl0aGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl0aGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlckJpdG1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZXZlbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlU2V0IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlzaWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdGFydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnNjaGVkdWxlU2VsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRHJhd2FibGUuQ2FsbGJhY2siCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRyYXdhYmxlLkNvbnN0YW50U3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcmF3YWJsZS5Db25zdGFudFN0YXRlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ29uc3RhbnRTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFuZ2luZ0NvbmZpZ3VyYXRpb25zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRyYXdhYmxlQ29udGFpbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyYXdhYmxlQ29udGFpbmVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVDb250YWluZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbGVjdERyYXdhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2YiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29uc3RhbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlQ29udGFpbmVyLkRyYXdhYmxlQ29udGFpbmVyU3RhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5zY2hlZHVsZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRHJhd2FibGVDb250YWluZXIuRHJhd2FibGVDb250YWluZXJTdGF0ZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNvbnN0YW50U3RhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZENoaWxkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbkNvbnN0YW50U3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhbmdpbmdDb25maWd1cmF0aW9ucyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRyZW4iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25zdGFudEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnN0YW50TWluaW11bUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnN0YW50TWluaW11bVdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc3RhbnRQYWRkaW5nIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc3RhbnRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm93QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NvbnN0YW50U2l6ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YXRlZnVsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnN0YW50U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uc3RhbnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmFyaWFibGVQYWRkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YXJpYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHcmFkaWVudERyYXdhYmxlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHcmFkaWVudERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuR3JhZGllbnREcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyYWRpZW50RHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5HcmFkaWVudERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZW50YXRpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuR3JhZGllbnREcmF3YWJsZS5PcmllbnRhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2YiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29ybmVyUmFkaWkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpaSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb3JuZXJSYWRpdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpdXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYWRpZW50Q2VudGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYWRpZW50UmFkaXVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JhZGllbnRSYWRpdXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYWRpZW50VHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYWRpZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hhcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJva2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cm9rZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhc2hXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhc2hHYXAiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZUxldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlTGV2ZWwiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSU5FQVJfR1JBRElFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9WQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBRElBTF9HUkFESUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVDVEFOR0xFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTV0VFUF9HUkFESUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdyYWRpZW50RHJhd2FibGUuT3JpZW50YXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkdyYWRpZW50RHJhd2FibGUuT3JpZW50YXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkdyYWRpZW50RHJhd2FibGUuT3JpZW50YXRpb25bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5zZXREcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnNldERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuSW5zZXREcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnNldERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuSW5zZXREcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnNldExlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zZXRUb3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zZXRSaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnNldEJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxheWVyRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZS5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5ZXJEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkxheWVyRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYXllcnMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmREcmF3YWJsZUJ5TGF5ZXJJZCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWJlck9mTGF5ZXJzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcmF3YWJsZUJ5TGF5ZXJJZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXllckluc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxldmVsTGlzdERyYXdhYmxlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVDb250YWluZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMZXZlbExpc3REcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkxldmVsTGlzdERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZExldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZ2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmluZVBhdGNoRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5pbmVQYXRjaERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuTmluZVBhdGNoRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNodW5rIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmluZVBhdGNoRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5OaW5lUGF0Y2hEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNodW5rIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmluZVBhdGNoRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5OaW5lUGF0Y2hEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0Y2giIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTmluZVBhdGNoIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOaW5lUGF0Y2hEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLk5pbmVQYXRjaERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0Y2giIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTmluZVBhdGNoIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWludCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2YiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0RGVuc2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0RGVuc2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUYXJnZXREZW5zaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVuc2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhaW50RHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5TaGFwZURyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFpbnREcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlBhaW50RHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWludERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuUGFpbnREcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRDb3JuZXJSYWRpaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGlpIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvcm5lclJhZGl1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGljdHVyZURyYXdhYmxlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaWN0dXJlRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5QaWN0dXJlRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaWN0dXJlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBpY3R1cmUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JGaWx0ZXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGljdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpY3R1cmUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGljdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSb3RhdGVEcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSb3RhdGVEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlJvdGF0ZURyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyYXdhYmxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2YiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5zY2hlZHVsZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NhbGVEcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2FsZURyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuU2NhbGVEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlV2lkdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZUhlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNoYXBlRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNoYXBlRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5TaGFwZURyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2hhcGVEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlNoYXBlRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5TaGFwZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFpbnQiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYWRlckZhY3RvcnkiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlNoYXBlRHJhd2FibGUuU2hhZGVyRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaGFwZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGVUYWciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFwZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuU2hhcGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludHJpbnNpY0hlaWdodCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludHJpbnNpY1dpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYWRkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFkZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaGFkZXJGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5TaGFwZURyYXdhYmxlLlNoYWRlckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hhcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5TaGFwZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaGFwZURyYXdhYmxlLlNoYWRlckZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaGFwZURyYXdhYmxlLlNoYWRlckZhY3RvcnkiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5TaGFwZURyYXdhYmxlLlNoYWRlckZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVzaXplIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhdGVMaXN0RHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZUNvbnRhaW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0YXRlTGlzdERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuU3RhdGVMaXN0RHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNldCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyYW5zaXRpb25EcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkxheWVyRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zaXRpb25EcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlRyYW5zaXRpb25EcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxheWVycyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXNDcm9zc0ZhZGVFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFRyYW5zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldmVyc2VUcmFuc2l0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDcm9zc0ZhZGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFRyYW5zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbk1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMiCis+Cis8Y2xhc3MgbmFtZT0iQXJjU2hhcGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuUmVjdFNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJjU2hhcGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuQXJjU2hhcGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydEFuZ2xlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3dlZXBBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPdmFsU2hhcGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuUmVjdFNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3ZhbFNoYXBlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLk92YWxTaGFwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXRoU2hhcGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuU2hhcGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoU2hhcGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuUGF0aFNoYXBlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGRXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZEhlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVjdFNoYXBlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVjdFNoYXBlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlJlY3RTaGFwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjdCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSb3VuZFJlY3RTaGFwZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5SZWN0U2hhcGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSb3VuZFJlY3RTaGFwZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5Sb3VuZFJlY3RTaGFwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGVyUmFkaWkiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imluc2V0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbm5lclJhZGlpIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2hhcGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaGFwZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5TaGFwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FscGhhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuaGFyZHdhcmUiCis+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkQ2FsbGJhY2tCdWZmZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2tCdWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdXRvRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNiIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5BdXRvRm9jdXNDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxBdXRvRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVycyIKKyByZXR1cm49ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpc3BsYXlPcmllbnRhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JDYWxsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2IiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLkVycm9yQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25lU2hvdFByZXZpZXdDYWxsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2IiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlByZXZpZXdDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbWV0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZXZpZXdDYWxsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2IiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlByZXZpZXdDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmV2aWV3Q2FsbGJhY2tXaXRoQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYiIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUHJldmlld0NhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZXZpZXdEaXNwbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRab29tQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5Pblpvb21DaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFByZXZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNtb290aFpvb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wUHJldmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BTbW9vdGhab29tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZVBpY3R1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNodXR0ZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlNodXR0ZXJDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmF3IiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QaWN0dXJlQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImpwZWciIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBpY3R1cmVDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWtlUGljdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2h1dHRlciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2h1dHRlckNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXciIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBpY3R1cmVDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zdHZpZXciIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBpY3R1cmVDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ianBlZyIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUGljdHVyZUNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0FNRVJBX0VSUk9SX1NFUlZFUl9ESUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTUVSQV9FUlJPUl9VTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNhbWVyYS5BdXRvRm9jdXNDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BdXRvRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1Y2Nlc3MiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbWVyYSIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDYW1lcmEuRXJyb3JDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25FcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNhbWVyYS5Pblpvb21DaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25ab29tQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6b29tVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcHBlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhLlBhcmFtZXRlcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmbGF0dGVuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW50aWJhbmRpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbG9yRWZmZWN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBvc3VyZUNvbXBlbnNhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBvc3VyZUNvbXBlbnNhdGlvblN0ZXAiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbGFzaE1vZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvY2FsTGVuZ3RoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNNb2RlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3Jpem9udGFsVmlld0FuZ2xlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SnBlZ1F1YWxpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SnBlZ1RodW1ibmFpbFF1YWxpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SnBlZ1RodW1ibmFpbFNpemUiCisgcmV0dXJuPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEV4cG9zdXJlQ29tcGVuc2F0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFpvb20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluRXhwb3N1cmVDb21wZW5zYXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGljdHVyZUZvcm1hdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQaWN0dXJlU2l6ZSIKKyByZXR1cm49ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlNpemUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJldmlld0Zvcm1hdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmV2aWV3RnJhbWVSYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZXZpZXdTaXplIgorIHJldHVybj0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2l6ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2VuZU1vZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZEFudGliYW5kaW5nIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkQ29sb3JFZmZlY3RzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkRmxhc2hNb2RlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZEZvY3VzTW9kZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRKcGVnVGh1bWJuYWlsU2l6ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQaWN0dXJlRm9ybWF0cyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQaWN0dXJlU2l6ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQcmV2aWV3Rm9ybWF0cyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQcmV2aWV3RnJhbWVSYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQcmV2aWV3U2l6ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRTY2VuZU1vZGVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkV2hpdGVCYWxhbmNlIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVydGljYWxWaWV3QW5nbGUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaGl0ZUJhbGFuY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFpvb20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Wm9vbVJhdGlvcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Ntb290aFpvb21TdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzWm9vbVN1cHBvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUdwc0RhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFudGliYW5kaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW50aWJhbmRpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JFZmZlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeHBvc3VyZUNvbXBlbnNhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rmxhc2hNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9jdXNNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3BzQWx0aXR1ZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHRpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdwc0xhdGl0dWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcHNMb25naXR1ZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb25naXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcHNQcm9jZXNzaW5nTWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc2luZ19tZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3BzVGltZXN0YW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXN0YW1wIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEpwZWdRdWFsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEpwZWdUaHVtYm5haWxRdWFsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEpwZWdUaHVtYm5haWxTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGljdHVyZUZvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVsX2Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBpY3R1cmVTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJldmlld0Zvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVsX2Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZXZpZXdGcmFtZVJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmV2aWV3U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvdGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm90YXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY2VuZU1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXaGl0ZUJhbGFuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRab29tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmZsYXR0ZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGF0dGVuZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTlRJQkFORElOR181MEhaIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OzUwaHomcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU5USUJBTkRJTkdfNjBIWiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDs2MGh6JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFOVElCQU5ESU5HX0FVVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTlRJQkFORElOR19PRkYiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7b2ZmJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVGRkVDVF9BUVVBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FxdWEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUZGRUNUX0JMQUNLQk9BUkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YmxhY2tib2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFRkZFQ1RfTU9OTyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttb25vJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVGRkVDVF9ORUdBVElWRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZWdhdGl2ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFRkZFQ1RfTk9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtub25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVGRkVDVF9QT1NURVJJWkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG9zdGVyaXplJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVGRkVDVF9TRVBJQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXBpYSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFRkZFQ1RfU09MQVJJWkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c29sYXJpemUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUZGRUNUX1dISVRFQk9BUkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2hpdGVib2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFTSF9NT0RFX0FVVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFTSF9NT0RFX09GRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtvZmYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBU0hfTU9ERV9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFTSF9NT0RFX1JFRF9FWUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cmVkLWV5ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFTSF9NT0RFX1RPUkNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RvcmNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfQVVUTyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdXRvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfRURPRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlZG9mJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfRklYRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Zml4ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9DVVNfTU9ERV9JTkZJTklUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbmZpbml0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19NT0RFX01BQ1JPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21hY3JvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX0FVVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX0JBUkNPREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YmFyY29kZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX0JFQUNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2JlYWNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfQ0FORExFTElHSFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2FuZGxlbGlnaHQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NFTkVfTU9ERV9GSVJFV09SS1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZmlyZXdvcmtzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfTEFORFNDQVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xhbmRzY2FwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX05JR0hUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25pZ2h0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmlnaHQtcG9ydHJhaXQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NFTkVfTU9ERV9QQVJUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJ0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX1BPUlRSQUlUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BvcnRyYWl0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfU05PVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzbm93JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfU1BPUlRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Nwb3J0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX1NURUFEWVBIT1RPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0ZWFkeXBob3RvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfU1VOU0VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1bnNldCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX1RIRUFUUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGhlYXRyZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURV9CQUxBTkNFX0FVVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjbG91ZHktZGF5bGlnaHQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXlsaWdodCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ZsdW9yZXNjZW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2luY2FuZGVzY2VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURV9CQUxBTkNFX1NIQURFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NoYWRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldISVRFX0JBTEFOQ0VfVFdJTElHSFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHdpbGlnaHQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dhcm0tZmx1b3Jlc2NlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDYW1lcmEuUGljdHVyZUNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblBpY3R1cmVUYWtlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW1lcmEiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2FtZXJhLlByZXZpZXdDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25QcmV2aWV3RnJhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNhbWVyYS5TaHV0dGVyQ2FsbGJhY2siCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2h1dHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhLlNpemUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNhbWVyYS5TaXplIgorIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlNpemUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iaGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpZHRoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZW9tYWduZXRpY0ZpZWxkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZW9tYWduZXRpY0ZpZWxkIgorIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuR2VvbWFnbmV0aWNGaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdkTGF0aXR1ZGVEZWciIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnZExvbmdpdHVkZURlZyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsdGl0dWRlTWV0ZXJzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZU1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xpbmF0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmllbGRTdHJlbmd0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxTdHJlbmd0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluY2xpbmF0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFkiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRaIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2Vuc29yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bVJhbmdlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG93ZXIiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvbHV0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZW5kb3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0FDQ0VMRVJPTUVURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9HWVJPU0NPUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTElHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTUFHTkVUSUNfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfT1JJRU5UQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9QUkVTU1VSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9QUk9YSU1JVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVNUEVSQVRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZW5zb3JFdmVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iYWNjdXJhY3kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Vuc29yIgorIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGltZXN0YW1wIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YWx1ZXMiCisgdHlwZT0iZmxvYXRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTZW5zb3JFdmVudExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BY2N1cmFjeUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZW5zb3JDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNlbnNvckxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkFjY3VyYWN5Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZW5zb3JDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZW5zb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTZW5zb3JNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFNlbnNvciIKKyByZXR1cm49ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5jbGluYXRpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJJIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWVudGF0aW9uIgorIHJldHVybj0iZmxvYXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJSIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um90YXRpb25NYXRyaXgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IlIiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IkkiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdlb21hZ25ldGljIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbnNvckxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmhhcmR3YXJlLlNlbnNvciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW5zb3JzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJMaXN0ZW5lciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3Rlckxpc3RlbmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29ycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJMaXN0ZW5lciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3Rlckxpc3RlbmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29yIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtYXBDb29yZGluYXRlU3lzdGVtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblIiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IlgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iWSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRSIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3Rlckxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFYSVNfTUlOVVNfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBWElTX01JTlVTX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19NSU5VU19aIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFYSVNfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19ZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBWElTX1oiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9aIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfREVBVEhfU1RBUl9JIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzLjUzMDM2MTRFLTdmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfRUFSVEgiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkuODA2NjVmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfSlVQSVRFUiIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMuMTJmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfTUFSUyIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMy43MWYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JBVklUWV9NRVJDVVJZIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzLjdmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfTU9PTiIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMS42ZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUkFWSVRZX05FUFRVTkUiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExLjBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfUExVVE8iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAuNmYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JBVklUWV9TQVRVUk4iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjguOTZmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfU1VOIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNzUuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JBVklUWV9USEVfSVNMQU5EIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0LjgxNTE2MmYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JBVklUWV9VUkFOVVMiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjguNjlmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfVkVOVVMiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjguODdmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJR0hUX0NMT1VEWSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwLjBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJR0hUX0ZVTExNT09OIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwLjI1ZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSUdIVF9OT19NT09OIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwLjAwMTBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJR0hUX09WRVJDQVNUIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAwMC4wZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSUdIVF9TSEFERSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwMDAuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElHSFRfU1VOTElHSFQiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExMDAwMC4wZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSUdIVF9TVU5MSUdIVF9NQVgiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMDAwMC4wZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSUdIVF9TVU5SSVNFIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDAuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFHTkVUSUNfRklFTERfRUFSVEhfTUFYIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MC4wZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQUdORVRJQ19GSUVMRF9FQVJUSF9NSU4iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwLjBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBV19EQVRBX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBV19EQVRBX1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkFXX0RBVEFfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSQVdfREFUQV9aIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9BQ0NFTEVST01FVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9BTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfREVMQVlfRkFTVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX0RFTEFZX0dBTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9ERUxBWV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9ERUxBWV9VSSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX0xJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfTUFHTkVUSUNfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX01BWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX01JTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfT1JJRU5UQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX09SSUVOVEFUSU9OX1JBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9QUk9YSU1JVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9TVEFUVVNfQUNDVVJBQ1lfSElHSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX1NUQVRVU19BQ0NVUkFDWV9MT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9TVEFUVVNfQUNDVVJBQ1lfTUVESVVNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfU1RBVFVTX1VOUkVMSUFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9URU1QRVJBVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfVFJJQ09SREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFOREFSRF9HUkFWSVRZIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5LjgwNjY1ZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZSIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdElucHV0TWV0aG9kU2VydmljZSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5TZXJ2aWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5LZXlFdmVudC5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UiCisgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5RGlzcGF0Y2hlclN0YXRlIgorIHJldHVybj0iYW5kcm9pZC52aWV3LktleUV2ZW50LkRpc3BhdGNoZXJTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkJpbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlSW5wdXRNZXRob2RJbnRlcmZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kSW1wbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlSW5wdXRNZXRob2RTZXNzaW9uSW50ZXJmYWNlIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlc3Npb25JbXBsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25UcmFja2JhbGxFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZEltcGwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RJbXBsIgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kLlNlc3Npb25DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZva2VTZXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vzc2lvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kU2Vzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXNzaW9uRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlc3Npb25JbXBsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kU2Vzc2lvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlc3Npb25JbXBsIgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXNzaW9uSW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleUV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RTZXNzaW9uLkV2ZW50Q2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hUcmFja2JhbGxFdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kU2Vzc2lvbi5FdmVudENhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXZva2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZva2VTZWxmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeHRyYWN0RWRpdFRleHQiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuRWRpdFRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeHRyYWN0RWRpdFRleHQiCisgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuRXh0cmFjdEVkaXRUZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4dHJhY3RFZGl0VGV4dCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5FeHRyYWN0RWRpdFRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4dHJhY3RFZGl0VGV4dCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5FeHRyYWN0RWRpdFRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5pc2hJbnRlcm5hbENoYW5nZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1ZlcnRpY2FsU2Nyb2xsQmFyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEludGVybmFsQ2hhbmdlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5wdXRNZXRob2RTZXJ2aWNlIgorIGV4dGVuZHM9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RTZXJ2aWNlIgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLklucHV0TWV0aG9kU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDYW5kaWRhdGVzSGlkZGVuVmlzaWJpbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SW5wdXRCaW5kaW5nIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0QmluZGluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SW5wdXRDb25uZWN0aW9uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SW5wdXRFZGl0b3JJbmZvIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkVkaXRvckluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudElucHV0U3RhcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0SW5mbGF0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dEZvckltZUFjdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImltZU9wdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaW5kb3ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGlkZVN0YXR1c0ljb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZGVXaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRXh0cmFjdFZpZXdTaG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGdWxsc2NyZWVuTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbnB1dFZpZXdTaG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaG93SW5wdXRSZXF1ZXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXBwUHJpdmF0ZUNvbW1hbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQmluZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbXB1dGVJbnNldHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRJbnNldHMiIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLklucHV0TWV0aG9kU2VydmljZS5JbnNldHMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25maWd1cmVXaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW4iIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3ciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRnVsbHNjcmVlbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNDYW5kaWRhdGVzT25seSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZUNhbmRpZGF0ZXNWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVFeHRyYWN0VGV4dFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZUlucHV0TWV0aG9kSW50ZXJmYWNlIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZEltcGwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVJbnB1dE1ldGhvZFNlc3Npb25JbnRlcmZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2Vzc2lvbkltcGwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVJbnB1dFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRpc3BsYXlDb21wbGV0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBsZXRpb25zIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuQ29tcGxldGlvbkluZm9bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkV2YWx1YXRlRnVsbHNjcmVlbk1vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRXZhbHVhdGVJbnB1dFZpZXdTaG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0VGV4dENvbnRleHRNZW51SXRlbSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0ZWRDdXJzb3JNb3ZlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0ZWRTZWxlY3Rpb25DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0ZWRUZXh0Q2xpY2tlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0aW5nSW5wdXRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWkiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRmluaXNoQ2FuZGlkYXRlc1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaW5pc2hpbmdJbnB1dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbmlzaElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbmlzaElucHV0VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbmlzaGluZ0lucHV0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSW5pdGlhbGl6ZUludGVyZmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5TG9uZ1ByZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5TXVsdGlwbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlVcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNob3dJbnB1dFJlcXVlc3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZ0NoYW5nZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0Q2FuZGlkYXRlc1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdGFydGluZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN0YXJ0aW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhcnRJbnB1dFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdGFydGluZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVuYmluZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVwZGF0ZUN1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0N1cnNvciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVXBkYXRlRXh0cmFjdGVkVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVXBkYXRlRXh0cmFjdGluZ1ZpZXdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWkiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVXBkYXRlRXh0cmFjdGluZ1Zpc2liaWxpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlaSIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkVkaXRvckluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25VcGRhdGVTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTZWxTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTZWxFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U2VsU3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U2VsRW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmRpZGF0ZXNTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5kaWRhdGVzRW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25XaW5kb3dIaWRkZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uV2luZG93U2hvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RIaWRlU2VsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZERlZmF1bHRFZGl0b3JBY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tRW50ZXJLZXkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZERvd25VcEtleUV2ZW50cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUV2ZW50Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRLZXlDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhckNvZGUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FuZGlkYXRlc1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDYW5kaWRhdGVzVmlld1Nob3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvd24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXh0cmFjdFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeHRyYWN0Vmlld1Nob3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvd24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd1N0YXR1c0ljb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uUmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93V2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvd0lucHV0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN3aXRjaElucHV0TWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRnVsbHNjcmVlbk1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUlucHV0Vmlld1Nob3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RJbXBsIgorIGV4dGVuZHM9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RJbXBsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RTZXJ2aWNlLklucHV0TWV0aG9kSW1wbCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF0dGFjaFRva2VuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kSW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaW5kaW5nIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRCaW5kaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZGVTb2Z0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5vcy5SZXN1bHRSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0YXJ0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpYyIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93U29mdElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQub3MuUmVzdWx0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImljIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuYmluZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RTZXNzaW9uSW1wbCIKKyBleHRlbmRzPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2Vzc2lvbkltcGwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RTZXNzaW9uSW1wbCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RTZXNzaW9uSW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBQcml2YXRlQ29tbWFuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGxheUNvbXBsZXRpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGxldGlvbnMiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mb1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVTb2Z0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaG93RmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGlkZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQ3Vyc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q3Vyc29yIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRXh0cmFjdGVkVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFNlbFN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFNlbEVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTZWxTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTZWxFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuZGlkYXRlc1N0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmRpZGF0ZXNFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dE1ldGhvZFNlcnZpY2UuSW5zZXRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RTZXJ2aWNlLkluc2V0cyIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JbnB1dE1ldGhvZFNlcnZpY2UuSW5zZXRzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iVE9VQ0hBQkxFX0lOU0VUU19DT05URU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT1VDSEFCTEVfSU5TRVRTX0ZSQU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT1VDSEFCTEVfSU5TRVRTX1ZJU0lCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbnRlbnRUb3BJbnNldHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG91Y2hhYmxlSW5zZXRzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZpc2libGVUb3BJbnNldHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleWJvYXJkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlib2FyZCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxMYXlvdXRSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlib2FyZCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxMYXlvdXRSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmQiCisgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0VGVtcGxhdGVSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyYWN0ZXJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b250YWxQYWRkaW5nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVLZXlGcm9tWG1sIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkLlJvdyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSb3dGcm9tWG1sIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuUm93IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxHYXAiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5SGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZC5LZXkmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbldpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGlmaWVyS2V5cyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkLktleSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmVhcmVzdEtleXMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hpZnRLZXlJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJ0aWNhbEdhcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NoaWZ0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvcml6b250YWxHYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJnYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZXlIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZXlXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hpZnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoaWZ0U3RhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVydGljYWxHYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJnYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVER0VfQk9UVE9NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFREdFX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVER0VfUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVER0VfVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0FMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii02IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfQ0FOQ0VMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9ERUxFVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0RPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX01PREVfQ0hBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlib2FyZC5LZXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmQuS2V5IgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkLktleSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuUm93Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlib2FyZC5LZXkiCisgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuS2V5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZC5Sb3ciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50RHJhd2FibGVTdGF0ZSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5zaWRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVzc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlbGVhc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zaWRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNxdWFyZWREaXN0YW5jZUZyb20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iY29kZXMiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlZGdlRmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2FwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uUHJldmlldyIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFiZWwiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1vZGlmaWVyIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvbiIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBDaGFyYWN0ZXJzIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3B1cFJlc0lkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZXNzZWQiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcGVhdGFibGUiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0aWNreSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlib2FyZC5Sb3ciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmQuUm93IgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkLlJvdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleWJvYXJkLlJvdyIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZC5Sb3ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRIZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVmYXVsdEhvcml6b250YWxHYXAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVmYXVsdFdpZHRoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm93RWRnZUZsYWdzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnRpY2FsR2FwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlib2FyZFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmRWaWV3IgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmRWaWV3IgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleWJvYXJkIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T25LZXlib2FyZEFjdGlvbkxpc3RlbmVyIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmRWaWV3Lk9uS2V5Ym9hcmRBY3Rpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVCYWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlQWxsS2V5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZUtleSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcmV2aWV3RW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcm94aW1pdHlDb3JyZWN0aW9uRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaGlmdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EZXRhY2hlZEZyb21XaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Mb25nUHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3B1cEtleSIgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWVhc3VyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoTWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0TWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNpemVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZHciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleWJvYXJkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Ym9hcmQiIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uS2V5Ym9hcmRBY3Rpb25MaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZFZpZXcuT25LZXlib2FyZEFjdGlvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvcHVwT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9wdXBQYXJlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmV2aWV3RW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZXZpZXdFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3hpbWl0eUNvcnJlY3Rpb25FbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaGlmdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hpZnRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJ0aWNhbENvcnJlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN3aXBlRG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3dpcGVMZWZ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzd2lwZVJpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzd2lwZVVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iS2V5Ym9hcmRWaWV3Lk9uS2V5Ym9hcmRBY3Rpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25LZXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1hcnlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmltYXJ5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVsZWFzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbWFyeUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3dpcGVEb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN3aXBlTGVmdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzd2lwZVJpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN3aXBlVXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5sb2NhdGlvbiIKKz4KKzxjbGFzcyBuYW1lPSJBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWRkcmVzcyIKKyB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkFkZHJlc3MiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhckxhdGl0dWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckxvbmdpdHVkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWRtaW5BcmVhIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudHJ5Q29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnRyeU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXRpdHVkZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsaXR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25naXR1ZGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4QWRkcmVzc0xpbmVJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQaG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zdGFsQ29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlbWlzZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YkFkbWluQXJlYSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViTG9jYWxpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YlRob3JvdWdoZmFyZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhvcm91Z2hmYXJlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcmwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0xhdGl0dWRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNMb25naXR1ZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkZHJlc3NMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBZG1pbkFyZWEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZG1pbkFyZWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q291bnRyeUNvZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudHJ5Q29kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb3VudHJ5TmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50cnlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV4dHJhcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZU5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXRpdHVkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGl0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb25naXR1ZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb25naXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQaG9uZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBob25lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc3RhbENvZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3N0YWxDb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZW1pc2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlbWlzZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3ViQWRtaW5BcmVhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViQWRtaW5BcmVhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YkxvY2FsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VibG9jYWxpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3ViVGhvcm91Z2hmYXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VidGhvcm91Z2hmYXJlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRob3JvdWdoZmFyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRob3JvdWdoZmFyZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVcmwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJVcmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDcml0ZXJpYSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNyaXRlcmlhIgorIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDcml0ZXJpYSIKKyB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JpdGVyaWEiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjY3VyYWN5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvd2VyUmVxdWlyZW1lbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbHRpdHVkZVJlcXVpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JlYXJpbmdSZXF1aXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb3N0QWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVlZFJlcXVpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY2N1cmFjeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWx0aXR1ZGVSZXF1aXJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsdGl0dWRlUmVxdWlyZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmVhcmluZ1JlcXVpcmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVhcmluZ1JlcXVpcmVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvc3RBbGxvd2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29zdEFsbG93ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG93ZXJSZXF1aXJlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3BlZWRSZXF1aXJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWVkUmVxdWlyZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ0NVUkFDWV9DT0FSU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ1VSQUNZX0ZJTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fUkVRVUlSRU1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPV0VSX0hJR0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPV0VSX0xPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9XRVJfTUVESVVNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR2VvY29kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VvY29kZXIiCisgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlb2NvZGVyIgorIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uR2VvY29kZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZyb21Mb2NhdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQubG9jYXRpb24uQWRkcmVzcyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhSZXN1bHRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyb21Mb2NhdGlvbk5hbWUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmxvY2F0aW9uLkFkZHJlc3MmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFJlc3VsdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RnJvbUxvY2F0aW9uTmFtZSIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQubG9jYXRpb24uQWRkcmVzcyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4UmVzdWx0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb3dlckxlZnRMYXRpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb3dlckxlZnRMb25naXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBwZXJSaWdodExhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwcGVyUmlnaHRMb25naXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR3BzU2F0ZWxsaXRlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBemltdXRoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxldmF0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJuIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNuciIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FsbWFuYWMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0VwaGVtZXJpcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlZEluRml4IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHcHNTdGF0dXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE1heFNhdGVsbGl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2F0ZWxsaXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5JdGVyYWJsZSZsdDthbmRyb2lkLmxvY2F0aW9uLkdwc1NhdGVsbGl0ZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVRvRmlyc3RGaXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHUFNfRVZFTlRfRklSU1RfRklYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUFNfRVZFTlRfU0FURUxMSVRFX1NUQVRVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1BTX0VWRU5UX1NUQVJURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdQU19FVkVOVF9TVE9QUEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikdwc1N0YXR1cy5MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25HcHNTdGF0dXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR3BzU3RhdHVzLk5tZWFMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25ObWVhUmVjZWl2ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVzdGFtcCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm1lYSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTG9jYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uTG9jYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmVhcmluZ1RvIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uTG9jYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udmVydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRpbmF0ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udmVydCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZGluYXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzdGFuY2VCZXR3ZWVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydExhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0TG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZExhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZExvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3RhbmNlVG8iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWNjdXJhY3kiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbHRpdHVkZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCZWFyaW5nIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmFzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF0aXR1ZGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZ2l0dWRlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGVlZCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FjY3VyYWN5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNBbHRpdHVkZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQmVhcmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3BlZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFjY3VyYWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbHRpdHVkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQmVhcmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlU3BlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFjY3VyYWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjdXJhY3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFsdGl0dWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWx0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCZWFyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVhcmluZyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXh0cmFzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXRpdHVkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9uZ2l0dWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTcGVlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX0RFR1JFRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9NSU5VVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfU0VDT05EUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJMb2NhdGlvbkxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Mb2NhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJvdmlkZXJEaXNhYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Qcm92aWRlckVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhdHVzQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJMb2NhdGlvbk1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRHcHNTdGF0dXNMaXN0ZW5lciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkdwc1N0YXR1cy5MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRObWVhTGlzdGVuZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5HcHNTdGF0dXMuTm1lYUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFByb3hpbWl0eUFsZXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGlyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRUZXN0UHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1aXJlc05ldHdvcmsiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVpcmVzU2F0ZWxsaXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1aXJlc0NlbGwiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc01vbmV0YXJ5Q29zdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwcG9ydHNBbHRpdHVkZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwcG9ydHNTcGVlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwcG9ydHNCZWFyaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3dlclJlcXVpcmVtZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJUZXN0UHJvdmlkZXJFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJUZXN0UHJvdmlkZXJMb2NhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyVGVzdFByb3ZpZGVyU3RhdHVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsUHJvdmlkZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmVzdFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JpdGVyaWEiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdwc1N0YXR1cyIKKyByZXR1cm49ImFuZHJvaWQubG9jYXRpb24uR3BzU3RhdHVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uR3BzU3RhdHVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhc3RLbm93bkxvY2F0aW9uIgorIHJldHVybj0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVycyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcml0ZXJpYSIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZE9ubHkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcm92aWRlckVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVHcHNTdGF0dXNMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkdwc1N0YXR1cy5MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVObWVhTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5HcHNTdGF0dXMuTm1lYUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVByb3hpbWl0eUFsZXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVRlc3RQcm92aWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVVwZGF0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVVwZGF0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5EaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5EaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BlciIgdHlwZT0iYW5kcm9pZC5vcy5Mb29wZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5EaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kRXh0cmFDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGVzdFByb3ZpZGVyRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRlc3RQcm92aWRlckxvY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYyIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXN0UHJvdmlkZXJTdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZVRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHUFNfUFJPVklERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3BzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9MT0NBVElPTl9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9QUk9WSURFUl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Byb3ZpZGVyRW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlfUFJPWElNSVRZX0VOVEVSSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2VudGVyaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9TVEFUVVNfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdGF0dXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19QUk9WSURFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZXR3b3JrJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBU1NJVkVfUFJPVklERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFzc2l2ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYXRpb25Qcm92aWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QWNjdXJhY3kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3dlclJlcXVpcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTW9uZXRhcnlDb3N0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lZXRzQ3JpdGVyaWEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcml0ZXJpYSIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1aXJlc0NlbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWlyZXNOZXR3b3JrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVpcmVzU2F0ZWxsaXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQWx0aXR1ZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNCZWFyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU3BlZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBVkFJTEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9VVF9PRl9TRVJWSUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURU1QT1JBUklMWV9VTkFWQUlMQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5tZWRpYSIKKz4KKzxjbGFzcyBuYW1lPSJBc3luY1BsYXllciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXN5bmNQbGF5ZXIiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5Bc3luY1BsYXllciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InBsYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF1ZGlvRm9ybWF0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdWRpb0Zvcm1hdCIKKyB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9DT05GSUdVUkFUSU9OX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9DT05GSUdVUkFUSU9OX0lOVkFMSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9DT05GSUdVUkFUSU9OX01PTk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9DT05GSUdVUkFUSU9OX1NURVJFTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOVkFMSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfSU5fQkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfSU5fQkFDS19QUk9DRVNTRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOX0ZST05UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9GUk9OVF9QUk9DRVNTRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOX0xFRlRfUFJPQ0VTU0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9NT05PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9QUkVTU1VSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9SSUdIVF9QUk9DRVNTRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9TVEVSRU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOX1ZPSUNFX0ROTElOSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfSU5fVk9JQ0VfVVBMSU5LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9YX0FYSVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfSU5fWV9BWElTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOX1pfQVhJUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgxOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9PVVRfNVBPSU5UMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF83UE9JTlQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9CQUNLX0NFTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9PVVRfQkFDS19MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9PVVRfQkFDS19SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9GUk9OVF9DRU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9GUk9OVF9MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9GUk9OVF9MRUZUX09GX0NFTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9GUk9OVF9SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9PVVRfRlJPTlRfUklHSFRfT0ZfQ0VOVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfT1VUX0xPV19GUkVRVUVOQ1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9NT05PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9RVUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfT1VUX1NURVJFTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfT1VUX1NVUlJPVU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR19ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR19JTlZBTElEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR19QQ01fMTZCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HX1BDTV84QklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXVkaW9NYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWJhbmRvbkF1ZGlvRm9jdXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyLk9uQXVkaW9Gb2N1c0NoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkanVzdFN0cmVhbVZvbHVtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRqdXN0U3VnZ2VzdGVkU3RyZWFtVm9sdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1Z2dlc3RlZFN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGp1c3RWb2x1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlcnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJpbmdlck1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyZWFtTWF4Vm9sdW1lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1UeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyZWFtVm9sdW1lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1UeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlicmF0ZVNldHRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpYnJhdGVUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCbHVldG9vdGhBMmRwT24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmx1ZXRvb3RoU2NvQXZhaWxhYmxlT2ZmQ2FsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCbHVldG9vdGhTY29PbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNaWNyb3Bob25lTXV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNdXNpY0FjdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVha2VycGhvbmVPbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXaXJlZEhlYWRzZXRPbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZFNvdW5kRWZmZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGxheVNvdW5kRWZmZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWZmZWN0VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsYXlTb3VuZEVmZmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVmZmVjdFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3Rlck1lZGlhQnV0dG9uRXZlbnRSZWNlaXZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RBdWRpb0ZvY3VzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlci5PbkF1ZGlvRm9jdXNDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbkhpbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCbHVldG9vdGhBMmRwT24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJsdWV0b290aFNjb09uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWljcm9waG9uZU11dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmFtZXRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlWYWx1ZVBhaXJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJpbmdlck1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyaW5nZXJNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Um91dGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwZWFrZXJwaG9uZU9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZWFtTXV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZWFtU29sbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZWFtVm9sdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpYnJhdGVTZXR0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlicmF0ZVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlicmF0ZVNldHRpbmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXaXJlZEhlYWRzZXRPbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvdWxkVmlicmF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpYnJhdGVUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRCbHVldG9vdGhTY28iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BCbHVldG9vdGhTY28iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9hZFNvdW5kRWZmZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3Rlck1lZGlhQnV0dG9uRXZlbnRSZWNlaXZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FVRElPX0JFQ09NSU5HX05PSVNZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuQVVESU9fQkVDT01JTkdfTk9JU1kmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NDT19BVURJT19TVEFURV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuU0NPX0FVRElPX1NUQVRFX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQURKVVNUX0xPV0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQURKVVNUX1JBSVNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBREpVU1RfU0FNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9GT0NVU19HQUlOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT0ZPQ1VTX0dBSU5fVFJBTlNJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT0ZPQ1VTX0dBSU5fVFJBTlNJRU5UX01BWV9EVUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT0ZPQ1VTX0xPU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT0ZPQ1VTX0xPU1NfVFJBTlNJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9GT0NVU19MT1NTX1RSQU5TSUVOVF9DQU5fRFVDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0zIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPRk9DVVNfUkVRVUVTVF9GQUlMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPRk9DVVNfUkVRVUVTVF9HUkFOVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SSU5HRVJfTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm1lZGlhLkVYVFJBX1JJTkdFUl9NT0RFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NDT19BVURJT19TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm1lZGlhLmV4dHJhLlNDT19BVURJT19TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9WSUJSQVRFX1NFVFRJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5tZWRpYS5FWFRSQV9WSUJSQVRFX1NFVFRJTkcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVklCUkFURV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuRVhUUkFfVklCUkFURV9UWVBFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxMT1dfUklOR0VSX01PREVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1BMQVlfU09VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfUkVNT1ZFX1NPVU5EX0FORF9WSUJSQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NIT1dfVUkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfVklCUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZYX0ZPQ1VTX05BVklHQVRJT05fRE9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfRk9DVVNfTkFWSUdBVElPTl9MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGWF9GT0NVU19OQVZJR0FUSU9OX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGWF9GT0NVU19OQVZJR0FUSU9OX1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGWF9LRVlQUkVTU19ERUxFVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZYX0tFWVBSRVNTX1JFVFVSTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfS0VZUFJFU1NfU1BBQ0VCQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZYX0tFWVBSRVNTX1NUQU5EQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGWF9LRVlfQ0xJQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfQ1VSUkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfSU5WQUxJRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfSU5fQ0FMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUklOR1RPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5VTV9TVFJFQU1TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJJTkdFUl9NT0RFX0NIQU5HRURfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuUklOR0VSX01PREVfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSU5HRVJfTU9ERV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJJTkdFUl9NT0RFX1NJTEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUklOR0VSX01PREVfVklCUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VVEVfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VURV9CTFVFVE9PVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VVEVfQkxVRVRPT1RIX0EyRFAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJPVVRFX0JMVUVUT09USF9TQ08iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VVEVfRUFSUElFQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VVEVfSEVBRFNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VURV9TUEVBS0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDT19BVURJT19TVEFURV9DT05ORUNURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDT19BVURJT19TVEFURV9ESVNDT05ORUNURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDT19BVURJT19TVEFURV9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVBTV9BTEFSTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX0RUTUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVBTV9NVVNJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX05PVElGSUNBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX1JJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVBTV9TWVNURU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVBTV9WT0lDRV9DQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VfREVGQVVMVF9TVFJFQU1fVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEVfU0VUVElOR19DSEFOR0VEX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm1lZGlhLlZJQlJBVEVfU0VUVElOR19DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEVfU0VUVElOR19PRkYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEVfU0VUVElOR19PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklCUkFURV9TRVRUSU5HX09OTFlfU0lMRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWSUJSQVRFX1RZUEVfTk9USUZJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWSUJSQVRFX1RZUEVfUklOR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkF1ZGlvTWFuYWdlci5PbkF1ZGlvRm9jdXNDaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BdWRpb0ZvY3VzQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb2N1c0NoYW5nZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBdWRpb1JlY29yZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXVkaW9SZWNvcmQiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5BdWRpb1JlY29yZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvU291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhbXBsZVJhdGVJbkh6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5uZWxDb25maWciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXVkaW9Gb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyU2l6ZUluQnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXVkaW9Gb3JtYXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXVkaW9Tb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhbm5lbENvbmZpZ3VyYXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhbm5lbENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbkJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FtcGxlUmF0ZUluSHoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbENvbmZpZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb0Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vdGlmaWNhdGlvbk1hcmtlclBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uTm90aWZpY2F0aW9uUGVyaW9kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlY29yZGluZ1N0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNhbXBsZVJhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXVkaW9EYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldEluQnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZUluQnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb0RhdGEiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldEluU2hvcnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemVJblNob3J0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplSW5CeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5vdGlmaWNhdGlvbk1hcmtlclBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXJrZXJJbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aW9uTm90aWZpY2F0aW9uUGVyaW9kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2RJbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlY29yZFBvc2l0aW9uVXBkYXRlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5BdWRpb1JlY29yZC5PblJlY29yZFBvc2l0aW9uVXBkYXRlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVjb3JkUG9zaXRpb25VcGRhdGVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvUmVjb3JkLk9uUmVjb3JkUG9zaXRpb25VcGRhdGVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0UmVjb3JkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0JBRF9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0lOVkFMSURfT1BFUkFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVDT1JEU1RBVEVfUkVDT1JESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUNPUkRTVEFURV9TVE9QUEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfVU5JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VDQ0VTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBdWRpb1JlY29yZC5PblJlY29yZFBvc2l0aW9uVXBkYXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTWFya2VyUmVhY2hlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9SZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QZXJpb2RpY05vdGlmaWNhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9SZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkF1ZGlvVHJhY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1ZGlvVHJhY2siCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5BdWRpb1RyYWNrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYW1wbGVSYXRlSW5IeiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFubmVsQ29uZmlnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvRm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlclNpemVJbkJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1ZGlvRm9ybWF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWxDb25maWd1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWxDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhWb2x1bWUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbkJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FtcGxlUmF0ZUluSHoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbENvbmZpZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb0Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pblZvbHVtZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmF0aXZlRnJhbWVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYXRpdmVPdXRwdXRTYW1wbGVSYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb3RpZmljYXRpb25NYXJrZXJQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQbGF5U3RhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGxheWJhY2tIZWFkUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGxheWJhY2tSYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uTm90aWZpY2F0aW9uUGVyaW9kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNhbXBsZVJhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyZWFtVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXVzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbG9hZFN0YXRpY0RhdGEiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9vcFBvaW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRJbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRJbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb29wQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROb3RpZmljYXRpb25NYXJrZXJQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFya2VySW5GcmFtZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQbGF5YmFja0hlYWRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb25JbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBsYXliYWNrUG9zaXRpb25VcGRhdGVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvVHJhY2suT25QbGF5YmFja1Bvc2l0aW9uVXBkYXRlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGxheWJhY2tQb3NpdGlvblVwZGF0ZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9UcmFjay5PblBsYXliYWNrUG9zaXRpb25VcGRhdGVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBsYXliYWNrUmF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FtcGxlUmF0ZUluSHoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb3NpdGlvbk5vdGlmaWNhdGlvblBlcmlvZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyaW9kSW5GcmFtZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RlcmVvVm9sdW1lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0Vm9sdW1lIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHRWb2x1bWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvRGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXRJbkJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemVJbkJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvRGF0YSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0SW5TaG9ydHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZUluU2hvcnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0JBRF9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0lOVkFMSURfT1BFUkFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9TVEFUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfU1RSRUFNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQTEFZU1RBVEVfUEFVU0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQTEFZU1RBVEVfUExBWUlORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUExBWVNUQVRFX1NUT1BQRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRFX0lOSVRJQUxJWkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9OT19TVEFUSUNfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfVU5JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VDQ0VTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBdWRpb1RyYWNrLk9uUGxheWJhY2tQb3NpdGlvblVwZGF0ZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbk1hcmtlclJlYWNoZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYWNrIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvVHJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QZXJpb2RpY05vdGlmaWNhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhY2siIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9UcmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FtY29yZGVyUHJvZmlsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImFuZHJvaWQubWVkaWEuQ2FtY29yZGVyUHJvZmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJRVUFMSVRZX0hJR0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlFVQUxJVFlfTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdWRpb0JpdFJhdGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXVkaW9DaGFubmVscyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdWRpb0NvZGVjIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1ZGlvU2FtcGxlUmF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkdXJhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWxlRm9ybWF0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InF1YWxpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmlkZW9CaXRSYXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZpZGVvQ29kZWMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmlkZW9GcmFtZUhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aWRlb0ZyYW1lUmF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aWRlb0ZyYW1lV2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNhbWVyYVByb2ZpbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNhbWVyYVByb2ZpbGUiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5DYW1lcmFQcm9maWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEpwZWdFbmNvZGluZ1F1YWxpdHlQYXJhbWV0ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUVVBTElUWV9ISUdIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJRVUFMSVRZX0xPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVBTElUWV9NRURJVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGlmSW50ZXJmYWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGlmSW50ZXJmYWNlIgorIHR5cGU9ImFuZHJvaWQubWVkaWEuRXhpZkludGVyZmFjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVEb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhdExvbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXQiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGh1bWJuYWlsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1RodW1ibmFpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZUF0dHJpYnV0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iT1JJRU5UQVRJT05fRkxJUF9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9GTElQX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1JPVEFURV8xODAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1JPVEFURV8yNzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1JPVEFURV85MCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJRU5UQVRJT05fVFJBTlNQT1NFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9UUkFOU1ZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR19EQVRFVElNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtEYXRlVGltZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfRkxBU0giCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Rmxhc2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0ZPQ0FMX0xFTkdUSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtGb2NhbExlbmd0aCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX0RBVEVTVEFNUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNEYXRlU3RhbXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0dQU19MQVRJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNMYXRpdHVkZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX0xBVElUVURFX1JFRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNMYXRpdHVkZVJlZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX0xPTkdJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNMb25naXR1ZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0dQU19MT05HSVRVREVfUkVGIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0dQU0xvbmdpdHVkZVJlZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX1BST0NFU1NJTkdfTUVUSE9EIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0dQU1Byb2Nlc3NpbmdNZXRob2QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0dQU19USU1FU1RBTVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7R1BTVGltZVN0YW1wJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR19JTUFHRV9MRU5HVEgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7SW1hZ2VMZW5ndGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0lNQUdFX1dJRFRIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0ltYWdlV2lkdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX01BS0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7TWFrZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfTU9ERUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7TW9kZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX09SSUVOVEFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O09yaWVudGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR19XSElURV9CQUxBTkNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1doaXRlQmFsYW5jZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURUJBTEFOQ0VfQVVUTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0hJVEVCQUxBTkNFX01BTlVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZhY2VEZXRlY3RvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmFjZURldGVjdG9yIgorIHR5cGU9ImFuZHJvaWQubWVkaWEuRmFjZURldGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heEZhY2VzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kRmFjZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2VzIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkZhY2VEZXRlY3Rvci5GYWNlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmFjZURldGVjdG9yLkZhY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb25maWRlbmNlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXllc0Rpc3RhbmNlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWlkUG9pbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb2ludEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldWxlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09ORklERU5DRV9USFJFU0hPTEQiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAuNGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVVMRVJfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVVMRVJfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVVMRVJfWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkpldFBsYXllciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUXVldWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZUpldEZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEpldFBsYXllciIKKyByZXR1cm49ImFuZHJvaWQubWVkaWEuSmV0UGxheWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4VHJhY2tzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEpldEZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRKZXRGaWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZkIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF1c2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsYXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXVlSmV0U2VnbWVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlZ21lbnROdW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliTnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zcG9zZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtdXRlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcklEIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXVlSmV0U2VnbWVudE11dGVBcnJheSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlZ21lbnROdW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliTnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zcG9zZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtdXRlQXJyYXkiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcklEIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV2ZW50TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5KZXRQbGF5ZXIuT25KZXRFdmVudExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV2ZW50TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5KZXRQbGF5ZXIuT25KZXRFdmVudExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TXV0ZUFycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXV0ZUFycmF5IiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5bmMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TXV0ZUZsYWciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFja0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im11dGVGbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeW5jIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE11dGVGbGFncyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im11dGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeW5jIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyaWdnZXJDbGlwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xpcElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkpldFBsYXllci5PbkpldEV2ZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uSmV0RXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYXllciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5KZXRQbGF5ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlZ21lbnQiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFjayIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udHJvbGxlciIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25KZXROdW1RdWV1ZWRTZWdtZW50VXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGF5ZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuSmV0UGxheWVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYlNlZ21lbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25KZXRQYXVzZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGxheWVyIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkpldFBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF1c2VkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25KZXRVc2VySWRVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYXllciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5KZXRQbGF5ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXBlYXRDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZWRpYVBsYXllciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFQbGF5ZXIiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldER1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlkZW9IZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWaWRlb1dpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb29waW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGxheWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXVzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVBc3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWVrVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1ZGlvU3RyZWFtVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtdHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGFTb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhU291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YVNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YVNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzcGxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb29waW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb29waW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQnVmZmVyaW5nVXBkYXRlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllci5PbkJ1ZmZlcmluZ1VwZGF0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ29tcGxldGlvbkxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25Db21wbGV0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25FcnJvckxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25FcnJvckxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSW5mb0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25JbmZvTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25QcmVwYXJlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25QcmVwYXJlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uU2Vla0NvbXBsZXRlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllci5PblNlZWtDb21wbGV0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uVmlkZW9TaXplQ2hhbmdlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25WaWRlb1NpemVDaGFuZ2VkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NyZWVuT25XaGlsZVBsYXlpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY3JlZW5PbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWb2x1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnRWb2x1bWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodFZvbHVtZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FrZU1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9FUlJPUl9OT1RfVkFMSURfRk9SX1BST0dSRVNTSVZFX1BMQVlCQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0VSUk9SX1NFUlZFUl9ESUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0VSUk9SX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0lORk9fQkFEX0lOVEVSTEVBVklORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9JTkZPX01FVEFEQVRBX1VQREFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9JTkZPX05PVF9TRUVLQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9JTkZPX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0lORk9fVklERU9fVFJBQ0tfTEFHR0lORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhUGxheWVyLk9uQnVmZmVyaW5nVXBkYXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQnVmZmVyaW5nVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtcCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyY2VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFQbGF5ZXIuT25Db21wbGV0aW9uTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ29tcGxldGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXAiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVBsYXllci5PbkVycm9yTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRXJyb3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1wIiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVBsYXllci5PbkluZm9MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25JbmZvIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtcCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFQbGF5ZXIuT25QcmVwYXJlZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblByZXBhcmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtcCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhUGxheWVyLk9uU2Vla0NvbXBsZXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2Vla0NvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtcCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhUGxheWVyLk9uVmlkZW9TaXplQ2hhbmdlZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblZpZGVvU2l6ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1wIiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWVkaWFSZWNvcmRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFSZWNvcmRlciIKKyB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUmVjb3JkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXVkaW9Tb3VyY2VNYXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEFtcGxpdHVkZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlcGFyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXVkaW9DaGFubmVscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUNoYW5uZWxzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXVkaW9FbmNvZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb19lbmNvZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdWRpb0VuY29kaW5nQml0UmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdFJhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdWRpb1NhbXBsaW5nUmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhbXBsaW5nUmF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1ZGlvU291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb19zb3VyY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhbWVyYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4RHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heF9kdXJhdGlvbl9tcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4RmlsZVNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heF9maWxlc2l6ZV9ieXRlcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uRXJyb3JMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFSZWNvcmRlci5PbkVycm9yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25JbmZvTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVJlY29yZGVyLk9uSW5mb0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE91dHB1dEZpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE91dHB1dEZpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3V0cHV0Rm9ybWF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRfZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmV2aWV3RGlzcGxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN2IiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9maWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZmlsZSIgdHlwZT0iYW5kcm9pZC5tZWRpYS5DYW1jb3JkZXJQcm9maWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZGVvRW5jb2RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlkZW9fZW5jb2RlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmlkZW9FbmNvZGluZ0JpdFJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRSYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmlkZW9GcmFtZVJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZGVvU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWRlb1NvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlkZW9fc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FRElBX1JFQ09SREVSX0VSUk9SX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX1JFQ09SREVSX0lORk9fTUFYX0RVUkFUSU9OX1JFQUNIRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRklMRVNJWkVfUkVBQ0hFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9SRUNPUkRFUl9JTkZPX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2RlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJBTVJfTkIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVJlY29yZGVyLkF1ZGlvU291cmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNBTUNPUkRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWT0lDRV9DQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWT0lDRV9ET1dOTElOSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVk9JQ0VfUkVDT0dOSVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPSUNFX1VQTElOSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVJlY29yZGVyLk9uRXJyb3JMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25FcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFSZWNvcmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFSZWNvcmRlci5PbkluZm9MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25JbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVJlY29yZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik1lZGlhUmVjb3JkZXIuT3V0cHV0Rm9ybWF0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1QRUdfNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkFXX0FNUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhSRUVfR1BQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFSZWNvcmRlci5WaWRlb0VuY29kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSDI2MyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSDI2NCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVBFR180X1NQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFSZWNvcmRlci5WaWRlb1NvdXJjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJDQU1FUkEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVNjYW5uZXJDb25uZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTY2FubmVyQ29ubmVjdGlvbiIKKyB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhU2Nhbm5lckNvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xpZW50IiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhU2Nhbm5lckNvbm5lY3Rpb24uTWVkaWFTY2FubmVyQ29ubmVjdGlvbkNsaWVudCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VydmljZUNvbm5lY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZpY2UiIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNlcnZpY2VEaXNjb25uZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjYW5GaWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWltZVR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbkZpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRocyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW1lVHlwZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFTY2FubmVyQ29ubmVjdGlvbi5PblNjYW5Db21wbGV0ZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFTY2FubmVyQ29ubmVjdGlvbi5NZWRpYVNjYW5uZXJDb25uZWN0aW9uQ2xpZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVNjYW5uZXJDb25uZWN0aW9uLk9uU2NhbkNvbXBsZXRlZExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0ib25NZWRpYVNjYW5uZXJDb25uZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY2FuQ29tcGxldGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhU2Nhbm5lckNvbm5lY3Rpb24uT25TY2FuQ29tcGxldGVkTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2NhbkNvbXBsZXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJpbmd0b25lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyZWFtVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGxheWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZWFtVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSaW5ndG9uZU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJpbmd0b25lTWFuYWdlciIKKyB0eXBlPSJhbmRyb2lkLm1lZGlhLlJpbmd0b25lTWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmluZ3RvbmVNYW5hZ2VyIgorIHR5cGU9ImFuZHJvaWQubWVkaWEuUmluZ3RvbmVNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY3R1YWxEZWZhdWx0UmluZ3RvbmVVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJzb3IiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0UmluZ3RvbmVVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmNsdWRlRHJtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSaW5ndG9uZSIKKyByZXR1cm49ImFuZHJvaWQubWVkaWEuUmluZ3RvbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmluZ3RvbmUiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLlJpbmd0b25lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaW5ndG9uZVVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJpbmd0b25lUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJpbmd0b25lVXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmluZ3RvbmVVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RvcFByZXZpb3VzUmluZ3RvbmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbGlkUmluZ3RvbmVVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mZXJTdHJlYW1UeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVmYXVsdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmluZ3RvbmVVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY3R1YWxEZWZhdWx0UmluZ3RvbmVVcmkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpbmd0b25lVXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5jbHVkZURybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVEcm0iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RvcFByZXZpb3VzUmluZ3RvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdG9wUHJldmlvdXNSaW5ndG9uZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BQcmV2aW91c1Jpbmd0b25lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9SSU5HVE9ORV9QSUNLRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlJJTkdUT05FX1BJQ0tFUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SSU5HVE9ORV9ERUZBVUxUX1VSSSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5yaW5ndG9uZS5ERUZBVUxUX1VSSSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SSU5HVE9ORV9FWElTVElOR19VUkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmluZ3RvbmUuRVhJU1RJTkdfVVJJJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX0lOQ0xVREVfRFJNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnJpbmd0b25lLklOQ0xVREVfRFJNJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX1BJQ0tFRF9VUkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmluZ3RvbmUuUElDS0VEX1VSSSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SSU5HVE9ORV9TSE9XX0RFRkFVTFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmluZ3RvbmUuU0hPV19ERUZBVUxUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX1NIT1dfU0lMRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnJpbmd0b25lLlNIT1dfU0lMRU5UJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX1RJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnJpbmd0b25lLlRJVExFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmluZ3RvbmUuVFlQRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJRF9DT0xVTU5fSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJVExFX0NPTFVNTl9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BTEFSTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTk9USUZJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1JJTkdUT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVUklfQ09MVU1OX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU291bmRQb29sIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb3VuZFBvb2wiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5Tb3VuZFBvb2wiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhTdHJlYW1zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjUXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXV0b1BhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXV0b1Jlc3VtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZkIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmlvcml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGxheSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdW5kSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdFZvbHVtZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0Vm9sdW1lIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXRlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9vcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1JRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb29wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25Mb2FkQ29tcGxldGVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLm1lZGlhLlNvdW5kUG9vbC5PbkxvYWRDb21wbGV0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByaW9yaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1JRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXRlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWb2x1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdFZvbHVtZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0Vm9sdW1lIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5sb2FkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdW5kSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU291bmRQb29sLk9uTG9hZENvbXBsZXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTG9hZENvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VuZFBvb2wiIHR5cGU9ImFuZHJvaWQubWVkaWEuU291bmRQb29sIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYW1wbGVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGh1bWJuYWlsVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRodW1ibmFpbFV0aWxzIgorIHR5cGU9ImFuZHJvaWQubWVkaWEuVGh1bWJuYWlsVXRpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVmlkZW9UaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlUGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dHJhY3RUaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHRyYWN0VGh1bWJuYWlsIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9QVElPTlNfUkVDWUNMRV9JTlBVVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRvbmVHZW5lcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRvbmVHZW5lcmF0b3IiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5Ub25lR2VuZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2b2x1bWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9uZVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFRvbmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRvbmVUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uTXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wVG9uZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1BWF9WT0xVTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1ZPTFVNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0FCQlJfQUxFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQUJCUl9JTlRFUkNFUFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQUJCUl9SRU9SREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0FMRVJUX0FVVE9SRURJQUxfTElURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9BTEVSVF9DQUxMX0dVQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0FMRVJUX0lOQ0FMTF9MSVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0FMRVJUX05FVFdPUktfTElURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9BTlNXRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQ0FMTERST1BfTElURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9DQUxMX1NJR05BTF9JU0ROX0lOVEVSR1JPVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQ0FMTF9TSUdOQUxfSVNETl9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQ0FMTF9TSUdOQUxfSVNETl9QQVQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0NBTExfU0lHTkFMX0lTRE5fUEFUNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9DQUxMX1NJR05BTF9JU0ROX1BBVDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQ0FMTF9TSUdOQUxfSVNETl9QQVQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0NBTExfU0lHTkFMX0lTRE5fUElOR19SSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0NBTExfU0lHTkFMX0lTRE5fU1BfUFJJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0NPTkZJUk0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfRElBTF9UT05FX0xJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfRU1FUkdFTkNZX1JJTkdCQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0hJR0hfTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1BCWF9MIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0hJR0hfUEJYX1NMUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1BCWF9TUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1BCWF9TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfSElHSF9QQlhfU19YNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1NMUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1NTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0hJR0hfU1NMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0hJR0hfU1NfMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1NfWDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfSU5URVJDRVBUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0tFWVBBRF9WT0xVTUVfS0VZX0xJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1BCWF9MIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0xPV19QQlhfU0xTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0xPV19QQlhfU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1BCWF9TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1BCWF9TX1g0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0xPV19TTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1NTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0xPV19TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1NTXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1NfWDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1BCWF9MIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX01FRF9QQlhfU0xTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX01FRF9QQlhfU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1BCWF9TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1BCWF9TX1g0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX01FRF9TTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1NTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX01FRF9TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1NTXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1NfWDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTkVUV09SS19CVVNZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX05FVFdPUktfQlVTWV9PTkVfU0hPVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ORVRXT1JLX0NBTExXQUlUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX05FVFdPUktfVVNBX1JJTkdCQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX09ORV9NSU5fQkVFUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9QSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfUFJFU1NIT0xES0VZX0xJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfUkVPUkRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9TSUdOQUxfT0ZGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX1NPRlRfRVJST1JfTElURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl8wIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl8zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GXzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl82IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GXzgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl85IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl9CIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GX0MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GX1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1BST1BfQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9QUk9QX0JFRVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1BST1BfQkVFUDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1BST1BfTkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfUFJPUF9QUk9NUFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9CVVNZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9TVVBfQ0FMTF9XQUlUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9TVVBfQ09ORklSTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX0NPTkdFU1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9DT05HRVNUSU9OX0FCQlJFViIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX0RJQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX0lOVEVSQ0VQVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX0lOVEVSQ0VQVF9BQkJSRVYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9QSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9SQURJT19BQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9SQURJT19OT1RBVkFJTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX1JJTkdUT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5uZXQiCis+Cis8Y2xhc3MgbmFtZT0iQ29ubmVjdGl2aXR5TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2ZU5ldHdvcmtJbmZvIgorIHJldHVybj0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsTmV0d29ya0luZm8iCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mb1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJhY2tncm91bmREYXRhU2V0dGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV0d29ya0luZm8iCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV0d29ya1R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXR3b3JrUHJlZmVyZW5jZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05ldHdvcmtUeXBlVmFsaWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFJvdXRlVG9Ib3N0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV0d29ya1R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdEFkZHJlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXR3b3JrUHJlZmVyZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZlcmVuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFVzaW5nTmV0d29ya0ZlYXR1cmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFVzaW5nTmV0d29ya0ZlYXR1cmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQkFDS0dST1VORF9EQVRBX1NFVFRJTkdfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC5jb25uLkJBQ0tHUk9VTkRfREFUQV9TRVRUSU5HX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OTkVDVElWSVRZX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC5jb25uLkNPTk5FQ1RJVklUWV9DSEFOR0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9ORVRXT1JLX1BSRUZFUkVOQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0VYVFJBX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZXh0cmFJbmZvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0lTX0ZBSUxPVkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzRmFpbG92ZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfTkVUV09SS19JTkZPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25ldHdvcmtJbmZvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX05PX0NPTk5FQ1RJVklUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtub0Nvbm5lY3Rpdml0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9PVEhFUl9ORVRXT1JLX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7b3RoZXJOZXR3b3JrJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JFQVNPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtyZWFzb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTU9CSUxFX0RVTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEVfSElQUkkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTU9CSUxFX01NUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEVfU1VQTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XSUZJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dJTUFYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3JlZGVudGlhbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNyZWRlbnRpYWxzIgorIHR5cGU9ImFuZHJvaWQubmV0LkNyZWRlbnRpYWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEdpZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQaWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VWlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRoY3BJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGhjcEluZm8iCisgdHlwZT0iYW5kcm9pZC5uZXQuRGhjcEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJkbnMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRuczIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2F0ZXdheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpcEFkZHJlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGVhc2VEdXJhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuZXRtYXNrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlcnZlckFkZHJlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxvY2FsU2VydmVyU29ja2V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhbFNlcnZlclNvY2tldCIKKyB0eXBlPSJhbmRyb2lkLm5ldC5Mb2NhbFNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhbFNlcnZlclNvY2tldCIKKyB0eXBlPSJhbmRyb2lkLm5ldC5Mb2NhbFNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjY2VwdCIKKyByZXR1cm49ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5pby5GaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFNvY2tldEFkZHJlc3MiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxTb2NrZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2FsU29ja2V0IgorIHR5cGU9ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaW5kcG9pbnQiIHR5cGU9ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kcG9pbnQiIHR5cGU9ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZHBvaW50IiB0eXBlPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5jaWxsYXJ5RmlsZURlc2NyaXB0b3JzIgorIHJldHVybj0iamF2YS5pby5GaWxlRGVzY3JpcHRvcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFNvY2tldEFkZHJlc3MiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJDcmVkZW50aWFscyIKKyByZXR1cm49ImFuZHJvaWQubmV0LkNyZWRlbnRpYWxzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW5kQnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29UaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JvdW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2xvc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nvbm5lY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lucHV0U2h1dGRvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3V0cHV0U2h1dGRvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbGVEZXNjcmlwdG9yc0ZvclNlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZHMiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3JbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VuZEJ1ZmZlclNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd25JbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duT3V0cHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxTb2NrZXRBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhbFNvY2tldEFkZHJlc3MiCisgdHlwZT0iYW5kcm9pZC5uZXQuTG9jYWxTb2NrZXRBZGRyZXNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MuTmFtZXNwYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhbFNvY2tldEFkZHJlc3MiCisgdHlwZT0iYW5kcm9pZC5uZXQuTG9jYWxTb2NrZXRBZGRyZXNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVzcGFjZSIKKyByZXR1cm49ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcy5OYW1lc3BhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxTb2NrZXRBZGRyZXNzLk5hbWVzcGFjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcy5OYW1lc3BhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MuTmFtZXNwYWNlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1haWxUbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEJvZHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENjIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUbyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNYWlsVG8iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lk1haWxUbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm5ldC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1BSUxUT19TQ0hFTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bWFpbHRvOiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmV0d29ya0luZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXRhaWxlZFN0YXRlIgorIHJldHVybj0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8uRGV0YWlsZWRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYUluZm8iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYXNvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mby5TdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJ0eXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YnR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F2YWlsYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGVkT3JDb25uZWN0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZhaWxvdmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JvYW1pbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZXR3b3JrSW5mby5EZXRhaWxlZFN0YXRlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8uRGV0YWlsZWRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvLkRldGFpbGVkU3RhdGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmV0d29ya0luZm8uU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mby5TdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvLlN0YXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcnNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0icmVzcG9uc2UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm94eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm94eSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5Qcm94eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0SG9zdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN0eCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN0eCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJQUk9YWV9DSEFOR0VfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5QUk9YWV9DSEFOR0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTENlcnRpZmljYXRlU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xDZXJ0aWZpY2F0ZVNvY2tldEZhY3RvcnkiCisgdHlwZT0iYW5kcm9pZC5uZXQuU1NMQ2VydGlmaWNhdGVTb2NrZXRGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kc2hha2VUaW1lb3V0TWlsbGlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImsiIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbG9zZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxBZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0IgorIHJldHVybj0iamF2YXgubmV0LlNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZHNoYWtlVGltZW91dE1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZHNoYWtlVGltZW91dE1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWNoZSIgdHlwZT0iYW5kcm9pZC5uZXQuU1NMU2Vzc2lvbkNhY2hlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRDaXBoZXJTdWl0ZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SHR0cFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kc2hha2VUaW1lb3V0TWlsbGlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhY2hlIiB0eXBlPSJhbmRyb2lkLm5ldC5TU0xTZXNzaW9uQ2FjaGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zZWN1cmUiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZHNoYWtlVGltZW91dE1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWNoZSIgdHlwZT0iYW5kcm9pZC5uZXQuU1NMU2Vzc2lvbkNhY2hlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZENpcGhlclN1aXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTU0xTZXNzaW9uQ2FjaGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2Vzc2lvbkNhY2hlIgorIHR5cGU9ImFuZHJvaWQubmV0LlNTTFNlc3Npb25DYWNoZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2Vzc2lvbkNhY2hlIgorIHR5cGU9ImFuZHJvaWQubmV0LlNTTFNlc3Npb25DYWNoZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHJhZmZpY1N0YXRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFmZmljU3RhdHMiCisgdHlwZT0iYW5kcm9pZC5uZXQuVHJhZmZpY1N0YXRzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vYmlsZVJ4Qnl0ZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2JpbGVSeFBhY2tldHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2JpbGVUeEJ5dGVzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9iaWxlVHhQYWNrZXRzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG90YWxSeEJ5dGVzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG90YWxSeFBhY2tldHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFR4Qnl0ZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFR4UGFja2V0cyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVpZFJ4Qnl0ZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VWlkVHhCeXRlcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlVOU1VQUE9SVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVyaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkVXBvbiIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlciIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGxvdyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmcm9tRmlsZSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVBhcnRzIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3NwIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFnbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRob3JpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZEF1dGhvcml0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkRnJhZ21lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZFF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kZWRTY2hlbWVTcGVjaWZpY1BhcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZFVzZXJJbmZvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYWdtZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdFBhdGhTZWdtZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGF0aFNlZ21lbnRzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVlcnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVlcnlQYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVlcnlQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lU3BlY2lmaWNQYXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJJbmZvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJzb2x1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSGllcmFyY2hpY2FsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BhcXVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlbGF0aXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoQXBwZW5kZWRQYXRoIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aFNlZ21lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVXJpLkJ1aWxkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVcmkuQnVpbGRlciIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRFbmNvZGVkUGF0aCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTZWdtZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZFBhdGgiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U2VnbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRRdWVyeVBhcmFtZXRlciIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF1dGhvcml0eSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVpbGQiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlZEF1dGhvcml0eSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlZEZyYWdtZW50IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWdtZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZWRPcGFxdWVQYXJ0IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wYXF1ZVBhcnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlZFBhdGgiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVkUXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJhZ21lbnQiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhZ21lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BhcXVlUGFydCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcGFxdWVQYXJ0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhdGgiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlbWUiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVybFF1ZXJ5U2FuaXRpemVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVcmxRdWVyeVNhbml0aXplciIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVybFF1ZXJ5U2FuaXRpemVyIgorIHR5cGU9ImFuZHJvaWQubmV0LlVybFF1ZXJ5U2FuaXRpemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkU2FuaXRpemVkRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVIZXhEaWdpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxCdXROdWxBbmRBbmdsZUJyYWNrZXRzTGVnYWwiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsQnV0TnVsTGVnYWwiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsQnV0V2hpdGVzcGFjZUxlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbElsbGVnYWwiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb3dVbnJlZ2lzdGVyZWRQYXJhbWF0ZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbXBBbmRTcGFjZUxlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFtcExlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVmZmVjdGl2ZVZhbHVlU2FuaXRpemVyIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuUGFyYW1ldGVyVmFsdWVQYWlyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlckZpcnN0UmVwZWF0ZWRQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYWNlTGVnYWwiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5yZWdpc3RlcmVkUGFyYW1ldGVyVmFsdWVTYW5pdGl6ZXIiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcmxBbmRTcGFjZUxlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVybExlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlU2FuaXRpemVyIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIZXhEaWdpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VRdWVyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlVXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyUGFyYW1ldGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZVNhbml0aXplciIgdHlwZT0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJQYXJhbWV0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZVNhbml0aXplciIgdHlwZT0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxsb3dVbnJlZ2lzdGVyZWRQYXJhbWF0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxsb3dVbnJlZ2lzdGVyZWRQYXJhbWF0ZXJzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZWZlckZpcnN0UmVwZWF0ZWRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJGaXJzdFJlcGVhdGVkUGFyYW1ldGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVucmVnaXN0ZXJlZFBhcmFtZXRlclZhbHVlU2FuaXRpemVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FuaXRpemVyIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmVzY2FwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVcmxRdWVyeVNhbml0aXplci5JbGxlZ2FsQ2hhcmFjdGVyVmFsdWVTYW5pdGl6ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXJsUXVlcnlTYW5pdGl6ZXIuSWxsZWdhbENoYXJhY3RlclZhbHVlU2FuaXRpemVyIgorIHR5cGU9ImFuZHJvaWQubmV0LlVybFF1ZXJ5U2FuaXRpemVyLklsbGVnYWxDaGFyYWN0ZXJWYWx1ZVNhbml0aXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzYW5pdGl6ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUxMX0JVVF9OVUxfQU5EX0FOR0xFX0JSQUNLRVRTX0xFR0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTExfQlVUX05VTF9MRUdBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxMX0JVVF9XSElURVNQQUNFX0xFR0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTExfSUxMRUdBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxMX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTExfV0hJVEVTUEFDRV9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU1QX0FORF9TUEFDRV9MRUdBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTVBfTEVHQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU1QX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRRVU9URV9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1RfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMVF9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PTl83X0JJVF9BU0NJSV9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVMX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9USEVSX1dISVRFU1BBQ0VfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBDVF9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JJUFRfVVJMX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTUEFDRV9MRUdBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBQ0VfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNRVU9URV9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVSTF9BTkRfU1BBQ0VfTEVHQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVJMX0xFR0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVcmxRdWVyeVNhbml0aXplci5QYXJhbWV0ZXJWYWx1ZVBhaXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVybFF1ZXJ5U2FuaXRpemVyLlBhcmFtZXRlclZhbHVlUGFpciIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5QYXJhbWV0ZXJWYWx1ZVBhaXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJtUGFyYW1ldGVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtVmFsdWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InNhbml0aXplIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLm5ldC5odHRwIgorPgorPGNsYXNzIG5hbWU9IkFuZHJvaWRIdHRwQ2xpZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwQ2xpZW50Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGVDdXJsTG9nZ2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlQ3VybExvZ2dpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXNwb25zZUhhbmRsZXImbHQ7PyBleHRlbmRzIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwVXJpUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2VIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlc3BvbnNlSGFuZGxlciZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcHJlc3NlZEVudGl0eSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQWJzdHJhY3RIdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb25NYW5hZ2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluR3ppcFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVbmd6aXBwZWRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb2RpZnlSZXF1ZXN0VG9BY2NlcHRHemlwUmVzcG9uc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuQW5kcm9pZEh0dHBDbGllbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlckFnZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuQW5kcm9pZEh0dHBDbGllbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlckFnZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlRGF0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU1lOQ19NSU5fR1pJUF9CWVRFUyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3NsQ2VydGlmaWNhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNzbENlcnRpZmljYXRlIgorIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlZFRvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZWRCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsaWROb3RCZWZvcmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkTm90QWZ0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNzbENlcnRpZmljYXRlIgorIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZWRUbyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNzdWVkQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkTm90QmVmb3JlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsaWROb3RBZnRlciIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNzbENlcnRpZmljYXRlIgorIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlZEJ5IgorIHJldHVybj0iYW5kcm9pZC5uZXQuaHR0cC5Tc2xDZXJ0aWZpY2F0ZS5ETmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJc3N1ZWRUbyIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUuRE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsaWROb3RBZnRlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWxpZE5vdEFmdGVyRGF0ZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbGlkTm90QmVmb3JlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbGlkTm90QmVmb3JlRGF0ZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVuZGxlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlU3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iYW5kcm9pZC5uZXQuaHR0cC5Tc2xDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTc2xDZXJ0aWZpY2F0ZS5ETmFtZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3NsQ2VydGlmaWNhdGUuRE5hbWUiCisgdHlwZT0iYW5kcm9pZC5uZXQuaHR0cC5Tc2xDZXJ0aWZpY2F0ZS5ETmFtZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNzbEVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTc2xFcnJvciIKKyB0eXBlPSJhbmRyb2lkLm5ldC5odHRwLlNzbEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNzbEVycm9yIgorIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEVycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWFyeUVycm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0Vycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNTTF9FWFBJUkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTU0xfSURNSVNNQVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1NMX01BWF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1NMX05PVFlFVFZBTElEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTU0xfVU5UUlVTVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLm5ldC53aWZpIgorPgorPGNsYXNzIG5hbWU9IlNjYW5SZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FwYWJpbGl0aWVzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmcmVxdWVuY3kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN1cHBsaWNhbnRTdGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWRTdGF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImFuZHJvaWQubmV0LndpZmkuU3VwcGxpY2FudFN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC53aWZpLlN1cHBsaWNhbnRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQubmV0LndpZmkuU3VwcGxpY2FudFN0YXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXaWZpQ29uZmlndXJhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpZmlDb25maWd1cmF0aW9uIgorIHR5cGU9ImFuZHJvaWQubmV0LndpZmkuV2lmaUNvbmZpZ3VyYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dlZEF1dGhBbGdvcml0aG1zIgorIHR5cGU9ImphdmEudXRpbC5CaXRTZXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbGxvd2VkR3JvdXBDaXBoZXJzIgorIHR5cGU9ImphdmEudXRpbC5CaXRTZXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbGxvd2VkS2V5TWFuYWdlbWVudCIKKyB0eXBlPSJqYXZhLnV0aWwuQml0U2V0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dlZFBhaXJ3aXNlQ2lwaGVycyIKKyB0eXBlPSJqYXZhLnV0aWwuQml0U2V0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dlZFByb3RvY29scyIKKyB0eXBlPSJqYXZhLnV0aWwuQml0U2V0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGlkZGVuU1NJRCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibmV0d29ya0lkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZVNoYXJlZEtleSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpb3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdHVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndlcEtleXMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2VwVHhLZXlJbmRleCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2lmaUNvbmZpZ3VyYXRpb24uQXV0aEFsZ29yaXRobSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJMRUFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUEVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSEFSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0cmluZ3MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZhck5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0aF9hbGcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpZmlDb25maWd1cmF0aW9uLkdyb3VwQ2lwaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNDTVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRLSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFUDEwNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VQNDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0cmluZ3MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZhck5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpZmlDb25maWd1cmF0aW9uLktleU1nbXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iSUVFRTgwMjFYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUEFfRUFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUEFfUFNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdHJpbmdzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YXJOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2tleV9tZ210JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXaWZpQ29uZmlndXJhdGlvbi5QYWlyd2lzZUNpcGhlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJDQ01QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUS0lQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdHJpbmdzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YXJOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhaXJ3aXNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXaWZpQ29uZmlndXJhdGlvbi5Qcm90b2NvbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJSU04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldQQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RyaW5ncyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmFyTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwcm90byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2lmaUNvbmZpZ3VyYXRpb24uU3RhdHVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNVUlJFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU0FCTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdHJpbmdzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2lmaUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCU1NJRCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV0YWlsZWRTdGF0ZU9mIgorIHJldHVybj0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8uRGV0YWlsZWRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdXBwU3RhdGUiIHR5cGU9ImFuZHJvaWQubmV0LndpZmkuU3VwcGxpY2FudFN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpZGRlblNTSUQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElwQWRkcmVzcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5rU3BlZWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFjQWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV0d29ya0lkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJzc2kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U1NJRCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcGxpY2FudFN0YXRlIgorIHJldHVybj0iYW5kcm9pZC5uZXQud2lmaS5TdXBwbGljYW50U3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTElOS19TUEVFRF9VTklUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtNYnBzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXaWZpTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZE5ldHdvcmsiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5uZXQud2lmaS5XaWZpQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxjdWxhdGVTaWduYWxMZXZlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyc3NpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUxldmVscyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVTaWduYWxMZXZlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyc3NpQSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyc3NpQiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZU11bHRpY2FzdExvY2siCisgcmV0dXJuPSJhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyLk11bHRpY2FzdExvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVXaWZpTG9jayIKKyByZXR1cm49ImFuZHJvaWQubmV0LndpZmkuV2lmaU1hbmFnZXIuV2lmaUxvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2tUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVXaWZpTG9jayIKKyByZXR1cm49ImFuZHJvaWQubmV0LndpZmkuV2lmaU1hbmFnZXIuV2lmaUxvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNhYmxlTmV0d29yayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzY29ubmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlTmV0d29yayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc2FibGVPdGhlcnMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uZmlndXJlZE5ldHdvcmtzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5uZXQud2lmaS5XaWZpQ29uZmlndXJhdGlvbiZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLm5ldC53aWZpLldpZmlJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERoY3BJbmZvIgorIHJldHVybj0iYW5kcm9pZC5uZXQuRGhjcEluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhblJlc3VsdHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLm5ldC53aWZpLlNjYW5SZXN1bHQmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpZmlTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1dpZmlFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwaW5nU3VwcGxpY2FudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhc3NvY2lhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY29ubmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTmV0d29yayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZUNvbmZpZ3VyYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdpZmlFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNjYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU5ldHdvcmsiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5uZXQud2lmaS5XaWZpQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QSUNLX1dJRklfTkVUV09SSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLlBJQ0tfV0lGSV9ORVRXT1JLJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0FVVEhFTlRJQ0FUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9CU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtic3NpZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9ORVRXT1JLX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV0d29ya0luZm8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfTkVXX1JTU0kiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV3UnNzaSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9ORVdfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV3U3RhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUFJFVklPVVNfV0lGSV9TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwcmV2aW91c193aWZpX3N0YXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NVUFBMSUNBTlRfQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Nvbm5lY3RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TVVBQTElDQU5UX0VSUk9SIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1cHBsaWNhbnRFcnJvciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9XSUZJX1NUQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfc3RhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19JRFNfQ0hBTkdFRF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5uZXQud2lmaS5ORVRXT1JLX0lEU19DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfU1RBVEVfQ0hBTkdFRF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5uZXQud2lmaS5TVEFURV9DSEFOR0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlNTSV9DSEFOR0VEX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLlJTU0lfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0FOX1JFU1VMVFNfQVZBSUxBQkxFX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLlNDQU5fUkVTVUxUUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVBQTElDQU5UX0NPTk5FQ1RJT05fQ0hBTkdFX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLnN1cHBsaWNhbnQuQ09OTkVDVElPTl9DSEFOR0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VQUExJQ0FOVF9TVEFURV9DSEFOR0VEX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLnN1cHBsaWNhbnQuU1RBVEVfQ0hBTkdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfTU9ERV9GVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX01PREVfU0NBTl9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRFX0NIQU5HRURfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubmV0LndpZmkuV0lGSV9TVEFURV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVEVfRElTQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVEVfRElTQUJMSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRFX0VOQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVEVfRU5BQkxJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVEVfVU5LTk9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpZmlNYW5hZ2VyLk11bHRpY2FzdExvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hlbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlZmVyZW5jZUNvdW50ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWZDb3VudGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpZmlNYW5hZ2VyLldpZmlMb2NrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIZWxkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWZlcmVuY2VDb3VudGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmQ291bnRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQub3BlbmdsIgorPgorPGNsYXNzIG5hbWU9IkVUQzEiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVUQzEiCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuRVRDMSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVCbG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVJbWFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVsU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVCbG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZFBpeGVsTWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVJbWFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kZWREYXRhU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFQ09ERURfQkxPQ0tfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ERURfQkxPQ0tfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVRDMV9SR0I4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVUQ19QS01fSEVBREVSX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRVRDMVV0aWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVUQzFVdGlsIgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkVUQzFVdGlsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXByZXNzVGV4dHVyZSIKKyByZXR1cm49ImFuZHJvaWQub3BlbmdsLkVUQzFVdGlsLkVUQzFUZXh0dXJlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVGV4dHVyZSIKKyByZXR1cm49ImFuZHJvaWQub3BlbmdsLkVUQzFVdGlsLkVUQzFUZXh0dXJlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VUQzFTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZFRleHR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2tGb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2tUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkVGV4dHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFja0Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFja1R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuRVRDMVV0aWwuRVRDMVRleHR1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlIiB0eXBlPSJhbmRyb2lkLm9wZW5nbC5FVEMxVXRpbC5FVEMxVGV4dHVyZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRVRDMVV0aWwuRVRDMVRleHR1cmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRVRDMVV0aWwuRVRDMVRleHR1cmUiCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuRVRDMVV0aWwuRVRDMVRleHR1cmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERhdGEiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHTERlYnVnSGVscGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHTERlYnVnSGVscGVyIgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMRGVidWdIZWxwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdsIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nIiB0eXBlPSJqYXZhLmlvLldyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0wiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZ0ZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZyIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfQ0hFQ0tfR0xfRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19DSEVDS19USFJFQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19MT0dfQVJHVU1FTlRfTkFNRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX1dST05HX1RIUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4NjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHTEVTMTAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdMRVMxMCIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTEVTMTAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2xBY3RpdmVUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEFscGhhRnVuYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdW5jIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xBbHBoYUZ1bmN4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kVGV4dHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRGdW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNmYWN0b3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhckNvbG9yeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsZWFyU3RlbmNpbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGllbnRBY3RpdmVUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbG9yNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3I0eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3JNYXNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3JQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbXByZXNzZWRUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcm5hbGZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltYWdlU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieG9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1hZ2VTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvcHlUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcm5hbGZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29weVRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDdWxsRmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVUZXh0dXJlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVUZXh0dXJlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmVzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aEZ1bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnVuYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhNYXNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aFJhbmdlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhSYW5nZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iekZhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGlzYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERpc2FibGVDbGllbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd0FycmF5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3RWxlbWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZUNsaWVudFN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGaW5pc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2dmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZvZ2Z2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2dmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9neCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9neHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2d4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZyb250RmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcnVzdHVtZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJ1c3R1bXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlblRleHR1cmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlblRleHR1cmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEVycm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEludGVnZXJ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0SW50ZWdlcnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSGludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVsZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0TW9kZWx4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHR4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHR4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpbmVXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaW5lV2lkdGh4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkSWRlbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExvYWRNYXRyaXhmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkTWF0cml4eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkTWF0cml4eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2dpY09wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTWF0ZXJpYWxmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTWF0ZXJpYWxmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdGVyaWFseCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRyaXhNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE11bHRNYXRyaXhmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNdWx0TWF0cml4eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNdWx0TWF0cml4eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNdWx0aVRleENvb3JkNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdGlUZXhDb29yZDR4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xOb3JtYWwzZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJueCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im55IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTm9ybWFsM3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE5vcm1hbFBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE9ydGhvZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsT3J0aG94IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQaXhlbFN0b3JlaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRTaXpleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2x5Z29uT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXRzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvbHlnb25PZmZzZXR4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9wTWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQdXNoTWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xSZWFkUGl4ZWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xSb3RhdGVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ2xlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJvdGF0ZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5nbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNhbXBsZUNvdmVyYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW52ZXJ0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2FtcGxlQ292ZXJhZ2V4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludmVydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjYWxlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2NhbGV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTY2lzc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNoYWRlTW9kZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbEZ1bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnVuYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE1hc2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iemZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ienBhc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleENvb3JkUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybmFsZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4U3ViSW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieG9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRyYW5zbGF0ZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRyYW5zbGF0ZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleFBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmlld3BvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfQUREIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTFBIQV9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTFBIQV9URVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTFdBWVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQU1CSUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQU1CSUVOVF9BTkRfRElGRlVTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU2MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTkRfSU5WRVJURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MzgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FORF9SRVZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxVRV9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CWVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DQ1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMQU1QX1RPX0VER0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzA3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTEVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVJSQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfTE9HSUNfT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX01BVEVSSUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTlNUQU5UX0FUVEVOVUFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT1BZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT1BZX0lOVkVSVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVUxMX0ZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERUNBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg0NDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVDUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQlVGRkVSX0JJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9URVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ESUZGVVNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ESVRIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RPTlRfQ0FSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRFNUX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RTVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FTUlTU0lPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU2MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVFVSVYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VYUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVhQMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVhURU5TSU9OUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkFMU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZBU1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MzUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZJWEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTEFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzQyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRk9HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0dfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19ERU5TSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0dfRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0dfSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRk9HX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19TVEFSVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJPTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZST05UX0FORF9CQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfR1JFQVRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HUkVFTl9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5DUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WQUxJRF9FTlVNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZBTElEX09QRVJBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WQUxJRF9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WRVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9LRUVQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTEVTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4OTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElHSFRfTU9ERUxfQU1CSUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElHSFRfTU9ERUxfVFdPX1NJREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJTkVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk3MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSX0FUVEVOVUFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSX01JUE1BUF9ORUFSRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORV9MT09QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1NNT09USCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORV9TTU9PVEhfSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORV9TVFJJUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTFVNSU5BTkNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MVU1JTkFOQ0VfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9FTEVNRU5UU19JTkRJQ0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0xJR0hUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX01PREVMVklFV19TVEFDS19ERVBUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1BST0pFQ1RJT05fU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX1NUQUNLX0RFUFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfVEVYVFVSRV9VTklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WSUVXUE9SVF9ESU1TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1ODg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PRFVMQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQ0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NVUxUSVNBTVBMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05BTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MzkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05FQVJFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkVWRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTklDRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDM1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT09QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05PUk1BTElaRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9URVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9fRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FX01JTlVTX0RTVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkVfTUlOVVNfRFNUX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzc1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19TUkNfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FX01JTlVTX1NSQ19DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1JfSU5WRVJURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09SX1JFVkVSU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09VVF9PRl9NRU1PUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBQ0tfQUxJR05NRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFNF9SNV9HNl9CNV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFNF9SR0I1X0ExX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU0X1JHQjhfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURTRfUkdCQTRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURTRfUkdCQThfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURThfUjVfRzZfQjVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURThfUkdCNV9BMV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFOF9SR0I4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU4X1JHQkE0X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU4X1JHQkE4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BFUlNQRUNUSVZFX0NPUlJFQ1RJT05fSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9GQURFX1RIUkVTSE9MRF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU01PT1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TTU9PVEhfSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9MWUdPTl9PRkZTRVRfRklMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fU01PT1RIX0hJTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPU0lUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QUk9KRUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTg4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9RVUFEUkFUSUNfQVRURU5VQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFRF9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVQRUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0OTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVQTEFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVTQ0FMRV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjgyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQkEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9BTFBIQV9UT19PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQ0lTU09SX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hJTklORVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TSE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU01PT1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzQyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TTU9PVEhfTElORV9XSURUSF9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU01PT1RIX1BPSU5UX1NJWkVfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NQRUNVTEFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUE9UX0NVVE9GRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1BPVF9ESVJFQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NQT1RfRVhQT05FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQ19BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkNfQUxQSEFfU0FUVVJBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1JDX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUQUNLX09WRVJGTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEFDS19VTkRFUkZMT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NVQlBJWEVMX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1ODkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV8yRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfRU5WIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODk2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0VOVl9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg3MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9FTlZfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg3MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9NQUdfRklMVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9NSU5fRklMVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9XUkFQX1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX1dSQVBfVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RSSUFOR0xFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVFJJQU5HTEVfRkFOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9UUklBTkdMRV9TVFJJUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVFJVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5QQUNLX0FMSUdOTUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjgxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlRfNV82XzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzYzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRU5ET1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlNJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OTM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1hPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfWkVSTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdMRVMxMEV4dCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xFUzEwRXh0IgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMRVMxMEV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnbFF1ZXJ5TWF0cml4eE9FUyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hbnRpc3NhIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFudGlzc2FPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwb25lbnQiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBvbmVudE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUXVlcnlNYXRyaXh4T0VTIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFudGlzc2EiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwb25lbnQiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHTEVTMTEiCisgZXh0ZW5kcz0iYW5kcm9pZC5vcGVuZ2wuR0xFUzEwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xFUzExIgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMRVMxMSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnbEJpbmRCdWZmZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQnVmZmVyRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzYWdlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCdWZmZXJTdWJEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGlwUGxhbmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGxhbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXF1YXRpb24iIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xpcFBsYW5leCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcXVhdGlvbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xpcFBsYW5leCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcXVhdGlvbiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3I0dWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb2xvclBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVCdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd0VsZW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlbkJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5CdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Qm9vbGVhbnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Qm9vbGVhbnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Q2xpcFBsYW5leCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcW4iIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZpeGVkdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZpeGVkdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZsb2F0diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RmxvYXR2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TGlnaHR4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldE1hdGVyaWFsZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWxmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhFbnZmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEVudmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52aXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52aXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4UGFyYW1ldGVyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzQnVmZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNUZXh0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE5vcm1hbFBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50U2l6ZVBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleENvb3JkUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52aSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyeHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyeHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4UG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfQUNUSVZFX1RFWFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BRERfU0lHTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfU0NBTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBX1RFU1RfRlVOQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfVEVTVF9SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRFNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9TUkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9BQ0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CVUZGRVJfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9VU0FHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NjYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSUVOVF9BQ1RJVkVfVEVYVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSVBfUExBTkUwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xJUF9QTEFORTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTElQX1BMQU5FMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSVBfUExBTkUzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xJUF9QTEFORTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTElQX1BMQU5FNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVJSQVlfUE9JTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWV9TVFJJREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWV9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQ0xFQVJfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX1dSSVRFTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09NQklORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTUJJTkVfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT01CSU5FX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTlNUQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09PUkRfUkVQTEFDRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDkxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVUxMX0ZBQ0VfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1VSUkVOVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4MTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1VSUkVOVF9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NVUlJFTlRfVEVYVFVSRV9DT09SRFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NMRUFSX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9GVU5DIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfV1JJVEVNQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ET1QzX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RPVDNfUkdCQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RZTkFNSUNfRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZST05UX0ZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFTkVSQVRFX01JUE1BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFTkVSQVRFX01JUE1BUF9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5URVJQT0xBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1dJRFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MT0dJQ19PUF9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0NMSVBfUExBTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVdfTUFUUklYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVdfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PREVMVklFV19TVEFDS19ERVBUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX1BPSU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1JNQUxfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUEVSQU5EMF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09QRVJBTkQwX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09QRVJBTkQxX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQyMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1BFUkFORDFfUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1BFUkFORDJfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDIwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUEVSQU5EMl9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9ESVNUQU5DRV9BVFRFTlVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX0ZBREVfVEhSRVNIT0xEX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFX0FSUkFZX0JVRkZFUl9CSU5ESU5HX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU0laRV9BUlJBWV9QT0lOVEVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfU1RSSURFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFX01BWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfTUlOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwNjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU1BSSVRFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJFVklPVVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QUklNQVJZX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJPSkVDVElPTl9NQVRSSVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT05fTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT05fU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQl9TQ0FMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQ0lTU09SX0JPWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVfTU9ERUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzBfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMwX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzFfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMxX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzJfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMyX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUQVRJQ19EUkFXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUwNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0ZVTkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfVkFMVUVfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9XUklURU1BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NVQlRSQUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9CSU5ESU5HXzJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfUE9JTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWV9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9NQVRSSVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWV9QT0lOVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WSUVXUE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV1JJVEVfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHTEVTMTFFeHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdMRVMxMUV4dCIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTEVTMTFFeHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2xBbHBoYUZ1bmN4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kRnJhbWVidWZmZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kUmVuZGVyYnVmZmVyT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJsZW5kRXF1YXRpb25PRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCbGVuZEZ1bmNTZXBhcmF0ZU9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmNSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0UkdCIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY0FscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdEFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzT0VTIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhckNvbG9yeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aGZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZWZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGxhbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXF1YXRpb24iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xpcFBsYW5lZk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcXVhdGlvbiIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGlwUGxhbmV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGlwUGxhbmV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb2xvcjR4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXRyaXhwYWxldHRlaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUZyYW1lYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlRnJhbWVidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVSZW5kZXJidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlUmVuZGVyYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlcHRoUmFuZ2VmT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iekZhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aFJhbmdleE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4Zk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4ZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdUZXhmdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZHMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd1RleGlPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4aXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4aXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4c09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4c3ZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdUZXhzdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZHMiIHR5cGU9ImphdmEubmlvLlNob3J0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd1RleHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltYWdlIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1hZ2UiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZvZ3hPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZvZ3h2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9neHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlck9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJ1c3R1bWZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZydXN0dW14T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5GcmFtZWJ1ZmZlcnNPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlbkZyYW1lYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuUmVuZGVyYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlblJlbmRlcmJ1ZmZlcnNPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5lcmF0ZU1pcG1hcE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldENsaXBQbGFuZWZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXFuIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldENsaXBQbGFuZWZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXFuIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldENsaXBQbGFuZXhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXFuIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Rml4ZWR2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Rml4ZWR2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dGFjaG1lbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldExpZ2h0eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodHh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWx4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWx4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4R2VuZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbmZ2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhHZW5pdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4R2VueHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhHZW54dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzRnJhbWVidWZmZXJPRVMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzUmVuZGVyYnVmZmVyT0VTIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0TW9kZWx4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0TW9kZWx4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0eE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHR4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaW5lV2lkdGh4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkTWF0cml4eE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkTWF0cml4eE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdGVyaWFseE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRyaXhJbmRleFBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdGlUZXhDb29yZDR4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xOb3JtYWwzeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJueCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJueSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJueiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsT3J0aG9mT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iekZhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xPcnRob3hPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50UGFyYW1ldGVyeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50UGFyYW1ldGVyeHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFNpemV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvbHlnb25PZmZzZXR4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUmVuZGVyYnVmZmVyU3RvcmFnZU9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xSb3RhdGV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ2xlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTYW1wbGVDb3ZlcmFnZXhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW52ZXJ0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2NhbGV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZ4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuZk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW5mdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEdlbmlPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEdlbml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuaXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW54T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW54dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEdlbnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRyYW5zbGF0ZXhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFdlaWdodFBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfM0RDX1hZX0FNRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMXzNEQ19YX0FNRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1OTg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDc5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BVENfUkdCX0FNRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1OTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JHUkEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjk5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9EU1RfQUxQSEFfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5NzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRFNUX1JHQl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTl9BTFBIQV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTl9SR0JfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX0FMUEhBX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX1NSQ19SR0JfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQlVGRkVSX0FDQ0VTU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CVUZGRVJfTUFQUEVEX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9NQVBfUE9JTlRFUl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTAwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BVFRBQ0hNRU5UMF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVVJSRU5UX1BBTEVUVEVfTUFUUklYX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFQ1JfV1JBUF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSDI0X1NURU5DSUw4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0FUVEFDSE1FTlRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UMTZfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UMjRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfU1RFTkNJTF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FVEMxX1JHQjhfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRklYRURfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0JJTkRJTkdfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQ09NUExFVEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0ZPUk1BVFNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURURfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19BRERfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZVTkNfU1VCVFJBQ1RfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5DUl9XUkFQX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFUUklYX0lOREVYX0FSUkFZX0JVRkZFUl9CSU5ESU5HX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BVFJJWF9JTkRFWF9BUlJBWV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfUE9JTlRFUl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfU1RSSURFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BVFJJWF9JTkRFWF9BUlJBWV9UWVBFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BVFJJWF9QQUxFVFRFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1BBTEVUVEVfTUFUUklDRVNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WRVJURVhfVU5JVFNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUlSUk9SRURfUkVQRUFUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PREVMVklFV19NQVRSSVhfRkxPQVRfQVNfSU5UX0JJVFNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUyMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9ORV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05PUk1BTF9NQVBfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJPSkVDVElPTl9NQVRSSVhfRkxPQVRfQVNfSU5UX0JJVFNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUyMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVGTEVDVElPTl9NQVBfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JJTkRJTkdfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfSEVJR0hUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9SRURfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9XSURUSF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0I1NjVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxOTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkdCNV9BMV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0I4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQkE0X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQkE4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQVRUQUNITUVOVF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0lOREVYMV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0lOREVYNF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0lOREVYOF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DUk9QX1JFQ1RfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DVUJFX01BUF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0dFTl9NT0RFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk0NzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9HRU5fU1RSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV0VJR0hUX0FSUkFZX0JVRkZFUl9CSU5ESU5HX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1dFSUdIVF9BUlJBWV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfUE9JTlRFUl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfU1RSSURFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1dFSUdIVF9BUlJBWV9UWVBFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1dSSVRFX09OTFlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUwMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdMRVMyMCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xFUzIwIgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMRVMyMCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnbEFjdGl2ZVRleHR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQXR0YWNoU2hhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kQXR0cmliTG9jYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmluZEJ1ZmZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kRnJhbWVidWZmZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kUmVuZGVyYnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJpbmRUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCbGVuZENvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyZWVuIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJsZW5kRXF1YXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCbGVuZEZ1bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2ZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZmFjdG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCbGVuZEZ1bmNTZXBhcmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmNSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0UkdCIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY0FscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdEFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCdWZmZXJEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNhZ2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJ1ZmZlclN1YkRhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsZWFyQ29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJTdGVuY2lsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbG9yTWFzayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyZWVuIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbXBpbGVTaGFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbWFnZVNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltYWdlU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb3B5VGV4SW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvcHlUZXhTdWJJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ3JlYXRlUHJvZ3JhbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDcmVhdGVTaGFkZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDdWxsRmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVCdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlQnVmZmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUZyYW1lYnVmZmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlRnJhbWVidWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVQcm9ncmFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVSZW5kZXJidWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlU2hhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhGdW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlcHRoTWFzayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhSYW5nZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERldGFjaFNoYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGlzYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd0FycmF5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3RWxlbWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGaW5pc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJvbnRGYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlbkJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5CdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuRnJhbWVidWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5GcmFtZWJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlblJlbmRlcmJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5SZW5kZXJidWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuZXJhdGVNaXBtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRBY3RpdmVBdHRyaWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEFjdGl2ZUF0dHJpYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QWN0aXZlVW5pZm9ybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QWN0aXZlVW5pZm9ybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QXR0YWNoZWRTaGFkZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4Y291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QXR0YWNoZWRTaGFkZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4Y291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QXR0cmliTG9jYXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCb29sZWFudiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCb29sZWFudiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEJ1ZmZlclBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEJ1ZmZlclBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEVycm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZsb2F0diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RmxvYXR2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRhY2htZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0SW50ZWdlcnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRJbnRlZ2VydiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFByb2dyYW1JbmZvTG9nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFByb2dyYW1pdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0UHJvZ3JhbWl2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTaGFkZXJJbmZvTG9nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlcnR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlY2lzaW9udHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5nZSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmdlT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWNpc2lvbk9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlcnR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlY2lzaW9udHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5nZSIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVjaXNpb24iIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFNoYWRlclNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmc2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGhPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0U2hhZGVyU291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTaGFkZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTaGFkZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4UGFyYW1ldGVyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFVuaWZvcm1Mb2NhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFVuaWZvcm1mdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRVbmlmb3JtZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VW5pZm9ybWl2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRVbmlmb3JtaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFZlcnRleEF0dHJpYmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRWZXJ0ZXhBdHRyaWJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VmVydGV4QXR0cmliaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRWZXJ0ZXhBdHRyaWJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzQnVmZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNGcmFtZWJ1ZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNQcm9ncmFtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzUmVuZGVyYnVmZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNTaGFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xJc1RleHR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGluZVdpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpbmtQcm9ncmFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBpeGVsU3RvcmVpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2x5Z29uT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXRzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJlYWRQaXhlbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJlbGVhc2VTaGFkZXJDb21waWxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUmVuZGVyYnVmZmVyU3RvcmFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTYW1wbGVDb3ZlcmFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludmVydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjaXNzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2hhZGVyQmluYXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaW5hcnlmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmluYXJ5IiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2hhZGVyQmluYXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaW5hcnlmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmluYXJ5IiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2hhZGVyU291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsRnVuYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdW5jIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsRnVuY1NlcGFyYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnVuYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE1hc2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE1hc2tTZXBhcmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFN0ZW5jaWxPcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWlsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpmYWlsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpwYXNzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsT3BTZXBhcmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iemZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ienBhc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybmFsZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMWZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTFmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0xaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMWl2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0xaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTJmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0yZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0zZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTNmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0zZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtM2kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0zaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTNpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtNGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm00aSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtNGl2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm00aXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybU1hdHJpeDJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc3Bvc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm1NYXRyaXgyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNwb3NlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtTWF0cml4M2Z2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zcG9zZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybU1hdHJpeDNmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc3Bvc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm1NYXRyaXg0ZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNwb3NlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtTWF0cml4NGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zcG9zZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVXNlUHJvZ3JhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWYWxpZGF0ZVByb2dyYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliMWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYjFmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWIxZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliMmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWIyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliMmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYjNmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYjNmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWIzZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYjRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWI0ZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9ybWFsaXplZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB0ciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmlld3BvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfQUNUSVZFX0FUVFJJQlVURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BQ1RJVkVfVEVYVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FDVElWRV9VTklGT1JNUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzkwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzkwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxXQVlTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQVRUQUNIRURfU0hBREVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JBQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0RTVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0RTVF9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRVFVQVRJT05fUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5NzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMVUVfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQk9PTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JPT0xfVkVDMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JPT0xfVkVDMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JPT0xfVkVDNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ2NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQlVGRkVSX1VTQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ2NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0NXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTEFNUF9UT19FREdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwNzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVRUQUNITUVOVDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQ0xFQVJfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX1dSSVRFTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09NUElMRV9TVEFUVVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTlNUQU5UX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09OU1RBTlRfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVUxMX0ZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NVTExfRkFDRV9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVVJSRU5UX1BST0dSQU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDM0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVDUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVDUl9XUkFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVMRVRFX1NUQVRVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0FUVEFDSE1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NMRUFSX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9DT01QT05FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NPTVBPTkVOVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfRlVOQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX1dSSVRFTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRElUSEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ET05UX0NBUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MzUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RTVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9EU1RfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRFlOQU1JQ19EUkFXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDk2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVhURU5TSU9OUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkFMU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZBU1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MzUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZJWEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkxPQVRfTUFUMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1Njc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZMT0FUX01BVDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTE9BVF9NQVQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU2NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkxPQVRfVkVDMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZMT0FUX1ZFQzMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTE9BVF9WRUM0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU2NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBR01FTlRfU0hBREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU2MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZST05UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUk9OVF9BTkRfQkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJPTlRfRkFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19BREQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GVU5DX1NVQlRSQUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzE3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfR1JFQVRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HUkVFTl9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ISUdIX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYzMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSElHSF9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjM0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOQ1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NjgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOQ1JfV1JBUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lORk9fTE9HX0xFTkdUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5UX1ZFQzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlRfVkVDMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVF9WRUM0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU2NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WQUxJRF9FTlVNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WQUxJRF9PUEVSQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkFMSURfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkVSVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfS0VFUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTEVRVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTcyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSX01JUE1BUF9ORUFSRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORV9MT09QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1NUUklQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1dJRFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5LX1NUQVRVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xPV19GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MzM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xPV19JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjMzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MVU1JTkFOQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xVTUlOQU5DRV9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MzQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9SRU5ERVJCVUZGRVJfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1RFWFRVUkVfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1ZBUllJTkdfVkVDVE9SUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MzQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WRVJURVhfQVRUUklCUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYzNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1ZJRVdQT1JUX0RJTVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01FRElVTV9GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MzM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01FRElVTV9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjM0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NSVJST1JFRF9SRVBFQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzY0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ORUFSRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTcyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5OTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5OTg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05FVkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05JQ0VTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9URVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9fRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjM0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19EU1RfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FX01JTlVTX0RTVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkVfTUlOVVNfU1JDX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19TUkNfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1VUX09GX01FTU9SWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFDS19BTElHTk1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9MWUdPTl9PRkZTRVRfRklMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVEX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JJTkRJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9IRUlHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9XSURUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVBFQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDQ5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVBMQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQjU2NSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQjVfQTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0JBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0JBNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRVJfMkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVSX0NVQkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0JVRkZFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0NJU1NPUl9CT1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NDSVNTT1JfVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYzNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVSX0NPTVBJTEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYzNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVSX1NPVVJDRV9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TSEFERVJfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkNfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1JDX0FMUEhBX1NBVFVSQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQ19DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEFUSUNfRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQVRUQUNITUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQkFDS19GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9CQUNLX0ZVTkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDgxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQkFDS19SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQkFDS19XUklURU1BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQlVGRkVSX0JJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0ZVTkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVg4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1JFRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9URVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1ZBTFVFX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfV1JJVEVNQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVFJFQU1fRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NVQlBJWEVMX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1ODkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV8yRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9CSU5ESU5HXzJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DVUJFX01BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFHX0ZJTFRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUlOX0ZJTFRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfV1JBUF9TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9XUkFQX1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9UUklBTkdMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RSSUFOR0xFX0ZBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVFJJQU5HTEVfU1RSSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RSVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOUEFDS19BTElHTk1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX0JZVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjgxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlRfNV82XzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzYzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WQUxJREFURV9TVEFUVVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRU5ET1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlNJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OTM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDk3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDMzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDkyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDM3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDMzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MzQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MzQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9TSEFERVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTYzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WSUVXUE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfWkVSTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdMRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuR0xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHTEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdMU3VyZmFjZVZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlN1cmZhY2VWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlci5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xTdXJmYWNlVmlldyIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTFN1cmZhY2VWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdMU3VyZmFjZVZpZXciCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuR0xTdXJmYWNlVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlYnVnRmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVuZGVyTW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblBhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc3VtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVldWVFdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0UmVuZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWJ1Z0ZsYWdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVidWdGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVHTENvbmZpZ0Nob29zZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWdDaG9vc2VyIiB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTFN1cmZhY2VWaWV3LkVHTENvbmZpZ0Nob29zZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RUdMQ29uZmlnQ2hvb3NlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5lZWREZXB0aCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFR0xDb25maWdDaG9vc2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlblNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZVNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGFTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcHRoU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGVuY2lsU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVHTENvbnRleHRDbGllbnRWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVHTENvbnRleHRGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuR0xTdXJmYWNlVmlldy5FR0xDb250ZXh0RmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFR0xXaW5kb3dTdXJmYWNlRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMU3VyZmFjZVZpZXcuRUdMV2luZG93U3VyZmFjZUZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R0xXcmFwcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2xXcmFwcGVyIiB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTFN1cmZhY2VWaWV3LkdMV3JhcHBlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZW5kZXJNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlbmRlcmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyZXIiIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMU3VyZmFjZVZpZXcuUmVuZGVyZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VyZmFjZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VyZmFjZUNyZWF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cmZhY2VEZXN0cm95ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVCVUdfQ0hFQ0tfR0xfRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQlVHX0xPR19HTF9DQUxMUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVOREVSTU9ERV9DT05USU5VT1VTTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFTkRFUk1PREVfV0hFTl9ESVJUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHTFN1cmZhY2VWaWV3LkVHTENvbmZpZ0Nob29zZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNob29zZUNvbmZpZyIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb25maWciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWdsIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMMTAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR0xTdXJmYWNlVmlldy5FR0xDb250ZXh0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29udGV4dCIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTDEwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWdsQ29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3lDb250ZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0wxMCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR0xTdXJmYWNlVmlldy5FR0xXaW5kb3dTdXJmYWNlRmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlV2luZG93U3VyZmFjZSIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTDEwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYXRpdmVXaW5kb3ciIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzdHJveVN1cmZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTDEwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VyZmFjZSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHTFN1cmZhY2VWaWV3LkdMV3JhcHBlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdsIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkdMU3VyZmFjZVZpZXcuUmVuZGVyZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRHJhd0ZyYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN1cmZhY2VDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXJmYWNlQ3JlYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMMTAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iR0xVIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHTFUiCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuR0xVIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdsdUVycm9yU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsdUxvb2tBdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMMTAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV5ZVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleWVZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXllWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlbnRlclgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZW50ZXJZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VudGVyWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2x1T3J0aG8yRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMMTAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2x1UGVyc3BlY3RpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdsIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTDEwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3Z5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXNwZWN0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbHVQcm9qZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ialgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmpZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVsIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlbE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpbiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2luT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2x1VW5Qcm9qZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpblgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5ZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2luWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVsIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlbE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR0xVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJuYWxGb3JtYXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGV4SW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybmFsZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcm5hbGZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXhTdWJJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieG9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGV4U3ViSW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hdHJpeCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWF0cml4IgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLk1hdHJpeCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmcnVzdHVtTSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmVydE0iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1JbnYiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1JbnZPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXVsdGlwbHlNTSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxoc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJoc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im11bHRpcGx5TVYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0VmVjIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRWZWNPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGhzTWF0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaHNNYXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmhzVmVjIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaHNWZWNPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcnRob00iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlTSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJtT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlTSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2FsZU0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzbU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbGVNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWRlbnRpdHlNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzbSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic21PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb29rQXRNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJybSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXllWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV5ZVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleWVaIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VudGVyWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlbnRlclkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZW50ZXJaIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBaIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSb3RhdGVFdWxlck0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJybU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvdGF0ZU0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJybU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2xhdGVNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0bSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zbGF0ZU0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc3Bvc2VNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtVHJhbnMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1UcmFuc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlzaWJpbGl0eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlzaWJpbGl0eSIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5WaXNpYmlsaXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVCb3VuZGluZ1NwaGVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbnMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbnNDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGhlcmUiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwaGVyZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZydXN0dW1DdWxsU3BoZXJlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im12cCIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXZwT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwaGVyZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwaGVyZXNPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BoZXJlc0NvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRzT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHNDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZpc2liaWxpdHlUZXN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3MiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndzT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9ucyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb25zT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kaWNlc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLm9zIgorPgorPGNsYXNzIG5hbWU9IkFzeW5jVGFzayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3luY1Rhc2siCisgdHlwZT0iYW5kcm9pZC5vcy5Bc3luY1Rhc2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXlJbnRlcnJ1cHRJZlJ1bm5pbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9JbkJhY2tncm91bmQiCisgcmV0dXJuPSJSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJQYXJhbXMuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuQXN5bmNUYXNrJmx0O1BhcmFtcywgUHJvZ3Jlc3MsIFJlc3VsdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJQYXJhbXMuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZWN1dGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlRpbWVvdXRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzIgorIHJldHVybj0iYW5kcm9pZC5vcy5Bc3luY1Rhc2suU3RhdHVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDYW5jZWxsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DYW5jZWxsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUG9zdEV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9IlJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByZUV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJvZ3Jlc3NVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9IlByb2dyZXNzLi4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1Ymxpc2hQcm9ncmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJQcm9ncmVzcy4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3luY1Rhc2suU3RhdHVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5vcy5Bc3luY1Rhc2suU3RhdHVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5vcy5Bc3luY1Rhc2suU3RhdHVzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhZFBhcmNlbGFibGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC51dGlsLkFuZHJvaWRSdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFkUGFyY2VsYWJsZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLm9zLkJhZFBhcmNlbGFibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhZFBhcmNlbGFibGVFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5vcy5CYWRQYXJjZWxhYmxlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXR0ZXJ5TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmF0dGVyeU1hbmFnZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5CYXR0ZXJ5TWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX0RFQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX0dPT0QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX09WRVJIRUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCQVRURVJZX0hFQUxUSF9PVkVSX1ZPTFRBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX1VOU1BFQ0lGSUVEX0ZBSUxVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfUExVR0dFRF9BQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkFUVEVSWV9QTFVHR0VEX1VTQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkFUVEVSWV9TVEFUVVNfQ0hBUkdJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfU1RBVFVTX0RJU0NIQVJHSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCQVRURVJZX1NUQVRVU19GVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCQVRURVJZX1NUQVRVU19OT1RfQ0hBUkdJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfU1RBVFVTX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0hFQUxUSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtoZWFsdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfSUNPTl9TTUFMTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpY29uLXNtYWxsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0xFVkVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xldmVsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1BMVUdHRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGx1Z2dlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9QUkVTRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ByZXNlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU0NBTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2NhbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RBVFVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXR1cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9URUNITk9MT0dZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlY2hub2xvZ3kmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVEVNUEVSQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGVtcGVyYXR1cmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVk9MVEFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x0YWdlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCaW5kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaW5kZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5CaW5kZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXR0YWNoSW50ZXJmYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3duZXIiIHR5cGU9ImFuZHJvaWQub3MuSUludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzY3JpcHRvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckNhbGxpbmdJZGVudGl0eSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3V0IiB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2hQZW5kaW5nQ29tbWFuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxpbmdQaWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FsbGluZ1VpZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlcmZhY2VEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JpbmRlckFsaXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luVGhyZWFkUG9vbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlua1RvRGVhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNpcGllbnQiIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlci5EZWF0aFJlY2lwaWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRyYW5zYWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwbHkiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBpbmdCaW5kZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5TG9jYWxJbnRlcmZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklJbnRlcmZhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NyaXB0b3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZUNhbGxpbmdJZGVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zYWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXBseSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5saW5rVG9EZWF0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2lwaWVudCIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyLkRlYXRoUmVjaXBpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ1aWxkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWlsZCIKKyB0eXBlPSJhbmRyb2lkLm9zLkJ1aWxkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQk9BUkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT09UTE9BREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJBTkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDUFVfQUJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1BVX0FCSTIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNQTEFZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklOR0VSUFJJTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVJEV0FSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTlVGQUNUVVJFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPRFVDVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBRElPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5LTk9XTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1bmtub3duJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVpbGQuVkVSU0lPTiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWlsZC5WRVJTSU9OIgorIHR5cGU9ImFuZHJvaWQub3MuQnVpbGQuVkVSU0lPTiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkNPREVOQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5DUkVNRU5UQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUxFQVNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0RLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTREtfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVpbGQuVkVSU0lPTl9DT0RFUyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWlsZC5WRVJTSU9OX0NPREVTIgorIHR5cGU9ImFuZHJvaWQub3MuQnVpbGQuVkVSU0lPTl9DT0RFUyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkJBU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBU0VfMV8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVBDQUtFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVJfREVWRUxPUE1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET05VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUNMQUlSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFQ0xBSVJfMF8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFQ0xBSVJfTVIxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGUk9ZTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ1bmRsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdW5kbGUiCisgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdW5kbGUiCisgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVuZGxlIgorIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVuZGxlIgorIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW5BcnJheSIKKyByZXR1cm49ImJvb2xlYW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ1bmRsZSIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iamF2YS5sYW5nLkJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVBcnJheSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhciIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJBcnJheSIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyU2VxdWVuY2VBcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2VbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJTZXF1ZW5jZUFycmF5TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLkNoYXJTZXF1ZW5jZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlQXJyYXkiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXRBcnJheSIKKyByZXR1cm49ImZsb2F0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50QXJyYXkiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVnZXJBcnJheUxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmdBcnJheSIKKyByZXR1cm49ImxvbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmNlbGFibGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyY2VsYWJsZUFycmF5IgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJjZWxhYmxlQXJyYXlMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcmlhbGl6YWJsZSIKKyByZXR1cm49ImphdmEuaW8uU2VyaWFsaXphYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydEFycmF5IgorIHJldHVybj0ic2hvcnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYXJzZVBhcmNlbGFibGVBcnJheSIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5TcGFyc2VBcnJheSZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmdBcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZ0FycmF5TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNGaWxlRGVzY3JpcHRvcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRCb29sZWFuQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QnVuZGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Qnl0ZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXJBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRDaGFyU2VxdWVuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXJTZXF1ZW5jZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXJTZXF1ZW5jZUFycmF5TGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLkNoYXJTZXF1ZW5jZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dERvdWJsZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGbG9hdEFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0SW50QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJbnRlZ2VyQXJyYXlMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuSW50ZWdlciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZ0FycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFBhcmNlbGFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0UGFyY2VsYWJsZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0UGFyY2VsYWJsZUFycmF5TGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7PyBleHRlbmRzIGFuZHJvaWQub3MuUGFyY2VsYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U2VyaWFsaXphYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTaG9ydEFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTcGFyc2VQYXJjZWxhYmxlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkmbHQ7PyBleHRlbmRzIGFuZHJvaWQub3MuUGFyY2VsYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmdBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmdBcnJheUxpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xhc3NMb2FkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWwiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTVBUWSIKKyB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29uZGl0aW9uVmFyaWFibGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmRpdGlvblZhcmlhYmxlIgorIHR5cGU9ImFuZHJvaWQub3MuQ29uZGl0aW9uVmFyaWFibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25kaXRpb25WYXJpYWJsZSIKKyB0eXBlPSJhbmRyb2lkLm9zLkNvbmRpdGlvblZhcmlhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJibG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmxvY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb3VudERvd25UaW1lciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb3VudERvd25UaW1lciIKKyB0eXBlPSJhbmRyb2lkLm9zLkNvdW50RG93blRpbWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzSW5GdXR1cmUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50RG93bkludGVydmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRmluaXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzVW50aWxGaW5pc2hlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49ImFuZHJvaWQub3MuQ291bnREb3duVGltZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlYWRPYmplY3RFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWFkT2JqZWN0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQub3MuRGVhZE9iamVjdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWJ1ZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hhbmdlRGVidWdQb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wSHByb2ZEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcFNlcnZpY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlRW11bGF0b3JUcmFjZU91dHB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCaW5kZXJEZWF0aE9iamVjdENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpbmRlckxvY2FsT2JqZWN0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmluZGVyUHJveHlPYmplY3RDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCaW5kZXJSZWNlaXZlZFRyYW5zYWN0aW9ucyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmluZGVyU2VudFRyYW5zYWN0aW9ucyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsQWxsb2NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbEFsbG9jU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbENsYXNzSW5pdENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsQ2xhc3NJbml0VGltZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbEV4dGVybmFsQWxsb2NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbEV4dGVybmFsQWxsb2NTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsRXh0ZXJuYWxGcmVlZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsRXh0ZXJuYWxGcmVlZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHbG9iYWxGcmVlZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsRnJlZWRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsR2NJbnZvY2F0aW9uQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2FkZWRDbGFzc0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVtb3J5SW5mbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW1vcnlJbmZvIiB0eXBlPSJhbmRyb2lkLm9zLkRlYnVnLk1lbW9yeUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmF0aXZlSGVhcEFsbG9jYXRlZFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYXRpdmVIZWFwRnJlZVNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYXRpdmVIZWFwU2l6ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVhZEFsbG9jQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRBbGxvY1NpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRFeHRlcm5hbEFsbG9jQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRFeHRlcm5hbEFsbG9jU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVhZEdjSW52b2NhdGlvbkNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZWJ1Z2dlckNvbm5lY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludExvYWRlZENsYXNzZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRBbGxDb3VudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxBbGxvY0NvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0R2xvYmFsQWxsb2NTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0R2xvYmFsQ2xhc3NJbml0Q291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxDbGFzc0luaXRUaW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0R2xvYmFsRXh0ZXJuYWxBbGxvY0NvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0R2xvYmFsRXh0ZXJuYWxBbGxvY1NpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxFeHRlcm5hbEZyZWVkQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxFeHRlcm5hbEZyZWVkU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldEdsb2JhbEZyZWVkQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxGcmVlZFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxHY0ludm9jYXRpb25Db3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFRocmVhZEFsbG9jQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRUaHJlYWRBbGxvY1NpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRUaHJlYWRFeHRlcm5hbEFsbG9jQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRUaHJlYWRFeHRlcm5hbEFsbG9jU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFRocmVhZEdjSW52b2NhdGlvbkNvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFsbG9jYXRpb25MaW1pdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdsb2JhbEFsbG9jYXRpb25MaW1pdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWxsb2NDb3VudGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydE1ldGhvZFRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRNZXRob2RUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFjZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRNZXRob2RUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFjZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlclNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydE1ldGhvZFRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYWNlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0TmF0aXZlVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wQWxsb2NDb3VudGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wTWV0aG9kVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wTmF0aXZlVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0aHJlYWRDcHVUaW1lTmFub3MiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FpdEZvckRlYnVnZ2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndhaXRpbmdGb3JEZWJ1Z2dlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNIT1dfQ0xBU1NMT0FERVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1dfRlVMTF9ERVRBSUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1dfSU5JVElBTElaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSQUNFX0NPVU5UX0FMTE9DUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlYnVnLkluc3RydWN0aW9uQ291bnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVidWcuSW5zdHJ1Y3Rpb25Db3VudCIKKyB0eXBlPSJhbmRyb2lkLm9zLkRlYnVnLkluc3RydWN0aW9uQ291bnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29sbGVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xvYmFsTWV0aG9kSW52b2NhdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xvYmFsVG90YWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRBbmRTdGFydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVidWcuTWVtb3J5SW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVidWcuTWVtb3J5SW5mbyIKKyB0eXBlPSJhbmRyb2lkLm9zLkRlYnVnLk1lbW9yeUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFByaXZhdGVEaXJ0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFBzcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFNoYXJlZERpcnR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRhbHZpa1ByaXZhdGVEaXJ0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkYWx2aWtQc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGFsdmlrU2hhcmVkRGlydHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibmF0aXZlUHJpdmF0ZURpcnR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hdGl2ZVBzcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuYXRpdmVTaGFyZWREaXJ0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdGhlclByaXZhdGVEaXJ0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdGhlclBzcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdGhlclNoYXJlZERpcnR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEcm9wQm94TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHJvcEJveE1hbmFnZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5Ecm9wQm94TWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGREYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRmlsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRFbnRyeSIKKyByZXR1cm49ImFuZHJvaWQub3MuRHJvcEJveE1hbmFnZXIuRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNlYyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1RhZ0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJJU19FTVBUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfR1pJUFBFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfVEVYVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRyb3BCb3hNYW5hZ2VyLkVudHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcm9wQm94TWFuYWdlci5FbnRyeSIKKyB0eXBlPSJhbmRyb2lkLm9zLkRyb3BCb3hNYW5hZ2VyLkVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyb3BCb3hNYW5hZ2VyLkVudHJ5IgorIHR5cGU9ImFuZHJvaWQub3MuRHJvcEJveE1hbmFnZXIuRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHJvcEJveE1hbmFnZXIuRW50cnkiCisgdHlwZT0iYW5kcm9pZC5vcy5Ecm9wQm94TWFuYWdlci5FbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyb3BCb3hNYW5hZ2VyLkVudHJ5IgorIHR5cGU9ImFuZHJvaWQub3MuRHJvcEJveE1hbmFnZXIuRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHJvcEJveE1hbmFnZXIuRW50cnkiCisgdHlwZT0iYW5kcm9pZC5vcy5Ecm9wQm94TWFuYWdlci5FbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhCeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVNaWxsaXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW52aXJvbm1lbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudmlyb25tZW50IgorIHR5cGU9ImFuZHJvaWQub3MuRW52aXJvbm1lbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YURpcmVjdG9yeSIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvd25sb2FkQ2FjaGVEaXJlY3RvcnkiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlcm5hbFN0b3JhZ2VEaXJlY3RvcnkiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlcm5hbFN0b3JhZ2VQdWJsaWNEaXJlY3RvcnkiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlcm5hbFN0b3JhZ2VTdGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSb290RGlyZWN0b3J5IgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RPUllfQUxBUk1TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVE9SWV9EQ0lNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVE9SWV9ET1dOTE9BRFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUT1JZX01PVklFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RPUllfTVVTSUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUT1JZX05PVElGSUNBVElPTlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUT1JZX1BJQ1RVUkVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVE9SWV9QT0RDQVNUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RPUllfUklOR1RPTkVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0JBRF9SRU1PVkFMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2JhZF9yZW1vdmFsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0NIRUNLSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NoZWNraW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX01PVU5URUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bW91bnRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9NT1VOVEVEX1JFQURfT05MWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttb3VudGVkX3JvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX05PRlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm9mcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9SRU1PVkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3JlbW92ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVESUFfU0hBUkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NoYXJlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9VTk1PVU5UQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1bm1vdW50YWJsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9VTk1PVU5URUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dW5tb3VudGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWxlT2JzZXJ2ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZU9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQub3MuRmlsZU9ic2VydmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZU9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQub3MuRmlsZU9ic2VydmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25FdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFdhdGNoaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wV2F0Y2hpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNDRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTExfRVZFTlRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVFRSSUIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMT1NFX05PV1JJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDTE9TRV9XUklURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFTEVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUxFVEVfU0VMRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ESUZZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT1ZFRF9GUk9NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9WRURfVE8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9WRV9TRUxGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUEVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGFuZGxlciIKKyB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyLkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYW5kbGVyIgorIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BlciIgdHlwZT0iYW5kcm9pZC5vcy5Mb29wZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcGVyIiB0eXBlPSJhbmRyb2lkLm9zLkxvb3BlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlci5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvb3BlciIKKyByZXR1cm49ImFuZHJvaWQub3MuTG9vcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc01lc3NhZ2VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTWVzc2FnZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbk1lc3NhZ2UiCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5NZXNzYWdlIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5NZXNzYWdlIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbk1lc3NhZ2UiCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5NZXNzYWdlIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEF0RnJvbnRPZlF1ZXVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEF0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cHRpbWVNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEF0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXB0aW1lTWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc3REZWxheWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGF5TWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUNhbGxiYWNrcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUNhbGxiYWNrcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVDYWxsYmFja3NBbmRNZXNzYWdlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTWVzc2FnZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVNZXNzYWdlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEVtcHR5TWVzc2FnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRFbXB0eU1lc3NhZ2VBdFRpbWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXB0aW1lTWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRFbXB0eU1lc3NhZ2VEZWxheWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGF5TWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRNZXNzYWdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kTWVzc2FnZUF0RnJvbnRPZlF1ZXVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kTWVzc2FnZUF0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cHRpbWVNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZE1lc3NhZ2VEZWxheWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXlNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkhhbmRsZXIuQ2FsbGJhY2siCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZU1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJIYW5kbGVyVGhyZWFkIgorIGV4dGVuZHM9ImphdmEubGFuZy5UaHJlYWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYW5kbGVyVGhyZWFkIgorIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlclRocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhhbmRsZXJUaHJlYWQiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyVGhyZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExvb3BlciIKKyByZXR1cm49ImFuZHJvaWQub3MuTG9vcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVhZElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG9vcGVyUHJlcGFyZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJJQmluZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlcmZhY2VEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmluZGVyQWxpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlua1RvRGVhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2lwaWVudCIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyLkRlYXRoUmVjaXBpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBpbmdCaW5kZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlMb2NhbEludGVyZmFjZSIKKyByZXR1cm49ImFuZHJvaWQub3MuSUludGVyZmFjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXNjcmlwdG9yIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zYWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXBseSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5saW5rVG9EZWF0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjaXBpZW50IiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIuRGVhdGhSZWNpcGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJEVU1QX1RSQU5TQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTU5ODMxMTc2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSVJTVF9DQUxMX1RSQU5TQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX09ORVdBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URVJGQUNFX1RSQU5TQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTU5ODk2ODkwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVNUX0NBTExfVFJBTlNBQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjc3NzIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSU5HX1RSQU5TQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTU5OTA5ODQzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJJQmluZGVyLkRlYXRoUmVjaXBpZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJiaW5kZXJEaWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSUludGVyZmFjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFzQmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikxvb3BlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdyIgdHlwZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYWluTG9vcGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5Mb29wZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb29wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXlMb29wZXIiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkxvb3BlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXlRdWV1ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZVF1ZXVlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlcGFyZU1haW5Mb29wZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXNzYWdlTG9nZ2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW50ZXIiIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lbW9yeUZpbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lbW9yeUZpbGUiCisgdHlwZT0iYW5kcm9pZC5vcy5NZW1vcnlGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWxsb3dQdXJnaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGxvd1B1cmdpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQdXJnaW5nQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCeXRlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVzc2FnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVzc2FnZSIKKyB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29weUZyb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYWxsYmFjayIKKyByZXR1cm49ImphdmEubGFuZy5SdW5uYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFyZ2V0IgorIHJldHVybj0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdoZW4iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrRGF0YSIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY3ljbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRUb1RhcmdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhcmdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXJnMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcmcyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im9iaiIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVwbHlUbyIKKyB0eXBlPSJhbmRyb2lkLm9zLk1lc3NlbmdlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndoYXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lc3NhZ2VRdWV1ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZElkbGVIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2VRdWV1ZS5JZGxlSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVJZGxlSGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlUXVldWUuSWRsZUhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lc3NhZ2VRdWV1ZS5JZGxlSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icXVldWVJZGxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZXNzZW5nZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lc3NlbmdlciIKKyB0eXBlPSJhbmRyb2lkLm9zLk1lc3NlbmdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZXNzZW5nZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5NZXNzZW5nZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRNZXNzZW5nZXJPck51bGxGcm9tUGFyY2VsIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzZW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVNZXNzZW5nZXJPck51bGxUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2VuZ2VyIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NlbmdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcmNlbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXBwZW5kRnJvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWwiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQmluZGVyQXJyYXkiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUJpbmRlckFycmF5TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5vcy5JQmluZGVyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUJvb2xlYW5BcnJheSIKKyByZXR1cm49ImJvb2xlYW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUJ5dGVBcnJheSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ2hhckFycmF5IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRG91YmxlQXJyYXkiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZsb2F0QXJyYXkiCisgcmV0dXJuPSJmbG9hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSW50QXJyYXkiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUxvbmdBcnJheSIKKyByZXR1cm49ImxvbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVN0cmluZ0FycmF5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU3RyaW5nQXJyYXlMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVR5cGVkQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3ImbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVHlwZWRBcnJheUxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRhdGFBdmFpbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGF0YUNhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRhdGFTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmZvcmNlSW50ZXJmYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyZmFjZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRmlsZURlc2NyaXB0b3JzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFyc2hhbGwiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQXJyYXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEFycmF5TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEJpbmRlckFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCaW5kZXJMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLm9zLklCaW5kZXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCb29sZWFuQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCdW5kbGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCdW5kbGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQnl0ZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ2hhckFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRG91YmxlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRXhjZXB0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRmlsZURlc2NyaXB0b3IiCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGbG9hdEFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEhhc2hNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuSGFzaE1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFZhbCIgdHlwZT0iamF2YS51dGlsLkxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvbmdBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZE1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0VmFsIiB0eXBlPSJqYXZhLnV0aWwuTWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkUGFyY2VsYWJsZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFBhcmNlbGFibGVBcnJheSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTZXJpYWxpemFibGUiCisgcmV0dXJuPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTcGFyc2VBcnJheSIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5TcGFyc2VBcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU3BhcnNlQm9vbGVhbkFycmF5IgorIHJldHVybj0iYW5kcm9pZC51dGlsLlNwYXJzZUJvb2xlYW5BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU3RyaW5nQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTdHJpbmdMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU3Ryb25nQmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVHlwZWRBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJUW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRUeXBlZExpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY3ljbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YUNhcGFjaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhUG9zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YVNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubWFyc2hhbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZlc3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCaW5kZXJBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJpbmRlckxpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5vcy5JQmluZGVyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJvb2xlYW5BcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCdW5kbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCeXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCeXRlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGVBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFyQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRG91YmxlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFeGNlcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRmxvYXRBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlSW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlSW50QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVJbnRlcmZhY2VUb2tlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcmZhY2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUxvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9uZ0FycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZU1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLnV0aWwuTWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTm9FeGNlcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVQYXJjZWxhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbGFibGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlUGFyY2VsYWJsZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVNlcmlhbGl6YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVTcGFyc2VBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkmbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVTcGFyc2VCb29sZWFuQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYW5kcm9pZC51dGlsLlNwYXJzZUJvb2xlYW5BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVN0cmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVTdHJpbmdBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVTdHJpbmdMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU3Ryb25nQmluZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU3Ryb25nSW50ZXJmYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImFuZHJvaWQub3MuSUludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVR5cGVkQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVR5cGVkTGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU1RSSU5HX0NSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcmNlbEZpbGVEZXNjcmlwdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyY2VsRmlsZURlc2NyaXB0b3IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NyaXB0b3IiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVNvY2tldCIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsZURlc2NyaXB0b3IiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRTaXplIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX0FQUEVORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNTU0NDMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfQ1JFQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTM0MjE3NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUkVBRF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4NDM1NDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUkVBRF9XUklURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwNTMwNjM2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX1RSVU5DQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjcxMDg4NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9XT1JMRF9SRUFEQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9XT1JMRF9XUklURUFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfV1JJVEVfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNjg3MDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyY2VsRmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWxlSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcmNlbEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZUlucHV0U3RyZWFtIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcmNlbEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZU91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcmNlbEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZU91dHB1dFN0cmVhbSIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyY2VsVXVpZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyY2VsVXVpZCIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbFV1aWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1dWlkIiB0eXBlPSJqYXZhLnV0aWwuVVVJRCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVN0cmluZyIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsVXVpZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1dWlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFV1aWQiCisgcmV0dXJuPSJqYXZhLnV0aWwuVVVJRCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRTX0ZJTEVfREVTQ1JJUFRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFSQ0VMQUJMRV9XUklURV9SRVRVUk5fVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlBhcmNlbGFibGUuQ3JlYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbVBhcmNlbCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdBcnJheSIKKyByZXR1cm49IlRbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlBhdHRlcm5NYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0dGVybk1hdGNoZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0dGVybk1hdGNoZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFUVEVSTl9MSVRFUkFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVRURVJOX1BSRUZJWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFUVEVSTl9TSU1QTEVfR0xPQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBvd2VyTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdvVG9TbGVlcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTY3JlZW5PbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3V2FrZUxvY2siCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBvd2VyTWFuYWdlci5XYWtlTG9jayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYm9vdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VyQWN0aXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub0NoYW5nZUxpZ2h0cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDUVVJUkVfQ0FVU0VTX1dBS0VVUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2ODQzNTQ1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMX1dBS0VfTE9DSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9OX0FGVEVSX1JFTEVBU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MzY4NzA5MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFSVElBTF9XQUtFX0xPQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9CUklHSFRfV0FLRV9MT0NLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX0RJTV9XQUtFX0xPQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3dlck1hbmFnZXIuV2FrZUxvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hlbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlZmVyZW5jZUNvdW50ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm9jZXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9jZXNzIgorIHR5cGU9ImFuZHJvaWQub3MuUHJvY2VzcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbGFwc2VkQ3B1VGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2lkRm9yTmFtZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRQcmlvcml0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVaWRGb3JOYW1lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtpbGxQcm9jZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im15UGlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im15VGlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im15VWlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTaWduYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGhyZWFkUHJpb3JpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRocmVhZFByaW9yaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzUHJvY2Vzc2VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9HSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJUlNUX0FQUExJQ0FUSU9OX1VJRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBU1RfQVBQTElDQVRJT05fVUlEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk5OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfVUlEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSUdOQUxfS0lMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0lHTkFMX1FVSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BTF9VU1IxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTVEVNX1VJRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhSRUFEX1BSSU9SSVRZX0FVRElPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhSRUFEX1BSSU9SSVRZX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIUkVBRF9QUklPUklUWV9ESVNQTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhSRUFEX1BSSU9SSVRZX0ZPUkVHUk9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSFJFQURfUFJJT1JJVFlfTEVTU19GQVZPUkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIUkVBRF9QUklPUklUWV9MT1dFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSFJFQURfUFJJT1JJVFlfTU9SRV9GQVZPUkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSFJFQURfUFJJT1JJVFlfVVJHRU5UX0FVRElPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIUkVBRF9QUklPUklUWV9VUkdFTlRfRElTUExBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii04IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWNvdmVyeVN5c3RlbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVjb3ZlcnlTeXN0ZW0iCisgdHlwZT0iYW5kcm9pZC5vcy5SZWNvdmVyeVN5c3RlbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpbnN0YWxsUGFja2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VGaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYm9vdFdpcGVVc2VyRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeVBhY2thZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VGaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLm9zLlJlY292ZXJ5U3lzdGVtLlByb2dyZXNzTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRldmljZUNlcnRzWmlwRmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJHZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVjb3ZlcnlTeXN0ZW0uUHJvZ3Jlc3NMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Qcm9ncmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmVtb3RlQ2FsbGJhY2tMaXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZW1vdGVDYWxsYmFja0xpc3QiCisgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVDYWxsYmFja0xpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmVnaW5Ccm9hZGNhc3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluaXNoQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCcm9hZGNhc3RDb29raWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJyb2FkY2FzdEl0ZW0iCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2FsbGJhY2tEaWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DYWxsYmFja0RpZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZW1vdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC51dGlsLkFuZHJvaWRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZW1vdGVFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzdWx0UmVjZWl2ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXN1bHRSZWNlaXZlciIKKyB0eXBlPSJhbmRyb2lkLm9zLlJlc3VsdFJlY2VpdmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVSZXN1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdERhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdERhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhdEZzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGF0RnMiCisgdHlwZT0iYW5kcm9pZC5vcy5TdGF0RnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXZhaWxhYmxlQmxvY2tzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmxvY2tDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJsb2NrU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyZWVCbG9ja3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0YXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN5c3RlbUNsb2NrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjdXJyZW50VGhyZWFkVGltZU1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsYXBzZWRSZWFsdGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbnRUaW1lTWlsbGlzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGVlcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXB0aW1lTWlsbGlzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVG9rZW5XYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRva2VuV2F0Y2hlciIKKyB0eXBlPSJhbmRyb2lkLm9zLlRva2VuV2F0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhbnVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5saW5rIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWNxdWlyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpYnJhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2aWJyYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZpYnJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5wcmVmZXJlbmNlIgorPgorPGNsYXNzIG5hbWU9IkNoZWNrQm94UHJlZmVyZW5jZSIKKyBleHRlbmRzPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoZWNrQm94UHJlZmVyZW5jZSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuQ2hlY2tCb3hQcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja0JveFByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkNoZWNrQm94UHJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hlY2tCb3hQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5DaGVja0JveFByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERpc2FibGVEZXBlbmRlbnRzU3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1bW1hcnlPZmYiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1bW1hcnlPbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDaGVja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGVja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaXNhYmxlRGVwZW5kZW50c1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzYWJsZURlcGVuZGVudHNTdGF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdW1tYXJ5T2ZmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VtbWFyeSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdW1tYXJ5T2ZmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VtbWFyeVJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VtbWFyeU9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VtbWFyeSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdW1tYXJ5T24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdW1tYXJ5UmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaWFsb2dQcmVmZXJlbmNlIgorIGV4dGVuZHM9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyLk9uQWN0aXZpdHlEZXN0cm95TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpYWxvZ1ByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkRpYWxvZ1ByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpYWxvZ1ByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkRpYWxvZ1ByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREaWFsb2ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlhbG9nSWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlhbG9nTGF5b3V0UmVzb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlhbG9nTWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlhbG9nVGl0bGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5lZ2F0aXZlQnV0dG9uVGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zaXRpdmVCdXR0b25UZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFjdGl2aXR5RGVzdHJveSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CaW5kRGlhbG9nVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2xpY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoaWNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVEaWFsb2dWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaWFsb2dDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGl2ZVJlc3VsdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRpc21pc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlRGlhbG9nQnVpbGRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1aWxkZXIiIHR5cGU9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nSWNvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ0ljb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nSWNvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ0ljb25SZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaWFsb2dMYXlvdXRSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ0xheW91dFJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ01lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ01lc3NhZ2VSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpYWxvZ1RpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nVGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nVGl0bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2dUaXRsZVJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmVnYXRpdmVCdXR0b25UZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVnYXRpdmVCdXR0b25UZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZ2F0aXZlQnV0dG9uVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5lZ2F0aXZlQnV0dG9uVGV4dFJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9zaXRpdmVCdXR0b25UZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpdmVCdXR0b25UZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aXZlQnV0dG9uVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aXZlQnV0dG9uVGV4dFJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd0RpYWxvZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFZGl0VGV4dFByZWZlcmVuY2UiCisgZXh0ZW5kcz0iYW5kcm9pZC5wcmVmZXJlbmNlLkRpYWxvZ1ByZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFZGl0VGV4dFByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkVkaXRUZXh0UHJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRWRpdFRleHRQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5FZGl0VGV4dFByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVkaXRUZXh0UHJlZmVyZW5jZSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuRWRpdFRleHRQcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFZGl0VGV4dCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWRkRWRpdFRleHRUb0RpYWxvZ1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2dWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdFRleHQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikxpc3RQcmVmZXJlbmNlIgorIGV4dGVuZHM9ImFuZHJvaWQucHJlZmVyZW5jZS5EaWFsb2dQcmVmZXJlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlzdFByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkxpc3RQcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaXN0UHJlZmVyZW5jZSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuTGlzdFByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbmRJbmRleE9mVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJpZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50cnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJ5VmFsdWVzIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRyaWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cmllcyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVudHJpZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyaWVzUmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRyeVZhbHVlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5VmFsdWVzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50cnlWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeVZhbHVlc1Jlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZUluZGV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmVmZXJlbmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYWxsQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFub3RoZXIiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRQcmVmZXJlbmNlSW5IaWVyYXJjaHkiCisgcmV0dXJuPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXBlbmRlbmN5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFZGl0b3IiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXRSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlLk9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZS5PblByZWZlcmVuY2VDbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yZGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcnNpc3RlZEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0UmV0dXJuVmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVyc2lzdGVkRmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFJldHVyblZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJzaXN0ZWRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRSZXR1cm5WYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcnNpc3RlZExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0UmV0dXJuVmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVyc2lzdGVkU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFJldHVyblZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcmVuY2VNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFByZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3VsZERpc2FibGVWaWV3IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdW1tYXJ5IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb252ZXJ0VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWRnZXRMYXlvdXRSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQZXJzaXN0ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlbGVjdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeURlcGVuZGVuY3lDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNhYmxlRGVwZW5kZW50cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlIaWVyYXJjaHlDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkF0dGFjaGVkVG9BY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BdHRhY2hlZFRvSGllcmFyY2h5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZU1hbmFnZXIiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkJpbmRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlcGVuZGVuY3lDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwZW5kZW5jeSIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc2FibGVEZXBlbmRlbnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXREZWZhdWx0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlR5cGVkQXJyYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlRm9yUmVtb3ZhbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNldEluaXRpYWxWYWx1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3RvcmVQZXJzaXN0ZWRWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcnNpc3RCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyc2lzdEZsb2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcnNpc3RJbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcnNpc3RMb25nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyc2lzdFN0cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVIaWVyYXJjaHlTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRhaW5lciIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZUhpZXJhcmNoeVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0VmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVwZW5kZW5jeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcGVuZGVuY3lLZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXlvdXRSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dFJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UuT25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlLk9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3JkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBlcnNpc3RlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJzaXN0ZW50IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3VsZERpc2FibGVWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvdWxkRGlzYWJsZVZpZXciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VtbWFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1bW1hcnkiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VtbWFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1bW1hcnlSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZVJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2lkZ2V0TGF5b3V0UmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXRMYXlvdXRSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZENvbW1pdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvdWxkRGlzYWJsZURlcGVuZGVudHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZFBlcnNpc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9PUkRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxNDc0ODM2NDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByZWZlcmVuY2UuQmFzZVNhdmVkU3RhdGUiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LkFic1NhdmVkU3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByZWZlcmVuY2UuQmFzZVNhdmVkU3RhdGUiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UuQmFzZVNhdmVkU3RhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlLkJhc2VTYXZlZFN0YXRlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlLkJhc2VTYXZlZFN0YXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwZXJTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUHJlZmVyZW5jZS5PblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25QcmVmZXJlbmNlQ2hhbmdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlIiB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQcmVmZXJlbmNlLk9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uUHJlZmVyZW5jZUNsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlIiB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJlZmVyZW5jZUFjdGl2aXR5IgorIGV4dGVuZHM9ImFuZHJvaWQuYXBwLkxpc3RBY3Rpdml0eSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJlZmVyZW5jZUFjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlQWN0aXZpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUHJlZmVyZW5jZXNGcm9tSW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFByZWZlcmVuY2VzRnJvbVJlc291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZXNSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRQcmVmZXJlbmNlIgorIHJldHVybj0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJlbmNlTWFuYWdlciIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJlbmNlU2NyZWVuIgorIHJldHVybj0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VTY3JlZW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVmZXJlbmNlVHJlZUNsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZVNjcmVlbiIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VTY3JlZW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZlcmVuY2UiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZWZlcmVuY2VTY3JlZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlU2NyZWVuIiB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZVNjcmVlbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmVmZXJlbmNlQ2F0ZWdvcnkiCisgZXh0ZW5kcz0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByZWZlcmVuY2VDYXRlZ29yeSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUNhdGVnb3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlQ2F0ZWdvcnkiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VDYXRlZ29yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJlZmVyZW5jZUNhdGVnb3J5IgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlQ2F0ZWdvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByZWZlcmVuY2VHcm91cCIKKyBleHRlbmRzPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJlZmVyZW5jZUdyb3VwIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByZWZlcmVuY2VHcm91cCIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUdyb3VwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSXRlbUZyb21JbmZsYXRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZlcmVuY2UiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFByZWZlcmVuY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlIiB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFJlc3RvcmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFNhdmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kUHJlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcmVuY2VDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09uU2FtZVNjcmVlbkFzQ2hpbGRyZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3JkZXJpbmdBc0FkZGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByZXBhcmVBZGRQcmVmZXJlbmNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZSIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQcmVmZXJlbmNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZSIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3JkZXJpbmdBc0FkZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXJpbmdBc0FkZGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByZWZlcmVuY2VNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUHJlZmVyZW5jZVNjcmVlbiIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlU2NyZWVuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kUHJlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFNoYXJlZFByZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFByZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFByZWZlcmVuY2VzTW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaGFyZWRQcmVmZXJlbmNlc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkQWdhaW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFZhbHVlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZFByZWZlcmVuY2VzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhcmVkUHJlZmVyZW5jZXNNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRBZ2FpbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaGFyZWRQcmVmZXJlbmNlc01vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFyZWRQcmVmZXJlbmNlc01vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaGFyZWRQcmVmZXJlbmNlc05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFyZWRQcmVmZXJlbmNlc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJLRVlfSEFTX1NFVF9ERUZBVUxUX1ZBTFVFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfaGFzX3NldF9kZWZhdWx0X3ZhbHVlcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBREFUQV9LRVlfUFJFRkVSRU5DRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcmVmZXJlbmNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUHJlZmVyZW5jZU1hbmFnZXIuT25BY3Rpdml0eURlc3Ryb3lMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BY3Rpdml0eURlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQcmVmZXJlbmNlTWFuYWdlci5PbkFjdGl2aXR5UmVzdWx0TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQWN0aXZpdHlSZXN1bHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlByZWZlcmVuY2VNYW5hZ2VyLk9uQWN0aXZpdHlTdG9wTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQWN0aXZpdHlTdG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQcmVmZXJlbmNlU2NyZWVuIgorIGV4dGVuZHM9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlR3JvdXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtQ2xpY2tMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uRGlzbWlzc0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RWaWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaWFsb2ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um9vdEFkYXB0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVJvb3RBZGFwdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSXRlbUNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJpbmd0b25lUHJlZmVyZW5jZSIKKyBleHRlbmRzPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyLk9uQWN0aXZpdHlSZXN1bHRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmluZ3RvbmVQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5SaW5ndG9uZVByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJpbmd0b25lUHJlZmVyZW5jZSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUmluZ3RvbmVQcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSaW5ndG9uZVByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlJpbmd0b25lUHJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UmluZ3RvbmVUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3dEZWZhdWx0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG93U2lsZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFjdGl2aXR5UmVzdWx0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJlcGFyZVJpbmd0b25lUGlja2VySW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmluZ3RvbmVQaWNrZXJJbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlUmluZ3RvbmUiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlUmluZ3RvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyaW5ndG9uZVVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJpbmd0b25lVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaG93RGVmYXVsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNob3dEZWZhdWx0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3dTaWxlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaG93U2lsZW50IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5wcm92aWRlciIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQmFzZUNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9Il9DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkJyb3dzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJyb3dzZXIiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Ccm93c2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFNlYXJjaFVybCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VhcmNoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbkNsZWFySGlzdG9yeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckhpc3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJTZWFyY2hlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVGcm9tSGlzdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUhpc3RvcnlUaW1lRnJhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJlZ2luIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsQm9va21hcmtzIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbFZpc2l0ZWRVcmxzIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RBbGxJY29ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJJY29uRGF0YWJhc2UuSWNvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVCb29rbWFyayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kU3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRydW5jYXRlSGlzdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVWaXNpdGVkSGlzdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQk9PS01BUktTX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQVBQTElDQVRJT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuYnJvd3Nlci5hcHBsaWNhdGlvbl9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9IRUFERVJTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmJyb3dzZXIuaGVhZGVycyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISVNUT1JZX1BST0pFQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhJU1RPUllfUFJPSkVDVElPTl9CT09LTUFSS19JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElTVE9SWV9QUk9KRUNUSU9OX0RBVEVfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhJU1RPUllfUFJPSkVDVElPTl9GQVZJQ09OX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISVNUT1JZX1BST0pFQ1RJT05fSURfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhJU1RPUllfUFJPSkVDVElPTl9USVRMRV9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElTVE9SWV9QUk9KRUNUSU9OX1VSTF9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElTVE9SWV9QUk9KRUNUSU9OX1ZJU0lUU19JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5JVElBTF9aT09NX0xFVkVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Jyb3dzZXIuaW5pdGlhbFpvb21MZXZlbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUFSQ0hFU19QUk9KRUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUFSQ0hFU19QUk9KRUNUSU9OX0RBVEVfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSEVTX1BST0pFQ1RJT05fU0VBUkNIX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUFSQ0hFU19VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSVU5DQVRFX0hJU1RPUllfUFJPSkVDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVTkNBVEVfSElTVE9SWV9QUk9KRUNUSU9OX0lEX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUlVOQ0FURV9OX09MREVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJyb3dzZXIuQm9va21hcmtDb2x1bW5zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnJvd3Nlci5Cb29rbWFya0NvbHVtbnMiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Ccm93c2VyLkJvb2ttYXJrQ29sdW1ucyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkJPT0tNQVJLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Jvb2ttYXJrJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y3JlYXRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkFWSUNPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtmYXZpY29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVSTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1cmwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklTSVRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Zpc2l0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnJvd3Nlci5TZWFyY2hDb2x1bW5zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnJvd3Nlci5TZWFyY2hDb2x1bW5zIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQnJvd3Nlci5TZWFyY2hDb2x1bW5zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iREFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZWFyY2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVJMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VybCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2FsbExvZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FsbExvZyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLkNhbGxMb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBVVRIT1JJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2FsbF9sb2cmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDYWxsTG9nLkNhbGxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FsbExvZy5DYWxscyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLkNhbGxMb2cuQ2FsbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdE91dGdvaW5nQ2FsbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDQUNIRURfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBQ0hFRF9OVU1CRVJfTEFCRUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVybGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FDSEVEX05VTUJFUl9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bWJlcnR5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9GSUxURVJfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9jYWxscyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9jYWxscyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRlIERFU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFVSQVRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZHVyYXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5DT01JTkdfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlTU0VEX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZXcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bWJlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPVVRHT0lOR19UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkFVVEhPUklUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb250YWN0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfRU1BSUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9JTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX09SR0FOSVpBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1BIT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfUE9TVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5Db250YWN0TWV0aG9kcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuQ29udGFjdE1ldGhvZHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGVvcGxlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZFBvc3RhbExvY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zdGFsSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUltUHJvdG9jb2wiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RlZFN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVDdXN0b21JbVByb3RvY29sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZVByZWRlZmluZWRJbVByb3RvY29sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheUxhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRU1BSUxfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2VtYWlsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9FTUFJTF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvZW1haWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0VNQUlMX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lNX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9qYWJiZXItaW0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1BPU1RBTF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vcG9zdGFsLWFkZHJlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1BPU1RBTF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvcG9zdGFsLWFkZHJlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9jb250YWN0LW1ldGhvZHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMX0xPQ0FUSU9OX0xBVElUVURFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUQUxfTE9DQVRJT05fTE9OR0lUVURFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2F1eF9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfQUlNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX0dPT0dMRV9UQUxLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX0lDUSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9KQUJCRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfTVNOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1FRIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1NLWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1lBSE9PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHMuQ29udGFjdE1ldGhvZHNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQVVYX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV4X2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtraW5kJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFCRUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0NVU1RPTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9PVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5FeHRlbnNpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5FeHRlbnNpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vY29udGFjdF9leHRlbnNpb25zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvY29udGFjdF9leHRlbnNpb25zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BlcnNvbiwgbmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0cy5FeHRlbnNpb25zQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZBTFVFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZhbHVlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5Hcm91cE1lbWJlcnNoaXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLkdyb3Vwc0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRElSRUNUT1JZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2dyb3VwbWVtYmVyc2hpcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2NvbnRhY3RzZ3JvdXBtZW1iZXJzaGlwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvY29udGFjdHNncm91cG1lbWJlcnNoaXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXBfaWQgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JPVVBfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXBfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9TWU5DX0FDQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXBfc3luY19hY2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JPVVBfU1lOQ19BQ0NPVU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXBfc3luY19hY2NvdW50X3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9TWU5DX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2dyb3VwX3N5bmNfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkFXX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5Hcm91cHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLkdyb3Vwc0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2NvbnRhY3RzZ3JvdXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9jb250YWN0c2dyb3VwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25hbWUgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVMRVRFRF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9BTkRST0lEX1NUQVJSRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7U3RhcnJlZCBpbiBBbmRyb2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JPVVBfTVlfQ09OVEFDVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Q29udGFjdHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzLkdyb3Vwc0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJOQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtub3RlcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1VMRF9TWU5DIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Nob3VsZF9zeW5jJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTVEVNX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N5c3RlbV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHMuSW50ZW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGFjdHMuSW50ZW50cyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLkludGVudHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkFUVEFDSF9JTUFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uQVRUQUNIX0lNQUdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ1JFQVRFX0RFU0NSSVBUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmNvbnRhY3RzLmFjdGlvbi5DUkVBVEVfREVTQ1JJUFRJT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9GT1JDRV9DUkVBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLkZPUkNFX0NSRUFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSF9TVUdHRVNUSU9OX0NMSUNLRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5TRUFSQ0hfU1VHR0VTVElPTl9DTElDS0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VBUkNIX1NVR0dFU1RJT05fQ1JFQVRFX0NPTlRBQ1RfQ0xJQ0tFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLlNFQVJDSF9TVUdHRVNUSU9OX0NSRUFURV9DT05UQUNUX0NMSUNLRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUFSQ0hfU1VHR0VTVElPTl9ESUFMX05VTUJFUl9DTElDS0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuU0VBUkNIX1NVR0dFU1RJT05fRElBTF9OVU1CRVJfQ0xJQ0tFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1dfT1JfQ1JFQVRFX0NPTlRBQ1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLlNIT1dfT1JfQ1JFQVRFX0NPTlRBQ1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHMuSW50ZW50cy5JbnNlcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzLkludGVudHMuSW5zZXJ0IgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuSW50ZW50cy5JbnNlcnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkFDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5TRVJUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUEFOWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb21wYW55JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU1BSUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW1haWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTUFJTF9JU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW1haWxfaXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU1BSUxfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbWFpbF90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlVMTF9NT0RFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Z1bGxfbW9kZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0hBTkRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9oYW5kbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTV9JU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW1faXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1fUFJPVE9DT0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW1fcHJvdG9jb2wmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKT0JfVElUTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7am9iX3RpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9URVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90ZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FVElDX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGhvbmV0aWNfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FX0lTUFJJTUFSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZV9pc3ByaW1hcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25lX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG9zdGFsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMX0lTUFJJTUFSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwb3N0YWxfaXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG9zdGFsX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRBUllfRU1BSUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X2VtYWlsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EQVJZX0VNQUlMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X2VtYWlsX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRBUllfUEhPTkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EQVJZX1BIT05FX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X3Bob25lX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVJUSUFSWV9FTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0ZXJ0aWFyeV9lbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFUlRJQVJZX0VNQUlMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGVydGlhcnlfZW1haWxfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFUlRJQVJZX1BIT05FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlcnRpYXJ5X3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVSVElBUllfUEhPTkVfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0ZXJ0aWFyeV9waG9uZV90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLkludGVudHMuVUkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzLkludGVudHMuVUkiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5JbnRlbnRzLlVJIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJGSUxURVJfQ09OVEFDVFNfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmNvbnRhY3RzLmFjdGlvbi5GSUxURVJfQ09OVEFDVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSUxURVJfVEVYVF9FWFRSQV9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuZXh0cmEuRklMVEVSX1RFWFQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9OQU1FX0VYVFJBX0tFWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5leHRyYS5HUk9VUCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RfQUxMX0NPTlRBQ1RTX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9BTExfQ09OVEFDVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNUX0NPTlRBQ1RTX1dJVEhfUEhPTkVTX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9DT05UQUNUU19XSVRIX1BIT05FUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RfREVGQVVMVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9ERUZBVUxUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElTVF9GUkVRVUVOVF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLkxJU1RfRlJFUVVFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNUX0dST1VQX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9HUk9VUCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RfU1RBUlJFRF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLkxJU1RfU1RBUlJFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RfU1RSRVFVRU5UX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9TVFJFUVVFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSVRMRV9FWFRSQV9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuZXh0cmEuVElUTEVfRVhUUkEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzLk9yZ2FuaXphdGlvbkNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJDT01QQU5ZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbXBhbnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFCRUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElUTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGl0bGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0NVU1RPTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLk9yZ2FuaXphdGlvbnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLk9yZ2FuaXphdGlvbkNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRElSRUNUT1JZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O29yZ2FuaXphdGlvbnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tcGFueSwgdGl0bGUsIGlzcHJpbWFyeSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHMuUGVvcGxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5QZW9wbGVDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGhvbmVzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLlByZXNlbmNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZFRvR3JvdXAiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyc29uSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRUb0dyb3VwIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcnNvbklkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRvTXlDb250YWN0c0dyb3VwIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcnNvbklkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVBlcnNvbkluTXlDb250YWN0c0dyb3VwIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZENvbnRhY3RQaG90byIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcnNvbiIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbGFjZWhvbGRlckltYWdlUmVzb3VyY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5Lk9wdGlvbnMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFya0FzQ29udGFjdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJzb25JZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29udGFjdFBob3RvSW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcnNvbiIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5R3JvdXBzIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyc29uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBob3RvRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyc29uIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRklMVEVSX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9wZXJzb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9wZXJzb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUxFVEVEX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSU1BUllfRU1BSUxfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cHJpbWFyeV9lbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSU1BUllfT1JHQU5JWkFUSU9OX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ByaW1hcnlfb3JnYW5pemF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJJTUFSWV9QSE9ORV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwcmltYXJ5X3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBlb3BsZS5Db250YWN0TWV0aG9kcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuQ29udGFjdE1ldGhvZHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGVvcGxlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9tZXRob2RzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGEgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBlb3BsZS5FeHRlbnNpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuRXh0ZW5zaW9uc0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRElSRUNUT1JZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2V4dGVuc2lvbnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBlb3BsZS5QaG9uZXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLlBlb3BsZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5QaG9uZXNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVyIEFTQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHMuUGVvcGxlQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNVU1RPTV9SSU5HVE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjdXN0b21fcmluZ3RvbmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNQTEFZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGlzcGxheV9uYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFTVF9USU1FX0NPTlRBQ1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsYXN0X3RpbWVfY29udGFjdGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9URVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90ZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25ldGljX25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9UT19WRVJTSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob3RvX3ZlcnNpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5EX1RPX1ZPSUNFTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZW5kX3RvX3ZvaWNlbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVJSRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhcnJlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVTX0NPTlRBQ1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0aW1lc19jb250YWN0ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBob25lcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGVvcGxlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLlBob25lc0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWxBcnJheSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxhYmVsIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9GSUxURVJfVVJMIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvcGhvbmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0cy5QaG9uZXNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iSVNQUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzcHJpbWFyeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBQkVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xhYmVsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bWJlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5VTUJFUl9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVyX2tleSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQ1VTVE9NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRkFYX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GQVhfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9PVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1BBR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBob3RvcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGhvdG9zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGhvdG8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uIEFTQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHMuUGhvdG9zQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkRBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPV05MT0FEX1JFUVVJUkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Rvd25sb2FkX3JlcXVpcmVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhJU1RTX09OX1NFUlZFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtleGlzdHNfb25fc2VydmVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DQUxfVkVSU0lPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsb2NhbF92ZXJzaW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEVSU09OX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BlcnNvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfRVJST1IiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3luY19lcnJvciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzLlByZXNlbmNlQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkFWQUlMQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVdBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9fTk9UX0RJU1RVUkIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklETEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0FDQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW1fYWNjb3VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0hBTkRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9oYW5kbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTV9QUk9UT0NPTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9wcm90b2NvbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVklTSUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT0ZGTElORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU0VOQ0VfQ1VTVE9NX1NUQVRVUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdGF0dXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU0VOQ0VfU1RBVFVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21vZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJJT1JJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cHJpb3JpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5TZXR0aW5ncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuU2V0dGluZ3NDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0U2V0dGluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNldHRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXR0aW5ncyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtrZXkgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQ19FVkVSWVRISU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N5bmNFdmVyeXRoaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0cy5TZXR0aW5nc0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJLRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7a2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkFMVUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmFsdWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJfU1lOQ19BQ0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19zeW5jX2FjY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJfU1lOQ19BQ0NPVU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X3N5bmNfYWNjb3VudF90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQVVUSE9SSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmNvbnRhY3RzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVVEhPUklUWV9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTExFUl9JU19TWU5DQURBUFRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjYWxsZXJfaXNfc3luY2FkYXB0ZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQWdncmVnYXRpb25FeGNlcHRpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9hZ2dyZWdhdGlvbl9leGNlcHRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvYWdncmVnYXRpb25fZXhjZXB0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSQVdfQ09OVEFDVF9JRDEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cmF3X2NvbnRhY3RfaWQxJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBV19DT05UQUNUX0lEMiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtyYXdfY29udGFjdF9pZDImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQVVUT01BVElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0tFRVBfU0VQQVJBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfS0VFUF9UT0dFVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkJhc2VTeW5jQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxmaWVsZCBuYW1lPSJTWU5DMSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeW5jMSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DMiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeW5jMiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DMyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeW5jMyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DNCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeW5jNCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5CYXNlVHlwZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iVFlQRV9DVVNUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLkNvbW1vbkNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLkJhc2VUeXBlcyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQUJFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGEyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuRW1haWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuQ29tbW9uQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWxSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRklMVEVSX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vZW1haWxfdjImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9MT09LVVBfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9lbWFpbF92MiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSE9NRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLkV2ZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLkNvbW1vbkNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkRhdGFDb2x1bW5zV2l0aEpvaW5zIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZVJlc291cmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vY29udGFjdF9ldmVudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9EQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQU5OSVZFUlNBUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQklSVEhEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Hcm91cE1lbWJlcnNoaXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vZ3JvdXBfbWVtYmVyc2hpcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9ST1dfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JPVVBfU09VUkNFX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2dyb3VwX3NvdXJjZWlkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5JbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Db21tb25Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbExhYmVsUmVzb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZUxhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWwiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZUxhYmVsUmVzb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9pbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVNUT01fUFJPVE9DT0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfQUlNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9DVVNUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9HT09HTEVfVEFMSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfSUNRIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9KQUJCRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX01TTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfTkVUTUVFVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfUVEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1NLWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9ZQUhPTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9IT01FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5OaWNrbmFtZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Db21tb25Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vbmlja25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSU5JVElBTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTUFJTkRFTl9OQU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSX05BTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU0hPUlRfTkFNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLk5vdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vbm90ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Pcmdhbml6YXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuQ29tbW9uQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWxSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTVBBTlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vb3JnYW5pemF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFUEFSVE1FTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSk9CX0RFU0NSSVBUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE2JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9GRklDRV9MT0NBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhOSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE4JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTUJPTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSVRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5QaG9uZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Db21tb25Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxhYmVsIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVMYWJlbFJlc291cmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9GSUxURVJfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9waG9uZV92MiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9waG9uZV92MiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQVNTSVNUQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DQUxMQkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQ09NUEFOWV9NQUlOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GQVhfSE9NRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GQVhfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9IT01FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0lTRE4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX01BSU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX01NUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTU9CSUxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSX0ZBWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfUEFHRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfUkFESU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFTEVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9UVFlfVEREIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dPUktfTU9CSUxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XT1JLX1BBR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLlBob3RvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3Bob3RvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT1RPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExNSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuUmVsYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuQ29tbW9uQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3JlbGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BU1NJU1RBTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQlJPVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DSElMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9ET01FU1RJQ19QQVJUTkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0ZBVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GUklFTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTUFOQUdFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfUEFSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1BBUlRORVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1JFRkVSUkVEX0JZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9SRUxBVElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU0lTVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TUE9VU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuU3RydWN0dXJlZE5hbWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNQTEFZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkFNSUxZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0lWRU5fTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSURETEVfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19GQU1JTFlfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhOSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19HSVZFTl9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE3JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FVElDX01JRERMRV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE4JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRUZJWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUZGSVgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLlN0cnVjdHVyZWRQb3N0YWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuQ29tbW9uQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWxSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vcG9zdGFsLWFkZHJlc3NfdjImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvcG9zdGFsLWFkZHJlc3NfdjImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPVU5UUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVFRFRF9BRERSRVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FSUdIQk9SSE9PRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT0JPWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUQ09ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhOSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUdJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUVUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSE9NRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9PVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuV2Vic2l0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Db21tb25Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vd2Vic2l0ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0JMT0ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRlRQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSE9NRVBBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfUFJPRklMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVUkwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxmaWVsZCBuYW1lPSJDVVNUT01fUklOR1RPTkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y3VzdG9tX3Jpbmd0b25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBU1RfVElNRV9DT05UQUNURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bGFzdF90aW1lX2NvbnRhY3RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5EX1RPX1ZPSUNFTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZW5kX3RvX3ZvaWNlbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSUkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXJyZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElNRVNfQ09OVEFDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RpbWVzX2NvbnRhY3RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbnRhY3RTdGF0dXNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGZpZWxkIG5hbWU9IkNPTlRBQ1RfUFJFU0VOQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9wcmVzZW5jZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05UQUNUX1NUQVRVUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb250YWN0X3N0YXR1cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05UQUNUX1NUQVRVU19JQ09OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbnRhY3Rfc3RhdHVzX2ljb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEFDVF9TVEFUVVNfTEFCRUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9zdGF0dXNfbGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEFDVF9TVEFUVVNfUkVTX1BBQ0tBR0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9zdGF0dXNfcmVzX3BhY2thZ2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEFDVF9TVEFUVVNfVElNRVNUQU1QIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbnRhY3Rfc3RhdHVzX3RzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db250YWN0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdFN0YXR1c0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldExvb2t1cFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFjdFVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvb2t1cFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250YWN0SWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb2t1cEtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb29rdXBDb250YWN0IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb29rdXBVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrQXNDb250YWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250YWN0SWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkNvbnRhY3RQaG90b0lucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFjdFVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9GSUxURVJfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0dST1VQX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vY29udGFjdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0xPT0tVUF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfU1RSRVFVRU5UX0ZJTFRFUl9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfU1RSRVFVRU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvY29udGFjdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9WQ0FSRF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RleHQveC12Y2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1ZDQVJEX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdHMuQWdncmVnYXRpb25TdWdnZXN0aW9ucyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0aW9ucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db250YWN0cy5EYXRhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db250YWN0cy5QaG90byIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRElSRUNUT1JZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob3RvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db250YWN0c0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Rpc3BsYXlfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVNfUEhPTkVfTlVNQkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2hhc19waG9uZV9udW1iZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5fVklTSUJMRV9HUk9VUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbl92aXNpYmxlX2dyb3VwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPT0tVUF9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9va3VwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT1RPX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob3RvX2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5EYXRhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRDb250YWN0TG9va3VwVXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhVXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iREFUQTEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTEwIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExMCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBMTEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEExMiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMTImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTEzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExMyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBMTQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTE0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEExNSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMTUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTYiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9WRVJTSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFfdmVyc2lvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU19QUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzX3ByaW1hcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfU1VQRVJfUFJJTUFSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpc19zdXBlcl9wcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTUVUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21pbWV0eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBV19DT05UQUNUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Jhd19jb250YWN0X2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkMxIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFfc3luYzEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQzIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YV9zeW5jMiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DMyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhX3N5bmMzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkM0IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFfc3luYzQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdFN0YXR1c0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LlJhd0NvbnRhY3RzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuU3RhdHVzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0Lkdyb3VwcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuR3JvdXBzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuU3luY0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJuZXdFbnRpdHlJdGVyYXRvciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5FbnRpdHlJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vZ3JvdXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9TVU1NQVJZX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvZ3JvdXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Hcm91cHNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGZpZWxkIG5hbWU9IkRFTEVURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGVsZXRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9WSVNJQkxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2dyb3VwX3Zpc2libGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9URVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90ZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPVUxEX1NZTkMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2hvdWxkX3N5bmMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VNTUFSWV9DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdW1tX2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVTU1BUllfV0lUSF9QSE9ORVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VtbV9waG9uZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTVEVNX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N5c3RlbV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSVRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0aXRsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuSW50ZW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuSW50ZW50cyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuSW50ZW50cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkFUVEFDSF9JTUFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uQVRUQUNIX0lNQUdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0NSRUFURV9ERVNDUklQVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uQ1JFQVRFX0RFU0NSSVBUSU9OJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0ZPUkNFX0NSRUFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uRk9SQ0VfQ1JFQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSF9TVUdHRVNUSU9OX0NMSUNLRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5TRUFSQ0hfU1VHR0VTVElPTl9DTElDS0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSF9TVUdHRVNUSU9OX0NSRUFURV9DT05UQUNUX0NMSUNLRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5TRUFSQ0hfU1VHR0VTVElPTl9DUkVBVEVfQ09OVEFDVF9DTElDS0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSF9TVUdHRVNUSU9OX0RJQUxfTlVNQkVSX0NMSUNLRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5TRUFSQ0hfU1VHR0VTVElPTl9ESUFMX05VTUJFUl9DTElDS0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1dfT1JfQ1JFQVRFX0NPTlRBQ1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLlNIT1dfT1JfQ1JFQVRFX0NPTlRBQ1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuSW50ZW50cy5JbnNlcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkludGVudHMuSW5zZXJ0IgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5JbnRlbnRzLkluc2VydCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkFDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5TRVJUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBBTlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tcGFueSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTUFJTF9JU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW1haWxfaXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNQUlMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW1haWxfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZnVsbF9tb2RlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0hBTkRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9oYW5kbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1fSVNQUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ltX2lzcHJpbWFyeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTV9QUk9UT0NPTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9wcm90b2NvbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKT0JfVElUTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7am9iX3RpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtub3RlcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25ldGljX25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfSVNQUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25lX2lzcHJpbWFyeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25lX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bvc3RhbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUQUxfSVNQUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bvc3RhbF9pc3ByaW1hcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG9zdGFsX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EQVJZX0VNQUlMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NlY29uZGFyeV9lbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRBUllfRU1BSUxfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZWNvbmRhcnlfZW1haWxfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRBUllfUEhPTkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ09OREFSWV9QSE9ORV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NlY29uZGFyeV9waG9uZV90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFUlRJQVJZX0VNQUlMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlcnRpYXJ5X2VtYWlsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFUlRJQVJZX0VNQUlMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGVydGlhcnlfZW1haWxfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVJUSUFSWV9QSE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0ZXJ0aWFyeV9waG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVJUSUFSWV9QSE9ORV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlcnRpYXJ5X3Bob25lX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuUGhvbmVMb29rdXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5QaG9uZUxvb2t1cENvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRklMVEVSX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlBob25lTG9va3VwQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxmaWVsZCBuYW1lPSJMQUJFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsYWJlbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVU1CRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuUHJlc2VuY2UiCisgZXh0ZW5kcz0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LlN0YXR1c1VwZGF0ZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlByZXNlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5QcmVzZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5QcmVzZW5jZUNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iQ1VTVE9NX1BST1RPQ09MIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2N1c3RvbV9wcm90b2NvbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ByZXNlbmNlX2RhdGFfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1fQUNDT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9hY2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0hBTkRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9oYW5kbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cHJvdG9jb2wmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlF1aWNrQ29udGFjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuUXVpY2tDb250YWN0IgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5RdWlja0NvbnRhY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2hvd1F1aWNrQ29udGFjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb2t1cFVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2x1ZGVNaW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dRdWlja0NvbnRhY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9va3VwVXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjbHVkZU1pbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNT0RFX0xBUkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX01FRElVTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9TTUFMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuUmF3Q29udGFjdHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuUmF3Q29udGFjdHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5TeW5jQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRhY3RMb29rdXBVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhd0NvbnRhY3RVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdFbnRpdHlJdGVyYXRvciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5FbnRpdHlJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUdHUkVHQVRJT05fTU9ERV9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBR0dSRUdBVElPTl9NT0RFX0RJU0FCTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBR0dSRUdBVElPTl9NT0RFX0lNTUVESUFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUdHUkVHQVRJT05fTU9ERV9TVVNQRU5ERUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3Jhd19jb250YWN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyL3Jhd19jb250YWN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5SYXdDb250YWN0cy5EYXRhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5SYXdDb250YWN0cy5FbnRpdHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkRhdGFDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbnRpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhX2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5SYXdDb250YWN0c0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iQUdHUkVHQVRJT05fTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthZ2dyZWdhdGlvbl9tb2RlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRBQ1RfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUxFVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RlbGV0ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlJhd0NvbnRhY3RzRW50aXR5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuUmF3Q29udGFjdHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9yYXdfY29udGFjdF9lbnRpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5TZXR0aW5ncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LlNldHRpbmdzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vc2V0dGluZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9zZXR0aW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuU2V0dGluZ3NDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGZpZWxkIG5hbWU9IkFDQ09VTlRfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDT1VOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnRfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTllfVU5TWU5DRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW55X3Vuc3luY2VkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1VMRF9TWU5DIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Nob3VsZF9zeW5jJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOR1JPVVBFRF9DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdW1tX2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOR1JPVVBFRF9WSVNJQkxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VuZ3JvdXBlZF92aXNpYmxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOR1JPVVBFRF9XSVRIX1BIT05FUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdW1tX3Bob25lcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlN0YXR1c0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iQVZBSUxBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBV0FZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET19OT1RfRElTVFVSQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSURMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WSVNJQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPRkZMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTRU5DRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttb2RlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNFTkNFX0NVU1RPTV9TVEFUVVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhdHVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU0VOQ0VfU1RBVFVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21vZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhdHVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRVU19JQ09OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXR1c19pY29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRVU19MQUJFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdGF0dXNfbGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVFVTX1JFU19QQUNLQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXR1c19yZXNfcGFja2FnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfVElNRVNUQU1QIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXR1c190cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuU3RhdHVzVXBkYXRlcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5QcmVzZW5jZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LlN0YXR1c0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVzZW5jZUljb25SZXNvdXJjZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlc2VuY2VQcmVjZWRlbmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9zdGF0dXMtdXBkYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyL3N0YXR1cy11cGRhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5TeW5jQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5CYXNlU3luY0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkFDQ09VTlRfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDT1VOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnRfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkaXJ0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT1VSQ0VfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c291cmNlaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkVSU0lPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2ZXJzaW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5TeW5jU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuU3luY1N0YXRlQ29udHJhY3QuQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlckNsaWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpdGhVcmkiCisgcmV0dXJuPSJhbmRyb2lkLnV0aWwuUGFpciZsdDthbmRyb2lkLm5ldC5VcmksIGJ5dGVbXSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTZXRPcGVyYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3luY3N0YXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGl2ZUZvbGRlcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQ1JFQVRFX0xJVkVfRk9MREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5DUkVBVEVfTElWRV9GT0xERVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVTQ1JJUFRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9NT0RFX0dSSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU1BMQVlfTU9ERV9MSVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MSVZFX0ZPTERFUl9CQVNFX0lOVEVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5saXZlZm9sZGVyLkJBU0VfSU5URU5UJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0xJVkVfRk9MREVSX0RJU1BMQVlfTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5saXZlZm9sZGVyLkRJU1BMQVlfTU9ERSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MSVZFX0ZPTERFUl9JQ09OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLmxpdmVmb2xkZXIuSUNPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MSVZFX0ZPTERFUl9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLmxpdmVmb2xkZXIuTkFNRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJQ09OX0JJVE1BUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpY29uX2JpdG1hcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJQ09OX1BBQ0tBR0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aWNvbl9wYWNrYWdlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklDT05fUkVTT1VSQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aWNvbl9yZXNvdXJjZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW50ZW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZWRpYVN0b3JlIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZWRpYVNjYW5uZXJVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9JTUFHRV9DQVBUVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuYWN0aW9uLklNQUdFX0NBUFRVUkUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1ZJREVPX0NBUFRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5tZWRpYS5hY3Rpb24uVklERU9fQ0FQVFVSRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVVRIT1JJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bWVkaWEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfRFVSQVRJT05fTElNSVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuZHVyYXRpb25MaW1pdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9GSU5JU0hfT05fQ09NUExFVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5maW5pc2hPbkNvbXBsZXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfRlVMTF9TQ1JFRU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuZnVsbFNjcmVlbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9NRURJQV9BTEJVTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5hbGJ1bSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9NRURJQV9BUlRJU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuYXJ0aXN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX01FRElBX0ZPQ1VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLmZvY3VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX01FRElBX1RJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnRpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX09VVFBVVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtvdXRwdXQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU0NSRUVOX09SSUVOVEFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNjcmVlbk9yaWVudGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NIT1dfQUNUSU9OX0lDT05TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNob3dBY3Rpb25JY29ucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TSVpFX0xJTUlUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNpemVMaW1pdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9WSURFT19RVUFMSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnZpZGVvUXVhbGl0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFTlRfQUNUSU9OX01FRElBX1NFQVJDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfU0VBUkNIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVOVF9BQ1RJT05fTVVTSUNfUExBWUVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NVVNJQ19QTEFZRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URU5UX0FDVElPTl9TVElMTF9JTUFHRV9DQU1FUkEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5tZWRpYS5hY3Rpb24uU1RJTExfSU1BR0VfQ0FNRVJBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVOVF9BQ1RJT05fVklERU9fQ0FNRVJBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuYWN0aW9uLlZJREVPX0NBTUVSQSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9TQ0FOTkVSX1ZPTFVNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5LTk9XTl9TVFJJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Jmx0O3Vua25vd24mZ3Q7JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpbyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ia2V5Rm9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkFsYnVtQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJBTEJVTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGJ1bSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTEJVTV9BUlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWxidW1fYXJ0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMQlVNX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FsYnVtX2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMQlVNX0tFWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGJ1bV9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVJUSVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSVJTVF9ZRUFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21pbnllYXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFTVF9ZRUFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21heHllYXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSX09GX1NPTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bXNvbmdzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5VTUJFUl9PRl9TT05HU19GT1JfQVJUSVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bXNvbmdzX2J5X2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik1lZGlhU3RvcmUuQXVkaW8uQWxidW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5BdWRpby5BbGJ1bUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhU3RvcmUuQXVkaW8uQWxidW1zIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5BdWRpby5BbGJ1bXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2b2x1bWVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvYWxidW1zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGJ1bV9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5UUllfQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2FsYnVtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkFydGlzdENvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQVJUSVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUlRJU1RfS0VZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdF9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSX09GX0FMQlVNUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtudW1iZXJfb2ZfYWxidW1zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5VTUJFUl9PRl9UUkFDS1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVyX29mX3RyYWNrcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik1lZGlhU3RvcmUuQXVkaW8uQXJ0aXN0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uQXJ0aXN0Q29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5BcnRpc3RzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5BdWRpby5BcnRpc3RzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyL2FydGlzdHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdF9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5UUllfQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkFydGlzdHMuQWxidW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uQWxidW1Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkFydGlzdHMuQWxidW1zIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5BdWRpby5BcnRpc3RzLkFsYnVtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJ0aXN0SWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhU3RvcmUuQXVkaW8uQXVkaW9Db2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLk1lZGlhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQUxCVU0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWxidW0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxCVU1fQVJUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FsYnVtX2FydCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTEJVTV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGJ1bV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTEJVTV9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWxidW1fa2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFSVElTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthcnRpc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVJUSVNUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdF9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUlRJU1RfS0VZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdF9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQk9PS01BUksiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Ym9va21hcmsmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUE9TRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tcG9zZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFVSQVRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZHVyYXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfQUxBUk0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNfYWxhcm0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfTVVTSUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNfbXVzaWMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfTk9USUZJQ0FUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzX25vdGlmaWNhdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU19QT0RDQVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzX3BvZGNhc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfUklOR1RPTkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNfcmluZ3RvbmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElUTEVfS0VZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RpdGxlX2tleSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFDSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0cmFjayZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZRUFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3llYXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkdlbnJlcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uR2VucmVzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5HZW5yZXMiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLkdlbnJlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9nZW5yZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTlRSWV9DT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vZ2VucmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5HZW5yZXMuTWVtYmVycyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLkF1ZGlvQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5HZW5yZXMuTWVtYmVycyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uR2VucmVzLk1lbWJlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdlbnJlSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBVURJT19JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdWRpb19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttZW1iZXJzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0aXRsZV9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VOUkVfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z2VucmVfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkdlbnJlc0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5NZWRpYSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLkF1ZGlvQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5NZWRpYSIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uTWVkaWEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2b2x1bWVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRVcmlGb3JQYXRoIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9hdWRpbyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGl0bGVfa2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9NQVhfQllURVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLmV4dHJhLk1BWF9CWVRFUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVDT1JEX1NPVU5EX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuUkVDT1JEX1NPVU5EJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLlBsYXlsaXN0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uUGxheWxpc3RzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5QbGF5bGlzdHMiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLlBsYXlsaXN0cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9wbGF5bGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTlRSWV9DT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vcGxheWxpc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5QbGF5bGlzdHMuTWVtYmVycyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLkF1ZGlvQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5QbGF5bGlzdHMuTWVtYmVycyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uUGxheWxpc3RzLk1lbWJlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBsYXlsaXN0SWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZUl0ZW0iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbGF5bGlzdElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBVURJT19JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdWRpb19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttZW1iZXJzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwbGF5X29yZGVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBMQVlMSVNUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BsYXlsaXN0X2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBMQVlfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGxheV9vcmRlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5QbGF5bGlzdHNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkRBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFURV9BRERFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRlX2FkZGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfTU9ESUZJRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0ZV9tb2RpZmllZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkltYWdlcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhU3RvcmUuSW1hZ2VzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5JbWFnZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhU3RvcmUuSW1hZ2VzLkltYWdlQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5NZWRpYUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkJVQ0tFVF9ESVNQTEFZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YnVja2V0X2Rpc3BsYXlfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCVUNLRVRfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YnVja2V0X2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfVEFLRU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0ZXRha2VuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFU0NSSVBUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklTX1BSSVZBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNwcml2YXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBVElUVURFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xhdGl0dWRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPTkdJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsb25naXR1ZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOSV9USFVNQl9NQUdJQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttaW5pX3RodW1iX21hZ2ljJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O29yaWVudGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBJQ0FTQV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaWNhc2FfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkltYWdlcy5NZWRpYSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkltYWdlcy5JbWFnZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhU3RvcmUuSW1hZ2VzLk1lZGlhIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5JbWFnZXMuTWVkaWEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Qml0bWFwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnRJbWFnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1hZ2VQYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnRJbWFnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NyaXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlckJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9pbWFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YnVja2V0X2Rpc3BsYXlfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkltYWdlcy5UaHVtYm5haWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5JbWFnZXMuVGh1bWJuYWlscyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuSW1hZ2VzLlRodW1ibmFpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsVGh1bWJuYWlsUmVxdWVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxUaHVtYm5haWxSZXF1ZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ0lkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ0lkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJraW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeS5PcHRpb25zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRodW1ibmFpbCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5Lk9wdGlvbnMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5TWluaVRodW1ibmFpbCIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlNaW5pVGh1bWJuYWlscyIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJraW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ltYWdlX2lkIEFTQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlVMTF9TQ1JFRU5fS0lORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVJR0hUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2hlaWdodCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUFHRV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbWFnZV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtraW5kJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JQ1JPX0tJTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTklfS0lORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhVTUJfREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0aHVtYl9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRFRIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZHRoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFTdG9yZS5NZWRpYUNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJEQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfQURERUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0ZV9hZGRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFX01PRElGSUVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGVfbW9kaWZpZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19kaXNwbGF5X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlNRV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21pbWVfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSVpFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19zaXplJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5WaWRlbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhU3RvcmUuVmlkZW8iCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLlZpZGVvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfZGlzcGxheV9uYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLlZpZGVvLk1lZGlhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuVmlkZW8uVmlkZW9Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZWRpYVN0b3JlLlZpZGVvLk1lZGlhIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5WaWRlby5NZWRpYSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci92aWRlbyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGl0bGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5WaWRlby5UaHVtYm5haWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5WaWRlby5UaHVtYm5haWxzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5WaWRlby5UaHVtYm5haWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbFRodW1ibmFpbFJlcXVlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsVGh1bWJuYWlsUmVxdWVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGh1bWJuYWlsIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRpb25zIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ0lkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJraW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeS5PcHRpb25zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmlkZW9faWQgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMX1NDUkVFTl9LSU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUlHSFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aGVpZ2h0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2tpbmQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlDUk9fS0lORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOSV9LSU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWSURFT19JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2aWRlb19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSURUSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWR0aCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhU3RvcmUuVmlkZW8uVmlkZW9Db2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLk1lZGlhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQUxCVU0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWxidW0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVJUSVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT09LTUFSSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtib29rbWFyayZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCVUNLRVRfRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2J1Y2tldF9kaXNwbGF5X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlVDS0VUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2J1Y2tldF9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjYXRlZ29yeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFX1RBS0VOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGV0YWtlbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVNDUklQVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkZXNjcmlwdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEVVJBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkdXJhdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU19QUklWQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzcHJpdmF0ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQU5HVUFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsYW5ndWFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVRJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsYXRpdHVkZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT05HSVRVREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9uZ2l0dWRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTklfVEhVTUJfTUFHSUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bWluaV90aHVtYl9tYWdpYyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNPTFVUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Jlc29sdXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0YWdzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik9wZW5hYmxlQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19kaXNwbGF5X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0laRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfc2l6ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNlYXJjaFJlY2VudFN1Z2dlc3Rpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWFyY2hSZWNlbnRTdWdnZXN0aW9ucyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlNlYXJjaFJlY2VudFN1Z2dlc3Rpb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJIaXN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlUmVjZW50UXVlcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZTIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ1bmNhdGVIaXN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heEVudHJpZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlFVRVJJRVNfUFJPSkVDVElPTl8xTElORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVFUklFU19QUk9KRUNUSU9OXzJMSU5FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJRVUVSSUVTX1BST0pFQ1RJT05fREFURV9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVFUklFU19QUk9KRUNUSU9OX0RJU1BMQVkxX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJRVUVSSUVTX1BST0pFQ1RJT05fRElTUExBWTJfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlFVRVJJRVNfUFJPSkVDVElPTl9RVUVSWV9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNldHRpbmdzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNldHRpbmdzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQUNDRVNTSUJJTElUWV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkFDQ0VTU0lCSUxJVFlfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FERF9BQ0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuQUREX0FDQ09VTlRfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FJUlBMQU5FX01PREVfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5BSVJQTEFORV9NT0RFX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BUE5fU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5BUE5fU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUExJQ0FUSU9OX0RFVkVMT1BNRU5UX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuQVBQTElDQVRJT05fREVWRUxPUE1FTlRfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUExJQ0FUSU9OX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuQVBQTElDQVRJT05fU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0JMVUVUT09USF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkJMVUVUT09USF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREFUQV9ST0FNSU5HX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuREFUQV9ST0FNSU5HX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9EQVRFX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuREFURV9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREVWSUNFX0lORk9fU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5ERVZJQ0VfSU5GT19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRElTUExBWV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkRJU1BMQVlfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0lOUFVUX01FVEhPRF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLklOUFVUX01FVEhPRF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fSU5URVJOQUxfU1RPUkFHRV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLklOVEVSTkFMX1NUT1JBR0VfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0xPQ0FMRV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkxPQ0FMRV9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NQU5BR0VfQVBQTElDQVRJT05TX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuTUFOQUdFX0FQUExJQ0FUSU9OU19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUVNT1JZX0NBUkRfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5NRU1PUllfQ0FSRF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTkVUV09SS19PUEVSQVRPUl9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLk5FVFdPUktfT1BFUkFUT1JfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BSSVZBQ1lfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5QUklWQUNZX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9RVUlDS19MQVVOQ0hfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5RVUlDS19MQVVOQ0hfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NFQVJDSF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNlYXJjaC5hY3Rpb24uU0VBUkNIX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TRUNVUklUWV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLlNFQ1VSSVRZX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLlNFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TT1VORF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLlNPVU5EX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TWU5DX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuU1lOQ19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9XSUZJX0lQX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuV0lGSV9JUF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fV0lGSV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLldJRklfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1dJUkVMRVNTX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuV0lSRUxFU1NfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVUSE9SSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NldHRpbmdzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0FVVEhPUklUSUVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2F1dGhvcml0aWVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZXR0aW5ncy5OYW1lVmFsdWVUYWJsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNldHRpbmdzLk5hbWVWYWx1ZVRhYmxlIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuTmFtZVZhbHVlVGFibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VXJpRm9yIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFN0cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWQUxVRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2YWx1ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2V0dGluZ3MuU2VjdXJlIgorIGV4dGVuZHM9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuTmFtZVZhbHVlVGFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2V0dGluZ3MuU2VjdXJlIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuU2VjdXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZXR0aW5ncy5TZXR0aW5nTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcmlGb3IiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvY2F0aW9uUHJvdmlkZXJFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGbG9hdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dExvbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhdGlvblByb3ZpZGVyRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ0NFU1NJQklMSVRZX0VOQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWNjZXNzaWJpbGl0eV9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFEQl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FkYl9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMTE9XRURfR0VPTE9DQVRJT05fT1JJR0lOUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGxvd2VkX2dlb2xvY2F0aW9uX29yaWdpbnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxMT1dfTU9DS19MT0NBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttb2NrX2xvY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFORFJPSURfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZF9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCQUNLR1JPVU5EX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YmFja2dyb3VuZF9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtibHVldG9vdGhfb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFfUk9BTUlORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhX3JvYW1pbmcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9JTlBVVF9NRVRIT0QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGVmYXVsdF9pbnB1dF9tZXRob2QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVWSUNFX1BST1ZJU0lPTkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RldmljZV9wcm92aXNpb25lZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVEX0FDQ0VTU0lCSUxJVFlfU0VSVklDRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW5hYmxlZF9hY2Nlc3NpYmlsaXR5X3NlcnZpY2VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfSU5QVVRfTUVUSE9EUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbmFibGVkX2lucHV0X21ldGhvZHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9QUk9YWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwX3Byb3h5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOU1RBTExfTk9OX01BUktFVF9BUFBTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2luc3RhbGxfbm9uX21hcmtldF9hcHBzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0FUSU9OX1BST1ZJREVSU19BTExPV0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2F0aW9uX3Byb3ZpZGVyc19hbGxvd2VkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0tfUEFUVEVSTl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2tfcGF0dGVybl9hdXRvbG9jayZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0NLX1BBVFRFUk5fVEFDVElMRV9GRUVEQkFDS19FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2tfcGF0dGVybl90YWN0aWxlX2ZlZWRiYWNrX2VuYWJsZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DS19QQVRURVJOX1ZJU0lCTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9ja19wYXR0ZXJuX3Zpc2libGVfcGF0dGVybiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0dHSU5HX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvZ2dpbmdfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1BSRUZFUkVOQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV0d29ya19wcmVmZXJlbmNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBUkVOVEFMX0NPTlRST0xfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJlbnRhbF9jb250cm9sX2VuYWJsZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFSRU5UQUxfQ09OVFJPTF9MQVNUX1VQREFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJlbnRhbF9jb250cm9sX2xhc3RfdXBkYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBUkVOVEFMX0NPTlRST0xfUkVESVJFQ1RfVVJMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhcmVudGFsX2NvbnRyb2xfcmVkaXJlY3RfdXJsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVFRJTkdTX0NMQVNTTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXR0aW5nc19jbGFzc25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTX1BST1BfU0VUVElOR19WRVJTSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N5cy5zZXR0aW5nc19zZWN1cmVfdmVyc2lvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVFNfREVGQVVMVF9DT1VOVFJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R0c19kZWZhdWx0X2NvdW50cnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFRTX0RFRkFVTFRfTEFORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0dHNfZGVmYXVsdF9sYW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRUU19ERUZBVUxUX1BJVENIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R0c19kZWZhdWx0X3BpdGNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRUU19ERUZBVUxUX1JBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHRzX2RlZmF1bHRfcmF0ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVFNfREVGQVVMVF9TWU5USCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0dHNfZGVmYXVsdF9zeW50aCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVFNfREVGQVVMVF9WQVJJQU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R0c19kZWZhdWx0X3ZhcmlhbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFRTX0VOQUJMRURfUExVR0lOUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0dHNfZW5hYmxlZF9wbHVnaW5zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRUU19VU0VfREVGQVVMVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHRzX3VzZV9kZWZhdWx0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0JfTUFTU19TVE9SQUdFX0VOQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dXNiX21hc3Nfc3RvcmFnZV9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRV9HT09HTEVfTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1c2VfZ29vZ2xlX21haWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9NQVhfREhDUF9SRVRSWV9DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX21heF9kaGNwX3JldHJ5X2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfTU9CSUxFX0RBVEFfVFJBTlNJVElPTl9XQUtFTE9DS19USU1FT1VUX01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfbW9iaWxlX2RhdGFfdHJhbnNpdGlvbl93YWtlbG9ja190aW1lb3V0X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfTkVUV09SS1NfQVZBSUxBQkxFX05PVElGSUNBVElPTl9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX25ldHdvcmtzX2F2YWlsYWJsZV9ub3RpZmljYXRpb25fb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9ORVRXT1JLU19BVkFJTEFCTEVfUkVQRUFUX0RFTEFZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfbmV0d29ya3NfYXZhaWxhYmxlX3JlcGVhdF9kZWxheSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX05VTV9PUEVOX05FVFdPUktTX0tFUFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9udW1fb3Blbl9uZXR3b3Jrc19rZXB0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9vbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0FDQ0VQVEFCTEVfUEFDS0VUX0xPU1NfUEVSQ0VOVEFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2FjY2VwdGFibGVfcGFja2V0X2xvc3NfcGVyY2VudGFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0FQX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfYXBfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19CQUNLR1JPVU5EX0NIRUNLX0RFTEFZX01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfYmFja2dyb3VuZF9jaGVja19kZWxheV9tcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0JBQ0tHUk9VTkRfQ0hFQ0tfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2JhY2tncm91bmRfY2hlY2tfZW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0JBQ0tHUk9VTkRfQ0hFQ0tfVElNRU9VVF9NUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2JhY2tncm91bmRfY2hlY2tfdGltZW91dF9tcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0lOSVRJQUxfSUdOT1JFRF9QSU5HX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfaW5pdGlhbF9pZ25vcmVkX3BpbmdfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19NQVhfQVBfQ0hFQ0tTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfbWF4X2FwX2NoZWNrcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX09OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19QSU5HX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfcGluZ19jb3VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX1BJTkdfREVMQVlfTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19waW5nX2RlbGF5X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfUElOR19USU1FT1VUX01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfcGluZ190aW1lb3V0X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfV0FUQ0hfTElTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX3dhdGNoX2xpc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLnV0aWwuQW5kcm9pZEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2V0dGluZ3MuU3lzdGVtIgorIGV4dGVuZHM9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuTmFtZVZhbHVlVGFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2V0dGluZ3MuU3lzdGVtIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuU3lzdGVtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvbmZpZ3VyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRDb25maWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5TZXR0aW5ncy5TZXR0aW5nTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5TZXR0aW5ncy5TZXR0aW5nTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG93R1RhbGtTZXJ2aWNlU3RhdHVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJpRm9yIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Q29uZmlndXJhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEZsb2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEludCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFN0cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3dHVGFsa1NlcnZpY2VTdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNDRUxFUk9NRVRFUl9ST1RBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NlbGVyb21ldGVyX3JvdGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFEQl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FkYl9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUlSUExBTkVfTU9ERV9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthaXJwbGFuZV9tb2RlX29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFJUlBMQU5FX01PREVfUkFESU9TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FpcnBsYW5lX21vZGVfcmFkaW9zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMQVJNX0FMRVJUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FsYXJtX2FsZXJ0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMV0FZU19GSU5JU0hfQUNUSVZJVElFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbHdheXNfZmluaXNoX2FjdGl2aXRpZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU5EUk9JRF9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkX2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVBQRU5EX0ZPUl9MQVNUX0FVRElCTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X2xhc3RfYXVkaWJsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVVRPX1RJTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0b190aW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9ESVNDT1ZFUkFCSUxJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Ymx1ZXRvb3RoX2Rpc2NvdmVyYWJpbGl0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCTFVFVE9PVEhfRElTQ09WRVJBQklMSVRZX1RJTUVPVVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Ymx1ZXRvb3RoX2Rpc2NvdmVyYWJpbGl0eV90aW1lb3V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtibHVldG9vdGhfb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9ST0FNSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFfcm9hbWluZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfRk9STUFUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGVfZm9ybWF0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQlVHX0FQUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkZWJ1Z19hcHAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9BTEFSTV9BTEVSVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfTk9USUZJQ0FUSU9OX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9SSU5HVE9ORV9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVklDRV9QUk9WSVNJT05FRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkZXZpY2VfcHJvdmlzaW9uZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESU1fU0NSRUVOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RpbV9zY3JlZW4mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFRNRl9UT05FX1dIRU5fRElBTElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkdG1mX3RvbmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5EX0JVVFRPTl9CRUhBVklPUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbmRfYnV0dG9uX2JlaGF2aW9yJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPTlRfU0NBTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Zm9udF9zY2FsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVBUSUNfRkVFREJBQ0tfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtoYXB0aWNfZmVlZGJhY2tfZW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1BST1hZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHBfcHJveHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlNUQUxMX05PTl9NQVJLRVRfQVBQUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbnN0YWxsX25vbl9tYXJrZXRfYXBwcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0FUSU9OX1BST1ZJREVSU19BTExPV0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2F0aW9uX3Byb3ZpZGVyc19hbGxvd2VkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DS19QQVRURVJOX0VOQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9ja19wYXR0ZXJuX2F1dG9sb2NrJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DS19QQVRURVJOX1RBQ1RJTEVfRkVFREJBQ0tfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsb2NrX3BhdHRlcm5fdGFjdGlsZV9mZWVkYmFja19lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DS19QQVRURVJOX1ZJU0lCTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9ja19wYXR0ZXJuX3Zpc2libGVfcGF0dGVybiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPR0dJTkdfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9nZ2luZ19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUklOR0VSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21vZGVfcmluZ2VyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUklOR0VSX1NUUkVBTVNfQUZGRUNURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bW9kZV9yaW5nZXJfc3RyZWFtc19hZmZlY3RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNVVRFX1NUUkVBTVNfQUZGRUNURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bXV0ZV9zdHJlYW1zX2FmZmVjdGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfUFJFRkVSRU5DRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZXR3b3JrX3ByZWZlcmVuY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVhUX0FMQVJNX0ZPUk1BVFRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZXh0X2FsYXJtX2Zvcm1hdHRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RJRklDQVRJT05fU09VTkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90aWZpY2F0aW9uX3NvdW5kJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBUkVOVEFMX0NPTlRST0xfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJlbnRhbF9jb250cm9sX2VuYWJsZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVJFTlRBTF9DT05UUk9MX0xBU1RfVVBEQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhcmVudGFsX2NvbnRyb2xfbGFzdF91cGRhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVJFTlRBTF9DT05UUk9MX1JFRElSRUNUX1VSTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJlbnRhbF9jb250cm9sX3JlZGlyZWN0X3VybCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBRElPX0JMVUVUT09USCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtibHVldG9vdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkFESU9fQ0VMTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjZWxsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBRElPX1dJRkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSU5HVE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtyaW5ndG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fQlJJR0hUTkVTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzY3JlZW5fYnJpZ2h0bmVzcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fQlJJR0hUTkVTU19NT0RFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NjcmVlbl9icmlnaHRuZXNzX21vZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX0JSSUdIVE5FU1NfTU9ERV9BVVRPTUFUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9CUklHSFRORVNTX01PREVfTUFOVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fT0ZGX1RJTUVPVVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2NyZWVuX29mZl90aW1lb3V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVFRJTkdTX0NMQVNTTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXR0aW5nc19jbGFzc25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVRVUF9XSVpBUkRfSEFTX1JVTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXR1cF93aXphcmRfaGFzX3J1biZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSE9XX0dUQUxLX1NFUlZJQ0VfU1RBVFVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1NIT1dfR1RBTEtfU0VSVklDRV9TVEFUVVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19QUk9DRVNTRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2hvd19wcm9jZXNzZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19XRUJfU1VHR0VTVElPTlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2hvd193ZWJfc3VnZ2VzdGlvbnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09VTkRfRUZGRUNUU19FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NvdW5kX2VmZmVjdHNfZW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFZX09OX1dISUxFX1BMVUdHRURfSU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RheV9vbl93aGlsZV9wbHVnZ2VkX2luJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZU19QUk9QX1NFVFRJTkdfVkVSU0lPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeXMuc2V0dGluZ3Nfc3lzdGVtX3ZlcnNpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVYVF9BVVRPX0NBUFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0b19jYXBzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFWFRfQVVUT19QVU5DVFVBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0b19wdW5jdHVhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVYVF9BVVRPX1JFUExBQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0b19yZXBsYWNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFWFRfU0hPV19QQVNTV09SRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzaG93X3Bhc3N3b3JkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVfMTJfMjQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGltZV8xMl8yNCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0lUSU9OX0FOSU1BVElPTl9TQ0FMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0cmFuc2l0aW9uX2FuaW1hdGlvbl9zY2FsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0JfTUFTU19TVE9SQUdFX0VOQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dXNiX21hc3Nfc3RvcmFnZV9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVNFX0dPT0dMRV9NQUlMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VzZV9nb29nbGVfbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEVfT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmlicmF0ZV9vbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWT0xVTUVfQUxBUk0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm9sdW1lX2FsYXJtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9CTFVFVE9PVEhfU0NPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZvbHVtZV9ibHVldG9vdGhfc2NvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9NVVNJQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWVfbXVzaWMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVk9MVU1FX05PVElGSUNBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWVfbm90aWZpY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9SSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZvbHVtZV9yaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVk9MVU1FX1NZU1RFTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWVfc3lzdGVtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9WT0lDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWVfdm9pY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FJVF9GT1JfREVCVUdHRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2FpdF9mb3JfZGVidWdnZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FMTFBBUEVSX0FDVElWSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dhbGxwYXBlcl9hY3Rpdml0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX01BWF9ESENQX1JFVFJZX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfbWF4X2RoY3BfcmV0cnlfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX01PQklMRV9EQVRBX1RSQU5TSVRJT05fV0FLRUxPQ0tfVElNRU9VVF9NUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX21vYmlsZV9kYXRhX3RyYW5zaXRpb25fd2FrZWxvY2tfdGltZW91dF9tcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfTkVUV09SS1NfQVZBSUxBQkxFX05PVElGSUNBVElPTl9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX25ldHdvcmtzX2F2YWlsYWJsZV9ub3RpZmljYXRpb25fb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX05FVFdPUktTX0FWQUlMQUJMRV9SRVBFQVRfREVMQVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9uZXR3b3Jrc19hdmFpbGFibGVfcmVwZWF0X2RlbGF5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9OVU1fT1BFTl9ORVRXT1JLU19LRVBUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfbnVtX29wZW5fbmV0d29ya3Nfa2VwdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9vbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU0xFRVBfUE9MSUNZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfc2xlZXBfcG9saWN5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU0xFRVBfUE9MSUNZX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU0xFRVBfUE9MSUNZX05FVkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NMRUVQX1BPTElDWV9ORVZFUl9XSElMRV9QTFVHR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRJQ19ETlMxIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfc3RhdGljX2RuczEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9TVEFUSUNfRE5TMiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3N0YXRpY19kbnMyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVElDX0dBVEVXQVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9zdGF0aWNfZ2F0ZXdheSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRJQ19JUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3N0YXRpY19pcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRJQ19ORVRNQVNLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfc3RhdGljX25ldG1hc2smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9VU0VfU1RBVElDX0lQIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfdXNlX3N0YXRpY19pcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0FDQ0VQVEFCTEVfUEFDS0VUX0xPU1NfUEVSQ0VOVEFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2FjY2VwdGFibGVfcGFja2V0X2xvc3NfcGVyY2VudGFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfQVBfQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19hcF9jb3VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfQkFDS0dST1VORF9DSEVDS19ERUxBWV9NUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2JhY2tncm91bmRfY2hlY2tfZGVsYXlfbXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0JBQ0tHUk9VTkRfQ0hFQ0tfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2JhY2tncm91bmRfY2hlY2tfZW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfQkFDS0dST1VORF9DSEVDS19USU1FT1VUX01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfYmFja2dyb3VuZF9jaGVja190aW1lb3V0X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19JTklUSUFMX0lHTk9SRURfUElOR19DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2luaXRpYWxfaWdub3JlZF9waW5nX2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19NQVhfQVBfQ0hFQ0tTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfbWF4X2FwX2NoZWNrcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19vbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfUElOR19DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX3BpbmdfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX1BJTkdfREVMQVlfTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19waW5nX2RlbGF5X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19QSU5HX1RJTUVPVVRfTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19waW5nX3RpbWVvdXRfbXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSU5ET1dfQU5JTUFUSU9OX1NDQUxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpbmRvd19hbmltYXRpb25fc2NhbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN5bmNTdGF0ZUNvbnRyYWN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTeW5jU3RhdGVDb250cmFjdCIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlN5bmNTdGF0ZUNvbnRyYWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTeW5jU3RhdGVDb250cmFjdC5Db2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQUNDT1VOVF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnRfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NPVU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWNjb3VudF90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlN5bmNTdGF0ZUNvbnRyYWN0LkNvbnN0YW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuU3luY1N0YXRlQ29udHJhY3QuQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY1N0YXRlQ29udHJhY3QuQ29uc3RhbnRzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU3luY1N0YXRlQ29udHJhY3QuQ29uc3RhbnRzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3luY3N0YXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTeW5jU3RhdGVDb250cmFjdC5IZWxwZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY1N0YXRlQ29udHJhY3QuSGVscGVycyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlN5bmNTdGF0ZUNvbnRyYWN0LkhlbHBlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyQ2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpdGhVcmkiCisgcmV0dXJuPSJhbmRyb2lkLnV0aWwuUGFpciZsdDthbmRyb2lkLm5ldC5VcmksIGJ5dGVbXSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyQ2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3U2V0T3BlcmF0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VXBkYXRlT3BlcmF0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyQ2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVzZXJEaWN0aW9uYXJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVc2VyRGljdGlvbmFyeSIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlVzZXJEaWN0aW9uYXJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQVVUSE9SSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VzZXJfZGljdGlvbmFyeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVzZXJEaWN0aW9uYXJ5LldvcmRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXNlckRpY3Rpb25hcnkuV29yZHMiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Vc2VyRGljdGlvbmFyeS5Xb3JkcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRXb3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJlcXVlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFQUF9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthcHBpZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS92bmQuZ29vZ2xlLnVzZXJ3b3JkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyL3ZuZC5nb29nbGUudXNlcndvcmQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtmcmVxdWVuY3kgREVTQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGUkVRVUVOQ1kiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZnJlcXVlbmN5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0FMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsb2NhbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DQUxFX1RZUEVfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0NBTEVfVFlQRV9DVVJSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXT1JEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dvcmQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnNheCIKKz4KKzxjbGFzcyBuYW1lPSJFbGVtZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLnNheC5FbGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLnNheC5FbGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1aXJlQ2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLnNheC5FbGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWlyZUNoaWxkIgorIHJldHVybj0iYW5kcm9pZC5zYXguRWxlbWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RWxlbWVudExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnNheC5FbGVtZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5kRWxlbWVudExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kRWxlbWVudExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnNheC5FbmRFbGVtZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5kVGV4dEVsZW1lbnRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZFRleHRFbGVtZW50TGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuc2F4LkVuZFRleHRFbGVtZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhcnRFbGVtZW50TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydEVsZW1lbnRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5zYXguU3RhcnRFbGVtZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dEVsZW1lbnRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsZW1lbnRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5zYXguVGV4dEVsZW1lbnRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRWxlbWVudExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuc2F4LkVuZEVsZW1lbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnNheC5TdGFydEVsZW1lbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRW5kRWxlbWVudExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRW5kVGV4dEVsZW1lbnRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm9keSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUm9vdEVsZW1lbnQiCisgZXh0ZW5kcz0iYW5kcm9pZC5zYXguRWxlbWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvb3RFbGVtZW50IgorIHR5cGU9ImFuZHJvaWQuc2F4LlJvb3RFbGVtZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvb3RFbGVtZW50IgorIHR5cGU9ImFuZHJvaWQuc2F4LlJvb3RFbGVtZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudEhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3RhcnRFbGVtZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRleHRFbGVtZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5zYXguRW5kVGV4dEVsZW1lbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnNheC5TdGFydEVsZW1lbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuc2VydmljZS53YWxscGFwZXIiCis+Cis8Y2xhc3MgbmFtZT0iV2FsbHBhcGVyU2VydmljZSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5TZXJ2aWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXYWxscGFwZXJTZXJ2aWNlIgorIHR5cGU9ImFuZHJvaWQuc2VydmljZS53YWxscGFwZXIuV2FsbHBhcGVyU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkJpbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlRW5naW5lIgorIHJldHVybj0iYW5kcm9pZC5zZXJ2aWNlLndhbGxwYXBlci5XYWxscGFwZXJTZXJ2aWNlLkVuZ2luZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0VSVklDRV9JTlRFUkZBQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXJ2aWNlLndhbGxwYXBlci5XYWxscGFwZXJTZXJ2aWNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFUlZJQ0VfTUVUQV9EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2VydmljZS53YWxscGFwZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldhbGxwYXBlclNlcnZpY2UuRW5naW5lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXYWxscGFwZXJTZXJ2aWNlLkVuZ2luZSIKKyB0eXBlPSJhbmRyb2lkLnNlcnZpY2Uud2FsbHBhcGVyLldhbGxwYXBlclNlcnZpY2UuRW5naW5lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRNaW5pbXVtSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRNaW5pbXVtV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VyZmFjZUhvbGRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUHJldmlldyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbW1hbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZXF1ZXN0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdXJmYWNlSG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlc2lyZWRTaXplQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2lyZWRXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXNpcmVkSGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk9mZnNldHNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieE9mZnNldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlPZmZzZXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4T2Zmc2V0U3RlcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlPZmZzZXRTdGVwIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieFBpeGVsT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlQaXhlbE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3VyZmFjZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXJmYWNlQ3JlYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvbGRlciIgdHlwZT0iYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXJmYWNlRGVzdHJveWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRvdWNoRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvdWNoRXZlbnRzRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnNwZWVjaCIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVjb2duaXRpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQmVnaW5uaW5nT2ZTcGVlY2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CdWZmZXJSZWNlaXZlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FbmRPZlNwZWVjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFydGlhbFJlc3VsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnRpYWxSZXN1bHRzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlYWR5Rm9yU3BlZWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVzdWx0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0cyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SbXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJybXNkQiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJlY29nbml0aW9uU2VydmljZSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5TZXJ2aWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWNvZ25pdGlvblNlcnZpY2UiCisgdHlwZT0iYW5kcm9pZC5zcGVlY2guUmVjb2duaXRpb25TZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQmluZCIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnNwZWVjaC5SZWNvZ25pdGlvblNlcnZpY2UuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdGFydExpc3RlbmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb2duaXplckludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuc3BlZWNoLlJlY29nbml0aW9uU2VydmljZS5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0b3BMaXN0ZW5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnNwZWVjaC5SZWNvZ25pdGlvblNlcnZpY2UuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJTRVJWSUNFX0lOVEVSRkFDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5SZWNvZ25pdGlvblNlcnZpY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VSVklDRV9NRVRBX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlY29nbml0aW9uU2VydmljZS5DYWxsYmFjayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJlZ2lubmluZ09mU3BlZWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJidWZmZXJSZWNlaXZlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZE9mU3BlZWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFydGlhbFJlc3VsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0aWFsUmVzdWx0cyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZHlGb3JTcGVlY2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3VsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJybXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm1zZEIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlY29nbml6ZXJJbnRlbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRWb2ljZURldGFpbHNJbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fR0VUX0xBTkdVQUdFX0RFVEFJTFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2guYWN0aW9uLkdFVF9MQU5HVUFHRV9ERVRBSUxTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9SRUNPR05JWkVfU1BFRUNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmFjdGlvbi5SRUNPR05JWkVfU1BFRUNIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9XRUJfU0VBUkNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmFjdGlvbi5XRUJfU0VBUkNIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVEFJTFNfTUVUQV9EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLkRFVEFJTFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ0FMTElOR19QQUNLQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NhbGxpbmdfcGFja2FnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MQU5HVUFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5MQU5HVUFHRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MQU5HVUFHRV9NT0RFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5MQU5HVUFHRV9NT0RFTCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MQU5HVUFHRV9QUkVGRVJFTkNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLkxBTkdVQUdFX1BSRUZFUkVOQ0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfTUFYX1JFU1VMVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2guZXh0cmEuTUFYX1JFU1VMVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfT05MWV9SRVRVUk5fTEFOR1VBR0VfUFJFRkVSRU5DRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5PTkxZX1JFVFVSTl9MQU5HVUFHRV9QUkVGRVJFTkNFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1BBUlRJQUxfUkVTVUxUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5QQVJUSUFMX1JFU1VMVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUFJPTVBUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLlBST01QVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SRVNVTFRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLlJFU1VMVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUkVTVUxUU19QRU5ESU5HSU5URU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLlJFU1VMVFNfUEVORElOR0lOVEVOVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SRVNVTFRTX1BFTkRJTkdJTlRFTlRfQlVORExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLlJFU1VMVFNfUEVORElOR0lOVEVOVF9CVU5ETEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1BFRUNIX0lOUFVUX0NPTVBMRVRFX1NJTEVOQ0VfTEVOR1RIX01JTExJUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYXMuU1BFRUNIX0lOUFVUX0NPTVBMRVRFX1NJTEVOQ0VfTEVOR1RIX01JTExJUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TUEVFQ0hfSU5QVVRfTUlOSU1VTV9MRU5HVEhfTUlMTElTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhcy5TUEVFQ0hfSU5QVVRfTUlOSU1VTV9MRU5HVEhfTUlMTElTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NQRUVDSF9JTlBVVF9QT1NTSUJMWV9DT01QTEVURV9TSUxFTkNFX0xFTkdUSF9NSUxMSVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2guZXh0cmFzLlNQRUVDSF9JTlBVVF9QT1NTSUJMWV9DT01QTEVURV9TSUxFTkNFX0xFTkdUSF9NSUxMSVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1VQUE9SVEVEX0xBTkdVQUdFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5TVVBQT1JURURfTEFOR1VBR0VTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdVQUdFX01PREVMX0ZSRUVfRk9STSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtmcmVlX2Zvcm0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFOR1VBR0VfTU9ERUxfV0VCX1NFQVJDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3ZWJfc2VhcmNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVF9BVURJT19FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX0NMSUVOVF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX05FVFdPUktfRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVF9OT19NQVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX1NFUlZFUl9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNwZWVjaFJlY29nbml6ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNwZWVjaFJlY29nbml6ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnNwZWVjaC5TcGVlY2hSZWNvZ25pemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNwZWVjaFJlY29nbml6ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnNwZWVjaC5TcGVlY2hSZWNvZ25pemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlQ29tcG9uZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlY29nbml0aW9uQXZhaWxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWNvZ25pdGlvbkxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuc3BlZWNoLlJlY29nbml0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRMaXN0ZW5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNvZ25pemVySW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BMaXN0ZW5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRVJST1JfQVVESU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0NMSUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9ORVRXT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9ORVRXT1JLX1RJTUVPVVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX05PX01BVENIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9SRUNPR05JWkVSX0JVU1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX1NFUlZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfU1BFRUNIX1RJTUVPVVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVFNfUkVDT0dOSVRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cmVzdWx0c19yZWNvZ25pdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnNwZWVjaC50dHMiCis+Cis8Y2xhc3MgbmFtZT0iVGV4dFRvU3BlZWNoIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0VG9TcGVlY2giCisgdHlwZT0iYW5kcm9pZC5zcGVlY2gudHRzLlRleHRUb1NwZWVjaCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5zcGVlY2gudHRzLlRleHRUb1NwZWVjaC5PbkluaXRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEVhcmNvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWFyY29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEVhcmNvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWFyY29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRTcGVlY2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3BlZWNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcmVEZWZhdWx0c0VuZm9yY2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0RW5naW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYW5ndWFnZSIKKyByZXR1cm49ImphdmEudXRpbC5Mb2NhbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYW5ndWFnZUF2YWlsYWJsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3BlYWtpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsYXlFYXJjb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVhcmNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWVNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS51dGlsLkhhc2hNYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGxheVNpbGVuY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uSW5NcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWVNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS51dGlsLkhhc2hNYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5naW5lQnlQYWNrYWdlTmFtZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5naW5lUGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGFuZ3VhZ2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYyIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPblV0dGVyYW5jZUNvbXBsZXRlZExpc3RlbmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5zcGVlY2gudHRzLlRleHRUb1NwZWVjaC5PblV0dGVyYW5jZUNvbXBsZXRlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBpdGNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaXRjaCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3BlZWNoUmF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlZWNoUmF0ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNwZWFrIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWV1ZU1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnV0aWwuSGFzaE1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bnRoZXNpemVUb0ZpbGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS51dGlsLkhhc2hNYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1RUU19RVUVVRV9QUk9DRVNTSU5HX0NPTVBMRVRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC50dHMuVFRTX1FVRVVFX1BST0NFU1NJTkdfQ09NUExFVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFOR19BVkFJTEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdfQ09VTlRSWV9BVkFJTEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdfQ09VTlRSWV9WQVJfQVZBSUxBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQU5HX01JU1NJTkdfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdfTk9UX1NVUFBPUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlFVRVVFX0FERCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVFVUVfRkxVU0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVQ0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXh0VG9TcGVlY2guRW5naW5lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0VG9TcGVlY2guRW5naW5lIgorIHR5cGU9ImFuZHJvaWQuc3BlZWNoLnR0cy5UZXh0VG9TcGVlY2guRW5naW5lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NIRUNLX1RUU19EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLnR0cy5lbmdpbmUuQ0hFQ0tfVFRTX0RBVEEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0lOU1RBTExfVFRTX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2gudHRzLmVuZ2luZS5JTlNUQUxMX1RUU19EQVRBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9UVFNfREFUQV9JTlNUQUxMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2gudHRzLmVuZ2luZS5UVFNfREFUQV9JTlNUQUxMRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hFQ0tfVk9JQ0VfREFUQV9CQURfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIRUNLX1ZPSUNFX0RBVEFfRkFJTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hFQ0tfVk9JQ0VfREFUQV9NSVNTSU5HX0RBVEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEVDS19WT0lDRV9EQVRBX01JU1NJTkdfVk9MVU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hFQ0tfVk9JQ0VfREFUQV9QQVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NUUkVBTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQVZBSUxBQkxFX1ZPSUNFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdmFpbGFibGVWb2ljZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ0hFQ0tfVk9JQ0VfREFUQV9GT1IiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2hlY2tWb2ljZURhdGFGb3ImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVFRTX0RBVEFfSU5TVEFMTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFJbnN0YWxsZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVU5BVkFJTEFCTEVfVk9JQ0VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VuYXZhaWxhYmxlVm9pY2VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1ZPSUNFX0RBVEFfRklMRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YUZpbGVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1ZPSUNFX0RBVEFfRklMRVNfSU5GTyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhRmlsZXNJbmZvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1ZPSUNFX0RBVEFfUk9PVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YVJvb3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX1BBUkFNX1NUUkVBTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdHJlYW1UeXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9QQVJBTV9VVFRFUkFOQ0VfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dXR0ZXJhbmNlSWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUZXh0VG9TcGVlY2guT25Jbml0TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJUZXh0VG9TcGVlY2guT25VdHRlcmFuY2VDb21wbGV0ZWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25VdHRlcmFuY2VDb21wbGV0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InV0dGVyYW5jZUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGVsZXBob255IgorPgorPGNsYXNzIG5hbWU9IkNlbGxMb2NhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZWxsTG9jYXRpb24iCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuQ2VsbExvY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVtcHR5IgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuQ2VsbExvY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5laWdoYm9yaW5nQ2VsbEluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOZWlnaGJvcmluZ0NlbGxJbmZvIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255Lk5laWdoYm9yaW5nQ2VsbEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5laWdoYm9yaW5nQ2VsbEluZm8iCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuTmVpZ2hib3JpbmdDZWxsSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnNzaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmVpZ2hib3JpbmdDZWxsSW5mbyIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5OZWlnaGJvcmluZ0NlbGxJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnNzaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaW9UeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5laWdoYm9yaW5nQ2VsbEluZm8iCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuTmVpZ2hib3JpbmdDZWxsSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2lkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhYyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXR3b3JrVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQc2MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnNzaSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJzc2kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJzc2kiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOS05PV05fQ0lEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5LTk9XTl9SU1NJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBob25lTnVtYmVyRm9ybWF0dGluZ1RleHRXYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5UZXh0V2F0Y2hlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGhvbmVOdW1iZXJGb3JtYXR0aW5nVGV4dFdhdGNoZXIiCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVOdW1iZXJGb3JtYXR0aW5nVGV4dFdhdGNoZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWZ0ZXJUZXh0Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZVRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZ0ZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVmb3JlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGhvbmVOdW1iZXJVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGhvbmVOdW1iZXJVdGlscyIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5QaG9uZU51bWJlclV0aWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhbGxlZFBhcnR5QkNERnJhZ21lbnRUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbGxlZFBhcnR5QkNEVG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ5dGVzIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRLZXlwYWRMZXR0ZXJzVG9EaWdpdHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dHJhY3ROZXR3b3JrUG9ydGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGhvbmVOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0cmFjdFBvc3REaWFsUG9ydGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGhvbmVOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0SmFwYW5lc2VOdW1iZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXROYW5wTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0TnVtYmVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0TnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRGb3JtYXR0aW5nVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdFR5cGVGb3JMb2NhbGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWJlckZyb21JbnRlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaXBwZWRSZXZlcnNlZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGhvbmVOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXMxMktleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlhbGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtZXJnZW5jeU51bWJlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtYmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzR2xvYmFsUGhvbmVOdW1iZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBob25lTnVtYmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSVNPRGlnaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOb25TZXBhcmF0b3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWxseURpYWxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFydHNQb3N0RGlhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV2VsbEZvcm1lZFNtc0FkZHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV0d29ya1BvcnRpb25Ub0NhbGxlZFBhcnR5QkNEIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV0d29ya1BvcnRpb25Ub0NhbGxlZFBhcnR5QkNEV2l0aExlbmd0aCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im51bWJlclRvQ2FsbGVkUGFydHlCQ0QiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtYmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmluZ0Zyb21TdHJpbmdBbmRUT0EiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IlRPQSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmlwU2VwYXJhdG9ycyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGhvbmVOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9DYWxsZXJJRE1pbk1hdGNoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaG9uZU51bWJlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2FGcm9tU3RyaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfSkFQQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9OQU5QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfVU5LTk9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFVU0UiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9BX0ludGVybmF0aW9uYWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9BX1Vua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FJVCIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUxEIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQaG9uZVN0YXRlTGlzdGVuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBob25lU3RhdGVMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5QaG9uZVN0YXRlTGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25DYWxsRm9yd2FyZGluZ0luZGljYXRvckNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZmkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DYWxsU3RhdGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jb21pbmdOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DZWxsTG9jYXRpb25DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImFuZHJvaWQudGVsZXBob255LkNlbGxMb2NhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRhdGFBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRGF0YUNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRGF0YUNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXR3b3JrVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWVzc2FnZVdhaXRpbmdJbmRpY2F0b3JDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXdpIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VydmljZVN0YXRlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZpY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2lnbmFsU3RyZW5ndGhDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhc3UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNpZ25hbFN0cmVuZ3Roc0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWduYWxTdHJlbmd0aCIgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuU2lnbmFsU3RyZW5ndGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMSVNURU5fQ0FMTF9GT1JXQVJESU5HX0lORElDQVRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElTVEVOX0NBTExfU1RBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNURU5fQ0VMTF9MT0NBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RFTl9EQVRBX0FDVElWSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RFTl9EQVRBX0NPTk5FQ1RJT05fU1RBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNURU5fTUVTU0FHRV9XQUlUSU5HX0lORElDQVRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElTVEVOX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RFTl9TRVJWSUNFX1NUQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNURU5fU0lHTkFMX1NUUkVOR1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RFTl9TSUdOQUxfU1RSRU5HVEhTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZXJ2aWNlU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2aWNlU3RhdGUiCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmljZVN0YXRlIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmljZVN0YXRlIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvcHlGcm9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNNYW51YWxTZWxlY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wZXJhdG9yQWxwaGFMb25nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGVyYXRvckFscGhhU2hvcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wZXJhdG9yTnVtZXJpYyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um9hbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXNNYW51YWxTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc01hbnVhbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcGVyYXRvck5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb25nTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvcnROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1lcmljIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvYW1pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb2FtaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZU9mZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGVPdXRPZlNlcnZpY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9FTUVSR0VOQ1lfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfSU5fU0VSVklDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfT1VUX09GX1NFUlZJQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRFX1BPV0VSX09GRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpZ25hbFN0cmVuZ3RoIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2RtYURibSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZG1hRWNpbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmRvRGJtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZG9FY2lvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZG9TbnIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3NtQml0RXJyb3JSYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdzbVNpZ25hbFN0cmVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzR3NtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbXNNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkaXZpZGVNZXNzYWdlIgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0IgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuU21zTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmREYXRhTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvblBvcnQiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnRJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGl2ZXJ5SW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRNdWx0aXBhcnRUZXh0TWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VudEludGVudHMiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGl2ZXJ5SW50ZW50cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kVGV4dE1lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvbkFkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VudEludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaXZlcnlJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfR0VORVJJQ19GQUlMVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfTk9fU0VSVklDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX0VSUk9SX05VTExfUERVIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfUkFESU9fT0ZGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fSUNDX0ZSRUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRVU19PTl9JQ0NfUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVFVTX09OX0lDQ19TRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fSUNDX1VOUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVFVTX09OX0lDQ19VTlNFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbXNNZXNzYWdlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FsY3VsYXRlTGVuZ3RoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnQm9keSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlN2JpdE9ubHkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsY3VsYXRlTGVuZ3RoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZUJvZHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZTdiaXRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyb21QZHUiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5TbXNNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBkdSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlNZXNzYWdlQm9keSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU9yaWdpbmF0aW5nQWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW1haWxCb2R5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbWFpbEZyb20iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4T25JY2MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXhPblNpbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1lc3NhZ2VCb2R5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXNzYWdlQ2xhc3MiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5TbXNNZXNzYWdlLk1lc3NhZ2VDbGFzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hdGluZ0FkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBkdSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbElkZW50aWZpZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHNldWRvU3ViamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VydmljZUNlbnRlckFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXR1cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0dXNPbkljYyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0dXNPblNpbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Ym1pdFBkdSIKKyByZXR1cm49ImFuZHJvaWQudGVsZXBob255LlNtc01lc3NhZ2UuU3VibWl0UGR1IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdGluYXRpb25BZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXNSZXBvcnRSZXF1ZXN0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VibWl0UGR1IgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvbkFkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uUG9ydCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzUmVwb3J0UmVxdWVzdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRQTGF5ZXJMZW5ndGhGb3JQRFUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGR1IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcE1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlckRhdGEiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDcGhzTXdpTWVzc2FnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbWFpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNV0lDbGVhck1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTVdJU2V0TWVzc2FnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNd2lEb250U3RvcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVwbGFjZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBseVBhdGhQcmVzZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YXR1c1JlcG9ydE1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRU5DT0RJTkdfMTZCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HXzdCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HXzhCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9VU0VSX0RBVEFfQllURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1VTRVJfREFUQV9CWVRFU19XSVRIX0hFQURFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfVVNFUl9EQVRBX1NFUFRFVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1VTRVJfREFUQV9TRVBURVRTX1dJVEhfSEVBREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbXNNZXNzYWdlLk1lc3NhZ2VDbGFzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQudGVsZXBob255LlNtc01lc3NhZ2UuTWVzc2FnZUNsYXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuU21zTWVzc2FnZS5NZXNzYWdlQ2xhc3NbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iZW5jb2RlZE1lc3NhZ2UiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW5jb2RlZFNjQWRkcmVzcyIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGVsZXBob255TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZWxsTG9jYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5DZWxsTG9jYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YUFjdGl2aXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXZpY2VJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV2aWNlU29mdHdhcmVWZXJzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lMU51bWJlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmVpZ2hib3JpbmdDZWxsSW5mbyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQudGVsZXBob255Lk5laWdoYm9yaW5nQ2VsbEluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5ldHdvcmtDb3VudHJ5SXNvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXR3b3JrT3BlcmF0b3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5ldHdvcmtPcGVyYXRvck5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5ldHdvcmtUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBob25lVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaW1Db3VudHJ5SXNvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaW1PcGVyYXRvciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2ltT3BlcmF0b3JOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaW1TZXJpYWxOdW1iZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpbVN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YnNjcmliZXJJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9pY2VNYWlsQWxwaGFUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZvaWNlTWFpbE51bWJlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzSWNjQ2FyZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOZXR3b3JrUm9hbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudGVsZXBob255LlBob25lU3RhdGVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEhPTkVfU1RBVEVfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEhPTkVfU1RBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FMTF9TVEFURV9JRExFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQUxMX1NUQVRFX09GRkhPT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTExfU1RBVEVfUklOR0lORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9BQ1RJVklUWV9ET1JNQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0FDVElWSVRZX0lOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0FDVElWSVRZX0lOT1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0FDVElWSVRZX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFfQUNUSVZJVFlfT1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0NPTk5FQ1RFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9DT05ORUNUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0RJU0NPTk5FQ1RFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9TVVNQRU5ERUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0lOQ09NSU5HX05VTUJFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbmNvbWluZ19udW1iZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RBVEVfSURMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NUQVRFX09GRkhPT0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TVEFURV9SSU5HSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19UWVBFXzF4UlRUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfQ0RNQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19UWVBFX0VER0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9FVkRPXzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9FVkRPX0EiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9HUFJTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfSFNEUEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9IU1BBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19UWVBFX0hTVVBBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfSURFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9VTVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfVU5LTk9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfVFlQRV9DRE1BIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9UWVBFX0dTTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfVFlQRV9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU1fU1RBVEVfQUJTRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU1fU1RBVEVfTkVUV09SS19MT0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJTV9TVEFURV9QSU5fUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJTV9TVEFURV9QVUtfUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJTV9TVEFURV9SRUFEWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0lNX1NUQVRFX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGVsZXBob255LmNkbWEiCis+Cis8Y2xhc3MgbmFtZT0iQ2RtYUNlbGxMb2NhdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRlbGVwaG9ueS5DZWxsTG9jYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZG1hQ2VsbExvY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LmNkbWEuQ2RtYUNlbGxMb2NhdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNkbWFDZWxsTG9jYXRpb24iCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuY2RtYS5DZG1hQ2VsbExvY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVuZGxlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbGxJbk5vdGlmaWVyQnVuZGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVuZGxlVG9GaWxsIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlU3RhdGlvbklkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJhc2VTdGF0aW9uTGF0aXR1ZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZVN0YXRpb25Mb25naXR1ZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV0d29ya0lkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENlbGxMb2NhdGlvbkRhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlU3RhdGlvbklkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VTdGF0aW9uTGF0aXR1ZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVN0YXRpb25Mb25naXR1ZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDZWxsTG9jYXRpb25EYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVN0YXRpb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlU3RhdGlvbkxhdGl0dWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VTdGF0aW9uTG9uZ2l0dWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXRlSW52YWxpZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20iCis+Cis8Y2xhc3MgbmFtZT0iR3NtQ2VsbExvY2F0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudGVsZXBob255LkNlbGxMb2NhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdzbUNlbGxMb2NhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uR3NtQ2VsbExvY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3NtQ2VsbExvY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LmdzbS5Hc21DZWxsTG9jYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidW5kbGUiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmlsbEluTm90aWZpZXJCdW5kbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFjIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExhY0FuZENpZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZUludmFsaWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNtc01hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZGl2aWRlTWVzc2FnZSIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kRGF0YU1lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdGluYXRpb25BZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY0FkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uUG9ydCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VudEludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaXZlcnlJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZE11bHRpcGFydFRleHRNZXNzYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VudEludGVudHMiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGl2ZXJ5SW50ZW50cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kVGV4dE1lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdGluYXRpb25BZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY0FkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnRJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGl2ZXJ5SW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX0VSUk9SX0dFTkVSSUNfRkFJTFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfTk9fU0VSVklDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfTlVMTF9QRFUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX0VSUk9SX1JBRElPX09GRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fU0lNX0ZSRUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVFVTX09OX1NJTV9SRUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRVU19PTl9TSU1fU0VOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fU0lNX1VOUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fU0lNX1VOU0VOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU21zTWVzc2FnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTbXNNZXNzYWdlIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LmdzbS5TbXNNZXNzYWdlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FsY3VsYXRlTGVuZ3RoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlQm9keSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlN2JpdE9ubHkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsY3VsYXRlTGVuZ3RoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlQm9keSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlN2JpdE9ubHkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbVBkdSIKKyByZXR1cm49ImFuZHJvaWQudGVsZXBob255LmdzbS5TbXNNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGR1IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU1lc3NhZ2VCb2R5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlPcmlnaW5hdGluZ0FkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW1haWxCb2R5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVtYWlsRnJvbSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleE9uU2ltIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZUJvZHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZUNsYXNzIgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuZ3NtLlNtc01lc3NhZ2UuTWVzc2FnZUNsYXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZ2luYXRpbmdBZGRyZXNzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBkdSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sSWRlbnRpZmllciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBzZXVkb1N1YmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VydmljZUNlbnRlckFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzT25TaW0iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJtaXRQZHUiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY0FkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzUmVwb3J0UmVxdWVzdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Ym1pdFBkdSIKKyByZXR1cm49ImFuZHJvaWQudGVsZXBob255LmdzbS5TbXNNZXNzYWdlLlN1Ym1pdFBkdSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdGluYXRpb25BZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvblBvcnQiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c1JlcG9ydFJlcXVlc3RlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUUExheWVyTGVuZ3RoRm9yUERVIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGR1IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcE1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyRGF0YSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ3Boc013aU1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbWFpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01XSUNsZWFyTWVzc2FnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01XSVNldE1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNd2lEb250U3RvcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBsYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVwbHlQYXRoUHJlc2VudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YXR1c1JlcG9ydE1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR18xNkJJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR183QklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HXzhCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5DT0RJTkdfVU5LTk9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfVVNFUl9EQVRBX0JZVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1VTRVJfREFUQV9TRVBURVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1VTRVJfREFUQV9TRVBURVRTX1dJVEhfSEVBREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNtc01lc3NhZ2UuTWVzc2FnZUNsYXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWVzc2FnZS5NZXNzYWdlQ2xhc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWVzc2FnZS5NZXNzYWdlQ2xhc3NbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTbXNNZXNzYWdlLlN1Ym1pdFBkdSIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImVuY29kZWRNZXNzYWdlIgorIHR5cGU9ImJ5dGVbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW5jb2RlZFNjQWRkcmVzcyIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGVzdCIKKz4KKzxjbGFzcyBuYW1lPSJBY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlIgorIGV4dGVuZHM9ImFuZHJvaWQudGVzdC5BY3Rpdml0eVRlc3RDYXNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5Q2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBrZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVG91Y2hNb2RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHkiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRlc3RBY3Rpdml0eVRlc3RDYXNlU2V0VXBQcm9wZXJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlMiIKKyBleHRlbmRzPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlUZXN0Q2FzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZTIiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5Q2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZTIiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHkiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFjdGl2aXR5SW5pdGlhbFRvdWNoTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxUb3VjaE1vZGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWN0aXZpdHlJbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5VGVzdENhc2UiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eVRlc3RDYXNlIgorIHR5cGU9ImFuZHJvaWQudGVzdC5BY3Rpdml0eVRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NydWJDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3RDYXNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWN0aXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0QWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5VW5pdFRlc3RDYXNlIgorIGV4dGVuZHM9ImFuZHJvaWQudGVzdC5BY3Rpdml0eVRlc3RDYXNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eVVuaXRUZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlVbml0VGVzdENhc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmluaXNoZWRBY3Rpdml0eVJlcXVlc3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdGVkT3JpZW50YXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRlZEFjdGl2aXR5SW50ZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGFydGVkQWN0aXZpdHlSZXF1ZXN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmluaXNoQ2FsbGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY3Rpdml0eUNvbnRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eUNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcGxpY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwbGljYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWN0aXZpdHkiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxhc3ROb25Db25maWd1cmF0aW9uSW5zdGFuY2UiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5kcm9pZFRlc3RDYXNlIgorIGV4dGVuZHM9Imp1bml0LmZyYW1ld29yay5UZXN0Q2FzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuZHJvaWRUZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEFjdGl2aXR5UmVxdWlyZXNQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRSZWFkaW5nQ29udGVudFVyaVJlcXVpcmVzUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydFdyaXRpbmdDb250ZW50VXJpUmVxdWlyZXNQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjcnViQ2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0Q2FzZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0QW5kcm9pZFRlc3RDYXNlU2V0dXBQcm9wZXJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtQ29udGV4dCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbmRyb2lkVGVzdFJ1bm5lciIKKyBleHRlbmRzPSJqdW5pdC5ydW5uZXIuQmFzZVRlc3RSdW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkVGVzdFJ1bm5lciIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RSdW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkVGVzdExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdExpc3RlbmVyIiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyVGVzdExpc3RlbmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVGVzdFJlc3VsdCIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRlc3RDYXNlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2p1bml0LmZyYW1ld29yay5UZXN0Q2FzZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGVzdENsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGVzdFJlc3VsdCIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bkZhaWxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3RSZXN1bHQiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnN0cnVtZW50YWl0b24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RydW1lbnRhdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluc3RydW1lbnRhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RydW1lbnRhdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXN0Q2xhc3NOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdENsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdE1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdEVuZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdEZhaWxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0U3RhcnRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFwcGxpY2F0aW9uVGVzdENhc2UiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0Q2FzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwbGljYXRpb25UZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQXBwbGljYXRpb25UZXN0Q2FzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGxpY2F0aW9uQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUFwcGxpY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1Db250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVybWluYXRlQXBwbGljYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdEFwcGxpY2F0aW9uVGVzdENhc2VTZXRVcFByb3Blcmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFzc2VydGlvbkZhaWxlZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFzc2VydGlvbkZhaWxlZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3JNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29tcGFyaXNvbkZhaWx1cmUiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0LkFzc2VydGlvbkZhaWxlZEVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcGFyaXNvbkZhaWx1cmUiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkNvbXBhcmlzb25GYWlsdXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZsYWt5VGVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSIKKyBleHRlbmRzPSJqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdHJ1bWVudGF0aW9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluamVjdEluc3J1bWVudGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnN0cnVtZW50YXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmplY3RJbnN0cnVtZW50YXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnN0cnVtZW50YXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXVuY2hBY3Rpdml0eSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eUNscyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxhdW5jaEFjdGl2aXR5V2l0aEludGVudCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eUNscyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuVGVzdE9uVWlUaHJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kS2V5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleXNTZXF1ZW5jZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kS2V5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleXMiIHR5cGU9ImludC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVwZWF0ZWRLZXlzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5cyIgdHlwZT0iaW50Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRlc3QuVGVzdFN1aXRlUHJvdmlkZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIiCisgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsVGVzdHMiCisgcmV0dXJuPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZHJvaWRUZXN0UnVubmVyIgorIHJldHVybj0iYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0UnVubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvYWRlciIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXN0U3VpdGUiCisgcmV0dXJuPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX0tFWV9OQU1FX0NMQVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NsYXNzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9LRVlfTkFNRV9URVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Rlc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX0tFWV9OVU1fQ1VSUkVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjdXJyZW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9LRVlfTlVNX1RPVEFMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bXRlc3RzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9LRVlfU1RBQ0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhY2smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX1ZBTFVFX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0luc3RydW1lbnRhdGlvblRlc3RSdW5uZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX1ZBTFVFX1JFU1VMVF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9WQUxVRV9SRVNVTFRfRkFJTFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9WQUxVRV9SRVNVTFRfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9WQUxVRV9SRVNVTFRfU1RBUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnN0cnVtZW50YXRpb25UZXN0U3VpdGUiCisgZXh0ZW5kcz0ianVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvblRlc3RTdWl0ZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdFN1aXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zdHIiIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5zdHJ1bWVudGF0aW9uVGVzdFN1aXRlIgorIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0U3VpdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnN0ciIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb25UZXN0U3VpdGUiCisgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RTdWl0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RyIiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJc29sYXRlZENvbnRleHQiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkNvbnRleHRXcmFwcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSXNvbGF0ZWRDb250ZXh0IgorIHR5cGU9ImFuZHJvaWQudGVzdC5Jc29sYXRlZENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0Q29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRDbGVhckJyb2FkY2FzdEludGVudHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuSW50ZW50Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb3JlQXNzZXJ0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0QXNzaWduYWJsZUZyb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRBc3NpZ25hYmxlRnJvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGFpbnNSZWdleCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaFJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZFJlZ2V4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGFpbnNSZWdleCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaFJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZFJlZ2V4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGVudHNJbkFueU9yZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGVudHNJbkFueU9yZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGVudHNJbk9yZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGVudHNJbk9yZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhYmxlIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhYmxlIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/LCA/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFbXB0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8sID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0TWF0Y2hlc1JlZ2V4IgorIHJldHVybj0iamF2YS51dGlsLnJlZ2V4Lk1hdGNoUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVnZXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRNYXRjaGVzUmVnZXgiCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZWdleCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE5vdENvbnRhaW5zUmVnZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVnZXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RDb250YWluc1JlZ2V4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZFJlZ2V4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhYmxlIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhYmxlIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/LCA/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RFbXB0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8sID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE5vdEVxdWFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bmV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90RXF1YWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVuZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RNYXRjaGVzUmVnZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVnZXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RNYXRjaGVzUmVnZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVnZXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0VxdWFsc0FuZEhhc2hDb2RlTWV0aG9kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGhzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVzdWx0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrRXF1YWxzQW5kSGFzaENvZGVNZXRob2RzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJocyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZXN1bHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlBlcmZvcm1hbmNlVGVzdENhc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpc1BlcmZvcm1hbmNlT25seSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFBlcmZvcm1hbmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybWVkaWF0ZXMiIHR5cGU9ImFuZHJvaWQudGVzdC5QZXJmb3JtYW5jZVRlc3RDYXNlLkludGVybWVkaWF0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQZXJmb3JtYW5jZVRlc3RDYXNlLkludGVybWVkaWF0ZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZEludGVybWVkaWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRJbnRlcm1lZGlhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVJbk5TIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaFRpbWluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhbFRpbWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJuYWxJdGVyYXRpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0VGltaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsVGltZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJvdmlkZXJUZXN0Q2FzZSIKKyBleHRlbmRzPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXJUZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuUHJvdmlkZXJUZXN0Q2FzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXJBdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNb2NrQ29udGVudFJlc29sdmVyIgorIHJldHVybj0iYW5kcm9pZC50ZXN0Lm1vY2suTW9ja0NvbnRlbnRSZXNvbHZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2NrQ29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQudGVzdC5Jc29sYXRlZENvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1Jlc29sdmVyV2l0aENvbnRlbnRQcm92aWRlckZyb21TcWwiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldENvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlckNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YWJhc2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhYmFzZVZlcnNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdmlkZXJUZXN0Q2FzZTIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0Q2FzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXJUZXN0Q2FzZTIiCisgdHlwZT0iYW5kcm9pZC50ZXN0LlByb3ZpZGVyVGVzdENhc2UyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXJDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlckF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vY2tDb250ZW50UmVzb2x2ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnRlc3QubW9jay5Nb2NrQ29udGVudFJlc29sdmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vY2tDb250ZXh0IgorIHJldHVybj0iYW5kcm9pZC50ZXN0Lklzb2xhdGVkQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3UmVzb2x2ZXJXaXRoQ29udGVudFByb3ZpZGVyRnJvbVNxbCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0Q29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lUHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlckNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YWJhc2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhYmFzZVZlcnNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVuYW1pbmdEZWxlZ2F0aW5nQ29udGV4dCIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZW5hbWluZ0RlbGVnYXRpbmdDb250ZXh0IgorIHR5cGU9ImFuZHJvaWQudGVzdC5SZW5hbWluZ0RlbGVnYXRpbmdDb250ZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVQcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbmFtaW5nRGVsZWdhdGluZ0NvbnRleHQiCisgdHlwZT0iYW5kcm9pZC50ZXN0LlJlbmFtaW5nRGVsZWdhdGluZ0NvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZUNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlUHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VQcmVmaXgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1ha2VFeGlzdGluZ0ZpbGVzQW5kRGJzQWNjZXNzaWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvdmlkZXJXaXRoUmVuYW1lZENvbnRleHQiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRQcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZVByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3ZpZGVyV2l0aFJlbmFtZWRDb250ZXh0IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50UHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVQcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsbG93QWNjZXNzVG9FeGlzdGluZ0ZpbGVzQW5kRGJzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VydmljZVRlc3RDYXNlIgorIGV4dGVuZHM9ImFuZHJvaWQudGVzdC5BbmRyb2lkVGVzdENhc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcnZpY2VUZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuU2VydmljZVRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kU2VydmljZSIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQXBwbGljYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VydmljZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtQ29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcGxpY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwbGljYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldHVwU2VydmljZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd25TZXJ2aWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNlcnZpY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdFNlcnZpY2VUZXN0Q2FzZVNldFVwUHJvcGVybHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2luZ2xlTGF1bmNoQWN0aXZpdHlUZXN0Q2FzZSIKKyBleHRlbmRzPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbmdsZUxhdW5jaEFjdGl2aXR5VGVzdENhc2UiCisgdHlwZT0iYW5kcm9pZC50ZXN0LlNpbmdsZUxhdW5jaEFjdGl2aXR5VGVzdENhc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5Q2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0QWN0aXZpdHlUZXN0Q2FzZVNldFVwUHJvcGVybHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY0Jhc2VJbnN0cnVtZW50YXRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY0Jhc2VJbnN0cnVtZW50YXRpb24iCisgdHlwZT0iYW5kcm9pZC50ZXN0LlN5bmNCYXNlSW5zdHJ1bWVudGF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbFN5bmNzYW5kRGlzYWJsZUF1dG9TeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeW5jUHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUZXN0U3VpdGVQcm92aWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFRlc3RTdWl0ZSIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0U3VpdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVG91Y2hVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVG91Y2hVdGlscyIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuVG91Y2hVdGlscyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGlja1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdRdWFydGVyU2NyZWVuRG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFnUXVhcnRlclNjcmVlbkRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdRdWFydGVyU2NyZWVuVXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1F1YXJ0ZXJTY3JlZW5VcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdCeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5BY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YVgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGFZIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdCeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGFYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhWSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9YIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9ZIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdUb0JvdHRvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdUb0JvdHRvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9Cb3R0b20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGVwQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFnVmlld1RvQm90dG9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9Ub3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9Ub3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGVwQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFnVmlld1RvVG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9Ub3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9YIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9YIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9YIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdUb1kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9ZIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdUb1kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1kiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nQ2xpY2tWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5BY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nQ2xpY2tWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjcm9sbFRvQm90dG9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5BY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjcm9sbFRvQm90dG9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY3JvbGxUb1RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY3JvbGxUb1RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFwVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b3VjaEFuZENhbmNlbFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVWlUaHJlYWRUZXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXdBc3NlcnRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0QmFzZWxpbmVBbGlnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Qm90dG9tQWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEJvdHRvbUFsaWduZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFyZ2luIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0R3JvdXBDb250YWlucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0R3JvdXBJbnRlZ3JpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRHcm91cE5vdENvbnRhaW5zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRIYXNTY3JlZW5Db29yZGluYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEhvcml6b250YWxDZW50ZXJBbGlnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWZlcmVuY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRMZWZ0QWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydExlZnRBbGlnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcmdpbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE9mZlNjcmVlbkFib3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRPZmZTY3JlZW5CZWxvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0T25TY3JlZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydFJpZ2h0QWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydFJpZ2h0QWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXJnaW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRUb3BBbGlnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0VG9wQWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXJnaW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRWZXJ0aWNhbENlbnRlckFsaWduZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZmVyZW5jZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC50ZXN0Lm1vY2siCis+Cis8Y2xhc3MgbmFtZT0iTW9ja0FwcGxpY2F0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTW9ja0FwcGxpY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tBcHBsaWNhdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrQ29udGVudFByb3ZpZGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrQ29udGVudFByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZW50UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrQ29udGVudFByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZW50UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTW9ja0NvbnRlbnRQcm92aWRlciIKKyB0eXBlPSJhbmRyb2lkLnRlc3QubW9jay5Nb2NrQ29udGVudFByb3ZpZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3cml0ZVBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGhQZXJtaXNzaW9ucyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhdGhQZXJtaXNzaW9uW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrQ29udGVudFJlc29sdmVyIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrQ29udGVudFJlc29sdmVyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZW50UmVzb2x2ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrQ29udGV4dCIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1vY2tDb250ZXh0IgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpbmRTZXJ2aWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nT3JTZWxmVXJpUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQ2FsbGluZ1Blcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nVXJpUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrVXJpUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhcldhbGxwYXBlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUGFja2FnZUNvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhYmFzZUxpc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlRGF0YWJhc2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdPclNlbGZVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZVVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxlTGlzdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkNvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzc2V0cyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhY2hlRGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRSZXNvbHZlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VQYXRoIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dGVybmFsQ2FjaGVEaXIiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxGaWxlc0RpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlU3RyZWFtUGF0aCIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlc0RpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYWluTG9vcGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5Mb29wZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZUNvZGVQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlTWFuYWdlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZVJlc291cmNlUGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hhcmVkUHJlZmVyZW5jZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1TZXJ2aWNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaGVtZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLlRoZW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbGxwYXBlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyRGVzaXJlZE1pbmltdW1IZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyRGVzaXJlZE1pbmltdW1XaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncmFudFVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b1BhY2thZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuRmlsZUlucHV0IgorIHJldHVybj0iamF2YS5pby5GaWxlSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkZpbGVPdXRwdXQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3JDcmVhdGVEYXRhYmFzZSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlLkN1cnNvckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla1dhbGxwYXBlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJSZWNlaXZlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlclJlY2VpdmVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJicm9hZGNhc3RQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlZHVsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTdGlja3lCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2b2tlVXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kT3JkZXJlZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXJQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRPcmRlcmVkQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlclBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVkdWxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsRGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbEV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFN0aWNreUJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kU3RpY2t5T3JkZXJlZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZWR1bGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxEYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsRXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaGVtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FsbHBhcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FsbHBhcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEluc3RydW1lbnRhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2ZpbGVGaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmd1bWVudHMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW50ZW50U2VuZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxsSW5JbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzTWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnc1ZhbHVlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRTZXJ2aWNlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZpY2UiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFNlcnZpY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuYmluZFNlcnZpY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlclJlY2VpdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrQ3Vyc29yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrQ3Vyc29yIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWJvcnRVcGRhdGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0VXBkYXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0VXBkYXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLkxvbmcsID8gZXh0ZW5kcyBqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5U3RyaW5nVG9CdWZmZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlYWN0aXZhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZVJvdyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmxvYiIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleE9yVGhyb3ciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYW50c0FsbE9uTW92ZUNhbGxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNVcGRhdGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FmdGVyTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCZWZvcmVGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDbG9zZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmlyc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvRmlyc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb0xhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb1Bvc2l0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9QcmV2aW91cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhU2V0T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzcG9uZCIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5vdGlmaWNhdGlvblVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1VwZGF0ZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVCbG9iIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEb3VibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUZsb2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUludCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlTG9uZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNob3J0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVN0cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVRvTnVsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTW9ja0RpYWxvZ0ludGVyZmFjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrRGlhbG9nSW50ZXJmYWNlIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tEaWFsb2dJbnRlcmZhY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrUGFja2FnZU1hbmFnZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTW9ja1BhY2thZ2VNYW5hZ2VyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tQYWNrYWdlTWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRQYWNrYWdlVG9QcmVmZXJyZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQZXJtaXNzaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFBlcm1pc3Npb25Bc3luYyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcmVmZXJyZWRBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0Y2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2Fub25pY2FsVG9DdXJyZW50UGFja2FnZU5hbWVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBrZ05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tTaWduYXR1cmVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2cxIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwa2cyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrU2lnbmF0dXJlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYWNrYWdlUHJlZmVycmVkQWN0aXZpdGllcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnJlbnRUb0Nhbm9uaWNhbFBhY2thZ2VOYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eUljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eU5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlJY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbFBlcm1pc3Npb25Hcm91cHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkdyb3VwSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25FbmFibGVkU2V0dGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25JY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25MYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcG9uZW50RW5hYmxlZFNldHRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBvbmVudE5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRBY3Rpdml0eUljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyYXdhYmxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcEluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVkQXBwbGljYXRpb25zIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVkUGFja2FnZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbGxlclBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdHJ1bWVudGF0aW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5JbnN0cnVtZW50YXRpb25JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF1bmNoSW50ZW50Rm9yUGFja2FnZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVGb3JVaWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlR2lkcyIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VzRm9yVWlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9uR3JvdXBJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcnJlZEFjdGl2aXRpZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dEZpbHRlcnMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRBY3Rpdml0aWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcnJlZFBhY2thZ2VzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWNlaXZlckluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VzRm9yQWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlOYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlc0ZvckFwcGxpY2F0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXNGb3JBcHBsaWNhdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcHBQYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZpY2VJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlNlcnZpY2VJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtQXZhaWxhYmxlRmVhdHVyZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uRmVhdHVyZUluZm9bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1TaGFyZWRMaWJyYXJ5TmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBJbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhtbCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBJbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1N5c3RlbUZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2FmZU1vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5QnJvYWRjYXN0UmVjZWl2ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5Q29udGVudFByb3ZpZGVycyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9jZXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnN0cnVtZW50YXRpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uSW5zdHJ1bWVudGF0aW9uSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldFBhY2thZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnRlbnRBY3Rpdml0aWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5SW50ZW50QWN0aXZpdHlPcHRpb25zIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlY2lmaWNzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeUludGVudFNlcnZpY2VzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5UGVybWlzc2lvbnNCeUdyb3VwIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25JbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQYWNrYWdlRnJvbVByZWZlcnJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVDb250ZW50UHJvdmlkZXIiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uUHJvdmlkZXJJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVTZXJ2aWNlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXBwbGljYXRpb25FbmFibGVkU2V0dGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbXBvbmVudEVuYWJsZWRTZXR0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcG9uZW50TmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTW9ja1Jlc291cmNlcyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1vY2tSZXNvdXJjZXMiCisgdHlwZT0iYW5kcm9pZC50ZXN0Lm1vY2suTW9ja1Jlc291cmNlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIiCis+Cis8Y2xhc3MgbmFtZT0iVGVzdE1ldGhvZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdE1ldGhvZCIKKyB0eXBlPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RNZXRob2QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jbG9zaW5nQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdE1ldGhvZCIKKyB0eXBlPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RNZXRob2QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmNsb3NpbmdDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0TWV0aG9kIgorIHR5cGU9ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdE1ldGhvZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3RDYXNlIiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUZXN0IgorIHJldHVybj0ianVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5ub3RhdGlvbiIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFubm90YXRpb25DbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY2xvc2luZ0NsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY2xvc2luZ0NsYXNzbmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGVzdFN1aXRlQnVpbGRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdFN1aXRlQnVpbGRlciIKKyB0eXBlPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RTdWl0ZUJ1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGF6eiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0U3VpdGVCdWlsZGVyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdFN1aXRlQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRSZXF1aXJlbWVudHMiCisgcmV0dXJuPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RTdWl0ZUJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWRpY2F0ZXMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2NvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuUHJlZGljYXRlJmx0O2FuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdE1ldGhvZCZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJlcXVpcmVtZW50cyIKKyByZXR1cm49ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdFN1aXRlQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVkaWNhdGVzIiB0eXBlPSJjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlByZWRpY2F0ZSZsdDthbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RNZXRob2QmZ3Q7Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkIgorIHJldHVybj0ianVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4Y2x1ZGVQYWNrYWdlcyIKKyByZXR1cm49ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdFN1aXRlQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nLi4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1aXRlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jbHVkZUFsbFBhY2thZ2VzVW5kZXJIZXJlIgorIHJldHVybj0iYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5UZXN0U3VpdGVCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jbHVkZVBhY2thZ2VzIgorIHJldHVybj0iYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5UZXN0U3VpdGVCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmcuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmFtZWQiCisgcmV0dXJuPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RTdWl0ZUJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N1aXRlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXN0U3VpdGVCdWlsZGVyLkZhaWxlZFRvQ3JlYXRlVGVzdHMiCisgZXh0ZW5kcz0ianVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0U3VpdGVCdWlsZGVyLkZhaWxlZFRvQ3JlYXRlVGVzdHMiCisgdHlwZT0iYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5UZXN0U3VpdGVCdWlsZGVyLkZhaWxlZFRvQ3JlYXRlVGVzdHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ0ZXN0U3VpdGVDb25zdHJ1Y3Rpb25GYWlsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uIgorPgorPGNsYXNzIG5hbWU9IkxhcmdlVGVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpdW1UZXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNtYWxsVGVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbW9rZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdXBwcmVzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGV4dCIKKz4KKzxjbGFzcyBuYW1lPSJBbHRlcmVkQ2hhclNlcXVlbmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LkdldENoYXJzIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2hhckF0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFrZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5BbHRlcmVkQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YnN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YlNlcXVlbmNlIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5kcm9pZENoYXJhY3RlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5kcm9pZENoYXJhY3RlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQuQW5kcm9pZENoYXJhY3RlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREaXJlY3Rpb25hbGl0aWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWFzdEFzaWFuV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFYXN0QXNpYW5XaWR0aHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaXJyb3IiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWlycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVBU1RfQVNJQU5fV0lEVEhfQU1CSUdVT1VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFQVNUX0FTSUFOX1dJRFRIX0ZVTExfV0lEVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVBU1RfQVNJQU5fV0lEVEhfSEFMRl9XSURUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUFTVF9BU0lBTl9XSURUSF9OQVJST1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVBU1RfQVNJQU5fV0lEVEhfTkVVVFJBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUFTVF9BU0lBTl9XSURUSF9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5ub3RhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFubm90YXRpb24iCisgdHlwZT0iYW5kcm9pZC50ZXh0LkFubm90YXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbm5vdGF0aW9uIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Bbm5vdGF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXV0b1RleHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQm9yaW5nTGF5b3V0IgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5MYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5UZXh0VXRpbHMuRWxsaXBzaXplQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvcmluZ0xheW91dCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0ZXJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQm9yaW5nTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRlcndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWduIiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ211bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nYWRkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dC5NZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmNsdWRlcGFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGxpcHNpemUiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0VXRpbHMuVHJ1bmNhdGVBdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxsaXBzaXplZFdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbGxpcHNpemVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm90dG9tUGFkZGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGxpcHNpc0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxsaXBzaXNTdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb250YWluc1RhYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZURlc2NlbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lRGlyZWN0aW9ucyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuRGlyZWN0aW9ucyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVRvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaERpcmVjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvcFBhZGRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCb3JpbmciCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0Lk1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCb3JpbmciCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0Lk1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRlcndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWduIiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ211bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nYWRkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dC5NZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmNsdWRlcGFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1ha2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGVyd2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nbXVsdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdhZGQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0Lk1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVwYWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVsbGlwc2l6ZSIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRVdGlscy5UcnVuY2F0ZUF0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGxpcHNpemVkV2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlT3JNYWtlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0ZXJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlT3JNYWtlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0ZXJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxsaXBzaXplIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVsbGlwc2l6ZWRXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJvcmluZ0xheW91dC5NZXRyaWNzIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuRm9udE1ldHJpY3NJbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvcmluZ0xheW91dC5NZXRyaWNzIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IndpZHRoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbGlwYm9hcmRNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRHluYW1pY0xheW91dCIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHluYW1pY0xheW91dCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuRHluYW1pY0xheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVwYWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkR5bmFtaWNMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkR5bmFtaWNMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nbXVsdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdhZGQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmNsdWRlcGFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEeW5hbWljTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQudGV4dC5EeW5hbWljTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWduIiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ211bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nYWRkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxsaXBzaXplIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVsbGlwc2l6ZWRXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Qm90dG9tUGFkZGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGxpcHNpc0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxsaXBzaXNTdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb250YWluc1RhYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZURlc2NlbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lRGlyZWN0aW9ucyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuRGlyZWN0aW9ucyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVRvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaERpcmVjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvcFBhZGRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkVkaXRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5BcHBlbmRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LkdldENoYXJzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJTcGFucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWx0ZXJzIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LklucHV0RmlsdGVyW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5FZGl0YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWx0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXJzIiB0eXBlPSJhbmRyb2lkLnRleHQuSW5wdXRGaWx0ZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRWRpdGFibGUuRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFZGl0YWJsZS5GYWN0b3J5IgorIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZS5GYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlLkZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdFZGl0YWJsZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5FZGl0YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHZXRDaGFycyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHRtbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZyb21IdG1sIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LlNwYW5uZWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyb21IdG1sIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LlNwYW5uZWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbWFnZUdldHRlciIgdHlwZT0iYW5kcm9pZC50ZXh0Lkh0bWwuSW1hZ2VHZXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhZ0hhbmRsZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5IdG1sLlRhZ0hhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9IdG1sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSHRtbC5JbWFnZUdldHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0bWwuVGFnSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaGFuZGxlVGFnIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcGVuaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxSZWFkZXIiIHR5cGU9Im9yZy54bWwuc2F4LlhNTFJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IklucHV0RmlsdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZmlsdGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSW5wdXRGaWx0ZXIuQWxsQ2FwcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRGaWx0ZXIuQWxsQ2FwcyIKKyB0eXBlPSJhbmRyb2lkLnRleHQuSW5wdXRGaWx0ZXIuQWxsQ2FwcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWx0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dEZpbHRlci5MZW5ndGhGaWx0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuSW5wdXRGaWx0ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IklucHV0RmlsdGVyLkxlbmd0aEZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQuSW5wdXRGaWx0ZXIuTGVuZ3RoRmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWx0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSW5wdXRUeXBlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJUWVBFX0NMQVNTX0RBVEVUSU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0NMQVNTX05VTUJFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DTEFTU19QSE9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DTEFTU19URVhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0RBVEVUSU1FX1ZBUklBVElPTl9EQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9EQVRFVElNRV9WQVJJQVRJT05fTk9STUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0RBVEVUSU1FX1ZBUklBVElPTl9USU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NQVNLX0NMQVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NQVNLX0ZMQUdTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY3NzMxMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NQVNLX1ZBUklBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9OVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX05VTUJFUl9GTEFHX0RFQ0lNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTlVNQkVSX0ZMQUdfU0lHTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfRkxBR19BVVRPX0NPTVBMRVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX0ZMQUdfQVVUT19DT1JSRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX0ZMQUdfQ0FQX0NIQVJBQ1RFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9GTEFHX0NBUF9TRU5URU5DRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfRkxBR19DQVBfV09SRFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9GTEFHX0lNRV9NVUxUSV9MSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYyMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9GTEFHX01VTFRJX0xJTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX0ZMQUdfTk9fU1VHR0VTVElPTlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9FTUFJTF9BRERSRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9FTUFJTF9TVUJKRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9GSUxURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9MT05HX01FU1NBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfVkFSSUFUSU9OX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9QQVNTV09SRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfVkFSSUFUSU9OX1BFUlNPTl9OQU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9QSE9ORVRJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfVkFSSUFUSU9OX1BPU1RBTF9BRERSRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9WQVJJQVRJT05fU0hPUlRfTUVTU0FHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9WQVJJQVRJT05fVVJJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9WSVNJQkxFX1BBU1NXT1JEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9WQVJJQVRJT05fV0VCX0VESVRfVEVYVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkxheW91dCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdNdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ0FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoaWdobGlnaHQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGlnaGxpZ2h0UGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvck9mZnNldFZlcnRpY2FsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxpZ25tZW50IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b21QYWRkaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdGluZ0J1ZmZlciIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXNpcmVkV2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRXaWR0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2lzQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2lzU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2l6ZWRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUFzY2VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUJhc2VsaW5lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQm90dG9tIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQm91bmRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdW5kcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb250YWluc1RhYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVEZXNjZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lRGlyZWN0aW9ucyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuRGlyZWN0aW9ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUVuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUZvck9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUZvclZlcnRpY2FsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVMZWZ0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lTWF4IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lUmlnaHQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVTdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVRvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVZpc2libGVFbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lV2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9mZnNldEZvckhvcml6b250YWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9yaXoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9mZnNldFRvTGVmdE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPZmZzZXRUb1JpZ2h0T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhaW50IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LlRleHRQYWludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaEFsaWdubWVudCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhZ3JhcGhEaXJlY3Rpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaExlZnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaFJpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltYXJ5SG9yaXpvbnRhbCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWNvbmRhcnlIb3Jpem9udGFsIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGlvblBhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYWNpbmdBZGQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYWNpbmdNdWx0aXBsaWVyIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvcFBhZGRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlYXNlV2lkdGhUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGFubmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRElSX0xFRlRfVE9fUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUl9SSUdIVF9UT19MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxheW91dC5BbGlnbm1lbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxheW91dC5EaXJlY3Rpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2dpbkZpbHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImZpbHRlciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmVkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkludmFsaWRDaGFyYWN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9naW5GaWx0ZXIuUGFzc3dvcmRGaWx0ZXJHTWFpbCIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuTG9naW5GaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvZ2luRmlsdGVyLlBhc3N3b3JkRmlsdGVyR01haWwiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkxvZ2luRmlsdGVyLlBhc3N3b3JkRmlsdGVyR01haWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dpbkZpbHRlci5QYXNzd29yZEZpbHRlckdNYWlsIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlci5QYXNzd29yZEZpbHRlckdNYWlsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kSW52YWxpZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9naW5GaWx0ZXIuVXNlcm5hbWVGaWx0ZXJHTWFpbCIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuTG9naW5GaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvZ2luRmlsdGVyLlVzZXJuYW1lRmlsdGVyR01haWwiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkxvZ2luRmlsdGVyLlVzZXJuYW1lRmlsdGVyR01haWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdNYWlsIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdNYWlsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kSW52YWxpZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9naW5GaWx0ZXIuVXNlcm5hbWVGaWx0ZXJHZW5lcmljIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9naW5GaWx0ZXIuVXNlcm5hbWVGaWx0ZXJHZW5lcmljIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdlbmVyaWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdlbmVyaWMiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkxvZ2luRmlsdGVyLlVzZXJuYW1lRmlsdGVyR2VuZXJpYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGVuZEludmFsaWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpc0FsbG93ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJOb0NvcHlTcGFuIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik5vQ29weVNwYW4uQ29uY3JldGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuTm9Db3B5U3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9Db3B5U3Bhbi5Db25jcmV0ZSIKKyB0eXBlPSJhbmRyb2lkLnRleHQuTm9Db3B5U3Bhbi5Db25jcmV0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGFyY2VsYWJsZVNwYW4iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTZWxlY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJleHRlbmREb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kTGVmdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dGVuZFJpZ2h0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kU2VsZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kVG9MZWZ0RWRnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dGVuZFRvUmlnaHRFZGdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWxlY3Rpb25FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGlvblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlRG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVMZWZ0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVJpZ2h0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTGVmdEVkZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9SaWdodEVkZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWxlY3RBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNFTEVDVElPTl9FTkQiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUxFQ1RJT05fU1RBUlQiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNwYW5XYXRjaGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5Ob0NvcHlTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0ib25TcGFuQWRkZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3BhbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9zdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5zdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TcGFuUmVtb3ZlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTcGFubmFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlNwYW5uZWQiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTcGFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTcGFubmFibGUuRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFubmFibGUuRmFjdG9yeSIKKyB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlLkZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlLkZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTcGFubmFibGUiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3Bhbm5hYmxlU3RyaW5nIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdJbnRlcm5hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuR2V0Q2hhcnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3Bhbm5hYmxlU3RyaW5nIgorIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTcGFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTcGFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3ViU2VxdWVuY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5BcHBlbmRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5HZXRDaGFycyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwYW5uYWJsZVN0cmluZ0J1aWxkZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZVN0cmluZ0J1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFyQXQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclNwYW5zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0b2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsdGVycyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhbkZsYWdzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5TdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFucyIKKyByZXR1cm49IlRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnlTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeUVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJraW5kIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZVN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRiIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGIiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTcGFuVHJhbnNpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVNwYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRiIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRiIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YnN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRiZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlcnMiIHR5cGU9ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3Bhbm5hYmxlU3RyaW5nSW50ZXJuYWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSIiCis+Cis8bWV0aG9kIG5hbWU9ImNoYXJBdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuRW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5GbGFncyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhbnMiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5U3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnlFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTcGFuVHJhbnNpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTcGFubmVkIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuRW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuRmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5TdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhbnMiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0U3BhblRyYW5zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU1BBTl9DT01QT1NJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9FWENMVVNJVkVfRVhDTFVTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9FWENMVVNJVkVfSU5DTFVTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9JTkNMVVNJVkVfRVhDTFVTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9JTkNMVVNJVkVfSU5DTFVTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9JTlRFUk1FRElBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9NQVJLX01BUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTUEFOX01BUktfUE9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTUEFOX1BBUkFHUkFQSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQQU5fUE9JTlRfTUFSSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQQU5fUE9JTlRfTUFSS19NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9QT0lOVF9QT0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQQU5fUFJJT1JJVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjcxMTY4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTUEFOX1BSSU9SSVRZX1NISUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9VU0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTE2Nzc3MjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQQU5fVVNFUl9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU3Bhbm5lZFN0cmluZyIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nSW50ZXJuYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuR2V0Q2hhcnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlNwYW5uZWQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwYW5uZWRTdHJpbmciCisgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uZWRTdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5lZFN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhdGljTGF5b3V0IgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5MYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGF0aWNMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LlN0YXRpY0xheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWduIiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ211bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nYWRkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhdGljTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQudGV4dC5TdGF0aWNMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZnN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0ZXJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVwYWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0YXRpY0xheW91dCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuU3RhdGljTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGVyd2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nbXVsdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdhZGQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmNsdWRlcGFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGxpcHNpemUiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0VXRpbHMuVHJ1bmNhdGVBdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxsaXBzaXplZFdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b21QYWRkaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2lzQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGxpcHNpc1N0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUNvbnRhaW5zVGFiIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lRGVzY2VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVEaXJlY3Rpb25zIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkxheW91dC5EaXJlY3Rpb25zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lVG9wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYWdyYXBoRGlyZWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG9wUGFkZGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXh0UGFpbnQiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5QYWludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRleHRQYWludCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dFBhaW50IgorIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0UGFpbnQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJhc2VsaW5lU2hpZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmdDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZW5zaXR5IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2FibGVTdGF0ZSIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxpbmtDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dFV0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29tbWFFbGxpcHNpemUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF2YWlsIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lTW9yZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9yZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25jYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVNwYW5zRnJvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmQiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdG9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXBTcGFucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW50ZXIiIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWxsaXBzaXplIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdmFpbCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWxsaXBzaXplIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdmFpbCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZXNlcnZlTGVuZ3RoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRVdGlscy5FbGxpcHNpemVDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhwYW5kVGVtcGxhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlbXBsYXRlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2Fwc01vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXFNb2RlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0b2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0QWZ0ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0QmVmb3JlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJldmVyc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJpbW1lZExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imh0bWxFbmNvZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVlZGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVlZGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVlZGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RpZ2l0c09ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNHcmFwaGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNHcmFwaGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImpvaW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGltaXRlciIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW5zIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iam9pbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaW1pdGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbnMiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFzdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaW9uTWF0Y2hlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR3byIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib29mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvbnMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2VbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzcGxpdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHByZXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNwbGl0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmluZ09yU3Bhbm5lZFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbGFibGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0FQX01PREVfQ0hBUkFDVEVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FQX01PREVfU0VOVEVOQ0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FQX01PREVfV09SRFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQVJfU0VRVUVOQ0VfQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRleHRVdGlscy5FbGxpcHNpemVDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZWxsaXBzaXplZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRleHRVdGlscy5TaW1wbGVTdHJpbmdTcGxpdHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlN0cmluZ1NwbGl0dGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0VXRpbHMuU2ltcGxlU3RyaW5nU3BsaXR0ZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRVdGlscy5TaW1wbGVTdHJpbmdTcGxpdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGltaXRlciIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imhhc05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUZXh0VXRpbHMuU3RyaW5nU3BsaXR0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuSXRlcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGV4dFV0aWxzLlRydW5jYXRlQXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRleHRXYXRjaGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5Ob0NvcHlTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWZ0ZXJUZXh0Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZVRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZnRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGV4dENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJlZm9yZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGV4dC5mb3JtYXQiCis+Cis8Y2xhc3MgbmFtZT0iRGF0ZUZvcm1hdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuZm9ybWF0LkRhdGVGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluRm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpblRpbWVJbk1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5Gb3JtYXQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluRGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluRm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbkRhdGUiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlRm9ybWF0IgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlRm9ybWF0T3JkZXIiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nRGF0ZUZvcm1hdCIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVkaXVtRGF0ZUZvcm1hdCIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZUZvcm1hdCIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXMyNEhvdXJGb3JtYXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQU1fUE0iCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FQSVRBTF9BTV9QTSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVkiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUiIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUl9PRl9EQVkiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTlVURSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9OVEgiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVPVEUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EUyIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElNRV9aT05FIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZRUFSIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0ZVV0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlVXRpbHMiCisgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlVXRpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RGF0ZVJhbmdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZE1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXREYXRlUmFuZ2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0TWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RGF0ZVRpbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RWxhcHNlZFRpbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsYXBzZWRTZWNvbmRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEVsYXBzZWRUaW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN5Y2xlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxhcHNlZFNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0U2FtZURheVRpbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm93IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZVN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QU1QTVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW1wbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERheU9mV2Vla1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFiYnJldiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vbnRoU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhYmJyZXYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWxhdGl2ZURhdGVUaW1lU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluUmVzb2x1dGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNpdGlvblJlc29sdXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVsYXRpdmVUaW1lU3BhblN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbGF0aXZlVGltZVNwYW5TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vdyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluUmVzb2x1dGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWxhdGl2ZVRpbWVTcGFuU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3ciIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pblJlc29sdXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVsYXRpdmVUaW1lU3BhblN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2l0aFByZXBvc2l0aW9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbGF0aXZlVGltZVNwYW5TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNUb2RheSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFCQlJFVl9NT05USF9GT1JNQVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7JWImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUJCUkVWX1dFRUtEQVlfRk9STUFUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OyVhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBWV9JTl9NSUxMSVMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODY0MDAwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF8xMkhPVVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfMjRIT1VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9BQkJSRVZfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9BQkJSRVZfTU9OVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfQUJCUkVWX1JFTEFUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYyMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9BQkJSRVZfVElNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9BQkJSRVZfV0VFS0RBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9DQVBfQU1QTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfQ0FQX01JRE5JR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfQ0FQX05PT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9DQVBfTk9PTl9NSUROSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX05PX01JRE5JR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfTk9fTU9OVEhfREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX05PX05PT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX05PX05PT05fTUlETklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9OT19ZRUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfTlVNRVJJQ19EQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9TSE9XX0RBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfU0hPV19USU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfU0hPV19XRUVLREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfU0hPV19ZRUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfVVRDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSX0lOX01JTExJUyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwMDAwTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSX01JTlVURV8yNCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDslSDolTSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRU5HVEhfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxFTkdUSF9NRURJVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRU5HVEhfU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRU5HVEhfU0hPUlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxFTkdUSF9TSE9SVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTlVURV9JTl9NSUxMSVMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjAwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIX0RBWV9GT1JNQVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7JS1kJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIX0ZPUk1BVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDslQiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVU1FUklDX01PTlRIX0ZPUk1BVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDslbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRfSU5fTUlMTElTIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtEQVlfRk9STUFUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OyVBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtfSU5fTUlMTElTIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYwNDgwMDAwMEwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUl9GT1JNQVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7JVkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUl9GT1JNQVRfVFdPX0RJR0lUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDslZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZRUFSX0lOX01JTExJUyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTQ0OTYwMDAwMEwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2FtZU1vbnRoVGFibGUiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2FtZVllYXJUYWJsZSIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0dGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQuZm9ybWF0LkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRGaWxlU2l6ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bWJlciIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRJcEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRTaG9ydEZpbGVTaXplIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtYmVyIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRpbWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWUiCisgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWUiCisgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZSIKKyB0eXBlPSJhbmRyb2lkLnRleHQuZm9ybWF0LlRpbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlciIgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWZ0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGF0IiB0eXBlPSJhbmRyb2lkLnRleHQuZm9ybWF0LlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmVmb3JlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhhdCIgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQudGV4dC5mb3JtYXQuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQyNDQ1IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdDMzMzkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGxEYXkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0dWFsTWF4aW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50VGltZXpvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SnVsaWFuRGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ210b2ZmIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdlZWtOdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFcG9jaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vcm1hbGl6ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWdub3JlRHN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZTMzMzkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoYXQiIHR5cGU9ImFuZHJvaWQudGV4dC5mb3JtYXQuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGhEYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoRGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRKdWxpYW5EYXkiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJqdWxpYW5EYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUb05vdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzd2l0Y2hUaW1lem9uZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9NaWxsaXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlnbm9yZURzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVQT0NIX0pVTElBTl9EQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNDQwNTg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZSSURBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOVVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT05EQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT05USF9EQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNBVFVSREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVTkRBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhVUlNEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVaT05FX1VUQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtVVEMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFVFU0RBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VETkVTREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUVLX0RBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VFS19OVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllFQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllFQVJfREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbGxEYXkiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImdtdG9mZiIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaG91ciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc0RzdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtaW51dGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibW9udGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibW9udGhEYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Vjb25kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRpbWV6b25lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3ZWVrRGF5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InllYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieWVhckRheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnRleHQubWV0aG9kIgorPgorPGNsYXNzIG5hbWU9IkFycm93S2V5TW92ZW1lbnRNZXRob2QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5Nb3ZlbWVudE1ldGhvZCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyb3dLZXlNb3ZlbWVudE1ldGhvZCIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLkFycm93S2V5TW92ZW1lbnRNZXRob2QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuU2VsZWN0QXJiaXRyYXJpbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5Nb3ZlbWVudE1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5RG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5T3RoZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVVwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25UYWtlRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVHJhY2tiYWxsRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2VLZXlMaXN0ZW5lciIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQubWV0aG9kLk1ldGFLZXlLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQubWV0aG9kLktleUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNlS2V5TGlzdGVuZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmFja3NwYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5T3RoZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNoYXJhY3RlclBpY2tlckRpYWxvZyIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Lk9uSXRlbUNsaWNrTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyYWN0ZXJQaWNrZXJEaWFsb2ciCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5DaGFyYWN0ZXJQaWNrZXJEaWFsb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zZXJ0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSXRlbUNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGVLZXlMaXN0ZW5lciIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQubWV0aG9kLk51bWJlcktleUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUtleUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuRGF0ZUtleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFjY2VwdGVkQ2hhcnMiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5EYXRlS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNIQVJBQ1RFUlMiCisgdHlwZT0iY2hhcltdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRlVGltZUtleUxpc3RlbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuTnVtYmVyS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlVGltZUtleUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuRGF0ZVRpbWVLZXlMaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY2NlcHRlZENoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuRGF0ZVRpbWVLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0hBUkFDVEVSUyIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpYWxlcktleUxpc3RlbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuTnVtYmVyS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWFsZXJLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLkRpYWxlcktleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFjY2VwdGVkQ2hhcnMiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5EaWFsZXJLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0hBUkFDVEVSUyIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpZ2l0c0tleUxpc3RlbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuTnVtYmVyS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWdpdHNLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLkRpZ2l0c0tleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlnaXRzS2V5TGlzdGVuZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5EaWdpdHNLZXlMaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlY2ltYWwiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY2NlcHRlZENoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuRGlnaXRzS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuRGlnaXRzS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVjaW1hbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuRGlnaXRzS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjZXB0ZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSGlkZVJldHVybnNUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQubWV0aG9kLlJlcGxhY2VtZW50VHJhbnNmb3JtYXRpb25NZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIaWRlUmV0dXJuc1RyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuSGlkZVJldHVybnNUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuSGlkZVJldHVybnNUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmFsIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcGxhY2VtZW50IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsZWFyTWV0YUtleVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleURvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleU90aGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5VXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGlua01vdmVtZW50TWV0aG9kIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuU2Nyb2xsaW5nTW92ZW1lbnRNZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5rTW92ZW1lbnRNZXRob2QiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5MaW5rTW92ZW1lbnRNZXRob2QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQubWV0aG9kLk1vdmVtZW50TWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWV0YUtleUtleUxpc3RlbmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1ldGFLZXlLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLk1ldGFLZXlLZXlMaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGp1c3RNZXRhQWZ0ZXJLZXlwcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGp1c3RNZXRhQWZ0ZXJLZXlwcmVzcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJNZXRhS2V5U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhck1ldGFLZXlTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhck1ldGFLZXlTdGF0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0YVN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlS2V5RG93biIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVLZXlVcCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01ldGFUcmFja2VyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VsZWN0aW5nTWV0YVRyYWNrZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5VXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRMb2NrZWRNZXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0TG9ja2VkTWV0YSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRNZXRhU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNRVRBX0FMVF9MT0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9BTFRfT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEFfQ0FQX0xPQ0tFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBX1NISUZUX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBX1NZTV9MT0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEFfU1lNX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1vdmVtZW50TWV0aG9kIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FuU2VsZWN0QXJiaXRyYXJpbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdGlhbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleURvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleU90aGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVVwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25UYWtlRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNdWx0aVRhcEtleUxpc3RlbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuQmFzZUtleUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuU3BhbldhdGNoZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik11bHRpVGFwS2V5TGlzdGVuZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5NdWx0aVRhcEtleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvdGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuTXVsdGlUYXBLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvdGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3BhbkFkZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TcGFuQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNwYW5SZW1vdmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTnVtYmVyS2V5TGlzdGVuZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LklucHV0RmlsdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOdW1iZXJLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLk51bWJlcktleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbHRlciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmVkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjY2VwdGVkQ2hhcnMiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb29rdXAiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY2VwdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlRleHRXYXRjaGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5tZXRob2QuVHJhbnNmb3JtYXRpb25NZXRob2QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5QYXNzd29yZFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFmdGVyVGV4dENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmVmb3JlVGV4dENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZnRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5QYXNzd29yZFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhbnNmb3JtYXRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZVRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmV2aW91c2x5Rm9jdXNlZFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVmb3JlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUXdlcnR5S2V5TGlzdGVuZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRd2VydHlLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlF3ZXJ0eUtleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvdGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuUXdlcnR5S2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b3RleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIuQ2FwaXRhbGl6ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrQXNSZXBsYWNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlcGxhY2VtZW50VHJhbnNmb3JtYXRpb25NZXRob2QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQubWV0aG9kLlRyYW5zZm9ybWF0aW9uTWV0aG9kIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXBsYWNlbWVudFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuUmVwbGFjZW1lbnRUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hbCIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcGxhY2VtZW50IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhbnNmb3JtYXRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZVRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmV2aW91c2x5Rm9jdXNlZFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTY3JvbGxpbmdNb3ZlbWVudE1ldGhvZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQubWV0aG9kLk1vdmVtZW50TWV0aG9kIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY3JvbGxpbmdNb3ZlbWVudE1ldGhvZCIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlNjcm9sbGluZ01vdmVtZW50TWV0aG9kIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhblNlbGVjdEFyYml0cmFyaWx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5Nb3ZlbWVudE1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxlZnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlPdGhlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5VXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRha2VGb2N1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyaWdodCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaW5nbGVMaW5lVHJhbnNmb3JtYXRpb25NZXRob2QiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5SZXBsYWNlbWVudFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2luZ2xlTGluZVRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuU2luZ2xlTGluZVRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5TaW5nbGVMaW5lVHJhbnNmb3JtYXRpb25NZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hbCIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXBsYWNlbWVudCIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXh0S2V5TGlzdGVuZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5TcGFuV2F0Y2hlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEtleUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuVGV4dEtleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvdGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b3RleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIuQ2FwaXRhbGl6ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuVGV4dEtleUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TcGFuQWRkZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNwYW5DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TcGFuUmVtb3ZlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZENhcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dEtleUxpc3RlbmVyLkNhcGl0YWxpemUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIuQ2FwaXRhbGl6ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaW1lS2V5TGlzdGVuZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5OdW1iZXJLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWVLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRpbWVLZXlMaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY2NlcHRlZENoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuVGltZUtleUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDSEFSQUNURVJTIgorIHR5cGU9ImNoYXJbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVG91Y2giCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRJbml0aWFsU2Nyb2xsWCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5pdGlhbFNjcm9sbFkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjcm9sbFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFRyYW5zZm9ybWF0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlVGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZXZpb3VzbHlGb2N1c2VkUmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZSIKKz4KKzxjbGFzcyBuYW1lPSJBYnNvbHV0ZVNpemVTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic29sdXRlU2l6ZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkFic29sdXRlU2l6ZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic29sdXRlU2l6ZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkFic29sdXRlU2l6ZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzb2x1dGVTaXplU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQWJzb2x1dGVTaXplU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQWxpZ25tZW50U3BhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuUGFyYWdyYXBoU3R5bGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBbGlnbm1lbnQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkFsaWdubWVudFNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5BbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5BbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxpZ25tZW50IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFja2dyb3VuZENvbG9yU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFja2dyb3VuZENvbG9yU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQmFja2dyb3VuZENvbG9yU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhY2tncm91bmRDb2xvclNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkJhY2tncm91bmRDb2xvclNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYWNrZ3JvdW5kQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEcmF3U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcyIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVsbGV0U3BhbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWxsZXRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5CdWxsZXRTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVsbGV0U3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQnVsbGV0U3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdhcFdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1bGxldFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkJ1bGxldFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnYXBXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWxsZXRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5CdWxsZXRTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0xlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVhZGluZ01hcmdpbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJTVEFOREFSRF9HQVBfV0lEVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyYWN0ZXJTdHlsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyYWN0ZXJTdHlsZSIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VW5kZXJseWluZyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5zdHlsZS5DaGFyYWN0ZXJTdHlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEcmF3U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5DaGFyYWN0ZXJTdHlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbGlja2FibGVTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5DaGFyYWN0ZXJTdHlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xpY2thYmxlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2xpY2thYmxlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRyYXdhYmxlTWFyZ2luU3BhbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxpbmVIZWlnaHRTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcmF3YWJsZU1hcmdpblNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkRyYXdhYmxlTWFyZ2luU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyYXdhYmxlTWFyZ2luU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuRHJhd2FibGVNYXJnaW5TcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaG9vc2VIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXN0YXJ0diIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZtIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzSW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdMZWFkaW5nTWFyZ2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlbGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVhZGluZ01hcmdpbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRHluYW1pY0RyYXdhYmxlU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuUmVwbGFjZW1lbnRTcGFuIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEeW5hbWljRHJhd2FibGVTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5EeW5hbWljRHJhd2FibGVTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHluYW1pY0RyYXdhYmxlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuRHluYW1pY0RyYXdhYmxlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsQWxpZ25tZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljc0ludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJ0aWNhbEFsaWdubWVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFMSUdOX0JBU0VMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTElHTl9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1WZXJ0aWNhbEFsaWdubWVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGb3JlZ3JvdW5kQ29sb3JTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5DaGFyYWN0ZXJTdHlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVBcHBlYXJhbmNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JlZ3JvdW5kQ29sb3JTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5Gb3JlZ3JvdW5kQ29sb3JTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9yZWdyb3VuZENvbG9yU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuRm9yZWdyb3VuZENvbG9yU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcmVncm91bmRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJY29uTWFyZ2luU3BhbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxpbmVIZWlnaHRTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJY29uTWFyZ2luU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuSWNvbk1hcmdpblNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWNvbk1hcmdpblNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkljb25NYXJnaW5TcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hvb3NlSGVpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzdGFydHYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljc0ludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3TGVhZGluZ01hcmdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZWxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkltYWdlU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuRHluYW1pY0RyYXdhYmxlU3BhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkltYWdlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuSW1hZ2VTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbEFsaWdubWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkltYWdlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsQWxpZ25tZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkltYWdlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuSW1hZ2VTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbEFsaWdubWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkltYWdlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsQWxpZ25tZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkltYWdlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuSW1hZ2VTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkltYWdlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVydGljYWxBbGlnbm1lbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkltYWdlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsQWxpZ25tZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U291cmNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTGVhZGluZ01hcmdpblNwYW4iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlBhcmFncmFwaFN0eWxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZHJhd0xlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZWxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMZWFkaW5nTWFyZ2luU3Bhbi5MZWFkaW5nTWFyZ2luU3BhbjIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLldyYXBUb2dldGhlclNwYW4iPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRMZWFkaW5nTWFyZ2luTGluZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkxlYWRpbmdNYXJnaW5TcGFuLlN0YW5kYXJkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxlYWRpbmdNYXJnaW5TcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGVhZGluZ01hcmdpblNwYW4uU3RhbmRhcmQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxlYWRpbmdNYXJnaW5TcGFuLlN0YW5kYXJkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMZWFkaW5nTWFyZ2luU3Bhbi5TdGFuZGFyZCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4uU3RhbmRhcmQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVyeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMZWFkaW5nTWFyZ2luU3Bhbi5TdGFuZGFyZCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4uU3RhbmRhcmQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3TGVhZGluZ01hcmdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZWxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJMaW5lQmFja2dyb3VuZFNwYW4iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlBhcmFncmFwaFN0eWxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZHJhd0JhY2tncm91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlbGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxudW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkxpbmVIZWlnaHRTcGFuIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5QYXJhZ3JhcGhTdHlsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuV3JhcFRvZ2V0aGVyU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNob29zZUhlaWdodCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYW5zdGFydHYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljc0ludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkxpbmVIZWlnaHRTcGFuLldpdGhEZW5zaXR5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxpbmVIZWlnaHRTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2hvb3NlSGVpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhbnN0YXJ0diIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZtIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzSW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWFza0ZpbHRlclNwYW4iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0LnN0eWxlLkNoYXJhY3RlclN0eWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFza0ZpbHRlclNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLk1hc2tGaWx0ZXJTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hc2tGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNYXNrRmlsdGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5NYXNrRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1ldHJpY0FmZmVjdGluZ1NwYW4iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0LnN0eWxlLkNoYXJhY3RlclN0eWxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVMYXlvdXQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1ldHJpY0FmZmVjdGluZ1NwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLk1ldHJpY0FmZmVjdGluZ1NwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idXBkYXRlTWVhc3VyZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQYXJhZ3JhcGhTdHlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJRdW90ZVNwYW4iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxlYWRpbmdNYXJnaW5TcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUXVvdGVTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5RdW90ZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRdW90ZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlF1b3RlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlF1b3RlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuUXVvdGVTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0xlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZWFkaW5nTWFyZ2luIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSYXN0ZXJpemVyU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVBcHBlYXJhbmNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYXN0ZXJpemVyU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuUmFzdGVyaXplclNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhc3Rlcml6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRSYXN0ZXJpemVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SYXN0ZXJpemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlbGF0aXZlU2l6ZVNwYW4iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0LnN0eWxlLk1ldHJpY0FmZmVjdGluZ1NwYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVsYXRpdmVTaXplU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuUmVsYXRpdmVTaXplU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BvcnRpb24iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWxhdGl2ZVNpemVTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5SZWxhdGl2ZVNpemVTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2l6ZUNoYW5nZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRHJhd1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlTWVhc3VyZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlcGxhY2VtZW50U3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuTWV0cmljQWZmZWN0aW5nU3BhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVwbGFjZW1lbnRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5SZXBsYWNlbWVudFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZtIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzSW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NhbGVYU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuTWV0cmljQWZmZWN0aW5nU3BhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2FsZVhTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5TY2FsZVhTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcG9ydGlvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYWxlWFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlNjYWxlWFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZVgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpa2V0aHJvdWdoU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaWtldGhyb3VnaFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlN0cmlrZXRocm91Z2hTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaWtldGhyb3VnaFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlN0cmlrZXRocm91Z2hTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEcmF3U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcyIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3R5bGVTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0eWxlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuU3R5bGVTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3R5bGVTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5TdHlsZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0eWxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdWJzY3JpcHRTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1YnNjcmlwdFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlN1YnNjcmlwdFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdWJzY3JpcHRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5TdWJzY3JpcHRTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEcmF3U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVNZWFzdXJlU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3VwZXJzY3JpcHRTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1cGVyc2NyaXB0U3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuU3VwZXJzY3JpcHRTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3VwZXJzY3JpcHRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5TdXBlcnNjcmlwdFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVGFiU3RvcFNwYW4iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlBhcmFncmFwaFN0eWxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0VGFiU3RvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJUYWJTdG9wU3Bhbi5TdGFuZGFyZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5UYWJTdG9wU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFiU3RvcFNwYW4uU3RhbmRhcmQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlRhYlN0b3BTcGFuLlN0YW5kYXJkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFRhYlN0b3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dEFwcGVhcmFuY2VTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRleHRBcHBlYXJhbmNlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuVGV4dEFwcGVhcmFuY2VTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGVhcmFuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEFwcGVhcmFuY2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5UZXh0QXBwZWFyYW5jZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZWFyYW5jZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvckxpc3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEFwcGVhcmFuY2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5UZXh0QXBwZWFyYW5jZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYW1pbHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmtDb2xvciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEFwcGVhcmFuY2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5UZXh0QXBwZWFyYW5jZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmtUZXh0Q29sb3IiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dENvbG9yIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0U3R5bGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRHJhd1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlTWVhc3VyZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR5cGVmYWNlU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuTWV0cmljQWZmZWN0aW5nU3BhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUeXBlZmFjZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlR5cGVmYWNlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhbWlseSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHlwZWZhY2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5UeXBlZmFjZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRHJhd1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlTWVhc3VyZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSTFNwYW4iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0LnN0eWxlLkNsaWNrYWJsZVNwYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuVVJMU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuVVJMU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJMIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5kZXJsaW5lU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5kZXJsaW5lU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuVW5kZXJsaW5lU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuZGVybGluZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlVuZGVybGluZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVXBkYXRlQXBwZWFyYW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iVXBkYXRlTGF5b3V0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVBcHBlYXJhbmNlIj4KKzwvaW1wbGVtZW50cz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJXcmFwVG9nZXRoZXJTcGFuIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5QYXJhZ3JhcGhTdHlsZSI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGV4dC51dGlsIgorPgorPGNsYXNzIG5hbWU9IkxpbmtpZnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtpZnkiCisgdHlwZT0iYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRMaW5rcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkTGlua3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMaW5rcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMaW5rcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0Y2hGaWx0ZXIiIHR5cGU9ImFuZHJvaWQudGV4dC51dGlsLkxpbmtpZnkuTWF0Y2hGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zZm9ybUZpbHRlciIgdHlwZT0iYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeS5UcmFuc2Zvcm1GaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkTGlua3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMaW5rcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVybiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXRjaEZpbHRlciIgdHlwZT0iYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeS5NYXRjaEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtRmlsdGVyIiB0eXBlPSJhbmRyb2lkLnRleHQudXRpbC5MaW5raWZ5LlRyYW5zZm9ybUZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNQUlMX0FERFJFU1NFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFQX0FERFJFU1NFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfTlVNQkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VCX1VSTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNQaG9uZU51bWJlck1hdGNoRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC51dGlsLkxpbmtpZnkuTWF0Y2hGaWx0ZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic1Bob25lTnVtYmVyVHJhbnNmb3JtRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC51dGlsLkxpbmtpZnkuVHJhbnNmb3JtRmlsdGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNVcmxNYXRjaEZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQudXRpbC5MaW5raWZ5Lk1hdGNoRmlsdGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTGlua2lmeS5NYXRjaEZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWNjZXB0TWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTGlua2lmeS5UcmFuc2Zvcm1GaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InRyYW5zZm9ybVVybCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0Y2giIHR5cGU9ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJmYzgyMlRva2VuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZmM4MjJUb2tlbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQudXRpbC5SZmM4MjJUb2tlbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21tZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdW90ZUNvbW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1b3RlTmFtZUlmTmVjZXNzYXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkZHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJmYzgyMlRva2VuaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5NdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3LlRva2VuaXplciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmZjODIyVG9rZW5pemVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC51dGlsLlJmYzgyMlRva2VuaXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kVG9rZW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXJtaW5hdGVUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9rZW5pemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7YW5kcm9pZC50ZXh0LnV0aWwuUmZjODIyVG9rZW4mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRva2VuaXplIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LnV0aWwuUmZjODIyVG9rZW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC51dGlsIgorPgorPGNsYXNzIG5hbWU9IkFuZHJvaWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuZHJvaWRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC51dGlsLkFuZHJvaWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudXRpbC5BbmRyb2lkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5kcm9pZEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQW5kcm9pZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBdHRyaWJ1dGVTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVCb29sZWFuVmFsdWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlQm9vbGVhblZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVGbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlRmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlSW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZUludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZUxpc3RWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVMaXN0VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZU5hbWVSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVJlc291cmNlVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVJlc291cmNlVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlVW5zaWduZWRJbnRWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlVW5zaWduZWRJbnRWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzQXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkQXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkQXR0cmlidXRlUmVzb3VyY2VWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGlvbkRlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0eWxlQXR0cmlidXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkJhc2U2NCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkxGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19DTE9TRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX1BBRERJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX1dSQVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVSTF9TQUZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzZTY0SW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2U2NElucHV0U3RyZWFtIgorIHR5cGU9ImFuZHJvaWQudXRpbC5CYXNlNjRJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzZTY0T3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzZTY0T3V0cHV0U3RyZWFtIgorIHR5cGU9ImFuZHJvaWQudXRpbC5CYXNlNjRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29uZmlnIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmZpZyIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQ29uZmlnIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iREVCVUciCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0dEIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0dWIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPRklMRSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFTEVBU0UiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWJ1Z1V0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWJ1Z1V0aWxzIgorIHR5cGU9ImFuZHJvaWQudXRpbC5EZWJ1Z1V0aWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzT2JqZWN0U2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaXNwbGF5TWV0cmljcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlzcGxheU1ldHJpY3MiCisgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvRGVmYXVsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVOU0lUWV9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFTlNJVFlfSElHSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERU5TSVRZX0xPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERU5TSVRZX01FRElVTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZW5zaXR5IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVuc2l0eURwaSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoZWlnaHRQaXhlbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NhbGVkRGVuc2l0eSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpZHRoUGl4ZWxzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InhkcGkiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5ZHBpIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV2ZW50TG9nIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFdmVudExvZyIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuRXZlbnRMb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VGFnQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhZ05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRFdmVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFncyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7YW5kcm9pZC51dGlsLkV2ZW50TG9nLkV2ZW50Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFdmVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRXZlbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFdmVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFdmVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV2ZW50TG9nLkV2ZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldERhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvY2Vzc0lkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lTmFub3MiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV2ZW50TG9nVGFncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFdmVudExvZ1RhZ3MiCisgdHlwZT0iYW5kcm9pZC51dGlsLkV2ZW50TG9nVGFncyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFdmVudExvZ1RhZ3MiCisgdHlwZT0iYW5kcm9pZC51dGlsLkV2ZW50TG9nVGFncyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5FdmVudExvZ1RhZ3MuRGVzY3JpcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYW5kcm9pZC51dGlsLkV2ZW50TG9nVGFncy5EZXNjcmlwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRXZlbnRMb2dUYWdzLkRlc2NyaXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9Im1OYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1UYWciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmxvYXRNYXRoIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2VpbCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcyIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5nbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb29yIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2luIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3FydCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxvZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ciIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YWNrVHJhY2VTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHIiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb2dnYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmlvcml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InYiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHIiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Ind0ZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3dGYiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ciIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3dGYiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQVNTRVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUJVRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklORk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZFUkJPU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldBUk4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2dQcmludGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dQcmludGVyIgorIHR5cGU9ImFuZHJvaWQudXRpbC5Mb2dQcmludGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTW9udGhEaXNwbGF5SGVscGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb250aERpc3BsYXlIZWxwZXIiCisgdHlwZT0iYW5kcm9pZC51dGlsLk1vbnRoRGlzcGxheUhlbHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2Vla1N0YXJ0RGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1vbnRoRGlzcGxheUhlbHBlciIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuTW9udGhEaXNwbGF5SGVscGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uT2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERheUF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlnaXRzRm9yUm93IgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpcnN0RGF5T2ZNb250aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb250aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJPZkRheXNJbk1vbnRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSb3dPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2Vla1N0YXJ0RGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFllYXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXaXRoaW5DdXJyZW50TW9udGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dE1vbnRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmV2aW91c01vbnRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWlyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWlyIgorIHR5cGU9ImFuZHJvaWQudXRpbC5QYWlyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9IkYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iUyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZSIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5QYWlyJmx0O0EsIEImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9IkEiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9IkIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJmaXJzdCIKKyB0eXBlPSJGIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWNvbmQiCisgdHlwZT0iUyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdHRlcm5zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29uY2F0R3JvdXBzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdGNoZXIiIHR5cGU9ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpZ2l0c0FuZFBsdXNPbmx5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdGNoZXIiIHR5cGU9ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRE9NQUlOX05BTUUiCisgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU1BSUxfQUREUkVTUyIKKyB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVybiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHT09EX0lSSV9DSEFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2EtekEtWjAtOVx1MDBhMC1cdWQ3ZmZcdWY5MDAtXHVmZGNmXHVmZGYwLVx1ZmZlZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJUF9BRERSRVNTIgorIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FIgorIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPUF9MRVZFTF9ET01BSU4iCisgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9QX0xFVkVMX0RPTUFJTl9TVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7KChhZXJvfGFycGF8YXNpYXxhW2NkZWZnaWxtbm9xcnN0dXd4el0pfChiaXp8YlthYmRlZmdoaWptbm9yc3R2d3l6XSl8KGNhdHxjb218Y29vcHxjW2FjZGZnaGlrbG1ub3J1dnh5el0pfGRbZWprbW96XXwoZWR1fGVbY2VncnN0dV0pfGZbaWprbW9yXXwoZ292fGdbYWJkZWZnaGlsbW5wcXJzdHV3eV0pfGhba21ucnR1XXwoaW5mb3xpbnR8aVtkZWxtbm9xcnN0XSl8KGpvYnN8altlbW9wXSl8a1tlZ2hpbW5wcnd5el18bFthYmNpa3JzdHV2eV18KG1pbHxtb2JpfG11c2V1bXxtW2FjZGVnaGtsbW5vcHFyc3R1dnd4eXpdKXwobmFtZXxuZXR8blthY2VmZ2lsb3BydXpdKXwob3JnfG9tKXwocHJvfHBbYWVmZ2hrbG1ucnN0d3ldKXxxYXxyW2Vvc3V3XXxzW2FiY2RlZ2hpamtsbW5vcnR1dnl6XXwodGVsfHRyYXZlbHx0W2NkZmdoamtsbW5vcHJ0dnd6XSl8dVthZ2tzeXpdfHZbYWNlZ2ludV18d1tmc118KHhuXFwtXFwtMHp3bTU2ZHx4blxcLVxcLTExYjViczNhOWFqNmd8eG5cXC1cXC04MGFraGJ5a25qNGZ8eG5cXC1cXC05dDRiMTF5aTVhfHhuXFwtXFwtZGViYTBhZHx4blxcLVxcLWc2dzI1MWR8eG5cXC1cXC1oZ2JrNmFqN2Y1M2JiYXx4blxcLVxcLWhsY2o2YXlhOWVzYzdhfHhuXFwtXFwtanhhbHBkbHB8eG5cXC1cXC1rZ2JlY2h0dnx4blxcLVxcLXpja3phaCl8eVtldHVdfHpbYW13XSkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9QX0xFVkVMX0RPTUFJTl9TVFJfRk9SX1dFQl9VUkwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7KD86KD86YWVyb3xhcnBhfGFzaWF8YVtjZGVmZ2lsbW5vcXJzdHV3eHpdKXwoPzpiaXp8YlthYmRlZmdoaWptbm9yc3R2d3l6XSl8KD86Y2F0fGNvbXxjb29wfGNbYWNkZmdoaWtsbW5vcnV2eHl6XSl8ZFtlamttb3pdfCg/OmVkdXxlW2NlZ3JzdHVdKXxmW2lqa21vcl18KD86Z292fGdbYWJkZWZnaGlsbW5wcXJzdHV3eV0pfGhba21ucnR1XXwoPzppbmZvfGludHxpW2RlbG1ub3Fyc3RdKXwoPzpqb2JzfGpbZW1vcF0pfGtbZWdoaW1ucHJ3eXpdfGxbYWJjaWtyc3R1dnldfCg/Om1pbHxtb2JpfG11c2V1bXxtW2FjZGVnaGtsbW5vcHFyc3R1dnd4eXpdKXwoPzpuYW1lfG5ldHxuW2FjZWZnaWxvcHJ1el0pfCg/Om9yZ3xvbSl8KD86cHJvfHBbYWVmZ2hrbG1ucnN0d3ldKXxxYXxyW2Vvc3V3XXxzW2FiY2RlZ2hpamtsbW5vcnR1dnl6XXwoPzp0ZWx8dHJhdmVsfHRbY2RmZ2hqa2xtbm9wcnR2d3pdKXx1W2Fna3N5el18dlthY2VnaW51XXx3W2ZzXXwoPzp4blxcLVxcLTB6d201NmR8eG5cXC1cXC0xMWI1YnMzYTlhajZnfHhuXFwtXFwtODBha2hieWtuajRmfHhuXFwtXFwtOXQ0YjExeWk1YXx4blxcLVxcLWRlYmEwYWR8eG5cXC1cXC1nNncyNTFkfHhuXFwtXFwtaGdiazZhajdmNTNiYmF8eG5cXC1cXC1obGNqNmF5YTllc2M3YXx4blxcLVxcLWp4YWxwZGxwfHhuXFwtXFwta2diZWNodHZ8eG5cXC1cXC16Y2t6YWgpfHlbZXR1XXx6W2Ftd10pKSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUJfVVJMIgorIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmludFN0cmVhbVByaW50ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50U3RyZWFtUHJpbnRlciIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRTdHJlYW1QcmludGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmludFdyaXRlclByaW50ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyUHJpbnRlciIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRXcml0ZXJQcmludGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUHJpbnRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNwYXJzZUFycmF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFyc2VBcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFyc2VBcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlSWZLZXlOb3RGb3VuZCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mS2V5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleUF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZUF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZUF0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTcGFyc2VCb29sZWFuQXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwYXJzZUJvb2xlYW5BcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQm9vbGVhbkFycmF5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3BhcnNlQm9vbGVhbkFycmF5IgorIHR5cGU9ImFuZHJvaWQudXRpbC5TcGFyc2VCb29sZWFuQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlSWZLZXlOb3RGb3VuZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mS2V5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleUF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlQXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNwYXJzZUludEFycmF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFyc2VJbnRBcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlSW50QXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFyc2VJbnRBcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlSW50QXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlSWZLZXlOb3RGb3VuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2ZLZXkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2ZWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlBdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZUF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0YXRlU2V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGF0ZVNldCIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3RhdGVTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1dpbGRDYXJkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNldE9yU3BlYyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhdGVTZXRNYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNwZWMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNldCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhdGVTZXRNYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNwZWMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyaW1TdGF0ZVNldCIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IldJTERfQ0FSRCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nQnVpbGRlclByaW50ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0J1aWxkZXJQcmludGVyIgorIHR5cGU9ImFuZHJvaWQudXRpbC5TdHJpbmdCdWlsZGVyUHJpbnRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1aWxkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZUZvcm1hdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaW1lVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWVVdGlscyIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuVGltZVV0aWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVab25lIgorIHJldHVybj0iamF2YS51dGlsLlRpbWVab25lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50cnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVpvbmVEYXRhYmFzZVZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltaW5nTG9nZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1pbmdMb2dnZXIiCisgdHlwZT0iYW5kcm9pZC51dGlsLlRpbWluZ0xvZ2dlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRTcGxpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwbGl0TGFiZWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcFRvTG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR5cGVkVmFsdWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlR5cGVkVmFsdWUiCisgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwbHlEaW1lbnNpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZXJjZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZXJjZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBsZXhUb0RpbWVuc2lvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBsZXhUb0RpbWVuc2lvbk5vaXN5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGxleFRvRGltZW5zaW9uUGl4ZWxPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGxleFRvRGltZW5zaW9uUGl4ZWxTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBsZXhUb0Zsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGxleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBsZXhUb0ZyYWN0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGJhc2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpbWVuc2lvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYWN0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYmFzZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlciIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX01BTlRJU1NBX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjc3NzIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX01BTlRJU1NBX1NISUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1JBRElYXzBwMjMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBMRVhfUkFESVhfMTZwNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9SQURJWF8yM3AwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1JBRElYXzhwMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBMRVhfUkFESVhfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9SQURJWF9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9VTklUX0RJUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9VTklUX0ZSQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1VOSVRfRlJBQ1RJT05fUEFSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1VOSVRfSU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBMRVhfVU5JVF9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9VTklUX01NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1VOSVRfUFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBMRVhfVU5JVF9QWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9VTklUX1NISUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1VOSVRfU1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFTlNJVFlfREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVOU0lUWV9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BVFRSSUJVVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRElNRU5TSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0ZJUlNUX0NPTE9SX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRklSU1RfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GUkFDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9JTlRfQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSU5UX0NPTE9SX0FSR0I0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9JTlRfQ09MT1JfQVJHQjgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0lOVF9DT0xPUl9SR0I0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9JTlRfQ09MT1JfUkdCOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSU5UX0RFQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSU5UX0hFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTEFTVF9DT0xPUl9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0xBU1RfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9OVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1JFRkVSRU5DRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TVFJJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFzc2V0Q29va2llIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoYW5naW5nQ29uZmlndXJhdGlvbnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGF0YSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZW5zaXR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc291cmNlSWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYbWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlhtbCIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuWG1sIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFzQXR0cmlidXRlU2V0IgorIHJldHVybj0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZEVuY29kaW5nQnlOYW1lIgorIHJldHVybj0iYW5kcm9pZC51dGlsLlhtbC5FbmNvZGluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZ05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdQdWxsUGFyc2VyIgorIHJldHVybj0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NlcmlhbGl6ZXIiCisgcmV0dXJuPSJvcmcueG1scHVsbC52MS5YbWxTZXJpYWxpemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhtbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudEhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50SGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJhbmRyb2lkLnV0aWwuWG1sLkVuY29kaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50SGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfUkVMQVhFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWG1sLkVuY29kaW5nIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC51dGlsLlhtbC5FbmNvZGluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5YbWwuRW5jb2RpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnZpZXciCis+Cis8Y2xhc3MgbmFtZT0iQWJzU2F2ZWRTdGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU2F2ZWRTdGF0ZSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuQWJzU2F2ZWRTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1cGVyU3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU2F2ZWRTdGF0ZSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuQWJzU2F2ZWRTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cGVyU3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZX1NUQVRFIgorIHR5cGU9ImFuZHJvaWQudmlldy5BYnNTYXZlZFN0YXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGV4dE1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbGVhckhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25SZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imljb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGVhZGVyVGl0bGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGVSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJUaXRsZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5Db250ZXh0TWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGV4dE1lbnUuQ29udGV4dE1lbnVJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGV4dFRoZW1lV3JhcHBlciIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZXh0VGhlbWVXcmFwcGVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5Db250ZXh0VGhlbWVXcmFwcGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGV4dFRoZW1lV3JhcHBlciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dFRoZW1lV3JhcHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVtZXJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25BcHBseVRoZW1lUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuVGhlbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpc3BsYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5SWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dE1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmllbnRhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGl4ZWxGb3JtYXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVmcmVzaFJhdGUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSb3RhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9ESVNQTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRm9jdXNGaW5kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmaW5kTmVhcmVzdFRvdWNoYWJsZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb290IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZE5leHRGb2N1cyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvb3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kTmV4dEZvY3VzRnJvbVJlY3QiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm9vdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNlZFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuRm9jdXNGaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVEZXRlY3RvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3IuT25HZXN0dXJlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVEZXRlY3RvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yLk9uR2VzdHVyZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZ25vcmVNdWx0aXRvdWNoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXNMb25ncHJlc3NFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRvdWNoRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldiIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzTG9uZ3ByZXNzRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzTG9uZ3ByZXNzRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkRvdWJsZVRhcExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25Eb3VibGVUYXBMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5PbkRvdWJsZVRhcExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IuT25Eb3VibGVUYXBMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Eb3VibGVUYXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRvdWJsZVRhcEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TaW5nbGVUYXBDb25maXJtZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Eb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GbGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZTEiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZTIiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVsb2NpdHlYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVsb2NpdHlZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxvbmdQcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2Nyb2xsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlMSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2hvd1ByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TaW5nbGVUYXBVcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IuU2ltcGxlT25HZXN0dXJlTGlzdGVuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yLk9uRG91YmxlVGFwTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VzdHVyZURldGVjdG9yLlNpbXBsZU9uR2VzdHVyZUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3IuU2ltcGxlT25HZXN0dXJlTGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25Eb3VibGVUYXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Eb3VibGVUYXBFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GbGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUyIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Mb25nUHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlMSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2hvd1ByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2luZ2xlVGFwQ29uZmlybWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2luZ2xlVGFwVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR3Jhdml0eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3Jhdml0eSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuR3Jhdml0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhBZGoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieUFkaiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRSZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwbHlEaXNwbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5vdXRPYmoiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hvcml6b250YWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZlcnRpY2FsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBWElTX0NMSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFYSVNfUFVMTF9BRlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19QVUxMX0JFRk9SRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19TUEVDSUZJRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFYSVNfWF9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19ZX1NISUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDRU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDRU5URVJfSE9SSVpPTlRBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0VOVEVSX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0xJUF9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDTElQX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU1BMQVlfQ0xJUF9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY3NzcyMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9DTElQX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4NDM1NDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSUxMX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPUklaT05UQUxfR1JBVklUWV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19HUkFWSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkVSVElDQUxfR1JBVklUWV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIYXB0aWNGZWVkYmFja0NvbnN0YW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iRkxBR19JR05PUkVfR0xPQkFMX1NFVFRJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfSUdOT1JFX1ZJRVdfU0VUVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQk9BUkRfVEFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT05HX1BSRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWSVJUVUFMX0tFWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkluZmxhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmZsYXRlRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5JbmZsYXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5mbGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuSW5mbGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5mbGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuSW5mbGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkluZmxhdGVFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LkluZmxhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlDaGFyYWN0ZXJNYXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkZXZpY2VIYXNLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXZpY2VIYXNLZXlzIgorIHJldHVybj0iYm9vbGVhbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlYWRDaGFyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY2VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheUxhYmVsIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZW50cyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5LZXlFdmVudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFycyIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleURhdGEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHMiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlDaGFyYWN0ZXJNYXAuS2V5RGF0YSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlib2FyZFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0Y2giCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0Y2giCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWJlciIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ByaW50aW5nS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuS2V5Q2hhcmFjdGVyTWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleWJvYXJkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlVJTFRfSU5fS0VZQk9BUkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTUJJTklOR19BQ0NFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMjE0NzQ4MzY0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01CSU5JTkdfQUNDRU5UX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTQ3NDgzNjQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhFWF9JTlBVVCIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MTE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVU1FUklDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSUNLRVJfRElBTE9HX0lOUFVUIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYxMTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRURJQ1RJVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlDaGFyYWN0ZXJNYXAuS2V5RGF0YSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlDaGFyYWN0ZXJNYXAuS2V5RGF0YSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5Q2hhcmFjdGVyTWFwLktleURhdGEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJNRVRBX0xFTkdUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlzcGxheUxhYmVsIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtZXRhIgorIHR5cGU9ImNoYXJbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWJlciIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleUV2ZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUV2ZW50IgorIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRvd25UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRhU3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGFTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXZpY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbmNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGFTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXZpY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbmNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcmFjdGVycyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV2aWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUV2ZW50IgorIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdFdmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlFdmVudCIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdFdmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlcGVhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hhbmdlQWN0aW9uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYW5nZUZsYWdzIgorIHJldHVybj0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hhbmdlVGltZVJlcGVhdCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5LZXlFdmVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlcGVhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYW5nZVRpbWVSZXBlYXQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdSZXBlYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3RmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuRGlzcGF0Y2hlclN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcmFjdGVycyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWFkQ2hhciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NlbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERldmljZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheUxhYmVsIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3duVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmVudFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5RGF0YSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHMiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlDaGFyYWN0ZXJNYXAuS2V5RGF0YSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXRjaCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0Y2giCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFycyIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhLZXlDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0YVN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtYmVyIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXBlYXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYW5Db2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5pY29kZUNoYXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5pY29kZUNoYXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FsdFByZXNzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDYW5jZWxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvbmdQcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01vZGlmaWVyS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcmludGluZ0tleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaGlmdFByZXNzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTeW1QcmVzc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3lzdGVtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVHJhY2tpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUcmFja2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTVVMVElQTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0NBTkNFTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19DQU5DRUxFRF9MT05HX1BSRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRURJVE9SX0FDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRlJPTV9TWVNURU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfS0VFUF9UT1VDSF9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0xPTkdfUFJFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TT0ZUX0tFWUJPQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1RSQUNLSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfVklSVFVBTF9IQVJEX0tFWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfV09LRV9IRVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV8yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0EiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0FMVF9MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9BTFRfUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0FQT1NUUk9QSEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9CIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9CQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0JBQ0tTTEFTSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfQ0FMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9DQU1FUkEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0NMRUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9DT01NQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfREVMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9EUEFEX0NFTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfRFBBRF9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9EUEFEX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0RQQURfUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0RQQURfVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0VORENBTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfRU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0VOVkVMT1BFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9FUVVBTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0VYUExPUkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9GIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9GT0NVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfR1JBVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0hFQURTRVRIT09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9IT01FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0oiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0xFRlRfQlJBQ0tFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTUVESUFfRkFTVF9GT1JXQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRURJQV9ORVhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRURJQV9QTEFZX1BBVVNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRURJQV9QUkVWSU9VUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTUVESUFfUkVXSU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRURJQV9TVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRU5VIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NSU5VUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTVVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTk9USUZJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9OVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX08iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1BFUklPRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfUExVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfUE9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1BPV0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9RIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9SSUdIVF9CUkFDS0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TRUFSQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1NFTUlDT0xPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU0hJRlRfTEVGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU0hJRlRfUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1NMQVNIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TT0ZUX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU09GVF9SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TUEFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU1RBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU1lNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9UQUIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfViIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfVk9MVU1FX0RPV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1ZPTFVNRV9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9LRVlDT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBX0FMVF9MRUZUX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9BTFRfT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEFfQUxUX1JJR0hUX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9TSElGVF9MRUZUX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9TSElGVF9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9TSElGVF9SSUdIVF9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBX1NZTV9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJLZXlFdmVudC5DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlMb25nUHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleU11bHRpcGxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlVcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJLZXlFdmVudC5EaXNwYXRjaGVyU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQuRGlzcGF0Y2hlclN0YXRlIgorIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudC5EaXNwYXRjaGVyU3RhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaGFuZGxlVXBFdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNUcmFja2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybWVkTG9uZ1ByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUcmFja2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMYXlvdXRJbmZsYXRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYXlvdXRJbmZsYXRlciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5b3V0SW5mbGF0ZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luYWwiIHR5cGU9ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZUluQ29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkluZmxhdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5JbmZsYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyb20iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZhY3RvcnkiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIuRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlci5GaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb290IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb290IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm9vdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNoVG9Sb290IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb290IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRhY2hUb1Jvb3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyLkZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIuRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJMYXlvdXRJbmZsYXRlci5GYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMYXlvdXRJbmZsYXRlci5GaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTG9hZENsYXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGF6eiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGVSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlUmVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSW50ZW50T3B0aW9ucyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGVjaWZpY3MiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRTcGVjaWZpY0l0ZW1zIiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW1bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRTdWJNZW51IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3ViTWVudSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdWJNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlUmVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3ViTWVudSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdWJNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFN1Yk1lbnUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZVJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRJdGVtIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1Zpc2libGVJdGVtcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Nob3J0Y3V0S2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUlkZW50aWZpZXJBY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybVNob3J0Y3V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVJdGVtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyb3VwQ2hlY2thYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2FibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2x1c2l2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcm91cEVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3JvdXBWaXNpYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFF3ZXJ0eU1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUXdlcnR5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0FMVEVSTkFUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYyMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0NPTlRBSU5FUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1NTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX1NFQ09OREFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5NjYwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9TWVNURU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklSU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxXQVlTX1BFUkZPUk1fQ0xPU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQVBQRU5EX1RPX0dST1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1BFUkZPUk1fTk9fQ0xPU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWVudUluZmxhdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZW51SW5mbGF0ZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJbmZsYXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnVSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QWxwaGFiZXRpY1Nob3J0Y3V0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZW51SW5mbyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5Db250ZXh0TWVudS5Db250ZXh0TWVudUluZm8iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1lcmljU2hvcnRjdXQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JkZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJNZW51IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZUNvbmRlbnNlZCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTdWJNZW51IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hlY2thYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hlY2tlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhYmV0aWNTaG9ydGN1dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYUNoYXIiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hlY2thYmxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGVja2VkIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEljb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25SZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bWVyaWNTaG9ydGN1dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1lcmljQ2hhciIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbk1lbnVJdGVtQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51SXRlbUNsaWNrTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51SXRlbS5Pbk1lbnVJdGVtQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaG9ydGN1dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1lcmljQ2hhciIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGFDaGFyIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGVDb25kZW5zZWQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmlzaWJsZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVudUl0ZW0uT25NZW51SXRlbUNsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTWVudUl0ZW1DbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNb3Rpb25FdmVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZEJhdGNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlc3N1cmUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YVN0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kUG9pbnRlckluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbkluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9uTWFza2VkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV2aWNlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3duVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFZGdlRmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmVudFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbEV2ZW50VGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbFByZXNzdXJlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbFByZXNzdXJlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpc3RvcmljYWxTaXplIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbFNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbFgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIaXN0b3JpY2FsWCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIaXN0b3JpY2FsWSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpc3RvcmljYWxZIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpc3RvcnlTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0YVN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9pbnRlckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9pbnRlcklkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZXNzdXJlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVzc3VyZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhd1giCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhd1kiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WFByZWNpc2lvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFlQcmVjaXNpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkb3duVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVzc3VyZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRhU3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieFByZWNpc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlQcmVjaXNpb24iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXZpY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlZGdlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlc3N1cmUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YVN0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhQcmVjaXNpb24iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5UHJlY2lzaW9uIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV2aWNlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRnZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRvd25UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGFTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluTm9IaXN0b3J5IgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXRMb2NhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGFYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGFZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWN5Y2xlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVkZ2VGbGFncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NBTkNFTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RPV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NT1ZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fT1VUU0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPSU5URVJfMV9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT0lOVEVSXzFfVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPSU5URVJfMl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPSU5URVJfMl9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT0lOVEVSXzNfRE9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT0lOVEVSXzNfVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9JTlRFUl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9JTlRFUl9JRF9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjUyODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9JTlRFUl9JRF9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9JTlRFUl9JTkRFWF9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjUyODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPSU5URVJfSU5ERVhfU0hJRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT0lOVEVSX1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRURHRV9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVER0VfTEVGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRURHRV9SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRURHRV9UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPcmllbnRhdGlvbkV2ZW50TGlzdGVuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3JpZW50YXRpb25FdmVudExpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5PcmllbnRhdGlvbkV2ZW50TGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3JpZW50YXRpb25FdmVudExpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5PcmllbnRhdGlvbkV2ZW50TGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuRGV0ZWN0T3JpZW50YXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25PcmllbnRhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWVudGF0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9VTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik9yaWVudGF0aW9uTGlzdGVuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9yaWVudGF0aW9uTGlzdGVuZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3Lk9yaWVudGF0aW9uTGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3JpZW50YXRpb25MaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuT3JpZW50YXRpb25MaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWNjdXJhY3lDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25PcmllbnRhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWVudGF0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZW5zb3JDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NhbGVHZXN0dXJlRGV0ZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYWxlR2VzdHVyZURldGVjdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3LlNjYWxlR2VzdHVyZURldGVjdG9yLk9uU2NhbGVHZXN0dXJlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50U3BhbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZW50VGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNZIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJldmlvdXNTcGFuIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVGYWN0b3IiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lRGVsdGEiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5Qcm9ncmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU2NhbGVHZXN0dXJlRGV0ZWN0b3IuT25TY2FsZUdlc3R1cmVMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25TY2FsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0ZWN0b3IiIHR5cGU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNjYWxlQmVnaW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGVjdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuU2NhbGVHZXN0dXJlRGV0ZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY2FsZUVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0ZWN0b3IiIHR5cGU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2NhbGVHZXN0dXJlRGV0ZWN0b3IuU2ltcGxlT25TY2FsZUdlc3R1cmVMaXN0ZW5lciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3Rvci5PblNjYWxlR2VzdHVyZUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2FsZUdlc3R1cmVEZXRlY3Rvci5TaW1wbGVPblNjYWxlR2VzdHVyZUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3Rvci5TaW1wbGVPblNjYWxlR2VzdHVyZUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uU2NhbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRlY3RvciIgdHlwZT0iYW5kcm9pZC52aWV3LlNjYWxlR2VzdHVyZURldGVjdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2NhbGVCZWdpbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGVjdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuU2NhbGVHZXN0dXJlRGV0ZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY2FsZUVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGVjdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuU2NhbGVHZXN0dXJlRGV0ZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU291bmRFZmZlY3RDb25zdGFudHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRDb250YW50Rm9yRm9jdXNEaXJlY3Rpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDTElDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFWSUdBVElPTl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQVZJR0FUSU9OX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05fUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05fVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsZWFySGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW0iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvblJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlckljb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlclRpdGxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGVSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJUaXRsZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdWJNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlclZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvblJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEljb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTdXJmYWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlZXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrQ2FudmFzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcnR5IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LlN1cmZhY2UuT3V0T2ZSZXNvdXJjZXNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGbGFncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyZWV6ZVRpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXllciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iem9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc2R4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHRkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkdGR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcmllbnRhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmllbnRhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUcmFuc3BhcmVudFJlZ2lvbkhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmZyZWV6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmxvY2tDYW52YXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5sb2NrQ2FudmFzQW5kUG9zdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfU1VSRkFDRV9CTFVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfU1VSRkFDRV9ESU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfU1VSRkFDRV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTgzMDQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZYX1NVUkZBQ0VfTk9STUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUFUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBUkRXQVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISURERU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PTl9QUkVNVUxUSVBMSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBVU0hfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1RBVElPTl8wIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1RBVElPTl8xODAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJPVEFUSU9OXzI3MCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9UQVRJT05fOTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ1VSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVJBQ0VfRlJPWkVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUkZBQ0VfQkxVUl9GUkVFWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVJGQUNFX0RJVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VSRkFDRV9GUk9aRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUkZBQ0VfSElEREVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdXJmYWNlLk91dE9mUmVzb3VyY2VzRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlLk91dE9mUmVzb3VyY2VzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3VyZmFjZUhvbGRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZENhbGxiYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXIuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VyZmFjZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdXJmYWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VyZmFjZUZyYW1lIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDcmVhdGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrQ2FudmFzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrQ2FudmFzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlydHkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVDYWxsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyLkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpeGVkU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9ybWF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZWVwU2NyZWVuT24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjcmVlbk9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpemVGcm9tTGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmxvY2tDYW52YXNBbmRQb3N0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU1VSRkFDRV9UWVBFX0dQVSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVJGQUNFX1RZUEVfSEFSRFdBUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VSRkFDRV9UWVBFX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VSRkFDRV9UWVBFX1BVU0hfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTdXJmYWNlSG9sZGVyLkJhZFN1cmZhY2VUeXBlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdXJmYWNlSG9sZGVyLkJhZFN1cmZhY2VUeXBlRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyLkJhZFN1cmZhY2VUeXBlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3VyZmFjZUhvbGRlci5CYWRTdXJmYWNlVHlwZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlci5CYWRTdXJmYWNlVHlwZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3VyZmFjZUhvbGRlci5DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ic3VyZmFjZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvbGRlciIgdHlwZT0iYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXJmYWNlQ3JlYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXJmYWNlRGVzdHJveWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTdXJmYWNlVmlldyIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1cmZhY2VWaWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdXJmYWNlVmlldyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZVZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1cmZhY2VWaWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdhdGhlclRyYW5zcGFyZW50UmVnaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVnaW9uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb2xkZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRaT3JkZXJNZWRpYU92ZXJsYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc01lZGlhT3ZlcmxheSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRaT3JkZXJPblRvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uVG9wIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRvdWNoRGVsZWdhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRvdWNoRGVsZWdhdGUiCisgdHlwZT0iYW5kcm9pZC52aWV3LlRvdWNoRGVsZWdhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJib3VuZHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsZWdhdGVWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQk9WRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkVMT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmVsb2NpdHlUcmFja2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRNb3ZlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVDdXJyZW50VmVsb2NpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVDdXJyZW50VmVsb2NpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhWZWxvY2l0eSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WFZlbG9jaXR5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WFZlbG9jaXR5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WVZlbG9jaXR5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WVZlbG9jaXR5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZlbG9jaXR5VHJhY2tlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY3ljbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50U291cmNlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LktleUV2ZW50LkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXciCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXciCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRGb2N1c2FibGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld3MiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC52aWV3LlZpZXcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRGb2N1c2FibGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld3MiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC52aWV3LlZpZXcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNhYmxlTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRvdWNoYWJsZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLnZpZXcuVmlldyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdha2VuU2Nyb2xsQmFycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdha2VuU2Nyb2xsQmFycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0RGVsYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FrZW5TY3JvbGxCYXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREZWxheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnZhbGlkYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJyaW5nVG9Gcm9udCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVpbGREcmF3aW5nQ2FjaGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkRHJhd2luZ0NhY2hlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b1NjYWxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbExvbmdQcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tJbnB1dENvbm5lY3Rpb25Qcm94eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyQW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckZvY3VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlSG9yaXpvbnRhbFNjcm9sbEV4dGVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlSG9yaXpvbnRhbFNjcm9sbE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlSG9yaXpvbnRhbFNjcm9sbFJhbmdlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVTY3JvbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVWZXJ0aWNhbFNjcm9sbEV4dGVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlVmVydGljYWxTY3JvbGxPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZVZlcnRpY2FsU2Nyb2xsUmFuZ2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzdHJveURyYXdpbmdDYWNoZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hDb25maWd1cmF0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoRGlzcGxheUhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hEcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleUV2ZW50UHJlSW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleVNob3J0Y3V0RXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoUG9wdWxhdGVBY2Nlc3NpYmlsaXR5RXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoUmVzdG9yZUluc3RhbmNlU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250YWluZXIiIHR5cGU9ImFuZHJvaWQudXRpbC5TcGFyc2VBcnJheSZsdDthbmRyb2lkLm9zLlBhcmNlbGFibGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoU2F2ZUluc3RhbmNlU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250YWluZXIiIHR5cGU9ImFuZHJvaWQudXRpbC5TcGFyc2VBcnJheSZsdDthbmRyb2lkLm9zLlBhcmNlbGFibGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoU2V0UHJlc3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZXNzZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hTZXRTZWxlY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hUcmFja2JhbGxFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hVbmhhbmRsZWRNb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNlZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoVmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkVmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2liaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFdpbmRvd0ZvY3VzQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc0ZvY3VzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoV2luZG93VmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd2FibGVTdGF0ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRGb2N1cyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRWaWV3QnlJZCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFZpZXdXaXRoVGFnIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpdFN5c3RlbVdpbmRvd3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnNldHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c1NlYXJjaCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JjZUxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5pbWF0aW9uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25XaW5kb3dUb2tlbiIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYWNrZ3JvdW5kIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlbGluZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b21GYWRpbmdFZGdlU3RyZW5ndGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b21QYWRkaW5nT2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dE1lbnVJbmZvIgorIHJldHVybj0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51LkNvbnRleHRNZW51SW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGVTdGF0ZSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2luZ0NhY2hlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2luZ0NhY2hlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9TY2FsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3aW5nQ2FjaGVCYWNrZ3JvdW5kQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2luZ0NhY2hlUXVhbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3aW5nUmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3aW5nVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNhYmxlcyIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC52aWV3LlZpZXcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb2N1c2VkUmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHbG9iYWxWaXNpYmxlUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2xvYmFsT2Zmc2V0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbFZpc2libGVSZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGFuZGxlciIKKyByZXR1cm49ImFuZHJvaWQub3MuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIaXRSZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0UmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxGYWRpbmdFZGdlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2VlcFNjcmVlbk9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlEaXNwYXRjaGVyU3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuRGlzcGF0Y2hlclN0YXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExheW91dFBhcmFtcyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlZnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZWZ0RmFkaW5nRWRnZVN0cmVuZ3RoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVmdFBhZGRpbmdPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxWaXNpYmxlUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0aW9uSW5XaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYXRpb25PblNjcmVlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZWFzdXJlZEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1lYXN1cmVkV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXh0Rm9jdXNEb3duSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dEZvY3VzTGVmdElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRGb2N1c1JpZ2h0SWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dEZvY3VzVXBJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPbkZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldy5PbkZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFkZGluZ0JvdHRvbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWRkaW5nTGVmdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWRkaW5nUmlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFkZGluZ1RvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlld1BhcmVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmlnaHRGYWRpbmdFZGdlU3RyZW5ndGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSaWdodFBhZGRpbmdPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um9vdFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY3JvbGxCYXJTdHlsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY3JvbGxYIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsWSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvbGlkQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VnZ2VzdGVkTWluaW11bUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWdnZXN0ZWRNaW5pbXVtV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFnIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3BGYWRpbmdFZGdlU3RyZW5ndGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3BQYWRkaW5nT2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvdWNoRGVsZWdhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVG91Y2hEZWxlZ2F0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3VjaGFibGVzIgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLnZpZXcuVmlldyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVydGljYWxGYWRpbmdFZGdlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vmlld1RyZWVPYnNlcnZlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpc2liaWxpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaW5kb3dBdHRhY2hDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaW5kb3dUb2tlbiIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaW5kb3dWaXNpYmlsaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvd1Zpc2libGVEaXNwbGF5RnJhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRSZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0ZvY3VzYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzV2luZG93Rm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm9vdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0aWFsaXplRmFkaW5nRWRnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0aWFsaXplU2Nyb2xsYmFycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlydHkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2xpY2thYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RyYXdpbmdDYWNoZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRHVwbGljYXRlUGFyZW50U3RhdGVFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRm9jdXNhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRm9jdXNhYmxlSW5Ub3VjaE1vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGb2N1c2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hhcHRpY0ZlZWRiYWNrRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIb3Jpem9udGFsRmFkaW5nRWRnZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSG9yaXpvbnRhbFNjcm9sbEJhckVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5FZGl0TW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJblRvdWNoTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYXlvdXRSZXF1ZXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG9uZ0NsaWNrYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGFxdWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFkZGluZ09mZnNldFJlcXVpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ByZXNzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2F2ZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2Nyb2xsYmFyRmFkaW5nRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZWxlY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTb3VuZEVmZmVjdHNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZlcnRpY2FsRmFkaW5nRWRnZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmVydGljYWxTY3JvbGxCYXJFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZWFzdXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aE1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodE1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWVyZ2VEcmF3YWJsZVN0YXRlcyIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VTdGF0ZSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZGl0aW9uYWxTdGF0ZSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0TGVmdEFuZFJpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0VG9wQW5kQm90dG9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BbmltYXRpb25FbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQW5pbWF0aW9uU3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXR0YWNoZWRUb1dpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DaGVja0lzVGV4dEVkaXRvciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25maWd1cmF0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVEcmF3YWJsZVN0YXRlIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhU3BhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZUlucHV0Q29ubmVjdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dEF0dHJzIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRldGFjaGVkRnJvbVdpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNwbGF5SGludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhpbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRHJhd1Njcm9sbEJhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GaW5pc2hJbmZsYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbmlzaFRlbXBvcmFyeURldGFjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Gb2N1c0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJnYWluRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmV2aW91c2x5Rm9jdXNlZFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleURvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlMb25nUHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlNdWx0aXBsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVByZUltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVNob3J0Y3V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5VXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lYXN1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aE1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodE1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNjcm9sbENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGR0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZXRBbHBoYSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TaXplQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGR3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0VGVtcG9yYXJ5RGV0YWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRvdWNoRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVHJhY2tiYWxsRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkVmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2liaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbldpbmRvd0ZvY3VzQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc1dpbmRvd0ZvY3VzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uV2luZG93VmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUNsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtSGFwdGljRmVlZGJhY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWVkYmFja0NvbnN0YW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUhhcHRpY0ZlZWRiYWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVlZGJhY2tDb25zdGFudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1Mb25nQ2xpY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsYXlTb3VuZEVmZmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdW5kQ29uc3RhbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdERlbGF5ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXlNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEludmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc3RJbnZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEludmFsaWRhdGVEZWxheWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXlNaWxsaXNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEludmFsaWRhdGVEZWxheWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXlNaWxsaXNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZnJlc2hEcmF3YWJsZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVDYWxsYmFja3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Rm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdEZvY3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Rm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJldmlvdXNseUZvY3VzZWRSZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdEZvY3VzRnJvbVRvdWNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RMYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RSZWN0YW5nbGVPblNjcmVlbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3RhbmdsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RSZWN0YW5nbGVPblNjcmVlbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3RhbmdsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbW1lZGlhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZVNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZWFzdXJlU3BlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVIaWVyYXJjaHlTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRhaW5lciIgdHlwZT0iYW5kcm9pZC51dGlsLlNwYXJzZUFycmF5Jmx0O2FuZHJvaWQub3MuUGFyY2VsYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZUhpZXJhcmNoeVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkmbHQ7YW5kcm9pZC5vcy5QYXJjZWxhYmxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2Nyb2xsQnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY3JvbGxUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRBY2Nlc3NpYmlsaXR5RXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQWNjZXNzaWJpbGl0eUV2ZW50VW5jaGVja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbmltYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJhY2tncm91bmRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmFja2dyb3VuZERyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCYWNrZ3JvdW5kUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsaWNrYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsaWNrYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50RGVzY3JpcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50RGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJhd2luZ0NhY2hlQmFja2dyb3VuZENvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcmF3aW5nQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcmF3aW5nQ2FjaGVRdWFsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldER1cGxpY2F0ZVBhcmVudFN0YXRlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmFkaW5nRWRnZUxlbmd0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvY3VzYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb2N1c2FibGVJblRvdWNoTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzYWJsZUluVG91Y2hNb2RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhhcHRpY0ZlZWRiYWNrRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhcHRpY0ZlZWRiYWNrRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb3Jpem9udGFsRmFkaW5nRWRnZUVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3Jpem9udGFsRmFkaW5nRWRnZUVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SG9yaXpvbnRhbFNjcm9sbEJhckVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3Jpem9udGFsU2Nyb2xsQmFyRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2VlcFNjcmVlbk9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcFNjcmVlbk9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExheW91dFBhcmFtcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9uZ0NsaWNrYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvbmdDbGlja2FibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVhc3VyZWREaW1lbnNpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVkV2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZWRIZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5pbXVtSGVpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluSGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluaW11bVdpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluV2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0Rm9jdXNEb3duSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0Rm9jdXNEb3duSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0Rm9jdXNMZWZ0SWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0Rm9jdXNMZWZ0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0Rm9jdXNSaWdodElkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV4dEZvY3VzUmlnaHRJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5leHRGb2N1c1VwSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0Rm9jdXNVcElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DbGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ3JlYXRlQ29udGV4dE1lbnVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ3JlYXRlQ29udGV4dE1lbnVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldy5PbkZvY3VzQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25LZXlMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uS2V5TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25Mb25nQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uTG9uZ0NsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25Ub3VjaExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXcuT25Ub3VjaExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhZGRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmVzc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlc3NlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTYXZlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Nyb2xsQmFyU3R5bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjcm9sbENvbnRhaW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU2Nyb2xsQ29udGFpbmVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjcm9sbGJhckZhZGluZ0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWRlU2Nyb2xsYmFycyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvdW5kRWZmZWN0c0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VuZEVmZmVjdHNFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUYWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvdWNoRGVsZWdhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWxlZ2F0ZSIgdHlwZT0iYW5kcm9pZC52aWV3LlRvdWNoRGVsZWdhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVydGljYWxGYWRpbmdFZGdlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsRmFkaW5nRWRnZUVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVydGljYWxTY3JvbGxCYXJFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVydGljYWxTY3JvbGxCYXJFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpc2liaWxpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2lsbE5vdENhY2hlRHJhd2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpbGxOb3RDYWNoZURyYXdpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2lsbE5vdERyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWxsTm90RHJhdyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93Q29udGV4dE1lbnUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5RHJhd2FibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2lsbE5vdENhY2hlRHJhd2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2lsbE5vdERyYXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRFJBV0lOR19DQUNIRV9RVUFMSVRZX0FVVE8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRSQVdJTkdfQ0FDSEVfUVVBTElUWV9ISUdIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0ODU3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEUkFXSU5HX0NBQ0hFX1FVQUxJVFlfTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVEX0ZPQ1VTRURfU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfRk9DVVNFRF9TRUxFQ1RFRF9XSU5ET1dfRk9DVVNFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5BQkxFRF9GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVEX0ZPQ1VTRURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfU0VMRUNURURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTQUJMRVNfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU0FCTEVTX1RPVUNIX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTRURfU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTRURfU0VMRUNURURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTRURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0JBQ0tXQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0ZPUldBUkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR09ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFQVElDX0ZFRURCQUNLX0VOQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjg0MzU0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WSVNJQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRUVQX1NDUkVFTl9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY3MTA4ODY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX0lEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9FTkFCTEVEX0ZPQ1VTRURfU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNTRURfRU5BQkxFRF9GT0NVU0VEX1NFTEVDVEVEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX0VOQUJMRURfRk9DVVNFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9FTkFCTEVEX0ZPQ1VTRURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNTRURfRU5BQkxFRF9TRUxFQ1RFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9FTkFCTEVEX1NFTEVDVEVEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX0VOQUJMRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNTRURfRU5BQkxFRF9XSU5ET1dfRk9DVVNFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9GT0NVU0VEX1NFTEVDVEVEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX0ZPQ1VTRURfU0VMRUNURURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNTRURfRk9DVVNFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9GT0NVU0VEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX1NFTEVDVEVEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX1NFTEVDVEVEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JPTExCQVJTX0lOU0lERV9JTlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Nzc3MjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUk9MTEJBUlNfSU5TSURFX09WRVJMQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUk9MTEJBUlNfT1VUU0lERV9JTlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMzMxNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUk9MTEJBUlNfT1VUU0lERV9PVkVSTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM1NTQ0MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTEVDVEVEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT1VORF9FRkZFQ1RTX0VOQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzQyMTc3MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklFV19MT0dfVEFHIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1ZpZXcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklTSUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3LkJhc2VTYXZlZFN0YXRlIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5BYnNTYXZlZFN0YXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3LkJhc2VTYXZlZFN0YXRlIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3LkJhc2VTYXZlZFN0YXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlldy5CYXNlU2F2ZWRTdGF0ZSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldy5CYXNlU2F2ZWRTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1cGVyU3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlldy5NZWFzdXJlU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3Lk1lYXN1cmVTcGVjIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk1lYXN1cmVTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFrZU1lYXN1cmVTcGVjIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZWFzdXJlU3BlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQVRfTU9TVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYQUNUTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDczNzQxODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOU1BFQ0lGSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXcuT25DbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXcuT25DcmVhdGVDb250ZXh0TWVudUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZUNvbnRleHRNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51SW5mbyIgdHlwZT0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51LkNvbnRleHRNZW51SW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXcuT25Gb2N1c0NoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkZvY3VzQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFzRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3Lk9uS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iVmlldy5PbkxvbmdDbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkxvbmdDbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3Lk9uVG91Y2hMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlZpZXdDb25maWd1cmF0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3Q29uZmlndXJhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0NvbmZpZ3VyYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlld0NvbmZpZ3VyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlVGFwVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVkZ2VTbG9wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGYWRpbmdFZGdlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHbG9iYWxBY3Rpb25LZXlUaW1lb3V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEp1bXBUYXBUaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZ1ByZXNzVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heGltdW1EcmF3aW5nQ2FjaGVTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhpbXVtRmxpbmdWZWxvY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluaW11bUZsaW5nVmVsb2NpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZXNzZWRTdGF0ZUR1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkRG91YmxlVGFwU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRFZGdlU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRGYWRpbmdFZGdlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZE1heGltdW1EcmF3aW5nQ2FjaGVTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZE1heGltdW1GbGluZ1ZlbG9jaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZE1pbmltdW1GbGluZ1ZlbG9jaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZFBhZ2luZ1RvdWNoU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRTY3JvbGxCYXJTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZFRvdWNoU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRXaW5kb3dUb3VjaFNsb3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsQmFyRmFkZUR1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsQmFyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsRGVmYXVsdERlbGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsRnJpY3Rpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcFRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3VjaFNsb3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvd1RvdWNoU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Wm9vbUNvbnRyb2xzVGltZW91dCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdEZWJ1ZyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0RlYnVnIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImR1bXBDYXB0dXJlZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEhpZXJhcmNoeVRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRSZWN5Y2xlclRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcEhpZXJhcmNoeVRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFJlY3ljbGVyVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3RGVidWcuUmVjeWNsZXJUcmFjZVR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3RGVidWcuSGllcmFyY2h5VHJhY2VUeXBlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iVFJBQ0VfSElFUkFSQ0hZIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSQUNFX1JFQ1lDTEVSIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuQ2FwdHVyZWRWaWV3UHJvcGVydHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuRXhwb3J0ZWRQcm9wZXJ0eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXdEZWJ1Zy5GbGFnVG9TdHJpbmciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuSGllcmFyY2h5VHJhY2VUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdEZWJ1Zy5IaWVyYXJjaHlUcmFjZVR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlld0RlYnVnLkhpZXJhcmNoeVRyYWNlVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuSW50VG9TdHJpbmciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuUmVjeWNsZXJUcmFjZVR5cGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlld0RlYnVnLlJlY3ljbGVyVHJhY2VUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdEZWJ1Zy5SZWN5Y2xlclRyYWNlVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3R3JvdXAiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXdNYW5hZ2VyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3UGFyZW50Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3R3JvdXAiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3R3JvdXAiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0dyb3VwIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRTdGF0ZXNGcm9tQ2hpbGRyZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkVmlld0luTGF5b3V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFZpZXdJbkxheW91dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJldmVudFJlcXVlc3RMYXlvdXQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXR0YWNoTGF5b3V0QW5pbWF0aW9uUGFyYW1ldGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdHRhY2hWaWV3VG9QYXJlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnJpbmdDaGlsZFRvRnJvbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuQW5pbWF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tMYXlvdXRQYXJhbXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGlsZERyYXdhYmxlU3RhdGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFudXBMYXlvdXRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckNoaWxkRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJEaXNhcHBlYXJpbmdDaGlsZHJlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVidWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXB0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRldGFjaEFsbFZpZXdzRnJvbVBhcmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGV0YWNoVmlld0Zyb21QYXJlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGV0YWNoVmlld0Zyb21QYXJlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRldGFjaFZpZXdzRnJvbVBhcmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hGcmVlemVTZWxmT25seSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRhaW5lciIgdHlwZT0iYW5kcm9pZC51dGlsLlNwYXJzZUFycmF5Jmx0O2FuZHJvaWQub3MuUGFyY2VsYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hTZXRTZWxlY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoVGhhd1NlbGZPbmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkmbHQ7YW5kcm9pZC5vcy5QYXJjZWxhYmxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Q2hpbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdpbmdUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvY3VzU2VhcmNoIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c2FibGVWaWV3QXZhaWxhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2F0aGVyVHJhbnNwYXJlbnRSZWdpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlRGVmYXVsdExheW91dFBhcmFtcyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlTGF5b3V0UGFyYW1zIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlTGF5b3V0UGFyYW1zIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkQXQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkRHJhd2luZ09yZGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZE1lYXN1cmVTcGVjIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFkZGluZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZERpbWVuc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkU3RhdGljVHJhbnNmb3JtYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uVHJhbnNmb3JtYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRWaXNpYmxlUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9pbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVzY2VuZGFudEZvY3VzYWJpbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb2N1c2VkQ2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXRBbmltYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0QW5pbWF0aW9uTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJzaXN0ZW50RHJhd2luZ0NhY2hlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2ZDaGlsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVDaGlsZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJ0eSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVDaGlsZEluUGFyZW50IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdQYXJlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlydHkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fsd2F5c0RyYXduV2l0aENhY2hlRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbmltYXRpb25DYWNoZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hpbGRyZW5EcmF3aW5nT3JkZXJFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NoaWxkcmVuRHJhd25XaXRoQ2FjaGVFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZWFzdXJlQ2hpbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudFdpZHRoTWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50SGVpZ2h0TWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZWFzdXJlQ2hpbGRXaXRoTWFyZ2lucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50V2lkdGhNZWFzdXJlU3BlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aFVzZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50SGVpZ2h0TWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0VXNlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lYXN1cmVDaGlsZHJlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoTWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0TWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXREZXNjZW5kYW50UmVjdFRvTXlDb29yZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NlbmRhbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0UmVjdEludG9EZXNjZW5kYW50Q29vcmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXNjZW5kYW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSW50ZXJjZXB0VG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5nZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlcXVlc3RGb2N1c0luRGVzY2VuZGFudHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJldmlvdXNseUZvY3VzZWRSZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjb21wdXRlVmlld0F0dHJpYnV0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsVmlld3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbFZpZXdzSW5MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZURldGFjaGVkVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmlld0F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVWaWV3SW5MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVWaWV3cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmlld3NJbkxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdENoaWxkRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RDaGlsZFJlY3RhbmdsZU9uU2NyZWVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0YW5nbGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1tZWRpYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3REaXNhbGxvd0ludGVyY2VwdFRvdWNoRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNhbGxvd0ludGVyY2VwdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0VHJhbnNwYXJlbnRSZWdpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVMYXlvdXRBbmltYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkZFN0YXRlc0Zyb21DaGlsZHJlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHNTdGF0ZXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWx3YXlzRHJhd25XaXRoQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWx3YXlzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFuaW1hdGlvbkNhY2hlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hpbGRyZW5EcmF3aW5nQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGlsZHJlbkRyYXdpbmdPcmRlckVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoaWxkcmVuRHJhd25XaXRoQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDbGlwQ2hpbGRyZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGlwQ2hpbGRyZW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xpcFRvUGFkZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsaXBUb1BhZGRpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVzY2VuZGFudEZvY3VzYWJpbGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzYWJpbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExheW91dEFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRyb2xsZXIiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXlvdXRBbmltYXRpb25MaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuaW1hdGlvbkxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkhpZXJhcmNoeUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuT25IaWVyYXJjaHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQZXJzaXN0ZW50RHJhd2luZ0NhY2hlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2luZ0NhY2hlVG9LZWVwIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGljVHJhbnNmb3JtYXRpb25zRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd0NvbnRleHRNZW51Rm9yQ2hpbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW5hbFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0TGF5b3V0QW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVWaWV3TGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDTElQX1RPX1BBRERJTkdfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0FGVEVSX0RFU0NFTkRBTlRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYyMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0JFRk9SRV9ERVNDRU5EQU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzMTA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19CTE9DS19ERVNDRU5EQU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM5MzIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTSVNURU5UX0FMTF9DQUNIRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBFUlNJU1RFTlRfQU5JTUFUSU9OX0NBQ0hFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTSVNURU5UX05PX0NBQ0hFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTSVNURU5UX1NDUk9MTElOR19DQUNIRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InNldEJhc2VBdHRyaWJ1dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aEF0dHIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0QXR0ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRklMTF9QQVJFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX1BBUkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSQVBfQ09OVEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRBbmltYXRpb25QYXJhbWV0ZXJzIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlci5BbmltYXRpb25QYXJhbWV0ZXJzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0TWFyZ2lucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYm90dG9tTWFyZ2luIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxlZnRNYXJnaW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmlnaHRNYXJnaW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9wTWFyZ2luIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVmlld0dyb3VwLk9uSGllcmFyY2h5Q2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ2hpbGRWaWV3QWRkZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNoaWxkVmlld1JlbW92ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXdNYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlVmlld0xheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3UGFyZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYnJpbmdDaGlsZFRvRnJvbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGlsZERyYXdhYmxlU3RhdGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJDaGlsZEZvY3VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5Db250ZXh0TWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c1NlYXJjaCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c2FibGVWaWV3QXZhaWxhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZFZpc2libGVSZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmVudCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3UGFyZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZUNoaWxkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlQ2hpbGRJblBhcmVudCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3UGFyZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGF5b3V0UmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY29tcHV0ZVZpZXdBdHRyaWJ1dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdENoaWxkRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNlZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdENoaWxkUmVjdGFuZ2xlT25TY3JlZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdGFuZ2xlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltbWVkaWF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0RGlzYWxsb3dJbnRlcmNlcHRUb3VjaEV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNhbGxvd0ludGVyY2VwdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0TGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RUcmFuc3BhcmVudFJlZ2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dDb250ZXh0TWVudUZvckNoaWxkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW5hbFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJWaWV3U3R1YiIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld1N0dWIiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdTdHViIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdTdHViIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3U3R1YiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXRSZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3U3R1YiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1N0dWIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdTdHViIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3U3R1YiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluZmxhdGVkSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0UmVzb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZmxhdGVkSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZsYXRlZElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGF5b3V0UmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXRSZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSW5mbGF0ZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbGF0ZUxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1N0dWIuT25JbmZsYXRlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXdTdHViLk9uSW5mbGF0ZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkluZmxhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0dWIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3U3R1YiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbGF0ZWQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJWaWV3VHJlZU9ic2VydmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRPbkdsb2JhbEZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxGb2N1c0NoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZE9uR2xvYmFsTGF5b3V0TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxMYXlvdXRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPblByZURyYXdMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblByZURyYXdMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPblNjcm9sbENoYW5nZWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblNjcm9sbENoYW5nZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPblRvdWNoTW9kZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyLk9uVG91Y2hNb2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hPbkdsb2JhbExheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaE9uUHJlRHJhdyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FsaXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVHbG9iYWxPbkxheW91dExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmljdGltIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5Pbkdsb2JhbExheW91dExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU9uR2xvYmFsRm9jdXNDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpY3RpbSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxGb2N1c0NoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU9uUHJlRHJhd0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmljdGltIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblByZURyYXdMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVPblNjcm9sbENoYW5nZWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpY3RpbSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25TY3JvbGxDaGFuZ2VkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlT25Ub3VjaE1vZGVDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpY3RpbSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25Ub3VjaE1vZGVDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVmlld1RyZWVPYnNlcnZlci5Pbkdsb2JhbEZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uR2xvYmFsRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRGb2N1cyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0ZvY3VzIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxMYXlvdXRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25HbG9iYWxMYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3VHJlZU9ic2VydmVyLk9uUHJlRHJhd0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblByZURyYXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3VHJlZU9ic2VydmVyLk9uU2Nyb2xsQ2hhbmdlZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblNjcm9sbENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3VHJlZU9ic2VydmVyLk9uVG91Y2hNb2RlQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hNb2RlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJblRvdWNoTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iV2luZG93IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRmxhZ3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyRmxhZ3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlQWxsUGFuZWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlUGFuZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRWaWV3QnlJZCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYWxsYmFjayIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3cuQ2FsbGJhY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250YWluZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuV2luZG93IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudEZvY3VzIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNvclZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9yY2VkV2luZG93RmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXRJbmZsYXRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsRmVhdHVyZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWb2x1bWVDb250cm9sU3RyZWFtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2luZG93TWFuYWdlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvd1N0eWxlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ2hpbGRyZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU29mdElucHV0TW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FjdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Zsb2F0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hvcnRjdXRLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlQWN0aXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWN0aXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ29uZmlndXJhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5QYW5lbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla0RlY29yVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUNvbnRleHRNZW51SWRlbnRpZmllckFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtUGFuZWxJZGVudGlmaWVyQWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtUGFuZWxTaG9ydGN1dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVIaWVyYXJjaHlTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZWRJbnN0YW5jZVN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlSGllcmFyY2h5U3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmFja2dyb3VuZERyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCYWNrZ3JvdW5kRHJhd2FibGVSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FsbGJhY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvdy5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGlsZERyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hpbGRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRhaW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRhaW5lciIgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvdyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0UmVzSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRXaW5kb3dGb3JtYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGVBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZURyYXdhYmxlUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmVEcmF3YWJsZVVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmVJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsYWdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29mdElucHV0TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaXRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGVDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dENvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWb2x1bWVDb250cm9sU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1UeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2luZG93QW5pbWF0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2luZG93TWFuYWdlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndtIiB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwVG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBlckRpc3BhdGNoS2V5RXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwZXJEaXNwYXRjaFRvdWNoRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwZXJEaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2VLZXlFdmVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdldCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVQYW5lbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX0ZFQVRVUkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9DT05URVhUX01FTlUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfQ1VTVE9NX1RJVExFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfTEVGVF9JQ09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX05PX1RJVExFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX09QVElPTlNfUEFORUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfUFJPR1JFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfUklHSFRfSUNPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSURfQU5EUk9JRF9DT05URU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPR1JFU1NfRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPR1JFU1NfSU5ERVRFUk1JTkFURV9PRkYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9HUkVTU19JTkRFVEVSTUlOQVRFX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPR1JFU1NfU0VDT05EQVJZX0VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST0dSRVNTX1NFQ09OREFSWV9TVEFSVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST0dSRVNTX1NUQVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9HUkVTU19WSVNJQklMSVRZX09GRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST0dSRVNTX1ZJU0lCSUxJVFlfT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IldpbmRvdy5DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hLZXlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFBvcHVsYXRlQWNjZXNzaWJpbGl0eUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXR0YWNoZWRUb1dpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbnRlbnRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlUGFuZWxNZW51IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVQYW5lbFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRldGFjaGVkRnJvbVdpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lbnVJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25NZW51T3BlbmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QYW5lbENsb3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJlcGFyZVBhbmVsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VhcmNoUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uV2luZG93QXR0cmlidXRlc0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25XaW5kb3dGb2N1c0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc0ZvY3VzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iV2luZG93TWFuYWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlld01hbmFnZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0RGlzcGxheSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5EaXNwbGF5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmlld0ltbWVkaWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IldpbmRvd01hbmFnZXIuQmFkVG9rZW5FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvd01hbmFnZXIuQmFkVG9rZW5FeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuQmFkVG9rZW5FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXaW5kb3dNYW5hZ2VyLkJhZFRva2VuRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkJhZFRva2VuRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iX3R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iX3R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iX2ZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Il90eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Il9mbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJfZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJfdHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJfZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iX2Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieHBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5cG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Il90eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Il9mbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJfZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvcHlGcm9tIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWJ1ZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpdGxlIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heVVzZUlucHV0TWV0aG9kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsYWJsZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTFBIQV9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFOSU1BVElPTl9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJJR0hUTkVTU19PVkVSUklERV9GVUxMIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxLjBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJSSUdIVE5FU1NfT1ZFUlJJREVfTk9ORSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJJR0hUTkVTU19PVkVSUklERV9PRkYiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESU1fQU1PVU5UX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSVJTVF9BUFBMSUNBVElPTl9XSU5ET1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJUlNUX1NVQl9XSU5ET1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJUlNUX1NZU1RFTV9XSU5ET1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdTX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxMT1dfTE9DS19XSElMRV9TQ1JFRU5fT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzMTA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0JMVVJfQkVISU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0RJTV9CRUhJTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRElTTUlTU19LRVlHVUFSRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxOTQzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19ESVRIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRk9SQ0VfTk9UX0ZVTExTQ1JFRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRlVMTFNDUkVFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19JR05PUkVfQ0hFRUtfUFJFU1NFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfS0VFUF9TQ1JFRU5fT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19MQVlPVVRfSU5TRVRfREVDT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0xBWU9VVF9JTl9TQ1JFRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19MQVlPVVRfTk9fTElNSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfTk9UX0ZPQ1VTQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19OT1RfVE9VQ0hBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19OT1RfVE9VQ0hfTU9EQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NDQUxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfU0VDVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NIT1dfV0FMTFBBUEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0ODU3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NIT1dfV0hFTl9MT0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19UT1VDSEFCTEVfV0hFTl9XQUtJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1RVUk5fU0NSRUVOX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA5NzE1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1dBVENIX09VVFNJREVfVE9VQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjIxNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBU1RfQVBQTElDQVRJT05fV0lORE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFTVF9TVUJfV0lORE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTk5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVNUX1NZU1RFTV9XSU5ET1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBWU9VVF9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRU1PUllfVFlQRV9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FTU9SWV9UWVBFX0dQVSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRU1PUllfVFlQRV9IQVJEV0FSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRU1PUllfVFlQRV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FTU9SWV9UWVBFX1BVU0hfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX0JSSUdIVE5FU1NfQ0hBTkdFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX09SSUVOVEFUSU9OX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfQURKVVNUX1BBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfQURKVVNUX1JFU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfQURKVVNUX1VOU1BFQ0lGSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT0ZUX0lOUFVUX0lTX0ZPUldBUkRfTkFWSUdBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT0ZUX0lOUFVUX01BU0tfQURKVVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfTUFTS19TVEFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfTU9ERV9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfU1RBVEVfQUxXQVlTX0hJRERFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09GVF9JTlBVVF9TVEFURV9BTFdBWVNfVklTSUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09GVF9JTlBVVF9TVEFURV9ISURERU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfU1RBVEVfVU5DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT0ZUX0lOUFVUX1NUQVRFX1VOU1BFQ0lGSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT0ZUX0lOUFVUX1NUQVRFX1ZJU0lCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJVExFX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0FQUExJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0FQUExJQ0FUSU9OX0FUVEFDSEVEX0RJQUxPRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BUFBMSUNBVElPTl9NRURJQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BUFBMSUNBVElPTl9QQU5FTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BUFBMSUNBVElPTl9TVEFSVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BUFBMSUNBVElPTl9TVUJfUEFORUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQkFTRV9BUFBMSUNBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0lOUFVUX01FVEhPRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9JTlBVVF9NRVRIT0RfRElBTE9HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0tFWUdVQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0tFWUdVQVJEX0RJQUxPRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9QSE9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9QUklPUklUWV9QSE9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TRUFSQ0hfQkFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1NUQVRVU19CQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU1RBVFVTX0JBUl9QQU5FTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TWVNURU1fQUxFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU1lTVEVNX0RJQUxPRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TWVNURU1fRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU1lTVEVNX09WRVJMQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVE9BU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV0FMTFBBUEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbHBoYSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvbkJyaWdodG5lc3MiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkaW1BbW91bnQiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmb3JtYXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJob3Jpem9udGFsTWFyZ2luIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaG9yaXpvbnRhbFdlaWdodCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1lbW9yeVR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2FnZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcmVlbkJyaWdodG5lc3MiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JlZW5PcmllbnRhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzb2Z0SW5wdXRNb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRva2VuIgorIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmVydGljYWxNYXJnaW4iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJ0aWNhbFdlaWdodCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0FuaW1hdGlvbnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5IgorPgorPGNsYXNzIG5hbWU9IkFjY2Vzc2liaWxpdHlFdmVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWRkZWRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCZWZvcmVUZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGFzc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudEl0ZW1JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmVudFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZW50VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGcm9tSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJjZWxhYmxlRGF0YSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdmVkQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5DaGFyU2VxdWVuY2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NoZWNrZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGdWxsU2NyZWVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Bhc3N3b3JkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjeWNsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRkZWRDb3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZGVkQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCZWZvcmVUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVmb3JlVGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGVja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNDaGVja2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsYXNzTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50RGVzY3JpcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50RGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3VycmVudEl0ZW1JbmRleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbnRJdGVtSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV2ZW50VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFdmVudFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGcm9tSW5kZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGdWxsU2NyZWVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNGdWxsU2NyZWVuIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEl0ZW1Db3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1Db3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhY2thZ2VOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyY2VsYWJsZURhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNQYXNzd29yZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZW1vdmVkQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdmVkQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WQUxJRF9QT1NJVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9URVhUX0xFTkdUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFU19BTExfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTk9USUZJQ0FUSU9OX1NUQVRFX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1ZJRVdfQ0xJQ0tFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9WSUVXX0ZPQ1VTRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVklFV19MT05HX0NMSUNLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVklFV19TRUxFQ1RFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9WSUVXX1RFWFRfQ0hBTkdFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV0lORE9XX1NUQVRFX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkFjY2Vzc2liaWxpdHlFdmVudFNvdXJjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InNlbmRBY2Nlc3NpYmlsaXR5RXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRBY2Nlc3NpYmlsaXR5RXZlbnRVbmNoZWNrZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkFjY2Vzc2liaWxpdHlNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBY2Nlc3NpYmlsaXR5U2VydmljZUxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVycnVwdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQWNjZXNzaWJpbGl0eUV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudmlldy5hbmltYXRpb24iCis+Cis8Y2xhc3MgbmFtZT0iQWNjZWxlcmF0ZURlY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY2VsZXJhdGVEZWNlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQWNjZWxlcmF0ZURlY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NlbGVyYXRlRGVjZWxlcmF0ZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFjY2VsZXJhdGVEZWNlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWNjZWxlcmF0ZUludGVycG9sYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZWxlcmF0ZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFjY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQWNjZWxlcmF0ZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BY2NlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxwaGFBbmltYXRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbHBoYUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFscGhhQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbHBoYUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFscGhhQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbUFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9BbHBoYSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbmltYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseVRyYW5zZm9ybWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJwb2xhdGVkVGltZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uVHJhbnNmb3JtYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlRHVyYXRpb25IaW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnN1cmVJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERldGFjaFdhbGxwYXBlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHVyYXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGxBZnRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsbEJlZm9yZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdG9yIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVwZWF0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVwZWF0TW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGFydE9mZnNldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRUaW1lIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2Zvcm1hdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbnRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRUcmFuc2Zvcm1hdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5UcmFuc2Zvcm1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRaQWRqdXN0bWVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNFbmRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3RhcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdGlhbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRIZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpbGxFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luaXRpYWxpemVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZVNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50U2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RyaWN0RHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbk1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2FsZUN1cnJlbnREdXJhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbmltYXRpb25MaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZXRhY2hXYWxscGFwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhY2hXYWxscGFwZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbk1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWxsQWZ0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxsQWZ0ZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsbEJlZm9yZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxCZWZvcmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsbEVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxsRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXBlYXRDb3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVwZWF0TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdE1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFydE9mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0T2Zmc2V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXJ0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0VGltZU1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRaQWRqdXN0bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InpBZGp1c3RtZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0Tm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aWxsQ2hhbmdlQm91bmRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aWxsQ2hhbmdlVHJhbnNmb3JtYXRpb25NYXRyaXgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUJTT0xVVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklORklOSVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVMQVRJVkVfVE9fUEFSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUxBVElWRV9UT19TRUxGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNUQVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9PTl9GSVJTVF9GUkFNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlpPUkRFUl9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJaT1JERVJfTk9STUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJaT1JERVJfVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BbmltYXRpb25FbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuaW1hdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BbmltYXRpb25SZXBlYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuaW1hdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BbmltYXRpb25TdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQW5pbWF0aW9uLkRlc2NyaXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuaW1hdGlvbi5EZXNjcmlwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbi5EZXNjcmlwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9InR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmFsdWUiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5pbWF0aW9uU2V0IgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5pbWF0aW9uU2V0IgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmltYXRpb25TZXQiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb25TZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFyZUludGVycG9sYXRvciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuaW1hdGlvbnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5pbWF0aW9uVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuaW1hdGlvblV0aWxzIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uVXRpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3VycmVudEFuaW1hdGlvblRpbWVNaWxsaXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkTGF5b3V0QW5pbWF0aW9uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1ha2VJbkFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tTGVmdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlSW5DaGlsZEJvdHRvbUFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1ha2VPdXRBbmltYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9SaWdodCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbnRpY2lwYXRlSW50ZXJwb2xhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uSW50ZXJwb2xhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbnRpY2lwYXRlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW50aWNpcGF0ZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uSW50ZXJwb2xhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW50aWNpcGF0ZU92ZXJzaG9vdEludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVPdmVyc2hvb3RJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVPdmVyc2hvb3RJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhVGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVPdmVyc2hvb3RJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCb3VuY2VJbnRlcnBvbGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvdW5jZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkJvdW5jZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvdW5jZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkJvdW5jZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVycG9sYXRpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3ljbGVJbnRlcnBvbGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkN5Y2xlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQ3ljbGVJbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjeWNsZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDeWNsZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkN5Y2xlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVjZWxlcmF0ZUludGVycG9sYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVjZWxlcmF0ZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkRlY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWNlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uRGVjZWxlcmF0ZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5EZWNlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR3JpZExheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3JpZExheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5HcmlkTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3JpZExheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5HcmlkTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuaW1hdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyaWRMYXlvdXRBbmltYXRpb25Db250cm9sbGVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uR3JpZExheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5EZWxheSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvd0RlbGF5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbkRlbGF5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlyZWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpcmVjdGlvblByaW9yaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJvd0RlbGF5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uRGVsYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5EZWxheSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlyZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlyZWN0aW9uUHJpb3JpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb25Qcmlvcml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvd0RlbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93RGVsYXkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OX0JPVFRPTV9UT19UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9IT1JJWk9OVEFMX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9MRUZUX1RPX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05fUklHSFRfVE9fTEVGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OX1RPUF9UT19CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9WRVJUSUNBTF9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUklPUklUWV9DT0xVTU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSU9SSVRZX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSU9SSVRZX1JPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdyaWRMYXlvdXRBbmltYXRpb25Db250cm9sbGVyLkFuaW1hdGlvblBhcmFtZXRlcnMiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyLkFuaW1hdGlvblBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyaWRMYXlvdXRBbmltYXRpb25Db250cm9sbGVyLkFuaW1hdGlvblBhcmFtZXRlcnMiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5HcmlkTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlci5BbmltYXRpb25QYXJhbWV0ZXJzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iY29sdW1uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbHVtbnNDb3VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm93c0NvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSW50ZXJwb2xhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbmltYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmltYXRpb25Gb3JWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVsYXkiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWxheUZvclZpZXciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmRlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2Zvcm1lZEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlci5BbmltYXRpb25QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRG9uZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbmltYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludGVycG9sYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJwb2xhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJwb2xhdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcmRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpbGxPdmVybGFwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9SREVSX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JERVJfUkFORE9NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUkRFUl9SRVZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1SYW5kb21pemVyIgorIHR5cGU9ImphdmEudXRpbC5SYW5kb20iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlci5BbmltYXRpb25QYXJhbWV0ZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIuQW5pbWF0aW9uUGFyYW1ldGVycyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIuQW5pbWF0aW9uUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImNvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5lYXJJbnRlcnBvbGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxpbmVhckludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxpbmVhckludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVycG9sYXRpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik92ZXJzaG9vdEludGVycG9sYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik92ZXJzaG9vdEludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLk92ZXJzaG9vdEludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVycG9sYXRpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUm90YXRlQW5pbWF0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUm90YXRlQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uUm90YXRlQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSb3RhdGVBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5Sb3RhdGVBbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tRGVncmVlcyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvRGVncmVlcyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvdGF0ZUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlJvdGF0ZUFuaW1hdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21EZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9EZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl2b3RYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl2b3RZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUm90YXRlQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uUm90YXRlQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbURlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b0RlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFhUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpdm90WFZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl2b3RZVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFlWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTY2FsZUFuaW1hdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYWxlQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uU2NhbGVBbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYWxlQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uU2NhbGVBbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21ZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9ZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NhbGVBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5TY2FsZUFuaW1hdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21YIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9YIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2FsZUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlNjYWxlQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpdm90WFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl2b3RYVmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFlUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpdm90WVZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyYW5zZm9ybWF0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zZm9ybWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5UcmFuc2Zvcm1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbHBoYSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1hdHJpeCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRyYW5zZm9ybWF0aW9uVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zZm9ybWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRyYW5zZm9ybWF0aW9uVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zZm9ybWF0aW9uVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU2hvcnRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iVFlQRV9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQk9USCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSURFTlRJVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX01BVFJJWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1BbHBoYSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1NYXRyaXgiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtVHJhbnNmb3JtYXRpb25UeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUcmFuc2xhdGVBbmltYXRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2xhdGVBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5UcmFuc2xhdGVBbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zbGF0ZUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zbGF0ZUFuaW1hdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21YRGVsdGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1hEZWx0YSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21ZRGVsdGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1lEZWx0YSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zbGF0ZUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zbGF0ZUFuaW1hdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21YVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWFZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9YVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1hWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21ZVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWVZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9ZVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1lWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZCIKKz4KKzxjbGFzcyBuYW1lPSJCYXNlSW5wdXRDb25uZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2VJbnB1dENvbm5lY3Rpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkJhc2VJbnB1dENvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnVsbEVkaXRvciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJlZ2luQmF0Y2hFZGl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhck1ldGFLZXlTdGF0ZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21taXRDb21wbGV0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkNvbXBsZXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1pdFRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDdXJzb3JQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZVN1cnJvdW5kaW5nVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnRMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHRMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRCYXRjaEVkaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaENvbXBvc2luZ1RleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvc2luZ1NwYW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wb3NpbmdTcGFuU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJzb3JDYXBzTW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxTW9kZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFZGl0YWJsZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5FZGl0YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYWN0ZWRUZXh0IgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0UmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0QWZ0ZXJDdXJzb3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0QmVmb3JlQ3Vyc29yIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUNvbnRleHRNZW51QWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtRWRpdG9yQWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uQ29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1Qcml2YXRlQ29tbWFuZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQ29tcG9zaW5nU3BhbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBvcnRGdWxsc2NyZWVuTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3NpbmdTcGFucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3NpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q3Vyc29yUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb21wbGV0aW9uSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcGxldGlvbkluZm8iCisgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkNvbXBsZXRpb25JbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbXBsZXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFZGl0b3JJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5JbnB1dFR5cGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFZGl0b3JJbmZvIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX0FDVElPTl9ET05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUVfQUNUSU9OX0dPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUVfQUNUSU9OX05FWFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNRV9BQ1RJT05fTk9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX0FDVElPTl9TRUFSQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNRV9BQ1RJT05fU0VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX0FDVElPTl9VTlNQRUNJRklFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX0ZMQUdfTk9fQUNDRVNTT1JZX0FDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNjg3MDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUVfRkxBR19OT19FTlRFUl9BQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDczNzQxODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNRV9GTEFHX05PX0VYVFJBQ1RfVUkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjg0MzU0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX01BU0tfQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNRV9OVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY3Rpb25JZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY3Rpb25MYWJlbCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZXh0cmFzIgorIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmllbGRJZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWVsZE5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhpbnRUZXh0IgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbWVPcHRpb25zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluaXRpYWxDYXBzTW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbml0aWFsU2VsRW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluaXRpYWxTZWxTdGFydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnB1dFR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFiZWwiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhY2thZ2VOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcml2YXRlSW1lT3B0aW9ucyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV4dHJhY3RlZFRleHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeHRyYWN0ZWRUZXh0IgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NFTEVDVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TSU5HTEVfTElORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFydGlhbEVuZE9mZnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXJ0aWFsU3RhcnRPZmZzZXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0aW9uRW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdGlvblN0YXJ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXJ0T2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHQiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeHRyYWN0ZWRUZXh0UmVxdWVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4dHJhY3RlZFRleHRSZXF1ZXN0IgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0UmVxdWVzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGludE1heENoYXJzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhpbnRNYXhMaW5lcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b2tlbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5wdXRCaW5kaW5nIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dEJpbmRpbmciCisgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0QmluZGluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm5Ub2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklucHV0QmluZGluZyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRCaW5kaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmluZGluZyIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0QmluZGluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvblRva2VuIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBpZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVaWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IklucHV0Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJlZ2luQmF0Y2hFZGl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyTWV0YUtleVN0YXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0Q29tcGxldGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkNvbXBsZXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1pdFRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0N1cnNvclBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlU3Vycm91bmRpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0TGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0TGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kQmF0Y2hFZGl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaENvbXBvc2luZ1RleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yQ2Fwc01vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxTW9kZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYWN0ZWRUZXh0IgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHRSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRBZnRlckN1cnNvciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRCZWZvcmVDdXJzb3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtQ29udGV4dE1lbnVBY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUVkaXRvckFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdG9yQWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybVByaXZhdGVDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcG9ydEZ1bGxzY3JlZW5Nb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRLZXlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3NpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDdXJzb3JQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHRVRfRVhUUkFDVEVEX1RFWFRfTU9OSVRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VUX1RFWFRfV0lUSF9TVFlMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSW5wdXRDb25uZWN0aW9uV3JhcHBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dENvbm5lY3Rpb25XcmFwcGVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb25XcmFwcGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtdXRhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmVnaW5CYXRjaEVkaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyTWV0YUtleVN0YXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1pdENvbXBsZXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuQ29tcGxldGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0VGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0N1cnNvclBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlU3Vycm91bmRpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdExlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodExlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEJhdGNoRWRpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluaXNoQ29tcG9zaW5nVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yQ2Fwc01vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcU1vZGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmFjdGVkVGV4dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRXh0cmFjdGVkVGV4dFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dEFmdGVyQ3Vyc29yIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRCZWZvcmVDdXJzb3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUNvbnRleHRNZW51QWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtRWRpdG9yQWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdG9yQWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybVByaXZhdGVDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBvcnRGdWxsc2NyZWVuTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3NpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q3Vyc29yUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUYXJnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IklucHV0TWV0aG9kIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXR0YWNoVG9rZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaW5kaW5nIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRCaW5kaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2QuU2Vzc2lvbkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZGVTb2Z0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLm9zLlJlc3VsdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RhcnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRDb25uZWN0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldm9rZVNlc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Vzc2lvbkVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd1NvZnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQub3MuUmVzdWx0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRDb25uZWN0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmJpbmRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNFUlZJQ0VfSU5URVJGQUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQudmlldy5JbnB1dE1ldGhvZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVJWSUNFX01FVEFfREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnZpZXcuaW0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19FWFBMSUNJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19GT1JDRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IklucHV0TWV0aG9kLlNlc3Npb25DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ic2Vzc2lvbkNyZWF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IklucHV0TWV0aG9kSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RJbmZvIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RJbmZvIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0dGluZ3NBY3Rpdml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJc0RlZmF1bHRSZXNvdXJjZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2V0dGluZ3NBY3Rpdml0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5wdXRNZXRob2RNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkaXNwbGF5Q29tcGxldGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGxldGlvbnMiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mb1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuYWJsZWRJbnB1dE1ldGhvZExpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dE1ldGhvZExpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWRlU29mdElucHV0RnJvbUlucHV0TWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWRlU29mdElucHV0RnJvbVdpbmRvdyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpbmRvd1Rva2VuIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGlkZVNvZnRJbnB1dEZyb21XaW5kb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3dUb2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5vcy5SZXN1bHRSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWRlU3RhdHVzSWNvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImltZVRva2VuIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBY2NlcHRpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FjdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWN0aXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Z1bGxzY3JlZW5Nb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1dhdGNoaW5nQ3Vyc29yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdGFydElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEFwcFByaXZhdGVDb21tYW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXRNZXRob2QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93SW5wdXRNZXRob2RQaWNrZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dTb2Z0SW5wdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93U29mdElucHV0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLm9zLlJlc3VsdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dTb2Z0SW5wdXRGcm9tSW5wdXRNZXRob2QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dTdGF0dXNJY29uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1lVG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvZ2dsZVNvZnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNob3dGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoaWRlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVTb2Z0SW5wdXRGcm9tV2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2luZG93VG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvd0ZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUN1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVFeHRyYWN0ZWRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuZGlkYXRlc1N0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmRpZGF0ZXNFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkhJREVfSU1QTElDSVRfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElERV9OT1RfQUxXQVlTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfSElEREVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfU0hPV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVF9VTkNIQU5HRURfSElEREVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfVU5DSEFOR0VEX1NIT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSE9XX0ZPUkNFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19JTVBMSUNJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJJbnB1dE1ldGhvZFNlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhcHBQcml2YXRlQ29tbWFuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleUV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24uRXZlbnRDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24uRXZlbnRDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwbGF5Q29tcGxldGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBsZXRpb25zIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuQ29tcGxldGlvbkluZm9bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2hJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVTb2Z0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNob3dGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoaWRlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0N1cnNvciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUV4dHJhY3RlZFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkU2VsU3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkU2VsRW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NlbFN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NlbEVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5kaWRhdGVzU3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuZGlkYXRlc0VuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSW5wdXRNZXRob2RTZXNzaW9uLkV2ZW50Q2FsbGJhY2siCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaGVkRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQud2Via2l0IgorPgorPGNsYXNzIG5hbWU9IkNhY2hlTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYWNoZU1hbmFnZXIiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuQ2FjaGVNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhY2hlRGlzYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kQ2FjaGVUcmFuc2FjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhY2hlRmlsZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LkNhY2hlTWFuYWdlci5DYWNoZVJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FjaGVGaWxlQmFzZURpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVDYWNoZUZpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FjaGVSZXQiIHR5cGU9ImFuZHJvaWQud2Via2l0LkNhY2hlTWFuYWdlci5DYWNoZVJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydENhY2hlVHJhbnNhY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDYWNoZU1hbmFnZXIuQ2FjaGVSZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FjaGVNYW5hZ2VyLkNhY2hlUmVzdWx0IgorIHR5cGU9ImFuZHJvaWQud2Via2l0LkNhY2hlTWFuYWdlci5DYWNoZVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50RGlzcG9zaXRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRMZW5ndGgiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBpcmVzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBpcmVzU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIdHRwU3RhdHVzQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdE1vZGlmaWVkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW1lVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5jb2RpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb25zb2xlTWVzc2FnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29uc29sZU1lc3NhZ2UiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuQ29uc29sZU1lc3NhZ2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2dMZXZlbCIgdHlwZT0iYW5kcm9pZC53ZWJraXQuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZXNzYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZXNzYWdlTGV2ZWwiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic291cmNlSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb29raWVNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY2NlcHRDb29raWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29va2llIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuQ29va2llTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ29va2llcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxDb29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUV4cGlyZWRDb29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVNlc3Npb25Db29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFjY2VwdENvb2tpZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjZXB0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29va2llU3luY01hbmFnZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53ZWJraXQuV2ViU3luY01hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LkNvb2tpZVN5bmNNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5Db29raWVTeW5jTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3luY0Zyb21SYW1Ub0ZsYXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRlU29ydGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlU29ydGVyIgorIHR5cGU9ImFuZHJvaWQud2Via2l0LkRhdGVTb3J0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kYXJ5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJEQVlfQ09VTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRG93bmxvYWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRG93bmxvYWRTdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyQWdlbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnREaXNwb3NpdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWltZXR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRMZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikdlb2xvY2F0aW9uUGVybWlzc2lvbnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VvbG9jYXRpb25QZXJtaXNzaW9ucyIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5HZW9sb2NhdGlvblBlcm1pc3Npb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFsbG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyQWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxvd2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC53ZWJraXQuVmFsdWVDYWxsYmFjayZsdDtqYXZhLmxhbmcuQm9vbGVhbiZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5HZW9sb2NhdGlvblBlcm1pc3Npb25zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZ2lucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5WYWx1ZUNhbGxiYWNrJmx0O2phdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHZW9sb2NhdGlvblBlcm1pc3Npb25zLkNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpbnZva2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxsb3ciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbWVtYmVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJIdHRwQXV0aEhhbmRsZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2VlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VIdHRwQXV0aFVzZXJuYW1lUGFzc3dvcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkpzUHJvbXB0UmVzdWx0IgorIGV4dGVuZHM9ImFuZHJvaWQud2Via2l0LkpzUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbmZpcm0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSnNSZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29uZmlybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWtlVXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtUmVzdWx0IgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWltZVR5cGVNYXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlbnNpb25Gcm9tTWltZVR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW1lVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlRXh0ZW5zaW9uRnJvbVVybCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbWVUeXBlRnJvbUV4dGVuc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dGVuc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaW5nbGV0b24iCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5NaW1lVHlwZU1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0V4dGVuc2lvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dGVuc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNNaW1lVHlwZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBsdWdpbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQbHVnaW4iCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuUGx1Z2luIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaENsaWNrRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDbGlja0hhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQud2Via2l0LlBsdWdpbi5QcmVmZXJlbmNlc0NsaWNrSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZXNjcmlwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsZU5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGx1Z2luLlByZWZlcmVuY2VzQ2xpY2tIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVDbGlja0V2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUGx1Z2luRGF0YSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBsdWdpbkRhdGEiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuUGx1Z2luRGF0YSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZ1tdJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nW10mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBsdWdpbkxpc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGx1Z2luTGlzdCIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5QbHVnaW5MaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUGx1Z2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsdWdpbiIgdHlwZT0iYW5kcm9pZC53ZWJraXQuUGx1Z2luIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwbHVnaW5DbGlja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBsdWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbHVnaW4iIHR5cGU9ImFuZHJvaWQud2Via2l0LlBsdWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGx1Z2luU3R1YiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEVtYmVkZGVkVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Ik5QUCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGdWxsU2NyZWVuVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Ik5QUCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU3NsRXJyb3JIYW5kbGVyIgorIGV4dGVuZHM9ImFuZHJvaWQub3MuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2NlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSTFV0aWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMVXRpbCIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5VUkxVdGlsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBvc2VTZWFyY2hVcmwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluUXVlcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRlbXBsYXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeVBsYWNlSG9sZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imd1ZXNzRmlsZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50RGlzcG9zaXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imd1ZXNzVXJsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fib3V0VXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBc3NldFVybCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29udGVudFVybCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29va2llbGVzc1Byb3h5VXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RhdGFVcmwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpbGVVcmwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0h0dHBVcmwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0h0dHBzVXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNKYXZhU2NyaXB0VXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOZXR3b3JrVXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZFVybCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmlwQW5jaG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlVybEludGVyY2VwdEhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFBsdWdpbkRhdGEiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5QbHVnaW5EYXRhIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXJzIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlcnZpY2UiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5DYWNoZU1hbmFnZXIuQ2FjaGVSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlVybEludGVyY2VwdFJlZ2lzdHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXJsSW50ZXJjZXB0UmVnaXN0cnkiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuVXJsSW50ZXJjZXB0UmVnaXN0cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UGx1Z2luRGF0YSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LlBsdWdpbkRhdGEiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVycyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXJyb2dhdGUiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5DYWNoZU1hbmFnZXIuQ2FjaGVSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVycyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckhhbmRsZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5VcmxJbnRlcmNlcHRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVybEludGVyY2VwdERpc2FibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckhhbmRsZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5VcmxJbnRlcmNlcHRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVybEludGVyY2VwdERpc2FibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVmFsdWVDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uUmVjZWl2ZVZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iV2ViQmFja0ZvcndhcmRMaXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SXRlbSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkhpc3RvcnlJdGVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbUF0SW5kZXgiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJIaXN0b3J5SXRlbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXZWJDaHJvbWVDbGllbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYkNocm9tZUNsaWVudCIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJDaHJvbWVDbGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFZpZGVvUG9zdGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlkZW9Mb2FkaW5nUHJvZ3Jlc3NWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlzaXRlZEhpc3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC53ZWJraXQuVmFsdWVDYWxsYmFjayZsdDtqYXZhLmxhbmcuU3RyaW5nW10mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2xvc2VXaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3ciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25zb2xlTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VJRCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbnNvbGVNZXNzYWdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uc29sZU1lc3NhZ2UiIHR5cGU9ImFuZHJvaWQud2Via2l0LkNvbnNvbGVNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlV2luZG93IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyR2VzdHVyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0TXNnIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeGNlZWRlZERhdGFiYXNlUXVvdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGFiYXNlSWRlbnRpZmllciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3VycmVudFF1b3RhIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlc3RpbWF0ZWRTaXplIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3RhbFVzZWRRdW90YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGFVcGRhdGVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTdG9yYWdlLlF1b3RhVXBkYXRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdlb2xvY2F0aW9uUGVybWlzc2lvbnNIaWRlUHJvbXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdlb2xvY2F0aW9uUGVybWlzc2lvbnNTaG93UHJvbXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC53ZWJraXQuR2VvbG9jYXRpb25QZXJtaXNzaW9ucy5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkhpZGVDdXN0b21WaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkpzQWxlcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iYW5kcm9pZC53ZWJraXQuSnNSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Kc0JlZm9yZVVubG9hZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5Kc1Jlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkpzQ29uZmlybSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5Kc1Jlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkpzUHJvbXB0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iYW5kcm9pZC53ZWJraXQuSnNQcm9tcHRSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Kc1RpbWVvdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJvZ3Jlc3NDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlYWNoZWRNYXhBcHBDYWNoZVNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjZU5lZWRlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG90YWxVc2VkUXVvdGEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RhVXBkYXRlciIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViU3RvcmFnZS5RdW90YVVwZGF0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZWNlaXZlZEljb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVkVGl0bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVkVG91Y2hJY29uVXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVjb21wb3NlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlcXVlc3RGb2N1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TaG93Q3VzdG9tVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViQ2hyb21lQ2xpZW50LkN1c3RvbVZpZXdDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iV2ViQ2hyb21lQ2xpZW50LkN1c3RvbVZpZXdDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25DdXN0b21WaWV3SGlkZGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJXZWJIaXN0b3J5SXRlbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RmF2aWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmFsVXJsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXZWJJY29uRGF0YWJhc2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkljb25EYXRhYmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VJY29uRm9yUGFnZVVybCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxJY29ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdEljb25Gb3JQYWdlVXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViSWNvbkRhdGFiYXNlLkljb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXRhaW5JY29uRm9yUGFnZVVybCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iV2ViSWNvbkRhdGFiYXNlLkljb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25SZWNlaXZlZEljb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IldlYlNldHRpbmdzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb3dGaWxlQWNjZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9ja05ldHdvcmtJbWFnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9ja05ldHdvcmtMb2FkcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCdWlsdEluWm9vbUNvbnRyb2xzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYWNoZU1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc2l2ZUZvbnRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFiYXNlUGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0Rml4ZWRGb250U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRGb250U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRab29tIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuWm9vbURlbnNpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tU3RvcmFnZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmFudGFzeUZvbnRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rml4ZWRGb250RmFtaWx5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SmF2YVNjcmlwdEVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0QWxnb3JpdGhtIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuTGF5b3V0QWxnb3JpdGhtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGlnaHRUb3VjaEVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvYWRXaXRoT3ZlcnZpZXdNb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluaW11bUZvbnRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hdkR1bXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBsdWdpblN0YXRlIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuUGx1Z2luU3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQbHVnaW5zRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBsdWdpbnNQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNhbnNTZXJpZkZvbnRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2F2ZUZvcm1EYXRhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTYXZlUGFzc3dvcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcmlmRm9udEZhbWlseSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGFuZGFyZEZvbnRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dFNpemUiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5UZXh0U2l6ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZURvdWJsZVRyZWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VXaWRlVmlld1BvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlckFnZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyQWdlbnRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxsb3dGaWxlQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxsb3ciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXBwQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcENhY2hlTWF4U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwQ2FjaGVNYXhTaXplIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcENhY2hlUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwQ2FjaGVQYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJsb2NrTmV0d29ya0ltYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJsb2NrTmV0d29ya0xvYWRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ1aWx0SW5ab29tQ29udHJvbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhY2hlTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJzaXZlRm9udEZhbWlseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9udCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhYmFzZUVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YWJhc2VQYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhYmFzZVBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdEZpeGVkRm9udFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0Rm9udFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFpvb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6b29tIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5ab29tRGVuc2l0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb21TdG9yYWdlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGYW50YXN5Rm9udEZhbWlseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9udCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaXhlZEZvbnRGYW1pbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R2VvbG9jYXRpb25EYXRhYmFzZVBhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGFiYXNlUGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHZW9sb2NhdGlvbkVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRKYXZhU2NyaXB0RW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXlvdXRBbGdvcml0aG0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzLkxheW91dEFsZ29yaXRobSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaWdodFRvdWNoRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9hZFdpdGhPdmVydmlld01vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmVydmlldyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluaW11bUZvbnRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hdkR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZWRJbml0aWFsRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBsdWdpblN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuUGx1Z2luU3RhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGx1Z2luc0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQbHVnaW5zUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGx1Z2luc1BhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVuZGVyUHJpb3JpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5SZW5kZXJQcmlvcml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTYW5zU2VyaWZGb250RmFtaWx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb250IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNhdmVGb3JtRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2F2ZVBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXJpZkZvbnRGYW1pbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhbmRhcmRGb250RmFtaWx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb250IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1cHBvcnRNdWx0aXBsZVdpbmRvd3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1cHBvcnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VwcG9ydFpvb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdXBwb3J0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5UZXh0U2l6ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VEb3VibGVUcmVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VXaWRlVmlld1BvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VyQWdlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VyQWdlbnRTdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRNdWx0aXBsZVdpbmRvd3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydFpvb20iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTE9BRF9DQUNIRV9FTFNFX05FVFdPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQURfQ0FDSEVfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9BRF9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9BRF9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQURfTk9fQ0FDSEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXZWJTZXR0aW5ncy5MYXlvdXRBbGdvcml0aG0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5MYXlvdXRBbGdvcml0aG0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5MYXlvdXRBbGdvcml0aG1bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2ViU2V0dGluZ3MuUGx1Z2luU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5QbHVnaW5TdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzLlBsdWdpblN0YXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlNldHRpbmdzLlJlbmRlclByaW9yaXR5IgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuUmVuZGVyUHJpb3JpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5SZW5kZXJQcmlvcml0eVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXZWJTZXR0aW5ncy5UZXh0U2l6ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzLlRleHRTaXplIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuVGV4dFNpemVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2ViU2V0dGluZ3MuWm9vbURlbnNpdHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5ab29tRGVuc2l0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzLlpvb21EZW5zaXR5W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlN0b3JhZ2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2ViU3RvcmFnZSIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTdG9yYWdlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUFsbERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZU9yaWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlN0b3JhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQud2Via2l0LlZhbHVlQ2FsbGJhY2smbHQ7amF2YS51dGlsLk1hcCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVvdGFGb3JPcmlnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5WYWx1ZUNhbGxiYWNrJmx0O2phdmEubGFuZy5Mb25nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2FnZUZvck9yaWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQud2Via2l0LlZhbHVlQ2FsbGJhY2smbHQ7amF2YS5sYW5nLkxvbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFF1b3RhRm9yT3JpZ2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdW90YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iV2ViU3RvcmFnZS5RdW90YVVwZGF0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVF1b3RhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdRdW90YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iV2ViU3luY01hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSIiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlN5bmNNYW5hZ2VyIgorIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlN5bmNNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvblN5bmNJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFN5bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMT0dUQUciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2Vic3luYyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtRGF0YUJhc2UiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlld0RhdGFiYXNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibUhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuT25IaWVyYXJjaHlDaGFuZ2VMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5Pbkdsb2JhbEZvY3VzQ2hhbmdlTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlZpZXciCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXZWJWaWV3IgorIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlZpZXciCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEphdmFzY3JpcHRJbnRlcmZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyZmFjZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuR29CYWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5Hb0JhY2tPckZvcndhcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGVwcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbkdvRm9yd2FyZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FwdHVyZVBpY3R1cmUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJDYWNoZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVEaXNrRmlsZXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJGb3JtRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJIaXN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhck1hdGNoZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyU3NsUHJlZmVyZW5jZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weUJhY2tGb3J3YXJkTGlzdCIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkJhY2tGb3J3YXJkTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWJ1Z0R1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGVQbGF0Zm9ybU5vdGlmaWNhdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9jdW1lbnRIYXNJbWFnZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVtdWxhdGVTaGlmdEhlbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuYWJsZVBsYXRmb3JtTm90aWZpY2F0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kQWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kQWxsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaW5kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmROZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yd2FyZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGluZ1Njcm9sbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlZU1lbW9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5odHRwLlNzbENlcnRpZmljYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmF2aWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpdFRlc3RSZXN1bHQiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3LkhpdFRlc3RSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SHR0cEF1dGhVc2VybmFtZVBhc3N3b3JkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hbFVybCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGx1Z2luTGlzdCIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LlBsdWdpbkxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvZ3Jlc3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXR0aW5ncyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpdGxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcmwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFpvb21Db250cm9scyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ29CYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnb0JhY2tPckZvcndhcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGVwcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdvRm9yd2FyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlWm9vbVBpY2tlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW1lVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERhdGFXaXRoQmFzZVVSTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VVcmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGlzdG9yeVVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkVXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYUhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZFVybCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNoaWxkVmlld0FkZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DaGlsZFZpZXdSZW1vdmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR2xvYmFsRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRGb2N1cyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0ZvY3VzIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvdmVybGF5SG9yaXpvbnRhbFNjcm9sbGJhciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3ZlcmxheVZlcnRpY2FsU2Nyb2xsYmFyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYWdlRG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYWdlVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF1c2VUaW1lcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc3RVcmwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc3REYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVmcmVzaFBsdWdpbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbG9hZE9wZW5QYWdlcyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxvYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RGb2N1c05vZGVIcmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaHJlZk1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RJbWFnZVJlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVQaWN0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkJhY2tGb3J3YXJkTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5TdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lVGltZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlUGFzc3dvcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VybmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZVBpY3R1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkJhY2tGb3J3YXJkTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0U3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENlcnRpZmljYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG93bmxvYWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5Eb3dubG9hZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvcml6b250YWxTY3JvbGxiYXJPdmVybGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZlcmxheSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIdHRwQXV0aFVzZXJuYW1lUGFzc3dvcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcm5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluaXRpYWxTY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlSW5QZXJjZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWFwVHJhY2tiYWxsVG9BcnJvd0tleXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXRNYXAiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmV0d29ya0F2YWlsYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtVcCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQaWN0dXJlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldy5QaWN0dXJlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVydGljYWxTY3JvbGxiYXJPdmVybGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZlcmxheSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXZWJDaHJvbWVDbGllbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGllbnQiIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYkNocm9tZUNsaWVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXZWJWaWV3Q2xpZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xpZW50IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Q2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BMb2FkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ6b29tSW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Inpvb21PdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0NIRU1FX0dFTyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtnZW86MCwwP3E9JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDSEVNRV9NQUlMVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bWFpbHRvOiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0hFTUVfVEVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlbDomcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlZpZXcuSGl0VGVzdFJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEV4dHJhIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQU5DSE9SX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVESVRfVEVYVF9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTUFJTF9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRU9fVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1BR0VfQU5DSE9SX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNQUdFX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNSQ19BTkNIT1JfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1JDX0lNQUdFX0FOQ0hPUl9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTktOT1dOX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iV2ViVmlldy5QaWN0dXJlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTmV3UGljdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGljdHVyZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaWN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJXZWJWaWV3LldlYlZpZXdUcmFuc3BvcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlZpZXcuV2ViVmlld1RyYW5zcG9ydCIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3LldlYlZpZXdUcmFuc3BvcnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0V2ViVmlldyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXZWJWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3ZWJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlZpZXdDbGllbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlZpZXdDbGllbnQiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlld0NsaWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkb1VwZGF0ZVZpc2l0ZWRIaXN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc1JlbG9hZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZvcm1SZXN1Ym1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb250UmVzZW5kIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2VuZCIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG9hZFJlc291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFnZUZpbmlzaGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFnZVN0YXJ0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhdmljb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVjZWl2ZWRFcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yQ29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpbGluZ1VybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVkSHR0cEF1dGhSZXF1ZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC53ZWJraXQuSHR0cEF1dGhIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVkU3NsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5Tc2xFcnJvckhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJhbmRyb2lkLm5ldC5odHRwLlNzbEVycm9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2NhbGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkU2NhbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTY2FsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub29NYW55UmVkaXJlY3RzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5jZWxNc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGludWVNc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVuaGFuZGxlZEtleUV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG91bGRPdmVycmlkZUtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG91bGRPdmVycmlkZVVybExvYWRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9BVVRIRU5USUNBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii00IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0JBRF9VUkwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09OTkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii02IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0ZBSUxFRF9TU0xfSEFORFNIQUtFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0ZJTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfRklMRV9OT1RfRk9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfSE9TVF9MT09LVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9JTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii03IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX1BST1hZX0FVVEhFTlRJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfUkVESVJFQ1RfTE9PUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii05IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX1RJTUVPVVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9UT09fTUFOWV9SRVFVRVNUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9VTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfVU5TVVBQT1JURURfQVVUSF9TQ0hFTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9VTlNVUFBPUlRFRF9TQ0hFTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlZpZXdEYXRhYmFzZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsZWFyRm9ybURhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFySHR0cEF1dGhVc2VybmFtZVBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclVzZXJuYW1lUGFzc3dvcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViVmlld0RhdGFiYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRm9ybURhdGEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0h0dHBBdXRoVXNlcm5hbWVQYXNzd29yZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzVXNlcm5hbWVQYXNzd29yZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMT0dUQUciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2Vidmlld2RhdGFiYXNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQud2lkZ2V0IgorPgorPGNsYXNzIG5hbWU9IkFic0xpc3RWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkZpbHRlci5GaWx0ZXJMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxMYXlvdXRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblRvdWNoTW9kZUNoYW5nZUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNMaXN0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNMaXN0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzTGlzdFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZnRlclRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZVRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZ0ZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclRleHRGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhY2hlQ29sb3JIaW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpc3RQYWRkaW5nQm90dG9tIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpc3RQYWRkaW5nTGVmdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaXN0UGFkZGluZ1JpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpc3RQYWRkaW5nVG9wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdG9yIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0RmlsdGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2NyaXB0TW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVEYXRhQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzVGV4dEZpbHRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZVZpZXdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Zhc3RTY3JvbGxFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luRmlsdGVyTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTY3JvbGxpbmdDYWNoZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU21vb3RoU2Nyb2xsYmFyRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFja0Zyb21Cb3R0b20iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVGV4dEZpbHRlckVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxheW91dENoaWxkcmVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbHRlckNvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdsb2JhbExheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVmb3JlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaE1vZGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJblRvdWNoTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2ludFRvUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvaW50VG9Sb3dJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2xhaW1WaWV3cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLnZpZXcuVmlldyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FjaGVDb2xvckhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERyYXdTZWxlY3Rvck9uVG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25Ub3AiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmFzdFNjcm9sbEVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlclRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXJUZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uU2Nyb2xsTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0Vmlldy5PblNjcm9sbExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlY3ljbGVyTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXcuUmVjeWNsZXJMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY3JvbGxJbmRpY2F0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXAiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb3duIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY3JvbGxpbmdDYWNoZUVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3RvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTbW9vdGhTY3JvbGxiYXJFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFja0Zyb21Cb3R0b20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFja0Zyb21Cb3R0b20iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dEZpbHRlckVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0RmlsdGVyRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUcmFuc2NyaXB0TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxCeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3RhbmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic21vb3RoU2Nyb2xsVG9Qb3NpdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic21vb3RoU2Nyb2xsVG9Qb3NpdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdW5kUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnlEcmF3YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iVFJBTlNDUklQVF9NT0RFX0FMV0FZU19TQ1JPTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSQU5TQ1JJUFRfTU9ERV9ESVNBQkxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNDUklQVF9NT0RFX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic0xpc3RWaWV3LkxheW91dFBhcmFtcyIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzTGlzdFZpZXcuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzTGlzdFZpZXcuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNMaXN0Vmlldy5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXcuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic0xpc3RWaWV3LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0Vmlldy5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkFic0xpc3RWaWV3Lk9uU2Nyb2xsTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2Nyb2xsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3RWaXNpYmxlSXRlbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlSXRlbUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvdGFsSXRlbUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY3JvbGxTdGF0ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY3JvbGxTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0NST0xMX1NUQVRFX0ZMSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JPTExfU1RBVEVfSURMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NST0xMX1NUQVRFX1RPVUNIX1NDUk9MTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQWJzTGlzdFZpZXcuUmVjeWNsZXJMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Nb3ZlZFRvU2NyYXBIZWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQWJzU2Vla0JhciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU2Vla0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNTZWVrQmFyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic1NlZWtCYXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzU2Vla0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU2Vla0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNTZWVrQmFyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5UHJvZ3Jlc3NJbmNyZW1lbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGh1bWJPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2V5UHJvZ3Jlc3NJbmNyZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmNyZW1lbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaHVtYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRodW1iIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRodW1iT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGh1bWJPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnNTcGlubmVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNTcGlubmVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic1NwaW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU3Bpbm5lciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNTcGlubmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNTcGlubmVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic1NwaW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBZGFwdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuU3Bpbm5lckFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2ludFRvUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkYXB0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGFwdGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5TcGlubmVyQWRhcHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzb2x1dGVMYXlvdXQiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzb2x1dGVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzb2x1dGVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic29sdXRlTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic29sdXRlTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzb2x1dGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNvbHV0ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNvbHV0ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNvbHV0ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlYnVnIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbVZpZXdUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnZlcnRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXdUeXBlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTdGFibGVJZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IklHTk9SRV9JVEVNX1ZJRVdfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX1NFTEVDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQWRhcHRlclZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWRhcHRlclZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWRhcHRlclZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFkYXB0ZXJWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWRhcHRlciIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbXB0eVZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaXJzdFZpc2libGVQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtQXRQb3NpdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbUlkQXRQb3NpdGlvbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdFZpc2libGVQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPbkl0ZW1DbGlja0xpc3RlbmVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtQ2xpY2tMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uSXRlbUxvbmdDbGlja0xpc3RlbmVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtTG9uZ0NsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPbkl0ZW1TZWxlY3RlZExpc3RlbmVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtU2VsZWN0ZWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uRm9yVmlldyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRJdGVtIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWxlY3RlZEl0ZW1JZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRJdGVtUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5nZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1JdGVtQ2xpY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRhcHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbXB0eVZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbXB0eVZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSXRlbUNsaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkl0ZW1Mb25nQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1Mb25nQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkl0ZW1TZWxlY3RlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Lk9uSXRlbVNlbGVjdGVkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VsZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iSU5WQUxJRF9QT1NJVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVkFMSURfUk9XX0lEIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii05MjIzMzcyMDM2ODU0Nzc1ODA4TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJVEVNX1ZJRVdfVFlQRV9IRUFERVJfT1JfRk9PVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVRFTV9WSUVXX1RZUEVfSUdOT1JFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFkYXB0ZXJWaWV3LkFkYXB0ZXJDb250ZXh0TWVudUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUuQ29udGV4dE1lbnVJbmZvIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBZGFwdGVyVmlldy5BZGFwdGVyQ29udGV4dE1lbnVJbmZvIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3LkFkYXB0ZXJDb250ZXh0TWVudUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImlkIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3NpdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXJnZXRWaWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBZGFwdGVyVmlldy5Pbkl0ZW1DbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkl0ZW1DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQWRhcHRlclZpZXcuT25JdGVtTG9uZ0NsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uSXRlbUxvbmdDbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQWRhcHRlclZpZXcuT25JdGVtU2VsZWN0ZWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25JdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk5vdGhpbmdTZWxlY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQWxwaGFiZXRJbmRleGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5TZWN0aW9uSW5kZXhlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxwaGFiZXRJbmRleGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFscGhhYmV0SW5kZXhlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRlZENvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhYmV0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV0dGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uRm9yU2VjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdGlvbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VjdGlvbkZvclBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlY3Rpb25zIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtQWxwaGFiZXQiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1Db2x1bW5JbmRleCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtRGF0YUN1cnNvciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbmFsb2dDbG9jayIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuYWxvZ0Nsb2NrIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFuYWxvZ0Nsb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuYWxvZ0Nsb2NrIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFuYWxvZ0Nsb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmFsb2dDbG9jayIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BbmFsb2dDbG9jayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFycmF5QWRhcHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5CYXNlQWRhcHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFycmF5QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Vmlld1Jlc291cmNlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFycmF5QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Vmlld1Jlc291cmNlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFycmF5QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Vmlld1Jlc291cmNlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0cyIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRWaWV3UmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3RzIiB0eXBlPSJUW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFycmF5QWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BcnJheUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dFZpZXdSZXNvdXJjZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdHMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRWaWV3UmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3RzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbVJlc291cmNlIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyJmx0O2phdmEubGFuZy5DaGFyU2VxdWVuY2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0QXJyYXlSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Vmlld1Jlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcm9wRG93blZpZXdSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Tm90aWZ5T25DaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZnlPbkNoYW5nZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdXRvQ29tcGxldGVUZXh0VmlldyIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5FZGl0VGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyLkZpbHRlckxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRvQ29tcGxldGVUZXh0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BdXRvQ29tcGxldGVUZXh0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRvQ29tcGxldGVUZXh0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BdXRvQ29tcGxldGVUZXh0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhckxpc3RTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRTZWxlY3Rpb25Ub1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGVkSXRlbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNtaXNzRHJvcERvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVub3VnaFRvRmlsdGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBZGFwdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJvcERvd25BbmNob3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJvcERvd25CYWNrZ3JvdW5kIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcm9wRG93bkhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcm9wRG93bkhvcml6b250YWxPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJvcERvd25WZXJ0aWNhbE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcm9wRG93bldpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Lk9uSXRlbUNsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtU2VsZWN0ZWRMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Lk9uSXRlbVNlbGVjdGVkTGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaXN0U2VsZWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uSXRlbUNsaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1DbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uSXRlbVNlbGVjdGVkTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1TZWxlY3RlZExpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVzaG9sZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWxpZGF0b3IiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5BdXRvQ29tcGxldGVUZXh0Vmlldy5WYWxpZGF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQZXJmb3JtaW5nQ29tcGxldGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQb3B1cFNob3dpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRmlsdGVyQ29tcGxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1Db21wbGV0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtRmlsdGVyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1WYWxpZGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRhcHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkYXB0ZXIiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29tcGxldGlvbkhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERyb3BEb3duQW5jaG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcm9wRG93bkJhY2tncm91bmREcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJvcERvd25CYWNrZ3JvdW5kUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERyb3BEb3duSGVpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJvcERvd25Ib3Jpem9udGFsT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJvcERvd25WZXJ0aWNhbE9mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERyb3BEb3duV2lkdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExpc3RTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSXRlbUNsaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSXRlbVNlbGVjdGVkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1TZWxlY3RlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRocmVzaG9sZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVzaG9sZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbGlkYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkYXRvciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQXV0b0NvbXBsZXRlVGV4dFZpZXcuVmFsaWRhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dEcm9wRG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkF1dG9Db21wbGV0ZVRleHRWaWV3LlZhbGlkYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZml4VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW52YWxpZFRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQmFzZUFkYXB0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5TcGlubmVyQWRhcHRlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQmFzZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXJlQWxsSXRlbXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcm9wRG93blZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbVZpZXdUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXdUeXBlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3RhYmxlSWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeURhdGFTZXRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlEYXRhU2V0SW52YWxpZGF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyRGF0YVNldE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhU2V0T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0QWRhcHRlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5IZXRlcm9nZW5lb3VzRXhwYW5kYWJsZUxpc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2VFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQmFzZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcmVBbGxJdGVtc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRUeXBlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tYmluZWRDaGlsZElkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21iaW5lZEdyb3VwSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwVHlwZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeURhdGFTZXRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlEYXRhU2V0SW52YWxpZGF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR3JvdXBDb2xsYXBzZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Hcm91cEV4cGFuZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyRGF0YVNldE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhU2V0T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnV0dG9uIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnV0dG9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkJ1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hlY2tCb3giCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja0JveCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DaGVja0JveCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja0JveCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DaGVja0JveCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hlY2tCb3giCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ2hlY2tCb3giCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2hlY2thYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaXNDaGVja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoZWNrZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9nZ2xlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDaGVja2VkVGV4dFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkNoZWNrYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hlY2tlZFRleHRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkNoZWNrZWRUZXh0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja2VkVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ2hlY2tlZFRleHRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja2VkVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ2hlY2tlZFRleHRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXNDaGVja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGVja01hcmtEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hlY2tNYXJrRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoZWNrZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvZ2dsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hyb25vbWV0ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHJvbm9tZXRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DaHJvbm9tZXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHJvbm9tZXRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DaHJvbm9tZXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hyb25vbWV0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ2hyb25vbWV0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uQ2hyb25vbWV0ZXJUaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5DaHJvbm9tZXRlci5PbkNocm9ub21ldGVyVGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkNocm9ub21ldGVyVGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkNocm9ub21ldGVyLk9uQ2hyb25vbWV0ZXJUaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDaHJvbm9tZXRlci5PbkNocm9ub21ldGVyVGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNocm9ub21ldGVyVGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hyb25vbWV0ZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkNocm9ub21ldGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb21wb3VuZEJ1dHRvbiIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5CdXR0b24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuQ2hlY2thYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb3VuZEJ1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Db21wb3VuZEJ1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb3VuZEJ1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Db21wb3VuZEJ1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcG91bmRCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpc0NoZWNrZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ1dHRvbkRyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b25EcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hlY2tlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DaGVja2VkQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24uT25DaGVja2VkQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9nZ2xlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29tcG91bmRCdXR0b24uT25DaGVja2VkQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ2hlY2tlZENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1dHRvblZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkNvbXBvdW5kQnV0dG9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0NoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkN1cnNvckFkYXB0ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQmFzZUFkYXB0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29yQWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DdXJzb3JBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDdXJzb3JBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkN1cnNvckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9SZXF1ZXJ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFuZ2VDdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlclF1ZXJ5UHJvdmlkZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5GaWx0ZXJRdWVyeVByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW0iCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW1JZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb252ZXJ0VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvUmVxdWVyeSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEcm9wRG93blZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbnRlbnRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5RdWVyeU9uQmFja2dyb3VuZFRocmVhZCIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlclF1ZXJ5UHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXJRdWVyeVByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5GaWx0ZXJRdWVyeVByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkN1cnNvclRyZWVBZGFwdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkJhc2VFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29yVHJlZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29yVHJlZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b1JlcXVlcnkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kQ2hpbGRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzTGFzdENoaWxkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmRHcm91cFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFeHBhbmRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFuZ2VDdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNMYXN0Q2hpbGQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnZlcnRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkcmVuQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZHJlbkN1cnNvciIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQ3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJzb3IiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWx0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5GaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsdGVyUXVlcnlQcm92aWRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlclF1ZXJ5UHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXAiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXBJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0V4cGFuZGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb252ZXJ0VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTdGFibGVJZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hpbGRTZWxlY3RhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3Q2hpbGRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzTGFzdENoaWxkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3R3JvdXBWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRXhwYW5kZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlEYXRhU2V0Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbGVhc2VDdXJzb3JzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1blF1ZXJ5T25CYWNrZ3JvdW5kVGhyZWFkIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnN0cmFpbnQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hpbGRyZW5DdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkcmVuQ3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWx0ZXJRdWVyeVByb3ZpZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyUXVlcnlQcm92aWRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyUXVlcnlQcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcm91cEN1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0ZVBpY2tlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGVQaWNrZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGF0ZVBpY2tlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlUGlja2VyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkRhdGVQaWNrZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGVQaWNrZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGF0ZVBpY2tlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERheU9mTW9udGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9udGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WWVhciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aE9mWWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlPZk1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9uRGF0ZUNoYW5nZWRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGF0ZVBpY2tlci5PbkRhdGVDaGFuZ2VkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGhPZlllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZNb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEYXRlUGlja2VyLk9uRGF0ZUNoYW5nZWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25EYXRlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGF0ZVBpY2tlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aE9mWWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlPZk1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRpYWxlckZpbHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpYWxlckZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5EaWFsZXJGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlhbGVyRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkRpYWxlckZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaWdpdHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlclRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExldHRlcnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNRd2VydHlLZXlib2FyZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Nb2RlQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlRmlsdGVyV2F0Y2hlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndhdGNoZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0V2F0Y2hlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaWdpdHNXYXRjaGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2F0Y2hlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRXYXRjaGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlcldhdGNoZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3YXRjaGVyIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGV0dGVyc1dhdGNoZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3YXRjaGVyIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld01vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRJR0lUU19BTkRfTEVUVEVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElHSVRTX0FORF9MRVRURVJTX05PX0RJR0lUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElHSVRTX0FORF9MRVRURVJTX05PX0xFVFRFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJR0lUU19PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRVRURVJTX09OTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaWdpdGFsQ2xvY2siCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWdpdGFsQ2xvY2siCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGlnaXRhbENsb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpZ2l0YWxDbG9jayIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5EaWdpdGFsQ2xvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFZGl0VGV4dCIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVkaXRUZXh0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVkaXRUZXh0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFZGl0VGV4dCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5FZGl0VGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImV4dGVuZFNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VsZWN0QWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VsZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRXhwYW5kYWJsZUxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXJlQWxsSXRlbXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZElkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNMYXN0Q2hpbGQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnZlcnRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkcmVuQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbWJpbmVkQ2hpbGRJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21iaW5lZEdyb3VwSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXAiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXBJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFeHBhbmRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3RhYmxlSWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hpbGRTZWxlY3RhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR3JvdXBDb2xsYXBzZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdyb3VwRXhwYW5kZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRXhwYW5kYWJsZUxpc3RWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhwYW5kYWJsZUxpc3RWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeHBhbmRhYmxlTGlzdFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeHBhbmRhYmxlTGlzdFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29sbGFwc2VHcm91cCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhwYW5kR3JvdXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBhbmRhYmxlTGlzdFBvc2l0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhdExpc3RQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsYXRMaXN0UG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2tlZFBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2tlZFBvc2l0aW9uQ2hpbGQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2VkUG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2VkUG9zaXRpb25Gb3JDaGlsZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2VkUG9zaXRpb25Gb3JHcm91cCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2tlZFBvc2l0aW9uR3JvdXAiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2VkUG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2VkUG9zaXRpb25UeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2tlZFBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkUG9zaXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzR3JvdXBFeHBhbmRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBZGFwdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RBZGFwdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoaWxkRGl2aWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkRGl2aWRlciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGlsZEluZGljYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkSW5kaWNhdG9yIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoaWxkSW5kaWNhdG9yQm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyb3VwSW5kaWNhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJbmRpY2F0b3IiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5kaWNhdG9yQm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ2hpbGRDbGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25DaGlsZENsaWNrTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0Vmlldy5PbkNoaWxkQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkdyb3VwQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uR3JvdXBDbGlja0xpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5FeHBhbmRhYmxlTGlzdFZpZXcuT25Hcm91cENsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25Hcm91cENvbGxhcHNlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbkdyb3VwQ29sbGFwc2VMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3Lk9uR3JvdXBDb2xsYXBzZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uR3JvdXBFeHBhbmRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uR3JvdXBFeHBhbmRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3Lk9uR3JvdXBFeHBhbmRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3RlZENoaWxkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNob3VsZEV4cGFuZEdyb3VwIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGVkR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDSElMRF9JTkRJQ0FUT1JfSU5IRVJJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBQ0tFRF9QT1NJVElPTl9UWVBFX0NISUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQUNLRURfUE9TSVRJT05fVFlQRV9HUk9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFDS0VEX1BPU0lUSU9OX1RZUEVfTlVMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFDS0VEX1BPU0lUSU9OX1ZBTFVFX05VTEwiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDI5NDk2NzI5NUwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV4cGFuZGFibGVMaXN0Vmlldy5FeHBhbmRhYmxlTGlzdENvbnRleHRNZW51SW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5Db250ZXh0TWVudS5Db250ZXh0TWVudUluZm8iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4cGFuZGFibGVMaXN0Vmlldy5FeHBhbmRhYmxlTGlzdENvbnRleHRNZW51SW5mbyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5FeHBhbmRhYmxlTGlzdFZpZXcuRXhwYW5kYWJsZUxpc3RDb250ZXh0TWVudUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2VkUG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJpZCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2VkUG9zaXRpb24iCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhcmdldFZpZXciCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkV4cGFuZGFibGVMaXN0Vmlldy5PbkNoaWxkQ2xpY2tMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25DaGlsZENsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkV4cGFuZGFibGVMaXN0Vmlldy5Pbkdyb3VwQ2xpY2tMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Hcm91cENsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFeHBhbmRhYmxlTGlzdFZpZXcuT25Hcm91cENvbGxhcHNlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uR3JvdXBDb2xsYXBzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRXhwYW5kYWJsZUxpc3RWaWV3Lk9uR3JvdXBFeHBhbmRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Hcm91cEV4cGFuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJGaWx0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb252ZXJ0UmVzdWx0VG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnN0cmFpbnQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyLkZpbHRlckxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1GaWx0ZXJpbmciCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5GaWx0ZXIuRmlsdGVyUmVzdWx0cyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1Ymxpc2hSZXN1bHRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRzIiB0eXBlPSJhbmRyb2lkLndpZGdldC5GaWx0ZXIuRmlsdGVyUmVzdWx0cyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRmlsdGVyLkZpbHRlckxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkZpbHRlckNvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJGaWx0ZXIuRmlsdGVyUmVzdWx0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWx0ZXIuRmlsdGVyUmVzdWx0cyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5GaWx0ZXIuRmlsdGVyUmVzdWx0cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImNvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZhbHVlcyIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJGaWx0ZXJRdWVyeVByb3ZpZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icnVuUXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRmlsdGVyYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJGcmFtZUxheW91dCIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRnJhbWVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRnJhbWVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZyYW1lTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc2lkZXJHb25lQ2hpbGRyZW5XaGVuTWVhc3VyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JlZ3JvdW5kIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5nZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcmVncm91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb3JlZ3JvdW5kR3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmVncm91bmRHcmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVhc3VyZUFsbENoaWxkcmVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZUFsbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZyYW1lTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZyYW1lTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRnJhbWVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZyYW1lTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iZ3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR2FsbGVyeSIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5BYnNTcGlubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yLk9uR2VzdHVyZUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHYWxsZXJ5IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdhbGxlcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2FsbGVyeSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5HYWxsZXJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHYWxsZXJ5IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdhbGxlcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkRvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GbGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUyIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Mb25nUHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlMSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2hvd1ByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2luZ2xlVGFwVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW5pbWF0aW9uRHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb25EdXJhdGlvbk1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhbGxiYWNrRHVyaW5nRmxpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaG91bGRDYWxsYmFjayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcmF2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VW5zZWxlY3RlZEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5zZWxlY3RlZEFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHYWxsZXJ5LkxheW91dFBhcmFtcyIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2FsbGVyeS5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuR2FsbGVyeS5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdhbGxlcnkuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdhbGxlcnkuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdhbGxlcnkuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdhbGxlcnkuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdyaWRWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3JpZFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuR3JpZFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3JpZFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuR3JpZFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyaWRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdyaWRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmV0Y2hNb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkYXB0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGFwdGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5XaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbldpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb3Jpem9udGFsU3BhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b250YWxTcGFjaW5nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TnVtQ29sdW1ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUNvbHVtbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmV0Y2hNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZXRjaE1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJ0aWNhbFNwYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbFNwYWNpbmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFVVE9fRklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fU1RSRVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRVRDSF9DT0xVTU5fV0lEVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVUQ0hfU1BBQ0lORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRVRDSF9TUEFDSU5HX1VOSUZPUk0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIZWFkZXJWaWV3TGlzdEFkYXB0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5XcmFwcGVyTGlzdEFkYXB0ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhlYWRlclZpZXdMaXN0QWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5IZWFkZXJWaWV3TGlzdEFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXJWaWV3SW5mb3MiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC53aWRnZXQuTGlzdFZpZXcuRml4ZWRWaWV3SW5mbyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvb3RlclZpZXdJbmZvcyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLndpZGdldC5MaXN0Vmlldy5GaXhlZFZpZXdJbmZvJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcmVBbGxJdGVtc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb290ZXJzQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVhZGVyc0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW0iCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW1JZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbVZpZXdUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vmlld1R5cGVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcmFwcGVkQWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1N0YWJsZUlkcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVGb290ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVIZWFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyRGF0YVNldE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJIZXRlcm9nZW5lb3VzRXhwYW5kYWJsZUxpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRUeXBlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwVHlwZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikhvcml6b250YWxTY3JvbGxWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSG9yaXpvbnRhbFNjcm9sbFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSG9yaXpvbnRhbFNjcm9sbFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSG9yaXpvbnRhbFNjcm9sbFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSG9yaXpvbnRhbFNjcm9sbFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikhvcml6b250YWxTY3JvbGxWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lkhvcml6b250YWxTY3JvbGxWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXJyb3dTY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlU2Nyb2xsRGVsdGFUb0dldENoaWxkUmVjdE9uU2NyZWVuIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZUtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZ1bGxTY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhTY3JvbGxBbW91bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaWxsVmlld3BvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFnZVNjcm9sbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbGxWaWV3cG9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxWaWV3cG9ydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTbW9vdGhTY3JvbGxpbmdFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxCeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW1hZ2VCdXR0b24iCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VCdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VCdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkltYWdlQnV0dG9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkltYWdlQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW1hZ2VTd2l0Y2hlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5WaWV3U3dpdGNoZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVN3aXRjaGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkltYWdlU3dpdGNoZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTd2l0Y2hlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVN3aXRjaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlVVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW1hZ2VWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkltYWdlVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW1hZ2VNYXRyaXgiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZVR5cGUiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXcuU2NhbGVUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlRHJhd2FibGVTdGF0ZSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYVNwYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRqdXN0Vmlld0JvdW5kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkanVzdFZpZXdCb3VuZHMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvcnRlckR1ZmYuTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyYW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlQml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm0iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbWFnZUxldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbWFnZU1hdHJpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVyZ2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VVUkkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhIZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NhbGVUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGVUeXBlIiB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXcuU2NhbGVUeXBlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkltYWdlVmlldy5TY2FsZVR5cGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXcuU2NhbGVUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3LlNjYWxlVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5lYXJMYXlvdXQiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckxheW91dCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGluZWFyTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJhc2VsaW5lQWxpZ25lZENoaWxkSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZW50YXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2VpZ2h0U3VtIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCYXNlbGluZUFsaWduZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbmdlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJhc2VsaW5lQWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VsaW5lQWxpZ25lZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCYXNlbGluZUFsaWduZWRDaGlsZEluZGV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SG9yaXpvbnRhbEdyYXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3Jpem9udGFsR3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9yaWVudGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZW50YXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJ0aWNhbEdyYXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbEdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXZWlnaHRTdW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3ZWlnaHRTdW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iSE9SSVpPTlRBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkVSVElDQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTWFyZ2luTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2VpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZWJ1ZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImdyYXZpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2VpZ2h0IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJMaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXJlQWxsSXRlbXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGlzdFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaXN0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaXN0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlzdFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGlzdFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRGb290ZXJWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU2VsZWN0YWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRGb290ZXJWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSGVhZGVyVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc1NlbGVjdGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSGVhZGVyVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyQ2hvaWNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFZpZXdUcmF2ZXJzYWwiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kVmlld1dpdGhUYWdUcmF2ZXJzYWwiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFkYXB0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGVja0l0ZW1JZHMiCisgcmV0dXJuPSJsb25nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGVja2VkSXRlbUlkcyIKKyByZXR1cm49ImxvbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGVja2VkSXRlbVBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoZWNrZWRJdGVtUG9zaXRpb25zIgorIHJldHVybj0iYW5kcm9pZC51dGlsLlNwYXJzZUJvb2xlYW5BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaG9pY2VNb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpdmlkZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpdmlkZXJIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9vdGVyVmlld3NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJWaWV3c0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW1zQ2FuRm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFNjcm9sbEFtb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0l0ZW1DaGVja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVGb290ZXJWaWV3IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVyVmlldyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkYXB0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGFwdGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaG9pY2VNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hvaWNlTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXZpZGVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpdmlkZXJIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb290ZXJEaXZpZGVyc0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb290ZXJEaXZpZGVyc0VuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGVhZGVyRGl2aWRlcnNFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyRGl2aWRlcnNFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEl0ZW1DaGVja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXRlbXNDYW5Gb2N1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1zQ2FuRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VsZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb25BZnRlckhlYWRlclZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbkZyb21Ub3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDSE9JQ0VfTU9ERV9NVUxUSVBMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hPSUNFX01PREVfTk9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hPSUNFX01PREVfU0lOR0xFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGlzdFZpZXcuRml4ZWRWaWV3SW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlzdFZpZXcuRml4ZWRWaWV3SW5mbyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0Vmlldy5GaXhlZFZpZXdJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iZGF0YSIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNTZWxlY3RhYmxlIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lZGlhQ29udHJvbGxlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5NZWRpYUNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5NZWRpYUNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlRmFzdEZvcndhcmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5NZWRpYUNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImhpZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hvd2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GaW5pc2hJbmZsYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbmNob3JWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVkaWFQbGF5ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGF5ZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lk1lZGlhQ29udHJvbGxlci5NZWRpYVBsYXllckNvbnRyb2wiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJldk5leHRMaXN0ZW5lcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldy5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZXYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYUNvbnRyb2xsZXIuTWVkaWFQbGF5ZXJDb250cm9sIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5QYXVzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5TZWVrQmFja3dhcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuU2Vla0ZvcndhcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnVmZmVyUGVyY2VudGFnZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldER1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQbGF5aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlZWtUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lk11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTXVsdGlBdXRvQ29tcGxldGVUZXh0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5NdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lk11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtRmlsdGVyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUb2tlbml6ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5NdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3LlRva2VuaXplciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3LkNvbW1hVG9rZW5pemVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuTXVsdGlBdXRvQ29tcGxldGVUZXh0Vmlldy5Ub2tlbml6ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXcuQ29tbWFUb2tlbml6ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuTXVsdGlBdXRvQ29tcGxldGVUZXh0Vmlldy5Db21tYVRva2VuaXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kVG9rZW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXJtaW5hdGVUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXcuVG9rZW5pemVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmaW5kVG9rZW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFRva2VuU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVybWluYXRlVG9rZW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlBvcHVwV2luZG93IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb3B1cFdpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Qb3B1cFdpbmRvdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb3B1cFdpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Qb3B1cFdpbmRvdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9wdXBXaW5kb3ciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUG9wdXBXaW5kb3ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcHVwV2luZG93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlBvcHVwV2luZG93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9wdXBXaW5kb3ciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUG9wdXBXaW5kb3ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcHVwV2luZG93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlBvcHVwV2luZG93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcHVwV2luZG93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlBvcHVwV2luZG93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9wdXBXaW5kb3ciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUG9wdXBXaW5kb3ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb2N1c2FibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmltYXRpb25TdHlsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYWNrZ3JvdW5kIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dE1ldGhvZE1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4QXZhaWxhYmxlSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmNob3IiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEF2YWlsYWJsZUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5jaG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvZnRJbnB1dE1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBYm92ZUFuY2hvciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDbGlwcGluZ0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRm9jdXNhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc091dHNpZGVUb3VjaGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hvd2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNUb3VjaGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFuaW1hdGlvblN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0aW9uU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCYWNrZ3JvdW5kRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrZ3JvdW5kIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsaXBwaW5nRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9jdXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlaWdodCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElnbm9yZUNoZWVrUHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElucHV0TWV0aG9kTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkRpc21pc3NMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uRGlzbWlzc0xpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5Qb3B1cFdpbmRvdy5PbkRpc21pc3NMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRzaWRlVG91Y2hhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG91Y2hhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvZnRJbnB1dE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VG91Y2hJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uVG91Y2hMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUb3VjaGFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b3VjaGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2lkdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdpbmRvd0xheW91dE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aFNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0U3BlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dBc0Ryb3BEb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5jaG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93QXNEcm9wRG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuY2hvciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dBdExvY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuY2hvciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuY2hvciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IklOUFVUX01FVEhPRF9GUk9NX0ZPQ1VTQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5QVVRfTUVUSE9EX05FRURFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5QVVRfTUVUSE9EX05PVF9ORUVERUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUG9wdXBXaW5kb3cuT25EaXNtaXNzTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRGlzbWlzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJvZ3Jlc3NCYXIiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9ncmVzc0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9ncmVzc0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvZ3Jlc3NCYXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUHJvZ3Jlc3NCYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRldGVybWluYXRlRHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVycG9sYXRvciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uSW50ZXJwb2xhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb2dyZXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvZ3Jlc3NEcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vjb25kYXJ5UHJvZ3Jlc3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRQcm9ncmVzc0J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRTZWNvbmRhcnlQcm9ncmVzc0J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luZGV0ZXJtaW5hdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbmRldGVybWluYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRldGVybWluYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV0ZXJtaW5hdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJwb2xhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJwb2xhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJwb2xhdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmVzcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY29uZGFyeVByb2dyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmRhcnlQcm9ncmVzcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlF1aWNrQ29udGFjdEJhZGdlIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkltYWdlVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRdWlja0NvbnRhY3RCYWRnZSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5RdWlja0NvbnRhY3RCYWRnZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRdWlja0NvbnRhY3RCYWRnZSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5RdWlja0NvbnRhY3RCYWRnZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUXVpY2tDb250YWN0QmFkZ2UiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUXVpY2tDb250YWN0QmFkZ2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NpZ25Db250YWN0RnJvbUVtYWlsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW1haWxBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXp5TG9va3VwIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2lnbkNvbnRhY3RGcm9tUGhvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaG9uZU51bWJlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF6eUxvb2t1cCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NpZ25Db250YWN0VXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFjdFVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2xpY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeGNsdWRlTWltZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNsdWRlTWltZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ibUV4Y2x1ZGVNaW1lcyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmFkaW9CdXR0b24iCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpb0J1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SYWRpb0J1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpb0J1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SYWRpb0J1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFkaW9CdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9CdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSYWRpb0dyb3VwIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhZGlvR3JvdXAiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpb0dyb3VwIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhZGlvR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJDaGVjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hlY2tlZFJhZGlvQnV0dG9uSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DaGVja2VkQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cC5PbkNoZWNrZWRDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSYWRpb0dyb3VwLkxheW91dFBhcmFtcyIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpb0dyb3VwLkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SYWRpb0dyb3VwLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFkaW9Hcm91cC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFkaW9Hcm91cC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdFdlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhZGlvR3JvdXAuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhZGlvR3JvdXAuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhZGlvR3JvdXAuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhZGlvR3JvdXAuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJSYWRpb0dyb3VwLk9uQ2hlY2tlZENoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNoZWNrZWRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlZElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJhdGluZ0JhciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5BYnNTZWVrQmFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmF0aW5nQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhdGluZ0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmF0aW5nQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhdGluZ0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmF0aW5nQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhdGluZ0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtU3RhcnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T25SYXRpbmdCYXJDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlJhdGluZ0Jhci5PblJhdGluZ0JhckNoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhdGluZyIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0ZXBTaXplIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbmRpY2F0b3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzSW5kaWNhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJbmRpY2F0b3IiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TnVtU3RhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1TdGFycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uUmF0aW5nQmFyQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmF0aW5nQmFyLk9uUmF0aW5nQmFyQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmF0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmF0aW5nIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGVwU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBTaXplIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmF0aW5nQmFyLk9uUmF0aW5nQmFyQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uUmF0aW5nQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmF0aW5nQmFyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5SYXRpbmdCYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhdGluZyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21Vc2VyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJSZWxhdGl2ZUxheW91dCIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVsYXRpdmVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVsYXRpdmVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbGF0aXZlTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbGF0aXZlTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb3Jpem9udGFsR3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b250YWxHcmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWdub3JlR3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZlcnRpY2FsR3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsR3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUJPVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMSUdOX0JBU0VMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTElHTl9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMSUdOX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMSUdOX1BBUkVOVF9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTElHTl9QQVJFTlRfTEVGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxJR05fUEFSRU5UX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxJR05fUEFSRU5UX1RPUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMSUdOX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTElHTl9UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJFTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDRU5URVJfSE9SSVpPTlRBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNFTlRFUl9JTl9QQVJFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDRU5URVJfVkVSVElDQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRUZUX09GIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSUdIVF9PRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWxhdGl2ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbGF0aXZlTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbGF0aXZlTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVsYXRpdmVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbGF0aXZlTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbGF0aXZlTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTWFyZ2luTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcmIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRSdWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbmNob3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWJ1ZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdWxlcyIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYWxpZ25XaXRoUGFyZW50IgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVtb3RlVmlld3MiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyLkZpbHRlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbW90ZVZpZXdzIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbW90ZVZpZXdzIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVzdGVkVmlldyIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwbHkiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExheW91dElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG9hZENsYXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhenoiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFwcGx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbFZpZXdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ1bmRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYXJTZXF1ZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaHJvbm9tZXRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlVmlld0JpdG1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlVmlld1Jlc291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VWaWV3VXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DbGlja1BlbmRpbmdJbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVuZGluZ0ludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9ncmVzc0JhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXRlcm1pbmF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaG9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRWaWV3VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdWaXNpYmlsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2liaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZW1vdGVWaWV3cy5BY3Rpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbW90ZVZpZXdzLkFjdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cy5BY3Rpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleCIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVtb3RlVmlld3MuQWN0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzLkFjdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZW1vdGVWaWV3cy5SZW1vdGVWaWV3IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VDdXJzb3JBZGFwdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkN1cnNvckFkYXB0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlc291cmNlQ3Vyc29yQWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZXNvdXJjZUN1cnNvckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZUN1cnNvckFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVzb3VyY2VDdXJzb3JBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b1JlcXVlcnkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJvcERvd25WaWV3UmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcm9wRG93bkxheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlc291cmNlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQ3Vyc29yVHJlZUFkYXB0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlc291cmNlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVzb3VyY2VDdXJzb3JUcmVlQWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsYXBzZWRHcm91cExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBhbmRlZEdyb3VwTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxhc3RDaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZUN1cnNvclRyZWVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlc291cmNlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGFwc2VkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwYW5kZWRHcm91cExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZUN1cnNvclRyZWVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlc291cmNlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im5ld0NoaWxkVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNMYXN0Q2hpbGQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdHcm91cFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRXhwYW5kZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTY3JvbGxWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nyb2xsVmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TY3JvbGxWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjcm9sbFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2Nyb2xsVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nyb2xsVmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TY3JvbGxWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXJyb3dTY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlU2Nyb2xsRGVsdGFUb0dldENoaWxkUmVjdE9uU2NyZWVuIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZUtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZ1bGxTY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhTY3JvbGxBbW91bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaWxsVmlld3BvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFnZVNjcm9sbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbGxWaWV3cG9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxWaWV3cG9ydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTbW9vdGhTY3JvbGxpbmdFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxCeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2Nyb2xsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjcm9sbGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNjcm9sbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjcm9sbGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNjcm9sbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVycG9sYXRvciIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYm9ydEFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZVNjcm9sbE9mZnNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kRHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0WCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydFkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVsb2NpdHlYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5YIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluWSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhZIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9yY2VGaW5pc2hlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmluaXNoZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VyclgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyWSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldER1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmluYWxYIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmluYWxZIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRYIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRZIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaW5pc2hlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaW5hbFgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmluYWxZIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0U2Nyb2xsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0U2Nyb2xsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRpbWVQYXNzZWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNlY3Rpb25JbmRleGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zaXRpb25Gb3JTZWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWN0aW9uRm9yUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTZWVrQmFyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkFic1NlZWtCYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWVrQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNlZWtCYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Vla0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TZWVrQmFyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWVrQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNlZWtCYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRPblNlZWtCYXJDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNlZWtCYXIuT25TZWVrQmFyQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNlZWtCYXIuT25TZWVrQmFyQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uUHJvZ3Jlc3NDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVrQmFyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5TZWVrQmFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmVzcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tVXNlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0VHJhY2tpbmdUb3VjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vla0JhciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2Vla0JhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0b3BUcmFja2luZ1RvdWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVrQmFyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5TZWVrQmFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTaW1wbGVBZGFwdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkJhc2VBZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5GaWx0ZXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaW1wbGVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyBleHRlbmRzIGphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgPyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vmlld0JpbmRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUFkYXB0ZXIuVmlld0JpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcm9wRG93blZpZXdSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld0JpbmRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdCaW5kZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUFkYXB0ZXIuVmlld0JpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3SW1hZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld0ltYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTaW1wbGVBZGFwdGVyLlZpZXdCaW5kZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdWYWx1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRSZXByZXNlbnRhdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2ltcGxlQ3Vyc29yQWRhcHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5SZXNvdXJjZUN1cnNvckFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaW1wbGVDdXJzb3JBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpbmRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYW5nZUN1cnNvckFuZENvbHVtbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0byIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yVG9TdHJpbmdDb252ZXJ0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5TaW1wbGVDdXJzb3JBZGFwdGVyLkN1cnNvclRvU3RyaW5nQ29udmVydGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZ0NvbnZlcnNpb25Db2x1bW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vmlld0JpbmRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvckFkYXB0ZXIuVmlld0JpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJzb3JUb1N0cmluZ0NvbnZlcnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvclRvU3RyaW5nQ29udmVydGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5TaW1wbGVDdXJzb3JBZGFwdGVyLkN1cnNvclRvU3RyaW5nQ29udmVydGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmluZ0NvbnZlcnNpb25Db2x1bW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmdDb252ZXJzaW9uQ29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld0JpbmRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdCaW5kZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvckFkYXB0ZXIuVmlld0JpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3SW1hZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNpbXBsZUN1cnNvckFkYXB0ZXIuQ3Vyc29yVG9TdHJpbmdDb252ZXJ0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNpbXBsZUN1cnNvckFkYXB0ZXIuVmlld0JpbmRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuUmVzb3VyY2VDdXJzb3JUcmVlQWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGFwc2VkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwYW5kZWRHcm91cExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxhc3RDaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxhcHNlZEdyb3VwTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGFuZGVkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwRnJvbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFRvIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZENoaWxkVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNMYXN0Q2hpbGQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZEdyb3VwVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFeHBhbmRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWaWV3QmluZGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIuVmlld0JpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3QmluZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0JpbmRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIuVmlld0JpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3SW1hZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyLlZpZXdCaW5kZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdWYWx1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNpbXBsZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5CYXNlRXhwYW5kYWJsZUxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlRXhwYW5kYWJsZUxpc3RBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cERhdGEiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsID8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZERhdGEiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TaW1wbGVFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBEYXRhIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGFuZGVkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGFwc2VkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZERhdGEiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TaW1wbGVFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBEYXRhIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGFuZGVkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGFwc2VkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZERhdGEiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXN0Q2hpbGRMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZElkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0xhc3RDaGlsZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRyZW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXBJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0V4cGFuZGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb252ZXJ0VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTdGFibGVJZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hpbGRTZWxlY3RhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3Q2hpbGRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzTGFzdENoaWxkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3R3JvdXBWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRXhwYW5kZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbGlkaW5nRHJhd2VyIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTbGlkaW5nRHJhd2VyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNsaWRpbmdEcmF3ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNsaWRpbmdEcmF3ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2xpZGluZ0RyYXdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFuaW1hdGVDbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYW5pbWF0ZU9wZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFuaW1hdGVUb2dnbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGFuZGxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNb3ZpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BlbmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5nZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkRyYXdlckNsb3NlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbkRyYXdlckNsb3NlTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNsaWRpbmdEcmF3ZXIuT25EcmF3ZXJDbG9zZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uRHJhd2VyT3Blbkxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25EcmF3ZXJPcGVuTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNsaWRpbmdEcmF3ZXIuT25EcmF3ZXJPcGVuTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25EcmF3ZXJTY3JvbGxMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uRHJhd2VyU2Nyb2xsTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNsaWRpbmdEcmF3ZXIuT25EcmF3ZXJTY3JvbGxMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9WRVJUSUNBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTbGlkaW5nRHJhd2VyLk9uRHJhd2VyQ2xvc2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25EcmF3ZXJDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTbGlkaW5nRHJhd2VyLk9uRHJhd2VyT3Blbkxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkRyYXdlck9wZW5lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNsaWRpbmdEcmF3ZXIuT25EcmF3ZXJTY3JvbGxMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25TY3JvbGxFbmRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNjcm9sbFN0YXJ0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNwaW5uZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQWJzU3Bpbm5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwaW5uZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU3Bpbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGlubmVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNwaW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwaW5uZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU3Bpbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFByb21wdCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hpY2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9tcHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9tcHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvbXB0SWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9tcHRJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTcGlubmVyQWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RHJvcERvd25WaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRhYkhvc3QiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyLk9uVG91Y2hNb2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYkhvc3QiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFiSG9zdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJIb3N0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRUYWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJTcGVjIiB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJIb3N0LlRhYlNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJBbGxUYWJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50VGFiIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRUYWJUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRUYWJWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWJDb250ZW50VmlldyIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYldpZGdldCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYldpZGdldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdUYWJTcGVjIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuVGFiSG9zdC5UYWJTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaE1vZGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJblRvdWNoTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJyZW50VGFiIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJyZW50VGFiQnlUYWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25UYWJDaGFuZ2VkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJIb3N0Lk9uVGFiQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0dXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldHVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlHcm91cCIgdHlwZT0iYW5kcm9pZC5hcHAuTG9jYWxBY3Rpdml0eU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRhYkhvc3QuT25UYWJDaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25UYWJDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRhYkhvc3QuVGFiQ29udGVudEZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVRhYkNvbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRhYkhvc3QuVGFiU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFRhZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudEZhY3RvcnkiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiQ29udGVudEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGljYXRvciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWwiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5kaWNhdG9yIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuVGFiSG9zdC5UYWJTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbmRpY2F0b3IiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5UYWJIb3N0LlRhYlNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRhYldpZGdldCIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3Lk9uRm9jdXNDaGFuZ2VMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFiV2lkZ2V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYldpZGdldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJXaWRnZXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFiV2lkZ2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJXaWRnZXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFiV2lkZ2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hEcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c0N1cnJlbnRUYWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkVGFiVmlld0F0IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFiQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdHJpcEVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRm9jdXNDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFzRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3VycmVudFRhYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGl2aWRlckRyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGl2aWRlckRyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZWZ0U3RyaXBEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExlZnRTdHJpcERyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSaWdodFN0cmlwRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSaWdodFN0cmlwRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmlwRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlwRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUYWJsZUxheW91dCIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZUxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZUxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzQ29sdW1uQ29sbGFwc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NvbHVtblNocmlua2FibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29sdW1uU3RyZXRjaGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hyaW5rQWxsQ29sdW1ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdHJldGNoQWxsQ29sdW1ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uQ29sbGFwc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNDb2xsYXBzZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uU2hyaW5rYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU2hyaW5rYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5TdHJldGNoYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU3RyZXRjaGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hyaW5rQWxsQ29sdW1ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNocmlua0FsbENvbHVtbnMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZXRjaEFsbENvbHVtbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJldGNoQWxsQ29sdW1ucyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUYWJsZUxheW91dC5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRXZWlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRhYmxlUm93IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlUm93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlUm93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VmlydHVhbENoaWxkQXQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpcnR1YWxDaGlsZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVSb3cuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVSb3cuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdFdlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVSb3cuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFibGVSb3cuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImNvbHVtbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzcGFuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXh0U3dpdGNoZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVmlld1N3aXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dFN3aXRjaGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRTd2l0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0U3dpdGNoZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFN3aXRjaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0Q3VycmVudFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRleHRWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblByZURyYXdMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRleHRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkVGV4dENoYW5nZWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndhdGNoZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0V2F0Y2hlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmVnaW5CYXRjaEVkaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJyaW5nUG9pbnRJbnRvVmlldyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyQ29tcG9zaW5nVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVidWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXB0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpZFRvdWNoRm9jdXNTZWxlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEJhdGNoRWRpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0cmFjdFRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRXh0cmFjdGVkVGV4dFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dG9MaW5rTWFzayIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kRHJhd2FibGVQYWRkaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kRHJhd2FibGVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kUGFkZGluZ0JvdHRvbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wb3VuZFBhZGRpbmdMZWZ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kUGFkZGluZ1JpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kUGFkZGluZ1RvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SGludFRleHRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRUZXh0Q29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0RWRpdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRNb3ZlbWVudE1ldGhvZCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuTW92ZW1lbnRNZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWRpdGFibGVUZXh0IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2l6ZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5UZXh0VXRpbHMuVHJ1bmNhdGVBdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZW5kZWRQYWRkaW5nQm90dG9tIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dGVuZGVkUGFkZGluZ1RvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWx0ZXJzIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LklucHV0RmlsdGVyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RnJlZXplc1RleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyYXZpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGludCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGludFRleHRDb2xvcnMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW1lQWN0aW9uSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW1lQWN0aW9uTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEltZU9wdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRFeHRyYXMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JlYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUJvdW5kcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3VuZHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5rVGV4dENvbG9ycyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5rc0NsaWNrYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb3ZlbWVudE1ldGhvZCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuTW92ZW1lbnRNZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWludCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFpbnRGbGFncyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlSW1lT3B0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0aW9uRW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGlvblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dENvbG9ycyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0Q29sb3JzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0U2NhbGVYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dFNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFBhZGRpbmdCb3R0b20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG90YWxQYWRkaW5nTGVmdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFBhZGRpbmdSaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFBhZGRpbmdUb3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhbnNmb3JtYXRpb25NZXRob2QiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQubWV0aG9kLlRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZWZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVybHMiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuc3R5bGUuVVJMU3BhbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1NlbGVjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbnB1dE1ldGhvZFRhcmdldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVDdXJzb3JUb1Zpc2libGVPZmZzZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQmVnaW5CYXRjaEVkaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ29tbWl0Q29tcGxldGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkVkaXRvckFjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbkNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkVuZEJhdGNoRWRpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVEcmF3IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByaXZhdGVJTUVDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc3RvcmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNhdmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VsZWN0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbFN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbEVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGV4dENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiZWZvcmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZ0ZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHRDb250ZXh0TWVudUl0ZW0iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVRleHRDaGFuZ2VkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3YXRjaGVyIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXV0b0xpbmtNYXNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29tcG91bmREcmF3YWJsZVBhZGRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3VuZERyYXdhYmxlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3Vyc29yVmlzaWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2libGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RWRpdGFibGVGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUuRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbGxpcHNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZSIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRVdGlscy5UcnVuY2F0ZUF0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVtcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVtcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeHRyYWN0ZWRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlcnMiIHR5cGU9ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyYW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyZWV6ZXNUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJlZXplc1RleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIaWdobGlnaHRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGludCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhpbnRUZXh0Q29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGludFRleHRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvcml6b250YWxseVNjcm9sbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXRoZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1lQWN0aW9uTGFiZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbWVPcHRpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1lT3B0aW9ucyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluY2x1ZGVGb250UGFkZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVwYWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXRFeHRyYXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnB1dFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2V5TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5LZXlMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lU3BhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im11bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExpbmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5rVGV4dENvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExpbmtUZXh0Q29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9ycyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5rc0NsaWNrYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hldGhlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXJxdWVlUmVwZWF0TGltaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXJxdWVlTGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhFbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhlbXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhIZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhMaW5lcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heGxpbmVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4V2lkdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhwaXhlbHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5FbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW5lbXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5IZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW5IZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5MaW5lcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbmxpbmVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluV2lkdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW5waXhlbHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNb3ZlbWVudE1ldGhvZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW92ZW1lbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuTW92ZW1lbnRNZXRob2QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25FZGl0b3JBY3Rpb25MaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Lk9uRWRpdG9yQWN0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFpbnRGbGFncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJpdmF0ZUltZU9wdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJhd0lucHV0VHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY3JvbGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNjcm9sbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdEFsbE9uRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RBbGxPbkZvY3VzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNoYWRvd0xheWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2luZ2xlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2luZ2xlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpbmdsZUxpbmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3Bhbm5hYmxlRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZS5GYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3LkJ1ZmZlclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3LkJ1ZmZlclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dEFwcGVhcmFuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0Q29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9ycyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0S2VlcFN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRLZWVwU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3LkJ1ZmZlclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dFNjYWxlWCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuVHJhbnNmb3JtYXRpb25NZXRob2QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHlwZWZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUeXBlZmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dFZpZXcuQnVmZmVyVHlwZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3LkJ1ZmZlclR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5UZXh0Vmlldy5CdWZmZXJUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUZXh0Vmlldy5PbkVkaXRvckFjdGlvbkxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkVkaXRvckFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbklkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRleHRWaWV3LlNhdmVkU3RhdGUiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXcuQmFzZVNhdmVkU3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRpbWVQaWNrZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lUGlja2VyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRpbWVQaWNrZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZVBpY2tlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UaW1lUGlja2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lUGlja2VyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRpbWVQaWNrZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SG91ciIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRNaW51dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpczI0SG91clZpZXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbnRIb3VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3VycmVudEhvdXIiIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbnRNaW51dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJyZW50TWludXRlIiB0eXBlPSJqYXZhLmxhbmcuSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJczI0SG91clZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpczI0SG91clZpZXciIHR5cGU9ImphdmEubGFuZy5Cb29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uVGltZUNoYW5nZWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uVGltZUNoYW5nZWRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGltZVBpY2tlci5PblRpbWVDaGFuZ2VkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRpbWVQaWNrZXIuT25UaW1lQ2hhbmdlZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblRpbWVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UaW1lUGlja2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3VyT2ZEYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRvYXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb2FzdCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Ub2FzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREdXJhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcmF2aXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxNYXJnaW4iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJ0aWNhbE1hcmdpbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYT2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFlPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFrZVRleHQiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5Ub2FzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlVGV4dCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRvYXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldER1cmF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcmF2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXJnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3Jpem9udGFsTWFyZ2luIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVydGljYWxNYXJnaW4iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkxFTkdUSF9MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRU5HVEhfU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUb2dnbGVCdXR0b24iCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb2dnbGVCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVG9nZ2xlQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb2dnbGVCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVG9nZ2xlQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb2dnbGVCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVG9nZ2xlQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0T2ZmIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0T24iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRPZmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0T2ZmIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRPbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRPbiIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUd29MaW5lTGlzdEl0ZW0iCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUd29MaW5lTGlzdEl0ZW0iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVHdvTGluZUxpc3RJdGVtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlR3b0xpbmVMaXN0SXRlbSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Ud29MaW5lTGlzdEl0ZW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlR3b0xpbmVMaXN0SXRlbSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Ud29MaW5lTGlzdEl0ZW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0MSIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlkZW9WaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5TdXJmYWNlVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuTWVkaWFDb250cm9sbGVyLk1lZGlhUGxheWVyQ29udHJvbCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlkZW9WaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlZpZGVvVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWRlb1ZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlkZW9WaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWRlb1ZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlkZW9WaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuUGF1c2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhblNlZWtCYWNrd2FyZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuU2Vla0ZvcndhcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ1ZmZlclBlcmNlbnRhZ2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldER1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGxheWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF1c2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVBZGp1c3RlZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2lyZWRTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWVrVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2VjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVkaWFDb250cm9sbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udHJvbGxlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuTWVkaWFDb250cm9sbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ29tcGxldGlvbkxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllci5PbkNvbXBsZXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkVycm9yTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyLk9uRXJyb3JMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPblByZXBhcmVkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyLk9uUHJlcGFyZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWRlb1BhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZGVvVVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BQbGF5YmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VzcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlld0FuaW1hdG9yIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0FuaW1hdG9yIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlZpZXdBbmltYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3QW5pbWF0b3IiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlld0FuaW1hdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5ZWRDaGlsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbkFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE91dEFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFuaW1hdGVGaXJzdFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpc3BsYXllZENoaWxkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hpY2hDaGlsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluQW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5BbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluQW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRBbmltYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRBbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE91dEFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd05leHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dQcmV2aW91cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlld0ZsaXBwZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVmlld0FuaW1hdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0ZsaXBwZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlld0ZsaXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0ZsaXBwZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlld0ZsaXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpc0F1dG9TdGFydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGbGlwcGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXV0b1N0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b1N0YXJ0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsaXBJbnRlcnZhbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpc2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RmxpcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BGbGlwcGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlld1N3aXRjaGVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LlZpZXdBbmltYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdTd2l0Y2hlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5WaWV3U3dpdGNoZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld1N3aXRjaGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlZpZXdTd2l0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZhY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJhbmRyb2lkLndpZGdldC5WaWV3U3dpdGNoZXIuVmlld0ZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXdTd2l0Y2hlci5WaWV3RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibWFrZVZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iV3JhcHBlckxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0V3JhcHBlZEFkYXB0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJab29tQnV0dG9uIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkltYWdlQnV0dG9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlldy5PbkxvbmdDbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJab29tQnV0dG9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Llpvb21CdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWm9vbUJ1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5ab29tQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJab29tQnV0dG9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Llpvb21CdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkxvbmdDbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFpvb21TcGVlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWVkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ilpvb21CdXR0b25zQ29udHJvbGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlldy5PblRvdWNoTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilpvb21CdXR0b25zQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5ab29tQnV0dG9uc0NvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvd25lclZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGFpbmVyIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRab29tQ29udHJvbHMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F1dG9EaXNtaXNzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmlzaWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1dG9EaXNtaXNzZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvRGlzbWlzcyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb2N1c2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb2N1c2FibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25ab29tTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuWm9vbUJ1dHRvbnNDb250cm9sbGVyLk9uWm9vbUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpc2libGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFpvb21JbkVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFpvb21PdXRFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRab29tU3BlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iWm9vbUJ1dHRvbnNDb250cm9sbGVyLk9uWm9vbUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblZpc2liaWxpdHlDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uWm9vbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iem9vbUluIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJab29tQ29udHJvbHMiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWm9vbUNvbnRyb2xzIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Llpvb21Db250cm9scyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJab29tQ29udHJvbHMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuWm9vbUNvbnRyb2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaGlkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXNab29tSW5FbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzWm9vbU91dEVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc0VuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25ab29tSW5DbGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPblpvb21PdXRDbGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRab29tU3BlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwiCis+Cis8aW50ZXJmYWNlIG5hbWU9IlByZWRpY2F0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFwcGx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImRhbHZpay5hbm5vdGF0aW9uIgorPgorPGNsYXNzIG5hbWU9IlRlc3RUYXJnZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGVzdFRhcmdldENsYXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iZGFsdmlrLmJ5dGVjb2RlIgorPgorPGludGVyZmFjZSBuYW1lPSJPcGNvZGVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJPUF9BRERfRE9VQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FERF9ET1VCTEVfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUREX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FERF9GTE9BVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BRERfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FERF9JTlRfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUREX0lOVF9MSVQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BRERfSU5UX0xJVDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUREX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUREX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUdFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfQ0hBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfT0JKRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUdFVF9TSE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FORF9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQU5EX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BTkRfSU5UX0xJVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FORF9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BTkRfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BTkRfTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BUFVUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9CT09MRUFOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9CWVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9DSEFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9PQkpFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BUFVUX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVJSQVlfTEVOR1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQlJFQUtQT0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DSEVDS19DQVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ01QR19ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DTVBHX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ01QTF9ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DTVBMX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ01QX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DT05TVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0NPTlNUXzE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0NPTlNUX0NMQVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfSElHSDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfU1RSSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfU1RSSU5HX0pVTUJPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0NPTlNUX1dJREVfMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DT05TVF9XSURFXzMyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfV0lERV9ISUdIMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ESVZfRE9VQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0RJVl9ET1VCTEVfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRElWX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0RJVl9GTE9BVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ESVZfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0RJVl9JTlRfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRElWX0lOVF9MSVQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ESVZfSU5UX0xJVDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRElWX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRElWX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRE9VQkxFX1RPX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0RPVUJMRV9UT19JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRE9VQkxFX1RPX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRVhFQ1VURV9JTkxJTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRVhFQ1VURV9JTkxJTkVfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRklMTEVEX05FV19BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0ZJTExFRF9ORVdfQVJSQVlfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9GSUxMX0FSUkFZX0RBVEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9GTE9BVF9UT19ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRkxPQVRfVE9fSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0ZMT0FUX1RPX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfR09UTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0dPVE9fMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9HT1RPXzMyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUZfRVEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JRl9FUVoiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JRl9HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lGX0dFWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lGX0dUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUZfR1RaIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUZfTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JRl9MRVoiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JRl9MVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lGX0xUWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lGX05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUZfTkVaIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lHRVRfQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lHRVRfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lHRVRfQ0hBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lHRVRfT0JKRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVF9PQkpFQ1RfUVVJQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVF9RVUlDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JR0VUX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVF9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVF9XSURFX1FVSUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOU1RBTkNFX09GIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX0JZVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX0NIQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX0RPVUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JTlRfVE9fRkxPQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9ESVJFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5WT0tFX0RJUkVDVF9FTVBUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JTlZPS0VfRElSRUNUX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9JTlRFUkZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5WT0tFX0lOVEVSRkFDRV9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JTlZPS0VfU1RBVElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9TVEFUSUNfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5WT0tFX1NVUEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9TVVBFUl9RVUlDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JTlZPS0VfU1VQRVJfUVVJQ0tfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5WT0tFX1NVUEVSX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9WSVJUVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9WSVJUVUFMX1FVSUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9WSVJUVUFMX1FVSUNLX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9WSVJUVUFMX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JUFVUX0JPT0xFQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JUFVUX0JZVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JUFVUX0NIQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JUFVUX09CSkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVRfT0JKRUNUX1FVSUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVRfUVVJQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSVBVVF9TSE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVRfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVRfV0lERV9RVUlDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9MT05HX1RPX0RPVUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9MT05HX1RPX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0xPTkdfVE9fSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01PTklUT1JfRU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT05JVE9SX0VYSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFXzE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX0VYQ0VQVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01PVkVfRlJPTTE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX09CSkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTU9WRV9PQkpFQ1RfMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01PVkVfT0JKRUNUX0ZST00xNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTU9WRV9SRVNVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX1JFU1VMVF9PQkpFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX1JFU1VMVF9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTU9WRV9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX1dJREVfMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01PVkVfV0lERV9GUk9NMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01VTF9ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTVVMX0RPVUJMRV8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NVUxfRkxPQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTVVMX0ZMT0FUXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01VTF9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTVVMX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NVUxfSU5UX0xJVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01VTF9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NVUxfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NVUxfTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ORUdfRE9VQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05FR19GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ORUdfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05FR19MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05FV19BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05FV19JTlNUQU5DRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05PUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTk9UX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9OT1RfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9PUl9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfT1JfSU5UXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX09SX0lOVF9MSVQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9PUl9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9PUl9MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX09SX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUEFDS0VEX1NXSVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JFTV9ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUkVNX0RPVUJMRV8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRU1fRkxPQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUkVNX0ZMT0FUXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JFTV9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUkVNX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRU1fSU5UX0xJVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JFTV9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRU1fTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRU1fTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRVRVUk4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRVRVUk5fT0JKRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUkVUVVJOX1ZPSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRVRVUk5fV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JTVUJfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JTVUJfSU5UX0xJVDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0dFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NHRVRfQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NHRVRfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TR0VUX0NIQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0dFVF9PQkpFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TR0VUX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NHRVRfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NITF9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0hMX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TSExfSU5UX0xJVDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0hMX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0hMX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0hSX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TSFJfSU5UXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NIUl9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TSFJfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TSFJfTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TUEFSU0VfU1dJVENIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1BVVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TUFVUX0JPT0xFQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1BVVF9CWVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NQVVRfQ0hBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TUFVUX09CSkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TUFVUX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NQVVRfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TVUJfRE9VQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NVQl9ET1VCTEVfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1VCX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NVQl9GTE9BVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TVUJfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NVQl9JTlRfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1VCX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1VCX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVEhST1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9USFJPV19WRVJJRklDQVRJT05fRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVVNIUl9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVVNIUl9JTlRfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVVNIUl9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9VU0hSX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVVNIUl9MT05HXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1hPUl9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfWE9SX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9YT1JfSU5UX0xJVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1hPUl9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9YT1JfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9YT1JfTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iZGFsdmlrLnN5c3RlbSIKKz4KKzxjbGFzcyBuYW1lPSJBbGxvY2F0aW9uTGltaXRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxsb2NhdGlvbkxpbWl0RXJyb3IiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5BbGxvY2F0aW9uTGltaXRFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsbG9jYXRpb25MaW1pdEVycm9yIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uQWxsb2NhdGlvbkxpbWl0RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGV4Q2xhc3NMb2FkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGV4Q2xhc3NMb2FkZXIiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5EZXhDbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRleFBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRleE91dHB1dERpciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliUGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZXhGaWxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRleEZpbGUiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5EZXhGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGV4RmlsZSIKKyB0eXBlPSJkYWx2aWsuc3lzdGVtLkRleEZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudHJpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZXhPcHROZWVkZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERleCIKKyByZXR1cm49ImRhbHZpay5zeXN0ZW0uRGV4RmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VQYXRoTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0UGF0aE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdGhDbGFzc0xvYWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoQ2xhc3NMb2FkZXIiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5QYXRoQ2xhc3NMb2FkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0aENsYXNzTG9hZGVyIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uUGF0aENsYXNzTG9hZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliUGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3RlbnRpYWxEZWFkbG9ja0Vycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5WaXJ0dWFsTWFjaGluZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb3RlbnRpYWxEZWFkbG9ja0Vycm9yIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uUG90ZW50aWFsRGVhZGxvY2tFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvdGVudGlhbERlYWRsb2NrRXJyb3IiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5Qb3RlbnRpYWxEZWFkbG9ja0Vycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0YWxlRGV4Q2FjaGVFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhbGVEZXhDYWNoZUVycm9yIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uU3RhbGVEZXhDYWNoZUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhbGVEZXhDYWNoZUVycm9yIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uU3RhbGVEZXhDYWNoZUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRlbXBvcmFyeURpcmVjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZW1wb3JhcnlEaXJlY3RvcnkiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5UZW1wb3JhcnlEaXJlY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0VXBEaXJlY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VEaXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXBEaXJlY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZURpciIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRvdWNoRGV4IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRvdWNoRGV4IgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uVG91Y2hEZXgiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibWFpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRleEZpbGVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZNRGVidWciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZHVtcEhwcm9mRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb2NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0cnVjdGlvbkNvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9hZGVkQ2xhc3NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZWJ1Z2dlckNvbm5lY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVidWdnaW5nRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3REZWJ1Z2dlckFjdGl2aXR5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRMb2FkZWRDbGFzc2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRBbGxvY0NvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRJbnN0cnVjdGlvbkNvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxsb2NhdGlvbkxpbWl0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHbG9iYWxBbGxvY2F0aW9uTGltaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWxsb2NDb3VudGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RW11bGF0b3JUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRJbnN0cnVjdGlvbkNvdW50aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRNZXRob2RUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRNZXRob2RUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFjZUZpbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcEFsbG9jQ291bnRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wRW11bGF0b3JUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcEluc3RydWN0aW9uQ291bnRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wTWV0aG9kVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRocmVhZENwdVRpbWVOYW5vcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9NRVRIT0RfVFJBQ0VfRklMRV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90Oy9zZGNhcmQvZG10cmFjZS50cmFjZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfQUxMX0NPVU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0FMTE9DQVRFRF9CWVRFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9HTE9CQUxfQUxMT0NBVEVEX09CSkVDVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0NMQVNTX0lOSVRfQ09VTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX0dMT0JBTF9DTEFTU19JTklUX1RJTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX0dMT0JBTF9FWFRfQUxMT0NBVEVEX0JZVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX0dMT0JBTF9FWFRfQUxMT0NBVEVEX09CSkVDVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0VYVF9GUkVFRF9CWVRFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0VYVF9GUkVFRF9PQkpFQ1RTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9HTE9CQUxfRlJFRURfQllURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0ZSRUVEX09CSkVDVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0dDX0lOVk9DQVRJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfQUxMT0NBVEVEX0JZVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfVEhSRUFEX0FMTE9DQVRFRF9PQkpFQ1RTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfQ0xBU1NfSU5JVF9DT1VOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwOTcxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfQ0xBU1NfSU5JVF9USU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE5NDMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1RIUkVBRF9FWFRfQUxMT0NBVEVEX0JZVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM2ODcwOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfVEhSRUFEX0VYVF9BTExPQ0FURURfT0JKRUNUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2ODQzNTQ1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1RIUkVBRF9FWFRfRlJFRURfQllURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMjE0NzQ4MzY0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1RIUkVBRF9FWFRfRlJFRURfT0JKRUNUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNzM3NDE4MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfRlJFRURfQllURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfRlJFRURfT0JKRUNUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2MjE0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1RIUkVBRF9HQ19JTlZPQ0FUSU9OUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDg1NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBQ0VfQ09VTlRfQUxMT0NTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVk1SdW50aW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdjU29mdFJlZmVyZW5jZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxCeXRlc0FsbG9jYXRlZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW5pbXVtSGVhcFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1bnRpbWUiCisgcmV0dXJuPSJkYWx2aWsuc3lzdGVtLlZNUnVudGltZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldEhlYXBVdGlsaXphdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuRmluYWxpemF0aW9uU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5pbXVtSGVhcFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0SGVhcFV0aWxpemF0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1RhcmdldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVk1TdGFjayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZNU3RhY2siCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5WTVN0YWNrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxpbmdDbGFzc0xvYWRlciIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FsbGluZ0NsYXNzTG9hZGVyMiIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3NlcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0O1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4RGVwdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcEF0UHJpdmlsZWdlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRTdGFja1RyYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVtZW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ilp5Z290ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZm9yayIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ya0FuZFNwZWNpYWxpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdpZHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWJ1Z0ZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJsaW1pdHMiIHR5cGU9ImludFtdW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ya0FuZFNwZWNpYWxpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdpZHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVEZWJ1Z2dlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmxpbWl0cyIgdHlwZT0iaW50W11bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JrU3lzdGVtU2VydmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnaWRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVidWdGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJybGltaXRzIiB0eXBlPSJpbnRbXVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcmtTeXN0ZW1TZXJ2ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdpZHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVEZWJ1Z2dlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmxpbWl0cyIgdHlwZT0iaW50W11bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFQlVHX0VOQUJMRV9BU1NFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQlVHX0VOQUJMRV9DSEVDS0pOSSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVCVUdfRU5BQkxFX0RFQlVHR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUJVR19FTkFCTEVfU0FGRU1PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEuYXd0LmZvbnQiCis+Cis8Y2xhc3MgbmFtZT0iTnVtZXJpY1NoYXBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dHVhbFNoYXBlciIKKyByZXR1cm49ImphdmEuYXd0LmZvbnQuTnVtZXJpY1NoYXBlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYW5nZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdENvbnRleHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZXh0dWFsU2hhcGVyIgorIHJldHVybj0iamF2YS5hd3QuZm9udC5OdW1lcmljU2hhcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmdlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhbmdlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaGFwZXIiCisgcmV0dXJuPSJqYXZhLmF3dC5mb250Lk51bWVyaWNTaGFwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2luZ2xlUmFuZ2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NvbnRleHR1YWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNoYXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hhcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTExfUkFOR0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFSQUJJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkVOR0FMSSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVkFOQUdBUkkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVBU1RFUk5fQVJBQklDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFVEhJT1BJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1NTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVVUk9QRUFOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHVUpBUkFUSSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdVUk1VS0hJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0FOTkFEQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0hNRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQUxBWUFMQU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTkdPTElBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2MjE0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNWUFOTUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJWUEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFNSUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVMVUdVIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIQUkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJQkVUQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dEF0dHJpYnV0ZSIKKyBleHRlbmRzPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yLkF0dHJpYnV0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEF0dHJpYnV0ZSIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJCQUNLR1JPVU5EIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCSURJX0VNQkVERElORyIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBUl9SRVBMQUNFTUVOVCIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkFNSUxZIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT05UIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JFR1JPVU5EIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlBVVF9NRVRIT0RfSElHSExJR0hUIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlBVVF9NRVRIT0RfVU5ERVJMSU5FIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVVNUSUZJQ0FUSU9OIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVVNUSUZJQ0FUSU9OX0ZVTEwiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkpVU1RJRklDQVRJT05fTk9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNRVJJQ19TSEFQSU5HIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUVVJFIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUVVJFX09CTElRVUUiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPU1RVUkVfUkVHVUxBUiIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlVOX0RJUkVDVElPTiIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlVOX0RJUkVDVElPTl9MVFIiCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlVOX0RJUkVDVElPTl9SVEwiCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0laRSIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSSUtFVEhST1VHSCIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSSUtFVEhST1VHSF9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVBFUlNDUklQVCIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VQRVJTQ1JJUFRfU1VCIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUEVSU0NSSVBUX1NVUEVSIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNXQVBfQ09MT1JTIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTV0FQX0NPTE9SU19PTiIKKyB0eXBlPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0ZPUk0iCisgdHlwZT0iamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVSTElORSIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJMSU5FX0xPV19EQVNIRUQiCisgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJMSU5FX0xPV19ET1RURUQiCisgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJMSU5FX0xPV19HUkFZIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVSTElORV9MT1dfT05FX1BJWEVMIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVSTElORV9MT1dfVFdPX1BJWEVMIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVSTElORV9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuSW50ZWdlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUlHSFQiCisgdHlwZT0iamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9CT0xEIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUlHSFRfREVNSUJPTEQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9ERU1JTElHSFQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9FWFRSQUJPTEQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9FWFRSQV9MSUdIVCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VJR0hUX0hFQVZZIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUlHSFRfTElHSFQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9NRURJVU0iCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9SRUdVTEFSIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUlHSFRfU0VNSUJPTEQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9VTFRSQUJPTEQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRFRIIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSURUSF9DT05ERU5TRUQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRFRIX0VYVEVOREVEIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSURUSF9SRUdVTEFSIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSURUSF9TRU1JX0NPTkRFTlNFRCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lEVEhfU0VNSV9FWFRFTkRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5iZWFucyIKKz4KKzxjbGFzcyBuYW1lPSJJbmRleGVkUHJvcGVydHlDaGFuZ2VFdmVudCIKKyBleHRlbmRzPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlRXZlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmRleGVkUHJvcGVydHlDaGFuZ2VFdmVudCIKKyB0eXBlPSJqYXZhLmJlYW5zLkluZGV4ZWRQcm9wZXJ0eUNoYW5nZUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3BlcnR5Q2hhbmdlRXZlbnQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkV2ZW50T2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvcGVydHlDaGFuZ2VFdmVudCIKKyB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlRXZlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkVmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TmV3VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9sZFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wYWdhdGlvbklkIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BhZ2F0aW9uSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wYWdhdGlvbklkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5FdmVudExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0icHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlByb3BlcnR5Q2hhbmdlTGlzdGVuZXJQcm94eSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lclByb3h5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3BlcnR5Q2hhbmdlTGlzdGVuZXJQcm94eSIKKyB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXJQcm94eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3BlcnR5Q2hhbmdlU3VwcG9ydCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvcGVydHlDaGFuZ2VTdXBwb3J0IgorIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VTdXBwb3J0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQmVhbiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcmVJbmRleGVkUHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJlSW5kZXhlZFByb3BlcnR5Q2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcGVydHlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGRWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyZUluZGV4ZWRQcm9wZXJ0eUNoYW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJlUHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJlUHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJlUHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyZVByb3BlcnR5Q2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVycyIKKyByZXR1cm49ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVycyIKKyByZXR1cm49ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTGlzdGVuZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcGVydHlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLmlvIgorPgorPGNsYXNzIG5hbWU9IkJ1ZmZlcmVkSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iYnVmIgorIHR5cGU9ImJ5dGVbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJ0cnVlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFya2xpbWl0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hcmtwb3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCdWZmZXJlZE91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbHRlck91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uQnVmZmVyZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWZmZXJlZE91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkJ1ZmZlcmVkT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJidWYiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ1ZmZlcmVkUmVhZGVyIgorIGV4dGVuZHM9ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVmZmVyZWRSZWFkZXIiCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZFJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVmZmVyZWRSZWFkZXIiCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZFJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ1ZmZlcmVkV3JpdGVyIgorIGV4dGVuZHM9ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVmZmVyZWRXcml0ZXIiCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZFdyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uQnVmZmVyZWRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3TGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2J1ZiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnl0ZUFycmF5SW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGVBcnJheUlucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnl0ZUFycmF5SW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJidWYiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9CeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGlieXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQnl0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYnVmIgorIHR5cGU9ImJ5dGVbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyQXJyYXlSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQXJyYXlSZWFkZXIiCisgdHlwZT0iamF2YS5pby5DaGFyQXJyYXlSZWFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hhckFycmF5UmVhZGVyIgorIHR5cGU9ImphdmEuaW8uQ2hhckFycmF5UmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJ1ZiIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb3VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtYXJrZWRQb3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyQXJyYXlXcml0ZXIiCisgZXh0ZW5kcz0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQXJyYXlXcml0ZXIiCisgdHlwZT0iamF2YS5pby5DaGFyQXJyYXlXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQXJyYXlXcml0ZXIiCisgdHlwZT0iamF2YS5pby5DaGFyQXJyYXlXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0NoYXJBcnJheSIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJ1ZiIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb3VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhckNvbnZlcnNpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoYXJDb252ZXJzaW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uQ2hhckNvbnZlcnNpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQ29udmVyc2lvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLkNoYXJDb252ZXJzaW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDbG9zZWFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEYXRhSW5wdXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJyZWFkQm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEJ5dGUiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRDaGFyIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGdWxseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGdWxseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRMaW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVURiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVuc2lnbmVkQnl0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVW5zaWduZWRTaG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwQnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRhdGFJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbHRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLkRhdGFJbnB1dCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YUlucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRGF0YUlucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZ1bGx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZ1bGx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRMaW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVVRGIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVVRGIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLkRhdGFJbnB1dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVuc2lnbmVkQnl0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVW5zaWduZWRTaG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwQnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkRhdGFPdXRwdXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbmVCeXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2hhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVEb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVVVEYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRhdGFPdXRwdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YU91dHB1dCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YU91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkRhdGFPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2hhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVEb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVVVEYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJ3cml0dGVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFT0ZFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVPRkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLkVPRkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVPRkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLkVPRkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRXh0ZXJuYWxpemFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJyZWFkRXh0ZXJuYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmlvLk9iamVjdElucHV0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFeHRlcm5hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJqYXZhLmlvLk9iamVjdE91dHB1dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkZpbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGUiCisgdHlwZT0iamF2YS5pby5GaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGUiCisgdHlwZT0iamF2YS5pby5GaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZSIKKyB0eXBlPSJqYXZhLmlvLkZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJQYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlIgorIHR5cGU9ImphdmEuaW8uRmlsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuUmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuV3JpdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5vdGhlciIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZU5ld0ZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUZW1wRmlsZSIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1ZmZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVGVtcEZpbGUiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdWZmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdG9yeSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZU9uRXhpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhpc3RzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBYnNvbHV0ZUZpbGUiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWJzb2x1dGVQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYW5vbmljYWxGaWxlIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYW5vbmljYWxQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnRGaWxlIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJzb2x1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0b3J5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSGlkZGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0TW9kaWZpZWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXIiIHR5cGU9ImphdmEuaW8uRmlsZW5hbWVGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEZpbGVzIgorIHJldHVybj0iamF2YS5pby5GaWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEZpbGVzIgorIHJldHVybj0iamF2YS5pby5GaWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iamF2YS5pby5GaWxlbmFtZUZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0RmlsZXMiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJqYXZhLmlvLkZpbGVGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdFJvb3RzIgorIHJldHVybj0iamF2YS5pby5GaWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJta2RpciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWtkaXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW5hbWVUbyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXN0TW9kaWZpZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYWRPbmx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1VSSSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1VSTCIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkVVJMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJwYXRoU2VwYXJhdG9yIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGF0aFNlcGFyYXRvckNoYXIiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZXBhcmF0b3IiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZXBhcmF0b3JDaGFyIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVEZXNjcmlwdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVEZXNjcmlwdG9yIgorIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlN5bmNGYWlsZWRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uU3luY0ZhaWxlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJlcnIiCisgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbiIKKyB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im91dCIKKyB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRmlsZUZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFjY2VwdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aG5hbWUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRmlsZUlucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5GaWxlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5GaWxlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGRCIKKyByZXR1cm49ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZU91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5DbG9zZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBlbmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUNoYW5uZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RkQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQnl0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWxlUGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEuaW8uRmlsZVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZVJlYWRlciIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZVJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbGVSZWFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVSZWFkZXIiCisgdHlwZT0iamF2YS5pby5GaWxlUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVSZWFkZXIiCisgdHlwZT0iamF2YS5pby5GaWxlUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZW5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWxlV3JpdGVyIgorIGV4dGVuZHM9ImphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZVdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbGVXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uRmlsZVdyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZVdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbGVXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZVdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbGVXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVXcml0ZXIiCisgdHlwZT0iamF2YS5pby5GaWxlV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZW5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGVuZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRmlsZW5hbWVGaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY2NlcHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRmlsdGVySW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbHRlcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsdGVySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iaW4iCisgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbHRlck91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbHRlck91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkZpbHRlck91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUJ5dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJvdXQiCisgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsdGVyUmVhZGVyIgorIGV4dGVuZHM9ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWx0ZXJSZWFkZXIiCisgdHlwZT0iamF2YS5pby5GaWx0ZXJSZWFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJpbiIKKyB0eXBlPSJqYXZhLmlvLlJlYWRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWx0ZXJXcml0ZXIiCisgZXh0ZW5kcz0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbHRlcldyaXRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbHRlcldyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ib3V0IgorIHR5cGU9ImphdmEuaW8uV3JpdGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJGbHVzaGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IklPRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJT0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSU9FeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF2YWlsYWJsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZGxpbWl0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFya1N1cHBvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklucHV0U3RyZWFtUmVhZGVyIgorIGV4dGVuZHM9ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRTdHJlYW1SZWFkZXIiCisgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFN0cmVhbVJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFN0cmVhbVJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlYyIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RGVjb2RlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRTdHJlYW1SZWFkZXIiCisgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnRlcnJ1cHRlZElPRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcnJ1cHRlZElPRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uSW50ZXJydXB0ZWRJT0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVycnVwdGVkSU9FeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5JbnRlcnJ1cHRlZElPRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iYnl0ZXNUcmFuc2ZlcnJlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJjbGFzc25hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnZhbGlkT2JqZWN0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZE9iamVjdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLkludmFsaWRPYmplY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGluZU51bWJlcklucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVySW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVOdW1iZXJJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkxpbmVOdW1iZXJJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxpbmVOdW1iZXJSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5CdWZmZXJlZFJlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVOdW1iZXJSZWFkZXIiCisgdHlwZT0iamF2YS5pby5MaW5lTnVtYmVyUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5lTnVtYmVyUmVhZGVyIgorIHR5cGU9ImphdmEuaW8uTGluZU51bWJlclJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLk9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLk5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLk5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5PYmplY3RTdHJlYW1FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5Ob3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5Ob3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik9iamVjdElucHV0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YUlucHV0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXZhaWxhYmxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkT2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9Ta2lwIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iT2JqZWN0SW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5PYmplY3RJbnB1dCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLk9iamVjdFN0cmVhbUNvbnN0YW50cyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iT2JqZWN0SW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPYmplY3RJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVmYXVsdFJlYWRPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5Ob3RBY3RpdmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlUmVzb2x2ZU9iamVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ2xhc3NEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGaWVsZHMiCisgcmV0dXJuPSJqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtLkdldEZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5Ob3RBY3RpdmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGdWxseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnVsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkT2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik9wdGlvbmFsRGF0YUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5PcHRpb25hbERhdGFFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZE9iamVjdE92ZXJyaWRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJPcHRpb25hbERhdGFFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uT3B0aW9uYWxEYXRhRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU3RyZWFtSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlN0cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5TdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVURiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRVbnNoYXJlZCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVW5zaWduZWRCeXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVW5zaWduZWRTaG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJWYWxpZGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEuaW8uT2JqZWN0SW5wdXRWYWxpZGF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmlvcml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkT2JqZWN0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkludmFsaWRPYmplY3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5Ob3RBY3RpdmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvc0NsYXNzIiB0eXBlPSJqYXZhLmlvLk9iamVjdFN0cmVhbUNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZVByb3h5Q2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyZmFjZU5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwQnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPYmplY3RJbnB1dFN0cmVhbS5HZXRGaWVsZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdElucHV0U3RyZWFtLkdldEZpZWxkIgorIHR5cGU9ImphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0uR2V0RmllbGQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVmYXVsdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdFN0cmVhbUNsYXNzIgorIHJldHVybj0iamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJPYmplY3RJbnB1dFZhbGlkYXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZU9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZE9iamVjdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JbnZhbGlkT2JqZWN0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iT2JqZWN0T3V0cHV0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YU91dHB1dCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik9iamVjdE91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5PYmplY3RPdXRwdXQiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5PYmplY3RTdHJlYW1Db25zdGFudHMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdE91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPYmplY3RPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5PYmplY3RPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFubm90YXRlQ2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYW5ub3RhdGVQcm94eUNsYXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlZmF1bHRXcml0ZU9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWluIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlUmVwbGFjZU9iamVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGaWVsZHMiCisgcmV0dXJuPSJqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbS5QdXRGaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUNsYXNzRGVzY3JpcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzRGVzYyIgdHlwZT0iamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVEb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUZpZWxkcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlSW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVMb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlT2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlT2JqZWN0T3ZlcnJpZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVN0cmVhbUhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVVRGIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVW5zaGFyZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik9iamVjdE91dHB1dFN0cmVhbS5QdXRGaWVsZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdE91dHB1dFN0cmVhbS5QdXRGaWVsZCIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbS5QdXRGaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT2JqZWN0T3V0cHV0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPYmplY3RTdHJlYW1DbGFzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImZvckNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpZWxkIgorIHJldHVybj0iamF2YS5pby5PYmplY3RTdHJlYW1GaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZHMiCisgcmV0dXJuPSJqYXZhLmlvLk9iamVjdFN0cmVhbUZpZWxkW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VyaWFsVmVyc2lvblVJRCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9va3VwIgorIHJldHVybj0iamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTk9fRklFTERTIgorIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRmllbGRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik9iamVjdFN0cmVhbUNvbnN0YW50cyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfVkVSU0lPTl8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9WRVJTSU9OXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0JMT0NLX0RBVEEiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19FTlVNIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0VYVEVSTkFMSVpBQkxFIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfU0VSSUFMSVpBQkxFIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfV1JJVEVfTUVUSE9EIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX01BR0lDIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMjEyNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX1ZFUlNJT04iCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VCQ0xBU1NfSU1QTEVNRU5UQVRJT05fUEVSTUlTU0lPTiIKKyB0eXBlPSJqYXZhLmlvLlNlcmlhbGl6YWJsZVBlcm1pc3Npb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VCU1RJVFVUSU9OX1BFUk1JU1NJT04iCisgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGVQZXJtaXNzaW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX0FSUkFZIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19CQVNFIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19CTE9DS0RBVEEiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX0JMT0NLREFUQUxPTkciCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX0NMQVNTIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19DTEFTU0RFU0MiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX0VOREJMT0NLREFUQSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENfRU5VTSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENfRVhDRVBUSU9OIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19MT05HU1RSSU5HIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19NQVgiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX05VTEwiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX09CSkVDVCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENfUFJPWFlDTEFTU0RFU0MiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX1JFRkVSRU5DRSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENfUkVTRVQiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX1NUUklORyIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmFzZVdpcmVIYW5kbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MjU3NTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPYmplY3RTdHJlYW1GaWVsZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iT2JqZWN0U3RyZWFtRmllbGQiCisgdHlwZT0iamF2YS5pby5PYmplY3RTdHJlYW1GaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdFN0cmVhbUZpZWxkIgorIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRmllbGQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bnNoYXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlQ29kZSIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcmltaXRpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVW5zaGFyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT3B0aW9uYWxEYXRhRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iZW9mIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZW5ndGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRmx1c2hhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQnl0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPdXRwdXRTdHJlYW1Xcml0ZXIiCisgZXh0ZW5kcz0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPdXRwdXRTdHJlYW1Xcml0ZXIiCisgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPdXRwdXRTdHJlYW1Xcml0ZXIiCisgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3V0cHV0U3RyZWFtV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3V0cHV0U3RyZWFtV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXRFbmNvZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGlwZWRJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGlwZWRJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLlBpcGVkSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXBlZElucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUGlwZWRJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5QaXBlZE91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLmlvLlBpcGVkT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUJ5dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJQSVBFX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1ZmZlciIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpcGVkT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGlwZWRPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QaXBlZE91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBpcGVkT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUGlwZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJqYXZhLmlvLlBpcGVkSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5QaXBlZElucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUJ5dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGlwZWRSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXBlZFJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlBpcGVkUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGlwZWRSZWFkZXIiCisgdHlwZT0iamF2YS5pby5QaXBlZFJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5QaXBlZFdyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5QaXBlZFdyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpcGVkV3JpdGVyIgorIGV4dGVuZHM9ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGlwZWRXcml0ZXIiCisgdHlwZT0iamF2YS5pby5QaXBlZFdyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBpcGVkV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUGlwZWRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJqYXZhLmlvLlBpcGVkUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRlciIgdHlwZT0iamF2YS5pby5QaXBlZFJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJpbnRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5BcHBlbmRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpbnRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9mbHVzaCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpbnRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9mbHVzaCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrRXJyb3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyQXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG51bSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm51bSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsbnVtIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJib29sIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50ZiIKKyByZXR1cm49ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGYiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJBcnJheSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG51bSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbnVtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW51bSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsbnVtIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJib29sIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmludFdyaXRlciIKKyBleHRlbmRzPSJqYXZhLmlvLldyaXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b2ZsdXNoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3IiIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3IiIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvZmx1c2giIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVja0Vycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyQXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG51bSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm51bSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsbnVtIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm9vbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGYiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRmIgorIHJldHVybj0iamF2YS5pby5QcmludFdyaXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyQXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRudW0iIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm51bSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG51bSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJvb2wiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ib3V0IgorIHR5cGU9ImphdmEuaW8uV3JpdGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlB1c2hiYWNrSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlB1c2hiYWNrSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QdXNoYmFja0lucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlB1c2hiYWNrSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QdXNoYmFja0lucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InVucmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbmVCeXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYnVmIgorIHR5cGU9ImJ5dGVbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBvcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHVzaGJhY2tSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJSZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQdXNoYmFja1JlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlB1c2hiYWNrUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQdXNoYmFja1JlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlB1c2hiYWNrUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ1bnJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQ2hhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSYW5kb21BY2Nlc3NGaWxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YUlucHV0Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YU91dHB1dCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFuZG9tQWNjZXNzRmlsZSIKKyB0eXBlPSJqYXZhLmlvLlJhbmRvbUFjY2Vzc0ZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhbmRvbUFjY2Vzc0ZpbGUiCisgdHlwZT0iamF2YS5pby5SYW5kb21BY2Nlc3NGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RkQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVQb2ludGVyIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ2hhciIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnVsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnVsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRVVEYiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRVbnNpZ25lZEJ5dGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVuc2lnbmVkU2hvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VlayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGVuZ3RoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGVuZ3RoIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwQnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUJ5dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZURvdWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlSW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVMb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVVURiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLkNsb3NlYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUmVhZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2siIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFyayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRMaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrU3VwcG9ydGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5uaW8uQ2hhckJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXAiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJsb2NrIgorIHR5cGU9ImphdmEubGFuZy5PYmplY3QiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VxdWVuY2VJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VxdWVuY2VJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLlNlcXVlbmNlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzMSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iczIiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcXVlbmNlSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5TZXF1ZW5jZUlucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0Oz8gZXh0ZW5kcyBqYXZhLmlvLklucHV0U3RyZWFtJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTZXJpYWxpemFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2VyaWFsaXphYmxlUGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VyaWFsaXphYmxlUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLmlvLlNlcmlhbGl6YWJsZVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VyaWFsaXphYmxlUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLmlvLlNlcmlhbGl6YWJsZVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0cmVhbVRva2VuaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtVG9rZW5pemVyIgorIHR5cGU9ImphdmEuaW8uU3RyZWFtVG9rZW5pemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtVG9rZW5pemVyIgorIHR5cGU9ImphdmEuaW8uU3RyZWFtVG9rZW5pemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21tZW50Q2hhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW9sSXNTaWduaWZpY2FudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGluZW5vIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxvd2VyQ2FzZU1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUb2tlbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3JkaW5hcnlDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcmRpbmFyeUNoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VOdW1iZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXNoQmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGVDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFN5bnRheCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2xhc2hTbGFzaENvbW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGFzaFN0YXJDb21tZW50cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2hpdGVzcGFjZUNoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id29yZENoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJUVF9FT0YiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVF9FT0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVF9OVU1CRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVF9XT1JEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibnZhbCIKKyB0eXBlPSJkb3VibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdmFsIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0dHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nQnVmZmVySW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nQnVmZmVySW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5TdHJpbmdCdWZmZXJJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJ1ZmZlciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpbmdSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdSZWFkZXIiCisgdHlwZT0iamF2YS5pby5TdHJpbmdSZWFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nV3JpdGVyIgorIGV4dGVuZHM9ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uU3RyaW5nV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uU3RyaW5nV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ1ZmZlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN5bmNGYWlsZWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN5bmNGYWlsZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5TeW5jRmFpbGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVURkRhdGFGb3JtYXRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVURkRhdGFGb3JtYXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5VVEZEYXRhRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVRGRGF0YUZvcm1hdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLlVURkRhdGFGb3JtYXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXcml0ZUFib3J0ZWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5PYmplY3RTdHJlYW1FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXcml0ZUFib3J0ZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5Xcml0ZUFib3J0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb290Q2F1c2UiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImRldGFpbCIKKyB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldyaXRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5BcHBlbmRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRmx1c2hhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXcml0ZXIiCisgdHlwZT0iamF2YS5pby5Xcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXcml0ZXIiCisgdHlwZT0iamF2YS5pby5Xcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NrIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQ2hhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImxvY2siCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEubGFuZyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdE1ldGhvZEVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RNZXRob2RFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQWJzdHJhY3RNZXRob2RFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0TWV0aG9kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkFic3RyYWN0TWV0aG9kRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RTdHJpbmdCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0iIgorPgorPG1ldGhvZCBuYW1lPSJjYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFyQXQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludEF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludEJlZm9yZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb2RlUG9pbnRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVnaW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuc3VyZUNhcGFjaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0U3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YlN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0QnlDb2RlUG9pbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGFyQXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZW5ndGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3Vic3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJpbVRvU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkFwcGVuZGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQXBwZW5kYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQXBwZW5kYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5BcHBlbmRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBcml0aG1ldGljRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJpdGhtZXRpY0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFyaXRobWV0aWNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFycmF5U3RvcmVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheVN0b3JlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5BcnJheVN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQXJyYXlTdG9yZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzc2VydGlvbkVycm9yIgorIHR5cGU9ImphdmEubGFuZy5Bc3NlcnRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzc2VydGlvbkVycm9yIgorIHR5cGU9ImphdmEubGFuZy5Bc3NlcnRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCb29sZWFuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvb2xlYW4iCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvb2xlYW4iCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJvb2xlYW5WYWx1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGF0IiB0eXBlPSJqYXZhLmxhbmcuQm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRkFMU0UiCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVRSIKKyB0eXBlPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnl0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCeXRlIgorIHR5cGU9ImphdmEubGFuZy5CeXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGUiCisgdHlwZT0iamF2YS5sYW5nLkJ5dGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuQnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUJ5dGUiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuQnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5CeXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9WQUxVRSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEUiCisgdHlwZT0iamF2YS5sYW5nLkNsYXNzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hhckF0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YlNlcXVlbmNlIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2hhcmFjdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoYXJhY3RlciIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGFyQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hhclZhbHVlIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb2RlUG9pbnRBdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXEiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbWl0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QmVmb3JlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb2RlUG9pbnRCZWZvcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QmVmb3JlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVnaW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlnaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaWdpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JEaWdpdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlnaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXJlY3Rpb25hbGl0eSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXJlY3Rpb25hbGl0eSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtZXJpY1ZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtZXJpY1ZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVmaW5lZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlZmluZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlnaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEaWdpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIaWdoU3Vycm9nYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lTT0NvbnRyb2wiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJU09Db250cm9sIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJZGVudGlmaWVySWdub3JhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSWRlbnRpZmllcklnbm9yYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNKYXZhSWRlbnRpZmllclBhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNKYXZhSWRlbnRpZmllclBhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSmF2YUlkZW50aWZpZXJTdGFydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0phdmFJZGVudGlmaWVyU3RhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSmF2YUxldHRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSmF2YUxldHRlck9yRGlnaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xldHRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xldHRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMZXR0ZXJPckRpZ2l0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGV0dGVyT3JEaWdpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb3dTdXJyb2dhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG93ZXJDYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG93ZXJDYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01pcnJvcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTWlycm9yZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwYWNlQ2hhciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwYWNlQ2hhciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdXBwbGVtZW50YXJ5Q29kZVBvaW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N1cnJvZ2F0ZVBhaXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZ2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvdyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1RpdGxlQ2FzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1RpdGxlQ2FzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVbmljb2RlSWRlbnRpZmllclBhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVbmljb2RlSWRlbnRpZmllclBhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVW5pY29kZUlkZW50aWZpZXJTdGFydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVXBwZXJDYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVXBwZXJDYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZhbGlkQ29kZVBvaW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1doaXRlc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXaGl0ZXNwYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXRCeUNvZGVQb2ludHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXRCeUNvZGVQb2ludHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldmVyc2VCeXRlcyIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0NoYXJzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0SW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0NoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQ29kZVBvaW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZ2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvdyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0xvd2VyQ2FzZSIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0xvd2VyQ2FzZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9UaXRsZUNhc2UiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9UaXRsZUNhc2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VcHBlckNhc2UiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VcHBlckNhc2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyYWN0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTUJJTklOR19TUEFDSU5HX01BUksiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05ORUNUT1JfUFVOQ1RVQVRJT04iCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVFJPTCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVJSRU5DWV9TWU1CT0wiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFTSF9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUNJTUFMX0RJR0lUX05VTUJFUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTkFMSVRZX0FSQUJJQ19OVU1CRVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9CT1VOREFSWV9ORVVUUkFMIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1IiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9FVVJPUEVBTl9OVU1CRVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9MRUZUX1RPX1JJR0hUIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfTEVGVF9UT19SSUdIVF9FTUJFRERJTkciCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfTEVGVF9UT19SSUdIVF9PVkVSUklERSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9OT05TUEFDSU5HX01BUksiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9PVEhFUl9ORVVUUkFMUyIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9QQVJBR1JBUEhfU0VQQVJBVE9SIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTkFMSVRZX1BPUF9ESVJFQ1RJT05BTF9GT1JNQVQiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfUklHSFRfVE9fTEVGVCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTkFMSVRZX1JJR0hUX1RPX0xFRlRfQVJBQklDIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfUklHSFRfVE9fTEVGVF9FTUJFRERJTkciCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfUklHSFRfVE9fTEVGVF9PVkVSUklERSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9TRUdNRU5UX1NFUEFSQVRPUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9VTkRFRklORUQiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfV0hJVEVTUEFDRSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNMT1NJTkdfTUFSSyIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVORF9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSU5BTF9RVU9URV9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVQiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5JVElBTF9RVU9URV9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRVRURVJfTlVNQkVSIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJTkVfU0VQQVJBVE9SIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPV0VSQ0FTRV9MRVRURVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRIX1NZTUJPTCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfQ09ERV9QT0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExMTQxMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX0hJR0hfU1VSUk9HQVRFIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU2MzE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9MT1dfU1VSUk9HQVRFIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU3MzQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9SQURJWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9TVVJST0dBVEUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTczNDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1ZBTFVFIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1NTM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9DT0RFX1BPSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5fSElHSF9TVVJST0dBVEUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTUyOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX0xPV19TVVJST0dBVEUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYzMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1JBRElYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5fU1VQUExFTUVOVEFSWV9DT0RFX1BPSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1NVUlJPR0FURSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NTI5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5fVkFMVUUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RJRklFUl9MRVRURVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RJRklFUl9TWU1CT0wiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9OX1NQQUNJTkdfTUFSSyIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9USEVSX0xFVFRFUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9USEVSX05VTUJFUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPVEhFUl9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPVEhFUl9TWU1CT0wiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFSQUdSQVBIX1NFUEFSQVRPUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUklWQVRFX1VTRSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBQ0VfU0VQQVJBVE9SIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVJUX1BVTkNUVUFUSU9OIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUlJPR0FURSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSVRMRUNBU0VfTEVUVEVSIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5BU1NJR05FRCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVQUEVSQ0FTRV9MRVRURVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhcmFjdGVyLlN1YnNldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyYWN0ZXIuU3Vic2V0IgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuU3Vic2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIGV4dGVuZHM9ImphdmEubGFuZy5DaGFyYWN0ZXIuU3Vic2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmb3JOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJibG9ja05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBRUdFQU5fTlVNQkVSUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUkFCSUMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUk1FTklBTiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUlJPV1MiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkFTSUNfTEFUSU4iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkVOR0FMSSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCTE9DS19FTEVNRU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT1BPTU9GTyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT1BPTU9GT19FWFRFTkRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT1hfRFJBV0lORyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCUkFJTExFX1BBVFRFUk5TIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVSElEIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJZWkFOVElORV9NVVNJQ0FMX1NZTUJPTFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hFUk9LRUUiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX0NPTVBBVElCSUxJVFkiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX0NPTVBBVElCSUxJVFlfRk9STVMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSktfQ09NUEFUSUJJTElUWV9JREVPR1JBUEhTX1NVUFBMRU1FTlQiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX1JBRElDQUxTX1NVUFBMRU1FTlQiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX1NZTUJPTFNfQU5EX1BVTkNUVUFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNKS19VTklGSUVEX0lERU9HUkFQSFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTUJJTklOR19ESUFDUklUSUNBTF9NQVJLUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01CSU5JTkdfSEFMRl9NQVJLUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01CSU5JTkdfTUFSS1NfRk9SX1NZTUJPTFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVFJPTF9QSUNUVVJFUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVJSRU5DWV9TWU1CT0xTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNZUFJJT1RfU1lMTEFCQVJZIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNZUklMTElDIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNZUklMTElDX1NVUFBMRU1FTlRBUlkiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVTRVJFVCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVZBTkFHQVJJIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJTkdCQVRTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ0xPU0VEX0FMUEhBTlVNRVJJQ1MiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5DTE9TRURfQ0pLX0xFVFRFUlNfQU5EX01PTlRIUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFVEhJT1BJQyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRU5FUkFMX1BVTkNUVUFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFT01FVFJJQ19TSEFQRVMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VPUkdJQU4iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR09USElDIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSRUVLIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSRUVLX0VYVEVOREVEIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdVSkFSQVRJIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdVUk1VS0hJIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBTEZXSURUSF9BTkRfRlVMTFdJRFRIX0ZPUk1TIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBTkdVTF9DT01QQVRJQklMSVRZX0pBTU8iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFOR1VMX0pBTU8iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFOR1VMX1NZTExBQkxFUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQU5VTk9PIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhFQlJFVyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISUdIX1BSSVZBVEVfVVNFX1NVUlJPR0FURVMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElHSF9TVVJST0dBVEVTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhJUkFHQU5BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklERU9HUkFQSElDX0RFU0NSSVBUSU9OX0NIQVJBQ1RFUlMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVBBX0VYVEVOU0lPTlMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0FOQlVOIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktBTkdYSV9SQURJQ0FMUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLQU5OQURBIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktBVEFLQU5BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktBVEFLQU5BX1BIT05FVElDX0VYVEVOU0lPTlMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0hNRVIiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0hNRVJfU1lNQk9MUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQU8iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFUSU5fMV9TVVBQTEVNRU5UIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBVElOX0VYVEVOREVEX0EiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFUSU5fRVhURU5ERURfQURESVRJT05BTCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVRJTl9FWFRFTkRFRF9CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxFVFRFUkxJS0VfU1lNQk9MUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSU1CVSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSU5FQVJfQl9JREVPR1JBTVMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElORUFSX0JfU1lMTEFCQVJZIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPV19TVVJST0dBVEVTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTEFZQUxBTSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRIRU1BVElDQUxfQUxQSEFOVU1FUklDX1NZTUJPTFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFUSEVNQVRJQ0FMX09QRVJBVE9SUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSVNDRUxMQU5FT1VTX01BVEhFTUFUSUNBTF9TWU1CT0xTX0EiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JU0NFTExBTkVPVVNfU1lNQk9MUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSVNDRUxMQU5FT1VTX1NZTUJPTFNfQU5EX0FSUk9XUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSVNDRUxMQU5FT1VTX1RFQ0hOSUNBTCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT05HT0xJQU4iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVVTSUNBTF9TWU1CT0xTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1ZQU5NQVIiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSX0ZPUk1TIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9HSEFNIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9MRF9JVEFMSUMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BUSUNBTF9DSEFSQUNURVJfUkVDT0dOSVRJT04iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJWUEiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1NNQU5ZQSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19FWFRFTlNJT05TIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSVZBVEVfVVNFX0FSRUEiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlVOSUMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hBVklBTiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU5IQUxBIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNNQUxMX0ZPUk1fVkFSSUFOVFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBQ0lOR19NT0RJRklFUl9MRVRURVJTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQRUNJQUxTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUEVSU0NSSVBUU19BTkRfU1VCU0NSSVBUUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVBQTEVNRU5UQUxfQVJST1dTX0EiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VQUExFTUVOVEFMX0FSUk9XU19CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUFBMRU1FTlRBTF9NQVRIRU1BVElDQUxfT1BFUkFUT1JTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUlJPR0FURVNfQVJFQSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZUklBQyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdBTE9HIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR0JBTldBIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR1MiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFJX0xFIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBSV9YVUFOX0pJTkdfU1lNQk9MUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQU1JTCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURUxVR1UiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhBQU5BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIQUkiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElCRVRBTiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVR0FSSVRJQyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTklGSUVEX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFCSUNTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZBUklBVElPTl9TRUxFQ1RPUlMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkFSSUFUSU9OX1NFTEVDVE9SU19TVVBQTEVNRU5UIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllJSklOR19IRVhBR1JBTV9TWU1CT0xTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllJX1JBRElDQUxTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllJX1NZTExBQkxFUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xhc3MiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5Bbm5vdGF0ZWRFbGVtZW50Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5yZWZsZWN0LkdlbmVyaWNEZWNsYXJhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXNTdWJjbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMgVSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FzdCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNpcmVkQXNzZXJ0aW9uU3RhdHVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvck5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbGl6ZUJvb2xlYW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFubm90YXRpb24iCisgcmV0dXJuPSJBIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm5vdGF0aW9uQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtBJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbm5vdGF0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYW5vbmljYWxOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGFzc0xvYWRlciIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGFzc2VzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcG9uZW50VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnN0cnVjdG9yIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3ImbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlclR5cGVzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25zdHJ1Y3RvcnMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkQW5ub3RhdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJlZENsYXNzZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJlZENvbnN0cnVjdG9yIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3ImbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlclR5cGVzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJlZENvbnN0cnVjdG9ycyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNlY3VyaXR5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyZWRGaWVsZCIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hGaWVsZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkRmllbGRzIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuRmllbGRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJlZE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyVHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzcy4uLiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoTWV0aG9kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTm9TdWNoTWV0aG9kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkTWV0aG9kcyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmluZ0NsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jbG9zaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNsb3NpbmdDb25zdHJ1Y3RvciIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jbG9zaW5nTWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW51bUNvbnN0YW50cyIKKyByZXR1cm49IlRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZCIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hGaWVsZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpZWxkcyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkZpZWxkW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNlY3VyaXR5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY0ludGVyZmFjZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY1N1cGVyY2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVyZmFjZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyVHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzcy4uLiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoTWV0aG9kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTm9TdWNoTWV0aG9kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGhvZHMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5NZXRob2RbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2RpZmllcnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdGVjdGlvbkRvbWFpbiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZSIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZUFzU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduZXJzIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpbXBsZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cGVyY2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBzdXBlciBUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZVZhcmlhYmxlJmx0O2phdmEubGFuZy5DbGFzcyZsdDtUJmd0OyZndDtbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQW5ub3RhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbm5vdGF0aW9uUHJlc2VudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFubm90YXRpb25DbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fub255bW91c0NsYXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXJyYXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXNzaWduYWJsZUZyb20iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNscyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW51bSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbnN0YW5jZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW50ZXJmYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG9jYWxDbGFzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNZW1iZXJDbGFzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcmltaXRpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTeW50aGV0aWMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNsYXNzQ2FzdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzQ2FzdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NDYXN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xhc3NDYXN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc0Nhc3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xhc3NDaXJjdWxhcml0eUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5MaW5rYWdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGFzc0NpcmN1bGFyaXR5RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkNsYXNzQ2lyY3VsYXJpdHlFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzQ2lyY3VsYXJpdHlFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NDaXJjdWxhcml0eUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNsYXNzRm9ybWF0RXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkxpbmthZ2VFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzRm9ybWF0RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkNsYXNzRm9ybWF0RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGFzc0Zvcm1hdEVycm9yIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc0Zvcm1hdEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNsYXNzTG9hZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudExvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJBc3NlcnRpb25TdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlZmluZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NSZXAiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc0Zvcm1hdEVycm9yIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NGb3JtYXRFcnJvciI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZpbmVDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzUmVwIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NGb3JtYXRFcnJvciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzRm9ybWF0RXJyb3IiPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVmaW5lQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc1JlcCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RlY3Rpb25Eb21haW4iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NGb3JtYXRFcnJvciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzRm9ybWF0RXJyb3IiPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVmaW5lQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdGVjdGlvbkRvbWFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc0Zvcm1hdEVycm9yIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NGb3JtYXRFcnJvciI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZpbmVQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWNUaXRsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlY1ZlcnNpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWNWZW5kb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltcGxUaXRsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1wbFZlcnNpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltcGxWZW5kb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlYWxCYXNlIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZExpYnJhcnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRMb2FkZWRDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFJlc291cmNlIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRSZXNvdXJjZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5uZXQuVVJMJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFN5c3RlbUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5QYWNrYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VzIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2VbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZSIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZUFzU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5uZXQuVVJMJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtQ2xhc3NMb2FkZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1SZXNvdXJjZSIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbVJlc291cmNlQXNTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtUmVzb3VyY2VzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEubmV0LlVSTCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZENsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlQ2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRBc3NlcnRpb25TdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFja2FnZUFzc2VydGlvblN0YXR1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2lnbmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaWduZXJzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RXhjZXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDbG9uZWFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbXBhcmFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5vdGhlciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29tcGlsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbW1hbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNtZCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21waWxlQ2xhc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzVG9Db21waWxlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGlsZUNsYXNzZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVSb290IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlcHJlY2F0ZWQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRG91YmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5OdW1iZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRvdWJsZSIKKyB0eXBlPSJqYXZhLmxhbmcuRG91YmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRG91YmxlIgorIHR5cGU9ImphdmEubGFuZy5Eb3VibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG91YmxlMSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb3VibGUyIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5Eb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVG9Mb25nQml0cyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvdWJsZVRvUmF3TG9uZ0JpdHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbmZpbml0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbmZpbml0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTmFOIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hTiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvbmdCaXRzVG9Eb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvbmdWYWx1ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VEb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9IZXhTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuRG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuRG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1BWF9WQUxVRSIKKyB0eXBlPSJkb3VibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEuNzk3NjkzMTM0ODYyMzE1N0UzMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1ZBTFVFIgorIHR5cGU9ImRvdWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNC45RS0zMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVHQVRJVkVfSU5GSU5JVFkiCisgdHlwZT0iZG91YmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIoLTEuMCAvIDAuMCkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTmFOIgorIHR5cGU9ImRvdWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iKDAuMCAvIDAuMCkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TSVRJVkVfSU5GSU5JVFkiCisgdHlwZT0iZG91YmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIoMS4wIC8gMC4wKSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVudW0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW51bSIKKyB0eXBlPSJqYXZhLmxhbmcuRW51bSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGluYWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3JkaW5hbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudW1UeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW51bUNvbnN0YW50Tm90UHJlc2VudEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudW1Db25zdGFudE5vdFByZXNlbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkVudW1Db25zdGFudE5vdFByZXNlbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnVtVHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuRW51bSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnN0YW50TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbnN0YW50TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bVR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIGphdmEubGFuZy5FbnVtJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGNlcHRpb25JbkluaXRpYWxpemVyRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkxpbmthZ2VFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yIgorIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb25JbkluaXRpYWxpemVyRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGNlcHRpb25JbkluaXRpYWxpemVyRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5UaHJvd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmxvYXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmxvYXQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGbG9hdCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGbG9hdCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxvYXQxIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxvYXQyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLkZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvdWJsZVZhbHVlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VG9JbnRCaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VG9SYXdJbnRCaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VmFsdWUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRCaXRzVG9GbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5maW5pdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5maW5pdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTmFOIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hTiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9IZXhTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuRmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMuNDAyODIzNUUzOGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1ZBTFVFIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxLjRFLTQ1ZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORUdBVElWRV9JTkZJTklUWSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iKC0xLjBmIC8gMC4wZikiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTmFOIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIoMC4wZiAvIDAuMGYpIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPU0lUSVZFX0lORklOSVRZIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIoMS4wZiAvIDAuMGYpIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWxsZWdhbEFjY2Vzc0Vycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEFjY2Vzc0Vycm9yIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsQWNjZXNzRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxNb25pdG9yU3RhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbE1vbml0b3JTdGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbE1vbml0b3JTdGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxUaHJlYWRTdGF0ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbFRocmVhZFN0YXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsVGhyZWFkU3RhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsVGhyZWFkU3RhdGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxUaHJlYWRTdGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5MaW5rYWdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIHR5cGU9ImphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5jb21wYXRpYmxlQ2xhc3NDaGFuZ2VFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuSW5jb21wYXRpYmxlQ2xhc3NDaGFuZ2VFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5oZXJpdGFibGVUaHJlYWRMb2NhbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVGhyZWFkTG9jYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmhlcml0YWJsZVRocmVhZExvY2FsIgorIHR5cGU9ImphdmEubGFuZy5Jbmhlcml0YWJsZVRocmVhZExvY2FsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoaWxkVmFsdWUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRWYWx1ZSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnN0YW50aWF0aW9uRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkluY29tcGF0aWJsZUNsYXNzQ2hhbmdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0YW50aWF0aW9uRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RhbnRpYXRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuSW5zdGFudGlhdGlvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0YW50aWF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZWdlciIKKyB0eXBlPSJqYXZhLmxhbmcuSW50ZWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVnZXIiCisgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpdENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlIgorIHJldHVybj0iamF2YS5sYW5nLkludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVmFsdWUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVnZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlciIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlciIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWdoZXN0T25lQml0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nVmFsdWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxvd2VzdE9uZUJpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibnVtYmVyT2ZMZWFkaW5nWmVyb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im51bWJlck9mVHJhaWxpbmdaZXJvcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZUJ5dGVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGVMZWZ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGFuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGVSaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3RhbmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2lnbnVtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpbmFyeVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvSGV4U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9PY3RhbFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTQ3NDgzNjQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50ZXJuYWxFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVybmFsRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkludGVybmFsRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcm5hbEVycm9yIgorIHR5cGU9ImphdmEubGFuZy5JbnRlcm5hbEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikl0ZXJhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7VCZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGlua2FnZUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5FcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmthZ2VFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuTGlua2FnZUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2FnZUVycm9yIgorIHR5cGU9ImphdmEubGFuZy5MaW5rYWdlRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9uZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb25nIgorIHR5cGU9ImphdmEubGFuZy5Mb25nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvbmciCisgdHlwZT0iamF2YS5sYW5nLkxvbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpdENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5Mb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5Mb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvdWJsZVZhbHVlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VmFsdWUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0iamF2YS5sYW5nLkxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuTG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0iamF2YS5sYW5nLkxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImphdmEubGFuZy5Mb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZ2hlc3RPbmVCaXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb3dlc3RPbmVCaXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibnVtYmVyT2ZMZWFkaW5nWmVyb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJudW1iZXJPZlRyYWlsaW5nWmVyb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUxvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlTG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZlcnNlQnl0ZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlTGVmdCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGFuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGVSaWdodCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGFuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWdudW0iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpbmFyeVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0hleFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b09jdGFsU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuTG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5Mb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTIyMzM3MjAzNjg1NDc3NTgwN0wiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1ZBTFVFIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii05MjIzMzcyMDM2ODU0Nzc1ODA4TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hdGgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9IklFRUVyZW1haW5kZXIiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhYnMiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWJzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjb3MiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNpbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdGFuIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF0YW4yIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2JydCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjZWlsIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3NoIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4cCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHBtMSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9vciIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoeXBvdCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2cxMCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2cxcCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZDEiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZDIiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmMSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImYyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaTEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaTIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwxIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsMiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZDEiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZDIiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmMSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImYyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaTEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaTIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwxIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsMiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3ciCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyYW5kb20iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyaW50IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvdW5kIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm91bmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2lnbnVtIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWdudW0iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaW4iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2luaCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzcXJ0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRhbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YW5oIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvRGVncmVlcyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmdyYWQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1JhZGlhbnMiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5nZGVnIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idWxwIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bHAiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkUiCisgdHlwZT0iZG91YmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyLjcxODI4MTgyODQ1OTA0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSSIKKyB0eXBlPSJkb3VibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMuMTQxNTkyNjUzNTg5NzkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb0NsYXNzRGVmRm91bmRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuTGlua2FnZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9DbGFzc0RlZkZvdW5kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk5vQ2xhc3NEZWZGb3VuZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9DbGFzc0RlZkZvdW5kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk5vQ2xhc3NEZWZGb3VuZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vU3VjaEZpZWxkRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkluY29tcGF0aWJsZUNsYXNzQ2hhbmdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1N1Y2hGaWVsZEVycm9yIgorIHR5cGU9ImphdmEubGFuZy5Ob1N1Y2hGaWVsZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoRmllbGRFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuTm9TdWNoRmllbGRFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb1N1Y2hGaWVsZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoRmllbGRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoRmllbGRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vU3VjaE1ldGhvZEVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoTWV0aG9kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoTWV0aG9kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoTWV0aG9kRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5Ob1N1Y2hNZXRob2RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1N1Y2hNZXRob2RFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdWxsUG9pbnRlckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik51bGxQb2ludGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik51bGxQb2ludGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdW1iZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTnVtYmVyIgorIHR5cGU9ImphdmEubGFuZy5OdW1iZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYnl0ZVZhbHVlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VmFsdWUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3J0VmFsdWUiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT2JqZWN0IgorIHR5cGU9ImphdmEubGFuZy5PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJUaHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIGphdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUFsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndhaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFub3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPdXRPZk1lbW9yeUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5WaXJ0dWFsTWFjaGluZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3V0T2ZNZW1vcnlFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuT3V0T2ZNZW1vcnlFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik91dE9mTWVtb3J5RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk91dE9mTWVtb3J5RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT3ZlcnJpZGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFja2FnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5Bbm5vdGF0ZWRFbGVtZW50Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0QW5ub3RhdGlvbiIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFubm90YXRpb25UeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5ub3RhdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyZWRBbm5vdGF0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbXBsZW1lbnRhdGlvblRpdGxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbXBsZW1lbnRhdGlvblZlbmRvciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW1wbGVtZW50YXRpb25WZXJzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuUGFja2FnZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BlY2lmaWNhdGlvblRpdGxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGVjaWZpY2F0aW9uVmVuZG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGVjaWZpY2F0aW9uVmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbm5vdGF0aW9uUHJlc2VudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFubm90YXRpb25UeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIGphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGF0aWJsZVdpdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZWFsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VhbGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvY2VzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9jZXNzIgorIHR5cGU9ImphdmEubGFuZy5Qcm9jZXNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhpdFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWl0Rm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvY2Vzc0J1aWxkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvY2Vzc0J1aWxkZXIiCisgdHlwZT0iamF2YS5sYW5nLlByb2Nlc3NCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZy4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvY2Vzc0J1aWxkZXIiCisgdHlwZT0iamF2YS5sYW5nLlByb2Nlc3NCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21tYW5kIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWFuZCIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZy4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21tYW5kIgorIHJldHVybj0iamF2YS5sYW5nLlByb2Nlc3NCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tYW5kIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXJlY3RvcnkiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlyZWN0b3J5IgorIHJldHVybj0iamF2YS5sYW5nLlByb2Nlc3NCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3RvcnkiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnZpcm9ubWVudCIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVkaXJlY3RFcnJvclN0cmVhbSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVkaXJlY3RFcnJvclN0cmVhbSIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkaXJlY3RFcnJvclN0cmVhbSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVhZGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNiIiB0eXBlPSJqYXZhLm5pby5DaGFyQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJ1bm5hYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJSdW50aW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkU2h1dGRvd25Ib29rIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9vayIgdHlwZT0iamF2YS5sYW5nLlRocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdmFpbGFibGVQcm9jZXNzb3JzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWMiCisgcmV0dXJuPSJqYXZhLmxhbmcuUHJvY2VzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ0FycmF5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWMiCisgcmV0dXJuPSJqYXZhLmxhbmcuUHJvY2VzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ0FycmF5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudnAiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlYyIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nQXJyYXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52cCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3RvcnkiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlYyIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjIgorIHJldHVybj0iamF2YS5sYW5nLlByb2Nlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudnAiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlYyIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnZwIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdG9yeSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyZWVNZW1vcnkiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxpemVkSW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGl6ZWRPdXRwdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1bnRpbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuUnVudGltZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGhOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMaWJyYXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXhNZW1vcnkiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlU2h1dGRvd25Ib29rIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9vayIgdHlwZT0iamF2YS5sYW5nLlRocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5GaW5hbGl6YXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bkZpbmFsaXplcnNPbkV4aXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnVuIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvdGFsTWVtb3J5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYWNlSW5zdHJ1Y3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYWNlTWV0aG9kQ2FsbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUnVudGltZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUnVudGltZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJ1bnRpbWVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSdW50aW1lRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSdW50aW1lRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUnVudGltZVBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJ1bnRpbWVQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEubGFuZy5SdW50aW1lUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb25OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSdW50aW1lUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLmxhbmcuUnVudGltZVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZWN1cml0eU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyaXR5TWFuYWdlciIKKyB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0F3dEV2ZW50UXVldWVBY2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQ29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0Nvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDcmVhdGVDbGFzc0xvYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tEZWxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrRXhlYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNtZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0V4aXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0xpbmsiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrTGlzdGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrTWVtYmVyQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja011bHRpY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja011bHRpY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0dGwiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQYWNrYWdlQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQYWNrYWdlRGVmaW5pdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1Blcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQcmludEpvYkFjY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQcm9wZXJ0aWVzQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1Byb3BlcnR5QWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tSZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1NlY3VyaXR5QWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrU2V0RmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tTeXN0ZW1DbGlwYm9hcmRBY2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrVG9wTGV2ZWxXaW5kb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3ciIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tXcml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrV3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsYXNzRGVwdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGFzc0xvYWRlckRlcHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3VycmVudENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3VycmVudExvYWRlZENsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3NDb250ZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5DaGVjayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWN1cml0eUNvbnRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVhZEdyb3VwIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZEdyb3VwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluQ2xhc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5DbGFzc0xvYWRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImluQ2hlY2siCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNob3J0IgorIGV4dGVuZHM9ImphdmEubGFuZy5OdW1iZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNob3J0IgorIHR5cGU9ImphdmEubGFuZy5TaG9ydCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaG9ydCIKKyB0eXBlPSJqYXZhLmxhbmcuU2hvcnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLlNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldmVyc2VCeXRlcyIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5TaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9WQUxVRSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhY2tPdmVyZmxvd0Vycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5WaXJ0dWFsTWFjaGluZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhY2tPdmVyZmxvd0Vycm9yIgorIHR5cGU9ImphdmEubGFuZy5TdGFja092ZXJmbG93RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGFja092ZXJmbG93RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLlN0YWNrT3ZlcmZsb3dFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdGFja1RyYWNlRWxlbWVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGFja1RyYWNlRWxlbWVudCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3NOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2ROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hdGl2ZU1ldGhvZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaWN0TWF0aCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iSUVFRXJlbWFpbmRlciIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWJzIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWJzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhYnMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNvcyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc2luIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF0YW4iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXRhbjIiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYnJ0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNlaWwiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29zIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvc2giCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhwIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4cG0xIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb29yIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imh5cG90IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9nIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZzEwIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZzFwIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkMSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkMiIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYxIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZjIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpMiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibDEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwyIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkMSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkMiIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYxIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZjIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpMiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibDEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwyIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvdyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJhbmRvbSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJpbnQiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm91bmQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3VuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWdudW0iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ251bSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaW5oIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNxcnQiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFuIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRhbmgiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9EZWdyZWVzIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ3JhZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUmFkaWFucyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmdkZWciIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bHAiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVscCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRSIKKyB0eXBlPSJkb3VibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIuNzE4MjgxODI4NDU5MDQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBJIgorIHR5cGU9ImRvdWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMy4xNDE1OTI2NTM1ODk3OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0cmluZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZ2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoaWdoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmdidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNiIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoYXJBdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QmVmb3JlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiZWdpbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZEluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvSWdub3JlQ2FzZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbmNhdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWlucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRlbnRFcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJidWYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGVudEVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHlWYWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kc1dpdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWZmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzSWdub3JlQ2FzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYyIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YlN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlcm4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YlN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0QnlDb2RlUG9pbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpb25NYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhpc1N0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaW9uTWF0Y2hlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlnbm9yZUNhc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoaXNTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRDaGFyIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDaGFyIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGxhY2VtZW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VBbGwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHByIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdWJzdGl0dXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VGaXJzdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YnN0aXR1dGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BsaXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BsaXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0c1dpdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRzV2l0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3Vic3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9DaGFyQXJyYXkiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9Mb3dlckNhc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvTG93ZXJDYXNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvVXBwZXJDYXNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1VwcGVyQ2FzZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmltIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0FTRV9JTlNFTlNJVElWRV9PUkRFUiIKKyB0eXBlPSJqYXZhLnV0aWwuQ29tcGFyYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nQnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5BYnN0cmFjdFN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkFwcGVuZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nQnVmZmVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdCdWZmZXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0J1ZmZlciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdCdWZmZXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNiIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnMiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZENvZGVQb2ludCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlQ2hhckF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnMiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpbmdCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5BYnN0cmFjdFN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkFwcGVuZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nQnVpbGRlciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0J1aWxkZXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdCdWlsZGVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdCdWlsZGVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG5nIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NxIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRDb2RlUG9pbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUNoYXJBdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ck9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3VwcHJlc3NXYXJuaW5ncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTeXN0ZW0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFycmF5Y29weSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY1BvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0UG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJyZW50VGltZU1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4aXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0aWVzIgorIHJldHVybj0iamF2YS51dGlsLlByb3BlcnRpZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlY3VyaXR5TWFuYWdlciIKKyByZXR1cm49ImphdmEubGFuZy5TZWN1cml0eU1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRlbnYiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0ZW52IgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlkZW50aXR5SGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbk9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmhlcml0ZWRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkTGlicmFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXBMaWJyYXJ5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyTGliTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuYW5vVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bkZpbmFsaXphdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5GaW5hbGl6ZXJzT25FeGl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdFcnIiIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0luIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3T3V0IiB0eXBlPSJqYXZhLmlvLlByaW50U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnRpZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0aWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWN1cml0eU1hbmFnZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNtIiB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iZXJyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW4iCisgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdXQiCisgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGhyZWFkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkIgorIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWQiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJ1bm5hYmxlIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnVubmFibGUiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkIgorIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWQiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJ1bm5hYmxlIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icnVubmFibGUiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkIgorIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iamF2YS5sYW5nLlRocmVhZEdyb3VwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWQiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJ1bm5hYmxlIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YWNrU2l6ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjdGl2ZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tBY2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY291bnRTdGFja0ZyYW1lcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnJlbnRUaHJlYWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyZWFkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzdHJveSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wU3RhY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bWVyYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZHMiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxTdGFja1RyYWNlcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlRocmVhZCwgamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVtZW50W10mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRVbmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyZWFkLlVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW9yaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhY2tUcmFjZSIKKyByZXR1cm49ImphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRlIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZC5TdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRHcm91cCIKKyByZXR1cm49ImphdmEubGFuZy5UaHJlYWRHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciIKKyByZXR1cm49ImphdmEubGFuZy5UaHJlYWQuVW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhvbGRzTG9jayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVycnVwdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJydXB0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RhZW1vbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ludGVycnVwdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImpvaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbm9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZXh0Q2xhc3NMb2FkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhZW1vbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNEYWVtb24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iamF2YS5sYW5nLlRocmVhZC5VbmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmlvcml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVbmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkLlVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGVlcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGVlcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW5vcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1c3BlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ5aWVsZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1BWF9QUklPUklUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9QUklPUklUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9STV9QUklPUklUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRocmVhZC5TdGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5UaHJlYWQuU3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyZWFkLlN0YXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUaHJlYWQuVW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ1bmNhdWdodEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleCIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGhyZWFkRGVhdGgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkRGVhdGgiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZERlYXRoIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRocmVhZEdyb3VwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5UaHJlYWQuVW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWRHcm91cCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWRHcm91cCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjdGl2ZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjdGl2ZUdyb3VwQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWxsb3dUaHJlYWRTdXNwZW5zaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bWVyYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRzIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bWVyYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRzIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3Vyc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bWVyYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cHMiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRHcm91cFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudW1lcmF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBzIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXBbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdXJzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhQcmlvcml0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZEdyb3VwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJydXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGFlbW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVzdHJveWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcmVudE9mIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGFlbW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc0RhZW1vbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhQcmlvcml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1c3BlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmNhdWdodEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGhyZWFkTG9jYWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZExvY2FsIgorIHR5cGU9ImphdmEubGFuZy5UaHJlYWRMb2NhbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxWYWx1ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJvd2FibGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocm93YWJsZSIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyb3dhYmxlIgorIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJvd2FibGUiCisgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyb3dhYmxlIgorIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWxsSW5TdGFja1RyYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYXVzZSIKKyByZXR1cm49ImphdmEubGFuZy5UaHJvd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxpemVkTWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhY2tUcmFjZSIKKyByZXR1cm49ImphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRDYXVzZSIKKyByZXR1cm49ImphdmEubGFuZy5UaHJvd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludFN0YWNrVHJhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50U3RhY2tUcmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVyciIgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludFN0YWNrVHJhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnIiIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhY2tUcmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUeXBlTm90UHJlc2VudEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlR5cGVOb3RQcmVzZW50RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5UeXBlTm90UHJlc2VudEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbmtub3duRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLlZpcnR1YWxNYWNoaW5lRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbmtub3duRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLlVua25vd25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVua25vd25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuVW5rbm93bkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVuc2F0aXNmaWVkTGlua0Vycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5MaW5rYWdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnNhdGlzZmllZExpbmtFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuVW5zYXRpc2ZpZWRMaW5rRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnNhdGlzZmllZExpbmtFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuVW5zYXRpc2ZpZWRMaW5rRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRDbGFzc1ZlcnNpb25FcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuQ2xhc3NGb3JtYXRFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuc3VwcG9ydGVkQ2xhc3NWZXJzaW9uRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkQ2xhc3NWZXJzaW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9yIgorIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmVyaWZ5RXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkxpbmthZ2VFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZlcmlmeUVycm9yIgorIHR5cGU9ImphdmEubGFuZy5WZXJpZnlFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZlcmlmeUVycm9yIgorIHR5cGU9ImphdmEubGFuZy5WZXJpZnlFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaXJ0dWFsTWFjaGluZUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5FcnJvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlydHVhbE1hY2hpbmVFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpcnR1YWxNYWNoaW5lRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLlZpcnR1YWxNYWNoaW5lRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVm9pZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbiIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQW5ub3RhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFubm90YXRpb25UeXBlIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkFubm90YXRpb25Gb3JtYXRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbm5vdGF0aW9uRm9ybWF0RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbkZvcm1hdEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5ub3RhdGlvbkZvcm1hdEVycm9yIgorIHR5cGU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25Gb3JtYXRFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbm5vdGF0aW9uRm9ybWF0RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbkZvcm1hdEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbm5vdGF0aW9uVHlwZU1pc21hdGNoRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5ub3RhdGlvblR5cGVNaXNtYXRjaEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uVHlwZU1pc21hdGNoRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudCIgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3VuZFR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50IgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvdW5kVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRG9jdW1lbnRlZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFbGVtZW50VHlwZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkVsZW1lbnRUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkluY29tcGxldGVBbm5vdGF0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5jb21wbGV0ZUFubm90YXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLmFubm90YXRpb24uSW5jb21wbGV0ZUFubm90YXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm5vdGF0aW9uVHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhbm5vdGF0aW9uVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWxlbWVudE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkluaGVyaXRlZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXRlbnRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmV0ZW50aW9uUG9saWN5IgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUYXJnZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLmxhbmcucmVmIgorPgorPGNsYXNzIG5hbWU9IlBoYW50b21SZWZlcmVuY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLnJlZi5SZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaGFudG9tUmVmZXJlbmNlIgorIHR5cGU9ImphdmEubGFuZy5yZWYuUGhhbnRvbVJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUmbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZmVyZW5jZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVucXVldWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbnF1ZXVlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVmZXJlbmNlUXVldWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlZmVyZW5jZVF1ZXVlIgorIHR5cGU9ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlJmx0Oz8gZXh0ZW5kcyBUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlJmx0Oz8gZXh0ZW5kcyBUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSZsdDs/IGV4dGVuZHMgVCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNvZnRSZWZlcmVuY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLnJlZi5SZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2Z0UmVmZXJlbmNlIgorIHR5cGU9ImphdmEubGFuZy5yZWYuU29mdFJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvZnRSZWZlcmVuY2UiCisgdHlwZT0iamF2YS5sYW5nLnJlZi5Tb2Z0UmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icSIgdHlwZT0iamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZSZsdDs/IHN1cGVyIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2Vha1JlZmVyZW5jZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYWtSZWZlcmVuY2UiCisgdHlwZT0iamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2Vha1JlZmVyZW5jZSIKKyB0eXBlPSJqYXZhLmxhbmcucmVmLldlYWtSZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEubGFuZy5yZWZsZWN0IgorPgorPGNsYXNzIG5hbWU9IkFjY2Vzc2libGVPYmplY3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLnJlZmxlY3QuQW5ub3RhdGVkRWxlbWVudCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzaWJsZU9iamVjdCIKKyB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5BY2Nlc3NpYmxlT2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFubm90YXRpb24iCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm5vdGF0aW9uVHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFubm90YXRpb25zIgorIHJldHVybj0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkQW5ub3RhdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBY2Nlc3NpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fubm90YXRpb25QcmVzZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5ub3RhdGlvblR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWNjZXNzaWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0cyIgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuQWNjZXNzaWJsZU9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFjY2Vzc2libGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBbm5vdGF0ZWRFbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QW5ub3RhdGlvbiIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5ub3RhdGlvblR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbm5vdGF0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25bXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkQW5ub3RhdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fubm90YXRpb25QcmVzZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm5vdGF0aW9uVHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhciIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21wb25lbnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpbWVuc2lvbnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTmVnYXRpdmVBcnJheVNpemVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBvbmVudFR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvdWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb25zdHJ1Y3RvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcucmVmbGVjdC5BY2Nlc3NpYmxlT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5yZWZsZWN0LkdlbmVyaWNEZWNsYXJhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5NZW1iZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJpbmdDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGNlcHRpb25UeXBlcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0O1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlbmVyaWNFeGNlcHRpb25UeXBlcyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZW5lcmljUGFyYW1ldGVyVHlwZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9kaWZpZXJzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckFubm90YXRpb25zIgorIHJldHVybj0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbltdW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyVHlwZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDtbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZSZsdDtqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvciZsdDtUJmd0OyZndDtbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N5bnRoZXRpYyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYXJBcmdzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvR2VuZXJpY1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmllbGQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLnJlZmxlY3QuQWNjZXNzaWJsZU9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5NZW1iZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlbmVyaWNUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGlmaWVycyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VudW1Db25zdGFudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTeW50aGV0aWMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9HZW5lcmljU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iR2VuZXJpY0FycmF5VHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY0NvbXBvbmVudFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHZW5lcmljRGVjbGFyYXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZSZsdDs/Jmd0O1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkdlbmVyaWNTaWduYXR1cmVGb3JtYXRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuQ2xhc3NGb3JtYXRFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdlbmVyaWNTaWduYXR1cmVGb3JtYXRFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5HZW5lcmljU2lnbmF0dXJlRm9ybWF0RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikludm9jYXRpb25IYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaW52b2tlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm94eSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5UaHJvd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFsZm9ybWVkUGFyYW1ldGVyaXplZFR5cGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRQYXJhbWV0ZXJpemVkVHlwZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5NYWxmb3JtZWRQYXJhbWV0ZXJpemVkVHlwZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWVtYmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2RpZmllcnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3ludGhldGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVDTEFSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBVQkxJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZXRob2QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLnJlZmxlY3QuQWNjZXNzaWJsZU9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5HZW5lcmljRGVjbGFyYXRpb24iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLnJlZmxlY3QuTWVtYmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGNlcHRpb25UeXBlcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0O1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlbmVyaWNFeGNlcHRpb25UeXBlcyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZW5lcmljUGFyYW1ldGVyVHlwZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY1JldHVyblR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGlmaWVycyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJBbm5vdGF0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25bXVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlclR5cGVzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV0dXJuVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZSZsdDtqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QmZ3Q7W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCcmlkZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3ludGhldGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZhckFyZ3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvR2VuZXJpY1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTW9kaWZpZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1vZGlmaWVyIgorIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lk1vZGlmaWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzQWJzdHJhY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmluYWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW50ZXJmYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kaWZpZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcml2YXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Byb3RlY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kaWZpZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQdWJsaWMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RhdGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmljdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kaWZpZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTeW5jaHJvbml6ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVHJhbnNpZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZvbGF0aWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kaWZpZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQlNUUkFDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklOQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUkZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSVZBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RFQ1RFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFVCTElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUklDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQ0hST05JWkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTEFUSUxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQYXJhbWV0ZXJpemVkVHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0dWFsVHlwZUFyZ3VtZW50cyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE93bmVyVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQcm94eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJveHkiCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuUHJveHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludm9jYXRpb25IYW5kbGVyIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvbkhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJveHkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm94eUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcmZhY2VzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Byb3h5Q2xhc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3UHJveHlJbnN0YW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyZmFjZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0O1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iaCIKKyB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uSGFuZGxlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWZsZWN0UGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVmbGVjdFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuUmVmbGVjdFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVmbGVjdFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuUmVmbGVjdFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlR5cGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlR5cGVWYXJpYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0Qm91bmRzIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY0RlY2xhcmF0aW9uIgorIHJldHVybj0iRCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlVuZGVjbGFyZWRUaHJvd2FibGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbmRlY2xhcmVkVGhyb3dhYmxlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0LlVuZGVjbGFyZWRUaHJvd2FibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuZGVjbGFyZWRUaHJvd2FibGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuVW5kZWNsYXJlZFRocm93YWJsZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFVuZGVjbGFyZWRUaHJvd2FibGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJXaWxkY2FyZFR5cGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldExvd2VyQm91bmRzIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXBwZXJCb3VuZHMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLm1hdGgiCis+Cis8Y2xhc3MgbmFtZT0iQmlnRGVjaW1hbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0RlY2ltYWwiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0RlY2ltYWwiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0RlY2ltYWwiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5zY2FsZWRWYWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5zY2FsZWRWYWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0RlY2ltYWwiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWdlbmQiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWdlbmQiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ5dGVWYWx1ZUV4YWN0IgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpdmlzb3IiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3VuZGluZ01vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXZpZGUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kaW5nTW9kZSIgdHlwZT0iamF2YS5tYXRoLlJvdW5kaW5nTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXZpZGUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kaW5nTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpdmlkZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXZpc29yIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91bmRpbmdNb2RlIiB0eXBlPSJqYXZhLm1hdGguUm91bmRpbmdNb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpdmlkZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXZpc29yIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXZpZGUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1jIiB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlQW5kUmVtYWluZGVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWxbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlQW5kUmVtYWluZGVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWxbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1jIiB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlVG9JbnRlZ3JhbFZhbHVlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpdmlzb3IiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpdmlkZVRvSW50ZWdyYWxWYWx1ZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXZpc29yIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWVFeGFjdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nVmFsdWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvbmdWYWx1ZUV4YWN0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlUG9pbnRMZWZ0IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlUG9pbnRSaWdodCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXVsdGlwbHkiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXVsdGlwbGljYW5kIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtdWx0aXBseSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtdWx0aXBsaWNhbmQiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZ2F0ZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZ2F0ZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsdXMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwbHVzIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1jIiB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG93IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3ciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZWNpc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1haW5kZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtYWluZGVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpdmlzb3IiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvdW5kIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1jIiB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbGVCeVBvd2VyT2ZUZW4iCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjYWxlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kaW5nTW9kZSIgdHlwZT0iamF2YS5tYXRoLlJvdW5kaW5nTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY2FsZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3VuZGluZ01vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY2FsZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3J0VmFsdWVFeGFjdCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ251bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdHJpcFRyYWlsaW5nWmVyb3MiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJ0cmFjdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJ0cmFoZW5kIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJ0cmFjdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJ0cmFoZW5kIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpZ0ludGVnZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpZ0ludGVnZXJFeGFjdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvRW5naW5lZXJpbmdTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUGxhaW5TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVscCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NhbGVkVmFsdWUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5zY2FsZWRWYWwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVuc2NhbGVkVmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9ORSIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9DRUlMSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9GTE9PUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VTkRfSEFMRl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9IQUxGX0VWRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJPVU5EX0hBTEZfVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJPVU5EX1VOTkVDRVNTQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVOIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlpFUk8iCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJpZ0ludGVnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0ludGVnZXIiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1CaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJuZCIgdHlwZT0iamF2YS51dGlsLlJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnSW50ZWdlciIKKyB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdExlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0YWludHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm5kIiB0eXBlPSJqYXZhLnV0aWwuUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdJbnRlZ2VyIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdJbnRlZ2VyIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdJbnRlZ2VyIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hZ25pdHVkZSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdJbnRlZ2VyIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYnMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhbmQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhbmROb3QiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJCaXQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXZpZGUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlQW5kUmVtYWluZGVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVmFsdWUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxpcEJpdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdjZCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvd2VzdFNldEJpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Byb2JhYmxlUHJpbWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0YWludHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nVmFsdWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vZCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb2RJbnZlcnNlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vZFBvdyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBvbmVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im11bHRpcGx5IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmVnYXRlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dFByb2JhYmxlUHJpbWUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3QiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvciIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvdyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcm9iYWJsZVByaW1lIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0TGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJuZCIgdHlwZT0iamF2YS51dGlsLlJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1haW5kZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qml0IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaGlmdExlZnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNoaWZ0UmlnaHQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ251bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJ0cmFjdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRlc3RCaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9CeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ieG9yIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPTkUiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVOIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlpFUk8iCisgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hdGhDb250ZXh0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hdGhDb250ZXh0IgorIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYXRoQ29udGV4dCIKKyB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVjaXNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91bmRpbmdNb2RlIiB0eXBlPSJqYXZhLm1hdGguUm91bmRpbmdNb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYXRoQ29udGV4dCIKKyB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVjaXNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91bmRpbmdNb2RlIgorIHJldHVybj0iamF2YS5tYXRoLlJvdW5kaW5nTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFQ0lNQUwxMjgiCisgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQ0lNQUwzMiIKKyB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVDSU1BTDY0IgorIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTkxJTUlURUQiCisgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSb3VuZGluZ01vZGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5tYXRoLlJvdW5kaW5nTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLm1hdGguUm91bmRpbmdNb2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZhLm1hdGguUm91bmRpbmdNb2RlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5uZXQiCis+Cis8Y2xhc3MgbmFtZT0iQXV0aGVudGljYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoZW50aWNhdG9yIgorIHR5cGU9ImphdmEubmV0LkF1dGhlbnRpY2F0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UGFzc3dvcmRBdXRoZW50aWNhdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlBhc3N3b3JkQXV0aGVudGljYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdGluZ0hvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdGluZ1BvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0aW5nUHJvbXB0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RpbmdQcm90b2NvbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0aW5nU2NoZW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RpbmdTaXRlIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0aW5nVVJMIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RvclR5cGUiCisgcmV0dXJuPSJqYXZhLm5ldC5BdXRoZW50aWNhdG9yLlJlcXVlc3RvclR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFBhc3N3b3JkQXV0aGVudGljYXRpb24iCisgcmV0dXJuPSJqYXZhLm5ldC5QYXNzd29yZEF1dGhlbnRpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ickFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJQcm9tcHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJTY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFBhc3N3b3JkQXV0aGVudGljYXRpb24iCisgcmV0dXJuPSJqYXZhLm5ldC5QYXNzd29yZEF1dGhlbnRpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ickhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJBZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iclBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iclByb3RvY29sIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUHJvbXB0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyU2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RQYXNzd29yZEF1dGhlbnRpY2F0aW9uIgorIHJldHVybj0iamF2YS5uZXQuUGFzc3dvcmRBdXRoZW50aWNhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJySG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ickFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJQcm9tcHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJTY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJVUkwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxVHlwZSIgdHlwZT0iamF2YS5uZXQuQXV0aGVudGljYXRvci5SZXF1ZXN0b3JUeXBlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImphdmEubmV0LkF1dGhlbnRpY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXV0aGVudGljYXRvci5SZXF1ZXN0b3JUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5uZXQuQXV0aGVudGljYXRvci5SZXF1ZXN0b3JUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YS5uZXQuQXV0aGVudGljYXRvci5SZXF1ZXN0b3JUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJpbmRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmluZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5CaW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmluZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5CaW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNhY2hlUmVxdWVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYWNoZVJlcXVlc3QiCisgdHlwZT0iamF2YS5uZXQuQ2FjaGVSZXF1ZXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFib3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvZHkiCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDYWNoZVJlc3BvbnNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNhY2hlUmVzcG9uc2UiCisgdHlwZT0iamF2YS5uZXQuQ2FjaGVSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCb2R5IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29ubmVjdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LkNvbm5lY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LkNvbm5lY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudEhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudEhhbmRsZXIiCisgdHlwZT0iamF2YS5uZXQuQ29udGVudEhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idUNvbm4iIHR5cGU9ImphdmEubmV0LlVSTENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1Q29ubiIgdHlwZT0iamF2YS5uZXQuVVJMQ29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzc1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGVudEhhbmRsZXJGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29udGVudEhhbmRsZXIiCisgcmV0dXJuPSJqYXZhLm5ldC5Db250ZW50SGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29va2llSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb29raWVIYW5kbGVyIgorIHR5cGU9ImphdmEubmV0LkNvb2tpZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RIZWFkZXJzIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdCIKKyByZXR1cm49ImphdmEubmV0LkNvb2tpZUhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjSGFuZGxlciIgdHlwZT0iamF2YS5uZXQuQ29va2llSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhZ3JhbVBhY2tldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbVBhY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVBhY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtUGFja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtUGFja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbVBhY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVBhY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtUGFja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja0FkZHIiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbVBhY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVBhY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRkcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFuT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZW5ndGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29ja2V0QWRkcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja0FkZHIiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0YWdyYW1Tb2NrZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtU29ja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtU29ja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYVBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtU29ja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYVBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbVNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldEltcGwiIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0SW1wbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YWdyYW1Tb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuRGF0YWdyYW1Tb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHIiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbkFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdGVBZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCcm9hZGNhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRGF0YWdyYW1DaGFubmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVTb2NrZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXVzZUFkZHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW5kQnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb1RpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhZmZpY0NsYXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JvdW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2siIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFjayIgdHlwZT0iamF2YS5uZXQuRGF0YWdyYW1QYWNrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJyb2FkY2FzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YWdyYW1Tb2NrZXRJbXBsRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWMiIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0SW1wbEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlY2VpdmVCdWZmZXJTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJldXNlQWRkcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJldXNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZW5kQnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb1RpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHJhZmZpY0NsYXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0YWdyYW1Tb2NrZXRJbXBsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uZXQuU29ja2V0T3B0aW9ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YWdyYW1Tb2NrZXRJbXBsIgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0SW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5ldEFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsZURlc2NyaXB0b3IiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUVEwiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVRvTGl2ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iam9pbkdyb3VwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXRJbnRlcmZhY2UiIHR5cGU9ImphdmEubmV0Lk5ldHdvcmtJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxlYXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVhdmVHcm91cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV0SW50ZXJmYWNlIiB0eXBlPSJqYXZhLm5ldC5OZXR3b3JrSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbmRlciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWtEYXRhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2siIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrIiB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVBhY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFjayIgdHlwZT0iamF2YS5uZXQuRGF0YWdyYW1QYWNrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRUTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0dGwiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVUb0xpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR0bCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImZkIgorIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb2NhbFBvcnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEYXRhZ3JhbVNvY2tldEltcGxGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRGF0YWdyYW1Tb2NrZXRJbXBsIgorIHJldHVybj0iamF2YS5uZXQuRGF0YWdyYW1Tb2NrZXRJbXBsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJGaWxlTmFtZU1hcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRUeXBlRm9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cFJldHJ5RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUmV0cnlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uZXQuSHR0cFJldHJ5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSZXRyeUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5IdHRwUmV0cnlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhc29uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNwb25zZUNvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cFVSTENvbm5lY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5uZXQuVVJMQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFVSTENvbm5lY3Rpb24iCisgdHlwZT0iamF2YS5uZXQuSHR0cFVSTENvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvbGxvd1JlZGlyZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZUZvbGxvd1JlZGlyZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzcG9uc2VDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNwb25zZU1lc3NhZ2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaHVua2VkU3RyZWFtaW5nTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNodW5rbGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rml4ZWRMZW5ndGhTdHJlYW1pbmdNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudExlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvbGxvd1JlZGlyZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0byIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnN0YW5jZUZvbGxvd1JlZGlyZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvbGxvd1JlZGlyZWN0cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXF1ZXN0TWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuUHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNpbmdQcm94eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkhUVFBfQUNDRVBURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9CQURfR0FURVdBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0JBRF9NRVRIT0QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9CQURfUkVRVUVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0NMSUVOVF9USU1FT1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfQ09ORkxJQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9DUkVBVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfRU5USVRZX1RPT19MQVJHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0ZPUkJJRERFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0dBVEVXQVlfVElNRU9VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0dPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9JTlRFUk5BTF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0xFTkdUSF9SRVFVSVJFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX01PVkVEX1BFUk0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9NT1ZFRF9URU1QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTVVMVF9DSE9JQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9OT1RfQUNDRVBUQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX05PVF9BVVRIT1JJVEFUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTk9UX0ZPVU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTk9UX0lNUExFTUVOVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTk9UX01PRElGSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTk9fQ09OVEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfUEFSVElBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1BBWU1FTlRfUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9QUkVDT05fRkFJTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfUFJPWFlfQVVUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1JFUV9UT09fTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1JFU0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfU0VFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfU0VSVkVSX0VSUk9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9VTkFVVEhPUklaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9VTkFWQUlMQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1VOU1VQUE9SVEVEX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9VU0VfUFJPWFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9WRVJTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNodW5rTGVuZ3RoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZpeGVkQ29udGVudExlbmd0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnN0YW5jZUZvbGxvd1JlZGlyZWN0cyIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWV0aG9kIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXNwb25zZUNvZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVzcG9uc2VNZXNzYWdlIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5ldDRBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5ldDZBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QnlBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldDZBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NvcGVfaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5rbm93bkhvc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXQ2QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5pZiIgdHlwZT0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5rbm93bkhvc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjb3BlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NvcGVkSW50ZXJmYWNlIgorIHJldHVybj0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lQdjRDb21wYXRpYmxlQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5ldEFkZHJlc3MiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbEJ5TmFtZSIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5rbm93bkhvc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlwQWRkcmVzcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnlBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlwQWRkcmVzcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnlOYW1lIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5rbm93bkhvc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbm9uaWNhbEhvc3ROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9zdE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsSG9zdCIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FueUxvY2FsQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMaW5rTG9jYWxBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvb3BiYWNrQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNQ0dsb2JhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNQ0xpbmtMb2NhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNQ05vZGVMb2NhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNQ09yZ0xvY2FsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01DU2l0ZUxvY2FsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc011bHRpY2FzdEFkZHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhY2hhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWNoYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldGlmIiB0eXBlPSJqYXZhLm5ldC5OZXR3b3JrSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0dGwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NpdGVMb2NhbEFkZHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkluZXRTb2NrZXRBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmV0U29ja2V0QWRkcmVzcyIKKyB0eXBlPSJqYXZhLm5ldC5JbmV0U29ja2V0QWRkcmVzcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5ldFNvY2tldEFkZHJlc3MiCisgdHlwZT0iamF2YS5uZXQuSW5ldFNvY2tldEFkZHJlc3MiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmV0U29ja2V0QWRkcmVzcyIKKyB0eXBlPSJqYXZhLm5ldC5JbmV0U29ja2V0QWRkcmVzcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVVucmVzb2x2ZWQiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0U29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrZXRBZGRyIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3ROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVW5yZXNvbHZlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKYXJVUkxDb25uZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubmV0LlVSTENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphclVSTENvbm5lY3Rpb24iCisgdHlwZT0iamF2YS5uZXQuSmFyVVJMQ29ubmVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRyeU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEphckVudHJ5IgorIHJldHVybj0iamF2YS51dGlsLmphci5KYXJFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SmFyRmlsZSIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuSmFyRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRKYXJGaWxlVVJMIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1haW5BdHRyaWJ1dGVzIgorIHJldHVybj0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYW5pZmVzdCIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iamFyRmlsZVVSTENvbm5lY3Rpb24iCisgdHlwZT0iamF2YS5uZXQuVVJMQ29ubmVjdGlvbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik11bHRpY2FzdFNvY2tldCIKKyBleHRlbmRzPSJqYXZhLm5ldC5EYXRhZ3JhbVNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik11bHRpY2FzdFNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5NdWx0aWNhc3RTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTXVsdGljYXN0U29ja2V0IgorIHR5cGU9ImphdmEubmV0Lk11bHRpY2FzdFNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNdWx0aWNhc3RTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuTXVsdGljYXN0U29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxBZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVyZmFjZSIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb29wYmFja01vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXR3b3JrSW50ZXJmYWNlIgorIHJldHVybj0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VFRMIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lVG9MaXZlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldEludGVyZmFjZSIgdHlwZT0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVhdmVHcm91cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQWRkciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxlYXZlR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldEludGVyZmFjZSIgdHlwZT0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFjayIgdHlwZT0iamF2YS5uZXQuRGF0YWdyYW1QYWNrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR0bCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJmYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvb3BiYWNrTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3AiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5ldHdvcmtJbnRlcmZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXRJbnRlcmZhY2UiIHR5cGU9ImphdmEubmV0Lk5ldHdvcmtJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRUTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHRsIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lVG9MaXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHRsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5ldFBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5uZXQuTmV0UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5uZXQuTmV0UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZXR3b3JrSW50ZXJmYWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCeUluZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnlOYW1lIgorIHJldHVybj0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcmZhY2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5ldEFkZHJlc3NlcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLm5ldC5JbmV0QWRkcmVzcyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV0d29ya0ludGVyZmFjZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9Sb3V0ZVRvSG9zdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1JvdXRlVG9Ib3N0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0Lk5vUm91dGVUb0hvc3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1JvdXRlVG9Ib3N0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0Lk5vUm91dGVUb0hvc3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFzc3dvcmRBdXRoZW50aWNhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXNzd29yZEF1dGhlbnRpY2F0aW9uIgorIHR5cGU9ImphdmEubmV0LlBhc3N3b3JkQXV0aGVudGljYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3J0VW5yZWFjaGFibGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9ydFVucmVhY2hhYmxlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlBvcnRVbnJlYWNoYWJsZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcnRVbnJlYWNoYWJsZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5Qb3J0VW5yZWFjaGFibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlByb3RvY29sRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uZXQuUHJvdG9jb2xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJveHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3h5IgorIHR5cGU9ImphdmEubmV0LlByb3h5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5uZXQuUHJveHkuVHlwZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2EiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InR5cGUiCisgcmV0dXJuPSJqYXZhLm5ldC5Qcm94eS5UeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTk9fUFJPWFkiCisgdHlwZT0iamF2YS5uZXQuUHJveHkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3h5LlR5cGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLm5ldC5Qcm94eS5UeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YS5uZXQuUHJveHkuVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm94eVNlbGVjdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3h5U2VsZWN0b3IiCisgdHlwZT0iamF2YS5uZXQuUHJveHlTZWxlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0RmFpbGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2EiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlvZSIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0IgorIHJldHVybj0iamF2YS5uZXQuUHJveHlTZWxlY3RvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbGVjdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubmV0LlByb3h5Jmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciIgdHlwZT0iamF2YS5uZXQuUHJveHlTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXNwb25zZUNhY2hlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlc3BvbnNlQ2FjaGUiCisgdHlwZT0iamF2YS5uZXQuUmVzcG9uc2VDYWNoZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5DYWNoZVJlc3BvbnNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJycXN0TWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJycXN0SGVhZGVycyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJqYXZhLm5ldC5SZXNwb25zZUNhY2hlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uZXQuQ2FjaGVSZXF1ZXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJqYXZhLm5ldC5VUkxDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUNhY2hlIiB0eXBlPSJqYXZhLm5ldC5SZXNwb25zZUNhY2hlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlY3VyZUNhY2hlUmVzcG9uc2UiCisgZXh0ZW5kcz0iamF2YS5uZXQuQ2FjaGVSZXNwb25zZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjdXJlQ2FjaGVSZXNwb25zZSIKKyB0eXBlPSJqYXZhLm5ldC5TZWN1cmVDYWNoZVJlc3BvbnNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENpcGhlclN1aXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQ2VydGlmaWNhdGVDaGFpbiIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVlclByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZlckNlcnRpZmljYXRlQ2hhaW4iCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlcnZlclNvY2tldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmVyU29ja2V0IgorIHR5cGU9ImphdmEubmV0LlNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2ZXJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU2VydmVyU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcnZlclNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrbG9nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2ZXJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU2VydmVyU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjY2VwdCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5TZXJ2ZXJTb2NrZXRDaGFubmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVjZWl2ZUJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJldXNlQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsQWNjZXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhU29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQm91bmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2xvc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQZXJmb3JtYW5jZVByZWZlcmVuY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubmVjdGlvblRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0ZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYW5kd2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmV1c2VBZGRyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmV1c2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFGYWN0b3J5IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRJbXBsRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU29ja2V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0IgorIHR5cGU9ImphdmEubmV0LlNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJqYXZhLm5ldC5Qcm94eSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0IgorIHR5cGU9ImphdmEubmV0LlNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0IgorIHR5cGU9ImphdmEubmV0LlNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxBZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1pbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0QWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc3RBZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0UG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbWluZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbkltcGwiIHR5cGU9ImphdmEubmV0LlNvY2tldEltcGwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdGVBZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVtb3RlQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU29ja2V0Q2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmV0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2VlcEFsaXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T09CSW5saW5lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVjZWl2ZUJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV1c2VBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VuZEJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29MaW5nZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUY3BOb0RlbGF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhZmZpY0NsYXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JvdW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5wdXRTaHV0ZG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPdXRwdXRTaHV0ZG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFVyZ2VudERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZWVwQWxpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T09CSW5saW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib29iaW5saW5lIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQZXJmb3JtYW5jZVByZWZlcmVuY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubmVjdGlvblRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0ZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYW5kd2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXVzZUFkZHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXVzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VuZEJ1ZmZlclNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29MaW5nZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb1RpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29ja2V0SW1wbEZhY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRJbXBsRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGNwTm9EZWxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUcmFmZmljQ2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93bklucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd25PdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldEFkZHJlc3MiCisgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNvY2tldEltcGwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5ldC5Tb2NrZXRPcHRpb25zIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRJbXBsIgorIHR5cGU9ImphdmEubmV0LlNvY2tldEltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWNjZXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTb2NrZXQiIHR5cGU9ImphdmEubmV0LlNvY2tldEltcGwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF2YWlsYWJsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdGVBZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNTdHJlYW1pbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5pby5GaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmV0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3B0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcHRJRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPdXRwdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3RlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kVXJnZW50RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3B0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcHRJRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBlcmZvcm1hbmNlUHJlZmVyZW5jZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uZWN0aW9uVGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXRlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhbmR3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duSW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93bk91dHB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzVXJnZW50RGF0YSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhZGRyZXNzIgorIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmQiCisgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxvY2FscG9ydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3J0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU29ja2V0SW1wbEZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXRJbXBsIgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0SW1wbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU29ja2V0T3B0aW9ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE9wdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0SUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3B0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcHRJRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iSVBfTVVMVElDQVNUX0lGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVBfTVVMVElDQVNUX0lGMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklQX01VTFRJQ0FTVF9MT09QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVBfVE9TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT19CSU5EQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX0JST0FEQ0FTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX0tFRVBBTElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09fTElOR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX09PQklOTElORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09fUkNWQlVGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT19SRVVTRUFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX1NOREJVRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09fVElNRU9VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENQX05PREVMQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU29ja2V0UGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5uZXQuU29ja2V0UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU29ja2V0VGltZW91dEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLkludGVycnVwdGVkSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRUaW1lb3V0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlNvY2tldFRpbWVvdXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRUaW1lb3V0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlNvY2tldFRpbWVvdXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJJIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSSSIKKyB0eXBlPSJqYXZhLm5ldC5VUkkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkkiCisgdHlwZT0iamF2YS5uZXQuVVJJIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzc3AiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkkiCisgdHlwZT0iamF2YS5uZXQuVVJJIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyaW5mbyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhZ21lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkkiCisgdHlwZT0iamF2YS5uZXQuVVJJIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFnbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVVJJU3ludGF4RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSSSIKKyB0eXBlPSJqYXZhLm5ldC5VUkkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWdtZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVUklTeW50YXhFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRob3JpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYWdtZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdBdXRob3JpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhd0ZyYWdtZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdRdWVyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmF3U2NoZW1lU3BlY2lmaWNQYXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdVc2VySW5mbyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWVTcGVjaWZpY1BhcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJJbmZvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fic29sdXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wYXF1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9ybWFsaXplIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlU2VydmVyQXV0aG9yaXR5IgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJVUklTeW50YXhFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxhdGl2aXplIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWxhdGl2ZSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmUiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbGF0aXZlIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVsYXRpdmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BU0NJSVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VUkwiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJJU3ludGF4RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYXNvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTCIKKyB0eXBlPSJqYXZhLm5ldC5VUkwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVjIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMIgorIHR5cGU9ImphdmEubmV0LlVSTCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlYyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkVVJMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTCIKKyB0eXBlPSJqYXZhLm5ldC5VUkwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkwiCisgdHlwZT0iamF2YS5uZXQuVVJMIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkwiCisgdHlwZT0iamF2YS5uZXQuVVJMIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkVVJMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTCIKKyB0eXBlPSJqYXZhLm5ldC5VUkwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLm5ldC5VUkxTdHJlYW1IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhvcml0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzc1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0UG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWVyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVmIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VySW5mbyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkNvbm5lY3Rpb24iCisgcmV0dXJuPSJqYXZhLm5ldC5VUkxDb25uZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlVSTENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJqYXZhLm5ldC5Qcm94eSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2FtZUZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlclVSTCIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJJbmZvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVSTFN0cmVhbUhhbmRsZXJGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUZhY3RvcnkiIHR5cGU9ImphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXJGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvRXh0ZXJuYWxGb3JtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1VSSSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iVVJJU3ludGF4RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMQ2xhc3NMb2FkZXIiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5TZWN1cmVDbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTENsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEubmV0LlVSTENsYXNzTG9hZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJscyIgdHlwZT0iamF2YS5uZXQuVVJMW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTENsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEubmV0LlVSTENsYXNzTG9hZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJscyIgdHlwZT0iamF2YS5uZXQuVVJMW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkxDbGFzc0xvYWRlciIKKyB0eXBlPSJqYXZhLm5ldC5VUkxDbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlYXJjaFVybHMiIHR5cGU9ImphdmEubmV0LlVSTFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iamF2YS5uZXQuVVJMU3RyZWFtSGFuZGxlckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRVUkwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZpbmVQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYW5pZmVzdCIgdHlwZT0iamF2YS51dGlsLmphci5NYW5pZmVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kUmVzb3VyY2UiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFJlc291cmNlcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLm5ldC5VUkwmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkxzIgorIHJldHVybj0iamF2YS5uZXQuVVJMW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkxDbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmxzIiB0eXBlPSJqYXZhLm5ldC5VUkxbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmEubmV0LlVSTENsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybHMiIHR5cGU9ImphdmEubmV0LlVSTFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRDbCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSTENvbm5lY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMQ29ubmVjdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5VUkxDb25uZWN0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRSZXF1ZXN0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb3dVc2VySW50ZXJhY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3RUaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzc1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50RW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRBbGxvd1VzZXJJbnRlcmFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0UmVxdWVzdFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRVc2VDYWNoZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvSW5wdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvT3V0cHV0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBpcmF0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlTmFtZU1hcCIKKyByZXR1cm49ImphdmEubmV0LkZpbGVOYW1lTWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVhZGVyRmllbGQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJGaWVsZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJGaWVsZERhdGUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlYWRlckZpZWxkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVhZGVyRmllbGRLZXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVhZGVyRmllbGRzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWZNb2RpZmllZFNpbmNlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhc3RNb2RpZmllZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcm1pc3Npb24iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYWRUaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RQcm9wZXJ0aWVzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJMIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZUNhY2hlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ3Vlc3NDb250ZW50VHlwZUZyb21OYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ3Vlc3NDb250ZW50VHlwZUZyb21TdHJlYW0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbGxvd1VzZXJJbnRlcmFjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbm5lY3RUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRIYW5kbGVyRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50RmFjdG9yeSIgdHlwZT0iamF2YS5uZXQuQ29udGVudEhhbmRsZXJGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRBbGxvd1VzZXJJbnRlcmFjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxsb3dzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRSZXF1ZXN0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRVc2VDYWNoZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb0lucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG9PdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWxlTmFtZU1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLm5ldC5GaWxlTmFtZU1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJZk1vZGlmaWVkU2luY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWFkVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXF1ZXN0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlQ2FjaGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhbGxvd1VzZXJJbnRlcmFjdGlvbiIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29ubmVjdGVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkb0lucHV0IgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkb091dHB1dCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWZNb2RpZmllZFNpbmNlIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1cmwiCisgdHlwZT0iamF2YS5uZXQuVVJMIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idXNlQ2FjaGVzIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMRGVjb2RlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMRGVjb2RlciIKKyB0eXBlPSJqYXZhLm5ldC5VUkxEZWNvZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMRW5jb2RlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVuY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMU3RyZWFtSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkxTdHJlYW1IYW5kbGVyIgorIHR5cGU9ImphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsMSIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwyIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9zdEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhvc3RzRXF1YWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwxIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVybDIiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlVSTENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idSIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlVSTENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InUiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJveHkiIHR5cGU9ImphdmEubmV0LlByb3h5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVVSTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InUiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYW1lRmlsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybDEiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsMiIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVSTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idSIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJMIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idSIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJJbmZvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvRXh0ZXJuYWxGb3JtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlVSTFN0cmVhbUhhbmRsZXJGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVVJMU3RyZWFtSGFuZGxlciIKKyByZXR1cm49ImphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVua25vd25TZXJ2aWNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbmtub3duU2VydmljZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5Vbmtub3duU2VydmljZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVua25vd25TZXJ2aWNlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlVua25vd25TZXJ2aWNlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5uaW8iCis+Cis8Y2xhc3MgbmFtZT0iQnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxpcCIKKyByZXR1cm49ImphdmEubmlvLkJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1JlbWFpbmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWRPbmx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxpbWl0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGltaXQiCisgcmV0dXJuPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrIgorIHJldHVybj0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3NpdGlvbiIKKyByZXR1cm49ImphdmEubmlvLkJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbWFpbmluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV3aW5kIgorIHJldHVybj0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVmZmVyT3ZlcmZsb3dFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWZmZXJPdmVyZmxvd0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5CdWZmZXJPdmVyZmxvd0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCdWZmZXJVbmRlcmZsb3dFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWZmZXJVbmRlcmZsb3dFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uQnVmZmVyVW5kZXJmbG93RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ5dGVCdWZmZXIiCisgZXh0ZW5kcz0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWxsb2NhdGUiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWxsb2NhdGVEaXJlY3QiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcnJheU9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzQ2hhckJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc0RvdWJsZUJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzRmxvYXRCdWZmZXIiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzSW50QnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNMb25nQnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzUmVhZE9ubHlCdWZmZXIiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNTaG9ydEJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFjdCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1cGxpY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNBcnJheSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RpcmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcmRlciIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVPcmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJieXRlT3JkZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVPcmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Q2hhciIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Q2hhciIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RG91YmxlIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dERvdWJsZSIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGbG9hdCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEZsb2F0IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0SW50IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEludCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRMb25nIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRMb25nIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTaG9ydCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFNob3J0IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2xpY2UiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCeXRlT3JkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im5hdGl2ZU9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCSUdfRU5ESUFOIgorIHR5cGU9ImphdmEubmlvLkJ5dGVPcmRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVRUTEVfRU5ESUFOIgorIHR5cGU9ImphdmEubmlvLkJ5dGVPcmRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhckJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkFwcGVuZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUmVhZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFycmF5IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXlPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc1JlYWRPbmx5QnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYXJBdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYWN0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXJCdWZmZXIiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVwbGljYXRlIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLm5pby5DaGFyQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaHNlcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaHNlcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRG91YmxlQnVmZmVyIgorIGV4dGVuZHM9ImphdmEubmlvLkJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFsbG9jYXRlIgorIHJldHVybj0iamF2YS5uaW8uRG91YmxlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFycmF5T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNSZWFkT25seUJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhY3QiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVwbGljYXRlIgorIHJldHVybj0iamF2YS5uaW8uRG91YmxlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uRG91YmxlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQXJyYXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEaXJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3JkZXIiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlT3JkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uRG91YmxlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGbG9hdEJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLkZsb2F0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJmbG9hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXlPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc1JlYWRPbmx5QnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYWN0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdXBsaWNhdGUiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkZsb2F0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLkZsb2F0QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLkZsb2F0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50QnVmZmVyIgorIGV4dGVuZHM9ImphdmEubmlvLkJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFsbG9jYXRlIgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFycmF5T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNSZWFkT25seUJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhY3QiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVwbGljYXRlIgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQXJyYXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEaXJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3JkZXIiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlT3JkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnZhbGlkTWFya0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZE1hcmtFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uSW52YWxpZE1hcmtFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9uZ0J1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLkxvbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcnJheSIKKyByZXR1cm49ImxvbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFycmF5T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNSZWFkT25seUJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkxvbmdCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYWN0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXJCdWZmZXIiIHR5cGU9ImphdmEubmlvLkxvbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVwbGljYXRlIgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5pby5Mb25nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkxvbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5Mb25nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubmlvLkxvbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNsaWNlIgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5Mb25nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLkxvbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFwcGVkQnl0ZUJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZm9yY2UiCisgcmV0dXJuPSJqYXZhLm5pby5NYXBwZWRCeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb2FkZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImphdmEubmlvLk1hcHBlZEJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWFkT25seUJ1ZmZlckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWFkT25seUJ1ZmZlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5SZWFkT25seUJ1ZmZlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaG9ydEJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJzaG9ydFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXlPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc1JlYWRPbmx5QnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYWN0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdXBsaWNhdGUiCisgcmV0dXJuPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLm5pby5jaGFubmVscyIKKz4KKzxjbGFzcyBuYW1lPSJBbHJlYWR5Q29ubmVjdGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbHJlYWR5Q29ubmVjdGVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLkFscmVhZHlDb25uZWN0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXN5bmNocm9ub3VzQ2xvc2VFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzeW5jaHJvbm91c0Nsb3NlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLkFzeW5jaHJvbm91c0Nsb3NlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJCeXRlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLldyaXRhYmxlQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FuY2VsbGVkS2V5RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYW5jZWxsZWRLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2FuY2VsbGVkS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BlbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2hhbm5lbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im5ld0NoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0NoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5Xcml0YWJsZUJ5dGVDaGFubmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5uZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbCIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuV3JpdGFibGVCeXRlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdSZWFkZXIiCisgcmV0dXJuPSJqYXZhLmlvLlJlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFubmVsIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWNvZGVyIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5CdWZmZXJDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1JlYWRlciIKKyByZXR1cm49ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5uZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1dyaXRlciIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5uZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLldyaXRhYmxlQnl0ZUNoYW5uZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kZXIiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldEVuY29kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbkJ1ZmZlckNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3V3JpdGVyIgorIHJldHVybj0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbCIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuV3JpdGFibGVCeXRlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xvc2VkQnlJbnRlcnJ1cHRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuQXN5bmNocm9ub3VzQ2xvc2VFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbG9zZWRCeUludGVycnVwdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5DbG9zZWRCeUludGVycnVwdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbG9zZWRDaGFubmVsRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbG9zZWRDaGFubmVsRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLkNsb3NlZENoYW5uZWxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xvc2VkU2VsZWN0b3JFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsb3NlZFNlbGVjdG9yRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLkNsb3NlZFNlbGVjdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbm5lY3Rpb25QZW5kaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uUGVuZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5Db25uZWN0aW9uUGVuZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhZ3JhbUNoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuR2F0aGVyaW5nQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuU2NhdHRlcmluZ0J5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbUNoYW5uZWwiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuRGF0YWdyYW1DaGFubmVsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0b3JQcm92aWRlciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRGF0YWdyYW1DaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3QiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5EYXRhZ3JhbUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLkRhdGFncmFtQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0cyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0cyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlIgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5EYXRhZ3JhbVNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkT3BzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlcyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZXMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZUNoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0SW50ZXJydXB0aWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuR2F0aGVyaW5nQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuU2NhdHRlcmluZ0J5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlQ2hhbm5lbCIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YWRhdGEiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvY2siCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlTG9jayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUxvY2siCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwIgorIHJldHVybj0iamF2YS5uaW8uTWFwcGVkQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbC5NYXBNb2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zaXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc2l0aW9uIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtYmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zZmVyRnJvbSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zZmVyVG8iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5Xcml0YWJsZUJ5dGVDaGFubmVsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnVuY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLkZpbGVDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUxvY2siCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlTG9jayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlMb2NrIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUxvY2siCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVDaGFubmVsLk1hcE1vZGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iUFJJVkFURSIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbC5NYXBNb2RlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfT05MWSIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbC5NYXBNb2RlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfV1JJVEUiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUNoYW5uZWwuTWFwTW9kZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZUxvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZUxvY2siCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUxvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFubmVsIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hhcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3ZlcmxhcHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zaXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWxlTG9ja0ludGVycnVwdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZUxvY2tJbnRlcnJ1cHRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUxvY2tJbnRlcnJ1cHRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkdhdGhlcmluZ0J5dGVDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLldyaXRhYmxlQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsQmxvY2tpbmdNb2RlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsQmxvY2tpbmdNb2RlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLklsbGVnYWxCbG9ja2luZ01vZGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWxsZWdhbFNlbGVjdG9yRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsU2VsZWN0b3JFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuSWxsZWdhbFNlbGVjdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJJbnRlcnJ1cHRpYmxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5DaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJOb0Nvbm5lY3Rpb25QZW5kaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb0Nvbm5lY3Rpb25QZW5kaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLk5vQ29ubmVjdGlvblBlbmRpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9uUmVhZGFibGVDaGFubmVsRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb25SZWFkYWJsZUNoYW5uZWxFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuTm9uUmVhZGFibGVDaGFubmVsRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vbldyaXRhYmxlQ2hhbm5lbEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9uV3JpdGFibGVDaGFubmVsRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLk5vbldyaXRhYmxlQ2hhbm5lbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb3RZZXRCb3VuZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm90WWV0Qm91bmRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuTm90WWV0Qm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm90WWV0Q29ubmVjdGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RZZXRDb25uZWN0ZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuTm90WWV0Q29ubmVjdGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik92ZXJsYXBwaW5nRmlsZUxvY2tFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik92ZXJsYXBwaW5nRmlsZUxvY2tFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuT3ZlcmxhcHBpbmdGaWxlTG9ja0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQaXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBpcGUiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuUGlwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuUGlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaW5rIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuUGlwZS5TaW5rQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvdXJjZSIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlBpcGUuU291cmNlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpcGUuU2lua0NoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5HYXRoZXJpbmdCeXRlQ2hhbm5lbCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5Xcml0YWJsZUJ5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXBlLlNpbmtDaGFubmVsIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlBpcGUuU2lua0NoYW5uZWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ2YWxpZE9wcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpcGUuU291cmNlQ2hhbm5lbCIKKyBleHRlbmRzPSJqYXZhLm5pby5jaGFubmVscy5zcGkuQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuU2NhdHRlcmluZ0J5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXBlLlNvdXJjZUNoYW5uZWwiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuUGlwZS5Tb3VyY2VDaGFubmVsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5TZWxlY3RvclByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idmFsaWRPcHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVhZGFibGVCeXRlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5DaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2NhdHRlcmluZ0J5dGVDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2VsZWN0YWJsZUNoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0SW50ZXJydXB0aWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VsZWN0YWJsZUNoYW5uZWwiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0YWJsZUNoYW5uZWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmxvY2tpbmdMb2NrIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbmZpZ3VyZUJsb2NraW5nIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmxvY2siIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmxvY2tpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZWdpc3RlcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleUZvciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3ZpZGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wZXJhdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9zZWRDaGFubmVsRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5DbG9zZWRDaGFubmVsRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkT3BzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VsZWN0aW9uS2V5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlbGVjdGlvbktleSIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXR0YWNoIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbk9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdHRhY2htZW50IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlcmVzdE9wcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVyZXN0T3BzIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0aW9uS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wZXJhdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FjY2VwdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXcml0YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkeU9wcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbGVjdG9yIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9QX0FDQ0VQVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0NPTk5FQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JFQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1dSSVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VsZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VsZWN0b3IiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BlbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3ZpZGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWxlY3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VsZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbGVjdE5vdyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWxlY3RlZEtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWtldXAiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3RvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlcnZlclNvY2tldENoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcnZlclNvY2tldENoYW5uZWwiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VydmVyU29ja2V0Q2hhbm5lbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yUHJvdmlkZXIiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5TZWxlY3RvclByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWNjZXB0IgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU29ja2V0Q2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VydmVyU29ja2V0Q2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZE9wcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNvY2tldENoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuR2F0aGVyaW5nQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuU2NhdHRlcmluZ0J5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRDaGFubmVsIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlNvY2tldENoYW5uZWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvclByb3ZpZGVyIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuU2VsZWN0b3JQcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaENvbm5lY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGlvblBlbmRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNvY2tldENoYW5uZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNvY2tldENoYW5uZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldHMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldHMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRPcHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VzIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlcyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbnJlc29sdmVkQWRkcmVzc0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5yZXNvbHZlZEFkZHJlc3NFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuVW5yZXNvbHZlZEFkZHJlc3NFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5VbnN1cHBvcnRlZEFkZHJlc3NUeXBlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJXcml0YWJsZUJ5dGVDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLkNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLnNwaSIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdEludGVycnVwdGlibGVDaGFubmVsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5JbnRlcnJ1cHRpYmxlQ2hhbm5lbCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RJbnRlcnJ1cHRpYmxlQ2hhbm5lbCIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuQWJzdHJhY3RJbnRlcnJ1cHRpYmxlQ2hhbm5lbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiZWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWNjZXNzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBc3luY2hyb25vdXNDbG9zZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuQXN5bmNocm9ub3VzQ2xvc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbENsb3NlQ2hhbm5lbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCIKKyBleHRlbmRzPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3RhYmxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yUHJvdmlkZXIiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5TZWxlY3RvclByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmxvY2tpbmdMb2NrIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbmZpZ3VyZUJsb2NraW5nIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmxvY2tpbmdNb2RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsQ2xvc2VDaGFubmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxDbG9zZVNlbGVjdGFibGVDaGFubmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsQ29uZmlndXJlQmxvY2tpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJsb2NraW5nTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCbG9ja2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlZ2lzdGVyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlGb3IiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5zcGkuU2VsZWN0b3JQcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0aW9uS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJlc3RTZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFNlbGVjdGlvbktleSIKKyBleHRlbmRzPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0U2VsZWN0aW9uS2V5IgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5BYnN0cmFjdFNlbGVjdGlvbktleSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFNlbGVjdG9yIgorIGV4dGVuZHM9ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFNlbGVjdG9yIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5BYnN0cmFjdFNlbGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0b3JQcm92aWRlciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiZWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxsZWRLZXlzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlcmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0aW9uS2V5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsQ2xvc2VTZWxlY3RvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3ZpZGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFubmVsIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9ucyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRhY2htZW50IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlbGVjdG9yUHJvdmlkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VsZWN0b3JQcm92aWRlciIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuU2VsZWN0b3JQcm92aWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpbmhlcml0ZWRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkRhdGFncmFtQ2hhbm5lbCIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLkRhdGFncmFtQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuUGlwZSIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlBpcGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblNlbGVjdG9yIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblNlcnZlclNvY2tldENoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5TZXJ2ZXJTb2NrZXRDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5Tb2NrZXRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU29ja2V0Q2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcm92aWRlciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLnNwaS5TZWxlY3RvclByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEubmlvLmNoYXJzZXQiCis+Cis8Y2xhc3MgbmFtZT0iQ2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5DaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhcnNldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyc2V0IgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbm9uaWNhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFsaWFzZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXZhaWxhYmxlQ2hhcnNldHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5FbmNvZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGUiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZhdWx0Q2hhcnNldCIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BsYXlOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwbGF5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvck5hbWUiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlZ2lzdGVyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEZWNvZGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RGVjb2RlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0VuY29kZXIiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXRFbmNvZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhcnNldERlY29kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hhcnNldERlY29kZXIiCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RGVjb2RlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXZlcmFnZUNoYXJzUGVyQnl0ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heENoYXJzUGVyQnl0ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdmVyYWdlQ2hhcnNQZXJCeXRlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFyc2V0IgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJhY3RlckNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGUiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNvZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZE9mSW5wdXQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlTG9vcCIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5uaW8uQ2hhckJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRlY3RlZENoYXJzZXQiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNvZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5uaW8uQ2hhckJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsRmx1c2giCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNvZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbE9uTWFsZm9ybWVkSW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBY3Rpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbE9uVW5tYXBwYWJsZUNoYXJhY3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0FjdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsUmVwbGFjZVdpdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdSZXBsYWNlbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsUmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXV0b0RldGVjdGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDaGFyc2V0RGV0ZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hbGZvcm1lZElucHV0QWN0aW9uIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXhDaGFyc1BlckJ5dGUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWFsZm9ybWVkSW5wdXQiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0FjdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVubWFwcGFibGVDaGFyYWN0ZXIiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0FjdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlV2l0aCIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldERlY29kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UmVwbGFjZW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5tYXBwYWJsZUNoYXJhY3RlckFjdGlvbiIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhcnNldEVuY29kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hhcnNldEVuY29kZXIiCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RW5jb2RlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF2ZXJhZ2VCeXRlc1BlckNoYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhCeXRlc1BlckNoYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyc2V0RW5jb2RlciIKKyB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXRFbmNvZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXZlcmFnZUJ5dGVzUGVyQ2hhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heEJ5dGVzUGVyQ2hhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGxhY2VtZW50IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdmVyYWdlQnl0ZXNQZXJDaGFyIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5FbmNvZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbkVuY29kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcXVlbmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYXJzZXQiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLm5pby5DaGFyQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZSIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kT2ZJbnB1dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVMb29wIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RlclJlc3VsdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQ2hhckJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RlclJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbEZsdXNoIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RlclJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxPbk1hbGZvcm1lZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3QWN0aW9uIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNvZGluZ0Vycm9yQWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxPblVubWFwcGFibGVDaGFyYWN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBY3Rpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbFJlcGxhY2VXaXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UmVwbGFjZW1lbnQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsUmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGVnYWxSZXBsYWNlbWVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGwiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWxmb3JtZWRJbnB1dEFjdGlvbiIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF4Qnl0ZXNQZXJDaGFyIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1hbGZvcm1lZElucHV0IgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RW5jb2RlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBY3Rpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Vbm1hcHBhYmxlQ2hhcmFjdGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RW5jb2RlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBY3Rpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZVdpdGgiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXRFbmNvZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGxhY2VtZW50IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZW1lbnQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldEVuY29kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bm1hcHBhYmxlQ2hhcmFjdGVyQWN0aW9uIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2Rlck1hbGZ1bmN0aW9uRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29kZXJNYWxmdW5jdGlvbkVycm9yIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kZXJNYWxmdW5jdGlvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXgiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2RlclJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImlzRXJyb3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTWFsZm9ybWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc092ZXJmbG93IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VuZGVyZmxvdyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVbm1hcHBhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFsZm9ybWVkRm9yTGVuZ3RoIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RlclJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGhyb3dFeGNlcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCdWZmZXJPdmVyZmxvd0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyT3ZlcmZsb3dFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkJ1ZmZlclVuZGVyZmxvd0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyVW5kZXJmbG93RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJDaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRJbnB1dEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5NYWxmb3JtZWRJbnB1dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5tYXBwYWJsZUNoYXJhY3RlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Vbm1hcHBhYmxlQ2hhcmFjdGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubWFwcGFibGVGb3JMZW5ndGgiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNvZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9WRVJGTE9XIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJGTE9XIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvZGluZ0Vycm9yQWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJJR05PUkUiCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVBMQUNFIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVQT1JUIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxDaGFyc2V0TmFtZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbENoYXJzZXROYW1lRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuSWxsZWdhbENoYXJzZXROYW1lRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJzZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWxmb3JtZWRJbnB1dEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJhY3RlckNvZGluZ0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbGZvcm1lZElucHV0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuTWFsZm9ybWVkSW5wdXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVubWFwcGFibGVDaGFyYWN0ZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhcnNldC5DaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbm1hcHBhYmxlQ2hhcmFjdGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuVW5tYXBwYWJsZUNoYXJhY3RlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRDaGFyc2V0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZENoYXJzZXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5VbnN1cHBvcnRlZENoYXJzZXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnNldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5uaW8uY2hhcnNldC5zcGkiCis+Cis8Y2xhc3MgbmFtZT0iQ2hhcnNldFByb3ZpZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoYXJzZXRQcm92aWRlciIKKyB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LnNwaS5DaGFyc2V0UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hhcnNldEZvck5hbWUiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hhcnNldHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5uaW8uY2hhcnNldC5DaGFyc2V0Jmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5zZWN1cml0eSIKKz4KKzxjbGFzcyBuYW1lPSJBY2Nlc3NDb250cm9sQ29udGV4dCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2Nlc3NDb250cm9sQ29udGV4dCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xDb250ZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21iaW5lciIgdHlwZT0iamF2YS5zZWN1cml0eS5Eb21haW5Db21iaW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzQ29udHJvbENvbnRleHQiCisgdHlwZT0iamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sQ29udGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbltdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hlY2tQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybSIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBY2Nlc3NDb250cm9sRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tYWluQ29tYmluZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkRvbWFpbkNvbWJpbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2Nlc3NDb250cm9sRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm0iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFBlcm1pc3Npb24iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWNjZXNzQ29udHJvbGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hlY2tQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb1ByaXZpbGVnZWQiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkQWN0aW9uJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvUHJpdmlsZWdlZCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb24mbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9Qcml2aWxlZ2VkIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEV4Y2VwdGlvbkFjdGlvbiZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkQWN0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvUHJpdmlsZWdlZCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24mbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZXh0IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFsZ29yaXRobVBhcmFtZXRlckdlbmVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1HZW5TcGkiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yU3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJHZW5lcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJHZW5lcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlckdlbmVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VuUGFyYW1TcGVjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdlblBhcmFtU3BlYyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbGdvcml0aG1QYXJhbWV0ZXJHZW5lcmF0b3JTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yU3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVycyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZW5QYXJhbVNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVycyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdQcmFtU3BpIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnNTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyU3BlYyIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1TcGVjIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRQYXJhbWV0ZXJTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1TcGVjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkUGFyYW1ldGVyU3BlY0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVyc1NwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbGdvcml0aG1QYXJhbWV0ZXJzU3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVyc1NwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldEVuY29kZWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRQYXJhbWV0ZXJTcGVjIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbVNwZWMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkUGFyYW1ldGVyU3BlY0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbVNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyU3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRQYXJhbWV0ZXJTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbGxQZXJtaXNzaW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxsUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkFsbFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbGxQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxsUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdXRoUHJvdmlkZXIiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aFByb3ZpZGVyIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQXV0aFByb3ZpZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibG9naW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3QiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFja0hhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkxvZ2luRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmxvZ2luLkxvZ2luRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZ291dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTG9naW5FeGNlcHRpb24iIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGgubG9naW4uTG9naW5FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FsbGJhY2tIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLkNhbGxiYWNrSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1Blcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1Blcm1pc3Npb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1Blcm1pc3Npb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHdWFyYW50b3IiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvZGVTaWduZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29kZVNpZ25lciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkNvZGVTaWduZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWduZXJDZXJ0UGF0aCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lc3RhbXAiIHR5cGU9ImphdmEuc2VjdXJpdHkuVGltZXN0YW1wIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnbmVyQ2VydFBhdGgiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXN0YW1wIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29kZVNvdXJjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29kZVNvdXJjZSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkNvZGVTb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0cyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvZGVTb3VyY2UiCisgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmVycyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU2lnbmVyW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZXMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvZGVTaWduZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Db2RlU2lnbmVyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpZ2VzdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpZ2VzdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkRpZ2VzdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlnZXN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlnZXN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpZ2VzdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkRpZ2VzdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGlnZXN0SW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpZ2VzdElucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0SW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZ2VzdCIgdHlwZT0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZURpZ2VzdCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1lc3NhZ2VEaWdlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWdlc3QiIHR5cGU9ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImRpZ2VzdCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGlnZXN0T3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlnZXN0T3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0T3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlnZXN0IiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXNzYWdlRGlnZXN0IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVzc2FnZURpZ2VzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZ2VzdCIgdHlwZT0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iZGlnZXN0IgorIHR5cGU9ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRG9tYWluQ29tYmluZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb21iaW5lIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3VycmVudCIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFzc2lnbmVkIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3RlY3Rpb25Eb21haW5bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHdWFyZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNoZWNrR3VhcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iR3VhcmRlZE9iamVjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3VhcmRlZE9iamVjdCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lkd1YXJkZWRPYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imd1YXJkIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lkd1YXJkIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJZGVudGl0eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IklkZW50aXR5IgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJZGVudGl0eSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWRlbnRpdHkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5JZGVudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjb3BlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZENlcnRpZmljYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImphdmEuc2VjdXJpdHkuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjZXJ0aWZpY2F0ZXMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5mbyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY29wZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuSWRlbnRpdHlTY29wZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlkZW50aXR5RXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRlbnRpdHkiIHR5cGU9ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQ2VydGlmaWNhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5DZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFB1YmxpY0tleSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklkZW50aXR5U2NvcGUiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5JZGVudGl0eSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJZGVudGl0eVNjb3BlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSWRlbnRpdHlTY29wZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklkZW50aXR5U2NvcGUiCisgdHlwZT0iamF2YS5zZWN1cml0eS5JZGVudGl0eVNjb3BlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWRlbnRpdHlTY29wZSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY29wZSIgdHlwZT0iamF2YS5zZWN1cml0eS5JZGVudGl0eVNjb3BlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlNYW5hZ2VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRJZGVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRlbnRpdHkiIHR5cGU9ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJZGVudGl0eSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJZGVudGl0eSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW5jaXBhbCIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWRlbnRpdHkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtU2NvcGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpZGVudGl0aWVzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEuc2VjdXJpdHkuSWRlbnRpdHkmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSWRlbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkZW50aXR5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlNYW5hZ2VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtU2NvcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjb3BlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NjAzMzg0MTUyNzQ5NTY3NjU0TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IktleUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RmFjdG9yeSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlGYWNTcGkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5RmFjdG9yeVNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlUHJpdmF0ZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlTcGVjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleVNwZWNFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZVB1YmxpYyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHVibGljS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlTcGVjIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlTcGVjIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJhbnNsYXRlS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleUZhY3RvcnlTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RmFjdG9yeVNwaSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUZhY3RvcnlTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVQcml2YXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlUHVibGljIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0S2V5U3BlYyIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVRyYW5zbGF0ZUtleSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlNYW5hZ2VtZW50RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleVBhaXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5UGFpciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVBhaXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHVibGljS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcml2YXRlS2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpYyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHVibGljS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleVBhaXJHZW5lcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5LZXlQYWlyR2VuZXJhdG9yU3BpIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlQYWlyR2VuZXJhdG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5UGFpckdlbmVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdlbktleVBhaXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVBhaXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUtleVBhaXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVBhaXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5UGFpckdlbmVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVBhaXJHZW5lcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVBhaXJHZW5lcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0aWFsaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0aWFsaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleVBhaXJHZW5lcmF0b3JTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5UGFpckdlbmVyYXRvclNwaSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVBhaXJHZW5lcmF0b3JTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVLZXlQYWlyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXlQYWlyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdGlhbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5UmVwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlSZXAiCisgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlSZXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVJlcC5UeXBlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RlZCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVhZFJlc29sdmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJPYmplY3RTdHJlYW1FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleVJlcC5UeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXlSZXAuVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5UmVwLlR5cGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlTdG9yZVNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZVNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhbGlhc2VzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zQWxpYXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudHJ5SW5zdGFuY2VPZiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5Q2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5LZXlTdG9yZS5FbnRyeSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZUFsaWFzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlQ2hhaW4iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlYXRpb25EYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50cnkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5Qcm90ZWN0aW9uUGFyYW1ldGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5yZWNvdmVyYWJsZUVudHJ5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlVucmVjb3ZlcmFibGVFbnRyeUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2VydGlmaWNhdGVFbnRyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzS2V5RW50cnkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkxvYWRTdG9yZVBhcmFtZXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2VydGlmaWNhdGVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnQiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5FbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuUHJvdGVjdGlvblBhcmFtZXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2V5RW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleUVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYWluIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5Mb2FkU3RvcmVQYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlTdG9yZS5CdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmUuQnVpbGRlciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkJ1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5U3RvcmUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RlY3Rpb25QYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90ZWN0aW9uUGFyYW1ldGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdGVjdGlvblBhcmFtZXRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5Qcm90ZWN0aW9uUGFyYW1ldGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90ZWN0aW9uUGFyYW1ldGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmUuQ2FsbGJhY2tIYW5kbGVyUHJvdGVjdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuUHJvdGVjdGlvblBhcmFtZXRlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmUuQ2FsbGJhY2tIYW5kbGVyUHJvdGVjdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkNhbGxiYWNrSGFuZGxlclByb3RlY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLkNhbGxiYWNrSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxiYWNrSGFuZGxlciIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGguY2FsbGJhY2suQ2FsbGJhY2tIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJLZXlTdG9yZS5FbnRyeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJLZXlTdG9yZS5Mb2FkU3RvcmVQYXJhbWV0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RlY3Rpb25QYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmUuUGFzc3dvcmRQcm90ZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXguc2VjdXJpdHkuYXV0aC5EZXN0cm95YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlLlBhc3N3b3JkUHJvdGVjdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlBhc3N3b3JkUHJvdGVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJEZXN0cm95RmFpbGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLkRlc3Ryb3lGYWlsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFzc3dvcmQiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Rlc3Ryb3llZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlTdG9yZS5Qcml2YXRlS2V5RW50cnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuRW50cnkiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlLlByaXZhdGVLZXlFbnRyeSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByaXZhdGVLZXlFbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaXZhdGVLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhaW4iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGVDaGFpbiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaXZhdGVLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJLZXlTdG9yZS5TZWNyZXRLZXlFbnRyeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5FbnRyeSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmUuU2VjcmV0S2V5RW50cnkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5TZWNyZXRLZXlFbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3JldEtleSIgdHlwZT0iamF2YXguY3J5cHRvLlNlY3JldEtleSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFNlY3JldEtleSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmUuVHJ1c3RlZENlcnRpZmljYXRlRW50cnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuRW50cnkiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlLlRydXN0ZWRDZXJ0aWZpY2F0ZUVudHJ5IgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuVHJ1c3RlZENlcnRpZmljYXRlRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cnVzdENlcnRpZmljYXRlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRUcnVzdGVkQ2VydGlmaWNhdGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlTdG9yZVNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlTdG9yZVNwaSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUFsaWFzZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVDb250YWluc0FsaWFzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVEZWxldGVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUVudHJ5SW5zdGFuY2VPZiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuS2V5U3RvcmUuRW50cnkmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENlcnRpZmljYXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENlcnRpZmljYXRlQWxpYXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnQiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRDZXJ0aWZpY2F0ZUNoYWluIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0Q3JlYXRpb25EYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0RW50cnkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdFBhcmFtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuVW5yZWNvdmVyYWJsZUVudHJ5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldEtleSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSXNDZXJ0aWZpY2F0ZUVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJc0tleUVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVMb2FkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUxvYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5Mb2FkU3RvcmVQYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNldENlcnRpZmljYXRlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNldEVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90UGFyYW0iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuUHJvdGVjdGlvblBhcmFtZXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lU2V0S2V5RW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNldEtleUVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYWluIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTdG9yZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkxvYWRTdG9yZVBhcmFtZXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVzc2FnZURpZ2VzdCIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3RTcGkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lc3NhZ2VEaWdlc3QiCisgdHlwZT0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGlnZXN0IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpZ2VzdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRGlnZXN0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkRpZ2VzdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaWdlc3QiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpZ2VzdExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRXF1YWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZ2VzdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlnZXN0YiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVzc2FnZURpZ2VzdFNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZXNzYWdlRGlnZXN0U3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdFNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lRGlnZXN0IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lRGlnZXN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEaWdlc3RFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldERpZ2VzdExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVSZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5Lkd1YXJkIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVja0d1YXJkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdQZXJtaXNzaW9uQ29sbGVjdGlvbiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uQ29sbGVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYWRPbmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQZXJtaXNzaW9ucyIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb25Db2xsZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9ucyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUG9saWN5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvbGljeSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlBvbGljeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9ucyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEuc2VjdXJpdHkuQ29kZVNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9ucyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRvbWFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvbGljeSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUG9saWN5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRvbWFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVmcmVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb2xpY3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGljeSIgdHlwZT0iamF2YS5zZWN1cml0eS5Qb2xpY3kiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlByaW5jaXBhbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlByaXZhdGVLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjAzNDA0NDMxNDU4OTUxMzQzMEwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUHJpdmlsZWdlZEFjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleCIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJydW4iCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJvdGVjdGlvbkRvbWFpbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdGVjdGlvbkRvbWFpbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3RlY3Rpb25Eb21haW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9ucyIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uQ29sbGVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdGVjdGlvbkRvbWFpbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3RlY3Rpb25Eb21haW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9ucyIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uQ29sbGVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2wiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbmNpcGFscyIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWxbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29kZVNvdXJjZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuQ29kZVNvdXJjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcm1pc3Npb25zIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uQ29sbGVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW5jaXBhbHMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm92aWRlciIKKyBleHRlbmRzPSJqYXZhLnV0aWwuUHJvcGVydGllcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXIiCisgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluZm8iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZpY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyLlNlcnZpY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZpY2VzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LlByb3ZpZGVyLlNlcnZpY2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8sID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFNlcnZpY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIuU2VydmljZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTZXJ2aWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyLlNlcnZpY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdmlkZXIuU2VydmljZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm92aWRlci5TZXJ2aWNlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIuU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXNlcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZXMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uc3RydWN0b3JQYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdmlkZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXJFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUHVibGljS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJzZXJpYWxWZXJzaW9uVUlEIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcxODczOTI0NzExNTkxNTEwNzJMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2VjdXJlQ2xhc3NMb2FkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjdXJlQ2xhc3NMb2FkZXIiCisgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVDbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyZUNsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlQ2xhc3NMb2FkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlZmluZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlZmluZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkNvZGVTb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVybWlzc2lvbnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb25Db2xsZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2Rlc291cmNlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkNvZGVTb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VjdXJlUmFuZG9tIgorIGV4dGVuZHM9ImphdmEudXRpbC5SYW5kb20iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cmVSYW5kb20iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cmVSYW5kb20iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVkIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyZVJhbmRvbSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZVJhbmRvbVNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb21TcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVTZWVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1CeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1CeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtQml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlZWQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZWN1cmVSYW5kb21TcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjdXJlUmFuZG9tU3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlU2VlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1CeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZU5leHRCeXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTZXRTZWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVkIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VjdXJpdHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZFByb3ZpZGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobVByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZpY2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlcnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVycyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydFByb3ZpZGVyQXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQcm92aWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdG51bSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZWN1cml0eVBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyaXR5UGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyaXR5UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyaXR5UGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyaXR5UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpZ25hdHVyZSIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZVNwaSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2lnbmF0dXJlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5TaWduYXR1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5TaWduYXR1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlcnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0U2lnbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpdmF0ZUtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdFNpZ24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaXZhdGVLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRWZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0VmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1ldGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmFtZXRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ24iCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWduIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmF0dXJlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWduYXR1cmUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0lHTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkVSSUZZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaWduYXR1cmVTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2lnbmF0dXJlU3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXRTaWduIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcml2YXRlS2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0U2lnbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaXZhdGVLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXRWZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lU2V0UGFyYW1ldGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNpZ24iCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTaWduIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVZlcmlmeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnQnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVWZXJpZnkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWdCeXRlcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhcHBSYW5kb20iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2lnbmVkT2JqZWN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25lZE9iamVjdCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25lZE9iamVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ25pbmdLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmluZ0VuZ2luZSIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduYXR1cmUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyaWZpY2F0aW9uS2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyaWZpY2F0aW9uRW5naW5lIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpZ25lciIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25lciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25lciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25lciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjb3BlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFByaXZhdGVLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2V5UGFpciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpciIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlQYWlyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IktleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZXN0YW1wIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWVzdGFtcCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlRpbWVzdGFtcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVzdGFtcCIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ25lckNlcnRQYXRoIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduZXJDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVucmVzb2x2ZWRQZXJtaXNzaW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5yZXNvbHZlZFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlc29sdmVkUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpb25zIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVbnJlc29sdmVkQWN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5yZXNvbHZlZENlcnRzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5yZXNvbHZlZE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVucmVzb2x2ZWRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsaWVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5zZWN1cml0eS5hY2wiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkFjbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmFjbC5Pd25lciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZEVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuQWNsRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdE93bmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmFjbC5Ob3RPd25lckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1Blcm1pc3Npb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW5jaXBhbCIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuYWNsLlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cmllcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLnNlY3VyaXR5LmFjbC5BY2xFbnRyeSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcm1pc3Npb25zIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEuc2VjdXJpdHkuYWNsLlBlcm1pc3Npb24mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuQWNsRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdE93bmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmFjbC5Ob3RPd25lckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb3RPd25lckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuTm90T3duZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJBY2xFbnRyeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWRkUGVybWlzc2lvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1Blcm1pc3Npb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuYWNsLlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbmNpcGFsIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05lZ2F0aXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcm1pc3Npb25zIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEuc2VjdXJpdHkuYWNsLlBlcm1pc3Npb24mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUGVybWlzc2lvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZWdhdGl2ZVBlcm1pc3Npb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByaW5jaXBhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlciIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkFjbE5vdEZvdW5kRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2xOb3RGb3VuZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmFjbC5BY2xOb3RGb3VuZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iR3JvdXAiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhZGRNZW1iZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTWVtYmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW1iZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lbWJlcnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuUHJpbmNpcGFsJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU1lbWJlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlciIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikxhc3RPd25lckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGFzdE93bmVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuYWNsLkxhc3RPd25lckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb3RPd25lckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm90T3duZXJFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuTm90T3duZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik93bmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkT3duZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxlciIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im93bmVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm90T3duZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuYWNsLk5vdE93bmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZU93bmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvd25lciIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikxhc3RPd25lckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuTGFzdE93bmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb3RPd25lckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuTm90T3duZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPd25lciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3duZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5vdGhlciIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnNlY3VyaXR5LmNlcnQiCis+Cis8Y2xhc3MgbmFtZT0iQ1JMIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNSTCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXZva2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ1JMRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ1JMRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNSTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ1JMRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ1JMRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDUkxTZWxlY3RvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNybCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNSTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2VydFBhdGgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGgiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGluZ3MiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVJlcGxhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJPYmplY3RTdHJlYW1FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRQYXRoLkNlcnRQYXRoUmVwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoLkNlcnRQYXRoUmVwIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aC5DZXJ0UGF0aFJlcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlYWRSZXNvbHZlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iT2JqZWN0U3RyZWFtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLk9iamVjdFN0cmVhbUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0UGF0aEJ1aWxkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoQnVpbGRlciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVpbGRlclNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlclNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlclJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhCdWlsZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGhCdWlsZGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGhCdWlsZGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhCdWlsZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRQYXRoIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNlcnRQYXRoQnVpbGRlclNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aEJ1aWxkZXJTcGkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlclNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVCdWlsZCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhQYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0UGF0aEJ1aWxkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2VydFBhdGhQYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoVmFsaWRhdG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFZhbGlkYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkYXRvclNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yU3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydFBhdGgiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhQYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0UGF0aCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydFBhdGgiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNlcnRQYXRoVmFsaWRhdG9yUmVzdWx0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JTcGkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVZhbGlkYXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yUmVzdWx0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRQYXRoIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoUGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDZXJ0U2VsZWN0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNlcnRTdG9yZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFN0b3JlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdG9yZVNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDUkxzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DUkwmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMU2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydFN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlUGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0U3RvcmVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0U3RvcmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0U3RvcmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2VydFN0b3JlUGFyYW1ldGVycyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNlcnRTdG9yZVNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0U3RvcmVTcGkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENSTHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5jZXJ0LkNSTCZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0b3IiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydFN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFNlbGVjdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGUiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kZWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ1Byb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlUmVwbGFjZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik9iamVjdFN0cmVhbUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5PYmplY3RTdHJlYW1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGUuQ2VydGlmaWNhdGVSZXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGUuQ2VydGlmaWNhdGVSZXAiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlLkNlcnRpZmljYXRlUmVwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVhZFJlc29sdmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJPYmplY3RTdHJlYW1FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFeHBpcmVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUZhY3RvcnkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRGYWNTcGkiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUZhY3RvcnlTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVDUkwiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVDUkxzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DUkwmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUNlcnRQYXRoIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUNlcnRQYXRoIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRpZmljYXRlcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUNlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRQYXRoRW5jb2RpbmdzIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZUZhY3RvcnlTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVGYWN0b3J5U3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUZhY3RvcnlTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDUkwiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDUkxzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DUkwmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5TdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5TdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlQ2VydFBhdGgiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRpZmljYXRlcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZW5lcmF0ZUNlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENlcnRQYXRoRW5jb2RpbmdzIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbGxlY3Rpb25DZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmVQYXJhbWV0ZXJzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xsZWN0aW9uQ2VydFN0b3JlUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ29sbGVjdGlvbkNlcnRTdG9yZVBhcmFtZXRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xsZWN0aW9uQ2VydFN0b3JlUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ29sbGVjdGlvbkNlcnRTdG9yZVBhcmFtZXRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xsZWN0aW9uIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTERBUENlcnRTdG9yZVBhcmFtZXRlcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxEQVBDZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5MREFQQ2VydFN0b3JlUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTERBUENlcnRTdG9yZVBhcmFtZXRlcnMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkxEQVBDZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTERBUENlcnRTdG9yZVBhcmFtZXRlcnMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkxEQVBDZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZlck5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBLSVhCdWlsZGVyUGFyYW1ldGVycyIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LmNlcnQuUEtJWFBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQS0lYQnVpbGRlclBhcmFtZXRlcnMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlBLSVhCdWlsZGVyUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRydXN0QW5jaG9ycyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuVHJ1c3RBbmNob3ImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRDb25zdHJhaW50cyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQS0lYQnVpbGRlclBhcmFtZXRlcnMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlBLSVhCdWlsZGVyUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRDb25zdHJhaW50cyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1heFBhdGhMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4UGF0aExlbmd0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFBhdGhMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQS0lYQ2VydFBhdGhCdWlsZGVyUmVzdWx0IgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuY2VydC5QS0lYQ2VydFBhdGhWYWxpZGF0b3JSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBLSVhDZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlBLSVhDZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0UGF0aCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cnVzdEFuY2hvciIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlRydXN0QW5jaG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2xpY3lUcmVlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuUG9saWN5Tm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdFB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQS0lYQ2VydFBhdGhDaGVja2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUEtJWENlcnRQYXRoQ2hlY2tlciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuUEtJWENlcnRQYXRoQ2hlY2tlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bnJlc29sdmVkQ3JpdEV4dHMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcndhcmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRQYXRoVmFsaWRhdG9yRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGb3J3YXJkQ2hlY2tpbmdTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUEtJWENlcnRQYXRoVmFsaWRhdG9yUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFZhbGlkYXRvclJlc3VsdCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUEtJWENlcnRQYXRoVmFsaWRhdG9yUmVzdWx0IgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5QS0lYQ2VydFBhdGhWYWxpZGF0b3JSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cnVzdEFuY2hvciIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlRydXN0QW5jaG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2xpY3lUcmVlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuUG9saWN5Tm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdFB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9saWN5VHJlZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5Qb2xpY3lOb2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0tleSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHVibGljS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRydXN0QW5jaG9yIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LlRydXN0QW5jaG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBLSVhQYXJhbWV0ZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFBhcmFtZXRlcnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBLSVhQYXJhbWV0ZXJzIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5QS0lYUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRydXN0QW5jaG9ycyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuVHJ1c3RBbmNob3ImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBLSVhQYXJhbWV0ZXJzIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5QS0lYUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkQ2VydFBhdGhDaGVja2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlciIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlBLSVhDZXJ0UGF0aENoZWNrZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkQ2VydFN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcmUiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRQYXRoQ2hlY2tlcnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuUEtJWENlcnRQYXRoQ2hlY2tlciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydFN0b3JlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbml0aWFsUG9saWNpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvbGljeVF1YWxpZmllcnNSZWplY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnUHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldENlcnRDb25zdHJhaW50cyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U2VsZWN0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJ1c3RBbmNob3JzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuVHJ1c3RBbmNob3ImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQW55UG9saWN5SW5oaWJpdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0V4cGxpY2l0UG9saWN5UmVxdWlyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUG9saWN5TWFwcGluZ0luaGliaXRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXZvY2F0aW9uRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW55UG9saWN5SW5oaWJpdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW55UG9saWN5SW5oaWJpdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENlcnRQYXRoQ2hlY2tlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0UGF0aENoZWNrZXJzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuUEtJWENlcnRQYXRoQ2hlY2tlciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2VydFN0b3JlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRTdG9yZXMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2phdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeHBsaWNpdFBvbGljeVJlcXVpcmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwbGljaXRQb2xpY3lSZXF1aXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbml0aWFsUG9saWNpZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsUG9saWNpZXMiIHR5cGU9ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9saWN5TWFwcGluZ0luaGliaXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGljeU1hcHBpbmdJbmhpYml0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9saWN5UXVhbGlmaWVyc1JlamVjdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9saWN5UXVhbGlmaWVyc1JlamVjdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJldm9jYXRpb25FbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmV2b2NhdGlvbkVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2lnUHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWdQcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUYXJnZXRDZXJ0Q29uc3RyYWludHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRDZXJ0Q29uc3RyYWludHMiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHJ1c3RBbmNob3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJ1c3RBbmNob3JzIiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEuc2VjdXJpdHkuY2VydC5UcnVzdEFuY2hvciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUG9saWN5Tm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkcmVuIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuUG9saWN5Tm9kZSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXB0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4cGVjdGVkUG9saWNpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LlBvbGljeU5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb2xpY3lRdWFsaWZpZXJzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5jZXJ0LlBvbGljeVF1YWxpZmllckluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsaWRQb2xpY3kiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDcml0aWNhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUG9saWN5UXVhbGlmaWVySW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9saWN5UXVhbGlmaWVySW5mbyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuUG9saWN5UXVhbGlmaWVySW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kZWQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9saWN5UXVhbGlmaWVyIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9saWN5UXVhbGlmaWVySWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHJ1c3RBbmNob3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRydXN0QW5jaG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5UcnVzdEFuY2hvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRydXN0ZWRDZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lQ29uc3RyYWludHMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJ1c3RBbmNob3IiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlRydXN0QW5jaG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYVB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVDb25zdHJhaW50cyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcnVzdEFuY2hvciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuVHJ1c3RBbmNob3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYVByaW5jaXBhbCIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhUHVibGljS2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZUNvbnN0cmFpbnRzIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDQSIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q0FOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENBUHVibGljS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lQ29uc3RyYWludHMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcnVzdGVkQ2VydCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYNTA5Q1JMIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuY2VydC5DUkwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlFeHRlbnNpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilg1MDlDUkwiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDUkwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNzdWVyRE4iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3Vlclg1MDBQcmluY2lwYWwiCisgcmV0dXJuPSJqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXh0VXBkYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXZva2VkQ2VydGlmaWNhdGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNSTEVudHJ5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcmlhbE51bWJlciIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV2b2tlZENlcnRpZmljYXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDUkxFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV2b2tlZENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q1JMRW50cnkmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnQWxnTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWdBbGdPSUQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnQWxnUGFyYW1zIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnbmF0dXJlIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VEJTQ2VydExpc3QiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ1JMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRoaXNVcGRhdGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNSTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNSTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ1Byb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWDUwOUNSTEVudHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlFeHRlbnNpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilg1MDlDUkxFbnRyeSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNSTEVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlSXNzdWVyIgorIHJldHVybj0iamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV2b2NhdGlvbkRhdGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcmlhbE51bWJlciIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRXh0ZW5zaW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYNTA5Q1JMU2VsZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNSTFNlbGVjdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5Q1JMU2VsZWN0b3IiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDUkxTZWxlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRJc3N1ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZXIiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZElzc3Vlck5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc3NfbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSXNzdWVyTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc19uYW1lIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZUNoZWNraW5nIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlQW5kVGltZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3Vlck5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNzdWVycyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhDUkwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW5DUkwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNybCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNSTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDZXJ0aWZpY2F0ZUNoZWNraW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRlQW5kVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGVBbmRUaW1lIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJc3N1ZXJOYW1lcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXNzdWVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlcnMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhDUkxOdW1iZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhDUkwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1pbkNSTE51bWJlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbkNSTCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWDUwOUNlcnRTZWxlY3RvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFNlbGVjdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5Q2VydFNlbGVjdG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydFNlbGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFBhdGhUb05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFBhdGhUb05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3ViamVjdEFsdGVybmF0aXZlTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhvcml0eUtleUlkZW50aWZpZXIiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzaWNDb25zdHJhaW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGVWYWxpZCIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dGVuZGVkS2V5VXNhZ2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlciIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlckFzQnl0ZXMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlckFzU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlVc2FnZSIKKyByZXR1cm49ImJvb2xlYW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXRjaEFsbFN1YmplY3RBbHROYW1lcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZUNvbnN0cmFpbnRzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGhUb05hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLkxpc3QmbHQ7PyZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvbGljeSIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpdmF0ZUtleVZhbGlkIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VyaWFsTnVtYmVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdCIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLkxpc3QmbHQ7PyZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RBc0J5dGVzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJqZWN0QXNTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RLZXlJZGVudGlmaWVyIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RQdWJsaWNLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJqZWN0UHVibGljS2V5QWxnSUQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRob3JpdHlLZXlJZGVudGlmaWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5S2V5SWRlbnRpZmllciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJhc2ljQ29uc3RyYWludHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoTGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2VydGlmaWNhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDZXJ0aWZpY2F0ZVZhbGlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGVWYWxpZCIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXh0ZW5kZWRLZXlVc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVVzYWdlIiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJc3N1ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZXIiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzc3VlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3Vlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzc3VlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlckROIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleVVzYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5VXNhZ2UiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXRjaEFsbFN1YmplY3RBbHROYW1lcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdGNoQWxsTmFtZXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmFtZUNvbnN0cmFpbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aFRvTmFtZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lcyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLkxpc3QmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb2xpY3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2xpY2llcyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJpdmF0ZUtleVZhbGlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpdmF0ZUtleVZhbGlkIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXJpYWxOdW1iZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXJpYWxOdW1iZXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJqZWN0IiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdWJqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEROIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdWJqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEROIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3ViamVjdEtleUlkZW50aWZpZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJqZWN0S2V5SWRlbnRpZmllciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YmplY3RQdWJsaWNLZXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHVibGljS2V5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YmplY3RQdWJsaWNLZXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3ViamVjdFB1YmxpY0tleUFsZ0lEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYNTA5Q2VydGlmaWNhdGUiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5RXh0ZW5zaW9uIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5Q2VydGlmaWNhdGUiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVja1ZhbGlkaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrVmFsaWRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJhc2ljQ29uc3RyYWludHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlbmRlZEtleVVzYWdlIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJc3N1ZXJBbHRlcm5hdGl2ZU5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLkxpc3QmbHQ7PyZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNzdWVyRE4iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlclVuaXF1ZUlEIgorIHJldHVybj0iYm9vbGVhbltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNzdWVyWDUwMFByaW5jaXBhbCIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVVzYWdlIgorIHJldHVybj0iYm9vbGVhbltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Tm90QWZ0ZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vdEJlZm9yZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VyaWFsTnVtYmVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWdBbGdOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpZ0FsZ09JRCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWdBbGdQYXJhbXMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduYXR1cmUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RETiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdFVuaXF1ZUlEIgorIHJldHVybj0iYm9vbGVhbltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdFg1MDBQcmluY2lwYWwiCisgcmV0dXJuPSJqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUQlNDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ilg1MDlFeHRlbnNpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRDcml0aWNhbEV4dGVuc2lvbk9JRHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZW5zaW9uVmFsdWUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vbkNyaXRpY2FsRXh0ZW5zaW9uT0lEcyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNVbnN1cHBvcnRlZENyaXRpY2FsRXh0ZW5zaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEuc2VjdXJpdHkuaW50ZXJmYWNlcyIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iRFNBS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1zIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLkRTQVBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRFNBS2V5UGFpckdlbmVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLkRTQVBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnZW5QYXJhbXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRTQVBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFAiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRFNBUHJpdmF0ZUtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRFNBS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFgiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3Nzc2NDk3NDgyNTMzNzkwMjc5TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEU0FQdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLkRTQUtleSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFkiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM0NTI2MzMyNzc5MDIyMzMyTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFQ0tleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuc3BlYy5FQ1BhcmFtZXRlclNwZWMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkVDUHJpdmF0ZUtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRUNLZXkiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0UyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJzZXJpYWxWZXJzaW9uVUlEIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii03ODk2Mzk0OTU2OTI1NjA5MTg0TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFQ1B1YmxpY0tleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRUNLZXkiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRXIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLkVDUG9pbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMzMTQ5ODg2Mjk4Nzk2MzI4MjZMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJTQUtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE1vZHVsdXMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUlNBTXVsdGlQcmltZVByaXZhdGVDcnRLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLlJTQVByaXZhdGVLZXkiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRDcnRDb2VmZmljaWVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3RoZXJQcmltZUluZm8iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuUlNBT3RoZXJQcmltZUluZm9bXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lRXhwb25lbnRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZUV4cG9uZW50USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWVQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0V4cG9uZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjE4MDU4NTMzNTM0NjI4MDA4TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSU0FQcml2YXRlQ3J0S2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuaW50ZXJmYWNlcy5SU0FQcml2YXRlS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0Q3J0Q29lZmZpY2llbnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lRXhwb25lbnRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZUV4cG9uZW50USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWVQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0V4cG9uZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTU2ODIyMTQyNTM1Mjc3MDAzNjhMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJTQVByaXZhdGVLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuaW50ZXJmYWNlcy5SU0FLZXkiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlRXhwb25lbnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTg3MTQ0ODA0OTM2NTk1MDIyTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSU0FQdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLlJTQUtleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0V4cG9uZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTg3Mjc0MzQwOTYyNDExMDExOTRMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkFsZ29yaXRobVBhcmFtZXRlclNwZWMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRFNBUGFyYW1ldGVyU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRFNBUGFyYW1zIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEU0FQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5EU0FQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRTQVByaXZhdGVLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEU0FQcml2YXRlS2V5U3BlYyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRFNBUHJpdmF0ZUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFgiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEU0FQdWJsaWNLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEU0FQdWJsaWNLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5EU0FQdWJsaWNLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZyIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRHIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkVDRmllbGQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRUNGaWVsZEYybSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRUNGaWVsZEYybSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZEYybSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRUNGaWVsZEYybSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZEYybSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icnAiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFQ0ZpZWxkRjJtIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ0ZpZWxkRjJtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaWRUZXJtc09mUmVkdWN0aW9uUG9seW5vbWlhbCIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlZHVjdGlvblBvbHlub21pYWwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFQ0ZpZWxkRnAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDRmllbGQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVDRmllbGRGcCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZEZwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVDR2VuUGFyYW1ldGVyU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRUNHZW5QYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ0dlblBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRUNQYXJhbWV0ZXJTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFQ1BhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUGFyYW1ldGVyU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnZlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRWxsaXB0aWNDdXJ2ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VuZXJhdG9yIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQb2ludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2ZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29mYWN0b3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VydmUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuRWxsaXB0aWNDdXJ2ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZW5lcmF0b3IiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQb2ludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmRlciIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVDUG9pbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVDUG9pbnQiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUG9pbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZmZpbmVYIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZmaW5lWSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBZmZpbmVYIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWZmaW5lWSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUE9JTlRfSU5GSU5JVFkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUG9pbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVDUHJpdmF0ZUtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVDUHJpdmF0ZUtleVNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUHJpdmF0ZUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1zIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLkVDUGFyYW1ldGVyU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRUNQdWJsaWNLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFQ1B1YmxpY0tleVNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUHVibGljS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ1BvaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ1BhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbXMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQYXJhbWV0ZXJTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFciCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQb2ludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFbGxpcHRpY0N1cnZlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbGxpcHRpY0N1cnZlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FbGxpcHRpY0N1cnZlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ0ZpZWxkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlZWQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRWxsaXB0aWNDdXJ2ZSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRWxsaXB0aWNDdXJ2ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuc3BlYy5FQ0ZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlZWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW5jb2RlZEtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW5jb2RlZEtleVNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVuY29kZWRLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RlZEtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZEtleVNwZWNFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludmFsaWRQYXJhbWV0ZXJTcGVjRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRQYXJhbWV0ZXJTcGVjRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyU3BlY0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IktleVNwZWMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTUdGMVBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1HRjFQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5NR0YxUGFyYW1ldGVyU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1kTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERpZ2VzdEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJTSEExIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5NR0YxUGFyYW1ldGVyU3BlYyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSEEyNTYiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLk1HRjFQYXJhbWV0ZXJTcGVjIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIQTM4NCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuTUdGMVBhcmFtZXRlclNwZWMiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hBNTEyIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5NR0YxUGFyYW1ldGVyU3BlYyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUEtDUzhFbmNvZGVkS2V5U3BlYyIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LnNwZWMuRW5jb2RlZEtleVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQS0NTOEVuY29kZWRLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5QS0NTOEVuY29kZWRLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RlZEtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBTU1BhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBTU1BhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlBTU1BhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzYWx0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBTU1BhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlBTU1BhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1nZk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1nZlNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYWx0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYWlsZXJGaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGlnZXN0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNR0ZBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1HRlBhcmFtZXRlcnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTYWx0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRyYWlsZXJGaWVsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlBTU1BhcmFtZXRlclNwZWMiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJTQUtleUdlblBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJTQUtleUdlblBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlJTQUtleUdlblBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0V4cG9uZW50IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEtleXNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljRXhwb25lbnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkYwIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkY0IgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSU0FNdWx0aVByaW1lUHJpdmF0ZUNydEtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5zcGVjLlJTQVByaXZhdGVLZXlTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUlNBTXVsdGlQcmltZVByaXZhdGVDcnRLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FNdWx0aVByaW1lUHJpdmF0ZUNydEtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2R1bHVzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljRXhwb25lbnQiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcml2YXRlRXhwb25lbnQiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmltZVAiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmltZVEiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmltZUV4cG9uZW50UCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lRXhwb25lbnRRIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3J0Q29lZmZpY2llbnQiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlclByaW1lSW5mbyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlJTQU90aGVyUHJpbWVJbmZvW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDcnRDb2VmZmljaWVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE90aGVyUHJpbWVJbmZvIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLlJTQU90aGVyUHJpbWVJbmZvW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWVFeHBvbmVudFAiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZUV4cG9uZW50USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lUCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lUSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0V4cG9uZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUlNBT3RoZXJQcmltZUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJTQU90aGVyUHJpbWVJbmZvIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FPdGhlclByaW1lSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbWVFeHBvbmVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNydENvZWZmaWNpZW50IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENydENvZWZmaWNpZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBvbmVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJTQVByaXZhdGVDcnRLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FQcml2YXRlS2V5U3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJTQVByaXZhdGVDcnRLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FQcml2YXRlQ3J0S2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZHVsdXMiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNFeHBvbmVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaXZhdGVFeHBvbmVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lUCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lUSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lRXhwb25lbnRQIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbWVFeHBvbmVudFEiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcnRDb2VmZmljaWVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDcnRDb2VmZmljaWVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lRXhwb25lbnRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWVFeHBvbmVudFEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVAiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNFeHBvbmVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJTQVByaXZhdGVLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSU0FQcml2YXRlS2V5U3BlYyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuUlNBUHJpdmF0ZUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2R1bHVzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpdmF0ZUV4cG9uZW50IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vZHVsdXMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlRXhwb25lbnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSU0FQdWJsaWNLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSU0FQdWJsaWNLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FQdWJsaWNLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kdWx1cyIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0V4cG9uZW50IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vZHVsdXMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNFeHBvbmVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ilg1MDlFbmNvZGVkS2V5U3BlYyIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LnNwZWMuRW5jb2RlZEtleVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5RW5jb2RlZEtleVNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlg1MDlFbmNvZGVkS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kZWRLZXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEuc3FsIgorPgorPGludGVyZmFjZSBuYW1lPSJBcnJheSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZVR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZVR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXQiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzdWx0U2V0IgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXQiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXQiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJCYXRjaFVwZGF0ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXRjaFVwZGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNxbC5CYXRjaFVwZGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhdGNoVXBkYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc3FsLkJhdGNoVXBkYXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlQ291bnRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmF0Y2hVcGRhdGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zcWwuQmF0Y2hVcGRhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZUNvdW50cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhdGNoVXBkYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc3FsLkJhdGNoVXBkYXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJTUUxTdGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlQ291bnRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmF0Y2hVcGRhdGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zcWwuQmF0Y2hVcGRhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IlNRTFN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZW5kb3JDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZUNvdW50cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRVcGRhdGVDb3VudHMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEJpbmFyeVN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZXMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3NpdGlvbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5zcWwuQmxvYiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc2l0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCaW5hcnlTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ5dGVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCeXRlcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRydW5jYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2FsbGFibGVTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBcnJheSIKKyByZXR1cm49ImphdmEuc3FsLkFycmF5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5zcWwuQXJyYXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmlnRGVjaW1hbCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbG9iIgorIHJldHVybj0iamF2YS5zcWwuQ2xvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbG9iIgorIHJldHVybj0iamF2YS5zcWwuQ2xvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZSIKKyByZXR1cm49ImphdmEuc3FsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZSIKKyByZXR1cm49ImphdmEuc3FsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlZiIKKyByZXR1cm49ImphdmEuc3FsLlJlZiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWYiCisgcmV0dXJuPSJqYXZhLnNxbC5SZWYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lIgorIHJldHVybj0iamF2YS5zcWwuVGltZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lIgorIHJldHVybj0iamF2YS5zcWwuVGltZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZSIKKyByZXR1cm49ImphdmEuc3FsLlRpbWUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZSIKKyByZXR1cm49ImphdmEuc3FsLlRpbWUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcCIKKyByZXR1cm49ImphdmEuc3FsLlRpbWVzdGFtcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcCIKKyByZXR1cm49ImphdmEuc3FsLlRpbWVzdGFtcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVSTCIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkwiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFzY2lpU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVJbnB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJpZ0RlY2ltYWwiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCaW5hcnlTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQm9vbGVhbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQnl0ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJ5dGVzIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZGVyIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImphdmEuc3FsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImphdmEuc3FsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURvdWJsZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRmxvYXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVMb25nIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcWxUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlT2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0U3FsVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0U3FsVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaG9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU2hvcnQiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZSIgdHlwZT0iamF2YS5zcWwuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZSIgdHlwZT0iamF2YS5zcWwuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVUkwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVVSTCIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNsb2IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBc2NpaVN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc2l0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWFyY2hzdHIiIHR5cGU9ImphdmEuc3FsLkNsb2IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3NpdGlvbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VhcmNoc3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXNjaWlTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ1bmNhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXJXYXJuaW5ncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVN0YXRlbWVudCIKKyByZXR1cm49ImphdmEuc3FsLlN0YXRlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldENvbmN1cnJlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVN0YXRlbWVudCIKKyByZXR1cm49ImphdmEuc3FsLlN0YXRlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldENvbmN1cnJlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldEhvbGRhYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dG9Db21taXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhdGFsb2ciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvbGRhYmlsaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFEYXRhIgorIHJldHVybj0iamF2YS5zcWwuRGF0YWJhc2VNZXRhRGF0YSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2FjdGlvbklzb2xhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTWFwIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhcm5pbmdzIgorIHJldHVybj0iamF2YS5zcWwuU1FMV2FybmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZWFkT25seSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmF0aXZlU1FMIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVDYWxsIgorIHJldHVybj0iamF2YS5zcWwuQ2FsbGFibGVTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlQ2FsbCIKKyByZXR1cm49ImphdmEuc3FsLkNhbGxhYmxlU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0U2V0VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRDb25jdXJyZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlQ2FsbCIKKyByZXR1cm49ImphdmEuc3FsLkNhbGxhYmxlU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0U2V0VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRDb25jdXJyZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRIb2xkYWJpbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvR2VuZXJhdGVkS2V5cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlcGFyZVN0YXRlbWVudCIKKyByZXR1cm49ImphdmEuc3FsLlByZXBhcmVkU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0U2V0VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRDb25jdXJyZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldENvbmN1cnJlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldEhvbGRhYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVTdGF0ZW1lbnQiCisgcmV0dXJuPSJqYXZhLnNxbC5QcmVwYXJlZFN0YXRlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VTYXZlcG9pbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVwb2ludCIgdHlwZT0iamF2YS5zcWwuU2F2ZXBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb2xsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm9sbGJhY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVwb2ludCIgdHlwZT0iamF2YS5zcWwuU2F2ZXBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRvQ29tbWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvQ29tbWl0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDYXRhbG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb2xkYWJpbGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGFiaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVhZE9ubHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTYXZlcG9pbnQiCisgcmV0dXJuPSJqYXZhLnNxbC5TYXZlcG9pbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2F2ZXBvaW50IgorIHJldHVybj0iamF2YS5zcWwuU2F2ZXBvaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRyYW5zYWN0aW9uSXNvbGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUeXBlTWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0FDVElPTl9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0FDVElPTl9SRUFEX0NPTU1JVFRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNBQ1RJT05fUkVBRF9VTkNPTU1JVFRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNBQ1RJT05fUkVQRUFUQUJMRV9SRUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0FDVElPTl9TRVJJQUxJWkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRGF0YVRydW5jYXRpb24iCisgZXh0ZW5kcz0iamF2YS5zcWwuU1FMV2FybmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFUcnVuY2F0aW9uIgorIHR5cGU9ImphdmEuc3FsLkRhdGFUcnVuY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc2ZlclNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhbnNmZXJTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEYXRhYmFzZU1ldGFEYXRhIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWxsUHJvY2VkdXJlc0FyZUNhbGxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhbGxUYWJsZXNBcmVTZWxlY3RhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhRGVmaW5pdGlvbkNhdXNlc1RyYW5zYWN0aW9uQ29tbWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhRGVmaW5pdGlvbklnbm9yZWRJblRyYW5zYWN0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlc0FyZURldGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvZXNNYXhSb3dTaXplSW5jbHVkZUJsb2JzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGVOYW1lUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlTmFtZVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJlc3RSb3dJZGVudGlmaWVyIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjb3BlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bGxhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYXRhbG9nU2VwYXJhdG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYXRhbG9nVGVybSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2F0YWxvZ3MiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uUHJpdmlsZWdlcyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1ucyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLkNvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Jvc3NSZWZlcmVuY2UiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbWFyeUNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1hcnlTY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1hcnlUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yZWlnbkNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmVpZ25TY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmVpZ25UYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VNYWpvclZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VNaW5vclZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VQcm9kdWN0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VQcm9kdWN0VmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFRyYW5zYWN0aW9uSXNvbGF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyaXZlck1ham9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyaXZlck1pbm9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyaXZlck5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyaXZlclZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4cG9ydGVkS2V5cyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYU5hbWVDaGFyYWN0ZXJzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJZGVudGlmaWVyUXVvdGVTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEltcG9ydGVkS2V5cyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleEluZm8iCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0YWxvZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pcXVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHByb3hpbWF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SkRCQ01ham9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRKREJDTWlub3JWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEJpbmFyeUxpdGVyYWxMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Q2F0YWxvZ05hbWVMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Q2hhckxpdGVyYWxMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Q29sdW1uTmFtZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhDb2x1bW5zSW5Hcm91cEJ5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heENvbHVtbnNJbkluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heENvbHVtbnNJbk9yZGVyQnkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Q29sdW1uc0luU2VsZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heENvbHVtbnNJblRhYmxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heENvbm5lY3Rpb25zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEN1cnNvck5hbWVMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4SW5kZXhMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4UHJvY2VkdXJlTmFtZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhSb3dTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFNjaGVtYU5hbWVMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4U3RhdGVtZW50TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFN0YXRlbWVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4VGFibGVOYW1lTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFRhYmxlc0luU2VsZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFVzZXJOYW1lTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWVyaWNGdW5jdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1hcnlLZXlzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb2NlZHVyZUNvbHVtbnMiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0YWxvZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2VkdXJlTmFtZVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9jZWR1cmVUZXJtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9jZWR1cmVzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2NlZHVyZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXRIb2xkYWJpbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTUUxLZXl3b3JkcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U1FMU3RhdGVUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYVRlcm0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYXMiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VhcmNoU3RyaW5nRXNjYXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmdGdW5jdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cGVyVGFibGVzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlTmFtZVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cGVyVHlwZXMiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0YWxvZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1GdW5jdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYmxlUHJpdmlsZWdlcyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWJsZVR5cGVzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYmxlcyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lRGF0ZUZ1bmN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZUluZm8iCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VURUcyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlTmFtZVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJMIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbkNvbHVtbnMiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0YWxvZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0c0FyZURldGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2F0YWxvZ0F0U3RhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvY2F0b3JzVXBkYXRlQ29weSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibnVsbFBsdXNOb25OdWxsSXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJudWxsc0FyZVNvcnRlZEF0RW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJudWxsc0FyZVNvcnRlZEF0U3RhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im51bGxzQXJlU29ydGVkSGlnaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibnVsbHNBcmVTb3J0ZWRMb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im90aGVyc0RlbGV0ZXNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im90aGVyc0luc2VydHNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im90aGVyc1VwZGF0ZXNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im93bkRlbGV0ZXNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im93bkluc2VydHNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im93blVwZGF0ZXNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3Jlc0xvd2VyQ2FzZUlkZW50aWZpZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZXNMb3dlckNhc2VRdW90ZWRJZGVudGlmaWVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcmVzTWl4ZWRDYXNlSWRlbnRpZmllcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3Jlc01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZXNVcHBlckNhc2VJZGVudGlmaWVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcmVzVXBwZXJDYXNlUXVvdGVkSWRlbnRpZmllcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQU5TSTkyRW50cnlMZXZlbFNRTCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNBTlNJOTJGdWxsU1FMIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0FOU0k5MkludGVybWVkaWF0ZVNRTCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNBbHRlclRhYmxlV2l0aEFkZENvbHVtbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNBbHRlclRhYmxlV2l0aERyb3BDb2x1bW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQmF0Y2hVcGRhdGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0NhdGFsb2dzSW5EYXRhTWFuaXB1bGF0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0NhdGFsb2dzSW5JbmRleERlZmluaXRpb25zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0NhdGFsb2dzSW5Qcml2aWxlZ2VEZWZpbml0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNDYXRhbG9nc0luUHJvY2VkdXJlQ2FsbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQ2F0YWxvZ3NJblRhYmxlRGVmaW5pdGlvbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQ29sdW1uQWxpYXNpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQ29udmVydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNDb252ZXJ0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNDb3JlU1FMR3JhbW1hciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNDb3JyZWxhdGVkU3VicXVlcmllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNEYXRhRGVmaW5pdGlvbkFuZERhdGFNYW5pcHVsYXRpb25UcmFuc2FjdGlvbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzRGF0YU1hbmlwdWxhdGlvblRyYW5zYWN0aW9uc09ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzRGlmZmVyZW50VGFibGVDb3JyZWxhdGlvbk5hbWVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0V4cHJlc3Npb25zSW5PcmRlckJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0V4dGVuZGVkU1FMR3JhbW1hciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNGdWxsT3V0ZXJKb2lucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNHZXRHZW5lcmF0ZWRLZXlzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0dyb3VwQnkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzR3JvdXBCeUJleW9uZFNlbGVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNHcm91cEJ5VW5yZWxhdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0ludGVncml0eUVuaGFuY2VtZW50RmFjaWxpdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzTGlrZUVzY2FwZUNsYXVzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNMaW1pdGVkT3V0ZXJKb2lucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNaW5pbXVtU1FMR3JhbW1hciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNaXhlZENhc2VJZGVudGlmaWVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNaXhlZENhc2VRdW90ZWRJZGVudGlmaWVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNdWx0aXBsZU9wZW5SZXN1bHRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c011bHRpcGxlUmVzdWx0U2V0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNdWx0aXBsZVRyYW5zYWN0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNOYW1lZFBhcmFtZXRlcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzTm9uTnVsbGFibGVDb2x1bW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzQ29tbWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzUm9sbGJhY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NDb21taXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NSb2xsYmFjayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNPcmRlckJ5VW5yZWxhdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c091dGVySm9pbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzUG9zaXRpb25lZERlbGV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNQb3NpdGlvbmVkVXBkYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1Jlc3VsdFNldENvbmN1cnJlbmN5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmN1cnJlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzUmVzdWx0U2V0SG9sZGFiaWxpdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvbGRhYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzUmVzdWx0U2V0VHlwZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1NhdmVwb2ludHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU2NoZW1hc0luRGF0YU1hbmlwdWxhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNTY2hlbWFzSW5JbmRleERlZmluaXRpb25zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1NjaGVtYXNJblByaXZpbGVnZURlZmluaXRpb25zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1NjaGVtYXNJblByb2NlZHVyZUNhbGxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1NjaGVtYXNJblRhYmxlRGVmaW5pdGlvbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU2VsZWN0Rm9yVXBkYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1N0YXRlbWVudFBvb2xpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU3RvcmVkUHJvY2VkdXJlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNTdWJxdWVyaWVzSW5Db21wYXJpc29ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNTdWJxdWVyaWVzSW5FeGlzdHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU3VicXVlcmllc0luSW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1N1YnF1ZXJpZXNJblF1YW50aWZpZWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1RhYmxlQ29ycmVsYXRpb25OYW1lcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNUcmFuc2FjdGlvbklzb2xhdGlvbkxldmVsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1RyYW5zYWN0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNVbmlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNVbmlvbkFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlc0FyZURldGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZXNMb2NhbEZpbGVQZXJUYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlc0xvY2FsRmlsZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYXR0cmlidXRlTm9OdWxscyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdHRyaWJ1dGVOdWxsYWJsZSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdHRyaWJ1dGVOdWxsYWJsZVVua25vd24iCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmVzdFJvd05vdFBzZXVkbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmVzdFJvd1BzZXVkbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmVzdFJvd1Nlc3Npb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJlc3RSb3dUZW1wb3JhcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJlc3RSb3dUcmFuc2FjdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmVzdFJvd1Vua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbHVtbk5vTnVsbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbHVtbk51bGxhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2x1bW5OdWxsYWJsZVVua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGVkS2V5Q2FzY2FkZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0ZWRLZXlJbml0aWFsbHlEZWZlcnJlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0ZWRLZXlJbml0aWFsbHlJbW1lZGlhdGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGVkS2V5Tm9BY3Rpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGVkS2V5Tm90RGVmZXJyYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0ZWRLZXlSZXN0cmljdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0ZWRLZXlTZXREZWZhdWx0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbXBvcnRlZEtleVNldE51bGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZUNvbHVtbkluIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9jZWR1cmVDb2x1bW5Jbk91dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2VkdXJlQ29sdW1uT3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9jZWR1cmVDb2x1bW5SZXN1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZUNvbHVtblJldHVybiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2VkdXJlQ29sdW1uVW5rbm93biIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2VkdXJlTm9OdWxscyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2VkdXJlTm9SZXN1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZU51bGxhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9jZWR1cmVOdWxsYWJsZVVua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZVJlc3VsdFVua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZVJldHVybnNSZXN1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNxbFN0YXRlU1FMOTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNxbFN0YXRlWE9wZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhYmxlSW5kZXhDbHVzdGVyZWQiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFibGVJbmRleEhhc2hlZCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJsZUluZGV4T3RoZXIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFibGVJbmRleFN0YXRpc3RpYyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlTm9OdWxscyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idHlwZU51bGxhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlTnVsbGFibGVVbmtub3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlUHJlZEJhc2ljIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlUHJlZENoYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InR5cGVQcmVkTm9uZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idHlwZVNlYXJjaGFibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnNpb25Db2x1bW5Ob3RQc2V1ZG8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnNpb25Db2x1bW5Qc2V1ZG8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnNpb25Db2x1bW5Vbmtub3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRhdGUiCisgZXh0ZW5kcz0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlIgorIHR5cGU9ImphdmEuc3FsLkRhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGUiCisgdHlwZT0iamF2YS5zcWwuRGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEcml2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY2NlcHRzVVJMIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJqYXZhLnNxbC5Db25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ham9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbm9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5SW5mbyIKKyByZXR1cm49ImphdmEuc3FsLkRyaXZlclByb3BlcnR5SW5mb1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImpkYmNDb21wbGlhbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRyaXZlck1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkZXJlZ2lzdGVyRHJpdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcml2ZXIiIHR5cGU9ImphdmEuc3FsLkRyaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLkNvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25uZWN0aW9uIgorIHJldHVybj0iamF2YS5zcWwuQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0aWVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25uZWN0aW9uIgorIHJldHVybj0iamF2YS5zcWwuQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcml2ZXIiCisgcmV0dXJuPSJqYXZhLnNxbC5Ecml2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcml2ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEuc3FsLkRyaXZlciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dXcml0ZXIiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9naW5UaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRyaXZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJpdmVyIiB0eXBlPSJqYXZhLnNxbC5Ecml2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvZ1N0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9nV3JpdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9naW5UaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRHJpdmVyUHJvcGVydHlJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcml2ZXJQcm9wZXJ0eUluZm8iCisgdHlwZT0iamF2YS5zcWwuRHJpdmVyUHJvcGVydHlJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImNob2ljZXMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY3JpcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcXVpcmVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YWx1ZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQYXJhbWV0ZXJNZXRhRGF0YSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckNsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJNb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlclR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWNpc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOdWxsYWJsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2lnbmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0icGFyYW1ldGVyTW9kZUluIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXJhbWV0ZXJNb2RlSW5PdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhcmFtZXRlck1vZGVPdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhcmFtZXRlck1vZGVVbmtub3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXJhbWV0ZXJOb051bGxzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXJhbWV0ZXJOdWxsYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFyYW1ldGVyTnVsbGFibGVVbmtub3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQcmVwYXJlZFN0YXRlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNxbC5TdGF0ZW1lbnQiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhZGRCYXRjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYXJhbWV0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlUXVlcnkiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZVVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRhRGF0YSIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldE1ldGFEYXRhIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlck1ldGFEYXRhIgorIHJldHVybj0iamF2YS5zcWwuUGFyYW1ldGVyTWV0YURhdGEiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUFycmF5IiB0eXBlPSJqYXZhLnNxbC5BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXNjaWlTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmlnRGVjaW1hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQmlnRGVjaW1hbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJpbmFyeVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlSW5wdXRTdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCbG9iIiB0eXBlPSJqYXZhLnNxbC5CbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCb29sZWFuIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCeXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCeXRlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCeXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkZXIiIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xvYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQ2xvYiIgdHlwZT0iamF2YS5zcWwuQ2xvYiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF0ZSIgdHlwZT0iamF2YS5zcWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF0ZSIgdHlwZT0iamF2YS5zcWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvdWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRG91YmxlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVGbG9hdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlSW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUxvbmciIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TnVsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcWxUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVPYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldFNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVPYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldFNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWYiIHR5cGU9ImphdmEuc3FsLlJlZiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNob3J0IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWUiIHR5cGU9ImphdmEuc3FsLlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWUiIHR5cGU9ImphdmEuc3FsLlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWVzdGFtcCIgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWVzdGFtcCIgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJMIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVVUkwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VW5pY29kZVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVJbnB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUmVmIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZVR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWJzb2x1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZnRlckxhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZUZpcnN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxSb3dVcGRhdGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhcldhcm5pbmdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlUm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kQ29sdW1uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcnJheSIKKyByZXR1cm49ImphdmEuc3FsLkFycmF5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5zcWwuQXJyYXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNjaWlTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzY2lpU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCaWdEZWNpbWFsIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmlnRGVjaW1hbCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmlnRGVjaW1hbCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpbmFyeVN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmluYXJ5U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLlJlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLlJlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbG9iIgorIHJldHVybj0iamF2YS5zcWwuQ2xvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbG9iIgorIHJldHVybj0iamF2YS5zcWwuQ2xvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25jdXJyZW5jeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJzb3JOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZSIKKyByZXR1cm49ImphdmEuc3FsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZSIKKyByZXR1cm49ImphdmEuc3FsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmV0Y2hEaXJlY3Rpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmV0Y2hTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFEYXRhIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0TWV0YURhdGEiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlZiIKKyByZXR1cm49ImphdmEuc3FsLlJlZiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWYiCisgcmV0dXJuPSJqYXZhLnNxbC5SZWYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um93IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0ZW1lbnQiCisgcmV0dXJuPSJqYXZhLnNxbC5TdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lIgorIHJldHVybj0iamF2YS5zcWwuVGltZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lIgorIHJldHVybj0iamF2YS5zcWwuVGltZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXN0YW1wIgorIHJldHVybj0iamF2YS5zcWwuVGltZXN0YW1wIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcCIKKyByZXR1cm49ImphdmEuc3FsLlRpbWVzdGFtcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXN0YW1wIgorIHJldHVybj0iamF2YS5zcWwuVGltZXN0YW1wIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcCIKKyByZXR1cm49ImphdmEuc3FsLlRpbWVzdGFtcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkwiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJMIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVuaWNvZGVTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5pY29kZVN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYXJuaW5ncyIKKyByZXR1cm49ImphdmEuc3FsLlNRTFdhcm5pbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0Um93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FmdGVyTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCZWZvcmVGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9DdXJyZW50Um93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9JbnNlcnRSb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXZpb3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWZyZXNoUm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxhdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3dEZWxldGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3dJbnNlcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm93VXBkYXRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmV0Y2hEaXJlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZXRjaFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvd3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEuc3FsLkFycmF5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuQXJyYXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUFzY2lpU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQXNjaWlTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVCaWdEZWNpbWFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQmlnRGVjaW1hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJpbmFyeVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJpbmFyeVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJsb2IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEuc3FsLkJsb2IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJsb2IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEuc3FsLkJsb2IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJvb2xlYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJvb2xlYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUNoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRlciIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5DbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5DbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlSW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUxvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUxvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlT2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlUmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5SZWYiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVJlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuUmVmIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVSb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlU2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVTdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVN0cmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlVGltZXN0YW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNMT1NFX0NVUlNPUlNfQVRfQ09NTUlUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05DVVJfUkVBRF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05DVVJfVVBEQVRBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRVRDSF9GT1JXQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRVRDSF9SRVZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRVRDSF9VTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT0xEX0NVUlNPUlNfT1ZFUl9DT01NSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRk9SV0FSRF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1NDUk9MTF9JTlNFTlNJVElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TQ1JPTExfU0VOU0lUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSZXN1bHRTZXRNZXRhRGF0YSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENhdGFsb2dOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uQ2xhc3NOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uRGlzcGxheVNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbkxhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtblR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtblR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlY2lzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1hTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYmxlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXV0b0luY3JlbWVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2FzZVNlbnNpdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ3VycmVuY3kiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlZmluaXRlbHlXcml0YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTnVsbGFibGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlYXJjaGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NpZ25lZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV3JpdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNvbHVtbk5vTnVsbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbHVtbk51bGxhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2x1bW5OdWxsYWJsZVVua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNRTERhdGEiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRTUUxUeXBlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFNRTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLnNxbC5TUUxJbnB1dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU1FMIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuc3FsLlNRTE91dHB1dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNRTFN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlUmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTUUxTdGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRXJyb3JDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckNvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTUUxTdGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmV4dEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4IiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNRTElucHV0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icmVhZEFycmF5IgorIHJldHVybj0iamF2YS5zcWwuQXJyYXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEFzY2lpU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQmlnRGVjaW1hbCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCaW5hcnlTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEJ5dGUiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZENsb2IiCisgcmV0dXJuPSJqYXZhLnNxbC5DbG9iIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRSZWYiCisgcmV0dXJuPSJqYXZhLnNxbC5SZWYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFRpbWUiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRUaW1lc3RhbXAiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVSTCIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNRTE91dHB1dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9IndyaXRlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUFycmF5IiB0eXBlPSJqYXZhLnNxbC5BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVBc2NpaVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJpZ0RlY2ltYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJpZ0RlY2ltYWwiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJpbmFyeVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJsb2IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJsb2IiIHR5cGU9ImphdmEuc3FsLkJsb2IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCeXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCeXRlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCeXRlcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUNoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVDbG9iIiB0eXBlPSJqYXZhLnNxbC5DbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZURhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImphdmEuc3FsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVEb3VibGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRmxvYXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlSW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTG9uZyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU9iamVjdCIgdHlwZT0iamF2YS5zcWwuU1FMRGF0YSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVSZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVJlZiIgdHlwZT0iamF2YS5zcWwuUmVmIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTaG9ydCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU3RydWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTdHJ1Y3QiIHR5cGU9ImphdmEuc3FsLlN0cnVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUaW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lIiB0eXBlPSJqYXZhLnNxbC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVVJMIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVVUkwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNRTFBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5HdWFyZCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNxbC5TUUxQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNxbC5TUUxQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTFdhcm5pbmciCisgZXh0ZW5kcz0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMV2FybmluZyIKKyB0eXBlPSJqYXZhLnNxbC5TUUxXYXJuaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMV2FybmluZyIKKyB0eXBlPSJqYXZhLnNxbC5TUUxXYXJuaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlUmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxXYXJuaW5nIgorIHR5cGU9ImphdmEuc3FsLlNRTFdhcm5pbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNRTFN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxXYXJuaW5nIgorIHR5cGU9ImphdmEuc3FsLlNRTFdhcm5pbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNRTFN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVFcnJvckNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRXYXJuaW5nIgorIHJldHVybj0iamF2YS5zcWwuU1FMV2FybmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0V2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImphdmEuc3FsLlNRTFdhcm5pbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNhdmVwb2ludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFNhdmVwb2ludElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNhdmVwb2ludE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkQmF0Y2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckJhdGNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhcldhcm5pbmdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9HZW5lcmF0ZWRLZXlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXhlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZUJhdGNoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZVF1ZXJ5IgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZVVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGVVcGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvR2VuZXJhdGVkS2V5cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlVXBkYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXhlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGVVcGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25uZWN0aW9uIgorIHJldHVybj0iamF2YS5zcWwuQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZXRjaERpcmVjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZXRjaFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJhdGVkS2V5cyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhGaWVsZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Um93cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb3JlUmVzdWx0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9yZVJlc3VsdHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVlcnlUaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3VsdFNldCIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXRDb25jdXJyZW5jeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXRIb2xkYWJpbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVwZGF0ZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhcm5pbmdzIgorIHJldHVybj0iamF2YS5zcWwuU1FMV2FybmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJzb3JOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFc2NhcGVQcm9jZXNzaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZldGNoRGlyZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmV0Y2hTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3dzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1heEZpZWxkU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1heFJvd3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRRdWVyeVRpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDTE9TRV9BTExfUkVTVUxUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0xPU0VfQ1VSUkVOVF9SRVNVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYRUNVVEVfRkFJTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VFUF9DVVJSRU5UX1JFU1VMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fR0VORVJBVEVEX0tFWVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFVFVSTl9HRU5FUkFURURfS0VZUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VDQ0VTU19OT19JTkZPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU3RydWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVzIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTUUxUeXBlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRpbWUiCisgZXh0ZW5kcz0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lIgorIHR5cGU9ImphdmEuc3FsLlRpbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lIgorIHR5cGU9ImphdmEuc3FsLlRpbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEuc3FsLlRpbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaW1lc3RhbXAiCisgZXh0ZW5kcz0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lc3RhbXAiCisgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVZZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlSG91ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVNaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU5hbm8iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lc3RhbXAiCisgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFmdGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmVmb3JlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lc3RhbXAiIHR5cGU9ImphdmEuc3FsLlRpbWVzdGFtcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lc3RhbXAiIHR5cGU9ImphdmEuc3FsLlRpbWVzdGFtcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW5vcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW5vcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR5cGVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJBUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklHSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklOQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkxPQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMT0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFMSU5LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQ0lNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU1RJTkNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKQVZBX09CSkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9OR1ZBUkJJTkFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii00IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPTkdWQVJDSEFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNRVJJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU01BTExJTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUlVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVTVEFNUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTllJTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWQVJCSU5BUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWQVJDSEFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS50ZXh0IgorPgorPGNsYXNzIG5hbWU9IkFubm90YXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFubm90YXRpb24iCisgdHlwZT0iamF2YS50ZXh0LkFubm90YXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxBdHRyaWJ1dGVLZXlzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yLkF0dHJpYnV0ZSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUsIGphdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVuTGltaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5MaW1pdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1bkxpbWl0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZXMiIHR5cGU9ImphdmEudXRpbC5TZXQmbHQ7PyBleHRlbmRzIGphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5TdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1blN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVuU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiCisgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkUmVzb2x2ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRPYmplY3RFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSW52YWxpZE9iamVjdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IklOUFVUX01FVEhPRF9TRUdNRU5UIgorIHR5cGU9ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdVQUdFIgorIHR5cGU9ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURJTkciCisgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0dHJpYnV0ZWRTdHJpbmciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZWRTdHJpbmciCisgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRTdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVyYXRvciIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlZFN0cmluZyIKKyB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZFN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhdG9yIiB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlZFN0cmluZyIKKyB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZFN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhdG9yIiB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlZFN0cmluZyIKKyB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZFN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVkU3RyaW5nIgorIHR5cGU9ImphdmEudGV4dC5BdHRyaWJ1dGVkU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZXMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7PyBleHRlbmRzIGphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlLCA/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBdHRyaWJ1dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUsID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVyYXRvciIKKyByZXR1cm49ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGVzIiB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yLkF0dHJpYnV0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmlkaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWRpIgorIHR5cGU9ImphdmEudGV4dC5CaWRpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYWdyYXBoIiB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWRpIgorIHR5cGU9ImphdmEudGV4dC5CaWRpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0U3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW1iZWRkaW5ncyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbWJTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhZ3JhcGhMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlkaSIKKyB0eXBlPSJqYXZhLnRleHQuQmlkaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFncmFwaCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJhc2VJc0xlZnRUb1JpZ2h0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVMaW5lQmlkaSIKKyByZXR1cm49ImphdmEudGV4dC5CaWRpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lU3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZUxpbWl0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZUxldmVsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZXZlbEF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5MZXZlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVuTGltaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJ1biIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1blN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJydW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xlZnRUb1JpZ2h0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01peGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JpZ2h0VG9MZWZ0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW9yZGVyVmlzdWFsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVscyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbFN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0U3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1aXJlc0JpZGkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9ERUZBVUxUX0xFRlRfVE9fUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05fREVGQVVMVF9SSUdIVF9UT19MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OX0xFRlRfVE9fUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9SSUdIVF9UT19MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnJlYWtJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJyZWFrSXRlcmF0b3IiCisgdHlwZT0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnJlbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJzdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvbGxvd2luZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcmFjdGVySW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuQnJlYWtJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJhY3Rlckluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lSW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuQnJlYWtJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5CcmVha0l0ZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW50ZW5jZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW50ZW5jZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdvcmRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5CcmVha0l0ZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V29yZEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCb3VuZGFyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlY2VkaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmV2aW91cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdUZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1RleHQiIHR5cGU9ImphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNoYXJhY3Rlckl0ZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJyZW50IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcnN0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJlZ2luSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXZpb3VzIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV4IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRE9ORSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNob2ljZUZvcm1hdCIKKyBleHRlbmRzPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hvaWNlRm9ybWF0IgorIHR5cGU9ImphdmEudGV4dC5DaG9pY2VGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdHMiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXRzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNob2ljZUZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuQ2hvaWNlRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVtcGxhdGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseVBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9ybWF0cyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW1pdHMiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY3JlbWVudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5OdW1iZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZVBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXZpb3VzRG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaG9pY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXRzIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUGF0dGVybiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhFeHBhbnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJldmlvdXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbWFyeU9yZGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2Vjb25kYXJ5T3JkZXIiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVydGlhcnlPcmRlciIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik5VTExPUkRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xsYXRpb25LZXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudGV4dC5Db2xsYXRpb25LZXkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U291cmNlU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0J5dGVBcnJheSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xsYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkNvbXBhcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbGxhdG9yIgorIHR5cGU9ImphdmEudGV4dC5Db2xsYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0MSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0MiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZzEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZzIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nMSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nMiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sbGF0aW9uS2V5IgorIHJldHVybj0iamF2YS50ZXh0LkNvbGxhdGlvbktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjb21wb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5Db2xsYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkNvbGxhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlY29tcG9zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmVuZ3RoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMX0RFQ09NUE9TSVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklERU5USUNBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fREVDT01QT1NJVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJJTUFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVJUSUFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGVGb3JtYXQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkZvcm1hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FsZW5kYXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGVJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlSW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlVGltZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGVUaW1lSW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGVTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlVGltZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZVN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJGb3JtYXQiCisgcmV0dXJuPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lSW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVpvbmUiCisgcmV0dXJuPSJqYXZhLnV0aWwuVGltZVpvbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMZW5pZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZVBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhbGVuZGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGVuaWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bWJlckZvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lWm9uZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJqYXZhLnV0aWwuVGltZVpvbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTV9QTV9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBWV9PRl9XRUVLX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlfT0ZfV0VFS19JTl9NT05USF9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBWV9PRl9ZRUFSX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJBX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSMF9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVIxX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUl9PRl9EQVkwX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSX09GX0RBWTFfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElVTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlMTElTRUNPTkRfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTlVURV9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9OVEhfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ09ORF9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVaT05FX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VFS19PRl9NT05USF9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtfT0ZfWUVBUl9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllFQVJfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWJlckZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGVGb3JtYXQuRmllbGQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkZvcm1hdC5GaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdC5GaWVsZCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsZW5kYXJGaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FsZW5kYXJGaWVsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZkNhbGVuZGFyRmllbGQiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxlbmRhckZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTV9QTSIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlfT0ZfTU9OVEgiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFZX09GX1dFRUsiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFZX09GX1dFRUtfSU5fTU9OVEgiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFZX09GX1lFQVIiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJBIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVIwIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVIxIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVJfT0ZfREFZMCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSX09GX0RBWTEiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlMTElTRUNPTkQiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOVVRFIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ09ORCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSU1FX1pPTkUiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VFS19PRl9NT05USCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUVLX09GX1lFQVIiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUiIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0ZUZvcm1hdFN5bWJvbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdFN5bWJvbHMiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXRTeW1ib2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdFN5bWJvbHMiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXRTeW1ib2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFtUG1TdHJpbmdzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVyYXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQYXR0ZXJuQ2hhcnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vbnRocyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydE1vbnRocyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydFdlZWtkYXlzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdlZWtkYXlzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFpvbmVTdHJpbmdzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW1QbVN0cmluZ3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJhcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhbFBhdHRlcm5DaGFycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TW9udGhzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3J0TW9udGhzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3J0V2Vla2RheXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2Vla2RheXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Wm9uZVN0cmluZ3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW11bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWNpbWFsRm9ybWF0IgorIGV4dGVuZHM9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWNpbWFsRm9ybWF0IgorIHR5cGU9ImphdmEudGV4dC5EZWNpbWFsRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVjaW1hbEZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuRGVjaW1hbEZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlY2ltYWxGb3JtYXQiCisgdHlwZT0iamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS50ZXh0LkRlY2ltYWxGb3JtYXRTeW1ib2xzIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBseVBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im51bWJlciIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9BcHBlbmRUbyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNpbWFsRm9ybWF0U3ltYm9scyIKKyByZXR1cm49ImphdmEudGV4dC5EZWNpbWFsRm9ybWF0U3ltYm9scyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cGluZ1NpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TXVsdGlwbGllciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZWdhdGl2ZVByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmVnYXRpdmVTdWZmaXgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aXZlUHJlZml4IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGl2ZVN1ZmZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyc2VCaWdEZWNpbWFsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5OdW1iZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZVBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlY2ltYWxGb3JtYXRTeW1ib2xzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudGV4dC5EZWNpbWFsRm9ybWF0U3ltYm9scyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcm91cGluZ1NpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE11bHRpcGxpZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZ2F0aXZlUHJlZml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmVnYXRpdmVTdWZmaXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJzZUJpZ0RlY2ltYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb3NpdGl2ZVByZWZpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aXZlU3VmZml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9Mb2NhbGl6ZWRQYXR0ZXJuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1BhdHRlcm4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlY2ltYWxGb3JtYXRTeW1ib2xzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVjaW1hbEZvcm1hdFN5bWJvbHMiCisgdHlwZT0iamF2YS50ZXh0LkRlY2ltYWxGb3JtYXRTeW1ib2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVjaW1hbEZvcm1hdFN5bWJvbHMiCisgdHlwZT0iamF2YS50ZXh0LkRlY2ltYWxGb3JtYXRTeW1ib2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbmN5IgorIHJldHVybj0iamF2YS51dGlsLkN1cnJlbmN5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbmN5U3ltYm9sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNpbWFsU2VwYXJhdG9yIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaWdpdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXBpbmdTZXBhcmF0b3IiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZmluaXR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2wiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbnVzU2lnbiIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9uZXRhcnlEZWNpbWFsU2VwYXJhdG9yIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYU4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdHRlcm5TZXBhcmF0b3IiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlck1pbGwiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcmNlbnQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFplcm9EaWdpdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3VycmVuY3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJyZW5jeSIgdHlwZT0iamF2YS51dGlsLkN1cnJlbmN5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbmN5U3ltYm9sIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVjaW1hbFNlcGFyYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpZ2l0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3JvdXBpbmdTZXBhcmF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbmZpbml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1pbnVzU2lnbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1vbmV0YXJ5RGVjaW1hbFNlcGFyYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hTiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhdHRlcm5TZXBhcmF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQZXJNaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGVyY2VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFplcm9EaWdpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpZWxkUG9zaXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpZWxkUG9zaXRpb24iCisgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWVsZFBvc2l0aW9uIgorIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJqYXZhLnRleHQuRm9ybWF0LkZpZWxkIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWVsZFBvc2l0aW9uIgorIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJqYXZhLnRleHQuRm9ybWF0LkZpZWxkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QmVnaW5JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEudGV4dC5Gb3JtYXQuRmllbGQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmVnaW5JbmRleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5kSW5kZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZvcm1hdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0VG9DaGFyYWN0ZXJJdGVyYXRvciIKKyByZXR1cm49ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iamF2YS50ZXh0LlBhcnNlUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0LkZpZWxkIgorIGV4dGVuZHM9ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXQuRmllbGQiCisgdHlwZT0iamF2YS50ZXh0LkZvcm1hdC5GaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lc3NhZ2VGb3JtYXQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lc3NhZ2VGb3JtYXQiCisgdHlwZT0iamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZXNzYWdlRm9ybWF0IgorIHR5cGU9ImphdmEudGV4dC5NZXNzYWdlRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVtcGxhdGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseVBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVtcGxhdGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9ybWF0cyIKKyByZXR1cm49ImphdmEudGV4dC5Gb3JtYXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXRzQnlBcmd1bWVudEluZGV4IgorIHJldHVybj0iamF2YS50ZXh0LkZvcm1hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsZSIKKyByZXR1cm49ImphdmEudXRpbC5Mb2NhbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iamF2YS50ZXh0LlBhcnNlUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb3JtYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLnRleHQuRm9ybWF0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcm1hdEJ5QXJndW1lbnRJbmRleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ0luZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS50ZXh0LkZvcm1hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb3JtYXRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0cyIgdHlwZT0iamF2YS50ZXh0LkZvcm1hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcm1hdHNCeUFyZ3VtZW50SW5kZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXRzIiB0eXBlPSJqYXZhLnRleHQuRm9ybWF0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUGF0dGVybiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVzc2FnZUZvcm1hdC5GaWVsZCIKKyBleHRlbmRzPSJqYXZhLnRleHQuRm9ybWF0LkZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZXNzYWdlRm9ybWF0LkZpZWxkIgorIHR5cGU9ImphdmEudGV4dC5NZXNzYWdlRm9ybWF0LkZpZWxkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBUkdVTUVOVCIKKyB0eXBlPSJqYXZhLnRleHQuTWVzc2FnZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTnVtYmVyRm9ybWF0IgorIGV4dGVuZHM9ImphdmEudGV4dC5Gb3JtYXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik51bWJlckZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVuY3kiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ3VycmVuY3kiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVuY3lJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5OdW1iZXJGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbmN5SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5OdW1iZXJGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlckluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlckluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heGltdW1JbnRlZ2VyRGlnaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbmltdW1GcmFjdGlvbkRpZ2l0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5OdW1iZXJGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWJlckluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVyY2VudEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVyY2VudEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNHcm91cGluZ1VzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyc2VJbnRlZ2VyT25seSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZVBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlT2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJyZW5jeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbmN5IiB0eXBlPSJqYXZhLnV0aWwuQ3VycmVuY3kiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3JvdXBpbmdVc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluaW11bUZyYWN0aW9uRGlnaXRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5pbXVtSW50ZWdlckRpZ2l0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyc2VJbnRlZ2VyT25seSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRlJBQ1RJT05fRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVHRVJfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdW1iZXJGb3JtYXQuRmllbGQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkZvcm1hdC5GaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTnVtYmVyRm9ybWF0LkZpZWxkIgorIHR5cGU9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQuRmllbGQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkNVUlJFTkNZIgorIHR5cGU9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVDSU1BTF9TRVBBUkFUT1IiCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFBPTkVOVCIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYUE9ORU5UX1NJR04iCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFBPTkVOVF9TWU1CT0wiCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGUkFDVElPTiIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdST1VQSU5HX1NFUEFSQVRPUiIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVHRVIiCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJDRU5UIgorIHR5cGU9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEVSTUlMTEUiCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSUdOIgorIHR5cGU9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcnNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyc2VQb3NpdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyc2VQb3NpdGlvbiIKKyB0eXBlPSJqYXZhLnRleHQuUGFyc2VQb3NpdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9ySW5kZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSdWxlQmFzZWRDb2xsYXRvciIKKyBleHRlbmRzPSJqYXZhLnRleHQuQ29sbGF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSdWxlQmFzZWRDb2xsYXRvciIKKyB0eXBlPSJqYXZhLnRleHQuUnVsZUJhc2VkQ29sbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJydWxlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciIKKyByZXR1cm49ImphdmEudGV4dC5Db2xsYXRpb25FbGVtZW50SXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciIKKyByZXR1cm49ImphdmEudGV4dC5Db2xsYXRpb25FbGVtZW50SXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xsYXRpb25LZXkiCisgcmV0dXJuPSJqYXZhLnRleHQuQ29sbGF0aW9uS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVsZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpbXBsZURhdGVGb3JtYXQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaW1wbGVEYXRlRm9ybWF0IgorIHR5cGU9ImphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlRGF0ZUZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZURhdGVGb3JtYXQiCisgdHlwZT0iamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0U3ltYm9scyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlRGF0ZUZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlbXBsYXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseUxvY2FsaXplZFBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBseVBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZFBvcyIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0MkRpZ2l0WWVhclN0YXJ0IgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZUZvcm1hdFN5bWJvbHMiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdFN5bWJvbHMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iamF2YS50ZXh0LlBhcnNlUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0MkRpZ2l0WWVhclN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZUZvcm1hdFN5bWJvbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXRTeW1ib2xzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvTG9jYWxpemVkUGF0dGVybiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9QYXR0ZXJuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IiCisgdHlwZT0iamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIgorIHR5cGU9ImphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciIKKyB0eXBlPSJqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3VycmVudCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyc3QiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJlZ2luSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5kSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJldmlvdXMiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV4IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnV0aWwiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RDb2xsZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkNvbGxlY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0Q29sbGVjdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuQWJzdHJhY3RDb2xsZWN0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0YWluQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BcnJheSIKKyByZXR1cm49IlRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudHMiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdExpc3QiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0Q29sbGVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuTGlzdCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RMaXN0IgorIHR5cGU9ImphdmEudXRpbC5BYnN0cmFjdExpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0SXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdEl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUmFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3ViTGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Im1vZENvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9InRydWUiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0TWFwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLk1hcCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RNYXAiCisgdHlwZT0iamF2YS51dGlsLkFic3RyYWN0TWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0tleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7SyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7PyBleHRlbmRzIEssID8gZXh0ZW5kcyBWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFF1ZXVlIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdENvbGxlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLlF1ZXVlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFF1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5BYnN0cmFjdFF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RTZXF1ZW50aWFsTGlzdCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFNlcXVlbnRpYWxMaXN0IgorIHR5cGU9ImphdmEudXRpbC5BYnN0cmFjdFNlcXVlbnRpYWxMaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0U2V0IgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdENvbGxlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLlNldCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RTZXQiCisgdHlwZT0iamF2YS51dGlsLkFic3RyYWN0U2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFycmF5TGlzdCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5SYW5kb21BY2Nlc3MiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFycmF5TGlzdCIKKyB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlMaXN0IgorIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUxpc3QiCisgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnN1cmVDYXBhY2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbmltdW1DYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmltVG9TaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBcnJheXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhc0xpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iVC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5hcnlTZWFyY2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmFyeVNlYXJjaCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5hcnlTZWFyY2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmFyeVNlYXJjaCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5hcnlTZWFyY2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWVwRXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTEiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkyIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVlcEhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVlcFRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5MiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTIiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTEiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkyIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTEiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTIiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5MiIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTIiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTEiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTIiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5MiIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5MiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21wYXJhdG9yIiB0eXBlPSJqYXZhLnV0aWwuQ29tcGFyYXRvciZsdDs/IHN1cGVyIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJpdFNldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaXRTZXQiCisgdHlwZT0iamF2YS51dGlsLkJpdFNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdFNldCIKKyB0eXBlPSJqYXZhLnV0aWwuQml0U2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJpdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJzIiB0eXBlPSJqYXZhLnV0aWwuQml0U2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFuZE5vdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJzIiB0eXBlPSJqYXZhLnV0aWwuQml0U2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhcmRpbmFsaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsaXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGlwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS51dGlsLkJpdFNldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJzZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJzIiB0eXBlPSJqYXZhLnV0aWwuQml0U2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Q2xlYXJCaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTZXRCaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnMiIHR5cGU9ImphdmEudXRpbC5CaXRTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvczIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvczIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ieG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnMiIHR5cGU9ImphdmEudXRpbC5CaXRTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2FsZW5kYXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYWxlbmRhciIKKyB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYWxlbmRhciIKKyB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWZ0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxlbmRhciIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiZWZvcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxlbmRhciIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm90aGVyQ2FsZW5kYXIiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wbGV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZUZpZWxkcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0dWFsTWF4aW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3R1YWxNaW5pbXVtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF2YWlsYWJsZUxvY2FsZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpcnN0RGF5T2ZXZWVrIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyZWF0ZXN0TWluaW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS51dGlsLkNhbGVuZGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudXRpbC5DYWxlbmRhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudXRpbC5DYWxlbmRhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJqYXZhLnV0aWwuVGltZVpvbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVhc3RNYXhpbXVtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluaW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVJbk1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVpvbmUiCisgcmV0dXJuPSJqYXZhLnV0aWwuVGltZVpvbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJuYWxHZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xlbmllbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY3JlbWVudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJPZkRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJPZkRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rmlyc3REYXlPZldlZWsiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExlbmllbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lSW5NaWxsaXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZVpvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFNX1BNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUFJJTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVHVVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlfT0ZfTU9OVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBWV9PRl9XRUVLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlfT0ZfV0VFS19JTl9NT05USCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFZX09GX1lFQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQ0VNQkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFNUX09GRlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVCUlVBUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJRUxEX0NPVU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlJJREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUl9PRl9EQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKQU5VQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVUxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVJDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSUxMSVNFQ09ORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTlVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTkRBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9OVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PVkVNQkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT0NUT0JFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNBVFVSREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVBURU1CRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVTkRBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhVUlNEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRVRVNEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVDSU1CRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRURORVNEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtfT0ZfTU9OVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtfT0ZfWUVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWk9ORV9PRkZTRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcmVGaWVsZHNTZXQiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZpZWxkcyIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzU2V0IgorIHR5cGU9ImJvb2xlYW5bXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzVGltZVNldCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGltZSIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb2xsZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5JdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0YWluQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29sbGVjdGlvbnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9IlQuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuQ29tcGFyYWJsZSZsdDs/IHN1cGVyIFQmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmFyeVNlYXJjaCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja2VkQ29sbGVjdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7RSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tlZExpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrZWRNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7SywgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtLJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7ViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tlZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrZWRTb3J0ZWRNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtLJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7ViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tlZFNvcnRlZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS51dGlsLlNvcnRlZFNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IHN1cGVyIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNqb2ludCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYzEiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjMiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW1wdHlMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVtcHR5TWFwIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtLLCBWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW1wdHlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnVtZXJhdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IHN1cGVyIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlcXVlbmN5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2ZTdWJMaXN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdWJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZlN1Ykxpc3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1Ymxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudW1lcmF0aW9uIiB0eXBlPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF4IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF4IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWluIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWluIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibkNvcGllcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZUFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqMiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZlcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZlcnNlT3JkZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29tcGFyYXRvciZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldmVyc2VPcmRlciIKKyByZXR1cm49ImphdmEudXRpbC5Db21wYXJhdG9yJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibHN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodWZmbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodWZmbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEudXRpbC5SYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2luZ2xldG9uIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2luZ2xldG9uTGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaW5nbGV0b25NYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3dhcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4MSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleDIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeW5jaHJvbml6ZWRDb2xsZWN0aW9uIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3luY2hyb25pemVkTGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNocm9uaXplZE1hcCIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O0ssIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNocm9uaXplZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNocm9uaXplZFNvcnRlZE1hcCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O0ssIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNocm9uaXplZFNvcnRlZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJqYXZhLnV0aWwuU29ydGVkU2V0Jmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubW9kaWZpYWJsZUNvbGxlY3Rpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5tb2RpZmlhYmxlTGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bm1vZGlmaWFibGVNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubW9kaWZpYWJsZVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bm1vZGlmaWFibGVTb3J0ZWRNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtLLCA/IGV4dGVuZHMgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5tb2RpZmlhYmxlU29ydGVkU2V0IgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZFNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXQiIHR5cGU9ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFTVBUWV9MSVNUIgorIHR5cGU9ImphdmEudXRpbC5MaXN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZX01BUCIKKyB0eXBlPSJqYXZhLnV0aWwuTWFwIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZX1NFVCIKKyB0eXBlPSJqYXZhLnV0aWwuU2V0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29tcGFyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0MSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0MiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29uY3VycmVudE1vZGlmaWNhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLkNvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5Db25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkN1cnJlbmN5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW5jeUNvZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRGcmFjdGlvbkRpZ2l0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudXRpbC5DdXJyZW5jeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJyZW5jeUNvZGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ3VycmVuY3kiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5bWJvbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ltYm9sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZSIKKyB0eXBlPSJqYXZhLnV0aWwuRGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGUiCisgdHlwZT0iamF2YS51dGlsLkRhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGUiCisgdHlwZT0iamF2YS51dGlsLkRhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGUiCisgdHlwZT0iamF2YS51dGlsLkRhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlIgorIHR5cGU9ImphdmEudXRpbC5EYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlIgorIHR5cGU9ImphdmEudXRpbC5EYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJVVEMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG91ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWZ0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiZWZvcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG91cnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW51dGVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9udGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWNvbmRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXpvbmVPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZZWFyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvdXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3VyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWludXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TW9udGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Vjb25kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpc2Vjb25kcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRZZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9HTVRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9Mb2NhbGVTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGljdGlvbmFyeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWN0aW9uYXJ5IgorIHR5cGU9ImphdmEudXRpbC5EaWN0aW9uYXJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnRzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O0smZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEdXBsaWNhdGVGb3JtYXRGbGFnc0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkR1cGxpY2F0ZUZvcm1hdEZsYWdzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5EdXBsaWNhdGVGb3JtYXRGbGFnc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGbGFncyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW1wdHlTdGFja0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVtcHR5U3RhY2tFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLkVtcHR5U3RhY2tFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW51bU1hcCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RNYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLk1hcCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW51bU1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuRW51bU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtLJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW51bU1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuRW51bU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLkVudW1NYXAmbHQ7SywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbnVtTWFwIgorIHR5cGU9ImphdmEudXRpbC5FbnVtTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O0ssID8gZXh0ZW5kcyBWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS51dGlsLkVudW1NYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVudW1TZXQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxPZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsZW1lbnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7RSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wbGVtZW50T2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5T2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5T2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub25lT2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtZW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mIgorIHJldHVybj0iamF2YS51dGlsLkVudW1TZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZTMiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlMSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZTIiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUzIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlNCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZTMiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImU0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlNSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlcnMiIHR5cGU9IkUuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmFuZ2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJFbnVtZXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Imhhc01vcmVFbGVtZW50cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0RWxlbWVudCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkV2ZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRXZlbnRMaXN0ZW5lclByb3h5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkV2ZW50TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV2ZW50TGlzdGVuZXJQcm94eSIKKyB0eXBlPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lclByb3h5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEudXRpbC5FdmVudExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TGlzdGVuZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFdmVudE9iamVjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXZlbnRPYmplY3QiCisgdHlwZT0iamF2YS51dGlsLkV2ZW50T2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0U291cmNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNvdXJjZSIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0idHJ1ZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0RmxhZ3NDb252ZXJzaW9uTWlzbWF0Y2hFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS51dGlsLklsbGVnYWxGb3JtYXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXRGbGFnc0NvbnZlcnNpb25NaXNtYXRjaEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0RmxhZ3NDb252ZXJzaW9uTWlzbWF0Y2hFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udmVyc2lvbiIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJGb3JtYXR0YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0dGFibGVGbGFncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQUxURVJOQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRUZUX0pVU1RJRlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVQUEVSQ0FTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZvcm1hdHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRmx1c2hhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iamF2YS5sYW5nLkFwcGVuZGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJqYXZhLmxhbmcuQXBwZW5kYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjc24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcyIgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpb0V4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9jYWxlIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvdXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQXBwZW5kYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGb3JtYXR0ZXIuQmlnRGVjaW1hbExheW91dEZvcm0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRm9ybWF0dGVyLkJpZ0RlY2ltYWxMYXlvdXRGb3JtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YS51dGlsLkZvcm1hdHRlci5CaWdEZWNpbWFsTGF5b3V0Rm9ybVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGb3JtYXR0ZXJDbG9zZWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlckNsb3NlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyQ2xvc2VkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIGV4dGVuZHM9ImphdmEudXRpbC5DYWxlbmRhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHcmVnb3JpYW5DYWxlbmRhciIKKyB0eXBlPSJqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJqYXZhLnV0aWwuVGltZVpvbmUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJqYXZhLnV0aWwuVGltZVpvbmUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZUZpZWxkcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZVRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyZWF0ZXN0TWluaW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcmVnb3JpYW5DaGFuZ2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlYXN0TWF4aW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhpbXVtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbmltdW0iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMZWFwWWVhciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb2xsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jcmVtZW50IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyZWdvcmlhbkNoYW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSGFzaE1hcCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RNYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLkhhc2hNYXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNoTWFwIgorIHR5cGU9ImphdmEudXRpbC5IYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRGYWN0b3IiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNoTWFwIgorIHR5cGU9ImphdmEudXRpbC5IYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8gZXh0ZW5kcyBLLCA/IGV4dGVuZHMgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikhhc2hTZXQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0U2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5TZXQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikhhc2hTZXQiCisgdHlwZT0iamF2YS51dGlsLkhhc2hTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNoU2V0IgorIHR5cGU9ImphdmEudXRpbC5IYXNoU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGFzaFNldCIKKyB0eXBlPSJqYXZhLnV0aWwuSGFzaFNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRGYWN0b3IiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNoU2V0IgorIHR5cGU9ImphdmEudXRpbC5IYXNoU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSGFzaHRhYmxlIgorIGV4dGVuZHM9ImphdmEudXRpbC5EaWN0aW9uYXJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5NYXAiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikhhc2h0YWJsZSIKKyB0eXBlPSJqYXZhLnV0aWwuSGFzaHRhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGFzaHRhYmxlIgorIHR5cGU9ImphdmEudXRpbC5IYXNodGFibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNodGFibGUiCisgdHlwZT0iamF2YS51dGlsLkhhc2h0YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRGYWN0b3IiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNodGFibGUiCisgdHlwZT0iamF2YS51dGlsLkhhc2h0YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0tleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zVmFsdWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnRzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O0smZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2V5cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtLJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlaGFzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWRlbnRpdHlIYXNoTWFwIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdE1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuTWFwIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJZGVudGl0eUhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLklkZW50aXR5SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklkZW50aXR5SGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuSWRlbnRpdHlIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4U2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJZGVudGl0eUhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLklkZW50aXR5SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudHJ5U2V0IgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnV0aWwuTWFwLkVudHJ5Jmx0O0ssIFYmZ3Q7Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsRm9ybWF0Q29kZVBvaW50RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEZvcm1hdENvZGVQb2ludEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdENvZGVQb2ludEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvZGVQb2ludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsRm9ybWF0Q29udmVyc2lvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxGb3JtYXRDb252ZXJzaW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0Q29udmVyc2lvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXJndW1lbnRDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb252ZXJzaW9uIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWxsZWdhbEZvcm1hdEZsYWdzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEZvcm1hdEZsYWdzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0RmxhZ3NFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxGb3JtYXRQcmVjaXNpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS51dGlsLklsbGVnYWxGb3JtYXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsRm9ybWF0UHJlY2lzaW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0UHJlY2lzaW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlY2lzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxGb3JtYXRXaWR0aEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxGb3JtYXRXaWR0aEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdFdpZHRoRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5wdXRNaXNtYXRjaEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IklucHV0TWlzbWF0Y2hFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLklucHV0TWlzbWF0Y2hFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dE1pc21hdGNoRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbnB1dE1pc21hdGNoRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZFByb3BlcnRpZXNGb3JtYXRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRQcm9wZXJ0aWVzRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbnZhbGlkUHJvcGVydGllc0Zvcm1hdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRQcm9wZXJ0aWVzRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbnZhbGlkUHJvcGVydGllc0Zvcm1hdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSXRlcmF0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJMaW5rZWRIYXNoTWFwIgorIGV4dGVuZHM9ImphdmEudXRpbC5IYXNoTWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkSGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZEhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZEhhc2hNYXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkSGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkRmFjdG9yIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkSGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkRmFjdG9yIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjZXNzT3JkZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZEhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZEhhc2hNYXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7PyBleHRlbmRzIEssID8gZXh0ZW5kcyBWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUVsZGVzdEVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxkZXN0IiB0eXBlPSJqYXZhLnV0aWwuTWFwLkVudHJ5Jmx0O0ssIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxpbmtlZEhhc2hTZXQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkhhc2hTZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLlNldCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkSGFzaFNldCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkSGFzaFNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZEhhc2hTZXQiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZEhhc2hTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5rZWRIYXNoU2V0IgorIHR5cGU9ImphdmEudXRpbC5MaW5rZWRIYXNoU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZEZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZEhhc2hTZXQiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZEhhc2hTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5rZWRMaXN0IgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdFNlcXVlbnRpYWxMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5MaXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5RdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkTGlzdCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkTGlzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZExpc3QiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZExpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRGaXJzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaXJzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVlayIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVGaXJzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTGFzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3RJdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0SXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXRhaW5BbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikxpc3RJdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuSXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1ByZXZpb3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJldmlvdXMiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJldmlvdXNJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGlzdFJlc291cmNlQnVuZGxlIgorIGV4dGVuZHM9ImphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlzdFJlc291cmNlQnVuZGxlIgorIHR5cGU9ImphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0W11bXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlR2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYWxlIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYWxlIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnRyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYWxlIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnRyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFyaWFudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnRyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdCIKKyByZXR1cm49ImphdmEudXRpbC5Mb2NhbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5Q291bnRyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5Q291bnRyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TGFuZ3VhZ2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheUxhbmd1YWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlWYXJpYW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlWYXJpYW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElTTzNDb3VudHJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElTTzNMYW5ndWFnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJU09Db3VudHJpZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJU09MYW5ndWFnZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYW5ndWFnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFyaWFudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDQU5BREEiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQU5BREFfRlJFTkNIIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hJTkEiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSElORVNFIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5HTElTSCIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZSQU5DRSIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZSRU5DSCIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFUk1BTiIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFUk1BTlkiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJVEFMSUFOIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVRBTFkiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKQVBBTiIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkpBUEFORVNFIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS09SRUEiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLT1JFQU4iCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkMiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU1QTElGSUVEX0NISU5FU0UiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUlXQU4iCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFESVRJT05BTF9DSElORVNFIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUsiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVUyIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWFwIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnRyeVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS51dGlsLk1hcC5FbnRyeSZsdDtLLCBWJmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2V5U2V0IgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtLJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtWJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWFwLkVudHJ5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXkiCisgcmV0dXJuPSJLIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNaXNzaW5nRm9ybWF0QXJndW1lbnRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS51dGlsLklsbGVnYWxGb3JtYXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNaXNzaW5nRm9ybWF0QXJndW1lbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLk1pc3NpbmdGb3JtYXRBcmd1bWVudEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXRTcGVjaWZpZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1pc3NpbmdGb3JtYXRXaWR0aEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1pc3NpbmdGb3JtYXRXaWR0aEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuTWlzc2luZ0Zvcm1hdFdpZHRoRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdFNwZWNpZmllciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vU3VjaEVsZW1lbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT2JzZXJ2YWJsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT2JzZXJ2YWJsZSIKKyB0eXBlPSJqYXZhLnV0aWwuT2JzZXJ2YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJqYXZhLnV0aWwuT2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudE9ic2VydmVycyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImphdmEudXRpbC5PYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVPYnNlcnZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ2hhbmdlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm90aWZ5T2JzZXJ2ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlPYnNlcnZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJPYnNlcnZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2YWJsZSIgdHlwZT0iamF2YS51dGlsLk9ic2VydmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlByaW9yaXR5UXVldWUiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0UXVldWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmlvcml0eVF1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5Qcmlvcml0eVF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpb3JpdHlRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmlvcml0eVF1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5Qcmlvcml0eVF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW9yaXR5UXVldWUiCisgdHlwZT0iamF2YS51dGlsLlByaW9yaXR5UXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW9yaXR5UXVldWUiCisgdHlwZT0iamF2YS51dGlsLlByaW9yaXR5UXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZSZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW9yaXR5UXVldWUiCisgdHlwZT0iamF2YS51dGlsLlByaW9yaXR5UXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuU29ydGVkU2V0Jmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29tcGFyYXRvciZsdDs/IHN1cGVyIEUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3BlcnRpZXMiCisgZXh0ZW5kcz0iamF2YS51dGlsLkhhc2h0YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3BlcnRpZXMiCisgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9wZXJ0aWVzIgorIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0aWVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcGVydGllcyIgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVyIiB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkRnJvbVhNTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkUHJvcGVydGllc0Zvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLkludmFsaWRQcm9wZXJ0aWVzRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3BlcnR5TmFtZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZVRvWE1MIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZVRvWE1MIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRzIgorIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0aWVzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3BlcnR5UGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvcGVydHlQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0eVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvcGVydHlSZXNvdXJjZUJ1bmRsZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9wZXJ0eVJlc291cmNlQnVuZGxlIgorIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0eVJlc291cmNlQnVuZGxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlR2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJRdWV1ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVlayIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmFuZG9tIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYW5kb20iCisgdHlwZT0iamF2YS51dGlsLlJhbmRvbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhbmRvbSIKKyB0eXBlPSJqYXZhLnV0aWwuUmFuZG9tIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Qnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRHYXVzc2lhbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJSYW5kb21BY2Nlc3MiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VCdW5kbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzb3VyY2VCdW5kbGUiCisgdHlwZT0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJ1bmRsZSIKKyByZXR1cm49ImphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCdW5kbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnVuZGxlIgorIHJldHVybj0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxlIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmdBcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlR2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVuZGxlIiB0eXBlPSJqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJwYXJlbnQiCisgdHlwZT0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNjYW5uZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuSXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYW5uZXIiCisgdHlwZT0iamF2YS51dGlsLlNjYW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYW5uZXIiCisgdHlwZT0iamF2YS51dGlsLlNjYW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubGFuZy5SZWFkYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuUmVhZGFibGVCeXRlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuUmVhZGFibGVCeXRlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsaW1pdGVyIgorIHJldHVybj0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZEluTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRJbkxpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRXaXRoaW5Ib3Jpem9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kV2l0aGluSG9yaXpvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc05leHRCaWdJbnRlZ2VyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0QmlnSW50ZWdlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc05leHRCeXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0Qnl0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dERvdWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dEZsb2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0SW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0SW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0TGluZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dExvbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc05leHRMb25nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0U2hvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc05leHRTaG9ydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW9FeGNlcHRpb24iCisgcmV0dXJuPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvY2FsZSIKKyByZXR1cm49ImphdmEudXRpbC5Mb2NhbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRCaWdEZWNpbWFsIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEJpZ0ludGVnZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0QmlnSW50ZWdlciIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Qnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEJ5dGUiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRMaW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJhZGl4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcCIKKyByZXR1cm49ImphdmEudXRpbC5TY2FubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVybiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwIgorIHJldHVybj0iamF2YS51dGlsLlNjYW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlRGVsaW1pdGVyIgorIHJldHVybj0iamF2YS51dGlsLlNjYW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZURlbGltaXRlciIKKyByZXR1cm49ImphdmEudXRpbC5TY2FubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZUxvY2FsZSIKKyByZXR1cm49ImphdmEudXRpbC5TY2FubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZVJhZGl4IgorIHJldHVybj0iamF2YS51dGlsLlNjYW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0YWluQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2ltcGxlVGltZVpvbmUiCisgZXh0ZW5kcz0iamF2YS51dGlsLlRpbWVab25lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlVGltZVpvbmUiCisgdHlwZT0iamF2YS51dGlsLlNpbXBsZVRpbWVab25lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZVRpbWVab25lIgorIHR5cGU9ImphdmEudXRpbC5TaW1wbGVUaW1lWm9uZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydE1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0RGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0RGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0VGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRNb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmREYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kRGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZFRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlVGltZVpvbmUiCisgdHlwZT0iamF2YS51dGlsLlNpbXBsZVRpbWVab25lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0TW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRUaW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZE1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZERheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmREYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kVGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlsaWdodFNhdmluZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlVGltZVpvbmUiCisgdHlwZT0iamF2YS51dGlsLlNpbXBsZVRpbWVab25lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0TW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRUaW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0VGltZU1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kRGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZERheU9mV2VlayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRUaW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZFRpbWVNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheWxpZ2h0U2F2aW5ncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcmEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5EYXlsaWdodFRpbWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREU1RTYXZpbmdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5kUnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuZFJ1bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmRSdWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mV2VlayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFmdGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJhd09mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXJ0UnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXJ0UnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXJ0UnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZnRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFydFllYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlRGF5bGlnaHRUaW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNUQU5EQVJEX1RJTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVUQ19USU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXQUxMX1RJTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU29ydGVkTWFwIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5NYXAiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjb21wYXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBLJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcnN0S2V5IgorIHJldHVybj0iSyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhlYWRNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZEtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0S2V5IgorIHJldHVybj0iSyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Yk1hcCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRLZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZEtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWlsTWFwIgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtLLCBWJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydEtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNvcnRlZFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuU2V0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY29tcGFyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgRSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkU2V0IgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZFNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFpbFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlN0YWNrIgorIGV4dGVuZHM9ImphdmEudXRpbC5WZWN0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGFjayIKKyB0eXBlPSJqYXZhLnV0aWwuU3RhY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWsiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9wIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1c2giCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nVG9rZW5pemVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5FbnVtZXJhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nVG9rZW5pemVyIgorIHR5cGU9ImphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ1Rva2VuaXplciIKKyB0eXBlPSJqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxpbWl0ZXJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdUb2tlbml6ZXIiCisgdHlwZT0iamF2YS51dGlsLlN0cmluZ1Rva2VuaXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaW1pdGVycyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmV0dXJuRGVsaW1pdGVycyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvdW50VG9rZW5zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc01vcmVFbGVtZW50cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTW9yZVRva2VucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEVsZW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dFRva2VuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaW1zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRpbWVab25lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZVpvbmUiCisgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVJRHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF2YWlsYWJsZUlEcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERTVFNhdmluZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdCIKKyByZXR1cm49ImphdmEudXRpbC5UaW1lWm9uZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5bGlnaHRUaW1lIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5bGlnaHRUaW1lIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SUQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mV2VlayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmF3T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVpvbmUiCisgcmV0dXJuPSJqYXZhLnV0aWwuVGltZVpvbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1NhbWVSdWxlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InpvbmUiIHR5cGU9ImphdmEudXRpbC5UaW1lWm9uZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbkRheWxpZ2h0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSYXdPZmZzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZURheWxpZ2h0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkxPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWVyIgorIHR5cGU9ImphdmEudXRpbC5UaW1lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRGFlbW9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lciIKKyB0eXBlPSJqYXZhLnV0aWwuVGltZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lciIKKyB0eXBlPSJqYXZhLnV0aWwuVGltZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc0RhZW1vbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZXIiCisgdHlwZT0iamF2YS51dGlsLlRpbWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHVyZ2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrIiB0eXBlPSJqYXZhLnV0aWwuVGltZXJUYXNrIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5UaW1lclRhc2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS51dGlsLlRpbWVyVGFzayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXkiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcmlvZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5UaW1lclRhc2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVBdEZpeGVkUmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5UaW1lclRhc2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVBdEZpeGVkUmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5UaW1lclRhc2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZXJUYXNrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lclRhc2siCisgdHlwZT0iamF2YS51dGlsLlRpbWVyVGFzayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZWRFeGVjdXRpb25UaW1lIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUb29NYW55TGlzdGVuZXJzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb29NYW55TGlzdGVuZXJzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5Ub29NYW55TGlzdGVuZXJzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVG9vTWFueUxpc3RlbmVyc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuVG9vTWFueUxpc3RlbmVyc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUcmVlTWFwIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdE1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuU29ydGVkTWFwIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmVlTWFwIgorIHR5cGU9ImphdmEudXRpbC5UcmVlTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJlZU1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuVHJlZU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgSyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyZWVNYXAiCisgdHlwZT0iamF2YS51dGlsLlRyZWVNYXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7PyBleHRlbmRzIEssID8gZXh0ZW5kcyBWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJlZU1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuVHJlZU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtLLCA/IGV4dGVuZHMgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgSyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcnN0S2V5IgorIHJldHVybj0iSyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkTWFwIgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtLLCBWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kS2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RLZXkiCisgcmV0dXJuPSJLIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Yk1hcCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0S2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRLZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFpbE1hcCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0S2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyZWVTZXQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0U2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5Tb3J0ZWRTZXQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyZWVTZXQiCisgdHlwZT0iamF2YS51dGlsLlRyZWVTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmVlU2V0IgorIHR5cGU9ImphdmEudXRpbC5UcmVlU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmVlU2V0IgorIHR5cGU9ImphdmEudXRpbC5UcmVlU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJlZVNldCIKKyB0eXBlPSJqYXZhLnV0aWwuVHJlZVNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNldCIgdHlwZT0iamF2YS51dGlsLlNvcnRlZFNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGVhZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YlNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFpbFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVVSUQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVVJRCIKKyB0eXBlPSJqYXZhLnV0aWwuVVVJRCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vc3RTaWdCaXRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWFzdFNpZ0JpdHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9ja1NlcXVlbmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXVpZCIgdHlwZT0iamF2YS51dGlsLlVVSUQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVN0cmluZyIKKyByZXR1cm49ImphdmEudXRpbC5VVUlEIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InV1aWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVhc3RTaWduaWZpY2FudEJpdHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vc3RTaWduaWZpY2FudEJpdHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hbWVVVUlERnJvbUJ5dGVzIgorIHJldHVybj0iamF2YS51dGlsLlVVSUQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vZGUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJhbmRvbVVVSUQiCisgcmV0dXJuPSJqYXZhLnV0aWwuVVVJRCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRpbWVzdGFtcCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFyaWFudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVua25vd25Gb3JtYXRDb252ZXJzaW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5rbm93bkZvcm1hdENvbnZlcnNpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLlVua25vd25Gb3JtYXRDb252ZXJzaW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvbnZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVua25vd25Gb3JtYXRGbGFnc0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVua25vd25Gb3JtYXRGbGFnc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuVW5rbm93bkZvcm1hdEZsYWdzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZsYWdzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWZWN0b3IiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0TGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuTGlzdCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuUmFuZG9tQWNjZXNzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWZWN0b3IiCisgdHlwZT0iamF2YS51dGlsLlZlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZlY3RvciIKKyB0eXBlPSJqYXZhLnV0aWwuVmVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmVjdG9yIgorIHR5cGU9ImphdmEudXRpbC5WZWN0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eUluY3JlbWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWZWN0b3IiCisgdHlwZT0iamF2YS51dGlsLlZlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHlJbnRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtZW50cyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnRBdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnN1cmVDYXBhY2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluaW11bUNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyc3RFbGVtZW50IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0RWxlbWVudEF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEVsZW1lbnQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbEVsZW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUVsZW1lbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVFbGVtZW50QXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RWxlbWVudEF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyaW1Ub1NpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJjYXBhY2l0eUluY3JlbWVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlbGVtZW50Q291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZWxlbWVudERhdGEiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYWtIYXNoTWFwIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdE1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLk1hcCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2Vha0hhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLldlYWtIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2Vha0hhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLldlYWtIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2Vha0hhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLldlYWtIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZEZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYWtIYXNoTWFwIgorIHR5cGU9ImphdmEudXRpbC5XZWFrSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RFeGVjdXRvclNlcnZpY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvclNlcnZpY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0RXhlY3V0b3JTZXJ2aWNlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkFic3RyYWN0RXhlY3V0b3JTZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imludm9rZUFsbCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtUJmd0OyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2tzIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlQWxsIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1QmZ3Q7Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlQW55IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlQW55IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZWN1dGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJUaW1lb3V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Ym1pdCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Ym1pdCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VibWl0IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBcnJheUJsb2NraW5nUXVldWUiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0UXVldWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFycmF5QmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5BcnJheUJsb2NraW5nUXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUJsb2NraW5nUXVldWUiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQXJyYXlCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlCbG9ja2luZ1F1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkFycmF5QmxvY2tpbmdRdWV1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhaXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYWluVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4RWxlbWVudHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1haW5pbmdDYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2UiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJCbG9ja2luZ1F1ZXVlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5RdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWlucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFpblRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IHN1cGVyIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhFbGVtZW50cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtYWluaW5nQ2FwYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQnJva2VuQmFycmllckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnJva2VuQmFycmllckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Ccm9rZW5CYXJyaWVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnJva2VuQmFycmllckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Ccm9rZW5CYXJyaWVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDYWxsYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbGwiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYW5jZWxsYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNhbmNlbGxhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29tcGxldGlvblNlcnZpY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtWJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJtaXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUmbHQ7ViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VibWl0IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29uY3VycmVudEhhc2hNYXAiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0TWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50TWFwIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50SGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkRmFjdG9yIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uY3VycmVuY3lMZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50SGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50SGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmN1cnJlbnRIYXNoTWFwIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNvbmN1cnJlbnRIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnRyeVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS51dGlsLk1hcC5FbnRyeSZsdDtLLCBWJmd0OyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2V5cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtLJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJZkFic2VudCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGRWYWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29uY3VycmVudExpbmtlZFF1ZXVlIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdFF1ZXVlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuUXVldWUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmN1cnJlbnRMaW5rZWRRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50TGlua2VkUXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50TGlua2VkUXVldWUiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29uY3VycmVudExpbmtlZFF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWsiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbmN1cnJlbnRNYXAiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLk1hcCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9InB1dElmQWJzZW50IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb3B5T25Xcml0ZUFycmF5TGlzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5MaXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5SYW5kb21BY2Nlc3MiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvcHlPbldyaXRlQXJyYXlMaXN0IgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNvcHlPbldyaXRlQXJyYXlMaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29weU9uV3JpdGVBcnJheUxpc3QiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29weU9uV3JpdGVBcnJheUxpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvcHlPbldyaXRlQXJyYXlMaXN0IgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNvcHlPbldyaXRlQXJyYXlMaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9Db3B5SW4iIHR5cGU9IkVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbEFic2VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZElmQWJzZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0FsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3RJdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0SXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0YWluQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Ykxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0FycmF5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb3B5T25Xcml0ZUFycmF5U2V0IgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdFNldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvcHlPbldyaXRlQXJyYXlTZXQiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29weU9uV3JpdGVBcnJheVNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvcHlPbldyaXRlQXJyYXlTZXQiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29weU9uV3JpdGVBcnJheVNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ291bnREb3duTGF0Y2giCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvdW50RG93bkxhdGNoIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvdW50RG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkN5Y2xpY0JhcnJpZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkN5Y2xpY0JhcnJpZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ3ljbGljQmFycmllciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnRpZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFycmllckFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDeWNsaWNCYXJyaWVyIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkN5Y2xpY0JhcnJpZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0aWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhd2FpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQnJva2VuQmFycmllckV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQnJva2VuQmFycmllckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJyb2tlbkJhcnJpZXJFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkJyb2tlbkJhcnJpZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlRpbWVvdXRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtYmVyV2FpdGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJ0aWVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQnJva2VuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVsYXlRdWV1ZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RRdWV1ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVsYXlRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5EZWxheVF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVsYXlRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5EZWxheVF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFpblRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IHN1cGVyIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhFbGVtZW50cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWsiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbWFpbmluZ0NhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkRlbGF5ZWQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREZWxheSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkV4Y2hhbmdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhjaGFuZ2VyIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkV4Y2hhbmdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJleGNoYW5nZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhjaGFuZ2UiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZW91dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGVjdXRpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGVjdXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGVjdXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRXhlY3V0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tYW5kIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkV4ZWN1dG9yQ29tcGxldGlvblNlcnZpY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGlvblNlcnZpY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4ZWN1dG9yQ29tcGxldGlvblNlcnZpY2UiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JDb21wbGV0aW9uU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4ZWN1dG9yIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhlY3V0b3JDb21wbGV0aW9uU2VydmljZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvckNvbXBsZXRpb25TZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhlY3V0b3IiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21wbGV0aW9uUXVldWUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWUmbHQ7amF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1YmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VibWl0IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJtaXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImF3YWl0VGVybWluYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imludm9rZUFsbCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtUJmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZva2VBbGwiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7VCZndDsmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2tzIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imludm9rZUFueSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlQW55IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrcyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUmbHQ7VCZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlRpbWVvdXRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaHV0ZG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Rlcm1pbmF0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd25Ob3ciCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuUnVubmFibGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VibWl0IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Ym1pdCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtUJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJtaXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7PyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJFeGVjdXRvcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYWxsYWJsZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbGxhYmxlIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUmbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbGxhYmxlIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUmbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbGFibGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtqYXZhLmxhbmcuT2JqZWN0Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEV4Y2VwdGlvbkFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZhdWx0VGhyZWFkRmFjdG9yeSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdDYWNoZWRUaHJlYWRQb29sIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3Q2FjaGVkVGhyZWFkUG9vbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0ZpeGVkVGhyZWFkUG9vbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuVGhyZWFkcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0ZpeGVkVGhyZWFkUG9vbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuVGhyZWFkcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NjaGVkdWxlZFRocmVhZFBvb2wiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29yZVBvb2xTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3U2NoZWR1bGVkVGhyZWFkUG9vbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3JlUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkRmFjdG9yeSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTaW5nbGVUaHJlYWRFeGVjdXRvciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NpbmdsZVRocmVhZEV4ZWN1dG9yIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZEZhY3RvcnkiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3U2luZ2xlVGhyZWFkU2NoZWR1bGVkRXhlY3V0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTaW5nbGVUaHJlYWRTY2hlZHVsZWRFeGVjdXRvciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaXZpbGVnZWRDYWxsYWJsZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxhYmxlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcml2aWxlZ2VkQ2FsbGFibGVVc2luZ0N1cnJlbnRDbGFzc0xvYWRlciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxhYmxlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcml2aWxlZ2VkVGhyZWFkRmFjdG9yeSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmNvbmZpZ3VyYWJsZUV4ZWN1dG9yU2VydmljZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGVjdXRvciIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuY29uZmlndXJhYmxlU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4ZWN1dG9yIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkZ1dHVyZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF5SW50ZXJydXB0SWZSdW5uaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlRpbWVvdXRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDYW5jZWxsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJGdXR1cmVUYXNrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZ1dHVyZVRhc2siCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxhYmxlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRnV0dXJlVGFzayIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnVubmFibGUiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF5SW50ZXJydXB0SWZSdW5uaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZWN1dGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVjdXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZW91dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NhbmNlbGxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bkFuZFJlc2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGlua2VkQmxvY2tpbmdRdWV1ZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RRdWV1ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkQmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkQmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkQmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFpblRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IHN1cGVyIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhFbGVtZW50cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWsiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbWFpbmluZ0NhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdFF1ZXVlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5CbG9ja2luZ1F1ZXVlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmlvcml0eUJsb2NraW5nUXVldWUiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlByaW9yaXR5QmxvY2tpbmdRdWV1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmlvcml0eUJsb2NraW5nUXVldWUiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW9yaXR5QmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Qcmlvcml0eUJsb2NraW5nUXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFpblRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IHN1cGVyIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWluVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heEVsZW1lbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVlayIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtYWluaW5nQ2FwYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWtlIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlamVjdGVkRXhlY3V0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVqZWN0ZWRFeGVjdXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuUmVqZWN0ZWRFeGVjdXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlamVjdGVkRXhlY3V0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4ZWN1dG9yIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7PyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGFibGUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1YmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVBdEZpeGVkUmF0ZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZEZ1dHVyZSZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tYW5kIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxEZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyaW9kIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZVdpdGhGaXhlZERlbGF5IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkRnV0dXJlJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTY2hlZHVsZWRGdXR1cmUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRGVsYXllZCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUiPgorPC9pbXBsZW1lbnRzPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yIgorIGV4dGVuZHM9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29yZVBvb2xTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3JlUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkRmFjdG9yeSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvcmVQb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3JlUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkRmFjdG9yeSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuUmVqZWN0ZWRFeGVjdXRpb25IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGludWVFeGlzdGluZ1BlcmlvZGljVGFza3NBZnRlclNodXRkb3duUG9saWN5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGVjdXRlRXhpc3RpbmdEZWxheWVkVGFza3NBZnRlclNodXRkb3duUG9saWN5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZEZ1dHVyZSZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxhYmxlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXkiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlQXRGaXhlZFJhdGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlV2l0aEZpeGVkRGVsYXkiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGludWVFeGlzdGluZ1BlcmlvZGljVGFza3NBZnRlclNodXRkb3duUG9saWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhlY3V0ZUV4aXN0aW5nRGVsYXllZFRhc2tzQWZ0ZXJTaHV0ZG93blBvbGljeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlbWFwaG9yZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VtYXBob3JlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlNlbWFwaG9yZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VtYXBob3JlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlNlbWFwaG9yZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZVVuaW50ZXJydXB0aWJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZVVuaW50ZXJydXB0aWJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdmFpbGFibGVQZXJtaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWluUGVybWl0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNRdWV1ZWRUaHJlYWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmFpciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVkdWNlUGVybWl0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZHVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5QWNxdWlyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5QWNxdWlyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUFjcXVpcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5QWNxdWlyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY2hyb25vdXNRdWV1ZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RRdWV1ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY2hyb25vdXNRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY2hyb25vdXNRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYWluVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4RWxlbWVudHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1haW5pbmdDYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2UiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUaHJlYWRGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibmV3VGhyZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRocmVhZFBvb2xFeGVjdXRvciIKKyBleHRlbmRzPSJqYXZhLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZFBvb2xFeGVjdXRvciIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3JlUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4aW11bVBvb2xTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtlZXBBbGl2ZVRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3JrUXVldWUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWUmbHQ7amF2YS5sYW5nLlJ1bm5hYmxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvcmVQb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhpbXVtUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcEFsaXZlVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndvcmtRdWV1ZSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSZsdDtqYXZhLmxhbmcuUnVubmFibGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29yZVBvb2xTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heGltdW1Qb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZWVwQWxpdmVUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id29ya1F1ZXVlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5CbG9ja2luZ1F1ZXVlJmx0O2phdmEubGFuZy5SdW5uYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvcmVQb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhpbXVtUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcEFsaXZlVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndvcmtRdWV1ZSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSZsdDtqYXZhLmxhbmcuUnVubmFibGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZnRlckV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRUZXJtaW5hdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZUV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3RpdmVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wbGV0ZWRUYXNrQ291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvcmVQb29sU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZWVwQWxpdmVUaW1lIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFyZ2VzdFBvb2xTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heGltdW1Qb29sU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb29sU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWUmbHQ7amF2YS5sYW5nLlJ1bm5hYmxlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFza0NvdW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRGYWN0b3J5IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NodXRkb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Rlcm1pbmF0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVGVybWluYXRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXN0YXJ0QWxsQ29yZVRocmVhZHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlc3RhcnRDb3JlVGhyZWFkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXJnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvcmVQb29sU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvcmVQb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtlZXBBbGl2ZVRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhpbXVtUG9vbFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhpbXVtUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGhyZWFkRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZEZhY3RvcnkiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duTm93IgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlJ1bm5hYmxlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXJtaW5hdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IuQWJvcnRQb2xpY3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZFBvb2xFeGVjdXRvci5BYm9ydFBvbGljeSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuQWJvcnRQb2xpY3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVqZWN0ZWRFeGVjdXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IuQ2FsbGVyUnVuc1BvbGljeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yLkNhbGxlclJ1bnNQb2xpY3kiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLkNhbGxlclJ1bnNQb2xpY3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVqZWN0ZWRFeGVjdXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IuRGlzY2FyZE9sZGVzdFBvbGljeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yLkRpc2NhcmRPbGRlc3RQb2xpY3kiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLkRpc2NhcmRPbGRlc3RQb2xpY3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVqZWN0ZWRFeGVjdXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IuRGlzY2FyZFBvbGljeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yLkRpc2NhcmRQb2xpY3kiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLkRpc2NhcmRQb2xpY3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVqZWN0ZWRFeGVjdXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaW1lVW5pdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb252ZXJ0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlRHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZVVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNsZWVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0aW1lZEpvaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWQiIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGltZWRXYWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvTWljcm9zIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9NaWxsaXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b05hbm9zIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TZWNvbmRzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljIgorPgorPGNsYXNzIG5hbWU9IkF0b21pY0Jvb2xlYW4iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0Jvb2xlYW4iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0Jvb2xlYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0Jvb2xlYW4iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0Jvb2xlYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cGRhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY0ludGVnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0ludGVnZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXRvbWljSW50ZWdlciIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljSW50ZWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRBbmRHZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjcmVtZW50QW5kR2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVmFsdWUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZEFkZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZERlY3JlbWVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZEluY3JlbWVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZFNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlbWVudEFuZEdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvbmdWYWx1ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndlYWtDb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXRvbWljSW50ZWdlckFycmF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNJbnRlZ2VyQXJyYXkiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXJBcnJheSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNJbnRlZ2VyQXJyYXkiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXJBcnJheSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEFuZEdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjcmVtZW50QW5kR2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZEFkZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kRGVjcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRJbmNyZW1lbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZFNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jcmVtZW50QW5kR2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXRvbWljSW50ZWdlckZpZWxkVXBkYXRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNJbnRlZ2VyRmllbGRVcGRhdGVyIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNJbnRlZ2VyRmllbGRVcGRhdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEFuZEdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY3JlbWVudEFuZEdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kQWRkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kRGVjcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kSW5jcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jcmVtZW50QW5kR2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VXBkYXRlciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNJbnRlZ2VyRmllbGRVcGRhdGVyJmx0O1UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRjbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2Vha0NvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY0xvbmciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmciCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0xvbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmciCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0xvbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkQW5kR2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNyZW1lbnRBbmRHZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVmFsdWUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRBZGQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZERlY3JlbWVudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRJbmNyZW1lbnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRBbmRHZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndlYWtDb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdG9taWNMb25nQXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmdBcnJheSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljTG9uZ0FycmF5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmdBcnJheSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljTG9uZ0FycmF5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEFuZEdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNyZW1lbnRBbmRHZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRBZGQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kRGVjcmVtZW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kSW5jcmVtZW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlbWVudEFuZEdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdG9taWNMb25nRmllbGRVcGRhdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmdGaWVsZFVwZGF0ZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0xvbmdGaWVsZFVwZGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkQW5kR2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY3JlbWVudEFuZEdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRBZGQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZERlY3JlbWVudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRJbmNyZW1lbnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRBbmRHZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VXBkYXRlciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNMb25nRmllbGRVcGRhdGVyJmx0O1UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRjbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndlYWtDb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY01hcmthYmxlUmVmZXJlbmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNNYXJrYWJsZVJlZmVyZW5jZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljTWFya2FibGVSZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsUmVmIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsTWFyayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF0dGVtcHRNYXJrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld01hcmsiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVmZXJlbmNlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkTWFyayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TWFyayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXJrSG9sZGVyIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVmZXJlbmNlIgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01hcmtlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UmVmZXJlbmNlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdNYXJrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndlYWtDb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlZmVyZW5jZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRNYXJrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdNYXJrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY1JlZmVyZW5jZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXRvbWljUmVmZXJlbmNlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNSZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY1JlZmVyZW5jZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljUmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRTZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2Vha0NvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY1JlZmVyZW5jZUFycmF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNSZWZlcmVuY2VBcnJheSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljUmVmZXJlbmNlQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXRvbWljUmVmZXJlbmNlQXJyYXkiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY1JlZmVyZW5jZUFycmF5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9IkVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cGRhdGUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdG9taWNSZWZlcmVuY2VGaWVsZFVwZGF0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXRvbWljUmVmZXJlbmNlRmllbGRVcGRhdGVyIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNSZWZlcmVuY2VGaWVsZFVwZGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRTZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1VwZGF0ZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljUmVmZXJlbmNlRmllbGRVcGRhdGVyJmx0O1UsIFcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRjbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2Y2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtXJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdG9taWNTdGFtcGVkUmVmZXJlbmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNTdGFtcGVkUmVmZXJlbmNlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNTdGFtcGVkUmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFJlZiIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFN0YW1wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdHRlbXB0U3RhbXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZFJlZmVyZW5jZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhbXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlZmVyZW5jZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRTdGFtcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTdGFtcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YW1wSG9sZGVyIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWZlcmVuY2UiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YW1wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlZmVyZW5jZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhbXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVmZXJlbmNlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkU3RhbXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhbXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzIgorPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0T3duYWJsZVN5bmNocm9uaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9IiIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdE93bmFibGVTeW5jaHJvbml6ZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RPd25hYmxlU3luY2hyb25pemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2x1c2l2ZU93bmVyVGhyZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV4Y2x1c2l2ZU93bmVyVGhyZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyIgorIGV4dGVuZHM9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0T3duYWJsZVN5bmNocm9uaXplciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZUludGVycnVwdGlibHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmVTaGFyZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmVTaGFyZWRJbnRlcnJ1cHRpYmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0U3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cGRhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGNsdXNpdmVRdWV1ZWRUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaXJzdFF1ZXVlZFRocmVhZCIKKyByZXR1cm49ImphdmEubGFuZy5UaHJlYWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFF1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FpdFF1ZXVlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuQ29uZGl0aW9uT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhaXRpbmdUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ29udGVuZGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1F1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzV2FpdGVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIZWxkRXhjbHVzaXZlbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUXVldWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWQiIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3ducyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZVNoYXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5QWNxdWlyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUFjcXVpcmVOYW5vcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbm9zVGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlBY3F1aXJlU2hhcmVkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlBY3F1aXJlU2hhcmVkTmFub3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW5vc1RpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5UmVsZWFzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeVJlbGVhc2VTaGFyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuQ29uZGl0aW9uT2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FpdE5hbm9zIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW5vc1RpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRVbmludGVycnVwdGlibHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRVbnRpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVhZGxpbmUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhaXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhaXRpbmdUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNXYWl0ZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ25hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWduYWxBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbmRpdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FpdE5hbm9zIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW5vc1RpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRVbmludGVycnVwdGlibHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRVbnRpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVhZGxpbmUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ25hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWduYWxBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMb2NrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrSW50ZXJydXB0aWJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdDb25kaXRpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Db25kaXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlMb2NrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUxvY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTG9ja1N1cHBvcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJwYXJrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcmtOYW5vcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFub3MiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFya1VudGlsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWFkbGluZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnBhcmsiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZCIgdHlwZT0iamF2YS5sYW5nLlRocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVhZFdyaXRlTG9jayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlYWRMb2NrIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9jayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9jayIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2siCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmVlbnRyYW50TG9jayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWVudHJhbnRMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudExvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWVudHJhbnRMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudExvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWlyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SG9sZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE93bmVyIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYWl0UXVldWVMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhaXRpbmdUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1F1ZXVlZFRocmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1F1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzV2FpdGVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmFpciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hlbGRCeUN1cnJlbnRUaHJlYWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG9ja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrSW50ZXJydXB0aWJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3Q29uZGl0aW9uIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUxvY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUxvY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmxvY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZW50cmFudFJlYWRXcml0ZUxvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVhZFdyaXRlTG9jayI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVlbnRyYW50UmVhZFdyaXRlTG9jayIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRSZWFkV3JpdGVMb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVlbnRyYW50UmVhZFdyaXRlTG9jayIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRSZWFkV3JpdGVMb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE93bmVyIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXVlZFJlYWRlclRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZWRUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVldWVkV3JpdGVyVGhyZWFkcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5UaHJlYWQmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYWRMb2NrQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FpdFF1ZXVlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYWl0aW5nVGhyZWFkcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5UaHJlYWQmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcml0ZUhvbGRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNRdWV1ZWRUaHJlYWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZCIgdHlwZT0iamF2YS5sYW5nLlRocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNRdWV1ZWRUaHJlYWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1dhaXRlcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZhaXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXcml0ZUxvY2tlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXcml0ZUxvY2tlZEJ5Q3VycmVudFRocmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvY2siCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRSZWFkV3JpdGVMb2NrLlJlYWRMb2NrIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9jayIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudFJlYWRXcml0ZUxvY2suV3JpdGVMb2NrIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZW50cmFudFJlYWRXcml0ZUxvY2suUmVhZExvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWVudHJhbnRSZWFkV3JpdGVMb2NrLlJlYWRMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudFJlYWRXcml0ZUxvY2suUmVhZExvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NrIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRSZWFkV3JpdGVMb2NrIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ja0ludGVycnVwdGlibHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0NvbmRpdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlMb2NrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlMb2NrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5sb2NrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWVudHJhbnRSZWFkV3JpdGVMb2NrLldyaXRlTG9jayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlZW50cmFudFJlYWRXcml0ZUxvY2suV3JpdGVMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudFJlYWRXcml0ZUxvY2suV3JpdGVMb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jayIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVlbnRyYW50UmVhZFdyaXRlTG9jayI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImxvY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvY2tJbnRlcnJ1cHRpYmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdDb25kaXRpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Db25kaXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5TG9jayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5TG9jayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnV0aWwuamFyIgorPgorPGNsYXNzIG5hbWU9IkF0dHJpYnV0ZXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuTWFwIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVzIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZXMiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmliIiB0eXBlPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZXMiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0tleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7amF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmliIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8sID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ibWFwIgorIHR5cGU9ImphdmEudXRpbC5NYXAiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXR0cmlidXRlcy5OYW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZXMuTmFtZSIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMuTmFtZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkNMQVNTX1BBVEgiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVEVOU0lPTl9JTlNUQUxMQVRJT04iCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURU5TSU9OX0xJU1QiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURU5TSU9OX05BTUUiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1QTEVNRU5UQVRJT05fVElUTEUiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1QTEVNRU5UQVRJT05fVVJMIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNUExFTUVOVEFUSU9OX1ZFTkRPUiIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMuTmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTVBMRU1FTlRBVElPTl9WRU5ET1JfSUQiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1QTEVNRU5UQVRJT05fVkVSU0lPTiIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMuTmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQUlOX0NMQVNTIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTklGRVNUX1ZFUlNJT04iCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VBTEVEIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9WRVJTSU9OIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQRUNJRklDQVRJT05fVElUTEUiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BFQ0lGSUNBVElPTl9WRU5ET1IiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BFQ0lGSUNBVElPTl9WRVJTSU9OIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKYXJFbnRyeSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuemlwLlppcEVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSmFyRW50cnkiCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJFbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphckVudHJ5IgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0iamF2YS51dGlsLnppcC5aaXBFbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSmFyRW50cnkiCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJFbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImplIiB0eXBlPSJqYXZhLnV0aWwuamFyLkphckVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29kZVNpZ25lcnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkNvZGVTaWduZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKYXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS51dGlsLnppcC5aaXBFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSmFyRmlsZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuemlwLlppcEZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJGaWxlIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRmlsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphckZpbGUiCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJpZnkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJGaWxlIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRmlsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyaWZ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJGaWxlIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRmlsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSmFyRmlsZSIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkphckZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyaWZ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEphckVudHJ5IgorIHJldHVybj0iamF2YS51dGlsLmphci5KYXJFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYW5pZmVzdCIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUFOSUZFU1RfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtNRVRBLUlORi9NQU5JRkVTVC5NRiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSmFySW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS51dGlsLnppcC5aaXBJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcmlmeSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWFuaWZlc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLk1hbmlmZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRKYXJFbnRyeSIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuSmFyRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikphck91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuemlwLlppcE91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikphck91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkphck91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWYiIHR5cGU9ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFuaWZlc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFuaWZlc3QiCisgdHlwZT0iamF2YS51dGlsLmphci5NYW5pZmVzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbmlmZXN0IgorIHR5cGU9ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbmlmZXN0IgorIHR5cGU9ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYW4iIHR5cGU9ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50cmllcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS51dGlsLmphci5BdHRyaWJ1dGVzJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYWluQXR0cmlidXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWNrMjAwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdQYWNrZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLlBhY2syMDAuUGFja2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VW5wYWNrZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLlBhY2syMDAuVW5wYWNrZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGFjazIwMC5QYWNrZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZFByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEudXRpbC5qYXIuSmFySW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3BlcnRpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNMQVNTX0FUVFJJQlVURV9QRlgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5jbGFzcy5hdHRyaWJ1dGUuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPREVfQVRUUklCVVRFX1BGWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYWNrLmNvZGUuYXR0cmlidXRlLiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZMQVRFX0hJTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5kZWZsYXRlLmhpbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUZGT1JUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhY2suZWZmb3J0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Vycm9yJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZBTFNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ZhbHNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJRUxEX0FUVFJJQlVURV9QRlgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5maWVsZC5hdHRyaWJ1dGUuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFRVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7a2VlcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRUVQX0ZJTEVfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5rZWVwLmZpbGUub3JkZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFURVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xhdGVzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRIT0RfQVRUUklCVVRFX1BGWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYWNrLm1ldGhvZC5hdHRyaWJ1dGUuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PRElGSUNBVElPTl9USU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhY2subW9kaWZpY2F0aW9uLnRpbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXNzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBU1NfRklMRV9QRlgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5wYXNzLmZpbGUuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST0dSRVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhY2sucHJvZ3Jlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VHTUVOVF9MSU1JVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYWNrLnNlZ21lbnQubGltaXQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSSVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RyaXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0cnVlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOS05PV05fQVRUUklCVVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhY2sudW5rbm93bi5hdHRyaWJ1dGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUGFjazIwMC5VbnBhY2tlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcm9wZXJ0aWVzIgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5wYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLnV0aWwuamFyLkphck91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5wYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkxBVEVfSElOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1bnBhY2suZGVmbGF0ZS5oaW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZBTFNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ZhbHNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFRVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7a2VlcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9HUkVTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1bnBhY2sucHJvZ3Jlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0cnVlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnV0aWwubG9nZ2luZyIKKz4KKzxjbGFzcyBuYW1lPSJDb25zb2xlSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLnV0aWwubG9nZ2luZy5TdHJlYW1IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29uc29sZUhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuQ29uc29sZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRXJyb3JNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFcnJvck1hbmFnZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuRXJyb3JNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvckNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNMT1NFX0ZBSUxVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMVVNIX0ZBSUxVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9GQUlMVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRU5FUklDX0ZBSUxVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QRU5fRkFJTFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV1JJVEVfRkFJTFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEudXRpbC5sb2dnaW5nLlN0cmVhbUhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5GaWxlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5GaWxlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5GaWxlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGVuZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVIYW5kbGVyIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkZpbGVIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVIYW5kbGVyIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkZpbGVIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJGaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpc0xvZ2dhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNvcmQiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0dGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0TWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWlsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JNYW5hZ2VyIgorIHJldHVybj0iamF2YS51dGlsLmxvZ2dpbmcuRXJyb3JNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXR0ZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGV2ZWwiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvZ2dhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHVibGlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwb3J0RXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4IiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5jb2RpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yTWFuYWdlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVtIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5FcnJvck1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3RmlsdGVyIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5GaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9ybWF0dGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Rm9ybWF0dGVyIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGV2ZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGV2ZWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxldmVsIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGV2ZWwiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGl6ZWROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZUJ1bmRsZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTEwiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09ORklHIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTkUiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklORVIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklORVNUIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklORk8iCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT0ZGIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVkVSRSIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXQVJOSU5HIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2dNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dNYW5hZ2VyIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ01hbmFnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkTG9nZ2VyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dnZXIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dNYW5hZ2VyIgorIHJldHVybj0iamF2YS51dGlsLmxvZ2dpbmcuTG9nTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlck5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9nZ2luZ01YQmVhbiIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dpbmdNWEJlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZENvbmZpZ3VyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ29uZmlndXJhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkxPR0dJTkdfTVhCRUFOX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7amF2YS51dGlsLmxvZ2dpbmc6dHlwZT1Mb2dnaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2dSZWNvcmQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvZ1JlY29yZCIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExldmVsIgorIHJldHVybj0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9nZ2VyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWlsbGlzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlQnVuZGxlIgorIHJldHVybj0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlQnVuZGxlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VxdWVuY2VOdW1iZXIiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvdXJjZUNsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U291cmNlTWV0aG9kTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyZWFkSUQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyb3duIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZXZlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2dnZXJOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nZ2VyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXNzYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaWxsaXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1ldGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXNvdXJjZUJ1bmRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlQnVuZGxlIiB0eXBlPSJqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzb3VyY2VCdW5kbGVOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VCdW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlcXVlbmNlTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxdWVuY2VOdW1iZXIiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U291cmNlQ2xhc3NOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvdXJjZU1ldGhvZE5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRocmVhZElEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaHJvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd24iIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9nZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dnZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VCdW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29uZmlnIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudGVyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnRlcmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudGVyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhpdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhpdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbm9ueW1vdXNMb2dnZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbm9ueW1vdXNMb2dnZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VCdW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIYW5kbGVycyIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkhhbmRsZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZXZlbCIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlQnVuZGxlIgorIHJldHVybj0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlQnVuZGxlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlUGFyZW50SGFuZGxlcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb2dnYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZ0xldmVsIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZ0xldmVsIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93biIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNvcmQiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2dwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VDbGFzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlTWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ncCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZ0xldmVsIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2dwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VDbGFzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlTWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZ3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3duIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZ3JiIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VDbGFzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlTWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ncmIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ncmIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ncmIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3duIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0ZpbHRlciIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZVBhcmVudEhhbmRsZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm90aWZ5UGFyZW50SGFuZGxlcnMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V2ZXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRocm93aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3duIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Indhcm5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJnbG9iYWwiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTG9nZ2luZ01YQmVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlckxldmVsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dnZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlck5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnRMb2dnZXJOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dnZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvZ2dlckxldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dnZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkxvZ2dpbmdQZXJtaXNzaW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuQmFzaWNQZXJtaXNzaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuR3VhcmQiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvZ2dpbmdQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dpbmdQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lbW9yeUhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lbW9yeUhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTWVtb3J5SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lbW9yeUhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTWVtb3J5SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdXNoTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdXNoTGV2ZWwiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdWJsaXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNvcmQiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQdXNoTGV2ZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2ltcGxlRm9ybWF0dGVyIgorIGV4dGVuZHM9ImphdmEudXRpbC5sb2dnaW5nLkZvcm1hdHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5TaW1wbGVGb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTG9nUmVjb3JkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNvY2tldEhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS51dGlsLmxvZ2dpbmcuU3RyZWFtSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldEhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuU29ja2V0SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRIYW5kbGVyIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLlNvY2tldEhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyZWFtSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLnV0aWwubG9nZ2luZy5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5TdHJlYW1IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5TdHJlYW1IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkZvcm1hdHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHVibGlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlhNTEZvcm1hdHRlciIKKyBleHRlbmRzPSJqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYTUxGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuWE1MRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEudXRpbC5wcmVmcyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFByZWZlcmVuY2VzIgorIGV4dGVuZHM9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RQcmVmZXJlbmNlcyIKKyB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQWJzdHJhY3RQcmVmZXJlbmNlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iamF2YS51dGlsLnByZWZzLkFic3RyYWN0UHJlZmVyZW5jZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYnNvbHV0ZVBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZE5vZGVDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5jbCIgdHlwZT0iamF2YS51dGlsLnByZWZzLk5vZGVDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FjaGVkQ2hpbGRyZW4iCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuQWJzdHJhY3RQcmVmZXJlbmNlc1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hpbGRTcGkiCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuQWJzdHJhY3RQcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoaWxkcmVuTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGlsZHJlbk5hbWVzU3BpIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHBvcnROb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3N0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhwb3J0U3VidHJlZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoU3BpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmbHQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5BYnN0cmFjdFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmbHQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BpIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZW1vdmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VzZXJOb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2V5c1NwaSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9kZSIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub2RlRXhpc3RzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcmVudCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEJvb2xlYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEJ5dGVBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXREb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U3BpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTm9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVOb2RlQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5Ob2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTm9kZVNwaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBjbCIgdHlwZT0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTcGkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNTcGkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJsb2NrIgorIHR5cGU9ImphdmEubGFuZy5PYmplY3QiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5ld05vZGUiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZFByZWZlcmVuY2VzRm9ybWF0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkUHJlZmVyZW5jZXNGb3JtYXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLnByZWZzLkludmFsaWRQcmVmZXJlbmNlc0Zvcm1hdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRQcmVmZXJlbmNlc0Zvcm1hdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwucHJlZnMuSW52YWxpZFByZWZlcmVuY2VzRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZFByZWZlcmVuY2VzRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5wcmVmcy5JbnZhbGlkUHJlZmVyZW5jZXNGb3JtYXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9kZUNoYW5nZUV2ZW50IgorIGV4dGVuZHM9ImphdmEudXRpbC5FdmVudE9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vZGVDaGFuZ2VFdmVudCIKKyB0eXBlPSJqYXZhLnV0aWwucHJlZnMuTm9kZUNoYW5nZUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnQiCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik5vZGVDaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNoaWxkQWRkZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5Ob2RlQ2hhbmdlRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hpbGRSZW1vdmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuTm9kZUNoYW5nZUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQcmVmZXJlbmNlQ2hhbmdlRXZlbnQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkV2ZW50T2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJlZmVyZW5jZUNoYW5nZUV2ZW50IgorIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlRXZlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImsiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRLZXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5ld1ZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb2RlIgorIHJldHVybj0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkV2ZW50TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJwcmVmZXJlbmNlQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2UiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlByZWZlcmVuY2VzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByZWZlcmVuY2VzIgorIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYnNvbHV0ZVBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkTm9kZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5Ob2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hpbGRyZW5OYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHBvcnROb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvc3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHBvcnRTdWJ0cmVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvc3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVBcnJheSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmbHQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmbHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBvcnRQcmVmZXJlbmNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRQcmVmZXJlbmNlc0Zvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkludmFsaWRQcmVmZXJlbmNlc0Zvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VzZXJOb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9kZSIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vZGVFeGlzdHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJlbnQiCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Qm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRCeXRlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXREb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0SW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVOb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTm9kZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5Ob2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5c3RlbU5vZGVGb3JQYWNrYWdlIgorIHJldHVybj0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeXN0ZW1Sb290IgorIHJldHVybj0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlck5vZGVGb3JQYWNrYWdlIgorIHJldHVybj0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VyUm9vdCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUFYX0tFWV9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfTkFNRV9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUVfTEVOR1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlByZWZlcmVuY2VzRmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InN5c3RlbVJvb3QiCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VyUm9vdCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEudXRpbC5yZWdleCIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iTWF0Y2hSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm91cCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm91cCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm91cENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLnJlZ2V4Lk1hdGNoUmVzdWx0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXBwZW5kUmVwbGFjZW1lbnQiCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXBsYWNlbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRUYWlsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ3JvdXAiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imdyb3VwIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm91cENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FuY2hvcmluZ0JvdW5kcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzVHJhbnNwYXJlbnRCb3VuZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpdEVuZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9va2luZ0F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXR0ZXJuIgorIHJldHVybj0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGVSZXBsYWNlbWVudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaW9uRW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lvblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VBbGwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXBsYWNlbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlRmlyc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXBsYWNlbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1aXJlRW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9NYXRjaFJlc3VsdCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaFJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VBbmNob3JpbmdCb3VuZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlUGF0dGVybiIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVybiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VUcmFuc3BhcmVudEJvdW5kcyIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXR0ZXJuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjb21waWxlIgorIHJldHVybj0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGF0dGVyblN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm5TeW50YXhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGlsZSIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hlciIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdleCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF0dGVybiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BsaXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U2VxIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNwbGl0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNBTk9OX0VRIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBU0VfSU5TRU5TSVRJVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTU1FTlRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET1RBTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVRFUkFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVVMVElMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTklDT0RFX0NBU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTklYX0xJTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGF0dGVyblN5bnRheEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0dGVyblN5bnRheEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVyblN5bnRheEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NyaXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGVzY3JpcHRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdHRlcm4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS51dGlsLnppcCIKKz4KKzxjbGFzcyBuYW1lPSJBZGxlcjMyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC56aXAuQ2hlY2tzdW0iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFkbGVyMzIiCisgdHlwZT0iamF2YS51dGlsLnppcC5BZGxlcjMyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ1JDMzIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLnppcC5DaGVja3N1bSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ1JDMzIiCisgdHlwZT0iamF2YS51dGlsLnppcC5DUkMzMiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hlY2tlZElucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVySW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja2VkSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLnppcC5DaGVja2VkSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3N1bSIgdHlwZT0iamF2YS51dGlsLnppcC5DaGVja3N1bSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoZWNrc3VtIgorIHJldHVybj0iamF2YS51dGlsLnppcC5DaGVja3N1bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGVja2VkT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hlY2tlZE91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkNoZWNrZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLnV0aWwuemlwLkNoZWNrc3VtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hlY2tzdW0iCisgcmV0dXJuPSJqYXZhLnV0aWwuemlwLkNoZWNrc3VtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDaGVja3N1bSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJEYXRhRm9ybWF0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC56aXAuRGF0YUZvcm1hdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFGb3JtYXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLnppcC5EYXRhRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmxhdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZsYXRlciIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkRlZmxhdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVmbGF0ZXIiCisgdHlwZT0iamF2YS51dGlsLnppcC5EZWZsYXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmxhdGVyIgorIHR5cGU9ImphdmEudXRpbC56aXAuRGVmbGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub0hlYWRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlZmxhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlZmxhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluaXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFkbGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZXNSZWFkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVzV3JpdHRlbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbEluIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG90YWxPdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZWVkc0lucHV0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpY3Rpb25hcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaWN0aW9uYXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ieXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGV2ZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyYXRlZ3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmF0ZWd5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCRVNUX0NPTVBSRVNTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCRVNUX1NQRUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX0NPTVBSRVNTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TVFJBVEVHWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGTEFURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTFRFUkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVUZGTUFOX09OTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX0NPTVBSRVNTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmbGF0ZXJPdXRwdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZsYXRlck91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkRlZmxhdGVyT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWYiIHR5cGU9ImphdmEudXRpbC56aXAuRGVmbGF0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmxhdGVyT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuRGVmbGF0ZXJPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmxhdGVyT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuRGVmbGF0ZXJPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0iamF2YS51dGlsLnppcC5EZWZsYXRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlZmxhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJ1ZiIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZWYiCisgdHlwZT0iamF2YS51dGlsLnppcC5EZWZsYXRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHWklQSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS51dGlsLnppcC5JbmZsYXRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR1pJUElucHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuR1pJUElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHWklQSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLnppcC5HWklQSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iR1pJUF9NQUdJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNyYyIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkNSQzMyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW9zIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR1pJUE91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuemlwLkRlZmxhdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR1pJUE91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkdaSVBPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHWklQT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuR1pJUE91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iY3JjIgorIHR5cGU9ImphdmEudXRpbC56aXAuQ1JDMzIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5mbGF0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkluZmxhdGVyIgorIHR5cGU9ImphdmEudXRpbC56aXAuSW5mbGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmZsYXRlciIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkluZmxhdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9IZWFkZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluaXNoZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWRsZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlc1JlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZXNXcml0dGVuIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbWFpbmluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvdGFsSW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbE91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRhRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuemlwLkRhdGFGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ieXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRhRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuemlwLkRhdGFGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmVlZHNEaWN0aW9uYXJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZWRzSW5wdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGljdGlvbmFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGljdGlvbmFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5mbGF0ZXJJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbHRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5mbGF0ZXJJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkluZmxhdGVySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5mbGF0ZXJJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkluZmxhdGVySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mIiB0eXBlPSJqYXZhLnV0aWwuemlwLkluZmxhdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmZsYXRlcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuSW5mbGF0ZXJJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmYiIHR5cGU9ImphdmEudXRpbC56aXAuSW5mbGF0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJidWYiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5mIgorIHR5cGU9ImphdmEudXRpbC56aXAuSW5mbGF0ZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlppcEVudHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlppcEVudHJ5IgorIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJaaXBFbnRyeSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLlppcEVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iemUiIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tbWVudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcHJlc3NlZFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENyYyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmEiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0b3J5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21tZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbXByZXNzZWRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3JjIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXh0cmEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGTEFURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUT1JFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlppcEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWmlwRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWmlwRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlppcEZpbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlppcEZpbGUiCisgdHlwZT0iamF2YS51dGlsLnppcC5aaXBGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWmlwRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuemlwLlppcEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWmlwRmlsZSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLlppcEZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlppcEZpbGUiCisgdHlwZT0iamF2YS51dGlsLnppcC5aaXBGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudHJpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7PyBleHRlbmRzIGphdmEudXRpbC56aXAuWmlwRW50cnkmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJ5IgorIHJldHVybj0iamF2YS51dGlsLnppcC5aaXBFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPUEVOX0RFTEVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BFTl9SRUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWmlwSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS51dGlsLnppcC5JbmZsYXRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWmlwSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLnppcC5aaXBJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVaaXBFbnRyeSIKKyByZXR1cm49ImphdmEudXRpbC56aXAuWmlwRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dEVudHJ5IgorIHJldHVybj0iamF2YS51dGlsLnppcC5aaXBFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWmlwT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEudXRpbC56aXAuRGVmbGF0ZXJPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJaaXBPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLnppcC5aaXBPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwMSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZUVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TmV4dEVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iemUiIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXRob2QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkxBVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVE9SRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LmNyeXB0byIKKz4KKzxjbGFzcyBuYW1lPSJCYWRQYWRkaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQmFkUGFkZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQmFkUGFkZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaXBoZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcGhlciIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2lwaGVyU3BpIiB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyU3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhZFBhZGRpbmdFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5CYWRQYWRkaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmluYWwiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmluYWwiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmluYWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhZFBhZGRpbmdFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5CYWRQYWRkaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmluYWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9ja1NpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGVtcHRpb25NZWNoYW5pc20iCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SVYiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5DaXBoZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc2Zvcm1hdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLk5vU3VjaFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uQ2lwaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQYWRkaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uQ2lwaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQYWRkaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhBbGxvd2VkS2V5TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4QWxsb3dlZFBhcmFtZXRlclNwZWMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zZm9ybWF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE91dHB1dFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcG1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wbW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcG1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcG1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wbW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRpZmljYXRlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bndyYXAiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkS2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWRLZXlBbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWRLZXlUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUNSWVBUX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ1JZUFRfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJJVkFURV9LRVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBVQkxJQ19LRVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ1JFVF9LRVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOV1JBUF9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUkFQX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaXBoZXJJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbHRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2lwaGVySW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YXguY3J5cHRvLkNpcGhlcklucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcGhlcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXJJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2lwaGVyT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2lwaGVyT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXJPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcGhlck91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2lwaGVyU3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcGhlclNwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZURvRmluYWwiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZURvRmluYWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWRQYWRkaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uQmFkUGFkZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lRG9GaW5hbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldEJsb2NrU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldElWIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0S2V5U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldE91dHB1dFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcG1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTZXRNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNldFBhZGRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFBhZGRpbmdFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5Ob1N1Y2hQYWRkaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVud3JhcCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkS2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWRLZXlBbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWRLZXlUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVXcmFwIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGVkIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNyQWxnTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jcnlwdGVkRGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdQYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jcnlwdGVkRGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVycyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNyeXB0ZWREYXRhIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVNwZWMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuUEtDUzhFbmNvZGVkS2V5U3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2lwaGVyIiB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVNwZWMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuUEtDUzhFbmNvZGVkS2V5U3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVjcnlwdEtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlTcGVjIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLlBLQ1M4RW5jb2RlZEtleVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlY3J5cHRLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5U3BlYyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuc3BlYy5QS0NTOEVuY29kZWRLZXlTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWNyeXB0S2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc20iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhtZWNoU3BpIiB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtU3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVjaGFuaXNtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuRXhlbXB0aW9uQmxvYiIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5FeGVtcHRpb25CbG9iIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5FeGVtcHRpb25CbG9iIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPdXRwdXRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NyeXB0b0FsbG93ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iCisgdHlwZT0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtU3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbVNwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbkV4ZW1wdGlvbkJsb2IiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbkV4ZW1wdGlvbkJsb2IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0T3V0cHV0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dExlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iCisgdHlwZT0iamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iCisgdHlwZT0iamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5QWdyZWVtZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlBZ3JlZW1lbnQiCisgdHlwZT0iamF2YXguY3J5cHRvLktleUFncmVlbWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUFncmVlU3BpIiB0eXBlPSJqYXZheC5jcnlwdG8uS2V5QWdyZWVtZW50U3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZG9QaGFzZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxhc3RQaGFzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVTZWNyZXQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlU2VjcmV0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZFNlY3JldCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlU2VjcmV0IgorIHJldHVybj0iamF2YXguY3J5cHRvLlNlY3JldEtleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5LZXlBZ3JlZW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uS2V5QWdyZWVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uS2V5QWdyZWVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleUFncmVlbWVudFNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlBZ3JlZW1lbnRTcGkiCisgdHlwZT0iamF2YXguY3J5cHRvLktleUFncmVlbWVudFNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVEb1BoYXNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFzdFBoYXNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZW5lcmF0ZVNlY3JldCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVTZWNyZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhcmVkU2VjcmV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVTZWNyZXQiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleUdlbmVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5R2VuZXJhdG9yIgorIHR5cGU9ImphdmF4LmNyeXB0by5LZXlHZW5lcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlHZW5TcGkiIHR5cGU9ImphdmF4LmNyeXB0by5LZXlHZW5lcmF0b3JTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUtleSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uS2V5R2VuZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLktleUdlbmVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLktleUdlbmVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5R2VuZXJhdG9yU3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUdlbmVyYXRvclNwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uS2V5R2VuZXJhdG9yU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlS2V5IgorIHJldHVybj0iamF2YXguY3J5cHRvLlNlY3JldEtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFjIgorIHR5cGU9ImphdmF4LmNyeXB0by5NYWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYWNTcGkiIHR5cGU9ImphdmF4LmNyeXB0by5NYWNTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uTWFjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLk1hYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLk1hYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFjTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFjU3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hY1NwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uTWFjU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVEb0ZpbmFsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0TWFjTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lUmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb1N1Y2hQYWRkaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdWxsQ2lwaGVyIgorIGV4dGVuZHM9ImphdmF4LmNyeXB0by5DaXBoZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOdWxsQ2lwaGVyIgorIHR5cGU9ImphdmF4LmNyeXB0by5OdWxsQ2lwaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlYWxlZE9iamVjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VhbGVkT2JqZWN0IgorIHR5cGU9ImphdmF4LmNyeXB0by5TZWFsZWRPYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlYWxlZE9iamVjdCIKKyB0eXBlPSJqYXZheC5jcnlwdG8uU2VhbGVkT2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic28iIHR5cGU9ImphdmF4LmNyeXB0by5TZWFsZWRPYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhZFBhZGRpbmdFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5CYWRQYWRkaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImVuY29kZWRQYXJhbXMiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTZWNyZXRLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTQ3OTU4Nzg3MDk1OTUxNDY5NTJMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2VjcmV0S2V5RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjcmV0S2V5RmFjdG9yeSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUZhY1NwaSIgdHlwZT0iamF2YXguY3J5cHRvLlNlY3JldEtleUZhY3RvcnlTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZVNlY3JldCIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLlNlY3JldEtleUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLlNlY3JldEtleUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVNwZWMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVNwZWMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleVNwZWNFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2xhdGVLZXkiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YXguY3J5cHRvLlNlY3JldEtleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlY3JldEtleUZhY3RvcnlTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjcmV0S2V5RmFjdG9yeVNwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5RmFjdG9yeVNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZW5lcmF0ZVNlY3JldCIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0S2V5U3BlYyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YXguY3J5cHRvLlNlY3JldEtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVRyYW5zbGF0ZUtleSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LmNyeXB0by5pbnRlcmZhY2VzIgorPgorPGludGVyZmFjZSBuYW1lPSJESEtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49ImphdmF4LmNyeXB0by5zcGVjLkRIUGFyYW1ldGVyU3BlYyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iREhQcml2YXRlS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LmNyeXB0by5pbnRlcmZhY2VzLkRIS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFgiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMjExNzkxMTEzMzgwMzk2NTUzTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJESFB1YmxpY0tleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5jcnlwdG8uaW50ZXJmYWNlcy5ESEtleSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFkiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNjYyODEwMzU2MzM1MjUxOTE5M0wiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUEJFS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVyYXRpb25Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2FsdCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTQzMDAxNTk5MzMwNDMzMzkyMUwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LmNyeXB0by5zcGVjIgorPgorPGNsYXNzIG5hbWU9IkRFU0tleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRFU0tleVNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREVTS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRFU0tleVNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREVTS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyaXR5QWRqdXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV2VhayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERVNfS0VZX0xFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRFU2VkZUtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRFU2VkZUtleVNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREVTZWRlS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRFU2VkZUtleVNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREVTZWRlS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyaXR5QWRqdXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVTX0VERV9LRVlfTEVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRIR2VuUGFyYW1ldGVyU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iREhHZW5QYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLkRIR2VuUGFyYW1ldGVyU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBvbmVudFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4cG9uZW50U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iREhQYXJhbWV0ZXJTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJESFBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREhQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImciIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJESFBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREhQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImciIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRHIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iREhQcml2YXRlS2V5U3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iREhQcml2YXRlS2V5U3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5ESFByaXZhdGVLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRIUHVibGljS2V5U3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iREhQdWJsaWNLZXlTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLkRIUHVibGljS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZyIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRHIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFkiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJdlBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikl2UGFyYW1ldGVyU3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5JdlBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJdlBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuSXZQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SVYiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT0FFUFBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9BRVBQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLk9BRVBQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZ2ZOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZ2ZTcGVjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icFNyYyIgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuUFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERpZ2VzdEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TUdGQWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNR0ZQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UFNvdXJjZSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5zcGVjLlBTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLk9BRVBQYXJhbWV0ZXJTcGVjIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQQkVLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQQkVLZXlTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBCRUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQQkVLZXlTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBCRUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYWx0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhdGlvbkNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQQkVLZXlTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBCRUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYWx0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhdGlvbkNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhclBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZXJhdGlvbkNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFzc3dvcmQiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTYWx0IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUEJFUGFyYW1ldGVyU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUEJFUGFyYW1ldGVyU3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5QQkVQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FsdCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdGVyYXRpb25Db3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlcmF0aW9uQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2FsdCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQU291cmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQU291cmNlIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBTb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwU3JjTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUFNvdXJjZS5QU3BlY2lmaWVkIgorIGV4dGVuZHM9ImphdmF4LmNyeXB0by5zcGVjLlBTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUFNvdXJjZS5QU3BlY2lmaWVkIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBTb3VyY2UuUFNwZWNpZmllZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5QU291cmNlLlBTcGVjaWZpZWQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJDMlBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJDMlBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuUkMyUGFyYW1ldGVyU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVmZmVjdGl2ZUtleUJpdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkMyUGFyYW1ldGVyU3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5SQzJQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWZmZWN0aXZlS2V5Qml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSQzJQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlJDMlBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlZmZlY3RpdmVLZXlCaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml2IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RWZmZWN0aXZlS2V5Qml0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJViIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSQzVQYXJhbWV0ZXJTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSQzVQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlJDNVBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3JkU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSQzVQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlJDNVBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3JkU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSQzVQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlJDNVBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3JkU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElWIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJvdW5kcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdvcmRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlY3JldEtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXguY3J5cHRvLlNlY3JldEtleSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjcmV0S2V5U3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5TZWNyZXRLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjcmV0S2V5U3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5TZWNyZXRLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkVHTCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRUdMMTAiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImVnbENob29zZUNvbmZpZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYl9saXN0IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlncyIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbmZpZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWdfc2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1fY29uZmlnIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xDb3B5QnVmZmVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1cmZhY2UiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYXRpdmVfcGl4bWFwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbENyZWF0ZUNvbnRleHQiCisgcmV0dXJuPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29udGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaGFyZV9jb250ZXh0IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmliX2xpc3QiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbENyZWF0ZVBidWZmZXJTdXJmYWNlIgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmliX2xpc3QiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbENyZWF0ZVBpeG1hcFN1cmZhY2UiCisgcmV0dXJuPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMU3VyZmFjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYXRpdmVfcGl4bWFwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJfbGlzdCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsQ3JlYXRlV2luZG93U3VyZmFjZSIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWciIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb25maWciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hdGl2ZV93aW5kb3ciIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYl9saXN0IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xEZXN0cm95Q29udGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbERlc3Ryb3lTdXJmYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VyZmFjZSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsR2V0Q29uZmlnQXR0cmliIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbEdldENvbmZpZ3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWdzIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZ19zaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bV9jb25maWciIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbEdldEN1cnJlbnRDb250ZXh0IgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xHZXRDdXJyZW50RGlzcGxheSIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsR2V0Q3VycmVudFN1cmZhY2UiCisgcmV0dXJuPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMU3VyZmFjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkZHJhdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbEdldERpc3BsYXkiCisgcmV0dXJuPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYXRpdmVfZGlzcGxheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xHZXRFcnJvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbEluaXRpYWxpemUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYWpvcl9taW5vciIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsTWFrZUN1cnJlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMU3VyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbFF1ZXJ5Q29udGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbFF1ZXJ5U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbFF1ZXJ5U3VyZmFjZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1cmZhY2UiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbFN3YXBCdWZmZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VyZmFjZSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsVGVybWluYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xXYWl0R0wiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsV2FpdE5hdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5naW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJpbmRUYXJnZXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFR0xfQUxQSEFfRk9STUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI0MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0FMUEhBX01BU0tfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9BTFBIQV9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9BQ0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfQkFEX0FMTE9DIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9BVFRSSUJVVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfQkFEX0NPTkZJRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfQ09OVEVYVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfQ1VSUkVOVF9TVVJGQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9ESVNQTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9NQVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfTkFUSVZFX1BJWE1BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfTkFUSVZFX1dJTkRPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfUEFSQU1FVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9TVVJGQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JMVUVfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CVUZGRVJfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9DT0xPUlNQQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI0MjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0NPTE9SX0JVRkZFUl9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0NPTkZJR19DQVZFQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfQ09ORklHX0lEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0NPUkVfTkFUSVZFX0VOR0lORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9ERUZBVUxUX0RJU1BMQVkiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfREVQVEhfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9ET05UX0NBUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9FWFRFTlNJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0dSRUVOX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMyMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfSEVJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0hPUklaT05UQUxfUkVTT0xVVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9MQVJHRVNUX1BCVUZGRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTEVWRUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTFVNSU5BTkNFX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9MVU1JTkFOQ0VfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9NQVhfUEJVRkZFUl9IRUlHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTUFYX1BCVUZGRVJfUElYRUxTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX01BWF9QQlVGRkVSX1dJRFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX05BVElWRV9SRU5ERVJBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX05BVElWRV9WSVNVQUxfSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTk9OX0NPTkZPUk1BTlRfQ09ORklHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX05PVF9JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9OT19DT05URVhUIgorIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9OT19ESVNQTEFZIgorIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9OT19TVVJGQUNFIgorIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9QQlVGRkVSX0JJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX1BJWEVMX0FTUEVDVF9SQVRJTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9QSVhNQVBfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9SRURfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9SRU5ERVJBQkxFX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfUkVOREVSX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9SR0JfQlVGRkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI0MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX1NBTVBMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfU0FNUExFX0JVRkZFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfU0lOR0xFX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9TTE9XX0NPTkZJRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9TVEVOQ0lMX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfU1VDQ0VTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9TVVJGQUNFX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfVFJBTlNQQVJFTlRfQkxVRV9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9UUkFOU1BBUkVOVF9SRURfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfVFJBTlNQQVJFTlRfUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX1RSQU5TUEFSRU5UX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfVkVORE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX1ZFUlNJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfVkVSVElDQUxfUkVTT0xVVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9XSURUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzc1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9XSU5ET1dfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFR0wxMSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMMTAiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkVHTF9DT05URVhUX0xPU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkVHTENvbmZpZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFR0xDb25maWciCisgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbmZpZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFR0xDb250ZXh0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVHTENvbnRleHQiCisgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RUdMIgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdMIgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFR0xEaXNwbGF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVHTERpc3BsYXkiCisgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRUdMU3VyZmFjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFR0xTdXJmYWNlIgorIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkdMIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHTDEwIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2xBY3RpdmVUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xBbHBoYUZ1bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEFscGhhRnVuY3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kVGV4dHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJsZW5kRnVuYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2ZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZmFjdG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJDb2xvcngiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhckRlcHRoZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhclN0ZW5jaWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaWVudEFjdGl2ZVRleHR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbG9yNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyZWVuIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbG9yNHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb2xvck1hc2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3JQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbXByZXNzZWRUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbWFnZVNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbWFnZVNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29weVRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcm5hbGZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29weVRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ3VsbEZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZVRleHR1cmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVUZXh0dXJlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhGdW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdW5jIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aE1hc2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aFJhbmdlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlcHRoUmFuZ2V4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEaXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERpc2FibGVDbGllbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdBcnJheXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdFbGVtZW50cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFbmFibGVDbGllbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZpbmlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9nZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9nZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2dmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZvZ3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2d4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2d4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcm9udEZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZydXN0dW1mIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJ1c3R1bXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5UZXh0dXJlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEVycm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRJbnRlZ2VydiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRJbnRlZ2VydiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0ZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0ZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGluZVdpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaW5lV2lkdGh4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZElkZW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZE1hdHJpeHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExvYWRNYXRyaXh4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2dpY09wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcGNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdGVyaWFsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdGVyaWFseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTWF0cml4TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE11bHRNYXRyaXh4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNdWx0aVRleENvb3JkNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE11bHRpVGV4Q29vcmQ0eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE5vcm1hbDNmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJueCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im55IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTm9ybWFsM3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im54IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im55IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im56IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xOb3JtYWxQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xPcnRob2YiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iekZhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xPcnRob3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQaXhlbFN0b3JlaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFNpemV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2x5Z29uT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3IiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2x5Z29uT2Zmc2V0eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb3BNYXRyaXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQdXNoTWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUmVhZFBpeGVscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJvdGF0ZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ2xlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJvdGF0ZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ2xlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTYW1wbGVDb3ZlcmFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnZlcnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTYW1wbGVDb3ZlcmFnZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludmVydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjYWxlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjYWxleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjaXNzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNoYWRlTW9kZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFN0ZW5jaWxGdW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdW5jIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsTWFzayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWlsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpmYWlsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpwYXNzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhDb29yZFBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52ZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudngiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVscyIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVHJhbnNsYXRlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRyYW5zbGF0ZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZpZXdwb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHTF9BREQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5MDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMV0FZUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTUJJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTUJJRU5UX0FORF9ESUZGVVNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FORF9JTlZFUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQU5EX1JFVkVSU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JBQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTFVFX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JZVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NDVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xBTVBfVE9fRURHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMRUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0JVRkZFUl9CSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9MT0dJQ19PUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwNTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfTUFURVJJQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09OU1RBTlRfQVRURU5VQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPUFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPUFlfSU5WRVJURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NVTExfRkFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQ0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERUNSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RJRkZVU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RJVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRE9OVF9DQVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDM1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9EU1RfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRFNUX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VNSVNTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FUVVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FUVVJViIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVhQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FWFAyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FWFRFTlNJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GQUxTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkFTVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRklYRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZMQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRk9HX0RFTlNJVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19FTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0dfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRk9HX1NUQVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUk9OVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJPTlRfQU5EX0JBQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFUVVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HUkVBVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dSRUVOX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTkNSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZBTElEX0VOVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkFMSURfT1BFUkFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZBTElEX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0tFRVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xFUVVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MzkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MzkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVF9NT0RFTF9BTUJJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVF9NT0RFTF9UV09fU0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTcyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FQVJfQVRURU5VQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJTkVBUl9NSVBNQVBfTElORUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5OTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX0xPT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJTkVfU01PT1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1NNT09USF9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1NUUklQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MVU1JTkFOQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xVTUlOQU5DRV9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0VMRU1FTlRTX0lORElDRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfTElHSFRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfTU9ERUxWSUVXX1NUQUNLX0RFUFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfUFJPSkVDVElPTl9TVEFDS19ERVBUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1RFWFRVUkVfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1RFWFRVUkVfU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1ZJRVdQT1JUX0RJTVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PREVMVklFVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU4ODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTU9EVUxBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4NDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01VTFRJU0FNUExFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkFORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkVBUkVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk3MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ORVZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OSUNFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MzU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05PT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MzgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05PUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1JNQUxfQVJSQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1RFUVVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT19FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkVfTUlOVVNfRFNUX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19EU1RfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FX01JTlVTX1NSQ19BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkVfTUlOVVNfU1JDX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUl9JTlZFUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1JfUkVWRVJTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1VUX09GX01FTU9SWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFDS19BTElHTk1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU0X1I1X0c2X0I1X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU0X1JHQjVfQTFfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURTRfUkdCOF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFNF9SR0JBNF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFNF9SR0JBOF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFOF9SNV9HNl9CNV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFOF9SR0I1X0ExX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU4X1JHQjhfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURThfUkdCQTRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURThfUkdCQThfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEVSU1BFQ1RJVkVfQ09SUkVDVElPTl9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX0ZBREVfVEhSRVNIT0xEX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TTU9PVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NNT09USF9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0xZR09OX09GRlNFVF9GSUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4MjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9MWUdPTl9TTU9PVEhfSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9TSVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1ODg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1FVQURSQVRJQ19BVFRFTlVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVEX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVBFQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDQ5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVBMQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVNDQUxFX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkdCQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0FMUEhBX1RPX09ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9DT1ZFUkFHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NDSVNTT1JfVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TSElOSU5FU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NjMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TTU9PVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NDI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NNT09USF9MSU5FX1dJRFRIX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TTU9PVEhfUE9JTlRfU0laRV9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1BFQ1VMQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NQT1RfQ1VUT0ZGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUE9UX0RJUkVDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1BPVF9FWFBPTkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1JDX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQ19BTFBIQV9TQVRVUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkNfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RBQ0tfT1ZFUkZMT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUQUNLX1VOREVSRkxPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0JVRkZFUl9CSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1VCUElYRUxfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU4OTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTIwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTIxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTIyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTIzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFXzJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NPT1JEX0FSUkFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4ODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9FTlYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4OTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfRU5WX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODcwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0VOVl9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODcwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX01BR19GSUxURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX01JTl9GSUxURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX1dSQVBfUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfV1JBUF9UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVFJJQU5HTEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9UUklBTkdMRV9GQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RSSUFOR0xFX1NUUklQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9UUlVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlBBQ0tfQUxJR05NRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9CWVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9TSE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjgyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9TSE9SVF81XzZfNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNjM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFTkRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSU0lPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfWE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9aRVJPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHTDEwRXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2xRdWVyeU1hdHJpeHhPRVMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFudGlzc2EiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYW50aXNzYU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBvbmVudCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cG9uZW50T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xRdWVyeU1hdHJpeHhPRVMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFudGlzc2EiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwb25lbnQiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkdMMTEiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdsQmluZEJ1ZmZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQnVmZmVyRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2FnZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQnVmZmVyU3ViRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGlwUGxhbmV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcXVhdGlvbiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3I0dWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3JQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlQnVmZmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVCdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdFbGVtZW50cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuQnVmZmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5CdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEJvb2xlYW52IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCb29sZWFudiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QnVmZmVyUGFyYW1ldGVyaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldENsaXBQbGFuZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcW4iIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Q2xpcFBsYW5leCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXFuIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcW4iIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZpeGVkdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRGaXhlZHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RmxvYXR2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RmxvYXR2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TGlnaHRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldExpZ2h0ZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldExpZ2h0eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWxmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWxmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWx4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldE1hdGVyaWFseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRQb2ludGVydiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5CdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEVudml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhFbnZpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4UGFyYW1ldGVyaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJ4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNCdWZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzVGV4dHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTm9ybWFsUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50UGFyYW1ldGVyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50U2l6ZVBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleENvb3JkUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52aXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyeHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfQUNUSVZFX1RFWFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BRERfU0lHTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfU0NBTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBX1RFU1RfRlVOQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfVEVTVF9SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRFNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9TUkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9BQ0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CVUZGRVJfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9VU0FHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NjYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSUVOVF9BQ1RJVkVfVEVYVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSVBfUExBTkUwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xJUF9QTEFORTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTElQX1BMQU5FMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSVBfUExBTkUzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xJUF9QTEFORTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTElQX1BMQU5FNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVJSQVlfUE9JTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWV9TVFJJREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWV9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQ0xFQVJfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX1dSSVRFTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09NQklORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTUJJTkVfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT01CSU5FX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTlNUQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09PUkRfUkVQTEFDRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDkxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVUxMX0ZBQ0VfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1VSUkVOVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4MTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1VSUkVOVF9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NVUlJFTlRfVEVYVFVSRV9DT09SRFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NMRUFSX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9GVU5DIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfV1JJVEVNQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ET1QzX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RPVDNfUkdCQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RZTkFNSUNfRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZST05UX0ZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFTkVSQVRFX01JUE1BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFTkVSQVRFX01JUE1BUF9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5URVJQT0xBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1dJRFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MT0dJQ19PUF9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0NMSVBfUExBTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVdfTUFUUklYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVdfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PREVMVklFV19TVEFDS19ERVBUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX1BPSU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1JNQUxfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUEVSQU5EMF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09QRVJBTkQwX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09QRVJBTkQxX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQyMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1BFUkFORDFfUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1BFUkFORDJfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDIwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUEVSQU5EMl9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9ESVNUQU5DRV9BVFRFTlVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX0ZBREVfVEhSRVNIT0xEX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFX0FSUkFZX0JVRkZFUl9CSU5ESU5HX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU0laRV9BUlJBWV9QT0lOVEVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfU1RSSURFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFX01BWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfTUlOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwNjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU1BSSVRFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJFVklPVVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QUklNQVJZX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJPSkVDVElPTl9NQVRSSVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT05fTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT05fU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQl9TQ0FMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQ0lTU09SX0JPWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVfTU9ERUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzBfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMwX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzFfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMxX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzJfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMyX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUQVRJQ19EUkFXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUwNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0ZVTkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfVkFMVUVfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9XUklURU1BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NVQlRSQUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9CSU5ESU5HXzJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfUE9JTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWV9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9NQVRSSVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWV9QT0lOVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WSUVXUE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV1JJVEVfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkdMMTFFeHQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnbEN1cnJlbnRQYWxldHRlTWF0cml4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXRyaXhwYWxldHRlaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdUZXhmT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4ZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4ZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4aU9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4aXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd1RleGl2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZHMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdUZXhzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4c3ZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4c3ZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iamF2YS5uaW8uU2hvcnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4eE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd1RleHh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZHMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFbmFibGVDbGllbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJpeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdHJpeEluZGV4UG9pbnRlck9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRyaXhJbmRleFBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFdlaWdodFBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsV2VpZ2h0UG9pbnRlck9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkdMX01BVFJJWF9JTkRFWF9BUlJBWV9CVUZGRVJfQklORElOR19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTc0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFUUklYX0lOREVYX0FSUkFZX1BPSU5URVJfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFUUklYX0lOREVYX0FSUkFZX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFUUklYX0lOREVYX0FSUkFZX1NUUklERV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfUEFMRVRURV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfUEFMRVRURV9NQVRSSUNFU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfVkVSVEVYX1VOSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1JPUF9SRUNUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1dFSUdIVF9BUlJBWV9CVUZGRVJfQklORElOR19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDk3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV0VJR0hUX0FSUkFZX1BPSU5URVJfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV0VJR0hUX0FSUkFZX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV0VJR0hUX0FSUkFZX1NUUklERV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHTDExRXh0ZW5zaW9uUGFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdsQmluZEZyYW1lYnVmZmVyT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJpbmRSZW5kZXJidWZmZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJpbmRUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRFcXVhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlUkdCIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVBbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRGdW5jU2VwYXJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyY1JHQiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3RSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjQWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0QWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNPRVMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybmFsZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1hZ2VTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvcHlUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUZyYW1lYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUZyYW1lYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlUmVuZGVyYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFbmFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRhY2htZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlcnRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZyYW1lYnVmZmVyVGV4dHVyZTJET0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuRnJhbWVidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuRnJhbWVidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuUmVuZGVyYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5SZW5kZXJidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlbmVyYXRlTWlwbWFwT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEludGVnZXJ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEludGVnZXJ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4R2VuZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhHZW5mdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzRnJhbWVidWZmZXJPRVMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xJc1JlbmRlcmJ1ZmZlck9FUyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xSZW5kZXJidWZmZXJTdG9yYWdlT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsT3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iemZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ienBhc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZ4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW5mdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEdlbmkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW5pdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW5pdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW54IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VueHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VueHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0RTVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0RTVF9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRVFVQVRJT05fUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5NzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQwX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQxMF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BVFRBQ0hNRU5UMTFfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVRUQUNITUVOVDEyX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQxM19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BVFRBQ0hNRU5UMTRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVRUQUNITUVOVDE1X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQxX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQyX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQzX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ0X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ1X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ2X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ3X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ5X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFQ1JfV1JBUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0FUVEFDSE1FTlRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9DT01QT05FTlQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMTg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NPTVBPTkVOVDI0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UMzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzE5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0JJTkRJTkdfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQ09NUExFVEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RSQVdfQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRk9STUFUU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX1JFQURfQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZVTkNfQUREIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19TVUJUUkFDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOQ1JfV1JBUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUlSUk9SRURfUkVQRUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM2NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX01BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFRkxFQ1RJT05fTUFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JJTkRJTkdfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfSEVJR0hUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9SRURfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9XSURUSF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0I1NjVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxOTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkdCNV9BMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQjgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0JBNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQkE4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVgxX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVg0X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVg4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0dFTl9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTQ3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0dFTl9TVFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgubmV0IgorPgorPGNsYXNzIG5hbWU9IlNlcnZlclNvY2tldEZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmVyU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJqYXZheC5uZXQuU2VydmVyU29ja2V0RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTZXJ2ZXJTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlcnZlclNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNlcnZlclNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlcnZlclNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNlcnZlclNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhY2tsb2ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU2VydmVyU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU2VydmVyU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpQWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJqYXZheC5uZXQuU2VydmVyU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRGYWN0b3J5IgorIHR5cGU9ImphdmF4Lm5ldC5Tb2NrZXRGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEhvc3QiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0IgorIHJldHVybj0iamF2YXgubmV0LlNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgubmV0LnNzbCIKKz4KKzxjbGFzcyBuYW1lPSJDZXJ0UGF0aFRydXN0TWFuYWdlclBhcmFtZXRlcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubmV0LnNzbC5NYW5hZ2VyRmFjdG9yeVBhcmFtZXRlcnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoVHJ1c3RNYW5hZ2VyUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLkNlcnRQYXRoVHJ1c3RNYW5hZ2VyUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoUGFyYW1ldGVycyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIYW5kc2hha2VDb21wbGV0ZWRFdmVudCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuRXZlbnRPYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYW5kc2hha2VDb21wbGV0ZWRFdmVudCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLkhhbmRzaGFrZUNvbXBsZXRlZEV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENpcGhlclN1aXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsUHJpbmNpcGFsIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVlckNlcnRpZmljYXRlQ2hhaW4iCisgcmV0dXJuPSJqYXZheC5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZWVyQ2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJQcmluY2lwYWwiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vzc2lvbiIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb2NrZXQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSGFuZHNoYWtlQ29tcGxldGVkTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkV2ZW50TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJoYW5kc2hha2VDb21wbGV0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJqYXZheC5uZXQuc3NsLkhhbmRzaGFrZUNvbXBsZXRlZEV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSG9zdG5hbWVWZXJpZmllciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdG5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cHNVUkxDb25uZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubmV0Lkh0dHBVUkxDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwc1VSTENvbm5lY3Rpb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5IdHRwc1VSTENvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENpcGhlclN1aXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRIb3N0bmFtZVZlcmlmaWVyIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5Ib3N0bmFtZVZlcmlmaWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFNTTFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0bmFtZVZlcmlmaWVyIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5Ib3N0bmFtZVZlcmlmaWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQ2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJQcmluY2lwYWwiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U1NMU29ja2V0RmFjdG9yeSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2ZXJDZXJ0aWZpY2F0ZXMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0SG9zdG5hbWVWZXJpZmllciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iamF2YXgubmV0LnNzbC5Ib3N0bmFtZVZlcmlmaWVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRTU0xTb2NrZXRGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvc3RuYW1lVmVyaWZpZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZheC5uZXQuc3NsLkhvc3RuYW1lVmVyaWZpZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U1NMU29ja2V0RmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNmIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJob3N0bmFtZVZlcmlmaWVyIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuSG9zdG5hbWVWZXJpZmllciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iS2V5TWFuYWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJLZXlNYW5hZ2VyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5TWFuYWdlckZhY3RvcnkiCisgdHlwZT0iamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnlTcGkiIHR5cGU9ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnlTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleU1hbmFnZXJzIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrcyIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVjIiB0eXBlPSJqYXZheC5uZXQuc3NsLk1hbmFnZXJGYWN0b3J5UGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleU1hbmFnZXJGYWN0b3J5U3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleU1hbmFnZXJGYWN0b3J5U3BpIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnlTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0S2V5TWFuYWdlcnMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLktleU1hbmFnZXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWMiIHR5cGU9ImphdmF4Lm5ldC5zc2wuTWFuYWdlckZhY3RvcnlQYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmVCdWlsZGVyUGFyYW1ldGVycyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5uZXQuc3NsLk1hbmFnZXJGYWN0b3J5UGFyYW1ldGVycyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmVCdWlsZGVyUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLktleVN0b3JlQnVpbGRlclBhcmFtZXRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWlsZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkJ1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlQnVpbGRlclBhcmFtZXRlcnMiCisgdHlwZT0iamF2YXgubmV0LnNzbC5LZXlTdG9yZUJ1aWxkZXJQYXJhbWV0ZXJzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iamF2YS51dGlsLkxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1hbmFnZXJGYWN0b3J5UGFyYW1ldGVycyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTU0xDb250ZXh0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xDb250ZXh0IgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHRTcGkiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dFNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU1NMRW5naW5lIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTU0xFbmdpbmUiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZWVySG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVlclBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGllbnRTZXNzaW9uQ29udGV4dCIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xDb250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2ZXJTZXNzaW9uQ29udGV4dCIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2ZXJTb2NrZXRGYWN0b3J5IgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xTZXJ2ZXJTb2NrZXRGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29ja2V0RmFjdG9yeSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImttIiB0eXBlPSJqYXZheC5uZXQuc3NsLktleU1hbmFnZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG0iIHR5cGU9ImphdmF4Lm5ldC5zc2wuVHJ1c3RNYW5hZ2VyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTENvbnRleHRTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMQ29udGV4dFNwaSIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTENvbnRleHRTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW5naW5lQ3JlYXRlU1NMRW5naW5lIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUNyZWF0ZVNTTEVuZ2luZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0Q2xpZW50U2Vzc2lvbkNvbnRleHQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25Db250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0U2VydmVyU2Vzc2lvbkNvbnRleHQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25Db250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0U2VydmVyU29ja2V0RmFjdG9yeSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2VydmVyU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrbSIgdHlwZT0iamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRtIiB0eXBlPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzciIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTU0xFbmdpbmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMRW5naW5lIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMRW5naW5lIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmVnaW5IYW5kc2hha2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VJbmJvdW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlT3V0Ym91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVsZWdhdGVkVGFzayIKKyByZXR1cm49ImphdmEubGFuZy5SdW5uYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuYWJsZVNlc3Npb25DcmVhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmFibGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5hYmxlZFByb3RvY29scyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhhbmRzaGFrZVN0YXR1cyIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5lZWRDbGllbnRBdXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZWVyUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXNzaW9uIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xTZXNzaW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkUHJvdG9jb2xzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlQ2xpZW50TW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYW50Q2xpZW50QXV0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luYm91bmREb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3V0Ym91bmREb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuYWJsZVNlc3Npb25DcmVhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWl0ZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVkUHJvdG9jb2xzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZWVkQ2xpZW50QXV0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VDbGllbnRNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdhbnRDbGllbnRBdXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3YW50IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVud3JhcCIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lUmVzdWx0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0cyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW53cmFwIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVud3JhcCIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdHMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjcyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyY3MiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMRW5naW5lUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xFbmdpbmVSZXN1bHQiCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lUmVzdWx0LlN0YXR1cyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZHNoYWtlU3RhdHVzIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ5dGVzQ29uc3VtZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZXNQcm9kdWNlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYnl0ZXNDb25zdW1lZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ5dGVzUHJvZHVjZWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIYW5kc2hha2VTdGF0dXMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0dXMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5TdGF0dXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTEVuZ2luZVJlc3VsdC5TdGF0dXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5TdGF0dXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5TdGF0dXNbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xFeGNlcHRpb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xFeGNlcHRpb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTEhhbmRzaGFrZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTEhhbmRzaGFrZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEhhbmRzaGFrZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTEtleUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTEtleUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEtleUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTFBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFBlcm1pc3Npb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMUHJvdG9jb2xFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xQcm90b2NvbEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFByb3RvY29sRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMU2VydmVyU29ja2V0IgorIGV4dGVuZHM9ImphdmEubmV0LlNlcnZlclNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2VydmVyU29ja2V0IgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2VydmVyU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNlcnZlclNvY2tldCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNlcnZlclNvY2tldCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2VydmVyU29ja2V0IgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2VydmVyU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrbG9nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVuYWJsZVNlc3Npb25DcmVhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmFibGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5hYmxlZFByb3RvY29scyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5lZWRDbGllbnRBdXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZENpcGhlclN1aXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZFByb3RvY29scyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZUNsaWVudE1vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FudENsaWVudEF1dGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlU2Vzc2lvbkNyZWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuYWJsZWRDaXBoZXJTdWl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1aXRlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuYWJsZWRQcm90b2NvbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29scyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZWRDbGllbnRBdXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZWVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZUNsaWVudE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FudENsaWVudEF1dGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndhbnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMU2VydmVyU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZheC5uZXQuU2VydmVyU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2VydmVyU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlcnZlclNvY2tldEZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdCIKKyByZXR1cm49ImphdmF4Lm5ldC5TZXJ2ZXJTb2NrZXRGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0Q2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNTTFNlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaXBoZXJTdWl0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDcmVhdGlvblRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXN0QWNjZXNzZWRUaW1lIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQ2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2V0QnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJDZXJ0aWZpY2F0ZUNoYWluIgorIHJldHVybj0iamF2YXguc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZWVyQ2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVlckhvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVlclBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZWVyUHJpbmNpcGFsIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdG9jb2wiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vzc2lvbkNvbnRleHQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25Db250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWVOYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRWYWx1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNTTFNlc3Npb25CaW5kaW5nRXZlbnQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkV2ZW50T2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2Vzc2lvbkJpbmRpbmdFdmVudCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25CaW5kaW5nRXZlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXNzaW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXNzaW9uIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xTZXNzaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTU0xTZXNzaW9uQmluZGluZ0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5FdmVudExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0idmFsdWVCb3VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbkJpbmRpbmdFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZVVuYm91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25CaW5kaW5nRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTU0xTZXNzaW9uQ29udGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldElkcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlc3Npb24iCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vzc2lvbklkIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vzc2lvbkNhY2hlU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlc3Npb25UaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Vzc2lvbkNhY2hlU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Vzc2lvblRpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTU0xTb2NrZXQiCisgZXh0ZW5kcz0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xTb2NrZXQiCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xTb2NrZXQiCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNvY2tldCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xTb2NrZXQiCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsaWVudEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGllbnRQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNvY2tldCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsaWVudEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGllbnRQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGFuZHNoYWtlQ29tcGxldGVkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZheC5uZXQuc3NsLkhhbmRzaGFrZUNvbXBsZXRlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuYWJsZVNlc3Npb25DcmVhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmFibGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5hYmxlZFByb3RvY29scyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5lZWRDbGllbnRBdXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlc3Npb24iCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRDaXBoZXJTdWl0ZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQcm90b2NvbHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VDbGllbnRNb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbnRDbGllbnRBdXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUhhbmRzaGFrZUNvbXBsZXRlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iamF2YXgubmV0LnNzbC5IYW5kc2hha2VDb21wbGV0ZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVTZXNzaW9uQ3JlYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZENpcGhlclN1aXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VpdGVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZFByb3RvY29scyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2xzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmVlZENsaWVudEF1dGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5lZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlQ2xpZW50TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYW50Q2xpZW50QXV0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2FudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEhhbmRzaGFrZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZheC5uZXQuU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvQ2xvc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJqYXZheC5uZXQuU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdENpcGhlclN1aXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZENpcGhlclN1aXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUcnVzdE1hbmFnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVHJ1c3RNYW5hZ2VyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJ1c3RNYW5hZ2VyRmFjdG9yeSIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlckZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5U3BpIiB0eXBlPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlckZhY3RvcnlTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXJGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXJGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlckZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRydXN0TWFuYWdlcnMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia3MiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWMiIHR5cGU9ImphdmF4Lm5ldC5zc2wuTWFuYWdlckZhY3RvcnlQYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHJ1c3RNYW5hZ2VyRmFjdG9yeVNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcnVzdE1hbmFnZXJGYWN0b3J5U3BpIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuVHJ1c3RNYW5hZ2VyRmFjdG9yeVNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRUcnVzdE1hbmFnZXJzIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVjIiB0eXBlPSJqYXZheC5uZXQuc3NsLk1hbmFnZXJGYWN0b3J5UGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ilg1MDlFeHRlbmRlZEtleU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5uZXQuc3NsLlg1MDlLZXlNYW5hZ2VyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5RXh0ZW5kZWRLZXlNYW5hZ2VyIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuWDUwOUV4dGVuZGVkS2V5TWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaG9vc2VFbmdpbmVDbGllbnRBbGlhcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNzdWVycyIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWxbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5naW5lIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaG9vc2VFbmdpbmVTZXJ2ZXJBbGlhcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlcnMiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZ2luZSIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ilg1MDlLZXlNYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNob29zZUNsaWVudEFsaWFzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlcnMiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNob29zZVNlcnZlckFsaWFzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZXJzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrZXQiIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZUNoYWluIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsaWVudEFsaWFzZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNzdWVycyIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWxbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZlckFsaWFzZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNzdWVycyIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWxbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ilg1MDlUcnVzdE1hbmFnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjaGVja0NsaWVudFRydXN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYWluIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrU2VydmVyVHJ1c3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhaW4iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWNjZXB0ZWRJc3N1ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXguc2VjdXJpdHkuYXV0aCIKKz4KKzxjbGFzcyBuYW1lPSJBdXRoUGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aFBlcm1pc3Npb24iCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5BdXRoUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhQZXJtaXNzaW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguQXV0aFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVzdHJveUZhaWxlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVzdHJveUZhaWxlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLkRlc3Ryb3lGYWlsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZXN0cm95RmFpbGVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguRGVzdHJveUZhaWxlZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRGVzdHJveWFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJEZXN0cm95RmFpbGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLkRlc3Ryb3lGYWlsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZXN0cm95ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlByaXZhdGVDcmVkZW50aWFsUGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaXZhdGVDcmVkZW50aWFsUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLlByaXZhdGVDcmVkZW50aWFsUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpb25zIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDcmVkZW50aWFsQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW5jaXBhbHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW11bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsaWVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN1YmplY3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3ViamVjdCIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLlN1YmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdWJqZWN0IgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdWJqUHJpbmNpcGFscyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5QcmluY2lwYWwmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJDcmVkZW50aWFscyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpdkNyZWRlbnRpYWxzIiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZG9BcyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdCIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5TdWJqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0FzIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJqZWN0IiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLlN1YmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkRXhjZXB0aW9uQWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQcml2aWxlZ2VkQWN0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9Bc1ByaXZpbGVnZWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3QiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9Bc1ByaXZpbGVnZWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3QiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmluY2lwYWxzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbmNpcGFscyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlQ3JlZGVudGlhbHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaXZhdGVDcmVkZW50aWFscyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNDcmVkZW50aWFscyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljQ3JlZGVudGlhbHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdCIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYWRPbmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdWJqZWN0RG9tYWluQ29tYmluZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5Eb21haW5Db21iaW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3ViamVjdERvbWFpbkNvbWJpbmVyIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdERvbWFpbkNvbWJpbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdCIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5TdWJqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tYmluZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJyZW50RG9tYWlucyIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFzc2lnbmVkRG9tYWlucyIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdCIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnNlY3VyaXR5LmF1dGguY2FsbGJhY2siCis+Cis8aW50ZXJmYWNlIG5hbWU9IkNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDYWxsYmFja0hhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYW5kbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrcyIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFja1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRDYWxsYmFja0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5VbnN1cHBvcnRlZENhbGxiYWNrRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQYXNzd29yZENhbGxiYWNrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnNlY3VyaXR5LmF1dGguY2FsbGJhY2suQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhc3N3b3JkQ2FsbGJhY2siCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5QYXNzd29yZENhbGxiYWNrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvbXB0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlY2hvT24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhclBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZCIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9tcHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRWNob09uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXNzd29yZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRDYWxsYmFja0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRDYWxsYmFja0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLlVuc3VwcG9ydGVkQ2FsbGJhY2tFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRDYWxsYmFja0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLlVuc3VwcG9ydGVkQ2FsbGJhY2tFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxiYWNrIgorIHJldHVybj0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFjayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnNlY3VyaXR5LmF1dGgubG9naW4iCis+Cis8Y2xhc3MgbmFtZT0iTG9naW5FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dpbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmxvZ2luLkxvZ2luRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9naW5FeGNlcHRpb24iCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5sb2dpbi5Mb2dpbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMCIKKz4KKzxjbGFzcyBuYW1lPSJYNTAwUHJpbmNpcGFsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilg1MDBQcmluY2lwYWwiCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilg1MDBQcmluY2lwYWwiCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWDUwMFByaW5jaXBhbCIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDQU5PTklDQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Q0FOT05JQ0FMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJGQzE3NzkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7UkZDMTc3OSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRkMyMjUzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1JGQzIyNTMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXguc2VjdXJpdHkuY2VydCIKKz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZSIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kZWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0tleSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHVibGljS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHVibGljS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ1Byb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVFeHBpcmVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYNTA5Q2VydGlmaWNhdGUiCisgZXh0ZW5kcz0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWDUwOUNlcnRpZmljYXRlIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoZWNrVmFsaWRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1ZhbGlkaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeHBpcmVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnREYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlckROIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb3RBZnRlciIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Tm90QmVmb3JlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJpYWxOdW1iZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpZ0FsZ05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnQWxnT0lEIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpZ0FsZ1BhcmFtcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RETiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXguc3FsIgorPgorPGNsYXNzIG5hbWU9IkNvbm5lY3Rpb25FdmVudCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuRXZlbnRPYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uRXZlbnQiCisgdHlwZT0iamF2YXguc3FsLkNvbm5lY3Rpb25FdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNvbm5lY3Rpb24iIHR5cGU9ImphdmF4LnNxbC5Qb29sZWRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uRXZlbnQiCisgdHlwZT0iamF2YXguc3FsLkNvbm5lY3Rpb25FdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNvbm5lY3Rpb24iIHR5cGU9ImphdmF4LnNxbC5Qb29sZWRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFNRTEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29ubmVjdGlvbkV2ZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkV2ZW50TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0aW9uQ2xvc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVFdmVudCIgdHlwZT0iamF2YXguc3FsLkNvbm5lY3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0aW9uRXJyb3JPY2N1cnJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRXZlbnQiIHR5cGU9ImphdmF4LnNxbC5Db25uZWN0aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb25uZWN0aW9uUG9vbERhdGFTb3VyY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dXcml0ZXIiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2luVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb29sZWRDb25uZWN0aW9uIgorIHJldHVybj0iamF2YXguc3FsLlBvb2xlZENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9vbGVkQ29ubmVjdGlvbiIKKyByZXR1cm49ImphdmF4LnNxbC5Qb29sZWRDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVVzZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2dXcml0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVdyaXRlciIgdHlwZT0iamF2YS5pby5QcmludFdyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9naW5UaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRGF0YVNvdXJjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb24iCisgcmV0dXJuPSJqYXZhLnNxbC5Db25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb24iCisgcmV0dXJuPSJqYXZhLnNxbC5Db25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVVzZXJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVQYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9nV3JpdGVyIgorIHJldHVybj0iamF2YS5pby5QcmludFdyaXRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dpblRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9nV3JpdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVXcml0ZXIiIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvZ2luVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlBvb2xlZENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRDb25uZWN0aW9uRXZlbnRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTGlzdGVuZXIiIHR5cGU9ImphdmF4LnNxbC5Db25uZWN0aW9uRXZlbnRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLkNvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQ29ubmVjdGlvbkV2ZW50TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUxpc3RlbmVyIiB0eXBlPSJqYXZheC5zcWwuQ29ubmVjdGlvbkV2ZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSb3dTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zcWwuUmVzdWx0U2V0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWRkUm93U2V0TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUxpc3RlbmVyIiB0eXBlPSJqYXZheC5zcWwuUm93U2V0TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYXJhbWV0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21tYW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFTb3VyY2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVzY2FwZVByb2Nlc3NpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEZpZWxkU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhSb3dzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXJ5VGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2FjdGlvbklzb2xhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VybmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWRPbmx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVJvd1NldExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVMaXN0ZW5lciIgdHlwZT0iamF2YXguc3FsLlJvd1NldExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVBcnJheSIgdHlwZT0iamF2YS5zcWwuQXJyYXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFzY2lpU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVJbnB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJpZ0RlY2ltYWwiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCaW5hcnlTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmxvYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQmxvYiIgdHlwZT0iamF2YS5zcWwuQmxvYiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQm9vbGVhbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQnl0ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJ5dGVBcnJheSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVJlYWRlciIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVDbG9iIiB0eXBlPSJqYXZhLnNxbC5DbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21tYW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbmN1cnJlbmN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25jdXJyZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhU291cmNlTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF0ZSIgdHlwZT0iamF2YS5zcWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF0ZSIgdHlwZT0iamF2YS5zcWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQ2FsZW5kYXIiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVEb3VibGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXNjYXBlUHJvY2Vzc2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRmxvYXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUludGVnZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTG9uZyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4RmllbGRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4Um93cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TnVsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVPYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlT2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRTcWxUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlT2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRTcWxUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UXVlcnlUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYWRPbmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkT25seSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWYiIHR5cGU9ImphdmEuc3FsLlJlZiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNob3J0IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWUiIHR5cGU9ImphdmEuc3FsLlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWUiIHR5cGU9ImphdmEuc3FsLlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNhbGVuZGFyIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNhbGVuZGFyIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRyYW5zYWN0aW9uSXNvbGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFR5cGVNYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVR5cGVNYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVVUkwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZXJuYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVVc2VybmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJvd1NldEV2ZW50IgorIGV4dGVuZHM9ImphdmEudXRpbC5FdmVudE9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvd1NldEV2ZW50IgorIHR5cGU9ImphdmF4LnNxbC5Sb3dTZXRFdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNvdXJjZSIgdHlwZT0iamF2YXguc3FsLlJvd1NldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJSb3dTZXRJbnRlcm5hbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb24iCisgcmV0dXJuPSJqYXZhLnNxbC5Db25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmFsIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmFsUm93IgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXRhRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTWV0YURhdGEiIHR5cGU9ImphdmF4LnNxbC5Sb3dTZXRNZXRhRGF0YSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSb3dTZXRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImN1cnNvck1vdmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVFdmVudCIgdHlwZT0iamF2YXguc3FsLlJvd1NldEV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvd0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUV2ZW50IiB0eXBlPSJqYXZheC5zcWwuUm93U2V0RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm93U2V0Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRXZlbnQiIHR5cGU9ImphdmF4LnNxbC5Sb3dTZXRFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJvd1NldE1ldGFEYXRhIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc3FsLlJlc3VsdFNldE1ldGFEYXRhIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0ic2V0QXV0b0luY3JlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b0luY3JlbWVudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FzZVNlbnNpdGl2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FzZVNlbnNpdGl2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2F0YWxvZ05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2dOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5Db3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uRGlzcGxheVNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXlTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbHVtbkxhYmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVMYWJlbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQ29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU1FMVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5UeXBlTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVHlwZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbmN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0N1cnJlbmN5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROdWxsYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVsbGFiaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJlY2lzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVQcmVjaXNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjaGVtYU5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNjaGVtYU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlYXJjaGFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU2VhcmNoYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2lnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc1NpZ25lZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFibGVOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUYWJsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUm93U2V0UmVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icmVhZERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNhbGxlciIgdHlwZT0iamF2YXguc3FsLlJvd1NldEludGVybmFsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJvd1NldFdyaXRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9IndyaXRlRGF0YSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlUm93U2V0IiB0eXBlPSJqYXZheC5zcWwuUm93U2V0SW50ZXJuYWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnhtbCIKKz4KKzxjbGFzcyBuYW1lPSJYTUxDb25zdGFudHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9OU19QUkVGSVgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfU0VDVVJFX1BST0NFU1NJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmF4LnhtbC5YTUxDb25zdGFudHMvZmVhdHVyZS9zZWN1cmUtcHJvY2Vzc2luZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVUxMX05TX1VSSSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDsmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVMQVhOR19OU19VUkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3JlbGF4bmcub3JnL25zL3N0cnVjdHVyZS8xLjAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVzNDX1hNTF9TQ0hFTUFfSU5TVEFOQ0VfTlNfVVJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlczQ19YTUxfU0NIRU1BX05TX1VSSSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXM0NfWFBBVEhfREFUQVRZUEVfTlNfVVJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDMvMTEveHBhdGgtZGF0YXR5cGVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlhNTE5TX0FUVFJJQlVURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt4bWxucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJYTUxOU19BVFRSSUJVVEVfTlNfVVJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlhNTF9EVERfTlNfVVJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWE1MX05TX1BSRUZJWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt4bWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWE1MX05TX1VSSSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgueG1sLmRhdGF0eXBlIgorPgorPGNsYXNzIG5hbWU9IkRhdGF0eXBlQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhdHlwZUNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkRhdGF0eXBlQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGF0eXBlQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGF0eXBlQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhdHlwZUNvbnN0YW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJBUFJJTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVHVVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFURVRJTUUiCisgdHlwZT0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlTIgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUNvbnN0YW50cy5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUNFTUJFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRVUkFUSU9OIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFVSQVRJT05fREFZVElNRSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRVUkFUSU9OX1lFQVJNT05USCIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVRVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUJSVUFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklFTERfVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIxNDc0ODM2NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0RBWSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdNT05USCIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdNT05USERBWSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSRUFURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdZRUFSIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1lFQVJNT05USCIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVJTIgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUNvbnN0YW50cy5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTkRFVEVSTUlOQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKQU5VQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVUxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRVNTRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVJDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1RJTUVaT05FX09GRlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii04NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5VVEVTIgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUNvbnN0YW50cy5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5fVElNRVpPTkVfT0ZGU0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIUyIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25zdGFudHMuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9WRU1CRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPQ1RPQkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EUyIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25zdGFudHMuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VQVEVNQkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSU1FIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUlMiCisgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkRhdGF0eXBlQ29uc3RhbnRzLkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhdHlwZUNvbnN0YW50cy5GaWVsZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhdHlwZUZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YXR5cGVGYWN0b3J5IgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb24iCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV4aWNhbFJlcHJlc2VudGF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uSW5NaWxsaVNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb24iCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNQb3NpdGl2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhcnMiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aHMiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG91cnMiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGVzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kcyIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb24iCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUG9zaXRpdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRocyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uRGF5VGltZSIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV4aWNhbFJlcHJlc2VudGF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uRGF5VGltZSIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEdXJhdGlvbkRheVRpbWUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUG9zaXRpdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uRGF5VGltZSIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNQb3NpdGl2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uWWVhck1vbnRoIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXhpY2FsUmVwcmVzZW50YXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb25ZZWFyTW9udGgiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uSW5NaWxsaXNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb25ZZWFyTW9udGgiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUG9zaXRpdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb25ZZWFyTW9udGgiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUG9zaXRpdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3WE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV4aWNhbFJlcHJlc2VudGF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG91ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWN0aW9uYWxTZWNvbmQiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3VyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdYTUxHcmVnb3JpYW5DYWxlbmRhckRhdGUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3WE1MR3JlZ29yaWFuQ2FsZW5kYXJUaW1lIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3VycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdYTUxHcmVnb3JpYW5DYWxlbmRhclRpbWUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFjdGlvbmFsU2Vjb25kIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdYTUxHcmVnb3JpYW5DYWxlbmRhclRpbWUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXNlY29uZHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRBVEFUWVBFRkFDVE9SWV9JTVBMRU1FTlRBVElPTl9DTEFTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFUWVBFRkFDVE9SWV9QUk9QRVJUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVGYWN0b3J5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEdXJhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEdXJhdGlvbiIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJocyIgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxlbmRhciIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERheXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmllbGQiCisgcmV0dXJuPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25zdGFudHMuRmllbGQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG91cnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWludXRlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb250aHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vjb25kcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZUluTWlsbGlzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRJbnN0YW50IiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZUluTWlsbGlzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRJbnN0YW50IiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYTUxTY2hlbWFUeXBlIgorIHJldHVybj0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZZWFycyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG9uZ2VyVGhhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25zdGFudHMuRmllbGQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaG9ydGVyVGhhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXVsdGlwbHkiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im11bHRpcGx5IgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmVnYXRlIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9ybWFsaXplV2l0aCIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydFRpbWVJbnN0YW50IiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VidHJhY3QiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJocyIgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhtbEdyZWdvcmlhbkNhbGVuZGFyIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW9uIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFb25BbmRZZWFyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGcmFjdGlvbmFsU2Vjb25kIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3VyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWlsbGlzZWNvbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWludXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9udGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWNvbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lWm9uZSIKKyByZXR1cm49ImphdmEudXRpbC5UaW1lWm9uZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0Wm9uZW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWV6b25lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WE1MU2NoZW1hVHlwZSIKKyByZXR1cm49ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZZWFyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3JtYWxpemUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyYWN0aW9uYWxTZWNvbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWN0aW9uYWwiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvdXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaWxsaXNlY29uZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW51dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1vbnRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY29uZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3VyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhY3Rpb25hbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWV6b25lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRZZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRZZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9HcmVnb3JpYW5DYWxlbmRhciIKKyByZXR1cm49ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvR3JlZ29yaWFuQ2FsZW5kYXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImphdmEudXRpbC5UaW1lWm9uZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYUxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdHMiIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5YTUxHcmVnb3JpYW5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1hNTEZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnhtbC5uYW1lc3BhY2UiCis+Cis8aW50ZXJmYWNlIG5hbWU9Ik5hbWVzcGFjZUNvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2VVUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmaXgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmaXhlcyIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlFOYW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRTmFtZSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBhcnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlFOYW1lIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsUGFydCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRTmFtZSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxQYXJ0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3RUb1Rlc3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQYXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2VVUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZUFzU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgueG1sLnBhcnNlcnMiCis+Cis8Y2xhc3MgbmFtZT0iRG9jdW1lbnRCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRvY3VtZW50QnVpbGRlciIKKyB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RE9NSW1wbGVtZW50YXRpb24iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01JbXBsZW1lbnRhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hbWVzcGFjZUF3YXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWRhdGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1hJbmNsdWRlQXdhcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0RvY3VtZW50IgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRvY3VtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVudGl0eVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlaCIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRvY3VtZW50QnVpbGRlckZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSIKKyB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1hIgorIHJldHVybj0iamF2YXgueG1sLnZhbGlkYXRpb24uU2NoZW1hIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29hbGVzY2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFeHBhbmRFbnRpdHlSZWZlcmVuY2VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lnbm9yaW5nQ29tbWVudHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSWdub3JpbmdFbGVtZW50Q29udGVudFdoaXRlc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTmFtZXNwYWNlQXdhcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWRhdGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNYSW5jbHVkZUF3YXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEb2N1bWVudEJ1aWxkZXIiCisgcmV0dXJuPSJqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29hbGVzY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvYWxlc2NpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhwYW5kRW50aXR5UmVmZXJlbmNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGFuZEVudGl0eVJlZiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJZ25vcmluZ0NvbW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWdub3JlQ29tbWVudHMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWdub3JpbmdFbGVtZW50Q29udGVudFdoaXRlc3BhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGl0ZXNwYWNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWVzcGFjZUF3YXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXdhcmVuZXNzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjaGVtYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYSIgdHlwZT0iamF2YXgueG1sLnZhbGlkYXRpb24uU2NoZW1hIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbGlkYXRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZGF0aW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFhJbmNsdWRlQXdhcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5FcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5GYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5GYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RXhjZXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTQVhQYXJzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYUGFyc2VyIgorIHR5cGU9ImphdmF4LnhtbC5wYXJzZXJzLlNBWFBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJzZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5QYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYTUxSZWFkZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOYW1lc3BhY2VBd2FyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZhbGlkYXRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNYSW5jbHVkZUF3YXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYiIgdHlwZT0ib3JnLnhtbC5zYXguSGFuZGxlckJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYiIgdHlwZT0ib3JnLnhtbC5zYXguSGFuZGxlckJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGgiIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaCIgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGIiIHR5cGU9Im9yZy54bWwuc2F4LkhhbmRsZXJCYXNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRoIiB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhiIiB0eXBlPSJvcmcueG1sLnNheC5IYW5kbGVyQmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaCIgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYiIgdHlwZT0ib3JnLnhtbC5zYXguSGFuZGxlckJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGgiIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTQVhQYXJzZXJGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWFBhcnNlckZhY3RvcnkiCisgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuU0FYUGFyc2VyRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWEiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWEiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOYW1lc3BhY2VBd2FyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZGF0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1hJbmNsdWRlQXdhcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YXgueG1sLnBhcnNlcnMuU0FYUGFyc2VyRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NBWFBhcnNlciIKKyByZXR1cm49ImphdmF4LnhtbC5wYXJzZXJzLlNBWFBhcnNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmFtZXNwYWNlQXdhcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhd2FyZW5lc3MiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NoZW1hIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWEiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmFsaWRhdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkYXRpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0WEluY2x1ZGVBd2FyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybSIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iRXJyb3JMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVHJhbnNmb3JtZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iT3V0cHV0S2V5cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQ0RBVEFfU0VDVElPTl9FTEVNRU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjZGF0YS1zZWN0aW9uLWVsZW1lbnRzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1RZUEVfUFVCTElDIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RvY3R5cGUtcHVibGljJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1RZUEVfU1lTVEVNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RvY3R5cGUtc3lzdGVtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2VuY29kaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOREVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbmRlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVESUFfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttZWRpYS10eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEhPRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttZXRob2QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT01JVF9YTUxfREVDTEFSQVRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7b21pdC14bWwtZGVjbGFyYXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBTkRBTE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdGFuZGFsb25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZFUlNJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmVyc2lvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlJlc3VsdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlBJX0RJU0FCTEVfT1VUUFVUX0VTQ0FQSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2phdmF4LnhtbC50cmFuc2Zvcm0uZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUElfRU5BQkxFX09VVFBVVF9FU0NBUElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtqYXZheC54bWwudHJhbnNmb3JtLmVuYWJsZS1vdXRwdXQtZXNjYXBpbmcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU291cmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU291cmNlTG9jYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbk51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVOdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1JZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRlbXBsYXRlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE91dHB1dFByb3BlcnRpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuUHJvcGVydGllcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RyYW5zZm9ybWVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJUcmFuc2Zvcm1lciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lciIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUGFyYW1ldGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckxpc3RlbmVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5FcnJvckxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0UHJvcGVydGllcyIKKyByZXR1cm49ImphdmEudXRpbC5Qcm9wZXJ0aWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJJUmVzb2x2ZXIiCisgcmV0dXJuPSJqYXZheC54bWwudHJhbnNmb3JtLlVSSVJlc29sdmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLkVycm9yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXRQcm9wZXJ0aWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZm9ybWF0IiB0eXBlPSJqYXZhLnV0aWwuUHJvcGVydGllcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXRQcm9wZXJ0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVSSVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5VUklSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2Zvcm0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhtbFNvdXJjZSIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dFRhcmdldCIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5SZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2VMb2NhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZUxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZUxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFeGNlcHRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0aW9uQXNTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0b3IiCisgcmV0dXJuPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZUxvY2F0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZUFuZExvY2F0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUcmFuc2Zvcm1lckZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJGYWN0b3J5IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFzc29jaWF0ZWRTdHlsZXNoZWV0IgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVkaWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckxpc3RlbmVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5FcnJvckxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUklSZXNvbHZlciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uVVJJUmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VGVtcGxhdGVzIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5UZW1wbGF0ZXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdUcmFuc2Zvcm1lciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdUcmFuc2Zvcm1lciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLkVycm9yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJJUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlVSSVJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlVSSVJlc29sdmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZSIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhyZWYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uZG9tIgorPgorPGludGVyZmFjZSBuYW1lPSJET01Mb2NhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlTG9jYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmF0aW5nTm9kZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRE9NUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uUmVzdWx0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJET01SZXN1bHQiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NUmVzdWx0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRE9NUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5vZGUiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRPTVJlc3VsdCIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01SZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRE9NUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5vZGUiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5leHRTaWJsaW5nIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJET01SZXN1bHQiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NUmVzdWx0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9kZSIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV4dFNpYmxpbmciIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dFNpYmxpbmciCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0U2libGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5leHRTaWJsaW5nIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly9qYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01SZXN1bHQvZmVhdHVyZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRE9NU291cmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJET01Tb3VyY2UiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRE9NU291cmNlIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRPTVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JRCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9kZSIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTeXN0ZW1JZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlEIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlL2ZlYXR1cmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zYXgiCis+Cis8Y2xhc3MgbmFtZT0iU0FYUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uUmVzdWx0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhSZXN1bHQiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zYXguU0FYUmVzdWx0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExleGljYWxIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGV4aWNhbEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFJlc3VsdC9mZWF0dXJlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTQVhTb3VyY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWFNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnNheC5TQVhTb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhTb3VyY2UiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zYXguU0FYU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZGVyIiB0eXBlPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYU291cmNlIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U291cmNlIgorIHJldHVybj0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhNTFJlYWRlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlhNTFJlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnB1dFNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTeXN0ZW1JZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFhNTFJlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRlciIgdHlwZT0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvdXJjZVRvSW5wdXRTb3VyY2UiCisgcmV0dXJuPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vamF2YXgueG1sLnRyYW5zZm9ybS5zYXguU0FYU291cmNlL2ZlYXR1cmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNBWFRyYW5zZm9ybWVyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYVHJhbnNmb3JtZXJGYWN0b3J5IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFRyYW5zZm9ybWVyRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdUZW1wbGF0ZXNIYW5kbGVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5zYXguVGVtcGxhdGVzSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RyYW5zZm9ybWVySGFuZGxlciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlRyYW5zZm9ybWVySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RyYW5zZm9ybWVySGFuZGxlciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlRyYW5zZm9ybWVySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZXMiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RyYW5zZm9ybWVySGFuZGxlciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlRyYW5zZm9ybWVySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEZpbHRlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlhNTEZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEZpbHRlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlhNTEZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZXMiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vamF2YXgueG1sLnRyYW5zZm9ybS5zYXguU0FYVHJhbnNmb3JtZXJGYWN0b3J5L2ZlYXR1cmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9YTUxGSUxURVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFRyYW5zZm9ybWVyRmFjdG9yeS9mZWF0dXJlL3htbGZpbHRlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRlbXBsYXRlc0hhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1JZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZW1wbGF0ZXMiCisgcmV0dXJuPSJqYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JRCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRyYW5zZm9ybWVySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRyYW5zZm9ybWVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc3VsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JRCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbSIKKz4KKzxjbGFzcyBuYW1lPSJTdHJlYW1SZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybS5SZXN1bHQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVJlc3VsdCIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJlYW1SZXN1bHQiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlciIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVJlc3VsdCIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE91dHB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcml0ZXIiCisgcmV0dXJuPSJqYXZhLmlvLldyaXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXRTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRTdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V3JpdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVyIiB0eXBlPSJqYXZhLmlvLldyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdC9mZWF0dXJlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJlYW1Tb3VyY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJlYW1Tb3VyY2UiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRTdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkZXIiIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJlYW1Tb3VyY2UiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZGVyIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtU291cmNlIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhZGVyIgorIHJldHVybj0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElucHV0U3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRTdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHVibGljSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkZXIiIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly9qYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UvZmVhdHVyZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZheC54bWwudmFsaWRhdGlvbiIKKz4KKzxjbGFzcyBuYW1lPSJTY2hlbWEiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZW1hIgorIHR5cGU9ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdWYWxpZGF0b3IiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5WYWxpZGF0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdWYWxpZGF0b3JIYW5kbGVyIgorIHJldHVybj0iamF2YXgueG1sLnZhbGlkYXRpb24uVmFsaWRhdG9ySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNjaGVtYUZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZW1hRmFjdG9yeSIKKyB0eXBlPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWFGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVycm9ySGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkVycm9ySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlUmVzb2x2ZXIiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5scy5MU1Jlc291cmNlUmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NjaGVtYUxhbmd1YWdlU3VwcG9ydGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFMYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFMYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTY2hlbWEiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWEiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYSIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFzIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTY2hlbWEiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWEiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvckhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkVycm9ySGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXNvdXJjZVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZVJlc29sdmVyIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU1Jlc291cmNlUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NoZW1hRmFjdG9yeUxvYWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2hlbWFGYWN0b3J5TG9hZGVyIgorIHR5cGU9ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYUZhY3RvcnlMb2FkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3RmFjdG9yeSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYUZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hTGFuZ3VhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHlwZUluZm9Qcm92aWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUeXBlSW5mb1Byb3ZpZGVyIgorIHR5cGU9ImphdmF4LnhtbC52YWxpZGF0aW9uLlR5cGVJbmZvUHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlVHlwZUluZm8iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5UeXBlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRUeXBlSW5mbyIKKyByZXR1cm49Im9yZy53M2MuZG9tLlR5cGVJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJZEF0dHJpYnV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwZWNpZmllZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWYWxpZGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmFsaWRhdG9yIgorIHR5cGU9ImphdmF4LnhtbC52YWxpZGF0aW9uLlZhbGlkYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZVJlc29sdmVyIgorIHJldHVybj0ib3JnLnczYy5kb20ubHMuTFNSZXNvdXJjZVJlc29sdmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvckhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkVycm9ySGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXNvdXJjZVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZVJlc29sdmVyIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU1Jlc291cmNlUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5SZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWYWxpZGF0b3JIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZhbGlkYXRvckhhbmRsZXIiCisgdHlwZT0iamF2YXgueG1sLnZhbGlkYXRpb24uVmFsaWRhdG9ySGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50SGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VSZXNvbHZlciIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTUmVzb3VyY2VSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVJbmZvUHJvdmlkZXIiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5UeXBlSW5mb1Byb3ZpZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9ySGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc291cmNlUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlUmVzb2x2ZXIiIHR5cGU9Im9yZy53M2MuZG9tLmxzLkxTUmVzb3VyY2VSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnhtbC54cGF0aCIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iWFBhdGgiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb21waWxlIgorIHJldHVybj0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHByZXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXZhbHVhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHJlc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW0iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldHVyblR5cGUiIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJldmFsdWF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwcmVzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV2YWx1YXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHByZXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXR1cm5UeXBlIiB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXZhbHVhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHJlc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2VDb250ZXh0IgorIHJldHVybj0iamF2YXgueG1sLm5hbWVzcGFjZS5OYW1lc3BhY2VDb250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WFBhdGhGdW5jdGlvblJlc29sdmVyIgorIHJldHVybj0iamF2YXgueG1sLnhwYXRoLlhQYXRoRnVuY3Rpb25SZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhQYXRoVmFyaWFibGVSZXNvbHZlciIKKyByZXR1cm49ImphdmF4LnhtbC54cGF0aC5YUGF0aFZhcmlhYmxlUmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW1lc3BhY2VDb250ZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuc0NvbnRleHQiIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuTmFtZXNwYWNlQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYUGF0aEZ1bmN0aW9uUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGdW5jdGlvblJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFhQYXRoVmFyaWFibGVSZXNvbHZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aFZhcmlhYmxlUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlhQYXRoQ29uc3RhbnRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJCT09MRUFOIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9NX09CSkVDVF9NT0RFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vamF2YS5zdW4uY29tL2pheHAveHBhdGgvZG9tJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PREUiCisgdHlwZT0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT0RFU0VUIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSSU5HIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlhQYXRoRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJYUGF0aEV4cHJlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJldmFsdWF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmV0dXJuVHlwZSIgdHlwZT0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV2YWx1YXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXZhbHVhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldHVyblR5cGUiIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJldmFsdWF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWFBhdGhGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlhQYXRoRmFjdG9yeSIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRmFjdG9yeUNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT2JqZWN0TW9kZWxTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdE1vZGVsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YXgueG1sLnhwYXRoLlhQYXRoRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC54cGF0aC5YUGF0aEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5Q2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc0xvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdYUGF0aCIKKyByZXR1cm49ImphdmF4LnhtbC54cGF0aC5YUGF0aCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYUGF0aEZ1bmN0aW9uUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGdW5jdGlvblJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFhQYXRoVmFyaWFibGVSZXNvbHZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aFZhcmlhYmxlUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX09CSkVDVF9NT0RFTF9VUkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmEuc3VuLmNvbS9qYXhwL3hwYXRoL2RvbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1BST1BFUlRZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7amF2YXgueG1sLnhwYXRoLlhQYXRoRmFjdG9yeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZheC54bWwueHBhdGguWFBhdGhFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlhQYXRoRnVuY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJldmFsdWF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS51dGlsLkxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRnVuY3Rpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEZ1bmN0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJYUGF0aEZ1bmN0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEZ1bmN0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEZ1bmN0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWFBhdGhGdW5jdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGdW5jdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlhQYXRoRnVuY3Rpb25SZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVGdW5jdGlvbiIKKyByZXR1cm49ImphdmF4LnhtbC54cGF0aC5YUGF0aEZ1bmN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmN0aW9uTmFtZSIgdHlwZT0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlhQYXRoVmFyaWFibGVSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVWYXJpYWJsZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFyaWFibGVOYW1lIiB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Imp1bml0LmZyYW1ld29yayIKKz4KKzxjbGFzcyBuYW1lPSJBc3NlcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzc2VydCIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEZhbHNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RmFsc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3ROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90TnVsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE5vdFNhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90U2FtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0TnVsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydFNhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0U2FtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRUcnVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0VHJ1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhaWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmFpbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3NlcnRpb25GYWlsZWRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25GYWlsZWRFcnJvciIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25GYWlsZWRFcnJvciIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29tcGFyaXNvbkZhaWx1cmUiCisgZXh0ZW5kcz0ianVuaXQuZnJhbWV3b3JrLkFzc2VydGlvbkZhaWxlZEVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcGFyaXNvbkZhaWx1cmUiCisgdHlwZT0ianVuaXQuZnJhbWV3b3JrLkNvbXBhcmlzb25GYWlsdXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQcm90ZWN0YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InByb3RlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb3VudFRlc3RDYXNlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGVzdENhc2UiCisgZXh0ZW5kcz0ianVuaXQuZnJhbWV3b3JrLkFzc2VydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdENhc2UiCisgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdENhc2UiCisgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvdW50VGVzdENhc2VzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVJlc3VsdCIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuQmFyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5UZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iVGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRlYXJEb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRlc3RGYWlsdXJlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0RmFpbHVyZSIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdEZhaWx1cmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWlsZWRUZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3duRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXhjZXB0aW9uTWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmFpbGVkVGVzdCIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmFpbHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGhyb3duRXhjZXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFjZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJmRmFpbGVkVGVzdCIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZUaHJvd25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVGVzdExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEZhaWx1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0aW9uRmFpbGVkRXJyb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGVzdFJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdFJlc3VsdCIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRFcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRmFpbHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9Imp1bml0LmZyYW1ld29yay5Bc3NlcnRpb25GYWlsZWRFcnJvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcnJvcnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmYWlsdXJlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmYWlsdXJlcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5Qcm90ZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlByb3RlY3RhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZFN0b3AiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXNTdWNjZXNzZnVsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iZkVycm9ycyIKKyB0eXBlPSJqYXZhLnV0aWwuVmVjdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZkZhaWx1cmVzIgorIHR5cGU9ImphdmEudXRpbC5WZWN0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmTGlzdGVuZXJzIgorIHR5cGU9ImphdmEudXRpbC5WZWN0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmUnVuVGVzdHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRlc3RTdWl0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdFN1aXRlIgorIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0U3VpdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0U3VpdGUiCisgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRlc3RTdWl0ZSIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdFN1aXRlIgorIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0U3VpdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRlc3RTdWl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3RDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvdW50VGVzdENhc2VzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVRlc3QiCisgcmV0dXJuPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRlc3RDb25zdHJ1Y3RvciIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1blRlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0QXQiCisgcmV0dXJuPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqdW5pdC5ydW5uZXIiCis+Cis8Y2xhc3MgbmFtZT0iQmFzZVRlc3RSdW5uZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqdW5pdC5mcmFtZXdvcmsuVGVzdExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNlVGVzdFJ1bm5lciIKKyB0eXBlPSJqdW5pdC5ydW5uZXIuQmFzZVRlc3RSdW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEZhaWx1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0aW9uRmFpbGVkRXJyb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJTdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsYXBzZWRUaW1lQXNTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJydW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFRlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dHJhY3RDbGFzc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsdGVyZWRUcmFjZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWx0ZXJlZFRyYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2FkZXIiCisgcmV0dXJuPSJqdW5pdC5ydW5uZXIuVGVzdFN1aXRlTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcmVuY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJlbmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGZsdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcmVuY2VzIgorIHJldHVybj0iamF2YS51dGlsLlByb3BlcnRpZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXN0IgorIHJldHVybj0ianVuaXQuZnJhbWV3b3JrLlRlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1aXRlQ2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluVkFKYXZhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRTdWl0ZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWl0ZUNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc0FyZ3VtZW50cyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5GYWlsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZVByZWZlcmVuY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2FkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZWZlcmVuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZWZlcmVuY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlcyIgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd1N0YWNrUmF3IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0VGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdEVuZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0RmFpbGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdFN0YXJ0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRydW5jYXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZVJlbG9hZGluZ1Rlc3RTdWl0ZUxvYWRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJTVUlURV9NRVRIT0ROQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1aXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVGVzdFN1aXRlTG9hZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWl0ZUNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsb2FkIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVmVyc2lvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmciCis+Cis8aW50ZXJmYWNlIG5hbWU9IkxvZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRlYnVnIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlYnVnIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzAiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlYnVnRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Vycm9yRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZhdGFsRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luZm9FbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVHJhY2VFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV2FybkVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzAiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzAiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzEiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXJuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cCIKKz4KKzxjbGFzcyBuYW1lPSJDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Db25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb25uZWN0aW9uUmV1c2VTdHJhdGVneSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImtlZXBBbGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkZvcm1hdHRlZEhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0QnVmZmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWVQb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIZWFkZXJFbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckJ5TmFtZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSGVhZGVyRWxlbWVudEl0ZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9Imhhc05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEVsZW1lbnQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSGVhZGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkl0ZXJhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cENsaWVudENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVzcG9uc2VBdmFpbGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjZWl2ZVJlc3BvbnNlRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmVSZXNwb25zZUhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRSZXF1ZXN0RW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVxdWVzdEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uTWV0cmljcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldFRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cENvbm5lY3Rpb25NZXRyaWNzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlY2VpdmVkQnl0ZXNDb3VudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0Q291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzcG9uc2VDb3VudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW50Qnl0ZXNDb3VudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb25zdW1lQ29udGVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50RW5jb2RpbmciCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NodW5rZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyZWFtaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZXhwZWN0Q29udGludWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50aXR5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cEhvc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwSG9zdCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0bmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBIb3N0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3RuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBIb3N0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3RuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwSG9zdCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJodHRwaG9zdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3ROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvSG9zdFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TQ0hFTUVfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imhvc3RuYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxjSG9zdG5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9ydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjaGVtZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJIdHRwSW5ldENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNIZWFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsSGVhZGVycyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpcnN0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlYWRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXN0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkZXJJdGVyYXRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhlYWRlckl0ZXJhdG9yIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckl0ZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBSZXF1ZXN0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im5ld0h0dHBSZXF1ZXN0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RsaW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVxdWVzdCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWV0aG9kTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTWV0aG9kTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlcXVlc3RJbnRlcmNlcHRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RW50aXR5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzTGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYXNvblBocmFzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzQ29kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzbGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBSZXNwb25zZUZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVzcG9uc2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVzcG9uc2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c2xpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwUmVzcG9uc2VJbnRlcmNlcHRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBTZXJ2ZXJDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwQ29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlUmVxdWVzdEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjZWl2ZVJlcXVlc3RIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRSZXNwb25zZUVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVzcG9uc2VIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwU3RhdHVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJTQ19BQ0NFUFRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19CQURfR0FURVdBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19CQURfUkVRVUVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19DT05GTElDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19DT05USU5VRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19DUkVBVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0VYUEVDVEFUSU9OX0ZBSUxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19GQUlMRURfREVQRU5ERU5DWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19GT1JCSURERU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfR0FURVdBWV9USU1FT1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0dPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfSU5TVUZGSUNJRU5UX1NQQUNFX09OX1JFU09VUkNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0lOU1VGRklDSUVOVF9TVE9SQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0lOVEVSTkFMX1NFUlZFUl9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19MRU5HVEhfUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfTE9DS0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX01FVEhPRF9GQUlMVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX01FVEhPRF9OT1RfQUxMT1dFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19NT1ZFRF9QRVJNQU5FTlRMWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19NT1ZFRF9URU1QT1JBUklMWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19NVUxUSVBMRV9DSE9JQ0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX01VTFRJX1NUQVRVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19OT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19OT1RfQUNDRVBUQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19OT1RfRk9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfTk9UX0lNUExFTUVOVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX05PVF9NT0RJRklFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19OT19DT05URU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1BBUlRJQUxfQ09OVEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19QQVlNRU5UX1JFUVVJUkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1BSRUNPTkRJVElPTl9GQUlMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfUFJPQ0VTU0lORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19QUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1JFUVVFU1RfVElNRU9VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19SRVFVRVNUX1RPT19MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1JFUVVFU1RfVVJJX1RPT19MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1JFU0VUX0NPTlRFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfU0VFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1NFUlZJQ0VfVU5BVkFJTEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfU1dJVENISU5HX1BST1RPQ09MUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19URU1QT1JBUllfUkVESVJFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfVU5BVVRIT1JJWkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1VOUFJPQ0VTU0FCTEVfRU5USVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1VOU1VQUE9SVEVEX01FRElBX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfVVNFX1BST1hZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cFZlcnNpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFZlcnNpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBWZXJzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFqb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlub3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iSFRUUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtIVFRQJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfMF85IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwVmVyc2lvbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQXzFfMCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFZlcnNpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF8xXzEiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBWZXJzaW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWxmb3JtZWRDaHVua0NvZGluZ0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFsZm9ybWVkQ2h1bmtDb2RpbmdFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1hbGZvcm1lZENodW5rQ29kaW5nRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFsZm9ybWVkQ2h1bmtDb2RpbmdFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1hbGZvcm1lZENodW5rQ29kaW5nRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTWV0aG9kTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWV0aG9kTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5NZXRob2ROb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJOYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTm9IdHRwUmVzcG9uc2VFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vSHR0cFJlc3BvbnNlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Ob0h0dHBSZXNwb25zZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm90b2NvbEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdG9jb2xWZXJzaW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sVmVyc2lvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ham9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhhdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JWZXJzaW9uIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFqb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlub3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYWpvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdG9jb2wiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ3JlYXRlckVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGFyYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoYXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVzc0VxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Im1ham9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWlub3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm90b2NvbCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlJlYXNvblBocmFzZUNhdGFsb2ciCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFzb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2MiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSZXF1ZXN0TGluZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJpIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU3RhdHVzTGluZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFzb25QaHJhc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iVG9rZW5JdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuSXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRIdHRwVmVyc2lvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZEh0dHBWZXJzaW9uRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5VbnN1cHBvcnRlZEh0dHBWZXJzaW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRIdHRwVmVyc2lvbkV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuVW5zdXBwb3J0ZWRIdHRwVmVyc2lvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoIgorPgorPGNsYXNzIG5hbWU9IkFVVEgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iUFJPWFlfQVVUSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtQcm94eS1BdXRoZW50aWNhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPWFlfQVVUSF9SRVNQIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1Byb3h5LUF1dGhvcml6YXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV1dXX0FVVEgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7V1dXLUF1dGhlbnRpY2F0ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXV1dfQVVUSF9SRVNQIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0F1dGhvcml6YXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBdXRoU2NoZW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXV0aGVudGljYXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcmVkZW50aWFscyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQ3JlZGVudGlhbHMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRpb25FeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFsbSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGxldGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0aW9uQmFzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc0NoYWxsZW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkF1dGhTY2hlbWVGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBdXRoU2NoZW1lUmVnaXN0cnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aFNjaGVtZVJlZ2lzdHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWVSZWdpc3RyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRoU2NoZW1lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZU5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZUZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXRlbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lRmFjdG9yeSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdXRoU2NvcGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhTY29wZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWxtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhTY29wZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWxtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoU2NvcGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjb3BlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoU2NvcGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjb3BlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aHNjb3BlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYWxtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGF0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTlkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjb3BlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFOWV9IT1NUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU5ZX1BPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTllfUkVBTE0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTllfU0NIRU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF1dGhTdGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aFN0YXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRoU2NoZW1lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRoU2NvcGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlZGVudGlhbHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZhbGlkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRoU2NoZW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFNjaGVtZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRoU2NvcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoU2NvcGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY29wZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDcmVkZW50aWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyZWRlbnRpYWxzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aGVudGljYXRpb25FeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aGVudGljYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljVXNlclByaW5jaXBhbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1VzZXJQcmluY2lwYWwiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQmFzaWNVc2VyUHJpbmNpcGFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcm5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ3JlZGVudGlhbHMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyUHJpbmNpcGFsIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZENyZWRlbnRpYWxzRXhjZXB0aW9uIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZENyZWRlbnRpYWxzRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkludmFsaWRDcmVkZW50aWFsc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRDcmVkZW50aWFsc0V4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5JbnZhbGlkQ3JlZGVudGlhbHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkQ3JlZGVudGlhbHNFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguSW52YWxpZENyZWRlbnRpYWxzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5NYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOVENyZWRlbnRpYWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOVENyZWRlbnRpYWxzIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk5UQ3JlZGVudGlhbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VybmFtZVBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOVENyZWRlbnRpYWxzIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk5UQ3JlZGVudGlhbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndvcmtzdGF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREb21haW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlclByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdvcmtzdGF0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOVFVzZXJQcmluY2lwYWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5UVXNlclByaW5jaXBhbCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5OVFVzZXJQcmluY2lwYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tYWluIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VybmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVc2VybmFtZVBhc3N3b3JkQ3JlZGVudGlhbHMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcm5hbWVQYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLlVzZXJuYW1lUGFzc3dvcmRDcmVkZW50aWFscyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlclByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmF1dGgucGFyYW1zIgorPgorPGludGVyZmFjZSBuYW1lPSJBdXRoUE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJDUkVERU5USUFMX0NIQVJTRVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5hdXRoLmNyZWRlbnRpYWwtY2hhcnNldCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkF1dGhQYXJhbUJlYW4iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwQWJzdHJhY3RQYXJhbUJlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoUGFyYW1CZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLnBhcmFtcy5BdXRoUGFyYW1CZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRDcmVkZW50aWFsQ2hhcnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXV0aFBhcmFtcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlZGVudGlhbENoYXJzZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENyZWRlbnRpYWxDaGFyc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENoYWxsZW5nZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXV0aGVudGljYXRpb25SZXF1ZXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VsZWN0U2NoZW1lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFsbGVuZ2VzIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aGVudGljYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNpcmN1bGFyUmVkaXJlY3RFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZWRpcmVjdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcmN1bGFyUmVkaXJlY3RFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DaXJjdWxhclJlZGlyZWN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2lyY3VsYXJSZWRpcmVjdEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNpcmN1bGFyUmVkaXJlY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaXJjdWxhclJlZGlyZWN0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2lyY3VsYXJSZWRpcmVjdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29va2llU3RvcmUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRDb29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJFeHBpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb29raWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7b3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDcmVkZW50aWFsc1Byb3ZpZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlZGVudGlhbHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoc2NvcGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY29wZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDcmVkZW50aWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aHNjb3BlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNyZWRlbnRpYWxzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBDbGllbnQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXNwb25zZUhhbmRsZXImbHQ7PyBleHRlbmRzIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBVcmlSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2VIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlc3BvbnNlSGFuZGxlciZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbk1hbmFnZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJyZXRyeVJlcXVlc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhlY3V0aW9uQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJIdHRwUmVzcG9uc2VFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSZXNwb25zZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXNwb25zZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c0NvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXR1c0NvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9uUmVwZWF0YWJsZVJlcXVlc3RFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9uUmVwZWF0YWJsZVJlcXVlc3RFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Ob25SZXBlYXRhYmxlUmVxdWVzdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vblJlcGVhdGFibGVSZXF1ZXN0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuTm9uUmVwZWF0YWJsZVJlcXVlc3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVkaXJlY3RFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVkaXJlY3RFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZWRpcmVjdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlZGlyZWN0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWRpcmVjdEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVkaXJlY3RIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYXRpb25VUkkiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlZGlyZWN0UmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUmVxdWVzdERpcmVjdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSZXNwb25zZUhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVSZXNwb25zZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlVzZXJUb2tlbkhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyVG9rZW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LmVudGl0eSIKKz4KKzxjbGFzcyBuYW1lPSJVcmxFbmNvZGVkRm9ybUVudGl0eSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LlN0cmluZ0VudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVybEVuY29kZWRGb3JtRW50aXR5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuZW50aXR5LlVybEVuY29kZWRGb3JtRW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyBleHRlbmRzIG9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXJsRW5jb2RlZEZvcm1FbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5lbnRpdHkuVXJsRW5jb2RlZEZvcm1FbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgb3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcyIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQWJvcnRhYmxlSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhYm9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb25uZWN0aW9uUmVxdWVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ublJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25SZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWxlYXNlVHJpZ2dlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVsZWFzZVRyaWdnZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25SZWxlYXNlVHJpZ2dlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBEZWxldGUiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBSZXF1ZXN0QmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBEZWxldGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBEZWxldGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwRGVsZXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwRGVsZXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBEZWxldGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBEZWxldGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUVUSE9EX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7REVMRVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdEJhc2UiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBSZXF1ZXN0QmFzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0QmFzZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3RCYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImV4cGVjdENvbnRpbnVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBHZXQiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBSZXF1ZXN0QmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBHZXQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBHZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwR2V0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwR2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBHZXQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBHZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUVUSE9EX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7R0VUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwSGVhZCIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFJlcXVlc3RCYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEhlYWQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBIZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEhlYWQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBIZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBIZWFkIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwSGVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNRVRIT0RfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtIRUFEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwT3B0aW9ucyIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFJlcXVlc3RCYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cE9wdGlvbnMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBPcHRpb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cE9wdGlvbnMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBPcHRpb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBPcHRpb25zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwT3B0aW9ucyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFsbG93ZWRNZXRob2RzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FVEhPRF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O09QVElPTlMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBQb3N0IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdEJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUG9zdCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFBvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUG9zdCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFBvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFBvc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBQb3N0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FVEhPRF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1BPU1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBQdXQiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0QmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBQdXQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBQdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUHV0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwUHV0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBQdXQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBQdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUVUSE9EX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7UFVUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUmVxdWVzdEJhc2UiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQWJzdHJhY3RIdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuQWJvcnRhYmxlSHR0cFJlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSZXF1ZXN0QmFzZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFJlcXVlc3RCYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFib3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJJIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29ubmVjdGlvblJlcXVlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uUmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvblJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlbGVhc2VUcmlnZ2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVsZWFzZVRyaWdnZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25SZWxlYXNlVHJpZ2dlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cFRyYWNlIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwUmVxdWVzdEJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwVHJhY2UiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBUcmFjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBUcmFjZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFRyYWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBUcmFjZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFRyYWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FVEhPRF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1RSQUNFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFVyaVJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWJvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVSSSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LnBhcmFtcyIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQWxsQ2xpZW50UE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLnBhcmFtcy5BdXRoUE5hbWVzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucGFyYW1zLkNsaWVudFBOYW1lcyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ubkNvbm5lY3Rpb25QTmFtZXMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5NYW5hZ2VyUE5hbWVzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUm91dGVQTmFtZXMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5wYXJhbXMuQ29va2llU3BlY1BOYW1lcyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkNvcmVDb25uZWN0aW9uUE5hbWVzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuQ29yZVByb3RvY29sUE5hbWVzIj4KKzwvaW1wbGVtZW50cz4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkF1dGhQb2xpY3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQkFTSUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7QmFzaWMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElHRVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0RpZ2VzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVExNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O05UTE0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDbGllbnRQTmFtZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkFMTE9XX0NJUkNVTEFSX1JFRElSRUNUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnByb3RvY29sLmFsbG93LWNpcmN1bGFyLXJlZGlyZWN0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05ORUNUSU9OX01BTkFHRVJfRkFDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmNvbm5lY3Rpb24tbWFuYWdlci5mYWN0b3J5LW9iamVjdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05ORUNUSU9OX01BTkFHRVJfRkFDVE9SWV9DTEFTU19OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbi1tYW5hZ2VyLmZhY3RvcnktY2xhc3MtbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT09LSUVfUE9MSUNZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuY29va2llLXBvbGljeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX0hFQURFUlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5kZWZhdWx0LWhlYWRlcnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9IT1NUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuZGVmYXVsdC1ob3N0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBTkRMRV9BVVRIRU5USUNBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnByb3RvY29sLmhhbmRsZS1hdXRoZW50aWNhdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQU5ETEVfUkVESVJFQ1RTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuaGFuZGxlLXJlZGlyZWN0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfUkVESVJFQ1RTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wubWF4LXJlZGlyZWN0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUpFQ1RfUkVMQVRJVkVfUkVESVJFQ1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm90b2NvbC5yZWplY3QtcmVsYXRpdmUtcmVkaXJlY3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklSVFVBTF9IT1NUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAudmlydHVhbC1ob3N0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2xpZW50UGFyYW1CZWFuIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cEFic3RyYWN0UGFyYW1CZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xpZW50UGFyYW1CZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucGFyYW1zLkNsaWVudFBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0QWxsb3dDaXJjdWxhclJlZGlyZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsbG93IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbm5lY3Rpb25NYW5hZ2VyRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb25uZWN0aW9uTWFuYWdlckZhY3RvcnlDbGFzc05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVBvbGljeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGljeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0SGVhZGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O29yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRIb3N0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhhbmRsZUF1dGhlbnRpY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhhbmRsZVJlZGlyZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhSZWRpcmVjdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhSZWRpcmVjdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWplY3RSZWxhdGl2ZVJlZGlyZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVqZWN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpcnR1YWxIb3N0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvb2tpZVBvbGljeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJCRVNUX01BVENIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Jlc3QtbWF0Y2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJPV1NFUl9DT01QQVRJQklMSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbXBhdGliaWxpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUU0NBUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV0c2NhcGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkZDXzIxMDkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cmZjMjEwOSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRkNfMjk2NSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtyZmMyOTY1JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwQ2xpZW50UGFyYW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0Q29va2llUG9saWN5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F1dGhlbnRpY2F0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlZGlyZWN0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRoZW50aWNhdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVBvbGljeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZVBvbGljeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWRpcmVjdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbCIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2xpZW50Q29udGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQVVUSFNDSEVNRV9SRUdJU1RSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmF1dGhzY2hlbWUtcmVnaXN0cnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVUSF9TQ0hFTUVfUFJFRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmF1dGguc2NoZW1lLXByZWYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09PS0lFU1BFQ19SRUdJU1RSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmNvb2tpZXNwZWMtcmVnaXN0cnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09PS0lFX09SSUdJTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmNvb2tpZS1vcmlnaW4mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09PS0lFX1NQRUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5jb29raWUtc3BlYyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT09LSUVfU1RPUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5jb29raWUtc3RvcmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFRFNfUFJPVklERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5hdXRoLmNyZWRlbnRpYWxzLXByb3ZpZGVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1hZX0FVVEhfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5hdXRoLnByb3h5LXNjb3BlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBUkdFVF9BVVRIX1NUQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuYXV0aC50YXJnZXQtc2NvcGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVNFUl9UT0tFTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnVzZXItdG9rZW4mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDbGllbnRDb250ZXh0Q29uZmlndXJlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LnByb3RvY29sLkNsaWVudENvbnRleHQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsaWVudENvbnRleHRDb25maWd1cmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucHJvdG9jb2wuQ2xpZW50Q29udGV4dENvbmZpZ3VyZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRoU2NoZW1lUHJlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1dGhTY2hlbWVSZWdpc3RyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lzdHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lUmVnaXN0cnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29va2llU3BlY1JlZ2lzdHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVnaXN0cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlY1JlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ29va2llU3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3JlZGVudGlhbHNQcm92aWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNyZWRlbnRpYWxzUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdEFkZENvb2tpZXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RBZGRDb29raWVzIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucHJvdG9jb2wuUmVxdWVzdEFkZENvb2tpZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdERlZmF1bHRIZWFkZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXF1ZXN0RGVmYXVsdEhlYWRlcnMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbC5SZXF1ZXN0RGVmYXVsdEhlYWRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdFByb3h5QXV0aGVudGljYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RQcm94eUF1dGhlbnRpY2F0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucHJvdG9jb2wuUmVxdWVzdFByb3h5QXV0aGVudGljYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdFRhcmdldEF1dGhlbnRpY2F0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXF1ZXN0VGFyZ2V0QXV0aGVudGljYXRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbC5SZXF1ZXN0VGFyZ2V0QXV0aGVudGljYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzcG9uc2VQcm9jZXNzQ29va2llcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlc3BvbnNlUHJvY2Vzc0Nvb2tpZXMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbC5SZXNwb25zZVByb2Nlc3NDb29raWVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LnV0aWxzIgorPgorPGNsYXNzIG5hbWU9IkNsb25lVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSSVV0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVVJJIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhZ21lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmUiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVVSSSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWZlcmVuY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlVVJJIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZmVyZW5jZSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJld3JpdGVVUkkiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkcm9wRnJhZ21lbnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJld3JpdGVVUkkiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVUklTeW50YXhFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVUkxFbmNvZGVkVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTEVuY29kZWRVdGlscyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LnV0aWxzLlVSTEVuY29kZWRVdGlscyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5jb2RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50aXR5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50aXR5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Nhbm5lciIgdHlwZT0iamF2YS51dGlsLlNjYW5uZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubiIKKz4KKzxjbGFzcyBuYW1lPSJCYXNpY0VvZlNlbnNvcldhdGNoZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uRW9mU2Vuc29yV2F0Y2hlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNFb2ZTZW5zb3JXYXRjaGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkJhc2ljRW9mU2Vuc29yV2F0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk1hbmFnZWRDbGllbnRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXVzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVvZkRldGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RyZWFtQWJvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdHJlYW1DbG9zZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImF0dGVtcHRSZXVzZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFuYWdlZENvbm4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNNYW5hZ2VkRW50aXR5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuSHR0cEVudGl0eVdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25SZWxlYXNlVHJpZ2dlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Fb2ZTZW5zb3JXYXRjaGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY01hbmFnZWRFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQmFzaWNNYW5hZ2VkRW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50aXR5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldXNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWJvcnRDb25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW9mRGV0ZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VNYW5hZ2VkQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmVhbUFib3J0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RyZWFtQ2xvc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhdHRlbXB0UmV1c2UiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFuYWdlZENvbm4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xvc2VFeHBpcmVkQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VJZGxlQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkbGV0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0dW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lUmVnaXN0cnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkRHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVVbml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Q29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25SZXF1ZXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDbGllbnRDb25uZWN0aW9uTWFuYWdlckZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWVSZWdpc3RyeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5Db25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlY3VyZUNvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2xpZW50Q29ubmVjdGlvblJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhYm9ydFJlcXVlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLk1hbmFnZWRDbGllbnRDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ29ubmVjdGlvblBvb2xUaW1lb3V0RXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbm5lY3RUaW1lb3V0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSW50ZXJydXB0ZWRJT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbm5lY3RUaW1lb3V0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3RUaW1lb3V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29ubmVjdFRpbWVvdXRFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdFRpbWVvdXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEtlZXBBbGl2ZUR1cmF0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdFRpbWVvdXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvblBvb2xUaW1lb3V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29ubmVjdGlvblBvb2xUaW1lb3V0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25Qb29sVGltZW91dEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29ubmVjdGlvblJlbGVhc2VUcmlnZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWJvcnRDb25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkVvZlNlbnNvcklucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25SZWxlYXNlVHJpZ2dlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW9mU2Vuc29ySW5wdXRTdHJlYW0iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uRW9mU2Vuc29ySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2F0Y2hlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uRW9mU2Vuc29yV2F0Y2hlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFib3J0Q29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWJvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0Nsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tFT0YiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlb2YiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZWFkQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VDb25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJ3cmFwcGVkU3RyZWFtIgorIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkVvZlNlbnNvcldhdGNoZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlb2ZEZXRlY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RyZWFtQWJvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWQiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmVhbUNsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBIb3N0Q29ubmVjdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLm5ldC5Db25uZWN0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEhvc3RDb25uZWN0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkh0dHBIb3N0Q29ubmVjdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubmV0LkNvbm5lY3RFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNYW5hZ2VkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uUmVsZWFzZVRyaWdnZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDbGllbnRDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSW5ldENvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRSb3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U1NMU2Vzc2lvbiIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTWFya2VkUmV1c2FibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZWN1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGF5ZXJQcm90b2NvbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFya1JldXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWRsZUR1cmF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InR1bm5lbFByb3h5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InR1bm5lbFRhcmdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5tYXJrUmV1c2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik11bHRpaG9tZVBsYWluU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5Tb2NrZXRGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY29ubmVjdFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5NdWx0aWhvbWVQbGFpblNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENsaWVudENvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBJbmV0Q29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldEhvc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29tcGxldGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWN1cmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2siIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcyIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29ubkNvbm5lY3Rpb25QTmFtZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9Ik1BWF9TVEFUVVNfTElORV9HQVJCQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbi5tYXgtc3RhdHVzLWxpbmUtZ2FyYmFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbm5Db25uZWN0aW9uUGFyYW1CZWFuIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cEFic3RyYWN0UGFyYW1CZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29ubkNvbm5lY3Rpb25QYXJhbUJlYW4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5Db25uZWN0aW9uUGFyYW1CZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhTdGF0dXNMaW5lR2FyYmFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFN0YXR1c0xpbmVHYXJiYWdlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbm5NYW5hZ2VyUE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJNQVhfQ09OTkVDVElPTlNfUEVSX1JPVVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubi1tYW5hZ2VyLm1heC1wZXItcm91dGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1RPVEFMX0NPTk5FQ1RJT05TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubi1tYW5hZ2VyLm1heC10b3RhbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSU1FT1VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubi1tYW5hZ2VyLnRpbWVvdXQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb25uTWFuYWdlclBhcmFtQmVhbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbm5NYW5hZ2VyUGFyYW1CZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uTWFuYWdlclBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0Q29ubmVjdGlvbnNQZXJSb3V0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm5QZXJSb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5QZXJSb3V0ZUJlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4VG90YWxDb25uZWN0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heENvbm5lY3Rpb25zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29ubk1hbmFnZXJQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ubk1hbmFnZXJQTmFtZXMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbm5NYW5hZ2VyUGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uTWFuYWdlclBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhDb25uZWN0aW9uc1BlclJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5QZXJSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhUb3RhbENvbm5lY3Rpb25zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVvdXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1heENvbm5lY3Rpb25zUGVyUm91dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uUGVyUm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUGVyUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4VG90YWxDb25uZWN0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFRvdGFsQ29ubmVjdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb25uUGVyUm91dGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhGb3JSb3V0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbm5QZXJSb3V0ZUJlYW4iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ublBlclJvdXRlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uUGVyUm91dGVCZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUGVyUm91dGVCZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdE1heCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uUGVyUm91dGVCZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUGVyUm91dGVCZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRNYXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Rm9yUm91dGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0TWF4UGVyUm91dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhGb3JSb3V0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4Rm9yUm91dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O29yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlLCBqYXZhLmxhbmcuSW50ZWdlciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX01BWF9DT05ORUNUSU9OU19QRVJfUk9VVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29ublJvdXRlUE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1BST1hZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucm91dGUuZGVmYXVsdC1wcm94eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JDRURfUk9VVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5yb3V0ZS5mb3JjZWQtcm91dGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DQUxfQUREUkVTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnJvdXRlLmxvY2FsLWFkZHJlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb25uUm91dGVQYXJhbUJlYW4iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwQWJzdHJhY3RQYXJhbUJlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uUm91dGVQYXJhbUJlYW4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5Sb3V0ZVBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFByb3h5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFByb3h5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9yY2VkUm91dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29ublJvdXRlUGFyYW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUm91dGVQTmFtZXMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0UHJveHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9yY2VkUm91dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0UHJveHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm94eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcmNlZFJvdXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvY2FsQWRkcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik5PX0hPU1QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX1JPVVRFIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmciCis+Cis8Y2xhc3MgbmFtZT0iQmFzaWNSb3V0ZURpcmVjdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlRGlyZWN0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljUm91dGVEaXJlY3RvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkJhc2ljUm91dGVEaXJlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXJlY3RTdGVwIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyc3RTdGVwIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0U3RlcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGxhbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3hpZWRTdGVwIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cFJvdXRlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJvdXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJveGllcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVubmVsbGVkIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5UdW5uZWxUeXBlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXllcmVkIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5MYXllclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSb3V0ZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVubmVsbGVkIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5UdW5uZWxUeXBlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXllcmVkIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5MYXllclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSb3V0ZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJvdXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSb3V0ZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9wQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3BUYXJnZXQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5ZXJUeXBlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uTGF5ZXJUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm94eUhvc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRIb3N0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHVubmVsVHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvLlR1bm5lbFR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGF5ZXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1R1bm5lbGxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJvdXRlRGlyZWN0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXh0U3RlcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OTkVDVF9QUk9YWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OTkVDVF9UQVJHRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBWUVSX1BST1RPQ09MIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVU5ORUxfUFJPWFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRVTk5FTF9UQVJHRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOUkVBQ0hBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJvdXRlUGxhbm5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRldGVybWluZVJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJvdXRlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEhvcENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9wVGFyZ2V0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExheWVyVHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvLkxheWVyVHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJveHlIb3N0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFyZ2V0SG9zdCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR1bm5lbFR5cGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5UdW5uZWxUeXBlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYXllcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVHVubmVsbGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJSb3V0ZUluZm8uTGF5ZXJUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uTGF5ZXJUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uTGF5ZXJUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJvdXRlSW5mby5UdW5uZWxUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uVHVubmVsVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvLlR1bm5lbFR5cGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUm91dGVUcmFja2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUm91dGVUcmFja2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVUcmFja2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUm91dGVUcmFja2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVUcmFja2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3RQcm94eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJveHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3RUYXJnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9wQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3BUYXJnZXQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5ZXJUeXBlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uTGF5ZXJUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm94eUhvc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRIb3N0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHVubmVsVHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvLlR1bm5lbFR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGF5ZXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1R1bm5lbGxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXllclByb3RvY29sIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWN1cmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9Sb3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHVubmVsUHJveHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0dW5uZWxUYXJnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZSIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iSG9zdE5hbWVSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlc29sdmUiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0bmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMYXllcmVkU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU29ja2V0RmFjdG9yeSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrZXQiIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvQ2xvc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlBsYWluU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5Tb2NrZXRGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQbGFpblNvY2tldEZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlBsYWluU29ja2V0RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVSZXNvbHZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLkhvc3ROYW1lUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBsYWluU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuUGxhaW5Tb2NrZXRGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3RTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2siIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb2NrZXRGYWN0b3J5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlBsYWluU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTY2hlbWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZW1lIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU29ja2V0RmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGF5ZXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NoZW1lUmVnaXN0cnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZW1lUmVnaXN0cnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lTmFtZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEl0ZW1zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTb2NrZXRGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29ubmVjdFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxBZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDb25uZWN0VGltZW91dEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdFRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RWZXJpZmllciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5YNTA5SG9zdG5hbWVWZXJpZmllciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RWZXJpZmllciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWJzdHJhY3RWZXJpZmllciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhY2NlcHRhYmxlQ291bnRyeVdpbGRjYXJkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudERvdHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDTnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRETlNTdWJqZWN0QWx0cyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3NsIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZXNzaW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3RBbHRzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmljdFdpdGhTdWJEb21haW5zIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFsbG93QWxsSG9zdG5hbWVWZXJpZmllciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWJzdHJhY3RWZXJpZmllciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsbG93QWxsSG9zdG5hbWVWZXJpZmllciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWxsb3dBbGxIb3N0bmFtZVZlcmlmaWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3RBbHRzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnJvd3NlckNvbXBhdEhvc3RuYW1lVmVyaWZpZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLkFic3RyYWN0VmVyaWZpZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCcm93c2VyQ29tcGF0SG9zdG5hbWVWZXJpZmllciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQnJvd3NlckNvbXBhdEhvc3RuYW1lVmVyaWZpZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEFsdHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTU0xTb2NrZXRGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5MYXllcmVkU29ja2V0RmFjdG9yeSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c3RvcmUiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleXN0b3JlUGFzc3dvcmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRydXN0c3RvcmUiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVSZXNvbHZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLkhvc3ROYW1lUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleXN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzdG9yZVBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cnVzdHN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlNYW5hZ2VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNvY2tldEZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzdG9yZSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c3RvcmVQYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xTb2NrZXRGYWN0b3J5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5TU0xTb2NrZXRGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJ1c3RzdG9yZSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29ubmVjdFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9DbG9zZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0bmFtZVZlcmlmaWVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlg1MDlIb3N0bmFtZVZlcmlmaWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SG9zdG5hbWVWZXJpZmllciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3RuYW1lVmVyaWZpZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5YNTA5SG9zdG5hbWVWZXJpZmllciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFMTE9XX0FMTF9IT1NUTkFNRV9WRVJJRklFUiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuWDUwOUhvc3RuYW1lVmVyaWZpZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJPV1NFUl9DT01QQVRJQkxFX0hPU1ROQU1FX1ZFUklGSUVSIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5YNTA5SG9zdG5hbWVWZXJpZmllciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTU0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7U1NMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNTTFYyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1NTTHYyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUklDVF9IT1NUTkFNRV9WRVJJRklFUiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuWDUwOUhvc3RuYW1lVmVyaWZpZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVExTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1RMUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaWN0SG9zdG5hbWVWZXJpZmllciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWJzdHJhY3RWZXJpZmllciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmljdEhvc3RuYW1lVmVyaWZpZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlN0cmljdEhvc3RuYW1lVmVyaWZpZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEFsdHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iWDUwOUhvc3RuYW1lVmVyaWZpZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubmV0LnNzbC5Ib3N0bmFtZVZlcmlmaWVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZXNzaW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzc2wiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnQiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEFsdHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi51dGlsIgorPgorPGNsYXNzIG5hbWU9IkluZXRBZGRyZXNzVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpc0lQdjRBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lQdjZBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lQdjZIZXhDb21wcmVzc2VkQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJUHY2U3RkQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llIgorPgorPGludGVyZmFjZSBuYW1lPSJDbGllbnRDb29raWUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0F0dHJpYnV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT01NRU5UVVJMX0FUVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tbWVudHVybCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01NRU5UX0FUVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tbWVudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNDQVJEX0FUVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGlzY2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET01BSU5fQVRUUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkb21haW4mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhQSVJFU19BVFRSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2V4cGlyZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX0FHRV9BVFRSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21heC1hZ2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFUSF9BVFRSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9SVF9BVFRSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BvcnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDVVJFX0FUVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2VjdXJlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZFUlNJT05fQVRUUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2ZXJzaW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvb2tpZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tbWVudFVSTCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb21haW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXhwaXJ5RGF0ZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcnRzIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFeHBpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1BlcnNpc3RlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZWN1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb29raWVJZGVudGl0eUNvbXBhcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkNvbXBhcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvb2tpZUlkZW50aXR5Q29tcGFyYXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUlkZW50aXR5Q29tcGFyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjMSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb29raWVPcmlnaW4iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29va2llT3JpZ2luIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWN1cmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb29raWVQYXRoQ29tcGFyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29tcGFyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29va2llUGF0aENvbXBhcmF0b3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVQYXRoQ29tcGFyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjMSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29va2llU3BlYyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdENvb2tpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuSGVhZGVyJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb25IZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ29va2llU3BlY0ZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29va2llU3BlY1JlZ2lzdHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvb2tpZVNwZWNSZWdpc3RyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNSZWdpc3RyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb29raWVTcGVjIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29va2llU3BlYyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BlY05hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJdGVtcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlY0ZhY3RvcnkmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTTSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQ09PS0lFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0Nvb2tpZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT09LSUUyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0Nvb2tpZTImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX0NPT0tJRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtTZXQtQ29va2llJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9DT09LSUUyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1NldC1Db29raWUyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNldENvb2tpZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9InNldENvbW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG9tYWluIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhwaXJ5RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwaXJ5RGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWN1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVyc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2V0Q29va2llMiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLlNldENvb2tpZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9InNldENvbW1lbnRVUkwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnRVUkwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzY2FyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzY2FyZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb3J0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUucGFyYW1zIgorPgorPGludGVyZmFjZSBuYW1lPSJDb29raWVTcGVjUE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJEQVRFX1BBVFRFUk5TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuY29va2llLWRhdGVwYXR0ZXJucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU5HTEVfQ09PS0lFX0hFQURFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnByb3RvY29sLnNpbmdsZS1jb29raWUtaGVhZGVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29va2llU3BlY1BhcmFtQmVhbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvb2tpZVNwZWNQYXJhbUJlYW4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5wYXJhbXMuQ29va2llU3BlY1BhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZVBhdHRlcm5zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybnMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpbmdsZUhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpbmdsZUhlYWRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RIdHRwRW50aXR5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cEVudGl0eSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb25zdW1lQ29udGVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRFbmNvZGluZyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFR5cGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2h1bmtlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2h1bmtlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudEVuY29kaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudEVuY29kaW5nIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRFbmNvZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudFR5cGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdFN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNodW5rZWQiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbnRlbnRFbmNvZGluZyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29udGVudFR5cGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0h0dHBFbnRpdHkiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5BYnN0cmFjdEh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5CYXNpY0h0dHBFbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50TGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlcGVhdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyZWFtaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVmZmVyZWRIdHRwRW50aXR5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuSHR0cEVudGl0eVdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWZmZXJlZEh0dHBFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5CdWZmZXJlZEh0dHBFbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ5dGVBcnJheUVudGl0eSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnl0ZUFycmF5RW50aXR5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQnl0ZUFycmF5RW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnQiCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRMZW5ndGgiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVwZWF0YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdHJlYW1pbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRzdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNvbnRlbnQiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRlbnRMZW5ndGhTdHJhdGVneSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRldGVybWluZUxlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNIVU5LRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJREVOVElUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRlbnRQcm9kdWNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJFbnRpdHlUZW1wbGF0ZSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudGl0eVRlbXBsYXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuRW50aXR5VGVtcGxhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50cHJvZHVjZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQ29udGVudFByb2R1Y2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmVhbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVFbnRpdHkiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5BYnN0cmFjdEh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5GaWxlRW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmVhbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iZmlsZSIKKyB0eXBlPSJqYXZhLmlvLkZpbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwRW50aXR5V3JhcHBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEVudGl0eVdyYXBwZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5IdHRwRW50aXR5V3JhcHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29uc3VtZUNvbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudEVuY29kaW5nIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50TGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDaHVua2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlcGVhdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyZWFtaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJ3cmFwcGVkRW50aXR5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklucHV0U3RyZWFtRW50aXR5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQWJzdHJhY3RIdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRTdHJlYW1FbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5JbnB1dFN0cmVhbUVudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmVhbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlcmlhbGl6YWJsZUVudGl0eSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcmlhbGl6YWJsZUVudGl0eSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LlNlcmlhbGl6YWJsZUVudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlciIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcml6ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50TGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlcGVhdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyZWFtaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nRW50aXR5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQWJzdHJhY3RIdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5TdHJpbmdFbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0VudGl0eSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LlN0cmluZ0VudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmVhbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iY29udGVudCIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsIgorPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0SHR0cENsaWVudENvbm5lY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENsaWVudENvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cENsaWVudENvbm5lY3Rpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuQWJzdHJhY3RIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRPcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRW50aXR5RGVzZXJpYWxpemVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eURlc2VyaWFsaXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVFbnRpdHlTZXJpYWxpemVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eVNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFJlc3BvbnNlRmFjdG9yeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVJlcXVlc3RXcml0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW8uSHR0cE1lc3NhZ2VXcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVJlc3BvbnNlUGFyc2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBNZXNzYWdlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlRmFjdG9yeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldHJpY3MiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENvbm5lY3Rpb25NZXRyaWNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0YnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXNwb25zZUF2YWlsYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjZWl2ZVJlc3BvbnNlRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlUmVzcG9uc2VIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFJlcXVlc3RFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVxdWVzdEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFNlcnZlckNvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuQWJzdHJhY3RIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRPcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRW50aXR5RGVzZXJpYWxpemVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eURlc2VyaWFsaXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVFbnRpdHlTZXJpYWxpemVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eVNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFJlcXVlc3RGYWN0b3J5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSZXF1ZXN0UGFyc2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBNZXNzYWdlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RGYWN0b3J5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSZXNwb25zZVdyaXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pby5IdHRwTWVzc2FnZVdyaXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9GbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwQ29ubmVjdGlvbk1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uT3V0cHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlUmVxdWVzdEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmVSZXF1ZXN0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFJlc3BvbnNlRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVzcG9uc2VIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRDb25uZWN0aW9uUmV1c2VTdHJhdGVneSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRDb25uZWN0aW9uUmV1c2VTdHJhdGVneSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5EZWZhdWx0Q29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVG9rZW5JdGVyYXRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Ub2tlbkl0ZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJoaXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZWVwQWxpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5Tb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5EZWZhdWx0SHR0cENsaWVudENvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdEh0dHBSZXF1ZXN0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0SHR0cFJlcXVlc3RGYWN0b3J5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLkRlZmF1bHRIdHRwUmVxdWVzdEZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3SHR0cFJlcXVlc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RsaW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVxdWVzdCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0SHR0cFJlc3BvbnNlRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlRmFjdG9yeSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVmYXVsdEh0dHBSZXNwb25zZUZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuRGVmYXVsdEh0dHBSZXNwb25zZUZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVhc29uUGhyYXNlQ2F0YWxvZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVmYXVsdEh0dHBSZXNwb25zZUZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuRGVmYXVsdEh0dHBSZXNwb25zZUZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGV0ZXJtaW5lTG9jYWxlIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0h0dHBSZXNwb25zZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVzcG9uc2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXNsaW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0icmVhc29uQ2F0YWxvZyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVhc29uUGhyYXNlQ2F0YWxvZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5Tb2NrZXRIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5EZWZhdWx0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW5nbGlzaFJlYXNvblBocmFzZUNhdGFsb2ciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLlJlYXNvblBocmFzZUNhdGFsb2ciPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVuZ2xpc2hSZWFzb25QaHJhc2VDYXRhbG9nIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLkVuZ2xpc2hSZWFzb25QaHJhc2VDYXRhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFJlYXNvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2MiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJJTlNUQU5DRSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5FbmdsaXNoUmVhc29uUGhyYXNlQ2F0YWxvZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cENvbm5lY3Rpb25NZXRyaWNzSW1wbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENvbm5lY3Rpb25NZXRyaWNzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwQ29ubmVjdGlvbk1ldHJpY3NJbXBsIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLkh0dHBDb25uZWN0aW9uTWV0cmljc0ltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblRyYW5zcG9ydE1ldHJpYyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRUcmFuc3BvcnRNZXRyaWMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5IdHRwVHJhbnNwb3J0TWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1ldHJpYyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVjZWl2ZWRCeXRlc0NvdW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0Q291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3BvbnNlQ291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbnRCeXRlc0NvdW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRSZXF1ZXN0Q291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlbWVudFJlc3BvbnNlQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXRyaWMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJSRUNFSVZFRF9CWVRFU19DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnJlY2VpdmVkLWJ5dGVzLWNvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUVVFU1RfQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5yZXF1ZXN0LWNvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1BPTlNFX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucmVzcG9uc2UtY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOVF9CWVRFU19DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnNlbnQtYnl0ZXMtY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb0Nvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLk5vQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ia2VlcEFsaXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5BYnN0cmFjdEh0dHBDbGllbnRDb25uZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEluZXRDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5Tb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RPcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRPcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlc3Npb25JbnB1dEJ1ZmZlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTZXNzaW9uT3V0cHV0QnVmZmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlQWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbW90ZVBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldFRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU29ja2V0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuQWJzdHJhY3RIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBJbmV0Q29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuU29ja2V0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90T3BlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0T3BlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIdHRwRGF0YVJlY2VpdmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUh0dHBEYXRhVHJhbnNtaXR0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29ja2V0VGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvY2tldFRpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmF1dGgiCis+Cis8Y2xhc3MgbmFtZT0iQXV0aFNjaGVtZUJhc2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoU2NoZW1lQmFzZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLkF1dGhTY2hlbWVCYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzUHJveHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQ2hhbGxlbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcm9jZXNzQ2hhbGxlbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1NjaGVtZSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLlJGQzI2MTdTY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1NjaGVtZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLkJhc2ljU2NoZW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF1dGhlbnRpY2F0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyZWRlbnRpYWxzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aGVudGljYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXV0aGVudGljYXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcmVkZW50aWFscyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQ3JlZGVudGlhbHMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGxldGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGlvbkJhc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1NjaGVtZUZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZUZhY3RvcnkiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljU2NoZW1lRmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLkJhc2ljU2NoZW1lRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpZ2VzdFNjaGVtZSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLlJGQzI2MTdTY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWdlc3RTY2hlbWUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5EaWdlc3RTY2hlbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXV0aGVudGljYXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JlZGVudGlhbHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDbm9uY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb21wbGV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0aW9uQmFzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im92ZXJyaWRlUGFyYW10ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaWdlc3RTY2hlbWVGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWVGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWdlc3RTY2hlbWVGYWN0b3J5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmF1dGguRGlnZXN0U2NoZW1lRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJOVExNRW5naW5lIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVUeXBlMU1zZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG9tYWluIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3Jrc3RhdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTlRMTUVuZ2luZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5OVExNRW5naW5lRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlVHlwZTNNc2ciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZG9tYWluIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3Jrc3RhdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbGxlbmdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOVExNRW5naW5lRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLk5UTE1FbmdpbmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik5UTE1FbmdpbmVFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aGVudGljYXRpb25FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOVExNRW5naW5lRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmF1dGguTlRMTUVuZ2luZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5UTE1FbmdpbmVFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5OVExNRW5naW5lRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTlRMTUVuZ2luZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLk5UTE1FbmdpbmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5UTE1TY2hlbWUiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5BdXRoU2NoZW1lQmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5UTE1TY2hlbWUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5OVExNU2NoZW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5naW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLk5UTE1FbmdpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdXRoZW50aWNhdGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcmVkZW50aWFscyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQ3JlZGVudGlhbHMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRpb25FeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhbG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGxldGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGlvbkJhc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUNoYWxsZW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzI2MTdTY2hlbWUiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5BdXRoU2NoZW1lQmFzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjYxN1NjaGVtZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLlJGQzI2MTdTY2hlbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFsbSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VDaGFsbGVuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbnN1cHBvcnRlZERpZ2VzdEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuc3VwcG9ydGVkRGlnZXN0QWxnb3JpdGhtRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmF1dGguVW5zdXBwb3J0ZWREaWdlc3RBbGdvcml0aG1FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZERpZ2VzdEFsZ29yaXRobUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLlVuc3VwcG9ydGVkRGlnZXN0QWxnb3JpdGhtRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWREaWdlc3RBbGdvcml0aG1FeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5VbnN1cHBvcnRlZERpZ2VzdEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkFic3RyYWN0QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhQcmVmZXJlbmNlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQ2hhbGxlbmdlcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS5odHRwLkhlYWRlciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5NYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VsZWN0U2NoZW1lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbGxlbmdlcyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLmh0dHAuSGVhZGVyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRpb25FeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0SHR0cENsaWVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuSHR0cENsaWVudCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RIdHRwQ2xpZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5BYnN0cmFjdEh0dHBDbGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25tYW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVxdWVzdEludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGNwIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRSZXNwb25zZUludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGNwIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVzcG9uc2VJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUmVxdWVzdEludGVyY2VwdG9ycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclJlc3BvbnNlSW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUF1dGhTY2hlbWVSZWdpc3RyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWVSZWdpc3RyeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDbGllbnRSZXF1ZXN0RGlyZWN0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlcXVlc3REaXJlY3RvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdEV4ZWMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEV4ZWN1dG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25tYW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXVzdHJhdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrYXN0cmF0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uS2VlcEFsaXZlU3RyYXRlZ3kiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXBsYW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlUGxhbm5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaHR0cFByb2Nlc3NvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBQcm9jZXNzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldHJ5SGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwUmVxdWVzdFJldHJ5SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkaXJlY3RIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0QXV0aEhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQXV0aGVudGljYXRpb25IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm94eUF1dGhIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGVIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29va2llU3BlY1JlZ2lzdHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjUmVnaXN0cnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDb29raWVTdG9yZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ29va2llU3RvcmUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDcmVkZW50aWFsc1Byb3ZpZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DcmVkZW50aWFsc1Byb3ZpZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cENvbnRleHQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIdHRwUGFyYW1zIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFByb2Nlc3NvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBQcm9jZXNzb3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuSHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIdHRwUm91dGVQbGFubmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUHJveHlBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVJlZGlyZWN0SGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUmVxdWVzdEV4ZWN1dG9yIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0RXhlY3V0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUYXJnZXRBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVVzZXJUb2tlbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRlcm1pbmVQYXJhbXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwVXJpUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwVXJpUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXNwb25zZUhhbmRsZXImbHQ7PyBleHRlbmRzIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwVXJpUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2VIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlc3BvbnNlSGFuZGxlciZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXV0aFNjaGVtZXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lUmVnaXN0cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbk1hbmFnZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvb2tpZVNwZWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjUmVnaXN0cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvb2tpZVN0b3JlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Db29raWVTdG9yZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlZGVudGlhbHNQcm92aWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ3JlZGVudGlhbHNQcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SHR0cFByb2Nlc3NvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBQcm9jZXNzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1zIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm94eUF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQXV0aGVudGljYXRpb25IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWRpcmVjdEhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdEV4ZWN1dG9yIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0RXhlY3V0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdEludGVyY2VwdG9yQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNwb25zZUludGVyY2VwdG9yIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzcG9uc2VJbnRlcmNlcHRvckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGVQbGFubmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlclRva2VuSGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuVXNlclRva2VuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUmVxdWVzdEludGVyY2VwdG9yQnlDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIG9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVSZXNwb25zZUludGVyY2VwdG9yQnlDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIG9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXV0aFNjaGVtZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhTY2hlbWVSZWdpc3RyeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVNwZWNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVTcGVjUmVnaXN0cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlY1JlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVTdG9yZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Db29raWVTdG9yZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDcmVkZW50aWFsc1Byb3ZpZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcmVkc1Byb3ZpZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNyZWRlbnRpYWxzUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJldHJ5SGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwUmVxdWVzdFJldHJ5SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZWVwQWxpdmVTdHJhdGVneSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcEFsaXZlU3RyYXRlZ3kiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3h5QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm94eUF1dGhIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWRpcmVjdEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZGlyZWN0SGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZWRpcmVjdEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmV1c2VTdHJhdGVneSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmV1c2VTdHJhdGVneSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvdXRlUGxhbm5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGVQbGFubmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZVBsYW5uZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRBdXRoSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5BdXRoZW50aWNhdGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlclRva2VuSGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlclRva2VuSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Vc2VyVG9rZW5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljQ29va2llU3RvcmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Db29raWVTdG9yZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNDb29raWVTdG9yZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQmFzaWNDb29raWVTdG9yZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRDb29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkQ29va2llcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckV4cGlyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvb2tpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0NyZWRlbnRpYWxzUHJvdmlkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DcmVkZW50aWFsc1Byb3ZpZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0NyZWRlbnRpYWxzUHJvdmlkZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkJhc2ljQ3JlZGVudGlhbHNQcm92aWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDcmVkZW50aWFscyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhzY29wZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjb3BlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENyZWRlbnRpYWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoc2NvcGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY29wZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JlZGVudGlhbHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljUmVzcG9uc2VIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1Jlc3BvbnNlSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQmFzaWNSZXNwb25zZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaGFuZGxlUmVzcG9uc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cFJlc3BvbnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXNwb25zZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xpZW50UGFyYW1zU3RhY2siCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5BYnN0cmFjdEh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGllbnRQYXJhbXNTdGFjayIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQ2xpZW50UGFyYW1zU3RhY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icnBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsaWVudFBhcmFtc1N0YWNrIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5DbGllbnRQYXJhbXNTdGFjayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YWNrIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQ2xpZW50UGFyYW1zU3RhY2siPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsaWVudFBhcmFtc1N0YWNrIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5DbGllbnRQYXJhbXNTdGFjayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YWNrIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQ2xpZW50UGFyYW1zU3RhY2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3BhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJycGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvcHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25QYXJhbXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGllbnRQYXJhbXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPdmVycmlkZVBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBhcmFtZXRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImFwcGxpY2F0aW9uUGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpZW50UGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3ZlcnJpZGVQYXJhbXMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXF1ZXN0UGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRDb25uZWN0aW9uS2VlcEFsaXZlU3RyYXRlZ3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0Q29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0Q29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEtlZXBBbGl2ZUR1cmF0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0SHR0cENsaWVudCIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQWJzdHJhY3RIdHRwQ2xpZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVmYXVsdEh0dHBDbGllbnQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkRlZmF1bHRIdHRwQ2xpZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubWFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwQ2xpZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0SHR0cENsaWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0SHR0cENsaWVudCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuRGVmYXVsdEh0dHBDbGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQXV0aFNjaGVtZVJlZ2lzdHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZVJlZ2lzdHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvb2tpZVNwZWNSZWdpc3RyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlY1JlZ2lzdHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvb2tpZVN0b3JlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Db29raWVTdG9yZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDcmVkZW50aWFsc1Byb3ZpZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DcmVkZW50aWFsc1Byb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUh0dHBDb250ZXh0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUh0dHBQYXJhbXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFByb2Nlc3NvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBQcm9jZXNzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUh0dHBSb3V0ZVBsYW5uZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZVBsYW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUHJveHlBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSZWRpcmVjdEhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSZXF1ZXN0RXhlY3V0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFJlcXVlc3RFeGVjdXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUYXJnZXRBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVVc2VyVG9rZW5IYW5kbGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Vc2VyVG9rZW5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRIdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0SHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkRlZmF1bHRIdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJldHJ5Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdFNlbnRSZXRyeUVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuRGVmYXVsdEh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFJldHJ5Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXF1ZXN0U2VudFJldHJ5RW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0cnlSZXF1ZXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleGVjdXRpb25Db3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdFByb3h5QXV0aGVudGljYXRpb25IYW5kbGVyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5BYnN0cmFjdEF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRQcm94eUF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuRGVmYXVsdFByb3h5QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoYWxsZW5nZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F1dGhlbnRpY2F0aW9uUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0UmVkaXJlY3RIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0UmVkaXJlY3RIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0UmVkaXJlY3RIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0aW9uVVJJIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVkaXJlY3RSZXF1ZXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRSZXF1ZXN0RGlyZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXF1ZXN0RGlyZWN0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRSZXF1ZXN0RGlyZWN0b3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkRlZmF1bHRSZXF1ZXN0RGlyZWN0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0RXhlYyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0RXhlY3V0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm1hbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldXN0cmF0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imthc3RyYXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91cGxhbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJodHRwUHJvY2Vzc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3NvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmV0cnlIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWRpcmVjdEhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRBdXRoSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5BdXRoZW50aWNhdGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5QXV0aEhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQXV0aGVudGljYXRpb25IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyVG9rZW5IYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29ubmVjdFJlcXVlc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVR1bm5lbFRvUHJveHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUdW5uZWxUb1RhcmdldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGV0ZXJtaW5lUm91dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlc3RhYmxpc2hSb3V0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZVJlc3BvbnNlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJvdXRlZFJlcXVlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXJlcSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJvdXRlZFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV3cml0ZVJlcXVlc3RVUkkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuUmVxdWVzdFdyYXBwZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNvbm5NYW5hZ2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJodHRwUHJvY2Vzc29yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUHJvY2Vzc29yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZWVwQWxpdmVTdHJhdGVneSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uS2VlcEFsaXZlU3RyYXRlZ3kiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hbmFnZWRDb25uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk1hbmFnZWRDbGllbnRDb25uZWN0aW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVkaXJlY3RIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RIYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXF1ZXN0RXhlYyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFJlcXVlc3RFeGVjdXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmV0cnlIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuSHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJldXNlU3RyYXRlZ3kiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3V0ZVBsYW5uZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdFRhcmdldEF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQWJzdHJhY3RBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0VGFyZ2V0QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0VGFyZ2V0QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoYWxsZW5nZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F1dGhlbnRpY2F0aW9uUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0VXNlclRva2VuSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRVc2VyVG9rZW5IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0VXNlclRva2VuSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyVG9rZW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW50aXR5RW5jbG9zaW5nUmVxdWVzdFdyYXBwZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJlcXVlc3RXcmFwcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudGl0eUVuY2xvc2luZ1JlcXVlc3RXcmFwcGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5FbnRpdHlFbmNsb3NpbmdSZXF1ZXN0V3JhcHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImV4cGVjdENvbnRpbnVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZGlyZWN0TG9jYXRpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWRpcmVjdExvY2F0aW9ucyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuUmVkaXJlY3RMb2NhdGlvbnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXF1ZXN0V3JhcHBlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5BYnN0cmFjdEh0dHBNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RXcmFwcGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5SZXF1ZXN0V3JhcHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFib3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGVjQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hbCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVSSSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRFeGVjQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldEhlYWRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1ldGhvZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVSSSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJvdXRlZFJlcXVlc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvdXRlZFJlcXVlc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJvdXRlZFJlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXEiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5SZXF1ZXN0V3JhcHBlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5SZXF1ZXN0V3JhcHBlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InJlcXVlc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJlcXVlc3RXcmFwcGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3V0ZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR1bm5lbFJlZnVzZWRFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUdW5uZWxSZWZ1c2VkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5UdW5uZWxSZWZ1c2VkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNwb25zZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uIgorPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0Q2xpZW50Q29ubkFkYXB0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5NYW5hZ2VkQ2xpZW50Q29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RDbGllbnRDb25uQWRhcHRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0Q2xpZW50Q29ubkFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZ3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYm9ydENvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE5vdEFib3J0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSW50ZXJydXB0ZWRJT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRWYWxpZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZENvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRhY2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1hbmFnZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uTWV0cmljcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTU0xTZXNzaW9uIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xTZXNzaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldFRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V3JhcHBlZENvbm5lY3Rpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNYXJrZWRSZXVzYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Jlc3BvbnNlQXZhaWxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFya1JldXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlUmVzcG9uc2VFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmVSZXNwb25zZUhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFJlcXVlc3RFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVxdWVzdEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElkbGVEdXJhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubWFya1JldXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFBvb2xFbnRyeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFBvb2xFbnRyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0UG9vbEVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubk9wZXJhdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXllclByb3RvY29sIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93bkVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0dW5uZWxQcm94eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5leHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHVubmVsVGFyZ2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJjb25uT3BlcmF0b3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb25uZWN0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm91dGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRlIgorIHR5cGU9ImphdmEubGFuZy5PYmplY3QiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRyYWNrZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZVRyYWNrZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFBvb2xlZENvbm5BZGFwdGVyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RDbGllbnRDb25uQWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RQb29sZWRDb25uQWRhcHRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0UG9vbGVkQ29ubkFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYW5hZ2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RQb29sRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRBdHRhY2hlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxheWVyUHJvdG9jb2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHVubmVsUHJveHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InR1bm5lbFRhcmdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0icG9vbEVudHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RQb29sRW50cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0Q2xpZW50Q29ubmVjdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5Tb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uT3BlcmF0ZWRDbGllbnRDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0Q2xpZW50Q29ubmVjdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkRlZmF1bHRDbGllbnRDb25uZWN0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldEhvc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29tcGxldGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2siIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2siIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRDbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0Q2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uRGVmYXVsdENsaWVudENvbm5lY3Rpb25PcGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkNvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVTb2NrZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlY3VyZUNvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNjaGVtZVJlZ2lzdHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0SHR0cFJvdXRlUGxhbm5lciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZVBsYW5uZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwUm91dGVQbGFubmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uRGVmYXVsdEh0dHBSb3V0ZVBsYW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hyZWciIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRldGVybWluZVJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJzY2hlbWVSZWdpc3RyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdFJlc3BvbnNlUGFyc2VyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkFic3RyYWN0TWVzc2FnZVBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRSZXNwb25zZVBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkRlZmF1bHRSZXNwb25zZVBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUZhY3RvcnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InBhcnNlSGVhZCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vzc2lvbkJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklkbGVDb25uZWN0aW9uSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWRsZUNvbm5lY3Rpb25IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uSWRsZUNvbm5lY3Rpb25IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm5lY3Rpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwQ29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsaWREdXJhdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VFeHBpcmVkQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlSWRsZUNvbm5lY3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRsZVRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubmVjdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9nZ2luZ1Nlc3Npb25JbnB1dEJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dnaW5nU2Vzc2lvbklucHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uTG9nZ2luZ1Nlc3Npb25JbnB1dEJ1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aXJlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLldpcmUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGF0YUF2YWlsYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxvZ2dpbmdTZXNzaW9uT3V0cHV0QnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uT3V0cHV0QnVmZmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dnaW5nU2Vzc2lvbk91dHB1dEJ1ZmZlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkxvZ2dpbmdTZXNzaW9uT3V0cHV0QnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lyZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5XaXJlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3h5U2VsZWN0b3JSb3V0ZVBsYW5uZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm94eVNlbGVjdG9yUm91dGVQbGFubmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uUHJveHlTZWxlY3RvclJvdXRlUGxhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaHJlZyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9zZWwiIHR5cGU9ImphdmEubmV0LlByb3h5U2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaG9vc2VQcm94eSIKKyByZXR1cm49ImphdmEubmV0LlByb3h5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm94aWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLm5ldC5Qcm94eSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRlcm1pbmVQcm94eSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRlcm1pbmVSb3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc2EiIHR5cGU9ImphdmEubmV0LkluZXRTb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3h5U2VsZWN0b3IiCisgcmV0dXJuPSJqYXZhLm5ldC5Qcm94eVNlbGVjdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3h5U2VsZWN0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9zZWwiIHR5cGU9ImphdmEubmV0LlByb3h5U2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJwcm94eVNlbGVjdG9yIgorIHR5cGU9ImphdmEubmV0LlByb3h5U2VsZWN0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY2hlbWVSZWdpc3RyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbmdsZUNsaWVudENvbm5NYW5hZ2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NocmVnIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRTdGlsbFVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VFeHBpcmVkQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlSWRsZUNvbm5lY3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRsZXRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDb25uZWN0aW9uT3BlcmF0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaHJlZyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5NYW5hZ2VkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWVSZWdpc3RyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk1hbmFnZWRDbGllbnRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZER1cmF0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lVW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdENvbm5lY3Rpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uUmVxdWVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldm9rZUNvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1JU1VTRV9NRVNTQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0ludmFsaWQgdXNlIG9mIFNpbmdsZUNsaWVudENvbm5NYW5hZ2VyOiBjb25uZWN0aW9uIHN0aWxsIGFsbG9jYXRlZC5cbk1ha2Ugc3VyZSB0byByZWxlYXNlIHRoZSBjb25uZWN0aW9uIGJlZm9yZSBhbGxvY2F0aW5nIGFub3RoZXIgb25lLiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbHdheXNTaHV0RG93biIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29ubk9wZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25PcGVyYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbm5lY3Rpb25FeHBpcmVzVGltZSIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNTaHV0RG93biIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXN0UmVsZWFzZVRpbWUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hbmFnZWRDb25uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIuQ29ubkFkYXB0ZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY2hlbWVSZWdpc3RyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1bmlxdWVQb29sRW50cnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5TaW5nbGVDbGllbnRDb25uTWFuYWdlci5Qb29sRW50cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIuQ29ubkFkYXB0ZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5BYnN0cmFjdFBvb2xlZENvbm5BZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIuQ29ubkFkYXB0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5TaW5nbGVDbGllbnRDb25uTWFuYWdlci5Db25uQWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLlNpbmdsZUNsaWVudENvbm5NYW5hZ2VyLlBvb2xFbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIuUG9vbEVudHJ5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RQb29sRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaW5nbGVDbGllbnRDb25uTWFuYWdlci5Qb29sRW50cnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5TaW5nbGVDbGllbnRDb25uTWFuYWdlci5Qb29sRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpcmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpcmUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5XaXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nIiB0eXBlPSJvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2ciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3V0cHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3V0cHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im91dHB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbSIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdENvbm5Qb29sIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5SZWZRdWV1ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0Q29ublBvb2wiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5BYnN0cmFjdENvbm5Qb29sIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZUV4cGlyZWRDb25uZWN0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VJZGxlQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZGxldGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUNsb3NlZENvbm5lY3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuYWJsZUNvbm5lY3Rpb25HQyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmcmVlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbEVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXVzYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsaWREdXJhdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZVVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0dW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNvbm5lY3Rpb25Qb29sVGltZW91dEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvblBvb2xUaW1lb3V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZUxvc3RFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZVJlZmVyZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iamF2YS5sYW5nLnJlZi5SZWZlcmVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFBvb2xFbnRyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uUG9vbEVudHJ5UmVxdWVzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImlkbGVDb25uSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLklkbGVDb25uZWN0aW9uSGFuZGxlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzU2h1dERvd24iCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNzdWVkQ29ubmVjdGlvbnMiCisgdHlwZT0iamF2YS51dGlsLlNldCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bUNvbm5lY3Rpb25zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBvb2xMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlZlF1ZXVlIgorIHR5cGU9ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNQb29sRW50cnkiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5BYnN0cmFjdFBvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljUG9vbEVudHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXVlIiB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlJmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBsYW5uZWRSb3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2Vha1JlZiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnlSZWYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1Bvb2xFbnRyeVJlZiIKKyBleHRlbmRzPSJqYXZhLmxhbmcucmVmLldlYWtSZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1Bvb2xFbnRyeVJlZiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbEVudHJ5UmVmIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXVlIiB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlJmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljUG9vbGVkQ29ubkFkYXB0ZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5BYnN0cmFjdFBvb2xlZENvbm5BZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNQb29sZWRDb25uQWRhcHRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbGVkQ29ubkFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0c2NjbSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5UaHJlYWRTYWZlQ2xpZW50Q29ubk1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0UG9vbEVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UG9vbEVudHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5BYnN0cmFjdFBvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb25uUG9vbEJ5Um91dGUiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5BYnN0cmFjdENvbm5Qb29sIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29ublBvb2xCeVJvdXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQ29ublBvb2xCeVJvdXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0b3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25PcGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVFbnRyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvc3BsIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyZWVDb25uUXVldWUiCisgcmV0dXJuPSJqYXZhLnV0aWwuUXVldWUmbHQ7b3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUm91dGVUb1Bvb2xNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O29yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlLCBvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVXYWl0aW5nVGhyZWFkUXVldWUiCisgcmV0dXJuPSJqYXZhLnV0aWwuUXVldWUmbHQ7b3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5XYWl0aW5nVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVDbG9zZWRDb25uZWN0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVMZWFzdFVzZWRFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlZUVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldXNhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZER1cmF0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lVW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbnNJblBvb2wiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRyeUJsb2NraW5nIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhYm9ydGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLldhaXRpbmdUaHJlYWRBYm9ydGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDb25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25Qb29sVGltZW91dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGcmVlRW50cnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbEVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3NwbCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGVQb29sIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcmVhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlTG9zdEVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1JvdXRlU3BlY2lmaWNQb29sIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1dhaXRpbmdUaHJlYWQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLldhaXRpbmdUaHJlYWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm9zcGwiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uUm91dGVTcGVjaWZpY1Bvb2wiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm90aWZ5V2FpdGluZ1RocmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvc3BsIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RQb29sRW50cnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlBvb2xFbnRyeVJlcXVlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJmcmVlQ29ubmVjdGlvbnMiCisgdHlwZT0iamF2YS51dGlsLlF1ZXVlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4VG90YWxDb25uZWN0aW9ucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im9wZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25PcGVyYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm91dGVUb1Bvb2wiCisgdHlwZT0iamF2YS51dGlsLk1hcCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2FpdGluZ1RocmVhZHMiCisgdHlwZT0iamF2YS51dGlsLlF1ZXVlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQb29sRW50cnlSZXF1ZXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWJvcnRSZXF1ZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvb2xFbnRyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDb25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25Qb29sVGltZW91dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJlZlF1ZXVlSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZVJlZmVyZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmVmUXVldWVXb3JrZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWZRdWV1ZVdvcmtlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJlZlF1ZXVlV29ya2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWUiIHR5cGU9ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uUmVmUXVldWVIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJyZWZIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uUmVmUXVldWVIYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZWZRdWV1ZSIKKyB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3b3JrZXJUaHJlYWQiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJvdXRlU3BlY2lmaWNQb29sIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSb3V0ZVNwZWNpZmljUG9vbCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhFbnRyaWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhbGxvY0VudHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlZEVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlRW50cnkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcm9wRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyZWVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbEVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJ5Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhFbnRyaWVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1RocmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVbnVzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUaHJlYWQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLldhaXRpbmdUaHJlYWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVldWVUaHJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5XYWl0aW5nVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVRocmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Ind0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLldhaXRpbmdUaHJlYWQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJmcmVlRW50cmllcyIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkTGlzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4RW50cmllcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bUVudHJpZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm91dGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndhaXRpbmdUaHJlYWRzIgorIHR5cGU9ImphdmEudXRpbC5RdWV1ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRocmVhZFNhZmVDbGllbnRDb25uTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkU2FmZUNsaWVudENvbm5NYW5hZ2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uVGhyZWFkU2FmZUNsaWVudENvbm5NYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaHJlZyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2VFeHBpcmVkQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlSWRsZUNvbm5lY3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRsZVRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDb25uZWN0aW9uT3BlcmF0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaHJlZyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb25Qb29sIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5BYnN0cmFjdENvbm5Qb29sIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25uZWN0aW9uc0luUG9vbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb25zSW5Qb29sIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZVJlZ2lzdHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VDb25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkRHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVVbml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Q29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25SZXF1ZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNvbm5PcGVyYXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb25uZWN0aW9uUG9vbCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkFic3RyYWN0Q29ublBvb2wiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjaGVtZVJlZ2lzdHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXYWl0aW5nVGhyZWFkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXYWl0aW5nVGhyZWFkIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uV2FpdGluZ1RocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9vbCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVhZGxpbmUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbmRpdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvb2wiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVycnVwdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FrZXVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXYWl0aW5nVGhyZWFkQWJvcnRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2FpdGluZ1RocmVhZEFib3J0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5XYWl0aW5nVGhyZWFkQWJvcnRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYm9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FpdGluZ1RocmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndhaXRpbmdUaHJlYWQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uV2FpdGluZ1RocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZSIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdENvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0Q29va2llQXR0cmlidXRlSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQWJzdHJhY3RDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RDb29raWVTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdENvb2tpZVNwZWMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkFic3RyYWN0Q29va2llU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kQXR0cmliSGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llQXR0cmlidXRlSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJIYW5kbGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYkhhbmRsZXJzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7b3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckF0dHJpYkhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNDbGllbnRDb29raWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5DbGllbnRDb29raWUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLlNldENvb2tpZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNDbGllbnRDb29raWUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJhc2ljQ2xpZW50Q29va2llIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNBdHRyaWJ1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tbWVudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tbWVudFVSTCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tYWluIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBpcnlEYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9ydHMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0V4cGlyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1BlcnNpc3RlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21tZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb21haW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhwaXJ5RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGlyeURhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY3VyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZlcnNpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNDbGllbnRDb29raWUyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY0NsaWVudENvb2tpZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0NsaWVudENvb2tpZTIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJhc2ljQ2xpZW50Q29va2llMiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0Q29tbWVudFVSTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnRVUkwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzY2FyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc2NhcmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9ydHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNDb21tZW50SGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQWJzdHJhY3RDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNDb21tZW50SGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNDb21tZW50SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljRG9tYWluSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljRG9tYWluSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNEb21haW5IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0V4cGlyZXNIYW5kbGVyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5BYnN0cmFjdENvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0V4cGlyZXNIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY0V4cGlyZXNIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZXBhdHRlcm5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljTWF4QWdlSGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQWJzdHJhY3RDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNNYXhBZ2VIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY01heEFnZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1BhdGhIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llQXR0cmlidXRlSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNQYXRoSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNQYXRoSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNTZWN1cmVIYW5kbGVyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5BYnN0cmFjdENvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1NlY3VyZUhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJhc2ljU2VjdXJlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJlc3RNYXRjaFNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCZXN0TWF0Y2hTcGVjIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CZXN0TWF0Y2hTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZXBhdHRlcm5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUhlYWRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmVzdE1hdGNoU3BlYyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmVzdE1hdGNoU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRDb29raWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7b3JnLmFwYWNoZS5odHRwLkhlYWRlciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZXMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb25IZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCZXN0TWF0Y2hTcGVjRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCZXN0TWF0Y2hTcGVjRmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmVzdE1hdGNoU3BlY0ZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJyb3dzZXJDb21wYXRTcGVjIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5Db29raWVTcGVjQmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJyb3dzZXJDb21wYXRTcGVjIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5Ccm93c2VyQ29tcGF0U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGVwYXR0ZXJucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCcm93c2VyQ29tcGF0U3BlYyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQnJvd3NlckNvbXBhdFNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0Q29va2llcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uSGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREFURV9QQVRURVJOUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJyb3dzZXJDb21wYXRTcGVjRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCcm93c2VyQ29tcGF0U3BlY0ZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJyb3dzZXJDb21wYXRTcGVjRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29va2llU3BlY0Jhc2UiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkFic3RyYWN0Q29va2llU3BlYyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29va2llU3BlY0Jhc2UiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkNvb2tpZVNwZWNCYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHREb21haW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7b3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0ZVBhcnNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlUGFyc2VFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkRhdGVQYXJzZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGVQYXJzZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuRGF0ZVBhcnNlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGVVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VEYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZVZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRlUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5EYXRlUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VEYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZVZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlRm9ybWF0cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRlUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5EYXRlUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VEYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZVZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlRm9ybWF0cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydERhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRlUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5EYXRlUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHTVQiCisgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBVFRFUk5fQVNDVElNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtFRUUgTU1NIGQgSEg6bW06c3MgeXl5eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVRURVJOX1JGQzEwMzYiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7RUVFRSwgZGQtTU1NLXl5IEhIOm1tOnNzIHp6eiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVRURVJOX1JGQzExMjMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7RUVFLCBkZCBNTU0geXl5eSBISDptbTpzcyB6enomcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5ldHNjYXBlRG9tYWluSGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNEb21haW5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmV0c2NhcGVEb21haW5IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5OZXRzY2FwZURvbWFpbkhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmV0c2NhcGVEcmFmdEhlYWRlclBhcnNlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmV0c2NhcGVEcmFmdEhlYWRlclBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuTmV0c2NhcGVEcmFmdEhlYWRlclBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZUhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5OZXRzY2FwZURyYWZ0SGVhZGVyUGFyc2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZXRzY2FwZURyYWZ0U3BlYyIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQ29va2llU3BlY0Jhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOZXRzY2FwZURyYWZ0U3BlYyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuTmV0c2NhcGVEcmFmdFNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlcGF0dGVybnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmV0c2NhcGVEcmFmdFNwZWMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLk5ldHNjYXBlRHJhZnRTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdENvb2tpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuSGVhZGVyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7b3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbkhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVYUElSRVNfUEFUVEVSTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtFRUUsIGRkLU1NTS15eXl5IEhIOm1tOnNzIHomcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5ldHNjYXBlRHJhZnRTcGVjRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOZXRzY2FwZURyYWZ0U3BlY0ZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLk5ldHNjYXBlRHJhZnRTcGVjRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUkZDMjEwOURvbWFpbkhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSRkMyMTA5RG9tYWluSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjEwOURvbWFpbkhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLlNldENvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzIxMDlTcGVjIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5Db29raWVTcGVjQmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJGQzIxMDlTcGVjIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGVwYXR0ZXJucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbmVIZWFkZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJGQzIxMDlTcGVjIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRDb29raWVBc1ZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0Q29va2llcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0UGFyYW1Bc1ZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbkhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSRkMyMTA5U3BlY0ZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjRmFjdG9yeSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjEwOVNwZWNGYWN0b3J5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5U3BlY0ZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzIxMDlWZXJzaW9uSGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQWJzdHJhY3RDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjEwOVZlcnNpb25IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5VmVyc2lvbkhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSRkMyOTY1Q29tbWVudFVybEF0dHJpYnV0ZUhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSRkMyOTY1Q29tbWVudFVybEF0dHJpYnV0ZUhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVDb21tZW50VXJsQXR0cmlidXRlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50dXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSRkMyOTY1RGlzY2FyZEF0dHJpYnV0ZUhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSRkMyOTY1RGlzY2FyZEF0dHJpYnV0ZUhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVEaXNjYXJkQXR0cmlidXRlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50dXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSRkMyOTY1RG9tYWluQXR0cmlidXRlSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJGQzI5NjVEb21haW5BdHRyaWJ1dGVIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyOTY1RG9tYWluQXR0cmlidXRlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkb21haW5NYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRvbWFpbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzI5NjVQb3J0QXR0cmlidXRlSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJGQzI5NjVQb3J0QXR0cmlidXRlSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjk2NVBvcnRBdHRyaWJ1dGVIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnRWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUkZDMjk2NVNwZWMiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzIxMDlTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjk2NVNwZWMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjk2NVNwZWMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZXBhdHRlcm5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUhlYWRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzI5NjVTcGVjRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSRkMyOTY1U3BlY0ZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVTcGVjRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUkZDMjk2NVZlcnNpb25BdHRyaWJ1dGVIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llQXR0cmlidXRlSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjk2NVZlcnNpb25BdHRyaWJ1dGVIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyOTY1VmVyc2lvbkF0dHJpYnV0ZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLlNldENvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5IgorPgorPGNsYXNzIG5hbWU9IkVudGl0eURlc2VyaWFsaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW50aXR5RGVzZXJpYWxpemVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmVudGl0eS5FbnRpdHlEZXNlcmlhbGl6ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5TdHJhdGVneSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5Db250ZW50TGVuZ3RoU3RyYXRlZ3kiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNlcmlhbGl6ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9EZXNlcmlhbGl6ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQmFzaWNIdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW50aXR5U2VyaWFsaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW50aXR5U2VyaWFsaXplciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5lbnRpdHkuRW50aXR5U2VyaWFsaXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlblN0cmF0ZWd5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkNvbnRlbnRMZW5ndGhTdHJhdGVneSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRvU2VyaWFsaXplIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlcmlhbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50aXR5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxheENvbnRlbnRMZW5ndGhTdHJhdGVneSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkNvbnRlbnRMZW5ndGhTdHJhdGVneSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF4Q29udGVudExlbmd0aFN0cmF0ZWd5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmVudGl0eS5MYXhDb250ZW50TGVuZ3RoU3RyYXRlZ3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGV0ZXJtaW5lTGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpY3RDb250ZW50TGVuZ3RoU3RyYXRlZ3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5Db250ZW50TGVuZ3RoU3RyYXRlZ3kiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmljdENvbnRlbnRMZW5ndGhTdHJhdGVneSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5lbnRpdHkuU3RyaWN0Q29udGVudExlbmd0aFN0cmF0ZWd5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRldGVybWluZUxlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pbyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdE1lc3NhZ2VQYXJzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW8uSHR0cE1lc3NhZ2VQYXJzZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0TWVzc2FnZVBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdE1lc3NhZ2VQYXJzZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuTGluZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlSGVhZCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXNzaW9uQnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhIZWFkZXJDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhMaW5lTGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuTGluZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ibGluZVBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RNZXNzYWdlV3JpdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBNZXNzYWdlV3JpdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdE1lc3NhZ2VXcml0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQWJzdHJhY3RNZXNzYWdlV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVIZWFkTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImxpbmVCdWYiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaW5lRm9ybWF0dGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkxpbmVGb3JtYXR0ZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlc3Npb25CdWZmZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFNlc3Npb25JbnB1dEJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0U2Vzc2lvbklucHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkFic3RyYWN0U2Vzc2lvbklucHV0QnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbGxCdWZmZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldHJpY3MiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW8uSHR0cFRyYW5zcG9ydE1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQnVmZmVyZWREYXRhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpbmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFNlc3Npb25PdXRwdXRCdWZmZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RTZXNzaW9uT3V0cHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkFic3RyYWN0U2Vzc2lvbk91dHB1dEJ1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pby5IdHRwVHJhbnNwb3J0TWV0cmljcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyc2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2h1bmtlZElucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHVua2VkSW5wdXRTdHJlYW0iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQ2h1bmtlZElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGb290ZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNodW5rZWRPdXRwdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHVua2VkT3V0cHV0U3RyZWFtIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkNodW5rZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uT3V0cHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHVua2VkT3V0cHV0U3RyZWFtIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkNodW5rZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uT3V0cHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoQ2FjaGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaENhY2hlV2l0aEFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlclRvQXBwZW5kIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2xvc2luZ0NodW5rIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudExlbmd0aElucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50TGVuZ3RoSW5wdXRTdHJlYW0iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQ29udGVudExlbmd0aElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRMZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50TGVuZ3RoT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudExlbmd0aE91dHB1dFN0cmVhbSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5Db250ZW50TGVuZ3RoT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudExlbmd0aCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUmVxdWVzdFBhcnNlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdE1lc3NhZ2VQYXJzZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUmVxdWVzdFBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5IdHRwUmVxdWVzdFBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0RmFjdG9yeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0RmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZUhlYWQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cE1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb25CdWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUmVxdWVzdFdyaXRlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdE1lc3NhZ2VXcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUmVxdWVzdFdyaXRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5IdHRwUmVxdWVzdFdyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdHRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuTGluZUZvcm1hdHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUhlYWRMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUmVzcG9uc2VQYXJzZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQWJzdHJhY3RNZXNzYWdlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJlc3BvbnNlUGFyc2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkh0dHBSZXNwb25zZVBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUZhY3RvcnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InBhcnNlSGVhZCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vzc2lvbkJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBSZXNwb25zZVdyaXRlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdE1lc3NhZ2VXcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUmVzcG9uc2VXcml0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uSHR0cFJlc3BvbnNlV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IndyaXRlSGVhZExpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cE1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBUcmFuc3BvcnRNZXRyaWNzSW1wbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW8uSHR0cFRyYW5zcG9ydE1ldHJpY3MiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBUcmFuc3BvcnRNZXRyaWNzSW1wbCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5IdHRwVHJhbnNwb3J0TWV0cmljc0ltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZXNUcmFuc2ZlcnJlZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jcmVtZW50Qnl0ZXNUcmFuc2ZlcnJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCeXRlc1RyYW5zZmVycmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWRlbnRpdHlJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWRlbnRpdHlJbnB1dFN0cmVhbSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5JZGVudGl0eUlucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJZGVudGl0eU91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IklkZW50aXR5T3V0cHV0U3RyZWFtIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLklkZW50aXR5T3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRJbnB1dEJ1ZmZlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdFNlc3Npb25JbnB1dEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldElucHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLlNvY2tldElucHV0QnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXNEYXRhQXZhaWxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRPdXRwdXRCdWZmZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQWJzdHJhY3RTZXNzaW9uT3V0cHV0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0T3V0cHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLlNvY2tldE91dHB1dEJ1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmlvIgorPgorPGludGVyZmFjZSBuYW1lPSJIdHRwTWVzc2FnZVBhcnNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBNZXNzYWdlV3JpdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFRyYW5zcG9ydE1ldHJpY3MiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlc1RyYW5zZmVycmVkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2Vzc2lvbklucHV0QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pby5IdHRwVHJhbnNwb3J0TWV0cmljcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGF0YUF2YWlsYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2Vzc2lvbk91dHB1dEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUxpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlIgorPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0SHR0cE1lc3NhZ2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cE1lc3NhZ2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cE1lc3NhZ2UiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQWJzdHJhY3RIdHRwTWVzc2FnZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdEh0dHBNZXNzYWdlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkFic3RyYWN0SHR0cE1lc3NhZ2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zSGVhZGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxIZWFkZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpcnN0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhc3RIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkZXJJdGVyYXRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkZXJJdGVyYXRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXJzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJoZWFkZXJncm91cCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJHcm91cCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhcmFtcyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0hlYWRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIZWFkZXJFbGVtZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVyRWxlbWVudCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlckVsZW1lbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNIZWFkZXJFbGVtZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSGVhZGVyRWxlbWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckJ5TmFtZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0hlYWRlckVsZW1lbnRJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudEl0ZXJhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0hlYWRlckVsZW1lbnRJdGVyYXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlckVsZW1lbnRJdGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlckl0ZXJhdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyVmFsdWVQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVyRWxlbWVudEl0ZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSGVhZGVyRWxlbWVudEl0ZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVySXRlcmF0b3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imhhc05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEVsZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRFbGVtZW50IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEVsZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIZWFkZXJJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVySXRlcmF0b3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIZWFkZXJJdGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbHRlckhlYWRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZE5leHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImFsbEhlYWRlcnMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJyZW50SW5kZXgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVhZGVyTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljSGVhZGVyVmFsdWVGb3JtYXR0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyVmFsdWVGb3JtYXR0ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVyVmFsdWVGb3JtYXR0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIZWFkZXJWYWx1ZUZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkb0Zvcm1hdFZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdW90ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlc3RpbWF0ZUVsZW1lbnRzTGVuIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlc3RpbWF0ZUhlYWRlckVsZW1lbnRMZW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsZW0iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVzdGltYXRlTmFtZVZhbHVlUGFpckxlbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnZwIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlc3RpbWF0ZVBhcmFtZXRlcnNMZW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im52cHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RWxlbWVudHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEhlYWRlckVsZW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEhlYWRlckVsZW1lbnQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0TmFtZVZhbHVlUGFpciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudnAiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdW90ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJWYWx1ZUZvcm1hdHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXROYW1lVmFsdWVQYWlyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnZwIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0UGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudnBzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdW90ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJWYWx1ZUZvcm1hdHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRQYXJhbWV0ZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnZwcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZXBhcmF0b3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Vuc2FmZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlclZhbHVlRm9ybWF0dGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFUEFSQVRPUlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7IDssOkAoKSZsdDsmZ3Q7XFxcJnF1b3Q7L1tdPz17fVx0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOU0FGRV9DSEFSUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtcJnF1b3Q7XFwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljSGVhZGVyVmFsdWVQYXJzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyVmFsdWVQYXJzZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVyVmFsdWVQYXJzZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIZWFkZXJWYWx1ZVBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIZWFkZXJFbGVtZW50IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlTmFtZVZhbHVlUGFpciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlRWxlbWVudHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXJFbGVtZW50IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJWYWx1ZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUhlYWRlckVsZW1lbnQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlTmFtZVZhbHVlUGFpciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyVmFsdWVQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VOYW1lVmFsdWVQYWlyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZU5hbWVWYWx1ZVBhaXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxpbWl0ZXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VQYXJhbWV0ZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUGFyYW1ldGVycyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIZWFkZXJWYWx1ZVBhcnNlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdCIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXF1ZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0bGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXhwZWN0Q29udGludWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudGl0eSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIdHRwUmVxdWVzdCIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5BYnN0cmFjdEh0dHBNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSHR0cFJlcXVlc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIdHRwUmVxdWVzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXF1ZXN0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSHR0cFJlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXF1ZXN0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSHR0cFJlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0bGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0TGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5SZXF1ZXN0TGluZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0h0dHBSZXNwb25zZSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5BYnN0cmFjdEh0dHBNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXNwb25zZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c2xpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVhc29uUGhyYXNlQ2F0YWxvZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXNwb25zZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c2xpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXNwb25zZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhc29uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXR1c0xpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYyIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWFzb25QaHJhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzQ29kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0dXNMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzbGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXR1c0xpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljTGluZUZvcm1hdHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0xpbmVGb3JtYXR0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9Gb3JtYXRIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRm9ybWF0UmVxdWVzdExpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxbGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRm9ybWF0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0bGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXN0aW1hdGVQcm90b2NvbFZlcnNpb25MZW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0SGVhZGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFJlcXVlc3RMaW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcWxpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5SZXF1ZXN0TGluZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFJlcXVlc3RMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxbGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFN0YXR1c0xpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGxpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkxpbmVGb3JtYXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0U3RhdHVzTGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRsaW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0QnVmZmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lRm9ybWF0dGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0xpbmVQYXJzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuTGluZVBhcnNlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNMaW5lUGFyc2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljTGluZVBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0xpbmVQYXJzZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lUGFyc2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ham9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU3RhdHVzTGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzUHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlSGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkxpbmVQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVN0YXR1c0xpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkxpbmVQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VTdGF0dXNMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lUGFyc2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb3RvY29sIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0xpc3RIZWFkZXJJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljTGlzdEhlYWRlckl0ZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljTGlzdEhlYWRlckl0ZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVycyIgdHlwZT0iamF2YS51dGlsLkxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWx0ZXJIZWFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmROZXh0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEVsZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhbGxIZWFkZXJzIgorIHR5cGU9ImphdmEudXRpbC5MaXN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJyZW50SW5kZXgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVhZGVyTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFzdEluZGV4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY05hbWVWYWx1ZVBhaXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNOYW1lVmFsdWVQYWlyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljTmFtZVZhbHVlUGFpciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1JlcXVlc3RMaW5lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1JlcXVlc3RMaW5lIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljUmVxdWVzdExpbmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJpIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1N0YXR1c0xpbmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNTdGF0dXNMaW5lIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljU3RhdHVzTGluZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c0NvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uUGhyYXNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhc29uUGhyYXNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0dXNDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljVG9rZW5JdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuVG9rZW5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNUb2tlbkl0ZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljVG9rZW5JdGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlckl0ZXJhdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kTmV4dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlbkVuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlblNlcGFyYXRvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIdHRwU2VwYXJhdG9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNUb2tlbkNoYXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Rva2VuU2VwYXJhdG9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXaGl0ZXNwYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dFRva2VuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iSFRUUF9TRVBBUkFUT1JTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OyAsOz0oKSZsdDsmZ3Q7QDpcXFwmcXVvdDsvW10/e31cdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJyZW50SGVhZGVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJyZW50VG9rZW4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhlYWRlckl0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VhcmNoUG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCdWZmZXJlZEhlYWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5Gb3JtYXR0ZWRIZWFkZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkSGVhZGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJ1ZmZlcmVkSGVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnVmZmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWVQb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSGVhZGVyR3JvdXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGVhZGVyR3JvdXAiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNIZWFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxIZWFkZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbmRlbnNlZEhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rmlyc3RIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlYWRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdEhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXJzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJIZWFkZXJWYWx1ZUZvcm1hdHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0SGVhZGVyRWxlbWVudCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdE5hbWVWYWx1ZVBhaXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im52cCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFBhcmFtZXRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im52cHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSGVhZGVyVmFsdWVQYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJwYXJzZUVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXJFbGVtZW50IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlTmFtZVZhbHVlUGFpciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVBhcmFtZXRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpcltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkxpbmVGb3JtYXR0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0UmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcWxpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5SZXF1ZXN0TGluZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRTdGF0dXNMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0bGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMaW5lUGFyc2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaGFzUHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VSZXF1ZXN0TGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5SZXF1ZXN0TGluZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VTdGF0dXNMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQYXJzZXJDdXJzb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlckN1cnNvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb3dlckJvdW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwcGVyQm91bmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF0RW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb3dlckJvdW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcHBlckJvdW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVBvcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdEh0dHBQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cFBhcmFtcyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkFic3RyYWN0SHR0cFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuUGFyYW1ldGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZVBhcmFtZXRlciIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50UGFyYW1ldGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nUGFyYW1ldGVyIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyYW1ldGVyRmFsc2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyYW1ldGVyVHJ1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm9vbGVhblBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlUGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludFBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb25nUGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0h0dHBQYXJhbXMiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5BYnN0cmFjdEh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNIdHRwUGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuQmFzaWNIdHRwUGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5UGFyYW1zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1BhcmFtZXRlclNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQYXJhbWV0ZXJTZXRMb2NhbGx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1ldGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb3JlQ29ubmVjdGlvblBOYW1lcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQ09OTkVDVElPTl9USU1FT1VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbi50aW1lb3V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9IRUFERVJfQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5jb25uZWN0aW9uLm1heC1oZWFkZXItY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX0xJTkVfTEVOR1RIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbi5tYXgtbGluZS1sZW5ndGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09DS0VUX0JVRkZFUl9TSVpFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuc29ja2V0LmJ1ZmZlci1zaXplJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX0xJTkdFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnNvY2tldC5saW5nZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09fVElNRU9VVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnNvY2tldC50aW1lb3V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQUxFX0NPTk5FQ1RJT05fQ0hFQ0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5jb25uZWN0aW9uLnN0YWxlY2hlY2smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENQX05PREVMQVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC50Y3Aubm9kZWxheSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb3JlUHJvdG9jb2xQTmFtZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkhUVFBfQ09OVEVOVF9DSEFSU0VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuY29udGVudC1jaGFyc2V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfRUxFTUVOVF9DSEFSU0VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuZWxlbWVudC1jaGFyc2V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUdJTl9TRVJWRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5vcmlnaW4tc2VydmVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1ZFUlNJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm90b2NvbC52ZXJzaW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUklDVF9UUkFOU0ZFUl9FTkNPRElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnByb3RvY29sLnN0cmljdC10cmFuc2Zlci1lbmNvZGluZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VSX0FHRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAudXNlcmFnZW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRV9FWFBFQ1RfQ09OVElOVUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm90b2NvbC5leHBlY3QtY29udGludWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FJVF9GT1JfQ09OVElOVUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm90b2NvbC53YWl0LWZvci1jb250aW51ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRlZEh0dHBQYXJhbXMiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5BYnN0cmFjdEh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRlZEh0dHBQYXJhbXMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5EZWZhdWx0ZWRIdHRwUGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWwiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvcHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cEFic3RyYWN0UGFyYW1CZWFuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJwYXJhbXMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cENvbm5lY3Rpb25QYXJhbUJlYW4iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwQWJzdHJhY3RQYXJhbUJlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwQ29ubmVjdGlvblBhcmFtQmVhbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBDb25uZWN0aW9uUGFyYW1CZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRDb25uZWN0aW9uVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm5lY3Rpb25UaW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGluZ2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZ2VyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29UaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29UaW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29ja2V0QnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldEJ1ZmZlclNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFsZUNoZWNraW5nRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YWxlQ2hlY2tpbmdFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRjcE5vRGVsYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0Y3BOb0RlbGF5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBDb25uZWN0aW9uUGFyYW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5Db3JlQ29ubmVjdGlvblBOYW1lcyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb25UaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmdlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb1RpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29ja2V0QnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUY3BOb0RlbGF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YWxlQ2hlY2tpbmdFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb25uZWN0aW9uVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5nZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRCdWZmZXJTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YWxlQ2hlY2tpbmdFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGNwTm9EZWxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJIdHRwUGFyYW1zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29weSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW5QYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGVQYXJhbWV0ZXIiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50UGFyYW1ldGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmdQYXJhbWV0ZXIiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQYXJhbWV0ZXJGYWxzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1BhcmFtZXRlclRydWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUGFyYW1ldGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJvb2xlYW5QYXJhbWV0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlUGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50UGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9uZ1BhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBQcm90b2NvbFBhcmFtQmVhbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBQcm90b2NvbFBhcmFtQmVhbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQcm90b2NvbFBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudENoYXJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50Q2hhcnNldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIdHRwRWxlbWVudENoYXJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJodHRwRWxlbWVudENoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlRXhwZWN0Q29udGludWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VFeHBlY3RDb250aW51ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VyQWdlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyQWdlbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVyc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUHJvdG9jb2xQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkNvcmVQcm90b2NvbFBOYW1lcyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRDaGFyc2V0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIdHRwRWxlbWVudENoYXJzZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJBZ2VudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudENoYXJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEh0dHBFbGVtZW50Q2hhcnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlRXhwZWN0Q29udGludWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZXJBZ2VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJhZ2VudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VFeHBlY3RDb250aW51ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wiCis+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIdHRwQ29udGV4dCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSHR0cENvbnRleHQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkJhc2ljSHR0cENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBDb250ZXh0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBDb250ZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50Q29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0h0dHBQcm9jZXNzb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUHJvY2Vzc29yIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEludGVyY2VwdG9yTGlzdCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3JMaXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBQcm9jZXNzb3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkJhc2ljSHR0cFByb2Nlc3NvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJjZXB0b3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcmNlcHRvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyY2VwdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyY2VwdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVxdWVzdEludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVxdWVzdEludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVzcG9uc2VJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0Y3AiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRSZXNwb25zZUludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFySW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclJlcXVlc3RJbnRlcmNlcHRvcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUmVzcG9uc2VJbnRlcmNlcHRvcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkJhc2ljSHR0cFByb2Nlc3NvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5SW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuQmFzaWNIdHRwUHJvY2Vzc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RJbnRlcmNlcHRvckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzcG9uc2VJbnRlcmNlcHRvckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUmVxdWVzdEludGVyY2VwdG9yQnlDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUmVzcG9uc2VJbnRlcmNlcHRvckJ5Q2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGF6eiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludGVyY2VwdG9ycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0icmVxdWVzdEludGVyY2VwdG9ycyIKKyB0eXBlPSJqYXZhLnV0aWwuTGlzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc3BvbnNlSW50ZXJjZXB0b3JzIgorIHR5cGU9ImphdmEudXRpbC5MaXN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRlZEh0dHBDb250ZXh0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0ZWRIdHRwQ29udGV4dCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuRGVmYXVsdGVkSHR0cENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0cyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRXhlY3V0aW9uQ29udGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iSFRUUF9DT05ORUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1BST1hZX0hPU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm94eV9ob3N0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfUkVRVUVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnJlcXVlc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9SRVFfU0VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnJlcXVlc3Rfc2VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1JFU1BPTlNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucmVzcG9uc2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9UQVJHRVRfSE9TVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnRhcmdldF9ob3N0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSFRUUCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaXNXaGl0ZXNwYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFTQ0lJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0FTQ0lJJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQVJTRVRfUEFSQU0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7OyBjaGFyc2V0PSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSFVOS19DT0RJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2h1bmtlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05OX0NMT1NFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0Nsb3NlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTk5fRElSRUNUSVZFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0Nvbm5lY3Rpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OTl9LRUVQX0FMSVZFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0tlZXAtQWxpdmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9FTkNPRElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtDb250ZW50LUVuY29kaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfTEVOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0NvbnRlbnQtTGVuZ3RoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtDb250ZW50LVR5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFX0hFQURFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtEYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfQ09OVEVOVF9DSEFSU0VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0lTTy04ODU5LTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9DT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfUFJPVE9DT0xfQ0hBUlNFVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtVUy1BU0NJSSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFBFQ1RfQ09OVElOVUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7MTAwLUNvbnRpbnVlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYUEVDVF9ESVJFQ1RJVkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7RXhwZWN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJREVOVElUWV9DT0RJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aWRlbnRpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNPXzg4NTlfMSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtJU08tODg1OS0xJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT0NURVRfU1RSRUFNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBMQUlOX1RFWFRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0ZXh0L3BsYWluJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFUlZFUl9IRUFERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7U2VydmVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFSR0VUX0hPU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7SG9zdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0ZFUl9FTkNPRElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtUcmFuc2Zlci1FbmNvZGluZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VSX0FHRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1VzZXItQWdlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVNfQVNDSUkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7VVMtQVNDSUkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVRGXzE2IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1VURi0xNiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVVEZfOCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtVVEYtOCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBDb250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBdHRyaWJ1dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlJFU0VSVkVEX1BSRUZJWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBEYXRlR2VuZXJhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwRGF0ZUdlbmVyYXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cERhdGVHZW5lcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudERhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHTVQiCisgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBVFRFUk5fUkZDMTEyMyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtFRUUsIGRkIE1NTSB5eXl5IEhIOm1tOnNzIHp6eiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBFeHBlY3RhdGlvblZlcmlmaWVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFByb2Nlc3NvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cFJlcXVlc3RFeGVjdXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJlcXVlc3RFeGVjdXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFJlcXVlc3RFeGVjdXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYW5SZXNwb25zZUhhdmVCb2R5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb1JlY2VpdmVSZXNwb25zZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDbGllbnRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb1NlbmRSZXF1ZXN0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwQ2xpZW50Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdFByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3NvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlUHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3NvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBSZXF1ZXN0SGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBSZXF1ZXN0SGFuZGxlclJlZ2lzdHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEhhbmRsZXJSZXNvbHZlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJlcXVlc3RIYW5kbGVyUmVnaXN0cnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0SGFuZGxlclJlZ2lzdHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imxvb2t1cCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hVcmlSZXF1ZXN0UGF0dGVybiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdFVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGFuZGxlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBSZXF1ZXN0SGFuZGxlclJlc29sdmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibG9va3VwIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0SGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0VVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlcXVlc3RJbnRlcmNlcHRvckxpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRSZXF1ZXN0SW50ZXJjZXB0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0Y3AiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJSZXF1ZXN0SW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdEludGVyY2VwdG9yQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVSZXF1ZXN0SW50ZXJjZXB0b3JCeUNsYXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGF6eiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludGVyY2VwdG9ycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcHMiIHR5cGU9ImphdmEudXRpbC5MaXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3JMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkUmVzcG9uc2VJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0Y3AiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclJlc3BvbnNlSW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNwb25zZUludGVyY2VwdG9yQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVSZXNwb25zZUludGVyY2VwdG9yQnlDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhenoiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlcmNlcHRvcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0Y3BzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cFNlcnZpY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBTZXJ2aWNlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2MiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUHJvY2Vzc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uU3RyYXRlZ3kiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Db25uZWN0aW9uUmV1c2VTdHJhdGVneSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2VGYWN0b3J5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRvU2VydmljZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVFeGNlcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJleCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZVJlcXVlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFNlcnZlckNvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbm5SZXVzZVN0cmF0ZWd5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ublN0cmF0ZWd5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhwZWN0YXRpb25WZXJpZmllciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGF0aW9uVmVyaWZpZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwRXhwZWN0YXRpb25WZXJpZmllciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIYW5kbGVyUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyUmVzb2x2ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEhhbmRsZXJSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIdHRwUHJvY2Vzc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3NvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXNwb25zZUZhY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUZhY3RvcnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlcXVlc3RDb25uQ29udHJvbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVxdWVzdENvbm5Db250cm9sIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0Q29ubkNvbnRyb2wiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdENvbnRlbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RDb250ZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0Q29udGVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcm9jZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXF1ZXN0RGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVxdWVzdERhdGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlJlcXVlc3REYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlcXVlc3RFeHBlY3RDb250aW51ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVxdWVzdEV4cGVjdENvbnRpbnVlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0RXhwZWN0Q29udGludWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdFRhcmdldEhvc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RUYXJnZXRIb3N0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0VGFyZ2V0SG9zdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcm9jZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXF1ZXN0VXNlckFnZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXF1ZXN0VXNlckFnZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0VXNlckFnZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlc3BvbnNlQ29ubkNvbnRyb2wiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNwb25zZUNvbm5Db250cm9sIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXNwb25zZUNvbm5Db250cm9sIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzcG9uc2VDb250ZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzcG9uc2VDb250ZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXNwb25zZUNvbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXNwb25zZURhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNwb25zZURhdGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlJlc3BvbnNlRGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcm9jZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlc3BvbnNlU2VydmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzcG9uc2VTZXJ2ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlJlc3BvbnNlU2VydmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY0Jhc2ljSHR0cENvbnRleHQiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkJhc2ljSHR0cENvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTeW5jQmFzaWNIdHRwQ29udGV4dCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuU3luY0Jhc2ljSHR0cENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRDb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVcmlQYXR0ZXJuTWF0Y2hlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXJpUGF0dGVybk1hdGNoZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlVyaVBhdHRlcm5NYXRjaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imxvb2t1cCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hVcmlSZXF1ZXN0UGF0dGVybiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RVcmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhhbmRsZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwiCis+Cis8Y2xhc3MgbmFtZT0iQnl0ZUFycmF5QnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGVBcnJheUJ1ZmZlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5CeXRlQXJyYXlCdWZmZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ1ZmZlciIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJieXRlQXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGVuZ3RoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9CeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhckFycmF5QnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoYXJBcnJheUJ1ZmZlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5CeXRlQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVmZmVyIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYXJBdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5zdXJlQ2FwYWNpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1aXJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJlZ2luSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRnVsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExlbmd0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJlZ2luSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJzdHJpbmdUcmltbWVkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVnaW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQ2hhckFycmF5IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVuY29kaW5nVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEFzY2lpQnl0ZXMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBc2NpaVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNjaWlTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW50aXR5VXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRDaGFyU2V0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQnl0ZUFycmF5IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0Q2hhcnNldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV4Y2VwdGlvblV0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpbml0Q2F1c2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGFuZ1V0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iajEiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iajIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhMSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhMiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFzaGNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJIQVNIX09GRlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBU0hfU0VFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWZXJzaW9uSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmVyc2lvbkluZm8iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuVmVyc2lvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2tnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2R1bGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbGVhc2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsc2xkciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZyb21NYXAiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5WZXJzaW9uSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBja2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImphdmEudXRpbC5NYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsc2xkciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzbG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZHVsZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbGVhc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXN0YW1wIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRWZXJzaW9uSW5mbyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLlZlcnNpb25JbmZvW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2tncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHNsZHIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkVmVyc2lvbkluZm8iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5WZXJzaW9uSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBja2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsc2xkciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUFJPUEVSVFlfTU9EVUxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2luZm8ubW9kdWxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1BFUlRZX1JFTEVBU0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW5mby5yZWxlYXNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1BFUlRZX1RJTUVTVEFNUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbmZvLnRpbWVzdGFtcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTkFWQUlMQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtVTkFWQUlMQUJMRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWRVJTSU9OX1BST1BFUlRZX0ZJTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmVyc2lvbi5wcm9wZXJ0aWVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5qc29uIgorPgorPGNsYXNzIG5hbWU9IkpTT05BcnJheSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSlNPTkFycmF5IgorIHR5cGU9Im9yZy5qc29uLkpTT05BcnJheSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05BcnJheSIKKyB0eXBlPSJvcmcuanNvbi5KU09OQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3B5RnJvbSIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05BcnJheSIKKyB0eXBlPSJvcmcuanNvbi5KU09OQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkRnJvbSIgdHlwZT0ib3JnLmpzb24uSlNPTlRva2VuZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05BcnJheSIKKyB0eXBlPSJvcmcuanNvbi5KU09OQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJqc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEpTT05BcnJheSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRKU09OT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTnVsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iam9pbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcGFyYXRvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wdERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFjayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wdEpTT05BcnJheSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRKU09OT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTkFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTkFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9KU09OT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9Im9yZy5qc29uLkpTT05BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGVudFNwYWNlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkpTT05FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05FeGNlcHRpb24iCisgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKU09OT2JqZWN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKU09OT2JqZWN0IgorIHR5cGU9Im9yZy5qc29uLkpTT05PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKU09OT2JqZWN0IgorIHR5cGU9Im9yZy5qc29uLkpTT05PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3B5RnJvbSIgdHlwZT0iamF2YS51dGlsLk1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSlNPTk9iamVjdCIKKyB0eXBlPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZEZyb20iIHR5cGU9Im9yZy5qc29uLkpTT05Ub2tlbmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKU09OT2JqZWN0IgorIHR5cGU9Im9yZy5qc29uLkpTT05PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJqc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKU09OT2JqZWN0IgorIHR5cGU9Im9yZy5qc29uLkpTT05PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3B5RnJvbSIgdHlwZT0ib3JnLmpzb24uSlNPTk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjY3VtdWxhdGUiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SlNPTkFycmF5IgorIHJldHVybj0ib3JnLmpzb24uSlNPTkFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEpTT05PYmplY3QiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hbWVzIgorIHJldHVybj0ib3JnLmpzb24uSlNPTkFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im51bWJlclRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1iZXIiIHR5cGU9ImphdmEubGFuZy5OdW1iZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wdERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFjayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wdEpTT05BcnJheSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRKU09OT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0T3B0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0pTT05BcnJheSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9Im9yZy5qc29uLkpTT05BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGVudFNwYWNlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTlVMTCIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKU09OU3RyaW5nZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05TdHJpbmdlciIKKyB0eXBlPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kQXJyYXkiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTlN0cmluZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05TdHJpbmdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYmplY3QiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWUiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlIgorIHJldHVybj0ib3JnLmpzb24uSlNPTlN0cmluZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05TdHJpbmdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05TdHJpbmdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSlNPTlRva2VuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05Ub2tlbmVyIgorIHR5cGU9Im9yZy5qc29uLkpTT05Ub2tlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWhleGNoYXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGV4IiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Q2xlYW4iCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdW90ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VG8iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNsdWRlZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VG8iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNsdWRlZCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXBQYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhydSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwVG8iCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0byIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeW50YXhFcnJvciIKKyByZXR1cm49Im9yZy5qc29uLkpTT05FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcudzNjLmRvbSIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPd25lckVsZW1lbnQiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5FbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1hVHlwZUluZm8iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5UeXBlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwZWNpZmllZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDREFUQVNlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnczYy5kb20uVGV4dCI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2hhcmFjdGVyRGF0YSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXBwZW5kRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZURhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZ0RhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnczYy5kb20uQ2hhcmFjdGVyRGF0YSI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRE9NQ29uZmlndXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhblNldFBhcmFtZXRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJOYW1lcyIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRPTVN0cmluZ0xpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRPTUVycm9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYXRpb24iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01Mb2NhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWxhdGVkRGF0YSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWxhdGVkRXhjZXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNldmVyaXR5IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0VWRVJJVFlfRVJST1IiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VWRVJJVFlfRkFUQUxfRVJST1IiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VWRVJJVFlfV0FSTklORyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJET01FcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVFcnJvciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9Im9yZy53M2MuZG9tLkRPTUVycm9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJET01FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJET01FeGNlcHRpb24iCisgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkRPTVNUUklOR19TSVpFX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISUVSQVJDSFlfUkVRVUVTVF9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5ERVhfU0laRV9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5VU0VfQVRUUklCVVRFX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WQUxJRF9BQ0NFU1NfRVJSIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlZBTElEX1NUQVRFX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRVNQQUNFX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9UX0ZPVU5EX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RfU1VQUE9SVEVEX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19EQVRBX0FMTE9XRURfRVJSIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5UQVhfRVJSIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX01JU01BVENIX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkFMSURBVElPTl9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldST05HX0RPQ1VNRU5UX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2RlIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJET01JbXBsZW1lbnRhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZURvY3VtZW50IgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb2N0eXBlIiB0eXBlPSJvcmcudzNjLmRvbS5Eb2N1bWVudFR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZURvY3VtZW50VHlwZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRvY3VtZW50VHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRPTUltcGxlbWVudGF0aW9uTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZW0iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01JbXBsZW1lbnRhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRE9NSW1wbGVtZW50YXRpb25Tb3VyY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRET01JbXBsZW1lbnRhdGlvbiIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRPTUltcGxlbWVudGF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERPTUltcGxlbWVudGF0aW9uTGlzdCIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRPTUltcGxlbWVudGF0aW9uTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRPTUxvY2F0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlT2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbGF0ZWROb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVyaSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVdGYxNk9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRE9NU3RyaW5nTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlbSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRvY3VtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhZG9wdE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQXR0cmlidXRlIgorIHJldHVybj0ib3JnLnczYy5kb20uQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVBdHRyaWJ1dGVOUyIKKyByZXR1cm49Im9yZy53M2MuZG9tLkF0dHIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDREFUQVNlY3Rpb24iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5DREFUQVNlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29tbWVudCIKKyByZXR1cm49Im9yZy53M2MuZG9tLkNvbW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVEb2N1bWVudEZyYWdtZW50IgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnRGcmFnbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUVsZW1lbnQiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5FbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZ05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUVsZW1lbnROUyIKKyByZXR1cm49Im9yZy53M2MuZG9tLkVsZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVFbnRpdHlSZWZlcmVuY2UiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5FbnRpdHlSZWZlcmVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0ib3JnLnczYy5kb20uUHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVGV4dE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5UZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9jdHlwZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRvY3VtZW50VHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvY3VtZW50RWxlbWVudCIKKyByZXR1cm49Im9yZy53M2MuZG9tLkVsZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb2N1bWVudFVSSSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb21Db25maWciCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01Db25maWd1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxlbWVudEJ5SWQiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5FbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsZW1lbnRJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGVtZW50c0J5VGFnTmFtZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGVMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZ25hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGVMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEltcGxlbWVudGF0aW9uIgorIHJldHVybj0ib3JnLnczYy5kb20uRE9NSW1wbGVtZW50YXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmljdEVycm9yQ2hlY2tpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WG1sRW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WG1sU3RhbmRhbG9uZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYbWxWZXJzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcG9ydE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImltcG9ydGVkTm9kZSIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVlcCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9ybWFsaXplRG9jdW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVuYW1lTm9kZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudFVSSSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG9jdW1lbnRVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaWN0RXJyb3JDaGVja2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWN0RXJyb3JDaGVja2luZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYbWxTdGFuZGFsb25lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxTdGFuZGFsb25lIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYbWxWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxWZXJzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRvY3VtZW50RnJhZ21lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRG9jdW1lbnRUeXBlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdGllcyIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVybmFsU3Vic2V0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Tm90YXRpb25zIgorIHJldHVybj0ib3JnLnczYy5kb20uTmFtZWROb2RlTWFwIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlTlMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVOb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZU5vZGVOUyIKKyByZXR1cm49Im9yZy53M2MuZG9tLkF0dHIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRzQnlUYWdOYW1lIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZUxpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGVtZW50c0J5VGFnTmFtZU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZUxpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYVR5cGVJbmZvIgorIHJldHVybj0ib3JnLnczYy5kb20uVHlwZUluZm8iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWdOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0F0dHJpYnV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNBdHRyaWJ1dGVOUyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQXR0cmlidXRlTlMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBdHRyaWJ1dGVOb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRBdHRyIiB0eXBlPSJvcmcudzNjLmRvbS5BdHRyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGVOUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlTm9kZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkF0dHIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3QXR0ciIgdHlwZT0ib3JnLnczYy5kb20uQXR0ciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlTm9kZU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBdHRyIiB0eXBlPSJvcmcudzNjLmRvbS5BdHRyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJZEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWRBdHRyaWJ1dGVOUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzSWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElkQXR0cmlidXRlTm9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRBdHRyIiB0eXBlPSJvcmcudzNjLmRvbS5BdHRyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0lkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkVudGl0eSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRFbmNvZGluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb3RhdGlvbk5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WG1sRW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WG1sVmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkVudGl0eVJlZmVyZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJOYW1lTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNOUyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZXNwYWNlVVJJIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTmFtZWROb2RlTWFwIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZWRJdGVtIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVkSXRlbU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlbSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVOYW1lZEl0ZW0iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU5hbWVkSXRlbU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmFtZWRJdGVtIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWVkSXRlbU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZENoaWxkIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDaGlsZCIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmVOb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWVwIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXAiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlVVJJIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkTm9kZXMiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rmlyc3RDaGlsZCIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXN0Q2hpbGQiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVzcGFjZVVSSSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXh0U2libGluZyIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb2RlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb2RlVHlwZSIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Tm9kZVZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPd25lckRvY3VtZW50IgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnROb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmV2aW91c1NpYmxpbmciCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dENvbnRlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJEYXRhIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQXR0cmlidXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNDaGlsZE5vZGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydEJlZm9yZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q2hpbGQiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZkNoaWxkIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlZmF1bHROYW1lc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VxdWFsTm9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2FtZU5vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3VwcG9ydGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxvb2t1cE5hbWVzcGFjZVVSSSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxvb2t1cFByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vcm1hbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVDaGlsZCIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkQ2hpbGQiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VDaGlsZCIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q2hpbGQiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZENoaWxkIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROb2RlVmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5vZGVWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJlZml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRDb250ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Q29udGVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlckRhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnczYy5kb20uVXNlckRhdGFIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQVRUUklCVVRFX05PREUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0RBVEFfU0VDVElPTl9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTU1FTlRfTk9ERSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET0NVTUVOVF9GUkFHTUVOVF9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET0NVTUVOVF9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9DVU1FTlRfUE9TSVRJT05fRElTQ09OTkVDVEVEIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET0NVTUVOVF9QT1NJVElPTl9JTVBMRU1FTlRBVElPTl9TUEVDSUZJQyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1VNRU5UX1RZUEVfTk9ERSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUxFTUVOVF9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOVElUWV9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOVElUWV9SRUZFUkVOQ0VfTk9ERSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RBVElPTl9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVYVF9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik5vZGVMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlbSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik5vdGF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1JZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJUZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLkNoYXJhY3RlckRhdGEiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRXaG9sZVRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbGVtZW50Q29udGVudFdoaXRlc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZVdob2xlVGV4dCIKKyByZXR1cm49Im9yZy53M2MuZG9tLlRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BsaXRUZXh0IgorIHJldHVybj0ib3JnLnczYy5kb20uVGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJUeXBlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVOYW1lc3BhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZXJpdmVkRnJvbSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWVzcGFjZUFyZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWVBcmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcml2YXRpb25NZXRob2QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFUklWQVRJT05fRVhURU5TSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVJJVkFUSU9OX0xJU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFUklWQVRJT05fUkVTVFJJQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFUklWQVRJT05fVU5JT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlVzZXJEYXRhSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik5PREVfQURPUFRFRCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT0RFX0NMT05FRCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT0RFX0RFTEVURUQiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9ERV9JTVBPUlRFRCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT0RFX1JFTkFNRUQiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy53M2MuZG9tLmxzIgorPgorPGludGVyZmFjZSBuYW1lPSJET01JbXBsZW1lbnRhdGlvbkxTIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlTFNJbnB1dCIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTSW5wdXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVMU091dHB1dCIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTT3V0cHV0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlTFNQYXJzZXIiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5scy5MU1BhcnNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlTFNTZXJpYWxpemVyIgorIHJldHVybj0ib3JnLnczYy5kb20ubHMuTFNTZXJpYWxpemVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNT0RFX0FTWU5DSFJPTk9VUyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX1NZTkNIUk9OT1VTIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTFNFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMU0V4Y2VwdGlvbiIKKyB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJQQVJTRV9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFUklBTElaRV9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvZGUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkxTSW5wdXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlVVJJIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWVkVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLlJlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0lkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZ0RhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmFzZVVSSSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCeXRlU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJieXRlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENlcnRpZmllZFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRpZmllZFRleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyYWN0ZXJTdHJlYW0iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuY29kaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQdWJsaWNJZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nRGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTeXN0ZW1JZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMU091dHB1dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZVN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyYWN0ZXJTdHJlYW0iIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuY29kaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTeXN0ZW1JZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMU1BhcnNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFib3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzeW5jIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ1c3kiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tQ29uZmlnIgorIHJldHVybj0ib3JnLnczYy5kb20uRE9NQ29uZmlndXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTUGFyc2VyRmlsdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Eb2N1bWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0ib3JnLnczYy5kb20ubHMuTFNJbnB1dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkxTRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVVSSSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRvY3VtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkxTRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVdpdGhDb250ZXh0IgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0ib3JnLnczYy5kb20ubHMuTFNJbnB1dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dEFyZyIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkxTRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0ib3JnLnczYy5kb20ubHMuTFNQYXJzZXJGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVBQRU5EX0FTX0NISUxEUkVOIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9JTlNFUlRfQUZURVIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0lOU0VSVF9CRUZPUkUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1JFUExBQ0UiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1JFUExBQ0VfQ0hJTERSRU4iCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTFNQYXJzZXJGaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY2NlcHROb2RlIgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9kZUFyZyIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaGF0VG9TaG93IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudEFyZyIgdHlwZT0ib3JnLnczYy5kb20uRWxlbWVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkZJTFRFUl9BQ0NFUFQiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMVEVSX0lOVEVSUlVQVCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSUxURVJfUkVKRUNUIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTFRFUl9TS0lQIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkxTUmVzb3VyY2VSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVSZXNvdXJjZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTSW5wdXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMU1NlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXREb21Db25maWciCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01Db25maWd1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV3TGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXdMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdMaW5lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlQXJnIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvbiIgdHlwZT0ib3JnLnczYy5kb20ubHMuTFNPdXRwdXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkxTRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlQXJnIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTFNFeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLmxzLkxTRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9VUkkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5vZGVBcmciIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTFNFeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLmxzLkxTRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy54bWwuc2F4IgorPgorPGludGVyZmFjZSBuYW1lPSJBdHRyaWJ1dGVMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkF0dHJpYnV0ZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRlbnRIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hhcmFjdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFByZWZpeE1hcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudExvY2F0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9Im9yZy54bWwuc2F4LkxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcHBlZEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0UHJlZml4TWFwcGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRFRESGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im5vdGF0aW9uRGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnBhcnNlZEVudGl0eURlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm90YXRpb25OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRvY3VtZW50SGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hhcmFjdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpZ25vcmFibGVXaGl0ZXNwYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvY3VtZW50TG9jYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZUxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRW50aXR5UmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlRW50aXR5IgorIHJldHVybj0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmF0YWxFcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkhhbmRsZXJCYXNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRFRESGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5Eb2N1bWVudEhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYW5kbGVyQmFzZSIKKyB0eXBlPSJvcmcueG1sLnNheC5IYW5kbGVyQmFzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGFyYWN0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRWxlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RhdGlvbkRlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlRW50aXR5IgorIHJldHVybj0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG9jdW1lbnRMb2NhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5wYXJzZWRFbnRpdHlEZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RhdGlvbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9Im9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dFNvdXJjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRTb3VyY2UiCisgdHlwZT0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFNvdXJjZSIKKyB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFNvdXJjZSIKKyB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ5dGVTdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklucHV0U291cmNlIgorIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcmFjdGVyU3RyZWFtIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ5dGVTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJieXRlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJhY3RlclN0cmVhbSIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5jb2RpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQdWJsaWNJZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkxvY2F0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RFRESGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRFRESGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkRvY3VtZW50SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHlSZXNvbHZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9Im9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9ySGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU0FYRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNBWFBhcnNlRXhjZXB0aW9uIgorIGV4dGVuZHM9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWFBhcnNlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYUGFyc2VFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJvcmcueG1sLnNheC5Mb2NhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhQYXJzZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OdW1iZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYUGFyc2VFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmVOdW1iZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTnVtYmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJYTUxGaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9Im9yZy54bWwuc2F4LlhNTFJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlhNTFJlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREVERIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRFRESGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudGl0eVJlc29sdmVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREVERIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVudGl0eVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLnhtbC5zYXguZXh0IgorPgorPGludGVyZmFjZSBuYW1lPSJBdHRyaWJ1dGVzMiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5BdHRyaWJ1dGVzIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iaXNEZWNsYXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlY2xhcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlY2xhcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwZWNpZmllZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwZWNpZmllZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVjaWZpZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBdHRyaWJ1dGVzMkltcGwiCisgZXh0ZW5kcz0ib3JnLnhtbC5zYXguaGVscGVycy5BdHRyaWJ1dGVzSW1wbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguZXh0LkF0dHJpYnV0ZXMyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVzMkltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguZXh0LkF0dHJpYnV0ZXMySW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZXMySW1wbCIKKyB0eXBlPSJvcmcueG1sLnNheC5leHQuQXR0cmlidXRlczJJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzRGVjbGFyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVjbGFyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlY2xhcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVjaWZpZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3BlY2lmaWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVjaWZpZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWNsYXJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwZWNpZmllZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEZWNsSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImF0dHJpYnV0ZURlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnREZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZXJuYWxFbnRpdHlEZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVybmFsRW50aXR5RGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0SGFuZGxlcjIiCisgZXh0ZW5kcz0ib3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguZXh0LkRlY2xIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LmV4dC5FbnRpdHlSZXNvbHZlcjIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0SGFuZGxlcjIiCisgdHlwZT0ib3JnLnhtbC5zYXguZXh0LkRlZmF1bHRIYW5kbGVyMiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdHRyaWJ1dGVEZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50RGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRDREFUQSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERURCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dGVybmFsRW50aXR5RGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxTdWJzZXQiCisgcmV0dXJuPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVybmFsRW50aXR5RGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlRW50aXR5IgorIHJldHVybj0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0Q0RBVEEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERURCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRW50aXR5UmVzb2x2ZXIyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxTdWJzZXQiCisgcmV0dXJuPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUVudGl0eSIKKyByZXR1cm49Im9yZy54bWwuc2F4LklucHV0U291cmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTGV4aWNhbEhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb21tZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kQ0RBVEEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERURCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydENEQVRBIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERURCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMb2NhdG9yMiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5Mb2NhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WE1MVmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTG9jYXRvcjJJbXBsIgorIGV4dGVuZHM9Im9yZy54bWwuc2F4LmhlbHBlcnMuTG9jYXRvckltcGwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LmV4dC5Mb2NhdG9yMiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYXRvcjJJbXBsIgorIHR5cGU9Im9yZy54bWwuc2F4LmV4dC5Mb2NhdG9yMkltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhdG9yMkltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguZXh0LkxvY2F0b3IySW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9Im9yZy54bWwuc2F4LkxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WE1MVmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5jb2RpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYTUxWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy54bWwuc2F4LmhlbHBlcnMiCis+Cis8Y2xhc3MgbmFtZT0iQXR0cmlidXRlTGlzdEltcGwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5BdHRyaWJ1dGVMaXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVMaXN0SW1wbCIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLkF0dHJpYnV0ZUxpc3RJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlTGlzdEltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5BdHRyaWJ1dGVMaXN0SW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZUxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQXR0cmlidXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGVMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdHRyaWJ1dGVzSW1wbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5BdHRyaWJ1dGVzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVzSW1wbCIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLkF0dHJpYnV0ZXNJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlc0ltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5BdHRyaWJ1dGVzSW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFFOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVSSSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFFOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdEhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRFRESGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIYW5kbGVyIgorIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hhcmFjdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFByZWZpeE1hcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RhdGlvbkRlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUVudGl0eSIKKyByZXR1cm49Im9yZy54bWwuc2F4LklucHV0U291cmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudExvY2F0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJvcmcueG1sLnNheC5Mb2NhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXBwZWRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGVzIiB0eXBlPSJvcmcueG1sLnNheC5BdHRyaWJ1dGVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFByZWZpeE1hcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5wYXJzZWRFbnRpdHlEZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RhdGlvbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Indhcm5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYXRvckltcGwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYXRvckltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5Mb2NhdG9ySW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2F0b3JJbXBsIgorIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuTG9jYXRvckltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJvcmcueG1sLnNheC5Mb2NhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVOdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5OdW1iZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OdW1iZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFB1YmxpY0lkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOYW1lc3BhY2VTdXBwb3J0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOYW1lc3BhY2VTdXBwb3J0IgorIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuTmFtZXNwYWNlU3VwcG9ydCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZWNsYXJlUHJlZml4IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyZWRQcmVmaXhlcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmaXgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZml4ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZml4ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOYW1lc3BhY2VEZWNsVXJpcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9wQ29udGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0F0dHJpYnV0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXNoQ29udGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWVzcGFjZURlY2xVcmlzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJOU0RFQ0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3d3dy53My5vcmcveG1sbnMvMjAwMC8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWE1MTlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXJzZXJBZGFwdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkRvY3VtZW50SGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlckFkYXB0ZXIiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5QYXJzZXJBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlckFkYXB0ZXIiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5QYXJzZXJBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1sLnNheC5QYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGFyYWN0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRWxlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50SGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERUREhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudGl0eVJlc29sdmVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imlnbm9yYWJsZVdoaXRlc3BhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50SGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERUREhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvY3VtZW50TG9jYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9Im9yZy54bWwuc2F4LkxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50aXR5UmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RWxlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxQXR0cyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyc2VyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibWFrZVBhcnNlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc0Nhc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc0Nhc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bGxQb2ludGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFrZVBhcnNlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzQ2FzdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnN0YW50aWF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYTUxGaWx0ZXJJbXBsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkRUREhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LlhNTEZpbHRlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iWE1MRmlsdGVySW1wbCIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLlhNTEZpbHRlckltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYTUxGaWx0ZXJJbXBsIgorIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuWE1MRmlsdGVySW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hhcmFjdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFByZWZpeE1hcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudEhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREVERIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRFRESGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHlSZXNvbHZlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVycm9ySGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkVycm9ySGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RhdGlvbkRlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUVudGl0eSIKKyByZXR1cm49Im9yZy54bWwuc2F4LklucHV0U291cmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50SGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERUREhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvY3VtZW50TG9jYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9Im9yZy54bWwuc2F4LkxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50aXR5UmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcHBlZEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RG9jdW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0UHJlZml4TWFwcGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnBhcnNlZEVudGl0eURlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vdGF0aW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9Im9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYTUxSZWFkZXJBZGFwdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LlBhcnNlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iWE1MUmVhZGVyQWRhcHRlciIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLlhNTFJlYWRlckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWE1MUmVhZGVyQWRhcHRlciIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLlhNTFJlYWRlckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxSZWFkZXIiIHR5cGU9Im9yZy54bWwuc2F4LlhNTFJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoYXJhY3RlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRG9jdW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRQcmVmaXhNYXBwaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imlnbm9yYWJsZVdoaXRlc3BhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREVERIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRFRESGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5Eb2N1bWVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG9jdW1lbnRMb2NhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHlSZXNvbHZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwcGVkRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RWxlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRQcmVmaXhNYXBwaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWE1MUmVhZGVyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlWE1MUmVhZGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVhNTFJlYWRlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlhNTFJlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLnhtbHB1bGwudjEiCis+Cis8aW50ZXJmYWNlIG5hbWU9IlhtbFB1bGxQYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkZWZpbmVFbnRpdHlSZXBsYWNlbWVudFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGxhY2VtZW50VGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlTmFtZXNwYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVwdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmVudFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0RW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZXNwYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZXNwYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVzcGFjZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZXNwYWNlUHJlZml4IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2VVcmkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uRGVzY3JpcHRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZml4IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dENoYXJhY3RlcnMiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyRm9yU3RhcnRBbmRMZW5ndGgiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXR0cmlidXRlRGVmYXVsdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5RWxlbWVudFRhZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1doaXRlc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VGFnIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUZXh0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VG9rZW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWlyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dEVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNEU0VDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NTUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9DREVDTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVORF9ET0NVTUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5EX1RBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5USVRZX1JFRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9QUk9DRVNTX0RPQ0RFQ0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3htbHB1bGwub3JnL3YxL2RvYy9mZWF0dXJlcy5odG1sI3Byb2Nlc3MtZG9jZGVjbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX1BST0NFU1NfTkFNRVNQQUNFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8veG1scHVsbC5vcmcvdjEvZG9jL2ZlYXR1cmVzLmh0bWwjcHJvY2Vzcy1uYW1lc3BhY2VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfUkVQT1JUX05BTUVTUEFDRV9BVFRSSUJVVEVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly94bWxwdWxsLm9yZy92MS9kb2MvZmVhdHVyZXMuaHRtbCNyZXBvcnQtbmFtZXNwYWNlLXByZWZpeGVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfVkFMSURBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8veG1scHVsbC5vcmcvdjEvZG9jL2ZlYXR1cmVzLmh0bWwjdmFsaWRhdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJR05PUkFCTEVfV0hJVEVTUEFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fTkFNRVNQQUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9DRVNTSU5HX0lOU1RSVUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9ET0NVTUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBUlRfVEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhaW4iIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV0YWlsIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iY29sdW1uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRldGFpbCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm93IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYbWxQdWxsUGFyc2VyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWG1sUHVsbFBhcnNlckZhY3RvcnkiCisgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOYW1lc3BhY2VBd2FyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZGF0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3UHVsbFBhcnNlciIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3U2VyaWFsaXplciIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWVzcGFjZUF3YXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXdhcmVuZXNzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbGlkYXRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZGF0aW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUFJPUEVSVFlfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRmFjdG9yeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjbGFzc05hbWVzTG9jYXRpb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZlYXR1cmVzIgorIHR5cGU9ImphdmEudXRpbC5IYXNoTWFwIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFyc2VyQ2xhc3NlcyIKKyB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VyaWFsaXplckNsYXNzZXMiCisgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iWG1sU2VyaWFsaXplciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImF0dHJpYnV0ZSIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNkc2VjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb2NkZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRG9jdW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRUYWciCisgcmV0dXJuPSJvcmcueG1scHVsbC52MS5YbWxTZXJpYWxpemVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudGl0eVJlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXB0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZml4IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdlbmVyYXRlUHJlZml4IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlciIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmVmaXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhbmRhbG9uZSIgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFRhZyIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGV4dCIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRleHQiCisgcmV0dXJuPSJvcmcueG1scHVsbC52MS5YbWxTZXJpYWxpemVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy54bWxwdWxsLnYxLnNheDIiCis+Cis8Y2xhc3MgbmFtZT0iRHJpdmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyaXZlciIKKyB0eXBlPSJvcmcueG1scHVsbC52MS5zYXgyLkRyaXZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyaXZlciIKKyB0eXBlPSJvcmcueG1scHVsbC52MS5zYXgyLkRyaXZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBwIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RFRESGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkRUREhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50aXR5UmVzb2x2ZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVOdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0lkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJJIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVN1YlRyZWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcCIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RFRESGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkRUREhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50aXR5UmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFQQUNIRV9EWU5BTUlDX1ZBTElEQVRJT05fRkVBVFVSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vYXBhY2hlLm9yZy94bWwvZmVhdHVyZXMvdmFsaWRhdGlvbi9keW5hbWljJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFQQUNIRV9TQ0hFTUFfVkFMSURBVElPTl9GRUFUVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy92YWxpZGF0aW9uL3NjaGVtYSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUNMQVJBVElPTl9IQU5ETEVSX1BST1BFUlRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly94bWwub3JnL3NheC9wcm9wZXJ0aWVzL2RlY2xhcmF0aW9uLWhhbmRsZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEVYSUNBTF9IQU5ETEVSX1BST1BFUlRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly94bWwub3JnL3NheC9wcm9wZXJ0aWVzL2xleGljYWwtaGFuZGxlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQU1FU1BBQ0VTX0ZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL25hbWVzcGFjZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRVNQQUNFX1BSRUZJWEVTX0ZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL25hbWVzcGFjZS1wcmVmaXhlcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWQUxJREFUSU9OX0ZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL3ZhbGlkYXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29udGVudEhhbmRsZXIiCisgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlcnJvckhhbmRsZXIiCisgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHAiCisgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5c3RlbUlkIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8L2FwaT4KZGlmZiAtLWdpdCBhL2FwaS9jdXJyZW50LnhtbCBiL2FwaS9jdXJyZW50LnhtbAppbmRleCA5ZDI1OWYzLi41ZDcxY2FkIDEwMDY0NAotLS0gYS9hcGkvY3VycmVudC54bWwKKysrIGIvYXBpL2N1cnJlbnQueG1sCkBAIC0xNTU5LDYgKzE1NTksMjI2IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNjA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI2MDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjYwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNjA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI2MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjYwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNjAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI2MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjYwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJsaW5lYXJfaW50ZXJwb2xhdG9yIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTY0Miw2ICsxODYyLDEzOCBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MjM1OTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyMzU5ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MjM1OTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyMzU5NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MjM1OTc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyMzU5NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0ib3JnYW5pemF0aW9uVHlwZXMiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC00MTU2LDYgKzQ1MDgsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhlYXZ5V2VpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iaGVpZ2h0IgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNDg5Myw2ICs1MjU2LDcxMCBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0OTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0OTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1MCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1MSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1MiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1MyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1NCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1NSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1NiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1NyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1OCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1OSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDY0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0ibGFiZWwiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC01NDQzLDYgKzY1MTAsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxvZ28iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJsb25nQ2xpY2thYmxlIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtOTM3MCw2ICsxMDQ0OCwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieGxhcmdlU2NyZWVucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9InkiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC05NDgxLDYgKzEwNTcwLDE3MSBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDU3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0icHJpbWFyeV90ZXh0X2RhcmsiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC05NjYzLDYgKzEwOTE3LDE2MCBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDg5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0OTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0OTA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0OTA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0idGh1bWJuYWlsX2hlaWdodCIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTEwODQ2LDYgKzEyMjU0LDg3NSBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1MCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1MSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1MiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1MyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1NCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1NSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1NiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1NyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1OCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1OSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDY0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDY1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDY2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDY3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDY4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDY5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNzkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0ibGlzdF9zZWxlY3Rvcl9iYWNrZ3JvdW5kIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTA5MDEsNiArMTMxNzgsMzkgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZXNlbmNlX2F1ZGlvX2F3YXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVzZW5jZV9hdWRpb19idXN5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlc2VuY2VfYXVkaW9fb25saW5lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0icHJlc2VuY2VfYXdheSIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTEwOTU2LDYgKzEzMjY2LDM5IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVzZW5jZV92aWRlb19hd2F5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlc2VuY2VfdmlkZW9fYnVzeSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZXNlbmNlX3ZpZGVvX29ubGluZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9InByb2dyZXNzX2hvcml6b250YWwiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xMTgwOSw2ICsxNDE1MiwyMzcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDExIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODM1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODM0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODM0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9Imxpc3QiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xMjA3OSw2ICsxNDY1MywxNjAgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDExIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzY5NDczNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzY5NDczMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzY5NDcyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPC9jbGFzcz4KIDxjbGFzcyBuYW1lPSJSLmxheW91dCIKICBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgpAQCAtMTIxMjksNiArMTQ4NTcsMTQ5IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJwcmVmZXJlbmNlX2NhdGVnb3J5IgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTI1MjEsNiArMTUzOTIsMTI3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5Mzg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5Mzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJubyIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTEzNzA0LDYgKzE2Njk2LDQ5MCBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQ2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDM5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8L2NsYXNzPgogPGNsYXNzIG5hbWU9IlIueG1sIgogIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCkBAIC0xNjA2Nyw2ICsxOTU0MywxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ltbWVyc2l2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iaXNUYXNrUm9vdCIKICByZXR1cm49ImJvb2xlYW4iCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtMTcwMjAsNiArMjA1MDcsMTkgQEAKIDxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1tZXJzaXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJzZXRJbnRlbnQiCiAgcmV0dXJuPSJ2b2lkIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTE4MjUwLDYgKzIxNzUwLDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0hFQVZZX1dFSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iSU1QT1JUQU5DRV9CQUNLR1JPVU5EIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTgyODMsNiArMjE3OTQsMjggQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNUE9SVEFOQ0VfSEVBVllfV0VJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNUE9SVEFOQ0VfUEVSQ0VQVElCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iSU1QT1JUQU5DRV9TRVJWSUNFIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTgzMzgsNiArMjE4NzEsMTYgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZsYWdzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9ImltcG9ydGFuY2UiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0yMjgwMCw2ICsyNjM0MywxMDkgQEAKIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+CiA8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5hdGl2ZUFjdGl2aXR5IgorIGV4dGVuZHM9ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuSW5wdXRRdWV1ZS5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlci5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmF0aXZlQWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hcHAuTmF0aXZlQWN0aXZpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25JbnB1dFF1ZXVlQ3JlYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXVlIiB0eXBlPSJhbmRyb2lkLnZpZXcuSW5wdXRRdWV1ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbklucHV0UXVldWVEZXN0cm95ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWV1ZSIgdHlwZT0iYW5kcm9pZC52aWV3LklucHV0UXVldWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VyZmFjZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VyZmFjZUNyZWF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cmZhY2VEZXN0cm95ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUVUQV9EQVRBX0xJQl9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmxpYl9uYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KIDxjbGFzcyBuYW1lPSJOb3RpZmljYXRpb24iCiAgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC0yMjg0Miw2ICsyNjQ4OCwxNyBAQAogPHBhcmFtZXRlciBuYW1lPSJwYXJjZWwiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KIDwvcGFyYW1ldGVyPgogPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKICByZXR1cm49ImludCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC0yMjk2Myw2ICsyNjYyMCwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19ISUdIX1BSSU9SSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IkZMQUdfSU5TSVNURU5UIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMjMwODksNiArMjY3NTcsMTYgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZ1bGxTY3JlZW5JbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9Imljb24iCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC00MDU0MSw2ICs0NDIxOSwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJyZWFkSW50ZW50U2VuZGVyT3JOdWxsRnJvbVBhcmNlbCIKICByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtNDIzMzYsNiArNDYwMjUsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfSU1NRVJTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IkZMQUdfTVVMVElQUk9DRVNTIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNDI3MzUsNiArNDY0MzUsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfSEVBVllfV0VJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0ODU3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJGTEFHX0tJTExfQUZURVJfUkVTVE9SRSIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTQyODIzLDYgKzQ2NTM0LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NVUFBPUlRTX1hMQVJHRV9TQ1JFRU5TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IkZMQUdfU1lTVEVNIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNDQwMzcsNiArNDc3NTksMTkgQEAKIDxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkTG9nbyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0ibG9hZFhtbE1ldGFEYXRhIgogIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC00NDA4Nyw2ICs0NzgyMiwxNiBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibG9nbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJtZXRhRGF0YSIKICB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNDQzNjksNiArNDgxMTQsMzYgQEAKIDxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KIDwvZXhjZXB0aW9uPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5TG9nbyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlOYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5TG9nbyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZ2V0QWxsUGVybWlzc2lvbkdyb3VwcyIKICByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uR3JvdXBJbmZvJmd0OyIKICBhYnN0cmFjdD0idHJ1ZSIKQEAgLTQ0NDUzLDYgKzQ4MjI4LDM0IEBACiA8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25Mb2dvIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uTG9nbyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJnZXRDb21wb25lbnRFbmFibGVkU2V0dGluZyIKICByZXR1cm49ImludCIKICBhYnN0cmFjdD0idHJ1ZSIKQEAgLTQ1MTY1LDYgKzQ4OTY4LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX0NBTUVSQV9GUk9OVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mcm9udCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJGRUFUVVJFX0xJVkVfV0FMTFBBUEVSIgogIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTQ3ODYyLDYgKzUxNjc2LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfU0laRV9YTEFSR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IlRPVUNIU0NSRUVOX0ZJTkdFUiIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTcxNTE1LDYgKzc1MzQwLDMyIEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbWVyYUluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhSW5mbyIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuQ2FtZXJhSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJPZkNhbWVyYXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlcnMiCiAgcmV0dXJuPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QYXJhbWV0ZXJzIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTcxNTQ3LDYgKzc1Mzk4LDE5IEBACiAgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCiAgdmlzaWJpbGl0eT0icHVibGljIgogPgorPHBhcmFtZXRlciBuYW1lPSJjYW1lcmFJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgogPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9InJlY29ubmVjdCIKICByZXR1cm49InZvaWQiCkBAIC03MTc5Myw2ICs3NTY1NywxNiBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FNRVJBX0lEX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDwvY2xhc3M+CiA8aW50ZXJmYWNlIG5hbWU9IkNhbWVyYS5BdXRvRm9jdXNDYWxsYmFjayIKICBhYnN0cmFjdD0idHJ1ZSIKQEAgLTcxODE3LDYgKzc1NjkxLDY1IEBACiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgogPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhLkNhbWVyYUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FtZXJhLkNhbWVyYUluZm8iCisgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuQ2FtZXJhSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkNBTUVSQV9GQUNJTkdfQkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FNRVJBX0ZBQ0lOR19GUk9OVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibUZhY2luZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtT3JpZW50YXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgogPGludGVyZmFjZSBuYW1lPSJDYW1lcmEuRXJyb3JDYWxsYmFjayIKICBhYnN0cmFjdD0idHJ1ZSIKICBzdGF0aWM9InRydWUiCkBAIC03MTk2Myw2ICs3NTg5NiwxOSBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb2N1c0Rpc3RhbmNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJnZXRGb2N1c01vZGUiCiAgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTcyMDUzLDYgKzc1OTk5LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGVyaW5nTW9kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZ2V0TWluRXhwb3N1cmVDb21wZW5zYXRpb24iCiAgcmV0dXJuPSJpbnQiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtNzIxODUsNiArNzYxNDIsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkTWV0ZXJpbmdNb2RlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZFBpY3R1cmVGb3JtYXRzIgogIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLkludGVnZXImZ3Q7IgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTcyNTUzLDYgKzc2NTIxLDE5IEBACiA8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1ldGVyaW5nTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9InNldFBpY3R1cmVGb3JtYXQiCiAgcmV0dXJuPSJ2b2lkIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTcyODg1LDYgKzc2ODY2LDM5IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19ESVNUQU5DRV9GQVJfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0RJU1RBTkNFX05FQVJfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0RJU1RBTkNFX09QVElNQUxfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfQVVUTyIKICB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC03Mjg5Niw2ICs3NjkxMCwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9DVVNfTU9ERV9DT05USU5VT1VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbnRpbnVvdXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iRk9DVVNfTU9ERV9FRE9GIgogIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTcyOTQwLDYgKzc2OTY1LDM5IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRFUklOR19NT0RFX0NFTlRFUl9XRUlHSFRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjZW50ZXItd2VpZ2h0ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVURVJJTkdfTU9ERV9GUkFNRV9BVkVSQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ZyYW1lLWF2ZXJhZ2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVURVJJTkdfTU9ERV9TUE9UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Nwb3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iU0NFTkVfTU9ERV9BQ1RJT04iCiAgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNzc4OTQsNiArODE5NTIsMjggQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmVhcmluZ0FjY3VyYWN5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxBY2N1cmFjeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJnZXRQb3dlclJlcXVpcmVtZW50IgogIHJldHVybj0iaW50IgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTc3OTA1LDYgKzgxOTg1LDI4IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwZWVkQWNjdXJhY3kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVydGljYWxBY2N1cmFjeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJpc0FsdGl0dWRlUmVxdWlyZWQiCiAgcmV0dXJuPSJib29sZWFuIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTc3OTc1LDYgKzgyMDc3LDE5IEBACiA8cGFyYW1ldGVyIG5hbWU9ImFsdGl0dWRlUmVxdWlyZWQiIHR5cGU9ImJvb2xlYW4iPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmVhcmluZ0FjY3VyYWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjdXJhY3kiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJzZXRCZWFyaW5nUmVxdWlyZWQiCiAgcmV0dXJuPSJ2b2lkIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTc4MDAxLDYgKzgyMTE2LDE5IEBACiA8cGFyYW1ldGVyIG5hbWU9ImNvc3RBbGxvd2VkIiB0eXBlPSJib29sZWFuIj4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvcml6b250YWxBY2N1cmFjeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0ic2V0UG93ZXJSZXF1aXJlbWVudCIKICByZXR1cm49InZvaWQiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtNzgwMTQsNiArODIxNDIsMTkgQEAKIDxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTcGVlZEFjY3VyYWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjdXJhY3kiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJzZXRTcGVlZFJlcXVpcmVkIgogIHJldHVybj0idm9pZCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03ODAyNyw2ICs4MjE2OCwxOSBAQAogPHBhcmFtZXRlciBuYW1lPSJzcGVlZFJlcXVpcmVkIiB0eXBlPSJib29sZWFuIj4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZlcnRpY2FsQWNjdXJhY3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2N1cmFjeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCiAgcmV0dXJuPSJ2b2lkIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTc4MDY0LDYgKzgyMjE4LDM5IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NVUkFDWV9ISUdIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NVUkFDWV9MT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ1VSQUNZX01FRElVTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKICB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNzgyMTAsNiArODIzOTcsODYgQEAKIDxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgogPC9leGNlcHRpb24+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbXBsZW1lbnRlZCIKKyByZXR1cm49ImphdmEubGFuZy5Cb29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR2VvY29kZXJQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGllbnRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWwiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDwvY2xhc3M+CiA8Y2xhc3MgbmFtZT0iR3BzU2F0ZWxsaXRlIgogIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCkBAIC03OTM2OCw2ICs4MzYzNSwyNyBAQAogIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluRGlzdGFuY2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcml0ZXJpYSIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcGVyIiB0eXBlPSJhbmRyb2lkLm9zLkxvb3BlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0TG9jYXRpb25VcGRhdGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KIDxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgogPC9wYXJhbWV0ZXI+CiA8cGFyYW1ldGVyIG5hbWU9Im1pblRpbWUiIHR5cGU9ImxvbmciPgpAQCAtNzkzNzcsNiArODM2NjUsODkgQEAKIDxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RMb2NhdGlvblVwZGF0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5EaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNyaXRlcmlhIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFNpbmdsZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb29wZXIiIHR5cGU9ImFuZHJvaWQub3MuTG9vcGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RTaW5nbGVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcml0ZXJpYSIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcGVyIiB0eXBlPSJhbmRyb2lkLm9zLkxvb3BlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0U2luZ2xlVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0U2luZ2xlVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JpdGVyaWEiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJzZW5kRXh0cmFDb21tYW5kIgogIHJldHVybj0iYm9vbGVhbiIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03OTY4Nyw2ICs4NDA1OCwzOTAgQEAKIDwvZmllbGQ+CiA8L2NsYXNzPgogPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5sb2NhdGlvbi5wcm92aWRlciIKKz4KKzxjbGFzcyBuYW1lPSJHZW9jb2RlUHJvdmlkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VvY29kZVByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQubG9jYXRpb24ucHJvdmlkZXIuR2VvY29kZVByb3ZpZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJpbmRlciIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdldEZyb21Mb2NhdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFJlc3VsdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkdlb2NvZGVyUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRycyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdldEZyb21Mb2NhdGlvbk5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93ZXJMZWZ0TGF0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93ZXJMZWZ0TG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwcGVyUmlnaHRMYXRpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cHBlclJpZ2h0TG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFJlc3VsdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkdlb2NvZGVyUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRycyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2NhdGlvblByb3ZpZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2F0aW9uUHJvdmlkZXIiCisgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5wcm92aWRlci5Mb2NhdGlvblByb3ZpZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJpbmRlciIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFkZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRpc2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FbmFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FbmFibGVMb2NhdGlvblRyYWNraW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXRBY2N1cmFjeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR2V0SW50ZXJuYWxTdGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdldFBvd2VyUmVxdWlyZW1lbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdldFN0YXR1cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR2V0U3RhdHVzVXBkYXRlVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkhhc01vbmV0YXJ5Q29zdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lZXRzQ3JpdGVyaWEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyaXRlcmlhIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVtb3ZlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVxdWlyZXNDZWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVxdWlyZXNOZXR3b3JrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVxdWlyZXNTYXRlbGxpdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZW5kRXh0cmFDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tYW5kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2V0TWluVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN1cHBvcnRzQWx0aXR1ZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXBwb3J0c0JlYXJpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXBwb3J0c1NwZWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVXBkYXRlTG9jYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVXBkYXRlTmV0d29ya1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBvcnRMb2NhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgogPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5tZWRpYSIKID4KIDxjbGFzcyBuYW1lPSJBc3luY1BsYXllciIKQEAgLTgyNTM5LDYgKzg3Mjk0LDIxIEBACiA8cGFyYW1ldGVyIG5hbWU9InF1YWxpdHkiIHR5cGU9ImludCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLkNhbWNvcmRlclByb2ZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8ZmllbGQgbmFtZT0iUVVBTElUWV9ISUdIIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtODI3MTEsNiArODc0ODEsMjEgQEAKIDxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEpwZWdFbmNvZGluZ1F1YWxpdHlQYXJhbWV0ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8ZmllbGQgbmFtZT0iUVVBTElUWV9ISUdIIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtODI3NjUsNiArODc1NTAsMTkgQEAKIDxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgogPC9leGNlcHRpb24+CiA8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbHRpdHVkZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgogIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC04MzAwMyw2ICs4NzgwMSwyOCBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0dQU19BTFRJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNBbHRpdHVkZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX0FMVElUVURFX1JFRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNBbHRpdHVkZVJlZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJUQUdfR1BTX0RBVEVTVEFNUCIKICB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC04NDE3OSw2ICs4ODk5OSwyOCBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVESUFfSU5GT19CVUZGRVJJTkdfRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0lORk9fQlVGRkVSSU5HX1NUQVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9Ik1FRElBX0lORk9fTUVUQURBVEFfVVBEQVRFIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTA0NDcwLDYgKzEwOTMxMiwyNSBAQAogPC9wYXJhbWV0ZXI+CiA8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+CiA8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3RWxlbWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+CiA8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgpAQCAtMTA2ODg4LDYgKzExMTc0OSwyOSBAQAogPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYlBvaW50ZXIiCiAgcmV0dXJuPSJ2b2lkIgogIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9ybWFsaXplZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgogIG5hdGl2ZT0iZmFsc2UiCiAgc3luY2hyb25pemVkPSJmYWxzZSIKICBzdGF0aWM9InRydWUiCkBAIC0xMTI3NjUsNiArMTE3NjQ5LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHSU5HRVJCUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPC9jbGFzcz4KIDxjbGFzcyBuYW1lPSJCdW5kbGUiCiAgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKQEAgLTEyMDM1MSw2ICsxMjUyNDYsMTE2IEBACiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgogPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpY3RNb2RlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRCbG9ja2luZ1BvbGljeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRocmVhZEJsb2NraW5nUG9saWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2xpY3lNYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJESVNBTExPV19ESVNLX1JFQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU0FMTE9XX0RJU0tfV1JJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU0FMTE9XX05FVFdPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBFTkFMVFlfREVBVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRU5BTFRZX0RJQUxPRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBFTkFMVFlfRFJPUEJPWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRU5BTFRZX0xPRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KIDxjbGFzcyBuYW1lPSJTeXN0ZW1DbG9jayIKICBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTEzMTY2MCw2ICsxMzY2NjUsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0lHTk9SRV9GSUxFTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDsubm9tZWRpYSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJNRURJQV9TQ0FOTkVSX1ZPTFVNRSIKICB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xMzQyOTQsNiArMTM5MzEwLDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVBQTElDQVRJT05fREVUQUlMU19TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkFQUExJQ0FUSU9OX0RFVEFJTFNfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUExJQ0FUSU9OX0RFVkVMT1BNRU5UX1NFVFRJTkdTIgogIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTE0MjIzOCw2ICsxNDcyNjUsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9FVkRPX0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfR1BSUyIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTE0ODczMiw2ICsxNTM3NzAsMzYgQEAKIDxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KIDwvZXhjZXB0aW9uPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5TG9nbyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5TmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eUxvZ28iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJnZXRBbGxQZXJtaXNzaW9uR3JvdXBzIgogIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8mZ3Q7IgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTE0ODgxNiw2ICsxNTM4ODQsMzQgQEAKIDxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkxvZ28iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uTG9nbyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZ2V0Q29tcG9uZW50RW5hYmxlZFNldHRpbmciCiAgcmV0dXJuPSJpbnQiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtMTY3ODQ5LDYgKzE3Mjk0NSw0OSBAQAogPC9wYXJhbWV0ZXI+CiA8L2NvbnN0cnVjdG9yPgogPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dFF1ZXVlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSW5wdXRRdWV1ZS5DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25JbnB1dFF1ZXVlQ3JlYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWUiIHR5cGU9ImFuZHJvaWQudmlldy5JbnB1dFF1ZXVlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSW5wdXRRdWV1ZURlc3Ryb3llZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWUiIHR5cGU9ImFuZHJvaWQudmlldy5JbnB1dFF1ZXVlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KIDxjbGFzcyBuYW1lPSJLZXlDaGFyYWN0ZXJNYXAiCiAgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC0xNjk2MzcsNiArMTc0Nzc2LDI4IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1BBR0VfRE9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfUEFHRV9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IktFWUNPREVfUEVSSU9EIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTY5NjQ4LDYgKzE3NDgwOSwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9QSUNUU1lNQk9MUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IktFWUNPREVfUExVUyIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTE2OTgyNCw2ICsxNzQ5OTYsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU1dJVENIX0NIQVJTRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJLRVlDT0RFX1NZTSIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTE3MTg0OSw3ICsxNzcwMzIsNyBAQAogIHN5bmNocm9uaXplZD0iZmFsc2UiCiAgc3RhdGljPSJ0cnVlIgogIGZpbmFsPSJmYWxzZSIKLSBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgpAQCAtMTcxOTQ5LDcgKzE3NzEzMiw3IEBACiAgbmF0aXZlPSJmYWxzZSIKICBzeW5jaHJvbml6ZWQ9ImZhbHNlIgogIHN0YXRpYz0iZmFsc2UiCi0gZmluYWw9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgogIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KQEAgLTE4MjI1OCw2ICsxODc0NDEsMTkgQEAKIDxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWtlSW5wdXRRdWV1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQudmlldy5JbnB1dFF1ZXVlLkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9InRha2VLZXlFdmVudHMiCiAgcmV0dXJuPSJ2b2lkIgogIGFic3RyYWN0PSJ0cnVlIgpAQCAtMTgyMjcxLDYgKzE4NzQ2NywxOSBAQAogPHBhcmFtZXRlciBuYW1lPSJnZXQiIHR5cGU9ImJvb2xlYW4iPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZVN1cmZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlci5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJ0b2dnbGVQYW5lbCIKICByZXR1cm49InZvaWQiCiAgYWJzdHJhY3Q9InRydWUiCkBAIC0yMDY2NTQsNiArMjExODYzLDE3IEBACiA8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCiAgcmV0dXJuPSJpbnQiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtMjE0MDIxLDcgKzIxOTI0MSw3IEBACiAgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCiAgdmlzaWJpbGl0eT0icHVibGljIgogPgotPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJUIj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iVCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgogPC9pbnRlcmZhY2U+CkBAIC0yMTY4MzIsNiArMjIyMDUyLDE5IEBACiA8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KIDwvcGFyYW1ldGVyPgogPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmluZExpYnJhcnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8L2NsYXNzPgogPGNsYXNzIG5hbWU9IlBvdGVudGlhbERlYWRsb2NrRXJyb3IiCiAgZXh0ZW5kcz0iamF2YS5sYW5nLlZpcnR1YWxNYWNoaW5lRXJyb3IiCmRpZmYgLS1naXQgYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9BbmRyb2lkLm1rIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQW5kcm9pZC5tawppbmRleCBkZjVjMTY2Li44Nzk3NWFmIDEwMDY0NAotLS0gYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9BbmRyb2lkLm1rCisrKyBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0FuZHJvaWQubWsKQEAgLTEsMTUgKzEsMTQgQEAKIExPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQogCi0jCi0jIFNldCBVU0VfQ0FNRVJBX1NUVUIgZm9yIG5vbi1lbXVsYXRvciBhbmQgbm9uLXNpbXVsYXRvciBidWlsZHMsIGlmIHlvdSB3YW50Ci0jIHRoZSBjYW1lcmEgc2VydmljZSB0byB1c2UgdGhlIGZha2UgY2FtZXJhLiAgRm9yIGVtdWxhdG9yIG9yIHNpbXVsYXRvciBidWlsZHMsCi0jIHdlIGFsd2F5cyB1c2UgdGhlIGZha2UgY2FtZXJhLgorIyBTZXQgVVNFX0NBTUVSQV9TVFVCIGlmIHlvdSBkb24ndCB3YW50IHRvIHVzZSB0aGUgaGFyZHdhcmUgY2FtZXJhLgorCisjIGZvcmNlIHRoZXNlIGJ1aWxkcyB0byB1c2UgY2FtZXJhIHN0dWIgb25seQoraWZuZXEgKCQoZmlsdGVyIHNvb25lciBnZW5lcmljIHNpbSwkKFRBUkdFVF9ERVZJQ0UpKSwpCisgIFVTRV9DQU1FUkFfU1RVQjo9dHJ1ZQorZW5kaWYKIAogaWZlcSAoJChVU0VfQ0FNRVJBX1NUVUIpLCkKLVVTRV9DQU1FUkFfU1RVQjo9ZmFsc2UKLWlmbmVxICgkKGZpbHRlciBzb29uZXIgZ2VuZXJpYyBzaW0sJChUQVJHRVRfREVWSUNFKSksKQotVVNFX0NBTUVSQV9TVFVCOj10cnVlCi1lbmRpZiAjbGliY2FtZXJhc3R1YgorICBVU0VfQ0FNRVJBX1NUVUI6PWZhbHNlCiBlbmRpZgogCiBpZmVxICgkKFVTRV9DQU1FUkFfU1RVQiksdHJ1ZSkKQEAgLTU0LDE4ICs1MywxNCBAQAogCiBMT0NBTF9NT0RVTEU6PSBsaWJjYW1lcmFzZXJ2aWNlCiAKLUxPQ0FMX0NGTEFHUyArPSAtRExPR19UQUc9XCJDYW1lcmFTZXJ2aWNlXCIKLQogaWZlcSAoJChUQVJHRVRfU0lNVUxBVE9SKSx0cnVlKQogTE9DQUxfQ0ZMQUdTICs9IC1EU0lOR0xFX1BST0NFU1MKIGVuZGlmCiAKIGlmZXEgKCQoVVNFX0NBTUVSQV9TVFVCKSwgdHJ1ZSkKIExPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgKz0gbGliY2FtZXJhc3R1YgotTE9DQUxfQ0ZMQUdTICs9IC1pbmNsdWRlIENhbWVyYUhhcmR3YXJlU3R1Yi5oCiBlbHNlCiBMT0NBTF9TSEFSRURfTElCUkFSSUVTICs9IGxpYmNhbWVyYSAKIGVuZGlmCiAKIGluY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKLQpkaWZmIC0tZ2l0IGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhSGFyZHdhcmVTdHViLmNwcCBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYUhhcmR3YXJlU3R1Yi5jcHAKaW5kZXggOGI2NjM4OS4uYjNlMGVlNiAxMDA2NDQKLS0tIGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhSGFyZHdhcmVTdHViLmNwcAorKysgYi9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFIYXJkd2FyZVN0dWIuY3BwCkBAIC00NywxNCArNDcsMTQgQEAKIHsKICAgICBDYW1lcmFQYXJhbWV0ZXJzIHA7CiAKLSAgICBwLnNldCgicHJldmlldy1zaXplLXZhbHVlcyIsIjMyMHgyNDAiKTsKKyAgICBwLnNldChDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfU1VQUE9SVEVEX1BSRVZJRVdfU0laRVMsICIzMjB4MjQwIik7CiAgICAgcC5zZXRQcmV2aWV3U2l6ZSgzMjAsIDI0MCk7CiAgICAgcC5zZXRQcmV2aWV3RnJhbWVSYXRlKDE1KTsKLSAgICBwLnNldFByZXZpZXdGb3JtYXQoInl1djQyMnNwIik7CisgICAgcC5zZXRQcmV2aWV3Rm9ybWF0KENhbWVyYVBhcmFtZXRlcnM6OlBJWEVMX0ZPUk1BVF9ZVVY0MjBTUCk7CiAKLSAgICBwLnNldCgicGljdHVyZS1zaXplLXZhbHVlcyIsICIzMjB4MjQwIik7CisgICAgcC5zZXQoQ2FtZXJhUGFyYW1ldGVyczo6S0VZX1NVUFBPUlRFRF9QSUNUVVJFX1NJWkVTLCAiMzIweDI0MCIpOwogICAgIHAuc2V0UGljdHVyZVNpemUoMzIwLCAyNDApOwotICAgIHAuc2V0UGljdHVyZUZvcm1hdCgianBlZyIpOworICAgIHAuc2V0UGljdHVyZUZvcm1hdChDYW1lcmFQYXJhbWV0ZXJzOjpQSVhFTF9GT1JNQVRfSlBFRyk7CiAKICAgICBpZiAoc2V0UGFyYW1ldGVycyhwKSAhPSBOT19FUlJPUikgewogICAgICAgICBMT0dFKCJGYWlsZWQgdG8gc2V0IGRlZmF1bHQgcGFyYW1ldGVycz8hIik7CkBAIC02NiwxNCArNjYsMTQgQEAKICAgICAvLyBDcmVhdGUgcmF3IGhlYXAuCiAgICAgaW50IHBpY3R1cmVfd2lkdGgsIHBpY3R1cmVfaGVpZ2h0OwogICAgIG1QYXJhbWV0ZXJzLmdldFBpY3R1cmVTaXplKCZwaWN0dXJlX3dpZHRoLCAmcGljdHVyZV9oZWlnaHQpOwotICAgIG1SYXdIZWFwID0gbmV3IE1lbW9yeUhlYXBCYXNlKHBpY3R1cmVfd2lkdGggKiAyICogcGljdHVyZV9oZWlnaHQpOworICAgIG1SYXdIZWFwID0gbmV3IE1lbW9yeUhlYXBCYXNlKHBpY3R1cmVfd2lkdGggKiBwaWN0dXJlX2hlaWdodCAqIDMgLyAyKTsKIAogICAgIGludCBwcmV2aWV3X3dpZHRoLCBwcmV2aWV3X2hlaWdodDsKICAgICBtUGFyYW1ldGVycy5nZXRQcmV2aWV3U2l6ZSgmcHJldmlld193aWR0aCwgJnByZXZpZXdfaGVpZ2h0KTsKICAgICBMT0dEKCJpbml0SGVhcExvY2tlZDogcHJldmlldyBzaXplPSVkeCVkIiwgcHJldmlld193aWR0aCwgcHJldmlld19oZWlnaHQpOwogCi0gICAgLy8gTm90ZSB0aGF0IHdlIGVuZm9yY2UgeXV2NDIyIGluIHNldFBhcmFtZXRlcnMoKS4KLSAgICBpbnQgaG93X2JpZyA9IHByZXZpZXdfd2lkdGggKiBwcmV2aWV3X2hlaWdodCAqIDI7CisgICAgLy8gTm90ZSB0aGF0IHdlIGVuZm9yY2UgeXV2NDIwc3AgaW4gc2V0UGFyYW1ldGVycygpLgorICAgIGludCBob3dfYmlnID0gcHJldmlld193aWR0aCAqIHByZXZpZXdfaGVpZ2h0ICogMyAvIDI7CiAKICAgICAvLyBJZiB3ZSBhcmUgYmVpbmcgcmVpbml0aWFsaXplZCB0byB0aGUgc2FtZSBzaXplIGFzIGJlZm9yZSwgbm8KICAgICAvLyB3b3JrIG5lZWRzIHRvIGJlIGRvbmUuCkBAIC05OSw3ICs5OSw2IEBACiB7CiAgICAgZGVsZXRlIG1GYWtlQ2FtZXJhOwogICAgIG1GYWtlQ2FtZXJhID0gMDsgLy8gcGFyYW5vaWEKLSAgICBzaW5nbGV0b24uY2xlYXIoKTsKIH0KIAogc3A8SU1lbW9yeUhlYXA+IENhbWVyYUhhcmR3YXJlU3R1Yjo6Z2V0UHJldmlld0hlYXAoKSBjb25zdApAQCAtMTc1LDcgKzE3NCw3IEBACiAKICAgICAgICAgLy8gRmlsbCB0aGUgY3VycmVudCBmcmFtZSB3aXRoIHRoZSBmYWtlIGNhbWVyYS4KICAgICAgICAgdWludDhfdCAqZnJhbWUgPSAoKHVpbnQ4X3QgKiliYXNlKSArIG9mZnNldDsKLSAgICAgICAgZmFrZUNhbWVyYS0+Z2V0TmV4dEZyYW1lQXNZdXY0MjIoZnJhbWUpOworICAgICAgICBmYWtlQ2FtZXJhLT5nZXROZXh0RnJhbWVBc1l1djQyMChmcmFtZSk7CiAKICAgICAgICAgLy9MT0dWKCJwcmV2aWV3VGhyZWFkOiBnZW5lcmF0ZWQgZnJhbWUgdG8gYnVmZmVyICVkIiwgbUN1cnJlbnRQcmV2aWV3RnJhbWUpOwogCkBAIC0yODgsOSArMjg3LDkgQEAKICAgICAgICAgLy8gSW4gdGhlIG1lYW50aW1lIGp1c3QgbWFrZSBhbm90aGVyIGZha2UgY2FtZXJhIHBpY3R1cmUuCiAgICAgICAgIGludCB3LCBoOwogICAgICAgICBtUGFyYW1ldGVycy5nZXRQaWN0dXJlU2l6ZSgmdywgJmgpOwotICAgICAgICBzcDxNZW1vcnlCYXNlPiBtZW0gPSBuZXcgTWVtb3J5QmFzZShtUmF3SGVhcCwgMCwgdyAqIDIgKiBoKTsKKyAgICAgICAgc3A8TWVtb3J5QmFzZT4gbWVtID0gbmV3IE1lbW9yeUJhc2UobVJhd0hlYXAsIDAsIHcgKiBoICogMyAvIDIpOwogICAgICAgICBGYWtlQ2FtZXJhIGNhbSh3LCBoKTsKLSAgICAgICAgY2FtLmdldE5leHRGcmFtZUFzWXV2NDIyKCh1aW50OF90ICopbVJhd0hlYXAtPmJhc2UoKSk7CisgICAgICAgIGNhbS5nZXROZXh0RnJhbWVBc1l1djQyMCgodWludDhfdCAqKW1SYXdIZWFwLT5iYXNlKCkpOwogICAgICAgICBtRGF0YUNiKENBTUVSQV9NU0dfUkFXX0lNQUdFLCBtZW0sIG1DYWxsYmFja0Nvb2tpZSk7CiAgICAgfQogCkBAIC0zMDcsNyArMzA2LDcgQEAKIHsKICAgICBzdG9wUHJldmlldygpOwogICAgIGlmIChjcmVhdGVUaHJlYWQoYmVnaW5QaWN0dXJlVGhyZWFkLCB0aGlzKSA9PSBmYWxzZSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKQEAgLTMzOSwxMiArMzM4LDE0IEBACiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwogICAgIC8vIFhYWCB2ZXJpZnkgcGFyYW1zCiAKLSAgICBpZiAoc3RyY21wKHBhcmFtcy5nZXRQcmV2aWV3Rm9ybWF0KCksICJ5dXY0MjJzcCIpICE9IDApIHsKLSAgICAgICAgTE9HRSgiT25seSB5dXY0MjJzcCBwcmV2aWV3IGlzIHN1cHBvcnRlZCIpOworICAgIGlmIChzdHJjbXAocGFyYW1zLmdldFByZXZpZXdGb3JtYXQoKSwKKyAgICAgICAgQ2FtZXJhUGFyYW1ldGVyczo6UElYRUxfRk9STUFUX1lVVjQyMFNQKSAhPSAwKSB7CisgICAgICAgIExPR0UoIk9ubHkgeXV2NDIwc3AgcHJldmlldyBpcyBzdXBwb3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAocGFyYW1zLmdldFBpY3R1cmVGb3JtYXQoKSwgImpwZWciKSAhPSAwKSB7CisgICAgaWYgKHN0cmNtcChwYXJhbXMuZ2V0UGljdHVyZUZvcm1hdCgpLAorICAgICAgICBDYW1lcmFQYXJhbWV0ZXJzOjpQSVhFTF9GT1JNQVRfSlBFRykgIT0gMCkgewogICAgICAgICBMT0dFKCJPbmx5IGpwZWcgc3RpbGwgcGljdHVyZXMgYXJlIHN1cHBvcnRlZCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzc5LDIyICszODAsMjkgQEAKIHsKIH0KIAotd3A8Q2FtZXJhSGFyZHdhcmVJbnRlcmZhY2U+IENhbWVyYUhhcmR3YXJlU3R1Yjo6c2luZ2xldG9uOwotCiBzcDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gQ2FtZXJhSGFyZHdhcmVTdHViOjpjcmVhdGVJbnN0YW5jZSgpCiB7Ci0gICAgaWYgKHNpbmdsZXRvbiAhPSAwKSB7Ci0gICAgICAgIHNwPENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlPiBoYXJkd2FyZSA9IHNpbmdsZXRvbi5wcm9tb3RlKCk7Ci0gICAgICAgIGlmIChoYXJkd2FyZSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gaGFyZHdhcmU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3A8Q2FtZXJhSGFyZHdhcmVJbnRlcmZhY2U+IGhhcmR3YXJlKG5ldyBDYW1lcmFIYXJkd2FyZVN0dWIoKSk7Ci0gICAgc2luZ2xldG9uID0gaGFyZHdhcmU7Ci0gICAgcmV0dXJuIGhhcmR3YXJlOworICAgIHJldHVybiBuZXcgQ2FtZXJhSGFyZHdhcmVTdHViKCk7CiB9CiAKLWV4dGVybiAiQyIgc3A8Q2FtZXJhSGFyZHdhcmVJbnRlcmZhY2U+IG9wZW5DYW1lcmFIYXJkd2FyZSgpCitzdGF0aWMgQ2FtZXJhSW5mbyBzQ2FtZXJhSW5mb1tdID0geworICAgIHsKKyAgICAgICAgQ0FNRVJBX0ZBQ0lOR19CQUNLLAorICAgICAgICA5MCwgIC8qIG9yaWVudGF0aW9uICovCisgICAgfQorfTsKKworZXh0ZXJuICJDIiBpbnQgSEFMX2dldE51bWJlck9mQ2FtZXJhcygpCit7CisgICAgcmV0dXJuIHNpemVvZihzQ2FtZXJhSW5mbykgLyBzaXplb2Yoc0NhbWVyYUluZm9bMF0pOworfQorCitleHRlcm4gIkMiIHZvaWQgSEFMX2dldENhbWVyYUluZm8oaW50IGNhbWVyYUlkLCBzdHJ1Y3QgQ2FtZXJhSW5mbyogY2FtZXJhSW5mbykKK3sKKyAgICBtZW1jcHkoY2FtZXJhSW5mbywgJnNDYW1lcmFJbmZvW2NhbWVyYUlkXSwgc2l6ZW9mKENhbWVyYUluZm8pKTsKK30KKworZXh0ZXJuICJDIiBzcDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gSEFMX29wZW5DYW1lcmFIYXJkd2FyZShpbnQgY2FtZXJhSWQpCiB7CiAgICAgcmV0dXJuIENhbWVyYUhhcmR3YXJlU3R1Yjo6Y3JlYXRlSW5zdGFuY2UoKTsKIH0KZGlmZiAtLWdpdCBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYUhhcmR3YXJlU3R1Yi5oIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhSGFyZHdhcmVTdHViLmgKaW5kZXggOTU3ODEzYTQuLmQzNDI3YmEgMTAwNjQ0Ci0tLSBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYUhhcmR3YXJlU3R1Yi5oCisrKyBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYUhhcmR3YXJlU3R1Yi5oCkBAIC02Nyw4ICs2Nyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBDYW1lcmFIYXJkd2FyZVN0dWIoKTsKICAgICB2aXJ0dWFsICAgICAgICAgICAgIH5DYW1lcmFIYXJkd2FyZVN0dWIoKTsKIAotICAgIHN0YXRpYyB3cDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gc2luZ2xldG9uOwotCiAgICAgc3RhdGljIGNvbnN0IGludCBrQnVmZmVyQ291bnQgPSA0OwogCiAgICAgY2xhc3MgUHJldmlld1RocmVhZCA6IHB1YmxpYyBUaHJlYWQgewpkaWZmIC0tZ2l0IGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhU2VydmljZS5jcHAgYi9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFTZXJ2aWNlLmNwcAppbmRleCAyNjkwMTgyLi4xMDY2OGE0IDEwMDY0NAotLS0gYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFTZXJ2aWNlLmNwcAorKysgYi9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFTZXJ2aWNlLmNwcApAQCAtMTcsMzgzICsxNyw0MzQgQEAKICovCiAKICNkZWZpbmUgTE9HX1RBRyAiQ2FtZXJhU2VydmljZSIKLSNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KIAotI2luY2x1ZGUgPGJpbmRlci9JU2VydmljZU1hbmFnZXIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKwogI2luY2x1ZGUgPGJpbmRlci9JUENUaHJlYWRTdGF0ZS5oPgotI2luY2x1ZGUgPHV0aWxzL1N0cmluZzE2Lmg+Ci0jaW5jbHVkZSA8dXRpbHMvRXJyb3JzLmg+CisjaW5jbHVkZSA8YmluZGVyL0lTZXJ2aWNlTWFuYWdlci5oPgogI2luY2x1ZGUgPGJpbmRlci9NZW1vcnlCYXNlLmg+CiAjaW5jbHVkZSA8YmluZGVyL01lbW9yeUhlYXBCYXNlLmg+Ci0jaW5jbHVkZSA8Y2FtZXJhL0lDYW1lcmFTZXJ2aWNlLmg+CisjaW5jbHVkZSA8Y3V0aWxzL2F0b21pYy5oPgorI2luY2x1ZGUgPGhhcmR3YXJlL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8bWVkaWEvQXVkaW9TeXN0ZW0uaD4KKyNpbmNsdWRlIDxtZWRpYS9tZWRpYXBsYXllci5oPgogI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlLmg+CiAjaW5jbHVkZSA8dWkvT3ZlcmxheS5oPgorI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHV0aWxzL1N0cmluZzE2Lmg+CiAKLSNpbmNsdWRlIDxoYXJkd2FyZS9oYXJkd2FyZS5oPgotCi0jaW5jbHVkZSA8bWVkaWEvbWVkaWFwbGF5ZXIuaD4KLSNpbmNsdWRlIDxtZWRpYS9BdWRpb1N5c3RlbS5oPgogI2luY2x1ZGUgIkNhbWVyYVNlcnZpY2UuaCIKIAotI2luY2x1ZGUgPGN1dGlscy9hdG9taWMuaD4KLQogbmFtZXNwYWNlIGFuZHJvaWQgewogCi1leHRlcm4gIkMiIHsKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBMb2dnaW5nIHN1cHBvcnQgLS0gdGhpcyBpcyBmb3IgZGVidWdnaW5nIG9ubHkKKy8vIFVzZSAiYWRiIHNoZWxsIGR1bXBzeXMgbWVkaWEuY2FtZXJhIC12IDEiIHRvIGNoYW5nZSBpdC4KK3N0YXRpYyB2b2xhdGlsZSBpbnQzMl90IGdMb2dMZXZlbCA9IDA7CisKKyNkZWZpbmUgTE9HMSguLi4pIExPR0RfSUYoZ0xvZ0xldmVsID49IDEsIF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgTE9HMiguLi4pIExPR0RfSUYoZ0xvZ0xldmVsID49IDIsIF9fVkFfQVJHU19fKTsKKworc3RhdGljIHZvaWQgc2V0TG9nTGV2ZWwoaW50IGxldmVsKSB7CisgICAgYW5kcm9pZF9hdG9taWNfd3JpdGUobGV2ZWwsICZnTG9nTGV2ZWwpOwogfQogCi0vLyBXaGVuIHlvdSBlbmFibGUgdGhpcywgYXMgd2VsbCBhcyBERUJVR19SRUZTPTEgYW5kCi0vLyBERUJVR19SRUZTX0VOQUJMRURfQllfREVGQVVMVD0wIGluIGxpYnV0aWxzL1JlZkJhc2UuY3BwLCB0aGlzIHdpbGwgdHJhY2sgYWxsCi0vLyByZWZlcmVuY2VzIHRvIHRoZSBDYW1lcmFTZXJ2aWNlOjpDbGllbnQgaW4gb3JkZXIgdG8gY2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlCi0vLyBjbGllbnQgaXMgYmVpbmcgZGVzdHJveWVkIHdoaWxlIGEgY2FsbGJhY2sgZnJvbSB0aGUgQ2FtZXJhSGFyZHdhcmVJbnRlcmZhY2UKLS8vIGlzIG91dHN0YW5kaW5nLiAgVGhpcyBpcyBhIHNlcmlvdXMgYnVnIGJlY2F1c2UgaWYgd2UgbWFrZSBhbm90aGVyIGNhbGwgaW50bwotLy8gQ2FtZXJhSGFyZHdyZUludGVyZmFjZSB0aGF0IGl0c2VsZiB0cmlnZ2VycyBhIGNhbGxiYWNrLCB3ZSB3aWxsIGRlYWRsb2NrLgotCi0jZGVmaW5lIERFQlVHX0NMSUVOVF9SRUZFUkVOQ0VTIDAKLQotI2RlZmluZSBQSUNUVVJFX1RJTUVPVVQgc2Vjb25kcyg1KQotCi0jZGVmaW5lIERFQlVHX0RVTVBfUFJFVklFV19GUkFNRV9UT19GSUxFIDAgLyogbi10aCBmcmFtZSB0byB3cml0ZSAqLwotI2RlZmluZSBERUJVR19EVU1QX0pQRUdfU05BUFNIT1RfVE9fRklMRSAwCi0jZGVmaW5lIERFQlVHX0RVTVBfWVVWX1NOQVBTSE9UX1RPX0ZJTEUgMAotI2RlZmluZSBERUJVR19EVU1QX1BPU1RWSUVXX1NOQVBTSE9UX1RPX0ZJTEUgMAotCi0jaWYgREVCVUdfRFVNUF9QUkVWSUVXX0ZSQU1FX1RPX0ZJTEUKLXN0YXRpYyBpbnQgZGVidWdfZnJhbWVfY250OwotI2VuZGlmCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBpbnQgZ2V0Q2FsbGluZ1BpZCgpIHsKICAgICByZXR1cm4gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Z2V0Q2FsbGluZ1BpZCgpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXZvaWQgQ2FtZXJhU2VydmljZTo6aW5zdGFudGlhdGUoKSB7Ci0gICAgZGVmYXVsdFNlcnZpY2VNYW5hZ2VyKCktPmFkZFNlcnZpY2UoCi0gICAgICAgICAgICBTdHJpbmcxNigibWVkaWEuY2FtZXJhIiksIG5ldyBDYW1lcmFTZXJ2aWNlKCkpOworc3RhdGljIGludCBnZXRDYWxsaW5nVWlkKCkgeworICAgIHJldHVybiBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nVWlkKCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ2FtZXJhU2VydmljZTo6Q2FtZXJhU2VydmljZSgpIDoKLSAgICBCbkNhbWVyYVNlcnZpY2UoKQotewotICAgIExPR0koIkNhbWVyYVNlcnZpY2Ugc3RhcnRlZDogcGlkPSVkIiwgZ2V0cGlkKCkpOwotICAgIG1Vc2VycyA9IDA7Ci19CisvLyBUaGlzIGlzIHVnbHkgYW5kIG9ubHkgc2FmZSBpZiB3ZSBuZXZlciByZS1jcmVhdGUgdGhlIENhbWVyYVNlcnZpY2UsIGJ1dAorLy8gc2hvdWxkIGJlIG9rIGZvciBub3cuCitzdGF0aWMgQ2FtZXJhU2VydmljZSAqZ0NhbWVyYVNlcnZpY2U7CiAKLUNhbWVyYVNlcnZpY2U6On5DYW1lcmFTZXJ2aWNlKCkKK0NhbWVyYVNlcnZpY2U6OkNhbWVyYVNlcnZpY2UoKQorOm1Tb3VuZFJlZigwKQogewotICAgIGlmIChtQ2xpZW50ICE9IDApIHsKLSAgICAgICAgTE9HRSgibUNsaWVudCB3YXMgc3RpbGwgY29ubmVjdGVkIGluIGRlc3RydWN0b3IhIik7CisgICAgTE9HSSgiQ2FtZXJhU2VydmljZSBzdGFydGVkIChwaWQ9JWQpIiwgZ2V0cGlkKCkpOworCisgICAgbU51bWJlck9mQ2FtZXJhcyA9IEhBTF9nZXROdW1iZXJPZkNhbWVyYXMoKTsKKyAgICBpZiAobU51bWJlck9mQ2FtZXJhcyA+IE1BWF9DQU1FUkFTKSB7CisgICAgICAgIExPR0UoIk51bWJlciBvZiBjYW1lcmFzKCVkKSA+IE1BWF9DQU1FUkFTKCVkKS4iLAorICAgICAgICAgICAgIG1OdW1iZXJPZkNhbWVyYXMsIE1BWF9DQU1FUkFTKTsKKyAgICAgICAgbU51bWJlck9mQ2FtZXJhcyA9IE1BWF9DQU1FUkFTOwogICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bWJlck9mQ2FtZXJhczsgaSsrKSB7CisgICAgICAgIHNldENhbWVyYUZyZWUoaSk7CisgICAgfQorCisgICAgZ0NhbWVyYVNlcnZpY2UgPSB0aGlzOwogfQogCi1zcDxJQ2FtZXJhPiBDYW1lcmFTZXJ2aWNlOjpjb25uZWN0KGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjYW1lcmFDbGllbnQpCi17Ci0gICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7Ci0gICAgTE9HVigiQ2FtZXJhU2VydmljZTo6Y29ubmVjdCBFIChwaWQgJWQsIGNsaWVudCAlcCkiLCBjYWxsaW5nUGlkLAotICAgICAgICAgICAgY2FtZXJhQ2xpZW50LT5hc0JpbmRlcigpLmdldCgpKTsKLQotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1TZXJ2aWNlTG9jayk7Ci0gICAgc3A8Q2xpZW50PiBjbGllbnQ7Ci0gICAgaWYgKG1DbGllbnQgIT0gMCkgewotICAgICAgICBzcDxDbGllbnQ+IGN1cnJlbnRDbGllbnQgPSBtQ2xpZW50LnByb21vdGUoKTsKLSAgICAgICAgaWYgKGN1cnJlbnRDbGllbnQgIT0gMCkgewotICAgICAgICAgICAgc3A8SUNhbWVyYUNsaWVudD4gY3VycmVudENhbWVyYUNsaWVudChjdXJyZW50Q2xpZW50LT5nZXRDYW1lcmFDbGllbnQoKSk7Ci0gICAgICAgICAgICBpZiAoY2FtZXJhQ2xpZW50LT5hc0JpbmRlcigpID09IGN1cnJlbnRDYW1lcmFDbGllbnQtPmFzQmluZGVyKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGNsaWVudCByZWNvbm5lY3RpbmcuLi4KLSAgICAgICAgICAgICAgICBMT0dWKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IFggKHBpZCAlZCwgc2FtZSBjbGllbnQgJXApIGlzIHJlY29ubmVjdGluZy4uLiIsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQsIGNhbWVyYUNsaWVudC0+YXNCaW5kZXIoKS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDbGllbnQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIEl0J3MgYW5vdGhlciBjbGllbnQuLi4gcmVqZWN0IGl0Ci0gICAgICAgICAgICAgICAgTE9HVigiQ2FtZXJhU2VydmljZTo6Y29ubmVjdCBYIChwaWQgJWQsIG5ldyBjbGllbnQgJXApIHJlamVjdGVkLiAiCi0gICAgICAgICAgICAgICAgICAgICIob2xkIHBpZCAlZCwgb2xkIGNsaWVudCAlcCkiLAotICAgICAgICAgICAgICAgICAgICBjYWxsaW5nUGlkLCBjYW1lcmFDbGllbnQtPmFzQmluZGVyKCkuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDbGllbnQtPm1DbGllbnRQaWQsIGN1cnJlbnRDYW1lcmFDbGllbnQtPmFzQmluZGVyKCkuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGlmIChraWxsKGN1cnJlbnRDbGllbnQtPm1DbGllbnRQaWQsIDApID09IC0xICYmIGVycm5vID09IEVTUkNIKSB7Ci0gICAgICAgICAgICAgICAgICAgIExPR1YoIlRoZSBvbGQgY2xpZW50IGlzIGRlYWQhIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBjbGllbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBjYW4ndCBwcm9tb3RlLCB0aGUgcHJldmlvdXMgY2xpZW50IGhhcyBkaWVkLi4uCi0gICAgICAgICAgICBMT0dWKCJOZXcgY2xpZW50IChwaWQgJWQpIGNvbm5lY3RpbmcsIG9sZCByZWZlcmVuY2Ugd2FzIGRhbmdsaW5nLi4uIiwKLSAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCk7Ci0gICAgICAgICAgICBtQ2xpZW50LmNsZWFyKCk7CitDYW1lcmFTZXJ2aWNlOjp+Q2FtZXJhU2VydmljZSgpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1iZXJPZkNhbWVyYXM7IGkrKykgeworICAgICAgICBpZiAobUJ1c3lbaV0pIHsKKyAgICAgICAgICAgIExPR0UoImNhbWVyYSAlZCBpcyBzdGlsbCBpbiB1c2UgaW4gZGVzdHJ1Y3RvciEiLCBpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtVXNlcnMgPiAwKSB7Ci0gICAgICAgIExPR1YoIlN0aWxsIGhhdmUgY2xpZW50LCByZWplY3RlZCIpOwotICAgICAgICByZXR1cm4gY2xpZW50OworICAgIGdDYW1lcmFTZXJ2aWNlID0gTlVMTDsKK30KKworaW50MzJfdCBDYW1lcmFTZXJ2aWNlOjpnZXROdW1iZXJPZkNhbWVyYXMoKSB7CisgICAgcmV0dXJuIG1OdW1iZXJPZkNhbWVyYXM7Cit9CisKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OmdldENhbWVyYUluZm8oaW50IGNhbWVyYUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ2FtZXJhSW5mbyogY2FtZXJhSW5mbykgeworICAgIGlmIChjYW1lcmFJZCA8IDAgfHwgY2FtZXJhSWQgPj0gbU51bWJlck9mQ2FtZXJhcykgeworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIH0KIAotICAgIC8vIGNyZWF0ZSBhIG5ldyBDbGllbnQgb2JqZWN0Ci0gICAgY2xpZW50ID0gbmV3IENsaWVudCh0aGlzLCBjYW1lcmFDbGllbnQsIGNhbGxpbmdQaWQpOwotICAgIG1DbGllbnQgPSBjbGllbnQ7Ci0jaWYgREVCVUdfQ0xJRU5UX1JFRkVSRU5DRVMKLSAgICAvLyBFbmFibGUgdHJhY2tpbmcgZm9yIHRoaXMgb2JqZWN0LCBhbmQgdHJhY2sgaW5jcmVtZW50cyBhbmQgZGVjcmVtZW50cyBvZgotICAgIC8vIHRoZSByZWZjb3VudC4KLSAgICBjbGllbnQtPnRyYWNrTWUodHJ1ZSwgdHJ1ZSk7Ci0jZW5kaWYKLSAgICBMT0dWKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IFgiKTsKKyAgICBIQUxfZ2V0Q2FtZXJhSW5mbyhjYW1lcmFJZCwgY2FtZXJhSW5mbyk7CisgICAgcmV0dXJuIE9LOworfQorCitzcDxJQ2FtZXJhPiBDYW1lcmFTZXJ2aWNlOjpjb25uZWN0KAorICAgICAgICBjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50LCBpbnQgY2FtZXJhSWQpIHsKKyAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKKyAgICBMT0cxKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IEUgKHBpZCAlZCwgaWQgJWQpIiwgY2FsbGluZ1BpZCwgY2FtZXJhSWQpOworCisgICAgc3A8Q2xpZW50PiBjbGllbnQ7CisgICAgaWYgKGNhbWVyYUlkIDwgMCB8fCBjYW1lcmFJZCA+PSBtTnVtYmVyT2ZDYW1lcmFzKSB7CisgICAgICAgIExPR0UoIkNhbWVyYVNlcnZpY2U6OmNvbm5lY3QgWCAocGlkICVkKSByZWplY3RlZCAoaW52YWxpZCBjYW1lcmFJZCAlZCkuIiwKKyAgICAgICAgICAgIGNhbGxpbmdQaWQsIGNhbWVyYUlkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobVNlcnZpY2VMb2NrKTsKKyAgICBpZiAobUNsaWVudFtjYW1lcmFJZF0gIT0gMCkgeworICAgICAgICBjbGllbnQgPSBtQ2xpZW50W2NhbWVyYUlkXS5wcm9tb3RlKCk7CisgICAgICAgIGlmIChjbGllbnQgIT0gMCkgeworICAgICAgICAgICAgaWYgKGNhbWVyYUNsaWVudC0+YXNCaW5kZXIoKSA9PSBjbGllbnQtPmdldENhbWVyYUNsaWVudCgpLT5hc0JpbmRlcigpKSB7CisgICAgICAgICAgICAgICAgTE9HMSgiQ2FtZXJhU2VydmljZTo6Y29ubmVjdCBYIChwaWQgJWQpICh0aGUgc2FtZSBjbGllbnQpIiwKKyAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsaWVudDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTE9HVygiQ2FtZXJhU2VydmljZTo6Y29ubmVjdCBYIChwaWQgJWQpIHJlamVjdGVkIChleGlzdGluZyBjbGllbnQpLiIsCisgICAgICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1DbGllbnRbY2FtZXJhSWRdLmNsZWFyKCk7CisgICAgfQorCisgICAgaWYgKG1CdXN5W2NhbWVyYUlkXSkgeworICAgICAgICBMT0dXKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IFggKHBpZCAlZCkgcmVqZWN0ZWQiCisgICAgICAgICAgICAgIiAoY2FtZXJhICVkIGlzIHN0aWxsIGJ1c3kpLiIsIGNhbGxpbmdQaWQsIGNhbWVyYUlkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY2xpZW50ID0gbmV3IENsaWVudCh0aGlzLCBjYW1lcmFDbGllbnQsIGNhbWVyYUlkLCBjYWxsaW5nUGlkKTsKKyAgICBtQ2xpZW50W2NhbWVyYUlkXSA9IGNsaWVudDsKKyAgICBMT0cxKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IFgiKTsKICAgICByZXR1cm4gY2xpZW50OwogfQogCi12b2lkIENhbWVyYVNlcnZpY2U6OnJlbW92ZUNsaWVudChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50KQotewordm9pZCBDYW1lcmFTZXJ2aWNlOjpyZW1vdmVDbGllbnQoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCkgewogICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOworICAgIExPRzEoIkNhbWVyYVNlcnZpY2U6OnJlbW92ZUNsaWVudCBFIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CiAKLSAgICAvLyBEZWNsYXJlIHRoaXMgb3V0c2lkZSB0aGUgbG9jayB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGUKLSAgICAvLyBkZXN0cnVjdG9yIHdvbid0IGJlIGNhbGxlZCB3aXRoIHRoZSBsb2NrIGhlbGQuCi0gICAgc3A8Q2xpZW50PiBjbGllbnQ7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtYmVyT2ZDYW1lcmFzOyBpKyspIHsKKyAgICAgICAgLy8gRGVjbGFyZSB0aGlzIGJlZm9yZSB0aGUgbG9jayB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGUKKyAgICAgICAgLy8gZGVzdHJ1Y3RvciB3b24ndCBiZSBjYWxsZWQgd2l0aCB0aGUgbG9jayBoZWxkLgorICAgICAgICBzcDxDbGllbnQ+IGNsaWVudDsKIAotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1TZXJ2aWNlTG9jayk7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1TZXJ2aWNlTG9jayk7CiAKLSAgICBpZiAobUNsaWVudCA9PSAwKSB7Ci0gICAgICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHdlIGhhdmUgYWxyZWFkeSBkaXNjb25uZWN0ZWQuCi0gICAgICAgIExPR1YoInJlbW92ZUNsaWVudCAocGlkICVkKTogYWxyZWFkeSBkaXNjb25uZWN0ZWQiLCBjYWxsaW5nUGlkKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiB3ZSBoYXZlIGFscmVhZHkgZGlzY29ubmVjdGVkIChvciB0aGlzIGlzCisgICAgICAgIC8vIGp1c3QgYW5vdGhlciB1bnVzZWQgY2FtZXJhKS4KKyAgICAgICAgaWYgKG1DbGllbnRbaV0gPT0gMCkgY29udGludWU7CisKKyAgICAgICAgLy8gUHJvbW90ZSBtQ2xpZW50LiBJdCBjYW4gZmFpbCBpZiB3ZSBhcmUgY2FsbGVkIGZyb20gdGhpcyBwYXRoOgorICAgICAgICAvLyBDbGllbnQ6On5DbGllbnQoKSAtPiBkaXNjb25uZWN0KCkgLT4gcmVtb3ZlQ2xpZW50KCkuCisgICAgICAgIGNsaWVudCA9IG1DbGllbnRbaV0ucHJvbW90ZSgpOworCisgICAgICAgIGlmIChjbGllbnQgPT0gMCkgeworICAgICAgICAgICAgbUNsaWVudFtpXS5jbGVhcigpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2FtZXJhQ2xpZW50LT5hc0JpbmRlcigpID09IGNsaWVudC0+Z2V0Q2FtZXJhQ2xpZW50KCktPmFzQmluZGVyKCkpIHsKKyAgICAgICAgICAgIC8vIEZvdW5kIG91ciBjYW1lcmEsIGNsZWFyIGFuZCBsZWF2ZS4KKyAgICAgICAgICAgIExPRzEoInJlbW92ZUNsaWVudDogY2xlYXIgY2FtZXJhICVkIiwgaSk7CisgICAgICAgICAgICBtQ2xpZW50W2ldLmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFByb21vdGUgbUNsaWVudC4gSXQgY2FuIGZhaWwgaWYgd2UgYXJlIGNhbGxlZCBmcm9tIHRoaXMgcGF0aDoKLSAgICAvLyBDbGllbnQ6On5DbGllbnQoKSAtPiBkaXNjb25uZWN0KCkgLT4gcmVtb3ZlQ2xpZW50KCkuCi0gICAgY2xpZW50ID0gbUNsaWVudC5wcm9tb3RlKCk7Ci0gICAgaWYgKGNsaWVudCA9PSAwKSB7Ci0gICAgICAgIExPR1YoInJlbW92ZUNsaWVudCAocGlkICVkKTogbm8gbW9yZSBzdHJvbmcgcmVmZXJlbmNlIiwgY2FsbGluZ1BpZCk7Ci0gICAgICAgIG1DbGllbnQuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOworICAgIExPRzEoIkNhbWVyYVNlcnZpY2U6OnJlbW92ZUNsaWVudCBYIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7Cit9CisKK3NwPENhbWVyYVNlcnZpY2U6OkNsaWVudD4gQ2FtZXJhU2VydmljZTo6Z2V0Q2xpZW50QnlJZChpbnQgY2FtZXJhSWQpIHsKKyAgICBpZiAoY2FtZXJhSWQgPCAwIHx8IGNhbWVyYUlkID49IG1OdW1iZXJPZkNhbWVyYXMpIHJldHVybiBOVUxMOworICAgIHJldHVybiBtQ2xpZW50W2NhbWVyYUlkXS5wcm9tb3RlKCk7Cit9CisKK3ZvaWQgQ2FtZXJhU2VydmljZTo6aW5zdGFudGlhdGUoKSB7CisgICAgZGVmYXVsdFNlcnZpY2VNYW5hZ2VyKCktPmFkZFNlcnZpY2UoU3RyaW5nMTYoIm1lZGlhLmNhbWVyYSIpLAorICAgICAgICBuZXcgQ2FtZXJhU2VydmljZSgpKTsKK30KKworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6b25UcmFuc2FjdCgKKyAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKSB7CisgICAgLy8gUGVybWlzc2lvbiBjaGVja3MKKyAgICBzd2l0Y2ggKGNvZGUpIHsKKyAgICAgICAgY2FzZSBCbkNhbWVyYVNlcnZpY2U6OkNPTk5FQ1Q6CisgICAgICAgICAgICBjb25zdCBpbnQgcGlkID0gZ2V0Q2FsbGluZ1BpZCgpOworICAgICAgICAgICAgY29uc3QgaW50IHNlbGZfcGlkID0gZ2V0cGlkKCk7CisgICAgICAgICAgICBpZiAocGlkICE9IHNlbGZfcGlkKSB7CisgICAgICAgICAgICAgICAgLy8gd2UncmUgY2FsbGVkIGZyb20gYSBkaWZmZXJlbnQgcHJvY2VzcywgZG8gdGhlIHJlYWwgY2hlY2sKKyAgICAgICAgICAgICAgICBpZiAoIWNoZWNrQ2FsbGluZ1Blcm1pc3Npb24oCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcxNigiYW5kcm9pZC5wZXJtaXNzaW9uLkNBTUVSQSIpKSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgdWlkID0gZ2V0Q2FsbGluZ1VpZCgpOworICAgICAgICAgICAgICAgICAgICBMT0dFKCJQZXJtaXNzaW9uIERlbmlhbDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgdGhlIGNhbWVyYSBwaWQ9JWQsIHVpZD0lZCIsIHBpZCwgdWlkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmIChjYW1lcmFDbGllbnQtPmFzQmluZGVyKCkgIT0gY2xpZW50LT5nZXRDYW1lcmFDbGllbnQoKS0+YXNCaW5kZXIoKSkgewotICAgICAgICAvLyB1Z2ghIHRoYXQncyBub3Qgb3VyIGNsaWVudCEhCi0gICAgICAgIExPR1coInJlbW92ZUNsaWVudCAocGlkICVkKTogbUNsaWVudCBkb2Vzbid0IG1hdGNoISIsIGNhbGxpbmdQaWQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIG9rYXksIGdvb2QsIGZvcmdldCBhYm91dCBtQ2xpZW50Ci0gICAgICAgIG1DbGllbnQuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBMT0dWKCJyZW1vdmVDbGllbnQgKHBpZCAlZCkgZG9uZSIsIGNhbGxpbmdQaWQpOworICAgIHJldHVybiBCbkNhbWVyYVNlcnZpY2U6Om9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKIH0KIAotLy8gVGhlIHJlYXNvbiB3ZSBuZWVkIHRoaXMgY291bnQgaXMgYSBuZXcgQ2FtZXJhU2VydmljZTo6Y29ubmVjdCgpIHJlcXVlc3QgbWF5Ci0vLyBjb21lIGluIHdoaWxlIHRoZSBwcmV2aW91cyBDbGllbnQncyBkZXN0cnVjdG9yIGhhcyBub3QgYmVlbiBydW4gb3IgaXMgc3RpbGwKLS8vIHJ1bm5pbmcuIElmIHRoZSBsYXN0IHN0cm9uZyByZWZlcmVuY2Ugb2YgdGhlIHByZXZpb3VzIENsaWVudCBpcyBnb25lIGJ1dAotLy8gZGVzdHJ1Y3RvciBoYXMgbm90IGJlZW4gcnVuLCB3ZSBzaG91bGQgbm90IGFsbG93IHRoZSBuZXcgQ2xpZW50IHRvIGJlIGNyZWF0ZWQKLS8vIGJlY2F1c2Ugd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgcHJldmlvdXMgQ2xpZW50IHRvIHRlYXIgZG93biB0aGUgaGFyZHdhcmUKLS8vIGZpcnN0Lgotdm9pZCBDYW1lcmFTZXJ2aWNlOjppbmNVc2VycygpIHsKLSAgICBhbmRyb2lkX2F0b21pY19pbmMoJm1Vc2Vycyk7CisvLyBUaGUgcmVhc29uIHdlIG5lZWQgdGhpcyBidXN5IGJpdCBpcyBhIG5ldyBDYW1lcmFTZXJ2aWNlOjpjb25uZWN0KCkgcmVxdWVzdAorLy8gbWF5IGNvbWUgaW4gd2hpbGUgdGhlIHByZXZpb3VzIENsaWVudCdzIGRlc3RydWN0b3IgaGFzIG5vdCBiZWVuIHJ1biBvciBpcworLy8gc3RpbGwgcnVubmluZy4gSWYgdGhlIGxhc3Qgc3Ryb25nIHJlZmVyZW5jZSBvZiB0aGUgcHJldmlvdXMgQ2xpZW50IGlzIGdvbmUKKy8vIGJ1dCB0aGUgZGVzdHJ1Y3RvciBoYXMgbm90IGJlZW4gZmluaXNoZWQsIHdlIHNob3VsZCBub3QgYWxsb3cgdGhlIG5ldyBDbGllbnQKKy8vIHRvIGJlIGNyZWF0ZWQgYmVjYXVzZSB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBwcmV2aW91cyBDbGllbnQgdG8gdGVhciBkb3duCisvLyB0aGUgaGFyZHdhcmUgZmlyc3QuCit2b2lkIENhbWVyYVNlcnZpY2U6OnNldENhbWVyYUJ1c3koaW50IGNhbWVyYUlkKSB7CisgICAgYW5kcm9pZF9hdG9taWNfd3JpdGUoMSwgJm1CdXN5W2NhbWVyYUlkXSk7CiB9CiAKLXZvaWQgQ2FtZXJhU2VydmljZTo6ZGVjVXNlcnMoKSB7Ci0gICAgYW5kcm9pZF9hdG9taWNfZGVjKCZtVXNlcnMpOwordm9pZCBDYW1lcmFTZXJ2aWNlOjpzZXRDYW1lcmFGcmVlKGludCBjYW1lcmFJZCkgeworICAgIGFuZHJvaWRfYXRvbWljX3dyaXRlKDAsICZtQnVzeVtjYW1lcmFJZF0pOwogfQogCi1zdGF0aWMgc3A8TWVkaWFQbGF5ZXI+IG5ld01lZGlhUGxheWVyKGNvbnN0IGNoYXIgKmZpbGUpCi17Ci0gICAgc3A8TWVkaWFQbGF5ZXI+IG1wID0gbmV3IE1lZGlhUGxheWVyKCk7Ci0gICAgaWYgKG1wLT5zZXREYXRhU291cmNlKGZpbGUsIE5VTEwgLyogaGVhZGVycyAqLykgPT0gTk9fRVJST1IpIHsKKy8vIFdlIHNoYXJlIHRoZSBtZWRpYSBwbGF5ZXJzIGZvciBzaHV0dGVyIGFuZCByZWNvcmRpbmcgc291bmQgZm9yIGFsbCBjbGllbnRzLgorLy8gQSByZWZlcmVuY2UgY291bnQgaXMga2VwdCB0byBkZXRlcm1pbmUgd2hlbiB3ZSB3aWxsIGFjdHVhbGx5IHJlbGVhc2UgdGhlCisvLyBtZWRpYSBwbGF5ZXJzLgorCitzdGF0aWMgTWVkaWFQbGF5ZXIqIG5ld01lZGlhUGxheWVyKGNvbnN0IGNoYXIgKmZpbGUpIHsKKyAgICBNZWRpYVBsYXllciogbXAgPSBuZXcgTWVkaWFQbGF5ZXIoKTsKKyAgICBpZiAobXAtPnNldERhdGFTb3VyY2UoZmlsZSwgTlVMTCkgPT0gTk9fRVJST1IpIHsKICAgICAgICAgbXAtPnNldEF1ZGlvU3RyZWFtVHlwZShBdWRpb1N5c3RlbTo6RU5GT1JDRURfQVVESUJMRSk7CiAgICAgICAgIG1wLT5wcmVwYXJlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbXAuY2xlYXIoKTsKLSAgICAgICAgTE9HRSgiRmFpbGVkIHRvIGxvYWQgQ2FtZXJhU2VydmljZSBzb3VuZHMuIik7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBsb2FkIENhbWVyYVNlcnZpY2Ugc291bmRzOiAlcyIsIGZpbGUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIG1wOwogfQogCit2b2lkIENhbWVyYVNlcnZpY2U6OmxvYWRTb3VuZCgpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtU291bmRMb2NrKTsKKyAgICBMT0cxKCJDYW1lcmFTZXJ2aWNlOjpsb2FkU291bmQgcmVmPSVkIiwgbVNvdW5kUmVmKTsKKyAgICBpZiAobVNvdW5kUmVmKyspIHJldHVybjsKKworICAgIG1Tb3VuZFBsYXllcltTT1VORF9TSFVUVEVSXSA9IG5ld01lZGlhUGxheWVyKCIvc3lzdGVtL21lZGlhL2F1ZGlvL3VpL2NhbWVyYV9jbGljay5vZ2ciKTsKKyAgICBtU291bmRQbGF5ZXJbU09VTkRfUkVDT1JESU5HXSA9IG5ld01lZGlhUGxheWVyKCIvc3lzdGVtL21lZGlhL2F1ZGlvL3VpL1ZpZGVvUmVjb3JkLm9nZyIpOworfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OnJlbGVhc2VTb3VuZCgpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtU291bmRMb2NrKTsKKyAgICBMT0cxKCJDYW1lcmFTZXJ2aWNlOjpyZWxlYXNlU291bmQgcmVmPSVkIiwgbVNvdW5kUmVmKTsKKyAgICBpZiAoLS1tU291bmRSZWYpIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX1NPVU5EUzsgaSsrKSB7CisgICAgICAgIGlmIChtU291bmRQbGF5ZXJbaV0gIT0gMCkgeworICAgICAgICAgICAgbVNvdW5kUGxheWVyW2ldLT5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICBtU291bmRQbGF5ZXJbaV0uY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDYW1lcmFTZXJ2aWNlOjpwbGF5U291bmQoc291bmRfa2luZCBraW5kKSB7CisgICAgTE9HMSgicGxheVNvdW5kKCVkKSIsIGtpbmQpOworICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Tb3VuZExvY2spOworICAgIHNwPE1lZGlhUGxheWVyPiBwbGF5ZXIgPSBtU291bmRQbGF5ZXJba2luZF07CisgICAgaWYgKHBsYXllciAhPSAwKSB7CisgICAgICAgIC8vIGRvIG5vdCBwbGF5IHRoZSBzb3VuZCBpZiBzdHJlYW0gdm9sdW1lIGlzIDAKKyAgICAgICAgLy8gKHR5cGljYWxseSBiZWNhdXNlIHJpbmdlciBtb2RlIGlzIHNpbGVudCkuCisgICAgICAgIGludCBpbmRleDsKKyAgICAgICAgQXVkaW9TeXN0ZW06OmdldFN0cmVhbVZvbHVtZUluZGV4KEF1ZGlvU3lzdGVtOjpFTkZPUkNFRF9BVURJQkxFLCAmaW5kZXgpOworICAgICAgICBpZiAoaW5kZXggIT0gMCkgeworICAgICAgICAgICAgcGxheWVyLT5zZWVrVG8oMCk7CisgICAgICAgICAgICBwbGF5ZXItPnN0YXJ0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpDbGllbnQoY29uc3Qgc3A8Q2FtZXJhU2VydmljZT4mIGNhbWVyYVNlcnZpY2UsCi0gICAgICAgIGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjYW1lcmFDbGllbnQsIHBpZF90IGNsaWVudFBpZCkKLXsKKyAgICAgICAgY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCwgaW50IGNhbWVyYUlkLCBpbnQgY2xpZW50UGlkKSB7CiAgICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7Ci0gICAgTE9HVigiQ2xpZW50OjpDbGllbnQgRSAocGlkICVkKSIsIGNhbGxpbmdQaWQpOworICAgIExPRzEoIkNsaWVudDo6Q2xpZW50IEUgKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKKwogICAgIG1DYW1lcmFTZXJ2aWNlID0gY2FtZXJhU2VydmljZTsKICAgICBtQ2FtZXJhQ2xpZW50ID0gY2FtZXJhQ2xpZW50OworICAgIG1DYW1lcmFJZCA9IGNhbWVyYUlkOwogICAgIG1DbGllbnRQaWQgPSBjbGllbnRQaWQ7Ci0gICAgbUhhcmR3YXJlID0gb3BlbkNhbWVyYUhhcmR3YXJlKCk7CisKKyAgICBtSGFyZHdhcmUgPSBIQUxfb3BlbkNhbWVyYUhhcmR3YXJlKGNhbWVyYUlkKTsKICAgICBtVXNlT3ZlcmxheSA9IG1IYXJkd2FyZS0+dXNlT3ZlcmxheSgpOworICAgIG1Nc2dFbmFibGVkID0gMDsKIAogICAgIG1IYXJkd2FyZS0+c2V0Q2FsbGJhY2tzKG5vdGlmeUNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQ2FsbGJhY2tUaW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhbWVyYVNlcnZpY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopY2FtZXJhSWQpOwogCiAgICAgLy8gRW5hYmxlIHpvb20sIGVycm9yLCBhbmQgZm9jdXMgbWVzc2FnZXMgYnkgZGVmYXVsdAotICAgIG1IYXJkd2FyZS0+ZW5hYmxlTXNnVHlwZShDQU1FUkFfTVNHX0VSUk9SIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19aT09NIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19GT0NVUyk7Ci0KLSAgICBtTWVkaWFQbGF5ZXJDbGljayA9IG5ld01lZGlhUGxheWVyKCIvc3lzdGVtL21lZGlhL2F1ZGlvL3VpL2NhbWVyYV9jbGljay5vZ2ciKTsKLSAgICBtTWVkaWFQbGF5ZXJCZWVwID0gbmV3TWVkaWFQbGF5ZXIoIi9zeXN0ZW0vbWVkaWEvYXVkaW8vdWkvVmlkZW9SZWNvcmQub2dnIik7CisgICAgZW5hYmxlTXNnVHlwZShDQU1FUkFfTVNHX0VSUk9SIHwKKyAgICAgICAgICAgICAgICAgIENBTUVSQV9NU0dfWk9PTSB8CisgICAgICAgICAgICAgICAgICBDQU1FUkFfTVNHX0ZPQ1VTKTsKICAgICBtT3ZlcmxheVcgPSAwOwogICAgIG1PdmVybGF5SCA9IDA7CiAKICAgICAvLyBDYWxsYmFjayBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CiAgICAgbVByZXZpZXdDYWxsYmFja0ZsYWcgPSBGUkFNRV9DQUxMQkFDS19GTEFHX05PT1A7CiAgICAgbU9yaWVudGF0aW9uID0gMDsKLSAgICBjYW1lcmFTZXJ2aWNlLT5pbmNVc2VycygpOwotICAgIExPR1YoIkNsaWVudDo6Q2xpZW50IFggKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKKyAgICBjYW1lcmFTZXJ2aWNlLT5zZXRDYW1lcmFCdXN5KGNhbWVyYUlkKTsKKyAgICBjYW1lcmFTZXJ2aWNlLT5sb2FkU291bmQoKTsKKyAgICBMT0cxKCJDbGllbnQ6OkNsaWVudCBYIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CiB9CiAKLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Y2hlY2tQaWQoKQotewotICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOwotICAgIGlmIChtQ2xpZW50UGlkID09IGNhbGxpbmdQaWQpIHJldHVybiBOT19FUlJPUjsKLSAgICBMT0dXKCJBdHRlbXB0IHRvIHVzZSBsb2NrZWQgY2FtZXJhIChjbGllbnQgJXApIGZyb20gZGlmZmVyZW50IHByb2Nlc3MgIgotICAgICAgICAiIChvbGQgcGlkICVkLCBuZXcgcGlkICVkKSIsCi0gICAgICAgIGdldENhbWVyYUNsaWVudCgpLT5hc0JpbmRlcigpLmdldCgpLCBtQ2xpZW50UGlkLCBjYWxsaW5nUGlkKTsKLSAgICByZXR1cm4gLUVCVVNZOwotfQotCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmxvY2soKQotewotICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOwotICAgIExPR1YoImxvY2sgZnJvbSBwaWQgJWQgKG1DbGllbnRQaWQgJWQpIiwgY2FsbGluZ1BpZCwgbUNsaWVudFBpZCk7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKLSAgICAvLyBsb2NrIGNhbWVyYSB0byB0aGlzIGNsaWVudCBpZiB0aGUgdGhlIGNhbWVyYSBpcyB1bmxvY2tlZAotICAgIGlmIChtQ2xpZW50UGlkID09IDApIHsKLSAgICAgICAgbUNsaWVudFBpZCA9IGNhbGxpbmdQaWQ7Ci0gICAgICAgIHJldHVybiBOT19FUlJPUjsKLSAgICB9Ci0gICAgLy8gcmV0dXJucyBOT19FUlJPUiBpZiB0aGUgY2xpZW50IGFscmVhZHkgb3ducyB0aGUgY2FtZXJhLCAtRUJVU1kgb3RoZXJ3aXNlCi0gICAgcmV0dXJuIGNoZWNrUGlkKCk7Ci19Ci0KLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6dW5sb2NrKCkKLXsKLSAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKLSAgICBMT0dWKCJ1bmxvY2sgZnJvbSBwaWQgJWQgKG1DbGllbnRQaWQgJWQpIiwgY2FsbGluZ1BpZCwgbUNsaWVudFBpZCk7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKLSAgICAvLyBhbGxvdyBhbnlvbmUgdG8gdXNlIGNhbWVyYQotICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOT19FUlJPUikgewotICAgICAgICBtQ2xpZW50UGlkID0gMDsKLSAgICAgICAgTE9HVigiY2xlYXIgbUNhbWVyYUNsaWVudCAocGlkICVkKSIsIGNhbGxpbmdQaWQpOwotICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgcmVmZXJlbmNlIHNvIHRoYXQgd2hlbiBhcHAgZ29lcwotICAgICAgICAvLyBhd2F5LCB0aGUgcmVmZXJlbmNlIGNvdW50IGdvZXMgdG8gMC4KLSAgICAgICAgbUNhbWVyYUNsaWVudC5jbGVhcigpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNvbm5lY3QoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNsaWVudCkKLXsKLSAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKLQotICAgIC8vIGNvbm5lY3QgYSBuZXcgcHJvY2VzcyB0byB0aGUgY2FtZXJhCi0gICAgTE9HVigiQ2xpZW50Ojpjb25uZWN0IEUgKHBpZCAlZCwgY2xpZW50ICVwKSIsIGNhbGxpbmdQaWQsIGNsaWVudC0+YXNCaW5kZXIoKS5nZXQoKSk7Ci0KLSAgICAvLyBJIGhhdGUgdGhpcyBoYWNrLCBidXQgdGhpbmdzIGdldCByZWFsbHkgdWdseSB3aGVuIHRoZSBtZWRpYSByZWNvcmRlcgotICAgIC8vIHNlcnZpY2UgaXMgaGFuZGluZyBiYWNrIHRoZSBjYW1lcmEgdG8gdGhlIGFwcC4gVGhlIElDYW1lcmFDbGllbnQKLSAgICAvLyBkZXN0cnVjdG9yIHdpbGwgYmUgY2FsbGVkIGR1cmluZyB0aGUgc2FtZSBJUEMsIG1ha2luZyBpdCBsb29rIGxpa2UKLSAgICAvLyB0aGUgcmVtb3RlIGNsaWVudCBpcyB0cnlpbmcgdG8gZGlzY29ubmVjdC4gVGhpcyBoYWNrIHRlbXBvcmFyaWx5Ci0gICAgLy8gc2V0cyB0aGUgbUNsaWVudFBpZCB0byBhbiBpbnZhbGlkIHBpZCB0byBwcmV2ZW50IHRoZSBoYXJkd2FyZSBmcm9tCi0gICAgLy8gYmVpbmcgdG9ybiBkb3duLgotICAgIHsKLQotICAgICAgICAvLyBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBvbGQgY2xpZW50IG9yIHdlIHdpbGwgZGVhZGxvY2sgaWYgdGhlIGNsaWVudCBpcwotICAgICAgICAvLyBpbiB0aGUgc2FtZSBwcm9jZXNzIGFuZCB3ZSBob2xkIHRoZSBsb2NrIHdoZW4gd2UgcmVtb3ZlIHRoZSByZWZlcmVuY2UKLSAgICAgICAgc3A8SUNhbWVyYUNsaWVudD4gb2xkQ2xpZW50OwotICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwotICAgICAgICAgICAgaWYgKG1DbGllbnRQaWQgIT0gMCAmJiBjaGVja1BpZCgpICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICAgICAgTE9HVygiVHJpZWQgdG8gY29ubmVjdCB0byBsb2NrZWQgY2FtZXJhIChvbGQgcGlkICVkLCBuZXcgcGlkICVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBtQ2xpZW50UGlkLCBjYWxsaW5nUGlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLUVCVVNZOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgb2xkQ2xpZW50ID0gbUNhbWVyYUNsaWVudDsKLQotICAgICAgICAgICAgLy8gZGlkIHRoZSBjbGllbnQgYWN0dWFsbHkgY2hhbmdlPwotICAgICAgICAgICAgaWYgKChtQ2FtZXJhQ2xpZW50ICE9IE5VTEwpICYmIChjbGllbnQtPmFzQmluZGVyKCkgPT0gbUNhbWVyYUNsaWVudC0+YXNCaW5kZXIoKSkpIHsKLSAgICAgICAgICAgICAgICBMT0dWKCJDb25uZWN0IHRvIHRoZSBzYW1lIGNsaWVudCIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbUNhbWVyYUNsaWVudCA9IGNsaWVudDsKLSAgICAgICAgICAgIG1DbGllbnRQaWQgPSAtMTsKLSAgICAgICAgICAgIG1QcmV2aWV3Q2FsbGJhY2tGbGFnID0gRlJBTUVfQ0FMTEJBQ0tfRkxBR19OT09QOwotICAgICAgICAgICAgTE9HVigiQ29ubmVjdCB0byB0aGUgbmV3IGNsaWVudCAocGlkICVkLCBjbGllbnQgJXApIiwKLSAgICAgICAgICAgICAgICBjYWxsaW5nUGlkLCBtQ2FtZXJhQ2xpZW50LT5hc0JpbmRlcigpLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgfQotICAgIC8vIHRoZSBvbGQgY2xpZW50IGRlc3RydWN0b3IgaXMgY2FsbGVkIHdoZW4gb2xkQ2xpZW50IGdvZXMgb3V0IG9mIHNjb3BlCi0gICAgLy8gbm93IHdlIHNldCB0aGUgbmV3IFBJRCB0byBsb2NrIHRoZSBpbnRlcmZhY2UgYWdhaW4KLSAgICBtQ2xpZW50UGlkID0gY2FsbGluZ1BpZDsKLQotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotI2lmIEhBVkVfQU5EUk9JRF9PUwotc3RhdGljIHZvaWQgKnVucmVnaXN0ZXJfc3VyZmFjZSh2b2lkICphcmcpCi17CitzdGF0aWMgdm9pZCAqdW5yZWdpc3Rlcl9zdXJmYWNlKHZvaWQgKmFyZykgewogICAgIElTdXJmYWNlICpzdXJmYWNlID0gKElTdXJmYWNlICopYXJnOwogICAgIHN1cmZhY2UtPnVucmVnaXN0ZXJCdWZmZXJzKCk7CiAgICAgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Zmx1c2hDb21tYW5kcygpOwogICAgIHJldHVybiBOVUxMOwogfQotI2VuZGlmCiAKLUNhbWVyYVNlcnZpY2U6OkNsaWVudDo6fkNsaWVudCgpCi17CisvLyB0ZWFyIGRvd24gdGhlIGNsaWVudAorQ2FtZXJhU2VydmljZTo6Q2xpZW50Ojp+Q2xpZW50KCkgewogICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOworICAgIExPRzEoIkNsaWVudDo6fkNsaWVudCBFIChwaWQgJWQsIHRoaXMgJXApIiwgY2FsbGluZ1BpZCwgdGhpcyk7CiAKLSAgICAvLyB0ZWFyIGRvd24gY2xpZW50Ci0gICAgTE9HVigiQ2xpZW50Ojp+Q2xpZW50IEUgKHBpZCAlZCwgY2xpZW50ICVwKSIsCi0gICAgICAgICAgICBjYWxsaW5nUGlkLCBnZXRDYW1lcmFDbGllbnQoKS0+YXNCaW5kZXIoKS5nZXQoKSk7CiAgICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgIW1Vc2VPdmVybGF5KSB7Ci0jaWYgSEFWRV9BTkRST0lEX09TCiAgICAgICAgIHB0aHJlYWRfdCB0aHI7CiAgICAgICAgIC8vIFdlIHVucmVnaXN0ZXIgdGhlIGJ1ZmZlcnMgaW4gYSBkaWZmZXJlbnQgdGhyZWFkIGJlY2F1c2UgYmluZGVyIGRvZXMKICAgICAgICAgLy8gbm90IGxldCB1cyBtYWtlIHN5Y2hyb25vdXMgdHJhbnNhY3Rpb25zIGluIGEgYmluZGVyIGRlc3RydWN0b3IgKHRoYXQKICAgICAgICAgLy8gaXMsIHVwb24gb3VyIHJlYWNoaW5nIGEgcmVmY291bnQgb2YgemVyby4pCi0gICAgICAgIHB0aHJlYWRfY3JlYXRlKCZ0aHIsIE5VTEwsCisgICAgICAgIHB0aHJlYWRfY3JlYXRlKCZ0aHIsCisgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAvLyBhdHRyCiAgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXJfc3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2UuZ2V0KCkpOwogICAgICAgICBwdGhyZWFkX2pvaW4odGhyLCBOVUxMKTsKLSNlbHNlCi0gICAgICAgIG1TdXJmYWNlLT51bnJlZ2lzdGVyQnVmZmVycygpOwotI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKG1NZWRpYVBsYXllckJlZXAuZ2V0KCkgIT0gTlVMTCkgewotICAgICAgICBtTWVkaWFQbGF5ZXJCZWVwLT5kaXNjb25uZWN0KCk7Ci0gICAgICAgIG1NZWRpYVBsYXllckJlZXAuY2xlYXIoKTsKLSAgICB9Ci0gICAgaWYgKG1NZWRpYVBsYXllckNsaWNrLmdldCgpICE9IE5VTEwpIHsKLSAgICAgICAgbU1lZGlhUGxheWVyQ2xpY2stPmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgbU1lZGlhUGxheWVyQ2xpY2suY2xlYXIoKTsKLSAgICB9Ci0KLSAgICAvLyBtYWtlIHN1cmUgd2UgdGVhciBkb3duIHRoZSBoYXJkd2FyZQorICAgIC8vIHNldCBtQ2xpZW50UGlkIHRvIGxldCBkaXNjb25uZXQoKSB0ZWFyIGRvd24gdGhlIGhhcmR3YXJlCiAgICAgbUNsaWVudFBpZCA9IGNhbGxpbmdQaWQ7CiAgICAgZGlzY29ubmVjdCgpOwotICAgIExPR1YoIkNsaWVudDo6fkNsaWVudCBYIChwaWQgJWQpIiwgbUNsaWVudFBpZCk7CisgICAgbUNhbWVyYVNlcnZpY2UtPnJlbGVhc2VTb3VuZCgpOworICAgIExPRzEoIkNsaWVudDo6fkNsaWVudCBYIChwaWQgJWQsIHRoaXMgJXApIiwgY2FsbGluZ1BpZCwgdGhpcyk7CiB9CiAKLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpkaXNjb25uZWN0KCkKLXsKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpjaGVja1BpZCgpIGNvbnN0IHsKICAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKKyAgICBpZiAoY2FsbGluZ1BpZCA9PSBtQ2xpZW50UGlkKSByZXR1cm4gTk9fRVJST1I7CiAKLSAgICBMT0dWKCJDbGllbnQ6OmRpc2Nvbm5lY3QoKSBFIChwaWQgJWQgY2xpZW50ICVwKSIsCi0gICAgICAgICAgICBjYWxsaW5nUGlkLCBnZXRDYW1lcmFDbGllbnQoKS0+YXNCaW5kZXIoKS5nZXQoKSk7CisgICAgTE9HVygiYXR0ZW1wdCB0byB1c2UgYSBsb2NrZWQgY2FtZXJhIGZyb20gYSBkaWZmZXJlbnQgcHJvY2VzcyIKKyAgICAgICAgICIgKG9sZCBwaWQgJWQsIG5ldyBwaWQgJWQpIiwgbUNsaWVudFBpZCwgY2FsbGluZ1BpZCk7CisgICAgcmV0dXJuIEVCVVNZOworfQogCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNoZWNrUGlkQW5kSGFyZHdhcmUoKSBjb25zdCB7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWQoKTsKKyAgICBpZiAocmVzdWx0ICE9IE5PX0VSUk9SKSByZXR1cm4gcmVzdWx0OworICAgIGlmIChtSGFyZHdhcmUgPT0gMCkgeworICAgICAgICBMT0dFKCJhdHRlbXB0IHRvIHVzZSBhIGNhbWVyYSBhZnRlciBkaXNjb25uZWN0KCkgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50Ojpsb2NrKCkgeworICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOworICAgIExPRzEoImxvY2sgKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7Ci0gICAgaWYgKG1DbGllbnRQaWQgPD0gMCkgewotICAgICAgICBMT0dWKCJjYW1lcmEgaXMgdW5sb2NrZWQgKG1DbGllbnRQaWQgPSAlZCksIGRvbid0IHRlYXIgZG93biBoYXJkd2FyZSIsIG1DbGllbnRQaWQpOworCisgICAgLy8gbG9jayBjYW1lcmEgdG8gdGhpcyBjbGllbnQgaWYgdGhlIHRoZSBjYW1lcmEgaXMgdW5sb2NrZWQKKyAgICBpZiAobUNsaWVudFBpZCA9PSAwKSB7CisgICAgICAgIG1DbGllbnRQaWQgPSBjYWxsaW5nUGlkOworICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgfQorCisgICAgLy8gcmV0dXJucyBOT19FUlJPUiBpZiB0aGUgY2xpZW50IGFscmVhZHkgb3ducyB0aGUgY2FtZXJhLCBFQlVTWSBvdGhlcndpc2UKKyAgICByZXR1cm4gY2hlY2tQaWQoKTsKK30KKworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50Ojp1bmxvY2soKSB7CisgICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7CisgICAgTE9HMSgidW5sb2NrIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOworCisgICAgLy8gYWxsb3cgYW55b25lIHRvIHVzZSBjYW1lcmEgKGFmdGVyIHRoZXkgbG9jayB0aGUgY2FtZXJhKQorICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOT19FUlJPUikgeworICAgICAgICBtQ2xpZW50UGlkID0gMDsKKyAgICAgICAgTE9HMSgiY2xlYXIgbUNhbWVyYUNsaWVudCAocGlkICVkKSIsIGNhbGxpbmdQaWQpOworICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgcmVmZXJlbmNlIHRvIElDYW1lcmFDbGllbnQgc28gdGhhdCB3aGVuIHRoZSBhcHAKKyAgICAgICAgLy8gZ29lcyBhd2F5LCB0aGUgcmVmZXJlbmNlIGNvdW50IGdvZXMgdG8gMC4KKyAgICAgICAgbUNhbWVyYUNsaWVudC5jbGVhcigpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBjb25uZWN0IGEgbmV3IGNsaWVudCB0byB0aGUgY2FtZXJhCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNvbm5lY3QoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNsaWVudCkgeworICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOworICAgIExPRzEoImNvbm5lY3QgRSAocGlkICVkKSIsIGNhbGxpbmdQaWQpOworICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKKworICAgIGlmIChtQ2xpZW50UGlkICE9IDAgJiYgY2hlY2tQaWQoKSAhPSBOT19FUlJPUikgeworICAgICAgICBMT0dXKCJUcmllZCB0byBjb25uZWN0IHRvIGEgbG9ja2VkIGNhbWVyYSAob2xkIHBpZCAlZCwgbmV3IHBpZCAlZCkiLAorICAgICAgICAgICAgICAgIG1DbGllbnRQaWQsIGNhbGxpbmdQaWQpOworICAgICAgICByZXR1cm4gRUJVU1k7CisgICAgfQorCisgICAgaWYgKG1DYW1lcmFDbGllbnQgIT0gMCAmJiAoY2xpZW50LT5hc0JpbmRlcigpID09IG1DYW1lcmFDbGllbnQtPmFzQmluZGVyKCkpKSB7CisgICAgICAgIExPRzEoIkNvbm5lY3QgdG8gdGhlIHNhbWUgY2xpZW50Iik7CisgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICB9CisKKyAgICBtUHJldmlld0NhbGxiYWNrRmxhZyA9IEZSQU1FX0NBTExCQUNLX0ZMQUdfTk9PUDsKKyAgICBtQ2xpZW50UGlkID0gY2FsbGluZ1BpZDsKKyAgICBtQ2FtZXJhQ2xpZW50ID0gY2xpZW50OworCisgICAgTE9HMSgiY29ubmVjdCBYIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6ZGlzY29ubmVjdCgpIHsKKyAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKKyAgICBMT0cxKCJkaXNjb25uZWN0IEUgKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7CisKKyAgICBpZiAoY2hlY2tQaWQoKSAhPSBOT19FUlJPUikgeworICAgICAgICBMT0dXKCJkaWZmZXJlbnQgY2xpZW50IC0gZG9uJ3QgZGlzY29ubmVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChjaGVja1BpZCgpICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR1YoIkRpZmZlcmVudCBjbGllbnQgLSBkb24ndCBkaXNjb25uZWN0Iik7CisKKyAgICBpZiAobUNsaWVudFBpZCA8PSAwKSB7CisgICAgICAgIExPRzEoImNhbWVyYSBpcyB1bmxvY2tlZCAobUNsaWVudFBpZCA9ICVkKSwgZG9uJ3QgdGVhciBkb3duIGhhcmR3YXJlIiwgbUNsaWVudFBpZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQwMSw4MjcgKzQ1MiwzNjYgQEAKICAgICAvLyBmcm9tIHRoZSB1c2VyIGRpcmVjdGx5LCBvciBjYWxsZWQgYnkgdGhlIGRlc3RydWN0b3IuCiAgICAgaWYgKG1IYXJkd2FyZSA9PSAwKSByZXR1cm47CiAKLSAgICBMT0dWKCJoYXJkd2FyZSB0ZWFyZG93biIpOworICAgIExPRzEoImhhcmR3YXJlIHRlYXJkb3duIik7CiAgICAgLy8gQmVmb3JlIGRlc3Ryb3lpbmcgbUhhcmR3YXJlLCB3ZSBtdXN0IG1ha2Ugc3VyZSBpdCdzIGluIHRoZQogICAgIC8vIGlkbGUgc3RhdGUuCisgICAgLy8gVHVybiBvZmYgYWxsIG1lc3NhZ2VzLgorICAgIGRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfQUxMX01TR1MpOwogICAgIG1IYXJkd2FyZS0+c3RvcFByZXZpZXcoKTsKLSAgICAvLyBDYW5jZWwgYWxsIHBpY3R1cmUgY2FsbGJhY2tzLgotICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19TSFVUVEVSIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTUVSQV9NU0dfUE9TVFZJRVdfRlJBTUUgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19SQVdfSU1BR0UgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFKTsKICAgICBtSGFyZHdhcmUtPmNhbmNlbFBpY3R1cmUoKTsKLSAgICAvLyBUdXJuIG9mZiByZW1haW5pbmcgbWVzc2FnZXMuCi0gICAgbUhhcmR3YXJlLT5kaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX0FMTF9NU0dTKTsKICAgICAvLyBSZWxlYXNlIHRoZSBoYXJkd2FyZSByZXNvdXJjZXMuCiAgICAgbUhhcmR3YXJlLT5yZWxlYXNlKCk7CiAgICAgLy8gUmVsZWFzZSB0aGUgaGVsZCBvdmVybGF5IHJlc291cmNlcy4KLSAgICBpZiAobVVzZU92ZXJsYXkpCi0gICAgeworICAgIGlmIChtVXNlT3ZlcmxheSkgewogICAgICAgICBtT3ZlcmxheVJlZiA9IDA7CiAgICAgfQogICAgIG1IYXJkd2FyZS5jbGVhcigpOwogCiAgICAgbUNhbWVyYVNlcnZpY2UtPnJlbW92ZUNsaWVudChtQ2FtZXJhQ2xpZW50KTsKLSAgICBtQ2FtZXJhU2VydmljZS0+ZGVjVXNlcnMoKTsKKyAgICBtQ2FtZXJhU2VydmljZS0+c2V0Q2FtZXJhRnJlZShtQ2FtZXJhSWQpOwogCi0gICAgTE9HVigiQ2xpZW50OjpkaXNjb25uZWN0KCkgWCAocGlkICVkKSIsIGNhbGxpbmdQaWQpOworICAgIExPRzEoImRpc2Nvbm5lY3QgWCAocGlkICVkKSIsIGNhbGxpbmdQaWQpOwogfQogCi0vLyBwYXNzIHRoZSBidWZmZXJlZCBJU3VyZmFjZSB0byB0aGUgY2FtZXJhIHNlcnZpY2UKLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c2V0UHJldmlld0Rpc3BsYXkoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXJmYWNlKQotewotICAgIExPR1YoInNldFByZXZpZXdEaXNwbGF5KCVwKSAocGlkICVkKSIsCi0gICAgICAgICAoKHN1cmZhY2UgPT0gTlVMTCkgPyBOVUxMIDogc3VyZmFjZS5nZXQoKSksIGdldENhbGxpbmdQaWQoKSk7CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIHNldCB0aGUgSVN1cmZhY2UgdGhhdCB0aGUgcHJldmlldyB3aWxsIHVzZQorc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZXRQcmV2aWV3RGlzcGxheShjb25zdCBzcDxJU3VyZmFjZT4mIHN1cmZhY2UpIHsKKyAgICBMT0cxKCJzZXRQcmV2aWV3RGlzcGxheSglcCkgKHBpZCAlZCkiLCBzdXJmYWNlLmdldCgpLCBnZXRDYWxsaW5nUGlkKCkpOwogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZCgpOworICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkQW5kSGFyZHdhcmUoKTsKICAgICBpZiAocmVzdWx0ICE9IE5PX0VSUk9SKSByZXR1cm4gcmVzdWx0OwogCi0gICAgTXV0ZXg6OkF1dG9sb2NrIHN1cmZhY2VMb2NrKG1TdXJmYWNlTG9jayk7CiAgICAgcmVzdWx0ID0gTk9fRVJST1I7CisKKyAgICAvLyByZXR1cm4gaWYgbm8gY2hhbmdlIGluIHN1cmZhY2UuCiAgICAgLy8gYXNCaW5kZXIoKSBpcyBzYWZlIG9uIE5VTEwgKHJldHVybnMgTlVMTCkKLSAgICBpZiAoc3VyZmFjZS0+YXNCaW5kZXIoKSAhPSBtU3VyZmFjZS0+YXNCaW5kZXIoKSkgewotICAgICAgICBpZiAobVN1cmZhY2UgIT0gMCkgewotICAgICAgICAgICAgTE9HVigiY2xlYXJpbmcgb2xkIHByZXZpZXcgc3VyZmFjZSAlcCIsIG1TdXJmYWNlLmdldCgpKTsKLSAgICAgICAgICAgIGlmICggIW1Vc2VPdmVybGF5KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1TdXJmYWNlLT51bnJlZ2lzdGVyQnVmZmVycygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEZvcmNlIHRoZSBkZXN0cnVjdGlvbiBvZiBhbnkgcHJldmlvdXMgb3ZlcmxheQotICAgICAgICAgICAgICAgIHNwPE92ZXJsYXk+IGR1bW15OwotICAgICAgICAgICAgICAgIG1IYXJkd2FyZS0+c2V0T3ZlcmxheSggZHVtbXkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtU3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgICAgIG1PdmVybGF5UmVmID0gMDsKLSAgICAgICAgLy8gSWYgcHJldmlldyBoYXMgYmVlbiBhbHJlYWR5IHN0YXJ0ZWQsIHNldCBvdmVybGF5IG9yIHJlZ2lzdGVyIHByZXZpZXcKLSAgICAgICAgLy8gYnVmZmVycyBub3cuCi0gICAgICAgIGlmIChtSGFyZHdhcmUtPnByZXZpZXdFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIGlmIChtVXNlT3ZlcmxheSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldE92ZXJsYXkoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobVN1cmZhY2UgIT0gMCkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlZ2lzdGVyUHJldmlld0J1ZmZlcnMoKTsKLSAgICAgICAgICAgIH0KKyAgICBpZiAoc3VyZmFjZS0+YXNCaW5kZXIoKSA9PSBtU3VyZmFjZS0+YXNCaW5kZXIoKSkgeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmIChtU3VyZmFjZSAhPSAwKSB7CisgICAgICAgIExPRzEoImNsZWFyaW5nIG9sZCBwcmV2aWV3IHN1cmZhY2UgJXAiLCBtU3VyZmFjZS5nZXQoKSk7CisgICAgICAgIGlmIChtVXNlT3ZlcmxheSkgeworICAgICAgICAgICAgLy8gRm9yY2UgdGhlIGRlc3RydWN0aW9uIG9mIGFueSBwcmV2aW91cyBvdmVybGF5CisgICAgICAgICAgICBzcDxPdmVybGF5PiBkdW1teTsKKyAgICAgICAgICAgIG1IYXJkd2FyZS0+c2V0T3ZlcmxheShkdW1teSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtU3VyZmFjZS0+dW5yZWdpc3RlckJ1ZmZlcnMoKTsKICAgICAgICAgfQogICAgIH0KKyAgICBtU3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbU92ZXJsYXlSZWYgPSAwOworICAgIC8vIElmIHByZXZpZXcgaGFzIGJlZW4gYWxyZWFkeSBzdGFydGVkLCBzZXQgb3ZlcmxheSBvciByZWdpc3RlciBwcmV2aWV3CisgICAgLy8gYnVmZmVycyBub3cuCisgICAgaWYgKG1IYXJkd2FyZS0+cHJldmlld0VuYWJsZWQoKSkgeworICAgICAgICBpZiAobVVzZU92ZXJsYXkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNldE92ZXJsYXkoKTsKKyAgICAgICAgfSBlbHNlIGlmIChtU3VyZmFjZSAhPSAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSByZWdpc3RlclByZXZpZXdCdWZmZXJzKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0vLyBzZXQgdGhlIHByZXZpZXcgY2FsbGJhY2sgZmxhZyB0byBhZmZlY3QgaG93IHRoZSByZWNlaXZlZCBmcmFtZXMgZnJvbQotLy8gcHJldmlldyBhcmUgaGFuZGxlZC4KLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZXRQcmV2aWV3Q2FsbGJhY2tGbGFnKGludCBjYWxsYmFja19mbGFnKQotewotICAgIExPR1YoInNldFByZXZpZXdDYWxsYmFja0ZsYWcgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOwotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBpZiAoY2hlY2tQaWQoKSAhPSBOT19FUlJPUikgcmV0dXJuOwotICAgIG1QcmV2aWV3Q2FsbGJhY2tGbGFnID0gY2FsbGJhY2tfZmxhZzsKLQotICAgIGlmKG1Vc2VPdmVybGF5KSB7Ci0gICAgICAgIGlmKG1QcmV2aWV3Q2FsbGJhY2tGbGFnICYgRlJBTUVfQ0FMTEJBQ0tfRkxBR19FTkFCTEVfTUFTSykKLSAgICAgICAgICAgIG1IYXJkd2FyZS0+ZW5hYmxlTXNnVHlwZShDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtSGFyZHdhcmUtPmRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSk7Ci0gICAgfQotfQotCi0vLyBzdGFydCBwcmV2aWV3IG1vZGUKLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RhcnRDYW1lcmFNb2RlKGNhbWVyYV9tb2RlIG1vZGUpCi17Ci0gICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7Ci0KLSAgICBMT0dWKCJzdGFydENhbWVyYU1vZGUoJWQpIChwaWQgJWQpIiwgbW9kZSwgY2FsbGluZ1BpZCk7Ci0KLSAgICAvKiB3ZSBjYW5ub3QgY2FsbCBpbnRvIG1IYXJkd2FyZSB3aXRoIG1Mb2NrIGhlbGQgYmVjYXVzZQotICAgICAqIG1IYXJkd2FyZSBoYXMgY2FsbGJhY2tzIG9udG8gdXMgd2hpY2ggYWNxdWlyZSB0aGlzIGxvY2sKLSAgICAgKi8KLQotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZCgpOwotICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7Ci0KLSAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgTE9HRSgibUhhcmR3YXJlIGlzIE5VTEwsIHJldHVybmluZy4iKTsKLSAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwotICAgIH0KLQotICAgIHN3aXRjaChtb2RlKSB7Ci0gICAgY2FzZSBDQU1FUkFfUkVDT1JESU5HX01PREU6Ci0gICAgICAgIGlmIChtU3VyZmFjZSA9PSAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJzZXRQcmV2aWV3RGlzcGxheSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgc3RhcnRSZWNvcmRpbmdNb2RlLiIpOwotICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGFydFJlY29yZGluZ01vZGUoKTsKLQotICAgIGRlZmF1bHQ6IC8vIENBTUVSQV9QUkVWSUVXX01PREUKLSAgICAgICAgaWYgKG1TdXJmYWNlID09IDApIHsKLSAgICAgICAgICAgIExPR1YoIm1TdXJmYWNlIGlzIG5vdCBzZXQgeWV0LiIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGFydFByZXZpZXdNb2RlKCk7Ci0gICAgfQotfQotCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0YXJ0UmVjb3JkaW5nTW9kZSgpCi17Ci0gICAgTE9HVigic3RhcnRSZWNvcmRpbmdNb2RlIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKLQotICAgIHN0YXR1c190IHJldCA9IFVOS05PV05fRVJST1I7Ci0KLSAgICAvLyBpZiBwcmV2aWV3IGhhcyBub3QgYmVlbiBzdGFydGVkLCBzdGFydCBwcmV2aWV3IGZpcnN0Ci0gICAgaWYgKCFtSGFyZHdhcmUtPnByZXZpZXdFbmFibGVkKCkpIHsKLSAgICAgICAgcmV0ID0gc3RhcnRQcmV2aWV3TW9kZSgpOwotICAgICAgICBpZiAocmV0ICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gaWYgcmVjb3JkaW5nIGhhcyBiZWVuIGVuYWJsZWQsIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZQotICAgIGlmIChtSGFyZHdhcmUtPnJlY29yZGluZ0VuYWJsZWQoKSkgewotICAgICAgICByZXR1cm4gTk9fRVJST1I7Ci0gICAgfQotCi0gICAgLy8gc3RhcnQgcmVjb3JkaW5nIG1vZGUKLSAgICByZXQgPSBtSGFyZHdhcmUtPnN0YXJ0UmVjb3JkaW5nKCk7Ci0gICAgaWYgKHJldCAhPSBOT19FUlJPUikgewotICAgICAgICBMT0dFKCJtSGFyZHdhcmUtPnN0YXJ0UmVjb3JkaW5nKCkgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgcmV0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZXRPdmVybGF5KCkKLXsKLSAgICBMT0dWKCJzZXRPdmVybGF5Iik7CitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnJlZ2lzdGVyUHJldmlld0J1ZmZlcnMoKSB7CiAgICAgaW50IHcsIGg7CiAgICAgQ2FtZXJhUGFyYW1ldGVycyBwYXJhbXMobUhhcmR3YXJlLT5nZXRQYXJhbWV0ZXJzKCkpOwogICAgIHBhcmFtcy5nZXRQcmV2aWV3U2l6ZSgmdywgJmgpOwogCi0gICAgaWYgKCB3ICE9IG1PdmVybGF5VyB8fCBoICE9IG1PdmVybGF5SCApCi0gICAgewotICAgICAgICAvLyBGb3JjZSB0aGUgZGVzdHJ1Y3Rpb24gb2YgYW55IHByZXZpb3VzIG92ZXJsYXkKLSAgICAgICAgc3A8T3ZlcmxheT4gZHVtbXk7Ci0gICAgICAgIG1IYXJkd2FyZS0+c2V0T3ZlcmxheSggZHVtbXkgKTsKLSAgICAgICAgbU92ZXJsYXlSZWYgPSAwOwotICAgIH0KLQotICAgIHN0YXR1c190IHJldCA9IE5PX0VSUk9SOwotICAgIGlmIChtU3VyZmFjZSAhPSAwKSB7Ci0gICAgICAgIGlmIChtT3ZlcmxheVJlZi5nZXQoKSA9PSBOVUxMKSB7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOgotICAgICAgICAgICAgLy8gU3VyZmFjZWZsaW5nZXIgbWF5IGhvbGQgb250byB0aGUgcHJldmlvdXMgb3ZlcmxheSByZWZlcmVuY2UgZm9yIHNvbWUKLSAgICAgICAgICAgIC8vIHRpbWUgYWZ0ZXIgd2UgdHJ5IHRvIGRlc3Ryb3kgaXQuIHJldHJ5IGEgZmV3IHRpbWVzLiBJbiB0aGUgZnV0dXJlLCB3ZQotICAgICAgICAgICAgLy8gc2hvdWxkIG1ha2UgdGhlIGRlc3Ryb3kgY2FsbCBibG9jaywgb3IgcG9zc2libHkgc3BlY2lmeSB0aGF0IHdlIGNhbgotICAgICAgICAgICAgLy8gd2FpdCBpbiB0aGUgY3JlYXRlT3ZlcmxheSBjYWxsIGlmIHRoZSBwcmV2aW91cyBvdmVybGF5IGlzIGluIHRoZSAKLSAgICAgICAgICAgIC8vIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLgotICAgICAgICAgICAgZm9yIChpbnQgcmV0cnkgPSAwOyByZXRyeSA8IDUwOyArK3JldHJ5KSB7Ci0gICAgICAgICAgICAgICAgbU92ZXJsYXlSZWYgPSBtU3VyZmFjZS0+Y3JlYXRlT3ZlcmxheSh3LCBoLCBPVkVSTEFZX0ZPUk1BVF9ERUZBVUxULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU9yaWVudGF0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAobU92ZXJsYXlSZWYgIT0gTlVMTCkgYnJlYWs7Ci0gICAgICAgICAgICAgICAgTE9HVygiT3ZlcmxheSBjcmVhdGUgZmFpbGVkIC0gcmV0cnlpbmciKTsKLSAgICAgICAgICAgICAgICB1c2xlZXAoMjAwMDApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCBtT3ZlcmxheVJlZi5nZXQoKSA9PSBOVUxMICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMT0dFKCJPdmVybGF5IENyZWF0aW9uIEZhaWxlZCEiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldCA9IG1IYXJkd2FyZS0+c2V0T3ZlcmxheShuZXcgT3ZlcmxheShtT3ZlcmxheVJlZikpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0ID0gbUhhcmR3YXJlLT5zZXRPdmVybGF5KE5VTEwpOwotICAgIH0KLSAgICBpZiAocmV0ICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoIm1IYXJkd2FyZS0+c2V0T3ZlcmxheSgpIGZhaWxlZCB3aXRoIHN0YXR1cyAlZFxuIiwgcmV0KTsKLSAgICB9Ci0KLSAgICBtT3ZlcmxheVcgPSB3OwotICAgIG1PdmVybGF5SCA9IGg7Ci0KLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnJlZ2lzdGVyUHJldmlld0J1ZmZlcnMoKQotewotICAgIGludCB3LCBoOwotICAgIENhbWVyYVBhcmFtZXRlcnMgcGFyYW1zKG1IYXJkd2FyZS0+Z2V0UGFyYW1ldGVycygpKTsKLSAgICBwYXJhbXMuZ2V0UHJldmlld1NpemUoJncsICZoKTsKLQotICAgIC8vIGRvbid0IHVzZSBhIGhhcmRjb2RlZCBmb3JtYXQgaGVyZQorICAgIC8vIEZJWE1FOiBkb24ndCB1c2UgYSBoYXJkY29kZWQgZm9ybWF0IGhlcmUuCiAgICAgSVN1cmZhY2U6OkJ1ZmZlckhlYXAgYnVmZmVycyh3LCBoLCB3LCBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1BJWEVMX0ZPUk1BVF9ZQ3JDYl80MjBfU1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3JpZW50YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhhcmR3YXJlLT5nZXRQcmV2aWV3SGVhcCgpKTsKIAotICAgIHN0YXR1c190IHJldCA9IG1TdXJmYWNlLT5yZWdpc3RlckJ1ZmZlcnMoYnVmZmVycyk7Ci0gICAgaWYgKHJldCAhPSBOT19FUlJPUikgewotICAgICAgICBMT0dFKCJyZWdpc3RlckJ1ZmZlcnMgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgcmV0KTsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBtU3VyZmFjZS0+cmVnaXN0ZXJCdWZmZXJzKGJ1ZmZlcnMpOworICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgTE9HRSgicmVnaXN0ZXJCdWZmZXJzIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHJlc3VsdCk7CiAgICAgfQotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdGFydFByZXZpZXdNb2RlKCkKLXsKLSAgICBMT0dWKCJzdGFydFByZXZpZXdNb2RlIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c2V0T3ZlcmxheSgpIHsKKyAgICBpbnQgdywgaDsKKyAgICBDYW1lcmFQYXJhbWV0ZXJzIHBhcmFtcyhtSGFyZHdhcmUtPmdldFBhcmFtZXRlcnMoKSk7CisgICAgcGFyYW1zLmdldFByZXZpZXdTaXplKCZ3LCAmaCk7CisKKyAgICBpZiAodyAhPSBtT3ZlcmxheVcgfHwgaCAhPSBtT3ZlcmxheUgpIHsKKyAgICAgICAgLy8gRm9yY2UgdGhlIGRlc3RydWN0aW9uIG9mIGFueSBwcmV2aW91cyBvdmVybGF5CisgICAgICAgIHNwPE92ZXJsYXk+IGR1bW15OworICAgICAgICBtSGFyZHdhcmUtPnNldE92ZXJsYXkoZHVtbXkpOworICAgICAgICBtT3ZlcmxheVJlZiA9IDA7CisgICAgfQorCisgICAgc3RhdHVzX3QgcmVzdWx0ID0gTk9fRVJST1I7CisgICAgaWYgKG1TdXJmYWNlID09IDApIHsKKyAgICAgICAgcmVzdWx0ID0gbUhhcmR3YXJlLT5zZXRPdmVybGF5KE5VTEwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtT3ZlcmxheVJlZiA9PSAwKSB7CisgICAgICAgICAgICAvLyBGSVhNRToKKyAgICAgICAgICAgIC8vIFN1cmZhY2VmbGluZ2VyIG1heSBob2xkIG9udG8gdGhlIHByZXZpb3VzIG92ZXJsYXkgcmVmZXJlbmNlIGZvciBzb21lCisgICAgICAgICAgICAvLyB0aW1lIGFmdGVyIHdlIHRyeSB0byBkZXN0cm95IGl0LiByZXRyeSBhIGZldyB0aW1lcy4gSW4gdGhlIGZ1dHVyZSwgd2UKKyAgICAgICAgICAgIC8vIHNob3VsZCBtYWtlIHRoZSBkZXN0cm95IGNhbGwgYmxvY2ssIG9yIHBvc3NpYmx5IHNwZWNpZnkgdGhhdCB3ZSBjYW4KKyAgICAgICAgICAgIC8vIHdhaXQgaW4gdGhlIGNyZWF0ZU92ZXJsYXkgY2FsbCBpZiB0aGUgcHJldmlvdXMgb3ZlcmxheSBpcyBpbiB0aGUKKyAgICAgICAgICAgIC8vIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLgorICAgICAgICAgICAgZm9yIChpbnQgcmV0cnkgPSAwOyByZXRyeSA8IDUwOyArK3JldHJ5KSB7CisgICAgICAgICAgICAgICAgbU92ZXJsYXlSZWYgPSBtU3VyZmFjZS0+Y3JlYXRlT3ZlcmxheSh3LCBoLCBPVkVSTEFZX0ZPUk1BVF9ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgICAgICBpZiAobU92ZXJsYXlSZWYgIT0gMCkgYnJlYWs7CisgICAgICAgICAgICAgICAgTE9HVygiT3ZlcmxheSBjcmVhdGUgZmFpbGVkIC0gcmV0cnlpbmciKTsKKyAgICAgICAgICAgICAgICB1c2xlZXAoMjAwMDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1PdmVybGF5UmVmID09IDApIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJPdmVybGF5IENyZWF0aW9uIEZhaWxlZCEiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdCA9IG1IYXJkd2FyZS0+c2V0T3ZlcmxheShuZXcgT3ZlcmxheShtT3ZlcmxheVJlZikpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgTE9HRSgibUhhcmR3YXJlLT5zZXRPdmVybGF5KCkgZmFpbGVkIHdpdGggc3RhdHVzICVkXG4iLCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIG1PdmVybGF5VyA9IHc7CisgICAgbU92ZXJsYXlIID0gaDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIHNldCB0aGUgcHJldmlldyBjYWxsYmFjayBmbGFnIHRvIGFmZmVjdCBob3cgdGhlIHJlY2VpdmVkIGZyYW1lcyBmcm9tCisvLyBwcmV2aWV3IGFyZSBoYW5kbGVkLgordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnNldFByZXZpZXdDYWxsYmFja0ZsYWcoaW50IGNhbGxiYWNrX2ZsYWcpIHsKKyAgICBMT0cxKCJzZXRQcmV2aWV3Q2FsbGJhY2tGbGFnKCVkKSAocGlkICVkKSIsIGNhbGxiYWNrX2ZsYWcsIGdldENhbGxpbmdQaWQoKSk7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOworICAgIGlmIChjaGVja1BpZEFuZEhhcmR3YXJlKCkgIT0gTk9fRVJST1IpIHJldHVybjsKKworICAgIG1QcmV2aWV3Q2FsbGJhY2tGbGFnID0gY2FsbGJhY2tfZmxhZzsKKworICAgIC8vIElmIHdlIGRvbid0IHVzZSBvdmVybGF5LCB3ZSBhbHdheXMgbmVlZCB0aGUgcHJldmlldyBmcmFtZSBmb3IgZGlzcGxheS4KKyAgICAvLyBJZiB3ZSBkbyB1c2Ugb3ZlcmxheSwgd2Ugb25seSBuZWVkIHRoZSBwcmV2aWV3IGZyYW1lIGlmIHRoZSB1c2VyCisgICAgLy8gd2FudHMgdGhlIGRhdGEuCisgICAgaWYgKG1Vc2VPdmVybGF5KSB7CisgICAgICAgIGlmKG1QcmV2aWV3Q2FsbGJhY2tGbGFnICYgRlJBTUVfQ0FMTEJBQ0tfRkxBR19FTkFCTEVfTUFTSykgeworICAgICAgICAgICAgZW5hYmxlTXNnVHlwZShDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gc3RhcnQgcHJldmlldyBtb2RlCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0YXJ0UHJldmlldygpIHsKKyAgICBMT0cxKCJzdGFydFByZXZpZXcgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworICAgIHJldHVybiBzdGFydENhbWVyYU1vZGUoQ0FNRVJBX1BSRVZJRVdfTU9ERSk7Cit9CisKKy8vIHN0YXJ0IHJlY29yZGluZyBtb2RlCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0YXJ0UmVjb3JkaW5nKCkgeworICAgIExPRzEoInN0YXJ0UmVjb3JkaW5nIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKKyAgICByZXR1cm4gc3RhcnRDYW1lcmFNb2RlKENBTUVSQV9SRUNPUkRJTkdfTU9ERSk7Cit9CisKKy8vIHN0YXJ0IHByZXZpZXcgb3IgcmVjb3JkaW5nCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0YXJ0Q2FtZXJhTW9kZShjYW1lcmFfbW9kZSBtb2RlKSB7CisgICAgTE9HMSgic3RhcnRDYW1lcmFNb2RlKCVkKSIsIG1vZGUpOworICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZEFuZEhhcmR3YXJlKCk7CisgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgcmV0dXJuIHJlc3VsdDsKKworICAgIHN3aXRjaChtb2RlKSB7CisgICAgICAgIGNhc2UgQ0FNRVJBX1BSRVZJRVdfTU9ERToKKyAgICAgICAgICAgIGlmIChtU3VyZmFjZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgTE9HMSgibVN1cmZhY2UgaXMgbm90IHNldCB5ZXQuIik7CisgICAgICAgICAgICAgICAgLy8gc3RpbGwgYWJsZSB0byBzdGFydCBwcmV2aWV3IGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzdGFydFByZXZpZXdNb2RlKCk7CisgICAgICAgIGNhc2UgQ0FNRVJBX1JFQ09SRElOR19NT0RFOgorICAgICAgICAgICAgaWYgKG1TdXJmYWNlID09IDApIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJtU3VyZmFjZSBtdXN0IGJlIHNldCBiZWZvcmUgc3RhcnRSZWNvcmRpbmdNb2RlLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzdGFydFJlY29yZGluZ01vZGUoKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KK30KKworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdGFydFByZXZpZXdNb2RlKCkgeworICAgIExPRzEoInN0YXJ0UHJldmlld01vZGUiKTsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBOT19FUlJPUjsKIAogICAgIC8vIGlmIHByZXZpZXcgaGFzIGJlZW4gZW5hYmxlZCwgbm90aGluZyBuZWVkcyB0byBiZSBkb25lCiAgICAgaWYgKG1IYXJkd2FyZS0+cHJldmlld0VuYWJsZWQoKSkgewogICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgfQogCi0gICAgLy8gc3RhcnQgcHJldmlldyBtb2RlCi0jaWYgREVCVUdfRFVNUF9QUkVWSUVXX0ZSQU1FX1RPX0ZJTEUKLSAgICBkZWJ1Z19mcmFtZV9jbnQgPSAwOwotI2VuZGlmCi0gICAgc3RhdHVzX3QgcmV0ID0gTk9fRVJST1I7Ci0KICAgICBpZiAobVVzZU92ZXJsYXkpIHsKICAgICAgICAgLy8gSWYgcHJldmlldyBkaXNwbGF5IGhhcyBiZWVuIHNldCwgc2V0IG92ZXJsYXkgbm93LgogICAgICAgICBpZiAobVN1cmZhY2UgIT0gMCkgewotICAgICAgICAgICAgcmV0ID0gc2V0T3ZlcmxheSgpOworICAgICAgICAgICAgcmVzdWx0ID0gc2V0T3ZlcmxheSgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChyZXQgIT0gTk9fRVJST1IpIHJldHVybiByZXQ7Ci0gICAgICAgIHJldCA9IG1IYXJkd2FyZS0+c3RhcnRQcmV2aWV3KCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJlc3VsdCA9IG1IYXJkd2FyZS0+c3RhcnRQcmV2aWV3KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbUhhcmR3YXJlLT5lbmFibGVNc2dUeXBlKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSk7Ci0gICAgICAgIHJldCA9IG1IYXJkd2FyZS0+c3RhcnRQcmV2aWV3KCk7Ci0gICAgICAgIGlmIChyZXQgIT0gTk9fRVJST1IpIHJldHVybiByZXQ7CisgICAgICAgIGVuYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FKTsKKyAgICAgICAgcmVzdWx0ID0gbUhhcmR3YXJlLT5zdGFydFByZXZpZXcoKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgLy8gSWYgcHJldmlldyBkaXNwbGF5IGhhcyBiZWVuIHNldCwgcmVnaXN0ZXIgcHJldmlldyBidWZmZXJzIG5vdy4KICAgICAgICAgaWYgKG1TdXJmYWNlICE9IDApIHsKLSAgICAgICAgICAgLy8gVW5yZWdpc3RlciBoZXJlIGJlY2F1c2UgdGhlIHN1cmZhY2UgcmVnaXN0ZXJlZCB3aXRoIHJhdyBoZWFwLgorICAgICAgICAgICAvLyBVbnJlZ2lzdGVyIGhlcmUgYmVjYXVzZSB0aGUgc3VyZmFjZSBtYXkgYmUgcHJldmlvdXNseSByZWdpc3RlcmVkCisgICAgICAgICAgIC8vIHdpdGggdGhlIHJhdyAoc25hcHNob3QpIGhlYXAuCiAgICAgICAgICAgIG1TdXJmYWNlLT51bnJlZ2lzdGVyQnVmZmVycygpOwotICAgICAgICAgICByZXQgPSByZWdpc3RlclByZXZpZXdCdWZmZXJzKCk7CisgICAgICAgICAgIHJlc3VsdCA9IHJlZ2lzdGVyUHJldmlld0J1ZmZlcnMoKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RhcnRQcmV2aWV3KCkKLXsKLSAgICBMT0dWKCJzdGFydFByZXZpZXcgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdGFydFJlY29yZGluZ01vZGUoKSB7CisgICAgTE9HMSgic3RhcnRSZWNvcmRpbmdNb2RlIik7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gTk9fRVJST1I7CiAKLSAgICByZXR1cm4gc3RhcnRDYW1lcmFNb2RlKENBTUVSQV9QUkVWSUVXX01PREUpOwotfQorICAgIC8vIGlmIHJlY29yZGluZyBoYXMgYmVlbiBlbmFibGVkLCBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUKKyAgICBpZiAobUhhcmR3YXJlLT5yZWNvcmRpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgIH0KIAotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdGFydFJlY29yZGluZygpCi17Ci0gICAgTE9HVigic3RhcnRSZWNvcmRpbmcgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOwotCi0gICAgaWYgKG1NZWRpYVBsYXllckJlZXAuZ2V0KCkgIT0gTlVMTCkgewotICAgICAgICAvLyBkbyBub3QgcGxheSByZWNvcmQgamluZ2xlIGlmIHN0cmVhbSB2b2x1bWUgaXMgMAotICAgICAgICAvLyAodHlwaWNhbGx5IGJlY2F1c2UgcmluZ2VyIG1vZGUgaXMgc2lsZW50KS4KLSAgICAgICAgaW50IGluZGV4OwotICAgICAgICBBdWRpb1N5c3RlbTo6Z2V0U3RyZWFtVm9sdW1lSW5kZXgoQXVkaW9TeXN0ZW06OkVORk9SQ0VEX0FVRElCTEUsICZpbmRleCk7Ci0gICAgICAgIGlmIChpbmRleCAhPSAwKSB7Ci0gICAgICAgICAgICBtTWVkaWFQbGF5ZXJCZWVwLT5zZWVrVG8oMCk7Ci0gICAgICAgICAgICBtTWVkaWFQbGF5ZXJCZWVwLT5zdGFydCgpOworICAgIC8vIGlmIHByZXZpZXcgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQsIHN0YXJ0IHByZXZpZXcgZmlyc3QKKyAgICBpZiAoIW1IYXJkd2FyZS0+cHJldmlld0VuYWJsZWQoKSkgeworICAgICAgICByZXN1bHQgPSBzdGFydFByZXZpZXdNb2RlKCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtSGFyZHdhcmUtPmVuYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19WSURFT19GUkFNRSk7Ci0KLSAgICByZXR1cm4gc3RhcnRDYW1lcmFNb2RlKENBTUVSQV9SRUNPUkRJTkdfTU9ERSk7CisgICAgLy8gc3RhcnQgcmVjb3JkaW5nIG1vZGUKKyAgICBlbmFibGVNc2dUeXBlKENBTUVSQV9NU0dfVklERU9fRlJBTUUpOworICAgIG1DYW1lcmFTZXJ2aWNlLT5wbGF5U291bmQoU09VTkRfUkVDT1JESU5HKTsKKyAgICByZXN1bHQgPSBtSGFyZHdhcmUtPnN0YXJ0UmVjb3JkaW5nKCk7CisgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgeworICAgICAgICBMT0dFKCJtSGFyZHdhcmUtPnN0YXJ0UmVjb3JkaW5nKCkgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgcmVzdWx0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLy8gc3RvcCBwcmV2aWV3IG1vZGUKLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdG9wUHJldmlldygpCi17Ci0gICAgTE9HVigic3RvcFByZXZpZXcgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOwordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0b3BQcmV2aWV3KCkgeworICAgIExPRzEoInN0b3BQcmV2aWV3IChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7CisgICAgaWYgKGNoZWNrUGlkQW5kSGFyZHdhcmUoKSAhPSBOT19FUlJPUikgcmV0dXJuOwogCi0gICAgLy8gaG9sZCBtYWluIGxvY2sgZHVyaW5nIHN0YXRlIHRyYW5zaXRpb24KLSAgICB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICAgICAgaWYgKGNoZWNrUGlkKCkgIT0gTk9fRVJST1IpIHJldHVybjsKKyAgICBkaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUpOworICAgIG1IYXJkd2FyZS0+c3RvcFByZXZpZXcoKTsKIAotICAgICAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgICAgIExPR0UoIm1IYXJkd2FyZSBpcyBOVUxMLCByZXR1cm5pbmcuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtSGFyZHdhcmUtPnN0b3BQcmV2aWV3KCk7Ci0gICAgICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FKTsKLSAgICAgICAgTE9HVigic3RvcFByZXZpZXcoKSwgaGFyZHdhcmUgc3RvcHBlZCBPSyIpOwotCi0gICAgICAgIGlmIChtU3VyZmFjZSAhPSAwICYmICFtVXNlT3ZlcmxheSkgewotICAgICAgICAgICAgbVN1cmZhY2UtPnVucmVnaXN0ZXJCdWZmZXJzKCk7Ci0gICAgICAgIH0KKyAgICBpZiAobVN1cmZhY2UgIT0gMCAmJiAhbVVzZU92ZXJsYXkpIHsKKyAgICAgICAgbVN1cmZhY2UtPnVucmVnaXN0ZXJCdWZmZXJzKCk7CiAgICAgfQogCi0gICAgLy8gaG9sZCBwcmV2aWV3IGJ1ZmZlciBsb2NrCi0gICAgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtUHJldmlld0xvY2spOwotICAgICAgICBtUHJldmlld0J1ZmZlci5jbGVhcigpOwotICAgIH0KKyAgICBtUHJldmlld0J1ZmZlci5jbGVhcigpOwogfQogCiAvLyBzdG9wIHJlY29yZGluZyBtb2RlCi12b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RvcFJlY29yZGluZygpCi17Ci0gICAgTE9HVigic3RvcFJlY29yZGluZyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7Cit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RvcFJlY29yZGluZygpIHsKKyAgICBMT0cxKCJzdG9wUmVjb3JkaW5nIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7CisgICAgaWYgKGNoZWNrUGlkQW5kSGFyZHdhcmUoKSAhPSBOT19FUlJPUikgcmV0dXJuOwogCi0gICAgLy8gaG9sZCBtYWluIGxvY2sgZHVyaW5nIHN0YXRlIHRyYW5zaXRpb24KLSAgICB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICAgICAgaWYgKGNoZWNrUGlkKCkgIT0gTk9fRVJST1IpIHJldHVybjsKKyAgICBtQ2FtZXJhU2VydmljZS0+cGxheVNvdW5kKFNPVU5EX1JFQ09SRElORyk7CisgICAgZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19WSURFT19GUkFNRSk7CisgICAgbUhhcmR3YXJlLT5zdG9wUmVjb3JkaW5nKCk7CiAKLSAgICAgICAgaWYgKG1IYXJkd2FyZSA9PSAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJtSGFyZHdhcmUgaXMgTlVMTCwgcmV0dXJuaW5nLiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1NZWRpYVBsYXllckJlZXAuZ2V0KCkgIT0gTlVMTCkgewotICAgICAgICAgICAgbU1lZGlhUGxheWVyQmVlcC0+c2Vla1RvKDApOwotICAgICAgICAgICAgbU1lZGlhUGxheWVyQmVlcC0+c3RhcnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1IYXJkd2FyZS0+c3RvcFJlY29yZGluZygpOwotICAgICAgICBtSGFyZHdhcmUtPmRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfVklERU9fRlJBTUUpOwotICAgICAgICBMT0dWKCJzdG9wUmVjb3JkaW5nKCksIGhhcmR3YXJlIHN0b3BwZWQgT0siKTsKLSAgICB9Ci0KLSAgICAvLyBob2xkIHByZXZpZXcgYnVmZmVyIGxvY2sKLSAgICB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1QcmV2aWV3TG9jayk7Ci0gICAgICAgIG1QcmV2aWV3QnVmZmVyLmNsZWFyKCk7Ci0gICAgfQorICAgIG1QcmV2aWV3QnVmZmVyLmNsZWFyKCk7CiB9CiAKIC8vIHJlbGVhc2UgYSByZWNvcmRpbmcgZnJhbWUKLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpyZWxlYXNlUmVjb3JkaW5nRnJhbWUoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSkKLXsKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpyZWxlYXNlUmVjb3JkaW5nRnJhbWUoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSkgewogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBpZiAoY2hlY2tQaWQoKSAhPSBOT19FUlJPUikgcmV0dXJuOwotCi0gICAgaWYgKG1IYXJkd2FyZSA9PSAwKSB7Ci0gICAgICAgIExPR0UoIm1IYXJkd2FyZSBpcyBOVUxMLCByZXR1cm5pbmcuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KKyAgICBpZiAoY2hlY2tQaWRBbmRIYXJkd2FyZSgpICE9IE5PX0VSUk9SKSByZXR1cm47CiAgICAgbUhhcmR3YXJlLT5yZWxlYXNlUmVjb3JkaW5nRnJhbWUobWVtKTsKIH0KIAotYm9vbCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnByZXZpZXdFbmFibGVkKCkKLXsKK2Jvb2wgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpwcmV2aWV3RW5hYmxlZCgpIHsKKyAgICBMT0cxKCJwcmV2aWV3RW5hYmxlZCAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CisKICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7Ci0gICAgaWYgKG1IYXJkd2FyZSA9PSAwKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNoZWNrUGlkQW5kSGFyZHdhcmUoKSAhPSBOT19FUlJPUikgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtSGFyZHdhcmUtPnByZXZpZXdFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpyZWNvcmRpbmdFbmFibGVkKCkKLXsKK2Jvb2wgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpyZWNvcmRpbmdFbmFibGVkKCkgeworICAgIExPRzEoInJlY29yZGluZ0VuYWJsZWQgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworCiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIGlmIChtSGFyZHdhcmUgPT0gMCkgcmV0dXJuIGZhbHNlOworICAgIGlmIChjaGVja1BpZEFuZEhhcmR3YXJlKCkgIT0gTk9fRVJST1IpIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gbUhhcmR3YXJlLT5yZWNvcmRpbmdFbmFibGVkKCk7CiB9CiAKLS8vIFNhZmVseSByZXRyaWV2ZXMgYSBzdHJvbmcgcG9pbnRlciB0byB0aGUgY2xpZW50IGR1cmluZyBhIGhhcmR3YXJlIGNhbGxiYWNrLgotc3A8Q2FtZXJhU2VydmljZTo6Q2xpZW50PiBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmdldENsaWVudEZyb21Db29raWUodm9pZCogdXNlcikKLXsKLSAgICBzcDxDbGllbnQ+IGNsaWVudCA9IDA7Ci0gICAgQ2FtZXJhU2VydmljZSAqc2VydmljZSA9IHN0YXRpY19jYXN0PENhbWVyYVNlcnZpY2UqPih1c2VyKTsKLSAgICBpZiAoc2VydmljZSAhPSBOVUxMKSB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBvdXJMb2NrKHNlcnZpY2UtPm1TZXJ2aWNlTG9jayk7Ci0gICAgICAgIGlmIChzZXJ2aWNlLT5tQ2xpZW50ICE9IDApIHsKLSAgICAgICAgICAgIGNsaWVudCA9IHNlcnZpY2UtPm1DbGllbnQucHJvbW90ZSgpOwotICAgICAgICAgICAgaWYgKGNsaWVudCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgTE9HRSgiZ2V0Q2xpZW50RnJvbUNvb2tpZTogY2xpZW50IGFwcGVhcnMgdG8gaGF2ZSBkaWVkIik7Ci0gICAgICAgICAgICAgICAgc2VydmljZS0+bUNsaWVudC5jbGVhcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTE9HRSgiZ2V0Q2xpZW50RnJvbUNvb2tpZTogZ290IGNhbGxiYWNrIGJ1dCBjbGllbnQgd2FzIE5VTEwiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gY2xpZW50OwotfQotCi0KLSNpZiBERUJVR19EVU1QX0pQRUdfU05BUFNIT1RfVE9fRklMRSB8fCBcCi0gICAgREVCVUdfRFVNUF9ZVVZfU05BUFNIT1RfVE9fRklMRSB8fCBcCi0gICAgREVCVUdfRFVNUF9QUkVWSUVXX0ZSQU1FX1RPX0ZJTEUKLXN0YXRpYyB2b2lkIGR1bXBfdG9fZmlsZShjb25zdCBjaGFyICpmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIHVpbnQzMl90IHNpemUpCi17Ci0gICAgaW50IG53LCBjbnQgPSAwOwotICAgIHVpbnQzMl90IHdyaXR0ZW4gPSAwOwotCi0gICAgTE9HVigib3BlbmluZyBmaWxlIFslc11cbiIsIGZuYW1lKTsKLSAgICBpbnQgZmQgPSBvcGVuKGZuYW1lLCBPX1JEV1IgfCBPX0NSRUFUKTsKLSAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgIExPR0UoImZhaWxlZCB0byBjcmVhdGUgZmlsZSBbJXNdOiAlcyIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTE9HVigid3JpdGluZyAlZCBieXRlcyB0byBmaWxlIFslc11cbiIsIHNpemUsIGZuYW1lKTsKLSAgICB3aGlsZSAod3JpdHRlbiA8IHNpemUpIHsKLSAgICAgICAgbncgPSA6OndyaXRlKGZkLAotICAgICAgICAgICAgICAgICAgICAgYnVmICsgd3JpdHRlbiwKLSAgICAgICAgICAgICAgICAgICAgIHNpemUgLSB3cml0dGVuKTsKLSAgICAgICAgaWYgKG53IDwgMCkgewotICAgICAgICAgICAgTE9HRSgiZmFpbGVkIHRvIHdyaXRlIHRvIGZpbGUgWyVzXTogJXMiLAotICAgICAgICAgICAgICAgICBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHdyaXR0ZW4gKz0gbnc7Ci0gICAgICAgIGNudCsrOwotICAgIH0KLSAgICBMT0dWKCJkb25lIHdyaXRpbmcgJWQgYnl0ZXMgdG8gZmlsZSBbJXNdIGluICVkIHBhc3Nlc1xuIiwKLSAgICAgICAgIHNpemUsIGZuYW1lLCBjbnQpOwotICAgIDo6Y2xvc2UoZmQpOwotfQotI2VuZGlmCi0KLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6YXV0b0ZvY3VzKCkKLXsKLSAgICBMT0dWKCJhdXRvRm9jdXMgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjphdXRvRm9jdXMoKSB7CisgICAgTE9HMSgiYXV0b0ZvY3VzIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKIAogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZCgpOworICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkQW5kSGFyZHdhcmUoKTsKICAgICBpZiAocmVzdWx0ICE9IE5PX0VSUk9SKSByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKG1IYXJkd2FyZSA9PSAwKSB7Ci0gICAgICAgIExPR0UoIm1IYXJkd2FyZSBpcyBOVUxMLCByZXR1cm5pbmcuIik7Ci0gICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKLSAgICB9Ci0KICAgICByZXR1cm4gbUhhcmR3YXJlLT5hdXRvRm9jdXMoKTsKIH0KIAotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpjYW5jZWxBdXRvRm9jdXMoKQotewotICAgIExPR1YoImNhbmNlbEF1dG9Gb2N1cyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNhbmNlbEF1dG9Gb2N1cygpIHsKKyAgICBMT0cxKCJjYW5jZWxBdXRvRm9jdXMgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOwogCiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWRBbmRIYXJkd2FyZSgpOwogICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgTE9HRSgibUhhcmR3YXJlIGlzIE5VTEwsIHJldHVybmluZy4iKTsKLSAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwotICAgIH0KLQogICAgIHJldHVybiBtSGFyZHdhcmUtPmNhbmNlbEF1dG9Gb2N1cygpOwogfQogCiAvLyB0YWtlIGEgcGljdHVyZSAtIGltYWdlIGlzIHJldHVybmVkIGluIGNhbGxiYWNrCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnRha2VQaWN0dXJlKCkKLXsKLSAgICBMT0dWKCJ0YWtlUGljdHVyZSAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnRha2VQaWN0dXJlKCkgeworICAgIExPRzEoInRha2VQaWN0dXJlIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKIAogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZCgpOworICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkQW5kSGFyZHdhcmUoKTsKICAgICBpZiAocmVzdWx0ICE9IE5PX0VSUk9SKSByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKG1IYXJkd2FyZSA9PSAwKSB7Ci0gICAgICAgIExPR0UoIm1IYXJkd2FyZSBpcyBOVUxMLCByZXR1cm5pbmcuIik7Ci0gICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKLSAgICB9Ci0KLSAgICBtSGFyZHdhcmUtPmVuYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19TSFVUVEVSIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19QT1NUVklFV19GUkFNRSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTUVSQV9NU0dfUkFXX0lNQUdFIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFKTsKKyAgICBlbmFibGVNc2dUeXBlKENBTUVSQV9NU0dfU0hVVFRFUiB8CisgICAgICAgICAgICAgICAgICBDQU1FUkFfTVNHX1BPU1RWSUVXX0ZSQU1FIHwKKyAgICAgICAgICAgICAgICAgIENBTUVSQV9NU0dfUkFXX0lNQUdFIHwKKyAgICAgICAgICAgICAgICAgIENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSk7CiAKICAgICByZXR1cm4gbUhhcmR3YXJlLT50YWtlUGljdHVyZSgpOwogfQogCi0vLyBzbmFwc2hvdCB0YWtlbgotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmhhbmRsZVNodXR0ZXIoCi0gICAgaW1hZ2VfcmVjdF90eXBlICpzaXplIC8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHl1diBwaWN0dXJlIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlckJ1ZmZlci4gSWYgdGhpcyBpcyBOVUxMLCB1c2UgdGhlIHBpY3R1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZSBmcm9tIHBhcmFtZXRlcnMuCi0pCi17Ci0gICAgLy8gUGxheSBzaHV0dGVyIHNvdW5kLgotICAgIGlmIChtTWVkaWFQbGF5ZXJDbGljay5nZXQoKSAhPSBOVUxMKSB7Ci0gICAgICAgIC8vIGRvIG5vdCBwbGF5IHNodXR0ZXIgc291bmQgaWYgc3RyZWFtIHZvbHVtZSBpcyAwCi0gICAgICAgIC8vICh0eXBpY2FsbHkgYmVjYXVzZSByaW5nZXIgbW9kZSBpcyBzaWxlbnQpLgotICAgICAgICBpbnQgaW5kZXg7Ci0gICAgICAgIEF1ZGlvU3lzdGVtOjpnZXRTdHJlYW1Wb2x1bWVJbmRleChBdWRpb1N5c3RlbTo6RU5GT1JDRURfQVVESUJMRSwgJmluZGV4KTsKLSAgICAgICAgaWYgKGluZGV4ICE9IDApIHsKLSAgICAgICAgICAgIG1NZWRpYVBsYXllckNsaWNrLT5zZWVrVG8oMCk7Ci0gICAgICAgICAgICBtTWVkaWFQbGF5ZXJDbGljay0+c3RhcnQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFNjcmVlbiBnb2VzIGJsYWNrIGFmdGVyIHRoZSBidWZmZXIgaXMgdW5yZWdpc3RlcmVkLgotICAgIGlmIChtU3VyZmFjZSAhPSAwICYmICFtVXNlT3ZlcmxheSkgewotICAgICAgICBtU3VyZmFjZS0+dW5yZWdpc3RlckJ1ZmZlcnMoKTsKLSAgICB9Ci0KLSAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gbUNhbWVyYUNsaWVudDsKLSAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgIGMtPm5vdGlmeUNhbGxiYWNrKENBTUVSQV9NU0dfU0hVVFRFUiwgMCwgMCk7Ci0gICAgfQotICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19TSFVUVEVSKTsKLQotICAgIC8vIEl0IHRha2VzIHNvbWUgdGltZSBiZWZvcmUgeXV2UGljdHVyZSBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgLy8gUmVnaXN0ZXIgdGhlIGJ1ZmZlciBmb3IgcmF3IGltYWdlIGhlcmUgdG8gcmVkdWNlIGxhdGVuY3kuCi0gICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgIW1Vc2VPdmVybGF5KSB7Ci0gICAgICAgIGludCB3LCBoOwotICAgICAgICBDYW1lcmFQYXJhbWV0ZXJzIHBhcmFtcyhtSGFyZHdhcmUtPmdldFBhcmFtZXRlcnMoKSk7Ci0gICAgICAgIGlmIChzaXplID09IE5VTEwpIHsKLSAgICAgICAgICAgIHBhcmFtcy5nZXRQaWN0dXJlU2l6ZSgmdywgJmgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdyA9IHNpemUtPndpZHRoOwotICAgICAgICAgICAgaCA9IHNpemUtPmhlaWdodDsKLSAgICAgICAgICAgIHcgJj0gfjE7Ci0gICAgICAgICAgICBoICY9IH4xOwotICAgICAgICAgICAgTE9HVigiU25hcHNob3QgaW1hZ2Ugd2lkdGg9JWQsIGhlaWdodD0lZCIsIHcsIGgpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBkb24ndCB1c2UgaGFyZGNvZGVkIGZvcm1hdCBjb25zdGFudHMgaGVyZQotICAgICAgICBJU3VyZmFjZTo6QnVmZmVySGVhcCBidWZmZXJzKHcsIGgsIHcsIGgsCi0gICAgICAgICAgICBIQUxfUElYRUxfRk9STUFUX1lDckNiXzQyMF9TUCwgbU9yaWVudGF0aW9uLCAwLAotICAgICAgICAgICAgbUhhcmR3YXJlLT5nZXRSYXdIZWFwKCkpOwotCi0gICAgICAgIG1TdXJmYWNlLT5yZWdpc3RlckJ1ZmZlcnMoYnVmZmVycyk7Ci0gICAgICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmZsdXNoQ29tbWFuZHMoKTsKLSAgICB9Ci19Ci0KLS8vIHByZXZpZXcgY2FsbGJhY2sgLSBmcmFtZSBidWZmZXIgdXBkYXRlCi12b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlUHJldmlld0RhdGEoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSkKLXsKLSAgICBzc2l6ZV90IG9mZnNldDsKLSAgICBzaXplX3Qgc2l6ZTsKLSAgICBzcDxJTWVtb3J5SGVhcD4gaGVhcCA9IG1lbS0+Z2V0TWVtb3J5KCZvZmZzZXQsICZzaXplKTsKLQotI2lmIERFQlVHX0hFQVBfTEVBS1MgJiYgMCAvLyBkZWJ1Z2dpbmcKLSAgICBpZiAoZ1dlYWtIZWFwID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGdXZWFrSGVhcCAhPSBoZWFwKSB7Ci0gICAgICAgICAgICBMT0dWKCJTRVRUSU5HIFBSRVZJRVcgSEVBUCIpOwotICAgICAgICAgICAgaGVhcC0+dHJhY2tNZSh0cnVlLCB0cnVlKTsKLSAgICAgICAgICAgIGdXZWFrSGVhcCA9IGhlYXA7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLSNpZiBERUJVR19EVU1QX1BSRVZJRVdfRlJBTUVfVE9fRklMRQotICAgIHsKLSAgICAgICAgaWYgKGRlYnVnX2ZyYW1lX2NudCsrID09IERFQlVHX0RVTVBfUFJFVklFV19GUkFNRV9UT19GSUxFKSB7Ci0gICAgICAgICAgICBkdW1wX3RvX2ZpbGUoIi9kYXRhL3ByZXZpZXcueXV2IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAodWludDhfdCAqKWhlYXAtPmJhc2UoKSArIG9mZnNldCwgc2l6ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghbVVzZU92ZXJsYXkpCi0gICAgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgc3VyZmFjZUxvY2sobVN1cmZhY2VMb2NrKTsKLSAgICAgICAgaWYgKG1TdXJmYWNlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIG1TdXJmYWNlLT5wb3N0QnVmZmVyKG9mZnNldCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBsb2NhbCBjb3B5IG9mIHRoZSBjYWxsYmFjayBmbGFncwotICAgIGludCBmbGFncyA9IG1QcmV2aWV3Q2FsbGJhY2tGbGFnOwotCi0gICAgLy8gaXMgY2FsbGJhY2sgZW5hYmxlZD8KLSAgICBpZiAoIShmbGFncyAmIEZSQU1FX0NBTExCQUNLX0ZMQUdfRU5BQkxFX01BU0spKSB7Ci0gICAgICAgIC8vIElmIHRoZSBlbmFibGUgYml0IGlzIG9mZiwgdGhlIGNvcHktb3V0IGFuZCBvbmUtc2hvdCBiaXRzIGFyZSBpZ25vcmVkCi0gICAgICAgIExPR1YoImZyYW1lIGNhbGxiYWNrIGlzIGRpYWJsZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIGhvbGQgYSBzdHJvbmcgcG9pbnRlciB0byB0aGUgY2xpZW50Ci0gICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7Ci0KLSAgICAvLyBjbGVhciBjYWxsYmFjayBmbGFncyBpZiBubyBjbGllbnQgb3Igb25lLXNob3QgbW9kZQotICAgIGlmICgoYyA9PSBOVUxMKSB8fCAobVByZXZpZXdDYWxsYmFja0ZsYWcgJiBGUkFNRV9DQUxMQkFDS19GTEFHX09ORV9TSE9UX01BU0spKSB7Ci0gICAgICAgIExPR1YoIkRpc2FibGUgcHJldmlldyBjYWxsYmFjayIpOwotICAgICAgICBtUHJldmlld0NhbGxiYWNrRmxhZyAmPSB+KEZSQU1FX0NBTExCQUNLX0ZMQUdfT05FX1NIT1RfTUFTSyB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX0NBTExCQUNLX0ZMQUdfQ09QWV9PVVRfTUFTSyB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX0NBTExCQUNLX0ZMQUdfRU5BQkxFX01BU0spOwotICAgICAgICAvLyBUT0RPOiBTaG91bGRuJ3Qgd2UgdXNlIHRoaXMgQVBJIGZvciBub24tb3ZlcmxheSBoYXJkd2FyZSBhcyB3ZWxsPwotICAgICAgICBpZiAobVVzZU92ZXJsYXkpCi0gICAgICAgICAgICBtSGFyZHdhcmUtPmRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSk7Ci0gICAgfQotCi0gICAgLy8gSXMgdGhlIHJlY2VpdmVkIGZyYW1lIGNvcGllZCBvdXQgb3Igbm90PwotICAgIGlmIChmbGFncyAmIEZSQU1FX0NBTExCQUNLX0ZMQUdfQ09QWV9PVVRfTUFTSykgewotICAgICAgICBMT0dWKCJmcmFtZSBpcyBjb3BpZWQiKTsKLSAgICAgICAgY29weUZyYW1lQW5kUG9zdENvcGllZEZyYW1lKGMsIGhlYXAsIG9mZnNldCwgc2l6ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTE9HVigiZnJhbWUgaXMgZm9yd2FyZGVkIik7Ci0gICAgICAgIGMtPmRhdGFDYWxsYmFjayhDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUsIG1lbSk7Ci0gICAgfQotfQotCi0vLyBwaWN0dXJlIGNhbGxiYWNrIC0gcG9zdHZpZXcgaW1hZ2UgcmVhZHkKLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpoYW5kbGVQb3N0dmlldyhjb25zdCBzcDxJTWVtb3J5PiYgbWVtKQotewotI2lmIERFQlVHX0RVTVBfUE9TVFZJRVdfU05BUFNIT1RfVE9fRklMRSAvLyBmb3IgdGVzdGluZyBwdXJzcG9zZXMgb25seQotICAgIHsKLSAgICAgICAgc3NpemVfdCBvZmZzZXQ7Ci0gICAgICAgIHNpemVfdCBzaXplOwotICAgICAgICBzcDxJTWVtb3J5SGVhcD4gaGVhcCA9IG1lbS0+Z2V0TWVtb3J5KCZvZmZzZXQsICZzaXplKTsKLSAgICAgICAgZHVtcF90b19maWxlKCIvZGF0YS9wb3N0dmlldy55dXYiLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QgKiloZWFwLT5iYXNlKCkgKyBvZmZzZXQsIHNpemUpOwotICAgIH0KLSNlbmRpZgotCi0gICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7Ci0gICAgaWYgKGMgIT0gTlVMTCkgewotICAgICAgICBjLT5kYXRhQ2FsbGJhY2soQ0FNRVJBX01TR19QT1NUVklFV19GUkFNRSwgbWVtKTsKLSAgICB9Ci0gICAgbUhhcmR3YXJlLT5kaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1BPU1RWSUVXX0ZSQU1FKTsKLX0KLQotLy8gcGljdHVyZSBjYWxsYmFjayAtIHJhdyBpbWFnZSByZWFkeQotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmhhbmRsZVJhd1BpY3R1cmUoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSkKLXsKLSAgICBzc2l6ZV90IG9mZnNldDsKLSAgICBzaXplX3Qgc2l6ZTsKLSAgICBzcDxJTWVtb3J5SGVhcD4gaGVhcCA9IG1lbS0+Z2V0TWVtb3J5KCZvZmZzZXQsICZzaXplKTsKLSNpZiBERUJVR19IRUFQX0xFQUtTICYmIDAgLy8gZGVidWdnaW5nCi0gICAgZ1dlYWtIZWFwID0gaGVhcDsgLy8gZGVidWdnaW5nCi0jZW5kaWYKLQotICAgIC8vTE9HVigiaGFuZGxlUmF3UGljdHVyZSglZCwgJWQpIiwgb2Zmc2V0LCBzaXplKTsKLSNpZiBERUJVR19EVU1QX1lVVl9TTkFQU0hPVF9UT19GSUxFIC8vIGZvciB0ZXN0aW5nIHB1cnNwb3NlcyBvbmx5Ci0gICAgZHVtcF90b19maWxlKCIvZGF0YS9waG90by55dXYiLAotICAgICAgICAgICAgICAgICAodWludDhfdCAqKWhlYXAtPmJhc2UoKSArIG9mZnNldCwgc2l6ZSk7Ci0jZW5kaWYKLQotICAgIC8vIFB1dCB0aGUgWVVWIHZlcnNpb24gb2YgdGhlIHNuYXBzaG90IGluIHRoZSBwcmV2aWV3IGRpc3BsYXkuCi0gICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgIW1Vc2VPdmVybGF5KSB7Ci0gICAgICAgIG1TdXJmYWNlLT5wb3N0QnVmZmVyKG9mZnNldCk7Ci0gICAgfQotCi0gICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7Ci0gICAgaWYgKGMgIT0gTlVMTCkgewotICAgICAgICBjLT5kYXRhQ2FsbGJhY2soQ0FNRVJBX01TR19SQVdfSU1BR0UsIG1lbSk7Ci0gICAgfQotICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19SQVdfSU1BR0UpOwotfQotCi0vLyBwaWN0dXJlIGNhbGxiYWNrIC0gY29tcHJlc3NlZCBwaWN0dXJlIHJlYWR5Ci12b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlQ29tcHJlc3NlZFBpY3R1cmUoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSkKLXsKLSNpZiBERUJVR19EVU1QX0pQRUdfU05BUFNIT1RfVE9fRklMRSAvLyBmb3IgdGVzdGluZyBwdXJzcG9zZXMgb25seQotICAgIHsKLSAgICAgICAgc3NpemVfdCBvZmZzZXQ7Ci0gICAgICAgIHNpemVfdCBzaXplOwotICAgICAgICBzcDxJTWVtb3J5SGVhcD4gaGVhcCA9IG1lbS0+Z2V0TWVtb3J5KCZvZmZzZXQsICZzaXplKTsKLSAgICAgICAgZHVtcF90b19maWxlKCIvZGF0YS9waG90by5qcGciLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QgKiloZWFwLT5iYXNlKCkgKyBvZmZzZXQsIHNpemUpOwotICAgIH0KLSNlbmRpZgotCi0gICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7Ci0gICAgaWYgKGMgIT0gTlVMTCkgewotICAgICAgICBjLT5kYXRhQ2FsbGJhY2soQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFLCBtZW0pOwotICAgIH0KLSAgICBtSGFyZHdhcmUtPmRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSk7Ci19Ci0KLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50Ojpub3RpZnlDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGludDMyX3QgZXh0MSwgaW50MzJfdCBleHQyLCB2b2lkKiB1c2VyKQotewotICAgIExPR1YoIm5vdGlmeUNhbGxiYWNrKCVkKSIsIG1zZ1R5cGUpOwotCi0gICAgc3A8Q2xpZW50PiBjbGllbnQgPSBnZXRDbGllbnRGcm9tQ29va2llKHVzZXIpOwotICAgIGlmIChjbGllbnQgPT0gMCkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3dpdGNoIChtc2dUeXBlKSB7Ci0gICAgICAgIGNhc2UgQ0FNRVJBX01TR19TSFVUVEVSOgotICAgICAgICAgICAgLy8gZXh0MSBpcyB0aGUgZGltZW5zaW9uIG9mIHRoZSB5dXYgcGljdHVyZS4KLSAgICAgICAgICAgIGNsaWVudC0+aGFuZGxlU2h1dHRlcigoaW1hZ2VfcmVjdF90eXBlICopZXh0MSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBjbGllbnQtPm1DYW1lcmFDbGllbnQ7Ci0gICAgICAgICAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgYy0+bm90aWZ5Q2FsbGJhY2sobXNnVHlwZSwgZXh0MSwgZXh0Mik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSNpZiBERUJVR19DTElFTlRfUkVGRVJFTkNFUwotICAgIGlmIChjbGllbnQtPmdldFN0cm9uZ0NvdW50KCkgPT0gMSkgewotICAgICAgICBMT0dFKCIrKysrKysrKysrKysrKysrIChOT1RJRlkgQ0FMTEJBQ0spIFRISVMgV0lMTCBDQVVTRSBBIExPQ0tVUCEiKTsKLSAgICAgICAgY2xpZW50LT5wcmludFJlZnMoKTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmRhdGFDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhUHRyLCB2b2lkKiB1c2VyKQotewotICAgIExPR1YoImRhdGFDYWxsYmFjayglZCkiLCBtc2dUeXBlKTsKLQotICAgIHNwPENsaWVudD4gY2xpZW50ID0gZ2V0Q2xpZW50RnJvbUNvb2tpZSh1c2VyKTsKLSAgICBpZiAoY2xpZW50ID09IDApIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBjbGllbnQtPm1DYW1lcmFDbGllbnQ7Ci0gICAgaWYgKGRhdGFQdHIgPT0gTlVMTCkgewotICAgICAgICBMT0dFKCJOdWxsIGRhdGEgcmV0dXJuZWQgaW4gZGF0YSBjYWxsYmFjayIpOwotICAgICAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjLT5ub3RpZnlDYWxsYmFjayhDQU1FUkFfTVNHX0VSUk9SLCBVTktOT1dOX0VSUk9SLCAwKTsKLSAgICAgICAgICAgIGMtPmRhdGFDYWxsYmFjayhtc2dUeXBlLCBOVUxMKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3dpdGNoIChtc2dUeXBlKSB7Ci0gICAgICAgIGNhc2UgQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FOgotICAgICAgICAgICAgY2xpZW50LT5oYW5kbGVQcmV2aWV3RGF0YShkYXRhUHRyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENBTUVSQV9NU0dfUE9TVFZJRVdfRlJBTUU6Ci0gICAgICAgICAgICBjbGllbnQtPmhhbmRsZVBvc3R2aWV3KGRhdGFQdHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0FNRVJBX01TR19SQVdfSU1BR0U6Ci0gICAgICAgICAgICBjbGllbnQtPmhhbmRsZVJhd1BpY3R1cmUoZGF0YVB0cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0U6Ci0gICAgICAgICAgICBjbGllbnQtPmhhbmRsZUNvbXByZXNzZWRQaWN0dXJlKGRhdGFQdHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgYy0+ZGF0YUNhbGxiYWNrKG1zZ1R5cGUsIGRhdGFQdHIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0jaWYgREVCVUdfQ0xJRU5UX1JFRkVSRU5DRVMKLSAgICBpZiAoY2xpZW50LT5nZXRTdHJvbmdDb3VudCgpID09IDEpIHsKLSAgICAgICAgTE9HRSgiKysrKysrKysrKysrKysrKyAoREFUQSBDQUxMQkFDSykgVEhJUyBXSUxMIENBVVNFIEEgTE9DS1VQISIpOwotICAgICAgICBjbGllbnQtPnByaW50UmVmcygpOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6ZGF0YUNhbGxiYWNrVGltZXN0YW1wKG5zZWNzX3QgdGltZXN0YW1wLCBpbnQzMl90IG1zZ1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhUHRyLCB2b2lkKiB1c2VyKQotewotICAgIExPR1YoImRhdGFDYWxsYmFja1RpbWVzdGFtcCglZCkiLCBtc2dUeXBlKTsKLQotICAgIHNwPENsaWVudD4gY2xpZW50ID0gZ2V0Q2xpZW50RnJvbUNvb2tpZSh1c2VyKTsKLSAgICBpZiAoY2xpZW50ID09IDApIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gY2xpZW50LT5tQ2FtZXJhQ2xpZW50OwotCi0gICAgaWYgKGRhdGFQdHIgPT0gTlVMTCkgewotICAgICAgICBMT0dFKCJOdWxsIGRhdGEgcmV0dXJuZWQgaW4gZGF0YSB3aXRoIHRpbWVzdGFtcCBjYWxsYmFjayIpOwotICAgICAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjLT5ub3RpZnlDYWxsYmFjayhDQU1FUkFfTVNHX0VSUk9SLCBVTktOT1dOX0VSUk9SLCAwKTsKLSAgICAgICAgICAgIGMtPmRhdGFDYWxsYmFja1RpbWVzdGFtcCgwLCBtc2dUeXBlLCBOVUxMKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGMgIT0gTlVMTCkgewotICAgICAgICBjLT5kYXRhQ2FsbGJhY2tUaW1lc3RhbXAodGltZXN0YW1wLCBtc2dUeXBlLCBkYXRhUHRyKTsKLSAgICB9Ci0KLSNpZiBERUJVR19DTElFTlRfUkVGRVJFTkNFUwotICAgIGlmIChjbGllbnQtPmdldFN0cm9uZ0NvdW50KCkgPT0gMSkgewotICAgICAgICBMT0dFKCIrKysrKysrKysrKysrKysrIChEQVRBIENBTExCQUNLIFRJTUVTVEFNUCkgVEhJUyBXSUxMIENBVVNFIEEgTE9DS1VQISIpOwotICAgICAgICBjbGllbnQtPnByaW50UmVmcygpOwotICAgIH0KLSNlbmRpZgotfQotCiAvLyBzZXQgcHJldmlldy9jYXB0dXJlIHBhcmFtZXRlcnMgLSBrZXkvdmFsdWUgcGFpcnMKLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c2V0UGFyYW1ldGVycyhjb25zdCBTdHJpbmc4JiBwYXJhbXMpCi17Ci0gICAgTE9HVigic2V0UGFyYW1ldGVycyglcykiLCBwYXJhbXMuc3RyaW5nKCkpOworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIHBhcmFtcykgeworICAgIExPRzEoInNldFBhcmFtZXRlcnMgKHBpZCAlZCkgKCVzKSIsIGdldENhbGxpbmdQaWQoKSwgcGFyYW1zLnN0cmluZygpKTsKIAogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZCgpOworICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkQW5kSGFyZHdhcmUoKTsKICAgICBpZiAocmVzdWx0ICE9IE5PX0VSUk9SKSByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKG1IYXJkd2FyZSA9PSAwKSB7Ci0gICAgICAgIExPR0UoIm1IYXJkd2FyZSBpcyBOVUxMLCByZXR1cm5pbmcuIik7Ci0gICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKLSAgICB9Ci0KICAgICBDYW1lcmFQYXJhbWV0ZXJzIHAocGFyYW1zKTsKLQogICAgIHJldHVybiBtSGFyZHdhcmUtPnNldFBhcmFtZXRlcnMocCk7CiB9CiAKIC8vIGdldCBwcmV2aWV3L2NhcHR1cmUgcGFyYW1ldGVycyAtIGtleS92YWx1ZSBwYWlycwotU3RyaW5nOCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmdldFBhcmFtZXRlcnMoKSBjb25zdAoteworU3RyaW5nOCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmdldFBhcmFtZXRlcnMoKSBjb25zdCB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotCi0gICAgaWYgKG1IYXJkd2FyZSA9PSAwKSB7Ci0gICAgICAgIExPR0UoIm1IYXJkd2FyZSBpcyBOVUxMLCByZXR1cm5pbmcuIik7Ci0gICAgICAgIHJldHVybiBTdHJpbmc4KCk7Ci0gICAgfQorICAgIGlmIChjaGVja1BpZEFuZEhhcmR3YXJlKCkgIT0gTk9fRVJST1IpIHJldHVybiBTdHJpbmc4KCk7CiAKICAgICBTdHJpbmc4IHBhcmFtcyhtSGFyZHdhcmUtPmdldFBhcmFtZXRlcnMoKS5mbGF0dGVuKCkpOwotICAgIExPR1YoImdldFBhcmFtZXRlcnMoJXMpIiwgcGFyYW1zLnN0cmluZygpKTsKKyAgICBMT0cxKCJnZXRQYXJhbWV0ZXJzIChwaWQgJWQpICglcykiLCBnZXRDYWxsaW5nUGlkKCksIHBhcmFtcy5zdHJpbmcoKSk7CiAgICAgcmV0dXJuIHBhcmFtczsKIH0KIAotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZW5kQ29tbWFuZChpbnQzMl90IGNtZCwgaW50MzJfdCBhcmcxLCBpbnQzMl90IGFyZzIpCi17Ci0gICAgTE9HVigic2VuZENvbW1hbmQgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZW5kQ29tbWFuZChpbnQzMl90IGNtZCwgaW50MzJfdCBhcmcxLCBpbnQzMl90IGFyZzIpIHsKKyAgICBMT0cxKCJzZW5kQ29tbWFuZCAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWRBbmRIYXJkd2FyZSgpOwogICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7CiAKICAgICBpZiAoY21kID09IENBTUVSQV9DTURfU0VUX0RJU1BMQVlfT1JJRU5UQVRJT04pIHsKQEAgLTEyNDgsNTAgKzgzOCwzNjYgQEAKICAgICAgICAgcmV0dXJuIE9LOwogICAgIH0KIAotICAgIGlmIChtSGFyZHdhcmUgPT0gMCkgewotICAgICAgICBMT0dFKCJtSGFyZHdhcmUgaXMgTlVMTCwgcmV0dXJuaW5nLiIpOwotICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047Ci0gICAgfQotCiAgICAgcmV0dXJuIG1IYXJkd2FyZS0+c2VuZENvbW1hbmQoY21kLCBhcmcxLCBhcmcyKTsKIH0KIAotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNvcHlGcmFtZUFuZFBvc3RDb3BpZWRGcmFtZShjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2xpZW50LAotICAgICAgICBjb25zdCBzcDxJTWVtb3J5SGVhcD4mIGhlYXAsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQotewotICAgIExPR1YoImNvcHlGcmFtZUFuZFBvc3RDb3BpZWRGcmFtZSIpOworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6ZW5hYmxlTXNnVHlwZShpbnQzMl90IG1zZ1R5cGUpIHsKKyAgICBhbmRyb2lkX2F0b21pY19vcihtc2dUeXBlLCAmbU1zZ0VuYWJsZWQpOworICAgIG1IYXJkd2FyZS0+ZW5hYmxlTXNnVHlwZShtc2dUeXBlKTsKK30KKwordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmRpc2FibGVNc2dUeXBlKGludDMyX3QgbXNnVHlwZSkgeworICAgIGFuZHJvaWRfYXRvbWljX2FuZCh+bXNnVHlwZSwgJm1Nc2dFbmFibGVkKTsKKyAgICBtSGFyZHdhcmUtPmRpc2FibGVNc2dUeXBlKG1zZ1R5cGUpOworfQorCisjZGVmaW5lIENIRUNLX01FU1NBR0VfSU5URVJWQUwgMTAgLy8gMTBtcworYm9vbCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmxvY2tJZk1lc3NhZ2VXYW50ZWQoaW50MzJfdCBtc2dUeXBlKSB7CisgICAgaW50IHNsZWVwQ291bnQgPSAwOworICAgIHdoaWxlIChtTXNnRW5hYmxlZCAmIG1zZ1R5cGUpIHsKKyAgICAgICAgaWYgKG1Mb2NrLnRyeUxvY2soKSA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgaWYgKHNsZWVwQ291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgTE9HMSgibG9ja0lmTWVzc2FnZVdhbnRlZCglZCk6IHdhaXRlZCBmb3IgJWQgbXMiLAorICAgICAgICAgICAgICAgICAgICBtc2dUeXBlLCBzbGVlcENvdW50ICogQ0hFQ0tfTUVTU0FHRV9JTlRFUlZBTCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2xlZXBDb3VudCsrID09IDApIHsKKyAgICAgICAgICAgIExPRzEoImxvY2tJZk1lc3NhZ2VXYW50ZWQoJWQpOiBlbnRlciBzbGVlcCIsIG1zZ1R5cGUpOworICAgICAgICB9CisgICAgICAgIHVzbGVlcChDSEVDS19NRVNTQUdFX0lOVEVSVkFMICogMTAwMCk7CisgICAgfQorICAgIExPR1coImxvY2tJZk1lc3NhZ2VXYW50ZWQoJWQpOiBkcm9wcGVkIHVud2FudGVkIG1lc3NhZ2UiLCBtc2dUeXBlKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQ29udmVydHMgZnJvbSBhIHJhdyBwb2ludGVyIHRvIHRoZSBjbGllbnQgdG8gYSBzdHJvbmcgcG9pbnRlciBkdXJpbmcgYQorLy8gaGFyZHdhcmUgY2FsbGJhY2suIFRoaXMgcmVxdWlyZXMgdGhlIGNhbGxiYWNrcyBvbmx5IGhhcHBlbiB3aGVuIHRoZSBjbGllbnQKKy8vIGlzIHN0aWxsIGFsaXZlLgorc3A8Q2FtZXJhU2VydmljZTo6Q2xpZW50PiBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmdldENsaWVudEZyb21Db29raWUodm9pZCogdXNlcikgeworICAgIHNwPENsaWVudD4gY2xpZW50ID0gZ0NhbWVyYVNlcnZpY2UtPmdldENsaWVudEJ5SWQoKGludCkgdXNlcik7CisKKyAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiBpZiB0aGUgQ2xpZW50IGlzIGluIHRoZSBwcm9jZXNzIG9mIHNodXR0aW5nIGRvd24gKHRoZQorICAgIC8vIGxhc3Qgc3Ryb25nIHJlZmVyZW5jZSBpcyBnb25lLCBidXQgdGhlIGRlc3RydWN0b3IgaGFzbid0IGZpbmlzaGVkCisgICAgLy8gc3RvcHBpbmcgdGhlIGhhcmR3YXJlKS4KKyAgICBpZiAoY2xpZW50ID09IDApIHJldHVybiBOVUxMOworCisgICAgLy8gVGhlIGNoZWNrcyBiZWxvdyBhcmUgbm90IG5lY2Vzc2FyeSBhbmQgYXJlIGZvciBkZWJ1Z2dpbmcgb25seS4KKyAgICBpZiAoY2xpZW50LT5tQ2FtZXJhU2VydmljZS5nZXQoKSAhPSBnQ2FtZXJhU2VydmljZSkgeworICAgICAgICBMT0dFKCJtaXNtYXRjaCBzZXJ2aWNlISIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoY2xpZW50LT5tSGFyZHdhcmUgPT0gMCkgeworICAgICAgICBMT0dFKCJtSGFyZHdhcmUgPT0gMDogY2FsbGJhY2sgYWZ0ZXIgZGlzY29ubmVjdCgpPyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gY2xpZW50OworfQorCisvLyBDYWxsYmFjayBtZXNzYWdlcyBjYW4gYmUgZGlzcGF0Y2hlZCB0byBpbnRlcm5hbCBoYW5kbGVycyBvciBwYXNzIHRvIG91cgorLy8gY2xpZW50J3MgY2FsbGJhY2sgZnVuY3Rpb25zLCBkZXBlbmRpbmcgb24gdGhlIG1lc3NhZ2UgdHlwZS4KKy8vCisvLyBub3RpZnlDYWxsYmFjazoKKy8vICAgICAgQ0FNRVJBX01TR19TSFVUVEVSICAgICAgICAgICAgICBoYW5kbGVTaHV0dGVyCisvLyAgICAgIChvdGhlcnMpICAgICAgICAgICAgICAgICAgICAgICAgYy0+bm90aWZ5Q2FsbGJhY2sKKy8vIGRhdGFDYWxsYmFjazoKKy8vICAgICAgQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FICAgICAgICBoYW5kbGVQcmV2aWV3RGF0YQorLy8gICAgICBDQU1FUkFfTVNHX1BPU1RWSUVXX0ZSQU1FICAgICAgIGhhbmRsZVBvc3R2aWV3CisvLyAgICAgIENBTUVSQV9NU0dfUkFXX0lNQUdFICAgICAgICAgICAgaGFuZGxlUmF3UGljdHVyZQorLy8gICAgICBDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0UgICAgIGhhbmRsZUNvbXByZXNzZWRQaWN0dXJlCisvLyAgICAgIChvdGhlcnMpICAgICAgICAgICAgICAgICAgICAgICAgYy0+ZGF0YUNhbGxiYWNrCisvLyBkYXRhQ2FsbGJhY2tUaW1lc3RhbXAKKy8vICAgICAgKG90aGVycykgICAgICAgICAgICAgICAgICAgICAgICBjLT5kYXRhQ2FsbGJhY2tUaW1lc3RhbXAKKy8vCisvLyBOT1RFOiB0aGUgKkNhbGxiYWNrIGZ1bmN0aW9ucyBncmFiIG1Mb2NrIG9mIHRoZSBjbGllbnQgYmVmb3JlIHBhc3NpbmcKKy8vIGNvbnRyb2wgdG8gaGFuZGxlKiBmdW5jdGlvbnMuIFNvIHRoZSBoYW5kbGUqIGZ1bmN0aW9ucyBtdXN0IHJlbGVhc2UgdGhlCisvLyBsb2NrIGJlZm9yZSBjYWxsaW5nIHRoZSBJQ2FtZXJhQ2xpZW50J3MgY2FsbGJhY2tzLCBzbyB0aG9zZSBjYWxsYmFja3MgY2FuCisvLyBpbnZva2UgbWV0aG9kcyBpbiB0aGUgQ2xpZW50IGNsYXNzIGFnYWluIChGb3IgZXhhbXBsZSwgdGhlIHByZXZpZXcgZnJhbWUKKy8vIGNhbGxiYWNrIG1heSB3YW50IHRvIHJlbGVhc2VSZWNvcmRpbmdGcmFtZSkuIFRoZSBoYW5kbGUqIGZ1bmN0aW9ucyBtdXN0CisvLyByZWxlYXNlIHRoZSBsb2NrIGFmdGVyIGFsbCBhY2Nlc3NlcyB0byBtZW1iZXIgdmFyaWFibGVzLCBzbyBpdCBtdXN0IGJlCisvLyBoYW5kbGVkIHZlcnkgY2FyZWZ1bGx5LgorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6bm90aWZ5Q2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLCBpbnQzMl90IGV4dDEsCisgICAgICAgIGludDMyX3QgZXh0Miwgdm9pZCogdXNlcikgeworICAgIExPRzIoIm5vdGlmeUNhbGxiYWNrKCVkKSIsIG1zZ1R5cGUpOworCisgICAgc3A8Q2xpZW50PiBjbGllbnQgPSBnZXRDbGllbnRGcm9tQ29va2llKHVzZXIpOworICAgIGlmIChjbGllbnQgPT0gMCkgcmV0dXJuOworICAgIGlmICghY2xpZW50LT5sb2NrSWZNZXNzYWdlV2FudGVkKG1zZ1R5cGUpKSByZXR1cm47CisKKyAgICBzd2l0Y2ggKG1zZ1R5cGUpIHsKKyAgICAgICAgY2FzZSBDQU1FUkFfTVNHX1NIVVRURVI6CisgICAgICAgICAgICAvLyBleHQxIGlzIHRoZSBkaW1lbnNpb24gb2YgdGhlIHl1diBwaWN0dXJlLgorICAgICAgICAgICAgY2xpZW50LT5oYW5kbGVTaHV0dGVyKChpbWFnZV9yZWN0X3R5cGUgKilleHQxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY2xpZW50LT5oYW5kbGVHZW5lcmljTm90aWZ5KG1zZ1R5cGUsIGV4dDEsIGV4dDIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6ZGF0YUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwKKyAgICAgICAgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIsIHZvaWQqIHVzZXIpIHsKKyAgICBMT0cyKCJkYXRhQ2FsbGJhY2soJWQpIiwgbXNnVHlwZSk7CisKKyAgICBzcDxDbGllbnQ+IGNsaWVudCA9IGdldENsaWVudEZyb21Db29raWUodXNlcik7CisgICAgaWYgKGNsaWVudCA9PSAwKSByZXR1cm47CisgICAgaWYgKCFjbGllbnQtPmxvY2tJZk1lc3NhZ2VXYW50ZWQobXNnVHlwZSkpIHJldHVybjsKKworICAgIGlmIChkYXRhUHRyID09IDApIHsKKyAgICAgICAgTE9HRSgiTnVsbCBkYXRhIHJldHVybmVkIGluIGRhdGEgY2FsbGJhY2siKTsKKyAgICAgICAgY2xpZW50LT5oYW5kbGVHZW5lcmljTm90aWZ5KENBTUVSQV9NU0dfRVJST1IsIFVOS05PV05fRVJST1IsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChtc2dUeXBlKSB7CisgICAgICAgIGNhc2UgQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FOgorICAgICAgICAgICAgY2xpZW50LT5oYW5kbGVQcmV2aWV3RGF0YShkYXRhUHRyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENBTUVSQV9NU0dfUE9TVFZJRVdfRlJBTUU6CisgICAgICAgICAgICBjbGllbnQtPmhhbmRsZVBvc3R2aWV3KGRhdGFQdHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0FNRVJBX01TR19SQVdfSU1BR0U6CisgICAgICAgICAgICBjbGllbnQtPmhhbmRsZVJhd1BpY3R1cmUoZGF0YVB0cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0U6CisgICAgICAgICAgICBjbGllbnQtPmhhbmRsZUNvbXByZXNzZWRQaWN0dXJlKGRhdGFQdHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjbGllbnQtPmhhbmRsZUdlbmVyaWNEYXRhKG1zZ1R5cGUsIGRhdGFQdHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6ZGF0YUNhbGxiYWNrVGltZXN0YW1wKG5zZWNzX3QgdGltZXN0YW1wLAorICAgICAgICBpbnQzMl90IG1zZ1R5cGUsIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhUHRyLCB2b2lkKiB1c2VyKSB7CisgICAgTE9HMigiZGF0YUNhbGxiYWNrVGltZXN0YW1wKCVkKSIsIG1zZ1R5cGUpOworCisgICAgc3A8Q2xpZW50PiBjbGllbnQgPSBnZXRDbGllbnRGcm9tQ29va2llKHVzZXIpOworICAgIGlmIChjbGllbnQgPT0gMCkgcmV0dXJuOworICAgIGlmICghY2xpZW50LT5sb2NrSWZNZXNzYWdlV2FudGVkKG1zZ1R5cGUpKSByZXR1cm47CisKKyAgICBpZiAoZGF0YVB0ciA9PSAwKSB7CisgICAgICAgIExPR0UoIk51bGwgZGF0YSByZXR1cm5lZCBpbiBkYXRhIHdpdGggdGltZXN0YW1wIGNhbGxiYWNrIik7CisgICAgICAgIGNsaWVudC0+aGFuZGxlR2VuZXJpY05vdGlmeShDQU1FUkFfTVNHX0VSUk9SLCBVTktOT1dOX0VSUk9SLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNsaWVudC0+aGFuZGxlR2VuZXJpY0RhdGFUaW1lc3RhbXAodGltZXN0YW1wLCBtc2dUeXBlLCBkYXRhUHRyKTsKK30KKworLy8gc25hcHNob3QgdGFrZW4gY2FsbGJhY2sKKy8vICJzaXplIiBpcyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB5dXYgcGljdHVyZSBmb3IgcmVnaXN0ZXJCdWZmZXIuCisvLyBJZiBpdCBpcyBOVUxMLCB1c2UgdGhlIHBpY3R1cmUgc2l6ZSBmcm9tIHBhcmFtZXRlcnMuCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlU2h1dHRlcihpbWFnZV9yZWN0X3R5cGUgKnNpemUpIHsKKyAgICBtQ2FtZXJhU2VydmljZS0+cGxheVNvdW5kKFNPVU5EX1NIVVRURVIpOworCisgICAgLy8gU2NyZWVuIGdvZXMgYmxhY2sgYWZ0ZXIgdGhlIGJ1ZmZlciBpcyB1bnJlZ2lzdGVyZWQuCisgICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgIW1Vc2VPdmVybGF5KSB7CisgICAgICAgIG1TdXJmYWNlLT51bnJlZ2lzdGVyQnVmZmVycygpOworICAgIH0KKworICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBtQ2FtZXJhQ2xpZW50OworICAgIGlmIChjICE9IDApIHsKKyAgICAgICAgbUxvY2sudW5sb2NrKCk7CisgICAgICAgIGMtPm5vdGlmeUNhbGxiYWNrKENBTUVSQV9NU0dfU0hVVFRFUiwgMCwgMCk7CisgICAgICAgIGlmICghbG9ja0lmTWVzc2FnZVdhbnRlZChDQU1FUkFfTVNHX1NIVVRURVIpKSByZXR1cm47CisgICAgfQorICAgIGRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfU0hVVFRFUik7CisKKyAgICAvLyBJdCB0YWtlcyBzb21lIHRpbWUgYmVmb3JlIHl1dlBpY3R1cmUgY2FsbGJhY2sgdG8gYmUgY2FsbGVkLgorICAgIC8vIFJlZ2lzdGVyIHRoZSBidWZmZXIgZm9yIHJhdyBpbWFnZSBoZXJlIHRvIHJlZHVjZSBsYXRlbmN5LgorICAgIGlmIChtU3VyZmFjZSAhPSAwICYmICFtVXNlT3ZlcmxheSkgeworICAgICAgICBpbnQgdywgaDsKKyAgICAgICAgQ2FtZXJhUGFyYW1ldGVycyBwYXJhbXMobUhhcmR3YXJlLT5nZXRQYXJhbWV0ZXJzKCkpOworICAgICAgICBpZiAoc2l6ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBwYXJhbXMuZ2V0UGljdHVyZVNpemUoJncsICZoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHcgPSBzaXplLT53aWR0aDsKKyAgICAgICAgICAgIGggPSBzaXplLT5oZWlnaHQ7CisgICAgICAgICAgICB3ICY9IH4xOworICAgICAgICAgICAgaCAmPSB+MTsKKyAgICAgICAgICAgIExPRzEoIlNuYXBzaG90IGltYWdlIHdpZHRoPSVkLCBoZWlnaHQ9JWQiLCB3LCBoKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogZG9uJ3QgdXNlIGhhcmRjb2RlZCBmb3JtYXQgY29uc3RhbnRzIGhlcmUKKyAgICAgICAgSVN1cmZhY2U6OkJ1ZmZlckhlYXAgYnVmZmVycyh3LCBoLCB3LCBoLAorICAgICAgICAgICAgSEFMX1BJWEVMX0ZPUk1BVF9ZQ3JDYl80MjBfU1AsIG1PcmllbnRhdGlvbiwgMCwKKyAgICAgICAgICAgIG1IYXJkd2FyZS0+Z2V0UmF3SGVhcCgpKTsKKworICAgICAgICBtU3VyZmFjZS0+cmVnaXN0ZXJCdWZmZXJzKGJ1ZmZlcnMpOworICAgICAgICBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5mbHVzaENvbW1hbmRzKCk7CisgICAgfQorCisgICAgbUxvY2sudW5sb2NrKCk7Cit9CisKKy8vIHByZXZpZXcgY2FsbGJhY2sgLSBmcmFtZSBidWZmZXIgdXBkYXRlCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlUHJldmlld0RhdGEoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSkgeworICAgIHNzaXplX3Qgb2Zmc2V0OworICAgIHNpemVfdCBzaXplOworICAgIHNwPElNZW1vcnlIZWFwPiBoZWFwID0gbWVtLT5nZXRNZW1vcnkoJm9mZnNldCwgJnNpemUpOworCisgICAgaWYgKCFtVXNlT3ZlcmxheSkgeworICAgICAgICBpZiAobVN1cmZhY2UgIT0gMCkgeworICAgICAgICAgICAgbVN1cmZhY2UtPnBvc3RCdWZmZXIob2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGxvY2FsIGNvcHkgb2YgdGhlIGNhbGxiYWNrIGZsYWdzCisgICAgaW50IGZsYWdzID0gbVByZXZpZXdDYWxsYmFja0ZsYWc7CisKKyAgICAvLyBpcyBjYWxsYmFjayBlbmFibGVkPworICAgIGlmICghKGZsYWdzICYgRlJBTUVfQ0FMTEJBQ0tfRkxBR19FTkFCTEVfTUFTSykpIHsKKyAgICAgICAgLy8gSWYgdGhlIGVuYWJsZSBiaXQgaXMgb2ZmLCB0aGUgY29weS1vdXQgYW5kIG9uZS1zaG90IGJpdHMgYXJlIGlnbm9yZWQKKyAgICAgICAgTE9HMigiZnJhbWUgY2FsbGJhY2sgaXMgZGlzYWJsZWQiKTsKKyAgICAgICAgbUxvY2sudW5sb2NrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBob2xkIGEgc3Ryb25nIHBvaW50ZXIgdG8gdGhlIGNsaWVudAorICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBtQ2FtZXJhQ2xpZW50OworCisgICAgLy8gY2xlYXIgY2FsbGJhY2sgZmxhZ3MgaWYgbm8gY2xpZW50IG9yIG9uZS1zaG90IG1vZGUKKyAgICBpZiAoYyA9PSAwIHx8IChtUHJldmlld0NhbGxiYWNrRmxhZyAmIEZSQU1FX0NBTExCQUNLX0ZMQUdfT05FX1NIT1RfTUFTSykpIHsKKyAgICAgICAgTE9HMigiRGlzYWJsZSBwcmV2aWV3IGNhbGxiYWNrIik7CisgICAgICAgIG1QcmV2aWV3Q2FsbGJhY2tGbGFnICY9IH4oRlJBTUVfQ0FMTEJBQ0tfRkxBR19PTkVfU0hPVF9NQVNLIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUkFNRV9DQUxMQkFDS19GTEFHX0NPUFlfT1VUX01BU0sgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX0NBTExCQUNLX0ZMQUdfRU5BQkxFX01BU0spOworICAgICAgICBpZiAobVVzZU92ZXJsYXkpIHsKKyAgICAgICAgICAgIGRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYyAhPSAwKSB7CisgICAgICAgIC8vIElzIHRoZSByZWNlaXZlZCBmcmFtZSBjb3BpZWQgb3V0IG9yIG5vdD8KKyAgICAgICAgaWYgKGZsYWdzICYgRlJBTUVfQ0FMTEJBQ0tfRkxBR19DT1BZX09VVF9NQVNLKSB7CisgICAgICAgICAgICBMT0cyKCJmcmFtZSBpcyBjb3BpZWQiKTsKKyAgICAgICAgICAgIGNvcHlGcmFtZUFuZFBvc3RDb3BpZWRGcmFtZShjLCBoZWFwLCBvZmZzZXQsIHNpemUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTE9HMigiZnJhbWUgaXMgZm9yd2FyZGVkIik7CisgICAgICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICAgICAgICAgIGMtPmRhdGFDYWxsYmFjayhDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUsIG1lbSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICB9Cit9CisKKy8vIHBpY3R1cmUgY2FsbGJhY2sgLSBwb3N0dmlldyBpbWFnZSByZWFkeQordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmhhbmRsZVBvc3R2aWV3KGNvbnN0IHNwPElNZW1vcnk+JiBtZW0pIHsKKyAgICBkaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1BPU1RWSUVXX0ZSQU1FKTsKKworICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBtQ2FtZXJhQ2xpZW50OworICAgIG1Mb2NrLnVubG9jaygpOworICAgIGlmIChjICE9IDApIHsKKyAgICAgICAgYy0+ZGF0YUNhbGxiYWNrKENBTUVSQV9NU0dfUE9TVFZJRVdfRlJBTUUsIG1lbSk7CisgICAgfQorfQorCisvLyBwaWN0dXJlIGNhbGxiYWNrIC0gcmF3IGltYWdlIHJlYWR5Cit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlUmF3UGljdHVyZShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKSB7CisgICAgZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19SQVdfSU1BR0UpOworCisgICAgc3NpemVfdCBvZmZzZXQ7CisgICAgc2l6ZV90IHNpemU7CisgICAgc3A8SU1lbW9yeUhlYXA+IGhlYXAgPSBtZW0tPmdldE1lbW9yeSgmb2Zmc2V0LCAmc2l6ZSk7CisKKyAgICAvLyBQdXQgdGhlIFlVViB2ZXJzaW9uIG9mIHRoZSBzbmFwc2hvdCBpbiB0aGUgcHJldmlldyBkaXNwbGF5LgorICAgIGlmIChtU3VyZmFjZSAhPSAwICYmICFtVXNlT3ZlcmxheSkgeworICAgICAgICBtU3VyZmFjZS0+cG9zdEJ1ZmZlcihvZmZzZXQpOworICAgIH0KKworICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBtQ2FtZXJhQ2xpZW50OworICAgIG1Mb2NrLnVubG9jaygpOworICAgIGlmIChjICE9IDApIHsKKyAgICAgICAgYy0+ZGF0YUNhbGxiYWNrKENBTUVSQV9NU0dfUkFXX0lNQUdFLCBtZW0pOworICAgIH0KK30KKworLy8gcGljdHVyZSBjYWxsYmFjayAtIGNvbXByZXNzZWQgcGljdHVyZSByZWFkeQordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmhhbmRsZUNvbXByZXNzZWRQaWN0dXJlKGNvbnN0IHNwPElNZW1vcnk+JiBtZW0pIHsKKyAgICBkaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0UpOworCisgICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7CisgICAgbUxvY2sudW5sb2NrKCk7CisgICAgaWYgKGMgIT0gMCkgeworICAgICAgICBjLT5kYXRhQ2FsbGJhY2soQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFLCBtZW0pOworICAgIH0KK30KKworCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlR2VuZXJpY05vdGlmeShpbnQzMl90IG1zZ1R5cGUsCisgICAgaW50MzJfdCBleHQxLCBpbnQzMl90IGV4dDIpIHsKKyAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gbUNhbWVyYUNsaWVudDsKKyAgICBtTG9jay51bmxvY2soKTsKKyAgICBpZiAoYyAhPSAwKSB7CisgICAgICAgIGMtPm5vdGlmeUNhbGxiYWNrKG1zZ1R5cGUsIGV4dDEsIGV4dDIpOworICAgIH0KK30KKwordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmhhbmRsZUdlbmVyaWNEYXRhKGludDMyX3QgbXNnVHlwZSwKKyAgICBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0cikgeworICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBtQ2FtZXJhQ2xpZW50OworICAgIG1Mb2NrLnVubG9jaygpOworICAgIGlmIChjICE9IDApIHsKKyAgICAgICAgYy0+ZGF0YUNhbGxiYWNrKG1zZ1R5cGUsIGRhdGFQdHIpOworICAgIH0KK30KKwordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmhhbmRsZUdlbmVyaWNEYXRhVGltZXN0YW1wKG5zZWNzX3QgdGltZXN0YW1wLAorICAgIGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIpIHsKKyAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gbUNhbWVyYUNsaWVudDsKKyAgICBtTG9jay51bmxvY2soKTsKKyAgICBpZiAoYyAhPSAwKSB7CisgICAgICAgIGMtPmRhdGFDYWxsYmFja1RpbWVzdGFtcCh0aW1lc3RhbXAsIG1zZ1R5cGUsIGRhdGFQdHIpOworICAgIH0KK30KKwordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNvcHlGcmFtZUFuZFBvc3RDb3BpZWRGcmFtZSgKKyAgICAgICAgY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNsaWVudCwgY29uc3Qgc3A8SU1lbW9yeUhlYXA+JiBoZWFwLAorICAgICAgICBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkgeworICAgIExPRzIoImNvcHlGcmFtZUFuZFBvc3RDb3BpZWRGcmFtZSIpOwogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjb3B5IG91dCBvZiBwbWVtIGJlZm9yZSBzZW5kaW5nIHRoaXMgdG8KICAgICAvLyB0aGUgY2FsbGJhY2suIEZvciBlZmZpY2llbmN5LCByZXVzZSB0aGUgc2FtZSBNZW1vcnlIZWFwQmFzZQogICAgIC8vIHByb3ZpZGVkIGl0J3MgYmlnIGVub3VnaC4gRG9uJ3QgYWxsb2NhdGUgdGhlIG1lbW9yeSBvcgogICAgIC8vIHBlcmZvcm0gdGhlIGNvcHkgaWYgdGhlcmUncyBubyBjYWxsYmFjay4KLQogICAgIC8vIGhvbGQgdGhlIHByZXZpZXcgbG9jayB3aGlsZSB3ZSBncmFiIGEgcmVmZXJlbmNlIHRvIHRoZSBwcmV2aWV3IGJ1ZmZlcgogICAgIHNwPE1lbW9yeUhlYXBCYXNlPiBwcmV2aWV3QnVmZmVyOwotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobVByZXZpZXdMb2NrKTsKLSAgICAgICAgaWYgKG1QcmV2aWV3QnVmZmVyID09IDApIHsKLSAgICAgICAgICAgIG1QcmV2aWV3QnVmZmVyID0gbmV3IE1lbW9yeUhlYXBCYXNlKHNpemUsIDAsIE5VTEwpOwotICAgICAgICB9IGVsc2UgaWYgKHNpemUgPiBtUHJldmlld0J1ZmZlci0+dmlydHVhbFNpemUoKSkgewotICAgICAgICAgICAgbVByZXZpZXdCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIG1QcmV2aWV3QnVmZmVyID0gbmV3IE1lbW9yeUhlYXBCYXNlKHNpemUsIDAsIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtUHJldmlld0J1ZmZlciA9PSAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHByZXZpZXcgYnVmZmVyIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcHJldmlld0J1ZmZlciA9IG1QcmV2aWV3QnVmZmVyOworCisgICAgaWYgKG1QcmV2aWV3QnVmZmVyID09IDApIHsKKyAgICAgICAgbVByZXZpZXdCdWZmZXIgPSBuZXcgTWVtb3J5SGVhcEJhc2Uoc2l6ZSwgMCwgTlVMTCk7CisgICAgfSBlbHNlIGlmIChzaXplID4gbVByZXZpZXdCdWZmZXItPnZpcnR1YWxTaXplKCkpIHsKKyAgICAgICAgbVByZXZpZXdCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgbVByZXZpZXdCdWZmZXIgPSBuZXcgTWVtb3J5SGVhcEJhc2Uoc2l6ZSwgMCwgTlVMTCk7CiAgICAgfQotICAgIG1lbWNweShwcmV2aWV3QnVmZmVyLT5iYXNlKCksCi0gICAgICAgICAgICh1aW50OF90ICopaGVhcC0+YmFzZSgpICsgb2Zmc2V0LCBzaXplKTsKKyAgICBpZiAobVByZXZpZXdCdWZmZXIgPT0gMCkgeworICAgICAgICBMT0dFKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHByZXZpZXcgYnVmZmVyIik7CisgICAgICAgIG1Mb2NrLnVubG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHByZXZpZXdCdWZmZXIgPSBtUHJldmlld0J1ZmZlcjsKKworICAgIG1lbWNweShwcmV2aWV3QnVmZmVyLT5iYXNlKCksICh1aW50OF90ICopaGVhcC0+YmFzZSgpICsgb2Zmc2V0LCBzaXplKTsKIAogICAgIHNwPE1lbW9yeUJhc2U+IGZyYW1lID0gbmV3IE1lbW9yeUJhc2UocHJldmlld0J1ZmZlciwgMCwgc2l6ZSk7CiAgICAgaWYgKGZyYW1lID09IDApIHsKICAgICAgICAgTE9HRSgiZmFpbGVkIHRvIGFsbG9jYXRlIHNwYWNlIGZvciBmcmFtZSBjYWxsYmFjayIpOworICAgICAgICBtTG9jay51bmxvY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIG1Mb2NrLnVubG9jaygpOwogICAgIGNsaWVudC0+ZGF0YUNhbGxiYWNrKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSwgZnJhbWUpOwogfQogCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIHN0YXRpYyBjb25zdCBpbnQga0R1bXBMb2NrUmV0cmllcyA9IDUwOwogc3RhdGljIGNvbnN0IGludCBrRHVtcExvY2tTbGVlcCA9IDYwMDAwOwogCkBAIC0xMzA4LDggKzEyMTQsNyBAQAogICAgIHJldHVybiBsb2NrZWQ7CiB9CiAKLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OmR1bXAoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKQoteworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6ZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpIHsKICAgICBzdGF0aWMgY29uc3QgY2hhcioga0RlYWRsb2NrZWRTdHJpbmcgPSAiQ2FtZXJhU2VydmljZSBtYXkgYmUgZGVhZGxvY2tlZFxuIjsKIAogICAgIGNvbnN0IHNpemVfdCBTSVpFID0gMjU2OwpAQCAtMTMxOSw3ICsxMjI0LDcgQEAKICAgICAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiUGVybWlzc2lvbiBEZW5pYWw6ICIKICAgICAgICAgICAgICAgICAiY2FuJ3QgZHVtcCBDYW1lcmFTZXJ2aWNlIGZyb20gcGlkPSVkLCB1aWQ9JWRcbiIsCiAgICAgICAgICAgICAgICAgZ2V0Q2FsbGluZ1BpZCgpLAotICAgICAgICAgICAgICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmdldENhbGxpbmdVaWQoKSk7CisgICAgICAgICAgICAgICAgZ2V0Q2FsbGluZ1VpZCgpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwogICAgICAgICB3cml0ZShmZCwgcmVzdWx0LnN0cmluZygpLCByZXN1bHQuc2l6ZSgpKTsKICAgICB9IGVsc2UgewpAQCAtMTMzMCw4OSArMTIzNSwzOSBAQAogICAgICAgICAgICAgd3JpdGUoZmQsIHJlc3VsdC5zdHJpbmcoKSwgcmVzdWx0LnNpemUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobUNsaWVudCAhPSAwKSB7Ci0gICAgICAgICAgICBzcDxDbGllbnQ+IGN1cnJlbnRDbGllbnQgPSBtQ2xpZW50LnByb21vdGUoKTsKLSAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiQ2xpZW50ICglcCkgUElEOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudENsaWVudC0+Z2V0Q2FtZXJhQ2xpZW50KCktPmFzQmluZGVyKCkuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDbGllbnQtPm1DbGllbnRQaWQpOworICAgICAgICBib29sIGhhc0NsaWVudCA9IGZhbHNlOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1iZXJPZkNhbWVyYXM7IGkrKykgeworICAgICAgICAgICAgc3A8Q2xpZW50PiBjbGllbnQgPSBtQ2xpZW50W2ldLnByb21vdGUoKTsKKyAgICAgICAgICAgIGlmIChjbGllbnQgPT0gMCkgY29udGludWU7CisgICAgICAgICAgICBoYXNDbGllbnQgPSB0cnVlOworICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICJDbGllbnRbJWRdICglcCkgUElEOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgaSwKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5nZXRDYW1lcmFDbGllbnQoKS0+YXNCaW5kZXIoKS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5tQ2xpZW50UGlkKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgICAgIHdyaXRlKGZkLCByZXN1bHQuc3RyaW5nKCksIHJlc3VsdC5zaXplKCkpOwotICAgICAgICAgICAgY3VycmVudENsaWVudC0+bUhhcmR3YXJlLT5kdW1wKGZkLCBhcmdzKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNsaWVudC0+bUhhcmR3YXJlLT5kdW1wKGZkLCBhcmdzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWhhc0NsaWVudCkgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiTm8gY2FtZXJhIGNsaWVudCB5ZXQuXG4iKTsKICAgICAgICAgICAgIHdyaXRlKGZkLCByZXN1bHQuc3RyaW5nKCksIHJlc3VsdC5zaXplKCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGxvY2tlZCkgbVNlcnZpY2VMb2NrLnVubG9jaygpOworCisgICAgICAgIC8vIGNoYW5nZSBsb2dnaW5nIGxldmVsCisgICAgICAgIGludCBuID0gYXJncy5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpICsgMSA8IG47IGkrKykgeworICAgICAgICAgICAgaWYgKGFyZ3NbaV0gPT0gU3RyaW5nMTYoIi12IikpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmc4IGxldmVsU3RyKGFyZ3NbaSsxXSk7CisgICAgICAgICAgICAgICAgaW50IGxldmVsID0gYXRvaShsZXZlbFN0ci5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICJTZXQgTG9nIExldmVsIHRvICVkIiwgbGV2ZWwpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBzZXRMb2dMZXZlbChsZXZlbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCi0KLXN0YXR1c190IENhbWVyYVNlcnZpY2U6Om9uVHJhbnNhY3QoCi0gICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncykKLXsKLSAgICAvLyBwZXJtaXNzaW9uIGNoZWNrcy4uLgotICAgIHN3aXRjaCAoY29kZSkgewotICAgICAgICBjYXNlIEJuQ2FtZXJhU2VydmljZTo6Q09OTkVDVDoKLSAgICAgICAgICAgIElQQ1RocmVhZFN0YXRlKiBpcGMgPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpOwotICAgICAgICAgICAgY29uc3QgaW50IHBpZCA9IGlwYy0+Z2V0Q2FsbGluZ1BpZCgpOwotICAgICAgICAgICAgY29uc3QgaW50IHNlbGZfcGlkID0gZ2V0cGlkKCk7Ci0gICAgICAgICAgICBpZiAocGlkICE9IHNlbGZfcGlkKSB7Ci0gICAgICAgICAgICAgICAgLy8gd2UncmUgY2FsbGVkIGZyb20gYSBkaWZmZXJlbnQgcHJvY2VzcywgZG8gdGhlIHJlYWwgY2hlY2sKLSAgICAgICAgICAgICAgICBpZiAoIWNoZWNrQ2FsbGluZ1Blcm1pc3Npb24oCi0gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcxNigiYW5kcm9pZC5wZXJtaXNzaW9uLkNBTUVSQSIpKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCB1aWQgPSBpcGMtPmdldENhbGxpbmdVaWQoKTsKLSAgICAgICAgICAgICAgICAgICAgTE9HRSgiUGVybWlzc2lvbiBEZW5pYWw6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIHRoZSBjYW1lcmEgcGlkPSVkLCB1aWQ9JWQiLCBwaWQsIHVpZCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBQRVJNSVNTSU9OX0RFTklFRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzdGF0dXNfdCBlcnIgPSBCbkNhbWVyYVNlcnZpY2U6Om9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKLQotI2lmIERFQlVHX0hFQVBfTEVBS1MKLSAgICBMT0dWKCIrKysgb25UcmFuc2FjdCBlcnIgJWQgY29kZSAlZCIsIGVyciwgY29kZSk7Ci0KLSAgICBpZiAoZXJyID09IFVOS05PV05fVFJBTlNBQ1RJT04gfHwgZXJyID09IFBFUk1JU1NJT05fREVOSUVEKSB7Ci0gICAgICAgIC8vIHRoZSAnc2VydmljZScgY29tbWFuZCBpbnRlcnJvZ2F0ZXMgdGhpcyBiaW5kZXIgZm9yIGl0cyBuYW1lLCBhbmQgdGhlbiBzdXBwbGllcyBpdAotICAgICAgICAvLyBldmVuIGZvciB0aGUgZGVidWdnaW5nIGNvbW1hbmRzLiAgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGNoZWNrIGZvciBpdCBoZXJlLCB1c2luZwotICAgICAgICAvLyBJU3VyZmFjZUNvbXBvc2VyIChzaW5jZSB3ZSBkZWxlZ2F0ZWQgdGhlIElOVEVSRkFDRV9UUkFOU0FDVElPTiBoYW5kbGluZyB0bwotICAgICAgICAvLyBCblN1cmZhY2VDb21wb3NlciBiZWZvcmUgZmFsbGluZyB0aHJvdWdoIHRvIHRoaXMgY29kZSkuCi0KLSAgICAgICAgTE9HVigiKysrIG9uVHJhbnNhY3QgY29kZSAlZCIsIGNvZGUpOwotCi0gICAgICAgIENIRUNLX0lOVEVSRkFDRShJQ2FtZXJhU2VydmljZSwgZGF0YSwgcmVwbHkpOwotCi0gICAgICAgIHN3aXRjaChjb2RlKSB7Ci0gICAgICAgIGNhc2UgMTAwMDoKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGdXZWFrSGVhcCAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgc3A8SU1lbW9yeUhlYXA+IGggPSBnV2Vha0hlYXAucHJvbW90ZSgpOwotICAgICAgICAgICAgICAgIElNZW1vcnlIZWFwICpwID0gZ1dlYWtIZWFwLnVuc2FmZV9nZXQoKTsKLSAgICAgICAgICAgICAgICBMT0dWKCJDSEVDS0lORyBXRUFLIFJFRkVSRU5DRSAlcCAoJXApIiwgaC5nZXQoKSwgcCk7Ci0gICAgICAgICAgICAgICAgaWYgKGggIT0gMCkKLSAgICAgICAgICAgICAgICAgICAgaC0+cHJpbnRSZWZzKCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBhdHRlbXB0X3RvX2RlbGV0ZSA9IGRhdGEucmVhZEludDMyKCkgPT0gMTsKLSAgICAgICAgICAgICAgICBpZiAoYXR0ZW1wdF90b19kZWxldGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTk9UIFNBRkUhCi0gICAgICAgICAgICAgICAgICAgIExPR1YoIkRFTEVUSU5HIFdFQUsgUkVGRVJFTkNFICVwICglcCkiLCBoLmdldCgpLCBwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHApIGRlbGV0ZSBwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZiAvLyBERUJVR19IRUFQX0xFQUtTCi0KLSAgICByZXR1cm4gZXJyOwotfQotCiB9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhU2VydmljZS5oIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhU2VydmljZS5oCmluZGV4IGJjNDliMWQuLjgxOTNlNzcgMTAwNjQ0Ci0tLSBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYVNlcnZpY2UuaAorKysgYi9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFTZXJ2aWNlLmgKQEAgLTIxLDIwNyArMjEsMTc0IEBACiAKICNpbmNsdWRlIDxjYW1lcmEvSUNhbWVyYVNlcnZpY2UuaD4KICNpbmNsdWRlIDxjYW1lcmEvQ2FtZXJhSGFyZHdhcmVJbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxjYW1lcmEvQ2FtZXJhLmg+CisKKy8qIFRoaXMgbmVlZHMgdG8gYmUgaW5jcmVhc2VkIGlmIHdlIGNhbiBoYXZlIG1vcmUgY2FtZXJhcyAqLworI2RlZmluZSBNQVhfQ0FNRVJBUyAyCiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogY2xhc3MgTWVtb3J5SGVhcEJhc2U7CiBjbGFzcyBNZWRpYVBsYXllcjsKIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jZGVmaW5lIExJS0VMWSggZXhwICkgICAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIHRydWUgICkpCi0jZGVmaW5lIFVOTElLRUxZKCBleHAgKSAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIGZhbHNlICkpCi0KLS8vIFdoZW4gZW5hYmxlZCwgdGhpcyBmZWF0dXJlIGFsbG93cyB5b3UgdG8gc2VuZCBhbiBldmVudCB0byB0aGUgQ2FtZXJhU2VydmljZQotLy8gc28gdGhhdCB5b3UgY2FuIGNhdXNlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBoZWFwIG9iamVjdCBnV2Vha0hlYXAsIGRlZmluZWQKLS8vIGJlbG93LCB0byBiZSBwcmludGVkLiBZb3Ugd2lsbCBhbHNvIG5lZWQgdG8gc2V0IERFQlVHX1JFRlM9MSBhbmQKLS8vIERFQlVHX1JFRlNfRU5BQkxFRF9CWV9ERUZBVUxUPTAgaW4gbGlidXRpbHMvUmVmQmFzZS5jcHAuIFlvdSBqdXN0IGhhdmUgdG8KLS8vIHNldCBnV2Vha0hlYXAgdG8gdGhlIGFwcHJvcHJpYXRlIGhlYXAgeW91IHdhbnQgdG8gdHJhY2suCi0KLSNkZWZpbmUgREVCVUdfSEVBUF9MRUFLUyAwCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgQ2FtZXJhU2VydmljZSA6IHB1YmxpYyBCbkNhbWVyYVNlcnZpY2UKK2NsYXNzIENhbWVyYVNlcnZpY2U6IHB1YmxpYyBCbkNhbWVyYVNlcnZpY2UKIHsKICAgICBjbGFzcyBDbGllbnQ7Ci0KIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBpbnN0YW50aWF0ZSgpOworICAgIHN0YXRpYyB2b2lkICAgICAgICAgaW5zdGFudGlhdGUoKTsKIAotICAgIC8vIElDYW1lcmFTZXJ2aWNlIGludGVyZmFjZQotICAgIHZpcnR1YWwgc3A8SUNhbWVyYT4gICAgIGNvbm5lY3QoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDYW1lcmFTZXJ2aWNlKCk7CisgICAgdmlydHVhbCAgICAgICAgICAgICB+Q2FtZXJhU2VydmljZSgpOwogCi0gICAgdmlydHVhbCBzdGF0dXNfdCAgICAgICAgZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpOworICAgIHZpcnR1YWwgaW50MzJfdCAgICAgZ2V0TnVtYmVyT2ZDYW1lcmFzKCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBnZXRDYW1lcmFJbmZvKGludCBjYW1lcmFJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IENhbWVyYUluZm8qIGNhbWVyYUluZm8pOworICAgIHZpcnR1YWwgc3A8SUNhbWVyYT4gY29ubmVjdChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50LCBpbnQgY2FtZXJhSWQpOworICAgIHZpcnR1YWwgdm9pZCAgICAgICAgcmVtb3ZlQ2xpZW50KGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjYW1lcmFDbGllbnQpOworICAgIHZpcnR1YWwgc3A8Q2xpZW50PiAgZ2V0Q2xpZW50QnlJZChpbnQgY2FtZXJhSWQpOwogCi0gICAgICAgICAgICB2b2lkICAgICAgICAgICAgcmVtb3ZlQ2xpZW50KGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjYW1lcmFDbGllbnQpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgb25UcmFuc2FjdCh1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKTsKIAotICAgIHZpcnR1YWwgc3RhdHVzX3Qgb25UcmFuc2FjdCgKLSAgICAgICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncyk7CisgICAgZW51bSBzb3VuZF9raW5kIHsKKyAgICAgICAgU09VTkRfU0hVVFRFUiA9IDAsCisgICAgICAgIFNPVU5EX1JFQ09SRElORyA9IDEsCisgICAgICAgIE5VTV9TT1VORFMKKyAgICB9OworCisgICAgdm9pZCAgICAgICAgICAgICAgICBsb2FkU291bmQoKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgIHBsYXlTb3VuZChzb3VuZF9raW5kIGtpbmQpOworICAgIHZvaWQgICAgICAgICAgICAgICAgcmVsZWFzZVNvdW5kKCk7CiAKIHByaXZhdGU6CisgICAgTXV0ZXggICAgICAgICAgICAgICBtU2VydmljZUxvY2s7CisgICAgd3A8Q2xpZW50PiAgICAgICAgICBtQ2xpZW50W01BWF9DQU1FUkFTXTsgIC8vIHByb3RlY3RlZCBieSBtU2VydmljZUxvY2sKKyAgICBpbnQgICAgICAgICAgICAgICAgIG1OdW1iZXJPZkNhbWVyYXM7CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBhdG9taWNzIHRvIHJlY29yZCB3aGV0aGVyIHRoZSBoYXJkd2FyZSBpcyBhbGxvY2F0ZWQgdG8gc29tZSBjbGllbnQuCisgICAgdm9sYXRpbGUgaW50MzJfdCAgICBtQnVzeVtNQVhfQ0FNRVJBU107CisgICAgdm9pZCAgICAgICAgICAgICAgICBzZXRDYW1lcmFCdXN5KGludCBjYW1lcmFJZCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICBzZXRDYW1lcmFGcmVlKGludCBjYW1lcmFJZCk7CiAKLSAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgQm5DYW1lcmEgeworICAgIC8vIHNvdW5kcworICAgIE11dGV4ICAgICAgICAgICAgICAgbVNvdW5kTG9jazsKKyAgICBzcDxNZWRpYVBsYXllcj4gICAgIG1Tb3VuZFBsYXllcltOVU1fU09VTkRTXTsKKyAgICBpbnQgICAgICAgICAgICAgICAgIG1Tb3VuZFJlZjsgIC8vIHJlZmVyZW5jZSBjb3VudCAocmVsZWFzZSBhbGwgTWVkaWFQbGF5ZXIgd2hlbiAwKQogCisgICAgY2xhc3MgQ2xpZW50IDogcHVibGljIEJuQ2FtZXJhCisgICAgewogICAgIHB1YmxpYzoKKyAgICAgICAgLy8gSUNhbWVyYSBpbnRlcmZhY2UgKHNlZSBJQ2FtZXJhIGZvciBkZXRhaWxzKQogICAgICAgICB2aXJ0dWFsIHZvaWQgICAgICAgICAgICBkaXNjb25uZWN0KCk7Ci0KLSAgICAgICAgLy8gY29ubmVjdCBuZXcgY2xpZW50IHdpdGggZXhpc3RpbmcgY2FtZXJhIHJlbW90ZQogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBjb25uZWN0KGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjbGllbnQpOwotCi0gICAgICAgIC8vIHByZXZlbnQgb3RoZXIgcHJvY2Vzc2VzIGZyb20gdXNpbmcgdGhpcyBJQ2FtZXJhIGludGVyZmFjZQogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBsb2NrKCk7Ci0KLSAgICAgICAgLy8gYWxsb3cgb3RoZXIgcHJvY2Vzc2VzIHRvIHVzZSB0aGlzIElDYW1lcmEgaW50ZXJmYWNlCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIHVubG9jaygpOwotCi0gICAgICAgIC8vIHBhc3MgdGhlIGJ1ZmZlcmVkIElTdXJmYWNlIHRvIHRoZSBjYW1lcmEgc2VydmljZQogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBzZXRQcmV2aWV3RGlzcGxheShjb25zdCBzcDxJU3VyZmFjZT4mIHN1cmZhY2UpOwotCi0gICAgICAgIC8vIHNldCB0aGUgcHJldmlldyBjYWxsYmFjayBmbGFnIHRvIGFmZmVjdCBob3cgdGhlIHJlY2VpdmVkIGZyYW1lcyBmcm9tCi0gICAgICAgIC8vIHByZXZpZXcgYXJlIGhhbmRsZWQuCi0gICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgIHNldFByZXZpZXdDYWxsYmFja0ZsYWcoaW50IGNhbGxiYWNrX2ZsYWcpOwotCi0gICAgICAgIC8vIHN0YXJ0IHByZXZpZXcgbW9kZSwgbXVzdCBjYWxsIHNldFByZXZpZXdEaXNwbGF5IGZpcnN0CisgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgIHNldFByZXZpZXdDYWxsYmFja0ZsYWcoaW50IGZsYWcpOwogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBzdGFydFByZXZpZXcoKTsKLQotICAgICAgICAvLyBzdG9wIHByZXZpZXcgbW9kZQogICAgICAgICB2aXJ0dWFsIHZvaWQgICAgICAgICAgICBzdG9wUHJldmlldygpOwotCi0gICAgICAgIC8vIGdldCBwcmV2aWV3IHN0YXRlCiAgICAgICAgIHZpcnR1YWwgYm9vbCAgICAgICAgICAgIHByZXZpZXdFbmFibGVkKCk7Ci0KLSAgICAgICAgLy8gc3RhcnQgcmVjb3JkaW5nIG1vZGUKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICAgICAgc3RhcnRSZWNvcmRpbmcoKTsKLQotICAgICAgICAvLyBzdG9wIHJlY29yZGluZyBtb2RlCiAgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgIHN0b3BSZWNvcmRpbmcoKTsKLQotICAgICAgICAvLyBnZXQgcmVjb3JkaW5nIHN0YXRlCiAgICAgICAgIHZpcnR1YWwgYm9vbCAgICAgICAgICAgIHJlY29yZGluZ0VuYWJsZWQoKTsKLQotICAgICAgICAvLyByZWxlYXNlIGEgcmVjb3JkaW5nIGZyYW1lCiAgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgIHJlbGVhc2VSZWNvcmRpbmdGcmFtZShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKTsKLQotICAgICAgICAvLyBhdXRvIGZvY3VzCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIGF1dG9Gb2N1cygpOwotCi0gICAgICAgIC8vIGNhbmNlbCBhdXRvIGZvY3VzCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIGNhbmNlbEF1dG9Gb2N1cygpOwotCi0gICAgICAgIC8vIHRha2UgYSBwaWN0dXJlIC0gcmV0dXJucyBhbiBJTWVtb3J5IChyZWYtY291bnRlZCBtbWFwKQogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICB0YWtlUGljdHVyZSgpOwotCi0gICAgICAgIC8vIHNldCBwcmV2aWV3L2NhcHR1cmUgcGFyYW1ldGVycyAtIGtleS92YWx1ZSBwYWlycwogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBzZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIHBhcmFtcyk7Ci0KLSAgICAgICAgLy8gZ2V0IHByZXZpZXcvY2FwdHVyZSBwYXJhbWV0ZXJzIC0ga2V5L3ZhbHVlIHBhaXJzCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nOCAgICAgICAgIGdldFBhcmFtZXRlcnMoKSBjb25zdDsKLQotICAgICAgICAvLyBzZW5kIGNvbW1hbmQgdG8gY2FtZXJhIGRyaXZlcgogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBzZW5kQ29tbWFuZChpbnQzMl90IGNtZCwgaW50MzJfdCBhcmcxLCBpbnQzMl90IGFyZzIpOwotCi0gICAgICAgIC8vIG91ciBjbGllbnQuLi4KLSAgICAgICAgY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mICAgIGdldENhbWVyYUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1DYW1lcmFDbGllbnQ7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYW1lcmFTZXJ2aWNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGllbnQoY29uc3Qgc3A8Q2FtZXJhU2VydmljZT4mIGNhbWVyYVNlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBjbGllbnRQaWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGllbnQoKTsKLSAgICAgICAgdmlydHVhbCAgICAgICAgICAgICAgICAgfkNsaWVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjYW1lcmFJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGllbnRQaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+Q2xpZW50KCk7CiAKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgICAgY2hlY2tQaWQoKTsKKyAgICAgICAgLy8gcmV0dXJuIG91ciBjYW1lcmEgY2xpZW50CisgICAgICAgIGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiAgICBnZXRDYW1lcmFDbGllbnQoKSB7IHJldHVybiBtQ2FtZXJhQ2xpZW50OyB9CiAKLSAgICAgICAgc3RhdGljICAgICAgdm9pZCAgICAgICAgbm90aWZ5Q2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLCBpbnQzMl90IGV4dDEsIGludDMyX3QgZXh0Miwgdm9pZCogdXNlcik7Ci0gICAgICAgIHN0YXRpYyAgICAgIHZvaWQgICAgICAgIGRhdGFDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhUHRyLCB2b2lkKiB1c2VyKTsKLSAgICAgICAgc3RhdGljICAgICAgdm9pZCAgICAgICAgZGF0YUNhbGxiYWNrVGltZXN0YW1wKG5zZWNzX3QgdGltZXN0YW1wLCBpbnQzMl90IG1zZ1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0ciwgdm9pZCogdXNlcik7CisgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgdGhlIGNhbGxpbmcgcHJvY2VzcyBtYXRjaGVzIG1DbGllbnRQaWQuCisgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIGNoZWNrUGlkKCkgY29uc3Q7CisgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIGNoZWNrUGlkQW5kSGFyZHdhcmUoKSBjb25zdDsgIC8vIGFsc28gY2hlY2sgbUhhcmR3YXJlICE9IDAKIAotICAgICAgICBzdGF0aWMgICAgICBzcDxDbGllbnQ+ICBnZXRDbGllbnRGcm9tQ29va2llKHZvaWQqIHVzZXIpOwotCi0gICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIGhhbmRsZVByZXZpZXdEYXRhKGNvbnN0IHNwPElNZW1vcnk+Jik7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIGhhbmRsZVNodXR0ZXIoaW1hZ2VfcmVjdF90eXBlICppbWFnZSk7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIGhhbmRsZVBvc3R2aWV3KGNvbnN0IHNwPElNZW1vcnk+Jik7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIGhhbmRsZVJhd1BpY3R1cmUoY29uc3Qgc3A8SU1lbW9yeT4mKTsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgaGFuZGxlQ29tcHJlc3NlZFBpY3R1cmUoY29uc3Qgc3A8SU1lbW9yeT4mKTsKLQotICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBjb3B5RnJhbWVBbmRQb3N0Q29waWVkRnJhbWUoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnlIZWFwPiYgaGVhcCwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpOworICAgICAgICAvLyB0aGVzZSBhcmUgaW50ZXJuYWwgZnVuY3Rpb25zIHVzZWQgdG8gc2V0IHVwIHByZXZpZXcgYnVmZmVycworICAgICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICByZWdpc3RlclByZXZpZXdCdWZmZXJzKCk7CisgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIHNldE92ZXJsYXkoKTsKIAogICAgICAgICAvLyBjYW1lcmEgb3BlcmF0aW9uIG1vZGUKICAgICAgICAgZW51bSBjYW1lcmFfbW9kZSB7CiAgICAgICAgICAgICBDQU1FUkFfUFJFVklFV19NT0RFICAgPSAwLCAgLy8gZnJhbWUgYXV0b21hdGljYWxseSByZWxlYXNlZAogICAgICAgICAgICAgQ0FNRVJBX1JFQ09SRElOR19NT0RFID0gMSwgIC8vIGZyYW1lIGhhcyB0byBiZSBleHBsaWNpdGx5IHJlbGVhc2VkIGJ5IHJlbGVhc2VSZWNvcmRpbmdGcmFtZSgpCiAgICAgICAgIH07CisgICAgICAgIC8vIHRoZXNlIGFyZSBpbnRlcm5hbCBmdW5jdGlvbnMgdXNlZCBmb3IgcHJldmlldy9yZWNvcmRpbmcKICAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgc3RhcnRDYW1lcmFNb2RlKGNhbWVyYV9tb2RlIG1vZGUpOwogICAgICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICBzdGFydFByZXZpZXdNb2RlKCk7CiAgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIHN0YXJ0UmVjb3JkaW5nTW9kZSgpOwotICAgICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICBzZXRPdmVybGF5KCk7Ci0gICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIHJlZ2lzdGVyUHJldmlld0J1ZmZlcnMoKTsKKworICAgICAgICAvLyB0aGVzZSBhcmUgc3RhdGljIGNhbGxiYWNrIGZ1bmN0aW9ucworICAgICAgICBzdGF0aWMgdm9pZCAgICAgICAgICAgICBub3RpZnlDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGludDMyX3QgZXh0MSwgaW50MzJfdCBleHQyLCB2b2lkKiB1c2VyKTsKKyAgICAgICAgc3RhdGljIHZvaWQgICAgICAgICAgICAgZGF0YUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIsIHZvaWQqIHVzZXIpOworICAgICAgICBzdGF0aWMgdm9pZCAgICAgICAgICAgICBkYXRhQ2FsbGJhY2tUaW1lc3RhbXAobnNlY3NfdCB0aW1lc3RhbXAsIGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIsIHZvaWQqIHVzZXIpOworICAgICAgICAvLyBjb252ZXJ0IGNsaWVudCBmcm9tIGNvb2tpZQorICAgICAgICBzdGF0aWMgc3A8Q2xpZW50PiAgICAgICBnZXRDbGllbnRGcm9tQ29va2llKHZvaWQqIHVzZXIpOworICAgICAgICAvLyBoYW5kbGVycyBmb3IgbWVzc2FnZXMKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2h1dHRlcihpbWFnZV9yZWN0X3R5cGUgKnNpemUpOworICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBoYW5kbGVQcmV2aWV3RGF0YShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKTsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgaGFuZGxlUG9zdHZpZXcoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSk7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGhhbmRsZVJhd1BpY3R1cmUoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSk7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbXByZXNzZWRQaWN0dXJlKGNvbnN0IHNwPElNZW1vcnk+JiBtZW0pOworICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZW5lcmljTm90aWZ5KGludDMyX3QgbXNnVHlwZSwgaW50MzJfdCBleHQxLCBpbnQzMl90IGV4dDIpOworICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZW5lcmljRGF0YShpbnQzMl90IG1zZ1R5cGUsIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhUHRyKTsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2VuZXJpY0RhdGFUaW1lc3RhbXAobnNlY3NfdCB0aW1lc3RhbXAsIGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIpOworCisgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGNvcHlGcmFtZUFuZFBvc3RDb3BpZWRGcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5SGVhcD4mIGhlYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSk7CisKKyAgICAgICAgLy8gdGhlc2UgYXJlIGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgc3A8Q2FtZXJhU2VydmljZT4gICAgICAgICAgICAgICBtQ2FtZXJhU2VydmljZTsgIC8vIGltbXV0YWJsZSBhZnRlciBjb25zdHJ1Y3RvcgorICAgICAgICBzcDxJQ2FtZXJhQ2xpZW50PiAgICAgICAgICAgICAgIG1DYW1lcmFDbGllbnQ7CisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhbWVyYUlkOyAgICAgICAvLyBpbW11dGFibGUgYWZ0ZXIgY29uc3RydWN0b3IKKyAgICAgICAgcGlkX3QgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2xpZW50UGlkOworICAgICAgICBzcDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gICAgIG1IYXJkd2FyZTsgICAgICAgLy8gY2xlYXJlZCBhZnRlciBkaXNjb25uZWN0KCkKKyAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlT3ZlcmxheTsgICAgIC8vIGltbXV0YWJsZSBhZnRlciBjb25zdHJ1Y3RvcgorICAgICAgICBzcDxPdmVybGF5UmVmPiAgICAgICAgICAgICAgICAgIG1PdmVybGF5UmVmOworICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1PdmVybGF5VzsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3ZlcmxheUg7CisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVByZXZpZXdDYWxsYmFja0ZsYWc7CisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU9yaWVudGF0aW9uOwogCiAgICAgICAgIC8vIEVuc3VyZXMgYXRvbWljaXR5IGFtb25nIHRoZSBwdWJsaWMgbWV0aG9kcwotICAgICAgICBtdXRhYmxlICAgICBNdXRleCAgICAgICAgICAgICAgICAgICAgICAgbUxvY2s7CisgICAgICAgIG11dGFibGUgTXV0ZXggICAgICAgICAgICAgICAgICAgbUxvY2s7CisgICAgICAgIHNwPElTdXJmYWNlPiAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2U7CiAKLSAgICAgICAgLy8gbVN1cmZhY2VMb2NrIHN5bmNocm9uaXplcyBhY2Nlc3MgdG8gbVN1cmZhY2UgYmV0d2VlbgotICAgICAgICAvLyBzZXRQcmV2aWV3U3VyZmFjZSgpIGFuZCBwb3N0UHJldmlld0ZyYW1lKCkuICBOb3RlIHRoYXQgYW1vbmcKLSAgICAgICAgLy8gdGhlIHB1YmxpYyBtZXRob2RzLCBhbGwgYWNjZXNzZXMgdG8gbVN1cmZhY2UgYXJlCi0gICAgICAgIC8vIHN5bmNyaG9uaXplZCBieSBtTG9jay4gIEhvd2V2ZXIsIHBvc3RQcmV2aWV3RnJhbWUoKSBpcyBjYWxsZWQKLSAgICAgICAgLy8gYnkgdGhlIENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlIGNhbGxiYWNrLCBhbmQgbmVlZHMgdG8KLSAgICAgICAgLy8gYWNjZXNzIG1TdXJmYWNlLiAgSXQgY2Fubm90IGhvbGQgbUxvY2ssIGhvd2V2ZXIsIGJlY2F1c2UKLSAgICAgICAgLy8gc3RvcFByZXZpZXcoKSBtYXkgYmUgaG9sZGluZyB0aGF0IGxvY2sgd2hpbGUgYXR0ZW1wdGluZwotICAgICAgICAvLyB0byBzdG9wIHByZXZpZXcsIGFuZCBzdG9wUHJldmlldyBpdHNlbGYgd2lsbCBibG9jayB3YWl0aW5nCi0gICAgICAgIC8vIGZvciBhIGNhbGxiYWNrIGZyb20gQ2FtZXJhSGFyZHdhcmVJbnRlcmZhY2UuICBJZiB0aGlzCi0gICAgICAgIC8vIGhhcHBlbnMsIGl0IHdpbGwgY2F1c2UgYSBkZWFkbG9jay4KLSAgICAgICAgbXV0YWJsZSAgICAgTXV0ZXggICAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlTG9jazsKLSAgICAgICAgbXV0YWJsZSAgICAgQ29uZGl0aW9uICAgICAgICAgICAgICAgICAgIG1SZWFkeTsKLSAgICAgICAgICAgICAgICAgICAgc3A8Q2FtZXJhU2VydmljZT4gICAgICAgICAgIG1DYW1lcmFTZXJ2aWNlOwotICAgICAgICAgICAgICAgICAgICBzcDxJU3VyZmFjZT4gICAgICAgICAgICAgICAgbVN1cmZhY2U7Ci0gICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBtUHJldmlld0NhbGxiYWNrRmxhZzsKLSAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1PcmllbnRhdGlvbjsKKyAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudCB1cyB0byByZXR1cm4gYSBjb3B5IG9mIHRoZSBwcmV2aWV3IGZyYW1lIChpbnN0ZWFkCisgICAgICAgIC8vIG9mIHRoZSBvcmlnaW5hbCBvbmUpLCB3ZSBhbGxvY2F0ZSBtUHJldmlld0J1ZmZlciBhbmQgcmV1c2UgaXQgaWYgcG9zc2libGUuCisgICAgICAgIHNwPE1lbW9yeUhlYXBCYXNlPiAgICAgICAgICAgICAgbVByZXZpZXdCdWZmZXI7CiAKLSAgICAgICAgICAgICAgICAgICAgc3A8TWVkaWFQbGF5ZXI+ICAgICAgICAgICAgIG1NZWRpYVBsYXllckNsaWNrOwotICAgICAgICAgICAgICAgICAgICBzcDxNZWRpYVBsYXllcj4gICAgICAgICAgICAgbU1lZGlhUGxheWVyQmVlcDsKKyAgICAgICAgLy8gV2UgbmVlZCB0byBhdm9pZCB0aGUgZGVhZGxvY2sgd2hlbiB0aGUgaW5jb21pbmcgY29tbWFuZCB0aHJlYWQgYW5kCisgICAgICAgIC8vIHRoZSBDYW1lcmFIYXJkd2FyZUludGVyZmFjZSBjYWxsYmFjayB0aHJlYWQgYm90aCB3YW50IHRvIGdyYWIgbUxvY2suCisgICAgICAgIC8vIEFuIGV4dHJhIGZsYWcgaXMgdXNlZCB0byB0ZWxsIHRoZSBjYWxsYmFjayB0aHJlYWQgdGhhdCBpdCBzaG91bGQgc3RvcAorICAgICAgICAvLyB0cnlpbmcgdG8gZGVsaXZlciB0aGUgY2FsbGJhY2sgbWVzc2FnZXMgaWYgdGhlIGNsaWVudCBpcyBub3QKKyAgICAgICAgLy8gaW50ZXJlc3RlZCBpbiBpdCBhbnltb3JlLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNsaWVudCBpcyBjYWxsaW5nCisgICAgICAgIC8vIHN0b3BQcmV2aWV3KCksIHRoZSBwcmV2aWV3IGZyYW1lIG1lc3NhZ2VzIGRvIG5vdCBuZWVkIHRvIGJlIGRlbGl2ZXJlZAorICAgICAgICAvLyBhbnltb3JlLgogCi0gICAgICAgICAgICAgICAgICAgIC8vIHRoZXNlIGFyZSBpbW11dGFibGUgb25jZSB0aGUgb2JqZWN0IGlzIGNyZWF0ZWQsCi0gICAgICAgICAgICAgICAgICAgIC8vIHRoZXkgZG9uJ3QgbmVlZCB0byBiZSBwcm90ZWN0ZWQgYnkgYSBsb2NrCi0gICAgICAgICAgICAgICAgICAgIHNwPElDYW1lcmFDbGllbnQ+ICAgICAgICAgICBtQ2FtZXJhQ2xpZW50OwotICAgICAgICAgICAgICAgICAgICBzcDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gbUhhcmR3YXJlOwotICAgICAgICAgICAgICAgICAgICBwaWRfdCAgICAgICAgICAgICAgICAgICAgICAgbUNsaWVudFBpZDsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VPdmVybGF5OworICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBzYW1lIHBhcmFtZXRlciBhcyB0aGUgZW5hYmxlTXNnVHlwZSgpIGFuZAorICAgICAgICAvLyBkaXNhYmxlTXNnVHlwZSgpIGZ1bmN0aW9ucyBpbiBDYW1lcmFIYXJkd2FyZUludGVyZmFjZS4KKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5hYmxlTXNnVHlwZShpbnQzMl90IG1zZ1R5cGUpOworICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBkaXNhYmxlTXNnVHlwZShpbnQzMl90IG1zZ1R5cGUpOworICAgICAgICB2b2xhdGlsZSBpbnQzMl90ICAgICAgICBtTXNnRW5hYmxlZDsKIAotICAgICAgICAgICAgICAgICAgICBzcDxPdmVybGF5UmVmPiAgICAgICAgICAgICAgbU92ZXJsYXlSZWY7Ci0gICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBtT3ZlcmxheVc7Ci0gICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBtT3ZlcmxheUg7Ci0KLSAgICAgICAgbXV0YWJsZSAgICAgTXV0ZXggICAgICAgICAgICAgICAgICAgICAgIG1QcmV2aWV3TG9jazsKLSAgICAgICAgICAgICAgICAgICAgc3A8TWVtb3J5SGVhcEJhc2U+ICAgICAgICAgIG1QcmV2aWV3QnVmZmVyOworICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGtlZXBzIHRyeWluZyB0byBncmFiIG1Mb2NrLCBvciBnaXZlIHVwIGlmIHRoZSBtZXNzYWdlCisgICAgICAgIC8vIGlzIGZvdW5kIHRvIGJlIGRpc2FibGVkLiBJdCByZXR1cm5zIHRydWUgaWYgbUxvY2sgaXMgZ3JhYmJlZC4KKyAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgbG9ja0lmTWVzc2FnZVdhbnRlZChpbnQzMl90IG1zZ1R5cGUpOwogICAgIH07Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWVyYVNlcnZpY2UoKTsKLSAgICB2aXJ0dWFsICAgICAgICAgICAgICAgICB+Q2FtZXJhU2VydmljZSgpOwotCi0gICAgLy8gV2UgdXNlIGEgY291bnQgZm9yIG51bWJlciBvZiBjbGllbnRzIChzaG91bGUgb25seSBiZSAwIG9yIDEpLgotICAgIHZvbGF0aWxlICAgIGludDMyX3QgICAgICAgICAgICAgICAgICAgICBtVXNlcnM7Ci0gICAgdmlydHVhbCAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIGluY1VzZXJzKCk7Ci0gICAgdmlydHVhbCAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIGRlY1VzZXJzKCk7Ci0KLSAgICBtdXRhYmxlICAgICBNdXRleCAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2VMb2NrOwotICAgICAgICAgICAgICAgIHdwPENsaWVudD4gICAgICAgICAgICAgICAgICBtQ2xpZW50OwotCi0jaWYgREVCVUdfSEVBUF9MRUFLUwotICAgICAgICAgICAgICAgIHdwPElNZW1vcnlIZWFwPiAgICAgICAgICAgICBnV2Vha0hlYXA7Ci0jZW5kaWYKIH07CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9GYWtlQ2FtZXJhLmNwcCBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0Zha2VDYW1lcmEuY3BwCmluZGV4IDY3NDk4OTkuLmYzYTZhNjcgMTAwNjQ0Ci0tLSBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0Zha2VDYW1lcmEuY3BwCisrKyBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0Zha2VDYW1lcmEuY3BwCkBAIC0xOTgsMTAgKzE5OCwxMSBAQAogc3RhdGljIGNvbnN0IGludCAgREVMVEEgID0ga1liKigxIDw8IFNISUZUMik7CiBzdGF0aWMgY29uc3QgaW50ICBHQU1NQSAgPSBrWXIqKDEgPDwgU0hJRlQyKTsKIAotaW50MzJfdCBjY3JnYjE2dG95dXZfd29fY29sb3JrZXkodWludDhfdCAqcmdiMTYsdWludDhfdCAqeXV2NDIyLHVpbnQzMl90ICpwYXJhbSx1aW50OF90ICp0YWJsZVtdKQoraW50MzJfdCBjY3JnYjE2dG95dXZfd29fY29sb3JrZXkodWludDhfdCAqcmdiMTYsIHVpbnQ4X3QgKnl1djQyMCwKKyAgICAgICAgdWludDMyX3QgKnBhcmFtLCB1aW50OF90ICp0YWJsZVtdKQogewogICAgIHVpbnQxNl90ICppbnB1dFJHQiA9ICh1aW50MTZfdCopcmdiMTY7Ci0gICAgdWludDhfdCAqb3V0WVVWID0gIHl1djQyMjsKKyAgICB1aW50OF90ICpvdXRZVVYgPSB5dXY0MjA7CiAgICAgaW50MzJfdCB3aWR0aF9kc3QgPSBwYXJhbVswXTsKICAgICBpbnQzMl90IGhlaWdodF9kc3QgPSBwYXJhbVsxXTsKICAgICBpbnQzMl90IHBpdGNoX2RzdCA9IHBhcmFtWzJdOwpAQCAtMjYwLDEyICsyNjEsMTQgQEAKIAogICAgICAgICAgICAgdGVtcFlbMF0gPSB5MDsKICAgICAgICAgICAgIHRlbXBZWzFdID0geTE7Ci0gICAgICAgICAgICB0ZW1wVVswXSA9IHU7Ci0gICAgICAgICAgICB0ZW1wVlswXSA9IHY7Ci0KICAgICAgICAgICAgIHRlbXBZICs9IDI7Ci0gICAgICAgICAgICB0ZW1wVSArPSAyOwotICAgICAgICAgICAgdGVtcFYgKz0gMjsKKworICAgICAgICAgICAgaWYgKChqJjEpID09IDApIHsKKyAgICAgICAgICAgICAgICB0ZW1wVVswXSA9IHU7CisgICAgICAgICAgICAgICAgdGVtcFZbMF0gPSB2OworICAgICAgICAgICAgICAgIHRlbXBVICs9IDI7CisgICAgICAgICAgICAgICAgdGVtcFYgKz0gMjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlucHV0UkdCICs9IHBpdGNoX3NyYzsKQEAgLTI3Nyw3ICsyODAsNyBAQAogI2RlZmluZSBtaW4oYSxiKSAoKGEpPChiKT8oYSk6KGIpKQogI2RlZmluZSBtYXgoYSxiKSAoKGEpPihiKT8oYSk6KGIpKQogCi1zdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjE2X3RvX3l1djQyMih1aW50OF90ICpyZ2IsIHVpbnQ4X3QgKnl1diwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorc3RhdGljIHZvaWQgY29udmVydF9yZ2IxNl90b195dXY0MjAodWludDhfdCAqcmdiLCB1aW50OF90ICp5dXYsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAoIXRhYmxlc19pbml0aWFsaXplZCkgewogICAgICAgICBpbml0WXRhYigpOwpAQCAtMzI2LDcgKzMyOSw3IEBACiAgICAgbUNoZWNrWSA9IDA7CiAKICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgaXQgdG8gYmUgcmVhbGxvY2F0ZWQgb24gdGhlIG5leHQgY2FsbAotICAgIC8vIHRvIGdldE5leHRGcmFtZUFzWXV2NDIyKCkuCisgICAgLy8gdG8gZ2V0TmV4dEZyYW1lQXNZdXY0MjAoKS4KICAgICBkZWxldGVbXSBtVG1wUmdiMTZCdWZmZXI7CiAgICAgbVRtcFJnYjE2QnVmZmVyID0gMDsKIH0KQEAgLTM0NywxMyArMzUwLDEzIEBACiAgICAgbUNvdW50ZXIrKzsKIH0KIAotdm9pZCBGYWtlQ2FtZXJhOjpnZXROZXh0RnJhbWVBc1l1djQyMih1aW50OF90ICpidWZmZXIpCit2b2lkIEZha2VDYW1lcmE6OmdldE5leHRGcmFtZUFzWXV2NDIwKHVpbnQ4X3QgKmJ1ZmZlcikKIHsKICAgICBpZiAobVRtcFJnYjE2QnVmZmVyID09IDApCiAgICAgICAgIG1UbXBSZ2IxNkJ1ZmZlciA9IG5ldyB1aW50MTZfdFttV2lkdGggKiBtSGVpZ2h0XTsKIAogICAgIGdldE5leHRGcmFtZUFzUmdiNTY1KG1UbXBSZ2IxNkJ1ZmZlcik7Ci0gICAgY29udmVydF9yZ2IxNl90b195dXY0MjIoKHVpbnQ4X3QqKW1UbXBSZ2IxNkJ1ZmZlciwgYnVmZmVyLCBtV2lkdGgsIG1IZWlnaHQpOworICAgIGNvbnZlcnRfcmdiMTZfdG9feXV2NDIwKCh1aW50OF90KiltVG1wUmdiMTZCdWZmZXIsIGJ1ZmZlciwgbVdpZHRoLCBtSGVpZ2h0KTsKIH0KIAogdm9pZCBGYWtlQ2FtZXJhOjpkcmF3U3F1YXJlKHVpbnQxNl90ICpkc3QsIGludCB4LCBpbnQgeSwgaW50IHNpemUsIGludCBjb2xvciwgaW50IHNoYWRvdykKZGlmZiAtLWdpdCBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0Zha2VDYW1lcmEuaCBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0Zha2VDYW1lcmEuaAppbmRleCBmN2Y4ODAzLi43MjRkZTIwIDEwMDY0NAotLS0gYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9GYWtlQ2FtZXJhLmgKKysrIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvRmFrZUNhbWVyYS5oCkBAIC00MCw3ICs0MCw3IEBACiAgICAgfkZha2VDYW1lcmEoKTsKIAogICAgIHZvaWQgc2V0U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIHZvaWQgZ2V0TmV4dEZyYW1lQXNZdXY0MjIodWludDhfdCAqYnVmZmVyKTsKKyAgICB2b2lkIGdldE5leHRGcmFtZUFzWXV2NDIwKHVpbnQ4X3QgKmJ1ZmZlcik7CiAgICAgLy8gV3JpdGUgdG8gdGhlIGZkIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBzdGF0ZS4KICAgICB2b2lkIGR1bXAoaW50IGZkKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvY2FtZXJhL3Rlc3RzL0NhbWVyYVNlcnZpY2VUZXN0L0FuZHJvaWQubWsgYi9jYW1lcmEvdGVzdHMvQ2FtZXJhU2VydmljZVRlc3QvQW5kcm9pZC5tawppbmRleCA5YmIxOTBhLi5jZjRlNDJmIDEwMDY0NAotLS0gYS9jYW1lcmEvdGVzdHMvQ2FtZXJhU2VydmljZVRlc3QvQW5kcm9pZC5taworKysgYi9jYW1lcmEvdGVzdHMvQ2FtZXJhU2VydmljZVRlc3QvQW5kcm9pZC5tawpAQCAtMjEsNCArMjEsNiBAQAogICAgICAgICAgICAgICAgIGxpYmNhbWVyYV9jbGllbnQgXAogICAgICAgICAgICAgICAgIGxpYnN1cmZhY2VmbGluZ2VyX2NsaWVudAogCi1pbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKyMgRGlzYWJsZSBpdCBiZWNhdXNlIHRoZSBJU3VyZmFjZSBpbnRlcmZhY2UgbWF5IGNoYW5nZSwgYW5kIGJlZm9yZSB3ZSBoYXZlIGEKKyMgY2hhbmNlIHRvIGZpeCB0aGlzIHRlc3QsIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgbm9ybWFsIGJ1aWxkcy4KKyNpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKZGlmZiAtLWdpdCBhL2NhbWVyYS90ZXN0cy9DYW1lcmFTZXJ2aWNlVGVzdC9DYW1lcmFTZXJ2aWNlVGVzdC5jcHAgYi9jYW1lcmEvdGVzdHMvQ2FtZXJhU2VydmljZVRlc3QvQ2FtZXJhU2VydmljZVRlc3QuY3BwCmluZGV4IDlmYzc5NWIuLjNjOGQ1NTMgMTAwNjQ0Ci0tLSBhL2NhbWVyYS90ZXN0cy9DYW1lcmFTZXJ2aWNlVGVzdC9DYW1lcmFTZXJ2aWNlVGVzdC5jcHAKKysrIGIvY2FtZXJhL3Rlc3RzL0NhbWVyYVNlcnZpY2VUZXN0L0NhbWVyYVNlcnZpY2VUZXN0LmNwcApAQCAtMzgsNyArMzgsNyBAQAogICAgIElORk8oImFzc2VydGlvbiBmYWlsZWQgYXQgZmlsZSAlcywgbGluZSAlZCwgZnVuY3Rpb24gJXM6IiwKICAgICAgICAgICAgIGZpbGUsIGxpbmUsIGZ1bmMpOwogICAgIElORk8oIiVzIiwgZXhwcik7Ci0gICAgZXhpdCgxKTsKKyAgICBhYm9ydCgpOwogfQogCiB2b2lkIGFzc2VydF9lcV9mYWlsKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmdW5jLApAQCAtNDYsNyArNDYsNyBAQAogICAgIElORk8oImFzc2VydGlvbiBmYWlsZWQgYXQgZmlsZSAlcywgbGluZSAlZCwgZnVuY3Rpb24gJXM6IiwKICAgICAgICAgICAgIGZpbGUsIGxpbmUsIGZ1bmMpOwogICAgIElORk8oIihleHBlY3RlZCkgJXMgIT0gKGFjdHVhbCkgJWQiLCBleHByLCBhY3R1YWwpOwotICAgIGV4aXQoMSk7CisgICAgYWJvcnQoKTsKIH0KIAogI2RlZmluZSBBU1NFUlQoZSkgXApAQCAtMTU1LDcgKzE1NSw3IEBACiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgaW50MzJfdCBleHQxLCBpbnQzMl90IGV4dDIpOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhQ2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIGRhdGFDYWxsYmFja1RpbWVzdGFtcChuc2Vjc190IHRpbWVzdGFtcCwKLSAgICAgICAgICAgIGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGEpIHt9CisgICAgICAgICAgICBpbnQzMl90IG1zZ1R5cGUsIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhKTsKIAogICAgIC8vIG5ldyBmdW5jdGlvbnMKICAgICB2b2lkIGNsZWFyU3RhdCgpOwpAQCAtMTc2LDYgKzE3Niw3IEBACiAgICAgRGVmYXVsdEtleWVkVmVjdG9yPGludDMyX3QsIGludD4gbURhdGFDb3VudDsKICAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8aW50MzJfdCwgaW50PiBtRGF0YVNpemU7CiAgICAgYm9vbCB0ZXN0KE9QIG9wLCBpbnQgdjEsIGludCB2Mik7CisgICAgdm9pZCBhc3NlcnRUZXN0KE9QIG9wLCBpbnQgdjEsIGludCB2Mik7CiAKICAgICBJQ2FtZXJhICptUmVsZWFzZXI7CiB9OwpAQCAtMTk5LDI2ICsyMDAsMzMgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgTUNhbWVyYUNsaWVudDo6YXNzZXJ0VGVzdChPUCBvcCwgaW50IHYxLCBpbnQgdjIpIHsKKyAgICBpZiAoIXRlc3Qob3AsIHYxLCB2MikpIHsKKyAgICAgICAgTE9HRSgiYXNzZXJ0VGVzdCBmYWlsZWQ6IG9wPSVkLCB2MT0lZCwgdjI9JWQiLCBvcCwgdjEsIHYyKTsKKyAgICAgICAgQVNTRVJUKDApOworICAgIH0KK30KKwogdm9pZCBNQ2FtZXJhQ2xpZW50Ojphc3NlcnROb3RpZnkoaW50MzJfdCBtc2dUeXBlLCBPUCBvcCwgaW50IGNvdW50KSB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKICAgICBpbnQgdiA9IG1Ob3RpZnlDb3VudC52YWx1ZUZvcihtc2dUeXBlKTsKLSAgICBBU1NFUlQodGVzdChvcCwgdiwgY291bnQpKTsKKyAgICBhc3NlcnRUZXN0KG9wLCB2LCBjb3VudCk7CiB9CiAKIHZvaWQgTUNhbWVyYUNsaWVudDo6YXNzZXJ0RGF0YShpbnQzMl90IG1zZ1R5cGUsIE9QIG9wLCBpbnQgY291bnQpIHsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgIGludCB2ID0gbURhdGFDb3VudC52YWx1ZUZvcihtc2dUeXBlKTsKLSAgICBBU1NFUlQodGVzdChvcCwgdiwgY291bnQpKTsKKyAgICBhc3NlcnRUZXN0KG9wLCB2LCBjb3VudCk7CiB9CiAKIHZvaWQgTUNhbWVyYUNsaWVudDo6YXNzZXJ0RGF0YVNpemUoaW50MzJfdCBtc2dUeXBlLCBPUCBvcCwgaW50IGRhdGFTaXplKSB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKICAgICBpbnQgdiA9IG1EYXRhU2l6ZS52YWx1ZUZvcihtc2dUeXBlKTsKLSAgICBBU1NFUlQodGVzdChvcCwgdiwgZGF0YVNpemUpKTsKKyAgICBhc3NlcnRUZXN0KG9wLCB2LCBkYXRhU2l6ZSk7CiB9CiAKIHZvaWQgTUNhbWVyYUNsaWVudDo6bm90aWZ5Q2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLCBpbnQzMl90IGV4dDEsIGludDMyX3QgZXh0MikgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CiAgICAgc3NpemVfdCBpID0gbU5vdGlmeUNvdW50LmluZGV4T2ZLZXkobXNnVHlwZSk7CiAgICAgaWYgKGkgPCAwKSB7CkBAIC0yMzAsNyArMjM4LDcgQEAKIH0KIAogdm9pZCBNQ2FtZXJhQ2xpZW50OjpkYXRhQ2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YSkgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIGludCBkYXRhU2l6ZSA9IGRhdGEtPnNpemUoKTsKICAgICBJTkZPKCJkYXRhIHR5cGUgPSAlZCwgc2l6ZSA9ICVkIiwgbXNnVHlwZSwgZGF0YVNpemUpOwogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CkBAIC0yNTAsNiArMjU4LDExIEBACiAgICAgfQogfQogCit2b2lkIE1DYW1lcmFDbGllbnQ6OmRhdGFDYWxsYmFja1RpbWVzdGFtcChuc2Vjc190IHRpbWVzdGFtcCwgaW50MzJfdCBtc2dUeXBlLAorICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YSkgeworICAgIGRhdGFDYWxsYmFjayhtc2dUeXBlLCBkYXRhKTsKK30KKwogdm9pZCBNQ2FtZXJhQ2xpZW50Ojp3YWl0Tm90aWZ5KGludDMyX3QgbXNnVHlwZSwgT1Agb3AsIGludCBjb3VudCkgewogICAgIElORk8oIndhaXROb3RpZnk6ICVkLCAlZCwgJWQiLCBtc2dUeXBlLCBvcCwgY291bnQpOwogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CkBAIC0yODUsNiArMjk4LDcgQEAKICAgICB2aXJ0dWFsIHNwPE92ZXJsYXlSZWY+IGNyZWF0ZU92ZXJsYXkoCiAgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBvcmllbnRhdGlvbik7CiAgICAgdmlydHVhbCBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBidWZmZXJJZHgsIGludCB1c2FnZSk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpOwogCiAgICAgLy8gbmV3IGZ1bmN0aW9ucwogICAgIHZvaWQgY2xlYXJTdGF0KCk7CkBAIC0zMDAsNyArMzE0LDcgQEAKIH07CiAKIHN0YXR1c190IE1TdXJmYWNlOjpyZWdpc3RlckJ1ZmZlcnMoY29uc3QgQnVmZmVySGVhcCYgYnVmZmVycykgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CiAgICAgKytyZWdpc3RlckJ1ZmZlcnNDb3VudDsKICAgICBtQ29uZC5zaWduYWwoKTsKQEAgLTMwOCwyMSArMzIyLDI2IEBACiB9CiAKIHZvaWQgTVN1cmZhY2U6OnBvc3RCdWZmZXIoc3NpemVfdCBvZmZzZXQpIHsKLSAgICAvLyBJTkZPKF9fZnVuY19fKTsKKyAgICAvLyBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgICsrcG9zdEJ1ZmZlckNvdW50OwogICAgIG1Db25kLnNpZ25hbCgpOwogfQogCiB2b2lkIE1TdXJmYWNlOjp1bnJlZ2lzdGVyQnVmZmVycygpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgICsrdW5yZWdpc3RlckJ1ZmZlcnNDb3VudDsKICAgICBtQ29uZC5zaWduYWwoKTsKIH0KIAogc3A8R3JhcGhpY0J1ZmZlcj4gTVN1cmZhY2U6OnJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwgaW50IHVzYWdlKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXR1c190IE1TdXJmYWNlOjpzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpIHsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMzQ4LDEwICszNjcsOSBAQAogCiBzcDxPdmVybGF5UmVmPiBNU3VyZmFjZTo6Y3JlYXRlT3ZlcmxheSh1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBpbnQzMl90IGZvcm1hdCwKICAgICAgICAgaW50MzJfdCBvcmllbnRhdGlvbikgewotICAgIC8vIFdlIGRvbid0IGV4cGVjdCB0aGlzIHRvIGJlIGNhbGxlZCBpbiBjdXJyZW50IGhhcmR3YXJlLgorICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KICAgICBBU1NFUlQoMCk7Ci0gICAgc3A8T3ZlcmxheVJlZj4gZHVtbXk7Ci0gICAgcmV0dXJuIGR1bW15OworICAgIHJldHVybiBOVUxMOwogfQogCiAvLwpAQCAtMzY4LDE3ICszODYsMTcgQEAKIH0KIAogdm9pZCBwdXRUZW1wT2JqZWN0KHNwPElCaW5kZXI+IG9iaikgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIGdldEhvbGRlcigpLT5wdXQob2JqKTsKIH0KIAogc3A8SUJpbmRlcj4gZ2V0VGVtcE9iamVjdCgpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICByZXR1cm4gZ2V0SG9sZGVyKCktPmdldCgpOwogfQogCiB2b2lkIGNsZWFyVGVtcE9iamVjdCgpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBnZXRIb2xkZXIoKS0+Y2xlYXIoKTsKIH0KIApAQCAtMzk1LDY0ICs0MTMsNzEgQEAKICAgICByZXR1cm4gY3M7CiB9CiAKK2ludCBnZXROdW1iZXJPZkNhbWVyYXMoKSB7CisgICAgc3A8SUNhbWVyYVNlcnZpY2U+IGNzID0gZ2V0Q2FtZXJhU2VydmljZSgpOworICAgIHJldHVybiBjcy0+Z2V0TnVtYmVyT2ZDYW1lcmFzKCk7Cit9CisKIC8vCiAvLyBWYXJpb3VzIENvbm5lY3QgVGVzdHMKIC8vCi12b2lkIHRlc3RDb25uZWN0KCkgewotICAgIElORk8oX19mdW5jX18pOwordm9pZCB0ZXN0Q29ubmVjdChpbnQgY2FtZXJhSWQpIHsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBzcDxJQ2FtZXJhU2VydmljZT4gY3MgPSBnZXRDYW1lcmFTZXJ2aWNlKCk7CiAgICAgc3A8TUNhbWVyYUNsaWVudD4gY2MgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwotICAgIHNwPElDYW1lcmE+IGMgPSBjcy0+Y29ubmVjdChjYyk7CisgICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjLCBjYW1lcmFJZCk7CiAgICAgQVNTRVJUKGMgIT0gMCk7CiAgICAgYy0+ZGlzY29ubmVjdCgpOwogfQogCi12b2lkIHRlc3RBbGxvd0Nvbm5lY3RPbmNlT25seSgpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKK3ZvaWQgdGVzdEFsbG93Q29ubmVjdE9uY2VPbmx5KGludCBjYW1lcmFJZCkgeworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIHNwPElDYW1lcmFTZXJ2aWNlPiBjcyA9IGdldENhbWVyYVNlcnZpY2UoKTsKICAgICAvLyBDb25uZWN0IHRoZSBmaXJzdCBjbGllbnQuCiAgICAgc3A8TUNhbWVyYUNsaWVudD4gY2MgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwotICAgIHNwPElDYW1lcmE+IGMgPSBjcy0+Y29ubmVjdChjYyk7CisgICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjLCBjYW1lcmFJZCk7CiAgICAgQVNTRVJUKGMgIT0gMCk7CiAgICAgLy8gU2FtZSBjbGllbnQgLS0gb2suCi0gICAgQVNTRVJUKGNzLT5jb25uZWN0KGNjKSAhPSAwKTsKKyAgICBBU1NFUlQoY3MtPmNvbm5lY3QoY2MsIGNhbWVyYUlkKSAhPSAwKTsKICAgICAvLyBEaWZmZXJlbnQgY2xpZW50IC0tIG5vdCBvay4KICAgICBzcDxNQ2FtZXJhQ2xpZW50PiBjYzIgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwotICAgIEFTU0VSVChjcy0+Y29ubmVjdChjYzIpID09IDApOworICAgIEFTU0VSVChjcy0+Y29ubmVjdChjYzIsIGNhbWVyYUlkKSA9PSAwKTsKICAgICBjLT5kaXNjb25uZWN0KCk7CiB9CiAKIHZvaWQgdGVzdFJlY29ubmVjdEZhaWxlZCgpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBzcDxJQ2FtZXJhPiBjID0gaW50ZXJmYWNlX2Nhc3Q8SUNhbWVyYT4oZ2V0VGVtcE9iamVjdCgpKTsKLSAgICBzcDxNQ2FtZXJhQ2xpZW50PiBjYzIgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwotICAgIEFTU0VSVChjLT5jb25uZWN0KGNjMikgIT0gTk9fRVJST1IpOworICAgIHNwPE1DYW1lcmFDbGllbnQ+IGNjID0gbmV3IE1DYW1lcmFDbGllbnQoKTsKKyAgICBBU1NFUlQoYy0+Y29ubmVjdChjYykgIT0gTk9fRVJST1IpOwogfQogCiB2b2lkIHRlc3RSZWNvbm5lY3RTdWNjZXNzKCkgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIHNwPElDYW1lcmE+IGMgPSBpbnRlcmZhY2VfY2FzdDxJQ2FtZXJhPihnZXRUZW1wT2JqZWN0KCkpOwogICAgIHNwPE1DYW1lcmFDbGllbnQ+IGNjID0gbmV3IE1DYW1lcmFDbGllbnQoKTsKICAgICBBU1NFUlQoYy0+Y29ubmVjdChjYykgPT0gTk9fRVJST1IpOworICAgIGMtPmRpc2Nvbm5lY3QoKTsKIH0KIAogdm9pZCB0ZXN0TG9ja0ZhaWxlZCgpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBzcDxJQ2FtZXJhPiBjID0gaW50ZXJmYWNlX2Nhc3Q8SUNhbWVyYT4oZ2V0VGVtcE9iamVjdCgpKTsKICAgICBBU1NFUlQoYy0+bG9jaygpICE9IE5PX0VSUk9SKTsKIH0KIAogdm9pZCB0ZXN0TG9ja1VubG9ja1N1Y2Nlc3MoKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAgICAgc3A8SUNhbWVyYT4gYyA9IGludGVyZmFjZV9jYXN0PElDYW1lcmE+KGdldFRlbXBPYmplY3QoKSk7CiAgICAgQVNTRVJUKGMtPmxvY2soKSA9PSBOT19FUlJPUik7CiAgICAgQVNTRVJUKGMtPnVubG9jaygpID09IE5PX0VSUk9SKTsKIH0KIAogdm9pZCB0ZXN0TG9ja1N1Y2Nlc3MoKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAgICAgc3A8SUNhbWVyYT4gYyA9IGludGVyZmFjZV9jYXN0PElDYW1lcmE+KGdldFRlbXBPYmplY3QoKSk7CiAgICAgQVNTRVJUKGMtPmxvY2soKSA9PSBOT19FUlJPUik7CisgICAgYy0+ZGlzY29ubmVjdCgpOwogfQogCiAvLwpAQCAtNDk5LDExICs1MjQsMTEgQEAKICAgICB9CiB9CiAKLXZvaWQgdGVzdFJlY29ubmVjdCgpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKK3ZvaWQgdGVzdFJlY29ubmVjdChpbnQgY2FtZXJhSWQpIHsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBzcDxJQ2FtZXJhU2VydmljZT4gY3MgPSBnZXRDYW1lcmFTZXJ2aWNlKCk7CiAgICAgc3A8TUNhbWVyYUNsaWVudD4gY2MgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwotICAgIHNwPElDYW1lcmE+IGMgPSBjcy0+Y29ubmVjdChjYyk7CisgICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjLCBjYW1lcmFJZCk7CiAgICAgQVNTRVJUKGMgIT0gMCk7CiAgICAgLy8gUmVjb25uZWN0IHRvIHRoZSBzYW1lIGNsaWVudCAtLSBvay4KICAgICBBU1NFUlQoYy0+Y29ubmVjdChjYykgPT0gTk9fRVJST1IpOwpAQCAtNTE0LDEwICs1MzksMTAgQEAKICAgICBjYy0+YXNzZXJ0Tm90aWZ5KENBTUVSQV9NU0dfRVJST1IsIE1DYW1lcmFDbGllbnQ6OkVRLCAwKTsKIH0KIAotdm9pZCB0ZXN0TG9ja1VubG9jaygpIHsKK3ZvaWQgdGVzdExvY2tVbmxvY2soaW50IGNhbWVyYUlkKSB7CiAgICAgc3A8SUNhbWVyYVNlcnZpY2U+IGNzID0gZ2V0Q2FtZXJhU2VydmljZSgpOwogICAgIHNwPE1DYW1lcmFDbGllbnQ+IGNjID0gbmV3IE1DYW1lcmFDbGllbnQoKTsKLSAgICBzcDxJQ2FtZXJhPiBjID0gY3MtPmNvbm5lY3QoY2MpOworICAgIHNwPElDYW1lcmE+IGMgPSBjcy0+Y29ubmVjdChjYywgY2FtZXJhSWQpOwogICAgIEFTU0VSVChjICE9IDApOwogICAgIC8vIFdlIGNhbiBsb2NrIGFzIG1hbnkgdGltZXMgYXMgd2Ugd2FudC4KICAgICBBU1NFUlQoYy0+bG9jaygpID09IE5PX0VSUk9SKTsKQEAgLTUzMCwxNiArNTU1LDE1IEBACiAgICAgcnVuSW5Bbm90aGVyUHJvY2VzcygidGVzdExvY2tVbmxvY2tTdWNjZXNzIik7CiAgICAgLy8gVW5sb2NrIHRoZW4gbG9jayBmcm9tIGEgZGlmZmVyZW50IHByb2Nlc3MgLS0gb2suCiAgICAgcnVuSW5Bbm90aGVyUHJvY2VzcygidGVzdExvY2tTdWNjZXNzIik7Ci0gICAgYy0+ZGlzY29ubmVjdCgpOwogICAgIGNsZWFyVGVtcE9iamVjdCgpOwogfQogCi12b2lkIHRlc3RSZWNvbm5lY3RGcm9tQW5vdGhlclByb2Nlc3MoKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7Cit2b2lkIHRlc3RSZWNvbm5lY3RGcm9tQW5vdGhlclByb2Nlc3MoaW50IGNhbWVyYUlkKSB7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAKICAgICBzcDxJQ2FtZXJhU2VydmljZT4gY3MgPSBnZXRDYW1lcmFTZXJ2aWNlKCk7CiAgICAgc3A8TUNhbWVyYUNsaWVudD4gY2MgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwotICAgIHNwPElDYW1lcmE+IGMgPSBjcy0+Y29ubmVjdChjYyk7CisgICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjLCBjYW1lcmFJZCk7CiAgICAgQVNTRVJUKGMgIT0gMCk7CiAgICAgLy8gUmVjb25uZWN0IGZyb20gYSBkaWZmZXJlbnQgcHJvY2VzcyAtLSBub3Qgb2suCiAgICAgcHV0VGVtcE9iamVjdChjLT5hc0JpbmRlcigpKTsKQEAgLTU0Nyw3ICs1NzEsNiBAQAogICAgIC8vIFVubG9jayB0aGVuIHJlY29ubmVjdCBmcm9tIGEgZGlmZmVyZW50IHByb2Nlc3MgLS0gb2suCiAgICAgQVNTRVJUKGMtPnVubG9jaygpID09IE5PX0VSUk9SKTsKICAgICBydW5JbkFub3RoZXJQcm9jZXNzKCJ0ZXN0UmVjb25uZWN0U3VjY2VzcyIpOwotICAgIGMtPmRpc2Nvbm5lY3QoKTsKICAgICBjbGVhclRlbXBPYmplY3QoKTsKIH0KIApAQCAtNTYwLDEwICs1ODMsMTEgQEAKIH0KIAogLy8gUnVuIGEgdGVzdCBjYXNlCi0jZGVmaW5lIFJVTihjbGFzc19uYW1lKSBkbyB7IFwKKyNkZWZpbmUgUlVOKGNsYXNzX25hbWUsIGNhbWVyYUlkKSBkbyB7IFwKICAgICB7IFwKICAgICAgICAgSU5GTygjY2xhc3NfbmFtZSk7IFwKICAgICAgICAgY2xhc3NfbmFtZSBpbnN0YW5jZTsgXAorICAgICAgICBpbnN0YW5jZS5pbml0KGNhbWVyYUlkKTsgXAogICAgICAgICBpbnN0YW5jZS5ydW4oKTsgXAogICAgIH0gXAogICAgIGZsdXNoQ29tbWFuZHMoKTsgXApAQCAtNTcxLDE5ICs1OTUsMjEgQEAKIAogLy8gQmFzZSB0ZXN0IGNhc2UgYWZ0ZXIgdGhlIHRoZSBjYW1lcmEgaXMgY29ubmVjdGVkLgogY2xhc3MgQWZ0ZXJDb25uZWN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIGluaXQoaW50IGNhbWVyYUlkKSB7CisgICAgICAgIGNzID0gZ2V0Q2FtZXJhU2VydmljZSgpOworICAgICAgICBjYyA9IG5ldyBNQ2FtZXJhQ2xpZW50KCk7CisgICAgICAgIGMgPSBjcy0+Y29ubmVjdChjYywgY2FtZXJhSWQpOworICAgICAgICBBU1NFUlQoYyAhPSAwKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBzcDxJQ2FtZXJhU2VydmljZT4gY3M7CiAgICAgc3A8TUNhbWVyYUNsaWVudD4gY2M7CiAgICAgc3A8SUNhbWVyYT4gYzsKIAotICAgIEFmdGVyQ29ubmVjdCgpIHsKLSAgICAgICAgY3MgPSBnZXRDYW1lcmFTZXJ2aWNlKCk7Ci0gICAgICAgIGNjID0gbmV3IE1DYW1lcmFDbGllbnQoKTsKLSAgICAgICAgYyA9IGNzLT5jb25uZWN0KGNjKTsKLSAgICAgICAgQVNTRVJUKGMgIT0gMCk7Ci0gICAgfQotCiAgICAgfkFmdGVyQ29ubmVjdCgpIHsKKyAgICAgICAgYy0+ZGlzY29ubmVjdCgpOwogICAgICAgICBjLmNsZWFyKCk7CiAgICAgICAgIGNjLmNsZWFyKCk7CiAgICAgICAgIGNzLmNsZWFyKCk7CkBAIC02MTIsMTkgKzYzOCwxNiBAQAogICAgICAgICBzdXJmYWNlLT53YWl0VW50aWwoMSwgMTAsIDApOyAvLyBuZWVkcyAxIHJlZ2lzdGVyQnVmZmVycyBhbmQgMTAgcG9zdEJ1ZmZlcgogICAgICAgICBzdXJmYWNlLT5jbGVhclN0YXQoKTsKIAotICAgICAgICBjLT5kaXNjb25uZWN0KCk7Ci0gICAgICAgIC8vIFRPRE86IENhbWVyYVNlcnZpY2UgY3Jhc2hlcyBmb3IgdGhpcy4gRml4IGl0LgotI2lmIDAKICAgICAgICAgc3A8TVN1cmZhY2U+IGFub3RoZXJfc3VyZmFjZSA9IG5ldyBNU3VyZmFjZSgpOwogICAgICAgICBjLT5zZXRQcmV2aWV3RGlzcGxheShhbm90aGVyX3N1cmZhY2UpOyAgLy8ganVzdCB0byBtYWtlIHN1cmUgdW5yZWdpc3RlckJ1ZmZlcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGNhbGxlZC4KICAgICAgICAgc3VyZmFjZS0+d2FpdFVudGlsKDAsIDAsIDEpOyAgLy8gbmVlZHMgdW5yZWdpc3RlckJ1ZmZlcnMKLSNlbmRpZgorCiAgICAgICAgIGNjLT5hc3NlcnROb3RpZnkoQ0FNRVJBX01TR19FUlJPUiwgTUNhbWVyYUNsaWVudDo6RVEsIDApOwogICAgIH0KIH07CiAKLWNsYXNzIFRlc3RTdGFydFByZXZpZXdXaXRob3V0RGlzcGxheSA6IEFmdGVyQ29ubmVjdCB7CitjbGFzcyBUZXN0U3RhcnRQcmV2aWV3V2l0aG91dERpc3BsYXkgOiBwdWJsaWMgQWZ0ZXJDb25uZWN0IHsKIHB1YmxpYzoKICAgICB2b2lkIHJ1bigpIHsKICAgICAgICAgQVNTRVJUKGMtPnN0YXJ0UHJldmlldygpID09IE5PX0VSUk9SKTsKQEAgLTYzNiwxNSArNjU5LDE3IEBACiAKIC8vIEJhc2UgdGVzdCBjYXNlIGFmdGVyIHRoZSB0aGUgY2FtZXJhIGlzIGNvbm5lY3RlZCBhbmQgdGhlIHByZXZpZXcgaXMgc3RhcnRlZC4KIGNsYXNzIEFmdGVyU3RhcnRQcmV2aWV3IDogcHVibGljIEFmdGVyQ29ubmVjdCB7Ci1wcm90ZWN0ZWQ6Ci0gICAgc3A8TVN1cmZhY2U+IHN1cmZhY2U7Ci0KLSAgICBBZnRlclN0YXJ0UHJldmlldygpIHsKK3B1YmxpYzoKKyAgICB2b2lkIGluaXQoaW50IGNhbWVyYUlkKSB7CisgICAgICAgIEFmdGVyQ29ubmVjdDo6aW5pdChjYW1lcmFJZCk7CiAgICAgICAgIHN1cmZhY2UgPSBuZXcgTVN1cmZhY2UoKTsKICAgICAgICAgQVNTRVJUKGMtPnNldFByZXZpZXdEaXNwbGF5KHN1cmZhY2UpID09IE5PX0VSUk9SKTsKICAgICAgICAgQVNTRVJUKGMtPnN0YXJ0UHJldmlldygpID09IE5PX0VSUk9SKTsKICAgICB9CiAKK3Byb3RlY3RlZDoKKyAgICBzcDxNU3VyZmFjZT4gc3VyZmFjZTsKKwogICAgIH5BZnRlclN0YXJ0UHJldmlldygpIHsKICAgICAgICAgc3VyZmFjZS5jbGVhcigpOwogICAgIH0KQEAgLTY4MCw5ICs3MDUsNiBAQAogICAgICAgICBjYy0+d2FpdERhdGEoQ0FNRVJBX01TR19SQVdfSU1BR0UsIE1DYW1lcmFDbGllbnQ6OkVRLCAxKTsKICAgICAgICAgY2MtPndhaXREYXRhKENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSwgTUNhbWVyYUNsaWVudDo6RVEsIDEpOwogICAgICAgICBjLT5zdG9wUHJldmlldygpOwotI2lmIDEgIC8vIFRPRE86IEl0IGNyYXNoZXMgaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzLiBGaXggaXQuCi0gICAgICAgIHVzbGVlcCgxMDAwMDApOwotI2VuZGlmCiAgICAgICAgIGMtPmRpc2Nvbm5lY3QoKTsKICAgICAgICAgY2MtPmFzc2VydE5vdGlmeShDQU1FUkFfTVNHX0VSUk9SLCBNQ2FtZXJhQ2xpZW50OjpFUSwgMCk7CiAgICAgfQpAQCAtNjk3LDcgKzcxOSw2IEBACiAgICAgICAgICAgICBjYy0+d2FpdE5vdGlmeShDQU1FUkFfTVNHX1NIVVRURVIsIE1DYW1lcmFDbGllbnQ6OkVRLCAxKTsKICAgICAgICAgICAgIGNjLT53YWl0RGF0YShDQU1FUkFfTVNHX1JBV19JTUFHRSwgTUNhbWVyYUNsaWVudDo6RVEsIDEpOwogICAgICAgICAgICAgY2MtPndhaXREYXRhKENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSwgTUNhbWVyYUNsaWVudDo6RVEsIDEpOwotICAgICAgICAgICAgdXNsZWVwKDEwMDAwMCk7ICAvLyAxMDBtcwogICAgICAgICB9CiAgICAgICAgIGMtPmRpc2Nvbm5lY3QoKTsKICAgICAgICAgY2MtPmFzc2VydE5vdGlmeShDQU1FUkFfTVNHX0VSUk9SLCBNQ2FtZXJhQ2xpZW50OjpFUSwgMCk7CkBAIC03MDgsMzYgKzcyOSw3MSBAQAogcHVibGljOgogICAgIHZvaWQgcnVuKCkgewogICAgICAgICBTdHJpbmc4IHBhcmFtX3N0ciA9IGMtPmdldFBhcmFtZXRlcnMoKTsKLSAgICAgICAgSU5GTyhwYXJhbV9zdHIpOworICAgICAgICBJTkZPKCIlcyIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwYXJhbV9zdHIpKTsKICAgICB9CiB9OwogCitzdGF0aWMgYm9vbCBnZXROZXh0U2l6ZShjb25zdCBjaGFyICoqcHRyUywgaW50ICp3LCBpbnQgKmgpIHsKKyAgICBjb25zdCBjaGFyICpzID0gKnB0clM7CisKKyAgICAvLyBza2lwIG92ZXIgJywnCisgICAgaWYgKCpzID09ICcsJykgcysrOworCisgICAgLy8gcmVtZW1iZXIgc3RhcnQgcG9zaXRpb24gaW4gcAorICAgIGNvbnN0IGNoYXIgKnAgPSBzOworICAgIHdoaWxlICgqcyAhPSAnXDAnICYmICpzICE9ICd4JykgeworICAgICAgICBzKys7CisgICAgfQorICAgIGlmICgqcyA9PSAnXDAnKSByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBnZXQgdGhlIHdpZHRoCisgICAgKncgPSBhdG9pKHApOworCisgICAgLy8gc2tpcCBvdmVyICd4JworICAgIEFTU0VSVCgqcyA9PSAneCcpOworICAgIHAgPSBzICsgMTsKKyAgICB3aGlsZSAoKnMgIT0gJ1wwJyAmJiAqcyAhPSAnLCcpIHsKKyAgICAgICAgcysrOworICAgIH0KKworICAgIC8vIGdldCB0aGUgaGVpZ2h0CisgICAgKmggPSBhdG9pKHApOworICAgICpwdHJTID0gczsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY2xhc3MgVGVzdFBpY3R1cmVTaXplIDogcHVibGljIEFmdGVyU3RhcnRQcmV2aWV3IHsKIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrT25lUGljdHVyZShpbnQgdywgaW50IGgpIHsKLSAgICAgICAgY29uc3QgZmxvYXQgcmF0ZSA9IDAuNTsgIC8vIGJ5dGUgcGVyIHBpeGVsIGxpbWl0CisgICAgICAgIGNvbnN0IGZsb2F0IHJhdGUgPSAwLjk7ICAvLyBieXRlIHBlciBwaXhlbCBsaW1pdAogICAgICAgICBpbnQgcGl4ZWxzID0gdyAqIGg7CiAKICAgICAgICAgQ2FtZXJhUGFyYW1ldGVycyBwYXJhbShjLT5nZXRQYXJhbWV0ZXJzKCkpOwogICAgICAgICBwYXJhbS5zZXRQaWN0dXJlU2l6ZSh3LCBoKTsKKyAgICAgICAgLy8gZGlzYWJsZSB0aHVtYm5haWwgdG8gZ2V0IG1vcmUgYWNjdXJhdGUgc2l6ZS4KKyAgICAgICAgcGFyYW0uc2V0KENhbWVyYVBhcmFtZXRlcnM6OktFWV9KUEVHX1RIVU1CTkFJTF9XSURUSCwgMCk7CisgICAgICAgIHBhcmFtLnNldChDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfSlBFR19USFVNQk5BSUxfSEVJR0hULCAwKTsKICAgICAgICAgYy0+c2V0UGFyYW1ldGVycyhwYXJhbS5mbGF0dGVuKCkpOwogCiAgICAgICAgIGNjLT5jbGVhclN0YXQoKTsKICAgICAgICAgQVNTRVJUKGMtPnRha2VQaWN0dXJlKCkgPT0gTk9fRVJST1IpOwogICAgICAgICBjYy0+d2FpdERhdGEoQ0FNRVJBX01TR19SQVdfSU1BR0UsIE1DYW1lcmFDbGllbnQ6OkVRLCAxKTsKLSAgICAgICAgY2MtPmFzc2VydERhdGFTaXplKENBTUVSQV9NU0dfUkFXX0lNQUdFLCBNQ2FtZXJhQ2xpZW50OjpFUSwgcGl4ZWxzKjMvMik7CisgICAgICAgIC8vY2MtPmFzc2VydERhdGFTaXplKENBTUVSQV9NU0dfUkFXX0lNQUdFLCBNQ2FtZXJhQ2xpZW50OjpFUSwgcGl4ZWxzKjMvMik7CiAgICAgICAgIGNjLT53YWl0RGF0YShDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0UsIE1DYW1lcmFDbGllbnQ6OkVRLCAxKTsKICAgICAgICAgY2MtPmFzc2VydERhdGFTaXplKENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSwgTUNhbWVyYUNsaWVudDo6TFQsCiAgICAgICAgICAgICAgICAgaW50KHBpeGVscyAqIHJhdGUpKTsKICAgICAgICAgY2MtPmFzc2VydERhdGFTaXplKENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSwgTUNhbWVyYUNsaWVudDo6R1QsIDApOwogICAgICAgICBjYy0+YXNzZXJ0Tm90aWZ5KENBTUVSQV9NU0dfRVJST1IsIE1DYW1lcmFDbGllbnQ6OkVRLCAwKTsKLSAgICAgICAgdXNsZWVwKDEwMDAwMCk7ICAvLyAxMDBtcwogICAgIH0KIAogICAgIHZvaWQgcnVuKCkgewotICAgICAgICBjaGVja09uZVBpY3R1cmUoMjA0OCwgMTUzNik7Ci0gICAgICAgIGNoZWNrT25lUGljdHVyZSgxNjAwLCAxMjAwKTsKLSAgICAgICAgY2hlY2tPbmVQaWN0dXJlKDEwMjQsIDc2OCk7CisgICAgICAgIENhbWVyYVBhcmFtZXRlcnMgcGFyYW0oYy0+Z2V0UGFyYW1ldGVycygpKTsKKyAgICAgICAgaW50IHcsIGg7CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBwYXJhbS5nZXQoQ2FtZXJhUGFyYW1ldGVyczo6S0VZX1NVUFBPUlRFRF9QSUNUVVJFX1NJWkVTKTsKKyAgICAgICAgd2hpbGUgKGdldE5leHRTaXplKCZzLCAmdywgJmgpKSB7CisgICAgICAgICAgICBMT0dEKCJjaGVja2luZyBwaWN0dXJlIHNpemUgJWR4JWQiLCB3LCBoKTsKKyAgICAgICAgICAgIGNoZWNrT25lUGljdHVyZSh3LCBoKTsKKyAgICAgICAgfQogICAgIH0KIH07CiAKQEAgLTc0OSw2ICs4MDUsOCBAQAogCiAgICAgICAgIC8vIFRyeSBhbGwgZmxhZyBjb21iaW5hdGlvbnMuCiAgICAgICAgIGZvciAoaW50IHYgPSAwOyB2IDwgODsgdisrKSB7CisgICAgICAgICAgICBMT0dEKCJUZXN0UHJldmlld0NhbGxiYWNrRmxhZzogZmxhZz0lZCIsIHYpOworICAgICAgICAgICAgdXNsZWVwKDEwMDAwMCk7IC8vIHNsZWVwIGEgd2hpbGUgdG8gY2xlYXIgdGhlIGluLWZsaWdodCBjYWxsYmFja3MuCiAgICAgICAgICAgICBjYy0+Y2xlYXJTdGF0KCk7CiAgICAgICAgICAgICBjLT5zZXRQcmV2aWV3Q2FsbGJhY2tGbGFnKHYpOwogICAgICAgICAgICAgQVNTRVJUKGMtPnByZXZpZXdFbmFibGVkKCkgPT0gZmFsc2UpOwpAQCAtNzgxLDYgKzgzOSw3IEBACiAgICAgICAgIEFTU0VSVChjLT5yZWNvcmRpbmdFbmFibGVkKCkgPT0gdHJ1ZSk7CiAgICAgICAgIHNsZWVwKDIpOwogICAgICAgICBjLT5zdG9wUmVjb3JkaW5nKCk7CisgICAgICAgIHVzbGVlcCgxMDAwMDApOyAvLyBzbGVlcCBhIHdoaWxlIHRvIGNsZWFyIHRoZSBpbi1mbGlnaHQgY2FsbGJhY2tzLgogICAgICAgICBjYy0+c2V0UmVsZWFzZXIoTlVMTCk7CiAgICAgICAgIGNjLT5hc3NlcnREYXRhKENBTUVSQV9NU0dfVklERU9fRlJBTUUsIE1DYW1lcmFDbGllbnQ6OkdFLCAxMCk7CiAgICAgfQpAQCAtODA2LDkgKzg2NSwxMyBAQAogICAgIH0KIAogICAgIHZvaWQgcnVuKCkgewotICAgICAgICBjaGVja09uZVBpY3R1cmUoNDgwLCAzMjApOwotICAgICAgICBjaGVja09uZVBpY3R1cmUoMzUyLCAyODgpOwotICAgICAgICBjaGVja09uZVBpY3R1cmUoMTc2LCAxNDQpOworICAgICAgICBDYW1lcmFQYXJhbWV0ZXJzIHBhcmFtKGMtPmdldFBhcmFtZXRlcnMoKSk7CisgICAgICAgIGludCB3LCBoOworICAgICAgICBjb25zdCBjaGFyICpzID0gcGFyYW0uZ2V0KENhbWVyYVBhcmFtZXRlcnM6OktFWV9TVVBQT1JURURfUFJFVklFV19TSVpFUyk7CisgICAgICAgIHdoaWxlIChnZXROZXh0U2l6ZSgmcywgJncsICZoKSkgeworICAgICAgICAgICAgTE9HRCgiY2hlY2tpbmcgcHJldmlldyBzaXplICVkeCVkIiwgdywgaCk7CisgICAgICAgICAgICBjaGVja09uZVBpY3R1cmUodywgaCk7CisgICAgICAgIH0KICAgICB9CiB9OwogCkBAIC04MjcsMjMgKzg5MCwzMCBAQAogICAgIElORk8oIkNhbWVyYVNlcnZpY2VUZXN0IHN0YXJ0Iik7CiAgICAgZ0V4ZWN1dGFibGUgPSBhcmd2WzBdOwogICAgIHJ1bkhvbGRlclNlcnZpY2UoKTsKKyAgICBpbnQgbiA9IGdldE51bWJlck9mQ2FtZXJhcygpOworICAgIElORk8oIiVkIENhbWVyYXMgYXZhaWxhYmxlIiwgbik7CiAKLSAgICB0ZXN0Q29ubmVjdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKLSAgICB0ZXN0QWxsb3dDb25uZWN0T25jZU9ubHkoKTsgICAgICAgICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKLSAgICB0ZXN0UmVjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKLSAgICB0ZXN0TG9ja1VubG9jaygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKLSAgICB0ZXN0UmVjb25uZWN0RnJvbUFub3RoZXJQcm9jZXNzKCk7ICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKKyAgICBmb3IgKGludCBpZCA9IDA7IGlkIDwgbjsgaWQrKykgeworICAgICAgICBJTkZPKCJUZXN0aW5nIGNhbWVyYSAlZCIsIGlkKTsKKyAgICAgICAgdGVzdENvbm5lY3QoaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKKyAgICAgICAgdGVzdEFsbG93Q29ubmVjdE9uY2VPbmx5KGlkKTsgICAgICAgICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKKyAgICAgICAgdGVzdFJlY29ubmVjdChpZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKKyAgICAgICAgdGVzdExvY2tVbmxvY2soaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKKyAgICAgICAgdGVzdFJlY29ubmVjdEZyb21Bbm90aGVyUHJvY2VzcyhpZCk7ICAgICAgICAgIGZsdXNoQ29tbWFuZHMoKTsKIAotICAgIFJVTihUZXN0U2V0UHJldmlld0Rpc3BsYXkpOwotICAgIFJVTihUZXN0U3RhcnRQcmV2aWV3KTsKLSAgICBSVU4oVGVzdFN0YXJ0UHJldmlld1dpdGhvdXREaXNwbGF5KTsKLSAgICBSVU4oVGVzdEF1dG9Gb2N1cyk7Ci0gICAgUlVOKFRlc3RTdG9wUHJldmlldyk7Ci0gICAgUlVOKFRlc3RUYWtlUGljdHVyZSk7Ci0gICAgUlVOKFRlc3RUYWtlTXVsdGlwbGVQaWN0dXJlcyk7Ci0gICAgUlVOKFRlc3RHZXRQYXJhbWV0ZXJzKTsKLSAgICBSVU4oVGVzdFBpY3R1cmVTaXplKTsKLSAgICBSVU4oVGVzdFByZXZpZXdDYWxsYmFja0ZsYWcpOwotICAgIFJVTihUZXN0UmVjb3JkaW5nKTsKLSAgICBSVU4oVGVzdFByZXZpZXdTaXplKTsKKyAgICAgICAgUlVOKFRlc3RTZXRQcmV2aWV3RGlzcGxheSwgaWQpOworICAgICAgICBSVU4oVGVzdFN0YXJ0UHJldmlldywgaWQpOworICAgICAgICBSVU4oVGVzdFN0YXJ0UHJldmlld1dpdGhvdXREaXNwbGF5LCBpZCk7CisgICAgICAgIFJVTihUZXN0QXV0b0ZvY3VzLCBpZCk7CisgICAgICAgIFJVTihUZXN0U3RvcFByZXZpZXcsIGlkKTsKKyAgICAgICAgUlVOKFRlc3RUYWtlUGljdHVyZSwgaWQpOworICAgICAgICBSVU4oVGVzdFRha2VNdWx0aXBsZVBpY3R1cmVzLCBpZCk7CisgICAgICAgIFJVTihUZXN0R2V0UGFyYW1ldGVycywgaWQpOworICAgICAgICBSVU4oVGVzdFBpY3R1cmVTaXplLCBpZCk7CisgICAgICAgIFJVTihUZXN0UHJldmlld0NhbGxiYWNrRmxhZywgaWQpOworICAgICAgICBSVU4oVGVzdFJlY29yZGluZywgaWQpOworICAgICAgICBSVU4oVGVzdFByZXZpZXdTaXplLCBpZCk7CisgICAgfQorCisgICAgSU5GTygiQ2FtZXJhU2VydmljZVRlc3QgZmluaXNoZWQiKTsKIH0KZGlmZiAtLWdpdCBhL2NtZHMvYW0vc3JjL2NvbS9hbmRyb2lkL2NvbW1hbmRzL2FtL0FtLmphdmEgYi9jbWRzL2FtL3NyYy9jb20vYW5kcm9pZC9jb21tYW5kcy9hbS9BbS5qYXZhCmluZGV4IDczNmFjMDguLjMwMTg4M2YgMTAwNjQ0Ci0tLSBhL2NtZHMvYW0vc3JjL2NvbS9hbmRyb2lkL2NvbW1hbmRzL2FtL0FtLmphdmEKKysrIGIvY21kcy9hbS9zcmMvY29tL2FuZHJvaWQvY29tbWFuZHMvYW0vQW0uamF2YQpAQCAtMjA1LDcgKzIwNSw3IEBACiAgICAgICAgIFN0cmluZyB1cmkgPSBuZXh0QXJnKCk7CiAgICAgICAgIGlmICh1cmkgIT0gbnVsbCkgewogICAgICAgICAgICAgSW50ZW50IG9sZEludGVudCA9IGludGVudDsKLSAgICAgICAgICAgIGludGVudCA9IEludGVudC5nZXRJbnRlbnQodXJpKTsKKyAgICAgICAgICAgIGludGVudCA9IEludGVudC5wYXJzZVVyaSh1cmksIDApOwogICAgICAgICAgICAgaWYgKG9sZEludGVudC5nZXRBY3Rpb24oKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgaW50ZW50LnNldEFjdGlvbihvbGRJbnRlbnQuZ2V0QWN0aW9uKCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvY21kcy9ibWdyL3NyYy9jb20vYW5kcm9pZC9jb21tYW5kcy9ibWdyL0JtZ3IuamF2YSBiL2NtZHMvYm1nci9zcmMvY29tL2FuZHJvaWQvY29tbWFuZHMvYm1nci9CbWdyLmphdmEKaW5kZXggODI2M2U3NS4uMzliM2EyMCAxMDA2NDQKLS0tIGEvY21kcy9ibWdyL3NyYy9jb20vYW5kcm9pZC9jb21tYW5kcy9ibWdyL0JtZ3IuamF2YQorKysgYi9jbWRzL2JtZ3Ivc3JjL2NvbS9hbmRyb2lkL2NvbW1hbmRzL2JtZ3IvQm1nci5qYXZhCkBAIC0xNzUsNiArMTc1LDExIEBACiAgICAgcHJpdmF0ZSB2b2lkIGRvVHJhbnNwb3J0KCkgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgU3RyaW5nIHdoaWNoID0gbmV4dEFyZygpOworICAgICAgICAgICAgaWYgKHdoaWNoID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzaG93VXNhZ2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIFN0cmluZyBvbGQgPSBtQm1nci5zZWxlY3RCYWNrdXBUcmFuc3BvcnQod2hpY2gpOwogICAgICAgICAgICAgaWYgKG9sZCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJVbmtub3duIHRyYW5zcG9ydCAnIiArIHdoaWNoCkBAIC0zMTgsNiArMzIzLDExIEBACiAKICAgICBwcml2YXRlIHZvaWQgZG9SZXN0b3JlKCkgewogICAgICAgICBTdHJpbmcgYXJnID0gbmV4dEFyZygpOworICAgICAgICBpZiAoYXJnID09IG51bGwpIHsKKyAgICAgICAgICAgIHNob3dVc2FnZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYgKGFyZy5pbmRleE9mKCcuJykgPj0gMCkgewogICAgICAgICAgICAgLy8gaXQncyBhIHBhY2thZ2UgbmFtZQogICAgICAgICAgICAgZG9SZXN0b3JlUGFja2FnZShhcmcpOwpkaWZmIC0tZ2l0IGEvY21kcy9ib290YW5pbWF0aW9uL0Jvb3RBbmltYXRpb24uY3BwIGIvY21kcy9ib290YW5pbWF0aW9uL0Jvb3RBbmltYXRpb24uY3BwCmluZGV4IGFjMmViMGQuLjdhN2Y4ZWQgMTAwNjQ0Ci0tLSBhL2NtZHMvYm9vdGFuaW1hdGlvbi9Cb290QW5pbWF0aW9uLmNwcAorKysgYi9jbWRzL2Jvb3RhbmltYXRpb24vQm9vdEFuaW1hdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx1aS9FR0xVdGlscy5oPgogCiAjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3Nlci5oPgotI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oPgorI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuaD4KIAogI2luY2x1ZGUgPGNvcmUvU2tCaXRtYXAuaD4KICNpbmNsdWRlIDxpbWFnZXMvU2tJbWFnZURlY29kZXIuaD4KZGlmZiAtLWdpdCBhL2NtZHMvaW5wdXQvaW5wdXQgYi9jbWRzL2lucHV0L2lucHV0Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL2NtZHMvaW5zdGFsbGQvY29tbWFuZHMuYyBiL2NtZHMvaW5zdGFsbGQvY29tbWFuZHMuYwppbmRleCA0MWYwNzBjLi5iOGJhM2Y2IDEwMDY0NAotLS0gYS9jbWRzL2luc3RhbGxkL2NvbW1hbmRzLmMKKysrIGIvY21kcy9pbnN0YWxsZC9jb21tYW5kcy5jCkBAIC0xNiw3ICsxNiw3IEBACiAKICNpbmNsdWRlICJpbnN0YWxsZC5oIgogCi1pbnQgaW5zdGFsbChjb25zdCBjaGFyICpwa2duYW1lLCB1aWRfdCB1aWQsIGdpZF90IGdpZCkKK2ludCBpbnN0YWxsKGNvbnN0IGNoYXIgKnBrZ25hbWUsIGludCBlbmNyeXB0ZWRfZnNfZmxhZywgdWlkX3QgdWlkLCBnaWRfdCBnaWQpCiB7CiAgICAgY2hhciBwa2dkaXJbUEtHX1BBVEhfTUFYXTsKICAgICBjaGFyIGxpYmRpcltQS0dfUEFUSF9NQVhdOwpAQCAtMjcsMTEgKzI3LDE3IEBACiAgICAgICAgIAogICAgIH0KIAotICAgIGlmIChjcmVhdGVfcGtnX3BhdGgocGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChjcmVhdGVfcGtnX3BhdGgobGliZGlyLCBQS0dfTElCX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0xJQl9QT1NURklYKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCisgICAgaWYgKGVuY3J5cHRlZF9mc19mbGFnID09IFVTRV9VTkVOQ1JZUFRFRF9GUykgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBrZ2RpciwgUEtHX0RJUl9QUkVGSVgsIHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgobGliZGlyLCBQS0dfTElCX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0xJQl9QT1NURklYKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBrZ2RpciwgUEtHX1NFQ19ESVJfUFJFRklYLCBwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKGxpYmRpciwgUEtHX1NFQ19MSUJfUFJFRklYLCBwa2duYW1lLCBQS0dfTElCX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgIGlmIChta2Rpcihwa2dkaXIsIDA3NTEpIDwgMCkgewogICAgICAgICBMT0dFKCJjYW5ub3QgY3JlYXRlIGRpciAnJXMnOiAlc1xuIiwgcGtnZGlyLCBzdHJlcnJvcihlcnJubykpOwpAQCAtNTYsMjcgKzYyLDM4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCB1bmluc3RhbGwoY29uc3QgY2hhciAqcGtnbmFtZSkKK2ludCB1bmluc3RhbGwoY29uc3QgY2hhciAqcGtnbmFtZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnKQogewogICAgIGNoYXIgcGtnZGlyW1BLR19QQVRIX01BWF07CiAKLSAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBrZ2RpciwgUEtHX0RJUl9QUkVGSVgsIHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZW5jcnlwdGVkX2ZzX2ZsYWcgPT0gVVNFX1VORU5DUllQVEVEX0ZTKSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgocGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBrZ2RpciwgUEtHX1NFQ19ESVJfUFJFRklYLCBwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgICAgICAvKiBkZWxldGUgY29udGVudHMgQU5EIGRpcmVjdG9yeSwgbm8gZXhjZXB0aW9ucyAqLwogICAgIHJldHVybiBkZWxldGVfZGlyX2NvbnRlbnRzKHBrZ2RpciwgMSwgMCk7CiB9CiAKLWludCByZW5hbWVwa2coY29uc3QgY2hhciAqb2xkcGtnbmFtZSwgY29uc3QgY2hhciAqbmV3cGtnbmFtZSkKK2ludCByZW5hbWVwa2coY29uc3QgY2hhciAqb2xkcGtnbmFtZSwgY29uc3QgY2hhciAqbmV3cGtnbmFtZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnKQogewogICAgIGNoYXIgb2xkcGtnZGlyW1BLR19QQVRIX01BWF07CiAgICAgY2hhciBuZXdwa2dkaXJbUEtHX1BBVEhfTUFYXTsKIAotICAgIGlmIChjcmVhdGVfcGtnX3BhdGgob2xkcGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgb2xkcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChjcmVhdGVfcGtnX3BhdGgobmV3cGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgbmV3cGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCisgICAgaWYgKGVuY3J5cHRlZF9mc19mbGFnID09IFVTRV9VTkVOQ1JZUFRFRF9GUykgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKG9sZHBrZ2RpciwgUEtHX0RJUl9QUkVGSVgsIG9sZHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgobmV3cGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgbmV3cGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKG9sZHBrZ2RpciwgUEtHX1NFQ19ESVJfUFJFRklYLCBvbGRwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKG5ld3BrZ2RpciwgUEtHX1NFQ19ESVJfUFJFRklYLCBuZXdwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgIGlmIChyZW5hbWUob2xkcGtnZGlyLCBuZXdwa2dkaXIpIDwgMCkgewogICAgICAgICBMT0dFKCJjYW5ub3QgcmVuYW1lIGRpciAnJXMnIHRvICclcyc6ICVzXG4iLCBvbGRwa2dkaXIsIG5ld3BrZ2Rpciwgc3RyZXJyb3IoZXJybm8pKTsKQEAgLTg1LDI5ICsxMDIsNDEgQEAKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGRlbGV0ZV91c2VyX2RhdGEoY29uc3QgY2hhciAqcGtnbmFtZSkKK2ludCBkZWxldGVfdXNlcl9kYXRhKGNvbnN0IGNoYXIgKnBrZ25hbWUsIGludCBlbmNyeXB0ZWRfZnNfZmxhZykKIHsKICAgICBjaGFyIHBrZ2RpcltQS0dfUEFUSF9NQVhdOwogCi0gICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChwa2dkaXIsIFBLR19ESVJfUFJFRklYLCBwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQotICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGVuY3J5cHRlZF9mc19mbGFnID09IFVTRV9VTkVOQ1JZUFRFRF9GUykgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBrZ2RpciwgUEtHX0RJUl9QUkVGSVgsIHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChwa2dkaXIsIFBLR19TRUNfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICAgICAgLyogZGVsZXRlIGNvbnRlbnRzLCBleGNsdWRpbmcgImxpYiIsIGJ1dCBub3QgdGhlIGRpcmVjdG9yeSBpdHNlbGYgKi8KICAgICByZXR1cm4gZGVsZXRlX2Rpcl9jb250ZW50cyhwa2dkaXIsIDAsICJsaWIiKTsKIH0KIAotaW50IGRlbGV0ZV9jYWNoZShjb25zdCBjaGFyICpwa2duYW1lKQoraW50IGRlbGV0ZV9jYWNoZShjb25zdCBjaGFyICpwa2duYW1lLCBpbnQgZW5jcnlwdGVkX2ZzX2ZsYWcpCiB7CiAgICAgY2hhciBjYWNoZWRpcltQS0dfUEFUSF9NQVhdOwogCi0gICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChjYWNoZWRpciwgQ0FDSEVfRElSX1BSRUZJWCwgcGtnbmFtZSwgQ0FDSEVfRElSX1BPU1RGSVgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KKyAgICBpZiAoZW5jcnlwdGVkX2ZzX2ZsYWcgPT0gVVNFX1VORU5DUllQVEVEX0ZTKSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgoY2FjaGVkaXIsIENBQ0hFX0RJUl9QUkVGSVgsIHBrZ25hbWUsIENBQ0hFX0RJUl9QT1NURklYKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKGNhY2hlZGlyLCBDQUNIRV9TRUNfRElSX1BSRUZJWCwgcGtnbmFtZSwgQ0FDSEVfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgICAgICAvKiBkZWxldGUgY29udGVudHMsIG5vdCB0aGUgZGlyZWN0b3J5LCBubyBleGNlcHRpb25zICovCiAgICAgcmV0dXJuIGRlbGV0ZV9kaXJfY29udGVudHMoY2FjaGVkaXIsIDAsIDApOwogfQogCisvKiBUT0RPKG9hbSk6IGRlcGVuZGluZyBvbiB1c2UgY2FzZSAoZWNyeXB0ZnMgb3IgZG1jcnlwdCkKKyAqIGNoYW5nZSBpbXBsZW1lbnRhdGlvbgorICovCiBzdGF0aWMgaW50IGRpc2tfZnJlZSgpCiB7CiAgICAgc3RydWN0IHN0YXRmcyBzZnM7CkBAIC0xMzksNiArMTY4LDM5IEBACiAgICAgTE9HSSgiZnJlZV9jYWNoZSglZCkgYXZhaWwgJWRcbiIsIGZyZWVfc2l6ZSwgYXZhaWwpOwogICAgIGlmIChhdmFpbCA+PSBmcmVlX3NpemUpIHJldHVybiAwOwogCisgICAgLyogRmlyc3QgdHJ5IGVuY3J5cHRlZCBkaXIgKi8KKyAgICBkID0gb3BlbmRpcihQS0dfU0VDX0RJUl9QUkVGSVgpOworICAgIGlmIChkID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiY2Fubm90IG9wZW4gJXNcbiIsIFBLR19TRUNfRElSX1BSRUZJWCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGZkID0gZGlyZmQoZCk7CisKKyAgICAgICAgd2hpbGUgKChkZSA9IHJlYWRkaXIoZCkpKSB7CisgICAgICAgICAgIGlmIChkZS0+ZF90eXBlICE9IERUX0RJUikgY29udGludWU7CisgICAgICAgICAgIG5hbWUgPSBkZS0+ZF9uYW1lOworCisgICAgICAgICAgICAvKiBhbHdheXMgc2tpcCAiLiIgYW5kICIuLiIgKi8KKyAgICAgICAgICAgIGlmIChuYW1lWzBdID09ICcuJykgeworICAgICAgICAgICAgICAgIGlmIChuYW1lWzFdID09IDApIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmICgobmFtZVsxXSA9PSAnLicpICYmIChuYW1lWzJdID09IDApKSBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3ViZmQgPSBvcGVuYXQoZGZkLCBuYW1lLCBPX1JET05MWSB8IE9fRElSRUNUT1JZKTsKKyAgICAgICAgICAgIGlmIChzdWJmZCA8IDApIGNvbnRpbnVlOworCisgICAgICAgICAgICBkZWxldGVfZGlyX2NvbnRlbnRzX2ZkKHN1YmZkLCAiY2FjaGUiKTsKKyAgICAgICAgICAgIGNsb3NlKHN1YmZkKTsKKworICAgICAgICAgICAgYXZhaWwgPSBkaXNrX2ZyZWUoKTsKKyAgICAgICAgICAgIGlmIChhdmFpbCA+PSBmcmVlX3NpemUpIHsKKyAgICAgICAgICAgICAgICBjbG9zZWRpcihkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjbG9zZWRpcihkKTsKKyAgICB9CisKKyAgICAvKiBOZXh0IHRyeSB1bmVuY3J5cHRlZCBkaXIuLi4gKi8KICAgICBkID0gb3BlbmRpcihQS0dfRElSX1BSRUZJWCk7CiAgICAgaWYgKGQgPT0gTlVMTCkgewogICAgICAgICBMT0dFKCJjYW5ub3Qgb3BlbiAlc1xuIiwgUEtHX0RJUl9QUkVGSVgpOwpAQCAtMzE0LDcgKzM3Niw3IEBACiAKIGludCBnZXRfc2l6ZShjb25zdCBjaGFyICpwa2duYW1lLCBjb25zdCBjaGFyICphcGtwYXRoLAogICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ3ZGxvY2tfYXBrcGF0aCwKLSAgICAgICAgICAgICBpbnQgKl9jb2Rlc2l6ZSwgaW50ICpfZGF0YXNpemUsIGludCAqX2NhY2hlc2l6ZSkKKyAgICAgICAgICAgICBpbnQgKl9jb2Rlc2l6ZSwgaW50ICpfZGF0YXNpemUsIGludCAqX2NhY2hlc2l6ZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnKQogewogICAgIERJUiAqZDsKICAgICBpbnQgZGZkOwpAQCAtMzQ5LDggKzQxMSwxNCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChwYXRoLCBQS0dfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkgewotICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKGVuY3J5cHRlZF9mc19mbGFnID09IDApIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChwYXRoLCBQS0dfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkgeworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChwYXRoLCBQS0dfU0VDX0RJUl9QUkVGSVgsIHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpIHsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGQgPSBvcGVuZGlyKHBhdGgpOwpkaWZmIC0tZ2l0IGEvY21kcy9pbnN0YWxsZC9pbnN0YWxsZC5jIGIvY21kcy9pbnN0YWxsZC9pbnN0YWxsZC5jCmluZGV4IGY2Y2E5OTguLjg4MmM0OTMgMTAwNjQ0Ci0tLSBhL2NtZHMvaW5zdGFsbGQvaW5zdGFsbGQuYworKysgYi9jbWRzL2luc3RhbGxkL2luc3RhbGxkLmMKQEAgLTI5LDcgKzI5LDcgQEAKIAogc3RhdGljIGludCBkb19pbnN0YWxsKGNoYXIgKiphcmcsIGNoYXIgcmVwbHlbUkVQTFlfTUFYXSkKIHsKLSAgICByZXR1cm4gaW5zdGFsbChhcmdbMF0sIGF0b2koYXJnWzFdKSwgYXRvaShhcmdbMl0pKTsgLyogcGtnbmFtZSwgdWlkLCBnaWQgKi8KKyAgICByZXR1cm4gaW5zdGFsbChhcmdbMF0sIGF0b2koYXJnWzFdKSwgYXRvaShhcmdbMl0pLCBhdG9pKGFyZ1szXSkpOyAvKiBwa2duYW1lLCB1aWQsIGdpZCAqLwogfQogCiBzdGF0aWMgaW50IGRvX2RleG9wdChjaGFyICoqYXJnLCBjaGFyIHJlcGx5W1JFUExZX01BWF0pCkBAIC01MCwxMiArNTAsMTIgQEAKIAogc3RhdGljIGludCBkb19yZW1vdmUoY2hhciAqKmFyZywgY2hhciByZXBseVtSRVBMWV9NQVhdKQogewotICAgIHJldHVybiB1bmluc3RhbGwoYXJnWzBdKTsgLyogcGtnbmFtZSAqLworICAgIHJldHVybiB1bmluc3RhbGwoYXJnWzBdLCBhdG9pKGFyZ1sxXSkpOyAvKiBwa2duYW1lICovCiB9CiAKIHN0YXRpYyBpbnQgZG9fcmVuYW1lKGNoYXIgKiphcmcsIGNoYXIgcmVwbHlbUkVQTFlfTUFYXSkKIHsKLSAgICByZXR1cm4gcmVuYW1lcGtnKGFyZ1swXSwgYXJnWzFdKTsgLyogb2xkcGtnbmFtZSwgbmV3cGtnbmFtZSAqLworICAgIHJldHVybiByZW5hbWVwa2coYXJnWzBdLCBhcmdbMV0sIGF0b2koYXJnWzJdKSk7IC8qIG9sZHBrZ25hbWUsIG5ld3BrZ25hbWUgKi8KIH0KIAogc3RhdGljIGludCBkb19mcmVlX2NhY2hlKGNoYXIgKiphcmcsIGNoYXIgcmVwbHlbUkVQTFlfTUFYXSkgLyogVE9ETyBpbnQ6ZnJlZV9zaXplICovCkBAIC02NSw3ICs2NSw3IEBACiAKIHN0YXRpYyBpbnQgZG9fcm1fY2FjaGUoY2hhciAqKmFyZywgY2hhciByZXBseVtSRVBMWV9NQVhdKQogewotICAgIHJldHVybiBkZWxldGVfY2FjaGUoYXJnWzBdKTsgLyogcGtnbmFtZSAqLworICAgIHJldHVybiBkZWxldGVfY2FjaGUoYXJnWzBdLCBhdG9pKGFyZ1sxXSkpOyAvKiBwa2duYW1lICovCiB9CiAKIHN0YXRpYyBpbnQgZG9fcHJvdGVjdChjaGFyICoqYXJnLCBjaGFyIHJlcGx5W1JFUExZX01BWF0pCkBAIC04MSw3ICs4MSw3IEBACiAgICAgaW50IHJlcyA9IDA7CiAKICAgICAgICAgLyogcGtnZGlyLCBhcGtwYXRoICovCi0gICAgcmVzID0gZ2V0X3NpemUoYXJnWzBdLCBhcmdbMV0sIGFyZ1syXSwgJmNvZGVzaXplLCAmZGF0YXNpemUsICZjYWNoZXNpemUpOworICAgIHJlcyA9IGdldF9zaXplKGFyZ1swXSwgYXJnWzFdLCBhcmdbMl0sICZjb2Rlc2l6ZSwgJmRhdGFzaXplLCAmY2FjaGVzaXplLCBhdG9pKGFyZ1szXSkpOwogCiAgICAgc3ByaW50ZihyZXBseSwiJWQgJWQgJWQiLCBjb2Rlc2l6ZSwgZGF0YXNpemUsIGNhY2hlc2l6ZSk7CiAgICAgcmV0dXJuIHJlczsKQEAgLTg5LDcgKzg5LDcgQEAKIAogc3RhdGljIGludCBkb19ybV91c2VyX2RhdGEoY2hhciAqKmFyZywgY2hhciByZXBseVtSRVBMWV9NQVhdKQogewotICAgIHJldHVybiBkZWxldGVfdXNlcl9kYXRhKGFyZ1swXSk7IC8qIHBrZ25hbWUgKi8KKyAgICByZXR1cm4gZGVsZXRlX3VzZXJfZGF0YShhcmdbMF0sIGF0b2koYXJnWzFdKSk7IC8qIHBrZ25hbWUgKi8KIH0KIAogc3RhdGljIGludCBkb19tb3ZlZmlsZXMoY2hhciAqKmFyZywgY2hhciByZXBseVtSRVBMWV9NQVhdKQpAQCAtMTA1LDE3ICsxMDUsMTcgQEAKIAogc3RydWN0IGNtZGluZm8gY21kc1tdID0gewogICAgIHsgInBpbmciLCAgICAgICAgICAgICAgICAgMCwgZG9fcGluZyB9LAotICAgIHsgImluc3RhbGwiLCAgICAgICAgICAgICAgMywgZG9faW5zdGFsbCB9LAorICAgIHsgImluc3RhbGwiLCAgICAgICAgICAgICAgNCwgZG9faW5zdGFsbCB9LAogICAgIHsgImRleG9wdCIsICAgICAgICAgICAgICAgMywgZG9fZGV4b3B0IH0sCiAgICAgeyAibW92ZWRleCIsICAgICAgICAgICAgICAyLCBkb19tb3ZlX2RleCB9LAogICAgIHsgInJtZGV4IiwgICAgICAgICAgICAgICAgMSwgZG9fcm1fZGV4IH0sCi0gICAgeyAicmVtb3ZlIiwgICAgICAgICAgICAgICAxLCBkb19yZW1vdmUgfSwKLSAgICB7ICJyZW5hbWUiLCAgICAgICAgICAgICAgIDIsIGRvX3JlbmFtZSB9LAorICAgIHsgInJlbW92ZSIsICAgICAgICAgICAgICAgMiwgZG9fcmVtb3ZlIH0sCisgICAgeyAicmVuYW1lIiwgICAgICAgICAgICAgICAzLCBkb19yZW5hbWUgfSwKICAgICB7ICJmcmVlY2FjaGUiLCAgICAgICAgICAgIDEsIGRvX2ZyZWVfY2FjaGUgfSwKLSAgICB7ICJybWNhY2hlIiwgICAgICAgICAgICAgIDEsIGRvX3JtX2NhY2hlIH0sCisgICAgeyAicm1jYWNoZSIsICAgICAgICAgICAgICAyLCBkb19ybV9jYWNoZSB9LAogICAgIHsgInByb3RlY3QiLCAgICAgICAgICAgICAgMiwgZG9fcHJvdGVjdCB9LAotICAgIHsgImdldHNpemUiLCAgICAgICAgICAgICAgMywgZG9fZ2V0X3NpemUgfSwKLSAgICB7ICJybXVzZXJkYXRhIiwgICAgICAgICAgIDEsIGRvX3JtX3VzZXJfZGF0YSB9LAorICAgIHsgImdldHNpemUiLCAgICAgICAgICAgICAgNCwgZG9fZ2V0X3NpemUgfSwKKyAgICB7ICJybXVzZXJkYXRhIiwgICAgICAgICAgIDIsIGRvX3JtX3VzZXJfZGF0YSB9LAogICAgIHsgIm1vdmVmaWxlcyIsICAgICAgICAgICAgMCwgZG9fbW92ZWZpbGVzIH0sCiB9OwogCmRpZmYgLS1naXQgYS9jbWRzL2luc3RhbGxkL2luc3RhbGxkLmggYi9jbWRzL2luc3RhbGxkL2luc3RhbGxkLmgKaW5kZXggY2ZjZGI5OC4uOGU0YWRiMSAxMDA2NDQKLS0tIGEvY21kcy9pbnN0YWxsZC9pbnN0YWxsZC5oCisrKyBiL2NtZHMvaW5zdGFsbGQvaW5zdGFsbGQuaApAQCAtNDgsMTYgKzQ4LDIzIEBACiAvKiBlbGVtZW50cyBjb21iaW5lZCB3aXRoIGEgdmFsaWQgcGFja2FnZSBuYW1lIHRvIGZvcm0gcGF0aHMgKi8KIAogI2RlZmluZSBQS0dfRElSX1BSRUZJWCAgICAgICAgICIvZGF0YS9kYXRhLyIKKyNkZWZpbmUgUEtHX1NFQ19ESVJfUFJFRklYICAgICAiL2RhdGEvc2VjdXJlL2RhdGEvIgogI2RlZmluZSBQS0dfRElSX1BPU1RGSVggICAgICAgICIiCiAKICNkZWZpbmUgUEtHX0xJQl9QUkVGSVggICAgICAgICAiL2RhdGEvZGF0YS8iCisjZGVmaW5lIFBLR19TRUNfTElCX1BSRUZJWCAgICAgIi9kYXRhL3NlY3VyZS9kYXRhLyIKICNkZWZpbmUgUEtHX0xJQl9QT1NURklYICAgICAgICAiL2xpYiIKIAogI2RlZmluZSBDQUNIRV9ESVJfUFJFRklYICAgICAgICIvZGF0YS9kYXRhLyIKKyNkZWZpbmUgQ0FDSEVfU0VDX0RJUl9QUkVGSVggICAiL2RhdGEvc2VjdXJlL2RhdGEvIgogI2RlZmluZSBDQUNIRV9ESVJfUE9TVEZJWCAgICAgICIvY2FjaGUiCiAKICNkZWZpbmUgQVBLX0RJUl9QUkVGSVggICAgICAgICAiL2RhdGEvYXBwLyIKIAorLyogRW5jcnlwdGVkIEZpbGUgU1lzdGVtcyBjb25zdGFudHMgKi8KKyNkZWZpbmUgVVNFX0VOQ1JZUFRFRF9GUyAgICAgICAxCisjZGVmaW5lIFVTRV9VTkVOQ1JZUFRFRF9GUyAgICAgMAorCiAvKiBvdGhlciBoYW5keSBjb25zdGFudHMgKi8KIAogI2RlZmluZSBQUk9URUNURURfRElSX1BSRUZJWCAgIi9kYXRhL2FwcC1wcml2YXRlLyIKQEAgLTg5LDE2ICs5NiwxNiBAQAogCiAvKiBjb21tYW5kcy5jICovCiAKLWludCBpbnN0YWxsKGNvbnN0IGNoYXIgKnBrZ25hbWUsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKLWludCB1bmluc3RhbGwoY29uc3QgY2hhciAqcGtnbmFtZSk7Ci1pbnQgcmVuYW1lcGtnKGNvbnN0IGNoYXIgKm9sZHBrZ25hbWUsIGNvbnN0IGNoYXIgKm5ld3BrZ25hbWUpOwotaW50IGRlbGV0ZV91c2VyX2RhdGEoY29uc3QgY2hhciAqcGtnbmFtZSk7Ci1pbnQgZGVsZXRlX2NhY2hlKGNvbnN0IGNoYXIgKnBrZ25hbWUpOworaW50IGluc3RhbGwoY29uc3QgY2hhciAqcGtnbmFtZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CitpbnQgdW5pbnN0YWxsKGNvbnN0IGNoYXIgKnBrZ25hbWUsIGludCBlbmNyeXB0ZWRfZnNfZmxhZyk7CitpbnQgcmVuYW1lcGtnKGNvbnN0IGNoYXIgKm9sZHBrZ25hbWUsIGNvbnN0IGNoYXIgKm5ld3BrZ25hbWUsIGludCBlbmNyeXB0ZWRfZnNfZmxhZyk7CitpbnQgZGVsZXRlX3VzZXJfZGF0YShjb25zdCBjaGFyICpwa2duYW1lLCBpbnQgZW5jcnlwdGVkX2ZzX2ZsYWcpOworaW50IGRlbGV0ZV9jYWNoZShjb25zdCBjaGFyICpwa2duYW1lLCBpbnQgZW5jcnlwdGVkX2ZzX2ZsYWcpOwogaW50IG1vdmVfZGV4KGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAqZHN0KTsKIGludCBybV9kZXgoY29uc3QgY2hhciAqcGF0aCk7CiBpbnQgcHJvdGVjdChjaGFyICpwa2duYW1lLCBnaWRfdCBnaWQpOwogaW50IGdldF9zaXplKGNvbnN0IGNoYXIgKnBrZ25hbWUsIGNvbnN0IGNoYXIgKmFwa3BhdGgsIGNvbnN0IGNoYXIgKmZ3ZGxvY2tfYXBrcGF0aCwKLSAgICAgICAgICAgICBpbnQgKmNvZGVzaXplLCBpbnQgKmRhdGFzaXplLCBpbnQgKmNhY2hlc2l6ZSk7CisgICAgICAgICAgICAgaW50ICpjb2Rlc2l6ZSwgaW50ICpkYXRhc2l6ZSwgaW50ICpjYWNoZXNpemUsIGludCBlbmNyeXB0ZWRfZnNfZmxhZyk7CiBpbnQgZnJlZV9jYWNoZShpbnQgZnJlZV9zaXplKTsKIGludCBkZXhvcHQoY29uc3QgY2hhciAqYXBrX3BhdGgsIHVpZF90IHVpZCwgaW50IGlzX3B1YmxpYyk7CiBpbnQgbW92ZWZpbGVzKCk7CmRpZmYgLS1naXQgYS9jbWRzL3NlcnZpY2VtYW5hZ2VyL2JjdGVzdC5jIGIvY21kcy9zZXJ2aWNlbWFuYWdlci9iY3Rlc3QuYwppbmRleCA2ZGVlODE2Li5mZjVhY2VkIDEwMDY0NAotLS0gYS9jbWRzL3NlcnZpY2VtYW5hZ2VyL2JjdGVzdC5jCisrKyBiL2NtZHMvc2VydmljZW1hbmFnZXIvYmN0ZXN0LmMKQEAgLTE0LDYgKzE0LDcgQEAKICAgICBzdHJ1Y3QgYmluZGVyX2lvIG1zZywgcmVwbHk7CiAKICAgICBiaW9faW5pdCgmbXNnLCBpb2RhdGEsIHNpemVvZihpb2RhdGEpLCA0KTsKKyAgICBiaW9fcHV0X3VpbnQzMigmbXNnLCAwKTsgIC8vIHN0cmljdCBtb2RlIGhlYWRlcgogICAgIGJpb19wdXRfc3RyaW5nMTZfeCgmbXNnLCBTVkNfTUdSX05BTUUpOwogICAgIGJpb19wdXRfc3RyaW5nMTZfeCgmbXNnLCBuYW1lKTsKIApAQCAtMzcsNyArMzgsNyBAQAogICAgIHN0cnVjdCBiaW5kZXJfaW8gbXNnLCByZXBseTsKIAogICAgIGJpb19pbml0KCZtc2csIGlvZGF0YSwgc2l6ZW9mKGlvZGF0YSksIDQpOwotCisgICAgYmlvX3B1dF91aW50MzIoJm1zZywgMCk7ICAvLyBzdHJpY3QgbW9kZSBoZWFkZXIKICAgICBiaW9fcHV0X3N0cmluZzE2X3goJm1zZywgU1ZDX01HUl9OQU1FKTsKICAgICBiaW9fcHV0X3N0cmluZzE2X3goJm1zZywgbmFtZSk7CiAgICAgYmlvX3B1dF9vYmooJm1zZywgcHRyKTsKZGlmZiAtLWdpdCBhL2NtZHMvc2VydmljZW1hbmFnZXIvc2VydmljZV9tYW5hZ2VyLmMgYi9jbWRzL3NlcnZpY2VtYW5hZ2VyL3NlcnZpY2VfbWFuYWdlci5jCmluZGV4IGEyMDA2YzEuLjAxY2RkYzYgMTAwNjQ0Ci0tLSBhL2NtZHMvc2VydmljZW1hbmFnZXIvc2VydmljZV9tYW5hZ2VyLmMKKysrIGIvY21kcy9zZXJ2aWNlbWFuYWdlci9zZXJ2aWNlX21hbmFnZXIuYwpAQCAtMTkzLDYgKzE5Myw3IEBACiAgICAgdWludDE2X3QgKnM7CiAgICAgdW5zaWduZWQgbGVuOwogICAgIHZvaWQgKnB0cjsKKyAgICB1aW50MzJfdCBzdHJpY3RfcG9saWN5OwogCiAvLyAgICBMT0dJKCJ0YXJnZXQ9JXAgY29kZT0lZCBwaWQ9JWQgdWlkPSVkXG4iLAogLy8gICAgICAgICB0eG4tPnRhcmdldCwgdHhuLT5jb2RlLCB0eG4tPnNlbmRlcl9waWQsIHR4bi0+c2VuZGVyX2V1aWQpOwpAQCAtMjAwLDggKzIwMSwxMiBAQAogICAgIGlmICh0eG4tPnRhcmdldCAhPSBzdmNtZ3JfaGFuZGxlKQogICAgICAgICByZXR1cm4gLTE7CiAKKyAgICAvLyBFcXVpdmFsZW50IHRvIFBhcmNlbDo6ZW5mb3JjZUludGVyZmFjZSgpLCByZWFkaW5nIHRoZSBSUEMKKyAgICAvLyBoZWFkZXIgd2l0aCB0aGUgc3RyaWN0IG1vZGUgcG9saWN5IG1hc2sgYW5kIHRoZSBpbnRlcmZhY2UgbmFtZS4KKyAgICAvLyBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZSBzdHJpY3RfcG9saWN5IGFuZCBkb24ndCBwcm9wYWdhdGUgaXQKKyAgICAvLyBmdXJ0aGVyIChzaW5jZSB3ZSBkbyBubyBvdXRib3VuZCBSUENzIGFueXdheSkuCisgICAgc3RyaWN0X3BvbGljeSA9IGJpb19nZXRfdWludDMyKG1zZyk7CiAgICAgcyA9IGJpb19nZXRfc3RyaW5nMTYobXNnLCAmbGVuKTsKLQogICAgIGlmICgobGVuICE9IChzaXplb2Yoc3ZjbWdyX2lkKSAvIDIpKSB8fAogICAgICAgICBtZW1jbXAoc3ZjbWdyX2lkLCBzLCBzaXplb2Yoc3ZjbWdyX2lkKSkpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsImludmFsaWQgaWQgJXNcbiIsIHN0cjgocykpOwpkaWZmIC0tZ2l0IGEvY21kcy9zdGFnZWZyaWdodC9BbmRyb2lkLm1rIGIvY21kcy9zdGFnZWZyaWdodC9BbmRyb2lkLm1rCmluZGV4IDM0NjQ4YjUuLjlhOTcyODQgMTAwNjQ0Ci0tLSBhL2NtZHMvc3RhZ2VmcmlnaHQvQW5kcm9pZC5taworKysgYi9jbWRzL3N0YWdlZnJpZ2h0L0FuZHJvaWQubWsKQEAgLTEsNSArMSwzIEBACi1pZmVxICgkKEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVCksdHJ1ZSkKLQogTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCiAKIGluY2x1ZGUgJChDTEVBUl9WQVJTKQpAQCAtOSwxMSArNywxMiBAQAogCVNpbmVTb3VyY2UuY3BwCiAKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gXAotCWxpYnN0YWdlZnJpZ2h0IGxpYm1lZGlhIGxpYnV0aWxzIGxpYmJpbmRlcgorCWxpYnN0YWdlZnJpZ2h0IGxpYm1lZGlhIGxpYnV0aWxzIGxpYmJpbmRlciBsaWJzdGFnZWZyaWdodF9mb3VuZGF0aW9uCiAKIExPQ0FMX0NfSU5DTFVERVM6PSBcCiAJJChKTklfSF9JTkNMVURFKSBcCiAJZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0IFwKKwlmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZSBcCiAJJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlCiAKIExPQ0FMX0NGTEFHUyArPSAtV25vLW11bHRpY2hhcgpAQCAtNzEsNSArNzAsMyBAQAogTE9DQUxfTU9EVUxFOj0gYXVkaW9sb29wCiAKIGluY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQotCi1lbmRpZgpkaWZmIC0tZ2l0IGEvY21kcy9zdGFnZWZyaWdodC9yZWNvcmQuY3BwIGIvY21kcy9zdGFnZWZyaWdodC9yZWNvcmQuY3BwCmluZGV4IDg0NWM4NTQuLjVhODdmNGMgMTAwNjQ0Ci0tLSBhL2NtZHMvc3RhZ2VmcmlnaHQvcmVjb3JkLmNwcAorKysgYi9jbWRzL3N0YWdlZnJpZ2h0L3JlY29yZC5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQAogICAgIE9NWENsaWVudCBjbGllbnQ7CiAgICAgQ0hFQ0tfRVEoY2xpZW50LmNvbm5lY3QoKSwgT0spOwogCi0jaWYgMQorI2lmIDAKICAgICBzcDxNZWRpYVNvdXJjZT4gc291cmNlID0gY3JlYXRlU291cmNlKGFyZ3ZbMV0pOwogCiAgICAgaWYgKHNvdXJjZSA9PSBOVUxMKSB7CkBAIC0xNjUsMTQgKzE2NSwxNSBAQAogICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5SGVpZ2h0LCAmaGVpZ2h0KTsKICAgICBDSEVDSyhzdWNjZXNzKTsKICNlbHNlCi0gICAgaW50IHdpZHRoID0gODAwOworICAgIGludCB3aWR0aCA9IDcyMDsKICAgICBpbnQgaGVpZ2h0ID0gNDgwOwogICAgIHNwPE1lZGlhU291cmNlPiBkZWNvZGVyID0gbmV3IER1bW15U291cmNlKHdpZHRoLCBoZWlnaHQpOwogI2VuZGlmCiAKICAgICBzcDxNZXRhRGF0YT4gZW5jX21ldGEgPSBuZXcgTWV0YURhdGE7CiAgICAgLy8gZW5jX21ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzKTsKLSAgICBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX01QRUc0KTsKKyAgICAvLyBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX01QRUc0KTsKKyAgICBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQyk7CiAgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlXaWR0aCwgd2lkdGgpOwogICAgIGVuY19tZXRhLT5zZXRJbnQzMihrS2V5SGVpZ2h0LCBoZWlnaHQpOwogCkBAIC0yMTMsNiArMjE0LDggQEAKIAogI2lmIDAKICAgICBDYW1lcmFTb3VyY2UgKnNvdXJjZSA9IENhbWVyYVNvdXJjZTo6Q3JlYXRlKCk7CisgICAgc291cmNlLT5zdGFydCgpOworCiAgICAgcHJpbnRmKCJzb3VyY2UgPSAlcFxuIiwgc291cmNlKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKQEAgLTIyNyw2ICsyMzAsOCBAQAogICAgICAgICBidWZmZXIgPSBOVUxMOwogICAgIH0KIAorICAgIHNvdXJjZS0+c3RvcCgpOworCiAgICAgZGVsZXRlIHNvdXJjZTsKICAgICBzb3VyY2UgPSBOVUxMOwogI2VuZGlmCmRpZmYgLS1naXQgYS9jbWRzL3N0YWdlZnJpZ2h0L3N0YWdlZnJpZ2h0LmNwcCBiL2NtZHMvc3RhZ2VmcmlnaHQvc3RhZ2VmcmlnaHQuY3BwCmluZGV4IGI4MzhmMzIuLmI3YTNmOTkgMTAwNjQ0Ci0tLSBhL2NtZHMvc3RhZ2VmcmlnaHQvc3RhZ2VmcmlnaHQuY3BwCisrKyBiL2NtZHMvc3RhZ2VmcmlnaHQvc3RhZ2VmcmlnaHQuY3BwCkBAIC0yNiwxMiArMjYsMTEgQEAKICNpbmNsdWRlIDxiaW5kZXIvUHJvY2Vzc1N0YXRlLmg+CiAjaW5jbHVkZSA8bWVkaWEvSU1lZGlhUGxheWVyU2VydmljZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0F1ZGlvUGxheWVyLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQ2FjaGluZ0RhdGFTb3VyY2UuaD4KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9GaWxlU291cmNlLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvSFRUUERhdGFTb3VyY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvSlBFR1NvdXJjZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXh0cmFjdG9yLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgpAQCAtMzksNiArMzgsOSBAQAogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L09NWENvZGVjLmg+CiAjaW5jbHVkZSA8bWVkaWEvbWVkaWFtZXRhZGF0YXJldHJpZXZlci5oPgogCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTVBFRzRXcml0ZXIuaD4KKwogdXNpbmcgbmFtZXNwYWNlIGFuZHJvaWQ7CiAKIHN0YXRpYyBsb25nIGdOdW1SZXBldGl0aW9uczsKQEAgLTQ2LDYgKzQ4LDggQEAKIHN0YXRpYyBsb25nIGdSZXByb2R1Y2VCdWc7ICAvLyBpZiBub3QgLTEuCiBzdGF0aWMgYm9vbCBnUHJlZmVyU29mdHdhcmVDb2RlYzsKIHN0YXRpYyBib29sIGdQbGF5YmFja0F1ZGlvOworc3RhdGljIGJvb2wgZ1dyaXRlTVA0Oworc3RhdGljIFN0cmluZzggZ1dyaXRlTVA0RmlsZW5hbWU7CiAKIHN0YXRpYyBpbnQ2NF90IGdldE5vd1VzKCkgewogICAgIHN0cnVjdCB0aW1ldmFsIHR2OwpAQCAtODUsNiArODksNyBAQAogICAgIGlmIChnUGxheWJhY2tBdWRpbykgewogICAgICAgICBBdWRpb1BsYXllciAqcGxheWVyID0gbmV3IEF1ZGlvUGxheWVyKE5VTEwpOwogICAgICAgICBwbGF5ZXItPnNldFNvdXJjZShyYXdTb3VyY2UpOworICAgICAgICByYXdTb3VyY2UuY2xlYXIoKTsKIAogICAgICAgICBwbGF5ZXItPnN0YXJ0KHRydWUgLyogc291cmNlQWxyZWFkeVN0YXJ0ZWQgKi8pOwogCkBAIC05NSw2ICsxMDAsOCBAQAogCiAgICAgICAgIGRlbGV0ZSBwbGF5ZXI7CiAgICAgICAgIHBsYXllciA9IE5VTEw7CisKKyAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoZ1JlcHJvZHVjZUJ1ZyA+PSAzICYmIGdSZXByb2R1Y2VCdWcgPD0gNSkgewogICAgICAgICBpbnQ2NF90IGR1cmF0aW9uVXM7CiAgICAgICAgIENIRUNLKG1ldGEtPmZpbmRJbnQ2NChrS2V5RHVyYXRpb24sICZkdXJhdGlvblVzKSk7CkBAIC0yNTYsNiArMjYzLDIxIEBACiAgICAgfQogfQogCitzdGF0aWMgdm9pZCB3cml0ZVNvdXJjZVRvTVA0KGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKSB7CisgICAgc3A8TVBFRzRXcml0ZXI+IHdyaXRlciA9CisgICAgICAgIG5ldyBNUEVHNFdyaXRlcihnV3JpdGVNUDRGaWxlbmFtZS5zdHJpbmcoKSk7CisKKyAgICBDSEVDS19FUSh3cml0ZXItPmFkZFNvdXJjZShzb3VyY2UpLCBPSyk7CisKKyAgICBzcDxNZXRhRGF0YT4gcGFyYW1zID0gbmV3IE1ldGFEYXRhOworICAgIENIRUNLX0VRKHdyaXRlci0+c3RhcnQoKSwgT0spOworCisgICAgd2hpbGUgKCF3cml0ZXItPnJlYWNoZWRFT1MoKSkgeworICAgICAgICB1c2xlZXAoMTAwMDAwKTsKKyAgICB9CisgICAgd3JpdGVyLT5zdG9wKCk7Cit9CisKIHN0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKm1lKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXNcbiIsIG1lKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAtaChlbHApXG4iKTsKQEAgLTI2OCw2ICsyOTAsNyBAQAogICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgIC10KGh1bWJuYWlsKSBleHRyYWN0IHZpZGVvIHRodW1ibmFpbCBvciBhbGJ1bSBhcnRcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgIC1zKG9mdHdhcmUpIHByZWZlciBzb2Z0d2FyZSBjb2RlY1xuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgLW8gcGxheWJhY2sgYXVkaW9cbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgIC13KHJpdGUpIGZpbGVuYW1lICh3cml0ZSB0byAubXA0IGZpbGUpXG4iKTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CkBAIC0yODIsOSArMzA1LDEwIEBACiAgICAgZ1JlcHJvZHVjZUJ1ZyA9IC0xOwogICAgIGdQcmVmZXJTb2Z0d2FyZUNvZGVjID0gZmFsc2U7CiAgICAgZ1BsYXliYWNrQXVkaW8gPSBmYWxzZTsKKyAgICBnV3JpdGVNUDQgPSBmYWxzZTsKIAogICAgIGludCByZXM7Ci0gICAgd2hpbGUgKChyZXMgPSBnZXRvcHQoYXJnYywgYXJndiwgImhhbjpsbTpiOnB0c28iKSkgPj0gMCkgeworICAgIHdoaWxlICgocmVzID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJoYW46bG06YjpwdHNvdzoiKSkgPj0gMCkgewogICAgICAgICBzd2l0Y2ggKHJlcykgewogICAgICAgICAgICAgY2FzZSAnYSc6CiAgICAgICAgICAgICB7CkBAIC0zMjAsNiArMzQ0LDEzIEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgJ3cnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdXcml0ZU1QNCA9IHRydWU7CisgICAgICAgICAgICAgICAgZ1dyaXRlTVA0RmlsZW5hbWUuc2V0VG8ob3B0YXJnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSAncCc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZHVtcFByb2ZpbGVzID0gdHJ1ZTsKQEAgLTQ3OSwxOSArNTEwLDkgQEAKICAgICBmb3IgKGludCBrID0gMDsgayA8IGFyZ2M7ICsraykgewogICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSA9IGFyZ3Zba107CiAKLSAgICAgICAgc3A8RGF0YVNvdXJjZT4gZGF0YVNvdXJjZTsKLSAgICAgICAgaWYgKCFzdHJuY2FzZWNtcCgiaHR0cDovLyIsIGZpbGVuYW1lLCA3KSkgewotICAgICAgICAgICAgZGF0YVNvdXJjZSA9IG5ldyBIVFRQRGF0YVNvdXJjZShmaWxlbmFtZSk7Ci0gICAgICAgICAgICBpZiAoKChIVFRQRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UuZ2V0KCkpLT5jb25uZWN0KCkgIT0gT0spIHsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImZhaWxlZCB0byBjb25uZWN0IHRvIEhUVFAgc2VydmVyLlxuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGF0YVNvdXJjZSA9IG5ldyBDYWNoaW5nRGF0YVNvdXJjZShkYXRhU291cmNlLCAzMiAqIDEwMjQsIDIwKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBuZXcgRmlsZVNvdXJjZShmaWxlbmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3A8RGF0YVNvdXJjZT4gZGF0YVNvdXJjZSA9IERhdGFTb3VyY2U6OkNyZWF0ZUZyb21VUkkoZmlsZW5hbWUpOwogCi0gICAgICAgIGlmIChkYXRhU291cmNlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHN0cm5jYXNlY21wKGZpbGVuYW1lLCAic2luZToiLCA1KSAmJiBkYXRhU291cmNlID09IE5VTEwpIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGNyZWF0ZSBkYXRhIHNvdXJjZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KQEAgLTU2Miw3ICs1ODMsMTEgQEAKICAgICAgICAgICAgIG1lZGlhU291cmNlID0gZXh0cmFjdG9yLT5nZXRUcmFjayhpKTsKICAgICAgICAgfQogCi0gICAgICAgIHBsYXlTb3VyY2UoJmNsaWVudCwgbWVkaWFTb3VyY2UpOworICAgICAgICBpZiAoZ1dyaXRlTVA0KSB7CisgICAgICAgICAgICB3cml0ZVNvdXJjZVRvTVA0KG1lZGlhU291cmNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBsYXlTb3VyY2UoJmNsaWVudCwgbWVkaWFTb3VyY2UpOworICAgICAgICB9CiAgICAgfQogCiAgICAgY2xpZW50LmRpc2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FjY291bnRzL0FjY291bnRNYW5hZ2VyU2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYWNjb3VudHMvQWNjb3VudE1hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggMWNkN2FhNy4uMWQ5ZTBmMSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYWNjb3VudHMvQWNjb3VudE1hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYWNjb3VudHMvQWNjb3VudE1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTE0ODMsNyArMTQ4MywxMyBAQAogICAgIH0KIAogICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBnZXREYXRhYmFzZU5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBEQVRBQkFTRV9OQU1FOworICAgICAgICBpZihFbnZpcm9ubWVudC5pc0VuY3J5cHRlZEZpbGVzeXN0ZW1FbmFibGVkKCkpIHsKKyAgICAgICAgICAgIC8vIEhhcmQtY29kZWQgcGF0aCBpbiBjYXNlIG9mIGVuY3J5cHRlZCBmaWxlIHN5c3RlbQorICAgICAgICAgICAgcmV0dXJuIEVudmlyb25tZW50LmdldFN5c3RlbVNlY3VyZURpcmVjdG9yeSgpLmdldFBhdGgoKSArIEZpbGUuc2VwYXJhdG9yICsgREFUQUJBU0VfTkFNRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFJlZ3VsYXIgcGF0aCBpbiBjYXNlIG9mIG5vbi1lbmNyeXB0ZWQgZmlsZSBzeXN0ZW0KKyAgICAgICAgICAgIHJldHVybiBEQVRBQkFTRV9OQU1FOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHJpdmF0ZSBjbGFzcyBEYXRhYmFzZUhlbHBlciBleHRlbmRzIFNRTGl0ZU9wZW5IZWxwZXIgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHkuamF2YQppbmRleCBhOTYyMzkxLi45ODVmNTkxIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHkuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHkuamF2YQpAQCAtMzksNyArMzksNiBAQAogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKIGltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC50ZXh0LlNlbGVjdGlvbjsKIGltcG9ydCBhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlcjsKQEAgLTM3MjAsNiArMzcxOSw0NiBAQAogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBCaXQgaW5kaWNhdGluZyB0aGF0IHRoaXMgYWN0aXZpdHkgaXMgImltbWVyc2l2ZSIgYW5kIHNob3VsZCBub3QgYmUKKyAgICAgKiBpbnRlcnJ1cHRlZCBieSBub3RpZmljYXRpb25zIGlmIHBvc3NpYmxlLgorICAgICAqCisgICAgICogVGhpcyB2YWx1ZSBpcyBpbml0aWFsbHkgc2V0IGJ5IHRoZSBtYW5pZmVzdCBwcm9wZXJ0eQorICAgICAqIDxjb2RlPmFuZHJvaWQ6aW1tZXJzaXZlPC9jb2RlPiBidXQgbWF5IGJlIGNoYW5nZWQgYXQgcnVudGltZSBieQorICAgICAqIHtAbGluayAjc2V0SW1tZXJzaXZlfS4KKyAgICAgKgorICAgICAqIEBzZWUgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbyNGTEFHX0lNTUVSU0lWRQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzSW1tZXJzaXZlKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuaXNJbW1lcnNpdmUobVRva2VuKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFkanVzdCB0aGUgY3VycmVudCBpbW1lcnNpdmUgbW9kZSBzZXR0aW5nLgorICAgICAqIAorICAgICAqIE5vdGUgdGhhdCBjaGFuZ2luZyB0aGlzIHZhbHVlIHdpbGwgaGF2ZSBubyBlZmZlY3Qgb24gdGhlIGFjdGl2aXR5J3MKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mb30gc3RydWN0dXJlOyB0aGF0IGlzLCBpZgorICAgICAqIDxjb2RlPmFuZHJvaWQ6aW1tZXJzaXZlPC9jb2RlPiBpcyBzZXQgdG8gPGNvZGU+dHJ1ZTwvY29kZT4KKyAgICAgKiBpbiB0aGUgYXBwbGljYXRpb24ncyBtYW5pZmVzdCBlbnRyeSBmb3IgdGhpcyBhY3Rpdml0eSwgdGhlIHtAbGluaworICAgICAqIGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8jZmxhZ3MgQWN0aXZpdHlJbmZvLmZsYWdzfSBtZW1iZXIgd2lsbAorICAgICAqIGFsd2F5cyBoYXZlIGl0cyB7QGxpbmsgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbyNGTEFHX0lNTUVSU0lWRQorICAgICAqIEZMQUdfSU1NRVJTSVZFfSBiaXQgc2V0LgorICAgICAqCisgICAgICogQHNlZSAjaXNJbW1lcnNpdmUKKyAgICAgKiBAc2VlIGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8jRkxBR19JTU1FUlNJVkUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRJbW1lcnNpdmUoYm9vbGVhbiBpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnNldEltbWVyc2l2ZShtVG9rZW4sIGkpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gcGFzcworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tIEludGVybmFsIEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0KICAgICAKICAgICBmaW5hbCB2b2lkIHNldFBhcmVudChBY3Rpdml0eSBwYXJlbnQpIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXIuamF2YQppbmRleCBjOTA5NmNmLi5lYjc1MjBmIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHlNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5TWFuYWdlci5qYXZhCkBAIC03MTcsOSArNzE3LDI0IEBACiAgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgaW50IHVpZDsKICAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBBbGwgcGFja2FnZXMgdGhhdCBoYXZlIGJlZW4gbG9hZGVkIGludG8gdGhlIHByb2Nlc3MuCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgU3RyaW5nIHBrZ0xpc3RbXTsKICAgICAgICAgCiAgICAgICAgIC8qKgorICAgICAgICAgKiBDb25zdGFudCBmb3Ige0BsaW5rICNmbGFnc306IHRoaXMgaXMgYSBoZWF2eS13ZWlnaHQgcHJvY2VzcywKKyAgICAgICAgICogbWVhbmluZyBpdCB3aWxsIG5vdCBiZSBraWxsZWQgd2hpbGUgaW4gdGhlIGJhY2tncm91bmQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0hFQVZZX1dFSUdIVCA9IDE8PDA7CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogRmxhZ3Mgb2YgaW5mb3JtYXRpb24uICBNYXkgYmUgYW55IG9mCisgICAgICAgICAqIHtAbGluayAjRkxBR19IRUFWWV9XRUlHSFR9LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBmbGFnczsKKyAgICAgICAgCisgICAgICAgIC8qKgogICAgICAgICAgKiBDb25zdGFudCBmb3Ige0BsaW5rICNpbXBvcnRhbmNlfTogdGhpcyBwcm9jZXNzIGlzIHJ1bm5pbmcgdGhlCiAgICAgICAgICAqIGZvcmVncm91bmQgVUkuCiAgICAgICAgICAqLwpAQCAtNzI3LDExICs3NDIsMjUgQEAKICAgICAgICAgCiAgICAgICAgIC8qKgogICAgICAgICAgKiBDb25zdGFudCBmb3Ige0BsaW5rICNpbXBvcnRhbmNlfTogdGhpcyBwcm9jZXNzIGlzIHJ1bm5pbmcgc29tZXRoaW5nCi0gICAgICAgICAqIHRoYXQgaXMgY29uc2lkZXJlZCB0byBiZSBhY3RpdmVseSB2aXNpYmxlIHRvIHRoZSB1c2VyLgorICAgICAgICAgKiB0aGF0IGlzIGFjdGl2ZWx5IHZpc2libGUgdG8gdGhlIHVzZXIsIHRob3VnaCBub3QgaW4gdGhlIGltbWVkaWF0ZQorICAgICAgICAgKiBmb3JlZ3JvdW5kLgogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU1QT1JUQU5DRV9WSVNJQkxFID0gMjAwOwogICAgICAgICAKICAgICAgICAgLyoqCisgICAgICAgICAqIENvbnN0YW50IGZvciB7QGxpbmsgI2ltcG9ydGFuY2V9OiB0aGlzIHByb2Nlc3MgaXMgcnVubmluZyBzb21ldGhpbmcKKyAgICAgICAgICogdGhhdCBpcyBjb25zaWRlcmVkIHRvIGJlIGFjdGl2ZWx5IHBlcmNlcHRpYmxlIHRvIHRoZSB1c2VyLiAgQW4KKyAgICAgICAgICogZXhhbXBsZSB3b3VsZCBiZSBhbiBhcHBsaWNhdGlvbiBwZXJmb3JtaW5nIGJhY2tncm91bmQgbXVzaWMgcGxheWJhY2suCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTVBPUlRBTkNFX1BFUkNFUFRJQkxFID0gMTMwOworICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbnN0YW50IGZvciB7QGxpbmsgI2ltcG9ydGFuY2V9OiB0aGlzIHByb2Nlc3MgaXMgcnVubmluZyBhCisgICAgICAgICAqIGhlYXZ5LXdlaWdodCBhcHBsaWNhdGlvbiBhbmQgdGh1cyBzaG91bGQgbm90IGJlIGtpbGxlZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElNUE9SVEFOQ0VfSEVBVllfV0VJR0hUID0gMTcwOworICAgICAgICAKKyAgICAgICAgLyoqCiAgICAgICAgICAqIENvbnN0YW50IGZvciB7QGxpbmsgI2ltcG9ydGFuY2V9OiB0aGlzIHByb2Nlc3MgaXMgY29udGFpbnMgc2VydmljZXMKICAgICAgICAgICogdGhhdCBzaG91bGQgcmVtYWluIHJ1bm5pbmcuCiAgICAgICAgICAqLwpAQCAtODMyLDYgKzg2MSw3IEBACiAgICAgICAgICAgICBkZXN0LndyaXRlSW50KHBpZCk7CiAgICAgICAgICAgICBkZXN0LndyaXRlSW50KHVpZCk7CiAgICAgICAgICAgICBkZXN0LndyaXRlU3RyaW5nQXJyYXkocGtnTGlzdCk7CisgICAgICAgICAgICBkZXN0LndyaXRlSW50KHRoaXMuZmxhZ3MpOwogICAgICAgICAgICAgZGVzdC53cml0ZUludChpbXBvcnRhbmNlKTsKICAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQobHJ1KTsKICAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoaW1wb3J0YW5jZVJlYXNvbkNvZGUpOwpAQCAtODQ0LDYgKzg3NCw3IEBACiAgICAgICAgICAgICBwaWQgPSBzb3VyY2UucmVhZEludCgpOwogICAgICAgICAgICAgdWlkID0gc291cmNlLnJlYWRJbnQoKTsKICAgICAgICAgICAgIHBrZ0xpc3QgPSBzb3VyY2UucmVhZFN0cmluZ0FycmF5KCk7CisgICAgICAgICAgICBmbGFncyA9IHNvdXJjZS5yZWFkSW50KCk7CiAgICAgICAgICAgICBpbXBvcnRhbmNlID0gc291cmNlLnJlYWRJbnQoKTsKICAgICAgICAgICAgIGxydSA9IHNvdXJjZS5yZWFkSW50KCk7CiAgICAgICAgICAgICBpbXBvcnRhbmNlUmVhc29uQ29kZSA9IHNvdXJjZS5yZWFkSW50KCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmphdmEKaW5kZXggZjY5NDI4NS4uMWZlODVlNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5TWFuYWdlck5hdGl2ZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXJOYXRpdmUuamF2YQpAQCAtMTAyMSwxNiArMTAyMSw2IEBACiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgUkVQT1JUX1BTU19UUkFOU0FDVElPTjogewotICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7Ci0gICAgICAgICAgICBJQmluZGVyIGIgPSBkYXRhLnJlYWRTdHJvbmdCaW5kZXIoKTsKLSAgICAgICAgICAgIElBcHBsaWNhdGlvblRocmVhZCBhcHAgPSBBcHBsaWNhdGlvblRocmVhZE5hdGl2ZS5hc0ludGVyZmFjZShiKTsKLSAgICAgICAgICAgIGludCBwc3MgPSBkYXRhLnJlYWRJbnQoKTsKLSAgICAgICAgICAgIHJlcG9ydFBzcyhhcHAsIHBzcyk7Ci0gICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCiAgICAgICAgIGNhc2UgU1RBUlRfUlVOTklOR19UUkFOU0FDVElPTjogewogICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBTdHJpbmcgcGtnID0gZGF0YS5yZWFkU3RyaW5nKCk7CkBAIC0xMDYyLDYgKzEwNTIsMTYgQEAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBIQU5ETEVfQVBQTElDQVRJT05fU1RSSUNUX01PREVfVklPTEFUSU9OX1RSQU5TQUNUSU9OOiB7CisgICAgICAgICAgICBkYXRhLmVuZm9yY2VJbnRlcmZhY2UoSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIElCaW5kZXIgYXBwID0gZGF0YS5yZWFkU3Ryb25nQmluZGVyKCk7CisgICAgICAgICAgICBpbnQgdmlvbGF0aW9uTWFzayA9IGRhdGEucmVhZEludCgpOworICAgICAgICAgICAgQXBwbGljYXRpb25FcnJvclJlcG9ydC5DcmFzaEluZm8gY2kgPSBuZXcgQXBwbGljYXRpb25FcnJvclJlcG9ydC5DcmFzaEluZm8oZGF0YSk7CisgICAgICAgICAgICBoYW5kbGVBcHBsaWNhdGlvblN0cmljdE1vZGVWaW9sYXRpb24oYXBwLCB2aW9sYXRpb25NYXNrLCBjaSk7CisgICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU0lHTkFMX1BFUlNJU1RFTlRfUFJPQ0VTU0VTX1RSQU5TQUNUSU9OOiB7CiAgICAgICAgICAgICBkYXRhLmVuZm9yY2VJbnRlcmZhY2UoSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKICAgICAgICAgICAgIGludCBzaWcgPSBkYXRhLnJlYWRJbnQoKTsKQEAgLTEyNTEsNiArMTI1MSw0OSBAQAogICAgICAgICAgICAgcmVwbHkud3JpdGVOb0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNhc2UgRklOSVNIX0hFQVZZX1dFSUdIVF9BUFBfVFJBTlNBQ1RJT046IHsKKyAgICAgICAgICAgIGRhdGEuZW5mb3JjZUludGVyZmFjZShJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICAgICAgZmluaXNoSGVhdnlXZWlnaHRBcHAoKTsKKyAgICAgICAgICAgIHJlcGx5LndyaXRlTm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBJU19JTU1FUlNJVkVfVFJBTlNBQ1RJT046IHsKKyAgICAgICAgICAgIGRhdGEuZW5mb3JjZUludGVyZmFjZShJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICAgICAgSUJpbmRlciB0b2tlbiA9IGRhdGEucmVhZFN0cm9uZ0JpbmRlcigpOworICAgICAgICAgICAgcmVwbHkud3JpdGVJbnQoaXNJbW1lcnNpdmUodG9rZW4pID8gMSA6IDApOworICAgICAgICAgICAgcmVwbHkud3JpdGVOb0V4Y2VwdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFNFVF9JTU1FUlNJVkVfVFJBTlNBQ1RJT046IHsKKyAgICAgICAgICAgIGRhdGEuZW5mb3JjZUludGVyZmFjZShJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICAgICAgSUJpbmRlciB0b2tlbiA9IGRhdGEucmVhZFN0cm9uZ0JpbmRlcigpOworICAgICAgICAgICAgYm9vbGVhbiBpbW0gPSBkYXRhLnJlYWRJbnQoKSA9PSAxOworICAgICAgICAgICAgc2V0SW1tZXJzaXZlKHRva2VuLCBpbW0pOworICAgICAgICAgICAgcmVwbHkud3JpdGVOb0V4Y2VwdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNhc2UgSVNfVE9QX0FDVElWSVRZX0lNTUVSU0lWRV9UUkFOU0FDVElPTjogeworICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgICAgICByZXBseS53cml0ZUludChpc1RvcEFjdGl2aXR5SW1tZXJzaXZlKCkgPyAxIDogMCk7CisgICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1JBU0hfQVBQTElDQVRJT05fVFJBTlNBQ1RJT046IHsKKyAgICAgICAgICAgIGRhdGEuZW5mb3JjZUludGVyZmFjZShJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICAgICAgaW50IHVpZCA9IGRhdGEucmVhZEludCgpOworICAgICAgICAgICAgaW50IGluaXRpYWxQaWQgPSBkYXRhLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIFN0cmluZyBwYWNrYWdlTmFtZSA9IGRhdGEucmVhZFN0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBkYXRhLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgICAgIGNyYXNoQXBwbGljYXRpb24odWlkLCBpbml0aWFsUGlkLCBwYWNrYWdlTmFtZSwgbWVzc2FnZSk7CisgICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBzdXBlci5vblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7CkBAIC0yNDc2LDE0ICsyNTE5LDYgQEAKICAgICAgICAgcmVwbHkucmVjeWNsZSgpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KLSAgICBwdWJsaWMgdm9pZCByZXBvcnRQc3MoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwgaW50IHBzcykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOwotICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKLSAgICAgICAgZGF0YS53cml0ZVN0cm9uZ0JpbmRlcihjYWxsZXIuYXNCaW5kZXIoKSk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnQocHNzKTsKLSAgICAgICAgbVJlbW90ZS50cmFuc2FjdChSRVBPUlRfUFNTX1RSQU5TQUNUSU9OLCBkYXRhLCBudWxsLCAwKTsKLSAgICAgICAgZGF0YS5yZWN5Y2xlKCk7Ci0gICAgfQogICAgIHB1YmxpYyB2b2lkIHN0YXJ0UnVubmluZyhTdHJpbmcgcGtnLCBTdHJpbmcgY2xzLCBTdHJpbmcgYWN0aW9uLAogICAgICAgICAgICAgU3RyaW5nIGluZGF0YSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CiAgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOwpAQCAtMjUxNiw2ICsyNTUxLDcgQEAKICAgICAgICAgcmVwbHkucmVjeWNsZSgpOwogICAgICAgICBkYXRhLnJlY3ljbGUoKTsKICAgICB9CisKICAgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVBcHBsaWNhdGlvbld0ZihJQmluZGVyIGFwcCwgU3RyaW5nIHRhZywKICAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbgogICAgIHsKQEAgLTI1MzMsNiArMjU2OSwyMiBAQAogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KIAorICAgIHB1YmxpYyB2b2lkIGhhbmRsZUFwcGxpY2F0aW9uU3RyaWN0TW9kZVZpb2xhdGlvbihJQmluZGVyIGFwcCwKKyAgICAgICAgICAgIGludCB2aW9sYXRpb25NYXNrLAorICAgICAgICAgICAgQXBwbGljYXRpb25FcnJvclJlcG9ydC5DcmFzaEluZm8gY3Jhc2hJbmZvKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSA9IFBhcmNlbC5vYnRhaW4oKTsKKyAgICAgICAgUGFyY2VsIHJlcGx5ID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKKyAgICAgICAgZGF0YS53cml0ZVN0cm9uZ0JpbmRlcihhcHApOworICAgICAgICBkYXRhLndyaXRlSW50KHZpb2xhdGlvbk1hc2spOworICAgICAgICBjcmFzaEluZm8ud3JpdGVUb1BhcmNlbChkYXRhLCAwKTsKKyAgICAgICAgbVJlbW90ZS50cmFuc2FjdChIQU5ETEVfQVBQTElDQVRJT05fU1RSSUNUX01PREVfVklPTEFUSU9OX1RSQU5TQUNUSU9OLCBkYXRhLCByZXBseSwgMCk7CisgICAgICAgIHJlcGx5LnJlYWRFeGNlcHRpb24oKTsKKyAgICAgICAgcmVwbHkucmVjeWNsZSgpOworICAgICAgICBkYXRhLnJlY3ljbGUoKTsKKyAgICB9CisKICAgICBwdWJsaWMgdm9pZCBzaWduYWxQZXJzaXN0ZW50UHJvY2Vzc2VzKGludCBzaWcpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewogICAgICAgICBQYXJjZWwgZGF0YSA9IFBhcmNlbC5vYnRhaW4oKTsKICAgICAgICAgUGFyY2VsIHJlcGx5ID0gUGFyY2VsLm9idGFpbigpOwpAQCAtMjc1OCw1ICsyODEwLDcwIEBACiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIAorICAgIHB1YmxpYyB2b2lkIGZpbmlzaEhlYXZ5V2VpZ2h0QXBwKCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICBtUmVtb3RlLnRyYW5zYWN0KEZJTklTSF9IRUFWWV9XRUlHSFRfQVBQX1RSQU5TQUNUSU9OLCBkYXRhLCByZXBseSwgMCk7CisgICAgICAgIHJlcGx5LnJlYWRFeGNlcHRpb24oKTsKKyAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CisgICAgICAgIHJlcGx5LnJlY3ljbGUoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0SW1tZXJzaXZlKElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gaW1tZXJzaXZlKQorICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICBkYXRhLndyaXRlU3Ryb25nQmluZGVyKHRva2VuKTsKKyAgICAgICAgZGF0YS53cml0ZUludChpbW1lcnNpdmUgPyAxIDogMCk7CisgICAgICAgIG1SZW1vdGUudHJhbnNhY3QoU0VUX0lNTUVSU0lWRV9UUkFOU0FDVElPTiwgZGF0YSwgcmVwbHksIDApOworICAgICAgICByZXBseS5yZWFkRXhjZXB0aW9uKCk7CisgICAgICAgIGRhdGEucmVjeWNsZSgpOworICAgICAgICByZXBseS5yZWN5Y2xlKCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNJbW1lcnNpdmUoSUJpbmRlciB0b2tlbikKKyAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworICAgICAgICBQYXJjZWwgZGF0YSA9IFBhcmNlbC5vYnRhaW4oKTsKKyAgICAgICAgUGFyY2VsIHJlcGx5ID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKKyAgICAgICAgZGF0YS53cml0ZVN0cm9uZ0JpbmRlcih0b2tlbik7CisgICAgICAgIG1SZW1vdGUudHJhbnNhY3QoSVNfSU1NRVJTSVZFX1RSQU5TQUNUSU9OLCBkYXRhLCByZXBseSwgMCk7CisgICAgICAgIGJvb2xlYW4gcmVzID0gcmVwbHkucmVhZEludCgpID09IDE7CisgICAgICAgIHJlcGx5LnJlYWRFeGNlcHRpb24oKTsKKyAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CisgICAgICAgIHJlcGx5LnJlY3ljbGUoKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1RvcEFjdGl2aXR5SW1tZXJzaXZlKCkKKyAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworICAgICAgICBQYXJjZWwgZGF0YSA9IFBhcmNlbC5vYnRhaW4oKTsKKyAgICAgICAgUGFyY2VsIHJlcGx5ID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKKyAgICAgICAgbVJlbW90ZS50cmFuc2FjdChJU19UT1BfQUNUSVZJVFlfSU1NRVJTSVZFX1RSQU5TQUNUSU9OLCBkYXRhLCByZXBseSwgMCk7CisgICAgICAgIGJvb2xlYW4gcmVzID0gcmVwbHkucmVhZEludCgpID09IDE7CisgICAgICAgIHJlcGx5LnJlYWRFeGNlcHRpb24oKTsKKyAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CisgICAgICAgIHJlcGx5LnJlY3ljbGUoKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjcmFzaEFwcGxpY2F0aW9uKGludCB1aWQsIGludCBpbml0aWFsUGlkLCBTdHJpbmcgcGFja2FnZU5hbWUsCisgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICBkYXRhLndyaXRlSW50KHVpZCk7CisgICAgICAgIGRhdGEud3JpdGVJbnQoaW5pdGlhbFBpZCk7CisgICAgICAgIGRhdGEud3JpdGVTdHJpbmcocGFja2FnZU5hbWUpOworICAgICAgICBkYXRhLndyaXRlU3RyaW5nKG1lc3NhZ2UpOworICAgICAgICBtUmVtb3RlLnRyYW5zYWN0KENSQVNIX0FQUExJQ0FUSU9OX1RSQU5TQUNUSU9OLCBkYXRhLCByZXBseSwgMCk7CisgICAgICAgIHJlcGx5LnJlYWRFeGNlcHRpb24oKTsKKyAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CisgICAgICAgIHJlcGx5LnJlY3ljbGUoKTsKKyAgICB9CisgICAgCiAgICAgcHJpdmF0ZSBJQmluZGVyIG1SZW1vdGU7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHlUaHJlYWQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eVRocmVhZC5qYXZhCmluZGV4IDc3M2MzNDQuLjg4MzM2NmIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eVRocmVhZC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eVRocmVhZC5qYXZhCkBAIC0yNSw3ICsyNSw2IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LklDb250ZW50UHJvdmlkZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSUludGVudFJlY2VpdmVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLklQYWNrYWdlTWFuYWdlcjsKQEAgLTQyLDYgKzQxLDcgQEAKIGltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEZWJ1Zy5EYlN0YXRzOwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwOwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQub3MuQnVpbGQ7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CiBpbXBvcnQgYW5kcm9pZC5vcy5EZWJ1ZzsKIGltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CkBAIC01Myw2ICs1Myw3IEBACiBpbXBvcnQgYW5kcm9pZC5vcy5Qcm9jZXNzOwogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5TdHJpY3RNb2RlOwogaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkFuZHJvaWRSdW50aW1lRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Db25maWc7CkBAIC03Miw3ICs3Myw2IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuQmluZGVySW50ZXJuYWw7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuUnVudGltZUluaXQ7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuU2FtcGxpbmdQcm9maWxlckludGVncmF0aW9uOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuQXJyYXlVdGlsczsKIAogaW1wb3J0IG9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuT3BlblNTTFNvY2tldEltcGw7CiAKQEAgLTgwLDEyICs4MCw5IEBACiBpbXBvcnQgamF2YS5pby5GaWxlRGVzY3JpcHRvcjsKIGltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwogaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CiBpbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOwotaW1wb3J0IGphdmEubmV0LlVSTDsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CkBAIC05NiwyNCArOTMsMTggQEAKIAogaW1wb3J0IGRhbHZpay5zeXN0ZW0uU2FtcGxpbmdQcm9maWxlcjsKIAotZmluYWwgY2xhc3MgSW50ZW50UmVjZWl2ZXJMZWFrZWQgZXh0ZW5kcyBBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiB7Ci0gICAgcHVibGljIEludGVudFJlY2VpdmVyTGVha2VkKFN0cmluZyBtc2cpIHsKLSAgICAgICAgc3VwZXIobXNnKTsKLSAgICB9Ci19Ci0KLWZpbmFsIGNsYXNzIFNlcnZpY2VDb25uZWN0aW9uTGVha2VkIGV4dGVuZHMgQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24gewotICAgIHB1YmxpYyBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZChTdHJpbmcgbXNnKSB7Ci0gICAgICAgIHN1cGVyKG1zZyk7Ci0gICAgfQotfQotCiBmaW5hbCBjbGFzcyBTdXBlck5vdENhbGxlZEV4Y2VwdGlvbiBleHRlbmRzIEFuZHJvaWRSdW50aW1lRXhjZXB0aW9uIHsKICAgICBwdWJsaWMgU3VwZXJOb3RDYWxsZWRFeGNlcHRpb24oU3RyaW5nIG1zZykgewogICAgICAgICBzdXBlcihtc2cpOwogICAgIH0KIH0KIAorZmluYWwgY2xhc3MgUmVtb3RlU2VydmljZUV4Y2VwdGlvbiBleHRlbmRzIEFuZHJvaWRSdW50aW1lRXhjZXB0aW9uIHsKKyAgICBwdWJsaWMgUmVtb3RlU2VydmljZUV4Y2VwdGlvbihTdHJpbmcgbXNnKSB7CisgICAgICAgIHN1cGVyKG1zZyk7CisgICAgfQorfQorCiAvKioKICAqIFRoaXMgbWFuYWdlcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBtYWluIHRocmVhZCBpbiBhbgogICogYXBwbGljYXRpb24gcHJvY2Vzcywgc2NoZWR1bGluZyBhbmQgZXhlY3V0aW5nIGFjdGl2aXRpZXMsCkBAIC0xMjMsMTAgKzExNCwxMCBAQAogICoge0BoaWRlfQogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgQWN0aXZpdHlUaHJlYWQgewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQWN0aXZpdHlUaHJlYWQiOworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkFjdGl2aXR5VGhyZWFkIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBsb2NhbExPR1YgPSBERUJVRyA/IENvbmZpZy5MT0dEIDogQ29uZmlnLkxPR1Y7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19CUk9BRENBU1QgPSBmYWxzZTsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBsb2NhbExPR1YgPSBERUJVRyA/IENvbmZpZy5MT0dEIDogQ29uZmlnLkxPR1Y7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfQlJPQURDQVNUID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19SRVNVTFRTID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19CQUNLVVAgPSBmYWxzZTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0NPTkZJR1VSQVRJT04gPSBmYWxzZTsKQEAgLTEzNiwxMTYyICsxMjcsNjUgQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9HX09OX1BBVVNFX0NBTExFRCA9IDMwMDIxOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMT0dfT05fUkVTVU1FX0NBTExFRCA9IDMwMDIyOwogCisgICAgc3RhdGljIENvbnRleHRJbXBsIG1TeXN0ZW1Db250ZXh0ID0gbnVsbDsKIAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQWN0aXZpdHlUaHJlYWQgY3VycmVudEFjdGl2aXR5VGhyZWFkKCkgewotICAgICAgICByZXR1cm4gKEFjdGl2aXR5VGhyZWFkKXNUaHJlYWRMb2NhbC5nZXQoKTsKLSAgICB9CisgICAgc3RhdGljIElQYWNrYWdlTWFuYWdlciBzUGFja2FnZU1hbmFnZXI7CiAKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjdXJyZW50UGFja2FnZU5hbWUoKQotICAgIHsKLSAgICAgICAgQWN0aXZpdHlUaHJlYWQgYW0gPSBjdXJyZW50QWN0aXZpdHlUaHJlYWQoKTsKLSAgICAgICAgcmV0dXJuIChhbSAhPSBudWxsICYmIGFtLm1Cb3VuZEFwcGxpY2F0aW9uICE9IG51bGwpCi0gICAgICAgICAgICA/IGFtLm1Cb3VuZEFwcGxpY2F0aW9uLnByb2Nlc3NOYW1lIDogbnVsbDsKLSAgICB9CisgICAgZmluYWwgQXBwbGljYXRpb25UaHJlYWQgbUFwcFRocmVhZCA9IG5ldyBBcHBsaWNhdGlvblRocmVhZCgpOworICAgIGZpbmFsIExvb3BlciBtTG9vcGVyID0gTG9vcGVyLm15TG9vcGVyKCk7CisgICAgZmluYWwgSCBtSCA9IG5ldyBIKCk7CisgICAgZmluYWwgSGFzaE1hcDxJQmluZGVyLCBBY3Rpdml0eUNsaWVudFJlY29yZD4gbUFjdGl2aXRpZXMKKyAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8SUJpbmRlciwgQWN0aXZpdHlDbGllbnRSZWNvcmQ+KCk7CisgICAgLy8gTGlzdCBvZiBuZXcgYWN0aXZpdGllcyAodmlhIEFjdGl2aXR5UmVjb3JkLm5leHRJZGxlKSB0aGF0IHNob3VsZAorICAgIC8vIGJlIHJlcG9ydGVkIHdoZW4gbmV4dCB3ZSBpZGxlLgorICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIG1OZXdBY3Rpdml0aWVzID0gbnVsbDsKKyAgICAvLyBOdW1iZXIgb2YgYWN0aXZpdGllcyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZSBvbi1zY3JlZW4uCisgICAgaW50IG1OdW1WaXNpYmxlQWN0aXZpdGllcyA9IDA7CisgICAgZmluYWwgSGFzaE1hcDxJQmluZGVyLCBTZXJ2aWNlPiBtU2VydmljZXMKKyAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8SUJpbmRlciwgU2VydmljZT4oKTsKKyAgICBBcHBCaW5kRGF0YSBtQm91bmRBcHBsaWNhdGlvbjsKKyAgICBDb25maWd1cmF0aW9uIG1Db25maWd1cmF0aW9uOworICAgIENvbmZpZ3VyYXRpb24gbVJlc0NvbmZpZ3VyYXRpb247CisgICAgQXBwbGljYXRpb24gbUluaXRpYWxBcHBsaWNhdGlvbjsKKyAgICBmaW5hbCBBcnJheUxpc3Q8QXBwbGljYXRpb24+IG1BbGxBcHBsaWNhdGlvbnMKKyAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxBcHBsaWNhdGlvbj4oKTsKKyAgICAvLyBzZXQgb2YgaW5zdGFudGlhdGVkIGJhY2t1cCBhZ2VudHMsIGtleWVkIGJ5IHBhY2thZ2UgbmFtZQorICAgIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBCYWNrdXBBZ2VudD4gbUJhY2t1cEFnZW50cyA9IG5ldyBIYXNoTWFwPFN0cmluZywgQmFja3VwQWdlbnQ+KCk7CisgICAgc3RhdGljIGZpbmFsIFRocmVhZExvY2FsIHNUaHJlYWRMb2NhbCA9IG5ldyBUaHJlYWRMb2NhbCgpOworICAgIEluc3RydW1lbnRhdGlvbiBtSW5zdHJ1bWVudGF0aW9uOworICAgIFN0cmluZyBtSW5zdHJ1bWVudGF0aW9uQXBwRGlyID0gbnVsbDsKKyAgICBTdHJpbmcgbUluc3RydW1lbnRhdGlvbkFwcFBhY2thZ2UgPSBudWxsOworICAgIFN0cmluZyBtSW5zdHJ1bWVudGVkQXBwRGlyID0gbnVsbDsKKyAgICBib29sZWFuIG1TeXN0ZW1UaHJlYWQgPSBmYWxzZTsKKyAgICBib29sZWFuIG1KaXRFbmFibGVkID0gZmFsc2U7CiAKLSAgICBwdWJsaWMgc3RhdGljIElQYWNrYWdlTWFuYWdlciBnZXRQYWNrYWdlTWFuYWdlcigpIHsKLSAgICAgICAgaWYgKHNQYWNrYWdlTWFuYWdlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvL1Nsb2cudigiUGFja2FnZU1hbmFnZXIiLCAicmV0dXJuaW5nIGN1ciBkZWZhdWx0ID0gIiArIHNQYWNrYWdlTWFuYWdlcik7Ci0gICAgICAgICAgICByZXR1cm4gc1BhY2thZ2VNYW5hZ2VyOwotICAgICAgICB9Ci0gICAgICAgIElCaW5kZXIgYiA9IFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoInBhY2thZ2UiKTsKLSAgICAgICAgLy9TbG9nLnYoIlBhY2thZ2VNYW5hZ2VyIiwgImRlZmF1bHQgc2VydmljZSBiaW5kZXIgPSAiICsgYik7Ci0gICAgICAgIHNQYWNrYWdlTWFuYWdlciA9IElQYWNrYWdlTWFuYWdlci5TdHViLmFzSW50ZXJmYWNlKGIpOwotICAgICAgICAvL1Nsb2cudigiUGFja2FnZU1hbmFnZXIiLCAiZGVmYXVsdCBzZXJ2aWNlID0gIiArIHNQYWNrYWdlTWFuYWdlcik7Ci0gICAgICAgIHJldHVybiBzUGFja2FnZU1hbmFnZXI7Ci0gICAgfQorICAgIC8vIFRoZXNlIGNhbiBiZSBhY2Nlc3NlZCBieSBtdWx0aXBsZSB0aHJlYWRzOyBtUGFja2FnZXMgaXMgdGhlIGxvY2suCisgICAgLy8gWFhYIEZvciBub3cgd2Uga2VlcCBhcm91bmQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHBhY2thZ2VzIHdlIGhhdmUKKyAgICAvLyBzZWVuLCBub3QgcmVtb3ZpbmcgZW50cmllcyBmcm9tIHRoaXMgbWFwLgorICAgIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBXZWFrUmVmZXJlbmNlPExvYWRlZEFwaz4+IG1QYWNrYWdlcworICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrPj4oKTsKKyAgICBmaW5hbCBIYXNoTWFwPFN0cmluZywgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGs+PiBtUmVzb3VyY2VQYWNrYWdlcworICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrPj4oKTsKKyAgICBEaXNwbGF5IG1EaXNwbGF5ID0gbnVsbDsKKyAgICBEaXNwbGF5TWV0cmljcyBtRGlzcGxheU1ldHJpY3MgPSBudWxsOworICAgIGZpbmFsIEhhc2hNYXA8UmVzb3VyY2VzS2V5LCBXZWFrUmVmZXJlbmNlPFJlc291cmNlcz4gPiBtQWN0aXZlUmVzb3VyY2VzCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFJlc291cmNlc0tleSwgV2Vha1JlZmVyZW5jZTxSZXNvdXJjZXM+ID4oKTsKKyAgICBmaW5hbCBBcnJheUxpc3Q8QWN0aXZpdHlDbGllbnRSZWNvcmQ+IG1SZWxhdW5jaGluZ0FjdGl2aXRpZXMKKyAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxBY3Rpdml0eUNsaWVudFJlY29yZD4oKTsKKyAgICBDb25maWd1cmF0aW9uIG1QZW5kaW5nQ29uZmlndXJhdGlvbiA9IG51bGw7CiAKLSAgICBEaXNwbGF5TWV0cmljcyBnZXREaXNwbGF5TWV0cmljc0xvY2tlZChib29sZWFuIGZvcmNlVXBkYXRlKSB7Ci0gICAgICAgIGlmIChtRGlzcGxheU1ldHJpY3MgIT0gbnVsbCAmJiAhZm9yY2VVcGRhdGUpIHsKLSAgICAgICAgICAgIHJldHVybiBtRGlzcGxheU1ldHJpY3M7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1EaXNwbGF5ID09IG51bGwpIHsKLSAgICAgICAgICAgIFdpbmRvd01hbmFnZXIgd20gPSBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCk7Ci0gICAgICAgICAgICBtRGlzcGxheSA9IHdtLmdldERlZmF1bHREaXNwbGF5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgRGlzcGxheU1ldHJpY3MgbWV0cmljcyA9IG1EaXNwbGF5TWV0cmljcyA9IG5ldyBEaXNwbGF5TWV0cmljcygpOwotICAgICAgICBtRGlzcGxheS5nZXRNZXRyaWNzKG1ldHJpY3MpOwotICAgICAgICAvL1Nsb2cuaSgiZm9vIiwgIk5ldyBtZXRyaWNzOiB3PSIgKyBtZXRyaWNzLndpZHRoUGl4ZWxzICsgIiBoPSIKLSAgICAgICAgLy8gICAgICAgICsgbWV0cmljcy5oZWlnaHRQaXhlbHMgKyAiIGRlbj0iICsgbWV0cmljcy5kZW5zaXR5Ci0gICAgICAgIC8vICAgICAgICArICIgeGRwaT0iICsgbWV0cmljcy54ZHBpICsgIiB5ZHBpPSIgKyBtZXRyaWNzLnlkcGkpOwotICAgICAgICByZXR1cm4gbWV0cmljczsKLSAgICB9CisgICAgLy8gVGhlIGxvY2sgb2YgbVByb3ZpZGVyTWFwIHByb3RlY3RzIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzLgorICAgIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBQcm92aWRlckNsaWVudFJlY29yZD4gbVByb3ZpZGVyTWFwCisgICAgICAgID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBQcm92aWRlckNsaWVudFJlY29yZD4oKTsKKyAgICBmaW5hbCBIYXNoTWFwPElCaW5kZXIsIFByb3ZpZGVyUmVmQ291bnQ+IG1Qcm92aWRlclJlZkNvdW50TWFwCisgICAgICAgID0gbmV3IEhhc2hNYXA8SUJpbmRlciwgUHJvdmlkZXJSZWZDb3VudD4oKTsKKyAgICBmaW5hbCBIYXNoTWFwPElCaW5kZXIsIFByb3ZpZGVyQ2xpZW50UmVjb3JkPiBtTG9jYWxQcm92aWRlcnMKKyAgICAgICAgPSBuZXcgSGFzaE1hcDxJQmluZGVyLCBQcm92aWRlckNsaWVudFJlY29yZD4oKTsKIAotICAgIC8qKgotICAgICAqIENyZWF0ZXMgdGhlIHRvcCBsZXZlbCBSZXNvdXJjZXMgZm9yIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSBnaXZlbiBjb21wYXRpYmlsaXR5IGluZm8uCi0gICAgICoKLSAgICAgKiBAcGFyYW0gcmVzRGlyIHRoZSByZXNvdXJjZSBkaXJlY3RvcnkuCi0gICAgICogQHBhcmFtIGNvbXBJbmZvIHRoZSBjb21wYWJpbGl0eSBpbmZvLiBJdCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBjb21wYXRpYmlsaXR5IGluZm8gd2hlbiBpdCdzCi0gICAgICogbnVsbC4KLSAgICAgKi8KLSAgICBSZXNvdXJjZXMgZ2V0VG9wTGV2ZWxSZXNvdXJjZXMoU3RyaW5nIHJlc0RpciwgQ29tcGF0aWJpbGl0eUluZm8gY29tcEluZm8pIHsKLSAgICAgICAgUmVzb3VyY2VzS2V5IGtleSA9IG5ldyBSZXNvdXJjZXNLZXkocmVzRGlyLCBjb21wSW5mby5hcHBsaWNhdGlvblNjYWxlKTsKLSAgICAgICAgUmVzb3VyY2VzIHI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVBhY2thZ2VzKSB7Ci0gICAgICAgICAgICAvLyBSZXNvdXJjZXMgaXMgYXBwIHNjYWxlIGRlcGVuZGVudC4KLSAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJnZXRUb3BMZXZlbFJlc291cmNlczogIiArIHJlc0RpciArICIgLyAiCi0gICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBJbmZvLmFwcGxpY2F0aW9uU2NhbGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgV2Vha1JlZmVyZW5jZTxSZXNvdXJjZXM+IHdyID0gbUFjdGl2ZVJlc291cmNlcy5nZXQoa2V5KTsKLSAgICAgICAgICAgIHIgPSB3ciAhPSBudWxsID8gd3IuZ2V0KCkgOiBudWxsOwotICAgICAgICAgICAgLy9pZiAociAhPSBudWxsKSBTbG9nLmkoVEFHLCAiaXNVcFRvRGF0ZSAiICsgcmVzRGlyICsgIjogIiArIHIuZ2V0QXNzZXRzKCkuaXNVcFRvRGF0ZSgpKTsKLSAgICAgICAgICAgIGlmIChyICE9IG51bGwgJiYgci5nZXRBc3NldHMoKS5pc1VwVG9EYXRlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlJldHVybmluZyBjYWNoZWQgcmVzb3VyY2VzICIgKyByICsgIiAiICsgcmVzRGlyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiBhcHBTY2FsZT0iICsgci5nZXRDb21wYXRpYmlsaXR5SW5mbygpLmFwcGxpY2F0aW9uU2NhbGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGZpbmFsIEdjSWRsZXIgbUdjSWRsZXIgPSBuZXcgR2NJZGxlcigpOworICAgIGJvb2xlYW4gbUdjSWRsZXJTY2hlZHVsZWQgPSBmYWxzZTsKIAotICAgICAgICAvL2lmIChyICE9IG51bGwpIHsKLSAgICAgICAgLy8gICAgU2xvZy53KFRBRywgIlRocm93aW5nIGF3YXkgb3V0LW9mLWRhdGUgcmVzb3VyY2VzISEhISAiCi0gICAgICAgIC8vICAgICAgICAgICAgKyByICsgIiAiICsgcmVzRGlyKTsKLSAgICAgICAgLy99Ci0KLSAgICAgICAgQXNzZXRNYW5hZ2VyIGFzc2V0cyA9IG5ldyBBc3NldE1hbmFnZXIoKTsKLSAgICAgICAgaWYgKGFzc2V0cy5hZGRBc3NldFBhdGgocmVzRGlyKSA9PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vU2xvZy5pKFRBRywgIlJlc291cmNlOiBrZXk9IiArIGtleSArICIsIGRpc3BsYXkgbWV0cmljcz0iICsgbWV0cmljcyk7Ci0gICAgICAgIERpc3BsYXlNZXRyaWNzIG1ldHJpY3MgPSBnZXREaXNwbGF5TWV0cmljc0xvY2tlZChmYWxzZSk7Ci0gICAgICAgIHIgPSBuZXcgUmVzb3VyY2VzKGFzc2V0cywgbWV0cmljcywgZ2V0Q29uZmlndXJhdGlvbigpLCBjb21wSW5mbyk7Ci0gICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgU2xvZy5pKFRBRywgIkNyZWF0ZWQgYXBwIHJlc291cmNlcyAiICsgcmVzRGlyICsgIiAiICsgciArICI6ICIKLSAgICAgICAgICAgICAgICAgICAgKyByLmdldENvbmZpZ3VyYXRpb24oKSArICIgYXBwU2NhbGU9IgotICAgICAgICAgICAgICAgICAgICArIHIuZ2V0Q29tcGF0aWJpbGl0eUluZm8oKS5hcHBsaWNhdGlvblNjYWxlKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3luY2hyb25pemVkIChtUGFja2FnZXMpIHsKLSAgICAgICAgICAgIFdlYWtSZWZlcmVuY2U8UmVzb3VyY2VzPiB3ciA9IG1BY3RpdmVSZXNvdXJjZXMuZ2V0KGtleSk7Ci0gICAgICAgICAgICBSZXNvdXJjZXMgZXhpc3RpbmcgPSB3ciAhPSBudWxsID8gd3IuZ2V0KCkgOiBudWxsOwotICAgICAgICAgICAgaWYgKGV4aXN0aW5nICE9IG51bGwgJiYgZXhpc3RpbmcuZ2V0QXNzZXRzKCkuaXNVcFRvRGF0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gU29tZW9uZSBlbHNlIGFscmVhZHkgY3JlYXRlZCB0aGUgcmVzb3VyY2VzIHdoaWxlIHdlIHdlcmUKLSAgICAgICAgICAgICAgICAvLyB1bmxvY2tlZDsgZ28gYWhlYWQgYW5kIHVzZSB0aGVpcnMuCi0gICAgICAgICAgICAgICAgci5nZXRBc3NldHMoKS5jbG9zZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBleGlzdGluZzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gWFhYIG5lZWQgdG8gcmVtb3ZlIGVudHJpZXMgd2hlbiB3ZWFrIHJlZmVyZW5jZXMgZ28gYXdheQotICAgICAgICAgICAgbUFjdGl2ZVJlc291cmNlcy5wdXQoa2V5LCBuZXcgV2Vha1JlZmVyZW5jZTxSZXNvdXJjZXM+KHIpKTsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlcyB0aGUgdG9wIGxldmVsIHJlc291cmNlcyBmb3IgdGhlIGdpdmVuIHBhY2thZ2UuCi0gICAgICovCi0gICAgUmVzb3VyY2VzIGdldFRvcExldmVsUmVzb3VyY2VzKFN0cmluZyByZXNEaXIsIFBhY2thZ2VJbmZvIHBrZ0luZm8pIHsKLSAgICAgICAgcmV0dXJuIGdldFRvcExldmVsUmVzb3VyY2VzKHJlc0RpciwgcGtnSW5mby5tQ29tcGF0aWJpbGl0eUluZm8pOwotICAgIH0KLQotICAgIGZpbmFsIEhhbmRsZXIgZ2V0SGFuZGxlcigpIHsKLSAgICAgICAgcmV0dXJuIG1IOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgY2xhc3MgUGFja2FnZUluZm8gewotCi0gICAgICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHlUaHJlYWQgbUFjdGl2aXR5VGhyZWFkOwotICAgICAgICBwcml2YXRlIGZpbmFsIEFwcGxpY2F0aW9uSW5mbyBtQXBwbGljYXRpb25JbmZvOwotICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtUGFja2FnZU5hbWU7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1BcHBEaXI7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1SZXNEaXI7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nW10gbVNoYXJlZExpYnJhcmllczsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbURhdGFEaXI7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgRmlsZSBtRGF0YURpckZpbGU7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgQ2xhc3NMb2FkZXIgbUJhc2VDbGFzc0xvYWRlcjsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1TZWN1cml0eVZpb2xhdGlvbjsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1JbmNsdWRlQ29kZTsKLSAgICAgICAgcHJpdmF0ZSBSZXNvdXJjZXMgbVJlc291cmNlczsKLSAgICAgICAgcHJpdmF0ZSBDbGFzc0xvYWRlciBtQ2xhc3NMb2FkZXI7Ci0gICAgICAgIHByaXZhdGUgQXBwbGljYXRpb24gbUFwcGxpY2F0aW9uOwotICAgICAgICBwcml2YXRlIENvbXBhdGliaWxpdHlJbmZvIG1Db21wYXRpYmlsaXR5SW5mbzsKLQotICAgICAgICBwcml2YXRlIGZpbmFsIEhhc2hNYXA8Q29udGV4dCwgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgUmVjZWl2ZXJEaXNwYXRjaGVyPj4gbVJlY2VpdmVycwotICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBSZWNlaXZlckRpc3BhdGNoZXI+PigpOwotICAgICAgICBwcml2YXRlIGZpbmFsIEhhc2hNYXA8Q29udGV4dCwgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgUmVjZWl2ZXJEaXNwYXRjaGVyPj4gbVVucmVnaXN0ZXJlZFJlY2VpdmVycwotICAgICAgICA9IG5ldyBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIFJlY2VpdmVyRGlzcGF0Y2hlcj4+KCk7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBTZXJ2aWNlRGlzcGF0Y2hlcj4+IG1TZXJ2aWNlcwotICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBTZXJ2aWNlRGlzcGF0Y2hlcj4+KCk7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBTZXJ2aWNlRGlzcGF0Y2hlcj4+IG1VbmJvdW5kU2VydmljZXMKLSAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8Q29udGV4dCwgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgU2VydmljZURpc3BhdGNoZXI+PigpOwotCi0gICAgICAgIGludCBtQ2xpZW50Q291bnQgPSAwOwotCi0gICAgICAgIEFwcGxpY2F0aW9uIGdldEFwcGxpY2F0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIG1BcHBsaWNhdGlvbjsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBQYWNrYWdlSW5mbyhBY3Rpdml0eVRocmVhZCBhY3Rpdml0eVRocmVhZCwgQXBwbGljYXRpb25JbmZvIGFJbmZvLAotICAgICAgICAgICAgICAgIEFjdGl2aXR5VGhyZWFkIG1haW5UaHJlYWQsIENsYXNzTG9hZGVyIGJhc2VMb2FkZXIsCi0gICAgICAgICAgICAgICAgYm9vbGVhbiBzZWN1cml0eVZpb2xhdGlvbiwgYm9vbGVhbiBpbmNsdWRlQ29kZSkgewotICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkID0gYWN0aXZpdHlUaHJlYWQ7Ci0gICAgICAgICAgICBtQXBwbGljYXRpb25JbmZvID0gYUluZm87Ci0gICAgICAgICAgICBtUGFja2FnZU5hbWUgPSBhSW5mby5wYWNrYWdlTmFtZTsKLSAgICAgICAgICAgIG1BcHBEaXIgPSBhSW5mby5zb3VyY2VEaXI7Ci0gICAgICAgICAgICBtUmVzRGlyID0gYUluZm8udWlkID09IFByb2Nlc3MubXlVaWQoKSA/IGFJbmZvLnNvdXJjZURpcgotICAgICAgICAgICAgICAgICAgICA6IGFJbmZvLnB1YmxpY1NvdXJjZURpcjsKLSAgICAgICAgICAgIG1TaGFyZWRMaWJyYXJpZXMgPSBhSW5mby5zaGFyZWRMaWJyYXJ5RmlsZXM7Ci0gICAgICAgICAgICBtRGF0YURpciA9IGFJbmZvLmRhdGFEaXI7Ci0gICAgICAgICAgICBtRGF0YURpckZpbGUgPSBtRGF0YURpciAhPSBudWxsID8gbmV3IEZpbGUobURhdGFEaXIpIDogbnVsbDsKLSAgICAgICAgICAgIG1CYXNlQ2xhc3NMb2FkZXIgPSBiYXNlTG9hZGVyOwotICAgICAgICAgICAgbVNlY3VyaXR5VmlvbGF0aW9uID0gc2VjdXJpdHlWaW9sYXRpb247Ci0gICAgICAgICAgICBtSW5jbHVkZUNvZGUgPSBpbmNsdWRlQ29kZTsKLSAgICAgICAgICAgIG1Db21wYXRpYmlsaXR5SW5mbyA9IG5ldyBDb21wYXRpYmlsaXR5SW5mbyhhSW5mbyk7Ci0KLSAgICAgICAgICAgIGlmIChtQXBwRGlyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAobVN5c3RlbUNvbnRleHQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBtU3lzdGVtQ29udGV4dCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0SW1wbC5jcmVhdGVTeXN0ZW1Db250ZXh0KG1haW5UaHJlYWQpOwotICAgICAgICAgICAgICAgICAgICBtU3lzdGVtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS51cGRhdGVDb25maWd1cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVGhyZWFkLmdldENvbmZpZ3VyYXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpblRocmVhZC5nZXREaXNwbGF5TWV0cmljc0xvY2tlZChmYWxzZSkpOwotICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJDcmVhdGVkIHN5c3RlbSByZXNvdXJjZXMgIgotICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgKyBtU3lzdGVtQ29udGV4dC5nZXRSZXNvdXJjZXMoKSArICI6ICIKLSAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICsgbVN5c3RlbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbUNsYXNzTG9hZGVyID0gbVN5c3RlbUNvbnRleHQuZ2V0Q2xhc3NMb2FkZXIoKTsKLSAgICAgICAgICAgICAgICBtUmVzb3VyY2VzID0gbVN5c3RlbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgUGFja2FnZUluZm8oQWN0aXZpdHlUaHJlYWQgYWN0aXZpdHlUaHJlYWQsIFN0cmluZyBuYW1lLAotICAgICAgICAgICAgICAgIENvbnRleHQgc3lzdGVtQ29udGV4dCwgQXBwbGljYXRpb25JbmZvIGluZm8pIHsKLSAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZCA9IGFjdGl2aXR5VGhyZWFkOwotICAgICAgICAgICAgbUFwcGxpY2F0aW9uSW5mbyA9IGluZm8gIT0gbnVsbCA/IGluZm8gOiBuZXcgQXBwbGljYXRpb25JbmZvKCk7Ci0gICAgICAgICAgICBtQXBwbGljYXRpb25JbmZvLnBhY2thZ2VOYW1lID0gbmFtZTsKLSAgICAgICAgICAgIG1QYWNrYWdlTmFtZSA9IG5hbWU7Ci0gICAgICAgICAgICBtQXBwRGlyID0gbnVsbDsKLSAgICAgICAgICAgIG1SZXNEaXIgPSBudWxsOwotICAgICAgICAgICAgbVNoYXJlZExpYnJhcmllcyA9IG51bGw7Ci0gICAgICAgICAgICBtRGF0YURpciA9IG51bGw7Ci0gICAgICAgICAgICBtRGF0YURpckZpbGUgPSBudWxsOwotICAgICAgICAgICAgbUJhc2VDbGFzc0xvYWRlciA9IG51bGw7Ci0gICAgICAgICAgICBtU2VjdXJpdHlWaW9sYXRpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIG1JbmNsdWRlQ29kZSA9IHRydWU7Ci0gICAgICAgICAgICBtQ2xhc3NMb2FkZXIgPSBzeXN0ZW1Db250ZXh0LmdldENsYXNzTG9hZGVyKCk7Ci0gICAgICAgICAgICBtUmVzb3VyY2VzID0gc3lzdGVtQ29udGV4dC5nZXRSZXNvdXJjZXMoKTsKLSAgICAgICAgICAgIG1Db21wYXRpYmlsaXR5SW5mbyA9IG5ldyBDb21wYXRpYmlsaXR5SW5mbyhtQXBwbGljYXRpb25JbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGFja2FnZU5hbWUoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbVBhY2thZ2VOYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIEFwcGxpY2F0aW9uSW5mbyBnZXRBcHBsaWNhdGlvbkluZm8oKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUFwcGxpY2F0aW9uSW5mbzsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBib29sZWFuIGlzU2VjdXJpdHlWaW9sYXRpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gbVNlY3VyaXR5VmlvbGF0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEdldHMgdGhlIGFycmF5IG9mIHNoYXJlZCBsaWJyYXJpZXMgdGhhdCBhcmUgbGlzdGVkIGFzCi0gICAgICAgICAqIHVzZWQgYnkgdGhlIGdpdmVuIHBhY2thZ2UuCi0gICAgICAgICAqCi0gICAgICAgICAqIEBwYXJhbSBwYWNrYWdlTmFtZSB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZSAobm90ZTogbm90IGl0cwotICAgICAgICAgKiBmaWxlIG5hbWUpCi0gICAgICAgICAqIEByZXR1cm4gbnVsbC1vazsgdGhlIGFycmF5IG9mIHNoYXJlZCBsaWJyYXJpZXMsIGVhY2ggb25lCi0gICAgICAgICAqIGEgZnVsbHktcXVhbGlmaWVkIHBhdGgKLSAgICAgICAgICovCi0gICAgICAgIHByaXZhdGUgc3RhdGljIFN0cmluZ1tdIGdldExpYnJhcmllc0ZvcihTdHJpbmcgcGFja2FnZU5hbWUpIHsKLSAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mbyBhaSA9IG51bGw7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGFpID0gZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRBcHBsaWNhdGlvbkluZm8ocGFja2FnZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5HRVRfU0hBUkVEX0xJQlJBUllfRklMRVMpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChhaSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBhaS5zaGFyZWRMaWJyYXJ5RmlsZXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQ29tYmluZXMgdHdvIGFycmF5cyAob2YgbGlicmFyeSBuYW1lcykgc3VjaCB0aGF0IHRoZXkgYXJlCi0gICAgICAgICAqIGNvbmNhdGVuYXRlZCBpbiBvcmRlciBidXQgYXJlIGRldm9pZCBvZiBkdXBsaWNhdGVzLiBUaGUKLSAgICAgICAgICogcmVzdWx0IGlzIGEgc2luZ2xlIHN0cmluZyB3aXRoIHRoZSBuYW1lcyBvZiB0aGUgbGlicmFyaWVzCi0gICAgICAgICAqIHNlcGFyYXRlZCBieSBjb2xvbnMsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIGJvdGggbGlzdHMKLSAgICAgICAgICogd2VyZSA8Y29kZT5udWxsPC9jb2RlPiBvciBlbXB0eS4KLSAgICAgICAgICoKLSAgICAgICAgICogQHBhcmFtIGxpc3QxIG51bGwtb2s7IHRoZSBmaXJzdCBsaXN0Ci0gICAgICAgICAqIEBwYXJhbSBsaXN0MiBudWxsLW9rOyB0aGUgc2Vjb25kIGxpc3QKLSAgICAgICAgICogQHJldHVybiBudWxsLW9rOyB0aGUgY29tYmluYXRpb24KLSAgICAgICAgICovCi0gICAgICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb21iaW5lTGlicyhTdHJpbmdbXSBsaXN0MSwgU3RyaW5nW10gbGlzdDIpIHsKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXIoMzAwKTsKLSAgICAgICAgICAgIGJvb2xlYW4gZmlyc3QgPSB0cnVlOwotCi0gICAgICAgICAgICBpZiAobGlzdDEgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIHMgOiBsaXN0MSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc6Jyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE9ubHkgbmVlZCB0byBjaGVjayBmb3IgZHVwbGljYXRlcyBpZiBsaXN0MSB3YXMgbm9uLWVtcHR5LgotICAgICAgICAgICAgYm9vbGVhbiBkdXBDaGVjayA9ICFmaXJzdDsKLQotICAgICAgICAgICAgaWYgKGxpc3QyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBmb3IgKFN0cmluZyBzIDogbGlzdDIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGR1cENoZWNrICYmIEFycmF5VXRpbHMuY29udGFpbnMobGlzdDEsIHMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIENsYXNzTG9hZGVyIGdldENsYXNzTG9hZGVyKCkgewotICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1DbGFzc0xvYWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtQ2xhc3NMb2FkZXI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG1JbmNsdWRlQ29kZSAmJiAhbVBhY2thZ2VOYW1lLmVxdWFscygiYW5kcm9pZCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyB6aXAgPSBtQXBwRGlyOwotCi0gICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAqIFRoZSBmb2xsb3dpbmcgaXMgYSBiaXQgb2YgYSBoYWNrIHRvIGluamVjdAotICAgICAgICAgICAgICAgICAgICAgKiBpbnN0cnVtZW50YXRpb24gaW50byB0aGUgc3lzdGVtOiBJZiB0aGUgYXBwCi0gICAgICAgICAgICAgICAgICAgICAqIGJlaW5nIHN0YXJ0ZWQgbWF0Y2hlcyBvbmUgb2YgdGhlIGluc3RydW1lbnRhdGlvbiBuYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICogdGhlbiB3ZSBjb21iaW5lIGJvdGggdGhlICJpbnN0cnVtZW50YXRpb24iIGFuZAotICAgICAgICAgICAgICAgICAgICAgKiAiaW5zdHJ1bWVudGVkIiBhcHAgaW50byB0aGUgcGF0aCwgYWxvbmcgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICogY29uY2F0ZW5hdGlvbiBvZiBib3RoIGFwcHMnIHNoYXJlZCBsaWJyYXJ5IGxpc3RzLgotICAgICAgICAgICAgICAgICAgICAgKi8KLQotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaW5zdHJ1bWVudGF0aW9uQXBwRGlyID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQubUluc3RydW1lbnRhdGlvbkFwcERpcjsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGluc3RydW1lbnRhdGlvbkFwcFBhY2thZ2UgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZC5tSW5zdHJ1bWVudGF0aW9uQXBwUGFja2FnZTsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGluc3RydW1lbnRlZEFwcERpciA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50ZWRBcHBEaXI7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ1tdIGluc3RydW1lbnRhdGlvbkxpYnMgPSBudWxsOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChtQXBwRGlyLmVxdWFscyhpbnN0cnVtZW50YXRpb25BcHBEaXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbUFwcERpci5lcXVhbHMoaW5zdHJ1bWVudGVkQXBwRGlyKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgemlwID0gaW5zdHJ1bWVudGF0aW9uQXBwRGlyICsgIjoiICsgaW5zdHJ1bWVudGVkQXBwRGlyOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgaW5zdHJ1bWVudGVkQXBwRGlyLmVxdWFscyhpbnN0cnVtZW50YXRpb25BcHBEaXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uTGlicyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExpYnJhcmllc0ZvcihpbnN0cnVtZW50YXRpb25BcHBQYWNrYWdlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICgobVNoYXJlZExpYnJhcmllcyAhPSBudWxsKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0cnVtZW50YXRpb25MaWJzICE9IG51bGwpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB6aXAgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMaWJzKG1TaGFyZWRMaWJyYXJpZXMsIGluc3RydW1lbnRhdGlvbkxpYnMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnOicgKyB6aXA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgKiBXaXRoIGFsbCB0aGUgY29tYmluYXRpb24gZG9uZSAoaWYgbmVjZXNzYXJ5LCBhY3R1YWxseQotICAgICAgICAgICAgICAgICAgICAgKiBjcmVhdGUgdGhlIGNsYXNzIGxvYWRlci4KLSAgICAgICAgICAgICAgICAgICAgICovCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkNsYXNzIHBhdGg6ICIgKyB6aXApOwotCi0gICAgICAgICAgICAgICAgICAgIG1DbGFzc0xvYWRlciA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkxvYWRlcnMuZ2V0RGVmYXVsdCgpLmdldENsYXNzTG9hZGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcCwgbURhdGFEaXIsIG1CYXNlQ2xhc3NMb2FkZXIpOwotICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplSmF2YUNvbnRleHRDbGFzc0xvYWRlcigpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtQmFzZUNsYXNzTG9hZGVyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1DbGFzc0xvYWRlciA9IENsYXNzTG9hZGVyLmdldFN5c3RlbUNsYXNzTG9hZGVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtQ2xhc3NMb2FkZXIgPSBtQmFzZUNsYXNzTG9hZGVyOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBtQ2xhc3NMb2FkZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogU2V0dXAgdmFsdWUgZm9yIFRocmVhZC5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKS4gSWYgdGhlCi0gICAgICAgICAqIHBhY2thZ2Ugd2lsbCBub3QgcnVuIGluIGluIGEgVk0gd2l0aCBvdGhlciBwYWNrYWdlcywgd2Ugc2V0Ci0gICAgICAgICAqIHRoZSBKYXZhIGNvbnRleHQgQ2xhc3NMb2FkZXIgdG8gdGhlCi0gICAgICAgICAqIFBhY2thZ2VJbmZvLmdldENsYXNzTG9hZGVyIHZhbHVlLiBIb3dldmVyLCBpZiB0aGlzIFZNIGNhbgotICAgICAgICAgKiBjb250YWluIG11bHRpcGxlIHBhY2thZ2VzLCB3ZSBpbnRlYWQgc2V0IHRoZSBKYXZhIGNvbnRleHQKLSAgICAgICAgICogQ2xhc3NMb2FkZXIgdG8gYSBwcm94eSB0aGF0IHdpbGwgd2FybiBhYm91dCB0aGUgdXNlIG9mIEphdmEKLSAgICAgICAgICogY29udGV4dCBDbGFzc0xvYWRlcnMgYW5kIHRoZW4gZmFsbCB0aHJvdWdoIHRvIHVzZSB0aGUKLSAgICAgICAgICogc3lzdGVtIENsYXNzTG9hZGVyLgotICAgICAgICAgKgotICAgICAgICAgKiA8cD4gTm90ZSB0aGF0IHRoaXMgaXMgc2ltaWxhciB0byBidXQgbm90IHRoZSBzYW1lIGFzIHRoZQotICAgICAgICAgKiBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dC5nZXRDbGFzc0xvYWRlcigpLiBXaGlsZSBib3RoCi0gICAgICAgICAqIGNvbnRleHQgY2xhc3MgbG9hZGVycyBhcmUgdHlwaWNhbGx5IHNldCB0byB0aGUKLSAgICAgICAgICogUGF0aENsYXNzTG9hZGVyIHVzZWQgdG8gbG9hZCB0aGUgcGFja2FnZSBhcmNoaXZlIGluIHRoZQotICAgICAgICAgKiBzaW5nbGUgYXBwbGljYXRpb24gcGVyIFZNIGNhc2UsIGEgc2luZ2xlIEFuZHJvaWQgcHJvY2VzcwotICAgICAgICAgKiBtYXkgY29udGFpbiBzZXZlcmFsIENvbnRleHRzIGV4ZWN1dGluZyBvbiBvbmUgdGhyZWFkIHdpdGgKLSAgICAgICAgICogdGhlaXIgb3duIGxvZ2ljYWwgQ2xhc3NMb2FkZXJzIHdoaWxlIHRoZSBKYXZhIGNvbnRleHQKLSAgICAgICAgICogQ2xhc3NMb2FkZXIgaXMgYSB0aHJlYWQgbG9jYWwuIFRoaXMgaXMgd2h5IGluIHRoZSBjYXNlIHdoZW4KLSAgICAgICAgICogd2UgaGF2ZSBtdWx0aXBsZSBwYWNrYWdlcyBwZXIgVk0gd2UgZG8gbm90IHNldCB0aGUgSmF2YQotICAgICAgICAgKiBjb250ZXh0IENsYXNzTG9hZGVyIHRvIGFuIGFyYml0cmFyeSBidXQgaW5zdGVhZCB3YXJuIHRoZQotICAgICAgICAgKiB1c2VyIHRvIHNldCB0aGVpciBvd24gaWYgd2UgZGV0ZWN0IHRoYXQgdGhleSBhcmUgdXNpbmcgYQotICAgICAgICAgKiBKYXZhIGxpYnJhcnkgdGhhdCBleHBlY3RzIGl0IHRvIGJlIHNldC4KLSAgICAgICAgICovCi0gICAgICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplSmF2YUNvbnRleHRDbGFzc0xvYWRlcigpIHsKLSAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IGdldFBhY2thZ2VNYW5hZ2VyKCk7Ci0gICAgICAgICAgICBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm8gcGk7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHBpID0gcG0uZ2V0UGFja2FnZUluZm8obVBhY2thZ2VOYW1lLCAwKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFR3byBwb3NzaWJsZSBpbmRpY2F0aW9ucyB0aGF0IHRoaXMgcGFja2FnZSBjb3VsZCBiZQotICAgICAgICAgICAgICogc2hhcmluZyBpdHMgdmlydHVhbCBtYWNoaW5lIHdpdGggb3RoZXIgcGFja2FnZXM6Ci0gICAgICAgICAgICAgKgotICAgICAgICAgICAgICogMS4pIHRoZSBzaGFyZWRVc2VySWQgYXR0cmlidXRlIGlzIHNldCBpbiB0aGUgbWFuaWZlc3QsCi0gICAgICAgICAgICAgKiAgICAgaW5kaWNhdGluZyBhIHJlcXVlc3QgdG8gc2hhcmUgYSBWTSB3aXRoIG90aGVyCi0gICAgICAgICAgICAgKiAgICAgcGFja2FnZXMgd2l0aCB0aGUgc2FtZSBzaGFyZWRVc2VySWQuCi0gICAgICAgICAgICAgKgotICAgICAgICAgICAgICogMi4pIHRoZSBhcHBsaWNhdGlvbiBlbGVtZW50IG9mIHRoZSBtYW5pZmVzdCBoYXMgYW4KLSAgICAgICAgICAgICAqICAgICBhdHRyaWJ1dGUgc3BlY2lmeWluZyBhIG5vbi1kZWZhdWx0IHByb2Nlc3MgbmFtZSwKLSAgICAgICAgICAgICAqICAgICBpbmRpY2F0aW5nIHRoZSBkZXNpcmUgdG8gcnVuIGluIGFub3RoZXIgcGFja2FnZXMgVk0uCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGJvb2xlYW4gc2hhcmVkVXNlcklkU2V0ID0gKHBpLnNoYXJlZFVzZXJJZCAhPSBudWxsKTsKLSAgICAgICAgICAgIGJvb2xlYW4gcHJvY2Vzc05hbWVOb3REZWZhdWx0ID0KLSAgICAgICAgICAgICAgICAocGkuYXBwbGljYXRpb25JbmZvICE9IG51bGwgJiYKLSAgICAgICAgICAgICAgICAgIW1QYWNrYWdlTmFtZS5lcXVhbHMocGkuYXBwbGljYXRpb25JbmZvLnByb2Nlc3NOYW1lKSk7Ci0gICAgICAgICAgICBib29sZWFuIHNoYXJhYmxlID0gKHNoYXJlZFVzZXJJZFNldCB8fCBwcm9jZXNzTmFtZU5vdERlZmF1bHQpOwotICAgICAgICAgICAgQ2xhc3NMb2FkZXIgY29udGV4dENsYXNzTG9hZGVyID0KLSAgICAgICAgICAgICAgICAoc2hhcmFibGUpCi0gICAgICAgICAgICAgICAgPyBuZXcgV2FybmluZ0NvbnRleHRDbGFzc0xvYWRlcigpCi0gICAgICAgICAgICAgICAgOiBtQ2xhc3NMb2FkZXI7Ci0gICAgICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihjb250ZXh0Q2xhc3NMb2FkZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgV2FybmluZ0NvbnRleHRDbGFzc0xvYWRlciBleHRlbmRzIENsYXNzTG9hZGVyIHsKLQotICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiB3YXJuZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIHdhcm4oU3RyaW5nIG1ldGhvZE5hbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAod2FybmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2FybmVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihnZXRQYXJlbnQoKSk7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkNsYXNzTG9hZGVyLiIgKyBtZXRob2ROYW1lICsgIjogIiArCi0gICAgICAgICAgICAgICAgICAgICAgIlRoZSBjbGFzcyBsb2FkZXIgcmV0dXJuZWQgYnkgIiArCi0gICAgICAgICAgICAgICAgICAgICAgIlRocmVhZC5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKSBtYXkgZmFpbCBmb3IgcHJvY2Vzc2VzICIgKwotICAgICAgICAgICAgICAgICAgICAgICJ0aGF0IGhvc3QgbXVsdGlwbGUgYXBwbGljYXRpb25zLiBZb3Ugc2hvdWxkIGV4cGxpY2l0bHkgIiArCi0gICAgICAgICAgICAgICAgICAgICAgInNwZWNpZnkgYSBjb250ZXh0IGNsYXNzIGxvYWRlci4gRm9yIGV4YW1wbGU6ICIgKwotICAgICAgICAgICAgICAgICAgICAgICJUaHJlYWQuc2V0Q29udGV4dENsYXNzTG9hZGVyKGdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgVVJMIGdldFJlc291cmNlKFN0cmluZyByZXNOYW1lKSB7Ci0gICAgICAgICAgICAgICAgd2FybigiZ2V0UmVzb3VyY2UiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50KCkuZ2V0UmVzb3VyY2UocmVzTmFtZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgRW51bWVyYXRpb248VVJMPiBnZXRSZXNvdXJjZXMoU3RyaW5nIHJlc05hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7Ci0gICAgICAgICAgICAgICAgd2FybigiZ2V0UmVzb3VyY2VzIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdldFBhcmVudCgpLmdldFJlc291cmNlcyhyZXNOYW1lKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRSZXNvdXJjZUFzU3RyZWFtKFN0cmluZyByZXNOYW1lKSB7Ci0gICAgICAgICAgICAgICAgd2FybigiZ2V0UmVzb3VyY2VBc1N0cmVhbSIpOwotICAgICAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKHJlc05hbWUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBAT3ZlcnJpZGUgcHVibGljIENsYXNzPD8+IGxvYWRDbGFzcyhTdHJpbmcgY2xhc3NOYW1lKSB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICAgICAgd2FybigibG9hZENsYXNzIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdldFBhcmVudCgpLmxvYWRDbGFzcyhjbGFzc05hbWUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgc2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMoU3RyaW5nIGNuYW1lLCBib29sZWFuIGVuYWJsZSkgewotICAgICAgICAgICAgICAgIHdhcm4oInNldENsYXNzQXNzZXJ0aW9uU3RhdHVzIik7Ci0gICAgICAgICAgICAgICAgZ2V0UGFyZW50KCkuc2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMoY25hbWUsIGVuYWJsZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBzZXRQYWNrYWdlQXNzZXJ0aW9uU3RhdHVzKFN0cmluZyBwbmFtZSwgYm9vbGVhbiBlbmFibGUpIHsKLSAgICAgICAgICAgICAgICB3YXJuKCJzZXRQYWNrYWdlQXNzZXJ0aW9uU3RhdHVzIik7Ci0gICAgICAgICAgICAgICAgZ2V0UGFyZW50KCkuc2V0UGFja2FnZUFzc2VydGlvblN0YXR1cyhwbmFtZSwgZW5hYmxlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIHNldERlZmF1bHRBc3NlcnRpb25TdGF0dXMoYm9vbGVhbiBlbmFibGUpIHsKLSAgICAgICAgICAgICAgICB3YXJuKCJzZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzIik7Ci0gICAgICAgICAgICAgICAgZ2V0UGFyZW50KCkuc2V0RGVmYXVsdEFzc2VydGlvblN0YXR1cyhlbmFibGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgY2xlYXJBc3NlcnRpb25TdGF0dXMoKSB7Ci0gICAgICAgICAgICAgICAgd2FybigiY2xlYXJBc3NlcnRpb25TdGF0dXMiKTsKLSAgICAgICAgICAgICAgICBnZXRQYXJlbnQoKS5jbGVhckFzc2VydGlvblN0YXR1cygpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIFN0cmluZyBnZXRBcHBEaXIoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUFwcERpcjsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0UmVzRGlyKCkgewotICAgICAgICAgICAgcmV0dXJuIG1SZXNEaXI7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgU3RyaW5nIGdldERhdGFEaXIoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbURhdGFEaXI7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgRmlsZSBnZXREYXRhRGlyRmlsZSgpIHsKLSAgICAgICAgICAgIHJldHVybiBtRGF0YURpckZpbGU7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgQXNzZXRNYW5hZ2VyIGdldEFzc2V0cyhBY3Rpdml0eVRocmVhZCBtYWluVGhyZWFkKSB7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0UmVzb3VyY2VzKG1haW5UaHJlYWQpLmdldEFzc2V0cygpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIFJlc291cmNlcyBnZXRSZXNvdXJjZXMoQWN0aXZpdHlUaHJlYWQgbWFpblRocmVhZCkgewotICAgICAgICAgICAgaWYgKG1SZXNvdXJjZXMgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1SZXNvdXJjZXMgPSBtYWluVGhyZWFkLmdldFRvcExldmVsUmVzb3VyY2VzKG1SZXNEaXIsIHRoaXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1SZXNvdXJjZXM7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgQXBwbGljYXRpb24gbWFrZUFwcGxpY2F0aW9uKGJvb2xlYW4gZm9yY2VEZWZhdWx0QXBwQ2xhc3MsCi0gICAgICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uIGluc3RydW1lbnRhdGlvbikgewotICAgICAgICAgICAgaWYgKG1BcHBsaWNhdGlvbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1BcHBsaWNhdGlvbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQXBwbGljYXRpb24gYXBwID0gbnVsbDsKLQotICAgICAgICAgICAgU3RyaW5nIGFwcENsYXNzID0gbUFwcGxpY2F0aW9uSW5mby5jbGFzc05hbWU7Ci0gICAgICAgICAgICBpZiAoZm9yY2VEZWZhdWx0QXBwQ2xhc3MgfHwgKGFwcENsYXNzID09IG51bGwpKSB7Ci0gICAgICAgICAgICAgICAgYXBwQ2xhc3MgPSAiYW5kcm9pZC5hcHAuQXBwbGljYXRpb24iOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGphdmEubGFuZy5DbGFzc0xvYWRlciBjbCA9IGdldENsYXNzTG9hZGVyKCk7Ci0gICAgICAgICAgICAgICAgQ29udGV4dEltcGwgYXBwQ29udGV4dCA9IG5ldyBDb250ZXh0SW1wbCgpOwotICAgICAgICAgICAgICAgIGFwcENvbnRleHQuaW5pdCh0aGlzLCBudWxsLCBtQWN0aXZpdHlUaHJlYWQpOwotICAgICAgICAgICAgICAgIGFwcCA9IG1BY3Rpdml0eVRocmVhZC5tSW5zdHJ1bWVudGF0aW9uLm5ld0FwcGxpY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgY2wsIGFwcENsYXNzLCBhcHBDb250ZXh0KTsKLSAgICAgICAgICAgICAgICBhcHBDb250ZXh0LnNldE91dGVyQ29udGV4dChhcHApOwotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1BY3Rpdml0eVRocmVhZC5tSW5zdHJ1bWVudGF0aW9uLm9uRXhjZXB0aW9uKGFwcCwgZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGluc3RhbnRpYXRlIGFwcGxpY2F0aW9uICIgKyBhcHBDbGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiAiICsgZS50b1N0cmluZygpLCBlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQubUFsbEFwcGxpY2F0aW9ucy5hZGQoYXBwKTsKLSAgICAgICAgICAgIG1BcHBsaWNhdGlvbiA9IGFwcDsKLQotICAgICAgICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLmNhbGxBcHBsaWNhdGlvbk9uQ3JlYXRlKGFwcCk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0cnVtZW50YXRpb24ub25FeGNlcHRpb24oYXBwLCBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjcmVhdGUgYXBwbGljYXRpb24gIiArIGFwcC5nZXRDbGFzcygpLmdldE5hbWUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjogIiArIGUudG9TdHJpbmcoKSwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBhcHA7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmVDb250ZXh0UmVnaXN0cmF0aW9ucyhDb250ZXh0IGNvbnRleHQsCi0gICAgICAgICAgICAgICAgU3RyaW5nIHdobywgU3RyaW5nIHdoYXQpIHsKLSAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIFJlY2VpdmVyRGlzcGF0Y2hlcj4gcm1hcCA9Ci0gICAgICAgICAgICAgICAgbVJlY2VpdmVycy5yZW1vdmUoY29udGV4dCk7Ci0gICAgICAgICAgICBpZiAocm1hcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgSXRlcmF0b3I8UmVjZWl2ZXJEaXNwYXRjaGVyPiBpdCA9IHJtYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlY2VpdmVyRGlzcGF0Y2hlciByZCA9IGl0Lm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgSW50ZW50UmVjZWl2ZXJMZWFrZWQgbGVhayA9IG5ldyBJbnRlbnRSZWNlaXZlckxlYWtlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGF0ICsgIiAiICsgd2hvICsgIiBoYXMgbGVha2VkIEludGVudFJlY2VpdmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHJkLmdldEludGVudFJlY2VpdmVyKCkgKyAiIHRoYXQgd2FzICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmlnaW5hbGx5IHJlZ2lzdGVyZWQgaGVyZS4gQXJlIHlvdSBtaXNzaW5nIGEgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGwgdG8gdW5yZWdpc3RlclJlY2VpdmVyKCk/Iik7Ci0gICAgICAgICAgICAgICAgICAgIGxlYWsuc2V0U3RhY2tUcmFjZShyZC5nZXRMb2NhdGlvbigpLmdldFN0YWNrVHJhY2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsIGxlYWsuZ2V0TWVzc2FnZSgpLCBsZWFrKTsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkudW5yZWdpc3RlclJlY2VpdmVyKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZC5nZXRJSW50ZW50UmVjZWl2ZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXN0ZW0gY3Jhc2hlZCwgbm90aGluZyB3ZSBjYW4gZG8KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1VbnJlZ2lzdGVyZWRSZWNlaXZlcnMucmVtb3ZlKGNvbnRleHQpOwotICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiUmVjZWl2ZXIgcmVnaXN0cmF0aW9uczogIiArIG1SZWNlaXZlcnMpOwotICAgICAgICAgICAgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgU2VydmljZURpc3BhdGNoZXI+IHNtYXAgPQotICAgICAgICAgICAgICAgIG1TZXJ2aWNlcy5yZW1vdmUoY29udGV4dCk7Ci0gICAgICAgICAgICBpZiAoc21hcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgSXRlcmF0b3I8U2VydmljZURpc3BhdGNoZXI+IGl0ID0gc21hcC52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIgc2QgPSBpdC5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIFNlcnZpY2VDb25uZWN0aW9uTGVha2VkIGxlYWsgPSBuZXcgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hhdCArICIgIiArIHdobyArICIgaGFzIGxlYWtlZCBTZXJ2aWNlQ29ubmVjdGlvbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZC5nZXRTZXJ2aWNlQ29ubmVjdGlvbigpICsgIiB0aGF0IHdhcyBvcmlnaW5hbGx5IGJvdW5kIGhlcmUiKTsKLSAgICAgICAgICAgICAgICAgICAgbGVhay5zZXRTdGFja1RyYWNlKHNkLmdldExvY2F0aW9uKCkuZ2V0U3RhY2tUcmFjZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgbGVhay5nZXRNZXNzYWdlKCksIGxlYWspOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS51bmJpbmRTZXJ2aWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZC5nZXRJU2VydmljZUNvbm5lY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXN0ZW0gY3Jhc2hlZCwgbm90aGluZyB3ZSBjYW4gZG8KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzZC5kb0ZvcmdldCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1VbmJvdW5kU2VydmljZXMucmVtb3ZlKGNvbnRleHQpOwotICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiU2VydmljZSByZWdpc3RyYXRpb25zOiAiICsgbVNlcnZpY2VzKTsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBJSW50ZW50UmVjZWl2ZXIgZ2V0UmVjZWl2ZXJEaXNwYXRjaGVyKEJyb2FkY2FzdFJlY2VpdmVyIHIsCi0gICAgICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIsCi0gICAgICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uIGluc3RydW1lbnRhdGlvbiwgYm9vbGVhbiByZWdpc3RlcmVkKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1SZWNlaXZlcnMpIHsKLSAgICAgICAgICAgICAgICBSZWNlaXZlckRpc3BhdGNoZXIgcmQgPSBudWxsOwotICAgICAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIFJlY2VpdmVyRGlzcGF0Y2hlcj4gbWFwID0gbnVsbDsKLSAgICAgICAgICAgICAgICBpZiAocmVnaXN0ZXJlZCkgewotICAgICAgICAgICAgICAgICAgICBtYXAgPSBtUmVjZWl2ZXJzLmdldChjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1hcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZCA9IG1hcC5nZXQocik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHJkID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgcmQgPSBuZXcgUmVjZWl2ZXJEaXNwYXRjaGVyKHIsIGNvbnRleHQsIGhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLCByZWdpc3RlcmVkKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ2lzdGVyZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXAgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCA9IG5ldyBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBSZWNlaXZlckRpc3BhdGNoZXI+KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlY2VpdmVycy5wdXQoY29udGV4dCwgbWFwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5wdXQociwgcmQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmQudmFsaWRhdGUoY29udGV4dCwgaGFuZGxlcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiByZC5nZXRJSW50ZW50UmVjZWl2ZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBJSW50ZW50UmVjZWl2ZXIgZm9yZ2V0UmVjZWl2ZXJEaXNwYXRjaGVyKENvbnRleHQgY29udGV4dCwKLSAgICAgICAgICAgICAgICBCcm9hZGNhc3RSZWNlaXZlciByKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1SZWNlaXZlcnMpIHsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBSZWNlaXZlckRpc3BhdGNoZXI+IG1hcCA9IG1SZWNlaXZlcnMuZ2V0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgIFJlY2VpdmVyRGlzcGF0Y2hlciByZCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgaWYgKG1hcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJkID0gbWFwLmdldChyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5yZW1vdmUocik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwLnNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlY2VpdmVycy5yZW1vdmUoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5nZXREZWJ1Z1VucmVnaXN0ZXIoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIFJlY2VpdmVyRGlzcGF0Y2hlcj4gaG9sZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1VbnJlZ2lzdGVyZWRSZWNlaXZlcnMuZ2V0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChob2xkZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob2xkZXIgPSBuZXcgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgUmVjZWl2ZXJEaXNwYXRjaGVyPigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVW5yZWdpc3RlcmVkUmVjZWl2ZXJzLnB1dChjb250ZXh0LCBob2xkZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIGV4ID0gbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmlnaW5hbGx5IHVucmVnaXN0ZXJlZCBoZXJlOiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4LmZpbGxJblN0YWNrVHJhY2UoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZC5zZXRVbnJlZ2lzdGVyTG9jYXRpb24oZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlci5wdXQociwgcmQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJkLmdldElJbnRlbnRSZWNlaXZlcigpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIFJlY2VpdmVyRGlzcGF0Y2hlcj4gaG9sZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICA9IG1VbnJlZ2lzdGVyZWRSZWNlaXZlcnMuZ2V0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgIGlmIChob2xkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByZCA9IGhvbGRlci5nZXQocik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIGV4ID0gcmQuZ2V0VW5yZWdpc3RlckxvY2F0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5yZWdpc3RlcmluZyBSZWNlaXZlciAiICsgcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdGhhdCB3YXMgYWxyZWFkeSB1bnJlZ2lzdGVyZWQiLCBleCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmJpbmRpbmcgUmVjZWl2ZXIgIiArIHIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgZnJvbSBDb250ZXh0IHRoYXQgaXMgbm8gbG9uZ2VyIGluIHVzZTogIiArIGNvbnRleHQpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlJlY2VpdmVyIG5vdCByZWdpc3RlcmVkOiAiICsgcik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgZmluYWwgY2xhc3MgUmVjZWl2ZXJEaXNwYXRjaGVyIHsKLQotICAgICAgICAgICAgZmluYWwgc3RhdGljIGNsYXNzIElubmVyUmVjZWl2ZXIgZXh0ZW5kcyBJSW50ZW50UmVjZWl2ZXIuU3R1YiB7Ci0gICAgICAgICAgICAgICAgZmluYWwgV2Vha1JlZmVyZW5jZTxSZWNlaXZlckRpc3BhdGNoZXI+IG1EaXNwYXRjaGVyOwotICAgICAgICAgICAgICAgIGZpbmFsIFJlY2VpdmVyRGlzcGF0Y2hlciBtU3Ryb25nUmVmOwotCi0gICAgICAgICAgICAgICAgSW5uZXJSZWNlaXZlcihSZWNlaXZlckRpc3BhdGNoZXIgcmQsIGJvb2xlYW4gc3Ryb25nKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1EaXNwYXRjaGVyID0gbmV3IFdlYWtSZWZlcmVuY2U8UmVjZWl2ZXJEaXNwYXRjaGVyPihyZCk7Ci0gICAgICAgICAgICAgICAgICAgIG1TdHJvbmdSZWYgPSBzdHJvbmcgPyByZCA6IG51bGw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHBlcmZvcm1SZWNlaXZlKEludGVudCBpbnRlbnQsIGludCByZXN1bHRDb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRhdGEsIEJ1bmRsZSBleHRyYXMsIGJvb2xlYW4gb3JkZXJlZCwgYm9vbGVhbiBzdGlja3kpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVjZWl2ZXJEaXNwYXRjaGVyIHJkID0gbURpc3BhdGNoZXIuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19CUk9BRENBU1QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXEgPSBpbnRlbnQuZ2V0SW50RXh0cmEoInNlcSIsIC0xKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJSZWNlaXZpbmcgYnJvYWRjYXN0ICIgKyBpbnRlbnQuZ2V0QWN0aW9uKCkgKyAiIHNlcT0iICsgc2VxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0byAiICsgKHJkICE9IG51bGwgPyByZC5tUmVjZWl2ZXIgOiBudWxsKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJkLnBlcmZvcm1SZWNlaXZlKGludGVudCwgcmVzdWx0Q29kZSwgZGF0YSwgZXh0cmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkLCBzdGlja3kpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGFjdGl2aXR5IG1hbmFnZXIgZGlzcGF0Y2hlZCBhIGJyb2FkY2FzdCB0byBhIHJlZ2lzdGVyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY2VpdmVyIGluIHRoaXMgcHJvY2VzcywgYnV0IGJlZm9yZSBpdCBjb3VsZCBiZSBkZWxpdmVyZWQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyByZWNlaXZlciB3YXMgdW5yZWdpc3RlcmVkLiAgQWNrbm93bGVkZ2UgdGhlIGJyb2FkY2FzdCBvbiBpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlaGFsZiBzbyB0aGF0IHRoZSBzeXN0ZW0ncyBicm9hZGNhc3Qgc2VxdWVuY2UgY2FuIGNvbnRpbnVlLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0JST0FEQ0FTVCkgU2xvZy5pKFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmlzaGluZyBicm9hZGNhc3QgdG8gdW5yZWdpc3RlcmVkIHJlY2VpdmVyIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIG1nciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcih0aGlzLCByZXN1bHRDb2RlLCBkYXRhLCBleHRyYXMsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkNvdWxkbid0IGZpbmlzaCBicm9hZGNhc3QgdG8gdW5yZWdpc3RlcmVkIHJlY2VpdmVyIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZpbmFsIElJbnRlbnRSZWNlaXZlci5TdHViIG1JSW50ZW50UmVjZWl2ZXI7Ci0gICAgICAgICAgICBmaW5hbCBCcm9hZGNhc3RSZWNlaXZlciBtUmVjZWl2ZXI7Ci0gICAgICAgICAgICBmaW5hbCBDb250ZXh0IG1Db250ZXh0OwotICAgICAgICAgICAgZmluYWwgSGFuZGxlciBtQWN0aXZpdHlUaHJlYWQ7Ci0gICAgICAgICAgICBmaW5hbCBJbnN0cnVtZW50YXRpb24gbUluc3RydW1lbnRhdGlvbjsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gbVJlZ2lzdGVyZWQ7Ci0gICAgICAgICAgICBmaW5hbCBJbnRlbnRSZWNlaXZlckxlYWtlZCBtTG9jYXRpb247Ci0gICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIG1VbnJlZ2lzdGVyTG9jYXRpb247Ci0KLSAgICAgICAgICAgIGZpbmFsIGNsYXNzIEFyZ3MgaW1wbGVtZW50cyBSdW5uYWJsZSB7Ci0gICAgICAgICAgICAgICAgcHJpdmF0ZSBJbnRlbnQgbUN1ckludGVudDsKLSAgICAgICAgICAgICAgICBwcml2YXRlIGludCBtQ3VyQ29kZTsKLSAgICAgICAgICAgICAgICBwcml2YXRlIFN0cmluZyBtQ3VyRGF0YTsKLSAgICAgICAgICAgICAgICBwcml2YXRlIEJ1bmRsZSBtQ3VyTWFwOwotICAgICAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBtQ3VyT3JkZXJlZDsKLSAgICAgICAgICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUN1clN0aWNreTsKLQotICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgQnJvYWRjYXN0UmVjZWl2ZXIgcmVjZWl2ZXIgPSBtUmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19CUk9BRENBU1QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXEgPSBtQ3VySW50ZW50LmdldEludEV4dHJhKCJzZXEiLCAtMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiRGlzcGF0Y2hpbmcgYnJvYWRjYXN0ICIgKyBtQ3VySW50ZW50LmdldEFjdGlvbigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBzZXE9IiArIHNlcSArICIgdG8gIiArIG1SZWNlaXZlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiICBtUmVnaXN0ZXJlZD0iICsgbVJlZ2lzdGVyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIG1DdXJPcmRlcmVkPSIgKyBtQ3VyT3JkZXJlZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIElBY3Rpdml0eU1hbmFnZXIgbWdyID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKTsKLSAgICAgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG1DdXJJbnRlbnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1DdXJJbnRlbnQgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlY2VpdmVyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtUmVnaXN0ZXJlZCAmJiBtQ3VyT3JkZXJlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19CUk9BRENBU1QpIFNsb2cuaShUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmlzaGluZyBudWxsIGJyb2FkY2FzdCB0byAiICsgbVJlY2VpdmVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWdyLmZpbmlzaFJlY2VpdmVyKG1JSW50ZW50UmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckNvZGUsIG1DdXJEYXRhLCBtQ3VyTWFwLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzTG9hZGVyIGNsID0gIG1SZWNlaXZlci5nZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RXh0cmFzQ2xhc3NMb2FkZXIoY2wpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1DdXJNYXAgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJNYXAuc2V0Q2xhc3NMb2FkZXIoY2wpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuc2V0T3JkZXJlZEhpbnQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5zZXRSZXN1bHQobUN1ckNvZGUsIG1DdXJEYXRhLCBtQ3VyTWFwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLmNsZWFyQWJvcnRCcm9hZGNhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLnNldE9yZGVyZWRIaW50KG1DdXJPcmRlcmVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLnNldEluaXRpYWxTdGlja3lIaW50KG1DdXJTdGlja3kpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIub25SZWNlaXZlKG1Db250ZXh0LCBpbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1SZWdpc3RlcmVkICYmIG1DdXJPcmRlcmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0JST0FEQ0FTVCkgU2xvZy5pKFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIGZhaWxlZCBicm9hZGNhc3QgdG8gIiArIG1SZWNlaXZlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcihtSUludGVudFJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJDb2RlLCBtQ3VyRGF0YSwgbUN1ck1hcCwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtSW5zdHJ1bWVudGF0aW9uID09IG51bGwgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIW1JbnN0cnVtZW50YXRpb24ub25FeGNlcHRpb24obVJlY2VpdmVyLCBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgcmVjZWl2aW5nIGJyb2FkY2FzdCAiICsgaW50ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBpbiAiICsgbVJlY2VpdmVyLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAobVJlZ2lzdGVyZWQgJiYgbUN1ck9yZGVyZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0JST0FEQ0FTVCkgU2xvZy5pKFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5pc2hpbmcgYnJvYWRjYXN0IHRvICIgKyBtUmVjZWl2ZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcihtSUludGVudFJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuZ2V0UmVzdWx0Q29kZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuZ2V0UmVzdWx0RGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuZ2V0UmVzdWx0RXh0cmFzKGZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLmdldEFib3J0QnJvYWRjYXN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFJlY2VpdmVyRGlzcGF0Y2hlcihCcm9hZGNhc3RSZWNlaXZlciByZWNlaXZlciwgQ29udGV4dCBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICBIYW5kbGVyIGFjdGl2aXR5VGhyZWFkLCBJbnN0cnVtZW50YXRpb24gaW5zdHJ1bWVudGF0aW9uLAotICAgICAgICAgICAgICAgICAgICBib29sZWFuIHJlZ2lzdGVyZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdHlUaHJlYWQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIkhhbmRsZXIgbXVzdCBub3QgYmUgbnVsbCIpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1JSW50ZW50UmVjZWl2ZXIgPSBuZXcgSW5uZXJSZWNlaXZlcih0aGlzLCAhcmVnaXN0ZXJlZCk7Ci0gICAgICAgICAgICAgICAgbVJlY2VpdmVyID0gcmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwotICAgICAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZCA9IGFjdGl2aXR5VGhyZWFkOwotICAgICAgICAgICAgICAgIG1JbnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247Ci0gICAgICAgICAgICAgICAgbVJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkOwotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbiA9IG5ldyBJbnRlbnRSZWNlaXZlckxlYWtlZChudWxsKTsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uZmlsbEluU3RhY2tUcmFjZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkIHZhbGlkYXRlKENvbnRleHQgY29udGV4dCwgSGFuZGxlciBhY3Rpdml0eVRocmVhZCkgewotICAgICAgICAgICAgICAgIGlmIChtQ29udGV4dCAhPSBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAiUmVjZWl2ZXIgIiArIG1SZWNlaXZlciArCi0gICAgICAgICAgICAgICAgICAgICAgICAiIHJlZ2lzdGVyZWQgd2l0aCBkaWZmZXJpbmcgQ29udGV4dCAod2FzICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQgKyAiIG5vdyAiICsgY29udGV4dCArICIpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtQWN0aXZpdHlUaHJlYWQgIT0gYWN0aXZpdHlUaHJlYWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICJSZWNlaXZlciAiICsgbVJlY2VpdmVyICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgcmVnaXN0ZXJlZCB3aXRoIGRpZmZlcmluZyBoYW5kbGVyICh3YXMgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQgKyAiIG5vdyAiICsgYWN0aXZpdHlUaHJlYWQgKyAiKSIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgSW50ZW50UmVjZWl2ZXJMZWFrZWQgZ2V0TG9jYXRpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1Mb2NhdGlvbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQnJvYWRjYXN0UmVjZWl2ZXIgZ2V0SW50ZW50UmVjZWl2ZXIoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1SZWNlaXZlcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgSUludGVudFJlY2VpdmVyIGdldElJbnRlbnRSZWNlaXZlcigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbUlJbnRlbnRSZWNlaXZlcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdm9pZCBzZXRVbnJlZ2lzdGVyTG9jYXRpb24oUnVudGltZUV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgICAgIG1VbnJlZ2lzdGVyTG9jYXRpb24gPSBleDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBnZXRVbnJlZ2lzdGVyTG9jYXRpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1VbnJlZ2lzdGVyTG9jYXRpb247Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIHBlcmZvcm1SZWNlaXZlKEludGVudCBpbnRlbnQsIGludCByZXN1bHRDb2RlLAotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGF0YSwgQnVuZGxlIGV4dHJhcywgYm9vbGVhbiBvcmRlcmVkLCBib29sZWFuIHN0aWNreSkgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19CUk9BRENBU1QpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHNlcSA9IGludGVudC5nZXRJbnRFeHRyYSgic2VxIiwgLTEpOwotICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiRW5xdWV1ZWluZyBicm9hZGNhc3QgIiArIGludGVudC5nZXRBY3Rpb24oKSArICIgc2VxPSIgKyBzZXEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdG8gIiArIG1SZWNlaXZlcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEFyZ3MgYXJncyA9IG5ldyBBcmdzKCk7Ci0gICAgICAgICAgICAgICAgYXJncy5tQ3VySW50ZW50ID0gaW50ZW50OwotICAgICAgICAgICAgICAgIGFyZ3MubUN1ckNvZGUgPSByZXN1bHRDb2RlOwotICAgICAgICAgICAgICAgIGFyZ3MubUN1ckRhdGEgPSBkYXRhOwotICAgICAgICAgICAgICAgIGFyZ3MubUN1ck1hcCA9IGV4dHJhczsKLSAgICAgICAgICAgICAgICBhcmdzLm1DdXJPcmRlcmVkID0gb3JkZXJlZDsKLSAgICAgICAgICAgICAgICBhcmdzLm1DdXJTdGlja3kgPSBzdGlja3k7Ci0gICAgICAgICAgICAgICAgaWYgKCFtQWN0aXZpdHlUaHJlYWQucG9zdChhcmdzKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobVJlZ2lzdGVyZWQgJiYgb3JkZXJlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgSUFjdGl2aXR5TWFuYWdlciBtZ3IgPSBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfQlJPQURDQVNUKSBTbG9nLmkoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmlzaGluZyBzeW5jIGJyb2FkY2FzdCB0byAiICsgbVJlY2VpdmVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZ3IuZmluaXNoUmVjZWl2ZXIobUlJbnRlbnRSZWNlaXZlciwgYXJncy5tQ3VyQ29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubUN1ckRhdGEsIGFyZ3MubUN1ck1hcCwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBmaW5hbCBJU2VydmljZUNvbm5lY3Rpb24gZ2V0U2VydmljZURpc3BhdGNoZXIoU2VydmljZUNvbm5lY3Rpb24gYywKLSAgICAgICAgICAgICAgICBDb250ZXh0IGNvbnRleHQsIEhhbmRsZXIgaGFuZGxlciwgaW50IGZsYWdzKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlcykgewotICAgICAgICAgICAgICAgIFNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbnVsbDsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBTZXJ2aWNlRGlzcGF0Y2hlcj4gbWFwID0gbVNlcnZpY2VzLmdldChjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAobWFwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgc2QgPSBtYXAuZ2V0KGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoc2QgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBzZCA9IG5ldyBTZXJ2aWNlRGlzcGF0Y2hlcihjLCBjb250ZXh0LCBoYW5kbGVyLCBmbGFncyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtYXAgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbWFwID0gbmV3IEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPigpOwotICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2VzLnB1dChjb250ZXh0LCBtYXApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1hcC5wdXQoYywgc2QpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNkLnZhbGlkYXRlKGNvbnRleHQsIGhhbmRsZXIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gc2QuZ2V0SVNlcnZpY2VDb25uZWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgZmluYWwgSVNlcnZpY2VDb25uZWN0aW9uIGZvcmdldFNlcnZpY2VEaXNwYXRjaGVyKENvbnRleHQgY29udGV4dCwKLSAgICAgICAgICAgICAgICBTZXJ2aWNlQ29ubmVjdGlvbiBjKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlcykgewotICAgICAgICAgICAgICAgIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPiBtYXAKLSAgICAgICAgICAgICAgICAgICAgICAgID0gbVNlcnZpY2VzLmdldChjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBTZXJ2aWNlRGlzcGF0Y2hlciBzZCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgaWYgKG1hcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNkID0gbWFwLmdldChjKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5yZW1vdmUoYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZC5kb0ZvcmdldCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcC5zaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlcy5yZW1vdmUoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNkLmdldEZsYWdzKCkmQ29udGV4dC5CSU5EX0RFQlVHX1VOQklORCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPiBob2xkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbVVuYm91bmRTZXJ2aWNlcy5nZXQoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvbGRlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlciA9IG5ldyBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBTZXJ2aWNlRGlzcGF0Y2hlcj4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVuYm91bmRTZXJ2aWNlcy5wdXQoY29udGV4dCwgaG9sZGVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBleCA9IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JpZ2luYWxseSB1bmJvdW5kIGhlcmU6Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXguZmlsbEluU3RhY2tUcmFjZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkLnNldFVuYmluZExvY2F0aW9uKGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBob2xkZXIucHV0KGMsIHNkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZC5nZXRJU2VydmljZUNvbm5lY3Rpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBTZXJ2aWNlRGlzcGF0Y2hlcj4gaG9sZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICA9IG1VbmJvdW5kU2VydmljZXMuZ2V0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgIGlmIChob2xkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBzZCA9IGhvbGRlci5nZXQoYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIGV4ID0gc2QuZ2V0VW5iaW5kTG9jYXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmJpbmRpbmcgU2VydmljZSAiICsgYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdGhhdCB3YXMgYWxyZWFkeSB1bmJvdW5kIiwgZXgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVW5iaW5kaW5nIFNlcnZpY2UgIiArIGMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgZnJvbSBDb250ZXh0IHRoYXQgaXMgbm8gbG9uZ2VyIGluIHVzZTogIiArIGNvbnRleHQpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlNlcnZpY2Ugbm90IHJlZ2lzdGVyZWQ6ICIgKyBjKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgZmluYWwgY2xhc3MgU2VydmljZURpc3BhdGNoZXIgewotICAgICAgICAgICAgcHJpdmF0ZSBmaW5hbCBJbm5lckNvbm5lY3Rpb24gbUlTZXJ2aWNlQ29ubmVjdGlvbjsKLSAgICAgICAgICAgIHByaXZhdGUgZmluYWwgU2VydmljZUNvbm5lY3Rpb24gbUNvbm5lY3Rpb247Ci0gICAgICAgICAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgICAgICAgICBwcml2YXRlIGZpbmFsIEhhbmRsZXIgbUFjdGl2aXR5VGhyZWFkOwotICAgICAgICAgICAgcHJpdmF0ZSBmaW5hbCBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZCBtTG9jYXRpb247Ci0gICAgICAgICAgICBwcml2YXRlIGZpbmFsIGludCBtRmxhZ3M7Ci0KLSAgICAgICAgICAgIHByaXZhdGUgUnVudGltZUV4Y2VwdGlvbiBtVW5iaW5kTG9jYXRpb247Ci0KLSAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBtRGllZDsKLQotICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ29ubmVjdGlvbkluZm8gewotICAgICAgICAgICAgICAgIElCaW5kZXIgYmluZGVyOwotICAgICAgICAgICAgICAgIElCaW5kZXIuRGVhdGhSZWNpcGllbnQgZGVhdGhNb25pdG9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBJbm5lckNvbm5lY3Rpb24gZXh0ZW5kcyBJU2VydmljZUNvbm5lY3Rpb24uU3R1YiB7Ci0gICAgICAgICAgICAgICAgZmluYWwgV2Vha1JlZmVyZW5jZTxTZXJ2aWNlRGlzcGF0Y2hlcj4gbURpc3BhdGNoZXI7Ci0KLSAgICAgICAgICAgICAgICBJbm5lckNvbm5lY3Rpb24oU2VydmljZURpc3BhdGNoZXIgc2QpIHsKLSAgICAgICAgICAgICAgICAgICAgbURpc3BhdGNoZXIgPSBuZXcgV2Vha1JlZmVyZW5jZTxTZXJ2aWNlRGlzcGF0Y2hlcj4oc2QpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNvbm5lY3RlZChDb21wb25lbnROYW1lIG5hbWUsIElCaW5kZXIgc2VydmljZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICAgICAgICAgIFNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbURpc3BhdGNoZXIuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZC5jb25uZWN0ZWQobmFtZSwgc2VydmljZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb21wb25lbnROYW1lLCBDb25uZWN0aW9uSW5mbz4gbUFjdGl2ZUNvbm5lY3Rpb25zCi0gICAgICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxDb21wb25lbnROYW1lLCBDb25uZWN0aW9uSW5mbz4oKTsKLQotICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIoU2VydmljZUNvbm5lY3Rpb24gY29ubiwKLSAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGFjdGl2aXR5VGhyZWFkLCBpbnQgZmxhZ3MpIHsKLSAgICAgICAgICAgICAgICBtSVNlcnZpY2VDb25uZWN0aW9uID0gbmV3IElubmVyQ29ubmVjdGlvbih0aGlzKTsKLSAgICAgICAgICAgICAgICBtQ29ubmVjdGlvbiA9IGNvbm47Ci0gICAgICAgICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwotICAgICAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZCA9IGFjdGl2aXR5VGhyZWFkOwotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbiA9IG5ldyBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZChudWxsKTsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uZmlsbEluU3RhY2tUcmFjZSgpOwotICAgICAgICAgICAgICAgIG1GbGFncyA9IGZsYWdzOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkIHZhbGlkYXRlKENvbnRleHQgY29udGV4dCwgSGFuZGxlciBhY3Rpdml0eVRocmVhZCkgewotICAgICAgICAgICAgICAgIGlmIChtQ29udGV4dCAhPSBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgIlNlcnZpY2VDb25uZWN0aW9uICIgKyBtQ29ubmVjdGlvbiArCi0gICAgICAgICAgICAgICAgICAgICAgICAiIHJlZ2lzdGVyZWQgd2l0aCBkaWZmZXJpbmcgQ29udGV4dCAod2FzICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQgKyAiIG5vdyAiICsgY29udGV4dCArICIpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtQWN0aXZpdHlUaHJlYWQgIT0gYWN0aXZpdHlUaHJlYWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAiU2VydmljZUNvbm5lY3Rpb24gIiArIG1Db25uZWN0aW9uICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgcmVnaXN0ZXJlZCB3aXRoIGRpZmZlcmluZyBoYW5kbGVyICh3YXMgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQgKyAiIG5vdyAiICsgYWN0aXZpdHlUaHJlYWQgKyAiKSIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdm9pZCBkb0ZvcmdldCgpIHsKLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewotICAgICAgICAgICAgICAgICAgICBJdGVyYXRvcjxDb25uZWN0aW9uSW5mbz4gaXQgPSBtQWN0aXZlQ29ubmVjdGlvbnMudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGlvbkluZm8gY2kgPSBpdC5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaS5iaW5kZXIudW5saW5rVG9EZWF0aChjaS5kZWF0aE1vbml0b3IsIDApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1BY3RpdmVDb25uZWN0aW9ucy5jbGVhcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgZ2V0TG9jYXRpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1Mb2NhdGlvbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgU2VydmljZUNvbm5lY3Rpb24gZ2V0U2VydmljZUNvbm5lY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1Db25uZWN0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJU2VydmljZUNvbm5lY3Rpb24gZ2V0SVNlcnZpY2VDb25uZWN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBtSVNlcnZpY2VDb25uZWN0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpbnQgZ2V0RmxhZ3MoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1GbGFnczsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdm9pZCBzZXRVbmJpbmRMb2NhdGlvbihSdW50aW1lRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgbVVuYmluZExvY2F0aW9uID0gZXg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZ2V0VW5iaW5kTG9jYXRpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1VbmJpbmRMb2NhdGlvbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHVibGljIHZvaWQgY29ubmVjdGVkKENvbXBvbmVudE5hbWUgbmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1BY3Rpdml0eVRocmVhZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZC5wb3N0KG5ldyBSdW5Db25uZWN0aW9uKG5hbWUsIHNlcnZpY2UsIDApKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkb0Nvbm5lY3RlZChuYW1lLCBzZXJ2aWNlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIGRlYXRoKENvbXBvbmVudE5hbWUgbmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB7Ci0gICAgICAgICAgICAgICAgQ29ubmVjdGlvbkluZm8gb2xkOwotCi0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1EaWVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgb2xkID0gbUFjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZShuYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9sZCA9PSBudWxsIHx8IG9sZC5iaW5kZXIgIT0gc2VydmljZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVhdGggZm9yIHNvbWVvbmUgZGlmZmVyZW50IHRoYW4gd2hvIHdlIGxhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcG9ydGVkLi4uICBqdXN0IGlnbm9yZSBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBvbGQuYmluZGVyLnVubGlua1RvRGVhdGgob2xkLmRlYXRoTW9uaXRvciwgMCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG1BY3Rpdml0eVRocmVhZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZC5wb3N0KG5ldyBSdW5Db25uZWN0aW9uKG5hbWUsIHNlcnZpY2UsIDEpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkb0RlYXRoKG5hbWUsIHNlcnZpY2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHVibGljIHZvaWQgZG9Db25uZWN0ZWQoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKLSAgICAgICAgICAgICAgICBDb25uZWN0aW9uSW5mbyBvbGQ7Ci0gICAgICAgICAgICAgICAgQ29ubmVjdGlvbkluZm8gaW5mbzsKLQotICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgICAgICBvbGQgPSBtQWN0aXZlQ29ubmVjdGlvbnMuZ2V0KG5hbWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAob2xkICE9IG51bGwgJiYgb2xkLmJpbmRlciA9PSBzZXJ2aWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBIdWgsIGFscmVhZHkgaGF2ZSB0aGlzIG9uZS4gIE9oIHdlbGwhCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoc2VydmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBIG5ldyBzZXJ2aWNlIGlzIGJlaW5nIGNvbm5lY3RlZC4uLiBzZXQgaXQgYWxsIHVwLgotICAgICAgICAgICAgICAgICAgICAgICAgbURpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gPSBuZXcgQ29ubmVjdGlvbkluZm8oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYmluZGVyID0gc2VydmljZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGVhdGhNb25pdG9yID0gbmV3IERlYXRoTW9uaXRvcihuYW1lLCBzZXJ2aWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZS5saW5rVG9EZWF0aChpbmZvLmRlYXRoTW9uaXRvciwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLnB1dChuYW1lLCBpbmZvKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzZXJ2aWNlIHdhcyBkZWFkIGJlZm9yZSB3ZSBnb3QgaXQuLi4gIGp1c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBkbyBhbnl0aGluZyB3aXRoIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BY3RpdmVDb25uZWN0aW9ucy5yZW1vdmUobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbmFtZWQgc2VydmljZSBpcyBiZWluZyBkaXNjb25uZWN0ZWQuLi4gY2xlYW4gdXAuCi0gICAgICAgICAgICAgICAgICAgICAgICBtQWN0aXZlQ29ubmVjdGlvbnMucmVtb3ZlKG5hbWUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG9sZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbGQuYmluZGVyLnVubGlua1RvRGVhdGgob2xkLmRlYXRoTW9uaXRvciwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYW4gb2xkIHNlcnZpY2UsIGl0IGlzIG5vdCBkaXNjb25uZWN0ZWQuCi0gICAgICAgICAgICAgICAgaWYgKG9sZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Db25uZWN0aW9uLm9uU2VydmljZURpc2Nvbm5lY3RlZChuYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBuZXcgc2VydmljZSwgaXQgaXMgbm93IGNvbm5lY3RlZC4KLSAgICAgICAgICAgICAgICBpZiAoc2VydmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Db25uZWN0aW9uLm9uU2VydmljZUNvbm5lY3RlZChuYW1lLCBzZXJ2aWNlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIGRvRGVhdGgoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKLSAgICAgICAgICAgICAgICBtQ29ubmVjdGlvbi5vblNlcnZpY2VEaXNjb25uZWN0ZWQobmFtZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUnVuQ29ubmVjdGlvbiBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKLSAgICAgICAgICAgICAgICBSdW5Db25uZWN0aW9uKENvbXBvbmVudE5hbWUgbmFtZSwgSUJpbmRlciBzZXJ2aWNlLCBpbnQgY29tbWFuZCkgewotICAgICAgICAgICAgICAgICAgICBtTmFtZSA9IG5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKLSAgICAgICAgICAgICAgICAgICAgbUNvbW1hbmQgPSBjb21tYW5kOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1Db21tYW5kID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvQ29ubmVjdGVkKG1OYW1lLCBtU2VydmljZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUNvbW1hbmQgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZG9EZWF0aChtTmFtZSwgbVNlcnZpY2UpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZmluYWwgQ29tcG9uZW50TmFtZSBtTmFtZTsKLSAgICAgICAgICAgICAgICBmaW5hbCBJQmluZGVyIG1TZXJ2aWNlOwotICAgICAgICAgICAgICAgIGZpbmFsIGludCBtQ29tbWFuZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBEZWF0aE1vbml0b3IgaW1wbGVtZW50cyBJQmluZGVyLkRlYXRoUmVjaXBpZW50Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRGVhdGhNb25pdG9yKENvbXBvbmVudE5hbWUgbmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1OYW1lID0gbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UgPSBzZXJ2aWNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGJpbmRlckRpZWQoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlYXRoKG1OYW1lLCBtU2VydmljZSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZmluYWwgQ29tcG9uZW50TmFtZSBtTmFtZTsKLSAgICAgICAgICAgICAgICBmaW5hbCBJQmluZGVyIG1TZXJ2aWNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgQ29udGV4dEltcGwgbVN5c3RlbUNvbnRleHQgPSBudWxsOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgQWN0aXZpdHlSZWNvcmQgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHsKICAgICAgICAgSUJpbmRlciB0b2tlbjsKICAgICAgICAgaW50IGlkZW50OwogICAgICAgICBJbnRlbnQgaW50ZW50OwpAQCAtMTMwNywxMCArMjAxLDEwIEBACiAgICAgICAgIGJvb2xlYW4gaGlkZUZvck5vdzsKICAgICAgICAgQ29uZmlndXJhdGlvbiBuZXdDb25maWc7CiAgICAgICAgIENvbmZpZ3VyYXRpb24gY3JlYXRlZENvbmZpZzsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgbmV4dElkbGU7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIG5leHRJZGxlOwogCiAgICAgICAgIEFjdGl2aXR5SW5mbyBhY3Rpdml0eUluZm87Ci0gICAgICAgIFBhY2thZ2VJbmZvIHBhY2thZ2VJbmZvOworICAgICAgICBMb2FkZWRBcGsgcGFja2FnZUluZm87CiAKICAgICAgICAgTGlzdDxSZXN1bHRJbmZvPiBwZW5kaW5nUmVzdWx0czsKICAgICAgICAgTGlzdDxJbnRlbnQ+IHBlbmRpbmdJbnRlbnRzOwpAQCAtMTMxOCw3ICsyMTIsNyBAQAogICAgICAgICBib29sZWFuIHN0YXJ0c05vdFJlc3VtZWQ7CiAgICAgICAgIGJvb2xlYW4gaXNGb3J3YXJkOwogCi0gICAgICAgIEFjdGl2aXR5UmVjb3JkKCkgeworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCgpIHsKICAgICAgICAgICAgIHBhcmVudCA9IG51bGw7CiAgICAgICAgICAgICBlbWJlZGRlZElEID0gbnVsbDsKICAgICAgICAgICAgIHBhdXNlZCA9IGZhbHNlOwpAQCAtMTMzNywxMiArMjMxLDEyIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFByb3ZpZGVyUmVjb3JkIGltcGxlbWVudHMgSUJpbmRlci5EZWF0aFJlY2lwaWVudCB7CisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBQcm92aWRlckNsaWVudFJlY29yZCBpbXBsZW1lbnRzIElCaW5kZXIuRGVhdGhSZWNpcGllbnQgewogICAgICAgICBmaW5hbCBTdHJpbmcgbU5hbWU7CiAgICAgICAgIGZpbmFsIElDb250ZW50UHJvdmlkZXIgbVByb3ZpZGVyOwogICAgICAgICBmaW5hbCBDb250ZW50UHJvdmlkZXIgbUxvY2FsUHJvdmlkZXI7CiAKLSAgICAgICAgUHJvdmlkZXJSZWNvcmQoU3RyaW5nIG5hbWUsIElDb250ZW50UHJvdmlkZXIgcHJvdmlkZXIsCisgICAgICAgIFByb3ZpZGVyQ2xpZW50UmVjb3JkKFN0cmluZyBuYW1lLCBJQ29udGVudFByb3ZpZGVyIHByb3ZpZGVyLAogICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlciBsb2NhbFByb3ZpZGVyKSB7CiAgICAgICAgICAgICBtTmFtZSA9IG5hbWU7CiAgICAgICAgICAgICBtUHJvdmlkZXIgPSBwcm92aWRlcjsKQEAgLTE0MTksNyArMzEzLDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBBcHBCaW5kRGF0YSB7Ci0gICAgICAgIFBhY2thZ2VJbmZvIGluZm87CisgICAgICAgIExvYWRlZEFwayBpbmZvOwogICAgICAgICBTdHJpbmcgcHJvY2Vzc05hbWU7CiAgICAgICAgIEFwcGxpY2F0aW9uSW5mbyBhcHBJbmZvOwogICAgICAgICBMaXN0PFByb3ZpZGVySW5mbz4gcHJvdmlkZXJzOwpAQCAtMTUwOSw3ICs0MDMsNyBAQAogICAgICAgICBwdWJsaWMgZmluYWwgdm9pZCBzY2hlZHVsZUxhdW5jaEFjdGl2aXR5KEludGVudCBpbnRlbnQsIElCaW5kZXIgdG9rZW4sIGludCBpZGVudCwKICAgICAgICAgICAgICAgICBBY3Rpdml0eUluZm8gaW5mbywgQnVuZGxlIHN0YXRlLCBMaXN0PFJlc3VsdEluZm8+IHBlbmRpbmdSZXN1bHRzLAogICAgICAgICAgICAgICAgIExpc3Q8SW50ZW50PiBwZW5kaW5nTmV3SW50ZW50cywgYm9vbGVhbiBub3RSZXN1bWVkLCBib29sZWFuIGlzRm9yd2FyZCkgewotICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG5ldyBBY3Rpdml0eVJlY29yZCgpOworICAgICAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG5ldyBBY3Rpdml0eUNsaWVudFJlY29yZCgpOwogCiAgICAgICAgICAgICByLnRva2VuID0gdG9rZW47CiAgICAgICAgICAgICByLmlkZW50ID0gaWRlbnQ7CkBAIC0xNTI5LDcgKzQyMyw3IEBACiAgICAgICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNjaGVkdWxlUmVsYXVuY2hBY3Rpdml0eShJQmluZGVyIHRva2VuLAogICAgICAgICAgICAgICAgIExpc3Q8UmVzdWx0SW5mbz4gcGVuZGluZ1Jlc3VsdHMsIExpc3Q8SW50ZW50PiBwZW5kaW5nTmV3SW50ZW50cywKICAgICAgICAgICAgICAgICBpbnQgY29uZmlnQ2hhbmdlcywgYm9vbGVhbiBub3RSZXN1bWVkLCBDb25maWd1cmF0aW9uIGNvbmZpZykgewotICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG5ldyBBY3Rpdml0eVJlY29yZCgpOworICAgICAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG5ldyBBY3Rpdml0eUNsaWVudFJlY29yZCgpOwogCiAgICAgICAgICAgICByLnRva2VuID0gdG9rZW47CiAgICAgICAgICAgICByLnBlbmRpbmdSZXN1bHRzID0gcGVuZGluZ1Jlc3VsdHM7CkBAIC0xNzIyLDE0ICs2MTYsNiBAQAogICAgICAgICAgICAgcXVldWVPclNlbmRNZXNzYWdlKEguQUNUSVZJVFlfQ09ORklHVVJBVElPTl9DSEFOR0VELCB0b2tlbik7CiAgICAgICAgIH0KIAotICAgICAgICBwdWJsaWMgdm9pZCByZXF1ZXN0UHNzKCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnJlcG9ydFBzcyh0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgKGludClQcm9jZXNzLmdldFBzcyhQcm9jZXNzLm15UGlkKCkpKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQogICAgICAgICBwdWJsaWMgdm9pZCBwcm9maWxlckNvbnRyb2woYm9vbGVhbiBzdGFydCwgU3RyaW5nIHBhdGgsIFBhcmNlbEZpbGVEZXNjcmlwdG9yIGZkKSB7CiAgICAgICAgICAgICBQcm9maWxlckNvbnRyb2xEYXRhIHBjZCA9IG5ldyBQcm9maWxlckNvbnRyb2xEYXRhKCk7CiAgICAgICAgICAgICBwY2QucGF0aCA9IHBhdGg7CkBAIC0xNzU2LDYgKzY0MiwxMCBAQAogICAgICAgICBwdWJsaWMgdm9pZCBkaXNwYXRjaFBhY2thZ2VCcm9hZGNhc3QoaW50IGNtZCwgU3RyaW5nW10gcGFja2FnZXMpIHsKICAgICAgICAgICAgIHF1ZXVlT3JTZW5kTWVzc2FnZShILkRJU1BBVENIX1BBQ0tBR0VfQlJPQURDQVNULCBwYWNrYWdlcywgY21kKTsKICAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNjaGVkdWxlQ3Jhc2goU3RyaW5nIG1zZykgeworICAgICAgICAgICAgcXVldWVPclNlbmRNZXNzYWdlKEguU0NIRURVTEVfQ1JBU0gsIG1zZyk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwcm90ZWN0ZWQgdm9pZCBkdW1wKEZpbGVEZXNjcmlwdG9yIGZkLCBQcmludFdyaXRlciBwdywgU3RyaW5nW10gYXJncykgewpAQCAtMTk4Miw2ICs4NzIsNyBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRU1PVkVfUFJPVklERVIgICAgICAgICA9IDEzMTsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRU5BQkxFX0pJVCAgICAgICAgICAgICAgPSAxMzI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU1BBVENIX1BBQ0tBR0VfQlJPQURDQVNUID0gMTMzOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTQ0hFRFVMRV9DUkFTSCAgICAgICAgICA9IDEzNDsKICAgICAgICAgU3RyaW5nIGNvZGVUb1N0cmluZyhpbnQgY29kZSkgewogICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgewogICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZSkgewpAQCAtMjAxOSw2ICs5MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBjYXNlIFJFTU9WRV9QUk9WSURFUjogcmV0dXJuICJSRU1PVkVfUFJPVklERVIiOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVOQUJMRV9KSVQ6IHJldHVybiAiRU5BQkxFX0pJVCI7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRElTUEFUQ0hfUEFDS0FHRV9CUk9BRENBU1Q6IHJldHVybiAiRElTUEFUQ0hfUEFDS0FHRV9CUk9BRENBU1QiOworICAgICAgICAgICAgICAgICAgICBjYXNlIFNDSEVEVUxFX0NSQVNIOiByZXR1cm4gIlNDSEVEVUxFX0NSQVNIIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gIih1bmtub3duKSI7CkBAIC0yMDI2LDE0ICs5MTgsMTQgQEAKICAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgewogICAgICAgICAgICAgc3dpdGNoIChtc2cud2hhdCkgewogICAgICAgICAgICAgICAgIGNhc2UgTEFVTkNIX0FDVElWSVRZOiB7Ci0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IChBY3Rpdml0eUNsaWVudFJlY29yZCltc2cub2JqOwogCiAgICAgICAgICAgICAgICAgICAgIHIucGFja2FnZUluZm8gPSBnZXRQYWNrYWdlSW5mb05vQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5hY3Rpdml0eUluZm8uYXBwbGljYXRpb25JbmZvKTsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlTGF1bmNoQWN0aXZpdHkociwgbnVsbCk7CiAgICAgICAgICAgICAgICAgfSBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIFJFTEFVTkNIX0FDVElWSVRZOiB7Ci0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IChBY3Rpdml0eUNsaWVudFJlY29yZCltc2cub2JqOwogICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZWxhdW5jaEFjdGl2aXR5KHIsIG1zZy5hcmcxKTsKICAgICAgICAgICAgICAgICB9IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgUEFVU0VfQUNUSVZJVFk6CkBAIC0yMTQyLDYgKzEwMzQsOCBAQAogICAgICAgICAgICAgICAgIGNhc2UgRElTUEFUQ0hfUEFDS0FHRV9CUk9BRENBU1Q6CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURpc3BhdGNoUGFja2FnZUJyb2FkY2FzdChtc2cuYXJnMSwgKFN0cmluZ1tdKW1zZy5vYmopOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNDSEVEVUxFX0NSQVNIOgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVtb3RlU2VydmljZUV4Y2VwdGlvbigoU3RyaW5nKW1zZy5vYmopOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIxNTUsMTEgKzEwNDksMTEgQEAKIAogICAgIHByaXZhdGUgZmluYWwgY2xhc3MgSWRsZXIgaW1wbGVtZW50cyBNZXNzYWdlUXVldWUuSWRsZUhhbmRsZXIgewogICAgICAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBxdWV1ZUlkbGUoKSB7Ci0gICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBhID0gbU5ld0FjdGl2aXRpZXM7CisgICAgICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCBhID0gbU5ld0FjdGl2aXRpZXM7CiAgICAgICAgICAgICBpZiAoYSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgbU5ld0FjdGl2aXRpZXMgPSBudWxsOwogICAgICAgICAgICAgICAgIElBY3Rpdml0eU1hbmFnZXIgYW0gPSBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHByZXY7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgcHJldjsKICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlJlcG9ydGluZyBpZGxlIG9mICIgKyBhICsKQEAgLTIyMTUsNzEgKzExMDksMTMyIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgSVBhY2thZ2VNYW5hZ2VyIHNQYWNrYWdlTWFuYWdlcjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEFjdGl2aXR5VGhyZWFkIGN1cnJlbnRBY3Rpdml0eVRocmVhZCgpIHsKKyAgICAgICAgcmV0dXJuIChBY3Rpdml0eVRocmVhZClzVGhyZWFkTG9jYWwuZ2V0KCk7CisgICAgfQogCi0gICAgZmluYWwgQXBwbGljYXRpb25UaHJlYWQgbUFwcFRocmVhZCA9IG5ldyBBcHBsaWNhdGlvblRocmVhZCgpOwotICAgIGZpbmFsIExvb3BlciBtTG9vcGVyID0gTG9vcGVyLm15TG9vcGVyKCk7Ci0gICAgZmluYWwgSCBtSCA9IG5ldyBIKCk7Ci0gICAgZmluYWwgSGFzaE1hcDxJQmluZGVyLCBBY3Rpdml0eVJlY29yZD4gbUFjdGl2aXRpZXMKLSAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8SUJpbmRlciwgQWN0aXZpdHlSZWNvcmQ+KCk7Ci0gICAgLy8gTGlzdCBvZiBuZXcgYWN0aXZpdGllcyAodmlhIEFjdGl2aXR5UmVjb3JkLm5leHRJZGxlKSB0aGF0IHNob3VsZAotICAgIC8vIGJlIHJlcG9ydGVkIHdoZW4gbmV4dCB3ZSBpZGxlLgotICAgIEFjdGl2aXR5UmVjb3JkIG1OZXdBY3Rpdml0aWVzID0gbnVsbDsKLSAgICAvLyBOdW1iZXIgb2YgYWN0aXZpdGllcyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZSBvbi1zY3JlZW4uCi0gICAgaW50IG1OdW1WaXNpYmxlQWN0aXZpdGllcyA9IDA7Ci0gICAgZmluYWwgSGFzaE1hcDxJQmluZGVyLCBTZXJ2aWNlPiBtU2VydmljZXMKLSAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8SUJpbmRlciwgU2VydmljZT4oKTsKLSAgICBBcHBCaW5kRGF0YSBtQm91bmRBcHBsaWNhdGlvbjsKLSAgICBDb25maWd1cmF0aW9uIG1Db25maWd1cmF0aW9uOwotICAgIENvbmZpZ3VyYXRpb24gbVJlc0NvbmZpZ3VyYXRpb247Ci0gICAgQXBwbGljYXRpb24gbUluaXRpYWxBcHBsaWNhdGlvbjsKLSAgICBmaW5hbCBBcnJheUxpc3Q8QXBwbGljYXRpb24+IG1BbGxBcHBsaWNhdGlvbnMKLSAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxBcHBsaWNhdGlvbj4oKTsKLSAgICAvLyBzZXQgb2YgaW5zdGFudGlhdGVkIGJhY2t1cCBhZ2VudHMsIGtleWVkIGJ5IHBhY2thZ2UgbmFtZQotICAgIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBCYWNrdXBBZ2VudD4gbUJhY2t1cEFnZW50cyA9IG5ldyBIYXNoTWFwPFN0cmluZywgQmFja3VwQWdlbnQ+KCk7Ci0gICAgc3RhdGljIGZpbmFsIFRocmVhZExvY2FsIHNUaHJlYWRMb2NhbCA9IG5ldyBUaHJlYWRMb2NhbCgpOwotICAgIEluc3RydW1lbnRhdGlvbiBtSW5zdHJ1bWVudGF0aW9uOwotICAgIFN0cmluZyBtSW5zdHJ1bWVudGF0aW9uQXBwRGlyID0gbnVsbDsKLSAgICBTdHJpbmcgbUluc3RydW1lbnRhdGlvbkFwcFBhY2thZ2UgPSBudWxsOwotICAgIFN0cmluZyBtSW5zdHJ1bWVudGVkQXBwRGlyID0gbnVsbDsKLSAgICBib29sZWFuIG1TeXN0ZW1UaHJlYWQgPSBmYWxzZTsKLSAgICBib29sZWFuIG1KaXRFbmFibGVkID0gZmFsc2U7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY3VycmVudFBhY2thZ2VOYW1lKCkgeworICAgICAgICBBY3Rpdml0eVRocmVhZCBhbSA9IGN1cnJlbnRBY3Rpdml0eVRocmVhZCgpOworICAgICAgICByZXR1cm4gKGFtICE9IG51bGwgJiYgYW0ubUJvdW5kQXBwbGljYXRpb24gIT0gbnVsbCkKKyAgICAgICAgICAgID8gYW0ubUJvdW5kQXBwbGljYXRpb24ucHJvY2Vzc05hbWUgOiBudWxsOworICAgIH0KIAotICAgIC8vIFRoZXNlIGNhbiBiZSBhY2Nlc3NlZCBieSBtdWx0aXBsZSB0aHJlYWRzOyBtUGFja2FnZXMgaXMgdGhlIGxvY2suCi0gICAgLy8gWFhYIEZvciBub3cgd2Uga2VlcCBhcm91bmQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHBhY2thZ2VzIHdlIGhhdmUKLSAgICAvLyBzZWVuLCBub3QgcmVtb3ZpbmcgZW50cmllcyBmcm9tIHRoaXMgbWFwLgotICAgIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBXZWFrUmVmZXJlbmNlPFBhY2thZ2VJbmZvPj4gbVBhY2thZ2VzCi0gICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgV2Vha1JlZmVyZW5jZTxQYWNrYWdlSW5mbz4+KCk7Ci0gICAgZmluYWwgSGFzaE1hcDxTdHJpbmcsIFdlYWtSZWZlcmVuY2U8UGFja2FnZUluZm8+PiBtUmVzb3VyY2VQYWNrYWdlcwotICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFdlYWtSZWZlcmVuY2U8UGFja2FnZUluZm8+PigpOwotICAgIERpc3BsYXkgbURpc3BsYXkgPSBudWxsOwotICAgIERpc3BsYXlNZXRyaWNzIG1EaXNwbGF5TWV0cmljcyA9IG51bGw7Ci0gICAgZmluYWwgSGFzaE1hcDxSZXNvdXJjZXNLZXksIFdlYWtSZWZlcmVuY2U8UmVzb3VyY2VzPiA+IG1BY3RpdmVSZXNvdXJjZXMKLSAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8UmVzb3VyY2VzS2V5LCBXZWFrUmVmZXJlbmNlPFJlc291cmNlcz4gPigpOwotICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gbVJlbGF1bmNoaW5nQWN0aXZpdGllcwotICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPigpOwotICAgIENvbmZpZ3VyYXRpb24gbVBlbmRpbmdDb25maWd1cmF0aW9uID0gbnVsbDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEFwcGxpY2F0aW9uIGN1cnJlbnRBcHBsaWNhdGlvbigpIHsKKyAgICAgICAgQWN0aXZpdHlUaHJlYWQgYW0gPSBjdXJyZW50QWN0aXZpdHlUaHJlYWQoKTsKKyAgICAgICAgcmV0dXJuIGFtICE9IG51bGwgPyBhbS5tSW5pdGlhbEFwcGxpY2F0aW9uIDogbnVsbDsKKyAgICB9CiAKLSAgICAvLyBUaGUgbG9jayBvZiBtUHJvdmlkZXJNYXAgcHJvdGVjdHMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMuCi0gICAgZmluYWwgSGFzaE1hcDxTdHJpbmcsIFByb3ZpZGVyUmVjb3JkPiBtUHJvdmlkZXJNYXAKLSAgICAgICAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFByb3ZpZGVyUmVjb3JkPigpOwotICAgIGZpbmFsIEhhc2hNYXA8SUJpbmRlciwgUHJvdmlkZXJSZWZDb3VudD4gbVByb3ZpZGVyUmVmQ291bnRNYXAKLSAgICAgICAgPSBuZXcgSGFzaE1hcDxJQmluZGVyLCBQcm92aWRlclJlZkNvdW50PigpOwotICAgIGZpbmFsIEhhc2hNYXA8SUJpbmRlciwgUHJvdmlkZXJSZWNvcmQ+IG1Mb2NhbFByb3ZpZGVycwotICAgICAgICA9IG5ldyBIYXNoTWFwPElCaW5kZXIsIFByb3ZpZGVyUmVjb3JkPigpOworICAgIHB1YmxpYyBzdGF0aWMgSVBhY2thZ2VNYW5hZ2VyIGdldFBhY2thZ2VNYW5hZ2VyKCkgeworICAgICAgICBpZiAoc1BhY2thZ2VNYW5hZ2VyICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vU2xvZy52KCJQYWNrYWdlTWFuYWdlciIsICJyZXR1cm5pbmcgY3VyIGRlZmF1bHQgPSAiICsgc1BhY2thZ2VNYW5hZ2VyKTsKKyAgICAgICAgICAgIHJldHVybiBzUGFja2FnZU1hbmFnZXI7CisgICAgICAgIH0KKyAgICAgICAgSUJpbmRlciBiID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZSgicGFja2FnZSIpOworICAgICAgICAvL1Nsb2cudigiUGFja2FnZU1hbmFnZXIiLCAiZGVmYXVsdCBzZXJ2aWNlIGJpbmRlciA9ICIgKyBiKTsKKyAgICAgICAgc1BhY2thZ2VNYW5hZ2VyID0gSVBhY2thZ2VNYW5hZ2VyLlN0dWIuYXNJbnRlcmZhY2UoYik7CisgICAgICAgIC8vU2xvZy52KCJQYWNrYWdlTWFuYWdlciIsICJkZWZhdWx0IHNlcnZpY2UgPSAiICsgc1BhY2thZ2VNYW5hZ2VyKTsKKyAgICAgICAgcmV0dXJuIHNQYWNrYWdlTWFuYWdlcjsKKyAgICB9CiAKLSAgICBmaW5hbCBHY0lkbGVyIG1HY0lkbGVyID0gbmV3IEdjSWRsZXIoKTsKLSAgICBib29sZWFuIG1HY0lkbGVyU2NoZWR1bGVkID0gZmFsc2U7CisgICAgRGlzcGxheU1ldHJpY3MgZ2V0RGlzcGxheU1ldHJpY3NMb2NrZWQoYm9vbGVhbiBmb3JjZVVwZGF0ZSkgeworICAgICAgICBpZiAobURpc3BsYXlNZXRyaWNzICE9IG51bGwgJiYgIWZvcmNlVXBkYXRlKSB7CisgICAgICAgICAgICByZXR1cm4gbURpc3BsYXlNZXRyaWNzOworICAgICAgICB9CisgICAgICAgIGlmIChtRGlzcGxheSA9PSBudWxsKSB7CisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyIHdtID0gV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpOworICAgICAgICAgICAgbURpc3BsYXkgPSB3bS5nZXREZWZhdWx0RGlzcGxheSgpOworICAgICAgICB9CisgICAgICAgIERpc3BsYXlNZXRyaWNzIG1ldHJpY3MgPSBtRGlzcGxheU1ldHJpY3MgPSBuZXcgRGlzcGxheU1ldHJpY3MoKTsKKyAgICAgICAgbURpc3BsYXkuZ2V0TWV0cmljcyhtZXRyaWNzKTsKKyAgICAgICAgLy9TbG9nLmkoImZvbyIsICJOZXcgbWV0cmljczogdz0iICsgbWV0cmljcy53aWR0aFBpeGVscyArICIgaD0iCisgICAgICAgIC8vICAgICAgICArIG1ldHJpY3MuaGVpZ2h0UGl4ZWxzICsgIiBkZW49IiArIG1ldHJpY3MuZGVuc2l0eQorICAgICAgICAvLyAgICAgICAgKyAiIHhkcGk9IiArIG1ldHJpY3MueGRwaSArICIgeWRwaT0iICsgbWV0cmljcy55ZHBpKTsKKyAgICAgICAgcmV0dXJuIG1ldHJpY3M7CisgICAgfQogCi0gICAgcHVibGljIGZpbmFsIFBhY2thZ2VJbmZvIGdldFBhY2thZ2VJbmZvKFN0cmluZyBwYWNrYWdlTmFtZSwgaW50IGZsYWdzKSB7CisgICAgLyoqCisgICAgICogQ3JlYXRlcyB0aGUgdG9wIGxldmVsIFJlc291cmNlcyBmb3IgYXBwbGljYXRpb25zIHdpdGggdGhlIGdpdmVuIGNvbXBhdGliaWxpdHkgaW5mby4KKyAgICAgKgorICAgICAqIEBwYXJhbSByZXNEaXIgdGhlIHJlc291cmNlIGRpcmVjdG9yeS4KKyAgICAgKiBAcGFyYW0gY29tcEluZm8gdGhlIGNvbXBhYmlsaXR5IGluZm8uIEl0IHdpbGwgdXNlIHRoZSBkZWZhdWx0IGNvbXBhdGliaWxpdHkgaW5mbyB3aGVuIGl0J3MKKyAgICAgKiBudWxsLgorICAgICAqLworICAgIFJlc291cmNlcyBnZXRUb3BMZXZlbFJlc291cmNlcyhTdHJpbmcgcmVzRGlyLCBDb21wYXRpYmlsaXR5SW5mbyBjb21wSW5mbykgeworICAgICAgICBSZXNvdXJjZXNLZXkga2V5ID0gbmV3IFJlc291cmNlc0tleShyZXNEaXIsIGNvbXBJbmZvLmFwcGxpY2F0aW9uU2NhbGUpOworICAgICAgICBSZXNvdXJjZXMgcjsKICAgICAgICAgc3luY2hyb25pemVkIChtUGFja2FnZXMpIHsKLSAgICAgICAgICAgIFdlYWtSZWZlcmVuY2U8UGFja2FnZUluZm8+IHJlZjsKKyAgICAgICAgICAgIC8vIFJlc291cmNlcyBpcyBhcHAgc2NhbGUgZGVwZW5kZW50LgorICAgICAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgImdldFRvcExldmVsUmVzb3VyY2VzOiAiICsgcmVzRGlyICsgIiAvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgY29tcEluZm8uYXBwbGljYXRpb25TY2FsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBXZWFrUmVmZXJlbmNlPFJlc291cmNlcz4gd3IgPSBtQWN0aXZlUmVzb3VyY2VzLmdldChrZXkpOworICAgICAgICAgICAgciA9IHdyICE9IG51bGwgPyB3ci5nZXQoKSA6IG51bGw7CisgICAgICAgICAgICAvL2lmIChyICE9IG51bGwpIFNsb2cuaShUQUcsICJpc1VwVG9EYXRlICIgKyByZXNEaXIgKyAiOiAiICsgci5nZXRBc3NldHMoKS5pc1VwVG9EYXRlKCkpOworICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiByLmdldEFzc2V0cygpLmlzVXBUb0RhdGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiUmV0dXJuaW5nIGNhY2hlZCByZXNvdXJjZXMgIiArIHIgKyAiICIgKyByZXNEaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI6IGFwcFNjYWxlPSIgKyByLmdldENvbXBhdGliaWxpdHlJbmZvKCkuYXBwbGljYXRpb25TY2FsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy9pZiAociAhPSBudWxsKSB7CisgICAgICAgIC8vICAgIFNsb2cudyhUQUcsICJUaHJvd2luZyBhd2F5IG91dC1vZi1kYXRlIHJlc291cmNlcyEhISEgIgorICAgICAgICAvLyAgICAgICAgICAgICsgciArICIgIiArIHJlc0Rpcik7CisgICAgICAgIC8vfQorCisgICAgICAgIEFzc2V0TWFuYWdlciBhc3NldHMgPSBuZXcgQXNzZXRNYW5hZ2VyKCk7CisgICAgICAgIGlmIChhc3NldHMuYWRkQXNzZXRQYXRoKHJlc0RpcikgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvL1Nsb2cuaShUQUcsICJSZXNvdXJjZToga2V5PSIgKyBrZXkgKyAiLCBkaXNwbGF5IG1ldHJpY3M9IiArIG1ldHJpY3MpOworICAgICAgICBEaXNwbGF5TWV0cmljcyBtZXRyaWNzID0gZ2V0RGlzcGxheU1ldHJpY3NMb2NrZWQoZmFsc2UpOworICAgICAgICByID0gbmV3IFJlc291cmNlcyhhc3NldHMsIG1ldHJpY3MsIGdldENvbmZpZ3VyYXRpb24oKSwgY29tcEluZm8pOworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIFNsb2cuaShUQUcsICJDcmVhdGVkIGFwcCByZXNvdXJjZXMgIiArIHJlc0RpciArICIgIiArIHIgKyAiOiAiCisgICAgICAgICAgICAgICAgICAgICsgci5nZXRDb25maWd1cmF0aW9uKCkgKyAiIGFwcFNjYWxlPSIKKyAgICAgICAgICAgICAgICAgICAgKyByLmdldENvbXBhdGliaWxpdHlJbmZvKCkuYXBwbGljYXRpb25TY2FsZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN5bmNocm9uaXplZCAobVBhY2thZ2VzKSB7CisgICAgICAgICAgICBXZWFrUmVmZXJlbmNlPFJlc291cmNlcz4gd3IgPSBtQWN0aXZlUmVzb3VyY2VzLmdldChrZXkpOworICAgICAgICAgICAgUmVzb3VyY2VzIGV4aXN0aW5nID0gd3IgIT0gbnVsbCA/IHdyLmdldCgpIDogbnVsbDsKKyAgICAgICAgICAgIGlmIChleGlzdGluZyAhPSBudWxsICYmIGV4aXN0aW5nLmdldEFzc2V0cygpLmlzVXBUb0RhdGUoKSkgeworICAgICAgICAgICAgICAgIC8vIFNvbWVvbmUgZWxzZSBhbHJlYWR5IGNyZWF0ZWQgdGhlIHJlc291cmNlcyB3aGlsZSB3ZSB3ZXJlCisgICAgICAgICAgICAgICAgLy8gdW5sb2NrZWQ7IGdvIGFoZWFkIGFuZCB1c2UgdGhlaXJzLgorICAgICAgICAgICAgICAgIHIuZ2V0QXNzZXRzKCkuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhpc3Rpbmc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFhYWCBuZWVkIHRvIHJlbW92ZSBlbnRyaWVzIHdoZW4gd2VhayByZWZlcmVuY2VzIGdvIGF3YXkKKyAgICAgICAgICAgIG1BY3RpdmVSZXNvdXJjZXMucHV0KGtleSwgbmV3IFdlYWtSZWZlcmVuY2U8UmVzb3VyY2VzPihyKSk7CisgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgdGhlIHRvcCBsZXZlbCByZXNvdXJjZXMgZm9yIHRoZSBnaXZlbiBwYWNrYWdlLgorICAgICAqLworICAgIFJlc291cmNlcyBnZXRUb3BMZXZlbFJlc291cmNlcyhTdHJpbmcgcmVzRGlyLCBMb2FkZWRBcGsgcGtnSW5mbykgeworICAgICAgICByZXR1cm4gZ2V0VG9wTGV2ZWxSZXNvdXJjZXMocmVzRGlyLCBwa2dJbmZvLm1Db21wYXRpYmlsaXR5SW5mbyk7CisgICAgfQorCisgICAgZmluYWwgSGFuZGxlciBnZXRIYW5kbGVyKCkgeworICAgICAgICByZXR1cm4gbUg7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIExvYWRlZEFwayBnZXRQYWNrYWdlSW5mbyhTdHJpbmcgcGFja2FnZU5hbWUsIGludCBmbGFncykgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1QYWNrYWdlcykgeworICAgICAgICAgICAgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGs+IHJlZjsKICAgICAgICAgICAgIGlmICgoZmxhZ3MmQ29udGV4dC5DT05URVhUX0lOQ0xVREVfQ09ERSkgIT0gMCkgewogICAgICAgICAgICAgICAgIHJlZiA9IG1QYWNrYWdlcy5nZXQocGFja2FnZU5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZWYgPSBtUmVzb3VyY2VQYWNrYWdlcy5nZXQocGFja2FnZU5hbWUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUGFja2FnZUluZm8gcGFja2FnZUluZm8gPSByZWYgIT0gbnVsbCA/IHJlZi5nZXQoKSA6IG51bGw7CisgICAgICAgICAgICBMb2FkZWRBcGsgcGFja2FnZUluZm8gPSByZWYgIT0gbnVsbCA/IHJlZi5nZXQoKSA6IG51bGw7CiAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJnZXRQYWNrYWdlSW5mbyAiICsgcGFja2FnZU5hbWUgKyAiOiAiICsgcGFja2FnZUluZm8pOwogICAgICAgICAgICAgLy9pZiAocGFja2FnZUluZm8gIT0gbnVsbCkgU2xvZy5pKFRBRywgImlzVXB0b0RhdGUgIiArIHBhY2thZ2VJbmZvLm1SZXNEaXIKICAgICAgICAgICAgIC8vICAgICAgICArICI6ICIgKyBwYWNrYWdlSW5mby5tUmVzb3VyY2VzLmdldEFzc2V0cygpLmlzVXBUb0RhdGUoKSk7CkBAIC0yMzExLDcgKzEyNjYsNyBAQAogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKLSAgICBwdWJsaWMgZmluYWwgUGFja2FnZUluZm8gZ2V0UGFja2FnZUluZm8oQXBwbGljYXRpb25JbmZvIGFpLCBpbnQgZmxhZ3MpIHsKKyAgICBwdWJsaWMgZmluYWwgTG9hZGVkQXBrIGdldFBhY2thZ2VJbmZvKEFwcGxpY2F0aW9uSW5mbyBhaSwgaW50IGZsYWdzKSB7CiAgICAgICAgIGJvb2xlYW4gaW5jbHVkZUNvZGUgPSAoZmxhZ3MmQ29udGV4dC5DT05URVhUX0lOQ0xVREVfQ09ERSkgIT0gMDsKICAgICAgICAgYm9vbGVhbiBzZWN1cml0eVZpb2xhdGlvbiA9IGluY2x1ZGVDb2RlICYmIGFpLnVpZCAhPSAwCiAgICAgICAgICAgICAgICAgJiYgYWkudWlkICE9IFByb2Nlc3MuU1lTVEVNX1VJRCAmJiAobUJvdW5kQXBwbGljYXRpb24gIT0gbnVsbApAQCAtMjMzMywyMCArMTI4OCwyMCBAQAogICAgICAgICByZXR1cm4gZ2V0UGFja2FnZUluZm8oYWksIG51bGwsIHNlY3VyaXR5VmlvbGF0aW9uLCBpbmNsdWRlQ29kZSk7CiAgICAgfQogCi0gICAgcHVibGljIGZpbmFsIFBhY2thZ2VJbmZvIGdldFBhY2thZ2VJbmZvTm9DaGVjayhBcHBsaWNhdGlvbkluZm8gYWkpIHsKKyAgICBwdWJsaWMgZmluYWwgTG9hZGVkQXBrIGdldFBhY2thZ2VJbmZvTm9DaGVjayhBcHBsaWNhdGlvbkluZm8gYWkpIHsKICAgICAgICAgcmV0dXJuIGdldFBhY2thZ2VJbmZvKGFpLCBudWxsLCBmYWxzZSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCBQYWNrYWdlSW5mbyBnZXRQYWNrYWdlSW5mbyhBcHBsaWNhdGlvbkluZm8gYUluZm8sCisgICAgcHJpdmF0ZSBmaW5hbCBMb2FkZWRBcGsgZ2V0UGFja2FnZUluZm8oQXBwbGljYXRpb25JbmZvIGFJbmZvLAogICAgICAgICAgICAgQ2xhc3NMb2FkZXIgYmFzZUxvYWRlciwgYm9vbGVhbiBzZWN1cml0eVZpb2xhdGlvbiwgYm9vbGVhbiBpbmNsdWRlQ29kZSkgewogICAgICAgICBzeW5jaHJvbml6ZWQgKG1QYWNrYWdlcykgewotICAgICAgICAgICAgV2Vha1JlZmVyZW5jZTxQYWNrYWdlSW5mbz4gcmVmOworICAgICAgICAgICAgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGs+IHJlZjsKICAgICAgICAgICAgIGlmIChpbmNsdWRlQ29kZSkgewogICAgICAgICAgICAgICAgIHJlZiA9IG1QYWNrYWdlcy5nZXQoYUluZm8ucGFja2FnZU5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZWYgPSBtUmVzb3VyY2VQYWNrYWdlcy5nZXQoYUluZm8ucGFja2FnZU5hbWUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUGFja2FnZUluZm8gcGFja2FnZUluZm8gPSByZWYgIT0gbnVsbCA/IHJlZi5nZXQoKSA6IG51bGw7CisgICAgICAgICAgICBMb2FkZWRBcGsgcGFja2FnZUluZm8gPSByZWYgIT0gbnVsbCA/IHJlZi5nZXQoKSA6IG51bGw7CiAgICAgICAgICAgICBpZiAocGFja2FnZUluZm8gPT0gbnVsbCB8fCAocGFja2FnZUluZm8ubVJlc291cmNlcyAhPSBudWxsCiAgICAgICAgICAgICAgICAgICAgICYmICFwYWNrYWdlSW5mby5tUmVzb3VyY2VzLmdldEFzc2V0cygpLmlzVXBUb0RhdGUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAoaW5jbHVkZUNvZGUgPyAiTG9hZGluZyBjb2RlIHBhY2thZ2UgIgpAQCAtMjM1NSwxNSArMTMxMCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG1Cb3VuZEFwcGxpY2F0aW9uLnByb2Nlc3NOYW1lIDogbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgICsgIikiKTsKICAgICAgICAgICAgICAgICBwYWNrYWdlSW5mbyA9Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBQYWNrYWdlSW5mbyh0aGlzLCBhSW5mbywgdGhpcywgYmFzZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgbmV3IExvYWRlZEFwayh0aGlzLCBhSW5mbywgdGhpcywgYmFzZUxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eVZpb2xhdGlvbiwgaW5jbHVkZUNvZGUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYUluZm8uZmxhZ3MmQXBwbGljYXRpb25JbmZvLkZMQUdfSEFTX0NPREUpICE9IDApOwogICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlQ29kZSkgewogICAgICAgICAgICAgICAgICAgICBtUGFja2FnZXMucHV0KGFJbmZvLnBhY2thZ2VOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXZWFrUmVmZXJlbmNlPFBhY2thZ2VJbmZvPihwYWNrYWdlSW5mbykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXZWFrUmVmZXJlbmNlPExvYWRlZEFwaz4ocGFja2FnZUluZm8pKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBtUmVzb3VyY2VQYWNrYWdlcy5wdXQoYUluZm8ucGFja2FnZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYWtSZWZlcmVuY2U8UGFja2FnZUluZm8+KHBhY2thZ2VJbmZvKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrPihwYWNrYWdlSW5mbykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBwYWNrYWdlSW5mbzsKQEAgLTI0MTIsNyArMTM2Nyw3IEBACiAgICAgICAgICAgICBpZiAobVN5c3RlbUNvbnRleHQgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgIENvbnRleHRJbXBsIGNvbnRleHQgPQogICAgICAgICAgICAgICAgICAgICBDb250ZXh0SW1wbC5jcmVhdGVTeXN0ZW1Db250ZXh0KHRoaXMpOwotICAgICAgICAgICAgICAgIFBhY2thZ2VJbmZvIGluZm8gPSBuZXcgUGFja2FnZUluZm8odGhpcywgImFuZHJvaWQiLCBjb250ZXh0LCBudWxsKTsKKyAgICAgICAgICAgICAgICBMb2FkZWRBcGsgaW5mbyA9IG5ldyBMb2FkZWRBcGsodGhpcywgImFuZHJvaWQiLCBjb250ZXh0LCBudWxsKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LmluaXQoaW5mbywgbnVsbCwgdGhpcyk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5nZXRSZXNvdXJjZXMoKS51cGRhdGVDb25maWd1cmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29uZmlndXJhdGlvbigpLCBnZXREaXNwbGF5TWV0cmljc0xvY2tlZChmYWxzZSkpOwpAQCAtMjQyNyw3ICsxMzgyLDcgQEAKICAgICBwdWJsaWMgdm9pZCBpbnN0YWxsU3lzdGVtQXBwbGljYXRpb25JbmZvKEFwcGxpY2F0aW9uSW5mbyBpbmZvKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewogICAgICAgICAgICAgQ29udGV4dEltcGwgY29udGV4dCA9IGdldFN5c3RlbUNvbnRleHQoKTsKLSAgICAgICAgICAgIGNvbnRleHQuaW5pdChuZXcgUGFja2FnZUluZm8odGhpcywgImFuZHJvaWQiLCBjb250ZXh0LCBpbmZvKSwgbnVsbCwgdGhpcyk7CisgICAgICAgICAgICBjb250ZXh0LmluaXQobmV3IExvYWRlZEFwayh0aGlzLCAiYW5kcm9pZCIsIGNvbnRleHQsIGluZm8pLCBudWxsLCB0aGlzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjQ3OSw3ICsxNDM0LDcgQEAKICAgICBwdWJsaWMgZmluYWwgQWN0aXZpdHkgc3RhcnRBY3Rpdml0eU5vdyhBY3Rpdml0eSBwYXJlbnQsIFN0cmluZyBpZCwKICAgICAgICAgSW50ZW50IGludGVudCwgQWN0aXZpdHlJbmZvIGFjdGl2aXR5SW5mbywgSUJpbmRlciB0b2tlbiwgQnVuZGxlIHN0YXRlLAogICAgICAgICBPYmplY3QgbGFzdE5vbkNvbmZpZ3VyYXRpb25JbnN0YW5jZSkgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbmV3IEFjdGl2aXR5UmVjb3JkKCk7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBuZXcgQWN0aXZpdHlDbGllbnRSZWNvcmQoKTsKICAgICAgICAgICAgIHIudG9rZW4gPSB0b2tlbjsKICAgICAgICAgICAgIHIuaWRlbnQgPSAwOwogICAgICAgICAgICAgci5pbnRlbnQgPSBpbnRlbnQ7CkBAIC0yNTUwLDcgKzE1MDUsNyBAQAogICAgICAgICBxdWV1ZU9yU2VuZE1lc3NhZ2UoSC5DTEVBTl9VUF9DT05URVhULCBjY2kpOwogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHkgcGVyZm9ybUxhdW5jaEFjdGl2aXR5KEFjdGl2aXR5UmVjb3JkIHIsIEludGVudCBjdXN0b21JbnRlbnQpIHsKKyAgICBwcml2YXRlIGZpbmFsIEFjdGl2aXR5IHBlcmZvcm1MYXVuY2hBY3Rpdml0eShBY3Rpdml0eUNsaWVudFJlY29yZCByLCBJbnRlbnQgY3VzdG9tSW50ZW50KSB7CiAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIyMjIyMgWyIgKyBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSArICJdIEFjdGl2aXR5VGhyZWFkLnBlcmZvcm1MYXVuY2hBY3Rpdml0eSgiICsgciArICIpIik7CiAKICAgICAgICAgQWN0aXZpdHlJbmZvIGFJbmZvID0gci5hY3Rpdml0eUluZm87CkBAIC0yNjY5LDcgKzE2MjQsNyBAQAogICAgICAgICByZXR1cm4gYWN0aXZpdHk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGhhbmRsZUxhdW5jaEFjdGl2aXR5KEFjdGl2aXR5UmVjb3JkIHIsIEludGVudCBjdXN0b21JbnRlbnQpIHsKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlTGF1bmNoQWN0aXZpdHkoQWN0aXZpdHlDbGllbnRSZWNvcmQgciwgSW50ZW50IGN1c3RvbUludGVudCkgewogICAgICAgICAvLyBJZiB3ZSBhcmUgZ2V0dGluZyByZWFkeSB0byBnYyBhZnRlciBnb2luZyB0byB0aGUgYmFja2dyb3VuZCwgd2VsbAogICAgICAgICAvLyB3ZSBhcmUgYmFjayBhY3RpdmUgc28gc2tpcCBpdC4KICAgICAgICAgdW5zY2hlZHVsZUdjSWRsZXIoKTsKQEAgLTI3MjksNyArMTY4NCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgZGVsaXZlck5ld0ludGVudHMoQWN0aXZpdHlSZWNvcmQgciwKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgZGVsaXZlck5ld0ludGVudHMoQWN0aXZpdHlDbGllbnRSZWNvcmQgciwKICAgICAgICAgICAgIExpc3Q8SW50ZW50PiBpbnRlbnRzKSB7CiAgICAgICAgIGZpbmFsIGludCBOID0gaW50ZW50cy5zaXplKCk7CiAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKQEAgLTI3NDEsNyArMTY5Niw3IEBACiAKICAgICBwdWJsaWMgZmluYWwgdm9pZCBwZXJmb3JtTmV3SW50ZW50cyhJQmluZGVyIHRva2VuLAogICAgICAgICAgICAgTGlzdDxJbnRlbnQ+IGludGVudHMpIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOwogICAgICAgICBpZiAociAhPSBudWxsKSB7CiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHJlc3VtZWQgPSAhci5wYXVzZWQ7CiAgICAgICAgICAgICBpZiAocmVzdW1lZCkgewpAQCAtMjc2NSw3ICsxNzIwLDcgQEAKIAogICAgICAgICBTdHJpbmcgY29tcG9uZW50ID0gZGF0YS5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZ2V0Q2xhc3NOYW1lKCk7CiAKLSAgICAgICAgUGFja2FnZUluZm8gcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlSW5mb05vQ2hlY2soCisgICAgICAgIExvYWRlZEFwayBwYWNrYWdlSW5mbyA9IGdldFBhY2thZ2VJbmZvTm9DaGVjaygKICAgICAgICAgICAgICAgICBkYXRhLmluZm8uYXBwbGljYXRpb25JbmZvKTsKIAogICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIG1nciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7CkBAIC0yODQ5LDcgKzE4MDQsNyBAQAogICAgICAgICB1bnNjaGVkdWxlR2NJZGxlcigpOwogCiAgICAgICAgIC8vIGluc3RhbnRpYXRlIHRoZSBCYWNrdXBBZ2VudCBjbGFzcyBuYW1lZCBpbiB0aGUgbWFuaWZlc3QKLSAgICAgICAgUGFja2FnZUluZm8gcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlSW5mb05vQ2hlY2soZGF0YS5hcHBJbmZvKTsKKyAgICAgICAgTG9hZGVkQXBrIHBhY2thZ2VJbmZvID0gZ2V0UGFja2FnZUluZm9Ob0NoZWNrKGRhdGEuYXBwSW5mbyk7CiAgICAgICAgIFN0cmluZyBwYWNrYWdlTmFtZSA9IHBhY2thZ2VJbmZvLm1QYWNrYWdlTmFtZTsKICAgICAgICAgaWYgKG1CYWNrdXBBZ2VudHMuZ2V0KHBhY2thZ2VOYW1lKSAhPSBudWxsKSB7CiAgICAgICAgICAgICBTbG9nLmQoVEFHLCAiQmFja3VwQWdlbnQgIiArICIgIGZvciAiICsgcGFja2FnZU5hbWUKQEAgLTI5MTEsNyArMTg2Niw3IEBACiAgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGhhbmRsZURlc3Ryb3lCYWNrdXBBZ2VudChDcmVhdGVCYWNrdXBBZ2VudERhdGEgZGF0YSkgewogICAgICAgICBpZiAoREVCVUdfQkFDS1VQKSBTbG9nLnYoVEFHLCAiaGFuZGxlRGVzdHJveUJhY2t1cEFnZW50OiAiICsgZGF0YSk7CiAKLSAgICAgICAgUGFja2FnZUluZm8gcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlSW5mb05vQ2hlY2soZGF0YS5hcHBJbmZvKTsKKyAgICAgICAgTG9hZGVkQXBrIHBhY2thZ2VJbmZvID0gZ2V0UGFja2FnZUluZm9Ob0NoZWNrKGRhdGEuYXBwSW5mbyk7CiAgICAgICAgIFN0cmluZyBwYWNrYWdlTmFtZSA9IHBhY2thZ2VJbmZvLm1QYWNrYWdlTmFtZTsKICAgICAgICAgQmFja3VwQWdlbnQgYWdlbnQgPSBtQmFja3VwQWdlbnRzLmdldChwYWNrYWdlTmFtZSk7CiAgICAgICAgIGlmIChhZ2VudCAhPSBudWxsKSB7CkBAIC0yOTMyLDcgKzE4ODcsNyBAQAogICAgICAgICAvLyB3ZSBhcmUgYmFjayBhY3RpdmUgc28gc2tpcCBpdC4KICAgICAgICAgdW5zY2hlZHVsZUdjSWRsZXIoKTsKIAotICAgICAgICBQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA9IGdldFBhY2thZ2VJbmZvTm9DaGVjaygKKyAgICAgICAgTG9hZGVkQXBrIHBhY2thZ2VJbmZvID0gZ2V0UGFja2FnZUluZm9Ob0NoZWNrKAogICAgICAgICAgICAgICAgIGRhdGEuaW5mby5hcHBsaWNhdGlvbkluZm8pOwogICAgICAgICBTZXJ2aWNlIHNlcnZpY2UgPSBudWxsOwogICAgICAgICB0cnkgewpAQCAtMzA5Niw5ICsyMDUxLDkgQEAKICAgICAgICAgLy9TbG9nLmkoVEFHLCAiUnVubmluZyBzZXJ2aWNlczogIiArIG1TZXJ2aWNlcyk7CiAgICAgfQogCi0gICAgcHVibGljIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHBlcmZvcm1SZXN1bWVBY3Rpdml0eShJQmluZGVyIHRva2VuLAorICAgIHB1YmxpYyBmaW5hbCBBY3Rpdml0eUNsaWVudFJlY29yZCBwZXJmb3JtUmVzdW1lQWN0aXZpdHkoSUJpbmRlciB0b2tlbiwKICAgICAgICAgICAgIGJvb2xlYW4gY2xlYXJIaWRlKSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlBlcmZvcm1pbmcgcmVzdW1lIG9mICIgKyByCiAgICAgICAgICAgICAgICAgKyAiIGZpbmlzaGVkPSIgKyByLmFjdGl2aXR5Lm1GaW5pc2hlZCk7CiAgICAgICAgIGlmIChyICE9IG51bGwgJiYgIXIuYWN0aXZpdHkubUZpbmlzaGVkKSB7CkBAIC0zMTQwLDcgKzIwOTUsNyBAQAogICAgICAgICAvLyB3ZSBhcmUgYmFjayBhY3RpdmUgc28gc2tpcCBpdC4KICAgICAgICAgdW5zY2hlZHVsZUdjSWRsZXIoKTsKIAotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gcGVyZm9ybVJlc3VtZUFjdGl2aXR5KHRva2VuLCBjbGVhckhpZGUpOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gcGVyZm9ybVJlc3VtZUFjdGl2aXR5KHRva2VuLCBjbGVhckhpZGUpOwogCiAgICAgICAgIGlmIChyICE9IG51bGwpIHsKICAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5IGEgPSByLmFjdGl2aXR5OwpAQCAtMzIzOSw3ICsyMTk0LDcgQEAKICAgICBwcml2YXRlIGludCBtVGh1bWJuYWlsV2lkdGggPSAtMTsKICAgICBwcml2YXRlIGludCBtVGh1bWJuYWlsSGVpZ2h0ID0gLTE7CiAKLSAgICBwcml2YXRlIGZpbmFsIEJpdG1hcCBjcmVhdGVUaHVtYm5haWxCaXRtYXAoQWN0aXZpdHlSZWNvcmQgcikgeworICAgIHByaXZhdGUgZmluYWwgQml0bWFwIGNyZWF0ZVRodW1ibmFpbEJpdG1hcChBY3Rpdml0eUNsaWVudFJlY29yZCByKSB7CiAgICAgICAgIEJpdG1hcCB0aHVtYm5haWwgPSBudWxsOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgaW50IHcgPSBtVGh1bWJuYWlsV2lkdGg7CkBAIC0zMjc3LDcgKzIyMzIsNyBAQAogCiAgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGhhbmRsZVBhdXNlQWN0aXZpdHkoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBmaW5pc2hlZCwKICAgICAgICAgICAgIGJvb2xlYW4gdXNlckxlYXZpbmcsIGludCBjb25maWdDaGFuZ2VzKSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKICAgICAgICAgaWYgKHIgIT0gbnVsbCkgewogICAgICAgICAgICAgLy9TbG9nLnYoVEFHLCAidXNlckxlYXZpbmc9IiArIHVzZXJMZWF2aW5nICsgIiBoYW5kbGluZyBwYXVzZSBvZiAiICsgcik7CiAgICAgICAgICAgICBpZiAodXNlckxlYXZpbmcpIHsKQEAgLTMyOTUsMTcgKzIyNTAsMTcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGZpbmFsIHZvaWQgcGVyZm9ybVVzZXJMZWF2aW5nQWN0aXZpdHkoQWN0aXZpdHlSZWNvcmQgcikgeworICAgIGZpbmFsIHZvaWQgcGVyZm9ybVVzZXJMZWF2aW5nQWN0aXZpdHkoQWN0aXZpdHlDbGllbnRSZWNvcmQgcikgewogICAgICAgICBtSW5zdHJ1bWVudGF0aW9uLmNhbGxBY3Rpdml0eU9uVXNlckxlYXZpbmcoci5hY3Rpdml0eSk7CiAgICAgfQogCiAgICAgZmluYWwgQnVuZGxlIHBlcmZvcm1QYXVzZUFjdGl2aXR5KElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gZmluaXNoZWQsCiAgICAgICAgICAgICBib29sZWFuIHNhdmVTdGF0ZSkgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CiAgICAgICAgIHJldHVybiByICE9IG51bGwgPyBwZXJmb3JtUGF1c2VBY3Rpdml0eShyLCBmaW5pc2hlZCwgc2F2ZVN0YXRlKSA6IG51bGw7CiAgICAgfQogCi0gICAgZmluYWwgQnVuZGxlIHBlcmZvcm1QYXVzZUFjdGl2aXR5KEFjdGl2aXR5UmVjb3JkIHIsIGJvb2xlYW4gZmluaXNoZWQsCisgICAgZmluYWwgQnVuZGxlIHBlcmZvcm1QYXVzZUFjdGl2aXR5KEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIsIGJvb2xlYW4gZmluaXNoZWQsCiAgICAgICAgICAgICBib29sZWFuIHNhdmVTdGF0ZSkgewogICAgICAgICBpZiAoci5wYXVzZWQpIHsKICAgICAgICAgICAgIGlmIChyLmFjdGl2aXR5Lm1GaW5pc2hlZCkgewpAQCAtMzM1Niw3ICsyMzExLDcgQEAKICAgICB9CiAKICAgICBmaW5hbCB2b2lkIHBlcmZvcm1TdG9wQWN0aXZpdHkoSUJpbmRlciB0b2tlbikgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CiAgICAgICAgIHBlcmZvcm1TdG9wQWN0aXZpdHlJbm5lcihyLCBudWxsLCBmYWxzZSk7CiAgICAgfQogCkBAIC0zMzcyLDcgKzIzMjcsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHBlcmZvcm1TdG9wQWN0aXZpdHlJbm5lcihBY3Rpdml0eVJlY29yZCByLAorICAgIHByaXZhdGUgZmluYWwgdm9pZCBwZXJmb3JtU3RvcEFjdGl2aXR5SW5uZXIoQWN0aXZpdHlDbGllbnRSZWNvcmQgciwKICAgICAgICAgICAgIFN0b3BJbmZvIGluZm8sIGJvb2xlYW4ga2VlcFNob3duKSB7CiAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJQZXJmb3JtaW5nIHN0b3Agb2YgIiArIHIpOwogICAgICAgICBpZiAociAhPSBudWxsKSB7CkBAIC0zNDIzLDcgKzIzNzgsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVZpc2liaWxpdHkoQWN0aXZpdHlSZWNvcmQgciwgYm9vbGVhbiBzaG93KSB7CisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVZpc2liaWxpdHkoQWN0aXZpdHlDbGllbnRSZWNvcmQgciwgYm9vbGVhbiBzaG93KSB7CiAgICAgICAgIFZpZXcgdiA9IHIuYWN0aXZpdHkubURlY29yOwogICAgICAgICBpZiAodiAhPSBudWxsKSB7CiAgICAgICAgICAgICBpZiAoc2hvdykgewpAQCAtMzQ1MSw3ICsyNDA2LDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlU3RvcEFjdGl2aXR5KElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gc2hvdywgaW50IGNvbmZpZ0NoYW5nZXMpIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOwogICAgICAgICByLmFjdGl2aXR5Lm1Db25maWdDaGFuZ2VGbGFncyB8PSBjb25maWdDaGFuZ2VzOwogCiAgICAgICAgIFN0b3BJbmZvIGluZm8gPSBuZXcgU3RvcEluZm8oKTsKQEAgLTM0NzIsNyArMjQyNyw3IEBACiAgICAgfQogCiAgICAgZmluYWwgdm9pZCBwZXJmb3JtUmVzdGFydEFjdGl2aXR5KElCaW5kZXIgdG9rZW4pIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOwogICAgICAgICBpZiAoci5zdG9wcGVkKSB7CiAgICAgICAgICAgICByLmFjdGl2aXR5LnBlcmZvcm1SZXN0YXJ0KCk7CiAgICAgICAgICAgICByLnN0b3BwZWQgPSBmYWxzZTsKQEAgLTM0ODAsNyArMjQzNSw3IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGhhbmRsZVdpbmRvd1Zpc2liaWxpdHkoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBzaG93KSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKICAgICAgICAgaWYgKCFzaG93ICYmICFyLnN0b3BwZWQpIHsKICAgICAgICAgICAgIHBlcmZvcm1TdG9wQWN0aXZpdHlJbm5lcihyLCBudWxsLCBzaG93KTsKICAgICAgICAgfSBlbHNlIGlmIChzaG93ICYmIHIuc3RvcHBlZCkgewpAQCAtMzQ5OCw3ICsyNDUzLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBkZWxpdmVyUmVzdWx0cyhBY3Rpdml0eVJlY29yZCByLCBMaXN0PFJlc3VsdEluZm8+IHJlc3VsdHMpIHsKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgZGVsaXZlclJlc3VsdHMoQWN0aXZpdHlDbGllbnRSZWNvcmQgciwgTGlzdDxSZXN1bHRJbmZvPiByZXN1bHRzKSB7CiAgICAgICAgIGZpbmFsIGludCBOID0gcmVzdWx0cy5zaXplKCk7CiAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKICAgICAgICAgICAgIFJlc3VsdEluZm8gcmkgPSByZXN1bHRzLmdldChpKTsKQEAgLTM1MjIsNyArMjQ3Nyw3IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGhhbmRsZVNlbmRSZXN1bHQoUmVzdWx0RGF0YSByZXMpIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldChyZXMudG9rZW4pOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHJlcy50b2tlbik7CiAgICAgICAgIGlmIChERUJVR19SRVNVTFRTKSBTbG9nLnYoVEFHLCAiSGFuZGxpbmcgc2VuZCByZXN1bHQgdG8gIiArIHIpOwogICAgICAgICBpZiAociAhPSBudWxsKSB7CiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHJlc3VtZWQgPSAhci5wYXVzZWQ7CkBAIC0zNTYxLDEzICsyNTE2LDEzIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgZmluYWwgQWN0aXZpdHlSZWNvcmQgcGVyZm9ybURlc3Ryb3lBY3Rpdml0eShJQmluZGVyIHRva2VuLCBib29sZWFuIGZpbmlzaGluZykgeworICAgIHB1YmxpYyBmaW5hbCBBY3Rpdml0eUNsaWVudFJlY29yZCBwZXJmb3JtRGVzdHJveUFjdGl2aXR5KElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gZmluaXNoaW5nKSB7CiAgICAgICAgIHJldHVybiBwZXJmb3JtRGVzdHJveUFjdGl2aXR5KHRva2VuLCBmaW5pc2hpbmcsIDAsIGZhbHNlKTsKICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHBlcmZvcm1EZXN0cm95QWN0aXZpdHkoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBmaW5pc2hpbmcsCisgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eUNsaWVudFJlY29yZCBwZXJmb3JtRGVzdHJveUFjdGl2aXR5KElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gZmluaXNoaW5nLAogICAgICAgICAgICAgaW50IGNvbmZpZ0NoYW5nZXMsIGJvb2xlYW4gZ2V0Tm9uQ29uZmlnSW5zdGFuY2UpIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOwogICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUGVyZm9ybWluZyBmaW5pc2ggb2YgIiArIHIpOwogICAgICAgICBpZiAociAhPSBudWxsKSB7CiAgICAgICAgICAgICByLmFjdGl2aXR5Lm1Db25maWdDaGFuZ2VGbGFncyB8PSBjb25maWdDaGFuZ2VzOwpAQCAtMzY3MCw3ICsyNjI1LDcgQEAKIAogICAgIHByaXZhdGUgZmluYWwgdm9pZCBoYW5kbGVEZXN0cm95QWN0aXZpdHkoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBmaW5pc2hpbmcsCiAgICAgICAgICAgICBpbnQgY29uZmlnQ2hhbmdlcywgYm9vbGVhbiBnZXROb25Db25maWdJbnN0YW5jZSkgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gcGVyZm9ybURlc3Ryb3lBY3Rpdml0eSh0b2tlbiwgZmluaXNoaW5nLAorICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gcGVyZm9ybURlc3Ryb3lBY3Rpdml0eSh0b2tlbiwgZmluaXNoaW5nLAogICAgICAgICAgICAgICAgIGNvbmZpZ0NoYW5nZXMsIGdldE5vbkNvbmZpZ0luc3RhbmNlKTsKICAgICAgICAgaWYgKHIgIT0gbnVsbCkgewogICAgICAgICAgICAgV2luZG93TWFuYWdlciB3bSA9IHIuYWN0aXZpdHkuZ2V0V2luZG93TWFuYWdlcigpOwpAQCAtMzcxMSw3ICsyNjY2LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBoYW5kbGVSZWxhdW5jaEFjdGl2aXR5KEFjdGl2aXR5UmVjb3JkIHRtcCwgaW50IGNvbmZpZ0NoYW5nZXMpIHsKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlUmVsYXVuY2hBY3Rpdml0eShBY3Rpdml0eUNsaWVudFJlY29yZCB0bXAsIGludCBjb25maWdDaGFuZ2VzKSB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBnZXR0aW5nIHJlYWR5IHRvIGdjIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kLCB3ZWxsCiAgICAgICAgIC8vIHdlIGFyZSBiYWNrIGFjdGl2ZSBzbyBza2lwIGl0LgogICAgICAgICB1bnNjaGVkdWxlR2NJZGxlcigpOwpAQCAtMzczMCw3ICsyNjg1LDcgQEAKICAgICAgICAgICAgIElCaW5kZXIgdG9rZW4gPSB0bXAudG9rZW47CiAgICAgICAgICAgICB0bXAgPSBudWxsOwogICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtUmVsYXVuY2hpbmdBY3Rpdml0aWVzLmdldChpKTsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbVJlbGF1bmNoaW5nQWN0aXZpdGllcy5nZXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKHIudG9rZW4gPT0gdG9rZW4pIHsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gcjsKICAgICAgICAgICAgICAgICAgICAgbVJlbGF1bmNoaW5nQWN0aXZpdGllcy5yZW1vdmUoaSk7CkBAIC0zNzcyLDcgKzI3MjcsNyBAQAogICAgICAgICAgICAgaGFuZGxlQ29uZmlndXJhdGlvbkNoYW5nZWQoY2hhbmdlZENvbmZpZyk7CiAgICAgICAgIH0KIAotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRtcC50b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG1wLnRva2VuKTsKICAgICAgICAgaWYgKERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsICJIYW5kbGluZyByZWxhdW5jaCBvZiAiICsgcik7CiAgICAgICAgIGlmIChyID09IG51bGwpIHsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4MTYsNyArMjc3MSw3IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGhhbmRsZVJlcXVlc3RUaHVtYm5haWwoSUJpbmRlciB0b2tlbikgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CiAgICAgICAgIEJpdG1hcCB0aHVtYm5haWwgPSBjcmVhdGVUaHVtYm5haWxCaXRtYXAocik7CiAgICAgICAgIENoYXJTZXF1ZW5jZSBkZXNjcmlwdGlvbiA9IG51bGw7CiAgICAgICAgIHRyeSB7CkBAIC0zODQzLDkgKzI3OTgsOSBAQAogICAgICAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxDb21wb25lbnRDYWxsYmFja3M+KCk7CiAKICAgICAgICAgaWYgKG1BY3Rpdml0aWVzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgIEl0ZXJhdG9yPEFjdGl2aXR5UmVjb3JkPiBpdCA9IG1BY3Rpdml0aWVzLnZhbHVlcygpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICBJdGVyYXRvcjxBY3Rpdml0eUNsaWVudFJlY29yZD4gaXQgPSBtQWN0aXZpdGllcy52YWx1ZXMoKS5pdGVyYXRvcigpOwogICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIGFyID0gaXQubmV4dCgpOworICAgICAgICAgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIGFyID0gaXQubmV4dCgpOwogICAgICAgICAgICAgICAgIEFjdGl2aXR5IGEgPSBhci5hY3Rpdml0eTsKICAgICAgICAgICAgICAgICBpZiAoYSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXIuYWN0aXZpdHkubUZpbmlzaGVkICYmIChhbGxBY3Rpdml0aWVzIHx8CkBAIC0zODc0LDcgKzI4MjksNyBAQAogICAgICAgICB9CiAgICAgICAgIHN5bmNocm9uaXplZCAobVByb3ZpZGVyTWFwKSB7CiAgICAgICAgICAgICBpZiAobUxvY2FsUHJvdmlkZXJzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBJdGVyYXRvcjxQcm92aWRlclJlY29yZD4gaXQgPSBtTG9jYWxQcm92aWRlcnMudmFsdWVzKCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICBJdGVyYXRvcjxQcm92aWRlckNsaWVudFJlY29yZD4gaXQgPSBtTG9jYWxQcm92aWRlcnMudmFsdWVzKCkuaXRlcmF0b3IoKTsKICAgICAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5hZGQoaXQubmV4dCgpLm1Mb2NhbFByb3ZpZGVyKTsKICAgICAgICAgICAgICAgICB9CkBAIC00MDIwLDcgKzI5NzUsNyBAQAogICAgIH0KIAogICAgIGZpbmFsIHZvaWQgaGFuZGxlQWN0aXZpdHlDb25maWd1cmF0aW9uQ2hhbmdlZChJQmluZGVyIHRva2VuKSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKICAgICAgICAgaWYgKHIgPT0gbnVsbCB8fCByLmFjdGl2aXR5ID09IG51bGwpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDA1Nyw3ICszMDEyLDcgQEAKICAgICAgICAgICAgIGZvciAoaW50IGk9cGFja2FnZXMubGVuZ3RoLTE7IGk+PTA7IGktLSkgewogICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkNsZWFuaW5nIG9sZCBwYWNrYWdlOiAiICsgcGFja2FnZXNbaV0pOwogICAgICAgICAgICAgICAgIGlmICghaGFzUGtnSW5mbykgewotICAgICAgICAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlPFBhY2thZ2VJbmZvPiByZWY7CisgICAgICAgICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrPiByZWY7CiAgICAgICAgICAgICAgICAgICAgIHJlZiA9IG1QYWNrYWdlcy5nZXQocGFja2FnZXNbaV0pOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVmICE9IG51bGwgJiYgcmVmLmdldCgpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BrZ0luZm8gPSB0cnVlOwpAQCAtNDEzMiw2ICszMDg3LDE5IEBACiAgICAgICAgIGRhdGEuaW5mbyA9IGdldFBhY2thZ2VJbmZvTm9DaGVjayhkYXRhLmFwcEluZm8pOwogCiAgICAgICAgIC8qKgorICAgICAgICAgKiBGb3Igc3lzdGVtIGFwcGxpY2F0aW9ucyBvbiB1c2VyZGVidWcvZW5nIGJ1aWxkcywgbG9nIHN0YWNrCisgICAgICAgICAqIHRyYWNlcyBvZiBkaXNrIGFuZCBuZXR3b3JrIGFjY2VzcyB0byBkcm9wYm94IGZvciBhbmFseXNpcy4KKyAgICAgICAgICovCisgICAgICAgIGlmICgoZGF0YS5hcHBJbmZvLmZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX1NZU1RFTSkgIT0gMCAmJgorICAgICAgICAgICAgISJ1c2VyIi5lcXVhbHMoQnVpbGQuVFlQRSkpIHsKKyAgICAgICAgICAgIFN0cmljdE1vZGUuc2V0VGhyZWFkQmxvY2tpbmdQb2xpY3koCisgICAgICAgICAgICAgICAgU3RyaWN0TW9kZS5ESVNBTExPV19ESVNLX1dSSVRFIHwKKyAgICAgICAgICAgICAgICBTdHJpY3RNb2RlLkRJU0FMTE9XX0RJU0tfUkVBRCB8CisgICAgICAgICAgICAgICAgU3RyaWN0TW9kZS5ESVNBTExPV19ORVRXT1JLIHwKKyAgICAgICAgICAgICAgICBTdHJpY3RNb2RlLlBFTkFMVFlfRFJPUEJPWCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKICAgICAgICAgICogU3dpdGNoIHRoaXMgcHJvY2VzcyB0byBkZW5zaXR5IGNvbXBhdGliaWxpdHkgbW9kZSBpZiBuZWVkZWQuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoKGRhdGEuYXBwSW5mby5mbGFncyZBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19TQ1JFRU5fREVOU0lUSUVTKQpAQCAtNDE4OSw3ICszMTU3LDcgQEAKICAgICAgICAgICAgIGluc3RyQXBwLnNvdXJjZURpciA9IGlpLnNvdXJjZURpcjsKICAgICAgICAgICAgIGluc3RyQXBwLnB1YmxpY1NvdXJjZURpciA9IGlpLnB1YmxpY1NvdXJjZURpcjsKICAgICAgICAgICAgIGluc3RyQXBwLmRhdGFEaXIgPSBpaS5kYXRhRGlyOwotICAgICAgICAgICAgUGFja2FnZUluZm8gcGkgPSBnZXRQYWNrYWdlSW5mbyhpbnN0ckFwcCwKKyAgICAgICAgICAgIExvYWRlZEFwayBwaSA9IGdldFBhY2thZ2VJbmZvKGluc3RyQXBwLAogICAgICAgICAgICAgICAgICAgICBhcHBDb250ZXh0LmdldENsYXNzTG9hZGVyKCksIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgIENvbnRleHRJbXBsIGluc3RyQ29udGV4dCA9IG5ldyBDb250ZXh0SW1wbCgpOwogICAgICAgICAgICAgaW5zdHJDb250ZXh0LmluaXQocGksIG51bGwsIHRoaXMpOwpAQCAtNDMwMCw3ICszMjY4LDcgQEAKIAogICAgIHByaXZhdGUgZmluYWwgSUNvbnRlbnRQcm92aWRlciBnZXRQcm92aWRlcihDb250ZXh0IGNvbnRleHQsIFN0cmluZyBuYW1lKSB7CiAgICAgICAgIHN5bmNocm9uaXplZChtUHJvdmlkZXJNYXApIHsKLSAgICAgICAgICAgIGZpbmFsIFByb3ZpZGVyUmVjb3JkIHByID0gbVByb3ZpZGVyTWFwLmdldChuYW1lKTsKKyAgICAgICAgICAgIGZpbmFsIFByb3ZpZGVyQ2xpZW50UmVjb3JkIHByID0gbVByb3ZpZGVyTWFwLmdldChuYW1lKTsKICAgICAgICAgICAgIGlmIChwciAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHByLm1Qcm92aWRlcjsKICAgICAgICAgICAgIH0KQEAgLTQ0MTEsOSArMzM3OSw5IEBACiAgICAgICAgIFN0cmluZyBuYW1lID0gbnVsbDsKICAgICAgICAgCiAgICAgICAgIC8vIHJlbW92ZSB0aGUgcHJvdmlkZXIgZnJvbSBtUHJvdmlkZXJNYXAKLSAgICAgICAgSXRlcmF0b3I8UHJvdmlkZXJSZWNvcmQ+IGl0ZXIgPSBtUHJvdmlkZXJNYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKKyAgICAgICAgSXRlcmF0b3I8UHJvdmlkZXJDbGllbnRSZWNvcmQ+IGl0ZXIgPSBtUHJvdmlkZXJNYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKICAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICBQcm92aWRlclJlY29yZCBwciA9IGl0ZXIubmV4dCgpOworICAgICAgICAgICAgUHJvdmlkZXJDbGllbnRSZWNvcmQgcHIgPSBpdGVyLm5leHQoKTsKICAgICAgICAgICAgIElCaW5kZXIgbXlCaW5kZXIgPSBwci5tUHJvdmlkZXIuYXNCaW5kZXIoKTsKICAgICAgICAgICAgIGlmIChteUJpbmRlciA9PSBwcm92aWRlckJpbmRlcikgewogICAgICAgICAgICAgICAgIC8vZmluZCBpZiBpdHMgcHVibGlzaGVkIGJ5IHRoaXMgcHJvY2VzcyBpdHNlbGYKQEAgLTQ0MzgsMTAgKzM0MDYsMTAgQEAKIAogICAgIGZpbmFsIHZvaWQgcmVtb3ZlRGVhZFByb3ZpZGVyKFN0cmluZyBuYW1lLCBJQ29udGVudFByb3ZpZGVyIHByb3ZpZGVyKSB7CiAgICAgICAgIHN5bmNocm9uaXplZChtUHJvdmlkZXJNYXApIHsKLSAgICAgICAgICAgIFByb3ZpZGVyUmVjb3JkIHByID0gbVByb3ZpZGVyTWFwLmdldChuYW1lKTsKKyAgICAgICAgICAgIFByb3ZpZGVyQ2xpZW50UmVjb3JkIHByID0gbVByb3ZpZGVyTWFwLmdldChuYW1lKTsKICAgICAgICAgICAgIGlmIChwci5tUHJvdmlkZXIuYXNCaW5kZXIoKSA9PSBwcm92aWRlci5hc0JpbmRlcigpKSB7CiAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIlJlbW92aW5nIGRlYWQgY29udGVudCBwcm92aWRlcjogIiArIG5hbWUpOwotICAgICAgICAgICAgICAgIFByb3ZpZGVyUmVjb3JkIHJlbW92ZWQgPSBtUHJvdmlkZXJNYXAucmVtb3ZlKG5hbWUpOworICAgICAgICAgICAgICAgIFByb3ZpZGVyQ2xpZW50UmVjb3JkIHJlbW92ZWQgPSBtUHJvdmlkZXJNYXAucmVtb3ZlKG5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChyZW1vdmVkICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC5tUHJvdmlkZXIuYXNCaW5kZXIoKS51bmxpbmtUb0RlYXRoKHJlbW92ZWQsIDApOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ0NTAsMTAgKzM0MTgsMTAgQEAKICAgICB9CiAKICAgICBmaW5hbCB2b2lkIHJlbW92ZURlYWRQcm92aWRlckxvY2tlZChTdHJpbmcgbmFtZSwgSUNvbnRlbnRQcm92aWRlciBwcm92aWRlcikgewotICAgICAgICBQcm92aWRlclJlY29yZCBwciA9IG1Qcm92aWRlck1hcC5nZXQobmFtZSk7CisgICAgICAgIFByb3ZpZGVyQ2xpZW50UmVjb3JkIHByID0gbVByb3ZpZGVyTWFwLmdldChuYW1lKTsKICAgICAgICAgaWYgKHByLm1Qcm92aWRlci5hc0JpbmRlcigpID09IHByb3ZpZGVyLmFzQmluZGVyKCkpIHsKICAgICAgICAgICAgIFNsb2cuaShUQUcsICJSZW1vdmluZyBkZWFkIGNvbnRlbnQgcHJvdmlkZXI6ICIgKyBuYW1lKTsKLSAgICAgICAgICAgIFByb3ZpZGVyUmVjb3JkIHJlbW92ZWQgPSBtUHJvdmlkZXJNYXAucmVtb3ZlKG5hbWUpOworICAgICAgICAgICAgUHJvdmlkZXJDbGllbnRSZWNvcmQgcmVtb3ZlZCA9IG1Qcm92aWRlck1hcC5yZW1vdmUobmFtZSk7CiAgICAgICAgICAgICBpZiAocmVtb3ZlZCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgcmVtb3ZlZC5tUHJvdmlkZXIuYXNCaW5kZXIoKS51bmxpbmtUb0RlYXRoKHJlbW92ZWQsIDApOwogICAgICAgICAgICAgfQpAQCAtNDUyMSw3ICszNDg5LDcgQEAKICAgICAgICAgICAgIC8vIENhY2hlIHRoZSBwb2ludGVyIGZvciB0aGUgcmVtb3RlIHByb3ZpZGVyLgogICAgICAgICAgICAgU3RyaW5nIG5hbWVzW10gPSBQQVRURVJOX1NFTUlDT0xPTi5zcGxpdChpbmZvLmF1dGhvcml0eSk7CiAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBQcm92aWRlclJlY29yZCBwciA9IG5ldyBQcm92aWRlclJlY29yZChuYW1lc1tpXSwgcHJvdmlkZXIsCisgICAgICAgICAgICAgICAgUHJvdmlkZXJDbGllbnRSZWNvcmQgcHIgPSBuZXcgUHJvdmlkZXJDbGllbnRSZWNvcmQobmFtZXNbaV0sIHByb3ZpZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxQcm92aWRlcik7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIuYXNCaW5kZXIoKS5saW5rVG9EZWF0aChwciwgMCk7CkBAIC00NTMyLDcgKzM1MDAsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxvY2FsUHJvdmlkZXIgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIG1Mb2NhbFByb3ZpZGVycy5wdXQocHJvdmlkZXIuYXNCaW5kZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQcm92aWRlclJlY29yZChudWxsLCBwcm92aWRlciwgbG9jYWxQcm92aWRlcikpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFByb3ZpZGVyQ2xpZW50UmVjb3JkKG51bGwsIHByb3ZpZGVyLCBsb2NhbFByb3ZpZGVyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcEdsb2JhbHMuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBHbG9iYWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWEzOTEyOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBHbG9iYWxzLmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgYW5kcm9pZC5hcHA7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uSVBhY2thZ2VNYW5hZ2VyOworCisvKioKKyAqIFNwZWNpYWwgcHJpdmF0ZSBhY2Nlc3MgZm9yIGNlcnRhaW4gZ2xvYmFscyByZWxhdGVkIHRvIGEgcHJvY2Vzcy4KKyAqIEBoaWRlCisgKi8KK3B1YmxpYyBjbGFzcyBBcHBHbG9iYWxzIHsKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IEFwcGxpY2F0aW9uIG9iamVjdCBtYWRlIGluIHRoZSBwcm9jZXNzLgorICAgICAqIE5PVEU6IE9ubHkgd29ya3Mgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgQXBwbGljYXRpb24gZ2V0SW5pdGlhbEFwcGxpY2F0aW9uKCkgeworICAgICAgICByZXR1cm4gQWN0aXZpdHlUaHJlYWQuY3VycmVudEFwcGxpY2F0aW9uKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgcGFja2FnZSBuYW1lIG9mIHRoZSBmaXJzdCAuYXBrIGxvYWRlZCBpbnRvIHRoZSBwcm9jZXNzLgorICAgICAqIE5PVEU6IE9ubHkgd29ya3Mgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEluaXRpYWxQYWNrYWdlKCkgeworICAgICAgICByZXR1cm4gQWN0aXZpdHlUaHJlYWQuY3VycmVudFBhY2thZ2VOYW1lKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgcmF3IGludGVyZmFjZSB0byB0aGUgcGFja2FnZSBtYW5hZ2VyLgorICAgICAqIEByZXR1cm4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIElQYWNrYWdlTWFuYWdlciBnZXRQYWNrYWdlTWFuYWdlcigpIHsKKyAgICAgICAgcmV0dXJuIEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcGxpY2F0aW9uRXJyb3JSZXBvcnQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBsaWNhdGlvbkVycm9yUmVwb3J0LmphdmEKaW5kZXggZjBjZWY5OC4uOTgzNGM0YyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcGxpY2F0aW9uRXJyb3JSZXBvcnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQXBwbGljYXRpb25FcnJvclJlcG9ydC5qYXZhCkBAIC01Miw3ICs1Miw2IEBACiAgICAgLy8gU3lzdGVtIHByb3BlcnR5IGRlZmluaW5nIGRlZmF1bHQgZXJyb3IgcmVwb3J0IHJlY2VpdmVyCiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0VSUk9SX1JFQ0VJVkVSX1BST1BFUlRZID0gInJvLmVycm9yLnJlY2VpdmVyLmRlZmF1bHQiOwogCi0gICAgCiAgICAgLyoqCiAgICAgICogVW5pbml0aWFsaXplZCBlcnJvciByZXBvcnQuCiAgICAgICovCkBAIC03NCw2ICs3MywxMSBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfQkFUVEVSWSA9IDM7CiAKICAgICAvKioKKyAgICAgKiBBbiBlcnJvciByZXBvcnQgYWJvdXQgYSBTdHJpY3RNb2RlIHZpb2xhdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX1NUUklDVF9NT0RFX1ZJT0xBVElPTiA9IDQ7CisKKyAgICAvKioKICAgICAgKiBUeXBlIG9mIHRoaXMgcmVwb3J0LiBDYW4gYmUgb25lIG9mIHtAbGluayAjVFlQRV9OT05FfSwKICAgICAgKiB7QGxpbmsgI1RZUEVfQ1JBU0h9LCB7QGxpbmsgI1RZUEVfQU5SfSwgb3Ige0BsaW5rICNUWVBFX0JBVFRFUll9LgogICAgICAqLwpAQCAtMjUwLDYgKzI1NCwxMCBAQAogCiAgICAgLyoqCiAgICAgICogRGVzY3JpYmVzIGFuIGFwcGxpY2F0aW9uIGNyYXNoLgorICAgICAqCisgICAgICogPHA+VGhpcyBpcyBhbHNvIHVzZWQgdG8gbWFyc2hhbCBhcm91bmQgc3RhY2sgdHJhY2VzIG9mIEFOUnMgYW5kCisgICAgICogU3RyaWN0TW9kZSB2aW9sYXRpb25zIHdoaWNoIGFyZW4ndCBuZWNlc3NhcmlseSBjcmFzaGVzLCBidXQgaGF2ZQorICAgICAqIGEgbG90IGluIGNvbW1vbi4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIENyYXNoSW5mbyB7CiAgICAgICAgIC8qKgpAQCAtMjg4LDYgKzI5NiwxMiBAQAogICAgICAgICBwdWJsaWMgU3RyaW5nIHN0YWNrVHJhY2U7CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIEZvciBTdHJpY3RNb2RlIHZpb2xhdGlvbnMsIHRoZSB3YWxsIHRpbWUgZHVyYXRpb24gb2YgdGhlCisgICAgICAgICAqIHZpb2xhdGlvbiwgd2hlbiBrbm93bi4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBsb25nIGR1cmF0aW9uTWlsbGlzID0gLTE7CisKKyAgICAgICAgLyoqCiAgICAgICAgICAqIENyZWF0ZSBhbiB1bmluaXRpYWxpemVkIGluc3RhbmNlIG9mIENyYXNoSW5mby4KICAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBDcmFzaEluZm8oKSB7CkBAIC0zMzAsNiArMzQ0LDcgQEAKICAgICAgICAgICAgIHRocm93TWV0aG9kTmFtZSA9IGluLnJlYWRTdHJpbmcoKTsKICAgICAgICAgICAgIHRocm93TGluZU51bWJlciA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgICAgIHN0YWNrVHJhY2UgPSBpbi5yZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBkdXJhdGlvbk1pbGxpcyA9IGluLnJlYWRMb25nKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvKioKQEAgLTM0Myw2ICszNTgsNyBAQAogICAgICAgICAgICAgZGVzdC53cml0ZVN0cmluZyh0aHJvd01ldGhvZE5hbWUpOwogICAgICAgICAgICAgZGVzdC53cml0ZUludCh0aHJvd0xpbmVOdW1iZXIpOwogICAgICAgICAgICAgZGVzdC53cml0ZVN0cmluZyhzdGFja1RyYWNlKTsKKyAgICAgICAgICAgIGRlc3Qud3JpdGVMb25nKGR1cmF0aW9uTWlsbGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qKgpAQCAtMzU2LDYgKzM3Miw5IEBACiAgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJ0aHJvd01ldGhvZE5hbWU6ICIgKyB0aHJvd01ldGhvZE5hbWUpOwogICAgICAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAidGhyb3dMaW5lTnVtYmVyOiAiICsgdGhyb3dMaW5lTnVtYmVyKTsKICAgICAgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgInN0YWNrVHJhY2U6ICIgKyBzdGFja1RyYWNlKTsKKyAgICAgICAgICAgIGlmIChkdXJhdGlvbk1pbGxpcyAhPSAtMSkgeworICAgICAgICAgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgImR1cmF0aW9uTWlsbGlzOiAiICsgZHVyYXRpb25NaWxsaXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQXBwbGljYXRpb25UaHJlYWROYXRpdmUuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBsaWNhdGlvblRocmVhZE5hdGl2ZS5qYXZhCmluZGV4IGRhMjZhNzguLjFjMjAwNjIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBsaWNhdGlvblRocmVhZE5hdGl2ZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBsaWNhdGlvblRocmVhZE5hdGl2ZS5qYXZhCkBAIC0zNDEsMTMgKzM0MSw2IEBACiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBSRVFVRVNUX1BTU19UUkFOU0FDVElPTjoKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBcHBsaWNhdGlvblRocmVhZC5kZXNjcmlwdG9yKTsKLSAgICAgICAgICAgIHJlcXVlc3RQc3MoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBjYXNlIFBST0ZJTEVSX0NPTlRST0xfVFJBTlNBQ1RJT046CiAgICAgICAgIHsKICAgICAgICAgICAgIGRhdGEuZW5mb3JjZUludGVyZmFjZShJQXBwbGljYXRpb25UaHJlYWQuZGVzY3JpcHRvcik7CkBAIC00MDIsNiArMzk1LDE0IEBACiAgICAgICAgICAgICBkaXNwYXRjaFBhY2thZ2VCcm9hZGNhc3QoY21kLCBwYWNrYWdlcyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgU0NIRURVTEVfQ1JBU0hfVFJBTlNBQ1RJT046CisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGEuZW5mb3JjZUludGVyZmFjZShJQXBwbGljYXRpb25UaHJlYWQuZGVzY3JpcHRvcik7CisgICAgICAgICAgICBTdHJpbmcgbXNnID0gZGF0YS5yZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBzY2hlZHVsZUNyYXNoKG1zZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHN1cGVyLm9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKQEAgLTc3MSwxNCArNzcyLDYgQEAKICAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CiAgICAgfQogICAgIAotICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJlcXVlc3RQc3MoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgUGFyY2VsIGRhdGEgPSBQYXJjZWwub2J0YWluKCk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQXBwbGljYXRpb25UaHJlYWQuZGVzY3JpcHRvcik7Ci0gICAgICAgIG1SZW1vdGUudHJhbnNhY3QoUkVRVUVTVF9QU1NfVFJBTlNBQ1RJT04sIGRhdGEsIG51bGwsCi0gICAgICAgICAgICAgICAgSUJpbmRlci5GTEFHX09ORVdBWSk7Ci0gICAgICAgIGRhdGEucmVjeWNsZSgpOwotICAgIH0KLSAgICAKICAgICBwdWJsaWMgdm9pZCBwcm9maWxlckNvbnRyb2woYm9vbGVhbiBzdGFydCwgU3RyaW5nIHBhdGgsCiAgICAgICAgICAgICBQYXJjZWxGaWxlRGVzY3JpcHRvciBmZCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CiAgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOwpAQCAtODI2LDUgKzgxOSwxNSBAQAogICAgICAgICBkYXRhLnJlY3ljbGUoKTsKICAgICAgICAgCiAgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNjaGVkdWxlQ3Jhc2goU3RyaW5nIG1zZykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUFwcGxpY2F0aW9uVGhyZWFkLmRlc2NyaXB0b3IpOworICAgICAgICBkYXRhLndyaXRlU3RyaW5nKG1zZyk7CisgICAgICAgIG1SZW1vdGUudHJhbnNhY3QoU0NIRURVTEVfQ1JBU0hfVFJBTlNBQ1RJT04sIGRhdGEsIG51bGwsCisgICAgICAgICAgICAgICAgSUJpbmRlci5GTEFHX09ORVdBWSk7CisgICAgICAgIGRhdGEucmVjeWNsZSgpOworICAgICAgICAKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9Db250ZXh0SW1wbC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0NvbnRleHRJbXBsLmphdmEKaW5kZXggZjQ3MWY1Ny4uZmM5YmNmNyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0NvbnRleHRJbXBsLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0NvbnRleHRJbXBsLmphdmEKQEAgLTE3Myw3ICsxNzMsNyBAQAogICAgICAgICAgICAgbmV3IEhhc2hNYXA8RmlsZSwgU2hhcmVkUHJlZmVyZW5jZXNJbXBsPigpOwogCiAgICAgcHJpdmF0ZSBBdWRpb01hbmFnZXIgbUF1ZGlvTWFuYWdlcjsKLSAgICAvKnBhY2thZ2UqLyBBY3Rpdml0eVRocmVhZC5QYWNrYWdlSW5mbyBtUGFja2FnZUluZm87CisgICAgLypwYWNrYWdlKi8gTG9hZGVkQXBrIG1QYWNrYWdlSW5mbzsKICAgICBwcml2YXRlIFJlc291cmNlcyBtUmVzb3VyY2VzOwogICAgIC8qcGFja2FnZSovIEFjdGl2aXR5VGhyZWFkIG1NYWluVGhyZWFkOwogICAgIHByaXZhdGUgQ29udGV4dCBtT3V0ZXJDb250ZXh0OwpAQCAtNjk2LDcgKzY5Niw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHNjaGVkdWxlciA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlciA9IG1NYWluVGhyZWFkLmdldEhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmQgPSBuZXcgQWN0aXZpdHlUaHJlYWQuUGFja2FnZUluZm8uUmVjZWl2ZXJEaXNwYXRjaGVyKAorICAgICAgICAgICAgICAgIHJkID0gbmV3IExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWNlaXZlciwgZ2V0T3V0ZXJDb250ZXh0KCksIHNjaGVkdWxlciwgbnVsbCwgZmFsc2UpLmdldElJbnRlbnRSZWNlaXZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03MzksNyArNzM5LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVyID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyID0gbU1haW5UaHJlYWQuZ2V0SGFuZGxlcigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZCA9IG5ldyBBY3Rpdml0eVRocmVhZC5QYWNrYWdlSW5mby5SZWNlaXZlckRpc3BhdGNoZXIoCisgICAgICAgICAgICAgICAgcmQgPSBuZXcgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcigKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY2VpdmVyLCBnZXRPdXRlckNvbnRleHQoKSwgc2NoZWR1bGVyLCBudWxsLCBmYWxzZSkuZ2V0SUludGVudFJlY2VpdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTc5NSw3ICs3OTUsNyBAQAogICAgICAgICAgICAgICAgIGlmIChzY2hlZHVsZXIgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZXIgPSBtTWFpblRocmVhZC5nZXRIYW5kbGVyKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJkID0gbmV3IEFjdGl2aXR5VGhyZWFkLlBhY2thZ2VJbmZvLlJlY2VpdmVyRGlzcGF0Y2hlcigKKyAgICAgICAgICAgICAgICByZCA9IG5ldyBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIsIGNvbnRleHQsIHNjaGVkdWxlciwgbnVsbCwgdHJ1ZSkuZ2V0SUludGVudFJlY2VpdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExNTcsMTIgKzExNTcsMTYgQEAKICAgICAgICAgcmV0dXJuIG1BdWRpb01hbmFnZXI7CiAgICAgfQogCisgICAgLyogcGFja2FnZSAqLyBzdGF0aWMgRHJvcEJveE1hbmFnZXIgY3JlYXRlRHJvcEJveE1hbmFnZXIoKSB7CisgICAgICAgIElCaW5kZXIgYiA9IFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoRFJPUEJPWF9TRVJWSUNFKTsKKyAgICAgICAgSURyb3BCb3hNYW5hZ2VyU2VydmljZSBzZXJ2aWNlID0gSURyb3BCb3hNYW5hZ2VyU2VydmljZS5TdHViLmFzSW50ZXJmYWNlKGIpOworICAgICAgICByZXR1cm4gbmV3IERyb3BCb3hNYW5hZ2VyKHNlcnZpY2UpOworICAgIH0KKwogICAgIHByaXZhdGUgRHJvcEJveE1hbmFnZXIgZ2V0RHJvcEJveE1hbmFnZXIoKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAobVN5bmMpIHsKICAgICAgICAgICAgIGlmIChtRHJvcEJveE1hbmFnZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIElCaW5kZXIgYiA9IFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoRFJPUEJPWF9TRVJWSUNFKTsKLSAgICAgICAgICAgICAgICBJRHJvcEJveE1hbmFnZXJTZXJ2aWNlIHNlcnZpY2UgPSBJRHJvcEJveE1hbmFnZXJTZXJ2aWNlLlN0dWIuYXNJbnRlcmZhY2UoYik7Ci0gICAgICAgICAgICAgICAgbURyb3BCb3hNYW5hZ2VyID0gbmV3IERyb3BCb3hNYW5hZ2VyKHNlcnZpY2UpOworICAgICAgICAgICAgICAgIG1Ecm9wQm94TWFuYWdlciA9IGNyZWF0ZURyb3BCb3hNYW5hZ2VyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1Ecm9wQm94TWFuYWdlcjsKQEAgLTE0MjEsNyArMTQyNSw3IEBACiAgICAgICAgICAgICByZXR1cm4gbmV3IENvbnRleHRJbXBsKG1NYWluVGhyZWFkLmdldFN5c3RlbUNvbnRleHQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBBY3Rpdml0eVRocmVhZC5QYWNrYWdlSW5mbyBwaSA9CisgICAgICAgIExvYWRlZEFwayBwaSA9CiAgICAgICAgICAgICBtTWFpblRocmVhZC5nZXRQYWNrYWdlSW5mbyhwYWNrYWdlTmFtZSwgZmxhZ3MpOwogICAgICAgICBpZiAocGkgIT0gbnVsbCkgewogICAgICAgICAgICAgQ29udGV4dEltcGwgYyA9IG5ldyBDb250ZXh0SW1wbCgpOwpAQCAtMTQ4OCwxMiArMTQ5MiwxMiBAQAogICAgICAgICBtT3V0ZXJDb250ZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBmaW5hbCB2b2lkIGluaXQoQWN0aXZpdHlUaHJlYWQuUGFja2FnZUluZm8gcGFja2FnZUluZm8sCisgICAgZmluYWwgdm9pZCBpbml0KExvYWRlZEFwayBwYWNrYWdlSW5mbywKICAgICAgICAgICAgIElCaW5kZXIgYWN0aXZpdHlUb2tlbiwgQWN0aXZpdHlUaHJlYWQgbWFpblRocmVhZCkgewogICAgICAgICBpbml0KHBhY2thZ2VJbmZvLCBhY3Rpdml0eVRva2VuLCBtYWluVGhyZWFkLCBudWxsKTsKICAgICB9CiAKLSAgICBmaW5hbCB2b2lkIGluaXQoQWN0aXZpdHlUaHJlYWQuUGFja2FnZUluZm8gcGFja2FnZUluZm8sCisgICAgZmluYWwgdm9pZCBpbml0KExvYWRlZEFwayBwYWNrYWdlSW5mbywKICAgICAgICAgICAgICAgICBJQmluZGVyIGFjdGl2aXR5VG9rZW4sIEFjdGl2aXR5VGhyZWFkIG1haW5UaHJlYWQsCiAgICAgICAgICAgICAgICAgUmVzb3VyY2VzIGNvbnRhaW5lcikgewogICAgICAgICBtUGFja2FnZUluZm8gPSBwYWNrYWdlSW5mbzsKQEAgLTIxNzMsNiArMjE3NywzOSBAQAogICAgICAgICAgICAgICAgIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb24gewogICAgICAgICAgICAgcmV0dXJuIGdldEFwcGxpY2F0aW9uSWNvbihnZXRBcHBsaWNhdGlvbkluZm8ocGFja2FnZU5hbWUsIDApKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQE92ZXJyaWRlIAorICAgICAgICBwdWJsaWMgRHJhd2FibGUgZ2V0QWN0aXZpdHlMb2dvKENvbXBvbmVudE5hbWUgYWN0aXZpdHlOYW1lKQorICAgICAgICAgICAgICAgIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGdldEFjdGl2aXR5SW5mbyhhY3Rpdml0eU5hbWUsIDApLmxvYWRMb2dvKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBEcmF3YWJsZSBnZXRBY3Rpdml0eUxvZ28oSW50ZW50IGludGVudCkKKyAgICAgICAgICAgICAgICB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGlmIChpbnRlbnQuZ2V0Q29tcG9uZW50KCkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBnZXRBY3Rpdml0eUxvZ28oaW50ZW50LmdldENvbXBvbmVudCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUmVzb2x2ZUluZm8gaW5mbyA9IHJlc29sdmVBY3Rpdml0eSgKKyAgICAgICAgICAgICAgICAgICAgaW50ZW50LCBQYWNrYWdlTWFuYWdlci5NQVRDSF9ERUZBVUxUX09OTFkpOworICAgICAgICAgICAgaWYgKGluZm8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvLmFjdGl2aXR5SW5mby5sb2FkTG9nbyh0aGlzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhyb3cgbmV3IE5hbWVOb3RGb3VuZEV4Y2VwdGlvbihpbnRlbnQudG9VcmkoMCkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBEcmF3YWJsZSBnZXRBcHBsaWNhdGlvbkxvZ28oQXBwbGljYXRpb25JbmZvIGluZm8pIHsKKyAgICAgICAgICAgIHJldHVybiBpbmZvLmxvYWRMb2dvKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBEcmF3YWJsZSBnZXRBcHBsaWNhdGlvbkxvZ28oU3RyaW5nIHBhY2thZ2VOYW1lKQorICAgICAgICAgICAgICAgIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGdldEFwcGxpY2F0aW9uTG9nbyhnZXRBcHBsaWNhdGlvbkluZm8ocGFja2FnZU5hbWUsIDApKTsKKyAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgUmVzb3VyY2VzIGdldFJlc291cmNlc0ZvckFjdGl2aXR5KAogICAgICAgICAgICAgICAgIENvbXBvbmVudE5hbWUgYWN0aXZpdHlOYW1lKSB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9EaWFsb2cuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9EaWFsb2cuamF2YQppbmRleCAwMjM1NTk5Li5kYThjOWU1IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvRGlhbG9nLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0RpYWxvZy5qYXZhCkBAIC0xMzgsNyArMTM4LDcgQEAKICAgICBwdWJsaWMgRGlhbG9nKENvbnRleHQgY29udGV4dCwgaW50IHRoZW1lKSB7CiAgICAgICAgIG1Db250ZXh0ID0gbmV3IENvbnRleHRUaGVtZVdyYXBwZXIoCiAgICAgICAgICAgICBjb250ZXh0LCB0aGVtZSA9PSAwID8gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5UaGVtZV9EaWFsb2cgOiB0aGVtZSk7Ci0gICAgICAgIG1XaW5kb3dNYW5hZ2VyID0gKFdpbmRvd01hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKCJ3aW5kb3ciKTsKKyAgICAgICAgbVdpbmRvd01hbmFnZXIgPSAoV2luZG93TWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSU5ET1dfU0VSVklDRSk7CiAgICAgICAgIFdpbmRvdyB3ID0gUG9saWN5TWFuYWdlci5tYWtlTmV3V2luZG93KG1Db250ZXh0KTsKICAgICAgICAgbVdpbmRvdyA9IHc7CiAgICAgICAgIHcuc2V0Q2FsbGJhY2sodGhpcyk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFjdGl2aXR5TWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lBY3Rpdml0eU1hbmFnZXIuamF2YQppbmRleCAzMWYwYTYzLi4yMGM5YTgwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFjdGl2aXR5TWFuYWdlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9JQWN0aXZpdHlNYW5hZ2VyLmphdmEKQEAgLTI0Nyw4ICsyNDcsNiBAQAogICAgIAogICAgIHB1YmxpYyBib29sZWFuIGtpbGxQaWRzKGludFtdIHBpZHMsIFN0cmluZyByZWFzb24pIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAgICAgCi0gICAgcHVibGljIHZvaWQgcmVwb3J0UHNzKElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsIGludCBwc3MpIHRocm93cyBSZW1vdGVFeGNlcHRpb247Ci0gICAgCiAgICAgLy8gU3BlY2lhbCBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiB3aXRoIGFjdGl2aXR5IG1hbmFnZXIuCiAgICAgcHVibGljIHZvaWQgc3RhcnRSdW5uaW5nKFN0cmluZyBwa2csIFN0cmluZyBjbHMsIFN0cmluZyBhY3Rpb24sCiAgICAgICAgICAgICBTdHJpbmcgZGF0YSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKQEAgLTI1Niw3ICsyNTQsMTQgQEAKICAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVBcHBsaWNhdGlvbld0ZihJQmluZGVyIGFwcCwgU3RyaW5nIHRhZywKICAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKLSAgICAKKworICAgIC8vIEEgU3RyaWN0TW9kZSB2aW9sYXRpb24gdG8gYmUgaGFuZGxlZC4gIFRoZSB2aW9sYXRpb25NYXNrIGlzIGEKKyAgICAvLyBzdWJzZXQgb2YgdGhlIG9yaWdpbmFsIFN0cmljdE1vZGUgcG9saWN5IGJpdG1hc2ssIHdpdGggb25seSB0aGUKKyAgICAvLyBiaXQgdmlvbGF0ZWQgYW5kIHBlbmFsdHkgYml0cyB0byBiZSBleGVjdXRlZCBieSB0aGUKKyAgICAvLyBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIHJlbWFpbmluZyBzZXQuCisgICAgcHVibGljIHZvaWQgaGFuZGxlQXBwbGljYXRpb25TdHJpY3RNb2RlVmlvbGF0aW9uKElCaW5kZXIgYXBwLCBpbnQgdmlvbGF0aW9uTWFzaywKKyAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKKwogICAgIC8qCiAgICAgICogVGhpcyB3aWxsIGRlbGl2ZXIgdGhlIHNwZWNpZmllZCBzaWduYWwgdG8gYWxsIHRoZSBwZXJzaXN0ZW50IHByb2Nlc3Nlcy4gQ3VycmVudGx5IG9ubHkgCiAgICAgICogU0lHVVNSMSBpcyBkZWxpdmVyZWQuIEFsbCBvdGhlcnMgYXJlIGlnbm9yZWQuCkBAIC0zMDMsNiArMzA4LDE1IEBACiAgICAgCiAgICAgcHVibGljIGJvb2xlYW4gaXNVc2VyQU1vbmtleSgpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAgICAgCisgICAgcHVibGljIHZvaWQgZmluaXNoSGVhdnlXZWlnaHRBcHAoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOworCisgICAgcHVibGljIHZvaWQgc2V0SW1tZXJzaXZlKElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gaW1tZXJzaXZlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOworICAgIHB1YmxpYyBib29sZWFuIGlzSW1tZXJzaXZlKElCaW5kZXIgdG9rZW4pIHRocm93cyBSZW1vdGVFeGNlcHRpb247CisgICAgcHVibGljIGJvb2xlYW4gaXNUb3BBY3Rpdml0eUltbWVyc2l2ZSgpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CisgICAgCisgICAgcHVibGljIHZvaWQgY3Jhc2hBcHBsaWNhdGlvbihpbnQgdWlkLCBpbnQgaW5pdGlhbFBpZCwgU3RyaW5nIHBhY2thZ2VOYW1lLAorICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CisgICAgCiAgICAgLyoKICAgICAgKiBQcml2YXRlIG5vbi1CaW5kZXIgaW50ZXJmYWNlcwogICAgICAqLwpAQCAtNDg2LDcgKzUwMCw3IEBACiAgICAgaW50IEZPUkNFX1NUT1BfUEFDS0FHRV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTis3ODsKICAgICBpbnQgS0lMTF9QSURTX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzc5OwogICAgIGludCBHRVRfU0VSVklDRVNfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rODA7Ci0gICAgaW50IFJFUE9SVF9QU1NfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rODE7CisKICAgICBpbnQgR0VUX1JVTk5JTkdfQVBQX1BST0NFU1NFU19UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTis4MjsKICAgICBpbnQgR0VUX0RFVklDRV9DT05GSUdVUkFUSU9OX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzgzOwogICAgIGludCBQRUVLX1NFUlZJQ0VfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rODQ7CkBAIC01MTMsNCArNTI3LDEwIEBACiAgICAgaW50IFdJTExfQUNUSVZJVFlfQkVfVklTSUJMRV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisxMDU7CiAgICAgaW50IFNUQVJUX0FDVElWSVRZX1dJVEhfQ09ORklHX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzEwNjsKICAgICBpbnQgR0VUX1JVTk5JTkdfRVhURVJOQUxfQVBQTElDQVRJT05TX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzEwNzsKKyAgICBpbnQgRklOSVNIX0hFQVZZX1dFSUdIVF9BUFBfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMTA4OworICAgIGludCBIQU5ETEVfQVBQTElDQVRJT05fU1RSSUNUX01PREVfVklPTEFUSU9OX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzEwOTsKKyAgICBpbnQgSVNfSU1NRVJTSVZFX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzExMDsKKyAgICBpbnQgU0VUX0lNTUVSU0lWRV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisxMTE7CisgICAgaW50IElTX1RPUF9BQ1RJVklUWV9JTU1FUlNJVkVfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMTEyOworICAgIGludCBDUkFTSF9BUFBMSUNBVElPTl9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisxMTM7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFwcGxpY2F0aW9uVGhyZWFkLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFwcGxpY2F0aW9uVGhyZWFkLmphdmEKaW5kZXggYzkxN2U4MS4uYzhlZjE3ZiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lBcHBsaWNhdGlvblRocmVhZC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9JQXBwbGljYXRpb25UaHJlYWQuamF2YQpAQCAtOTUsNyArOTUsNiBAQAogICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICB2b2lkIHNjaGVkdWxlTG93TWVtb3J5KCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICB2b2lkIHNjaGVkdWxlQWN0aXZpdHlDb25maWd1cmF0aW9uQ2hhbmdlZChJQmluZGVyIHRva2VuKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOwotICAgIHZvaWQgcmVxdWVzdFBzcygpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAgICAgdm9pZCBwcm9maWxlckNvbnRyb2woYm9vbGVhbiBzdGFydCwgU3RyaW5nIHBhdGgsIFBhcmNlbEZpbGVEZXNjcmlwdG9yIGZkKQogICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICB2b2lkIHNldFNjaGVkdWxpbmdHcm91cChpbnQgZ3JvdXApIHRocm93cyBSZW1vdGVFeGNlcHRpb247CkBAIC0xMDMsNiArMTAyLDcgQEAKICAgICBzdGF0aWMgZmluYWwgaW50IFBBQ0tBR0VfUkVNT1ZFRCA9IDA7CiAgICAgc3RhdGljIGZpbmFsIGludCBFWFRFUk5BTF9TVE9SQUdFX1VOQVZBSUxBQkxFID0gMTsKICAgICB2b2lkIGRpc3BhdGNoUGFja2FnZUJyb2FkY2FzdChpbnQgY21kLCBTdHJpbmdbXSBwYWNrYWdlcykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKKyAgICB2b2lkIHNjaGVkdWxlQ3Jhc2goU3RyaW5nIG1zZykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICAKICAgICBTdHJpbmcgZGVzY3JpcHRvciA9ICJhbmRyb2lkLmFwcC5JQXBwbGljYXRpb25UaHJlYWQiOwogCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgICBpbnQgU0NIRURVTEVfTE9XX01FTU9SWV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisyMzsKICAgICBpbnQgU0NIRURVTEVfQUNUSVZJVFlfQ09ORklHVVJBVElPTl9DSEFOR0VEX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzI0OwogICAgIGludCBTQ0hFRFVMRV9SRUxBVU5DSF9BQ1RJVklUWV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisyNTsKLSAgICBpbnQgUkVRVUVTVF9QU1NfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMjY7CisKICAgICBpbnQgUFJPRklMRVJfQ09OVFJPTF9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisyNzsKICAgICBpbnQgU0VUX1NDSEVEVUxJTkdfR1JPVVBfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMjg7CiAgICAgaW50IFNDSEVEVUxFX0NSRUFURV9CQUNLVVBfQUdFTlRfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMjk7CkBAIC0xMzksNCArMTM5LDUgQEAKICAgICBpbnQgR0VUX01FTU9SWV9JTkZPX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzMxOwogICAgIGludCBTQ0hFRFVMRV9TVUlDSURFX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzMyOwogICAgIGludCBESVNQQVRDSF9QQUNLQUdFX0JST0FEQ0FTVF9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTiszMzsKKyAgICBpbnQgU0NIRURVTEVfQ1JBU0hfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMzQ7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSVN0YXR1c0Jhci5haWRsIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lTdGF0dXNCYXIuYWlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY0ZmE1MC4uMDAwMDAwMAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSVN0YXR1c0Jhci5haWRsCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCi0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAotICoKLSAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0gCi1wYWNrYWdlIGFuZHJvaWQuYXBwOwotCi0vKiogQGhpZGUgKi8KLWludGVyZmFjZSBJU3RhdHVzQmFyCi17Ci0gICAgdm9pZCBhY3RpdmF0ZSgpOwotICAgIHZvaWQgZGVhY3RpdmF0ZSgpOwotICAgIHZvaWQgdG9nZ2xlKCk7Ci0gICAgdm9pZCBkaXNhYmxlKGludCB3aGF0LCBJQmluZGVyIHRva2VuLCBTdHJpbmcgcGtnKTsKLSAgICBJQmluZGVyIGFkZEljb24oU3RyaW5nIHNsb3QsIFN0cmluZyBpY29uUGFja2FnZSwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCk7Ci0gICAgdm9pZCB1cGRhdGVJY29uKElCaW5kZXIga2V5LCBTdHJpbmcgc2xvdCwgU3RyaW5nIGljb25QYWNrYWdlLCBpbnQgaWNvbklkLCBpbnQgaWNvbkxldmVsKTsKLSAgICB2b2lkIHJlbW92ZUljb24oSUJpbmRlciBrZXkpOwotfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xpc3RBY3Rpdml0eS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xpc3RBY3Rpdml0eS5qYXZhCmluZGV4IDg0YTU3YjUuLjRiZjU1MTggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9MaXN0QWN0aXZpdHkuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTGlzdEFjdGl2aXR5LmphdmEKQEAgLTE4LDkgKzE4LDcgQEAKIAogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuQWRhcHRlcjsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldzsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlcjsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0VmlldzsKQEAgLTY4LDcgKzY2LDcgQEAKICAqICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSZxdW90OzEmcXVvdDsKICAqICAgICAgICAgICAgICAgYW5kcm9pZDpkcmF3U2VsZWN0b3JPblRvcD0mcXVvdDtmYWxzZSZxdW90Oy8mZ3Q7CiAgKgotICogICAgICZsdDtUZXh0VmlldyBpZD0mcXVvdDtAaWQvYW5kcm9pZDplbXB0eSZxdW90OworICogICAgICZsdDtUZXh0VmlldyBhbmRyb2lkOmlkPSZxdW90O0BpZC9hbmRyb2lkOmVtcHR5JnF1b3Q7CiAgKiAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSZxdW90O21hdGNoX3BhcmVudCZxdW90OwogICogICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9JnF1b3Q7bWF0Y2hfcGFyZW50JnF1b3Q7CiAgKiAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0mcXVvdDsjRkYwMDAwJnF1b3Q7CkBAIC0zMTYsNyArMzE0LDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIEFkYXB0ZXJWaWV3Lk9uSXRlbUNsaWNrTGlzdGVuZXIgbU9uQ2xpY2tMaXN0ZW5lciA9IG5ldyBBZGFwdGVyVmlldy5Pbkl0ZW1DbGlja0xpc3RlbmVyKCkgewotICAgICAgICBwdWJsaWMgdm9pZCBvbkl0ZW1DbGljayhBZGFwdGVyVmlldyBwYXJlbnQsIFZpZXcgdiwgaW50IHBvc2l0aW9uLCBsb25nIGlkKQorICAgICAgICBwdWJsaWMgdm9pZCBvbkl0ZW1DbGljayhBZGFwdGVyVmlldzw/PiBwYXJlbnQsIFZpZXcgdiwgaW50IHBvc2l0aW9uLCBsb25nIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2soKExpc3RWaWV3KXBhcmVudCwgdiwgcG9zaXRpb24sIGlkKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xvYWRlZEFway5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xvYWRlZEFway5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOTgxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTG9hZGVkQXBrLmphdmEKQEAgLTAsMCArMSwxMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLmFwcDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuQXJyYXlVdGlsczsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSUludGVudFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLklQYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db21wYXRpYmlsaXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuUHJvY2VzczsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEubGFuZy5yZWYuV2Vha1JlZmVyZW5jZTsKK2ltcG9ydCBqYXZhLm5ldC5VUkw7CitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworZmluYWwgY2xhc3MgSW50ZW50UmVjZWl2ZXJMZWFrZWQgZXh0ZW5kcyBBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiB7CisgICAgcHVibGljIEludGVudFJlY2VpdmVyTGVha2VkKFN0cmluZyBtc2cpIHsKKyAgICAgICAgc3VwZXIobXNnKTsKKyAgICB9Cit9CisKK2ZpbmFsIGNsYXNzIFNlcnZpY2VDb25uZWN0aW9uTGVha2VkIGV4dGVuZHMgQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24geworICAgIHB1YmxpYyBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZChTdHJpbmcgbXNnKSB7CisgICAgICAgIHN1cGVyKG1zZyk7CisgICAgfQorfQorCisvKioKKyAqIExvY2FsIHN0YXRlIG1haW50YWluZWQgYWJvdXQgYSBjdXJyZW50bHkgbG9hZGVkIC5hcGsuCisgKiBAaGlkZQorICovCitmaW5hbCBjbGFzcyBMb2FkZWRBcGsgeworCisgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eVRocmVhZCBtQWN0aXZpdHlUaHJlYWQ7CisgICAgcHJpdmF0ZSBmaW5hbCBBcHBsaWNhdGlvbkluZm8gbUFwcGxpY2F0aW9uSW5mbzsKKyAgICBmaW5hbCBTdHJpbmcgbVBhY2thZ2VOYW1lOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1BcHBEaXI7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbVJlc0RpcjsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZ1tdIG1TaGFyZWRMaWJyYXJpZXM7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbURhdGFEaXI7CisgICAgcHJpdmF0ZSBmaW5hbCBGaWxlIG1EYXRhRGlyRmlsZTsKKyAgICBwcml2YXRlIGZpbmFsIENsYXNzTG9hZGVyIG1CYXNlQ2xhc3NMb2FkZXI7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1TZWN1cml0eVZpb2xhdGlvbjsKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbUluY2x1ZGVDb2RlOworICAgIFJlc291cmNlcyBtUmVzb3VyY2VzOworICAgIHByaXZhdGUgQ2xhc3NMb2FkZXIgbUNsYXNzTG9hZGVyOworICAgIHByaXZhdGUgQXBwbGljYXRpb24gbUFwcGxpY2F0aW9uOworICAgIENvbXBhdGliaWxpdHlJbmZvIG1Db21wYXRpYmlsaXR5SW5mbzsKKworICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPj4gbVJlY2VpdmVycworICAgICAgICA9IG5ldyBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXI+PigpOworICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPj4gbVVucmVnaXN0ZXJlZFJlY2VpdmVycworICAgID0gbmV3IEhhc2hNYXA8Q29udGV4dCwgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcj4+KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4+IG1TZXJ2aWNlcworICAgICAgICA9IG5ldyBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4+KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4+IG1VbmJvdW5kU2VydmljZXMKKyAgICAgICAgPSBuZXcgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXI+PigpOworCisgICAgaW50IG1DbGllbnRDb3VudCA9IDA7CisKKyAgICBBcHBsaWNhdGlvbiBnZXRBcHBsaWNhdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIG1BcHBsaWNhdGlvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgTG9hZGVkQXBrKEFjdGl2aXR5VGhyZWFkIGFjdGl2aXR5VGhyZWFkLCBBcHBsaWNhdGlvbkluZm8gYUluZm8sCisgICAgICAgICAgICBBY3Rpdml0eVRocmVhZCBtYWluVGhyZWFkLCBDbGFzc0xvYWRlciBiYXNlTG9hZGVyLAorICAgICAgICAgICAgYm9vbGVhbiBzZWN1cml0eVZpb2xhdGlvbiwgYm9vbGVhbiBpbmNsdWRlQ29kZSkgeworICAgICAgICBtQWN0aXZpdHlUaHJlYWQgPSBhY3Rpdml0eVRocmVhZDsKKyAgICAgICAgbUFwcGxpY2F0aW9uSW5mbyA9IGFJbmZvOworICAgICAgICBtUGFja2FnZU5hbWUgPSBhSW5mby5wYWNrYWdlTmFtZTsKKyAgICAgICAgbUFwcERpciA9IGFJbmZvLnNvdXJjZURpcjsKKyAgICAgICAgbVJlc0RpciA9IGFJbmZvLnVpZCA9PSBQcm9jZXNzLm15VWlkKCkgPyBhSW5mby5zb3VyY2VEaXIKKyAgICAgICAgICAgICAgICA6IGFJbmZvLnB1YmxpY1NvdXJjZURpcjsKKyAgICAgICAgbVNoYXJlZExpYnJhcmllcyA9IGFJbmZvLnNoYXJlZExpYnJhcnlGaWxlczsKKyAgICAgICAgbURhdGFEaXIgPSBhSW5mby5kYXRhRGlyOworICAgICAgICBtRGF0YURpckZpbGUgPSBtRGF0YURpciAhPSBudWxsID8gbmV3IEZpbGUobURhdGFEaXIpIDogbnVsbDsKKyAgICAgICAgbUJhc2VDbGFzc0xvYWRlciA9IGJhc2VMb2FkZXI7CisgICAgICAgIG1TZWN1cml0eVZpb2xhdGlvbiA9IHNlY3VyaXR5VmlvbGF0aW9uOworICAgICAgICBtSW5jbHVkZUNvZGUgPSBpbmNsdWRlQ29kZTsKKyAgICAgICAgbUNvbXBhdGliaWxpdHlJbmZvID0gbmV3IENvbXBhdGliaWxpdHlJbmZvKGFJbmZvKTsKKworICAgICAgICBpZiAobUFwcERpciA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQubVN5c3RlbUNvbnRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5VGhyZWFkLm1TeXN0ZW1Db250ZXh0ID0KKyAgICAgICAgICAgICAgICAgICAgQ29udGV4dEltcGwuY3JlYXRlU3lzdGVtQ29udGV4dChtYWluVGhyZWFkKTsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5tU3lzdGVtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS51cGRhdGVDb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5UaHJlYWQuZ2V0Q29uZmlndXJhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5UaHJlYWQuZ2V0RGlzcGxheU1ldHJpY3NMb2NrZWQoZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJDcmVhdGVkIHN5c3RlbSByZXNvdXJjZXMgIgorICAgICAgICAgICAgICAgIC8vICAgICAgICArIG1TeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpICsgIjogIgorICAgICAgICAgICAgICAgIC8vICAgICAgICArIG1TeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtQ2xhc3NMb2FkZXIgPSBBY3Rpdml0eVRocmVhZC5tU3lzdGVtQ29udGV4dC5nZXRDbGFzc0xvYWRlcigpOworICAgICAgICAgICAgbVJlc291cmNlcyA9IEFjdGl2aXR5VGhyZWFkLm1TeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIExvYWRlZEFwayhBY3Rpdml0eVRocmVhZCBhY3Rpdml0eVRocmVhZCwgU3RyaW5nIG5hbWUsCisgICAgICAgICAgICBDb250ZXh0IHN5c3RlbUNvbnRleHQsIEFwcGxpY2F0aW9uSW5mbyBpbmZvKSB7CisgICAgICAgIG1BY3Rpdml0eVRocmVhZCA9IGFjdGl2aXR5VGhyZWFkOworICAgICAgICBtQXBwbGljYXRpb25JbmZvID0gaW5mbyAhPSBudWxsID8gaW5mbyA6IG5ldyBBcHBsaWNhdGlvbkluZm8oKTsKKyAgICAgICAgbUFwcGxpY2F0aW9uSW5mby5wYWNrYWdlTmFtZSA9IG5hbWU7CisgICAgICAgIG1QYWNrYWdlTmFtZSA9IG5hbWU7CisgICAgICAgIG1BcHBEaXIgPSBudWxsOworICAgICAgICBtUmVzRGlyID0gbnVsbDsKKyAgICAgICAgbVNoYXJlZExpYnJhcmllcyA9IG51bGw7CisgICAgICAgIG1EYXRhRGlyID0gbnVsbDsKKyAgICAgICAgbURhdGFEaXJGaWxlID0gbnVsbDsKKyAgICAgICAgbUJhc2VDbGFzc0xvYWRlciA9IG51bGw7CisgICAgICAgIG1TZWN1cml0eVZpb2xhdGlvbiA9IGZhbHNlOworICAgICAgICBtSW5jbHVkZUNvZGUgPSB0cnVlOworICAgICAgICBtQ2xhc3NMb2FkZXIgPSBzeXN0ZW1Db250ZXh0LmdldENsYXNzTG9hZGVyKCk7CisgICAgICAgIG1SZXNvdXJjZXMgPSBzeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICBtQ29tcGF0aWJpbGl0eUluZm8gPSBuZXcgQ29tcGF0aWJpbGl0eUluZm8obUFwcGxpY2F0aW9uSW5mbyk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRQYWNrYWdlTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG1QYWNrYWdlTmFtZTsKKyAgICB9CisKKyAgICBwdWJsaWMgQXBwbGljYXRpb25JbmZvIGdldEFwcGxpY2F0aW9uSW5mbygpIHsKKyAgICAgICAgcmV0dXJuIG1BcHBsaWNhdGlvbkluZm87CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNTZWN1cml0eVZpb2xhdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIG1TZWN1cml0eVZpb2xhdGlvbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBhcnJheSBvZiBzaGFyZWQgbGlicmFyaWVzIHRoYXQgYXJlIGxpc3RlZCBhcworICAgICAqIHVzZWQgYnkgdGhlIGdpdmVuIHBhY2thZ2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFja2FnZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgKG5vdGU6IG5vdCBpdHMKKyAgICAgKiBmaWxlIG5hbWUpCisgICAgICogQHJldHVybiBudWxsLW9rOyB0aGUgYXJyYXkgb2Ygc2hhcmVkIGxpYnJhcmllcywgZWFjaCBvbmUKKyAgICAgKiBhIGZ1bGx5LXF1YWxpZmllZCBwYXRoCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gZ2V0TGlicmFyaWVzRm9yKFN0cmluZyBwYWNrYWdlTmFtZSkgeworICAgICAgICBBcHBsaWNhdGlvbkluZm8gYWkgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYWkgPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLmdldEFwcGxpY2F0aW9uSW5mbyhwYWNrYWdlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZU1hbmFnZXIuR0VUX1NIQVJFRF9MSUJSQVJZX0ZJTEVTKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhaSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhaS5zaGFyZWRMaWJyYXJ5RmlsZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tYmluZXMgdHdvIGFycmF5cyAob2YgbGlicmFyeSBuYW1lcykgc3VjaCB0aGF0IHRoZXkgYXJlCisgICAgICogY29uY2F0ZW5hdGVkIGluIG9yZGVyIGJ1dCBhcmUgZGV2b2lkIG9mIGR1cGxpY2F0ZXMuIFRoZQorICAgICAqIHJlc3VsdCBpcyBhIHNpbmdsZSBzdHJpbmcgd2l0aCB0aGUgbmFtZXMgb2YgdGhlIGxpYnJhcmllcworICAgICAqIHNlcGFyYXRlZCBieSBjb2xvbnMsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIGJvdGggbGlzdHMKKyAgICAgKiB3ZXJlIDxjb2RlPm51bGw8L2NvZGU+IG9yIGVtcHR5LgorICAgICAqCisgICAgICogQHBhcmFtIGxpc3QxIG51bGwtb2s7IHRoZSBmaXJzdCBsaXN0CisgICAgICogQHBhcmFtIGxpc3QyIG51bGwtb2s7IHRoZSBzZWNvbmQgbGlzdAorICAgICAqIEByZXR1cm4gbnVsbC1vazsgdGhlIGNvbWJpbmF0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvbWJpbmVMaWJzKFN0cmluZ1tdIGxpc3QxLCBTdHJpbmdbXSBsaXN0MikgeworICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyKDMwMCk7CisgICAgICAgIGJvb2xlYW4gZmlyc3QgPSB0cnVlOworCisgICAgICAgIGlmIChsaXN0MSAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKFN0cmluZyBzIDogbGlzdDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc6Jyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBPbmx5IG5lZWQgdG8gY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaWYgbGlzdDEgd2FzIG5vbi1lbXB0eS4KKyAgICAgICAgYm9vbGVhbiBkdXBDaGVjayA9ICFmaXJzdDsKKworICAgICAgICBpZiAobGlzdDIgIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChTdHJpbmcgcyA6IGxpc3QyKSB7CisgICAgICAgICAgICAgICAgaWYgKGR1cENoZWNrICYmIEFycmF5VXRpbHMuY29udGFpbnMobGlzdDEsIHMpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgeworICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2xhc3NMb2FkZXIgZ2V0Q2xhc3NMb2FkZXIoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgaWYgKG1DbGFzc0xvYWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1DbGFzc0xvYWRlcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1JbmNsdWRlQ29kZSAmJiAhbVBhY2thZ2VOYW1lLmVxdWFscygiYW5kcm9pZCIpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHppcCA9IG1BcHBEaXI7CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRoZSBmb2xsb3dpbmcgaXMgYSBiaXQgb2YgYSBoYWNrIHRvIGluamVjdAorICAgICAgICAgICAgICAgICAqIGluc3RydW1lbnRhdGlvbiBpbnRvIHRoZSBzeXN0ZW06IElmIHRoZSBhcHAKKyAgICAgICAgICAgICAgICAgKiBiZWluZyBzdGFydGVkIG1hdGNoZXMgb25lIG9mIHRoZSBpbnN0cnVtZW50YXRpb24gbmFtZXMsCisgICAgICAgICAgICAgICAgICogdGhlbiB3ZSBjb21iaW5lIGJvdGggdGhlICJpbnN0cnVtZW50YXRpb24iIGFuZAorICAgICAgICAgICAgICAgICAqICJpbnN0cnVtZW50ZWQiIGFwcCBpbnRvIHRoZSBwYXRoLCBhbG9uZyB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAqIGNvbmNhdGVuYXRpb24gb2YgYm90aCBhcHBzJyBzaGFyZWQgbGlicmFyeSBsaXN0cy4KKyAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIFN0cmluZyBpbnN0cnVtZW50YXRpb25BcHBEaXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb25BcHBEaXI7CisgICAgICAgICAgICAgICAgU3RyaW5nIGluc3RydW1lbnRhdGlvbkFwcFBhY2thZ2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb25BcHBQYWNrYWdlOworICAgICAgICAgICAgICAgIFN0cmluZyBpbnN0cnVtZW50ZWRBcHBEaXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50ZWRBcHBEaXI7CisgICAgICAgICAgICAgICAgU3RyaW5nW10gaW5zdHJ1bWVudGF0aW9uTGlicyA9IG51bGw7CisKKyAgICAgICAgICAgICAgICBpZiAobUFwcERpci5lcXVhbHMoaW5zdHJ1bWVudGF0aW9uQXBwRGlyKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbUFwcERpci5lcXVhbHMoaW5zdHJ1bWVudGVkQXBwRGlyKSkgeworICAgICAgICAgICAgICAgICAgICB6aXAgPSBpbnN0cnVtZW50YXRpb25BcHBEaXIgKyAiOiIgKyBpbnN0cnVtZW50ZWRBcHBEaXI7CisgICAgICAgICAgICAgICAgICAgIGlmICghIGluc3RydW1lbnRlZEFwcERpci5lcXVhbHMoaW5zdHJ1bWVudGF0aW9uQXBwRGlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uTGlicyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGlicmFyaWVzRm9yKGluc3RydW1lbnRhdGlvbkFwcFBhY2thZ2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKChtU2hhcmVkTGlicmFyaWVzICE9IG51bGwpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAoaW5zdHJ1bWVudGF0aW9uTGlicyAhPSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICB6aXAgPQorICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZUxpYnMobVNoYXJlZExpYnJhcmllcywgaW5zdHJ1bWVudGF0aW9uTGlicykKKyAgICAgICAgICAgICAgICAgICAgICAgICsgJzonICsgemlwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogV2l0aCBhbGwgdGhlIGNvbWJpbmF0aW9uIGRvbmUgKGlmIG5lY2Vzc2FyeSwgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgKiBjcmVhdGUgdGhlIGNsYXNzIGxvYWRlci4KKyAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5sb2NhbExPR1YpIFNsb2cudihBY3Rpdml0eVRocmVhZC5UQUcsICJDbGFzcyBwYXRoOiAiICsgemlwKTsKKworICAgICAgICAgICAgICAgIG1DbGFzc0xvYWRlciA9CisgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uTG9hZGVycy5nZXREZWZhdWx0KCkuZ2V0Q2xhc3NMb2FkZXIoCisgICAgICAgICAgICAgICAgICAgICAgICB6aXAsIG1EYXRhRGlyLCBtQmFzZUNsYXNzTG9hZGVyKTsKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplSmF2YUNvbnRleHRDbGFzc0xvYWRlcigpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobUJhc2VDbGFzc0xvYWRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1DbGFzc0xvYWRlciA9IENsYXNzTG9hZGVyLmdldFN5c3RlbUNsYXNzTG9hZGVyKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUNsYXNzTG9hZGVyID0gbUJhc2VDbGFzc0xvYWRlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbUNsYXNzTG9hZGVyOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0dXAgdmFsdWUgZm9yIFRocmVhZC5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKS4gSWYgdGhlCisgICAgICogcGFja2FnZSB3aWxsIG5vdCBydW4gaW4gaW4gYSBWTSB3aXRoIG90aGVyIHBhY2thZ2VzLCB3ZSBzZXQKKyAgICAgKiB0aGUgSmF2YSBjb250ZXh0IENsYXNzTG9hZGVyIHRvIHRoZQorICAgICAqIFBhY2thZ2VJbmZvLmdldENsYXNzTG9hZGVyIHZhbHVlLiBIb3dldmVyLCBpZiB0aGlzIFZNIGNhbgorICAgICAqIGNvbnRhaW4gbXVsdGlwbGUgcGFja2FnZXMsIHdlIGludGVhZCBzZXQgdGhlIEphdmEgY29udGV4dAorICAgICAqIENsYXNzTG9hZGVyIHRvIGEgcHJveHkgdGhhdCB3aWxsIHdhcm4gYWJvdXQgdGhlIHVzZSBvZiBKYXZhCisgICAgICogY29udGV4dCBDbGFzc0xvYWRlcnMgYW5kIHRoZW4gZmFsbCB0aHJvdWdoIHRvIHVzZSB0aGUKKyAgICAgKiBzeXN0ZW0gQ2xhc3NMb2FkZXIuCisgICAgICoKKyAgICAgKiA8cD4gTm90ZSB0aGF0IHRoaXMgaXMgc2ltaWxhciB0byBidXQgbm90IHRoZSBzYW1lIGFzIHRoZQorICAgICAqIGFuZHJvaWQuY29udGVudC5Db250ZXh0LmdldENsYXNzTG9hZGVyKCkuIFdoaWxlIGJvdGgKKyAgICAgKiBjb250ZXh0IGNsYXNzIGxvYWRlcnMgYXJlIHR5cGljYWxseSBzZXQgdG8gdGhlCisgICAgICogUGF0aENsYXNzTG9hZGVyIHVzZWQgdG8gbG9hZCB0aGUgcGFja2FnZSBhcmNoaXZlIGluIHRoZQorICAgICAqIHNpbmdsZSBhcHBsaWNhdGlvbiBwZXIgVk0gY2FzZSwgYSBzaW5nbGUgQW5kcm9pZCBwcm9jZXNzCisgICAgICogbWF5IGNvbnRhaW4gc2V2ZXJhbCBDb250ZXh0cyBleGVjdXRpbmcgb24gb25lIHRocmVhZCB3aXRoCisgICAgICogdGhlaXIgb3duIGxvZ2ljYWwgQ2xhc3NMb2FkZXJzIHdoaWxlIHRoZSBKYXZhIGNvbnRleHQKKyAgICAgKiBDbGFzc0xvYWRlciBpcyBhIHRocmVhZCBsb2NhbC4gVGhpcyBpcyB3aHkgaW4gdGhlIGNhc2Ugd2hlbgorICAgICAqIHdlIGhhdmUgbXVsdGlwbGUgcGFja2FnZXMgcGVyIFZNIHdlIGRvIG5vdCBzZXQgdGhlIEphdmEKKyAgICAgKiBjb250ZXh0IENsYXNzTG9hZGVyIHRvIGFuIGFyYml0cmFyeSBidXQgaW5zdGVhZCB3YXJuIHRoZQorICAgICAqIHVzZXIgdG8gc2V0IHRoZWlyIG93biBpZiB3ZSBkZXRlY3QgdGhhdCB0aGV5IGFyZSB1c2luZyBhCisgICAgICogSmF2YSBsaWJyYXJ5IHRoYXQgZXhwZWN0cyBpdCB0byBiZSBzZXQuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVKYXZhQ29udGV4dENsYXNzTG9hZGVyKCkgeworICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm8gcGk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBwaSA9IHBtLmdldFBhY2thZ2VJbmZvKG1QYWNrYWdlTmFtZSwgMCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoZSk7CisgICAgICAgIH0KKyAgICAgICAgLyoKKyAgICAgICAgICogVHdvIHBvc3NpYmxlIGluZGljYXRpb25zIHRoYXQgdGhpcyBwYWNrYWdlIGNvdWxkIGJlCisgICAgICAgICAqIHNoYXJpbmcgaXRzIHZpcnR1YWwgbWFjaGluZSB3aXRoIG90aGVyIHBhY2thZ2VzOgorICAgICAgICAgKgorICAgICAgICAgKiAxLikgdGhlIHNoYXJlZFVzZXJJZCBhdHRyaWJ1dGUgaXMgc2V0IGluIHRoZSBtYW5pZmVzdCwKKyAgICAgICAgICogICAgIGluZGljYXRpbmcgYSByZXF1ZXN0IHRvIHNoYXJlIGEgVk0gd2l0aCBvdGhlcgorICAgICAgICAgKiAgICAgcGFja2FnZXMgd2l0aCB0aGUgc2FtZSBzaGFyZWRVc2VySWQuCisgICAgICAgICAqCisgICAgICAgICAqIDIuKSB0aGUgYXBwbGljYXRpb24gZWxlbWVudCBvZiB0aGUgbWFuaWZlc3QgaGFzIGFuCisgICAgICAgICAqICAgICBhdHRyaWJ1dGUgc3BlY2lmeWluZyBhIG5vbi1kZWZhdWx0IHByb2Nlc3MgbmFtZSwKKyAgICAgICAgICogICAgIGluZGljYXRpbmcgdGhlIGRlc2lyZSB0byBydW4gaW4gYW5vdGhlciBwYWNrYWdlcyBWTS4KKyAgICAgICAgICovCisgICAgICAgIGJvb2xlYW4gc2hhcmVkVXNlcklkU2V0ID0gKHBpLnNoYXJlZFVzZXJJZCAhPSBudWxsKTsKKyAgICAgICAgYm9vbGVhbiBwcm9jZXNzTmFtZU5vdERlZmF1bHQgPQorICAgICAgICAgICAgKHBpLmFwcGxpY2F0aW9uSW5mbyAhPSBudWxsICYmCisgICAgICAgICAgICAgIW1QYWNrYWdlTmFtZS5lcXVhbHMocGkuYXBwbGljYXRpb25JbmZvLnByb2Nlc3NOYW1lKSk7CisgICAgICAgIGJvb2xlYW4gc2hhcmFibGUgPSAoc2hhcmVkVXNlcklkU2V0IHx8IHByb2Nlc3NOYW1lTm90RGVmYXVsdCk7CisgICAgICAgIENsYXNzTG9hZGVyIGNvbnRleHRDbGFzc0xvYWRlciA9CisgICAgICAgICAgICAoc2hhcmFibGUpCisgICAgICAgICAgICA/IG5ldyBXYXJuaW5nQ29udGV4dENsYXNzTG9hZGVyKCkKKyAgICAgICAgICAgIDogbUNsYXNzTG9hZGVyOworICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihjb250ZXh0Q2xhc3NMb2FkZXIpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFdhcm5pbmdDb250ZXh0Q2xhc3NMb2FkZXIgZXh0ZW5kcyBDbGFzc0xvYWRlciB7CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiB3YXJuZWQgPSBmYWxzZTsKKworICAgICAgICBwcml2YXRlIHZvaWQgd2FybihTdHJpbmcgbWV0aG9kTmFtZSkgeworICAgICAgICAgICAgaWYgKHdhcm5lZCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdhcm5lZCA9IHRydWU7CisgICAgICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihnZXRQYXJlbnQoKSk7CisgICAgICAgICAgICBTbG9nLncoQWN0aXZpdHlUaHJlYWQuVEFHLCAiQ2xhc3NMb2FkZXIuIiArIG1ldGhvZE5hbWUgKyAiOiAiICsKKyAgICAgICAgICAgICAgICAgICJUaGUgY2xhc3MgbG9hZGVyIHJldHVybmVkIGJ5ICIgKworICAgICAgICAgICAgICAgICAgIlRocmVhZC5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKSBtYXkgZmFpbCBmb3IgcHJvY2Vzc2VzICIgKworICAgICAgICAgICAgICAgICAgInRoYXQgaG9zdCBtdWx0aXBsZSBhcHBsaWNhdGlvbnMuIFlvdSBzaG91bGQgZXhwbGljaXRseSAiICsKKyAgICAgICAgICAgICAgICAgICJzcGVjaWZ5IGEgY29udGV4dCBjbGFzcyBsb2FkZXIuIEZvciBleGFtcGxlOiAiICsKKyAgICAgICAgICAgICAgICAgICJUaHJlYWQuc2V0Q29udGV4dENsYXNzTG9hZGVyKGdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSk7Iik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIFVSTCBnZXRSZXNvdXJjZShTdHJpbmcgcmVzTmFtZSkgeworICAgICAgICAgICAgd2FybigiZ2V0UmVzb3VyY2UiKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQoKS5nZXRSZXNvdXJjZShyZXNOYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgRW51bWVyYXRpb248VVJMPiBnZXRSZXNvdXJjZXMoU3RyaW5nIHJlc05hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICB3YXJuKCJnZXRSZXNvdXJjZXMiKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQoKS5nZXRSZXNvdXJjZXMocmVzTmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIElucHV0U3RyZWFtIGdldFJlc291cmNlQXNTdHJlYW0oU3RyaW5nIHJlc05hbWUpIHsKKyAgICAgICAgICAgIHdhcm4oImdldFJlc291cmNlQXNTdHJlYW0iKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKHJlc05hbWUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyBDbGFzczw/PiBsb2FkQ2xhc3MoU3RyaW5nIGNsYXNzTmFtZSkgdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICAgICAgd2FybigibG9hZENsYXNzIik7CisgICAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50KCkubG9hZENsYXNzKGNsYXNzTmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgc2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMoU3RyaW5nIGNuYW1lLCBib29sZWFuIGVuYWJsZSkgeworICAgICAgICAgICAgd2Fybigic2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMiKTsKKyAgICAgICAgICAgIGdldFBhcmVudCgpLnNldENsYXNzQXNzZXJ0aW9uU3RhdHVzKGNuYW1lLCBlbmFibGUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIHNldFBhY2thZ2VBc3NlcnRpb25TdGF0dXMoU3RyaW5nIHBuYW1lLCBib29sZWFuIGVuYWJsZSkgeworICAgICAgICAgICAgd2Fybigic2V0UGFja2FnZUFzc2VydGlvblN0YXR1cyIpOworICAgICAgICAgICAgZ2V0UGFyZW50KCkuc2V0UGFja2FnZUFzc2VydGlvblN0YXR1cyhwbmFtZSwgZW5hYmxlKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBzZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzKGJvb2xlYW4gZW5hYmxlKSB7CisgICAgICAgICAgICB3YXJuKCJzZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzIik7CisgICAgICAgICAgICBnZXRQYXJlbnQoKS5zZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzKGVuYWJsZSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgY2xlYXJBc3NlcnRpb25TdGF0dXMoKSB7CisgICAgICAgICAgICB3YXJuKCJjbGVhckFzc2VydGlvblN0YXR1cyIpOworICAgICAgICAgICAgZ2V0UGFyZW50KCkuY2xlYXJBc3NlcnRpb25TdGF0dXMoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0QXBwRGlyKCkgeworICAgICAgICByZXR1cm4gbUFwcERpcjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFJlc0RpcigpIHsKKyAgICAgICAgcmV0dXJuIG1SZXNEaXI7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXREYXRhRGlyKCkgeworICAgICAgICByZXR1cm4gbURhdGFEaXI7CisgICAgfQorCisgICAgcHVibGljIEZpbGUgZ2V0RGF0YURpckZpbGUoKSB7CisgICAgICAgIHJldHVybiBtRGF0YURpckZpbGU7CisgICAgfQorCisgICAgcHVibGljIEFzc2V0TWFuYWdlciBnZXRBc3NldHMoQWN0aXZpdHlUaHJlYWQgbWFpblRocmVhZCkgeworICAgICAgICByZXR1cm4gZ2V0UmVzb3VyY2VzKG1haW5UaHJlYWQpLmdldEFzc2V0cygpOworICAgIH0KKworICAgIHB1YmxpYyBSZXNvdXJjZXMgZ2V0UmVzb3VyY2VzKEFjdGl2aXR5VGhyZWFkIG1haW5UaHJlYWQpIHsKKyAgICAgICAgaWYgKG1SZXNvdXJjZXMgPT0gbnVsbCkgeworICAgICAgICAgICAgbVJlc291cmNlcyA9IG1haW5UaHJlYWQuZ2V0VG9wTGV2ZWxSZXNvdXJjZXMobVJlc0RpciwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1SZXNvdXJjZXM7CisgICAgfQorCisgICAgcHVibGljIEFwcGxpY2F0aW9uIG1ha2VBcHBsaWNhdGlvbihib29sZWFuIGZvcmNlRGVmYXVsdEFwcENsYXNzLAorICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uIGluc3RydW1lbnRhdGlvbikgeworICAgICAgICBpZiAobUFwcGxpY2F0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBtQXBwbGljYXRpb247CisgICAgICAgIH0KKworICAgICAgICBBcHBsaWNhdGlvbiBhcHAgPSBudWxsOworCisgICAgICAgIFN0cmluZyBhcHBDbGFzcyA9IG1BcHBsaWNhdGlvbkluZm8uY2xhc3NOYW1lOworICAgICAgICBpZiAoZm9yY2VEZWZhdWx0QXBwQ2xhc3MgfHwgKGFwcENsYXNzID09IG51bGwpKSB7CisgICAgICAgICAgICBhcHBDbGFzcyA9ICJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiI7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzTG9hZGVyIGNsID0gZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICAgICAgICAgIENvbnRleHRJbXBsIGFwcENvbnRleHQgPSBuZXcgQ29udGV4dEltcGwoKTsKKyAgICAgICAgICAgIGFwcENvbnRleHQuaW5pdCh0aGlzLCBudWxsLCBtQWN0aXZpdHlUaHJlYWQpOworICAgICAgICAgICAgYXBwID0gbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb24ubmV3QXBwbGljYXRpb24oCisgICAgICAgICAgICAgICAgICAgIGNsLCBhcHBDbGFzcywgYXBwQ29udGV4dCk7CisgICAgICAgICAgICBhcHBDb250ZXh0LnNldE91dGVyQ29udGV4dChhcHApOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgaWYgKCFtQWN0aXZpdHlUaHJlYWQubUluc3RydW1lbnRhdGlvbi5vbkV4Y2VwdGlvbihhcHAsIGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gaW5zdGFudGlhdGUgYXBwbGljYXRpb24gIiArIGFwcENsYXNzCisgICAgICAgICAgICAgICAgICAgICsgIjogIiArIGUudG9TdHJpbmcoKSwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1BbGxBcHBsaWNhdGlvbnMuYWRkKGFwcCk7CisgICAgICAgIG1BcHBsaWNhdGlvbiA9IGFwcDsKKworICAgICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLmNhbGxBcHBsaWNhdGlvbk9uQ3JlYXRlKGFwcCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGlmICghaW5zdHJ1bWVudGF0aW9uLm9uRXhjZXB0aW9uKGFwcCwgZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNyZWF0ZSBhcHBsaWNhdGlvbiAiICsgYXBwLmdldENsYXNzKCkuZ2V0TmFtZSgpCisgICAgICAgICAgICAgICAgICAgICAgICArICI6ICIgKyBlLnRvU3RyaW5nKCksIGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGFwcDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVDb250ZXh0UmVnaXN0cmF0aW9ucyhDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICBTdHJpbmcgd2hvLCBTdHJpbmcgd2hhdCkgeworICAgICAgICBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPiBybWFwID0KKyAgICAgICAgICAgIG1SZWNlaXZlcnMucmVtb3ZlKGNvbnRleHQpOworICAgICAgICBpZiAocm1hcCAhPSBudWxsKSB7CisgICAgICAgICAgICBJdGVyYXRvcjxMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPiBpdCA9IHJtYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyIHJkID0gaXQubmV4dCgpOworICAgICAgICAgICAgICAgIEludGVudFJlY2VpdmVyTGVha2VkIGxlYWsgPSBuZXcgSW50ZW50UmVjZWl2ZXJMZWFrZWQoCisgICAgICAgICAgICAgICAgICAgICAgICB3aGF0ICsgIiAiICsgd2hvICsgIiBoYXMgbGVha2VkIEludGVudFJlY2VpdmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgcmQuZ2V0SW50ZW50UmVjZWl2ZXIoKSArICIgdGhhdCB3YXMgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAib3JpZ2luYWxseSByZWdpc3RlcmVkIGhlcmUuIEFyZSB5b3UgbWlzc2luZyBhICIgKworICAgICAgICAgICAgICAgICAgICAgICAgImNhbGwgdG8gdW5yZWdpc3RlclJlY2VpdmVyKCk/Iik7CisgICAgICAgICAgICAgICAgbGVhay5zZXRTdGFja1RyYWNlKHJkLmdldExvY2F0aW9uKCkuZ2V0U3RhY2tUcmFjZSgpKTsKKyAgICAgICAgICAgICAgICBTbG9nLmUoQWN0aXZpdHlUaHJlYWQuVEFHLCBsZWFrLmdldE1lc3NhZ2UoKSwgbGVhayk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS51bnJlZ2lzdGVyUmVjZWl2ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmQuZ2V0SUludGVudFJlY2VpdmVyKCkpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbSBjcmFzaGVkLCBub3RoaW5nIHdlIGNhbiBkbworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtVW5yZWdpc3RlcmVkUmVjZWl2ZXJzLnJlbW92ZShjb250ZXh0KTsKKyAgICAgICAgLy9TbG9nLmkoVEFHLCAiUmVjZWl2ZXIgcmVnaXN0cmF0aW9uczogIiArIG1SZWNlaXZlcnMpOworICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXI+IHNtYXAgPQorICAgICAgICAgICAgbVNlcnZpY2VzLnJlbW92ZShjb250ZXh0KTsKKyAgICAgICAgaWYgKHNtYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgSXRlcmF0b3I8TG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPiBpdCA9IHNtYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXIgc2QgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgbGVhayA9IG5ldyBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgKyAiICIgKyB3aG8gKyAiIGhhcyBsZWFrZWQgU2VydmljZUNvbm5lY3Rpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBzZC5nZXRTZXJ2aWNlQ29ubmVjdGlvbigpICsgIiB0aGF0IHdhcyBvcmlnaW5hbGx5IGJvdW5kIGhlcmUiKTsKKyAgICAgICAgICAgICAgICBsZWFrLnNldFN0YWNrVHJhY2Uoc2QuZ2V0TG9jYXRpb24oKS5nZXRTdGFja1RyYWNlKCkpOworICAgICAgICAgICAgICAgIFNsb2cuZShBY3Rpdml0eVRocmVhZC5UQUcsIGxlYWsuZ2V0TWVzc2FnZSgpLCBsZWFrKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnVuYmluZFNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2QuZ2V0SVNlcnZpY2VDb25uZWN0aW9uKCkpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbSBjcmFzaGVkLCBub3RoaW5nIHdlIGNhbiBkbworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZC5kb0ZvcmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1VbmJvdW5kU2VydmljZXMucmVtb3ZlKGNvbnRleHQpOworICAgICAgICAvL1Nsb2cuaShUQUcsICJTZXJ2aWNlIHJlZ2lzdHJhdGlvbnM6ICIgKyBtU2VydmljZXMpOworICAgIH0KKworICAgIHB1YmxpYyBJSW50ZW50UmVjZWl2ZXIgZ2V0UmVjZWl2ZXJEaXNwYXRjaGVyKEJyb2FkY2FzdFJlY2VpdmVyIHIsCisgICAgICAgICAgICBDb250ZXh0IGNvbnRleHQsIEhhbmRsZXIgaGFuZGxlciwKKyAgICAgICAgICAgIEluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50YXRpb24sIGJvb2xlYW4gcmVnaXN0ZXJlZCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1SZWNlaXZlcnMpIHsKKyAgICAgICAgICAgIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXIgcmQgPSBudWxsOworICAgICAgICAgICAgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcj4gbWFwID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChyZWdpc3RlcmVkKSB7CisgICAgICAgICAgICAgICAgbWFwID0gbVJlY2VpdmVycy5nZXQoY29udGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKG1hcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHJkID0gbWFwLmdldChyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJkID0gbmV3IFJlY2VpdmVyRGlzcGF0Y2hlcihyLCBjb250ZXh0LCBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLCByZWdpc3RlcmVkKTsKKyAgICAgICAgICAgICAgICBpZiAocmVnaXN0ZXJlZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWFwID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcCA9IG5ldyBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPigpOworICAgICAgICAgICAgICAgICAgICAgICAgbVJlY2VpdmVycy5wdXQoY29udGV4dCwgbWFwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtYXAucHV0KHIsIHJkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJkLnZhbGlkYXRlKGNvbnRleHQsIGhhbmRsZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJkLmdldElJbnRlbnRSZWNlaXZlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIElJbnRlbnRSZWNlaXZlciBmb3JnZXRSZWNlaXZlckRpc3BhdGNoZXIoQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgQnJvYWRjYXN0UmVjZWl2ZXIgcikgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1SZWNlaXZlcnMpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXI+IG1hcCA9IG1SZWNlaXZlcnMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlciByZCA9IG51bGw7CisgICAgICAgICAgICBpZiAobWFwICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZCA9IG1hcC5nZXQocik7CisgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnJlbW92ZShyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hcC5zaXplKCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVJlY2VpdmVycy5yZW1vdmUoY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHIuZ2V0RGVidWdVbnJlZ2lzdGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXI+IGhvbGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1VbnJlZ2lzdGVyZWRSZWNlaXZlcnMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvbGRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGVyID0gbmV3IEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXI+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVucmVnaXN0ZXJlZFJlY2VpdmVycy5wdXQoY29udGV4dCwgaG9sZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZXggPSBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JpZ2luYWxseSB1bnJlZ2lzdGVyZWQgaGVyZToiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4LmZpbGxJblN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJkLnNldFVucmVnaXN0ZXJMb2NhdGlvbihleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBob2xkZXIucHV0KHIsIHJkKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmQuZ2V0SUludGVudFJlY2VpdmVyKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcj4gaG9sZGVyCisgICAgICAgICAgICAgICAgICAgID0gbVVucmVnaXN0ZXJlZFJlY2VpdmVycy5nZXQoY29udGV4dCk7CisgICAgICAgICAgICBpZiAoaG9sZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZCA9IGhvbGRlci5nZXQocik7CisgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBleCA9IHJkLmdldFVucmVnaXN0ZXJMb2NhdGlvbigpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbnJlZ2lzdGVyaW5nIFJlY2VpdmVyICIgKyByCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRoYXQgd2FzIGFscmVhZHkgdW5yZWdpc3RlcmVkIiwgZXgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmJpbmRpbmcgUmVjZWl2ZXIgIiArIHIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBmcm9tIENvbnRleHQgdGhhdCBpcyBubyBsb25nZXIgaW4gdXNlOiAiICsgY29udGV4dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlJlY2VpdmVyIG5vdCByZWdpc3RlcmVkOiAiICsgcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBSZWNlaXZlckRpc3BhdGNoZXIgeworCisgICAgICAgIGZpbmFsIHN0YXRpYyBjbGFzcyBJbm5lclJlY2VpdmVyIGV4dGVuZHMgSUludGVudFJlY2VpdmVyLlN0dWIgeworICAgICAgICAgICAgZmluYWwgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPiBtRGlzcGF0Y2hlcjsKKyAgICAgICAgICAgIGZpbmFsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXIgbVN0cm9uZ1JlZjsKKworICAgICAgICAgICAgSW5uZXJSZWNlaXZlcihMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyIHJkLCBib29sZWFuIHN0cm9uZykgeworICAgICAgICAgICAgICAgIG1EaXNwYXRjaGVyID0gbmV3IFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcj4ocmQpOworICAgICAgICAgICAgICAgIG1TdHJvbmdSZWYgPSBzdHJvbmcgPyByZCA6IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBwZXJmb3JtUmVjZWl2ZShJbnRlbnQgaW50ZW50LCBpbnQgcmVzdWx0Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRhdGEsIEJ1bmRsZSBleHRyYXMsIGJvb2xlYW4gb3JkZXJlZCwgYm9vbGVhbiBzdGlja3kpIHsKKyAgICAgICAgICAgICAgICBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyIHJkID0gbURpc3BhdGNoZXIuZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKEFjdGl2aXR5VGhyZWFkLkRFQlVHX0JST0FEQ0FTVCkgeworICAgICAgICAgICAgICAgICAgICBpbnQgc2VxID0gaW50ZW50LmdldEludEV4dHJhKCJzZXEiLCAtMSk7CisgICAgICAgICAgICAgICAgICAgIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsICJSZWNlaXZpbmcgYnJvYWRjYXN0ICIgKyBpbnRlbnQuZ2V0QWN0aW9uKCkgKyAiIHNlcT0iICsgc2VxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRvICIgKyAocmQgIT0gbnVsbCA/IHJkLm1SZWNlaXZlciA6IG51bGwpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmQucGVyZm9ybVJlY2VpdmUoaW50ZW50LCByZXN1bHRDb2RlLCBkYXRhLCBleHRyYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJlZCwgc3RpY2t5KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgbWFuYWdlciBkaXNwYXRjaGVkIGEgYnJvYWRjYXN0IHRvIGEgcmVnaXN0ZXJlZAorICAgICAgICAgICAgICAgICAgICAvLyByZWNlaXZlciBpbiB0aGlzIHByb2Nlc3MsIGJ1dCBiZWZvcmUgaXQgY291bGQgYmUgZGVsaXZlcmVkIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyByZWNlaXZlciB3YXMgdW5yZWdpc3RlcmVkLiAgQWNrbm93bGVkZ2UgdGhlIGJyb2FkY2FzdCBvbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVoYWxmIHNvIHRoYXQgdGhlIHN5c3RlbSdzIGJyb2FkY2FzdCBzZXF1ZW5jZSBjYW4gY29udGludWUuCisgICAgICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5ERUJVR19CUk9BRENBU1QpIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmlzaGluZyBicm9hZGNhc3QgdG8gdW5yZWdpc3RlcmVkIHJlY2VpdmVyIik7CisgICAgICAgICAgICAgICAgICAgIElBY3Rpdml0eU1hbmFnZXIgbWdyID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcih0aGlzLCByZXN1bHRDb2RlLCBkYXRhLCBleHRyYXMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhBY3Rpdml0eVRocmVhZC5UQUcsICJDb3VsZG4ndCBmaW5pc2ggYnJvYWRjYXN0IHRvIHVucmVnaXN0ZXJlZCByZWNlaXZlciIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZmluYWwgSUludGVudFJlY2VpdmVyLlN0dWIgbUlJbnRlbnRSZWNlaXZlcjsKKyAgICAgICAgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbVJlY2VpdmVyOworICAgICAgICBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgICAgICBmaW5hbCBIYW5kbGVyIG1BY3Rpdml0eVRocmVhZDsKKyAgICAgICAgZmluYWwgSW5zdHJ1bWVudGF0aW9uIG1JbnN0cnVtZW50YXRpb247CisgICAgICAgIGZpbmFsIGJvb2xlYW4gbVJlZ2lzdGVyZWQ7CisgICAgICAgIGZpbmFsIEludGVudFJlY2VpdmVyTGVha2VkIG1Mb2NhdGlvbjsKKyAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBtVW5yZWdpc3RlckxvY2F0aW9uOworCisgICAgICAgIGZpbmFsIGNsYXNzIEFyZ3MgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgICAgICAgICAgICBwcml2YXRlIEludGVudCBtQ3VySW50ZW50OworICAgICAgICAgICAgcHJpdmF0ZSBpbnQgbUN1ckNvZGU7CisgICAgICAgICAgICBwcml2YXRlIFN0cmluZyBtQ3VyRGF0YTsKKyAgICAgICAgICAgIHByaXZhdGUgQnVuZGxlIG1DdXJNYXA7CisgICAgICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUN1ck9yZGVyZWQ7CisgICAgICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUN1clN0aWNreTsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIEJyb2FkY2FzdFJlY2VpdmVyIHJlY2VpdmVyID0gbVJlY2VpdmVyOworICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5ERUJVR19CUk9BRENBU1QpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHNlcSA9IG1DdXJJbnRlbnQuZ2V0SW50RXh0cmEoInNlcSIsIC0xKTsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy5pKEFjdGl2aXR5VGhyZWFkLlRBRywgIkRpc3BhdGNoaW5nIGJyb2FkY2FzdCAiICsgbUN1ckludGVudC5nZXRBY3Rpb24oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBzZXE9IiArIHNlcSArICIgdG8gIiArIG1SZWNlaXZlcik7CisgICAgICAgICAgICAgICAgICAgIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsICIgIG1SZWdpc3RlcmVkPSIgKyBtUmVnaXN0ZXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBtQ3VyT3JkZXJlZD0iICsgbUN1ck9yZGVyZWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIG1nciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG1DdXJJbnRlbnQ7CisgICAgICAgICAgICAgICAgbUN1ckludGVudCA9IG51bGw7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHJlY2VpdmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1SZWdpc3RlcmVkICYmIG1DdXJPcmRlcmVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5ERUJVR19CUk9BRENBU1QpIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIG51bGwgYnJvYWRjYXN0IHRvICIgKyBtUmVjZWl2ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcihtSUludGVudFJlY2VpdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckNvZGUsIG1DdXJEYXRhLCBtQ3VyTWFwLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgQ2xhc3NMb2FkZXIgY2wgPSAgbVJlY2VpdmVyLmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZW50LnNldEV4dHJhc0NsYXNzTG9hZGVyKGNsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1DdXJNYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUN1ck1hcC5zZXRDbGFzc0xvYWRlcihjbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuc2V0T3JkZXJlZEhpbnQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLnNldFJlc3VsdChtQ3VyQ29kZSwgbUN1ckRhdGEsIG1DdXJNYXApOworICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5jbGVhckFib3J0QnJvYWRjYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLnNldE9yZGVyZWRIaW50KG1DdXJPcmRlcmVkKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuc2V0SW5pdGlhbFN0aWNreUhpbnQobUN1clN0aWNreSk7CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLm9uUmVjZWl2ZShtQ29udGV4dCwgaW50ZW50KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobVJlZ2lzdGVyZWQgJiYgbUN1ck9yZGVyZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFjdGl2aXR5VGhyZWFkLkRFQlVHX0JST0FEQ0FTVCkgU2xvZy5pKEFjdGl2aXR5VGhyZWFkLlRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5pc2hpbmcgZmFpbGVkIGJyb2FkY2FzdCB0byAiICsgbVJlY2VpdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZ3IuZmluaXNoUmVjZWl2ZXIobUlJbnRlbnRSZWNlaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJDb2RlLCBtQ3VyRGF0YSwgbUN1ck1hcCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1JbnN0cnVtZW50YXRpb24gPT0gbnVsbCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFtSW5zdHJ1bWVudGF0aW9uLm9uRXhjZXB0aW9uKG1SZWNlaXZlciwgZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByZWNlaXZpbmcgYnJvYWRjYXN0ICIgKyBpbnRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgaW4gIiArIG1SZWNlaXZlciwgZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1SZWdpc3RlcmVkICYmIG1DdXJPcmRlcmVkKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQuREVCVUdfQlJPQURDQVNUKSBTbG9nLmkoQWN0aXZpdHlUaHJlYWQuVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIGJyb2FkY2FzdCB0byAiICsgbVJlY2VpdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcihtSUludGVudFJlY2VpdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5nZXRSZXN1bHRDb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLmdldFJlc3VsdERhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuZ2V0UmVzdWx0RXh0cmFzKGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuZ2V0QWJvcnRCcm9hZGNhc3QoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUmVjZWl2ZXJEaXNwYXRjaGVyKEJyb2FkY2FzdFJlY2VpdmVyIHJlY2VpdmVyLCBDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgSGFuZGxlciBhY3Rpdml0eVRocmVhZCwgSW5zdHJ1bWVudGF0aW9uIGluc3RydW1lbnRhdGlvbiwKKyAgICAgICAgICAgICAgICBib29sZWFuIHJlZ2lzdGVyZWQpIHsKKyAgICAgICAgICAgIGlmIChhY3Rpdml0eVRocmVhZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJIYW5kbGVyIG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUlJbnRlbnRSZWNlaXZlciA9IG5ldyBJbm5lclJlY2VpdmVyKHRoaXMsICFyZWdpc3RlcmVkKTsKKyAgICAgICAgICAgIG1SZWNlaXZlciA9IHJlY2VpdmVyOworICAgICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkID0gYWN0aXZpdHlUaHJlYWQ7CisgICAgICAgICAgICBtSW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1bWVudGF0aW9uOworICAgICAgICAgICAgbVJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkOworICAgICAgICAgICAgbUxvY2F0aW9uID0gbmV3IEludGVudFJlY2VpdmVyTGVha2VkKG51bGwpOworICAgICAgICAgICAgbUxvY2F0aW9uLmZpbGxJblN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdmFsaWRhdGUoQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGFjdGl2aXR5VGhyZWFkKSB7CisgICAgICAgICAgICBpZiAobUNvbnRleHQgIT0gY29udGV4dCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJSZWNlaXZlciAiICsgbVJlY2VpdmVyICsKKyAgICAgICAgICAgICAgICAgICAgIiByZWdpc3RlcmVkIHdpdGggZGlmZmVyaW5nIENvbnRleHQgKHdhcyAiICsKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQgKyAiIG5vdyAiICsgY29udGV4dCArICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUFjdGl2aXR5VGhyZWFkICE9IGFjdGl2aXR5VGhyZWFkKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlJlY2VpdmVyICIgKyBtUmVjZWl2ZXIgKworICAgICAgICAgICAgICAgICAgICAiIHJlZ2lzdGVyZWQgd2l0aCBkaWZmZXJpbmcgaGFuZGxlciAod2FzICIgKworICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQgKyAiIG5vdyAiICsgYWN0aXZpdHlUaHJlYWQgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgSW50ZW50UmVjZWl2ZXJMZWFrZWQgZ2V0TG9jYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbUxvY2F0aW9uOworICAgICAgICB9CisKKyAgICAgICAgQnJvYWRjYXN0UmVjZWl2ZXIgZ2V0SW50ZW50UmVjZWl2ZXIoKSB7CisgICAgICAgICAgICByZXR1cm4gbVJlY2VpdmVyOworICAgICAgICB9CisKKyAgICAgICAgSUludGVudFJlY2VpdmVyIGdldElJbnRlbnRSZWNlaXZlcigpIHsKKyAgICAgICAgICAgIHJldHVybiBtSUludGVudFJlY2VpdmVyOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRVbnJlZ2lzdGVyTG9jYXRpb24oUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgbVVucmVnaXN0ZXJMb2NhdGlvbiA9IGV4OworICAgICAgICB9CisKKyAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBnZXRVbnJlZ2lzdGVyTG9jYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbVVucmVnaXN0ZXJMb2NhdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHBlcmZvcm1SZWNlaXZlKEludGVudCBpbnRlbnQsIGludCByZXN1bHRDb2RlLAorICAgICAgICAgICAgICAgIFN0cmluZyBkYXRhLCBCdW5kbGUgZXh0cmFzLCBib29sZWFuIG9yZGVyZWQsIGJvb2xlYW4gc3RpY2t5KSB7CisgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQuREVCVUdfQlJPQURDQVNUKSB7CisgICAgICAgICAgICAgICAgaW50IHNlcSA9IGludGVudC5nZXRJbnRFeHRyYSgic2VxIiwgLTEpOworICAgICAgICAgICAgICAgIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsICJFbnF1ZXVlaW5nIGJyb2FkY2FzdCAiICsgaW50ZW50LmdldEFjdGlvbigpICsgIiBzZXE9IiArIHNlcQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRvICIgKyBtUmVjZWl2ZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQXJncyBhcmdzID0gbmV3IEFyZ3MoKTsKKyAgICAgICAgICAgIGFyZ3MubUN1ckludGVudCA9IGludGVudDsKKyAgICAgICAgICAgIGFyZ3MubUN1ckNvZGUgPSByZXN1bHRDb2RlOworICAgICAgICAgICAgYXJncy5tQ3VyRGF0YSA9IGRhdGE7CisgICAgICAgICAgICBhcmdzLm1DdXJNYXAgPSBleHRyYXM7CisgICAgICAgICAgICBhcmdzLm1DdXJPcmRlcmVkID0gb3JkZXJlZDsKKyAgICAgICAgICAgIGFyZ3MubUN1clN0aWNreSA9IHN0aWNreTsKKyAgICAgICAgICAgIGlmICghbUFjdGl2aXR5VGhyZWFkLnBvc3QoYXJncykpIHsKKyAgICAgICAgICAgICAgICBpZiAobVJlZ2lzdGVyZWQgJiYgb3JkZXJlZCkgeworICAgICAgICAgICAgICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIG1nciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQuREVCVUdfQlJPQURDQVNUKSBTbG9nLmkoQWN0aXZpdHlUaHJlYWQuVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIHN5bmMgYnJvYWRjYXN0IHRvICIgKyBtUmVjZWl2ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgbWdyLmZpbmlzaFJlY2VpdmVyKG1JSW50ZW50UmVjZWl2ZXIsIGFyZ3MubUN1ckNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubUN1ckRhdGEsIGFyZ3MubUN1ck1hcCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfQorCisgICAgcHVibGljIGZpbmFsIElTZXJ2aWNlQ29ubmVjdGlvbiBnZXRTZXJ2aWNlRGlzcGF0Y2hlcihTZXJ2aWNlQ29ubmVjdGlvbiBjLAorICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIsIGludCBmbGFncykgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlcykgeworICAgICAgICAgICAgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbnVsbDsKKyAgICAgICAgICAgIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4gbWFwID0gbVNlcnZpY2VzLmdldChjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChtYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNkID0gbWFwLmdldChjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2QgPSBuZXcgU2VydmljZURpc3BhdGNoZXIoYywgY29udGV4dCwgaGFuZGxlciwgZmxhZ3MpOworICAgICAgICAgICAgICAgIGlmIChtYXAgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtYXAgPSBuZXcgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPigpOworICAgICAgICAgICAgICAgICAgICBtU2VydmljZXMucHV0KGNvbnRleHQsIG1hcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1hcC5wdXQoYywgc2QpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZC52YWxpZGF0ZShjb250ZXh0LCBoYW5kbGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzZC5nZXRJU2VydmljZUNvbm5lY3Rpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBJU2VydmljZUNvbm5lY3Rpb24gZm9yZ2V0U2VydmljZURpc3BhdGNoZXIoQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgU2VydmljZUNvbm5lY3Rpb24gYykgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlcykgeworICAgICAgICAgICAgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPiBtYXAKKyAgICAgICAgICAgICAgICAgICAgPSBtU2VydmljZXMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChtYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNkID0gbWFwLmdldChjKTsKKyAgICAgICAgICAgICAgICBpZiAoc2QgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtYXAucmVtb3ZlKGMpOworICAgICAgICAgICAgICAgICAgICBzZC5kb0ZvcmdldCgpOworICAgICAgICAgICAgICAgICAgICBpZiAobWFwLnNpemUoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZXMucmVtb3ZlKGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgoc2QuZ2V0RmxhZ3MoKSZDb250ZXh0LkJJTkRfREVCVUdfVU5CSU5EKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXI+IGhvbGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1VbmJvdW5kU2VydmljZXMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvbGRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGVyID0gbmV3IEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVW5ib3VuZFNlcnZpY2VzLnB1dChjb250ZXh0LCBob2xkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBleCA9IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmlnaW5hbGx5IHVuYm91bmQgaGVyZToiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4LmZpbGxJblN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNkLnNldFVuYmluZExvY2F0aW9uKGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlci5wdXQoYywgc2QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZC5nZXRJU2VydmljZUNvbm5lY3Rpb24oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXI+IGhvbGRlcgorICAgICAgICAgICAgICAgICAgICA9IG1VbmJvdW5kU2VydmljZXMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgaWYgKGhvbGRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2QgPSBob2xkZXIuZ2V0KGMpOworICAgICAgICAgICAgICAgIGlmIChzZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZXggPSBzZC5nZXRVbmJpbmRMb2NhdGlvbigpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmJpbmRpbmcgU2VydmljZSAiICsgYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0aGF0IHdhcyBhbHJlYWR5IHVuYm91bmQiLCBleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlVuYmluZGluZyBTZXJ2aWNlICIgKyBjCisgICAgICAgICAgICAgICAgICAgICAgICArICIgZnJvbSBDb250ZXh0IHRoYXQgaXMgbm8gbG9uZ2VyIGluIHVzZTogIiArIGNvbnRleHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTZXJ2aWNlIG5vdCByZWdpc3RlcmVkOiAiICsgYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU2VydmljZURpc3BhdGNoZXIgeworICAgICAgICBwcml2YXRlIGZpbmFsIFNlcnZpY2VEaXNwYXRjaGVyLklubmVyQ29ubmVjdGlvbiBtSVNlcnZpY2VDb25uZWN0aW9uOworICAgICAgICBwcml2YXRlIGZpbmFsIFNlcnZpY2VDb25uZWN0aW9uIG1Db25uZWN0aW9uOworICAgICAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisgICAgICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtQWN0aXZpdHlUaHJlYWQ7CisgICAgICAgIHByaXZhdGUgZmluYWwgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgbUxvY2F0aW9uOworICAgICAgICBwcml2YXRlIGZpbmFsIGludCBtRmxhZ3M7CisKKyAgICAgICAgcHJpdmF0ZSBSdW50aW1lRXhjZXB0aW9uIG1VbmJpbmRMb2NhdGlvbjsKKworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbURpZWQ7CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ29ubmVjdGlvbkluZm8geworICAgICAgICAgICAgSUJpbmRlciBiaW5kZXI7CisgICAgICAgICAgICBJQmluZGVyLkRlYXRoUmVjaXBpZW50IGRlYXRoTW9uaXRvcjsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyQ29ubmVjdGlvbiBleHRlbmRzIElTZXJ2aWNlQ29ubmVjdGlvbi5TdHViIHsKKyAgICAgICAgICAgIGZpbmFsIFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPiBtRGlzcGF0Y2hlcjsKKworICAgICAgICAgICAgSW5uZXJDb25uZWN0aW9uKExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlciBzZCkgeworICAgICAgICAgICAgICAgIG1EaXNwYXRjaGVyID0gbmV3IFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPihzZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNvbm5lY3RlZChDb21wb25lbnROYW1lIG5hbWUsIElCaW5kZXIgc2VydmljZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgICAgICAgICAgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbURpc3BhdGNoZXIuZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKHNkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgc2QuY29ubmVjdGVkKG5hbWUsIHNlcnZpY2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb21wb25lbnROYW1lLCBTZXJ2aWNlRGlzcGF0Y2hlci5Db25uZWN0aW9uSW5mbz4gbUFjdGl2ZUNvbm5lY3Rpb25zCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPENvbXBvbmVudE5hbWUsIFNlcnZpY2VEaXNwYXRjaGVyLkNvbm5lY3Rpb25JbmZvPigpOworCisgICAgICAgIFNlcnZpY2VEaXNwYXRjaGVyKFNlcnZpY2VDb25uZWN0aW9uIGNvbm4sCisgICAgICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGFjdGl2aXR5VGhyZWFkLCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgICAgIG1JU2VydmljZUNvbm5lY3Rpb24gPSBuZXcgSW5uZXJDb25uZWN0aW9uKHRoaXMpOworICAgICAgICAgICAgbUNvbm5lY3Rpb24gPSBjb25uOworICAgICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkID0gYWN0aXZpdHlUaHJlYWQ7CisgICAgICAgICAgICBtTG9jYXRpb24gPSBuZXcgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQobnVsbCk7CisgICAgICAgICAgICBtTG9jYXRpb24uZmlsbEluU3RhY2tUcmFjZSgpOworICAgICAgICAgICAgbUZsYWdzID0gZmxhZ3M7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHZhbGlkYXRlKENvbnRleHQgY29udGV4dCwgSGFuZGxlciBhY3Rpdml0eVRocmVhZCkgeworICAgICAgICAgICAgaWYgKG1Db250ZXh0ICE9IGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlNlcnZpY2VDb25uZWN0aW9uICIgKyBtQ29ubmVjdGlvbiArCisgICAgICAgICAgICAgICAgICAgICIgcmVnaXN0ZXJlZCB3aXRoIGRpZmZlcmluZyBDb250ZXh0ICh3YXMgIiArCisgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0ICsgIiBub3cgIiArIGNvbnRleHQgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1BY3Rpdml0eVRocmVhZCAhPSBhY3Rpdml0eVRocmVhZCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiU2VydmljZUNvbm5lY3Rpb24gIiArIG1Db25uZWN0aW9uICsKKyAgICAgICAgICAgICAgICAgICAgIiByZWdpc3RlcmVkIHdpdGggZGlmZmVyaW5nIGhhbmRsZXIgKHdhcyAiICsKKyAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkICsgIiBub3cgIiArIGFjdGl2aXR5VGhyZWFkICsgIikiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZG9Gb3JnZXQoKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPFNlcnZpY2VEaXNwYXRjaGVyLkNvbm5lY3Rpb25JbmZvPiBpdCA9IG1BY3RpdmVDb25uZWN0aW9ucy52YWx1ZXMoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIuQ29ubmVjdGlvbkluZm8gY2kgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGNpLmJpbmRlci51bmxpbmtUb0RlYXRoKGNpLmRlYXRoTW9uaXRvciwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1BY3RpdmVDb25uZWN0aW9ucy5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgZ2V0TG9jYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbUxvY2F0aW9uOworICAgICAgICB9CisKKyAgICAgICAgU2VydmljZUNvbm5lY3Rpb24gZ2V0U2VydmljZUNvbm5lY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbUNvbm5lY3Rpb247CisgICAgICAgIH0KKworICAgICAgICBJU2VydmljZUNvbm5lY3Rpb24gZ2V0SVNlcnZpY2VDb25uZWN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIG1JU2VydmljZUNvbm5lY3Rpb247CisgICAgICAgIH0KKworICAgICAgICBpbnQgZ2V0RmxhZ3MoKSB7CisgICAgICAgICAgICByZXR1cm4gbUZsYWdzOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRVbmJpbmRMb2NhdGlvbihSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBtVW5iaW5kTG9jYXRpb24gPSBleDsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZ2V0VW5iaW5kTG9jYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbVVuYmluZExvY2F0aW9uOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgY29ubmVjdGVkKENvbXBvbmVudE5hbWUgbmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB7CisgICAgICAgICAgICBpZiAobUFjdGl2aXR5VGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQucG9zdChuZXcgUnVuQ29ubmVjdGlvbihuYW1lLCBzZXJ2aWNlLCAwKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRvQ29ubmVjdGVkKG5hbWUsIHNlcnZpY2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgZGVhdGgoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKKyAgICAgICAgICAgIFNlcnZpY2VEaXNwYXRjaGVyLkNvbm5lY3Rpb25JbmZvIG9sZDsKKworICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICAgICAgbURpZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIG9sZCA9IG1BY3RpdmVDb25uZWN0aW9ucy5yZW1vdmUobmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKG9sZCA9PSBudWxsIHx8IG9sZC5iaW5kZXIgIT0gc2VydmljZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBEZWF0aCBmb3Igc29tZW9uZSBkaWZmZXJlbnQgdGhhbiB3aG8gd2UgbGFzdAorICAgICAgICAgICAgICAgICAgICAvLyByZXBvcnRlZC4uLiAganVzdCBpZ25vcmUgaXQuCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb2xkLmJpbmRlci51bmxpbmtUb0RlYXRoKG9sZC5kZWF0aE1vbml0b3IsIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUFjdGl2aXR5VGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQucG9zdChuZXcgUnVuQ29ubmVjdGlvbihuYW1lLCBzZXJ2aWNlLCAxKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRvRGVhdGgobmFtZSwgc2VydmljZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBkb0Nvbm5lY3RlZChDb21wb25lbnROYW1lIG5hbWUsIElCaW5kZXIgc2VydmljZSkgeworICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIuQ29ubmVjdGlvbkluZm8gb2xkOworICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIuQ29ubmVjdGlvbkluZm8gaW5mbzsKKworICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICAgICAgb2xkID0gbUFjdGl2ZUNvbm5lY3Rpb25zLmdldChuYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAob2xkICE9IG51bGwgJiYgb2xkLmJpbmRlciA9PSBzZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEh1aCwgYWxyZWFkeSBoYXZlIHRoaXMgb25lLiAgT2ggd2VsbCEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBuZXcgc2VydmljZSBpcyBiZWluZyBjb25uZWN0ZWQuLi4gc2V0IGl0IGFsbCB1cC4KKyAgICAgICAgICAgICAgICAgICAgbURpZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mbyA9IG5ldyBDb25uZWN0aW9uSW5mbygpOworICAgICAgICAgICAgICAgICAgICBpbmZvLmJpbmRlciA9IHNlcnZpY2U7CisgICAgICAgICAgICAgICAgICAgIGluZm8uZGVhdGhNb25pdG9yID0gbmV3IERlYXRoTW9uaXRvcihuYW1lLCBzZXJ2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UubGlua1RvRGVhdGgoaW5mby5kZWF0aE1vbml0b3IsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLnB1dChuYW1lLCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2VydmljZSB3YXMgZGVhZCBiZWZvcmUgd2UgZ290IGl0Li4uICBqdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBkbyBhbnl0aGluZyB3aXRoIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5hbWVkIHNlcnZpY2UgaXMgYmVpbmcgZGlzY29ubmVjdGVkLi4uIGNsZWFuIHVwLgorICAgICAgICAgICAgICAgICAgICBtQWN0aXZlQ29ubmVjdGlvbnMucmVtb3ZlKG5hbWUpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChvbGQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBvbGQuYmluZGVyLnVubGlua1RvRGVhdGgob2xkLmRlYXRoTW9uaXRvciwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYW4gb2xkIHNlcnZpY2UsIGl0IGlzIG5vdCBkaXNjb25uZWN0ZWQuCisgICAgICAgICAgICBpZiAob2xkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtQ29ubmVjdGlvbi5vblNlcnZpY2VEaXNjb25uZWN0ZWQobmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG5ldyBzZXJ2aWNlLCBpdCBpcyBub3cgY29ubmVjdGVkLgorICAgICAgICAgICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Db25uZWN0aW9uLm9uU2VydmljZUNvbm5lY3RlZChuYW1lLCBzZXJ2aWNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGRvRGVhdGgoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKKyAgICAgICAgICAgIG1Db25uZWN0aW9uLm9uU2VydmljZURpc2Nvbm5lY3RlZChuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUnVuQ29ubmVjdGlvbiBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICAgICAgICAgIFJ1bkNvbm5lY3Rpb24oQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UsIGludCBjb21tYW5kKSB7CisgICAgICAgICAgICAgICAgbU5hbWUgPSBuYW1lOworICAgICAgICAgICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKKyAgICAgICAgICAgICAgICBtQ29tbWFuZCA9IGNvbW1hbmQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBpZiAobUNvbW1hbmQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkb0Nvbm5lY3RlZChtTmFtZSwgbVNlcnZpY2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUNvbW1hbmQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBkb0RlYXRoKG1OYW1lLCBtU2VydmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBDb21wb25lbnROYW1lIG1OYW1lOworICAgICAgICAgICAgZmluYWwgSUJpbmRlciBtU2VydmljZTsKKyAgICAgICAgICAgIGZpbmFsIGludCBtQ29tbWFuZDsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgZmluYWwgY2xhc3MgRGVhdGhNb25pdG9yIGltcGxlbWVudHMgSUJpbmRlci5EZWF0aFJlY2lwaWVudAorICAgICAgICB7CisgICAgICAgICAgICBEZWF0aE1vbml0b3IoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICBtTmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UgPSBzZXJ2aWNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBiaW5kZXJEaWVkKCkgeworICAgICAgICAgICAgICAgIGRlYXRoKG1OYW1lLCBtU2VydmljZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIENvbXBvbmVudE5hbWUgbU5hbWU7CisgICAgICAgICAgICBmaW5hbCBJQmluZGVyIG1TZXJ2aWNlOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL05hdGl2ZUFjdGl2aXR5LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTmF0aXZlQWN0aXZpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzJkZGE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL05hdGl2ZUFjdGl2aXR5LmphdmEKQEAgLTAsMCArMSwyMTcgQEAKK3BhY2thZ2UgYW5kcm9pZC5hcHA7CisKK2ltcG9ydCBkYWx2aWsuc3lzdGVtLlBhdGhDbGFzc0xvYWRlcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1aWxkOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlUXVldWU7CitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0Q2hhbm5lbDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSW5wdXRRdWV1ZTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKKy8qKgorICogQ29udmVuaWVuY2UgZm9yIGltcGxlbWVudGluZyBhbiBhY3Rpdml0eSB0aGF0IHdpbGwgYmUgaW1wbGVtZW50ZWQKKyAqIHB1cmVseSBpbiBuYXRpdmUgY29kZS4gIFRoYXQgaXMsIGEgZ2FtZSAob3IgZ2FtZS1saWtlIHRoaW5nKS4KKyAqLworcHVibGljIGNsYXNzIE5hdGl2ZUFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVtZW50cyBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrLAorICAgICAgICBJbnB1dFF1ZXVlLkNhbGxiYWNrIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRVRBX0RBVEFfTElCX05BTUUgPSAiYW5kcm9pZC5hcHAubGliX25hbWUiOworICAgIAorICAgIHByaXZhdGUgaW50IG1OYXRpdmVIYW5kbGU7CisgICAgCisgICAgcHJpdmF0ZSBJbnB1dFF1ZXVlIG1DdXJJbnB1dFF1ZXVlOworICAgIHByaXZhdGUgU3VyZmFjZUhvbGRlciBtQ3VyU3VyZmFjZUhvbGRlcjsKKyAgICAKKyAgICBwcml2YXRlIGJvb2xlYW4gbURlc3Ryb3llZDsKKyAgICAKKyAgICBwcml2YXRlIG5hdGl2ZSBpbnQgbG9hZE5hdGl2ZUNvZGUoU3RyaW5nIHBhdGgsIE1lc3NhZ2VRdWV1ZSBxdWV1ZSwKKyAgICAgICAgICAgIFN0cmluZyBpbnRlcm5hbERhdGFQYXRoLCBTdHJpbmcgZXh0ZXJuYWxEYXRhUGF0aCwgaW50IHNka1ZlcnNpb24pOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgdW5sb2FkTmF0aXZlQ29kZShpbnQgaGFuZGxlKTsKKyAgICAKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG9uU3RhcnROYXRpdmUoaW50IGhhbmRsZSk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBvblJlc3VtZU5hdGl2ZShpbnQgaGFuZGxlKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG9uU2F2ZUluc3RhbmNlU3RhdGVOYXRpdmUoaW50IGhhbmRsZSk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBvblBhdXNlTmF0aXZlKGludCBoYW5kbGUpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25TdG9wTmF0aXZlKGludCBoYW5kbGUpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25Mb3dNZW1vcnlOYXRpdmUoaW50IGhhbmRsZSk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBvbldpbmRvd0ZvY3VzQ2hhbmdlZE5hdGl2ZShpbnQgaGFuZGxlLCBib29sZWFuIGZvY3VzZWQpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25TdXJmYWNlQ3JlYXRlZE5hdGl2ZShpbnQgaGFuZGxlLCBTdXJmYWNlIHN1cmZhY2UpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25TdXJmYWNlQ2hhbmdlZE5hdGl2ZShpbnQgaGFuZGxlLCBTdXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAgICBpbnQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25TdXJmYWNlRGVzdHJveWVkTmF0aXZlKGludCBoYW5kbGUpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25JbnB1dENoYW5uZWxDcmVhdGVkTmF0aXZlKGludCBoYW5kbGUsIElucHV0Q2hhbm5lbCBjaGFubmVsKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG9uSW5wdXRDaGFubmVsRGVzdHJveWVkTmF0aXZlKGludCBoYW5kbGUsIElucHV0Q2hhbm5lbCBjaGFubmVsKTsKKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkNyZWF0ZShCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKSB7CisgICAgICAgIFN0cmluZyBsaWJuYW1lID0gIm1haW4iOworICAgICAgICBBY3Rpdml0eUluZm8gYWk7CisgICAgICAgIAorICAgICAgICBnZXRXaW5kb3coKS50YWtlU3VyZmFjZSh0aGlzKTsKKyAgICAgICAgZ2V0V2luZG93KCkudGFrZUlucHV0UXVldWUodGhpcyk7CisgICAgICAgIGdldFdpbmRvdygpLnNldEZvcm1hdChQaXhlbEZvcm1hdC5SR0JfNTY1KTsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBhaSA9IGdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0QWN0aXZpdHlJbmZvKAorICAgICAgICAgICAgICAgICAgICBnZXRJbnRlbnQoKS5nZXRDb21wb25lbnQoKSwgUGFja2FnZU1hbmFnZXIuR0VUX01FVEFfREFUQSk7CisgICAgICAgICAgICBpZiAoYWkubWV0YURhdGEgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIFN0cmluZyBsbiA9IGFpLm1ldGFEYXRhLmdldFN0cmluZyhNRVRBX0RBVEFfTElCX05BTUUpOworICAgICAgICAgICAgICAgIGlmIChsbiAhPSBudWxsKSBsaWJuYW1lID0gbG47CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiRXJyb3IgZ2V0dGluZyBhY3Rpdml0eSBpbmZvIiwgZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN0cmluZyBwYXRoID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIGlmICgoYWkuYXBwbGljYXRpb25JbmZvLmZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX0hBU19DT0RFKSA9PSAwKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSAoSmF2YSkgY29kZSwgdGhlbiBubyBDbGFzc0xvYWRlcgorICAgICAgICAgICAgLy8gaGFzIGJlZW4gc2V0IHVwIGZvciBpdC4gIFdlIHdpbGwgbmVlZCB0byBkbyBvdXIgb3duIHNlYXJjaCBmb3IKKyAgICAgICAgICAgIC8vIHRoZSBuYXRpdmUgY29kZS4KKyAgICAgICAgICAgIHBhdGggPSBhaS5hcHBsaWNhdGlvbkluZm8uZGF0YURpciArICIvbGliLyIgKyBTeXN0ZW0ubWFwTGlicmFyeU5hbWUobGlibmFtZSk7CisgICAgICAgICAgICBpZiAoIShuZXcgRmlsZShwYXRoKSkuZXhpc3RzKCkpIHsKKyAgICAgICAgICAgICAgICBwYXRoID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHBhdGggPT0gbnVsbCkgeworICAgICAgICAgICAgcGF0aCA9ICgoUGF0aENsYXNzTG9hZGVyKWdldENsYXNzTG9hZGVyKCkpLmZpbmRMaWJyYXJ5KGxpYm5hbWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAocGF0aCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbmFibGUgdG8gZmluZCBuYXRpdmUgbGlicmFyeTogIiArIGxpYm5hbWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtTmF0aXZlSGFuZGxlID0gbG9hZE5hdGl2ZUNvZGUocGF0aCwgTG9vcGVyLm15UXVldWUoKSwKKyAgICAgICAgICAgICAgICAgZ2V0RmlsZXNEaXIoKS50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudC5nZXRFeHRlcm5hbFN0b3JhZ2VBcHBGaWxlc0RpcmVjdG9yeShhaS5wYWNrYWdlTmFtZSkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgQnVpbGQuVkVSU0lPTi5TREtfSU5UKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtTmF0aXZlSGFuZGxlID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuYWJsZSB0byBsb2FkIG5hdGl2ZSBsaWJyYXJ5OiAiICsgcGF0aCk7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIub25DcmVhdGUoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkRlc3Ryb3koKSB7CisgICAgICAgIG1EZXN0cm95ZWQgPSB0cnVlOworICAgICAgICBpZiAobUN1clN1cmZhY2VIb2xkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgb25TdXJmYWNlRGVzdHJveWVkTmF0aXZlKG1OYXRpdmVIYW5kbGUpOworICAgICAgICAgICAgbUN1clN1cmZhY2VIb2xkZXIgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChtQ3VySW5wdXRRdWV1ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBvbklucHV0Q2hhbm5lbERlc3Ryb3llZE5hdGl2ZShtTmF0aXZlSGFuZGxlLCBtQ3VySW5wdXRRdWV1ZS5nZXRJbnB1dENoYW5uZWwoKSk7CisgICAgICAgICAgICBtQ3VySW5wdXRRdWV1ZSA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgdW5sb2FkTmF0aXZlQ29kZShtTmF0aXZlSGFuZGxlKTsKKyAgICAgICAgc3VwZXIub25EZXN0cm95KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25QYXVzZSgpIHsKKyAgICAgICAgc3VwZXIub25QYXVzZSgpOworICAgICAgICBvblBhdXNlTmF0aXZlKG1OYXRpdmVIYW5kbGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICBzdXBlci5vblJlc3VtZSgpOworICAgICAgICBvblJlc3VtZU5hdGl2ZShtTmF0aXZlSGFuZGxlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvblNhdmVJbnN0YW5jZVN0YXRlKEJ1bmRsZSBvdXRTdGF0ZSkgeworICAgICAgICBzdXBlci5vblNhdmVJbnN0YW5jZVN0YXRlKG91dFN0YXRlKTsKKyAgICAgICAgb25TYXZlSW5zdGFuY2VTdGF0ZU5hdGl2ZShtTmF0aXZlSGFuZGxlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvblN0YXJ0KCkgeworICAgICAgICBzdXBlci5vblN0YXJ0KCk7CisgICAgICAgIG9uU3RhcnROYXRpdmUobU5hdGl2ZUhhbmRsZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25TdG9wKCkgeworICAgICAgICBzdXBlci5vblN0b3AoKTsKKyAgICAgICAgb25TdG9wTmF0aXZlKG1OYXRpdmVIYW5kbGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uTG93TWVtb3J5KCkgeworICAgICAgICBzdXBlci5vbkxvd01lbW9yeSgpOworICAgICAgICBpZiAoIW1EZXN0cm95ZWQpIHsKKyAgICAgICAgICAgIG9uTG93TWVtb3J5TmF0aXZlKG1OYXRpdmVIYW5kbGUpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25XaW5kb3dGb2N1c0NoYW5nZWQoYm9vbGVhbiBoYXNGb2N1cykgeworICAgICAgICBzdXBlci5vbldpbmRvd0ZvY3VzQ2hhbmdlZChoYXNGb2N1cyk7CisgICAgICAgIGlmICghbURlc3Ryb3llZCkgeworICAgICAgICAgICAgb25XaW5kb3dGb2N1c0NoYW5nZWROYXRpdmUobU5hdGl2ZUhhbmRsZSwgaGFzRm9jdXMpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHN1cmZhY2VDcmVhdGVkKFN1cmZhY2VIb2xkZXIgaG9sZGVyKSB7CisgICAgICAgIGlmICghbURlc3Ryb3llZCkgeworICAgICAgICAgICAgbUN1clN1cmZhY2VIb2xkZXIgPSBob2xkZXI7CisgICAgICAgICAgICBvblN1cmZhY2VDcmVhdGVkTmF0aXZlKG1OYXRpdmVIYW5kbGUsIGhvbGRlci5nZXRTdXJmYWNlKCkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHN1cmZhY2VDaGFuZ2VkKFN1cmZhY2VIb2xkZXIgaG9sZGVyLCBpbnQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKyAgICAgICAgaWYgKCFtRGVzdHJveWVkKSB7CisgICAgICAgICAgICBtQ3VyU3VyZmFjZUhvbGRlciA9IGhvbGRlcjsKKyAgICAgICAgICAgIG9uU3VyZmFjZUNoYW5nZWROYXRpdmUobU5hdGl2ZUhhbmRsZSwgaG9sZGVyLmdldFN1cmZhY2UoKSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzdXJmYWNlRGVzdHJveWVkKFN1cmZhY2VIb2xkZXIgaG9sZGVyKSB7CisgICAgICAgIG1DdXJTdXJmYWNlSG9sZGVyID0gbnVsbDsKKyAgICAgICAgaWYgKCFtRGVzdHJveWVkKSB7CisgICAgICAgICAgICBvblN1cmZhY2VEZXN0cm95ZWROYXRpdmUobU5hdGl2ZUhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgb25JbnB1dFF1ZXVlQ3JlYXRlZChJbnB1dFF1ZXVlIHF1ZXVlKSB7CisgICAgICAgIGlmICghbURlc3Ryb3llZCkgeworICAgICAgICAgICAgbUN1cklucHV0UXVldWUgPSBxdWV1ZTsKKyAgICAgICAgICAgIG9uSW5wdXRDaGFubmVsQ3JlYXRlZE5hdGl2ZShtTmF0aXZlSGFuZGxlLCBxdWV1ZS5nZXRJbnB1dENoYW5uZWwoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgb25JbnB1dFF1ZXVlRGVzdHJveWVkKElucHV0UXVldWUgcXVldWUpIHsKKyAgICAgICAgbUN1cklucHV0UXVldWUgPSBudWxsOworICAgICAgICBpZiAoIW1EZXN0cm95ZWQpIHsKKyAgICAgICAgICAgIG9uSW5wdXRDaGFubmVsRGVzdHJveWVkTmF0aXZlKG1OYXRpdmVIYW5kbGUsIHF1ZXVlLmdldElucHV0Q2hhbm5lbCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGRpc3BhdGNoVW5oYW5kbGVkS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgVmlldyBkZWNvciA9IGdldFdpbmRvdygpLmdldERlY29yVmlldygpOworICAgICAgICBpZiAoZGVjb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgZGVjb3IuZGlzcGF0Y2hLZXlFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRXaW5kb3dGbGFncyhpbnQgZmxhZ3MsIGludCBtYXNrKSB7CisgICAgICAgIGdldFdpbmRvdygpLnNldEZsYWdzKGZsYWdzLCBtYXNrKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRXaW5kb3dGb3JtYXQoaW50IGZvcm1hdCkgeworICAgICAgICBnZXRXaW5kb3coKS5zZXRGb3JtYXQoZm9ybWF0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTm90aWZpY2F0aW9uLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTm90aWZpY2F0aW9uLmphdmEKaW5kZXggNGQ3MmY3My4uODNhMjAyNCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL05vdGlmaWNhdGlvbi5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9Ob3RpZmljYXRpb24uamF2YQpAQCAtODMsMTAgKzgzLDEwIEBACiAgICAgcHVibGljIGludCBpY29uOwogCiAgICAgLyoqCi0gICAgICogVGhlIG51bWJlciBvZiBldmVudHMgdGhhdCB0aGlzIG5vdGlmaWNhdGlvbiByZXByZXNlbnRzLiAgRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgdGhlCi0gICAgICogbmV3IG1haWwgbm90aWZpY2F0aW9uLCB0aGlzIHdvdWxkIGJlIHRoZSBudW1iZXIgb2YgdW5yZWFkIG1lc3NhZ2VzLiAgVGhpcyBudW1iZXIgaXMKLSAgICAgKiBiZSBzdXBlcmltcG9zZWQgb3ZlciB0aGUgaWNvbiBpbiB0aGUgc3RhdHVzIGJhci4gIElmIHRoZSBudW1iZXIgaXMgMCBvciBuZWdhdGl2ZSwgaXQKLSAgICAgKiBpcyBub3Qgc2hvd24gaW4gdGhlIHN0YXR1cyBiYXIuCisgICAgICogVGhlIG51bWJlciBvZiBldmVudHMgdGhhdCB0aGlzIG5vdGlmaWNhdGlvbiByZXByZXNlbnRzLiAgRm9yIGV4YW1wbGUsIGluIGEgbmV3IG1haWwKKyAgICAgKiBub3RpZmljYXRpb24sIHRoaXMgY291bGQgYmUgdGhlIG51bWJlciBvZiB1bnJlYWQgbWVzc2FnZXMuICBUaGlzIG51bWJlciBpcyBzdXBlcmltcG9zZWQgb3ZlcgorICAgICAqIHRoZSBpY29uIGluIHRoZSBzdGF0dXMgYmFyLiAgSWYgdGhlIG51bWJlciBpcyAwIG9yIG5lZ2F0aXZlLCBpdCBpcyBub3Qgc2hvd24gaW4gdGhlIHN0YXR1cworICAgICAqIGJhci4KICAgICAgKi8KICAgICBwdWJsaWMgaW50IG51bWJlcjsKIApAQCAtMTA5LDEzICsxMDksMjIgQEAKICAgICBwdWJsaWMgUGVuZGluZ0ludGVudCBkZWxldGVJbnRlbnQ7CiAKICAgICAvKioKKyAgICAgKiBBbiBpbnRlbnQgdG8gbGF1bmNoIGluc3RlYWQgb2YgcG9zdGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIHRoZSBzdGF0dXMgYmFyLiBPbmx5IGZvciB1c2Ugd2l0aAorICAgICAqIGV4dHJlbWVseSBoaWdoLXByaW9yaXR5IG5vdGlmaWNhdGlvbnMgZGVtYW5kaW5nIHRoZSB1c2VyJ3MgYXR0ZW50aW9uLCBzdWNoIGFzIGFuIGluY29taW5nCisgICAgICogY2FsbCAoaGFuZGxlZCBpbiB0aGUgY29yZSBBbmRyb2lkIFBob25lIGFwcCB3aXRoIGEgZnVsbC1zY3JlZW4gQWN0aXZpdHkpLgorICAgICAqIFVzZSB3aXRoIHtAbGluayAjRkxBR19ISUdIX1BSSU9SSVRZfSB0byBlbnN1cmUgdGhhdCB0aGlzIG5vdGlmaWNhdGlvbiB3aWxsIHJlYWNoIHRoZSB1c2VyCisgICAgICogZXZlbiB3aGVuIG90aGVyIG5vdGlmaWNhdGlvbnMgYXJlIHN1cHByZXNzZWQuCisgICAgICovCisgICAgcHVibGljIFBlbmRpbmdJbnRlbnQgZnVsbFNjcmVlbkludGVudDsKKworICAgIC8qKgogICAgICAqIFRleHQgdG8gc2Nyb2xsIGFjcm9zcyB0aGUgc2NyZWVuIHdoZW4gdGhpcyBpdGVtIGlzIGFkZGVkIHRvCiAgICAgICogdGhlIHN0YXR1cyBiYXIuCiAgICAgICovCiAgICAgcHVibGljIENoYXJTZXF1ZW5jZSB0aWNrZXJUZXh0OwogCiAgICAgLyoqCi0gICAgICogVGhlIHZpZXcgdGhhdCBzaG93cyB3aGVuIHRoaXMgbm90aWZpY2F0aW9uIGlzIHNob3duIGluIHRoZSBleHBhbmRlZCBzdGF0dXMgYmFyLgorICAgICAqIFRoZSB2aWV3IHRoYXQgd2lsbCByZXByZXNlbnQgdGhpcyBub3RpZmljYXRpb24gaW4gdGhlIGV4cGFuZGVkIHN0YXR1cyBiYXIuCiAgICAgICovCiAgICAgcHVibGljIFJlbW90ZVZpZXdzIGNvbnRlbnRWaWV3OwogCkBAIC0yNjQsNiArMjczLDE0IEBACiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19GT1JFR1JPVU5EX1NFUlZJQ0UgPSAweDAwMDAwMDQwOwogCisgICAgLyoqCisgICAgICogQml0IHRvIGJlIGJpdHdpc2Utb3JlZCBpbnRvIHRoZSB7QGxpbmsgI2ZsYWdzfSBmaWVsZCB0aGF0IHNob3VsZCBiZSBzZXQgaWYgdGhpcyBub3RpZmljYXRpb24KKyAgICAgKiByZXByZXNlbnRzIGEgaGlnaC1wcmlvcml0eSBldmVudCB0aGF0IG1heSBiZSBzaG93biB0byB0aGUgdXNlciBldmVuIGlmIG5vdGlmaWNhdGlvbnMgYXJlCisgICAgICogb3RoZXJ3aXNlIHVuYXZhaWxhYmxlICh0aGF0IGlzLCB3aGVuIHRoZSBzdGF0dXMgYmFyIGlzIGhpZGRlbikuIFRoaXMgZmxhZyBpcyBpZGVhbGx5IHVzZWQKKyAgICAgKiBpbiBjb25qdW5jdGlvbiB3aXRoIHtAbGluayAjZnVsbFNjcmVlbkludGVudH0uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19ISUdIX1BSSU9SSVRZID0gMHgwMDAwMDA4MDsKKwogICAgIHB1YmxpYyBpbnQgZmxhZ3M7CiAKICAgICAvKioKQEAgLTMzOSw2ICszNTYsNDkgQEAKICAgICAgICAgbGVkT25NUyA9IHBhcmNlbC5yZWFkSW50KCk7CiAgICAgICAgIGxlZE9mZk1TID0gcGFyY2VsLnJlYWRJbnQoKTsKICAgICAgICAgaWNvbkxldmVsID0gcGFyY2VsLnJlYWRJbnQoKTsKKworICAgICAgICBpZiAocGFyY2VsLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICBmdWxsU2NyZWVuSW50ZW50ID0gUGVuZGluZ0ludGVudC5DUkVBVE9SLmNyZWF0ZUZyb21QYXJjZWwocGFyY2VsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBOb3RpZmljYXRpb24gY2xvbmUoKSB7CisgICAgICAgIE5vdGlmaWNhdGlvbiB0aGF0ID0gbmV3IE5vdGlmaWNhdGlvbigpOworCisgICAgICAgIHRoYXQud2hlbiA9IHRoaXMud2hlbjsKKyAgICAgICAgdGhhdC5pY29uID0gdGhpcy5pY29uOworICAgICAgICB0aGF0Lm51bWJlciA9IHRoaXMubnVtYmVyOworCisgICAgICAgIC8vIFBlbmRpbmdJbnRlbnRzIGFyZSBnbG9iYWwsIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIChvciB3YXkpIHRvIGNsb25lIHRoZW0uCisgICAgICAgIHRoYXQuY29udGVudEludGVudCA9IHRoaXMuY29udGVudEludGVudDsKKyAgICAgICAgdGhhdC5kZWxldGVJbnRlbnQgPSB0aGlzLmRlbGV0ZUludGVudDsKKyAgICAgICAgdGhhdC5mdWxsU2NyZWVuSW50ZW50ID0gdGhpcy5mdWxsU2NyZWVuSW50ZW50OworCisgICAgICAgIGlmICh0aGlzLnRpY2tlclRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhhdC50aWNrZXJUZXh0ID0gdGhpcy50aWNrZXJUZXh0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuY29udGVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhhdC5jb250ZW50VmlldyA9IHRoaXMuY29udGVudFZpZXcuY2xvbmUoKTsKKyAgICAgICAgfQorICAgICAgICB0aGF0Lmljb25MZXZlbCA9IHRoYXQuaWNvbkxldmVsOworICAgICAgICB0aGF0LnNvdW5kID0gdGhpcy5zb3VuZDsgLy8gYW5kcm9pZC5uZXQuVXJpIGlzIGltbXV0YWJsZQorICAgICAgICB0aGF0LmF1ZGlvU3RyZWFtVHlwZSA9IHRoaXMuYXVkaW9TdHJlYW1UeXBlOworCisgICAgICAgIGZpbmFsIGxvbmdbXSB2aWJyYXRlID0gdGhpcy52aWJyYXRlOworICAgICAgICBpZiAodmlicmF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IHZpYnJhdGUubGVuZ3RoOworICAgICAgICAgICAgZmluYWwgbG9uZ1tdIHZpYiA9IHRoYXQudmlicmF0ZSA9IG5ldyBsb25nW05dOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh2aWJyYXRlLCAwLCB2aWIsIDAsIE4pOworICAgICAgICB9CisKKyAgICAgICAgdGhhdC5sZWRBUkdCID0gdGhpcy5sZWRBUkdCOworICAgICAgICB0aGF0LmxlZE9uTVMgPSB0aGlzLmxlZE9uTVM7CisgICAgICAgIHRoYXQubGVkT2ZmTVMgPSB0aGlzLmxlZE9mZk1TOworICAgICAgICB0aGF0LmRlZmF1bHRzID0gdGhpcy5kZWZhdWx0czsKKyAgICAgICAgCisgICAgICAgIHRoYXQuZmxhZ3MgPSB0aGlzLmZsYWdzOworCisgICAgICAgIHJldHVybiB0aGF0OwogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZGVzY3JpYmVDb250ZW50cygpIHsKQEAgLTM5NSw2ICs0NTUsMTMgQEAKICAgICAgICAgcGFyY2VsLndyaXRlSW50KGxlZE9uTVMpOwogICAgICAgICBwYXJjZWwud3JpdGVJbnQobGVkT2ZmTVMpOwogICAgICAgICBwYXJjZWwud3JpdGVJbnQoaWNvbkxldmVsKTsKKworICAgICAgICBpZiAoZnVsbFNjcmVlbkludGVudCAhPSBudWxsKSB7CisgICAgICAgICAgICBwYXJjZWwud3JpdGVJbnQoMSk7CisgICAgICAgICAgICBmdWxsU2NyZWVuSW50ZW50LndyaXRlVG9QYXJjZWwocGFyY2VsLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcmNlbC53cml0ZUludCgwKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgpAQCAtNDgwLDYgKzU0NywxMSBAQAogICAgICAgICB9CiAgICAgICAgIHNiLmFwcGVuZCgiLGRlZmF1bHRzPTB4Iik7CiAgICAgICAgIHNiLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKHRoaXMuZGVmYXVsdHMpKTsKKyAgICAgICAgc2IuYXBwZW5kKCIsZmxhZ3M9MHgiKTsKKyAgICAgICAgc2IuYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcodGhpcy5mbGFncykpOworICAgICAgICBpZiAoKHRoaXMuZmxhZ3MgJiBGTEFHX0hJR0hfUFJJT1JJVFkpICE9IDApIHsKKyAgICAgICAgICAgIHNiLmFwcGVuZCgiISEhMSFvbmUhIik7CisgICAgICAgIH0KICAgICAgICAgc2IuYXBwZW5kKCIpIik7CiAgICAgICAgIHJldHVybiBzYi50b1N0cmluZygpOwogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9TdGF0dXNCYXJNYW5hZ2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvU3RhdHVzQmFyTWFuYWdlci5qYXZhCmluZGV4IDcyZWM2MTYuLmRlNTQ0ZmIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9TdGF0dXNCYXJNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL1N0YXR1c0Jhck1hbmFnZXIuamF2YQpAQCAtMjMsNiArMjMsOCBAQAogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOwogCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXJTZXJ2aWNlOworCiAvKioKICAqIEFsbG93cyBhbiBhcHAgdG8gY29udHJvbCB0aGUgc3RhdHVzIGJhci4KICAqCkBAIC01OCwxMiArNjAsMTIgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESVNBQkxFX05PTkUgPSAweDAwMDAwMDAwOwogCiAgICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OwotICAgIHByaXZhdGUgSVN0YXR1c0JhciBtU2VydmljZTsKKyAgICBwcml2YXRlIElTdGF0dXNCYXJTZXJ2aWNlIG1TZXJ2aWNlOwogICAgIHByaXZhdGUgSUJpbmRlciBtVG9rZW4gPSBuZXcgQmluZGVyKCk7CiAKICAgICBTdGF0dXNCYXJNYW5hZ2VyKENvbnRleHQgY29udGV4dCkgewogICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIG1TZXJ2aWNlID0gSVN0YXR1c0Jhci5TdHViLmFzSW50ZXJmYWNlKAorICAgICAgICBtU2VydmljZSA9IElTdGF0dXNCYXJTZXJ2aWNlLlN0dWIuYXNJbnRlcmZhY2UoCiAgICAgICAgICAgICAgICAgU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZShDb250ZXh0LlNUQVRVU19CQVJfU0VSVklDRSkpOwogICAgIH0KIApAQCAtODUsNyArODcsNyBAQAogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIGV4cGFuZCgpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLmFjdGl2YXRlKCk7CisgICAgICAgICAgICBtU2VydmljZS5leHBhbmQoKTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAvLyBzeXN0ZW0gcHJvY2VzcyBpcyBkZWFkIGFueXdheS4KICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGV4KTsKQEAgLTk3LDQ2ICs5OSwzNCBAQAogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIGNvbGxhcHNlKCkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgbVNlcnZpY2UuZGVhY3RpdmF0ZSgpOwotICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgIC8vIHN5c3RlbSBwcm9jZXNzIGlzIGRlYWQgYW55d2F5LgotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8qKgotICAgICAqIFRvZ2dsZSB0aGUgc3RhdHVzIGJhci4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB0b2dnbGUoKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBtU2VydmljZS50b2dnbGUoKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLmNvbGxhcHNlKCk7CiAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgLy8gc3lzdGVtIHByb2Nlc3MgaXMgZGVhZCBhbnl3YXkuCiAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgSUJpbmRlciBhZGRJY29uKFN0cmluZyBzbG90LCBpbnQgaWNvbklkLCBpbnQgaWNvbkxldmVsKSB7CisgICAgcHVibGljIHZvaWQgc2V0SWNvbihTdHJpbmcgc2xvdCwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmFkZEljb24oc2xvdCwgbUNvbnRleHQuZ2V0UGFja2FnZU5hbWUoKSwgaWNvbklkLCBpY29uTGV2ZWwpOworICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbihzbG90LCBtQ29udGV4dC5nZXRQYWNrYWdlTmFtZSgpLCBpY29uSWQsIGljb25MZXZlbCk7CiAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgLy8gc3lzdGVtIHByb2Nlc3MgaXMgZGVhZCBhbnl3YXkuCiAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCB1cGRhdGVJY29uKElCaW5kZXIga2V5LCBTdHJpbmcgc2xvdCwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCkgeworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUljb24oU3RyaW5nIHNsb3QpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24oa2V5LCBzbG90LCBtQ29udGV4dC5nZXRQYWNrYWdlTmFtZSgpLCBpY29uSWQsIGljb25MZXZlbCk7CisgICAgICAgICAgICBtU2VydmljZS5yZW1vdmVJY29uKHNsb3QpOwogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIC8vIHN5c3RlbSBwcm9jZXNzIGlzIGRlYWQgYW55d2F5LgogICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgcmVtb3ZlSWNvbihJQmluZGVyIGtleSkgeworICAgIHB1YmxpYyB2b2lkIHNldEljb25WaXNpYmlsaXR5KFN0cmluZyBzbG90LCBib29sZWFuIHZpc2libGUpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnJlbW92ZUljb24oa2V5KTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KHNsb3QsIHZpc2libGUpOwogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIC8vIHN5c3RlbSBwcm9jZXNzIGlzIGRlYWQgYW55d2F5LgogICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwd2lkZ2V0L0FwcFdpZGdldEhvc3QuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcHdpZGdldC9BcHBXaWRnZXRIb3N0LmphdmEKaW5kZXggODhhZGFiZC4uYjJmYzEzZiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwd2lkZ2V0L0FwcFdpZGdldEhvc3QuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHB3aWRnZXQvQXBwV2lkZ2V0SG9zdC5qYXZhCkBAIC0yMzcsNyArMjM3LDcgQEAKICAgICAgICAgICAgIHYgPSBtVmlld3MuZ2V0KGFwcFdpZGdldElkKTsKICAgICAgICAgfQogICAgICAgICBpZiAodiAhPSBudWxsKSB7Ci0gICAgICAgICAgICB2LnVwZGF0ZUFwcFdpZGdldChudWxsLCBBcHBXaWRnZXRIb3N0Vmlldy5VUERBVEVfRkxBR1NfUkVTRVQpOworICAgICAgICAgICAgdi5yZXNldEFwcFdpZGdldChhcHBXaWRnZXQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAKICAgICAgICAgICAgIHYgPSBtVmlld3MuZ2V0KGFwcFdpZGdldElkKTsKICAgICAgICAgfQogICAgICAgICBpZiAodiAhPSBudWxsKSB7Ci0gICAgICAgICAgICB2LnVwZGF0ZUFwcFdpZGdldCh2aWV3cywgMCk7CisgICAgICAgICAgICB2LnVwZGF0ZUFwcFdpZGdldCh2aWV3cyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHB3aWRnZXQvQXBwV2lkZ2V0SG9zdFZpZXcuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcHdpZGdldC9BcHBXaWRnZXRIb3N0Vmlldy5qYXZhCmluZGV4IDUzNzUxOTMuLmIzM2IwOTcgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcHdpZGdldC9BcHBXaWRnZXRIb3N0Vmlldy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcHdpZGdldC9BcHBXaWRnZXRIb3N0Vmlldy5qYXZhCkBAIC00Niw4ICs0Niw2IEBACiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gTE9HRCA9IGZhbHNlOwogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIENST1NTRkFERSA9IGZhbHNlOwogCi0gICAgc3RhdGljIGZpbmFsIGludCBVUERBVEVfRkxBR1NfUkVTRVQgPSAweDAwMDAwMDAxOwotCiAgICAgc3RhdGljIGZpbmFsIGludCBWSUVXX01PREVfTk9JTklUID0gMDsKICAgICBzdGF0aWMgZmluYWwgaW50IFZJRVdfTU9ERV9DT05URU5UID0gMTsKICAgICBzdGF0aWMgZmluYWwgaW50IFZJRVdfTU9ERV9FUlJPUiA9IDI7CkBAIC0xMDIsNyArMTAwLDcgQEAKICAgICAgICAgbUFwcFdpZGdldElkID0gYXBwV2lkZ2V0SWQ7CiAgICAgICAgIG1JbmZvID0gaW5mbzsKICAgICB9Ci0gICAgCisKICAgICBwdWJsaWMgaW50IGdldEFwcFdpZGdldElkKCkgewogICAgICAgICByZXR1cm4gbUFwcFdpZGdldElkOwogICAgIH0KQEAgLTE0OCwyMSArMTQ2LDIyIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogVXBkYXRlIHRoZSBBcHBXaWRnZXRQcm92aWRlckluZm8gZm9yIHRoaXMgdmlldywgYW5kIHJlc2V0IGl0IHRvIHRoZQorICAgICAqIGluaXRpYWwgbGF5b3V0LgorICAgICAqLworICAgIHZvaWQgcmVzZXRBcHBXaWRnZXQoQXBwV2lkZ2V0UHJvdmlkZXJJbmZvIGluZm8pIHsKKyAgICAgICAgbUluZm8gPSBpbmZvOworICAgICAgICBtVmlld01vZGUgPSBWSUVXX01PREVfTk9JTklUOworICAgICAgICB1cGRhdGVBcHBXaWRnZXQobnVsbCk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogUHJvY2VzcyBhIHNldCBvZiB7QGxpbmsgUmVtb3RlVmlld3N9IGNvbWluZyBpbiBhcyBhbiB1cGRhdGUgZnJvbSB0aGUKICAgICAgKiBBcHBXaWRnZXQgcHJvdmlkZXIuIFdpbGwgYW5pbWF0ZSBpbnRvIHRoZXNlIG5ldyB2aWV3cyBhcyBuZWVkZWQKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCB1cGRhdGVBcHBXaWRnZXQoUmVtb3RlVmlld3MgcmVtb3RlVmlld3MpIHsKLSAgICAgICAgdXBkYXRlQXBwV2lkZ2V0KHJlbW90ZVZpZXdzLCAwKTsKLSAgICB9CisgICAgICAgIGlmIChMT0dEKSBMb2cuZChUQUcsICJ1cGRhdGVBcHBXaWRnZXQgY2FsbGVkIG1PbGQ9IiArIG1PbGQpOwogCi0gICAgdm9pZCB1cGRhdGVBcHBXaWRnZXQoUmVtb3RlVmlld3MgcmVtb3RlVmlld3MsIGludCBmbGFncykgewotICAgICAgICBpZiAoTE9HRCkgTG9nLmQoVEFHLCAidXBkYXRlQXBwV2lkZ2V0IGNhbGxlZCBtT2xkPSIgKyBtT2xkICsgIiBmbGFncz0weCIKLSAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcoZmxhZ3MpKTsKLQotICAgICAgICBpZiAoKGZsYWdzICYgVVBEQVRFX0ZMQUdTX1JFU0VUKSAhPSAwKSB7Ci0gICAgICAgICAgICBtVmlld01vZGUgPSBWSUVXX01PREVfTk9JTklUOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBib29sZWFuIHJlY3ljbGVkID0gZmFsc2U7CiAgICAgICAgIFZpZXcgY29udGVudCA9IG51bGw7CiAgICAgICAgIEV4Y2VwdGlvbiBleGNlcHRpb24gPSBudWxsOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjU1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlLmphdmEKQEAgLTAsMCArMSw2NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGFuZHJvaWQuYmx1ZXRvb3RoOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5zZXJ2ZXIuQmx1ZXRvb3RoQTJkcFNlcnZpY2U7CitpbXBvcnQgYW5kcm9pZC5zZXJ2ZXIuQmx1ZXRvb3RoU2VydmljZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5IaWVyYXJjaGljYWxTdGF0ZTsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLkhpZXJhcmNoaWNhbFN0YXRlTWFjaGluZTsKKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIHRoZSBQcm9maWxlIGNvbm5lY3Rpb24gc3RhdGUgbWFjaGluZSBhc3NvY2lhdGVkIHdpdGggYSByZW1vdGUKKyAqIGRldmljZS4gV2hlbiB0aGUgZGV2aWNlIGJvbmRzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgaXMgY3JlYXRlZC4KKyAqIFRoaXMgdHJhY2tzIGluY29taW5nIGFuZCBvdXRnb2luZyBjb25uZWN0aW9ucyBvZiBhbGwgdGhlIHByb2ZpbGVzLiBJbmNvbWluZworICogY29ubmVjdGlvbnMgYXJlIHByZWZlcnJlZCBvdmVyIG91dGdvaW5nIGNvbm5lY3Rpb25zIGFuZCBIRlAgcHJlZmVycmVkIG92ZXIKKyAqIEEyRFAuIFdoZW4gdGhlIGRldmljZSBpcyB1bmJvbmRlZCwgdGhlIGluc3RhbmNlIGlzIHJlbW92ZWQuCisgKgorICogU3RhdGVzOgorICoge0BsaW5rIEJvbmRlZERldmljZX06IFRoaXMgc3RhdGUgcmVwcmVzZW50cyBhIGJvbmRlZCBkZXZpY2UuIFdoZW4gaW4gdGhpcworICogc3RhdGUgbm9uZSBvZiB0aGUgcHJvZmlsZXMgYXJlIGluIHRyYW5zaXRpb24gc3RhdGVzLgorICoKKyAqIHtAbGluayBPdXRnb2luZ0hhbmRzZnJlZX06IEhhbmRzZnJlZSBwcm9maWxlIGNvbm5lY3Rpb24gaXMgaW4gYSB0cmFuc2l0aW9uCisgKiBzdGF0ZSBiZWNhdXNlIG9mIGEgb3V0Z29pbmcgQ29ubmVjdCBvciBEaXNjb25uZWN0LgorICoKKyAqIHtAbGluayBJbmNvbWluZ0hhbmRzZnJlZX06IEhhbmRzZnJlZSBwcm9maWxlIGNvbm5lY3Rpb24gaXMgaW4gYSB0cmFuc2l0aW9uCisgKiBzdGF0ZSBiZWNhdXNlIG9mIGEgaW5jb21pbmcgQ29ubmVjdCBvciBEaXNjb25uZWN0LgorICoKKyAqIHtAbGluayBJbmNvbWluZ0EyZHB9OiBBMmRwIHByb2ZpbGUgY29ubmVjdGlvbiBpcyBpbiBhIHRyYW5zaXRpb24KKyAqIHN0YXRlIGJlY2F1c2Ugb2YgYSBpbmNvbWluZyBDb25uZWN0IG9yIERpc2Nvbm5lY3QuCisgKgorICoge0BsaW5rIE91dGdvaW5nQTJkcH06IEEyZHAgcHJvZmlsZSBjb25uZWN0aW9uIGlzIGluIGEgdHJhbnNpdGlvbgorICogc3RhdGUgYmVjYXVzZSBvZiBhIG91dGdvaW5nIENvbm5lY3Qgb3IgRGlzY29ubmVjdC4KKyAqCisgKiBUb2RvKCk6IFdyaXRlIHRlc3RzIGZvciB0aGlzIGNsYXNzLCB3aGVuIHRoZSBBbmRyb2lkIE1vY2sgc3VwcG9ydCBpcyBjb21wbGV0ZWQuCisgKiBAaGlkZQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBEQkcgPSB0cnVlOyAvL1NUT1BTSElQIC0gQ2hhbmdlIHRvIGZhbHNlCisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT05ORUNUX0hGUF9PVVRHT0lORyA9IDE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OTkVDVF9IRlBfSU5DT01JTkcgPSAyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTk5FQ1RfQTJEUF9PVVRHT0lORyA9IDM7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OTkVDVF9BMkRQX0lOQ09NSU5HID0gNDsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HID0gNTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElTQ09OTkVDVF9IRlBfSU5DT01JTkcgPSA2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORyA9IDc7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElTQ09OTkVDVF9BMkRQX0lOQ09NSU5HID0gODsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVOUEFJUiA9IDk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVVUT19DT05ORUNUX1BST0ZJTEVTID0gMTA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFJBTlNJVElPTl9UT19TVEFCTEUgPSAxMTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVRPX0NPTk5FQ1RfREVMQVkgPSA2MDAwOyAvLyA2IHNlY3MKKworICAgIHByaXZhdGUgQm9uZGVkRGV2aWNlIG1Cb25kZWREZXZpY2UgPSBuZXcgQm9uZGVkRGV2aWNlKCk7CisgICAgcHJpdmF0ZSBPdXRnb2luZ0hhbmRzZnJlZSBtT3V0Z29pbmdIYW5kc2ZyZWUgPSBuZXcgT3V0Z29pbmdIYW5kc2ZyZWUoKTsKKyAgICBwcml2YXRlIEluY29taW5nSGFuZHNmcmVlIG1JbmNvbWluZ0hhbmRzZnJlZSA9IG5ldyBJbmNvbWluZ0hhbmRzZnJlZSgpOworICAgIHByaXZhdGUgSW5jb21pbmdBMmRwIG1JbmNvbWluZ0EyZHAgPSBuZXcgSW5jb21pbmdBMmRwKCk7CisgICAgcHJpdmF0ZSBPdXRnb2luZ0EyZHAgbU91dGdvaW5nQTJkcCA9IG5ldyBPdXRnb2luZ0EyZHAoKTsKKworICAgIHByaXZhdGUgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIEJsdWV0b290aFNlcnZpY2UgbVNlcnZpY2U7CisgICAgcHJpdmF0ZSBCbHVldG9vdGhBMmRwU2VydmljZSBtQTJkcFNlcnZpY2U7CisgICAgcHJpdmF0ZSBCbHVldG9vdGhIZWFkc2V0ICBtSGVhZHNldFNlcnZpY2U7CisgICAgcHJpdmF0ZSBib29sZWFuIG1IZWFkc2V0U2VydmljZUNvbm5lY3RlZDsKKworICAgIHByaXZhdGUgQmx1ZXRvb3RoRGV2aWNlIG1EZXZpY2U7CisgICAgcHJpdmF0ZSBpbnQgbUhlYWRzZXRTdGF0ZTsKKyAgICBwcml2YXRlIGludCBtQTJkcFN0YXRlOworCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgQmx1ZXRvb3RoRGV2aWNlIGRldmljZSA9IGludGVudC5nZXRQYXJjZWxhYmxlRXh0cmEoQmx1ZXRvb3RoRGV2aWNlLkVYVFJBX0RFVklDRSk7CisgICAgICAgICAgICBpZiAoIWRldmljZS5lcXVhbHMobURldmljZSkpIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoSGVhZHNldC5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbmV3U3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoSGVhZHNldC5FWFRSQV9TVEFURSwgMCk7CisgICAgICAgICAgICAgICAgaW50IG9sZFN0YXRlID0gaW50ZW50LmdldEludEV4dHJhKEJsdWV0b290aEhlYWRzZXQuRVhUUkFfUFJFVklPVVNfU1RBVEUsIDApOworICAgICAgICAgICAgICAgIGludCBpbml0aWF0b3IgPSBpbnRlbnQuZ2V0SW50RXh0cmEoCisgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuRVhUUkFfRElTQ09OTkVDVF9JTklUSUFUT1IsCisgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuTE9DQUxfRElTQ09OTkVDVCk7CisgICAgICAgICAgICAgICAgbUhlYWRzZXRTdGF0ZSA9IG5ld1N0YXRlOworICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRCAmJgorICAgICAgICAgICAgICAgICAgICBpbml0aWF0b3IgPT0gQmx1ZXRvb3RoSGVhZHNldC5SRU1PVEVfRElTQ09OTkVDVCkgeworICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShESVNDT05ORUNUX0hGUF9JTkNPTUlORyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RFRCB8fAorICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRCkgeworICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShUUkFOU0lUSU9OX1RPX1NUQUJMRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbmV3U3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoQTJkcC5FWFRSQV9TSU5LX1NUQVRFLCAwKTsKKyAgICAgICAgICAgICAgICBpbnQgb2xkU3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoQTJkcC5FWFRSQV9QUkVWSU9VU19TSU5LX1NUQVRFLCAwKTsKKyAgICAgICAgICAgICAgICBtQTJkcFN0YXRlID0gbmV3U3RhdGU7CisgICAgICAgICAgICAgICAgaWYgKChvbGRTdGF0ZSA9PSBCbHVldG9vdGhBMmRwLlNUQVRFX0NPTk5FQ1RFRCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkU3RhdGUgPT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9QTEFZSU5HKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUgPT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9ESVNDT05ORUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoRElTQ09OTkVDVF9BMkRQX0lOQ09NSU5HKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXRlID09IEJsdWV0b290aEEyZHAuU1RBVEVfQ09OTkVDVEVEIHx8CisgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID09IEJsdWV0b290aEEyZHAuU1RBVEVfRElTQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKFRSQU5TSVRJT05fVE9fU1RBQkxFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoRGV2aWNlLkFDVElPTl9BQ0xfQ09OTkVDVEVEKSkgeworICAgICAgICAgICAgICAgIGlmICghZ2V0Q3VycmVudFN0YXRlKCkuZXF1YWxzKG1Cb25kZWREZXZpY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlN0YXRlIGlzOiAiICsgZ2V0Q3VycmVudFN0YXRlKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgICAgICBtc2cud2hhdCA9IEFVVE9fQ09OTkVDVF9QUk9GSUxFUzsKKyAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBBVVRPX0NPTk5FQ1RfREVMQVkpOworICAgICAgICAgICAgfQorICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNQaG9uZURvY2tlZChCbHVldG9vdGhEZXZpY2UgYXV0b0Nvbm5lY3REZXZpY2UpIHsKKyAgICAgIC8vIFRoaXMgd29ya3Mgb25seSBiZWNhdXNlIHRoZXNlIGJyb2FkY2FzdCBpbnRlbnRzIGFyZSAic3RpY2t5IgorICAgICAgSW50ZW50IGkgPSBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG51bGwsIG5ldyBJbnRlbnRGaWx0ZXIoSW50ZW50LkFDVElPTl9ET0NLX0VWRU5UKSk7CisgICAgICBpZiAoaSAhPSBudWxsKSB7CisgICAgICAgICAgaW50IHN0YXRlID0gaS5nZXRJbnRFeHRyYShJbnRlbnQuRVhUUkFfRE9DS19TVEFURSwgSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfVU5ET0NLRUQpOworICAgICAgICAgIGlmIChzdGF0ZSAhPSBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9VTkRPQ0tFRCkgeworICAgICAgICAgICAgICBCbHVldG9vdGhEZXZpY2UgZGV2aWNlID0gaS5nZXRQYXJjZWxhYmxlRXh0cmEoQmx1ZXRvb3RoRGV2aWNlLkVYVFJBX0RFVklDRSk7CisgICAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gbnVsbCAmJiBhdXRvQ29ubmVjdERldmljZS5lcXVhbHMoZGV2aWNlKSkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAgIHB1YmxpYyBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgYWRkcmVzcywKKyAgICAgICAgICBCbHVldG9vdGhTZXJ2aWNlIHNlcnZpY2UsIEJsdWV0b290aEEyZHBTZXJ2aWNlIGEyZHBTZXJ2aWNlKSB7CisgICAgICAgIHN1cGVyKGFkZHJlc3MpOworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1EZXZpY2UgPSBuZXcgQmx1ZXRvb3RoRGV2aWNlKGFkZHJlc3MpOworICAgICAgICBtU2VydmljZSA9IHNlcnZpY2U7CisgICAgICAgIG1BMmRwU2VydmljZSA9IGEyZHBTZXJ2aWNlOworCisgICAgICAgIGFkZFN0YXRlKG1Cb25kZWREZXZpY2UpOworICAgICAgICBhZGRTdGF0ZShtT3V0Z29pbmdIYW5kc2ZyZWUpOworICAgICAgICBhZGRTdGF0ZShtSW5jb21pbmdIYW5kc2ZyZWUpOworICAgICAgICBhZGRTdGF0ZShtSW5jb21pbmdBMmRwKTsKKyAgICAgICAgYWRkU3RhdGUobU91dGdvaW5nQTJkcCk7CisgICAgICAgIHNldEluaXRpYWxTdGF0ZShtQm9uZGVkRGV2aWNlKTsKKworICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICAvLyBGaW5lLWdyYWluZWQgc3RhdGUgYnJvYWRjYXN0cworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoSGVhZHNldC5BQ1RJT05fU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoRGV2aWNlLkFDVElPTl9BQ0xfQ09OTkVDVEVEKTsKKworICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZGNhc3RSZWNlaXZlciwgZmlsdGVyKTsKKworICAgICAgICBIZWFkc2V0U2VydmljZUxpc3RlbmVyIGwgPSBuZXcgSGVhZHNldFNlcnZpY2VMaXN0ZW5lcigpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSGVhZHNldFNlcnZpY2VMaXN0ZW5lciBpbXBsZW1lbnRzIEJsdWV0b290aEhlYWRzZXQuU2VydmljZUxpc3RlbmVyIHsKKyAgICAgICAgcHVibGljIEhlYWRzZXRTZXJ2aWNlTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBtSGVhZHNldFNlcnZpY2UgPSBuZXcgQmx1ZXRvb3RoSGVhZHNldChtQ29udGV4dCwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlQ29ubmVjdGVkKCkgeworICAgICAgICAgICAgc3luY2hyb25pemVkKEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS50aGlzKSB7CisgICAgICAgICAgICAgICAgbUhlYWRzZXRTZXJ2aWNlQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQoQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlLnRoaXMpIHsKKyAgICAgICAgICAgICAgICBtSGVhZHNldFNlcnZpY2VDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgQm9uZGVkRGV2aWNlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZW50ZXIoKSB7CisgICAgICAgICAgICBsb2coIkVudGVyaW5nIEFDTCBDb25uZWN0ZWQgc3RhdGUgd2l0aDogIiArIGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdCk7CisgICAgICAgICAgICBNZXNzYWdlIG0gPSBuZXcgTWVzc2FnZSgpOworICAgICAgICAgICAgbS5jb3B5RnJvbShnZXRDdXJyZW50TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIHNlbmRNZXNzYWdlQXRGcm9udE9mUXVldWUobSk7CisgICAgICAgIH0KKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgeworICAgICAgICAgICAgbG9nKCJBQ0wgQ29ubmVjdGVkIFN0YXRlIC0+IFByb2Nlc3NpbmcgTWVzc2FnZTogIiArIG1lc3NhZ2Uud2hhdCk7CisgICAgICAgICAgICBzd2l0Y2gobWVzc2FnZS53aGF0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obU91dGdvaW5nSGFuZHNmcmVlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1JbmNvbWluZ0hhbmRzZnJlZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtSW5jb21pbmdIYW5kc2ZyZWUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1PdXRnb2luZ0EyZHApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1JbmNvbWluZ0EyZHApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFVOUEFJUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1IZWFkc2V0U3RhdGUgIT0gQmx1ZXRvb3RoSGVhZHNldC5TVEFURV9ESVNDT05ORUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1BMmRwU3RhdGUgIT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9ESVNDT05ORUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORyk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWFuZChVTlBBSVIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEFVVE9fQ09OTkVDVF9QUk9GSUxFUzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGhvbmVEb2NrZWQobURldmljZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGF1dG8gY29ubmVjdCB0byBkb2Nrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtSGVhZHNldFNlcnZpY2VDb25uZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtSGVhZHNldFNlcnZpY2UuZ2V0UHJpb3JpdHkobURldmljZSkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuUFJJT1JJVFlfQVVUT19DT05ORUNUICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbUhlYWRzZXRTZXJ2aWNlLmlzQ29ubmVjdGVkKG1EZXZpY2UpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhlYWRzZXRTZXJ2aWNlLmNvbm5lY3RIZWFkc2V0KG1EZXZpY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1BMmRwU2VydmljZSAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQTJkcFNlcnZpY2UuZ2V0U2lua1ByaW9yaXR5KG1EZXZpY2UpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX0FVVE9fQ09OTkVDVCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUEyZHBTZXJ2aWNlLmdldENvbm5lY3RlZFNpbmtzKCkubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQTJkcFNlcnZpY2UuY29ubmVjdFNpbmsobURldmljZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUUkFOU0lUSU9OX1RPX1NUQUJMRToKKyAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlLgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgT3V0Z29pbmdIYW5kc2ZyZWUgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CisgICAgICAgIHByaXZhdGUgYm9vbGVhbiBtU3RhdHVzID0gZmFsc2U7CisgICAgICAgIHByaXZhdGUgaW50IG1Db21tYW5kOworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBlbnRlcigpIHsKKyAgICAgICAgICAgIGxvZygiRW50ZXJpbmcgT3V0Z29pbmdIYW5kc2ZyZWUgc3RhdGUgd2l0aDogIiArIGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdCk7CisgICAgICAgICAgICBtQ29tbWFuZCA9IGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdDsKKyAgICAgICAgICAgIGlmIChtQ29tbWFuZCAhPSBDT05ORUNUX0hGUF9PVVRHT0lORyAmJgorICAgICAgICAgICAgICAgIG1Db21tYW5kICE9IERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HKSB7CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiRXJyb3I6IE91dGdvaW5nSGFuZHNmcmVlIHN0YXRlIHdpdGggY29tbWFuZDoiICsgbUNvbW1hbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVN0YXR1cyA9IHByb2Nlc3NDb21tYW5kKG1Db21tYW5kKTsKKyAgICAgICAgICAgIGlmICghbVN0YXR1cykgc2VuZE1lc3NhZ2UoVFJBTlNJVElPTl9UT19TVEFCTEUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgeworICAgICAgICAgICAgbG9nKCJPdXRnb2luZ0hhbmRzZnJlZSBTdGF0ZSAtPiBQcm9jZXNzaW5nIE1lc3NhZ2U6ICIgKyBtZXNzYWdlLndoYXQpOworICAgICAgICAgICAgTWVzc2FnZSBkZWZlck1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgICAgICBpbnQgY29tbWFuZCA9IG1lc3NhZ2Uud2hhdDsKKyAgICAgICAgICAgIHN3aXRjaChjb21tYW5kKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1hbmQgIT0gbUNvbW1hbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2Nvbm5lY3QgZm9sbG93ZWQgYnkgYSBjb25uZWN0IC0gZGVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfSEZQX0lOQ09NSU5HOgorICAgICAgICAgICAgICAgICAgICBpZiAobUNvbW1hbmQgPT0gQ09OTkVDVF9IRlBfT1VUR09JTkcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbmNlbCBvdXRnb2luZyBjb25uZWN0LCBhY2NlcHQgaW5jb21pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbENvbW1hbmQoQ09OTkVDVF9IRlBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1JbmNvbWluZ0hhbmRzZnJlZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGRvbmUgdGhlIGRpc2Nvbm5lY3QgYnV0IHdlIGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cmUgd2hpY2ggc3RhdGUgd2UgYXJlIGluIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0EyRFBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIGFjY2VwdCBpbmNvbWluZyBBMkRQLCByZXRyeSBIRlBfT1VUR09JTkcKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1JbmNvbWluZ0EyZHApOworCisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1zZy53aGF0ID0gbUNvbW1hbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UoZGVmZXJNc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIGlmIChtQ29tbWFuZCA9PSBDT05ORUNUX0hGUF9PVVRHT0lORykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FuY2VsIG91dGdvaW5nIGNvbm5lY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbENvbW1hbmQoQ09OTkVDVF9IRlBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQoRElTQ09OTkVDVF9IRlBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIGVsc2UgaWdub3JlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zIHRoZSBzb2NrZXQgd291bGQgYmUgY2xvc2VkIGFuZCB0aGUgaGVhZHNldAorICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSBtb3ZlZCB0byBESVNDT05ORUNURUQsIGNhbmNlbCB0aGUgb3V0Z29pbmcgdGhyZWFkLgorICAgICAgICAgICAgICAgICAgICAvLyBpZiBpdCBzdGlsbCBpcyBpbiBDT05ORUNUSU5HIHN0YXRlCisgICAgICAgICAgICAgICAgICAgIGNhbmNlbENvbW1hbmQoQ09OTkVDVF9IRlBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQmx1ZXogd2lsbCBoYW5kbGUgdGhlIGRpc2Nvbm5lY3QuIElmIGJlY2F1c2Ugb2YgdGhpcyB0aGUgb3V0Z29pbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gaGFuZHNmcmVlIGNvbm5lY3Rpb24gaGFzIGZhaWxlZCwgdGhlbiByZXRyeS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TdGF0dXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJNc2cud2hhdCA9IG1Db21tYW5kOworICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UoZGVmZXJNc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVU5QQUlSOgorICAgICAgICAgICAgICAgIGNhc2UgQVVUT19DT05ORUNUX1BST0ZJTEVTOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFJBTlNJVElPTl9UT19TVEFCTEU6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQm9uZGVkRGV2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEluY29taW5nSGFuZHNmcmVlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgeworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbVN0YXR1cyA9IGZhbHNlOworICAgICAgICBwcml2YXRlIGludCBtQ29tbWFuZDsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZW50ZXIoKSB7CisgICAgICAgICAgICBsb2coIkVudGVyaW5nIEluY29taW5nSGFuZHNmcmVlIHN0YXRlIHdpdGg6ICIgKyBnZXRDdXJyZW50TWVzc2FnZSgpLndoYXQpOworICAgICAgICAgICAgbUNvbW1hbmQgPSBnZXRDdXJyZW50TWVzc2FnZSgpLndoYXQ7CisgICAgICAgICAgICBpZiAobUNvbW1hbmQgIT0gQ09OTkVDVF9IRlBfSU5DT01JTkcgJiYKKyAgICAgICAgICAgICAgICBtQ29tbWFuZCAhPSBESVNDT05ORUNUX0hGUF9JTkNPTUlORykgeworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIkVycm9yOiBJbmNvbWluZ0hhbmRzZnJlZSBzdGF0ZSB3aXRoIGNvbW1hbmQ6IiArIG1Db21tYW5kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1TdGF0dXMgPSBwcm9jZXNzQ29tbWFuZChtQ29tbWFuZCk7CisgICAgICAgICAgICBpZiAoIW1TdGF0dXMpIHNlbmRNZXNzYWdlKFRSQU5TSVRJT05fVE9fU1RBQkxFKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGxvZygiSW5jb21pbmdIYW5kc2ZyZWUgU3RhdGUgLT4gUHJvY2Vzc2luZyBNZXNzYWdlOiAiICsgbWVzc2FnZS53aGF0KTsKKyAgICAgICAgICAgIHN3aXRjaChtZXNzYWdlLndoYXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZQorICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJFcnJvcjogSW5jb21pbmcgY29ubmVjdGlvbiB3aXRoIGEgcGVuZGluZyBpbmNvbWluZyBjb25uZWN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX0lOQ09NSU5HOgorICAgICAgICAgICAgICAgICAgICAvLyBTZXJpYWxpemUgdGhlIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGtub3cgYXQgd2hhdCBzdGF0ZSB3ZSBhcmUgaW4gdGhlIGluY29taW5nIEhGUCBjb25uZWN0aW9uIHN0YXRlLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4gYmUgY2hhbmdpbmcgZnJvbSBESVNDT05ORUNURUQgdG8gQ09OTkVDVElORywgb3IKKyAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBDT05ORUNUSU5HIHRvIENPTk5FQ1RFRCwgc28gc2VyaWFsaXppbmcgdGhpcyBjb21tYW5kIGlzCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzYWZlc3Qgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZSwgd2Ugd2lsbCBhbHJlYWR5IGJlIERJU0NPTk5FQ1RFRAorICAgICAgICAgICAgICAgICAgICAvLyBieSB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQmx1ZXogaGFuZGxlcyBpbmNvbWluZyBBMkRQIGRpc2Nvbm5lY3QuCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgY2F1c2VzIGluY29taW5nIEhGUCB0byBmYWlsLCBpdCBpcyBtb3JlIG9mIGEgaGVhZHNldCBwcm9ibGVtCisgICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIGJvdGggY29ubmVjdGlvbnMgYXJlIGluY29taW5nIG9uZXMuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVU5QQUlSOgorICAgICAgICAgICAgICAgIGNhc2UgQVVUT19DT05ORUNUX1BST0ZJTEVTOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFJBTlNJVElPTl9UT19TVEFCTEU6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQm9uZGVkRGV2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIE91dGdvaW5nQTJkcCBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1TdGF0dXMgPSBmYWxzZTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbUNvbW1hbmQ7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGVudGVyKCkgeworICAgICAgICAgICAgbG9nKCJFbnRlcmluZyBPdXRnb2luZ0EyZHAgc3RhdGUgd2l0aDogIiArIGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdCk7CisgICAgICAgICAgICBtQ29tbWFuZCA9IGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdDsKKyAgICAgICAgICAgIGlmIChtQ29tbWFuZCAhPSBDT05ORUNUX0EyRFBfT1VUR09JTkcgJiYKKyAgICAgICAgICAgICAgICBtQ29tbWFuZCAhPSBESVNDT05ORUNUX0EyRFBfT1VUR09JTkcpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJFcnJvcjogT3V0Z29pbmdBMkRQIHN0YXRlIHdpdGggY29tbWFuZDoiICsgbUNvbW1hbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVN0YXR1cyA9IHByb2Nlc3NDb21tYW5kKG1Db21tYW5kKTsKKyAgICAgICAgICAgIGlmICghbVN0YXR1cykgc2VuZE1lc3NhZ2UoVFJBTlNJVElPTl9UT19TVEFCTEUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgeworICAgICAgICAgICAgbG9nKCJPdXRnb2luZ0EyZHAgU3RhdGUtPlByb2Nlc3NpbmcgTWVzc2FnZTogIiArIG1lc3NhZ2Uud2hhdCk7CisgICAgICAgICAgICBNZXNzYWdlIGRlZmVyTXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIHN3aXRjaChtZXNzYWdlLndoYXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWFuZChDT05ORUNUX0hGUF9PVVRHT0lORyk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY2FuY2VsIEEyRFAgb3V0Z29pbmcgYXMgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIGl0CisgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgZ2V0IGNhbmNlbGVkLgorICAgICAgICAgICAgICAgICAgICAvLyBJdCBtaWdodCBhbHJlYWR5IGJlIGNvbm5lY3RlZCBidXQgd2UgbWlnaHQgbm90IGhhdmUgZ290IHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBBMkRQX1NJTktfU1RBVEVfQ0hBTkdFLiBIZW5jZSwgbm8gcG9pbnQgZGlzY29ubmVjdGluZyBoZXJlLgorICAgICAgICAgICAgICAgICAgICAvLyBUaGUgd29yc3QgY2FzZSwgdGhlIGNvbm5lY3Rpb24gd2lsbCBmYWlsLCByZXRyeS4KKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHNhbWUgYXBwbGllcyB0byBEaXNjb25uZWN0aW5nIGFuIEEyRFAgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TdGF0dXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTXNnLndoYXQgPSBtQ29tbWFuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShkZWZlck1zZyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQoQ09OTkVDVF9IRlBfSU5DT01JTkcpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNhbmNlbCBBMkRQIG91dGdvaW5nIGFzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZQorICAgICAgICAgICAgICAgICAgICAvLyBpdCB3aWxsIGdldCBjYW5jZWxlZC4KKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHdvcnN0IGNhc2UsIHRoZSBjb25uZWN0aW9uIHdpbGwgZmFpbCwgcmV0cnkuCisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1zZy53aGF0ID0gbUNvbW1hbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UoZGVmZXJNc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX0lOQ09NSU5HOgorICAgICAgICAgICAgICAgICAgICAvLyBCbHVleiB3aWxsIHRha2UgY2FyZSBvZiBjb25mbGljdHMgYmV0d2VlbiBpbmNvbWluZyBhbmQgb3V0Z29pbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gY29ubmVjdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtSW5jb21pbmdBMmRwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0EyRFBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGFyZSBhbHJlYWR5IGRpc2Nvbm5lY3RlZAorICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIEhGUC4gU29tZXRpbWVzIEEyRFAgY29ubmVjdGlvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgLy8gZmFpbCBkdWUgdG8gdGhlIGRpc2Nvbm5lY3Rpb24gb2YgSEZQLiBTbyBhZGQgYSByZXRyeQorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIEEyRFAuCisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1zZy53aGF0ID0gbUNvbW1hbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UoZGVmZXJNc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9BMkRQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWFuZChESVNDT05ORUNUX0EyRFBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlLCB3aWxsIGJlIGhhbmRsZWQgYnkgQmx1ZXoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBVTlBBSVI6CisgICAgICAgICAgICAgICAgY2FzZSBBVVRPX0NPTk5FQ1RfUFJPRklMRVM6CisgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUUkFOU0lUSU9OX1RPX1NUQUJMRToKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1Cb25kZWREZXZpY2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5jb21pbmdBMmRwIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgeworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbVN0YXR1cyA9IGZhbHNlOworICAgICAgICBwcml2YXRlIGludCBtQ29tbWFuZDsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZW50ZXIoKSB7CisgICAgICAgICAgICBsb2coIkVudGVyaW5nIEluY29taW5nQTJkcCBzdGF0ZSB3aXRoOiAiICsgZ2V0Q3VycmVudE1lc3NhZ2UoKS53aGF0KTsKKyAgICAgICAgICAgIG1Db21tYW5kID0gZ2V0Q3VycmVudE1lc3NhZ2UoKS53aGF0OworICAgICAgICAgICAgaWYgKG1Db21tYW5kICE9IENPTk5FQ1RfQTJEUF9JTkNPTUlORyAmJgorICAgICAgICAgICAgICAgIG1Db21tYW5kICE9IERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORykgeworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIkVycm9yOiBJbmNvbWluZ0EyRFAgc3RhdGUgd2l0aCBjb21tYW5kOiIgKyBtQ29tbWFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU3RhdHVzID0gcHJvY2Vzc0NvbW1hbmQobUNvbW1hbmQpOworICAgICAgICAgICAgaWYgKCFtU3RhdHVzKSBzZW5kTWVzc2FnZShUUkFOU0lUSU9OX1RPX1NUQUJMRSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtZXNzYWdlKSB7CisgICAgICAgICAgICBsb2coIkluY29taW5nQTJkcCBTdGF0ZS0+UHJvY2Vzc2luZyBNZXNzYWdlOiAiICsgbWVzc2FnZS53aGF0KTsKKyAgICAgICAgICAgIE1lc3NhZ2UgZGVmZXJNc2cgPSBuZXcgTWVzc2FnZSgpOworICAgICAgICAgICAgc3dpdGNoKG1lc3NhZ2Uud2hhdCkgeworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9IRlBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGhhcHBlbiwgYnV0IHNlcmlhbGl6ZSB0aGUgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0EyRFBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gRGVmZXIgbWVzc2FnZSBhbmQgcmV0cnkKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZG4ndCBoYXBwZW4gYnV0IGlmIGRvZXMsIHdlIGNhbiBoYW5kbGUgaXQuCisgICAgICAgICAgICAgICAgICAgIC8vIERlcGVuZHMgaWYgdGhlIGhlYWRzZXQgY2FuIGhhbmRsZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gSW5jb21pbmcgQTJEUCB3aWxsIGJlIGhhbmRsZWQgYnkgQmx1ZXosIERpc2Nvbm5lY3QgSEZQCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzb2NrZXQgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2xvc2VkLgorICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBESVNDT05ORUNUX0EyRFBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBESVNDT05ORUNUX0EyRFBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSwgd2lsbCBiZSBoYW5kbGVkIGJ5IEJsdWV6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVU5QQUlSOgorICAgICAgICAgICAgICAgIGNhc2UgQVVUT19DT05ORUNUX1BST0ZJTEVTOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFJBTlNJVElPTl9UT19TVEFCTEU6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQm9uZGVkRGV2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgICAgICAgIH0KKyAgICB9CisKKworCisgICAgc3luY2hyb25pemVkIHZvaWQgY2FuY2VsQ29tbWFuZChpbnQgY29tbWFuZCkgeworICAgICAgICBpZiAoY29tbWFuZCA9PSBDT05ORUNUX0hGUF9PVVRHT0lORyApIHsKKyAgICAgICAgICAgIC8vIENhbmNlbCB0aGUgb3V0Z29pbmcgdGhyZWFkLgorICAgICAgICAgICAgaWYgKG1IZWFkc2V0U2VydmljZUNvbm5lY3RlZCkgeworICAgICAgICAgICAgICAgIG1IZWFkc2V0U2VydmljZS5jYW5jZWxDb25uZWN0VGhyZWFkKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBIZWFkc2V0U2VydmljZSBpcyBkb3duLiBQaG9uZSBwcm9jZXNzIG1vc3QgbGlrZWx5IGNyYXNoZWQuCisgICAgICAgICAgICAvLyBUaGUgdGhyZWFkIHdvdWxkIGhhdmUgZ290IGtpbGxlZC4KKyAgICAgICAgfQorICAgIH0KKworICAgIHN5bmNocm9uaXplZCB2b2lkIGRlZmVySGVhZHNldE1lc3NhZ2UoaW50IGNvbW1hbmQpIHsKKyAgICAgICAgTWVzc2FnZSBtc2cgPSBuZXcgTWVzc2FnZSgpOworICAgICAgICBtc2cud2hhdCA9IGNvbW1hbmQ7CisgICAgICAgIGRlZmVyTWVzc2FnZShtc2cpOworICAgIH0KKworICAgIHN5bmNocm9uaXplZCBib29sZWFuIHByb2Nlc3NDb21tYW5kKGludCBjb21tYW5kKSB7CisgICAgICAgIGxvZygiUHJvY2Vzc2luZyBjb21tYW5kOiIgKyBjb21tYW5kKTsKKyAgICAgICAgc3dpdGNoKGNvbW1hbmQpIHsKKyAgICAgICAgICAgIGNhc2UgIENPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgIGlmIChtSGVhZHNldFNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUhlYWRzZXRTZXJ2aWNlLmNvbm5lY3RIZWFkc2V0SW50ZXJuYWwobURldmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICBpZiAoIW1IZWFkc2V0U2VydmljZUNvbm5lY3RlZCkgeworICAgICAgICAgICAgICAgICAgICBkZWZlckhlYWRzZXRNZXNzYWdlKGNvbW1hbmQpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUhlYWRzZXRTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RJTkcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1IZWFkc2V0U2VydmljZS5hY2NlcHRJbmNvbWluZ0Nvbm5lY3QobURldmljZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtSGVhZHNldFN0YXRlID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRElTQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtSGVhZHNldFNlcnZpY2UuY3JlYXRlSW5jb21pbmdDb25uZWN0KG1EZXZpY2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgIGlmIChtQTJkcFNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUEyZHBTZXJ2aWNlLmNvbm5lY3RTaW5rSW50ZXJuYWwobURldmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT05ORUNUX0EyRFBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgLy8gaWdub3JlLCBCbHVleiB0YWtlcyBjYXJlCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgIGlmICghbUhlYWRzZXRTZXJ2aWNlQ29ubmVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmVySGVhZHNldE1lc3NhZ2UoY29tbWFuZCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1IZWFkc2V0U2VydmljZS5nZXRQcmlvcml0eShtRGV2aWNlKSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgQmx1ZXRvb3RoSGVhZHNldC5QUklPUklUWV9BVVRPX0NPTk5FQ1QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1IZWFkc2V0U2VydmljZS5zZXRQcmlvcml0eShtRGV2aWNlLCBCbHVldG9vdGhIZWFkc2V0LlBSSU9SSVRZX09OKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUhlYWRzZXRTZXJ2aWNlLmRpc2Nvbm5lY3RIZWFkc2V0SW50ZXJuYWwobURldmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVNDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAvLyBpZ25vcmUKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9BMkRQX0lOQ09NSU5HOgorICAgICAgICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgY2FzZSBESVNDT05ORUNUX0EyRFBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgaWYgKG1BMmRwU2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtQTJkcFNlcnZpY2UuZ2V0U2lua1ByaW9yaXR5KG1EZXZpY2UpID09CisgICAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX0FVVE9fQ09OTkVDVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUEyZHBTZXJ2aWNlLnNldFNpbmtQcmlvcml0eShtRGV2aWNlLCBCbHVldG9vdGhIZWFkc2V0LlBSSU9SSVRZX09OKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUEyZHBTZXJ2aWNlLmRpc2Nvbm5lY3RTaW5rSW50ZXJuYWwobURldmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBVTlBBSVI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLnJlbW92ZUJvbmRJbnRlcm5hbChtRGV2aWNlLmdldEFkZHJlc3MoKSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIkVycm9yOiBVbmtub3duIENvbW1hbmQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLypwYWNrYWdlKi8gQmx1ZXRvb3RoRGV2aWNlIGdldERldmljZSgpIHsKKyAgICAgICAgcmV0dXJuIG1EZXZpY2U7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGxvZyhTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBpZiAoREJHKSB7CisgICAgICAgICAgICBMb2cuaShUQUcsICJEZXZpY2U6IiArIG1EZXZpY2UgKyAiIE1lc3NhZ2U6IiArIG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aEhlYWRzZXQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9CbHVldG9vdGhIZWFkc2V0LmphdmEKaW5kZXggOTVlNjFiNi4uNGE5MWE4YyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aEhlYWRzZXQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvQmx1ZXRvb3RoSGVhZHNldC5qYXZhCkBAIC0xODksMTEgKzE4OSwxMSBAQAogICAgICAqIEByZXR1cm4gT25lIG9mIHRoZSBTVEFURV8gcmV0dXJuIGNvZGVzLCBvciBTVEFURV9FUlJPUiBpZiB0aGlzIHByb3h5CiAgICAgICogICAgICAgICBvYmplY3QgaXMgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gdGhlIEhlYWRzZXQgc2VydmljZS4KICAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldFN0YXRlKCkgeworICAgIHB1YmxpYyBpbnQgZ2V0U3RhdGUoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgewogICAgICAgICBpZiAoREJHKSBsb2coImdldFN0YXRlKCkiKTsKICAgICAgICAgaWYgKG1TZXJ2aWNlICE9IG51bGwpIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmdldFN0YXRlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmdldFN0YXRlKGRldmljZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkge0xvZy5lKFRBRywgZS50b1N0cmluZygpKTt9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBMb2cudyhUQUcsICJQcm94eSBub3QgYXR0YWNoZWQgdG8gc2VydmljZSIpOwpAQCAtMjcxLDExICsyNzEsMTEgQEAKICAgICAgKiBiZSBtYWRlIGFzeW5jaG9ybm91cy4gUmV0dXJucyBmYWxzZSBpZiB0aGlzIHByb3h5IG9iamVjdCBpcwogICAgICAqIG5vdCBjdXJyZW50bHkgY29ubmVjdGVkIHRvIHRoZSBIZWFkc2V0IHNlcnZpY2UuCiAgICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdEhlYWRzZXQoKSB7CisgICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdEhlYWRzZXQoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgewogICAgICAgICBpZiAoREJHKSBsb2coImRpc2Nvbm5lY3RIZWFkc2V0KCkiKTsKICAgICAgICAgaWYgKG1TZXJ2aWNlICE9IG51bGwpIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2UuZGlzY29ubmVjdEhlYWRzZXQoKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5kaXNjb25uZWN0SGVhZHNldChkZXZpY2UpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHtMb2cuZShUQUcsIGUudG9TdHJpbmcoKSk7fQogICAgICAgICB9IGVsc2UgewpAQCAtMzk1LDcgKzM5NSw2IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLQogICAgIC8qKgogICAgICAqIEluZGljYXRlcyBpZiBjdXJyZW50IHBsYXRmb3JtIHN1cHBvcnRzIHZvaWNlIGRpYWxpbmcgb3ZlciBibHVldG9vdGggU0NPLgogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB2b2ljZSBkaWFsaW5nIG92ZXIgYmx1ZXRvb3RoIGlzIHN1cHBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgpAQCAtNDA2LDYgKzQwNSw5MiBAQAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfYmx1ZXRvb3RoX3Njb19vZmZfY2FsbCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ2FuY2VsIHRoZSBvdXRnb2luZyBjb25uZWN0aW9uLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY2FuY2VsQ29ubmVjdFRocmVhZCgpIHsKKyAgICAgICAgaWYgKERCRykgbG9nKCJjYW5jZWxDb25uZWN0VGhyZWFkIik7CisgICAgICAgIGlmIChtU2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiBtU2VydmljZS5jYW5jZWxDb25uZWN0VGhyZWFkKCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkge0xvZy5lKFRBRywgZS50b1N0cmluZygpKTt9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJQcm94eSBub3QgYXR0YWNoZWQgdG8gc2VydmljZSIpOworICAgICAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCBMb2cuZ2V0U3RhY2tUcmFjZVN0cmluZyhuZXcgVGhyb3dhYmxlKCkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWNjZXB0IHRoZSBpbmNvbWluZyBjb25uZWN0aW9uLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gYWNjZXB0SW5jb21pbmdDb25uZWN0KEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKKyAgICAgICAgaWYgKERCRykgbG9nKCJhY2NlcHRJbmNvbWluZ0Nvbm5lY3QiKTsKKyAgICAgICAgaWYgKG1TZXJ2aWNlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmFjY2VwdEluY29taW5nQ29ubmVjdChkZXZpY2UpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHtMb2cuZShUQUcsIGUudG9TdHJpbmcoKSk7fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiUHJveHkgbm90IGF0dGFjaGVkIHRvIHNlcnZpY2UiKTsKKyAgICAgICAgICAgIGlmIChEQkcpIExvZy5kKFRBRywgTG9nLmdldFN0YWNrVHJhY2VTdHJpbmcobmV3IFRocm93YWJsZSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSB0aGUgY29ubmVjdCB0aHJlYWQgdGhlIGluY29taW5nIGNvbm5lY3Rpb24uCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjcmVhdGVJbmNvbWluZ0Nvbm5lY3QoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgeworICAgICAgICBpZiAoREJHKSBsb2coImNyZWF0ZUluY29taW5nQ29ubmVjdCIpOworICAgICAgICBpZiAobVNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuY3JlYXRlSW5jb21pbmdDb25uZWN0KGRldmljZSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkge0xvZy5lKFRBRywgZS50b1N0cmluZygpKTt9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJQcm94eSBub3QgYXR0YWNoZWQgdG8gc2VydmljZSIpOworICAgICAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCBMb2cuZ2V0U3RhY2tUcmFjZVN0cmluZyhuZXcgVGhyb3dhYmxlKCkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29ubmVjdCB0byBhIEJsdWV0b290aCBIZWFkc2V0LgorICAgICAqIE5vdGU6IFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIHNob3VsZG4ndCBiZSBleHBvc2VkCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb25uZWN0SGVhZHNldEludGVybmFsKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKKyAgICAgICAgaWYgKERCRykgbG9nKCJjb25uZWN0SGVhZHNldEludGVybmFsIik7CisgICAgICAgIGlmIChtU2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiBtU2VydmljZS5jb25uZWN0SGVhZHNldEludGVybmFsKGRldmljZSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkge0xvZy5lKFRBRywgZS50b1N0cmluZygpKTt9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJQcm94eSBub3QgYXR0YWNoZWQgdG8gc2VydmljZSIpOworICAgICAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCBMb2cuZ2V0U3RhY2tUcmFjZVN0cmluZyhuZXcgVGhyb3dhYmxlKCkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGlzY29ubmVjdCBhIEJsdWV0b290aCBIZWFkc2V0LgorICAgICAqIE5vdGU6IFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIHNob3VsZG4ndCBiZSBleHBvc2VkCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBkaXNjb25uZWN0SGVhZHNldEludGVybmFsKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKKyAgICAgICAgaWYgKERCRykgbG9nKCJkaXNjb25uZWN0SGVhZHNldEludGVybmFsIik7CisgICAgICAgIGlmIChtU2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuZGlzY29ubmVjdEhlYWRzZXRJbnRlcm5hbChkZXZpY2UpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHtMb2cuZShUQUcsIGUudG9TdHJpbmcoKSk7fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiUHJveHkgbm90IGF0dGFjaGVkIHRvIHNlcnZpY2UiKTsKKyAgICAgICAgICAgIGlmIChEQkcpIExvZy5kKFRBRywgTG9nLmdldFN0YWNrVHJhY2VTdHJpbmcobmV3IFRocm93YWJsZSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBwcml2YXRlIFNlcnZpY2VDb25uZWN0aW9uIG1Db25uZWN0aW9uID0gbmV3IFNlcnZpY2VDb25uZWN0aW9uKCkgewogICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VDb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUsIElCaW5kZXIgc2VydmljZSkgewogICAgICAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCAiUHJveHkgb2JqZWN0IGNvbm5lY3RlZCIpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aFByb2ZpbGVTdGF0ZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aFByb2ZpbGVTdGF0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NmRjYWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvQmx1ZXRvb3RoUHJvZmlsZVN0YXRlLmphdmEKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBhbmRyb2lkLmJsdWV0b290aDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLkhpZXJhcmNoaWNhbFN0YXRlOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lOworCisvKioKKyAqIFRoaXMgc3RhdGUgbWFjaGluZSBpcyB1c2VkIHRvIHNlcmlhbGl6ZSB0aGUgY29ubmVjdGlvbnMKKyAqIHRvIGEgcGFydGljdWxhciBwcm9maWxlLiBDdXJyZW50bHksIHdlIG9ubHkgYWxsb3cgb25lIGRldmljZQorICogdG8gYmUgY29ubmVjdGVkIHRvIGEgcGFydGljdWxhciBwcm9maWxlLgorICogU3RhdGVzOgorICogICAgICB7QGxpbmsgU3RhYmxlU3RhdGV9IDogTm8gcGVuZGluZyBjb21tYW5kcy4gU2VuZCB0aGUKKyAqICAgICAgY29tbWFuZCB0byB0aGUgYXBwcm9wcmlhdGUgcmVtb3RlIGRldmljZSBzcGVjaWZpYyBzdGF0ZSBtYWNoaW5lLgorICoKKyAqICAgICAge0BsaW5rIFBlbmRpbmdDb21tYW5kU3RhdGV9IDogQSBwcm9maWxlIGNvbm5lY3Rpb24gLyBkaXNjb25uZWN0aW9uCisgKiAgICAgIGNvbW1hbmQgaXMgYmVpbmcgZXhlY3V0ZWQuIFRoaXMgd2lsbCByZXN1bHQgaW4gYSBwcm9maWxlIHN0YXRlCisgKiAgICAgIGNoYW5nZS4gRGVmZXIgYWxsIGNvbW1hbmRzLgorICogQGhpZGUKKyAqLworCitwdWJsaWMgY2xhc3MgQmx1ZXRvb3RoUHJvZmlsZVN0YXRlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERCRyA9IHRydWU7IC8vIFNUT1BTSElQIC0gY2hhbmdlIHRvIGZhbHNlLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQmx1ZXRvb3RoUHJvZmlsZVN0YXRlIjsKKworICAgIHB1YmxpYyBzdGF0aWMgaW50IEhGUCA9IDA7CisgICAgcHVibGljIHN0YXRpYyBpbnQgQTJEUCA9IDE7CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgVFJBTlNJVElPTl9UT19TVEFCTEUgPSAxMDA7CisKKyAgICBwcml2YXRlIGludCBtUHJvZmlsZTsKKyAgICBwcml2YXRlIEJsdWV0b290aERldmljZSBtUGVuZGluZ0RldmljZTsKKyAgICBwcml2YXRlIFBlbmRpbmdDb21tYW5kU3RhdGUgbVBlbmRpbmdDb21tYW5kU3RhdGUgPSBuZXcgUGVuZGluZ0NvbW1hbmRTdGF0ZSgpOworICAgIHByaXZhdGUgU3RhYmxlU3RhdGUgbVN0YWJsZVN0YXRlID0gbmV3IFN0YWJsZVN0YXRlKCk7CisKKyAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1Ccm9hZGNhc3RSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgICAgIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisKKyAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpKSB7CisgICAgICAgICAgICAgICAgaW50IG5ld1N0YXRlID0gaW50ZW50LmdldEludEV4dHJhKEJsdWV0b290aEhlYWRzZXQuRVhUUkFfU1RBVEUsIDApOworICAgICAgICAgICAgICAgIGlmIChtUHJvZmlsZSA9PSBIRlAgJiYgKG5ld1N0YXRlID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfQ09OTkVDVEVEIHx8CisgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRElTQ09OTkVDVEVEKSkgeworICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShUUkFOU0lUSU9OX1RPX1NUQUJMRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbmV3U3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoQTJkcC5FWFRSQV9TSU5LX1NUQVRFLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobVByb2ZpbGUgPT0gQTJEUCAmJiAobmV3U3RhdGUgPT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9DT05ORUNURUQgfHwKKyAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUgPT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9ESVNDT05ORUNURUQpKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKFRSQU5TSVRJT05fVE9fU1RBQkxFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHVibGljIEJsdWV0b290aFByb2ZpbGVTdGF0ZShDb250ZXh0IGNvbnRleHQsIGludCBwcm9maWxlKSB7CisgICAgICAgIHN1cGVyKCJCbHVldG9vdGhQcm9maWxlU3RhdGU6IiArIHByb2ZpbGUpOworICAgICAgICBtUHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgIGFkZFN0YXRlKG1TdGFibGVTdGF0ZSk7CisgICAgICAgIGFkZFN0YXRlKG1QZW5kaW5nQ29tbWFuZFN0YXRlKTsKKyAgICAgICAgc2V0SW5pdGlhbFN0YXRlKG1TdGFibGVTdGF0ZSk7CisKKyAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihCbHVldG9vdGhBMmRwLkFDVElPTl9TSU5LX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBjb250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobUJyb2FkY2FzdFJlY2VpdmVyLCBmaWx0ZXIpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgU3RhYmxlU3RhdGUgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBlbnRlcigpIHsKKyAgICAgICAgICAgIGxvZygiRW50ZXJpbmcgU3RhYmxlIFN0YXRlIik7CisgICAgICAgICAgICBtUGVuZGluZ0RldmljZSA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIGlmIChtc2cud2hhdCAhPSBUUkFOU0lUSU9OX1RPX1NUQUJMRSkgeworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUGVuZGluZ0NvbW1hbmRTdGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgUGVuZGluZ0NvbW1hbmRTdGF0ZSBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGVudGVyKCkgeworICAgICAgICAgICAgbG9nKCJFbnRlcmluZyBQZW5kaW5nQ29tbWFuZFN0YXRlIFN0YXRlIik7CisgICAgICAgICAgICBkaXNwYXRjaE1lc3NhZ2UoZ2V0Q3VycmVudE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIGlmIChtc2cud2hhdCA9PSBUUkFOU0lUSU9OX1RPX1NUQUJMRSkgeworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtU3RhYmxlU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaE1lc3NhZ2UobXNnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGRpc3BhdGNoTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIGRldmljZVByb2ZpbGVNZ3IgPQorICAgICAgICAgICAgICAoQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlKW1zZy5vYmo7CisgICAgICAgICAgICBpbnQgY21kID0gbXNnLmFyZzE7CisgICAgICAgICAgICBpZiAobVBlbmRpbmdEZXZpY2UgPT0gbnVsbCB8fCBtUGVuZGluZ0RldmljZS5lcXVhbHMoZGV2aWNlUHJvZmlsZU1nci5nZXREZXZpY2UoKSkpIHsKKyAgICAgICAgICAgICAgICBtUGVuZGluZ0RldmljZSA9IGRldmljZVByb2ZpbGVNZ3IuZ2V0RGV2aWNlKCk7CisgICAgICAgICAgICAgICAgZGV2aWNlUHJvZmlsZU1nci5zZW5kTWVzc2FnZShjbWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBNZXNzYWdlIGRlZmVyTXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgICAgICBkZWZlck1zZy5hcmcxID0gY21kOworICAgICAgICAgICAgICAgIGRlZmVyTXNnLm9iaiA9IGRldmljZVByb2ZpbGVNZ3I7CisgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKGRlZmVyTXNnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBsb2coU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKERCRykgeworICAgICAgICAgICAgTG9nLmkoVEFHLCAiTWVzc2FnZToiICsgbWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aC5haWRsIGIvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0lCbHVldG9vdGguYWlkbAppbmRleCAwODY4Nzc5Li5lYTcxMDM0IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aC5haWRsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9JQmx1ZXRvb3RoLmFpZGwKQEAgLTY4LDQgKzY4LDggQEAKIAogICAgIGludCBhZGRSZmNvbW1TZXJ2aWNlUmVjb3JkKGluIFN0cmluZyBzZXJ2aWNlTmFtZSwgaW4gUGFyY2VsVXVpZCB1dWlkLCBpbnQgY2hhbm5lbCwgSUJpbmRlciBiKTsKICAgICB2b2lkIHJlbW92ZVNlcnZpY2VSZWNvcmQoaW50IGhhbmRsZSk7CisKKyAgICBib29sZWFuIGNvbm5lY3RIZWFkc2V0KFN0cmluZyBhZGRyZXNzKTsKKyAgICBib29sZWFuIGRpc2Nvbm5lY3RIZWFkc2V0KFN0cmluZyBhZGRyZXNzKTsKKyAgICBib29sZWFuIG5vdGlmeUluY29taW5nQ29ubmVjdGlvbihTdHJpbmcgYWRkcmVzcyk7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aEEyZHAuYWlkbCBiL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9JQmx1ZXRvb3RoQTJkcC5haWRsCmluZGV4IDE2OGZlM2IuLjQwZjEwNTggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9JQmx1ZXRvb3RoQTJkcC5haWRsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9JQmx1ZXRvb3RoQTJkcC5haWRsCkBAIC0zMyw0ICszMyw3IEBACiAgICAgaW50IGdldFNpbmtTdGF0ZShpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlKTsKICAgICBib29sZWFuIHNldFNpbmtQcmlvcml0eShpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlLCBpbnQgcHJpb3JpdHkpOwogICAgIGludCBnZXRTaW5rUHJpb3JpdHkoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7CisKKyAgICBib29sZWFuIGNvbm5lY3RTaW5rSW50ZXJuYWwoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7CisgICAgYm9vbGVhbiBkaXNjb25uZWN0U2lua0ludGVybmFsKGluIEJsdWV0b290aERldmljZSBkZXZpY2UpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0lCbHVldG9vdGhIZWFkc2V0LmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aEhlYWRzZXQuYWlkbAppbmRleCA2Y2NjZDUwLi5kOTZmMGNhIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aEhlYWRzZXQuYWlkbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aEhlYWRzZXQuYWlkbApAQCAtMjQsMTQgKzI0LDIwIEBACiAgKiB7QGhpZGV9CiAgKi8KIGludGVyZmFjZSBJQmx1ZXRvb3RoSGVhZHNldCB7Ci0gICAgaW50IGdldFN0YXRlKCk7CisgICAgaW50IGdldFN0YXRlKGluIEJsdWV0b290aERldmljZSBkZXZpY2UpOwogICAgIEJsdWV0b290aERldmljZSBnZXRDdXJyZW50SGVhZHNldCgpOwogICAgIGJvb2xlYW4gY29ubmVjdEhlYWRzZXQoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7Ci0gICAgdm9pZCBkaXNjb25uZWN0SGVhZHNldCgpOworICAgIHZvaWQgZGlzY29ubmVjdEhlYWRzZXQoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7CiAgICAgYm9vbGVhbiBpc0Nvbm5lY3RlZChpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlKTsKICAgICBib29sZWFuIHN0YXJ0Vm9pY2VSZWNvZ25pdGlvbigpOwogICAgIGJvb2xlYW4gc3RvcFZvaWNlUmVjb2duaXRpb24oKTsKICAgICBib29sZWFuIHNldFByaW9yaXR5KGluIEJsdWV0b290aERldmljZSBkZXZpY2UsIGludCBwcmlvcml0eSk7CiAgICAgaW50IGdldFByaW9yaXR5KGluIEJsdWV0b290aERldmljZSBkZXZpY2UpOwogICAgIGludCBnZXRCYXR0ZXJ5VXNhZ2VIaW50KCk7CisKKyAgICBib29sZWFuIGNyZWF0ZUluY29taW5nQ29ubmVjdChpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlKTsKKyAgICBib29sZWFuIGFjY2VwdEluY29taW5nQ29ubmVjdChpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlKTsKKyAgICBib29sZWFuIGNhbmNlbENvbm5lY3RUaHJlYWQoKTsKKyAgICBib29sZWFuIGNvbm5lY3RIZWFkc2V0SW50ZXJuYWwoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7CisgICAgYm9vbGVhbiBkaXNjb25uZWN0SGVhZHNldEludGVybmFsKGluIEJsdWV0b290aERldmljZSBkZXZpY2UpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZW50UmVzb2x2ZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvQ29udGVudFJlc29sdmVyLmphdmEKaW5kZXggYjQ3MThhYi4uNjlmNzYxMSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZW50UmVzb2x2ZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0NvbnRlbnRSZXNvbHZlci5qYXZhCkBAIC0xOCw2ICsxOCw3IEBACiAKIGltcG9ydCBhbmRyb2lkLmFjY291bnRzLkFjY291bnQ7CiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQ7CitpbXBvcnQgYW5kcm9pZC5hcHAuQXBwR2xvYmFsczsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKQEAgLTEzMDYsNyArMTMwNyw3IEBACiAgICAgICAgIC8vIEFjdGl2aXR5VGhyZWFkLmN1cnJlbnRQYWNrYWdlTmFtZSgpIG9ubHkgcmV0dXJucyBub24tbnVsbCBpZiB0aGUKICAgICAgICAgLy8gY3VycmVudCB0aHJlYWQgaXMgYW4gYXBwbGljYXRpb24gbWFpbiB0aHJlYWQuICBUaGlzIHBhcmFtZXRlciB0ZWxscwogICAgICAgICAvLyB1cyB3aGV0aGVyIGFuIGV2ZW50IGxvb3AgaXMgYmxvY2tlZCwgYW5kIGlmIHNvLCB3aGljaCBhcHAgaXQgaXMuCi0gICAgICAgIFN0cmluZyBibG9ja2luZ1BhY2thZ2UgPSBBY3Rpdml0eVRocmVhZC5jdXJyZW50UGFja2FnZU5hbWUoKTsKKyAgICAgICAgU3RyaW5nIGJsb2NraW5nUGFja2FnZSA9IEFwcEdsb2JhbHMuZ2V0SW5pdGlhbFBhY2thZ2UoKTsKIAogICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KAogICAgICAgICAgICAgRXZlbnRMb2dUYWdzLkNPTlRFTlRfUVVFUllfU0FNUExFLApAQCAtMTMyOSw3ICsxMzMwLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGJsb2NraW5nUGFja2FnZSA9IEFjdGl2aXR5VGhyZWFkLmN1cnJlbnRQYWNrYWdlTmFtZSgpOworICAgICAgICBTdHJpbmcgYmxvY2tpbmdQYWNrYWdlID0gQXBwR2xvYmFscy5nZXRJbml0aWFsUGFja2FnZSgpOwogICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KAogICAgICAgICAgICAgRXZlbnRMb2dUYWdzLkNPTlRFTlRfVVBEQVRFX1NBTVBMRSwKICAgICAgICAgICAgIHVyaS50b1N0cmluZygpLApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZW50U2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZW50U2VydmljZS5qYXZhCmluZGV4IDM3N2UzODMuLmZjMmRmYzAgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvQ29udGVudFNlcnZpY2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0NvbnRlbnRTZXJ2aWNlLmphdmEKQEAgLTUzNyw2ICs1MzcsOSBAQAogCiAgICAgICAgICAgICAvLyBMb29rIHRvIHNlZSBpZiB0aGUgcHJvcGVyIGNoaWxkIGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgICBTdHJpbmcgc2VnbWVudCA9IGdldFVyaVNlZ21lbnQodXJpLCBpbmRleCk7CisgICAgICAgICAgICBpZiAoc2VnbWVudCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBVcmkgKCIgKyB1cmkgKyAiKSB1c2VkIGZvciBvYnNlcnZlciIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaW50IE4gPSBtQ2hpbGRyZW4uc2l6ZSgpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgICAgICAgICAgICBPYnNlcnZlck5vZGUgbm9kZSA9IG1DaGlsZHJlbi5nZXQoaSk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0ludGVudFNlbmRlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9JbnRlbnRTZW5kZXIuamF2YQppbmRleCBlMTgyMDIxLi4wMDdhNzE1IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0ludGVudFNlbmRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvSW50ZW50U2VuZGVyLmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIAogcGFja2FnZSBhbmRyb2lkLmNvbnRlbnQ7CiAKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXJOYXRpdmU7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSUludGVudFNlbmRlcjsKQEAgLTE3MCw2ICsxNzEsMjUgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdGhhdCBjcmVhdGVkIHRoaXMKKyAgICAgKiBJbnRlbnRTZW5kZXIsIHRoYXQgaXMgdGhlIGlkZW50aXR5IHVuZGVyIHdoaWNoIHlvdSB3aWxsIGFjdHVhbGx5IGJlCisgICAgICogc2VuZGluZyB0aGUgSW50ZW50LiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBzdXBwbGllZCBieSB0aGUgc3lzdGVtLCBzbworICAgICAqIHRoYXQgYW4gYXBwbGljYXRpb24gY2FuIG5vdCBzcG9vZiBpdHMgcGFja2FnZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgUGVuZGluZ0ludGVudCwgb3IgbnVsbCBpZiB0aGVyZSBpcworICAgICAqIG5vbmUgYXNzb2NpYXRlZCB3aXRoIGl0LgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGFyZ2V0UGFja2FnZSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpCisgICAgICAgICAgICAgICAgLmdldFBhY2thZ2VGb3JJbnRlbnRTZW5kZXIobVRhcmdldCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBDb21wYXJpc29uIG9wZXJhdG9yIG9uIHR3byBJbnRlbnRTZW5kZXIgb2JqZWN0cywgc3VjaCB0aGF0IHRydWUKICAgICAgKiBpcyByZXR1cm5lZCB0aGVuIHRoZXkgYm90aCByZXByZXNlbnQgdGhlIHNhbWUgb3BlcmF0aW9uIGZyb20gdGhlCiAgICAgICogc2FtZSBwYWNrYWdlLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9TeW5jU3RvcmFnZUVuZ2luZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9TeW5jU3RvcmFnZUVuZ2luZS5qYXZhCmluZGV4IDk4YTQ5OTMuLjY0MTNjZWMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvU3luY1N0b3JhZ2VFbmdpbmUuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L1N5bmNTdG9yYWdlRW5naW5lLmphdmEKQEAgLTMxNyw3ICszMTcsOSBAQAogICAgICAgICBpZiAoc1N5bmNTdG9yYWdlRW5naW5lICE9IG51bGwpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBGaWxlIGRhdGFEaXIgPSBFbnZpcm9ubWVudC5nZXREYXRhRGlyZWN0b3J5KCk7CisgICAgICAgIC8vIFRoaXMgY2FsbCB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBkaXJlY3Rvcnkgd2hldGhlciBFbmNyeXB0ZWQgRmlsZSBTeXN0ZW1zIGlzCisgICAgICAgIC8vIGVuYWJsZWQgb3Igbm90LgorICAgICAgICBGaWxlIGRhdGFEaXIgPSBFbnZpcm9ubWVudC5nZXRTZWN1cmVEYXRhRGlyZWN0b3J5KCk7CiAgICAgICAgIHNTeW5jU3RvcmFnZUVuZ2luZSA9IG5ldyBTeW5jU3RvcmFnZUVuZ2luZShjb250ZXh0LCBkYXRhRGlyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vQWN0aXZpdHlJbmZvLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0FjdGl2aXR5SW5mby5qYXZhCmluZGV4IDIzOGI4NDAuLjM2NGM5MWUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vQWN0aXZpdHlJbmZvLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9BY3Rpdml0eUluZm8uamF2YQpAQCAtMTQ5LDE0ICsxNDksMzMgQEAKICAgICAgKiB7QGxpbmsgYW5kcm9pZC5SLmF0dHIjZmluaXNoT25DbG9zZVN5c3RlbURpYWxvZ3N9IGF0dHJpYnV0ZS4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HUyA9IDB4MDEwMDsKKyAgICAvKiogCisgICAgICogQml0IGluIHtAbGluayAjZmxhZ3N9IGNvcnJlc3BvbmRpbmcgdG8gYW4gaW1tZXJzaXZlIGFjdGl2aXR5CisgICAgICogdGhhdCB3aXNoZXMgbm90IHRvIGJlIGludGVycnVwdGVkIGJ5IG5vdGlmaWNhdGlvbnMuCisgICAgICogQXBwbGljYXRpb25zIHRoYXQgaGlkZSB0aGUgc3lzdGVtIG5vdGlmaWNhdGlvbiBiYXIgd2l0aAorICAgICAqIHtAbGluayBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMjRkxBR19GVUxMU0NSRUVOfQorICAgICAqIG1heSBzdGlsbCBiZSBpbnRlcnJ1cHRlZCBieSBoaWdoLXByaW9yaXR5IG5vdGlmaWNhdGlvbnM7IGZvciBleGFtcGxlLCBhbgorICAgICAqIGluY29taW5nIHBob25lIGNhbGwgbWF5IHVzZQorICAgICAqIHtAbGluayBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb24jZnVsbFNjcmVlbkludGVudCBmdWxsU2NyZWVuSW50ZW50fQorICAgICAqIHRvIHByZXNlbnQgYSBmdWxsLXNjcmVlbiBpbi1jYWxsIGFjdGl2aXR5IHRvIHRoZSB1c2VyLCBwYXVzaW5nIHRoZQorICAgICAqIGN1cnJlbnQgYWN0aXZpdHkgYXMgYSBzaWRlLWVmZmVjdC4gQW4gYWN0aXZpdHkgd2l0aAorICAgICAqIHtAbGluayAjRkxBR19JTU1FUlNJVkV9IHNldCwgaG93ZXZlciwgd2lsbCBub3QgYmUgaW50ZXJydXB0ZWQ7IHRoZQorICAgICAqIG5vdGlmaWNhdGlvbiBtYXkgYmUgc2hvd24gaW4gc29tZSBvdGhlciB3YXkgKHN1Y2ggYXMgYSBzbWFsbCBmbG9hdGluZworICAgICAqICJ0b2FzdCIgd2luZG93KS4KKyAgICAgKiB7QHNlZSBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb24jRkxBR19ISUdIX1BSSU9SSVRZfQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfSU1NRVJTSVZFID0gMHgwMjAwOwogICAgIC8qKgogICAgICAqIE9wdGlvbnMgdGhhdCBoYXZlIGJlZW4gc2V0IGluIHRoZSBhY3Rpdml0eSBkZWNsYXJhdGlvbiBpbiB0aGUKLSAgICAgKiBtYW5pZmVzdDoge0BsaW5rICNGTEFHX01VTFRJUFJPQ0VTU30sCisgICAgICogbWFuaWZlc3QuCisgICAgICogVGhlc2UgaW5jbHVkZToKKyAgICAgKiB7QGxpbmsgI0ZMQUdfTVVMVElQUk9DRVNTfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfRklOSVNIX09OX1RBU0tfTEFVTkNIfSwge0BsaW5rICNGTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfQUxXQVlTX1JFVEFJTl9UQVNLX1NUQVRFfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfU1RBVEVfTk9UX05FRURFRH0sIHtAbGluayAjRkxBR19FWENMVURFX0ZST01fUkVDRU5UU30sCiAgICAgICoge0BsaW5rICNGTEFHX0FMTE9XX1RBU0tfUkVQQVJFTlRJTkd9LCB7QGxpbmsgI0ZMQUdfTk9fSElTVE9SWX0sCi0gICAgICoge0BsaW5rICNGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HU30uCisgICAgICoge0BsaW5rICNGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HU30sCisgICAgICoge0BsaW5rICNGTEFHX0lNTUVSU0lWRX0KICAgICAgKi8KICAgICBwdWJsaWMgaW50IGZsYWdzOwogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0FwcGxpY2F0aW9uSW5mby5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9BcHBsaWNhdGlvbkluZm8uamF2YQppbmRleCAxNTc3ZjllLi43OTAxYjE1NSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9BcHBsaWNhdGlvbkluZm8uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0FwcGxpY2F0aW9uSW5mby5qYXZhCkBAIC0xNzQsNyArMTc0LDcgQEAKICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IHRydWUgd2hlbiB0aGUgYXBwbGljYXRpb24ncyB3aW5kb3cgY2FuIGJlCiAgICAgICogaW5jcmVhc2VkIGluIHNpemUgZm9yIGxhcmdlciBzY3JlZW5zLiAgQ29ycmVzcG9uZHMgdG8KICAgICAgKiB7QGxpbmsgYW5kcm9pZC5SLnN0eWxlYWJsZSNBbmRyb2lkTWFuaWZlc3RTdXBwb3J0c1NjcmVlbnNfbGFyZ2VTY3JlZW5zCi0gICAgICogYW5kcm9pZDpzbWFsbFNjcmVlbnN9LgorICAgICAqIGFuZHJvaWQ6bGFyZ2VTY3JlZW5zfS4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlMgPSAxPDwxMTsKICAgICAKQEAgLTI1Miw2ICsyNTIsOSBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfUkVTVE9SRV9BTllfVkVSU0lPTiA9IDE8PDE3OwogCiAgICAgLyoqCisgICAgICogVmFsdWUgZm9yIHtAbGluayAjZmxhZ3N9OiBTZXQgdG8gdHJ1ZSBpZiB0aGUgYXBwbGljYXRpb24gaGFzIGJlZW4KKyAgICAgKiBpbnN0YWxsZWQgdXNpbmcgdGhlIGZvcndhcmQgbG9jayBvcHRpb24uCisgICAgICoKICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IFNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcwogICAgICAqIGN1cnJlbnRseSBpbnN0YWxsZWQgb24gZXh0ZXJuYWwvcmVtb3ZhYmxlL3VucHJvdGVjdGVkIHN0b3JhZ2UuICBTdWNoCiAgICAgICogYXBwbGljYXRpb25zIG1heSBub3QgYmUgYXZhaWxhYmxlIGlmIHRoZWlyIHN0b3JhZ2UgaXMgbm90IGN1cnJlbnRseQpAQCAtMjYyLDEyICsyNjUsNDEgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0VYVEVSTkFMX1NUT1JBR0UgPSAxPDwxODsKIAogICAgIC8qKgorICAgICAqIFZhbHVlIGZvciB7QGxpbmsgI2ZsYWdzfTogdHJ1ZSB3aGVuIHRoZSBhcHBsaWNhdGlvbidzIHdpbmRvdyBjYW4gYmUKKyAgICAgKiBpbmNyZWFzZWQgaW4gc2l6ZSBmb3IgZXh0cmEgbGFyZ2Ugc2NyZWVucy4gIENvcnJlc3BvbmRzIHRvCisgICAgICoge0BsaW5rIGFuZHJvaWQuUi5zdHlsZWFibGUjQW5kcm9pZE1hbmlmZXN0U3VwcG9ydHNTY3JlZW5zX3hsYXJnZVNjcmVlbnMKKyAgICAgKiBhbmRyb2lkOnhsYXJnZVNjcmVlbnN9LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlMgPSAxPDwxOTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IHNldCB0byA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgYXBwbGljYXRpb24KKyAgICAgKiBoYXMgcmVwb3J0ZWQgdGhhdCBpdCBpcyBoZWF2eS13ZWlnaHQsIGFuZCB0aHVzIGNhbiBub3QgcGFydGljaXBhdGUgaW4KKyAgICAgKiB0aGUgbm9ybWFsIGFwcGxpY2F0aW9uIGxpZmVjeWNsZS4KKyAgICAgKiAKKyAgICAgKiA8cD5Db21lcyBmcm9tIHRoZQorICAgICAqIHtAbGluayBhbmRyb2lkLlIuc3R5bGVhYmxlI0FuZHJvaWRNYW5pZmVzdEFwcGxpY2F0aW9uX2hlYXZ5V2VpZ2h0IGFuZHJvaWQ6aGVhdnlXZWlnaHR9CisgICAgICogYXR0cmlidXRlIG9mIHRoZSAmbHQ7YXBwbGljYXRpb24mZ3Q7IHRhZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0hFQVZZX1dFSUdIVCA9IDE8PDIwOworICAgIAorICAgIC8qKgorICAgICAqIFZhbHVlIGZvciB7QGxpbmsgI2ZsYWdzfTogdGhpcyBpcyB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgc2V0CisgICAgICogaXRzIGFuZHJvaWQ6bmV2ZXJFbmNyeXB0IHRvIHRydWUsIGZhbHNlIG90aGVyd2lzZS4gSXQgaXMgdXNlZCB0byBzcGVjaWZ5CisgICAgICogdGhhdCB0aGlzIHBhY2thZ2Ugc3BlY2lmaWNhbGx5ICJvcHRzLW91dCIgb2YgYSBzZWN1cmVkIGZpbGUgc3lzdGVtIHNvbHV0aW9uLAorICAgICAqIGFuZCB3aWxsIGFsd2F5cyBzdG9yZSBpdHMgZGF0YSBpbi10aGUtY2xlYXIuCisgICAgICoKKyAgICAgKiB7QGhpZGV9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19ORVZFUl9FTkNSWVBUID0gMTw8MzA7CisKKyAgICAvKioKICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IFNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgYmVlbgogICAgICAqIGluc3RhbGxlZCB1c2luZyB0aGUgZm9yd2FyZCBsb2NrIG9wdGlvbi4KICAgICAgKgogICAgICAqIHtAaGlkZX0KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZPUldBUkRfTE9DSyA9IDE8PDIwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfRk9SV0FSRF9MT0NLID0gMTw8Mjk7CiAKICAgICAvKioKICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IFNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcwpAQCAtMjc1LDcgKzMwNyw3IEBACiAgICAgICoKICAgICAgKiB7QGhpZGV9CiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19OQVRJVkVfREVCVUdHQUJMRSA9IDE8PDIxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfTkFUSVZFX0RFQlVHR0FCTEUgPSAxPDwyODsKIAogICAgIC8qKgogICAgICAqIEZsYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgYXBwbGljYXRpb24uICBBbnkgY29tYmluYXRpb24gb2YKQEAgLTI4NSw3ICszMTcsOCBAQAogICAgICAqIHtAbGluayAjRkxBR19BTExPV19DTEVBUl9VU0VSX0RBVEF9LCB7QGxpbmsgI0ZMQUdfVVBEQVRFRF9TWVNURU1fQVBQfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfVEVTVF9PTkxZfSwge0BsaW5rICNGTEFHX1NVUFBPUlRTX1NNQUxMX1NDUkVFTlN9LAogICAgICAqIHtAbGluayAjRkxBR19TVVBQT1JUU19OT1JNQUxfU0NSRUVOU30sCi0gICAgICoge0BsaW5rICNGTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlN9LCB7QGxpbmsgI0ZMQUdfUkVTSVpFQUJMRV9GT1JfU0NSRUVOU30sCisgICAgICoge0BsaW5rICNGTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlN9LCB7QGxpbmsgI0ZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlN9LAorICAgICAqIHtAbGluayAjRkxBR19SRVNJWkVBQkxFX0ZPUl9TQ1JFRU5TfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfU1VQUE9SVFNfU0NSRUVOX0RFTlNJVElFU30sIHtAbGluayAjRkxBR19WTV9TQUZFX01PREV9CiAgICAgICovCiAgICAgcHVibGljIGludCBmbGFncyA9IDA7CkBAIC01MTcsNyArNTUwLDcgQEAKICAgICBwdWJsaWMgdm9pZCBkaXNhYmxlQ29tcGF0aWJpbGl0eU1vZGUoKSB7CiAgICAgICAgIGZsYWdzIHw9IChGTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlMgfCBGTEFHX1NVUFBPUlRTX05PUk1BTF9TQ1JFRU5TIHwKICAgICAgICAgICAgICAgICBGTEFHX1NVUFBPUlRTX1NNQUxMX1NDUkVFTlMgfCBGTEFHX1JFU0laRUFCTEVfRk9SX1NDUkVFTlMgfAotICAgICAgICAgICAgICAgIEZMQUdfU1VQUE9SVFNfU0NSRUVOX0RFTlNJVElFUyk7CisgICAgICAgICAgICAgICAgRkxBR19TVVBQT1JUU19TQ1JFRU5fREVOU0lUSUVTIHwgRkxBR19TVVBQT1JUU19YTEFSR0VfU0NSRUVOUyk7CiAgICAgfQogICAgIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9Db21wb25lbnRJbmZvLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0NvbXBvbmVudEluZm8uamF2YQppbmRleCBjYWZlMzcyLi5mMTZjNGVmIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0NvbXBvbmVudEluZm8uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0NvbXBvbmVudEluZm8uamF2YQpAQCAtMTU3LDYgKzE1NywxNCBAQAogICAgIC8qKgogICAgICAqIEBoaWRlCiAgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIERyYXdhYmxlIGxvYWREZWZhdWx0TG9nbyhQYWNrYWdlTWFuYWdlciBwbSkgeworICAgICAgICByZXR1cm4gYXBwbGljYXRpb25JbmZvLmxvYWRMb2dvKHBtKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQGhpZGUKKyAgICAgKi8KICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIEFwcGxpY2F0aW9uSW5mbyBnZXRBcHBsaWNhdGlvbkluZm8oKSB7CiAgICAgICAgIHJldHVybiBhcHBsaWNhdGlvbkluZm87CiAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlSXRlbUluZm8uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZUl0ZW1JbmZvLmphdmEKaW5kZXggMTRjMDY4MDAuLmQ3M2FhZjYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZUl0ZW1JbmZvLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlSXRlbUluZm8uamF2YQpAQCAtNjcsNiArNjcsMTQgQEAKICAgICBwdWJsaWMgaW50IGljb247CiAgICAgCiAgICAgLyoqCisgICAgICogQSBkcmF3YWJsZSByZXNvdXJjZSBpZGVudGlmaWVyIChpbiB0aGUgcGFja2FnZSdzIHJlc291cmNlcykgb2YgdGhpcworICAgICAqIGNvbXBvbmVudCdzIGxvZ28uIExvZ29zIG1heSBiZSBsYXJnZXIvd2lkZXIgdGhhbiBpY29ucyBhbmQgYXJlCisgICAgICogZGlzcGxheWVkIGJ5IGNlcnRhaW4gVUkgZWxlbWVudHMgaW4gcGxhY2Ugb2YgYSBuYW1lIG9yIG5hbWUvaWNvbgorICAgICAqIGNvbWJpbmF0aW9uLiBGcm9tIHRoZSAibG9nbyIgYXR0cmlidXRlIG9yLCBpZiBub3Qgc2V0LCAwLiAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGxvZ287CisgICAgCisgICAgLyoqCiAgICAgICogQWRkaXRpb25hbCBtZXRhLWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9uZW50LiAgVGhpcyBmaWVsZAogICAgICAqIHdpbGwgb25seSBiZSBmaWxsZWQgaW4gaWYgeW91IHNldCB0aGUKICAgICAgKiB7QGxpbmsgUGFja2FnZU1hbmFnZXIjR0VUX01FVEFfREFUQX0gZmxhZyB3aGVuIHJlcXVlc3RpbmcgdGhlIGluZm8uCkBAIC04NCw2ICs5Miw3IEBACiAgICAgICAgIG5vbkxvY2FsaXplZExhYmVsID0gb3JpZy5ub25Mb2NhbGl6ZWRMYWJlbDsKICAgICAgICAgaWYgKG5vbkxvY2FsaXplZExhYmVsICE9IG51bGwpIG5vbkxvY2FsaXplZExhYmVsID0gbm9uTG9jYWxpemVkTGFiZWwudG9TdHJpbmcoKS50cmltKCk7CiAgICAgICAgIGljb24gPSBvcmlnLmljb247CisgICAgICAgIGxvZ28gPSBvcmlnLmxvZ287CiAgICAgICAgIG1ldGFEYXRhID0gb3JpZy5tZXRhRGF0YTsKICAgICB9CiAKQEAgLTE1Miw2ICsxNjEsNDIgQEAKICAgICB9CiAgICAgCiAgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGN1cnJlbnQgZ3JhcGhpY2FsIGxvZ28gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gVGhpcworICAgICAqIHdpbGwgY2FsbCBiYWNrIG9uIHRoZSBnaXZlbiBQYWNrYWdlTWFuYWdlciB0byBsb2FkIHRoZSBsb2dvIGZyb20KKyAgICAgKiB0aGUgYXBwbGljYXRpb24uCisgICAgICogCisgICAgICogQHBhcmFtIHBtIEEgUGFja2FnZU1hbmFnZXIgZnJvbSB3aGljaCB0aGUgbG9nbyBjYW4gYmUgbG9hZGVkOyB1c3VhbGx5CisgICAgICogdGhlIFBhY2thZ2VNYW5hZ2VyIGZyb20gd2hpY2ggeW91IG9yaWdpbmFsbHkgcmV0cmlldmVkIHRoaXMgaXRlbS4KKyAgICAgKiAKKyAgICAgKiBAcmV0dXJuIFJldHVybnMgYSBEcmF3YWJsZSBjb250YWluaW5nIHRoZSBpdGVtJ3MgbG9nby4gSWYgdGhlIGl0ZW0KKyAgICAgKiBkb2VzIG5vdCBoYXZlIGEgbG9nbywgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gbnVsbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgRHJhd2FibGUgbG9hZExvZ28oUGFja2FnZU1hbmFnZXIgcG0pIHsKKyAgICAgICAgaWYgKGxvZ28gIT0gMCkgeworICAgICAgICAgICAgRHJhd2FibGUgZCA9IHBtLmdldERyYXdhYmxlKHBhY2thZ2VOYW1lLCBsb2dvLCBnZXRBcHBsaWNhdGlvbkluZm8oKSk7CisgICAgICAgICAgICBpZiAoZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxvYWREZWZhdWx0TG9nbyhwbSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHJpZXZlIHRoZSBkZWZhdWx0IGdyYXBoaWNhbCBsb2dvIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGl0ZW0uCisgICAgICogCisgICAgICogQHBhcmFtIHBtIEEgUGFja2FnZU1hbmFnZXIgZnJvbSB3aGljaCB0aGUgbG9nbyBjYW4gYmUgbG9hZGVkOyB1c3VhbGx5CisgICAgICogdGhlIFBhY2thZ2VNYW5hZ2VyIGZyb20gd2hpY2ggeW91IG9yaWdpbmFsbHkgcmV0cmlldmVkIHRoaXMgaXRlbS4KKyAgICAgKiAKKyAgICAgKiBAcmV0dXJuIFJldHVybnMgYSBEcmF3YWJsZSBjb250YWluaW5nIHRoZSBpdGVtJ3MgZGVmYXVsdCBsb2dvCisgICAgICogb3IgbnVsbCBpZiBubyBkZWZhdWx0IGxvZ28gaXMgYXZhaWxhYmxlLgorICAgICAqIAorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHJvdGVjdGVkIERyYXdhYmxlIGxvYWREZWZhdWx0TG9nbyhQYWNrYWdlTWFuYWdlciBwbSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisgICAgLyoqCiAgICAgICogTG9hZCBhbiBYTUwgcmVzb3VyY2UgYXR0YWNoZWQgdG8gdGhlIG1ldGEtZGF0YSBvZiB0aGlzIGl0ZW0uICBUaGlzIHdpbGwKICAgICAgKiByZXRyaWV2ZWQgdGhlIG5hbWUgbWV0YS1kYXRhIGVudHJ5LCBhbmQgaWYgZGVmaW5lZCBjYWxsIGJhY2sgb24gdGhlCiAgICAgICogZ2l2ZW4gUGFja2FnZU1hbmFnZXIgdG8gbG9hZCBpdHMgWE1MIGZpbGUgZnJvbSB0aGUgYXBwbGljYXRpb24uCkBAIC0xOTYsNiArMjQxLDcgQEAKICAgICAgICAgZGVzdC53cml0ZUludChsYWJlbFJlcyk7CiAgICAgICAgIFRleHRVdGlscy53cml0ZVRvUGFyY2VsKG5vbkxvY2FsaXplZExhYmVsLCBkZXN0LCBwYXJjZWxhYmxlRmxhZ3MpOwogICAgICAgICBkZXN0LndyaXRlSW50KGljb24pOworICAgICAgICBkZXN0LndyaXRlSW50KGxvZ28pOwogICAgICAgICBkZXN0LndyaXRlQnVuZGxlKG1ldGFEYXRhKTsKICAgICB9CiAgICAgCkBAIC0yMDYsNiArMjUyLDcgQEAKICAgICAgICAgbm9uTG9jYWxpemVkTGFiZWwKICAgICAgICAgICAgICAgICA9IFRleHRVdGlscy5DSEFSX1NFUVVFTkNFX0NSRUFUT1IuY3JlYXRlRnJvbVBhcmNlbChzb3VyY2UpOwogICAgICAgICBpY29uID0gc291cmNlLnJlYWRJbnQoKTsKKyAgICAgICAgbG9nbyA9IHNvdXJjZS5yZWFkSW50KCk7CiAgICAgICAgIG1ldGFEYXRhID0gc291cmNlLnJlYWRCdW5kbGUoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZU1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZU1hbmFnZXIuamF2YQppbmRleCA2OGI0NGU3Li4xYTViNDE5IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlTWFuYWdlci5qYXZhCkBAIC02NTYsNiArNjU2LDEzIEBACiAKICAgICAvKioKICAgICAgKiBGZWF0dXJlIGZvciB7QGxpbmsgI2dldFN5c3RlbUF2YWlsYWJsZUZlYXR1cmVzfSBhbmQKKyAgICAgKiB7QGxpbmsgI2hhc1N5c3RlbUZlYXR1cmV9OiBUaGUgZGV2aWNlIGhhcyBhIGZyb250IGZhY2luZyBjYW1lcmEuCisgICAgICovCisgICAgQFNka0NvbnN0YW50KFNka0NvbnN0YW50VHlwZS5GRUFUVVJFKQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfQ0FNRVJBX0ZST05UID0gImFuZHJvaWQuaGFyZHdhcmUuY2FtZXJhLmZyb250IjsKKworICAgIC8qKgorICAgICAqIEZlYXR1cmUgZm9yIHtAbGluayAjZ2V0U3lzdGVtQXZhaWxhYmxlRmVhdHVyZXN9IGFuZAogICAgICAqIHtAbGluayAjaGFzU3lzdGVtRmVhdHVyZX06IFRoZSBkZXZpY2Ugc3VwcG9ydHMgb25lIG9yIG1vcmUgbWV0aG9kcyBvZgogICAgICAqIHJlcG9ydGluZyBjdXJyZW50IGxvY2F0aW9uLgogICAgICAqLwpAQCAtMTU5Nyw2ICsxNjA0LDc5IEBACiAgICAgICAgICAgICB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uOwogCiAgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGxvZ28gYXNzb2NpYXRlZCB3aXRoIGFuIGFjdGl2aXR5LiAgR2l2ZW4gdGhlIGZ1bGwgbmFtZSBvZgorICAgICAqIGFuIGFjdGl2aXR5LCByZXRyaWV2ZXMgdGhlIGluZm9ybWF0aW9uIGFib3V0IGl0IGFuZCBjYWxscworICAgICAqIHtAbGluayBDb21wb25lbnRJbmZvI2xvYWRMb2dvIENvbXBvbmVudEluZm8ubG9hZExvZ28oKX0gdG8gcmV0dXJuIGl0cyBsb2dvLgorICAgICAqIElmIHRoZSBhY3Rpdml0eSBjYW4gbm90IGJlIGZvdW5kLCBOYW1lTm90Rm91bmRFeGNlcHRpb24gaXMgdGhyb3duLgorICAgICAqCisgICAgICogQHBhcmFtIGFjdGl2aXR5TmFtZSBOYW1lIG9mIHRoZSBhY3Rpdml0eSB3aG9zZSBsb2dvIGlzIHRvIGJlIHJldHJpZXZlZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW1hZ2Ugb2YgdGhlIGxvZ28gb3IgbnVsbCBpZiB0aGUgYWN0aXZpdHkgaGFzIG5vCisgICAgICogbG9nbyBzcGVjaWZpZWQuCisgICAgICogCisgICAgICogQHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb24gVGhyb3duIGlmIHRoZSByZXNvdXJjZXMgZm9yIHRoZSBnaXZlbgorICAgICAqIGFjdGl2aXR5IGNvdWxkIG5vdCBiZSBsb2FkZWQuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRBY3Rpdml0eUxvZ28oSW50ZW50KQorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBEcmF3YWJsZSBnZXRBY3Rpdml0eUxvZ28oQ29tcG9uZW50TmFtZSBhY3Rpdml0eU5hbWUpCisgICAgICAgICAgICB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGxvZ28gYXNzb2NpYXRlZCB3aXRoIGFuIEludGVudC4gIElmIGludGVudC5nZXRDbGFzc05hbWUoKSBpcworICAgICAqIHNldCwgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcmVzdWx0IG9mCisgICAgICogZ2V0QWN0aXZpdHlMb2dvKGludGVudC5nZXRDbGFzc05hbWUoKSkuICBPdGhlcndpc2UgaXQgcmVzb2x2ZXMgdGhlIGludGVudCdzCisgICAgICogY29tcG9uZW50IGFuZCByZXR1cm5zIHRoZSBsb2dvIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVzb2x2ZWQgY29tcG9uZW50LgorICAgICAqIElmIGludGVudC5nZXRDbGFzc05hbWUoKSBjYW4gbm90IGJlIGZvdW5kIG9yIHRoZSBJbnRlbnQgY2FuIG5vdCBiZSByZXNvbHZlZAorICAgICAqIHRvIGEgY29tcG9uZW50LCBOYW1lTm90Rm91bmRFeGNlcHRpb24gaXMgdGhyb3duLgorICAgICAqCisgICAgICogQHBhcmFtIGludGVudCBUaGUgaW50ZW50IGZvciB3aGljaCB5b3Ugd291bGQgbGlrZSB0byByZXRyaWV2ZSBhIGxvZ28uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGltYWdlIG9mIHRoZSBsb2dvLCBvciBudWxsIGlmIHRoZSBhY3Rpdml0eSBoYXMgbm8KKyAgICAgKiBsb2dvIHNwZWNpZmllZC4KKyAgICAgKiAKKyAgICAgKiBAdGhyb3dzIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBUaHJvd24gaWYgdGhlIHJlc291cmNlcyBmb3IgYXBwbGljYXRpb24KKyAgICAgKiBtYXRjaGluZyB0aGUgZ2l2ZW4gaW50ZW50IGNvdWxkIG5vdCBiZSBsb2FkZWQuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRBY3Rpdml0eUxvZ28oQ29tcG9uZW50TmFtZSkKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgRHJhd2FibGUgZ2V0QWN0aXZpdHlMb2dvKEludGVudCBpbnRlbnQpCisgICAgICAgICAgICB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGxvZ28gYXNzb2NpYXRlZCB3aXRoIGFuIGFwcGxpY2F0aW9uLiAgSWYgaXQgaGFzIG5vdCBzcGVjaWZpZWQKKyAgICAgKiBhIGxvZ28sIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmZvIEluZm9ybWF0aW9uIGFib3V0IGFwcGxpY2F0aW9uIGJlaW5nIHF1ZXJpZWQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGltYWdlIG9mIHRoZSBsb2dvLCBvciBudWxsIGlmIG5vIGxvZ28gaXMgc3BlY2lmaWVkCisgICAgICogYnkgdGhlIGFwcGxpY2F0aW9uLgorICAgICAqCisgICAgICogQHNlZSAjZ2V0QXBwbGljYXRpb25Mb2dvKFN0cmluZykKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgRHJhd2FibGUgZ2V0QXBwbGljYXRpb25Mb2dvKEFwcGxpY2F0aW9uSW5mbyBpbmZvKTsKKworICAgIC8qKgorICAgICAqIFJldHJpZXZlIHRoZSBsb2dvIGFzc29jaWF0ZWQgd2l0aCBhbiBhcHBsaWNhdGlvbi4gIEdpdmVuIHRoZSBuYW1lIG9mIHRoZQorICAgICAqIGFwcGxpY2F0aW9uJ3MgcGFja2FnZSwgcmV0cmlldmVzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBpdCBhbmQgY2FsbHMKKyAgICAgKiBnZXRBcHBsaWNhdGlvbkxvZ28oKSB0byByZXR1cm4gaXRzIGxvZ28uIElmIHRoZSBhcHBsaWNhdGlvbiBjYW4gbm90IGJlCisgICAgICogZm91bmQsIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBpcyB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFja2FnZU5hbWUgTmFtZSBvZiB0aGUgcGFja2FnZSB3aG9zZSBhcHBsaWNhdGlvbiBsb2dvIGlzIHRvIGJlCisgICAgICogICAgICAgICAgICAgICAgICAgIHJldHJpZXZlZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW1hZ2Ugb2YgdGhlIGxvZ28sIG9yIG51bGwgaWYgbm8gYXBwbGljYXRpb24gbG9nbworICAgICAqIGhhcyBiZWVuIHNwZWNpZmllZC4KKyAgICAgKiAKKyAgICAgKiBAdGhyb3dzIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBUaHJvd24gaWYgdGhlIHJlc291cmNlcyBmb3IgdGhlIGdpdmVuCisgICAgICogYXBwbGljYXRpb24gY291bGQgbm90IGJlIGxvYWRlZC4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldEFwcGxpY2F0aW9uTG9nbyhBcHBsaWNhdGlvbkluZm8pCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IERyYXdhYmxlIGdldEFwcGxpY2F0aW9uTG9nbyhTdHJpbmcgcGFja2FnZU5hbWUpCisgICAgICAgICAgICB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uOworCisgICAgLyoqCiAgICAgICogUmV0cmlldmUgdGV4dCBmcm9tIGEgcGFja2FnZS4gIFRoaXMgaXMgYSBsb3ctbGV2ZWwgQVBJIHVzZWQgYnkKICAgICAgKiB0aGUgdmFyaW91cyBwYWNrYWdlIG1hbmFnZXIgaW5mbyBzdHJ1Y3R1cmVzIChzdWNoIGFzCiAgICAgICoge0BsaW5rIENvbXBvbmVudEluZm99IHRvIGltcGxlbWVudCByZXRyaWV2YWwgb2YgdGhlaXIgYXNzb2NpYXRlZApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlUGFyc2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VQYXJzZXIuamF2YQppbmRleCAyYTIwYTJkLi41ZGM0MWQyIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VQYXJzZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VQYXJzZXIuamF2YQpAQCAtMTA1LDE3ICsxMDUsMTkgQEAKICAgICAgICAgZmluYWwgaW50IG5hbWVSZXM7CiAgICAgICAgIGZpbmFsIGludCBsYWJlbFJlczsKICAgICAgICAgZmluYWwgaW50IGljb25SZXM7CisgICAgICAgIGZpbmFsIGludCBsb2dvUmVzOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHRhZzsKICAgICAgICAgVHlwZWRBcnJheSBzYTsKICAgICAgICAgCiAgICAgICAgIFBhcnNlUGFja2FnZUl0ZW1BcmdzKFBhY2thZ2UgX293bmVyLCBTdHJpbmdbXSBfb3V0RXJyb3IsCi0gICAgICAgICAgICAgICAgaW50IF9uYW1lUmVzLCBpbnQgX2xhYmVsUmVzLCBpbnQgX2ljb25SZXMpIHsKKyAgICAgICAgICAgICAgICBpbnQgX25hbWVSZXMsIGludCBfbGFiZWxSZXMsIGludCBfaWNvblJlcywgaW50IF9sb2dvUmVzKSB7CiAgICAgICAgICAgICBvd25lciA9IF9vd25lcjsKICAgICAgICAgICAgIG91dEVycm9yID0gX291dEVycm9yOwogICAgICAgICAgICAgbmFtZVJlcyA9IF9uYW1lUmVzOwogICAgICAgICAgICAgbGFiZWxSZXMgPSBfbGFiZWxSZXM7CiAgICAgICAgICAgICBpY29uUmVzID0gX2ljb25SZXM7CisgICAgICAgICAgICBsb2dvUmVzID0gX2xvZ29SZXM7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xMjcsMTAgKzEyOSwxMCBAQAogICAgICAgICBpbnQgZmxhZ3M7CiAgICAgICAgIAogICAgICAgICBQYXJzZUNvbXBvbmVudEFyZ3MoUGFja2FnZSBfb3duZXIsIFN0cmluZ1tdIF9vdXRFcnJvciwKLSAgICAgICAgICAgICAgICBpbnQgX25hbWVSZXMsIGludCBfbGFiZWxSZXMsIGludCBfaWNvblJlcywKKyAgICAgICAgICAgICAgICBpbnQgX25hbWVSZXMsIGludCBfbGFiZWxSZXMsIGludCBfaWNvblJlcywgaW50IF9sb2dvUmVzLAogICAgICAgICAgICAgICAgIFN0cmluZ1tdIF9zZXBQcm9jZXNzZXMsIGludCBfcHJvY2Vzc1JlcywKICAgICAgICAgICAgICAgICBpbnQgX2Rlc2NyaXB0aW9uUmVzLCBpbnQgX2VuYWJsZWRSZXMpIHsKLSAgICAgICAgICAgIHN1cGVyKF9vd25lciwgX291dEVycm9yLCBfbmFtZVJlcywgX2xhYmVsUmVzLCBfaWNvblJlcyk7CisgICAgICAgICAgICBzdXBlcihfb3duZXIsIF9vdXRFcnJvciwgX25hbWVSZXMsIF9sYWJlbFJlcywgX2ljb25SZXMsIF9sb2dvUmVzKTsKICAgICAgICAgICAgIHNlcFByb2Nlc3NlcyA9IF9zZXBQcm9jZXNzZXM7CiAgICAgICAgICAgICBwcm9jZXNzUmVzID0gX3Byb2Nlc3NSZXM7CiAgICAgICAgICAgICBkZXNjcmlwdGlvblJlcyA9IF9kZXNjcmlwdGlvblJlczsKQEAgLTc4OSw2ICs3OTEsNyBAQAogICAgICAgICBpbnQgc3VwcG9ydHNTbWFsbFNjcmVlbnMgPSAxOwogICAgICAgICBpbnQgc3VwcG9ydHNOb3JtYWxTY3JlZW5zID0gMTsKICAgICAgICAgaW50IHN1cHBvcnRzTGFyZ2VTY3JlZW5zID0gMTsKKyAgICAgICAgaW50IHN1cHBvcnRzWExhcmdlU2NyZWVucyA9IDE7CiAgICAgICAgIGludCByZXNpemVhYmxlID0gMTsKICAgICAgICAgaW50IGFueURlbnNpdHkgPSAxOwogICAgICAgICAKQEAgLTk5Niw5ICs5OTksMTIgQEAKICAgICAgICAgICAgICAgICBzdXBwb3J0c0xhcmdlU2NyZWVucyA9IHNhLmdldEludGVnZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RTdXBwb3J0c1NjcmVlbnNfbGFyZ2VTY3JlZW5zLAogICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNMYXJnZVNjcmVlbnMpOworICAgICAgICAgICAgICAgIHN1cHBvcnRzWExhcmdlU2NyZWVucyA9IHNhLmdldEludGVnZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RTdXBwb3J0c1NjcmVlbnNfeGxhcmdlU2NyZWVucywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzWExhcmdlU2NyZWVucyk7CiAgICAgICAgICAgICAgICAgcmVzaXplYWJsZSA9IHNhLmdldEludGVnZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RTdXBwb3J0c1NjcmVlbnNfcmVzaXplYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzTGFyZ2VTY3JlZW5zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZWFibGUpOwogICAgICAgICAgICAgICAgIGFueURlbnNpdHkgPSBzYS5nZXRJbnRlZ2VyKAogICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0U3VwcG9ydHNTY3JlZW5zX2FueURlbnNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICBhbnlEZW5zaXR5KTsKQEAgLTExMzIsNiArMTEzOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPj0gYW5kcm9pZC5vcy5CdWlsZC5WRVJTSU9OX0NPREVTLkRPTlVUKSkgewogICAgICAgICAgICAgcGtnLmFwcGxpY2F0aW9uSW5mby5mbGFncyB8PSBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TOwogICAgICAgICB9CisgICAgICAgIGlmIChzdXBwb3J0c1hMYXJnZVNjcmVlbnMgPCAwIHx8IChzdXBwb3J0c1hMYXJnZVNjcmVlbnMgPiAwCisgICAgICAgICAgICAgICAgJiYgcGtnLmFwcGxpY2F0aW9uSW5mby50YXJnZXRTZGtWZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICA+PSBhbmRyb2lkLm9zLkJ1aWxkLlZFUlNJT05fQ09ERVMuR0lOR0VSQlJFQUQpKSB7CisgICAgICAgICAgICBwa2cuYXBwbGljYXRpb25JbmZvLmZsYWdzIHw9IEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX1hMQVJHRV9TQ1JFRU5TOworICAgICAgICB9CiAgICAgICAgIGlmIChyZXNpemVhYmxlIDwgMCB8fCAocmVzaXplYWJsZSA+IDAKICAgICAgICAgICAgICAgICAmJiBwa2cuYXBwbGljYXRpb25JbmZvLnRhcmdldFNka1ZlcnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgID49IGFuZHJvaWQub3MuQnVpbGQuVkVSU0lPTl9DT0RFUy5ET05VVCkpIHsKQEAgLTEyNDEsNyArMTI1Miw4IEBACiAgICAgICAgICAgICAgICAgIjxwZXJtaXNzaW9uLWdyb3VwPiIsIHNhLAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25Hcm91cF9uYW1lLAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25Hcm91cF9sYWJlbCwKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uR3JvdXBfaWNvbikpIHsKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uR3JvdXBfaWNvbiwKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uR3JvdXBfbG9nbykpIHsKICAgICAgICAgICAgIHNhLnJlY3ljbGUoKTsKICAgICAgICAgICAgIG1QYXJzZUVycm9yID0gUGFja2FnZU1hbmFnZXIuSU5TVEFMTF9QQVJTRV9GQUlMRURfTUFOSUZFU1RfTUFMRk9STUVEOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0xMjc2LDcgKzEyODgsOCBAQAogICAgICAgICAgICAgICAgICI8cGVybWlzc2lvbj4iLCBzYSwKICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uX25hbWUsCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvbl9sYWJlbCwKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uX2ljb24pKSB7CisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvbl9pY29uLAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25fbG9nbykpIHsKICAgICAgICAgICAgIHNhLnJlY3ljbGUoKTsKICAgICAgICAgICAgIG1QYXJzZUVycm9yID0gUGFja2FnZU1hbmFnZXIuSU5TVEFMTF9QQVJTRV9GQUlMRURfTUFOSUZFU1RfTUFMRk9STUVEOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0xMzI5LDcgKzEzNDIsOCBAQAogICAgICAgICAgICAgICAgICI8cGVybWlzc2lvbi10cmVlPiIsIHNhLAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25UcmVlX25hbWUsCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvblRyZWVfbGFiZWwsCi0gICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvblRyZWVfaWNvbikpIHsKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uVHJlZV9pY29uLAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25UcmVlX2xvZ28pKSB7CiAgICAgICAgICAgICBzYS5yZWN5Y2xlKCk7CiAgICAgICAgICAgICBtUGFyc2VFcnJvciA9IFBhY2thZ2VNYW5hZ2VyLklOU1RBTExfUEFSU0VfRkFJTEVEX01BTklGRVNUX01BTEZPUk1FRDsKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtMTM3Myw3ICsxMzg3LDggQEAKICAgICAgICAgICAgIG1QYXJzZUluc3RydW1lbnRhdGlvbkFyZ3MgPSBuZXcgUGFyc2VQYWNrYWdlSXRlbUFyZ3Mob3duZXIsIG91dEVycm9yLAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RJbnN0cnVtZW50YXRpb25fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0SW5zdHJ1bWVudGF0aW9uX2xhYmVsLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RJbnN0cnVtZW50YXRpb25faWNvbik7CisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEluc3RydW1lbnRhdGlvbl9pY29uLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RJbnN0cnVtZW50YXRpb25fbG9nbyk7CiAgICAgICAgICAgICBtUGFyc2VJbnN0cnVtZW50YXRpb25BcmdzLnRhZyA9ICI8aW5zdHJ1bWVudGF0aW9uPiI7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNDg1LDYgKzE1MDAsOCBAQAogCiAgICAgICAgIGFpLmljb24gPSBzYS5nZXRSZXNvdXJjZUlkKAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFwcGxpY2F0aW9uX2ljb24sIDApOworICAgICAgICBhaS5sb2dvID0gc2EuZ2V0UmVzb3VyY2VJZCgKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBcHBsaWNhdGlvbl9sb2dvLCAwKTsKICAgICAgICAgYWkudGhlbWUgPSBzYS5nZXRSZXNvdXJjZUlkKAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFwcGxpY2F0aW9uX3RoZW1lLCAwKTsKICAgICAgICAgYWkuZGVzY3JpcHRpb25SZXMgPSBzYS5nZXRSZXNvdXJjZUlkKApAQCAtMTU0Miw2ICsxNTU5LDEyIEBACiAgICAgICAgICAgICBhaS5mbGFncyB8PSBBcHBsaWNhdGlvbkluZm8uRkxBR19URVNUX09OTFk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoc2EuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBcHBsaWNhdGlvbl9uZXZlckVuY3J5cHQsCisgICAgICAgICAgICAgICAgZmFsc2UpKSB7CisgICAgICAgICAgICBhaS5mbGFncyB8PSBBcHBsaWNhdGlvbkluZm8uRkxBR19ORVZFUl9FTkNSWVBUOworICAgICAgICB9CisKICAgICAgICAgU3RyaW5nIHN0cjsKICAgICAgICAgc3RyID0gc2EuZ2V0Tm9uQ29uZmlndXJhdGlvblN0cmluZygKICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBcHBsaWNhdGlvbl9wZXJtaXNzaW9uLCAwKTsKQEAgLTE1NzcsNiArMTYwMCwxOCBAQAogICAgIAogICAgICAgICAgICAgYWkuZW5hYmxlZCA9IHNhLmdldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFwcGxpY2F0aW9uX2VuYWJsZWQsIHRydWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2EuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QXBwbGljYXRpb25faGVhdnlXZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkgeworICAgICAgICAgICAgICAgIGFpLmZsYWdzIHw9IEFwcGxpY2F0aW9uSW5mby5GTEFHX0hFQVZZX1dFSUdIVDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBBIGhlYXZ5LXdlaWdodCBhcHBsaWNhdGlvbiBjYW4gbm90IGJlIGluIGEgY3VzdG9tIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgLy8gV2UgY2FuIGRvIGRpcmVjdCBjb21wYXJlIGJlY2F1c2Ugd2UgaW50ZXJuIGFsbCBzdHJpbmdzLgorICAgICAgICAgICAgICAgIGlmIChhaS5wcm9jZXNzTmFtZSAhPSBudWxsICYmIGFpLnByb2Nlc3NOYW1lICE9IGFpLnBhY2thZ2VOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIG91dEVycm9yWzBdID0gIkhlYXZ5LXdlaWdodCBhcHBsaWNhdGlvbnMgY2FuIG5vdCB1c2UgY3VzdG9tIHByb2Nlc3NlcyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgc2EucmVjeWNsZSgpOwpAQCAtMTcwNSw3ICsxNzQwLDcgQEAKIAogICAgIHByaXZhdGUgYm9vbGVhbiBwYXJzZVBhY2thZ2VJdGVtSW5mbyhQYWNrYWdlIG93bmVyLCBQYWNrYWdlSXRlbUluZm8gb3V0SW5mbywKICAgICAgICAgICAgIFN0cmluZ1tdIG91dEVycm9yLCBTdHJpbmcgdGFnLCBUeXBlZEFycmF5IHNhLAotICAgICAgICAgICAgaW50IG5hbWVSZXMsIGludCBsYWJlbFJlcywgaW50IGljb25SZXMpIHsKKyAgICAgICAgICAgIGludCBuYW1lUmVzLCBpbnQgbGFiZWxSZXMsIGludCBpY29uUmVzLCBpbnQgbG9nb1JlcykgewogICAgICAgICBTdHJpbmcgbmFtZSA9IHNhLmdldE5vbkNvbmZpZ3VyYXRpb25TdHJpbmcobmFtZVJlcywgMCk7CiAgICAgICAgIGlmIChuYW1lID09IG51bGwpIHsKICAgICAgICAgICAgIG91dEVycm9yWzBdID0gdGFnICsgIiBkb2VzIG5vdCBzcGVjaWZ5IGFuZHJvaWQ6bmFtZSI7CkBAIC0xNzIzLDYgKzE3NTgsMTEgQEAKICAgICAgICAgICAgIG91dEluZm8uaWNvbiA9IGljb25WYWw7CiAgICAgICAgICAgICBvdXRJbmZvLm5vbkxvY2FsaXplZExhYmVsID0gbnVsbDsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IGxvZ29WYWwgPSBzYS5nZXRSZXNvdXJjZUlkKGxvZ29SZXMsIDApOworICAgICAgICBpZiAobG9nb1ZhbCAhPSAwKSB7CisgICAgICAgICAgICBvdXRJbmZvLmxvZ28gPSBsb2dvVmFsOworICAgICAgICB9CiAKICAgICAgICAgVHlwZWRWYWx1ZSB2ID0gc2EucGVla1ZhbHVlKGxhYmVsUmVzKTsKICAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiAob3V0SW5mby5sYWJlbFJlcz12LnJlc291cmNlSWQpID09IDApIHsKQEAgLTE3NDUsNiArMTc4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5X25hbWUsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5X2xhYmVsLAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBY3Rpdml0eV9pY29uLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBY3Rpdml0eV9sb2dvLAogICAgICAgICAgICAgICAgICAgICBtU2VwYXJhdGVQcm9jZXNzZXMsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5X3Byb2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5X2Rlc2NyaXB0aW9uLApAQCAtMTg0MCw2ICsxODgxLDEyIEBACiAgICAgICAgICAgICBhLmluZm8uZmxhZ3MgfD0gQWN0aXZpdHlJbmZvLkZMQUdfRklOSVNIX09OX0NMT1NFX1NZU1RFTV9ESUFMT0dTOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHNhLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlfaW1tZXJzaXZlLAorICAgICAgICAgICAgICAgIGZhbHNlKSkgeworICAgICAgICAgICAgYS5pbmZvLmZsYWdzIHw9IEFjdGl2aXR5SW5mby5GTEFHX0lNTUVSU0lWRTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghcmVjZWl2ZXIpIHsKICAgICAgICAgICAgIGEuaW5mby5sYXVuY2hNb2RlID0gc2EuZ2V0SW50KAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBY3Rpdml0eV9sYXVuY2hNb2RlLApAQCAtMTg2MCw2ICsxOTA3LDE0IEBACiAKICAgICAgICAgc2EucmVjeWNsZSgpOwogCisgICAgICAgIGlmIChyZWNlaXZlciAmJiAob3duZXIuYXBwbGljYXRpb25JbmZvLmZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX0hFQVZZX1dFSUdIVCkgIT0gMCkgeworICAgICAgICAgICAgLy8gQSBoZWF2eS13ZWlnaHQgYXBwbGljYXRpb24gY2FuIG5vdCBoYXZlIHJlY2VpdmVzIGluIGl0cyBtYWluIHByb2Nlc3MKKyAgICAgICAgICAgIC8vIFdlIGNhbiBkbyBkaXJlY3QgY29tcGFyZSBiZWNhdXNlIHdlIGludGVybiBhbGwgc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIChhLmluZm8ucHJvY2Vzc05hbWUgPT0gb3duZXIucGFja2FnZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBvdXRFcnJvclswXSA9ICJIZWF2eS13ZWlnaHQgYXBwbGljYXRpb25zIGNhbiBub3QgaGF2ZSByZWNlaXZlcnMgaW4gbWFpbiBwcm9jZXNzIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKG91dEVycm9yWzBdICE9IG51bGwpIHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CkBAIC0xOTQ3LDYgKzIwMDIsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBY3Rpdml0eUFsaWFzX25hbWUsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5QWxpYXNfbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5QWxpYXNfaWNvbiwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlBbGlhc19sb2dvLAogICAgICAgICAgICAgICAgICAgICBtU2VwYXJhdGVQcm9jZXNzZXMsCiAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5QWxpYXNfZGVzY3JpcHRpb24sCkBAIC0xOTgwLDYgKzIwMzYsNyBAQAogICAgICAgICBpbmZvLmNvbmZpZ0NoYW5nZXMgPSB0YXJnZXQuaW5mby5jb25maWdDaGFuZ2VzOwogICAgICAgICBpbmZvLmZsYWdzID0gdGFyZ2V0LmluZm8uZmxhZ3M7CiAgICAgICAgIGluZm8uaWNvbiA9IHRhcmdldC5pbmZvLmljb247CisgICAgICAgIGluZm8ubG9nbyA9IHRhcmdldC5pbmZvLmxvZ287CiAgICAgICAgIGluZm8ubGFiZWxSZXMgPSB0YXJnZXQuaW5mby5sYWJlbFJlczsKICAgICAgICAgaW5mby5ub25Mb2NhbGl6ZWRMYWJlbCA9IHRhcmdldC5pbmZvLm5vbkxvY2FsaXplZExhYmVsOwogICAgICAgICBpbmZvLmxhdW5jaE1vZGUgPSB0YXJnZXQuaW5mby5sYXVuY2hNb2RlOwpAQCAtMjA3NCw2ICsyMTMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UHJvdmlkZXJfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UHJvdmlkZXJfbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFByb3ZpZGVyX2ljb24sCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFByb3ZpZGVyX2xvZ28sCiAgICAgICAgICAgICAgICAgICAgIG1TZXBhcmF0ZVByb2Nlc3NlcywKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UHJvdmlkZXJfcHJvY2VzcywKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UHJvdmlkZXJfZGVzY3JpcHRpb24sCkBAIC0yMTM5LDYgKzIxOTcsMTUgQEAKIAogICAgICAgICBzYS5yZWN5Y2xlKCk7CiAKKyAgICAgICAgaWYgKChvd25lci5hcHBsaWNhdGlvbkluZm8uZmxhZ3MmQXBwbGljYXRpb25JbmZvLkZMQUdfSEVBVllfV0VJR0hUKSAhPSAwKSB7CisgICAgICAgICAgICAvLyBBIGhlYXZ5LXdlaWdodCBhcHBsaWNhdGlvbiBjYW4gbm90IGhhdmUgcHJvdmlkZXJzIGluIGl0cyBtYWluIHByb2Nlc3MKKyAgICAgICAgICAgIC8vIFdlIGNhbiBkbyBkaXJlY3QgY29tcGFyZSBiZWNhdXNlIHdlIGludGVybiBhbGwgc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIChwLmluZm8ucHJvY2Vzc05hbWUgPT0gb3duZXIucGFja2FnZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBvdXRFcnJvclswXSA9ICJIZWF2eS13ZWlnaHQgYXBwbGljYXRpb25zIGNhbiBub3QgaGF2ZSBwcm92aWRlcnMgaW4gbWFpbiBwcm9jZXNzIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKGNwbmFtZSA9PSBudWxsKSB7CiAgICAgICAgICAgICBvdXRFcnJvclswXSA9ICI8cHJvdmlkZXI+IGRvZXMgbm90IGluY3VkZSBhdXRob3JpdGllcyBhdHRyaWJ1dGUiOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0yMzM3LDYgKzI0MDQsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RTZXJ2aWNlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFNlcnZpY2VfbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFNlcnZpY2VfaWNvbiwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0U2VydmljZV9sb2dvLAogICAgICAgICAgICAgICAgICAgICBtU2VwYXJhdGVQcm9jZXNzZXMsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFNlcnZpY2VfcHJvY2VzcywKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0U2VydmljZV9kZXNjcmlwdGlvbiwKQEAgLTIzNzAsNiArMjQzOCwxNSBAQAogCiAgICAgICAgIHNhLnJlY3ljbGUoKTsKIAorICAgICAgICBpZiAoKG93bmVyLmFwcGxpY2F0aW9uSW5mby5mbGFncyZBcHBsaWNhdGlvbkluZm8uRkxBR19IRUFWWV9XRUlHSFQpICE9IDApIHsKKyAgICAgICAgICAgIC8vIEEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uIGNhbiBub3QgaGF2ZSBzZXJ2aWNlcyBpbiBpdHMgbWFpbiBwcm9jZXNzCisgICAgICAgICAgICAvLyBXZSBjYW4gZG8gZGlyZWN0IGNvbXBhcmUgYmVjYXVzZSB3ZSBpbnRlcm4gYWxsIHN0cmluZ3MuCisgICAgICAgICAgICBpZiAocy5pbmZvLnByb2Nlc3NOYW1lID09IG93bmVyLnBhY2thZ2VOYW1lKSB7CisgICAgICAgICAgICAgICAgb3V0RXJyb3JbMF0gPSAiSGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9ucyBjYW4gbm90IGhhdmUgc2VydmljZXMgaW4gbWFpbiBwcm9jZXNzIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaW50IG91dGVyRGVwdGggPSBwYXJzZXIuZ2V0RGVwdGgoKTsKICAgICAgICAgaW50IHR5cGU7CiAgICAgICAgIHdoaWxlICgodHlwZT1wYXJzZXIubmV4dCgpKSAhPSBYbWxQdWxsUGFyc2VyLkVORF9ET0NVTUVOVApAQCAtMjU0MCw2ICsyNjE3LDkgQEAKIAogICAgICAgICBvdXRJbmZvLmljb24gPSBzYS5nZXRSZXNvdXJjZUlkKAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEludGVudEZpbHRlcl9pY29uLCAwKTsKKyAgICAgICAgCisgICAgICAgIG91dEluZm8ubG9nbyA9IHNhLmdldFJlc291cmNlSWQoCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0SW50ZW50RmlsdGVyX2xvZ28sIDApOwogCiAgICAgICAgIHNhLnJlY3ljbGUoKTsKIApAQCAtMjgwMSw2ICsyODgxLDExIEBACiAgICAgICAgICAgICAgICAgb3V0SW5mby5pY29uID0gaWNvblZhbDsKICAgICAgICAgICAgICAgICBvdXRJbmZvLm5vbkxvY2FsaXplZExhYmVsID0gbnVsbDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGxvZ29WYWwgPSBhcmdzLnNhLmdldFJlc291cmNlSWQoYXJncy5sb2dvUmVzLCAwKTsKKyAgICAgICAgICAgIGlmIChsb2dvVmFsICE9IDApIHsKKyAgICAgICAgICAgICAgICBvdXRJbmZvLmxvZ28gPSBsb2dvVmFsOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBUeXBlZFZhbHVlIHYgPSBhcmdzLnNhLnBlZWtWYWx1ZShhcmdzLmxhYmVsUmVzKTsKICAgICAgICAgICAgIGlmICh2ICE9IG51bGwgJiYgKG91dEluZm8ubGFiZWxSZXM9di5yZXNvdXJjZUlkKSA9PSAwKSB7CkBAIC0zMTM1LDYgKzMyMjAsNyBAQAogICAgICAgICBwdWJsaWMgaW50IGxhYmVsUmVzOwogICAgICAgICBwdWJsaWMgQ2hhclNlcXVlbmNlIG5vbkxvY2FsaXplZExhYmVsOwogICAgICAgICBwdWJsaWMgaW50IGljb247CisgICAgICAgIHB1YmxpYyBpbnQgbG9nbzsKICAgICB9CiAKICAgICBwdWJsaWMgZmluYWwgc3RhdGljIGNsYXNzIEFjdGl2aXR5SW50ZW50SW5mbyBleHRlbmRzIEludGVudEluZm8gewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9yZXMvQ29tcGF0aWJpbGl0eUluZm8uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcmVzL0NvbXBhdGliaWxpdHlJbmZvLmphdmEKaW5kZXggMTFjNjdjYy4uZDBiYTU5MCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9yZXMvQ29tcGF0aWJpbGl0eUluZm8uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3Jlcy9Db21wYXRpYmlsaXR5SW5mby5qYXZhCkBAIC05OSw3ICs5OSwyMiBAQAogICAgICAqLwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT05GSUdVUkVEX0xBUkdFX1NDUkVFTlMgPSAxNjsgCiAKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0NBTElOR19FWFBBTkRBQkxFX01BU0sgPSBTQ0FMSU5HX1JFUVVJUkVEIHwgRVhQQU5EQUJMRSB8IExBUkdFX1NDUkVFTlM7CisgICAgLyoqCisgICAgICogQSBmbGFnIG1hc2sgdG8gaW5kaWNhdGVzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHN1cHBvcnRzIHhsYXJnZSBzY3JlZW5zLgorICAgICAqIFRoZSBmbGFnIGlzIHNldCB0byB0cnVlIGlmCisgICAgICogMSkgQXBwbGljYXRpb24gZGVjbGFyZXMgaXQgc3VwcG9ydHMgeGxhcmdlIHNjcmVlbnMgaW4gbWFuaWZlc3QgZmlsZSB1c2luZyA8c3VwcG9ydHMtc2NyZWVucz4gb3IKKyAgICAgKiAyKSBUaGUgc2NyZWVuIHNpemUgaXMgbm90IHhsYXJnZQorICAgICAqIHtAc2VlIGNvbXBhdGliaWxpdHlGbGFnfQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBYTEFSR0VfU0NSRUVOUyA9IDMyOworICAgIAorICAgIC8qKgorICAgICAqIEEgZmxhZyBtYXNrIHRvIHRlbGwgaWYgdGhlIGFwcGxpY2F0aW9uIHN1cHBvcnRzIHhsYXJnZSBzY3JlZW5zLiBUaGlzIGRpZmZlcnMKKyAgICAgKiBmcm9tIFhMQVJHRV9TQ1JFRU5TIGluIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB4bGFyZ2UKKyAgICAgKiBzY3JlZW5zIHdpbGwgYmUgbWFya2VkIGFzIHN1cHBvcnRpbmcgdGhlbSBpZiB0aGUgY3VycmVudCBzY3JlZW4gaXMgbm90CisgICAgICogeGxhcmdlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT05GSUdVUkVEX1hMQVJHRV9TQ1JFRU5TID0gNjQ7CiAKICAgICAvKioKICAgICAgKiBUaGUgZWZmZWN0aXZlIHNjcmVlbiBkZW5zaXR5IHdlIGhhdmUgc2VsZWN0ZWQgZm9yIHRoaXMgYXBwbGljYXRpb24uCkBAIC0xMjcsNiArMTQyLDkgQEAKICAgICAgICAgaWYgKChhcHBJbmZvLmZsYWdzICYgQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfTEFSR0VfU0NSRUVOUykgIT0gMCkgewogICAgICAgICAgICAgbUNvbXBhdGliaWxpdHlGbGFncyB8PSBMQVJHRV9TQ1JFRU5TIHwgQ09ORklHVVJFRF9MQVJHRV9TQ1JFRU5TOwogICAgICAgICB9CisgICAgICAgIGlmICgoYXBwSW5mby5mbGFncyAmIEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX1hMQVJHRV9TQ1JFRU5TKSAhPSAwKSB7CisgICAgICAgICAgICBtQ29tcGF0aWJpbGl0eUZsYWdzIHw9IFhMQVJHRV9TQ1JFRU5TIHwgQ09ORklHVVJFRF9YTEFSR0VfU0NSRUVOUzsKKyAgICAgICAgfQogICAgICAgICBpZiAoKGFwcEluZm8uZmxhZ3MgJiBBcHBsaWNhdGlvbkluZm8uRkxBR19SRVNJWkVBQkxFX0ZPUl9TQ1JFRU5TKSAhPSAwKSB7CiAgICAgICAgICAgICBtQ29tcGF0aWJpbGl0eUZsYWdzIHw9IEVYUEFOREFCTEUgfCBDT05GSUdVUkVEX0VYUEFOREFCTEU7CiAgICAgICAgIH0KQEAgLTE1Nyw2ICsxNzUsNyBAQAogICAgICAgICB0aGlzKEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX1NNQUxMX1NDUkVFTlMKICAgICAgICAgICAgICAgICB8IEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX05PUk1BTF9TQ1JFRU5TCiAgICAgICAgICAgICAgICAgfCBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TCisgICAgICAgICAgICAgICAgfCBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19YTEFSR0VfU0NSRUVOUwogICAgICAgICAgICAgICAgIHwgQXBwbGljYXRpb25JbmZvLkZMQUdfUkVTSVpFQUJMRV9GT1JfU0NSRUVOUywKICAgICAgICAgICAgICAgICBFWFBBTkRBQkxFIHwgQ09ORklHVVJFRF9FWFBBTkRBQkxFLAogICAgICAgICAgICAgICAgIERpc3BsYXlNZXRyaWNzLkRFTlNJVFlfREVWSUNFLApAQCAtMTk2LDYgKzIxNSwxNyBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIFNldHMgbGFyZ2Ugc2NyZWVuIGJpdCBpbiB0aGUgY29tcGF0aWJpbGl0eSBmbGFnLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFhMYXJnZVNjcmVlbnMoYm9vbGVhbiBleHBhbmRhYmxlKSB7CisgICAgICAgIGlmIChleHBhbmRhYmxlKSB7CisgICAgICAgICAgICBtQ29tcGF0aWJpbGl0eUZsYWdzIHw9IENvbXBhdGliaWxpdHlJbmZvLlhMQVJHRV9TQ1JFRU5TOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbUNvbXBhdGliaWxpdHlGbGFncyAmPSB+Q29tcGF0aWJpbGl0eUluZm8uWExBUkdFX1NDUkVFTlM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNvbmZpZ3VyZWQgdG8gYmUgZXhwYW5kYWJsZS4KICAgICAgKi8KICAgICBwdWJsaWMgYm9vbGVhbiBpc0NvbmZpZ3VyZWRFeHBhbmRhYmxlKCkgewpAQCAtMjEwLDYgKzI0MCwxMyBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgYXBwbGljYXRpb24gaXMgY29uZmlndXJlZCB0byBiZSBleHBhbmRhYmxlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzQ29uZmlndXJlZFhMYXJnZVNjcmVlbnMoKSB7CisgICAgICAgIHJldHVybiAobUNvbXBhdGliaWxpdHlGbGFncyAmIENvbXBhdGliaWxpdHlJbmZvLkNPTkZJR1VSRURfWExBUkdFX1NDUkVFTlMpICE9IDA7CisgICAgfQorCisgICAgLyoqCiAgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzY2FsaW5nIGlzIHJlcXVpcmVkCiAgICAgICovCiAgICAgcHVibGljIGJvb2xlYW4gaXNTY2FsaW5nUmVxdWlyZWQoKSB7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3Jlcy9Db25maWd1cmF0aW9uLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3Jlcy9Db25maWd1cmF0aW9uLmphdmEKaW5kZXggMWEwYzg2Ny4uMDI5NTZiYSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9yZXMvQ29uZmlndXJhdGlvbi5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcmVzL0NvbmZpZ3VyYXRpb24uamF2YQpAQCAtNjIsNiArNjIsNyBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDUkVFTkxBWU9VVF9TSVpFX1NNQUxMID0gMHgwMTsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTQ1JFRU5MQVlPVVRfU0laRV9OT1JNQUwgPSAweDAyOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDUkVFTkxBWU9VVF9TSVpFX0xBUkdFID0gMHgwMzsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTQ1JFRU5MQVlPVVRfU0laRV9YTEFSR0UgPSAweDA0OwogICAgIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDUkVFTkxBWU9VVF9MT05HX01BU0sgPSAweDMwOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDUkVFTkxBWU9VVF9MT05HX1VOREVGSU5FRCA9IDB4MDA7CkBAIC04Miw3ICs4Myw3IEBACiAgICAgICogPHA+VGhlIHtAbGluayAjU0NSRUVOTEFZT1VUX1NJWkVfTUFTS30gYml0cyBkZWZpbmUgdGhlIG92ZXJhbGwgc2l6ZQogICAgICAqIG9mIHRoZSBzY3JlZW4uICBUaGV5IG1heSBiZSBvbmUgb2YKICAgICAgKiB7QGxpbmsgI1NDUkVFTkxBWU9VVF9TSVpFX1NNQUxMfSwge0BsaW5rICNTQ1JFRU5MQVlPVVRfU0laRV9OT1JNQUx9LAotICAgICAqIG9yIHtAbGluayAjU0NSRUVOTEFZT1VUX1NJWkVfTEFSR0V9LgorICAgICAqIHtAbGluayAjU0NSRUVOTEFZT1VUX1NJWkVfTEFSR0V9LCBvciB7QGxpbmsgI1NDUkVFTkxBWU9VVF9TSVpFX1hMQVJHRX0uCiAgICAgICogCiAgICAgICogPHA+VGhlIHtAbGluayAjU0NSRUVOTEFZT1VUX0xPTkdfTUFTS30gZGVmaW5lcyB3aGV0aGVyIHRoZSBzY3JlZW4KICAgICAgKiBpcyB3aWRlci90YWxsZXIgdGhhbiBub3JtYWwuICBUaGV5IG1heSBiZSBvbmUgb2YKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL0N1cnNvci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2UvQ3Vyc29yLmphdmEKaW5kZXggNzkxNzhmNC4uNjUzOTE1NiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2UvQ3Vyc29yLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2UvQ3Vyc29yLmphdmEKQEAgLTI1LDYgKzI1LDkgQEAKIC8qKgogICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgcmFuZG9tIHJlYWQtd3JpdGUgYWNjZXNzIHRvIHRoZSByZXN1bHQgc2V0IHJldHVybmVkCiAgKiBieSBhIGRhdGFiYXNlIHF1ZXJ5LgorICoKKyAqIEN1cnNvciBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBiZSBzeW5jaHJvbml6ZWQgc28gY29kZSB1c2luZyBhIEN1cnNvciBmcm9tIG11bHRpcGxlCisgKiB0aHJlYWRzIHNob3VsZCBwZXJmb3JtIGl0cyBvd24gc3luY2hyb25pemF0aW9uIHdoZW4gdXNpbmcgdGhlIEN1cnNvci4KICAqLwogcHVibGljIGludGVyZmFjZSBDdXJzb3IgewogICAgIC8qKgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZUN1cnNvci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZUN1cnNvci5qYXZhCmluZGV4IDZlNWIzZTEuLmM3ZTU4ZmEgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVDdXJzb3IuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlQ3Vyc29yLmphdmEKQEAgLTM2LDYgKzM2LDkgQEAKIC8qKgogICogQSBDdXJzb3IgaW1wbGVtZW50YXRpb24gdGhhdCBleHBvc2VzIHJlc3VsdHMgZnJvbSBhIHF1ZXJ5IG9uIGEKICAqIHtAbGluayBTUUxpdGVEYXRhYmFzZX0uCisgKgorICogU1FMaXRlQ3Vyc29yIGlzIG5vdCBpbnRlcm5hbGx5IHN5bmNocm9uaXplZCBzbyBjb2RlIHVzaW5nIGEgU1FMaXRlQ3Vyc29yIGZyb20gbXVsdGlwbGUKKyAqIHRocmVhZHMgc2hvdWxkIHBlcmZvcm0gaXRzIG93biBzeW5jaHJvbml6YXRpb24gd2hlbiB1c2luZyB0aGUgU1FMaXRlQ3Vyc29yLgogICovCiBwdWJsaWMgY2xhc3MgU1FMaXRlQ3Vyc29yIGV4dGVuZHMgQWJzdHJhY3RXaW5kb3dlZEN1cnNvciB7CiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQ3Vyc29yIjsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVEYXRhYmFzZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZURhdGFiYXNlLmphdmEKaW5kZXggZmI1NTA3ZC4uY2RjOWJiYiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZURhdGFiYXNlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZURhdGFiYXNlLmphdmEKQEAgLTE5LDYgKzE5LDcgQEAKIGltcG9ydCBjb20uZ29vZ2xlLmFuZHJvaWQuY29sbGVjdC5NYXBzOwogCiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQ7CitpbXBvcnQgYW5kcm9pZC5hcHAuQXBwR2xvYmFsczsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlczsKIGltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcjsKIGltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkRhdGFiYXNlVXRpbHM7CkBAIC0zMyw2ICszNCw4IEBACiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuUGFpcjsKIAoraW1wb3J0IGRhbHZpay5zeXN0ZW0uQmxvY2tHdWFyZDsKKwogaW1wb3J0IGphdmEuaW8uRmlsZTsKIGltcG9ydCBqYXZhLmxhbmcucmVmLldlYWtSZWZlcmVuY2U7CiBpbXBvcnQgamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7CkBAIC0xMTM0LDcgKzExMzcsOCBAQAogICAgICAqCiAgICAgICogQHBhcmFtIHNxbCBUaGUgcmF3IFNRTCBzdGF0ZW1lbnQsIG1heSBjb250YWluID8gZm9yIHVua25vd24gdmFsdWVzIHRvIGJlCiAgICAgICogICAgICAgICAgICBib3VuZCBsYXRlci4KLSAgICAgKiBAcmV0dXJuIGEgcHJlLWNvbXBpbGVkIHN0YXRlbWVudCBvYmplY3QuCisgICAgICogQHJldHVybiBBIHByZS1jb21waWxlZCB7QGxpbmsgU1FMaXRlU3RhdGVtZW50fSBvYmplY3QuIE5vdGUgdGhhdAorICAgICAqIHtAbGluayBTUUxpdGVTdGF0ZW1lbnR9cyBhcmUgbm90IHN5bmNocm9uaXplZCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICovCiAgICAgcHVibGljIFNRTGl0ZVN0YXRlbWVudCBjb21waWxlU3RhdGVtZW50KFN0cmluZyBzcWwpIHRocm93cyBTUUxFeGNlcHRpb24gewogICAgICAgICBsb2NrKCk7CkBAIC0xMTc1LDcgKzExNzksOCBAQAogICAgICAqICAgICAgICAgICAgZGVmYXVsdCBzb3J0IG9yZGVyLCB3aGljaCBtYXkgYmUgdW5vcmRlcmVkLgogICAgICAqIEBwYXJhbSBsaW1pdCBMaW1pdHMgdGhlIG51bWJlciBvZiByb3dzIHJldHVybmVkIGJ5IHRoZSBxdWVyeSwKICAgICAgKiAgICAgICAgICAgIGZvcm1hdHRlZCBhcyBMSU1JVCBjbGF1c2UuIFBhc3NpbmcgbnVsbCBkZW5vdGVzIG5vIExJTUlUIGNsYXVzZS4KLSAgICAgKiBAcmV0dXJuIEEgQ3Vyc29yIG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5CisgICAgICogQHJldHVybiBBIHtAbGluayBDdXJzb3J9IG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5LiBOb3RlIHRoYXQKKyAgICAgKiB7QGxpbmsgQ3Vyc29yfXMgYXJlIG5vdCBzeW5jaHJvbml6ZWQsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAqIEBzZWUgQ3Vyc29yCiAgICAgICovCiAgICAgcHVibGljIEN1cnNvciBxdWVyeShib29sZWFuIGRpc3RpbmN0LCBTdHJpbmcgdGFibGUsIFN0cmluZ1tdIGNvbHVtbnMsCkBAIC0xMjEzLDcgKzEyMTgsOCBAQAogICAgICAqICAgICAgICAgICAgZGVmYXVsdCBzb3J0IG9yZGVyLCB3aGljaCBtYXkgYmUgdW5vcmRlcmVkLgogICAgICAqIEBwYXJhbSBsaW1pdCBMaW1pdHMgdGhlIG51bWJlciBvZiByb3dzIHJldHVybmVkIGJ5IHRoZSBxdWVyeSwKICAgICAgKiAgICAgICAgICAgIGZvcm1hdHRlZCBhcyBMSU1JVCBjbGF1c2UuIFBhc3NpbmcgbnVsbCBkZW5vdGVzIG5vIExJTUlUIGNsYXVzZS4KLSAgICAgKiBAcmV0dXJuIEEgQ3Vyc29yIG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5CisgICAgICogQHJldHVybiBBIHtAbGluayBDdXJzb3J9IG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5LiBOb3RlIHRoYXQKKyAgICAgKiB7QGxpbmsgQ3Vyc29yfXMgYXJlIG5vdCBzeW5jaHJvbml6ZWQsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAqIEBzZWUgQ3Vyc29yCiAgICAgICovCiAgICAgcHVibGljIEN1cnNvciBxdWVyeVdpdGhGYWN0b3J5KEN1cnNvckZhY3RvcnkgY3Vyc29yRmFjdG9yeSwKQEAgLTEyNTQsNyArMTI2MCw4IEBACiAgICAgICogQHBhcmFtIG9yZGVyQnkgSG93IHRvIG9yZGVyIHRoZSByb3dzLCBmb3JtYXR0ZWQgYXMgYW4gU1FMIE9SREVSIEJZIGNsYXVzZQogICAgICAqICAgICAgICAgICAgKGV4Y2x1ZGluZyB0aGUgT1JERVIgQlkgaXRzZWxmKS4gUGFzc2luZyBudWxsIHdpbGwgdXNlIHRoZQogICAgICAqICAgICAgICAgICAgZGVmYXVsdCBzb3J0IG9yZGVyLCB3aGljaCBtYXkgYmUgdW5vcmRlcmVkLgotICAgICAqIEByZXR1cm4gQSB7QGxpbmsgQ3Vyc29yfSBvYmplY3QsIHdoaWNoIGlzIHBvc2l0aW9uZWQgYmVmb3JlIHRoZSBmaXJzdCBlbnRyeQorICAgICAqIEByZXR1cm4gQSB7QGxpbmsgQ3Vyc29yfSBvYmplY3QsIHdoaWNoIGlzIHBvc2l0aW9uZWQgYmVmb3JlIHRoZSBmaXJzdCBlbnRyeS4gTm90ZSB0aGF0CisgICAgICoge0BsaW5rIEN1cnNvcn1zIGFyZSBub3Qgc3luY2hyb25pemVkLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4KICAgICAgKiBAc2VlIEN1cnNvcgogICAgICAqLwogICAgIHB1YmxpYyBDdXJzb3IgcXVlcnkoU3RyaW5nIHRhYmxlLCBTdHJpbmdbXSBjb2x1bW5zLCBTdHJpbmcgc2VsZWN0aW9uLApAQCAtMTI5MSw3ICsxMjk4LDggQEAKICAgICAgKiAgICAgICAgICAgIGRlZmF1bHQgc29ydCBvcmRlciwgd2hpY2ggbWF5IGJlIHVub3JkZXJlZC4KICAgICAgKiBAcGFyYW0gbGltaXQgTGltaXRzIHRoZSBudW1iZXIgb2Ygcm93cyByZXR1cm5lZCBieSB0aGUgcXVlcnksCiAgICAgICogICAgICAgICAgICBmb3JtYXR0ZWQgYXMgTElNSVQgY2xhdXNlLiBQYXNzaW5nIG51bGwgZGVub3RlcyBubyBMSU1JVCBjbGF1c2UuCi0gICAgICogQHJldHVybiBBIHtAbGluayBDdXJzb3J9IG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5CisgICAgICogQHJldHVybiBBIHtAbGluayBDdXJzb3J9IG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5LiBOb3RlIHRoYXQKKyAgICAgKiB7QGxpbmsgQ3Vyc29yfXMgYXJlIG5vdCBzeW5jaHJvbml6ZWQsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAqIEBzZWUgQ3Vyc29yCiAgICAgICovCiAgICAgcHVibGljIEN1cnNvciBxdWVyeShTdHJpbmcgdGFibGUsIFN0cmluZ1tdIGNvbHVtbnMsIFN0cmluZyBzZWxlY3Rpb24sCkBAIC0xMzA5LDcgKzEzMTcsOCBAQAogICAgICAqIEBwYXJhbSBzZWxlY3Rpb25BcmdzIFlvdSBtYXkgaW5jbHVkZSA/cyBpbiB3aGVyZSBjbGF1c2UgaW4gdGhlIHF1ZXJ5LAogICAgICAqICAgICB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSB2YWx1ZXMgZnJvbSBzZWxlY3Rpb25BcmdzLiBUaGUKICAgICAgKiAgICAgdmFsdWVzIHdpbGwgYmUgYm91bmQgYXMgU3RyaW5ncy4KLSAgICAgKiBAcmV0dXJuIEEge0BsaW5rIEN1cnNvcn0gb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkKKyAgICAgKiBAcmV0dXJuIEEge0BsaW5rIEN1cnNvcn0gb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkuIE5vdGUgdGhhdAorICAgICAqIHtAbGluayBDdXJzb3J9cyBhcmUgbm90IHN5bmNocm9uaXplZCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICovCiAgICAgcHVibGljIEN1cnNvciByYXdRdWVyeShTdHJpbmcgc3FsLCBTdHJpbmdbXSBzZWxlY3Rpb25BcmdzKSB7CiAgICAgICAgIHJldHVybiByYXdRdWVyeVdpdGhGYWN0b3J5KG51bGwsIHNxbCwgc2VsZWN0aW9uQXJncywgbnVsbCk7CkBAIC0xMzI0LDcgKzEzMzMsOCBAQAogICAgICAqICAgICB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSB2YWx1ZXMgZnJvbSBzZWxlY3Rpb25BcmdzLiBUaGUKICAgICAgKiAgICAgdmFsdWVzIHdpbGwgYmUgYm91bmQgYXMgU3RyaW5ncy4KICAgICAgKiBAcGFyYW0gZWRpdFRhYmxlIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCB0YWJsZSwgd2hpY2ggaXMgZWRpdGFibGUKLSAgICAgKiBAcmV0dXJuIEEge0BsaW5rIEN1cnNvcn0gb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkKKyAgICAgKiBAcmV0dXJuIEEge0BsaW5rIEN1cnNvcn0gb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkuIE5vdGUgdGhhdAorICAgICAqIHtAbGluayBDdXJzb3J9cyBhcmUgbm90IHN5bmNocm9uaXplZCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICovCiAgICAgcHVibGljIEN1cnNvciByYXdRdWVyeVdpdGhGYWN0b3J5KAogICAgICAgICAgICAgQ3Vyc29yRmFjdG9yeSBjdXJzb3JGYWN0b3J5LCBTdHJpbmcgc3FsLCBTdHJpbmdbXSBzZWxlY3Rpb25BcmdzLApAQCAtMTMzMiw2ICsxMzQyLDcgQEAKICAgICAgICAgaWYgKCFpc09wZW4oKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiZGF0YWJhc2Ugbm90IG9wZW4iKTsKICAgICAgICAgfQorICAgICAgICBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLm9uUmVhZEZyb21EaXNrKCk7CiAgICAgICAgIGxvbmcgdGltZVN0YXJ0ID0gMDsKIAogICAgICAgICBpZiAoQ29uZmlnLkxPR1YgfHwgbVNsb3dRdWVyeVRocmVzaG9sZCAhPSAtMSkgewpAQCAtMTM3OSw3ICsxMzkwLDggQEAKICAgICAgKiAgICAgdmFsdWVzIHdpbGwgYmUgYm91bmQgYXMgU3RyaW5ncy4KICAgICAgKiBAcGFyYW0gaW5pdGlhbFJlYWQgc2V0IHRoZSBpbml0aWFsIGNvdW50IG9mIGl0ZW1zIHRvIHJlYWQgZnJvbSB0aGUgY3Vyc29yCiAgICAgICogQHBhcmFtIG1heFJlYWQgc2V0IHRoZSBjb3VudCBvZiBpdGVtcyB0byByZWFkIG9uIGVhY2ggaXRlcmF0aW9uIGFmdGVyIHRoZSBmaXJzdAotICAgICAqIEByZXR1cm4gQSB7QGxpbmsgQ3Vyc29yfSBvYmplY3QsIHdoaWNoIGlzIHBvc2l0aW9uZWQgYmVmb3JlIHRoZSBmaXJzdCBlbnRyeQorICAgICAqIEByZXR1cm4gQSB7QGxpbmsgQ3Vyc29yfSBvYmplY3QsIHdoaWNoIGlzIHBvc2l0aW9uZWQgYmVmb3JlIHRoZSBmaXJzdCBlbnRyeS4gTm90ZSB0aGF0CisgICAgICoge0BsaW5rIEN1cnNvcn1zIGFyZSBub3Qgc3luY2hyb25pemVkLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4KICAgICAgKgogICAgICAqIFRoaXMgd29yayBpcyBpbmNvbXBsZXRlIGFuZCBub3QgZnVsbHkgdGVzdGVkIG9yIHJldmlld2VkLCBzbyBjdXJyZW50bHkKICAgICAgKiBoaWRkZW4uCkBAIC0xNDg5LDYgKzE1MDEsNyBAQAogICAgICAqLwogICAgIHB1YmxpYyBsb25nIGluc2VydFdpdGhPbkNvbmZsaWN0KFN0cmluZyB0YWJsZSwgU3RyaW5nIG51bGxDb2x1bW5IYWNrLAogICAgICAgICAgICAgQ29udGVudFZhbHVlcyBpbml0aWFsVmFsdWVzLCBpbnQgY29uZmxpY3RBbGdvcml0aG0pIHsKKyAgICAgICAgQmxvY2tHdWFyZC5nZXRUaHJlYWRQb2xpY3koKS5vbldyaXRlVG9EaXNrKCk7CiAgICAgICAgIGlmICghaXNPcGVuKCkpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oImRhdGFiYXNlIG5vdCBvcGVuIik7CiAgICAgICAgIH0KQEAgLTE1ODAsNiArMTU5Myw3IEBACiAgICAgICogICAgICAgICB3aGVyZUNsYXVzZS4KICAgICAgKi8KICAgICBwdWJsaWMgaW50IGRlbGV0ZShTdHJpbmcgdGFibGUsIFN0cmluZyB3aGVyZUNsYXVzZSwgU3RyaW5nW10gd2hlcmVBcmdzKSB7CisgICAgICAgIEJsb2NrR3VhcmQuZ2V0VGhyZWFkUG9saWN5KCkub25Xcml0ZVRvRGlzaygpOwogICAgICAgICBsb2NrKCk7CiAgICAgICAgIGlmICghaXNPcGVuKCkpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oImRhdGFiYXNlIG5vdCBvcGVuIik7CkBAIC0xNjM1LDYgKzE2NDksNyBAQAogICAgICAqLwogICAgIHB1YmxpYyBpbnQgdXBkYXRlV2l0aE9uQ29uZmxpY3QoU3RyaW5nIHRhYmxlLCBDb250ZW50VmFsdWVzIHZhbHVlcywKICAgICAgICAgICAgIFN0cmluZyB3aGVyZUNsYXVzZSwgU3RyaW5nW10gd2hlcmVBcmdzLCBpbnQgY29uZmxpY3RBbGdvcml0aG0pIHsKKyAgICAgICAgQmxvY2tHdWFyZC5nZXRUaHJlYWRQb2xpY3koKS5vbldyaXRlVG9EaXNrKCk7CiAgICAgICAgIGlmICh2YWx1ZXMgPT0gbnVsbCB8fCB2YWx1ZXMuc2l6ZSgpID09IDApIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkVtcHR5IHZhbHVlcyIpOwogICAgICAgICB9CkBAIC0xNzE3LDYgKzE3MzIsNyBAQAogICAgICAqIEB0aHJvd3MgU1FMRXhjZXB0aW9uIElmIHRoZSBTUUwgc3RyaW5nIGlzIGludmFsaWQgZm9yIHNvbWUgcmVhc29uCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgZXhlY1NRTChTdHJpbmcgc3FsKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgQmxvY2tHdWFyZC5nZXRUaHJlYWRQb2xpY3koKS5vbldyaXRlVG9EaXNrKCk7CiAgICAgICAgIGxvbmcgdGltZVN0YXJ0ID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CiAgICAgICAgIGxvY2soKTsKICAgICAgICAgaWYgKCFpc09wZW4oKSkgewpAQCAtMTc1Miw2ICsxNzY4LDcgQEAKICAgICAgKiBAdGhyb3dzIFNRTEV4Y2VwdGlvbiBJZiB0aGUgU1FMIHN0cmluZyBpcyBpbnZhbGlkIGZvciBzb21lIHJlYXNvbgogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIGV4ZWNTUUwoU3RyaW5nIHNxbCwgT2JqZWN0W10gYmluZEFyZ3MpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLm9uV3JpdGVUb0Rpc2soKTsKICAgICAgICAgaWYgKGJpbmRBcmdzID09IG51bGwpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkVtcHR5IGJpbmRBcmdzIik7CiAgICAgICAgIH0KQEAgLTE5MDUsNyArMTkyMiw3IEBACiAgICAgICAgIC8vIG1haW4gdGhyZWFkLCBvciB3aGVuIHdlIGFyZSBpbnZva2VkIHZpYSBCaW5kZXIgKGUuZy4gQ29udGVudFByb3ZpZGVyKS4KICAgICAgICAgLy8gSG9wZWZ1bGx5IHRoZSBmdWxsIHBhdGggdG8gdGhlIGRhdGFiYXNlIHdpbGwgYmUgaW5mb3JtYXRpdmUgZW5vdWdoLgogCi0gICAgICAgIFN0cmluZyBibG9ja2luZ1BhY2thZ2UgPSBBY3Rpdml0eVRocmVhZC5jdXJyZW50UGFja2FnZU5hbWUoKTsKKyAgICAgICAgU3RyaW5nIGJsb2NraW5nUGFja2FnZSA9IEFwcEdsb2JhbHMuZ2V0SW5pdGlhbFBhY2thZ2UoKTsKICAgICAgICAgaWYgKGJsb2NraW5nUGFja2FnZSA9PSBudWxsKSBibG9ja2luZ1BhY2thZ2UgPSAiIjsKIAogICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZU9wZW5IZWxwZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVPcGVuSGVscGVyLmphdmEKaW5kZXggNTJhYWMzYS4uYWVmYmFiYyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZU9wZW5IZWxwZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlT3BlbkhlbHBlci5qYXZhCkBAIC0yOCw2ICsyOCwxMiBAQAogICogVHJhbnNhY3Rpb25zIGFyZSB1c2VkIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YWJhc2UgaXMgYWx3YXlzIGluIGEgc2Vuc2libGUgc3RhdGUuCiAgKiA8cD5Gb3IgYW4gZXhhbXBsZSwgc2VlIHRoZSBOb3RlUGFkUHJvdmlkZXIgY2xhc3MgaW4gdGhlIE5vdGVQYWQgc2FtcGxlIGFwcGxpY2F0aW9uLAogICogaW4gdGhlIDxlbT5zYW1wbGVzLzwvZW0+IGRpcmVjdG9yeSBvZiB0aGUgU0RLLjwvcD4KKyAqCisgKiA8cCBjbGFzcz0ibm90ZSI+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiB0aGlzIGNsYXNzIGFzc3VtZXMKKyAqIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyB2ZXJzaW9uIG51bWJlcnMgZm9yIHVwZ3JhZGVzLiAgQWxzbywgdGhlcmUKKyAqIGlzIG5vIGNvbmNlcHQgb2YgYSBkYXRhYmFzZSBkb3duZ3JhZGU7IGluc3RhbGxpbmcgYSBuZXcgdmVyc2lvbiBvZgorICogeW91ciBhcHAgd2hpY2ggdXNlcyBhIGxvd2VyIHZlcnNpb24gbnVtYmVyIHRoYW4gYQorICogcHJldmlvdXNseS1pbnN0YWxsZWQgdmVyc2lvbiB3aWxsIHJlc3VsdCBpbiB1bmRlZmluZWQgYmVoYXZpb3IuPC9wPgogICovCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU1FMaXRlT3BlbkhlbHBlciB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9IFNRTGl0ZU9wZW5IZWxwZXIuY2xhc3MuZ2V0U2ltcGxlTmFtZSgpOwpAQCAtMTA1LDYgKzExMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbiA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBvbkNyZWF0ZShkYik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbiA+IG1OZXdWZXJzaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLnd0ZihUQUcsICJDYW4ndCBkb3duZ3JhZGUgcmVhZC1vbmx5IGRhdGFiYXNlIGZyb20gdmVyc2lvbiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gKyAiIHRvICIgKyBtTmV3VmVyc2lvbiArICI6ICIgKyBkYi5nZXRQYXRoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgb25VcGdyYWRlKGRiLCB2ZXJzaW9uLCBtTmV3VmVyc2lvbik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZGIuc2V0VmVyc2lvbihtTmV3VmVyc2lvbik7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlUHJvZ3JhbS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZVByb2dyYW0uamF2YQppbmRleCA4OWE1ZjBkMS4uNGQ5NmYxMiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZVByb2dyYW0uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlUHJvZ3JhbS5qYXZhCkBAIC0yMCw2ICsyMCw5IEBACiAKIC8qKgogICogQSBiYXNlIGNsYXNzIGZvciBjb21waWxlZCBTUUxpdGUgcHJvZ3JhbXMuCisgKgorICogU1FMaXRlUHJvZ3JhbSBpcyBub3QgaW50ZXJuYWxseSBzeW5jaHJvbml6ZWQgc28gY29kZSB1c2luZyBhIFNRTGl0ZVByb2dyYW0gZnJvbSBtdWx0aXBsZQorICogdGhyZWFkcyBzaG91bGQgcGVyZm9ybSBpdHMgb3duIHN5bmNocm9uaXphdGlvbiB3aGVuIHVzaW5nIHRoZSBTUUxpdGVQcm9ncmFtLgogICovCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU1FMaXRlUHJvZ3JhbSBleHRlbmRzIFNRTGl0ZUNsb3NhYmxlIHsKIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZVF1ZXJ5LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlUXVlcnkuamF2YQppbmRleCA0M2QyZmFjLi45MDViNjZiIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlUXVlcnkuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlUXVlcnkuamF2YQpAQCAtMjMsNiArMjMsOSBAQAogLyoqCiAgKiBBIFNRTGl0ZSBwcm9ncmFtIHRoYXQgcmVwcmVzZW50cyBhIHF1ZXJ5IHRoYXQgcmVhZHMgdGhlIHJlc3VsdGluZyByb3dzIGludG8gYSBDdXJzb3JXaW5kb3cuCiAgKiBUaGlzIGNsYXNzIGlzIHVzZWQgYnkgU1FMaXRlQ3Vyc29yIGFuZCBpc24ndCB1c2VmdWwgaXRzZWxmLgorICoKKyAqIFNRTGl0ZVF1ZXJ5IGlzIG5vdCBpbnRlcm5hbGx5IHN5bmNocm9uaXplZCBzbyBjb2RlIHVzaW5nIGEgU1FMaXRlUXVlcnkgZnJvbSBtdWx0aXBsZQorICogdGhyZWFkcyBzaG91bGQgcGVyZm9ybSBpdHMgb3duIHN5bmNocm9uaXphdGlvbiB3aGVuIHVzaW5nIHRoZSBTUUxpdGVRdWVyeS4KICAqLwogcHVibGljIGNsYXNzIFNRTGl0ZVF1ZXJ5IGV4dGVuZHMgU1FMaXRlUHJvZ3JhbSB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJDdXJzb3IiOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZVN0YXRlbWVudC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZVN0YXRlbWVudC5qYXZhCmluZGV4IDk4ZGE0MTQuLjllNDI1YzMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVTdGF0ZW1lbnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlU3RhdGVtZW50LmphdmEKQEAgLTE4LDExICsxOCwxNiBAQAogCiBpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKIAoraW1wb3J0IGRhbHZpay5zeXN0ZW0uQmxvY2tHdWFyZDsKKwogLyoqCiAgKiBBIHByZS1jb21waWxlZCBzdGF0ZW1lbnQgYWdhaW5zdCBhIHtAbGluayBTUUxpdGVEYXRhYmFzZX0gdGhhdCBjYW4gYmUgcmV1c2VkLgogICogVGhlIHN0YXRlbWVudCBjYW5ub3QgcmV0dXJuIG11bHRpcGxlIHJvd3MsIGJ1dCAxeDEgcmVzdWx0IHNldHMgYXJlIGFsbG93ZWQuCiAgKiBEb24ndCB1c2UgU1FMaXRlU3RhdGVtZW50IGNvbnN0cnVjdG9yIGRpcmVjdGx5LCBwbGVhc2UgdXNlCiAgKiB7QGxpbmsgU1FMaXRlRGF0YWJhc2UjY29tcGlsZVN0YXRlbWVudChTdHJpbmcpfQorICoKKyAqIFNRTGl0ZVN0YXRlbWVudCBpcyBub3QgaW50ZXJuYWxseSBzeW5jaHJvbml6ZWQgc28gY29kZSB1c2luZyBhIFNRTGl0ZVN0YXRlbWVudCBmcm9tIG11bHRpcGxlCisgKiB0aHJlYWRzIHNob3VsZCBwZXJmb3JtIGl0cyBvd24gc3luY2hyb25pemF0aW9uIHdoZW4gdXNpbmcgdGhlIFNRTGl0ZVN0YXRlbWVudC4KICAqLwogcHVibGljIGNsYXNzIFNRTGl0ZVN0YXRlbWVudCBleHRlbmRzIFNRTGl0ZVByb2dyYW0KIHsKQEAgLTQ0LDYgKzQ5LDcgQEAKICAgICAgKiAgICAgICAgIHNvbWUgcmVhc29uCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgZXhlY3V0ZSgpIHsKKyAgICAgICAgQmxvY2tHdWFyZC5nZXRUaHJlYWRQb2xpY3koKS5vbldyaXRlVG9EaXNrKCk7CiAgICAgICAgIGlmICghbURhdGFiYXNlLmlzT3BlbigpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJkYXRhYmFzZSAiICsgbURhdGFiYXNlLmdldFBhdGgoKSArICIgYWxyZWFkeSBjbG9zZWQiKTsKICAgICAgICAgfQpAQCAtNzAsNiArNzYsNyBAQAogICAgICAqICAgICAgICAgc29tZSByZWFzb24KICAgICAgKi8KICAgICBwdWJsaWMgbG9uZyBleGVjdXRlSW5zZXJ0KCkgeworICAgICAgICBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLm9uV3JpdGVUb0Rpc2soKTsKICAgICAgICAgaWYgKCFtRGF0YWJhc2UuaXNPcGVuKCkpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oImRhdGFiYXNlICIgKyBtRGF0YWJhc2UuZ2V0UGF0aCgpICsgIiBhbHJlYWR5IGNsb3NlZCIpOwogICAgICAgICB9CkBAIC05Niw2ICsxMDMsNyBAQAogICAgICAqIEB0aHJvd3MgYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRG9uZUV4Y2VwdGlvbiBpZiB0aGUgcXVlcnkgcmV0dXJucyB6ZXJvIHJvd3MKICAgICAgKi8KICAgICBwdWJsaWMgbG9uZyBzaW1wbGVRdWVyeUZvckxvbmcoKSB7CisgICAgICAgIEJsb2NrR3VhcmQuZ2V0VGhyZWFkUG9saWN5KCkub25SZWFkRnJvbURpc2soKTsKICAgICAgICAgaWYgKCFtRGF0YWJhc2UuaXNPcGVuKCkpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oImRhdGFiYXNlICIgKyBtRGF0YWJhc2UuZ2V0UGF0aCgpICsgIiBhbHJlYWR5IGNsb3NlZCIpOwogICAgICAgICB9CkBAIC0xMjIsNiArMTMwLDcgQEAKICAgICAgKiBAdGhyb3dzIGFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURvbmVFeGNlcHRpb24gaWYgdGhlIHF1ZXJ5IHJldHVybnMgemVybyByb3dzCiAgICAgICovCiAgICAgcHVibGljIFN0cmluZyBzaW1wbGVRdWVyeUZvclN0cmluZygpIHsKKyAgICAgICAgQmxvY2tHdWFyZC5nZXRUaHJlYWRQb2xpY3koKS5vblJlYWRGcm9tRGlzaygpOwogICAgICAgICBpZiAoIW1EYXRhYmFzZS5pc09wZW4oKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiZGF0YWJhc2UgIiArIG1EYXRhYmFzZS5nZXRQYXRoKCkgKyAiIGFscmVhZHkgY2xvc2VkIik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL0NhbWVyYS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhLmphdmEKaW5kZXggODY4N2E4OS4uMGEyODk5ZiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhLmphdmEKQEAgLTU4LDcgKzU4LDcgQEAKIHB1YmxpYyBjbGFzcyBDYW1lcmEgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQ2FtZXJhIjsKIAotICAgIC8vIFRoZXNlIG1hdGNoIHRoZSBlbnVtcyBpbiBmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS91aS9DYW1lcmEuaAorICAgIC8vIFRoZXNlIG1hdGNoIHRoZSBlbnVtcyBpbiBmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhLmgKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0FNRVJBX01TR19FUlJPUiAgICAgICAgICAgID0gMHgwMDE7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENBTUVSQV9NU0dfU0hVVFRFUiAgICAgICAgICA9IDB4MDAyOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDQU1FUkFfTVNHX0ZPQ1VTICAgICAgICAgICAgPSAweDAwNDsKQEAgLTg0LDEzICs4NCw2NiBAQAogICAgIHByaXZhdGUgYm9vbGVhbiBtV2l0aEJ1ZmZlcjsKIAogICAgIC8qKgotICAgICAqIFJldHVybnMgYSBuZXcgQ2FtZXJhIG9iamVjdC4KKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgQ2FtZXJhcyBhdmFpbGFibGUuCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBDYW1lcmEgb3BlbigpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDYW1lcmEoKTsKKyAgICBwdWJsaWMgbmF0aXZlIHN0YXRpYyBpbnQgZ2V0TnVtYmVyT2ZDYW1lcmFzKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FtZXJhLgorICAgICAqIElmIHtAbGluayAjZ2V0TnVtYmVyT2ZDYW1lcmFzKCl9IHJldHVybnMgTiwgdGhlIHZhbGlkIGlkIGlzIDAgdG8gTi0xLgorICAgICAqLworICAgIHB1YmxpYyBuYXRpdmUgc3RhdGljIHZvaWQgZ2V0Q2FtZXJhSW5mbyhpbnQgY2FtZXJhSWQsIENhbWVyYUluZm8gY2FtZXJhSW5mbyk7CisKKyAgICAvKioKKyAgICAgKiBJbmZvcm1hdGlvbiBhYm91dCBhIGNhbWVyYQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQ2FtZXJhSW5mbyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENBTUVSQV9GQUNJTkdfQkFDSyA9IDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENBTUVSQV9GQUNJTkdfRlJPTlQgPSAxOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgZGlyZWN0aW9uIHRoYXQgdGhlIGNhbWVyYSBmYWNlcyB0by4gSXQgc2hvdWxkIGJlCisgICAgICAgICAqIENBTUVSQV9GQUNJTkdfQkFDSyBvciBDQU1FUkFfRkFDSU5HX0ZST05ULgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBtRmFjaW5nOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIGNhbWVyYSBpbWFnZS4gVGhlIHZhbHVlIGlzIHRoZSBhbmdsZSB0aGF0IHRoZQorICAgICAgICAgKiBjYW1lcmEgaW1hZ2UgbmVlZHMgdG8gYmUgcm90YXRlZCBjbG9ja3dpc2Ugc28gaXQgc2hvd3MgY29ycmVjdGx5IG9uCisgICAgICAgICAqIHRoZSBkaXNwbGF5IGluIGl0cyBuYXR1cmFsIG9yaWVudGF0aW9uLiBJdCBzaG91bGQgYmUgMCwgOTAsIDE4MCwgb3IgMjcwLgorICAgICAgICAgKgorICAgICAgICAgKiBGb3IgZXhhbXBsZSwgc3VwcG9zZSBhIGRldmljZSBoYXMgYSBuYXR1cmFsbHkgdGFsbCBzY3JlZW4sIGJ1dCB0aGUgY2FtZXJhCisgICAgICAgICAqIHNlbnNvciBpcyBtb3VudGVkIGluIGxhbmRzY2FwZS4gSWYgdGhlIHRvcCBzaWRlIG9mIHRoZSBjYW1lcmEgc2Vuc29yIGlzCisgICAgICAgICAqIGFsaWduZWQgd2l0aCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgZGlzcGxheSBpbiBuYXR1cmFsIG9yaWVudGF0aW9uLCB0aGUKKyAgICAgICAgICogdmFsdWUgc2hvdWxkIGJlIDkwLgorICAgICAgICAgKgorICAgICAgICAgKiBAc2VlICNzZXREaXNwbGF5T3JpZW50YXRpb24oaW50KQorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBtT3JpZW50YXRpb247CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgQ2FtZXJhIG9iamVjdC4KKyAgICAgKiBJZiB7QGxpbmsgI2dldE51bWJlck9mQ2FtZXJhcygpfSByZXR1cm5zIE4sIHRoZSB2YWxpZCBpZCBpcyAwIHRvIE4tMS4KKyAgICAgKiBUaGUgaWQgMCBpcyB0aGUgZGVmYXVsdCBjYW1lcmEuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBDYW1lcmEgb3BlbihpbnQgY2FtZXJhSWQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDYW1lcmEoY2FtZXJhSWQpOwogICAgIH0KIAotICAgIENhbWVyYSgpIHsKKyAgICAvKioKKyAgICAgKiBUaGUgaWQgZm9yIHRoZSBkZWZhdWx0IGNhbWVyYS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBDQU1FUkFfSURfREVGQVVMVCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IENhbWVyYSBvYmplY3QuIFRoaXMgcmV0dXJucyB0aGUgZGVmYXVsdCBjYW1lcmEuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBDYW1lcmEgb3BlbigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDYW1lcmEoQ0FNRVJBX0lEX0RFRkFVTFQpOworICAgIH0KKworICAgIENhbWVyYShpbnQgY2FtZXJhSWQpIHsKICAgICAgICAgbVNodXR0ZXJDYWxsYmFjayA9IG51bGw7CiAgICAgICAgIG1SYXdJbWFnZUNhbGxiYWNrID0gbnVsbDsKICAgICAgICAgbUpwZWdDYWxsYmFjayA9IG51bGw7CkBAIC0xMDcsMTQgKzE2MCwxNCBAQAogICAgICAgICAgICAgbUV2ZW50SGFuZGxlciA9IG51bGw7CiAgICAgICAgIH0KIAotICAgICAgICBuYXRpdmVfc2V0dXAobmV3IFdlYWtSZWZlcmVuY2U8Q2FtZXJhPih0aGlzKSk7CisgICAgICAgIG5hdGl2ZV9zZXR1cChuZXcgV2Vha1JlZmVyZW5jZTxDYW1lcmE+KHRoaXMpLCBjYW1lcmFJZCk7CiAgICAgfQogCiAgICAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB7CiAgICAgICAgIG5hdGl2ZV9yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgdm9pZCBuYXRpdmVfc2V0dXAoT2JqZWN0IGNhbWVyYV90aGlzKTsKKyAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCB2b2lkIG5hdGl2ZV9zZXR1cChPYmplY3QgY2FtZXJhX3RoaXMsIGludCBjYW1lcmFJZCk7CiAgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgdm9pZCBuYXRpdmVfcmVsZWFzZSgpOwogCiAKQEAgLTU2NSw2ICs2MTgsMjggQEAKICAgICAgKiB7QGxpbmsgUHJldmlld0NhbGxiYWNrI29uUHJldmlld0ZyYW1lfS4gVGhpcyBtZXRob2QgaXMgbm90IGFsbG93ZWQgdG8KICAgICAgKiBiZSBjYWxsZWQgZHVyaW5nIHByZXZpZXcuCiAgICAgICoKKyAgICAgKiBJZiB5b3Ugd2FudCB0byBtYWtlIHRoZSBjYW1lcmEgaW1hZ2Ugc2hvdyBpbiB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcworICAgICAqIHRoZSBkaXNwbGF5LCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvZGUuPHA+CisgICAgICogPHByZT4KKyAgICAgKiBwdWJsaWMgc3RhdGljIHZvaWQgc2V0Q2FtZXJhRGlzcGxheU9yaWVudGF0aW9uKEFjdGl2aXR5IGFjdGl2aXR5LAorICAgICAqICAgICAgICAgaW50IGNhbWVyYUlkLCBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSBjYW1lcmEpIHsKKyAgICAgKiAgICAgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuQ2FtZXJhSW5mbyBpbmZvID0KKyAgICAgKiAgICAgICAgICAgICBuZXcgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuQ2FtZXJhSW5mbygpOworICAgICAqICAgICBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5nZXRDYW1lcmFJbmZvKGNhbWVyYUlkLCBpbmZvKTsKKyAgICAgKiAgICAgaW50IHJvdGF0aW9uID0gYWN0aXZpdHkuZ2V0V2luZG93TWFuYWdlcigpLmdldERlZmF1bHREaXNwbGF5KCkKKyAgICAgKiAgICAgICAgICAgICAuZ2V0Um90YXRpb24oKTsKKyAgICAgKiAgICAgaW50IGRlZ3JlZXMgPSAwOworICAgICAqICAgICBzd2l0Y2ggKHJvdGF0aW9uKSB7CisgICAgICogICAgICAgICBjYXNlIFN1cmZhY2UuUk9UQVRJT05fMDogZGVncmVlcyA9IDA7IGJyZWFrOworICAgICAqICAgICAgICAgY2FzZSBTdXJmYWNlLlJPVEFUSU9OXzkwOiBkZWdyZWVzID0gOTA7IGJyZWFrOworICAgICAqICAgICAgICAgY2FzZSBTdXJmYWNlLlJPVEFUSU9OXzE4MDogZGVncmVlcyA9IDE4MDsgYnJlYWs7CisgICAgICogICAgICAgICBjYXNlIFN1cmZhY2UuUk9UQVRJT05fMjcwOiBkZWdyZWVzID0gMjcwOyBicmVhazsKKyAgICAgKiAgICAgfQorICAgICAqCisgICAgICogICAgIGludCByZXN1bHQgPSAoaW5mby5tT3JpZW50YXRpb24gLSBkZWdyZWVzICsgMzYwKSAlIDM2MDsKKyAgICAgKiAgICAgY2FtZXJhLnNldERpc3BsYXlPcmllbnRhdGlvbihyZXN1bHQpOworICAgICAqIH0KKyAgICAgKiA8L3ByZT4KICAgICAgKiBAcGFyYW0gZGVncmVlcyB0aGUgYW5nbGUgdGhhdCB0aGUgcGljdHVyZSB3aWxsIGJlIHJvdGF0ZWQgY2xvY2t3aXNlLgogICAgICAqICAgICAgICAgICAgICAgIFZhbGlkIHZhbHVlcyBhcmUgMCwgOTAsIDE4MCwgYW5kIDI3MC4gVGhlIHN0YXJ0aW5nCiAgICAgICogICAgICAgICAgICAgICAgcG9zaXRpb24gaXMgMCAobGFuZHNjYXBlKS4KQEAgLTc0Niw2ICs4MjEsOSBAQAogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgS0VZX1pPT01fUkFUSU9TID0gInpvb20tcmF0aW9zIjsKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEtFWV9aT09NX1NVUFBPUlRFRCA9ICJ6b29tLXN1cHBvcnRlZCI7CiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfU01PT1RIX1pPT01fU1VQUE9SVEVEID0gInNtb290aC16b29tLXN1cHBvcnRlZCI7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfRk9DVVNfRElTVEFOQ0VTID0gImZvY3VzLWRpc3RhbmNlcyI7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfTUVURVJJTkdfTU9ERSA9ICJtZXRlcmluZy1tb2RlIjsKKwogICAgICAgICAvLyBQYXJhbWV0ZXIga2V5IHN1ZmZpeCBmb3Igc3VwcG9ydGVkIHZhbHVlcy4KICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNVUFBPUlRFRF9WQUxVRVNfU1VGRklYID0gIi12YWx1ZXMiOwogCkBAIC04MDcsMjEgKzg4NSw4MSBAQAogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkxBU0hfTU9ERV9UT1JDSCA9ICJ0b3JjaCI7CiAKLSAgICAgICAgLy8gVmFsdWVzIGZvciBzY2VuZSBtb2RlIHNldHRpbmdzLgorICAgICAgICAvKioKKyAgICAgICAgICogU2NlbmUgbW9kZSBpcyBvZmYuCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0VORV9NT0RFX0FVVE8gPSAiYXV0byI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgcGhvdG9zIG9mIGZhc3QgbW92aW5nIG9iamVjdHMuIFNhbWUgYXMge0BsaW5rCisgICAgICAgICAqICNTQ0VORV9NT0RFX1NQT1JUU30uCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0VORV9NT0RFX0FDVElPTiA9ICJhY3Rpb24iOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHBlb3BsZSBwaWN0dXJlcy4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfUE9SVFJBSVQgPSAicG9ydHJhaXQiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHBpY3R1cmVzIG9uIGRpc3RhbnQgb2JqZWN0cy4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfTEFORFNDQVBFID0gImxhbmRzY2FwZSI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgcGhvdG9zIGF0IG5pZ2h0LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9OSUdIVCA9ICJuaWdodCI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgcGVvcGxlIHBpY3R1cmVzIGF0IG5pZ2h0LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCA9ICJuaWdodC1wb3J0cmFpdCI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgcGhvdG9zIGluIGEgdGhlYXRlci4gRmxhc2ggbGlnaHQgaXMgb2ZmLgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9USEVBVFJFID0gInRoZWF0cmUiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHBpY3R1cmVzIG9uIHRoZSBiZWFjaC4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfQkVBQ0ggPSAiYmVhY2giOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHBpY3R1cmVzIG9uIHRoZSBzbm93LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9TTk9XID0gInNub3ciOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHN1bnNldCBwaG90b3MuCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0VORV9NT0RFX1NVTlNFVCA9ICJzdW5zZXQiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBdm9pZCBibHVycnkgcGljdHVyZXMgKGZvciBleGFtcGxlLCBkdWUgdG8gaGFuZCBzaGFrZSkuCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0VORV9NT0RFX1NURUFEWVBIT1RPID0gInN0ZWFkeXBob3RvIjsKKworICAgICAgICAvKioKKyAgICAgICAgICogRm9yIHNob290aW5nIGZpcmV3b3JrIGRpc3BsYXlzLgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9GSVJFV09SS1MgPSAiZmlyZXdvcmtzIjsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGFrZSBwaG90b3Mgb2YgZmFzdCBtb3Zpbmcgb2JqZWN0cy4gU2FtZSBhcyB7QGxpbmsKKyAgICAgICAgICogI1NDRU5FX01PREVfQUNUSU9OfS4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfU1BPUlRTID0gInNwb3J0cyI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgaW5kb29yIGxvdy1saWdodCBzaG90LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9QQVJUWSA9ICJwYXJ0eSI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENhcHR1cmUgdGhlIG5hdHVyYWxseSB3YXJtIGNvbG9yIG9mIHNjZW5lcyBsaXQgYnkgY2FuZGxlcy4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfQ0FORExFTElHSFQgPSAiY2FuZGxlbGlnaHQiOwogCiAgICAgICAgIC8qKgpAQCAtODU4LDYgKzk5Niw1MyBAQAogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9DVVNfTU9ERV9FRE9GID0gImVkb2YiOwogCisgICAgICAgIC8vIEluZGljZXMgZm9yIGZvY3VzIGRpc3RhbmNlIGFycmF5LgorICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGFycmF5IGluZGV4IG9mIG5lYXIgZm9jdXMgZGlzdGFuY2UgZm9yIHVzZSB3aXRoCisgICAgICAgICAqIHtAbGluayAjZ2V0Rm9jdXNEaXN0YW5jZXMoZmxvYXRbXSl9LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9DVVNfRElTVEFOQ0VfTkVBUl9JTkRFWCA9IDA7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBhcnJheSBpbmRleCBvZiBvcHRpbWFsIGZvY3VzIGRpc3RhbmNlIGZvciB1c2Ugd2l0aAorICAgICAgICAgKiB7QGxpbmsgI2dldEZvY3VzRGlzdGFuY2VzKGZsb2F0W10pfS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPQ1VTX0RJU1RBTkNFX09QVElNQUxfSU5ERVggPSAxOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgYXJyYXkgaW5kZXggb2YgZmFyIGZvY3VzIGRpc3RhbmNlIGZvciB1c2Ugd2l0aAorICAgICAgICAgKiB7QGxpbmsgI2dldEZvY3VzRGlzdGFuY2VzKGZsb2F0W10pfS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPQ1VTX0RJU1RBTkNFX0ZBUl9JTkRFWCA9IDI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbnRpbnVvdXMgZm9jdXMgbW9kZS4gVGhlIGNhbWVyYSBjb250aW51b3VzbHkgdHJpZXMgdG8gZm9jdXMuIFRoaXMKKyAgICAgICAgICogaXMgaWRlYWwgZm9yIHNob290aW5nIHZpZGVvIG9yIHNob290aW5nIHBob3RvIG9mIG1vdmluZyBvYmplY3QuCisgICAgICAgICAqIENvbnRpbnVvdXMgZm9jdXMgc3RhcnRzIHdoZW4ge0BsaW5rICNhdXRvRm9jdXMoQXV0b0ZvY3VzQ2FsbGJhY2spfSBpcworICAgICAgICAgKiBjYWxsZWQuIENvbnRpbnVvdXMgZm9jdXMgc3RvcHMgd2hlbiB7QGxpbmsgI2NhbmNlbEF1dG9Gb2N1cygpfSBpcworICAgICAgICAgKiBjYWxsZWQuIEF1dG9Gb2N1c0NhbGxiYWNrIHdpbGwgYmUgb25seSBjYWxsZWQgb25jZSBhcyBzb29uIGFzIHRoZQorICAgICAgICAgKiBwaWN0dXJlIGlzIGluIGZvY3VzLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9DVVNfTU9ERV9DT05USU5VT1VTID0gImNvbnRpbnVvdXMiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgY2FtZXJhIGRldGVybWluZXMgdGhlIGV4cG9zdXJlIGJ5IGdpdmluZyBtb3JlIHdlaWdodCB0byB0aGUKKyAgICAgICAgICogY2VudHJhbCBwYXJ0IG9mIHRoZSBzY2VuZS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FVEVSSU5HX01PREVfQ0VOVEVSX1dFSUdIVEVEID0gImNlbnRlci13ZWlnaHRlZCI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBjYW1lcmEgZGV0ZXJtaW5lcyB0aGUgZXhwb3N1cmUgYnkgYXZlcmFnaW5nIHRoZSBlbnRpcmUgc2NlbmUsCisgICAgICAgICAqIGdpdmluZyBubyB3ZWlnaHRpbmcgdG8gYW55IHBhcnRpY3VsYXIgYXJlYS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FVEVSSU5HX01PREVfRlJBTUVfQVZFUkFHRSA9ICJmcmFtZS1hdmVyYWdlIjsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGNhbWVyYSBkZXRlcm1pbmVzIHRoZSBleHBvc3VyZSBieSBhIHZlcnkgc21hbGwgYXJlYSBvZiB0aGUgc2NlbmUsCisgICAgICAgICAqIHR5cGljYWxseSB0aGUgY2VudGVyLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVURVJJTkdfTU9ERV9TUE9UID0gInNwb3QiOworCiAgICAgICAgIC8vIEZvcm1hdHMgZm9yIHNldFByZXZpZXdGb3JtYXQgYW5kIHNldFBpY3R1cmVGb3JtYXQuCiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQSVhFTF9GT1JNQVRfWVVWNDIyU1AgPSAieXV2NDIyc3AiOwogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUElYRUxfRk9STUFUX1lVVjQyMFNQID0gInl1djQyMHNwIjsKQEAgLTE3ODgsNiArMTk3Myw3NiBAQAogICAgICAgICAgICAgcmV0dXJuIFRSVUUuZXF1YWxzKHN0cik7CiAgICAgICAgIH0KIAorICAgICAgICAvKioKKyAgICAgICAgICogR2V0cyB0aGUgZGlzdGFuY2VzIGZyb20gdGhlIGNhbWVyYSB0byB3aGVyZSBhbiBvYmplY3QgYXBwZWFycyB0byBiZQorICAgICAgICAgKiBpbiBmb2N1cy4gVGhlIG9iamVjdCBpcyBzaGFycGVzdCBhdCB0aGUgb3B0aW1hbCBmb2N1cyBkaXN0YW5jZS4gVGhlCisgICAgICAgICAqIGRlcHRoIG9mIGZpZWxkIGlzIHRoZSBmYXIgZm9jdXMgZGlzdGFuY2UgbWludXMgbmVhciBmb2N1cyBkaXN0YW5jZS4KKyAgICAgICAgICoKKyAgICAgICAgICogRm9jdXMgZGlzdGFuY2VzIG1heSBjaGFuZ2UgYWZ0ZXIgY2FsbGluZyB7QGxpbmsKKyAgICAgICAgICogI2F1dG9Gb2N1cyhBdXRvRm9jdXNDYWxsYmFjayl9LCB7QGxpbmsgI2NhbmNlbEF1dG9Gb2N1c30sIG9yIHtAbGluaworICAgICAgICAgKiAjc3RhcnRQcmV2aWV3KCl9LiBBcHBsaWNhdGlvbnMgY2FuIGNhbGwge0BsaW5rICNnZXRQYXJhbWV0ZXJzKCl9CisgICAgICAgICAqIGFuZCB0aGlzIG1ldGhvZCBhbnl0aW1lIHRvIGdldCB0aGUgbGF0ZXN0IGZvY3VzIGRpc3RhbmNlcy4gSWYgdGhlCisgICAgICAgICAqIGZvY3VzIG1vZGUgaXMgRk9DVVNfTU9ERV9DT05USU5VT1VTIGFuZCBhdXRvZm9jdXMgaGFzIHN0YXJ0ZWQsIGZvY3VzCisgICAgICAgICAqIGRpc3RhbmNlcyBtYXkgY2hhbmdlIGZyb20gdGltZSB0byB0aW1lLgorICAgICAgICAgKgorICAgICAgICAgKiBGYXIgZm9jdXMgZGlzdGFuY2UgPj0gb3B0aW1hbCBmb2N1cyBkaXN0YW5jZSA+PSBuZWFyIGZvY3VzIGRpc3RhbmNlLgorICAgICAgICAgKiBJZiB0aGUgZm9jdXMgZGlzdGFuY2UgaXMgaW5maW5pdHksIHRoZSB2YWx1ZSB3aWxsIGJlCisgICAgICAgICAqIEZsb2F0LlBPU0lUSVZFX0lORklOSVRZLgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0gb3V0cHV0IGZvY3VzIGRpc3RhbmNlcyBpbiBtZXRlcnMuIG91dHB1dCBtdXN0IGJlIGEgZmxvYXQKKyAgICAgICAgICogICAgICAgIGFycmF5IHdpdGggdGhyZWUgZWxlbWVudHMuIE5lYXIgZm9jdXMgZGlzdGFuY2UsIG9wdGltYWwgZm9jdXMKKyAgICAgICAgICogICAgICAgIGRpc3RhbmNlLCBhbmQgZmFyIGZvY3VzIGRpc3RhbmNlIHdpbGwgYmUgZmlsbGVkIGluIHRoZSBhcnJheS4KKyAgICAgICAgICogQHNlZSAjRk9DVVNfRElTVEFOQ0VfTkVBUl9JTkRFWAorICAgICAgICAgKiBAc2VlICNGT0NVU19ESVNUQU5DRV9PUFRJTUFMX0lOREVYCisgICAgICAgICAqIEBzZWUgI0ZPQ1VTX0RJU1RBTkNFX0ZBUl9JTkRFWAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgZ2V0Rm9jdXNEaXN0YW5jZXMoZmxvYXRbXSBvdXRwdXQpIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXQgPT0gbnVsbCB8fCBvdXRwdXQubGVuZ3RoICE9IDMpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBtdXN0IGJlIGFuIGZsb2F0IGFycmF5IHdpdGggdGhyZWUgZWxlbWVudHMuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBMaXN0PEZsb2F0PiBkaXN0YW5jZXMgPSBzcGxpdEZsb2F0KGdldChLRVlfRk9DVVNfRElTVEFOQ0VTKSk7CisgICAgICAgICAgICBvdXRwdXRbMF0gPSBkaXN0YW5jZXMuZ2V0KDApOworICAgICAgICAgICAgb3V0cHV0WzFdID0gZGlzdGFuY2VzLmdldCgxKTsKKyAgICAgICAgICAgIG91dHB1dFsyXSA9IGRpc3RhbmNlcy5nZXQoMik7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogR2V0cyB0aGUgc3VwcG9ydGVkIG1ldGVyaW5nIG1vZGVzLgorICAgICAgICAgKgorICAgICAgICAgKiBAcmV0dXJuIGEgbGlzdCBvZiBzdXBwb3J0ZWQgbWV0ZXJpbmcgbW9kZXMuIG51bGwgaWYgbWV0ZXJpbmcgbW9kZQorICAgICAgICAgKiAgICAgICAgIHNldHRpbmcgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgICogQHNlZSAjZ2V0TWV0ZXJpbmdNb2RlKCkKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0U3VwcG9ydGVkTWV0ZXJpbmdNb2RlcygpIHsKKyAgICAgICAgICAgIFN0cmluZyBzdHIgPSBnZXQoS0VZX01FVEVSSU5HX01PREUgKyBTVVBQT1JURURfVkFMVUVTX1NVRkZJWCk7CisgICAgICAgICAgICByZXR1cm4gc3BsaXQoc3RyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBHZXRzIHRoZSBjdXJyZW50IG1ldGVyaW5nIG1vZGUsIHdoaWNoIGFmZmVjdHMgaG93IGNhbWVyYSBkZXRlcm1pbmVzCisgICAgICAgICAqIGV4cG9zdXJlLgorICAgICAgICAgKgorICAgICAgICAgKiBAcmV0dXJuIGN1cnJlbnQgbWV0ZXJpbmcgbW9kZS4gSWYgdGhlIGNhbWVyYSBkb2VzIG5vdCBzdXBwb3J0CisgICAgICAgICAqICAgICAgICAgbWV0ZXJpbmcgc2V0dGluZywgdGhpcyBzaG91bGQgcmV0dXJuIG51bGwuCisgICAgICAgICAqIEBzZWUgI01FVEVSSU5HX01PREVfQ0VOVEVSX1dFSUdIVEVECisgICAgICAgICAqIEBzZWUgI01FVEVSSU5HX01PREVfRlJBTUVfQVZFUkFHRQorICAgICAgICAgKiBAc2VlICNNRVRFUklOR19NT0RFX1NQT1QKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWV0ZXJpbmdNb2RlKCkgeworICAgICAgICAgICAgcmV0dXJuIGdldChLRVlfTUVURVJJTkdfTU9ERSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogU2V0cyB0aGUgbWV0ZXJpbmcgbW9kZS4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIHZhbHVlIG1ldGVyaW5nIG1vZGUuCisgICAgICAgICAqIEBzZWUgI2dldE1ldGVyaW5nTW9kZSgpCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBzZXRNZXRlcmluZ01vZGUoU3RyaW5nIHZhbHVlKSB7CisgICAgICAgICAgICBzZXQoS0VZX01FVEVSSU5HX01PREUsIHZhbHVlKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFNwbGl0cyBhIGNvbW1hIGRlbGltaXRlZCBzdHJpbmcgdG8gYW4gQXJyYXlMaXN0IG9mIFN0cmluZy4KICAgICAgICAgLy8gUmV0dXJuIG51bGwgaWYgdGhlIHBhc3Npbmcgc3RyaW5nIGlzIG51bGwgb3IgdGhlIHNpemUgaXMgMC4KICAgICAgICAgcHJpdmF0ZSBBcnJheUxpc3Q8U3RyaW5nPiBzcGxpdChTdHJpbmcgc3RyKSB7CkBAIC0xODE3LDYgKzIwNzIsMjEgQEAKICAgICAgICAgICAgIHJldHVybiBzdWJzdHJpbmdzOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gU3BsaXRzIGEgY29tbWEgZGVsaW1pdGVkIHN0cmluZyB0byBhbiBBcnJheUxpc3Qgb2YgRmxvYXQuCisgICAgICAgIC8vIFJldHVybiBudWxsIGlmIHRoZSBwYXNzaW5nIHN0cmluZyBpcyBudWxsIG9yIHRoZSBzaXplIGlzIDAuCisgICAgICAgIHByaXZhdGUgQXJyYXlMaXN0PEZsb2F0PiBzcGxpdEZsb2F0KFN0cmluZyBzdHIpIHsKKyAgICAgICAgICAgIGlmIChzdHIgPT0gbnVsbCkgcmV0dXJuIG51bGw7CisKKyAgICAgICAgICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgIiwiKTsKKyAgICAgICAgICAgIEFycmF5TGlzdDxGbG9hdD4gc3Vic3RyaW5ncyA9IG5ldyBBcnJheUxpc3Q8RmxvYXQ+KCk7CisgICAgICAgICAgICB3aGlsZSAodG9rZW5pemVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIHN1YnN0cmluZ3MuYWRkKEZsb2F0LnBhcnNlRmxvYXQodG9rZW4pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdWJzdHJpbmdzLnNpemUoKSA9PSAwKSByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHJldHVybiBzdWJzdHJpbmdzOworICAgICAgICB9CisKICAgICAgICAgLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgYSBmbG9hdCBwYXJhbWV0ZXIuCiAgICAgICAgIHByaXZhdGUgZmxvYXQgZ2V0RmxvYXQoU3RyaW5nIGtleSwgZmxvYXQgZGVmYXVsdFZhbHVlKSB7CiAgICAgICAgICAgICB0cnkgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvU2Vuc29yLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3IuamF2YQppbmRleCAzMTdlNTQ3Li4zNDkwYWMwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3IuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3IuamF2YQpAQCAtMTcsNjUgKzE3LDcxIEBACiAKIHBhY2thZ2UgYW5kcm9pZC5oYXJkd2FyZTsKIAotLyoqIAotICogQ2xhc3MgcmVwcmVzZW50aW5nIGEgc2Vuc29yLiBVc2Uge0BsaW5rIFNlbnNvck1hbmFnZXIjZ2V0U2Vuc29yTGlzdH0KLSAqIHRvIGdldCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgU2Vuc29ycy4KKy8qKgorICogQ2xhc3MgcmVwcmVzZW50aW5nIGEgc2Vuc29yLiBVc2Uge0BsaW5rIFNlbnNvck1hbmFnZXIjZ2V0U2Vuc29yTGlzdH0gdG8gZ2V0CisgKiB0aGUgbGlzdCBvZiBhdmFpbGFibGUgU2Vuc29ycy4KKyAqCisgKiBAc2VlIFNlbnNvck1hbmFnZXIKKyAqIEBzZWUgU2Vuc29yRXZlbnRMaXN0ZW5lcgorICogQHNlZSBTZW5zb3JFdmVudAorICoKICAqLwogcHVibGljIGNsYXNzIFNlbnNvciB7CiAKLSAgICAvKiogCi0gICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGFuIGFjY2VsZXJvbWV0ZXIgc2Vuc29yIHR5cGUuCi0gICAgICogU2VlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50IFNlbnNvckV2ZW50fQotICAgICAqIGZvciBtb3JlIGRldGFpbHMuCisgICAgLyoqCisgICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGFuIGFjY2VsZXJvbWV0ZXIgc2Vuc29yIHR5cGUuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50I3ZhbHVlcyBTZW5zb3JFdmVudC52YWx1ZXN9IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0FDQ0VMRVJPTUVURVIgID0gMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0FDQ0VMRVJPTUVURVIgPSAxOwogCi0gICAgLyoqIAotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIG1hZ25ldGljIGZpZWxkIHNlbnNvciB0eXBlLgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBTZW5zb3JFdmVudH0KLSAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgorICAgIC8qKgorICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIG1hZ25ldGljIGZpZWxkIHNlbnNvciB0eXBlLiBTZWUKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCN2YWx1ZXMgU2Vuc29yRXZlbnQudmFsdWVzfSBmb3IgbW9yZQorICAgICAqIGRldGFpbHMuCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9NQUdORVRJQ19GSUVMRCA9IDI7Ci0gICAgCi0gICAgLyoqIAotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBvcmllbnRhdGlvbiBzZW5zb3IgdHlwZS4KLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9Ci0gICAgICogZm9yIG1vcmUgZGV0YWlscy4KKworICAgIC8qKgorICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBvcmllbnRhdGlvbiBzZW5zb3IgdHlwZS4gU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQjdmFsdWVzIFNlbnNvckV2ZW50LnZhbHVlc30gZm9yIG1vcmUKKyAgICAgKiBkZXRhaWxzLgorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIjZ2V0T3JpZW50YXRpb24KLSAgICAgKiAgU2Vuc29yTWFuYWdlci5nZXRPcmllbnRhdGlvbigpfSBpbnN0ZWFkLgorICAgICAqICAgICAgICAgICAgIFNlbnNvck1hbmFnZXIuZ2V0T3JpZW50YXRpb24oKX0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfT1JJRU5UQVRJT04gICAgPSAzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfT1JJRU5UQVRJT04gPSAzOwogCiAgICAgLyoqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIGd5cm9zY29wZSBzZW5zb3IgdHlwZSAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfR1lST1NDT1BFICAgICAgPSA0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfR1lST1NDT1BFID0gNDsKKwogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBsaWdodCBzZW5zb3IgdHlwZS4KLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9Ci0gICAgICogZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gbGlnaHQgc2Vuc29yIHR5cGUuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50I3ZhbHVlcyBTZW5zb3JFdmVudC52YWx1ZXN9IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0xJR0hUICAgICAgICAgID0gNTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0xJR0hUID0gNTsKIAogICAgIC8qKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYSBwcmVzc3VyZSBzZW5zb3IgdHlwZSAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfUFJFU1NVUkUgICAgICAgPSA2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfUFJFU1NVUkUgPSA2OwogCiAgICAgLyoqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIHRlbXBlcmF0dXJlIHNlbnNvciB0eXBlICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9URU1QRVJBVFVSRSAgICA9IDc7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9URU1QRVJBVFVSRSA9IDc7CiAKICAgICAvKioKLSAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gcHJveGltaXR5IHNlbnNvciB0eXBlLgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBTZW5zb3JFdmVudH0KLSAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBwcm94aW1pdHkgc2Vuc29yIHR5cGUuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50I3ZhbHVlcyBTZW5zb3JFdmVudC52YWx1ZXN9IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX1BST1hJTUlUWSAgICAgID0gODsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX1BST1hJTUlUWSA9IDg7CiAKLSAgICAKLSAgICAvKiogCisgICAgLyoqCiAgICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGFsbCBzZW5zb3IgdHlwZXMuCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9BTEwgICAgICAgICAgICAgPSAtMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0FMTCA9IC0xOwogCi0gICAgLyogU29tZSBvZiB0aGVzZSBmaWVsZHMgYXJlIHNldCBvbmx5IGJ5IHRoZSBuYXRpdmUgYmluZGluZ3MgaW4gCisgICAgLyogU29tZSBvZiB0aGVzZSBmaWVsZHMgYXJlIHNldCBvbmx5IGJ5IHRoZSBuYXRpdmUgYmluZGluZ3MgaW4KICAgICAgKiBTZW5zb3JNYW5hZ2VyLgogICAgICAqLwogICAgIHByaXZhdGUgU3RyaW5nICBtTmFtZTsKQEAgLTg3LDggKzkzLDggQEAKICAgICBwcml2YXRlIGZsb2F0ICAgbVJlc29sdXRpb247CiAgICAgcHJpdmF0ZSBmbG9hdCAgIG1Qb3dlcjsKICAgICBwcml2YXRlIGludCAgICAgbUxlZ2FjeVR5cGU7Ci0gICAgCi0gICAgCisKKwogICAgIFNlbnNvcigpIHsKICAgICB9CiAKQEAgLTEwNSw1MSArMTExLDUxIEBACiAgICAgcHVibGljIFN0cmluZyBnZXRWZW5kb3IoKSB7CiAgICAgICAgIHJldHVybiBtVmVuZG9yOwogICAgIH0KLSAgICAKKwogICAgIC8qKgogICAgICAqIEByZXR1cm4gZ2VuZXJpYyB0eXBlIG9mIHRoaXMgc2Vuc29yLgogICAgICAqLwogICAgIHB1YmxpYyBpbnQgZ2V0VHlwZSgpIHsKICAgICAgICAgcmV0dXJuIG1UeXBlOwogICAgIH0KLSAgICAKKwogICAgIC8qKgogICAgICAqIEByZXR1cm4gdmVyc2lvbiBvZiB0aGUgc2Vuc29yJ3MgbW9kdWxlLgogICAgICAqLwogICAgIHB1YmxpYyBpbnQgZ2V0VmVyc2lvbigpIHsKICAgICAgICAgcmV0dXJuIG1WZXJzaW9uOwogICAgIH0KLSAgICAKKwogICAgIC8qKgogICAgICAqIEByZXR1cm4gbWF4aW11bSByYW5nZSBvZiB0aGUgc2Vuc29yIGluIHRoZSBzZW5zb3IncyB1bml0LgogICAgICAqLwogICAgIHB1YmxpYyBmbG9hdCBnZXRNYXhpbXVtUmFuZ2UoKSB7CiAgICAgICAgIHJldHVybiBtTWF4UmFuZ2U7CiAgICAgfQotICAgIAorCiAgICAgLyoqCiAgICAgICogQHJldHVybiByZXNvbHV0aW9uIG9mIHRoZSBzZW5zb3IgaW4gdGhlIHNlbnNvcidzIHVuaXQuCiAgICAgICovCiAgICAgcHVibGljIGZsb2F0IGdldFJlc29sdXRpb24oKSB7CiAgICAgICAgIHJldHVybiBtUmVzb2x1dGlvbjsKICAgICB9Ci0gICAgCisKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHRoZSBwb3dlciBpbiBtQSB1c2VkIGJ5IHRoaXMgc2Vuc29yIHdoaWxlIGluIHVzZQogICAgICAqLwogICAgIHB1YmxpYyBmbG9hdCBnZXRQb3dlcigpIHsKICAgICAgICAgcmV0dXJuIG1Qb3dlcjsKICAgICB9Ci0gICAgCisKICAgICBpbnQgZ2V0SGFuZGxlKCkgewogICAgICAgICByZXR1cm4gbUhhbmRsZTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIHNldFJhbmdlKGZsb2F0IG1heCwgZmxvYXQgcmVzKSB7CiAgICAgICAgIG1NYXhSYW5nZSA9IG1heDsKICAgICAgICAgbVJlc29sdXRpb24gPSByZXM7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBzZXRMZWdhY3lUeXBlKGludCBsZWdhY3lUeXBlKSB7CiAgICAgICAgIG1MZWdhY3lUeXBlID0gbGVnYWN5VHlwZTsKICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3JFdmVudC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvU2Vuc29yRXZlbnQuamF2YQppbmRleCA5YTlmMGJmLi43MDUxOWZmIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3JFdmVudC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL1NlbnNvckV2ZW50LmphdmEKQEAgLTE3LDE0MyArMTcsMjExIEBACiBwYWNrYWdlIGFuZHJvaWQuaGFyZHdhcmU7CiAKIC8qKgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2Vuc29yIGV2ZW50IGFuZCBob2xkcyBpbmZvcm1hdGlvbnMgc3VjaCBhcyB0aGUKLSAqIHNlbnNvciB0eXBlIChlZzogYWNjZWxlcm9tZXRlciwgb3JpZW50YXRpb24sIGV0Yy4uLiksIHRoZSB0aW1lLXN0YW1wLCAKLSAqIGFjY3VyYWN5IGFuZCBvZiBjb3Vyc2UgdGhlIHNlbnNvcidzIHtAbGluayBTZW5zb3JFdmVudCN2YWx1ZXMgZGF0YX0uCisgKiA8cD4KKyAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGV2ZW50IGFuZAorICogaG9sZHMgaW5mb3JtYXRpb25zIHN1Y2ggYXMgdGhlIHNlbnNvcidzIHR5cGUsIHRoZSB0aW1lLXN0YW1wLCBhY2N1cmFjeSBhbmQgb2YKKyAqIGNvdXJzZSB0aGUgc2Vuc29yJ3Mge0BsaW5rIFNlbnNvckV2ZW50I3ZhbHVlcyBkYXRhfS4KKyAqIDwvcD4KICAqCi0gKiA8cD48dT5EZWZpbml0aW9uIG9mIHRoZSBjb29yZGluYXRlIHN5c3RlbSB1c2VkIGJ5IHRoZSBTZW5zb3JFdmVudCBBUEkuPC91PjxwPgotICogCi0gKiA8cHJlPgotICogVGhlIGNvb3JkaW5hdGUgc3BhY2UgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byB0aGUgc2NyZWVuIG9mIHRoZSBwaG9uZSAKLSAqIGluIGl0cyBkZWZhdWx0IG9yaWVudGF0aW9uLiBUaGUgYXhlcyBhcmUgbm90IHN3YXBwZWQgd2hlbiB0aGUgZGV2aWNlJ3MKLSAqIHNjcmVlbiBvcmllbnRhdGlvbiBjaGFuZ2VzLgotICogCi0gKiBUaGUgT3BlbkdMIEVTIGNvb3JkaW5hdGUgc3lzdGVtIGlzIHVzZWQuIFRoZSBvcmlnaW4gaXMgaW4gdGhlCi0gKiBsb3dlci1sZWZ0IGNvcm5lciAgd2l0aCByZXNwZWN0IHRvIHRoZSBzY3JlZW4sIHdpdGggdGhlIFggYXhpcyBob3Jpem9udGFsCi0gKiBhbmQgcG9pbnRpbmcgIHJpZ2h0LCB0aGUgWSBheGlzIHZlcnRpY2FsIGFuZCBwb2ludGluZyB1cCBhbmQgdGhlIFogYXhpcwotICogcG9pbnRpbmcgb3V0c2lkZSB0aGUgZnJvbnQgZmFjZSBvZiB0aGUgc2NyZWVuLiBJbiB0aGlzIHN5c3RlbSwgY29vcmRpbmF0ZXMKLSAqIGJlaGluZCB0aGUgc2NyZWVuIGhhdmUgbmVnYXRpdmUgWiB2YWx1ZXMuCi0gKiAKKyAqIDxwPgorICogPHU+RGVmaW5pdGlvbiBvZiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gdXNlZCBieSB0aGUgU2Vuc29yRXZlbnQgQVBJLjwvdT4KKyAqIDwvcD4KKyAqCisgKiA8cD4KKyAqIFRoZSBjb29yZGluYXRlLXN5c3RlbSBpcyBkZWZpbmVkIHJlbGF0aXZlIHRvIHRoZSBzY3JlZW4gb2YgdGhlIHBob25lIGluIGl0cworICogZGVmYXVsdCBvcmllbnRhdGlvbi4gVGhlIGF4ZXMgYXJlIG5vdCBzd2FwcGVkIHdoZW4gdGhlIGRldmljZSdzIHNjcmVlbgorICogb3JpZW50YXRpb24gY2hhbmdlcy4KKyAqIDwvcD4KKyAqCisgKiA8cD4KKyAqIFRoZSBYIGF4aXMgaXMgaG9yaXpvbnRhbCBhbmQgcG9pbnRzIHRvIHRoZSByaWdodCwgdGhlIFkgYXhpcyBpcyB2ZXJ0aWNhbCBhbmQKKyAqIHBvaW50cyB1cCBhbmQgdGhlIFogYXhpcyBwb2ludHMgdG93YXJkcyB0aGUgb3V0c2lkZSBvZiB0aGUgZnJvbnQgZmFjZSBvZiB0aGUKKyAqIHNjcmVlbi4gSW4gdGhpcyBzeXN0ZW0sIGNvb3JkaW5hdGVzIGJlaGluZCB0aGUgc2NyZWVuIGhhdmUgbmVnYXRpdmUgWiB2YWx1ZXMuCisgKiA8L3A+CisgKgorICogPHA+CisgKiA8Y2VudGVyPjxpbWcgc3JjPSIuLi8uLi8uLi9pbWFnZXMvYXhpc19kZXZpY2UucG5nIgorICogYWx0PSJTZW5zb3JzIGNvb3JkaW5hdGUtc3lzdGVtIGRpYWdyYW0uIiBib3JkZXI9IjAiIC8+PC9jZW50ZXI+CisgKiA8L3A+CisgKgorICogPHA+CiAgKiA8Yj5Ob3RlOjwvYj4gVGhpcyBjb29yZGluYXRlIHN5c3RlbSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHVzZWQgaW4gdGhlCi0gKiBBbmRyb2lkIDJEIEFQSXMgd2hlcmUgdGhlIG9yaWdpbiBpcyBpbiB0aGUgdG9wLWxlZnQgY29ybmVyLiAKKyAqIEFuZHJvaWQgMkQgQVBJcyB3aGVyZSB0aGUgb3JpZ2luIGlzIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuCisgKiA8L3A+CiAgKgotICogICB4PDAgICAgICAgICB4PjAKLSAqICAgICAgICAgICAgICAgIF4KLSAqICAgICAgICAgICAgICAgIHwKLSAqICAgICstLS0tLS0tLS0tLSstLT4gIHk+MAotICogICAgfCAgICAgICAgICAgfAotICogICAgfCAgICAgICAgICAgfAotICogICAgfCAgICAgICAgICAgfAotICogICAgfCAgICAgICAgICAgfCAgIC8gejwwCi0gKiAgICB8ICAgICAgICAgICB8ICAvCi0gKiAgICB8ICAgICAgICAgICB8IC8KLSAqICAgIE8tLS0tLS0tLS0tLSsvCi0gKiAgICB8W10gIFsgXSAgW10vCi0gKiAgICArLS0tLS0tLS0tLS8rICAgICB5PDAKLSAqICAgICAgICAgICAgICAvCi0gKiAgICAgICAgICAgICAvCi0gKiAgICAgICAgICAgfC8gej4wICh0b3dhcmQgdGhlIHNreSkKKyAqIEBzZWUgU2Vuc29yTWFuYWdlcgorICogQHNlZSBTZW5zb3JFdmVudAorICogQHNlZSBTZW5zb3IKICAqCi0gKiAgICBPOiBPcmlnaW4gKHg9MCx5PTAsej0wKQotICogPC9wcmU+CiAgKi8KIAogcHVibGljIGNsYXNzIFNlbnNvckV2ZW50IHsKICAgICAvKioKLSAgICAgKiBUaGUgbGVuZ3RoIGFuZCBjb250ZW50cyBvZiB0aGUgdmFsdWVzIGFycmF5IHZhcnkgZGVwZW5kaW5nIG9uIHdoaWNoCi0gICAgICogc2Vuc29yIHR5cGUgaXMgYmVpbmcgbW9uaXRvcmVkIChzZWUgYWxzbyB7QGxpbmsgU2Vuc29yRXZlbnR9IGZvciBhIAotICAgICAqIGRlZmluaXRpb24gb2YgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQpOgorICAgICAqIDxwPgorICAgICAqIFRoZSBsZW5ndGggYW5kIGNvbnRlbnRzIG9mIHRoZSB7QGxpbmsgI3ZhbHVlcyB2YWx1ZXN9IGFycmF5IGRlcGVuZHMgb24KKyAgICAgKiB3aGljaCB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3Igc2Vuc29yfSB0eXBlIGlzIGJlaW5nIG1vbml0b3JlZCAoc2VlCisgICAgICogYWxzbyB7QGxpbmsgU2Vuc29yRXZlbnR9IGZvciBhIGRlZmluaXRpb24gb2YgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQpLgorICAgICAqIDwvcD4KKyAgICAgKgorICAgICAqIDxoND57QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IjVFlQRV9BQ0NFTEVST01FVEVSCisgICAgICogU2Vuc29yLlRZUEVfQUNDRUxFUk9NRVRFUn06PC9oND4gQWxsIHZhbHVlcyBhcmUgaW4gU0kgdW5pdHMgKG0vc14yKQogICAgICAqIAotICAgICAqIDxwPntAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX09SSUVOVEFUSU9OIFNlbnNvci5UWVBFX09SSUVOVEFUSU9OfTo8cD4KLSAgICAgKiAgQWxsIHZhbHVlcyBhcmUgYW5nbGVzIGluIGRlZ3JlZXMuCisgICAgICogPHVsPgorICAgICAqIDxwPgorICAgICAqIHZhbHVlc1swXTogQWNjZWxlcmF0aW9uIG1pbnVzIEd4IG9uIHRoZSB4LWF4aXMKKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogdmFsdWVzWzFdOiBBY2NlbGVyYXRpb24gbWludXMgR3kgb24gdGhlIHktYXhpcworICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiB2YWx1ZXNbMl06IEFjY2VsZXJhdGlvbiBtaW51cyBHeiBvbiB0aGUgei1heGlzCisgICAgICogPC9wPgorICAgICAqIDwvdWw+CiAgICAgICogCi0gICAgICogPHA+dmFsdWVzWzBdOiBBemltdXRoLCBhbmdsZSBiZXR3ZWVuIHRoZSBtYWduZXRpYyBub3J0aCBkaXJlY3Rpb24gYW5kCi0gICAgICogdGhlIFkgYXhpcywgYXJvdW5kIHRoZSBaIGF4aXMgKDAgdG8gMzU5KS4KLSAgICAgKiAwPU5vcnRoLCA5MD1FYXN0LCAxODA9U291dGgsIDI3MD1XZXN0Ci0gICAgICoKLSAgICAgKiA8cD52YWx1ZXNbMV06IFBpdGNoLCByb3RhdGlvbiBhcm91bmQgWCBheGlzICgtMTgwIHRvIDE4MCksIAotICAgICAqIHdpdGggcG9zaXRpdmUgdmFsdWVzIHdoZW4gdGhlIHotYXhpcyBtb3ZlcyA8Yj50b3dhcmQ8L2I+IHRoZSB5LWF4aXMuCi0gICAgICoKLSAgICAgKiA8cD52YWx1ZXNbMl06IFJvbGwsIHJvdGF0aW9uIGFyb3VuZCBZIGF4aXMgKC05MCB0byA5MCksIHdpdGggCi0gICAgICogcG9zaXRpdmUgdmFsdWVzICB3aGVuIHRoZSB4LWF4aXMgbW92ZXMgPGI+dG93YXJkPC9iPiB0aGUgei1heGlzLgorICAgICAqIDxwPgorICAgICAqIEEgc2Vuc29yIG9mIHRoaXMgdHlwZSBtZWFzdXJlcyB0aGUgYWNjZWxlcmF0aW9uIGFwcGxpZWQgdG8gdGhlIGRldmljZQorICAgICAqICg8Yj5BZDwvYj4pLiBDb25jZXB0dWFsbHksIGl0IGRvZXMgc28gYnkgbWVhc3VyaW5nIGZvcmNlcyBhcHBsaWVkIHRvIHRoZQorICAgICAqIHNlbnNvciBpdHNlbGYgKDxiPkZzPC9iPikgdXNpbmcgdGhlIHJlbGF0aW9uOgorICAgICAqIDwvcD4KICAgICAgKiAKLSAgICAgKiA8cD48Yj5JbXBvcnRhbnQgbm90ZTo8L2I+IEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgdGhlIHJvbGwgYW5nbGUgaXMKLSAgICAgKiBwb3NpdGl2ZSBpbiB0aGUgY2xvY2t3aXNlIGRpcmVjdGlvbiAobWF0aGVtYXRpY2FsbHkgc3BlYWtpbmcsIGl0Ci0gICAgICogc2hvdWxkIGJlIHBvc2l0aXZlIGluIHRoZSBjb3VudGVyLWNsb2Nrd2lzZSBkaXJlY3Rpb24pLgotICAgICAqCi0gICAgICogPHA+PGI+Tm90ZTo8L2I+IFRoaXMgZGVmaW5pdGlvbiBpcyBkaWZmZXJlbnQgZnJvbSA8Yj55YXcsIHBpdGNoIGFuZCAKLSAgICAgKiByb2xsPC9iPiB1c2VkIGluIGF2aWF0aW9uIHdoZXJlIHRoZSBYIGF4aXMgaXMgYWxvbmcgdGhlIGxvbmcgc2lkZSBvZgotICAgICAqIHRoZSBwbGFuZSAodGFpbCB0byBub3NlKS4KLSAgICAgKgotICAgICAqIDxwPjxiPk5vdGU6PC9iPiBUaGlzIHNlbnNvciB0eXBlIGV4aXN0cyBmb3IgbGVnYWN5IHJlYXNvbnMsIHBsZWFzZSB1c2UKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JNYW5hZ2VyI2dldFJvdGF0aW9uTWF0cml4IAotICAgICAqICAgICAgZ2V0Um90YXRpb25NYXRyaXgoKX0gaW4gY29uanVuY3Rpb24gd2l0aAotICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIjcmVtYXBDb29yZGluYXRlU3lzdGVtIAotICAgICAqICAgICAgcmVtYXBDb29yZGluYXRlU3lzdGVtKCl9IGFuZAotICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIjZ2V0T3JpZW50YXRpb24gZ2V0T3JpZW50YXRpb24oKX0KLSAgICAgKiB0byBjb21wdXRlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkLgotICAgICAqCi0gICAgICogPHA+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfQUNDRUxFUk9NRVRFUiBTZW5zb3IuVFlQRV9BQ0NFTEVST01FVEVSfTo8cD4KLSAgICAgKiAgQWxsIHZhbHVlcyBhcmUgaW4gU0kgdW5pdHMgKG0vc14yKSBhbmQgbWVhc3VyZSB0aGUgYWNjZWxlcmF0aW9uIGFwcGxpZWQKLSAgICAgKiAgdG8gdGhlIHBob25lIG1pbnVzIHRoZSBmb3JjZSBvZiBncmF2aXR5LgotICAgICAqICAKLSAgICAgKiAgPHA+dmFsdWVzWzBdOiBBY2NlbGVyYXRpb24gbWludXMgR3ggb24gdGhlIHgtYXhpcyAKLSAgICAgKiAgPHA+dmFsdWVzWzFdOiBBY2NlbGVyYXRpb24gbWludXMgR3kgb24gdGhlIHktYXhpcyAKLSAgICAgKiAgPHA+dmFsdWVzWzJdOiBBY2NlbGVyYXRpb24gbWludXMgR3ogb24gdGhlIHotYXhpcwotICAgICAqICAKLSAgICAgKiAgPHA+PHU+RXhhbXBsZXM8L3U+OgotICAgICAqICAgIDxsaT5XaGVuIHRoZSBkZXZpY2UgbGllcyBmbGF0IG9uIGEgdGFibGUgYW5kIGlzIHB1c2hlZCBvbiBpdHMgbGVmdCAKLSAgICAgKiAgICBzaWRlIHRvd2FyZCB0aGUgcmlnaHQsIHRoZSB4IGFjY2VsZXJhdGlvbiB2YWx1ZSBpcyBwb3NpdGl2ZS48L2xpPgotICAgICAqICAgIAotICAgICAqICAgIDxsaT5XaGVuIHRoZSBkZXZpY2UgbGllcyBmbGF0IG9uIGEgdGFibGUsIHRoZSBhY2NlbGVyYXRpb24gdmFsdWUgaXMgCi0gICAgICogICAgKzkuODEsIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIGFjY2VsZXJhdGlvbiBvZiB0aGUgZGV2aWNlICgwIG0vc14yKSAKLSAgICAgKiAgICBtaW51cyB0aGUgZm9yY2Ugb2YgZ3Jhdml0eSAoLTkuODEgbS9zXjIpLjwvbGk+Ci0gICAgICogICAgCi0gICAgICogICAgPGxpPldoZW4gdGhlIGRldmljZSBsaWVzIGZsYXQgb24gYSB0YWJsZSBhbmQgaXMgcHVzaGVkIHRvd2FyZCB0aGUgc2t5Ci0gICAgICogICAgd2l0aCBhbiBhY2NlbGVyYXRpb24gb2YgQSBtL3NeMiwgdGhlIGFjY2VsZXJhdGlvbiB2YWx1ZSBpcyBlcXVhbCB0byAKLSAgICAgKiAgICBBKzkuODEgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgYWNjZWxlcmF0aW9uIG9mIHRoZSAKLSAgICAgKiAgICBkZXZpY2UgKCtBIG0vc14yKSBtaW51cyB0aGUgZm9yY2Ugb2YgZ3Jhdml0eSAoLTkuODEgbS9zXjIpLjwvbGk+CisgICAgICogPGI+PGNlbnRlcj5BZCA9IC0gt0ZzIC8gbWFzczwvY2VudGVyPjwvYj4KKyAgICAgKiAKKyAgICAgKiA8cD4KKyAgICAgKiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9yY2Ugb2YgZ3Jhdml0eSBpcyBhbHdheXMgaW5mbHVlbmNpbmcgdGhlIG1lYXN1cmVkCisgICAgICogYWNjZWxlcmF0aW9uOgorICAgICAqIDwvcD4KKyAgICAgKiAKKyAgICAgKiA8Yj48Y2VudGVyPkFkID0gLWcgLSC3RiAvIG1hc3M8L2NlbnRlcj48L2I+CisgICAgICogCisgICAgICogPHA+CisgICAgICogRm9yIHRoaXMgcmVhc29uLCB3aGVuIHRoZSBkZXZpY2UgaXMgc2l0dGluZyBvbiBhIHRhYmxlIChhbmQgb2J2aW91c2x5IG5vdAorICAgICAqIGFjY2VsZXJhdGluZyksIHRoZSBhY2NlbGVyb21ldGVyIHJlYWRzIGEgbWFnbml0dWRlIG9mIDxiPmc8L2I+ID0gOS44MQorICAgICAqIG0vc14yCisgICAgICogPC9wPgorICAgICAqIAorICAgICAqIDxwPgorICAgICAqIFNpbWlsYXJseSwgd2hlbiB0aGUgZGV2aWNlIGlzIGluIGZyZWUtZmFsbCBhbmQgdGhlcmVmb3JlIGRhbmdlcm91c2x5CisgICAgICogYWNjZWxlcmF0aW5nIHRvd2FyZHMgdG8gZ3JvdW5kIGF0IDkuODEgbS9zXjIsIGl0cyBhY2NlbGVyb21ldGVyIHJlYWRzIGEKKyAgICAgKiBtYWduaXR1ZGUgb2YgMCBtL3NeMi4KKyAgICAgKiA8L3A+CisgICAgICogCisgICAgICogPHA+CisgICAgICogSXQgc2hvdWxkIGJlIGFwcGFyZW50IHRoYXQgaW4gb3JkZXIgdG8gbWVhc3VyZSB0aGUgcmVhbCBhY2NlbGVyYXRpb24gb2YKKyAgICAgKiB0aGUgZGV2aWNlLCB0aGUgY29udHJpYnV0aW9uIG9mIHRoZSBmb3JjZSBvZiBncmF2aXR5IG11c3QgYmUgZWxpbWluYXRlZC4KKyAgICAgKiBUaGlzIGNhbiBiZSBhY2hpZXZlZCBieSBhcHBseWluZyBhIDxpPmhpZ2gtcGFzczwvaT4gZmlsdGVyLiBDb252ZXJzZWx5LCBhCisgICAgICogPGk+bG93LXBhc3M8L2k+IGZpbHRlciBjYW4gYmUgdXNlZCB0byBpc29sYXRlIHRoZSBmb3JjZSBvZiBncmF2aXR5LgorICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiA8dT5FeGFtcGxlczwvdT46CisgICAgICogPHVsPgorICAgICAqIDxsaT5XaGVuIHRoZSBkZXZpY2UgbGllcyBmbGF0IG9uIGEgdGFibGUgYW5kIGlzIHB1c2hlZCBvbiBpdHMgbGVmdCBzaWRlCisgICAgICogdG93YXJkIHRoZSByaWdodCwgdGhlIHggYWNjZWxlcmF0aW9uIHZhbHVlIGlzIHBvc2l0aXZlLjwvbGk+CisgICAgICogCisgICAgICogPGxpPldoZW4gdGhlIGRldmljZSBsaWVzIGZsYXQgb24gYSB0YWJsZSwgdGhlIGFjY2VsZXJhdGlvbiB2YWx1ZSBpcworICAgICAqICs5LjgxLCB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBhY2NlbGVyYXRpb24gb2YgdGhlIGRldmljZSAoMCBtL3NeMikgbWludXMKKyAgICAgKiB0aGUgZm9yY2Ugb2YgZ3Jhdml0eSAoLTkuODEgbS9zXjIpLjwvbGk+CisgICAgICogCisgICAgICogPGxpPldoZW4gdGhlIGRldmljZSBsaWVzIGZsYXQgb24gYSB0YWJsZSBhbmQgaXMgcHVzaGVkIHRvd2FyZCB0aGUgc2t5CisgICAgICogd2l0aCBhbiBhY2NlbGVyYXRpb24gb2YgQSBtL3NeMiwgdGhlIGFjY2VsZXJhdGlvbiB2YWx1ZSBpcyBlcXVhbCB0bworICAgICAqIEErOS44MSB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBhY2NlbGVyYXRpb24gb2YgdGhlIGRldmljZSAoK0EgbS9zXjIpCisgICAgICogbWludXMgdGhlIGZvcmNlIG9mIGdyYXZpdHkgKC05LjgxIG0vc14yKS48L2xpPgorICAgICAqIDwvdWw+CiAgICAgICogCiAgICAgICogCi0gICAgICogPHA+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfTUFHTkVUSUNfRklFTEQgU2Vuc29yLlRZUEVfTUFHTkVUSUNfRklFTER9OjxwPgotICAgICAqICBBbGwgdmFsdWVzIGFyZSBpbiBtaWNyby1UZXNsYSAodVQpIGFuZCBtZWFzdXJlIHRoZSBhbWJpZW50IG1hZ25ldGljCi0gICAgICogIGZpZWxkIGluIHRoZSBYLCBZIGFuZCBaIGF4aXMuCi0gICAgICoKLSAgICAgKiA8cD57QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IjVFlQRV9MSUdIVCBTZW5zb3IuVFlQRV9MSUdIVH06PHA+Ci0gICAgICoKLSAgICAgKiAgPHA+dmFsdWVzWzBdOiBBbWJpZW50IGxpZ2h0IGxldmVsIGluIFNJIGx1eCB1bml0cwotICAgICAqCi0gICAgICogPHA+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfUFJPWElNSVRZIFNlbnNvci5UWVBFX1BST1hJTUlUWX06PHA+Ci0gICAgICoKLSAgICAgKiAgPHA+dmFsdWVzWzBdOiBQcm94aW1pdHkgc2Vuc29yIGRpc3RhbmNlIG1lYXN1cmVkIGluIGNlbnRpbWV0ZXJzCi0gICAgICoKLSAgICAgKiAgPHA+IE5vdGUgdGhhdCBzb21lIHByb3hpbWl0eSBzZW5zb3JzIG9ubHkgc3VwcG9ydCBhIGJpbmFyeSAiY2xvc2UiIG9yICJmYXIiIG1lYXN1cmVtZW50LgotICAgICAqICAgSW4gdGhpcyBjYXNlLCB0aGUgc2Vuc29yIHNob3VsZCByZXBvcnQgaXRzIG1heFJhbmdlIHZhbHVlIGluIHRoZSAiZmFyIiBzdGF0ZSBhbmQgYSB2YWx1ZQotICAgICAqICAgbGVzcyB0aGFuIG1heFJhbmdlIGluIHRoZSAibmVhciIgc3RhdGUuCisgICAgICogPGg0PntAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX01BR05FVElDX0ZJRUxECisgICAgICogU2Vuc29yLlRZUEVfTUFHTkVUSUNfRklFTER9OjwvaDQ+CisgICAgICogQWxsIHZhbHVlcyBhcmUgaW4gbWljcm8tVGVzbGEgKHVUKSBhbmQgbWVhc3VyZSB0aGUgYW1iaWVudCBtYWduZXRpYyBmaWVsZAorICAgICAqIGluIHRoZSBYLCBZIGFuZCBaIGF4aXMuCisgICAgICogCisgICAgICogPGg0PntAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX0xJR0hUIFNlbnNvci5UWVBFX0xJR0hUfTo8L2g0PgorICAgICAqIAorICAgICAqIDx1bD4KKyAgICAgKiA8cD4KKyAgICAgKiB2YWx1ZXNbMF06IEFtYmllbnQgbGlnaHQgbGV2ZWwgaW4gU0kgbHV4IHVuaXRzCisgICAgICogPC91bD4KKyAgICAgKiAKKyAgICAgKiA8aDQ+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfUFJPWElNSVRZIFNlbnNvci5UWVBFX1BST1hJTUlUWX06CisgICAgICogPC9oND4KKyAgICAgKiAKKyAgICAgKiA8dWw+CisgICAgICogPHA+CisgICAgICogdmFsdWVzWzBdOiBQcm94aW1pdHkgc2Vuc29yIGRpc3RhbmNlIG1lYXN1cmVkIGluIGNlbnRpbWV0ZXJzCisgICAgICogPC91bD4KKyAgICAgKiAKKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gU29tZSBwcm94aW1pdHkgc2Vuc29ycyBvbmx5IHN1cHBvcnQgYSBiaW5hcnkgPGk+bmVhcjwvaT4gb3IKKyAgICAgKiA8aT5mYXI8L2k+IG1lYXN1cmVtZW50LiBJbiB0aGlzIGNhc2UsIHRoZSBzZW5zb3Igc2hvdWxkIHJlcG9ydCBpdHMKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IjZ2V0TWF4aW11bVJhbmdlKCkgbWF4aW11bSByYW5nZX0gdmFsdWUgaW4KKyAgICAgKiB0aGUgPGk+ZmFyPC9pPiBzdGF0ZSBhbmQgYSBsZXNzZXIgdmFsdWUgaW4gdGhlIDxpPm5lYXI8L2k+IHN0YXRlLgorICAgICAqIDwvcD4KKyAgICAgKiAKKyAgICAgKiA8aDQ+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfT1JJRU5UQVRJT04KKyAgICAgKiBTZW5zb3IuVFlQRV9PUklFTlRBVElPTn06PC9oND4gQWxsIHZhbHVlcyBhcmUgYW5nbGVzIGluIGRlZ3JlZXMuCisgICAgICogCisgICAgICogPHVsPgorICAgICAqIDxwPgorICAgICAqIHZhbHVlc1swXTogQXppbXV0aCwgYW5nbGUgYmV0d2VlbiB0aGUgbWFnbmV0aWMgbm9ydGggZGlyZWN0aW9uIGFuZCB0aGUKKyAgICAgKiB5LWF4aXMsIGFyb3VuZCB0aGUgei1heGlzICgwIHRvIDM1OSkuIDA9Tm9ydGgsIDkwPUVhc3QsIDE4MD1Tb3V0aCwKKyAgICAgKiAyNzA9V2VzdAorICAgICAqIDwvcD4KKyAgICAgKiAKKyAgICAgKiA8cD4KKyAgICAgKiB2YWx1ZXNbMV06IFBpdGNoLCByb3RhdGlvbiBhcm91bmQgeC1heGlzICgtMTgwIHRvIDE4MCksIHdpdGggcG9zaXRpdmUKKyAgICAgKiB2YWx1ZXMgd2hlbiB0aGUgei1heGlzIG1vdmVzIDxiPnRvd2FyZDwvYj4gdGhlIHktYXhpcy4KKyAgICAgKiA8L3A+CisgICAgICogCisgICAgICogPHA+CisgICAgICogdmFsdWVzWzJdOiBSb2xsLCByb3RhdGlvbiBhcm91bmQgeS1heGlzICgtOTAgdG8gOTApLCB3aXRoIHBvc2l0aXZlIHZhbHVlcworICAgICAqIHdoZW4gdGhlIHgtYXhpcyBtb3ZlcyA8Yj50b3dhcmQ8L2I+IHRoZSB6LWF4aXMuCisgICAgICogPC9wPgorICAgICAqIDwvdWw+CisgICAgICogCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFRoaXMgZGVmaW5pdGlvbiBpcyBkaWZmZXJlbnQgZnJvbSA8Yj55YXcsIHBpdGNoIGFuZCByb2xsPC9iPgorICAgICAqIHVzZWQgaW4gYXZpYXRpb24gd2hlcmUgdGhlIFggYXhpcyBpcyBhbG9uZyB0aGUgbG9uZyBzaWRlIG9mIHRoZSBwbGFuZQorICAgICAqICh0YWlsIHRvIG5vc2UpLgorICAgICAqIDwvcD4KKyAgICAgKiAKKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gVGhpcyBzZW5zb3IgdHlwZSBleGlzdHMgZm9yIGxlZ2FjeSByZWFzb25zLCBwbGVhc2UgdXNlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTWFuYWdlciNnZXRSb3RhdGlvbk1hdHJpeAorICAgICAqIGdldFJvdGF0aW9uTWF0cml4KCl9IGluIGNvbmp1bmN0aW9uIHdpdGgKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JNYW5hZ2VyI3JlbWFwQ29vcmRpbmF0ZVN5c3RlbQorICAgICAqIHJlbWFwQ29vcmRpbmF0ZVN5c3RlbSgpfSBhbmQKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JNYW5hZ2VyI2dldE9yaWVudGF0aW9uIGdldE9yaWVudGF0aW9uKCl9IHRvCisgICAgICogY29tcHV0ZSB0aGVzZSB2YWx1ZXMgaW5zdGVhZC4KKyAgICAgKiA8L3A+CisgICAgICogCisgICAgICogPHA+CisgICAgICogPGI+SW1wb3J0YW50IG5vdGU6PC9iPiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZSByb2xsIGFuZ2xlIGlzIHBvc2l0aXZlCisgICAgICogaW4gdGhlIGNsb2Nrd2lzZSBkaXJlY3Rpb24gKG1hdGhlbWF0aWNhbGx5IHNwZWFraW5nLCBpdCBzaG91bGQgYmUKKyAgICAgKiBwb3NpdGl2ZSBpbiB0aGUgY291bnRlci1jbG9ja3dpc2UgZGlyZWN0aW9uKS4KKyAgICAgKiA8L3A+CisgICAgICogCisgICAgICogQHNlZSBTZW5zb3JFdmVudAorICAgICAqIEBzZWUgR2VvbWFnbmV0aWNGaWVsZAogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdFtdIHZhbHVlczsKIAogICAgIC8qKgotICAgICAqIFRoZSBzZW5zb3IgdGhhdCBnZW5lcmF0ZWQgdGhpcyBldmVudC4KLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTWFuYWdlciBTZW5zb3JNYW5hZ2VyfQotICAgICAqIGZvciBkZXRhaWxzLgorICAgICAqIFRoZSBzZW5zb3IgdGhhdCBnZW5lcmF0ZWQgdGhpcyBldmVudC4gU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTWFuYWdlciBTZW5zb3JNYW5hZ2VyfSBmb3IgZGV0YWlscy4KICAgICAgKi8KLSAgICBwdWJsaWMgU2Vuc29yIHNlbnNvcjsKLSAgICAKKyAgIHB1YmxpYyBTZW5zb3Igc2Vuc29yOworCiAgICAgLyoqCi0gICAgICogVGhlIGFjY3VyYWN5IG9mIHRoaXMgZXZlbnQuCi0gICAgICogU2VlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIgU2Vuc29yTWFuYWdlcn0KLSAgICAgKiBmb3IgZGV0YWlscy4KKyAgICAgKiBUaGUgYWNjdXJhY3kgb2YgdGhpcyBldmVudC4gU2VlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIKKyAgICAgKiBTZW5zb3JNYW5hZ2VyfSBmb3IgZGV0YWlscy4KICAgICAgKi8KICAgICBwdWJsaWMgaW50IGFjY3VyYWN5OwotICAgIAotICAgIAorCisKICAgICAvKioKICAgICAgKiBUaGUgdGltZSBpbiBuYW5vc2Vjb25kIGF0IHdoaWNoIHRoZSBldmVudCBoYXBwZW5lZAogICAgICAqLwogICAgIHB1YmxpYyBsb25nIHRpbWVzdGFtcDsKIAotICAgIAorCiAgICAgU2Vuc29yRXZlbnQoaW50IHNpemUpIHsKICAgICAgICAgdmFsdWVzID0gbmV3IGZsb2F0W3NpemVdOwogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL1NlbnNvck1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL1NlbnNvck1hbmFnZXIuamF2YQppbmRleCA5ODE3MmU2Li40OTJmOGNjIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3JNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvU2Vuc29yTWFuYWdlci5qYXZhCkBAIC00MSw5ICs0MSwzNSBAQAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogCiAvKioKLSAqIENsYXNzIHRoYXQgbGV0cyB5b3UgYWNjZXNzIHRoZSBkZXZpY2UncyBzZW5zb3JzLiBHZXQgYW4gaW5zdGFuY2Ugb2YgdGhpcwotICogY2xhc3MgYnkgY2FsbGluZyB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkNvbnRleHQjZ2V0U3lzdGVtU2VydmljZShqYXZhLmxhbmcuU3RyaW5nKQotICogQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKCl9IHdpdGggYW4gYXJndW1lbnQgb2Yge0BsaW5rIGFuZHJvaWQuY29udGVudC5Db250ZXh0I1NFTlNPUl9TRVJWSUNFfS4KKyAqIFNlbnNvck1hbmFnZXIgbGV0cyB5b3UgYWNjZXNzIHRoZSBkZXZpY2UncyB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IKKyAqIHNlbnNvcnN9LiBHZXQgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBieSBjYWxsaW5nCisgKiB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkNvbnRleHQjZ2V0U3lzdGVtU2VydmljZShqYXZhLmxhbmcuU3RyaW5nKQorICogQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKCl9IHdpdGggdGhlIGFyZ3VtZW50CisgKiB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkNvbnRleHQjU0VOU09SX1NFUlZJQ0V9LgorICoKKyAqIDxwcmUgY2xhc3M9InByZXR0eXByaW50Ij4KKyAqIHB1YmxpYyBjbGFzcyBTZW5zb3JBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5LCBpbXBsZW1lbnRzIFNlbnNvckV2ZW50TGlzdGVuZXIgeworICogICAgIHByaXZhdGUgZmluYWwgU2Vuc29yTWFuYWdlciBtU2Vuc29yTWFuYWdlcjsKKyAqICAgICBwcml2YXRlIGZpbmFsIFNlbnNvciBtQWNjZWxlcm9tZXRlcjsKKyAqCisgKiAgICAgcHVibGljIFNlbnNvckFjdGl2aXR5KCkgeworICogICAgICAgICBtU2Vuc29yTWFuYWdlciA9IChTZW5zb3JNYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoU0VOU09SX1NFUlZJQ0UpOworICogICAgICAgICBtQWNjZWxlcm9tZXRlciA9IG1TZW5zb3JNYW5hZ2VyLmdldERlZmF1bHRTZW5zb3IoU2Vuc29yLlRZUEVfQUNDRUxFUk9NRVRFUik7CisgKiAgICAgICAgIG1TZW5zb3JNYW5hZ2VyLnJlZ2lzdGVyTGlzdGVuZXIodGhpcywgbUFjY2VsZXJvbWV0ZXIsIFNlbnNvck1hbmFnZXIuU0VOU09SX0RFTEFZX05PUk1BTCk7CisgKiAgICAgfQorICoKKyAqICAgICBwdWJsaWMgdm9pZCBvbkFjY3VyYWN5Q2hhbmdlZChTZW5zb3Igc2Vuc29yLCBpbnQgYWNjdXJhY3kpIHsKKyAqICAgICB9CisgKgorICogICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU2Vuc29yQ2hhbmdlZChTZW5zb3JFdmVudCBldmVudCkgeworICogICAgIH0KKyAqIH0KKyAqIDwvcHJlPgorICoKKyAqIEBzZWUgU2Vuc29yRXZlbnRMaXN0ZW5lcgorICogQHNlZSBTZW5zb3JFdmVudAorICogQHNlZSBTZW5zb3IKKyAqCiAgKi8KIHB1YmxpYyBjbGFzcyBTZW5zb3JNYW5hZ2VyCiB7CkBAIC01MywxNzIgKzc5LDIyMCBAQAogICAgIC8qIE5PVEU6IHNlbnNvciBJRHMgbXVzdCBiZSBhIHBvd2VyIG9mIDIgKi8KIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBvcmllbnRhdGlvbiBzZW5zb3IuCi0gICAgICogU2VlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyIFNlbnNvckxpc3RlbmVyfSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBvcmllbnRhdGlvbiBzZW5zb3IuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyIFNlbnNvckxpc3RlbmVyfSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRU5TT1JfT1JJRU5UQVRJT04gPSAxIDw8IDA7CiAKICAgICAvKioKLSAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gYWNjZWxlcm9tZXRlci4KLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGFuIGFjY2VsZXJvbWV0ZXIuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyIFNlbnNvckxpc3RlbmVyfSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRU5TT1JfQUNDRUxFUk9NRVRFUiA9IDEgPDwgMTsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIHRlbXBlcmF0dXJlIHNlbnNvcgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYSB0ZW1wZXJhdHVyZSBzZW5zb3IgU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9URU1QRVJBVFVSRSA9IDEgPDwgMjsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIG1hZ25ldGljIHNlbnNvcgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYSBtYWduZXRpYyBzZW5zb3IgU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9NQUdORVRJQ19GSUVMRCA9IDEgPDwgMzsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBhbWJpZW50IGxpZ2h0IHNlbnNvcgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gYW1iaWVudCBsaWdodCBzZW5zb3IgU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9MSUdIVCA9IDEgPDwgNDsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIHByb3hpbWl0eSBzZW5zb3IKLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGEgcHJveGltaXR5IHNlbnNvciBTZWUKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX1BST1hJTUlUWSA9IDEgPDwgNTsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIFRyaWNvcmRlcgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYSBUcmljb3JkZXIgU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9UUklDT1JERVIgPSAxIDw8IDY7CiAKICAgICAvKioKLSAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gb3JpZW50YXRpb24gc2Vuc29yLgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gb3JpZW50YXRpb24gc2Vuc29yLiBTZWUKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX09SSUVOVEFUSU9OX1JBVyA9IDEgPDwgNzsKIAotICAgIC8qKiBBIGNvbnN0YW50IHRoYXQgaW5jbHVkZXMgYWxsIHNlbnNvcnMKKyAgICAvKioKKyAgICAgKiBBIGNvbnN0YW50IHRoYXQgaW5jbHVkZXMgYWxsIHNlbnNvcnMKKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX0FMTCA9IDB4N0Y7CiAKLSAgICAvKiogU21hbGxlc3Qgc2Vuc29yIElEIAorICAgIC8qKgorICAgICAqIFNtYWxsZXN0IHNlbnNvciBJRAorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRU5TT1JfTUlOID0gU0VOU09SX09SSUVOVEFUSU9OOwogCi0gICAgLyoqIExhcmdlc3Qgc2Vuc29yIElECisgICAgLyoqCisgICAgICogTGFyZ2VzdCBzZW5zb3IgSUQKKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX01BWCA9ICgoU0VOU09SX0FMTCArIDEpPj4xKTsKIAogCi0gICAgLyoqIEluZGV4IG9mIHRoZSBYIHZhbHVlIGluIHRoZSBhcnJheSByZXR1cm5lZCBieQorICAgIC8qKgorICAgICAqIEluZGV4IG9mIHRoZSBYIHZhbHVlIGluIHRoZSBhcnJheSByZXR1cm5lZCBieQogICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyI29uU2Vuc29yQ2hhbmdlZH0KKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9YID0gMDsKLSAgICAvKiogSW5kZXggb2YgdGhlIFkgdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CisKKyAgICAvKioKKyAgICAgKiBJbmRleCBvZiB0aGUgWSB2YWx1ZSBpbiB0aGUgYXJyYXkgcmV0dXJuZWQgYnkKICAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciNvblNlbnNvckNoYW5nZWR9CisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBVEFfWSA9IDE7Ci0gICAgLyoqIEluZGV4IG9mIHRoZSBaIHZhbHVlIGluIHRoZSBhcnJheSByZXR1cm5lZCBieQorCisgICAgLyoqCisgICAgICogSW5kZXggb2YgdGhlIFogdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CiAgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIjb25TZW5zb3JDaGFuZ2VkfQorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX1ogPSAyOwogCi0gICAgLyoqIE9mZnNldCB0byB0aGUgdW50cmFuc2Zvcm1lZCB2YWx1ZXMgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CisgICAgLyoqCisgICAgICogT2Zmc2V0IHRvIHRoZSB1bnRyYW5zZm9ybWVkIHZhbHVlcyBpbiB0aGUgYXJyYXkgcmV0dXJuZWQgYnkKICAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciNvblNlbnNvckNoYW5nZWR9CisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBV19EQVRBX0lOREVYID0gMzsKIAotICAgIC8qKiBJbmRleCBvZiB0aGUgdW50cmFuc2Zvcm1lZCBYIHZhbHVlIGluIHRoZSBhcnJheSByZXR1cm5lZCBieQorICAgIC8qKgorICAgICAqIEluZGV4IG9mIHRoZSB1bnRyYW5zZm9ybWVkIFggdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CiAgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIjb25TZW5zb3JDaGFuZ2VkfQorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQVdfREFUQV9YID0gMzsKLSAgICAvKiogSW5kZXggb2YgdGhlIHVudHJhbnNmb3JtZWQgWSB2YWx1ZSBpbiB0aGUgYXJyYXkgcmV0dXJuZWQgYnkKKworICAgIC8qKgorICAgICAqIEluZGV4IG9mIHRoZSB1bnRyYW5zZm9ybWVkIFkgdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CiAgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIjb25TZW5zb3JDaGFuZ2VkfQorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQVdfREFUQV9ZID0gNDsKLSAgICAvKiogSW5kZXggb2YgdGhlIHVudHJhbnNmb3JtZWQgWiB2YWx1ZSBpbiB0aGUgYXJyYXkgcmV0dXJuZWQgYnkKKworICAgIC8qKgorICAgICAqIEluZGV4IG9mIHRoZSB1bnRyYW5zZm9ybWVkIFogdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CiAgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIjb25TZW5zb3JDaGFuZ2VkfQorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQVdfREFUQV9aID0gNTsKIAotCiAgICAgLyoqIFN0YW5kYXJkIGdyYXZpdHkgKGcpIG9uIEVhcnRoLiBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gMUcgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IFNUQU5EQVJEX0dSQVZJVFkgPSA5LjgwNjY1ZjsKIAotICAgIC8qKiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGFjY2VsZXJvbWV0ZXIgaW4gdmFyaW91cyBsb2NhdGlvbnMgaW4gdGhlIHVuaXZlcnNlLgotICAgICAqIGFsbCB2YWx1ZXMgYXJlIGluIFNJIHVuaXRzIChtL3NeMikgKi8KKyAgICAvKiogU3VuJ3MgZ3Jhdml0eSBpbiBTSSB1bml0cyAobS9zXjIpICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBHUkFWSVRZX1NVTiAgICAgICAgICAgICA9IDI3NS4wZjsKKyAgICAvKiogTWVyY3VyeSdzIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9NRVJDVVJZICAgICAgICAgPSAzLjcwZjsKKyAgICAvKiogVmVudXMnIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9WRU5VUyAgICAgICAgICAgPSA4Ljg3ZjsKKyAgICAvKiogRWFydGgncyBncmF2aXR5IGluIFNJIHVuaXRzIChtL3NeMikgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IEdSQVZJVFlfRUFSVEggICAgICAgICAgID0gOS44MDY2NWY7CisgICAgLyoqIFRoZSBNb29uJ3MgZ3Jhdml0eSBpbiBTSSB1bml0cyAobS9zXjIpICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBHUkFWSVRZX01PT04gICAgICAgICAgICA9IDEuNmY7CisgICAgLyoqIE1hcnMnIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9NQVJTICAgICAgICAgICAgPSAzLjcxZjsKKyAgICAvKiogSnVwaXRlcidzIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9KVVBJVEVSICAgICAgICAgPSAyMy4xMmY7CisgICAgLyoqIFNhdHVybidzIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9TQVRVUk4gICAgICAgICAgPSA4Ljk2ZjsKKyAgICAvKiogVXJhbnVzJyBncmF2aXR5IGluIFNJIHVuaXRzIChtL3NeMikgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IEdSQVZJVFlfVVJBTlVTICAgICAgICAgID0gOC42OWY7CisgICAgLyoqIE5lcHR1bmUncyBncmF2aXR5IGluIFNJIHVuaXRzIChtL3NeMikgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IEdSQVZJVFlfTkVQVFVORSAgICAgICAgID0gMTEuMGY7CisgICAgLyoqIFBsdXRvJ3MgZ3Jhdml0eSBpbiBTSSB1bml0cyAobS9zXjIpICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBHUkFWSVRZX1BMVVRPICAgICAgICAgICA9IDAuNmY7CisgICAgLyoqIEdyYXZpdHkgKGVzdGltYXRlKSBvbiB0aGUgZmlyc3QgRGVhdGggU3RhciBpbiBFbXBpcmUgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9ERUFUSF9TVEFSX0kgICAgPSAwLjAwMDAwMDM1MzAzNjE0NWY7CisgICAgLyoqIEdyYXZpdHkgb24gdGhlIGlzbGFuZCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9USEVfSVNMQU5EICAgICAgPSA0LjgxNTE2MjM0MmY7CiAKIAogICAgIC8qKiBNYXhpbXVtIG1hZ25ldGljIGZpZWxkIG9uIEVhcnRoJ3Mgc3VyZmFjZSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTUFHTkVUSUNfRklFTERfRUFSVEhfTUFYID0gNjAuMGY7Ci0KICAgICAvKiogTWluaW11bSBtYWduZXRpYyBmaWVsZCBvbiBFYXJ0aCdzIHN1cmZhY2UgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IE1BR05FVElDX0ZJRUxEX0VBUlRIX01JTiA9IDMwLjBmOwogCiAKLSAgICAvKiogVmFyaW91cyBsdW1pbmFuY2UgdmFsdWVzIGR1cmluZyB0aGUgZGF5IChsdXgpICovCisgICAgLyoqIE1heGltdW0gbHVtaW5hbmNlIG9mIHN1bmxpZ2h0IGluIGx1eCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfU1VOTElHSFRfTUFYID0gMTIwMDAwLjBmOworICAgIC8qKiBsdW1pbmFuY2Ugb2Ygc3VubGlnaHQgaW4gbHV4ICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBMSUdIVF9TVU5MSUdIVCAgICAgPSAxMTAwMDAuMGY7CisgICAgLyoqIGx1bWluYW5jZSBpbiBzaGFkZSBpbiBsdXggKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IExJR0hUX1NIQURFICAgICAgICA9IDIwMDAwLjBmOworICAgIC8qKiBsdW1pbmFuY2UgdW5kZXIgYW4gb3ZlcmNhc3Qgc2t5IGluIGx1eCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfT1ZFUkNBU1QgICAgID0gMTAwMDAuMGY7CisgICAgLyoqIGx1bWluYW5jZSBhdCBzdW5yaXNlIGluIGx1eCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfU1VOUklTRSAgICAgID0gNDAwLjBmOworICAgIC8qKiBsdW1pbmFuY2UgdW5kZXIgYSBjbG91ZHkgc2t5IGluIGx1eCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfQ0xPVURZICAgICAgID0gMTAwLjBmOwotICAgIC8qKiBWYXJpb3VzIGx1bWluYW5jZSB2YWx1ZXMgZHVyaW5nIHRoZSBuaWdodCAobHV4KSAqLworICAgIC8qKiBsdW1pbmFuY2UgYXQgbmlnaHQgd2l0aCBmdWxsIG1vb24gaW4gbHV4ICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBMSUdIVF9GVUxMTU9PTiAgICAgPSAwLjI1ZjsKKyAgICAvKiogbHVtaW5hbmNlIGF0IG5pZ2h0IHdpdGggbm8gbW9vbiBpbiBsdXgqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfTk9fTU9PTiAgICAgID0gMC4wMDFmOwogCisKICAgICAvKiogZ2V0IHNlbnNvciBkYXRhIGFzIGZhc3QgYXMgcG9zc2libGUgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRU5TT1JfREVMQVlfRkFTVEVTVCA9IDA7CiAgICAgLyoqIHJhdGUgc3VpdGFibGUgZm9yIGdhbWVzICovCkBAIC0yMjksMTYgKzMwMywyMiBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9ERUxBWV9OT1JNQUwgPSAzOwogCiAKLSAgICAvKiogVGhlIHZhbHVlcyByZXR1cm5lZCBieSB0aGlzIHNlbnNvciBjYW5ub3QgYmUgdHJ1c3RlZCwgY2FsaWJyYXRpb24KLSAgICAgKiBpcyBuZWVkZWQgb3IgdGhlIGVudmlyb25tZW50IGRvZXNuJ3QgYWxsb3cgcmVhZGluZ3MgKi8KKyAgICAvKioKKyAgICAgKiBUaGUgdmFsdWVzIHJldHVybmVkIGJ5IHRoaXMgc2Vuc29yIGNhbm5vdCBiZSB0cnVzdGVkLCBjYWxpYnJhdGlvbiBpcworICAgICAqIG5lZWRlZCBvciB0aGUgZW52aXJvbm1lbnQgZG9lc24ndCBhbGxvdyByZWFkaW5ncworICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9TVEFUVVNfVU5SRUxJQUJMRSA9IDA7CiAKLSAgICAvKiogVGhpcyBzZW5zb3IgaXMgcmVwb3J0aW5nIGRhdGEgd2l0aCBsb3cgYWNjdXJhY3ksIGNhbGlicmF0aW9uIHdpdGggdGhlCi0gICAgICogZW52aXJvbm1lbnQgaXMgbmVlZGVkICovCisgICAgLyoqCisgICAgICogVGhpcyBzZW5zb3IgaXMgcmVwb3J0aW5nIGRhdGEgd2l0aCBsb3cgYWNjdXJhY3ksIGNhbGlicmF0aW9uIHdpdGggdGhlCisgICAgICogZW52aXJvbm1lbnQgaXMgbmVlZGVkCisgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX1NUQVRVU19BQ0NVUkFDWV9MT1cgPSAxOwogCi0gICAgLyoqIFRoaXMgc2Vuc29yIGlzIHJlcG9ydGluZyBkYXRhIHdpdGggYW4gYXZlcmFnZSBsZXZlbCBvZiBhY2N1cmFjeSwKLSAgICAgKiBjYWxpYnJhdGlvbiB3aXRoIHRoZSBlbnZpcm9ubWVudCBtYXkgaW1wcm92ZSB0aGUgcmVhZGluZ3MgKi8KKyAgICAvKioKKyAgICAgKiBUaGlzIHNlbnNvciBpcyByZXBvcnRpbmcgZGF0YSB3aXRoIGFuIGF2ZXJhZ2UgbGV2ZWwgb2YgYWNjdXJhY3ksCisgICAgICogY2FsaWJyYXRpb24gd2l0aCB0aGUgZW52aXJvbm1lbnQgbWF5IGltcHJvdmUgdGhlIHJlYWRpbmdzCisgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX1NUQVRVU19BQ0NVUkFDWV9NRURJVU0gPSAyOwogCiAgICAgLyoqIFRoaXMgc2Vuc29yIGlzIHJlcG9ydGluZyBkYXRhIHdpdGggbWF4aW11bSBhY2N1cmFjeSAqLwpAQCAtNTg2LDkgKzY2NiwxMCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvKiogQHJldHVybiBhdmFpbGFibGUgc2Vuc29ycy4KKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIGF2YWlsYWJsZSBzZW5zb3JzLgogICAgICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZQotICAgICAqIHtAbGluayBTZW5zb3JNYW5hZ2VyI2dldFNlbnNvckxpc3QoaW50KX0gaW5zdGVhZAorICAgICAqICAgICAgICAgICAgIHtAbGluayBTZW5zb3JNYW5hZ2VyI2dldFNlbnNvckxpc3QoaW50KX0gaW5zdGVhZAogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIGludCBnZXRTZW5zb3JzKCkgewpAQCAtNjEyLDEzICs2OTMsMTggQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBzZW5zb3JzIG9mIGEgY2VydGFpbgotICAgICAqIHR5cGUuIE1ha2UgbXVsdGlwbGUgY2FsbHMgdG8gZ2V0IHNlbnNvcnMgb2YgZGlmZmVyZW50IHR5cGVzIG9yIHVzZQotICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX0FMTCBTZW5zb3IuVFlQRV9BTEx9IHRvIGdldCBhbGwKLSAgICAgKiB0aGUgc2Vuc29ycy4KKyAgICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBzZW5zb3JzIG9mIGEgY2VydGFpbiB0eXBlLgorICAgICAqIE1ha2UgbXVsdGlwbGUgY2FsbHMgdG8gZ2V0IHNlbnNvcnMgb2YgZGlmZmVyZW50IHR5cGVzIG9yIHVzZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX0FMTCBTZW5zb3IuVFlQRV9BTEx9IHRvIGdldCBhbGwgdGhlCisgICAgICogc2Vuc29ycy4KICAgICAgKgotICAgICAqIEBwYXJhbSB0eXBlIG9mIHNlbnNvcnMgcmVxdWVzdGVkCisgICAgICogQHBhcmFtIHR5cGUKKyAgICAgKiAgICAgICAgb2Ygc2Vuc29ycyByZXF1ZXN0ZWQKKyAgICAgKgogICAgICAqIEByZXR1cm4gYSBsaXN0IG9mIHNlbnNvcnMgbWF0Y2hpbmcgdGhlIGFza2VkIHR5cGUuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXREZWZhdWx0U2Vuc29yKGludCkKKyAgICAgKiBAc2VlIFNlbnNvcgogICAgICAqLwogICAgIHB1YmxpYyBMaXN0PFNlbnNvcj4gZ2V0U2Vuc29yTGlzdChpbnQgdHlwZSkgewogICAgICAgICAvLyBjYWNoZSB0aGUgcmV0dXJuZWQgbGlzdHMgdGhlIGZpcnN0IHRpbWUKQEAgLTY0NCwxNCArNzMwLDE4IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogVXNlIHRoaXMgbWV0aG9kIHRvIGdldCB0aGUgZGVmYXVsdCBzZW5zb3IgZm9yIGEgZ2l2ZW4gdHlwZS4gTm90ZSB0aGF0Ci0gICAgICogdGhlIHJldHVybmVkIHNlbnNvciBjb3VsZCBiZSBhIGNvbXBvc2l0ZSBzZW5zb3IsIGFuZCBpdHMgZGF0YSBjb3VsZCBiZQorICAgICAqIFVzZSB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGRlZmF1bHQgc2Vuc29yIGZvciBhIGdpdmVuIHR5cGUuIE5vdGUgdGhhdCB0aGUKKyAgICAgKiByZXR1cm5lZCBzZW5zb3IgY291bGQgYmUgYSBjb21wb3NpdGUgc2Vuc29yLCBhbmQgaXRzIGRhdGEgY291bGQgYmUKICAgICAgKiBhdmVyYWdlZCBvciBmaWx0ZXJlZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSByYXcgc2Vuc29ycyB1c2UKICAgICAgKiB7QGxpbmsgU2Vuc29yTWFuYWdlciNnZXRTZW5zb3JMaXN0KGludCkgZ2V0U2Vuc29yTGlzdH0uCiAgICAgICoKKyAgICAgKiBAcGFyYW0gdHlwZQorICAgICAqICAgICAgICBvZiBzZW5zb3JzIHJlcXVlc3RlZAogICAgICAqCi0gICAgICogQHBhcmFtIHR5cGUgb2Ygc2Vuc29ycyByZXF1ZXN0ZWQKICAgICAgKiBAcmV0dXJuIHRoZSBkZWZhdWx0IHNlbnNvcnMgbWF0Y2hpbmcgdGhlIGFza2VkIHR5cGUuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRTZW5zb3JMaXN0KGludCkKKyAgICAgKiBAc2VlIFNlbnNvcgogICAgICAqLwogICAgIHB1YmxpYyBTZW5zb3IgZ2V0RGVmYXVsdFNlbnNvcihpbnQgdHlwZSkgewogICAgICAgICAvLyBUT0RPOiBuZWVkIHRvIGJlIHNtYXJ0ZXIsIGZvciBub3csIGp1c3QgcmV0dXJuIHRoZSAxc3Qgc2Vuc29yCkBAIC02NTksMTcgKzc0OSwyMSBAQAogICAgICAgICByZXR1cm4gbC5pc0VtcHR5KCkgPyBudWxsIDogbC5nZXQoMCk7CiAgICAgfQogCi0KICAgICAvKioKICAgICAgKiBSZWdpc3RlcnMgYSBsaXN0ZW5lciBmb3IgZ2l2ZW4gc2Vuc29ycy4KKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZQotICAgICAqIHtAbGluayBTZW5zb3JNYW5hZ2VyI3JlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yLCBpbnQpfQotICAgICAqIGluc3RlYWQuCisgICAgICogICAgICAgICAgICAge0BsaW5rIFNlbnNvck1hbmFnZXIjcmVnaXN0ZXJMaXN0ZW5lcihTZW5zb3JFdmVudExpc3RlbmVyLCBTZW5zb3IsIGludCl9CisgICAgICogICAgICAgICAgICAgaW5zdGVhZC4KICAgICAgKgotICAgICAqIEBwYXJhbSBsaXN0ZW5lciBzZW5zb3IgbGlzdGVuZXIgb2JqZWN0Ci0gICAgICogQHBhcmFtIHNlbnNvcnMgYSBiaXQgbWFza3Mgb2YgdGhlIHNlbnNvcnMgdG8gcmVnaXN0ZXIgdG8KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIKKyAgICAgKiAgICAgICAgc2Vuc29yIGxpc3RlbmVyIG9iamVjdAogICAgICAqCi0gICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzZW5zb3IgaXMgc3VwcG9ydGVkIGFuZCBzdWNjZXNzZnVsbHkgZW5hYmxlZAorICAgICAqIEBwYXJhbSBzZW5zb3JzCisgICAgICogICAgICAgIGEgYml0IG1hc2tzIG9mIHRoZSBzZW5zb3JzIHRvIHJlZ2lzdGVyIHRvCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzZW5zb3IgaXMgc3VwcG9ydGVkIGFuZCBzdWNjZXNzZnVsbHkKKyAgICAgKiAgICAgICAgIGVuYWJsZWQKICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBib29sZWFuIHJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yTGlzdGVuZXIgbGlzdGVuZXIsIGludCBzZW5zb3JzKSB7CkBAIC02NzgsMTggKzc3MiwyNiBAQAogCiAgICAgLyoqCiAgICAgICogUmVnaXN0ZXJzIGEgU2Vuc29yTGlzdGVuZXIgZm9yIGdpdmVuIHNlbnNvcnMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCB1c2UKLSAgICAgKiB7QGxpbmsgU2Vuc29yTWFuYWdlciNyZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvciwgaW50KX0KLSAgICAgKiBpbnN0ZWFkLgorICAgICAqICAgICAgICAgICAgIHtAbGluayBTZW5zb3JNYW5hZ2VyI3JlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yLCBpbnQpfQorICAgICAqICAgICAgICAgICAgIGluc3RlYWQuCiAgICAgICoKLSAgICAgKiBAcGFyYW0gbGlzdGVuZXIgc2Vuc29yIGxpc3RlbmVyIG9iamVjdAotICAgICAqIEBwYXJhbSBzZW5zb3JzIGEgYml0IG1hc2tzIG9mIHRoZSBzZW5zb3JzIHRvIHJlZ2lzdGVyIHRvCi0gICAgICogQHBhcmFtIHJhdGUgcmF0ZSBvZiBldmVudHMuIFRoaXMgaXMgb25seSBhIGhpbnQgdG8gdGhlIHN5c3RlbS4gZXZlbnRzCi0gICAgICogbWF5IGJlIHJlY2VpdmVkIGZhc3RlciBvciBzbG93ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHJhdGUuIFVzdWFsbHkgZXZlbnRzCi0gICAgICogYXJlIHJlY2VpdmVkIGZhc3Rlci4gVGhlIHZhbHVlIG11c3QgYmUgb25lIG9mIHtAbGluayAjU0VOU09SX0RFTEFZX05PUk1BTH0sCi0gICAgICoge0BsaW5rICNTRU5TT1JfREVMQVlfVUl9LCB7QGxpbmsgI1NFTlNPUl9ERUxBWV9HQU1FfSwgb3Ige0BsaW5rICNTRU5TT1JfREVMQVlfRkFTVEVTVH0uCisgICAgICogQHBhcmFtIGxpc3RlbmVyCisgICAgICogICAgICAgIHNlbnNvciBsaXN0ZW5lciBvYmplY3QKICAgICAgKgotICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2Vuc29yIGlzIHN1cHBvcnRlZCBhbmQgc3VjY2Vzc2Z1bGx5IGVuYWJsZWQKKyAgICAgKiBAcGFyYW0gc2Vuc29ycworICAgICAqICAgICAgICBhIGJpdCBtYXNrcyBvZiB0aGUgc2Vuc29ycyB0byByZWdpc3RlciB0bworICAgICAqCisgICAgICogQHBhcmFtIHJhdGUKKyAgICAgKiAgICAgICAgcmF0ZSBvZiBldmVudHMuIFRoaXMgaXMgb25seSBhIGhpbnQgdG8gdGhlIHN5c3RlbS4gZXZlbnRzIG1heSBiZQorICAgICAqICAgICAgICByZWNlaXZlZCBmYXN0ZXIgb3Igc2xvd2VyIHRoYW4gdGhlIHNwZWNpZmllZCByYXRlLiBVc3VhbGx5IGV2ZW50cworICAgICAqICAgICAgICBhcmUgcmVjZWl2ZWQgZmFzdGVyLiBUaGUgdmFsdWUgbXVzdCBiZSBvbmUgb2YKKyAgICAgKiAgICAgICAge0BsaW5rICNTRU5TT1JfREVMQVlfTk9STUFMfSwge0BsaW5rICNTRU5TT1JfREVMQVlfVUl9LAorICAgICAqICAgICAgICB7QGxpbmsgI1NFTlNPUl9ERUxBWV9HQU1FfSwgb3Ige0BsaW5rICNTRU5TT1JfREVMQVlfRkFTVEVTVH0uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzZW5zb3IgaXMgc3VwcG9ydGVkIGFuZCBzdWNjZXNzZnVsbHkKKyAgICAgKiAgICAgICAgIGVuYWJsZWQKICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBib29sZWFuIHJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yTGlzdGVuZXIgbGlzdGVuZXIsIGludCBzZW5zb3JzLCBpbnQgcmF0ZSkgewpAQCAtNzQ3LDEyICs4NDksMTYgQEAKIAogICAgIC8qKgogICAgICAqIFVucmVnaXN0ZXJzIGEgbGlzdGVuZXIgZm9yIHRoZSBzZW5zb3JzIHdpdGggd2hpY2ggaXQgaXMgcmVnaXN0ZXJlZC4KLSAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCB1c2UKLSAgICAgKiB7QGxpbmsgU2Vuc29yTWFuYWdlciN1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yKX0KLSAgICAgKiBpbnN0ZWFkLgogICAgICAqCi0gICAgICogQHBhcmFtIGxpc3RlbmVyIGEgU2Vuc29yTGlzdGVuZXIgb2JqZWN0Ci0gICAgICogQHBhcmFtIHNlbnNvcnMgYSBiaXQgbWFza3Mgb2YgdGhlIHNlbnNvcnMgdG8gdW5yZWdpc3RlciBmcm9tCisgICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlCisgICAgICogICAgICAgICAgICAge0BsaW5rIFNlbnNvck1hbmFnZXIjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvcil9CisgICAgICogICAgICAgICAgICAgaW5zdGVhZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqICAgICAgICBhIFNlbnNvckxpc3RlbmVyIG9iamVjdAorICAgICAqCisgICAgICogQHBhcmFtIHNlbnNvcnMKKyAgICAgKiAgICAgICAgYSBiaXQgbWFza3Mgb2YgdGhlIHNlbnNvcnMgdG8gdW5yZWdpc3RlciBmcm9tCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgdm9pZCB1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yTGlzdGVuZXIgbGlzdGVuZXIsIGludCBzZW5zb3JzKSB7CkBAIC04MTUsMTEgKzkyMSwxMyBAQAogCiAgICAgLyoqCiAgICAgICogVW5yZWdpc3RlcnMgYSBsaXN0ZW5lciBmb3IgYWxsIHNlbnNvcnMuCi0gICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlCi0gICAgICoge0BsaW5rIFNlbnNvck1hbmFnZXIjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIpfQotICAgICAqIGluc3RlYWQuCiAgICAgICoKLSAgICAgKiBAcGFyYW0gbGlzdGVuZXIgYSBTZW5zb3JMaXN0ZW5lciBvYmplY3QKKyAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCB1c2UKKyAgICAgKiAgICAgICAgICAgICB7QGxpbmsgU2Vuc29yTWFuYWdlciN1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lcil9CisgICAgICogICAgICAgICAgICAgaW5zdGVhZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqICAgICAgICBhIFNlbnNvckxpc3RlbmVyIG9iamVjdAogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckxpc3RlbmVyIGxpc3RlbmVyKSB7CkBAIC04MjksOCArOTM3LDE0IEBACiAgICAgLyoqCiAgICAgICogVW5yZWdpc3RlcnMgYSBsaXN0ZW5lciBmb3IgdGhlIHNlbnNvcnMgd2l0aCB3aGljaCBpdCBpcyByZWdpc3RlcmVkLgogICAgICAqCi0gICAgICogQHBhcmFtIGxpc3RlbmVyIGEgU2Vuc29yRXZlbnRMaXN0ZW5lciBvYmplY3QKLSAgICAgKiBAcGFyYW0gc2Vuc29yIHRoZSBzZW5zb3IgdG8gdW5yZWdpc3RlciBmcm9tCisgICAgICogQHBhcmFtIGxpc3RlbmVyCisgICAgICogICAgICAgIGEgU2Vuc29yRXZlbnRMaXN0ZW5lciBvYmplY3QKKyAgICAgKgorICAgICAqIEBwYXJhbSBzZW5zb3IKKyAgICAgKiAgICAgICAgdGhlIHNlbnNvciB0byB1bnJlZ2lzdGVyIGZyb20KKyAgICAgKgorICAgICAqIEBzZWUgI3VucmVnaXN0ZXJMaXN0ZW5lcihTZW5zb3JFdmVudExpc3RlbmVyKQorICAgICAqIEBzZWUgI3JlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yLCBpbnQpCiAgICAgICoKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCB1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgU2Vuc29yIHNlbnNvcikgewpAQCAtODQwLDI3ICs5NTQsNDIgQEAKICAgICAvKioKICAgICAgKiBVbnJlZ2lzdGVycyBhIGxpc3RlbmVyIGZvciBhbGwgc2Vuc29ycy4KICAgICAgKgotICAgICAqIEBwYXJhbSBsaXN0ZW5lciBhIFNlbnNvckxpc3RlbmVyIG9iamVjdAorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqICAgICAgICBhIFNlbnNvckxpc3RlbmVyIG9iamVjdAorICAgICAqCisgICAgICogQHNlZSAjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvcikKKyAgICAgKiBAc2VlICNyZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvciwgaW50KQogICAgICAqCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIgbGlzdGVuZXIpIHsKICAgICAgICAgdW5yZWdpc3Rlckxpc3RlbmVyKChPYmplY3QpbGlzdGVuZXIpOwogICAgIH0KIAotCiAgICAgLyoqCi0gICAgICogUmVnaXN0ZXJzIGEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lciBTZW5zb3JFdmVudExpc3RlbmVyfQotICAgICAqIGZvciB0aGUgZ2l2ZW4gc2Vuc29yLgorICAgICAqIFJlZ2lzdGVycyBhIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIKKyAgICAgKiBTZW5zb3JFdmVudExpc3RlbmVyfSBmb3IgdGhlIGdpdmVuIHNlbnNvci4KICAgICAgKgotICAgICAqIEBwYXJhbSBsaXN0ZW5lciBBIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIgU2Vuc29yRXZlbnRMaXN0ZW5lcn0gb2JqZWN0LgotICAgICAqIEBwYXJhbSBzZW5zb3IgVGhlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IHRvIHJlZ2lzdGVyIHRvLgotICAgICAqIEBwYXJhbSByYXRlIFRoZSByYXRlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50IHNlbnNvciBldmVudHN9IGFyZSBkZWxpdmVyZWQgYXQuCi0gICAgICogVGhpcyBpcyBvbmx5IGEgaGludCB0byB0aGUgc3lzdGVtLiBFdmVudHMgbWF5IGJlIHJlY2VpdmVkIGZhc3RlciBvcgotICAgICAqIHNsb3dlciB0aGFuIHRoZSBzcGVjaWZpZWQgcmF0ZS4gVXN1YWxseSBldmVudHMgYXJlIHJlY2VpdmVkIGZhc3Rlci4gVGhlIHZhbHVlIG11c3QgYmUKLSAgICAgKiBvbmUgb2Yge0BsaW5rICNTRU5TT1JfREVMQVlfTk9STUFMfSwge0BsaW5rICNTRU5TT1JfREVMQVlfVUl9LCB7QGxpbmsgI1NFTlNPUl9ERUxBWV9HQU1FfSwKLSAgICAgKiBvciB7QGxpbmsgI1NFTlNPUl9ERUxBWV9GQVNURVNUfS4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIKKyAgICAgKiAgICAgICAgQSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudExpc3RlbmVyIFNlbnNvckV2ZW50TGlzdGVuZXJ9CisgICAgICogICAgICAgIG9iamVjdC4KICAgICAgKgotICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2Vuc29yIGlzIHN1cHBvcnRlZCBhbmQgc3VjY2Vzc2Z1bGx5IGVuYWJsZWQuCisgICAgICogQHBhcmFtIHNlbnNvcgorICAgICAqICAgICAgICBUaGUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gdG8gcmVnaXN0ZXIgdG8uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmF0ZQorICAgICAqICAgICAgICBUaGUgcmF0ZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBzZW5zb3IgZXZlbnRzfSBhcmUKKyAgICAgKiAgICAgICAgZGVsaXZlcmVkIGF0LiBUaGlzIGlzIG9ubHkgYSBoaW50IHRvIHRoZSBzeXN0ZW0uIEV2ZW50cyBtYXkgYmUKKyAgICAgKiAgICAgICAgcmVjZWl2ZWQgZmFzdGVyIG9yIHNsb3dlciB0aGFuIHRoZSBzcGVjaWZpZWQgcmF0ZS4gVXN1YWxseSBldmVudHMKKyAgICAgKiAgICAgICAgYXJlIHJlY2VpdmVkIGZhc3Rlci4gVGhlIHZhbHVlIG11c3QgYmUgb25lIG9mCisgICAgICogICAgICAgIHtAbGluayAjU0VOU09SX0RFTEFZX05PUk1BTH0sIHtAbGluayAjU0VOU09SX0RFTEFZX1VJfSwKKyAgICAgKiAgICAgICAge0BsaW5rICNTRU5TT1JfREVMQVlfR0FNRX0sIG9yIHtAbGluayAjU0VOU09SX0RFTEFZX0ZBU1RFU1R9LgorICAgICAqCisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgc2Vuc29yIGlzIHN1cHBvcnRlZCBhbmQgc3VjY2Vzc2Z1bGx5CisgICAgICogICAgICAgICBlbmFibGVkLgorICAgICAqCisgICAgICogQHNlZSAjcmVnaXN0ZXJMaXN0ZW5lcihTZW5zb3JFdmVudExpc3RlbmVyLCBTZW5zb3IsIGludCwgSGFuZGxlcikKKyAgICAgKiBAc2VlICN1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lcikKKyAgICAgKiBAc2VlICN1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yKQogICAgICAqCiAgICAgICovCiAgICAgcHVibGljIGJvb2xlYW4gcmVnaXN0ZXJMaXN0ZW5lcihTZW5zb3JFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBTZW5zb3Igc2Vuc29yLCBpbnQgcmF0ZSkgewpAQCAtODY4LDIxICs5OTcsMzUgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBSZWdpc3RlcnMgYSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudExpc3RlbmVyIFNlbnNvckV2ZW50TGlzdGVuZXJ9Ci0gICAgICogZm9yIHRoZSBnaXZlbiBzZW5zb3IuCisgICAgICogUmVnaXN0ZXJzIGEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lcgorICAgICAqIFNlbnNvckV2ZW50TGlzdGVuZXJ9IGZvciB0aGUgZ2l2ZW4gc2Vuc29yLgogICAgICAqCi0gICAgICogQHBhcmFtIGxpc3RlbmVyIEEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lciBTZW5zb3JFdmVudExpc3RlbmVyfSBvYmplY3QuCi0gICAgICogQHBhcmFtIHNlbnNvciBUaGUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gdG8gcmVnaXN0ZXIgdG8uCi0gICAgICogQHBhcmFtIHJhdGUgVGhlIHJhdGUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgc2Vuc29yIGV2ZW50c30gYXJlIGRlbGl2ZXJlZCBhdC4KLSAgICAgKiBUaGlzIGlzIG9ubHkgYSBoaW50IHRvIHRoZSBzeXN0ZW0uIEV2ZW50cyBtYXkgYmUgcmVjZWl2ZWQgZmFzdGVyIG9yCi0gICAgICogc2xvd2VyIHRoYW4gdGhlIHNwZWNpZmllZCByYXRlLiBVc3VhbGx5IGV2ZW50cyBhcmUgcmVjZWl2ZWQgZmFzdGVyLiBUaGUgdmFsdWUgbXVzdCBiZSBvbmUKLSAgICAgKiBvZiB7QGxpbmsgI1NFTlNPUl9ERUxBWV9OT1JNQUx9LCB7QGxpbmsgI1NFTlNPUl9ERUxBWV9VSX0sIHtAbGluayAjU0VOU09SX0RFTEFZX0dBTUV9LCBvcgotICAgICAqIHtAbGluayAjU0VOU09SX0RFTEFZX0ZBU1RFU1R9LgotICAgICAqIEBwYXJhbSBoYW5kbGVyIFRoZSB7QGxpbmsgYW5kcm9pZC5vcy5IYW5kbGVyIEhhbmRsZXJ9IHRoZQotICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50IHNlbnNvciBldmVudHN9IHdpbGwgYmUgZGVsaXZlcmVkIHRvLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqICAgICAgICBBIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIgU2Vuc29yRXZlbnRMaXN0ZW5lcn0KKyAgICAgKiAgICAgICAgb2JqZWN0LgorICAgICAqCisgICAgICogQHBhcmFtIHNlbnNvcgorICAgICAqICAgICAgICBUaGUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gdG8gcmVnaXN0ZXIgdG8uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmF0ZQorICAgICAqICAgICAgICBUaGUgcmF0ZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBzZW5zb3IgZXZlbnRzfSBhcmUKKyAgICAgKiAgICAgICAgZGVsaXZlcmVkIGF0LiBUaGlzIGlzIG9ubHkgYSBoaW50IHRvIHRoZSBzeXN0ZW0uIEV2ZW50cyBtYXkgYmUKKyAgICAgKiAgICAgICAgcmVjZWl2ZWQgZmFzdGVyIG9yIHNsb3dlciB0aGFuIHRoZSBzcGVjaWZpZWQgcmF0ZS4gVXN1YWxseSBldmVudHMKKyAgICAgKiAgICAgICAgYXJlIHJlY2VpdmVkIGZhc3Rlci4gVGhlIHZhbHVlIG11c3QgYmUgb25lIG9mCisgICAgICogICAgICAgIHtAbGluayAjU0VOU09SX0RFTEFZX05PUk1BTH0sIHtAbGluayAjU0VOU09SX0RFTEFZX1VJfSwKKyAgICAgKiAgICAgICAge0BsaW5rICNTRU5TT1JfREVMQVlfR0FNRX0sIG9yIHtAbGluayAjU0VOU09SX0RFTEFZX0ZBU1RFU1R9LgorICAgICAqCisgICAgICogQHBhcmFtIGhhbmRsZXIKKyAgICAgKiAgICAgICAgVGhlIHtAbGluayBhbmRyb2lkLm9zLkhhbmRsZXIgSGFuZGxlcn0gdGhlCisgICAgICogICAgICAgIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50IHNlbnNvciBldmVudHN9IHdpbGwgYmUKKyAgICAgKiAgICAgICAgZGVsaXZlcmVkIHRvLgogICAgICAqCiAgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzZW5zb3IgaXMgc3VwcG9ydGVkIGFuZCBzdWNjZXNzZnVsbHkgZW5hYmxlZC4KICAgICAgKgorICAgICAqIEBzZWUgI3JlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yLCBpbnQpCisgICAgICogQHNlZSAjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIpCisgICAgICogQHNlZSAjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvcikKKyAgICAgKgogICAgICAqLwogICAgIHB1YmxpYyBib29sZWFuIHJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgU2Vuc29yIHNlbnNvciwgaW50IHJhdGUsCiAgICAgICAgICAgICBIYW5kbGVyIGhhbmRsZXIpIHsKQEAgLTEwMDMsNjAgKzExNDYsODMgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBDb21wdXRlcyB0aGUgaW5jbGluYXRpb24gbWF0cml4IDxiPkk8L2I+IGFzIHdlbGwgYXMgdGhlIHJvdGF0aW9uCi0gICAgICogbWF0cml4IDxiPlI8L2I+IHRyYW5zZm9ybWluZyBhIHZlY3RvciBmcm9tIHRoZQotICAgICAqIGRldmljZSBjb29yZGluYXRlIHN5c3RlbSB0byB0aGUgd29ybGQncyBjb29yZGluYXRlIHN5c3RlbSB3aGljaCBpcwotICAgICAqIGRlZmluZWQgYXMgYSBkaXJlY3Qgb3J0aG9ub3JtYWwgYmFzaXMsIHdoZXJlOgotICAgICAqIAorICAgICAqIDxwPgorICAgICAqIENvbXB1dGVzIHRoZSBpbmNsaW5hdGlvbiBtYXRyaXggPGI+STwvYj4gYXMgd2VsbCBhcyB0aGUgcm90YXRpb24gbWF0cml4CisgICAgICogPGI+UjwvYj4gdHJhbnNmb3JtaW5nIGEgdmVjdG9yIGZyb20gdGhlIGRldmljZSBjb29yZGluYXRlIHN5c3RlbSB0byB0aGUKKyAgICAgKiB3b3JsZCdzIGNvb3JkaW5hdGUgc3lzdGVtIHdoaWNoIGlzIGRlZmluZWQgYXMgYSBkaXJlY3Qgb3J0aG9ub3JtYWwgYmFzaXMsCisgICAgICogd2hlcmU6CisgICAgICogPC9wPgorICAgICAqCisgICAgICogPHVsPgogICAgICAqIDxsaT5YIGlzIGRlZmluZWQgYXMgdGhlIHZlY3RvciBwcm9kdWN0IDxiPlkuWjwvYj4gKEl0IGlzIHRhbmdlbnRpYWwgdG8KICAgICAgKiB0aGUgZ3JvdW5kIGF0IHRoZSBkZXZpY2UncyBjdXJyZW50IGxvY2F0aW9uIGFuZCByb3VnaGx5IHBvaW50cyBFYXN0KS48L2xpPgogICAgICAqIDxsaT5ZIGlzIHRhbmdlbnRpYWwgdG8gdGhlIGdyb3VuZCBhdCB0aGUgZGV2aWNlJ3MgY3VycmVudCBsb2NhdGlvbiBhbmQKICAgICAgKiBwb2ludHMgdG93YXJkcyB0aGUgbWFnbmV0aWMgTm9ydGggUG9sZS48L2xpPgogICAgICAqIDxsaT5aIHBvaW50cyB0b3dhcmRzIHRoZSBza3kgYW5kIGlzIHBlcnBlbmRpY3VsYXIgdG8gdGhlIGdyb3VuZC48L2xpPgorICAgICAqIDwvdWw+CisgICAgICoKKyAgICAgKiA8cD4KKyAgICAgKiA8Y2VudGVyPjxpbWcgc3JjPSIuLi8uLi8uLi9pbWFnZXMvYXhpc19nbG9iZS5wbmciCisgICAgICogYWx0PSJTZW5zb3JzIGNvb3JkaW5hdGUtc3lzdGVtIGRpYWdyYW0uIiBib3JkZXI9IjAiIC8+PC9jZW50ZXI+CisgICAgICogPC9wPgorICAgICAqCiAgICAgICogPHA+CiAgICAgICogPGhyPgotICAgICAqIDxwPkJ5IGRlZmluaXRpb246Ci0gICAgICogPHA+WzAgMCBnXSA9IDxiPlI8L2I+ICogPGI+Z3Jhdml0eTwvYj4gKGcgPSBtYWduaXR1ZGUgb2YgZ3Jhdml0eSkKLSAgICAgKiA8cD5bMCBtIDBdID0gPGI+STwvYj4gKiA8Yj5SPC9iPiAqIDxiPmdlb21hZ25ldGljPC9iPgotICAgICAqIChtID0gbWFnbml0dWRlIG9mIGdlb21hZ25ldGljIGZpZWxkKQotICAgICAqIDxwPjxiPlI8L2I+IGlzIHRoZSBpZGVudGl0eSBtYXRyaXggd2hlbiB0aGUgZGV2aWNlIGlzIGFsaWduZWQgd2l0aCB0aGUKKyAgICAgKiA8cD4KKyAgICAgKiBCeSBkZWZpbml0aW9uOgorICAgICAqIDxwPgorICAgICAqIFswIDAgZ10gPSA8Yj5SPC9iPiAqIDxiPmdyYXZpdHk8L2I+IChnID0gbWFnbml0dWRlIG9mIGdyYXZpdHkpCisgICAgICogPHA+CisgICAgICogWzAgbSAwXSA9IDxiPkk8L2I+ICogPGI+UjwvYj4gKiA8Yj5nZW9tYWduZXRpYzwvYj4gKG0gPSBtYWduaXR1ZGUgb2YKKyAgICAgKiBnZW9tYWduZXRpYyBmaWVsZCkKKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5SPC9iPiBpcyB0aGUgaWRlbnRpdHkgbWF0cml4IHdoZW4gdGhlIGRldmljZSBpcyBhbGlnbmVkIHdpdGggdGhlCiAgICAgICogd29ybGQncyBjb29yZGluYXRlIHN5c3RlbSwgdGhhdCBpcywgd2hlbiB0aGUgZGV2aWNlJ3MgWCBheGlzIHBvaW50cwogICAgICAqIHRvd2FyZCBFYXN0LCB0aGUgWSBheGlzIHBvaW50cyB0byB0aGUgTm9ydGggUG9sZSBhbmQgdGhlIGRldmljZSBpcyBmYWNpbmcKICAgICAgKiB0aGUgc2t5LgogICAgICAqCi0gICAgICogPHA+PGI+STwvYj4gaXMgYSByb3RhdGlvbiBtYXRyaXggdHJhbnNmb3JtaW5nIHRoZSBnZW9tYWduZXRpYwotICAgICAqIHZlY3RvciBpbnRvIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UgYXMgZ3Jhdml0eSAodGhlIHdvcmxkJ3MgY29vcmRpbmF0ZQotICAgICAqIHNwYWNlKS4gPGI+STwvYj4gaXMgYSBzaW1wbGUgcm90YXRpb24gYXJvdW5kIHRoZSBYIGF4aXMuCi0gICAgICogVGhlIGluY2xpbmF0aW9uIGFuZ2xlIGluIHJhZGlhbnMgY2FuIGJlIGNvbXB1dGVkIHdpdGgKLSAgICAgKiB7QGxpbmsgI2dldEluY2xpbmF0aW9ufS4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5JPC9iPiBpcyBhIHJvdGF0aW9uIG1hdHJpeCB0cmFuc2Zvcm1pbmcgdGhlIGdlb21hZ25ldGljIHZlY3RvciBpbnRvCisgICAgICogdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSBhcyBncmF2aXR5ICh0aGUgd29ybGQncyBjb29yZGluYXRlIHNwYWNlKS4KKyAgICAgKiA8Yj5JPC9iPiBpcyBhIHNpbXBsZSByb3RhdGlvbiBhcm91bmQgdGhlIFggYXhpcy4gVGhlIGluY2xpbmF0aW9uIGFuZ2xlIGluCisgICAgICogcmFkaWFucyBjYW4gYmUgY29tcHV0ZWQgd2l0aCB7QGxpbmsgI2dldEluY2xpbmF0aW9ufS4KICAgICAgKiA8aHI+Ci0gICAgICogCi0gICAgICogPHA+IEVhY2ggbWF0cml4IGlzIHJldHVybmVkIGVpdGhlciBhcyBhIDN4MyBvciA0eDQgcm93LW1ham9yIG1hdHJpeAotICAgICAqIGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBwYXNzZWQgYXJyYXk6Ci0gICAgICogPHA+PHU+SWYgdGhlIGFycmF5IGxlbmd0aCBpcyAxNjo8L3U+CisgICAgICoKKyAgICAgKiA8cD4KKyAgICAgKiBFYWNoIG1hdHJpeCBpcyByZXR1cm5lZCBlaXRoZXIgYXMgYSAzeDMgb3IgNHg0IHJvdy1tYWpvciBtYXRyaXggZGVwZW5kaW5nCisgICAgICogb24gdGhlIGxlbmd0aCBvZiB0aGUgcGFzc2VkIGFycmF5OgorICAgICAqIDxwPgorICAgICAqIDx1PklmIHRoZSBhcnJheSBsZW5ndGggaXMgMTY6PC91PgorICAgICAqCiAgICAgICogPHByZT4KICAgICAgKiAgIC8gIE1bIDBdICAgTVsgMV0gICBNWyAyXSAgIE1bIDNdICBcCiAgICAgICogICB8ICBNWyA0XSAgIE1bIDVdICAgTVsgNl0gICBNWyA3XSAgfAogICAgICAqICAgfCAgTVsgOF0gICBNWyA5XSAgIE1bMTBdICAgTVsxMV0gIHwKICAgICAgKiAgIFwgIE1bMTJdICAgTVsxM10gICBNWzE0XSAgIE1bMTVdICAvCiAgICAgICo8L3ByZT4KLSAgICAgKiBUaGlzIG1hdHJpeCBpcyByZWFkeSB0byBiZSB1c2VkIGJ5IE9wZW5HTCBFUydzIAotICAgICAqIHtAbGluayBqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTDEwI2dsTG9hZE1hdHJpeGYoZmxvYXRbXSwgaW50KSAKLSAgICAgKiBnbExvYWRNYXRyaXhmKGZsb2F0W10sIGludCl9LiAKLSAgICAgKiA8cD5Ob3RlIHRoYXQgYmVjYXVzZSBPcGVuR0wgbWF0cmljZXMgYXJlIGNvbHVtbi1tYWpvciBtYXRyaWNlcyB5b3UgbXVzdAotICAgICAqIHRyYW5zcG9zZSB0aGUgbWF0cml4IGJlZm9yZSB1c2luZyBpdC4gSG93ZXZlciwgc2luY2UgdGhlIG1hdHJpeCBpcyBhIAorICAgICAqCisgICAgICogVGhpcyBtYXRyaXggaXMgcmVhZHkgdG8gYmUgdXNlZCBieSBPcGVuR0wgRVMncworICAgICAqIHtAbGluayBqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTDEwI2dsTG9hZE1hdHJpeGYoZmxvYXRbXSwgaW50KQorICAgICAqIGdsTG9hZE1hdHJpeGYoZmxvYXRbXSwgaW50KX0uCisgICAgICogPHA+CisgICAgICogTm90ZSB0aGF0IGJlY2F1c2UgT3BlbkdMIG1hdHJpY2VzIGFyZSBjb2x1bW4tbWFqb3IgbWF0cmljZXMgeW91IG11c3QKKyAgICAgKiB0cmFuc3Bvc2UgdGhlIG1hdHJpeCBiZWZvcmUgdXNpbmcgaXQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBtYXRyaXggaXMgYQogICAgICAqIHJvdGF0aW9uIG1hdHJpeCwgaXRzIHRyYW5zcG9zZSBpcyBhbHNvIGl0cyBpbnZlcnNlLCBjb252ZW5pZW50bHksIGl0IGlzCiAgICAgICogb2Z0ZW4gdGhlIGludmVyc2Ugb2YgdGhlIHJvdGF0aW9uIHRoYXQgaXMgbmVlZGVkIGZvciByZW5kZXJpbmc7IGl0IGNhbgogICAgICAqIHRoZXJlZm9yZSBiZSB1c2VkIHdpdGggT3BlbkdMIEVTIGRpcmVjdGx5LgogICAgICAqIDxwPgogICAgICAqIEFsc28gbm90ZSB0aGF0IHRoZSByZXR1cm5lZCBtYXRyaWNlcyBhbHdheXMgaGF2ZSB0aGlzIGZvcm06CisgICAgICoKICAgICAgKiA8cHJlPgogICAgICAqICAgLyAgTVsgMF0gICBNWyAxXSAgIE1bIDJdICAgMCAgXAogICAgICAqICAgfCAgTVsgNF0gICBNWyA1XSAgIE1bIDZdICAgMCAgfAogICAgICAqICAgfCAgTVsgOF0gICBNWyA5XSAgIE1bMTBdICAgMCAgfAogICAgICAqICAgXCAgICAgIDAgICAgICAgMCAgICAgICAwICAgMSAgLwogICAgICAqPC9wcmU+Ci0gICAgICogPHA+PHU+SWYgdGhlIGFycmF5IGxlbmd0aCBpcyA5OjwvdT4KKyAgICAgKgorICAgICAqIDxwPgorICAgICAqIDx1PklmIHRoZSBhcnJheSBsZW5ndGggaXMgOTo8L3U+CisgICAgICoKICAgICAgKiA8cHJlPgogICAgICAqICAgLyAgTVsgMF0gICBNWyAxXSAgIE1bIDJdICBcCiAgICAgICogICB8ICBNWyAzXSAgIE1bIDRdICAgTVsgNV0gIHwKQEAgLTEwNjQsMzQgKzEyMzAsNTIgQEAKICAgICAgKjwvcHJlPgogICAgICAqCiAgICAgICogPGhyPgotICAgICAqIDxwPlRoZSBpbnZlcnNlIG9mIGVhY2ggbWF0cml4IGNhbiBiZSBjb21wdXRlZCBlYXNpbHkgYnkgdGFraW5nIGl0cworICAgICAqIDxwPgorICAgICAqIFRoZSBpbnZlcnNlIG9mIGVhY2ggbWF0cml4IGNhbiBiZSBjb21wdXRlZCBlYXNpbHkgYnkgdGFraW5nIGl0cwogICAgICAqIHRyYW5zcG9zZS4KICAgICAgKgotICAgICAqIDxwPlRoZSBtYXRyaWNlcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBtZWFuaW5nZnVsIG9ubHkgd2hlbiB0aGUKLSAgICAgKiBkZXZpY2UgaXMgbm90IGZyZWUtZmFsbGluZyBhbmQgaXQgaXMgbm90IGNsb3NlIHRvIHRoZSBtYWduZXRpYyBub3J0aC4KLSAgICAgKiBJZiB0aGUgZGV2aWNlIGlzIGFjY2VsZXJhdGluZywgb3IgcGxhY2VkIGludG8gYSBzdHJvbmcgbWFnbmV0aWMgZmllbGQsCi0gICAgICogdGhlIHJldHVybmVkIG1hdHJpY2VzIG1heSBiZSBpbmFjY3VyYXRlLgorICAgICAqIDxwPgorICAgICAqIFRoZSBtYXRyaWNlcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBtZWFuaW5nZnVsIG9ubHkgd2hlbiB0aGUKKyAgICAgKiBkZXZpY2UgaXMgbm90IGZyZWUtZmFsbGluZyBhbmQgaXQgaXMgbm90IGNsb3NlIHRvIHRoZSBtYWduZXRpYyBub3J0aC4gSWYKKyAgICAgKiB0aGUgZGV2aWNlIGlzIGFjY2VsZXJhdGluZywgb3IgcGxhY2VkIGludG8gYSBzdHJvbmcgbWFnbmV0aWMgZmllbGQsIHRoZQorICAgICAqIHJldHVybmVkIG1hdHJpY2VzIG1heSBiZSBpbmFjY3VyYXRlLgogICAgICAqCi0gICAgICogQHBhcmFtIFIgaXMgYW4gYXJyYXkgb2YgOSBmbG9hdHMgaG9sZGluZyB0aGUgcm90YXRpb24gbWF0cml4IDxiPlI8L2I+Ci0gICAgICogd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIFIgY2FuIGJlIG51bGwuPHA+Ci0gICAgICogQHBhcmFtIEkgaXMgYW4gYXJyYXkgb2YgOSBmbG9hdHMgaG9sZGluZyB0aGUgcm90YXRpb24gbWF0cml4IDxiPkk8L2I+Ci0gICAgICogd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIEkgY2FuIGJlIG51bGwuPHA+Ci0gICAgICogQHBhcmFtIGdyYXZpdHkgaXMgYW4gYXJyYXkgb2YgMyBmbG9hdHMgY29udGFpbmluZyB0aGUgZ3Jhdml0eSB2ZWN0b3IKLSAgICAgKiBleHByZXNzZWQgaW4gdGhlIGRldmljZSdzIGNvb3JkaW5hdGUuIFlvdSBjYW4gc2ltcGx5IHVzZSB0aGUKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCN2YWx1ZXMgdmFsdWVzfQotICAgICAqIHJldHVybmVkIGJ5IGEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9IG9mIGEKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBvZiB0eXBlCi0gICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfQUNDRUxFUk9NRVRFUiBUWVBFX0FDQ0VMRVJPTUVURVJ9LjxwPgotICAgICAqIEBwYXJhbSBnZW9tYWduZXRpYyBpcyBhbiBhcnJheSBvZiAzIGZsb2F0cyBjb250YWluaW5nIHRoZSBnZW9tYWduZXRpYwotICAgICAqIHZlY3RvciBleHByZXNzZWQgaW4gdGhlIGRldmljZSdzIGNvb3JkaW5hdGUuIFlvdSBjYW4gc2ltcGx5IHVzZSB0aGUKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCN2YWx1ZXMgdmFsdWVzfQotICAgICAqIHJldHVybmVkIGJ5IGEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9IG9mIGEKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBvZiB0eXBlCi0gICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfTUFHTkVUSUNfRklFTEQgVFlQRV9NQUdORVRJQ19GSUVMRH0uCi0gICAgICogQHJldHVybgotICAgICAqICAgdHJ1ZSBvbiBzdWNjZXNzPHA+Ci0gICAgICogICBmYWxzZSBvbiBmYWlsdXJlIChmb3IgaW5zdGFuY2UsIGlmIHRoZSBkZXZpY2UgaXMgaW4gZnJlZSBmYWxsKS4KLSAgICAgKiAgIE9uIGZhaWx1cmUgdGhlIG91dHB1dCBtYXRyaWNlcyBhcmUgbm90IG1vZGlmaWVkLgorICAgICAqIEBwYXJhbSBSCisgICAgICogICAgICAgIGlzIGFuIGFycmF5IG9mIDkgZmxvYXRzIGhvbGRpbmcgdGhlIHJvdGF0aW9uIG1hdHJpeCA8Yj5SPC9iPiB3aGVuCisgICAgICogICAgICAgIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4gUiBjYW4gYmUgbnVsbC4KKyAgICAgKiAgICAgICAgPHA+CisgICAgICoKKyAgICAgKiBAcGFyYW0gSQorICAgICAqICAgICAgICBpcyBhbiBhcnJheSBvZiA5IGZsb2F0cyBob2xkaW5nIHRoZSByb3RhdGlvbiBtYXRyaXggPGI+STwvYj4gd2hlbgorICAgICAqICAgICAgICB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIEkgY2FuIGJlIG51bGwuCisgICAgICogICAgICAgIDxwPgorICAgICAqCisgICAgICogQHBhcmFtIGdyYXZpdHkKKyAgICAgKiAgICAgICAgaXMgYW4gYXJyYXkgb2YgMyBmbG9hdHMgY29udGFpbmluZyB0aGUgZ3Jhdml0eSB2ZWN0b3IgZXhwcmVzc2VkIGluCisgICAgICogICAgICAgIHRoZSBkZXZpY2UncyBjb29yZGluYXRlLiBZb3UgY2FuIHNpbXBseSB1c2UgdGhlCisgICAgICogICAgICAgIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50I3ZhbHVlcyB2YWx1ZXN9IHJldHVybmVkIGJ5IGEKKyAgICAgKiAgICAgICAge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9IG9mIGEKKyAgICAgKiAgICAgICAge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gb2YgdHlwZQorICAgICAqICAgICAgICB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IjVFlQRV9BQ0NFTEVST01FVEVSCisgICAgICogICAgICAgIFRZUEVfQUNDRUxFUk9NRVRFUn0uCisgICAgICogICAgICAgIDxwPgorICAgICAqCisgICAgICogQHBhcmFtIGdlb21hZ25ldGljCisgICAgICogICAgICAgIGlzIGFuIGFycmF5IG9mIDMgZmxvYXRzIGNvbnRhaW5pbmcgdGhlIGdlb21hZ25ldGljIHZlY3RvcgorICAgICAqICAgICAgICBleHByZXNzZWQgaW4gdGhlIGRldmljZSdzIGNvb3JkaW5hdGUuIFlvdSBjYW4gc2ltcGx5IHVzZSB0aGUKKyAgICAgKiAgICAgICAge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQjdmFsdWVzIHZhbHVlc30gcmV0dXJuZWQgYnkgYQorICAgICAqICAgICAgICB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBTZW5zb3JFdmVudH0gb2YgYQorICAgICAqICAgICAgICB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBvZiB0eXBlCisgICAgICogICAgICAgIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX01BR05FVElDX0ZJRUxECisgICAgICogICAgICAgIFRZUEVfTUFHTkVUSUNfRklFTER9LgorICAgICAqCisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBvbiBzdWNjZXNzLCA8Y29kZT5mYWxzZTwvY29kZT4gb24gZmFpbHVyZSAoZm9yCisgICAgICogICAgICAgICBpbnN0YW5jZSwgaWYgdGhlIGRldmljZSBpcyBpbiBmcmVlIGZhbGwpLiBPbiBmYWlsdXJlIHRoZSBvdXRwdXQKKyAgICAgKiAgICAgICAgIG1hdHJpY2VzIGFyZSBub3QgbW9kaWZpZWQuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRJbmNsaW5hdGlvbihmbG9hdFtdKQorICAgICAqIEBzZWUgI2dldE9yaWVudGF0aW9uKGZsb2F0W10sIGZsb2F0W10pCisgICAgICogQHNlZSAjcmVtYXBDb29yZGluYXRlU3lzdGVtKGZsb2F0W10sIGludCwgaW50LCBmbG9hdFtdKQogICAgICAqLwogCiAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGdldFJvdGF0aW9uTWF0cml4KGZsb2F0W10gUiwgZmxvYXRbXSBJLApAQCAtMTE2MCw2NCArMTM0NCw5OCBAQAogICAgIC8qKgogICAgICAqIENvbXB1dGVzIHRoZSBnZW9tYWduZXRpYyBpbmNsaW5hdGlvbiBhbmdsZSBpbiByYWRpYW5zIGZyb20gdGhlCiAgICAgICogaW5jbGluYXRpb24gbWF0cml4IDxiPkk8L2I+IHJldHVybmVkIGJ5IHtAbGluayAjZ2V0Um90YXRpb25NYXRyaXh9LgotICAgICAqIEBwYXJhbSBJIGluY2xpbmF0aW9uIG1hdHJpeCBzZWUge0BsaW5rICNnZXRSb3RhdGlvbk1hdHJpeH0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gSQorICAgICAqICAgICAgICBpbmNsaW5hdGlvbiBtYXRyaXggc2VlIHtAbGluayAjZ2V0Um90YXRpb25NYXRyaXh9LgorICAgICAqCiAgICAgICogQHJldHVybiBUaGUgZ2VvbWFnbmV0aWMgaW5jbGluYXRpb24gYW5nbGUgaW4gcmFkaWFucy4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldFJvdGF0aW9uTWF0cml4KGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10pCisgICAgICogQHNlZSAjZ2V0T3JpZW50YXRpb24oZmxvYXRbXSwgZmxvYXRbXSkKKyAgICAgKiBAc2VlIEdlb21hZ25ldGljRmllbGQKKyAgICAgKgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmxvYXQgZ2V0SW5jbGluYXRpb24oZmxvYXRbXSBJKSB7CiAgICAgICAgIGlmIChJLmxlbmd0aCA9PSA5KSB7CiAgICAgICAgICAgICByZXR1cm4gKGZsb2F0KU1hdGguYXRhbjIoSVs1XSwgSVs0XSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gKGZsb2F0KU1hdGguYXRhbjIoSVs2XSwgSVs1XSk7ICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gKGZsb2F0KU1hdGguYXRhbjIoSVs2XSwgSVs1XSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvKioKLSAgICAgKiBSb3RhdGVzIHRoZSBzdXBwbGllZCByb3RhdGlvbiBtYXRyaXggc28gaXQgaXMgZXhwcmVzc2VkIGluIGEKLSAgICAgKiBkaWZmZXJlbnQgY29vcmRpbmF0ZSBzeXN0ZW0uIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiBhbiBhcHBsaWNhdGlvbgotICAgICAqIG5lZWRzIHRvIGNvbXB1dGUgdGhlIHRocmVlIG9yaWVudGF0aW9uIGFuZ2xlcyBvZiB0aGUgZGV2aWNlIChzZWUKKyAgICAgKiA8cD4KKyAgICAgKiBSb3RhdGVzIHRoZSBzdXBwbGllZCByb3RhdGlvbiBtYXRyaXggc28gaXQgaXMgZXhwcmVzc2VkIGluIGEgZGlmZmVyZW50CisgICAgICogY29vcmRpbmF0ZSBzeXN0ZW0uIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBuZWVkcyB0bworICAgICAqIGNvbXB1dGUgdGhlIHRocmVlIG9yaWVudGF0aW9uIGFuZ2xlcyBvZiB0aGUgZGV2aWNlIChzZWUKICAgICAgKiB7QGxpbmsgI2dldE9yaWVudGF0aW9ufSkgaW4gYSBkaWZmZXJlbnQgY29vcmRpbmF0ZSBzeXN0ZW0uCi0gICAgICogCi0gICAgICogPHA+V2hlbiB0aGUgcm90YXRpb24gbWF0cml4IGlzIHVzZWQgZm9yIGRyYXdpbmcgKGZvciBpbnN0YW5jZSB3aXRoIAotICAgICAqIE9wZW5HTCBFUyksIGl0IHVzdWFsbHkgPGI+ZG9lc24ndCBuZWVkPC9iPiB0byBiZSB0cmFuc2Zvcm1lZCBieSB0aGlzIAotICAgICAqIGZ1bmN0aW9uLCB1bmxlc3MgdGhlIHNjcmVlbiBpcyBwaHlzaWNhbGx5IHJvdGF0ZWQsIGluIHdoaWNoIGNhc2UgeW91Ci0gICAgICogY2FuIHVzZSB7QGxpbmsgYW5kcm9pZC52aWV3LkRpc3BsYXkjZ2V0Um90YXRpb24oKSBEaXNwbGF5LmdldFJvdGF0aW9uKCl9Ci0gICAgICogdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgcm90YXRpb24gb2YgdGhlIHNjcmVlbi4gIE5vdGUgdGhhdCBiZWNhdXNlIHRoZQotICAgICAqIHVzZXIgaXMgZ2VuZXJhbGx5IGZyZWUgdG8gcm90YXRlIHRoZWlyIHNjcmVlbiwgeW91IG9mdGVuIHNob3VsZAotICAgICAqIGNvbnNpZGVyIHRoZSByb3RhdGlvbiBpbiBkZWNpZGluZyB0aGUgcGFyYW1ldGVycyB0byB1c2UgaGVyZS4KKyAgICAgKiA8L3A+CiAgICAgICoKLSAgICAgKiA8cD48dT5FeGFtcGxlczo8L3U+PHA+CisgICAgICogPHA+CisgICAgICogV2hlbiB0aGUgcm90YXRpb24gbWF0cml4IGlzIHVzZWQgZm9yIGRyYXdpbmcgKGZvciBpbnN0YW5jZSB3aXRoIE9wZW5HTAorICAgICAqIEVTKSwgaXQgdXN1YWxseSA8Yj5kb2Vzbid0IG5lZWQ8L2I+IHRvIGJlIHRyYW5zZm9ybWVkIGJ5IHRoaXMgZnVuY3Rpb24sCisgICAgICogdW5sZXNzIHRoZSBzY3JlZW4gaXMgcGh5c2ljYWxseSByb3RhdGVkLCBpbiB3aGljaCBjYXNlIHlvdSBjYW4gdXNlCisgICAgICoge0BsaW5rIGFuZHJvaWQudmlldy5EaXNwbGF5I2dldFJvdGF0aW9uKCkgRGlzcGxheS5nZXRSb3RhdGlvbigpfSB0bworICAgICAqIHJldHJpZXZlIHRoZSBjdXJyZW50IHJvdGF0aW9uIG9mIHRoZSBzY3JlZW4uIE5vdGUgdGhhdCBiZWNhdXNlIHRoZSB1c2VyCisgICAgICogaXMgZ2VuZXJhbGx5IGZyZWUgdG8gcm90YXRlIHRoZWlyIHNjcmVlbiwgeW91IG9mdGVuIHNob3VsZCBjb25zaWRlciB0aGUKKyAgICAgKiByb3RhdGlvbiBpbiBkZWNpZGluZyB0aGUgcGFyYW1ldGVycyB0byB1c2UgaGVyZS4KKyAgICAgKiA8L3A+CiAgICAgICoKLSAgICAgKiA8bGk+VXNpbmcgdGhlIGNhbWVyYSAoWSBheGlzIGFsb25nIHRoZSBjYW1lcmEncyBheGlzKSBmb3IgYW4gYXVnbWVudGVkIAotICAgICAqIHJlYWxpdHkgYXBwbGljYXRpb24gd2hlcmUgdGhlIHJvdGF0aW9uIGFuZ2xlcyBhcmUgbmVlZGVkOiA8L2xpPjxwPgorICAgICAqIDxwPgorICAgICAqIDx1PkV4YW1wbGVzOjwvdT4KKyAgICAgKiA8cD4KICAgICAgKgotICAgICAqIDxjb2RlPnJlbWFwQ29vcmRpbmF0ZVN5c3RlbShpblIsIEFYSVNfWCwgQVhJU19aLCBvdXRSKTs8L2NvZGU+PHA+CisgICAgICogPHVsPgorICAgICAqIDxsaT5Vc2luZyB0aGUgY2FtZXJhIChZIGF4aXMgYWxvbmcgdGhlIGNhbWVyYSdzIGF4aXMpIGZvciBhbiBhdWdtZW50ZWQKKyAgICAgKiByZWFsaXR5IGFwcGxpY2F0aW9uIHdoZXJlIHRoZSByb3RhdGlvbiBhbmdsZXMgYXJlIG5lZWRlZDo8L2xpPgorICAgICAqCisgICAgICogPHA+CisgICAgICogPHVsPgorICAgICAqIDxjb2RlPnJlbWFwQ29vcmRpbmF0ZVN5c3RlbShpblIsIEFYSVNfWCwgQVhJU19aLCBvdXRSKTs8L2NvZGU+CisgICAgICogPC91bD4KKyAgICAgKiA8L3A+CiAgICAgICoKICAgICAgKiA8bGk+VXNpbmcgdGhlIGRldmljZSBhcyBhIG1lY2hhbmljYWwgY29tcGFzcyB3aGVuIHJvdGF0aW9uIGlzCi0gICAgICoge0BsaW5rIGFuZHJvaWQudmlldy5TdXJmYWNlI1JPVEFUSU9OXzkwIFN1cmZhY2UuUk9UQVRJT05fOTB9OjwvbGk+PHA+CisgICAgICoge0BsaW5rIGFuZHJvaWQudmlldy5TdXJmYWNlI1JPVEFUSU9OXzkwIFN1cmZhY2UuUk9UQVRJT05fOTB9OjwvbGk+CiAgICAgICoKLSAgICAgKiA8Y29kZT5yZW1hcENvb3JkaW5hdGVTeXN0ZW0oaW5SLCBBWElTX1ksIEFYSVNfTUlOVVNfWCwgb3V0Uik7PC9jb2RlPjxwPgorICAgICAqIDxwPgorICAgICAqIDx1bD4KKyAgICAgKiA8Y29kZT5yZW1hcENvb3JkaW5hdGVTeXN0ZW0oaW5SLCBBWElTX1ksIEFYSVNfTUlOVVNfWCwgb3V0Uik7PC9jb2RlPgorICAgICAqIDwvdWw+CisgICAgICogPC9wPgogICAgICAqCi0gICAgICogQmV3YXJlIG9mIHRoZSBhYm92ZSBleGFtcGxlLiBUaGlzIGNhbGwgaXMgbmVlZGVkIG9ubHkgdG8gYWNjb3VudCBmb3IKLSAgICAgKiBhIHJvdGF0aW9uIGZyb20gaXRzIG5hdHVyYWwgb3JpZW50YXRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUKLSAgICAgKiByb3RhdGlvbiBhbmdsZXMgKHNlZSB7QGxpbmsgI2dldE9yaWVudGF0aW9ufSkuCi0gICAgICogSWYgdGhlIHJvdGF0aW9uIG1hdHJpeCBpcyBhbHNvIHVzZWQgZm9yIHJlbmRlcmluZywgaXQgbWF5IG5vdCBuZWVkIHRvIAotICAgICAqIGJlIHRyYW5zZm9ybWVkLCBmb3IgaW5zdGFuY2UgaWYgeW91ciB7QGxpbmsgYW5kcm9pZC5hcHAuQWN0aXZpdHkKLSAgICAgKiBBY3Rpdml0eX0gaXMgcnVubmluZyBpbiBsYW5kc2NhcGUgbW9kZS4KKyAgICAgKiBCZXdhcmUgb2YgdGhlIGFib3ZlIGV4YW1wbGUuIFRoaXMgY2FsbCBpcyBuZWVkZWQgb25seSB0byBhY2NvdW50IGZvciBhCisgICAgICogcm90YXRpb24gZnJvbSBpdHMgbmF0dXJhbCBvcmllbnRhdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSByb3RhdGlvbgorICAgICAqIGFuZ2xlcyAoc2VlIHtAbGluayAjZ2V0T3JpZW50YXRpb259KS4gSWYgdGhlIHJvdGF0aW9uIG1hdHJpeCBpcyBhbHNvIHVzZWQKKyAgICAgKiBmb3IgcmVuZGVyaW5nLCBpdCBtYXkgbm90IG5lZWQgdG8gYmUgdHJhbnNmb3JtZWQsIGZvciBpbnN0YW5jZSBpZiB5b3VyCisgICAgICoge0BsaW5rIGFuZHJvaWQuYXBwLkFjdGl2aXR5IEFjdGl2aXR5fSBpcyBydW5uaW5nIGluIGxhbmRzY2FwZSBtb2RlLgorICAgICAqIDwvdWw+CiAgICAgICoKLSAgICAgKiA8cD5TaW5jZSB0aGUgcmVzdWx0aW5nIGNvb3JkaW5hdGUgc3lzdGVtIGlzIG9ydGhvbm9ybWFsLCBvbmx5IHR3byBheGVzCi0gICAgICogbmVlZCB0byBiZSBzcGVjaWZpZWQuCisgICAgICogPHA+CisgICAgICogU2luY2UgdGhlIHJlc3VsdGluZyBjb29yZGluYXRlIHN5c3RlbSBpcyBvcnRob25vcm1hbCwgb25seSB0d28gYXhlcyBuZWVkCisgICAgICogdG8gYmUgc3BlY2lmaWVkLgogICAgICAqCi0gICAgICogQHBhcmFtIGluUiB0aGUgcm90YXRpb24gbWF0cml4IHRvIGJlIHRyYW5zZm9ybWVkLiBVc3VhbGx5IGl0IGlzIHRoZQotICAgICAqIG1hdHJpeCByZXR1cm5lZCBieSB7QGxpbmsgI2dldFJvdGF0aW9uTWF0cml4fS4KLSAgICAgKiBAcGFyYW0gWCBkZWZpbmVzIG9uIHdoaWNoIHdvcmxkIGF4aXMgYW5kIGRpcmVjdGlvbiB0aGUgWCBheGlzIG9mIHRoZQotICAgICAqICAgICAgICBkZXZpY2UgaXMgbWFwcGVkLgotICAgICAqIEBwYXJhbSBZIGRlZmluZXMgb24gd2hpY2ggd29ybGQgYXhpcyBhbmQgZGlyZWN0aW9uIHRoZSBZIGF4aXMgb2YgdGhlCi0gICAgICogICAgICAgIGRldmljZSBpcyBtYXBwZWQuCi0gICAgICogQHBhcmFtIG91dFIgdGhlIHRyYW5zZm9ybWVkIHJvdGF0aW9uIG1hdHJpeC4gaW5SIGFuZCBvdXRSIGNhbiBiZSB0aGUgc2FtZQorICAgICAqIEBwYXJhbSBpblIKKyAgICAgKiAgICAgICAgdGhlIHJvdGF0aW9uIG1hdHJpeCB0byBiZSB0cmFuc2Zvcm1lZC4gVXN1YWxseSBpdCBpcyB0aGUgbWF0cml4CisgICAgICogICAgICAgIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0Um90YXRpb25NYXRyaXh9LgorICAgICAqCisgICAgICogQHBhcmFtIFgKKyAgICAgKiAgICAgICAgZGVmaW5lcyBvbiB3aGljaCB3b3JsZCBheGlzIGFuZCBkaXJlY3Rpb24gdGhlIFggYXhpcyBvZiB0aGUgZGV2aWNlCisgICAgICogICAgICAgIGlzIG1hcHBlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBZCisgICAgICogICAgICAgIGRlZmluZXMgb24gd2hpY2ggd29ybGQgYXhpcyBhbmQgZGlyZWN0aW9uIHRoZSBZIGF4aXMgb2YgdGhlIGRldmljZQorICAgICAqICAgICAgICBpcyBtYXBwZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3V0UgorICAgICAqICAgICAgICB0aGUgdHJhbnNmb3JtZWQgcm90YXRpb24gbWF0cml4LiBpblIgYW5kIG91dFIgY2FuIGJlIHRoZSBzYW1lCiAgICAgICogICAgICAgIGFycmF5LCBidXQgaXQgaXMgbm90IHJlY29tbWVuZGVkIGZvciBwZXJmb3JtYW5jZSByZWFzb24uCi0gICAgICogQHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MuIGZhbHNlIGlmIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGFyZSBpbmNvcnJlY3QsIGZvcgotICAgICAqIGluc3RhbmNlIGlmIFggYW5kIFkgZGVmaW5lIHRoZSBzYW1lIGF4aXMuIE9yIGlmIGluUiBhbmQgb3V0UiBkb24ndCBoYXZlIAotICAgICAqIHRoZSBzYW1lIGxlbmd0aC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gb24gc3VjY2Vzcy4gPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIHRoZSBpbnB1dAorICAgICAqICAgICAgICAgcGFyYW1ldGVycyBhcmUgaW5jb3JyZWN0LCBmb3IgaW5zdGFuY2UgaWYgWCBhbmQgWSBkZWZpbmUgdGhlIHNhbWUKKyAgICAgKiAgICAgICAgIGF4aXMuIE9yIGlmIGluUiBhbmQgb3V0UiBkb24ndCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldFJvdGF0aW9uTWF0cml4KGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10pCiAgICAgICovCiAKICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVtYXBDb29yZGluYXRlU3lzdGVtKGZsb2F0W10gaW5SLCBpbnQgWCwgaW50IFksCkBAIC0xMzAxLDMxICsxNTE5LDQ1IEBACiAKICAgICAvKioKICAgICAgKiBDb21wdXRlcyB0aGUgZGV2aWNlJ3Mgb3JpZW50YXRpb24gYmFzZWQgb24gdGhlIHJvdGF0aW9uIG1hdHJpeC4KLSAgICAgKiA8cD4gV2hlbiBpdCByZXR1cm5zLCB0aGUgYXJyYXkgdmFsdWVzIGlzIGZpbGxlZCB3aXRoIHRoZSByZXN1bHQ6CisgICAgICogPHA+CisgICAgICogV2hlbiBpdCByZXR1cm5zLCB0aGUgYXJyYXkgdmFsdWVzIGlzIGZpbGxlZCB3aXRoIHRoZSByZXN1bHQ6CisgICAgICogPHVsPgogICAgICAqIDxsaT52YWx1ZXNbMF06IDxpPmF6aW11dGg8L2k+LCByb3RhdGlvbiBhcm91bmQgdGhlIFogYXhpcy48L2xpPgogICAgICAqIDxsaT52YWx1ZXNbMV06IDxpPnBpdGNoPC9pPiwgcm90YXRpb24gYXJvdW5kIHRoZSBYIGF4aXMuPC9saT4KICAgICAgKiA8bGk+dmFsdWVzWzJdOiA8aT5yb2xsPC9pPiwgcm90YXRpb24gYXJvdW5kIHRoZSBZIGF4aXMuPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIDxwPgorICAgICAqIDxjZW50ZXI+PGltZyBzcmM9Ii4uLy4uLy4uL2ltYWdlcy9heGlzX2RldmljZS5wbmciCisgICAgICogYWx0PSJTZW5zb3JzIGNvb3JkaW5hdGUtc3lzdGVtIGRpYWdyYW0uIiBib3JkZXI9IjAiIC8+PC9jZW50ZXI+CisgICAgICogPC9wPgogICAgICAqIDxwPgogICAgICAqIEFsbCB0aHJlZSBhbmdsZXMgYWJvdmUgYXJlIGluIDxiPnJhZGlhbnM8L2I+IGFuZCA8Yj5wb3NpdGl2ZTwvYj4gaW4gdGhlCiAgICAgICogPGI+Y291bnRlci1jbG9ja3dpc2U8L2I+IGRpcmVjdGlvbi4KLSAgICAgKgotICAgICAqIEBwYXJhbSBSIHJvdGF0aW9uIG1hdHJpeCBzZWUge0BsaW5rICNnZXRSb3RhdGlvbk1hdHJpeH0uCi0gICAgICogQHBhcmFtIHZhbHVlcyBhbiBhcnJheSBvZiAzIGZsb2F0cyB0byBob2xkIHRoZSByZXN1bHQuCisgICAgICogCisgICAgICogQHBhcmFtIFIKKyAgICAgKiAgICAgICAgcm90YXRpb24gbWF0cml4IHNlZSB7QGxpbmsgI2dldFJvdGF0aW9uTWF0cml4fS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gdmFsdWVzCisgICAgICogICAgICAgIGFuIGFycmF5IG9mIDMgZmxvYXRzIHRvIGhvbGQgdGhlIHJlc3VsdC4KKyAgICAgKiAKICAgICAgKiBAcmV0dXJuIFRoZSBhcnJheSB2YWx1ZXMgcGFzc2VkIGFzIGFyZ3VtZW50LgorICAgICAqIAorICAgICAqIEBzZWUgI2dldFJvdGF0aW9uTWF0cml4KGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10pCisgICAgICogQHNlZSBHZW9tYWduZXRpY0ZpZWxkCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmbG9hdFtdIGdldE9yaWVudGF0aW9uKGZsb2F0W10gUiwgZmxvYXQgdmFsdWVzW10pIHsKKyAgIHB1YmxpYyBzdGF0aWMgZmxvYXRbXSBnZXRPcmllbnRhdGlvbihmbG9hdFtdIFIsIGZsb2F0IHZhbHVlc1tdKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIDR4NCAobGVuZ3RoPTE2KSBjYXNlOgogICAgICAgICAgKiAgIC8gIFJbIDBdICAgUlsgMV0gICBSWyAyXSAgIDAgIFwKICAgICAgICAgICogICB8ICBSWyA0XSAgIFJbIDVdICAgUlsgNl0gICAwICB8CiAgICAgICAgICAqICAgfCAgUlsgOF0gICBSWyA5XSAgIFJbMTBdICAgMCAgfAogICAgICAgICAgKiAgIFwgICAgICAwICAgICAgIDAgICAgICAgMCAgIDEgIC8KLSAgICAgICAgICogICAKKyAgICAgICAgICoKICAgICAgICAgICogM3gzIChsZW5ndGg9OSkgY2FzZToKICAgICAgICAgICogICAvICBSWyAwXSAgIFJbIDFdICAgUlsgMl0gIFwKICAgICAgICAgICogICB8ICBSWyAzXSAgIFJbIDRdICAgUlsgNV0gIHwKICAgICAgICAgICogICBcICBSWyA2XSAgIFJbIDddICAgUlsgOF0gIC8KLSAgICAgICAgICogCisgICAgICAgICAqCiAgICAgICAgICAqLwogICAgICAgICBpZiAoUi5sZW5ndGggPT0gOSkgewogICAgICAgICAgICAgdmFsdWVzWzBdID0gKGZsb2F0KU1hdGguYXRhbjIoUlsxXSwgUls0XSk7CkBAIC0xNDg3LDcgKzE3MTksNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgY2xhc3MgTG1zRmlsdGVyIHsKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFTlNPUlNfUkFURV9NUyA9IDIwOwogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlQgPSAxMjsKQEAgLTE1NTUsNyArMTc4Nyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAKKwogICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZUNsYXNzSW5pdCgpOwogCiAgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGludCBzZW5zb3JzX21vZHVsZV9pbml0KCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9Vc2IuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL1VzYi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjcxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9Vc2IuamF2YQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworCitwYWNrYWdlIGFuZHJvaWQuaGFyZHdhcmU7CisKKy8qKgorICogQ2xhc3MgZm9yIGFjY2Vzc2luZyBVU0Igc3RhdGUgaW5mb3JtYXRpb24uCisgKiBAaGlkZQorICovCitwdWJsaWMgY2xhc3MgVXNiIHsKKyAgIC8qKgorICAgICAqIEJyb2FkY2FzdCBBY3Rpb246ICBBIGJyb2FkY2FzdCBmb3IgVVNCIGNvbm5lY3RlZCBldmVudHMuCisgICAgICoKKyAgICAgKiBUaGUgZXh0cmFzIGJ1bmRsZSB3aWxsIG5hbWUvdmFsdWUgcGFpcnMgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24KKyAgICAgKiBhbmQgYSB2YWx1ZSBvZiBlaXRoZXIge0BsaW5rICNVU0JfRlVOQ1RJT05fRU5BQkxFRH0gb3Ige0BsaW5rICNVU0JfRlVOQ1RJT05fRElTQUJMRUR9LgorICAgICAqIFBvc3NpYmxlIFVTQiBmdW5jdGlvbiBuYW1lcyBpbmNsdWRlIHtAbGluayAjVVNCX0ZVTkNUSU9OX01BU1NfU1RPUkFHRX0sCisgICAgICoge0BsaW5rICNVU0JfRlVOQ1RJT05fQURCfSwge0BsaW5rICNVU0JfRlVOQ1RJT05fUk5ESVN9IGFuZCB7QGxpbmsgI1VTQl9GVU5DVElPTl9NVFB9LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElPTl9VU0JfQ09OTkVDVEVEID0KKyAgICAgICAgICAgICJhbmRyb2lkLmhhcmR3YXJlLmFjdGlvbi5VU0JfQ09OTkVDVEVEIjsKKworICAgLyoqCisgICAgICogQnJvYWRjYXN0IEFjdGlvbjogIEEgYnJvYWRjYXN0IGZvciBVU0IgZGlzY29ubmVjdGVkIGV2ZW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fVVNCX0RJU0NPTk5FQ1RFRCA9CisgICAgICAgICAgICAiYW5kcm9pZC5oYXJkd2FyZS5hY3Rpb24uVVNCX0RJU0NPTk5FQ1RFRCI7CisKKyAgIC8qKgorICAgICAqIEJyb2FkY2FzdCBBY3Rpb246ICBBIHN0aWNreSBicm9hZGNhc3QgZm9yIFVTQiBzdGF0ZSBjaGFuZ2UgZXZlbnRzLgorICAgICAqCisgICAgICogVGhpcyBpcyBhIHN0aWNreSBicm9hZGNhc3QgZm9yIGNsaWVudHMgdGhhdCBhcmUgaW50ZXJlc3RlZCBpbiBib3RoIFVTQiBjb25uZWN0IGFuZAorICAgICAqIGRpc2Nvbm5lY3QgZXZlbnRzLiAgSWYgeW91IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIG9uZSBvciB0aGUgb3RoZXIsIHlvdSBjYW4gdXNlCisgICAgICoge0BsaW5rICNBQ1RJT05fVVNCX0NPTk5FQ1RFRH0gb3Ige0BsaW5rICNBQ1RJT05fVVNCX0RJU0NPTk5FQ1RFRH0gdG8gYXZvaWQgcmVjZWl2aW5nCisgICAgICogdW5uZWNlc3NhcnkgYnJvYWRjYXN0cy4gIFRoZSBib29sZWFuIHtAbGluayAjVVNCX0NPTk5FQ1RFRH0gZXh0cmEgaW5kaWNhdGVzIHdoZXRoZXIKKyAgICAgKiBVU0IgaXMgY29ubmVjdGVkIG9yIGRpc2Nvbm5lY3RlZC4KKyAgICAgKiBUaGUgZXh0cmFzIGJ1bmRsZSB3aWxsIGFsc28gY29udGFpbiBuYW1lL3ZhbHVlIHBhaXJzIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uCisgICAgICogYW5kIGEgdmFsdWUgb2YgZWl0aGVyIHtAbGluayAjVVNCX0ZVTkNUSU9OX0VOQUJMRUR9IG9yIHtAbGluayAjVVNCX0ZVTkNUSU9OX0RJU0FCTEVEfS4KKyAgICAgKiBQb3NzaWJsZSBVU0IgZnVuY3Rpb24gbmFtZXMgaW5jbHVkZSB7QGxpbmsgI1VTQl9GVU5DVElPTl9NQVNTX1NUT1JBR0V9LAorICAgICAqIHtAbGluayAjVVNCX0ZVTkNUSU9OX0FEQn0sIHtAbGluayAjVVNCX0ZVTkNUSU9OX1JORElTfSBhbmQge0BsaW5rICNVU0JfRlVOQ1RJT05fTVRQfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fVVNCX1NUQVRFID0KKyAgICAgICAgICAgICJhbmRyb2lkLmhhcmR3YXJlLmFjdGlvbi5VU0JfU1RBVEUiOworCisgICAgLyoqCisgICAgICogQm9vbGVhbiBleHRyYSBpbmRpY2F0aW5nIHdoZXRoZXIgVVNCIGlzIGNvbm5lY3RlZCBvciBkaXNjb25uZWN0ZWQuCisgICAgICogVXNlZCBpbiBleHRyYXMgZm9yIHRoZSB7QGxpbmsgI0FDVElPTl9VU0JfU1RBVEV9IGJyb2FkY2FzdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfQ09OTkVDVEVEID0gImNvbm5lY3RlZCI7CisKKyAgICAvKioKKyAgICAgKiBOYW1lIG9mIHRoZSBVU0IgbWFzcyBzdG9yYWdlIFVTQiBmdW5jdGlvbi4KKyAgICAgKiBVc2VkIGluIGV4dHJhcyBmb3IgdGhlIHtAbGluayAjQUNUSU9OX1VTQl9DT05ORUNURUR9IGJyb2FkY2FzdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQl9GVU5DVElPTl9NQVNTX1NUT1JBR0UgPSAibWFzc19zdG9yYWdlIjsKKworICAgIC8qKgorICAgICAqIE5hbWUgb2YgdGhlIGFkYiBVU0IgZnVuY3Rpb24uCisgICAgICogVXNlZCBpbiBleHRyYXMgZm9yIHRoZSB7QGxpbmsgI0FDVElPTl9VU0JfQ09OTkVDVEVEfSBicm9hZGNhc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfRlVOQ1RJT05fQURCID0gImFkYiI7CisKKyAgICAvKioKKyAgICAgKiBOYW1lIG9mIHRoZSBSTkRJUyBldGhlcm5ldCBVU0IgZnVuY3Rpb24uCisgICAgICogVXNlZCBpbiBleHRyYXMgZm9yIHRoZSB7QGxpbmsgI0FDVElPTl9VU0JfQ09OTkVDVEVEfSBicm9hZGNhc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfRlVOQ1RJT05fUk5ESVMgPSAicm5kaXMiOworCisgICAgLyoqCisgICAgICogTmFtZSBvZiB0aGUgTVRQIFVTQiBmdW5jdGlvbi4KKyAgICAgKiBVc2VkIGluIGV4dHJhcyBmb3IgdGhlIHtAbGluayAjQUNUSU9OX1VTQl9DT05ORUNURUR9IGJyb2FkY2FzdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQl9GVU5DVElPTl9NVFAgPSAibXRwIjsKKworICAgIC8qKgorICAgICAqIFZhbHVlIGluZGljYXRpbmcgdGhhdCBhIFVTQiBmdW5jdGlvbiBpcyBlbmFibGVkLgorICAgICAqIFVzZWQgaW4gZXh0cmFzIGZvciB0aGUge0BsaW5rICNBQ1RJT05fVVNCX0NPTk5FQ1RFRH0gYnJvYWRjYXN0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVNCX0ZVTkNUSU9OX0VOQUJMRUQgPSAiZW5hYmxlZCI7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBpbmRpY2F0aW5nIHRoYXQgYSBVU0IgZnVuY3Rpb24gaXMgZGlzYWJsZWQuCisgICAgICogVXNlZCBpbiBleHRyYXMgZm9yIHRoZSB7QGxpbmsgI0FDVElPTl9VU0JfQ09OTkVDVEVEfSBicm9hZGNhc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfRlVOQ1RJT05fRElTQUJMRUQgPSAiZGlzYWJsZWQiOworfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lJbnB1dE1ldGhvZFNlc3Npb25XcmFwcGVyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSUlucHV0TWV0aG9kU2Vzc2lvbldyYXBwZXIuamF2YQppbmRleCA4MGU5ODY1Li40NGYzMGY3IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSUlucHV0TWV0aG9kU2Vzc2lvbldyYXBwZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSUlucHV0TWV0aG9kU2Vzc2lvbldyYXBwZXIuamF2YQpAQCAtNDcsOSArNDcsMTAgQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRE9fVVBEQVRFX0NVUlNPUiA9IDk1OwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET19BUFBfUFJJVkFURV9DT01NQU5EID0gMTAwOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET19UT0dHTEVfU09GVF9JTlBVVCA9IDEwNTsKLSAgIAotICAgIGZpbmFsIEhhbmRsZXJDYWxsZXIgbUNhbGxlcjsKLSAgICBmaW5hbCBJbnB1dE1ldGhvZFNlc3Npb24gbUlucHV0TWV0aG9kU2Vzc2lvbjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRE9fRklOSVNIX1NFU1NJT04gPSAxMTA7CisKKyAgICBIYW5kbGVyQ2FsbGVyIG1DYWxsZXI7CisgICAgSW5wdXRNZXRob2RTZXNzaW9uIG1JbnB1dE1ldGhvZFNlc3Npb247CiAgICAgCiAgICAgLy8gTk9URTogd2Ugc2hvdWxkIGhhdmUgYSBjYWNoZSBvZiB0aGVzZS4KICAgICBzdGF0aWMgY2xhc3MgSW5wdXRNZXRob2RFdmVudENhbGxiYWNrV3JhcHBlciBpbXBsZW1lbnRzIElucHV0TWV0aG9kU2Vzc2lvbi5FdmVudENhbGxiYWNrIHsKQEAgLTEyNyw2ICsxMjgsMTAgQEAKICAgICAgICAgICAgICAgICBtSW5wdXRNZXRob2RTZXNzaW9uLnRvZ2dsZVNvZnRJbnB1dChtc2cuYXJnMSwgbXNnLmFyZzIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgRE9fRklOSVNIX1NFU1NJT046IHsKKyAgICAgICAgICAgICAgICBtSW5wdXRNZXRob2RTZXNzaW9uID0gbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgTG9nLncoVEFHLCAiVW5oYW5kbGVkIG1lc3NhZ2UgY29kZTogIiArIG1zZy53aGF0KTsKICAgICB9CkBAIC0xNzQsNCArMTc5LDggQEAKICAgICBwdWJsaWMgdm9pZCB0b2dnbGVTb2Z0SW5wdXQoaW50IHNob3dGbGFncywgaW50IGhpZGVGbGFncykgewogICAgICAgICBtQ2FsbGVyLmV4ZWN1dGVPclNlbmRNZXNzYWdlKG1DYWxsZXIub2J0YWluTWVzc2FnZUlJKERPX1RPR0dMRV9TT0ZUX0lOUFVULCBzaG93RmxhZ3MsIGhpZGVGbGFncykpOwogICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGZpbmlzaFNlc3Npb24oKSB7CisgICAgICAgIG1DYWxsZXIuZXhlY3V0ZU9yU2VuZE1lc3NhZ2UobUNhbGxlci5vYnRhaW5NZXNzYWdlKERPX0ZJTklTSF9TRVNTSU9OKSk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lJbnB1dE1ldGhvZFdyYXBwZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2lucHV0bWV0aG9kc2VydmljZS9JSW5wdXRNZXRob2RXcmFwcGVyLmphdmEKaW5kZXggYmZhODJlZS4uMzVmZDQ2ZiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lJbnB1dE1ldGhvZFdyYXBwZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSUlucHV0TWV0aG9kV3JhcHBlci5qYXZhCkBAIC0zOSw2ICszOSw3IEBACiAKIGltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOwogaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0OwogCkBAIC02NCw5ICs2NSw5IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPX1NIT1dfU09GVF9JTlBVVCA9IDYwOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET19ISURFX1NPRlRfSU5QVVQgPSA3MDsKICAgIAotICAgIGZpbmFsIEFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlIG1UYXJnZXQ7CisgICAgZmluYWwgV2Vha1JlZmVyZW5jZTxBYnN0cmFjdElucHV0TWV0aG9kU2VydmljZT4gbVRhcmdldDsKICAgICBmaW5hbCBIYW5kbGVyQ2FsbGVyIG1DYWxsZXI7Ci0gICAgZmluYWwgSW5wdXRNZXRob2QgbUlucHV0TWV0aG9kOworICAgIGZpbmFsIFdlYWtSZWZlcmVuY2U8SW5wdXRNZXRob2Q+IG1JbnB1dE1ldGhvZDsKICAgICAKICAgICBzdGF0aWMgY2xhc3MgTm90aWZpZXIgewogICAgICAgICBib29sZWFuIG5vdGlmaWVkOwpAQCAtOTYsMjEgKzk3LDMyIEBACiAgICAgCiAgICAgcHVibGljIElJbnB1dE1ldGhvZFdyYXBwZXIoQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UgY29udGV4dCwKICAgICAgICAgICAgIElucHV0TWV0aG9kIGlucHV0TWV0aG9kKSB7Ci0gICAgICAgIG1UYXJnZXQgPSBjb250ZXh0OwotICAgICAgICBtQ2FsbGVyID0gbmV3IEhhbmRsZXJDYWxsZXIoY29udGV4dCwgdGhpcyk7Ci0gICAgICAgIG1JbnB1dE1ldGhvZCA9IGlucHV0TWV0aG9kOworICAgICAgICBtVGFyZ2V0ID0gbmV3IFdlYWtSZWZlcmVuY2U8QWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2U+KGNvbnRleHQpOworICAgICAgICBtQ2FsbGVyID0gbmV3IEhhbmRsZXJDYWxsZXIoY29udGV4dC5nZXRBcHBsaWNhdGlvbkNvbnRleHQoKSwgdGhpcyk7CisgICAgICAgIG1JbnB1dE1ldGhvZCA9IG5ldyBXZWFrUmVmZXJlbmNlPElucHV0TWV0aG9kPihpbnB1dE1ldGhvZCk7CiAgICAgfQogCiAgICAgcHVibGljIElucHV0TWV0aG9kIGdldEludGVybmFsSW5wdXRNZXRob2QoKSB7Ci0gICAgICAgIHJldHVybiBtSW5wdXRNZXRob2Q7CisgICAgICAgIHJldHVybiBtSW5wdXRNZXRob2QuZ2V0KCk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgZXhlY3V0ZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgSW5wdXRNZXRob2QgaW5wdXRNZXRob2QgPSBtSW5wdXRNZXRob2QuZ2V0KCk7CisgICAgICAgIC8vIE5lZWQgYSB2YWxpZCByZWZlcmVuY2UgdG8gdGhlIGlucHV0TWV0aG9kIGZvciBldmVyeXRoaW5nIGV4Y2VwdCBhIGR1bXAuCisgICAgICAgIGlmIChpbnB1dE1ldGhvZCA9PSBudWxsICYmIG1zZy53aGF0ICE9IERPX0RVTVApIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIklucHV0IG1ldGhvZCByZWZlcmVuY2Ugd2FzIG51bGwsIGlnbm9yaW5nIG1lc3NhZ2U6ICIgKyBtc2cud2hhdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKG1zZy53aGF0KSB7CiAgICAgICAgICAgICBjYXNlIERPX0RVTVA6IHsKKyAgICAgICAgICAgICAgICBBYnN0cmFjdElucHV0TWV0aG9kU2VydmljZSB0YXJnZXQgPSBtVGFyZ2V0LmdldCgpOworICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEhhbmRsZXJDYWxsZXIuU29tZUFyZ3MgYXJncyA9IChIYW5kbGVyQ2FsbGVyLlNvbWVBcmdzKW1zZy5vYmo7CiAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbVRhcmdldC5kdW1wKChGaWxlRGVzY3JpcHRvcilhcmdzLmFyZzEsCisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5kdW1wKChGaWxlRGVzY3JpcHRvcilhcmdzLmFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaW50V3JpdGVyKWFyZ3MuYXJnMiwgKFN0cmluZ1tdKWFyZ3MuYXJnMyk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICgoUHJpbnRXcml0ZXIpYXJncy5hcmcyKS5wcmludGxuKCJFeGNlcHRpb246ICIgKyBlKTsKQEAgLTEyMiwyMiArMTM0LDIyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgRE9fQVRUQUNIX1RPS0VOOiB7Ci0gICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kLmF0dGFjaFRva2VuKChJQmluZGVyKW1zZy5vYmopOworICAgICAgICAgICAgICAgIGlucHV0TWV0aG9kLmF0dGFjaFRva2VuKChJQmluZGVyKW1zZy5vYmopOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRE9fU0VUX0lOUFVUX0NPTlRFWFQ6IHsKLSAgICAgICAgICAgICAgICBtSW5wdXRNZXRob2QuYmluZElucHV0KChJbnB1dEJpbmRpbmcpbXNnLm9iaik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2QuYmluZElucHV0KChJbnB1dEJpbmRpbmcpbXNnLm9iaik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBET19VTlNFVF9JTlBVVF9DT05URVhUOgotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC51bmJpbmRJbnB1dCgpOworICAgICAgICAgICAgICAgIGlucHV0TWV0aG9kLnVuYmluZElucHV0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2FzZSBET19TVEFSVF9JTlBVVDogewogICAgICAgICAgICAgICAgIEhhbmRsZXJDYWxsZXIuU29tZUFyZ3MgYXJncyA9IChIYW5kbGVyQ2FsbGVyLlNvbWVBcmdzKW1zZy5vYmo7CiAgICAgICAgICAgICAgICAgSUlucHV0Q29udGV4dCBpbnB1dENvbnRleHQgPSAoSUlucHV0Q29udGV4dClhcmdzLmFyZzE7CiAgICAgICAgICAgICAgICAgSW5wdXRDb25uZWN0aW9uIGljID0gaW5wdXRDb250ZXh0ICE9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IElucHV0Q29ubmVjdGlvbldyYXBwZXIoaW5wdXRDb250ZXh0KSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kLnN0YXJ0SW5wdXQoaWMsIChFZGl0b3JJbmZvKWFyZ3MuYXJnMik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2Quc3RhcnRJbnB1dChpYywgKEVkaXRvckluZm8pYXJncy5hcmcyKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIERPX1JFU1RBUlRfSU5QVVQ6IHsKQEAgLTE0NSwzMyArMTU3LDM3IEBACiAgICAgICAgICAgICAgICAgSUlucHV0Q29udGV4dCBpbnB1dENvbnRleHQgPSAoSUlucHV0Q29udGV4dClhcmdzLmFyZzE7CiAgICAgICAgICAgICAgICAgSW5wdXRDb25uZWN0aW9uIGljID0gaW5wdXRDb250ZXh0ICE9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IElucHV0Q29ubmVjdGlvbldyYXBwZXIoaW5wdXRDb250ZXh0KSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kLnJlc3RhcnRJbnB1dChpYywgKEVkaXRvckluZm8pYXJncy5hcmcyKTsKKyAgICAgICAgICAgICAgICBpbnB1dE1ldGhvZC5yZXN0YXJ0SW5wdXQoaWMsIChFZGl0b3JJbmZvKWFyZ3MuYXJnMik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBET19DUkVBVEVfU0VTU0lPTjogewotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC5jcmVhdGVTZXNzaW9uKG5ldyBJbnB1dE1ldGhvZFNlc3Npb25DYWxsYmFja1dyYXBwZXIoCisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2QuY3JlYXRlU2Vzc2lvbihuZXcgSW5wdXRNZXRob2RTZXNzaW9uQ2FsbGJhY2tXcmFwcGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxlci5tQ29udGV4dCwgKElJbnB1dE1ldGhvZENhbGxiYWNrKW1zZy5vYmopKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIERPX1NFVF9TRVNTSU9OX0VOQUJMRUQ6Ci0gICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kLnNldFNlc3Npb25FbmFibGVkKChJbnB1dE1ldGhvZFNlc3Npb24pbXNnLm9iaiwKKyAgICAgICAgICAgICAgICBpbnB1dE1ldGhvZC5zZXRTZXNzaW9uRW5hYmxlZCgoSW5wdXRNZXRob2RTZXNzaW9uKW1zZy5vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICBtc2cuYXJnMSAhPSAwKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIERPX1JFVk9LRV9TRVNTSU9OOgotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC5yZXZva2VTZXNzaW9uKChJbnB1dE1ldGhvZFNlc3Npb24pbXNnLm9iaik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2QucmV2b2tlU2Vzc2lvbigoSW5wdXRNZXRob2RTZXNzaW9uKW1zZy5vYmopOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNhc2UgRE9fU0hPV19TT0ZUX0lOUFVUOgotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC5zaG93U29mdElucHV0KG1zZy5hcmcxLCAoUmVzdWx0UmVjZWl2ZXIpbXNnLm9iaik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2Quc2hvd1NvZnRJbnB1dChtc2cuYXJnMSwgKFJlc3VsdFJlY2VpdmVyKW1zZy5vYmopOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNhc2UgRE9fSElERV9TT0ZUX0lOUFVUOgotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC5oaWRlU29mdElucHV0KG1zZy5hcmcxLCAoUmVzdWx0UmVjZWl2ZXIpbXNnLm9iaik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2QuaGlkZVNvZnRJbnB1dChtc2cuYXJnMSwgKFJlc3VsdFJlY2VpdmVyKW1zZy5vYmopOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBMb2cudyhUQUcsICJVbmhhbmRsZWQgbWVzc2FnZSBjb2RlOiAiICsgbXNnLndoYXQpOwogICAgIH0KICAgICAKICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZHVtcChGaWxlRGVzY3JpcHRvciBmZCwgUHJpbnRXcml0ZXIgZm91dCwgU3RyaW5nW10gYXJncykgewotICAgICAgICBpZiAobVRhcmdldC5jaGVja0NhbGxpbmdPclNlbGZQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5EVU1QKQorICAgICAgICBBYnN0cmFjdElucHV0TWV0aG9kU2VydmljZSB0YXJnZXQgPSBtVGFyZ2V0LmdldCgpOworICAgICAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodGFyZ2V0LmNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkRVTVApCiAgICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvdXQucHJpbnRsbigiUGVybWlzc2lvbiBEZW5pYWw6IGNhbid0IGR1bXAgSW5wdXRNZXRob2RNYW5hZ2VyIGZyb20gZnJvbSBwaWQ9IgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lucHV0TWV0aG9kU2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lucHV0TWV0aG9kU2VydmljZS5qYXZhCmluZGV4IDhjOGQzZTUuLjFhMjYxZDMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2lucHV0bWV0aG9kc2VydmljZS9JbnB1dE1ldGhvZFNlcnZpY2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSW5wdXRNZXRob2RTZXJ2aWNlLmphdmEKQEAgLTE5ODgsMTUgKzE5ODgsMTkgQEAKICAgICAgICAgICAgICAgICBlaS5pbnB1dFR5cGUgIT0gSW5wdXRUeXBlLlRZUEVfTlVMTCk7CiAgICAgICAgIGlmIChoYXNBY3Rpb24pIHsKICAgICAgICAgICAgIG1FeHRyYWN0QWNjZXNzb3JpZXMuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgaWYgKGVpLmFjdGlvbkxhYmVsICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtRXh0cmFjdEFjdGlvbi5zZXRUZXh0KGVpLmFjdGlvbkxhYmVsKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0VGV4dChnZXRUZXh0Rm9ySW1lQWN0aW9uKGVpLmltZU9wdGlvbnMpKTsKKyAgICAgICAgICAgIGlmIChtRXh0cmFjdEFjdGlvbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKGVpLmFjdGlvbkxhYmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0VGV4dChlaS5hY3Rpb25MYWJlbCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0VGV4dChnZXRUZXh0Rm9ySW1lQWN0aW9uKGVpLmltZU9wdGlvbnMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0T25DbGlja0xpc3RlbmVyKG1BY3Rpb25DbGlja0xpc3RlbmVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1FeHRyYWN0QWN0aW9uLnNldE9uQ2xpY2tMaXN0ZW5lcihtQWN0aW9uQ2xpY2tMaXN0ZW5lcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtRXh0cmFjdEFjY2Vzc29yaWVzLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgICAgIG1FeHRyYWN0QWN0aW9uLnNldE9uQ2xpY2tMaXN0ZW5lcihudWxsKTsKKyAgICAgICAgICAgIGlmIChtRXh0cmFjdEFjdGlvbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0T25DbGlja0xpc3RlbmVyKG51bGwpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvbmV0L01vYmlsZURhdGFTdGF0ZVRyYWNrZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL25ldC9Nb2JpbGVEYXRhU3RhdGVUcmFja2VyLmphdmEKaW5kZXggOThmMzJiMy4uMjE0NTEwZCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvbmV0L01vYmlsZURhdGFTdGF0ZVRyYWNrZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9uZXQvTW9iaWxlRGF0YVN0YXRlVHJhY2tlci5qYXZhCkBAIC0zMTAsNiArMzEwLDkgQEAKICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9FVkRPX0E6CiAgICAgICAgICAgICBuZXR3b3JrVHlwZVN0ciA9ICJldmRvIjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0VWRE9fQjoKKyAgICAgICAgICAgIG5ldHdvcmtUeXBlU3RyID0gImV2ZG8iOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICJuZXQudGNwLmJ1ZmZlcnNpemUuIiArIG5ldHdvcmtUeXBlU3RyOwogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL29zL0JhdHRlcnlTdGF0cy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvQmF0dGVyeVN0YXRzLmphdmEKaW5kZXggZDExNGJmZi4uZTNmM2I4NyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvQmF0dGVyeVN0YXRzLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvQmF0dGVyeVN0YXRzLmphdmEKQEAgLTUxLDU3ICs1MSw0MyBAQAogICAgIAogICAgIC8qKgogICAgICAqIEEgY29uc3RhbnQgaW5kaWNhdGluZyBhIHNlbnNvciB0aW1lci4KLSAgICAgKiAKLSAgICAgKiB7QGhpZGV9CiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SID0gMzsKICAgICAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYSBhIHdpZmkgdHVybiBvbiB0aW1lcgotICAgICAqCi0gICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdJRklfVFVSTkVEX09OID0gNDsKICAgICAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYSBmdWxsIHdpZmkgbG9jayB0aW1lcgotICAgICAqCi0gICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZVTExfV0lGSV9MT0NLID0gNTsKICAgICAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYSBzY2FuIHdpZmkgbG9jayB0aW1lcgotICAgICAqCi0gICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDQU5fV0lGSV9MT0NLID0gNjsKIAogICAgICAvKioKICAgICAgICogQSBjb25zdGFudCBpbmRpY2F0aW5nIGEgd2lmaSBtdWx0aWNhc3QgdGltZXIKLSAgICAgICoKLSAgICAgICoge0BoaWRlfQogICAgICAgKi8KICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgV0lGSV9NVUxUSUNBU1RfRU5BQkxFRCA9IDc7CiAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYW4gYXVkaW8gdHVybiBvbiB0aW1lcgotICAgICAqCi0gICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFVRElPX1RVUk5FRF9PTiA9IDc7CiAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYSB2aWRlbyB0dXJuIG9uIHRpbWVyCi0gICAgICoKLSAgICAgKiB7QGhpZGV9CiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVklERU9fVFVSTkVEX09OID0gODsKIAogICAgIC8qKgogICAgICAqIEluY2x1ZGUgYWxsIG9mIHRoZSBkYXRhIGluIHRoZSBzdGF0cywgaW5jbHVkaW5nIHByZXZpb3VzbHkgc2F2ZWQgZGF0YS4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUU19UT1RBTCA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFNfU0lOQ0VfQ0hBUkdFRCA9IDA7CiAKICAgICAvKioKICAgICAgKiBJbmNsdWRlIG9ubHkgdGhlIGxhc3QgcnVuIGluIHRoZSBzdGF0cy4KQEAgLTExNiw3ICsxMDIsNyBAQAogICAgIC8qKgogICAgICAqIEluY2x1ZGUgb25seSB0aGUgcnVuIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRldmljZSB3YXMgdW5wbHVnZ2VkIGluIHRoZSBzdGF0cy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUU19VTlBMVUdHRUQgPSAzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRTX1NJTkNFX1VOUExVR0dFRCA9IDM7CiAKICAgICAvLyBOT1RFOiBVcGRhdGUgdGhpcyBsaXN0IGlmIHlvdSBhZGQvY2hhbmdlIGFueSBzdGF0cyBhYm92ZS4KICAgICAvLyBUaGVzZSBjaGFyYWN0ZXJzIGFyZSBzdXBwb3NlZCB0byByZXByZXNlbnQgInRvdGFsIiwgImxhc3QiLCAiY3VycmVudCIsIApAQCAtMzkxLDYgKzM3NywxMjMgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHB1YmxpYyBmaW5hbCBjbGFzcyBIaXN0b3J5SXRlbSBpbXBsZW1lbnRzIFBhcmNlbGFibGUgeworICAgICAgICBwdWJsaWMgSGlzdG9yeUl0ZW0gbmV4dDsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBsb25nIHRpbWU7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgQ01EX1VQREFURSA9IDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBDTURfU1RBUlQgPSAxOworICAgICAgICAKKyAgICAgICAgcHVibGljIGJ5dGUgY21kOworICAgICAgICAKKyAgICAgICAgcHVibGljIGJ5dGUgYmF0dGVyeUxldmVsOworICAgICAgICBwdWJsaWMgYnl0ZSBiYXR0ZXJ5U3RhdHVzOworICAgICAgICBwdWJsaWMgYnl0ZSBiYXR0ZXJ5SGVhbHRoOworICAgICAgICBwdWJsaWMgYnl0ZSBiYXR0ZXJ5UGx1Z1R5cGU7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgY2hhciBiYXR0ZXJ5VGVtcGVyYXR1cmU7CisgICAgICAgIHB1YmxpYyBjaGFyIGJhdHRlcnlWb2x0YWdlOworICAgICAgICAKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfQlJJR0hUTkVTU19NQVNLID0gMHgwMDAwMDBmOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9CUklHSFRORVNTX1NISUZUID0gMDsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfU0lHTkFMX1NUUkVOR1RIX01BU0sgPSAweDAwMDAwZjA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1NJR05BTF9TVFJFTkdUSF9TSElGVCA9IDQ7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1BIT05FX1NUQVRFX01BU0sgPSAweDAwMDBmMDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1BIT05FX1NUQVRFX1NISUZUID0gODsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfREFUQV9DT05ORUNUSU9OX01BU0sgPSAweDAwMGYwMDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX0RBVEFfQ09OTkVDVElPTl9TSElGVCA9IDEyOworICAgICAgICAKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfQkFUVEVSWV9QTFVHR0VEX0ZMQUcgPSAxPDwzMDsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfU0NSRUVOX09OX0ZMQUcgPSAxPDwyOTsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfR1BTX09OX0ZMQUcgPSAxPDwyODsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfUEhPTkVfT05fRkxBRyA9IDE8PDI3OworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9QSE9ORV9TQ0FOTklOR19GTEFHID0gMTw8MjY7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1dJRklfT05fRkxBRyA9IDE8PDI1OworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9XSUZJX1JVTk5JTkdfRkxBRyA9IDE8PDI0OworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9XSUZJX0ZVTExfTE9DS19GTEFHID0gMTw8MjM7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1dJRklfU0NBTl9MT0NLX0ZMQUcgPSAxPDwyMjsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfV0lGSV9NVUxUSUNBU1RfT05fRkxBRyA9IDE8PDIxOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9CTFVFVE9PVEhfT05fRkxBRyA9IDE8PDIwOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9BVURJT19PTl9GTEFHID0gMTw8MTk7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1ZJREVPX09OX0ZMQUcgPSAxPDwxODsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBpbnQgc3RhdGVzOworCisgICAgICAgIHB1YmxpYyBIaXN0b3J5SXRlbSgpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIEhpc3RvcnlJdGVtKGxvbmcgdGltZSwgUGFyY2VsIHNyYykgeworICAgICAgICAgICAgdGhpcy50aW1lID0gdGltZTsKKyAgICAgICAgICAgIGludCBiYXQgPSBzcmMucmVhZEludCgpOworICAgICAgICAgICAgY21kID0gKGJ5dGUpKGJhdCYweGZmKTsKKyAgICAgICAgICAgIGJhdHRlcnlMZXZlbCA9IChieXRlKSgoYmF0Pj44KSYweGZmKTsKKyAgICAgICAgICAgIGJhdHRlcnlTdGF0dXMgPSAoYnl0ZSkoKGJhdD4+MTYpJjB4Zik7CisgICAgICAgICAgICBiYXR0ZXJ5SGVhbHRoID0gKGJ5dGUpKChiYXQ+PjIwKSYweGYpOworICAgICAgICAgICAgYmF0dGVyeVBsdWdUeXBlID0gKGJ5dGUpKChiYXQ+PjI0KSYweGYpOworICAgICAgICAgICAgYmF0ID0gc3JjLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIGJhdHRlcnlUZW1wZXJhdHVyZSA9IChjaGFyKShiYXQmMHhmZmZmKTsKKyAgICAgICAgICAgIGJhdHRlcnlWb2x0YWdlID0gKGNoYXIpKChiYXQ+PjE2KSYweGZmZmYpOworICAgICAgICAgICAgc3RhdGVzID0gc3JjLnJlYWRJbnQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIGludCBkZXNjcmliZUNvbnRlbnRzKCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB3cml0ZVRvUGFyY2VsKFBhcmNlbCBkZXN0LCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgICAgIGRlc3Qud3JpdGVMb25nKHRpbWUpOworICAgICAgICAgICAgaW50IGJhdCA9ICgoKGludCljbWQpJjB4ZmYpCisgICAgICAgICAgICAgICAgICAgIHwgKCgoKGludCliYXR0ZXJ5TGV2ZWwpPDw4KSYweGZmMDApCisgICAgICAgICAgICAgICAgICAgIHwgKCgoKGludCliYXR0ZXJ5U3RhdHVzKTw8MTYpJjB4ZjAwMDApCisgICAgICAgICAgICAgICAgICAgIHwgKCgoKGludCliYXR0ZXJ5SGVhbHRoKTw8MjApJjB4ZjAwMDAwKQorICAgICAgICAgICAgICAgICAgICB8ICgoKChpbnQpYmF0dGVyeVBsdWdUeXBlKTw8MjQpJjB4ZjAwMDAwMCk7CisgICAgICAgICAgICBkZXN0LndyaXRlSW50KGJhdCk7CisgICAgICAgICAgICBiYXQgPSAoKChpbnQpYmF0dGVyeVRlbXBlcmF0dXJlKSYweGZmZmYpCisgICAgICAgICAgICAgICAgICAgIHwgKCgoKGludCliYXR0ZXJ5Vm9sdGFnZSk8PDE2KSYweGZmZmYwMDAwKTsKKyAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoYmF0KTsKKyAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoc3RhdGVzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIHZvaWQgc2V0VG8obG9uZyB0aW1lLCBieXRlIGNtZCwgSGlzdG9yeUl0ZW0gbykgeworICAgICAgICAgICAgdGhpcy50aW1lID0gdGltZTsKKyAgICAgICAgICAgIHRoaXMuY21kID0gY21kOworICAgICAgICAgICAgYmF0dGVyeUxldmVsID0gby5iYXR0ZXJ5TGV2ZWw7CisgICAgICAgICAgICBiYXR0ZXJ5U3RhdHVzID0gby5iYXR0ZXJ5U3RhdHVzOworICAgICAgICAgICAgYmF0dGVyeUhlYWx0aCA9IG8uYmF0dGVyeUhlYWx0aDsKKyAgICAgICAgICAgIGJhdHRlcnlQbHVnVHlwZSA9IG8uYmF0dGVyeVBsdWdUeXBlOworICAgICAgICAgICAgYmF0dGVyeVRlbXBlcmF0dXJlID0gby5iYXR0ZXJ5VGVtcGVyYXR1cmU7CisgICAgICAgICAgICBiYXR0ZXJ5Vm9sdGFnZSA9IG8uYmF0dGVyeVZvbHRhZ2U7CisgICAgICAgICAgICBzdGF0ZXMgPSBvLnN0YXRlczsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEJpdERlc2NyaXB0aW9uIHsKKyAgICAgICAgcHVibGljIGZpbmFsIGludCBtYXNrOworICAgICAgICBwdWJsaWMgZmluYWwgaW50IHNoaWZ0OworICAgICAgICBwdWJsaWMgZmluYWwgU3RyaW5nIG5hbWU7CisgICAgICAgIHB1YmxpYyBmaW5hbCBTdHJpbmdbXSB2YWx1ZXM7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgQml0RGVzY3JpcHRpb24oaW50IG1hc2ssIFN0cmluZyBuYW1lKSB7CisgICAgICAgICAgICB0aGlzLm1hc2sgPSBtYXNrOworICAgICAgICAgICAgdGhpcy5zaGlmdCA9IC0xOworICAgICAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIHRoaXMudmFsdWVzID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIEJpdERlc2NyaXB0aW9uKGludCBtYXNrLCBpbnQgc2hpZnQsIFN0cmluZyBuYW1lLCBTdHJpbmdbXSB2YWx1ZXMpIHsKKyAgICAgICAgICAgIHRoaXMubWFzayA9IG1hc2s7CisgICAgICAgICAgICB0aGlzLnNoaWZ0ID0gc2hpZnQ7CisgICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjdXJyZW50IGhpc3Rvcnkgb2YgYmF0dGVyeSBzdGF0ZSBjaGFuZ2VzLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBIaXN0b3J5SXRlbSBnZXRIaXN0b3J5KCk7CisgICAgCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBkZXZpY2UgaGFzIGJlZW4gc3RhcnRlZC4KICAgICAgKi8KQEAgLTQ3NiwxMyArNTc5LDIzIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX0dQUlMgPSAxOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBVEFfQ09OTkVDVElPTl9FREdFID0gMjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fVU1UUyA9IDM7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX09USEVSID0gNDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fQ0RNQSA9IDQ7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX0VWRE9fMCA9IDU7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX0VWRE9fQSA9IDY7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OXzF4UlRUID0gNzsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fSFNEUEEgPSA4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBVEFfQ09OTkVDVElPTl9IU1VQQSA9IDk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX0hTUEEgPSAxMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fSURFTiA9IDExOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBVEFfQ09OTkVDVElPTl9FVkRPX0IgPSAxMjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fT1RIRVIgPSAxMzsKICAgICAKICAgICBzdGF0aWMgZmluYWwgU3RyaW5nW10gREFUQV9DT05ORUNUSU9OX05BTUVTID0gewotICAgICAgICAibm9uZSIsICJncHJzIiwgImVkZ2UiLCAidW10cyIsICJvdGhlciIKKyAgICAgICAgIm5vbmUiLCAiZ3BycyIsICJlZGdlIiwgInVtdHMiLCAiY2RtYSIsICJldmRvXzAiLCAiZXZkb19BIiwKKyAgICAgICAgIjF4cnR0IiwgImhzZHBhIiwgImhzdXBhIiwgImhzcGEiLCAiaWRlbiIsICJldmRvX2IiLCAib3RoZXIiCiAgICAgfTsKICAgICAKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOVU1fREFUQV9DT05ORUNUSU9OX1RZUEVTID0gNTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOVU1fREFUQV9DT05ORUNUSU9OX1RZUEVTID0gREFUQV9DT05ORUNUSU9OX09USEVSKzE7CiAgICAgCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgdGltZSBpbiBtaWNyb3NlY29uZHMgdGhhdCB0aGUgcGhvbmUgaGFzIGJlZW4gcnVubmluZyB3aXRoCkBAIC01MDAsNiArNjEzLDM1IEBACiAgICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0UGhvbmVEYXRhQ29ubmVjdGlvbkNvdW50KGludCBkYXRhVHlwZSwgaW50IHdoaWNoKTsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEJpdERlc2NyaXB0aW9uW10gSElTVE9SWV9TVEFURV9ERVNDUklQVElPTlMKKyAgICAgICAgICAgID0gbmV3IEJpdERlc2NyaXB0aW9uW10geworICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfQkFUVEVSWV9QTFVHR0VEX0ZMQUcsICJwbHVnZ2VkIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9TQ1JFRU5fT05fRkxBRywgInNjcmVlbiIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfR1BTX09OX0ZMQUcsICJncHMiKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX1BIT05FX09OX0ZMQUcsICJwaG9uZSIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfU0NBTk5JTkdfRkxBRywgInBob25lX3NjYW5uaW5nIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9XSUZJX09OX0ZMQUcsICJ3aWZpIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9XSUZJX1JVTk5JTkdfRkxBRywgIndpZmlfcnVubmluZyIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfV0lGSV9GVUxMX0xPQ0tfRkxBRywgIndpZmlfZnVsbF9sb2NrIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9XSUZJX1NDQU5fTE9DS19GTEFHLCAid2lmaV9zY2FuX2xvY2siKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX1dJRklfTVVMVElDQVNUX09OX0ZMQUcsICJ3aWZpX211bHRpY2FzdCIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfQkxVRVRPT1RIX09OX0ZMQUcsICJibHVldG9vdGgiKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX0FVRElPX09OX0ZMQUcsICJhdWRpbyIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfVklERU9fT05fRkxBRywgInZpZGVvIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9CUklHSFRORVNTX01BU0ssCisgICAgICAgICAgICAgICAgSGlzdG9yeUl0ZW0uU1RBVEVfQlJJR0hUTkVTU19TSElGVCwgImJyaWdodG5lc3MiLAorICAgICAgICAgICAgICAgIFNDUkVFTl9CUklHSFRORVNTX05BTUVTKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX1NJR05BTF9TVFJFTkdUSF9NQVNLLAorICAgICAgICAgICAgICAgIEhpc3RvcnlJdGVtLlNUQVRFX1NJR05BTF9TVFJFTkdUSF9TSElGVCwgInNpZ25hbF9zdHJlbmd0aCIsCisgICAgICAgICAgICAgICAgU0lHTkFMX1NUUkVOR1RIX05BTUVTKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX1BIT05FX1NUQVRFX01BU0ssCisgICAgICAgICAgICAgICAgSGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfU1RBVEVfU0hJRlQsICJwaG9uZV9zdGF0ZSIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsiaW4iLCAib3V0IiwgImVtZXJnZW5jeSIsICJvZmYifSksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9EQVRBX0NPTk5FQ1RJT05fTUFTSywKKyAgICAgICAgICAgICAgICBIaXN0b3J5SXRlbS5TVEFURV9EQVRBX0NPTk5FQ1RJT05fU0hJRlQsICJkYXRhX2Nvbm4iLAorICAgICAgICAgICAgICAgIERBVEFfQ09OTkVDVElPTl9OQU1FUyksCisgICAgfTsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIHRpbWUgaW4gbWljcm9zZWNvbmRzIHRoYXQgd2lmaSBoYXMgYmVlbiBvbiB3aGlsZSB0aGUgZGV2aWNlIHdhcwpAQCAtNzkxLDcgKzkzMyw3IEBACiAgICAgICAgIAogICAgICAgICAvLyBEdW1wICJiYXR0ZXJ5IiBzdGF0CiAgICAgICAgIGR1bXBMaW5lKHB3LCAwIC8qIHVpZCAqLywgY2F0ZWdvcnksIEJBVFRFUllfREFUQSwgCi0gICAgICAgICAgICAgICAgd2hpY2ggPT0gU1RBVFNfVE9UQUwgPyBnZXRTdGFydENvdW50KCkgOiAiTi9BIiwKKyAgICAgICAgICAgICAgICB3aGljaCA9PSBTVEFUU19TSU5DRV9DSEFSR0VEID8gZ2V0U3RhcnRDb3VudCgpIDogIk4vQSIsCiAgICAgICAgICAgICAgICAgd2hpY2hCYXR0ZXJ5UmVhbHRpbWUgLyAxMDAwLCB3aGljaEJhdHRlcnlVcHRpbWUgLyAxMDAwLAogICAgICAgICAgICAgICAgIHRvdGFsUmVhbHRpbWUgLyAxMDAwLCB0b3RhbFVwdGltZSAvIDEwMDApOyAKICAgICAgICAgCkBAIC04NjQsNyArMTAwNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgZHVtcExpbmUocHcsIDAgLyogdWlkICovLCBjYXRlZ29yeSwgREFUQV9DT05ORUNUSU9OX0NPVU5UX0RBVEEsIGFyZ3MpOwogICAgICAgICAKLSAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICBkdW1wTGluZShwdywgMCAvKiB1aWQgKi8sIGNhdGVnb3J5LCBCQVRURVJZX0xFVkVMX0RBVEEsIGdldERpc2NoYXJnZVN0YXJ0TGV2ZWwoKSwgCiAgICAgICAgICAgICAgICAgICAgIGdldERpc2NoYXJnZUN1cnJlbnRMZXZlbCgpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMzU0LDcgQEAKICAgICAgICAgCiAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKIAotICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgIGlmIChnZXRJc09uQmF0dGVyeSgpKSB7CiAgICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnRsbigiICBEZXZpY2UgaXMgY3VycmVudGx5IHVucGx1Z2dlZCIpOwogICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCIgICAgRGlzY2hhcmdlIGN5Y2xlIHN0YXJ0IGxldmVsOiAiKTsgCkBAIC0xNDM2LDYgKzE1NzgsMzAgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgcHJpbnRCaXREZXNjcmlwdGlvbnMoUHJpbnRXcml0ZXIgcHcsIGludCBvbGR2YWwsIGludCBuZXd2YWwsIEJpdERlc2NyaXB0aW9uW10gZGVzY3JpcHRpb25zKSB7CisgICAgICAgIGludCBkaWZmID0gb2xkdmFsIF4gbmV3dmFsOworICAgICAgICBpZiAoZGlmZiA9PSAwKSByZXR1cm47CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxkZXNjcmlwdGlvbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIEJpdERlc2NyaXB0aW9uIGJkID0gZGVzY3JpcHRpb25zW2ldOworICAgICAgICAgICAgaWYgKChkaWZmJmJkLm1hc2spICE9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYmQuc2hpZnQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KChuZXd2YWwmYmQubWFzaykgIT0gMCA/ICIgKyIgOiAiIC0iKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoYmQubmFtZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoYmQubmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCI9Iik7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWwgPSAobmV3dmFsJmJkLm1hc2spPj5iZC5zaGlmdDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJkLnZhbHVlcyAhPSBudWxsICYmIHZhbCA+PSAwICYmIHZhbCA8IGJkLnZhbHVlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KGJkLnZhbHVlc1t2YWxdKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgLyoqCiAgICAgICogRHVtcHMgYSBodW1hbi1yZWFkYWJsZSBzdW1tYXJ5IG9mIHRoZSBiYXR0ZXJ5IHN0YXRpc3RpY3MgdG8gdGhlIGdpdmVuIFByaW50V3JpdGVyLgogICAgICAqCkBAIC0xNDQzLDE5ICsxNjA5LDEyOSBAQAogICAgICAqLwogICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQogICAgIHB1YmxpYyB2b2lkIGR1bXBMb2NrZWQoUHJpbnRXcml0ZXIgcHcpIHsKLSAgICAgICAgcHcucHJpbnRsbigiVG90YWwgU3RhdGlzdGljcyAoQ3VycmVudCBhbmQgSGlzdG9yaWMpOiIpOworICAgICAgICBIaXN0b3J5SXRlbSByZWMgPSBnZXRIaXN0b3J5KCk7CisgICAgICAgIGlmIChyZWMgIT0gbnVsbCkgeworICAgICAgICAgICAgcHcucHJpbnRsbigiQmF0dGVyeSBIaXN0b3J5OiIpOworICAgICAgICAgICAgaW50IG9sZFN0YXRlID0gMDsKKyAgICAgICAgICAgIGludCBvbGRTdGF0dXMgPSAtMTsKKyAgICAgICAgICAgIGludCBvbGRIZWFsdGggPSAtMTsKKyAgICAgICAgICAgIGludCBvbGRQbHVnID0gLTE7CisgICAgICAgICAgICBpbnQgb2xkVGVtcCA9IC0xOworICAgICAgICAgICAgaW50IG9sZFZvbHQgPSAtMTsKKyAgICAgICAgICAgIHdoaWxlIChyZWMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgICIpOworICAgICAgICAgICAgICAgIHB3LnByaW50KHJlYy50aW1lKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiICIpOworICAgICAgICAgICAgICAgIGlmIChyZWMuY21kID09IEhpc3RvcnlJdGVtLkNNRF9TVEFSVCkgeworICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgU1RBUlQiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVjLmJhdHRlcnlMZXZlbCA8IDEwKSBwdy5wcmludCgiMDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVjLmJhdHRlcnlMZXZlbCA8IDEwMCkgcHcucHJpbnQoIjAiKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQocmVjLmJhdHRlcnlMZXZlbCk7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWMuc3RhdGVzIDwgMHgxMCkgcHcucHJpbnQoIjAwMDAwMDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVjLnN0YXRlcyA8IDB4MTAwKSBwdy5wcmludCgiMDAwMDAwIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlYy5zdGF0ZXMgPCAweDEwMDApIHB3LnByaW50KCIwMDAwMCIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWMuc3RhdGVzIDwgMHgxMDAwMCkgcHcucHJpbnQoIjAwMDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVjLnN0YXRlcyA8IDB4MTAwMDAwKSBwdy5wcmludCgiMDAwIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlYy5zdGF0ZXMgPCAweDEwMDAwMDApIHB3LnByaW50KCIwMCIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWMuc3RhdGVzIDwgMHgxMDAwMDAwMCkgcHcucHJpbnQoIjAiKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoSW50ZWdlci50b0hleFN0cmluZyhyZWMuc3RhdGVzKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdGF0dXMgIT0gcmVjLmJhdHRlcnlTdGF0dXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFN0YXR1cyA9IHJlYy5iYXR0ZXJ5U3RhdHVzOworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBzdGF0dXM9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9sZFN0YXR1cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9TVEFUVVNfVU5LTk9XTjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoInVua25vd24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1NUQVRVU19DSEFSR0lORzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoImNoYXJnaW5nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9TVEFUVVNfRElTQ0hBUkdJTkc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJkaXNjaGFyZ2luZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfU1RBVFVTX05PVF9DSEFSR0lORzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIm5vdC1jaGFyZ2luZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfU1RBVFVTX0ZVTEw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJmdWxsIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KG9sZFN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRIZWFsdGggIT0gcmVjLmJhdHRlcnlIZWFsdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZEhlYWx0aCA9IHJlYy5iYXR0ZXJ5SGVhbHRoOworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBoZWFsdGg9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9sZEhlYWx0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9IRUFMVEhfVU5LTk9XTjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoInVua25vd24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX0hFQUxUSF9HT09EOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiZ29vZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfSEVBTFRIX09WRVJIRUFUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgib3ZlcmhlYXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX0hFQUxUSF9ERUFEOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiZGVhZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfSEVBTFRIX09WRVJfVk9MVEFHRToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIm92ZXItdm9sdGFnZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfSEVBTFRIX1VOU1BFQ0lGSUVEX0ZBSUxVUkU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJmYWlsdXJlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KG9sZEhlYWx0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRQbHVnICE9IHJlYy5iYXR0ZXJ5UGx1Z1R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsdWcgPSByZWMuYmF0dGVyeVBsdWdUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBwbHVnPSIpOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvbGRQbHVnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgibm9uZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfUExVR0dFRF9BQzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoImFjIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9QTFVHR0VEX1VTQjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoInVzYiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChvbGRQbHVnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFRlbXAgIT0gcmVjLmJhdHRlcnlUZW1wZXJhdHVyZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb2xkVGVtcCA9IHJlYy5iYXR0ZXJ5VGVtcGVyYXR1cmU7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIHRlbXA9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChvbGRUZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAob2xkVm9sdCAhPSByZWMuYmF0dGVyeVZvbHRhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZvbHQgPSByZWMuYmF0dGVyeVZvbHRhZ2U7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIHZvbHQ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChvbGRWb2x0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmludEJpdERlc2NyaXB0aW9ucyhwdywgb2xkU3RhdGUsIHJlYy5zdGF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSElTVE9SWV9TVEFURV9ERVNDUklQVElPTlMpOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG9sZFN0YXRlID0gcmVjLnN0YXRlczsKKyAgICAgICAgICAgICAgICByZWMgPSByZWMubmV4dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHcucHJpbnRsbigiU3RhdGlzdGljcyBzaW5jZSBsYXN0IGNoYXJnZToiKTsKICAgICAgICAgcHcucHJpbnRsbigiICBTeXN0ZW0gc3RhcnRzOiAiICsgZ2V0U3RhcnRDb3VudCgpCiAgICAgICAgICAgICAgICAgKyAiLCBjdXJyZW50bHkgb24gYmF0dGVyeTogIiArIGdldElzT25CYXR0ZXJ5KCkpOwotICAgICAgICBkdW1wTG9ja2VkKHB3LCAiIiwgU1RBVFNfVE9UQUwsIC0xKTsKKyAgICAgICAgZHVtcExvY2tlZChwdywgIiIsIFNUQVRTX1NJTkNFX0NIQVJHRUQsIC0xKTsKICAgICAgICAgcHcucHJpbnRsbigiIik7Ci0gICAgICAgIHB3LnByaW50bG4oIkxhc3QgUnVuIFN0YXRpc3RpY3MgKFByZXZpb3VzIHJ1biBvZiBzeXN0ZW0pOiIpOwotICAgICAgICBkdW1wTG9ja2VkKHB3LCAiIiwgU1RBVFNfTEFTVCwgLTEpOwotICAgICAgICBwdy5wcmludGxuKCIiKTsKLSAgICAgICAgcHcucHJpbnRsbigiQ3VycmVudCBCYXR0ZXJ5IFN0YXRpc3RpY3MgKEN1cnJlbnRseSBydW5uaW5nIHN5c3RlbSk6Iik7Ci0gICAgICAgIGR1bXBMb2NrZWQocHcsICIiLCBTVEFUU19DVVJSRU5ULCAtMSk7Ci0gICAgICAgIHB3LnByaW50bG4oIiIpOwotICAgICAgICBwdy5wcmludGxuKCJVbnBsdWdnZWQgU3RhdGlzdGljcyAoU2luY2UgbGFzdCB1bnBsdWdnZWQgZnJvbSBwb3dlcik6Iik7Ci0gICAgICAgIGR1bXBMb2NrZWQocHcsICIiLCBTVEFUU19VTlBMVUdHRUQsIC0xKTsKKyAgICAgICAgcHcucHJpbnRsbigiU3RhdGlzdGljcyBzaW5jZSBsYXN0IHVucGx1Z2dlZDoiKTsKKyAgICAgICAgZHVtcExvY2tlZChwdywgIiIsIFNUQVRTX1NJTkNFX1VOUExVR0dFRCwgLTEpOwogICAgIH0KICAgICAKICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKQEAgLTE0NzAsMTQgKzE3NDYsMTEgQEAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGlzVW5wbHVnZ2VkT25seSkgewotICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX1VOUExVR0dFRCwgLTEpOworICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX1NJTkNFX1VOUExVR0dFRCwgLTEpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX1RPVEFMLCAtMSk7Ci0gICAgICAgICAgICBkdW1wQ2hlY2tpbkxvY2tlZChwdywgU1RBVFNfTEFTVCwgLTEpOwotICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX1VOUExVR0dFRCwgLTEpOwotICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX0NVUlJFTlQsIC0xKTsKKyAgICAgICAgICAgIGR1bXBDaGVja2luTG9ja2VkKHB3LCBTVEFUU19TSU5DRV9DSEFSR0VELCAtMSk7CisgICAgICAgICAgICBkdW1wQ2hlY2tpbkxvY2tlZChwdywgU1RBVFNfU0lOQ0VfVU5QTFVHR0VELCAtMSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9vcy9CdWlsZC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvQnVpbGQuamF2YQppbmRleCAzZTlmZDQyLi5mZGQzNTczIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9vcy9CdWlsZC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL29zL0J1aWxkLmphdmEKQEAgLTE3OSw3ICsxNzksMjMgQEAKICAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVDTEFJUl9NUjEgPSA3OwogICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEp1bmUgMjAxMDogQW5kcm9pZCAyLjIKKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZST1lPID0gODsKKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBOZXh0IHZlcnNpb24gb2YgQW5kcm9pZC4KKyAgICAgICAgICogCisgICAgICAgICAqIDxwPkFwcGxpY2F0aW9ucyB0YXJnZXRpbmcgdGhpcyBvciBhIGxhdGVyIHJlbGVhc2Ugd2lsbCBnZXQgdGhlc2UKKyAgICAgICAgICogbmV3IGNoYW5nZXMgaW4gYmVoYXZpb3I6PC9wPgorICAgICAgICAgKiA8dWw+CisgICAgICAgICAqIDxsaT4gVGhlIHN0YXR1cyBiYXIgaXMgbm93IGRhcmsuICBUYXJnZXRpbmcgdGhpcyB2ZXJzaW9uIGFsbG93cworICAgICAgICAgKiB0aGUgcGxhdGZvcm0gdG8gcGVyZm9ybSBwZXJmb3JtaW5nIGNvbXBhdGliaWxpdHkgb24gc3RhdHVzIGJhcgorICAgICAgICAgKiBncmFwaGljcyB0byBlbnN1cmUgdGhleSBsb29rIG9rYXkgb24gYSBkYXJrIGJhY2tncm91bmQuCisgICAgICAgICAqIDwvdWw+CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHSU5HRVJCUkVBRCA9IENVUl9ERVZFTE9QTUVOVDsKICAgICB9CiAgICAgCiAgICAgLyoqIFRoZSB0eXBlIG9mIGJ1aWxkLCBsaWtlICJ1c2VyIiBvciAiZW5nIi4gKi8KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL29zL0Ryb3BCb3hNYW5hZ2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9Ecm9wQm94TWFuYWdlci5qYXZhCmluZGV4IDc4ODlhOTIuLjRkZjMzZTAgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL29zL0Ryb3BCb3hNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvRHJvcEJveE1hbmFnZXIuamF2YQpAQCAtMjQyLDcgKzI0Miw3IEBACiAgICAgICAgIGlmIChmaWxlID09IG51bGwpIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOwogICAgICAgICBFbnRyeSBlbnRyeSA9IG5ldyBFbnRyeSh0YWcsIDAsIGZpbGUsIGZsYWdzKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLmFkZChuZXcgRW50cnkodGFnLCAwLCBmaWxlLCBmbGFncykpOworICAgICAgICAgICAgbVNlcnZpY2UuYWRkKGVudHJ5KTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIC8vIGlnbm9yZQogICAgICAgICB9IGZpbmFsbHkgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvRW52aXJvbm1lbnQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL29zL0Vudmlyb25tZW50LmphdmEKaW5kZXggODEyMzkxYy4uYzdjYmVkNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvRW52aXJvbm1lbnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9FbnZpcm9ubWVudC5qYXZhCkBAIC0yOCw2ICsyOCw4IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRmlsZSBST09UX0RJUkVDVE9SWQogICAgICAgICAgICAgPSBnZXREaXJlY3RvcnkoIkFORFJPSURfUk9PVCIsICIvc3lzdGVtIik7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX1BST1BFUlRZX0VGU19FTkFCTEVEID0gInBlcnNpc3Quc2VjdXJpdHkuZWZzLmVuYWJsZWQiOworCiAgICAgcHJpdmF0ZSBzdGF0aWMgSU1vdW50U2VydmljZSBtTW50U3ZjID0gbnVsbDsKIAogICAgIC8qKgpAQCAtMzcsOSArMzksNTUgQEAKICAgICAgICAgcmV0dXJuIFJPT1RfRElSRUNUT1JZOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIHN5c3RlbSBkaXJlY3RvcnkgYXZhaWxhYmxlIGZvciBzZWN1cmUgc3RvcmFnZS4KKyAgICAgKiBJZiBFbmNyeXB0ZWQgRmlsZSBzeXN0ZW0gaXMgZW5hYmxlZCwgaXQgcmV0dXJucyBhbiBlbmNyeXB0ZWQgZGlyZWN0b3J5ICgvZGF0YS9zZWN1cmUvc3lzdGVtKS4KKyAgICAgKiBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHVuZW5jcnlwdGVkIC9kYXRhL3N5c3RlbSBkaXJlY3RvcnkuCisgICAgICogQHJldHVybiBGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNlY3VyZSBzdG9yYWdlIHN5c3RlbSBkaXJlY3RvcnkuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgZ2V0U3lzdGVtU2VjdXJlRGlyZWN0b3J5KCkgeworICAgICAgICBpZiAoaXNFbmNyeXB0ZWRGaWxlc3lzdGVtRW5hYmxlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGUoU0VDVVJFX0RBVEFfRElSRUNUT1JZLCAic3lzdGVtIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGUoREFUQV9ESVJFQ1RPUlksICJzeXN0ZW0iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGEgZGlyZWN0b3J5IGZvciBzZWN1cmUgc3RvcmFnZS4KKyAgICAgKiBJZiBFbmNyeXB0ZWQgRmlsZSBzeXN0ZW0gaXMgZW5hYmxlZCwgaXQgcmV0dXJucyBhbiBlbmNyeXB0ZWQgZGlyZWN0b3J5ICgvZGF0YS9zZWN1cmUpLgorICAgICAqIE90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgdW5lbmNyeXB0ZWQgL2RhdGEgZGlyZWN0b3J5LgorICAgICAqIEByZXR1cm4gRmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGRpcmVjdG9yeSBmb3Igc2VjdXJlIHN0b3JhZ2UuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgZ2V0U2VjdXJlRGF0YURpcmVjdG9yeSgpIHsKKyAgICAgICAgaWYgKGlzRW5jcnlwdGVkRmlsZXN5c3RlbUVuYWJsZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIFNFQ1VSRV9EQVRBX0RJUkVDVE9SWTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBEQVRBX0RJUkVDVE9SWTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRW5jcnlwdGVkIEZpbGUgU3lzdGVtIGZlYXR1cmUgaXMgZW5hYmxlZCBvbiB0aGUgZGV2aWNlIG9yIG5vdC4KKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIEVuY3J5cHRlZCBGaWxlIFN5c3RlbSBmZWF0dXJlIGlzIGVuYWJsZWQsIDxjb2RlPmZhbHNlPC9jb2RlPgorICAgICAqIGlmIGRpc2FibGVkLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRW5jcnlwdGVkRmlsZXN5c3RlbUVuYWJsZWQoKSB7CisgICAgICAgIHJldHVybiBTeXN0ZW1Qcm9wZXJ0aWVzLmdldEJvb2xlYW4oU1lTVEVNX1BST1BFUlRZX0VGU19FTkFCTEVELCBmYWxzZSk7CisgICAgfQorCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRmlsZSBEQVRBX0RJUkVDVE9SWQogICAgICAgICAgICAgPSBnZXREaXJlY3RvcnkoIkFORFJPSURfREFUQSIsICIvZGF0YSIpOwogCisgICAgLyoqCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBGaWxlIFNFQ1VSRV9EQVRBX0RJUkVDVE9SWQorICAgICAgICAgICAgPSBnZXREaXJlY3RvcnkoIkFORFJPSURfU0VDVVJFX0RBVEEiLCAiL2RhdGEvc2VjdXJlIik7CisKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBGaWxlIEVYVEVSTkFMX1NUT1JBR0VfRElSRUNUT1JZCiAgICAgICAgICAgICA9IGdldERpcmVjdG9yeSgiRVhURVJOQUxfU1RPUkFHRSIsICIvc2RjYXJkIik7CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL29zL01lc3NhZ2VRdWV1ZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvTWVzc2FnZVF1ZXVlLmphdmEKaW5kZXggYmM2NTNkNi4uYWRiMTFjOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvTWVzc2FnZVF1ZXVlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvTWVzc2FnZVF1ZXVlLmphdmEKQEAgLTE2LDEzICsxNiwxMSBAQAogCiBwYWNrYWdlIGFuZHJvaWQub3M7CiAKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCiBpbXBvcnQgYW5kcm9pZC51dGlsLkFuZHJvaWRSdW50aW1lRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Db25maWc7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIAotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlJ1bnRpbWVJbml0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiAKIC8qKgogICogTG93LWxldmVsIGNsYXNzIGhvbGRpbmcgdGhlIGxpc3Qgb2YgbWVzc2FnZXMgdG8gYmUgZGlzcGF0Y2hlZCBieSBhCkBAIC0zNCwxMCArMzIsMTggQEAKICAqLwogcHVibGljIGNsYXNzIE1lc3NhZ2VRdWV1ZSB7CiAgICAgTWVzc2FnZSBtTWVzc2FnZXM7Ci0gICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3QgbUlkbGVIYW5kbGVycyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICBwcml2YXRlIGZpbmFsIEFycmF5TGlzdDxJZGxlSGFuZGxlcj4gbUlkbGVIYW5kbGVycyA9IG5ldyBBcnJheUxpc3Q8SWRsZUhhbmRsZXI+KCk7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1RdWl0aW5nID0gZmFsc2U7CiAgICAgYm9vbGVhbiBtUXVpdEFsbG93ZWQgPSB0cnVlOworCisgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgcHJpdmF0ZSBpbnQgbVB0cjsgLy8gdXNlZCBieSBuYXRpdmUgY29kZQogICAgIAorICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlSW5pdCgpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlRGVzdHJveSgpOworICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlUG9sbE9uY2UoaW50IHRpbWVvdXRNaWxsaXMpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlV2FrZSgpOworCiAgICAgLyoqCiAgICAgICogQ2FsbGJhY2sgaW50ZXJmYWNlIGZvciBkaXNjb3ZlcmluZyB3aGVuIGEgdGhyZWFkIGlzIGdvaW5nIHRvIGJsb2NrCiAgICAgICogd2FpdGluZyBmb3IgbW9yZSBtZXNzYWdlcy4KQEAgLTg0LDIyICs5MCwzOSBAQAogICAgICAgICAgICAgbUlkbGVIYW5kbGVycy5yZW1vdmUoaGFuZGxlcik7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKICAgICBNZXNzYWdlUXVldWUoKSB7CisgICAgICAgIG5hdGl2ZUluaXQoKTsKKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB0aHJvd3MgVGhyb3dhYmxlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5hdGl2ZURlc3Ryb3koKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHN1cGVyLmZpbmFsaXplKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBmaW5hbCBNZXNzYWdlIG5leHQoKSB7CiAgICAgICAgIGJvb2xlYW4gdHJ5SWRsZSA9IHRydWU7CisgICAgICAgIC8vIHdoZW4gd2Ugc3RhcnQgb3V0LCB3ZSdsbCBqdXN0IHRvdWNoIHRoZSBpbnB1dCBwaXBlcyBhbmQgdGhlbiBnbyBmcm9tIHRoZXJlCisgICAgICAgIGludCB0aW1lVG9OZXh0RXZlbnRNaWxsaXMgPSAwOwogCiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBsb25nIG5vdzsKICAgICAgICAgICAgIE9iamVjdFtdIGlkbGVycyA9IG51bGw7Ci0gICAgCisKKyAgICAgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hlZCA9IG5hdGl2ZVBvbGxPbmNlKHRpbWVUb05leHRFdmVudE1pbGxpcyk7CisKICAgICAgICAgICAgIC8vIFRyeSB0byByZXRyaWV2ZSB0aGUgbmV4dCBtZXNzYWdlLCByZXR1cm5pbmcgaWYgZm91bmQuCiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKICAgICAgICAgICAgICAgICBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKICAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IHB1bGxOZXh0TG9ja2VkKG5vdyk7Ci0gICAgICAgICAgICAgICAgaWYgKG1zZyAhPSBudWxsKSByZXR1cm4gbXNnOworICAgICAgICAgICAgICAgIGlmIChtc2cgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAodHJ5SWRsZSAmJiBtSWRsZUhhbmRsZXJzLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWRsZXJzID0gbUlkbGVIYW5kbGVycy50b0FycmF5KCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM1LDIwICsxNTgsMjIgQEAKIAogICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CiAgICAgICAgICAgICAgICAgLy8gTm8gbWVzc2FnZXMsIG5vYm9keSB0byB0ZWxsIGFib3V0IGl0Li4uICB0aW1lIHRvIHdhaXQhCi0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1NZXNzYWdlcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobU1lc3NhZ2VzLndoZW4tbm93ID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmRlci5mbHVzaFBlbmRpbmdDb21tYW5kcygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2FpdChtTWVzc2FnZXMud2hlbi1ub3cpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChtTWVzc2FnZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmdUaW1lVG9OZXh0RXZlbnRNaWxsaXMgPSBtTWVzc2FnZXMud2hlbiAtIG5vdzsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChsb25nVGltZVRvTmV4dEV2ZW50TWlsbGlzID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQmluZGVyLmZsdXNoUGVuZGluZ0NvbW1hbmRzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhaXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVUb05leHRFdmVudE1pbGxpcyA9IChpbnQpIE1hdGgubWluKGxvbmdUaW1lVG9OZXh0RXZlbnRNaWxsaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIuTUFYX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVUb05leHRFdmVudE1pbGxpcyA9IDA7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBCaW5kZXIuZmx1c2hQZW5kaW5nQ29tbWFuZHMoKTsKKyAgICAgICAgICAgICAgICAgICAgdGltZVRvTmV4dEV2ZW50TWlsbGlzID0gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gbG9vcCB0byB0aGUgd2hpbGUodHJ1ZSkgYW5kIGRvIHRoZSBhcHByb3ByaWF0ZSBuYXRpdmVXYWl0KHdoZW4pCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5MCw3ICsyMTUsNiBAQAogICAgICAgICAgICAgaWYgKHAgPT0gbnVsbCB8fCB3aGVuID09IDAgfHwgd2hlbiA8IHAud2hlbikgewogICAgICAgICAgICAgICAgIG1zZy5uZXh0ID0gcDsKICAgICAgICAgICAgICAgICBtTWVzc2FnZXMgPSBtc2c7Ci0gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgTWVzc2FnZSBwcmV2ID0gbnVsbDsKICAgICAgICAgICAgICAgICB3aGlsZSAocCAhPSBudWxsICYmIHAud2hlbiA8PSB3aGVuKSB7CkBAIC0xOTksOCArMjIzLDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbXNnLm5leHQgPSBwcmV2Lm5leHQ7CiAgICAgICAgICAgICAgICAgcHJldi5uZXh0ID0gbXNnOwotICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBuYXRpdmVXYWtlKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3LDExICszNDEsNCBAQAogICAgICAgICB9CiAgICAgfQogICAgICovCi0KLSAgICB2b2lkIHBva2UoKQotICAgIHsKLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICB0aGlzLm5vdGlmeSgpOwotICAgICAgICB9Ci0gICAgfQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUGFyY2VsRmlsZURlc2NyaXB0b3IuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL29zL1BhcmNlbEZpbGVEZXNjcmlwdG9yLmphdmEKaW5kZXggMGEzYjJjZi4uZDI2ZjA2NiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUGFyY2VsRmlsZURlc2NyaXB0b3IuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9QYXJjZWxGaWxlRGVzY3JpcHRvci5qYXZhCkBAIC0xNzksNyArMTc5LDcgQEAKICAgICAvKioKICAgICAgKiBBbiBJbnB1dFN0cmVhbSB5b3UgY2FuIGNyZWF0ZSBvbiBhIFBhcmNlbEZpbGVEZXNjcmlwdG9yLCB3aGljaCB3aWxsCiAgICAgICogdGFrZSBjYXJlIG9mIGNhbGxpbmcge0BsaW5rIFBhcmNlbEZpbGVEZXNjcmlwdG9yI2Nsb3NlCi0gICAgICogUGFyY2VsRmlsZURlc2NyaXRvci5jbG9zZSgpfSBmb3IgeW91IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQuCisgICAgICogUGFyY2VsRmlsZURlc2NyaXB0b3IuY2xvc2UoKX0gZm9yIHlvdSB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkLgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQXV0b0Nsb3NlSW5wdXRTdHJlYW0gZXh0ZW5kcyBGaWxlSW5wdXRTdHJlYW0gewogICAgICAgICBwcml2YXRlIGZpbmFsIFBhcmNlbEZpbGVEZXNjcmlwdG9yIG1GZDsKQEAgLTE5OCw3ICsxOTgsNyBAQAogICAgIC8qKgogICAgICAqIEFuIE91dHB1dFN0cmVhbSB5b3UgY2FuIGNyZWF0ZSBvbiBhIFBhcmNlbEZpbGVEZXNjcmlwdG9yLCB3aGljaCB3aWxsCiAgICAgICogdGFrZSBjYXJlIG9mIGNhbGxpbmcge0BsaW5rIFBhcmNlbEZpbGVEZXNjcmlwdG9yI2Nsb3NlCi0gICAgICogUGFyY2VsRmlsZURlc2NyaXRvci5jbG9zZSgpfSBmb3IgeW91IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQuCisgICAgICogUGFyY2VsRmlsZURlc2NyaXB0b3IuY2xvc2UoKX0gZm9yIHlvdSB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkLgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQXV0b0Nsb3NlT3V0cHV0U3RyZWFtIGV4dGVuZHMgRmlsZU91dHB1dFN0cmVhbSB7CiAgICAgICAgIHByaXZhdGUgZmluYWwgUGFyY2VsRmlsZURlc2NyaXB0b3IgbUZkOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUHJvY2Vzcy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvUHJvY2Vzcy5qYXZhCmluZGV4IDU2NDBhMDYuLmY2OTVkYmIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL29zL1Byb2Nlc3MuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9Qcm9jZXNzLmphdmEKQEAgLTYyNiw2ICs2MjYsMTUgQEAKICAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFNlY3VyaXR5RXhjZXB0aW9uOwogCiAgICAgLyoqCisgICAgICogQ2FsbCB3aXRoICdmYWxzZScgdG8gY2F1c2UgZnV0dXJlIGNhbGxzIHRvIHtAbGluayAjc2V0VGhyZWFkUHJpb3JpdHkoaW50KX0gdG8KKyAgICAgKiB0aHJvdyBhbiBleGNlcHRpb24gaWYgcGFzc2VkIGEgYmFja2dyb3VuZC1sZXZlbCB0aHJlYWQgcHJpb3JpdHkuICBUaGlzIGlzIG9ubHkKKyAgICAgKiBlZmZlY3RpdmUgaWYgdGhlIEpOSSBsYXllciBpcyBidWlsdCB3aXRoIEdVQVJEX1RIUkVBRF9QUklPUklUWSBkZWZpbmVkIHRvIDEuCisgICAgICoKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgbmF0aXZlIHZvaWQgc2V0Q2FuU2VsZkJhY2tncm91bmQoYm9vbGVhbiBiYWNrZ3JvdW5kT2spOworCisgICAgLyoqCiAgICAgICogU2V0cyB0aGUgc2NoZWR1bGluZyBncm91cCBmb3IgYSB0aHJlYWQuCiAgICAgICogQGhpZGUKICAgICAgKiBAcGFyYW0gdGlkIFRoZSBpbmRlbnRpZmllciBvZiB0aGUgdGhyZWFkL3Byb2Nlc3MgdG8gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUmVjb3ZlcnlTeXN0ZW0uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL29zL1JlY292ZXJ5U3lzdGVtLmphdmEKaW5kZXggYjZkYzFiNS4uNWZlYTZmZSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUmVjb3ZlcnlTeXN0ZW0uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9SZWNvdmVyeVN5c3RlbS5qYXZhCkBAIC0zNDgsNiArMzQ4LDIzIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogUmVib290IGludG8gdGhlIHJlY292ZXJ5IHN5c3RlbSB0byB3aXBlIHRoZSAvZGF0YSBwYXJ0aXRpb24gYW5kIHRvZ2dsZQorICAgICAqIEVuY3J5cHRlZCBGaWxlIFN5c3RlbXMgb24vb2ZmLgorICAgICAqIEBwYXJhbSBleHRyYXMgdG8gYWRkIHRvIHRoZSBSRUNPVkVSWV9DT01QTEVURUQgaW50ZW50IGFmdGVyIHJlYm9vdGluZy4KKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nLgorICAgICAqCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVib290VG9nZ2xlRUZTKENvbnRleHQgY29udGV4dCwgYm9vbGVhbiBlZnNFbmFibGVkKQorICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoZWZzRW5hYmxlZCkgeworICAgICAgICAgICAgYm9vdENvbW1hbmQoY29udGV4dCwgIi0tc2V0X2VuY3J5cHRlZF9maWxlc3lzdGVtPW9uIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBib290Q29tbWFuZChjb250ZXh0LCAiLS1zZXRfZW5jcnlwdGVkX2ZpbGVzeXN0ZW09b2ZmIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBSZWJvb3QgaW50byB0aGUgcmVjb3Zlcnkgc3lzdGVtIHdpdGggdGhlIHN1cHBsaWVkIGFyZ3VtZW50LgogICAgICAqIEBwYXJhbSBhcmcgdG8gcGFzcyB0byB0aGUgcmVjb3ZlcnkgdXRpbGl0eS4KICAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvU3RyaWN0TW9kZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvU3RyaWN0TW9kZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMTg3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9TdHJpY3RNb2RlLmphdmEKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBhbmRyb2lkLm9zOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOworaW1wb3J0IGFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uRXJyb3JSZXBvcnQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlJ1bnRpbWVJbml0OworCitpbXBvcnQgZGFsdmlrLnN5c3RlbS5CbG9ja0d1YXJkOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CisKKy8qKgorICogPHA+U3RyaWN0TW9kZSBsZXRzIHlvdSBpbXBvc2Ugc3RyaWN0ZXIgcnVsZXMgdW5kZXIgd2hpY2ggeW91cgorICogYXBwbGljYXRpb24gcnVucy48L3A+CisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBTdHJpY3RNb2RlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0cmljdE1vZGUiOworCisgICAgLy8gT25seSBsb2cgYSBkdXBsaWNhdGUgc3RhY2sgdHJhY2UgdG8gdGhlIGxvZ3MgZXZlcnkgc2Vjb25kLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgTUlOX0xPR19JTlRFUlZBTF9NUyA9IDEwMDA7CisKKyAgICAvLyBPbmx5IHNob3cgYW4gYW5ub3lpbmcgZGlhbG9nIGF0IG1vc3QgZXZlcnkgMzAgc2Vjb25kcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgTUlOX0RJQUxPR19JTlRFUlZBTF9NUyA9IDMwMDAwOworCisgICAgcHJpdmF0ZSBTdHJpY3RNb2RlKCkge30KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU0FMTE9XX0RJU0tfV1JJVEUgPSAweDAxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU0FMTE9XX0RJU0tfUkVBRCA9IDB4MDI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElTQUxMT1dfTkVUV09SSyA9IDB4MDQ7CisKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESVNBTExPV19NQVNLID0KKyAgICAgICAgICAgIERJU0FMTE9XX0RJU0tfV1JJVEUgfCBESVNBTExPV19ESVNLX1JFQUQgfCBESVNBTExPV19ORVRXT1JLOworCisgICAgLyoqCisgICAgICogRmxhZyB0byBsb2cgdG8gdGhlIHN5c3RlbSBsb2cuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEVOQUxUWV9MT0cgPSAweDEwOyAgLy8gbm9ybWFsIGFuZHJvaWQudXRpbC5Mb2cKKworICAgIC8qKgorICAgICAqIFNob3cgYW4gYW5ub3lpbmcgZGlhbG9nIHRvIHRoZSB1c2VyLiAgV2lsbCBiZSByYXRlLWxpbWl0ZWQgdG8gYmUgb25seQorICAgICAqIGEgbGl0dGxlIGFubm95aW5nLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFTkFMVFlfRElBTE9HID0gMHgyMDsKKworICAgIC8qKgorICAgICAqIENyYXNoIGhhcmQgaWYgcG9saWN5IGlzIHZpb2xhdGVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFTkFMVFlfREVBVEggPSAweDQwOworCisgICAgLyoqCisgICAgICogTG9nIGEgc3RhY2t0cmFjZSB0byB0aGUgRHJvcEJveCBvbiBwb2xpY3kgdmlvbGF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFTkFMVFlfRFJPUEJPWCA9IDB4ODA7CisKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQRU5BTFRZX01BU0sgPQorICAgICAgICAgICAgUEVOQUxUWV9MT0cgfCBQRU5BTFRZX0RJQUxPRyB8CisgICAgICAgICAgICBQRU5BTFRZX0RST1BCT1ggfCBQRU5BTFRZX0RFQVRIOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgcG9saWN5IGZvciB3aGF0IGFjdGlvbnMgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIGRlbmllZCwKKyAgICAgKiBhcyB3ZWxsIGFzIHRoZSBwZW5hbHR5IGZvciB2aW9sYXRpbmcgdGhlIHBvbGljeS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwb2xpY3lNYXNrIGEgYml0bWFzayBvZiBESVNBTExPV18qIGFuZCBQRU5BTFRZXyogdmFsdWVzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRUaHJlYWRCbG9ja2luZ1BvbGljeShmaW5hbCBpbnQgcG9saWN5TWFzaykgeworICAgICAgICBpZiAocG9saWN5TWFzayA9PSAwKSB7CisgICAgICAgICAgICBCbG9ja0d1YXJkLnNldFRocmVhZFBvbGljeShCbG9ja0d1YXJkLkxBWF9QT0xJQ1kpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEJsb2NrR3VhcmQuUG9saWN5IHBvbGljeSA9IEJsb2NrR3VhcmQuZ2V0VGhyZWFkUG9saWN5KCk7CisgICAgICAgIGlmICghKHBvbGljeSBpbnN0YW5jZW9mIEFuZHJvaWRCbG9ja0d1YXJkUG9saWN5KSkgeworICAgICAgICAgICAgQmxvY2tHdWFyZC5zZXRUaHJlYWRQb2xpY3kobmV3IEFuZHJvaWRCbG9ja0d1YXJkUG9saWN5KHBvbGljeU1hc2spKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFuZHJvaWRCbG9ja0d1YXJkUG9saWN5IGFuZHJvaWRQb2xpY3kgPSAoQW5kcm9pZEJsb2NrR3VhcmRQb2xpY3kpIHBvbGljeTsKKyAgICAgICAgICAgIGFuZHJvaWRQb2xpY3kuc2V0UG9saWN5TWFzayhwb2xpY3lNYXNrKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGJpdG1hc2sgb2YgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgYmxvY2tpbmcgcG9saWN5LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYml0bWFzayBvZiBhbGwgdGhlIERJU0FMTE9XXyogYW5kIFBFTkFMVFlfKiBiaXRzIGN1cnJlbnRseSBlbmFibGVkCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0VGhyZWFkQmxvY2tpbmdQb2xpY3koKSB7CisgICAgICAgIHJldHVybiBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLmdldFBvbGljeU1hc2soKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBBbmRyb2lkQmxvY2tHdWFyZFBvbGljeSBpbXBsZW1lbnRzIEJsb2NrR3VhcmQuUG9saWN5IHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbVBvbGljeU1hc2s7CisKKyAgICAgICAgLy8gTWFwIGZyb20gdmlvbGF0aW9uIHN0YWNrdHJhY2UgaGFzaGNvZGUgLT4gdXB0aW1lTWlsbGlzIG9mCisgICAgICAgIC8vIGxhc3QgdmlvbGF0aW9uLiAgTm8gbG9ja2luZyBuZWVkZWQsIGFzIHRoaXMgaXMgb25seQorICAgICAgICAvLyBhY2Nlc3NlZCBieSB0aGUgc2FtZSB0aHJlYWQuCisgICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxJbnRlZ2VyLCBMb25nPiBtTGFzdFZpb2xhdGlvblRpbWUgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBMb25nPigpOworCisgICAgICAgIHB1YmxpYyBBbmRyb2lkQmxvY2tHdWFyZFBvbGljeShmaW5hbCBpbnQgcG9saWN5TWFzaykgeworICAgICAgICAgICAgbVBvbGljeU1hc2sgPSBwb2xpY3lNYXNrOworICAgICAgICB9CisKKyAgICAgICAgLy8gUGFydCBvZiBCbG9ja0d1YXJkLlBvbGljeSBpbnRlcmZhY2U6CisgICAgICAgIHB1YmxpYyBpbnQgZ2V0UG9saWN5TWFzaygpIHsKKyAgICAgICAgICAgIHJldHVybiBtUG9saWN5TWFzazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFBhcnQgb2YgQmxvY2tHdWFyZC5Qb2xpY3kgaW50ZXJmYWNlOgorICAgICAgICBwdWJsaWMgdm9pZCBvbldyaXRlVG9EaXNrKCkgeworICAgICAgICAgICAgaWYgKChtUG9saWN5TWFzayAmIERJU0FMTE9XX0RJU0tfV1JJVEUpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVWaW9sYXRpb24oRElTQUxMT1dfRElTS19XUklURSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQYXJ0IG9mIEJsb2NrR3VhcmQuUG9saWN5IGludGVyZmFjZToKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWFkRnJvbURpc2soKSB7CisgICAgICAgICAgICBpZiAoKG1Qb2xpY3lNYXNrICYgRElTQUxMT1dfRElTS19SRUFEKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaGFuZGxlVmlvbGF0aW9uKERJU0FMTE9XX0RJU0tfUkVBRCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQYXJ0IG9mIEJsb2NrR3VhcmQuUG9saWN5IGludGVyZmFjZToKKyAgICAgICAgcHVibGljIHZvaWQgb25OZXR3b3JrKCkgeworICAgICAgICAgICAgaWYgKChtUG9saWN5TWFzayAmIERJU0FMTE9XX05FVFdPUkspID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVWaW9sYXRpb24oRElTQUxMT1dfTkVUV09SSyk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRQb2xpY3lNYXNrKGludCBwb2xpY3lNYXNrKSB7CisgICAgICAgICAgICBtUG9saWN5TWFzayA9IHBvbGljeU1hc2s7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgaGFuZGxlVmlvbGF0aW9uKGludCB2aW9sYXRpb25CaXQpIHsKKyAgICAgICAgICAgIGZpbmFsIEJsb2NrR3VhcmQuQmxvY2tHdWFyZFBvbGljeUV4Y2VwdGlvbiB2aW9sYXRpb24gPQorICAgICAgICAgICAgICAgICAgICBuZXcgQmxvY2tHdWFyZC5CbG9ja0d1YXJkUG9saWN5RXhjZXB0aW9uKG1Qb2xpY3lNYXNrLCB2aW9sYXRpb25CaXQpOworICAgICAgICAgICAgdmlvbGF0aW9uLmZpbGxJblN0YWNrVHJhY2UoKTsKKworICAgICAgICAgICAgTG9vcGVyIGxvb3BlciA9IExvb3Blci5teUxvb3BlcigpOworICAgICAgICAgICAgaWYgKGxvb3BlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gV2l0aG91dCBhIExvb3Blciwgd2UncmUgdW5hYmxlIHRvIHRpbWUgaG93IGxvbmcgdGhlCisgICAgICAgICAgICAgICAgLy8gdmlvbGF0aW9uIHRha2VzIHBsYWNlLiAgVGhpcyBjYXNlIHNob3VsZCBiZSByYXJlLAorICAgICAgICAgICAgICAgIC8vIGFzIG1vc3QgdXNlcnMgd2lsbCBjYXJlIGFib3V0IHRpbWluZyB2aW9sYXRpb25zCisgICAgICAgICAgICAgICAgLy8gdGhhdCBoYXBwZW4gb24gdGhlaXIgbWFpbiBVSSB0aHJlYWQuCisgICAgICAgICAgICAgICAgaGFuZGxlVmlvbGF0aW9uV2l0aFRpbWUodmlvbGF0aW9uLCAtMUwgLyogbm8gdGltZSAqLyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE1lc3NhZ2VRdWV1ZSBxdWV1ZSA9IExvb3Blci5teVF1ZXVlKCk7CisgICAgICAgICAgICAgICAgZmluYWwgbG9uZyB2aW9sYXRpb25UaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgcXVldWUuYWRkSWRsZUhhbmRsZXIobmV3IE1lc3NhZ2VRdWV1ZS5JZGxlSGFuZGxlcigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHF1ZXVlSWRsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFmdGVyVmlvbGF0aW9uVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVZpb2xhdGlvbldpdGhUaW1lKHZpb2xhdGlvbiwgYWZ0ZXJWaW9sYXRpb25UaW1lIC0gdmlvbGF0aW9uVGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gcmVtb3ZlIHRoaXMgaWRsZSBoYW5kbGVyIGZyb20gdGhlIGFycmF5CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVZpb2xhdGlvbldpdGhUaW1lKAorICAgICAgICAgICAgQmxvY2tHdWFyZC5CbG9ja0d1YXJkUG9saWN5RXhjZXB0aW9uIHZpb2xhdGlvbiwKKyAgICAgICAgICAgIGxvbmcgZHVyYXRpb25NaWxsaXMpIHsKKworICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSAoZXZlbiBxdWl0ZSBsaWtlbHkpIHRoYXQgbVBvbGljeU1hc2sgaGFzCisgICAgICAgICAgICAvLyBjaGFuZ2VkIGZyb20gdGhlIHRpbWUgdGhlIHZpb2xhdGlvbiBmaXJlZCBhbmQgbm93CisgICAgICAgICAgICAvLyAoYWZ0ZXIgdGhlIHZpb2xhdGluZyBjb2RlIHJhbikgZHVlIHRvIHBlb3BsZSB3aG8KKyAgICAgICAgICAgIC8vIHB1c2gvcG9wIHRlbXBvcmFyeSBwb2xpY3kgaW4gcmVnaW9ucyBvZiBjb2RlLiAgU28gdXNlCisgICAgICAgICAgICAvLyB0aGUgb2xkIHBvbGljeSBoZXJlLgorICAgICAgICAgICAgaW50IHBvbGljeSA9IHZpb2xhdGlvbi5nZXRQb2xpY3koKTsKKworICAgICAgICAgICAgLy8gTm90IF9yZWFsbHlfIGEgQ3Jhc2gsIGJ1dCB3ZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUuLi4KKyAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbyA9CisgICAgICAgICAgICAgICAgICAgIG5ldyBBcHBsaWNhdGlvbkVycm9yUmVwb3J0LkNyYXNoSW5mbyh2aW9sYXRpb24pOworICAgICAgICAgICAgY3Jhc2hJbmZvLmR1cmF0aW9uTWlsbGlzID0gZHVyYXRpb25NaWxsaXM7CisKKyAgICAgICAgICAgIC8vIE5vdCBwZXJmZWN0LCBidXQgZmFzdCBhbmQgZ29vZCBlbm91Z2ggZm9yIGR1cCBzdXBwcmVzc2lvbi4KKyAgICAgICAgICAgIEludGVnZXIgY3Jhc2hGaW5nZXJwcmludCA9IGNyYXNoSW5mby5zdGFja1RyYWNlLmhhc2hDb2RlKCk7CisgICAgICAgICAgICBsb25nIGxhc3RWaW9sYXRpb25UaW1lID0gMDsKKyAgICAgICAgICAgIGlmIChtTGFzdFZpb2xhdGlvblRpbWUuY29udGFpbnNLZXkoY3Jhc2hGaW5nZXJwcmludCkpIHsKKyAgICAgICAgICAgICAgICBsYXN0VmlvbGF0aW9uVGltZSA9IG1MYXN0VmlvbGF0aW9uVGltZS5nZXQoY3Jhc2hGaW5nZXJwcmludCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgbUxhc3RWaW9sYXRpb25UaW1lLnB1dChjcmFzaEZpbmdlcnByaW50LCBub3cpOworICAgICAgICAgICAgbG9uZyB0aW1lU2luY2VMYXN0VmlvbGF0aW9uTWlsbGlzID0gbGFzdFZpb2xhdGlvblRpbWUgPT0gMCA/CisgICAgICAgICAgICAgICAgICAgIExvbmcuTUFYX1ZBTFVFIDogKG5vdyAtIGxhc3RWaW9sYXRpb25UaW1lKTsKKworICAgICAgICAgICAgaWYgKChwb2xpY3kgJiBQRU5BTFRZX0xPRykgIT0gMCAmJgorICAgICAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RWaW9sYXRpb25NaWxsaXMgPiBNSU5fTE9HX0lOVEVSVkFMX01TKSB7CisgICAgICAgICAgICAgICAgaWYgKGR1cmF0aW9uTWlsbGlzICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlN0cmljdE1vZGUgcG9saWN5IHZpb2xhdGlvbjsgfmR1cmF0aW9uPSIgKyBkdXJhdGlvbk1pbGxpcyArICIgbXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2aW9sYXRpb24pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlN0cmljdE1vZGUgcG9saWN5IHZpb2xhdGlvbi4iLCB2aW9sYXRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIHZpb2xhdGlvbk1hc2ssIHBhc3NlZCB0byBBY3Rpdml0eU1hbmFnZXIsIGlzIGEKKyAgICAgICAgICAgIC8vIHN1YnNldCBvZiB0aGUgb3JpZ2luYWwgU3RyaWN0TW9kZSBwb2xpY3kgYml0bWFzaywgd2l0aAorICAgICAgICAgICAgLy8gb25seSB0aGUgYml0IHZpb2xhdGVkIGFuZCBwZW5hbHR5IGJpdHMgdG8gYmUgZXhlY3V0ZWQKKyAgICAgICAgICAgIC8vIGJ5IHRoZSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIHJlbWFpbmluZyBzZXQuCisgICAgICAgICAgICBpbnQgdmlvbGF0aW9uTWFzayA9IDA7CisKKyAgICAgICAgICAgIGlmICgocG9saWN5ICYgUEVOQUxUWV9ESUFMT0cpICE9IDAgJiYKKyAgICAgICAgICAgICAgICB0aW1lU2luY2VMYXN0VmlvbGF0aW9uTWlsbGlzID4gTUlOX0RJQUxPR19JTlRFUlZBTF9NUykgeworICAgICAgICAgICAgICAgIHZpb2xhdGlvbk1hc2sgfD0gUEVOQUxUWV9ESUFMT0c7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgocG9saWN5ICYgUEVOQUxUWV9EUk9QQk9YKSAhPSAwICYmIGxhc3RWaW9sYXRpb25UaW1lID09IDApIHsKKyAgICAgICAgICAgICAgICB2aW9sYXRpb25NYXNrIHw9IFBFTkFMVFlfRFJPUEJPWDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHZpb2xhdGlvbk1hc2sgIT0gMCkgeworICAgICAgICAgICAgICAgIHZpb2xhdGlvbk1hc2sgfD0gdmlvbGF0aW9uLmdldFBvbGljeVZpb2xhdGlvbigpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuaGFuZGxlQXBwbGljYXRpb25TdHJpY3RNb2RlVmlvbGF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZUluaXQuZ2V0QXBwbGljYXRpb25PYmplY3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpb2xhdGlvbk1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQXBwbGljYXRpb25FcnJvclJlcG9ydC5DcmFzaEluZm8odmlvbGF0aW9uKSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIHRyeWluZyB0byBoYW5kbGUgU3RyaWN0TW9kZSB2aW9sYXRpb24iLCBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgocG9saWN5ICYgUEVOQUxUWV9ERUFUSCkgIT0gMCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiU3RyaWN0TW9kZSBwb2xpY3kgdmlvbGF0aW9uIHdpdGggUE9MSUNZX0RFQVRIOyBzaHV0dGluZyBkb3duLiIpOworICAgICAgICAgICAgICAgIFByb2Nlc3Mua2lsbFByb2Nlc3MoUHJvY2Vzcy5teVBpZCgpKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgxMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9waW0vdmNhcmQvVkNhcmRCdWlsZGVyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9waW0vdmNhcmQvVkNhcmRCdWlsZGVyLmphdmEKaW5kZXggMGE2NDE1ZC4uMWRhNmQ3YSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkQnVpbGRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3BpbS92Y2FyZC9WQ2FyZEJ1aWxkZXIuamF2YQpAQCAtNjQyLDIyICs2NDIsMTggQEAKICAgICAgICAgICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkocGhvbmVOdW1iZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbnQgdHlwZSA9ICh0eXBlQXNPYmplY3QgIT0gbnVsbCA/IHR5cGVBc09iamVjdCA6IERFRkFVTFRfUEhPTkVfVFlQRSk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gUGhvbmUuVFlQRV9QQUdFUikgeworCisgICAgICAgICAgICAgICAgLy8gUEFHRVIgbnVtYmVyIG5lZWRzIHVuZm9ybWF0dGVkICJwaG9uZSBudW1iZXIiLgorICAgICAgICAgICAgICAgIGZpbmFsIGludCB0eXBlID0gKHR5cGVBc09iamVjdCAhPSBudWxsID8gdHlwZUFzT2JqZWN0IDogREVGQVVMVF9QSE9ORV9UWVBFKTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBQaG9uZS5UWVBFX1BBR0VSIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBWQ2FyZENvbmZpZy5yZWZyYWluUGhvbmVOdW1iZXJGb3JtYXR0aW5nKG1WQ2FyZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBob25lTGluZUV4aXN0cyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcGhvbmVTZXQuY29udGFpbnMocGhvbmVOdW1iZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZVNldC5hZGQocGhvbmVOdW1iZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVGVsTGluZSh0eXBlLCBsYWJlbCwgcGhvbmVOdW1iZXIsIGlzUHJpbWFyeSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZW50cnkgIm1heSIgaGF2ZSBzZXZlcmFsIHBob25lIG51bWJlcnMgd2hlbiB0aGUgY29udGFjdCBlbnRyeSBpcwotICAgICAgICAgICAgICAgICAgICAvLyBjb3JydXB0ZWQgYmVjYXVzZSBvZiBpdHMgb3JpZ2luYWwgc291cmNlLgotICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAvLyBlLmcuIEkgZW5jb3VudGVyZWQgdGhlIGVudHJ5IGxpa2UgdGhlIGZvbGxvd2luZy4KLSAgICAgICAgICAgICAgICAgICAgLy8gIjExMS0yMjItMzMzMyAoTWlhbWkpXG40NDQtNTU1LTY2NjYgKEJyb3dhcmQ7IDMwNS02NTMtNjc5NiAoTWlhbWkpOyAuLi4iCi0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMga2luZCBvZiBlbnRyeSBpcyBub3QgYWJsZSB0byBiZSBpbnNlcnRlZCB2aWEgQW5kcm9pZCBkZXZpY2VzLCBidXQKLSAgICAgICAgICAgICAgICAgICAgLy8gcG9zc2libGUgaWYgdGhlIHNvdXJjZSBvZiB0aGUgZGF0YSBpcyBhbHJlYWR5IGNvcnJ1cHRlZC4KLSAgICAgICAgICAgICAgICAgICAgTGlzdDxTdHJpbmc+IHBob25lTnVtYmVyTGlzdCA9IHNwbGl0SWZTZXZlcmFsUGhvbmVOdW1iZXJzRXhpc3QocGhvbmVOdW1iZXIpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gcGhvbmVOdW1iZXJMaXN0ID0gc3BsaXRBbmRUcmltUGhvbmVOdW1iZXJzKHBob25lTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBob25lTnVtYmVyTGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC02NzAsNyArNjY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZVNldC5hZGQoYWN0dWFsUGhvbmVOdW1iZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRlbExpbmUodHlwZSwgbGFiZWwsIGZvcm1hdHRlZFBob25lTnVtYmVyLCBpc1ByaW1hcnkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gIC8vIGZvciAoU3RyaW5nIGFjdHVhbFBob25lTnVtYmVyIDogcGhvbmVOdW1iZXJMaXN0KSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02ODIsMTUgKzY3OCwzOCBAQAogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAKLSAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBzcGxpdElmU2V2ZXJhbFBob25lTnVtYmVyc0V4aXN0KGZpbmFsIFN0cmluZyBwaG9uZU51bWJlcikgewotICAgICAgICBMaXN0PFN0cmluZz4gcGhvbmVMaXN0ID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgLyoqCisgICAgICogPHA+CisgICAgICogU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIGV4cHJlc3NpbmcgcGhvbmUgbnVtYmVycyBpbnRvIHNldmVyYWwgc3RyaW5ncywgYW5kIHJlbW92ZQorICAgICAqIHVubmVjZXNzYXJ5IGNoYXJhY3RlcnMgaW5zaWRlIHRoZW0uIFRoZSBzaXplIG9mIGEgcmV0dXJuZWQgbGlzdCBiZWNvbWVzIDEgd2hlbgorICAgICAqIG5vIHNwbGl0IGlzIG5lZWRlZC4KKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogVGhlIGdpdmVuIG51bWJlciAibWF5IiBoYXZlIHNldmVyYWwgcGhvbmUgbnVtYmVycyB3aGVuIHRoZSBjb250YWN0IGVudHJ5IGlzIGNvcnJ1cHRlZAorICAgICAqIGJlY2F1c2Ugb2YgaXRzIG9yaWdpbmFsIHNvdXJjZS4KKyAgICAgKiBlLmcuICIxMTEtMjIyLTMzMzMgKE1pYW1pKVxuNDQ0LTU1NS02NjY2IChCcm93YXJkOyAzMDUtNjUzLTY3OTYgKE1pYW1pKSIKKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogVGhpcyBraW5kIG9mICJwaG9uZSBudW1iZXJzIiB3aWxsIG5vdCBiZSBjcmVhdGVkIHdpdGggQW5kcm9pZCB2Q2FyZCBpbXBsZW1lbnRhdGlvbiwKKyAgICAgKiBidXQgd2UgbWF5IGVuY291bnRlciB0aGVtIGlmIHRoZSBzb3VyY2Ugb2YgdGhlIGlucHV0IGRhdGEgaGFzIGFscmVhZHkgY29ycnVwdGVkCisgICAgICogaW1wbGVtZW50YXRpb24uCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIFRvIGhhbmRsZSB0aGlzIGNhc2UsIHRoaXMgbWV0aG9kIGZpcnN0IHNwbGl0cyBpdHMgaW5wdXQgaW50byBtdWx0aXBsZSBwYXJ0cworICAgICAqIChlLmcuICIxMTEtMjIyLTMzMzMgKE1pYW1pKSIsICI0NDQtNTU1LTY2NjYgKEJyb3dhcmQiLCBhbmQgMzA1NjUzLTY3OTYgKE1pYW1pKSIpIGFuZAorICAgICAqIHJlbW92ZXMgdW5uZWNlc3Nhcnkgc3RyaW5ncyBsaWtlICIoTWlhbWkpIi4KKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogRG8gbm90IGNhbGwgdGhpcyBtZXRob2Qgd2hlbiB0cmltbWluZyBpcyBpbmFwcHJvcHJpYXRlIGZvciBpdHMgcmVjZWl2ZXJzLgorICAgICAqIDwvcD4KKyAgICAgKi8KKyAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBzcGxpdEFuZFRyaW1QaG9uZU51bWJlcnMoZmluYWwgU3RyaW5nIHBob25lTnVtYmVyKSB7CisgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBwaG9uZUxpc3QgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwogICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gcGhvbmVOdW1iZXIubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIGZpbmFsIGNoYXIgY2ggPSBwaG9uZU51bWJlci5jaGFyQXQoaSk7Ci0gICAgICAgICAgICAvLyBUT0RPOiBhZGQgYSB0ZXN0IGNhc2UgZm9yIHN0cmluZyB3aXRoICcrJywgYW5kIGNhcmUgdGhlIG90aGVyIHBvc3NpYmxlIGlzc3VlcwotICAgICAgICAgICAgLy8gd2hpY2ggbWF5IGhhcHBlbiBieSBpZ25vcmluZyBub24tZGlnaXRzIG90aGVyIHRoYW4gJysnLgogICAgICAgICAgICAgaWYgKENoYXJhY3Rlci5pc0RpZ2l0KGNoKSB8fCBjaCA9PSAnKycpIHsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjaCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKChjaCA9PSAnOycgfHwgY2ggPT0gJ1xuJykgJiYgYnVpbGRlci5sZW5ndGgoKSA+IDApIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3BpbS92Y2FyZC9WQ2FyZENvbmZpZy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkQ29uZmlnLmphdmEKaW5kZXggMzQwOWJlNi4uODIxOTg0MCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkQ29uZmlnLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkQ29uZmlnLmphdmEKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogcGFja2FnZSBhbmRyb2lkLnBpbS52Y2FyZDsKIAoraW1wb3J0IGFuZHJvaWQudGVsZXBob255LlBob25lTnVtYmVyVXRpbHM7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIAogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwpAQCAtMTkwLDYgKzE5MSwzMCBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfUkVGUkFJTl9JTUFHRV9FWFBPUlQgPSAweDAyMDAwMDAwOwogCisgICAgLyoqCisgICAgICogPFA+CisgICAgICogVGhlIGZsYWcgaW5kaWNhdGluZyB0aGUgdkNhcmQgY29tcG9zZXIgZG9lcyB0b3VjaCBub3RoaW5nIHRvd2FyZCBwaG9uZSBudW1iZXIgU3RyaW5ncworICAgICAqIGJ1dCBsZWF2ZSBpdCBhcyBpcy4KKyAgICAgKiA8L1A+CisgICAgICogPFA+CisgICAgICogVGhlIHZDYXJkIHNwZWNpZmljYXRpb25zIG1lbnRpb24gbm90aGluZyB0b3dhcmQgcGhvbmUgbnVtYmVycywgd2hpbGUgc29tZSBkZXZpY2VzCisgICAgICogZG8gKHdyb25nbHksIGJ1dCB3aXRoIGlubmV2aXRhYmxlIHJlYXNvbnMpLgorICAgICAqIEZvciBleGFtcGxlLCB0aGVyZSdzIGEgcG9zc2liaWxpdHkgSmFwYW5lc2UgbW9iaWxlIHBob25lcyBhcmUgZXhwZWN0ZWQgdG8gaGF2ZQorICAgICAqIGp1c3QgbnVtYmVycywgaHlwZW5zLCBwbHVzLCBldGMuIGJ1dCBub3QgdXN1YWwgYWxwaGFiZXRzLCB3aGlsZSBVUyBtb2JpbGUgcGhvbmVzCisgICAgICogc2hvdWxkIGdldCBzdWNoIGNoYXJhY3RlcnMuIFRvIG1ha2UgZXhwb3J0ZWQgdkNhcmQgc2ltcGxlIGZvciBleHRlcm5hbCBwYXJzZXJzLAorICAgICAqIHdlIGhhdmUgdXNlZCB7QGxpbmsgUGhvbmVOdW1iZXJVdGlscyNmb3JtYXROdW1iZXIoU3RyaW5nKX0gZHVyaW5nIGV4cG9ydCwgYW5kCisgICAgICogcmVtb3ZlZCB1bm5lY2Vzc2FyeSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgbnVtYmVyIChlLmcuICIxMTEtMjIyLTMzMzMgKE1pYW1pKSIKKyAgICAgKiBiZWNvbWVzICIxMTEtMjIyLTMzMzMiKS4KKyAgICAgKiBVbmZvcnR1bmF0ZSBzaWRlIGVmZmVjdCBvZiB0aGF0IHVzZSB3YXMgc29tZSBjb250cm9sIGNoYXJhY3RlcnMgdXNlZCBpbiB0aGUgb3RoZXIKKyAgICAgKiBhcmVhcyBtYXkgYmUgYmFkbHkgYWZmZWN0ZWQgYnkgdGhlIGZvcm1hdHRpbmcuCisgICAgICogPC9QPgorICAgICAqIDxQPgorICAgICAqIFRoaXMgZmxhZyBkaXNhYmxlcyB0aGF0IGZvcm1hdHRpbmcsIGFmZmVjdGluZyBib3RoIGltcG9ydGVyIGFuZCBleHBvcnRlci4KKyAgICAgKiBJZiB0aGUgdXNlciBpcyBhd2FyZSBvZiBzb21lIHNpZGUgZWZmZWN0cyBkdWUgdG8gdGhlIGltcGxpY2l0IGZvcm1hdHRpbmcsIHVzZSB0aGlzIGZsYWcuCisgICAgICogPC9QPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfUkVGUkFJTl9QSE9ORV9OVU1CRVJfRk9STUFUVElORyA9IDB4MDIwMDAwMDA7CisKICAgICAvLy8vIFRoZSBmb2xsb3dpbmdzIGFyZSBWQ2FyZCB0eXBlcyBhdmFpbGFibGUgZnJvbSBpbXBvcnRlci9leHBvcnRlci4gLy8vLwogCiAgICAgLyoqCkBAIC00MzEsNiArNDU2LDEwIEBACiAgICAgICAgIHJldHVybiBzSmFwYW5lc2VNb2JpbGVUeXBlU2V0LmNvbnRhaW5zKHZjYXJkVHlwZSk7CiAgICAgfQogCisgICAgLyogcGFja2FnZSAqLyBzdGF0aWMgYm9vbGVhbiByZWZyYWluUGhvbmVOdW1iZXJGb3JtYXR0aW5nKGZpbmFsIGludCB2Y2FyZFR5cGUpIHsKKyAgICAgICAgcmV0dXJuICgodmNhcmRUeXBlICYgRkxBR19SRUZSQUlOX1BIT05FX05VTUJFUl9GT1JNQVRUSU5HKSAhPSAwKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gbmVlZHNUb0NvbnZlcnRQaG9uZXRpY1N0cmluZyhmaW5hbCBpbnQgdmNhcmRUeXBlKSB7CiAgICAgICAgIHJldHVybiAoKHZjYXJkVHlwZSAmIEZMQUdfQ09OVkVSVF9QSE9ORVRJQ19OQU1FX1NUUklOR1MpICE9IDApOwogICAgIH0KQEAgLTQ0NSw0ICs0NzQsNCBAQAogCiAgICAgcHJpdmF0ZSBWQ2FyZENvbmZpZygpIHsKICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkRW50cnkuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3BpbS92Y2FyZC9WQ2FyZEVudHJ5LmphdmEKaW5kZXggMTMyNzc3MC4uN2M3ZTliOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkRW50cnkuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9waW0vdmNhcmQvVkNhcmRFbnRyeS5qYXZhCkBAIC00ODgsNyArNDg4LDcgQEAKICAgICAgICAgZmluYWwgU3RyaW5nQnVpbGRlciBidWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICAgZmluYWwgU3RyaW5nIHRyaW1lZCA9IGRhdGEudHJpbSgpOwogICAgICAgICBmaW5hbCBTdHJpbmcgZm9ybWF0dGVkTnVtYmVyOwotICAgICAgICBpZiAodHlwZSA9PSBQaG9uZS5UWVBFX1BBR0VSKSB7CisgICAgICAgIGlmICh0eXBlID09IFBob25lLlRZUEVfUEFHRVIgfHwgVkNhcmRDb25maWcucmVmcmFpblBob25lTnVtYmVyRm9ybWF0dGluZyhtVkNhcmRUeXBlKSkgewogICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyID0gdHJpbWVkOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IHRyaW1lZC5sZW5ndGgoKTsKQEAgLTUwMCw4ICs1MDAsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBVc2UgTkFOUCBpbiBkZWZhdWx0IHdoZW4gdGhlcmUncyBubyBpbmZvcm1hdGlvbiBhYm91dCBsb2NhbGUuCi0gICAgICAgICAgICBmaW5hbCBpbnQgZm9ybWF0dGluZ1R5cGUgPSAoVkNhcmRDb25maWcuaXNKYXBhbmVzZURldmljZShtVkNhcmRUeXBlKSA/Ci0gICAgICAgICAgICAgICAgICAgIFBob25lTnVtYmVyVXRpbHMuRk9STUFUX0pBUEFOIDogUGhvbmVOdW1iZXJVdGlscy5GT1JNQVRfTkFOUCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgZm9ybWF0dGluZ1R5cGUgPSBWQ2FyZFV0aWxzLmdldFBob25lTnVtYmVyRm9ybWF0KG1WQ2FyZFR5cGUpOwogICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyID0gUGhvbmVOdW1iZXJVdGlscy5mb3JtYXROdW1iZXIoYnVpbGRlci50b1N0cmluZygpLCBmb3JtYXR0aW5nVHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgUGhvbmVEYXRhIHBob25lRGF0YSA9IG5ldyBQaG9uZURhdGEodHlwZSwgZm9ybWF0dGVkTnVtYmVyLCBsYWJlbCwgaXNQcmltYXJ5KTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ByZWZlcmVuY2UvRGlhbG9nUHJlZmVyZW5jZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJlZmVyZW5jZS9EaWFsb2dQcmVmZXJlbmNlLmphdmEKaW5kZXggY2M0OGFlYi4uYmJhZDJiNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJlZmVyZW5jZS9EaWFsb2dQcmVmZXJlbmNlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJlZmVyZW5jZS9EaWFsb2dQcmVmZXJlbmNlLmphdmEKQEAgLTMzLDcgKzMzLDYgQEAKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OwogaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CiAKIC8qKgpAQCAtMjc1LDcgKzI3NCw3IEBACiAgICAgcHJvdGVjdGVkIHZvaWQgc2hvd0RpYWxvZyhCdW5kbGUgc3RhdGUpIHsKICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gZ2V0Q29udGV4dCgpOwogCi0gICAgICAgIG1XaGljaEJ1dHRvbkNsaWNrZWQgPSBEaWFsb2dJbnRlcmZhY2UuQlVUVE9OMjsKKyAgICAgICAgbVdoaWNoQnV0dG9uQ2xpY2tlZCA9IERpYWxvZ0ludGVyZmFjZS5CVVRUT05fTkVHQVRJVkU7CiAgICAgICAgIAogICAgICAgICBtQnVpbGRlciA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKGNvbnRleHQpCiAgICAgICAgICAgICAuc2V0VGl0bGUobURpYWxvZ1RpdGxlKQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJvdmlkZXIvTWVkaWFTdG9yZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJvdmlkZXIvTWVkaWFTdG9yZS5qYXZhCmluZGV4IGM5ZDEyNWIuLjQwZWQ5ODAgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3Byb3ZpZGVyL01lZGlhU3RvcmUuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcm92aWRlci9NZWRpYVN0b3JlLmphdmEKQEAgLTE4MTksNCArMTgxOSwxMiBAQAogICAgICAqIE5hbWUgb2YgY3VycmVudCB2b2x1bWUgYmVpbmcgc2Nhbm5lZCBieSB0aGUgbWVkaWEgc2Nhbm5lci4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRURJQV9TQ0FOTkVSX1ZPTFVNRSA9ICJ2b2x1bWUiOworCisgICAgLyoqCisgICAgICogTmFtZSBvZiB0aGUgZmlsZSBzaWduYWxpbmcgdGhlIG1lZGlhIHNjYW5uZXIgdG8gaWdub3JlIG1lZGlhIGluIHRoZSBjb250YWluaW5nIGRpcmVjdG9yeQorICAgICAqIGFuZCBpdHMgc3ViZGlyZWN0b3JpZXMuIERldmVsb3BlcnMgc2hvdWxkIHVzZSB0aGlzIHRvIGF2b2lkIGFwcGxpY2F0aW9uIGdyYXBoaWNzIHNob3dpbmcKKyAgICAgKiB1cCBpbiB0aGUgR2FsbGVyeSBhbmQgbGlrZXdpc2UgcHJldmVudCBhcHBsaWNhdGlvbiBzb3VuZHMgYW5kIG11c2ljIGZyb20gc2hvd2luZyB1cCBpbgorICAgICAqIHRoZSBNdXNpYyBhcHAuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVESUFfSUdOT1JFX0ZJTEVOQU1FID0gIi5ub21lZGlhIjsKIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3Byb3ZpZGVyL1NldHRpbmdzLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9wcm92aWRlci9TZXR0aW5ncy5qYXZhCmluZGV4IGUxMmRmYjAuLjdiYjg5ZjUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3Byb3ZpZGVyL1NldHRpbmdzLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJvdmlkZXIvU2V0dGluZ3MuamF2YQpAQCAtMzU1LDYgKzM1NSwyMSBAQAogICAgICAgICAgICAgImFuZHJvaWQuc2V0dGluZ3MuTUFOQUdFX0FQUExJQ0FUSU9OU19TRVRUSU5HUyI7CiAKICAgICAvKioKKyAgICAgKiBBY3Rpdml0eSBBY3Rpb246IFNob3cgc2NyZWVuIG9mIGRldGFpbHMgYWJvdXQgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uLgorICAgICAqIDxwPgorICAgICAqIEluIHNvbWUgY2FzZXMsIGEgbWF0Y2hpbmcgQWN0aXZpdHkgbWF5IG5vdCBleGlzdCwgc28gZW5zdXJlIHlvdQorICAgICAqIHNhZmVndWFyZCBhZ2FpbnN0IHRoaXMuCisgICAgICogPHA+CisgICAgICogSW5wdXQ6IFRoZSBJbnRlbnQncyBkYXRhIFVSSSBzcGVjaWZpZXMgdGhlIGFwcGxpY2F0aW9uIHBhY2thZ2UgbmFtZQorICAgICAqIHRvIGJlIHNob3duLCB3aXRoIHRoZSAicGFja2FnZSIgc2NoZW1lLiAgVGhhdCBpcyAicGFja2FnZTpjb20ubXkuYXBwIi4KKyAgICAgKiA8cD4KKyAgICAgKiBPdXRwdXQ6IE5vdGhpbmcuCisgICAgICovCisgICAgQFNka0NvbnN0YW50KFNka0NvbnN0YW50VHlwZS5BQ1RJVklUWV9JTlRFTlRfQUNUSU9OKQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElPTl9BUFBMSUNBVElPTl9ERVRBSUxTX1NFVFRJTkdTID0KKyAgICAgICAgICAgICJhbmRyb2lkLnNldHRpbmdzLkFQUExJQ0FUSU9OX0RFVEFJTFNfU0VUVElOR1MiOworCisgICAgLyoqCiAgICAgICogQWN0aXZpdHkgQWN0aW9uOiBTaG93IHNldHRpbmdzIGZvciBzeXN0ZW0gdXBkYXRlIGZ1bmN0aW9uYWxpdHkuCiAgICAgICogPHA+CiAgICAgICogSW4gc29tZSBjYXNlcywgYSBtYXRjaGluZyBBY3Rpdml0eSBtYXkgbm90IGV4aXN0LCBzbyBlbnN1cmUgeW91CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoQTJkcFNlcnZpY2UuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhBMmRwU2VydmljZS5qYXZhCmluZGV4IDg5M2RiMmUuLmE1MmEyMjEgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhBMmRwU2VydmljZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhBMmRwU2VydmljZS5qYXZhCkBAIC0yNyw3ICsyNyw2IEBACiBpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoRGV2aWNlOwogaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aFV1aWQ7CiBpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguSUJsdWV0b290aEEyZHA7Ci1pbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxVdWlkOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwpAQCAtMzUsNiArMzQsNyBAQAogaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKIGltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxVdWlkOwogaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIApAQCAtNTUsOCArNTUsNiBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJMVUVUT09USF9FTkFCTEVEID0gImJsdWV0b290aF9lbmFibGVkIjsKIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNRVNTQUdFX0NPTk5FQ1RfVE8gPSAxOwotCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRZX1NUQVRFID0gIlN0YXRlIjsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTSU5LX1NUQVRFX0RJU0NPTk5FQ1RFRCA9ICJkaXNjb25uZWN0ZWQiOwpAQCAtNzMsNiArNzEsNyBAQAogICAgIHByaXZhdGUgZmluYWwgQmx1ZXRvb3RoU2VydmljZSBtQmx1ZXRvb3RoU2VydmljZTsKICAgICBwcml2YXRlIGZpbmFsIEJsdWV0b290aEFkYXB0ZXIgbUFkYXB0ZXI7CiAgICAgcHJpdmF0ZSBpbnQgICBtVGFyZ2V0QTJkcFN0YXRlOworICAgIHByaXZhdGUgYm9vbGVhbiBtQWRqdXN0ZWRQcmlvcml0eSA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZSBmaW5hbCBCcm9hZGNhc3RSZWNlaXZlciBtUmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CiAgICAgICAgIEBPdmVycmlkZQpAQCAtMTA0LDE2ICsxMDMsNiBAQAogICAgICAgICAgICAgICAgICAgICBzZXRTaW5rUHJpb3JpdHkoZGV2aWNlLCBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX1VOREVGSU5FRCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhCbHVldG9vdGhEZXZpY2UuQUNUSU9OX0FDTF9DT05ORUNURUQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdldFNpbmtQcmlvcml0eShkZXZpY2UpID09IEJsdWV0b290aEEyZHAuUFJJT1JJVFlfQVVUT19DT05ORUNUICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBpc1NpbmtEZXZpY2UoZGV2aWNlKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGRldmljZSBpcyBhIHByZWZlcnJlZCBzaW5rLiBNYWtlIGFuIEEyRFAgY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBhIGRlbGF5LiBXZSBkZWxheSB0byBhdm9pZCBjb25uZWN0aW9uIGNvbGxpc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0byBnaXZlIG90aGVyIHByb2ZpbGVzIHN1Y2ggYXMgSEZQIGEgY2hhbmNlIHRvCi0gICAgICAgICAgICAgICAgICAgIC8vIGNvbm5lY3QgZmlyc3QuCi0gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIE1FU1NBR0VfQ09OTkVDVF9UTywgZGV2aWNlKTsKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG1zZywgNjAwMCk7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aERldmljZS5BQ1RJT05fQUNMX0RJU0NPTk5FQ1RFRCkpIHsKICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1BdWRpb0RldmljZXMuY29udGFpbnNLZXkoZGV2aWNlKSkgewpAQCAtMTg3LDYgKzE3Niw3IEBACiAgICAgICAgIGlmIChtQmx1ZXRvb3RoU2VydmljZS5pc0VuYWJsZWQoKSkKICAgICAgICAgICAgIG9uQmx1ZXRvb3RoRW5hYmxlKCk7CiAgICAgICAgIG1UYXJnZXRBMmRwU3RhdGUgPSAtMTsKKyAgICAgICAgbUJsdWV0b290aFNlcnZpY2Uuc2V0QTJkcFNlcnZpY2UodGhpcyk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xOTgsMjkgKzE4OCw2IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIEhhbmRsZXIgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcigpIHsKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKLSAgICAgICAgICAgIGNhc2UgTUVTU0FHRV9DT05ORUNUX1RPOgotICAgICAgICAgICAgICAgIEJsdWV0b290aERldmljZSBkZXZpY2UgPSAoQmx1ZXRvb3RoRGV2aWNlKSBtc2cub2JqOwotICAgICAgICAgICAgICAgIC8vIGNoZWNrIGJsdWV0b290aCBpcyBzdGlsbCBvbiwgZGV2aWNlIGlzIHN0aWxsIHByZWZlcnJlZCwgYW5kCi0gICAgICAgICAgICAgICAgLy8gbm90aGluZyBpcyBjdXJyZW50bHkgY29ubmVjdGVkCi0gICAgICAgICAgICAgICAgaWYgKG1CbHVldG9vdGhTZXJ2aWNlLmlzRW5hYmxlZCgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRTaW5rUHJpb3JpdHkoZGV2aWNlKSA9PSBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX0FVVE9fQ09OTkVDVCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwU2lua3NNYXRjaGluZ1N0YXRlcyhuZXcgaW50W10gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEEyZHAuU1RBVEVfQ09OTkVDVElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlNUQVRFX0NPTk5FQ1RFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlNUQVRFX1BMQVlJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmx1ZXRvb3RoQTJkcC5TVEFURV9ESVNDT05ORUNUSU5HfSkuc2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJBdXRvLWNvbm5lY3RpbmcgQTJEUCB0byBzaW5rICIgKyBkZXZpY2UpOwotICAgICAgICAgICAgICAgICAgICBjb25uZWN0U2luayhkZXZpY2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KICAgICBwcml2YXRlIGludCBjb252ZXJ0Qmx1ZXpTaW5rU3RyaW5ndG9TdGF0ZShTdHJpbmcgdmFsdWUpIHsKICAgICAgICAgaWYgKHZhbHVlLmVxdWFsc0lnbm9yZUNhc2UoImRpc2Nvbm5lY3RlZCIpKQogICAgICAgICAgICAgcmV0dXJuIEJsdWV0b290aEEyZHAuU1RBVEVfRElTQ09OTkVDVEVEOwpAQCAtMzA4LDEzICsyNzUsMzcgQEAKICAgICAgICAgbUF1ZGlvTWFuYWdlci5zZXRQYXJhbWV0ZXJzKEJMVUVUT09USF9FTkFCTEVEICsgIj1mYWxzZSIpOwogICAgIH0KIAorICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gaXNDb25uZWN0U2lua0ZlYXNpYmxlKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKKyAgICAgICAgaWYgKCFtQmx1ZXRvb3RoU2VydmljZS5pc0VuYWJsZWQoKSB8fCAhaXNTaW5rRGV2aWNlKGRldmljZSkgfHwKKyAgICAgICAgICAgICAgICBnZXRTaW5rUHJpb3JpdHkoZGV2aWNlKSA9PSBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX09GRikgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1BdWRpb0RldmljZXMuZ2V0KGRldmljZSkgPT0gbnVsbCAmJiAhYWRkQXVkaW9TaW5rKGRldmljZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBwYXRoID0gbUJsdWV0b290aFNlcnZpY2UuZ2V0T2JqZWN0UGF0aEZyb21BZGRyZXNzKGRldmljZS5nZXRBZGRyZXNzKCkpOworICAgICAgICAgICAgaWYgKHBhdGggPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBjb25uZWN0U2luayhCbHVldG9vdGhEZXZpY2UgZGV2aWNlKSB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbihCTFVFVE9PVEhfQURNSU5fUEVSTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZWVkIEJMVUVUT09USF9BRE1JTiBwZXJtaXNzaW9uIik7CiAgICAgICAgIGlmIChEQkcpIGxvZygiY29ubmVjdFNpbmsoIiArIGRldmljZSArICIpIik7CisgICAgICAgIGlmICghaXNDb25uZWN0U2lua0ZlYXNpYmxlKGRldmljZSkpIHJldHVybiBmYWxzZTsKIAorICAgICAgICByZXR1cm4gbUJsdWV0b290aFNlcnZpY2UuY29ubmVjdFNpbmsoZGV2aWNlLmdldEFkZHJlc3MoKSk7CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIGNvbm5lY3RTaW5rSW50ZXJuYWwoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgewogICAgICAgICBpZiAoIW1CbHVldG9vdGhTZXJ2aWNlLmlzRW5hYmxlZCgpKSByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgaW50IHN0YXRlID0gbUF1ZGlvRGV2aWNlcy5nZXQoZGV2aWNlKTsKKwogICAgICAgICAvLyBpZ25vcmUgaWYgdGhlcmUgYXJlIGFueSBhY3RpdmUgc2lua3MKICAgICAgICAgaWYgKGxvb2t1cFNpbmtzTWF0Y2hpbmdTdGF0ZXMobmV3IGludFtdIHsKICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlNUQVRFX0NPTk5FQ1RJTkcsCkBAIC0zMjQsMTEgKzMxNSw2IEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobUF1ZGlvRGV2aWNlcy5nZXQoZGV2aWNlKSA9PSBudWxsICYmICFhZGRBdWRpb1NpbmsoZGV2aWNlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpbnQgc3RhdGUgPSBtQXVkaW9EZXZpY2VzLmdldChkZXZpY2UpOwotCiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICAgICAgY2FzZSBCbHVldG9vdGhBMmRwLlNUQVRFX0NPTk5FQ1RFRDoKICAgICAgICAgY2FzZSBCbHVldG9vdGhBMmRwLlNUQVRFX1BMQVlJTkc6CkBAIC0zMzksOCArMzI1LDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIFN0cmluZyBwYXRoID0gbUJsdWV0b290aFNlcnZpY2UuZ2V0T2JqZWN0UGF0aEZyb21BZGRyZXNzKGRldmljZS5nZXRBZGRyZXNzKCkpOwotICAgICAgICBpZiAocGF0aCA9PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIFN0YXRlIGlzIERJU0NPTk5FQ1RFRAogICAgICAgICBoYW5kbGVTaW5rU3RhdGVDaGFuZ2UoZGV2aWNlLCBzdGF0ZSwgQmx1ZXRvb3RoQTJkcC5TVEFURV9DT05ORUNUSU5HKTsKQEAgLTM1MywxMSArMzM3LDcgQEAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIGRpc2Nvbm5lY3RTaW5rKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKLSAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKEJMVUVUT09USF9BRE1JTl9QRVJNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5lZWQgQkxVRVRPT1RIX0FETUlOIHBlcm1pc3Npb24iKTsKLSAgICAgICAgaWYgKERCRykgbG9nKCJkaXNjb25uZWN0U2luaygiICsgZGV2aWNlICsgIikiKTsKLQorICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gaXNEaXNjb25uZWN0U2lua0ZlYXNpYmxlKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKICAgICAgICAgU3RyaW5nIHBhdGggPSBtQmx1ZXRvb3RoU2VydmljZS5nZXRPYmplY3RQYXRoRnJvbUFkZHJlc3MoZGV2aWNlLmdldEFkZHJlc3MoKSk7CiAgICAgICAgIGlmIChwYXRoID09IG51bGwpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3MCw2ICszNTAsMjAgQEAKICAgICAgICAgY2FzZSBCbHVldG9vdGhBMmRwLlNUQVRFX0RJU0NPTk5FQ1RJTkc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gZGlzY29ubmVjdFNpbmsoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgeworICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oQkxVRVRPT1RIX0FETUlOX1BFUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmVlZCBCTFVFVE9PVEhfQURNSU4gcGVybWlzc2lvbiIpOworICAgICAgICBpZiAoREJHKSBsb2coImRpc2Nvbm5lY3RTaW5rKCIgKyBkZXZpY2UgKyAiKSIpOworICAgICAgICBpZiAoIWlzRGlzY29ubmVjdFNpbmtGZWFzaWJsZShkZXZpY2UpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtQmx1ZXRvb3RoU2VydmljZS5kaXNjb25uZWN0U2luayhkZXZpY2UuZ2V0QWRkcmVzcygpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gZGlzY29ubmVjdFNpbmtJbnRlcm5hbChCbHVldG9vdGhEZXZpY2UgZGV2aWNlKSB7CisgICAgICAgIGludCBzdGF0ZSA9IGdldFNpbmtTdGF0ZShkZXZpY2UpOworICAgICAgICBTdHJpbmcgcGF0aCA9IG1CbHVldG9vdGhTZXJ2aWNlLmdldE9iamVjdFBhdGhGcm9tQWRkcmVzcyhkZXZpY2UuZ2V0QWRkcmVzcygpKTsKIAogICAgICAgICAvLyBTdGF0ZSBpcyBDT05ORUNUSU5HIG9yIENPTk5FQ1RFRCBvciBQTEFZSU5HCiAgICAgICAgIGhhbmRsZVNpbmtTdGF0ZUNoYW5nZShkZXZpY2UsIHN0YXRlLCBCbHVldG9vdGhBMmRwLlNUQVRFX0RJU0NPTk5FQ1RJTkcpOwpAQCAtNTA0LDYgKzQ5OCwxMiBAQAogICAgICAgICAgICAgICAgIHNldFNpbmtQcmlvcml0eShkZXZpY2UsIEJsdWV0b290aEEyZHAuUFJJT1JJVFlfQVVUT19DT05ORUNUKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKHN0YXRlID09IEJsdWV0b290aEEyZHAuU1RBVEVfQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBvbmx5IGhhdmUgMSBkZXZpY2Ugd2l0aCBBVVRPX0NPTk5FQ1QgcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAvLyBUbyBiZSBiYWNrd2FyZCBjb21wYXRpYmxlIHNldCBldmVyeW9uZSBlbHNlIHRvIGhhdmUgUFJJT1JJVFlfT04KKyAgICAgICAgICAgICAgICBhZGp1c3RPdGhlclNpbmtQcmlvcml0aWVzKGRldmljZSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCk7CiAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoQmx1ZXRvb3RoRGV2aWNlLkVYVFJBX0RFVklDRSwgZGV2aWNlKTsKICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShCbHVldG9vdGhBMmRwLkVYVFJBX1BSRVZJT1VTX1NJTktfU1RBVEUsIHByZXZTdGF0ZSk7CkBAIC01MTQsNiArNTE0LDE4IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBwcml2YXRlIHZvaWQgYWRqdXN0T3RoZXJTaW5rUHJpb3JpdGllcyhCbHVldG9vdGhEZXZpY2UgY29ubmVjdGVkRGV2aWNlKSB7CisgICAgICAgIGlmICghbUFkanVzdGVkUHJpb3JpdHkpIHsKKyAgICAgICAgICAgIGZvciAoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSA6IG1BZGFwdGVyLmdldEJvbmRlZERldmljZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChnZXRTaW5rUHJpb3JpdHkoZGV2aWNlKSA+PSBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX0FVVE9fQ09OTkVDVCAmJgorICAgICAgICAgICAgICAgICAgICAhZGV2aWNlLmVxdWFscyhjb25uZWN0ZWREZXZpY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFNpbmtQcmlvcml0eShkZXZpY2UsIEJsdWV0b290aEEyZHAuUFJJT1JJVFlfT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1BZGp1c3RlZFByaW9yaXR5ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHByaXZhdGUgc3luY2hyb25pemVkIFNldDxCbHVldG9vdGhEZXZpY2U+IGxvb2t1cFNpbmtzTWF0Y2hpbmdTdGF0ZXMoaW50W10gc3RhdGVzKSB7CiAgICAgICAgIFNldDxCbHVldG9vdGhEZXZpY2U+IHNpbmtzID0gbmV3IEhhc2hTZXQ8Qmx1ZXRvb3RoRGV2aWNlPigpOwogICAgICAgICBpZiAobUF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkpIHsKQEAgLTU1NCw2ICs1NjYsNyBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgaWYgKGRldmljZU9iamVjdFBhdGggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIFN0cmluZyBhZGRyZXNzID0gbUJsdWV0b290aFNlcnZpY2UuZ2V0QWRkcmVzc0Zyb21PYmplY3RQYXRoKGRldmljZU9iamVjdFBhdGgpOworICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzID09IG51bGwpIHJldHVybjsKICAgICAgICAgICAgICAgICBCbHVldG9vdGhEZXZpY2UgZGV2aWNlID0gbUFkYXB0ZXIuZ2V0UmVtb3RlRGV2aWNlKGFkZHJlc3MpOwogICAgICAgICAgICAgICAgIGludCBzdGF0ZSA9IGdldFNpbmtTdGF0ZShkZXZpY2UpOwogICAgICAgICAgICAgICAgIGhhbmRsZVNpbmtTdGF0ZUNoYW5nZShkZXZpY2UsIHN0YXRlLCBCbHVldG9vdGhBMmRwLlNUQVRFX0RJU0NPTk5FQ1RFRCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoRXZlbnRMb29wLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoRXZlbnRMb29wLmphdmEKaW5kZXggYzBlNDYwMC4uZTFkM2YxMyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvc2VydmVyL0JsdWV0b290aEV2ZW50TG9vcC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhFdmVudExvb3AuamF2YQpAQCAtNTY2LDYgKzU2Niw3IEBACiAgICAgICAgICAgICBhdXRob3JpemVkID0gYTJkcC5nZXRTaW5rUHJpb3JpdHkoZGV2aWNlKSA+IEJsdWV0b290aEEyZHAuUFJJT1JJVFlfT0ZGOwogICAgICAgICAgICAgaWYgKGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJBbGxvd2luZyBpbmNvbWluZyBBMkRQIC8gQVZSQ1AgY29ubmVjdGlvbiBmcm9tICIgKyBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtQmx1ZXRvb3RoU2VydmljZS5ub3RpZnlJbmNvbWluZ0EyZHBDb25uZWN0aW9uKGFkZHJlc3MpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJSZWplY3RpbmcgaW5jb21pbmcgQTJEUCAvIEFWUkNQIGNvbm5lY3Rpb24gZnJvbSAiICsgYWRkcmVzcyk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoU2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvc2VydmVyL0JsdWV0b290aFNlcnZpY2UuamF2YQppbmRleCBjMGFmZmQzLi4zMWU1YTdiIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoU2VydmljZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhTZXJ2aWNlLmphdmEKQEAgLTI4LDYgKzI4LDggQEAKIGltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhDbGFzczsKIGltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhEZXZpY2U7CiBpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoSGVhZHNldDsKK2ltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGU7CitpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoUHJvZmlsZVN0YXRlOwogaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aFNvY2tldDsKIGltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhVdWlkOwogaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLklCbHVldG9vdGg7CkBAIC0xMTIsNyArMTE0LDcgQEAKICAgICAgICAgICAgIEJsdWV0b290aFV1aWQuSFNQLAogICAgICAgICAgICAgQmx1ZXRvb3RoVXVpZC5PYmV4T2JqZWN0UHVzaCB9OwogCi0KKyAgICAvLyBUT0RPKCk6IE9wdGltaXplIGFsbCB0aGVzZSBzdHJpbmcgaGFuZGxpbmcKICAgICBwcml2YXRlIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gbUFkYXB0ZXJQcm9wZXJ0aWVzOwogICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxTdHJpbmcsIE1hcDxTdHJpbmcsIFN0cmluZz4+IG1EZXZpY2VQcm9wZXJ0aWVzOwogCkBAIC0xMjIsNiArMTI0LDExIEBACiAKICAgICBwcml2YXRlIGZpbmFsIEhhc2hNYXA8SW50ZWdlciwgSW50ZWdlcj4gbVNlcnZpY2VSZWNvcmRUb1BpZDsKIAorICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxTdHJpbmcsIEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZT4gbURldmljZVByb2ZpbGVTdGF0ZTsKKyAgICBwcml2YXRlIGZpbmFsIEJsdWV0b290aFByb2ZpbGVTdGF0ZSBtQTJkcFByb2ZpbGVTdGF0ZTsKKyAgICBwcml2YXRlIGZpbmFsIEJsdWV0b290aFByb2ZpbGVTdGF0ZSBtSGZwUHJvZmlsZVN0YXRlOworCisgICAgcHJpdmF0ZSBCbHVldG9vdGhBMmRwU2VydmljZSBtQTJkcFNlcnZpY2U7CiAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIG1Eb2NrQWRkcmVzczsKICAgICBwcml2YXRlIFN0cmluZyBtRG9ja1BpbjsKIApAQCAtMTc5LDYgKzE4NiwxMiBAQAogICAgICAgICBtVXVpZEludGVudFRyYWNrZXIgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKICAgICAgICAgbVV1aWRDYWxsYmFja1RyYWNrZXIgPSBuZXcgSGFzaE1hcDxSZW1vdGVTZXJ2aWNlLCBJQmx1ZXRvb3RoQ2FsbGJhY2s+KCk7CiAgICAgICAgIG1TZXJ2aWNlUmVjb3JkVG9QaWQgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPigpOworICAgICAgICBtRGV2aWNlUHJvZmlsZVN0YXRlID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGU+KCk7CisgICAgICAgIG1BMmRwUHJvZmlsZVN0YXRlID0gbmV3IEJsdWV0b290aFByb2ZpbGVTdGF0ZShtQ29udGV4dCwgQmx1ZXRvb3RoUHJvZmlsZVN0YXRlLkEyRFApOworICAgICAgICBtSGZwUHJvZmlsZVN0YXRlID0gbmV3IEJsdWV0b290aFByb2ZpbGVTdGF0ZShtQ29udGV4dCwgQmx1ZXRvb3RoUHJvZmlsZVN0YXRlLkhGUCk7CisKKyAgICAgICAgbUhmcFByb2ZpbGVTdGF0ZS5zdGFydCgpOworICAgICAgICBtQTJkcFByb2ZpbGVTdGF0ZS5zdGFydCgpOwogCiAgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7CiAgICAgICAgIHJlZ2lzdGVyRm9yQWlycGxhbmVNb2RlKGZpbHRlcik7CkBAIC0xODcsNyArMjAwLDcgQEAKICAgICAgICAgbUNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtUmVjZWl2ZXIsIGZpbHRlcik7CiAgICAgfQogCi0gICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIFN0cmluZyByZWFkRG9ja0JsdWV0b290aEFkZHJlc3MoKSB7CisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgU3RyaW5nIHJlYWREb2NrQmx1ZXRvb3RoQWRkcmVzcygpIHsKICAgICAgICAgaWYgKG1Eb2NrQWRkcmVzcyAhPSBudWxsKSByZXR1cm4gbURvY2tBZGRyZXNzOwogCiAgICAgICAgIEJ1ZmZlcmVkSW5wdXRTdHJlYW0gZmlsZSA9IG51bGw7CkBAIC01MzQsNiArNTQ3LDcgQEAKICAgICAgICAgICAgICAgICBtSXNEaXNjb3ZlcmluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIG1Cb25kU3RhdGUucmVhZEF1dG9QYWlyaW5nRGF0YSgpOwogICAgICAgICAgICAgICAgIG1Cb25kU3RhdGUubG9hZEJvbmRTdGF0ZSgpOworICAgICAgICAgICAgICAgIGluaXRQcm9maWxlU3RhdGUoKTsKICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1FU1NBR0VfUkVHSVNURVJfU0RQX1JFQ09SRFMsIDEsIC0xKSwgMzAwMCk7CiAKQEAgLTY0OCw2ICs2NjIsMTIgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBCbHVldG9vdGhEZXZpY2UuQk9ORF9CT05ERUQpIHsKKyAgICAgICAgICAgICAgICBhZGRQcm9maWxlU3RhdGUoYWRkcmVzcyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEJsdWV0b290aERldmljZS5CT05EX05PTkUpIHsKKyAgICAgICAgICAgICAgICByZW1vdmVQcm9maWxlU3RhdGUoYWRkcmVzcyk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChEQkcpIGxvZyhhZGRyZXNzICsgIiBib25kIHN0YXRlICIgKyBvbGRTdGF0ZSArICIgLT4gIiArIHN0YXRlICsgIiAoIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uICsgIikiKTsKICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEJsdWV0b290aERldmljZS5BQ1RJT05fQk9ORF9TVEFURV9DSEFOR0VEKTsKQEAgLTExNjcsNiArMTE4NywxNiBAQAogICAgICAgICBpZiAoIUJsdWV0b290aEFkYXB0ZXIuY2hlY2tCbHVldG9vdGhBZGRyZXNzKGFkZHJlc3MpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0gbURldmljZVByb2ZpbGVTdGF0ZS5nZXQoYWRkcmVzcyk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBzdGF0ZS5zZW5kTWVzc2FnZShCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUuVU5QQUlSKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIHJlbW92ZUJvbmRJbnRlcm5hbChTdHJpbmcgYWRkcmVzcykgewogICAgICAgICByZXR1cm4gcmVtb3ZlRGV2aWNlTmF0aXZlKGdldE9iamVjdFBhdGhGcm9tQWRkcmVzcyhhZGRyZXNzKSk7CiAgICAgfQogCkBAIC0xODM2LDcgKzE4NjYsNyBAQAogICAgICAgICAvLyBSYXRoZXIgbm90IGRvIHRoaXMgZnJvbSBoZXJlLCBidXQgbm8td2hlcmUgZWxzZSBhbmQgSSBuZWVkIHRoaXMKICAgICAgICAgLy8gZHVtcAogICAgICAgICBwdy5wcmludGxuKCJcbi0tSGVhZHNldCBTZXJ2aWNlLS0iKTsKLSAgICAgICAgc3dpdGNoIChoZWFkc2V0LmdldFN0YXRlKCkpIHsKKyAgICAgICAgc3dpdGNoIChoZWFkc2V0LmdldFN0YXRlKGhlYWRzZXQuZ2V0Q3VycmVudEhlYWRzZXQoKSkpIHsKICAgICAgICAgY2FzZSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRDoKICAgICAgICAgICAgIHB3LnByaW50bG4oImdldFN0YXRlKCkgPSBTVEFURV9ESVNDT05ORUNURUQiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTkxOSw2ICsxOTQ5LDExNiBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgbG9nKCJTZXQgTGluayBUaW1lb3V0IHRvOiIgKyBudW1fc2xvdHMgKyAiIHNsb3RzIGZhaWxlZCIpOwogICAgIH0KIAorICAgIHB1YmxpYyBib29sZWFuIGNvbm5lY3RIZWFkc2V0KFN0cmluZyBhZGRyZXNzKSB7CisgICAgICAgIEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZSBzdGF0ZSA9IG1EZXZpY2VQcm9maWxlU3RhdGUuZ2V0KGFkZHJlc3MpOworICAgICAgICBpZiAoc3RhdGUgIT0gbnVsbCkgeworICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBuZXcgTWVzc2FnZSgpOworICAgICAgICAgICAgbXNnLmFyZzEgPSBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUuQ09OTkVDVF9IRlBfT1VUR09JTkc7CisgICAgICAgICAgICBtc2cub2JqID0gc3RhdGU7CisgICAgICAgICAgICBtSGZwUHJvZmlsZVN0YXRlLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdEhlYWRzZXQoU3RyaW5nIGFkZHJlc3MpIHsKKyAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0gbURldmljZVByb2ZpbGVTdGF0ZS5nZXQoYWRkcmVzcyk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgICAgICBtc2cuYXJnMSA9IEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5ESVNDT05ORUNUX0hGUF9PVVRHT0lORzsKKyAgICAgICAgICAgIG1zZy5vYmogPSBzdGF0ZTsKKyAgICAgICAgICAgIG1IZnBQcm9maWxlU3RhdGUuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBjb25uZWN0U2luayhTdHJpbmcgYWRkcmVzcykgeworICAgICAgICBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUgc3RhdGUgPSBtRGV2aWNlUHJvZmlsZVN0YXRlLmdldChhZGRyZXNzKTsKKyAgICAgICAgaWYgKHN0YXRlICE9IG51bGwpIHsKKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIG1zZy5hcmcxID0gQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlLkNPTk5FQ1RfQTJEUF9PVVRHT0lORzsKKyAgICAgICAgICAgIG1zZy5vYmogPSBzdGF0ZTsKKyAgICAgICAgICAgIG1BMmRwUHJvZmlsZVN0YXRlLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdFNpbmsoU3RyaW5nIGFkZHJlc3MpIHsKKyAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0gbURldmljZVByb2ZpbGVTdGF0ZS5nZXQoYWRkcmVzcyk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgICAgICBtc2cuYXJnMSA9IEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5ESVNDT05ORUNUX0EyRFBfT1VUR09JTkc7CisgICAgICAgICAgICBtc2cub2JqID0gc3RhdGU7CisgICAgICAgICAgICBtQTJkcFByb2ZpbGVTdGF0ZS5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIGFkZFByb2ZpbGVTdGF0ZShTdHJpbmcgYWRkcmVzcykgeworICAgICAgICBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUgc3RhdGUgPSBtRGV2aWNlUHJvZmlsZVN0YXRlLmdldChhZGRyZXNzKTsKKyAgICAgICAgaWYgKHN0YXRlICE9IG51bGwpIHJldHVybiBzdGF0ZTsKKworICAgICAgICBzdGF0ZSA9IG5ldyBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUobUNvbnRleHQsIGFkZHJlc3MsIHRoaXMsIG1BMmRwU2VydmljZSk7CisgICAgICAgIG1EZXZpY2VQcm9maWxlU3RhdGUucHV0KGFkZHJlc3MsIHN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3RhcnQoKTsKKyAgICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZW1vdmVQcm9maWxlU3RhdGUoU3RyaW5nIGFkZHJlc3MpIHsKKyAgICAgICAgbURldmljZVByb2ZpbGVTdGF0ZS5yZW1vdmUoYWRkcmVzcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluaXRQcm9maWxlU3RhdGUoKSB7CisgICAgICAgIFN0cmluZyBbXWJvbmRzID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIHZhbCA9IGdldFByb3BlcnR5SW50ZXJuYWwoIkRldmljZXMiKTsKKyAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7CisgICAgICAgICAgICBib25kcyA9IHZhbC5zcGxpdCgiLCIpOworICAgICAgICB9CisgICAgICAgIGlmIChib25kcyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKFN0cmluZyBwYXRoIDogYm9uZHMpIHsKKyAgICAgICAgICAgIFN0cmluZyBhZGRyZXNzID0gZ2V0QWRkcmVzc0Zyb21PYmplY3RQYXRoKHBhdGgpOworICAgICAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0gYWRkUHJvZmlsZVN0YXRlKGFkZHJlc3MpOworICAgICAgICAgICAgLy8gQWxsb3cgOCBzZWNzIGZvciBTRFAgcmVjb3JkcyB0byBnZXQgcmVnaXN0ZXJlZC4KKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIG1zZy53aGF0ID0gQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlLkFVVE9fQ09OTkVDVF9QUk9GSUxFUzsKKyAgICAgICAgICAgIHN0YXRlLnNlbmRNZXNzYWdlRGVsYXllZChtc2csIDgwMDApOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbm90aWZ5SW5jb21pbmdDb25uZWN0aW9uKFN0cmluZyBhZGRyZXNzKSB7CisgICAgICAgIEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZSBzdGF0ZSA9CisgICAgICAgICAgICAgbURldmljZVByb2ZpbGVTdGF0ZS5nZXQoYWRkcmVzcyk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgICAgICBtc2cud2hhdCA9IEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5DT05ORUNUX0hGUF9JTkNPTUlORzsKKyAgICAgICAgICAgIHN0YXRlLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLypwYWNrYWdlKi8gYm9vbGVhbiBub3RpZnlJbmNvbWluZ0EyZHBDb25uZWN0aW9uKFN0cmluZyBhZGRyZXNzKSB7CisgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0KKyAgICAgICAgICAgIG1EZXZpY2VQcm9maWxlU3RhdGUuZ2V0KGFkZHJlc3MpOworICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgbXNnLndoYXQgPSBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUuQ09OTkVDVF9BMkRQX0lOQ09NSU5HOworICAgICAgICAgICBzdGF0ZS5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICB9CisgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qcGFja2FnZSovIHZvaWQgc2V0QTJkcFNlcnZpY2UoQmx1ZXRvb3RoQTJkcFNlcnZpY2UgYTJkcFNlcnZpY2UpIHsKKyAgICAgICAgbUEyZHBTZXJ2aWNlID0gYTJkcFNlcnZpY2U7CisgICAgfQorCiAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBsb2coU3RyaW5nIG1zZykgewogICAgICAgICBMb2cuZChUQUcsIG1zZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvc2VydmljZS93YWxscGFwZXIvV2FsbHBhcGVyU2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvc2VydmljZS93YWxscGFwZXIvV2FsbHBhcGVyU2VydmljZS5qYXZhCmluZGV4IDNkMWQ3ZDYuLjI0OWFkNjIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZpY2Uvd2FsbHBhcGVyL1dhbGxwYXBlclNlcnZpY2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2aWNlL3dhbGxwYXBlci9XYWxscGFwZXJTZXJ2aWNlLmphdmEKQEAgLTE4LDYgKzE4LDcgQEAKIAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLkhhbmRsZXJDYWxsZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5CYXNlSVdpbmRvdzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LkJhc2VJbnB1dEhhbmRsZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5CYXNlU3VyZmFjZUhvbGRlcjsKIAogaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5TZGtDb25zdGFudDsKQEAgLTM5LDYgKzQwLDEwIEBACiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZ1ByaW50ZXI7CiBpbXBvcnQgYW5kcm9pZC52aWV3LkdyYXZpdHk7CiBpbXBvcnQgYW5kcm9pZC52aWV3LklXaW5kb3dTZXNzaW9uOworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dENoYW5uZWw7CitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0SGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSW5wdXRRdWV1ZTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CiBpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OwogaW1wb3J0IGFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyOwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwpAQCAtNDYsNiArNTEsNyBAQAogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3Um9vdDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlckltcGw7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJQb2xpY3k7CiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogCkBAIC0xNDYsNiArMTUyLDcgQEAKICAgICAgICAgZmluYWwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbUxheW91dAogICAgICAgICAgICAgICAgID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKCk7CiAgICAgICAgIElXaW5kb3dTZXNzaW9uIG1TZXNzaW9uOworICAgICAgICBJbnB1dENoYW5uZWwgbUlucHV0Q2hhbm5lbDsKIAogICAgICAgICBmaW5hbCBPYmplY3QgbUxvY2sgPSBuZXcgT2JqZWN0KCk7CiAgICAgICAgIGJvb2xlYW4gbU9mZnNldE1lc3NhZ2VFbnF1ZXVlZDsKQEAgLTIwNSw2ICsyMTIsMzAgQEAKICAgICAgICAgICAgIAogICAgICAgICB9OwogICAgICAgICAKKyAgICAgICAgZmluYWwgSW5wdXRIYW5kbGVyIG1JbnB1dEhhbmRsZXIgPSBuZXcgQmFzZUlucHV0SGFuZGxlcigpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlVG91Y2goTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gTW90aW9uRXZlbnQuQUNUSU9OX01PVkUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVBlbmRpbmdNb3ZlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfVE9VQ0hfRVZFTlQsIG1QZW5kaW5nTW92ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1QZW5kaW5nTW92ZS5yZWN5Y2xlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1QZW5kaW5nTW92ZSA9IGV2ZW50OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUGVuZGluZ01vdmUgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBtQ2FsbGVyLm9idGFpbk1lc3NhZ2VPKE1TR19UT1VDSF9FVkVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoZWRDYWxsYmFjay5ydW4oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAogICAgICAgICBmaW5hbCBCYXNlSVdpbmRvdyBtV2luZG93ID0gbmV3IEJhc2VJV2luZG93KCkgewogICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBvbkRpc3BhdGNoUG9pbnRlcihNb3Rpb25FdmVudCBldmVudCwgbG9uZyBldmVudFRpbWUsCkBAIC00ODcsOCArNTE4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBtTGF5b3V0LnNldFRpdGxlKFdhbGxwYXBlclNlcnZpY2UudGhpcy5nZXRDbGFzcygpLmdldE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtTGF5b3V0LndpbmRvd0FuaW1hdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlLkFuaW1hdGlvbl9XYWxscGFwZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbi5hZGQobVdpbmRvdywgbUxheW91dCwgVmlldy5WSVNJQkxFLCBtQ29udGVudEluc2V0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsID0gbmV3IElucHV0Q2hhbm5lbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgbVNlc3Npb24uYWRkKG1XaW5kb3csIG1MYXlvdXQsIFZpZXcuVklTSUJMRSwgbUNvbnRlbnRJbnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1JbnB1dENoYW5uZWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgbUNyZWF0ZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoV2luZG93TWFuYWdlclBvbGljeS5FTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRRdWV1ZS5yZWdpc3RlcklucHV0Q2hhbm5lbChtSW5wdXRDaGFubmVsLCBtSW5wdXRIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vcGVyLm15UXVldWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLm1TdXJmYWNlTG9jay5sb2NrKCk7CkBAIC01MjIsMjAgKzU2MCwxNCBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdXJmYWNlSG9sZGVyLm1DYWxsYmFja3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1TdXJmYWNlSG9sZGVyLm1DYWxsYmFja3Muc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChOID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MgPSBuZXcgU3VyZmFjZUhvbGRlci5DYWxsYmFja1tOXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXIubUNhbGxiYWNrcy50b0FycmF5KGNhbGxiYWNrcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXIudW5nZXRDYWxsYmFja3MoKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cmZhY2VDcmVhdGluZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Jc0NyZWF0aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy52KFRBRywgIm9uU3VyZmFjZUNyZWF0ZWQoIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3VyZmFjZUhvbGRlciArICIpOiAiICsgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdXJmYWNlQ3JlYXRlZChtU3VyZmFjZUhvbGRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG1TdXJmYWNlSG9sZGVyLmdldENhbGxiYWNrcygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja3MgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgYyA6IGNhbGxiYWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zdXJmYWNlQ3JlYXRlZChtU3VyZmFjZUhvbGRlcik7CkBAIC01NTcsNiArNTg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIik6ICIgKyB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1cmZhY2VDaGFuZ2VkKG1TdXJmYWNlSG9sZGVyLCBtRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1cldpZHRoLCBtQ3VySGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIGNhbGxiYWNrc1tdID0gbVN1cmZhY2VIb2xkZXIuZ2V0Q2FsbGJhY2tzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjIDogY2FsbGJhY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnN1cmZhY2VDaGFuZ2VkKG1TdXJmYWNlSG9sZGVyLCBtRm9ybWF0LApAQCAtNTkyLDYgKzYyNSw3IEBACiAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5zZXRTaXplRnJvbUxheW91dCgpOwogICAgICAgICAgICAgbUluaXRpYWxpemluZyA9IHRydWU7CiAgICAgICAgICAgICBtU2Vzc2lvbiA9IFZpZXdSb290LmdldFdpbmRvd1Nlc3Npb24oZ2V0TWFpbkxvb3BlcigpKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgbVdpbmRvdy5zZXRTZXNzaW9uKG1TZXNzaW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKQEAgLTY5OCwxNCArNzMyLDEyIEBACiAgICAgICAgIHZvaWQgcmVwb3J0U3VyZmFjZURlc3Ryb3llZCgpIHsKICAgICAgICAgICAgIGlmIChtU3VyZmFjZUNyZWF0ZWQpIHsKICAgICAgICAgICAgICAgICBtU3VyZmFjZUNyZWF0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIGNhbGxiYWNrc1tdOwotICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVN1cmZhY2VIb2xkZXIubUNhbGxiYWNrcykgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MgPSBuZXcgU3VyZmFjZUhvbGRlci5DYWxsYmFja1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tQ2FsbGJhY2tzLnNpemUoKV07Ci0gICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLm1DYWxsYmFja3MudG9BcnJheShjYWxsYmFja3MpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgYyA6IGNhbGxiYWNrcykgewotICAgICAgICAgICAgICAgICAgICBjLnN1cmZhY2VEZXN0cm95ZWQobVN1cmZhY2VIb2xkZXIpOworICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLnVuZ2V0Q2FsbGJhY2tzKCk7CisgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG1TdXJmYWNlSG9sZGVyLmdldENhbGxiYWNrcygpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja3MgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgYyA6IGNhbGxiYWNrcykgeworICAgICAgICAgICAgICAgICAgICAgICAgYy5zdXJmYWNlRGVzdHJveWVkKG1TdXJmYWNlSG9sZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy52KFRBRywgIm9uU3VyZmFjZURlc3Ryb3llZCgiCiAgICAgICAgICAgICAgICAgICAgICAgICArIG1TdXJmYWNlSG9sZGVyICsgIik6ICIgKyB0aGlzKTsKQEAgLTczNywxMSArNzY5LDI3IEBACiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cudihUQUcsICJSZW1vdmluZyB3aW5kb3cgYW5kIGRlc3Ryb3lpbmcgc3VyZmFjZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3VyZmFjZUhvbGRlci5nZXRTdXJmYWNlKCkgKyAiIG9mOiAiICsgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoV2luZG93TWFuYWdlclBvbGljeS5FTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUlucHV0Q2hhbm5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRRdWV1ZS51bnJlZ2lzdGVySW5wdXRDaGFubmVsKG1JbnB1dENoYW5uZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbi5yZW1vdmUobVdpbmRvdyk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXIubVN1cmZhY2UucmVsZWFzZSgpOwogICAgICAgICAgICAgICAgIG1DcmVhdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKFdpbmRvd01hbmFnZXJQb2xpY3kuRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgICAgICAgICAvLyBEaXNwb3NlIHRoZSBpbnB1dCBjaGFubmVsIGFmdGVyIHJlbW92aW5nIHRoZSB3aW5kb3cgc28gdGhlIFdpbmRvdyBNYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgIC8vIGRvZXNuJ3QgaW50ZXJwcmV0IHRoZSBpbnB1dCBjaGFubmVsIGJlaW5nIGNsb3NlZCBhcyBhbiBhYm5vcm1hbCB0ZXJtaW5hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1JbnB1dENoYW5uZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0Q2hhbm5lbC5kaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3RleHQvdXRpbC9SZmM4MjJUb2tlbml6ZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3RleHQvdXRpbC9SZmM4MjJUb2tlbml6ZXIuamF2YQppbmRleCA5NTJkODMzLi42OWNmOTNjIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC90ZXh0L3V0aWwvUmZjODIyVG9rZW5pemVyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdGV4dC91dGlsL1JmYzgyMlRva2VuaXplci5qYXZhCkBAIC04NCw4ICs4NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnIicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xcJyAmJiBpICsgMSA8IGN1cnNvcikgewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQodGV4dC5jaGFyQXQoaSArIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGN1cnNvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKHRleHQuY2hhckF0KGkgKyAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpICs9IDI7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmFwcGVuZChjKTsKQEAgLTExMCw4ICsxMTIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuYXBwZW5kKGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjID09ICdcXCcgJiYgaSArIDEgPCBjdXJzb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuYXBwZW5kKHRleHQuY2hhckF0KGkgKyAxKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBjdXJzb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LmFwcGVuZCh0ZXh0LmNoYXJBdChpICsgMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC5hcHBlbmQoYyk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC91dGlsL0Rpc3BsYXlNZXRyaWNzLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC91dGlsL0Rpc3BsYXlNZXRyaWNzLmphdmEKaW5kZXggMjYyOGViNC4uNzZkODEwNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdXRpbC9EaXNwbGF5TWV0cmljcy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3V0aWwvRGlzcGxheU1ldHJpY3MuamF2YQpAQCAtMTM1LDYgKzEzNSw3IEBACiAgICAgICAgICAgICBpbnQgc2NyZWVuTGF5b3V0KSB7CiAgICAgICAgIGJvb2xlYW4gZXhwYW5kYWJsZSA9IGNvbXBhdGliaWxpdHlJbmZvLmlzQ29uZmlndXJlZEV4cGFuZGFibGUoKTsKICAgICAgICAgYm9vbGVhbiBsYXJnZVNjcmVlbnMgPSBjb21wYXRpYmlsaXR5SW5mby5pc0NvbmZpZ3VyZWRMYXJnZVNjcmVlbnMoKTsKKyAgICAgICAgYm9vbGVhbiB4bGFyZ2VTY3JlZW5zID0gY29tcGF0aWJpbGl0eUluZm8uaXNDb25maWd1cmVkWExhcmdlU2NyZWVucygpOwogICAgICAgICAKICAgICAgICAgLy8gTm90ZTogdGhpcyBhc3N1bWUgdGhhdCBjb25maWd1cmF0aW9uIGlzIHVwZGF0ZWQgYmVmb3JlIGNhbGxpbmcKICAgICAgICAgLy8gdXBkYXRlTWV0cmljcyBtZXRob2QuCkBAIC0xNTcsOCArMTU4LDE4IEBACiAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eUluZm8uc2V0TGFyZ2VTY3JlZW5zKGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoIXhsYXJnZVNjcmVlbnMpIHsKKyAgICAgICAgICAgIGlmICgoc2NyZWVuTGF5b3V0JkNvbmZpZ3VyYXRpb24uU0NSRUVOTEFZT1VUX1NJWkVfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgIT0gQ29uZmlndXJhdGlvbi5TQ1JFRU5MQVlPVVRfU0laRV9YTEFSR0UpIHsKKyAgICAgICAgICAgICAgICB4bGFyZ2VTY3JlZW5zID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBzY3JlZW4gc2l6ZSBpcyBub3QgbGFyZ2UuCisgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eUluZm8uc2V0WExhcmdlU2NyZWVucyh0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eUluZm8uc2V0WExhcmdlU2NyZWVucyhmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghZXhwYW5kYWJsZSB8fCAhbGFyZ2VTY3JlZW5zKSB7CisgICAgICAgIGlmICghZXhwYW5kYWJsZSB8fCAoIWxhcmdlU2NyZWVucyAmJiAheGxhcmdlU2NyZWVucykpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBsYXJnZXIgc2NyZWVuIGRldmljZSBhbmQgdGhlIGFwcCBpcyBub3QgCiAgICAgICAgICAgICAvLyBjb21wYXRpYmxlIHdpdGggbGFyZ2Ugc2NyZWVucywgc28gZGlkZGxlIGl0LgogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC91dGlsL0xvZy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdXRpbC9Mb2cuamF2YQppbmRleCBlMTExNjY5Li5kNTc3Yjc0IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC91dGlsL0xvZy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3V0aWwvTG9nLmphdmEKQEAgLTg4LDYgKzg4LDIxIEBACiAgICAgICAgIFRlcnJpYmxlRmFpbHVyZShTdHJpbmcgbXNnLCBUaHJvd2FibGUgY2F1c2UpIHsgc3VwZXIobXNnLCBjYXVzZSk7IH0KICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBJbnRlcmZhY2UgdG8gaGFuZGxlIHRlcnJpYmxlIGZhaWx1cmVzIGZyb20ge0BsaW5rICN3dGYoKX0uCisgICAgICoKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgVGVycmlibGVGYWlsdXJlSGFuZGxlciB7CisgICAgICAgIHZvaWQgb25UZXJyaWJsZUZhaWx1cmUoU3RyaW5nIHRhZywgVGVycmlibGVGYWlsdXJlIHdoYXQpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFRlcnJpYmxlRmFpbHVyZUhhbmRsZXIgc1d0ZkhhbmRsZXIgPSBuZXcgVGVycmlibGVGYWlsdXJlSGFuZGxlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uVGVycmlibGVGYWlsdXJlKFN0cmluZyB0YWcsIFRlcnJpYmxlRmFpbHVyZSB3aGF0KSB7CisgICAgICAgICAgICAgICAgUnVudGltZUluaXQud3RmKHRhZywgd2hhdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKICAgICBwcml2YXRlIExvZygpIHsKICAgICB9CiAKQEAgLTI1NywxMyArMjcyLDI5IEBACiAgICAgICogQHBhcmFtIHRyIEFuIGV4Y2VwdGlvbiB0byBsb2cuICBNYXkgYmUgbnVsbC4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGludCB3dGYoU3RyaW5nIHRhZywgU3RyaW5nIG1zZywgVGhyb3dhYmxlIHRyKSB7Ci0gICAgICAgIHRyID0gbmV3IFRlcnJpYmxlRmFpbHVyZShtc2csIHRyKTsKKyAgICAgICAgVGVycmlibGVGYWlsdXJlIHdoYXQgPSBuZXcgVGVycmlibGVGYWlsdXJlKG1zZywgdHIpOwogICAgICAgICBpbnQgYnl0ZXMgPSBwcmludGxuX25hdGl2ZShMT0dfSURfTUFJTiwgQVNTRVJULCB0YWcsIGdldFN0YWNrVHJhY2VTdHJpbmcodHIpKTsKLSAgICAgICAgUnVudGltZUluaXQud3RmKHRhZywgdHIpOworICAgICAgICBzV3RmSGFuZGxlci5vblRlcnJpYmxlRmFpbHVyZSh0YWcsIHdoYXQpOwogICAgICAgICByZXR1cm4gYnl0ZXM7CiAgICAgfQogCiAgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGVycmlibGUgZmFpbHVyZSBoYW5kbGVyLCBmb3IgdGVzdGluZy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIG9sZCBoYW5kbGVyCisgICAgICoKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVGVycmlibGVGYWlsdXJlSGFuZGxlciBzZXRXdGZIYW5kbGVyKFRlcnJpYmxlRmFpbHVyZUhhbmRsZXIgaGFuZGxlcikgeworICAgICAgICBpZiAoaGFuZGxlciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImhhbmRsZXIgPT0gbnVsbCIpOworICAgICAgICB9CisgICAgICAgIFRlcnJpYmxlRmFpbHVyZUhhbmRsZXIgb2xkSGFuZGxlciA9IHNXdGZIYW5kbGVyOworICAgICAgICBzV3RmSGFuZGxlciA9IGhhbmRsZXI7CisgICAgICAgIHJldHVybiBvbGRIYW5kbGVyOworICAgIH0KKworICAgIC8qKgogICAgICAqIEhhbmR5IGZ1bmN0aW9uIHRvIGdldCBhIGxvZ2dhYmxlIHN0YWNrIHRyYWNlIGZyb20gYSBUaHJvd2FibGUKICAgICAgKiBAcGFyYW0gdHIgQW4gZXhjZXB0aW9uIHRvIGxvZwogICAgICAqLwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JV2luZG93U2Vzc2lvbi5haWRsIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JV2luZG93U2Vzc2lvbi5haWRsCmluZGV4IDAxZjA3ZDYuLjQ2NDdmYjQgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSVdpbmRvd1Nlc3Npb24uYWlkbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lXaW5kb3dTZXNzaW9uLmFpZGwKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWdpb247CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0Q2hhbm5lbDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuSVdpbmRvdzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CiBpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CkBAIC0zMyw2ICszNCw5IEBACiAgKi8KIGludGVyZmFjZSBJV2luZG93U2Vzc2lvbiB7CiAgICAgaW50IGFkZChJV2luZG93IHdpbmRvdywgaW4gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMsCisgICAgICAgICAgICBpbiBpbnQgdmlld1Zpc2liaWxpdHksIG91dCBSZWN0IG91dENvbnRlbnRJbnNldHMsCisgICAgICAgICAgICBvdXQgSW5wdXRDaGFubmVsIG91dElucHV0Q2hhbm5lbCk7CisgICAgaW50IGFkZFdpdGhvdXRJbnB1dENoYW5uZWwoSVdpbmRvdyB3aW5kb3csIGluIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzLAogICAgICAgICAgICAgaW4gaW50IHZpZXdWaXNpYmlsaXR5LCBvdXQgUmVjdCBvdXRDb250ZW50SW5zZXRzKTsKICAgICB2b2lkIHJlbW92ZShJV2luZG93IHdpbmRvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbC5haWRsIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dENoYW5uZWwuYWlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGMwYWE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dENoYW5uZWwuYWlkbApAQCAtMCwwICsxLDIwIEBACisvKiAvL2RldmljZS9qYXZhL2FuZHJvaWQvYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbC5haWRsCisqKgorKiogQ29weXJpZ2h0IDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworcGFja2FnZSBhbmRyb2lkLnZpZXc7CisKK3BhcmNlbGFibGUgSW5wdXRDaGFubmVsOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dENoYW5uZWwuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0YzNjOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsLmphdmEKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGFuZHJvaWQudmlldzsKKworaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsOworaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsYWJsZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKKworLyoqCisgKiBBbiBpbnB1dCBjaGFubmVsIHNwZWNpZmllcyB0aGUgZmlsZSBkZXNjcmlwdG9ycyB1c2VkIHRvIHNlbmQgaW5wdXQgZXZlbnRzIHRvCisgKiBhIHdpbmRvdyBpbiBhbm90aGVyIHByb2Nlc3MuICBJdCBpcyBQYXJjZWxhYmxlIHNvIHRoYXQgaXQgY2FuIGJlIHNlbnQKKyAqIHRvIHRoZSBwcm9jZXNzIHRoYXQgaXMgdG8gcmVjZWl2ZSBldmVudHMuICBPbmx5IG9uZSB0aHJlYWQgc2hvdWxkIGJlIHJlYWRpbmcKKyAqIGZyb20gYW4gSW5wdXRDaGFubmVsIGF0IGEgdGltZS4KKyAqIEBoaWRlCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBJbnB1dENoYW5uZWwgaW1wbGVtZW50cyBQYXJjZWxhYmxlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIklucHV0Q2hhbm5lbCI7CisgICAgCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQYXJjZWxhYmxlLkNyZWF0b3I8SW5wdXRDaGFubmVsPiBDUkVBVE9SCisgICAgICAgICAgICA9IG5ldyBQYXJjZWxhYmxlLkNyZWF0b3I8SW5wdXRDaGFubmVsPigpIHsKKyAgICAgICAgcHVibGljIElucHV0Q2hhbm5lbCBjcmVhdGVGcm9tUGFyY2VsKFBhcmNlbCBzb3VyY2UpIHsKKyAgICAgICAgICAgIElucHV0Q2hhbm5lbCByZXN1bHQgPSBuZXcgSW5wdXRDaGFubmVsKCk7CisgICAgICAgICAgICByZXN1bHQucmVhZEZyb21QYXJjZWwoc291cmNlKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBJbnB1dENoYW5uZWxbXSBuZXdBcnJheShpbnQgc2l6ZSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnB1dENoYW5uZWxbc2l6ZV07CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgIHByaXZhdGUgaW50IG1QdHI7IC8vIHVzZWQgYnkgbmF0aXZlIGNvZGUKKyAgICAKKyAgICBwcml2YXRlIGJvb2xlYW4gbURpc3Bvc2VBZnRlcldyaXRlVG9QYXJjZWw7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIElucHV0Q2hhbm5lbFtdIG5hdGl2ZU9wZW5JbnB1dENoYW5uZWxQYWlyKFN0cmluZyBuYW1lKTsKKyAgICAKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZURpc3Bvc2UoYm9vbGVhbiBmaW5hbGl6ZWQpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlVHJhbnNmZXJUbyhJbnB1dENoYW5uZWwgb3RoZXIpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlUmVhZEZyb21QYXJjZWwoUGFyY2VsIHBhcmNlbCk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVXcml0ZVRvUGFyY2VsKFBhcmNlbCBwYXJjZWwpOworICAgIAorICAgIHByaXZhdGUgbmF0aXZlIFN0cmluZyBuYXRpdmVHZXROYW1lKCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIHVuaW5pdGlhbGl6ZWQgaW5wdXQgY2hhbm5lbC4KKyAgICAgKiBJdCBjYW4gYmUgaW5pdGlhbGl6ZWQgYnkgcmVhZGluZyBmcm9tIGEgUGFyY2VsIG9yIGJ5IHRyYW5zZmVycmluZyB0aGUgc3RhdGUgb2YKKyAgICAgKiBhbm90aGVyIGlucHV0IGNoYW5uZWwgaW50byB0aGlzIG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgSW5wdXRDaGFubmVsKCkgeworICAgIH0KKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHRocm93cyBUaHJvd2FibGUgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmF0aXZlRGlzcG9zZSh0cnVlKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHN1cGVyLmZpbmFsaXplKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyBpbnB1dCBjaGFubmVsIHBhaXIuICBPbmUgY2hhbm5lbCBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIGlucHV0CisgICAgICogZGlzcGF0Y2hlciBhbmQgdGhlIG90aGVyIHRvIHRoZSBhcHBsaWNhdGlvbidzIGlucHV0IHF1ZXVlLgorICAgICAqIEBwYXJhbSBuYW1lIFRoZSBkZXNjcmlwdGl2ZSAobm9uLXVuaXF1ZSkgbmFtZSBvZiB0aGUgY2hhbm5lbCBwYWlyLgorICAgICAqIEByZXR1cm4gQSBwYWlyIG9mIGlucHV0IGNoYW5uZWxzLiAgVGhleSBhcmUgc3ltbWV0cmljIGFuZCBpbmRpc3Rpbmd1aXNoYWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIElucHV0Q2hhbm5lbFtdIG9wZW5JbnB1dENoYW5uZWxQYWlyKFN0cmluZyBuYW1lKSB7CisgICAgICAgIGlmIChuYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm5hbWUgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTbG9nLmQoVEFHLCAiT3BlbmluZyBpbnB1dCBjaGFubmVsIHBhaXIgJyIgKyBuYW1lICsgIiciKTsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZU9wZW5JbnB1dENoYW5uZWxQYWlyKG5hbWUpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBpbnB1dCBjaGFubmVsLgorICAgICAqIEByZXR1cm4gVGhlIGlucHV0IGNoYW5uZWwgbmFtZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIFN0cmluZyBuYW1lID0gbmF0aXZlR2V0TmFtZSgpOworICAgICAgICByZXR1cm4gbmFtZSAhPSBudWxsID8gbmFtZSA6ICJ1bmluaXRpYWxpemVkIjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXNwb3NlcyB0aGUgaW5wdXQgY2hhbm5lbC4KKyAgICAgKiBFeHBsaWNpdGx5IHJlbGVhc2VzIHRoZSByZWZlcmVuY2UgdGhpcyBvYmplY3QgaXMgaG9sZGluZyBvbiB0aGUgaW5wdXQgY2hhbm5lbC4KKyAgICAgKiBXaGVuIGFsbCByZWZlcmVuY2VzIGFyZSByZWxlYXNlZCwgdGhlIGlucHV0IGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZGlzcG9zZSgpIHsKKyAgICAgICAgbmF0aXZlRGlzcG9zZShmYWxzZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRyYW5zZmVycyBvd25lcnNoaXAgb2YgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBpbnB1dCBjaGFubmVsIHRvIGFub3RoZXIKKyAgICAgKiBpbnN0YW5jZSBhbmQgaW52YWxpZGF0ZXMgdGhpcyBpbnN0YW5jZS4gIFRoaXMgaXMgdXNlZCB0byBwYXNzIGFuIGlucHV0IGNoYW5uZWwKKyAgICAgKiBhcyBhbiBvdXQgcGFyYW1ldGVyIGluIGEgYmluZGVyIGNhbGwuCisgICAgICogQHBhcmFtIG90aGVyIFRoZSBvdGhlciBpbnB1dCBjaGFubmVsIGluc3RhbmNlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRyYW5zZmVyVG9CaW5kZXJPdXRQYXJhbWV0ZXIoSW5wdXRDaGFubmVsIG91dFBhcmFtZXRlcikgeworICAgICAgICBpZiAob3V0UGFyYW1ldGVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm91dFBhcmFtZXRlciBtdXN0IG5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5hdGl2ZVRyYW5zZmVyVG8ob3V0UGFyYW1ldGVyKTsKKyAgICAgICAgb3V0UGFyYW1ldGVyLm1EaXNwb3NlQWZ0ZXJXcml0ZVRvUGFyY2VsID0gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGRlc2NyaWJlQ29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBQYXJjZWxhYmxlLkNPTlRFTlRTX0ZJTEVfREVTQ1JJUFRPUjsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgcmVhZEZyb21QYXJjZWwoUGFyY2VsIGluKSB7CisgICAgICAgIGlmIChpbiA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbiBtdXN0IG5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5hdGl2ZVJlYWRGcm9tUGFyY2VsKGluKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgd3JpdGVUb1BhcmNlbChQYXJjZWwgb3V0LCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgaWYgKG91dCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJvdXQgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBuYXRpdmVXcml0ZVRvUGFyY2VsKG91dCk7CisgICAgICAgIAorICAgICAgICBpZiAobURpc3Bvc2VBZnRlcldyaXRlVG9QYXJjZWwpIHsKKyAgICAgICAgICAgIGRpc3Bvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gZ2V0TmFtZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSW5wdXRIYW5kbGVyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lucHV0SGFuZGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNmY2MjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lucHV0SGFuZGxlci5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGFuZHJvaWQudmlldzsKKworLyoqCisgKiBIYW5kbGVzIGlucHV0IG1lc3NhZ2VzIHRoYXQgYXJyaXZlIG9uIGFuIGlucHV0IGNoYW5uZWwuCisgKiBAaGlkZQorICovCitwdWJsaWMgaW50ZXJmYWNlIElucHV0SGFuZGxlciB7CisgICAgLyoqCisgICAgICogSGFuZGxlIGEga2V5IGV2ZW50LgorICAgICAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVlIHRvIGVuc3VyZSB0aGF0IHRoZSBmaW5pc2hlZCBjYWxsYmFjayBpcworICAgICAqIGV2ZW50dWFsbHkgaW52b2tlZCB3aGVuIHRoZSBldmVudCBwcm9jZXNzaW5nIGlzIGZpbmlzaGVkIGFuZCB0aGUgaW5wdXQgc3lzdGVtCisgICAgICogY2FuIHNlbmQgdGhlIG5leHQgZXZlbnQuCisgICAgICogQHBhcmFtIGV2ZW50IFRoZSBrZXkgZXZlbnQgZGF0YS4KKyAgICAgKiBAcGFyYW0gZmluaXNoZWRDYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZXZlbnQgcHJvY2Vzc2luZyBpcyBmaW5pc2hlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVLZXkoS2V5RXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spOworICAgIAorICAgIC8qKgorICAgICAqIEhhbmRsZSBhIHRvdWNoIGV2ZW50LgorICAgICAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVlIHRvIGVuc3VyZSB0aGF0IHRoZSBmaW5pc2hlZCBjYWxsYmFjayBpcworICAgICAqIGV2ZW50dWFsbHkgaW52b2tlZCB3aGVuIHRoZSBldmVudCBwcm9jZXNzaW5nIGlzIGZpbmlzaGVkIGFuZCB0aGUgaW5wdXQgc3lzdGVtCisgICAgICogY2FuIHNlbmQgdGhlIG5leHQgZXZlbnQuCisgICAgICogQHBhcmFtIGV2ZW50IFRoZSBtb3Rpb24gZXZlbnQgZGF0YS4KKyAgICAgKiBAcGFyYW0gZmluaXNoZWRDYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZXZlbnQgcHJvY2Vzc2luZyBpcyBmaW5pc2hlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVUb3VjaChNb3Rpb25FdmVudCBldmVudCwgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjayk7CisgICAgCisgICAgLyoqCisgICAgICogSGFuZGxlIGEgdHJhY2tiYWxsIGV2ZW50LgorICAgICAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVlIHRvIGVuc3VyZSB0aGF0IHRoZSBmaW5pc2hlZCBjYWxsYmFjayBpcworICAgICAqIGV2ZW50dWFsbHkgaW52b2tlZCB3aGVuIHRoZSBldmVudCBwcm9jZXNzaW5nIGlzIGZpbmlzaGVkIGFuZCB0aGUgaW5wdXQgc3lzdGVtCisgICAgICogY2FuIHNlbmQgdGhlIG5leHQgZXZlbnQuCisgICAgICogQHBhcmFtIGV2ZW50IFRoZSBtb3Rpb24gZXZlbnQgZGF0YS4KKyAgICAgKiBAcGFyYW0gZmluaXNoZWRDYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZXZlbnQgcHJvY2Vzc2luZyBpcyBmaW5pc2hlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVUcmFja2JhbGwoTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spOworfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dFF1ZXVlLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lucHV0UXVldWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmVlZTM4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dFF1ZXVlLmphdmEKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGFuZHJvaWQudmlldzsKKworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZVF1ZXVlOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworCisvKioKKyAqIEFuIGlucHV0IHF1ZXVlIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciBhbiBhcHBsaWNhdGlvbiB0byByZWNlaXZlIGluY29taW5nCisgKiBpbnB1dCBldmVudHMuICBDdXJyZW50bHkgb25seSB1c2FibGUgZnJvbSBuYXRpdmUgY29kZS4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIElucHV0UXVldWUgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiSW5wdXRRdWV1ZSI7CisgICAgCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgQ2FsbGJhY2sgeworICAgICAgICB2b2lkIG9uSW5wdXRRdWV1ZUNyZWF0ZWQoSW5wdXRRdWV1ZSBxdWV1ZSk7CisgICAgICAgIHZvaWQgb25JbnB1dFF1ZXVlRGVzdHJveWVkKElucHV0UXVldWUgcXVldWUpOworICAgIH0KKworICAgIGZpbmFsIElucHV0Q2hhbm5lbCBtQ2hhbm5lbDsKKyAgICAKKyAgICAvLyBEZXNjcmliZXMgdGhlIGludGVycHJldGF0aW9uIG9mIGFuIGV2ZW50LgorICAgIC8vIFhYWCBUaGlzIGNvbmNlcHQgaXMgdGVudGF0aXZlLiAgU2VlIGNvbW1lbnRzIGluIGFuZHJvaWQvaW5wdXQuaC4KKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlBVVF9FVkVOVF9OQVRVUkVfS0VZID0gMTsKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlBVVF9FVkVOVF9OQVRVUkVfVE9VQ0ggPSAyOworICAgIC8qKiBAaGlkZSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOUFVUX0VWRU5UX05BVFVSRV9UUkFDS0JBTEwgPSAzOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIE9iamVjdCBzTG9jayA9IG5ldyBPYmplY3QoKTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVSZWdpc3RlcklucHV0Q2hhbm5lbChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsLAorICAgICAgICAgICAgSW5wdXRIYW5kbGVyIGlucHV0SGFuZGxlciwgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVGaW5pc2hlZChsb25nIGZpbmlzaGVkVG9rZW4pOworICAgIAorICAgIC8qKiBAaGlkZSAqLworICAgIHB1YmxpYyBJbnB1dFF1ZXVlKElucHV0Q2hhbm5lbCBjaGFubmVsKSB7CisgICAgICAgIG1DaGFubmVsID0gY2hhbm5lbDsKKyAgICB9CisgICAgCisgICAgLyoqIEBoaWRlICovCisgICAgcHVibGljIElucHV0Q2hhbm5lbCBnZXRJbnB1dENoYW5uZWwoKSB7CisgICAgICAgIHJldHVybiBtQ2hhbm5lbDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIGFuIGlucHV0IGNoYW5uZWwgYW5kIGhhbmRsZXIuCisgICAgICogQHBhcmFtIGlucHV0Q2hhbm5lbCBUaGUgaW5wdXQgY2hhbm5lbCB0byByZWdpc3Rlci4KKyAgICAgKiBAcGFyYW0gaW5wdXRIYW5kbGVyIFRoZSBpbnB1dCBoYW5kbGVyIHRvIGlucHV0IGV2ZW50cyBzZW5kIHRvIHRoZSB0YXJnZXQuCisgICAgICogQHBhcmFtIG1lc3NhZ2VRdWV1ZSBUaGUgbWVzc2FnZSBxdWV1ZSBvbiB3aG9zZSB0aHJlYWQgdGhlIGhhbmRsZXIgc2hvdWxkIGJlIGludm9rZWQuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVnaXN0ZXJJbnB1dENoYW5uZWwoSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCwgSW5wdXRIYW5kbGVyIGlucHV0SGFuZGxlciwKKyAgICAgICAgICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUpIHsKKyAgICAgICAgaWYgKGlucHV0Q2hhbm5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbnB1dENoYW5uZWwgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChpbnB1dEhhbmRsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW5wdXRIYW5kbGVyIG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobWVzc2FnZVF1ZXVlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm1lc3NhZ2VRdWV1ZSBtdXN0IG5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN5bmNocm9uaXplZCAoc0xvY2spIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJSZWdpc3RlcmluZyBpbnB1dCBjaGFubmVsICciICsgaW5wdXRDaGFubmVsICsgIiciKTsKKyAgICAgICAgICAgIG5hdGl2ZVJlZ2lzdGVySW5wdXRDaGFubmVsKGlucHV0Q2hhbm5lbCwgaW5wdXRIYW5kbGVyLCBtZXNzYWdlUXVldWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFVucmVnaXN0ZXJzIGFuIGlucHV0IGNoYW5uZWwuCisgICAgICogRG9lcyBub3RoaW5nIGlmIHRoZSBjaGFubmVsIGlzIG5vdCBjdXJyZW50bHkgcmVnaXN0ZXJlZC4KKyAgICAgKiBAcGFyYW0gaW5wdXRDaGFubmVsIFRoZSBpbnB1dCBjaGFubmVsIHRvIHVucmVnaXN0ZXIuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdW5yZWdpc3RlcklucHV0Q2hhbm5lbChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKSB7CisgICAgICAgIGlmIChpbnB1dENoYW5uZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW5wdXRDaGFubmVsIG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorCisgICAgICAgIHN5bmNocm9uaXplZCAoc0xvY2spIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJVbnJlZ2lzdGVyaW5nIGlucHV0IGNoYW5uZWwgJyIgKyBpbnB1dENoYW5uZWwgKyAiJyIpOworICAgICAgICAgICAgbmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbChpbnB1dENoYW5uZWwpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZGlzcGF0Y2hLZXlFdmVudChJbnB1dEhhbmRsZXIgaW5wdXRIYW5kbGVyLAorICAgICAgICAgICAgS2V5RXZlbnQgZXZlbnQsIGludCBuYXR1cmUsIGxvbmcgZmluaXNoZWRUb2tlbikgeworICAgICAgICBSdW5uYWJsZSBmaW5pc2hlZENhbGxiYWNrID0gbmV3IEZpbmlzaGVkQ2FsbGJhY2soZmluaXNoZWRUb2tlbik7CisgICAgICAgIAorICAgICAgICBpZiAobmF0dXJlID09IElOUFVUX0VWRU5UX05BVFVSRV9LRVkpIHsKKyAgICAgICAgICAgIGlucHV0SGFuZGxlci5oYW5kbGVLZXkoZXZlbnQsIGZpbmlzaGVkQ2FsbGJhY2spOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgIlVuc3VwcG9ydGVkIG5hdHVyZSBmb3Iga2V5IGV2ZW50OiAiICsgbmF0dXJlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZGlzcGF0Y2hNb3Rpb25FdmVudChJbnB1dEhhbmRsZXIgaW5wdXRIYW5kbGVyLAorICAgICAgICAgICAgTW90aW9uRXZlbnQgZXZlbnQsIGludCBuYXR1cmUsIGxvbmcgZmluaXNoZWRUb2tlbikgeworICAgICAgICBSdW5uYWJsZSBmaW5pc2hlZENhbGxiYWNrID0gbmV3IEZpbmlzaGVkQ2FsbGJhY2soZmluaXNoZWRUb2tlbik7CisgICAgICAgIAorICAgICAgICBpZiAobmF0dXJlID09IElOUFVUX0VWRU5UX05BVFVSRV9UT1VDSCkgeworICAgICAgICAgICAgaW5wdXRIYW5kbGVyLmhhbmRsZVRvdWNoKGV2ZW50LCBmaW5pc2hlZENhbGxiYWNrKTsKKyAgICAgICAgfSBlbHNlIGlmIChuYXR1cmUgPT0gSU5QVVRfRVZFTlRfTkFUVVJFX1RSQUNLQkFMTCkgeworICAgICAgICAgICAgaW5wdXRIYW5kbGVyLmhhbmRsZVRyYWNrYmFsbChldmVudCwgZmluaXNoZWRDYWxsYmFjayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAiVW5zdXBwb3J0ZWQgbmF0dXJlIGZvciBtb3Rpb24gZXZlbnQ6ICIgKyBuYXR1cmUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIFRPRE8gY29uc2lkZXIgcmVjeWNsaW5nIGZpbmlzaGVkIGNhbGxiYWNrcyB3aGVuIGRvbmUKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBGaW5pc2hlZENhbGxiYWNrIGltcGxlbWVudHMgUnVubmFibGUgeworICAgICAgICBwcml2YXRlIGxvbmcgbUZpbmlzaGVkVG9rZW47CisgICAgICAgIAorICAgICAgICBwdWJsaWMgRmluaXNoZWRDYWxsYmFjayhsb25nIGZpbmlzaGVkVG9rZW4pIHsKKyAgICAgICAgICAgIG1GaW5pc2hlZFRva2VuID0gZmluaXNoZWRUb2tlbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgc3luY2hyb25pemVkIChzTG9jaykgeworICAgICAgICAgICAgICAgIG5hdGl2ZUZpbmlzaGVkKG1GaW5pc2hlZFRva2VuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuamF2YQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGQ0Zjk3ODcuLjBiZmI2ZDYKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9LZXlFdmVudC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuamF2YQpAQCAtMTIwLDkgKzEyMCwxNCBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWUNPREVfTUVESUFfUkVXSU5EICAgID0gODk7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0VZQ09ERV9NRURJQV9GQVNUX0ZPUldBUkQgPSA5MDsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLRVlDT0RFX01VVEUgICAgICAgICAgICA9IDkxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWUNPREVfUEFHRV9VUCAgICAgICAgID0gOTI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0VZQ09ERV9QQUdFX0RPV04gICAgICAgPSA5MzsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLRVlDT0RFX1BJQ1RTWU1CT0xTICAgICA9IDk0OyAgIC8vIHN3aXRjaCBzeW1ib2wtc2V0cyAoRW1vamksS2FvLW1vamkpCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0VZQ09ERV9TV0lUQ0hfQ0hBUlNFVCAgPSA5NTsgICAvLyBzd2l0Y2ggY2hhci1zZXRzIChLYW5qaSxLYXRha2FuYSkKIAogICAgIC8vIE5PVEU6IElmIHlvdSBhZGQgYSBuZXcga2V5Y29kZSBoZXJlIHlvdSBtdXN0IGFsc28gYWRkIGl0IHRvOgogICAgIC8vICBpc1N5c3RlbSgpCisgICAgLy8gIG5hdGl2ZS9pbmNsdWRlL2FuZHJvaWQva2V5Y29kZXMuaAogICAgIC8vICBmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS91aS9LZXljb2RlTGFiZWxzLmgKICAgICAvLyAgdG9vbHMvcHVwcGV0X21hc3Rlci9QdXBwZXRNYXN0ZXIvbmF2X2tleXMucHkKICAgICAvLyAgZnJhbWV3b3Jrcy9iYXNlL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnMueG1sCkBAIC0xMzUsNyArMTQwLDcgQEAKICAgICAvLyAgdGhvc2UgbmV3IGNvZGVzLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBtYWludGFpbiBhIGNvbnNpc3RlbnQKICAgICAvLyAgc2V0IG9mIGtleSBjb2RlIGRlZmluaXRpb25zIGFjcm9zcyBhbGwgQW5kcm9pZCBkZXZpY2VzLgogICAgCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfS0VZQ09ERSAgICAgICAgICAgPSBLRVlDT0RFX01VVEU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfS0VZQ09ERSAgICAgICAgICAgPSBLRVlDT0RFX1NXSVRDSF9DSEFSU0VUOwogICAgIAogICAgIC8qKgogICAgICAqIEBkZXByZWNhdGVkIFRoZXJlIGFyZSBub3cgbW9yZSB0aGFuIE1BWF9LRVlDT0RFIGtleWNvZGVzLgpAQCAtMTU4LDcgKzE2Myw3IEBACiAgICAgICoga2V5IGNvZGUgaXMgbm90IHsjbGluayB7QGxpbmsgI0tFWUNPREVfVU5LTk9XTn0gdGhlbiB0aGUKICAgICAgKiB7I2xpbmsge0BsaW5rICNnZXRSZXBlYXRDb3VudCgpfSBtZXRob2QgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRpbWVzCiAgICAgICogdGhlIGdpdmVuIGtleSBjb2RlIHNob3VsZCBiZSBleGVjdXRlZC4KLSAgICAgKiBPdGhlcndpc2UsIGlmIHRoZSBrZXkgY29kZSB7QGxpbmsgI0tFWUNPREVfVU5LTk9XTn0sIHRoZW4KKyAgICAgKiBPdGhlcndpc2UsIGlmIHRoZSBrZXkgY29kZSBpcyB7QGxpbmsgI0tFWUNPREVfVU5LTk9XTn0sIHRoZW4KICAgICAgKiB0aGlzIGlzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBhcyByZXR1cm5lZCBieSB7QGxpbmsgI2dldENoYXJhY3RlcnN9LgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFDVElPTl9NVUxUSVBMRSAgICAgICAgID0gMjsKQEAgLTMyNiw3ICszMzEsNyBAQAogICAgIHByaXZhdGUgaW50IG1NZXRhU3RhdGU7CiAgICAgcHJpdmF0ZSBpbnQgbUFjdGlvbjsKICAgICBwcml2YXRlIGludCBtS2V5Q29kZTsKLSAgICBwcml2YXRlIGludCBtU2NhbmNvZGU7CisgICAgcHJpdmF0ZSBpbnQgbVNjYW5Db2RlOwogICAgIHByaXZhdGUgaW50IG1SZXBlYXRDb3VudDsKICAgICBwcml2YXRlIGludCBtRGV2aWNlSWQ7CiAgICAgcHJpdmF0ZSBpbnQgbUZsYWdzOwpAQCAtNDc2LDcgKzQ4MSw3IEBACiAgICAgICAgIG1SZXBlYXRDb3VudCA9IHJlcGVhdDsKICAgICAgICAgbU1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKICAgICAgICAgbURldmljZUlkID0gZGV2aWNlOwotICAgICAgICBtU2NhbmNvZGUgPSBzY2FuY29kZTsKKyAgICAgICAgbVNjYW5Db2RlID0gc2NhbmNvZGU7CiAgICAgfQogCiAgICAgLyoqCkBAIC01MDYsNyArNTExLDcgQEAKICAgICAgICAgbVJlcGVhdENvdW50ID0gcmVwZWF0OwogICAgICAgICBtTWV0YVN0YXRlID0gbWV0YVN0YXRlOwogICAgICAgICBtRGV2aWNlSWQgPSBkZXZpY2U7Ci0gICAgICAgIG1TY2FuY29kZSA9IHNjYW5jb2RlOworICAgICAgICBtU2NhbkNvZGUgPSBzY2FuY29kZTsKICAgICAgICAgbUZsYWdzID0gZmxhZ3M7CiAgICAgfQogCkBAIC01NDMsNyArNTQ4LDcgQEAKICAgICAgICAgbVJlcGVhdENvdW50ID0gb3JpZ0V2ZW50Lm1SZXBlYXRDb3VudDsKICAgICAgICAgbU1ldGFTdGF0ZSA9IG9yaWdFdmVudC5tTWV0YVN0YXRlOwogICAgICAgICBtRGV2aWNlSWQgPSBvcmlnRXZlbnQubURldmljZUlkOwotICAgICAgICBtU2NhbmNvZGUgPSBvcmlnRXZlbnQubVNjYW5jb2RlOworICAgICAgICBtU2NhbkNvZGUgPSBvcmlnRXZlbnQubVNjYW5Db2RlOwogICAgICAgICBtRmxhZ3MgPSBvcmlnRXZlbnQubUZsYWdzOwogICAgICAgICBtQ2hhcmFjdGVycyA9IG9yaWdFdmVudC5tQ2hhcmFjdGVyczsKICAgICB9CkBAIC01NjgsNyArNTczLDcgQEAKICAgICAgICAgbVJlcGVhdENvdW50ID0gbmV3UmVwZWF0OwogICAgICAgICBtTWV0YVN0YXRlID0gb3JpZ0V2ZW50Lm1NZXRhU3RhdGU7CiAgICAgICAgIG1EZXZpY2VJZCA9IG9yaWdFdmVudC5tRGV2aWNlSWQ7Ci0gICAgICAgIG1TY2FuY29kZSA9IG9yaWdFdmVudC5tU2NhbmNvZGU7CisgICAgICAgIG1TY2FuQ29kZSA9IG9yaWdFdmVudC5tU2NhbkNvZGU7CiAgICAgICAgIG1GbGFncyA9IG9yaWdFdmVudC5tRmxhZ3M7CiAgICAgICAgIG1DaGFyYWN0ZXJzID0gb3JpZ0V2ZW50Lm1DaGFyYWN0ZXJzOwogICAgIH0KQEAgLTYyMSw3ICs2MjYsNyBAQAogICAgICAgICBtUmVwZWF0Q291bnQgPSBvcmlnRXZlbnQubVJlcGVhdENvdW50OwogICAgICAgICBtTWV0YVN0YXRlID0gb3JpZ0V2ZW50Lm1NZXRhU3RhdGU7CiAgICAgICAgIG1EZXZpY2VJZCA9IG9yaWdFdmVudC5tRGV2aWNlSWQ7Ci0gICAgICAgIG1TY2FuY29kZSA9IG9yaWdFdmVudC5tU2NhbmNvZGU7CisgICAgICAgIG1TY2FuQ29kZSA9IG9yaWdFdmVudC5tU2NhbkNvZGU7CiAgICAgICAgIG1GbGFncyA9IG9yaWdFdmVudC5tRmxhZ3M7CiAgICAgICAgIC8vIERvbid0IGNvcHkgbUNoYXJhY3RlcnMsIHNpbmNlIG9uZSB3YXkgb3IgdGhlIG90aGVyIHdlJ2xsIGxvc2UgaXQKICAgICAgICAgLy8gd2hlbiBjaGFuZ2luZyB0aGUgYWN0aW9uLgpAQCAtNjcxLDMxICs2NzYsMTIgQEAKICAgICAgKiBUT0RPOiBzaG91bGQgdGhlIGRwYWQga2V5cyBiZSBoZXJlPyAgYXJndWFibHksIGJlY2F1c2UgdGhleSBhbHNvIHNob3VsZG4ndCBiZSBtZW51IHNob3J0Y3V0cwogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzU3lzdGVtKCkgewotICAgICAgICBzd2l0Y2ggKG1LZXlDb2RlKSB7Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9NRU5VOgotICAgICAgICBjYXNlIEtFWUNPREVfU09GVF9SSUdIVDoKLSAgICAgICAgY2FzZSBLRVlDT0RFX0hPTUU6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9CQUNLOgotICAgICAgICBjYXNlIEtFWUNPREVfQ0FMTDoKLSAgICAgICAgY2FzZSBLRVlDT0RFX0VORENBTEw6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9WT0xVTUVfVVA6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9WT0xVTUVfRE9XTjoKLSAgICAgICAgY2FzZSBLRVlDT0RFX01VVEU6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9QT1dFUjoKLSAgICAgICAgY2FzZSBLRVlDT0RFX0hFQURTRVRIT09LOgotICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfUExBWV9QQVVTRToKLSAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX1NUT1A6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9ORVhUOgotICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfUFJFVklPVVM6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9SRVdJTkQ6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9GQVNUX0ZPUldBUkQ6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9DQU1FUkE6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9GT0NVUzoKLSAgICAgICAgY2FzZSBLRVlDT0RFX1NFQVJDSDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBuYXRpdmVfaXNTeXN0ZW1LZXkobUtleUNvZGUpOworICAgIH0KKworICAgIC8qKiBAaGlkZSAqLworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGhhc0RlZmF1bHRBY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuYXRpdmVfaGFzRGVmYXVsdEFjdGlvbihtS2V5Q29kZSk7CiAgICAgfQogCiAKQEAgLTg1Myw3ICs4MzksNyBAQAogICAgICAqIE1vc3RseSB0aGlzIGlzIGhlcmUgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgaW50IGdldFNjYW5Db2RlKCkgewotICAgICAgICByZXR1cm4gbVNjYW5jb2RlOworICAgICAgICByZXR1cm4gbVNjYW5Db2RlOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTE3Nyw3ICsxMTYzLDcgQEAKICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewogICAgICAgICByZXR1cm4gIktleUV2ZW50e2FjdGlvbj0iICsgbUFjdGlvbiArICIgY29kZT0iICsgbUtleUNvZGUKICAgICAgICAgICAgICsgIiByZXBlYXQ9IiArIG1SZXBlYXRDb3VudAotICAgICAgICAgICAgKyAiIG1ldGE9IiArIG1NZXRhU3RhdGUgKyAiIHNjYW5jb2RlPSIgKyBtU2NhbmNvZGUKKyAgICAgICAgICAgICsgIiBtZXRhPSIgKyBtTWV0YVN0YXRlICsgIiBzY2FuY29kZT0iICsgbVNjYW5Db2RlCiAgICAgICAgICAgICArICIgbUZsYWdzPSIgKyBtRmxhZ3MgKyAifSI7CiAgICAgfQogCkBAIC0xMjAyLDcgKzExODgsNyBAQAogICAgICAgICBvdXQud3JpdGVJbnQobVJlcGVhdENvdW50KTsKICAgICAgICAgb3V0LndyaXRlSW50KG1NZXRhU3RhdGUpOwogICAgICAgICBvdXQud3JpdGVJbnQobURldmljZUlkKTsKLSAgICAgICAgb3V0LndyaXRlSW50KG1TY2FuY29kZSk7CisgICAgICAgIG91dC53cml0ZUludChtU2NhbkNvZGUpOwogICAgICAgICBvdXQud3JpdGVJbnQobUZsYWdzKTsKICAgICAgICAgb3V0LndyaXRlTG9uZyhtRG93blRpbWUpOwogICAgICAgICBvdXQud3JpdGVMb25nKG1FdmVudFRpbWUpOwpAQCAtMTIxNCw5ICsxMjAwLDEyIEBACiAgICAgICAgIG1SZXBlYXRDb3VudCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbU1ldGFTdGF0ZSA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbURldmljZUlkID0gaW4ucmVhZEludCgpOwotICAgICAgICBtU2NhbmNvZGUgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIG1TY2FuQ29kZSA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbUZsYWdzID0gaW4ucmVhZEludCgpOwogICAgICAgICBtRG93blRpbWUgPSBpbi5yZWFkTG9uZygpOwogICAgICAgICBtRXZlbnRUaW1lID0gaW4ucmVhZExvbmcoKTsKICAgICB9CisgICAgCisgICAgcHJpdmF0ZSBuYXRpdmUgYm9vbGVhbiBuYXRpdmVfaXNTeXN0ZW1LZXkoaW50IGtleUNvZGUpOworICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX2hhc0RlZmF1bHRBY3Rpb24oaW50IGtleUNvZGUpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9Nb3Rpb25FdmVudC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9Nb3Rpb25FdmVudC5qYXZhCmluZGV4IGQ2NDhlOTYuLmFlOGMyMWQgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvTW90aW9uRXZlbnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L01vdGlvbkV2ZW50LmphdmEKQEAgLTI3LDYgKzI3LDcgQEAKICAqIGl0IGlzIGJlaW5nIHVzZWQgZm9yLgogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgTW90aW9uRXZlbnQgaW1wbGVtZW50cyBQYXJjZWxhYmxlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIE1TX1BFUl9OUyA9IDEwMDAwMDA7CiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfUE9JTlRFUlMgPSBmYWxzZTsKICAgICAKICAgICAvKioKQEAgLTIxOCw1NiArMjE5LDc5IEBACiAgICAgc3RhdGljIHByaXZhdGUgaW50IGdSZWN5Y2xlclVzZWQgPSAwOwogICAgIHN0YXRpYyBwcml2YXRlIE1vdGlvbkV2ZW50IGdSZWN5Y2xlclRvcCA9IG51bGw7CiAKLSAgICBwcml2YXRlIGxvbmcgbURvd25UaW1lOwotICAgIHByaXZhdGUgbG9uZyBtRXZlbnRUaW1lTmFubzsKKyAgICBwcml2YXRlIGxvbmcgbURvd25UaW1lTmFubzsKICAgICBwcml2YXRlIGludCBtQWN0aW9uOwotICAgIHByaXZhdGUgZmxvYXQgbVJhd1g7Ci0gICAgcHJpdmF0ZSBmbG9hdCBtUmF3WTsKKyAgICBwcml2YXRlIGZsb2F0IG1YT2Zmc2V0OworICAgIHByaXZhdGUgZmxvYXQgbVlPZmZzZXQ7CiAgICAgcHJpdmF0ZSBmbG9hdCBtWFByZWNpc2lvbjsKICAgICBwcml2YXRlIGZsb2F0IG1ZUHJlY2lzaW9uOwogICAgIHByaXZhdGUgaW50IG1EZXZpY2VJZDsKICAgICBwcml2YXRlIGludCBtRWRnZUZsYWdzOwogICAgIHByaXZhdGUgaW50IG1NZXRhU3RhdGU7CiAgICAgCi0gICAgLy8gSGVyZSBpcyB0aGUgYWN0dWFsIGV2ZW50IGRhdGEuICBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBhcnJheQotICAgIC8vIGlzIGEgbGl0dGxlIG9kZDogdGhlIGZpcnN0IGVudHJ5IGlzIHRoZSBtb3N0IHJlY2VudCwgYW5kIHRoZSBvbmVzCi0gICAgLy8gZm9sbG93aW5nIGl0IGFyZSB0aGUgaGlzdG9yaWNhbCBkYXRhIGZyb20gb2xkZXN0IHRvIG5ld2VzdC4gIFRoaXMKLSAgICAvLyBhbGxvd3MgdXMgdG8gZWFzaWx5IHJldHJpZXZlIHRoZSBtb3N0IHJlY2VudCBkYXRhLCB3aXRob3V0IGhhdmluZwotICAgIC8vIHRvIGNvcHkgdGhlIGFycmF5cyBldmVyeSB0aW1lIGEgbmV3IHNhbXBsZSBpcyBhZGRlZC4KLSAgICAKICAgICBwcml2YXRlIGludCBtTnVtUG9pbnRlcnM7CiAgICAgcHJpdmF0ZSBpbnQgbU51bVNhbXBsZXM7CisgICAgCisgICAgcHJpdmF0ZSBpbnQgbUxhc3REYXRhU2FtcGxlSW5kZXg7CisgICAgcHJpdmF0ZSBpbnQgbUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXg7CisgICAgCiAgICAgLy8gQXJyYXkgb2YgbU51bVBvaW50ZXJzIHNpemUgb2YgaWRlbnRpZmllcnMgZm9yIGVhY2ggcG9pbnRlciBvZiBkYXRhLgogICAgIHByaXZhdGUgaW50W10gbVBvaW50ZXJJZGVudGlmaWVyczsKKyAgICAKICAgICAvLyBBcnJheSBvZiAobU51bVNhbXBsZXMgKiBtTnVtUG9pbnRlcnMgKiBOVU1fU0FNUExFX0RBVEEpIHNpemUgb2YgZXZlbnQgZGF0YS4KKyAgICAvLyBTYW1wbGVzIGFyZSBvcmRlcmVkIGZyb20gb2xkZXN0IHRvIG5ld2VzdC4KICAgICBwcml2YXRlIGZsb2F0W10gbURhdGFTYW1wbGVzOwotICAgIC8vIEFycmF5IG9mIG1OdW1TYW1wbGVzIHNpemUgb2YgdGltZSBzdGFtcHMuCi0gICAgcHJpdmF0ZSBsb25nW10gbVRpbWVTYW1wbGVzOworICAgIAorICAgIC8vIEFycmF5IG9mIG1OdW1TYW1wbGVzIHNpemUgb2YgZXZlbnQgdGltZSBzdGFtcHMgaW4gbmFub3NlY29uZHMuCisgICAgLy8gU2FtcGxlcyBhcmUgb3JkZXJlZCBmcm9tIG9sZGVzdCB0byBuZXdlc3QuCisgICAgcHJpdmF0ZSBsb25nW10gbUV2ZW50VGltZU5hbm9TYW1wbGVzOwogCiAgICAgcHJpdmF0ZSBNb3Rpb25FdmVudCBtTmV4dDsKICAgICBwcml2YXRlIFJ1bnRpbWVFeGNlcHRpb24gbVJlY3ljbGVkTG9jYXRpb247CiAgICAgcHJpdmF0ZSBib29sZWFuIG1SZWN5Y2xlZDsKIAotICAgIHByaXZhdGUgTW90aW9uRXZlbnQoKSB7Ci0gICAgICAgIG1Qb2ludGVySWRlbnRpZmllcnMgPSBuZXcgaW50W0JBU0VfQVZBSUxfUE9JTlRFUlNdOwotICAgICAgICBtRGF0YVNhbXBsZXMgPSBuZXcgZmxvYXRbQkFTRV9BVkFJTF9QT0lOVEVSUypCQVNFX0FWQUlMX1NBTVBMRVMqTlVNX1NBTVBMRV9EQVRBXTsKLSAgICAgICAgbVRpbWVTYW1wbGVzID0gbmV3IGxvbmdbQkFTRV9BVkFJTF9TQU1QTEVTXTsKKyAgICBwcml2YXRlIE1vdGlvbkV2ZW50KGludCBwb2ludGVyQ291bnQsIGludCBzYW1wbGVDb3VudCkgeworICAgICAgICBtUG9pbnRlcklkZW50aWZpZXJzID0gbmV3IGludFtwb2ludGVyQ291bnRdOworICAgICAgICBtRGF0YVNhbXBsZXMgPSBuZXcgZmxvYXRbcG9pbnRlckNvdW50ICogc2FtcGxlQ291bnQgKiBOVU1fU0FNUExFX0RBVEFdOworICAgICAgICBtRXZlbnRUaW1lTmFub1NhbXBsZXMgPSBuZXcgbG9uZ1tzYW1wbGVDb3VudF07CiAgICAgfQogCi0gICAgc3RhdGljIHByaXZhdGUgTW90aW9uRXZlbnQgb2J0YWluKCkgeworICAgIHN0YXRpYyBwcml2YXRlIE1vdGlvbkV2ZW50IG9idGFpbihpbnQgcG9pbnRlckNvdW50LCBpbnQgc2FtcGxlQ291bnQpIHsKKyAgICAgICAgZmluYWwgTW90aW9uRXZlbnQgZXY7CiAgICAgICAgIHN5bmNocm9uaXplZCAoZ1JlY3ljbGVyTG9jaykgewogICAgICAgICAgICAgaWYgKGdSZWN5Y2xlclRvcCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb3Rpb25FdmVudCgpOworICAgICAgICAgICAgICAgIGlmIChwb2ludGVyQ291bnQgPCBCQVNFX0FWQUlMX1BPSU5URVJTKSB7CisgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJDb3VudCA9IEJBU0VfQVZBSUxfUE9JTlRFUlM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzYW1wbGVDb3VudCA8IEJBU0VfQVZBSUxfU0FNUExFUykgeworICAgICAgICAgICAgICAgICAgICBzYW1wbGVDb3VudCA9IEJBU0VfQVZBSUxfU0FNUExFUzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb3Rpb25FdmVudChwb2ludGVyQ291bnQsIHNhbXBsZUNvdW50KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gZ1JlY3ljbGVyVG9wOworICAgICAgICAgICAgZXYgPSBnUmVjeWNsZXJUb3A7CiAgICAgICAgICAgICBnUmVjeWNsZXJUb3AgPSBldi5tTmV4dDsKLSAgICAgICAgICAgIGdSZWN5Y2xlclVzZWQtLTsKLSAgICAgICAgICAgIGV2Lm1SZWN5Y2xlZExvY2F0aW9uID0gbnVsbDsKLSAgICAgICAgICAgIGV2Lm1SZWN5Y2xlZCA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIGV2OworICAgICAgICAgICAgZ1JlY3ljbGVyVXNlZCAtPSAxOwogICAgICAgICB9CisgICAgICAgIGV2Lm1SZWN5Y2xlZExvY2F0aW9uID0gbnVsbDsKKyAgICAgICAgZXYubVJlY3ljbGVkID0gZmFsc2U7CisgICAgICAgIGV2Lm1OZXh0ID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIGlmIChldi5tUG9pbnRlcklkZW50aWZpZXJzLmxlbmd0aCA8IHBvaW50ZXJDb3VudCkgeworICAgICAgICAgICAgZXYubVBvaW50ZXJJZGVudGlmaWVycyA9IG5ldyBpbnRbcG9pbnRlckNvdW50XTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGV2Lm1FdmVudFRpbWVOYW5vU2FtcGxlcy5sZW5ndGggPCBzYW1wbGVDb3VudCkgeworICAgICAgICAgICAgZXYubUV2ZW50VGltZU5hbm9TYW1wbGVzID0gbmV3IGxvbmdbc2FtcGxlQ291bnRdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmaW5hbCBpbnQgbmVlZGVkRGF0YVNhbXBsZXNMZW5ndGggPSBwb2ludGVyQ291bnQgKiBzYW1wbGVDb3VudCAqIE5VTV9TQU1QTEVfREFUQTsKKyAgICAgICAgaWYgKGV2Lm1EYXRhU2FtcGxlcy5sZW5ndGggPCBuZWVkZWREYXRhU2FtcGxlc0xlbmd0aCkgeworICAgICAgICAgICAgZXYubURhdGFTYW1wbGVzID0gbmV3IGZsb2F0W25lZWRlZERhdGFTYW1wbGVzTGVuZ3RoXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGV2OwogICAgIH0KLQorICAgIAogICAgIC8qKgogICAgICAqIENyZWF0ZSBhIG5ldyBNb3Rpb25FdmVudCwgZmlsbGluZyBpbiBhbGwgb2YgdGhlIGJhc2ljIHZhbHVlcyB0aGF0CiAgICAgICogZGVmaW5lIHRoZSBtb3Rpb24uCkBAIC0zMDEsNDUgKzMyNSwzOSBAQAogICAgIHN0YXRpYyBwdWJsaWMgTW90aW9uRXZlbnQgb2J0YWluTmFubyhsb25nIGRvd25UaW1lLCBsb25nIGV2ZW50VGltZSwgbG9uZyBldmVudFRpbWVOYW5vLAogICAgICAgICAgICAgaW50IGFjdGlvbiwgaW50IHBvaW50ZXJzLCBpbnRbXSBpblBvaW50ZXJJZHMsIGZsb2F0W10gaW5EYXRhLCBpbnQgbWV0YVN0YXRlLAogICAgICAgICAgICAgZmxvYXQgeFByZWNpc2lvbiwgZmxvYXQgeVByZWNpc2lvbiwgaW50IGRldmljZUlkLCBpbnQgZWRnZUZsYWdzKSB7Ci0gICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKCk7CisgICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKHBvaW50ZXJzLCAxKTsKICAgICAgICAgZXYubURldmljZUlkID0gZGV2aWNlSWQ7CiAgICAgICAgIGV2Lm1FZGdlRmxhZ3MgPSBlZGdlRmxhZ3M7Ci0gICAgICAgIGV2Lm1Eb3duVGltZSA9IGRvd25UaW1lOwotICAgICAgICBldi5tRXZlbnRUaW1lTmFubyA9IGV2ZW50VGltZU5hbm87CisgICAgICAgIGV2Lm1Eb3duVGltZU5hbm8gPSBkb3duVGltZSAqIE1TX1BFUl9OUzsKICAgICAgICAgZXYubUFjdGlvbiA9IGFjdGlvbjsKICAgICAgICAgZXYubU1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKLSAgICAgICAgZXYubVJhd1ggPSBpbkRhdGFbU0FNUExFX1hdOwotICAgICAgICBldi5tUmF3WSA9IGluRGF0YVtTQU1QTEVfWV07CisgICAgICAgIGV2Lm1YT2Zmc2V0ID0gMDsKKyAgICAgICAgZXYubVlPZmZzZXQgPSAwOwogICAgICAgICBldi5tWFByZWNpc2lvbiA9IHhQcmVjaXNpb247CiAgICAgICAgIGV2Lm1ZUHJlY2lzaW9uID0geVByZWNpc2lvbjsKKyAgICAgICAgCiAgICAgICAgIGV2Lm1OdW1Qb2ludGVycyA9IHBvaW50ZXJzOwogICAgICAgICBldi5tTnVtU2FtcGxlcyA9IDE7CiAgICAgICAgIAotICAgICAgICBpbnRbXSBwb2ludGVySWRlbnRpZmllcnMgPSBldi5tUG9pbnRlcklkZW50aWZpZXJzOwotICAgICAgICBpZiAocG9pbnRlcklkZW50aWZpZXJzLmxlbmd0aCA8IHBvaW50ZXJzKSB7Ci0gICAgICAgICAgICBldi5tUG9pbnRlcklkZW50aWZpZXJzID0gcG9pbnRlcklkZW50aWZpZXJzID0gbmV3IGludFtwb2ludGVyc107Ci0gICAgICAgIH0KLSAgICAgICAgU3lzdGVtLmFycmF5Y29weShpblBvaW50ZXJJZHMsIDAsIHBvaW50ZXJJZGVudGlmaWVycywgMCwgcG9pbnRlcnMpOworICAgICAgICBldi5tTGFzdERhdGFTYW1wbGVJbmRleCA9IDA7CisgICAgICAgIGV2Lm1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4ID0gMDsKICAgICAgICAgCi0gICAgICAgIGZpbmFsIGludCBORCA9IHBvaW50ZXJzICogTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICBmbG9hdFtdIGRhdGFTYW1wbGVzID0gZXYubURhdGFTYW1wbGVzOwotICAgICAgICBpZiAoZGF0YVNhbXBsZXMubGVuZ3RoIDwgTkQpIHsKLSAgICAgICAgICAgIGV2Lm1EYXRhU2FtcGxlcyA9IGRhdGFTYW1wbGVzID0gbmV3IGZsb2F0W05EXTsKLSAgICAgICAgfQotICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGluRGF0YSwgMCwgZGF0YVNhbXBsZXMsIDAsIE5EKTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShpblBvaW50ZXJJZHMsIDAsIGV2Lm1Qb2ludGVySWRlbnRpZmllcnMsIDAsIHBvaW50ZXJzKTsKICAgICAgICAgCi0gICAgICAgIGV2Lm1UaW1lU2FtcGxlc1swXSA9IGV2ZW50VGltZTsKKyAgICAgICAgZXYubUV2ZW50VGltZU5hbm9TYW1wbGVzWzBdID0gZXZlbnRUaW1lTmFubzsKKyAgICAgICAgCisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoaW5EYXRhLCAwLCBldi5tRGF0YVNhbXBsZXMsIDAsIHBvaW50ZXJzICogTlVNX1NBTVBMRV9EQVRBKTsKIAogICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIHsKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigxMjgpOwogICAgICAgICAgICAgc2IuYXBwZW5kKCJOZXc6Iik7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8cG9pbnRlcnM7IGkrKykgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwb2ludGVyczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIgIyIpOwotICAgICAgICAgICAgICAgIHNiLmFwcGVuZChldi5tUG9pbnRlcklkZW50aWZpZXJzW2ldKTsKKyAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZXYuZ2V0UG9pbnRlcklkKGkpKTsKICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIigiKTsKLSAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZXYubURhdGFTYW1wbGVzWyhpKk5VTV9TQU1QTEVfREFUQSkgKyBTQU1QTEVfWF0pOworICAgICAgICAgICAgICAgIHNiLmFwcGVuZChldi5nZXRYKGkpKTsKICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIiwiKTsKLSAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZXYubURhdGFTYW1wbGVzWyhpKk5VTV9TQU1QTEVfREFUQSkgKyBTQU1QTEVfWV0pOworICAgICAgICAgICAgICAgIHNiLmFwcGVuZChldi5nZXRZKGkpKTsKICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIikiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIExvZy52KCJNb3Rpb25FdmVudCIsIHNiLnRvU3RyaW5nKCkpOwpAQCAtMzgyLDI3ICs0MDAsMzIgQEAKICAgICBzdGF0aWMgcHVibGljIE1vdGlvbkV2ZW50IG9idGFpbihsb25nIGRvd25UaW1lLCBsb25nIGV2ZW50VGltZSwgaW50IGFjdGlvbiwKICAgICAgICAgICAgIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHByZXNzdXJlLCBmbG9hdCBzaXplLCBpbnQgbWV0YVN0YXRlLAogICAgICAgICAgICAgZmxvYXQgeFByZWNpc2lvbiwgZmxvYXQgeVByZWNpc2lvbiwgaW50IGRldmljZUlkLCBpbnQgZWRnZUZsYWdzKSB7Ci0gICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKCk7CisgICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKDEsIDEpOwogICAgICAgICBldi5tRGV2aWNlSWQgPSBkZXZpY2VJZDsKICAgICAgICAgZXYubUVkZ2VGbGFncyA9IGVkZ2VGbGFnczsKLSAgICAgICAgZXYubURvd25UaW1lID0gZG93blRpbWU7Ci0gICAgICAgIGV2Lm1FdmVudFRpbWVOYW5vID0gZXZlbnRUaW1lICogMTAwMDAwMDsKKyAgICAgICAgZXYubURvd25UaW1lTmFubyA9IGRvd25UaW1lICogTVNfUEVSX05TOwogICAgICAgICBldi5tQWN0aW9uID0gYWN0aW9uOwogICAgICAgICBldi5tTWV0YVN0YXRlID0gbWV0YVN0YXRlOworICAgICAgICBldi5tWE9mZnNldCA9IDA7CisgICAgICAgIGV2Lm1ZT2Zmc2V0ID0gMDsKICAgICAgICAgZXYubVhQcmVjaXNpb24gPSB4UHJlY2lzaW9uOwogICAgICAgICBldi5tWVByZWNpc2lvbiA9IHlQcmVjaXNpb247Ci0KKyAgICAgICAgCiAgICAgICAgIGV2Lm1OdW1Qb2ludGVycyA9IDE7CiAgICAgICAgIGV2Lm1OdW1TYW1wbGVzID0gMTsKLSAgICAgICAgaW50W10gcG9pbnRlcklkcyA9IGV2Lm1Qb2ludGVySWRlbnRpZmllcnM7Ci0gICAgICAgIHBvaW50ZXJJZHNbMF0gPSAwOwotICAgICAgICBmbG9hdFtdIGRhdGEgPSBldi5tRGF0YVNhbXBsZXM7Ci0gICAgICAgIGRhdGFbU0FNUExFX1hdID0gZXYubVJhd1ggPSB4OwotICAgICAgICBkYXRhW1NBTVBMRV9ZXSA9IGV2Lm1SYXdZID0geTsKLSAgICAgICAgZGF0YVtTQU1QTEVfUFJFU1NVUkVdID0gcHJlc3N1cmU7Ci0gICAgICAgIGRhdGFbU0FNUExFX1NJWkVdID0gc2l6ZTsKLSAgICAgICAgZXYubVRpbWVTYW1wbGVzWzBdID0gZXZlbnRUaW1lOwotCisgICAgICAgIAorICAgICAgICBldi5tTGFzdERhdGFTYW1wbGVJbmRleCA9IDA7CisgICAgICAgIGV2Lm1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4ID0gMDsKKyAgICAgICAgCisgICAgICAgIGV2Lm1Qb2ludGVySWRlbnRpZmllcnNbMF0gPSAwOworICAgICAgICAKKyAgICAgICAgZXYubUV2ZW50VGltZU5hbm9TYW1wbGVzWzBdID0gZXZlbnRUaW1lICogTVNfUEVSX05TOworICAgICAgICAKKyAgICAgICAgZmxvYXRbXSBkYXRhU2FtcGxlcyA9IGV2Lm1EYXRhU2FtcGxlczsKKyAgICAgICAgZGF0YVNhbXBsZXNbU0FNUExFX1hdID0geDsKKyAgICAgICAgZGF0YVNhbXBsZXNbU0FNUExFX1ldID0geTsKKyAgICAgICAgZGF0YVNhbXBsZXNbU0FNUExFX1BSRVNTVVJFXSA9IHByZXNzdXJlOworICAgICAgICBkYXRhU2FtcGxlc1tTQU1QTEVfU0laRV0gPSBzaXplOwogICAgICAgICByZXR1cm4gZXY7CiAgICAgfQogCkBAIC00MzcsMzMgKzQ2MCwxNiBAQAogICAgICAqIG51bWJlcnMgYXJlIGFyYml0cmFyeSBhbmQgeW91IHNob3VsZG4ndCBkZXBlbmQgb24gdGhlIHZhbHVlcy4KICAgICAgKiBAcGFyYW0gZWRnZUZsYWdzIEEgYml0ZmllbGQgaW5kaWNhdGluZyB3aGljaCBlZGdlcywgaWYgYW55LCB3aGVyZSB0b3VjaGVkIGJ5IHRoaXMKICAgICAgKiBNb3Rpb25FdmVudC4KKyAgICAgKiAKKyAgICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rICNvYnRhaW4obG9uZywgbG9uZywgaW50LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgaW50LCBmbG9hdCwgZmxvYXQsIGludCwgaW50KX0KKyAgICAgKiBpbnN0ZWFkLgogICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgc3RhdGljIHB1YmxpYyBNb3Rpb25FdmVudCBvYnRhaW4obG9uZyBkb3duVGltZSwgbG9uZyBldmVudFRpbWUsIGludCBhY3Rpb24sCiAgICAgICAgICAgICBpbnQgcG9pbnRlcnMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHByZXNzdXJlLCBmbG9hdCBzaXplLCBpbnQgbWV0YVN0YXRlLAogICAgICAgICAgICAgZmxvYXQgeFByZWNpc2lvbiwgZmxvYXQgeVByZWNpc2lvbiwgaW50IGRldmljZUlkLCBpbnQgZWRnZUZsYWdzKSB7Ci0gICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKCk7Ci0gICAgICAgIGV2Lm1EZXZpY2VJZCA9IGRldmljZUlkOwotICAgICAgICBldi5tRWRnZUZsYWdzID0gZWRnZUZsYWdzOwotICAgICAgICBldi5tRG93blRpbWUgPSBkb3duVGltZTsKLSAgICAgICAgZXYubUV2ZW50VGltZU5hbm8gPSBldmVudFRpbWUgKiAxMDAwMDAwOwotICAgICAgICBldi5tQWN0aW9uID0gYWN0aW9uOwotICAgICAgICBldi5tTnVtUG9pbnRlcnMgPSBwb2ludGVyczsKLSAgICAgICAgZXYubU1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKLSAgICAgICAgZXYubVhQcmVjaXNpb24gPSB4UHJlY2lzaW9uOwotICAgICAgICBldi5tWVByZWNpc2lvbiA9IHlQcmVjaXNpb247Ci0KLSAgICAgICAgZXYubU51bVBvaW50ZXJzID0gMTsKLSAgICAgICAgZXYubU51bVNhbXBsZXMgPSAxOwotICAgICAgICBpbnRbXSBwb2ludGVySWRzID0gZXYubVBvaW50ZXJJZGVudGlmaWVyczsKLSAgICAgICAgcG9pbnRlcklkc1swXSA9IDA7Ci0gICAgICAgIGZsb2F0W10gZGF0YSA9IGV2Lm1EYXRhU2FtcGxlczsKLSAgICAgICAgZGF0YVtTQU1QTEVfWF0gPSBldi5tUmF3WCA9IHg7Ci0gICAgICAgIGRhdGFbU0FNUExFX1ldID0gZXYubVJhd1kgPSB5OwotICAgICAgICBkYXRhW1NBTVBMRV9QUkVTU1VSRV0gPSBwcmVzc3VyZTsKLSAgICAgICAgZGF0YVtTQU1QTEVfU0laRV0gPSBzaXplOwotICAgICAgICBldi5tVGltZVNhbXBsZXNbMF0gPSBldmVudFRpbWU7Ci0KLSAgICAgICAgcmV0dXJuIGV2OworICAgICAgICByZXR1cm4gb2J0YWluKGRvd25UaW1lLCBldmVudFRpbWUsIGFjdGlvbiwgeCwgeSwgcHJlc3N1cmUsIHNpemUsCisgICAgICAgICAgICAgICAgbWV0YVN0YXRlLCB4UHJlY2lzaW9uLCB5UHJlY2lzaW9uLCBkZXZpY2VJZCwgZWRnZUZsYWdzKTsKICAgICB9CiAKICAgICAvKioKQEAgLTQ4NSw4OSArNDkxLDM2IEBACiAgICAgICovCiAgICAgc3RhdGljIHB1YmxpYyBNb3Rpb25FdmVudCBvYnRhaW4obG9uZyBkb3duVGltZSwgbG9uZyBldmVudFRpbWUsIGludCBhY3Rpb24sCiAgICAgICAgICAgICBmbG9hdCB4LCBmbG9hdCB5LCBpbnQgbWV0YVN0YXRlKSB7Ci0gICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKCk7Ci0gICAgICAgIGV2Lm1EZXZpY2VJZCA9IDA7Ci0gICAgICAgIGV2Lm1FZGdlRmxhZ3MgPSAwOwotICAgICAgICBldi5tRG93blRpbWUgPSBkb3duVGltZTsKLSAgICAgICAgZXYubUV2ZW50VGltZU5hbm8gPSBldmVudFRpbWUgKiAxMDAwMDAwOwotICAgICAgICBldi5tQWN0aW9uID0gYWN0aW9uOwotICAgICAgICBldi5tTnVtUG9pbnRlcnMgPSAxOwotICAgICAgICBldi5tTWV0YVN0YXRlID0gbWV0YVN0YXRlOwotICAgICAgICBldi5tWFByZWNpc2lvbiA9IDEuMGY7Ci0gICAgICAgIGV2Lm1ZUHJlY2lzaW9uID0gMS4wZjsKLQotICAgICAgICBldi5tTnVtUG9pbnRlcnMgPSAxOwotICAgICAgICBldi5tTnVtU2FtcGxlcyA9IDE7Ci0gICAgICAgIGludFtdIHBvaW50ZXJJZHMgPSBldi5tUG9pbnRlcklkZW50aWZpZXJzOwotICAgICAgICBwb2ludGVySWRzWzBdID0gMDsKLSAgICAgICAgZmxvYXRbXSBkYXRhID0gZXYubURhdGFTYW1wbGVzOwotICAgICAgICBkYXRhW1NBTVBMRV9YXSA9IGV2Lm1SYXdYID0geDsKLSAgICAgICAgZGF0YVtTQU1QTEVfWV0gPSBldi5tUmF3WSA9IHk7Ci0gICAgICAgIGRhdGFbU0FNUExFX1BSRVNTVVJFXSA9IDEuMGY7Ci0gICAgICAgIGRhdGFbU0FNUExFX1NJWkVdID0gMS4wZjsKLSAgICAgICAgZXYubVRpbWVTYW1wbGVzWzBdID0gZXZlbnRUaW1lOwotCi0gICAgICAgIHJldHVybiBldjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBTY2FsZXMgZG93biB0aGUgY29vcmRpbmF0aW9uIG9mIHRoaXMgZXZlbnQgYnkgdGhlIGdpdmVuIHNjYWxlLgotICAgICAqCi0gICAgICogQGhpZGUKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSkgewotICAgICAgICBtUmF3WCAqPSBzY2FsZTsKLSAgICAgICAgbVJhd1kgKj0gc2NhbGU7Ci0gICAgICAgIG1YUHJlY2lzaW9uICo9IHNjYWxlOwotICAgICAgICBtWVByZWNpc2lvbiAqPSBzY2FsZTsKLSAgICAgICAgZmxvYXRbXSBoaXN0b3J5ID0gbURhdGFTYW1wbGVzOwotICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gbU51bVBvaW50ZXJzICogbU51bVNhbXBsZXMgKiBOVU1fU0FNUExFX0RBVEE7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IE5VTV9TQU1QTEVfREFUQSkgewotICAgICAgICAgICAgaGlzdG9yeVtpICsgU0FNUExFX1hdICo9IHNjYWxlOwotICAgICAgICAgICAgaGlzdG9yeVtpICsgU0FNUExFX1ldICo9IHNjYWxlOwotICAgICAgICAgICAgLy8gbm8gbmVlZCB0byBzY2FsZSBwcmVzc3VyZQotICAgICAgICAgICAgaGlzdG9yeVtpICsgU0FNUExFX1NJWkVdICo9IHNjYWxlOyAgICAvLyBUT0RPOiBzcXVhcmUgdGhpcz8KLSAgICAgICAgfQorICAgICAgICByZXR1cm4gb2J0YWluKGRvd25UaW1lLCBldmVudFRpbWUsIGFjdGlvbiwgeCwgeSwgMS4wZiwgMS4wZiwKKyAgICAgICAgICAgICAgICBtZXRhU3RhdGUsIDEuMGYsIDEuMGYsIDAsIDApOwogICAgIH0KIAogICAgIC8qKgogICAgICAqIENyZWF0ZSBhIG5ldyBNb3Rpb25FdmVudCwgY29weWluZyBmcm9tIGFuIGV4aXN0aW5nIG9uZS4KICAgICAgKi8KICAgICBzdGF0aWMgcHVibGljIE1vdGlvbkV2ZW50IG9idGFpbihNb3Rpb25FdmVudCBvKSB7Ci0gICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKCk7CisgICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKG8ubU51bVBvaW50ZXJzLCBvLm1OdW1TYW1wbGVzKTsKICAgICAgICAgZXYubURldmljZUlkID0gby5tRGV2aWNlSWQ7CiAgICAgICAgIGV2Lm1FZGdlRmxhZ3MgPSBvLm1FZGdlRmxhZ3M7Ci0gICAgICAgIGV2Lm1Eb3duVGltZSA9IG8ubURvd25UaW1lOwotICAgICAgICBldi5tRXZlbnRUaW1lTmFubyA9IG8ubUV2ZW50VGltZU5hbm87CisgICAgICAgIGV2Lm1Eb3duVGltZU5hbm8gPSBvLm1Eb3duVGltZU5hbm87CiAgICAgICAgIGV2Lm1BY3Rpb24gPSBvLm1BY3Rpb247Ci0gICAgICAgIGV2Lm1OdW1Qb2ludGVycyA9IG8ubU51bVBvaW50ZXJzOwotICAgICAgICBldi5tUmF3WCA9IG8ubVJhd1g7Ci0gICAgICAgIGV2Lm1SYXdZID0gby5tUmF3WTsKICAgICAgICAgZXYubU1ldGFTdGF0ZSA9IG8ubU1ldGFTdGF0ZTsKKyAgICAgICAgZXYubVhPZmZzZXQgPSBvLm1YT2Zmc2V0OworICAgICAgICBldi5tWU9mZnNldCA9IG8ubVlPZmZzZXQ7CiAgICAgICAgIGV2Lm1YUHJlY2lzaW9uID0gby5tWFByZWNpc2lvbjsKICAgICAgICAgZXYubVlQcmVjaXNpb24gPSBvLm1ZUHJlY2lzaW9uOworICAgICAgICBpbnQgbnVtUG9pbnRlcnMgPSBldi5tTnVtUG9pbnRlcnMgPSBvLm1OdW1Qb2ludGVyczsKKyAgICAgICAgaW50IG51bVNhbXBsZXMgPSBldi5tTnVtU2FtcGxlcyA9IG8ubU51bVNhbXBsZXM7CiAgICAgICAgIAotICAgICAgICBmaW5hbCBpbnQgTlMgPSBldi5tTnVtU2FtcGxlcyA9IG8ubU51bVNhbXBsZXM7Ci0gICAgICAgIGlmIChldi5tVGltZVNhbXBsZXMubGVuZ3RoID49IE5TKSB7Ci0gICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG8ubVRpbWVTYW1wbGVzLCAwLCBldi5tVGltZVNhbXBsZXMsIDAsIE5TKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV2Lm1UaW1lU2FtcGxlcyA9IChsb25nW10pby5tVGltZVNhbXBsZXMuY2xvbmUoKTsKLSAgICAgICAgfQorICAgICAgICBldi5tTGFzdERhdGFTYW1wbGVJbmRleCA9IG8ubUxhc3REYXRhU2FtcGxlSW5kZXg7CisgICAgICAgIGV2Lm1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4ID0gby5tTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleDsKICAgICAgICAgCi0gICAgICAgIGZpbmFsIGludCBOUCA9IChldi5tTnVtUG9pbnRlcnM9by5tTnVtUG9pbnRlcnMpOwotICAgICAgICBpZiAoZXYubVBvaW50ZXJJZGVudGlmaWVycy5sZW5ndGggPj0gTlApIHsKLSAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoby5tUG9pbnRlcklkZW50aWZpZXJzLCAwLCBldi5tUG9pbnRlcklkZW50aWZpZXJzLCAwLCBOUCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBldi5tUG9pbnRlcklkZW50aWZpZXJzID0gKGludFtdKW8ubVBvaW50ZXJJZGVudGlmaWVycy5jbG9uZSgpOwotICAgICAgICB9CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoby5tUG9pbnRlcklkZW50aWZpZXJzLCAwLCBldi5tUG9pbnRlcklkZW50aWZpZXJzLCAwLCBudW1Qb2ludGVycyk7CiAgICAgICAgIAotICAgICAgICBmaW5hbCBpbnQgTkQgPSBOUCAqIE5TICogTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICBpZiAoZXYubURhdGFTYW1wbGVzLmxlbmd0aCA+PSBORCkgewotICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShvLm1EYXRhU2FtcGxlcywgMCwgZXYubURhdGFTYW1wbGVzLCAwLCBORCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBldi5tRGF0YVNhbXBsZXMgPSAoZmxvYXRbXSlvLm1EYXRhU2FtcGxlcy5jbG9uZSgpOwotICAgICAgICB9CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoby5tRXZlbnRUaW1lTmFub1NhbXBsZXMsIDAsIGV2Lm1FdmVudFRpbWVOYW5vU2FtcGxlcywgMCwgbnVtU2FtcGxlcyk7CiAgICAgICAgIAorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG8ubURhdGFTYW1wbGVzLCAwLCBldi5tRGF0YVNhbXBsZXMsIDAsCisgICAgICAgICAgICAgICAgbnVtUG9pbnRlcnMgKiBudW1TYW1wbGVzICogTlVNX1NBTVBMRV9EQVRBKTsKICAgICAgICAgcmV0dXJuIGV2OwogICAgIH0KIApAQCAtNTc2LDM2ICs1MjksMjkgQEAKICAgICAgKiBhbnkgaGlzdG9yaWNhbCBwb2ludCBpbmZvcm1hdGlvbi4KICAgICAgKi8KICAgICBzdGF0aWMgcHVibGljIE1vdGlvbkV2ZW50IG9idGFpbk5vSGlzdG9yeShNb3Rpb25FdmVudCBvKSB7Ci0gICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKCk7CisgICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKG8ubU51bVBvaW50ZXJzLCAxKTsKICAgICAgICAgZXYubURldmljZUlkID0gby5tRGV2aWNlSWQ7CiAgICAgICAgIGV2Lm1FZGdlRmxhZ3MgPSBvLm1FZGdlRmxhZ3M7Ci0gICAgICAgIGV2Lm1Eb3duVGltZSA9IG8ubURvd25UaW1lOwotICAgICAgICBldi5tRXZlbnRUaW1lTmFubyA9IG8ubUV2ZW50VGltZU5hbm87CisgICAgICAgIGV2Lm1Eb3duVGltZU5hbm8gPSBvLm1Eb3duVGltZU5hbm87CiAgICAgICAgIGV2Lm1BY3Rpb24gPSBvLm1BY3Rpb247Ci0gICAgICAgIGV2Lm1OdW1Qb2ludGVycyA9IG8ubU51bVBvaW50ZXJzOwotICAgICAgICBldi5tUmF3WCA9IG8ubVJhd1g7Ci0gICAgICAgIGV2Lm1SYXdZID0gby5tUmF3WTsKICAgICAgICAgZXYubU1ldGFTdGF0ZSA9IG8ubU1ldGFTdGF0ZTsKKyAgICAgICAgZXYubVhPZmZzZXQgPSBvLm1YT2Zmc2V0OworICAgICAgICBldi5tWU9mZnNldCA9IG8ubVlPZmZzZXQ7CiAgICAgICAgIGV2Lm1YUHJlY2lzaW9uID0gby5tWFByZWNpc2lvbjsKICAgICAgICAgZXYubVlQcmVjaXNpb24gPSBvLm1ZUHJlY2lzaW9uOwogICAgICAgICAKKyAgICAgICAgaW50IG51bVBvaW50ZXJzID0gZXYubU51bVBvaW50ZXJzID0gby5tTnVtUG9pbnRlcnM7CiAgICAgICAgIGV2Lm1OdW1TYW1wbGVzID0gMTsKLSAgICAgICAgZXYubVRpbWVTYW1wbGVzWzBdID0gby5tVGltZVNhbXBsZXNbMF07CiAgICAgICAgIAotICAgICAgICBmaW5hbCBpbnQgTlAgPSAoZXYubU51bVBvaW50ZXJzPW8ubU51bVBvaW50ZXJzKTsKLSAgICAgICAgaWYgKGV2Lm1Qb2ludGVySWRlbnRpZmllcnMubGVuZ3RoID49IE5QKSB7Ci0gICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG8ubVBvaW50ZXJJZGVudGlmaWVycywgMCwgZXYubVBvaW50ZXJJZGVudGlmaWVycywgMCwgTlApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXYubVBvaW50ZXJJZGVudGlmaWVycyA9IChpbnRbXSlvLm1Qb2ludGVySWRlbnRpZmllcnMuY2xvbmUoKTsKLSAgICAgICAgfQorICAgICAgICBldi5tTGFzdERhdGFTYW1wbGVJbmRleCA9IDA7CisgICAgICAgIGV2Lm1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4ID0gMDsKICAgICAgICAgCi0gICAgICAgIGZpbmFsIGludCBORCA9IE5QICogTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICBpZiAoZXYubURhdGFTYW1wbGVzLmxlbmd0aCA+PSBORCkgewotICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShvLm1EYXRhU2FtcGxlcywgMCwgZXYubURhdGFTYW1wbGVzLCAwLCBORCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBldi5tRGF0YVNhbXBsZXMgPSAoZmxvYXRbXSlvLm1EYXRhU2FtcGxlcy5jbG9uZSgpOwotICAgICAgICB9CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoby5tUG9pbnRlcklkZW50aWZpZXJzLCAwLCBldi5tUG9pbnRlcklkZW50aWZpZXJzLCAwLCBudW1Qb2ludGVycyk7CiAgICAgICAgIAorICAgICAgICBldi5tRXZlbnRUaW1lTmFub1NhbXBsZXNbMF0gPSBvLm1FdmVudFRpbWVOYW5vU2FtcGxlc1tvLm1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4XTsKKyAgICAgICAgCisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoby5tRGF0YVNhbXBsZXMsIG8ubUxhc3REYXRhU2FtcGxlSW5kZXgsIGV2Lm1EYXRhU2FtcGxlcywgMCwKKyAgICAgICAgICAgICAgICBudW1Qb2ludGVycyAqIE5VTV9TQU1QTEVfREFUQSk7CiAgICAgICAgIHJldHVybiBldjsKICAgICB9CiAKQEAgLTYxMywxOCArNTU5LDIxIEBACiAgICAgICogUmVjeWNsZSB0aGUgTW90aW9uRXZlbnQsIHRvIGJlIHJlLXVzZWQgYnkgYSBsYXRlciBjYWxsZXIuICBBZnRlciBjYWxsaW5nCiAgICAgICogdGhpcyBmdW5jdGlvbiB5b3UgbXVzdCBub3QgZXZlciB0b3VjaCB0aGUgZXZlbnQgYWdhaW4uCiAgICAgICovCi0gICAgcHVibGljIHZvaWQgcmVjeWNsZSgpIHsKKyAgICBwdWJsaWMgZmluYWwgdm9pZCByZWN5Y2xlKCkgewogICAgICAgICAvLyBFbnN1cmUgcmVjeWNsZSBpcyBvbmx5IGNhbGxlZCBvbmNlIQogICAgICAgICBpZiAoVFJBQ0tfUkVDWUNMRURfTE9DQVRJT04pIHsKICAgICAgICAgICAgIGlmIChtUmVjeWNsZWRMb2NhdGlvbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24odG9TdHJpbmcoKSArICIgcmVjeWNsZWQgdHdpY2UhIiwgbVJlY3ljbGVkTG9jYXRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbVJlY3ljbGVkTG9jYXRpb24gPSBuZXcgUnVudGltZUV4Y2VwdGlvbigiTGFzdCByZWN5Y2xlZCBoZXJlIik7Ci0gICAgICAgIH0gZWxzZSBpZiAobVJlY3ljbGVkKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbih0b1N0cmluZygpICsgIiByZWN5Y2xlZCB0d2ljZSEiKTsKKyAgICAgICAgICAgIC8vTG9nLncoIk1vdGlvbkV2ZW50IiwgIlJlY3ljbGluZyBldmVudCAiICsgdGhpcywgbVJlY3ljbGVkTG9jYXRpb24pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1SZWN5Y2xlZCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKHRvU3RyaW5nKCkgKyAiIHJlY3ljbGVkIHR3aWNlISIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVJlY3ljbGVkID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vTG9nLncoIk1vdGlvbkV2ZW50IiwgIlJlY3ljbGluZyBldmVudCAiICsgdGhpcywgbVJlY3ljbGVkTG9jYXRpb24pOwogICAgICAgICBzeW5jaHJvbml6ZWQgKGdSZWN5Y2xlckxvY2spIHsKICAgICAgICAgICAgIGlmIChnUmVjeWNsZXJVc2VkIDwgTUFYX1JFQ1lDTEVEKSB7CiAgICAgICAgICAgICAgICAgZ1JlY3ljbGVyVXNlZCsrOwpAQCAtNjM0LDYgKzU4MywyNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNjYWxlcyBkb3duIHRoZSBjb29yZGluYXRpb24gb2YgdGhpcyBldmVudCBieSB0aGUgZ2l2ZW4gc2NhbGUuCisgICAgICoKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNjYWxlKGZsb2F0IHNjYWxlKSB7CisgICAgICAgIG1YT2Zmc2V0ICo9IHNjYWxlOworICAgICAgICBtWU9mZnNldCAqPSBzY2FsZTsKKyAgICAgICAgbVhQcmVjaXNpb24gKj0gc2NhbGU7CisgICAgICAgIG1ZUHJlY2lzaW9uICo9IHNjYWxlOworICAgICAgICAKKyAgICAgICAgZmxvYXRbXSBoaXN0b3J5ID0gbURhdGFTYW1wbGVzOworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gbU51bVBvaW50ZXJzICogbU51bVNhbXBsZXMgKiBOVU1fU0FNUExFX0RBVEE7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IE5VTV9TQU1QTEVfREFUQSkgeworICAgICAgICAgICAgaGlzdG9yeVtpICsgU0FNUExFX1hdICo9IHNjYWxlOworICAgICAgICAgICAgaGlzdG9yeVtpICsgU0FNUExFX1ldICo9IHNjYWxlOworICAgICAgICAgICAgLy8gbm8gbmVlZCB0byBzY2FsZSBwcmVzc3VyZQorICAgICAgICAgICAgaGlzdG9yeVtpICsgU0FNUExFX1NJWkVdICo9IHNjYWxlOyAgICAvLyBUT0RPOiBzcXVhcmUgdGhpcz8KKyAgICAgICAgfQorICAgIH0KIAogICAgIC8qKgogICAgICAqIFJldHVybiB0aGUga2luZCBvZiBhY3Rpb24gYmVpbmcgcGVyZm9ybWVkIC0tIG9uZSBvZiBlaXRoZXIKQEAgLTY3NSwxNCArNjQ1LDE0IEBACiAgICAgICogYSBzdHJlYW0gb2YgcG9zaXRpb24gZXZlbnRzLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBsb25nIGdldERvd25UaW1lKCkgewotICAgICAgICByZXR1cm4gbURvd25UaW1lOworICAgICAgICByZXR1cm4gbURvd25UaW1lTmFubyAvIE1TX1BFUl9OUzsKICAgICB9CiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHRoZSB0aW1lIChpbiBtcykgd2hlbiB0aGlzIHNwZWNpZmljIGV2ZW50IHdhcyBnZW5lcmF0ZWQuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGxvbmcgZ2V0RXZlbnRUaW1lKCkgewotICAgICAgICByZXR1cm4gbVRpbWVTYW1wbGVzWzBdOworICAgICAgICByZXR1cm4gbUV2ZW50VGltZU5hbm9TYW1wbGVzW21MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4XSAvIE1TX1BFUl9OUzsKICAgICB9CiAKICAgICAvKioKQEAgLTY5Miw3ICs2NjIsNyBAQAogICAgICAqIEBoaWRlCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGxvbmcgZ2V0RXZlbnRUaW1lTmFubygpIHsKLSAgICAgICAgcmV0dXJuIG1FdmVudFRpbWVOYW5vOworICAgICAgICByZXR1cm4gbUV2ZW50VGltZU5hbm9TYW1wbGVzW21MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4XTsKICAgICB9CiAKICAgICAvKioKQEAgLTcwMCw3ICs2NzAsNyBAQAogICAgICAqIGFyYml0cmFyeSBwb2ludGVyIGlkZW50aWZpZXIpLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRYKCkgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW1NBTVBMRV9YXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleCArIFNBTVBMRV9YXSArIG1YT2Zmc2V0OwogICAgIH0KIAogICAgIC8qKgpAQCAtNzA4LDcgKzY3OCw3IEBACiAgICAgICogYXJiaXRyYXJ5IHBvaW50ZXIgaWRlbnRpZmllcikuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldFkoKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbU0FNUExFX1ldOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4ICsgU0FNUExFX1ldICsgbVlPZmZzZXQ7CiAgICAgfQogCiAgICAgLyoqCkBAIC03MTYsNyArNjg2LDcgQEAKICAgICAgKiBhcmJpdHJhcnkgcG9pbnRlciBpZGVudGlmaWVyKS4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0UHJlc3N1cmUoKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbU0FNUExFX1BSRVNTVVJFXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleCArIFNBTVBMRV9QUkVTU1VSRV07CiAgICAgfQogCiAgICAgLyoqCkBAIC03MjQsNyArNjk0LDcgQEAKICAgICAgKiBhcmJpdHJhcnkgcG9pbnRlciBpZGVudGlmaWVyKS4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0U2l6ZSgpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1tTQU1QTEVfU0laRV07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXggKyBTQU1QTEVfU0laRV07CiAgICAgfQogCiAgICAgLyoqCkBAIC03NzYsNyArNzQ2LDggQEAKICAgICAgKiAodGhlIGZpcnN0IHBvaW50ZXIgdGhhdCBpcyBkb3duKSB0byB7QGxpbmsgI2dldFBvaW50ZXJDb3VudCgpfS0xLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRYKGludCBwb2ludGVySW5kZXgpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1socG9pbnRlckluZGV4Kk5VTV9TQU1QTEVfREFUQSkgKyBTQU1QTEVfWF07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHBvaW50ZXJJbmRleCAqIE5VTV9TQU1QTEVfREFUQSArIFNBTVBMRV9YXSArIG1YT2Zmc2V0OwogICAgIH0KIAogICAgIC8qKgpAQCAtNzg5LDcgKzc2MCw4IEBACiAgICAgICogKHRoZSBmaXJzdCBwb2ludGVyIHRoYXQgaXMgZG93bikgdG8ge0BsaW5rICNnZXRQb2ludGVyQ291bnQoKX0tMS4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0WShpbnQgcG9pbnRlckluZGV4KSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKHBvaW50ZXJJbmRleCpOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1ldOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwb2ludGVySW5kZXggKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfWV0gKyBtWU9mZnNldDsKICAgICB9CiAKICAgICAvKioKQEAgLTgwNCw3ICs3NzYsOCBAQAogICAgICAqICh0aGUgZmlyc3QgcG9pbnRlciB0aGF0IGlzIGRvd24pIHRvIHtAbGluayAjZ2V0UG9pbnRlckNvdW50KCl9LTEuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldFByZXNzdXJlKGludCBwb2ludGVySW5kZXgpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1socG9pbnRlckluZGV4Kk5VTV9TQU1QTEVfREFUQSkgKyBTQU1QTEVfUFJFU1NVUkVdOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwb2ludGVySW5kZXggKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfUFJFU1NVUkVdOwogICAgIH0KIAogICAgIC8qKgpAQCAtODIwLDcgKzc5Myw4IEBACiAgICAgICogKHRoZSBmaXJzdCBwb2ludGVyIHRoYXQgaXMgZG93bikgdG8ge0BsaW5rICNnZXRQb2ludGVyQ291bnQoKX0tMS4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0U2l6ZShpbnQgcG9pbnRlckluZGV4KSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKHBvaW50ZXJJbmRleCpOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1NJWkVdOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwb2ludGVySW5kZXggKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfU0laRV07CiAgICAgfQogCiAgICAgLyoqCkBAIC04NDQsNyArODE4LDcgQEAKICAgICAgKiBhbmQgdmlld3MuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldFJhd1goKSB7Ci0gICAgICAgIHJldHVybiBtUmF3WDsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleCArIFNBTVBMRV9YXTsKICAgICB9CiAKICAgICAvKioKQEAgLTg1NCw3ICs4MjgsNyBAQAogICAgICAqIGFuZCB2aWV3cy4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0UmF3WSgpIHsKLSAgICAgICAgcmV0dXJuIG1SYXdZOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4ICsgU0FNUExFX1ldOwogICAgIH0KIAogICAgIC8qKgpAQCAtODg2LDcgKzg2MCw3IEBACiAgICAgICogQHJldHVybiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgaGlzdG9yaWNhbCBwb2ludHMgaW4gdGhlIGV2ZW50LgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0SGlzdG9yeVNpemUoKSB7Ci0gICAgICAgIHJldHVybiBtTnVtU2FtcGxlcyAtIDE7CisgICAgICAgIHJldHVybiBtTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleDsKICAgICB9CiAKICAgICAvKioKQEAgLTkwMCw3ICs4NzQsNyBAQAogICAgICAqIEBzZWUgI2dldEV2ZW50VGltZQogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBsb25nIGdldEhpc3RvcmljYWxFdmVudFRpbWUoaW50IHBvcykgewotICAgICAgICByZXR1cm4gbVRpbWVTYW1wbGVzW3BvcyArIDFdOworICAgICAgICByZXR1cm4gbUV2ZW50VGltZU5hbm9TYW1wbGVzW3Bvc10gLyBNU19QRVJfTlM7CiAgICAgfQogCiAgICAgLyoqCkBAIC05MDgsNyArODgyLDcgQEAKICAgICAgKiBhcmJpdHJhcnkgcG9pbnRlciBpZGVudGlmaWVyKS4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0SGlzdG9yaWNhbFgoaW50IHBvcykgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWygocG9zICsgMSkgKiBOVU1fU0FNUExFX0RBVEEgKiBtTnVtUG9pbnRlcnMpICsgU0FNUExFX1hdOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW3BvcyAqIG1OdW1Qb2ludGVycyAqIE5VTV9TQU1QTEVfREFUQSArIFNBTVBMRV9YXSArIG1YT2Zmc2V0OwogICAgIH0KIAogICAgIC8qKgpAQCAtOTE2LDcgKzg5MCw3IEBACiAgICAgICogYXJiaXRyYXJ5IHBvaW50ZXIgaWRlbnRpZmllcikuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldEhpc3RvcmljYWxZKGludCBwb3MpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1soKHBvcyArIDEpICogTlVNX1NBTVBMRV9EQVRBICogbU51bVBvaW50ZXJzKSArIFNBTVBMRV9ZXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1twb3MgKiBtTnVtUG9pbnRlcnMgKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfWV0gKyBtWU9mZnNldDsKICAgICB9CiAKICAgICAvKioKQEAgLTkyNCw3ICs4OTgsNyBAQAogICAgICAqIGFyYml0cmFyeSBwb2ludGVyIGlkZW50aWZpZXIpLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRIaXN0b3JpY2FsUHJlc3N1cmUoaW50IHBvcykgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWygocG9zICsgMSkgKiBOVU1fU0FNUExFX0RBVEEgKiBtTnVtUG9pbnRlcnMpICsgU0FNUExFX1BSRVNTVVJFXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1twb3MgKiBtTnVtUG9pbnRlcnMgKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfUFJFU1NVUkVdOwogICAgIH0KIAogICAgIC8qKgpAQCAtOTMyLDcgKzkwNiw3IEBACiAgICAgICogYXJiaXRyYXJ5IHBvaW50ZXIgaWRlbnRpZmllcikuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldEhpc3RvcmljYWxTaXplKGludCBwb3MpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1soKHBvcyArIDEpICogTlVNX1NBTVBMRV9EQVRBICogbU51bVBvaW50ZXJzKSArIFNBTVBMRV9TSVpFXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1twb3MgKiBtTnVtUG9pbnRlcnMgKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfU0laRV07CiAgICAgfQogCiAgICAgLyoqCkBAIC05NDksOCArOTIzLDggQEAKICAgICAgKiBAc2VlICNnZXRYCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldEhpc3RvcmljYWxYKGludCBwb2ludGVySW5kZXgsIGludCBwb3MpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1soKHBvcyArIDEpICogTlVNX1NBTVBMRV9EQVRBICogbU51bVBvaW50ZXJzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKHBvaW50ZXJJbmRleCAqIE5VTV9TQU1QTEVfREFUQSkgKyBTQU1QTEVfWF07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKHBvcyAqIG1OdW1Qb2ludGVycyArIHBvaW50ZXJJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5VTV9TQU1QTEVfREFUQSArIFNBTVBMRV9YXSArIG1YT2Zmc2V0OwogICAgIH0KIAogICAgIC8qKgpAQCAtOTY3LDggKzk0MSw4IEBACiAgICAgICogQHNlZSAjZ2V0WQogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRIaXN0b3JpY2FsWShpbnQgcG9pbnRlckluZGV4LCBpbnQgcG9zKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKChwb3MgKyAxKSAqIE5VTV9TQU1QTEVfREFUQSAqIG1OdW1Qb2ludGVycykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChwb2ludGVySW5kZXggKiBOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1ldOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWyhwb3MgKiBtTnVtUG9pbnRlcnMgKyBwb2ludGVySW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfWV0gKyBtWU9mZnNldDsKICAgICB9CiAKICAgICAvKioKQEAgLTk4NSw4ICs5NTksOCBAQAogICAgICAqIEBzZWUgI2dldFByZXNzdXJlCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldEhpc3RvcmljYWxQcmVzc3VyZShpbnQgcG9pbnRlckluZGV4LCBpbnQgcG9zKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKChwb3MgKyAxKSAqIE5VTV9TQU1QTEVfREFUQSAqIG1OdW1Qb2ludGVycykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChwb2ludGVySW5kZXggKiBOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1BSRVNTVVJFXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1socG9zICogbU51bVBvaW50ZXJzICsgcG9pbnRlckluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTlVNX1NBTVBMRV9EQVRBICsgU0FNUExFX1BSRVNTVVJFXTsKICAgICB9CiAKICAgICAvKioKQEAgLTEwMDMsOCArOTc3LDggQEAKICAgICAgKiBAc2VlICNnZXRTaXplCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldEhpc3RvcmljYWxTaXplKGludCBwb2ludGVySW5kZXgsIGludCBwb3MpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1soKHBvcyArIDEpICogTlVNX1NBTVBMRV9EQVRBICogbU51bVBvaW50ZXJzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKHBvaW50ZXJJbmRleCAqIE5VTV9TQU1QTEVfREFUQSkgKyBTQU1QTEVfU0laRV07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKHBvcyAqIG1OdW1Qb2ludGVycyArIHBvaW50ZXJJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5VTV9TQU1QTEVfREFUQSArIFNBTVBMRV9TSVpFXTsKICAgICB9CiAKICAgICAvKioKQEAgLTEwMTcsNyArOTkxLDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBSZXR1cm5zIGEgYml0ZmllbGQgaW5kaWNhdGluZyB3aGljaCBlZGdlcywgaWYgYW55LCB3aGVyZSB0b3VjaGVkIGJ5IHRoaXMKKyAgICAgKiBSZXR1cm5zIGEgYml0ZmllbGQgaW5kaWNhdGluZyB3aGljaCBlZGdlcywgaWYgYW55LCB3ZXJlIHRvdWNoZWQgYnkgdGhpcwogICAgICAqIE1vdGlvbkV2ZW50LiBGb3IgdG91Y2ggZXZlbnRzLCBjbGllbnRzIGNhbiB1c2UgdGhpcyB0byBkZXRlcm1pbmUgaWYgdGhlCiAgICAgICogdXNlcidzIGZpbmdlciB3YXMgdG91Y2hpbmcgdGhlIGVkZ2Ugb2YgdGhlIGRpc3BsYXkuCiAgICAgICoKQEAgLTEwNTQsMTIgKzEwMjgsOCBAQAogICAgICAqIEBwYXJhbSBkZWx0YVkgQW1vdW50IHRvIGFkZCB0byB0aGUgY3VycmVudCBZIGNvb3JkaW5hdGUgb2YgdGhlIGV2ZW50LgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCB2b2lkIG9mZnNldExvY2F0aW9uKGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZKSB7Ci0gICAgICAgIGZpbmFsIGludCBOID0gbU51bVBvaW50ZXJzKm1OdW1TYW1wbGVzKjQ7Ci0gICAgICAgIGZpbmFsIGZsb2F0W10gcG9zID0gbURhdGFTYW1wbGVzOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSs9TlVNX1NBTVBMRV9EQVRBKSB7Ci0gICAgICAgICAgICBwb3NbaStTQU1QTEVfWF0gKz0gZGVsdGFYOwotICAgICAgICAgICAgcG9zW2krU0FNUExFX1ldICs9IGRlbHRhWTsKLSAgICAgICAgfQorICAgICAgICBtWE9mZnNldCArPSBkZWx0YVg7CisgICAgICAgIG1ZT2Zmc2V0ICs9IGRlbHRhWTsKICAgICB9CiAKICAgICAvKioKQEAgLTEwNzAsMTEgKzEwNDAsMjggQEAKICAgICAgKiBAcGFyYW0geSBOZXcgYWJzb2x1dGUgWSBsb2NhdGlvbi4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRMb2NhdGlvbihmbG9hdCB4LCBmbG9hdCB5KSB7Ci0gICAgICAgIGZsb2F0IGRlbHRhWCA9IHgtbURhdGFTYW1wbGVzW1NBTVBMRV9YXTsKLSAgICAgICAgZmxvYXQgZGVsdGFZID0geS1tRGF0YVNhbXBsZXNbU0FNUExFX1ldOwotICAgICAgICBpZiAoZGVsdGFYICE9IDAgfHwgZGVsdGFZICE9IDApIHsKLSAgICAgICAgICAgIG9mZnNldExvY2F0aW9uKGRlbHRhWCwgZGVsdGFZKTsKKyAgICAgICAgbVhPZmZzZXQgPSB4IC0gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4ICsgU0FNUExFX1hdOworICAgICAgICBtWU9mZnNldCA9IHkgLSBtRGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXggKyBTQU1QTEVfWV07CisgICAgfQorICAgIAorICAgIHByaXZhdGUgZmluYWwgdm9pZCBpbmNyZW1lbnROdW1TYW1wbGVzQW5kUmVzZXJ2ZVN0b3JhZ2UoaW50IGRhdGFTYW1wbGVTdHJpZGUpIHsKKyAgICAgICAgaWYgKG1OdW1TYW1wbGVzID09IG1FdmVudFRpbWVOYW5vU2FtcGxlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGxvbmdbXSBuZXdFdmVudFRpbWVOYW5vU2FtcGxlcyA9IG5ldyBsb25nW21OdW1TYW1wbGVzICsgQkFTRV9BVkFJTF9TQU1QTEVTXTsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobUV2ZW50VGltZU5hbm9TYW1wbGVzLCAwLCBuZXdFdmVudFRpbWVOYW5vU2FtcGxlcywgMCwgbU51bVNhbXBsZXMpOworICAgICAgICAgICAgbUV2ZW50VGltZU5hbm9TYW1wbGVzID0gbmV3RXZlbnRUaW1lTmFub1NhbXBsZXM7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBuZXh0RGF0YVNhbXBsZUluZGV4ID0gbUxhc3REYXRhU2FtcGxlSW5kZXggKyBkYXRhU2FtcGxlU3RyaWRlOworICAgICAgICBpZiAobmV4dERhdGFTYW1wbGVJbmRleCArIGRhdGFTYW1wbGVTdHJpZGUgPiBtRGF0YVNhbXBsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICBmbG9hdFtdIG5ld0RhdGFTYW1wbGVzID0gbmV3IGZsb2F0W25leHREYXRhU2FtcGxlSW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBCQVNFX0FWQUlMX1NBTVBMRVMgKiBkYXRhU2FtcGxlU3RyaWRlXTsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobURhdGFTYW1wbGVzLCAwLCBuZXdEYXRhU2FtcGxlcywgMCwgbmV4dERhdGFTYW1wbGVJbmRleCk7CisgICAgICAgICAgICBtRGF0YVNhbXBsZXMgPSBuZXdEYXRhU2FtcGxlczsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXggPSBtTnVtU2FtcGxlczsKKyAgICAgICAgbUxhc3REYXRhU2FtcGxlSW5kZXggPSBuZXh0RGF0YVNhbXBsZUluZGV4OworICAgICAgICBtTnVtU2FtcGxlcyArPSAxOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTA5Miw0MiArMTA3OSwxNiBAQAogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCB2b2lkIGFkZEJhdGNoKGxvbmcgZXZlbnRUaW1lLCBmbG9hdCB4LCBmbG9hdCB5LAogICAgICAgICAgICAgZmxvYXQgcHJlc3N1cmUsIGZsb2F0IHNpemUsIGludCBtZXRhU3RhdGUpIHsKLSAgICAgICAgZmxvYXRbXSBkYXRhID0gbURhdGFTYW1wbGVzOwotICAgICAgICBsb25nW10gdGltZXMgPSBtVGltZVNhbXBsZXM7CisgICAgICAgIGluY3JlbWVudE51bVNhbXBsZXNBbmRSZXNlcnZlU3RvcmFnZShOVU1fU0FNUExFX0RBVEEpOwogICAgICAgICAKLSAgICAgICAgZmluYWwgaW50IE5QID0gbU51bVBvaW50ZXJzOwotICAgICAgICBmaW5hbCBpbnQgTlMgPSBtTnVtU2FtcGxlczsKLSAgICAgICAgZmluYWwgaW50IE5JID0gTlAqTlM7Ci0gICAgICAgIGZpbmFsIGludCBORCA9IE5JICogTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICBpZiAoZGF0YS5sZW5ndGggPD0gTkQpIHsKLSAgICAgICAgICAgIGZpbmFsIGludCBORVdfTkQgPSBORCArIChOUCAqIChCQVNFX0FWQUlMX1NBTVBMRVMgKiBOVU1fU0FNUExFX0RBVEEpKTsKLSAgICAgICAgICAgIGZsb2F0W10gbmV3RGF0YSA9IG5ldyBmbG9hdFtORVdfTkRdOwotICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShkYXRhLCAwLCBuZXdEYXRhLCAwLCBORCk7Ci0gICAgICAgICAgICBtRGF0YVNhbXBsZXMgPSBkYXRhID0gbmV3RGF0YTsKLSAgICAgICAgfQotICAgICAgICBpZiAodGltZXMubGVuZ3RoIDw9IE5TKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTkVXX05TID0gTlMgKyBCQVNFX0FWQUlMX1NBTVBMRVM7Ci0gICAgICAgICAgICBsb25nW10gbmV3SGlzdG9yeVRpbWVzID0gbmV3IGxvbmdbTkVXX05TXTsKLSAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodGltZXMsIDAsIG5ld0hpc3RvcnlUaW1lcywgMCwgTlMpOwotICAgICAgICAgICAgbVRpbWVTYW1wbGVzID0gdGltZXMgPSBuZXdIaXN0b3J5VGltZXM7Ci0gICAgICAgIH0KKyAgICAgICAgbUV2ZW50VGltZU5hbm9TYW1wbGVzW21MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4XSA9IGV2ZW50VGltZSAqIE1TX1BFUl9OUzsKICAgICAgICAgCi0gICAgICAgIHRpbWVzW05TXSA9IHRpbWVzWzBdOwotICAgICAgICB0aW1lc1swXSA9IGV2ZW50VGltZTsKKyAgICAgICAgZmxvYXRbXSBkYXRhU2FtcGxlcyA9IG1EYXRhU2FtcGxlczsKKyAgICAgICAgZGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXggKyBTQU1QTEVfWF0gPSB4IC0gbVhPZmZzZXQ7CisgICAgICAgIGRhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4ICsgU0FNUExFX1ldID0geSAtIG1ZT2Zmc2V0OworICAgICAgICBkYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleCArIFNBTVBMRV9QUkVTU1VSRV0gPSBwcmVzc3VyZTsKKyAgICAgICAgZGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXggKyBTQU1QTEVfU0laRV0gPSBzaXplOwogICAgICAgICAKLSAgICAgICAgZmluYWwgaW50IHBvcyA9IE5TKk5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgZGF0YVtwb3MrU0FNUExFX1hdID0gZGF0YVtTQU1QTEVfWF07Ci0gICAgICAgIGRhdGFbcG9zK1NBTVBMRV9ZXSA9IGRhdGFbU0FNUExFX1ldOwotICAgICAgICBkYXRhW3BvcytTQU1QTEVfUFJFU1NVUkVdID0gZGF0YVtTQU1QTEVfUFJFU1NVUkVdOwotICAgICAgICBkYXRhW3BvcytTQU1QTEVfU0laRV0gPSBkYXRhW1NBTVBMRV9TSVpFXTsKLSAgICAgICAgZGF0YVtTQU1QTEVfWF0gPSB4OwotICAgICAgICBkYXRhW1NBTVBMRV9ZXSA9IHk7Ci0gICAgICAgIGRhdGFbU0FNUExFX1BSRVNTVVJFXSA9IHByZXNzdXJlOwotICAgICAgICBkYXRhW1NBTVBMRV9TSVpFXSA9IHNpemU7Ci0gICAgICAgIG1OdW1TYW1wbGVzID0gTlMrMTsKLQotICAgICAgICBtUmF3WCA9IHg7Ci0gICAgICAgIG1SYXdZID0geTsKICAgICAgICAgbU1ldGFTdGF0ZSB8PSBtZXRhU3RhdGU7CiAgICAgfQogCkBAIC0xMTQzLDQ4ICsxMTA0LDM2IEBACiAgICAgICogQGhpZGUKICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgdm9pZCBhZGRCYXRjaChsb25nIGV2ZW50VGltZSwgZmxvYXRbXSBpbkRhdGEsIGludCBtZXRhU3RhdGUpIHsKLSAgICAgICAgZmxvYXRbXSBkYXRhID0gbURhdGFTYW1wbGVzOwotICAgICAgICBsb25nW10gdGltZXMgPSBtVGltZVNhbXBsZXM7CisgICAgICAgIGZpbmFsIGludCBudW1Qb2ludGVycyA9IG1OdW1Qb2ludGVyczsKKyAgICAgICAgZmluYWwgaW50IGRhdGFTYW1wbGVTdHJpZGUgPSBudW1Qb2ludGVycyAqIE5VTV9TQU1QTEVfREFUQTsKKyAgICAgICAgaW5jcmVtZW50TnVtU2FtcGxlc0FuZFJlc2VydmVTdG9yYWdlKGRhdGFTYW1wbGVTdHJpZGUpOwogICAgICAgICAKLSAgICAgICAgZmluYWwgaW50IE5QID0gbU51bVBvaW50ZXJzOwotICAgICAgICBmaW5hbCBpbnQgTlMgPSBtTnVtU2FtcGxlczsKLSAgICAgICAgZmluYWwgaW50IE5JID0gTlAqTlM7Ci0gICAgICAgIGZpbmFsIGludCBORCA9IE5JICogTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICBpZiAoZGF0YS5sZW5ndGggPCAoTkQrKE5QKk5VTV9TQU1QTEVfREFUQSkpKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTkVXX05EID0gTkQgKyAoTlAgKiAoQkFTRV9BVkFJTF9TQU1QTEVTICogTlVNX1NBTVBMRV9EQVRBKSk7Ci0gICAgICAgICAgICBmbG9hdFtdIG5ld0RhdGEgPSBuZXcgZmxvYXRbTkVXX05EXTsKLSAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZGF0YSwgMCwgbmV3RGF0YSwgMCwgTkQpOwotICAgICAgICAgICAgbURhdGFTYW1wbGVzID0gZGF0YSA9IG5ld0RhdGE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRpbWVzLmxlbmd0aCA8IChOUysxKSkgewotICAgICAgICAgICAgZmluYWwgaW50IE5FV19OUyA9IE5TICsgQkFTRV9BVkFJTF9TQU1QTEVTOwotICAgICAgICAgICAgbG9uZ1tdIG5ld0hpc3RvcnlUaW1lcyA9IG5ldyBsb25nW05FV19OU107Ci0gICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRpbWVzLCAwLCBuZXdIaXN0b3J5VGltZXMsIDAsIE5TKTsKLSAgICAgICAgICAgIG1UaW1lU2FtcGxlcyA9IHRpbWVzID0gbmV3SGlzdG9yeVRpbWVzOwotICAgICAgICB9CisgICAgICAgIG1FdmVudFRpbWVOYW5vU2FtcGxlc1ttTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleF0gPSBldmVudFRpbWUgKiBNU19QRVJfTlM7CiAgICAgICAgIAotICAgICAgICB0aW1lc1tOU10gPSB0aW1lc1swXTsKLSAgICAgICAgdGltZXNbMF0gPSBldmVudFRpbWU7Ci0gICAgICAgIAotICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGRhdGEsIDAsIGRhdGEsIE5ELCBtTnVtUG9pbnRlcnMqTlVNX1NBTVBMRV9EQVRBKTsKLSAgICAgICAgU3lzdGVtLmFycmF5Y29weShpbkRhdGEsIDAsIGRhdGEsIDAsIG1OdW1Qb2ludGVycypOVU1fU0FNUExFX0RBVEEpOwotICAgICAgICAKLSAgICAgICAgbU51bVNhbXBsZXMgPSBOUysxOworICAgICAgICBmbG9hdFtdIGRhdGFTYW1wbGVzID0gbURhdGFTYW1wbGVzOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGluRGF0YSwgMCwgZGF0YVNhbXBsZXMsIG1MYXN0RGF0YVNhbXBsZUluZGV4LCBkYXRhU2FtcGxlU3RyaWRlKTsKIAotICAgICAgICBtUmF3WCA9IGluRGF0YVtTQU1QTEVfWF07Ci0gICAgICAgIG1SYXdZID0gaW5EYXRhW1NBTVBMRV9ZXTsKKyAgICAgICAgaWYgKG1YT2Zmc2V0ICE9IDAgfHwgbVlPZmZzZXQgIT0gMCkgeworICAgICAgICAgICAgaW50IGluZGV4ID0gbUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXg7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBvaW50ZXJzOyBpKyspIHsKKyAgICAgICAgICAgICAgICBkYXRhU2FtcGxlc1tpbmRleCArIFNBTVBMRV9YXSAtPSBtWE9mZnNldDsKKyAgICAgICAgICAgICAgICBkYXRhU2FtcGxlc1tpbmRleCArIFNBTVBMRV9ZXSAtPSBtWU9mZnNldDsKKyAgICAgICAgICAgICAgICBpbmRleCArPSBOVU1fU0FNUExFX0RBVEE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIG1NZXRhU3RhdGUgfD0gbWV0YVN0YXRlOwogICAgICAgICAKICAgICAgICAgaWYgKERFQlVHX1BPSU5URVJTKSB7CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoMTI4KTsKICAgICAgICAgICAgIHNiLmFwcGVuZCgiQWRkOiIpOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPG1OdW1Qb2ludGVyczsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1Qb2ludGVyczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIgIyIpOwotICAgICAgICAgICAgICAgIHNiLmFwcGVuZChtUG9pbnRlcklkZW50aWZpZXJzW2ldKTsKKyAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZ2V0UG9pbnRlcklkKGkpKTsKICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIigiKTsKLSAgICAgICAgICAgICAgICBzYi5hcHBlbmQobURhdGFTYW1wbGVzWyhpKk5VTV9TQU1QTEVfREFUQSkgKyBTQU1QTEVfWF0pOworICAgICAgICAgICAgICAgIHNiLmFwcGVuZChnZXRYKGkpKTsKICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIiwiKTsKLSAgICAgICAgICAgICAgICBzYi5hcHBlbmQobURhdGFTYW1wbGVzWyhpKk5VTV9TQU1QTEVfREFUQSkgKyBTQU1QTEVfWV0pOworICAgICAgICAgICAgICAgIHNiLmFwcGVuZChnZXRZKGkpKTsKICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIikiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIExvZy52KCJNb3Rpb25FdmVudCIsIHNiLnRvU3RyaW5nKCkpOwpAQCAtMTIwMSw4ICsxMTUwLDQxIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQYXJjZWxhYmxlLkNyZWF0b3I8TW90aW9uRXZlbnQ+IENSRUFUT1IKICAgICAgICAgICAgID0gbmV3IFBhcmNlbGFibGUuQ3JlYXRvcjxNb3Rpb25FdmVudD4oKSB7CiAgICAgICAgIHB1YmxpYyBNb3Rpb25FdmVudCBjcmVhdGVGcm9tUGFyY2VsKFBhcmNlbCBpbikgewotICAgICAgICAgICAgTW90aW9uRXZlbnQgZXYgPSBvYnRhaW4oKTsKLSAgICAgICAgICAgIGV2LnJlYWRGcm9tUGFyY2VsKGluKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBOUCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBOUyA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBOSSA9IE5QICogTlMgKiBOVU1fU0FNUExFX0RBVEE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKE5QLCBOUyk7CisgICAgICAgICAgICBldi5tTnVtUG9pbnRlcnMgPSBOUDsKKyAgICAgICAgICAgIGV2Lm1OdW1TYW1wbGVzID0gTlM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGV2Lm1Eb3duVGltZU5hbm8gPSBpbi5yZWFkTG9uZygpOworICAgICAgICAgICAgZXYubUFjdGlvbiA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIGV2Lm1YT2Zmc2V0ID0gaW4ucmVhZEZsb2F0KCk7CisgICAgICAgICAgICBldi5tWU9mZnNldCA9IGluLnJlYWRGbG9hdCgpOworICAgICAgICAgICAgZXYubVhQcmVjaXNpb24gPSBpbi5yZWFkRmxvYXQoKTsKKyAgICAgICAgICAgIGV2Lm1ZUHJlY2lzaW9uID0gaW4ucmVhZEZsb2F0KCk7CisgICAgICAgICAgICBldi5tRGV2aWNlSWQgPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICBldi5tRWRnZUZsYWdzID0gaW4ucmVhZEludCgpOworICAgICAgICAgICAgZXYubU1ldGFTdGF0ZSA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmluYWwgaW50W10gcG9pbnRlcklkZW50aWZpZXJzID0gZXYubVBvaW50ZXJJZGVudGlmaWVyczsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlA7IGkrKykgeworICAgICAgICAgICAgICAgIHBvaW50ZXJJZGVudGlmaWVyc1tpXSA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmluYWwgbG9uZ1tdIGV2ZW50VGltZU5hbm9TYW1wbGVzID0gZXYubUV2ZW50VGltZU5hbm9TYW1wbGVzOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOUzsgaSsrKSB7CisgICAgICAgICAgICAgICAgZXZlbnRUaW1lTmFub1NhbXBsZXNbaV0gPSBpbi5yZWFkTG9uZygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBmbG9hdFtdIGRhdGFTYW1wbGVzID0gZXYubURhdGFTYW1wbGVzOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOSTsgaSsrKSB7CisgICAgICAgICAgICAgICAgZGF0YVNhbXBsZXNbaV0gPSBpbi5yZWFkRmxvYXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZXYubUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXggPSBOUyAtIDE7CisgICAgICAgICAgICBldi5tTGFzdERhdGFTYW1wbGVJbmRleCA9IChOUyAtIDEpICogTlAgKiBOVU1fU0FNUExFX0RBVEE7CiAgICAgICAgICAgICByZXR1cm4gZXY7CiAgICAgICAgIH0KIApAQCAtMTIxNiw3OSArMTE5OCwzNiBAQAogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoUGFyY2VsIG91dCwgaW50IGZsYWdzKSB7Ci0gICAgICAgIG91dC53cml0ZUxvbmcobURvd25UaW1lKTsKLSAgICAgICAgb3V0LndyaXRlTG9uZyhtRXZlbnRUaW1lTmFubyk7Ci0gICAgICAgIG91dC53cml0ZUludChtQWN0aW9uKTsKLSAgICAgICAgb3V0LndyaXRlSW50KG1NZXRhU3RhdGUpOwotICAgICAgICBvdXQud3JpdGVGbG9hdChtUmF3WCk7Ci0gICAgICAgIG91dC53cml0ZUZsb2F0KG1SYXdZKTsKICAgICAgICAgZmluYWwgaW50IE5QID0gbU51bVBvaW50ZXJzOwotICAgICAgICBvdXQud3JpdGVJbnQoTlApOwogICAgICAgICBmaW5hbCBpbnQgTlMgPSBtTnVtU2FtcGxlczsKKyAgICAgICAgZmluYWwgaW50IE5JID0gTlAgKiBOUyAqIE5VTV9TQU1QTEVfREFUQTsKKyAgICAgICAgCisgICAgICAgIG91dC53cml0ZUludChOUCk7CiAgICAgICAgIG91dC53cml0ZUludChOUyk7Ci0gICAgICAgIGZpbmFsIGludCBOSSA9IE5QKk5TOwotICAgICAgICBpZiAoTkkgPiAwKSB7Ci0gICAgICAgICAgICBpbnQgaTsKLSAgICAgICAgICAgIGludFtdIHN0YXRlID0gbVBvaW50ZXJJZGVudGlmaWVyczsKLSAgICAgICAgICAgIGZvciAoaT0wOyBpPE5QOyBpKyspIHsKLSAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoc3RhdGVbaV0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZmluYWwgaW50IE5EID0gTkkqTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICAgICAgZmxvYXRbXSBoaXN0b3J5ID0gbURhdGFTYW1wbGVzOwotICAgICAgICAgICAgZm9yIChpPTA7IGk8TkQ7IGkrKykgewotICAgICAgICAgICAgICAgIG91dC53cml0ZUZsb2F0KGhpc3RvcnlbaV0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbG9uZ1tdIHRpbWVzID0gbVRpbWVTYW1wbGVzOwotICAgICAgICAgICAgZm9yIChpPTA7IGk8TlM7IGkrKykgewotICAgICAgICAgICAgICAgIG91dC53cml0ZUxvbmcodGltZXNbaV0pOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIAorICAgICAgICBvdXQud3JpdGVMb25nKG1Eb3duVGltZU5hbm8pOworICAgICAgICBvdXQud3JpdGVJbnQobUFjdGlvbik7CisgICAgICAgIG91dC53cml0ZUZsb2F0KG1YT2Zmc2V0KTsKKyAgICAgICAgb3V0LndyaXRlRmxvYXQobVlPZmZzZXQpOwogICAgICAgICBvdXQud3JpdGVGbG9hdChtWFByZWNpc2lvbik7CiAgICAgICAgIG91dC53cml0ZUZsb2F0KG1ZUHJlY2lzaW9uKTsKICAgICAgICAgb3V0LndyaXRlSW50KG1EZXZpY2VJZCk7CiAgICAgICAgIG91dC53cml0ZUludChtRWRnZUZsYWdzKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgcmVhZEZyb21QYXJjZWwoUGFyY2VsIGluKSB7Ci0gICAgICAgIG1Eb3duVGltZSA9IGluLnJlYWRMb25nKCk7Ci0gICAgICAgIG1FdmVudFRpbWVOYW5vID0gaW4ucmVhZExvbmcoKTsKLSAgICAgICAgbUFjdGlvbiA9IGluLnJlYWRJbnQoKTsKLSAgICAgICAgbU1ldGFTdGF0ZSA9IGluLnJlYWRJbnQoKTsKLSAgICAgICAgbVJhd1ggPSBpbi5yZWFkRmxvYXQoKTsKLSAgICAgICAgbVJhd1kgPSBpbi5yZWFkRmxvYXQoKTsKLSAgICAgICAgZmluYWwgaW50IE5QID0gaW4ucmVhZEludCgpOwotICAgICAgICBtTnVtUG9pbnRlcnMgPSBOUDsKLSAgICAgICAgZmluYWwgaW50IE5TID0gaW4ucmVhZEludCgpOwotICAgICAgICBtTnVtU2FtcGxlcyA9IE5TOwotICAgICAgICBmaW5hbCBpbnQgTkkgPSBOUCpOUzsKLSAgICAgICAgaWYgKE5JID4gMCkgewotICAgICAgICAgICAgaW50W10gaWRzID0gbVBvaW50ZXJJZGVudGlmaWVyczsKLSAgICAgICAgICAgIGlmIChpZHMubGVuZ3RoIDwgTlApIHsKLSAgICAgICAgICAgICAgICBtUG9pbnRlcklkZW50aWZpZXJzID0gaWRzID0gbmV3IGludFtOUF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TlA7IGkrKykgewotICAgICAgICAgICAgICAgIGlkc1tpXSA9IGluLnJlYWRJbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZsb2F0W10gaGlzdG9yeSA9IG1EYXRhU2FtcGxlczsKLSAgICAgICAgICAgIGZpbmFsIGludCBORCA9IE5JKk5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgICAgIGlmIChoaXN0b3J5Lmxlbmd0aCA8IE5EKSB7Ci0gICAgICAgICAgICAgICAgbURhdGFTYW1wbGVzID0gaGlzdG9yeSA9IG5ldyBmbG9hdFtORF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TkQ7IGkrKykgewotICAgICAgICAgICAgICAgIGhpc3RvcnlbaV0gPSBpbi5yZWFkRmxvYXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxvbmdbXSB0aW1lcyA9IG1UaW1lU2FtcGxlczsKLSAgICAgICAgICAgIGlmICh0aW1lcyA9PSBudWxsIHx8IHRpbWVzLmxlbmd0aCA8IE5TKSB7Ci0gICAgICAgICAgICAgICAgbVRpbWVTYW1wbGVzID0gdGltZXMgPSBuZXcgbG9uZ1tOU107Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TlM7IGkrKykgewotICAgICAgICAgICAgICAgIHRpbWVzW2ldID0gaW4ucmVhZExvbmcoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgb3V0LndyaXRlSW50KG1NZXRhU3RhdGUpOworICAgICAgICAKKyAgICAgICAgZmluYWwgaW50W10gcG9pbnRlcklkZW50aWZpZXJzID0gbVBvaW50ZXJJZGVudGlmaWVyczsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOUDsgaSsrKSB7CisgICAgICAgICAgICBvdXQud3JpdGVJbnQocG9pbnRlcklkZW50aWZpZXJzW2ldKTsKICAgICAgICAgfQotICAgICAgICBtWFByZWNpc2lvbiA9IGluLnJlYWRGbG9hdCgpOwotICAgICAgICBtWVByZWNpc2lvbiA9IGluLnJlYWRGbG9hdCgpOwotICAgICAgICBtRGV2aWNlSWQgPSBpbi5yZWFkSW50KCk7Ci0gICAgICAgIG1FZGdlRmxhZ3MgPSBpbi5yZWFkSW50KCk7Ci0gICAgfQorICAgICAgICAKKyAgICAgICAgZmluYWwgbG9uZ1tdIGV2ZW50VGltZU5hbm9TYW1wbGVzID0gbUV2ZW50VGltZU5hbm9TYW1wbGVzOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5TOyBpKyspIHsKKyAgICAgICAgICAgIG91dC53cml0ZUxvbmcoZXZlbnRUaW1lTmFub1NhbXBsZXNbaV0pOworICAgICAgICB9CiAKKyAgICAgICAgZmluYWwgZmxvYXRbXSBkYXRhU2FtcGxlcyA9IG1EYXRhU2FtcGxlczsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOSTsgaSsrKSB7CisgICAgICAgICAgICBvdXQud3JpdGVGbG9hdChkYXRhU2FtcGxlc1tpXSk7CisgICAgICAgIH0KKyAgICB9CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1N1cmZhY2UuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZS5qYXZhCmluZGV4IDgzZWY4YmEuLmNkMGFlM2IgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZS5qYXZhCkBAIC0xNDAsMTMgKzE0MCwxMyBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdTX09SSUVOVEFUSU9OX0FOSU1BVElPTl9ESVNBQkxFID0gMHgwMDAwMDAwMDE7CiAKICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKLSAgICBwcml2YXRlIGludCBtU3VyZmFjZTsKLSAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKICAgICBwcml2YXRlIGludCBtU3VyZmFjZUNvbnRyb2w7CiAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCiAgICAgcHJpdmF0ZSBpbnQgbVNhdmVDb3VudDsKICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKICAgICBwcml2YXRlIENhbnZhcyBtQ2FudmFzOworICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgIHByaXZhdGUgaW50IG1OYXRpdmVTdXJmYWNlOwogICAgIHByaXZhdGUgU3RyaW5nIG1OYW1lOwogCiAgICAgLy8gVGhlIGRpc3BsYXkgbWV0cmljcyB1c2VkIHRvIHByb3ZpZGUgdGhlIHBzZXVkbyBjYW52YXMgc2l6ZSBmb3IgYXBwbGljYXRpb25zCkBAIC00MjIsMTMgKzQyMiwxMyBAQAogICAgIC8qIG5vIHVzZXIgc2VydmljZWFibGUgcGFydHMgaGVyZSAuLi4gKi8KICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHRocm93cyBUaHJvd2FibGUgewotICAgICAgICBpZiAobVN1cmZhY2UgIT0gMCB8fCBtU3VyZmFjZUNvbnRyb2wgIT0gMCkgeworICAgICAgICBpZiAobU5hdGl2ZVN1cmZhY2UgIT0gMCB8fCBtU3VyZmFjZUNvbnRyb2wgIT0gMCkgewogICAgICAgICAgICAgaWYgKERFQlVHX1JFTEVBU0UpIHsKICAgICAgICAgICAgICAgICBMb2cudyhMT0dfVEFHLCAiU3VyZmFjZS5maW5hbGl6ZSgpIGhhcyB3b3JrLiBZb3Ugc2hvdWxkIGhhdmUgY2FsbGVkIHJlbGVhc2UoKSAoIiAKLSAgICAgICAgICAgICAgICAgICAgICAgICsgbVN1cmZhY2UgKyAiLCAiICsgbVN1cmZhY2VDb250cm9sICsgIikiLCBtQ3JlYXRpb25TdGFjayk7CisgICAgICAgICAgICAgICAgICAgICAgICArIG1OYXRpdmVTdXJmYWNlICsgIiwgIiArIG1TdXJmYWNlQ29udHJvbCArICIpIiwgbUNyZWF0aW9uU3RhY2spOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMb2cudyhMT0dfVEFHLCAiU3VyZmFjZS5maW5hbGl6ZSgpIGhhcyB3b3JrLiBZb3Ugc2hvdWxkIGhhdmUgY2FsbGVkIHJlbGVhc2UoKSAoIiAKLSAgICAgICAgICAgICAgICAgICAgICAgICsgbVN1cmZhY2UgKyAiLCAiICsgbVN1cmZhY2VDb250cm9sICsgIikiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsgbU5hdGl2ZVN1cmZhY2UgKyAiLCAiICsgbVN1cmZhY2VDb250cm9sICsgIikiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1N1cmZhY2VIb2xkZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZUhvbGRlci5qYXZhCmluZGV4IDY0YTEwZDEuLjM0ZTQ2MzggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZUhvbGRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZUhvbGRlci5qYXZhCkBAIC0xODIsNyArMTgyLDYgQEAKICAgICAvKioKICAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb24gdG8ga2VlcCB0aGUgc2NyZWVuIHR1cm5lZCBvbiB3aGlsZSB0aGlzCiAgICAgICogc3VyZmFjZSBpcyBkaXNwbGF5ZWQuICBUaGUgZGVmYXVsdCBpcyBmYWxzZSwgYWxsb3dpbmcgaXQgdG8gdHVybiBvZmYuCi0gICAgICogRW5hYmxpbmcgdGhlIG9wdGlvbiBlZmZlY3RpdmVsdHkuCiAgICAgICogVGhpcyBpcyBzYWZlIHRvIGNhbGwgZnJvbSBhbnkgdGhyZWFkLgogICAgICAqIAogICAgICAqIEBwYXJhbSBzY3JlZW5PbiBTdXBwbHkgdG8gdHJ1ZSB0byBmb3JjZSB0aGUgc2NyZWVuIHRvIHN0YXkgb24sIGZhbHNlCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1N1cmZhY2VWaWV3LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1N1cmZhY2VWaWV3LmphdmEKaW5kZXggNTNmMGMyZS4uZDFhMGY3NSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlVmlldy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZVZpZXcuamF2YQpAQCAtMTQxLDcgKzE0MSwxMCBAQAogICAgIGJvb2xlYW4gbVZpZXdWaXNpYmlsaXR5ID0gZmFsc2U7CiAgICAgaW50IG1SZXF1ZXN0ZWRXaWR0aCA9IC0xOwogICAgIGludCBtUmVxdWVzdGVkSGVpZ2h0ID0gLTE7Ci0gICAgaW50IG1SZXF1ZXN0ZWRGb3JtYXQgPSBQaXhlbEZvcm1hdC5PUEFRVUU7CisgICAgLyogU2V0IFN1cmZhY2VWaWV3J3MgZm9ybWF0IHRvIDU2NSBieSBkZWZhdWx0IHRvIG1haW50YWluIGJhY2t3YXJkCisgICAgICogY29tcGF0aWJpbGl0eSB3aXRoIGFwcGxpY2F0aW9ucyBhc3N1bWluZyB0aGlzIGZvcm1hdC4KKyAgICAgKi8KKyAgICBpbnQgbVJlcXVlc3RlZEZvcm1hdCA9IFBpeGVsRm9ybWF0LlJHQl81NjU7CiAgICAgaW50IG1SZXF1ZXN0ZWRUeXBlID0gLTE7CiAKICAgICBib29sZWFuIG1IYXZlRnJhbWUgPSBmYWxzZTsKQEAgLTE2NCwxNiArMTY3LDIwIEBACiAgICAgCiAgICAgcHVibGljIFN1cmZhY2VWaWV3KENvbnRleHQgY29udGV4dCkgewogICAgICAgICBzdXBlcihjb250ZXh0KTsKLSAgICAgICAgc2V0V2lsbE5vdERyYXcodHJ1ZSk7CisgICAgICAgIGluaXQoKTsKICAgICB9CiAgICAgCiAgICAgcHVibGljIFN1cmZhY2VWaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CiAgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKLSAgICAgICAgc2V0V2lsbE5vdERyYXcodHJ1ZSk7CisgICAgICAgIGluaXQoKTsKICAgICB9CiAKICAgICBwdWJsaWMgU3VyZmFjZVZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMsIGludCBkZWZTdHlsZSkgewogICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycywgZGVmU3R5bGUpOworICAgICAgICBpbml0KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluaXQoKSB7CiAgICAgICAgIHNldFdpbGxOb3REcmF3KHRydWUpOwogICAgIH0KICAgICAKQEAgLTQ2NCw3ICs0NzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBtV2luZG93ID0gbmV3IE15V2luZG93KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBtTGF5b3V0LnR5cGUgPSBtV2luZG93VHlwZTsKICAgICAgICAgICAgICAgICAgICAgbUxheW91dC5ncmF2aXR5ID0gR3Jhdml0eS5MRUZUfEdyYXZpdHkuVE9QOwotICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbi5hZGQobVdpbmRvdywgbUxheW91dCwKKyAgICAgICAgICAgICAgICAgICAgbVNlc3Npb24uYWRkV2l0aG91dElucHV0Q2hhbm5lbChtV2luZG93LCBtTGF5b3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1WaXNpYmxlID8gVklTSUJMRSA6IEdPTkUsIG1Db250ZW50SW5zZXRzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkBAIC03MTcsNiArNzI0LDEyIEBACiAgICAgICAgIH0KIAogICAgICAgICBwdWJsaWMgdm9pZCBzZXRGb3JtYXQoaW50IGZvcm1hdCkgeworCisgICAgICAgICAgICAvLyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb24sIE9QQVFVRSBhbHdheXMKKyAgICAgICAgICAgIC8vIG1lYW5zIDU2NSBmb3IgU3VyZmFjZVZpZXcKKyAgICAgICAgICAgIGlmIChmb3JtYXQgPT0gUGl4ZWxGb3JtYXQuT1BBUVVFKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IFBpeGVsRm9ybWF0LlJHQl81NjU7CisKICAgICAgICAgICAgIG1SZXF1ZXN0ZWRGb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAgICAgICBpZiAobVdpbmRvdyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlV2luZG93KGZhbHNlKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmVsb2NpdHlUcmFja2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZlbG9jaXR5VHJhY2tlci5qYXZhCmluZGV4IGFhYjc2YzQuLmU2OWI4MDcgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmVsb2NpdHlUcmFja2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WZWxvY2l0eVRyYWNrZXIuamF2YQpAQCAtMjA2LDcgKzIwNiw3IEBACiAgICAgICAgICAgICBmaW5hbCBsb25nIG9sZGVzdFRpbWUgPSBwYXN0VGltZVtvbGRlc3RUb3VjaF07CiAgICAgICAgICAgICBmbG9hdCBhY2N1bVggPSAwOwogICAgICAgICAgICAgZmxvYXQgYWNjdW1ZID0gMDsKLSAgICAgICAgICAgIGZsb2F0IE4gPSAobGFzdFRvdWNoIC0gb2xkZXN0VG91Y2ggKyBOVU1fUEFTVCkgJSBOVU1fUEFTVCArIDE7CisgICAgICAgICAgICBpbnQgTiA9IChsYXN0VG91Y2ggLSBvbGRlc3RUb3VjaCArIE5VTV9QQVNUKSAlIE5VTV9QQVNUICsgMTsKICAgICAgICAgICAgIC8vIFNraXAgdGhlIGxhc3QgcmVjZWl2ZWQgZXZlbnQsIHNpbmNlIGl0IGlzIHByb2JhYmx5IHByZXR0eSBub2lzeS4KICAgICAgICAgICAgIGlmIChOID4gMykgTi0tOwogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZpZXdHcm91cC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3R3JvdXAuamF2YQppbmRleCBlY2E1ODNmLi5lN2I2YzUwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZpZXdHcm91cC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmlld0dyb3VwLmphdmEKQEAgLTIyMyw4ICsyMjMsOSBAQAogCiAgICAgLyoqCiAgICAgICogV2hlbiBzZXQsIHRoaXMgVmlld0dyb3VwIHNob3VsZCBub3QgaW50ZXJjZXB0IHRvdWNoIGV2ZW50cy4KKyAgICAgKiB7QGhpZGV9CiAgICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZMQUdfRElTQUxMT1dfSU5URVJDRVBUID0gMHg4MDAwMDsKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBGTEFHX0RJU0FMTE9XX0lOVEVSQ0VQVCA9IDB4ODAwMDA7CiAKICAgICAvKioKICAgICAgKiBJbmRpY2F0ZXMgd2hpY2ggdHlwZXMgb2YgZHJhd2luZyBjYWNoZXMgYXJlIHRvIGJlIGtlcHQgaW4gbWVtb3J5LgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3Um9vdC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3Um9vdC5qYXZhCmluZGV4IDAzZWZlYTkuLjFkYzgyZTggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmlld1Jvb3QuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZpZXdSb290LmphdmEKQEAgLTE2LDggKzE2LDEwIEBACiAKIHBhY2thZ2UgYW5kcm9pZC52aWV3OwogCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5CYXNlU3VyZmFjZUhvbGRlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LklJbnB1dE1ldGhvZENhbGxiYWNrOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kU2Vzc2lvbjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LlJvb3RWaWV3U3VyZmFjZVRha2VyOwogCiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKQEAgLTI2LDEyICsyOCwxMiBAQAogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uOwogaW1wb3J0IGFuZHJvaWQub3MuKjsKIGltcG9ydCBhbmRyb2lkLm9zLlByb2Nlc3M7Ci1pbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5BbmRyb2lkUnVudGltZUV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLnV0aWwuQ29uZmlnOwogaW1wb3J0IGFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljczsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogaW1wb3J0IGFuZHJvaWQudXRpbC5FdmVudExvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXk7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXcuTWVhc3VyZVNwZWM7CiBpbXBvcnQgYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50OwpAQCAtNTAsNiArNTIsNyBAQAogaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyOwogCiBpbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOworaW1wb3J0IGphdmEuaW8uRmlsZURlc2NyaXB0b3I7CiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwpAQCAtNzYsNiArNzksNyBAQAogICAgIC8qKiBAbm9pbnNwZWN0aW9uIFBvaW50bGVzc0Jvb2xlYW5FeHByZXNzaW9uKi8KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0RSQVcgPSBmYWxzZSB8fCBMT0NBTF9MT0dWOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfTEFZT1VUID0gZmFsc2UgfHwgTE9DQUxfTE9HVjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0lOUFVUID0gdHJ1ZSB8fCBMT0NBTF9MT0dWOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfSU5QVVRfUkVTSVpFID0gZmFsc2UgfHwgTE9DQUxfTE9HVjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX09SSUVOVEFUSU9OID0gZmFsc2UgfHwgTE9DQUxfTE9HVjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1RSQUNLQkFMTCA9IGZhbHNlIHx8IExPQ0FMX0xPR1Y7CkBAIC0xMzMsNiArMTM3LDExIEBACiAgICAgaW50IG1WaWV3VmlzaWJpbGl0eTsKICAgICBib29sZWFuIG1BcHBWaXNpYmxlID0gdHJ1ZTsKIAorICAgIFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgbVN1cmZhY2VIb2xkZXJDYWxsYmFjazsKKyAgICBCYXNlU3VyZmFjZUhvbGRlciBtU3VyZmFjZUhvbGRlcjsKKyAgICBib29sZWFuIG1Jc0NyZWF0aW5nOworICAgIGJvb2xlYW4gbURyYXdpbmdBbGxvd2VkOworICAgIAogICAgIGZpbmFsIFJlZ2lvbiBtVHJhbnNwYXJlbnRSZWdpb247CiAgICAgZmluYWwgUmVnaW9uIG1QcmV2aW91c1RyYW5zcGFyZW50UmVnaW9uOwogCkBAIC0xNDQsNyArMTUzLDEwIEBACiAgICAgQ29tcGF0aWJpbGl0eUluZm8uVHJhbnNsYXRvciBtVHJhbnNsYXRvcjsKIAogICAgIGZpbmFsIFZpZXcuQXR0YWNoSW5mbyBtQXR0YWNoSW5mbzsKLQorICAgIElucHV0Q2hhbm5lbCBtSW5wdXRDaGFubmVsOworICAgIElucHV0UXVldWUuQ2FsbGJhY2sgbUlucHV0UXVldWVDYWxsYmFjazsKKyAgICBJbnB1dFF1ZXVlIG1JbnB1dFF1ZXVlOworICAgIAogICAgIGZpbmFsIFJlY3QgbVRlbXBSZWN0OyAvLyB1c2VkIGluIHRoZSB0cmFuc2FjdGlvbiB0byBub3QgdGhyYXNoIHRoZSBoZWFwLgogICAgIGZpbmFsIFJlY3QgbVZpc1JlY3Q7IC8vIHVzZWQgdG8gcmV0cmlldmUgdmlzaWJsZSByZWN0IG9mIGZvY3VzZWQgdmlldy4KIApAQCAtMjEwLDcgKzIyMiw3IEBACiAgICAgQXVkaW9NYW5hZ2VyIG1BdWRpb01hbmFnZXI7CiAKICAgICBwcml2YXRlIGZpbmFsIGludCBtRGVuc2l0eTsKLQorICAgIAogICAgIHB1YmxpYyBzdGF0aWMgSVdpbmRvd1Nlc3Npb24gZ2V0V2luZG93U2Vzc2lvbihMb29wZXIgbWFpbkxvb3BlcikgewogICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdGF0aWNJbml0KSB7CiAgICAgICAgICAgICBpZiAoIW1Jbml0aWFsaXplZCkgewpAQCAtNDM1LDYgKzQ0NywxMyBAQAogICAgICAgICAgICAgICAgIG1WaWV3ID0gdmlldzsKICAgICAgICAgICAgICAgICBtV2luZG93QXR0cmlidXRlcy5jb3B5RnJvbShhdHRycyk7CiAgICAgICAgICAgICAgICAgYXR0cnMgPSBtV2luZG93QXR0cmlidXRlczsKKyAgICAgICAgICAgICAgICBpZiAodmlldyBpbnN0YW5jZW9mIFJvb3RWaWV3U3VyZmFjZVRha2VyKSB7CisgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyQ2FsbGJhY2sgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUm9vdFZpZXdTdXJmYWNlVGFrZXIpdmlldykud2lsbFlvdVRha2VUaGVTdXJmYWNlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtU3VyZmFjZUhvbGRlckNhbGxiYWNrICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyID0gbmV3IFRha2VuU3VyZmFjZUhvbGRlcigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFJlc291cmNlcyByZXNvdXJjZXMgPSBtVmlldy5nZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCk7CiAgICAgICAgICAgICAgICAgQ29tcGF0aWJpbGl0eUluZm8gY29tcGF0aWJpbGl0eUluZm8gPSByZXNvdXJjZXMuZ2V0Q29tcGF0aWJpbGl0eUluZm8oKTsKICAgICAgICAgICAgICAgICBtVHJhbnNsYXRvciA9IGNvbXBhdGliaWxpdHlJbmZvLmdldFRyYW5zbGF0b3IoKTsKQEAgLTQ3MywxMyArNDkyLDE2IEBACiAgICAgICAgICAgICAgICAgLy8gbWFuYWdlciwgdG8gbWFrZSBzdXJlIHdlIGRvIHRoZSByZWxheW91dCBiZWZvcmUgcmVjZWl2aW5nCiAgICAgICAgICAgICAgICAgLy8gYW55IG90aGVyIGV2ZW50cyBmcm9tIHRoZSBzeXN0ZW0uCiAgICAgICAgICAgICAgICAgcmVxdWVzdExheW91dCgpOworICAgICAgICAgICAgICAgIG1JbnB1dENoYW5uZWwgPSBuZXcgSW5wdXRDaGFubmVsKCk7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgcmVzID0gc1dpbmRvd1Nlc3Npb24uYWRkKG1XaW5kb3csIG1XaW5kb3dBdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEhvc3RWaXNpYmlsaXR5KCksIG1BdHRhY2hJbmZvLm1Db250ZW50SW5zZXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRIb3N0VmlzaWJpbGl0eSgpLCBtQXR0YWNoSW5mby5tQ29udGVudEluc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsKTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgICAgICBtQWRkZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgbVZpZXcgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICBtQXR0YWNoSW5mby5tUm9vdFZpZXcgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgdW5zY2hlZHVsZVRyYXZlcnNhbHMoKTsKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkFkZGluZyB3aW5kb3cgZmFpbGVkIiwgZSk7CiAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKQEAgLTQ4Nyw3ICs1MDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1UcmFuc2xhdG9yICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgbVRyYW5zbGF0b3IudHJhbnNsYXRlUmVjdEluU2NyZWVuVG9BcHBXaW5kb3cobUF0dGFjaEluZm8ubUNvbnRlbnRJbnNldHMpOwogICAgICAgICAgICAgICAgIH0KQEAgLTUzMyw2ICs1NTUsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGFkZCB3aW5kb3cgLS0gdW5rbm93biBlcnJvciBjb2RlICIgKyByZXMpOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChXaW5kb3dNYW5hZ2VyUG9saWN5LkVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXcgaW5zdGFuY2VvZiBSb290Vmlld1N1cmZhY2VUYWtlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0UXVldWVDYWxsYmFjayA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSb290Vmlld1N1cmZhY2VUYWtlcil2aWV3KS53aWxsWW91VGFrZVRoZUlucHV0UXVldWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobUlucHV0UXVldWVDYWxsYmFjayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtSW5wdXRRdWV1ZSA9IG5ldyBJbnB1dFF1ZXVlKG1JbnB1dENoYW5uZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0UXVldWVDYWxsYmFjay5vbklucHV0UXVldWVDcmVhdGVkKG1JbnB1dFF1ZXVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIElucHV0UXVldWUucmVnaXN0ZXJJbnB1dENoYW5uZWwobUlucHV0Q2hhbm5lbCwgbUlucHV0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vcGVyLm15UXVldWUoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgdmlldy5hc3NpZ25QYXJlbnQodGhpcyk7CiAgICAgICAgICAgICAgICAgbUFkZGVkVG91Y2hNb2RlID0gKHJlcyZXaW5kb3dNYW5hZ2VySW1wbC5BRERfRkxBR19JTl9UT1VDSF9NT0RFKSAhPSAwOwogICAgICAgICAgICAgICAgIG1BcHBWaXNpYmxlID0gKHJlcyZXaW5kb3dNYW5hZ2VySW1wbC5BRERfRkxBR19BUFBfVklTSUJMRSkgIT0gMDsKQEAgLTY4Miw2ICs3MTksNyBAQAogICAgICAgICBib29sZWFuIHdpbmRvd1Jlc2l6ZXNUb0ZpdENvbnRlbnQgPSBmYWxzZTsKICAgICAgICAgYm9vbGVhbiBmdWxsUmVkcmF3TmVlZGVkID0gbUZ1bGxSZWRyYXdOZWVkZWQ7CiAgICAgICAgIGJvb2xlYW4gbmV3U3VyZmFjZSA9IGZhbHNlOworICAgICAgICBib29sZWFuIHN1cmZhY2VDaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwID0gbVdpbmRvd0F0dHJpYnV0ZXM7CiAKICAgICAgICAgaW50IGRlc2lyZWRXaW5kb3dXaWR0aDsKQEAgLTcwMCw2ICs3MzgsNyBAQAogICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBwYXJhbXMgPSBudWxsOwogICAgICAgICBpZiAobVdpbmRvd0F0dHJpYnV0ZXNDaGFuZ2VkKSB7CiAgICAgICAgICAgICBtV2luZG93QXR0cmlidXRlc0NoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHN1cmZhY2VDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIHBhcmFtcyA9IGxwOwogICAgICAgICB9CiAgICAgICAgIFJlY3QgZnJhbWUgPSBtV2luRnJhbWU7CkBAIC04ODYsMTEgKzkyNSwxOCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKG1TdXJmYWNlSG9sZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tU3VyZmFjZUxvY2subG9jaygpOworICAgICAgICAgICAgICAgIG1EcmF3aW5nQWxsb3dlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgbHAuZm9ybWF0ID0gbVN1cmZhY2VIb2xkZXIuZ2V0UmVxdWVzdGVkRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgbHAudHlwZSA9IG1TdXJmYWNlSG9sZGVyLmdldFJlcXVlc3RlZFR5cGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgYm9vbGVhbiBpbml0aWFsaXplZCA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbGVhbiBjb250ZW50SW5zZXRzQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbGVhbiB2aXNpYmxlSW5zZXRzQ2hhbmdlZDsKKyAgICAgICAgICAgIGJvb2xlYW4gaGFkU3VyZmFjZSA9IG1TdXJmYWNlLmlzVmFsaWQoKTsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYm9vbGVhbiBoYWRTdXJmYWNlID0gbVN1cmZhY2UuaXNWYWxpZCgpOwogICAgICAgICAgICAgICAgIGludCBmbCA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIGZsID0gcGFyYW1zLmZsYWdzOwpAQCAtOTY1LDYgKzEwMTEsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChERUJVR19PUklFTlRBVElPTikgTG9nLnYoCiAgICAgICAgICAgICAgICAgICAgICJWaWV3Um9vdCIsICJSZWxheW91dCByZXR1cm5lZDogZnJhbWU9IiArIGZyYW1lICsgIiwgc3VyZmFjZT0iICsgbVN1cmZhY2UpOwogCkBAIC05NzcsNiArMTAyNCw1NyBAQAogICAgICAgICAgICAgbVdpZHRoID0gZnJhbWUud2lkdGgoKTsKICAgICAgICAgICAgIG1IZWlnaHQgPSBmcmFtZS5oZWlnaHQoKTsKIAorICAgICAgICAgICAgaWYgKG1TdXJmYWNlSG9sZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgYXBwIG93bnMgdGhlIHN1cmZhY2U7IHRlbGwgaXQgYWJvdXQgd2hhdCBpcyBnb2luZyBvbi4KKyAgICAgICAgICAgICAgICBpZiAobVN1cmZhY2UuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFhYWCAuY29weUZyb20oKSBkb2Vzbid0IHdvcmshCisgICAgICAgICAgICAgICAgICAgIC8vbVN1cmZhY2VIb2xkZXIubVN1cmZhY2UuY29weUZyb20obVN1cmZhY2UpOworICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tU3VyZmFjZSA9IG1TdXJmYWNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tU3VyZmFjZUxvY2sudW5sb2NrKCk7CisgICAgICAgICAgICAgICAgaWYgKG1TdXJmYWNlLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWhhZFN1cmZhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLnVuZ2V0Q2FsbGJhY2tzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Jc0NyZWF0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyQ2FsbGJhY2suc3VyZmFjZUNyZWF0ZWQobVN1cmZhY2VIb2xkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG1TdXJmYWNlSG9sZGVyLmdldENhbGxiYWNrcygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIGMgOiBjYWxsYmFja3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zdXJmYWNlQ3JlYXRlZChtU3VyZmFjZUhvbGRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZUNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlQ2hhbmdlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXJDYWxsYmFjay5zdXJmYWNlQ2hhbmdlZChtU3VyZmFjZUhvbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHAuZm9ybWF0LCBtV2lkdGgsIG1IZWlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG1TdXJmYWNlSG9sZGVyLmdldENhbGxiYWNrcygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIGMgOiBjYWxsYmFja3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zdXJmYWNlQ2hhbmdlZChtU3VyZmFjZUhvbGRlciwgbHAuZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1XaWR0aCwgbUhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1Jc0NyZWF0aW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYWRTdXJmYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLnVuZ2V0Q2FsbGJhY2tzKCk7CisgICAgICAgICAgICAgICAgICAgIFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgY2FsbGJhY2tzW10gPSBtU3VyZmFjZUhvbGRlci5nZXRDYWxsYmFja3MoKTsKKyAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXJDYWxsYmFjay5zdXJmYWNlRGVzdHJveWVkKG1TdXJmYWNlSG9sZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgYyA6IGNhbGxiYWNrcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuc3VyZmFjZURlc3Ryb3llZChtU3VyZmFjZUhvbGRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXIubVN1cmZhY2VMb2NrLmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJmYWNlIGludmFsaWQuCisgICAgICAgICAgICAgICAgICAgIC8vbVN1cmZhY2VIb2xkZXIubVN1cmZhY2UuY29weUZyb20obVN1cmZhY2UpOworICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tU3VyZmFjZSA9IG5ldyBTdXJmYWNlKCk7CisgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLm1TdXJmYWNlTG9jay51bmxvY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpbml0aWFsaXplZCkgewogICAgICAgICAgICAgICAgIG1HbENhbnZhcy5zZXRWaWV3cG9ydCgoaW50KSAobVdpZHRoICogYXBwU2NhbGUgKyAwLjVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIChtSGVpZ2h0ICogYXBwU2NhbGUgKyAwLjVmKSk7CkBAIC0xMjY4LDYgKzEzNjYsMTIgQEAKICAgICAgICAgYm9vbGVhbiBzY2FsaW5nUmVxdWlyZWQgPSBtQXR0YWNoSW5mby5tU2NhbGluZ1JlcXVpcmVkOwogCiAgICAgICAgIFJlY3QgZGlydHkgPSBtRGlydHk7CisgICAgICAgIGlmIChtU3VyZmFjZUhvbGRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBUaGUgYXBwIG93bnMgdGhlIHN1cmZhY2UsIHdlIHdvbid0IGRyYXcuCisgICAgICAgICAgICBkaXJ0eS5zZXRFbXB0eSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAobVVzZUdMKSB7CiAgICAgICAgICAgICBpZiAoIWRpcnR5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIENhbnZhcyBjYW52YXMgPSBtR2xDYW52YXM7CkBAIC0xMzMyLDEwMyArMTQzNiwxMDUgQEAKICAgICAgICAgICAgICAgICAgICAgYXBwU2NhbGUgKyAiLCB3aWR0aD0iICsgbVdpZHRoICsgIiwgaGVpZ2h0PSIgKyBtSGVpZ2h0KTsKICAgICAgICAgfQogCi0gICAgICAgIENhbnZhcyBjYW52YXM7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpbnQgbGVmdCA9IGRpcnR5LmxlZnQ7Ci0gICAgICAgICAgICBpbnQgdG9wID0gZGlydHkudG9wOwotICAgICAgICAgICAgaW50IHJpZ2h0ID0gZGlydHkucmlnaHQ7Ci0gICAgICAgICAgICBpbnQgYm90dG9tID0gZGlydHkuYm90dG9tOwotICAgICAgICAgICAgY2FudmFzID0gc3VyZmFjZS5sb2NrQ2FudmFzKGRpcnR5KTsKKyAgICAgICAgaWYgKCFkaXJ0eS5pc0VtcHR5KCkgfHwgbUlzQW5pbWF0aW5nKSB7CisgICAgICAgICAgICBDYW52YXMgY2FudmFzOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbnQgbGVmdCA9IGRpcnR5LmxlZnQ7CisgICAgICAgICAgICAgICAgaW50IHRvcCA9IGRpcnR5LnRvcDsKKyAgICAgICAgICAgICAgICBpbnQgcmlnaHQgPSBkaXJ0eS5yaWdodDsKKyAgICAgICAgICAgICAgICBpbnQgYm90dG9tID0gZGlydHkuYm90dG9tOworICAgICAgICAgICAgICAgIGNhbnZhcyA9IHN1cmZhY2UubG9ja0NhbnZhcyhkaXJ0eSk7CiAKLSAgICAgICAgICAgIGlmIChsZWZ0ICE9IGRpcnR5LmxlZnQgfHwgdG9wICE9IGRpcnR5LnRvcCB8fCByaWdodCAhPSBkaXJ0eS5yaWdodCB8fAotICAgICAgICAgICAgICAgICAgICBib3R0b20gIT0gZGlydHkuYm90dG9tKSB7Ci0gICAgICAgICAgICAgICAgbUF0dGFjaEluZm8ubUlnbm9yZURpcnR5U3RhdGUgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChsZWZ0ICE9IGRpcnR5LmxlZnQgfHwgdG9wICE9IGRpcnR5LnRvcCB8fCByaWdodCAhPSBkaXJ0eS5yaWdodCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tICE9IGRpcnR5LmJvdHRvbSkgeworICAgICAgICAgICAgICAgICAgICBtQXR0YWNoSW5mby5tSWdub3JlRGlydHlTdGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVE9ETzogRG8gdGhpcyBpbiBuYXRpdmUKKyAgICAgICAgICAgICAgICBjYW52YXMuc2V0RGVuc2l0eShtRGVuc2l0eSk7CisgICAgICAgICAgICB9IGNhdGNoIChTdXJmYWNlLk91dE9mUmVzb3VyY2VzRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuZSgiVmlld1Jvb3QiLCAiT3V0T2ZSZXNvdXJjZXNFeGNlcHRpb24gbG9ja2luZyBzdXJmYWNlIiwgZSk7CisgICAgICAgICAgICAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIGFzayB0aGUgd2luZG93IG1hbmFnZXIgdG8gZG8gc29tZXRoaW5nIQorICAgICAgICAgICAgICAgIC8vIGZvciBub3cgd2UganVzdCBkbyBub3RoaW5nCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuZSgiVmlld1Jvb3QiLCAiSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGxvY2tpbmcgc3VyZmFjZSIsIGUpOworICAgICAgICAgICAgICAgIC8vIFRPRE86IHdlIHNob3VsZCBhc2sgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvIGRvIHNvbWV0aGluZyEKKyAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHdlIGp1c3QgZG8gbm90aGluZworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gVE9ETzogRG8gdGhpcyBpbiBuYXRpdmUKLSAgICAgICAgICAgIGNhbnZhcy5zZXREZW5zaXR5KG1EZW5zaXR5KTsKLSAgICAgICAgfSBjYXRjaCAoU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBMb2cuZSgiVmlld1Jvb3QiLCAiT3V0T2ZSZXNvdXJjZXNFeGNlcHRpb24gbG9ja2luZyBzdXJmYWNlIiwgZSk7Ci0gICAgICAgICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgYXNrIHRoZSB3aW5kb3cgbWFuYWdlciB0byBkbyBzb21ldGhpbmchCi0gICAgICAgICAgICAvLyBmb3Igbm93IHdlIGp1c3QgZG8gbm90aGluZwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgTG9nLmUoIlZpZXdSb290IiwgIklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBsb2NraW5nIHN1cmZhY2UiLCBlKTsKLSAgICAgICAgICAgIC8vIFRPRE86IHdlIHNob3VsZCBhc2sgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvIGRvIHNvbWV0aGluZyEKLSAgICAgICAgICAgIC8vIGZvciBub3cgd2UganVzdCBkbyBub3RoaW5nCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKCFkaXJ0eS5pc0VtcHR5KCkgfHwgbUlzQW5pbWF0aW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gMEw7CiAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmICghZGlydHkuaXNFbXB0eSgpIHx8IG1Jc0FuaW1hdGluZykgewotICAgICAgICAgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gMEw7Ci0KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfT1JJRU5UQVRJT04gfHwgREVCVUdfRFJBVykgewotICAgICAgICAgICAgICAgICAgICBMb2cudigiVmlld1Jvb3QiLCAiU3VyZmFjZSAiICsgc3VyZmFjZSArICIgZHJhd2luZyB0byBiaXRtYXAgdz0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjYW52YXMuZ2V0V2lkdGgoKSArICIsIGg9IiArIGNhbnZhcy5nZXRIZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIC8vY2FudmFzLmRyYXdBUkdCKDI1NSwgMjU1LCAwLCAwKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkRFQlVHICYmIFZpZXdEZWJ1Zy5wcm9maWxlRHJhd2luZykgewotICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGJpdG1hcCdzIGZvcm1hdCBpbmNsdWRlcyBhbiBhbHBoYSBjaGFubmVsLCB3ZQotICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gY2xlYXIgaXQgYmVmb3JlIGRyYXdpbmcgc28gdGhhdCB0aGUgY2hpbGQgd2lsbAotICAgICAgICAgICAgICAgIC8vIHByb3Blcmx5IHJlLWNvbXBvc2l0ZSBpdHMgZHJhd2luZyBvbiBhIHRyYW5zcGFyZW50Ci0gICAgICAgICAgICAgICAgLy8gYmFja2dyb3VuZC4gVGhpcyBhdXRvbWF0aWNhbGx5IHJlc3BlY3RzIHRoZSBjbGlwL2RpcnR5IHJlZ2lvbgotICAgICAgICAgICAgICAgIC8vIG9yCi0gICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGFwcGx5aW5nIGFuIG9mZnNldCwgd2UgbmVlZCB0byBjbGVhciB0aGUgYXJlYQotICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBvZmZzZXQgZG9lc24ndCBhcHBlYXIgdG8gYXZvaWQgaGF2aW5nIGdhcmJhZ2UKLSAgICAgICAgICAgICAgICAvLyBsZWZ0IGluIHRoZSBibGFuayBhcmVhcy4KLSAgICAgICAgICAgICAgICBpZiAoIWNhbnZhcy5pc09wYXF1ZSgpIHx8IHlvZmYgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjYW52YXMuZHJhd0NvbG9yKDAsIFBvcnRlckR1ZmYuTW9kZS5DTEVBUik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZGlydHkuc2V0RW1wdHkoKTsKLSAgICAgICAgICAgICAgICBtSXNBbmltYXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtQXR0YWNoSW5mby5tRHJhd2luZ1RpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgICAgICBtVmlldy5tUHJpdmF0ZUZsYWdzIHw9IFZpZXcuRFJBV047Ci0KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfRFJBVykgewotICAgICAgICAgICAgICAgICAgICBDb250ZXh0IGN4dCA9IG1WaWV3LmdldENvbnRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiRHJhd2luZzogcGFja2FnZToiICsgY3h0LmdldFBhY2thZ2VOYW1lKCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIG1ldHJpY3M9IiArIGN4dC5nZXRSZXNvdXJjZXMoKS5nZXREaXNwbGF5TWV0cmljcygpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBjb21wYXRpYmlsaXR5SW5mbz0iICsgY3h0LmdldFJlc291cmNlcygpLmdldENvbXBhdGliaWxpdHlJbmZvKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbnQgc2F2ZUNvdW50ID0gY2FudmFzLnNhdmUoQ2FudmFzLk1BVFJJWF9TQVZFX0ZMQUcpOwotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZhcy50cmFuc2xhdGUoMCwgLXlvZmYpOwotICAgICAgICAgICAgICAgICAgICBpZiAobVRyYW5zbGF0b3IgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbVRyYW5zbGF0b3IudHJhbnNsYXRlQ2FudmFzKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19PUklFTlRBVElPTiB8fCBERUJVR19EUkFXKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cudigiVmlld1Jvb3QiLCAiU3VyZmFjZSAiICsgc3VyZmFjZSArICIgZHJhd2luZyB0byBiaXRtYXAgdz0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY2FudmFzLmdldFdpZHRoKCkgKyAiLCBoPSIgKyBjYW52YXMuZ2V0SGVpZ2h0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgLy9jYW52YXMuZHJhd0FSR0IoMjU1LCAyNTUsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRTY3JlZW5EZW5zaXR5KHNjYWxpbmdSZXF1aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRGlzcGxheU1ldHJpY3MuREVOU0lUWV9ERVZJQ0UgOiAwKTsKLSAgICAgICAgICAgICAgICAgICAgbVZpZXcuZHJhdyhjYW52YXMpOwotICAgICAgICAgICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICAgICAgICAgIG1BdHRhY2hJbmZvLm1JZ25vcmVEaXJ0eVN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5yZXN0b3JlVG9Db3VudChzYXZlQ291bnQpOwotICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChDb25maWcuREVCVUcgJiYgVmlld0RlYnVnLmNvbnNpc3RlbmN5Q2hlY2tFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1WaWV3LmRpc3BhdGNoQ29uc2lzdGVuY3lDaGVjayhWaWV3RGVidWcuQ09OU0lTVEVOQ1lfRFJBV0lORyk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKFNIT1dfRlBTIHx8IENvbmZpZy5ERUJVRyAmJiBWaWV3RGVidWcuc2hvd0ZwcykgewotICAgICAgICAgICAgICAgICAgICBpbnQgbm93ID0gKGludClTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNEcmF3VGltZSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVTaG93RlBTKGNhbnZhcywgbm93IC0gc0RyYXdUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZy5ERUJVRyAmJiBWaWV3RGVidWcucHJvZmlsZURyYXdpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHNEcmF3VGltZSA9IG5vdzsKKworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGJpdG1hcCdzIGZvcm1hdCBpbmNsdWRlcyBhbiBhbHBoYSBjaGFubmVsLCB3ZQorICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGNsZWFyIGl0IGJlZm9yZSBkcmF3aW5nIHNvIHRoYXQgdGhlIGNoaWxkIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJvcGVybHkgcmUtY29tcG9zaXRlIGl0cyBkcmF3aW5nIG9uIGEgdHJhbnNwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gYmFja2dyb3VuZC4gVGhpcyBhdXRvbWF0aWNhbGx5IHJlc3BlY3RzIHRoZSBjbGlwL2RpcnR5IHJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAvLyBvcgorICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgYXBwbHlpbmcgYW4gb2Zmc2V0LCB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBhcmVhCisgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBvZmZzZXQgZG9lc24ndCBhcHBlYXIgdG8gYXZvaWQgaGF2aW5nIGdhcmJhZ2UKKyAgICAgICAgICAgICAgICAgICAgLy8gbGVmdCBpbiB0aGUgYmxhbmsgYXJlYXMuCisgICAgICAgICAgICAgICAgICAgIGlmICghY2FudmFzLmlzT3BhcXVlKCkgfHwgeW9mZiAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZHJhd0NvbG9yKDAsIFBvcnRlckR1ZmYuTW9kZS5DTEVBUik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBkaXJ0eS5zZXRFbXB0eSgpOworICAgICAgICAgICAgICAgICAgICBtSXNBbmltYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbUF0dGFjaEluZm8ubURyYXdpbmdUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgICAgIG1WaWV3Lm1Qcml2YXRlRmxhZ3MgfD0gVmlldy5EUkFXTjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfRFJBVykgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBjeHQgPSBtVmlldy5nZXRDb250ZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJEcmF3aW5nOiBwYWNrYWdlOiIgKyBjeHQuZ2V0UGFja2FnZU5hbWUoKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIG1ldHJpY3M9IiArIGN4dC5nZXRSZXNvdXJjZXMoKS5nZXREaXNwbGF5TWV0cmljcygpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgY29tcGF0aWJpbGl0eUluZm89IiArIGN4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb21wYXRpYmlsaXR5SW5mbygpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnQgc2F2ZUNvdW50ID0gY2FudmFzLnNhdmUoQ2FudmFzLk1BVFJJWF9TQVZFX0ZMQUcpOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRyYW5zbGF0ZSgwLCAteW9mZik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVRyYW5zbGF0b3IgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UcmFuc2xhdG9yLnRyYW5zbGF0ZUNhbnZhcyhjYW52YXMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldFNjcmVlbkRlbnNpdHkoc2NhbGluZ1JlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRGlzcGxheU1ldHJpY3MuREVOU0lUWV9ERVZJQ0UgOiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1WaWV3LmRyYXcoY2FudmFzKTsKKyAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1BdHRhY2hJbmZvLm1JZ25vcmVEaXJ0eVN0YXRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMucmVzdG9yZVRvQ291bnQoc2F2ZUNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuREVCVUcgJiYgVmlld0RlYnVnLmNvbnNpc3RlbmN5Q2hlY2tFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVmlldy5kaXNwYXRjaENvbnNpc3RlbmN5Q2hlY2soVmlld0RlYnVnLkNPTlNJU1RFTkNZX0RSQVdJTkcpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFNIT1dfRlBTIHx8IENvbmZpZy5ERUJVRyAmJiBWaWV3RGVidWcuc2hvd0ZwcykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vdyA9IChpbnQpU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc0RyYXdUaW1lICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVTaG93RlBTKGNhbnZhcywgbm93IC0gc0RyYXdUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNEcmF3VGltZSA9IG5vdzsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuREVCVUcgJiYgVmlld0RlYnVnLnByb2ZpbGVEcmF3aW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KDYwMDAwLCBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSAtIHN0YXJ0VGltZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkRFQlVHICYmIFZpZXdEZWJ1Zy5wcm9maWxlRHJhd2luZykgewotICAgICAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KDYwMDAwLCBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSAtIHN0YXJ0VGltZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBzdXJmYWNlLnVubG9ja0NhbnZhc0FuZFBvc3QoY2FudmFzKTsKICAgICAgICAgICAgIH0KLQotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgc3VyZmFjZS51bmxvY2tDYW52YXNBbmRQb3N0KGNhbnZhcyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoTE9DQUxfTE9HVikgewpAQCAtMTYzOSwxMCArMTc0NSwzMiBAQAogICAgICAgICB9CiAgICAgICAgIG1TdXJmYWNlLnJlbGVhc2UoKTsKIAorICAgICAgICBpZiAoV2luZG93TWFuYWdlclBvbGljeS5FTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICBpZiAobUlucHV0Q2hhbm5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKG1JbnB1dFF1ZXVlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtSW5wdXRRdWV1ZUNhbGxiYWNrLm9uSW5wdXRRdWV1ZURlc3Ryb3llZChtSW5wdXRRdWV1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1JbnB1dFF1ZXVlQ2FsbGJhY2sgPSBudWxsOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIElucHV0UXVldWUudW5yZWdpc3RlcklucHV0Q2hhbm5lbChtSW5wdXRDaGFubmVsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUlucHV0Q2hhbm5lbC5kaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgbUlucHV0Q2hhbm5lbCA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5yZW1vdmUobVdpbmRvdyk7CiAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChXaW5kb3dNYW5hZ2VyUG9saWN5LkVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIC8vIERpc3Bvc2UgdGhlIGlucHV0IGNoYW5uZWwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHdpbmRvdyBzbyB0aGUgV2luZG93IE1hbmFnZXIKKyAgICAgICAgICAgIC8vIGRvZXNuJ3QgaW50ZXJwcmV0IHRoZSBpbnB1dCBjaGFubmVsIGJlaW5nIGNsb3NlZCBhcyBhbiBhYm5vcm1hbCB0ZXJtaW5hdGlvbi4KKyAgICAgICAgICAgIGlmIChtSW5wdXRDaGFubmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsLmRpc3Bvc2UoKTsKKyAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgdXBkYXRlQ29uZmlndXJhdGlvbihDb25maWd1cmF0aW9uIGNvbmZpZywgYm9vbGVhbiBmb3JjZSkgewpAQCAtMTc0NSwxOSArMTg3MywxNiBAQAogICAgICAgICAgICAgYm9vbGVhbiBjYWxsV2hlbkRvbmUgPSBtc2cuYXJnMSAhPSAwOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvbmcgdGltZUJlZm9yZUdldHRpbmdFdmVudHM7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVCZWZvcmVHZXR0aW5nRXZlbnRzID0gU3lzdGVtLm5hbm9UaW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsb25nIHRpbWVCZWZvcmVHZXR0aW5nRXZlbnRzOworICAgICAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKKyAgICAgICAgICAgICAgICAgICAgdGltZUJlZm9yZUdldHRpbmdFdmVudHMgPSBTeXN0ZW0ubmFub1RpbWUoKTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBzV2luZG93U2Vzc2lvbi5nZXRQZW5kaW5nUG9pbnRlck1vdmUobVdpbmRvdyk7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBnZXRQZW5kaW5nUG9pbnRlck1vdGlvbkV2ZW50KCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKE1FQVNVUkVfTEFURU5DWSAmJiBldmVudCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsdC5zYW1wbGUoIjkgQ2xpZW50IGdvdCBldmVudHMgICAgICAiLCBTeXN0ZW0ubmFub1RpbWUoKSAtIGV2ZW50LmdldEV2ZW50VGltZU5hbm8oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsdC5zYW1wbGUoIjggQ2xpZW50IGdldHRpbmcgZXZlbnRzICAiLCB0aW1lQmVmb3JlR2V0dGluZ0V2ZW50cyAtIGV2ZW50LmdldEV2ZW50VGltZU5hbm8oKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kgJiYgZXZlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBsdC5zYW1wbGUoIjkgQ2xpZW50IGdvdCBldmVudHMgICAgICAiLCBTeXN0ZW0ubmFub1RpbWUoKSAtIGV2ZW50LmdldEV2ZW50VGltZU5hbm8oKSk7CisgICAgICAgICAgICAgICAgICAgIGx0LnNhbXBsZSgiOCBDbGllbnQgZ2V0dGluZyBldmVudHMgICIsIHRpbWVCZWZvcmVHZXR0aW5nRXZlbnRzIC0gZXZlbnQuZ2V0RXZlbnRUaW1lTmFubygpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FsbFdoZW5Eb25lID0gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0xODMyLDE0ICsxOTU3LDkgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgIGlmIChjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmaW5pc2hNb3Rpb25FdmVudCgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBldmVudC5yZWN5Y2xlKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlY3ljbGVNb3Rpb25FdmVudChldmVudCk7CiAgICAgICAgICAgICAgICAgaWYgKExPQ0FMX0xPR1YgfHwgV0FUQ0hfUE9JTlRFUikgTG9nLmkoVEFHLCAiRG9uZSBkaXNwYXRjaGluZyEiKTsKICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIGV4Y2VwdGlvbiBmYWxsIHRocm91Z2ggLS0gdGhlIGxvb3BlciB3aWxsIGNhdGNoCiAgICAgICAgICAgICAgICAgLy8gaXQgYW5kIHRha2UgY2FyZSBvZiB0aGUgYmFkIGFwcCBmb3IgdXMuCkBAIC0xOTc5LDcgKzIwOTksNjMgQEAKICAgICAgICAgfSBicmVhazsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgZmluaXNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKFdpbmRvd01hbmFnZXJQb2xpY3kuRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgaWYgKG1GaW5pc2hlZENhbGxiYWNrICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtRmluaXNoZWRDYWxsYmFjay5ydW4oKTsKKyAgICAgICAgICAgICAgICBtRmluaXNoZWRDYWxsYmFjayA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGZpbmlzaE1vdGlvbkV2ZW50KCkgeworICAgICAgICBpZiAoV2luZG93TWFuYWdlclBvbGljeS5FTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJTaG91bGQgbm90IGJlIHJlYWNoYWJsZSB3aXRoIG5hdGl2ZSBpbnB1dCBkaXNwYXRjaC4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgIH0KIAorICAgIHByaXZhdGUgdm9pZCByZWN5Y2xlTW90aW9uRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGV2ZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGV2ZW50LnJlY3ljbGUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIE1vdGlvbkV2ZW50IGdldFBlbmRpbmdQb2ludGVyTW90aW9uRXZlbnQoKSB7CisgICAgICAgIGlmIChXaW5kb3dNYW5hZ2VyUG9saWN5LkVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlNob3VsZCBub3QgYmUgcmVhY2hhYmxlIHdpdGggbmF0aXZlIGlucHV0IGRpc3BhdGNoLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHNXaW5kb3dTZXNzaW9uLmdldFBlbmRpbmdQb2ludGVyTW92ZShtV2luZG93KTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBNb3Rpb25FdmVudCBnZXRQZW5kaW5nVHJhY2tiYWxsTW90aW9uRXZlbnQoKSB7CisgICAgICAgIGlmIChXaW5kb3dNYW5hZ2VyUG9saWN5LkVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlNob3VsZCBub3QgYmUgcmVhY2hhYmxlIHdpdGggbmF0aXZlIGlucHV0IGRpc3BhdGNoLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHNXaW5kb3dTZXNzaW9uLmdldFBlbmRpbmdUcmFja2JhbGxNb3ZlKG1XaW5kb3cpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgCiAgICAgLyoqCiAgICAgICogU29tZXRoaW5nIGluIHRoZSBjdXJyZW50IHdpbmRvdyB0ZWxscyB1cyB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgdG91Y2ggbW9kZS4gIEZvcgogICAgICAqIGV4YW1wbGUsIHdlIGFyZSBub3QgaW4gdG91Y2ggbW9kZSwgYW5kIHRoZSB1c2VyIHRvdWNoZXMgdGhlIHNjcmVlbi4KQEAgLTIxMDQsMTAgKzIyODAsNyBAQAogCiAgICAgcHJpdmF0ZSB2b2lkIGRlbGl2ZXJUcmFja2JhbGxFdmVudChNb3Rpb25FdmVudCBldmVudCwgYm9vbGVhbiBjYWxsV2hlbkRvbmUpIHsKICAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSBzV2luZG93U2Vzc2lvbi5nZXRQZW5kaW5nVHJhY2tiYWxsTW92ZShtV2luZG93KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBldmVudCA9IGdldFBlbmRpbmdUcmFja2JhbGxNb3Rpb25FdmVudCgpOwogICAgICAgICAgICAgY2FsbFdoZW5Eb25lID0gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjEyNywxNCArMjMwMCw5IEBACiAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICBpZiAoaGFuZGxlZCkgewogICAgICAgICAgICAgICAgIGlmIChjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmaW5pc2hNb3Rpb25FdmVudCgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBldmVudC5yZWN5Y2xlKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlY3ljbGVNb3Rpb25FdmVudChldmVudCk7CiAgICAgICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2ggdGhpcywgd2UgZGVsaXZlcmVkIGEgdHJhY2tiYWxsIGV2ZW50IHRvIG1WaWV3IGFuZAogICAgICAgICAgICAgICAgIC8vIG1WaWV3IGNvbnN1bWVkIGl0LiBCZWNhdXNlIHdlIHdpbGwgbm90IHRyYW5zbGF0ZSB0aGUgdHJhY2tiYWxsCiAgICAgICAgICAgICAgICAgLy8gZXZlbnQgaW50byBhIGtleSBldmVudCwgdG91Y2ggbW9kZSB3aWxsIG5vdCBleGl0LCBzbyB3ZSBleGl0CkBAIC0yMjQzLDEzICsyNDExLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgIGlmIChjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5maW5pc2hLZXkobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQucmVjeWNsZSgpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hNb3Rpb25FdmVudCgpOworICAgICAgICAgICAgICAgIHJlY3ljbGVNb3Rpb25FdmVudChldmVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBMZXQgdGhlIGV4Y2VwdGlvbiBmYWxsIHRocm91Z2ggLS0gdGhlIGxvb3BlciB3aWxsIGNhdGNoCiAgICAgICAgICAgICAvLyBpdCBhbmQgdGFrZSBjYXJlIG9mIHRoZSBiYWQgYXBwIGZvciB1cy4KQEAgLTI0MDcsMTAgKzI1NzAsNyBAQAogICAgICAgICAgICAgaWYgKHNlbmREb25lKSB7CiAgICAgICAgICAgICAgICAgaWYgKExPQ0FMX0xPR1YpIExvZy52KAogICAgICAgICAgICAgICAgICAgICAiVmlld1Jvb3QiLCAiVGVsbGluZyB3aW5kb3cgbWFuYWdlciBrZXkgaXMgZmluaXNoZWQiKTsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5maW5pc2hLZXkobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoS2V5RXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNDQzLDEwICsyNjAzLDcgQEAKICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VuZERvbmUpIHsKICAgICAgICAgICAgICAgICBpZiAoTE9DQUxfTE9HVikgTG9nLnYoCiAgICAgICAgICAgICAgICAgICAgICAgICAiVmlld1Jvb3QiLCAiVGVsbGluZyB3aW5kb3cgbWFuYWdlciBrZXkgaXMgZmluaXNoZWQiKTsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5maW5pc2hLZXkobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoS2V5RXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMb2cudygiVmlld1Jvb3QiLCAiaGFuZGxlRmluaXNoZWRFdmVudChzZXE9IiArIHNlcQogICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGhhbmRsZWQ9IiArIGhhbmRsZWQgKyAiIGV2PSIgKyBldmVudApAQCAtMjUyMSwxMCArMjY3OCw3IEBACiAgICAgICAgICAgICBpZiAoc2VuZERvbmUpIHsKICAgICAgICAgICAgICAgICBpZiAoTE9DQUxfTE9HVikgTG9nLnYoCiAgICAgICAgICAgICAgICAgICAgICJWaWV3Um9vdCIsICJUZWxsaW5nIHdpbmRvdyBtYW5hZ2VyIGtleSBpcyBmaW5pc2hlZCIpOwotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hLZXlFdmVudChldmVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBMZXQgdGhlIGV4Y2VwdGlvbiBmYWxsIHRocm91Z2ggLS0gdGhlIGxvb3BlciB3aWxsIGNhdGNoCiAgICAgICAgICAgICAvLyBpdCBhbmQgdGFrZSBjYXJlIG9mIHRoZSBiYWQgYXBwIGZvciB1cy4KQEAgLTI3MDIsNiArMjg1Niw1MyBAQAogICAgICAgICBtc2cub2JqID0gcmk7CiAgICAgICAgIHNlbmRNZXNzYWdlKG1zZyk7CiAgICAgfQorICAgIAorICAgIHByaXZhdGUgUnVubmFibGUgbUZpbmlzaGVkQ2FsbGJhY2s7CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCBJbnB1dEhhbmRsZXIgbUlucHV0SGFuZGxlciA9IG5ldyBJbnB1dEhhbmRsZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZUtleShLZXlFdmVudCBldmVudCwgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjaykgeworICAgICAgICAgICAgbUZpbmlzaGVkQ2FsbGJhY2sgPSBmaW5pc2hlZENhbGxiYWNrOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gS2V5RXZlbnQuQUNUSU9OX0RPV04pIHsKKyAgICAgICAgICAgICAgICAvL25vaW5zcGVjdGlvbiBDb25zdGFudENvbmRpdGlvbnMKKyAgICAgICAgICAgICAgICBpZiAoZmFsc2UgJiYgZXZlbnQuZ2V0S2V5Q29kZSgpID09IEtleUV2ZW50LktFWUNPREVfQ0FNRVJBKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HRCkgTG9nLmQoImtleWRpc3AiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZy5MT0dEKSBMb2cuZCgia2V5ZGlzcCIsICJGb2N1c2VkIHZpZXcgSGllcmFyY2h5IGlzOiIpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HRCkgTG9nLmQoImtleWRpc3AiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gb2J0YWluTWVzc2FnZShESVNQQVRDSF9LRVkpOworICAgICAgICAgICAgbXNnLm9iaiA9IGV2ZW50OworCisgICAgICAgICAgICBpZiAoTE9DQUxfTE9HVikgTG9nLnYoCisgICAgICAgICAgICAgICAgIlZpZXdSb290IiwgInNlbmRpbmcga2V5ICIgKyBldmVudCArICIgdG8gIiArIG1WaWV3KTsKKworICAgICAgICAgICAgc2VuZE1lc3NhZ2VBdFRpbWUobXNnLCBldmVudC5nZXRFdmVudFRpbWUoKSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVUb3VjaChNb3Rpb25FdmVudCBldmVudCwgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjaykgeworICAgICAgICAgICAgZmluaXNoZWRDYWxsYmFjay5ydW4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBvYnRhaW5NZXNzYWdlKERJU1BBVENIX1BPSU5URVIpOworICAgICAgICAgICAgbXNnLm9iaiA9IGV2ZW50OworICAgICAgICAgICAgbXNnLmFyZzEgPSAwOworICAgICAgICAgICAgc2VuZE1lc3NhZ2VBdFRpbWUobXNnLCBldmVudC5nZXRFdmVudFRpbWUoKSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVUcmFja2JhbGwoTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2sucnVuKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gb2J0YWluTWVzc2FnZShESVNQQVRDSF9UUkFDS0JBTEwpOworICAgICAgICAgICAgbXNnLm9iaiA9IGV2ZW50OworICAgICAgICAgICAgbXNnLmFyZzEgPSAwOworICAgICAgICAgICAgc2VuZE1lc3NhZ2VBdFRpbWUobXNnLCBldmVudC5nZXRFdmVudFRpbWUoKSk7CisgICAgICAgIH0KKyAgICB9OwogCiAgICAgcHVibGljIHZvaWQgZGlzcGF0Y2hLZXkoS2V5RXZlbnQgZXZlbnQpIHsKICAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9ET1dOKSB7CkBAIC0yODEzLDYgKzMwMTQsNDYgQEAKICAgICAgICAgcmV0dXJuIHNjcm9sbFRvUmVjdE9yRm9jdXMocmVjdGFuZ2xlLCBpbW1lZGlhdGUpOwogICAgIH0KIAorICAgIGNsYXNzIFRha2VuU3VyZmFjZUhvbGRlciBleHRlbmRzIEJhc2VTdXJmYWNlSG9sZGVyIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIG9uQWxsb3dMb2NrQ2FudmFzKCkgeworICAgICAgICAgICAgcmV0dXJuIG1EcmF3aW5nQWxsb3dlZDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlbGF5b3V0Q29udGFpbmVyKCkgeworICAgICAgICAgICAgLy8gTm90IGN1cnJlbnRseSBpbnRlcmVzdGluZyAtLSBmcm9tIGNoYW5naW5nIGJldHdlZW4gZml4ZWQgYW5kIGxheW91dCBzaXplLgorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc2V0Rm9ybWF0KGludCBmb3JtYXQpIHsKKyAgICAgICAgICAgICgoUm9vdFZpZXdTdXJmYWNlVGFrZXIpbVZpZXcpLnNldFN1cmZhY2VGb3JtYXQoZm9ybWF0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldFR5cGUoaW50IHR5cGUpIHsKKyAgICAgICAgICAgICgoUm9vdFZpZXdTdXJmYWNlVGFrZXIpbVZpZXcpLnNldFN1cmZhY2VUeXBlKHR5cGUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25VcGRhdGVTdXJmYWNlKCkgeworICAgICAgICAgICAgLy8gV2UgdGFrZSBjYXJlIG9mIGZvcm1hdCBhbmQgdHlwZSBjaGFuZ2VzIG9uIG91ciBvd24uCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJTaG91bGRuJ3QgYmUgaGVyZSIpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNDcmVhdGluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBtSXNDcmVhdGluZzsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXRGaXhlZFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJDdXJyZW50bHkgb25seSBzdXBwb3J0IHNpemluZyBmcm9tIGxheW91dCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRLZWVwU2NyZWVuT24oYm9vbGVhbiBzY3JlZW5PbikgeworICAgICAgICAgICAgKChSb290Vmlld1N1cmZhY2VUYWtlciltVmlldykuc2V0U3VyZmFjZUtlZXBTY3JlZW5PbihzY3JlZW5Pbik7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgc3RhdGljIGNsYXNzIElucHV0TWV0aG9kQ2FsbGJhY2sgZXh0ZW5kcyBJSW5wdXRNZXRob2RDYWxsYmFjay5TdHViIHsKICAgICAgICAgcHJpdmF0ZSBXZWFrUmVmZXJlbmNlPFZpZXdSb290PiBtVmlld1Jvb3Q7CiAKQEAgLTI4MzIsNyArMzA3Myw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgY2xhc3MgRXZlbnRDb21wbGV0aW9uIGV4dGVuZHMgSGFuZGxlciB7CisgICAgY2xhc3MgRXZlbnRDb21wbGV0aW9uIGV4dGVuZHMgSGFuZGxlciB7CiAgICAgICAgIGZpbmFsIElXaW5kb3cgbVdpbmRvdzsKICAgICAgICAgZmluYWwgS2V5RXZlbnQgbUtleUV2ZW50OwogICAgICAgICBmaW5hbCBib29sZWFuIG1Jc1BvaW50ZXI7CkBAIC0yODUxLDQwICszMDkyLDI1IEBACiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CiAgICAgICAgICAgICBpZiAobUtleUV2ZW50ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5maW5pc2hLZXkobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hLZXlFdmVudChtS2V5RXZlbnQpOwogICAgICAgICAgICB9IGVsc2UgaWYgKG1Jc1BvaW50ZXIpIHsKICAgICAgICAgICAgICAgICBib29sZWFuIGRpZEZpbmlzaDsKICAgICAgICAgICAgICAgICBNb3Rpb25FdmVudCBldmVudCA9IG1Nb3Rpb25FdmVudDsKICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBzV2luZG93U2Vzc2lvbi5nZXRQZW5kaW5nUG9pbnRlck1vdmUobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBnZXRQZW5kaW5nUG9pbnRlck1vdGlvbkV2ZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoID0gZXZlbnQuZ2V0QWN0aW9uKCkgPT0gTW90aW9uRXZlbnQuQUNUSU9OX09VVFNJREU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghZGlkRmluaXNoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5maW5pc2hLZXkobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmaW5pc2hNb3Rpb25FdmVudCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgTW90aW9uRXZlbnQgZXZlbnQgPSBtTW90aW9uRXZlbnQ7CiAgICAgICAgICAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50ID0gc1dpbmRvd1Nlc3Npb24uZ2V0UGVuZGluZ1RyYWNrYmFsbE1vdmUobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBnZXRQZW5kaW5nVHJhY2tiYWxsTW90aW9uRXZlbnQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgc1dpbmRvd1Nlc3Npb24uZmluaXNoS2V5KG1XaW5kb3cpOwotICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZmluaXNoTW90aW9uRXZlbnQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI5MTQsNyArMzE0MCw3IEBACiAgICAgICAgICAgICAgICAgdmlld1Jvb3QuZGlzcGF0Y2hLZXkoZXZlbnQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMb2cudygiVmlld1Jvb3QuVyIsICJLZXkgZXZlbnQgIiArIGV2ZW50ICsgIiBidXQgbm8gVmlld1Jvb3QgYXZhaWxhYmxlISIpOwotICAgICAgICAgICAgICAgIG5ldyBFdmVudENvbXBsZXRpb24obU1haW5Mb29wZXIsIHRoaXMsIGV2ZW50LCBmYWxzZSwgbnVsbCk7CisgICAgICAgICAgICAgICAgdmlld1Jvb3QubmV3IEV2ZW50Q29tcGxldGlvbihtTWFpbkxvb3BlciwgdGhpcywgZXZlbnQsIGZhbHNlLCBudWxsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0yOTI4LDcgKzMxNTQsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB2aWV3Um9vdC5kaXNwYXRjaFBvaW50ZXIoZXZlbnQsIGV2ZW50VGltZSwgY2FsbFdoZW5Eb25lKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbmV3IEV2ZW50Q29tcGxldGlvbihtTWFpbkxvb3BlciwgdGhpcywgbnVsbCwgdHJ1ZSwgZXZlbnQpOworICAgICAgICAgICAgICAgIHZpZXdSb290Lm5ldyBFdmVudENvbXBsZXRpb24obU1haW5Mb29wZXIsIHRoaXMsIG51bGwsIHRydWUsIGV2ZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0yOTM4LDcgKzMxNjQsNyBAQAogICAgICAgICAgICAgaWYgKHZpZXdSb290ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICB2aWV3Um9vdC5kaXNwYXRjaFRyYWNrYmFsbChldmVudCwgZXZlbnRUaW1lLCBjYWxsV2hlbkRvbmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZXcgRXZlbnRDb21wbGV0aW9uKG1NYWluTG9vcGVyLCB0aGlzLCBudWxsLCBmYWxzZSwgZXZlbnQpOworICAgICAgICAgICAgICAgIHZpZXdSb290Lm5ldyBFdmVudENvbXBsZXRpb24obU1haW5Mb29wZXIsIHRoaXMsIG51bGwsIGZhbHNlLCBldmVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3cuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvV2luZG93LmphdmEKaW5kZXggN2RkNTA4NS4uZjQwNzM0YiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3cuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvdy5qYXZhCkBAIC00NzMsNiArNDczLDIxIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogVGFrZSBvd25lcnNoaXAgb2YgdGhpcyB3aW5kb3cncyBzdXJmYWNlLiAgVGhlIHdpbmRvdydzIHZpZXcgaGllcmFyY2h5CisgICAgICogd2lsbCBubyBsb25nZXIgZHJhdyBpbnRvIHRoZSBzdXJmYWNlLCB0aG91Z2ggaXQgd2lsbCBvdGhlcndpc2UgY29udGludWUKKyAgICAgKiB0byBvcGVyYXRlIChzdWNoIGFzIGZvciByZWNlaXZpbmcgaW5wdXQgZXZlbnRzKS4gIFRoZSBnaXZlbiBTdXJmYWNlSG9sZGVyCisgICAgICogY2FsbGJhY2sgd2lsbCBiZSB1c2VkIHRvIHRlbGwgeW91IGFib3V0IHN0YXRlIGNoYW5nZXMgdG8gdGhlIHN1cmZhY2UuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgdGFrZVN1cmZhY2UoU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFjayk7CisgICAgCisgICAgLyoqCisgICAgICogVGFrZSBvd25lcnNoaXAgb2YgdGhpcyB3aW5kb3cncyBJbnB1dFF1ZXVlLiAgVGhlIHdpbmRvdyB3aWxsIG5vCisgICAgICogbG9uZ2VyIHJlYWQgYW5kIGRpc3BhdGNoIGlucHV0IGV2ZW50cyBmcm9tIHRoZSBxdWV1ZTsgaXQgaXMgeW91cgorICAgICAqIHJlc3BvbnNpYmlsaXR5IHRvIGRvIHNvLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHRha2VJbnB1dFF1ZXVlKElucHV0UXVldWUuQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIAorICAgIC8qKgogICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgd2luZG93IGlzIGJlaW5nIGRpc3BsYXllZCB3aXRoIGEgZmxvYXRpbmcgc3R5bGUKICAgICAgKiAoYmFzZWQgb24gdGhlIHtAbGluayBhbmRyb2lkLlIuYXR0ciN3aW5kb3dJc0Zsb2F0aW5nfSBhdHRyaWJ1dGUgaW4KICAgICAgKiB0aGUgc3R5bGUvdGhlbWUpLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQppbmRleCBhZGNlZWIyLi5lZWJiYzkzIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQpAQCAtNTgwLDkgKzU4MCwxMCBAQAogICAgICAgICAgKiBJZiB0aGUga2V5Z3VhcmQgaXMgY3VycmVudGx5IGFjdGl2ZSBhbmQgaXMgc2VjdXJlIChyZXF1aXJlcyBhbgogICAgICAgICAgKiB1bmxvY2sgcGF0dGVybikgdGhhbiB0aGUgdXNlciB3aWxsIHN0aWxsIG5lZWQgdG8gY29uZmlybSBpdCBiZWZvcmUKICAgICAgICAgICogc2VlaW5nIHRoaXMgd2luZG93LCB1bmxlc3Mge0BsaW5rICNGTEFHX1NIT1dfV0hFTl9MT0NLRUR9IGhhcwotICAgICAgICAgKiBhbHNvIGJlZW4gc2V0LiAqLworICAgICAgICAgKiBhbHNvIGJlZW4gc2V0LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19ESVNNSVNTX0tFWUdVQVJEID0gMHgwMDQwMDAwMDsKLSAgICAgICAgCisKICAgICAgICAgLyoqIFdpbmRvdyBmbGFnOiAqc2lnaCogVGhlIGxvY2sgc2NyZWVuIHdhbnRzIHRvIGNvbnRpbnVlIHJ1bm5pbmcgaXRzCiAgICAgICAgICAqIGFuaW1hdGlvbiB3aGlsZSBpdCBpcyBmYWRpbmcuICBBIGtpbmQtb2YgaGFjayB0byBhbGxvdyB0aGlzLiAgTWF5YmUKICAgICAgICAgICogaW4gdGhlIGZ1dHVyZSB3ZSBqdXN0IG1ha2UgdGhpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvV2luZG93TWFuYWdlclBvbGljeS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyUG9saWN5LmphdmEKaW5kZXggYjM5Y2I5ZC4uYmUxZjZkMiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyUG9saWN5LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyUG9saWN5LmphdmEKQEAgLTc4LDYgKzc4LDEyIEBACiAgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRkxBR19CUklHSFRfSEVSRSA9IDB4MjAwMDAwMDA7CiAKICAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJvb2xlYW4gV0FUQ0hfUE9JTlRFUiA9IGZhbHNlOworICAgIAorICAgIC8qKgorICAgICAqIFRlbXBvcmFyeSBmbGFnIGFkZGVkIGR1cmluZyB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG5hdGl2ZSBpbnB1dCBkaXNwYXRjaGVyLgorICAgICAqIFRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gdGhlIG9sZCBpbnB1dCBkaXNwYXRjaCBjb2RlIGlzIGRlbGV0ZWQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0ggPSB0cnVlOwogCiAgICAgLy8gZmxhZ3MgZm9yIGludGVyY2VwdEtleVRxCiAgICAgLyoqCkBAIC03MDgsNiArNzE0LDggQEAKICAgICAgKi8KICAgICBwdWJsaWMgYm9vbGVhbiBwcmVwcm9jZXNzSW5wdXRFdmVudFRxKFJhd0lucHV0RXZlbnQgZXZlbnQpOwogICAgIAorICAgIHB1YmxpYyB2b2lkIG5vdGlmeUxpZFN3aXRjaENoYW5nZWQobG9uZyB3aGVuTmFub3MsIGJvb2xlYW4gbGlkT3Blbik7CisgICAgCiAgICAgLyoqCiAgICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBrZXkgY29kZSBpcyB1c2VkIHRvIGNhdXNlIGFuIGFwcCBzd2l0Y2gKICAgICAgKiB0byBvY2N1ciAobW9zdCBvZnRlbiB0aGUgSE9NRSBrZXksIGFsc28gb2Z0ZW4gRU5EQ0FMTCkuICBJZiB5b3UgcmV0dXJuCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93ZWJraXQvTWltZVR5cGVNYXAuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9NaW1lVHlwZU1hcC5qYXZhCmluZGV4IDAzNGM4OGEuLmNhOWFkNTMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9NaW1lVHlwZU1hcC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9NaW1lVHlwZU1hcC5qYXZhCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgICAgICAgICAvLyBpZiB0aGUgZmlsZW5hbWUgY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzLCB3ZSBkb24ndAogICAgICAgICAgICAgLy8gY29uc2lkZXIgaXQgdmFsaWQgZm9yIG91ciBtYXRjaGluZyBwdXJwb3NlczoKICAgICAgICAgICAgIGlmIChmaWxlbmFtZS5sZW5ndGgoKSA+IDAgJiYKLSAgICAgICAgICAgICAgICBQYXR0ZXJuLm1hdGNoZXMoIlthLXpBLVpfMC05XFwuXFwtXFwoXFwpXSsiLCBmaWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBQYXR0ZXJuLm1hdGNoZXMoIlthLXpBLVpfMC05XFwuXFwtXFwoXFwpXFwlXSsiLCBmaWxlbmFtZSkpIHsKICAgICAgICAgICAgICAgICBpbnQgZG90UG9zID0gZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKTsKICAgICAgICAgICAgICAgICBpZiAoMCA8PSBkb3RQb3MpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnN1YnN0cmluZyhkb3RQb3MgKyAxKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9XZWJWaWV3LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC93ZWJraXQvV2ViVmlldy5qYXZhCmluZGV4IDJkZjI1MGQuLmJmNzUxZjUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9XZWJWaWV3LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2Via2l0L1dlYlZpZXcuamF2YQpAQCAtMjM2LDE0ICsyMzYsMTQgQEAKICAqCiAgKiA8aDM+QnVpbGRpbmcgd2ViIHBhZ2VzIHRvIHN1cHBvcnQgZGlmZmVyZW50IHNjcmVlbiBkZW5zaXRpZXM8L2gzPgogICoKLSAqIDxwPkEgc2NyZWVuJ3MgZGVuc2l0eSBpcyBiYXNlZCBvbiBpdCdzIHNjcmVlbiByZXNvbHV0aW9uIGFuZCBwaHlzaWNhbCBzaXplLiBBIHNjcmVlbiB3aXRoIGxvdwotICogZGVuc2l0eSBoYXMgZmV3ZXIgYXZhaWxhYmxlIHBpeGVscyBwZXIgaW5jaCwgd2hlcmUgYSBzY3JlZW4gd2l0aCBoaWdoIGRlbnNpdHkKLSAqIGhhcyBtb3JlIC0tIHNvbWV0aW1lcyBzaWduaWZpY2FudGx5IG1vcmUgLS0gcGl4ZWxzIHBlciBpbmNoLiBUaGUgZGVuc2l0eSBvZiBhCisgKiA8cD5UaGUgc2NyZWVuIGRlbnNpdHkgb2YgYSBkZXZpY2UgaXMgYmFzZWQgb24gdGhlIHNjcmVlbiByZXNvbHV0aW9uLiBBIHNjcmVlbiB3aXRoIGxvdyBkZW5zaXR5CisgKiBoYXMgZmV3ZXIgYXZhaWxhYmxlIHBpeGVscyBwZXIgaW5jaCwgd2hlcmUgYSBzY3JlZW4gd2l0aCBoaWdoIGRlbnNpdHkKKyAqIGhhcyBtb3JlICZtZGFzaDsgc29tZXRpbWVzIHNpZ25pZmljYW50bHkgbW9yZSAmbWRhc2g7IHBpeGVscyBwZXIgaW5jaC4gVGhlIGRlbnNpdHkgb2YgYQogICogc2NyZWVuIGlzIGltcG9ydGFudCBiZWNhdXNlLCBvdGhlciB0aGluZ3MgYmVpbmcgZXF1YWwsIGEgVUkgZWxlbWVudCAoc3VjaCBhcyBhIGJ1dHRvbikgd2hvc2UKICAqIGhlaWdodCBhbmQgd2lkdGggYXJlIGRlZmluZWQgaW4gdGVybXMgb2Ygc2NyZWVuIHBpeGVscyB3aWxsIGFwcGVhciBsYXJnZXIgb24gdGhlIGxvd2VyIGRlbnNpdHkKLSAqIHNjcmVlbiBhbmQgc21hbGxlciBvbiB0aGUgaGlnaGVyIGRlbnNpdHkgc2NyZWVuLiBGb3Igc2ltcGxpY2l0eSwgQW5kcm9pZCBjb2xsYXBzZXMgYWxsCi0gKiBhY3R1YWwgc2NyZWVuIGRlbnNpdGllcyBpbnRvIHRocmVlIGdlbmVyYWxpemVkIGRlbnNpdGllczpoaWdoLCBtZWRpdW0sIGFuZCBsb3cuIDwvcD4KLSAqCisgKiBzY3JlZW4gYW5kIHNtYWxsZXIgb24gdGhlIGhpZ2hlciBkZW5zaXR5IHNjcmVlbi4KKyAqIEZvciBzaW1wbGljaXR5LCBBbmRyb2lkIGNvbGxhcHNlcyBhbGwgYWN0dWFsIHNjcmVlbiBkZW5zaXRpZXMgaW50byB0aHJlZSBnZW5lcmFsaXplZCBkZW5zaXRpZXM6CisgKiBoaWdoLCBtZWRpdW0sIGFuZCBsb3cuPC9wPgogICogPHA+QnkgZGVmYXVsdCwgV2ViVmlldyBzY2FsZXMgYSB3ZWIgcGFnZSBzbyB0aGF0IGl0IGlzIGRyYXduIGF0IGEgc2l6ZSB0aGF0IG1hdGNoZXMgdGhlIGRlZmF1bHQKICAqIGFwcGVhcmFuY2Ugb24gYSBtZWRpdW0gZGVuc2l0eSBzY3JlZW4uIFNvLCBpdCBhcHBsaWVzIDEuNXggc2NhbGluZyBvbiBhIGhpZ2ggZGVuc2l0eSBzY3JlZW4KICAqIChiZWNhdXNlIGl0cyBwaXhlbHMgYXJlIHNtYWxsZXIpIGFuZCAwLjc1eCBzY2FsaW5nIG9uIGEgbG93IGRlbnNpdHkgc2NyZWVuIChiZWNhdXNlIGl0cyBwaXhlbHMKQEAgLTEzODAsMTYgKzEzODAsMjMgQEAKICAgICAgICAgZmluYWwgRmlsZSB0ZW1wID0gbmV3IEZpbGUoZGVzdC5nZXRQYXRoKCkgKyAiLndyaXRpbmciKTsKICAgICAgICAgbmV3IFRocmVhZChuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBvdXQgPSBudWxsOwogICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gb3V0ID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0odGVtcCk7CisgICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHRlbXApOwogICAgICAgICAgICAgICAgICAgICBwLndyaXRlVG9TdHJlYW0ob3V0KTsKLSAgICAgICAgICAgICAgICAgICAgb3V0LmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRpbmcgdGhlIHBpY3R1cmUgc3VjY2VlZGVkLCByZW5hbWUgdGhlIHRlbXBvcmFyeSBmaWxlCiAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBkZXN0aW5hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZW5hbWVUbyhkZXN0KTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgICAgICAvLyB0b28gbGF0ZSB0byBkbyBhbnl0aGluZyBhYm91dCBpdC4KICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICBpZiAob3V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IGRvIGFueXRoaW5nIGFib3V0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB0ZW1wLmRlbGV0ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE0NDIsMjAgKzE0NDksMjMgQEAKICAgICAgICAgICAgIGZpbmFsIEJ1bmRsZSBjb3B5ID0gbmV3IEJ1bmRsZShiKTsKICAgICAgICAgICAgIG5ldyBUaHJlYWQobmV3IFJ1bm5hYmxlKCkgewogICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgUGljdHVyZSBwID0gUGljdHVyZS5jcmVhdGVGcm9tU3RyZWFtKGluKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHAgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUG9zdCBhIHJ1bm5hYmxlIG9uIHRoZSBtYWluIHRocmVhZCB0byB1cGRhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBoaXN0b3J5IHBpY3R1cmUgZmllbGRzLgotICAgICAgICAgICAgICAgICAgICAgICAgbVByaXZhdGVIYW5kbGVyLnBvc3QobmV3IFJ1bm5hYmxlKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZUhpc3RvcnlQaWN0dXJlRmllbGRzKHAsIGNvcHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbi5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90aGluZyB3ZSBjYW4gZG8gbm93LgorICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUGljdHVyZSBwID0gUGljdHVyZS5jcmVhdGVGcm9tU3RyZWFtKGluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQb3N0IGEgcnVubmFibGUgb24gdGhlIG1haW4gdGhyZWFkIHRvIHVwZGF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoaXN0b3J5IHBpY3R1cmUgZmllbGRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Qcml2YXRlSGFuZGxlci5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZUhpc3RvcnlQaWN0dXJlRmllbGRzKHAsIGNvcHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgd2UgY2FuIGRvIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pLnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvQWJzTGlzdFZpZXcuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9BYnNMaXN0Vmlldy5qYXZhCmluZGV4IGZjZmVjYjMuLjZjZmViNjggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9BYnNMaXN0Vmlldy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9BYnNMaXN0Vmlldy5qYXZhCkBAIC0yMDU2LDYgKzIwNTYsMTQgQEAKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoeSAhPSBtTGFzdFkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgbWF5IGJlIGhlcmUgYWZ0ZXIgc3RvcHBpbmcgYSBmbGluZyBhbmQgY29udGludWluZyB0byBzY3JvbGwuCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHNvLCB3ZSBoYXZlbid0IGRpc2FsbG93ZWQgaW50ZXJjZXB0aW5nIHRvdWNoIGV2ZW50cyB5ZXQuCisgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGRvIHNvIGluIGNhc2Ugd2UncmUgaW4gYSBwYXJlbnQgdGhhdCBjYW4gaW50ZXJjZXB0LgorICAgICAgICAgICAgICAgICAgICBpZiAoKG1Hcm91cEZsYWdzICYgRkxBR19ESVNBTExPV19JTlRFUkNFUFQpID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhkZWx0YVkpID4gbVRvdWNoU2xvcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdERpc2FsbG93SW50ZXJjZXB0VG91Y2hFdmVudCh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIGRlbHRhWSAtPSBtTW90aW9uQ29ycmVjdGlvbjsKICAgICAgICAgICAgICAgICAgICAgaW50IGluY3JlbWVudGFsRGVsdGFZID0gbUxhc3RZICE9IEludGVnZXIuTUlOX1ZBTFVFID8geSAtIG1MYXN0WSA6IGRlbHRhWTsKICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvRGF0ZVBpY2tlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L0RhdGVQaWNrZXIuamF2YQppbmRleCBiM2Q1ZjFhLi4xZmMyM2FiIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvRGF0ZVBpY2tlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9EYXRlUGlja2VyLmphdmEKQEAgLTMyOCw2ICszMjgsNyBAQAogICAgICAgICBtWWVhciA9IHNzLmdldFllYXIoKTsKICAgICAgICAgbU1vbnRoID0gc3MuZ2V0TW9udGgoKTsKICAgICAgICAgbURheSA9IHNzLmdldERheSgpOworICAgICAgICB1cGRhdGVTcGlubmVycygpOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L0dhbGxlcnkuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9HYWxsZXJ5LmphdmEKaW5kZXggZjM0ODIzYy4uMWVkNmIxNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L0dhbGxlcnkuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvR2FsbGVyeS5qYXZhCkBAIC0xMDg3LDcgKzEwODcsNyBAQAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKICAgICAgICAgLy8gR2FsbGVyeSBzdGVhbHMgYWxsIGtleSBldmVudHMKLSAgICAgICAgcmV0dXJuIGV2ZW50LmRpc3BhdGNoKHRoaXMpOworICAgICAgICByZXR1cm4gZXZlbnQuZGlzcGF0Y2godGhpcywgbnVsbCwgbnVsbCk7CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvTWVkaWFDb250cm9sbGVyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvTWVkaWFDb250cm9sbGVyLmphdmEKaW5kZXggYzI0NmMyNDcuLjM5YjEzNzcgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9NZWRpYUNvbnRyb2xsZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvTWVkaWFDb250cm9sbGVyLmphdmEKQEAgLTEyMyw3ICsxMjMsNyBAQAogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCBpbml0RmxvYXRpbmdXaW5kb3coKSB7Ci0gICAgICAgIG1XaW5kb3dNYW5hZ2VyID0gKFdpbmRvd01hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZSgid2luZG93Iik7CisgICAgICAgIG1XaW5kb3dNYW5hZ2VyID0gKFdpbmRvd01hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LldJTkRPV19TRVJWSUNFKTsKICAgICAgICAgbVdpbmRvdyA9IFBvbGljeU1hbmFnZXIubWFrZU5ld1dpbmRvdyhtQ29udGV4dCk7CiAgICAgICAgIG1XaW5kb3cuc2V0V2luZG93TWFuYWdlcihtV2luZG93TWFuYWdlciwgbnVsbCwgbnVsbCk7CiAgICAgICAgIG1XaW5kb3cucmVxdWVzdEZlYXR1cmUoV2luZG93LkZFQVRVUkVfTk9fVElUTEUpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1Byb2dyZXNzQmFyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvUHJvZ3Jlc3NCYXIuamF2YQppbmRleCAyMDJlNjU4Li44ZTllYjA1IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvUHJvZ3Jlc3NCYXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvUHJvZ3Jlc3NCYXIuamF2YQpAQCAtOTQ3LDQgKzk0NywyMCBAQAogICAgICAgICBzZXRQcm9ncmVzcyhzcy5wcm9ncmVzcyk7CiAgICAgICAgIHNldFNlY29uZGFyeVByb2dyZXNzKHNzLnNlY29uZGFyeVByb2dyZXNzKTsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOworICAgICAgICBpZiAobUluZGV0ZXJtaW5hdGUpIHsKKyAgICAgICAgICAgIHN0YXJ0QW5pbWF0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkRldGFjaGVkRnJvbVdpbmRvdygpIHsKKyAgICAgICAgc3VwZXIub25EZXRhY2hlZEZyb21XaW5kb3coKTsKKyAgICAgICAgaWYgKG1JbmRldGVybWluYXRlKSB7CisgICAgICAgICAgICBzdG9wQW5pbWF0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvUmVtb3RlVmlld3MuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9SZW1vdGVWaWV3cy5qYXZhCmluZGV4IDMwMDM1ODAuLjdhNzBjODAgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9SZW1vdGVWaWV3cy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9SZW1vdGVWaWV3cy5qYXZhCkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICAgKiBCYXNlIGNsYXNzIGZvciBhbGwgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gYW4gCiAgICAgICogaW5mbGF0ZWQgdmlldy4KICAgICAgKgorICAgICAqICBTVUJDTEFTU0VTIE1VU1QgQkUgSU1NVVRBQkxFIFNPIENMT05FIFdPUktTISEhISEKICAgICAgKi8KICAgICBwcml2YXRlIGFic3RyYWN0IHN0YXRpYyBjbGFzcyBBY3Rpb24gaW1wbGVtZW50cyBQYXJjZWxhYmxlIHsKICAgICAgICAgcHVibGljIGFic3RyYWN0IHZvaWQgYXBwbHkoVmlldyByb290KSB0aHJvd3MgQWN0aW9uRXhjZXB0aW9uOwpAQCAtNTY4LDYgKzU2OSwxNCBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgcHVibGljIFJlbW90ZVZpZXdzIGNsb25lKCkgeworICAgICAgICBmaW5hbCBSZW1vdGVWaWV3cyB0aGF0ID0gbmV3IFJlbW90ZVZpZXdzKG1QYWNrYWdlLCBtTGF5b3V0SWQpOworICAgICAgICBpZiAobUFjdGlvbnMgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhhdC5tQWN0aW9ucyA9IChBcnJheUxpc3Q8QWN0aW9uPiltQWN0aW9ucy5jbG9uZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGF0OworICAgIH0KKwogICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGFja2FnZSgpIHsKICAgICAgICAgcmV0dXJuIG1QYWNrYWdlOwogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9UZXh0Vmlldy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1RleHRWaWV3LmphdmEKaW5kZXggNjRjOWM5OS4uOTUwMDEyYyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1RleHRWaWV3LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1RleHRWaWV3LmphdmEKQEAgLTQ1NDcsNiArNDU0NywxMCBAQAogICAgICAgICAgICAgICAgICAgICBvdXRUZXh0LnRleHQgPSBUZXh0VXRpbHMuc3Vic3RyaW5nKGNvbnRlbnQsIHBhcnRpYWxTdGFydE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsRW5kT2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dFRleHQucGFydGlhbFN0YXJ0T2Zmc2V0ID0gMDsKKyAgICAgICAgICAgICAgICBvdXRUZXh0LnBhcnRpYWxFbmRPZmZzZXQgPSAwOworICAgICAgICAgICAgICAgIG91dFRleHQudGV4dCA9ICIiOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgb3V0VGV4dC5mbGFncyA9IDA7CiAgICAgICAgICAgICBpZiAoTWV0YUtleUtleUxpc3RlbmVyLmdldE1ldGFTdGF0ZShtVGV4dCwgTWV0YUtleUtleUxpc3RlbmVyLk1FVEFfU0VMRUNUSU5HKSAhPSAwKSB7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL0V4dGVybmFsTWVkaWFGb3JtYXRBY3Rpdml0eS5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9FeHRlcm5hbE1lZGlhRm9ybWF0QWN0aXZpdHkuamF2YQppbmRleCA3ZTliYmQxLi45OGRjYjhiIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL0V4dGVybmFsTWVkaWFGb3JtYXRBY3Rpdml0eS5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvRXh0ZXJuYWxNZWRpYUZvcm1hdEFjdGl2aXR5LmphdmEKQEAgLTIzLDEzICsyMywxMCBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKLWltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLklNb3VudFNlcnZpY2U7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5FbnZpcm9ubWVudDsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5Ub2FzdDsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogCiAvKioKQEAgLTM4LDcgKzM1LDcgQEAKICAqLwogcHVibGljIGNsYXNzIEV4dGVybmFsTWVkaWFGb3JtYXRBY3Rpdml0eSBleHRlbmRzIEFsZXJ0QWN0aXZpdHkgaW1wbGVtZW50cyBEaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIHsKIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBQT1NJVElWRV9CVVRUT04gPSBBbGVydERpYWxvZy5CVVRUT04xOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBQT1NJVElWRV9CVVRUT04gPSBBbGVydERpYWxvZy5CVVRUT05fUE9TSVRJVkU7CiAKICAgICAvKiogVXNlZCB0byBkZXRlY3Qgd2hlbiB0aGUgbWVkaWEgc3RhdGUgY2hhbmdlcywgaW4gY2FzZSB3ZSBuZWVkIHRvIGNhbGwgZmluaXNoKCkgKi8KICAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1TdG9yYWdlUmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL0hlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9IZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGE3ZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9IZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuamF2YQpAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlck5hdGl2ZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkJ1dHRvbjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CisKKy8qKgorICogVGhpcyBhY3Rpdml0eSBpcyBkaXNwbGF5ZWQgd2hlbiB0aGUgc3lzdGVtIGF0dGVtcHRzIHRvIHN0YXJ0IGFuIEludGVudCBmb3IKKyAqIHdoaWNoIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgbWF0Y2hpbmcgYWN0aXZpdHksIGFsbG93aW5nIHRoZSB1c2VyIHRvIGRlY2lkZQorICogd2hpY2ggdG8gZ28gdG8uICBJdCBpcyBub3Qgbm9ybWFsbHkgdXNlZCBkaXJlY3RseSBieSBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzLgorICovCitwdWJsaWMgY2xhc3MgSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgeworICAgIC8qKiBUaGUgUGVuZGluZ0ludGVudCBvZiB0aGUgbmV3IGFjdGl2aXR5IGJlaW5nIGxhdW5jaGVkLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEtFWV9JTlRFTlQgPSAiaW50ZW50IjsKKyAgICAvKiogU2V0IGlmIHRoZSBjYWxsZXIgaXMgcmVxdWVzdGluZyBhIHJlc3VsdC4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfSEFTX1JFU1VMVCA9ICJoYXNfcmVzdWx0IjsKKyAgICAvKiogUGFja2FnZSBvZiBjdXJyZW50IGhlYXZ5LXdlaWdodCBhcHAuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgS0VZX0NVUl9BUFAgPSAiY3VyX2FwcCI7CisgICAgLyoqIFRhc2sgdGhhdCBjdXJyZW50IGhlYXZ5LXdlaWdodCBhY3Rpdml0eSBpcyBydW5uaW5nIGluLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEtFWV9DVVJfVEFTSyA9ICJjdXJfdGFzayI7CisgICAgLyoqIFBhY2thZ2Ugb2YgbmV3bHkgcmVxdWVzdGVkIGhlYXZ5LXdlaWdodCBhcHAuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgS0VZX05FV19BUFAgPSAibmV3X2FwcCI7CisgICAgCisgICAgSW50ZW50U2VuZGVyIG1TdGFydEludGVudDsKKyAgICBib29sZWFuIG1IYXNSZXN1bHQ7CisgICAgU3RyaW5nIG1DdXJBcHA7CisgICAgaW50IG1DdXJUYXNrOworICAgIFN0cmluZyBtTmV3QXBwOworICAgIAorICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uQ3JlYXRlKEJ1bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUpIHsKKyAgICAgICAgc3VwZXIub25DcmVhdGUoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKKyAgICAgICAgCisgICAgICAgIHJlcXVlc3RXaW5kb3dGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX0xFRlRfSUNPTik7CisgICAgICAgIAorICAgICAgICBtU3RhcnRJbnRlbnQgPSAoSW50ZW50U2VuZGVyKWdldEludGVudCgpLmdldFBhcmNlbGFibGVFeHRyYShLRVlfSU5URU5UKTsKKyAgICAgICAgbUhhc1Jlc3VsdCA9IGdldEludGVudCgpLmdldEJvb2xlYW5FeHRyYShLRVlfSEFTX1JFU1VMVCwgZmFsc2UpOworICAgICAgICBtQ3VyQXBwID0gZ2V0SW50ZW50KCkuZ2V0U3RyaW5nRXh0cmEoS0VZX0NVUl9BUFApOworICAgICAgICBtQ3VyVGFzayA9IGdldEludGVudCgpLmdldEludEV4dHJhKEtFWV9DVVJfVEFTSywgMCk7CisgICAgICAgIG1OZXdBcHAgPSBnZXRJbnRlbnQoKS5nZXRTdHJpbmdFeHRyYShLRVlfTkVXX0FQUCk7CisgICAgICAgIAorICAgICAgICBzZXRDb250ZW50Vmlldyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5oZWF2eV93ZWlnaHRfc3dpdGNoZXIpOworICAgICAgICAKKyAgICAgICAgc2V0SWNvbkFuZFRleHQoUi5pZC5vbGRfYXBwX2ljb24sIFIuaWQub2xkX2FwcF9hY3Rpb24sIFIuaWQub2xkX2FwcF9kZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICBtQ3VyQXBwLCBSLnN0cmluZy5vbGRfYXBwX2FjdGlvbiwgUi5zdHJpbmcub2xkX2FwcF9kZXNjcmlwdGlvbik7CisgICAgICAgIHNldEljb25BbmRUZXh0KFIuaWQubmV3X2FwcF9pY29uLCBSLmlkLm5ld19hcHBfYWN0aW9uLCBSLmlkLm5ld19hcHBfZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgbU5ld0FwcCwgUi5zdHJpbmcubmV3X2FwcF9hY3Rpb24sIFIuc3RyaW5nLm5ld19hcHBfZGVzY3JpcHRpb24pOworICAgICAgICAgICAgCisgICAgICAgIFZpZXcgYnV0dG9uID0gZmluZFZpZXdCeUlkKChSLmlkLnN3aXRjaF9vbGQpKTsKKyAgICAgICAgYnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcihtU3dpdGNoT2xkTGlzdGVuZXIpOworICAgICAgICBidXR0b24gPSBmaW5kVmlld0J5SWQoKFIuaWQuc3dpdGNoX25ldykpOworICAgICAgICBidXR0b24uc2V0T25DbGlja0xpc3RlbmVyKG1Td2l0Y2hOZXdMaXN0ZW5lcik7CisgICAgICAgIGJ1dHRvbiA9IGZpbmRWaWV3QnlJZCgoUi5pZC5jYW5jZWwpKTsKKyAgICAgICAgYnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcihtQ2FuY2VsTGlzdGVuZXIpOworICAgICAgICAKKyAgICAgICAgZ2V0V2luZG93KCkuc2V0RmVhdHVyZURyYXdhYmxlUmVzb3VyY2UoV2luZG93LkZFQVRVUkVfTEVGVF9JQ09OLCAKKyAgICAgICAgICAgICAgICBhbmRyb2lkLlIuZHJhd2FibGUuaWNfZGlhbG9nX2FsZXJ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFRleHQoaW50IGlkLCBDaGFyU2VxdWVuY2UgdGV4dCkgeworICAgICAgICAoKFRleHRWaWV3KWZpbmRWaWV3QnlJZChpZCkpLnNldFRleHQodGV4dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0RHJhd2FibGUoaW50IGlkLCBEcmF3YWJsZSBkcikgeworICAgICAgICBpZiAoZHIgIT0gbnVsbCkgeworICAgICAgICAgICAgKChJbWFnZVZpZXcpZmluZFZpZXdCeUlkKGlkKSkuc2V0SW1hZ2VEcmF3YWJsZShkcik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRJY29uQW5kVGV4dChpbnQgaWNvbklkLCBpbnQgYWN0aW9uSWQsIGludCBkZXNjcmlwdGlvbklkLAorICAgICAgICAgICAgU3RyaW5nIHBhY2thZ2VOYW1lLCBpbnQgYWN0aW9uU3RyLCBpbnQgZGVzY3JpcHRpb25TdHIpIHsKKyAgICAgICAgQ2hhclNlcXVlbmNlIGFwcE5hbWUgPSAiIjsKKyAgICAgICAgRHJhd2FibGUgYXBwSWNvbiA9IG51bGw7CisgICAgICAgIGlmIChtQ3VyQXBwICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvIGluZm8gPSBnZXRQYWNrYWdlTWFuYWdlcigpLmdldEFwcGxpY2F0aW9uSW5mbygKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lLCAwKTsKKyAgICAgICAgICAgICAgICBhcHBOYW1lID0gaW5mby5sb2FkTGFiZWwoZ2V0UGFja2FnZU1hbmFnZXIoKSk7CisgICAgICAgICAgICAgICAgYXBwSWNvbiA9IGluZm8ubG9hZEljb24oZ2V0UGFja2FnZU1hbmFnZXIoKSk7CisgICAgICAgICAgICB9IGNhdGNoIChQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzZXREcmF3YWJsZShpY29uSWQsIGFwcEljb24pOworICAgICAgICBzZXRUZXh0KGFjdGlvbklkLCBnZXRTdHJpbmcoYWN0aW9uU3RyLCBhcHBOYW1lKSk7CisgICAgICAgIHNldFRleHQoZGVzY3JpcHRpb25JZCwgZ2V0VGV4dChkZXNjcmlwdGlvblN0cikpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIE9uQ2xpY2tMaXN0ZW5lciBtU3dpdGNoT2xkTGlzdGVuZXIgPSBuZXcgT25DbGlja0xpc3RlbmVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLm1vdmVUYXNrVG9Gcm9udChtQ3VyVGFzayk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoKCk7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHByaXZhdGUgT25DbGlja0xpc3RlbmVyIG1Td2l0Y2hOZXdMaXN0ZW5lciA9IG5ldyBPbkNsaWNrTGlzdGVuZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuZmluaXNoSGVhdnlXZWlnaHRBcHAoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlmIChtSGFzUmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW50ZW50U2VuZGVyRm9yUmVzdWx0KG1TdGFydEludGVudCwgLTEsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50LkZMQUdfQUNUSVZJVFlfRk9SV0FSRF9SRVNVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50LkZMQUdfQUNUSVZJVFlfRk9SV0FSRF9SRVNVTFQsIDApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW50ZW50U2VuZGVyRm9yUmVzdWx0KG1TdGFydEludGVudCwgLTEsIG51bGwsIDAsIDAsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKEludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgTG9nLncoIkhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eSIsICJGYWlsdXJlIHN0YXJ0aW5nIiwgZXgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoKCk7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHByaXZhdGUgT25DbGlja0xpc3RlbmVyIG1DYW5jZWxMaXN0ZW5lciA9IG5ldyBPbkNsaWNrTGlzdGVuZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgICAgICBmaW5pc2goKTsKKyAgICAgICAgfQorICAgIH07Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL0lCYXR0ZXJ5U3RhdHMuYWlkbCBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvSUJhdHRlcnlTdGF0cy5haWRsCmluZGV4IGQ1Y2NkZWIuLjg4ZWYzOTUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvSUJhdHRlcnlTdGF0cy5haWRsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvSUJhdHRlcnlTdGF0cy5haWRsCkBAIC01MCw4ICs1MCw3IEBACiAgICAgdm9pZCBub3RlU2NhbldpZmlMb2NrUmVsZWFzZWQoaW50IHVpZCk7CiAgICAgdm9pZCBub3RlV2lmaU11bHRpY2FzdEVuYWJsZWQoaW50IHVpZCk7CiAgICAgdm9pZCBub3RlV2lmaU11bHRpY2FzdERpc2FibGVkKGludCB1aWQpOwotICAgIHZvaWQgc2V0T25CYXR0ZXJ5KGJvb2xlYW4gb25CYXR0ZXJ5LCBpbnQgbGV2ZWwpOwotICAgIHZvaWQgcmVjb3JkQ3VycmVudExldmVsKGludCBsZXZlbCk7CisgICAgdm9pZCBzZXRCYXR0ZXJ5U3RhdGUoaW50IHN0YXR1cywgaW50IGhlYWx0aCwgaW50IHBsdWdUeXBlLCBpbnQgbGV2ZWwsIGludCB0ZW1wLCBpbnQgdm9sdCk7CiAgICAgbG9uZyBnZXRBd2FrZVRpbWVCYXR0ZXJ5KCk7CiAgICAgbG9uZyBnZXRBd2FrZVRpbWVQbHVnZ2VkKCk7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL05ldEluaXRpYXRlZEFjdGl2aXR5LmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL05ldEluaXRpYXRlZEFjdGl2aXR5LmphdmEKaW5kZXggMjQ4MThhOC4uMzZmNDViMiAxMDA3NTUKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9OZXRJbml0aWF0ZWRBY3Rpdml0eS5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvTmV0SW5pdGlhdGVkQWN0aXZpdHkuamF2YQpAQCAtMjMsMTQgKzIzLDkgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7Ci1pbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwotaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRvYXN0OwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR3BzTG9jYXRpb25Qcm92aWRlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5HcHNOZXRJbml0aWF0ZWRIYW5kbGVyOwogCiAvKioKQEAgLTQ0LDggKzM5LDggQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gdHJ1ZTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFZFUkJPU0UgPSBmYWxzZTsKIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBQT1NJVElWRV9CVVRUT04gPSBBbGVydERpYWxvZy5CVVRUT04xOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBORUdBVElWRV9CVVRUT04gPSBBbGVydERpYWxvZy5CVVRUT04yOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBQT1NJVElWRV9CVVRUT04gPSBBbGVydERpYWxvZy5CVVRUT05fUE9TSVRJVkU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5FR0FUSVZFX0JVVFRPTiA9IEFsZXJ0RGlhbG9nLkJVVFRPTl9ORUdBVElWRTsKIAogICAgIC8vIERpYWxvZyBidXR0b24gdGV4dAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEJVVFRPTl9URVhUX0FDQ0VQVCA9ICJBY2NlcHQiOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9SaW5ndG9uZVBpY2tlckFjdGl2aXR5LmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL1Jpbmd0b25lUGlja2VyQWN0aXZpdHkuamF2YQppbmRleCBkZGRkYWJlLi41NTY5ZmZlIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL1Jpbmd0b25lUGlja2VyQWN0aXZpdHkuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL1Jpbmd0b25lUGlja2VyQWN0aXZpdHkuamF2YQpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgICogT24gY2xpY2sgb2YgT2svQ2FuY2VsIGJ1dHRvbnMKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKERpYWxvZ0ludGVyZmFjZSBkaWFsb2csIGludCB3aGljaCkgewotICAgICAgICBib29sZWFuIHBvc2l0aXZlUmVzdWx0ID0gd2hpY2ggPT0gQlVUVE9OMTsKKyAgICAgICAgYm9vbGVhbiBwb3NpdGl2ZVJlc3VsdCA9IHdoaWNoID09IERpYWxvZ0ludGVyZmFjZS5CVVRUT05fUE9TSVRJVkU7CiAgICAgICAgIAogICAgICAgICAvLyBTdG9wIHBsYXlpbmcgdGhlIHByZXZpb3VzIHJpbmd0b25lCiAgICAgICAgIG1SaW5ndG9uZU1hbmFnZXIuc3RvcFByZXZpb3VzUmluZ3RvbmUoKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9CYXR0ZXJ5U3RhdHNJbXBsLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvQmF0dGVyeVN0YXRzSW1wbC5qYXZhCmluZGV4IGFhZGI1NzYuLjY0MmMzMTMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9CYXR0ZXJ5U3RhdHNJbXBsLmphdmEKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL0JhdHRlcnlTdGF0c0ltcGwuamF2YQpAQCAtMjAsNiArMjAsNyBAQAogCiBpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoSGVhZHNldDsKIGltcG9ydCBhbmRyb2lkLm5ldC5UcmFmZmljU3RhdHM7CitpbXBvcnQgYW5kcm9pZC5vcy5CYXR0ZXJ5TWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJhdHRlcnlTdGF0czsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbEZvcm1hdEV4Y2VwdGlvbjsKQEAgLTU2LDEzICs1NywxNyBAQAogcHVibGljIGZpbmFsIGNsYXNzIEJhdHRlcnlTdGF0c0ltcGwgZXh0ZW5kcyBCYXR0ZXJ5U3RhdHMgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQmF0dGVyeVN0YXRzSW1wbCI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOwotCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19ISVNUT1JZID0gZmFsc2U7CisgICAgCiAgICAgLy8gSW4tbWVtb3J5IFBhcmNlbCBtYWdpYyBudW1iZXIsIHVzZWQgdG8gZGV0ZWN0IGF0dGVtcHRzIHRvIHVubWFyc2hhbGwgYmFkIGRhdGEKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFHSUMgPSAweEJBNzU3NDc1OyAvLyAnQkFUU1RBVFMnIAogCiAgICAgLy8gQ3VycmVudCBvbi1kaXNrIFBhcmNlbCB2ZXJzaW9uCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFZFUlNJT04gPSA0MzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVkVSU0lPTiA9IDQ4OwogCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgd2Ugd2lsbCByZWNvcmQgaW4gdGhlIGhpc3RvcnkuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9ISVNUT1JZX0lURU1TID0gMTAwMDsKKyAgICAKICAgICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZXMgd2FrZWxvY2tzIHdlIHdpbGwga2VlcCB0cmFjayBvZgogICAgIC8vIHBlciB1aWQ7IG9uY2UgdGhlIGxpbWl0IGlzIHJlYWNoZWQsIHdlIGJhdGNoIHRoZSByZW1haW5pbmcgd2FrZWxvY2tzCiAgICAgLy8gaW4gdG8gb25lIGNvbW1vbiBuYW1lLgpAQCAtOTQsNiArOTksMTcgQEAKICAgICAvLyBpcyB1bnBsdWdnZWQgZnJvbSBwb3dlci4KICAgICBmaW5hbCBBcnJheUxpc3Q8VW5wbHVnZ2FibGU+IG1VbnBsdWdnYWJsZXMgPSBuZXcgQXJyYXlMaXN0PFVucGx1Z2dhYmxlPigpOwogICAgIAorICAgIGJvb2xlYW4gbVNodXR0aW5nRG93bjsKKyAgICAKKyAgICBsb25nIG1IaXN0b3J5QmFzZVRpbWU7CisgICAgYm9vbGVhbiBtSGF2ZUJhdHRlcnlMZXZlbCA9IGZhbHNlOworICAgIGJvb2xlYW4gbVJlY29yZGluZ0hpc3RvcnkgPSB0cnVlOworICAgIGludCBtTnVtSGlzdG9yeUl0ZW1zOworICAgIEhpc3RvcnlJdGVtIG1IaXN0b3J5OworICAgIEhpc3RvcnlJdGVtIG1IaXN0b3J5RW5kOworICAgIEhpc3RvcnlJdGVtIG1IaXN0b3J5Q2FjaGU7CisgICAgZmluYWwgSGlzdG9yeUl0ZW0gbUhpc3RvcnlDdXIgPSBuZXcgSGlzdG9yeUl0ZW0oKTsKKyAgICAKICAgICBpbnQgbVN0YXJ0Q291bnQ7CiAKICAgICBsb25nIG1CYXR0ZXJ5VXB0aW1lOwpAQCAtMTY2LDYgKzE4Miw3IEBACiAgICAgICogVGhlc2Uga2VlcCB0cmFjayBvZiBiYXR0ZXJ5IGxldmVscyAoMS0xMDApIGF0IHRoZSBsYXN0IHBsdWcgZXZlbnQgYW5kIHRoZSBsYXN0IHVucGx1ZyBldmVudC4KICAgICAgKi8KICAgICBpbnQgbURpc2NoYXJnZVN0YXJ0TGV2ZWw7CisgICAgaW50IG1EaXNjaGFyZ2VVbnBsdWdMZXZlbDsKICAgICBpbnQgbURpc2NoYXJnZUN1cnJlbnRMZXZlbDsKIAogICAgIGxvbmcgbUxhc3RXcml0ZVRpbWUgPSAwOyAvLyBNaWxsaXNlY29uZHMKQEAgLTIzMiwxMiArMjQ5LDE0IEBACiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDb3VudGVyIGV4dGVuZHMgQmF0dGVyeVN0YXRzLkNvdW50ZXIgaW1wbGVtZW50cyBVbnBsdWdnYWJsZSB7CiAgICAgICAgIGZpbmFsIEF0b21pY0ludGVnZXIgbUNvdW50ID0gbmV3IEF0b21pY0ludGVnZXIoKTsKKyAgICAgICAgZmluYWwgQXJyYXlMaXN0PFVucGx1Z2dhYmxlPiBtVW5wbHVnZ2FibGVzOwogICAgICAgICBpbnQgbUxvYWRlZENvdW50OwogICAgICAgICBpbnQgbUxhc3RDb3VudDsKICAgICAgICAgaW50IG1VbnBsdWdnZWRDb3VudDsKICAgICAgICAgaW50IG1QbHVnZ2VkQ291bnQ7CiAgICAgICAgIAogICAgICAgICBDb3VudGVyKEFycmF5TGlzdDxVbnBsdWdnYWJsZT4gdW5wbHVnZ2FibGVzLCBQYXJjZWwgaW4pIHsKKyAgICAgICAgICAgIG1VbnBsdWdnYWJsZXMgPSB1bnBsdWdnYWJsZXM7CiAgICAgICAgICAgICBtUGx1Z2dlZENvdW50ID0gaW4ucmVhZEludCgpOwogICAgICAgICAgICAgbUNvdW50LnNldChtUGx1Z2dlZENvdW50KTsKICAgICAgICAgICAgIG1Mb2FkZWRDb3VudCA9IGluLnJlYWRJbnQoKTsKQEAgLTI0Nyw2ICsyNjYsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgQ291bnRlcihBcnJheUxpc3Q8VW5wbHVnZ2FibGU+IHVucGx1Z2dhYmxlcykgeworICAgICAgICAgICAgbVVucGx1Z2dhYmxlcyA9IHVucGx1Z2dhYmxlczsKICAgICAgICAgICAgIHVucGx1Z2dhYmxlcy5hZGQodGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yODksOSArMzA5LDkgQEAKICAgICAgICAgICAgICAgICB2YWwgPSBtTGFzdENvdW50OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWwgPSBtQ291bnQuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1VbnBsdWdnZWRDb3VudDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoICE9IFNUQVRTX1RPVEFMKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCAhPSBTVEFUU19TSU5DRV9DSEFSR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtTG9hZGVkQ291bnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzEwLDYgKzMzMCwyMSBAQAogICAgICAgICAgICAgbUNvdW50LmluY3JlbWVudEFuZEdldCgpOwogICAgICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIENsZWFyIHN0YXRlIG9mIHRoaXMgY291bnRlci4KKyAgICAgICAgICovCisgICAgICAgIHZvaWQgcmVzZXQoYm9vbGVhbiBkZXRhY2hJZlJlc2V0KSB7CisgICAgICAgICAgICBtQ291bnQuc2V0KDApOworICAgICAgICAgICAgbUxvYWRlZENvdW50ID0gbUxhc3RDb3VudCA9IG1QbHVnZ2VkQ291bnQgPSBtVW5wbHVnZ2VkQ291bnQgPSAwOworICAgICAgICAgICAgaWYgKGRldGFjaElmUmVzZXQpIHsKKyAgICAgICAgICAgICAgICBkZXRhY2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBkZXRhY2goKSB7CisgICAgICAgICAgICBtVW5wbHVnZ2FibGVzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCB3cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKFBhcmNlbCBvdXQpIHsKICAgICAgICAgICAgIGludCBjb3VudCA9IG1Db3VudC5nZXQoKTsKICAgICAgICAgICAgIG91dC53cml0ZUludChjb3VudCk7CkBAIC0zNDQsNyArMzc5LDcgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGFic3RyYWN0IGNsYXNzIFRpbWVyIGV4dGVuZHMgQmF0dGVyeVN0YXRzLlRpbWVyIGltcGxlbWVudHMgVW5wbHVnZ2FibGUgewogICAgICAgICBmaW5hbCBpbnQgbVR5cGU7Ci0KKyAgICAgICAgZmluYWwgQXJyYXlMaXN0PFVucGx1Z2dhYmxlPiBtVW5wbHVnZ2FibGVzOwogICAgICAgICAKICAgICAgICAgaW50IG1Db3VudDsKICAgICAgICAgaW50IG1Mb2FkZWRDb3VudDsKQEAgLTM4OSw2ICs0MjQsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgVGltZXIoaW50IHR5cGUsIEFycmF5TGlzdDxVbnBsdWdnYWJsZT4gdW5wbHVnZ2FibGVzLCBQYXJjZWwgaW4pIHsKICAgICAgICAgICAgIG1UeXBlID0gdHlwZTsKKyAgICAgICAgICAgIG1VbnBsdWdnYWJsZXMgPSB1bnBsdWdnYWJsZXM7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1Db3VudCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgICAgIG1Mb2FkZWRDb3VudCA9IGluLnJlYWRJbnQoKTsKQEAgLTQwMyw2ICs0MzksNyBAQAogCiAgICAgICAgIFRpbWVyKGludCB0eXBlLCBBcnJheUxpc3Q8VW5wbHVnZ2FibGU+IHVucGx1Z2dhYmxlcykgewogICAgICAgICAgICAgbVR5cGUgPSB0eXBlOworICAgICAgICAgICAgbVVucGx1Z2dhYmxlcyA9IHVucGx1Z2dhYmxlczsKICAgICAgICAgICAgIHVucGx1Z2dhYmxlcy5hZGQodGhpcyk7CiAgICAgICAgIH0KIApAQCAtNDEwLDYgKzQ0NywyMiBAQAogICAgICAgICAKICAgICAgICAgcHJvdGVjdGVkIGFic3RyYWN0IGludCBjb21wdXRlQ3VycmVudENvdW50TG9ja2VkKCk7CiAgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogQ2xlYXIgc3RhdGUgb2YgdGhpcyB0aW1lci4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgdGltZXIgaXMgaW5hY3RpdmUKKyAgICAgICAgICogc28gY2FuIGJlIGNvbXBsZXRlbHkgZHJvcHBlZC4KKyAgICAgICAgICovCisgICAgICAgIGJvb2xlYW4gcmVzZXQoYm9vbGVhbiBkZXRhY2hJZlJlc2V0KSB7CisgICAgICAgICAgICBtVG90YWxUaW1lID0gbUxvYWRlZFRpbWUgPSBtTGFzdFRpbWUgPSAwOworICAgICAgICAgICAgbUNvdW50ID0gbUxvYWRlZENvdW50ID0gbUxhc3RDb3VudCA9IDA7CisgICAgICAgICAgICBpZiAoZGV0YWNoSWZSZXNldCkgeworICAgICAgICAgICAgICAgIGRldGFjaCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZGV0YWNoKCkgeworICAgICAgICAgICAgbVVucGx1Z2dhYmxlcy5yZW1vdmUodGhpcyk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoUGFyY2VsIG91dCwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUpIHsKICAgICAgICAgICAgIG91dC53cml0ZUludChtQ291bnQpOwpAQCAtNDc0LDkgKzUyNyw5IEBACiAgICAgICAgICAgICAgICAgdmFsID0gbUxhc3RUaW1lOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWwgPSBjb21wdXRlUnVuVGltZUxvY2tlZChiYXR0ZXJ5UmVhbHRpbWUpOwotICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19VTlBMVUdHRUQpIHsKKyAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtVW5wbHVnZ2VkVGltZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoICE9IFNUQVRTX1RPVEFMKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCAhPSBTVEFUU19TSU5DRV9DSEFSR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtTG9hZGVkVGltZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00OTEsOSArNTQ0LDkgQEAKICAgICAgICAgICAgICAgICB2YWwgPSBtTGFzdENvdW50OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWwgPSBjb21wdXRlQ3VycmVudENvdW50TG9ja2VkKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1VbnBsdWdnZWRDb3VudDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoICE9IFNUQVRTX1RPVEFMKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCAhPSBTVEFUU19TSU5DRV9DSEFSR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtTG9hZGVkQ291bnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNjY0LDYgKzcxNywxMiBAQAogICAgICAgICAgICAgb3V0LndyaXRlSW50KG1UcmFja2luZ1JlcG9ydGVkVmFsdWVzID8gMSA6IDApOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBib29sZWFuIHJlc2V0KGJvb2xlYW4gZGV0YWNoSWZSZXNldCkgeworICAgICAgICAgICAgc3VwZXIucmVzZXQoZGV0YWNoSWZSZXNldCk7CisgICAgICAgICAgICBzZXRTdGFsZSgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChQYXJjZWwgb3V0LCBsb25nIGJhdHRlcnlSZWFsdGltZSkgewogICAgICAgICAgICAgc3VwZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIGJhdHRlcnlSZWFsdGltZSk7CiAgICAgICAgICAgICBvdXQud3JpdGVMb25nKG1DdXJyZW50UmVwb3J0ZWRUb3RhbFRpbWUpOwpAQCAtNjg2LDcgKzc0NSw2IEBACiAgICAgICAgIGZpbmFsIEFycmF5TGlzdDxTdG9wd2F0Y2hUaW1lcj4gbVRpbWVyUG9vbDsKICAgICAgICAgaW50IG1OZXN0aW5nOwogCi0KICAgICAgICAgLyoqCiAgICAgICAgICAqIFRoZSBsYXN0IHRpbWUgYXQgd2hpY2ggd2UgdXBkYXRlZCB0aGUgdGltZXIuICBJZiBtTmVzdGluZyBpcyA+IDAsCiAgICAgICAgICAqIHN1YnRyYWN0IHRoaXMgZnJvbSB0aGUgY3VycmVudCBiYXR0ZXJ5IHRpbWUgdG8gZmluZCB0aGUgYW1vdW50IG9mCkBAIC04MzYsNiArODk0LDE5IEBACiAgICAgICAgICAgICByZXR1cm4gbUNvdW50OwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbGVhbiByZXNldChib29sZWFuIGRldGFjaElmUmVzZXQpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gY2FuRGV0YWNoID0gbU5lc3RpbmcgPD0gMDsKKyAgICAgICAgICAgIHN1cGVyLnJlc2V0KGNhbkRldGFjaCAmJiBkZXRhY2hJZlJlc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBjYW5EZXRhY2g7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZGV0YWNoKCkgeworICAgICAgICAgICAgc3VwZXIuZGV0YWNoKCk7CisgICAgICAgICAgICBpZiAobVRpbWVyUG9vbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbVRpbWVyUG9vbC5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKFBhcmNlbCBpbikgewogICAgICAgICAgICAgc3VwZXIucmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKGluKTsKICAgICAgICAgICAgIG1OZXN0aW5nID0gMDsKQEAgLTk3MywxMiArMTA0NCwxMiBAQAogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCBkb0RhdGFQbHVnKGxvbmdbXSBkYXRhVHJhbnNmZXIsIGxvbmcgY3VycmVudEJ5dGVzKSB7Ci0gICAgICAgIGRhdGFUcmFuc2ZlcltTVEFUU19MQVNUXSA9IGRhdGFUcmFuc2ZlcltTVEFUU19VTlBMVUdHRURdOwotICAgICAgICBkYXRhVHJhbnNmZXJbU1RBVFNfVU5QTFVHR0VEXSA9IC0xOworICAgICAgICBkYXRhVHJhbnNmZXJbU1RBVFNfTEFTVF0gPSBkYXRhVHJhbnNmZXJbU1RBVFNfU0lOQ0VfVU5QTFVHR0VEXTsKKyAgICAgICAgZGF0YVRyYW5zZmVyW1NUQVRTX1NJTkNFX1VOUExVR0dFRF0gPSAtMTsKICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgZG9EYXRhVW5wbHVnKGxvbmdbXSBkYXRhVHJhbnNmZXIsIGxvbmcgY3VycmVudEJ5dGVzKSB7Ci0gICAgICAgIGRhdGFUcmFuc2ZlcltTVEFUU19VTlBMVUdHRURdID0gY3VycmVudEJ5dGVzOworICAgICAgICBkYXRhVHJhbnNmZXJbU1RBVFNfU0lOQ0VfVU5QTFVHR0VEXSA9IGN1cnJlbnRCeXRlczsKICAgICB9CiAKICAgICAvKioKQEAgLTEwNDIsNyArMTExMyw1NSBAQAogICAgICAgICBtQnRIZWFkc2V0ID0gaGVhZHNldDsKICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCBkb1VucGx1Zyhsb25nIGJhdHRlcnlVcHRpbWUsIGxvbmcgYmF0dGVyeVJlYWx0aW1lKSB7CisgICAgdm9pZCBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKGxvbmcgY3VyVGltZSkgeworICAgICAgICBpZiAoIW1IYXZlQmF0dGVyeUxldmVsIHx8ICFtUmVjb3JkaW5nSGlzdG9yeSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtTnVtSGlzdG9yeUl0ZW1zID49IE1BWF9ISVNUT1JZX0lURU1TKSB7CisgICAgICAgICAgICAvLyBPbmNlIHdlJ3ZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zLCB3ZSBvbmx5CisgICAgICAgICAgICAvLyByZWNvcmQgY2hhbmdlcyB0byB0aGUgYmF0dGVyeSBsZXZlbC4KKyAgICAgICAgICAgIGlmIChtSGlzdG9yeUVuZCAhPSBudWxsICYmIG1IaXN0b3J5RW5kLmJhdHRlcnlMZXZlbAorICAgICAgICAgICAgICAgICAgICA9PSBtSGlzdG9yeUN1ci5iYXR0ZXJ5TGV2ZWwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChjdXJUaW1lLCBIaXN0b3J5SXRlbS5DTURfVVBEQVRFKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKGxvbmcgY3VyVGltZSwgYnl0ZSBjbWQpIHsKKyAgICAgICAgSGlzdG9yeUl0ZW0gcmVjID0gbUhpc3RvcnlDYWNoZTsKKyAgICAgICAgaWYgKHJlYyAhPSBudWxsKSB7CisgICAgICAgICAgICBtSGlzdG9yeUNhY2hlID0gcmVjLm5leHQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZWMgPSBuZXcgSGlzdG9yeUl0ZW0oKTsKKyAgICAgICAgfQorICAgICAgICByZWMuc2V0VG8obUhpc3RvcnlCYXNlVGltZSArIGN1clRpbWUsIGNtZCwgbUhpc3RvcnlDdXIpOworICAgICAgICAKKyAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChyZWMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoSGlzdG9yeUl0ZW0gcmVjKSB7CisgICAgICAgIG1OdW1IaXN0b3J5SXRlbXMrKzsKKyAgICAgICAgcmVjLm5leHQgPSBudWxsOworICAgICAgICBpZiAobUhpc3RvcnlFbmQgIT0gbnVsbCkgeworICAgICAgICAgICAgbUhpc3RvcnlFbmQubmV4dCA9IHJlYzsKKyAgICAgICAgICAgIG1IaXN0b3J5RW5kID0gcmVjOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbUhpc3RvcnkgPSBtSGlzdG9yeUVuZCA9IHJlYzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGNsZWFySGlzdG9yeUxvY2tlZCgpIHsKKyAgICAgICAgaWYgKG1IaXN0b3J5ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1IaXN0b3J5RW5kLm5leHQgPSBtSGlzdG9yeUNhY2hlOworICAgICAgICAgICAgbUhpc3RvcnlDYWNoZSA9IG1IaXN0b3J5OworICAgICAgICAgICAgbUhpc3RvcnkgPSBtSGlzdG9yeUVuZCA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgbU51bUhpc3RvcnlJdGVtcyA9IDA7CisgICAgICAgIG1IaXN0b3J5QmFzZVRpbWUgPSAwOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBkb1VucGx1Z0xvY2tlZChsb25nIGJhdHRlcnlVcHRpbWUsIGxvbmcgYmF0dGVyeVJlYWx0aW1lKSB7CiAgICAgICAgIGZvciAoaW50IGl1ID0gbVVpZFN0YXRzLnNpemUoKSAtIDE7IGl1ID49IDA7IGl1LS0pIHsKICAgICAgICAgICAgIFVpZCB1ID0gbVVpZFN0YXRzLnZhbHVlQXQoaXUpOwogICAgICAgICAgICAgdS5tU3RhcnRlZFRjcEJ5dGVzUmVjZWl2ZWQgPSBUcmFmZmljU3RhdHMuZ2V0VWlkUnhCeXRlcyh1Lm1VaWQpOwpAQCAtMTA2Niw3ICsxMTg1LDcgQEAKICAgICAgICAgbUJsdWV0b290aFBpbmdDb3VudCA9IDA7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgZG9QbHVnKGxvbmcgYmF0dGVyeVVwdGltZSwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUpIHsKKyAgICBwdWJsaWMgdm9pZCBkb1BsdWdMb2NrZWQobG9uZyBiYXR0ZXJ5VXB0aW1lLCBsb25nIGJhdHRlcnlSZWFsdGltZSkgewogICAgICAgICBmb3IgKGludCBpdSA9IG1VaWRTdGF0cy5zaXplKCkgLSAxOyBpdSA+PSAwOyBpdS0tKSB7CiAgICAgICAgICAgICBVaWQgdSA9IG1VaWRTdGF0cy52YWx1ZUF0KGl1KTsKICAgICAgICAgICAgIGlmICh1Lm1TdGFydGVkVGNwQnl0ZXNSZWNlaXZlZCA+PSAwKSB7CkBAIC0xMDk0LDE2ICsxMjEzLDM3IEBACiAgICAgICAgIG1CbHVldG9vdGhQaW5nU3RhcnQgPSAtMTsKICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCBub3RlU3RhcnRHcHMoaW50IHVpZCkgeworICAgIGludCBtR3BzTmVzdGluZzsKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBub3RlU3RhcnRHcHNMb2NrZWQoaW50IHVpZCkgeworICAgICAgICBpZiAobUdwc05lc3RpbmcgPT0gMCkgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX0dQU19PTl9GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJTdGFydCBHUFMgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgbUdwc05lc3RpbmcrKzsKICAgICAgICAgZ2V0VWlkU3RhdHNMb2NrZWQodWlkKS5ub3RlU3RhcnRHcHMoKTsKICAgICB9CiAgICAgCi0gICAgcHVibGljIHZvaWQgbm90ZVN0b3BHcHMoaW50IHVpZCkgeworICAgIHB1YmxpYyB2b2lkIG5vdGVTdG9wR3BzTG9ja2VkKGludCB1aWQpIHsKKyAgICAgICAgbUdwc05lc3RpbmctLTsKKyAgICAgICAgaWYgKG1HcHNOZXN0aW5nID09IDApIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyAmPSB+SGlzdG9yeUl0ZW0uU1RBVEVfR1BTX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlN0b3AgR1BTIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOworICAgICAgICB9CiAgICAgICAgIGdldFVpZFN0YXRzTG9ja2VkKHVpZCkubm90ZVN0b3BHcHMoKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBub3RlU2NyZWVuT25Mb2NrZWQoKSB7CiAgICAgICAgIGlmICghbVNjcmVlbk9uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfU0NSRUVOX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlNjcmVlbiBvbiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgICAgIG1HcHNOZXN0aW5nKys7CiAgICAgICAgICAgICBtU2NyZWVuT24gPSB0cnVlOwogICAgICAgICAgICAgbVNjcmVlbk9uVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICAgICAgaWYgKG1TY3JlZW5CcmlnaHRuZXNzQmluID49IDApIHsKQEAgLTExMTQsNiArMTI1NCwxMCBAQAogICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVTY3JlZW5PZmZMb2NrZWQoKSB7CiAgICAgICAgIGlmIChtU2NyZWVuT24pIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyAmPSB+SGlzdG9yeUl0ZW0uU1RBVEVfU0NSRUVOX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlNjcmVlbiBvZmYgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtU2NyZWVuT24gPSBmYWxzZTsKICAgICAgICAgICAgIG1TY3JlZW5PblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICAgICAgaWYgKG1TY3JlZW5CcmlnaHRuZXNzQmluID49IDApIHsKQEAgLTExMjgsNiArMTI3MiwxMSBAQAogICAgICAgICBpZiAoYmluIDwgMCkgYmluID0gMDsKICAgICAgICAgZWxzZSBpZiAoYmluID49IE5VTV9TQ1JFRU5fQlJJR0hUTkVTU19CSU5TKSBiaW4gPSBOVU1fU0NSRUVOX0JSSUdIVE5FU1NfQklOUy0xOwogICAgICAgICBpZiAobVNjcmVlbkJyaWdodG5lc3NCaW4gIT0gYmluKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgPSAobUhpc3RvcnlDdXIuc3RhdGVzJn5IaXN0b3J5SXRlbS5TVEFURV9CUklHSFRORVNTX01BU0spCisgICAgICAgICAgICAgICAgICAgIHwgKGJpbiA8PCBIaXN0b3J5SXRlbS5TVEFURV9CUklHSFRORVNTX1NISUZUKTsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiU2NyZWVuIGJyaWdodG5lc3MgIiArIGJpbiArICIgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBpZiAobVNjcmVlbk9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1TY3JlZW5CcmlnaHRuZXNzQmluID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgbVNjcmVlbkJyaWdodG5lc3NUaW1lclttU2NyZWVuQnJpZ2h0bmVzc0Jpbl0uc3RvcFJ1bm5pbmdMb2NrZWQodGhpcyk7CkBAIC0xMTQ4LDYgKzEyOTcsMTAgQEAKICAgICAKICAgICBwdWJsaWMgdm9pZCBub3RlUGhvbmVPbkxvY2tlZCgpIHsKICAgICAgICAgaWYgKCFtUGhvbmVPbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX1BIT05FX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlBob25lIG9uIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbVBob25lT24gPSB0cnVlOwogICAgICAgICAgICAgbVBob25lT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KQEAgLTExNTUsNiArMTMwOCwxMCBAQAogICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVQaG9uZU9mZkxvY2tlZCgpIHsKICAgICAgICAgaWYgKG1QaG9uZU9uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX1BIT05FX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlBob25lIG9mZiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIG1QaG9uZU9uID0gZmFsc2U7CiAgICAgICAgICAgICBtUGhvbmVPblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICB9CkBAIC0xMTc2LDcgKzEzMzMsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBTdG9wIFNpZ25hbCBTY2FubmluZyB0aW1lciwgaW4gY2FzZSB3ZSdyZSBnb2luZyBpbnRvIHNlcnZpY2UKLSAgICAgICAgd2hpbGUgKG1QaG9uZVNpZ25hbFNjYW5uaW5nVGltZXIuaXNSdW5uaW5nTG9ja2VkKCkpIHsKKyAgICAgICAgaWYgKG1QaG9uZVNpZ25hbFNjYW5uaW5nVGltZXIuaXNSdW5uaW5nTG9ja2VkKCkpIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyAmPSB+SGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfU0NBTk5JTkdfRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiUGhvbmUgc3RvcHBlZCBzY2FubmluZyB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIG1QaG9uZVNpZ25hbFNjYW5uaW5nVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KIApAQCAtMTE5MiwxMCArMTM1MywyMiBAQAogICAgICAgICAgICAgICAgIG1QaG9uZVNpZ25hbFN0cmVuZ3Roc1RpbWVyW21QaG9uZVNpZ25hbFN0cmVuZ3RoQmluXS5zdGFydFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIW1QaG9uZVNpZ25hbFNjYW5uaW5nVGltZXIuaXNSdW5uaW5nTG9ja2VkKCkpIHsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfU0NBTk5JTkdfRkxBRzsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlBob25lIHN0YXJ0ZWQgc2Nhbm5pbmcgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgICAgICBtUGhvbmVTaWduYWxTY2FubmluZ1RpbWVyLnN0YXJ0UnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtUGhvbmVTZXJ2aWNlU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChtUGhvbmVTZXJ2aWNlU3RhdGUgIT0gc3RhdGUpIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyA9IChtSGlzdG9yeUN1ci5zdGF0ZXMmfkhpc3RvcnlJdGVtLlNUQVRFX1BIT05FX1NUQVRFX01BU0spCisgICAgICAgICAgICAgICAgICAgIHwgKHN0YXRlIDw8IEhpc3RvcnlJdGVtLlNUQVRFX1BIT05FX1NUQVRFX1NISUZUKTsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiUGhvbmUgc3RhdGUgIiArIGJpbiArICIgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CisgICAgICAgICAgICBtUGhvbmVTZXJ2aWNlU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIG5vdGVQaG9uZVNpZ25hbFN0cmVuZ3RoTG9ja2VkKFNpZ25hbFN0cmVuZ3RoIHNpZ25hbFN0cmVuZ3RoKSB7CkBAIC0xMjIyLDYgKzEzOTUsMTEgQEAKICAgICAgICAgICAgIGVsc2UgYmluID0gU0lHTkFMX1NUUkVOR1RIX1BPT1I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1QaG9uZVNpZ25hbFN0cmVuZ3RoQmluICE9IGJpbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzID0gKG1IaXN0b3J5Q3VyLnN0YXRlcyZ+SGlzdG9yeUl0ZW0uU1RBVEVfU0lHTkFMX1NUUkVOR1RIX01BU0spCisgICAgICAgICAgICAgICAgICAgIHwgKGJpbiA8PCBIaXN0b3J5SXRlbS5TVEFURV9TSUdOQUxfU1RSRU5HVEhfU0hJRlQpOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJTaWduYWwgc3RyZW5ndGggIiArIGJpbiArICIgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBpZiAobVBob25lU2lnbmFsU3RyZW5ndGhCaW4gPj0gMCkgewogICAgICAgICAgICAgICAgIG1QaG9uZVNpZ25hbFN0cmVuZ3Roc1RpbWVyW21QaG9uZVNpZ25hbFN0cmVuZ3RoQmluXS5zdG9wUnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgICAgIH0KQEAgLTEyNDMsNiArMTQyMSwzMyBAQAogICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfVU1UUzoKICAgICAgICAgICAgICAgICAgICAgYmluID0gREFUQV9DT05ORUNUSU9OX1VNVFM7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfQ0RNQToKKyAgICAgICAgICAgICAgICAgICAgYmluID0gREFUQV9DT05ORUNUSU9OX0NETUE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRVZET18wOgorICAgICAgICAgICAgICAgICAgICBiaW4gPSBEQVRBX0NPTk5FQ1RJT05fRVZET18wOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0VWRE9fQToKKyAgICAgICAgICAgICAgICAgICAgYmluID0gREFUQV9DT05ORUNUSU9OX0VWRE9fQTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV8xeFJUVDoKKyAgICAgICAgICAgICAgICAgICAgYmluID0gREFUQV9DT05ORUNUSU9OXzF4UlRUOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0hTRFBBOgorICAgICAgICAgICAgICAgICAgICBiaW4gPSBEQVRBX0NPTk5FQ1RJT05fSFNEUEE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNVUEE6CisgICAgICAgICAgICAgICAgICAgIGJpbiA9IERBVEFfQ09OTkVDVElPTl9IU1VQQTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9IU1BBOgorICAgICAgICAgICAgICAgICAgICBiaW4gPSBEQVRBX0NPTk5FQ1RJT05fSFNQQTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9JREVOOgorICAgICAgICAgICAgICAgICAgICBiaW4gPSBEQVRBX0NPTk5FQ1RJT05fSURFTjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9FVkRPX0I6CisgICAgICAgICAgICAgICAgICAgIGJpbiA9IERBVEFfQ09OTkVDVElPTl9FVkRPX0I7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJpbiA9IERBVEFfQ09OTkVDVElPTl9PVEhFUjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjUwLDYgKzE0NTUsMTEgQEAKICAgICAgICAgfQogICAgICAgICBpZiAoREVCVUcpIExvZy5pKFRBRywgIlBob25lIERhdGEgQ29ubmVjdGlvbiAtPiAiICsgZGF0YVR5cGUgKyAiID0gIiArIGhhc0RhdGEpOwogICAgICAgICBpZiAobVBob25lRGF0YUNvbm5lY3Rpb25UeXBlICE9IGJpbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzID0gKG1IaXN0b3J5Q3VyLnN0YXRlcyZ+SGlzdG9yeUl0ZW0uU1RBVEVfREFUQV9DT05ORUNUSU9OX01BU0spCisgICAgICAgICAgICAgICAgICAgIHwgKGJpbiA8PCBIaXN0b3J5SXRlbS5TVEFURV9EQVRBX0NPTk5FQ1RJT05fU0hJRlQpOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJEYXRhIGNvbm5lY3Rpb24gIiArIGJpbiArICIgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBpZiAobVBob25lRGF0YUNvbm5lY3Rpb25UeXBlID49IDApIHsKICAgICAgICAgICAgICAgICBtUGhvbmVEYXRhQ29ubmVjdGlvbnNUaW1lclttUGhvbmVEYXRhQ29ubmVjdGlvblR5cGVdLnN0b3BSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICAgICAgfQpAQCAtMTI2MCw2ICsxNDcwLDEwIEBACiAgICAgCiAgICAgcHVibGljIHZvaWQgbm90ZVdpZmlPbkxvY2tlZChpbnQgdWlkKSB7CiAgICAgICAgIGlmICghbVdpZmlPbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX1dJRklfT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiV0lGSSBvbiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIG1XaWZpT24gPSB0cnVlOwogICAgICAgICAgICAgbVdpZmlPblRpbWVyLnN0YXJ0UnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTI3NCw2ICsxNDg4LDEwIEBACiAgICAgCiAgICAgcHVibGljIHZvaWQgbm90ZVdpZmlPZmZMb2NrZWQoaW50IHVpZCkgewogICAgICAgICBpZiAobVdpZmlPbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9XSUZJX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIldJRkkgb2ZmIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbVdpZmlPbiA9IGZhbHNlOwogICAgICAgICAgICAgbVdpZmlPblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICB9CkBAIC0xMjg1LDYgKzE1MDMsMTAgQEAKIAogICAgIHB1YmxpYyB2b2lkIG5vdGVBdWRpb09uTG9ja2VkKGludCB1aWQpIHsKICAgICAgICAgaWYgKCFtQXVkaW9PbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX0FVRElPX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIkF1ZGlvIG9uIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbUF1ZGlvT24gPSB0cnVlOwogICAgICAgICAgICAgbUF1ZGlvT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KQEAgLTEyOTMsNiArMTUxNSwxMCBAQAogICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVBdWRpb09mZkxvY2tlZChpbnQgdWlkKSB7CiAgICAgICAgIGlmIChtQXVkaW9PbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9BVURJT19PTl9GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJBdWRpbyBvZmYgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtQXVkaW9PbiA9IGZhbHNlOwogICAgICAgICAgICAgbUF1ZGlvT25UaW1lci5zdG9wUnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTMwMSw2ICsxNTI3LDEwIEBACiAKICAgICBwdWJsaWMgdm9pZCBub3RlVmlkZW9PbkxvY2tlZChpbnQgdWlkKSB7CiAgICAgICAgIGlmICghbVZpZGVvT24pIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyB8PSBIaXN0b3J5SXRlbS5TVEFURV9WSURFT19PTl9GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJWaWRlbyBvbiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIG1WaWRlb09uID0gdHJ1ZTsKICAgICAgICAgICAgIG1WaWRlb09uVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICB9CkBAIC0xMzA5LDYgKzE1MzksMTAgQEAKICAgICAKICAgICBwdWJsaWMgdm9pZCBub3RlVmlkZW9PZmZMb2NrZWQoaW50IHVpZCkgewogICAgICAgICBpZiAobVZpZGVvT24pIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyAmPSB+SGlzdG9yeUl0ZW0uU1RBVEVfVklERU9fT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiVmlkZW8gb2ZmIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbVZpZGVvT24gPSBmYWxzZTsKICAgICAgICAgICAgIG1WaWRlb09uVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KQEAgLTEzMTcsNiArMTU1MSwxMCBAQAogCiAgICAgcHVibGljIHZvaWQgbm90ZVdpZmlSdW5uaW5nTG9ja2VkKCkgewogICAgICAgICBpZiAoIW1XaWZpUnVubmluZykgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX1dJRklfUlVOTklOR19GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIHJ1bm5pbmcgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtV2lmaVJ1bm5pbmcgPSB0cnVlOwogICAgICAgICAgICAgbVdpZmlSdW5uaW5nVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICB9CkBAIC0xMzI0LDYgKzE1NjIsMTAgQEAKIAogICAgIHB1YmxpYyB2b2lkIG5vdGVXaWZpU3RvcHBlZExvY2tlZCgpIHsKICAgICAgICAgaWYgKG1XaWZpUnVubmluZykgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9XSUZJX1JVTk5JTkdfRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiV0lGSSBzdG9wcGVkIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbVdpZmlSdW5uaW5nID0gZmFsc2U7CiAgICAgICAgICAgICBtV2lmaVJ1bm5pbmdUaW1lci5zdG9wUnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTMzMSw2ICsxNTczLDEwIEBACiAKICAgICBwdWJsaWMgdm9pZCBub3RlQmx1ZXRvb3RoT25Mb2NrZWQoKSB7CiAgICAgICAgIGlmICghbUJsdWV0b290aE9uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfQkxVRVRPT1RIX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIkJsdWV0b290aCBvbiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIG1CbHVldG9vdGhPbiA9IHRydWU7CiAgICAgICAgICAgICBtQmx1ZXRvb3RoT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KQEAgLTEzMzgsMzIgKzE1ODQsODQgQEAKICAgICAKICAgICBwdWJsaWMgdm9pZCBub3RlQmx1ZXRvb3RoT2ZmTG9ja2VkKCkgewogICAgICAgICBpZiAobUJsdWV0b290aE9uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX0JMVUVUT09USF9PTl9GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJCbHVldG9vdGggb2ZmIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbUJsdWV0b290aE9uID0gZmFsc2U7CiAgICAgICAgICAgICBtQmx1ZXRvb3RoT25UaW1lci5zdG9wUnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBpbnQgbVdpZmlGdWxsTG9ja05lc3RpbmcgPSAwOworICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVGdWxsV2lmaUxvY2tBY3F1aXJlZExvY2tlZChpbnQgdWlkKSB7CisgICAgICAgIGlmIChtV2lmaUZ1bGxMb2NrTmVzdGluZyA9PSAwKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfV0lGSV9GVUxMX0xPQ0tfRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiV0lGSSBmdWxsIGxvY2sgb24gdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgbVdpZmlGdWxsTG9ja05lc3RpbmcrKzsKICAgICAgICAgZ2V0VWlkU3RhdHNMb2NrZWQodWlkKS5ub3RlRnVsbFdpZmlMb2NrQWNxdWlyZWRMb2NrZWQoKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBub3RlRnVsbFdpZmlMb2NrUmVsZWFzZWRMb2NrZWQoaW50IHVpZCkgeworICAgICAgICBtV2lmaUZ1bGxMb2NrTmVzdGluZy0tOworICAgICAgICBpZiAobVdpZmlGdWxsTG9ja05lc3RpbmcgPT0gMCkgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9XSUZJX0ZVTExfTE9DS19GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIGZ1bGwgbG9jayBvZmYgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CisgICAgICAgIH0KICAgICAgICAgZ2V0VWlkU3RhdHNMb2NrZWQodWlkKS5ub3RlRnVsbFdpZmlMb2NrUmVsZWFzZWRMb2NrZWQoKTsKICAgICB9CiAKKyAgICBpbnQgbVdpZmlTY2FuTG9ja05lc3RpbmcgPSAwOworICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVTY2FuV2lmaUxvY2tBY3F1aXJlZExvY2tlZChpbnQgdWlkKSB7CisgICAgICAgIGlmIChtV2lmaVNjYW5Mb2NrTmVzdGluZyA9PSAwKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfV0lGSV9TQ0FOX0xPQ0tfRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiV0lGSSBzY2FuIGxvY2sgb24gdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgbVdpZmlTY2FuTG9ja05lc3RpbmcrKzsKICAgICAgICAgZ2V0VWlkU3RhdHNMb2NrZWQodWlkKS5ub3RlU2NhbldpZmlMb2NrQWNxdWlyZWRMb2NrZWQoKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBub3RlU2NhbldpZmlMb2NrUmVsZWFzZWRMb2NrZWQoaW50IHVpZCkgeworICAgICAgICBtV2lmaVNjYW5Mb2NrTmVzdGluZy0tOworICAgICAgICBpZiAobVdpZmlTY2FuTG9ja05lc3RpbmcgPT0gMCkgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9XSUZJX1NDQU5fTE9DS19GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIHNjYW4gbG9jayBvZmYgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CisgICAgICAgIH0KICAgICAgICAgZ2V0VWlkU3RhdHNMb2NrZWQodWlkKS5ub3RlU2NhbldpZmlMb2NrUmVsZWFzZWRMb2NrZWQoKTsKICAgICB9CiAKKyAgICBpbnQgbVdpZmlNdWx0aWNhc3ROZXN0aW5nID0gMDsKKyAgICAKICAgICBwdWJsaWMgdm9pZCBub3RlV2lmaU11bHRpY2FzdEVuYWJsZWRMb2NrZWQoaW50IHVpZCkgeworICAgICAgICBpZiAobVdpZmlNdWx0aWNhc3ROZXN0aW5nID09IDApIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyB8PSBIaXN0b3J5SXRlbS5TVEFURV9XSUZJX01VTFRJQ0FTVF9PTl9GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIG11bHRpY2FzdCBvbiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgfQorICAgICAgICBtV2lmaU11bHRpY2FzdE5lc3RpbmcrKzsKICAgICAgICAgZ2V0VWlkU3RhdHNMb2NrZWQodWlkKS5ub3RlV2lmaU11bHRpY2FzdEVuYWJsZWRMb2NrZWQoKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBub3RlV2lmaU11bHRpY2FzdERpc2FibGVkTG9ja2VkKGludCB1aWQpIHsKKyAgICAgICAgbVdpZmlNdWx0aWNhc3ROZXN0aW5nLS07CisgICAgICAgIGlmIChtV2lmaU11bHRpY2FzdE5lc3RpbmcgPT0gMCkgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9XSUZJX01VTFRJQ0FTVF9PTl9GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIG11bHRpY2FzdCBvZmYgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CisgICAgICAgIH0KICAgICAgICAgZ2V0VWlkU3RhdHNMb2NrZWQodWlkKS5ub3RlV2lmaU11bHRpY2FzdERpc2FibGVkTG9ja2VkKCk7CiAgICAgfQogCkBAIC0xNTMxLDkgKzE4MjksOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBtTG9hZGVkVGNwQnl0ZXNSZWNlaXZlZDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbG9uZyBjdXJyZW50ID0gY29tcHV0ZUN1cnJlbnRUY3BCeXRlc1JlY2VpdmVkKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudCAtPSBtVGNwQnl0ZXNSZWNlaXZlZEF0TGFzdFVucGx1ZzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1RPVEFMKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9DSEFSR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgKz0gbUxvYWRlZFRjcEJ5dGVzUmVjZWl2ZWQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwpAQCAtMTU1MSw5ICsxODQ5LDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbUxvYWRlZFRjcEJ5dGVzU2VudDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbG9uZyBjdXJyZW50ID0gY29tcHV0ZUN1cnJlbnRUY3BCeXRlc1NlbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50IC09IG1UY3BCeXRlc1NlbnRBdExhc3RVbnBsdWc7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19UT1RBTCkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfQ0hBUkdFRCkgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50ICs9IG1Mb2FkZWRUY3BCeXRlc1NlbnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwpAQCAtMTU2NCw2ICsxODYyLDEwIEBACiAgICAgICAgIHB1YmxpYyB2b2lkIG5vdGVXaWZpVHVybmVkT25Mb2NrZWQoKSB7CiAgICAgICAgICAgICBpZiAoIW1XaWZpVHVybmVkT24pIHsKICAgICAgICAgICAgICAgICBtV2lmaVR1cm5lZE9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAobVdpZmlUdXJuZWRPblRpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVdpZmlUdXJuZWRPblRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKFdJRklfVFVSTkVEX09OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtV2lmaVR1cm5lZE9uVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE1ODAsNDMgKzE4ODIsMTUgQEAKICAgICAgICAgcHVibGljIHZvaWQgbm90ZUZ1bGxXaWZpTG9ja0FjcXVpcmVkTG9ja2VkKCkgewogICAgICAgICAgICAgaWYgKCFtRnVsbFdpZmlMb2NrT3V0KSB7CiAgICAgICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja091dCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKG1GdWxsV2lmaUxvY2tUaW1lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihGVUxMX1dJRklfTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja1RpbWVyLnN0YXJ0UnVubmluZ0xvY2tlZChCYXR0ZXJ5U3RhdHNJbXBsLnRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgbm90ZVZpZGVvVHVybmVkT25Mb2NrZWQoKSB7Ci0gICAgICAgICAgICBpZiAoIW1WaWRlb1R1cm5lZE9uKSB7Ci0gICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT24gPSB0cnVlOwotICAgICAgICAgICAgICAgIG1WaWRlb1R1cm5lZE9uVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgbm90ZVZpZGVvVHVybmVkT2ZmTG9ja2VkKCkgewotICAgICAgICAgICAgaWYgKG1WaWRlb1R1cm5lZE9uKSB7Ci0gICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT24gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgbm90ZUF1ZGlvVHVybmVkT25Mb2NrZWQoKSB7Ci0gICAgICAgICAgICBpZiAoIW1BdWRpb1R1cm5lZE9uKSB7Ci0gICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT24gPSB0cnVlOwotICAgICAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgbm90ZUF1ZGlvVHVybmVkT2ZmTG9ja2VkKCkgewotICAgICAgICAgICAgaWYgKG1BdWRpb1R1cm5lZE9uKSB7Ci0gICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT24gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtQXVkaW9UdXJuZWRPblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgbm90ZUZ1bGxXaWZpTG9ja1JlbGVhc2VkTG9ja2VkKCkgewogICAgICAgICAgICAgaWYgKG1GdWxsV2lmaUxvY2tPdXQpIHsKICAgICAgICAgICAgICAgICBtRnVsbFdpZmlMb2NrT3V0ID0gZmFsc2U7CkBAIC0xNjI4LDYgKzE5MDIsMTAgQEAKICAgICAgICAgcHVibGljIHZvaWQgbm90ZVNjYW5XaWZpTG9ja0FjcXVpcmVkTG9ja2VkKCkgewogICAgICAgICAgICAgaWYgKCFtU2NhbldpZmlMb2NrT3V0KSB7CiAgICAgICAgICAgICAgICAgbVNjYW5XaWZpTG9ja091dCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKG1TY2FuV2lmaUxvY2tUaW1lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihTQ0FOX1dJRklfTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbVNjYW5XaWZpTG9ja1RpbWVyLnN0YXJ0UnVubmluZ0xvY2tlZChCYXR0ZXJ5U3RhdHNJbXBsLnRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjQ0LDYgKzE5MjIsMTAgQEAKICAgICAgICAgcHVibGljIHZvaWQgbm90ZVdpZmlNdWx0aWNhc3RFbmFibGVkTG9ja2VkKCkgewogICAgICAgICAgICAgaWYgKCFtV2lmaU11bHRpY2FzdEVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICBtV2lmaU11bHRpY2FzdEVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChtV2lmaU11bHRpY2FzdFRpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVdpZmlNdWx0aWNhc3RUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihXSUZJX01VTFRJQ0FTVF9FTkFCTEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtV2lmaU11bHRpY2FzdFRpbWVyLnN0YXJ0UnVubmluZ0xvY2tlZChCYXR0ZXJ5U3RhdHNJbXBsLnRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjU2LDM3ICsxOTM4LDk1IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgbm90ZUF1ZGlvVHVybmVkT25Mb2NrZWQoKSB7CisgICAgICAgICAgICBpZiAoIW1BdWRpb1R1cm5lZE9uKSB7CisgICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT24gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChtQXVkaW9UdXJuZWRPblRpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihBVURJT19UVVJORURfT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbVVucGx1Z2dhYmxlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgbm90ZUF1ZGlvVHVybmVkT2ZmTG9ja2VkKCkgeworICAgICAgICAgICAgaWYgKG1BdWRpb1R1cm5lZE9uKSB7CisgICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtQXVkaW9UdXJuZWRPblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgbm90ZVZpZGVvVHVybmVkT25Mb2NrZWQoKSB7CisgICAgICAgICAgICBpZiAoIW1WaWRlb1R1cm5lZE9uKSB7CisgICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT24gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChtVmlkZW9UdXJuZWRPblRpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihWSURFT19UVVJORURfT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbVVucGx1Z2dhYmxlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1WaWRlb1R1cm5lZE9uVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgbm90ZVZpZGVvVHVybmVkT2ZmTG9ja2VkKCkgeworICAgICAgICAgICAgaWYgKG1WaWRlb1R1cm5lZE9uKSB7CisgICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBAT3ZlcnJpZGUgCiAgICAgICAgIHB1YmxpYyBsb25nIGdldFdpZmlUdXJuZWRPblRpbWUobG9uZyBiYXR0ZXJ5UmVhbHRpbWUsIGludCB3aGljaCkgeworICAgICAgICAgICAgaWYgKG1XaWZpVHVybmVkT25UaW1lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbVdpZmlUdXJuZWRPblRpbWVyLmdldFRvdGFsVGltZUxvY2tlZChiYXR0ZXJ5UmVhbHRpbWUsIHdoaWNoKTsKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZSAKLSAgICAgICAgcHVibGljIGxvbmcgZ2V0QXVkaW9UdXJuZWRPblRpbWUobG9uZyBiYXR0ZXJ5UmVhbHRpbWUsIGludCB3aGljaCkgewotICAgICAgICAgICAgcmV0dXJuIG1BdWRpb1R1cm5lZE9uVGltZXIuZ2V0VG90YWxUaW1lTG9ja2VkKGJhdHRlcnlSZWFsdGltZSwgd2hpY2gpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlIAotICAgICAgICBwdWJsaWMgbG9uZyBnZXRWaWRlb1R1cm5lZE9uVGltZShsb25nIGJhdHRlcnlSZWFsdGltZSwgaW50IHdoaWNoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbVZpZGVvVHVybmVkT25UaW1lci5nZXRUb3RhbFRpbWVMb2NrZWQoYmF0dGVyeVJlYWx0aW1lLCB3aGljaCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUgCiAgICAgICAgIHB1YmxpYyBsb25nIGdldEZ1bGxXaWZpTG9ja1RpbWUobG9uZyBiYXR0ZXJ5UmVhbHRpbWUsIGludCB3aGljaCkgeworICAgICAgICAgICAgaWYgKG1GdWxsV2lmaUxvY2tUaW1lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbUZ1bGxXaWZpTG9ja1RpbWVyLmdldFRvdGFsVGltZUxvY2tlZChiYXR0ZXJ5UmVhbHRpbWUsIHdoaWNoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgQE92ZXJyaWRlIAogICAgICAgICBwdWJsaWMgbG9uZyBnZXRTY2FuV2lmaUxvY2tUaW1lKGxvbmcgYmF0dGVyeVJlYWx0aW1lLCBpbnQgd2hpY2gpIHsKKyAgICAgICAgICAgIGlmIChtU2NhbldpZmlMb2NrVGltZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG1TY2FuV2lmaUxvY2tUaW1lci5nZXRUb3RhbFRpbWVMb2NrZWQoYmF0dGVyeVJlYWx0aW1lLCB3aGljaCk7CiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIGxvbmcgZ2V0V2lmaU11bHRpY2FzdFRpbWUobG9uZyBiYXR0ZXJ5UmVhbHRpbWUsIGludCB3aGljaCkgeworICAgICAgICAgICAgaWYgKG1XaWZpTXVsdGljYXN0VGltZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG1XaWZpTXVsdGljYXN0VGltZXIuZ2V0VG90YWxUaW1lTG9ja2VkKGJhdHRlcnlSZWFsdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCk7CiAgICAgICAgIH0KIAorICAgICAgICBAT3ZlcnJpZGUgCisgICAgICAgIHB1YmxpYyBsb25nIGdldEF1ZGlvVHVybmVkT25UaW1lKGxvbmcgYmF0dGVyeVJlYWx0aW1lLCBpbnQgd2hpY2gpIHsKKyAgICAgICAgICAgIGlmIChtQXVkaW9UdXJuZWRPblRpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtQXVkaW9UdXJuZWRPblRpbWVyLmdldFRvdGFsVGltZUxvY2tlZChiYXR0ZXJ5UmVhbHRpbWUsIHdoaWNoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZSAKKyAgICAgICAgcHVibGljIGxvbmcgZ2V0VmlkZW9UdXJuZWRPblRpbWUobG9uZyBiYXR0ZXJ5UmVhbHRpbWUsIGludCB3aGljaCkgeworICAgICAgICAgICAgaWYgKG1WaWRlb1R1cm5lZE9uVGltZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1WaWRlb1R1cm5lZE9uVGltZXIuZ2V0VG90YWxUaW1lTG9ja2VkKGJhdHRlcnlSZWFsdGltZSwgd2hpY2gpOworICAgICAgICB9CisKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIG5vdGVVc2VyQWN0aXZpdHlMb2NrZWQoaW50IHR5cGUpIHsKICAgICAgICAgICAgIGlmIChtVXNlckFjdGl2aXR5Q291bnRlcnMgPT0gbnVsbCkgewpAQCAtMTcyMiw2ICsyMDYyLDEyNiBAQAogICAgICAgICAgICAgICAgICAgICA/IChUcmFmZmljU3RhdHMuZ2V0VWlkVHhCeXRlcyhtVWlkKSAtIG1TdGFydGVkVGNwQnl0ZXNTZW50KSA6IDApOwogICAgICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIENsZWFyIGFsbCBzdGF0cyBmb3IgdGhpcyB1aWQuICBSZXR1cm5zIHRydWUgaWYgdGhlIHVpZCBpcyBjb21wbGV0ZWx5CisgICAgICAgICAqIGluYWN0aXZlIHNvIGNhbiBiZSBkcm9wcGVkLgorICAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiByZXNldCgpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gYWN0aXZlID0gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtV2lmaVR1cm5lZE9uVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSAhbVdpZmlUdXJuZWRPblRpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3RpdmUgfD0gbVdpZmlUdXJuZWRPbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtRnVsbFdpZmlMb2NrVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSAhbUZ1bGxXaWZpTG9ja1RpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3RpdmUgfD0gbUZ1bGxXaWZpTG9ja091dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtU2NhbldpZmlMb2NrVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSAhbVNjYW5XaWZpTG9ja1RpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3RpdmUgfD0gbVNjYW5XaWZpTG9ja091dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtV2lmaU11bHRpY2FzdFRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhY3RpdmUgfD0gIW1XaWZpTXVsdGljYXN0VGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSBtV2lmaU11bHRpY2FzdEVuYWJsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUF1ZGlvVHVybmVkT25UaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYWN0aXZlIHw9ICFtQXVkaW9UdXJuZWRPblRpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3RpdmUgfD0gbUF1ZGlvVHVybmVkT247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVZpZGVvVHVybmVkT25UaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYWN0aXZlIHw9ICFtVmlkZW9UdXJuZWRPblRpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3RpdmUgfD0gbVZpZGVvVHVybmVkT247CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1Mb2FkZWRUY3BCeXRlc1JlY2VpdmVkID0gbUxvYWRlZFRjcEJ5dGVzU2VudCA9IDA7CisgICAgICAgICAgICBtQ3VycmVudFRjcEJ5dGVzUmVjZWl2ZWQgPSBtQ3VycmVudFRjcEJ5dGVzU2VudCA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtVXNlckFjdGl2aXR5Q291bnRlcnMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOVU1fVVNFUl9BQ1RJVklUWV9UWVBFUzsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG1Vc2VyQWN0aXZpdHlDb3VudGVyc1tpXS5yZXNldChmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobVdha2Vsb2NrU3RhdHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPE1hcC5FbnRyeTxTdHJpbmcsIFdha2Vsb2NrPj4gaXQgPSBtV2FrZWxvY2tTdGF0cy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBNYXAuRW50cnk8U3RyaW5nLCBXYWtlbG9jaz4gd2FrZWxvY2tFbnRyeSA9IGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgV2FrZWxvY2sgd2wgPSB3YWtlbG9ja0VudHJ5LmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3bC5yZXNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpdC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVNlbnNvclN0YXRzLnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgICAgICBJdGVyYXRvcjxNYXAuRW50cnk8SW50ZWdlciwgU2Vuc29yPj4gaXQgPSBtU2Vuc29yU3RhdHMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgTWFwLkVudHJ5PEludGVnZXIsIFNlbnNvcj4gc2Vuc29yRW50cnkgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIFNlbnNvciBzID0gc2Vuc29yRW50cnkuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMucmVzZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaXQucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1Qcm9jZXNzU3RhdHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPE1hcC5FbnRyeTxTdHJpbmcsIFByb2M+PiBpdCA9IG1Qcm9jZXNzU3RhdHMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgTWFwLkVudHJ5PFN0cmluZywgUHJvYz4gcHJvY0VudHJ5ID0gaXQubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jRW50cnkuZ2V0VmFsdWUoKS5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbVByb2Nlc3NTdGF0cy5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1QYWNrYWdlU3RhdHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPE1hcC5FbnRyeTxTdHJpbmcsIFBrZz4+IGl0ID0gbVBhY2thZ2VTdGF0cy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBNYXAuRW50cnk8U3RyaW5nLCBQa2c+IHBrZ0VudHJ5ID0gaXQubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBQa2cgcCA9IHBrZ0VudHJ5LmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIHAuZGV0YWNoKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwLm1TZXJ2aWNlU3RhdHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3I8TWFwLkVudHJ5PFN0cmluZywgUGtnLlNlcnY+PiBpdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwLm1TZXJ2aWNlU3RhdHMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl0Mi5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXAuRW50cnk8U3RyaW5nLCBQa2cuU2Vydj4gc2VydkVudHJ5ID0gaXQyLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2RW50cnkuZ2V0VmFsdWUoKS5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtUGFja2FnZVN0YXRzLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghYWN0aXZlKSB7CisgICAgICAgICAgICAgICAgaWYgKG1XaWZpVHVybmVkT25UaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1XaWZpVHVybmVkT25UaW1lci5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1GdWxsV2lmaUxvY2tUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tUaW1lci5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1TY2FuV2lmaUxvY2tUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tUaW1lci5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1XaWZpTXVsdGljYXN0VGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtV2lmaU11bHRpY2FzdFRpbWVyLmRldGFjaCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobUF1ZGlvVHVybmVkT25UaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uVGltZXIuZGV0YWNoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtVmlkZW9UdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT25UaW1lci5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1Vc2VyQWN0aXZpdHlDb3VudGVycyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOVU1fVVNFUl9BQ1RJVklUWV9UWVBFUzsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVXNlckFjdGl2aXR5Q291bnRlcnNbaV0uZGV0YWNoKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiAhYWN0aXZlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIHdyaXRlVG9QYXJjZWxMb2NrZWQoUGFyY2VsIG91dCwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUpIHsKICAgICAgICAgICAgIG91dC53cml0ZUludChtV2FrZWxvY2tTdGF0cy5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChNYXAuRW50cnk8U3RyaW5nLCBVaWQuV2FrZWxvY2s+IHdha2Vsb2NrRW50cnkgOiBtV2FrZWxvY2tTdGF0cy5lbnRyeVNldCgpKSB7CkBAIC0xNzU3LDE5ICsyMjE3LDQ5IEBACiAgICAgICAgICAgICBvdXQud3JpdGVMb25nKGNvbXB1dGVDdXJyZW50VGNwQnl0ZXNTZW50KCkpOwogICAgICAgICAgICAgb3V0LndyaXRlTG9uZyhtVGNwQnl0ZXNSZWNlaXZlZEF0TGFzdFVucGx1Zyk7CiAgICAgICAgICAgICBvdXQud3JpdGVMb25nKG1UY3BCeXRlc1NlbnRBdExhc3RVbnBsdWcpOwotICAgICAgICAgICAgbVdpZmlUdXJuZWRPblRpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOwotICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja1RpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOwotICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lci53cml0ZVRvUGFyY2VsKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKLSAgICAgICAgICAgIG1WaWRlb1R1cm5lZE9uVGltZXIud3JpdGVUb1BhcmNlbChvdXQsIGJhdHRlcnlSZWFsdGltZSk7Ci0gICAgICAgICAgICBtU2NhbldpZmlMb2NrVGltZXIud3JpdGVUb1BhcmNlbChvdXQsIGJhdHRlcnlSZWFsdGltZSk7Ci0gICAgICAgICAgICBtV2lmaU11bHRpY2FzdFRpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOwotICAgICAgICAgICAgaWYgKG1Vc2VyQWN0aXZpdHlDb3VudGVycyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgaWYgKG1XaWZpVHVybmVkT25UaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIG1XaWZpVHVybmVkT25UaW1lci53cml0ZVRvUGFyY2VsKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1GdWxsV2lmaUxvY2tUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tUaW1lci53cml0ZVRvUGFyY2VsKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1TY2FuV2lmaUxvY2tUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tUaW1lci53cml0ZVRvUGFyY2VsKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1XaWZpTXVsdGljYXN0VGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgxKTsKKyAgICAgICAgICAgICAgICBtV2lmaU11bHRpY2FzdFRpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUF1ZGlvVHVybmVkT25UaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uVGltZXIud3JpdGVUb1BhcmNlbChvdXQsIGJhdHRlcnlSZWFsdGltZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtVmlkZW9UdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT25UaW1lci53cml0ZVRvUGFyY2VsKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1Vc2VyQWN0aXZpdHlDb3VudGVycyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOVU1fVVNFUl9BQ1RJVklUWV9UWVBFUzsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIG1Vc2VyQWN0aXZpdHlDb3VudGVyc1tpXS53cml0ZVRvUGFyY2VsKG91dCk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTgyMiwyNSArMjMxMiw1NCBAQAogICAgICAgICAgICAgbVRjcEJ5dGVzUmVjZWl2ZWRBdExhc3RVbnBsdWcgPSBpbi5yZWFkTG9uZygpOwogICAgICAgICAgICAgbVRjcEJ5dGVzU2VudEF0TGFzdFVucGx1ZyA9IGluLnJlYWRMb25nKCk7CiAgICAgICAgICAgICBtV2lmaVR1cm5lZE9uID0gZmFsc2U7Ci0gICAgICAgICAgICBtV2lmaVR1cm5lZE9uVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoV0lGSV9UVVJORURfT04sIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKLSAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tPdXQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihGVUxMX1dJRklfTE9DSywgbnVsbCwgbVVucGx1Z2dhYmxlcywgaW4pOwotICAgICAgICAgICAgbUF1ZGlvVHVybmVkT24gPSBmYWxzZTsKLSAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoQVVESU9fVFVSTkVEX09OLCBudWxsLCBtVW5wbHVnZ2FibGVzLCBpbik7Ci0gICAgICAgICAgICBtVmlkZW9UdXJuZWRPbiA9IGZhbHNlOwotICAgICAgICAgICAgbVZpZGVvVHVybmVkT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihWSURFT19UVVJORURfT04sIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKLSAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tPdXQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihTQ0FOX1dJRklfTE9DSywgbnVsbCwgbVVucGx1Z2dhYmxlcywgaW4pOwotICAgICAgICAgICAgbVdpZmlNdWx0aWNhc3RFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtV2lmaU11bHRpY2FzdFRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKFdJRklfTVVMVElDQVNUX0VOQUJMRUQsCi0gICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKLSAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgPT0gMCkgewotICAgICAgICAgICAgICAgIG1Vc2VyQWN0aXZpdHlDb3VudGVycyA9IG51bGw7CisgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICBtV2lmaVR1cm5lZE9uVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoV0lGSV9UVVJORURfT04sCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzLCBpbik7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1XaWZpVHVybmVkT25UaW1lciA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtRnVsbFdpZmlMb2NrT3V0ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICBtRnVsbFdpZmlMb2NrVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoRlVMTF9XSUZJX0xPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzLCBpbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tUaW1lciA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU2NhbldpZmlMb2NrT3V0ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICBtU2NhbldpZmlMb2NrVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoU0NBTl9XSUZJX0xPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzLCBpbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tUaW1lciA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtV2lmaU11bHRpY2FzdEVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIG1XaWZpTXVsdGljYXN0VGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoV0lGSV9NVUxUSUNBU1RfRU5BQkxFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVdpZmlNdWx0aWNhc3RUaW1lciA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtQXVkaW9UdXJuZWRPbiA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihBVURJT19UVVJORURfT04sCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzLCBpbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uVGltZXIgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVZpZGVvVHVybmVkT24gPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIG1WaWRlb1R1cm5lZE9uVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoVklERU9fVFVSTkVEX09OLAorICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbVVucGx1Z2dhYmxlcywgaW4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPblRpbWVyID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgewogICAgICAgICAgICAgICAgIG1Vc2VyQWN0aXZpdHlDb3VudGVycyA9IG5ldyBDb3VudGVyW05VTV9VU0VSX0FDVElWSVRZX1RZUEVTXTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TlVNX1VTRVJfQUNUSVZJVFlfVFlQRVM7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBtVXNlckFjdGl2aXR5Q291bnRlcnNbaV0gPSBuZXcgQ291bnRlcihtVW5wbHVnZ2FibGVzLCBpbik7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtVXNlckFjdGl2aXR5Q291bnRlcnMgPSBudWxsOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE4NzksNiArMjM5OCwzNCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RvcHdhdGNoVGltZXIodHlwZSwgcG9vbCwgdW5wbHVnZ2FibGVzLCBpbik7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGJvb2xlYW4gcmVzZXQoKSB7CisgICAgICAgICAgICAgICAgYm9vbGVhbiB3bGFjdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChtVGltZXJGdWxsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgd2xhY3RpdmUgfD0gIW1UaW1lckZ1bGwucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVRpbWVyUGFydGlhbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHdsYWN0aXZlIHw9ICFtVGltZXJQYXJ0aWFsLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1UaW1lcldpbmRvdyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHdsYWN0aXZlIHw9ICFtVGltZXJXaW5kb3cucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIXdsYWN0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtVGltZXJGdWxsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1UaW1lckZ1bGwuZGV0YWNoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtVGltZXJGdWxsID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobVRpbWVyUGFydGlhbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVGltZXJQYXJ0aWFsLmRldGFjaCgpOworICAgICAgICAgICAgICAgICAgICAgICAgbVRpbWVyUGFydGlhbCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1UaW1lcldpbmRvdyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVGltZXJXaW5kb3cuZGV0YWNoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtVGltZXJXaW5kb3cgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiAhd2xhY3RpdmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIHZvaWQgcmVhZEZyb21QYXJjZWxMb2NrZWQoQXJyYXlMaXN0PFVucGx1Z2dhYmxlPiB1bnBsdWdnYWJsZXMsIFBhcmNlbCBpbikgewogICAgICAgICAgICAgICAgIG1UaW1lclBhcnRpYWwgPSByZWFkVGltZXJGcm9tUGFyY2VsKFdBS0VfVFlQRV9QQVJUSUFMLAogICAgICAgICAgICAgICAgICAgICAgICAgbVBhcnRpYWxUaW1lcnMsIHVucGx1Z2dhYmxlcywgaW4pOwpAQCAtMTkyNyw2ICsyNDc0LDE0IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdG9wd2F0Y2hUaW1lcigwLCBwb29sLCB1bnBsdWdnYWJsZXMsIGluKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgYm9vbGVhbiByZXNldCgpIHsKKyAgICAgICAgICAgICAgICBpZiAobVRpbWVyLnJlc2V0KHRydWUpKSB7CisgICAgICAgICAgICAgICAgICAgIG1UaW1lciA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIHZvaWQgcmVhZEZyb21QYXJjZWxMb2NrZWQoQXJyYXlMaXN0PFVucGx1Z2dhYmxlPiB1bnBsdWdnYWJsZXMsIFBhcmNlbCBpbikgewogICAgICAgICAgICAgICAgIG1UaW1lciA9IHJlYWRUaW1lckZyb21QYXJjZWwodW5wbHVnZ2FibGVzLCBpbik7CiAgICAgICAgICAgICB9CkBAIC0yMDM1LDkgKzI1OTAsNiBAQAogICAgICAgICAgICAgUHJvYygpIHsKICAgICAgICAgICAgICAgICBtVW5wbHVnZ2FibGVzLmFkZCh0aGlzKTsKICAgICAgICAgICAgICAgICBtU3BlZWRCaW5zID0gbmV3IFNhbXBsaW5nQ291bnRlcltnZXRDcHVTcGVlZFN0ZXBzKCldOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVNwZWVkQmlucy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBtU3BlZWRCaW5zW2ldID0gbmV3IFNhbXBsaW5nQ291bnRlcihtVW5wbHVnZ2FibGVzKTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHVucGx1Zyhsb25nIGJhdHRlcnlVcHRpbWUsIGxvbmcgYmF0dGVyeVJlYWx0aW1lKSB7CkBAIC0yMDUwLDEwICsyNjAyLDE4IEBACiAgICAgICAgICAgICBwdWJsaWMgdm9pZCBwbHVnKGxvbmcgYmF0dGVyeVVwdGltZSwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUpIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICAgICAgdm9pZCBkZXRhY2goKSB7CisgICAgICAgICAgICAgICAgbVVucGx1Z2dhYmxlcy5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtU3BlZWRCaW5zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIFNhbXBsaW5nQ291bnRlciBjID0gbVNwZWVkQmluc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVVucGx1Z2dhYmxlcy5yZW1vdmUoYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3BlZWRCaW5zW2ldID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdm9pZCB3cml0ZVRvUGFyY2VsTG9ja2VkKFBhcmNlbCBvdXQpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBsb25nIHVTZWNSZWFsdGltZSA9IFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpICogMTAwMDsKLSAgICAgICAgICAgICAgICBmaW5hbCBsb25nIGJhdHRlcnlSZWFsdGltZSA9IGdldEJhdHRlcnlSZWFsdGltZUxvY2tlZCh1U2VjUmVhbHRpbWUpOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG91dC53cml0ZUxvbmcobVVzZXJUaW1lKTsKICAgICAgICAgICAgICAgICBvdXQud3JpdGVMb25nKG1TeXN0ZW1UaW1lKTsKICAgICAgICAgICAgICAgICBvdXQud3JpdGVMb25nKG1Gb3JlZ3JvdW5kVGltZSk7CkBAIC0yMDczLDcgKzI2MzMsMTMgQEAKIAogICAgICAgICAgICAgICAgIG91dC53cml0ZUludChtU3BlZWRCaW5zLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtU3BlZWRCaW5zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TcGVlZEJpbnNbaV0ud3JpdGVUb1BhcmNlbChvdXQpOworICAgICAgICAgICAgICAgICAgICBTYW1wbGluZ0NvdW50ZXIgYyA9IG1TcGVlZEJpbnNbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChjICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMud3JpdGVUb1BhcmNlbChvdXQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0yMDk2LDkgKzI2NjIsMTIgQEAKICAgICAgICAgICAgICAgICBtVW5wbHVnZ2VkU3RhcnRzID0gaW4ucmVhZEludCgpOwogCiAgICAgICAgICAgICAgICAgaW50IGJpbnMgPSBpbi5yZWFkSW50KCk7Ci0gICAgICAgICAgICAgICAgbVNwZWVkQmlucyA9IG5ldyBTYW1wbGluZ0NvdW50ZXJbYmluc107CisgICAgICAgICAgICAgICAgaW50IHN0ZXBzID0gZ2V0Q3B1U3BlZWRTdGVwcygpOworICAgICAgICAgICAgICAgIG1TcGVlZEJpbnMgPSBuZXcgU2FtcGxpbmdDb3VudGVyW2JpbnMgPj0gc3RlcHMgPyBiaW5zIDogc3RlcHNdOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYmluczsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TcGVlZEJpbnNbaV0gPSBuZXcgU2FtcGxpbmdDb3VudGVyKG1VbnBsdWdnYWJsZXMsIGluKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3BlZWRCaW5zW2ldID0gbmV3IFNhbXBsaW5nQ291bnRlcihtVW5wbHVnZ2FibGVzLCBpbik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTIxMjgsNyArMjY5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhbCA9IG1Vc2VyVGltZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX0NVUlJFTlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtTG9hZGVkVXNlclRpbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbVVucGx1Z2dlZFVzZXJUaW1lOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjE0NCw3ICsyNzEzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFsID0gbVN5c3RlbVRpbWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19DVVJSRU5UKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbUxvYWRlZFN5c3RlbVRpbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbVVucGx1Z2dlZFN5c3RlbVRpbWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yMTYwLDcgKzI3MjksNyBAQAogICAgICAgICAgICAgICAgICAgICB2YWwgPSBtRm9yZWdyb3VuZFRpbWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19DVVJSRU5UKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbUxvYWRlZEZvcmVncm91bmRUaW1lOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1VbnBsdWdnZWRGb3JlZ3JvdW5kVGltZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTIxNzYsNyArMjc0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhbCA9IG1TdGFydHM7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19DVVJSRU5UKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbUxvYWRlZFN0YXJ0czsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19VTlBMVUdHRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtVW5wbHVnZ2VkU3RhcnRzOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjE4NiwxNCArMjc1NSwyMiBAQAogICAgICAgICAgICAgLyogQ2FsbGVkIGJ5IEFjdGl2aXR5TWFuYWdlclNlcnZpY2Ugd2hlbiBDUFUgdGltZXMgYXJlIHVwZGF0ZWQuICovCiAgICAgICAgICAgICBwdWJsaWMgdm9pZCBhZGRTcGVlZFN0ZXBUaW1lcyhsb25nW10gdmFsdWVzKSB7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtU3BlZWRCaW5zLmxlbmd0aCAmJiBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TcGVlZEJpbnNbaV0uYWRkQ291bnRBdG9taWModmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgbG9uZyBhbXQgPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChhbXQgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxpbmdDb3VudGVyIGMgPSBtU3BlZWRCaW5zW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TcGVlZEJpbnNbaV0gPSBjID0gbmV3IFNhbXBsaW5nQ291bnRlcihtVW5wbHVnZ2FibGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGMuYWRkQ291bnRBdG9taWModmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRUaW1lQXRDcHVTcGVlZFN0ZXAoaW50IHNwZWVkU3RlcCwgaW50IHdoaWNoKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNwZWVkU3RlcCA8IG1TcGVlZEJpbnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtU3BlZWRCaW5zW3NwZWVkU3RlcF0uZ2V0Q291bnRMb2NrZWQod2hpY2gpOworICAgICAgICAgICAgICAgICAgICBTYW1wbGluZ0NvdW50ZXIgYyA9IG1TcGVlZEJpbnNbc3BlZWRTdGVwXTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMgIT0gbnVsbCA/IGMuZ2V0Q291bnRMb2NrZWQod2hpY2gpIDogMDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CkBAIC0yMjQ0LDYgKzI4MjEsMTAgQEAKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHBsdWcobG9uZyBiYXR0ZXJ5VXB0aW1lLCBsb25nIGJhdHRlcnlSZWFsdGltZSkgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICB2b2lkIGRldGFjaCgpIHsKKyAgICAgICAgICAgICAgICBtVW5wbHVnZ2FibGVzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdm9pZCByZWFkRnJvbVBhcmNlbExvY2tlZChQYXJjZWwgaW4pIHsKICAgICAgICAgICAgICAgICBtV2FrZXVwcyA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgICAgICAgICBtTG9hZGVkV2FrZXVwcyA9IGluLnJlYWRJbnQoKTsKQEAgLTIyOTAsNyArMjg3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhbCA9IG1XYWtldXBzOwogICAgICAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfQ1VSUkVOVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1Mb2FkZWRXYWtldXBzOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1VbnBsdWdnZWRXYWtldXBzOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjQwNSw2ICsyOTg2LDEwIEBACiAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcGx1Zyhsb25nIGJhdHRlcnlVcHRpbWUsIGxvbmcgYmF0dGVyeVJlYWx0aW1lKSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZvaWQgZGV0YWNoKCkgeworICAgICAgICAgICAgICAgICAgICBtVW5wbHVnZ2FibGVzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgdm9pZCByZWFkRnJvbVBhcmNlbExvY2tlZChQYXJjZWwgaW4pIHsKICAgICAgICAgICAgICAgICAgICAgbVN0YXJ0VGltZSA9IGluLnJlYWRMb25nKCk7CiAgICAgICAgICAgICAgICAgICAgIG1SdW5uaW5nU2luY2UgPSBpbi5yZWFkTG9uZygpOwpAQCAtMjUwOSw3ICszMDk0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IG1MYXVuY2hlczsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19DVVJSRU5UKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1Mb2FkZWRMYXVuY2hlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtVW5wbHVnZ2VkTGF1bmNoZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI1MjYsNyArMzExMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBnZXRTdGFydFRpbWVUb05vd0xvY2tlZChub3cpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX0NVUlJFTlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbUxvYWRlZFN0YXJ0VGltZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtVW5wbHVnZ2VkU3RhcnRUaW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNTQzLDcgKzMxMjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gbVN0YXJ0czsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19DVVJSRU5UKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1Mb2FkZWRTdGFydHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbVVucGx1Z2dlZFN0YXJ0czsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjczOSw3ICszMzI0LDkgQEAKICAgICAgICAgbVdpZmlSdW5uaW5nVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoLTQsIG51bGwsIG1VbnBsdWdnYWJsZXMpOwogICAgICAgICBtQmx1ZXRvb3RoT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcigtNSwgbnVsbCwgbVVucGx1Z2dhYmxlcyk7CiAgICAgICAgIG1BdWRpb09uVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoLTYsIG51bGwsIG1VbnBsdWdnYWJsZXMpOworICAgICAgICBtVmlkZW9PblRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKC03LCBudWxsLCBtVW5wbHVnZ2FibGVzKTsKICAgICAgICAgbU9uQmF0dGVyeSA9IG1PbkJhdHRlcnlJbnRlcm5hbCA9IGZhbHNlOworICAgICAgICBpbml0VGltZXMoKTsKICAgICAgICAgbVRyYWNrQmF0dGVyeVBhc3RVcHRpbWUgPSAwOwogICAgICAgICBtVHJhY2tCYXR0ZXJ5UGFzdFJlYWx0aW1lID0gMDsKICAgICAgICAgbVVwdGltZVN0YXJ0ID0gbVRyYWNrQmF0dGVyeVVwdGltZVN0YXJ0ID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkgKiAxMDAwOwpAQCAtMjc0Nyw2ICszMzM0LDcgQEAKICAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlVcHRpbWUgPSBnZXRCYXR0ZXJ5VXB0aW1lTG9ja2VkKG1VcHRpbWVTdGFydCk7CiAgICAgICAgIG1VbnBsdWdnZWRCYXR0ZXJ5UmVhbHRpbWUgPSBnZXRCYXR0ZXJ5UmVhbHRpbWVMb2NrZWQobVJlYWx0aW1lU3RhcnQpOwogICAgICAgICBtRGlzY2hhcmdlU3RhcnRMZXZlbCA9IDA7CisgICAgICAgIG1EaXNjaGFyZ2VVbnBsdWdMZXZlbCA9IDA7CiAgICAgICAgIG1EaXNjaGFyZ2VDdXJyZW50TGV2ZWwgPSAwOwogICAgIH0KIApAQCAtMjc2Niw2ICszMzU0LDExIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEhpc3RvcnlJdGVtIGdldEhpc3RvcnkoKSB7CisgICAgICAgIHJldHVybiBtSGlzdG9yeTsKKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGludCBnZXRTdGFydENvdW50KCkgewogICAgICAgICByZXR1cm4gbVN0YXJ0Q291bnQ7CiAgICAgfQpAQCAtMjc3NCwzOSArMzM2NywxNzUgQEAKICAgICAgICAgcmV0dXJuIG1PbkJhdHRlcnk7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgc2V0T25CYXR0ZXJ5KGJvb2xlYW4gb25CYXR0ZXJ5LCBpbnQgbGV2ZWwpIHsKKyAgICB2b2lkIGluaXRUaW1lcygpIHsKKyAgICAgICAgbUJhdHRlcnlSZWFsdGltZSA9IG1UcmFja0JhdHRlcnlQYXN0VXB0aW1lID0gMDsKKyAgICAgICAgbUJhdHRlcnlVcHRpbWUgPSBtVHJhY2tCYXR0ZXJ5UGFzdFJlYWx0aW1lID0gMDsKKyAgICAgICAgbVVwdGltZVN0YXJ0ID0gbVRyYWNrQmF0dGVyeVVwdGltZVN0YXJ0ID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkgKiAxMDAwOworICAgICAgICBtUmVhbHRpbWVTdGFydCA9IG1UcmFja0JhdHRlcnlSZWFsdGltZVN0YXJ0ID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkgKiAxMDAwOworICAgICAgICBtVW5wbHVnZ2VkQmF0dGVyeVVwdGltZSA9IGdldEJhdHRlcnlVcHRpbWVMb2NrZWQobVVwdGltZVN0YXJ0KTsKKyAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlSZWFsdGltZSA9IGdldEJhdHRlcnlSZWFsdGltZUxvY2tlZChtUmVhbHRpbWVTdGFydCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHJlc2V0QWxsU3RhdHNMb2NrZWQoKSB7CisgICAgICAgIG1TdGFydENvdW50ID0gMDsKKyAgICAgICAgaW5pdFRpbWVzKCk7CisgICAgICAgIG1TY3JlZW5PblRpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE5VTV9TQ1JFRU5fQlJJR0hUTkVTU19CSU5TOyBpKyspIHsKKyAgICAgICAgICAgIG1TY3JlZW5CcmlnaHRuZXNzVGltZXJbaV0ucmVzZXQoZmFsc2UpOworICAgICAgICB9CisgICAgICAgIG1JbnB1dEV2ZW50Q291bnRlci5yZXNldChmYWxzZSk7CisgICAgICAgIG1QaG9uZU9uVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICBtQXVkaW9PblRpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgbVZpZGVvT25UaW1lci5yZXNldChmYWxzZSk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOVU1fU0lHTkFMX1NUUkVOR1RIX0JJTlM7IGkrKykgeworICAgICAgICAgICAgbVBob25lU2lnbmFsU3RyZW5ndGhzVGltZXJbaV0ucmVzZXQoZmFsc2UpOworICAgICAgICB9CisgICAgICAgIG1QaG9uZVNpZ25hbFNjYW5uaW5nVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TlVNX0RBVEFfQ09OTkVDVElPTl9UWVBFUzsgaSsrKSB7CisgICAgICAgICAgICBtUGhvbmVEYXRhQ29ubmVjdGlvbnNUaW1lcltpXS5yZXNldChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgbVdpZmlPblRpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgbVdpZmlSdW5uaW5nVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICBtQmx1ZXRvb3RoT25UaW1lci5yZXNldChmYWxzZSk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGk8bVVpZFN0YXRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobVVpZFN0YXRzLnZhbHVlQXQoaSkucmVzZXQoKSkgeworICAgICAgICAgICAgICAgIG1VaWRTdGF0cy5yZW1vdmUobVVpZFN0YXRzLmtleUF0KGkpKTsKKyAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtS2VybmVsV2FrZWxvY2tTdGF0cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKFNhbXBsaW5nVGltZXIgdGltZXIgOiBtS2VybmVsV2FrZWxvY2tTdGF0cy52YWx1ZXMoKSkgeworICAgICAgICAgICAgICAgIG1VbnBsdWdnYWJsZXMucmVtb3ZlKHRpbWVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1LZXJuZWxXYWtlbG9ja1N0YXRzLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNsZWFySGlzdG9yeUxvY2tlZCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldE9uQmF0dGVyeShib29sZWFuIG9uQmF0dGVyeSwgaW50IG9sZFN0YXR1cywgaW50IGxldmVsKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICB1cGRhdGVLZXJuZWxXYWtlbG9ja3NMb2NrZWQoKTsKLSAgICAgICAgICAgIGlmIChtT25CYXR0ZXJ5ICE9IG9uQmF0dGVyeSkgewotICAgICAgICAgICAgICAgIG1PbkJhdHRlcnkgPSBtT25CYXR0ZXJ5SW50ZXJuYWwgPSBvbkJhdHRlcnk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbG9uZyB1cHRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSAqIDEwMDA7Ci0gICAgICAgICAgICAgICAgbG9uZyBtU2VjUmVhbHRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAgICAgICAgICAgICBsb25nIHJlYWx0aW1lID0gbVNlY1JlYWx0aW1lICogMTAwMDsKLSAgICAgICAgICAgICAgICBpZiAob25CYXR0ZXJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1UcmFja0JhdHRlcnlVcHRpbWVTdGFydCA9IHVwdGltZTsKLSAgICAgICAgICAgICAgICAgICAgbVRyYWNrQmF0dGVyeVJlYWx0aW1lU3RhcnQgPSByZWFsdGltZTsKLSAgICAgICAgICAgICAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlVcHRpbWUgPSBnZXRCYXR0ZXJ5VXB0aW1lTG9ja2VkKHVwdGltZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1VbnBsdWdnZWRCYXR0ZXJ5UmVhbHRpbWUgPSBnZXRCYXR0ZXJ5UmVhbHRpbWVMb2NrZWQocmVhbHRpbWUpOwotICAgICAgICAgICAgICAgICAgICBtRGlzY2hhcmdlQ3VycmVudExldmVsID0gbURpc2NoYXJnZVN0YXJ0TGV2ZWwgPSBsZXZlbDsKLSAgICAgICAgICAgICAgICAgICAgZG9VbnBsdWcobVVucGx1Z2dlZEJhdHRlcnlVcHRpbWUsIG1VbnBsdWdnZWRCYXR0ZXJ5UmVhbHRpbWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1UcmFja0JhdHRlcnlQYXN0VXB0aW1lICs9IHVwdGltZSAtIG1UcmFja0JhdHRlcnlVcHRpbWVTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbVRyYWNrQmF0dGVyeVBhc3RSZWFsdGltZSArPSByZWFsdGltZSAtIG1UcmFja0JhdHRlcnlSZWFsdGltZVN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtRGlzY2hhcmdlQ3VycmVudExldmVsID0gbGV2ZWw7Ci0gICAgICAgICAgICAgICAgICAgIGRvUGx1ZyhnZXRCYXR0ZXJ5VXB0aW1lTG9ja2VkKHVwdGltZSksIGdldEJhdHRlcnlSZWFsdGltZUxvY2tlZChyZWFsdGltZSkpOworICAgICAgICAgICAgYm9vbGVhbiBkb1dyaXRlID0gZmFsc2U7CisgICAgICAgICAgICBtT25CYXR0ZXJ5ID0gbU9uQmF0dGVyeUludGVybmFsID0gb25CYXR0ZXJ5OworICAgICAgICAgICAgCisgICAgICAgICAgICBsb25nIHVwdGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpICogMTAwMDsKKyAgICAgICAgICAgIGxvbmcgbVNlY1JlYWx0aW1lID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CisgICAgICAgICAgICBsb25nIHJlYWx0aW1lID0gbVNlY1JlYWx0aW1lICogMTAwMDsKKyAgICAgICAgICAgIGlmIChvbkJhdHRlcnkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIHJlc2V0IG91ciBzdGF0dXMgaWYgd2UgYXJlIHVucGx1Z2dpbmcgYWZ0ZXIgdGhlCisgICAgICAgICAgICAgICAgLy8gYmF0dGVyeSB3YXMgbGFzdCBmdWxsLCBvciB0aGUgbGV2ZWwgaXMgYXQgMTAwLCBvcgorICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgZ29uZSB0aHJvdWdoIGEgc2lnbmlmaWNhbnQgY2hhcmdlIChmcm9tIGEgdmVyeSBsb3cKKyAgICAgICAgICAgICAgICAvLyBsZXZlbCB0byBhIG5vdyB2ZXJ5IGhpZ2ggbGV2ZWwpLgorICAgICAgICAgICAgICAgIGlmIChvbGRTdGF0dXMgPT0gQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9TVEFUVVNfRlVMTAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGV2ZWwgPj0gMTAwCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAobURpc2NoYXJnZUN1cnJlbnRMZXZlbCA8IDIwICYmIGxldmVsID4gOTApKSB7CisgICAgICAgICAgICAgICAgICAgIGRvV3JpdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXNldEFsbFN0YXRzTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgICAgIG1EaXNjaGFyZ2VTdGFydExldmVsID0gbGV2ZWw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgobUxhc3RXcml0ZVRpbWUgKyAoNjAgKiAxMDAwKSkgPCBtU2VjUmVhbHRpbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1GaWxlICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlTG9ja2VkKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB1cGRhdGVLZXJuZWxXYWtlbG9ja3NMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5TGV2ZWwgPSAoYnl0ZSlsZXZlbDsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX0JBVFRFUllfUExVR0dFRF9GTEFHOworICAgICAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiQmF0dGVyeSB1bnBsdWdnZWQgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKG1TZWNSZWFsdGltZSk7CisgICAgICAgICAgICAgICAgbVRyYWNrQmF0dGVyeVVwdGltZVN0YXJ0ID0gdXB0aW1lOworICAgICAgICAgICAgICAgIG1UcmFja0JhdHRlcnlSZWFsdGltZVN0YXJ0ID0gcmVhbHRpbWU7CisgICAgICAgICAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlVcHRpbWUgPSBnZXRCYXR0ZXJ5VXB0aW1lTG9ja2VkKHVwdGltZSk7CisgICAgICAgICAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlSZWFsdGltZSA9IGdldEJhdHRlcnlSZWFsdGltZUxvY2tlZChyZWFsdGltZSk7CisgICAgICAgICAgICAgICAgbURpc2NoYXJnZUN1cnJlbnRMZXZlbCA9IG1EaXNjaGFyZ2VVbnBsdWdMZXZlbCA9IGxldmVsOworICAgICAgICAgICAgICAgIGRvVW5wbHVnTG9ja2VkKG1VbnBsdWdnZWRCYXR0ZXJ5VXB0aW1lLCBtVW5wbHVnZ2VkQmF0dGVyeVJlYWx0aW1lKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdXBkYXRlS2VybmVsV2FrZWxvY2tzTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgbUhpc3RvcnlDdXIuYmF0dGVyeUxldmVsID0gKGJ5dGUpbGV2ZWw7CisgICAgICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX0JBVFRFUllfUExVR0dFRF9GTEFHOworICAgICAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiQmF0dGVyeSBwbHVnZ2VkIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChtU2VjUmVhbHRpbWUpOworICAgICAgICAgICAgICAgIG1UcmFja0JhdHRlcnlQYXN0VXB0aW1lICs9IHVwdGltZSAtIG1UcmFja0JhdHRlcnlVcHRpbWVTdGFydDsKKyAgICAgICAgICAgICAgICBtVHJhY2tCYXR0ZXJ5UGFzdFJlYWx0aW1lICs9IHJlYWx0aW1lIC0gbVRyYWNrQmF0dGVyeVJlYWx0aW1lU3RhcnQ7CisgICAgICAgICAgICAgICAgbURpc2NoYXJnZUN1cnJlbnRMZXZlbCA9IGxldmVsOworICAgICAgICAgICAgICAgIGRvUGx1Z0xvY2tlZChnZXRCYXR0ZXJ5VXB0aW1lTG9ja2VkKHVwdGltZSksIGdldEJhdHRlcnlSZWFsdGltZUxvY2tlZChyZWFsdGltZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRvV3JpdGUgfHwgKG1MYXN0V3JpdGVUaW1lICsgKDYwICogMTAwMCkpIDwgbVNlY1JlYWx0aW1lKSB7CisgICAgICAgICAgICAgICAgaWYgKG1GaWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVMb2NrZWQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcHVibGljIHZvaWQgcmVjb3JkQ3VycmVudExldmVsKGludCBsZXZlbCkgewotICAgICAgICBtRGlzY2hhcmdlQ3VycmVudExldmVsID0gbGV2ZWw7CisgICAgLy8gVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgZXhwb3NlZCBpbiB0aGUgQVBJLCB0aG91Z2ggaXQncyBub3QgY3JpdGljYWwKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQkFUVEVSWV9QTFVHR0VEX05PTkUgPSAwOworICAgIAorICAgIHB1YmxpYyB2b2lkIHNldEJhdHRlcnlTdGF0ZShpbnQgc3RhdHVzLCBpbnQgaGVhbHRoLCBpbnQgcGx1Z1R5cGUsIGludCBsZXZlbCwKKyAgICAgICAgICAgIGludCB0ZW1wLCBpbnQgdm9sdCkgeworICAgICAgICBib29sZWFuIG9uQmF0dGVyeSA9IHBsdWdUeXBlID09IEJBVFRFUllfUExVR0dFRF9OT05FOworICAgICAgICBpbnQgb2xkU3RhdHVzID0gbUhpc3RvcnlDdXIuYmF0dGVyeVN0YXR1czsKKyAgICAgICAgaWYgKCFtSGF2ZUJhdHRlcnlMZXZlbCkgeworICAgICAgICAgICAgbUhhdmVCYXR0ZXJ5TGV2ZWwgPSB0cnVlOworICAgICAgICAgICAgLy8gV2Ugc3RhcnQgb3V0IGFzc3VtaW5nIHRoYXQgdGhlIGRldmljZSBpcyBwbHVnZ2VkIGluIChub3QKKyAgICAgICAgICAgIC8vIG9uIGJhdHRlcnkpLiAgSWYgb3VyIGZpcnN0IHJlcG9ydCBpcyBub3cgdGhhdCB3ZSBhcmUgaW5kZWVkCisgICAgICAgICAgICAvLyBwbHVnZ2VkIGluLCB0aGVuIHR3aWRkbGUgb3VyIHN0YXRlIHRvIGNvcnJlY3RseSByZWZsZWN0IHRoYXQKKyAgICAgICAgICAgIC8vIHNpbmNlIHdlIHdvbid0IGJlIGdvaW5nIHRocm91Z2ggdGhlIGZ1bGwgc2V0T25CYXR0ZXJ5KCkuCisgICAgICAgICAgICBpZiAob25CYXR0ZXJ5ID09IG1PbkJhdHRlcnkpIHsKKyAgICAgICAgICAgICAgICBpZiAob25CYXR0ZXJ5KSB7CisgICAgICAgICAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyAmPSB+SGlzdG9yeUl0ZW0uU1RBVEVfQkFUVEVSWV9QTFVHR0VEX0ZMQUc7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX0JBVFRFUllfUExVR0dFRF9GTEFHOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9sZFN0YXR1cyA9IHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBpZiAob25CYXR0ZXJ5KSB7CisgICAgICAgICAgICBtRGlzY2hhcmdlQ3VycmVudExldmVsID0gbGV2ZWw7CisgICAgICAgICAgICBtUmVjb3JkaW5nSGlzdG9yeSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9uQmF0dGVyeSAhPSBtT25CYXR0ZXJ5KSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5TGV2ZWwgPSAoYnl0ZSlsZXZlbDsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlTdGF0dXMgPSAoYnl0ZSlzdGF0dXM7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5SGVhbHRoID0gKGJ5dGUpaGVhbHRoOworICAgICAgICAgICAgbUhpc3RvcnlDdXIuYmF0dGVyeVBsdWdUeXBlID0gKGJ5dGUpcGx1Z1R5cGU7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5VGVtcGVyYXR1cmUgPSAoY2hhcil0ZW1wOworICAgICAgICAgICAgbUhpc3RvcnlDdXIuYmF0dGVyeVZvbHRhZ2UgPSAoY2hhcil2b2x0OworICAgICAgICAgICAgc2V0T25CYXR0ZXJ5KG9uQmF0dGVyeSwgb2xkU3RhdHVzLCBsZXZlbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBib29sZWFuIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtSGlzdG9yeUN1ci5iYXR0ZXJ5TGV2ZWwgIT0gbGV2ZWwpIHsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5TGV2ZWwgPSAoYnl0ZSlsZXZlbDsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtSGlzdG9yeUN1ci5iYXR0ZXJ5U3RhdHVzICE9IHN0YXR1cykgeworICAgICAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlTdGF0dXMgPSAoYnl0ZSlzdGF0dXM7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUhpc3RvcnlDdXIuYmF0dGVyeUhlYWx0aCAhPSBoZWFsdGgpIHsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5SGVhbHRoID0gKGJ5dGUpaGVhbHRoOworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1IaXN0b3J5Q3VyLmJhdHRlcnlQbHVnVHlwZSAhPSBwbHVnVHlwZSkgeworICAgICAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlQbHVnVHlwZSA9IChieXRlKXBsdWdUeXBlOworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1IaXN0b3J5Q3VyLmJhdHRlcnlUZW1wZXJhdHVyZSAhPSB0ZW1wKSB7CisgICAgICAgICAgICAgICAgbUhpc3RvcnlDdXIuYmF0dGVyeVRlbXBlcmF0dXJlID0gKGNoYXIpdGVtcDsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtSGlzdG9yeUN1ci5iYXR0ZXJ5Vm9sdGFnZSAhPSB2b2x0KSB7CisgICAgICAgICAgICAgICAgbUhpc3RvcnlDdXIuYmF0dGVyeVZvbHRhZ2UgPSAoY2hhcil2b2x0OworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHsKKyAgICAgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIW9uQmF0dGVyeSAmJiBzdGF0dXMgPT0gQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9TVEFUVVNfRlVMTCkgeworICAgICAgICAgICAgLy8gV2UgZG9uJ3QgcmVjb3JkIGhpc3Rvcnkgd2hpbGUgd2UgYXJlIHBsdWdnZWQgaW4gYW5kIGZ1bGx5IGNoYXJnZWQuCisgICAgICAgICAgICAvLyBUaGUgbmV4dCB0aW1lIHdlIGFyZSB1bnBsdWdnZWQsIGhpc3Rvcnkgd2lsbCBiZSBjbGVhcmVkLgorICAgICAgICAgICAgbVJlY29yZGluZ0hpc3RvcnkgPSBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBwdWJsaWMgdm9pZCB1cGRhdGVLZXJuZWxXYWtlbG9ja3NMb2NrZWQoKSB7CkBAIC0yODU1LDEwICszNTg0LDEwIEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGxvbmcgY29tcHV0ZVVwdGltZShsb25nIGN1clRpbWUsIGludCB3aGljaCkgewogICAgICAgICBzd2l0Y2ggKHdoaWNoKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRTX1RPVEFMOiByZXR1cm4gbVVwdGltZSArIChjdXJUaW1lLW1VcHRpbWVTdGFydCk7CisgICAgICAgICAgICBjYXNlIFNUQVRTX1NJTkNFX0NIQVJHRUQ6IHJldHVybiBtVXB0aW1lICsgKGN1clRpbWUtbVVwdGltZVN0YXJ0KTsKICAgICAgICAgICAgIGNhc2UgU1RBVFNfTEFTVDogcmV0dXJuIG1MYXN0VXB0aW1lOwogICAgICAgICAgICAgY2FzZSBTVEFUU19DVVJSRU5UOiByZXR1cm4gKGN1clRpbWUtbVVwdGltZVN0YXJ0KTsKLSAgICAgICAgICAgIGNhc2UgU1RBVFNfVU5QTFVHR0VEOiByZXR1cm4gKGN1clRpbWUtbVRyYWNrQmF0dGVyeVVwdGltZVN0YXJ0KTsKKyAgICAgICAgICAgIGNhc2UgU1RBVFNfU0lOQ0VfVU5QTFVHR0VEOiByZXR1cm4gKGN1clRpbWUtbVRyYWNrQmF0dGVyeVVwdGltZVN0YXJ0KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0yODY2LDEwICszNTk1LDEwIEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGxvbmcgY29tcHV0ZVJlYWx0aW1lKGxvbmcgY3VyVGltZSwgaW50IHdoaWNoKSB7CiAgICAgICAgIHN3aXRjaCAod2hpY2gpIHsKLSAgICAgICAgICAgIGNhc2UgU1RBVFNfVE9UQUw6IHJldHVybiBtUmVhbHRpbWUgKyAoY3VyVGltZS1tUmVhbHRpbWVTdGFydCk7CisgICAgICAgICAgICBjYXNlIFNUQVRTX1NJTkNFX0NIQVJHRUQ6IHJldHVybiBtUmVhbHRpbWUgKyAoY3VyVGltZS1tUmVhbHRpbWVTdGFydCk7CiAgICAgICAgICAgICBjYXNlIFNUQVRTX0xBU1Q6IHJldHVybiBtTGFzdFJlYWx0aW1lOwogICAgICAgICAgICAgY2FzZSBTVEFUU19DVVJSRU5UOiByZXR1cm4gKGN1clRpbWUtbVJlYWx0aW1lU3RhcnQpOwotICAgICAgICAgICAgY2FzZSBTVEFUU19VTlBMVUdHRUQ6IHJldHVybiAoY3VyVGltZS1tVHJhY2tCYXR0ZXJ5UmVhbHRpbWVTdGFydCk7CisgICAgICAgICAgICBjYXNlIFNUQVRTX1NJTkNFX1VOUExVR0dFRDogcmV0dXJuIChjdXJUaW1lLW1UcmFja0JhdHRlcnlSZWFsdGltZVN0YXJ0KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0yODc3LDEzICszNjA2LDEzIEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGxvbmcgY29tcHV0ZUJhdHRlcnlVcHRpbWUobG9uZyBjdXJUaW1lLCBpbnQgd2hpY2gpIHsKICAgICAgICAgc3dpdGNoICh3aGljaCkgewotICAgICAgICAgICAgY2FzZSBTVEFUU19UT1RBTDoKKyAgICAgICAgICAgIGNhc2UgU1RBVFNfU0lOQ0VfQ0hBUkdFRDoKICAgICAgICAgICAgICAgICByZXR1cm4gbUJhdHRlcnlVcHRpbWUgKyBnZXRCYXR0ZXJ5VXB0aW1lKGN1clRpbWUpOwogICAgICAgICAgICAgY2FzZSBTVEFUU19MQVNUOgogICAgICAgICAgICAgICAgIHJldHVybiBtQmF0dGVyeUxhc3RVcHRpbWU7CiAgICAgICAgICAgICBjYXNlIFNUQVRTX0NVUlJFTlQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEJhdHRlcnlVcHRpbWUoY3VyVGltZSk7Ci0gICAgICAgICAgICBjYXNlIFNUQVRTX1VOUExVR0dFRDoKKyAgICAgICAgICAgIGNhc2UgU1RBVFNfU0lOQ0VfVU5QTFVHR0VEOgogICAgICAgICAgICAgICAgIHJldHVybiBnZXRCYXR0ZXJ5VXB0aW1lTG9ja2VkKGN1clRpbWUpIC0gbVVucGx1Z2dlZEJhdHRlcnlVcHRpbWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC0yODkyLDEzICszNjIxLDEzIEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGxvbmcgY29tcHV0ZUJhdHRlcnlSZWFsdGltZShsb25nIGN1clRpbWUsIGludCB3aGljaCkgewogICAgICAgICBzd2l0Y2ggKHdoaWNoKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRTX1RPVEFMOgorICAgICAgICAgICAgY2FzZSBTVEFUU19TSU5DRV9DSEFSR0VEOgogICAgICAgICAgICAgICAgIHJldHVybiBtQmF0dGVyeVJlYWx0aW1lICsgZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKGN1clRpbWUpOwogICAgICAgICAgICAgY2FzZSBTVEFUU19MQVNUOgogICAgICAgICAgICAgICAgIHJldHVybiBtQmF0dGVyeUxhc3RSZWFsdGltZTsKICAgICAgICAgICAgIGNhc2UgU1RBVFNfQ1VSUkVOVDoKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKGN1clRpbWUpOwotICAgICAgICAgICAgY2FzZSBTVEFUU19VTlBMVUdHRUQ6CisgICAgICAgICAgICBjYXNlIFNUQVRTX1NJTkNFX1VOUExVR0dFRDoKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKGN1clRpbWUpIC0gbVVucGx1Z2dlZEJhdHRlcnlSZWFsdGltZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTI5MzgsMTQgKzM2NjcsMTQgQEAKICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX0xBU1QpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhQnl0ZXNbU1RBVFNfTEFTVF07CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGFCeXRlc1tTVEFUU19VTlBMVUdHRURdIDwgMCkgeworICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgIGlmIChkYXRhQnl0ZXNbU1RBVFNfU0lOQ0VfVU5QTFVHR0VEXSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFCeXRlc1tTVEFUU19MQVNUXTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudCAtIGRhdGFCeXRlc1tTVEFUU19VTlBMVUdHRURdOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudCAtIGRhdGFCeXRlc1tTVEFUU19TSU5DRV9VTlBMVUdHRURdOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVE9UQUwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKGN1cnJlbnQgLSBkYXRhQnl0ZXNbU1RBVFNfQ1VSUkVOVF0pICsgZGF0YUJ5dGVzW1NUQVRTX1RPVEFMXTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfQ0hBUkdFRCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoY3VycmVudCAtIGRhdGFCeXRlc1tTVEFUU19DVVJSRU5UXSkgKyBkYXRhQnl0ZXNbU1RBVFNfU0lOQ0VfQ0hBUkdFRF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gY3VycmVudCAtIGRhdGFCeXRlc1tTVEFUU19DVVJSRU5UXTsKICAgICAgICAgfQpAQCAtMjk3OSw3ICszNzA4LDcgQEAKICAgICB9CiAgICAgCiAgICAgcHVibGljIGludCBnZXREaXNjaGFyZ2VTdGFydExldmVsTG9ja2VkKCkgewotICAgICAgICAgICAgcmV0dXJuIG1EaXNjaGFyZ2VTdGFydExldmVsOworICAgICAgICAgICAgcmV0dXJuIG1EaXNjaGFyZ2VVbnBsdWdMZXZlbDsKICAgICB9CiAgICAgCiAgICAgQE92ZXJyaWRlCkBAIC0zMDYyLDE3ICszNzkxLDIxIEBACiAgICAgICAgIHJldHVybiB1LmdldFNlcnZpY2VTdGF0c0xvY2tlZChwa2csIG5hbWUpOwogICAgIH0KIAotICAgIHByaXZhdGUgc3RhdGljIEpvdXJuYWxlZEZpbGUgbWFrZUpvdXJuYWxlZEZpbGUoKSB7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBiYXNlID0gIi9kYXRhL3N5c3RlbS9kZXZpY2VfcG9saWNpZXMueG1sIjsKLSAgICAgICAgcmV0dXJuIG5ldyBKb3VybmFsZWRGaWxlKG5ldyBGaWxlKGJhc2UpLCBuZXcgRmlsZShiYXNlICsgIi50bXAiKSk7CisgICAgcHVibGljIHZvaWQgc2h1dGRvd25Mb2NrZWQoKSB7CisgICAgICAgIHdyaXRlTG9ja2VkKCk7CisgICAgICAgIG1TaHV0dGluZ0Rvd24gPSB0cnVlOwogICAgIH0KLQorICAgIAogICAgIHB1YmxpYyB2b2lkIHdyaXRlTG9ja2VkKCkgewogICAgICAgICBpZiAobUZpbGUgPT0gbnVsbCkgewogICAgICAgICAgICAgU2xvZy53KCJCYXR0ZXJ5U3RhdHMiLCAid3JpdGVMb2NrZWQ6IG5vIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlmIChtU2h1dHRpbmdEb3duKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIHN0cmVhbSA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKG1GaWxlLmNob29zZUZvcldyaXRlKCkpOwogICAgICAgICAgICAgUGFyY2VsIG91dCA9IFBhcmNlbC5vYnRhaW4oKTsKQEAgLTMxNDAsMTIgKzM4NzMsNDcgQEAKICAgICAgICAgfSBjYXRjaChqYXZhLmlvLklPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIFNsb2cuZSgiQmF0dGVyeVN0YXRzIiwgIkVycm9yIHJlYWRpbmcgYmF0dGVyeSBzdGF0aXN0aWNzIiwgZSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCksIEhpc3RvcnlJdGVtLkNNRF9TVEFSVCk7CiAgICAgfQogCiAgICAgcHVibGljIGludCBkZXNjcmliZUNvbnRlbnRzKCkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICB2b2lkIHJlYWRIaXN0b3J5KFBhcmNlbCBpbikgeworICAgICAgICBtSGlzdG9yeSA9IG1IaXN0b3J5RW5kID0gbUhpc3RvcnlDYWNoZSA9IG51bGw7CisgICAgICAgIG1IaXN0b3J5QmFzZVRpbWUgPSAwOworICAgICAgICBsb25nIHRpbWU7CisgICAgICAgIHdoaWxlICgodGltZT1pbi5yZWFkTG9uZygpKSA+PSAwKSB7CisgICAgICAgICAgICBIaXN0b3J5SXRlbSByZWMgPSBuZXcgSGlzdG9yeUl0ZW0odGltZSwgaW4pOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChyZWMpOworICAgICAgICAgICAgaWYgKHJlYy50aW1lID4gbUhpc3RvcnlCYXNlVGltZSkgeworICAgICAgICAgICAgICAgIG1IaXN0b3J5QmFzZVRpbWUgPSByZWMudGltZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbG9uZyBvbGRub3cgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSAtICg1KjYwKjEwMCk7CisgICAgICAgIGlmIChvbGRub3cgPiAwKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgc3lzdGVtIHByb2Nlc3MgaGFzIHJlc3RhcnRlZCwgYnV0IG5vdCB0aGUgZW50aXJlCisgICAgICAgICAgICAvLyBzeXN0ZW0sIHRoZW4gdGhlIG1IaXN0b3J5QmFzZVRpbWUgYWxyZWFkeSBhY2NvdW50cyBmb3IKKyAgICAgICAgICAgIC8vIG11Y2ggb2YgdGhlIGVsYXBzZWQgdGltZS4gIFdlIHRodXMgd2FudCB0byBhZGp1c3QgaXQgYmFjaywKKyAgICAgICAgICAgIC8vIHRvIGF2b2lkIGxhcmdlIGdhcHMgaW4gdGhlIGRhdGEuICBXZSBkZXRlcm1pbmUgd2UgYXJlCisgICAgICAgICAgICAvLyBpbiB0aGlzIGNhc2UgYnkgYXJiaXRyYXJpbHkgc2F5aW5nIGl0IGlzIHNvIGlmIGF0IHRoaXMKKyAgICAgICAgICAgIC8vIHBvaW50IGluIGJvb3QgdGhlIGVsYXBzZWQgdGltZSBpcyBhbHJlYWR5IG1vcmUgdGhhbiA1IHNlY29uZHMuCisgICAgICAgICAgICBtSGlzdG9yeUJhc2VUaW1lIC09IG9sZG5vdzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHdyaXRlSGlzdG9yeShQYXJjZWwgb3V0KSB7CisgICAgICAgIEhpc3RvcnlJdGVtIHJlYyA9IG1IaXN0b3J5OworICAgICAgICB3aGlsZSAocmVjICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChyZWMudGltZSA+PSAwKSByZWMud3JpdGVUb1BhcmNlbChvdXQsIDApOworICAgICAgICAgICAgcmVjID0gcmVjLm5leHQ7CisgICAgICAgIH0KKyAgICAgICAgb3V0LndyaXRlTG9uZygtMSk7CisgICAgfQorICAgIAogICAgIHByaXZhdGUgdm9pZCByZWFkU3VtbWFyeUZyb21QYXJjZWwoUGFyY2VsIGluKSB7CiAgICAgICAgIGZpbmFsIGludCB2ZXJzaW9uID0gaW4ucmVhZEludCgpOwogICAgICAgICBpZiAodmVyc2lvbiAhPSBWRVJTSU9OKSB7CkBAIC0zMTU0LDYgKzM5MjIsOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgcmVhZEhpc3RvcnkoaW4pOworICAgICAgICAKICAgICAgICAgbVN0YXJ0Q291bnQgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIG1CYXR0ZXJ5VXB0aW1lID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgbUJhdHRlcnlMYXN0VXB0aW1lID0gaW4ucmVhZExvbmcoKTsKQEAgLTMxNjMsNyArMzkzMyw3IEBACiAgICAgICAgIG1MYXN0VXB0aW1lID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgbVJlYWx0aW1lID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgbUxhc3RSZWFsdGltZSA9IGluLnJlYWRMb25nKCk7Ci0gICAgICAgIG1EaXNjaGFyZ2VTdGFydExldmVsID0gaW4ucmVhZEludCgpOworICAgICAgICBtRGlzY2hhcmdlVW5wbHVnTGV2ZWwgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIG1EaXNjaGFyZ2VDdXJyZW50TGV2ZWwgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIAogICAgICAgICBtU3RhcnRDb3VudCsrOwpAQCAtMzIxNSwxNyArMzk4NSwyOSBAQAogICAgICAgICAgICAgbVVpZFN0YXRzLnB1dCh1aWQsIHUpOwogCiAgICAgICAgICAgICB1Lm1XaWZpVHVybmVkT24gPSBmYWxzZTsKLSAgICAgICAgICAgIHUubVdpZmlUdXJuZWRPblRpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7CisgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICB1Lm1XaWZpVHVybmVkT25UaW1lci5yZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoaW4pOworICAgICAgICAgICAgfQogICAgICAgICAgICAgdS5tRnVsbFdpZmlMb2NrT3V0ID0gZmFsc2U7Ci0gICAgICAgICAgICB1Lm1GdWxsV2lmaUxvY2tUaW1lci5yZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoaW4pOwotICAgICAgICAgICAgdS5tQXVkaW9UdXJuZWRPbiA9IGZhbHNlOwotICAgICAgICAgICAgdS5tQXVkaW9UdXJuZWRPblRpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7Ci0gICAgICAgICAgICB1Lm1WaWRlb1R1cm5lZE9uID0gZmFsc2U7Ci0gICAgICAgICAgICB1Lm1WaWRlb1R1cm5lZE9uVGltZXIucmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKGluKTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIHUubUZ1bGxXaWZpTG9ja1RpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB1Lm1TY2FuV2lmaUxvY2tPdXQgPSBmYWxzZTsKLSAgICAgICAgICAgIHUubVNjYW5XaWZpTG9ja1RpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7CisgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICB1Lm1TY2FuV2lmaUxvY2tUaW1lci5yZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoaW4pOworICAgICAgICAgICAgfQogICAgICAgICAgICAgdS5tV2lmaU11bHRpY2FzdEVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHUubVdpZmlNdWx0aWNhc3RUaW1lci5yZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoaW4pOworICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgdS5tV2lmaU11bHRpY2FzdFRpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1Lm1BdWRpb1R1cm5lZE9uID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICB1Lm1BdWRpb1R1cm5lZE9uVGltZXIucmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKGluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHUubVZpZGVvVHVybmVkT24gPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIHUubVZpZGVvVHVybmVkT25UaW1lci5yZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoaW4pOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKICAgICAgICAgICAgICAgICBpZiAodS5tVXNlckFjdGl2aXR5Q291bnRlcnMgPT0gbnVsbCkgewpAQCAtMzMyNSwxNiArNDEwNywxOCBAQAogCiAgICAgICAgIG91dC53cml0ZUludChWRVJTSU9OKTsKIAorICAgICAgICB3cml0ZUhpc3Rvcnkob3V0KTsKKyAgICAgICAgCiAgICAgICAgIG91dC53cml0ZUludChtU3RhcnRDb3VudCk7Ci0gICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZUJhdHRlcnlVcHRpbWUoTk9XX1NZUywgU1RBVFNfVE9UQUwpKTsKKyAgICAgICAgb3V0LndyaXRlTG9uZyhjb21wdXRlQmF0dGVyeVVwdGltZShOT1dfU1lTLCBTVEFUU19TSU5DRV9DSEFSR0VEKSk7CiAgICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZUJhdHRlcnlVcHRpbWUoTk9XX1NZUywgU1RBVFNfQ1VSUkVOVCkpOwotICAgICAgICBvdXQud3JpdGVMb25nKGNvbXB1dGVCYXR0ZXJ5UmVhbHRpbWUoTk9XUkVBTF9TWVMsIFNUQVRTX1RPVEFMKSk7CisgICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZUJhdHRlcnlSZWFsdGltZShOT1dSRUFMX1NZUywgU1RBVFNfU0lOQ0VfQ0hBUkdFRCkpOwogICAgICAgICBvdXQud3JpdGVMb25nKGNvbXB1dGVCYXR0ZXJ5UmVhbHRpbWUoTk9XUkVBTF9TWVMsIFNUQVRTX0NVUlJFTlQpKTsKLSAgICAgICAgb3V0LndyaXRlTG9uZyhjb21wdXRlVXB0aW1lKE5PV19TWVMsIFNUQVRTX1RPVEFMKSk7CisgICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZVVwdGltZShOT1dfU1lTLCBTVEFUU19TSU5DRV9DSEFSR0VEKSk7CiAgICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZVVwdGltZShOT1dfU1lTLCBTVEFUU19DVVJSRU5UKSk7Ci0gICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZVJlYWx0aW1lKE5PV1JFQUxfU1lTLCBTVEFUU19UT1RBTCkpOworICAgICAgICBvdXQud3JpdGVMb25nKGNvbXB1dGVSZWFsdGltZShOT1dSRUFMX1NZUywgU1RBVFNfU0lOQ0VfQ0hBUkdFRCkpOwogICAgICAgICBvdXQud3JpdGVMb25nKGNvbXB1dGVSZWFsdGltZShOT1dSRUFMX1NZUywgU1RBVFNfQ1VSUkVOVCkpOwotICAgICAgICBvdXQud3JpdGVJbnQobURpc2NoYXJnZVN0YXJ0TGV2ZWwpOworICAgICAgICBvdXQud3JpdGVJbnQobURpc2NoYXJnZVVucGx1Z0xldmVsKTsKICAgICAgICAgb3V0LndyaXRlSW50KG1EaXNjaGFyZ2VDdXJyZW50TGV2ZWwpOwogICAgICAgICAKICAgICAgICAgCkBAIC0zMzc0LDEyICs0MTU4LDQyIEBACiAgICAgICAgICAgICBvdXQud3JpdGVJbnQobVVpZFN0YXRzLmtleUF0KGl1KSk7CiAgICAgICAgICAgICBVaWQgdSA9IG1VaWRTdGF0cy52YWx1ZUF0KGl1KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgdS5tV2lmaVR1cm5lZE9uVGltZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIE5PV1JFQUwpOwotICAgICAgICAgICAgdS5tRnVsbFdpZmlMb2NrVGltZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIE5PV1JFQUwpOwotICAgICAgICAgICAgdS5tQXVkaW9UdXJuZWRPblRpbWVyLndyaXRlU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQob3V0LCBOT1dSRUFMKTsKLSAgICAgICAgICAgIHUubVZpZGVvVHVybmVkT25UaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7Ci0gICAgICAgICAgICB1Lm1TY2FuV2lmaUxvY2tUaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7Ci0gICAgICAgICAgICB1Lm1XaWZpTXVsdGljYXN0VGltZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIE5PV1JFQUwpOworICAgICAgICAgICAgaWYgKHUubVdpZmlUdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgdS5tV2lmaVR1cm5lZE9uVGltZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIE5PV1JFQUwpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodS5tRnVsbFdpZmlMb2NrVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgxKTsKKyAgICAgICAgICAgICAgICB1Lm1GdWxsV2lmaUxvY2tUaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1Lm1TY2FuV2lmaUxvY2tUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIHUubVNjYW5XaWZpTG9ja1RpbWVyLndyaXRlU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQob3V0LCBOT1dSRUFMKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHUubVdpZmlNdWx0aWNhc3RUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIHUubVdpZmlNdWx0aWNhc3RUaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1Lm1BdWRpb1R1cm5lZE9uVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgxKTsKKyAgICAgICAgICAgICAgICB1Lm1BdWRpb1R1cm5lZE9uVGltZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIE5PV1JFQUwpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodS5tVmlkZW9UdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgdS5tVmlkZW9UdXJuZWRPblRpbWVyLndyaXRlU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQob3V0LCBOT1dSRUFMKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAodS5tVXNlckFjdGl2aXR5Q291bnRlcnMgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKQEAgLTM0NzgsOCArNDI5Miw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBvdXQud3JpdGVMb25nKHUuZ2V0VGNwQnl0ZXNSZWNlaXZlZChTVEFUU19UT1RBTCkpOwotICAgICAgICAgICAgb3V0LndyaXRlTG9uZyh1LmdldFRjcEJ5dGVzU2VudChTVEFUU19UT1RBTCkpOworICAgICAgICAgICAgb3V0LndyaXRlTG9uZyh1LmdldFRjcEJ5dGVzUmVjZWl2ZWQoU1RBVFNfU0lOQ0VfQ0hBUkdFRCkpOworICAgICAgICAgICAgb3V0LndyaXRlTG9uZyh1LmdldFRjcEJ5dGVzU2VudChTVEFUU19TSU5DRV9DSEFSR0VEKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM0OTMsNiArNDMwNyw4IEBACiAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyY2VsRm9ybWF0RXhjZXB0aW9uKCJCYWQgbWFnaWMgbnVtYmVyIik7CiAgICAgICAgIH0KIAorICAgICAgICByZWFkSGlzdG9yeShpbik7CisgICAgICAgIAogICAgICAgICBtU3RhcnRDb3VudCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbUJhdHRlcnlVcHRpbWUgPSBpbi5yZWFkTG9uZygpOwogICAgICAgICBtQmF0dGVyeUxhc3RVcHRpbWUgPSBpbi5yZWFkTG9uZygpOwpAQCAtMzUzMywxOCArNDM0OSwxOCBAQAogICAgICAgICBtVHJhY2tCYXR0ZXJ5UmVhbHRpbWVTdGFydCA9IGluLnJlYWRMb25nKCk7CiAgICAgICAgIG1VbnBsdWdnZWRCYXR0ZXJ5VXB0aW1lID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlSZWFsdGltZSA9IGluLnJlYWRMb25nKCk7Ci0gICAgICAgIG1EaXNjaGFyZ2VTdGFydExldmVsID0gaW4ucmVhZEludCgpOworICAgICAgICBtRGlzY2hhcmdlVW5wbHVnTGV2ZWwgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIG1EaXNjaGFyZ2VDdXJyZW50TGV2ZWwgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIG1MYXN0V3JpdGVUaW1lID0gaW4ucmVhZExvbmcoKTsKIAogICAgICAgICBtTW9iaWxlRGF0YVJ4W1NUQVRTX0xBU1RdID0gaW4ucmVhZExvbmcoKTsKLSAgICAgICAgbU1vYmlsZURhdGFSeFtTVEFUU19VTlBMVUdHRURdID0gLTE7CisgICAgICAgIG1Nb2JpbGVEYXRhUnhbU1RBVFNfU0lOQ0VfVU5QTFVHR0VEXSA9IC0xOwogICAgICAgICBtTW9iaWxlRGF0YVR4W1NUQVRTX0xBU1RdID0gaW4ucmVhZExvbmcoKTsKLSAgICAgICAgbU1vYmlsZURhdGFUeFtTVEFUU19VTlBMVUdHRURdID0gLTE7CisgICAgICAgIG1Nb2JpbGVEYXRhVHhbU1RBVFNfU0lOQ0VfVU5QTFVHR0VEXSA9IC0xOwogICAgICAgICBtVG90YWxEYXRhUnhbU1RBVFNfTEFTVF0gPSBpbi5yZWFkTG9uZygpOwotICAgICAgICBtVG90YWxEYXRhUnhbU1RBVFNfVU5QTFVHR0VEXSA9IC0xOworICAgICAgICBtVG90YWxEYXRhUnhbU1RBVFNfU0lOQ0VfVU5QTFVHR0VEXSA9IC0xOwogICAgICAgICBtVG90YWxEYXRhVHhbU1RBVFNfTEFTVF0gPSBpbi5yZWFkTG9uZygpOwotICAgICAgICBtVG90YWxEYXRhVHhbU1RBVFNfVU5QTFVHR0VEXSA9IC0xOworICAgICAgICBtVG90YWxEYXRhVHhbU1RBVFNfU0lOQ0VfVU5QTFVHR0VEXSA9IC0xOwogCiAgICAgICAgIG1SYWRpb0RhdGFVcHRpbWUgPSBpbi5yZWFkTG9uZygpOwogICAgICAgICBtUmFkaW9EYXRhU3RhcnQgPSAtMTsKQEAgLTM1OTEsNiArNDQwNyw5IEBACiAgICAgICAgIGZpbmFsIGxvbmcgYmF0dGVyeVJlYWx0aW1lID0gZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKHVTZWNSZWFsdGltZSk7CiAgICAgICAgIAogICAgICAgICBvdXQud3JpdGVJbnQoTUFHSUMpOworICAgICAgICAKKyAgICAgICAgd3JpdGVIaXN0b3J5KG91dCk7CisgICAgICAgIAogICAgICAgICBvdXQud3JpdGVJbnQobVN0YXJ0Q291bnQpOwogICAgICAgICBvdXQud3JpdGVMb25nKG1CYXR0ZXJ5VXB0aW1lKTsKICAgICAgICAgb3V0LndyaXRlTG9uZyhtQmF0dGVyeUxhc3RVcHRpbWUpOwpAQCAtMzYyNSwxNCArNDQ0NCwxNCBAQAogICAgICAgICBvdXQud3JpdGVMb25nKG1UcmFja0JhdHRlcnlSZWFsdGltZVN0YXJ0KTsKICAgICAgICAgb3V0LndyaXRlTG9uZyhtVW5wbHVnZ2VkQmF0dGVyeVVwdGltZSk7CiAgICAgICAgIG91dC53cml0ZUxvbmcobVVucGx1Z2dlZEJhdHRlcnlSZWFsdGltZSk7Ci0gICAgICAgIG91dC53cml0ZUludChtRGlzY2hhcmdlU3RhcnRMZXZlbCk7CisgICAgICAgIG91dC53cml0ZUludChtRGlzY2hhcmdlVW5wbHVnTGV2ZWwpOwogICAgICAgICBvdXQud3JpdGVJbnQobURpc2NoYXJnZUN1cnJlbnRMZXZlbCk7CiAgICAgICAgIG91dC53cml0ZUxvbmcobUxhc3RXcml0ZVRpbWUpOwogCi0gICAgICAgIG91dC53cml0ZUxvbmcoZ2V0TW9iaWxlVGNwQnl0ZXNSZWNlaXZlZChTVEFUU19VTlBMVUdHRUQpKTsKLSAgICAgICAgb3V0LndyaXRlTG9uZyhnZXRNb2JpbGVUY3BCeXRlc1NlbnQoU1RBVFNfVU5QTFVHR0VEKSk7Ci0gICAgICAgIG91dC53cml0ZUxvbmcoZ2V0VG90YWxUY3BCeXRlc1JlY2VpdmVkKFNUQVRTX1VOUExVR0dFRCkpOwotICAgICAgICBvdXQud3JpdGVMb25nKGdldFRvdGFsVGNwQnl0ZXNTZW50KFNUQVRTX1VOUExVR0dFRCkpOworICAgICAgICBvdXQud3JpdGVMb25nKGdldE1vYmlsZVRjcEJ5dGVzUmVjZWl2ZWQoU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSk7CisgICAgICAgIG91dC53cml0ZUxvbmcoZ2V0TW9iaWxlVGNwQnl0ZXNTZW50KFNUQVRTX1NJTkNFX1VOUExVR0dFRCkpOworICAgICAgICBvdXQud3JpdGVMb25nKGdldFRvdGFsVGNwQnl0ZXNSZWNlaXZlZChTVEFUU19TSU5DRV9VTlBMVUdHRUQpKTsKKyAgICAgICAgb3V0LndyaXRlTG9uZyhnZXRUb3RhbFRjcEJ5dGVzU2VudChTVEFUU19TSU5DRV9VTlBMVUdHRUQpKTsKIAogICAgICAgICAvLyBXcml0ZSByYWRpbyB1cHRpbWUgZm9yIGRhdGEKICAgICAgICAgb3V0LndyaXRlTG9uZyhnZXRSYWRpb0RhdGFVcHRpbWUoKSk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvUG93ZXJQcm9maWxlLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvUG93ZXJQcm9maWxlLmphdmEKaW5kZXggMjM2OWQyNS4uMTI3ZWQ2OCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL1Bvd2VyUHJvZmlsZS5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9Qb3dlclByb2ZpbGUuamF2YQpAQCAtMTI2LDYgKzEyNiwxMSBAQAogCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9XRVJfQ1BVX1NQRUVEUyA9ICJjcHUuc3BlZWRzIjsKIAorICAgIC8qKgorICAgICAqIEJhdHRlcnkgY2FwYWNpdHkgaW4gbWlsbGlBbXBIb3VyIChtQWgpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBPV0VSX0JBVFRFUllfQ0FQQUNJVFkgPSAiYmF0dGVyeS5jYXBhY2l0eSI7CisKICAgICBzdGF0aWMgZmluYWwgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4gc1Bvd2VyTWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCk7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHX0RFVklDRSA9ICJkZXZpY2UiOwpAQCAtMjQzLDYgKzI0OCwxOSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYmF0dGVyeSBjYXBhY2l0eSwgaWYgYXZhaWxhYmxlLCBpbiBtaWxsaSBBbXAgSG91cnMuIElmIG5vdCBhdmFpbGFibGUsCisgICAgICogaXQgcmV0dXJucyB6ZXJvLgorICAgICAqIEByZXR1cm4gdGhlIGJhdHRlcnkgY2FwYWNpdHkgaW4gbUFoCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRCYXR0ZXJ5Q2FwYWNpdHkoKSB7CisgICAgICAgIHJldHVybiBnZXRBdmVyYWdlUG93ZXIoUE9XRVJfQkFUVEVSWV9DQVBBQ0lUWSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwZWVkcyB0aGF0IHRoZSBDUFUgY2FuIGJlIHJ1biBhdC4KKyAgICAgKiBAcmV0dXJuCisgICAgICovCiAgICAgcHVibGljIGludCBnZXROdW1TcGVlZFN0ZXBzKCkgewogICAgICAgICBPYmplY3QgdmFsdWUgPSBzUG93ZXJNYXAuZ2V0KFBPV0VSX0NQVV9TUEVFRFMpOwogICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSBpbnN0YW5jZW9mIERvdWJsZVtdKSB7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvUnVudGltZUluaXQuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9SdW50aW1lSW5pdC5qYXZhCmluZGV4IDU5OWE3ZmUuLjU5NjAwZGMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9SdW50aW1lSW5pdC5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9SdW50aW1lSW5pdC5qYXZhCkBAIC0zNDIsNiArMzQyLDEwIEBACiAgICAgICAgIG1BcHBsaWNhdGlvbk9iamVjdCA9IGFwcDsKICAgICB9CiAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIElCaW5kZXIgZ2V0QXBwbGljYXRpb25PYmplY3QoKSB7CisgICAgICAgIHJldHVybiBtQXBwbGljYXRpb25PYmplY3Q7CisgICAgfQorCiAgICAgLyoqCiAgICAgICogRW5hYmxlIGRlYnVnZ2luZyBmZWF0dXJlcy4KICAgICAgKi8KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvSVN0YXR1c0Jhci5haWRsIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9JU3RhdHVzQmFyLmFpZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUwMWJkNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvSVN0YXR1c0Jhci5haWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDA3LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworIAorcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXI7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFyTm90aWZpY2F0aW9uOworCisvKiogQGhpZGUgKi8KK29uZXdheSBpbnRlcmZhY2UgSVN0YXR1c0JhcgoreworICAgIHZvaWQgc2V0SWNvbihpbnQgaW5kZXgsIGluIFN0YXR1c0Jhckljb24gaWNvbik7CisgICAgdm9pZCByZW1vdmVJY29uKGludCBpbmRleCk7CisgICAgdm9pZCBhZGROb3RpZmljYXRpb24oSUJpbmRlciBrZXksIGluIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pOworICAgIHZvaWQgdXBkYXRlTm90aWZpY2F0aW9uKElCaW5kZXIga2V5LCBpbiBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbihJQmluZGVyIGtleSk7CisgICAgdm9pZCBkaXNhYmxlKGludCBzdGF0ZSk7CisgICAgdm9pZCBhbmltYXRlRXhwYW5kKCk7CisgICAgdm9pZCBhbmltYXRlQ29sbGFwc2UoKTsKK30KKwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9JU3RhdHVzQmFyU2VydmljZS5haWRsIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9JU3RhdHVzQmFyU2VydmljZS5haWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MjYzMGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL0lTdGF0dXNCYXJTZXJ2aWNlLmFpZGwKQEAgLTAsMCArMSw0MyBAQAorLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisgCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2JhcjsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5JU3RhdHVzQmFyOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uTGlzdDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFyTm90aWZpY2F0aW9uOworCisvKiogQGhpZGUgKi8KK2ludGVyZmFjZSBJU3RhdHVzQmFyU2VydmljZQoreworICAgIHZvaWQgZXhwYW5kKCk7CisgICAgdm9pZCBjb2xsYXBzZSgpOworICAgIHZvaWQgZGlzYWJsZShpbnQgd2hhdCwgSUJpbmRlciB0b2tlbiwgU3RyaW5nIHBrZyk7CisgICAgdm9pZCBzZXRJY29uKFN0cmluZyBzbG90LCBTdHJpbmcgaWNvblBhY2thZ2UsIGludCBpY29uSWQsIGludCBpY29uTGV2ZWwpOworICAgIHZvaWQgc2V0SWNvblZpc2liaWxpdHkoU3RyaW5nIHNsb3QsIGJvb2xlYW4gdmlzaWJsZSk7CisgICAgdm9pZCByZW1vdmVJY29uKFN0cmluZyBzbG90KTsKKworICAgIC8vIC0tLS0gTWV0aG9kcyBiZWxvdyBhcmUgZm9yIHVzZSBieSB0aGUgc3RhdHVzIGJhciBwb2xpY3kgc2VydmljZXMgLS0tLQorICAgIC8vIFlvdSBuZWVkIHRoZSBTVEFUVVNfQkFSX1NFUlZJQ0UgcGVybWlzc2lvbgorICAgIHZvaWQgcmVnaXN0ZXJTdGF0dXNCYXIoSVN0YXR1c0JhciBjYWxsYmFja3MsIG91dCBTdGF0dXNCYXJJY29uTGlzdCBpY29uTGlzdCwKKyAgICAgICAgICAgIG91dCBMaXN0PElCaW5kZXI+IG5vdGlmaWNhdGlvbktleXMsIG91dCBMaXN0PFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9ucyk7CisgICAgdm9pZCBvblBhbmVsUmV2ZWFsZWQoKTsKKyAgICB2b2lkIG9uTm90aWZpY2F0aW9uQ2xpY2soU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkKTsKKyAgICB2b2lkIG9uTm90aWZpY2F0aW9uRXJyb3IoU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkLAorICAgICAgICAgICAgaW50IHVpZCwgaW50IGluaXRpYWxQaWQsIFN0cmluZyBtZXNzYWdlKTsKKyAgICB2b2lkIG9uQ2xlYXJBbGxOb3RpZmljYXRpb25zKCk7Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhckljb24uYWlkbCBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbi5haWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMWEwNzcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhckljb24uYWlkbApAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2JhcjsKKworcGFyY2VsYWJsZSBTdGF0dXNCYXJJY29uOworCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhckljb24uamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMmNhYzIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhckljb24uamF2YQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWw7CitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxhYmxlOworCisvKioKKyAqIEBoaWRlCisgKi8KK3B1YmxpYyBjbGFzcyBTdGF0dXNCYXJJY29uIGltcGxlbWVudHMgUGFyY2VsYWJsZSB7CisgICAgcHVibGljIFN0cmluZyBpY29uUGFja2FnZTsKKyAgICBwdWJsaWMgaW50IGljb25JZDsKKyAgICBwdWJsaWMgaW50IGljb25MZXZlbDsKKyAgICBwdWJsaWMgYm9vbGVhbiB2aXNpYmxlID0gdHJ1ZTsKKyAgICBwdWJsaWMgaW50IG51bWJlcjsKKworICAgIHByaXZhdGUgU3RhdHVzQmFySWNvbigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbihTdHJpbmcgaWNvblBhY2thZ2UsIGludCBpY29uSWQsIGludCBpY29uTGV2ZWwpIHsKKyAgICAgICAgdGhpcy5pY29uUGFja2FnZSA9IGljb25QYWNrYWdlOworICAgICAgICB0aGlzLmljb25JZCA9IGljb25JZDsKKyAgICAgICAgdGhpcy5pY29uTGV2ZWwgPSBpY29uTGV2ZWw7CisgICAgfQorCisgICAgcHVibGljIFN0YXR1c0Jhckljb24oU3RyaW5nIGljb25QYWNrYWdlLCBpbnQgaWNvbklkLCBpbnQgaWNvbkxldmVsLCBpbnQgbnVtYmVyKSB7CisgICAgICAgIHRoaXMuaWNvblBhY2thZ2UgPSBpY29uUGFja2FnZTsKKyAgICAgICAgdGhpcy5pY29uSWQgPSBpY29uSWQ7CisgICAgICAgIHRoaXMuaWNvbkxldmVsID0gaWNvbkxldmVsOworICAgICAgICB0aGlzLm51bWJlciA9IG51bWJlcjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gIlN0YXR1c0Jhckljb24ocGtnPSIgKyB0aGlzLmljb25QYWNrYWdlICsgIiBpZD0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHRoaXMuaWNvbklkKQorICAgICAgICAgICAgICAgICsgIiBsZXZlbD0iICsgdGhpcy5pY29uTGV2ZWwgKyAiIHZpc2libGU9IiArIHZpc2libGUKKyAgICAgICAgICAgICAgICArICIgbnVtPSIgKyB0aGlzLm51bWJlciArICIgKSI7CisgICAgfQorCisgICAgcHVibGljIFN0YXR1c0Jhckljb24gY2xvbmUoKSB7CisgICAgICAgIFN0YXR1c0Jhckljb24gdGhhdCA9IG5ldyBTdGF0dXNCYXJJY29uKHRoaXMuaWNvblBhY2thZ2UsIHRoaXMuaWNvbklkLCB0aGlzLmljb25MZXZlbCk7CisgICAgICAgIHRoYXQudmlzaWJsZSA9IHRoaXMudmlzaWJsZTsKKyAgICAgICAgdGhhdC5udW1iZXIgPSB0aGlzLm51bWJlcjsKKyAgICAgICAgcmV0dXJuIHRoYXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5mbGF0dGVuIHRoZSBTdGF0dXNCYXJJY29uIGZyb20gYSBwYXJjZWwuCisgICAgICovCisgICAgcHVibGljIFN0YXR1c0Jhckljb24oUGFyY2VsIGluKSB7CisgICAgICAgIHJlYWRGcm9tUGFyY2VsKGluKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZWFkRnJvbVBhcmNlbChQYXJjZWwgaW4pIHsKKyAgICAgICAgdGhpcy5pY29uUGFja2FnZSA9IGluLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgdGhpcy5pY29uSWQgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIHRoaXMuaWNvbkxldmVsID0gaW4ucmVhZEludCgpOworICAgICAgICB0aGlzLnZpc2libGUgPSBpbi5yZWFkSW50KCkgIT0gMDsKKyAgICAgICAgdGhpcy5udW1iZXIgPSBpbi5yZWFkSW50KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVUb1BhcmNlbChQYXJjZWwgb3V0LCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgb3V0LndyaXRlU3RyaW5nKHRoaXMuaWNvblBhY2thZ2UpOworICAgICAgICBvdXQud3JpdGVJbnQodGhpcy5pY29uSWQpOworICAgICAgICBvdXQud3JpdGVJbnQodGhpcy5pY29uTGV2ZWwpOworICAgICAgICBvdXQud3JpdGVJbnQodGhpcy52aXNpYmxlID8gMSA6IDApOworICAgICAgICBvdXQud3JpdGVJbnQodGhpcy5udW1iZXIpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZGVzY3JpYmVDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyY2VsYWJsZS5DcmVhdG9yIHRoYXQgaW5zdGFudGlhdGVzIFN0YXR1c0Jhckljb24gb2JqZWN0cworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUGFyY2VsYWJsZS5DcmVhdG9yPFN0YXR1c0Jhckljb24+IENSRUFUT1IKKyAgICAgICAgICAgID0gbmV3IFBhcmNlbGFibGUuQ3JlYXRvcjxTdGF0dXNCYXJJY29uPigpCisgICAgeworICAgICAgICBwdWJsaWMgU3RhdHVzQmFySWNvbiBjcmVhdGVGcm9tUGFyY2VsKFBhcmNlbCBwYXJjZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdHVzQmFySWNvbihwYXJjZWwpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0YXR1c0Jhckljb25bXSBuZXdBcnJheShpbnQgc2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTdGF0dXNCYXJJY29uW3NpemVdOworICAgICAgICB9CisgICAgfTsKK30KKwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uTGlzdC5haWRsIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uTGlzdC5haWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NDUxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhckljb25MaXN0LmFpZGwKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXI7CisKK3BhcmNlbGFibGUgU3RhdHVzQmFySWNvbkxpc3Q7CisKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbkxpc3QuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbkxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzhkMjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uTGlzdC5qYXZhCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKK2ltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CisKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworCitwdWJsaWMgY2xhc3MgU3RhdHVzQmFySWNvbkxpc3QgaW1wbGVtZW50cyBQYXJjZWxhYmxlIHsKKyAgICBwcml2YXRlIFN0cmluZ1tdIG1TbG90czsKKyAgICBwcml2YXRlIFN0YXR1c0Jhckljb25bXSBtSWNvbnM7CisKKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbkxpc3QoKSB7CisgICAgfQorCisgICAgcHVibGljIFN0YXR1c0Jhckljb25MaXN0KFBhcmNlbCBpbikgeworICAgICAgICByZWFkRnJvbVBhcmNlbChpbik7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHJlYWRGcm9tUGFyY2VsKFBhcmNlbCBpbikgeworICAgICAgICB0aGlzLm1TbG90cyA9IGluLnJlYWRTdHJpbmdBcnJheSgpOworICAgICAgICBmaW5hbCBpbnQgTiA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgaWYgKE4gPCAwKSB7CisgICAgICAgICAgICBtSWNvbnMgPSBudWxsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbUljb25zID0gbmV3IFN0YXR1c0Jhckljb25bTl07CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1JY29uc1tpXSA9IG5ldyBTdGF0dXNCYXJJY29uKGluKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZVRvUGFyY2VsKFBhcmNlbCBvdXQsIGludCBmbGFncykgeworICAgICAgICBvdXQud3JpdGVTdHJpbmdBcnJheShtU2xvdHMpOworICAgICAgICBpZiAobUljb25zID09IG51bGwpIHsKKyAgICAgICAgICAgIG91dC53cml0ZUludCgtMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1JY29ucy5sZW5ndGg7CisgICAgICAgICAgICBvdXQud3JpdGVJbnQoTik7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpYyA9IG1JY29uc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoaWMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgICAgICBpYy53cml0ZVRvUGFyY2VsKG91dCwgZmxhZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnQgZGVzY3JpYmVDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyY2VsYWJsZS5DcmVhdG9yIHRoYXQgaW5zdGFudGlhdGVzIFN0YXR1c0Jhckljb25MaXN0IG9iamVjdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFBhcmNlbGFibGUuQ3JlYXRvcjxTdGF0dXNCYXJJY29uTGlzdD4gQ1JFQVRPUgorICAgICAgICAgICAgPSBuZXcgUGFyY2VsYWJsZS5DcmVhdG9yPFN0YXR1c0Jhckljb25MaXN0PigpCisgICAgeworICAgICAgICBwdWJsaWMgU3RhdHVzQmFySWNvbkxpc3QgY3JlYXRlRnJvbVBhcmNlbChQYXJjZWwgcGFyY2VsKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0YXR1c0Jhckljb25MaXN0KHBhcmNlbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RhdHVzQmFySWNvbkxpc3RbXSBuZXdBcnJheShpbnQgc2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTdGF0dXNCYXJJY29uTGlzdFtzaXplXTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwdWJsaWMgdm9pZCBkZWZpbmVTbG90cyhTdHJpbmdbXSBzbG90cykgeworICAgICAgICBmaW5hbCBpbnQgTiA9IHNsb3RzLmxlbmd0aDsKKyAgICAgICAgU3RyaW5nW10gcyA9IG1TbG90cyA9IG5ldyBTdHJpbmdbTl07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIHNbaV0gPSBzbG90c1tpXTsKKyAgICAgICAgfQorICAgICAgICBtSWNvbnMgPSBuZXcgU3RhdHVzQmFySWNvbltOXTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFNsb3RJbmRleChTdHJpbmcgc2xvdCkgeworICAgICAgICBmaW5hbCBpbnQgTiA9IG1TbG90cy5sZW5ndGg7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChzbG90LmVxdWFscyhtU2xvdHNbaV0pKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIG1TbG90cy5sZW5ndGg7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SWNvbihpbnQgaW5kZXgsIFN0YXR1c0Jhckljb24gaWNvbikgeworICAgICAgICBtSWNvbnNbaW5kZXhdID0gaWNvbi5jbG9uZSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUljb24oaW50IGluZGV4KSB7CisgICAgICAgIG1JY29uc1tpbmRleF0gPSBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2xvdChpbnQgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIG1TbG90c1tpbmRleF07CisgICAgfQorCisgICAgcHVibGljIFN0YXR1c0Jhckljb24gZ2V0SWNvbihpbnQgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIG1JY29uc1tpbmRleF07CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRWaWV3SW5kZXgoaW50IGluZGV4KSB7CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxpbmRleDsgaSsrKSB7CisgICAgICAgICAgICBpZiAobUljb25zW2ldICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjb3VudDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjb3B5RnJvbShTdGF0dXNCYXJJY29uTGlzdCB0aGF0KSB7CisgICAgICAgIGlmICh0aGF0Lm1TbG90cyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLm1TbG90cyA9IG51bGw7CisgICAgICAgICAgICB0aGlzLm1JY29ucyA9IG51bGw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IHRoYXQubVNsb3RzLmxlbmd0aDsKKyAgICAgICAgICAgIHRoaXMubVNsb3RzID0gbmV3IFN0cmluZ1tOXTsKKyAgICAgICAgICAgIHRoaXMubUljb25zID0gbmV3IFN0YXR1c0Jhckljb25bTl07CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgdGhpcy5tU2xvdHNbaV0gPSB0aGF0Lm1TbG90c1tpXTsKKyAgICAgICAgICAgICAgICB0aGlzLm1JY29uc1tpXSA9IHRoYXQubUljb25zW2ldICE9IG51bGwgPyB0aGF0Lm1JY29uc1tpXS5jbG9uZSgpIDogbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGR1bXAoUHJpbnRXcml0ZXIgcHcpIHsKKyAgICAgICAgZmluYWwgaW50IE4gPSBtU2xvdHMubGVuZ3RoOworICAgICAgICBwdy5wcmludGxuKCJJY29uIGxpc3Q6Iik7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIHB3LnByaW50ZigiICAlMmQ6ICglcykgJXNcbiIsIGksIG1TbG90c1tpXSwgbUljb25zW2ldKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFyTm90aWZpY2F0aW9uLmFpZGwgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhck5vdGlmaWNhdGlvbi5haWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkOWU4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhck5vdGlmaWNhdGlvbi5haWRsCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyOworCitwYXJjZWxhYmxlIFN0YXR1c0Jhck5vdGlmaWNhdGlvbjsKKwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJOb3RpZmljYXRpb24uamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFyTm90aWZpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEzNDBmYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFyTm90aWZpY2F0aW9uLmphdmEKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKK2ltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3M7CisKKworLyoKK2Jvb2xlYW4gY2xlYXJhYmxlID0gIW4ub25nb2luZ0V2ZW50ICYmICgobm90aWZpY2F0aW9uLmZsYWdzICYgTm90aWZpY2F0aW9uLkZMQUdfTk9fQ0xFQVIpID09IDApOworCisKKy8vIFRPRE86IG1ha2UgdGhpcyByZXN0cmljdGlvbiBkbyBzb21ldGhpbmcgc21hcnRlciBsaWtlIG5ldmVyIGZpbGwKKy8vIG1vcmUgdGhhbiB0d28gc2NyZWVucy4gICJXaHkgd291bGQgYW55b25lIG5lZWQgbW9yZSB0aGFuIDgwIGNoYXJhY3RlcnMuIiA6LS8KK2ZpbmFsIGludCBtYXhUaWNrZXJMZW4gPSA4MDsKK2lmICh0cnVuY2F0ZWRUaWNrZXIgIT0gbnVsbCAmJiB0cnVuY2F0ZWRUaWNrZXIubGVuZ3RoKCkgPiBtYXhUaWNrZXJMZW4pIHsKKyAgICB0cnVuY2F0ZWRUaWNrZXIgPSB0cnVuY2F0ZWRUaWNrZXIuc3ViU2VxdWVuY2UoMCwgbWF4VGlja2VyTGVuKTsKK30KKyovCisKK3B1YmxpYyBjbGFzcyBTdGF0dXNCYXJOb3RpZmljYXRpb24gaW1wbGVtZW50cyBQYXJjZWxhYmxlIHsKKyAgICBwdWJsaWMgU3RyaW5nIHBrZzsKKyAgICBwdWJsaWMgaW50IGlkOworICAgIHB1YmxpYyBTdHJpbmcgdGFnOworICAgIHB1YmxpYyBpbnQgdWlkOworICAgIHB1YmxpYyBpbnQgaW5pdGlhbFBpZDsKKyAgICBwdWJsaWMgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbjsKKworICAgIHB1YmxpYyBTdGF0dXNCYXJOb3RpZmljYXRpb24oKSB7CisgICAgfQorCisgICAgcHVibGljIFN0YXR1c0Jhck5vdGlmaWNhdGlvbihTdHJpbmcgcGtnLCBpbnQgaWQsIFN0cmluZyB0YWcsCisgICAgICAgICAgICBpbnQgdWlkLCBpbnQgaW5pdGlhbFBpZCwgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgeworICAgICAgICBpZiAocGtnID09IG51bGwpIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworICAgICAgICBpZiAobm90aWZpY2F0aW9uID09IG51bGwpIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworCisgICAgICAgIHRoaXMucGtnID0gcGtnOworICAgICAgICB0aGlzLmlkID0gaWQ7CisgICAgICAgIHRoaXMudGFnID0gdGFnOworICAgICAgICB0aGlzLnVpZCA9IHVpZDsKKyAgICAgICAgdGhpcy5pbml0aWFsUGlkID0gaW5pdGlhbFBpZDsKKyAgICAgICAgdGhpcy5ub3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgfQorCisgICAgcHVibGljIFN0YXR1c0Jhck5vdGlmaWNhdGlvbihQYXJjZWwgaW4pIHsKKyAgICAgICAgcmVhZEZyb21QYXJjZWwoaW4pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlYWRGcm9tUGFyY2VsKFBhcmNlbCBpbikgeworICAgICAgICB0aGlzLnBrZyA9IGluLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgdGhpcy5pZCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICB0aGlzLnRhZyA9IGluLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMudGFnID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnVpZCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgdGhpcy5pbml0aWFsUGlkID0gaW4ucmVhZEludCgpOworICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IG5ldyBOb3RpZmljYXRpb24oaW4pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoUGFyY2VsIG91dCwgaW50IGZsYWdzKSB7CisgICAgICAgIG91dC53cml0ZVN0cmluZyh0aGlzLnBrZyk7CisgICAgICAgIG91dC53cml0ZUludCh0aGlzLmlkKTsKKyAgICAgICAgaWYgKHRoaXMudGFnICE9IG51bGwpIHsKKyAgICAgICAgICAgIG91dC53cml0ZUludCgxKTsKKyAgICAgICAgICAgIG91dC53cml0ZVN0cmluZyh0aGlzLnRhZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgIH0KKyAgICAgICAgb3V0LndyaXRlSW50KHRoaXMudWlkKTsKKyAgICAgICAgb3V0LndyaXRlSW50KHRoaXMuaW5pdGlhbFBpZCk7CisgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLndyaXRlVG9QYXJjZWwob3V0LCBmbGFncyk7CisgICAgfQorCisgICAgcHVibGljIGludCBkZXNjcmliZUNvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFBhcmNlbGFibGUuQ3JlYXRvcjxTdGF0dXNCYXJOb3RpZmljYXRpb24+IENSRUFUT1IKKyAgICAgICAgICAgID0gbmV3IFBhcmNlbGFibGUuQ3JlYXRvcjxTdGF0dXNCYXJOb3RpZmljYXRpb24+KCkKKyAgICB7CisgICAgICAgIHB1YmxpYyBTdGF0dXNCYXJOb3RpZmljYXRpb24gY3JlYXRlRnJvbVBhcmNlbChQYXJjZWwgcGFyY2VsKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0YXR1c0Jhck5vdGlmaWNhdGlvbihwYXJjZWwpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0YXR1c0Jhck5vdGlmaWNhdGlvbltdIG5ld0FycmF5KGludCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0YXR1c0Jhck5vdGlmaWNhdGlvbltzaXplXTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwdWJsaWMgU3RhdHVzQmFyTm90aWZpY2F0aW9uIGNsb25lKCkgeworICAgICAgICByZXR1cm4gbmV3IFN0YXR1c0Jhck5vdGlmaWNhdGlvbih0aGlzLnBrZywgdGhpcy5pZCwgdGhpcy50YWcsCisgICAgICAgICAgICAgICAgdGhpcy51aWQsIHRoaXMuaW5pdGlhbFBpZCwgdGhpcy5ub3RpZmljYXRpb24uY2xvbmUoKSk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuICJTdGF0dXNCYXJOb3RpZmljYXRpb24ocGFja2FnZT0iICsgcGtnICsgIiBpZD0iICsgaWQgKyAiIHRhZz0iICsgdGFnCisgICAgICAgICAgICAgICAgKyAiIG5vdGlmaWNhdGlvbj0iICsgbm90aWZpY2F0aW9uICsgIikiOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzT25nb2luZygpIHsKKyAgICAgICAgcmV0dXJuIChub3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UKSAhPSAwOworICAgIH0KKworfQorCisKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFyTm90aWZpY2F0aW9uTGlzdC5haWRsIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJOb3RpZmljYXRpb25MaXN0LmFpZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBhYmVlZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFyTm90aWZpY2F0aW9uTGlzdC5haWRsCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyOworCitwYXJjZWxhYmxlIFN0YXR1c0Jhck5vdGlmaWNhdGlvbkxpc3Q7CisKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC91dGlsL0hpZXJhcmNoaWNhbFN0YXRlTWFjaGluZS5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3V0aWwvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lLmphdmEKaW5kZXggOTkxMWY0OC4uYzU5OWQ2OCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3V0aWwvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lLmphdmEKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3V0aWwvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lLmphdmEKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgIG1TMiAgIG1TMSAtLS0tPiBpbml0aWFsIHN0YXRlCiA8L2NvZGU+CiAgKiBBZnRlciB0aGUgc3RhdGUgbWFjaGluZSBpcyBjcmVhdGVkIGFuZCBzdGFydGVkLCBtZXNzYWdlcyBhcmUgc2VudCB0byBhIHN0YXRlCi0gKiBtYWNoaW5lIHVzaW5nIDxjb2RlPnNlbmRNZXNzYWdlPC9jb2RlIGFuZCB0aGUgbWVzc2FnZXMgYXJlIGNyZWF0ZWQgdXNpbmcKKyAqIG1hY2hpbmUgdXNpbmcgPGNvZGU+c2VuZE1lc3NhZ2U8L2NvZGU+IGFuZCB0aGUgbWVzc2FnZXMgYXJlIGNyZWF0ZWQgdXNpbmcKICAqIDxjb2RlPm9idGFpbk1lc3NhZ2U8L2NvZGU+LiBXaGVuIHRoZSBzdGF0ZSBtYWNoaW5lIHJlY2VpdmVzIGEgbWVzc2FnZSB0aGUKICAqIGN1cnJlbnQgc3RhdGUncyA8Y29kZT5wcm9jZXNzTWVzc2FnZTwvY29kZT4gaXMgaW52b2tlZC4gSW4gdGhlIGFib3ZlIGV4YW1wbGUKICAqIG1TMS5wcm9jZXNzTWVzc2FnZSB3aWxsIGJlIGludm9rZWQgZmlyc3QuIFRoZSBzdGF0ZSBtYXkgdXNlIDxjb2RlPnRyYW5zaXRpb25UbzwvY29kZT4KQEAgLTU5LDkgKzU5LDkgQEAKICAqCiAgKiBFYWNoIHN0YXRlIGluIHRoZSBzdGF0ZSBtYWNoaW5lIG1heSBoYXZlIGEgemVybyBvciBvbmUgcGFyZW50IHN0YXRlcyBhbmQgaWYKICAqIGEgY2hpbGQgc3RhdGUgaXMgdW5hYmxlIHRvIGhhbmRsZSBhIG1lc3NhZ2UgaXQgbWF5IGhhdmUgdGhlIG1lc3NhZ2UgcHJvY2Vzc2VkCi0gKiBieSBpdHMgcGFyZW50IGJ5IHJldHVybmluZyBmYWxzZS4gSWYgYSBtZXNzYWdlIGlzIG5ldmVyIHByb2Nlc3NlZCA8Y29kZT51bmhhbmRsZWRNZXNzYWdlPC9jb2RlPgotICogd2lsbCBiZSBpbnZva2VkIHRvIGdpdmUgb25lIGxhc3QgY2hhbmNlIGZvciB0aGUgc3RhdGUgbWFjaGluZSB0byBwcm9jZXNzCi0gKiB0aGUgbWVzc2FnZS4KKyAqIGJ5IGl0cyBwYXJlbnQgYnkgcmV0dXJuaW5nIGZhbHNlIG9yIE5PVF9IQU5ETEVELiBJZiBhIG1lc3NhZ2UgaXMgbmV2ZXIgcHJvY2Vzc2VkCisgKiA8Y29kZT51bmhhbmRsZWRNZXNzYWdlPC9jb2RlPiB3aWxsIGJlIGludm9rZWQgdG8gZ2l2ZSBvbmUgbGFzdCBjaGFuY2UgZm9yIHRoZSBzdGF0ZSBtYWNoaW5lCisgKiB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgogICoKICAqIFdoZW4gYWxsIHByb2Nlc3NpbmcgaXMgY29tcGxldGVkIGEgc3RhdGUgbWFjaGluZSBtYXkgY2hvb3NlIHRvIGNhbGwKICAqIDxjb2RlPnRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZTwvY29kZT4uIFdoZW4gdGhlIGN1cnJlbnQgPGNvZGU+cHJvY2Vzc2luZ01lc3NhZ2U8L2NvZGU+CkBAIC05NSw3ICs5NSw3IEBACiAgKiBhbnkgb3RoZXIgbWVzc2FnZXMgdGhhdCBhcmUgb24gdGhlIHF1ZXVlIG9yIG1pZ2h0IGJlIGFkZGVkIGxhdGVyLiBCb3RoIG9mCiAgKiB0aGVzZSBhcmUgcHJvdGVjdGVkIGFuZCBtYXkgb25seSBiZSBpbnZva2VkIGZyb20gd2l0aGluIGEgc3RhdGUgbWFjaGluZS4KICAqCi0gKiBUbyBpbGx1c3RyYXRlIHNvbWUgb2YgdGhlc2UgcHJvcGVydGllcyB3ZSdsbCB1c2Ugc3RhdGUgbWFjaGluZSB3aXRoIDgKKyAqIFRvIGlsbHVzdHJhdGUgc29tZSBvZiB0aGVzZSBwcm9wZXJ0aWVzIHdlJ2xsIHVzZSBzdGF0ZSBtYWNoaW5lIHdpdGggYW4gOAogICogc3RhdGUgaGllcmFyY2h5OgogPGNvZGU+CiAgICAgICAgICAgbVAwCkBAIC0xMDksNDQgKzEwOSwxOSBAQAogICoKICAqIEFmdGVyIHN0YXJ0aW5nIG1TNSB0aGUgbGlzdCBvZiBhY3RpdmUgc3RhdGVzIGlzIG1QMCwgbVAxLCBtUzEgYW5kIG1TNS4KICAqIFNvIHRoZSBvcmRlciBvZiBjYWxsaW5nIHByb2Nlc3NNZXNzYWdlIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkIGlzIG1TNSwKLSAqIG1TMSwgbVAxLCBtUDAgYXNzdW1pbmcgZWFjaCBwcm9jZXNzTWVzc2FnZSAgaW5kaWNhdGVzIGl0IGNhbid0IGhhbmRsZSB0aGlzCi0gKiBtZXNzYWdlIGJ5IHJldHVybmluZyBmYWxzZS4KKyAqIG1TMSwgbVAxLCBtUDAgYXNzdW1pbmcgZWFjaCBwcm9jZXNzTWVzc2FnZSBpbmRpY2F0ZXMgaXQgY2FuJ3QgaGFuZGxlIHRoaXMKKyAqIG1lc3NhZ2UgYnkgcmV0dXJuaW5nIGZhbHNlIG9yIE5PVF9IQU5ETEVELgogICoKICAqIE5vdyBhc3N1bWUgbVM1LnByb2Nlc3NNZXNzYWdlIHJlY2VpdmVzIGEgbWVzc2FnZSBpdCBjYW4gaGFuZGxlLCBhbmQgZHVyaW5nCi0gKiB0aGUgaGFuZGxpbmcgZGV0ZXJtaW5lcyB0aGUgbWFjaGluZSBzaG91bGQgY2hhbmdlcyBzdGF0ZXMuIEl0IHdvdWxkIGNhbGwKLSAqIHRyYW5zaXRpb25UbyhtUzQpIGFuZCByZXR1cm4gdHJ1ZS4gSW1tZWRpYXRlbHkgYWZ0ZXIgcmV0dXJuaW5nIGZyb20KKyAqIHRoZSBoYW5kbGluZyBkZXRlcm1pbmVzIHRoZSBtYWNoaW5lIHNob3VsZCBjaGFuZ2Ugc3RhdGVzLiBJdCBjb3VsZCBjYWxsCisgKiB0cmFuc2l0aW9uVG8obVM0KSBhbmQgcmV0dXJuIHRydWUgb3IgSEFORExFRC4gSW1tZWRpYXRlbHkgYWZ0ZXIgcmV0dXJuaW5nIGZyb20KICAqIHByb2Nlc3NNZXNzYWdlIHRoZSBzdGF0ZSBtYWNoaW5lIHJ1bnRpbWUgd2lsbCBmaW5kIHRoZSBjb21tb24gcGFyZW50LAogICogd2hpY2ggaXMgbVAxLiBJdCB3aWxsIHRoZW4gY2FsbCBtUzUuZXhpdCwgbVMxLmV4aXQsIG1TMi5lbnRlciBhbmQgdGhlbgogICogbVM0LmVudGVyLiBUaGUgbmV3IGxpc3Qgb2YgYWN0aXZlIHN0YXRlcyBpcyBtUDAsIG1QMSwgbVMyIGFuZCBtUzQuIFNvCiAgKiB3aGVuIHRoZSBuZXh0IG1lc3NhZ2UgaXMgcmVjZWl2ZWQgbVM0LnByb2Nlc3NNZXNzYWdlIHdpbGwgYmUgaW52b2tlZC4KICAqCi0gKiBUbyBhc3Npc3QgaW4gZGVzY3JpYmluZyBhbiBIU00gYSBzaW1wbGUgZ3JhbW1hciBoYXMgYmVlbiBjcmVhdGVkIHdoaWNoCi0gKiBpcyBpbmZvcm1hbGx5IGRlZmluZWQgaGVyZSBhbmQgYSBmb3JtYWwgRUJORiBkZXNjcmlwdGlvbiBpcyBhdCB0aGUgZW5kCi0gKiBvZiB0aGUgY2xhc3MgY29tbWVudC4KLSAqCi0gKiBBbiBIU00gc3RhcnRzIHdpdGggdGhlIG5hbWUgYW5kIGluY2x1ZGVzIGEgc2V0IG9mIGhpZXJhcmNoaWNhbCBzdGF0ZXMuCi0gKiBBIHN0YXRlIGlzIHByZWNlZWRlZCBieSBvbmUgb3IgbW9yZSBwbHVzIHNpZ25zICgrKSwgdG8gaW5kaWNhdGUgaXRzCi0gKiBkZXB0aCBhbmQgYSBoYXNoICgjKSBpZiBpdHMgdGhlIGluaXRpYWwgc3RhdGUuIENoaWxkIHN0YXRlcyBmb2xsb3cgdGhlaXIKLSAqIHBhcmVudHMgYW5kIGhhdmUgb25lIG1vcmUgcGx1cyBzaWduIHRoZW4gdGhlaXIgcGFyZW50LiBJbnNpZGUgYSBzdGF0ZQotICogYXJlIGEgc2VyaWVzIG9mIG1lc3NhZ2VzLCB0aGUgYWN0aW9ucyB0aGV5IHBlcmZvcm0gYW5kIGlmIHRoZSBwcm9jZXNzaW5nCi0gKiBpcyBjb21wbGV0ZSBlbmRzIHdpdGggYSBwZXJpb2QgKC4pLiBJZiBwcm9jZXNzaW5nIGlzbid0IGNvbXBsZXRlIGFuZAotICogdGhlIHBhcmVudCBzaG91bGQgcHJvY2VzcyB0aGUgbWVzc2FnZSBpdCBlbmRzIHdpdGggYSBjYXJldCAoXikuIFRoZQotICogYWN0aW9ucyBpbmNsdWRlIHNlbmQgYSBtZXNzYWdlICgkTUVTU0FHRSksIGRlZmVyIGEgbWVzc2FnZSAoJU1FU1NBR0UpLAotICogdHJhbnNpdGlvbiB0byBhIG5ldyBzdGF0ZSAoPk1FU1NBR0UpIGFuZCBhbiBpZiBzdGF0ZW1lbnQKLSAqIChpZiAoIGV4cHJlc3Npb24gKSB7IGxpc3Qgb2YgYWN0aW9ucyB9LikKLSAqCi0gKiBUaGUgSHNtIEhlbGxvV29ybGQgY291bGQgZG9jdW1lbnRlZCBhczoKLSAqCi0gKiBIZWxsb1dvcmxkIHsKLSAqICAgKyAjIG1TdGF0ZTEuCi0gKiB9Ci0gKgotICogYW5kIGludGVycHJldGVkIGFzIEhTTSBIZWxsb1dvcmxkOgotICoKLSAqIG1TdGF0ZTEgYSByb290IHN0YXRlIChzaW5nbGUgKykgYW5kIGluaXRpYWwgc3RhdGUgKCMpIHdoaWNoCi0gKiBwcm9jZXNzZXMgYWxsIG1lc3NhZ2VzIGNvbXBsZXRlbHksIHRoZSBwZXJpb2QgKC4pLgotICoKLSAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpczoKKyAqIE5vdyBmb3Igc29tZSBjb25jcmV0ZSBleGFtcGxlcywgaGVyZSBpcyB0aGUgY2Fub25pY2FsIEhlbGxvV29ybGQgYXMgYW4gSFNNLgorICogSXQgcmVzcG9uZHMgd2l0aCAiSGVsbG8gV29ybGQiIGJlaW5nIHByaW50ZWQgdG8gdGhlIGxvZyBmb3IgZXZlcnkgbWVzc2FnZS4KIDxjb2RlPgogY2xhc3MgSGVsbG9Xb3JsZCBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlTWFjaGluZSB7CiAgICAgSHNtMShTdHJpbmcgbmFtZSkgewpAQCAtMTY0LDcgKzEzOSw3IEBACiAgICAgY2xhc3MgU3RhdGUxIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgewogICAgICAgICBAT3ZlcnJpZGUgcHVibGljIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtZXNzYWdlKSB7CiAgICAgICAgICAgICBMb2cuZChUQUcsICJIZWxsbyBXb3JsZCIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgfQogICAgIH0KICAgICBTdGF0ZTEgbVN0YXRlMSA9IG5ldyBTdGF0ZTEoKTsKQEAgLTE3Niw3ICsxNTEsNyBAQAogfQogPC9jb2RlPgogICoKLSAqIEEgbW9yZSBpbnRlcmVzdGluZyBzdGF0ZSBtYWNoaW5lIGlzIG9uZSBvZiBmb3VyIHN0YXRlcworICogQSBtb3JlIGludGVyZXN0aW5nIHN0YXRlIG1hY2hpbmUgaXMgb25lIHdpdGggZm91ciBzdGF0ZXMKICAqIHdpdGggdHdvIGluZGVwZW5kZW50IHBhcmVudCBzdGF0ZXMuCiA8Y29kZT4KICAgICAgICAgbVAxICAgICAgbVAyCkBAIC0xODQsNDUgKzE1OSw2OCBAQAogICAgICAgbVMyICAgbVMxCiA8L2NvZGU+CiAgKgotICogZG9jdW1lbnRlZCBhczoKKyAqIEhlcmUgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGlzIHN0YXRlIG1hY2hpbmUgdXNpbmcgcHNldWRvIGNvZGUuCiAgKgotICogSHNtMSB7Ci0gKiAgICsgbVAxIHsKLSAqICAgICAgIENNRF8yIHsKLSAqICAgICAgICAgICRDTURfMwotICogICAgICAgICAgJUNNRF8yCi0gKiAgICAgICAgICA+bVMyCi0gKiAgICAgICB9LgotICogICAgIH0KLSAqICAgKysgIyBtUzEgeyBDTURfMXsgPm1TMSB9XiB9Ci0gKiAgICsrICAgbVMyIHsKLSAqICAgICAgICAgICAgQ01EXzJ7JENNRF80fS4KLSAqICAgICAgICAgICAgQ01EXzN7JUNNRF8zIDsgPm1QMn0uCi0gKiAgICAgfQogICoKLSAqICAgKyBtUDIgZSgkQ01EXzUpIHsKLSAqICAgICAgICAgICAgQ01EXzMsIENNRF80LgotICogICAgICAgICAgICBDTURfNXs+SEFMVH0uCi0gKiAgICAgfQorICogc3RhdGUgbVAxIHsKKyAqICAgICAgZW50ZXIgeyBsb2coIm1QMS5lbnRlciIpOyB9CisgKiAgICAgIGV4aXQgeyBsb2coIm1QMS5leGl0Iik7ICB9CisgKiAgICAgIG9uIG1zZyB7CisgKiAgICAgICAgICBDTURfMiB7CisgKiAgICAgICAgICAgICAgc2VuZChDTURfMyk7CisgKiAgICAgICAgICAgICAgZGVmZXIobXNnKTsKKyAqICAgICAgICAgICAgICB0cmFuc2l0b25UbyhtUzIpOworICogICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOworICogICAgICAgICAgfQorICogICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOworICogICAgICB9CiAgKiB9CiAgKgotICogYW5kIGludGVycHJldGVkIGFzIEhpZXJhcmNoaWNhbFN0YXRlTWFjaGluZSBIc20xOgorICogSU5JVElBTAorICogc3RhdGUgbVMxIHBhcmVudCBtUDEgeworICogICAgICBlbnRlciB7IGxvZygibVMxLmVudGVyIik7IH0KKyAqICAgICAgZXhpdCAgeyBsb2coIm1TMS5leGl0Iik7ICB9CisgKiAgICAgIG9uIG1zZyB7CisgKiAgICAgICAgICBDTURfMSB7CisgKiAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1TMSk7CisgKiAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgKiAgICAgICAgICB9CisgKiAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CisgKiAgICAgIH0KKyAqIH0KICAqCi0gKiBtUDEgYSByb290IHN0YXRlLgotICogICAgICBwcm9jZXNzZXMgbWVzc2FnZSBDTURfMiB3aGljaCBzZW5kcyBDTURfMywgZGVmZXJzIENNRF8yLCBhbmQgdHJhbnNpdGlvbnMgdG8gbVMyCisgKiBzdGF0ZSBtUzIgcGFyZW50IG1QMSB7CisgKiAgICAgIGVudGVyIHsgbG9nKCJtUzIuZW50ZXIiKTsgfQorICogICAgICBleGl0ICB7IGxvZygibVMyLmV4aXQiKTsgIH0KKyAqICAgICAgb24gbXNnIHsKKyAqICAgICAgICAgIENNRF8yIHsKKyAqICAgICAgICAgICAgICBzZW5kKENNRF80KTsKKyAqICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKKyAqICAgICAgICAgIH0KKyAqICAgICAgICAgIENNRF8zIHsKKyAqICAgICAgICAgICAgICBkZWZlcihtc2cpOworICogICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUDIpOworICogICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOworICogICAgICAgICAgfQorICogICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOworICogICAgICB9CisgKiB9CiAgKgotICogbVMxIGEgY2hpbGQgb2YgbVAxIGlzIHRoZSBpbml0aWFsIHN0YXRlOgotICogICAgICBwcm9jZXNzZXMgbWVzc2FnZSBDTURfMSB3aGljaCB0cmFuc2l0aW9ucyB0byBpdHNlbGYgYW5kIHJldHVybnMgZmFsc2UgdG8gbGV0IG1QMSBoYW5kbGUgaXQuCi0gKgotICogbVMyIGEgY2hpbGQgb2YgbVAxOgotICogICAgICBwcm9jZXNzZXMgbWVzc2FnZSBDTURfMiB3aGljaCBzZW5kIENNRF80Ci0gKiAgICAgIHByb2Nlc3NlcyBtZXNzYWdlIENNRF8zIHdoaWNoIGRlZmVycyBDTURfMyBhbmQgdHJhbnNpdGlvbnMgdG8gbVAyCi0gKgotICogbVAyIGEgcm9vdCBzdGF0ZS4KLSAqICAgICAgb24gZW50ZXIgaXQgc2VuZHMgQ01EXzUKLSAqICAgICAgcHJvY2Vzc2VzIG1lc3NhZ2UgQ01EXzMKLSAqICAgICAgcHJvY2Vzc2VzIG1lc3NhZ2UgQ01EXzQKLSAqICAgICAgcHJvY2Vzc2VzIG1lc3NhZ2UgQ01EXzUgd2hpY2ggdHJhbnNpdGlvbnMgdG8gaGFsdCBzdGF0ZQorICogc3RhdGUgbVAyIHsKKyAqICAgICAgZW50ZXIgeworICogICAgICAgICAgbG9nKCJtUDIuZW50ZXIiKTsKKyAqICAgICAgICAgIHNlbmQoQ01EXzUpOworICogICAgICB9CisgKiAgICAgIGV4aXQgeyBsb2coIm1QMi5leGl0Iik7IH0KKyAqICAgICAgb24gbXNnIHsKKyAqICAgICAgICAgIENNRF8zLCBDTURfNCB7IHJldHVybiBIQU5ETEVEOyB9CisgKiAgICAgICAgICBDTURfNSB7CisgKiAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKEhhbHRpbmdTdGF0ZSk7CisgKiAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgKiAgICAgICAgICB9CisgKiAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CisgKiAgICAgIH0KKyAqIH0KICAqCiAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgYmVsb3cgYW5kIGFsc28gaW4gSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lVGVzdDoKIDxjb2RlPgpAQCAtMjcxLDExICsyNjksMTEgQEAKICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShvYnRhaW5NZXNzYWdlKENNRF8zKSk7CiAgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUzIpOwotICAgICAgICAgICAgICAgIHJldFZhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0VmFsID0gSEFORExFRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgLy8gQW55IG1lc3NhZ2Ugd2UgZG9uJ3QgdW5kZXJzdGFuZCBpbiB0aGlzIHN0YXRlIGludm9rZXMgdW5oYW5kbGVkTWVzc2FnZQotICAgICAgICAgICAgICAgIHJldFZhbCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJldFZhbCA9IE5PVF9IQU5ETEVEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHJldFZhbDsKQEAgLTI5NCwxMCArMjkyLDEwIEBACiAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IENNRF8xKSB7CiAgICAgICAgICAgICAgICAgLy8gVHJhbnNpdGlvbiB0byBvdXJzZWxmIHRvIHNob3cgdGhhdCBlbnRlci9leGl0IGlzIGNhbGxlZAogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUzEpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBMZXQgcGFyZW50IHByb2Nlc3MgYWxsIG90aGVyIG1lc3NhZ2VzCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgZXhpdCgpIHsKQEAgLTMxNSwxNSArMzEzLDE1IEBACiAgICAgICAgICAgICBzd2l0Y2gobWVzc2FnZS53aGF0KSB7CiAgICAgICAgICAgICBjYXNlKENNRF8yKToKICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShvYnRhaW5NZXNzYWdlKENNRF80KSk7Ci0gICAgICAgICAgICAgICAgcmV0VmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXRWYWwgPSBIQU5ETEVEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZShDTURfMyk6CiAgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUDIpOwotICAgICAgICAgICAgICAgIHJldFZhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0VmFsID0gSEFORExFRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0VmFsID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0VmFsID0gTk9UX0hBTkRMRUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcmV0VmFsOwpAQCAtMzQ5LDcgKzM0Nyw3IEBACiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICB9CiAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgTG9nLmQoVEFHLCAibVAyLmV4aXQiKTsKQEAgLTM1Nyw3ICszNTUsNyBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIGhhbHRpbmcoKSB7CisgICAgdm9pZCBoYWx0aW5nKCkgewogICAgICAgICBMb2cuZChUQUcsICJoYWx0aW5nIik7CiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewogICAgICAgICAgICAgdGhpcy5ub3RpZnlBbGwoKTsKQEAgLTQxMyw1MyArNDExLDMyIEBACiAgKiBEL2hzbTEgICAgKCAxOTk5KTogbVAyLmV4aXQKICAqIEQvaHNtMSAgICAoIDE5OTkpOiBoYWx0aW5nCiAgKgotICogSGVyZSBpcyB0aGUgSFNNIGEgQk5GIGdyYW1tYXIsIHRoaXMgaXMgYSBmaXJzdCBzdGFiIGF0IGNyZWF0aW5nIGFuCi0gKiBIU00gZGVzY3JpcHRpb24gbGFuZ3VhZ2UsIHN1Z2dlc3Rpb25zIGNvcnJlY3Rpb25zIG9yIGFsdGVybmF0aXZlcwotICogd291bGQgYmUgbXVjaCBhcHByZWNpYXRlZC4KLSAqCi0gKiBMZWdlbmQ6Ci0gKiAgIHt9ICA6Oj0gemVybyBvciBtb3JlCi0gKiAgIHt9KyA6Oj0gb25lIG9yIG1vcmUKLSAqICAgW10gIDo6PSB6ZXJvIG9yIG9uZQotICogICAoKSAgOjo9IGRlZmluZSBhIGdyb3VwIHdpdGggIm9yIiBzZW1hbnRpY3MuCi0gKgotICogSFNNIEVCTkY6Ci0gKiAgIEhTTSA9IEhTTV9OQU1FICJ7IiB7IFNUQVRFIH0rICJ9IiA7Ci0gKiAgIEhTTV9OQU1FID0gYWxwaGFfbnVtZXJpY19uYW1lIDsKLSAqICAgU1RBVEUgPSBJTlRST0RVQ0VfU1RBVEUgWyBFTlRFUiB8IFsgRU5URVIgRVhJVCBdICJ7IiBbIE1FU1NBR0VTIF0gIn0iIFsgRVhJVCBdIDsKLSAqICAgSU5UUk9EVUNFX1NUQVRFID0geyBTVEFURV9ERVBUSCB9KyBbIElOSVRJQUxfU1RBVEVfSU5ESUNBVE9SIF0gU1RBVEVfTkFNRSA7Ci0gKiAgIFNUQVRFX0RFUFRIID0gIisiIDsKLSAqICAgSU5JVElBTF9TVEFURV9JTkRJQ0FUT1IgPSAiIyIKLSAqICAgRU5URVIgPSAiZSgiIFNFTkRfQUNUSU9OIHwgVFJBTlNJVElPTl9BQ1RJT04gfCBIQUxUX0FDVElPTiAiKSIgOwotICogICBNRVNTQUdFUyA9IHsgTVNHX0xJU1QgTUVTU0FHRV9BQ1RJT05TIH0gOwotICogICBNU0dfTElTVCA9IHsgTVNHX05BTUUgeyAiLCIgTVNHX05BTUUgfSB9OwotICogICBFWElUID0gIngoIiBTRU5EX0FDVElPTiB8IFRSQU5TSVRJT05fQUNUSU9OIHwgSEFMVF9BQ1RJT04gIikiIDsKLSAqICAgUFJPQ0VTU19DT01QTEVUSU9OID0gUFJPQ0VTU19JTl9QQVJFTlRfT1JfQ09NUExFVEUgfCBQUk9DRVNTX0NPTVBMRVRFIDsKLSAqICAgU0VORF9BQ1RJT04gPSAiJCIgTVNHX05BTUUgOwotICogICBERUZFUl9BQ1RJT04gPSAiJSIgTVNHX05BTUUgOwotICogICBUUkFOU0lUSU9OX0FDVElPTiA9ICI+IiBTVEFURV9OQU1FIDsKLSAqICAgSEFMVF9BQ1RJT04gPSAiPiIgSEFMVCA7Ci0gKiAgIE1FU1NBR0VfQUNUSU9OUyA9IHsgInsiIEFDVElPTl9MSVNUICJ9IiB9IFsgUFJPQ0VTU19DT01QTEVUSU9OIF0gOwotICogICBBQ1RJT05fTElTVCA9IEFDVElPTiB7ICgiOyIgfCAiXG4iKSBBQ1RJT04gfSA7Ci0gKiAgIEFDVElPTiA9IElGX0FDVElPTiB8IFNFTkRfQUNUSU9OIHwgREVGRVJfQUNUSU9OIHwgVFJBTlNJVElPTl9BQ1RJT04gfCBIQUxUX0FDVElPTiA7Ci0gKiAgIElGX0FDVElPTiA9ICJpZigiIGJvb2xlYW5fZXhwcmVzc2lvbiAiKSIgInsiIEFDVElPTl9MSVNUICJ9IgotICogICBQUk9DRVNTX0lOX1BBUkVOVF9PUl9DT01QTEVURSA9ICJeIiA7Ci0gKiAgIFBST0NFU1NfQ09NUExFVEUgPSAiLiIgOwotICogICBTVEFURV9OQU1FID0gYWxwaGFfbnVtZXJpY19uYW1lIDsKLSAqICAgTVNHX05BTUUgPSBhbHBoYV9udW1lcmljX25hbWUgfCBBTExfT1RIRVJfTUVTU0FHRVMgOwotICogICBBTExfT1RIRVJfTUVTU0FHRVMgPSAiKiIgOwotICogICBFWFAgPSBib29sZWFuX2V4cHJlc3Npb24gOwotICoKLSAqIElkaW9tczoKLSAqICAgKiB7ICUqIH0uIDo6PSBBbGwgb3RoZXIgbWVzc2FnZXMgd2lsbCBiZSBkZWZlcnJlZC4KICAqLwogcHVibGljIGNsYXNzIEhpZXJhcmNoaWNhbFN0YXRlTWFjaGluZSB7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkhpZXJhcmNoaWNhbFN0YXRlTWFjaGluZSI7CiAgICAgcHJpdmF0ZSBTdHJpbmcgbU5hbWU7CiAKKyAgICAvKiogTWVzc2FnZS53aGF0IHZhbHVlIHdoZW4gcXVpdHRpbmcgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIU01fUVVJVF9DTUQgPSAtMTsKIAorICAgIC8qKiBNZXNzYWdlLndoYXQgdmFsdWUgd2hlbiBpbml0aWFsaXppbmcgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIU01fSU5JVF9DTUQgPSAtMTsKKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIGNvbnN0YW50IHRoYXQgbWF5YmUgcmV0dXJuZWQgYnkgcHJvY2Vzc01lc3NhZ2UKKyAgICAgKiB0byBpbmRpY2F0ZSB0aGUgdGhlIG1lc3NhZ2Ugd2FzIHByb2Nlc3NlZCBhbmQgaXMgbm90IHRvIGJlCisgICAgICogcHJvY2Vzc2VkIGJ5IHBhcmVudCBzdGF0ZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gSEFORExFRCA9IHRydWU7CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBjb25zdGFudCB0aGF0IG1heWJlIHJldHVybmVkIGJ5IHByb2Nlc3NNZXNzYWdlCisgICAgICogdG8gaW5kaWNhdGUgdGhlIHRoZSBtZXNzYWdlIHdhcyBOT1QgcHJvY2Vzc2VkIGFuZCBpcyB0byBiZQorICAgICAqIHByb2Nlc3NlZCBieSBwYXJlbnQgc3RhdGVzCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIE5PVF9IQU5ETEVEID0gZmFsc2U7CisKICAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBIc21IYW5kbGVyIGV4dGVuZHMgSGFuZGxlciB7CiAKICAgICAgICAgLyoqIFRoZSBkZWJ1ZyBmbGFnICovCkBAIC00NjgsNiArNDQ1LDEyIEBACiAgICAgICAgIC8qKiBUaGUgcXVpdCBvYmplY3QgKi8KICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT2JqZWN0IG1RdWl0T2JqID0gbmV3IE9iamVjdCgpOwogCisgICAgICAgIC8qKiBUaGUgaW5pdGlhbGl6YXRpb24gbWVzc2FnZSAqLworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNZXNzYWdlIG1Jbml0TXNnID0gbnVsbDsKKworICAgICAgICAvKiogVGhlIGN1cnJlbnQgbWVzc2FnZSAqLworICAgICAgICBwcml2YXRlIE1lc3NhZ2UgbU1zZzsKKwogICAgICAgICAvKiogQSBsaXN0IG9mIG1lc3NhZ2VzIHRoYXQgdGhpcyBzdGF0ZSBtYWNoaW5lIGhhcyBwcm9jZXNzZWQgKi8KICAgICAgICAgcHJpdmF0ZSBQcm9jZXNzZWRNZXNzYWdlcyBtUHJvY2Vzc2VkTWVzc2FnZXMgPSBuZXcgUHJvY2Vzc2VkTWVzc2FnZXMoKTsKIApAQCAtNTUwLDggKzUzMyw3IEBACiAgICAgICAgIHByaXZhdGUgY2xhc3MgUXVpdHRpbmdTdGF0ZSBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKLSAgICAgICAgICAgICAgICAvLyBJZ25vcmUKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTU2NSw2ICs1NDcsOSBAQAogICAgICAgICBwdWJsaWMgZmluYWwgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CiAgICAgICAgICAgICBpZiAobURiZykgTG9nLmQoVEFHLCAiaGFuZGxlTWVzc2FnZTogRSBtc2cud2hhdD0iICsgbXNnLndoYXQpOwogCisgICAgICAgICAgICAvKiogU2F2ZSB0aGUgY3VycmVudCBtZXNzYWdlICovCisgICAgICAgICAgICBtTXNnID0gbXNnOworCiAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAqIENoZWNrIHRoYXQgY29uc3RydWN0aW9uIHdhcyBjb21wbGV0ZWQKICAgICAgICAgICAgICAqLwpAQCAtNjc5LDYgKzY2NCw3IEBACiAgICAgICAgICAgICAgKiBzdGFydGluZyBhdCB0aGUgZmlyc3QgZW50cnkuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1Jc0NvbnN0cnVjdGlvbkNvbXBsZXRlZCA9IHRydWU7CisgICAgICAgICAgICBtTXNnID0gb2J0YWluTWVzc2FnZShIU01fSU5JVF9DTUQpOwogICAgICAgICAgICAgaW52b2tlRW50ZXJNZXRob2RzKDApOwogCiAgICAgICAgICAgICAvKioKQEAgLTg1NSw2ICs4NDEsMTMgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qKgorICAgICAgICAgKiBAcmV0dXJuIGN1cnJlbnQgbWVzc2FnZQorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBNZXNzYWdlIGdldEN1cnJlbnRNZXNzYWdlKCkgeworICAgICAgICAgICAgcmV0dXJuIG1Nc2c7CisgICAgICAgIH0KKworICAgICAgICAvKioKICAgICAgICAgICogQHJldHVybiBjdXJyZW50IHN0YXRlCiAgICAgICAgICAqLwogICAgICAgICBwcml2YXRlIGZpbmFsIEhpZXJhcmNoaWNhbFN0YXRlIGdldEN1cnJlbnRTdGF0ZSgpIHsKQEAgLTEwMjUsNiArMTAxOCwxNCBAQAogICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIGFkZFN0YXRlKEhpZXJhcmNoaWNhbFN0YXRlIHN0YXRlLCBIaWVyYXJjaGljYWxTdGF0ZSBwYXJlbnQpIHsKICAgICAgICAgbUhzbUhhbmRsZXIuYWRkU3RhdGUoc3RhdGUsIHBhcmVudCk7CiAgICAgfQorCisgICAgLyoqCisgICAgICogQHJldHVybiBjdXJyZW50IG1lc3NhZ2UKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgTWVzc2FnZSBnZXRDdXJyZW50TWVzc2FnZSgpIHsKKyAgICAgICAgcmV0dXJuIG1Ic21IYW5kbGVyLmdldEN1cnJlbnRNZXNzYWdlKCk7CisgICAgfQorCiAgICAgLyoqCiAgICAgICogQHJldHVybiBjdXJyZW50IHN0YXRlCiAgICAgICovCkBAIC0xMDMyLDcgKzEwMzMsNiBAQAogICAgICAgICByZXR1cm4gbUhzbUhhbmRsZXIuZ2V0Q3VycmVudFN0YXRlKCk7CiAgICAgfQogCi0KICAgICAvKioKICAgICAgKiBBZGQgYSBuZXcgc3RhdGUgdG8gdGhlIHN0YXRlIG1hY2hpbmUsIHBhcmVudCB3aWxsIGJlIG51bGwKICAgICAgKiBAcGFyYW0gc3RhdGUgdG8gYWRkCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlSW5wdXRIYW5kbGVyLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlSW5wdXRIYW5kbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZlNTA2MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0Jhc2VJbnB1dEhhbmRsZXIuamF2YQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3OworCitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0SGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworCisvKioKKyAqIEJhc2UgZG8tbm90aGluZyBpbXBsZW1lbnRhdGlvbiBvZiBhbiBpbnB1dCBoYW5kbGVyLgorICogQGhpZGUKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VJbnB1dEhhbmRsZXIgaW1wbGVtZW50cyBJbnB1dEhhbmRsZXIgeworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUtleShLZXlFdmVudCBldmVudCwgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjaykgeworICAgICAgICBmaW5pc2hlZENhbGxiYWNrLnJ1bigpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVUb3VjaChNb3Rpb25FdmVudCBldmVudCwgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjaykgeworICAgICAgICBmaW5pc2hlZENhbGxiYWNrLnJ1bigpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVUcmFja2JhbGwoTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgZmluaXNoZWRDYWxsYmFjay5ydW4oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlU3VyZmFjZUhvbGRlci5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvQmFzZVN1cmZhY2VIb2xkZXIuamF2YQppbmRleCBlMGQzYTVmLi4zYTA0OTkzIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlU3VyZmFjZUhvbGRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0Jhc2VTdXJmYWNlSG9sZGVyLmphdmEKQEAgLTMzLDkgKzMzLDExIEBACiAKICAgICBwdWJsaWMgZmluYWwgQXJyYXlMaXN0PFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2s+IG1DYWxsYmFja3MKICAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxTdXJmYWNlSG9sZGVyLkNhbGxiYWNrPigpOwotCisgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFja1tdIG1Hb3R0ZW5DYWxsYmFja3M7CisgICAgYm9vbGVhbiBtSGF2ZUdvdHRlbkNhbGxiYWNrczsKKyAgICAKICAgICBwdWJsaWMgZmluYWwgUmVlbnRyYW50TG9jayBtU3VyZmFjZUxvY2sgPSBuZXcgUmVlbnRyYW50TG9jaygpOwotICAgIHB1YmxpYyBmaW5hbCBTdXJmYWNlIG1TdXJmYWNlID0gbmV3IFN1cmZhY2UoKTsKKyAgICBwdWJsaWMgU3VyZmFjZSBtU3VyZmFjZSA9IG5ldyBTdXJmYWNlKCk7CiAKICAgICBpbnQgbVJlcXVlc3RlZFdpZHRoID0gLTE7CiAgICAgaW50IG1SZXF1ZXN0ZWRIZWlnaHQgPSAtMTsKQEAgLTgzLDYgKzg1LDMxIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgcHVibGljIFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2tbXSBnZXRDYWxsYmFja3MoKSB7CisgICAgICAgIGlmIChtSGF2ZUdvdHRlbkNhbGxiYWNrcykgeworICAgICAgICAgICAgcmV0dXJuIG1Hb3R0ZW5DYWxsYmFja3M7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN5bmNocm9uaXplZCAobUNhbGxiYWNrcykgeworICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtQ2FsbGJhY2tzLnNpemUoKTsKKyAgICAgICAgICAgIGlmIChOID4gMCkgeworICAgICAgICAgICAgICAgIGlmIChtR290dGVuQ2FsbGJhY2tzID09IG51bGwgfHwgbUdvdHRlbkNhbGxiYWNrcy5sZW5ndGggIT0gTikgeworICAgICAgICAgICAgICAgICAgICBtR290dGVuQ2FsbGJhY2tzID0gbmV3IFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2tbTl07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1DYWxsYmFja3MudG9BcnJheShtR290dGVuQ2FsbGJhY2tzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUdvdHRlbkNhbGxiYWNrcyA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtSGF2ZUdvdHRlbkNhbGxiYWNrcyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBtR290dGVuQ2FsbGJhY2tzOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB1bmdldENhbGxiYWNrcygpIHsKKyAgICAgICAgbUhhdmVHb3R0ZW5DYWxsYmFja3MgPSBmYWxzZTsKKyAgICB9CisgICAgCiAgICAgcHVibGljIHZvaWQgc2V0Rml4ZWRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgewogICAgICAgICBpZiAobVJlcXVlc3RlZFdpZHRoICE9IHdpZHRoIHx8IG1SZXF1ZXN0ZWRIZWlnaHQgIT0gaGVpZ2h0KSB7CiAgICAgICAgICAgICBtUmVxdWVzdGVkV2lkdGggPSB3aWR0aDsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0lJbnB1dE1ldGhvZFNlc3Npb24uYWlkbCBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0lJbnB1dE1ldGhvZFNlc3Npb24uYWlkbAppbmRleCBhMDVmZjE0Li4zMzhkY2FhIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9JSW5wdXRNZXRob2RTZXNzaW9uLmFpZGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvSUlucHV0TWV0aG9kU2Vzc2lvbi5haWRsCkBAIC00OCw0ICs0OCw2IEBACiAgICAgdm9pZCBhcHBQcml2YXRlQ29tbWFuZChTdHJpbmcgYWN0aW9uLCBpbiBCdW5kbGUgZGF0YSk7CiAKICAgICB2b2lkIHRvZ2dsZVNvZnRJbnB1dChpbnQgc2hvd0ZsYWdzLCBpbnQgaGlkZUZsYWdzKTsKKworICAgIHZvaWQgZmluaXNoU2Vzc2lvbigpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvUm9vdFZpZXdTdXJmYWNlVGFrZXIuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L1Jvb3RWaWV3U3VyZmFjZVRha2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZmOGQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L1Jvb3RWaWV3U3VyZmFjZVRha2VyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3OworCitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0UXVldWU7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXI7CisKKy8qKiBoYWhhaGFoICovCitwdWJsaWMgaW50ZXJmYWNlIFJvb3RWaWV3U3VyZmFjZVRha2VyIHsKKyAgICBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIHdpbGxZb3VUYWtlVGhlU3VyZmFjZSgpOworICAgIHZvaWQgc2V0U3VyZmFjZVR5cGUoaW50IHR5cGUpOworICAgIHZvaWQgc2V0U3VyZmFjZUZvcm1hdChpbnQgZm9ybWF0KTsKKyAgICB2b2lkIHNldFN1cmZhY2VLZWVwU2NyZWVuT24oYm9vbGVhbiBrZWVwT24pOworICAgIElucHV0UXVldWUuQ2FsbGJhY2sgd2lsbFlvdVRha2VUaGVJbnB1dFF1ZXVlKCk7Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvd2lkZ2V0L0RpZ2l0YWxDbG9jay5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3dpZGdldC9EaWdpdGFsQ2xvY2suamF2YQppbmRleCAyM2UyMjc3Li5mYTQ3ZmY2IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvd2lkZ2V0L0RpZ2l0YWxDbG9jay5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC93aWRnZXQvRGlnaXRhbENsb2NrLmphdmEKQEAgLTMwLDcgKzMwLDcgQEAKIGltcG9ydCBhbmRyb2lkLnRleHQuZm9ybWF0LkRhdGVGb3JtYXQ7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CiAKIGltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdFN5bWJvbHM7CkBAIC0zOSw3ICszOSw3IEBACiAvKioKICAqIERpc3BsYXlzIHRoZSB0aW1lCiAgKi8KLXB1YmxpYyBjbGFzcyBEaWdpdGFsQ2xvY2sgZXh0ZW5kcyBSZWxhdGl2ZUxheW91dCB7CitwdWJsaWMgY2xhc3MgRGlnaXRhbENsb2NrIGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKIAogICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBNMTIgPSAiaDptbSI7CiAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIE0yNCA9ICJrazptbSI7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2dvb2dsZS9hbmRyb2lkL21tcy9Db250ZW50VHlwZS5qYXZhIGIvY29yZS9qYXZhL2NvbS9nb29nbGUvYW5kcm9pZC9tbXMvQ29udGVudFR5cGUuamF2YQppbmRleCA5NGJjOWZkLi5iMDY2ZmFkIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2dvb2dsZS9hbmRyb2lkL21tcy9Db250ZW50VHlwZS5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvbW1zL0NvbnRlbnRUeXBlLmphdmEKQEAgLTI2LDYgKzI2LDcgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNTVNfR0VORVJJQyAgICAgICA9ICJhcHBsaWNhdGlvbi92bmQud2FwLm1tcy1nZW5lcmljIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNVUxUSVBBUlRfTUlYRUQgICA9ICJhcHBsaWNhdGlvbi92bmQud2FwLm11bHRpcGFydC5taXhlZCI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTVVMVElQQVJUX1JFTEFURUQgPSAiYXBwbGljYXRpb24vdm5kLndhcC5tdWx0aXBhcnQucmVsYXRlZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTVVMVElQQVJUX0FMVEVSTkFUSVZFID0gImFwcGxpY2F0aW9uL3ZuZC53YXAubXVsdGlwYXJ0LmFsdGVybmF0aXZlIjsKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRFWFRfUExBSU4gICAgICAgID0gInRleHQvcGxhaW4iOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRFWFRfSFRNTCAgICAgICAgID0gInRleHQvaHRtbCI7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2dvb2dsZS9hbmRyb2lkL21tcy9wZHUvUGR1UGFyc2VyLmphdmEgYi9jb3JlL2phdmEvY29tL2dvb2dsZS9hbmRyb2lkL21tcy9wZHUvUGR1UGFyc2VyLmphdmEKaW5kZXggZDQ2NWM1YS4uMWNkMTE4YiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9nb29nbGUvYW5kcm9pZC9tbXMvcGR1L1BkdVBhcnNlci5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvbW1zL3BkdS9QZHVQYXJzZXIuamF2YQpAQCAtMjAwLDcgKzIwMCwxOCBAQAogICAgICAgICBQZHVIZWFkZXJzIGhlYWRlcnMgPSBuZXcgUGR1SGVhZGVycygpOwogCiAgICAgICAgIHdoaWxlIChrZWVwUGFyc2luZyAmJiAocGR1RGF0YVN0cmVhbS5hdmFpbGFibGUoKSA+IDApKSB7CisgICAgICAgICAgICBwZHVEYXRhU3RyZWFtLm1hcmsoMSk7CiAgICAgICAgICAgICBpbnQgaGVhZGVyRmllbGQgPSBleHRyYWN0Qnl0ZVZhbHVlKHBkdURhdGFTdHJlYW0pOworICAgICAgICAgICAgLyogcGFyc2UgY3VzdG9tIHRleHQgaGVhZGVyICovCisgICAgICAgICAgICBpZiAoKGhlYWRlckZpZWxkID49IFRFWFRfTUlOKSAmJiAoaGVhZGVyRmllbGQgPD0gVEVYVF9NQVgpKSB7CisgICAgICAgICAgICAgICAgcGR1RGF0YVN0cmVhbS5yZXNldCgpOworICAgICAgICAgICAgICAgIGJ5dGUgW10gYlZhbCA9IHBhcnNlV2FwU3RyaW5nKHBkdURhdGFTdHJlYW0sIFRZUEVfVEVYVF9TVFJJTkcpOworICAgICAgICAgICAgICAgIGlmIChMT0NBTF9MT0dWKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy52KExPR19UQUcsICJUZXh0SGVhZGVyOiAiICsgbmV3IFN0cmluZyhiVmFsKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIHdlIHNob3VsZCBpZ25vcmUgaXQgYXQgdGhlIG1vbWVudCAqLworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChoZWFkZXJGaWVsZCkgewogICAgICAgICAgICAgICAgIGNhc2UgUGR1SGVhZGVycy5NRVNTQUdFX1RZUEU6CiAgICAgICAgICAgICAgICAgewpAQCAtNzc4LDI2ICs3ODksMzQgQEAKICAgICAgICAgICAgIC8qIGdldCBwYXJ0J3MgZGF0YSAqLwogICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgYnl0ZVtdIHBhcnREYXRhID0gbmV3IGJ5dGVbZGF0YUxlbmd0aF07CisgICAgICAgICAgICAgICAgU3RyaW5nIHBhcnRDb250ZW50VHlwZSA9IG5ldyBTdHJpbmcocGFydC5nZXRDb250ZW50VHlwZSgpKTsKICAgICAgICAgICAgICAgICBwZHVEYXRhU3RyZWFtLnJlYWQocGFydERhdGEsIDAsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgICAgIC8vIENoZWNrIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuCi0gICAgICAgICAgICAgICAgYnl0ZVtdIHBhcnREYXRhRW5jb2RpbmcgPSBwYXJ0LmdldENvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcGFydERhdGFFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSBuZXcgU3RyaW5nKHBhcnREYXRhRW5jb2RpbmcpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZW5jb2RpbmcuZXF1YWxzSWdub3JlQ2FzZShQZHVQYXJ0LlBfQkFTRTY0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVjb2RlICJiYXNlNjQiIGludG8gImJpbmFyeSIuCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0RGF0YSA9IEJhc2U2NC5kZWNvZGVCYXNlNjQocGFydERhdGEpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVuY29kaW5nLmVxdWFsc0lnbm9yZUNhc2UoUGR1UGFydC5QX1FVT1RFRF9QUklOVEFCTEUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNvZGUgInF1b3RlZC1wcmludGFibGUiIGludG8gImJpbmFyeSIuCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0RGF0YSA9IFF1b3RlZFByaW50YWJsZS5kZWNvZGVRdW90ZWRQcmludGFibGUocGFydERhdGEpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gImJpbmFyeSIgaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcuCisgICAgICAgICAgICAgICAgaWYgKHBhcnRDb250ZW50VHlwZS5lcXVhbHNJZ25vcmVDYXNlKENvbnRlbnRUeXBlLk1VTFRJUEFSVF9BTFRFUk5BVElWRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gcGFyc2UgIm11bHRpcGFydC92bmQud2FwLm11bHRpcGFydC5hbHRlcm5hdGl2ZSIuCisgICAgICAgICAgICAgICAgICAgIFBkdUJvZHkgY2hpbGRCb2R5ID0gcGFyc2VQYXJ0cyhuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0ocGFydERhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gdGFrZSB0aGUgZmlyc3QgcGFydCBvZiBjaGlsZHJlbi4KKyAgICAgICAgICAgICAgICAgICAgcGFydCA9IGNoaWxkQm9keS5nZXRQYXJ0KDApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuCisgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSBwYXJ0RGF0YUVuY29kaW5nID0gcGFydC5nZXRDb250ZW50VHJhbnNmZXJFbmNvZGluZygpOworICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwYXJ0RGF0YUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSBuZXcgU3RyaW5nKHBhcnREYXRhRW5jb2RpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuY29kaW5nLmVxdWFsc0lnbm9yZUNhc2UoUGR1UGFydC5QX0JBU0U2NCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNvZGUgImJhc2U2NCIgaW50byAiYmluYXJ5Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0RGF0YSA9IEJhc2U2NC5kZWNvZGVCYXNlNjQocGFydERhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbmNvZGluZy5lcXVhbHNJZ25vcmVDYXNlKFBkdVBhcnQuUF9RVU9URURfUFJJTlRBQkxFKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlY29kZSAicXVvdGVkLXByaW50YWJsZSIgaW50byAiYmluYXJ5Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0RGF0YSA9IFF1b3RlZFByaW50YWJsZS5kZWNvZGVRdW90ZWRQcmludGFibGUocGFydERhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiYmluYXJ5IiBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBwYXJ0RGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJEZWNvZGUgcGFydCBkYXRhIGVycm9yISIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFydC5zZXREYXRhKHBhcnREYXRhKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gcGFydERhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJEZWNvZGUgcGFydCBkYXRhIGVycm9yISIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFydC5zZXREYXRhKHBhcnREYXRhKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogYWRkIHRoaXMgcGFydCB0byBib2R5ICovCmRpZmYgLS1naXQgYS9jb3JlL2puaS9BbmRyb2lkLm1rIGIvY29yZS9qbmkvQW5kcm9pZC5tawppbmRleCBkZjFhYjllLi5hMDA4ZTk2IDEwMDY0NAotLS0gYS9jb3JlL2puaS9BbmRyb2lkLm1rCisrKyBiL2NvcmUvam5pL0FuZHJvaWQubWsKQEAgLTI4LDYgKzI4LDcgQEAKIAlUaW1lLmNwcCBcCiAJY29tX2dvb2dsZV9hbmRyb2lkX2dsZXNfam5pX0VHTEltcGwuY3BwIFwKIAljb21fZ29vZ2xlX2FuZHJvaWRfZ2xlc19qbmlfR0xJbXBsLmNwcC5hcm0gXAorCWFuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5LmNwcCBcCiAJYW5kcm9pZF9vcGVuZ2xfR0xFUzEwLmNwcCBcCiAJYW5kcm9pZF9vcGVuZ2xfR0xFUzEwRXh0LmNwcCBcCiAJYW5kcm9pZF9vcGVuZ2xfR0xFUzExLmNwcCBcCkBAIC00NCwxMiArNDUsMTcgQEAKIAlhbmRyb2lkX3ZpZXdfRGlzcGxheS5jcHAgXAogCWFuZHJvaWRfdmlld19TdXJmYWNlLmNwcCBcCiAJYW5kcm9pZF92aWV3X1ZpZXdSb290LmNwcCBcCisJYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5jcHAgXAorCWFuZHJvaWRfdmlld19JbnB1dFF1ZXVlLmNwcCBcCisJYW5kcm9pZF92aWV3X0tleUV2ZW50LmNwcCBcCisJYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmNwcCBcCiAJYW5kcm9pZF90ZXh0X0FuZHJvaWRDaGFyYWN0ZXIuY3BwIFwKIAlhbmRyb2lkX3RleHRfQW5kcm9pZEJpZGkuY3BwIFwKIAlhbmRyb2lkX3RleHRfS2V5Q2hhcmFjdGVyTWFwLmNwcCBcCiAJYW5kcm9pZF9vc19EZWJ1Zy5jcHAgXAogCWFuZHJvaWRfb3NfRmlsZVV0aWxzLmNwcCBcCiAJYW5kcm9pZF9vc19NZW1vcnlGaWxlLmNwcCBcCisJYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuY3BwIFwKIAlhbmRyb2lkX29zX1BhcmNlbEZpbGVEZXNjcmlwdG9yLmNwcCBcCiAJYW5kcm9pZF9vc19Qb3dlci5jcHAgXAogCWFuZHJvaWRfb3NfU3RhdEZzLmNwcCBcCkBAIC0xMjMsNyArMTI5LDYgQEAKIAlhbmRyb2lkX3NlcnZlcl9XYXRjaGRvZy5jcHAgXAogCWFuZHJvaWRfbWVzc2FnZV9kaWdlc3Rfc2hhMS5jcHAgXAogCWFuZHJvaWRfZGRtX0RkbUhhbmRsZU5hdGl2ZUhlYXAuY3BwIFwKLQlhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIuY3BwIFwKIAljb21fYW5kcm9pZF9pbnRlcm5hbF9vc19aeWdvdGVJbml0LmNwcCBcCiAJY29tX2FuZHJvaWRfaW50ZXJuYWxfZ3JhcGhpY3NfTmF0aXZlVXRpbHMuY3BwIFwKIAlhbmRyb2lkX2JhY2t1cF9CYWNrdXBEYXRhSW5wdXQuY3BwIFwKZGlmZiAtLWdpdCBhL2NvcmUvam5pL0FuZHJvaWRSdW50aW1lLmNwcCBiL2NvcmUvam5pL0FuZHJvaWRSdW50aW1lLmNwcAppbmRleCBkMzhkNzQ4Li42ZmIxMzY5IDEwMDY0NAotLS0gYS9jb3JlL2puaS9BbmRyb2lkUnVudGltZS5jcHAKKysrIGIvY29yZS9qbmkvQW5kcm9pZFJ1bnRpbWUuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9waW1fRXZlbnRSZWN1cnJlbmNlKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF90ZXh0X2Zvcm1hdF9UaW1lKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9vc19EZWJ1ZyhKTklFbnYqIGVudik7CitleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9vc19QYXJjZWxGaWxlRGVzY3JpcHRvcihKTklFbnYgKmVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfb3NfUG93ZXIoSk5JRW52ICplbnYpOwogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX29zX1N0YXRGcyhKTklFbnYgKmVudik7CkBAIC0xNTYsMTEgKzE1NywxNSBAQAogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9XYXRjaGRvZyhKTklFbnYqIGVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfZGRtX0RkbUhhbmRsZU5hdGl2ZUhlYXAoSk5JRW52ICplbnYpOwogZXh0ZXJuIGludCByZWdpc3Rlcl9jb21fYW5kcm9pZF9pbnRlcm5hbF9vc19aeWdvdGVJbml0KEpOSUVudiogZW52KTsKLWV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9iYWNrdXBfQmFja3VwRGF0YUlucHV0KEpOSUVudiAqZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9iYWNrdXBfQmFja3VwRGF0YU91dHB1dChKTklFbnYgKmVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfYmFja3VwX0ZpbGVCYWNrdXBIZWxwZXJCYXNlKEpOSUVudiAqZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9iYWNrdXBfQmFja3VwSGVscGVyRGlzcGF0Y2hlcihKTklFbnYgKmVudik7CitleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5KEpOSUVudiAqZW52KTsKK2V4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbChKTklFbnYqIGVudik7CitleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfdmlld19JbnB1dFF1ZXVlKEpOSUVudiogZW52KTsKK2V4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X0tleUV2ZW50KEpOSUVudiogZW52KTsKK2V4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50KEpOSUVudiogZW52KTsKIAogc3RhdGljIEFuZHJvaWRSdW50aW1lKiBnQ3VyUnVudGltZSA9IE5VTEw7CiAKQEAgLTExMzAsMTEgKzExMzUsMTMgQEAKICAqCiAgKiBUaGlzIGlzIGNhbGxlZCBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgbGlicmFyeS4KICAqLwotLypzdGF0aWMqLyB2b2lkIEFuZHJvaWRSdW50aW1lOjpjcmVhdGVKYXZhVGhyZWFkKGNvbnN0IGNoYXIqIG5hbWUsCisvKnN0YXRpYyovIGFuZHJvaWRfdGhyZWFkX2lkX3QgQW5kcm9pZFJ1bnRpbWU6OmNyZWF0ZUphdmFUaHJlYWQoY29uc3QgY2hhciogbmFtZSwKICAgICB2b2lkICgqc3RhcnQpKHZvaWQgKiksIHZvaWQqIGFyZykKIHsKKyAgICBhbmRyb2lkX3RocmVhZF9pZF90IHRocmVhZElkID0gMDsKICAgICBqYXZhQ3JlYXRlVGhyZWFkRXRjKChhbmRyb2lkX3RocmVhZF9mdW5jX3QpIHN0YXJ0LCBhcmcsIG5hbWUsCi0gICAgICAgIEFORFJPSURfUFJJT1JJVFlfREVGQVVMVCwgMCwgTlVMTCk7CisgICAgICAgIEFORFJPSURfUFJJT1JJVFlfREVGQVVMVCwgMCwgJnRocmVhZElkKTsKKyAgICByZXR1cm4gdGhyZWFkSWQ7CiB9CiAKICNpZiAwCkBAIC0xMjUwLDYgKzEyNTcsNyBAQAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9vc19EZWJ1ZyksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29zX0ZpbGVPYnNlcnZlciksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29zX0ZpbGVVdGlscyksCisgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29zX01lc3NhZ2VRdWV1ZSksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29zX1BhcmNlbEZpbGVEZXNjcmlwdG9yKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfb3NfUG93ZXIpLAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9vc19TdGF0RnMpLApAQCAtMTI4MCwxMSArMTI4OCwxNiBAQAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfV2F0Y2hkb2cpLAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9tZXNzYWdlX2RpZ2VzdF9zaGExKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfZGRtX0RkbUhhbmRsZU5hdGl2ZUhlYXApLAotICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfYmFja3VwX0JhY2t1cERhdGFJbnB1dCksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX2JhY2t1cF9CYWNrdXBEYXRhT3V0cHV0KSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfYmFja3VwX0ZpbGVCYWNrdXBIZWxwZXJCYXNlKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfYmFja3VwX0JhY2t1cEhlbHBlckRpc3BhdGNoZXIpLAorICAgIAorICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9hcHBfTmF0aXZlQWN0aXZpdHkpLAorICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbCksCisgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX3ZpZXdfSW5wdXRRdWV1ZSksCisgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX3ZpZXdfS2V5RXZlbnQpLAorICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50KSwKIH07CiAKIC8qCmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eS5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY2MWI4MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5LmNwcApAQCAtMCwwICsxLDQ5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiTmF0aXZlQWN0aXZpdHkiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDxwb2xsLmg+CisjaW5jbHVkZSA8ZGxmY24uaD4KKworI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oPgorI2luY2x1ZGUgPGFuZHJvaWQvbmF0aXZlX2FjdGl2aXR5Lmg+CisjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvU3VyZmFjZS5oPgorI2luY2x1ZGUgPHVpL2VnbC9hbmRyb2lkX25hdGl2ZXMuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dFRyYW5zcG9ydC5oPgorI2luY2x1ZGUgPHV0aWxzL1BvbGxMb29wLmg+CisKKyNpbmNsdWRlICJKTklIZWxwLmgiCisjaW5jbHVkZSAiYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuaCIKKyNpbmNsdWRlICJhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsLmgiCisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X0tleUV2ZW50LmgiCisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X1N1cmZhY2UuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQKK3sKKworc3RhdGljIHN0cnVjdCB7CisgICAgamNsYXNzIGNsYXp6OworCisgICAgam1ldGhvZElEIGRpc3BhdGNoVW5oYW5kbGVkS2V5RXZlbnQ7CisgICAgam1ldGhvZElEIHNldFdpbmRvd0ZsYWdzOworICAgIGptZXRob2RJRCBzZXRXaW5kb3dGb3JtYXQ7Cit9IGdOYXRpdmVBY3Rpdml0eUNsYXNzSW5mbzsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiBTcGVjaWFsaXplZCBpbnB1dCBxdWV1ZSB0aGF0IGFsbG93cyB1bmhhbmRsZWQga2V5IGV2ZW50cyB0byBiZSBkaXNwYXRjaGVkCisgKiBiYWNrIHRvIHRoZSBuYXRpdmUgYWN0aXZpdHkncyBKYXZhIGZyYW1ld29yayBjb2RlLgorICovCitzdHJ1Y3QgTXlJbnB1dFF1ZXVlIDogQUlucHV0UXVldWUgeworICAgIGV4cGxpY2l0IE15SW5wdXRRdWV1ZShjb25zdCBhbmRyb2lkOjpzcDxhbmRyb2lkOjpJbnB1dENoYW5uZWw+JiBjaGFubmVsLCBpbnQgd29ya1dyaXRlKQorICAgICAgICA6IEFJbnB1dFF1ZXVlKGNoYW5uZWwpLCBtV29ya1dyaXRlKHdvcmtXcml0ZSkgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZG9EZWZhdWx0S2V5KGFuZHJvaWQ6OktleUV2ZW50KiBrZXlFdmVudCkgeworICAgICAgICBtTG9jay5sb2NrKCk7CisgICAgICAgIExPR0koIkRlZmF1bHQga2V5OiBwZW5kaW5nPSVkIHdyaXRlPSVkXG4iLCBtUGVuZGluZ0tleXMuc2l6ZSgpLCBtV29ya1dyaXRlKTsKKyAgICAgICAgaWYgKG1QZW5kaW5nS2V5cy5zaXplKCkgPD0gMCAmJiBtV29ya1dyaXRlID49IDApIHsKKyAgICAgICAgICAgIGludDhfdCBjbWQgPSAxOworICAgICAgICAgICAgd3JpdGUobVdvcmtXcml0ZSwgJmNtZCwgc2l6ZW9mKGNtZCkpOworICAgICAgICB9CisgICAgICAgIG1QZW5kaW5nS2V5cy5hZGQoa2V5RXZlbnQpOworICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICB9CisgICAgCisgICAgS2V5RXZlbnQqIGdldE5leHRFdmVudCgpIHsKKyAgICAgICAgS2V5RXZlbnQqIGV2ZW50ID0gTlVMTDsKKyAgICAgICAgCisgICAgICAgIG1Mb2NrLmxvY2soKTsKKyAgICAgICAgaWYgKG1QZW5kaW5nS2V5cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBldmVudCA9IG1QZW5kaW5nS2V5c1swXTsKKyAgICAgICAgICAgIG1QZW5kaW5nS2V5cy5yZW1vdmVBdCgwKTsKKyAgICAgICAgfQorICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBldmVudDsKKyAgICB9CisgICAgCisgICAgaW50IG1Xb3JrV3JpdGU7CisgICAgCisgICAgTXV0ZXggbUxvY2s7CisgICAgVmVjdG9yPEtleUV2ZW50Kj4gbVBlbmRpbmdLZXlzOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiBOYXRpdmUgc3RhdGUgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIE5hdGl2ZUFjdGl2aXR5IGNsYXNzLgorICovCitzdHJ1Y3QgTmF0aXZlQ29kZSB7CisgICAgTmF0aXZlQ29kZSh2b2lkKiBfZGxoYW5kbGUsIEFOYXRpdmVBY3Rpdml0eV9jcmVhdGVGdW5jKiBfY3JlYXRlRnVuYykgeworICAgICAgICBtZW1zZXQoJmFjdGl2aXR5LCBzaXplb2YoYWN0aXZpdHkpLCAwKTsKKyAgICAgICAgbWVtc2V0KCZjYWxsYmFja3MsIHNpemVvZihjYWxsYmFja3MpLCAwKTsKKyAgICAgICAgZGxoYW5kbGUgPSBfZGxoYW5kbGU7CisgICAgICAgIGNyZWF0ZUFjdGl2aXR5RnVuYyA9IF9jcmVhdGVGdW5jOworICAgICAgICBuYXRpdmVXaW5kb3cgPSBOVUxMOworICAgICAgICBpbnB1dENoYW5uZWwgPSBOVUxMOworICAgICAgICBuYXRpdmVJbnB1dFF1ZXVlID0gTlVMTDsKKyAgICAgICAgbWFpbldvcmtSZWFkID0gbWFpbldvcmtXcml0ZSA9IC0xOworICAgIH0KKyAgICAKKyAgICB+TmF0aXZlQ29kZSgpIHsKKyAgICAgICAgaWYgKGFjdGl2aXR5LmVudiAhPSBOVUxMICYmIGFjdGl2aXR5LmNsYXp6ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGFjdGl2aXR5LmVudi0+RGVsZXRlR2xvYmFsUmVmKGFjdGl2aXR5LmNsYXp6KTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9sbExvb3AgIT0gTlVMTCAmJiBtYWluV29ya1JlYWQgPj0gMCkgeworICAgICAgICAgICAgcG9sbExvb3AtPnJlbW92ZUNhbGxiYWNrKG1haW5Xb3JrUmVhZCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5hdGl2ZUlucHV0UXVldWUgIT0gTlVMTCkgeworICAgICAgICAgICAgbmF0aXZlSW5wdXRRdWV1ZS0+bVdvcmtXcml0ZSA9IC0xOworICAgICAgICB9CisgICAgICAgIHNldFN1cmZhY2UoTlVMTCk7CisgICAgICAgIHNldElucHV0Q2hhbm5lbChOVUxMKTsKKyAgICAgICAgaWYgKGNhbGxiYWNrcy5vbkRlc3Ryb3kgIT0gTlVMTCkgeworICAgICAgICAgICAgY2FsbGJhY2tzLm9uRGVzdHJveSgmYWN0aXZpdHkpOworICAgICAgICB9CisgICAgICAgIGlmIChtYWluV29ya1JlYWQgPj0gMCkgY2xvc2UobWFpbldvcmtSZWFkKTsKKyAgICAgICAgaWYgKG1haW5Xb3JrV3JpdGUgPj0gMCkgY2xvc2UobWFpbldvcmtXcml0ZSk7CisgICAgICAgIGlmIChkbGhhbmRsZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvLyBmb3Igbm93IGRvbid0IHVubG9hZC4uLiAgd2UgcHJvYmFibHkgc2hvdWxkIGNsZWFuIHRoaXMKKyAgICAgICAgICAgIC8vIHVwIGFuZCBvbmx5IGtlZXAgb25lIG9wZW4gZGxoYW5kbGUgcGVyIHByb2MsIHNpbmNlIHRoZXJlCisgICAgICAgICAgICAvLyBpcyByZWFsbHkgbm8gYmVuZWZpdCB0byB1bmxvYWRpbmcgdGhlIGNvZGUuCisgICAgICAgICAgICAvL2RsY2xvc2UoZGxoYW5kbGUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0U3VyZmFjZShqb2JqZWN0IF9zdXJmYWNlKSB7CisgICAgICAgIGlmIChfc3VyZmFjZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBuYXRpdmVXaW5kb3cgPSBhbmRyb2lkX1N1cmZhY2VfZ2V0TmF0aXZlV2luZG93KGFjdGl2aXR5LmVudiwgX3N1cmZhY2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmF0aXZlV2luZG93ID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0dXNfdCBzZXRJbnB1dENoYW5uZWwoam9iamVjdCBfY2hhbm5lbCkgeworICAgICAgICBpZiAoaW5wdXRDaGFubmVsICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBuYXRpdmVJbnB1dFF1ZXVlOworICAgICAgICAgICAgYWN0aXZpdHkuZW52LT5EZWxldGVHbG9iYWxSZWYoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgfQorICAgICAgICBpbnB1dENoYW5uZWwgPSBOVUxMOworICAgICAgICBuYXRpdmVJbnB1dFF1ZXVlID0gTlVMTDsKKyAgICAgICAgaWYgKF9jaGFubmVsICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlucHV0Q2hhbm5lbCA9IGFjdGl2aXR5LmVudi0+TmV3R2xvYmFsUmVmKF9jaGFubmVsKTsKKyAgICAgICAgICAgIHNwPElucHV0Q2hhbm5lbD4gaWMgPQorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldElucHV0Q2hhbm5lbChhY3Rpdml0eS5lbnYsIF9jaGFubmVsKTsKKyAgICAgICAgICAgIGlmIChpYyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbmF0aXZlSW5wdXRRdWV1ZSA9IG5ldyBNeUlucHV0UXVldWUoaWMsIG1haW5Xb3JrV3JpdGUpOworICAgICAgICAgICAgICAgIGlmIChuYXRpdmVJbnB1dFF1ZXVlLT5nZXRDb25zdW1lcigpLmluaXRpYWxpemUoKSAhPSBhbmRyb2lkOjpPSykgeworICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmF0aXZlSW5wdXRRdWV1ZTsKKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW5wdXRRdWV1ZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0KKyAgICAKKyAgICBBTmF0aXZlQWN0aXZpdHkgYWN0aXZpdHk7CisgICAgQU5hdGl2ZUFjdGl2aXR5Q2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICAKKyAgICB2b2lkKiBkbGhhbmRsZTsKKyAgICBBTmF0aXZlQWN0aXZpdHlfY3JlYXRlRnVuYyogY3JlYXRlQWN0aXZpdHlGdW5jOworICAgIAorICAgIFN0cmluZzggaW50ZXJuYWxEYXRhUGF0aDsKKyAgICBTdHJpbmc4IGV4dGVybmFsRGF0YVBhdGg7CisgICAgCisgICAgc3A8QU5hdGl2ZVdpbmRvdz4gbmF0aXZlV2luZG93OworICAgIGpvYmplY3QgaW5wdXRDaGFubmVsOworICAgIHN0cnVjdCBNeUlucHV0UXVldWUqIG5hdGl2ZUlucHV0UXVldWU7CisgICAgCisgICAgLy8gVGhlc2UgYXJlIHVzZWQgdG8gd2FrZSB1cCB0aGUgbWFpbiB0aHJlYWQgdG8gcHJvY2VzcyB3b3JrLgorICAgIGludCBtYWluV29ya1JlYWQ7CisgICAgaW50IG1haW5Xb3JrV3JpdGU7CisgICAgc3A8UG9sbExvb3A+IHBvbGxMb29wOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiBDYWxsYmFjayBmb3IgaGFuZGxpbmcgbmF0aXZlIGV2ZW50cyBvbiB0aGUgYXBwbGljYXRpb24ncyBtYWluIHRocmVhZC4KKyAqLworc3RhdGljIGJvb2wgbWFpbldvcmtDYWxsYmFjayhpbnQgZmQsIGludCBldmVudHMsIHZvaWQqIGRhdGEpIHsKKyAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWRhdGE7CisgICAgaWYgKChldmVudHMgJiBQT0xMSU4pICE9IDApIHsKKyAgICAgICAgS2V5RXZlbnQqIGtleUV2ZW50OworICAgICAgICB3aGlsZSAoKGtleUV2ZW50PWNvZGUtPm5hdGl2ZUlucHV0UXVldWUtPmdldE5leHRFdmVudCgpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBqb2JqZWN0IGlucHV0RXZlbnRPYmogPSBhbmRyb2lkX3ZpZXdfS2V5RXZlbnRfZnJvbU5hdGl2ZSgKKyAgICAgICAgICAgICAgICAgICAgY29kZS0+YWN0aXZpdHkuZW52LCBrZXlFdmVudCk7CisgICAgICAgICAgICBjb2RlLT5hY3Rpdml0eS5lbnYtPkNhbGxWb2lkTWV0aG9kKGNvZGUtPmFjdGl2aXR5LmNsYXp6LAorICAgICAgICAgICAgICAgICAgICBnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uZGlzcGF0Y2hVbmhhbmRsZWRLZXlFdmVudCwgaW5wdXRFdmVudE9iaik7CisgICAgICAgICAgICBpbnQzMl90IHJlcyA9IGNvZGUtPm5hdGl2ZUlucHV0UXVldWUtPmdldENvbnN1bWVyKCkuc2VuZEZpbmlzaGVkU2lnbmFsKCk7CisgICAgICAgICAgICBpZiAocmVzICE9IE9LKSB7CisgICAgICAgICAgICAgICAgTE9HVygiRmFpbGVkIHRvIHNlbmQgZmluaXNoZWQgc2lnbmFsIG9uIGNoYW5uZWwgJyVzJy4gIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLT5uYXRpdmVJbnB1dFF1ZXVlLT5nZXRDb25zdW1lcigpLmdldENoYW5uZWwoKS0+Z2V0TmFtZSgpLnN0cmluZygpLCByZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIGppbnQKK2xvYWROYXRpdmVDb2RlX25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwganN0cmluZyBwYXRoLCBqb2JqZWN0IG1lc3NhZ2VRdWV1ZSwKKyAgICAgICAganN0cmluZyBpbnRlcm5hbERhdGFEaXIsIGpzdHJpbmcgZXh0ZXJuYWxEYXRhRGlyLCBpbnQgc2RrVmVyc2lvbikKK3sKKyAgICBjb25zdCBjaGFyKiBwYXRoU3RyID0gZW52LT5HZXRTdHJpbmdVVEZDaGFycyhwYXRoLCBOVUxMKTsKKyAgICBOYXRpdmVDb2RlKiBjb2RlID0gTlVMTDsKKyAgICAKKyAgICB2b2lkKiBoYW5kbGUgPSBkbG9wZW4ocGF0aFN0ciwgUlRMRF9MQVpZKTsKKyAgICAKKyAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhwYXRoLCBwYXRoU3RyKTsKKyAgICAKKyAgICBpZiAoaGFuZGxlICE9IE5VTEwpIHsKKyAgICAgICAgY29kZSA9IG5ldyBOYXRpdmVDb2RlKGhhbmRsZSwgKEFOYXRpdmVBY3Rpdml0eV9jcmVhdGVGdW5jKikKKyAgICAgICAgICAgICAgICBkbHN5bShoYW5kbGUsICJBTmF0aXZlQWN0aXZpdHlfb25DcmVhdGUiKSk7CisgICAgICAgIGlmIChjb2RlLT5jcmVhdGVBY3Rpdml0eUZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HVygiQU5hdGl2ZUFjdGl2aXR5X29uQ3JlYXRlIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgZGVsZXRlIGNvZGU7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY29kZS0+cG9sbExvb3AgPSBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9nZXRQb2xsTG9vcChlbnYsIG1lc3NhZ2VRdWV1ZSk7CisgICAgICAgIGlmIChjb2RlLT5wb2xsTG9vcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dXKCJVbmFibGUgdG8gcmV0cmlldmUgTWVzc2FnZVF1ZXVlJ3MgUG9sbExvb3AiKTsKKyAgICAgICAgICAgIGRlbGV0ZSBjb2RlOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBtc2dwaXBlWzJdOworICAgICAgICBpZiAocGlwZShtc2dwaXBlKSkgeworICAgICAgICAgICAgTE9HVygiY291bGQgbm90IGNyZWF0ZSBwaXBlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBkZWxldGUgY29kZTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGNvZGUtPm1haW5Xb3JrUmVhZCA9IG1zZ3BpcGVbMF07CisgICAgICAgIGNvZGUtPm1haW5Xb3JrV3JpdGUgPSBtc2dwaXBlWzFdOworICAgICAgICBjb2RlLT5wb2xsTG9vcC0+c2V0Q2FsbGJhY2soY29kZS0+bWFpbldvcmtSZWFkLCBQT0xMSU4sIG1haW5Xb3JrQ2FsbGJhY2ssIGNvZGUpOworICAgICAgICAKKyAgICAgICAgY29kZS0+YWN0aXZpdHkuY2FsbGJhY2tzID0gJmNvZGUtPmNhbGxiYWNrczsKKyAgICAgICAgaWYgKGVudi0+R2V0SmF2YVZNKCZjb2RlLT5hY3Rpdml0eS52bSkgPCAwKSB7CisgICAgICAgICAgICBMT0dXKCJOYXRpdmVBY3Rpdml0eSBHZXRKYXZhVk0gZmFpbGVkIik7CisgICAgICAgICAgICBkZWxldGUgY29kZTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGNvZGUtPmFjdGl2aXR5LmVudiA9IGVudjsKKyAgICAgICAgY29kZS0+YWN0aXZpdHkuY2xhenogPSBlbnYtPk5ld0dsb2JhbFJlZihjbGF6eik7CisgICAgICAgIAorICAgICAgICBjb25zdCBjaGFyKiBkaXJTdHIgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGludGVybmFsRGF0YURpciwgTlVMTCk7CisgICAgICAgIGNvZGUtPmludGVybmFsRGF0YVBhdGggPSBkaXJTdHI7CisgICAgICAgIGNvZGUtPmFjdGl2aXR5LmludGVybmFsRGF0YVBhdGggPSBjb2RlLT5pbnRlcm5hbERhdGFQYXRoLnN0cmluZygpOworICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhwYXRoLCBkaXJTdHIpOworICAgIAorICAgICAgICBkaXJTdHIgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGV4dGVybmFsRGF0YURpciwgTlVMTCk7CisgICAgICAgIGNvZGUtPmV4dGVybmFsRGF0YVBhdGggPSBkaXJTdHI7CisgICAgICAgIGNvZGUtPmFjdGl2aXR5LmV4dGVybmFsRGF0YVBhdGggPSBjb2RlLT5leHRlcm5hbERhdGFQYXRoLnN0cmluZygpOworICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhwYXRoLCBkaXJTdHIpOworICAgIAorICAgICAgICBjb2RlLT5hY3Rpdml0eS5zZGtWZXJzaW9uID0gc2RrVmVyc2lvbjsKKyAgICAgICAgCisgICAgICAgIGNvZGUtPmNyZWF0ZUFjdGl2aXR5RnVuYygmY29kZS0+YWN0aXZpdHksIE5VTEwsIDApOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gKGppbnQpY29kZTsKK30KKworc3RhdGljIHZvaWQKK3VubG9hZE5hdGl2ZUNvZGVfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlICE9IDApIHsKKyAgICAgICAgTmF0aXZlQ29kZSogY29kZSA9IChOYXRpdmVDb2RlKiloYW5kbGU7CisgICAgICAgIGRlbGV0ZSBjb2RlOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uU3RhcnRfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlICE9IDApIHsKKyAgICAgICAgTmF0aXZlQ29kZSogY29kZSA9IChOYXRpdmVDb2RlKiloYW5kbGU7CisgICAgICAgIGlmIChjb2RlLT5jYWxsYmFja3Mub25TdGFydCAhPSBOVUxMKSB7CisgICAgICAgICAgICBjb2RlLT5jYWxsYmFja3Mub25TdGFydCgmY29kZS0+YWN0aXZpdHkpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorb25SZXN1bWVfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlICE9IDApIHsKKyAgICAgICAgTmF0aXZlQ29kZSogY29kZSA9IChOYXRpdmVDb2RlKiloYW5kbGU7CisgICAgICAgIGlmIChjb2RlLT5jYWxsYmFja3Mub25SZXN1bWUgIT0gTlVMTCkgeworICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uUmVzdW1lKCZjb2RlLT5hY3Rpdml0eSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvblNhdmVJbnN0YW5jZVN0YXRlX25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBpZiAoY29kZS0+Y2FsbGJhY2tzLm9uU2F2ZUluc3RhbmNlU3RhdGUgIT0gTlVMTCkgeworICAgICAgICAgICAgc2l6ZV90IGxlbiA9IDA7CisgICAgICAgICAgICBjb2RlLT5jYWxsYmFja3Mub25TYXZlSW5zdGFuY2VTdGF0ZSgmY29kZS0+YWN0aXZpdHksICZsZW4pOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorb25QYXVzZV9uYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGppbnQgaGFuZGxlKQoreworICAgIGlmIChoYW5kbGUgIT0gMCkgeworICAgICAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWhhbmRsZTsKKyAgICAgICAgaWYgKGNvZGUtPmNhbGxiYWNrcy5vblBhdXNlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGNvZGUtPmNhbGxiYWNrcy5vblBhdXNlKCZjb2RlLT5hY3Rpdml0eSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvblN0b3BfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlICE9IDApIHsKKyAgICAgICAgTmF0aXZlQ29kZSogY29kZSA9IChOYXRpdmVDb2RlKiloYW5kbGU7CisgICAgICAgIGlmIChjb2RlLT5jYWxsYmFja3Mub25TdG9wICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGNvZGUtPmNhbGxiYWNrcy5vblN0b3AoJmNvZGUtPmFjdGl2aXR5KTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uTG93TWVtb3J5X25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBpZiAoY29kZS0+Y2FsbGJhY2tzLm9uTG93TWVtb3J5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGNvZGUtPmNhbGxiYWNrcy5vbkxvd01lbW9yeSgmY29kZS0+YWN0aXZpdHkpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorb25XaW5kb3dGb2N1c0NoYW5nZWRfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSwgamJvb2xlYW4gZm9jdXNlZCkKK3sKKyAgICBpZiAoaGFuZGxlICE9IDApIHsKKyAgICAgICAgTmF0aXZlQ29kZSogY29kZSA9IChOYXRpdmVDb2RlKiloYW5kbGU7CisgICAgICAgIGlmIChjb2RlLT5jYWxsYmFja3Mub25XaW5kb3dGb2N1c0NoYW5nZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uV2luZG93Rm9jdXNDaGFuZ2VkKCZjb2RlLT5hY3Rpdml0eSwgZm9jdXNlZCA/IDEgOiAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uU3VyZmFjZUNyZWF0ZWRfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSwgam9iamVjdCBzdXJmYWNlKQoreworICAgIGlmIChoYW5kbGUgIT0gMCkgeworICAgICAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWhhbmRsZTsKKyAgICAgICAgY29kZS0+c2V0U3VyZmFjZShzdXJmYWNlKTsKKyAgICAgICAgaWYgKGNvZGUtPm5hdGl2ZVdpbmRvdyAhPSBOVUxMICYmIGNvZGUtPmNhbGxiYWNrcy5vbk5hdGl2ZVdpbmRvd0NyZWF0ZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uTmF0aXZlV2luZG93Q3JlYXRlZCgmY29kZS0+YWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgIGNvZGUtPm5hdGl2ZVdpbmRvdy5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvblN1cmZhY2VDaGFuZ2VkX25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUsIGpvYmplY3Qgc3VyZmFjZSwKKyAgICAgICAgamludCBmb3JtYXQsIGppbnQgd2lkdGgsIGppbnQgaGVpZ2h0KQoreworICAgIGlmIChoYW5kbGUgIT0gMCkgeworICAgICAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWhhbmRsZTsKKyAgICAgICAgc3A8QU5hdGl2ZVdpbmRvdz4gb2xkTmF0aXZlV2luZG93ID0gY29kZS0+bmF0aXZlV2luZG93OworICAgICAgICBjb2RlLT5zZXRTdXJmYWNlKHN1cmZhY2UpOworICAgICAgICBpZiAob2xkTmF0aXZlV2luZG93ICE9IGNvZGUtPm5hdGl2ZVdpbmRvdykgeworICAgICAgICAgICAgaWYgKG9sZE5hdGl2ZVdpbmRvdyAhPSBOVUxMICYmIGNvZGUtPmNhbGxiYWNrcy5vbk5hdGl2ZVdpbmRvd0Rlc3Ryb3llZCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uTmF0aXZlV2luZG93RGVzdHJveWVkKCZjb2RlLT5hY3Rpdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZE5hdGl2ZVdpbmRvdy5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29kZS0+bmF0aXZlV2luZG93ICE9IE5VTEwgJiYgY29kZS0+Y2FsbGJhY2tzLm9uTmF0aXZlV2luZG93Q3JlYXRlZCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uTmF0aXZlV2luZG93Q3JlYXRlZCgmY29kZS0+YWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLT5uYXRpdmVXaW5kb3cuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorb25TdXJmYWNlRGVzdHJveWVkX25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUsIGpvYmplY3Qgc3VyZmFjZSkKK3sKKyAgICBpZiAoaGFuZGxlICE9IDApIHsKKyAgICAgICAgTmF0aXZlQ29kZSogY29kZSA9IChOYXRpdmVDb2RlKiloYW5kbGU7CisgICAgICAgIGlmIChjb2RlLT5uYXRpdmVXaW5kb3cgIT0gTlVMTCAmJiBjb2RlLT5jYWxsYmFja3Mub25OYXRpdmVXaW5kb3dEZXN0cm95ZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uTmF0aXZlV2luZG93RGVzdHJveWVkKCZjb2RlLT5hY3Rpdml0eSwKKyAgICAgICAgICAgICAgICAgICAgY29kZS0+bmF0aXZlV2luZG93LmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICBjb2RlLT5zZXRTdXJmYWNlKE5VTEwpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uSW5wdXRDaGFubmVsQ3JlYXRlZF9uYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGppbnQgaGFuZGxlLCBqb2JqZWN0IGNoYW5uZWwpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBzdGF0dXNfdCBlcnIgPSBjb2RlLT5zZXRJbnB1dENoYW5uZWwoY2hhbm5lbCk7CisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAiRXJyb3Igc2V0dGluZyBpbnB1dCBjaGFubmVsIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGUtPmNhbGxiYWNrcy5vbklucHV0UXVldWVDcmVhdGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGNvZGUtPmNhbGxiYWNrcy5vbklucHV0UXVldWVDcmVhdGVkKCZjb2RlLT5hY3Rpdml0eSwKKyAgICAgICAgICAgICAgICAgICAgY29kZS0+bmF0aXZlSW5wdXRRdWV1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvbklucHV0Q2hhbm5lbERlc3Ryb3llZF9uYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGppbnQgaGFuZGxlLCBqb2JqZWN0IGNoYW5uZWwpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBpZiAoY29kZS0+bmF0aXZlSW5wdXRRdWV1ZSAhPSBOVUxMCisgICAgICAgICAgICAgICAgJiYgY29kZS0+Y2FsbGJhY2tzLm9uSW5wdXRRdWV1ZURlc3Ryb3llZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBjb2RlLT5jYWxsYmFja3Mub25JbnB1dFF1ZXVlRGVzdHJveWVkKCZjb2RlLT5hY3Rpdml0eSwKKyAgICAgICAgICAgICAgICAgICAgY29kZS0+bmF0aXZlSW5wdXRRdWV1ZSk7CisgICAgICAgIH0KKyAgICAgICAgY29kZS0+c2V0SW5wdXRDaGFubmVsKE5VTEwpOworICAgIH0KK30KKworc3RhdGljIGNvbnN0IEpOSU5hdGl2ZU1ldGhvZCBnX21ldGhvZHNbXSA9IHsKKyAgICB7ICJsb2FkTmF0aXZlQ29kZSIsICIoTGphdmEvbGFuZy9TdHJpbmc7TGFuZHJvaWQvb3MvTWVzc2FnZVF1ZXVlO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0kpSSIsCisgICAgICAgICAgICAodm9pZCopbG9hZE5hdGl2ZUNvZGVfbmF0aXZlIH0sCisgICAgeyAidW5sb2FkTmF0aXZlQ29kZSIsICIoSSlWIiwgKHZvaWQqKXVubG9hZE5hdGl2ZUNvZGVfbmF0aXZlIH0sCisgICAgeyAib25TdGFydE5hdGl2ZSIsICIoSSlWIiwgKHZvaWQqKW9uU3RhcnRfbmF0aXZlIH0sCisgICAgeyAib25SZXN1bWVOYXRpdmUiLCAiKEkpViIsICh2b2lkKilvblJlc3VtZV9uYXRpdmUgfSwKKyAgICB7ICJvblNhdmVJbnN0YW5jZVN0YXRlTmF0aXZlIiwgIihJKVYiLCAodm9pZCopb25TYXZlSW5zdGFuY2VTdGF0ZV9uYXRpdmUgfSwKKyAgICB7ICJvblBhdXNlTmF0aXZlIiwgIihJKVYiLCAodm9pZCopb25QYXVzZV9uYXRpdmUgfSwKKyAgICB7ICJvblN0b3BOYXRpdmUiLCAiKEkpViIsICh2b2lkKilvblN0b3BfbmF0aXZlIH0sCisgICAgeyAib25Mb3dNZW1vcnlOYXRpdmUiLCAiKEkpViIsICh2b2lkKilvbkxvd01lbW9yeV9uYXRpdmUgfSwKKyAgICB7ICJvbldpbmRvd0ZvY3VzQ2hhbmdlZE5hdGl2ZSIsICIoSVopViIsICh2b2lkKilvbldpbmRvd0ZvY3VzQ2hhbmdlZF9uYXRpdmUgfSwKKyAgICB7ICJvblN1cmZhY2VDcmVhdGVkTmF0aXZlIiwgIihJTGFuZHJvaWQvdmlldy9TdXJmYWNlOylWIiwgKHZvaWQqKW9uU3VyZmFjZUNyZWF0ZWRfbmF0aXZlIH0sCisgICAgeyAib25TdXJmYWNlQ2hhbmdlZE5hdGl2ZSIsICIoSUxhbmRyb2lkL3ZpZXcvU3VyZmFjZTtJSUkpViIsICh2b2lkKilvblN1cmZhY2VDaGFuZ2VkX25hdGl2ZSB9LAorICAgIHsgIm9uU3VyZmFjZURlc3Ryb3llZE5hdGl2ZSIsICIoSSlWIiwgKHZvaWQqKW9uU3VyZmFjZURlc3Ryb3llZF9uYXRpdmUgfSwKKyAgICB7ICJvbklucHV0Q2hhbm5lbENyZWF0ZWROYXRpdmUiLCAiKElMYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbDspViIsICh2b2lkKilvbklucHV0Q2hhbm5lbENyZWF0ZWRfbmF0aXZlIH0sCisgICAgeyAib25JbnB1dENoYW5uZWxEZXN0cm95ZWROYXRpdmUiLCAiKElMYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbDspViIsICh2b2lkKilvbklucHV0Q2hhbm5lbERlc3Ryb3llZF9uYXRpdmUgfSwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrTmF0aXZlQWN0aXZpdHlQYXRoTmFtZSA9ICJhbmRyb2lkL2FwcC9OYXRpdmVBY3Rpdml0eSI7CisKKyNkZWZpbmUgRklORF9DTEFTUyh2YXIsIGNsYXNzTmFtZSkgXAorICAgICAgICB2YXIgPSBlbnYtPkZpbmRDbGFzcyhjbGFzc05hbWUpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIGNsYXNzICIgY2xhc3NOYW1lKTsgXAorICAgICAgICB2YXIgPSBqY2xhc3MoZW52LT5OZXdHbG9iYWxSZWYodmFyKSk7CisKKyNkZWZpbmUgR0VUX01FVEhPRF9JRCh2YXIsIGNsYXp6LCBtZXRob2ROYW1lLCBmaWVsZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgbWV0aG9kTmFtZSwgZmllbGREZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBtZXRob2QiIG1ldGhvZE5hbWUpOworICAgICAgICAKK2ludCByZWdpc3Rlcl9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eShKTklFbnYqIGVudikKK3sKKyAgICAvL0xPR0QoInJlZ2lzdGVyX2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5Iik7CisKKyAgICBGSU5EX0NMQVNTKGdOYXRpdmVBY3Rpdml0eUNsYXNzSW5mby5jbGF6eiwga05hdGl2ZUFjdGl2aXR5UGF0aE5hbWUpOworICAgIAorICAgIEdFVF9NRVRIT0RfSUQoZ05hdGl2ZUFjdGl2aXR5Q2xhc3NJbmZvLmRpc3BhdGNoVW5oYW5kbGVkS2V5RXZlbnQsCisgICAgICAgICAgICBnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiZGlzcGF0Y2hVbmhhbmRsZWRLZXlFdmVudCIsICIoTGFuZHJvaWQvdmlldy9LZXlFdmVudDspViIpOworCisgICAgR0VUX01FVEhPRF9JRChnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uc2V0V2luZG93RmxhZ3MsCisgICAgICAgICAgICBnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAic2V0V2luZG93RmxhZ3MiLCAiKElJKVYiKTsKKyAgICBHRVRfTUVUSE9EX0lEKGdOYXRpdmVBY3Rpdml0eUNsYXNzSW5mby5zZXRXaW5kb3dGb3JtYXQsCisgICAgICAgICAgICBnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAic2V0V2luZG93Rm9ybWF0IiwgIihJKVYiKTsKKworICAgIHJldHVybiBBbmRyb2lkUnVudGltZTo6cmVnaXN0ZXJOYXRpdmVNZXRob2RzKAorICAgICAgICBlbnYsIGtOYXRpdmVBY3Rpdml0eVBhdGhOYW1lLAorICAgICAgICBnX21ldGhvZHMsIE5FTEVNKGdfbWV0aG9kcykpOworfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX2JsdWV0b290aF9IZWFkc2V0QmFzZS5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX2JsdWV0b290aF9IZWFkc2V0QmFzZS5jcHAKaW5kZXggM2YxNGMzYS4uNGU5ZmJhZiAxMDA2NDQKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF9ibHVldG9vdGhfSGVhZHNldEJhc2UuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfYmx1ZXRvb3RoX0hlYWRzZXRCYXNlLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgLy8gbmV2ZXIgcmVjZWl2ZSBub24tQVNDSUkgVVRGLTgpLgogICAgIC8vIFRoaXMgd2FzIGFkZGVkIGJlY2F1c2Ugb2YgdGhlIEJNVyAyMDA1IEU0NiB3aGljaCBzZW5kcyBiaW5hcnkganVuay4KICAgICBpZiAoaXNfYXNjaWkoYnVmKSkgewotICAgICAgICBJRl9MT0dWKCkgTE9HKExPR19WRVJCT1NFLCAiQmx1ZXRvb3RoIEFUIHJlY3YiLCBidWYpOworICAgICAgICBJRl9MT0dWKCkgTE9HKExPR19WRVJCT1NFLCAiQmx1ZXRvb3RoIEFUIHJlY3YiLCAiJXMiLCBidWYpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExPR1coIklnbm9yaW5nIGludmFsaWQgQVQgY29tbWFuZDogJXMiLCBidWYpOwogICAgICAgICBidWZbMF0gPSBOVUxMOwpAQCAtNDk0LDcgKzQ5NCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgSUZfTE9HVigpIExPRyhMT0dfVkVSQk9TRSwgIkJsdWV0b290aCBBVCBzZW50IiwgYnVmKTsKKyAgICBJRl9MT0dWKCkgTE9HKExPR19WRVJCT1NFLCAiQmx1ZXRvb3RoIEFUIHNlbnQiLCAiJXMiLCBidWYpOwogCiAgICAgZnJlZShidWYpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9ibHVldG9vdGhfY29tbW9uLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfYmx1ZXRvb3RoX2NvbW1vbi5jcHAKaW5kZXggMzQzZmE1My4uOWE4ZjFiOCAxMDA2NDQKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF9ibHVldG9vdGhfY29tbW9uLmNwcAorKysgYi9jb3JlL2puaS9hbmRyb2lkX2JsdWV0b290aF9jb21tb24uY3BwCkBAIC02NSw2ICs2NSw3IEBACiAgICAgeyJQYWlyYWJsZVRpbWVvdXQiLCBEQlVTX1RZUEVfVUlOVDMyfSwKICAgICB7IkRpc2NvdmVyaW5nIiwgREJVU19UWVBFX0JPT0xFQU59LAogICAgIHsiRGV2aWNlcyIsIERCVVNfVFlQRV9BUlJBWX0sCisgICAgeyJVVUlEcyIsIERCVVNfVFlQRV9BUlJBWX0sCiB9OwogCiB0eXBlZGVmIHVuaW9uIHsKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhLmNwcAppbmRleCBiODU0NjZiLi5jNzg0OTc0IDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX2hhcmR3YXJlX0NhbWVyYS5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF9oYXJkd2FyZV9DYW1lcmEuY3BwCkBAIC0zNCw2ICszNCw4IEBACiBzdHJ1Y3QgZmllbGRzX3QgewogICAgIGpmaWVsZElEICAgIGNvbnRleHQ7CiAgICAgamZpZWxkSUQgICAgc3VyZmFjZTsKKyAgICBqZmllbGRJRCAgICBmYWNpbmc7CisgICAgamZpZWxkSUQgICAgb3JpZW50YXRpb247CiAgICAgam1ldGhvZElEICAgcG9zdF9ldmVudDsKIH07CiAKQEAgLTI4OCwxMCArMjkwLDMwIEBACiAgICAgfQogfQogCi0vLyBjb25uZWN0IHRvIGNhbWVyYSBzZXJ2aWNlCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2hhcmR3YXJlX0NhbWVyYV9uYXRpdmVfc2V0dXAoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwgam9iamVjdCB3ZWFrX3RoaXMpCitzdGF0aWMgamludCBhbmRyb2lkX2hhcmR3YXJlX0NhbWVyYV9nZXROdW1iZXJPZkNhbWVyYXMoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeikKIHsKLSAgICBzcDxDYW1lcmE+IGNhbWVyYSA9IENhbWVyYTo6Y29ubmVjdCgpOworICAgIHJldHVybiBDYW1lcmE6OmdldE51bWJlck9mQ2FtZXJhcygpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2hhcmR3YXJlX0NhbWVyYV9nZXRDYW1lcmFJbmZvKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosCisgICAgamludCBjYW1lcmFJZCwgam9iamVjdCBpbmZvX29iaikKK3sKKyAgICBDYW1lcmFJbmZvIGNhbWVyYUluZm87CisgICAgc3RhdHVzX3QgcmMgPSBDYW1lcmE6OmdldENhbWVyYUluZm8oY2FtZXJhSWQsICZjYW1lcmFJbmZvKTsKKyAgICBpZiAocmMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL1J1bnRpbWVFeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbCB0byBnZXQgY2FtZXJhIGluZm8iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbnYtPlNldEludEZpZWxkKGluZm9fb2JqLCBmaWVsZHMuZmFjaW5nLCBjYW1lcmFJbmZvLmZhY2luZyk7CisgICAgZW52LT5TZXRJbnRGaWVsZChpbmZvX29iaiwgZmllbGRzLm9yaWVudGF0aW9uLCBjYW1lcmFJbmZvLm9yaWVudGF0aW9uKTsKK30KKworLy8gY29ubmVjdCB0byBjYW1lcmEgc2VydmljZQorc3RhdGljIHZvaWQgYW5kcm9pZF9oYXJkd2FyZV9DYW1lcmFfbmF0aXZlX3NldHVwKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosCisgICAgam9iamVjdCB3ZWFrX3RoaXMsIGppbnQgY2FtZXJhSWQpCit7CisgICAgc3A8Q2FtZXJhPiBjYW1lcmEgPSBDYW1lcmE6OmNvbm5lY3QoY2FtZXJhSWQpOwogCiAgICAgaWYgKGNhbWVyYSA9PSBOVUxMKSB7CiAgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9SdW50aW1lRXhjZXB0aW9uIiwKQEAgLTU2Niw4ICs1ODgsMTQgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGNhbU1ldGhvZHNbXSA9IHsKKyAgeyAiZ2V0TnVtYmVyT2ZDYW1lcmFzIiwKKyAgICAiKClJIiwKKyAgICAodm9pZCAqKWFuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhX2dldE51bWJlck9mQ2FtZXJhcyB9LAorICB7ICJnZXRDYW1lcmFJbmZvIiwKKyAgICAiKElMYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEkQ2FtZXJhSW5mbzspViIsCisgICAgKHZvaWQqKWFuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhX2dldENhbWVyYUluZm8gfSwKICAgeyAibmF0aXZlX3NldHVwIiwKLSAgICAiKExqYXZhL2xhbmcvT2JqZWN0OylWIiwKKyAgICAiKExqYXZhL2xhbmcvT2JqZWN0O0kpViIsCiAgICAgKHZvaWQqKWFuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhX25hdGl2ZV9zZXR1cCB9LAogICB7ICJuYXRpdmVfcmVsZWFzZSIsCiAgICAgIigpViIsCkBAIC02NTksNyArNjg3LDkgQEAKIHsKICAgICBmaWVsZCBmaWVsZHNfdG9fZmluZFtdID0gewogICAgICAgICB7ICJhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSIsICJtTmF0aXZlQ29udGV4dCIsICAgIkkiLCAmZmllbGRzLmNvbnRleHQgfSwKLSAgICAgICAgeyAiYW5kcm9pZC92aWV3L1N1cmZhY2UiLCAgICAibVN1cmZhY2UiLCAgICAgICAgICJJIiwgJmZpZWxkcy5zdXJmYWNlIH0KKyAgICAgICAgeyAiYW5kcm9pZC92aWV3L1N1cmZhY2UiLCAgICBBTkRST0lEX1ZJRVdfU1VSRkFDRV9KTklfSUQsICJJIiwgJmZpZWxkcy5zdXJmYWNlIH0sCisgICAgICAgIHsgImFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJENhbWVyYUluZm8iLCAibUZhY2luZyIsICAgIkkiLCAmZmllbGRzLmZhY2luZyB9LAorICAgICAgICB7ICJhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRDYW1lcmFJbmZvIiwgIm1PcmllbnRhdGlvbiIsICAgIkkiLCAmZmllbGRzLm9yaWVudGF0aW9uIH0sCiAgICAgfTsKIAogICAgIGlmIChmaW5kX2ZpZWxkcyhlbnYsIGZpZWxkc190b19maW5kLCBORUxFTShmaWVsZHNfdG9fZmluZCkpIDwgMCkKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlci5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmNjBmZTZkLi4wMDAwMDAwCi0tLSBhL2NvcmUvam5pL2FuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNkZWZpbmUgTE9HX1RBRyAiR3BzTG9jYXRpb25Qcm92aWRlciIKLQotLy8jZGVmaW5lIExPR19ORERFQlVHIDAKLQotI2luY2x1ZGUgIkpOSUhlbHAuaCIKLSNpbmNsdWRlICJqbmkuaCIKLSNpbmNsdWRlICJoYXJkd2FyZV9sZWdhY3kvZ3BzLmgiCi0jaW5jbHVkZSAiaGFyZHdhcmVfbGVnYWN5L2dwc19uaS5oIgotI2luY2x1ZGUgInV0aWxzL0xvZy5oIgotI2luY2x1ZGUgInV0aWxzL21pc2MuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBzRXZlbnRNdXRleCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7Ci1zdGF0aWMgcHRocmVhZF9jb25kX3Qgc0V2ZW50Q29uZCA9IFBUSFJFQURfQ09ORF9JTklUSUFMSVpFUjsKLXN0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3JlcG9ydExvY2F0aW9uOwotc3RhdGljIGptZXRob2RJRCBtZXRob2RfcmVwb3J0U3RhdHVzOwotc3RhdGljIGptZXRob2RJRCBtZXRob2RfcmVwb3J0U3ZTdGF0dXM7Ci1zdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnRBR3BzU3RhdHVzOwotc3RhdGljIGptZXRob2RJRCBtZXRob2RfcmVwb3J0Tm1lYTsKLXN0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3h0cmFEb3dubG9hZFJlcXVlc3Q7Ci1zdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnROaU5vdGlmaWNhdGlvbjsKLQotc3RhdGljIGNvbnN0IEdwc0ludGVyZmFjZSogc0dwc0ludGVyZmFjZSA9IE5VTEw7Ci1zdGF0aWMgY29uc3QgR3BzWHRyYUludGVyZmFjZSogc0dwc1h0cmFJbnRlcmZhY2UgPSBOVUxMOwotc3RhdGljIGNvbnN0IEFHcHNJbnRlcmZhY2UqIHNBR3BzSW50ZXJmYWNlID0gTlVMTDsKLXN0YXRpYyBjb25zdCBHcHNQcml2YWN5SW50ZXJmYWNlKiBzR3BzUHJpdmFjeUludGVyZmFjZSA9IE5VTEw7Ci1zdGF0aWMgY29uc3QgR3BzTmlJbnRlcmZhY2UqIHNHcHNOaUludGVyZmFjZSA9IE5VTEw7Ci1zdGF0aWMgY29uc3QgR3BzRGVidWdJbnRlcmZhY2UqIHNHcHNEZWJ1Z0ludGVyZmFjZSA9IE5VTEw7Ci0KLS8vIGRhdGEgd3JpdHRlbiB0byBieSBHUFMgY2FsbGJhY2tzCi1zdGF0aWMgR3BzTG9jYXRpb24gIHNHcHNMb2NhdGlvbjsKLXN0YXRpYyBHcHNTdGF0dXMgICAgc0dwc1N0YXR1czsKLXN0YXRpYyBHcHNTdlN0YXR1cyAgc0dwc1N2U3RhdHVzOwotc3RhdGljIEFHcHNTdGF0dXMgICBzQUdwc1N0YXR1czsKLXN0YXRpYyBHcHNOaU5vdGlmaWNhdGlvbiAgc0dwc05pTm90aWZpY2F0aW9uOwotCi0vLyBidWZmZXIgZm9yIE5NRUEgZGF0YQotI2RlZmluZSBOTUVBX1NFTlRFTkNFX0xFTkdUSCAgICAxMDAKLSNkZWZpbmUgTk1FQV9TRU5URU5DRV9DT1VOVCAgICAgNDAKLXN0cnVjdCBObWVhU2VudGVuY2UgewotICAgIEdwc1V0Y1RpbWUgIHRpbWVzdGFtcDsKLSAgICBjaGFyICAgICAgICBubWVhW05NRUFfU0VOVEVOQ0VfTEVOR1RIXTsKLX07Ci1zdGF0aWMgTm1lYVNlbnRlbmNlIHNObWVhQnVmZmVyW05NRUFfU0VOVEVOQ0VfQ09VTlRdOwotc3RhdGljIGludCBtTm1lYVNlbnRlbmNlQ291bnQgPSAwOwotCi0vLyBhIGNvcHkgb2YgdGhlIGRhdGEgc2hhcmVkIGJ5IGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl93YWl0X2Zvcl9ldmVudAotLy8gYW5kIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9yZWFkX3N0YXR1cwotc3RhdGljIEdwc0xvY2F0aW9uICBzR3BzTG9jYXRpb25Db3B5Owotc3RhdGljIEdwc1N0YXR1cyAgICBzR3BzU3RhdHVzQ29weTsKLXN0YXRpYyBHcHNTdlN0YXR1cyAgc0dwc1N2U3RhdHVzQ29weTsKLXN0YXRpYyBBR3BzU3RhdHVzICAgc0FHcHNTdGF0dXNDb3B5Owotc3RhdGljIE5tZWFTZW50ZW5jZSBzTm1lYUJ1ZmZlckNvcHlbTk1FQV9TRU5URU5DRV9DT1VOVF07Ci1zdGF0aWMgR3BzTmlOb3RpZmljYXRpb24gIHNHcHNOaU5vdGlmaWNhdGlvbkNvcHk7Ci0KLWVudW0gQ2FsbGJhY2tUeXBlIHsKLSAgICBrTG9jYXRpb24gPSAxLAotICAgIGtTdGF0dXMgPSAyLAotICAgIGtTdlN0YXR1cyA9IDQsCi0gICAga0FHcHNTdGF0dXMgPSA4LAotICAgIGtYdHJhRG93bmxvYWRSZXF1ZXN0ID0gMTYsCi0gICAga0Rpc2FibGVSZXF1ZXN0ID0gMzIsCi0gICAga05tZWFBdmFpbGFibGUgPSA2NCwKLSAgICBrTmlOb3RpZmljYXRpb24gPSAxMjgsCi19OyAKLXN0YXRpYyBpbnQgc1BlbmRpbmdDYWxsYmFja3M7Ci0KLW5hbWVzcGFjZSBhbmRyb2lkIHsKLQotc3RhdGljIHZvaWQgbG9jYXRpb25fY2FsbGJhY2soR3BzTG9jYXRpb24qIGxvY2F0aW9uKQotewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmc0V2ZW50TXV0ZXgpOwotCi0gICAgc1BlbmRpbmdDYWxsYmFja3MgfD0ga0xvY2F0aW9uOwotICAgIG1lbWNweSgmc0dwc0xvY2F0aW9uLCBsb2NhdGlvbiwgc2l6ZW9mKHNHcHNMb2NhdGlvbikpOwotCi0gICAgcHRocmVhZF9jb25kX3NpZ25hbCgmc0V2ZW50Q29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLX0KLQotc3RhdGljIHZvaWQgc3RhdHVzX2NhbGxiYWNrKEdwc1N0YXR1cyogc3RhdHVzKQotewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmc0V2ZW50TXV0ZXgpOwotCi0gICAgc1BlbmRpbmdDYWxsYmFja3MgfD0ga1N0YXR1czsKLSAgICBtZW1jcHkoJnNHcHNTdGF0dXMsIHN0YXR1cywgc2l6ZW9mKHNHcHNTdGF0dXMpKTsKLQotICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJnNFdmVudENvbmQpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzRXZlbnRNdXRleCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN2X3N0YXR1c19jYWxsYmFjayhHcHNTdlN0YXR1cyogc3Zfc3RhdHVzKQotewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmc0V2ZW50TXV0ZXgpOwotCi0gICAgc1BlbmRpbmdDYWxsYmFja3MgfD0ga1N2U3RhdHVzOwotICAgIG1lbWNweSgmc0dwc1N2U3RhdHVzLCBzdl9zdGF0dXMsIHNpemVvZihHcHNTdlN0YXR1cykpOwotCi0gICAgcHRocmVhZF9jb25kX3NpZ25hbCgmc0V2ZW50Q29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLX0KLQotc3RhdGljIHZvaWQgbm1lYV9jYWxsYmFjayhHcHNVdGNUaW1lIHRpbWVzdGFtcCwgY29uc3QgY2hhciogbm1lYSwgaW50IGxlbmd0aCkKLXsKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJnNFdmVudE11dGV4KTsKLQotICAgIGlmIChsZW5ndGggPj0gTk1FQV9TRU5URU5DRV9MRU5HVEgpIHsKLSAgICAgICAgTE9HRSgiTk1FQSBkYXRhIHRvbyBsb25nIGluIG5tZWFfY2FsbGJhY2sgKGxlbmd0aCA9ICVkKVxuIiwgbGVuZ3RoKTsKLSAgICAgICAgbGVuZ3RoID0gTk1FQV9TRU5URU5DRV9MRU5HVEggLSAxOwotICAgIH0KLSAgICBpZiAobU5tZWFTZW50ZW5jZUNvdW50ID49IE5NRUFfU0VOVEVOQ0VfQ09VTlQpIHsKLSAgICAgICAgTE9HRSgiTk1FQSBkYXRhIG92ZXJmbG93ZWQgYnVmZmVyXG4iKTsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNQZW5kaW5nQ2FsbGJhY2tzIHw9IGtObWVhQXZhaWxhYmxlOwotICAgIHNObWVhQnVmZmVyW21ObWVhU2VudGVuY2VDb3VudF0udGltZXN0YW1wID0gdGltZXN0YW1wOwotICAgIG1lbWNweShzTm1lYUJ1ZmZlclttTm1lYVNlbnRlbmNlQ291bnRdLm5tZWEsIG5tZWEsIGxlbmd0aCk7Ci0gICAgc05tZWFCdWZmZXJbbU5tZWFTZW50ZW5jZUNvdW50XS5ubWVhW2xlbmd0aF0gPSAwOwotICAgIG1ObWVhU2VudGVuY2VDb3VudCsrOwotCi0gICAgcHRocmVhZF9jb25kX3NpZ25hbCgmc0V2ZW50Q29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLX0KLQotc3RhdGljIHZvaWQgYWdwc19zdGF0dXNfY2FsbGJhY2soQUdwc1N0YXR1cyogYWdwc19zdGF0dXMpCi17Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZzRXZlbnRNdXRleCk7Ci0KLSAgICBzUGVuZGluZ0NhbGxiYWNrcyB8PSBrQUdwc1N0YXR1czsKLSAgICBtZW1jcHkoJnNBR3BzU3RhdHVzLCBhZ3BzX3N0YXR1cywgc2l6ZW9mKEFHcHNTdGF0dXMpKTsKLQotICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJnNFdmVudENvbmQpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzRXZlbnRNdXRleCk7Ci19Ci0KLUdwc0NhbGxiYWNrcyBzR3BzQ2FsbGJhY2tzID0gewotICAgIGxvY2F0aW9uX2NhbGxiYWNrLAotICAgIHN0YXR1c19jYWxsYmFjaywKLSAgICBzdl9zdGF0dXNfY2FsbGJhY2ssCi0gICAgbm1lYV9jYWxsYmFjawotfTsKLQotc3RhdGljIHZvaWQKLWRvd25sb2FkX3JlcXVlc3RfY2FsbGJhY2soKQotewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmc0V2ZW50TXV0ZXgpOwotICAgIHNQZW5kaW5nQ2FsbGJhY2tzIHw9IGtYdHJhRG93bmxvYWRSZXF1ZXN0OwotICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJnNFdmVudENvbmQpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzRXZlbnRNdXRleCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1ncHNfbmlfbm90aWZ5X2NhbGxiYWNrKEdwc05pTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pCi17Ci0gICBMT0dEKCJncHNfbmlfbm90aWZ5X2NhbGxiYWNrOiBub3RpZj0lZCIsIG5vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uX2lkKTsKLQotICAgcHRocmVhZF9tdXRleF9sb2NrKCZzRXZlbnRNdXRleCk7Ci0KLSAgIHNQZW5kaW5nQ2FsbGJhY2tzIHw9IGtOaU5vdGlmaWNhdGlvbjsKLSAgIG1lbWNweSgmc0dwc05pTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24sIHNpemVvZihHcHNOaU5vdGlmaWNhdGlvbikpOwotCi0gICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZzRXZlbnRDb25kKTsKLSAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzRXZlbnRNdXRleCk7Ci19Ci0KLUdwc1h0cmFDYWxsYmFja3Mgc0dwc1h0cmFDYWxsYmFja3MgPSB7Ci0gICAgZG93bmxvYWRfcmVxdWVzdF9jYWxsYmFjaywKLX07Ci0KLUFHcHNDYWxsYmFja3Mgc0FHcHNDYWxsYmFja3MgPSB7Ci0gICAgYWdwc19zdGF0dXNfY2FsbGJhY2ssCi19OwotCi1HcHNOaUNhbGxiYWNrcyBzR3BzTmlDYWxsYmFja3MgPSB7Ci0gICAgZ3BzX25pX25vdGlmeV9jYWxsYmFjaywKLX07Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9jbGFzc19pbml0X25hdGl2ZShKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6KSB7Ci0gICAgbWV0aG9kX3JlcG9ydExvY2F0aW9uID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydExvY2F0aW9uIiwgIihJRERERkZGSilWIik7Ci0gICAgbWV0aG9kX3JlcG9ydFN0YXR1cyA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosICJyZXBvcnRTdGF0dXMiLCAiKEkpViIpOwotICAgIG1ldGhvZF9yZXBvcnRTdlN0YXR1cyA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosICJyZXBvcnRTdlN0YXR1cyIsICIoKVYiKTsKLSAgICBtZXRob2RfcmVwb3J0QUdwc1N0YXR1cyA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosICJyZXBvcnRBR3BzU3RhdHVzIiwgIihJSSlWIik7Ci0gICAgbWV0aG9kX3JlcG9ydE5tZWEgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAicmVwb3J0Tm1lYSIsICIoSUopViIpOwotICAgIG1ldGhvZF94dHJhRG93bmxvYWRSZXF1ZXN0ID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInh0cmFEb3dubG9hZFJlcXVlc3QiLCAiKClWIik7Ci0gICAgbWV0aG9kX3JlcG9ydE5pTm90aWZpY2F0aW9uID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydE5pTm90aWZpY2F0aW9uIiwgIihJSUlJSUxqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0lJTGphdmEvbGFuZy9TdHJpbmc7KVYiKTsKLX0KLQotc3RhdGljIGpib29sZWFuIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pc19zdXBwb3J0ZWQoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eikgewotICAgIGlmICghc0dwc0ludGVyZmFjZSkKLSAgICAgICAgc0dwc0ludGVyZmFjZSA9IGdwc19nZXRfaW50ZXJmYWNlKCk7Ci0gICAgcmV0dXJuIChzR3BzSW50ZXJmYWNlICE9IE5VTEwpOwotfQotCi1zdGF0aWMgamJvb2xlYW4gYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luaXQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQotewotICAgIGlmICghc0dwc0ludGVyZmFjZSkKLSAgICAgICAgc0dwc0ludGVyZmFjZSA9IGdwc19nZXRfaW50ZXJmYWNlKCk7Ci0gICAgaWYgKCFzR3BzSW50ZXJmYWNlIHx8IHNHcHNJbnRlcmZhY2UtPmluaXQoJnNHcHNDYWxsYmFja3MpICE9IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghc0FHcHNJbnRlcmZhY2UpCi0gICAgICAgIHNBR3BzSW50ZXJmYWNlID0gKGNvbnN0IEFHcHNJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oQUdQU19JTlRFUkZBQ0UpOwotICAgIGlmIChzQUdwc0ludGVyZmFjZSkKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UtPmluaXQoJnNBR3BzQ2FsbGJhY2tzKTsKLQotICAgIGlmICghc0dwc05pSW50ZXJmYWNlKQotICAgICAgICBzR3BzTmlJbnRlcmZhY2UgPSAoY29uc3QgR3BzTmlJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oR1BTX05JX0lOVEVSRkFDRSk7Ci0gICAgaWYgKHNHcHNOaUludGVyZmFjZSkKLSAgICAgICAgc0dwc05pSW50ZXJmYWNlLT5pbml0KCZzR3BzTmlDYWxsYmFja3MpOwotCi0gICAgLy8gQ2xlYXIgcHJpdmFjeSBsb2NrIHdoaWxlIGVuYWJsZWQKLSAgICBpZiAoIXNHcHNQcml2YWN5SW50ZXJmYWNlKQotICAgICAgICBzR3BzUHJpdmFjeUludGVyZmFjZSA9IChjb25zdCBHcHNQcml2YWN5SW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEdQU19QUklWQUNZX0lOVEVSRkFDRSk7Ci0gICAgaWYgKHNHcHNQcml2YWN5SW50ZXJmYWNlKQotICAgICAgICBzR3BzUHJpdmFjeUludGVyZmFjZS0+c2V0X3ByaXZhY3lfbG9jaygwKTsKLQotICAgIGlmICghc0dwc0RlYnVnSW50ZXJmYWNlKQotICAgICAgIHNHcHNEZWJ1Z0ludGVyZmFjZSA9IChjb25zdCBHcHNEZWJ1Z0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihHUFNfREVCVUdfSU5URVJGQUNFKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZGlzYWJsZShKTklFbnYqIGVudiwgam9iamVjdCBvYmopCi17Ci0gICAgLy8gRW5hYmxlIHByaXZhY3kgbG9jayB3aGlsZSBkaXNhYmxlZAotICAgIGlmICghc0dwc1ByaXZhY3lJbnRlcmZhY2UpCi0gICAgICAgIHNHcHNQcml2YWN5SW50ZXJmYWNlID0gKGNvbnN0IEdwc1ByaXZhY3lJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oR1BTX1BSSVZBQ1lfSU5URVJGQUNFKTsKLSAgICBpZiAoc0dwc1ByaXZhY3lJbnRlcmZhY2UpCi0gICAgICAgIHNHcHNQcml2YWN5SW50ZXJmYWNlLT5zZXRfcHJpdmFjeV9sb2NrKDEpOwotCi0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZzRXZlbnRNdXRleCk7Ci0gICAgc1BlbmRpbmdDYWxsYmFja3MgfD0ga0Rpc2FibGVSZXF1ZXN0OwotICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJnNFdmVudENvbmQpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzRXZlbnRNdXRleCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9jbGVhbnVwKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKLXsKLSAgICBzR3BzSW50ZXJmYWNlLT5jbGVhbnVwKCk7Ci19Ci0KLXN0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3RhcnQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLCBqaW50IHBvc2l0aW9uTW9kZSwKLSAgICAgICAgamJvb2xlYW4gc2luZ2xlRml4LCBqaW50IGZpeEZyZXF1ZW5jeSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gc0dwc0ludGVyZmFjZS0+c2V0X3Bvc2l0aW9uX21vZGUocG9zaXRpb25Nb2RlLCAoc2luZ2xlRml4ID8gMCA6IGZpeEZyZXF1ZW5jeSkpOwotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiAoc0dwc0ludGVyZmFjZS0+c3RhcnQoKSA9PSAwKTsKLX0KLQotc3RhdGljIGpib29sZWFuIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdG9wKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKLXsKLSAgICByZXR1cm4gKHNHcHNJbnRlcmZhY2UtPnN0b3AoKSA9PSAwKTsKLX0KLQotc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2RlbGV0ZV9haWRpbmdfZGF0YShKTklFbnYqIGVudiwgam9iamVjdCBvYmosIGppbnQgZmxhZ3MpCi17Ci0gICAgc0dwc0ludGVyZmFjZS0+ZGVsZXRlX2FpZGluZ19kYXRhKGZsYWdzKTsKLX0KLQotc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3dhaXRfZm9yX2V2ZW50KEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKLXsKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJnNFdmVudE11dGV4KTsKLSAgICB3aGlsZSAoc1BlbmRpbmdDYWxsYmFja3MgPT0gMCkgewotICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmc0V2ZW50Q29uZCwgJnNFdmVudE11dGV4KTsKLSAgICB9Ci0KLSAgICAvLyBjb3B5IGFuZCBjbGVhciB0aGUgY2FsbGJhY2sgZmxhZ3MKLSAgICBpbnQgcGVuZGluZ0NhbGxiYWNrcyA9IHNQZW5kaW5nQ2FsbGJhY2tzOwotICAgIHNQZW5kaW5nQ2FsbGJhY2tzID0gMDsKLSAgICBpbnQgbm1lYVNlbnRlbmNlQ291bnQgPSBtTm1lYVNlbnRlbmNlQ291bnQ7Ci0gICAgbU5tZWFTZW50ZW5jZUNvdW50ID0gMDsKLSAgICAKLSAgICAvLyBjb3B5IGV2ZXJ5dGhpbmcgYW5kIHVubG9jayB0aGUgbXV0ZXggYmVmb3JlIGNhbGxpbmcgaW50byBKYXZhIGNvZGUgdG8gYXZvaWQgdGhlIHBvc3NpYmlsaXR5Ci0gICAgLy8gb2YgdGltZW91dHMgaW4gdGhlIEdQUyBlbmdpbmUuCi0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrTG9jYXRpb24pCi0gICAgICAgIG1lbWNweSgmc0dwc0xvY2F0aW9uQ29weSwgJnNHcHNMb2NhdGlvbiwgc2l6ZW9mKHNHcHNMb2NhdGlvbkNvcHkpKTsKLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtTdGF0dXMpCi0gICAgICAgIG1lbWNweSgmc0dwc1N0YXR1c0NvcHksICZzR3BzU3RhdHVzLCBzaXplb2Yoc0dwc1N0YXR1c0NvcHkpKTsKLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtTdlN0YXR1cykKLSAgICAgICAgbWVtY3B5KCZzR3BzU3ZTdGF0dXNDb3B5LCAmc0dwc1N2U3RhdHVzLCBzaXplb2Yoc0dwc1N2U3RhdHVzQ29weSkpOwotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga0FHcHNTdGF0dXMpCi0gICAgICAgIG1lbWNweSgmc0FHcHNTdGF0dXNDb3B5LCAmc0FHcHNTdGF0dXMsIHNpemVvZihzQUdwc1N0YXR1c0NvcHkpKTsKLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtObWVhQXZhaWxhYmxlKQotICAgICAgICBtZW1jcHkoJnNObWVhQnVmZmVyQ29weSwgJnNObWVhQnVmZmVyLCBubWVhU2VudGVuY2VDb3VudCAqIHNpemVvZihzTm1lYUJ1ZmZlclswXSkpOwotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga05pTm90aWZpY2F0aW9uKQotICAgICAgICBtZW1jcHkoJnNHcHNOaU5vdGlmaWNhdGlvbkNvcHksICZzR3BzTmlOb3RpZmljYXRpb24sIHNpemVvZihzR3BzTmlOb3RpZmljYXRpb25Db3B5KSk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsgICAKLQotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga0xvY2F0aW9uKSB7Ci0gICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2Qob2JqLCBtZXRob2RfcmVwb3J0TG9jYXRpb24sIHNHcHNMb2NhdGlvbkNvcHkuZmxhZ3MsCi0gICAgICAgICAgICAgICAgKGpkb3VibGUpc0dwc0xvY2F0aW9uQ29weS5sYXRpdHVkZSwgKGpkb3VibGUpc0dwc0xvY2F0aW9uQ29weS5sb25naXR1ZGUsCi0gICAgICAgICAgICAgICAgKGpkb3VibGUpc0dwc0xvY2F0aW9uQ29weS5hbHRpdHVkZSwKLSAgICAgICAgICAgICAgICAoamZsb2F0KXNHcHNMb2NhdGlvbkNvcHkuc3BlZWQsIChqZmxvYXQpc0dwc0xvY2F0aW9uQ29weS5iZWFyaW5nLAotICAgICAgICAgICAgICAgIChqZmxvYXQpc0dwc0xvY2F0aW9uQ29weS5hY2N1cmFjeSwgKGpsb25nKXNHcHNMb2NhdGlvbkNvcHkudGltZXN0YW1wKTsKLSAgICB9Ci0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrU3RhdHVzKSB7Ci0gICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2Qob2JqLCBtZXRob2RfcmVwb3J0U3RhdHVzLCBzR3BzU3RhdHVzQ29weS5zdGF0dXMpOwotICAgIH0KLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtTdlN0YXR1cykgewotICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG9iaiwgbWV0aG9kX3JlcG9ydFN2U3RhdHVzKTsKLSAgICB9Ci0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrQUdwc1N0YXR1cykgewotICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG9iaiwgbWV0aG9kX3JlcG9ydEFHcHNTdGF0dXMsIHNBR3BzU3RhdHVzQ29weS50eXBlLCBzQUdwc1N0YXR1c0NvcHkuc3RhdHVzKTsKLSAgICB9ICAKLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtObWVhQXZhaWxhYmxlKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbm1lYVNlbnRlbmNlQ291bnQ7IGkrKykgewotICAgICAgICAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChvYmosIG1ldGhvZF9yZXBvcnRObWVhLCBpLCBzTm1lYUJ1ZmZlcltpXS50aW1lc3RhbXApOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga1h0cmFEb3dubG9hZFJlcXVlc3QpIHsKLSAgICAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChvYmosIG1ldGhvZF94dHJhRG93bmxvYWRSZXF1ZXN0KTsKLSAgICB9Ci0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrRGlzYWJsZVJlcXVlc3QpIHsKLSAgICAgICAgLy8gZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyAtIHdlIGFyZSBqdXN0IHBva2luZyBzbyB3YWl0X2Zvcl9ldmVudCB3aWxsIHJldHVybi4KLSAgICB9Ci0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrTmlOb3RpZmljYXRpb24pIHsKLSAgICAgICBMT0dEKCJhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfd2FpdF9mb3JfZXZlbnQ6IHNlbnQgbm90aWZpY2F0aW9uIGNhbGxiYWNrLiIpOwotICAgICAgIGpzdHJpbmcgcmVxSWQgPSBlbnYtPk5ld1N0cmluZ1VURihzR3BzTmlOb3RpZmljYXRpb25Db3B5LnJlcXVlc3Rvcl9pZCk7Ci0gICAgICAganN0cmluZyB0ZXh0ID0gZW52LT5OZXdTdHJpbmdVVEYoc0dwc05pTm90aWZpY2F0aW9uQ29weS50ZXh0KTsKLSAgICAgICBqc3RyaW5nIGV4dHJhcyA9IGVudi0+TmV3U3RyaW5nVVRGKHNHcHNOaU5vdGlmaWNhdGlvbkNvcHkuZXh0cmFzKTsKLSAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG9iaiwgbWV0aG9kX3JlcG9ydE5pTm90aWZpY2F0aW9uLAotICAgICAgICAgICAgIHNHcHNOaU5vdGlmaWNhdGlvbkNvcHkubm90aWZpY2F0aW9uX2lkLAotICAgICAgICAgICAgIHNHcHNOaU5vdGlmaWNhdGlvbkNvcHkubmlfdHlwZSwKLSAgICAgICAgICAgICBzR3BzTmlOb3RpZmljYXRpb25Db3B5Lm5vdGlmeV9mbGFncywKLSAgICAgICAgICAgICBzR3BzTmlOb3RpZmljYXRpb25Db3B5LnRpbWVvdXQsCi0gICAgICAgICAgICAgc0dwc05pTm90aWZpY2F0aW9uQ29weS5kZWZhdWx0X3Jlc3BvbnNlLAotICAgICAgICAgICAgIHJlcUlkLAotICAgICAgICAgICAgIHRleHQsCi0gICAgICAgICAgICAgc0dwc05pTm90aWZpY2F0aW9uQ29weS5yZXF1ZXN0b3JfaWRfZW5jb2RpbmcsCi0gICAgICAgICAgICAgc0dwc05pTm90aWZpY2F0aW9uQ29weS50ZXh0X2VuY29kaW5nLAotICAgICAgICAgICAgIGV4dHJhcwotICAgICAgICk7Ci0gICAgfQotfQotCi1zdGF0aWMgamludCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfcmVhZF9zdl9zdGF0dXMoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAotICAgICAgICBqaW50QXJyYXkgcHJuQXJyYXksIGpmbG9hdEFycmF5IHNuckFycmF5LCBqZmxvYXRBcnJheSBlbGV2QXJyYXksIGpmbG9hdEFycmF5IGF6dW1BcnJheSwKLSAgICAgICAgamludEFycmF5IG1hc2tBcnJheSkKLXsKLSAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhIGNhbGwgdG8gcmVwb3J0U3RhdHVzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGxvY2sgaGVyZQotCi0gICAgamludCogcHJucyA9IGVudi0+R2V0SW50QXJyYXlFbGVtZW50cyhwcm5BcnJheSwgMCk7Ci0gICAgamZsb2F0KiBzbnJzID0gZW52LT5HZXRGbG9hdEFycmF5RWxlbWVudHMoc25yQXJyYXksIDApOwotICAgIGpmbG9hdCogZWxldiA9IGVudi0+R2V0RmxvYXRBcnJheUVsZW1lbnRzKGVsZXZBcnJheSwgMCk7Ci0gICAgamZsb2F0KiBhemltID0gZW52LT5HZXRGbG9hdEFycmF5RWxlbWVudHMoYXp1bUFycmF5LCAwKTsKLSAgICBqaW50KiBtYXNrID0gZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKG1hc2tBcnJheSwgMCk7Ci0KLSAgICBpbnQgbnVtX3N2cyA9IHNHcHNTdlN0YXR1c0NvcHkubnVtX3N2czsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zdnM7IGkrKykgewotICAgICAgICBwcm5zW2ldID0gc0dwc1N2U3RhdHVzQ29weS5zdl9saXN0W2ldLnBybjsKLSAgICAgICAgc25yc1tpXSA9IHNHcHNTdlN0YXR1c0NvcHkuc3ZfbGlzdFtpXS5zbnI7Ci0gICAgICAgIGVsZXZbaV0gPSBzR3BzU3ZTdGF0dXNDb3B5LnN2X2xpc3RbaV0uZWxldmF0aW9uOwotICAgICAgICBhemltW2ldID0gc0dwc1N2U3RhdHVzQ29weS5zdl9saXN0W2ldLmF6aW11dGg7Ci0gICAgfQotICAgIG1hc2tbMF0gPSBzR3BzU3ZTdGF0dXNDb3B5LmVwaGVtZXJpc19tYXNrOwotICAgIG1hc2tbMV0gPSBzR3BzU3ZTdGF0dXNDb3B5LmFsbWFuYWNfbWFzazsKLSAgICBtYXNrWzJdID0gc0dwc1N2U3RhdHVzQ29weS51c2VkX2luX2ZpeF9tYXNrOwotCi0gICAgZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhwcm5BcnJheSwgcHJucywgMCk7Ci0gICAgZW52LT5SZWxlYXNlRmxvYXRBcnJheUVsZW1lbnRzKHNuckFycmF5LCBzbnJzLCAwKTsKLSAgICBlbnYtPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoZWxldkFycmF5LCBlbGV2LCAwKTsKLSAgICBlbnYtPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoYXp1bUFycmF5LCBhemltLCAwKTsKLSAgICBlbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKG1hc2tBcnJheSwgbWFzaywgMCk7Ci0gICAgcmV0dXJuIG51bV9zdnM7Ci19Ci0KLXN0YXRpYyBqaW50IGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9yZWFkX25tZWEoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLCBqaW50IGluZGV4LCBqYnl0ZUFycmF5IG5tZWFBcnJheSwgamludCBidWZmZXJfc2l6ZSkKLXsKLSAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhIGNhbGwgdG8gcmVwb3J0Tm1lYSwgc28gd2UgZG9uJ3QgbmVlZCB0byBsb2NrIGhlcmUKLQotICAgIGpieXRlKiBubWVhID0gZW52LT5HZXRCeXRlQXJyYXlFbGVtZW50cyhubWVhQXJyYXksIDApOwotCi0gICAgaW50IGxlbmd0aCA9IHN0cmxlbihzTm1lYUJ1ZmZlckNvcHlbaW5kZXhdLm5tZWEpOwotICAgIGlmIChsZW5ndGggPiBidWZmZXJfc2l6ZSkKLSAgICAgICAgbGVuZ3RoID0gYnVmZmVyX3NpemU7Ci0gICAgbWVtY3B5KG5tZWEsIHNObWVhQnVmZmVyQ29weVtpbmRleF0ubm1lYSwgbGVuZ3RoKTsKLQotICAgIGVudi0+UmVsZWFzZUJ5dGVBcnJheUVsZW1lbnRzKG5tZWFBcnJheSwgbm1lYSwgMCk7Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLQotc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luamVjdF90aW1lKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwgamxvbmcgdGltZSwgCi0gICAgICAgIGpsb25nIHRpbWVSZWZlcmVuY2UsIGppbnQgdW5jZXJ0YWludHkpCi17Ci0gICAgc0dwc0ludGVyZmFjZS0+aW5qZWN0X3RpbWUodGltZSwgdGltZVJlZmVyZW5jZSwgdW5jZXJ0YWludHkpOwotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5qZWN0X2xvY2F0aW9uKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKLSAgICAgICAgamRvdWJsZSBsYXRpdHVkZSwgamRvdWJsZSBsb25naXR1ZGUsIGpmbG9hdCBhY2N1cmFjeSkKLXsKLSAgICBzR3BzSW50ZXJmYWNlLT5pbmplY3RfbG9jYXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwotfQotCi1zdGF0aWMgamJvb2xlYW4gYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3N1cHBvcnRzX3h0cmEoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQotewotICAgIGlmICghc0dwc1h0cmFJbnRlcmZhY2UpIHsKLSAgICAgICAgc0dwc1h0cmFJbnRlcmZhY2UgPSAoY29uc3QgR3BzWHRyYUludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihHUFNfWFRSQV9JTlRFUkZBQ0UpOwotICAgICAgICBpZiAoc0dwc1h0cmFJbnRlcmZhY2UpIHsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSBzR3BzWHRyYUludGVyZmFjZS0+aW5pdCgmc0dwc1h0cmFDYWxsYmFja3MpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIHNHcHNYdHJhSW50ZXJmYWNlID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAoc0dwc1h0cmFJbnRlcmZhY2UgIT0gTlVMTCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfeHRyYV9kYXRhKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKLSAgICAgICAgamJ5dGVBcnJheSBkYXRhLCBqaW50IGxlbmd0aCkKLXsKLSAgICBqYnl0ZSogYnl0ZXMgPSBlbnYtPkdldEJ5dGVBcnJheUVsZW1lbnRzKGRhdGEsIDApOwotICAgIHNHcHNYdHJhSW50ZXJmYWNlLT5pbmplY3RfeHRyYV9kYXRhKChjaGFyICopYnl0ZXMsIGxlbmd0aCk7Ci0gICAgZW52LT5SZWxlYXNlQnl0ZUFycmF5RWxlbWVudHMoZGF0YSwgYnl0ZXMsIDApOwotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfYWdwc19kYXRhX2Nvbm5fb3BlbihKTklFbnYqIGVudiwgam9iamVjdCBvYmosIGpzdHJpbmcgYXBuKQotewotICAgIGlmICghc0FHcHNJbnRlcmZhY2UpIHsKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7Ci0gICAgfQotICAgIGlmIChzQUdwc0ludGVyZmFjZSkgewotICAgICAgICBpZiAoYXBuID09IE5VTEwpIHsKLSAgICAgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iLCBOVUxMKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjb25zdCBjaGFyICphcG5TdHIgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGFwbiwgTlVMTCk7Ci0gICAgICAgIHNBR3BzSW50ZXJmYWNlLT5kYXRhX2Nvbm5fb3BlbihhcG5TdHIpOwotICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhhcG4sIGFwblN0cik7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfYWdwc19kYXRhX2Nvbm5fY2xvc2VkKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKLXsKLSAgICBpZiAoIXNBR3BzSW50ZXJmYWNlKSB7Ci0gICAgICAgIHNBR3BzSW50ZXJmYWNlID0gKGNvbnN0IEFHcHNJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oQUdQU19JTlRFUkZBQ0UpOwotICAgIH0KLSAgICBpZiAoc0FHcHNJbnRlcmZhY2UpIHsKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UtPmRhdGFfY29ubl9jbG9zZWQoKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQotewotICAgIGlmICghc0FHcHNJbnRlcmZhY2UpIHsKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7Ci0gICAgfQotICAgIGlmIChzQUdwc0ludGVyZmFjZSkgewotICAgICAgICBzQUdwc0ludGVyZmFjZS0+ZGF0YV9jb25uX2ZhaWxlZCgpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3NldF9hZ3BzX3NlcnZlcihKTklFbnYqIGVudiwgam9iamVjdCBvYmosCi0gICAgICAgIGppbnQgdHlwZSwganN0cmluZyBob3N0bmFtZSwgamludCBwb3J0KQotewotICAgIGlmICghc0FHcHNJbnRlcmZhY2UpIHsKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7Ci0gICAgfQotICAgIGlmIChzQUdwc0ludGVyZmFjZSkgewotICAgICAgICBjb25zdCBjaGFyICpjX2hvc3RuYW1lID0gZW52LT5HZXRTdHJpbmdVVEZDaGFycyhob3N0bmFtZSwgTlVMTCk7Ci0gICAgICAgIHNBR3BzSW50ZXJmYWNlLT5zZXRfc2VydmVyKHR5cGUsIGNfaG9zdG5hbWUsIHBvcnQpOwotICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhob3N0bmFtZSwgY19ob3N0bmFtZSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc2VuZF9uaV9yZXNwb25zZShKTklFbnYqIGVudiwgam9iamVjdCBvYmosCi0gICAgICBqaW50IG5vdGlmSWQsIGppbnQgcmVzcG9uc2UpCi17Ci0gICAgaWYgKCFzR3BzTmlJbnRlcmZhY2UpCi0gICAgICAgIHNHcHNOaUludGVyZmFjZSA9IChjb25zdCBHcHNOaUludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihHUFNfTklfSU5URVJGQUNFKTsKLSAgICBpZiAoc0dwc05pSW50ZXJmYWNlKQotICAgICAgICBzR3BzTmlJbnRlcmZhY2UtPnJlc3BvbmQobm90aWZJZCwgcmVzcG9uc2UpOwotfQotCi1zdGF0aWMganN0cmluZyBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZ2V0X2ludGVybmFsX3N0YXRlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKLXsKLSAgICBqc3RyaW5nIHJlc3VsdCA9IE5VTEw7Ci0gICAgaWYgKHNHcHNEZWJ1Z0ludGVyZmFjZSkgewotICAgICAgICBjb25zdCBzaXplX3QgbWF4TGVuZ3RoID0gMjA0NzsKLSAgICAgICAgY2hhciBidWZmZXJbbWF4TGVuZ3RoKzFdOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gc0dwc0RlYnVnSW50ZXJmYWNlLT5nZXRfaW50ZXJuYWxfc3RhdGUoYnVmZmVyLCBtYXhMZW5ndGgpOwotICAgICAgICBpZiAobGVuZ3RoID4gbWF4TGVuZ3RoKSBsZW5ndGggPSBtYXhMZW5ndGg7Ci0gICAgICAgIGJ1ZmZlcltsZW5ndGhdID0gMDsKLSAgICAgICAgcmVzdWx0ID0gZW52LT5OZXdTdHJpbmdVVEYoYnVmZmVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBzTWV0aG9kc1tdID0gewotICAgICAvKiBuYW1lLCBzaWduYXR1cmUsIGZ1bmNQdHIgKi8KLSAgICB7ImNsYXNzX2luaXRfbmF0aXZlIiwgIigpViIsICh2b2lkICopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2NsYXNzX2luaXRfbmF0aXZlfSwKLSAgICB7Im5hdGl2ZV9pc19zdXBwb3J0ZWQiLCAiKClaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pc19zdXBwb3J0ZWR9LAotICAgIHsibmF0aXZlX2luaXQiLCAiKClaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbml0fSwKLSAgICB7Im5hdGl2ZV9kaXNhYmxlIiwgIigpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZGlzYWJsZX0sCi0gICAgeyJuYXRpdmVfY2xlYW51cCIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2NsZWFudXB9LAotICAgIHsibmF0aXZlX3N0YXJ0IiwgIihJWkkpWiIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3RhcnR9LAotICAgIHsibmF0aXZlX3N0b3AiLCAiKClaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdG9wfSwKLSAgICB7Im5hdGl2ZV9kZWxldGVfYWlkaW5nX2RhdGEiLCAiKEkpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZGVsZXRlX2FpZGluZ19kYXRhfSwKLSAgICB7Im5hdGl2ZV93YWl0X2Zvcl9ldmVudCIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3dhaXRfZm9yX2V2ZW50fSwKLSAgICB7Im5hdGl2ZV9yZWFkX3N2X3N0YXR1cyIsICIoW0lbRltGW0ZbSSlJIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9yZWFkX3N2X3N0YXR1c30sCi0gICAgeyJuYXRpdmVfcmVhZF9ubWVhIiwgIihJW0JJKUkiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3JlYWRfbm1lYX0sCi0gICAgeyJuYXRpdmVfaW5qZWN0X3RpbWUiLCAiKEpKSSlWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfdGltZX0sCi0gICAgeyJuYXRpdmVfaW5qZWN0X2xvY2F0aW9uIiwgIihEREYpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5qZWN0X2xvY2F0aW9ufSwKLSAgICB7Im5hdGl2ZV9zdXBwb3J0c194dHJhIiwgIigpWiIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3VwcG9ydHNfeHRyYX0sCi0gICAgeyJuYXRpdmVfaW5qZWN0X3h0cmFfZGF0YSIsICIoW0JJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luamVjdF94dHJhX2RhdGF9LAotICAgIHsibmF0aXZlX2FncHNfZGF0YV9jb25uX29wZW4iLCAiKExqYXZhL2xhbmcvU3RyaW5nOylWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9vcGVufSwKLSAgICB7Im5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9jbG9zZWQiLCAiKClWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9jbG9zZWR9LAotICAgIHsibmF0aXZlX2FncHNfZGF0YV9jb25uX2ZhaWxlZCIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2FncHNfZGF0YV9jb25uX2ZhaWxlZH0sCi0gICAgeyJuYXRpdmVfc2V0X2FncHNfc2VydmVyIiwgIihJTGphdmEvbGFuZy9TdHJpbmc7SSlWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zZXRfYWdwc19zZXJ2ZXJ9LAotICAgIHsibmF0aXZlX3NlbmRfbmlfcmVzcG9uc2UiLCAiKElJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3NlbmRfbmlfcmVzcG9uc2V9LAotICAgIHsibmF0aXZlX2dldF9pbnRlcm5hbF9zdGF0ZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZ2V0X2ludGVybmFsX3N0YXRlfSwKLX07Ci0KLWludCByZWdpc3Rlcl9hbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIoSk5JRW52KiBlbnYpCi17Ci0gICAgcmV0dXJuIGpuaVJlZ2lzdGVyTmF0aXZlTWV0aG9kcyhlbnYsICJjb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9HcHNMb2NhdGlvblByb3ZpZGVyIiwgc01ldGhvZHMsIE5FTEVNKHNNZXRob2RzKSk7Ci19Ci0KLX0gLyogbmFtZXNwYWNlIGFuZHJvaWQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfbWVkaWFfQXVkaW9UcmFjay5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX21lZGlhX0F1ZGlvVHJhY2suY3BwCmluZGV4IDY1YzA0MzUuLmNlNDNlNzMgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2FuZHJvaWRfbWVkaWFfQXVkaW9UcmFjay5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF9tZWRpYV9BdWRpb1RyYWNrLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBACiBzdGF0aWMgaW50CiBhbmRyb2lkX21lZGlhX0F1ZGlvVHJhY2tfbmF0aXZlX3NldHVwKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGpvYmplY3Qgd2Vha190aGlzLAogICAgICAgICBqaW50IHN0cmVhbVR5cGUsIGppbnQgc2FtcGxlUmF0ZUluSGVydHosIGppbnQgY2hhbm5lbHMsCi0gICAgICAgIGppbnQgYXVkaW9Gb3JtYXQsIGppbnQgYnVmZlNpemVJbkJ5dGVzLCBqaW50IG1lbW9yeU1vZGUpCisgICAgICAgIGppbnQgYXVkaW9Gb3JtYXQsIGppbnQgYnVmZlNpemVJbkJ5dGVzLCBqaW50IG1lbW9yeU1vZGUsIGppbnRBcnJheSBqU2Vzc2lvbikKIHsKICAgICBMT0dWKCJzYW1wbGVSYXRlPSVkLCBhdWRpb0Zvcm1hdChmcm9tIEphdmEpPSVkLCBjaGFubmVscz0leCwgYnVmZlNpemU9JWQiLAogICAgICAgICBzYW1wbGVSYXRlSW5IZXJ0eiwgYXVkaW9Gb3JtYXQsIGNoYW5uZWxzLCBidWZmU2l6ZUluQnl0ZXMpOwpAQCAtMjUzLDYgKzI1MywyMCBAQAogICAgIAogICAgIGxwSm5pU3RvcmFnZS0+bVN0cmVhbVR5cGUgPSBhdFN0cmVhbVR5cGU7CiAgICAgCisgICAgamludCogblNlc3Npb24gPSBOVUxMOworICAgIGlmIChqU2Vzc2lvbikgeworICAgICAgICBuU2Vzc2lvbiA9IChqaW50ICopIGVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChqU2Vzc2lvbiwgTlVMTCk7CisgICAgICAgIGlmIChuU2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dFKCJFcnJvciBjcmVhdGluZyBBdWRpb1RyYWNrOiBFcnJvciByZXRyaWV2aW5nIHNlc3Npb24gaWQgcG9pbnRlciIpOworICAgICAgICAgICAgZGVsZXRlIGxwSm5pU3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiBBVURJT1RSQUNLX0VSUk9SOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HRSgiRXJyb3IgY3JlYXRpbmcgQXVkaW9UcmFjazogaW52YWxpZCBzZXNzaW9uIElEIHBvaW50ZXIiKTsKKyAgICAgICAgZGVsZXRlIGxwSm5pU3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIEFVRElPVFJBQ0tfRVJST1I7CisgICAgfQorCiAgICAgLy8gY3JlYXRlIHRoZSBuYXRpdmUgQXVkaW9UcmFjayBvYmplY3QKICAgICBBdWRpb1RyYWNrKiBscFRyYWNrID0gbmV3IEF1ZGlvVHJhY2soKTsKICAgICBpZiAobHBUcmFjayA9PSBOVUxMKSB7CkBAIC0yNzMsNyArMjg3LDggQEAKICAgICAgICAgICAgIGF1ZGlvQ2FsbGJhY2ssICYobHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhKSwvL2NhbGxiYWNrLCBjYWxsYmFjayBkYXRhICh1c2VyKQogICAgICAgICAgICAgMCwvLyBub3RpZmljYXRpb25GcmFtZXMgPT0gMCBzaW5jZSBub3QgdXNpbmcgRVZFTlRfTU9SRV9EQVRBIHRvIGZlZWQgdGhlIEF1ZGlvVHJhY2sKICAgICAgICAgICAgIDAsLy8gc2hhcmVkIG1lbQotICAgICAgICAgICAgdHJ1ZSk7Ly8gdGhyZWFkIGNhbiBjYWxsIEphdmEKKyAgICAgICAgICAgIHRydWUsLy8gdGhyZWFkIGNhbiBjYWxsIEphdmEKKyAgICAgICAgICAgIG5TZXNzaW9uWzBdKTsvLyBhdWRpbyBzZXNzaW9uIElECiAgICAgICAgICAgICAKICAgICB9IGVsc2UgaWYgKG1lbW9yeU1vZGUgPT0gamF2YUF1ZGlvVHJhY2tGaWVsZHMuTU9ERV9TVEFUSUMpIHsKICAgICAgICAgLy8gQXVkaW9UcmFjayBpcyB1c2luZyBzaGFyZWQgbWVtb3J5CkBAIC0yOTMsNyArMzA4LDggQEAKICAgICAgICAgICAgIGF1ZGlvQ2FsbGJhY2ssICYobHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhKSwvL2NhbGxiYWNrLCBjYWxsYmFjayBkYXRhICh1c2VyKSk7CiAgICAgICAgICAgICAwLC8vIG5vdGlmaWNhdGlvbkZyYW1lcyA9PSAwIHNpbmNlIG5vdCB1c2luZyBFVkVOVF9NT1JFX0RBVEEgdG8gZmVlZCB0aGUgQXVkaW9UcmFjayAKICAgICAgICAgICAgIGxwSm5pU3RvcmFnZS0+bU1lbUJhc2UsLy8gc2hhcmVkIG1lbQotICAgICAgICAgICAgdHJ1ZSk7Ly8gdGhyZWFkIGNhbiBjYWxsIEphdmEgCisgICAgICAgICAgICB0cnVlLC8vIHRocmVhZCBjYW4gY2FsbCBKYXZhCisgICAgICAgICAgICBuU2Vzc2lvblswXSk7Ly8gYXVkaW8gc2Vzc2lvbiBJRAogICAgIH0KIAogICAgIGlmIChscFRyYWNrLT5pbml0Q2hlY2soKSAhPSBOT19FUlJPUikgewpAQCAtMzAxLDYgKzMxNywxMiBAQAogICAgICAgICBnb3RvIG5hdGl2ZV9pbml0X2ZhaWx1cmU7CiAgICAgfQogCisgICAgLy8gcmVhZCB0aGUgYXVkaW8gc2Vzc2lvbiBJRCBiYWNrIGZyb20gQXVkaW9UcmFjayBpbiBjYXNlIHdlIGNyZWF0ZSBhIG5ldyBzZXNzaW9uCisgICAgblNlc3Npb25bMF0gPSBscFRyYWNrLT5nZXRTZXNzaW9uSWQoKTsKKworICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoalNlc3Npb24sIG5TZXNzaW9uLCAwKTsKKyAgICBuU2Vzc2lvbiA9IE5VTEw7CisKICAgICAvLyBzYXZlIG91ciBuZXdseSBjcmVhdGVkIEMrKyBBdWRpb1RyYWNrIGluIHRoZSAibmF0aXZlVHJhY2tJbkphdmFPYmoiIGZpZWxkIAogICAgIC8vIG9mIHRoZSBKYXZhIG9iamVjdCAoaW4gbU5hdGl2ZVRyYWNrSW5KYXZhT2JqKQogICAgIGVudi0+U2V0SW50RmllbGQodGhpeiwgamF2YUF1ZGlvVHJhY2tGaWVsZHMubmF0aXZlVHJhY2tJbkphdmFPYmosIChpbnQpbHBUcmFjayk7CkBAIC0zMTcsNiArMzM5LDkgQEAKICAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGphdmFBdWRpb1RyYWNrRmllbGRzLm5hdGl2ZVRyYWNrSW5KYXZhT2JqLCAwKTsKICAgICAKIG5hdGl2ZV90cmFja19mYWlsdXJlOgorICAgIGlmIChuU2Vzc2lvbiAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoalNlc3Npb24sIG5TZXNzaW9uLCAwKTsKKyAgICB9CiAgICAgZW52LT5EZWxldGVHbG9iYWxSZWYobHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhLmF1ZGlvVHJhY2tfY2xhc3MpOwogICAgIGVudi0+RGVsZXRlR2xvYmFsUmVmKGxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YS5hdWRpb1RyYWNrX3JlZik7CiAgICAgZGVsZXRlIGxwSm5pU3RvcmFnZTsKQEAgLTc4NSw3ICs4MTAsNyBAQAogICAgIHsibmF0aXZlX3N0b3AiLCAgICAgICAgICAiKClWIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9UcmFja19zdG9wfSwKICAgICB7Im5hdGl2ZV9wYXVzZSIsICAgICAgICAgIigpViIsICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvVHJhY2tfcGF1c2V9LAogICAgIHsibmF0aXZlX2ZsdXNoIiwgICAgICAgICAiKClWIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9UcmFja19mbHVzaH0sCi0gICAgeyJuYXRpdmVfc2V0dXAiLCAgICAgICAgICIoTGphdmEvbGFuZy9PYmplY3Q7SUlJSUlJKUkiLCAKKyAgICB7Im5hdGl2ZV9zZXR1cCIsICAgICAgICAgIihMamF2YS9sYW5nL09iamVjdDtJSUlJSUlbSSlJIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvVHJhY2tfbmF0aXZlX3NldHVwfSwKICAgICB7Im5hdGl2ZV9maW5hbGl6ZSIsICAgICAgIigpViIsICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvVHJhY2tfbmF0aXZlX2ZpbmFsaXplfSwKICAgICB7Im5hdGl2ZV9yZWxlYXNlIiwgICAgICAgIigpViIsICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvVHJhY2tfbmF0aXZlX3JlbGVhc2V9LApkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9vcGVuZ2xfR0xFUzIwLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfb3BlbmdsX0dMRVMyMC5jcHAKaW5kZXggZmQxYzhmZC4uZWYyNTMxOSAxMDA2NDQKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF9vcGVuZ2xfR0xFUzIwLmNwcAorKysgYi9jb3JlL2puaS9hbmRyb2lkX29wZW5nbF9HTEVTMjAuY3BwCkBAIC04MjMsNiArODIzLDE4IEBACiAgICAgKTsKIH0KIAorLyogdm9pZCBnbERyYXdFbGVtZW50cyAoIEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgR0xpbnQgb2Zmc2V0ICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsRHJhd0VsZW1lbnRzX19JSUlJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgbW9kZSwgamludCBjb3VudCwgamludCB0eXBlLCBqaW50IG9mZnNldCkgeworICAgIGdsRHJhd0VsZW1lbnRzKAorICAgICAgICAoR0xlbnVtKW1vZGUsCisgICAgICAgIChHTHNpemVpKWNvdW50LAorICAgICAgICAoR0xlbnVtKXR5cGUsCisgICAgICAgIChjb25zdCBHTHZvaWQgKilvZmZzZXQKKyAgICApOworfQorCiAvKiB2b2lkIGdsRHJhd0VsZW1lbnRzICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMgKSAqLwogc3RhdGljIHZvaWQKIGFuZHJvaWRfZ2xEcmF3RWxlbWVudHNfX0lJSUxqYXZhX25pb19CdWZmZXJfMgpAQCAtNDc4Niw2ICs0Nzk4LDIwIEBACiAgICAgfQogfQogCisvKiB2b2lkIGdsVmVydGV4QXR0cmliUG9pbnRlciAoIEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBHTGludCBvZmZzZXQgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyX19JSUlaSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBpbmR4LCBqaW50IHNpemUsIGppbnQgdHlwZSwgamJvb2xlYW4gbm9ybWFsaXplZCwgamludCBzdHJpZGUsIGppbnQgb2Zmc2V0KSB7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKAorICAgICAgICAoR0x1aW50KWluZHgsCisgICAgICAgIChHTGludClzaXplLAorICAgICAgICAoR0xlbnVtKXR5cGUsCisgICAgICAgIChHTGJvb2xlYW4pbm9ybWFsaXplZCwKKyAgICAgICAgKEdMc2l6ZWkpc3RyaWRlLAorICAgICAgICAoY29uc3QgR0x2b2lkICopb2Zmc2V0CisgICAgKTsKK30KKwogLyogdm9pZCBnbFZlcnRleEF0dHJpYlBvaW50ZXIgKCBHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKSAqLwogc3RhdGljIHZvaWQKIGFuZHJvaWRfZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyQm91bmRzX19JSUlaSUxqYXZhX25pb19CdWZmZXJfMkkKQEAgLTQ4NzIsNiArNDg5OCw3IEBACiB7ImdsRGlzYWJsZSIsICIoSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbERpc2FibGVfX0kgfSwKIHsiZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkiLCAiKEkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlfX0kgfSwKIHsiZ2xEcmF3QXJyYXlzIiwgIihJSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xEcmF3QXJyYXlzX19JSUkgfSwKK3siZ2xEcmF3RWxlbWVudHMiLCAiKElJSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xEcmF3RWxlbWVudHNfX0lJSUkgfSwKIHsiZ2xEcmF3RWxlbWVudHMiLCAiKElJSUxqYXZhL25pby9CdWZmZXI7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsRHJhd0VsZW1lbnRzX19JSUlMamF2YV9uaW9fQnVmZmVyXzIgfSwKIHsiZ2xFbmFibGUiLCAiKEkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xFbmFibGVfX0kgfSwKIHsiZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSIsICIoSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5X19JIH0sCkBAIC01MDExLDYgKzUwMzgsNyBAQAogeyJnbFZlcnRleEF0dHJpYjRmIiwgIihJRkZGRilWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFZlcnRleEF0dHJpYjRmX19JRkZGRiB9LAogeyJnbFZlcnRleEF0dHJpYjRmdiIsICIoSVtGSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFZlcnRleEF0dHJpYjRmdl9fSV8zRkkgfSwKIHsiZ2xWZXJ0ZXhBdHRyaWI0ZnYiLCAiKElMamF2YS9uaW8vRmxvYXRCdWZmZXI7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsVmVydGV4QXR0cmliNGZ2X19JTGphdmFfbmlvX0Zsb2F0QnVmZmVyXzIgfSwKK3siZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIiwgIihJSUlaSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyX19JSUlaSUkgfSwKIHsiZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyQm91bmRzIiwgIihJSUlaSUxqYXZhL25pby9CdWZmZXI7SSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFZlcnRleEF0dHJpYlBvaW50ZXJCb3VuZHNfX0lJSVpJTGphdmFfbmlvX0J1ZmZlcl8ySSB9LAogeyJnbFZpZXdwb3J0IiwgIihJSUlJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsVmlld3BvcnRfX0lJSUkgfSwKIH07CmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX29zX01lc3NhZ2VRdWV1ZS5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX29zX01lc3NhZ2VRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYxZjgwNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlLmNwcApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiTWVzc2FnZVF1ZXVlLUpOSSIKKworI2luY2x1ZGUgIkpOSUhlbHAuaCIKKworI2luY2x1ZGUgPHV0aWxzL1BvbGxMb29wLmg+CisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSAiYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGpjbGFzcyBjbGF6ejsKKworICAgIGpmaWVsZElEIG1QdHI7ICAgLy8gbmF0aXZlIG9iamVjdCBhdHRhY2hlZCB0byB0aGUgRFZNIE1lc3NhZ2VRdWV1ZQorfSBnTWVzc2FnZVF1ZXVlQ2xhc3NJbmZvOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE5hdGl2ZU1lc3NhZ2VRdWV1ZSB7CitwdWJsaWM6CisgICAgTmF0aXZlTWVzc2FnZVF1ZXVlKCk7CisgICAgfk5hdGl2ZU1lc3NhZ2VRdWV1ZSgpOworCisgICAgaW5saW5lIHNwPFBvbGxMb29wPiBnZXRQb2xsTG9vcCgpIHsgcmV0dXJuIG1Qb2xsTG9vcDsgfQorCisgICAgYm9vbCBwb2xsT25jZShpbnQgdGltZW91dE1pbGxpcyk7CisgICAgdm9pZCB3YWtlKCk7CisKK3ByaXZhdGU6CisgICAgc3A8UG9sbExvb3A+IG1Qb2xsTG9vcDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmF0aXZlTWVzc2FnZVF1ZXVlOjpOYXRpdmVNZXNzYWdlUXVldWUoKSB7CisgICAgbVBvbGxMb29wID0gUG9sbExvb3A6OmdldEZvclRocmVhZCgpOworICAgIGlmIChtUG9sbExvb3AgPT0gTlVMTCkgeworICAgICAgICBtUG9sbExvb3AgPSBuZXcgUG9sbExvb3AoKTsKKyAgICAgICAgUG9sbExvb3A6OnNldEZvclRocmVhZChtUG9sbExvb3ApOworICAgIH0KK30KKworTmF0aXZlTWVzc2FnZVF1ZXVlOjp+TmF0aXZlTWVzc2FnZVF1ZXVlKCkgeworfQorCitib29sIE5hdGl2ZU1lc3NhZ2VRdWV1ZTo6cG9sbE9uY2UoaW50IHRpbWVvdXRNaWxsaXMpIHsKKyAgICByZXR1cm4gbVBvbGxMb29wLT5wb2xsT25jZSh0aW1lb3V0TWlsbGlzKTsKK30KKwordm9pZCBOYXRpdmVNZXNzYWdlUXVldWU6Ondha2UoKSB7CisgICAgbVBvbGxMb29wLT53YWtlKCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIE5hdGl2ZU1lc3NhZ2VRdWV1ZSogYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfZ2V0TmF0aXZlTWVzc2FnZVF1ZXVlKEpOSUVudiogZW52LAorICAgICAgICBqb2JqZWN0IG1lc3NhZ2VRdWV1ZU9iaikgeworICAgIGppbnQgaW50UHRyID0gZW52LT5HZXRJbnRGaWVsZChtZXNzYWdlUXVldWVPYmosIGdNZXNzYWdlUXVldWVDbGFzc0luZm8ubVB0cik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlTWVzc2FnZVF1ZXVlKj4oaW50UHRyKTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfc2V0TmF0aXZlTWVzc2FnZVF1ZXVlKEpOSUVudiogZW52LCBqb2JqZWN0IG1lc3NhZ2VRdWV1ZU9iaiwKKyAgICAgICAgTmF0aXZlTWVzc2FnZVF1ZXVlKiBuYXRpdmVNZXNzYWdlUXVldWUpIHsKKyAgICBlbnYtPlNldEludEZpZWxkKG1lc3NhZ2VRdWV1ZU9iaiwgZ01lc3NhZ2VRdWV1ZUNsYXNzSW5mby5tUHRyLAorICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8amludD4obmF0aXZlTWVzc2FnZVF1ZXVlKSk7Cit9CisKK3NwPFBvbGxMb29wPiBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9nZXRQb2xsTG9vcChKTklFbnYqIGVudiwgam9iamVjdCBtZXNzYWdlUXVldWVPYmopIHsKKyAgICBOYXRpdmVNZXNzYWdlUXVldWUqIG5hdGl2ZU1lc3NhZ2VRdWV1ZSA9CisgICAgICAgICAgICBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9nZXROYXRpdmVNZXNzYWdlUXVldWUoZW52LCBtZXNzYWdlUXVldWVPYmopOworICAgIHJldHVybiBuYXRpdmVNZXNzYWdlUXVldWUgIT0gTlVMTCA/IG5hdGl2ZU1lc3NhZ2VRdWV1ZS0+Z2V0UG9sbExvb3AoKSA6IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX25hdGl2ZUluaXQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKSB7CisgICAgTmF0aXZlTWVzc2FnZVF1ZXVlKiBuYXRpdmVNZXNzYWdlUXVldWUgPSBuZXcgTmF0aXZlTWVzc2FnZVF1ZXVlKCk7CisgICAgaWYgKCEgbmF0aXZlTWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIGpuaVRocm93UnVudGltZUV4Y2VwdGlvbihlbnYsICJVbmFibGUgdG8gYWxsb2NhdGUgbmF0aXZlIHF1ZXVlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9zZXROYXRpdmVNZXNzYWdlUXVldWUoZW52LCBvYmosIG5hdGl2ZU1lc3NhZ2VRdWV1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX25hdGl2ZURlc3Ryb3koSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKSB7CisgICAgTmF0aXZlTWVzc2FnZVF1ZXVlKiBuYXRpdmVNZXNzYWdlUXVldWUgPQorICAgICAgICAgICAgYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfZ2V0TmF0aXZlTWVzc2FnZVF1ZXVlKGVudiwgb2JqKTsKKyAgICBpZiAobmF0aXZlTWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX3NldE5hdGl2ZU1lc3NhZ2VRdWV1ZShlbnYsIG9iaiwgTlVMTCk7CisgICAgICAgIGRlbGV0ZSBuYXRpdmVNZXNzYWdlUXVldWU7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0aHJvd1F1ZXVlTm90SW5pdGlhbGl6ZWQoSk5JRW52KiBlbnYpIHsKKyAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwgIk1lc3NhZ2UgcXVldWUgbm90IGluaXRpYWxpemVkIik7Cit9CisKK3N0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9uYXRpdmVQb2xsT25jZShKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICAgIGppbnQgdGltZW91dE1pbGxpcykgeworICAgIE5hdGl2ZU1lc3NhZ2VRdWV1ZSogbmF0aXZlTWVzc2FnZVF1ZXVlID0KKyAgICAgICAgICAgIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX2dldE5hdGl2ZU1lc3NhZ2VRdWV1ZShlbnYsIG9iaik7CisgICAgaWYgKCEgbmF0aXZlTWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIHRocm93UXVldWVOb3RJbml0aWFsaXplZChlbnYpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBuYXRpdmVNZXNzYWdlUXVldWUtPnBvbGxPbmNlKHRpbWVvdXRNaWxsaXMpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9uYXRpdmVXYWtlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikgeworICAgIE5hdGl2ZU1lc3NhZ2VRdWV1ZSogbmF0aXZlTWVzc2FnZVF1ZXVlID0KKyAgICAgICAgICAgIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX2dldE5hdGl2ZU1lc3NhZ2VRdWV1ZShlbnYsIG9iaik7CisgICAgaWYgKCEgbmF0aXZlTWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIHRocm93UXVldWVOb3RJbml0aWFsaXplZChlbnYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJldHVybiBuYXRpdmVNZXNzYWdlUXVldWUtPndha2UoKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGdNZXNzYWdlUXVldWVNZXRob2RzW10gPSB7CisgICAgLyogbmFtZSwgc2lnbmF0dXJlLCBmdW5jUHRyICovCisgICAgeyAibmF0aXZlSW5pdCIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfbmF0aXZlSW5pdCB9LAorICAgIHsgIm5hdGl2ZURlc3Ryb3kiLCAiKClWIiwgKHZvaWQqKWFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX25hdGl2ZURlc3Ryb3kgfSwKKyAgICB7ICJuYXRpdmVQb2xsT25jZSIsICIoSSlaIiwgKHZvaWQqKWFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX25hdGl2ZVBvbGxPbmNlIH0sCisgICAgeyAibmF0aXZlV2FrZSIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfbmF0aXZlV2FrZSB9Cit9OworCisjZGVmaW5lIEZJTkRfQ0xBU1ModmFyLCBjbGFzc05hbWUpIFwKKyAgICAgICAgdmFyID0gZW52LT5GaW5kQ2xhc3MoY2xhc3NOYW1lKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBjbGFzcyAiIGNsYXNzTmFtZSk7IFwKKyAgICAgICAgdmFyID0gamNsYXNzKGVudi0+TmV3R2xvYmFsUmVmKHZhcikpOworCisjZGVmaW5lIEdFVF9GSUVMRF9JRCh2YXIsIGNsYXp6LCBmaWVsZE5hbWUsIGZpZWxkRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldEZpZWxkSUQoY2xhenosIGZpZWxkTmFtZSwgZmllbGREZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBmaWVsZCAiIGZpZWxkTmFtZSk7CisKK2ludCByZWdpc3Rlcl9hbmRyb2lkX29zX01lc3NhZ2VRdWV1ZShKTklFbnYqIGVudikgeworICAgIGludCByZXMgPSBqbmlSZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LCAiYW5kcm9pZC9vcy9NZXNzYWdlUXVldWUiLAorICAgICAgICAgICAgZ01lc3NhZ2VRdWV1ZU1ldGhvZHMsIE5FTEVNKGdNZXNzYWdlUXVldWVNZXRob2RzKSk7CisgICAgTE9HX0ZBVEFMX0lGKHJlcyA8IDAsICJVbmFibGUgdG8gcmVnaXN0ZXIgbmF0aXZlIG1ldGhvZHMuIik7CisKKyAgICBGSU5EX0NMQVNTKGdNZXNzYWdlUXVldWVDbGFzc0luZm8uY2xhenosICJhbmRyb2lkL29zL01lc3NhZ2VRdWV1ZSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdNZXNzYWdlUXVldWVDbGFzc0luZm8ubVB0ciwgZ01lc3NhZ2VRdWV1ZUNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtUHRyIiwgIkkiKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuaCBiL2NvcmUvam5pL2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM3NDJlMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX0FORFJPSURfT1NfTUVTU0FHRVFVRVVFX0gKKyNkZWZpbmUgX0FORFJPSURfT1NfTUVTU0FHRVFVRVVFX0gKKworI2luY2x1ZGUgImpuaS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIFBvbGxMb29wOworCitleHRlcm4gc3A8UG9sbExvb3A+IGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX2dldFBvbGxMb29wKEpOSUVudiogZW52LCBqb2JqZWN0IG1lc3NhZ2VRdWV1ZU9iaik7CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIF9BTkRST0lEX09TX01FU1NBR0VRVUVVRV9ICmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3NlcnZlcl9CbHVldG9vdGhBMmRwU2VydmljZS5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX3NlcnZlcl9CbHVldG9vdGhBMmRwU2VydmljZS5jcHAKaW5kZXggY2Y1M2EwNi4uOGM3OTVhZiAxMDA2NDQKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF9zZXJ2ZXJfQmx1ZXRvb3RoQTJkcFNlcnZpY2UuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfc2VydmVyX0JsdWV0b290aEEyZHBTZXJ2aWNlLmNwcApAQCAtMjU2LDEwICsyNTYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgcGFyc2VfcHJvcGVydHlfY2hhbmdlKGVudiwgbXNnLCAoUHJvcGVydGllcyAqKSZzaW5rX3Byb3BlcnRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzaW5rX3Byb3BlcnRpZXMpIC8gc2l6ZW9mKFByb3BlcnRpZXMpKTsKICAgICAgICAgY29uc3QgY2hhciAqY19wYXRoID0gZGJ1c19tZXNzYWdlX2dldF9wYXRoKG1zZyk7CisgICAgICAgIGpzdHJpbmcgcGF0aCA9IGVudi0+TmV3U3RyaW5nVVRGKGNfcGF0aCk7CiAgICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobmF0LT5tZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Rfb25TaW5rUHJvcGVydHlDaGFuZ2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+TmV3U3RyaW5nVVRGKGNfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJfYXJyYXkpOworICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHBhdGgpOwogICAgICAgICByZXN1bHQgPSBEQlVTX0hBTkRMRVJfUkVTVUxUX0hBTkRMRUQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSBlbHNlIHsKQEAgLTI5MiwxMCArMjk0LDEzIEBACiAgICAgICAgIHJlc3VsdCA9IEpOSV9GQUxTRTsKICAgICB9CiAgICAgTE9HVigiLi4uIERldmljZSBQYXRoID0gJXMsIHJlc3VsdCA9ICVkIiwgcGF0aCwgcmVzdWx0KTsKKworICAgIGpzdHJpbmcgalBhdGggPSBlbnYtPk5ld1N0cmluZ1VURihwYXRoKTsKICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG5hdC0+bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Rfb25Db25uZWN0U2lua1Jlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+TmV3U3RyaW5nVVRGKHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgalBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoalBhdGgpOwogICAgIGZyZWUodXNlcik7CiB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfc2VydmVyX0JsdWV0b290aEV2ZW50TG9vcC5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX3NlcnZlcl9CbHVldG9vdGhFdmVudExvb3AuY3BwCmluZGV4IDI1OWNjMDEuLjAxYjY3MTEgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2FuZHJvaWRfc2VydmVyX0JsdWV0b290aEV2ZW50TG9vcC5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF9zZXJ2ZXJfQmx1ZXRvb3RoRXZlbnRMb29wLmNwcApAQCAtMTA2MSw2ICsxMDYxLDggQEAKICAgICBEQnVzRXJyb3IgZXJyOwogICAgIGRidXNfZXJyb3JfaW5pdCgmZXJyKTsKICAgICBKTklFbnYgKmVudjsKKyAgICBqc3RyaW5nIGFkZHI7CisKICAgICBuYXQtPnZtLT5HZXRFbnYoKHZvaWQqKikmZW52LCBuYXQtPmVudlZlcik7CiAKICAgICBMT0dWKCIuLi4gYWRkcmVzcyA9ICVzIiwgYWRkcmVzcyk7CkBAIC0xMTA5LDEwICsxMTExLDEyIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBhZGRyID0gZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyk7CiAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChuYXQtPm1lLAogICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX29uQ3JlYXRlUGFpcmVkRGV2aWNlUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGFkZHIpOwogZG9uZToKICAgICBkYnVzX2Vycm9yX2ZyZWUoJmVycik7CiAgICAgZnJlZSh1c2VyKTsKQEAgLTExMzksMTAgKzExNDMsMTIgQEAKICAgICAgICAgfQogICAgICAgICBMT0dfQU5EX0ZSRUVfREJVU19FUlJPUigmZXJyKTsKICAgICB9CisgICAganN0cmluZyBhZGRyID0gZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyk7CiAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChuYXQtPm1lLAogICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX29uQ3JlYXRlRGV2aWNlUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGFkZHIpOwogICAgIGZyZWUodXNlcik7CiB9CiAKQEAgLTExNjMsMTAgKzExNjksMTIgQEAKICAgICAgICAgTE9HX0FORF9GUkVFX0RCVVNfRVJST1IoJmVycik7CiAgICAgICAgIHJlc3VsdCA9IEpOSV9GQUxTRTsKICAgICB9CisgICAganN0cmluZyBqUGF0aCA9IGVudi0+TmV3U3RyaW5nVVRGKHBhdGgpOwogICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobmF0LT5tZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9vbkRpc2NvdmVyU2VydmljZXNSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnYtPk5ld1N0cmluZ1VURihwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGpQYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpQYXRoKTsKICAgICBmcmVlKHVzZXIpOwogfQogCkBAIC0xMTk0LDEwICsxMjAyLDEyIEBACiAgICAgfQogCiBkb25lOgorICAgIGpzdHJpbmcgYWRkciA9IGVudi0+TmV3U3RyaW5nVVRGKGFkZHJlc3MpOwogICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobmF0LT5tZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9vbkdldERldmljZVNlcnZpY2VDaGFubmVsUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCk7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihhZGRyKTsKICAgICBmcmVlKHVzZXIpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3V0aWxfQXNzZXRNYW5hZ2VyLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Bc3NldE1hbmFnZXIuY3BwCmluZGV4IGEyYjdjYzQuLmI3ZDBjNjcgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Bc3NldE1hbmFnZXIuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Bc3NldE1hbmFnZXIuY3BwCkBAIC0xNTA0LDggKzE1MDQsNyBAQAogICAgIH0KIAogICAgIGpvYmplY3RBcnJheSBhcnJheSA9IGVudi0+TmV3T2JqZWN0QXJyYXkoTiwgY2xzLCBOVUxMKTsKLSAgICBpZiAoYXJyYXkgPT0gTlVMTCkgewotICAgICAgICBkb1Rocm93KGVudiwgImphdmEvbGFuZy9PdXRPZk1lbW9yeUVycm9yIik7CisgICAgaWYgKGVudi0+RXhjZXB0aW9uQ2hlY2soKSkgewogICAgICAgICByZXMudW5sb2NrQmFnKHN0YXJ0T2ZCYWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xNTMzLDE1ICsxNTMyLDIzIEBACiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90KiBzdHIxNiA9IHBvb2wtPnN0cmluZ0F0KHZhbHVlLmRhdGEsICZzdHJMZW4pOwogICAgICAgICAgICAgICAgIHN0ciA9IGVudi0+TmV3U3RyaW5nKHN0cjE2LCBzdHJMZW4pOwotICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBkb1Rocm93KGVudiwgImphdmEvbGFuZy9PdXRPZk1lbW9yeUVycm9yIik7Ci0gICAgICAgICAgICAgICAgICAgIHJlcy51bmxvY2tCYWcoc3RhcnRPZkJhZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgb25lIG9mIG91ciBOZXdTdHJpbmd7VVRGfSBjYWxscyBmYWlsZWQgZHVlIHRvIG1lbW9yeSwgYW4KKyAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiB3aWxsIGJlIHBlbmRpbmcuCisgICAgICAgICAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgICAgICAgICAgcmVzLnVubG9ja0JhZyhzdGFydE9mQmFnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGVudi0+U2V0T2JqZWN0QXJyYXlFbGVtZW50KGFycmF5LCBpLCBzdHIpOworCisgICAgICAgIC8vIElmIHdlIGhhdmUgYSBsYXJnZSBhbW91bnQgb2Ygc3RyaW5ncyBpbiBvdXIgYXJyYXksIHdlIG1pZ2h0CisgICAgICAgIC8vIG92ZXJmbG93IHRoZSBsb2NhbCByZWZlcmVuY2UgdGFibGUgb2YgdGhlIFZNLgorICAgICAgICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoc3RyKTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXMudW5sb2NrQmFnKHN0YXJ0T2ZCYWcpOwogICAgIHJldHVybiBhcnJheTsKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Qcm9jZXNzLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Qcm9jZXNzLmNwcAppbmRleCA2OGJlNzQxLi43Yzk5MjcxIDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX3V0aWxfUHJvY2Vzcy5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF91dGlsX1Byb2Nlc3MuY3BwCkBAIC01Miw5ICs1MiwxNSBAQAogI2VuZGlmCiAKICNkZWZpbmUgUE9MSUNZX0RFQlVHIDAKKyNkZWZpbmUgR1VBUkRfVEhSRUFEX1BSSU9SSVRZIDAKIAogdXNpbmcgbmFtZXNwYWNlIGFuZHJvaWQ7CiAKKyNpZiBHVUFSRF9USFJFQURfUFJJT1JJVFkKK011dGV4IGdLZXlDcmVhdGVNdXRleDsKK3N0YXRpYyBwdGhyZWFkX2tleV90IGdCZ0tleSA9IC0xOworI2VuZGlmCisKIHN0YXRpYyB2b2lkIHNpZ25hbEV4Y2VwdGlvbkZvclByaW9yaXR5RXJyb3IoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLCBpbnQgZXJyKQogewogICAgIHN3aXRjaCAoZXJyKSB7CkBAIC0yNjQsOSArMjcwLDQxIEBACiAgICAgY2xvc2VkaXIoZCk7CiB9CiAKK3N0YXRpYyB2b2lkIGFuZHJvaWRfb3NfUHJvY2Vzc19zZXRDYW5TZWxmQmFja2dyb3VuZChKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamJvb2xlYW4gYmdPaykgeworICAgIC8vIEVzdGFibGlzaGVzIHRoZSBjYWxsaW5nIHRocmVhZCBhcyBpbGxlZ2FsIHRvIHB1dCBpbnRvIHRoZSBiYWNrZ3JvdW5kLgorICAgIC8vIFR5cGljYWxseSB1c2VkIG9ubHkgZm9yIHRoZSBzeXN0ZW0gcHJvY2VzcydzIG1haW4gbG9vcGVyLgorI2lmIEdVQVJEX1RIUkVBRF9QUklPUklUWQorICAgIExPR1YoIlByb2Nlc3Muc2V0Q2FuU2VsZkJhY2tncm91bmQoJWQpIDogdGlkPSVkIiwgYmdPaywgYW5kcm9pZEdldFRpZCgpKTsKKyAgICB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChnS2V5Q3JlYXRlTXV0ZXgpOworICAgICAgICBpZiAoZ0JnS2V5ID09IC0xKSB7CisgICAgICAgICAgICBwdGhyZWFkX2tleV9jcmVhdGUoJmdCZ0tleSwgTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBpbnZlcnRlZDogIG5vdC1va2F5LCB3ZSBzZXQgYSBzZW50aW5lbCB2YWx1ZQorICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoZ0JnS2V5LCAodm9pZCopKGJnT2sgPyAwIDogMHhiYWFkKSk7CisjZW5kaWYKK30KKwogdm9pZCBhbmRyb2lkX29zX1Byb2Nlc3Nfc2V0VGhyZWFkUHJpb3JpdHkoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBwaWQsIGppbnQgcHJpKQogeworI2lmIEdVQVJEX1RIUkVBRF9QUklPUklUWQorICAgIC8vIGlmIHdlJ3JlIHB1dHRpbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGludG8gdGhlIGJhY2tncm91bmQsIGNoZWNrIHRoZSBUTFMKKyAgICAvLyB0byBtYWtlIHN1cmUgdGhpcyB0aHJlYWQgaXNuJ3QgZ3VhcmRlZC4gIElmIGl0IGlzLCByYWlzZSBhbiBleGNlcHRpb24uCisgICAgaWYgKHByaSA+PSBBTkRST0lEX1BSSU9SSVRZX0JBQ0tHUk9VTkQpIHsKKyAgICAgICAgaWYgKHBpZCA9PSBhbmRyb2lkR2V0VGlkKCkpIHsKKyAgICAgICAgICAgIHZvaWQqIGJnT2sgPSBwdGhyZWFkX2dldHNwZWNpZmljKGdCZ0tleSk7CisgICAgICAgICAgICBpZiAoYmdPayA9PSAoKHZvaWQqKTB4YmFhZCkpIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJUaHJlYWQgbWFya2VkIGZnLW9ubHkgcHV0IHNlbGYgaW4gYmFja2dyb3VuZCEiKTsKKyAgICAgICAgICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvU2VjdXJpdHlFeGNlcHRpb24iLCAiTWF5IG5vdCBwdXQgdGhpcyB0aHJlYWQgaW50byBiYWNrZ3JvdW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBpbnQgcmMgPSBhbmRyb2lkU2V0VGhyZWFkUHJpb3JpdHkocGlkLCBwcmkpOwogICAgIGlmIChyYyAhPSAwKSB7CiAgICAgICAgIGlmIChyYyA9PSBJTlZBTElEX09QRVJBVElPTikgewpAQCAtODUyLDYgKzg5MCw3IEBACiAgICAgeyJnZXRVaWRGb3JOYW1lIiwgICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspSSIsICh2b2lkKilhbmRyb2lkX29zX1Byb2Nlc3NfZ2V0VWlkRm9yTmFtZX0sCiAgICAgeyJnZXRHaWRGb3JOYW1lIiwgICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspSSIsICh2b2lkKilhbmRyb2lkX29zX1Byb2Nlc3NfZ2V0R2lkRm9yTmFtZX0sCiAgICAgeyJzZXRUaHJlYWRQcmlvcml0eSIsICAgIihJSSlWIiwgKHZvaWQqKWFuZHJvaWRfb3NfUHJvY2Vzc19zZXRUaHJlYWRQcmlvcml0eX0sCisgICAgeyJzZXRDYW5TZWxmQmFja2dyb3VuZCIsICIoWilWIiwgKHZvaWQqKWFuZHJvaWRfb3NfUHJvY2Vzc19zZXRDYW5TZWxmQmFja2dyb3VuZH0sCiAgICAgeyJzZXRUaHJlYWRQcmlvcml0eSIsICAgIihJKVYiLCAodm9pZCopYW5kcm9pZF9vc19Qcm9jZXNzX3NldENhbGxpbmdUaHJlYWRQcmlvcml0eX0sCiAgICAgeyJnZXRUaHJlYWRQcmlvcml0eSIsICAgIihJKUkiLCAodm9pZCopYW5kcm9pZF9vc19Qcm9jZXNzX2dldFRocmVhZFByaW9yaXR5fSwKICAgICB7InNldFRocmVhZEdyb3VwIiwgICAgICAiKElJKVYiLCAodm9pZCopYW5kcm9pZF9vc19Qcm9jZXNzX3NldFRocmVhZEdyb3VwfSwKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuY3BwIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE0MzkzYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuY3BwCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJJbnB1dENoYW5uZWwtSk5JIgorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorCisjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CisjaW5jbHVkZSA8YmluZGVyL1BhcmNlbC5oPgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5oIgorI2luY2x1ZGUgImFuZHJvaWRfdXRpbF9CaW5kZXIuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGpjbGFzcyBjbGF6ejsKKworICAgIGpmaWVsZElEIG1QdHI7ICAgLy8gbmF0aXZlIG9iamVjdCBhdHRhY2hlZCB0byB0aGUgRFZNIElucHV0Q2hhbm5lbAorICAgIGptZXRob2RJRCBjdG9yOworfSBnSW5wdXRDaGFubmVsQ2xhc3NJbmZvOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE5hdGl2ZUlucHV0Q2hhbm5lbCB7CitwdWJsaWM6CisgICAgTmF0aXZlSW5wdXRDaGFubmVsKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCk7CisgICAgfk5hdGl2ZUlucHV0Q2hhbm5lbCgpOworCisgICAgaW5saW5lIHNwPElucHV0Q2hhbm5lbD4gZ2V0SW5wdXRDaGFubmVsKCkgeyByZXR1cm4gbUlucHV0Q2hhbm5lbDsgfQorCisgICAgdm9pZCBzZXREaXNwb3NlQ2FsbGJhY2soSW5wdXRDaGFubmVsT2JqRGlzcG9zZUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGludm9rZUFuZFJlbW92ZURpc3Bvc2VDYWxsYmFjayhKTklFbnYqIGVudiwgam9iamVjdCBvYmopOworCitwcml2YXRlOgorICAgIHNwPElucHV0Q2hhbm5lbD4gbUlucHV0Q2hhbm5lbDsKKyAgICBJbnB1dENoYW5uZWxPYmpEaXNwb3NlQ2FsbGJhY2sgbURpc3Bvc2VDYWxsYmFjazsKKyAgICB2b2lkKiBtRGlzcG9zZURhdGE7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hdGl2ZUlucHV0Q2hhbm5lbDo6TmF0aXZlSW5wdXRDaGFubmVsKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgOgorICAgIG1JbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKSwgbURpc3Bvc2VDYWxsYmFjayhOVUxMKSB7Cit9CisKK05hdGl2ZUlucHV0Q2hhbm5lbDo6fk5hdGl2ZUlucHV0Q2hhbm5lbCgpIHsKK30KKwordm9pZCBOYXRpdmVJbnB1dENoYW5uZWw6OnNldERpc3Bvc2VDYWxsYmFjayhJbnB1dENoYW5uZWxPYmpEaXNwb3NlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEpIHsKKyAgICBtRGlzcG9zZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgbURpc3Bvc2VEYXRhID0gZGF0YTsKK30KKwordm9pZCBOYXRpdmVJbnB1dENoYW5uZWw6Omludm9rZUFuZFJlbW92ZURpc3Bvc2VDYWxsYmFjayhKTklFbnYqIGVudiwgam9iamVjdCBvYmopIHsKKyAgICBpZiAobURpc3Bvc2VDYWxsYmFjaykgeworICAgICAgICBtRGlzcG9zZUNhbGxiYWNrKGVudiwgb2JqLCBtSW5wdXRDaGFubmVsLCBtRGlzcG9zZURhdGEpOworICAgICAgICBtRGlzcG9zZUNhbGxiYWNrID0gTlVMTDsKKyAgICAgICAgbURpc3Bvc2VEYXRhID0gTlVMTDsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIE5hdGl2ZUlucHV0Q2hhbm5lbCogYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXROYXRpdmVJbnB1dENoYW5uZWwoSk5JRW52KiBlbnYsCisgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqKSB7CisgICAgamludCBpbnRQdHIgPSBlbnYtPkdldEludEZpZWxkKGlucHV0Q2hhbm5lbE9iaiwgZ0lucHV0Q2hhbm5lbENsYXNzSW5mby5tUHRyKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVJbnB1dENoYW5uZWwqPihpbnRQdHIpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX3NldE5hdGl2ZUlucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgam9iamVjdCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsKSB7CisgICAgZW52LT5TZXRJbnRGaWVsZChpbnB1dENoYW5uZWxPYmosIGdJbnB1dENoYW5uZWxDbGFzc0luZm8ubVB0ciwKKyAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGppbnQ+KG5hdGl2ZUlucHV0Q2hhbm5lbCkpOworfQorCitzcDxJbnB1dENoYW5uZWw+IGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0SW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaikgeworICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsID0KKyAgICAgICAgICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0TmF0aXZlSW5wdXRDaGFubmVsKGVudiwgaW5wdXRDaGFubmVsT2JqKTsKKyAgICByZXR1cm4gbmF0aXZlSW5wdXRDaGFubmVsICE9IE5VTEwgPyBuYXRpdmVJbnB1dENoYW5uZWwtPmdldElucHV0Q2hhbm5lbCgpIDogTlVMTDsKK30KKwordm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX3NldERpc3Bvc2VDYWxsYmFjayhKTklFbnYqIGVudiwgam9iamVjdCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgIElucHV0Q2hhbm5lbE9iakRpc3Bvc2VDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogZGF0YSkgeworICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsID0KKyAgICAgICAgICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0TmF0aXZlSW5wdXRDaGFubmVsKGVudiwgaW5wdXRDaGFubmVsT2JqKTsKKyAgICBpZiAobmF0aXZlSW5wdXRDaGFubmVsID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiQ2Fubm90IHNldCBkaXNwb3NlIGNhbGxiYWNrIGJlY2F1c2UgaW5wdXQgY2hhbm5lbCBvYmplY3QgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5hdGl2ZUlucHV0Q2hhbm5lbC0+c2V0RGlzcG9zZUNhbGxiYWNrKGNhbGxiYWNrLCBkYXRhKTsKKyAgICB9Cit9CisKK3N0YXRpYyBqb2JqZWN0IGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfY3JlYXRlSW5wdXRDaGFubmVsKEpOSUVudiogZW52LAorICAgICAgICBOYXRpdmVJbnB1dENoYW5uZWwqIG5hdGl2ZUlucHV0Q2hhbm5lbCkgeworICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqID0gZW52LT5OZXdPYmplY3QoZ0lucHV0Q2hhbm5lbENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgIGdJbnB1dENoYW5uZWxDbGFzc0luZm8uY3Rvcik7CisgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBpbnB1dENoYW5uZWxPYmosIG5hdGl2ZUlucHV0Q2hhbm5lbCk7CisgICAgcmV0dXJuIGlucHV0Q2hhbm5lbE9iajsKK30KKworc3RhdGljIGpvYmplY3RBcnJheSBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZU9wZW5JbnB1dENoYW5uZWxQYWlyKEpOSUVudiogZW52LAorICAgICAgICBqY2xhc3MgY2xhenosIGpzdHJpbmcgbmFtZU9iaikgeworICAgIGNvbnN0IGNoYXIqIG5hbWVDaGFycyA9IGVudi0+R2V0U3RyaW5nVVRGQ2hhcnMobmFtZU9iaiwgTlVMTCk7CisgICAgU3RyaW5nOCBuYW1lKG5hbWVDaGFycyk7CisgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMobmFtZU9iaiwgbmFtZUNoYXJzKTsKKworICAgIHNwPElucHV0Q2hhbm5lbD4gc2VydmVyQ2hhbm5lbDsKKyAgICBzcDxJbnB1dENoYW5uZWw+IGNsaWVudENoYW5uZWw7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gSW5wdXRDaGFubmVsOjpvcGVuSW5wdXRDaGFubmVsUGFpcihuYW1lLCBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsKTsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgTE9HRSgiQ291bGQgbm90IG9wZW4gaW5wdXQgY2hhbm5lbCBwYWlyLiAgc3RhdHVzPSVkIiwgcmVzdWx0KTsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIkNvdWxkIG5vdCBvcGVuIGlucHV0IGNoYW5uZWwgcGFpci4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLy8gVE9ETyBtb3JlIHJvYnVzdCBlcnJvciBjaGVja2luZworICAgIGpvYmplY3Qgc2VydmVyQ2hhbm5lbE9iaiA9IGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfY3JlYXRlSW5wdXRDaGFubmVsKGVudiwKKyAgICAgICAgICAgIG5ldyBOYXRpdmVJbnB1dENoYW5uZWwoc2VydmVyQ2hhbm5lbCkpOworICAgIGpvYmplY3QgY2xpZW50Q2hhbm5lbE9iaiA9IGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfY3JlYXRlSW5wdXRDaGFubmVsKGVudiwKKyAgICAgICAgICAgIG5ldyBOYXRpdmVJbnB1dENoYW5uZWwoY2xpZW50Q2hhbm5lbCkpOworCisgICAgam9iamVjdEFycmF5IGNoYW5uZWxQYWlyID0gZW52LT5OZXdPYmplY3RBcnJheSgyLCBnSW5wdXRDaGFubmVsQ2xhc3NJbmZvLmNsYXp6LCBOVUxMKTsKKyAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChjaGFubmVsUGFpciwgMCwgc2VydmVyQ2hhbm5lbE9iaik7CisgICAgZW52LT5TZXRPYmplY3RBcnJheUVsZW1lbnQoY2hhbm5lbFBhaXIsIDEsIGNsaWVudENoYW5uZWxPYmopOworICAgIHJldHVybiBjaGFubmVsUGFpcjsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVEaXNwb3NlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwgamJvb2xlYW4gZmluYWxpemVkKSB7CisgICAgTmF0aXZlSW5wdXRDaGFubmVsKiBuYXRpdmVJbnB1dENoYW5uZWwgPQorICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBvYmopOworICAgIGlmIChuYXRpdmVJbnB1dENoYW5uZWwpIHsKKyAgICAgICAgaWYgKGZpbmFsaXplZCkgeworICAgICAgICAgICAgTE9HVygiSW5wdXQgY2hhbm5lbCBvYmplY3QgJyVzJyB3YXMgZmluYWxpemVkIHdpdGhvdXQgYmVpbmcgZGlzcG9zZWQhIiwKKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW5wdXRDaGFubmVsLT5nZXRJbnB1dENoYW5uZWwoKS0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIG5hdGl2ZUlucHV0Q2hhbm5lbC0+aW52b2tlQW5kUmVtb3ZlRGlzcG9zZUNhbGxiYWNrKGVudiwgb2JqKTsKKworICAgICAgICBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX3NldE5hdGl2ZUlucHV0Q2hhbm5lbChlbnYsIG9iaiwgTlVMTCk7CisgICAgICAgIGRlbGV0ZSBuYXRpdmVJbnB1dENoYW5uZWw7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZVRyYW5zZmVyVG8oSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAorICAgICAgICBqb2JqZWN0IG90aGVyT2JqKSB7CisgICAgaWYgKGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0SW5wdXRDaGFubmVsKGVudiwgb3RoZXJPYmopICE9IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgIk90aGVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIG5hdGl2ZSBpbnB1dCBjaGFubmVsLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTmF0aXZlSW5wdXRDaGFubmVsKiBuYXRpdmVJbnB1dENoYW5uZWwgPQorICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBvYmopOworICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfc2V0TmF0aXZlSW5wdXRDaGFubmVsKGVudiwgb3RoZXJPYmosIG5hdGl2ZUlucHV0Q2hhbm5lbCk7CisgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBvYmosIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZVJlYWRGcm9tUGFyY2VsKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKKyAgICAgICAgam9iamVjdCBwYXJjZWxPYmopIHsKKyAgICBpZiAoYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LCBvYmopICE9IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGFscmVhZHkgaGFzIGEgbmF0aXZlIGlucHV0IGNoYW5uZWwuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQYXJjZWwqIHBhcmNlbCA9IHBhcmNlbEZvckphdmFPYmplY3QoZW52LCBwYXJjZWxPYmopOworICAgIGlmIChwYXJjZWwpIHsKKyAgICAgICAgYm9vbCBpc0luaXRpYWxpemVkID0gcGFyY2VsLT5yZWFkSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgIFN0cmluZzggbmFtZSA9IHBhcmNlbC0+cmVhZFN0cmluZzgoKTsKKyAgICAgICAgICAgIGludDMyX3QgYXNobWVtRmQgPSBkdXAocGFyY2VsLT5yZWFkRmlsZURlc2NyaXB0b3IoKSk7CisgICAgICAgICAgICBpbnQzMl90IHJlY2VpdmVQaXBlRmQgPSBkdXAocGFyY2VsLT5yZWFkRmlsZURlc2NyaXB0b3IoKSk7CisgICAgICAgICAgICBpbnQzMl90IHNlbmRQaXBlRmQgPSBkdXAocGFyY2VsLT5yZWFkRmlsZURlc2NyaXB0b3IoKSk7CisgICAgICAgICAgICBpZiAoYXNobWVtRmQgPCAwIHx8IHJlY2VpdmVQaXBlRmQgPCAwIHx8IHNlbmRQaXBlRmQgPCAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGFzaG1lbUZkID49IDApIDo6Y2xvc2UoYXNobWVtRmQpOworICAgICAgICAgICAgICAgIGlmIChyZWNlaXZlUGlwZUZkID49IDApIDo6Y2xvc2UocmVjZWl2ZVBpcGVGZCk7CisgICAgICAgICAgICAgICAgaWYgKHNlbmRQaXBlRmQgPj0gMCkgOjpjbG9zZShzZW5kUGlwZUZkKTsKKyAgICAgICAgICAgICAgICBqbmlUaHJvd1J1bnRpbWVFeGNlcHRpb24oZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCByZWFkIGlucHV0IGNoYW5uZWwgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHBhcmNlbC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIElucHV0Q2hhbm5lbCogaW5wdXRDaGFubmVsID0gbmV3IElucHV0Q2hhbm5lbChuYW1lLCBhc2htZW1GZCwKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZVBpcGVGZCwgc2VuZFBpcGVGZCk7CisgICAgICAgICAgICBOYXRpdmVJbnB1dENoYW5uZWwqIG5hdGl2ZUlucHV0Q2hhbm5lbCA9IG5ldyBOYXRpdmVJbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKTsKKworICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBvYmosIG5hdGl2ZUlucHV0Q2hhbm5lbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfbmF0aXZlV3JpdGVUb1BhcmNlbChKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICAgIGpvYmplY3QgcGFyY2VsT2JqKSB7CisgICAgUGFyY2VsKiBwYXJjZWwgPSBwYXJjZWxGb3JKYXZhT2JqZWN0KGVudiwgcGFyY2VsT2JqKTsKKyAgICBpZiAocGFyY2VsKSB7CisgICAgICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsID0KKyAgICAgICAgICAgICAgICBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldE5hdGl2ZUlucHV0Q2hhbm5lbChlbnYsIG9iaik7CisgICAgICAgIGlmIChuYXRpdmVJbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIHNwPElucHV0Q2hhbm5lbD4gaW5wdXRDaGFubmVsID0gbmF0aXZlSW5wdXRDaGFubmVsLT5nZXRJbnB1dENoYW5uZWwoKTsKKworICAgICAgICAgICAgcGFyY2VsLT53cml0ZUludDMyKDEpOworICAgICAgICAgICAgcGFyY2VsLT53cml0ZVN0cmluZzgoaW5wdXRDaGFubmVsLT5nZXROYW1lKCkpOworICAgICAgICAgICAgcGFyY2VsLT53cml0ZUR1cEZpbGVEZXNjcmlwdG9yKGlucHV0Q2hhbm5lbC0+Z2V0QXNobWVtRmQoKSk7CisgICAgICAgICAgICBwYXJjZWwtPndyaXRlRHVwRmlsZURlc2NyaXB0b3IoaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCkpOworICAgICAgICAgICAgcGFyY2VsLT53cml0ZUR1cEZpbGVEZXNjcmlwdG9yKGlucHV0Q2hhbm5lbC0+Z2V0U2VuZFBpcGVGZCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcmNlbC0+d3JpdGVJbnQzMigwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGpzdHJpbmcgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVHZXROYW1lKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikgeworICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsID0KKyAgICAgICAgICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0TmF0aXZlSW5wdXRDaGFubmVsKGVudiwgb2JqKTsKKyAgICBpZiAoISBuYXRpdmVJbnB1dENoYW5uZWwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAganN0cmluZyBuYW1lID0gZW52LT5OZXdTdHJpbmdVVEYobmF0aXZlSW5wdXRDaGFubmVsLT5nZXRJbnB1dENoYW5uZWwoKS0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGdJbnB1dENoYW5uZWxNZXRob2RzW10gPSB7CisgICAgLyogbmFtZSwgc2lnbmF0dXJlLCBmdW5jUHRyICovCisgICAgeyAibmF0aXZlT3BlbklucHV0Q2hhbm5lbFBhaXIiLCAiKExqYXZhL2xhbmcvU3RyaW5nOylbTGFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWw7IiwKKyAgICAgICAgICAgICh2b2lkKilhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZU9wZW5JbnB1dENoYW5uZWxQYWlyIH0sCisgICAgeyAibmF0aXZlRGlzcG9zZSIsICIoWilWIiwKKyAgICAgICAgICAgICh2b2lkKilhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZURpc3Bvc2UgfSwKKyAgICB7ICJuYXRpdmVUcmFuc2ZlclRvIiwgIihMYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbDspViIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVUcmFuc2ZlclRvIH0sCisgICAgeyAibmF0aXZlUmVhZEZyb21QYXJjZWwiLCAiKExhbmRyb2lkL29zL1BhcmNlbDspViIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVSZWFkRnJvbVBhcmNlbCB9LAorICAgIHsgIm5hdGl2ZVdyaXRlVG9QYXJjZWwiLCAiKExhbmRyb2lkL29zL1BhcmNlbDspViIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVXcml0ZVRvUGFyY2VsIH0sCisgICAgeyAibmF0aXZlR2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVHZXROYW1lIH0sCit9OworCisjZGVmaW5lIEZJTkRfQ0xBU1ModmFyLCBjbGFzc05hbWUpIFwKKyAgICAgICAgdmFyID0gZW52LT5GaW5kQ2xhc3MoY2xhc3NOYW1lKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBjbGFzcyAiIGNsYXNzTmFtZSk7IFwKKyAgICAgICAgdmFyID0gamNsYXNzKGVudi0+TmV3R2xvYmFsUmVmKHZhcikpOworCisjZGVmaW5lIEdFVF9NRVRIT0RfSUQodmFyLCBjbGF6eiwgbWV0aG9kTmFtZSwgbWV0aG9kRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCBtZXRob2ROYW1lLCBtZXRob2REZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBtZXRob2QgIiBtZXRob2ROYW1lKTsKKworI2RlZmluZSBHRVRfRklFTERfSUQodmFyLCBjbGF6eiwgZmllbGROYW1lLCBmaWVsZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCBmaWVsZE5hbWUsIGZpZWxkRGVzY3JpcHRvcik7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgZmllbGQgIiBmaWVsZE5hbWUpOworCitpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbChKTklFbnYqIGVudikgeworICAgIGludCByZXMgPSBqbmlSZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LCAiYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbCIsCisgICAgICAgICAgICBnSW5wdXRDaGFubmVsTWV0aG9kcywgTkVMRU0oZ0lucHV0Q2hhbm5lbE1ldGhvZHMpKTsKKyAgICBMT0dfRkFUQUxfSUYocmVzIDwgMCwgIlVuYWJsZSB0byByZWdpc3RlciBuYXRpdmUgbWV0aG9kcy4iKTsKKworICAgIEZJTkRfQ0xBU1MoZ0lucHV0Q2hhbm5lbENsYXNzSW5mby5jbGF6eiwgImFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWwiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRDaGFubmVsQ2xhc3NJbmZvLm1QdHIsIGdJbnB1dENoYW5uZWxDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibVB0ciIsICJJIik7CisgICAgCisgICAgR0VUX01FVEhPRF9JRChnSW5wdXRDaGFubmVsQ2xhc3NJbmZvLmN0b3IsIGdJbnB1dENoYW5uZWxDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiPGluaXQ+IiwgIigpViIpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuaCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTJkMjgyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9BTkRST0lEX1ZJRVdfSU5QVVRDSEFOTkVMX0gKKyNkZWZpbmUgX0FORFJPSURfVklFV19JTlBVVENIQU5ORUxfSAorCisjaW5jbHVkZSAiam5pLmgiCisKKyNpbmNsdWRlIDx1aS9JbnB1dFRyYW5zcG9ydC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3R5cGVkZWYgdm9pZCAoKklucHV0Q2hhbm5lbE9iakRpc3Bvc2VDYWxsYmFjaykoSk5JRW52KiBlbnYsIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLAorICAgICAgICBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsIHZvaWQqIGRhdGEpOworCitleHRlcm4gc3A8SW5wdXRDaGFubmVsPiBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldElucHV0Q2hhbm5lbChKTklFbnYqIGVudiwKKyAgICAgICAgam9iamVjdCBpbnB1dENoYW5uZWxPYmopOworCisvKiBTZXRzIGEgY2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIElucHV0Q2hhbm5lbCBEVk0gb2JqZWN0IGlzIGRpc3Bvc2VkIChvciBmaW5hbGl6ZWQpLgorICogVGhpcyBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgZGlzcG9zZSBvZiBvdGhlciBuYXRpdmUgb2JqZWN0cyBpbiB0aGUgaW5wdXQgZGlzcGF0Y2hlcgorICogYW5kIGlucHV0IHF1ZXVlIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiAqLworZXh0ZXJuIHZvaWQgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXREaXNwb3NlQ2FsbGJhY2soSk5JRW52KiBlbnYsIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLAorICAgICAgICBJbnB1dENoYW5uZWxPYmpEaXNwb3NlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEgPSBOVUxMKTsKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gX0FORFJPSURfT1NfSU5QVVRDSEFOTkVMX0gKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dFF1ZXVlLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dFF1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmIzY2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X0lucHV0UXVldWUuY3BwCkBAIC0wLDAgKzEsNDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJJbnB1dFF1ZXVlLUpOSSIKKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgdGhlIGRpc3BhdGNoIGN5Y2xlLgorI2RlZmluZSBERUJVR19ESVNQQVRDSF9DWUNMRSAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCByZWdpc3RyYXRpb25zLgorI2RlZmluZSBERUJVR19SRUdJU1RSQVRJT04gMAorCisKKyNpbmNsdWRlICJKTklIZWxwLmgiCisKKyNpbmNsdWRlIDxhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaD4KKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKyNpbmNsdWRlIDx1dGlscy9Qb2xsTG9vcC5oPgorI2luY2x1ZGUgPHV0aWxzL0tleWVkVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSAiYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuaCIKKyNpbmNsdWRlICJhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsLmgiCisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X0tleUV2ZW50LmgiCisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgc3RydWN0IHsKKyAgICBqY2xhc3MgY2xheno7CisKKyAgICBqbWV0aG9kSUQgZGlzcGF0Y2hLZXlFdmVudDsKKyAgICBqbWV0aG9kSUQgZGlzcGF0Y2hNb3Rpb25FdmVudDsKK30gZ0lucHV0UXVldWVDbGFzc0luZm87CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTmF0aXZlSW5wdXRRdWV1ZSB7CitwdWJsaWM6CisgICAgTmF0aXZlSW5wdXRRdWV1ZSgpOworICAgIH5OYXRpdmVJbnB1dFF1ZXVlKCk7CisKKyAgICBzdGF0dXNfdCByZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgam9iamVjdCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgICAgICBqb2JqZWN0IGlucHV0SGFuZGxlck9iaiwgam9iamVjdCBtZXNzYWdlUXVldWVPYmopOworCisgICAgc3RhdHVzX3QgdW5yZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgam9iamVjdCBpbnB1dENoYW5uZWxPYmopOworCisgICAgc3RhdHVzX3QgZmluaXNoZWQoSk5JRW52KiBlbnYsIGpsb25nIGZpbmlzaGVkVG9rZW4sIGJvb2wgaWdub3JlU3B1cmlvdXNGaW5pc2gpOworCitwcml2YXRlOgorICAgIGNsYXNzIENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCk7CisKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gU3RhdHVzIHsKKyAgICAgICAgICAgIC8vIEV2ZXJ5dGhpbmcgaXMgcGVhY2h5LgorICAgICAgICAgICAgU1RBVFVTX05PUk1BTCwKKyAgICAgICAgICAgIC8vIFRoZSBpbnB1dCBjaGFubmVsIGhhcyBiZWVuIHVucmVnaXN0ZXJlZC4KKyAgICAgICAgICAgIFNUQVRVU19aT01CSUUKKyAgICAgICAgfTsKKworICAgICAgICBDb25uZWN0aW9uKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCwgY29uc3Qgc3A8UG9sbExvb3A+JiBwb2xsTG9vcCk7CisKKyAgICAgICAgaW5saW5lIGNvbnN0IGNoYXIqIGdldElucHV0Q2hhbm5lbE5hbWUoKSBjb25zdCB7IHJldHVybiBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKTsgfQorCisgICAgICAgIFN0YXR1cyBzdGF0dXM7CisKKyAgICAgICAgc3A8SW5wdXRDaGFubmVsPiBpbnB1dENoYW5uZWw7CisgICAgICAgIElucHV0Q29uc3VtZXIgaW5wdXRDb25zdW1lcjsKKyAgICAgICAgc3A8UG9sbExvb3A+IHBvbGxMb29wOworICAgICAgICBqb2JqZWN0IGlucHV0SGFuZGxlck9iakdsb2JhbDsKKyAgICAgICAgUHJlYWxsb2NhdGVkSW5wdXRFdmVudEZhY3RvcnkgaW5wdXRFdmVudEZhY3Rvcnk7CisKKyAgICAgICAgLy8gVGhlIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgY3VycmVudCBldmVudCBiZWluZyBkaXNwYXRjaGVkLgorICAgICAgICAvLyBUaGlzIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgZmluaXNoZWQgdG9rZW4gYXMgYSB3YXkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZpbmlzaGVkCisgICAgICAgIC8vIHRva2VuIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSBzZW5kaW5nIGEgZmluaXNoZWQgc2lnbmFsIGJhY2sgdG8gdGhlIHB1Ymxpc2hlci4KKyAgICAgICAgdWludDMyX3QgbWVzc2FnZVNlcU51bTsKKworICAgICAgICAvLyBUcnVlIGlmIGEgbWVzc2FnZSBoYXMgYmVlbiByZWNlaXZlZCBmcm9tIHRoZSBwdWJsaXNoZXIgYnV0IG5vdCB5ZXQgZmluaXNoZWQuCisgICAgICAgIGJvb2wgbWVzc2FnZUluUHJvZ3Jlc3M7CisgICAgfTsKKworICAgIE11dGV4IG1Mb2NrOworICAgIEtleWVkVmVjdG9yPGludDMyX3QsIHNwPENvbm5lY3Rpb24+ID4gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQ7CisKKyAgICBzdGF0aWMgdm9pZCBoYW5kbGVJbnB1dENoYW5uZWxEaXNwb3NlZChKTklFbnYqIGVudiwKKyAgICAgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLCBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsIHZvaWQqIGRhdGEpOworCisgICAgc3RhdGljIGJvb2wgaGFuZGxlUmVjZWl2ZUNhbGxiYWNrKGludCByZWNlaXZlRmQsIGludCBldmVudHMsIHZvaWQqIGRhdGEpOworCisgICAgc3RhdGljIGpsb25nIGdlbmVyYXRlRmluaXNoZWRUb2tlbihpbnQzMl90IHJlY2VpdmVGZCwgaW50MzJfdCBtZXNzYWdlU2VxTnVtKTsKKworICAgIHN0YXRpYyB2b2lkIHBhcnNlRmluaXNoZWRUb2tlbihqbG9uZyBmaW5pc2hlZFRva2VuLAorICAgICAgICAgICAgaW50MzJfdCogb3V0UmVjZWl2ZUZkLCB1aW50MzJfdCogb3V0TWVzc2FnZUluZGV4KTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmF0aXZlSW5wdXRRdWV1ZTo6TmF0aXZlSW5wdXRRdWV1ZSgpIHsKK30KKworTmF0aXZlSW5wdXRRdWV1ZTo6fk5hdGl2ZUlucHV0UXVldWUoKSB7Cit9CisKK3N0YXR1c190IE5hdGl2ZUlucHV0UXVldWU6OnJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaiwKKyAgICAgICAgam9iamVjdCBpbnB1dEhhbmRsZXJPYmosIGpvYmplY3QgbWVzc2FnZVF1ZXVlT2JqKSB7CisgICAgc3A8SW5wdXRDaGFubmVsPiBpbnB1dENoYW5uZWwgPSBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldElucHV0Q2hhbm5lbChlbnYsCisgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmopOworICAgIGlmIChpbnB1dENoYW5uZWwgPT0gTlVMTCkgeworICAgICAgICBMT0dXKCJJbnB1dCBjaGFubmVsIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyNpZiBERUJVR19SRUdJU1RSQVRJT04KKyAgICBMT0dEKCJjaGFubmVsICclcycgLSBSZWdpc3RlcmVkIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBzcDxQb2xsTG9vcD4gcG9sbExvb3AgPSBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9nZXRQb2xsTG9vcChlbnYsIG1lc3NhZ2VRdWV1ZU9iaik7CisKKyAgICBpbnQgcmVjZWl2ZUZkOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgcmVjZWl2ZUZkID0gaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCk7CisgICAgICAgIGlmIChtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5pbmRleE9mS2V5KHJlY2VpdmVGZCkgPj0gMCkgeworICAgICAgICAgICAgTE9HVygiQXR0ZW1wdGVkIHRvIHJlZ2lzdGVyIGFscmVhZHkgcmVnaXN0ZXJlZCBpbnB1dCBjaGFubmVsICclcyciLAorICAgICAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisKKyAgICAgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKGlucHV0Q2hhbm5lbCwgcG9sbExvb3ApOworICAgICAgICBzdGF0dXNfdCByZXN1bHQgPSBjb25uZWN0aW9uLT5pbnB1dENvbnN1bWVyLmluaXRpYWxpemUoKTsKKyAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgTE9HVygiRmFpbGVkIHRvIGluaXRpYWxpemUgaW5wdXQgY29uc3VtZXIgZm9yIGlucHV0IGNoYW5uZWwgJyVzJywgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgY29ubmVjdGlvbi0+aW5wdXRIYW5kbGVyT2JqR2xvYmFsID0gZW52LT5OZXdHbG9iYWxSZWYoaW5wdXRIYW5kbGVyT2JqKTsKKworICAgICAgICBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5hZGQocmVjZWl2ZUZkLCBjb25uZWN0aW9uKTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXREaXNwb3NlQ2FsbGJhY2soZW52LCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgICAgICBoYW5kbGVJbnB1dENoYW5uZWxEaXNwb3NlZCwgdGhpcyk7CisKKyAgICBwb2xsTG9vcC0+c2V0Q2FsbGJhY2socmVjZWl2ZUZkLCBQT0xMSU4sIGhhbmRsZVJlY2VpdmVDYWxsYmFjaywgdGhpcyk7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBOYXRpdmVJbnB1dFF1ZXVlOjp1bnJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaikgeworICAgIHNwPElucHV0Q2hhbm5lbD4gaW5wdXRDaGFubmVsID0gYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LAorICAgICAgICAgICAgaW5wdXRDaGFubmVsT2JqKTsKKyAgICBpZiAoaW5wdXRDaGFubmVsID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiSW5wdXQgY2hhbm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisjaWYgREVCVUdfUkVHSVNUUkFUSU9OCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIC0gVW5yZWdpc3RlcmVkIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBpbnQzMl90IHJlY2VpdmVGZDsKKyAgICBzcDxDb25uZWN0aW9uPiBjb25uZWN0aW9uOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgcmVjZWl2ZUZkID0gaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCk7CisgICAgICAgIHNzaXplX3QgY29ubmVjdGlvbkluZGV4ID0gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQuaW5kZXhPZktleShyZWNlaXZlRmQpOworICAgICAgICBpZiAoY29ubmVjdGlvbkluZGV4IDwgMCkgeworICAgICAgICAgICAgTE9HVygiQXR0ZW1wdGVkIHRvIHVucmVnaXN0ZXIgYWxyZWFkeSB1bnJlZ2lzdGVyZWQgaW5wdXQgY2hhbm5lbCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbm5lY3Rpb24gPSBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgIG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLnJlbW92ZUl0ZW1zQXQoY29ubmVjdGlvbkluZGV4KTsKKworICAgICAgICBjb25uZWN0aW9uLT5zdGF0dXMgPSBDb25uZWN0aW9uOjpTVEFUVVNfWk9NQklFOworCisgICAgICAgIGVudi0+RGVsZXRlR2xvYmFsUmVmKGNvbm5lY3Rpb24tPmlucHV0SGFuZGxlck9iakdsb2JhbCk7CisgICAgICAgIGNvbm5lY3Rpb24tPmlucHV0SGFuZGxlck9iakdsb2JhbCA9IE5VTEw7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfc2V0RGlzcG9zZUNhbGxiYWNrKGVudiwgaW5wdXRDaGFubmVsT2JqLCBOVUxMLCBOVUxMKTsKKworICAgIGNvbm5lY3Rpb24tPnBvbGxMb29wLT5yZW1vdmVDYWxsYmFjayhyZWNlaXZlRmQpOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgTmF0aXZlSW5wdXRRdWV1ZTo6ZmluaXNoZWQoSk5JRW52KiBlbnYsIGpsb25nIGZpbmlzaGVkVG9rZW4sIGJvb2wgaWdub3JlU3B1cmlvdXNGaW5pc2gpIHsKKyAgICBpbnQzMl90IHJlY2VpdmVGZDsKKyAgICB1aW50MzJfdCBtZXNzYWdlU2VxTnVtOworICAgIHBhcnNlRmluaXNoZWRUb2tlbihmaW5pc2hlZFRva2VuLCAmcmVjZWl2ZUZkLCAmbWVzc2FnZVNlcU51bSk7CisKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIHNzaXplX3QgY29ubmVjdGlvbkluZGV4ID0gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQuaW5kZXhPZktleShyZWNlaXZlRmQpOworICAgICAgICBpZiAoY29ubmVjdGlvbkluZGV4IDwgMCkgeworICAgICAgICAgICAgaWYgKCEgaWdub3JlU3B1cmlvdXNGaW5pc2gpIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJBdHRlbXB0ZWQgdG8gZmluaXNoIGlucHV0IG9uIGNoYW5uZWwgdGhhdCBpcyBubyBsb25nZXIgcmVnaXN0ZXJlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBERUFEX09CSkVDVDsKKyAgICAgICAgfQorCisgICAgICAgIHNwPENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgIGlmIChtZXNzYWdlU2VxTnVtICE9IGNvbm5lY3Rpb24tPm1lc3NhZ2VTZXFOdW0gfHwgISBjb25uZWN0aW9uLT5tZXNzYWdlSW5Qcm9ncmVzcykgeworICAgICAgICAgICAgaWYgKCEgaWdub3JlU3B1cmlvdXNGaW5pc2gpIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJBdHRlbXB0ZWQgdG8gZmluaXNoIGlucHV0IHR3aWNlIG9uIGNoYW5uZWwgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbm5lY3Rpb24tPm1lc3NhZ2VJblByb2dyZXNzID0gZmFsc2U7CisKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gY29ubmVjdGlvbi0+aW5wdXRDb25zdW1lci5zZW5kRmluaXNoZWRTaWduYWwoKTsKKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgTE9HVygiRmFpbGVkIHRvIHNlbmQgZmluaXNoZWQgc2lnbmFsIG9uIGNoYW5uZWwgJyVzJy4gIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgIH0KKworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IEZpbmlzaGVkIGV2ZW50LiIsCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgIH0gLy8gcmVsZWFzZSBsb2NrCisKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRRdWV1ZTo6aGFuZGxlSW5wdXRDaGFubmVsRGlzcG9zZWQoSk5JRW52KiBlbnYsCisgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLCBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsIHZvaWQqIGRhdGEpIHsKKyAgICBMT0dXKCJJbnB1dCBjaGFubmVsIG9iamVjdCAnJXMnIHdhcyBkaXNwb3NlZCB3aXRob3V0IGZpcnN0IGJlaW5nIHVucmVnaXN0ZXJlZCB3aXRoICIKKyAgICAgICAgICAgICJ0aGUgaW5wdXQgcXVldWUhIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworCisgICAgTmF0aXZlSW5wdXRRdWV1ZSogcSA9IHN0YXRpY19jYXN0PE5hdGl2ZUlucHV0UXVldWUqPihkYXRhKTsKKyAgICBxLT51bnJlZ2lzdGVySW5wdXRDaGFubmVsKGVudiwgaW5wdXRDaGFubmVsT2JqKTsKK30KKworYm9vbCBOYXRpdmVJbnB1dFF1ZXVlOjpoYW5kbGVSZWNlaXZlQ2FsbGJhY2soaW50IHJlY2VpdmVGZCwgaW50IGV2ZW50cywgdm9pZCogZGF0YSkgeworICAgIE5hdGl2ZUlucHV0UXVldWUqIHEgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbnB1dFF1ZXVlKj4oZGF0YSk7CisgICAgSk5JRW52KiBlbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisKKyAgICBzcDxDb25uZWN0aW9uPiBjb25uZWN0aW9uOworICAgIElucHV0RXZlbnQqIGlucHV0RXZlbnQ7CisgICAgam9iamVjdCBpbnB1dEhhbmRsZXJPYmpMb2NhbDsKKyAgICBqbG9uZyBmaW5pc2hlZFRva2VuOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChxLT5tTG9jayk7CisKKyAgICAgICAgc3NpemVfdCBjb25uZWN0aW9uSW5kZXggPSBxLT5tQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5pbmRleE9mS2V5KHJlY2VpdmVGZCk7CisgICAgICAgIGlmIChjb25uZWN0aW9uSW5kZXggPCAwKSB7CisgICAgICAgICAgICBMT0dFKCJSZWNlaXZlZCBzcHVyaW91cyByZWNlaXZlIGNhbGxiYWNrIGZvciB1bmtub3duIGlucHV0IGNoYW5uZWwuICAiCisgICAgICAgICAgICAgICAgICAgICJmZD0lZCwgZXZlbnRzPTB4JXgiLCByZWNlaXZlRmQsIGV2ZW50cyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHJlbW92ZSB0aGUgY2FsbGJhY2sKKyAgICAgICAgfQorCisgICAgICAgIGNvbm5lY3Rpb24gPSBxLT5tQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgIGlmIChldmVudHMgJiAoUE9MTEVSUiB8IFBPTExIVVAgfCBQT0xMTlZBTCkpIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IFB1Ymxpc2hlciBjbG9zZWQgaW5wdXQgY2hhbm5lbCBvciBhbiBlcnJvciBvY2N1cnJlZC4gICIKKyAgICAgICAgICAgICAgICAgICAgImV2ZW50cz0weCV4IiwgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBldmVudHMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyByZW1vdmUgdGhlIGNhbGxiYWNrCisgICAgICAgIH0KKworICAgICAgICBpZiAoISAoZXZlbnRzICYgUE9MTElOKSkgeworICAgICAgICAgICAgTE9HVygiY2hhbm5lbCAnJXMnIH4gUmVjZWl2ZWQgc3B1cmlvdXMgY2FsbGJhY2sgZm9yIHVuaGFuZGxlZCBwb2xsIGV2ZW50LiAgIgorICAgICAgICAgICAgICAgICAgICAiZXZlbnRzPTB4JXgiLCBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIGV2ZW50cyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGNvbm5lY3Rpb24tPmlucHV0Q29uc3VtZXIucmVjZWl2ZURpc3BhdGNoU2lnbmFsKCk7CisgICAgICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IEZhaWxlZCB0byByZWNlaXZlIGRpc3BhdGNoIHNpZ25hbC4gIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gcmVtb3ZlIHRoZSBjYWxsYmFjaworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbm5lY3Rpb24tPm1lc3NhZ2VJblByb2dyZXNzKSB7CisgICAgICAgICAgICBMT0dXKCJjaGFubmVsICclcycgfiBQdWJsaXNoZXIgc2VudCBzcHVyaW91cyBkaXNwYXRjaCBzaWduYWwuIiwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgc3RhdHVzID0gY29ubmVjdGlvbi0+aW5wdXRDb25zdW1lci5jb25zdW1lKCYgY29ubmVjdGlvbi0+aW5wdXRFdmVudEZhY3RvcnksICYgaW5wdXRFdmVudCk7CisgICAgICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgICAgIExPR1coImNoYW5uZWwgJyVzJyB+IEZhaWxlZCB0byBjb25zdW1lIGlucHV0IGV2ZW50LiAgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBzdGF0dXMpOworICAgICAgICAgICAgY29ubmVjdGlvbi0+aW5wdXRDb25zdW1lci5zZW5kRmluaXNoZWRTaWduYWwoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgY29ubmVjdGlvbi0+bWVzc2FnZUluUHJvZ3Jlc3MgPSB0cnVlOworICAgICAgICBjb25uZWN0aW9uLT5tZXNzYWdlU2VxTnVtICs9IDE7CisKKyAgICAgICAgZmluaXNoZWRUb2tlbiA9IGdlbmVyYXRlRmluaXNoZWRUb2tlbihyZWNlaXZlRmQsIGNvbm5lY3Rpb24tPm1lc3NhZ2VTZXFOdW0pOworCisgICAgICAgIGlucHV0SGFuZGxlck9iakxvY2FsID0gZW52LT5OZXdMb2NhbFJlZihjb25uZWN0aW9uLT5pbnB1dEhhbmRsZXJPYmpHbG9iYWwpOworICAgIH0gLy8gcmVsZWFzZSBsb2NrCisKKyAgICAvLyBJbnZva2UgdGhlIGhhbmRsZXIgb3V0c2lkZSBvZiB0aGUgbG9jay4KKyAgICAvLworICAgIC8vIE5vdGU6IGlucHV0RXZlbnQgaXMgc3RvcmVkIGluIGEgZmllbGQgb2YgdGhlIGNvbm5lY3Rpb24gb2JqZWN0IHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5CisgICAgLy8gICAgICAgYmVjb21lIGRpc3Bvc2VkIGR1ZSB0byB0aGUgaW5wdXQgY2hhbm5lbCBiZWluZyB1bnJlZ2lzdGVyZWQgY29uY3VycmVudGx5LgorICAgIC8vICAgICAgIEZvciB0aGlzIHJlYXNvbiwgd2UgZXhwbGljaXRseSBrZWVwIHRoZSBjb25uZWN0aW9uIG9iamVjdCBhbGl2ZSBieSBob2xkaW5nCisgICAgLy8gICAgICAgYSBzdHJvbmcgcG9pbnRlciB0byBpdCB3aXRoaW4gdGhpcyBzY29wZS4gIFdlIGFsc28gZ3JhYmJlZCBhIGxvY2FsIHJlZmVyZW5jZSB0bworICAgIC8vICAgICAgIHRoZSBpbnB1dCBoYW5kbGVyIG9iamVjdCBpdHNlbGYgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKworICAgIGludDMyX3QgaW5wdXRFdmVudFR5cGUgPSBpbnB1dEV2ZW50LT5nZXRUeXBlKCk7CisgICAgaW50MzJfdCBpbnB1dEV2ZW50TmF0dXJlID0gaW5wdXRFdmVudC0+Z2V0TmF0dXJlKCk7CisKKyAgICBqb2JqZWN0IGlucHV0RXZlbnRPYmo7CisgICAgam1ldGhvZElEIGRpc3BhdGNoTWV0aG9kSWQ7CisgICAgc3dpdGNoIChpbnB1dEV2ZW50VHlwZSkgeworICAgIGNhc2UgSU5QVVRfRVZFTlRfVFlQRV9LRVk6CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gUmVjZWl2ZWQga2V5IGV2ZW50LiIsIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKyAgICAgICAgaW5wdXRFdmVudE9iaiA9IGFuZHJvaWRfdmlld19LZXlFdmVudF9mcm9tTmF0aXZlKGVudiwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxLZXlFdmVudCo+KGlucHV0RXZlbnQpKTsKKyAgICAgICAgZGlzcGF0Y2hNZXRob2RJZCA9IGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmRpc3BhdGNoS2V5RXZlbnQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJTlBVVF9FVkVOVF9UWVBFX01PVElPTjoKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiBSZWNlaXZlZCBtb3Rpb24gZXZlbnQuIiwgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgICAgICBpbnB1dEV2ZW50T2JqID0gYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50X2Zyb21OYXRpdmUoZW52LAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1vdGlvbkV2ZW50Kj4oaW5wdXRFdmVudCkpOworICAgICAgICBkaXNwYXRjaE1ldGhvZElkID0gZ0lucHV0UXVldWVDbGFzc0luZm8uZGlzcGF0Y2hNb3Rpb25FdmVudDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoZmFsc2UpOyAvLyBJbnB1dENvbnN1bWVyIHNob3VsZCBwcmV2ZW50IHRoaXMgZnJvbSBldmVyIGhhcHBlbmluZworICAgICAgICBpbnB1dEV2ZW50T2JqID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoISBpbnB1dEV2ZW50T2JqKSB7CisgICAgICAgIExPR1coImNoYW5uZWwgJyVzJyB+IEZhaWxlZCB0byBvYnRhaW4gRFZNIGV2ZW50IG9iamVjdC4iLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaW5wdXRIYW5kbGVyT2JqTG9jYWwpOworICAgICAgICBxLT5maW5pc2hlZChlbnYsIGZpbmlzaGVkVG9rZW4sIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJJbnZva2luZyBpbnB1dCBoYW5kbGVyLiIpOworI2VuZGlmCisgICAgZW52LT5DYWxsU3RhdGljVm9pZE1ldGhvZChnSW5wdXRRdWV1ZUNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgIGRpc3BhdGNoTWV0aG9kSWQsIGlucHV0SGFuZGxlck9iakxvY2FsLCBpbnB1dEV2ZW50T2JqLAorICAgICAgICAgICAgamludChpbnB1dEV2ZW50TmF0dXJlKSwgamxvbmcoZmluaXNoZWRUb2tlbikpOworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgTE9HRCgiUmV0dXJuZWQgZnJvbSBpbnB1dCBoYW5kbGVyLiIpOworI2VuZGlmCisKKyAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgIExPR0UoIkFuIGV4Y2VwdGlvbiBvY2N1cnJlZCB3aGlsZSBpbnZva2luZyB0aGUgaW5wdXQgaGFuZGxlciBmb3IgYW4gZXZlbnQuIik7CisgICAgICAgIExPR0VfRVgoZW52KTsKKyAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworCisgICAgICAgIHEtPmZpbmlzaGVkKGVudiwgZmluaXNoZWRUb2tlbiwgdHJ1ZSAvKmlnbm9yZVNwdXJpb3VzRmluaXNoKi8pOworICAgIH0KKworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaW5wdXRFdmVudE9iaik7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihpbnB1dEhhbmRsZXJPYmpMb2NhbCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2psb25nIE5hdGl2ZUlucHV0UXVldWU6OmdlbmVyYXRlRmluaXNoZWRUb2tlbihpbnQzMl90IHJlY2VpdmVGZCwgaW50MzJfdCBtZXNzYWdlU2VxTnVtKSB7CisgICAgcmV0dXJuIChqbG9uZyhyZWNlaXZlRmQpIDw8IDMyKSB8IGpsb25nKG1lc3NhZ2VTZXFOdW0pOworfQorCit2b2lkIE5hdGl2ZUlucHV0UXVldWU6OnBhcnNlRmluaXNoZWRUb2tlbihqbG9uZyBmaW5pc2hlZFRva2VuLAorICAgICAgICBpbnQzMl90KiBvdXRSZWNlaXZlRmQsIHVpbnQzMl90KiBvdXRNZXNzYWdlSW5kZXgpIHsKKyAgICAqb3V0UmVjZWl2ZUZkID0gaW50MzJfdChmaW5pc2hlZFRva2VuID4+IDMyKTsKKyAgICAqb3V0TWVzc2FnZUluZGV4ID0gdWludDMyX3QoZmluaXNoZWRUb2tlbiAmIDB4ZmZmZmZmZmYpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hdGl2ZUlucHV0UXVldWU6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24oY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsLCBjb25zdCBzcDxQb2xsTG9vcD4mIHBvbGxMb29wKSA6CisgICAgc3RhdHVzKFNUQVRVU19OT1JNQUwpLCBpbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKSwgaW5wdXRDb25zdW1lcihpbnB1dENoYW5uZWwpLAorICAgIHBvbGxMb29wKHBvbGxMb29wKSwgaW5wdXRIYW5kbGVyT2JqR2xvYmFsKE5VTEwpLAorICAgIG1lc3NhZ2VTZXFOdW0oMCksIG1lc3NhZ2VJblByb2dyZXNzKGZhbHNlKSB7Cit9CisKK05hdGl2ZUlucHV0UXVldWU6OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKCkgeworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBOYXRpdmVJbnB1dFF1ZXVlIGdOYXRpdmVJbnB1dFF1ZXVlOworCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRRdWV1ZV9uYXRpdmVSZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaiwgam9iamVjdCBpbnB1dEhhbmRsZXJPYmosIGpvYmplY3QgbWVzc2FnZVF1ZXVlT2JqKSB7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gZ05hdGl2ZUlucHV0UXVldWUucmVnaXN0ZXJJbnB1dENoYW5uZWwoCisgICAgICAgICAgICBlbnYsIGlucHV0Q2hhbm5lbE9iaiwgaW5wdXRIYW5kbGVyT2JqLCBtZXNzYWdlUXVldWVPYmopOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIkZhaWxlZCB0byByZWdpc3RlciBpbnB1dCBjaGFubmVsLiAgIgorICAgICAgICAgICAgICAgICJDaGVjayBsb2dzIGZvciBkZXRhaWxzLiIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF92aWV3X0lucHV0UXVldWVfbmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaikgeworICAgIHN0YXR1c190IHN0YXR1cyA9IGdOYXRpdmVJbnB1dFF1ZXVlLnVucmVnaXN0ZXJJbnB1dENoYW5uZWwoZW52LCBpbnB1dENoYW5uZWxPYmopOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIkZhaWxlZCB0byB1bnJlZ2lzdGVyIGlucHV0IGNoYW5uZWwuICAiCisgICAgICAgICAgICAgICAgIkNoZWNrIGxvZ3MgZm9yIGRldGFpbHMuIik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRRdWV1ZV9uYXRpdmVGaW5pc2hlZChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqbG9uZyBmaW5pc2hlZFRva2VuKSB7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gZ05hdGl2ZUlucHV0UXVldWUuZmluaXNoZWQoCisgICAgICAgICAgICBlbnYsIGZpbmlzaGVkVG9rZW4sIGZhbHNlIC8qaWdub3JlU3B1cmlvdXNGaW5pc2gqLyk7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBqbmlUaHJvd1J1bnRpbWVFeGNlcHRpb24oZW52LCAiRmFpbGVkIHRvIGZpbmlzaCBpbnB1dCBldmVudC4gICIKKyAgICAgICAgICAgICAgICAiQ2hlY2sgbG9ncyBmb3IgZGV0YWlscy4iKTsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnSW5wdXRRdWV1ZU1ldGhvZHNbXSA9IHsKKyAgICAvKiBuYW1lLCBzaWduYXR1cmUsIGZ1bmNQdHIgKi8KKyAgICB7ICJuYXRpdmVSZWdpc3RlcklucHV0Q2hhbm5lbCIsCisgICAgICAgICAgICAiKExhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsO0xhbmRyb2lkL3ZpZXcvSW5wdXRIYW5kbGVyO0xhbmRyb2lkL29zL01lc3NhZ2VRdWV1ZTspViIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0UXVldWVfbmF0aXZlUmVnaXN0ZXJJbnB1dENoYW5uZWwgfSwKKyAgICB7ICJuYXRpdmVVbnJlZ2lzdGVySW5wdXRDaGFubmVsIiwKKyAgICAgICAgICAgICIoTGFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWw7KVYiLAorICAgICAgICAgICAgKHZvaWQqKWFuZHJvaWRfdmlld19JbnB1dFF1ZXVlX25hdGl2ZVVucmVnaXN0ZXJJbnB1dENoYW5uZWwgfSwKKyAgICB7ICJuYXRpdmVGaW5pc2hlZCIsICIoSilWIiwKKyAgICAgICAgICAgICh2b2lkKilhbmRyb2lkX3ZpZXdfSW5wdXRRdWV1ZV9uYXRpdmVGaW5pc2hlZCB9Cit9OworCisjZGVmaW5lIEZJTkRfQ0xBU1ModmFyLCBjbGFzc05hbWUpIFwKKyAgICAgICAgdmFyID0gZW52LT5GaW5kQ2xhc3MoY2xhc3NOYW1lKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBjbGFzcyAiIGNsYXNzTmFtZSk7IFwKKyAgICAgICAgdmFyID0gamNsYXNzKGVudi0+TmV3R2xvYmFsUmVmKHZhcikpOworCisjZGVmaW5lIEdFVF9TVEFUSUNfTUVUSE9EX0lEKHZhciwgY2xhenosIG1ldGhvZE5hbWUsIG1ldGhvZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRTdGF0aWNNZXRob2RJRChjbGF6eiwgbWV0aG9kTmFtZSwgbWV0aG9kRGVzY3JpcHRvcik7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgc3RhdGljIG1ldGhvZCAiIG1ldGhvZE5hbWUpOworCitpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X0lucHV0UXVldWUoSk5JRW52KiBlbnYpIHsKKyAgICBpbnQgcmVzID0gam5pUmVnaXN0ZXJOYXRpdmVNZXRob2RzKGVudiwgImFuZHJvaWQvdmlldy9JbnB1dFF1ZXVlIiwKKyAgICAgICAgICAgIGdJbnB1dFF1ZXVlTWV0aG9kcywgTkVMRU0oZ0lucHV0UXVldWVNZXRob2RzKSk7CisgICAgTE9HX0ZBVEFMX0lGKHJlcyA8IDAsICJVbmFibGUgdG8gcmVnaXN0ZXIgbmF0aXZlIG1ldGhvZHMuIik7CisKKyAgICBGSU5EX0NMQVNTKGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmNsYXp6LCAiYW5kcm9pZC92aWV3L0lucHV0UXVldWUiKTsKKworICAgIEdFVF9TVEFUSUNfTUVUSE9EX0lEKGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmRpc3BhdGNoS2V5RXZlbnQsIGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImRpc3BhdGNoS2V5RXZlbnQiLAorICAgICAgICAgICAgIihMYW5kcm9pZC92aWV3L0lucHV0SGFuZGxlcjtMYW5kcm9pZC92aWV3L0tleUV2ZW50O0lKKVYiKTsKKworICAgIEdFVF9TVEFUSUNfTUVUSE9EX0lEKGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmRpc3BhdGNoTW90aW9uRXZlbnQsIGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImRpc3BhdGNoTW90aW9uRXZlbnQiLAorICAgICAgICAgICAgIihMYW5kcm9pZC92aWV3L0lucHV0SGFuZGxlcjtMYW5kcm9pZC92aWV3L01vdGlvbkV2ZW50O0lKKVYiKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF92aWV3X0tleUV2ZW50LmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY2NDhmNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIktleUV2ZW50LUpOSSIKKworI2luY2x1ZGUgIkpOSUhlbHAuaCIKKworI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oPgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHVpL0lucHV0Lmg+CisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X0tleUV2ZW50LmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgc3RydWN0IHsKKyAgICBqY2xhc3MgY2xheno7CisKKyAgICBqbWV0aG9kSUQgY3RvcjsKKworICAgIGpmaWVsZElEIG1NZXRhU3RhdGU7CisgICAgamZpZWxkSUQgbUFjdGlvbjsKKyAgICBqZmllbGRJRCBtS2V5Q29kZTsKKyAgICBqZmllbGRJRCBtU2NhbkNvZGU7CisgICAgamZpZWxkSUQgbVJlcGVhdENvdW50OworICAgIGpmaWVsZElEIG1EZXZpY2VJZDsKKyAgICBqZmllbGRJRCBtRmxhZ3M7CisgICAgamZpZWxkSUQgbURvd25UaW1lOworICAgIGpmaWVsZElEIG1FdmVudFRpbWU7CisgICAgamZpZWxkSUQgbUNoYXJhY3RlcnM7Cit9IGdLZXlFdmVudENsYXNzSW5mbzsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitqb2JqZWN0IGFuZHJvaWRfdmlld19LZXlFdmVudF9mcm9tTmF0aXZlKEpOSUVudiogZW52LCBjb25zdCBLZXlFdmVudCogZXZlbnQpIHsKKyAgICByZXR1cm4gZW52LT5OZXdPYmplY3QoZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LCBnS2V5RXZlbnRDbGFzc0luZm8uY3RvciwKKyAgICAgICAgICAgIG5hbm9zZWNvbmRzX3RvX21pbGxpc2Vjb25kcyhldmVudC0+Z2V0RG93blRpbWUoKSksCisgICAgICAgICAgICBuYW5vc2Vjb25kc190b19taWxsaXNlY29uZHMoZXZlbnQtPmdldEV2ZW50VGltZSgpKSwKKyAgICAgICAgICAgIGV2ZW50LT5nZXRBY3Rpb24oKSwKKyAgICAgICAgICAgIGV2ZW50LT5nZXRLZXlDb2RlKCksCisgICAgICAgICAgICBldmVudC0+Z2V0UmVwZWF0Q291bnQoKSwKKyAgICAgICAgICAgIGV2ZW50LT5nZXRNZXRhU3RhdGUoKSwKKyAgICAgICAgICAgIGV2ZW50LT5nZXREZXZpY2VJZCgpLAorICAgICAgICAgICAgZXZlbnQtPmdldFNjYW5Db2RlKCksCisgICAgICAgICAgICBldmVudC0+Z2V0RmxhZ3MoKSk7Cit9CisKK3ZvaWQgYW5kcm9pZF92aWV3X0tleUV2ZW50X3RvTmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGV2ZW50T2JqLCBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgS2V5RXZlbnQqIGV2ZW50KSB7CisgICAgamludCBtZXRhU3RhdGUgPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnS2V5RXZlbnRDbGFzc0luZm8ubU1ldGFTdGF0ZSk7CisgICAgamludCBhY3Rpb24gPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnS2V5RXZlbnRDbGFzc0luZm8ubUFjdGlvbik7CisgICAgamludCBrZXlDb2RlID0gZW52LT5HZXRJbnRGaWVsZChldmVudE9iaiwgZ0tleUV2ZW50Q2xhc3NJbmZvLm1LZXlDb2RlKTsKKyAgICBqaW50IHNjYW5Db2RlID0gZW52LT5HZXRJbnRGaWVsZChldmVudE9iaiwgZ0tleUV2ZW50Q2xhc3NJbmZvLm1TY2FuQ29kZSk7CisgICAgamludCByZXBlYXRDb3VudCA9IGVudi0+R2V0SW50RmllbGQoZXZlbnRPYmosIGdLZXlFdmVudENsYXNzSW5mby5tUmVwZWF0Q291bnQpOworICAgIGppbnQgZGV2aWNlSWQgPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnS2V5RXZlbnRDbGFzc0luZm8ubURldmljZUlkKTsKKyAgICBqaW50IGZsYWdzID0gZW52LT5HZXRJbnRGaWVsZChldmVudE9iaiwgZ0tleUV2ZW50Q2xhc3NJbmZvLm1GbGFncyk7CisgICAgamxvbmcgZG93blRpbWUgPSBlbnYtPkdldExvbmdGaWVsZChldmVudE9iaiwgZ0tleUV2ZW50Q2xhc3NJbmZvLm1Eb3duVGltZSk7CisgICAgamxvbmcgZXZlbnRUaW1lID0gZW52LT5HZXRMb25nRmllbGQoZXZlbnRPYmosIGdLZXlFdmVudENsYXNzSW5mby5tRXZlbnRUaW1lKTsKKworICAgIGV2ZW50LT5pbml0aWFsaXplKGRldmljZUlkLCBuYXR1cmUsIGFjdGlvbiwgZmxhZ3MsIGtleUNvZGUsIHNjYW5Db2RlLCBtZXRhU3RhdGUsIHJlcGVhdENvdW50LAorICAgICAgICAgICAgbWlsbGlzZWNvbmRzX3RvX25hbm9zZWNvbmRzKGRvd25UaW1lKSwKKyAgICAgICAgICAgIG1pbGxpc2Vjb25kc190b19uYW5vc2Vjb25kcyhldmVudFRpbWUpKTsKK30KKworc3RhdGljIGpib29sZWFuIG5hdGl2ZV9pc1N5c3RlbUtleShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBrZXlDb2RlKSB7CisgICAgcmV0dXJuIEtleUV2ZW50Ojppc1N5c3RlbUtleShrZXlDb2RlKTsKK30KKworc3RhdGljIGpib29sZWFuIG5hdGl2ZV9oYXNEZWZhdWx0QWN0aW9uKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGtleUNvZGUpIHsKKyAgICByZXR1cm4gS2V5RXZlbnQ6Omhhc0RlZmF1bHRBY3Rpb24oa2V5Q29kZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIGNvbnN0IEpOSU5hdGl2ZU1ldGhvZCBnX21ldGhvZHNbXSA9IHsKKyAgICB7ICJuYXRpdmVfaXNTeXN0ZW1LZXkiLCAiKEkpWiIsICh2b2lkKiluYXRpdmVfaXNTeXN0ZW1LZXkgfSwKKyAgICB7ICJuYXRpdmVfaGFzRGVmYXVsdEFjdGlvbiIsICIoSSlaIiwgKHZvaWQqKW5hdGl2ZV9oYXNEZWZhdWx0QWN0aW9uIH0sCit9OworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga0tleUV2ZW50UGF0aE5hbWUgPSAiYW5kcm9pZC92aWV3L0tleUV2ZW50IjsKKworI2RlZmluZSBGSU5EX0NMQVNTKHZhciwgY2xhc3NOYW1lKSBcCisgICAgICAgIHZhciA9IGVudi0+RmluZENsYXNzKGNsYXNzTmFtZSk7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgY2xhc3MgIiBjbGFzc05hbWUpOyBcCisgICAgICAgIHZhciA9IGpjbGFzcyhlbnYtPk5ld0dsb2JhbFJlZih2YXIpKTsKKworI2RlZmluZSBHRVRfTUVUSE9EX0lEKHZhciwgY2xhenosIG1ldGhvZE5hbWUsIGZpZWxkRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCBtZXRob2ROYW1lLCBmaWVsZERlc2NyaXB0b3IpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIG1ldGhvZCIgbWV0aG9kTmFtZSk7CisKKyNkZWZpbmUgR0VUX0ZJRUxEX0lEKHZhciwgY2xhenosIGZpZWxkTmFtZSwgZmllbGREZXNjcmlwdG9yKSBcCisgICAgICAgIHZhciA9IGVudi0+R2V0RmllbGRJRChjbGF6eiwgZmllbGROYW1lLCBmaWVsZERlc2NyaXB0b3IpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIGZpZWxkICIgZmllbGROYW1lKTsKKworaW50IHJlZ2lzdGVyX2FuZHJvaWRfdmlld19LZXlFdmVudChKTklFbnYqIGVudikgeworICAgIEZJTkRfQ0xBU1MoZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LCBrS2V5RXZlbnRQYXRoTmFtZSk7CisgICAgICAgIAorICAgIEdFVF9NRVRIT0RfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLmN0b3IsIGdLZXlFdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICI8aW5pdD4iLCAiKEpKSUlJSUlJSSlWIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1NZXRhU3RhdGUsIGdLZXlFdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtTWV0YVN0YXRlIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1BY3Rpb24sIGdLZXlFdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtQWN0aW9uIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1LZXlDb2RlLCBnS2V5RXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUtleUNvZGUiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnS2V5RXZlbnRDbGFzc0luZm8ubVNjYW5Db2RlLCBnS2V5RXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibVNjYW5Db2RlIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1SZXBlYXRDb3VudCwgZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1SZXBlYXRDb3VudCIsICJJIik7CisgICAgR0VUX0ZJRUxEX0lEKGdLZXlFdmVudENsYXNzSW5mby5tRGV2aWNlSWQsIGdLZXlFdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtRGV2aWNlSWQiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnS2V5RXZlbnRDbGFzc0luZm8ubUZsYWdzLCBnS2V5RXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUZsYWdzIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1Eb3duVGltZSwgZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1Eb3duVGltZSIsICJKIik7CisgICAgR0VUX0ZJRUxEX0lEKGdLZXlFdmVudENsYXNzSW5mby5tRXZlbnRUaW1lLCBnS2V5RXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUV2ZW50VGltZSIsICJKIik7CisgICAgR0VUX0ZJRUxEX0lEKGdLZXlFdmVudENsYXNzSW5mby5tQ2hhcmFjdGVycywgZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1DaGFyYWN0ZXJzIiwgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworCisgICAgcmV0dXJuIEFuZHJvaWRSdW50aW1lOjpyZWdpc3Rlck5hdGl2ZU1ldGhvZHMoCisgICAgICAgIGVudiwga0tleUV2ZW50UGF0aE5hbWUsCisgICAgICAgIGdfbWV0aG9kcywgTkVMRU0oZ19tZXRob2RzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5oIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X0tleUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M3MWIxYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9BTkRST0lEX1ZJRVdfS0VZRVZFTlRfSAorI2RlZmluZSBfQU5EUk9JRF9WSUVXX0tFWUVWRU5UX0gKKworI2luY2x1ZGUgImpuaS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIEtleUV2ZW50OworCisvKiBPYnRhaW5zIGFuIGluc3RhbmNlIG9mIGEgRFZNIEtleUV2ZW50IG9iamVjdCBhcyBhIGNvcHkgb2YgYSBuYXRpdmUgS2V5RXZlbnQgaW5zdGFuY2UuICovCitleHRlcm4gam9iamVjdCBhbmRyb2lkX3ZpZXdfS2V5RXZlbnRfZnJvbU5hdGl2ZShKTklFbnYqIGVudiwgY29uc3QgS2V5RXZlbnQqIGV2ZW50KTsKKworLyogQ29waWVzIHRoZSBjb250ZW50cyBvZiBhIERWTSBLZXlFdmVudCBvYmplY3QgdG8gYSBuYXRpdmUgS2V5RXZlbnQgaW5zdGFuY2UuICovCitleHRlcm4gdm9pZCBhbmRyb2lkX3ZpZXdfS2V5RXZlbnRfdG9OYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgZXZlbnRPYmosIGludDMyX3QgbmF0dXJlLAorICAgICAgICBLZXlFdmVudCogZXZlbnQpOworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBfQU5EUk9JRF9PU19LRVlFVkVOVF9ICmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnQuY3BwIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODEzN2UyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmNwcApAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiTW90aW9uRXZlbnQtSk5JIgorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorCisjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8dWkvSW5wdXQuaD4KKyNpbmNsdWRlICJhbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnQuaCIKKworLy8gTnVtYmVyIG9mIGZsb2F0IGl0ZW1zIHBlciBlbnRyeSBpbiBhIERWTSBzYW1wbGUgZGF0YSBhcnJheQorI2RlZmluZSBOVU1fU0FNUExFX0RBVEEgNAorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIHN0cnVjdCB7CisgICAgamNsYXNzIGNsYXp6OworCisgICAgam1ldGhvZElEIG9idGFpbjsKKyAgICBqbWV0aG9kSUQgcmVjeWNsZTsKKworICAgIGpmaWVsZElEIG1Eb3duVGltZU5hbm87CisgICAgamZpZWxkSUQgbUFjdGlvbjsKKyAgICBqZmllbGRJRCBtWE9mZnNldDsKKyAgICBqZmllbGRJRCBtWU9mZnNldDsKKyAgICBqZmllbGRJRCBtWFByZWNpc2lvbjsKKyAgICBqZmllbGRJRCBtWVByZWNpc2lvbjsKKyAgICBqZmllbGRJRCBtRGV2aWNlSWQ7CisgICAgamZpZWxkSUQgbUVkZ2VGbGFnczsKKyAgICBqZmllbGRJRCBtTWV0YVN0YXRlOworICAgIGpmaWVsZElEIG1OdW1Qb2ludGVyczsKKyAgICBqZmllbGRJRCBtTnVtU2FtcGxlczsKKyAgICBqZmllbGRJRCBtUG9pbnRlcklkZW50aWZpZXJzOworICAgIGpmaWVsZElEIG1EYXRhU2FtcGxlczsKKyAgICBqZmllbGRJRCBtRXZlbnRUaW1lTmFub1NhbXBsZXM7CisgICAgamZpZWxkSUQgbUxhc3REYXRhU2FtcGxlSW5kZXg7CisgICAgamZpZWxkSUQgbUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXg7Cit9IGdNb3Rpb25FdmVudENsYXNzSW5mbzsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitqb2JqZWN0IGFuZHJvaWRfdmlld19Nb3Rpb25FdmVudF9mcm9tTmF0aXZlKEpOSUVudiogZW52LCBjb25zdCBNb3Rpb25FdmVudCogZXZlbnQpIHsKKyAgICBqaW50IG51bVBvaW50ZXJzID0gamludChldmVudC0+Z2V0UG9pbnRlckNvdW50KCkpOworICAgIGppbnQgbnVtSGlzdG9yaWNhbFNhbXBsZXMgPSBqaW50KGV2ZW50LT5nZXRIaXN0b3J5U2l6ZSgpKTsKKyAgICBqaW50IG51bVNhbXBsZXMgPSBudW1IaXN0b3JpY2FsU2FtcGxlcyArIDE7CisKKyAgICBqb2JqZWN0IGV2ZW50T2JqID0gZW52LT5DYWxsU3RhdGljT2JqZWN0TWV0aG9kKGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgIGdNb3Rpb25FdmVudENsYXNzSW5mby5vYnRhaW4sIG51bVBvaW50ZXJzLCBudW1TYW1wbGVzKTsKKyAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgIExPR0UoIkFuIGV4Y2VwdGlvbiBvY2N1cnJlZCB3aGlsZSBvYnRhaW5pbmcgYSBtb3Rpb24gZXZlbnQuIik7CisgICAgICAgIExPR0VfRVgoZW52KTsKKyAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBlbnYtPlNldExvbmdGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1Eb3duVGltZU5hbm8sCisgICAgICAgICAgICBldmVudC0+Z2V0RG93blRpbWUoKSk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1BY3Rpb24sCisgICAgICAgICAgICBldmVudC0+Z2V0QWN0aW9uKCkpOworICAgIGVudi0+U2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1YT2Zmc2V0LAorICAgICAgICAgICAgZXZlbnQtPmdldFhPZmZzZXQoKSk7CisgICAgZW52LT5TZXRGbG9hdEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubVlPZmZzZXQsCisgICAgICAgICAgICBldmVudC0+Z2V0WU9mZnNldCgpKTsKKyAgICBlbnYtPlNldEZsb2F0RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tWFByZWNpc2lvbiwKKyAgICAgICAgICAgIGV2ZW50LT5nZXRYUHJlY2lzaW9uKCkpOworICAgIGVudi0+U2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1ZUHJlY2lzaW9uLAorICAgICAgICAgICAgZXZlbnQtPmdldFlQcmVjaXNpb24oKSk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1EZXZpY2VJZCwKKyAgICAgICAgICAgIGV2ZW50LT5nZXREZXZpY2VJZCgpKTsKKyAgICBlbnYtPlNldEludEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubUVkZ2VGbGFncywKKyAgICAgICAgICAgIGV2ZW50LT5nZXRFZGdlRmxhZ3MoKSk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1NZXRhU3RhdGUsCisgICAgICAgICAgICBldmVudC0+Z2V0TWV0YVN0YXRlKCkpOworICAgIGVudi0+U2V0SW50RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tTnVtUG9pbnRlcnMsCisgICAgICAgICAgICBudW1Qb2ludGVycyk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1OdW1TYW1wbGVzLAorICAgICAgICAgICAgbnVtU2FtcGxlcyk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1MYXN0RGF0YVNhbXBsZUluZGV4LAorICAgICAgICAgICAgKG51bVNhbXBsZXMgLSAxKSAqIG51bVBvaW50ZXJzICogTlVNX1NBTVBMRV9EQVRBKTsKKyAgICBlbnYtPlNldEludEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXgsCisgICAgICAgICAgICBudW1TYW1wbGVzIC0gMSk7CisKKyAgICBqaW50QXJyYXkgcG9pbnRlcklkZW50aWZpZXJBcnJheSA9IGppbnRBcnJheShlbnYtPkdldE9iamVjdEZpZWxkKGV2ZW50T2JqLAorICAgICAgICAgICAgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1Qb2ludGVySWRlbnRpZmllcnMpKTsKKyAgICBqZmxvYXRBcnJheSBkYXRhU2FtcGxlQXJyYXkgPSBqZmxvYXRBcnJheShlbnYtPkdldE9iamVjdEZpZWxkKGV2ZW50T2JqLAorICAgICAgICAgICAgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1EYXRhU2FtcGxlcykpOworICAgIGpsb25nQXJyYXkgZXZlbnRUaW1lTmFub1NhbXBsZUFycmF5ID0gamxvbmdBcnJheShlbnYtPkdldE9iamVjdEZpZWxkKGV2ZW50T2JqLAorICAgICAgICAgICAgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1FdmVudFRpbWVOYW5vU2FtcGxlcykpOworCisgICAgamludCogcG9pbnRlcklkZW50aWZpZXJzID0gKGppbnQqKWVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChwb2ludGVySWRlbnRpZmllckFycmF5LCBOVUxMKTsKKyAgICBqZmxvYXQqIGRhdGFTYW1wbGVzID0gKGpmbG9hdCopZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGRhdGFTYW1wbGVBcnJheSwgTlVMTCk7CisgICAgamxvbmcqIGV2ZW50VGltZU5hbm9TYW1wbGVzID0gKGpsb25nKillbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwoCisgICAgICAgICAgICBldmVudFRpbWVOYW5vU2FtcGxlQXJyYXksIE5VTEwpOworCisgICAgY29uc3QgaW50MzJfdCogc3JjUG9pbnRlcklkZW50aWZpZXJzID0gZXZlbnQtPmdldFBvaW50ZXJJZHMoKTsKKyAgICBqaW50KiBkZXN0UG9pbnRlcklkZW50aWZpZXJzID0gcG9pbnRlcklkZW50aWZpZXJzOworICAgIGZvciAoamludCBpID0gMDsgaSA8IG51bVBvaW50ZXJzOyBpKyspIHsKKyAgICAgICAgKihkZXN0UG9pbnRlcklkZW50aWZpZXJzKyspID0gKihzcmNQb2ludGVySWRlbnRpZmllcnMrKyk7CisgICAgfQorCisgICAgY29uc3QgbnNlY3NfdCogc3JjU2FtcGxlRXZlbnRUaW1lcyA9IGV2ZW50LT5nZXRTYW1wbGVFdmVudFRpbWVzKCk7CisgICAgamxvbmcqIGRlc3RFdmVudFRpbWVOYW5vU2FtcGxlcyA9IGV2ZW50VGltZU5hbm9TYW1wbGVzOworICAgIGZvciAoamludCBpID0gMDsgaSA8IG51bVNhbXBsZXM7IGkrKykgeworICAgICAgICAqKGRlc3RFdmVudFRpbWVOYW5vU2FtcGxlcysrKSA9ICooc3JjU2FtcGxlRXZlbnRUaW1lcysrKTsKKyAgICB9CisKKyAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBzcmNTYW1wbGVQb2ludGVyQ29vcmRzID0gZXZlbnQtPmdldFNhbXBsZVBvaW50ZXJDb29yZHMoKTsKKyAgICBqZmxvYXQqIGRlc3REYXRhU2FtcGxlcyA9IGRhdGFTYW1wbGVzOworICAgIGppbnQgbnVtSXRlbXMgPSBudW1TYW1wbGVzICogbnVtUG9pbnRlcnM7CisgICAgZm9yIChqaW50IGkgPSAwOyBpIDwgbnVtSXRlbXM7IGkrKykgeworICAgICAgICAqKGRlc3REYXRhU2FtcGxlcysrKSA9IHNyY1NhbXBsZVBvaW50ZXJDb29yZHMtPng7CisgICAgICAgICooZGVzdERhdGFTYW1wbGVzKyspID0gc3JjU2FtcGxlUG9pbnRlckNvb3Jkcy0+eTsKKyAgICAgICAgKihkZXN0RGF0YVNhbXBsZXMrKykgPSBzcmNTYW1wbGVQb2ludGVyQ29vcmRzLT5wcmVzc3VyZTsKKyAgICAgICAgKihkZXN0RGF0YVNhbXBsZXMrKykgPSBzcmNTYW1wbGVQb2ludGVyQ29vcmRzLT5zaXplOworICAgICAgICBzcmNTYW1wbGVQb2ludGVyQ29vcmRzICs9IDE7CisgICAgfQorCisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChwb2ludGVySWRlbnRpZmllckFycmF5LCBwb2ludGVySWRlbnRpZmllcnMsIDApOworICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoZGF0YVNhbXBsZUFycmF5LCBkYXRhU2FtcGxlcywgMCk7CisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChldmVudFRpbWVOYW5vU2FtcGxlQXJyYXksIGV2ZW50VGltZU5hbm9TYW1wbGVzLCAwKTsKKworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocG9pbnRlcklkZW50aWZpZXJBcnJheSk7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihkYXRhU2FtcGxlQXJyYXkpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoZXZlbnRUaW1lTmFub1NhbXBsZUFycmF5KTsKKyAgICByZXR1cm4gZXZlbnRPYmo7Cit9CisKK3ZvaWQgYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50X3RvTmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGV2ZW50T2JqLCBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgTW90aW9uRXZlbnQqIGV2ZW50KSB7CisgICAgamxvbmcgZG93blRpbWVOYW5vID0gZW52LT5HZXRMb25nRmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tRG93blRpbWVOYW5vKTsKKyAgICBqaW50IGFjdGlvbiA9IGVudi0+R2V0SW50RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tQWN0aW9uKTsKKyAgICBqZmxvYXQgeE9mZnNldCA9IGVudi0+R2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1YT2Zmc2V0KTsKKyAgICBqZmxvYXQgeU9mZnNldCA9IGVudi0+R2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1ZT2Zmc2V0KTsKKyAgICBqZmxvYXQgeFByZWNpc2lvbiA9IGVudi0+R2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1YUHJlY2lzaW9uKTsKKyAgICBqZmxvYXQgeVByZWNpc2lvbiA9IGVudi0+R2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1ZUHJlY2lzaW9uKTsKKyAgICBqaW50IGRldmljZUlkID0gZW52LT5HZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1EZXZpY2VJZCk7CisgICAgamludCBlZGdlRmxhZ3MgPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubUVkZ2VGbGFncyk7CisgICAgamludCBtZXRhU3RhdGUgPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubU1ldGFTdGF0ZSk7CisgICAgamludCBudW1Qb2ludGVycyA9IGVudi0+R2V0SW50RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tTnVtUG9pbnRlcnMpOworICAgIGppbnQgbnVtU2FtcGxlcyA9IGVudi0+R2V0SW50RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tTnVtU2FtcGxlcyk7CisgICAgamludEFycmF5IHBvaW50ZXJJZGVudGlmaWVyQXJyYXkgPSBqaW50QXJyYXkoZW52LT5HZXRPYmplY3RGaWVsZChldmVudE9iaiwKKyAgICAgICAgICAgIGdNb3Rpb25FdmVudENsYXNzSW5mby5tUG9pbnRlcklkZW50aWZpZXJzKSk7CisgICAgamZsb2F0QXJyYXkgZGF0YVNhbXBsZUFycmF5ID0gamZsb2F0QXJyYXkoZW52LT5HZXRPYmplY3RGaWVsZChldmVudE9iaiwKKyAgICAgICAgICAgIGdNb3Rpb25FdmVudENsYXNzSW5mby5tRGF0YVNhbXBsZXMpKTsKKyAgICBqbG9uZ0FycmF5IGV2ZW50VGltZU5hbm9TYW1wbGVBcnJheSA9IGpsb25nQXJyYXkoZW52LT5HZXRPYmplY3RGaWVsZChldmVudE9iaiwKKyAgICAgICAgICAgIGdNb3Rpb25FdmVudENsYXNzSW5mby5tRXZlbnRUaW1lTmFub1NhbXBsZXMpKTsKKworICAgIExPR19GQVRBTF9JRihudW1Qb2ludGVycyA9PSAwLCAibnVtUG9pbnRlcnMgd2FzIHplcm8iKTsKKyAgICBMT0dfRkFUQUxfSUYobnVtU2FtcGxlcyA9PSAwLCAibnVtU2FtcGxlcyB3YXMgemVybyIpOworCisgICAgamludCogcG9pbnRlcklkZW50aWZpZXJzID0gKGppbnQqKWVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChwb2ludGVySWRlbnRpZmllckFycmF5LCBOVUxMKTsKKyAgICBqZmxvYXQqIGRhdGFTYW1wbGVzID0gKGpmbG9hdCopZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGRhdGFTYW1wbGVBcnJheSwgTlVMTCk7CisgICAgamxvbmcqIGV2ZW50VGltZU5hbm9TYW1wbGVzID0gKGpsb25nKillbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwoCisgICAgICAgICAgICBldmVudFRpbWVOYW5vU2FtcGxlQXJyYXksIE5VTEwpOworCisgICAgamZsb2F0KiBzcmNEYXRhU2FtcGxlcyA9IGRhdGFTYW1wbGVzOworICAgIGpsb25nKiBzcmNFdmVudFRpbWVOYW5vU2FtcGxlcyA9IGV2ZW50VGltZU5hbm9TYW1wbGVzOworCisgICAgamxvbmcgc2FtcGxlRXZlbnRUaW1lID0gKihzcmNFdmVudFRpbWVOYW5vU2FtcGxlcysrKTsKKyAgICBQb2ludGVyQ29vcmRzIHNhbXBsZVBvaW50ZXJDb29yZHNbTUFYX1BPSU5URVJTXTsKKyAgICBmb3IgKGppbnQgaiA9IDA7IGogPCBudW1Qb2ludGVyczsgaisrKSB7CisgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHNbal0ueCA9ICooc3JjRGF0YVNhbXBsZXMrKyk7CisgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHNbal0ueSA9ICooc3JjRGF0YVNhbXBsZXMrKyk7CisgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHNbal0ucHJlc3N1cmUgPSAqKHNyY0RhdGFTYW1wbGVzKyspOworICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzW2pdLnNpemUgPSAqKHNyY0RhdGFTYW1wbGVzKyspOworICAgIH0KKworICAgIGV2ZW50LT5pbml0aWFsaXplKGRldmljZUlkLCBuYXR1cmUsIGFjdGlvbiwgZWRnZUZsYWdzLCBtZXRhU3RhdGUsCisgICAgICAgICAgICB4T2Zmc2V0LCB5T2Zmc2V0LCB4UHJlY2lzaW9uLCB5UHJlY2lzaW9uLCBkb3duVGltZU5hbm8sIHNhbXBsZUV2ZW50VGltZSwKKyAgICAgICAgICAgIG51bVBvaW50ZXJzLCBwb2ludGVySWRlbnRpZmllcnMsIHNhbXBsZVBvaW50ZXJDb29yZHMpOworCisgICAgZm9yIChqaW50IGkgPSAxOyBpIDwgbnVtU2FtcGxlczsgaSsrKSB7CisgICAgICAgIHNhbXBsZUV2ZW50VGltZSA9ICooc3JjRXZlbnRUaW1lTmFub1NhbXBsZXMrKyk7CisgICAgICAgIGZvciAoamludCBqID0gMDsgaiA8IG51bVBvaW50ZXJzOyBqKyspIHsKKyAgICAgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHNbal0ueCA9ICooc3JjRGF0YVNhbXBsZXMrKyk7CisgICAgICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzW2pdLnkgPSAqKHNyY0RhdGFTYW1wbGVzKyspOworICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkc1tqXS5wcmVzc3VyZSA9ICooc3JjRGF0YVNhbXBsZXMrKyk7CisgICAgICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzW2pdLnNpemUgPSAqKHNyY0RhdGFTYW1wbGVzKyspOworICAgICAgICB9CisgICAgICAgIGV2ZW50LT5hZGRTYW1wbGUoc2FtcGxlRXZlbnRUaW1lLCBzYW1wbGVQb2ludGVyQ29vcmRzKTsKKyAgICB9CisKKyAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKHBvaW50ZXJJZGVudGlmaWVyQXJyYXksIHBvaW50ZXJJZGVudGlmaWVycywgSk5JX0FCT1JUKTsKKyAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKGRhdGFTYW1wbGVBcnJheSwgZGF0YVNhbXBsZXMsIEpOSV9BQk9SVCk7CisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChldmVudFRpbWVOYW5vU2FtcGxlQXJyYXksIGV2ZW50VGltZU5hbm9TYW1wbGVzLCBKTklfQUJPUlQpOworCisgICAgZW52LT5EZWxldGVMb2NhbFJlZihwb2ludGVySWRlbnRpZmllckFycmF5KTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGRhdGFTYW1wbGVBcnJheSk7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihldmVudFRpbWVOYW5vU2FtcGxlQXJyYXkpOworfQorCit2b2lkIGFuZHJvaWRfdmlld19Nb3Rpb25FdmVudF9yZWN5Y2xlKEpOSUVudiogZW52LCBqb2JqZWN0IGV2ZW50T2JqKSB7CisgICAgZW52LT5DYWxsVm9pZE1ldGhvZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLnJlY3ljbGUpOworICAgIGlmIChlbnYtPkV4Y2VwdGlvbkNoZWNrKCkpIHsKKyAgICAgICAgTE9HVygiQW4gZXhjZXB0aW9uIG9jY3VycmVkIHdoaWxlIHJlY3ljbGluZyBhIG1vdGlvbiBldmVudC4iKTsKKyAgICAgICAgTE9HV19FWChlbnYpOworICAgICAgICBlbnYtPkV4Y2VwdGlvbkNsZWFyKCk7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgRklORF9DTEFTUyh2YXIsIGNsYXNzTmFtZSkgXAorICAgICAgICB2YXIgPSBlbnYtPkZpbmRDbGFzcyhjbGFzc05hbWUpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIGNsYXNzICIgY2xhc3NOYW1lKTsgXAorICAgICAgICB2YXIgPSBqY2xhc3MoZW52LT5OZXdHbG9iYWxSZWYodmFyKSk7CisKKyNkZWZpbmUgR0VUX1NUQVRJQ19NRVRIT0RfSUQodmFyLCBjbGF6eiwgbWV0aG9kTmFtZSwgZmllbGREZXNjcmlwdG9yKSBcCisgICAgICAgIHZhciA9IGVudi0+R2V0U3RhdGljTWV0aG9kSUQoY2xhenosIG1ldGhvZE5hbWUsIGZpZWxkRGVzY3JpcHRvcik7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgc3RhdGljIG1ldGhvZCIgbWV0aG9kTmFtZSk7CisKKyNkZWZpbmUgR0VUX01FVEhPRF9JRCh2YXIsIGNsYXp6LCBtZXRob2ROYW1lLCBmaWVsZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgbWV0aG9kTmFtZSwgZmllbGREZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBtZXRob2QiIG1ldGhvZE5hbWUpOworCisjZGVmaW5lIEdFVF9GSUVMRF9JRCh2YXIsIGNsYXp6LCBmaWVsZE5hbWUsIGZpZWxkRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldEZpZWxkSUQoY2xhenosIGZpZWxkTmFtZSwgZmllbGREZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBmaWVsZCAiIGZpZWxkTmFtZSk7CisKK2ludCByZWdpc3Rlcl9hbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnQoSk5JRW52KiBlbnYpIHsKKyAgICBGSU5EX0NMQVNTKGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwgImFuZHJvaWQvdmlldy9Nb3Rpb25FdmVudCIpOworCisgICAgR0VUX1NUQVRJQ19NRVRIT0RfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm9idGFpbiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm9idGFpbiIsICIoSUkpTGFuZHJvaWQvdmlldy9Nb3Rpb25FdmVudDsiKTsKKyAgICBHRVRfTUVUSE9EX0lEKGdNb3Rpb25FdmVudENsYXNzSW5mby5yZWN5Y2xlLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAicmVjeWNsZSIsICIoKVYiKTsKKworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubURvd25UaW1lTmFubywgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1Eb3duVGltZU5hbm8iLCAiSiIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubUFjdGlvbiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1BY3Rpb24iLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubVhPZmZzZXQsIGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtWE9mZnNldCIsICJGIik7CisgICAgR0VUX0ZJRUxEX0lEKGdNb3Rpb25FdmVudENsYXNzSW5mby5tWU9mZnNldCwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1ZT2Zmc2V0IiwgIkYiKTsKKyAgICBHRVRfRklFTERfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1YUHJlY2lzaW9uLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibVhQcmVjaXNpb24iLCAiRiIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubVlQcmVjaXNpb24sIGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtWVByZWNpc2lvbiIsICJGIik7CisgICAgR0VUX0ZJRUxEX0lEKGdNb3Rpb25FdmVudENsYXNzSW5mby5tRGV2aWNlSWQsIGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtRGV2aWNlSWQiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubUVkZ2VGbGFncywgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1FZGdlRmxhZ3MiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubU1ldGFTdGF0ZSwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1NZXRhU3RhdGUiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubU51bVBvaW50ZXJzLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibU51bVBvaW50ZXJzIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1OdW1TYW1wbGVzLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibU51bVNhbXBsZXMiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubVBvaW50ZXJJZGVudGlmaWVycywgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1Qb2ludGVySWRlbnRpZmllcnMiLCAiW0kiKTsKKyAgICBHRVRfRklFTERfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1EYXRhU2FtcGxlcywgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1EYXRhU2FtcGxlcyIsICJbRiIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubUV2ZW50VGltZU5hbm9TYW1wbGVzLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUV2ZW50VGltZU5hbm9TYW1wbGVzIiwgIltKIik7CisgICAgR0VUX0ZJRUxEX0lEKGdNb3Rpb25FdmVudENsYXNzSW5mby5tTGFzdERhdGFTYW1wbGVJbmRleCwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1MYXN0RGF0YVNhbXBsZUluZGV4IiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4LCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXgiLCAiSSIpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19Nb3Rpb25FdmVudC5oIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNlZTMyZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19Nb3Rpb25FdmVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9BTkRST0lEX1ZJRVdfTU9USU9ORVZFTlRfSAorI2RlZmluZSBfQU5EUk9JRF9WSUVXX01PVElPTkVWRU5UX0gKKworI2luY2x1ZGUgImpuaS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIE1vdGlvbkV2ZW50OworCisvKiBPYnRhaW5zIGFuIGluc3RhbmNlIG9mIGEgRFZNIE1vdGlvbkV2ZW50IG9iamVjdCBhcyBhIGNvcHkgb2YgYSBuYXRpdmUgTW90aW9uRXZlbnQgaW5zdGFuY2UuICovCitleHRlcm4gam9iamVjdCBhbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnRfZnJvbU5hdGl2ZShKTklFbnYqIGVudiwgY29uc3QgTW90aW9uRXZlbnQqIGV2ZW50KTsKKworLyogQ29waWVzIHRoZSBjb250ZW50cyBvZiBhIERWTSBNb3Rpb25FdmVudCBvYmplY3QgdG8gYSBuYXRpdmUgTW90aW9uRXZlbnQgaW5zdGFuY2UuICovCitleHRlcm4gdm9pZCBhbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnRfdG9OYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgZXZlbnRPYmosIGludDMyX3QgbmF0dXJlLAorICAgICAgICBNb3Rpb25FdmVudCogZXZlbnQpOworCisvKiBSZWN5Y2xlcyBhIERWTSBNb3Rpb25FdmVudCBvYmplY3QuICovCitleHRlcm4gdm9pZCBhbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnRfcmVjeWNsZShKTklFbnYqIGVudiwgam9iamVjdCBldmVudE9iaik7CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIF9BTkRST0lEX09TX0tFWUVWRU5UX0gKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19TdXJmYWNlLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19TdXJmYWNlLmNwcAppbmRleCA3ODgzNzRiLi5hODJhYmM5MyAxMDA2NDQKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF92aWV3X1N1cmZhY2UuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19TdXJmYWNlLmNwcApAQCAtMTQsMjAgKzE0LDI2IEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCisjZGVmaW5lIExPR19UQUcgIlN1cmZhY2UiCisKICNpbmNsdWRlIDxzdGRpby5oPgogCiAjaW5jbHVkZSAiYW5kcm9pZF91dGlsX0JpbmRlci5oIgogCiAjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvU3VyZmFjZUNvbXBvc2VyQ2xpZW50Lmg+CisjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvU3VyZmFjZS5oPgogI2luY2x1ZGUgPHVpL1JlZ2lvbi5oPgogI2luY2x1ZGUgPHVpL1JlY3QuaD4KIAorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKwogI2luY2x1ZGUgPFNrQ2FudmFzLmg+CiAjaW5jbHVkZSA8U2tCaXRtYXAuaD4KICNpbmNsdWRlIDxTa1JlZ2lvbi5oPgogCiAjaW5jbHVkZSAiam5pLmgiCiAjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X1N1cmZhY2UuaCIKICNpbmNsdWRlIDx1dGlscy9taXNjLmg+CiAKIApAQCAtMTc0LDYgKzE4MCwxMSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3NwPEFOYXRpdmVXaW5kb3c+IGFuZHJvaWRfU3VyZmFjZV9nZXROYXRpdmVXaW5kb3coCisgICAgICAgIEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6KSB7CisgICAgcmV0dXJuIGdldFN1cmZhY2UoZW52LCBjbGF6eikuZ2V0KCk7Cit9CisKIHN0YXRpYyB2b2lkIHNldFN1cmZhY2UoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGNvbnN0IHNwPFN1cmZhY2U+JiBzdXJmYWNlKQogewogICAgIFN1cmZhY2UqIGNvbnN0IHAgPSAoU3VyZmFjZSopZW52LT5HZXRJbnRGaWVsZChjbGF6eiwgc28uc3VyZmFjZSk7CkBAIC0yMjUsOCArMjM2LDkgQEAKICAgICAgICAgZG9UaHJvdyhlbnYsICJqYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24iLCBOVUxMKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzcDxTdXJmYWNlPiByaHMgPSBuZXcgU3VyZmFjZSgqcGFyY2VsKTsKLSAgICBzZXRTdXJmYWNlKGVudiwgY2xhenosIHJocyk7CisKKyAgICBzcDxTdXJmYWNlPiBzdXIoU3VyZmFjZTo6cmVhZEZyb21QYXJjZWwoKnBhcmNlbCwgMCkpOworICAgIHNldFN1cmZhY2UoZW52LCBjbGF6eiwgc3VyKTsKIH0KIAogc3RhdGljIGppbnQgU3VyZmFjZV9nZXRJZGVudGl0eShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eikKQEAgLTMzMiw3ICszNDQsNyBAQAogICAgIAogICAgIFNrUmVnaW9uIGNsaXBSZWc7CiAgICAgaWYgKGRpcnR5UmVnaW9uLmlzUmVjdCgpKSB7IC8vIHZlcnkgY29tbW9uIGNhc2UKLSAgICAgICAgY29uc3QgUmVjdCYgYihkaXJ0eVJlZ2lvbi5nZXRCb3VuZHMoKSk7CisgICAgICAgIGNvbnN0IFJlY3QgYihkaXJ0eVJlZ2lvbi5nZXRCb3VuZHMoKSk7CiAgICAgICAgIGNsaXBSZWcuc2V0UmVjdChiLmxlZnQsIGIudG9wLCBiLnJpZ2h0LCBiLmJvdHRvbSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2l6ZV90IGNvdW50OwpAQCAtNTg1LDcgKzU5Nyw3IEBACiAgICAgICogYSBTdXJmYWNlIGFuZCBpcyBuZWNlc3NhcnkgZm9yIHJldHVybmluZyB0aGUgU3VyZmFjZSByZWZlcmVuY2UgdG8KICAgICAgKiB0aGUgY2FsbGVyLiBBdCB0aGlzIHBvaW50LCB3ZSBzaG91bGQgb25seSBoYXZlIGEgU3VyZmFjZUNvbnRyb2wuCiAgICAgICovCi0gICAgCisKICAgICBjb25zdCBzcDxTdXJmYWNlQ29udHJvbD4mIHN1cmZhY2UgPSBnZXRTdXJmYWNlQ29udHJvbChlbnYsIGNsYXp6KTsKICAgICBjb25zdCBzcDxTdXJmYWNlQ29udHJvbD4mIHJocyA9IGdldFN1cmZhY2VDb250cm9sKGVudiwgb3RoZXIpOwogICAgIGlmICghU3VyZmFjZUNvbnRyb2w6OmlzU2FtZVN1cmZhY2Uoc3VyZmFjZSwgcmhzKSkgewpAQCAtNjA0LDEzICs2MTYsOSBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3Qgc3A8U3VyZmFjZT4mIGNvbnRyb2woZ2V0U3VyZmFjZShlbnYsIGNsYXp6KSk7Ci0gICAgc3A8U3VyZmFjZT4gcmhzID0gbmV3IFN1cmZhY2UoKnBhcmNlbCk7Ci0gICAgaWYgKCFTdXJmYWNlOjppc1NhbWVTdXJmYWNlKGNvbnRyb2wsIHJocykpIHsKLSAgICAgICAgLy8gd2UgcmVhc3NpZ24gdGhlIHN1cmZhY2Ugb25seSBpZiBpdCdzIGEgZGlmZmVyZW50IG9uZQotICAgICAgICAvLyBvdGhlcndpc2Ugd2Ugd291bGQgbG9vc2Ugb3VyIGNsaWVudC1zaWRlIHN0YXRlLgotICAgICAgICBzZXRTdXJmYWNlKGVudiwgY2xhenosIHJocyk7Ci0gICAgfQorICAgIGNvbnN0IHNwPFN1cmZhY2U+JiBjdXJyKGdldFN1cmZhY2UoZW52LCBjbGF6eikpOworICAgIHNwPFN1cmZhY2U+IHN1cihTdXJmYWNlOjpyZWFkRnJvbVBhcmNlbCgqcGFyY2VsLCBjdXJyKSk7CisgICAgc2V0U3VyZmFjZShlbnYsIGNsYXp6LCBzdXIpOwogfQogCiBzdGF0aWMgdm9pZCBTdXJmYWNlX3dyaXRlVG9QYXJjZWwoCkBAIC02ODAsNyArNjg4LDcgQEAKIAogdm9pZCBuYXRpdmVDbGFzc0luaXQoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eikKIHsKLSAgICBzby5zdXJmYWNlID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCAibVN1cmZhY2UiLCAiSSIpOworICAgIHNvLnN1cmZhY2UgPSBlbnYtPkdldEZpZWxkSUQoY2xhenosIEFORFJPSURfVklFV19TVVJGQUNFX0pOSV9JRCwgIkkiKTsKICAgICBzby5zdXJmYWNlQ29udHJvbCA9IGVudi0+R2V0RmllbGRJRChjbGF6eiwgIm1TdXJmYWNlQ29udHJvbCIsICJJIik7CiAgICAgc28uc2F2ZUNvdW50ID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCAibVNhdmVDb3VudCIsICJJIik7CiAgICAgc28uY2FudmFzICAgID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCAibUNhbnZhcyIsICJMYW5kcm9pZC9ncmFwaGljcy9DYW52YXM7Iik7CmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfU3VyZmFjZS5oIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X1N1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzc5MzJlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X1N1cmZhY2UuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBfQU5EUk9JRF9WSUVXX1NVUkZBQ0VfSAorI2RlZmluZSBfQU5EUk9JRF9WSUVXX1NVUkZBQ0VfSAorCisjaW5jbHVkZSA8YW5kcm9pZC9uYXRpdmVfd2luZG93Lmg+CisKKyNpbmNsdWRlICJqbmkuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitleHRlcm4gc3A8QU5hdGl2ZVdpbmRvdz4gYW5kcm9pZF9TdXJmYWNlX2dldE5hdGl2ZVdpbmRvdygKKyAgICAgICAgSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenopOworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBfQU5EUk9JRF9WSUVXX1NVUkZBQ0VfSApkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF92aWV3X1ZpZXdSb290LmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19WaWV3Um9vdC5jcHAKaW5kZXggOWQ2MmQ4OS4uNTE3M2JiOCAxMDA2NDQKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF92aWV3X1ZpZXdSb290LmNwcAorKysgYi9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfVmlld1Jvb3QuY3BwCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KIAogI2luY2x1ZGUgPGNvcmUvU2tDYW52YXMuaD4KICNpbmNsdWRlIDxjb3JlL1NrRGV2aWNlLmg+CkBAIC0yNCw2ICsyNSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NKTkkuaCIKIAogI2luY2x1ZGUgImpuaS5oIgorI2luY2x1ZGUgPG5hdGl2ZWhlbHBlci9KTklIZWxwLmg+CiAjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CiAjaW5jbHVkZSA8dXRpbHMvbWlzYy5oPgogCkBAIC03OCw2ICs4MCw3IEBACiAgICAgU2tHTENhbnZhczo6QWJhbmRvbkFsbFRleHR1cmVzKCk7CiB9CiAKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjb25zdCBjaGFyKiBjb25zdCBrQ2xhc3NQYXRoTmFtZSA9ICJhbmRyb2lkL3ZpZXcvVmlld1Jvb3QiOwpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvY29tX2dvb2dsZV9hbmRyb2lkX2dsZXNfam5pX0VHTEltcGwuY3BwIGIvY29yZS9qbmkvY29tX2dvb2dsZV9hbmRyb2lkX2dsZXNfam5pX0VHTEltcGwuY3BwCmluZGV4IDZhOGM0YjkuLjg2NmMwMzggMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2NvbV9nb29nbGVfYW5kcm9pZF9nbGVzX2puaV9FR0xJbXBsLmNwcAorKysgYi9jb3JlL2puaS9jb21fZ29vZ2xlX2FuZHJvaWRfZ2xlc19qbmlfRUdMSW1wbC5jcHAKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlIDxTa0JpdG1hcC5oPgogI2luY2x1ZGUgPFNrUGl4ZWxSZWYuaD4KIAorI2luY2x1ZGUgImFuZHJvaWRfdmlld19TdXJmYWNlLmgiCisKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogc3RhdGljIGpjbGFzcyBnRGlzcGxheV9jbGFzczsKQEAgLTk1LDkgKzk3LDYgQEAKICAgICBnU3VyZmFjZV9OYXRpdmVQaXhlbFJlZkZpZWxkSUQgPSBfZW52LT5HZXRGaWVsZElEKGdTdXJmYWNlX2NsYXNzLCAibU5hdGl2ZVBpeGVsUmVmIiwgIkkiKTsKICAgICBnQ29uZmlnX0VHTENvbmZpZ0ZpZWxkSUQgICA9IF9lbnYtPkdldEZpZWxkSUQoZ0NvbmZpZ19jbGFzcywgICJtRUdMQ29uZmlnIiwgICJJIik7CiAKLSAgICBqY2xhc3Mgc3VyZmFjZV9jbGFzcyA9IF9lbnYtPkZpbmRDbGFzcygiYW5kcm9pZC92aWV3L1N1cmZhY2UiKTsKLSAgICBnU3VyZmFjZV9TdXJmYWNlRmllbGRJRCA9IF9lbnYtPkdldEZpZWxkSUQoc3VyZmFjZV9jbGFzcywgIm1TdXJmYWNlIiwgIkkiKTsKLQogICAgIGpjbGFzcyBiaXRtYXBfY2xhc3MgPSBfZW52LT5GaW5kQ2xhc3MoImFuZHJvaWQvZ3JhcGhpY3MvQml0bWFwIik7CiAgICAgZ0JpdG1hcF9OYXRpdmVCaXRtYXBGaWVsZElEID0gX2Vudi0+R2V0RmllbGRJRChiaXRtYXBfY2xhc3MsICJtTmF0aXZlQml0bWFwIiwgIkkiKTsKIH0KQEAgLTMyNSwxOSArMzI0LDIwIEBACiAgICAgfQogICAgIEVHTERpc3BsYXkgZHB5ID0gZ2V0RGlzcGxheShfZW52LCBkaXNwbGF5KTsKICAgICBFR0xDb250ZXh0IGNuZiA9IGdldENvbmZpZyhfZW52LCBjb25maWcpOwotICAgIFN1cmZhY2UqIHdpbmRvdyA9IDA7CisgICAgc3A8QU5hdGl2ZVdpbmRvdz4gd2luZG93OwogICAgIGlmIChuYXRpdmVfd2luZG93ID09IE5VTEwpIHsKIG5vdF92YWxpZF9zdXJmYWNlOgogICAgICAgICBkb1Rocm93KF9lbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiwKICAgICAgICAgICAgICAgICAiTWFrZSBzdXJlIHRoZSBTdXJmYWNlVmlldyBvciBhc3NvY2lhdGVkIFN1cmZhY2VIb2xkZXIgaGFzIGEgdmFsaWQgU3VyZmFjZSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgd2luZG93ID0gKFN1cmZhY2UqKV9lbnYtPkdldEludEZpZWxkKG5hdGl2ZV93aW5kb3csIGdTdXJmYWNlX1N1cmZhY2VGaWVsZElEKTsKKworICAgIHdpbmRvdyA9IGFuZHJvaWRfU3VyZmFjZV9nZXROYXRpdmVXaW5kb3coX2VudiwgbmF0aXZlX3dpbmRvdyk7CiAgICAgaWYgKHdpbmRvdyA9PSBOVUxMKQogICAgICAgICBnb3RvIG5vdF92YWxpZF9zdXJmYWNlOwogCiAgICAgamludCogYmFzZSA9IGJlZ2luTmF0aXZlQXR0cmliTGlzdChfZW52LCBhdHRyaWJfbGlzdCk7Ci0gICAgRUdMU3VyZmFjZSBzdXIgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRweSwgY25mLCB3aW5kb3csIGJhc2UpOworICAgIEVHTFN1cmZhY2Ugc3VyID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkcHksIGNuZiwgd2luZG93LmdldCgpLCBiYXNlKTsKICAgICBlbmROYXRpdmVBdHRyaWJ1dGVMaXN0KF9lbnYsIGF0dHJpYl9saXN0LCBiYXNlKTsKICAgICByZXR1cm4gKGppbnQpc3VyOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL2NvcmUvcmVzL0FuZHJvaWRNYW5pZmVzdC54bWwKaW5kZXggMmEyMjA4Zi4uODJmODIyZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvQW5kcm9pZE1hbmlmZXN0LnhtbAorKysgYi9jb3JlL3Jlcy9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC04MCw2ICs4MCwxMCBAQAogICAgIDxwcm90ZWN0ZWQtYnJvYWRjYXN0IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmFjdGlvbi5QQUlSSU5HX1JFUVVFU1QiIC8+CiAgICAgPHByb3RlY3RlZC1icm9hZGNhc3QgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuYWN0aW9uLlBBSVJJTkdfQ0FOQ0VMIiAvPgogCisgICAgPHByb3RlY3RlZC1icm9hZGNhc3QgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmhhcmR3YXJlLmFjdGlvbi5VU0JfQ09OTkVDVEVEIiAvPgorICAgIDxwcm90ZWN0ZWQtYnJvYWRjYXN0IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5oYXJkd2FyZS5hY3Rpb24uVVNCX0RJU0NPTk5FQ1RFRCIgLz4KKyAgICA8cHJvdGVjdGVkLWJyb2FkY2FzdCBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaGFyZHdhcmUuYWN0aW9uLlVTQl9TVEFURSIgLz4KKwogICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgICAgPCEtLSBQZXJtaXNzaW9ucyBmb3IgdGhpbmdzIHRoYXQgY29zdCBtb25leSAtLT4KICAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgpAQCAtNDM2LDYgKzQ0MCwxNCBAQAogICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL3Blcm1sYWJfZmxhc2hsaWdodCIKICAgICAgICAgYW5kcm9pZDpkZXNjcmlwdGlvbj0iQHN0cmluZy9wZXJtZGVzY19mbGFzaGxpZ2h0IiAvPgogCisgICAgPCEtLSBBbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gYWNjZXNzIFVTQiBkZXZpY2VzCisgICAgICAgICBAaGlkZSAtLT4KKyAgICA8cGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfVVNCIgorICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb25Hcm91cD0iYW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLkhBUkRXQVJFX0NPTlRST0xTIgorICAgICAgICBhbmRyb2lkOnByb3RlY3Rpb25MZXZlbD0ic2lnbmF0dXJlT3JTeXN0ZW0iCisgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvcGVybWxhYl9hY2Nlc3NVc2IiCisgICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2NfYWNjZXNzVXNiIiAvPgorCiAgICAgPCEtLSBBbGxvd3MgYWNjZXNzIHRvIGhhcmR3YXJlIHBlcmlwaGVyYWxzLiAgSW50ZW5kZWQgb25seSBmb3IgaGFyZHdhcmUgdGVzdGluZyAtLT4KICAgICA8cGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5IQVJEV0FSRV9URVNUIgogICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb25Hcm91cD0iYW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLkhBUkRXQVJFX0NPTlRST0xTIgpAQCAtOTA4LDYgKzkyMCwxMyBAQAogICAgICAgICBhbmRyb2lkOmRlc2NyaXB0aW9uPSJAc3RyaW5nL3Blcm1kZXNjX3N0YXR1c0JhciIKICAgICAgICAgYW5kcm9pZDpwcm90ZWN0aW9uTGV2ZWw9InNpZ25hdHVyZU9yU3lzdGVtIiAvPgogCisgICAgPCEtLSBBbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gYmUgdGhlIHN0YXR1cyBiYXIuICBDdXJyZW50bHkgdXNlZCBvbmx5IGJ5IFN5c3RlbVVJLmFwaworICAgIEBoaWRlIC0tPgorICAgIDxwZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlNUQVRVU19CQVJfU0VSVklDRSIKKyAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9wZXJtbGFiX3N0YXR1c0JhclNlcnZpY2UiCisgICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2Nfc3RhdHVzQmFyU2VydmljZSIKKyAgICAgICAgYW5kcm9pZDpwcm90ZWN0aW9uTGV2ZWw9InNpZ25hdHVyZSIgLz4KKwogICAgIDwhLS0gQWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGZvcmNlIGEgQkFDSyBvcGVyYXRpb24gb24gd2hhdGV2ZXIgaXMgdGhlCiAgICAgICAgICB0b3AgYWN0aXZpdHkuIC0tPgogICAgIDxwZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkZPUkNFX0JBQ0siCkBAIC0xMjUwLDYgKzEyNjksMTIgQEAKICAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERUZBVUxUIiAvPgogICAgICAgICAgICAgPC9pbnRlbnQtZmlsdGVyPgogICAgICAgICA8L2FjdGl2aXR5PgorICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGhlbWU9IkBzdHlsZS9UaGVtZS5EaWFsb2ciCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9oZWF2eV93ZWlnaHRfc3dpdGNoZXJfdGl0bGUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpmaW5pc2hPbkNsb3NlU3lzdGVtRGlhbG9ncz0idHJ1ZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmV4Y2x1ZGVGcm9tUmVjZW50cz0idHJ1ZSI+CisgICAgICAgIDwvYWN0aXZpdHk+CiAgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5EaXNhYmxlQ2FyTW9kZUFjdGl2aXR5IgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGhlbWU9IkBzdHlsZS9UaGVtZS5Ob0Rpc3BsYXkiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDpleGNsdWRlRnJvbVJlY2VudHM9InRydWUiPgpAQCAtMTI2Myw5ICsxMjg4LDYgQEAKICAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERUZBVUxUIiAvPgogICAgICAgICAgICAgPC9pbnRlbnQtZmlsdGVyPgogICAgICAgICA8L2FjdGl2aXR5PgotICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlVzYlN0b3JhZ2VBY3Rpdml0eSIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmV4Y2x1ZGVGcm9tUmVjZW50cz0idHJ1ZSI+Ci0gICAgICAgIDwvYWN0aXZpdHk+CiAgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5FeHRlcm5hbE1lZGlhRm9ybWF0QWN0aXZpdHkiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDp0aGVtZT0iQHN0eWxlL1RoZW1lLkRpYWxvZy5BbGVydCIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmV4Y2x1ZGVGcm9tUmVjZW50cz0idHJ1ZSI+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvYW5pbS9wcmlvcml0eV9hbGVydF9lbnRlci54bWwgYi9jb3JlL3Jlcy9yZXMvYW5pbS9wcmlvcml0eV9hbGVydF9lbnRlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjZTIzYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9hbmltL3ByaW9yaXR5X2FsZXJ0X2VudGVyLnhtbApAQCAtMCwwICsxLDE0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPHNldCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgID4KKyAgICA8c2NhbGUKKyAgICAgICAgYW5kcm9pZDppbnRlcnBvbGF0b3I9IkBhbmRyb2lkOmFuaW0vb3ZlcnNob290X2ludGVycG9sYXRvciIKKyAgICAgICAgYW5kcm9pZDpmcm9tWFNjYWxlPSIwLjciIGFuZHJvaWQ6dG9YU2NhbGU9IjEuMCIKKyAgICAgICAgYW5kcm9pZDpmcm9tWVNjYWxlPSIwLjciIGFuZHJvaWQ6dG9ZU2NhbGU9IjEuMCIKKyAgICAgICAgYW5kcm9pZDpwaXZvdFg9IjUwJSIgYW5kcm9pZDpwaXZvdFk9IjUwJSIKKyAgICAgICAgYW5kcm9pZDpkdXJhdGlvbj0iQGFuZHJvaWQ6aW50ZWdlci9jb25maWdfc2hvcnRBbmltVGltZSIgLz4KKyAgICA8YWxwaGEgCisgICAgICAgIGFuZHJvaWQ6aW50ZXJwb2xhdG9yPSJAYW5kcm9pZDphbmltL2RlY2VsZXJhdGVfaW50ZXJwb2xhdG9yIgorICAgICAgICBhbmRyb2lkOmZyb21BbHBoYT0iMC4wIiBhbmRyb2lkOnRvQWxwaGE9IjEuMCIKKyAgICAgICAgYW5kcm9pZDpkdXJhdGlvbj0iQGFuZHJvaWQ6aW50ZWdlci9jb25maWdfc2hvcnRBbmltVGltZSIgLz4KKzwvc2V0PgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2FuaW0vcHJpb3JpdHlfYWxlcnRfZXhpdC54bWwgYi9jb3JlL3Jlcy9yZXMvYW5pbS9wcmlvcml0eV9hbGVydF9leGl0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTM4Y2IyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2FuaW0vcHJpb3JpdHlfYWxlcnRfZXhpdC54bWwKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxzZXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgICAgICA+CisgICAgPHNjYWxlCisgICAgICAgIGFuZHJvaWQ6aW50ZXJwb2xhdG9yPSJAYW5kcm9pZDphbmltL2FjY2VsZXJhdGVfaW50ZXJwb2xhdG9yIgorICAgICAgICBhbmRyb2lkOmZyb21YU2NhbGU9IjEuMCIgYW5kcm9pZDp0b1hTY2FsZT0iMC43IgorICAgICAgICBhbmRyb2lkOmZyb21ZU2NhbGU9IjEuMCIgYW5kcm9pZDp0b1lTY2FsZT0iMC43IgorICAgICAgICBhbmRyb2lkOnBpdm90WD0iNTAlIiBhbmRyb2lkOnBpdm90WT0iNTAlIgorICAgICAgICBhbmRyb2lkOmR1cmF0aW9uPSJAYW5kcm9pZDppbnRlZ2VyL2NvbmZpZ19zaG9ydEFuaW1UaW1lIiAvPgorICAgIDxhbHBoYSAKKyAgICAgICAgYW5kcm9pZDppbnRlcnBvbGF0b3I9IkBhbmRyb2lkOmFuaW0vYWNjZWxlcmF0ZV9pbnRlcnBvbGF0b3IiCisgICAgICAgIGFuZHJvaWQ6ZnJvbUFscGhhPSIxLjAiIGFuZHJvaWQ6dG9BbHBoYT0iMC4wIgorICAgICAgICBhbmRyb2lkOmR1cmF0aW9uPSJAYW5kcm9pZDppbnRlZ2VyL2NvbmZpZ19zaG9ydEFuaW1UaW1lIiAvPgorPC9zZXQ+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX2VtcHR5LjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9lbXB0eS45LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRlNzBhOC4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX2VtcHR5LjkucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9mdWxsLjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9mdWxsLjkucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzY2ZjVhLi4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZnVsbC45LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfd2FybmluZy45LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfd2FybmluZy45LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJkOTljNi4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX3dhcm5pbmcuOS5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19hd2F5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F1ZGlvX2F3YXkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNWUxMjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19hd2F5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19idXN5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F1ZGlvX2J1c3kucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYWViMDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19idXN5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19vbmxpbmUucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYXVkaW9fb25saW5lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTNhY2JiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYXVkaW9fb25saW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hd2F5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F3YXkucG5nCmluZGV4IGQ0YWE2NmIuLjg0YjAwYmIgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F3YXkucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F3YXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2J1c3kucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYnVzeS5wbmcKaW5kZXggNGIyNzg1My4uZDc3YTQ2MyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYnVzeS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYnVzeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfaW52aXNpYmxlLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2ludmlzaWJsZS5wbmcKaW5kZXggMGUyN2ZiYS4uMGQ4M2U3MGEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2ludmlzaWJsZS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfaW52aXNpYmxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9vZmZsaW5lLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29mZmxpbmUucG5nCmluZGV4IGU1MTFhYTQuLjI2MTllOWYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29mZmxpbmUucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29mZmxpbmUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29ubGluZS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9vbmxpbmUucG5nCmluZGV4IGQ3ODdkMmYuLjdlODQ2ZWYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29ubGluZS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2Vfb25saW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19hd2F5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX3ZpZGVvX2F3YXkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNTQ5M2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19hd2F5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19idXN5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX3ZpZGVvX2J1c3kucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NmNkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19idXN5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19vbmxpbmUucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfdmlkZW9fb25saW5lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDlmOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfdmlkZW9fb25saW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2JsdWV0b290aC5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2JsdWV0b290aC5wbmcKaW5kZXggOTZkYzA4NS4uN2E4Yjc4ZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGgucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19waG9uZV9jYWxsX3JpbmdpbmcucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcGhvbmVfY2FsbF9yaW5naW5nLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTA3MTNiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcGhvbmVfY2FsbF9yaW5naW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9iYWNrZ3JvdW5kLnBuZwppbmRleCBlNmE4NjVhLi4zZDAwY2QwIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfYmFja2dyb3VuZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9jbG9zZV9vbi45LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfY2xvc2Vfb24uOS5wbmcKaW5kZXggNWFjZjYzOC4uZjMxM2ZmYiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9jbG9zZV9vbi45LnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2Nsb3NlX29uLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfaGVhZGVyX2JhY2tncm91bmQuOS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nCmluZGV4IGJlMzZmZjIuLjM3YjVmZWYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfaGVhZGVyX2JhY2tncm91bmQuOS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9oZWFkZXJfYmFja2dyb3VuZC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNiYXJfYmFja2dyb3VuZC45LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c2Jhcl9iYWNrZ3JvdW5kLjkucG5nCmluZGV4IGRjY2E2OTUuLmE0YmUyOTggMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c2Jhcl9iYWNrZ3JvdW5kLjkucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c2Jhcl9iYWNrZ3JvdW5kLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZW1wdHkuOS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX2VtcHR5LjkucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWQyMGJhLi4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZW1wdHkuOS5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX2Z1bGwuOS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX2Z1bGwuOS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNmFhY2EuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9mdWxsLjkucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF93YXJuaW5nLjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF93YXJuaW5nLjkucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzI4N2RiLi4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfd2FybmluZy45LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2F1ZGlvX2F3YXkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXVkaW9fYXdheS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI5Njc1NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2F1ZGlvX2F3YXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2F1ZGlvX2J1c3kucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXVkaW9fYnVzeS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEyOTk0OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2F1ZGlvX2J1c3kucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2F1ZGlvX29ubGluZS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9hdWRpb19vbmxpbmUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNDE1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9hdWRpb19vbmxpbmUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2F3YXkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXdheS5wbmcKaW5kZXggZjgxMjBkZi4uZjk4ZTkwOCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXdheS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXdheS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYnVzeS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9idXN5LnBuZwppbmRleCA5ZDc2MjBiLi45MzMyNjFmNCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYnVzeS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYnVzeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfaW52aXNpYmxlLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2ludmlzaWJsZS5wbmcKaW5kZXggMjEzOTlhNC4uOGQ3Mjc1NiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfaW52aXNpYmxlLnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9pbnZpc2libGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX29mZmxpbmUucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2Vfb2ZmbGluZS5wbmcKaW5kZXggMzk0MWI4Mi4uZmM3ODM5NiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2Vfb2ZmbGluZS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2Vfb2ZmbGluZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2Vfb25saW5lLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX29ubGluZS5wbmcKaW5kZXggMjJkNTY4My4uOTQzZWVlMCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2Vfb25saW5lLnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9vbmxpbmUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX3ZpZGVvX2F3YXkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfdmlkZW9fYXdheS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNlYzVkNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX3ZpZGVvX2F3YXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX3ZpZGVvX2J1c3kucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfdmlkZW9fYnVzeS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM3OWUwMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX3ZpZGVvX2J1c3kucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX3ZpZGVvX29ubGluZS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV92aWRlb19vbmxpbmUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0Y2ViMzkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV92aWRlb19vbmxpbmUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Bob25lX2NhbGxfcmluZ2luZy5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19waG9uZV9jYWxsX3JpbmdpbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NGQwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19waG9uZV9jYWxsX3JpbmdpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9iYXR0ZXJ5X2NoYXJnZV9maWxsLnhtbCBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9iYXR0ZXJ5X2NoYXJnZV9maWxsLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y2NTczMy4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvYmF0dGVyeV9jaGFyZ2VfZmlsbC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotCi0gICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICAKLSAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAgCi0gICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tLT4KLQotPGxldmVsLWxpc3QgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KLSAgICA8aXRlbSBhbmRyb2lkOm1heExldmVsPSIyOSIgYW5kcm9pZDpkcmF3YWJsZT0iQGFuZHJvaWQ6ZHJhd2FibGUvYmF0dGVyeV9jaGFyZ2VfZmlsbF9lbXB0eSIgLz4KLSAgICA8aXRlbSBhbmRyb2lkOm1heExldmVsPSI0OSIgYW5kcm9pZDpkcmF3YWJsZT0iQGFuZHJvaWQ6ZHJhd2FibGUvYmF0dGVyeV9jaGFyZ2VfZmlsbF93YXJuaW5nIiAvPgotICAgIDxpdGVtIGFuZHJvaWQ6bWF4TGV2ZWw9IjEwMCIgYW5kcm9pZDpkcmF3YWJsZT0iQGFuZHJvaWQ6ZHJhd2FibGUvYmF0dGVyeV9jaGFyZ2VfZmlsbF9mdWxsIiAvPgotPC9sZXZlbC1saXN0PgotCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLnhtbCBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nX2FuaW0ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTRjMTljLi4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nX2FuaW0ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS0KLS8qCi0qKgotKiogQ29weXJpZ2h0IDIwMDgsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSoqCi0qKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotKioKLSoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSoqCi0qKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0qKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0qKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0qKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSovCi0tLT4KLTxhbmltYXRpb24tbGlzdAotICAgICAgICB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCi0gICAgICAgIGFuZHJvaWQ6b25lc2hvdD0iZmFsc2UiPgotICAgIDxpdGVtIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nIiBhbmRyb2lkOmR1cmF0aW9uPSI1MDAiIC8+Ci0gICAgPGl0ZW0gYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3N0YXRfc3lzX2dwc19vbiIgYW5kcm9pZDpkdXJhdGlvbj0iNTAwIiAvPgotPC9hbmltYXRpb24tbGlzdD4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9zdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZC54bWwgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvc3RhdHVzX2Jhcl9pdGVtX2JhY2tncm91bmQueG1sCmluZGV4IDA4ODM4OWIuLjQyNWE1MDIgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9zdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZC54bWwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXR1c19iYXJfaXRlbV9iYWNrZ3JvdW5kLnhtbApAQCAtMTYsNyArMTYsNyBAQAogCiA8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KICAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiCi0gICAgCWFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZF9wcmVzc2VkIiAvPgorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9pdGVtX2JhY2tncm91bmRfcHJlc3NlZCIgLz4KICAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiIGFuZHJvaWQ6c3RhdGVfcHJlc3NlZD0iZmFsc2UiCiAgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZF9mb2N1cyIgLz4KICAgICA8aXRlbSBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9pdGVtX2JhY2tncm91bmRfbm9ybWFsIiAvPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXR1c19pY29uX2JhY2tncm91bmQueG1sIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXR1c19pY29uX2JhY2tncm91bmQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODQ2MTY1Li4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9zdGF0dXNfaWNvbl9iYWNrZ3JvdW5kLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tCi0vKiAvL2RldmljZS9hcHBzL2NvbW1vbi9yZXMvZHJhd2FibGUvc3RhdHVzX2ljb25fYmFja2dyb3VuZC54bWwKLSoqCi0qKiBDb3B5cmlnaHQgMjAwNywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotKioKLSoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKLSoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCi0qKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCi0qKgotKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKLSoqCi0qKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAotKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCi0qKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCi0qKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAotKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0qLwotLS0+Ci0KLTxzZWxlY3RvciB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgotICAgIDxpdGVtIGFuZHJvaWQ6c3RhdGVfc2VsZWN0ZWQ9InRydWUiIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9pY29uX2hpZ2hsaWdodF9yZWN0YW5nbGUiIC8+Ci0gICAgPGl0ZW0gYW5kcm9pZDpkcmF3YWJsZT0iQGNvbG9yL3RyYW5zcGFyZW50IiAvPgotPC9zZWxlY3Rvcj4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvYmF0dGVyeV9zdGF0dXMueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9iYXR0ZXJ5X3N0YXR1cy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZmVjMDUuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9iYXR0ZXJ5X3N0YXR1cy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotCi0gICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICAKLSAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAgCi0gICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tLT4KLQotPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCi0gICAgYW5kcm9pZDppZD0iQCtpZC9mcmFtZSIKLSAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgotICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgotICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX2hvcml6b250YWwiCi0gICAgPgotICAgIAotICAgIDxGcmFtZUxheW91dAotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMTQxcHgiIAotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjE4NHB4IgotICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9iYXR0ZXJ5X2NoYXJnZV9iYWNrZ3JvdW5kIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IjI1cHgiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjFweCIKLSAgICAgICAgPgotCi0gICAgICAgIDxMaW5lYXJMYXlvdXQKLSAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvbWV0ZXIiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKLSAgICAgICAgICAgID4KLQotICAgICAgICAgICAgPEltYWdlVmlldwotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIxNWRpcCIKLSAgICAgICAgICAgICAgICAvPgotICAgICAgICAgICAgPEltYWdlVmlldwotICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc3BhY2VyIgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgLz4KLSAgICAgICAgICAgIDxJbWFnZVZpZXcKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL2xldmVsIgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAvPgotICAgICAgICAKLSAgICAgICAgPC9MaW5lYXJMYXlvdXQ+Ci0KLSAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvbGV2ZWxfcGVyY2VudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFN0eWxlPSJib2xkIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iNDhkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSIjZmZmZmZmZmYiCi0gICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlciIKLSAgICAgICAgICAgIC8+Ci0gICAgPC9GcmFtZUxheW91dD4KLQotICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL3N0YXR1cyIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIzNWRwIgotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgotICAgICAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKLSAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMzBkcCIKLSAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IiNmZmZmZmZmZiIKLSAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfaG9yaXpvbnRhbCIKLSAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2JhdHRlcnlfc3RhdHVzX2NoYXJnaW5nIgotICAgICAgICAvPgotCi08L0xpbmVhckxheW91dD4KLQotCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L2hlYXZ5X3dlaWdodF9zd2l0Y2hlci54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L2hlYXZ5X3dlaWdodF9zd2l0Y2hlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjZjAwOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvaGVhdnlfd2VpZ2h0X3N3aXRjaGVyLnhtbApAQCAtMCwwICsxLDE0NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxMaW5lYXJMYXlvdXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIiBhbmRyb2lkOnBhZGRpbmc9IjRkcCIKKyAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl9ob3Jpem9udGFsIgorICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50Ij4KKworICAgIDxUZXh0VmlldworICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IiBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjhkcCIKKyAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2hlYXZ5X3dlaWdodF9zd2l0Y2hlcl90ZXh0Ii8+CisKKyAgICA8SW1hZ2VWaWV3IGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOnNjYWxlVHlwZT0iZml0WFkiCisgICAgICAgIGFuZHJvaWQ6c3JjPSI/YW5kcm9pZDpsaXN0RGl2aWRlciIgLz4KKyAgICAgICAgICAgIAorICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9zd2l0Y2hfb2xkIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDptaW5IZWlnaHQ9Ij9hbmRyb2lkOmF0dHIvbGlzdFByZWZlcnJlZEl0ZW1IZWlnaHQiCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiCisgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGFuZHJvaWQ6ZHJhd2FibGUvbGlzdF9zZWxlY3Rvcl9iYWNrZ3JvdW5kIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iM2RpcCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iM2RpcCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSI1ZGlwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjE0ZGlwIgorICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgYW5kcm9pZDpmb2N1c2FibGU9InRydWUiID4KKyAgICAKKyAgICAgICAgPEltYWdlVmlldyBhbmRyb2lkOmlkPSJAK2lkL29sZF9hcHBfaWNvbiIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJAYW5kcm9pZDpkaW1lbi9hcHBfaWNvbl9zaXplIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJAYW5kcm9pZDpkaW1lbi9hcHBfaWNvbl9zaXplIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luUmlnaHQ9IjExZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgorICAgICAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdENlbnRlciIvPgorICAgIAorICAgICAgICA8TGluZWFyTGF5b3V0CisgICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiID4KKyAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL29sZF9hcHBfYWN0aW9uIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZU1lZGl1bSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSIyZGlwIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiIC8+CisgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9vbGRfYXBwX2Rlc2NyaXB0aW9uIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iLTRkaXAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZVNtYWxsIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiIC8+CisgICAgICAgIDwvTGluZWFyTGF5b3V0PgorICAgIDwvTGluZWFyTGF5b3V0PgorCisgICAgPEltYWdlVmlldyBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdFhZIgorICAgICAgICBhbmRyb2lkOnNyYz0iP2FuZHJvaWQ6bGlzdERpdmlkZXIiIC8+CisgICAgICAgICAgICAKKyAgICA8TGluZWFyTGF5b3V0IGFuZHJvaWQ6aWQ9IkAraWQvc3dpdGNoX25ldyIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bWluSGVpZ2h0PSI/YW5kcm9pZDphdHRyL2xpc3RQcmVmZXJyZWRJdGVtSGVpZ2h0IgorICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBhbmRyb2lkOmRyYXdhYmxlL2xpc3Rfc2VsZWN0b3JfYmFja2dyb3VuZCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjNkaXAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjNkaXAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iNWRpcCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSI4ZGlwIgorICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgYW5kcm9pZDpmb2N1c2FibGU9InRydWUiID4KKyAgICAKKyAgICAgICAgPEltYWdlVmlldyBhbmRyb2lkOmlkPSJAK2lkL25ld19hcHBfaWNvbiIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJAYW5kcm9pZDpkaW1lbi9hcHBfaWNvbl9zaXplIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJAYW5kcm9pZDpkaW1lbi9hcHBfaWNvbl9zaXplIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luUmlnaHQ9IjExZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgorICAgICAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdENlbnRlciIvPgorICAgIAorICAgICAgICA8TGluZWFyTGF5b3V0CisgICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiID4KKyAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL25ld19hcHBfYWN0aW9uIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZU1lZGl1bSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSIyZGlwIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiIC8+CisgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9uZXdfYXBwX2Rlc2NyaXB0aW9uIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iLTRkaXAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZVNtYWxsIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiIC8+CisgICAgICAgIDwvTGluZWFyTGF5b3V0PgorICAgIDwvTGluZWFyTGF5b3V0PgorCisgICAgPEltYWdlVmlldyBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdFhZIgorICAgICAgICBhbmRyb2lkOnNyYz0iP2FuZHJvaWQ6bGlzdERpdmlkZXIiIC8+CisKKyAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9jYW5jZWwiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOm1pbkhlaWdodD0iP2FuZHJvaWQ6YXR0ci9saXN0UHJlZmVycmVkSXRlbUhlaWdodCIKKyAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZU1lZGl1bSIKKyAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAYW5kcm9pZDpkcmF3YWJsZS9saXN0X3NlbGVjdG9yX2JhY2tncm91bmQiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSI2ZGlwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI2ZGlwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IjVkaXAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iOGRpcCIKKyAgICAgICAgYW5kcm9pZDp0ZXh0U3R5bGU9ImJvbGQiCisgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCisgICAgICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvY2FuY2VsIiAvPgorCis8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3RhYl91bmxvY2sueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdGFiX3VubG9jay54bWwKaW5kZXggMjAwYTFiMi4uNmVkYmRmOSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdGFiX3VubG9jay54bWwKKysrIGIvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdGFiX3VubG9jay54bWwKQEAgLTQxLDcgKzQxLDYgQEAKICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im1hcnF1ZWUiCiAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0icmlnaHR8Ym90dG9tIgogICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIgotICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIyMnNwIgogICAgICAgICAvPgogCiAgICAgPCEtLSAiZW1lcmdlbmN5IGNhbGxzIG9ubHkiIHNob3duIHdoZW4gc2ltIGlzIG1pc3Npbmcgb3IgUFVLZCAtLT4KQEAgLTY1LDcgKzY0LDcgQEAKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfYmVsb3c9IkBpZC9jYXJyaWVyIgogICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjUyZGlwIgogICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5MZWZ0PSIyMGRpcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSI4ZGlwIgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Cb3R0b209IjhkaXAiCiAgICAgICAgID4KIAogICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC90aW1lRGlzcGxheSIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3RhYl91bmxvY2tfbGFuZC54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L2tleWd1YXJkX3NjcmVlbl90YWJfdW5sb2NrX2xhbmQueG1sCmluZGV4IDIzNTA1YzIuLmU2NmI0OTIgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3RhYl91bmxvY2tfbGFuZC54bWwKKysrIGIvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdGFiX3VubG9ja19sYW5kLnhtbApAQCAtNDYsNyArNDYsNiBAQAogICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im1hcnF1ZWUiCiAgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9InJpZ2h0fGJvdHRvbSIKICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VNZWRpdW0iCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIyMnNwIgogICAgICAgICAgICAgLz4KIAogICAgICAgICA8IS0tICJlbWVyZ2VuY3kgY2FsbHMgb25seSIgc2hvd24gd2hlbiBzaW0gaXMgbWlzc2luZyBvciBQVUtkIC0tPgpAQCAtNjYsNyArNjUsNyBAQAogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9iZWxvdz0iQGlkL2NhcnJpZXIiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjU2ZGlwIgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSI4ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSI4ZGlwIgogICAgICAgICAgICAgPgogCiAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC90aW1lRGlzcGxheSIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3VubG9ja19sYW5kc2NhcGUueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdW5sb2NrX2xhbmRzY2FwZS54bWwKaW5kZXggYjVjZDQ0Mi4uYzFiNDA2ZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdW5sb2NrX2xhbmRzY2FwZS54bWwKKysrIGIvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdW5sb2NrX2xhbmRzY2FwZS54bWwKQEAgLTU4LDE5ICs1OCwxOCBAQAogICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im1hcnF1ZWUiCiAgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9InJpZ2h0fGJvdHRvbSIKICAgICAgICAgICAgIC8+Ci0KICAgICAgICAgPGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5EaWdpdGFsQ2xvY2sgYW5kcm9pZDppZD0iQCtpZC90aW1lIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfYWxpZ25QYXJlbnRUb3A9InRydWUiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9hbGlnblBhcmVudExlZnQ9InRydWUiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjhkaXAiCi0gICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjhkaXAiCiAgICAgICAgICAgICA+CiAKICAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL3RpbWVEaXNwbGF5IgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJib3R0b20iCiAgICAgICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJub25lIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9Ijcyc3AiCkBAIC04NSw5ICs4NCw4IEBACiAKICAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2FtX3BtIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfdG9SaWdodE9mPSJAaWQvdGltZURpc3BsYXkiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfYWxpZ25CYXNlbGluZT0iQGlkL3RpbWVEaXNwbGF5IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iYm90dG9tIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmVsbGlwc2l6ZT0ibm9uZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIyMnNwIgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdW5sb2NrX3BvcnRyYWl0LnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3VubG9ja19wb3J0cmFpdC54bWwKaW5kZXggOWFjMGE0Ny4uNzRhMGVlZSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdW5sb2NrX3BvcnRyYWl0LnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L2tleWd1YXJkX3NjcmVlbl91bmxvY2tfcG9ydHJhaXQueG1sCkBAIC01NSwxMiArNTUsMTIgQEAKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50VG9wPSJ0cnVlIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSIxNWRpcCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkxlZnQ9IjIwZGlwIgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSI4ZGlwIgogICAgICAgICAgICAgPgogCiAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC90aW1lRGlzcGxheSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iYm90dG9tIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmVsbGlwc2l6ZT0ibm9uZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSI1NnNwIgpAQCAtNzQsOSArNzQsOCBAQAogCiAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9hbV9wbSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3RvUmlnaHRPZj0iQGlkL3RpbWVEaXNwbGF5IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduQmFzZWxpbmU9IkBpZC90aW1lRGlzcGxheSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImJvdHRvbSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im5vbmUiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMThzcCIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhci54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXIueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGQ4ODY2Li4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhci54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS0KLS8qIGFwcHMvY29tbW9uL2Fzc2V0cy9kZWZhdWx0L2RlZmF1bHQvc2tpbnMvU3RhdHVzQmFyLnhtbAotKioKLSoqIENvcHlyaWdodCAyMDA2LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0qKgotKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAotKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKLSoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKLSoqCi0qKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAotKioKLSoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCi0qKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKLSoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKLSoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCi0qKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSovCi0tLT4KLQotPCEtLSAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2Nsb3NlZF9kZWZhdWx0X2JhY2tncm91bmQiIC0tPgotPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuU3RhdHVzQmFyVmlldyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiIAotICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL3N0YXR1c2Jhcl9iYWNrZ3JvdW5kIgotICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgotICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIgotICAgIGFuZHJvaWQ6ZGVzY2VuZGFudEZvY3VzYWJpbGl0eT0iYWZ0ZXJEZXNjZW5kYW50cyIKLSAgICA+Ci0KLSAgICA8TGluZWFyTGF5b3V0IGFuZHJvaWQ6aWQ9IkAraWQvaWNvbnMiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIj4KLSAgICAgICAgICAgIAotICAgICAgICA8Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5JY29uTWVyZ2VyIGFuZHJvaWQ6aWQ9IkAraWQvbm90aWZpY2F0aW9uSWNvbnMiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRpcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfYWxpZ25QYXJlbnRMZWZ0PSJ0cnVlIgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNmRpcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgotICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIvPiAgCi0gICAgICAgICAgICAKLSAgICAgICAgPExpbmVhckxheW91dCBhbmRyb2lkOmlkPSJAK2lkL3N0YXR1c0ljb25zIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfYWxpZ25QYXJlbnRSaWdodD0idHJ1ZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSI2ZGlwIgotICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCi0gICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIi8+ICAgIAotICAgIDwvTGluZWFyTGF5b3V0PgotICAgICAgICAKLSAgICA8TGluZWFyTGF5b3V0IGFuZHJvaWQ6aWQ9IkAraWQvdGlja2VyIgotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNmRpcCIKLSAgICAgICAgYW5kcm9pZDphbmltYXRpb25DYWNoZT0iZmFsc2UiCi0gICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiID4KLSAgICAgICAgPEltYWdlU3dpdGNoZXIgYW5kcm9pZDppZD0iQCtpZC90aWNrZXJJY29uIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luUmlnaHQ9IjhkaXAiCi0gICAgICAgICAgICA+Ci0gICAgICAgICAgICA8Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5BbmltYXRlZEltYWdlVmlldwotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSIyNWRpcCIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjI1ZGlwIgotICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgICAgICA8Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5BbmltYXRlZEltYWdlVmlldwotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSIyNWRpcCIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjI1ZGlwIgotICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgIDwvSW1hZ2VTd2l0Y2hlcj4KLSAgICAgICAgPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuVGlja2VyVmlldyBhbmRyb2lkOmlkPSJAK2lkL3RpY2tlclRleHQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRpcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIyZGlwIgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjEwZGlwIj4KLSAgICAgICAgICAgIDxUZXh0VmlldwotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSIjZmYwMDAwMDAiIC8+Ci0gICAgICAgICAgICA8VGV4dFZpZXcKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmMDAwMDAwIiAvPgotICAgICAgICA8L2NvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuVGlja2VyVmlldz4KLSAgICA8L0xpbmVhckxheW91dD4KLQotICAgIDxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLkRhdGVWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvZGF0ZSIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKLSAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMTZzcCIKLSAgICAgICAgYW5kcm9pZDp0ZXh0U3R5bGU9ImJvbGQiCi0gICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsfGxlZnQiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjZweCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjZweCIKLSAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9Ij9hbmRyb2lkOmF0dHIvdGV4dENvbG9yUHJpbWFyeUludmVyc2UiCi0gICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL3N0YXR1c2Jhcl9iYWNrZ3JvdW5kIgotICAgICAgICAvPgotPC9jb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlN0YXR1c0JhclZpZXc+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfZXhwYW5kZWQueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2V4cGFuZGVkLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAxMzhhNy4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfZXhwYW5kZWQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tCi0vKiBhcHBzL2NvbW1vbi9hc3NldHMvZGVmYXVsdC9kZWZhdWx0L3NraW5zL1N0YXR1c0Jhci54bWwKLSoqCi0qKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotKioKLSoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKLSoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCi0qKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCi0qKgotKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKLSoqCi0qKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAotKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCi0qKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCi0qKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAotKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0qLwotLS0+Ci0KLTxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLkV4cGFuZGVkVmlldyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCi0gICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCi0gICAgYW5kcm9pZDpmb2N1c2FibGU9InRydWUiCi0gICAgYW5kcm9pZDpkZXNjZW5kYW50Rm9jdXNhYmlsaXR5PSJhZnRlckRlc2NlbmRhbnRzIgotICAgID4KLQotICAgIDxMaW5lYXJMYXlvdXQKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iM2RwIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjVkcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjNkcCIKLSAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9oZWFkZXJfYmFja2dyb3VuZCIKLSAgICAgICAgPgotICAgICAgICA8TGluZWFyTGF5b3V0Ci0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRwIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjFkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkxlZnQ9IjVkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iMWRwIgotICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCi0gICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvcGxtbkxhYmVsIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTGFyZ2UiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSI/YW5kcm9pZDphdHRyL3RleHRDb2xvclNlY29uZGFyeUludmVyc2UiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjRkcCIKLSAgICAgICAgICAgICAgICAgICAgLz4KLSAgICAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9zcG5MYWJlbCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZUxhcmdlIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iP2FuZHJvaWQ6YXR0ci90ZXh0Q29sb3JTZWNvbmRhcnlJbnZlcnNlIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI0ZHAiCi0gICAgICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgIDwvTGluZWFyTGF5b3V0PgotICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9jbGVhcl9hbGxfYnV0dG9uIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSI0ZHAiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Cb3R0b209IjFkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjE0c3AiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmMDAwMDAwIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3N0YXR1c19iYXJfY2xlYXJfYWxsX2J1dHRvbiIKLSAgICAgICAgICAgIHN0eWxlPSI/YW5kcm9pZDphdHRyL2J1dHRvblN0eWxlIgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iMTVkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIxNWRwIgotICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGwiCi0gICAgICAgICAgICAvPgotICAgIDwvTGluZWFyTGF5b3V0PgotCi0gICAgPEZyYW1lTGF5b3V0Ci0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiIAotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgotICAgICAgICA+Ci0gICAgICAgIDxTY3JvbGxWaWV3Ci0gICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3Njcm9sbCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6ZmFkaW5nRWRnZT0ibm9uZSIKLSAgICAgICAgICAgID4KLSAgICAgICAgICAgIDxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLk5vdGlmaWNhdGlvbkxpbmVhckxheW91dAotICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvbm90aWZpY2F0aW9uTGluZWFyTGF5b3V0IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCi0gICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL25vTm90aWZpY2F0aW9uc1RpdGxlIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvdGl0bGVfYmFyX3BvcnRyYWl0IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI1ZHAiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXJUaXRsZSIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3N0YXR1c19iYXJfbm9fbm90aWZpY2F0aW9uc190aXRsZSIKLSAgICAgICAgICAgICAgICAgICAgLz4KLQotICAgICAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL29uZ29pbmdUaXRsZSIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL3RpdGxlX2Jhcl9wb3J0cmFpdCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNWRwIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAc3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyVGl0bGUiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zdGF0dXNfYmFyX29uZ29pbmdfZXZlbnRzX3RpdGxlIgotICAgICAgICAgICAgICAgICAgICAvPgotICAgICAgICAgICAgICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9vbmdvaW5nSXRlbXMiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKLSAgICAgICAgICAgICAgICAgICAgLz4KLQotICAgICAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2xhdGVzdFRpdGxlIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvdGl0bGVfYmFyX3BvcnRyYWl0IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI1ZHAiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXJUaXRsZSIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3N0YXR1c19iYXJfbGF0ZXN0X2V2ZW50c190aXRsZSIKLSAgICAgICAgICAgICAgICAgICAgLz4KLSAgICAgICAgICAgICAgICA8TGluZWFyTGF5b3V0IGFuZHJvaWQ6aWQ9IkAraWQvbGF0ZXN0SXRlbXMiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKLSAgICAgICAgICAgICAgICAgICAgLz4KLSAgICAgICAgICAgIDwvY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQ+Ci0gICAgICAgIDwvU2Nyb2xsVmlldz4KLQotICAgICAgICA8SW1hZ2VWaWV3Ci0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOnNyYz0iQGRyYXdhYmxlL3RpdGxlX2Jhcl9zaGFkb3ciCi0gICAgICAgICAgICBhbmRyb2lkOnNjYWxlVHlwZT0iZml0WFkiCi0gICAgICAgIC8+Ci0KLSAgICA8L0ZyYW1lTGF5b3V0PgotPC9jb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLkV4cGFuZGVkVmlldz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9pY29uLnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9pY29uLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUzNjc5Mi4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfaWNvbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLQotLyogYXBwcy9jb21tb24vYXNzZXRzL2RlZmF1bHQvZGVmYXVsdC9za2lucy9TdGF0dXNCYXIueG1sCi0qKgotKiogQ29weXJpZ2h0IDIwMDYsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSoqCi0qKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCi0qKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAotKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAotKioKLSoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCi0qKgotKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKLSoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAotKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAotKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKLSoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotKi8KLS0tPgotCi08IS0tIFRoZSBpY29ucyBhcmUgYSBmaXhlZCBzaXplIHNvIGFuIGFwcCBjYW4ndCBtZXNzIGV2ZXJ5dGhpbmcgdXAgd2l0aCBib2d1cyBpbWFnZXMgLS0+Ci08IS0tIFRPRE86IHRoZSBpY29ucyBhcmUgaGFyZCBjb2RlZCB0byAyNXgyNSBwaXhlbHMuICBUaGVpciBzaXplIHNob3VsZCBjb21lIGZyb2VtIGEgdGhlbWUgLS0+Ci08RnJhbWVMYXlvdXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIiAKLSAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjVkcCIgCi0gICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyNWRwIgotICAgID4KLQotICAgIDxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLkFuaW1hdGVkSW1hZ2VWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvaW1hZ2UiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiIAotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgLz4KLQotICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL251bWJlciIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIgCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJyaWdodHxib3R0b20iCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblJpZ2h0PSIxZHAiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMWRwIgotICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIxMHNwIgotICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmZmZmZmZmIgotICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9pY19ub3RpZmljYXRpb25fb3ZlcmxheSIKLSAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCi0gICAgICAgIGFuZHJvaWQ6dGV4dFN0eWxlPSJib2xkIgotICAgICAgICAvPgotCi08L0ZyYW1lTGF5b3V0PgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudC54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfbGF0ZXN0X2V2ZW50LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTljYzkwZC4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfbGF0ZXN0X2V2ZW50LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTxMaW5lYXJMYXlvdXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgotICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSI2NXNwIgotICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgotICAgID4KLQotICAgIDxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLkxhdGVzdEl0ZW1WaWV3IGFuZHJvaWQ6aWQ9IkAraWQvY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjY0c3AiCi0gICAgICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZCIKLSAgICAgICAgICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIgotICAgICAgICAgICAgYW5kcm9pZDpjbGlja2FibGU9InRydWUiCi0gICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNnNwIgotICAgICAgICAgICAgPgotICAgIDwvY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5MYXRlc3RJdGVtVmlldz4KLQotICAgIDxWaWV3Ci0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMXNwIgotICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9kaXZpZGVyX2hvcml6b250YWxfYnJpZ2h0IgotICAgICAgICAvPgotCi08L0xpbmVhckxheW91dD4KLQpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudF9jb250ZW50LnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9sYXRlc3RfZXZlbnRfY29udGVudC54bWwKaW5kZXggYzNhYTA0MS4uYzY0YjkwZSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudF9jb250ZW50LnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfbGF0ZXN0X2V2ZW50X2NvbnRlbnQueG1sCkBAIC0xMiwyMiArMTIsMjIgQEAKICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKICAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIzZHAiCiAgICAgICAgID4KLSAgICAgICAgPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuQW5pbWF0ZWRJbWFnZVZpZXcgYW5kcm9pZDppZD0iQCtpZC9pY29uIgorICAgICAgICA8IS0tY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5BbmltYXRlZEltYWdlVmlldyBhbmRyb2lkOmlkPSJAK2lkL2ljb24iIC0tPgorICAgICAgICA8SW1hZ2VWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvaWNvbiIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSIyNWRwIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyNWRwIgogICAgICAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdENlbnRlciIKICAgICAgICAgICAgIGFuZHJvaWQ6c3JjPSJAZHJhd2FibGUvYXJyb3dfZG93bl9mbG9hdCIvPgogICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC90aXRsZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuRXZlbnRDb250ZW50LlRpdGxlIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgogICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgogICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im1hcnF1ZWUiCiAgICAgICAgICAgICBhbmRyb2lkOmZhZGluZ0VkZ2U9Imhvcml6b250YWwiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKLSAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjE4c3AiCiAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI0ZHAiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmMDAwMDAwIiAvPgorICAgICAgICAgICAgLz4KICAgICA8L0xpbmVhckxheW91dD4KICAgICA8TGluZWFyTGF5b3V0CiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCkBAIC0zNSwyMyArMzUsMjIgQEAKICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKICAgICAgICAgPgogICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC90ZXh0IgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iQHN0eWxlL1RleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5FdmVudENvbnRlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmMDAwMDAwIgogICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgogICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im1hcnF1ZWUiCiAgICAgICAgICAgICBhbmRyb2lkOmZhZGluZ0VkZ2U9Imhvcml6b250YWwiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIxNHNwIgogICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNGRwIgogICAgICAgICAgICAgLz4KICAgICAgICAgPGFuZHJvaWQud2lkZ2V0LkRhdGVUaW1lVmlldyBhbmRyb2lkOmlkPSJAK2lkL3RpbWUiCisgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAc3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkV2ZW50Q29udGVudCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkxlZnQ9IjRkcCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjE0c3AiCiAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNWRwIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IiNmZjAwMDAwMCIgLz4KKyAgICAgICAgICAgIC8+CiAgICAgPC9MaW5lYXJMYXlvdXQ+CiA8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl90cmFja2luZy54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfdHJhY2tpbmcueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGE3YTk3Li4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl90cmFja2luZy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLQotICAgIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0KLSAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0KLSAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5UcmFja2luZ1ZpZXcgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgotICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgotICAgIGFuZHJvaWQ6dmlzaWJpbGl0eT0iZ29uZSIKLSAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKLSAgICBhbmRyb2lkOmRlc2NlbmRhbnRGb2N1c2FiaWxpdHk9ImFmdGVyRGVzY2VuZGFudHMiCi0gICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSIwcHgiCi0gICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iMHB4IgotICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIwcHgiCi0gICAgPgotCi0gICAgPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuVHJhY2tpbmdQYXR0ZXJuVmlldwotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgotICAgICAgICAvPgotCi0gICAgPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuQ2xvc2VEcmFnSGFuZGxlIGFuZHJvaWQ6aWQ9IkAraWQvY2xvc2UiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKLSAgICAgICAgPgotICAgICAgICA8SW1hZ2VWaWV3Ci0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJib3R0b20iCi0gICAgICAgICAgICBhbmRyb2lkOnNjYWxlVHlwZT0iZml0WFkiCi0gICAgICAgICAgICBhbmRyb2lkOnNyYz0iQGRyYXdhYmxlL3N0YXR1c19iYXJfY2xvc2Vfb24iLz4KLQotICAgIDwvY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5DbG9zZURyYWdIYW5kbGU+Ci0KLTwvY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5UcmFja2luZ1ZpZXc+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2FycmF5cy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL2FycmF5cy54bWwKaW5kZXggNDY3MmMwZS4uYWVlZThhZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9hcnJheXMueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXJyYXlzLnhtbApAQCAtMTE3LDI4ICsxMTcsNCBAQAogICAgICAgICA8aXRlbT4zPC9pdGVtPgogICAgIDwvaW50ZWdlci1hcnJheT4KIAotICAgIDwhLS0gRG8gbm90IHRyYW5zbGF0ZS4gRGVmaW5lcyB0aGUgc2xvdHMgZm9yIHRoZSByaWdodC1oYW5kIHNpZGUgaWNvbnMuICBUaGF0IGlzIHRvIHNheSwgdGhlCi0gICAgICAgICBpY29ucyBpbiB0aGUgc3RhdHVzIGJhciB0aGF0IGFyZSBub3Qgbm90aWZpY2F0aW9ucy4gLS0+Ci0gICAgPHN0cmluZy1hcnJheSBuYW1lPSJzdGF0dXNfYmFyX2ljb25fb3JkZXIiPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmNsb2NrPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5zZWN1cmU8L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmFsYXJtX2Nsb2NrPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5iYXR0ZXJ5PC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5waG9uZV9zaWduYWw8L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnBob25lX2V2ZG9fc2lnbmFsPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5kYXRhX2Nvbm5lY3Rpb248L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmNkbWFfZXJpPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj50dHk8L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnZvbHVtZTwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+bXV0ZTwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+c3BlYWtlcnBob25lPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj53aWZpPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj50dHk8L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmJsdWV0b290aDwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+Z3BzPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5zeW5jX2FjdGl2ZTwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+c3luY19mYWlsaW5nPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5pbWU8L3hsaWZmOmc+PC9pdGVtPgotICAgIDwvc3RyaW5nLWFycmF5PgotCiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnMueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9hdHRycy54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA2ZDZjNDdmLi44ZDRmYTRlCi0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnMueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnMueG1sCkBAIC05MTYsNiArOTE2LDEwIEBACiAgICAgICAgIDxlbnVtIG5hbWU9IktFWUNPREVfTUVESUFfUkVXSU5EIiB2YWx1ZT0iODkiIC8+CiAgICAgICAgIDxlbnVtIG5hbWU9IktFWUNPREVfTUVESUFfRkFTVF9GT1JXQVJEIiB2YWx1ZT0iOTAiIC8+CiAgICAgICAgIDxlbnVtIG5hbWU9IktFWUNPREVfTVVURSIgdmFsdWU9IjkxIiAvPgorICAgICAgICA8ZW51bSBuYW1lPSJLRVlDT0RFX1BBR0VfVVAiIHZhbHVlPSI5MiIgLz4KKyAgICAgICAgPGVudW0gbmFtZT0iS0VZQ09ERV9QQUdFX0RPV04iIHZhbHVlPSI5MyIgLz4KKyAgICAgICAgPGVudW0gbmFtZT0iS0VZQ09ERV9QSUNUU1lNQk9MUyIgdmFsdWU9Ijk0IiAvPgorICAgICAgICA8ZW51bSBuYW1lPSJLRVlDT0RFX1NXSVRDSF9DSEFSU0VUIiB2YWx1ZT0iOTUiIC8+CiAgICAgPC9hdHRyPgogCiAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnNfbWFuaWZlc3QueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9hdHRyc19tYW5pZmVzdC54bWwKaW5kZXggZWQ3NDQ3Yy4uZjE4ZDE0ZSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9hdHRyc19tYW5pZmVzdC54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9hdHRyc19tYW5pZmVzdC54bWwKQEAgLTYyLDYgKzYyLDIyIEBACiAgICAgICAgICBhIHJlZmVyZW5jZSB0byBhIERyYXdhYmxlIHJlc291cmNlIGNvbnRhaW5pbmcgdGhlIGltYWdlIGRlZmluaXRpb24uIC0tPgogICAgIDxhdHRyIG5hbWU9Imljb24iIGZvcm1hdD0icmVmZXJlbmNlIiAvPgogCisgICAgPCEtLSBBIERyYXdhYmxlIHJlc291cmNlIHByb3ZpZGluZyBhbiBleHRlbmRlZCBncmFwaGljYWwgbG9nbyBmb3IgaXRzCisgICAgICAgICBhc3NvY2lhdGVkIGl0ZW0uIFVzZSB3aXRoIHRoZSBhcHBsaWNhdGlvbiB0YWcgKHRvIHN1cHBseSBhIGRlZmF1bHQKKyAgICAgICAgIGxvZ28gZm9yIGFsbCBhcHBsaWNhdGlvbiBjb21wb25lbnRzKSwgb3Igd2l0aCB0aGUgYWN0aXZpdHksIHJlY2VpdmVyLAorICAgICAgICAgc2VydmljZSwgb3IgaW5zdHJ1bWVudGF0aW9uIHRhZyAodG8gc3VwcGx5IGEgc3BlY2lmaWMgbG9nbyBmb3IgdGhhdAorICAgICAgICAgY29tcG9uZW50KS4gSXQgbWF5IGFsc28gYmUgdXNlZCB3aXRoIHRoZSBpbnRlbnQtZmlsdGVyIHRhZyB0byBzdXBwbHkKKyAgICAgICAgIGEgbG9nbyB0byBzaG93IHRvIHRoZSB1c2VyIHdoZW4gYW4gYWN0aXZpdHkgaXMgYmVpbmcgc2VsZWN0ZWQgYmFzZWQKKyAgICAgICAgIG9uIGEgcGFydGljdWxhciBJbnRlbnQuCisKKyAgICAgICAgIDxwPlRoZSBnaXZlbiBsb2dvIHdpbGwgYmUgdXNlZCB0byBkaXNwbGF5IHRvIHRoZSB1c2VyIGEgZ3JhcGhpY2FsCisgICAgICAgICByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXNzb2NpYXRlZCBjb21wb25lbnQ7IGZvciBleGFtcGxlIGFzIHRoZQorICAgICAgICAgaGVhZGVyIGluIHRoZSBBY3Rpb24gQmFyLiBUaGUgcHJpbWFyeSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGFuIGljb24KKyAgICAgICAgIGFuZCBhIGxvZ28gYXJlIHRoYXQgbG9nb3MgYXJlIG9mdGVuIHdpZGVyIGFuZCBtb3JlIGRldGFpbGVkLCBhbmQgYXJlCisgICAgICAgICB1c2VkIHdpdGhvdXQgYW4gYWNjb21wYW55aW5nIHRleHQgY2FwdGlvbi4gVGhpcyBtdXN0IGJlIGEgcmVmZXJlbmNlCisgICAgICAgICB0byBhIERyYXdhYmxlIHJlc291cmNlIGNvbnRhaW5pbmcgdGhlIGltYWdlIGRlZmluaXRpb24uIC0tPgorICAgIDxhdHRyIG5hbWU9ImxvZ28iIGZvcm1hdD0icmVmZXJlbmNlIiAvPgorCiAgICAgPCEtLSBOYW1lIG9mIHRoZSBhY3Rpdml0eSB0byBiZSBsYXVuY2hlZCB0byBtYW5hZ2UgYXBwbGljYXRpb24ncyBzcGFjZSBvbgogICAgICAgICAgZGV2aWNlLiBUaGUgc3BlY2lmaWVkIGFjdGl2aXR5IGdldHMgYXV0b21hdGljYWxseSBsYXVuY2hlZCB3aGVuIHRoZQogICAgICAgICAgYXBwbGljYXRpb24ncyBzcGFjZSBuZWVkcyB0byBiZSBtYW5hZ2VkIGFuZCBpcyB1c3VhbGx5IGludm9rZWQgCkBAIC03OSw2ICs5NSwxMyBAQAogICAgICAgICAgYnkgYXBwbGljYXRpb25zLiAtLT4KICAgICA8YXR0ciBuYW1lPSJhbGxvd0NsZWFyVXNlckRhdGEiIGZvcm1hdD0iYm9vbGVhbiIgLz4KIAorICAgIDwhLS0gT3B0aW9uIHRvIGxldCBhcHBsaWNhdGlvbnMgc3BlY2lmeSB0aGF0IHVzZXIgZGF0YSBzaG91bGQKKyAgICAgICAgIG5ldmVyIGJlIGVuY3J5cHRlZCBpZiBhbiBFbmNyeXB0ZWQgRmlsZSBTeXN0ZW0gc29sdXRpb24KKyAgICAgICAgIGlzIGVuYWJsZWQuIFNwZWNpZmljYWxseSwgdGhpcyBpcyBhbiAib3B0LW91dCIgZmVhdHVyZSwgbWVhbmluZworICAgICAgICAgdGhhdCwgYnkgZGVmYXVsdCwgdXNlciBkYXRhIHdpbGwgYmUgZW5jcnlwdGVkIGlmIHRoZSBFRlMgZmVhdHVyZQorICAgICAgICAgaXMgZW5hYmxlZC4gLS0+CisgICAgPGF0dHIgbmFtZT0ibmV2ZXJFbmNyeXB0IiBmb3JtYXQ9ImJvb2xlYW4iIC8+CisKICAgICA8IS0tIE9wdGlvbiB0byBpbmRpY2F0ZSB0aGlzIGFwcGxpY2F0aW9uIGlzIG9ubHkgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgICAgICBGb3IgZXhhbXBsZSwgaXQgbWF5IGV4cG9zZSBmdW5jdGlvbmFsaXR5IG9yIGRhdGEgb3V0c2lkZSBvZiBpdHNlbGYKICAgICAgICAgIHRoYXQgd291bGQgY2F1c2UgYSBzZWN1cml0eSBob2xlLCBidXQgaXMgdXNlZnVsIGZvciB0ZXN0aW5nLiAgVGhpcwpAQCAtMzc1LDYgKzM5OCwxMCBAQAogICAgICAgICAgcGFydGljaXBhdGUgaW4gZGF0YSBzeW5jaHJvbml6YXRpb24uIC0tPgogICAgIDxhdHRyIG5hbWU9InN5bmNhYmxlIiBmb3JtYXQ9ImJvb2xlYW4iIC8+CiAgICAgCisgICAgPCEtLSBGbGFnIGRlY2xhcmluZyB0aGlzIGFjdGl2aXR5IHRvIGJlICdpbW1lcnNpdmUnOyBpbW1lcnNpdmUgYWN0aXZpdGllcworICAgICAgICAgc2hvdWxkIG5vdCBiZSBpbnRlcnJ1cHRlZCB3aXRoIG90aGVyIGFjdGl2aXRpZXMgb3Igbm90aWZpY2F0aW9ucy4gLS0+CisgICAgPGF0dHIgbmFtZT0iaW1tZXJzaXZlIiBmb3JtYXQ9ImJvb2xlYW4iIC8+CisKICAgICA8IS0tIFNwZWNpZnkgdGhlIG9yZGVyIGluIHdoaWNoIGNvbnRlbnQgcHJvdmlkZXJzIGhvc3RlZCBieSBhIHByb2Nlc3MKICAgICAgICAgIGFyZSBpbnN0YW50aWF0ZWQgd2hlbiB0aGF0IHByb2Nlc3MgaXMgY3JlYXRlZC4gIE5vdCBuZWVkZWQgdW5sZXNzCiAgICAgICAgICB5b3UgaGF2ZSBwcm92aWRlcnMgd2l0aCBkZXBlbmRlbmNpZXMgYmV0d2VlbiBlYWNoIG90aGVyLCB0byBtYWtlCkBAIC02ODgsNiArNzE1LDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0idGhlbWUiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImxhYmVsIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJkZXNjcmlwdGlvbiIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0icGVybWlzc2lvbiIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0icHJvY2VzcyIgLz4KQEAgLTcxNSw2ICs3NDMsMTYgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ia2lsbEFmdGVyUmVzdG9yZSIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0icmVzdG9yZU5lZWRzQXBwbGljYXRpb24iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InJlc3RvcmVBbnlWZXJzaW9uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJuZXZlckVuY3J5cHQiIC8+CisgICAgICAgIDwhLS0gRGVjbGFyZSB0aGF0IHRoaXMgaXMgYSBoZWF2eS13ZWlnaHQgYXBwbGljYXRpb24uICBUaGlzIGtpbmQgb2YKKyAgICAgICAgICAgICBhcHBsaWNhdGlvbiBpcyBub3QgYWJsZSB0byBzYXZlIGFuZCByZXN0b3JlIGl0cyBzdGF0ZSBvbiBkZW1hbmQsCisgICAgICAgICAgICAgc28gY2FuIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbm9ybWFsIGFjdGl2aXR5IGxpZmVjeWNsZS4gIEl0IHdpbGwKKyAgICAgICAgICAgICBub3QgYmUga2lsbGVkIHdoaWxlIGluIHRoZSBiYWNrZ3JvdW5kOyB0aGUgdXNlciBtdXN0IGV4cGxpY2l0bHkKKyAgICAgICAgICAgICBxdWl0IGl0LiAgT25seSBvbmUgc3VjaCBhcHAgY2FuIGJlIHJ1bm5pbmcgYXQgYSB0aW1lOyBpZiB0aGUgdXNlcgorICAgICAgICAgICAgIHRyaWVzIHRvIGxhdW5jaCBhIHNlY29uZCBoZWF2eS13ZWlnaHQgYXBwLCB0aGV5IHdpbGwgYmUgcHJvbXB0ZWQKKyAgICAgICAgICAgICB0byBxdWl0IHRoZSBmaXJzdCBiZWZvcmUgZG9pbmcgc28uICBXaGlsZSBhIGhlYXZ5LXdlaWdodAorICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcsIHRoZSB1c2VyIHdpbGwgYmUgaW5mb3JtZWQgb2YgdGhpcy4gLS0+CisgICAgICAgIDxhdHRyIG5hbWU9ImhlYXZ5V2VpZ2h0IiBmb3JtYXQ9ImJvb2xlYW4iIC8+CiAgICAgPC9kZWNsYXJlLXN0eWxlYWJsZT4KICAgICAKICAgICA8IS0tIFRoZSA8Y29kZT5wZXJtaXNzaW9uPC9jb2RlPiB0YWcgZGVjbGFyZXMgYSBzZWN1cml0eSBwZXJtaXNzaW9uIHRoYXQgY2FuIGJlCkBAIC03MzQsNiArNzcyLDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ibmFtZSIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9Imljb24iIC8+CisgICAgICAgIDxhdHRyIG5hbWU9ImxvZ28iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InBlcm1pc3Npb25Hcm91cCIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iZGVzY3JpcHRpb24iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InByb3RlY3Rpb25MZXZlbCIgLz4KQEAgLTc1OCw2ICs3OTcsNyBAQAogICAgICAgICA8YXR0ciBuYW1lPSJuYW1lIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJsYWJlbCIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iaWNvbiIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0ibG9nbyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iZGVzY3JpcHRpb24iIC8+CiAgICAgPC9kZWNsYXJlLXN0eWxlYWJsZT4KICAgICAKQEAgLTc4Nyw2ICs4MjcsNyBAQAogICAgICAgICA8YXR0ciBuYW1lPSJuYW1lIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJsYWJlbCIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iaWNvbiIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0ibG9nbyIgLz4KICAgICA8L2RlY2xhcmUtc3R5bGVhYmxlPgogICAgIAogICAgIDwhLS0gVGhlIDxjb2RlPnVzZXMtcGVybWlzc2lvbjwvY29kZT4gdGFnIHJlcXVlc3RzIGEKQEAgLTkzNyw2ICs5NzgsOCBAQAogICAgICAgICAgICAgIHNjcmVlbiwgc28gdGhhdCBpdCByZXRhaW5zIHRoZSBkaW1lbnNpb25zIGl0IHdhcyBvcmlnaW5hbGx5CiAgICAgICAgICAgICAgZGVzaWduZWQgZm9yLiAtLT4KICAgICAgICAgPGF0dHIgbmFtZT0ibGFyZ2VTY3JlZW5zIiBmb3JtYXQ9ImJvb2xlYW4iIC8+CisgICAgICAgIDwhLS0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIHN1cHBvcnRzIGV4dHJhIGxhcmdlIHNjcmVlbiBmb3JtLWZhY3RvcnMuIC0tPgorICAgICAgICA8YXR0ciBuYW1lPSJ4bGFyZ2VTY3JlZW5zIiBmb3JtYXQ9ImJvb2xlYW4iIC8+CiAgICAgICAgIDwhLS0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIGNhbiByZXNpemUgaXRzZWxmIHRvIG5ld2VyCiAgICAgICAgICAgICAgc2NyZWVuIHNpemVzLiAgVGhpcyBpcyBtb3N0bHkgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG9sZAogICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyB0aGF0IG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoIG5ld2x5IGludHJvZHVjZWQKQEAgLTk4OSw2ICsxMDMyLDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImRlc2NyaXB0aW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwcm9jZXNzIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJhdXRob3JpdGllcyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0ic3luY2FibGUiIC8+CkBAIC0xMDY4LDYgKzExMTIsNyBAQAogICAgICAgICA8YXR0ciBuYW1lPSJsYWJlbCIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iZGVzY3JpcHRpb24iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9Imljb24iIC8+CisgICAgICAgIDxhdHRyIG5hbWU9ImxvZ28iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InBlcm1pc3Npb24iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InByb2Nlc3MiIC8+CiAgICAgICAgIDwhLS0gU3BlY2lmeSB3aGV0aGVyIHRoZSBzZXJ2aWNlIGlzIGVuYWJsZWQgb3Igbm90ICh0aGF0IGlzLCBjYW4gYmUgaW5zdGFudGlhdGVkIGJ5IHRoZSBzeXN0ZW0pLgpAQCAtMTEwMCw2ICsxMTQ1LDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImRlc2NyaXB0aW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwZXJtaXNzaW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwcm9jZXNzIiAvPgogICAgICAgICA8IS0tIFNwZWNpZnkgd2hldGhlciB0aGUgcmVjZWl2ZXIgaXMgZW5hYmxlZCBvciBub3QgKHRoYXQgaXMsIGNhbiBiZSBpbnN0YW50aWF0ZWQgYnkgdGhlIHN5c3RlbSkuCkBAIC0xMTMyLDYgKzExNzgsNyBAQAogICAgICAgICA8YXR0ciBuYW1lPSJsYWJlbCIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iZGVzY3JpcHRpb24iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9Imljb24iIC8+CisgICAgICAgIDxhdHRyIG5hbWU9ImxvZ28iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImxhdW5jaE1vZGUiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InNjcmVlbk9yaWVudGF0aW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJjb25maWdDaGFuZ2VzIiAvPgpAQCAtMTE1Nyw2ICsxMjA0LDcgQEAKICAgICAgICAgICAgICB0aGlzIGFjdGl2aXR5LiAgQSB2YWx1ZSBiZXNpZGVzICJ1bnNwZWNpZmllZCIgaGVyZSBvdmVycmlkZXMKICAgICAgICAgICAgICBhbnkgdmFsdWUgaW4gdGhlIHRoZW1lLiAtLT4KICAgICAgICAgPGF0dHIgbmFtZT0id2luZG93U29mdElucHV0TW9kZSIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0iaW1tZXJzaXZlIiAvPgogICAgIDwvZGVjbGFyZS1zdHlsZWFibGU+CiAgICAgCiAgICAgPCEtLSBUaGUgPGNvZGU+YWN0aXZpdHktYWxpYXM8L2NvZGU+IHRhZyBkZWNsYXJlcyBhIG5ldwpAQCAtMTE4NSw2ICsxMjMzLDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImRlc2NyaXB0aW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwZXJtaXNzaW9uIiAvPgogICAgICAgICA8IS0tIFNwZWNpZnkgd2hldGhlciB0aGUgYWN0aXZpdHktYWxpYXMgaXMgZW5hYmxlZCBvciBub3QgKHRoYXQgaXMsIGNhbiBiZSBpbnN0YW50aWF0ZWQgYnkgdGhlIHN5c3RlbSkuCiAgICAgICAgICAgICAgSXQgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGZvciBhbiBhcHBsaWNhdGlvbiBhcyBhIHdob2xlLCBpbiB3aGljaCBjYXNlIGEgdmFsdWUgb2YgImZhbHNlIgpAQCAtMTI1NCw2ICsxMzAzLDcgQEAKICAgICAgICAgIHBhcmVudD0iQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHkgQW5kcm9pZE1hbmlmZXN0UmVjZWl2ZXIgQW5kcm9pZE1hbmlmZXN0U2VydmljZSI+CiAgICAgICAgIDxhdHRyIG5hbWU9ImxhYmVsIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwcmlvcml0eSIgLz4KICAgICA8L2RlY2xhcmUtc3R5bGVhYmxlPgogICAgIApAQCAtMTM2MCw2ICsxNDEwLDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0idGFyZ2V0UGFja2FnZSIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9Imljb24iIC8+CisgICAgICAgIDxhdHRyIG5hbWU9ImxvZ28iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImhhbmRsZVByb2ZpbGluZyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iZnVuY3Rpb25hbFRlc3QiIC8+CiAgICAgPC9kZWNsYXJlLXN0eWxlYWJsZT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvY29uZmlnLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvY29uZmlnLnhtbAppbmRleCAwODhhYjQ0Li5kNTY1YzY4IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2NvbmZpZy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9jb25maWcueG1sCkBAIC0xOSw3ICsxOSwzNSBAQAogCiA8IS0tIFRoZXNlIHJlc291cmNlcyBhcmUgYXJvdW5kIGp1c3QgdG8gYWxsb3cgdGhlaXIgdmFsdWVzIHRvIGJlIGN1c3RvbWl6ZWQKICAgICAgZm9yIGRpZmZlcmVudCBoYXJkd2FyZSBhbmQgcHJvZHVjdCBidWlsZHMuIC0tPgotPHJlc291cmNlcz4KKzxyZXNvdXJjZXMgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDwhLS0gQ29tcG9uZW50IHRvIGJlIHVzZWQgYXMgdGhlIHN0YXR1cyBiYXIgc2VydmljZS4gIE11c3QgaW1wbGVtZW50IHRoZSBJU3RhdHVzQmFyCisgICAgICAgICBpbnRlcmZhY2UuICBUaGlzIG5hbWUgaXMgaW4gdGhlIENvbXBvbmVudE5hbWUgZmxhdHRlbmVkIGZvcm1hdCAocGFja2FnZS9jbGFzcykgIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iY29uZmlnX3N0YXR1c0JhckNvbXBvbmVudCI+Y29tLmFuZHJvaWQuc3lzdGVtdWkvY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLlN0YXR1c0JhclNlcnZpY2U8L3N0cmluZz4KKworICAgIDwhLS0gRG8gbm90IHRyYW5zbGF0ZS4gRGVmaW5lcyB0aGUgc2xvdHMgZm9yIHRoZSByaWdodC1oYW5kIHNpZGUgaWNvbnMuICBUaGF0IGlzIHRvIHNheSwgdGhlCisgICAgICAgICBpY29ucyBpbiB0aGUgc3RhdHVzIGJhciB0aGF0IGFyZSBub3Qgbm90aWZpY2F0aW9ucy4gLS0+CisgICAgPHN0cmluZy1hcnJheSBuYW1lPSJjb25maWdfc3RhdHVzQmFySWNvbnMiPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+aW1lPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnN5bmNfZmFpbGluZzwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5zeW5jX2FjdGl2ZTwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5ncHM8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+Ymx1ZXRvb3RoPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnR0eTwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5zcGVha2VycGhvbmU8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+bXV0ZTwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj52b2x1bWU8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+dHR5PC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPndpZmk8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+Y2RtYV9lcmk8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+ZGF0YV9jb25uZWN0aW9uPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnBob25lX2V2ZG9fc2lnbmFsPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnBob25lX3NpZ25hbDwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5iYXR0ZXJ5PC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmFsYXJtX2Nsb2NrPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnNlY3VyZTwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5jbG9jazwveGxpZmY6Zz48L2l0ZW0+CisgICAgPC9zdHJpbmctYXJyYXk+CisKICAgICA8IS0tIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBzdXJmYWNlIGZsaW5nZXIgaGFzIGxpbWl0ZWQKICAgICAgICAgIGFscGhhIGNvbXBvc2l0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gaGFyZHdhcmUuICBJZiBzZXQsIHRoZSB3aW5kb3cKICAgICAgICAgIG1hbmFnZXIgd2lsbCBkaXNhYmxlIGFscGhhIHRyYXNmb3JtYXRpb24gaW4gYW5pbWF0aW9ucyB3aGVyZSBub3QKQEAgLTIzMCw5ICsyNTgsNiBAQAogICAgIDwhLS0gQWxsb3cgdGhlIG1lbnUgaGFyZCBrZXkgdG8gYmUgZGlzYWJsZWQgaW4gTG9ja1NjcmVlbiBvbiBzb21lIGRldmljZXMgLS0+CiAgICAgPGJvb2wgbmFtZT0iY29uZmlnX2Rpc2FibGVNZW51S2V5SW5Mb2NrU2NyZWVuIj5mYWxzZTwvYm9vbD4KIAotICAgIDwhLS0gQ29udHJvbCB3aGV0aGVyIHN0YXR1cyBiYXIgc2hvdWxkIGRpc3Rpbmd1aXNoIEhTUEEgZGF0YSBpY29uIGZvcm0gVU1UUyBkYXRhIGljb24gb24gZGV2aWNlcyAtLT4KLSAgICA8Ym9vbCBuYW1lPSJjb25maWdfaHNwYV9kYXRhX2Rpc3Rpbmd1aXNoYWJsZSI+ZmFsc2U8L2Jvb2w+Ci0KICAgICA8IS0tIEFycmF5IG9mIGxpZ2h0IHNlbnNvciBMVVggdmFsdWVzIHRvIGRlZmluZSBvdXIgbGV2ZWxzIGZvciBhdXRvIGJhY2tsaWdodCBicmlnaHRuZXNzIHN1cHBvcnQuCiAgICAgICAgICBUaGUgTiBlbnRyaWVzIG9mIHRoaXMgYXJyYXkgZGVmaW5lIE4gKyAxIHpvbmVzIGFzIGZvbGxvd3M6CiAKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvZGltZW5zLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvZGltZW5zLnhtbAppbmRleCA4YTkyNzU3Li45OWMwYjNkIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2RpbWVucy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9kaW1lbnMueG1sCkBAIC0yOCw2ICsyOCwxMCBAQAogICAgIDxkaW1lbiBuYW1lPSJ0b2FzdF95X29mZnNldCI+NjRkaXA8L2RpbWVuPgogICAgIDwhLS0gSGVpZ2h0IG9mIHRoZSBzdGF0dXMgYmFyIC0tPgogICAgIDxkaW1lbiBuYW1lPSJzdGF0dXNfYmFyX2hlaWdodCI+MjVkaXA8L2RpbWVuPgorICAgIDwhLS0gSGVpZ2h0IG9mIHRoZSBzdGF0dXMgYmFyIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzdGF0dXNfYmFyX2ljb25fc2l6ZSI+MjVkaXA8L2RpbWVuPgorICAgIDwhLS0gTWFyZ2luIGF0IHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4gdG8gaWdub3JlIHRvdWNoIGV2ZW50cyBmb3IgaW4gdGhlIHdpbmRvd3NoYWRlLiAtLT4KKyAgICA8ZGltZW4gbmFtZT0ic3RhdHVzX2Jhcl9lZGdlX2lnbm9yZSI+NWRwPC9kaW1lbj4KICAgICA8IS0tIFNpemUgb2YgdGhlIGZhc3RzY3JvbGwgaGludCBsZXR0ZXIgLS0+CiAgICAgPGRpbWVuIG5hbWU9ImZhc3RzY3JvbGxfb3ZlcmxheV9zaXplIj4xMDRkcDwvZGltZW4+CiAgICAgPCEtLSBXaWR0aCBvZiB0aGUgZmFzdHNjcm9sbCB0aHVtYiAtLT4KQEAgLTM4LDYgKzQyLDQgQEAKICAgICA8ZGltZW4gbmFtZT0icGFzc3dvcmRfa2V5Ym9hcmRfa2V5X2hlaWdodCI+NTZkaXA8L2RpbWVuPgogICAgIDwhLS0gRGVmYXVsdCBjb3JyZWN0aW9uIGZvciB0aGUgc3BhY2Uga2V5IGluIHRoZSBwYXNzd29yZCBrZXlib2FyZCAtLT4KICAgICA8ZGltZW4gbmFtZT0icGFzc3dvcmRfa2V5Ym9hcmRfc3BhY2ViYXJfdmVydGljYWxfY29ycmVjdGlvbiI+NGRpcDwvZGltZW4+Ci0gICAgPCEtLSBNYXJnaW4gYXQgdGhlIGVkZ2Ugb2YgdGhlIHNjcmVlbiB0byBpZ25vcmUgdG91Y2ggZXZlbnRzIGZvciBpbiB0aGUgd2luZG93c2hhZGUuIC0tPgotICAgIDxkaW1lbiBuYW1lPSJzdGF0dXNfYmFyX2VkZ2VfaWdub3JlIj41ZHA8L2RpbWVuPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL3B1YmxpYy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3B1YmxpYy54bWwKaW5kZXggOThjM2EwYS4uMjdjYjc2MyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9wdWJsaWMueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvcHVibGljLnhtbApAQCAtMTIzOSw0ICsxMjM5LDMzIEBACiAgICAgCiAgIDxwdWJsaWMgdHlwZT0iYW5pbSIgbmFtZT0iY3ljbGVfaW50ZXJwb2xhdG9yIiBpZD0iMHgwMTBhMDAwYyIgLz4KIAorPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgUmVzb3VyY2VzIGludHJvZHVjZWQgaW4ga3Jha2VuLgorICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgIAorICA8cHVibGljIHR5cGU9ImF0dHIiIG5hbWU9ImxvZ28iIGlkPSIweDAxMDEwMmJlIiAvPgorICA8cHVibGljIHR5cGU9ImF0dHIiIG5hbWU9InhsYXJnZVNjcmVlbnMiIGlkPSIweDAxMDEwMmJmIiAvPgorICA8cHVibGljIHR5cGU9ImF0dHIiIG5hbWU9ImhlYXZ5V2VpZ2h0IiBpZD0iMHgwMTAxMDJjMCIgLz4KKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9ImF0dHIiIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQiIGVuZD0iMHgwMTAxMDMwMCIgLz4KKyAgCisgIDxwdWJsaWMtcGFkZGluZyB0eXBlPSJpZCIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMDIwMDQwIiAvPgorICA8cHVibGljLXBhZGRpbmcgdHlwZT0iYW5pbSIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMGEwMDIwIiAvPgorCisgIDwhLS0gcHJlc2VuY2UgZHJhd2FibGVzIGZvciB2aWRlb2NoYXQgb3IgYXVkaW9jaGF0IGNhcGFibGUgY29udGFjdHMgLS0+CisgIDxwdWJsaWMgdHlwZT0iZHJhd2FibGUiIG5hbWU9InByZXNlbmNlX3ZpZGVvX2F3YXkiIGlkPSIweDAxMDgwMGFjIiAvPgorICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJwcmVzZW5jZV92aWRlb19idXN5IiBpZD0iMHgwMTA4MDBhZCIgLz4KKyAgPHB1YmxpYyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0icHJlc2VuY2VfdmlkZW9fb25saW5lIiBpZD0iMHgwMTA4MDBhZSIgLz4KKyAgPHB1YmxpYyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0icHJlc2VuY2VfYXVkaW9fYXdheSIgaWQ9IjB4MDEwODAwYWYiIC8+CisgIDxwdWJsaWMgdHlwZT0iZHJhd2FibGUiIG5hbWU9InByZXNlbmNlX2F1ZGlvX2J1c3kiIGlkPSIweDAxMDgwMGIwIiAvPgorICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJwcmVzZW5jZV9hdWRpb19vbmxpbmUiIGlkPSIweDAxMDgwMGIxIiAvPiAgCisgIDxwdWJsaWMtcGFkZGluZyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMDgwMTAwIiAvPgorICAKKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9InN0eWxlIiBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkIiBlbmQ9IjB4MDEwMzAwOTAiIC8+CisgIDxwdWJsaWMtcGFkZGluZyB0eXBlPSJzdHJpbmciIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQiIGVuZD0iMHgwMTA0MDAyMCIgLz4KKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9ImludGVnZXIiIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQiIGVuZD0iMHgwMTBlMDAxMCIgLz4KKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9ImxheW91dCIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMDkwMDIwIiAvPgorICA8cHVibGljLXBhZGRpbmcgdHlwZT0iZGltZW4iIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQiIGVuZD0iMHgwMTA1MDAxMCIgLz4KKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9ImNvbG9yIiBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkIiBlbmQ9IjB4MDEwNjAwMjAiIC8+CisgIDxwdWJsaWMtcGFkZGluZyB0eXBlPSJhcnJheSIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMDcwMDEwIiAvPgorCiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCmluZGV4IDg2YmZlOTQuLjYyZmQxNjkgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbApAQCAtNjAsNiArNjAsMTAgQEAKICAgICA8IS0tIERpc3BsYXllZCB3aGVuIHRoZSB1c2VyIGRpYWxlZCBhbiBNTUkgY29kZSB3aG9zZSBmdW5jdGlvbgogICAgICAgICAgY291bGQgbm90IGJlIHBlcmZvcm1lZC4gVGhpcyB3aWxsIGJlIGRpc3BsYXllZCBpbiBhIHRvYXN0LiAtLT4KICAgICA8c3RyaW5nIG5hbWU9Im1taUVycm9yIj5Db25uZWN0aW9uIHByb2JsZW0gb3IgaW52YWxpZCBNTUkgY29kZS48L3N0cmluZz4KKyAgICA8IS0tIERpc3BsYXllZCB3aGVuIHRoZSB1c2VyIGRpYWxlZCBhbiBNTUkgY29kZSB3aG9zZSBmdW5jdGlvbgorICAgICAgICAgY291bGQgbm90IGJlIHBlcmZvcm1lZCBiZWNhdXNlIEZETiBpcyBlbmFibGVkLiBUaGlzIHdpbGwgYmUgZGlzcGxheWVkIGluIGEgdG9hc3QuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ibW1pRmRuRXJyb3IiPk9wZXJhdGlvbiBpcyByZXN0cmljdGVkIHRvIGZpeGVkIGRpYWxpbmcgbnVtYmVycyBvbmx5Ljwvc3RyaW5nPgorCiAgICAgPCEtLSBEaXNwbGF5ZWQgd2hlbiBhIHBob25lIGZlYXR1cmUgc3VjaCBhcyBjYWxsIGJhcnJpbmcgd2FzIGFjdGl2YXRlZC4gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJzZXJ2aWNlRW5hYmxlZCI+U2VydmljZSB3YXMgZW5hYmxlZC48L3N0cmluZz4KICAgICA8IS0tIERpc3BsYXllZCBpbiBmcm9udCBvZiB0aGUgbGlzdCBvZiBhIHNldCBvZiBzZXJ2aWNlIGNsYXNzZXMKQEAgLTM4OSw2ICszOTMsMTEgQEAKICAgICAgICAgdGhlIHN0YXR1cyBiYXIgb3IgYWRkIGFuZCByZW1vdmUgc3lzdGVtIGljb25zLjwvc3RyaW5nPgogCiAgICAgPCEtLSBUaXRsZSBvZiBhbiBhcHBsaWNhdGlvbiBwZXJtaXNzaW9uLCBsaXN0ZWQgc28gdGhlIHVzZXIgY2FuIGNob29zZSB3aGV0aGVyIHRoZXkgd2FudCB0byBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gZG8gdGhpcy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhclNlcnZpY2UiPnN0YXR1cyBiYXI8L3N0cmluZz4KKyAgICA8IS0tIERlc2NyaXB0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhclNlcnZpY2UiPkFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gYmUgdGhlIHN0YXR1cyBiYXIuPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZXhwYW5kU3RhdHVzQmFyIj5leHBhbmQvY29sbGFwc2Ugc3RhdHVzIGJhcjwvc3RyaW5nPgogICAgIDwhLS0gRGVzY3JpcHRpb24gb2YgYW4gYXBwbGljYXRpb24gcGVybWlzc2lvbiwgbGlzdGVkIHNvIHRoZSB1c2VyIGNhbiBjaG9vc2Ugd2hldGhlciB0aGV5IHdhbnQgdG8gYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIGRvIHRoaXMuIC0tPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfZXhwYW5kU3RhdHVzQmFyIj5BbGxvd3MgYXBwbGljYXRpb24gdG8KQEAgLTg2Myw5ICs4NzIsOSBAQAogICAgICAgICB0aGUgYXVkaW8gcmVjb3JkIHBhdGguPC9zdHJpbmc+CiAKICAgICA8IS0tIFRpdGxlIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FtZXJhIj50YWtlIHBpY3R1cmVzPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2NhbWVyYSI+dGFrZSBwaWN0dXJlcyBhbmQgdmlkZW9zPC9zdHJpbmc+CiAgICAgPCEtLSBEZXNjcmlwdGlvbiBvZiBhbiBhcHBsaWNhdGlvbiBwZXJtaXNzaW9uLCBsaXN0ZWQgc28gdGhlIHVzZXIgY2FuIGNob29zZSB3aGV0aGVyIHRoZXkgd2FudCB0byBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gZG8gdGhpcy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYW1lcmEiPkFsbG93cyBhcHBsaWNhdGlvbiB0byB0YWtlIHBpY3R1cmVzCisgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYW1lcmEiPkFsbG93cyBhcHBsaWNhdGlvbiB0byB0YWtlIHBpY3R1cmVzIGFuZCB2aWRlb3MKICAgICAgICAgd2l0aCB0aGUgY2FtZXJhLiBUaGlzIGFsbG93cyB0aGUgYXBwbGljYXRpb24gYXQgYW55IHRpbWUgdG8gY29sbGVjdAogICAgICAgICBpbWFnZXMgdGhlIGNhbWVyYSBpcyBzZWVpbmcuPC9zdHJpbmc+CiAKQEAgLTkzMCw2ICs5MzksMTEgQEAKICAgICAgICAgdGhlIGZsYXNobGlnaHQuPC9zdHJpbmc+CiAKICAgICA8IS0tIFRpdGxlIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYWNjZXNzVXNiIj5hY2Nlc3MgVVNCIGRldmljZXM8L3N0cmluZz4KKyAgICA8IS0tIERlc2NyaXB0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FjY2Vzc1VzYiI+QWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBhY2Nlc3MgVVNCIGRldmljZXMuPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfaGFyZHdhcmVfdGVzdCI+dGVzdCBoYXJkd2FyZTwvc3RyaW5nPgogICAgIDwhLS0gRGVzY3JpcHRpb24gb2YgYW4gYXBwbGljYXRpb24gcGVybWlzc2lvbiwgbGlzdGVkIHNvIHRoZSB1c2VyIGNhbiBjaG9vc2Ugd2hldGhlciB0aGV5IHdhbnQgdG8gYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIGRvIHRoaXMuIC0tPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfaGFyZHdhcmVfdGVzdCI+QWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBjb250cm9sCkBAIC0xNTYzLDQ1ICsxNTc3LDYgQEAKICAgICA8IS0tIEEgZm9ybWF0IHN0cmluZyBmb3IgMTItaG91ciB0aW1lIG9mIGRheSwganVzdCB0aGUgaG91ciwgbm90IHRoZSBtaW51dGUsIHdpdGggY2FwaXRhbCAiQU0iIG9yICJQTSIgKGV4YW1wbGU6ICIzUE0iKS4gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJob3VyX2NhcF9hbXBtIj4iPHhsaWZmOmcgaWQ9ImhvdXIiIGV4YW1wbGU9IjMiPiUtbDwveGxpZmY6Zz48eGxpZmY6ZyBpZD0iYW1wbSIgZXhhbXBsZT0iUE0iPiVwPC94bGlmZjpnPiI8L3N0cmluZz4KIAotICAgIDwhLS0gVGhlIHRleHQgZm9yIHRoZSBidXR0b24gaW4gdGhlIG5vdGlmaWNhdGlvbiB3aW5kb3ctc2hhZGUgdGhhdCBjbGVhcnMKLSAgICAgICAgIGFsbCBvZiB0aGUgY3VycmVudGx5IHZpc2libGUgbm90aWZpY2F0aW9ucy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX2NsZWFyX2FsbF9idXR0b24iPkNsZWFyPC9zdHJpbmc+Ci0KLSAgICA8IS0tIFRoZSBsYWJlbCBpbiB0aGUgYmFyIGF0IHRoZSB0b3Agb2YgdGhlIHN0YXR1cyBiYXIgd2hlbiB0aGVyZSBhcmUgbm8gbm90aWZpY2F0aW9ucwotICAgICAgICAgc2hvd2luZy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vX25vdGlmaWNhdGlvbnNfdGl0bGUiPk5vIG5vdGlmaWNhdGlvbnM8L3N0cmluZz4KLQotICAgIDwhLS0gVGhlIGxhYmVsIGZvciB0aGUgZ3JvdXAgb2Ygbm90aWZpY2F0aW9ucyBmb3Igb25nb2luZyBldmVudHMgaW4gdGhlIG9wZW5lZCB2ZXJzaW9uIG9mCi0gICAgICAgICB0aGUgc3RhdHVzIGJhci4gIEFuIG9uZ29pbmcgY2FsbCBpcyB0aGUgcHJpbWUgZXhhbXBsZSBvZiB0aGlzLiAgVGhlIE1QMyBtdXNpYyBwbGF5ZXIKLSAgICAgICAgIG1pZ2h0IGJlIGFub3RoZXIgZXhhbXBsZS4gIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9vbmdvaW5nX2V2ZW50c190aXRsZSI+T25nb2luZzwvc3RyaW5nPgotCi0gICAgPCEtLSBUaGUgbGFiZWwgZm9yIHRoZSBncm91cCBvZiBub3RpZmljYXRpb25zIGZvciByZWNlbnQgZXZlbnRzIGluIHRoZSBvcGVuZWQgdmVyc2lvbiBvZgotICAgICAgICAgdGhlIHN0YXR1cyBiYXIuICBSZWNlbnRseSByZWNlaXZlZCB0ZXh0IG1lc3NzYWdlcyAoU01TKSwgZW1haWxzLCBjYWxlbmRhciBhbGVydHMsIGV0Yy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX2xhdGVzdF9ldmVudHNfdGl0bGUiPk5vdGlmaWNhdGlvbnM8L3N0cmluZz4KLQotICAgIDwhLS0gVGhlIGJpZyBwZXJjZW50IHRleHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgYmF0dGVyeSBpY29uIHRoYXQgYXBwZWFycyB3aGVuIHlvdSBwbHVnIGluCi0gICAgICAgICB0aGUgY2hhcmdlci4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3N0YXR1c190ZXh0X3BlcmNlbnRfZm9ybWF0Ij48eGxpZmY6ZyBpZD0ibnVtYmVyIiBleGFtcGxlPSI1MCI+JWQ8L3hsaWZmOmc+PHhsaWZmOmcgaWQ9InBlcmNlbnQiIGV4YW1wbGU9IiUiPiUlPC94bGlmZjpnPjwvc3RyaW5nPgotCi0gICAgPCEtLSBUaGUgYmlnIHBlcmNlbnQgdGV4dCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBiYXR0ZXJ5IGljb24gdGhhdCBhcHBlYXJzIHdoZW4geW91IHBsdWcgaW4KLSAgICAgICAgIHRoZSBjaGFyZ2VyLiBUaGlzIGluZGljYXRlcyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGJhdHRlcnkuICAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc3RhdHVzX2NoYXJnaW5nIj5DaGFyZ2luZ1x1MjAyNjwvc3RyaW5nPgotCi0gICAgPCEtLSBXaGVuIHRoZSBiYXR0ZXJ5IGlzIGxvdywgdGhpcyBpcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgaW4gYSBkaWFsb2cuICBUaGUgdGl0bGUgb2YgdGhlIGxvdyBiYXR0ZXJ5IGFsZXJ0LiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfbG93X3RpdGxlIj5QbGVhc2UgY29ubmVjdCBjaGFyZ2VyPC9zdHJpbmc+Ci0KLSAgICA8IS0tIFdoZW4gdGhlIGJhdHRlcnkgaXMgbG93LCB0aGlzIGlzIGRpc3BsYXllZCB0byB0aGUgdXNlciBpbiBhIGRpYWxvZy4gVGhlIHN1YnRpdGxlIG9mIHRoZSBsb3cgYmF0dGVyeSBhbGVydC4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X2xvd19zdWJ0aXRsZSI+VGhlIGJhdHRlcnkgaXMgZ2V0dGluZyBsb3c6PC9zdHJpbmc+Ci0KLSAgICA8IS0tIEEgbWVzc2FnZSB0aGF0IGFwcGVhcnMgd2hlbiB0aGUgYmF0dGVyeSBsZXZlbCBpcyBnZXR0aW5nIGxvdyBpbiBhIGRpYWxvZy4gIFRoaXMgaXMgYXBwZW5lZCB0byB0aGUgc3VidGl0bGUgb2YgdGhlIGxvdyBiYXR0ZXJ5IGFsZXJ0LiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfbG93X3BlcmNlbnRfZm9ybWF0Ij48eGxpZmY6ZyBpZD0ibnVtYmVyIj4lZCUlPC94bGlmZjpnPgotICAgIG9yIGxlc3MgcmVtYWluaW5nLjwvc3RyaW5nPgotCi0gICAgPCEtLSBXaGVuIHRoZSBiYXR0ZXJ5IGlzIGxvdywgdGhpcyBpcyB0aGUgbGFiZWwgb2YgdGhlIGJ1dHRvbiB0byBnbyB0byB0aGUKLSAgICAgICAgIHBvd2VyIHVzYWdlIGFjdGl2aXR5IHRvIGZpbmQgb3V0IHdoYXQgZHJhaW5lZCB0aGUgYmF0dGVyeS4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X2xvd193aHkiPkJhdHRlcnkgdXNlPC9zdHJpbmc+Ci0KICAgICA8IS0tIFRpdGxlIG9mIHRoZSBhbGVydCB3aGVuIHNvbWV0aGluZyB3ZW50IHdyb25nIGluIHRoZSBmYWN0b3J5IHRlc3QuIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iZmFjdG9yeXRlc3RfZmFpbGVkIj5GYWN0b3J5IHRlc3QgZmFpbGVkPC9zdHJpbmc+CiAgICAgPCEtLSBFcnJvciBtZXNzYWdlIGRpc3BsYXllZCB3aGVuIGEgbm9uLXN5c3RlbSBhcHBsaWNhdGlvbiB0cmllcyB0byBzdGFydCBhIGZhY3RvcnkgdGVzdC4gLS0+CkBAIC0xOTQ3LDcgKzE5MjIsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0ibm9BcHBsaWNhdGlvbnMiPk5vIGFwcGxpY2F0aW9ucyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi48L3N0cmluZz4KICAgICA8IS0tIFRpdGxlIG9mIHRoZSBhbGVydCB3aGVuIGFuIGFwcGxpY2F0aW9uIGhhcyBjcmFzaGVkLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImFlcnJfdGl0bGUiPlNvcnJ5ITwvc3RyaW5nPgotICAgIDwhLS0gVGV4dCBvZiB0aGUgYWxlcnQgdGhhdCBpcyBkaXNwbGF5ZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBpcyBub3QgcmVzcG9uZGluZy4gLS0+CisgICAgPCEtLSBUZXh0IG9mIHRoZSBhbGVydCB0aGF0IGlzIGRpc3BsYXllZCB3aGVuIGFuIGFwcGxpY2F0aW9uIGhhcyBjcmFzaGVkLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImFlcnJfYXBwbGljYXRpb24iPlRoZSBhcHBsaWNhdGlvbiA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb24iPiUxJHM8L3hsaWZmOmc+CiAgICAgICAgIChwcm9jZXNzIDx4bGlmZjpnIGlkPSJwcm9jZXNzIj4lMiRzPC94bGlmZjpnPikgaGFzIHN0b3BwZWQgdW5leHBlY3RlZGx5LiBQbGVhc2UgdHJ5IGFnYWluLjwvc3RyaW5nPgogICAgIDwhLS0gVGV4dCBvZiB0aGUgYWxlcnQgdGhhdCBpcyBkaXNwbGF5ZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBoYXMgY3Jhc2hlZC4gLS0+CkBAIC0xOTcwLDggKzE5NDUsMzYgQEAKICAgICA8IS0tIEJ1dHRvbiBhbGxvd2luZyB0aGUgdXNlciB0byBjaG9vc2UgdG8gd2FpdCBmb3IgYW4gYXBwbGljYXRpb24gdGhhdCBpcyBub3QgcmVzcG9uZGluZyB0byBiZWNvbWUgcmVzcG9uc2l2ZSBhZ2Fpbi4gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJ3YWl0Ij5XYWl0PC9zdHJpbmc+CiAKKyAgICA8IS0tIFRleHQgb2YgdGhlIGFsZXJ0IHRoYXQgaXMgZGlzcGxheWVkIHdoZW4gYW4gYXBwbGljYXRpb24gaGFzIHZpb2xhdGVkIFN0cmljdE1vZGUuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic212X2FwcGxpY2F0aW9uIj5UaGUgYXBwbGljYXRpb24gPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uIj4lMSRzPC94bGlmZjpnPgorICAgICAgICAocHJvY2VzcyA8eGxpZmY6ZyBpZD0icHJvY2VzcyI+JTIkczwveGxpZmY6Zz4pIGhhcyB2aW9sYXRlZCBpdHMgc2VsZi1lbmZvcmNlZCBTdHJpY3RNb2RlIHBvbGljeS48L3N0cmluZz4KKyAgICA8IS0tIFRleHQgb2YgdGhlIGFsZXJ0IHRoYXQgaXMgZGlzcGxheWVkIHdoZW4gYW4gYXBwbGljYXRpb24gaGFzIHZpb2xhdGVkIFN0cmljdE1vZGUuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic212X3Byb2Nlc3MiPlRoZSBwcm9jZXNzIDx4bGlmZjpnIGlkPSJwcm9jZXNzIj4lMSRzPC94bGlmZjpnPiBoYXMKKyAgICAgIGhhcyB2aW9sYXRlZCBpdHMgc2VsZi1lbmZvcmNlZCBTdHJpY3RNb2RlIHBvbGljeS48L3N0cmluZz4KKworICAgIDwhLS0gTm90aWZpY2F0aW9uIHRleHQgdG8gdGVsbCB0aGUgdXNlciB0aGF0IGEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iaGVhdnlfd2VpZ2h0X25vdGlmaWNhdGlvbiI+PHhsaWZmOmcgaWQ9ImFwcCI+JTEkczwveGxpZmY6Zz4gcnVubmluZzwvc3RyaW5nPgorICAgIAorICAgIDwhLS0gTm90aWZpY2F0aW9uIGRldGFpbHMgdG8gdGVsbCB0aGUgdXNlciB0aGF0IGEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iaGVhdnlfd2VpZ2h0X25vdGlmaWNhdGlvbl9kZXRhaWwiPlNlbGVjdCB0byBzd2l0Y2ggdG8gYXBwbGljYXRpb248L3N0cmluZz4KKyAgICAKKyAgICA8IS0tIFRpdGxlIG9mIGRpYWxvZyBwcm9tcHRpbmcgd2hldGhlciB1c2VyIHdhbnRzIHRvIHN3aXRjaCBiZXR3ZWVuIGhlYXZ5LXdlaWdodCBhcHBzLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImhlYXZ5X3dlaWdodF9zd2l0Y2hlcl90aXRsZSI+U3dpdGNoIGFwcGxpY2F0aW9ucz88L3N0cmluZz4KKyAgICAKKyAgICA8IS0tIERlc2NyaXB0aXZlIHRleHQgZm9yIHN3aXRjaGluZyB0byBhIG5ldyBoZWF2eS13ZWlnaHQgYXBwbGljYXRpb24uIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iaGVhdnlfd2VpZ2h0X3N3aXRjaGVyX3RleHQiPkFub3RoZXIgYXBwbGljYXRpb24gaXMgYWxyZWFkeSBydW5uaW5nCisgICAgdGhhdCBtdXN0IGJlIHN0b3BwZWQgYmVmb3JlIHlvdSBjYW4gc3RhcnQgYSBuZXcgb25lLjwvc3RyaW5nPgorICAgIAorICAgIDxzdHJpbmcgbmFtZT0ib2xkX2FwcF9hY3Rpb24iPlJldHVybiB0byA8eGxpZmY6ZyBpZD0ib2xkX2FwcCI+JTEkczwveGxpZmY6Zz48L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im9sZF9hcHBfZGVzY3JpcHRpb24iPkRvblwndCBzdGFydCB0aGUgbmV3IGFwcGxpY2F0aW9uLjwvc3RyaW5nPgorICAgIAorICAgIDxzdHJpbmcgbmFtZT0ibmV3X2FwcF9hY3Rpb24iPlN0YXJ0IDx4bGlmZjpnIGlkPSJvbGRfYXBwIj4lMSRzPC94bGlmZjpnPjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibmV3X2FwcF9kZXNjcmlwdGlvbiI+U3RvcCB0aGUgb2xkIGFwcGxpY2F0aW9uIHdpdGhvdXQgc2F2aW5nLjwvc3RyaW5nPgorICAgIAogICAgIDwhLS0gRGlzcGxheWVkIGluIHRoZSB0aXRsZSBvZiB0aGUgY2hvb3NlciBmb3IgdGhpbmdzIHRvIGRvIHdpdGggdGV4dCB0aGF0Ci0gICAgICAgICBpcyB0byBiZSBzZW50IHRvIGFub3RoZXIgYXBwbGljYXRpb24uIEZvciBleGFtcGxlLCBJIGNhbiBzZW5kIHRleHQgdGhyb3VnaCBTTVMgb3IgSU0uICBBIGRpYWxvZyB3aXRoIHRob3NlIGNob2ljZXMgd291bGQgYmUgc2hvd24sIGFuZCB0aGlzIHdvdWxkIGJlIHRoZSB0aXRsZS4gLS0+CisgICAgICAgICBpcyB0byBiZSBzZW50IHRvIGFub3RoZXIgYXBwbGljYXRpb24uIEZvciBleGFtcGxlLCBJIGNhbiBzZW5kCisgICAgICAgICB0ZXh0IHRocm91Z2ggU01TIG9yIElNLiAgQSBkaWFsb2cgd2l0aCB0aG9zZSBjaG9pY2VzIHdvdWxkIGJlIHNob3duLAorICAgICAgICAgYW5kIHRoaXMgd291bGQgYmUgdGhlIHRpdGxlLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9InNlbmRUZXh0Ij5TZWxlY3QgYW4gYWN0aW9uIGZvciB0ZXh0PC9zdHJpbmc+CiAKICAgICA8IS0tIFRpdGxlIG9mIHRoZSBkaWFsb2cgd2hlcmUgdGhlIHVzZXIgaXMgYWRqdXN0aW5nIHRoZSBwaG9uZSByaW5nZXIgdm9sdW1lIC0tPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHlsZXMueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHlsZXMueG1sCmluZGV4IGI1ZmZmOTYuLjAyYTYwMWEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3N0eWxlcy54bWwKQEAgLTg4LDYgKzg4LDEzIEBACiAgICAgICAgIDxpdGVtIG5hbWU9IndpbmRvd0V4aXRBbmltYXRpb24iPkBhbmltL3N0YXR1c19iYXJfZXhpdDwvaXRlbT4KICAgICA8L3N0eWxlPgogCisgICAgPCEtLSB7QGhpZGV9IC0tPgorICAgIDxzdHlsZSBuYW1lPSJBbmltYXRpb24uU3RhdHVzQmFyLkludHJ1ZGVyQWxlcnQiCisgICAgICAgIHBhcmVudD0iQGFuZHJvaWQ6c3R5bGUvQW5pbWF0aW9uLlN0YXR1c0JhciI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6d2luZG93RW50ZXJBbmltYXRpb24iPkBhbmltL3ByaW9yaXR5X2FsZXJ0X2VudGVyPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOndpbmRvd0V4aXRBbmltYXRpb24iPkBhbmltL3ByaW9yaXR5X2FsZXJ0X2V4aXQ8L2l0ZW0+CisgICAgPC9zdHlsZT4KKwogICAgIDwhLS0gU3RhbmRhcmQgYW5pbWF0aW9ucyBmb3IgYSB0cmFuc2x1Y2VudCB3aW5kb3cgb3IgYWN0aXZpdHkuICBUaGlzCiAgICAgICAgICBzdHlsZSBpcyA8ZW0+bm90PGVtPiB1c2VkIGJ5IGRlZmF1bHQgZm9yIHRoZSB0cmFuc2x1Y2VudCB0aGVtZQogICAgICAgICAgKHNpbmNlIHRyYW5zbHVjZW50IGFjdGl2aXRpZXMgYXJlIGEgc3BlY2lhbCBjYXNlIHRoYXQgaGF2ZSBubwpAQCAtMTg3LDExICsxOTQsMjYgQEAKIAogICAgIDwhLS0gU3RhdHVzIEJhciBTdHlsZXMgLS0+CiAKLSAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyVGl0bGUiPgorICAgIDxzdHlsZSBuYW1lPSJUZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIiPgogICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRBcHBlYXJhbmNlIj4/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlU21hbGw8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFN0eWxlIj5ib2xkPC9pdGVtPgogICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+P2FuZHJvaWQ6YXR0ci90ZXh0Q29sb3JQcmltYXJ5PC9pdGVtPgogICAgIDwvc3R5bGU+CisgICAgPHN0eWxlIG5hbWU9IlRleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5UaWNrZXIiPgorICAgIDwvc3R5bGU+CisgICAgPHN0eWxlIG5hbWU9IlRleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5UaXRsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFN0eWxlIj5ib2xkPC9pdGVtPgorICAgIDwvc3R5bGU+CisKKyAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkljb24iPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTdHlsZSI+Ym9sZDwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJUZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuRXZlbnRDb250ZW50Ij4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0Q29sb3IiPj9hbmRyb2lkOmF0dHIvdGV4dENvbG9yUHJpbWFyeUludmVyc2U8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkV2ZW50Q29udGVudC5UaXRsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPjE4c3A8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFN0eWxlIj5ib2xkPC9pdGVtPgorICAgIDwvc3R5bGU+CiAKICAgICA8IS0tIFdpZGdldCBTdHlsZXMgLS0+CiAKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy94bWwvcG93ZXJfcHJvZmlsZS54bWwgYi9jb3JlL3Jlcy9yZXMveG1sL3Bvd2VyX3Byb2ZpbGUueG1sCmluZGV4IGNlNjIzZTguLjMwMzEyYjMgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy94bWwvcG93ZXJfcHJvZmlsZS54bWwKKysrIGIvY29yZS9yZXMvcmVzL3htbC9wb3dlcl9wcm9maWxlLnhtbApAQCAtMTgsNiArMTgsNyBAQAogLS0+CiAKIDxkZXZpY2UgbmFtZT0iQW5kcm9pZCI+CisgIDwhLS0gQWxsIHZhbHVlcyBhcmUgaW4gbUFoIGV4Y2VwdCBhcyBub3RlZCAtLT4KICAgPGl0ZW0gbmFtZT0ibm9uZSI+MDwvaXRlbT4KICAgPGl0ZW0gbmFtZT0ic2NyZWVuLm9uIj4wLjE8L2l0ZW0+CiAgIDxpdGVtIG5hbWU9ImJsdWV0b290aC5hY3RpdmUiPjAuMTwvaXRlbT4KQEAgLTQ4LDQgKzQ5LDYgQEAKICAgPGFycmF5IG5hbWU9ImNwdS5hY3RpdmUiPgogICAgICAgPHZhbHVlPjAuMjwvdmFsdWU+CiAgIDwvYXJyYXk+CisgIDwhLS0gVGhpcyBpcyB0aGUgYmF0dGVyeSBjYXBhY2l0eSBpbiBtQWggLS0+CisgIDxpdGVtIG5hbWU9ImJhdHRlcnkuY2FwYWNpdHkiPjEwMDA8L2l0ZW0+CiA8L2RldmljZT4KZGlmZiAtLWdpdCBhL2NvcmUvdGVzdHMvQ29ubmVjdGl2aXR5TWFuYWdlclRlc3QvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL2NvcmUvdGVzdHMvQ29ubmVjdGl2aXR5TWFuYWdlclRlc3QvQW5kcm9pZE1hbmlmZXN0LnhtbAppbmRleCBjMzE4NTc3Li5kMjk4ZDQwIDEwMDY0NAotLS0gYS9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L0FuZHJvaWRNYW5pZmVzdC54bWwKKysrIGIvY29yZS90ZXN0cy9Db25uZWN0aXZpdHlNYW5hZ2VyVGVzdC9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0yNCwyMyArMjQsMzUgQEAKICAgICA8YXBwbGljYXRpb24+CiAgICAgICAgIDx1c2VzLWxpYnJhcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnRlc3QucnVubmVyIiAvPgogICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJDb25uZWN0aXZpdHlNYW5hZ2VyVGVzdEFjdGl2aXR5IgotICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkNNVGVzdCI+CisgICAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9hcHBfbmFtZSI+CiAgICAgICAgICAgICA8aW50ZW50LWZpbHRlcj4KICAgICAgICAgICAgICAgICA8YWN0aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4iIC8+Ci0gICAgICAgICAgICAgICAgPGNhdGVnb3J5IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuVEVTVCIgLz4KKyAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUiIgLz4KICAgICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KICAgICAgICAgPC9hY3Rpdml0eT4KICAgICA8L2FwcGxpY2F0aW9uPgogICAgIDwhLS0KICAgICBUaGlzIGRlY2xhcmVzIHRoYXQgdGhpcyBhcHAgdXNlcyB0aGUgaW5zdHJ1bWVudGF0aW9uIHRlc3QgcnVubmVyIHRhcmdldGluZwotICAgIHRoZSBwYWNrYWdlIG9mIGJyb3dzZXJwb3dlcnRlc3QuIFRvIHJ1biB0aGUgdGVzdHMgdXNlIHRoZSBjb21tYW5kOgotICAgICJhZGIgc2hlbGwgYW0gaW5zdHJ1bWVudCAtdyBjb20uYW5kcm9pZC5jb25uZWN0aXZpdHltYW5hZ2VydGVzdC8uQ29ubmVjdGl2aXR5TWFuYWdlclRlc3RSdW5uZXIiCisgICAgdGhlIHBhY2thZ2Ugb2YgY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QuIFRvIHJ1biB0aGUgdGVzdHMgdXNlIHRoZSBjb21tYW5kOgorICAgICJhZGIgc2hlbGwgYW0gaW5zdHJ1bWVudCAtZSBzc2lkIDxTU0lEPiAtdworICAgICAgY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QvLkNvbm5lY3Rpdml0eU1hbmFnZXJUZXN0UnVubmVyIiwKKyAgICAgIHRoZSBhY2Nlc3MgcG9pbnQgPFNTSUQ+IHNob3VsZCBiZSBhbiBvcGVuIEFQLgogICAgIC0tPgogICAgIDxpbnN0cnVtZW50YXRpb24gYW5kcm9pZDpuYW1lPSIuQ29ubmVjdGl2aXR5TWFuYWdlclRlc3RSdW5uZXIiCiAgICAgICAgIGFuZHJvaWQ6dGFyZ2V0UGFja2FnZT0iY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QiCiAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IlRlc3QgcnVubmVyIGZvciBDb25uZWN0aXZpdHkgTWFuYWdlciBUZXN0cyIKICAgICAvPgogCisgICAgPCEtLQorICAgICBUbyBydW4gdGhlIHVuaXQgdGVzdHMgdXNlIHRoZSBjb21tYW5kOgorICAgICAiYWRiIHNoZWxsIGFtIGluc3RydW1lbnQgLXcKKyAgICAgY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QvLkNvbm5lY3Rpdml0eU1hbmFnZXJVbml0VGVzdFJ1bm5lciIKKyAgICAtLT4KKyAgICA8aW5zdHJ1bWVudGF0aW9uIGFuZHJvaWQ6bmFtZT0iLkNvbm5lY3Rpdml0eU1hbmFnZXJVbml0VGVzdFJ1bm5lciIKKyAgICAgICAgYW5kcm9pZDp0YXJnZXRQYWNrYWdlPSJjb20uYW5kcm9pZC5jb25uZWN0aXZpdHltYW5hZ2VydGVzdCIKKyAgICAgICAgYW5kcm9pZC5sYWJlbD0iVGVzdCBydW5uZXIgZm9yIHVuaXQgdGVzdHMiCisgICAgLz4KKwogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uSU5URVJORVQiIC8+CiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfV0lGSV9TVEFURSIgLz4KICAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFIiAvPgpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9Db25uZWN0aXZpdHlNYW5hZ2VyVGVzdC9yZXMvdmFsdWVzL3N0cmluZ3MueG1sIGIvY29yZS90ZXN0cy9Db25uZWN0aXZpdHlNYW5hZ2VyVGVzdC9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNmU4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPHJlc291cmNlcz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIj5Db25uZWN0aXZpdHlNYW5hZ2VyVGVzdDwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3NyYy9jb20vYW5kcm9pZC9jb25uZWN0aXZpdHltYW5hZ2VydGVzdC9Db25uZWN0aXZpdHlNYW5hZ2VyVW5pdFRlc3RSdW5uZXIuamF2YSBiL2NvcmUvdGVzdHMvQ29ubmVjdGl2aXR5TWFuYWdlclRlc3Qvc3JjL2NvbS9hbmRyb2lkL2Nvbm5lY3Rpdml0eW1hbmFnZXJ0ZXN0L0Nvbm5lY3Rpdml0eU1hbmFnZXJVbml0VGVzdFJ1bm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZGZjNzQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3NyYy9jb20vYW5kcm9pZC9jb25uZWN0aXZpdHltYW5hZ2VydGVzdC9Db25uZWN0aXZpdHlNYW5hZ2VyVW5pdFRlc3RSdW5uZXIuamF2YQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3Q7CisKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lcjsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdFN1aXRlOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QudW5pdC5XaWZpU29mdEFQVGVzdDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKy8qKgorICogSW5zdHJ1bWVudGF0aW9uIFRlc3QgUnVubmVyIGZvciBhbGwgdW5pdCB0ZXN0cworICoKKyAqIGFkYiBzaGVsbCBhbSBpbnN0cnVtZW50IFwKKyAqICAgICAtdyBjb20uYW5kcm9pZC5jb25uZWN0aXZpdHltYW5hZ2VydGVzdC8uQ29ubmVjdGl2aXR5TWFuYWdlclVuaXRUZXN0UnVubmVyCisgKi8KKworcHVibGljIGNsYXNzIENvbm5lY3Rpdml0eU1hbmFnZXJVbml0VGVzdFJ1bm5lciBleHRlbmRzIEluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIgeworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBUZXN0U3VpdGUgZ2V0QWxsVGVzdHMoKSB7CisgICAgICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBJbnN0cnVtZW50YXRpb25UZXN0U3VpdGUodGhpcyk7CisgICAgICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShXaWZpU29mdEFQVGVzdC5jbGFzcyk7CisgICAgICAgIHJldHVybiBzdWl0ZTsKKyAgICB9CisKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBDbGFzc0xvYWRlciBnZXRMb2FkZXIoKSB7CisgICAgICAgIHJldHVybiBDb25uZWN0aXZpdHlNYW5hZ2VyVW5pdFRlc3RSdW5uZXIuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3NyYy9jb20vYW5kcm9pZC9jb25uZWN0aXZpdHltYW5hZ2VydGVzdC91bml0L1dpZmlTb2Z0QVBUZXN0LmphdmEgYi9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3NyYy9jb20vYW5kcm9pZC9jb25uZWN0aXZpdHltYW5hZ2VydGVzdC91bml0L1dpZmlTb2Z0QVBUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y0M2U0OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvdGVzdHMvQ29ubmVjdGl2aXR5TWFuYWdlclRlc3Qvc3JjL2NvbS9hbmRyb2lkL2Nvbm5lY3Rpdml0eW1hbmFnZXJ0ZXN0L3VuaXQvV2lmaVNvZnRBUFRlc3QuamF2YQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5jb25uZWN0aXZpdHltYW5hZ2VydGVzdC51bml0OworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5uZXQuQ29ubmVjdGl2aXR5TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubmV0LndpZmkuV2lmaUNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5uZXQud2lmaS5XaWZpQ29uZmlndXJhdGlvbi5LZXlNZ210OworCitpbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLkxhcmdlVGVzdDsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKKy8qKgorICogVGVzdCBXaWZpIHNvZnQgQVAgY29uZmlndXJhdGlvbgorICovCitwdWJsaWMgY2xhc3MgV2lmaVNvZnRBUFRlc3QgZXh0ZW5kcyBBbmRyb2lkVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBXaWZpTWFuYWdlciBtV2lmaU1hbmFnZXI7CisgICAgcHJpdmF0ZSBXaWZpQ29uZmlndXJhdGlvbiBtV2lmaUNvbmZpZyA9IG51bGw7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEFHID0gIldpZmlTb2Z0QVBUZXN0IjsKKyAgICBwcml2YXRlIGZpbmFsIGludCBEVVJBVElPTiA9IDEwMDAwOworCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIuc2V0VXAoKTsKKyAgICAgICAgbVdpZmlNYW5hZ2VyID0gKFdpZmlNYW5hZ2VyKSBnZXRDb250ZXh0KCkuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LldJRklfU0VSVklDRSk7CisgICAgICAgIGFzc2VydE5vdE51bGwobVdpZmlNYW5hZ2VyKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShtV2lmaU1hbmFnZXIuc2V0V2lmaUFwRW5hYmxlZChudWxsLCB0cnVlKSk7CisgICAgICAgIG1XaWZpQ29uZmlnID0gbVdpZmlNYW5hZ2VyLmdldFdpZmlBcENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgaWYgKG1XaWZpQ29uZmlnICE9IG51bGwpIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIm1XaWZpQ29uZmlnIGlzICIgKyBtV2lmaUNvbmZpZy50b1N0cmluZygpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIm1XaWZpQ29uZmlnIGlzIG51bGwuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBMb2cudihUQUcsICJ0dXJuIG9mZiB3aWZpIHRldGhlcmluZyIpOworICAgICAgICBtV2lmaU1hbmFnZXIuc2V0V2lmaUFwRW5hYmxlZChudWxsLCBmYWxzZSk7CisgICAgICAgIHN1cGVyLnRlYXJEb3duKCk7CisgICAgfQorCisgICAgLy8gVGVzdCBjYXNlIDE6IFRlc3QgdGhlIHNvZnQgQVAgU1NJRCB3aXRoIGxldHRlcnMKKyAgICBATGFyZ2VUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEFwU3NpZFdpdGhBbHBoYWJldCgpIHsKKyAgICAgICAgV2lmaUNvbmZpZ3VyYXRpb24gY29uZmlnID0gbmV3IFdpZmlDb25maWd1cmF0aW9uKCk7CisgICAgICAgIGNvbmZpZy5TU0lEID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKyAgICAgICAgY29uZmlnLmFsbG93ZWRLZXlNYW5hZ2VtZW50LnNldChLZXlNZ210Lk5PTkUpOworICAgICAgICBtV2lmaUNvbmZpZyA9IGNvbmZpZzsKKyAgICAgICAgYXNzZXJ0VHJ1ZShtV2lmaU1hbmFnZXIuc2V0V2lmaUFwRW5hYmxlZChtV2lmaUNvbmZpZywgdHJ1ZSkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgVGhyZWFkLnNsZWVwKERVUkFUSU9OKTsKKyAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLnYoVEFHLCAiZXhjZXB0aW9uICIgKyBlLmdldFN0YWNrVHJhY2UoKSk7CisgICAgICAgICAgICBhc3NlcnRGYWxzZSh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnROb3ROdWxsKG1XaWZpTWFuYWdlci5nZXRXaWZpQXBDb25maWd1cmF0aW9uKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIndpZmkgQVAgc3RhdGUgaXMgbm90IGVuYWJsZWQiLCBXaWZpTWFuYWdlci5XSUZJX0FQX1NUQVRFX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgICAgICBtV2lmaU1hbmFnZXIuZ2V0V2lmaUFwU3RhdGUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvb3MvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lVGVzdC5qYXZhIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvb3MvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lVGVzdC5qYXZhCmluZGV4IDg5YjNmYjYuLjYzOTM3MmIyIDEwMDY0NAotLS0gYS9jb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvYW5kcm9pZC9vcy9IaWVyYXJjaGljYWxTdGF0ZU1hY2hpbmVUZXN0LmphdmEKKysrIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvb3MvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lVGVzdC5qYXZhCkBAIC03NCwxNSArNzQsMTUgQEAKICAgICAgICAgICAgICAgICBpZiAoaXNRdWl0KG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1RdWl0Q291bnQgKz0gMTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1RdWl0Q291bnQgPiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm5pbmcgZmFsc2UgdG8gYWN0dWFsbHkgcXVpdAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuaW5nIE5PVF9IQU5ETEVEIHRvIGFjdHVhbGx5IHF1aXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIE5PVCBxdWl0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlICB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFsbCBvdGhlciBtZXNzYWdlIGFyZSBoYW5kbGVkCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3MiwxMiArMTcyLDE4IEBACiAKICAgICAgICAgY2xhc3MgUzEgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZW50ZXIoKSB7CisgICAgICAgICAgICAgICAgLy8gVGVzdCB0aGF0IG1lc3NhZ2UgaXMgSFNNX0lOSVRfQ01ECisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKEhTTV9JTklUX0NNRCwgZ2V0Q3VycmVudE1lc3NhZ2UoKS53aGF0KTsKKwogICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhhdCBhIHRyYW5zaXRpb24gaW4gZW50ZXIgYW5kIHRoZSBpbml0aWFsIHN0YXRlIHdvcmtzCiAgICAgICAgICAgICAgICAgbVMxRW50ZXJDb3VudCArPSAxOwogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUzIpOwogICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlMxLmVudGVyIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgbWVzc2FnZSBpcyBIU01fSU5JVF9DTUQKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoSFNNX0lOSVRfQ01ELCBnZXRDdXJyZW50TWVzc2FnZSgpLndoYXQpOworCiAgICAgICAgICAgICAgICAgbVMxRXhpdENvdW50ICs9IDE7CiAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiUzEuZXhpdCIpOwogICAgICAgICAgICAgfQpAQCAtMTg1LDEwICsxOTEsMTYgQEAKIAogICAgICAgICBjbGFzcyBTMiBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBlbnRlcigpIHsKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgbWVzc2FnZSBpcyBIU01fSU5JVF9DTUQKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoSFNNX0lOSVRfQ01ELCBnZXRDdXJyZW50TWVzc2FnZSgpLndoYXQpOworCiAgICAgICAgICAgICAgICAgbVMyRW50ZXJDb3VudCArPSAxOwogICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlMyLmVudGVyIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgbWVzc2FnZSBpcyBURVNUX0NNRF8xCisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFRFU1RfQ01EXzEsIGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdCk7CisKICAgICAgICAgICAgICAgICAvLyBUZXN0IHRyYW5zaXRpb24gaW4gZXhpdCB3b3JrCiAgICAgICAgICAgICAgICAgbVMyRXhpdENvdW50ICs9IDE7CiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1TNCk7CkBAIC0xOTYsMTAgKzIwOCwxMCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGEgdHJhbnNpdGlvbiB0byBTMyBidXQgaXQgd2lsbCBiZQotICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgdG8gYSB0cmFuc2l0aW9uIHRvIFM0CisgICAgICAgICAgICAgICAgLy8gY2hhbmdlZCB0byBhIHRyYW5zaXRpb24gdG8gUzQgaW4gZXhpdAogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUzMpOwogICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlMyLnByb2Nlc3NNZXNzYWdlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjY0LDcgKzI3Niw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBzeW5jaHJvbml6ZWQgKHNtRW50ZXJFeGl0VHJhbnN0aW9uVG9UZXN0KSB7Ci0gICAgICAgICAgICBzbUVudGVyRXhpdFRyYW5zdGlvblRvVGVzdC5zZW5kTWVzc2FnZSgxKTsKKyAgICAgICAgICAgIHNtRW50ZXJFeGl0VHJhbnN0aW9uVG9UZXN0LnNlbmRNZXNzYWdlKFRFU1RfQ01EXzEpOwogCiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIC8vIHdhaXQgZm9yIHRoZSBtZXNzYWdlcyB0byBiZSBoYW5kbGVkCkBAIC0zMjEsNyArMzMzLDcgQEAKICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IFRFU1RfQ01EXzYpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTQxNSw3ICs0MjcsNyBAQAogICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUV4aXRDb3VudCk7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CkBAIC01MTAsNyArNTIyLDcgQEAKICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IFRFU1RfQ01EXzIpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1TMik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKQEAgLTUyMyw3ICs1MzUsNyBAQAogICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLndoYXQgPT0gVEVTVF9DTURfMikgewogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG9IYWx0aW5nU3RhdGUoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjEyLDEzICs2MjQsMTMgQEAKICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IFRFU1RfQ01EXzIpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgY2xhc3MgQ2hpbGRTdGF0ZSBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTY5NywyMCArNzA5LDIwIEBACiAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2Uud2hhdCA9PSBURVNUX0NNRF8yKSB7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGNsYXNzIENoaWxkU3RhdGUxIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgewogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQ2hpbGRTdGF0ZTIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgY2xhc3MgQ2hpbGRTdGF0ZTIgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC03OTQsNyArODA2LDcgQEAKICAgICAgICAgICAgICAgICBtUGFyZW50U3RhdGUxRW50ZXJDb3VudCArPSAxOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CiAgICAgICAgICAgICAgICAgbVBhcmVudFN0YXRlMUV4aXRDb3VudCArPSAxOwpAQCAtODIyLDcgKzgzNCw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1DaGlsZFN0YXRlNUV4aXRDb3VudCk7CiAKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obUNoaWxkU3RhdGUyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgICAgIG1DaGlsZFN0YXRlMUV4aXRDb3VudCArPSAxOwpAQCAtODUwLDcgKzg2Miw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1DaGlsZFN0YXRlNUV4aXRDb3VudCk7CiAKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obUNoaWxkU3RhdGU1KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgICAgIG1DaGlsZFN0YXRlMkV4aXRDb3VudCArPSAxOwpAQCAtODc4LDcgKzg5MCw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1DaGlsZFN0YXRlNUV4aXRDb3VudCk7CiAKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG9IYWx0aW5nU3RhdGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgICAgIG1QYXJlbnRTdGF0ZTJFeGl0Q291bnQgKz0gMTsKQEAgLTkwNiw3ICs5MTgsNyBAQAogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBtQ2hpbGRTdGF0ZTVFeGl0Q291bnQpOwogCiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1DaGlsZFN0YXRlNCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKICAgICAgICAgICAgICAgICBtQ2hpbGRTdGF0ZTNFeGl0Q291bnQgKz0gMTsKQEAgLTkzNCw3ICs5NDYsNyBAQAogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBtQ2hpbGRTdGF0ZTVFeGl0Q291bnQpOwogCiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1QYXJlbnRTdGF0ZTIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CiAgICAgICAgICAgICAgICAgbUNoaWxkU3RhdGU0RXhpdENvdW50ICs9IDE7CkBAIC05NjIsNyArOTc0LDcgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUNoaWxkU3RhdGU1RXhpdENvdW50KTsKIAogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQ2hpbGRTdGF0ZTMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CiAgICAgICAgICAgICAgICAgbUNoaWxkU3RhdGU1RXhpdENvdW50ICs9IDE7CkBAIC0xMTA4LDcgKzExMjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBtQXJyaXZhbFRpbWVNc2cyID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CkBAIC0xMTkwLDcgKzEyMDIsNyBAQAogICAgICAgICBjbGFzcyBTMSBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obVMyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKFRFU1RfQ01EXzIpOwpAQCAtMTIxNiw3ICsxMjI4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAobU1zZ0NvdW50ID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKQEAgLTEzMDAsNyArMTMxMiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2Uud2hhdCA9PSBURVNUX0NNRF8yKSB7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEzNjksNyArMTM4MSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2Uud2hhdCA9PSBURVNUX0NNRF80KSB7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xNTYzLDEwICsxNTc1LDEwIEBACiAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IENNRF8xKSB7CiAgICAgICAgICAgICAgICAgLy8gVHJhbnNpdGlvbiB0byBvdXJzZWxmIHRvIHNob3cgdGhhdCBlbnRlci9leGl0IGlzIGNhbGxlZAogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUzEpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBMZXQgcGFyZW50IHByb2Nlc3MgYWxsIG90aGVyIG1lc3NhZ2VzCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKQEAgLTE2MTgsNyArMTYzMCw3IEBACiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICB9CiAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgTG9nLmQoVEFHLCAiUDIuZXhpdCIpOwpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkRXhwb3J0ZXJUZXN0cy5qYXZhIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkRXhwb3J0ZXJUZXN0cy5qYXZhCmluZGV4IDAwNGExOTcuLjJkZTA0NjQgMTAwNjQ0Ci0tLSBhL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3BpbS92Y2FyZC9WQ2FyZEV4cG9ydGVyVGVzdHMuamF2YQorKysgYi9jb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvYW5kcm9pZC9waW0vdmNhcmQvVkNhcmRFeHBvcnRlclRlc3RzLmphdmEKQEAgLTI3NSw2ICsyNzUsMTYgQEAKICAgICAgICAgdGVzdFBob25lQmFzaWNDb21tb24oVjMwKTsKICAgICB9CiAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0UGhvbmVSZWZyYWluRm9ybWF0dGluZygpIHsKKyAgICAgICAgbVZlcmlmaWVyLmluaXRGb3JFeHBvcnRUZXN0KFYyMSB8IFZDYXJkQ29uZmlnLkZMQUdfUkVGUkFJTl9QSE9ORV9OVU1CRVJfRk9STUFUVElORyk7CisgICAgICAgIG1WZXJpZmllci5hZGRJbnB1dEVudHJ5KCkuYWRkQ29udGVudFZhbHVlcyhQaG9uZS5DT05URU5UX0lURU1fVFlQRSkKKyAgICAgICAgICAgICAgICAucHV0KFBob25lLk5VTUJFUiwgIjEyMzQ1Njc4OTAoYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXopIikKKyAgICAgICAgICAgICAgICAucHV0KFBob25lLlRZUEUsIFBob25lLlRZUEVfSE9NRSk7CisgICAgICAgIG1WZXJpZmllci5hZGRQcm9wZXJ0eU5vZGVzVmVyaWZpZXJFbGVtV2l0aEVtcHR5TmFtZSgpCisgICAgICAgICAgICAgICAgLmFkZEV4cGVjdGVkTm9kZSgiVEVMIiwgIjEyMzQ1Njc4OTAoYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXopIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUeXBlU2V0KCJIT01FIikpOworICAgIH0KKwogICAgIC8qKgogICAgICAqIFRlc3RzIHRoYXQgdkNhcmQgY29tcG9zZXIgZW1pdHMgY29ycmVzcG9uZGluZyB0eXBlIHBhcmFtIHdoaWNoIHdlIGV4cGVjdC4KICAgICAgKi8KZGlmZiAtLWdpdCBhL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvUGFja2VkSW50VmVjdG9yVGVzdC5qYXZhIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdGV4dC9QYWNrZWRJbnRWZWN0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjNjgzZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvUGFja2VkSW50VmVjdG9yVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLnRleHQ7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CisKKy8qKgorICogUGFja2VkSW50VmVjdG9yVGVzdCB0ZXN0cyB0aGUgZmVhdHVyZXMgb2YgYW5kcm9pZC51dGlsLlBhY2tlZEludFZlY3Rvci4KKyAqLworcHVibGljIGNsYXNzIFBhY2tlZEludFZlY3RvclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisgCisgICAgcHVibGljIHZvaWQgdGVzdEJhc2ljKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvciAoaW50IHdpZHRoID0gMDsgd2lkdGggPCAxMDsgd2lkdGgrKykgeworICAgICAgICAgICAgUGFja2VkSW50VmVjdG9yIHAgPSBuZXcgUGFja2VkSW50VmVjdG9yKHdpZHRoKTsKKyAgICAgICAgICAgIGludFtdIGlucyA9IG5ldyBpbnRbd2lkdGhdOworCisgICAgICAgICAgICBmb3IgKGludCBoZWlnaHQgPSB3aWR0aCAqIDI7IGhlaWdodCA8IHdpZHRoICogNDsgaGVpZ2h0KyspIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocC53aWR0aCgpLCB3aWR0aCk7CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGFkZGluZyByb3dzLgorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpbnQgYXQ7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgJSAyID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0ID0gaTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0ID0gcC5zaXplKCkgLSBpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnNbal0gPSBpICsgajsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGhlaWdodCAvIDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QXQoYXQsIG51bGwpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBdChhdCwgaW5zKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLnNpemUoKSwgaSArIDEpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaGVpZ2h0IC8gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBwLmdldFZhbHVlKGF0LCBqKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGF0LCBqKSwgaSArIGopOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVGVzdCBzZXR0aW5nIHZhbHVlcy4KKworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwLnNldFZhbHVlKGksIGosIGkgKiBqKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIGkgKiBqKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRlc3Qgb2Zmc2V0dGluZyB2YWx1ZXMuCisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcC5hZGp1c3RWYWx1ZXNCZWxvdyhqICogMiwgaiwgaiArIDI3KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4cGVjdCA9IGkgKiBqOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSBqICogMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCArPSBqICsgMjc7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGksIGopLCBleHBlY3QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHAuYWRqdXN0VmFsdWVzQmVsb3coaiwgaiwgaiAqIGogKyAxNCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHBlY3QgPSBpICogajsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaiAqIDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QgKz0gaiArIDI3OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCArPSBqICogaiArIDE0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocC5nZXRWYWx1ZShpLCBqKSwgZXhwZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRlc3QgdW5kb2luZyBvZmZzZXRzLgorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHAuYWRqdXN0VmFsdWVzQmVsb3coaiAqIDIsIGosIC0oaiArIDI3KSk7CisgICAgICAgICAgICAgICAgICAgIHAuYWRqdXN0VmFsdWVzQmVsb3coaiwgaiwgLShqICogaiArIDE0KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGksIGopLCBpICogaik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGRlbGV0aW5nIHJvd3MuCisKKyAgICAgICAgICAgICAgICB3aGlsZSAocC5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBvc2l6ZSA9IHAuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBpbnQgZGVsID0gb3NpemUgLyAzOworCisgICAgICAgICAgICAgICAgICAgIGlmIChkZWwgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVsID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGludCBhdCA9IChvc2l6ZSAtIGRlbCkgLyAyOworICAgICAgICAgICAgICAgICAgICBwLmRlbGV0ZUF0KGF0LCBkZWwpOworCisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLnNpemUoKSwgb3NpemUgLSBkZWwpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIGkgKiBqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBhdDsgaSA8IHAuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGksIGopLCAoaSArIGhlaWdodCAtIHAuc2l6ZSgpKSAqIGopOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHAuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvVGV4dFV0aWxzVGVzdC5qYXZhIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdGV4dC9UZXh0VXRpbHNUZXN0LmphdmEKaW5kZXggNWI0MjdiZS4uYTUyMjljYyAxMDA2NDQKLS0tIGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdGV4dC9UZXh0VXRpbHNUZXN0LmphdmEKKysrIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdGV4dC9UZXh0VXRpbHNUZXN0LmphdmEKQEAgLTI2LDYgKzI2LDggQEAKIGltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFBhaW50OwogaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLlN0eWxlU3BhbjsKK2ltcG9ydCBhbmRyb2lkLnRleHQudXRpbC5SZmM4MjJUb2tlbjsKK2ltcG9ydCBhbmRyb2lkLnRleHQudXRpbC5SZmM4MjJUb2tlbml6ZXI7CiBpbXBvcnQgYW5kcm9pZC50ZXN0Lk1vcmVBc3NlcnRzOwogCiBpbXBvcnQgY29tLmFuZHJvaWQuY29tbW9uLlJmYzgyMlZhbGlkYXRvcjsKQEAgLTI2OSw2ICsyNzEsMjQgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIEBTbWFsbFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0UmZjODIyVG9rZW5pemVyRnVsbEFkZHJlc3MoKSB7CisgICAgICAgIFJmYzgyMlRva2VuW10gdG9rZW5zID0gUmZjODIyVG9rZW5pemVyLnRva2VuaXplKCJGb28gQmFyIChzb21ldGhpbmcpIDxmb29AZ29vZ2xlLmNvbT4iKTsKKyAgICAgICAgYXNzZXJ0Tm90TnVsbCh0b2tlbnMpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgdG9rZW5zLmxlbmd0aCk7CisgICAgICAgIGFzc2VydEVxdWFscygiZm9vQGdvb2dsZS5jb20iLCB0b2tlbnNbMF0uZ2V0QWRkcmVzcygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJGb28gQmFyIiwgdG9rZW5zWzBdLmdldE5hbWUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygic29tZXRoaW5nIix0b2tlbnNbMF0uZ2V0Q29tbWVudCgpKTsKKyAgICB9CisKKyAgICBAU21hbGxUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFJmYzgyMlRva2VuaXplSXRlbVdpdGhFcnJvcigpIHsKKyAgICAgICAgUmZjODIyVG9rZW5bXSB0b2tlbnMgPSBSZmM4MjJUb2tlbml6ZXIudG9rZW5pemUoIlwiRm9vIEJhclxcIik7CisgICAgICAgIGFzc2VydE5vdE51bGwodG9rZW5zKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHRva2Vucy5sZW5ndGgpOworICAgICAgICBhc3NlcnRFcXVhbHMoIkZvbyBCYXIiLCB0b2tlbnNbMF0uZ2V0QWRkcmVzcygpKTsKKyAgICB9CisKICAgICBATGFyZ2VUZXN0CiAgICAgcHVibGljIHZvaWQgdGVzdEVsbGlwc2l6ZSgpIHsKICAgICAgICAgQ2hhclNlcXVlbmNlIHMxID0gIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciBcdTAwRkVoZSBsYXp5IGRvZy4iOwpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdmlldy9WZWxvY2l0eVRlc3QuamF2YSBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3ZpZXcvVmVsb2NpdHlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIyOGUxZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3ZpZXcvVmVsb2NpdHlUZXN0LmphdmEKQEAgLTAsMCArMSwyODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmZyYW1ld29ya3Rlc3QudmlldzsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5Bc3NlcnQ7CisKK2ltcG9ydCBhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2U7CitpbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLk1lZGl1bVRlc3Q7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BY2NlbGVyYXRlSW50ZXJwb2xhdG9yOworaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uRGVjZWxlcmF0ZUludGVycG9sYXRvcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxpbmVhckludGVycG9sYXRvcjsKKworLyoqCisgKiBFeGVyY2lzZXMge0BsaW5rIGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXJ9IHRvIGNvbXB1dGUgY29ycmVjdCB2ZWxvY2l0eS48YnI+CisgKiBUbyBsYXVuY2ggdGhpcyB0ZXN0LCB1c2UgOjxicj4KKyAqIDxjb2RlPi4vZGV2ZWxvcG1lbnQvdGVzdHJ1bm5lci9ydW50ZXN0LnB5IGZyYW1ld29yayAtYyBjb20uYW5kcm9pZC5mcmFtZXdvcmt0ZXN0LnZpZXcuVmVsb2NpdHlUZXN0PC9jb2RlPgorICovCitwdWJsaWMgY2xhc3MgVmVsb2NpdHlUZXN0IGV4dGVuZHMgSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UgeworCisgICAgQE1lZGl1bVRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0SW5pdGlhbENvbmRpZGl0aW9ucygpIHsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBhc3NlcnROb3ROdWxsKHZ0KTsKKyAgICAgICAgdnQucmVjeWNsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhhdCB7QGxpbmsgYW5kcm9pZC52aWV3LlZlbG9jaXR5VHJhY2tlcn0uY2xlYXIoKSBjbGVhcnMKKyAgICAgKiB0aGUgcHJldmlvdXMgdmFsdWVzIGFmdGVyIGEgY2FsbCB0byBjb21wdXRlQ3VycmVudFZlbG9jaXR5KCkKKyAgICAgKi8KKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RDbGVhcigpIHsKKyAgICAgICAgbG9uZyB0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFZlbG9jaXR5VHJhY2tlciB2dCA9IFZlbG9jaXR5VHJhY2tlci5vYnRhaW4oKTsKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAxMCwgdCwgMzAwKTsKKyAgICAgICAgdnQuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UoIlZlbG9jaXR5IHNob3VsZCBub3QgYmUgbnVsbCIsIHZ0LmdldFhWZWxvY2l0eSgpID09IDAuMGYpOworICAgICAgICBhc3NlcnRGYWxzZSgiVmVsb2NpdHkgc2hvdWxkIG5vdCBiZSBudWxsIiwgdnQuZ2V0WVZlbG9jaXR5KCkgPT0gMC4wZik7CisgICAgICAgIHZ0LmNsZWFyKCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLjBmLCB2dC5nZXRYVmVsb2NpdHkoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLjBmLCB2dC5nZXRZVmVsb2NpdHkoKSk7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3REcmFnQWNjZWxlcmF0aW9uICgpIHsKKyAgICAgICAgbG9uZyB0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFZlbG9jaXR5VHJhY2tlciB2dCA9IFZlbG9jaXR5VHJhY2tlci5vYnRhaW4oKTsKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAxNSwgdCwgNDAwLCBuZXcgQWNjZWxlcmF0ZUludGVycG9sYXRvcigpKTsKKyAgICAgICAgdnQuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxMDAwKTsKKyAgICAgICAgYXNzZXJ0R3JlYXRlcigyNTAuMGYsIHZ0LmdldFhWZWxvY2l0eSgpKTsKKyAgICAgICAgYXNzZXJ0R3JlYXRlcigyNTAuMGYsIHZ0LmdldFlWZWxvY2l0eSgpKTsKKyAgICAgICAgdnQucmVjeWNsZSgpOworICAgIH0KKworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdERyYWdEZWNlbGVyYXRpb24gKCkgeworICAgICAgICBsb25nIHQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBkcmFnKHZ0LCAxMDAsIDIwMCwgMTAwLCAyMDAsIDE1LCB0LCA0MDAsIG5ldyBEZWNlbGVyYXRlSW50ZXJwb2xhdG9yKCkpOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEwMDApOworICAgICAgICBhc3NlcnRMb3dlcigyNTAuMGYsIHZ0LmdldFhWZWxvY2l0eSgpKTsKKyAgICAgICAgYXNzZXJ0TG93ZXIoMjUwLjBmLCB2dC5nZXRZVmVsb2NpdHkoKSk7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3REcmFnTGluZWFySG9yaXpvbnRhbCgpIHsKKyAgICAgICAgbG9uZyB0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFZlbG9jaXR5VHJhY2tlciB2dCA9IFZlbG9jaXR5VHJhY2tlci5vYnRhaW4oKTsKKyAgICAgICAgLy8gMTAwcHggaW4gNDAwbXMgPT4gMjUwcHgvcworICAgICAgICBkcmFnKHZ0LCAxMDAsIDIwMCwgMjAwLCAyMDAsIDE1LCB0LCA0MDApOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEwMDApOworICAgICAgICBhc3NlcnRFcXVhbHMoMC4wZiwgdnQuZ2V0WVZlbG9jaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KDI1MC4wZiwgdnQuZ2V0WFZlbG9jaXR5KCksIDRmKTsKKyAgICAgICAgdnQucmVjeWNsZSgpOworICAgIH0KKworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdERyYWdMaW5lYXJWZXJ0aWNhbCgpIHsKKyAgICAgICAgbG9uZyB0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFZlbG9jaXR5VHJhY2tlciB2dCA9IFZlbG9jaXR5VHJhY2tlci5vYnRhaW4oKTsKKyAgICAgICAgLy8gMTAwcHggaW4gNDAwbXMgPT4gMjUwcHgvcworICAgICAgICBkcmFnKHZ0LCAyMDAsIDIwMCwgMTAwLCAyMDAsIDE1LCB0LCA0MDApOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEwMDApOworICAgICAgICBhc3NlcnRFcXVhbHMoMC4wZiwgdnQuZ2V0WFZlbG9jaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KDI1MC4wZiwgdnQuZ2V0WVZlbG9jaXR5KCksIDRmKTsKKyAgICAgICAgdnQucmVjeWNsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgZHJhZ2dpbmcgd2l0aCB0d28gcG9pbnRzIG9ubHkKKyAgICAgKiAodmVsb2NpdHkgbXVzdCBiZSBhbiBleGFjdCB2YWx1ZSkKKyAgICAgKi8KKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3REcmFnV2l0aDJQb2ludHMgKCkgeworICAgICAgICBsb25nIHQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICAvLyAxMDBweCwgMiBzdGVwcywgMTAwbXMgPT4gMTAwMHB4L3MKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAyLCB0LCAxMDApOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEwMDApOworICAgICAgICBhc3NlcnRFcXVhbHMoMTAwMC4wZiwgdnQuZ2V0WFZlbG9jaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMTAwMC4wZiwgdnQuZ2V0WVZlbG9jaXR5KCkpOworICAgICAgICB2dC5yZWN5Y2xlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVmVsb2NpdHkgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIG51bWJlciBvZiBwb2ludHMgdXNlZCBkdXJpbmcKKyAgICAgKiB0aGUgc2FtZSBpbnRlcnZhbAorICAgICAqLworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFN0YWJpbGl0eUluTmJQb2ludHMgKCkgeworICAgICAgICBsb25nIHQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBkcmFnKHZ0LCAxMDAsIDIwMCwgMTAwLCAyMDAsIDEwLCB0LCA0MDApOyAvLyAxMCBzdGVwcyBvdmVyIDQwMG1zCisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IGZpcnN0WCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBmaXJzdFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgdnQuY2xlYXIoKTsKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAyMCwgdCwgNDAwKTsgLy8gMjAgc3RlcHMgb3ZlciA0MDBtcworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEpOworICAgICAgICBmbG9hdCBzZWNvbmRYID0gdnQuZ2V0WFZlbG9jaXR5KCk7CisgICAgICAgIGZsb2F0IHNlY29uZFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxGdXp6eShmaXJzdFgsIHNlY29uZFgsIDAuMWYpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KGZpcnN0WSwgc2Vjb25kWSwgMC4xZik7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWZWxvY2l0eSBpcyBpbmRlcGVuZGVudCBvZiB0aGUgdGltZSB3aGVuIHRoZSBldmVudHMgb2NjdXJzLAorICAgICAqIGl0IG9ubHkgZGVwZW5kcyBvbiBkZWxheXMgYmV0d2VlbiB0aGUgZXZlbnRzLgorICAgICAqLworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFN0YWJpbGl0eUluVGltZSAoKSB7CisgICAgICAgIGxvbmcgdCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBWZWxvY2l0eVRyYWNrZXIgdnQgPSBWZWxvY2l0eVRyYWNrZXIub2J0YWluKCk7CisgICAgICAgIGRyYWcodnQsIDEwMCwgMjAwLCAxMDAsIDIwMCwgMTAsIHQsIDQwMCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IGZpcnN0WCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBmaXJzdFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgdnQuY2xlYXIoKTsKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAxMCwgdCArIDM2MDAqMTAwMCwgNDAwKTsgLy8gb24gaG91ciBsYXRlcgorICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEpOworICAgICAgICBmbG9hdCBzZWNvbmRYID0gdnQuZ2V0WFZlbG9jaXR5KCk7CisgICAgICAgIGZsb2F0IHNlY29uZFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxGdXp6eShmaXJzdFgsIHNlY29uZFgsIDAuMWYpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KGZpcnN0WSwgc2Vjb25kWSwgMC4xZik7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWZWxvY2l0eSBpcyBpbmRlcGVuZGVudCBvZiB0aGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50cywKKyAgICAgKiBpdCBvbmx5IGRlcGVuZHMgb24gdGhlaXIgcmVsYXRpdmUgZGlzdGFuY2UuCisgICAgICovCisgICAgQE1lZGl1bVRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U3RhYmlsaXR5SW5TcGFjZSAoKSB7CisgICAgICAgIGxvbmcgdCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBWZWxvY2l0eVRyYWNrZXIgdnQgPSBWZWxvY2l0eVRyYWNrZXIub2J0YWluKCk7CisgICAgICAgIGRyYWcodnQsIDEwMCwgMjAwLCAxMDAsIDIwMCwgMTAsIHQsIDQwMCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IGZpcnN0WCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBmaXJzdFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgdnQuY2xlYXIoKTsKKyAgICAgICAgZHJhZyh2dCwgMjAwLCAzMDAsIDIwMCwgMzAwLCAxMCwgdCwgNDAwKTsgLy8gMTAwcHggZnVydGhlcgorICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEpOworICAgICAgICBmbG9hdCBzZWNvbmRYID0gdnQuZ2V0WFZlbG9jaXR5KCk7CisgICAgICAgIGZsb2F0IHNlY29uZFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxGdXp6eShmaXJzdFgsIHNlY29uZFgsIDAuMWYpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KGZpcnN0WSwgc2Vjb25kWSwgMC4xZik7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoYXQgY2FsbHMgdG8ge0BsaW5rIGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXJ9LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoKQorICAgICAqIHdpbGwgb3V0cHV0IHNhbWUgdmFsdWVzIHdoZW4gdXNpbmcgdGhlIHNhbWUgZGF0YS4KKyAgICAgKi8KKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RTdGFiaWxpdHlPZkNvbXB1dGF0aW9uKCkgeworICAgICAgICBsb25nIHQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBkcmFnKHZ0LCAxMDAsIDIwMCwgMTAwLCAyMDAsIDEwLCB0LCAzMDApOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEpOworICAgICAgICBmbG9hdCBmaXJzdFggPSB2dC5nZXRYVmVsb2NpdHkoKTsKKyAgICAgICAgZmxvYXQgZmlyc3RZID0gdnQuZ2V0WVZlbG9jaXR5KCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IHNlY29uZFggPSB2dC5nZXRYVmVsb2NpdHkoKTsKKyAgICAgICAgZmxvYXQgc2Vjb25kWSA9IHZ0LmdldFlWZWxvY2l0eSgpOworICAgICAgICBhc3NlcnRFcXVhbHMoZmlyc3RYLCBzZWNvbmRYKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGZpcnN0WSwgc2Vjb25kWSk7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSB1bml0cyBwYXJhbWV0ZXIgb2Yge0BsaW5rIGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXJ9LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoKQorICAgICAqLworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFN0YWJpbGl0eU9mVW5pdHMoKSB7CisgICAgICAgIGxvbmcgdCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBWZWxvY2l0eVRyYWNrZXIgdnQgPSBWZWxvY2l0eVRyYWNrZXIub2J0YWluKCk7CisgICAgICAgIGRyYWcodnQsIDEwMCwgMjAwLCAxMDAsIDIwMCwgMTAsIHQsIDMwMCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IGZpcnN0WCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBmaXJzdFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgdnQuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxMDAwKTsKKyAgICAgICAgZmxvYXQgc2Vjb25kWCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBzZWNvbmRZID0gdnQuZ2V0WVZlbG9jaXR5KCk7CisgICAgICAgIGFzc2VydEVxdWFsRnV6enkoZmlyc3RYLCBzZWNvbmRYIC8gMTAwMC4wZiwgMC4xZik7CisgICAgICAgIGFzc2VydEVxdWFsRnV6enkoZmlyc3RZLCBzZWNvbmRZIC8gMTAwMC4wZiwgMC4xZik7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW11bGF0ZSBhIGRyYWcgYnkgZ2l2aW5nIGRpcmVjdGx5IE1vdGlvbkV2ZW50cyB0bworICAgICAqIHRoZSBWZWxvY2l0eVRyYWNrZXIgdXNpbmcgYSBsaW5lYXIgaW50ZXJwb2xhdG9yCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGRyYWcoVmVsb2NpdHlUcmFja2VyIHZ0LCBpbnQgc3RhcnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFksIGludCBzdGVwcywKKyAgICAgICAgICAgIGxvbmcgc3RhcnRpbWUsIGludCBkdXJhdGlvbikgeworICAgICAgICBkcmFnKHZ0LCBzdGFydFgsIGVuZFgsIHN0YXJ0WSwgZW5kWSwgc3RlcHMsIHN0YXJ0aW1lLCBkdXJhdGlvbiwgbmV3IExpbmVhckludGVycG9sYXRvcigpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW11bGF0ZSBhIGRyYWcgYnkgZ2l2aW5nIGRpcmVjdGx5IE1vdGlvbkV2ZW50cyB0bworICAgICAqIHRoZSBWZWxvY2l0eVRyYWNrZXIgdXNpbmcgYSBnaXZlbiBpbnRlcnBvbGF0b3IKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZHJhZyhWZWxvY2l0eVRyYWNrZXIgdnQsIGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSwgaW50IHN0ZXBzLAorICAgICAgICAgICAgbG9uZyBzdGFydGltZSwgaW50IGR1cmF0aW9uLCBJbnRlcnBvbGF0b3IgaW50ZXJwb2xhdG9yKSB7CisgICAgICAgIGFkZE1vdGlvbkV2ZW50KHZ0LCBzdGFydFgsIHN0YXJ0WSwgc3RhcnRpbWUsIE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKTsKKyAgICAgICAgZmxvYXQgZHQgPSBkdXJhdGlvbiAvIChmbG9hdClzdGVwczsKKyAgICAgICAgaW50IGRpc3RYID0gZW5kWCAtIHN0YXJ0WDsKKyAgICAgICAgaW50IGRpc3RZID0gZW5kWSAtIHN0YXJ0WTsKKyAgICAgICAgZm9yIChpbnQgaT0xOyBpPHN0ZXBzLTE7IGkrKykgeworICAgICAgICAgICAgZmxvYXQgaWkgPSBpbnRlcnBvbGF0b3IuZ2V0SW50ZXJwb2xhdGlvbihpIC8gKGZsb2F0KXN0ZXBzKTsKKyAgICAgICAgICAgIGludCB4ID0gKGludCkgKHN0YXJ0WCArIGRpc3RYICogaWkpOworICAgICAgICAgICAgaW50IHkgPSAoaW50KSAoc3RhcnRZICsgZGlzdFkgKiBpaSk7CisgICAgICAgICAgICBsb25nIHRpbWUgPSBzdGFydGltZSArIChpbnQpIChpICogZHQpOworICAgICAgICAgICAgYWRkTW90aW9uRXZlbnQodnQsIHgsIHksIHRpbWUsIE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKTsKKyAgICAgICAgfQorICAgICAgICBhZGRNb3Rpb25FdmVudCh2dCwgZW5kWCwgZW5kWSwgc3RhcnRpbWUgKyBkdXJhdGlvbiwgTW90aW9uRXZlbnQuQUNUSU9OX1VQKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWRkTW90aW9uRXZlbnQoVmVsb2NpdHlUcmFja2VyIHZ0LCBpbnQgeCwgaW50IHksIGxvbmcgdGltZSwgaW50IGFjdGlvbikgeworICAgICAgICBNb3Rpb25FdmVudCBtZSA9IE1vdGlvbkV2ZW50Lm9idGFpbih0aW1lLCB0aW1lLCBhY3Rpb24sIHgsIHksIDApOworICAgICAgICB2dC5hZGRNb3ZlbWVudChtZSk7CisgICAgICAgIG1lLnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGbG9hdCBpbXByZWNpc2lvbiBvZiB0aGUgYXZlcmFnZSBjb21wdXRhdGlvbnMgYW5kIGZpbHRlcmluZworICAgICAqIChyZW1vdmluZyBsYXN0IE1vdGlvbkV2ZW50IGZvciBOID4gMykgaW1wbGllcyB0aGF0IHRlc3RzCisgICAgICogIGFjY2VwdHMgc29tZSBhcHByb3hpbWF0ZWQgdmFsdWVzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhc3NlcnRFcXVhbEZ1enp5KGZsb2F0IGV4cGVjdGVkLCBmbG9hdCBhY3R1YWwsIGZsb2F0IHRocmVzaG9sZCkgeworICAgICAgICBib29sZWFuIGZ1enp5RXF1YWwgPSBhY3R1YWwgPj0gZXhwZWN0ZWQgLSB0aHJlc2hvbGQgJiYgYWN0dWFsIDw9IGV4cGVjdGVkICsgdGhyZXNob2xkOworICAgICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiRXhwZWN0ZWQ6IDwiK2V4cGVjdGVkKyI+IGJ1dCB3YXM6IDwiK2FjdHVhbCsKKyAgICAgICAgICAgICAgICAiPiB3aGlsZSBhY2NlcHRpbmcgYSB2YXJpYXRpb24gb2Y6IDwiK3RocmVzaG9sZCsiPiIsIGZ1enp5RXF1YWwpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhc3NlcnRHcmVhdGVyKGZsb2F0IG1pbkV4cGVjdGVkLCBmbG9hdCBhY3R1YWwpIHsKKyAgICAgICAgQXNzZXJ0LmFzc2VydFRydWUoIkV4cGVjdGVkOiBtaW5pbXVtIDwiK21pbkV4cGVjdGVkKyI+IGJ1dCB3YXM6IDwiK2FjdHVhbCsiPiIsCisgICAgICAgICAgICAgICAgYWN0dWFsID4gbWluRXhwZWN0ZWQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhc3NlcnRMb3dlcihmbG9hdCBtYXhFeHBlY3RlZCwgZmxvYXQgYWN0dWFsKSB7CisgICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCJFeHBlY3RlZDogbWF4aW11bSA8IittYXhFeHBlY3RlZCsiPiBidXQgd2FzOiA8IithY3R1YWwrIj4iLAorICAgICAgICAgICAgICAgIGFjdHVhbCA8IG1heEV4cGVjdGVkKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL2h0dHAvbXVsdGlwYXJ0L011bHRpcGFydFRlc3QuamF2YSBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9odHRwL211bHRpcGFydC9NdWx0aXBhcnRUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvaHR0cC9tdWx0aXBhcnQvTXVsdGlwYXJ0VGVzdC5qYXZhCnJlbmFtZSB0byBjb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvaHR0cC9tdWx0aXBhcnQvTXVsdGlwYXJ0VGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL0xvZ2dpbmdQcmludFN0cmVhbVRlc3QuamF2YSBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9Mb2dnaW5nUHJpbnRTdHJlYW1UZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvTG9nZ2luZ1ByaW50U3RyZWFtVGVzdC5qYXZhCnJlbmFtZSB0byBjb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvTG9nZ2luZ1ByaW50U3RyZWFtVGVzdC5qYXZhCmRpZmYgLS1naXQgYS9kYXRhL2V0Yy9hbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mcm9udC54bWwgYi9kYXRhL2V0Yy9hbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mcm9udC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVhNjk5OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvZXRjL2FuZHJvaWQuaGFyZHdhcmUuY2FtZXJhLmZyb250LnhtbApAQCAtMCwwICsxLDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8IS0tIFRoaXMgaXMgdGhlIHN0YW5kYXJkIHNldCBvZiBmZWF0dXJlcyBmb3IgYSBmcm9udCBmYWNpbmcgY2FtZXJhLiAtLT4KKzxwZXJtaXNzaW9ucz4KKyAgICA8ZmVhdHVyZSBuYW1lPSJhbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mcm9udCIgLz4KKzwvcGVybWlzc2lvbnM+CmRpZmYgLS1naXQgYS9kYXRhL2V0Yy9oYW5kaGVsZF9jb3JlX2hhcmR3YXJlLnhtbCBiL2RhdGEvZXRjL2hhbmRoZWxkX2NvcmVfaGFyZHdhcmUueG1sCmluZGV4IDU2NGZhODQuLmVmY2E0YzIgMTAwNjQ0Ci0tLSBhL2RhdGEvZXRjL2hhbmRoZWxkX2NvcmVfaGFyZHdhcmUueG1sCisrKyBiL2RhdGEvZXRjL2hhbmRoZWxkX2NvcmVfaGFyZHdhcmUueG1sCkBAIC0zNSw2ICszNSw4IEBACiAgICAgPCEtLSBkZXZpY2VzIHdpdGggYW4gYXV0b2ZvY3VzIGNhbWVyYSBhbmQvb3IgZmxhc2ggbXVzdCBpbmNsdWRlIGVpdGhlcgogICAgICAgICAgYW5kcm9pZC5oYXJkd2FyZS5jYW1lcmEuYXV0b2ZvY3VzLnhtbCBvciAKICAgICAgICAgIGFuZHJvaWQuaGFyZHdhcmUuY2FtZXJhLmF1dG9mb2N1cy1mbGFzaC54bWwgLS0+CisgICAgPCEtLSBkZXZpY2VzIHdpdGggYSBmcm9udCBmYWNpbmcgY2FtZXJhIG11c3QgaW5jbHVkZQorICAgICAgICAgYW5kcm9pZC5oYXJkd2FyZS5jYW1lcmEuZnJvbnQueG1sIC0tPgogICAgIDwhLS0gZGV2aWNlcyB3aXRoIFdpRmkgbXVzdCBhbHNvIGluY2x1ZGUgYW5kcm9pZC5oYXJkd2FyZS53aWZpLnhtbCAtLT4KICAgICA8IS0tIGRldmljZXMgd2l0aCBsaW1pdGVkL2dlc3R1cmFsIG11bHRpdG91Y2ggbXVzdCBhbHNvIGluY2x1ZGUKICAgICAgICAgIGFuZHJvaWQuaGFyZHdhcmUudG91Y2hzY3JlZW4ubXVsdGl0b3VjaC54bWwgLS0+CmRpZmYgLS1naXQgYS9kb2NzL2h0bWwvaW1hZ2VzL2F4aXNfZGV2aWNlLnBuZyBiL2RvY3MvaHRtbC9pbWFnZXMvYXhpc19kZXZpY2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjY2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2h0bWwvaW1hZ2VzL2F4aXNfZGV2aWNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2h0bWwvaW1hZ2VzL2F4aXNfZ2xvYmUucG5nIGIvZG9jcy9odG1sL2ltYWdlcy9heGlzX2dsb2JlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2NiNThiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9odG1sL2ltYWdlcy9heGlzX2dsb2JlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2h0bWwvc2RrL2FuZHJvaWQtMi4yLmpkIGIvZG9jcy9odG1sL3Nkay9hbmRyb2lkLTIuMi5qZAppbmRleCAxYzdiNWE1Li5mODJlZGY5IDEwMDY0NAotLS0gYS9kb2NzL2h0bWwvc2RrL2FuZHJvaWQtMi4yLmpkCisrKyBiL2RvY3MvaHRtbC9zZGsvYW5kcm9pZC0yLjIuamQKQEAgLTIsNiArMiw3IEBACiBzZGsucGxhdGZvcm0udmVyc2lvbj0yLjIKIHNkay5wbGF0Zm9ybS5hcGlMZXZlbD04CiBzZGsucGxhdGZvcm0ubWFqb3JNaW5vcj1taW5vcgorc2RrLnBsYXRmb3JtLmRlcGxveWFibGVEYXRlPU1heSAyMDEwCiAKIEBqZDpib2R5CiAKQEAgLTExNywzMCArMTE4LDYgQEAKIDxkaXYgY2xhc3M9InRvZ2dsZWFibGUgb3BlbmVkIj4KICAgPGEgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHRvZ2dsZURpdih0aGlzKSI+CiAgICAgICAgIDxpbWcgc3JjPSJ7QGRvY1Jvb3R9YXNzZXRzL2ltYWdlcy90cmlhbmdsZS1vcGVuZWQucG5nIiBjbGFzcz0idG9nZ2xlLWltZyIgaGVpZ2h0PSI5cHgiIHdpZHRoPSI5cHgiIC8+Ci0gICAgICAgIEFuZHJvaWQge0BzZGtQbGF0Zm9ybVZlcnNpb259LCBSZXZpc2lvbiAyPC9hPiA8ZW0+KEp1bHkgMjAxMCk8L2VtPjwvYT4KLSAgPGRpdiBjbGFzcz0idG9nZ2xlbWUiPgotPGRsPgotPGR0PkRlcGVuZGVuY2llczo8L2R0PgotPGRkPgotPHA+UmVxdWlyZXMgU0RLIFRvb2xzIHI2IG9yIGhpZ2hlci48L3A+Ci08L2RkPgotCi08ZHQ+U3lzdGVtIEltYWdlOjwvZHQ+Ci08ZGQ+Ci08dWw+Ci08bGk+QWRkcyBkZWZhdWx0IFNlYXJjaCBXaWRnZXQuPC9saT4KLTxsaT5JbmNsdWRlcyBwcm9wZXIgcHJvdmlzaW9uaW5nIGZvciB0aGUgcGxhdGZvcm0ncyBCYWNrdXAgTWFuYWdlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHVzZSB0aGUgQmFja3VwIE1hbmFnZXIsIHNlZSA8YSBocmVmPSJ7QGRvY1Jvb3R9Z3VpZGUvdG9waWNzL2RhdGEvYmFja3VwLmh0bWwiPkRhdGEgQmFja3VwPC9hPi48L2xpPgotPGxpPlVwZGF0ZXMgdGhlIEFuZHJvaWQgMi4yIHN5c3RlbSBpbWFnZSB0byBGUkY5MS48L2xpPgotPC91bD4KLTwvZGQ+Ci0KLTwvZGw+Ci0gPC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0idG9nZ2xlYWJsZSBjbG9zZWQiPgotICA8YSBocmVmPSIjIiBvbmNsaWNrPSJyZXR1cm4gdG9nZ2xlRGl2KHRoaXMpIj4KLSAgICAgICAgPGltZyBzcmM9IntAZG9jUm9vdH1hc3NldHMvaW1hZ2VzL3RyaWFuZ2xlLW9wZW5lZC5wbmciIGNsYXNzPSJ0b2dnbGUtaW1nIiBoZWlnaHQ9IjlweCIgd2lkdGg9IjlweCIgLz4KICAgICAgICAgQW5kcm9pZCB7QHNka1BsYXRmb3JtVmVyc2lvbn0sIFJldmlzaW9uIDE8L2E+IDxlbT4oTWF5IDIwMTApPC9lbT48L2E+CiAgIDxkaXYgY2xhc3M9InRvZ2dsZW1lIj4KIDxkbD4KQEAgLTE1OCw2ICsxMzUsNyBAQAogIDwvZGl2PgogPC9kaXY+CiAKKwogPGgyIGlkPSJhcGktbGV2ZWwiPkFQSSBMZXZlbDwvaDI+CiAKIDxwPlRoZSBBbmRyb2lkIHtAc2RrUGxhdGZvcm1WZXJzaW9ufSBwbGF0Zm9ybSBkZWxpdmVycyBhbiB1cGRhdGVkIHZlcnNpb24gb2YKZGlmZiAtLWdpdCBhL2dyYXBoaWNzL2phdmEvYW5kcm9pZC9ncmFwaGljcy9Db2xvci5qYXZhIGIvZ3JhcGhpY3MvamF2YS9hbmRyb2lkL2dyYXBoaWNzL0NvbG9yLmphdmEKaW5kZXggNWNlZmFhMy4uYTUwNjkzZCAxMDA2NDQKLS0tIGEvZ3JhcGhpY3MvamF2YS9hbmRyb2lkL2dyYXBoaWNzL0NvbG9yLmphdmEKKysrIGIvZ3JhcGhpY3MvamF2YS9hbmRyb2lkL2dyYXBoaWNzL0NvbG9yLmphdmEKQEAgLTMwLDcgKzMwLDggQEAKICAqIChncmVlbiA8PCA4KSB8IGJsdWUuIEVhY2ggY29tcG9uZW50IHJhbmdlcyBiZXR3ZWVuIDAuLjI1NSB3aXRoIDAKICAqIG1lYW5pbmcgbm8gY29udHJpYnV0aW9uIGZvciB0aGF0IGNvbXBvbmVudCwgYW5kIDI1NSBtZWFuaW5nIDEwMCUKICAqIGNvbnRyaWJ1dGlvbi4gVGh1cyBvcGFxdWUtYmxhY2sgd291bGQgYmUgMHhGRjAwMDAwMCAoMTAwJSBvcGFxdWUgYnV0Ci0gKiBubyBjb250cmlidXRlcyBmcm9tIHJlZCwgZ3JlZSwgYmx1ZSwgYW5kIG9wYXF1ZS13aGl0ZSB3b3VsZCBiZSAweEZGRkZGRkZGCisgKiBubyBjb250cmlidXRpb25zIGZyb20gcmVkLCBncmVlbiwgb3IgYmx1ZSksIGFuZCBvcGFxdWUtd2hpdGUgd291bGQgYmUKKyAqIDB4RkZGRkZGRkYKICAqLwogcHVibGljIGNsYXNzIENvbG9yIHsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCTEFDSyAgICAgICA9IDB4RkYwMDAwMDA7CmRpZmYgLS1naXQgYS9ncmFwaGljcy9qbmkvYW5kcm9pZF9yZW5kZXJzY3JpcHRfUmVuZGVyU2NyaXB0LmNwcCBiL2dyYXBoaWNzL2puaS9hbmRyb2lkX3JlbmRlcnNjcmlwdF9SZW5kZXJTY3JpcHQuY3BwCmluZGV4IGQ4ZTAzOTMuLjQ1Y2M3MmUgMTAwNjQ0Ci0tLSBhL2dyYXBoaWNzL2puaS9hbmRyb2lkX3JlbmRlcnNjcmlwdF9SZW5kZXJTY3JpcHQuY3BwCisrKyBiL2dyYXBoaWNzL2puaS9hbmRyb2lkX3JlbmRlcnNjcmlwdF9SZW5kZXJTY3JpcHQuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAKIAogICAgIH0gZWxzZSB7CiAgICAgICAgIGpjbGFzcyBzdXJmYWNlX2NsYXNzID0gX2Vudi0+RmluZENsYXNzKCJhbmRyb2lkL3ZpZXcvU3VyZmFjZSIpOwotICAgICAgICBqZmllbGRJRCBzdXJmYWNlRmllbGRJRCA9IF9lbnYtPkdldEZpZWxkSUQoc3VyZmFjZV9jbGFzcywgIm1TdXJmYWNlIiwgIkkiKTsKKyAgICAgICAgamZpZWxkSUQgc3VyZmFjZUZpZWxkSUQgPSBfZW52LT5HZXRGaWVsZElEKHN1cmZhY2VfY2xhc3MsIEFORFJPSURfVklFV19TVVJGQUNFX0pOSV9JRCwgIkkiKTsKICAgICAgICAgd2luZG93ID0gKFN1cmZhY2UqKV9lbnYtPkdldEludEZpZWxkKHduZCwgc3VyZmFjZUZpZWxkSUQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaCBiL2luY2x1ZGUvYW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmgKaW5kZXggOTlhYjJmMC4uOTdhOTZiMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaAorKysgYi9pbmNsdWRlL2FuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgdmlydHVhbCB2b2lkIG9uRXhpdChpbnQgY29kZSk7CiAKICAgICAvKiogY3JlYXRlIGEgbmV3IHRocmVhZCB0aGF0IGlzIHZpc2libGUgZnJvbSBKYXZhICovCi0gICAgc3RhdGljIHZvaWQgY3JlYXRlSmF2YVRocmVhZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkICgqc3RhcnQpKHZvaWQgKiksCisgICAgc3RhdGljIGFuZHJvaWRfdGhyZWFkX2lkX3QgY3JlYXRlSmF2YVRocmVhZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkICgqc3RhcnQpKHZvaWQgKiksCiAgICAgICAgIHZvaWQqIGFyZyk7CiAKICAgICAvKiogcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgVk0gcnVubmluZyBpbiB0aGlzIHByb2Nlc3MgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYmluZGVyL0lJbnRlcmZhY2UuaCBiL2luY2x1ZGUvYmluZGVyL0lJbnRlcmZhY2UuaAppbmRleCAyNzNkOTIyLi41ZjlmNjljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2JpbmRlci9JSW50ZXJmYWNlLmgKKysrIGIvaW5jbHVkZS9iaW5kZXIvSUludGVyZmFjZS5oCkBAIC03MiwyMSArNzIsMjQgQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogI2RlZmluZSBERUNMQVJFX01FVEFfSU5URVJGQUNFKElOVEVSRkFDRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcxNiBkZXNjcmlwdG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBzcDxJIyNJTlRFUkZBQ0U+IGFzSW50ZXJmYWNlKGNvbnN0IHNwPElCaW5kZXI+JiBvYmopOyAgICAgICAgXAotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nMTYmIGdldEludGVyZmFjZURlc2NyaXB0b3IoKSBjb25zdDsgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBjb25zdCBhbmRyb2lkOjpTdHJpbmcxNiBkZXNjcmlwdG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBhbmRyb2lkOjpzcDxJIyNJTlRFUkZBQ0U+IGFzSW50ZXJmYWNlKCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY29uc3QgYW5kcm9pZDo6c3A8YW5kcm9pZDo6SUJpbmRlcj4mIG9iaik7ICAgICAgICAgICAgICAgICAgXAorICAgIHZpcnR1YWwgY29uc3QgYW5kcm9pZDo6U3RyaW5nMTYmIGdldEludGVyZmFjZURlc2NyaXB0b3IoKSBjb25zdDsgICAgXAogICAgIEkjI0lOVEVSRkFDRSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZpcnR1YWwgfkkjI0lOVEVSRkFDRSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCiAKICNkZWZpbmUgSU1QTEVNRU5UX01FVEFfSU5URVJGQUNFKElOVEVSRkFDRSwgTkFNRSkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBjb25zdCBTdHJpbmcxNiBJIyNJTlRFUkZBQ0U6OmRlc2NyaXB0b3IoTkFNRSk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBjb25zdCBTdHJpbmcxNiYgSSMjSU5URVJGQUNFOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkgY29uc3QgeyAgICAgIFwKKyAgICBjb25zdCBhbmRyb2lkOjpTdHJpbmcxNiBJIyNJTlRFUkZBQ0U6OmRlc2NyaXB0b3IoTkFNRSk7ICAgICAgICAgICAgIFwKKyAgICBjb25zdCBhbmRyb2lkOjpTdHJpbmcxNiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEkjI0lOVEVSRkFDRTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpIGNvbnN0IHsgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIEkjI0lOVEVSRkFDRTo6ZGVzY3JpcHRvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzcDxJIyNJTlRFUkZBQ0U+IEkjI0lOVEVSRkFDRTo6YXNJbnRlcmZhY2UoY29uc3Qgc3A8SUJpbmRlcj4mIG9iaikgIFwKKyAgICBhbmRyb2lkOjpzcDxJIyNJTlRFUkZBQ0U+IEkjI0lOVEVSRkFDRTo6YXNJbnRlcmZhY2UoICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvbnN0IGFuZHJvaWQ6OnNwPGFuZHJvaWQ6OklCaW5kZXI+JiBvYmopICAgICAgICAgICAgICAgICAgIFwKICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3A8SSMjSU5URVJGQUNFPiBpbnRyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYW5kcm9pZDo6c3A8SSMjSU5URVJGQUNFPiBpbnRyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKG9iaiAhPSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGludHIgPSBzdGF0aWNfY2FzdDxJIyNJTlRFUkZBQ0UqPiggICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICBvYmotPnF1ZXJ5TG9jYWxJbnRlcmZhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYmluZGVyL0lQQ1RocmVhZFN0YXRlLmggYi9pbmNsdWRlL2JpbmRlci9JUENUaHJlYWRTdGF0ZS5oCmluZGV4IDNhYjk4NWQuLjA0ZTI0ZDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYmluZGVyL0lQQ1RocmVhZFN0YXRlLmgKKysrIGIvaW5jbHVkZS9iaW5kZXIvSVBDVGhyZWFkU3RhdGUuaApAQCAtNDAsNiArNDAsOSBAQAogCiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIGdldENhbGxpbmdQaWQoKTsKICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgZ2V0Q2FsbGluZ1VpZCgpOworCisgICAgICAgICAgICB2b2lkICAgICAgICAgICAgICAgIHNldFN0cmljdE1vZGVQb2xpY3koaW50MzJfdCBwb2xpY3kpOworICAgICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICBnZXRTdHJpY3RNb2RlUG9saWN5KCkgY29uc3Q7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGludDY0X3QgICAgICAgICAgICAgY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgcmVzdG9yZUNhbGxpbmdJZGVudGl0eShpbnQ2NF90IHRva2VuKTsKQEAgLTEwOSw4ICsxMTIsOSBAQAogICAgICAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICBtTGFzdEVycm9yOwogICAgICAgICAgICAgcGlkX3QgICAgICAgICAgICAgICBtQ2FsbGluZ1BpZDsKICAgICAgICAgICAgIHVpZF90ICAgICAgICAgICAgICAgbUNhbGxpbmdVaWQ7CisgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICAgIG1TdHJpY3RNb2RlUG9saWN5OwogfTsKLSAgICAKKwogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2JpbmRlci9QYXJjZWwuaCBiL2luY2x1ZGUvYmluZGVyL1BhcmNlbC5oCmluZGV4IDY2YzM0YjIuLjJjYzRkYjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYmluZGVyL1BhcmNlbC5oCisrKyBiL2luY2x1ZGUvYmluZGVyL1BhcmNlbC5oCkBAIC01Niw5ICs1NiwxMiBAQAogCiAgICAgYm9vbCAgICAgICAgICAgICAgICBoYXNGaWxlRGVzY3JpcHRvcnMoKSBjb25zdDsKIAorICAgIC8vIFdyaXRlcyB0aGUgUlBDIGhlYWRlci4KICAgICBzdGF0dXNfdCAgICAgICAgICAgIHdyaXRlSW50ZXJmYWNlVG9rZW4oY29uc3QgU3RyaW5nMTYmIGludGVyZmFjZSk7CisgICAgLy8gUGFyc2VzIHRoZSBSUEMgaGVhZGVyLCByZXR1cm5pbmcgdHJ1ZSBpZiB0aGUgaW50ZXJmYWNlIG5hbWUKKyAgICAvLyBpbiB0aGUgaGVhZGVyIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGludGVyZmFjZSBmcm9tIHRoZSBjYWxsZXIuCiAgICAgYm9vbCAgICAgICAgICAgICAgICBlbmZvcmNlSW50ZXJmYWNlKGNvbnN0IFN0cmluZzE2JiBpbnRlcmZhY2UpIGNvbnN0OwotICAgIGJvb2wgICAgICAgICAgICAgICAgY2hlY2tJbnRlcmZhY2UoSUJpbmRlciopIGNvbnN0OyAgICAKKyAgICBib29sICAgICAgICAgICAgICAgIGNoZWNrSW50ZXJmYWNlKElCaW5kZXIqKSBjb25zdDsKIAogICAgIHZvaWQgICAgICAgICAgICAgICAgZnJlZURhdGEoKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhLmggYi9pbmNsdWRlL2NhbWVyYS9DYW1lcmEuaAppbmRleCBlZTJiMzBjLi45OTc0ZjJmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NhbWVyYS9DYW1lcmEuaAorKysgYi9pbmNsdWRlL2NhbWVyYS9DYW1lcmEuaApAQCAtOTMsNiArOTMsMzIgQEAKICAgICBDQU1FUkFfRVJST1JfU0VSVkVSX0RJRUQgPSAxMDAKIH07CiAKK2VudW0geworICAgIENBTUVSQV9GQUNJTkdfQkFDSyA9IDAsCisgICAgQ0FNRVJBX0ZBQ0lOR19GUk9OVCA9IDEgLyogVGhlIGNhbWVyYSBmYWNlcyB0byB0aGUgdXNlciAqLworfTsKKworc3RydWN0IENhbWVyYUluZm8geworCisgICAgLyoqCisgICAgICogVGhlIGRpcmVjdGlvbiB0aGF0IHRoZSBjYW1lcmEgZmFjZXMgdG8uIEl0IHNob3VsZCBiZQorICAgICAqIENBTUVSQV9GQUNJTkdfQkFDSyBvciBDQU1FUkFfRkFDSU5HX0ZST05ULgorICAgICAqLworICAgIGludCBmYWNpbmc7CisKKyAgICAvKioKKyAgICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIGNhbWVyYSBpbWFnZS4gVGhlIHZhbHVlIGlzIHRoZSBhbmdsZSB0aGF0IHRoZQorICAgICAqIGNhbWVyYSBpbWFnZSBuZWVkcyB0byBiZSByb3RhdGVkIGNsb2Nrd2lzZSBzbyBpdCBzaG93cyBjb3JyZWN0bHkgb24KKyAgICAgKiB0aGUgZGlzcGxheSBpbiBpdHMgbmF0dXJhbCBvcmllbnRhdGlvbi4gSXQgc2hvdWxkIGJlIDAsIDkwLCAxODAsIG9yIDI3MC4KKyAgICAgKgorICAgICAqIEZvciBleGFtcGxlLCBzdXBwb3NlIGEgZGV2aWNlIGhhcyBhIG5hdHVyYWxseSB0YWxsIHNjcmVlbiwgYnV0IHRoZSBjYW1lcmEKKyAgICAgKiBzZW5zb3IgaXMgbW91bnRlZCBpbiBsYW5kc2NhcGUuIElmIHRoZSB0b3Agc2lkZSBvZiB0aGUgY2FtZXJhIHNlbnNvciBpcworICAgICAqIGFsaWduZWQgd2l0aCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgZGlzcGxheSBpbiBuYXR1cmFsIG9yaWVudGF0aW9uLCB0aGUKKyAgICAgKiB2YWx1ZSBzaG91bGQgYmUgOTAuCisgICAgICovCisgICAgaW50IG9yaWVudGF0aW9uOworfTsKKwogY2xhc3MgSUNhbWVyYVNlcnZpY2U7CiBjbGFzcyBJQ2FtZXJhOwogY2xhc3MgU3VyZmFjZTsKQEAgLTExMyw3ICsxMzksMTAgQEAKIHB1YmxpYzoKICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBhIGNhbWVyYSBjbGllbnQgZnJvbSBhbiBleGlzdGluZyByZW1vdGUKICAgICBzdGF0aWMgIHNwPENhbWVyYT4gIGNyZWF0ZShjb25zdCBzcDxJQ2FtZXJhPiYgY2FtZXJhKTsKLSAgICBzdGF0aWMgIHNwPENhbWVyYT4gIGNvbm5lY3QoKTsKKyAgICBzdGF0aWMgIGludDMyX3QgICAgIGdldE51bWJlck9mQ2FtZXJhcygpOworICAgIHN0YXRpYyAgc3RhdHVzX3QgICAgZ2V0Q2FtZXJhSW5mbyhpbnQgY2FtZXJhSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDYW1lcmFJbmZvKiBjYW1lcmFJbmZvKTsKKyAgICBzdGF0aWMgIHNwPENhbWVyYT4gIGNvbm5lY3QoaW50IGNhbWVyYUlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH5DYW1lcmEoKTsKICAgICAgICAgICAgIHZvaWQgICAgICAgIGluaXQoKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhSGFyZHdhcmVJbnRlcmZhY2UuaCBiL2luY2x1ZGUvY2FtZXJhL0NhbWVyYUhhcmR3YXJlSW50ZXJmYWNlLmgKaW5kZXggZDg3N2M3NC4uMTUyOWRiNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhSGFyZHdhcmVJbnRlcmZhY2UuaAorKysgYi9pbmNsdWRlL2NhbWVyYS9DYW1lcmFIYXJkd2FyZUludGVyZmFjZS5oCkBAIC0yMTMsOCArMjEzLDE1IEBACiAgICAgdmlydHVhbCBzdGF0dXNfdCBkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncykgY29uc3QgPSAwOwogfTsKIAotLyoqIGZhY3RvcnkgZnVuY3Rpb24gdG8gaW5zdGFudGlhdGUgYSBjYW1lcmEgaGFyZHdhcmUgb2JqZWN0ICovCi1leHRlcm4gIkMiIHNwPENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlPiBvcGVuQ2FtZXJhSGFyZHdhcmUoKTsKKy8qKgorICogVGhlIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIHByb3ZpZGVkIGJ5IHRoZSBjYW1lcmEgSEFMLgorICoKKyAqIElmIGdldE51bWJlck9mQ2FtZXJhcygpIHJldHVybnMgTiwgdGhlIHZhbGlkIGNhbWVyYUlkIGZvciBnZXRDYW1lcmFJbmZvKCkKKyAqIGFuZCBvcGVuQ2FtZXJhSGFyZHdhcmUoKSBpcyAwIHRvIE4tMS4KKyAqLworZXh0ZXJuICJDIiBpbnQgSEFMX2dldE51bWJlck9mQ2FtZXJhcygpOworZXh0ZXJuICJDIiB2b2lkIEhBTF9nZXRDYW1lcmFJbmZvKGludCBjYW1lcmFJZCwgc3RydWN0IENhbWVyYUluZm8qIGNhbWVyYUluZm8pOworZXh0ZXJuICJDIiBzcDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gSEFMX29wZW5DYW1lcmFIYXJkd2FyZShpbnQgY2FtZXJhSWQpOwogCiB9OyAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhUGFyYW1ldGVycy5oIGIvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhUGFyYW1ldGVycy5oCmluZGV4IDVlYTgzYTUuLmUxMmE2OTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY2FtZXJhL0NhbWVyYVBhcmFtZXRlcnMuaAorKysgYi9pbmNsdWRlL2NhbWVyYS9DYW1lcmFQYXJhbWV0ZXJzLmgKQEAgLTY1LDEzICs2NSwxNSBAQAogICAgIC8vIFN1cHBvcnRlZCBwcmV2aWV3IGZyYW1lIHNpemVzIGluIHBpeGVscy4KICAgICAvLyBFeGFtcGxlIHZhbHVlOiAiODAweDYwMCw0ODB4MzIwIi4gUmVhZCBvbmx5LgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9TVVBQT1JURURfUFJFVklFV19TSVpFU1tdOwotICAgIC8vIFRoZSBpbWFnZSBmb3JtYXQgZm9yIHByZXZpZXcgZnJhbWVzLgorICAgIC8vIFRoZSBpbWFnZSBmb3JtYXQgZm9yIHByZXZpZXcgZnJhbWVzLiBTZWUgQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FIGluCisgICAgLy8gZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvY2FtZXJhL0NhbWVyYS5oLgogICAgIC8vIEV4YW1wbGUgdmFsdWU6ICJ5dXY0MjBzcCIgb3IgUElYRUxfRk9STUFUX1hYWCBjb25zdGFudHMuIFJlYWQvd3JpdGUuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgS0VZX1BSRVZJRVdfRk9STUFUW107CiAgICAgLy8gU3VwcG9ydGVkIGltYWdlIGZvcm1hdHMgZm9yIHByZXZpZXcgZnJhbWVzLgogICAgIC8vIEV4YW1wbGUgdmFsdWU6ICJ5dXY0MjBzcCx5dXY0MjJpLXl1eXYiLiBSZWFkIG9ubHkuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgS0VZX1NVUFBPUlRFRF9QUkVWSUVXX0ZPUk1BVFNbXTsKLSAgICAvLyBOdW1iZXIgb2YgcHJldmlldyBmcmFtZXMgcGVyIHNlY29uZC4KKyAgICAvLyBOdW1iZXIgb2YgcHJldmlldyBmcmFtZXMgcGVyIHNlY29uZC4gVGhpcyBpcyB0aGUgdGFyZ2V0IGZyYW1lIHJhdGUuIFRoZQorICAgIC8vIGFjdHVhbCBmcmFtZSByYXRlIGRlcGVuZHMgb24gdGhlIGRyaXZlci4KICAgICAvLyBFeGFtcGxlIHZhbHVlOiAiMTUiLiBSZWFkL3dyaXRlLgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9QUkVWSUVXX0ZSQU1FX1JBVEVbXTsKICAgICAvLyBTdXBwb3J0ZWQgbnVtYmVyIG9mIHByZXZpZXcgZnJhbWVzIHBlciBzZWNvbmQuCkBAIC04Myw3ICs4NSw4IEBACiAgICAgLy8gU3VwcG9ydGVkIGRpbWVuc2lvbnMgZm9yIGNhcHR1cmVkIHBpY3R1cmVzIGluIHBpeGVscy4KICAgICAvLyBFeGFtcGxlIHZhbHVlOiAiMjA0OHgxNTM2LDEwMjR4NzY4Ii4gUmVhZCBvbmx5LgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9TVVBQT1JURURfUElDVFVSRV9TSVpFU1tdOwotICAgIC8vIFRoZSBpbWFnZSBmb3JtYXQgZm9yIGNhcHR1cmVkIHBpY3R1cmVzLgorICAgIC8vIFRoZSBpbWFnZSBmb3JtYXQgZm9yIGNhcHR1cmVkIHBpY3R1cmVzLiBTZWUgQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFCisgICAgLy8gaW4gZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvY2FtZXJhL0NhbWVyYS5oLgogICAgIC8vIEV4YW1wbGUgdmFsdWU6ICJqcGVnIiBvciBQSVhFTF9GT1JNQVRfWFhYIGNvbnN0YW50cy4gUmVhZC93cml0ZS4KICAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfUElDVFVSRV9GT1JNQVRbXTsKICAgICAvLyBTdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cyBmb3IgY2FwdHVyZWQgcGljdHVyZXMuCkBAIC0xMTksMTQgKzEyMiwxNyBAQAogICAgIC8vIHNob3VsZCBub3Qgc2V0IGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyLgogICAgIC8vIEV4YW1wbGUgdmFsdWU6ICIwIiBvciAiOTAiIG9yICIxODAiIG9yICIyNzAiLiBXcml0ZSBvbmx5LgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9ST1RBVElPTltdOwotICAgIC8vIEdQUyBsYXRpdHVkZSBjb29yZGluYXRlLiBUaGlzIHdpbGwgYmUgc3RvcmVkIGluIEpQRUcgRVhJRiBoZWFkZXIuCi0gICAgLy8gRXhhbXBsZSB2YWx1ZTogIjI1LjAzMjE0NiIuIFdyaXRlIG9ubHkuCisgICAgLy8gR1BTIGxhdGl0dWRlIGNvb3JkaW5hdGUuIEdQU0xhdGl0dWRlIGFuZCBHUFNMYXRpdHVkZVJlZiB3aWxsIGJlIHN0b3JlZCBpbgorICAgIC8vIEpQRUcgRVhJRiBoZWFkZXIuCisgICAgLy8gRXhhbXBsZSB2YWx1ZTogIjI1LjAzMjE0NiIgb3IgIi0zMy40NjI4MDkiLiBXcml0ZSBvbmx5LgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9HUFNfTEFUSVRVREVbXTsKLSAgICAvLyBHUFMgbG9uZ2l0dWRlIGNvb3JkaW5hdGUuIFRoaXMgd2lsbCBiZSBzdG9yZWQgaW4gSlBFRyBFWElGIGhlYWRlci4KLSAgICAvLyBFeGFtcGxlIHZhbHVlOiAiMTIxLjU2NDQ0OCIuIFdyaXRlIG9ubHkuCisgICAgLy8gR1BTIGxvbmdpdHVkZSBjb29yZGluYXRlLiBHUFNMb25naXR1ZGUgYW5kIEdQU0xvbmdpdHVkZVJlZiB3aWxsIGJlIHN0b3JlZAorICAgIC8vIGluIEpQRUcgRVhJRiBoZWFkZXIuCisgICAgLy8gRXhhbXBsZSB2YWx1ZTogIjEyMS41NjQ0NDgiIG9yICItNzAuNjYwMjg2Ii4gV3JpdGUgb25seS4KICAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfR1BTX0xPTkdJVFVERVtdOwotICAgIC8vIEdQUyBhbHRpdHVkZS4gVGhpcyB3aWxsIGJlIHN0b3JlZCBpbiBKUEVHIEVYSUYgaGVhZGVyLgotICAgIC8vIEV4YW1wbGUgdmFsdWU6ICIyMS4wIi4gV3JpdGUgb25seS4KKyAgICAvLyBHUFMgYWx0aXR1ZGUuIEdQU0FsdGl0dWRlIGFuZCBHUFNBbHRpdHVkZVJlZiB3aWxsIGJlIHN0b3JlZCBpbiBKUEVHIEVYSUYKKyAgICAvLyBoZWFkZXIuCisgICAgLy8gRXhhbXBsZSB2YWx1ZTogIjIxLjAiIG9yICItNSIuIFdyaXRlIG9ubHkuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgS0VZX0dQU19BTFRJVFVERVtdOwogICAgIC8vIEdQUyB0aW1lc3RhbXAgKFVUQyBpbiBzZWNvbmRzIHNpbmNlIEphbnVhcnkgMSwgMTk3MCkuIFRoaXMgc2hvdWxkIGJlCiAgICAgLy8gc3RvcmVkIGluIEpQRUcgRVhJRiBoZWFkZXIuCkBAIC0yMjEsOSArMjI3LDQyIEBACiAgICAgLy8gRXhhbXBsZSB2YWx1ZTogInRydWUiLiBSZWFkIG9ubHkuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgS0VZX1NNT09USF9aT09NX1NVUFBPUlRFRFtdOwogCisgICAgLy8gVGhlIGRpc3RhbmNlcyAoaW4gbWV0ZXJzKSBmcm9tIHRoZSBjYW1lcmEgdG8gd2hlcmUgYW4gb2JqZWN0IGFwcGVhcnMgdG8KKyAgICAvLyBiZSBpbiBmb2N1cy4gVGhlIG9iamVjdCBpcyBzaGFycGVzdCBhdCB0aGUgb3B0aW1hbCBmb2N1cyBkaXN0YW5jZS4gVGhlCisgICAgLy8gZGVwdGggb2YgZmllbGQgaXMgdGhlIGZhciBmb2N1cyBkaXN0YW5jZSBtaW51cyBuZWFyIGZvY3VzIGRpc3RhbmNlLgorICAgIC8vCisgICAgLy8gQXBwbGljYXRpb25zIGNhbiByZWFkIHRoaXMgcGFyYW1ldGVyIGFueXRpbWUgdG8gZ2V0IHRoZSBsYXRlc3QgZm9jdXMKKyAgICAvLyBkaXN0YW5jZXMuIElmIHRoZSBmb2N1cyBtb2RlIGlzIEZPQ1VTX01PREVfRURPRiwgdGhlIHZhbHVlcyBtYXkgYmUgYWxsCisgICAgLy8gMCwgd2hpY2ggbWVhbnMgZm9jdXMgZGlzdGFuY2UgaXMgbm90IGFwcGxpY2FibGUuIElmIHRoZSBmb2N1cyBtb2RlIGlzCisgICAgLy8gRk9DVVNfTU9ERV9DT05USU5VT1VTIGFuZCBhdXRvZm9jdXMgaGFzIHN0YXJ0ZWQsIGZvY3VzIGRpc3RhbmNlcyBtYXkKKyAgICAvLyBjaGFuZ2UgZnJvbSB0aW1lIHRvIHRpbWUuCisgICAgLy8KKyAgICAvLyBGYXIgZm9jdXMgZGlzdGFuY2UgPiBvcHRpbWFsIGZvY3VzIGRpc3RhbmNlID4gbmVhciBmb2N1cyBkaXN0YW5jZS4gSWYKKyAgICAvLyB0aGUgZmFyIGZvY3VzIGRpc3RhbmNlIGlzIGluZmluaXR5LCB0aGUgdmFsdWUgc2hvdWxkIGJlICJJbmZpbml0eSIgKGNhc2UKKyAgICAvLyBzZW5zaXRpdmUpLiBUaGUgZm9ybWF0IGlzIHRocmVlIGZsb2F0IHZhbHVlcyBzZXBhcmF0ZWQgYnkgY29tbWFzLiBUaGUKKyAgICAvLyBmaXJzdCBpcyBuZWFyIGZvY3VzIGRpc3RhbmNlLiBUaGUgc2Vjb25kIGlzIG9wdGltYWwgZm9jdXMgZGlzdGFuY2UuIFRoZQorICAgIC8vIHRoaXJkIGlzIGZhciBmb2N1cyBkaXN0YW5jZS4KKyAgICAvLyBFeGFtcGxlIHZhbHVlOiAiMC45NSwxLjksSW5maW5pdHkiIG9yICIwLjA0OSwwLjA1LDAuMDUxIi4gUmVhZCBvbmx5LgorICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9GT0NVU19ESVNUQU5DRVNbXTsKKworICAgIC8vIFRoZSBpbWFnZSBmb3JtYXQgZm9yIHZpZGVvIGZyYW1lcy4gU2VlIENBTUVSQV9NU0dfVklERU9fRlJBTUUgaW4KKyAgICAvLyBmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhLmguCisgICAgLy8gRXhhbXBsZSB2YWx1ZTogInl1djQyMHNwIiBvciBQSVhFTF9GT1JNQVRfWFhYIGNvbnN0YW50cy4gUmVhZCBvbmx5LgorICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9WSURFT19GUkFNRV9GT1JNQVRbXTsKKworICAgIC8vIE1ldGVyaW5nIG1vZGUuIFRoaXMgYWZmZWN0cyBob3cgY2FtZXJhIGRldGVybWluZXMgZXhwb3N1cmUuCisgICAgLy8gRXhhbXBsZSB2YWx1ZTogInNwb3QiIG9yIE1FVEVSSU5HX01PREVfWFhYIGNvbnN0YW50cy4gUmVhZC93cml0ZS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfTUVURVJJTkdfTU9ERVtdOworICAgIC8vIFN1cHBvcnRlZCBtZXRlcmluZyBtb2Rlcy4KKyAgICAvLyBFeGFtcGxlIHZhbHVlOiAiY2VudGVyLXdlaWdodGVkLGZyYW1lLWF2ZXJhZ2Usc3BvdCIuIFJlYWQgb25seS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfU1VQUE9SVEVEX01FVEVSSU5HX01PREVTW107CisKICAgICAvLyBWYWx1ZSBmb3IgS0VZX1pPT01fU1VQUE9SVEVEIG9yIEtFWV9TTU9PVEhfWk9PTV9TVVBQT1JURUQuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgVFJVRVtdOwogCisgICAgLy8gVmFsdWUgZm9yIEtFWV9GT0NVU19ESVNUQU5DRVMuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgRk9DVVNfRElTVEFOQ0VfSU5GSU5JVFlbXTsKKwogICAgIC8vIFZhbHVlcyBmb3Igd2hpdGUgYmFsYW5jZSBzZXR0aW5ncy4KICAgICBzdGF0aWMgY29uc3QgY2hhciBXSElURV9CQUxBTkNFX0FVVE9bXTsKICAgICBzdGF0aWMgY29uc3QgY2hhciBXSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVFtdOwpAQCAtMzA5LDYgKzM0OCwyMSBAQAogICAgIC8vIGNvbnRpbnVvdXNseS4gQXBwbGljYXRpb25zIHNob3VsZCBub3QgY2FsbAogICAgIC8vIENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlLmF1dG9Gb2N1cyBpbiB0aGlzIG1vZGUuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgRk9DVVNfTU9ERV9FRE9GW107CisgICAgLy8gQ29udGludW91cyBmb2N1cyBtb2RlLiBUaGUgY2FtZXJhIGNvbnRpbnVvdXNseSB0cmllcyB0byBmb2N1cy4gVGhpcyBpcworICAgIC8vIGlkZWFsIGZvciBzaG9vdGluZyB2aWRlbyBvciBzaG9vdGluZyBwaG90byBvZiBtb3Zpbmcgb2JqZWN0LiBDb250aW51b3VzCisgICAgLy8gZm9jdXMgc3RhcnRzIHdoZW4gQ2FtZXJhSGFyZHdhcmVJbnRlcmZhY2UuYXV0b0ZvY3VzIGlzIGNhbGxlZC4gRm9jdXMKKyAgICAvLyBjYWxsYmFjayB3aWxsIGJlIG9ubHkgY2FsbGVkIG9uY2UgYXMgc29vbiBhcyB0aGUgcGljdHVyZSBpcyBpbiBmb2N1cy4KKyAgICBzdGF0aWMgY29uc3QgY2hhciBGT0NVU19NT0RFX0NPTlRJTlVPVVNbXTsKKworICAgIC8vIFRoZSBjYW1lcmEgZGV0ZXJtaW5lcyB0aGUgZXhwb3N1cmUgYnkgZ2l2aW5nIG1vcmUgd2VpZ2h0IHRvIHRoZQorICAgIC8vIGNlbnRyYWwgcGFydCBvZiB0aGUgc2NlbmUuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgTUVURVJJTkdfTU9ERV9DRU5URVJfV0VJR0hURURbXTsKKyAgICAvLyBUaGUgY2FtZXJhIGRldGVybWluZXMgdGhlIGV4cG9zdXJlIGJ5IGF2ZXJhZ2luZyB0aGUgZW50aXJlIHNjZW5lLAorICAgIC8vIGdpdmluZyBubyB3ZWlnaHRpbmcgdG8gYW55IHBhcnRpY3VsYXIgYXJlYS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciBNRVRFUklOR19NT0RFX0ZSQU1FX0FWRVJBR0VbXTsKKyAgICAvLyBUaGUgY2FtZXJhIGRldGVybWluZXMgdGhlIGV4cG9zdXJlIGJ5IGEgdmVyeSBzbWFsbCBhcmVhIG9mIHRoZSBzY2VuZSwKKyAgICAvLyB0eXBpY2FsbHkgdGhlIGNlbnRlci4KKyAgICBzdGF0aWMgY29uc3QgY2hhciBNRVRFUklOR19NT0RFX1NQT1RbXTsKIAogcHJpdmF0ZToKICAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8U3RyaW5nOCxTdHJpbmc4PiAgICBtTWFwOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jYW1lcmEvSUNhbWVyYVNlcnZpY2UuaCBiL2luY2x1ZGUvY2FtZXJhL0lDYW1lcmFTZXJ2aWNlLmgKaW5kZXggODJiMTI4My4uN2Q3MGMxZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jYW1lcmEvSUNhbWVyYVNlcnZpY2UuaAorKysgYi9pbmNsdWRlL2NhbWVyYS9JQ2FtZXJhU2VydmljZS5oCkBAIC0zMCwxMyArMzAsMTkgQEAKIHsKIHB1YmxpYzoKICAgICBlbnVtIHsKLSAgICAgICAgQ09OTkVDVCA9IElCaW5kZXI6OkZJUlNUX0NBTExfVFJBTlNBQ1RJT04sCisgICAgICAgIEdFVF9OVU1CRVJfT0ZfQ0FNRVJBUyA9IElCaW5kZXI6OkZJUlNUX0NBTExfVFJBTlNBQ1RJT04sCisgICAgICAgIEdFVF9DQU1FUkFfSU5GTywKKyAgICAgICAgQ09OTkVDVAogICAgIH07CiAKIHB1YmxpYzoKICAgICBERUNMQVJFX01FVEFfSU5URVJGQUNFKENhbWVyYVNlcnZpY2UpOwogCi0gICAgdmlydHVhbCBzcDxJQ2FtZXJhPiAgICAgY29ubmVjdChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50KSA9IDA7CisgICAgdmlydHVhbCBpbnQzMl90ICAgICAgICAgZ2V0TnVtYmVyT2ZDYW1lcmFzKCkgPSAwOworICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIGdldENhbWVyYUluZm8oaW50IGNhbWVyYUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IENhbWVyYUluZm8qIGNhbWVyYUluZm8pID0gMDsKKyAgICB2aXJ0dWFsIHNwPElDYW1lcmE+ICAgICBjb25uZWN0KGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjYW1lcmFDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FtZXJhSWQpID0gMDsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvQXVkaW9FZmZlY3QuaCBiL2luY2x1ZGUvbWVkaWEvQXVkaW9FZmZlY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjY3MGYzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9BdWRpb0VmZmVjdC5oCkBAIC0wLDAgKzEsNDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX0FVRElPRUZGRUNUX0gKKyNkZWZpbmUgQU5EUk9JRF9BVURJT0VGRkVDVF9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPG1lZGlhL0lBdWRpb0ZsaW5nZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9JRWZmZWN0Lmg+CisjaW5jbHVkZSA8bWVkaWEvSUVmZmVjdENsaWVudC5oPgorI2luY2x1ZGUgPG1lZGlhL0VmZmVjdEFwaS5oPgorI2luY2x1ZGUgPG1lZGlhL0F1ZGlvU3lzdGVtLmg+CisKKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvRXJyb3JzLmg+CisjaW5jbHVkZSA8YmluZGVyL0lJbnRlcmZhY2UuaD4KKworCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgZWZmZWN0X3BhcmFtX2NibGtfdDsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBBdWRpb0VmZmVjdCA6IHB1YmxpYyBSZWZCYXNlCit7CitwdWJsaWM6CisKKyAgICAvKgorICAgICAqICBTdGF0aWMgbWV0aG9kcyBmb3IgZWZmZWN0IGxpYnJhcmllcyBtYW5hZ2VtZW50LgorICAgICAqLworCisgICAgLyoKKyAgICAgKiAgIExvYWRzIHRoZSBlZmZlY3QgbGlicmFyeSB3aGljaCBwYXRoIGlzIGdpdmVuIGFzIGZpcnN0IGFyZ3VtZW50LgorICAgICAqICAgVGhpcyBtdXN0IGJlIHRoZSBmdWxsIHBhdGggb2YgYSBkeW5hbWljIGxpYnJhcnkgKC5zbykgaW1wbGVtZW50aW5nIG9uZSBvcgorICAgICAqICAgbW9yZSBlZmZlY3QgZW5naW5lcyBhbmQgZXhwb3NpbmcgdGhlIGVmZmVjdCBsaWJyYXJ5IGludGVyZmFjZSBkZXNjcmliZWQgaW4KKyAgICAgKiAgIEVmZmVjdEFwaS5oLiBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGhhbmRsZSBvbiB0aGUgbGlicmFyeSBmb3IgdXNlIGJ5CisgICAgICogICBmdXJ0aGVyIGNhbGwgdG8gdW5sb2FkRWZmZWN0TGlicmFyeSgpIHRvIHVubG9hZCB0aGUgbGlicmFyeS4KKyAgICAgKgorICAgICAqICAgUGFyYW1ldGVyczoKKyAgICAgKiAgICAgICAgICBsaWJQYXRoOiAgICBmdWxsIHBhdGggb2YgdGhlIGR5bmFtaWMgbGlicmFyeSBmaWxlIGluIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAgKiAgICAgICAgICBoYW5kbGU6ICAgICBhZGRyZXNzIHdoZXJlIHRvIHJldHVybiB0aGUgbGlicmFyeSBoYW5kbGUKKyAgICAgKgorICAgICAqICAgUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogICAgICAgICAgTk9fRVJST1IgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisgICAgICogICAgICAgICAgUEVSTUlTU0lPTl9ERU5JRUQgY291bGQgbm90IGdldCBBdWRpb0ZsaW5nZXIgaW50ZXJmYWNlIG9yCisgICAgICogICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGNvbmZpZ3VyZSBhdWRpbworICAgICAqICAgICAgICAgIE5PX0lOSVQgICAgIGVmZmVjdCBmYWN0b3J5IG5vdCBpbml0aWFsaXplZCBvcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgY291bGQgbm90IGJlIGxvYWRlZCBvcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgZG9lcyBub3QgaW1wbGVtZW50IHJlcXVpcmVkIGZ1bmN0aW9ucworICAgICAqICAgICAgICAgIEJBRF9WQUxVRSAgIGludmFsaWQgbGliUGF0aCBzdHJpbmcgb3IgaGFuZGxlCisgICAgICoKKyAgICAgKiAgIFJldHVybmVkIHZhbHVlOgorICAgICAqICAgICAgICAgICpoYW5kbGUgdXBkYXRlZCB3aXRoIGxpYnJhcnkgaGFuZGxlCisgICAgICovCisgICAgc3RhdGljIHN0YXR1c190IGxvYWRFZmZlY3RMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKTsKKworICAgIC8qCisgICAgICogICBVbmxvYWRzIHRoZSBlZmZlY3QgbGlicmFyeSB3aGljaCBoYW5kbGUgaXMgZ2l2ZW4gYXMgYXJndW1lbnQuCisgICAgICoKKyAgICAgKiAgIFBhcmFtZXRlcnM6CisgICAgICogICAgICAgICAgaGFuZGxlOiBsaWJyYXJ5IGhhbmRsZQorICAgICAqCisgICAgICogICBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAgKiAgICAgICAgICBOT19FUlJPUiAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKyAgICAgKiAgICAgICAgICBQRVJNSVNTSU9OX0RFTklFRCBjb3VsZCBub3QgZ2V0IEF1ZGlvRmxpbmdlciBpbnRlcmZhY2Ugb3IKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gY29uZmlndXJlIGF1ZGlvCisgICAgICogICAgICAgICAgTk9fSU5JVCAgICAgZWZmZWN0IGZhY3Rvcnkgbm90IGluaXRpYWxpemVkCisgICAgICogICAgICAgICAgQkFEX1ZBTFVFICAgaW52YWxpZCBoYW5kbGUKKyAgICAgKi8KKyAgICBzdGF0aWMgc3RhdHVzX3QgdW5sb2FkRWZmZWN0TGlicmFyeShpbnQgaGFuZGxlKTsKKworICAgIC8qCisgICAgICogIFN0YXRpYyBtZXRob2RzIGZvciBlZmZlY3RzIGVudW1lcmF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWZmZWN0cyBhdmFpbGFibGUuIFRoaXMgbWV0aG9kIHRvZ2V0aGVyCisgICAgICogd2l0aCBxdWVyeUVmZmVjdCgpIGlzIHVzZWQgdG8gZW51bWVyYXRlIGFsbCBlZmZlY3RzOgorICAgICAqIFRoZSBlbnVtZXJhdGlvbiBzZXF1ZW5jZSBpczoKKyAgICAgKiAgICAgIHF1ZXJ5TnVtYmVyRWZmZWN0cygmbnVtX2VmZmVjdHMpOworICAgICAqICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9lZmZlY3RzOyBpKyspCisgICAgICogICAgICAgICAgcXVlcnlFZmZlY3QoaSwuLi4pOworICAgICAqCisgICAgICogUGFyYW1ldGVyczoKKyAgICAgKiAgICAgIG51bUVmZmVjdHM6ICAgIGFkZHJlc3Mgd2hlcmUgdGhlIG51bWJlciBvZiBlZmZlY3RzIHNob3VsZCBiZSByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIFJldHVybmVkIHN0YXR1cyAoZnJvbSB1dGlscy9FcnJvcnMuaCkgY2FuIGJlOgorICAgICAqICAgICAgTk9fRVJST1IgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKyAgICAgKiAgICAgIFBFUk1JU1NJT05fREVOSUVEIGNvdWxkIG5vdCBnZXQgQXVkaW9GbGluZ2VyIGludGVyZmFjZQorICAgICAqICAgICAgTk9fSU5JVCAgICBlZmZlY3QgbGlicmFyeSBmYWlsZWQgdG8gaW5pdGlhbGl6ZQorICAgICAqICAgICAgQkFEX1ZBTFVFICBpbnZhbGlkIG51bUVmZmVjdHMgcG9pbnRlcgorICAgICAqCisgICAgICogUmV0dXJuZWQgdmFsdWUKKyAgICAgKiAgICpudW1FZmZlY3RzOiAgICAgdXBkYXRlZCB3aXRoIG51bWJlciBvZiBlZmZlY3RzIGF2YWlsYWJsZQorICAgICAqLworICAgIHN0YXRpYyBzdGF0dXNfdCBxdWVyeU51bWJlckVmZmVjdHModWludDMyX3QgKm51bUVmZmVjdHMpOworCisgICAgLyoKKyAgICAgKiBSZXR1cm5zIGFuIGVmZmVjdCBkZXNjcmlwdG9yIGR1cmluZyBlZmZlY3QKKyAgICAgKiBlbnVtZXJhdGlvbi4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogICAgICBpbmRleDogICAgICBpbmRleCBvZiB0aGUgcXVlcmllZCBlZmZlY3QuCisgICAgICogICAgICBkZXNjcmlwdG9yOiBhZGRyZXNzIHdoZXJlIHRoZSBlZmZlY3QgZGVzY3JpcHRvciBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAgKiAgICAgIE5PX0VSUk9SICAgICAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKyAgICAgKiAgICAgIFBFUk1JU1NJT05fREVOSUVEIGNvdWxkIG5vdCBnZXQgQXVkaW9GbGluZ2VyIGludGVyZmFjZQorICAgICAqICAgICAgTk9fSU5JVCAgICAgICAgIGVmZmVjdCBsaWJyYXJ5IGZhaWxlZCB0byBpbml0aWFsaXplCisgICAgICogICAgICBCQURfVkFMVUUgICAgICAgaW52YWxpZCBkZXNjcmlwdG9yIHBvaW50ZXIgb3IgaW5kZXgKKyAgICAgKiAgICAgIElOVkFMSURfT1BFUkFUSU9OICBlZmZlY3QgbGlzdCBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IGV4ZWN1dGlvbiBvZiBxdWVyeU51bWJlckVmZmVjdHMoKQorICAgICAqCisgICAgICogUmV0dXJuZWQgdmFsdWUKKyAgICAgKiAgICpkZXNjcmlwdG9yOiAgICAgdXBkYXRlZCB3aXRoIGVmZmVjdCBkZXNjcmlwdG9yCisgICAgICovCisgICAgc3RhdGljIHN0YXR1c190IHF1ZXJ5RWZmZWN0KHVpbnQzMl90IGluZGV4LCBlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjcmlwdG9yKTsKKworCisgICAgLyoKKyAgICAgKiBSZXR1cm5zIHRoZSBkZXNjcmlwdG9yIGZvciB0aGUgc3BlY2lmaWVkIGVmZmVjdCB1dWlkLgorICAgICAqCisgICAgICogUGFyYW1ldGVyczoKKyAgICAgKiAgICAgIHV1aWQ6ICAgICAgIHBvaW50ZXIgdG8gZWZmZWN0IHV1aWQuCisgICAgICogICAgICBkZXNjcmlwdG9yOiBhZGRyZXNzIHdoZXJlIHRoZSBlZmZlY3QgZGVzY3JpcHRvciBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAgKiAgICAgIE5PX0VSUk9SICAgICAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKyAgICAgKiAgICAgIFBFUk1JU1NJT05fREVOSUVEIGNvdWxkIG5vdCBnZXQgQXVkaW9GbGluZ2VyIGludGVyZmFjZQorICAgICAqICAgICAgTk9fSU5JVCAgICAgICAgIGVmZmVjdCBsaWJyYXJ5IGZhaWxlZCB0byBpbml0aWFsaXplCisgICAgICogICAgICBCQURfVkFMVUUgICAgICAgaW52YWxpZCB1dWlkIG9yIGRlc2NyaXB0b3IgcG9pbnRlcnMKKyAgICAgKiAgICAgIE5BTUVfTk9UX0ZPVU5EICBubyBlZmZlY3Qgd2l0aCB0aGlzIHV1aWQgZm91bmQKKyAgICAgKgorICAgICAqIFJldHVybmVkIHZhbHVlCisgICAgICogICAqZGVzY3JpcHRvciB1cGRhdGVkIHdpdGggZWZmZWN0IGRlc2NyaXB0b3IKKyAgICAgKi8KKyAgICBzdGF0aWMgc3RhdHVzX3QgZ2V0RWZmZWN0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICp1dWlkLCBlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjcmlwdG9yKTsKKworCisgICAgLyoKKyAgICAgKiBFdmVudHMgdXNlZCBieSBjYWxsYmFjayBmdW5jdGlvbiAoZWZmZWN0X2NhbGxiYWNrX3QpLgorICAgICAqLworICAgIGVudW0gZXZlbnRfdHlwZSB7CisgICAgICAgIEVWRU5UX0NPTlRST0xfU1RBVFVTX0NIQU5HRUQgPSAwLAorICAgICAgICBFVkVOVF9FTkFCTEVfU1RBVFVTX0NIQU5HRUQgPSAxLAorICAgICAgICBFVkVOVF9QQVJBTUVURVJfQ0hBTkdFRCA9IDIsCisgICAgICAgIEVWRU5UX0VSUk9SID0gMworICAgIH07CisKKyAgICAvKiBDYWxsYmFjayBmdW5jdGlvbiBub3RpZnlpbmcgY2xpZW50IGFwcGxpY2F0aW9uIG9mIGEgY2hhbmdlIGluIGVmZmVjdCBlbmdpbmUgc3RhdGUgb3IKKyAgICAgKiBjb25maWd1cmF0aW9uLgorICAgICAqIEFuIGVmZmVjdCBlbmdpbmUgY2FuIGJlIHNoYXJlZCBieSBzZXZlcmFsIGFwcGxpY2F0aW9ucyBidXQgb25seSBvbmUgaGFzIHRoZSBjb250cm9sCisgICAgICogb2YgdGhlIGVuZ2luZSBhY3Rpdml0eSBhbmQgY29uZmlndXJhdGlvbiBhdCBhIHRpbWUuCisgICAgICogVGhlIEVWRU5UX0NPTlRST0xfU1RBVFVTX0NIQU5HRUQgZXZlbnQgaXMgcmVjZWl2ZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBsb3NlcyBvcgorICAgICAqIHJldHJpZXZlcyB0aGUgY29udHJvbCBvZiB0aGUgZWZmZWN0IGVuZ2luZS4gTG9zcyBvZiBjb250cm9sIGhhcHBlbnMKKyAgICAgKiBpZiBhbm90aGVyIGFwcGxpY2F0aW9uIHJlcXVlc3RzIHRoZSB1c2Ugb2YgdGhlIGVuZ2luZSBieSBjcmVhdGluZyBhbiBBdWRpb0VmZmVjdCBmb3IKKyAgICAgKiB0aGUgc2FtZSBlZmZlY3QgdHlwZSBidXQgd2l0aCBhIGhpZ2hlciBwcmlvcml0eS4gQ29udHJvbCBpcyByZXR1cm5lZCB3aGVuIHRoZQorICAgICAqIGFwcGxpY2F0aW9uIGhhdmluZyB0aGUgY29udHJvbCBkZWxldGVzIGl0cyBBdWRpb0VmZmVjdCBvYmplY3QuCisgICAgICogVGhlIEVWRU5UX0VOQUJMRV9TVEFUVVNfQ0hBTkdFRCBldmVudCBpcyByZWNlaXZlZCBieSBhbGwgYXBwbGljYXRpb25zIG5vdCBoYXZpbmcgdGhlCisgICAgICogY29udHJvbCBvZiB0aGUgZWZmZWN0IGVuZ2luZSB3aGVuIHRoZSBlZmZlY3QgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgICAgKiBUaGUgRVZFTlRfUEFSQU1FVEVSX0NIQU5HRUQgZXZlbnQgaXMgcmVjZWl2ZWQgYnkgYWxsIGFwcGxpY2F0aW9ucyBub3QgaGF2aW5nIHRoZQorICAgICAqIGNvbnRyb2wgb2YgdGhlIGVmZmVjdCBlbmdpbmUgd2hlbiBhbiBlZmZlY3QgcGFyYW1ldGVyIGlzIGNoYW5nZWQuCisgICAgICogVGhlIEVWRU5UX0VSUk9SIGV2ZW50IGlzIHJlY2VpdmVkIHdoZW4gdGhlIG1lZGlhIHNlcnZlciBwcm9jZXNzIGRpZXMuCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqCisgICAgICogZXZlbnQ6ICAgdHlwZSBvZiBldmVudCBub3RpZmllZCAoc2VlIGVudW0gQXVkaW9FZmZlY3Q6OmV2ZW50X3R5cGUpLgorICAgICAqIHVzZXI6ICAgIFBvaW50ZXIgdG8gY29udGV4dCBmb3IgdXNlIGJ5IHRoZSBjYWxsYmFjayByZWNlaXZlci4KKyAgICAgKiBpbmZvOiAgICBQb2ludGVyIHRvIG9wdGlvbmFsIHBhcmFtZXRlciBhY2NvcmRpbmcgdG8gZXZlbnQgdHlwZToKKyAgICAgKiAgLSBFVkVOVF9DT05UUk9MX1NUQVRVU19DSEFOR0VEOiAgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGNvbnRyb2wgaXMgZ3JhbnRlZCAodHJ1ZSkKKyAgICAgKiAgb3Igc3RvbGVuIChmYWxzZSkuCisgICAgICogIC0gRVZFTlRfRU5BQkxFX1NUQVRVU19DSEFOR0VEOiBib29sZWFuIGluZGljYXRpbmcgaWYgZWZmZWN0IGlzIG5vdyBlbmFibGVkICh0cnVlKQorICAgICAqICBvciBkaXNhYmxlZCAoZmFsc2UpLgorICAgICAqICAtIEVWRU5UX1BBUkFNRVRFUl9DSEFOR0VEOiBwb2ludGVyIHRvIGEgZWZmZWN0X3BhcmFtX3Qgc3RydWN0dXJlLgorICAgICAqICAtIEVWRU5UX0VSUk9SOiAgc3RhdHVzX3QgaW5kaWNhdGluZyB0aGUgZXJyb3IgKERFQURfT0JKRUNUIHdoZW4gbWVkaWEgc2VydmVyIGRpZXMpLgorICAgICAqLworCisgICAgdHlwZWRlZiB2b2lkICgqZWZmZWN0X2NhbGxiYWNrX3QpKGludDMyX3QgZXZlbnQsIHZvaWQqIHVzZXIsIHZvaWQgKmluZm8pOworCisKKyAgICAvKiBDb25zdHJ1Y3Rvci4KKyAgICAgKiBBdWRpb0VmZmVjdCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgYW5kIGNvbnRyb2xsaW5nIGFuIGVmZmVjdCBlbmdpbmUgZnJvbQorICAgICAqIHRoZSBhcHBsaWNhdGlvbiBwcm9jZXNzLiBDcmVhdGluZyBhbiBBdWRpb0VmZmVjdCBvYmplY3Qgd2lsbCBjcmVhdGUgdGhlIGVmZmVjdCBlbmdpbmUKKyAgICAgKiBpbiB0aGUgQXVkaW9GbGluZ2VyIGlmIG5vIGVuZ2luZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgZXhpc3RzLiBJZiBvbmUgZXhpc3RzLCB0aGlzIGVuZ2luZQorICAgICAqIHdpbGwgYmUgdXNlZC4gVGhlIGFwcGxpY2F0aW9uIGNyZWF0aW5nIHRoZSBBdWRpb0VmZmVjdCBvYmplY3QgKG9yIGEgZGVyaXZlZCBjbGFzcyBsaWtlCisgICAgICogUmV2ZXJiIGZvciBpbnN0YW5jZSkgd2lsbCBlaXRoZXIgcmVjZWl2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lIG9yIG5vdCwgZGVwZW5kaW5nCisgICAgICogb24gdGhlIHByaW9yaXR5IHBhcmFtZXRlci4gSWYgcHJpb3JpdHkgaXMgaGlnaGVyIHRoYW4gdGhlIHByaW9yaXR5IHVzZWQgYnkgdGhlIGN1cnJlbnQKKyAgICAgKiBlZmZlY3QgZW5naW5lIG93bmVyLCB0aGUgY29udHJvbCB3aWxsIGJlIHRyYW5zZmVyZWQgdG8gdGhlIG5ldyBhcHBsaWNhdGlvbi4gT3RoZXJ3aXNlCisgICAgICogY29udHJvbCB3aWxsIHJlbWFpbiB0byB0aGUgcHJldmlvdXMgYXBwbGljYXRpb24uIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBhcHBsaWNhdGlvbiB3aWxsIGJlCisgICAgICogbm90aWZpZWQgb2YgY2hhbmdlcyBpbiBlZmZlY3QgZW5naW5lIHN0YXRlIG9yIGNvbnRyb2wgb3duZXJzaGlwIGJ5IHRoZSBlZmZlY3QgY2FsbGJhY2suCisgICAgICogQWZ0ZXIgY3JlYXRpbmcgdGhlIEF1ZGlvRWZmZWN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBjYWxsIHRoZSBpbml0Q2hlY2soKSBtZXRob2QgYW5kCisgICAgICogY2hlY2sgdGhlIGNyZWF0aW9uIHN0YXR1cyBiZWZvcmUgdHJ5aW5nIHRvIGNvbnRyb2wgdGhlIGVmZmVjdCBlbmdpbmUgKHNlZSBpbml0Q2hlY2soKSkuCisgICAgICogSWYgdGhlIGVmZmVjdCBpcyB0byBiZSBhcHBsaWVkIHRvIGFuIEF1ZGlvVHJhY2sgb3IgTWVkaWFQbGF5ZXIgb25seSB0aGUgYXBwbGljYXRpb24KKyAgICAgKiBtdXN0IHNwZWNpZnkgdGhlIGF1ZGlvIHNlc3Npb24gSUQgY29ycmVzcG9uZGluZyB0byB0aGlzIHBsYXllci4KKyAgICAgKi8KKworICAgIC8qIFNpbXBsZSBDb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBBdWRpb0VmZmVjdCgpOworCisKKyAgICAvKiBDb25zdHJ1Y3Rvci4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICoKKyAgICAgKiB0eXBlOiAgdHlwZSBvZiBlZmZlY3QgY3JlYXRlZDogY2FuIGJlIG51bGwgaWYgdXVpZCBpcyBzcGVjaWZpZWQuIFRoaXMgY29ycmVzcG9uZHMgdG8KKyAgICAgKiAgICAgICAgdGhlIE9wZW5TTCBFUyBpbnRlcmZhY2UgaW1wbGVtZW50ZWQgYnkgdGhpcyBlZmZlY3QuCisgICAgICogdXVpZDogIFV1aWQgb2YgZWZmZWN0IGNyZWF0ZWQ6IGNhbiBiZSBudWxsIGlmIHR5cGUgaXMgc3BlY2lmaWVkLiBUaGlzIHV1aWQgY29ycmVzcG9uZHMgdG8KKyAgICAgKiAgICAgICAgYSBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uIG9mIGFuIGVmZmVjdCB0eXBlLgorICAgICAqIHByaW9yaXR5OiAgICByZXF1ZXN0ZWQgcHJpb3JpdHkgZm9yIGVmZmVjdCBjb250cm9sOiB0aGUgcHJpb3JpdHkgbGV2ZWwgY29ycmVzcG9uZHMgdG8gdGhlCisgICAgICogICAgICB2YWx1ZSBvZiBwcmlvcml0eSBwYXJhbWV0ZXI6IG5lZ2F0aXZlIHZhbHVlcyBpbmRpY2F0ZSBsb3dlciBwcmlvcml0aWVzLCBwb3NpdGl2ZSB2YWx1ZXMKKyAgICAgKiAgICAgIGhpZ2hlciBwcmlvcml0aWVzLCAwIGJlaW5nIHRoZSBub3JtYWwgcHJpb3JpdHkuCisgICAgICogY2JmOiAgICAgICAgIG9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIChzZWUgZWZmZWN0X2NhbGxiYWNrX3QpCisgICAgICogdXNlcjogICAgICAgIHBvaW50ZXIgdG8gY29udGV4dCBmb3IgdXNlIGJ5IHRoZSBjYWxsYmFjayByZWNlaXZlci4KKyAgICAgKiBzZXNzaW9uSUQ6ICAgYXVkaW8gc2Vzc2lvbiB0aGlzIGVmZmVjdCBpcyBhc3NvY2lhdGVkIHRvLiBJZiAwLCB0aGUgZWZmZWN0IHdpbGwgYmUgZ2xvYmFsIHRvCisgICAgICogICAgICB0aGUgb3V0cHV0IG1peC4gSWYgbm90IDAsIHRoZSBlZmZlY3Qgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCBwbGF5ZXJzCisgICAgICogICAgICAoQXVkaW9UcmFjayBvciBNZWRpYVBMYXllcikgd2l0aGluIHRoZSBzYW1lIGF1ZGlvIHNlc3Npb24uCisgICAgICogb3V0cHV0OiAgSEFMIGF1ZGlvIG91dHB1dCBzdHJlYW0gdG8gd2hpY2ggdGhpcyBlZmZlY3QgbXVzdCBiZSBhdHRhY2hlZC4gTGVhdmUgYXQgMCBmb3IKKyAgICAgKiAgICAgIGF1dG9tYXRpYyBvdXRwdXQgc2VsZWN0aW9uIGJ5IEF1ZGlvRmxpbmdlci4KKyAgICAgKi8KKworICAgIEF1ZGlvRWZmZWN0KGNvbnN0IGVmZmVjdF91dWlkX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgY29uc3QgZWZmZWN0X3V1aWRfdCAqdXVpZCA9IE5VTEwsCisgICAgICAgICAgICAgICAgICBpbnQzMl90IHByaW9yaXR5ID0gMCwKKyAgICAgICAgICAgICAgICAgIGVmZmVjdF9jYWxsYmFja190IGNiZiA9IDAsCisgICAgICAgICAgICAgICAgICB2b2lkKiB1c2VyID0gMCwKKyAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSAwLAorICAgICAgICAgICAgICAgICAgYXVkaW9faW9faGFuZGxlX3Qgb3V0cHV0ID0gMAorICAgICAgICAgICAgICAgICAgKTsKKworICAgIC8qIENvbnN0cnVjdG9yLgorICAgICAqICAgICAgU2FtZSBhcyBhYm92ZSBidXQgd2l0aCB0eXBlIGFuZCB1dWlkIHNwZWNpZmllZCBieSBjaGFyYWN0ZXIgc3RyaW5ncworICAgICAqLworICAgIEF1ZGlvRWZmZWN0KGNvbnN0IGNoYXIgKnR5cGVTdHIsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnV1aWRTdHIgPSBOVUxMLAorICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHByaW9yaXR5ID0gMCwKKyAgICAgICAgICAgICAgICAgICAgZWZmZWN0X2NhbGxiYWNrX3QgY2JmID0gMCwKKyAgICAgICAgICAgICAgICAgICAgdm9pZCogdXNlciA9IDAsCisgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSAwLAorICAgICAgICAgICAgICAgICAgICBhdWRpb19pb19oYW5kbGVfdCBvdXRwdXQgPSAwCisgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAvKiBUZXJtaW5hdGVzIHRoZSBBdWRpb0VmZmVjdCBhbmQgdW5yZWdpc3RlcnMgaXQgZnJvbSBBdWRpb0ZsaW5nZXIuCisgICAgICogVGhlIGVmZmVjdCBlbmdpbmUgaXMgYWxzbyBkZXN0cm95ZWQgaWYgdGhpcyBBdWRpb0VmZmVjdCB3YXMgdGhlIGxhc3QgY29udHJvbGxpbmcKKyAgICAgKiB0aGUgZW5naW5lLgorICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgfkF1ZGlvRWZmZWN0KCk7CisKKyAgICAvKiBJbml0aWFsaXplIGFuIHVuaW5pdGlhbGl6ZWQgQXVkaW9FZmZlY3QuCisgICAgKiBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAqICAtIE5PX0VSUk9SIG9yIEFMUkVBRFlfRVhJU1RTOiBzdWNjZXNzZnVsIGluaXRpYWxpemF0aW9uCisgICAgKiAgLSBJTlZBTElEX09QRVJBVElPTjogQXVkaW9FZmZlY3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZAorICAgICogIC0gQkFEX1ZBTFVFOiBpbnZhbGlkIHBhcmFtZXRlcgorICAgICogIC0gTk9fSU5JVDogYXVkaW8gZmxpbmdlciBvciBhdWRpbyBoYXJkd2FyZSBub3QgaW5pdGlhbGl6ZWQKKyAgICAqICovCisgICAgICAgICAgICBzdGF0dXNfdCAgICBzZXQoY29uc3QgZWZmZWN0X3V1aWRfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZmZlY3RfdXVpZF90ICp1dWlkID0gTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHByaW9yaXR5ID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RfY2FsbGJhY2tfdCBjYmYgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHVzZXIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90IG91dHB1dCA9IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgLyogUmVzdWx0IG9mIGNvbnN0cnVjdGluZyB0aGUgQXVkaW9FZmZlY3QuIFRoaXMgbXVzdCBiZSBjaGVja2VkCisgICAgICogYmVmb3JlIHVzaW5nIGFueSBBdWRpb0VmZmVjdCBBUEkuCisgICAgICogaW5pdENoZWNrKCkgY2FuIHJldHVybjoKKyAgICAgKiAgLSBOT19FUlJPUjogICAgdGhlIGVmZmVjdCBlbmdpbmUgaXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYW5kIHRoZSBhcHBsaWNhdGlvbiBoYXMgY29udHJvbC4KKyAgICAgKiAgLSBBTFJFQURZX0VYSVNUUzogdGhlIGVmZmVjdCBlbmdpbmUgaXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYnV0IHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdAorICAgICAqICAgICAgICAgICAgICBoYXZlIGNvbnRyb2wuCisgICAgICogIC0gTk9fSU5JVDogICAgIHRoZSBlZmZlY3QgY3JlYXRpb24gZmFpbGVkLgorICAgICAqCisgICAgICovCisgICAgICAgICAgICBzdGF0dXNfdCAgICBpbml0Q2hlY2soKSBjb25zdDsKKworCisgICAgLyogUmV0dXJucyB0aGUgdW5pcXVlIGVmZmVjdCBJZCBmb3IgdGhlIGNvbnRyb2xsZWQgZWZmZWN0IGVuZ2luZS4gVGhpcyBJRCBpcyB1bmlxdWUKKyAgICAgKiBzeXN0ZW0gd2lkZSBhbmQgaXMgdXNlZCBmb3IgaW5zdGFuY2UgaW4gdGhlIGNhc2Ugb2YgYXV4aWxpYXJ5IGVmZmVjdHMgdG8gYXR0YWNoCisgICAgICogdGhlIGVmZmVjdCB0byBhbiBBdWRpb1RyYWNrIG9yIE1lZGlhUGxheWVyLgorICAgICAqCisgICAgICovCisgICAgICAgICAgICBpbnQzMl90ICAgICBpZCgpIGNvbnN0IHsgcmV0dXJuIG1JZDsgfQorCisgICAgLyogUmV0dXJucyBhIGRlc2NyaXB0b3IgZm9yIHRoZSBlZmZlY3QgKHNlZSBlZmZlY3RfZGVzY3JpcHRvcl90IGluIEVmZmVjdEFwaS5oKS4KKyAgICAgKi8KKyAgICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgZGVzY3JpcHRvcigpIGNvbnN0OworCisgICAgLyogUmV0dXJucyBlZmZlY3QgY29udHJvbCBwcmlvcml0eSBvZiB0aGlzIEF1ZGlvRWZmZWN0IG9iamVjdC4KKyAgICAgKi8KKyAgICAgICAgICAgIGludDMyX3QgICAgIHByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gbVByaW9yaXR5OyB9CisKKworICAgIC8qIEVuYWJsZXMgdGhlIGVmZmVjdCBlbmdpbmUuCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqICAgICAgTm9uZS4KKyAgICAgKgorICAgICAqIFJldHVybmVkIHN0YXR1cyAoZnJvbSB1dGlscy9FcnJvcnMuaCkgY2FuIGJlOgorICAgICAqICAtIE5PX0VSUk9SOiBzdWNjZXNzZnVsIG9wZXJhdGlvbgorICAgICAqICAtIElOVkFMSURfT1BFUkFUSU9OOiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lCisgICAgICovCisgICAgICAgICAgICBzdGF0dXNfdCAgICBlbmFibGUoKTsKKworICAgIC8qIERpc2FibGVzIHRoZSBlZmZlY3QgZW5naW5lLgorICAgICAqCisgICAgICogUGFyYW1ldGVyczoKKyAgICAgKiAgICAgIE5vbmUuCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAgKiAgLSBOT19FUlJPUjogc3VjY2Vzc2Z1bCBvcGVyYXRpb24KKyAgICAgKiAgLSBJTlZBTElEX09QRVJBVElPTjogdGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IGhhdmUgY29udHJvbCBvZiB0aGUgZWZmZWN0IGVuZ2luZQorICAgICAqLworICAgICAgICAgICAgIHN0YXR1c190ICAgIGRpc2FibGUoKTsKKworICAgICAgICAgICAgIGJvb2wgICAgICAgIGlzRW5hYmxlZCgpIGNvbnN0OworCisgICAgLyogU2V0cyBhIHBhcmFtZXRlciB2YWx1ZS4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogICAgICBwYXJhbTogIHBvaW50ZXIgdG8gZWZmZWN0X3BhcmFtX3Qgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcgorICAgICAqICAgICAgICAgIGFuZCBpdHMgdmFsdWUgKFNlZSBFZmZlY3RBcGkuaCkuCisgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogIC0gTk9fRVJST1I6IHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorICAgICAqICAtIElOVkFMSURfT1BFUkFUSU9OOiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lLgorICAgICAqICAtIEJBRF9WQUxVRTogaW52YWxpZCBwYXJhbWV0ZXIgaWRlbnRpZmllciBvciB2YWx1ZS4KKyAgICAgKiAgLSBERUFEX09CSkVDVDogdGhlIGVmZmVjdCBlbmdpbmUgaGFzIGJlZW4gZGVsZXRlZC4KKyAgICAgKi8KKyAgICAgICAgICAgICBzdGF0dXNfdCAgIHNldFBhcmFtZXRlcihlZmZlY3RfcGFyYW1fdCAqcGFyYW0pOworCisgICAgLyogUHJlcGFyZSBhIG5ldyBwYXJhbWV0ZXIgdmFsdWUgdGhhdCB3aWxsIGJlIHNldCBieSBuZXh0IGNhbGwgdG8KKyAgICAgKiBzZXRQYXJhbWV0ZXJDb21taXQoKS4gVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gc2V0IG11bHRpcGxlIHBhcmFtZXRlcnMKKyAgICAgKiBpbiBhIHN5bmNocm9ub3VzIG1hbm5lciBvciB0byBhdm9pZCBtdWx0aXBsZSBiaW5kZXIgY2FsbHMgZm9yIGVhY2gKKyAgICAgKiBwYXJhbWV0ZXIuCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqICAgICAgcGFyYW06ICBwb2ludGVyIHRvIGVmZmVjdF9wYXJhbV90IHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXIKKyAgICAgKiAgICAgICAgICBhbmQgaXRzIHZhbHVlIChTZWUgRWZmZWN0QXBpLmgpLgorICAgICAqCisgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogIC0gTk9fRVJST1I6IHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorICAgICAqICAtIElOVkFMSURfT1BFUkFUSU9OOiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lLgorICAgICAqICAtIE5PX01FTU9SWTogbm8gbW9yZSBzcGFjZSBhdmFpbGFibGUgaW4gc2hhcmVkIG1lbW9yeSB1c2VkIGZvciBkZWZlcnJlZCBwYXJhbWV0ZXIKKyAgICAgKiAgc2V0dGluZy4KKyAgICAgKi8KKyAgICAgICAgICAgICBzdGF0dXNfdCAgIHNldFBhcmFtZXRlckRlZmVycmVkKGVmZmVjdF9wYXJhbV90ICpwYXJhbSk7CisKKyAgICAgLyogQ29tbWl0IGFsbCBwYXJhbWV0ZXIgdmFsdWVzIHByZXZpb3VzbHkgcHJlcGFyZWQgYnkgc2V0UGFyYW1ldGVyRGVmZXJyZWQoKS4KKyAgICAgICoKKyAgICAgICogUGFyYW1ldGVyczoKKyAgICAgICogICAgIG5vbmUKKyAgICAgICoKKyAgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICAqICAtIE5PX0VSUk9SOiBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKyAgICAgICogIC0gSU5WQUxJRF9PUEVSQVRJT046IE5vIG5ldyBwYXJhbWV0ZXIgdmFsdWVzIHJlYWR5IGZvciBjb21taXQuCisgICAgICAqICAtIEJBRF9WQUxVRTogaW52YWxpZCBwYXJhbWV0ZXIgaWRlbnRpZmllciBvciB2YWx1ZTogdGhlcmUgaXMgbm8gaW5kaWNhdGlvbgorICAgICAgKiAgICAgYXMgdG8gd2hpY2ggb2YgdGhlIHBhcmFtZXRlcnMgY2F1c2VkIHRoaXMgZXJyb3IuCisgICAgICAqICAtIERFQURfT0JKRUNUOiB0aGUgZWZmZWN0IGVuZ2luZSBoYXMgYmVlbiBkZWxldGVkLgorICAgICAgKi8KKyAgICAgICAgICAgICBzdGF0dXNfdCAgIHNldFBhcmFtZXRlckNvbW1pdCgpOworCisgICAgLyogR2V0cyBhIHBhcmFtZXRlciB2YWx1ZS4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogICAgICBwYXJhbTogIHBvaW50ZXIgdG8gZWZmZWN0X3BhcmFtX3Qgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcgorICAgICAqICAgICAgICAgIGFuZCB0aGUgcmV0dXJuZWQgdmFsdWUgKFNlZSBFZmZlY3RBcGkuaCkuCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAgKiAgLSBOT19FUlJPUjogc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisgICAgICogIC0gSU5WQUxJRF9PUEVSQVRJT046IHRoZSBBdWRpb0VmZmVjdCB3YXMgbm90IHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZC4KKyAgICAgKiAgLSBCQURfVkFMVUU6IGludmFsaWQgcGFyYW1ldGVyIGlkZW50aWZpZXIuCisgICAgICogIC0gREVBRF9PQkpFQ1Q6IHRoZSBlZmZlY3QgZW5naW5lIGhhcyBiZWVuIGRlbGV0ZWQuCisgICAgICovCisgICAgICAgICAgICAgc3RhdHVzX3QgICBnZXRQYXJhbWV0ZXIoZWZmZWN0X3BhcmFtX3QgKnBhcmFtKTsKKworICAgICAvKiBTZW5kcyBhIGNvbW1hbmQgYW5kIHJlY2VpdmVzIGEgcmVzcG9uc2UgdG8vZnJvbSBlZmZlY3QgZW5naW5lLgorICAgICAgKiAgICAgU2VlIEVmZmVjdEFwaS5oIGZvciBkZXRhaWxzIG9uIGVmZmVjdCBjb21tYW5kKCkgZnVuY3Rpb24sIHZhbGlkIGNvbW1hbmQgY29kZXMKKyAgICAgICogICAgIGFuZCBmb3JtYXRzLgorICAgICAgKi8KKyAgICAgICAgICAgICBzdGF0dXNfdCBjb21tYW5kKGludDMyX3QgY21kQ29kZSwgaW50MzJfdCBjbWRTaXplLCB2b2lkICpjbWREYXRhLCBpbnQzMl90ICpyZXBseVNpemUsIHZvaWQgKnJlcGx5RGF0YSk7CisKKworICAgICAvKgorICAgICAgKiBVdGlsaXR5IGZ1bmN0aW9ucy4KKyAgICAgICovCisKKyAgICAgLyogQ29udmVydHMgdGhlIHN0cmluZyBwYXNzZWQgYXMgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGVmZmVjdF91dWlkX3QKKyAgICAgICogcG9pbnRlZCB0byBieSBzZWNvbmQgYXJndW1lbnQKKyAgICAgICovCisgICAgIHN0YXRpYyBzdGF0dXNfdCBzdHJpbmdUb0d1aWQoY29uc3QgY2hhciAqc3RyLCBlZmZlY3RfdXVpZF90ICpndWlkKTsKKyAgICAgLyogQ29udmVydHMgdGhlIGVmZmVjdF91dWlkX3QgcG9pbnRlZCB0byBieSBmaXJzdCBhcmd1bWVudCB0byB0aGUKKyAgICAgICogc3RyaW5nIHBhc3NlZCBhcyBzZWNvbmQgYXJndW1lbnQKKyAgICAgICovCisgICAgIHN0YXRpYyBzdGF0dXNfdCBndWlkVG9TdHJpbmcoY29uc3QgZWZmZWN0X3V1aWRfdCAqZ3VpZCwgY2hhciAqc3RyLCBzaXplX3QgbWF4TGVuKTsKKworcHJpdmF0ZToKKworICAgICAvLyBJbXBsZW1lbnRzIHRoZSBJRWZmZWN0Q2xpZW50IGludGVyZmFjZQorICAgIGNsYXNzIEVmZmVjdENsaWVudCA6IHB1YmxpYyBhbmRyb2lkOjpCbkVmZmVjdENsaWVudCwgIHB1YmxpYyBhbmRyb2lkOjpJQmluZGVyOjpEZWF0aFJlY2lwaWVudAorICAgIHsKKyAgICBwdWJsaWM6CisKKyAgICAgICAgRWZmZWN0Q2xpZW50KEF1ZGlvRWZmZWN0ICplZmZlY3QpIDogbUVmZmVjdChlZmZlY3Qpe30KKworICAgICAgICAvLyBJRWZmZWN0Q2xpZW50CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb250cm9sU3RhdHVzQ2hhbmdlZChib29sIGNvbnRyb2xHcmFudGVkKSB7bUVmZmVjdC0+Y29udHJvbFN0YXR1c0NoYW5nZWQoY29udHJvbEdyYW50ZWQpO30KKyAgICAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN0YXR1c0NoYW5nZWQoYm9vbCBlbmFibGVkKSB7bUVmZmVjdC0+ZW5hYmxlU3RhdHVzQ2hhbmdlZChlbmFibGVkKTt9CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kRXhlY3V0ZWQoaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50IHJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSkgeworICAgICAgICAgICAgbUVmZmVjdC0+Y29tbWFuZEV4ZWN1dGVkKGNtZENvZGUsIGNtZFNpemUsIHBDbWREYXRhLCByZXBseVNpemUsIHBSZXBseURhdGEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSUJpbmRlcjo6RGVhdGhSZWNpcGllbnQKKyAgICAgICAgdmlydHVhbCB2b2lkIGJpbmRlckRpZWQoY29uc3Qgd3A8SUJpbmRlcj4mIHdobykge21FZmZlY3QtPmJpbmRlckRpZWQoKTt9CisKKyAgICBwcml2YXRlOgorICAgICAgICBBdWRpb0VmZmVjdCAqbUVmZmVjdDsKKyAgICB9OworCisKKyAgICBmcmllbmQgY2xhc3MgRWZmZWN0Q2xpZW50OworCisgICAgLy8gSUVmZmVjdENsaWVudAorICAgIHZvaWQgY29udHJvbFN0YXR1c0NoYW5nZWQoYm9vbCBjb250cm9sR3JhbnRlZCk7CisgICAgdm9pZCBlbmFibGVTdGF0dXNDaGFuZ2VkKGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBjb21tYW5kRXhlY3V0ZWQoaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50IHJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSk7CisgICAgdm9pZCBiaW5kZXJEaWVkKCk7CisKKworICAgIHNwPElFZmZlY3Q+ICAgICAgICAgICAgIG1JRWZmZWN0OyAgICAgICAgICAgLy8gSUVmZmVjdCBiaW5kZXIgaW50ZXJmYWNlCisgICAgc3A8RWZmZWN0Q2xpZW50PiAgICAgICAgbUlFZmZlY3RDbGllbnQ7ICAgICAvLyBJRWZmZWN0Q2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgc3A8SU1lbW9yeT4gICAgICAgICAgICAgbUNibGtNZW1vcnk7ICAgICAgICAvLyBzaGFyZWQgbWVtb3J5IGZvciBkZWZlcnJlZCBwYXJhbWV0ZXIgc2V0dGluZworICAgIGVmZmVjdF9wYXJhbV9jYmxrX3QqICAgIG1DYmxrOyAgICAgICAgICAgICAgLy8gY29udHJvbCBibG9jayBmb3IgZGVmZXJyZWQgcGFyYW1ldGVyIHNldHRpbmcKKyAgICBpbnQzMl90ICAgICAgICAgICAgICAgICBtUHJpb3JpdHk7ICAgICAgICAgIC8vIHByaW9yaXR5IGZvciBlZmZlY3QgY29udHJvbAorICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIG1TdGF0dXM7ICAgICAgICAgICAgLy8gZWZmZWN0IHN0YXR1cworICAgIHZvbGF0aWxlIGludDMyX3QgICAgICAgIG1FbmFibGVkOyAgICAgICAgICAgLy8gZW5hYmxlIHN0YXRlCisgICAgZWZmZWN0X2NhbGxiYWNrX3QgICAgICAgbUNiZjsgICAgICAgICAgICAgICAvLyBjYWxsYmFjayBmdW5jdGlvbiBmb3Igc3RhdHVzLCBjb250cm9sLCBwYXJhbWV0ZXIgY2hhbmdlcyBub3RpZmljYXRpb25zCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgbVVzZXJEYXRhOyAgICAgICAgICAvLyBjbGllbnQgY29udGV4dCBmb3IgY2FsbGJhY2sgZnVuY3Rpb24KKyAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICAgICBtRGVzY3JpcHRvcjsgICAgICAgIC8vIGVmZmVjdCBkZXNjcmlwdG9yCisgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgbUlkOyAgICAgICAgICAgICAgICAvLyBzeXN0ZW0gd2lkZSB1bmlxdWUgZWZmZWN0IGVuZ2luZSBpbnN0YW5jZSBpZGVudGlmaWVyCisgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgbVNlc3Npb25JZDsgICAgICAgICAvLyBhdWRpbyBzZXNzaW9uIElECit9OworCisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBBTkRST0lEX0FVRElPRUZGRUNUX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvQXVkaW9SZWNvcmQuaCBiL2luY2x1ZGUvbWVkaWEvQXVkaW9SZWNvcmQuaAppbmRleCA5MmJjMTI2Li4zOGUzZDQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL0F1ZGlvUmVjb3JkLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9BdWRpb1JlY29yZC5oCkBAIC0xMDAsNiArMTAwLDE5IEBACiAKICAgICB0eXBlZGVmIHZvaWQgKCpjYWxsYmFja190KShpbnQgZXZlbnQsIHZvaWQqIHVzZXIsIHZvaWQgKmluZm8pOwogCisgICAgLyogUmV0dXJucyB0aGUgbWluaW11bSBmcmFtZSBjb3VudCByZXF1aXJlZCBmb3IgdGhlIHN1Y2Nlc3NmdWwgY3JlYXRpb24gb2YKKyAgICAgKiBhbiBBdWRpb1JlY29yZCBvYmplY3QuCisgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogIC0gTk9fRVJST1I6IHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisgICAgICogIC0gTk9fSU5JVDogYXVkaW8gc2VydmVyIG9yIGF1ZGlvIGhhcmR3YXJlIG5vdCBpbml0aWFsaXplZAorICAgICAqICAtIEJBRF9WQUxVRTogdW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbgorICAgICAqLworCisgICAgIHN0YXRpYyBzdGF0dXNfdCBnZXRNaW5GcmFtZUNvdW50KGludCogZnJhbWVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCk7CisKICAgICAvKiBDb25zdHJ1Y3RzIGFuIHVuaW5pdGlhbGl6ZWQgQXVkaW9SZWNvcmQuIE5vIGNvbm5lY3Rpb24gd2l0aAogICAgICAqIEF1ZGlvRmxpbmdlciB0YWtlcyBwbGFjZS4KICAgICAgKi8KQEAgLTE0Miw3ICsxNTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja190IGNiZiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiB1c2VyID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub3RpZmljYXRpb25GcmFtZXMgPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub3RpZmljYXRpb25GcmFtZXMgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCA9IDApOwogCiAKICAgICAvKiBUZXJtaW5hdGVzIHRoZSBBdWRpb1JlY29yZCBhbmQgdW5yZWdpc3RlcnMgaXQgZnJvbSBBdWRpb0ZsaW5nZXIuCkBAIC0xNjgsNyArMTgyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja190IGNiZiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogdXNlciA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vdGlmaWNhdGlvbkZyYW1lcyA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0aHJlYWRDYW5DYWxsSmF2YSA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCA9IDApOwogCiAKICAgICAvKiBSZXN1bHQgb2YgY29uc3RydWN0aW5nIHRoZSBBdWRpb1JlY29yZC4gVGhpcyBtdXN0IGJlIGNoZWNrZWQKQEAgLTI3MCw2ICsyODUsMTYgQEAKICAgICAgKi8KICAgICAgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90ICAgIGdldElucHV0KCk7CiAKKyAgICAvKiByZXR1cm5zIHRoZSBhdWRpbyBzZXNzaW9uIElEIGFzc29jaWF0ZWQgdG8gdGhpcyBBdWRpb1JlY29yZC4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogIG5vbmUuCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCB2YWx1ZToKKyAgICAgKiAgQXVkaW9SZWNvcmQgc2Vzc2lvbiBJRC4KKyAgICAgKi8KKyAgICAgICAgICAgIGludCAgICBnZXRTZXNzaW9uSWQoKTsKKwogICAgIC8qIG9idGFpbnMgYSBidWZmZXIgb2YgImZyYW1lQ291bnQiIGZyYW1lcy4gVGhlIGJ1ZmZlciBtdXN0IGJlCiAgICAgICogZmlsbGVkIGVudGlyZWx5LiBJZiB0aGUgdHJhY2sgaXMgc3RvcHBlZCwgb2J0YWluQnVmZmVyKCkgcmV0dXJucwogICAgICAqIFNUT1BQRUQgaW5zdGVhZCBvZiBOT19FUlJPUiBhcyBsb25nIGFzIHRoZXJlIGFyZSBidWZmZXJzIGF2YWlsbGFibGUsCkBAIC0zNTYsNiArMzgxLDcgQEAKICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtRmxhZ3M7CiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbUNoYW5uZWxzOwogICAgIGF1ZGlvX2lvX2hhbmRsZV90ICAgICAgIG1JbnB1dDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbklkOwogfTsKIAogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvQXVkaW9TeXN0ZW0uaCBiL2luY2x1ZGUvbWVkaWEvQXVkaW9TeXN0ZW0uaAppbmRleCBkMGNjYzUwNS4uMTk0ZjIzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9BdWRpb1N5c3RlbS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvQXVkaW9TeXN0ZW0uaApAQCAtMjM0LDYgKzIzNCw4IEBACiAgICAgc3RhdGljIHN0YXR1c190IGdldFJlbmRlclBvc2l0aW9uKHVpbnQzMl90ICpoYWxGcmFtZXMsIHVpbnQzMl90ICpkc3BGcmFtZXMsIGludCBzdHJlYW0gPSBERUZBVUxUKTsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgIGdldElucHV0RnJhbWVzTG9zdChhdWRpb19pb19oYW5kbGVfdCBpb0hhbmRsZSk7CisKKyAgICBzdGF0aWMgaW50IG5ld0F1ZGlvU2Vzc2lvbklkKCk7CiAgICAgLy8KICAgICAvLyBBdWRpb1BvbGljeVNlcnZpY2UgaW50ZXJmYWNlCiAgICAgLy8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvQXVkaW9UcmFjay5oIGIvaW5jbHVkZS9tZWRpYS9BdWRpb1RyYWNrLmgKaW5kZXggMTRiMzBhZS4uZWY1MzdmNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9BdWRpb1RyYWNrLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9BdWRpb1RyYWNrLmgKQEAgLTEwMiw2ICsxMDIsMTcgQEAKIAogICAgIHR5cGVkZWYgdm9pZCAoKmNhbGxiYWNrX3QpKGludCBldmVudCwgdm9pZCogdXNlciwgdm9pZCAqaW5mbyk7CiAKKyAgICAvKiBSZXR1cm5zIHRoZSBtaW5pbXVtIGZyYW1lIGNvdW50IHJlcXVpcmVkIGZvciB0aGUgc3VjY2Vzc2Z1bCBjcmVhdGlvbiBvZgorICAgICAqIGFuIEF1ZGlvVHJhY2sgb2JqZWN0LgorICAgICAqIFJldHVybmVkIHN0YXR1cyAoZnJvbSB1dGlscy9FcnJvcnMuaCkgY2FuIGJlOgorICAgICAqICAtIE5PX0VSUk9SOiBzdWNjZXNzZnVsIG9wZXJhdGlvbgorICAgICAqICAtIE5PX0lOSVQ6IGF1ZGlvIHNlcnZlciBvciBhdWRpbyBoYXJkd2FyZSBub3QgaW5pdGlhbGl6ZWQKKyAgICAgKi8KKworICAgICBzdGF0aWMgc3RhdHVzX3QgZ2V0TWluRnJhbWVDb3VudChpbnQqIGZyYW1lQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJlYW1UeXBlICAgICAgPS0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzYW1wbGVSYXRlID0gMCk7CisKICAgICAvKiBDb25zdHJ1Y3RzIGFuIHVuaW5pdGlhbGl6ZWQgQXVkaW9UcmFjay4gTm8gY29ubmVjdGlvbiB3aXRoCiAgICAgICogQXVkaW9GbGluZ2VyIHRha2VzIHBsYWNlLgogICAgICAqLwpAQCAtMTM4LDcgKzE0OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyAgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja190IGNiZiAgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiB1c2VyICAgICAgICAgICA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzID0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSAwKTsKIAogICAgIC8qIENyZWF0ZXMgYW4gYXVkaW8gdHJhY2sgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIEF1ZGlvRmxpbmdlci4gV2l0aCB0aGlzIGNvbnN0cnVjdG9yLAogICAgICAqIFRoZSBQQ00gZGF0YSB0byBiZSByZW5kZXJlZCBieSBBdWRpb1RyYWNrIGlzIHBhc3NlZCBpbiBhIHNoYXJlZCBtZW1vcnkgYnVmZmVyCkBAIC0xNTcsNyArMTY5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfdCBjYmYgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiB1c2VyICAgICAgICAgID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub3RpZmljYXRpb25GcmFtZXMgPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub3RpZmljYXRpb25GcmFtZXMgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCA9IDApOwogCiAgICAgLyogVGVybWluYXRlcyB0aGUgQXVkaW9UcmFjayBhbmQgdW5yZWdpc3RlcnMgaXQgZnJvbSBBdWRpb0ZsaW5nZXIuCiAgICAgICogQWxzbyBkZXN0cm95cyBhbGwgcmVzb3VyY2VzIGFzc290aWF0ZWQgd2l0aCB0aGUgQXVkaW9UcmFjay4KQEAgLTE4Miw3ICsxOTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHVzZXIgICAgICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub3RpZmljYXRpb25GcmFtZXMgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIgPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdGhyZWFkQ2FuQ2FsbEphdmEgPSBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0aHJlYWRDYW5DYWxsSmF2YSA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSAwKTsKIAogCiAgICAgLyogUmVzdWx0IG9mIGNvbnN0cnVjdGluZyB0aGUgQXVkaW9UcmFjay4gVGhpcyBtdXN0IGJlIGNoZWNrZWQKQEAgLTIzOSwxMCArMjUzLDE3IEBACiAKIAogICAgIC8qIHNldCB2b2x1bWUgZm9yIHRoaXMgdHJhY2ssIG1vc3RseSB1c2VkIGZvciBnYW1lcycgc291bmQgZWZmZWN0cworICAgICAqIGxlZnQgYW5kIHJpZ2h0IHZvbHVtZXMuIExldmVscyBtdXN0IGJlIDw9IDEuMC4KICAgICAgKi8KLSAgICAgICAgICAgIHZvaWQgICAgICAgIHNldFZvbHVtZShmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCk7CisgICAgICAgICAgICBzdGF0dXNfdCAgICBzZXRWb2x1bWUoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQpOwogICAgICAgICAgICAgdm9pZCAgICAgICAgZ2V0Vm9sdW1lKGZsb2F0KiBsZWZ0LCBmbG9hdCogcmlnaHQpOwogCisgICAgLyogc2V0IHRoZSBzZW5kIGxldmVsIGZvciB0aGlzIHRyYWNrLiBBbiBhdXhpbGlhcnkgZWZmZWN0IHNob3VsZCBiZSBhdHRhY2hlZAorICAgICAqIHRvIHRoZSB0cmFjayB3aXRoIGF0dGFjaEVmZmVjdCgpLiBMZXZlbCBtdXN0IGJlIDw9IDEuMC4KKyAgICAgKi8KKyAgICAgICAgICAgIHN0YXR1c190ICAgIHNldFNlbmRMZXZlbChmbG9hdCBsZXZlbCk7CisgICAgICAgICAgICB2b2lkICAgICAgICBnZXRTZW5kTGV2ZWwoZmxvYXQqIGxldmVsKTsKKwogICAgIC8qIHNldCBzYW1wbGUgcmF0ZSBmb3IgdGhpcyB0cmFjaywgbW9zdGx5IHVzZWQgZm9yIGdhbWVzJyBzb3VuZCBlZmZlY3RzCiAgICAgICovCiAgICAgICAgICAgICBzdGF0dXNfdCAgICBzZXRTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKTsKQEAgLTM0MCw2ICszNjEsMzEgQEAKICAgICAgKi8KICAgICAgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90ICAgIGdldE91dHB1dCgpOwogCisgICAgLyogcmV0dXJucyB0aGUgdW5pcXVlIElEIGFzc29jaWF0ZWQgdG8gdGhpcyB0cmFjay4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogIG5vbmUuCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCB2YWx1ZToKKyAgICAgKiAgQXVkaW9UcmFjayBJRC4KKyAgICAgKi8KKyAgICAgICAgICAgIGludCAgICBnZXRTZXNzaW9uSWQoKTsKKworCisgICAgLyogQXR0YWNoIHRyYWNrIGF1eGlsaWFyeSBvdXRwdXQgdG8gc3BlY2lmaWVkIGVmZmVjdC4gVXNlZCBlZmZlY3RJZCA9IDAKKyAgICAgKiB0byBkZXRhY2ggdHJhY2sgZnJvbSBlZmZlY3QuCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqCisgICAgICogZWZmZWN0SWQ6ICBlZmZlY3RJZCBvYnRhaW5lZCBmcm9tIEF1ZGlvRWZmZWN0OjppZCgpLgorICAgICAqCisgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogIC0gTk9fRVJST1I6IHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisgICAgICogIC0gSU5WQUxJRF9PUEVSQVRJT046IHRoZSBlZmZlY3QgaXMgbm90IGFuIGF1eGlsaWFyeSBlZmZlY3QuCisgICAgICogIC0gQkFEX1ZBTFVFOiBUaGUgc3BlY2lmaWVkIGVmZmVjdCBJRCBpcyBpbnZhbGlkCisgICAgICovCisgICAgICAgICAgICBzdGF0dXNfdCAgICBhdHRhY2hBdXhFZmZlY3QoaW50IGVmZmVjdElkKTsKKwogICAgIC8qIG9idGFpbnMgYSBidWZmZXIgb2YgImZyYW1lQ291bnQiIGZyYW1lcy4gVGhlIGJ1ZmZlciBtdXN0IGJlCiAgICAgICogZmlsbGVkIGVudGlyZWx5LiBJZiB0aGUgdHJhY2sgaXMgc3RvcHBlZCwgb2J0YWluQnVmZmVyKCkgcmV0dXJucwogICAgICAqIFNUT1BQRUQgaW5zdGVhZCBvZiBOT19FUlJPUiBhcyBsb25nIGFzIHRoZXJlIGFyZSBidWZmZXJzIGF2YWlsbGFibGUsCkBAIC0zOTgsMTMgKzQ0NCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19pb19oYW5kbGVfdCBvdXRwdXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9faW9faGFuZGxlX3Qgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmZvcmNlRnJhbWVDb3VudCk7CiAKICAgICBzcDxJQXVkaW9UcmFjaz4gICAgICAgICBtQXVkaW9UcmFjazsKICAgICBzcDxJTWVtb3J5PiAgICAgICAgICAgICBtQ2Jsa01lbW9yeTsKICAgICBzcDxBdWRpb1RyYWNrVGhyZWFkPiAgICBtQXVkaW9UcmFja1RocmVhZDsKIAogICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgIG1Wb2x1bWVbMl07CisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgbVNlbmRMZXZlbDsKICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtRnJhbWVDb3VudDsKIAogICAgIGF1ZGlvX3RyYWNrX2NibGtfdCogICAgIG1DYmxrOwpAQCAtNDIwLDcgKzQ2OCw4IEBACiAKICAgICBjYWxsYmFja190ICAgICAgICAgICAgICBtQ2JmOwogICAgIHZvaWQqICAgICAgICAgICAgICAgICAgIG1Vc2VyRGF0YTsKLSAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uRnJhbWVzOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25GcmFtZXNSZXE7IC8vIHJlcXVlc3RlZCBudW1iZXIgb2YgZnJhbWVzIGJldHdlZW4gZWFjaCBub3RpZmljYXRpb24gY2FsbGJhY2sKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uRnJhbWVzQWN0OyAvLyBhY3R1YWwgbnVtYmVyIG9mIGZyYW1lcyBiZXR3ZWVuIGVhY2ggbm90aWZpY2F0aW9uIGNhbGxiYWNrCiAgICAgc3A8SU1lbW9yeT4gICAgICAgICAgICAgbVNoYXJlZEJ1ZmZlcjsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtTG9vcENvdW50OwogICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG1SZW1haW5pbmdGcmFtZXM7CkBAIC00MjksNiArNDc4LDcgQEAKICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtTmV3UG9zaXRpb247CiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbVVwZGF0ZVBlcmlvZDsKICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtRmxhZ3M7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbVNlc3Npb25JZDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9FZmZlY3RBcGkuaCBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0QXBpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRkNzM4YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0QXBpLmgKQEAgLTAsMCArMSw3ODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfRUZGRUNUQVBJX0hfCisjZGVmaW5lIEFORFJPSURfRUZGRUNUQVBJX0hfCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgRWZmZWN0IGNvbnRyb2wgaW50ZXJmYWNlCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vIFRoZSBlZmZlY3QgY29udHJvbCBpbnRlcmZhY2UgaXMgZXhwb3NlZCBieSBlYWNoIGVmZmVjdCBlbmdpbmUgaW1wbGVtZW50YXRpb24uIEl0IGNvbnNpc3RzIG9mCisvLyBhIHNldCBvZiBmdW5jdGlvbnMgY29udHJvbGxpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIGFjdGl2YXRpb24gYW5kIHByb2Nlc3Mgb2YgdGhlIGVuZ2luZS4KKy8vIFRoZSBmdW5jdGlvbnMgYXJlIGdyb3VwZWQgaW4gYSBzdHJ1Y3R1cmUgb2YgdHlwZSBlZmZlY3RfaW50ZXJmYWNlX3M6CisvLyAgICBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIHsKKy8vICAgICAgICBlZmZlY3RfcHJvY2Vzc190IHByb2Nlc3M7CisvLyAgICAgICAgZWZmZWN0X2NvbW1hbmRfdCBjb21tYW5kOworLy8gICAgfTsKKworCisvLyBlZmZlY3RfaW50ZXJmYWNlX3Q6IEVmZmVjdCBjb250cm9sIGludGVyZmFjZSBoYW5kbGUuCisvLyBUaGUgZWZmZWN0X2ludGVyZmFjZV90IHNlcnZlcyB0d28gcHVycG9zZXMgcmVnYXJkaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZWZmZWN0IGVuZ2luZToKKy8vIC0gMSBpdCBpcyB0aGUgYWRkcmVzcyBvZiBhIHBvaW50ZXIgdG8gYW4gZWZmZWN0X2ludGVyZmFjZV9zIHN0cnVjdHVyZSB3aGVyZSB0aGUgZnVuY3Rpb25zCisvLyBvZiB0aGUgZWZmZWN0IGNvbnRyb2wgQVBJIGZvciBhIHBhcnRpY3VsYXIgZWZmZWN0IGFyZSBsb2NhdGVkLgorLy8gLSAyIGl0IGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250ZXh0IG9mIGEgcGFydGljdWxhciBlZmZlY3QgaW5zdGFuY2UuCisvLyBBIHR5cGljYWwgaW1wbGVtZW50YXRpb24gaW4gdGhlIGVmZmVjdCBsaWJyYXJ5IHdvdWxkIGRlZmluZSBhIHN0cnVjdHVyZSBhcyBmb2xsb3dzOgorLy8gc3RydWN0IGVmZmVjdF9tb2R1bGVfcyB7CisvLyAgICAgICAgY29uc3Qgc3RydWN0IGVmZmVjdF9pbnRlcmZhY2VfcyAqaXRmZTsKKy8vICAgICAgICBlZmZlY3RfY29uZmlnX3QgY29uZmlnOworLy8gICAgICAgIGVmZmVjdF9jb250ZXh0X3QgY29udGV4dDsKKy8vIH0KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBFZmZlY3RDcmVhdGUoKSBmdW5jdGlvbiB3b3VsZCB0aGVuIGFsbG9jYXRlIGEgc3RydWN0dXJlIG9mIHRoaXMKKy8vIHR5cGUgYW5kIHJldHVybiBpdHMgYWRkcmVzcyBhcyBlZmZlY3RfaW50ZXJmYWNlX3QKK3R5cGVkZWYgc3RydWN0IGVmZmVjdF9pbnRlcmZhY2VfcyAqKmVmZmVjdF9pbnRlcmZhY2VfdDsKKworCisvLyBFZmZlY3QgQVBJIHZlcnNpb24gMS4wCisjZGVmaW5lIEVGRkVDVF9BUElfVkVSU0lPTiAweDAxMDAgLy8gRm9ybWF0IDB4TU1tbSBNTTogTWFqb3IgdmVyc2lvbiwgbW06IG1pbm9yIHZlcnNpb24KKworLy8gTWF4aW11bSBsZW5ndGggb2YgY2hhcmFjdGVyIHN0cmluZ3MgaW4gc3RydWN0dXJlcyBkZWZpbmVzIGJ5IHRoaXMgQVBJLgorI2RlZmluZSBFRkZFQ1RfU1RSSU5HX0xFTl9NQVggNjQKKworLy8KKy8vLS0tIEVmZmVjdCBkZXNjcmlwdG9yIHN0cnVjdHVyZSBlZmZlY3RfZGVzY3JpcHRvcl90CisvLworCisvLyBVbmlxdWUgZWZmZWN0IElEIChjYW4gYmUgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBzaXRlOgorLy8gIGh0dHA6Ly93d3cuaXR1LmludC9JVFUtVC9hc24xL3V1aWQuaHRtbCkKKy8vIFRoaXMgZm9ybWF0IGlzIHVzZWQgZm9yIGJvdGggInR5cGUiIGFuZCAidXVpZCIgZmllbGRzIG9mIHRoZSBlZmZlY3QgZGVzY3JpcHRvciBzdHJ1Y3R1cmUuCisvLyAtIFdoZW4gdXNlZCBmb3IgZWZmZWN0IHR5cGUgYW5kIHRoZSBlbmdpbmUgaXMgaW1wbGVtZW50aW5nIGFuZCBlZmZlY3QgY29ycmVzcG9uZGluZyB0byBhIHN0YW5kYXJkCisvLyBPcGVuU0wgRVMgaW50ZXJmYWNlLCB0aGlzIElEIG11c3QgYmUgdGhlIG9uZSBkZWZpbmVkIGluIE9wZW5TTEVTX0lJRC5oIGZvciB0aGF0IGludGVyZmFjZS4KKy8vIC0gV2hlbiB1c2VkIGFzIHV1aWQsIGl0IHNob3VsZCBiZSBhIHVuaXF1ZSBVVUlEIGZvciB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24uCit0eXBlZGVmIHN0cnVjdCBlZmZlY3RfdXVpZF9zIHsKKyAgICB1aW50MzJfdCB0aW1lTG93OworICAgIHVpbnQxNl90IHRpbWVNaWQ7CisgICAgdWludDE2X3QgdGltZUhpQW5kVmVyc2lvbjsKKyAgICB1aW50MTZfdCBjbG9ja1NlcTsKKyAgICB1aW50OF90IG5vZGVbNl07Cit9IGVmZmVjdF91dWlkX3Q7CisKKy8vIE5VTEwgVVVJRCBkZWZpbml0aW9uIChtYXRjaGVzIFNMX0lJRF9OVUxMXykKKyNkZWZpbmUgRUZGRUNUX1VVSURfSU5JVElBTElaRVIgeyAweGVjNzE3OGVjLCAweGU1ZTEsIDB4NDQzMiwgMHhhM2Y0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAweDQ2LCAweDU3LCAweGU2LCAweDc5LCAweDUyLCAweDEwIH0gfQorc3RhdGljIGNvbnN0IGVmZmVjdF91dWlkX3QgRUZGRUNUX1VVSURfTlVMTF8gPSBFRkZFQ1RfVVVJRF9JTklUSUFMSVpFUjsKK2NvbnN0IGVmZmVjdF91dWlkX3QgKiBjb25zdCBFRkZFQ1RfVVVJRF9OVUxMID0gJkVGRkVDVF9VVUlEX05VTExfOworY29uc3QgY2hhciAqIGNvbnN0IEVGRkVDVF9VVUlEX05VTExfU1RSID0gImVjNzE3OGVjLWU1ZTEtNDQzMi1hM2Y0LTQ2NTdlNjc5NTIxMCI7CisKKy8vIFRoZSBlZmZlY3QgZGVzY3JpcHRvciBjb250YWlucyBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gZmFjaWxpdGF0ZSB0aGUgZW51bWVyYXRpb24gb2YgdGhlIGVmZmVjdAorLy8gZW5naW5lcyBwcmVzZW50IGluIGEgbGlicmFyeS4KK3R5cGVkZWYgc3RydWN0IGVmZmVjdF9kZXNjcmlwdG9yX3MgeworICAgIGVmZmVjdF91dWlkX3QgdHlwZTsgICAgIC8vIFVVSUQgb2YgdG8gdGhlIE9wZW5TTCBFUyBpbnRlcmZhY2UgaW1wbGVtZW50ZWQgYnkgdGhpcyBlZmZlY3QKKyAgICBlZmZlY3RfdXVpZF90IHV1aWQ7ICAgICAvLyBVVUlEIGZvciB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24KKyAgICB1aW50MTZfdCBhcGlWZXJzaW9uOyAgICAvLyBWZXJzaW9uIG9mIHRoZSBlZmZlY3QgQVBJIGltcGxlbWVudGVkOiBtYXRjaGVzIEVGRkVDVF9BUElfVkVSU0lPTgorICAgIHVpbnQzMl90IGZsYWdzOyAgICAgICAgIC8vIGVmZmVjdCBlbmdpbmUgY2FwYWJpbGl0aWVzL3JlcXVpcmVtZW50cyBmbGFncyAoc2VlIGJlbG93KQorICAgIHVpbnQxNl90IGNwdUxvYWQ7ICAgICAgIC8vIENQVSBsb2FkIGluZGljYXRpb24gKHNlZSBiZWxvdykKKyAgICB1aW50MTZfdCBtZW1vcnlVc2FnZTsgICAvLyBEYXRhIE1lbW9yeSB1c2FnZSAoc2VlIGJlbG93KQorICAgIGNoYXIgICAgbmFtZVtFRkZFQ1RfU1RSSU5HX0xFTl9NQVhdOyAgIC8vIGh1bWFuIHJlYWRhYmxlIGVmZmVjdCBuYW1lCisgICAgY2hhciAgICBpbXBsZW1lbnRvcltFRkZFQ1RfU1RSSU5HX0xFTl9NQVhdOyAgICAvLyBodW1hbiByZWFkYWJsZSBlZmZlY3QgaW1wbGVtZW50b3IgbmFtZQorfSBlZmZlY3RfZGVzY3JpcHRvcl90OworCisvLyBDUFUgbG9hZCBhbmQgbWVtb3J5IHVzYWdlIGluZGljYXRpb246IGVhY2ggZWZmZWN0IGltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBhbiBpbmRpY2F0aW9uIG9mCisvLyBpdHMgQ1BVIGFuZCBtZW1vcnkgdXNhZ2UgZm9yIHRoZSBhdWRpbyBlZmZlY3QgZnJhbWV3b3JrIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgZWZmZWN0cworLy8gaW5zdGFudGlhdGVkIGF0IGEgZ2l2ZW4gdGltZSBvbiBhIGdpdmVuIHBsYXRmb3JtLgorLy8gVGhlIENQVSBsb2FkIGlzIGV4cHJlc3NlZCBpbiAwLjEgTUlQUyB1bml0cyBhcyBlc3RpbWF0ZWQgb24gYW4gQVJNOUUgY29yZSAoQVJNdjVURSkgd2l0aCAwIFdTLgorLy8gVGhlIG1lbW9yeSB1c2FnZSBpcyBleHByZXNzZWQgaW4gS0IgYW5kIGluY2x1ZGVzIG9ubHkgZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeQorCisvLyBEZWZpbml0aW9ucyBmb3IgZmxhZ3MgZmllbGQgb2YgZWZmZWN0IGRlc2NyaXB0b3IuCisvLyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIHwgZGVzY3JpcHRpb24gICAgICAgICAgICAgICB8IGJpdHMgICAgICB8IHZhbHVlcworLy8gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICB8IGNvbm5lY3Rpb24gbW9kZSAgICAgICAgICAgfCAwLi4xICAgICAgfCAwIGluc2VydDogYWZ0ZXIgdHJhY2sgcHJvY2VzcworLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDEgYXV4aWxpYXJ5OiBjb25uZWN0IHRvIHRyYWNrIGF1eGlsaWFyeQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICBvdXRwdXQgYW5kIHVzZSBzZW5kIGxldmVsCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMiByZXBsYWNlOiByZXBsYWNlcyB0cmFjayBwcm9jZXNzIGZ1bmN0aW9uOworLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgbXVzdCBpbXBsZW1lbnQgU1JDLCB2b2x1bWUgYW5kIG1vbm8gdG8gc3RlcmVvLgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDMgcmVzZXJ2ZWQKKy8vICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgfCBpbnNlcnRpb24gcHJlZmVyZW5jZSAgICAgIHwgMi4uNCAgICAgIHwgMCBub25lCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMSBmaXJzdCBvZiB0aGUgY2hhaW4KKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAyIGxhc3Qgb2YgdGhlIGNoYWluCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMyBleGNsdXNpdmUgKG9ubHkgZWZmZWN0IGluIHRoZSBpbnNlcnQgY2hhaW4pCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgNC4uNyByZXNlcnZlZAorLy8gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICB8IFZvbHVtZSBtYW5hZ2VtZW50ICAgICAgICAgfCA1Li42ICAgICAgfCAwIG5vbmUKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAxIGltcGxlbWVudHMgdm9sdW1lIGNvbnRyb2wKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAyIHJlcXVpcmVzIHZvbHVtZSBpbmRpY2F0aW9uCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMyByZXNlcnZlZAorLy8gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICB8IERldmljZSBpbmRpY2F0aW9uICAgICAgICAgfCA3Li44ICAgICAgfCAwIG5vbmUKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAxIHJlcXVpcmVzIGRldmljZSB1cGRhdGVzCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMi4uMyByZXNlcnZlZAorLy8gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICB8IFNhbXBsZSBpbnB1dCBtb2RlICAgICAgICAgfCA5Li4xMCAgICAgfCAwIGRpcmVjdDogcHJvY2VzcygpIGZ1bmN0aW9uIG9yIEVGRkVDVF9DTURfQ09ORklHVVJFCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBjb21tYW5kIG11c3Qgc3BlY2lmeSBhIGJ1ZmZlciBkZXNjcmlwdG9yCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMSBwcm92aWRlcjogcHJvY2VzcygpIGZ1bmN0aW9uIHVzZXMgdGhlCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBidWZmZXJQcm92aWRlciBpbmRpY2F0ZWQgYnkgdGhlCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBFRkZFQ1RfQ01EX0NPTkZJR1VSRSBjb21tYW5kIHRvIHJlcXVlc3QgaW5wdXQuCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBidWZmZXJzLgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDIgYm90aDogYm90aCBpbnB1dCBtb2RlcyBhcmUgc3VwcG9ydGVkCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMyByZXNlcnZlZAorLy8gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICB8IFNhbXBsZSBvdXRwdXQgbW9kZSAgICAgICAgfCAxMS4uMTIgICAgfCAwIGRpcmVjdDogcHJvY2VzcygpIGZ1bmN0aW9uIG9yIEVGRkVDVF9DTURfQ09ORklHVVJFCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBjb21tYW5kIG11c3Qgc3BlY2lmeSBhIGJ1ZmZlciBkZXNjcmlwdG9yCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMSBwcm92aWRlcjogcHJvY2VzcygpIGZ1bmN0aW9uIHVzZXMgdGhlCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBidWZmZXJQcm92aWRlciBpbmRpY2F0ZWQgYnkgdGhlCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBFRkZFQ1RfQ01EX0NPTkZJR1VSRSBjb21tYW5kIHRvIHJlcXVlc3Qgb3V0cHV0CisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBidWZmZXJzLgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDIgYm90aDogYm90aCBvdXRwdXQgbW9kZXMgYXJlIHN1cHBvcnRlZAorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDMgcmVzZXJ2ZWQKKy8vICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgfCBIYXJkd2FyZSBhY2NlbGVyYXRpb24gICAgIHwgMTMuLjE1ICAgIHwgMCBObyBoYXJkd2FyZSBhY2NlbGVyYXRpb24KKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAxIG5vbiB0dW5uZWxlZCBodyBhY2NlbGVyYXRpb246IHRoZSBwcm9jZXNzKCkgZnVuY3Rpb24KKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgIHJlYWRzIHRoZSBzYW1wbGVzLCBzZW5kIHRoZW0gdG8gSFcgYWNjZWxlcmF0ZWQKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgIGVmZmVjdCBwcm9jZXNzb3IsIHJlYWRzIGJhY2sgdGhlIHByb2Nlc3NlZCBzYW1wbGVzCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBhbmQgcmV0dXJucyB0aGVtIHRvIHRoZSBvdXRwdXQgYnVmZmVyLgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDIgdHVubmVsZWQgaHcgYWNjZWxlcmF0aW9uOiB0aGUgcHJvY2VzcygpIGZ1bmN0aW9uIGlzCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICB0cmFuc3BhcmVudC4gVGhlIGVmZmVjdCBpbnRlcmZhY2UgaXMgb25seSB1c2VkIHRvCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBjb250cm9sIHRoZSBlZmZlY3QgZW5naW5lLiBUaGlzIG1vZGUgaXMgcmVsZXZhbnQgZm9yCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBnbG9iYWwgZWZmZWN0cyBhY3R1YWxseSBhcHBsaWVkIGJ5IHRoZSBhdWRpbworLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgaGFyZHdhcmUgb24gdGhlIG91dHB1dCBzdHJlYW0uCisvLyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIHwgQXVkaW8gTW9kZSBpbmRpY2F0aW9uICAgICB8IDE2Li4xNyAgICB8IDAgbm9uZQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDEgcmVxdWlyZXMgYXVkaW8gbW9kZSB1cGRhdGVzCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMi4uMyByZXNlcnZlZAorLy8gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gSW5zZXJ0IG1vZGUKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLICAgICAgICAgICAweDAwMDAwMDAzCisjZGVmaW5lIEVGRkVDVF9GTEFHX1RZUEVfSU5TRVJUICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfVFlQRV9SRVBMQUNFICAgICAgICAweDAwMDAwMDAyCisKKy8vIEluc2VydCBwcmVmZXJlbmNlCisjZGVmaW5lIEVGRkVDVF9GTEFHX0lOU0VSVF9NQVNLICAgICAgICAgMHgwMDAwMDAxQworI2RlZmluZSBFRkZFQ1RfRkxBR19JTlNFUlRfQU5ZICAgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfSU5TRVJUX0ZJUlNUICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIEVGRkVDVF9GTEFHX0lOU0VSVF9MQVNUICAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBFRkZFQ1RfRkxBR19JTlNFUlRfRVhDTFVTSVZFICAgIDB4MDAwMDAwMEMKKworCisvLyBWb2x1bWUgY29udHJvbAorI2RlZmluZSBFRkZFQ1RfRkxBR19WT0xVTUVfTUFTSyAgICAgICAgIDB4MDAwMDAwNjAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfVk9MVU1FX0NUUkwgICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIEVGRkVDVF9GTEFHX1ZPTFVNRV9JTkQgICAgICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBFRkZFQ1RfRkxBR19WT0xVTUVfTk9ORSAgICAgICAgIDB4MDAwMDAwMDAKKworLy8gRGV2aWNlIGluZGljYXRpb24KKyNkZWZpbmUgRUZGRUNUX0ZMQUdfREVWSUNFX01BU0sgICAgICAgICAweDAwMDAwMTgwCisjZGVmaW5lIEVGRkVDVF9GTEFHX0RFVklDRV9JTkQgICAgICAgICAgMHgwMDAwMDA4MAorI2RlZmluZSBFRkZFQ1RfRkxBR19ERVZJQ0VfTk9ORSAgICAgICAgIDB4MDAwMDAwMDAKKworLy8gU2FtcGxlIGlucHV0IG1vZGVzCisjZGVmaW5lIEVGRkVDVF9GTEFHX0lOUFVUX01BU0sgICAgICAgICAgMHgwMDAwMDYwMAorI2RlZmluZSBFRkZFQ1RfRkxBR19JTlBVVF9ESVJFQ1QgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfSU5QVVRfUFJPVklERVIgICAgICAweDAwMDAwMjAwCisjZGVmaW5lIEVGRkVDVF9GTEFHX0lOUFVUX0JPVEggICAgICAgICAgMHgwMDAwMDQwMAorCisvLyBTYW1wbGUgb3V0cHV0IG1vZGVzCisjZGVmaW5lIEVGRkVDVF9GTEFHX09VVFBVVF9NQVNLICAgICAgICAgIDB4MDAwMDE4MDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfT1VUUFVUX0RJUkVDVCAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBFRkZFQ1RfRkxBR19PVVRQVVRfUFJPVklERVIgICAgICAweDAwMDAwODAwCisjZGVmaW5lIEVGRkVDVF9GTEFHX09VVFBVVF9CT1RIICAgICAgICAgIDB4MDAwMDEwMDAKKworLy8gSGFyZHdhcmUgYWNjZWxlcmF0aW9uIG1vZGUKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfSFdfQUNDX01BU0sgICAgICAgICAgMHgwMDAwNjAwMAorI2RlZmluZSBFRkZFQ1RfRkxBR19IV19BQ0NfU0lNUExFICAgICAgICAweDAwMDAyMDAwCisjZGVmaW5lIEVGRkVDVF9GTEFHX0hXX0FDQ19UVU5ORUwgICAgICAgIDB4MDAwMDQwMDAKKworLy8gQXVkaW8gbW9kZSBpbmRpY2F0aW9uCisjZGVmaW5lIEVGRkVDVF9GTEFHX0FVRElPX01PREVfTUFTSyAgICAgIDB4MDAwMTgwMDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfQVVESU9fTU9ERV9JTkQgICAgICAgMHgwMDAwODAwMAorI2RlZmluZSBFRkZFQ1RfRkxBR19BVURJT19NT0RFX05PTkUgICAgICAweDAwMDAwMDAwCisKKy8vIEZvcndhcmQgZGVmaW5pdGlvbiBvZiB0eXBlIGF1ZGlvX2J1ZmZlcl90Cit0eXBlZGVmIHN0cnVjdCBhdWRpb19idWZmZXJfcyBhdWRpb19idWZmZXJfdDsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgcHJvY2VzcworLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBFZmZlY3QgcHJvY2VzcyBmdW5jdGlvbi4gVGFrZXMgaW5wdXQgc2FtcGxlcyBhcyBzcGVjaWZpZWQKKy8vICAgICAgICAgIChjb3VudCBhbmQgbG9jYXRpb24pIGluIGlucHV0IGJ1ZmZlciBkZXNjcmlwdG9yIGFuZCBvdXRwdXQgcHJvY2Vzc2VkCisvLyAgICAgICAgICBzYW1wbGVzIGFzIHNwZWNpZmllZCBpbiBvdXRwdXQgYnVmZmVyIGRlc2NyaXB0b3IuIElmIHRoZSBidWZmZXIgZGVzY3JpcHRvcgorLy8gICAgICAgICAgaXMgbm90IHNwZWNpZmllZCB0aGUgZnVuY3Rpb24gbXVzdCB1c2UgZWl0aGVyIHRoZSBidWZmZXIgb3IgdGhlCisvLyAgICAgICAgICBidWZmZXIgcHJvdmlkZXIgZnVuY3Rpb24gaW5zdGFsbGVkIGJ5IHRoZSBFRkZFQ1RfQ01EX0NPTkZJR1VSRSBjb21tYW5kLgorLy8KKy8vICAgIE5PVEU6IHRoZSBwcm9jZXNzKCkgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlICJyZWFsLXRpbWUgc2FmZSIgdGhhdCBpcworLy8gICAgICBpdCBzaG91bGQgbm90IHBlcmZvcm0gYmxvY2tpbmcgY2FsbHM6IG1hbGxvYy9mcmVlLCBzbGVlcCwgcmVhZC93cml0ZS9vcGVuL2Nsb3NlLAorLy8gICAgICBwdGhyZWFkX2NvbmRfd2FpdC9wdGhyZWFkX211dGV4X2xvY2suLi4KKy8vCisvLyAgICBJbnB1dDoKKy8vICAgICAgICAgIGVmZmVjdF9pbnRlcmZhY2VfdDogaGFuZGxlIHRvIHRoZSBlZmZlY3QgaW50ZXJmYWNlIHRoaXMgZnVuY3Rpb24KKy8vICAgICAgICAgICAgICBpcyBjYWxsZWQgb24uCisvLyAgICAgICAgICBpbkJ1ZmZlcjogICBidWZmZXIgZGVzY3JpcHRvciBpbmRpY2F0aW5nIHdoZXJlIHRvIHJlYWQgc2FtcGxlcyB0byBwcm9jZXNzLgorLy8gICAgICAgICAgICAgIElmIE5VTEwsIHVzZSB0aGUgY29uZmlndXJhdGlvbiBwYXNzZWQgYnkgRUZGRUNUX0NNRF9DT05GSUdVUkUgY29tbWFuZC4KKy8vCisvLyAgICAgICAgICBpbkJ1ZmZlcjogICBidWZmZXIgZGVzY3JpcHRvciBpbmRpY2F0aW5nIHdoZXJlIHRvIHdyaXRlIHByb2Nlc3NlZCBzYW1wbGVzLgorLy8gICAgICAgICAgICAgIElmIE5VTEwsIHVzZSB0aGUgY29uZmlndXJhdGlvbiBwYXNzZWQgYnkgRUZGRUNUX0NNRF9DT05GSUdVUkUgY29tbWFuZC4KKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMIGludmFsaWQgaW50ZXJmYWNlIGhhbmRsZSBvcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZCBpbnB1dC9vdXRwdXQgYnVmZmVyIGRlc2NyaXB0aW9uCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordHlwZWRlZiBpbnQzMl90ICgqZWZmZWN0X3Byb2Nlc3NfdCkoZWZmZWN0X2ludGVyZmFjZV90IHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19idWZmZXJfdCAqaW5CdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19idWZmZXJfdCAqb3V0QnVmZmVyKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgY29tbWFuZAorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBTZW5kIGEgY29tbWFuZCBhbmQgcmVjZWl2ZSBhIHJlc3BvbnNlIHRvL2Zyb20gZWZmZWN0IGVuZ2luZS4KKy8vCisvLyAgICBJbnB1dDoKKy8vICAgICAgICAgIGVmZmVjdF9pbnRlcmZhY2VfdDogaGFuZGxlIHRvIHRoZSBlZmZlY3QgaW50ZXJmYWNlIHRoaXMgZnVuY3Rpb24KKy8vICAgICAgICAgICAgICBpcyBjYWxsZWQgb24uCisvLyAgICAgICAgICBjbWRDb2RlOiAgICBjb21tYW5kIGNvZGU6IHRoZSBjb21tYW5kIGNhbiBiZSBhIHN0YW5kYXJkaXplZCBjb21tYW5kIGRlZmluZWQgaW4KKy8vICAgICAgICAgICAgICBlZmZlY3RfY29tbWFuZF9lIChzZWUgYmVsb3cpIG9yIGEgcHJvcHJpZXRhcnkgY29tbWFuZC4KKy8vICAgICAgICAgIGNtZFNpemU6ICAgIHNpemUgb2YgY29tbWFuZCBpbiBieXRlcworLy8gICAgICAgICAgcENtZERhdGE6ICAgcG9pbnRlciB0byBjb21tYW5kIGRhdGEKKy8vICAgICAgICAgIHBSZXBseURhdGE6IHBvaW50ZXIgdG8gcmVwbHkgZGF0YQorLy8KKy8vICAgIElucHV0L091dHB1dDoKKy8vICAgICAgICAgIHJlcGx5U2l6ZTogbWF4aW11bSBzaXplIG9mIHJlcGx5IGRhdGEgYXMgaW5wdXQKKy8vICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCBzaXplIG9mIHJlcGx5IGRhdGEgYXMgb3V0cHV0CisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgICAgcmV0dXJuZWQgdmFsdWU6IDAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMIGludmFsaWQgaW50ZXJmYWNlIGhhbmRsZSBvcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZCBjb21tYW5kL3JlcGx5IHNpemUgb3IgZm9ybWF0IGFjY29yZGluZyB0byBjb21tYW5kIGNvZGUKKy8vICAgICAgICAgICAgICBUaGUgcmV0dXJuIGNvZGUgc2hvdWxkIGJlIHJlc3RyaWN0ZWQgdG8gaW5kaWNhdGUgcHJvYmxlbXMgcmVsYXRlZCB0byB0aGUgdGhpcworLy8gICAgICAgICAgICAgIEFQSSBzcGVjaWZpY2F0aW9uLiBTdGF0dXMgcmVsYXRlZCB0byB0aGUgZXhlY3V0aW9uIG9mIGEgcGFydGljdWxhciBjb21tYW5kIHNob3VsZCBiZQorLy8gICAgICAgICAgICAgIGluZGljYXRlZCBhcyBwYXJ0IG9mIHRoZSByZXBseSBmaWVsZC4KKy8vCisvLyAgICAgICAgICAqcFJlcGx5RGF0YSB1cGRhdGVkIHdpdGggY29tbWFuZCByZXNwb25zZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit0eXBlZGVmIGludDMyX3QgKCplZmZlY3RfY29tbWFuZF90KShlZmZlY3RfaW50ZXJmYWNlX3Qgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY21kQ29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY21kU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBDbWREYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqcmVwbHlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcFJlcGx5RGF0YSk7CisKKworLy8gRWZmZWN0IGNvbnRyb2wgaW50ZXJmYWNlIGRlZmluaXRpb24KK3N0cnVjdCBlZmZlY3RfaW50ZXJmYWNlX3MgeworICAgIGVmZmVjdF9wcm9jZXNzX3QgcHJvY2VzczsKKyAgICBlZmZlY3RfY29tbWFuZF90IGNvbW1hbmQ7Cit9OworCisKKy8vCisvLy0tLSBTdGFuZGFyZGl6ZWQgY29tbWFuZCBjb2RlcyBmb3IgY29tbWFuZCgpIGZ1bmN0aW9uCisvLworZW51bSBlZmZlY3RfY29tbWFuZF9lIHsKKyAgIEVGRkVDVF9DTURfSU5JVCwgICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgZWZmZWN0IGVuZ2luZQorICAgRUZGRUNUX0NNRF9DT05GSUdVUkUsICAgICAgICAgICAgLy8gY29uZmlndXJlIGVmZmVjdCBlbmdpbmUgKHNlZSBlZmZlY3RfY29uZmlnX3QpCisgICBFRkZFQ1RfQ01EX1JFU0VULCAgICAgICAgICAgICAgICAvLyByZXNldCBlZmZlY3QgZW5naW5lCisgICBFRkZFQ1RfQ01EX0VOQUJMRSwgICAgICAgICAgICAgICAvLyBlbmFibGUgZWZmZWN0IHByb2Nlc3MKKyAgIEVGRkVDVF9DTURfRElTQUJMRSwgICAgICAgICAgICAgIC8vIGRpc2FibGUgZWZmZWN0IHByb2Nlc3MKKyAgIEVGRkVDVF9DTURfU0VUX1BBUkFNLCAgICAgICAgICAgIC8vIHNldCBwYXJhbWV0ZXIgaW1tZWRpYXRlbHkgKHNlZSBlZmZlY3RfcGFyYW1fdCkKKyAgIEVGRkVDVF9DTURfU0VUX1BBUkFNX0RFRkVSUkVELCAgIC8vIHNldCBwYXJhbWV0ZXIgZGVmZXJyZWQKKyAgIEVGRkVDVF9DTURfU0VUX1BBUkFNX0NPTU1JVCwgICAgIC8vIGNvbW1pdCBwcmV2aW91cyBzZXQgcGFyYW1ldGVyIGRlZmVycmVkCisgICBFRkZFQ1RfQ01EX0dFVF9QQVJBTSwgICAgICAgICAgICAvLyBnZXQgcGFyYW1ldGVyCisgICBFRkZFQ1RfQ01EX1NFVF9ERVZJQ0UsICAgICAgICAgICAvLyBzZXQgYXVkaW8gZGV2aWNlIChzZWUgYXVkaW9fZGV2aWNlX2UpCisgICBFRkZFQ1RfQ01EX1NFVF9WT0xVTUUsICAgICAgICAgICAvLyBzZXQgdm9sdW1lCisgICBFRkZFQ1RfQ01EX1NFVF9BVURJT19NT0RFLCAgICAgICAvLyBzZXQgdGhlIGF1ZGlvIG1vZGUgKG5vcm1hbCwgcmluZywgLi4uKQorICAgRUZGRUNUX0NNRF9GSVJTVF9QUk9QUklFVEFSWSA9IDB4MTAwMDAgLy8gZmlyc3QgcHJvcHJpZXRhcnkgY29tbWFuZCBjb2RlCit9OworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX0lOSVQKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIEluaXRpYWxpemUgZWZmZWN0IGVuZ2luZTogQWxsIGNvbmZpZ3VyYXRpb25zIHJldHVybiB0byBkZWZhdWx0CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBjb21tYW5kIGZvcm1hdDoKKy8vICBzaXplOiAwCisvLyAgZGF0YTogTi9BCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyByZXBseSBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKGludCkKKy8vICBkYXRhOiBzdGF0dXMKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfQ09ORklHVVJFCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBBcHBseSBuZXcgYXVkaW8gcGFyYW1ldGVycyBjb25maWd1cmF0aW9ucyBmb3IgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBjb21tYW5kIGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YoZWZmZWN0X2NvbmZpZ190KQorLy8gIGRhdGE6IGVmZmVjdF9jb25maWdfdAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IHNpemVvZihpbnQpCisvLyAgZGF0YTogc3RhdHVzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX1JFU0VUCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBSZXNldCB0aGUgZWZmZWN0IGVuZ2luZS4gS2VlcCBjb25maWd1cmF0aW9uIGJ1dCByZXNldHMgc3RhdGUgYW5kIGJ1ZmZlciBjb250ZW50CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBjb21tYW5kIGZvcm1hdDoKKy8vICBzaXplOiAwCisvLyAgZGF0YTogTi9BCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyByZXBseSBmb3JtYXQ6CisvLyAgc2l6ZTogMAorLy8gIGRhdGE6IE4vQQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gY29tbWFuZDogRUZGRUNUX0NNRF9FTkFCTEUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIEVuYWJsZSB0aGUgcHJvY2Vzcy4gQ2FsbGVkIGJ5IHRoZSBmcmFtZXdvcmsgYmVmb3JlIHRoZSBmaXJzdCBjYWxsIHRvIHByb2Nlc3MoKQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogMAorLy8gIGRhdGE6IE4vQQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IHNpemVvZihpbnQpCisvLyAgZGF0YTogc3RhdHVzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX0RJU0FCTEUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIERpc2FibGUgdGhlIHByb2Nlc3MuIENhbGxlZCBieSB0aGUgZnJhbWV3b3JrIGFmdGVyIHRoZSBsYXN0IGNhbGwgdG8gcHJvY2VzcygpCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBjb21tYW5kIGZvcm1hdDoKKy8vICBzaXplOiAwCisvLyAgZGF0YTogTi9BCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyByZXBseSBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKGludCkKKy8vICBkYXRhOiBzdGF0dXMKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfU0VUX1BBUkFNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBTZXQgYSBwYXJhbWV0ZXIgYW5kIGFwcGx5IGl0IGltbWVkaWF0ZWx5CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBjb21tYW5kIGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZSBvZiBwYXJhbSBhbmQgdmFsdWUKKy8vICBkYXRhOiBlZmZlY3RfcGFyYW1fdCArIHBhcmFtICsgdmFsdWUuIFNlZSBlZmZlY3RfcGFyYW1fdCBkZWZpbml0aW9uIGJlbG93IGZvciB2YWx1ZSBvZmZzZXQKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlcGx5IGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YoaW50KQorLy8gIGRhdGE6IHN0YXR1cworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gY29tbWFuZDogRUZGRUNUX0NNRF9TRVRfUEFSQU1fREVGRVJSRUQKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIFNldCBhIHBhcmFtZXRlciBidXQgYXBwbHkgaXQgb25seSB3aGVuIHJlY2VpdmluZyBFRkZFQ1RfQ01EX1NFVF9QQVJBTV9DT01NSVQgY29tbWFuZAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemUgb2YgcGFyYW0gYW5kIHZhbHVlCisvLyAgZGF0YTogZWZmZWN0X3BhcmFtX3QgKyBwYXJhbSArIHZhbHVlLiBTZWUgZWZmZWN0X3BhcmFtX3QgZGVmaW5pdGlvbiBiZWxvdyBmb3IgdmFsdWUgb2Zmc2V0CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyByZXBseSBmb3JtYXQ6CisvLyAgc2l6ZTogMAorLy8gIGRhdGE6IE4vQQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gY29tbWFuZDogRUZGRUNUX0NNRF9TRVRfUEFSQU1fQ09NTUlUCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBBcHBseSBhbGwgcHJldmlvdXNseSByZWNlaXZlZCBFRkZFQ1RfQ01EX1NFVF9QQVJBTV9ERUZFUlJFRCBjb21tYW5kcworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogMAorLy8gIGRhdGE6IE4vQQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IHNpemVvZihpbnQpCisvLyAgZGF0YTogc3RhdHVzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX0dFVF9QQVJBTQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZGVzY3JpcHRpb246CisvLyAgR2V0IGEgcGFyYW1ldGVyIHZhbHVlCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBjb21tYW5kIGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZSBvZiBwYXJhbQorLy8gIGRhdGE6IGVmZmVjdF9wYXJhbV90ICsgcGFyYW0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlcGx5IGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZSBvZiBwYXJhbSBhbmQgdmFsdWUKKy8vICBkYXRhOiBlZmZlY3RfcGFyYW1fdCArIHBhcmFtICsgdmFsdWUuIFNlZSBlZmZlY3RfcGFyYW1fdCBkZWZpbml0aW9uIGJlbG93IGZvciB2YWx1ZSBvZmZzZXQKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfU0VUX0RFVklDRQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZGVzY3JpcHRpb246CisvLyAgU2V0IHRoZSByZW5kZXJpbmcgZGV2aWNlIHRoZSBhdWRpbyBvdXRwdXQgcGF0aCBpcyBjb25uZWN0ZWQgdG8uIFNlZSBhdWRpb19kZXZpY2VfZSBmb3IgZGV2aWNlCisvLyAgdmFsdWVzLgorLy8gIFRoZSBlZmZlY3QgaW1wbGVtZW50YXRpb24gbXVzdCBzZXQgRUZGRUNUX0ZMQUdfREVWSUNFX0lORCBmbGFnIGluIGl0cyBkZXNjcmlwdG9yIHRvIHJlY2VpdmUgdGhpcworLy8gIGNvbW1hbmQgd2hlbiB0aGUgZGV2aWNlIGNoYW5nZXMKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGNvbW1hbmQgZm9ybWF0OgorLy8gIHNpemU6IHNpemVvZih1aW50MzJfdCkKKy8vICBkYXRhOiBhdWRpb19kZXZpY2VfZQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IDAKKy8vICBkYXRhOiBOL0EKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfU0VUX1ZPTFVNRQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZGVzY3JpcHRpb246CisvLyAgU2V0IGFuZCBnZXQgdm9sdW1lLiBVc2VkIGJ5IGF1ZGlvIGZyYW1ld29yayB0byBkZWxlZ2F0ZSB2b2x1bWUgY29udHJvbCB0byBlZmZlY3QgZW5naW5lLgorLy8gIFRoZSBlZmZlY3QgaW1wbGVtZW50YXRpb24gbXVzdCBzZXQgRUZGRUNUX0ZMQUdfVk9MVU1FX0lORCBhbmQvb3IgRUZGRUNUX0ZMQUdfVk9MVU1FX0NUUkwgZmxhZyBpbgorLy8gIGl0cyBkZXNjcmlwdG9yIHRvIHJlY2VpdmUgdGhpcyBjb21tYW5kIGJlZm9yZSBldmVyeSBjYWxsIHRvIHByb2Nlc3MoKSBmdW5jdGlvbgorLy8gIElmIEVGRkVDVF9GTEFHX1ZPTFVNRV9DVFJMIGZsYWcgaXMgc2V0IGluIHRoZSBlZmZlY3QgZGVzY3JpcHRvciwgdGhlIGVmZmVjdCBlbmdpbmUgbXVzdCByZXR1cm4KKy8vICB0aGUgdm9sdW1lIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgYmVmb3JlIHRoZSBlZmZlY3QgaXMgcHJvY2Vzc2VkLiBUaGUgb3ZlcmFsbCB2b2x1bWUgKHRoZSB2b2x1bWUKKy8vICBhY3R1YWxseSBhcHBsaWVkIGJ5IHRoZSBlZmZlY3QgZW5naW5lIG11bHRpcGxpZWQgYnkgdGhlIHJldHVybmVkIHZhbHVlKSBzaG91bGQgbWF0Y2ggdGhlIHZhbHVlCisvLyAgaW5kaWNhdGVkIGluIHRoZSBjb21tYW5kLgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogbiAqIHNpemVvZih1aW50MzJfdCkKKy8vICBkYXRhOiB2b2x1bWUgZm9yIGVhY2ggY2hhbm5lbCBkZWZpbmVkIGluIGVmZmVjdF9jb25maWdfdCBmb3Igb3V0cHV0IGJ1ZmZlciBleHByZXNzZWQgaW4KKy8vICAgICAgOC4yNCBmaXhlZCBwb2ludCBmb3JtYXQKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlcGx5IGZvcm1hdDoKKy8vICBzaXplOiBuICogc2l6ZW9mKHVpbnQzMl90KSAvIDAKKy8vICBkYXRhOiAtIGlmIEVGRkVDVF9GTEFHX1ZPTFVNRV9DVFJMIGlzIHNldCBpbiBlZmZlY3QgZGVzY3JpcHRvcjoKKy8vICAgICAgICAgICAgICB2b2x1bWUgZm9yIGVhY2ggY2hhbm5lbCBkZWZpbmVkIGluIGVmZmVjdF9jb25maWdfdCBmb3Igb3V0cHV0IGJ1ZmZlciBleHByZXNzZWQgaW4KKy8vICAgICAgICAgICAgICA4LjI0IGZpeGVkIHBvaW50IGZvcm1hdAorLy8gICAgICAgIC0gaWYgRUZGRUNUX0ZMQUdfVk9MVU1FX0NUUkwgaXMgbm90IHNldCBpbiBlZmZlY3QgZGVzY3JpcHRvcjoKKy8vICAgICAgICAgICAgICBOL0EKKy8vICBJdCBpcyBsZWdhbCB0byByZWNlaXZlIGEgbnVsbCBwb2ludGVyIGFzIHBSZXBseURhdGEgaW4gd2hpY2ggY2FzZSB0aGUgZWZmZWN0IGZyYW1ld29yayBoYXMKKy8vICBkZWxlZ2F0ZWQgdm9sdW1lIGNvbnRyb2wgdG8gYW5vdGhlciBlZmZlY3QKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfU0VUX0FVRElPX01PREUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIFNldCB0aGUgYXVkaW8gbW9kZS4gVGhlIGVmZmVjdCBpbXBsZW1lbnRhdGlvbiBtdXN0IHNldCBFRkZFQ1RfRkxBR19BVURJT19NT0RFX0lORCBmbGFnIGluIGl0cworLy8gIGRlc2NyaXB0b3IgdG8gcmVjZWl2ZSB0aGlzIGNvbW1hbmQgd2hlbiB0aGUgYXVkaW8gbW9kZSBjaGFuZ2VzLgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKHVpbnQzMl90KQorLy8gIGRhdGE6IGF1ZGlvX21vZGVfZQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IDAKKy8vICBkYXRhOiBOL0EKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfRklSU1RfUFJPUFJJRVRBUlkKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIEFsbCBwcm9wcmlldGFyeSBlZmZlY3QgY29tbWFuZHMgbXVzdCB1c2UgY29tbWFuZCBjb2RlcyBhYm92ZSB0aGlzIHZhbHVlLiBUaGUgc2l6ZSBhbmQgZm9ybWF0IG9mCisvLyAgY29tbWFuZCBhbmQgcmVzcG9uc2UgZmllbGRzIGlzIGZyZWUgaW4gdGhpcyBjYXNlCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworLy8gQXVkaW8gYnVmZmVyIGRlc2NyaXB0b3IgdXNlZCBieSBwcm9jZXNzKCksIGJ1ZmZlclByb3ZpZGVyKCkgZnVuY3Rpb25zIGFuZCBidWZmZXJfY29uZmlnX3QKKy8vIHN0cnVjdHVyZS4gTXVsdGktY2hhbm5lbCBhdWRpbyBpcyBhbHdheXMgaW50ZXJsZWF2ZWQuIFRoZSBjaGFubmVsIG9yZGVyIGlzIGZyb20gTFNCIHRvIE1TQiB3aXRoCisvLyByZWdhcmQgdG8gdGhlIGNoYW5uZWwgbWFzayBkZWZpbml0aW9uIGluIGF1ZGlvX2NoYW5uZWxzX2UgZS5nIDoKKy8vIFN0ZXJlbzogbGVmdCwgcmlnaHQKKy8vIDUgcG9pbnQgMTogZnJvbnQgbGVmdCwgZnJvbnQgcmlnaHQsIGZyb250IGNlbnRlciwgbG93IGZyZXF1ZW5jeSwgYmFjayBsZWZ0LCBiYWNrIHJpZ2h0CisvLyBUaGUgYnVmZmVyIHNpemUgaXMgZXhwcmVzc2VkIGluIGZyYW1lIGNvdW50LCBhIGZyYW1lIGJlaW5nIGNvbXBvc2VkIG9mIHNhbXBsZXMgZm9yIGFsbAorLy8gY2hhbm5lbHMgYXQgYSBnaXZlbiB0aW1lLiBGcmFtZSBzaXplIGZvciB1bnNwZWNpZmllZCBmb3JtYXQgKEFVRElPX0ZPUk1BVF9PVEhFUikgaXMgOCBiaXQgYnkKKy8vIGRlZmluaXRpb24KK3N0cnVjdCBhdWRpb19idWZmZXJfcyB7CisgICAgc2l6ZV90ICAgZnJhbWVDb3VudDsgICAgICAgIC8vIG51bWJlciBvZiBmcmFtZXMgaW4gYnVmZmVyCisgICAgdW5pb24geworICAgICAgICB2b2lkKiAgICAgICByYXc7ICAgICAgICAvLyByYXcgcG9pbnRlciB0byBzdGFydCBvZiBidWZmZXIKKyAgICAgICAgaW50MzJfdCogICAgczMyOyAgICAgICAgLy8gcG9pbnRlciB0byBzaWduZWQgMzIgYml0IGRhdGEgYXQgc3RhcnQgb2YgYnVmZmVyCisgICAgICAgIGludDE2X3QqICAgIHMxNjsgICAgICAgIC8vIHBvaW50ZXIgdG8gc2lnbmVkIDE2IGJpdCBkYXRhIGF0IHN0YXJ0IG9mIGJ1ZmZlcgorICAgICAgICB1aW50OF90KiAgICB1ODsgICAgICAgICAvLyBwb2ludGVyIHRvIHVuc2lnbmVkIDggYml0IGRhdGEgYXQgc3RhcnQgb2YgYnVmZmVyCisgICAgfTsKK307CisKKy8vIFRoZSBidWZmZXJfcHJvdmlkZXJfcyBzdHJ1Y3R1cmUgY29udGFpbnMgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQKKy8vIGJ5IHRoZSBlZmZlY3QgZW5naW5lIHByb2Nlc3MoKSBmdW5jdGlvbiB0byBxdWVyeSBhbmQgcmVsZWFzZSBpbnB1dAorLy8gb3Igb3V0cHV0IGF1ZGlvIGJ1ZmZlci4KKy8vIFRoZSBnZXRCdWZmZXIoKSBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gcmV0cmlldmUgYSBidWZmZXIgd2hlcmUgZGF0YQorLy8gc2hvdWxkIHJlYWQgZnJvbSBvciB3cml0dGVuIHRvIGJ5IHByb2Nlc3MoKSBmdW5jdGlvbi4KKy8vIFRoZSByZWxlYXNlQnVmZmVyKCkgZnVuY3Rpb24gTVVTVCBiZSBjYWxsZWQgd2hlbiB0aGUgYnVmZmVyIHJldHJpZXZlZAorLy8gd2l0aCBnZXRCdWZmZXIoKSBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisvLyBUaGUgcHJvY2VzcyBmdW5jdGlvbiBzaG91bGQgdXNlIHRoZSBidWZmZXIgcHJvdmlkZXIgbWVjaGFuaXNtIHRvIHJldHJpZXZlCisvLyBpbnB1dCBvciBvdXRwdXQgYnVmZmVyIGlmIHRoZSBpbkJ1ZmZlciBvciBvdXRCdWZmZXIgcGFzc2VkIGFzIGFyZ3VtZW50IGlzIE5VTEwKKy8vIGFuZCB0aGUgYnVmZmVyIGNvbmZpZ3VyYXRpb24gKGJ1ZmZlcl9jb25maWdfdCkgZ2l2ZW4gYnkgdGhlIEVGRkVDVF9DTURfQ09ORklHVVJFCisvLyBjb21tYW5kIGRpZCBub3Qgc3BlY2lmeSBhbiBhdWRpbyBidWZmZXIuCisKK3R5cGVkZWYgaW50MzJfdCAoKiBidWZmZXJfZnVuY3Rpb25fdCkodm9pZCAqY29va2llLCBhdWRpb19idWZmZXJfdCAqYnVmZmVyKTsKKwordHlwZWRlZiBzdHJ1Y3QgYnVmZmVyX3Byb3ZpZGVyX3MgeworICAgIGJ1ZmZlcl9mdW5jdGlvbl90IGdldEJ1ZmZlcjsgICAgICAgLy8gcmV0cmlldmUgbmV4dCBidWZmZXIKKyAgICBidWZmZXJfZnVuY3Rpb25fdCByZWxlYXNlQnVmZmVyOyAgIC8vIHJlbGVhc2UgdXNlZCBidWZmZXIKKyAgICB2b2lkICAgICAgICpjb29raWU7ICAgICAgICAgICAgICAgIC8vIGZvciB1c2UgYnkgY2xpZW50IG9mIGJ1ZmZlciBwcm92aWRlciBmdW5jdGlvbnMKK30gYnVmZmVyX3Byb3ZpZGVyX3Q7CisKKworLy8gVGhlIGJ1ZmZlcl9jb25maWdfcyBzdHJ1Y3R1cmUgc3BlY2lmaWVzIHRoZSBpbnB1dCBvciBvdXRwdXQgYXVkaW8gZm9ybWF0CisvLyB0byBiZSB1c2VkIGJ5IHRoZSBlZmZlY3QgZW5naW5lLiBJdCBpcyBwYXJ0IG9mIHRoZSBlZmZlY3RfY29uZmlnX3QKKy8vIHN0cnVjdHVyZSB0aGF0IGRlZmluZXMgYm90aCBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlciBjb25maWd1cmF0aW9ucyBhbmQgaXMKKy8vIHBhc3NlZCBieSB0aGUgRUZGRUNUX0NNRF9DT05GSUdVUkUgY29tbWFuZC4KK3R5cGVkZWYgc3RydWN0IGJ1ZmZlcl9jb25maWdfcyB7CisgICAgYXVkaW9fYnVmZmVyX3QgIGJ1ZmZlcjsgICAgIC8vIGJ1ZmZlciBmb3IgdXNlIGJ5IHByb2Nlc3MoKSBmdW5jdGlvbiBpZiBub3QgcGFzc2VkIGV4cGxpY2l0bHkKKyAgICB1aW50MzJfdCAgIHNhbXBsaW5nUmF0ZTsgICAgLy8gc2FtcGxpbmcgcmF0ZQorICAgIHVpbnQzMl90ICAgY2hhbm5lbHM7ICAgICAgICAvLyBjaGFubmVsIG1hc2sgKHNlZSBhdWRpb19jaGFubmVsc19lKQorICAgIGJ1ZmZlcl9wcm92aWRlcl90IGJ1ZmZlclByb3ZpZGVyOyAgIC8vIGJ1ZmZlciBwcm92aWRlcgorICAgIHVpbnQ4X3QgICAgZm9ybWF0OyAgICAgICAgICAvLyBBdWRpbyBmb3JtYXQgIChzZWUgYXVkaW9fZm9ybWF0X2UpCisgICAgdWludDhfdCAgICBhY2Nlc3NNb2RlOyAgICAgIC8vIHJlYWQvd3JpdGUgb3IgYWNjdW11bGF0ZSBpbiBidWZmZXIgKGVmZmVjdF9idWZmZXJfYWNjZXNzX2UpCisgICAgdWludDE2X3QgICBtYXNrOyAgICAgICAgICAgIC8vIGluZGljYXRlcyB3aGljaCBvZiB0aGUgYWJvdmUgZmllbGRzIGlzIHZhbGlkCit9IGJ1ZmZlcl9jb25maWdfdDsKKworLy8gU2FtcGxlIGZvcm1hdAorZW51bSBhdWRpb19mb3JtYXRfZSB7CisgICAgU0FNUExFX0ZPUk1BVF9QQ01fUzE1LCAgIC8vIFBDTSBzaWduZWQgMTYgYml0cworICAgIFNBTVBMRV9GT1JNQVRfUENNX1U4LCAgICAvLyBQQ00gdW5zaWduZWQgOCBiaXRzCisgICAgU0FNUExFX0ZPUk1BVF9QQ01fUzdfMjQsIC8vIFBDTSBzaWduZWQgNy4yNCBmaXhlZCBwb2ludCByZXByZXNlbnRhdGlvbgorICAgIFNBTVBMRV9GT1JNQVRfT1RIRVIgICAgICAvLyBvdGhlciBmb3JtYXQgKGUuZy4gY29tcHJlc3NlZCkKK307CisKKy8vIENoYW5uZWwgbWFzaworZW51bSBhdWRpb19jaGFubmVsc19lIHsKKyAgICBDSEFOTkVMX0ZST05UX0xFRlQgPSAweDEsICAgICAgICAgICAgICAgICAgIC8vIGZyb250IGxlZnQgY2hhbm5lbAorICAgIENIQU5ORUxfRlJPTlRfUklHSFQgPSAweDIsICAgICAgICAgICAgICAgICAgLy8gZnJvbnQgcmlnaHQgY2hhbm5lbAorICAgIENIQU5ORUxfRlJPTlRfQ0VOVEVSID0gMHg0LCAgICAgICAgICAgICAgICAvLyBmcm9udCBjZW50ZXIgY2hhbm5lbAorICAgIENIQU5ORUxfTE9XX0ZSRVFVRU5DWSA9IDB4OCwgICAgICAgICAgICAgICAvLyBsb3cgZnJlcXVlbmN5IGNoYW5uZWwKKyAgICBDSEFOTkVMX0JBQ0tfTEVGVCA9IDB4MTAsICAgICAgICAgICAgICAgICAgIC8vIGJhY2sgbGVmdCBjaGFubmVsCisgICAgQ0hBTk5FTF9CQUNLX1JJR0hUID0gMHgyMCwgICAgICAgICAgICAgICAgICAvLyBiYWNrIHJpZ2h0IGNoYW5uZWwKKyAgICBDSEFOTkVMX0ZST05UX0xFRlRfT0ZfQ0VOVEVSID0gMHg0MCwgICAgICAgLy8gZnJvbnQgbGVmdCBvZiBjZW50ZXIgY2hhbm5lbAorICAgIENIQU5ORUxfRlJPTlRfUklHSFRfT0ZfQ0VOVEVSID0gMHg4MCwgICAgICAvLyBmcm9udCByaWdodCBvZiBjZW50ZXIgY2hhbm5lbAorICAgIENIQU5ORUxfQkFDS19DRU5URVIgPSAweDEwMCwgICAgICAgICAgICAgICAgLy8gYmFjayBjZW50ZXIgY2hhbm5lbAorICAgIENIQU5ORUxfTU9OTyA9IENIQU5ORUxfRlJPTlRfTEVGVCwKKyAgICBDSEFOTkVMX1NURVJFTyA9IChDSEFOTkVMX0ZST05UX0xFRlQgfCBDSEFOTkVMX0ZST05UX1JJR0hUKSwKKyAgICBDSEFOTkVMX1FVQUQgPSAoQ0hBTk5FTF9GUk9OVF9MRUZUIHwgQ0hBTk5FTF9GUk9OVF9SSUdIVCB8CisgICAgICAgICAgICBDSEFOTkVMX0JBQ0tfTEVGVCB8IENIQU5ORUxfQkFDS19SSUdIVCksCisgICAgQ0hBTk5FTF9TVVJST1VORCA9IChDSEFOTkVMX0ZST05UX0xFRlQgfCBDSEFOTkVMX0ZST05UX1JJR0hUIHwKKyAgICAgICAgICAgIENIQU5ORUxfRlJPTlRfQ0VOVEVSIHwgQ0hBTk5FTF9CQUNLX0NFTlRFUiksCisgICAgQ0hBTk5FTF81UE9JTlQxID0gKENIQU5ORUxfRlJPTlRfTEVGVCB8IENIQU5ORUxfRlJPTlRfUklHSFQgfAorICAgICAgICAgICAgQ0hBTk5FTF9GUk9OVF9DRU5URVIgfCBDSEFOTkVMX0xPV19GUkVRVUVOQ1kgfCBDSEFOTkVMX0JBQ0tfTEVGVCB8IENIQU5ORUxfQkFDS19SSUdIVCksCisgICAgQ0hBTk5FTF83UE9JTlQxID0gKENIQU5ORUxfRlJPTlRfTEVGVCB8IENIQU5ORUxfRlJPTlRfUklHSFQgfAorICAgICAgICAgICAgQ0hBTk5FTF9GUk9OVF9DRU5URVIgfCBDSEFOTkVMX0xPV19GUkVRVUVOQ1kgfCBDSEFOTkVMX0JBQ0tfTEVGVCB8IENIQU5ORUxfQkFDS19SSUdIVCB8CisgICAgICAgICAgICBDSEFOTkVMX0ZST05UX0xFRlRfT0ZfQ0VOVEVSIHwgQ0hBTk5FTF9GUk9OVF9SSUdIVF9PRl9DRU5URVIpLAorfTsKKworLy8gUmVuZGVyIGRldmljZQorZW51bSBhdWRpb19kZXZpY2VfZSB7CisgICAgREVWSUNFX0VBUlBJRUNFID0gMHgxLCAgICAgICAgICAgICAgICAgICAgICAvLyBlYXJwaWVjZQorICAgIERFVklDRV9TUEVBS0VSID0gMHgyLCAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlYWtlcgorICAgIERFVklDRV9XSVJFRF9IRUFEU0VUID0gMHg0LCAgICAgICAgICAgICAgICAgLy8gd2lyZWQgaGVhZHNldCwgd2l0aCBtaWNyb3Bob25lCisgICAgREVWSUNFX1dJUkVEX0hFQURQSE9ORSA9IDB4OCwgICAgICAgICAgICAgICAvLyB3aXJlZCBoZWFkcGhvbmUsIHdpdGhvdXQgbWljcm9waG9uZQorICAgIERFVklDRV9CTFVFVE9PVEhfU0NPID0gMHgxMCwgICAgICAgICAgICAgICAgLy8gZ2VuZXJpYyBibHVldG9vdGggU0NPCisgICAgREVWSUNFX0JMVUVUT09USF9TQ09fSEVBRFNFVCA9IDB4MjAsICAgICAgICAvLyBibHVldG9vdGggU0NPIGhlYWRzZXQKKyAgICBERVZJQ0VfQkxVRVRPT1RIX1NDT19DQVJLSVQgPSAweDQwLCAgICAgICAgIC8vIGJsdWV0b290aCBTQ08gY2FyIGtpdAorICAgIERFVklDRV9CTFVFVE9PVEhfQTJEUCA9IDB4ODAsICAgICAgICAgICAgICAgLy8gZ2VuZXJpYyBibHVldG9vdGggQTJEUAorICAgIERFVklDRV9CTFVFVE9PVEhfQTJEUF9IRUFEUEhPTkVTID0gMHgxMDAsICAgLy8gYmx1ZXRvb3RoIEEyRFAgaGVhZHBob25lcworICAgIERFVklDRV9CTFVFVE9PVEhfQTJEUF9TUEVBS0VSID0gMHgyMDAsICAgICAgLy8gYmx1ZXRvb3RoIEEyRFAgc3BlYWtlcnMKKyAgICBERVZJQ0VfQVVYX0RJR0lUQUwgPSAweDQwMCwgICAgICAgICAgICAgICAgIC8vIGRpZ2l0YWwgb3V0cHV0CisgICAgREVWSUNFX0VYVEVSTkFMX1NQRUFLRVIgPSAweDgwMCAgICAgICAgICAgICAvLyBleHRlcm5hbCBzcGVha2VyIChzdGVyZW8gYW5kIEhpZ2ggcXVhbGl0eSkKK307CisKKy8vIEF1ZGlvIG1vZGUKK2VudW0gYXVkaW9fbW9kZV9lIHsKKyAgICBBVURJT19NT0RFX05PUk1BTCwgICAgICAvLyBwaG9uZSBpZGxlCisgICAgQVVESU9fTU9ERV9SSU5HVE9ORSwgICAgLy8gcGhvbmUgcmluZ2luZworICAgIEFVRElPX01PREVfSU5fQ0FMTCAgICAgIC8vIHBob25lIGNhbGwgY29ubmVjdGVkCit9OworCisvLyBWYWx1ZXMgZm9yICJhY2Nlc3NNb2RlIiBmaWVsZCBvZiBidWZmZXJfY29uZmlnX3Q6CisvLyAgIG92ZXJ3cml0ZSwgcmVhZCBvbmx5LCBhY2N1bXVsYXRlIChyZWFkL21vZGlmeS93cml0ZSkKK2VudW0gZWZmZWN0X2J1ZmZlcl9hY2Nlc3NfZSB7CisgICAgRUZGRUNUX0JVRkZFUl9BQ0NFU1NfV1JJVEUsCisgICAgRUZGRUNUX0JVRkZFUl9BQ0NFU1NfUkVBRCwKKyAgICBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19BQ0NVTVVMQVRFCisKK307CisKKy8vIFZhbHVlcyBmb3IgYml0IGZpZWxkICJtYXNrIiBpbiBidWZmZXJfY29uZmlnX3QuIElmIGEgYml0IGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQKKy8vIGluIGJ1ZmZlcl9jb25maWdfdCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGV4ZWN1dGluZyB0aGUgRUZGRUNUX0NNRF9DT05GSUdVUkUgY29tbWFuZAorI2RlZmluZSBFRkZFQ1RfQ09ORklHX0JVRkZFUiAgICAweDAwMDEgIC8vIGJ1ZmZlciBmaWVsZCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudAorI2RlZmluZSBFRkZFQ1RfQ09ORklHX1NNUF9SQVRFICAweDAwMDIgIC8vIHNhbXBsaW5nUmF0ZSBmaWVsZCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudAorI2RlZmluZSBFRkZFQ1RfQ09ORklHX0NIQU5ORUxTICAweDAwMDQgIC8vIGNoYW5uZWxzIGZpZWxkIG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50CisjZGVmaW5lIEVGRkVDVF9DT05GSUdfRk9STUFUICAgIDB4MDAwOCAgLy8gZm9ybWF0IGZpZWxkIG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50CisjZGVmaW5lIEVGRkVDVF9DT05GSUdfQUNDX01PREUgIDB4MDAxMCAgLy8gYWNjZXNzTW9kZSBmaWVsZCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudAorI2RlZmluZSBFRkZFQ1RfQ09ORklHX1BST1ZJREVSICAweDAwMjAgIC8vIGJ1ZmZlclByb3ZpZGVyIGZpZWxkIG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50CisjZGVmaW5lIEVGRkVDVF9DT05GSUdfQUxMIChFRkZFQ1RfQ09ORklHX0JVRkZFUiB8IEVGRkVDVF9DT05GSUdfU01QX1JBVEUgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFRkZFQ1RfQ09ORklHX0NIQU5ORUxTIHwgRUZGRUNUX0NPTkZJR19GT1JNQVQgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFRkZFQ1RfQ09ORklHX0FDQ19NT0RFIHwgRUZGRUNUX0NPTkZJR19QUk9WSURFUikKKworCisvLyBlZmZlY3RfY29uZmlnX3Mgc3RydWN0dXJlIGRlc2NyaWJlcyB0aGUgZm9ybWF0IG9mIHRoZSBwQ21kRGF0YSBhcmd1bWVudCBvZiBFRkZFQ1RfQ01EX0NPTkZJR1VSRQorLy8gY29tbWFuZCB0byBjb25maWd1cmUgYXVkaW8gcGFyYW1ldGVycyBhbmQgYnVmZmVycyBmb3IgZWZmZWN0IGVuZ2luZSBpbnB1dCBhbmQgb3V0cHV0LgordHlwZWRlZiBzdHJ1Y3QgZWZmZWN0X2NvbmZpZ19zIHsKKyAgICBidWZmZXJfY29uZmlnX3QgICBpbnB1dENmZzsKKyAgICBidWZmZXJfY29uZmlnX3QgICBvdXRwdXRDZmc7OworfSBlZmZlY3RfY29uZmlnX3Q7CisKKworLy8gZWZmZWN0X3BhcmFtX3Mgc3RydWN0dXJlIGRlc2NyaWJlcyB0aGUgZm9ybWF0IG9mIHRoZSBwQ21kRGF0YSBhcmd1bWVudCBvZiBFRkZFQ1RfQ01EX1NFVF9QQVJBTQorLy8gY29tbWFuZCBhbmQgcENtZERhdGEgYW5kIHBSZXBseURhdGEgb2YgRUZGRUNUX0NNRF9HRVRfUEFSQU0gY29tbWFuZC4KKy8vIHBzaXplIGFuZCB2c2l6ZSByZXByZXNlbnQgdGhlIGFjdHVhbCBzaXplIG9mIHBhcmFtZXRlciBhbmQgdmFsdWUuCisvLworLy8gTk9URTogdGhlIHN0YXJ0IG9mIHZhbHVlIGZpZWxkIGluc2lkZSB0aGUgZGF0YSBmaWVsZCBpcyBhbHdheXMgb24gYSAzMiBiaXQgYm91bmRhcnk6CisvLworLy8gICstLS0tLS0tLS0tLSsKKy8vICB8IHN0YXR1cyAgICB8IHNpemVvZihpbnQpCisvLyAgKy0tLS0tLS0tLS0tKworLy8gIHwgcHNpemUgICAgIHwgc2l6ZW9mKGludCkKKy8vICArLS0tLS0tLS0tLS0rCisvLyAgfCB2c2l6ZSAgICAgfCBzaXplb2YoaW50KQorLy8gICstLS0tLS0tLS0tLSsKKy8vICB8ICAgICAgICAgICB8ICAgfCAgICAgICAgICAgfAorLy8gIH4gcGFyYW1ldGVyIH4gICA+IHBzaXplICAgICB8CisvLyAgfCAgICAgICAgICAgfCAgIHwgICAgICAgICAgID4gICgocHNpemUgLSAxKS9zaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCkKKy8vICArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgfAorLy8gIHwgcGFkZGluZyAgIHwgICAgICAgICAgICAgICB8CisvLyAgKy0tLS0tLS0tLS0tKworLy8gIHwgICAgICAgICAgIHwgICB8CisvLyAgfiB2YWx1ZSAgICAgfiAgID4gdnNpemUKKy8vICB8ICAgICAgICAgICB8ICAgfAorLy8gICstLS0tLS0tLS0tLSsKKwordHlwZWRlZiBzdHJ1Y3QgZWZmZWN0X3BhcmFtX3MgeworICAgIGludDMyX3QgICAgIHN0YXR1czsgICAgIC8vIFRyYW5zYWN0aW9uIHN0YXR1cyAodW51c2VkIGZvciBjb21tYW5kLCB1c2VkIGZvciByZXBseSkKKyAgICB1aW50MzJfdCAgICBwc2l6ZTsgICAgICAvLyBQYXJhbWV0ZXIgc2l6ZQorICAgIHVpbnQzMl90ICAgIHZzaXplOyAgICAgIC8vIFZhbHVlIHNpemUKKyAgICBjaGFyICAgICAgICBkYXRhW107ICAgICAvLyBTdGFydCBvZiBQYXJhbWV0ZXIgKyBWYWx1ZSBkYXRhCit9IGVmZmVjdF9wYXJhbV90OworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgRWZmZWN0IGxpYnJhcnkgaW50ZXJmYWNlCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vIEFuIGVmZmVjdCBsaWJyYXJ5IGlzIHJlcXVpcmVkIHRvIGltcGxlbWVudCBhbmQgZXhwb3NlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zCisvLyB0byBlbmFibGUgZWZmZWN0IGVudW1lcmF0aW9uIGFuZCBpbnN0YW50aWF0aW9uLiBUaGUgbmFtZSBvZiB0aGVzZSBmdW5jdGlvbnMgbXVzdCBiZSBhcworLy8gc3BlY2lmaWVkIGhlcmUgYXMgdGhlIGVmZmVjdCBmcmFtZXdvcmsgd2lsbCBnZXQgdGhlIGZ1bmN0aW9uIGFkZHJlc3Mgd2l0aCBkbHN5bSgpOgorLy8KKy8vIC0gZWZmZWN0X1F1ZXJ5TnVtYmVyRWZmZWN0c190IEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0czsKKy8vIC0gZWZmZWN0X1F1ZXJ5RWZmZWN0X3QgRWZmZWN0UXVlcnlFZmZlY3Q7CisvLyAtIGVmZmVjdF9DcmVhdGVFZmZlY3RfdCBFZmZlY3RDcmVhdGU7CisvLyAtIGVmZmVjdF9SZWxlYXNlRWZmZWN0X3QgRWZmZWN0UmVsZWFzZTsKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICAgIEZ1bmN0aW9uOiAgICAgICBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHMKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBlZmZlY3RzIGV4cG9zZWQgYnkgdGhlCisvLyAgICAgICAgICBsaWJyYXJ5LiBFYWNoIGVmZmVjdCBtdXN0IGhhdmUgYSB1bmlxdWUgZWZmZWN0IHV1aWQgKHNlZQorLy8gICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCkuIFRoaXMgZnVuY3Rpb24gdG9nZXRoZXIgd2l0aCBFZmZlY3RRdWVyeUVmZmVjdCgpCisvLyAgICAgICAgICBpcyB1c2VkIHRvIGVudW1lcmF0ZSBhbGwgZWZmZWN0cyBwcmVzZW50IGluIHRoZSBsaWJyYXJ5LgorLy8KKy8vICAgIElucHV0L091dHB1dDoKKy8vICAgICAgICAgIHBOdW1FZmZlY3RzOiAgICBhZGRyZXNzIHdoZXJlIHRoZSBudW1iZXIgb2YgZWZmZWN0cyBzaG91bGQgYmUgcmV0dXJuZWQuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGxpYnJhcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMICAgICBpbnZhbGlkIHBOdW1FZmZlY3RzCisvLyAgICAgICAgKnBOdW1FZmZlY3RzOiAgICAgdXBkYXRlZCB3aXRoIG51bWJlciBvZiBlZmZlY3RzIGluIGxpYnJhcnkKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordHlwZWRlZiBpbnQzMl90ICgqZWZmZWN0X1F1ZXJ5TnVtYmVyRWZmZWN0c190KSh1aW50MzJfdCAqcE51bUVmZmVjdHMpOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICAgIEZ1bmN0aW9uOiAgICAgICBFZmZlY3RRdWVyeUVmZmVjdAorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBSZXR1cm5zIHRoZSBkZXNjcmlwdG9yIG9mIHRoZSBlZmZlY3QgZW5naW5lIHdoaWNoIGluZGV4IGlzCisvLyAgICAgICAgICBnaXZlbiBhcyBmaXJzdCBhcmd1bWVudC4KKy8vICAgICAgICAgIFNlZSBlZmZlY3RfZGVzY3JpcHRvcl90IGZvciBkZXRhaWxzIG9uIGVmZmVjdCBkZXNjcmlwdG9ycy4KKy8vICAgICAgICAgIFRoaXMgZnVuY3Rpb24gdG9nZXRoZXIgd2l0aCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHMoKSBpcyB1c2VkIHRvIGVudW1lcmF0ZSBhbGwKKy8vICAgICAgICAgIGVmZmVjdHMgcHJlc2VudCBpbiB0aGUgbGlicmFyeS4gVGhlIGVudW1lcmF0aW9uIHNlcXVlbmNlIGlzOgorLy8gICAgICAgICAgICAgIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygmbnVtX2VmZmVjdHMpOworLy8gICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fZWZmZWN0czsgaSsrKQorLy8gICAgICAgICAgICAgICAgICBFZmZlY3RRdWVyeUVmZmVjdChpLC4uLik7CisvLworLy8gICAgSW5wdXQvT3V0cHV0OgorLy8gICAgICAgICAgaW5kZXg6ICAgICAgICAgIGluZGV4IG9mIHRoZSBlZmZlY3QKKy8vICAgICAgICAgIHBEZXNjcmlwdG9yOiAgICBhZGRyZXNzIHdoZXJlIHRvIHJldHVybiB0aGUgZWZmZWN0IGRlc2NyaXB0b3IuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGxpYnJhcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMICAgICBpbnZhbGlkIHBEZXNjcmlwdG9yIG9yIGluZGV4CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT1NZUyAgICAgZWZmZWN0IGxpc3QgaGFzIGNoYW5nZWQgc2luY2UgbGFzdCBleGVjdXRpb24gb2YKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHMoKQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9FTlQgICAgIG5vIG1vcmUgZWZmZWN0IGF2YWlsYWJsZQorLy8gICAgICAgICpwRGVzY3JpcHRvcjogICAgIHVwZGF0ZWQgd2l0aCB0aGUgZWZmZWN0IGRlc2NyaXB0b3IuCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3R5cGVkZWYgaW50MzJfdCAoKmVmZmVjdF9RdWVyeUVmZmVjdF90KSh1aW50MzJfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcik7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIEVmZmVjdENyZWF0ZQorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBDcmVhdGVzIGFuIGVmZmVjdCBlbmdpbmUgb2YgdGhlIHNwZWNpZmllZCB0eXBlIGFuZCByZXR1cm5zIGFuCisvLyAgICAgICAgICBlZmZlY3QgY29udHJvbCBpbnRlcmZhY2Ugb24gdGhpcyBlbmdpbmUuIFRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHRoZQorLy8gICAgICAgICAgcmVzb3VyY2VzIGZvciBhbiBpbnN0YW5jZSBvZiB0aGUgcmVxdWVzdGVkIGVmZmVjdCBlbmdpbmUgYW5kIHJldHVybgorLy8gICAgICAgICAgYSBoYW5kbGUgb24gdGhlIGVmZmVjdCBjb250cm9sIGludGVyZmFjZS4KKy8vCisvLyAgICBJbnB1dDoKKy8vICAgICAgICAgIHV1aWQ6ICAgIHBvaW50ZXIgdG8gdGhlIGVmZmVjdCB1dWlkLgorLy8gICAgICAgICAgc2Vzc2lvbklkOiAgYXVkaW8gc2Vzc2lvbiB0byB3aGljaCB0aGlzIGVmZmVjdCBpbnN0YW5jZSB3aWxsIGJlIGF0dGFjaGVkLiBBbGwgZWZmZWN0cworLy8gICAgICAgICAgICAgIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBzZXNzaW9uIElEIGFyZSBjb25uZWN0ZWQgaW4gc2VyaWVzIGFuZCBwcm9jZXNzIHRoZSBzYW1lIHNpZ25hbAorLy8gICAgICAgICAgICAgIHN0cmVhbS4gS25vd2luZyB0aGF0IHR3byBlZmZlY3RzIGFyZSBwYXJ0IG9mIHRoZSBzYW1lIGVmZmVjdCBjaGFpbiBjYW4gaGVscCB0aGUKKy8vICAgICAgICAgICAgICBsaWJyYXJ5IGltcGxlbWVudCBzb21lIGtpbmQgb2Ygb3B0aW1pemF0aW9ucy4KKy8vICAgICAgICAgIGlvSWQ6ICAgaWRlbnRpZmllcyB0aGUgb3V0cHV0IG9yIGlucHV0IHN0cmVhbSB0aGlzIGVmZmVjdCBpcyBkaXJlY3RlZCB0byBhdCBhdWRpbyBIQUwuCisvLyAgICAgICAgICAgICAgRm9yIGZ1dHVyZSB1c2UgZXNwZWNpYWxseSB3aXRoIHR1bm5lbGVkIEhXIGFjY2VsZXJhdGVkIGVmZmVjdHMKKy8vCisvLyAgICBJbnB1dC9PdXRwdXQ6CisvLyAgICAgICAgICBwSW50ZXJmYWNlOiAgICBhZGRyZXNzIHdoZXJlIHRvIHJldHVybiB0aGUgZWZmZWN0IGludGVyZmFjZS4KKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgICAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0RFViAgICAgbGlicmFyeSBmYWlsZWQgdG8gaW5pdGlhbGl6ZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FSU5WQUwgICAgIGludmFsaWQgcEVmZmVjdFV1aWQgb3IgcEludGVyZmFjZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9FTlQgICAgIG5vIGVmZmVjdCB3aXRoIHRoaXMgdXVpZCBmb3VuZAorLy8gICAgICAgICpwSW50ZXJmYWNlOiAgICAgdXBkYXRlZCB3aXRoIHRoZSBlZmZlY3QgaW50ZXJmYWNlIGhhbmRsZS4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordHlwZWRlZiBpbnQzMl90ICgqZWZmZWN0X0NyZWF0ZUVmZmVjdF90KShlZmZlY3RfdXVpZF90ICp1dWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNlc3Npb25JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpb0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RfaW50ZXJmYWNlX3QgKnBJbnRlcmZhY2UpOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICAgIEZ1bmN0aW9uOiAgICAgICBFZmZlY3RSZWxlYXNlCisvLworLy8gICAgRGVzY3JpcHRpb246ICAgIFJlbGVhc2VzIHRoZSBlZmZlY3QgZW5naW5lIHdob3NlIGhhbmRsZSBpcyBnaXZlbiBhcyBhcmd1bWVudC4KKy8vICAgICAgICAgIEFsbCByZXNvdXJjZXMgYWxsb2NhdGVkIHRvIHRoaXMgcGFydGljdWxhciBpbnN0YW5jZSBvZiB0aGUgZWZmZWN0IGFyZQorLy8gICAgICAgICAgcmVsZWFzZWQuCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICBpbnRlcmZhY2U6ICAgIGhhbmRsZSBvbiB0aGUgZWZmZWN0IGludGVyZmFjZSB0byBiZSByZWxlYXNlZC4KKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgICAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0RFViAgICAgbGlicmFyeSBmYWlsZWQgdG8gaW5pdGlhbGl6ZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FSU5WQUwgICAgIGludmFsaWQgaW50ZXJmYWNlIGhhbmRsZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit0eXBlZGVmIGludDMyX3QgKCplZmZlY3RfUmVsZWFzZUVmZmVjdF90KShlZmZlY3RfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTsKKworCisjaWYgX19jcGx1c3BsdXMKK30gIC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNUQVBJX0hfKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvRWZmZWN0RXF1YWxpemVyQXBpLmggYi9pbmNsdWRlL21lZGlhL0VmZmVjdEVxdWFsaXplckFwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMDY5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL0VmZmVjdEVxdWFsaXplckFwaS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfRUZGRUNURVFVQUxJWkVSQVBJX0hfCisjZGVmaW5lIEFORFJPSURfRUZGRUNURVFVQUxJWkVSQVBJX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RBcGkuaD4KKworI2lmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvL1RPRE8gcmVwbGFjZSBieSBvcGVuU0wgRVMgaW5jbHVkZSB3aGVuIGF2YWlsYWJsZQorc3RhdGljIGNvbnN0IGVmZmVjdF91dWlkX3QgU0xfSUlEX0VRVUFMSVpFUl8gPSB7IDB4MGJlZDQzMDAsIDB4ZGRkNiwgMHgxMWRiLCAweDhmMzQsIHsgMHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYiB9IH07Citjb25zdCBlZmZlY3RfdXVpZF90ICogY29uc3QgU0xfSUlEX0VRVUFMSVpFUiA9ICZTTF9JSURfRVFVQUxJWkVSXzsKKworLyogZW51bWVyYXRlZCBwYXJhbWV0ZXJzIGZvciBFcXVhbGl6ZXIgZWZmZWN0ICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUV9QQVJBTV9OVU1fQkFORFMsICAgICAgICAgICAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBmcmVxdWVuY3kgYmFuZHMgdGhhdCB0aGUgZXF1YWxpemVyIHN1cHBvcnRzLgorICAgIEVRX1BBUkFNX0xFVkVMX1JBTkdFLCAgICAgICAgICAgLy8gUmV0dXJucyB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBiYW5kIGxldmVscyBzdXBwb3J0ZWQuCisgICAgRVFfUEFSQU1fQkFORF9MRVZFTCwgICAgICAgICAgICAvLyBHZXRzL1NldHMgdGhlIGdhaW4gc2V0IGZvciB0aGUgZ2l2ZW4gZXF1YWxpemVyIGJhbmQuCisgICAgRVFfUEFSQU1fQ0VOVEVSX0ZSRVEsICAgICAgICAgICAvLyBHZXRzIHRoZSBjZW50ZXIgZnJlcXVlbmN5IG9mIHRoZSBnaXZlbiBiYW5kLgorICAgIEVRX1BBUkFNX0JBTkRfRlJFUV9SQU5HRSwgICAgICAgLy8gR2V0cyB0aGUgZnJlcXVlbmN5IHJhbmdlIG9mIHRoZSBnaXZlbiBmcmVxdWVuY3kgYmFuZC4KKyAgICBFUV9QQVJBTV9HRVRfQkFORCwgICAgICAgICAgICAgIC8vIEdldHMgdGhlIGJhbmQgdGhhdCBoYXMgdGhlIG1vc3QgZWZmZWN0IG9uIHRoZSBnaXZlbiBmcmVxdWVuY3kuCisgICAgRVFfUEFSQU1fQ1VSX1BSRVNFVCwgICAgICAgICAgICAvLyBHZXRzL1NldHMgdGhlIGN1cnJlbnQgcHJlc2V0LgorICAgIEVRX1BBUkFNX0dFVF9OVU1fT0ZfUFJFU0VUUywgICAgLy8gR2V0cyB0aGUgdG90YWwgbnVtYmVyIG9mIHByZXNldHMgdGhlIGVxdWFsaXplciBzdXBwb3J0cy4KKyAgICBFUV9QQVJBTV9HRVRfUFJFU0VUX05BTUUgICAgICAgIC8vIEdldHMgdGhlIHByZXNldCBuYW1lIGJhc2VkIG9uIHRoZSBpbmRleC4KK30gdF9lcXVhbGl6ZXJfcGFyYW1zOworCisKKyNpZiBfX2NwbHVzcGx1cworfSAgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKworI2VuZGlmIC8qQU5EUk9JRF9FRkZFQ1RFUVVBTElaRVJBUElfSF8qLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9FZmZlY3RSZXZlcmJBcGkuaCBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0UmV2ZXJiQXBpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM3MWFkYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0UmV2ZXJiQXBpLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9FRkZFQ1RSRVZFUkJBUElfSF8KKyNkZWZpbmUgQU5EUk9JRF9FRkZFQ1RSRVZFUkJBUElfSF8KKworI2luY2x1ZGUgPG1lZGlhL0VmZmVjdEFwaS5oPgorCisjaWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8vIFRPRE86IGluY2x1ZGUgT3BlblNMRVNfSUlELmggaW5zdGVhZAorc3RhdGljIGNvbnN0IGVmZmVjdF91dWlkX3QgU0xfSUlEX0VOVklST05NRU5UQUxSRVZFUkJfID0geyAweGMyZTVkNWYwLCAweDk0YmQsIDB4NDc2MywgMHg5Y2FjLCB7IDB4NGUsIDB4MjMsIDB4NGQsIDB4NiwgMHg4MywgMHg5ZSB9IH07Citjb25zdCBlZmZlY3RfdXVpZF90ICogY29uc3QgU0xfSUlEX0VOVklST05NRU5UQUxSRVZFUkIgPSAmU0xfSUlEX0VOVklST05NRU5UQUxSRVZFUkJfOworCitzdGF0aWMgY29uc3QgZWZmZWN0X3V1aWRfdCBTTF9JSURfUFJFU0VUUkVWRVJCXyA9IHsgMHg0NzM4MmQ2MCwgMHhkZGQ4LCAweDExZGIsIDB4YmYzYSwgeyAweDAwLCAweDAyLCAweGE1LCAweGQ1LCAweGM1LCAweDFiIH0gfTsKK2NvbnN0IGVmZmVjdF91dWlkX3QgKiBjb25zdCBTTF9JSURfUFJFU0VUUkVWRVJCID0gJlNMX0lJRF9QUkVTRVRSRVZFUkJfOworCisvKiBlbnVtZXJhdGVkIHBhcmFtZXRlciBzZXR0aW5ncyBmb3IgUmV2ZXJiIGVmZmVjdCAqLwordHlwZWRlZiBlbnVtCit7CisgICAgUkVWRVJCX1BBUkFNX0JZUEFTUywKKyAgICBSRVZFUkJfUEFSQU1fUFJFU0VULAorICAgIC8vIFBhcmFtZXRlcnMgYmVsb3cgYXJlIGFzIGRlZmluZWQgaW4gT3BlblNMIEVTIHNwZWNpZmljYXRpb24gZm9yIGVudmlyb25tZW50YWwgcmV2ZXJiIGludGVyZmFjZQorICAgIFJFVkVSQl9QQVJBTV9ST09NX0xFVkVMLCAgICAgICAgICAgIC8vIGluIG1pbGxpYmVscywgICAgcmFuZ2UgLTYwMDAgdG8gMAorICAgIFJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMLCAgICAgICAgIC8vIGluIG1pbGxpYmVscywgICAgcmFuZ2UgLTQwMDAgdG8gMAorICAgIFJFVkVSQl9QQVJBTV9ERUNBWV9USU1FLCAgICAgICAgICAgIC8vIGluIG1pbGxpc2Vjb25kcywgcmFuZ2UgMTAwIHRvIDIwMDAwCisgICAgUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPLCAgICAgICAgLy8gaW4gcGVybWlsbGVzLCAgICByYW5nZSAxMDAgdG8gMTAwMAorICAgIFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19MRVZFTCwgICAgIC8vIGluIG1pbGxpYmVscywgICAgcmFuZ2UgLTYwMDAgdG8gMAorICAgIFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19ERUxBWSwgICAgIC8vIGluIG1pbGxpc2Vjb25kcywgcmFuZ2UgMCB0byA2NQorICAgIFJFVkVSQl9QQVJBTV9SRVZFUkJfTEVWRUwsICAgICAgICAgIC8vIGluIG1pbGxpYmVscywgICAgcmFuZ2UgLTYwMDAgdG8gMAorICAgIFJFVkVSQl9QQVJBTV9SRVZFUkJfREVMQVksICAgICAgICAgIC8vIGluIG1pbGxpc2Vjb25kcywgcmFuZ2UgMCB0byA2NQorICAgIFJFVkVSQl9QQVJBTV9ESUZGVVNJT04sICAgICAgICAgICAgIC8vIGluIHBlcm1pbGxlcywgICAgcmFuZ2UgMCB0byAxMDAwCisgICAgUkVWRVJCX1BBUkFNX0RFTlNJVFksICAgICAgICAgICAgICAgLy8gaW4gcGVybWlsbGVzLCAgICByYW5nZSAwIHRvIDEwMDAKKyAgICBSRVZFUkJfUEFSQU1fUFJPUEVSVElFUworfSB0X3JldmVyYl9wYXJhbXM7CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgUkVWRVJCX1BSRVNFVF9MQVJHRV9IQUxMLAorICAgIFJFVkVSQl9QUkVTRVRfSEFMTCwKKyAgICBSRVZFUkJfUFJFU0VUX0NIQU1CRVIsCisgICAgUkVWRVJCX1BSRVNFVF9ST09NLAorfSB0X3JldmVyYl9wcmVzZXRzOworCisvL3RfcmV2ZXJiX3Byb3BlcnRpZXMgaXMgZXF1YWwgdG8gU0xFbnZpcm9ubWVudGFsUmV2ZXJiU2V0dGluZ3MgZGVmaW5lZCBpbiBPcGVuU0wgRVMgc3BlY2lmaWNhdGlvbi4KK3R5cGVkZWYgc3RydWN0IHNfcmV2ZXJiX3Byb3BlcnRpZXMgeworICAgIGludDE2X3Qgcm9vbUxldmVsOworICAgIGludDE2X3Qgcm9vbUhGTGV2ZWw7CisgICAgaW50MzJfdCBkZWNheVRpbWU7CisgICAgaW50MTZfdCBkZWNheUhGUmF0aW87CisgICAgaW50MTZfdCByZWZsZWN0aW9uc0xldmVsOworICAgIGludDMyX3QgcmVmbGVjdGlvbnNEZWxheTsKKyAgICBpbnQzMl90IHJldmVyYkRlbGF5OworICAgIGludDE2X3QgcmV2ZXJiTGV2ZWw7CisgICAgaW50MTZfdCBkaWZmdXNpb247CisgICAgaW50MTZfdCBkZW5zaXR5OworICAgIGludDE2X3QgcGFkZGluZzsKK30gdF9yZXZlcmJfcHJvcGVydGllczsKKworCisjaWYgX19jcGx1c3BsdXMKK30gIC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNUUkVWRVJCQVBJX0hfKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvRWZmZWN0c0ZhY3RvcnlBcGkuaCBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0c0ZhY3RvcnlBcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWQxYTE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9FZmZlY3RzRmFjdG9yeUFwaS5oCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX0VGRkVDVFNGQUNUT1JZQVBJX0hfCisjZGVmaW5lIEFORFJPSURfRUZGRUNUU0ZBQ1RPUllBUElfSF8KKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8bWVkaWEvRWZmZWN0QXBpLmg+CisKKyNpZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICBFZmZlY3QgZmFjdG9yeSBpbnRlcmZhY2UKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzCisvLworLy8gICAgRGVzY3JpcHRpb246ICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgZWZmZWN0cyBpbiBhbGwgbG9hZGVkIGxpYnJhcmllcy4KKy8vICAgICAgICAgIEVhY2ggZWZmZWN0IG11c3QgaGF2ZSBhIGRpZmZlcmVudCBlZmZlY3QgdXVpZCAoc2VlCisvLyAgICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90KS4gVGhpcyBmdW5jdGlvbiB0b2dldGhlciB3aXRoIEVmZmVjdFF1ZXJ5RWZmZWN0KCkKKy8vICAgICAgICAgIGlzIHVzZWQgdG8gZW51bWVyYXRlIGFsbCBlZmZlY3RzIHByZXNlbnQgaW4gYWxsIGxvYWRlZCBsaWJyYXJpZXMuCisvLyAgICAgICAgICBFYWNoIHRpbWUgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKCkgaXMgY2FsbGVkLCB0aGUgZmFjdG9yeSBtdXN0CisvLyAgICAgICAgICByZXNldCB0aGUgaW5kZXggb2YgdGhlIGVmZmVjdCBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IG5leHQgY2FsbCB0bworLy8gICAgICAgICAgRWZmZWN0UXVlcnlFZmZlY3QoKSB0byByZXN0YXJ0IGVudW1lcmF0aW9uIGZyb20gdGhlIGJlZ2lubmluZy4KKy8vCisvLyAgICBJbnB1dC9PdXRwdXQ6CisvLyAgICAgICAgICBwTnVtRWZmZWN0czogICAgYWRkcmVzcyB3aGVyZSB0aGUgbnVtYmVyIG9mIGVmZmVjdHMgc2hvdWxkIGJlIHJldHVybmVkLgorLy8KKy8vICAgIE91dHB1dDoKKy8vICAgICAgICByZXR1cm5lZCB2YWx1ZTogICAgMCAgICAgICAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PREVWICAgICBmYWN0b3J5IGZhaWxlZCB0byBpbml0aWFsaXplCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVJTlZBTCAgICAgaW52YWxpZCBwTnVtRWZmZWN0cworLy8gICAgICAgICpwTnVtRWZmZWN0czogICAgIHVwZGF0ZWQgd2l0aCBudW1iZXIgb2YgZWZmZWN0cyBpbiBmYWN0b3J5CisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ludCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHModWludDMyX3QgKnBOdW1FZmZlY3RzKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0UXVlcnlFZmZlY3QKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogICAgUmV0dXJucyBhIGRlc2NyaXB0b3Igb2YgdGhlIG5leHQgYXZhaWxhYmxlIGVmZmVjdC4KKy8vICAgICAgICAgIFNlZSBlZmZlY3RfZGVzY3JpcHRvcl90IGZvciBhIGRldGFpbHMgb24gZWZmZWN0IGRlc2NyaXB0b3IuCisvLyAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHRvZ2V0aGVyIHdpdGggRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKCkgaXMgdXNlZCB0byBlbnVtZXJhdGUgYWxsCisvLyAgICAgICAgICBlZmZlY3RzIHByZXNlbnQgaW4gYWxsIGxvYWRlZCBsaWJyYXJpZXMuIFRoZSBlbnVtZXJhdGlvbiBzZXF1ZW5jZSBpczoKKy8vICAgICAgICAgICAgICBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHMoJm51bV9lZmZlY3RzKTsKKy8vICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2VmZmVjdHM7IGkrKykKKy8vICAgICAgICAgICAgICAgICAgRWZmZWN0UXVlcnlFZmZlY3QoaSwuLi4pOworLy8KKy8vICAgIElucHV0L091dHB1dDoKKy8vICAgICAgICAgIHBEZXNjcmlwdG9yOiAgICBhZGRyZXNzIHdoZXJlIHRvIHJldHVybiB0aGUgZWZmZWN0IGRlc2NyaXB0b3IuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9FTlQgICAgIG5vIG1vcmUgZWZmZWN0IGF2YWlsYWJsZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGZhY3RvcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMICAgICBpbnZhbGlkIHBEZXNjcmlwdG9yCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT1NZUyAgICAgZWZmZWN0IGxpc3QgaGFzIGNoYW5nZWQgc2luY2UgbGFzdCBleGVjdXRpb24gb2YgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKCkKKy8vICAgICAgICAqcERlc2NyaXB0b3I6ICAgICB1cGRhdGVkIHdpdGggdGhlIGVmZmVjdCBkZXNjcmlwdG9yLgorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbnQgRWZmZWN0UXVlcnlFZmZlY3QodWludDMyX3QgaW5kZXgsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjcmlwdG9yKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0Q3JlYXRlCisvLworLy8gICAgRGVzY3JpcHRpb246ICAgIENyZWF0ZXMgYW4gZWZmZWN0IGVuZ2luZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIHJldHVybnMgYW4KKy8vICAgICAgICAgIGVmZmVjdCBjb250cm9sIGludGVyZmFjZSBvbiB0aGlzIGVuZ2luZS4gVGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGUgdGhlCisvLyAgICAgICAgICByZXNvdXJjZXMgZm9yIGFuIGluc3RhbmNlIG9mIHRoZSByZXF1ZXN0ZWQgZWZmZWN0IGVuZ2luZSBhbmQgcmV0dXJuCisvLyAgICAgICAgICBhIGhhbmRsZXIgb24gdGhlIGVmZmVjdCBjb250cm9sIGludGVyZmFjZS4KKy8vCisvLyAgICBJbnB1dDoKKy8vICAgICAgICAgIHBFZmZlY3RVdWlkOiAgICBwb2ludGVyIHRvIHRoZSBlZmZlY3QgdXVpZC4KKy8vICAgICAgICAgIHNlc3Npb25JZDogIGF1ZGlvIHNlc3Npb24gdG8gd2hpY2ggdGhpcyBlZmZlY3QgaW5zdGFuY2Ugd2lsbCBiZSBhdHRhY2hlZC4gQWxsIGVmZmVjdHMgY3JlYXRlZAorLy8gICAgICAgICAgICAgIHdpdGggdGhlIHNhbWUgc2Vzc2lvbiBJRCBhcmUgY29ubmVjdGVkIGluIHNlcmllcyBhbmQgcHJvY2VzcyB0aGUgc2FtZSBzaWduYWwgc3RyZWFtLgorLy8gICAgICAgICAgICAgIEtub3dpbmcgdGhhdCB0d28gZWZmZWN0cyBhcmUgcGFydCBvZiB0aGUgc2FtZSBlZmZlY3QgY2hhaW4gY2FuIGhlbHAgdGhlIGxpYnJhcnkgaW1wbGVtZW50CisvLyAgICAgICAgICAgICAgc29tZSBraW5kIG9mIG9wdGltaXphdGlvbnMuCisvLyAgICAgICAgICBpb0lkOiAgIGlkZW50aWZpZXMgdGhlIG91dHB1dCBvciBpbnB1dCBzdHJlYW0gdGhpcyBlZmZlY3QgaXMgZGlyZWN0ZWQgdG8gYXQgYXVkaW8gSEFMLiBGb3IgZnV0dXJlCisvLyAgICAgICAgICAgICAgdXNlIGVzcGVjaWFsbHkgd2l0aCB0dW5uZWxlZCBIVyBhY2NlbGVyYXRlZCBlZmZlY3RzCisvLworLy8gICAgSW5wdXQvT3V0cHV0OgorLy8gICAgICAgICAgcEludGVyZmFjZTogICAgYWRkcmVzcyB3aGVyZSB0byByZXR1cm4gdGhlIGVmZmVjdCBpbnRlcmZhY2UuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGZhY3RvcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMICAgICBpbnZhbGlkIHBFZmZlY3RVdWlkIG9yIHBJbnRlcmZhY2UKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PRU5UICAgICBubyBlZmZlY3Qgd2l0aCB0aGlzIHV1aWQgZm91bmQKKy8vICAgICAgICAqcEludGVyZmFjZTogICAgIHVwZGF0ZWQgd2l0aCB0aGUgZWZmZWN0IGludGVyZmFjZS4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW50IEVmZmVjdENyZWF0ZShlZmZlY3RfdXVpZF90ICpwRWZmZWN0VXVpZCwgaW50MzJfdCBzZXNzaW9uSWQsIGludDMyX3QgaW9JZCwgZWZmZWN0X2ludGVyZmFjZV90ICpwSW50ZXJmYWNlKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0UmVsZWFzZQorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBSZWxlYXNlcyB0aGUgZWZmZWN0IGVuZ2luZSB3aG9zZSBoYW5kbGVyIGlzIGdpdmVuIGFzIGFyZ3VtZW50LgorLy8gICAgICAgICAgQWxsIHJlc291cmNlcyBhbGxvY2F0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIGluc3RhbmNlIG9mIHRoZSBlZmZlY3QgYXJlCisvLyAgICAgICAgICByZWxlYXNlZC4KKy8vCisvLyAgICBJbnB1dDoKKy8vICAgICAgICAgIGludGVyZmFjZTogICAgaGFuZGxlciBvbiB0aGUgZWZmZWN0IGludGVyZmFjZSB0byBiZSByZWxlYXNlZC4KKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgICAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0RFViAgICAgZmFjdG9yeSBmYWlsZWQgdG8gaW5pdGlhbGl6ZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FSU5WQUwgICAgIGludmFsaWQgaW50ZXJmYWNlIGhhbmRsZXIKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW50IEVmZmVjdFJlbGVhc2UoZWZmZWN0X2ludGVyZmFjZV90IGludGVyZmFjZSk7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIEVmZmVjdExvYWRMaWJyYXJ5CisvLworLy8gICAgRGVzY3JpcHRpb246ICAgIExvYWRzIHRoZSBlZmZlY3QgbGlicmFyeSB3aGljaCBwYXRoIGlzIGdpdmVuIGFzIGZpcnN0IGFyZ3VtZW50LgorLy8gICAgICAgICAgVGhpcyBtdXN0IGJlIHRoZSBmdWxsIHBhdGggb2YgYSBkeW5hbWljIGxpYnJhcnkgKC5zbykgaW1wbGVtZW50aW5nIG9uZSBvcgorLy8gICAgICAgICAgbW9yZSBlZmZlY3QgZW5naW5lcyBhbmQgZXhwb3NpbmcgdGhlIGVmZmVjdCBsaWJyYXJ5IGludGVyZmFjZSBkZXNjcmliZWQgaW4KKy8vICAgICAgICAgIEVmZmVjdEFwaS5oLiBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGhhbmRsZSBvbiB0aGUgbGlicmFyeSBmb3IgdXNlZCBieQorLy8gICAgICAgICAgZnVydGhlciBjYWxsIHRvIEVmZmVjdFVubG9hZExpYnJhcnkoKSB0byB1bmxvYWQgdGhlIGxpYnJhcnkuCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICBsaWJQYXRoOiAgICBmdWxsIHBhdGggb2YgdGhlIGR5bmFtaWMgbGlicmFyeSBmaWxlIGluIHRoZSBmaWxlIHN5c3RlbS4KKy8vCisvLyAgICAgICAgICBoYW5kbGU6ICAgICBhZGRyZXNzIHdoZXJlIHRvIHJldHVybiB0aGUgbGlicmFyeSBoYW5kbGUKKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgICAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0RFViAgICAgZWZmZWN0IGZhY3Rvcnkgbm90IGluaXRpYWxpemVkIG9yCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBjb3VsZCBub3QgYmUgbG9hZGVkIG9yCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBkb2VzIG5vdCBpbXBsZW1lbnQgcmVxdWlyZWQgZnVuY3Rpb25zCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVJTlZBTCAgICAgaW52YWxpZCBsaWJQYXRoIHN0cmluZyBvciBoYW5kbGUKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW50IEVmZmVjdExvYWRMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0VW5sb2FkTGlicmFyeQorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgVW5sb2FkcyB0aGUgZWZmZWN0IGxpYnJhcnkgd2hpY2ggaGFuZGxlIGlzIGdpdmVuIGFzIGFyZ3VtZW50LgorLy8KKy8vICAgIElucHV0OgorLy8gICAgICAgICAgaGFuZGxlOiBsaWJyYXJ5IGhhbmRsZQorLy8KKy8vICAgIE91dHB1dDoKKy8vICAgICAgICByZXR1cm5lZCB2YWx1ZTogICAgMCAgICAgICAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PREVWICAgICBlZmZlY3QgZmFjdG9yeSBub3QgaW5pdGlhbGl6ZWQKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PRU5UICAgICBpbnZhbGlkIGhhbmRsZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbnQgRWZmZWN0VW5sb2FkTGlicmFyeShpbnQgaGFuZGxlKTsKKworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIEVmZmVjdEdldERlc2NyaXB0b3IKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogICAgUmV0dXJucyB0aGUgZGVzY3JpcHRvciBvZiB0aGUgZWZmZWN0IHdoaWNoIHV1aWQgaXMgcG9pbnRlZAorLy8gICAgICAgICAgdG8gYnkgZmlyc3QgYXJndW1lbnQuCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICBwRWZmZWN0VXVpZDogICAgcG9pbnRlciB0byB0aGUgZWZmZWN0IHV1aWQuCisvLworLy8gICAgSW5wdXQvT3V0cHV0OgorLy8gICAgICAgICAgcERlc2NyaXB0b3I6ICAgIGFkZHJlc3Mgd2hlcmUgdG8gcmV0dXJuIHRoZSBlZmZlY3QgZGVzY3JpcHRvci4KKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgICAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0RFViAgICAgZmFjdG9yeSBmYWlsZWQgdG8gaW5pdGlhbGl6ZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FSU5WQUwgICAgIGludmFsaWQgcEVmZmVjdFV1aWQgb3IgcERlc2NyaXB0b3IKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PRU5UICAgICBubyBlZmZlY3Qgd2l0aCB0aGlzIHV1aWQgZm91bmQKKy8vICAgICAgICAqcERlc2NyaXB0b3I6ICAgICB1cGRhdGVkIHdpdGggdGhlIGVmZmVjdCBkZXNjcmlwdG9yLgorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbnQgRWZmZWN0R2V0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICpwRWZmZWN0VXVpZCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2NyaXB0b3IpOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICAgIEZ1bmN0aW9uOiAgICAgICBFZmZlY3RJc051bGxVdWlkCisvLworLy8gICAgRGVzY3JpcHRpb246ICAgIEhlbHBlciBmdW5jdGlvbiB0byBjb21wYXJlIGVmZmVjdCB1dWlkIHRvIEVGRkVDVF9VVUlEX05VTEwKKy8vCisvLyAgICBJbnB1dDoKKy8vICAgICAgICAgIHBFZmZlY3RVdWlkOiBwb2ludGVyIHRvIGVmZmVjdCB1dWlkIHRvIGNvbXBhcmUgdG8gRUZGRUNUX1VVSURfTlVMTC4KKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgaWYgdXVpZCBpcyBkaWZmZXJlbnQgZnJvbSBFRkZFQ1RfVVVJRF9OVUxMLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAxIGlmIHV1aWQgaXMgZXF1YWwgdG8gRUZGRUNUX1VVSURfTlVMTC4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW50IEVmZmVjdElzTnVsbFV1aWQoZWZmZWN0X3V1aWRfdCAqcEVmZmVjdFV1aWQpOworCisjaWYgX19jcGx1c3BsdXMKK30gIC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNUU0ZBQ1RPUllBUElfSF8qLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9JQXVkaW9GbGluZ2VyLmggYi9pbmNsdWRlL21lZGlhL0lBdWRpb0ZsaW5nZXIuaAppbmRleCBjMTQ3NjMyLi41ODE0ZmQ2IDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL0lBdWRpb0ZsaW5nZXIuaAorKysgYi9pbmNsdWRlL21lZGlhL0lBdWRpb0ZsaW5nZXIuaApAQCAtMjcsNiArMjcsOSBAQAogI2luY2x1ZGUgPG1lZGlhL0lBdWRpb1RyYWNrLmg+CiAjaW5jbHVkZSA8bWVkaWEvSUF1ZGlvUmVjb3JkLmg+CiAjaW5jbHVkZSA8bWVkaWEvSUF1ZGlvRmxpbmdlckNsaWVudC5oPgorI2luY2x1ZGUgPG1lZGlhL0VmZmVjdEFwaS5oPgorI2luY2x1ZGUgPG1lZGlhL0lFZmZlY3QuaD4KKyNpbmNsdWRlIDxtZWRpYS9JRWZmZWN0Q2xpZW50Lmg+CiAjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CkBAIC01MSw2ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cykgPSAwOwogCiAgICAgdmlydHVhbCBzcDxJQXVkaW9SZWNvcmQ+IG9wZW5SZWNvcmQoCkBAIC02MSw2ICs2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFubmVsQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzZXNzaW9uSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ICpzdGF0dXMpID0gMDsKIAogICAgIC8qIHF1ZXJ5IHRoZSBhdWRpbyBoYXJkd2FyZSBzdGF0ZS4gVGhpcyBzdGF0ZSBuZXZlciBjaGFuZ2VzLApAQCAtMTM0LDYgKzEzOSwyOCBAQAogICAgIHZpcnR1YWwgc3RhdHVzX3QgZ2V0UmVuZGVyUG9zaXRpb24odWludDMyX3QgKmhhbEZyYW1lcywgdWludDMyX3QgKmRzcEZyYW1lcywgaW50IG91dHB1dCkgPSAwOwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgIGdldElucHV0RnJhbWVzTG9zdChpbnQgaW9IYW5kbGUpID0gMDsKKworICAgIHZpcnR1YWwgaW50IG5ld0F1ZGlvU2Vzc2lvbklkKCkgPSAwOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSkgPSAwOworCisgICAgdmlydHVhbCBzdGF0dXNfdCB1bmxvYWRFZmZlY3RMaWJyYXJ5KGludCBoYW5kbGUpID0gMDsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpudW1FZmZlY3RzKSA9IDA7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHF1ZXJ5RWZmZWN0KHVpbnQzMl90IGluZGV4LCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikgPSAwOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRFZmZlY3REZXNjcmlwdG9yKGVmZmVjdF91dWlkX3QgKnBFZmZlY3RVVUlELCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikgPSAwOworCisgICAgdmlydHVhbCBzcDxJRWZmZWN0PiBjcmVhdGVFZmZlY3QocGlkX3QgcGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJRWZmZWN0Q2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmVuYWJsZWQpID0gMDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9JQXVkaW9UcmFjay5oIGIvaW5jbHVkZS9tZWRpYS9JQXVkaW9UcmFjay5oCmluZGV4IGRlNjQyNmEuLjQ3ZDUzMGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvSUF1ZGlvVHJhY2suaAorKysgYi9pbmNsdWRlL21lZGlhL0lBdWRpb1RyYWNrLmgKQEAgLTYyLDYgKzYyLDExIEBACiAgICAgICovCiAgICAgdmlydHVhbCB2b2lkICAgICAgICBwYXVzZSgpID0gMDsKIAorICAgIC8qIEF0dGFjaCB0cmFjayBhdXhpbGlhcnkgb3V0cHV0IHRvIHNwZWNpZmllZCBlZmZlY3QuIFVzZSBlZmZlY3RJZCA9IDAKKyAgICAgKiB0byBkZXRhY2ggdHJhY2sgZnJvbSBlZmZlY3QuCisgICAgICovCisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBhdHRhY2hBdXhFZmZlY3QoaW50IGVmZmVjdElkKSA9IDA7CisKICAgICAvKiBnZXQgdGhpcyB0cmFja3MgY29udHJvbCBibG9jayAqLwogICAgIHZpcnR1YWwgc3A8SU1lbW9yeT4gZ2V0Q2JsaygpIGNvbnN0ID0gMDsgICAgCiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9JRWZmZWN0LmggYi9pbmNsdWRlL21lZGlhL0lFZmZlY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGFkMzkzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9JRWZmZWN0LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9JRUZGRUNUX0gKKyNkZWZpbmUgQU5EUk9JRF9JRUZGRUNUX0gKKworI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSUludGVyZmFjZS5oPgorI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSU1lbW9yeS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIElFZmZlY3Q6IHB1YmxpYyBJSW50ZXJmYWNlCit7CitwdWJsaWM6CisgICAgREVDTEFSRV9NRVRBX0lOVEVSRkFDRShFZmZlY3QpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBlbmFibGUoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IGRpc2FibGUoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IGNvbW1hbmQoaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50ICpwUmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKKworICAgIHZpcnR1YWwgc3A8SU1lbW9yeT4gZ2V0Q2JsaygpIGNvbnN0ID0gMDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgQm5FZmZlY3Q6IHB1YmxpYyBCbkludGVyZmFjZTxJRWZmZWN0PgoreworcHVibGljOgorICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgb25UcmFuc2FjdCggdWludDMyX3QgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhcmNlbCYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmNlbCogcmVwbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IDApOworfTsKKworfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIEFORFJPSURfSUVGRkVDVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0lFZmZlY3RDbGllbnQuaCBiL2luY2x1ZGUvbWVkaWEvSUVmZmVjdENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMmRhZjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL0lFZmZlY3RDbGllbnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX0lFRkZFQ1RDTElFTlRfSAorI2RlZmluZSBBTkRST0lEX0lFRkZFQ1RDTElFTlRfSAorCisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorI2luY2x1ZGUgPGJpbmRlci9JSW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8YmluZGVyL1BhcmNlbC5oPgorI2luY2x1ZGUgPGJpbmRlci9JTWVtb3J5Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgSUVmZmVjdENsaWVudDogcHVibGljIElJbnRlcmZhY2UKK3sKK3B1YmxpYzoKKyAgICBERUNMQVJFX01FVEFfSU5URVJGQUNFKEVmZmVjdENsaWVudCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29udHJvbFN0YXR1c0NoYW5nZWQoYm9vbCBjb250cm9sR3JhbnRlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVTdGF0dXNDaGFuZ2VkKGJvb2wgZW5hYmxlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kRXhlY3V0ZWQoaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50IHJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSkgPSAwOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBCbkVmZmVjdENsaWVudDogcHVibGljIEJuSW50ZXJmYWNlPElFZmZlY3RDbGllbnQ+Cit7CitwdWJsaWM6CisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBvblRyYW5zYWN0KCB1aW50MzJfdCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyY2VsJiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyY2VsKiByZXBseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzID0gMCk7Cit9OworCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gQU5EUk9JRF9JRUZGRUNUQ0xJRU5UX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvSU1lZGlhUGxheWVyU2VydmljZS5oIGIvaW5jbHVkZS9tZWRpYS9JTWVkaWFQbGF5ZXJTZXJ2aWNlLmgKaW5kZXggMzFjMDk5MS4uZTg5Mjg3NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9JTWVkaWFQbGF5ZXJTZXJ2aWNlLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9JTWVkaWFQbGF5ZXJTZXJ2aWNlLmgKQEAgLTQwLDggKzQwLDExIEBACiAKICAgICB2aXJ0dWFsIHNwPElNZWRpYVJlY29yZGVyPiAgY3JlYXRlTWVkaWFSZWNvcmRlcihwaWRfdCBwaWQpID0gMDsKICAgICB2aXJ0dWFsIHNwPElNZWRpYU1ldGFkYXRhUmV0cmlldmVyPiBjcmVhdGVNZXRhZGF0YVJldHJpZXZlcihwaWRfdCBwaWQpID0gMDsKLSAgICB2aXJ0dWFsIHNwPElNZWRpYVBsYXllcj4gICAgY3JlYXRlKHBpZF90IHBpZCwgY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgY2xpZW50LCBjb25zdCBjaGFyKiB1cmwsIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzID0gTlVMTCkgPSAwOwotICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiAgICBjcmVhdGUocGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCBzcDxJTWVkaWFQbGF5ZXI+IGNyZWF0ZShwaWRfdCBwaWQsIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHVybCwgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMgPSBOVUxMLAorICAgICAgICAgICAgaW50IGF1ZGlvU2Vzc2lvbklkID0gMCkgPSAwOworICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiBjcmVhdGUocGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsCisgICAgICAgICAgICBpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCwgaW50IGF1ZGlvU2Vzc2lvbklkKSA9IDA7CiAgICAgdmlydHVhbCBzcDxJTWVtb3J5PiAgICAgICAgIGRlY29kZShjb25zdCBjaGFyKiB1cmwsIHVpbnQzMl90ICpwU2FtcGxlUmF0ZSwgaW50KiBwTnVtQ2hhbm5lbHMsIGludCogcEZvcm1hdCkgPSAwOwogICAgIHZpcnR1YWwgc3A8SU1lbW9yeT4gICAgICAgICBkZWNvZGUoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgsIHVpbnQzMl90ICpwU2FtcGxlUmF0ZSwgaW50KiBwTnVtQ2hhbm5lbHMsIGludCogcEZvcm1hdCkgPSAwOwogICAgIHZpcnR1YWwgc3A8SU9NWD4gICAgICAgICAgICBnZXRPTVgoKSA9IDA7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0lNZWRpYVJlY29yZGVyLmggYi9pbmNsdWRlL21lZGlhL0lNZWRpYVJlY29yZGVyLmgKaW5kZXggMjRhYzgyYi4uY2ZjMTdhNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9JTWVkaWFSZWNvcmRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvSU1lZGlhUmVjb3JkZXIuaApAQCAtMjQsNyArMjQsNyBAQAogCiBjbGFzcyBJU3VyZmFjZTsKIGNsYXNzIElDYW1lcmE7Ci1jbGFzcyBJTWVkaWFQbGF5ZXJDbGllbnQ7CitjbGFzcyBJTWVkaWFSZWNvcmRlckNsaWVudDsKIAogY2xhc3MgSU1lZGlhUmVjb3JkZXI6IHB1YmxpYyBJSW50ZXJmYWNlCiB7CkBAIC00Myw3ICs0Myw3IEBACiAgICAgdmlydHVhbAlzdGF0dXNfdAkJc2V0VmlkZW9TaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwJc3RhdHVzX3QJCXNldFZpZGVvRnJhbWVSYXRlKGludCBmcmFtZXNfcGVyX3NlY29uZCkgPSAwOwogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYgcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgbGlzdGVuZXIpID0gMDsKKyAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4mIGxpc3RlbmVyKSA9IDA7CiAgICAgdmlydHVhbAlzdGF0dXNfdAkJcHJlcGFyZSgpID0gMDsKICAgICB2aXJ0dWFsCXN0YXR1c190CQlnZXRNYXhBbXBsaXR1ZGUoaW50KiBtYXgpID0gMDsKICAgICB2aXJ0dWFsCXN0YXR1c190CQlzdGFydCgpID0gMDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuaCBiL2luY2x1ZGUvbWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDU4ZWYyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9JTWVkaWFSZWNvcmRlckNsaWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfSU1FRElBUkVDT1JERVJDTElFTlRfSAorI2RlZmluZSBBTkRST0lEX0lNRURJQVJFQ09SREVSQ0xJRU5UX0gKKworI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSUludGVyZmFjZS5oPgorI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBJTWVkaWFSZWNvcmRlckNsaWVudDogcHVibGljIElJbnRlcmZhY2UKK3sKK3B1YmxpYzoKKyAgICBERUNMQVJFX01FVEFfSU5URVJGQUNFKE1lZGlhUmVjb3JkZXJDbGllbnQpOworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeShpbnQgbXNnLCBpbnQgZXh0MSwgaW50IGV4dDIpID0gMDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgQm5NZWRpYVJlY29yZGVyQ2xpZW50OiBwdWJsaWMgQm5JbnRlcmZhY2U8SU1lZGlhUmVjb3JkZXJDbGllbnQ+Cit7CitwdWJsaWM6CisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBvblRyYW5zYWN0KCB1aW50MzJfdCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyY2VsJiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyY2VsKiByZXBseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzID0gMCk7Cit9OworCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gQU5EUk9JRF9JTUVESUFSRUNPUkRFUkNMSUVOVF9ICisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvTWVkaWFQbGF5ZXJJbnRlcmZhY2UuaCBiL2luY2x1ZGUvbWVkaWEvTWVkaWFQbGF5ZXJJbnRlcmZhY2UuaAppbmRleCA5ZTYwNmQ5Li4zNjYyOTgzIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL01lZGlhUGxheWVySW50ZXJmYWNlLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9NZWRpYVBsYXllckludGVyZmFjZS5oCkBAIC0zOSw3ICszOSw2IEBACiBlbnVtIHBsYXllcl90eXBlIHsKICAgICBQVl9QTEFZRVIgPSAxLAogICAgIFNPTklWT1hfUExBWUVSID0gMiwKLSAgICBWT1JCSVNfUExBWUVSID0gMywKICAgICBTVEFHRUZSSUdIVF9QTEFZRVIgPSA0LAogICAgIC8vIFRlc3QgcGxheWVycyBhcmUgYXZhaWxhYmxlIG9ubHkgaW4gdGhlICd0ZXN0JyBhbmQgJ2VuZycgYnVpbGRzLgogICAgIC8vIFRoZSBzaGFyZWQgbGlicmFyeSB3aXRoIHRoZSB0ZXN0IHBsYXllciBpcyBwYXNzZWQgcGFzc2VkIGFzIGFuCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL01lZGlhUHJvZmlsZXMuaCBiL2luY2x1ZGUvbWVkaWEvTWVkaWFQcm9maWxlcy5oCmluZGV4IGE0ZWVhMmEuLmMzY2QzNjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvTWVkaWFQcm9maWxlcy5oCisrKyBiL2luY2x1ZGUvbWVkaWEvTWVkaWFQcm9maWxlcy5oCkBAIC00OCw4ICs0OCw4IEBACiAgICAgc3RhdGljIE1lZGlhUHJvZmlsZXMqIGdldEluc3RhbmNlKCk7CiAKICAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHBhcmFtIG5hbWUgYXQgdGhlIGdpdmVuIHF1YWxpdHkgbGV2ZWwsCi0gICAgICogb3IgLTEgaWYgZXJyb3IuCisgICAgICogUmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBnaXZlbiBwYXJhbSBuYW1lIGZvciB0aGUgZ2l2ZW4gY2FtZXJhIGF0CisgICAgICogdGhlIGdpdmVuIHF1YWxpdHkgbGV2ZWwsIG9yIC0xIGlmIGVycm9yLgogICAgICAqCiAgICAgICogU3VwcG9ydGVkIHBhcmFtIG5hbWUgYXJlOgogICAgICAqIGR1cmF0aW9uIC0gdGhlIHJlY29yZGluZyBkdXJhdGlvbi4KQEAgLTY0LDcgKzY0LDggQEAKICAgICAgKiBhdWQuaHogLSBhdWRpbyBzYW1wbGUgcmF0ZQogICAgICAqIGF1ZC5jaCAtIG51bWJlciBvZiBhdWRpbyBjaGFubmVscwogICAgICAqLwotICAgIGludCBnZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgY2FtY29yZGVyX3F1YWxpdHkgcXVhbGl0eSkgY29uc3Q7CisgICAgaW50IGdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZShjb25zdCBjaGFyICpuYW1lLCBpbnQgY2FtZXJhSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1jb3JkZXJfcXVhbGl0eSBxdWFsaXR5KSBjb25zdDsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIG91dHB1dCBmaWxlIGZvcm1hdHMgc3VwcG9ydGVkLgpAQCAtMTI0LDEyICsxMjUsNyBAQAogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBpbWFnZSBlbmNvZGluZyBxdWFsaXR5IGxldmVscyBzdXBwb3J0ZWQuCiAgICAgICovCi0gICAgVmVjdG9yPGludD4gZ2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBpbiBieXRlcyB3ZSBjYW4gdXNlIGZvciBkZWNvZGluZyBhIEpQRUcgZmlsZS4KLSAgICAgKi8KLSAgICBpbnQgZ2V0SW1hZ2VEZWNvZGluZ01heE1lbW9yeSgpIGNvbnN0OworICAgIFZlY3RvcjxpbnQ+IGdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGludCBjYW1lcmFJZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQcm9maWxlcyYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhUHJvZmlsZXMmKTsgIC8vIERvbid0IGNhbGwgbWUKQEAgLTE3MSw3ICsxNjcsOCBAQAogCiAgICAgc3RydWN0IENhbWNvcmRlclByb2ZpbGUgewogICAgICAgICBDYW1jb3JkZXJQcm9maWxlKCkKLSAgICAgICAgICAgIDogbUZpbGVGb3JtYXQoT1VUUFVUX0ZPUk1BVF9USFJFRV9HUFApLAorICAgICAgICAgICAgOiBtQ2FtZXJhSWQoMCksCisgICAgICAgICAgICAgIG1GaWxlRm9ybWF0KE9VVFBVVF9GT1JNQVRfVEhSRUVfR1BQKSwKICAgICAgICAgICAgICAgbVF1YWxpdHkoQ0FNQ09SREVSX1FVQUxJVFlfSElHSCksCiAgICAgICAgICAgICAgIG1EdXJhdGlvbigwKSwKICAgICAgICAgICAgICAgbVZpZGVvQ29kZWMoMCksCkBAIC0xODIsNiArMTc5LDcgQEAKICAgICAgICAgICAgIGRlbGV0ZSBtQXVkaW9Db2RlYzsKICAgICAgICAgfQogCisgICAgICAgIGludCBtQ2FtZXJhSWQ7CiAgICAgICAgIG91dHB1dF9mb3JtYXQgbUZpbGVGb3JtYXQ7CiAgICAgICAgIGNhbWNvcmRlcl9xdWFsaXR5IG1RdWFsaXR5OwogICAgICAgICBpbnQgbUR1cmF0aW9uOwpAQCAtMjQ5LDYgKzI0NywxMSBAQAogICAgICAgICBpbnQgdGFnOwogICAgIH07CiAKKyAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMgeworICAgICAgICBpbnQgbUNhbWVyYUlkOworICAgICAgICBWZWN0b3I8aW50PiBtTGV2ZWxzOworICAgIH07CisKICAgICAvLyBEZWJ1ZwogICAgIHN0YXRpYyB2b2lkIGxvZ1ZpZGVvQ29kZWMoY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpOwogICAgIHN0YXRpYyB2b2lkIGxvZ0F1ZGlvQ29kZWMoY29uc3QgQXVkaW9Db2RlYyYgY29kZWMpOwpAQCAtMjY3LDkgKzI3MCwxMSBAQAogICAgIHN0YXRpYyBWaWRlb0RlY29kZXJDYXAqIGNyZWF0ZVZpZGVvRGVjb2RlckNhcChjb25zdCBjaGFyICoqYXR0cyk7CiAgICAgc3RhdGljIFZpZGVvRW5jb2RlckNhcCogY3JlYXRlVmlkZW9FbmNvZGVyQ2FwKGNvbnN0IGNoYXIgKiphdHRzKTsKICAgICBzdGF0aWMgQXVkaW9FbmNvZGVyQ2FwKiBjcmVhdGVBdWRpb0VuY29kZXJDYXAoY29uc3QgY2hhciAqKmF0dHMpOwotICAgIHN0YXRpYyBDYW1jb3JkZXJQcm9maWxlKiBjcmVhdGVDYW1jb3JkZXJQcm9maWxlKGNvbnN0IGNoYXIgKiphdHRzKTsKLSAgICBzdGF0aWMgaW50IGdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWwoY29uc3QgY2hhciAqKmF0dHMpOwotICAgIHN0YXRpYyBpbnQgZ2V0SW1hZ2VEZWNvZGluZ01heE1lbW9yeShjb25zdCBjaGFyICoqYXR0cyk7CisgICAgc3RhdGljIENhbWNvcmRlclByb2ZpbGUqIGNyZWF0ZUNhbWNvcmRlclByb2ZpbGUoaW50IGNhbWVyYUlkLCBjb25zdCBjaGFyICoqYXR0cyk7CisgICAgc3RhdGljIGludCBnZXRDYW1lcmFJZChjb25zdCBjaGFyICoqYXR0cyk7CisKKyAgICBJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyogZmluZEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGludCBjYW1lcmFJZCkgY29uc3Q7CisgICAgdm9pZCBhZGRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVsKGludCBjYW1lcmFJZCwgY29uc3QgY2hhcioqIGF0dHMpOwogCiAgICAgLy8gQ3VzdG9taXplZCBlbGVtZW50IHRhZyBoYW5kbGVyIGZvciBwYXJzaW5nIHRoZSB4bWwgY29uZmlndXJhdGlvbiBmaWxlLgogICAgIHN0YXRpYyB2b2lkIHN0YXJ0RWxlbWVudEhhbmRsZXIodm9pZCAqdXNlckRhdGEsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKiphdHRzKTsKQEAgLTMwMyw2ICszMDgsNyBAQAogICAgIHN0YXRpYyBib29sIHNJc0luaXRpYWxpemVkOwogICAgIHN0YXRpYyBNZWRpYVByb2ZpbGVzICpzSW5zdGFuY2U7CiAgICAgc3RhdGljIE11dGV4IHNMb2NrOworICAgIGludCBtQ3VycmVudENhbWVyYUlkOwogCiAgICAgVmVjdG9yPENhbWNvcmRlclByb2ZpbGUqPiBtQ2FtY29yZGVyUHJvZmlsZXM7CiAgICAgVmVjdG9yPEF1ZGlvRW5jb2RlckNhcCo+ICBtQXVkaW9FbmNvZGVyczsKQEAgLTMxMCw4ICszMTYsNyBAQAogICAgIFZlY3RvcjxBdWRpb0RlY29kZXJDYXAqPiAgbUF1ZGlvRGVjb2RlcnM7CiAgICAgVmVjdG9yPFZpZGVvRGVjb2RlckNhcCo+ICBtVmlkZW9EZWNvZGVyczsKICAgICBWZWN0b3I8b3V0cHV0X2Zvcm1hdD4gICAgIG1FbmNvZGVyT3V0cHV0RmlsZUZvcm1hdHM7Ci0gICAgVmVjdG9yPGludD4gICAgICAgICAgICAgICBtSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHM7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICBtSW1hZ2VEZWNvZGluZ01heE1lbW9yeTsKKyAgICBWZWN0b3I8SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMgKj4gIG1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVsczsKIH07CiAKIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL01lZGlhUmVjb3JkZXJCYXNlLmggYi9pbmNsdWRlL21lZGlhL01lZGlhUmVjb3JkZXJCYXNlLmgKaW5kZXggNWI3ODdhNy4uNDk3OTY1YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9NZWRpYVJlY29yZGVyQmFzZS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvTWVkaWFSZWNvcmRlckJhc2UuaApAQCAtNDEsNyArNDEsNyBAQAogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0T3V0cHV0RmlsZShjb25zdCBjaGFyICpwYXRoKSA9IDA7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRPdXRwdXRGaWxlKGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgbGlzdGVuZXIpID0gMDsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHNldExpc3RlbmVyKGNvbnN0IHNwPElNZWRpYVJlY29yZGVyQ2xpZW50PiYgbGlzdGVuZXIpID0gMDsKICAgICB2aXJ0dWFsIHN0YXR1c190IHByZXBhcmUoKSA9IDA7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydCgpID0gMDsKICAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKSA9IDA7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL1BWTWVkaWFSZWNvcmRlci5oIGIvaW5jbHVkZS9tZWRpYS9QVk1lZGlhUmVjb3JkZXIuaAppbmRleCA0ZjE3YzFhLi5jMDQxMDVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL1BWTWVkaWFSZWNvcmRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvUFZNZWRpYVJlY29yZGVyLmgKQEAgLTE4LDcgKzE4LDcgQEAKICNpZm5kZWYgQU5EUk9JRF9QVk1FRElBUkVDT1JERVJfSAogI2RlZmluZSBBTkRST0lEX1BWTUVESUFSRUNPUkRFUl9ICiAKLSNpbmNsdWRlIDxtZWRpYS9JTWVkaWFQbGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxtZWRpYS9JTWVkaWFSZWNvcmRlckNsaWVudC5oPgogI2luY2x1ZGUgPG1lZGlhL01lZGlhUmVjb3JkZXJCYXNlLmg+CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgICB2aXJ0dWFsIHN0YXR1c190IHNldE91dHB1dEZpbGUoY29uc3QgY2hhciAqcGF0aCk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRPdXRwdXRGaWxlKGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYgcGFyYW1zKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190IHNldExpc3RlbmVyKGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGxpc3RlbmVyKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHNldExpc3RlbmVyKGNvbnN0IHNwPElNZWRpYVJlY29yZGVyQ2xpZW50PiYgbGlzdGVuZXIpOwogICAgIHZpcnR1YWwgc3RhdHVzX3QgcHJlcGFyZSgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvbWVkaWFwbGF5ZXIuaCBiL2luY2x1ZGUvbWVkaWEvbWVkaWFwbGF5ZXIuaAppbmRleCA3ZmFkMWI3Li42MmE0ZTUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL21lZGlhcGxheWVyLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9tZWRpYXBsYXllci5oCkBAIC05Myw2ICs5MywxMSBAQAogICAgIC8vIFRoZSB2aWRlbyBpcyB0b28gY29tcGxleCBmb3IgdGhlIGRlY29kZXI6IGl0IGNhbid0IGRlY29kZSBmcmFtZXMgZmFzdAogICAgIC8vIGVub3VnaC4gUG9zc2libHkgb25seSB0aGUgYXVkaW8gcGxheXMgZmluZSBhdCB0aGlzIHN0YWdlLgogICAgIE1FRElBX0lORk9fVklERU9fVFJBQ0tfTEFHR0lORyA9IDcwMCwKKyAgICAvLyBNZWRpYVBsYXllciBpcyB0ZW1wb3JhcmlseSBwYXVzaW5nIHBsYXliYWNrIGludGVybmFsbHkgaW4gb3JkZXIgdG8KKyAgICAvLyBidWZmZXIgbW9yZSBkYXRhLgorICAgIE1FRElBX0lORk9fQlVGRkVSSU5HX1NUQVJUID0gNzAxLAorICAgIC8vIE1lZGlhUGxheWVyIGlzIHJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGZpbGxpbmcgYnVmZmVycy4KKyAgICBNRURJQV9JTkZPX0JVRkZFUklOR19FTkQgPSA3MDIsCiAgICAgLy8gOHh4CiAgICAgLy8gQmFkIGludGVybGVhdmluZyBtZWFucyB0aGF0IGEgbWVkaWEgaGFzIGJlZW4gaW1wcm9wZXJseSBpbnRlcmxlYXZlZCBvciBub3QKICAgICAvLyBpbnRlcmxlYXZlZCBhdCBhbGwsIGUuZyBoYXMgYWxsIHRoZSB2aWRlbyBzYW1wbGVzIGZpcnN0IHRoZW4gYWxsIHRoZSBhdWRpbwpAQCAtMTY3LDYgKzE3Miw4IEBACiAgICAgICAgICAgICBzdGF0dXNfdCAgICAgICAgZ2V0TWV0YWRhdGEoYm9vbCB1cGRhdGVfb25seSwgYm9vbCBhcHBseV9maWx0ZXIsIFBhcmNlbCAqbWV0YWRhdGEpOwogICAgICAgICAgICAgc3RhdHVzX3QgICAgICAgIHN1c3BlbmQoKTsKICAgICAgICAgICAgIHN0YXR1c190ICAgICAgICByZXN1bWUoKTsKKyAgICAgICAgICAgIHN0YXR1c190ICAgICAgICBzZXRBdWRpb1Nlc3Npb25JZChpbnQgc2Vzc2lvbklkKTsKKyAgICAgICAgICAgIGludCAgICAgICAgICAgICBnZXRBdWRpb1Nlc3Npb25JZCgpOwogcHJpdmF0ZToKICAgICAgICAgICAgIHZvaWQgICAgICAgICAgICBjbGVhcl9sKCk7CiAgICAgICAgICAgICBzdGF0dXNfdCAgICAgICAgc2Vla1RvX2woaW50IG1zZWMpOwpAQCAtMTkzLDYgKzIwMCw3IEBACiAgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgIG1SaWdodFZvbHVtZTsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbVZpZGVvV2lkdGg7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1WaWRlb0hlaWdodDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbUF1ZGlvU2Vzc2lvbklkOwogfTsKIAogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvbWVkaWFyZWNvcmRlci5oIGIvaW5jbHVkZS9tZWRpYS9tZWRpYXJlY29yZGVyLmgKaW5kZXggOWVhNmM3Yi4uYjIxYmM0ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9tZWRpYXJlY29yZGVyLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9tZWRpYXJlY29yZGVyLmgKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+CiAjaW5jbHVkZSA8dXRpbHMvTGlzdC5oPgogI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgotI2luY2x1ZGUgPG1lZGlhL0lNZWRpYVBsYXllckNsaWVudC5oPgorI2luY2x1ZGUgPG1lZGlhL0lNZWRpYVJlY29yZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8bWVkaWEvSU1lZGlhRGVhdGhOb3RpZmllci5oPgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CkBAIC0xMzUsNyArMTM1LDEwIEBACiBlbnVtIG1lZGlhX3JlY29yZGVyX2luZm9fdHlwZSB7CiAgICAgTUVESUFfUkVDT1JERVJfSU5GT19VTktOT1dOICAgICAgICAgICAgICAgICAgID0gMSwKICAgICBNRURJQV9SRUNPUkRFUl9JTkZPX01BWF9EVVJBVElPTl9SRUFDSEVEICAgICAgPSA4MDAsCi0gICAgTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRklMRVNJWkVfUkVBQ0hFRCAgICAgID0gODAxCisgICAgTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRklMRVNJWkVfUkVBQ0hFRCAgICAgID0gODAxLAorICAgIE1FRElBX1JFQ09SREVSX0lORk9fQ09NUExFVElPTl9TVEFUVVMgICAgICAgICA9IDgwMiwKKyAgICBNRURJQV9SRUNPUkRFUl9JTkZPX1BST0dSRVNTX0ZSQU1FX1NUQVRVUyAgICAgPSA4MDMsCisgICAgTUVESUFfUkVDT1JERVJfSU5GT19QUk9HUkVTU19USU1FX1NUQVRVUyAgICAgID0gODA0LAogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ2LDcgKzE0OSw3IEBACiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeShpbnQgbXNnLCBpbnQgZXh0MSwgaW50IGV4dDIpID0gMDsKIH07CiAKLWNsYXNzIE1lZGlhUmVjb3JkZXIgOiBwdWJsaWMgQm5NZWRpYVBsYXllckNsaWVudCwKK2NsYXNzIE1lZGlhUmVjb3JkZXIgOiBwdWJsaWMgQm5NZWRpYVJlY29yZGVyQ2xpZW50LAogICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2aXJ0dWFsIElNZWRpYURlYXRoTm90aWZpZXIKIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQU1SV3JpdGVyLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0FNUldyaXRlci5oCmluZGV4IDM3MjkwOWEuLjgxM2RkNDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQU1SV3JpdGVyLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9BTVJXcml0ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiBzdHJ1Y3QgTWVkaWFTb3VyY2U7CitzdHJ1Y3QgTWV0YURhdGE7CiAKIHN0cnVjdCBBTVJXcml0ZXIgOiBwdWJsaWMgTWVkaWFXcml0ZXIgewogICAgIEFNUldyaXRlcihjb25zdCBjaGFyICpmaWxlbmFtZSk7CkBAIC0zNSwyNSArMzYsMzAgQEAKIAogICAgIHZpcnR1YWwgc3RhdHVzX3QgYWRkU291cmNlKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVhY2hlZEVPUygpOwotICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMgPSBOVUxMKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+QU1SV3JpdGVyKCk7CiAKIHByaXZhdGU6Ci0gICAgTXV0ZXggbUxvY2s7Ci0KICAgICBGSUxFICptRmlsZTsKICAgICBzdGF0dXNfdCBtSW5pdENoZWNrOwogICAgIHNwPE1lZGlhU291cmNlPiBtU291cmNlOwogICAgIGJvb2wgbVN0YXJ0ZWQ7CisgICAgdm9sYXRpbGUgYm9vbCBtUGF1c2VkOworICAgIHZvbGF0aWxlIGJvb2wgbVJlc3VtZWQ7CiAgICAgdm9sYXRpbGUgYm9vbCBtRG9uZTsKLSAgICBib29sIG1SZWFjaGVkRU9TOworICAgIHZvbGF0aWxlIGJvb2wgbVJlYWNoZWRFT1M7CiAgICAgcHRocmVhZF90IG1UaHJlYWQ7CisgICAgaW50NjRfdCBtRXN0aW1hdGVkU2l6ZUJ5dGVzOworICAgIGludDY0X3QgbUVzdGltYXRlZER1cmF0aW9uVXM7CiAKICAgICBzdGF0aWMgdm9pZCAqVGhyZWFkV3JhcHBlcih2b2lkICopOwogICAgIHZvaWQgdGhyZWFkRnVuYygpOworICAgIGJvb2wgZXhjZWVkc0ZpbGVTaXplTGltaXQoKTsKKyAgICBib29sIGV4Y2VlZHNGaWxlRHVyYXRpb25MaW1pdCgpOwogCiAgICAgQU1SV3JpdGVyKGNvbnN0IEFNUldyaXRlciAmKTsKICAgICBBTVJXcml0ZXIgJm9wZXJhdG9yPShjb25zdCBBTVJXcml0ZXIgJik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0F1ZGlvU291cmNlLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0F1ZGlvU291cmNlLmgKaW5kZXggZWIwMDE0MC4uNjI4MjAwZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9BdWRpb1NvdXJjZS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuaApAQCAtMzksNiArMzksOSBAQAogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOwogICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldEZvcm1hdCgpOwogCisgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbXBsaXR1ZGUgc2luY2UgbGFzdCBjYWxsLgorICAgIGludDE2X3QgZ2V0TWF4QW1wbGl0dWRlKCk7CisKICAgICB2aXJ0dWFsIHN0YXR1c190IHJlYWQoCiAgICAgICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMgPSBOVUxMKTsKIApAQCAtNDYsMTMgKzQ5LDI0IEBACiAgICAgdmlydHVhbCB+QXVkaW9Tb3VyY2UoKTsKIAogcHJpdmF0ZToKLSAgICBlbnVtIHsga01heEJ1ZmZlclNpemUgPSA4MTkyIH07CisgICAgZW51bSB7IGtNYXhCdWZmZXJTaXplID0gMjA0OCB9OwogCiAgICAgQXVkaW9SZWNvcmQgKm1SZWNvcmQ7CiAgICAgc3RhdHVzX3QgbUluaXRDaGVjazsKICAgICBib29sIG1TdGFydGVkOworCisgICAgYm9vbCBtQ29sbGVjdFN0YXRzOworICAgIGJvb2wgbVRyYWNrTWF4QW1wbGl0dWRlOworICAgIGludDY0X3QgbVRvdGFsUmVhZFRpbWVVczsKKyAgICBpbnQ2NF90IG1Ub3RhbFJlYWRCeXRlczsKKyAgICBpbnQ2NF90IG1Ub3RhbFJlYWRzOworICAgIGludDY0X3QgbVN0YXJ0VGltZVVzOworICAgIGludDE2X3QgbU1heEFtcGxpdHVkZTsKKwogICAgIE1lZGlhQnVmZmVyR3JvdXAgKm1Hcm91cDsKIAorICAgIHZvaWQgdHJhY2tNYXhBbXBsaXR1ZGUoaW50MTZfdCAqZGF0YSwgaW50IG5TYW1wbGVzKTsKKwogICAgIEF1ZGlvU291cmNlKGNvbnN0IEF1ZGlvU291cmNlICYpOwogICAgIEF1ZGlvU291cmNlICZvcGVyYXRvcj0oY29uc3QgQXVkaW9Tb3VyY2UgJik7CiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmQ1MGU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ2FjaGluZ0RhdGFTb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIENBQ0hJTkdfREFUQVNPVVJDRV9IXwotCi0jZGVmaW5lIENBQ0hJTkdfREFUQVNPVVJDRV9IXwotCi0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRGF0YVNvdXJjZS5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+Ci0jaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLWNsYXNzIENhY2hpbmdEYXRhU291cmNlIDogcHVibGljIERhdGFTb3VyY2UgewotcHVibGljOgotICAgIENhY2hpbmdEYXRhU291cmNlKAotICAgICAgICAgICAgY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSwgc2l6ZV90IHBhZ2VTaXplLCBpbnQgbnVtUGFnZXMpOwotCi0gICAgdmlydHVhbCBzdGF0dXNfdCBpbml0Q2hlY2soKSBjb25zdDsKLQotICAgIHZpcnR1YWwgc3NpemVfdCByZWFkQXQob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190IGdldFNpemUob2ZmX3QgKnNpemUpOwotCi0gICAgdmlydHVhbCB1aW50MzJfdCBmbGFncygpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+Q2FjaGluZ0RhdGFTb3VyY2UoKTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgUGFnZSB7Ci0gICAgICAgIFBhZ2UgKm1QcmV2LCAqbU5leHQ7Ci0gICAgICAgIG9mZl90IG1PZmZzZXQ7Ci0gICAgICAgIHNpemVfdCBtTGVuZ3RoOwotICAgICAgICB2b2lkICptRGF0YTsKLSAgICB9OwotCi0gICAgc3A8RGF0YVNvdXJjZT4gbVNvdXJjZTsKLSAgICB2b2lkICptRGF0YTsKLSAgICBzaXplX3QgbVBhZ2VTaXplOwotICAgIFBhZ2UgKm1GaXJzdCwgKm1MYXN0OwotCi0gICAgUGFnZSAqYWxsb2NhdGVfcGFnZSgpOwotCi0gICAgTXV0ZXggbUxvY2s7Ci0KLSAgICBDYWNoaW5nRGF0YVNvdXJjZShjb25zdCBDYWNoaW5nRGF0YVNvdXJjZSAmKTsKLSAgICBDYWNoaW5nRGF0YVNvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IENhY2hpbmdEYXRhU291cmNlICYpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKLQotI2VuZGlmICAvLyBDQUNISU5HX0RBVEFTT1VSQ0VfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ2FtZXJhU291cmNlLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0NhbWVyYVNvdXJjZS5oCmluZGV4IGVhNDM1ZGUuLjMxOTJkMDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ2FtZXJhU291cmNlLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9DYW1lcmFTb3VyY2UuaApAQCAtMjgsMTggKzI4LDE1IEBACiAKIGNsYXNzIElDYW1lcmE7CiBjbGFzcyBJTWVtb3J5OwotY2xhc3MgSVN1cmZhY2U7CiBjbGFzcyBDYW1lcmE7CiAKLWNsYXNzIENhbWVyYVNvdXJjZSA6IHB1YmxpYyBNZWRpYVNvdXJjZSB7CitjbGFzcyBDYW1lcmFTb3VyY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2UsIHB1YmxpYyBNZWRpYUJ1ZmZlck9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FtZXJhU291cmNlICpDcmVhdGUoKTsKLSAgICBzdGF0aWMgQ2FtZXJhU291cmNlICpDcmVhdGVGcm9tSUNhbWVyYShjb25zdCBzcDxJQ2FtZXJhPiAmaWNhbWVyYSk7CisgICAgc3RhdGljIENhbWVyYVNvdXJjZSAqQ3JlYXRlRnJvbUNhbWVyYShjb25zdCBzcDxDYW1lcmE+ICZjYW1lcmEpOwogCiAgICAgdmlydHVhbCB+Q2FtZXJhU291cmNlKCk7CiAKLSAgICB2b2lkIHNldFByZXZpZXdTdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiAmc3VyZmFjZSk7Ci0KICAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMgPSBOVUxMKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKIApAQCAtNDgsMjUgKzQ1LDM5IEBACiAgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAogICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zID0gTlVMTCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2lnbmFsQnVmZmVyUmV0dXJuZWQoTWVkaWFCdWZmZXIqIGJ1ZmZlcik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhbWVyYVNvdXJjZUxpc3RlbmVyOwogCiAgICAgc3A8Q2FtZXJhPiBtQ2FtZXJhOwotICAgIHNwPElTdXJmYWNlPiBtUHJldmlld1N1cmZhY2U7CisgICAgc3A8TWV0YURhdGE+IG1NZXRhOwogCiAgICAgTXV0ZXggbUxvY2s7CiAgICAgQ29uZGl0aW9uIG1GcmFtZUF2YWlsYWJsZUNvbmRpdGlvbjsKLSAgICBMaXN0PHNwPElNZW1vcnk+ID4gbUZyYW1lczsKKyAgICBDb25kaXRpb24gbUZyYW1lQ29tcGxldGVDb25kaXRpb247CisgICAgTGlzdDxzcDxJTWVtb3J5PiA+IG1GcmFtZXNSZWNlaXZlZDsKKyAgICBMaXN0PHNwPElNZW1vcnk+ID4gbUZyYW1lc0JlaW5nRW5jb2RlZDsKICAgICBMaXN0PGludDY0X3Q+IG1GcmFtZVRpbWVzOwogCi0gICAgaW50IG1XaWR0aCwgbUhlaWdodDsKKyAgICBpbnQ2NF90IG1TdGFydFRpbWVVczsKICAgICBpbnQ2NF90IG1GaXJzdEZyYW1lVGltZVVzOwotICAgIGludDMyX3QgbU51bUZyYW1lczsKKyAgICBpbnQ2NF90IG1MYXN0RnJhbWVUaW1lc3RhbXBVczsKKyAgICBpbnQzMl90IG1OdW1GcmFtZXNSZWNlaXZlZDsKKyAgICBpbnQzMl90IG1OdW1GcmFtZXNFbmNvZGVkOworICAgIGludDMyX3QgbU51bUZyYW1lc0Ryb3BwZWQ7CisgICAgaW50MzJfdCBtTnVtR2xpdGNoZXM7CisgICAgaW50NjRfdCBtR2xpdGNoRHVyYXRpb25UaHJlc2hvbGRVczsKKyAgICBib29sIG1Db2xsZWN0U3RhdHM7CiAgICAgYm9vbCBtU3RhcnRlZDsKIAogICAgIENhbWVyYVNvdXJjZShjb25zdCBzcDxDYW1lcmE+ICZjYW1lcmEpOwogCi0gICAgdm9pZCBkYXRhQ2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiAmZGF0YSk7CisgICAgdm9pZCBkYXRhQ2FsbGJhY2tUaW1lc3RhbXAoCisgICAgICAgICAgICBpbnQ2NF90IHRpbWVzdGFtcFVzLCBpbnQzMl90IG1zZ1R5cGUsIGNvbnN0IHNwPElNZW1vcnk+ICZkYXRhKTsKKworICAgIHZvaWQgcmVsZWFzZVF1ZXVlZEZyYW1lcygpOworICAgIHZvaWQgcmVsZWFzZU9uZVJlY29yZGluZ0ZyYW1lKGNvbnN0IHNwPElNZW1vcnk+JiBmcmFtZSk7CiAKICAgICBDYW1lcmFTb3VyY2UoY29uc3QgQ2FtZXJhU291cmNlICYpOwogICAgIENhbWVyYVNvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IENhbWVyYVNvdXJjZSAmKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ29sb3JDb252ZXJ0ZXIuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ29sb3JDb252ZXJ0ZXIuaAppbmRleCAxZTM0MWI5Li5iYzNmNDY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0NvbG9yQ29udmVydGVyLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9Db2xvckNvbnZlcnRlci5oCkBAIC01OCw2ICs1OCwxMSBAQAogICAgICAgICAgICAgY29uc3Qgdm9pZCAqc3JjQml0cywgc2l6ZV90IHNyY1NraXAsCiAgICAgICAgICAgICB2b2lkICpkc3RCaXRzLCBzaXplX3QgZHN0U2tpcCk7CiAKKyAgICB2b2lkIGNvbnZlcnRZVVY0MjBTZW1pUGxhbmFyKAorICAgICAgICAgICAgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgY29uc3Qgdm9pZCAqc3JjQml0cywgc2l6ZV90IHNyY1NraXAsCisgICAgICAgICAgICB2b2lkICpkc3RCaXRzLCBzaXplX3QgZHN0U2tpcCk7CisKICAgICBDb2xvckNvbnZlcnRlcihjb25zdCBDb2xvckNvbnZlcnRlciAmKTsKICAgICBDb2xvckNvbnZlcnRlciAmb3BlcmF0b3I9KGNvbnN0IENvbG9yQ29udmVydGVyICYpOwogfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvSFRUUERhdGFTb3VyY2UuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvSFRUUERhdGFTb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQwMGJlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpZm5kZWYgSFRUUF9EQVRBU09VUkNFX0hfCi0KLSNkZWZpbmUgSFRUUF9EQVRBU09VUkNFX0hfCi0KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+Ci0jaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgotI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1jbGFzcyBIVFRQU3RyZWFtOwotCi1jbGFzcyBIVFRQRGF0YVNvdXJjZSA6IHB1YmxpYyBEYXRhU291cmNlIHsKLXB1YmxpYzoKLSAgICBIVFRQRGF0YVNvdXJjZSgKLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsIGludCBwb3J0LCBjb25zdCBjaGFyICpwYXRoLAotICAgICAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMgPSBOVUxMKTsKLQotICAgIEhUVFBEYXRhU291cmNlKAotICAgICAgICAgICAgY29uc3QgY2hhciAqdXJpLAotICAgICAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMgPSBOVUxMKTsKLQotICAgIHN0YXR1c190IGNvbm5lY3QoKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQotICAgIHZpcnR1YWwgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHNzaXplX3QgcmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOwotCi0gICAgdmlydHVhbCBzdGF0dXNfdCBnZXRTaXplKG9mZl90ICpzaXplKTsKLQotICAgIHZpcnR1YWwgdWludDMyX3QgZmxhZ3MoKTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkhUVFBEYXRhU291cmNlKCk7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSB7Ci0gICAgICAgIGtCdWZmZXJTaXplID0gNjQgKiAxMDI0LAotCi0gICAgICAgIC8vIElmIHdlIGVuY291bnRlciBhIHNvY2tldC1yZWFkIGVycm9yIHdlJ2xsIHRyeSByZWNvbm5lY3RpbmcKLSAgICAgICAgLy8gYW5kIHJlc3RhcnRpbmcgdGhlIHJlYWQgZm9yIGF0IG1vc3QgdGhpcyBtYW55IHRpbWVzLgotICAgICAgICBrTWF4TnVtUmV0cmllcyA9IDMsCi0gICAgfTsKLQotICAgIGVudW0gU3RhdGUgewotICAgICAgICBESVNDT05ORUNURUQsCi0gICAgICAgIENPTk5FQ1RJTkcsCi0gICAgICAgIENPTk5FQ1RFRAotICAgIH07Ci0KLSAgICBTdGF0ZSBtU3RhdGU7Ci0gICAgbXV0YWJsZSBNdXRleCBtU3RhdGVMb2NrOwotCi0gICAgU3RyaW5nOCBtSGVhZGVyczsKLQotICAgIFN0cmluZzggbVN0YXJ0aW5nSG9zdDsKLSAgICBTdHJpbmc4IG1TdGFydGluZ1BhdGg7Ci0gICAgaW50IG1TdGFydGluZ1BvcnQ7Ci0KLSAgICBIVFRQU3RyZWFtICptSHR0cDsKLQotICAgIHZvaWQgKm1CdWZmZXI7Ci0gICAgc2l6ZV90IG1CdWZmZXJMZW5ndGg7Ci0gICAgb2ZmX3QgbUJ1ZmZlck9mZnNldDsKLQotICAgIGJvb2wgbUNvbnRlbnRMZW5ndGhWYWxpZDsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbUNvbnRlbnRMZW5ndGg7Ci0KLSAgICBpbnQzMl90IG1OdW1SZXRyaWVzTGVmdDsKLQotICAgIHZvaWQgaW5pdChjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycyk7Ci0KLSAgICBzc2l6ZV90IHNlbmRSYW5nZVJlcXVlc3Qoc2l6ZV90IG9mZnNldCk7Ci0gICAgdm9pZCBpbml0SGVhZGVycyhjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqb3ZlcnJpZGVzKTsKLQotICAgIHN0YXR1c190IGNvbm5lY3RXaXRoUmVkaXJlY3RzQW5kUmFuZ2Uob2ZmX3QgcmFuZ2VTdGFydCk7Ci0gICAgdm9pZCBhcHBseVRpbWVvdXRSZXNwb25zZSgpOwotCi0gICAgSFRUUERhdGFTb3VyY2UoY29uc3QgSFRUUERhdGFTb3VyY2UgJik7Ci0gICAgSFRUUERhdGFTb3VyY2UgJm9wZXJhdG9yPShjb25zdCBIVFRQRGF0YVNvdXJjZSAmKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KLSNlbmRpZiAgLy8gSFRUUF9EQVRBU09VUkNFX0hfCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTVBFRzRXcml0ZXIuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTVBFRzRXcml0ZXIuaAppbmRleCA2YjkzZjE5Li45NjJiMzhiIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01QRUc0V3JpdGVyLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NUEVHNFdyaXRlci5oCkBAIC0zNiw5ICszNiwxMCBAQAogICAgIE1QRUc0V3JpdGVyKGludCBmZCk7CiAKICAgICB2aXJ0dWFsIHN0YXR1c190IGFkZFNvdXJjZShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSk7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydCgpOworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtID0gTlVMTCk7CiAgICAgdmlydHVhbCBib29sIHJlYWNoZWRFT1MoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogCiAgICAgdm9pZCBiZWdpbkJveChjb25zdCBjaGFyICpmb3VyY2MpOwogICAgIHZvaWQgd3JpdGVJbnQ4KGludDhfdCB4KTsKQEAgLTQ5LDYgKzUwLDggQEAKICAgICB2b2lkIHdyaXRlRm91cmNjKGNvbnN0IGNoYXIgKmZvdXJjYyk7CiAgICAgdm9pZCB3cml0ZShjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CiAgICAgdm9pZCBlbmRCb3goKTsKKyAgICB1aW50MzJfdCBpbnRlcmxlYXZlRHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtSW50ZXJsZWF2ZUR1cmF0aW9uVXM7IH0KKyAgICBzdGF0dXNfdCBzZXRJbnRlcmxlYXZlRHVyYXRpb24odWludDMyX3QgZHVyYXRpb24pOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TVBFRzRXcml0ZXIoKTsKQEAgLTU3LDE2ICs2MCw0MSBAQAogICAgIGNsYXNzIFRyYWNrOwogCiAgICAgRklMRSAqbUZpbGU7CisgICAgYm9vbCBtVXNlMzJCaXRPZmZzZXQ7CisgICAgYm9vbCBtUGF1c2VkOworICAgIGJvb2wgbVN0YXJ0ZWQ7CiAgICAgb2ZmX3QgbU9mZnNldDsKICAgICBvZmZfdCBtTWRhdE9mZnNldDsKKyAgICB1aW50OF90ICptTW9vdkJveEJ1ZmZlcjsKKyAgICBvZmZfdCBtTW9vdkJveEJ1ZmZlck9mZnNldDsKKyAgICBib29sICBtV3JpdGVNb292Qm94VG9NZW1vcnk7CisgICAgb2ZmX3QgbUZyZWVCb3hPZmZzZXQ7CisgICAgYm9vbCBtU3RyZWFtYWJsZUZpbGU7CisgICAgb2ZmX3QgbUVzdGltYXRlZE1vb3ZCb3hTaXplOworICAgIHVpbnQzMl90IG1JbnRlcmxlYXZlRHVyYXRpb25VczsKKyAgICBpbnQ2NF90IG1TdGFydFRpbWVzdGFtcFVzOwogICAgIE11dGV4IG1Mb2NrOwogCiAgICAgTGlzdDxUcmFjayAqPiBtVHJhY2tzOwogCiAgICAgTGlzdDxvZmZfdD4gbUJveGVzOwogCi0gICAgb2ZmX3QgYWRkU2FtcGxlKE1lZGlhQnVmZmVyICpidWZmZXIpOwotICAgIG9mZl90IGFkZExlbmd0aFByZWZpeGVkU2FtcGxlKE1lZGlhQnVmZmVyICpidWZmZXIpOworICAgIHZvaWQgc2V0U3RhcnRUaW1lc3RhbXBVcyhpbnQ2NF90IHRpbWVVcyk7CisgICAgaW50NjRfdCBnZXRTdGFydFRpbWVzdGFtcFVzKCk7ICAvLyBOb3QgY29uc3QKKyAgICBzdGF0dXNfdCBzdGFydFRyYWNrcyhNZXRhRGF0YSAqcGFyYW1zKTsKKyAgICBzaXplX3QgbnVtVHJhY2tzKCk7CisgICAgaW50NjRfdCBlc3RpbWF0ZU1vb3ZCb3hTaXplKGludDMyX3QgYml0UmF0ZSk7CisKKyAgICB2b2lkIGxvY2soKTsKKyAgICB2b2lkIHVubG9jaygpOworCisgICAgLy8gQWNxdWlyZSBsb2NrIGJlZm9yZSBjYWxsaW5nIHRoZXNlIG1ldGhvZHMKKyAgICBvZmZfdCBhZGRTYW1wbGVfbChNZWRpYUJ1ZmZlciAqYnVmZmVyKTsKKyAgICBvZmZfdCBhZGRMZW5ndGhQcmVmaXhlZFNhbXBsZV9sKE1lZGlhQnVmZmVyICpidWZmZXIpOworCisgICAgaW5saW5lIHNpemVfdCB3cml0ZShjb25zdCB2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIEZJTEUqIHN0cmVhbSk7CisgICAgYm9vbCBleGNlZWRzRmlsZVNpemVMaW1pdCgpOworICAgIGJvb2wgZXhjZWVkc0ZpbGVEdXJhdGlvbkxpbWl0KCk7CiAKICAgICBNUEVHNFdyaXRlcihjb25zdCBNUEVHNFdyaXRlciAmKTsKICAgICBNUEVHNFdyaXRlciAmb3BlcmF0b3I9KGNvbnN0IE1QRUc0V3JpdGVyICYpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmgKaW5kZXggMjA3MTk1YS4uOWNkZGFiMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVmcy5oCkBAIC0yMiw2ICsyMiw3IEBACiAKIGV4dGVybiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9JTUFHRV9KUEVHOwogCitleHRlcm4gY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfVklERU9fVlBYOwogZXh0ZXJuIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX1ZJREVPX0FWQzsKIGV4dGVybiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNDsKIGV4dGVybiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzOwpAQCAtMzgsNiArMzksOCBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHNDsKIGV4dGVybiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9DT05UQUlORVJfV0FWOwogZXh0ZXJuIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9PR0c7CitleHRlcm4gY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX01BVFJPU0tBOworZXh0ZXJuIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHMlRTOwogCiB9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmgKaW5kZXggOTZkNTdlNy4uOWNjOTRjOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgogI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewpAQCAtODMsNiArODQsMTMgQEAKICAgICAgICAgaW50NjRfdCBtTGF0ZW5lc3NVczsKICAgICB9OwogCisgICAgLy8gQ2F1c2VzIHRoaXMgc291cmNlIHRvIHN1c3BlbmQgcHVsbGluZyBkYXRhIGZyb20gaXRzIHVwc3RyZWFtIHNvdXJjZQorICAgIC8vIHVudGlsIGEgc3Vic2VxdWVudCByZWFkLXdpdGgtc2Vlay4gQ3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIGJ5CisgICAgLy8gT01YQ29kZWMuCisgICAgdmlydHVhbCBzdGF0dXNfdCBwYXVzZSgpIHsKKyAgICAgICAgcmV0dXJuIEVSUk9SX1VOU1VQUE9SVEVEOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFXcml0ZXIuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFXcml0ZXIuaAppbmRleCBiODIzMmM2Li44ZDNhOWRmIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01lZGlhV3JpdGVyLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZWRpYVdyaXRlci5oCkBAIC0xOSwyMiArMTksNDEgQEAKICNkZWZpbmUgTUVESUFfV1JJVEVSX0hfCiAKICNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8bWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiBzdHJ1Y3QgTWVkaWFTb3VyY2U7CitzdHJ1Y3QgTWV0YURhdGE7CiAKIHN0cnVjdCBNZWRpYVdyaXRlciA6IHB1YmxpYyBSZWZCYXNlIHsKLSAgICBNZWRpYVdyaXRlcigpIHt9CisgICAgTWVkaWFXcml0ZXIoKQorICAgICAgICA6IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXMoMCksCisgICAgICAgICAgbU1heEZpbGVEdXJhdGlvbkxpbWl0VXMoMCkgeworICAgIH0KIAogICAgIHZpcnR1YWwgc3RhdHVzX3QgYWRkU291cmNlKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWNoZWRFT1MoKSA9IDA7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMgPSBOVUxMKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhGaWxlU2l6ZShpbnQ2NF90IGJ5dGVzKSB7IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXMgPSBieXRlczsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhGaWxlRHVyYXRpb24oaW50NjRfdCBkdXJhdGlvblVzKSB7IG1NYXhGaWxlRHVyYXRpb25MaW1pdFVzID0gZHVyYXRpb25VczsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4mIGxpc3RlbmVyKSB7CisgICAgICAgIG1MaXN0ZW5lciA9IGxpc3RlbmVyOworICAgIH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlhV3JpdGVyKCkge30KKyAgICBpbnQ2NF90IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXM7CisgICAgaW50NjRfdCBtTWF4RmlsZUR1cmF0aW9uTGltaXRVczsKKyAgICBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4gbUxpc3RlbmVyOwogCisgICAgdm9pZCBub3RpZnkoaW50IG1zZywgaW50IGV4dDEsIGludCBleHQyKSB7CisgICAgICAgIGlmIChtTGlzdGVuZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgbUxpc3RlbmVyLT5ub3RpZnkobXNnLCBleHQxLCBleHQyKTsKKyAgICAgICAgfQorICAgIH0KIHByaXZhdGU6CiAgICAgTWVkaWFXcml0ZXIoY29uc3QgTWVkaWFXcml0ZXIgJik7CiAgICAgTWVkaWFXcml0ZXIgJm9wZXJhdG9yPShjb25zdCBNZWRpYVdyaXRlciAmKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaAppbmRleCBkYzJiZDUwLi43M2Y1NTQ3IDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oCkBAIC0zMCwxMCArMzAsMTMgQEAKIC8vIFRoZSBmb2xsb3dpbmcga2V5cyBtYXAgdG8gaW50MzJfdCBkYXRhIHVubGVzcyBpbmRpY2F0ZWQgb3RoZXJ3aXNlLgogZW51bSB7CiAgICAga0tleU1JTUVUeXBlICAgICAgICAgID0gJ21pbWUnLCAgLy8gY3N0cmluZwotICAgIGtLZXlXaWR0aCAgICAgICAgICAgICA9ICd3aWR0JywKLSAgICBrS2V5SGVpZ2h0ICAgICAgICAgICAgPSAnaGVpZycsCi0gICAga0tleUNoYW5uZWxDb3VudCAgICAgID0gJyNjaG4nLAotICAgIGtLZXlTYW1wbGVSYXRlICAgICAgICA9ICdzcnRlJywKKyAgICBrS2V5V2lkdGggICAgICAgICAgICAgPSAnd2lkdCcsICAvLyBpbnQzMl90CisgICAga0tleUhlaWdodCAgICAgICAgICAgID0gJ2hlaWcnLCAgLy8gaW50MzJfdAorICAgIGtLZXlJRnJhbWVzSW50ZXJ2YWwgICA9ICdpZml2JywgIC8vIGludDMyX3QKKyAgICBrS2V5U3RyaWRlICAgICAgICAgICAgPSAnc3RyZCcsICAvLyBpbnQzMl90CisgICAga0tleVNsaWNlSGVpZ2h0ICAgICAgID0gJ3NsaHQnLCAgLy8gaW50MzJfdAorICAgIGtLZXlDaGFubmVsQ291bnQgICAgICA9ICcjY2huJywgIC8vIGludDMyX3QKKyAgICBrS2V5U2FtcGxlUmF0ZSAgICAgICAgPSAnc3J0ZScsICAvLyBpbnQzMl90IChhbHNvIHZpZGVvIGZyYW1lIHJhdGUpCiAgICAga0tleUJpdFJhdGUgICAgICAgICAgID0gJ2JydGUnLCAgLy8gaW50MzJfdCAoYnBzKQogICAgIGtLZXlFU0RTICAgICAgICAgICAgICA9ICdlc2RzJywgIC8vIHJhdyBkYXRhCiAgICAga0tleUFWQ0MgICAgICAgICAgICAgID0gJ2F2Y2MnLCAgLy8gcmF3IGRhdGEKQEAgLTY1LDYgKzY4LDI1IEBACiAgICAga0tleURpc2NOdW1iZXIgICAgICAgID0gJ2RudW0nLCAgLy8gY3N0cmluZwogICAgIGtLZXlEYXRlICAgICAgICAgICAgICA9ICdkYXRlJywgIC8vIGNzdHJpbmcKICAgICBrS2V5V3JpdGVyICAgICAgICAgICAgPSAnd3JpdCcsICAvLyBjc3RyaW5nCisKKyAgICAvLyB2aWRlbyBwcm9maWxlIGFuZCBsZXZlbAorICAgIGtLZXlWaWRlb1Byb2ZpbGUgICAgICA9ICd2cHJmJywgIC8vIGludDMyX3QKKyAgICBrS2V5VmlkZW9MZXZlbCAgICAgICAgPSAndmxldicsICAvLyBpbnQzMl90CisKKyAgICAvLyBTZXQgdGhpcyBrZXkgdG8gZW5hYmxlIGF1dGhvcmluZyBmaWxlcyBpbiA2NC1iaXQgb2Zmc2V0CisgICAga0tleTY0Qml0RmlsZU9mZnNldCAgID0gJ2ZvYnQnLCAgLy8gaW50MzJfdCAoYm9vbCkKKworICAgIC8vIElkZW50aWZ5IHRoZSBmaWxlIG91dHB1dCBmb3JtYXQgZm9yIGF1dGhvcmluZworICAgIC8vIFBsZWFzZSBzZWUgPG1lZGlhL21lZGlhcmVjb3JkZXIuaD4gZm9yIHRoZSBzdXBwb3J0ZWQKKyAgICAvLyBmaWxlIG91dHB1dCBmb3JtYXRzLgorICAgIGtLZXlGaWxlVHlwZSAgICAgICAgICA9ICdmdHlwJywgIC8vIGludDMyX3QKKworICAgIC8vIFRyYWNrIGF1dGhvcmluZyBwcm9ncmVzcyBzdGF0dXMKKyAgICAvLyBrS2V5VHJhY2tUaW1lU3RhdHVzIGlzIHVzZWQgdG8gdHJhY2sgcHJvZ3Jlc3MgaW4gZWxhcHNlZCB0aW1lCisgICAgLy8ga0tleVRyYWNrRnJhbWVTdGF0dXMgaXMgdXNlZCB0byB0cmFjayBwcm9ncmVzcyBpbiBhdXRob3JlZCBmcmFtZXMKKyAgICBrS2V5VHJhY2tGcmFtZVN0YXR1cyAgPSAndGtmbScsICAvLyBpbnQzMl90CisgICAga0tleVRyYWNrVGltZVN0YXR1cyAgID0gJ3RrdG0nLCAgLy8gaW50NjRfdAorCiB9OwogCiBlbnVtIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvT01YQ29kZWMuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvT01YQ29kZWMuaAppbmRleCAxZDc2YTFhLi4yMTRmNDNhIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L09NWENvZGVjLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9PTVhDb2RlYy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKIGNsYXNzIE1lbW9yeURlYWxlcjsKIHN0cnVjdCBPTVhDb2RlY09ic2VydmVyOworc3RydWN0IENvZGVjUHJvZmlsZUxldmVsOwogCiBzdHJ1Y3QgT01YQ29kZWMgOiBwdWJsaWMgTWVkaWFTb3VyY2UsCiAgICAgICAgICAgICAgICAgICBwdWJsaWMgTWVkaWFCdWZmZXJPYnNlcnZlciB7CkBAIC01Miw2ICs1Myw4IEBACiAgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAogICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zID0gTlVMTCk7CiAKKyAgICB2aXJ0dWFsIHN0YXR1c190IHBhdXNlKCk7CisKICAgICB2b2lkIG9uX21lc3NhZ2UoY29uc3Qgb214X21lc3NhZ2UgJm1zZyk7CiAKICAgICAvLyBmcm9tIE1lZGlhQnVmZmVyT2JzZXJ2ZXIKQEAgLTk4LDYgKzEwMSw3IEBACiAgICAgICAgIGtEZWNvZGVyTGllc0Fib3V0TnVtYmVyT2ZDaGFubmVscyAgICAgPSAyNTYsCiAgICAgICAgIGtJbnB1dEJ1ZmZlclNpemVzQXJlQm9ndXMgICAgICAgICAgICAgPSA1MTIsCiAgICAgICAgIGtTdXBwb3J0c011bHRpcGxlRnJhbWVzUGVySW5wdXRCdWZmZXIgPSAxMDI0LAorICAgICAgICBrQXZvaWRNZW1jb3B5SW5wdXRSZWNvcmRpbmdGcmFtZXMgICAgID0gMjA0OCwKICAgICB9OwogCiAgICAgc3RydWN0IEJ1ZmZlckluZm8gewpAQCAtMTQzLDYgKzE0Nyw4IEBACiAgICAgTXV0ZXggbUxvY2s7CiAgICAgQ29uZGl0aW9uIG1Bc3luY0NvbXBsZXRpb247CiAKKyAgICBib29sIG1QYXVzZWQ7CisKICAgICAvLyBBIGxpc3Qgb2YgaW5kaWNlcyBpbnRvIG1Qb3J0U3RhdHVzW2tQb3J0SW5kZXhPdXRwdXRdIGZpbGxlZCB3aXRoIGRhdGEuCiAgICAgTGlzdDxzaXplX3Q+IG1GaWxsZWRCdWZmZXJzOwogICAgIENvbmRpdGlvbiBtQnVmZmVyRmlsbGVkOwpAQCAtMTU2LDggKzE2Miw4IEBACiAKICAgICB2b2lkIHNldENvbXBvbmVudFJvbGUoKTsKIAotICAgIHZvaWQgc2V0QU1SRm9ybWF0KGJvb2wgaXNXQU1SKTsKLSAgICB2b2lkIHNldEFBQ0Zvcm1hdChpbnQzMl90IG51bUNoYW5uZWxzLCBpbnQzMl90IHNhbXBsZVJhdGUpOworICAgIHZvaWQgc2V0QU1SRm9ybWF0KGJvb2wgaXNXQU1SLCBpbnQzMl90IGJpdFJhdGUpOworICAgIHZvaWQgc2V0QUFDRm9ybWF0KGludDMyX3QgbnVtQ2hhbm5lbHMsIGludDMyX3Qgc2FtcGxlUmF0ZSwgaW50MzJfdCBiaXRSYXRlKTsKIAogICAgIHN0YXR1c190IHNldFZpZGVvUG9ydEZvcm1hdFR5cGUoCiAgICAgICAgICAgICBPTVhfVTMyIHBvcnRJbmRleCwKQEAgLTE2NSwxMCArMTcxLDE5IEBACiAgICAgICAgICAgICBPTVhfQ09MT1JfRk9STUFUVFlQRSBjb2xvckZvcm1hdCk7CiAKICAgICB2b2lkIHNldFZpZGVvSW5wdXRGb3JtYXQoCi0gICAgICAgICAgICBjb25zdCBjaGFyICptaW1lLCBPTVhfVTMyIHdpZHRoLCBPTVhfVTMyIGhlaWdodCk7CisgICAgICAgICAgICBjb25zdCBjaGFyICptaW1lLCBjb25zdCBzcDxNZXRhRGF0YT4mIG1ldGEpOwogCi0gICAgc3RhdHVzX3Qgc2V0dXBNUEVHNEVuY29kZXJQYXJhbWV0ZXJzKCk7Ci0gICAgc3RhdHVzX3Qgc2V0dXBBVkNFbmNvZGVyUGFyYW1ldGVycygpOworICAgIHN0YXR1c190IHNldHVwQml0UmF0ZShpbnQzMl90IGJpdFJhdGUpOworICAgIHN0YXR1c190IHNldHVwRXJyb3JDb3JyZWN0aW9uUGFyYW1ldGVycygpOworICAgIHN0YXR1c190IHNldHVwSDI2M0VuY29kZXJQYXJhbWV0ZXJzKGNvbnN0IHNwPE1ldGFEYXRhPiYgbWV0YSk7CisgICAgc3RhdHVzX3Qgc2V0dXBNUEVHNEVuY29kZXJQYXJhbWV0ZXJzKGNvbnN0IHNwPE1ldGFEYXRhPiYgbWV0YSk7CisgICAgc3RhdHVzX3Qgc2V0dXBBVkNFbmNvZGVyUGFyYW1ldGVycyhjb25zdCBzcDxNZXRhRGF0YT4mIG1ldGEpOworCisgICAgLy8gSWYgcHJvZmlsZS9sZXZlbCBpcyBzZXQgaW4gdGhlIG1ldGEgZGF0YSwgaXRzIHZhbHVlIGluIHRoZSBtZXRhCisgICAgLy8gZGF0YSB3aWxsIGJlIHVzZWQ7IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkLgorICAgIHN0YXR1c190IGdldFZpZGVvUHJvZmlsZUxldmVsKGNvbnN0IHNwPE1ldGFEYXRhPiYgbWV0YSwKKyAgICAgICAgICAgIGNvbnN0IENvZGVjUHJvZmlsZUxldmVsJiBkZWZhdWx0UHJvZmlsZUxldmVsLAorICAgICAgICAgICAgQ29kZWNQcm9maWxlTGV2ZWwmIHByb2ZpbGVMZXZlbCk7CiAKICAgICBzdGF0dXNfdCBzZXRWaWRlb091dHB1dEZvcm1hdCgKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1pbWUsIE9NWF9VMzIgd2lkdGgsIE9NWF9VMzIgaGVpZ2h0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQXRvbWl6ZXIuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQXRvbWl6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjNhNjc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FBdG9taXplci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfQVRPTUlaRVJfSF8KKworI2RlZmluZSBBX0FUT01JWkVSX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKyNpbmNsdWRlIDx1dGlscy9MaXN0Lmg+CisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBQXRvbWl6ZXIgeworICAgIHN0YXRpYyBjb25zdCBjaGFyICpBdG9taXplKGNvbnN0IGNoYXIgKm5hbWUpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBBQXRvbWl6ZXIgZ0F0b21pemVyOworCisgICAgTXV0ZXggbUxvY2s7CisgICAgVmVjdG9yPExpc3Q8QVN0cmluZz4gPiBtQXRvbXM7CisKKyAgICBBQXRvbWl6ZXIoKTsKKworICAgIGNvbnN0IGNoYXIgKmF0b21pemUoY29uc3QgY2hhciAqbmFtZSk7CisKKyAgICBzdGF0aWMgdWludDMyX3QgSGFzaChjb25zdCBjaGFyICpzKTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFBdG9taXplcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfQVRPTUlaRVJfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVjZWVhMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfQkFTRV9IXworCisjZGVmaW5lIEFfQkFTRV9IXworCisjZGVmaW5lIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKG5hbWUpIFwKKyAgICBuYW1lKGNvbnN0IG5hbWUgJik7IFwKKyAgICBuYW1lICZvcGVyYXRvcj0oY29uc3QgbmFtZSAmKQorCisjZW5kaWYgIC8vIEFfQkFTRV9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhmMGFlZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9CVUZGRVJfSF8KKworI2RlZmluZSBBX0JVRkZFUl9IXworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBTWVzc2FnZTsKKworc3RydWN0IEFCdWZmZXIgOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgQUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpOworICAgIEFCdWZmZXIodm9pZCAqZGF0YSwgc2l6ZV90IGNhcGFjaXR5KTsKKworICAgIHZvaWQgc2V0RmFyZXdlbGxNZXNzYWdlKGNvbnN0IHNwPEFNZXNzYWdlPiBtc2cpOworCisgICAgdWludDhfdCAqYmFzZSgpIHsgcmV0dXJuICh1aW50OF90ICopbURhdGE7IH0KKyAgICB1aW50OF90ICpkYXRhKCkgeyByZXR1cm4gKHVpbnQ4X3QgKiltRGF0YSArIG1SYW5nZU9mZnNldDsgfQorICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1DYXBhY2l0eTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbVJhbmdlTGVuZ3RoOyB9CisgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1SYW5nZU9mZnNldDsgfQorCisgICAgdm9pZCBzZXRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSk7CisKKyAgICB2b2lkIHNldEludDMyRGF0YShpbnQzMl90IGRhdGEpIHsgbUludDMyRGF0YSA9IGRhdGE7IH0KKyAgICBpbnQzMl90IGludDMyRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1JbnQzMkRhdGE7IH0KKworICAgIHNwPEFNZXNzYWdlPiBtZXRhKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5BQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgc3A8QU1lc3NhZ2U+IG1GYXJld2VsbDsKKyAgICBzcDxBTWVzc2FnZT4gbU1ldGE7CisKKyAgICB2b2lkICptRGF0YTsKKyAgICBzaXplX3QgbUNhcGFjaXR5OworICAgIHNpemVfdCBtUmFuZ2VPZmZzZXQ7CisgICAgc2l6ZV90IG1SYW5nZUxlbmd0aDsKKworICAgIGludDMyX3QgbUludDMyRGF0YTsKKworICAgIGJvb2wgbU93bnNEYXRhOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQUJ1ZmZlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfQlVGRkVSX0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY5ODZhMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuaApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9ERUJVR19IXworCisjZGVmaW5lIEFfREVCVUdfSF8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2VudW0gTG9nVHlwZSB7CisgICAgVkVSQk9TRSwKKyAgICBJTkZPLAorICAgIFdBUk5JTkcsCisgICAgRVJST1IsCisgICAgRkFUQUwsCit9OworCitzdHJ1Y3QgTG9nZ2VyIHsKKyAgICBMb2dnZXIoTG9nVHlwZSB0eXBlKTsKKyAgICB2aXJ0dWFsIH5Mb2dnZXIoKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIFQ+IExvZ2dlciAmb3BlcmF0b3I8PChjb25zdCBUICZ4KSB7CisgICAgICAgIG1NZXNzYWdlLmFwcGVuZCh4KTsKKworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCitwcml2YXRlOgorICAgIGFuZHJvaWQ6OkFTdHJpbmcgbU1lc3NhZ2U7CisgICAgTG9nVHlwZSBtTG9nVHlwZTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKExvZ2dlcik7Cit9OworCitjb25zdCBjaGFyICpMZWFmTmFtZShjb25zdCBjaGFyICpzKTsKKworI3VuZGVmIExPRworI2RlZmluZSBMT0codHlwZSkgICAgTG9nZ2VyKHR5cGUpIDw8IExlYWZOYW1lKF9fRklMRV9fKSA8PCAiOiIgPDwgX19MSU5FX18gPDwgIiAiCisKKyNkZWZpbmUgQ0hFQ0soY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghKGNvbmRpdGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExPRyhGQVRBTCkgPDwgIkNIRUNLKCIgI2NvbmRpdGlvbiAiKSBmYWlsZWQuIjsgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTUFLRV9DT01QQVJBVE9SKHN1ZmZpeCxvcCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBU3RyaW5nIENvbXBhcmVfIyNzdWZmaXgoY29uc3QgQSAmYSwgY29uc3QgQiAmYikgeyAgICAgIFwKKyAgICAgICAgQVN0cmluZyByZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCEoYSBvcCBiKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoIiB2cy4gIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHJlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKK01BS0VfQ09NUEFSQVRPUihFUSw9PSkKK01BS0VfQ09NUEFSQVRPUihORSwhPSkKK01BS0VfQ09NUEFSQVRPUihMRSw8PSkKK01BS0VfQ09NUEFSQVRPUihHRSw+PSkKK01BS0VfQ09NUEFSQVRPUihMVCw8KQorTUFLRV9DT01QQVJBVE9SKEdULD4pCisKKyNkZWZpbmUgQ0hFQ0tfT1AoeCx5LHN1ZmZpeCxvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQVN0cmluZyBfX19yZXMgPSBDb21wYXJlXyMjc3VmZml4KHgsIHkpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFfX19yZXMuZW1wdHkoKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExPRyhGQVRBTCkgPDwgIkNIRUNLXyIgI3N1ZmZpeCAiKCIgI3ggIiwiICN5ICIpIGZhaWxlZDogIiAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgX19fcmVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBDSEVDS19FUSh4LHkpICAgQ0hFQ0tfT1AoeCx5LEVRLD09KQorI2RlZmluZSBDSEVDS19ORSh4LHkpICAgQ0hFQ0tfT1AoeCx5LE5FLCE9KQorI2RlZmluZSBDSEVDS19MRSh4LHkpICAgQ0hFQ0tfT1AoeCx5LExFLDw9KQorI2RlZmluZSBDSEVDS19MVCh4LHkpICAgQ0hFQ0tfT1AoeCx5LExULDwpCisjZGVmaW5lIENIRUNLX0dFKHgseSkgICBDSEVDS19PUCh4LHksR0UsPj0pCisjZGVmaW5lIENIRUNLX0dUKHgseSkgICBDSEVDS19PUCh4LHksR1QsPikKKworI2RlZmluZSBUUkVTUEFTUygpICAgICAgTE9HKEZBVEFMKSA8PCAiU2hvdWxkIG5vdCBiZSBoZXJlLiIKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX0RFQlVHX0hfCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlci5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAwOGI1NAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfSEFORExFUl9IXworCisjZGVmaW5lIEFfSEFORExFUl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyLmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBTWVzc2FnZTsKKworc3RydWN0IEFIYW5kbGVyIDogcHVibGljIFJlZkJhc2UgeworICAgIEFIYW5kbGVyKCkKKyAgICAgICAgOiBtSUQoMCkgeworICAgIH0KKworICAgIEFMb29wZXI6OmhhbmRsZXJfaWQgaWQoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtSUQ7CisgICAgfQorCisgICAgc3A8QUxvb3Blcj4gbG9vcGVyKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgb25NZXNzYWdlUmVjZWl2ZWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpID0gMDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RydWN0IEFMb29wZXJSb3N0ZXI7CisKKyAgICBBTG9vcGVyOjpoYW5kbGVyX2lkIG1JRDsKKworICAgIHZvaWQgc2V0SUQoQUxvb3Blcjo6aGFuZGxlcl9pZCBpZCkgeworICAgICAgICBtSUQgPSBpZDsKKyAgICB9CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBSGFuZGxlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfSEFORExFUl9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyUmVmbGVjdG9yLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXJSZWZsZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTc4NjZhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyUmVmbGVjdG9yLmgKQEAgLTAsMCArMSwzMiBAQAorI2lmbmRlZiBBX0hBTkRMRVJfUkVGTEVDVE9SX0hfCisKKyNkZWZpbmUgQV9IQU5ETEVSX1JFRkxFQ1RPUl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlci5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3RlbXBsYXRlPGNsYXNzIFQ+CitzdHJ1Y3QgQUhhbmRsZXJSZWZsZWN0b3IgOiBwdWJsaWMgQUhhbmRsZXIgeworICAgIEFIYW5kbGVyUmVmbGVjdG9yKFQgKnRhcmdldCkKKyAgICAgICAgOiBtVGFyZ2V0KHRhcmdldCkgeworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBvbk1lc3NhZ2VSZWNlaXZlZChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZykgeworICAgICAgICBzcDxUPiB0YXJnZXQgPSBtVGFyZ2V0LnByb21vdGUoKTsKKyAgICAgICAgaWYgKHRhcmdldCAhPSBOVUxMKSB7CisgICAgICAgICAgICB0YXJnZXQtPm9uTWVzc2FnZVJlY2VpdmVkKG1zZyk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgd3A8VD4gbVRhcmdldDsKKworICAgIEFIYW5kbGVyUmVmbGVjdG9yKGNvbnN0IEFIYW5kbGVyUmVmbGVjdG9yPFQ+ICYpOworICAgIEFIYW5kbGVyUmVmbGVjdG9yPFQ+ICZvcGVyYXRvcj0oY29uc3QgQUhhbmRsZXJSZWZsZWN0b3I8VD4gJik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfSEFORExFUl9SRUZMRUNUT1JfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NGYxZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfTE9PUEVSX0hfCisKKyNkZWZpbmUgQV9MT09QRVJfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9LZXllZFZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL0xpc3QuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBSGFuZGxlcjsKK3N0cnVjdCBBTWVzc2FnZTsKKworc3RydWN0IEFMb29wZXIgOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgdHlwZWRlZiBpbnQzMl90IGV2ZW50X2lkOworICAgIHR5cGVkZWYgaW50MzJfdCBoYW5kbGVyX2lkOworCisgICAgQUxvb3BlcigpOworCisgICAgaGFuZGxlcl9pZCByZWdpc3RlckhhbmRsZXIoY29uc3Qgc3A8QUhhbmRsZXI+ICZoYW5kbGVyKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJIYW5kbGVyKGhhbmRsZXJfaWQgaGFuZGxlcklEKTsKKworICAgIHN0YXR1c190IHN0YXJ0KAorICAgICAgICAgICAgYm9vbCBydW5PbkNhbGxpbmdUaHJlYWQgPSBmYWxzZSwKKyAgICAgICAgICAgIGJvb2wgY2FuQ2FsbEphdmEgPSBmYWxzZSk7CisKKyAgICBzdGF0dXNfdCBzdG9wKCk7CisKKyAgICBzdGF0aWMgaW50NjRfdCBHZXROb3dVcygpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+QUxvb3BlcigpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBzdHJ1Y3QgQUxvb3BlclJvc3RlcjsKKworICAgIHN0cnVjdCBFdmVudCB7CisgICAgICAgIGludDY0X3QgbVdoZW5VczsKKyAgICAgICAgc3A8QU1lc3NhZ2U+IG1NZXNzYWdlOworICAgIH07CisKKyAgICBNdXRleCBtTG9jazsKKyAgICBDb25kaXRpb24gbVF1ZXVlQ2hhbmdlZENvbmRpdGlvbjsKKworICAgIExpc3Q8RXZlbnQ+IG1FdmVudFF1ZXVlOworCisgICAgc3RydWN0IExvb3BlclRocmVhZDsKKyAgICBzcDxMb29wZXJUaHJlYWQ+IG1UaHJlYWQ7CisgICAgYm9vbCBtUnVubmluZ0xvY2FsbHk7CisKKyAgICB2b2lkIHBvc3QoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2csIGludDY0X3QgZGVsYXlVcyk7CisgICAgYm9vbCBsb29wKCk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBTG9vcGVyKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9MT09QRVJfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyUm9zdGVyLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3BlclJvc3Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYmQ0ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3BlclJvc3Rlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfTE9PUEVSX1JPU1RFUl9IXworCisjZGVmaW5lIEFfTE9PUEVSX1JPU1RFUl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyLmg+CisjaW5jbHVkZSA8dXRpbHMvS2V5ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUxvb3BlclJvc3RlciB7CisgICAgQUxvb3BlclJvc3RlcigpOworCisgICAgQUxvb3Blcjo6aGFuZGxlcl9pZCByZWdpc3RlckhhbmRsZXIoCisgICAgICAgICAgICBjb25zdCBzcDxBTG9vcGVyPiBsb29wZXIsIGNvbnN0IHNwPEFIYW5kbGVyPiAmaGFuZGxlcik7CisKKyAgICB2b2lkIHVucmVnaXN0ZXJIYW5kbGVyKEFMb29wZXI6OmhhbmRsZXJfaWQgaGFuZGxlcklEKTsKKworICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2csIGludDY0X3QgZGVsYXlVcyA9IDApOworICAgIHZvaWQgZGVsaXZlck1lc3NhZ2UoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpOworCisgICAgc3A8QUxvb3Blcj4gZmluZExvb3BlcihBTG9vcGVyOjpoYW5kbGVyX2lkIGhhbmRsZXJJRCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IEhhbmRsZXJJbmZvIHsKKyAgICAgICAgd3A8QUxvb3Blcj4gbUxvb3BlcjsKKyAgICAgICAgd3A8QUhhbmRsZXI+IG1IYW5kbGVyOworICAgIH07CisKKyAgICBNdXRleCBtTG9jazsKKyAgICBLZXllZFZlY3RvcjxBTG9vcGVyOjpoYW5kbGVyX2lkLCBIYW5kbGVySW5mbz4gbUhhbmRsZXJzOworICAgIEFMb29wZXI6OmhhbmRsZXJfaWQgbU5leHRIYW5kbGVySUQ7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBTG9vcGVyUm9zdGVyKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9MT09QRVJfUk9TVEVSX0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NzRjYmFmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfTUVTU0FHRV9IXworCisjZGVmaW5lIEFfTUVTU0FHRV9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5oPgorI2luY2x1ZGUgPHV0aWxzL0tleWVkVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBU3RyaW5nOworCitzdHJ1Y3QgQU1lc3NhZ2UgOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgQU1lc3NhZ2UodWludDMyX3Qgd2hhdCA9IDAsIEFMb29wZXI6OmhhbmRsZXJfaWQgdGFyZ2V0ID0gMCk7CisKKyAgICB2b2lkIHNldFdoYXQodWludDMyX3Qgd2hhdCk7CisgICAgdWludDMyX3Qgd2hhdCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRUYXJnZXQoQUxvb3Blcjo6aGFuZGxlcl9pZCB0YXJnZXQpOworICAgIEFMb29wZXI6OmhhbmRsZXJfaWQgdGFyZ2V0KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEludDMyKGNvbnN0IGNoYXIgKm5hbWUsIGludDMyX3QgdmFsdWUpOworICAgIHZvaWQgc2V0SW50NjQoY29uc3QgY2hhciAqbmFtZSwgaW50NjRfdCB2YWx1ZSk7CisgICAgdm9pZCBzZXRTaXplKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCB2YWx1ZSk7CisgICAgdm9pZCBzZXRGbG9hdChjb25zdCBjaGFyICpuYW1lLCBmbG9hdCB2YWx1ZSk7CisgICAgdm9pZCBzZXREb3VibGUoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlIHZhbHVlKTsKKyAgICB2b2lkIHNldFBvaW50ZXIoY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqdmFsdWUpOworICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnMsIHNzaXplX3QgbGVuID0gLTEpOworICAgIHZvaWQgc2V0T2JqZWN0KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHNwPFJlZkJhc2U+ICZvYmopOworICAgIHZvaWQgc2V0TWVzc2FnZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzcDxBTWVzc2FnZT4gJm9iaik7CisKKyAgICBib29sIGZpbmRJbnQzMihjb25zdCBjaGFyICpuYW1lLCBpbnQzMl90ICp2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBmaW5kSW50NjQoY29uc3QgY2hhciAqbmFtZSwgaW50NjRfdCAqdmFsdWUpIGNvbnN0OworICAgIGJvb2wgZmluZFNpemUoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90ICp2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBmaW5kRmxvYXQoY29uc3QgY2hhciAqbmFtZSwgZmxvYXQgKnZhbHVlKSBjb25zdDsKKyAgICBib29sIGZpbmREb3VibGUoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlICp2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBmaW5kUG9pbnRlcihjb25zdCBjaGFyICpuYW1lLCB2b2lkICoqdmFsdWUpIGNvbnN0OworICAgIGJvb2wgZmluZFN0cmluZyhjb25zdCBjaGFyICpuYW1lLCBBU3RyaW5nICp2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBmaW5kT2JqZWN0KGNvbnN0IGNoYXIgKm5hbWUsIHNwPFJlZkJhc2U+ICpvYmopIGNvbnN0OworICAgIGJvb2wgZmluZE1lc3NhZ2UoY29uc3QgY2hhciAqbmFtZSwgc3A8QU1lc3NhZ2U+ICpvYmopIGNvbnN0OworCisgICAgdm9pZCBwb3N0KGludDY0X3QgZGVsYXlVcyA9IDApOworCisgICAgc3A8QU1lc3NhZ2U+IGR1cCgpIGNvbnN0OworCisgICAgQVN0cmluZyBkZWJ1Z1N0cmluZyhpbnQzMl90IGluZGVudCA9IDApIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+QU1lc3NhZ2UoKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBrVHlwZUludDMyLAorICAgICAgICBrVHlwZUludDY0LAorICAgICAgICBrVHlwZVNpemUsCisgICAgICAgIGtUeXBlRmxvYXQsCisgICAgICAgIGtUeXBlRG91YmxlLAorICAgICAgICBrVHlwZVBvaW50ZXIsCisgICAgICAgIGtUeXBlU3RyaW5nLAorICAgICAgICBrVHlwZU9iamVjdCwKKyAgICAgICAga1R5cGVNZXNzYWdlLAorICAgIH07CisKKyAgICB1aW50MzJfdCBtV2hhdDsKKyAgICBBTG9vcGVyOjpoYW5kbGVyX2lkIG1UYXJnZXQ7CisKKyAgICBzdHJ1Y3QgSXRlbSB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGludDMyX3QgaW50MzJWYWx1ZTsKKyAgICAgICAgICAgIGludDY0X3QgaW50NjRWYWx1ZTsKKyAgICAgICAgICAgIHNpemVfdCBzaXplVmFsdWU7CisgICAgICAgICAgICBmbG9hdCBmbG9hdFZhbHVlOworICAgICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgICAgICAgICAgdm9pZCAqcHRyVmFsdWU7CisgICAgICAgICAgICBSZWZCYXNlICpyZWZWYWx1ZTsKKyAgICAgICAgICAgIEFTdHJpbmcgKnN0cmluZ1ZhbHVlOworICAgICAgICB9IHU7CisgICAgICAgIGNvbnN0IGNoYXIgKm1OYW1lOworICAgICAgICBUeXBlIG1UeXBlOworICAgIH07CisKKyAgICBlbnVtIHsKKyAgICAgICAga01heE51bUl0ZW1zID0gMTYKKyAgICB9OworICAgIEl0ZW0gbUl0ZW1zW2tNYXhOdW1JdGVtc107CisgICAgc2l6ZV90IG1OdW1JdGVtczsKKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICBJdGVtICphbGxvY2F0ZUl0ZW0oY29uc3QgY2hhciAqbmFtZSk7CisgICAgdm9pZCBmcmVlSXRlbShJdGVtICppdGVtKTsKKyAgICBjb25zdCBJdGVtICpmaW5kSXRlbShjb25zdCBjaGFyICpuYW1lLCBUeXBlIHR5cGUpIGNvbnN0OworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQU1lc3NhZ2UpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX01FU1NBR0VfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BU3RyaW5nLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YWRlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfU1RSSU5HX0hfCisKKyNkZWZpbmUgQV9TVFJJTkdfSF8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBU3RyaW5nIHsKKyAgICBBU3RyaW5nKCk7CisgICAgQVN0cmluZyhjb25zdCBjaGFyICpzKTsKKyAgICBBU3RyaW5nKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzaXplKTsKKyAgICBBU3RyaW5nKGNvbnN0IEFTdHJpbmcgJmZyb20pOworICAgIEFTdHJpbmcoY29uc3QgQVN0cmluZyAmZnJvbSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG4pOworICAgIH5BU3RyaW5nKCk7CisKKyAgICBBU3RyaW5nICZvcGVyYXRvcj0oY29uc3QgQVN0cmluZyAmZnJvbSk7CisgICAgdm9pZCBzZXRUbyhjb25zdCBjaGFyICpzKTsKKyAgICB2b2lkIHNldFRvKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzaXplKTsKKyAgICB2b2lkIHNldFRvKGNvbnN0IEFTdHJpbmcgJmZyb20sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBuKTsKKworICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciAqY19zdHIoKSBjb25zdDsKKworICAgIGJvb2wgZW1wdHkoKSBjb25zdDsKKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIHRyaW0oKTsKKyAgICB2b2lkIGVyYXNlKHNpemVfdCBzdGFydCwgc2l6ZV90IG4pOworCisgICAgdm9pZCBhcHBlbmQoY2hhciBjKSB7IGFwcGVuZCgmYywgMSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyICpzKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyICpzLCBzaXplX3Qgc2l6ZSk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgQVN0cmluZyAmZnJvbSk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgQVN0cmluZyAmZnJvbSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG4pOworICAgIHZvaWQgYXBwZW5kKGludCB4KTsKKyAgICB2b2lkIGFwcGVuZCh1bnNpZ25lZCB4KTsKKyAgICB2b2lkIGFwcGVuZChsb25nIHgpOworICAgIHZvaWQgYXBwZW5kKHVuc2lnbmVkIGxvbmcgeCk7CisgICAgdm9pZCBhcHBlbmQobG9uZyBsb25nIHgpOworICAgIHZvaWQgYXBwZW5kKHVuc2lnbmVkIGxvbmcgbG9uZyB4KTsKKyAgICB2b2lkIGFwcGVuZChmbG9hdCB4KTsKKyAgICB2b2lkIGFwcGVuZChkb3VibGUgeCk7CisgICAgdm9pZCBhcHBlbmQodm9pZCAqeCk7CisKKyAgICB2b2lkIGluc2VydChjb25zdCBBU3RyaW5nICZmcm9tLCBzaXplX3QgaW5zZXJ0aW9uUG9zKTsKKyAgICB2b2lkIGluc2VydChjb25zdCBjaGFyICpmcm9tLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGluc2VydGlvblBvcyk7CisKKyAgICBzc2l6ZV90IGZpbmQoY29uc3QgY2hhciAqc3Vic3RyaW5nLCBzaXplX3Qgc3RhcnQgPSAwKSBjb25zdDsKKworICAgIHNpemVfdCBoYXNoKCkgY29uc3Q7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQVN0cmluZyAmb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEFTdHJpbmcgJm90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPihjb25zdCBBU3RyaW5nICZvdGhlcikgY29uc3Q7CisKKyAgICBpbnQgY29tcGFyZShjb25zdCBBU3RyaW5nICZvdGhlcikgY29uc3Q7CisKKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAqcHJlZml4KSBjb25zdDsKKworICAgIHZvaWQgdG9sb3dlcigpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBjaGFyICprRW1wdHlTdHJpbmc7CisKKyAgICBjaGFyICptRGF0YTsKKyAgICBzaXplX3QgbVNpemU7CisgICAgc2l6ZV90IG1BbGxvY1NpemU7CisKKyAgICB2b2lkIG1ha2VNdXRhYmxlKCk7Cit9OworCitBU3RyaW5nIFN0cmluZ1ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9TVFJJTkdfSF8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2Jhc2U2NC5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2Jhc2U2NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNDBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vYmFzZTY0LmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQkFTRV82NF9IXworCisjZGVmaW5lIEJBU0VfNjRfSF8KKworI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJ1ZmZlcjsKK3N0cnVjdCBBU3RyaW5nOworCitzcDxBQnVmZmVyPiBkZWNvZGVCYXNlNjQoY29uc3QgQVN0cmluZyAmcyk7Cit2b2lkIGVuY29kZUJhc2U2NChjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgQVN0cmluZyAqb3V0KTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBCQVNFXzY0X0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vaGV4ZHVtcC5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2hleGR1bXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjA4M2E5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2hleGR1bXAuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBIRVhEVU1QX0hfCisKKyNkZWZpbmUgSEVYRFVNUF9IXworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKwordm9pZCBoZXhkdW1wKGNvbnN0IHZvaWQgKl9kYXRhLCBzaXplX3Qgc2l6ZSk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gSEVYRFVNUF9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wcml2YXRlL1JFQURNRSBiL2luY2x1ZGUvcHJpdmF0ZS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU0MTQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvcHJpdmF0ZS9SRUFETUUKQEAgLTAsMCArMSw0IEBACitUaGlzIGZvbGRlciBjb250YWlucyBwcml2YXRlIGluY2x1ZGUgZmlsZXMuCisKK1RoZXNlIGluY2x1ZGUgZmlsZXMgYXJlIHBhcnQgb2YgdGhlIHByaXZhdGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZgordmFyaW91cyBmcmFtZXdvcmsgY29tcG9uZW50cy4gIFVzZSBhdCB5b3VyIHBlcmlsLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wcml2YXRlL21lZGlhL0F1ZGlvRWZmZWN0U2hhcmVkLmggYi9pbmNsdWRlL3ByaXZhdGUvbWVkaWEvQXVkaW9FZmZlY3RTaGFyZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2E5OWE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9wcml2YXRlL21lZGlhL0F1ZGlvRWZmZWN0U2hhcmVkLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9FRkZFQ1RDQkFTRVNIQVJFRF9ICisjZGVmaW5lIEFORFJPSURfRUZGRUNUQ0JBU0VTSEFSRURfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBTaXplIG9mIGJ1ZmZlciB1c2VkIHRvIGV4Y2hhbmdlIHBhcmFtZXRlcnMgYmV0d2VlbiBhcHBsaWNhdGlvbiBhbmQgbWVkaWFzZXJ2ZXIgcHJvY2Vzc2VzLgorI2RlZmluZSBFRkZFQ1RfUEFSQU1fQlVGRkVSX1NJWkUgMTAyNAorCisKKy8vIFNoYXJlZCBtZW1vcnkgYXJlYSB1c2VkIHRvIGV4Y2hhbmdlIHBhcmFtZXRlcnMgYmV0d2VlbiBhcHBsaWNhdGlvbiBhbmQgbWVkaWFzZXJ2ZXIKKy8vIHByb2Nlc3MuCitzdHJ1Y3QgZWZmZWN0X3BhcmFtX2NibGtfdAoreworICAgICAgICAgICAgICAgIE11dGV4ICAgICAgIGxvY2s7CisgICAgdm9sYXRpbGUgICAgdWludDMyX3QgICAgY2xpZW50SW5kZXg7ICAgIC8vIEN1cnJlbnQgcmVhZC93cml0ZSBpbmRleCBmb3IgYXBwbGljYXRpb24KKyAgICB2b2xhdGlsZSAgICB1aW50MzJfdCAgICBzZXJ2ZXJJbmRleDsgICAgLy8gQ3VycmVudCByZWFkL3dyaXRlIGluZGV4IGZvciBtZWRpYXNlcnZlcgorICAgICAgICAgICAgICAgIHVpbnQ4X3QqICAgIGJ1ZmZlcjsgICAgICAgICAvLyBzdGFydCBvZiBwYXJhbWV0ZXIgYnVmZmVyCisKKyAgICAgICAgICAgICAgICBlZmZlY3RfcGFyYW1fY2Jsa190KCkKKyAgICAgICAgICAgICAgICAgICAgOiBsb2NrKE11dGV4OjpTSEFSRUQpLCBjbGllbnRJbmRleCgwKSwgc2VydmVySW5kZXgoMCkge30KK307CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gQU5EUk9JRF9FRkZFQ1RDQkFTRVNIQVJFRF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3ByaXZhdGUvbWVkaWEvQXVkaW9UcmFja1NoYXJlZC5oIGIvaW5jbHVkZS9wcml2YXRlL21lZGlhL0F1ZGlvVHJhY2tTaGFyZWQuaAppbmRleCA4ZTJkYjIwLi4xNTEwZjg3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3ByaXZhdGUvbWVkaWEvQXVkaW9UcmFja1NoYXJlZC5oCisrKyBiL2luY2x1ZGUvcHJpdmF0ZS9tZWRpYS9BdWRpb1RyYWNrU2hhcmVkLmgKQEAgLTMyLDYgKzMyLDE4IEBACiAjZGVmaW5lIE1BWF9SVU5fVElNRU9VVF9NUyAgICAgIDEwMDAKICNkZWZpbmUgV0FJVF9QRVJJT0RfTVMgICAgICAgICAgMTAKIAorI2RlZmluZSBDQkxLX1VOREVSUlVOX01TSyAgICAgICAweDAwMDEKKyNkZWZpbmUgQ0JMS19VTkRFUlJVTl9PTiAgICAgICAgMHgwMDAxICAvLyB1bmRlcnJ1biAob3V0KSBvciBvdmVycnJ1biAoaW4pIGluZGljYXRpb24KKyNkZWZpbmUgQ0JMS19VTkRFUlJVTl9PRkYgICAgICAgMHgwMDAwICAvLyBubyB1bmRlcnJ1bgorI2RlZmluZSBDQkxLX0RJUkVDVElPTl9NU0sgICAgICAweDAwMDIKKyNkZWZpbmUgQ0JMS19ESVJFQ1RJT05fT1VUICAgICAgMHgwMDAyICAvLyB0aGlzIGNibGsgaXMgZm9yIGFuIEF1ZGlvVHJhY2sKKyNkZWZpbmUgQ0JMS19ESVJFQ1RJT05fSU4gICAgICAgMHgwMDAwICAvLyB0aGlzIGNibGsgaXMgZm9yIGFuIEF1ZGlvUmVjb3JkCisjZGVmaW5lIENCTEtfRk9SQ0VSRUFEWV9NU0sgICAgIDB4MDAwNAorI2RlZmluZSBDQkxLX0ZPUkNFUkVBRFlfT04gICAgICAweDAwMDQgIC8vIHRyYWNrIGlzIGNvbnNpZGVyZWQgcmVhZHkgaW1tZWRpYXRlbHkgYnkgQXVkaW9GbGluZ2VyCisjZGVmaW5lIENCTEtfRk9SQ0VSRUFEWV9PRkYgICAgIDB4MDAwMCAgLy8gdHJhY2sgaXMgcmVhZHkgd2hlbiBidWZmZXIgZnVsbAorI2RlZmluZSBDQkxLX0lOVkFMSURfTVNLICAgICAgICAweDAwMDgKKyNkZWZpbmUgQ0JMS19JTlZBTElEX09OICAgICAgICAgMHgwMDA4ICAvLyB0cmFjayBidWZmZXIgaXMgaW52YWxpZGF0ZWQgYnkgQXVkaW9GbGluZ2VyOiBtdXN0IGJlIHJlLWNyZWF0ZWQKKyNkZWZpbmUgQ0JMS19JTlZBTElEX09GRiAgICAgICAgMHgwMDAwCiAKIHN0cnVjdCBhdWRpb190cmFja19jYmxrX3QKIHsKQEAgLTQ0LDEyICs1NiwxMiBAQAogICAgIHZvbGF0aWxlICAgIHVpbnQzMl90ICAgIHNlcnZlcjsKICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICB1c2VyQmFzZTsKICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICBzZXJ2ZXJCYXNlOwotICAgIHZvaWQqICAgICAgIGJ1ZmZlcnM7Ci0gICAgdWludDMyX3QgICAgZnJhbWVDb3VudDsKLSAgICAvLyBDYWNoZSBsaW5lIGJvdW5kYXJ5Ci0gICAgdWludDMyX3QgICAgbG9vcFN0YXJ0OwotICAgIHVpbnQzMl90ICAgIGxvb3BFbmQ7Ci0gICAgaW50ICAgICAgICAgbG9vcENvdW50OworICAgICAgICAgICAgICAgIHZvaWQqICAgICAgIGJ1ZmZlcnM7CisgICAgICAgICAgICAgICAgdWludDMyX3QgICAgZnJhbWVDb3VudDsKKyAgICAgICAgICAgICAgICAvLyBDYWNoZSBsaW5lIGJvdW5kYXJ5CisgICAgICAgICAgICAgICAgdWludDMyX3QgICAgbG9vcFN0YXJ0OworICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIGxvb3BFbmQ7CisgICAgICAgICAgICAgICAgaW50ICAgICAgICAgbG9vcENvdW50OwogICAgIHZvbGF0aWxlICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgICAgdm9sdW1lWzJdOwogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICB2b2x1bWVMUjsKQEAgLTU4LDE1ICs3MCwxNyBAQAogICAgICAgICAgICAgICAgIC8vIE5PVEU6IGF1ZGlvX3RyYWNrX2NibGtfdDo6ZnJhbWVTaXplIGlzIG5vdCBlcXVhbCB0byBBdWRpb1RyYWNrOjpmcmFtZVNpemUoKSBmb3IKICAgICAgICAgICAgICAgICAvLyA4IGJpdCBQQ00gZGF0YTogaW4gdGhpcyBjYXNlLCAgbUNibGstPmZyYW1lU2l6ZSBpcyBiYXNlZCBvbiBhIHNhbXBsZSBzaXplIG9mCiAgICAgICAgICAgICAgICAgLy8gMTYgYml0IGJlY2F1c2UgZGF0YSBpcyBjb252ZXJ0ZWQgdG8gMTYgYml0IGJlZm9yZSBiZWluZyBzdG9yZWQgaW4gYnVmZmVyCi0gICAgICAgICAgICAgICAgdWludDMyX3QgICAgZnJhbWVTaXplOwotICAgICAgICAgICAgICAgIHVpbnQ4X3QgICAgIGNoYW5uZWxzOwotICAgICAgICAgICAgICAgIHVpbnQ4X3QgICAgIGZsb3dDb250cm9sRmxhZzsgLy8gdW5kZXJydW4gKG91dCkgb3Igb3ZlcnJydW4gKGluKSBpbmRpY2F0aW9uCi0gICAgICAgICAgICAgICAgdWludDhfdCAgICAgb3V0OyAgICAgICAgLy8gb3V0IGVxdWFscyAxIGZvciBBdWRpb1RyYWNrIGFuZCAwIGZvciBBdWRpb1JlY29yZAotICAgICAgICAgICAgICAgIHVpbnQ4X3QgICAgIGZvcmNlUmVhZHk7CisKKyAgICAgICAgICAgICAgICB1aW50OF90ICAgICBmcmFtZVNpemU7CisgICAgICAgICAgICAgICAgdWludDhfdCAgICAgY2hhbm5lbENvdW50OworICAgICAgICAgICAgICAgIHVpbnQxNl90ICAgIGZsYWdzOworCiAgICAgICAgICAgICAgICAgdWludDE2X3QgICAgYnVmZmVyVGltZW91dE1zOyAvLyBNYXhpbXVtIGN1bXVsYXRlZCB0aW1lb3V0IGJlZm9yZSByZXN0YXJ0aW5nIGF1ZGlvZmxpbmdlcgogICAgICAgICAgICAgICAgIHVpbnQxNl90ICAgIHdhaXRUaW1lTXM7ICAgICAgLy8gQ3VtdWxhdGVkIHdhaXQgdGltZQotICAgICAgICAgICAgICAgIC8vIENhY2hlIGxpbmUgYm91bmRhcnkgKDMyIGJ5dGVzKQogCisgICAgICAgICAgICAgICAgdWludDE2X3QgICAgc2VuZExldmVsOworICAgICAgICAgICAgICAgIHVpbnQxNl90ICAgIHJlc2VydmVkOworICAgICAgICAgICAgICAgIC8vIENhY2hlIGxpbmUgYm91bmRhcnkgKDMyIGJ5dGVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3RyYWNrX2NibGtfdCgpOwogICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIHN0ZXBVc2VyKHVpbnQzMl90IGZyYW1lQ291bnQpOwogICAgICAgICAgICAgICAgIGJvb2wgICAgICAgIHN0ZXBTZXJ2ZXIodWludDMyX3QgZnJhbWVDb3VudCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3ByaXZhdGUvc3VyZmFjZWZsaW5nZXIvU2hhcmVkQnVmZmVyU3RhY2suaCBiL2luY2x1ZGUvcHJpdmF0ZS9zdXJmYWNlZmxpbmdlci9TaGFyZWRCdWZmZXJTdGFjay5oCmluZGV4IDliNWExZTAuLjYzM2I1NDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvcHJpdmF0ZS9zdXJmYWNlZmxpbmdlci9TaGFyZWRCdWZmZXJTdGFjay5oCisrKyBiL2luY2x1ZGUvcHJpdmF0ZS9zdXJmYWNlZmxpbmdlci9TaGFyZWRCdWZmZXJTdGFjay5oCkBAIC00MywyNCArNDMsOSBAQAogICogdW5sZXNzIHRoZXkgYXJlIGluIHVzZSBieSB0aGUgc2VydmVyLCB3aGljaCBpcyBvbmx5IHRoZSBjYXNlIGZvciB0aGUgbGFzdCAKICAqIGRlcXVldWUtYWJsZSBidWZmZXIuIFdoZW4gdGhlc2UgdmFyaW91cyBjb25kaXRpb25zIGFyZSBub3QgbWV0LCB0aGUgY2FsbGVyCiAgKiB3YWl0cyB1bnRpbCB0aGUgY29uZGl0aW9uIGlzIG1ldC4KLSAqCi0gKiAKLSAqIENBVkVBVFM6Ci0gKiAKLSAqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoZXJlIGFyZSBzZXZlcmFsIGxpbWl0YXRpb25zOgotICogLSBidWZmZXJzIG11c3QgYmUgbG9ja2VkIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkndmUgYmVlbiBkZXF1ZXVlZAotICogLSBidWZmZXJzIG11c3QgYmUgZW5xdWV1ZWQgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSd2ZSBiZWVuIGxvY2tlZAotICogLSBkZXF1ZXVlKCkgaXMgbm90IHJlZW50cmFudAotICogLSBubyBlcnJvciBjaGVja3MgYXJlIGRvbmUgb24gdGhlIGNvbmRpdGlvbiBhYm92ZQogICogCiAgKi8KIAotLy8gV2hlbiBjaGFuZ2luZyB0aGVzZSB2YWx1ZXMsIHRoZSBDT01QSUxFX1RJTUVfQVNTRVJUIGF0IHRoZSBlbmQgb2YgdGhpcwotLy8gZmlsZSBuZWVkIHRvIGJlIHVwZGF0ZWQuCi1jb25zdCB1bnNpZ25lZCBpbnQgTlVNX0xBWUVSU19NQVggID0gMzE7Ci1jb25zdCB1bnNpZ25lZCBpbnQgTlVNX0JVRkZFUl9NQVggID0gNDsKLWNvbnN0IHVuc2lnbmVkIGludCBOVU1fRElTUExBWV9NQVggPSA0OwotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIFJlZ2lvbjsKQEAgLTY5LDcgKzU0LDExIEBACiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gc2hvdWxkIGJlIDEyOCBieXRlcyAoMzIgbG9uZ3MpCisvLyA0ICogKDExICsgNyArICgxICsgMipOVU1fUkVDVF9NQVgpICogTlVNX0JVRkZFUl9NQVgpICogTlVNX0xBWUVSU19NQVgKKy8vIDQgKiAoMTEgKyA3ICsgKDEgKyAyKjcpKjE2KSAqIDMxCisvLyAxMDMyICogMzEKKy8vID0gfjI3IEtpQiAoMzE5OTIpCisKIGNsYXNzIFNoYXJlZEJ1ZmZlclN0YWNrCiB7CiAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZENsaWVudDsKQEAgLTc4LDIxICs2NywzOCBAQAogICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJTZXJ2ZXI7CiAKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgRmxhdFJlZ2lvbiB7IC8vIDEyIGJ5dGVzCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgTlVNX1JFQ1RfTUFYID0gMTsKLSAgICAgICAgdWludDMyX3QgICAgY291bnQ7Ci0gICAgICAgIHVpbnQxNl90ICAgIHJlY3RzWzQqTlVNX1JFQ1RfTUFYXTsKLSAgICB9OwotICAgIAorICAgIC8vIFdoZW4gY2hhbmdpbmcgdGhlc2UgdmFsdWVzLCB0aGUgQ09NUElMRV9USU1FX0FTU0VSVCBhdCB0aGUgZW5kIG9mIHRoaXMKKyAgICAvLyBmaWxlIG5lZWQgdG8gYmUgdXBkYXRlZC4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IE5VTV9MQVlFUlNfTUFYICA9IDMxOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgTlVNX0JVRkZFUl9NQVggID0gMTY7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fQlVGRkVSX01JTiAgPSAyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgTlVNX0RJU1BMQVlfTUFYID0gNDsKKwogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsgLy8gNCBsb25ncwogICAgICAgICB0eXBlZGVmIGludDMyX3QgdXNlY3NfdDsKICAgICAgICAgdXNlY3NfdCAgdG90YWxUaW1lOwogICAgICAgICB1c2Vjc190ICByZXNlcnZlZFszXTsKICAgICB9OworCisgICAgc3RydWN0IFNtYWxsUmVjdCB7CisgICAgICAgIHVpbnQxNl90IGwsIHQsIHIsIGI7CisgICAgfTsKKworICAgIHN0cnVjdCBGbGF0UmVnaW9uIHsgLy8gNTIgYnl0ZXMgPSA0ICogKDEgKyAyKk4pCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgTlVNX1JFQ1RfTUFYID0gNjsKKyAgICAgICAgdWludDMyX3QgICAgY291bnQ7CisgICAgICAgIFNtYWxsUmVjdCAgIHJlY3RzW05VTV9SRUNUX01BWF07CisgICAgfTsKKyAgICAKKyAgICBzdHJ1Y3QgQnVmZmVyRGF0YSB7CisgICAgICAgIEZsYXRSZWdpb24gZGlydHlSZWdpb247CisgICAgICAgIFNtYWxsUmVjdCAgY3JvcDsKKyAgICB9OwogICAgIAogICAgIFNoYXJlZEJ1ZmZlclN0YWNrKCk7CiAgICAgdm9pZCBpbml0KGludDMyX3QgaWRlbnRpdHkpOwogICAgIHN0YXR1c190IHNldERpcnR5UmVnaW9uKGludCBidWZmZXIsIGNvbnN0IFJlZ2lvbiYgcmVnKTsKKyAgICBzdGF0dXNfdCBzZXRDcm9wKGludCBidWZmZXIsIGNvbnN0IFJlY3QmIHJlZyk7CiAgICAgUmVnaW9uIGdldERpcnR5UmVnaW9uKGludCBidWZmZXIpIGNvbnN0OwogCiAgICAgLy8gdGhlc2UgYXR0cmlidXRlcyBhcmUgcGFydCBvZiB0aGUgY29uZGl0aW9ucy91cGRhdGVzCkBAIC0xMDQsMjQgKzExMCwyNSBAQAogCiAgICAgLy8gbm90IHBhcnQgb2YgdGhlIGNvbmRpdGlvbnMKICAgICB2b2xhdGlsZSBpbnQzMl90IHJlYWxsb2NNYXNrOworICAgIHZvbGF0aWxlIGludDhfdCBpbmRleFtOVU1fQlVGRkVSX01BWF07CiAKICAgICBpbnQzMl90ICAgICBpZGVudGl0eTsgICAgICAgLy8gc3VyZmFjZSdzIGlkZW50aXR5IChjb25zdCkKLSAgICBpbnQzMl90ICAgICByZXNlcnZlZDMyWzldOworICAgIGludDMyX3QgICAgIHRva2VuOyAgICAgICAgICAvLyBzdXJmYWNlJ3MgdG9rZW4gKGZvciBkZWJ1Z2dpbmcpCisgICAgaW50MzJfdCAgICAgcmVzZXJ2ZWQzMlsxXTsKICAgICBTdGF0aXN0aWNzICBzdGF0czsKLSAgICBGbGF0UmVnaW9uICBkaXJ0eVJlZ2lvbltOVU1fQlVGRkVSX01BWF07ICAgIC8vIDEyKjQ9NDggYnl0ZXMKKyAgICBpbnQzMl90ICAgICByZXNlcnZlZDsKKyAgICBCdWZmZXJEYXRhICBidWZmZXJzW05VTV9CVUZGRVJfTUFYXTsgICAgIC8vIDk2MCBieXRlcwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyA0IEtCIG1heAorLy8gMzIgS0IgbWF4CiBjbGFzcyBTaGFyZWRDbGllbnQKIHsKIHB1YmxpYzoKICAgICBTaGFyZWRDbGllbnQoKTsKICAgICB+U2hhcmVkQ2xpZW50KCk7Ci0KICAgICBzdGF0dXNfdCB2YWxpZGF0ZShzaXplX3QgdG9rZW4pIGNvbnN0OwotICAgIHVpbnQzMl90IGdldElkZW50aXR5KHNpemVfdCB0b2tlbikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJhc2U7CkBAIC0xMzEsNyArMTM4LDcgQEAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBsb2NrLWxlc3MgcHJpbWl0aXZlCiAgICAgTXV0ZXggbG9jazsKICAgICBDb25kaXRpb24gY3Y7Ci0gICAgU2hhcmVkQnVmZmVyU3RhY2sgc3VyZmFjZXNbIE5VTV9MQVlFUlNfTUFYIF07CisgICAgU2hhcmVkQnVmZmVyU3RhY2sgc3VyZmFjZXNbIFNoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fTEFZRVJTX01BWCBdOwogfTsKIAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTM5LDE4ICsxNDYsMTcgQEAKIGNsYXNzIFNoYXJlZEJ1ZmZlckJhc2UKIHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJCYXNlKFNoYXJlZENsaWVudCogc2hhcmVkQ2xpZW50LCBpbnQgc3VyZmFjZSwgaW50IG51bSwKKyAgICBTaGFyZWRCdWZmZXJCYXNlKFNoYXJlZENsaWVudCogc2hhcmVkQ2xpZW50LCBpbnQgc3VyZmFjZSwKICAgICAgICAgICAgIGludDMyX3QgaWRlbnRpdHkpOwogICAgIH5TaGFyZWRCdWZmZXJCYXNlKCk7Ci0gICAgdWludDMyX3QgZ2V0SWRlbnRpdHkoKTsKICAgICBzdGF0dXNfdCBnZXRTdGF0dXMoKSBjb25zdDsKKyAgICBpbnQzMl90IGdldElkZW50aXR5KCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEZyb250QnVmZmVyKCkgY29uc3Q7CiAgICAgU3RyaW5nOCBkdW1wKGNoYXIgY29uc3QqIHByZWZpeCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBTaGFyZWRDbGllbnQqIGNvbnN0IG1TaGFyZWRDbGllbnQ7CiAgICAgU2hhcmVkQnVmZmVyU3RhY2sqIGNvbnN0IG1TaGFyZWRTdGFjazsKLSAgICBjb25zdCBpbnQgbU51bUJ1ZmZlcnM7CiAgICAgY29uc3QgaW50IG1JZGVudGl0eTsKIAogICAgIGZyaWVuZCBzdHJ1Y3QgVXBkYXRlOwpAQCAtMTYwLDYxICsxNjYsMjIgQEAKICAgICAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrOwogICAgICAgICBpbmxpbmUgQ29uZGl0aW9uQmFzZShTaGFyZWRCdWZmZXJCYXNlKiBzYmMpIAogICAgICAgICAgICAgOiBzdGFjaygqc2JjLT5tU2hhcmVkU3RhY2spIHsgfQorICAgICAgICB2aXJ0dWFsIH5Db25kaXRpb25CYXNlKCkgeyB9OworICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3IoKSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgPSAwOwogICAgIH07CisgICAgc3RhdHVzX3Qgd2FpdEZvckNvbmRpdGlvbihjb25zdCBDb25kaXRpb25CYXNlJiBjb25kaXRpb24pOwogCiAgICAgc3RydWN0IFVwZGF0ZUJhc2UgewogICAgICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2s7CiAgICAgICAgIGlubGluZSBVcGRhdGVCYXNlKFNoYXJlZEJ1ZmZlckJhc2UqIHNiYikgCiAgICAgICAgICAgICA6IHN0YWNrKCpzYmItPm1TaGFyZWRTdGFjaykgeyB9CiAgICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0YXR1c190IHdhaXRGb3JDb25kaXRpb24oVCBjb25kaXRpb24pOwotCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdHVzX3QgdXBkYXRlQ29uZGl0aW9uKFQgdXBkYXRlKTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdHVzX3QgU2hhcmVkQnVmZmVyQmFzZTo6d2FpdEZvckNvbmRpdGlvbihUIGNvbmRpdGlvbikgCi17Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7Ci0gICAgU2hhcmVkQ2xpZW50JiBjbGllbnQoICptU2hhcmVkQ2xpZW50ICk7Ci0gICAgY29uc3QgbnNlY3NfdCBUSU1FT1VUID0gczJucygxKTsKLSAgICBNdXRleDo6QXV0b2xvY2sgX2woY2xpZW50LmxvY2spOwotICAgIHdoaWxlICgoY29uZGl0aW9uKCk9PWZhbHNlKSAmJgotICAgICAgICAgICAgKHN0YWNrLmlkZW50aXR5ID09IG1JZGVudGl0eSkgJiYKLSAgICAgICAgICAgIChzdGFjay5zdGF0dXMgPT0gTk9fRVJST1IpKQotICAgIHsKLSAgICAgICAgc3RhdHVzX3QgZXJyID0gY2xpZW50LmN2LndhaXRSZWxhdGl2ZShjbGllbnQubG9jaywgVElNRU9VVCk7Ci0gICAgICAgIAotICAgICAgICAvLyBoYW5kbGUgZXJyb3JzIGFuZCB0aW1lb3V0cwotICAgICAgICBpZiAoQ0NfVU5MSUtFTFkoZXJyICE9IE5PX0VSUk9SKSkgewotICAgICAgICAgICAgaWYgKGVyciA9PSBUSU1FRF9PVVQpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HRSgid2FpdEZvckNvbmRpdGlvbiglcykgdGltZWQgb3V0IChpZGVudGl0eT0lZCksICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJidXQgY29uZGl0aW9uIGlzIHRydWUhIFdlIHJlY292ZXJlZCBidXQgaXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZG4ndCBoYXBwZW4uIiAsIFQ6Om5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmlkZW50aXR5KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HVygid2FpdEZvckNvbmRpdGlvbiglcykgdGltZWQgb3V0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICIoaWRlbnRpdHk9JWQsIHN0YXR1cz0lZCkuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJDUFUgbWF5IGJlIHBlZ2dlZC4gdHJ5aW5nIGFnYWluLiIsIFQ6Om5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmlkZW50aXR5LCBzdGFjay5zdGF0dXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgTE9HRSgid2FpdEZvckNvbmRpdGlvbiglcykgZXJyb3IgKCVzKSAiLAotICAgICAgICAgICAgICAgICAgICAgICAgVDo6bmFtZSgpLCBzdHJlcnJvcigtZXJyKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHN0YWNrLmlkZW50aXR5ICE9IG1JZGVudGl0eSkgPyBzdGF0dXNfdChCQURfSU5ERVgpIDogc3RhY2suc3RhdHVzOwotfQotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdHVzX3QgU2hhcmVkQnVmZmVyQmFzZTo6dXBkYXRlQ29uZGl0aW9uKFQgdXBkYXRlKSB7CiAgICAgU2hhcmVkQ2xpZW50JiBjbGllbnQoICptU2hhcmVkQ2xpZW50ICk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKGNsaWVudC5sb2NrKTsKQEAgLTIzOCwxMyArMjA1LDIxIEBACiAgICAgc3RhdHVzX3QgcXVldWUoaW50IGJ1Zik7CiAgICAgYm9vbCBuZWVkTmV3QnVmZmVyKGludCBidWZmZXIpIGNvbnN0OwogICAgIHN0YXR1c190IHNldERpcnR5UmVnaW9uKGludCBidWZmZXIsIGNvbnN0IFJlZ2lvbiYgcmVnKTsKKyAgICBzdGF0dXNfdCBzZXRDcm9wKGludCBidWZmZXIsIGNvbnN0IFJlY3QmIHJlZyk7CiAgICAgCisKKyAgICBjbGFzcyBTZXRCdWZmZXJDb3VudENhbGxiYWNrIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckNsaWVudDsKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCBvcGVyYXRvcigpKGludCBidWZmZXJDb3VudCkgY29uc3QgPSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+U2V0QnVmZmVyQ291bnRDYWxsYmFjaygpIHsgfQorICAgIH07CisgICAgc3RhdHVzX3Qgc2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50LCBjb25zdCBTZXRCdWZmZXJDb3VudENhbGxiYWNrJiBpcGMpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgQ29uZGl0aW9uOwogICAgIGZyaWVuZCBzdHJ1Y3QgRGVxdWV1ZUNvbmRpdGlvbjsKICAgICBmcmllbmQgc3RydWN0IExvY2tDb25kaXRpb247Ci0gICAgCi0gICAgaW50MzJfdCBjb21wdXRlVGFpbCgpIGNvbnN0OwogCiAgICAgc3RydWN0IFF1ZXVlVXBkYXRlIDogcHVibGljIFVwZGF0ZUJhc2UgewogICAgICAgICBpbmxpbmUgUXVldWVVcGRhdGUoU2hhcmVkQnVmZmVyQmFzZSogc2JiKTsKQEAgLTI2MCwyNSArMjM1LDM0IEBACiAKICAgICBzdHJ1Y3QgRGVxdWV1ZUNvbmRpdGlvbiA6IHB1YmxpYyBDb25kaXRpb25CYXNlIHsKICAgICAgICAgaW5saW5lIERlcXVldWVDb25kaXRpb24oU2hhcmVkQnVmZmVyQ2xpZW50KiBzYmMpOwotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKCk7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogbmFtZSgpIHsgcmV0dXJuICJEZXF1ZXVlQ29uZGl0aW9uIjsgfQorICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKCkgY29uc3Q7CisgICAgICAgIGlubGluZSBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gIkRlcXVldWVDb25kaXRpb24iOyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBMb2NrQ29uZGl0aW9uIDogcHVibGljIENvbmRpdGlvbkJhc2UgewogICAgICAgICBpbnQgYnVmOwogICAgICAgICBpbmxpbmUgTG9ja0NvbmRpdGlvbihTaGFyZWRCdWZmZXJDbGllbnQqIHNiYywgaW50IGJ1Zik7Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yKCkoKTsKLSAgICAgICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBuYW1lKCkgeyByZXR1cm4gIkxvY2tDb25kaXRpb24iOyB9CisgICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yKCkoKSBjb25zdDsKKyAgICAgICAgaW5saW5lIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiAiTG9ja0NvbmRpdGlvbiI7IH0KICAgICB9OwogCisgICAgaW50MzJfdCBjb21wdXRlVGFpbCgpIGNvbnN0OworCisgICAgbXV0YWJsZSBSV0xvY2sgbUxvY2s7CisgICAgaW50IG1OdW1CdWZmZXJzOworCiAgICAgaW50MzJfdCB0YWlsOworICAgIGludDMyX3QgdW5kb0RlcXVldWVUYWlsOworICAgIGludDMyX3QgcXVldWVkX2hlYWQ7CiAgICAgLy8gc3RhdGlzdGljcy4uLgotICAgIG5zZWNzX3QgbURlcXVldWVUaW1lW05VTV9CVUZGRVJfTUFYXTsKKyAgICBuc2Vjc190IG1EZXF1ZXVlVGltZVtTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0JVRkZFUl9NQVhdOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBTaGFyZWRCdWZmZXJTZXJ2ZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyQmFzZQorY2xhc3MgU2hhcmVkQnVmZmVyU2VydmVyCisgICAgOiBwdWJsaWMgU2hhcmVkQnVmZmVyQmFzZSwKKyAgICAgIHB1YmxpYyBMaWdodFJlZkJhc2U8U2hhcmVkQnVmZmVyU2VydmVyPgogewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlclNlcnZlcihTaGFyZWRDbGllbnQqIHNoYXJlZENsaWVudCwgaW50IHN1cmZhY2UsIGludCBudW0sCkBAIC0yODcsMTYgKzI3MSw3NCBAQAogICAgIHNzaXplX3QgcmV0aXJlQW5kTG9jaygpOwogICAgIHN0YXR1c190IHVubG9jayhpbnQgYnVmZmVyKTsKICAgICB2b2lkIHNldFN0YXR1cyhzdGF0dXNfdCBzdGF0dXMpOwotICAgIHN0YXR1c190IHJlYWxsb2NhdGUoKTsKKyAgICBzdGF0dXNfdCByZWFsbG9jYXRlQWxsKCk7CisgICAgc3RhdHVzX3QgcmVhbGxvY2F0ZUFsbEV4Y2VwdChpbnQgYnVmZmVyKTsKICAgICBzdGF0dXNfdCBhc3NlcnRSZWFsbG9jYXRlKGludCBidWZmZXIpOwogICAgIGludDMyX3QgZ2V0UXVldWVkQ291bnQoKSBjb25zdDsKLSAgICAKICAgICBSZWdpb24gZ2V0RGlydHlSZWdpb24oaW50IGJ1ZmZlcikgY29uc3Q7CiAKKyAgICBzdGF0dXNfdCByZXNpemUoaW50IG5ld051bUJ1ZmZlcnMpOworCiAgICAgU2hhcmVkQnVmZmVyU3RhY2s6OlN0YXRpc3RpY3MgZ2V0U3RhdHMoKSBjb25zdDsKICAgICAKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTGlnaHRSZWZCYXNlPFNoYXJlZEJ1ZmZlclNlcnZlcj47CisgICAgflNoYXJlZEJ1ZmZlclNlcnZlcigpOworCisgICAgLyoKKyAgICAgKiBCdWZmZXJMaXN0IGlzIGJhc2ljYWxseSBhIGZpeGVkLWNhcGFjaXR5IHNvcnRlZC12ZWN0b3Igb2YKKyAgICAgKiB1bnNpZ25lZCA1LWJpdHMgaW50cyB1c2luZyBhIDMyLWJpdHMgaW50IGFzIHN0b3JhZ2UuCisgICAgICogaXQgaGFzIGVmZmljaWVudCBpdGVyYXRvcnMgdG8gZmluZCBpdGVtcyBpbiB0aGUgbGlzdCBhbmQgbm90IGluIHRoZSBsaXN0LgorICAgICAqLworICAgIGNsYXNzIEJ1ZmZlckxpc3QgeworICAgICAgICBzaXplX3QgbUNhcGFjaXR5OworICAgICAgICB1aW50MzJfdCBtTGlzdDsKKyAgICBwdWJsaWM6CisgICAgICAgIEJ1ZmZlckxpc3Qoc2l6ZV90IGMgPSBTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0JVRkZFUl9NQVgpCisgICAgICAgICAgICA6IG1DYXBhY2l0eShjKSwgbUxpc3QoMCkgeyB9CisgICAgICAgIHN0YXR1c190IGFkZChpbnQgdmFsdWUpOworICAgICAgICBzdGF0dXNfdCByZW1vdmUoaW50IHZhbHVlKTsKKyAgICAgICAgdWludDMyX3QgZ2V0TWFzaygpIGNvbnN0IHsgcmV0dXJuIG1MaXN0OyB9CisKKyAgICAgICAgY2xhc3MgY29uc3RfaXRlcmF0b3IgeworICAgICAgICAgICAgZnJpZW5kIGNsYXNzIEJ1ZmZlckxpc3Q7CisgICAgICAgICAgICB1aW50MzJfdCBtYXNrLCBjdXJyOworICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IodWludDMyX3QgbWFzaykgOgorICAgICAgICAgICAgICAgIG1hc2sobWFzayksIGN1cnIoX19idWlsdGluX2NseihtYXNrKSkgeworICAgICAgICAgICAgfQorICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgY29uc3RfaXRlcmF0b3ImIHJocykgY29uc3QgeworICAgICAgICAgICAgICAgIHJldHVybiBtYXNrID09IHJocy5tYXNrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiByaHMpIGNvbnN0IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFzayAhPSByaHMubWFzazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlubGluZSBpbnQgb3BlcmF0b3IgKigpIGNvbnN0IHsgcmV0dXJuIGN1cnI7IH0KKyAgICAgICAgICAgIGlubGluZSBjb25zdCBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3IgKysoKSB7CisgICAgICAgICAgICAgICAgbWFzayAmPSB+KDE8PCgzMS1jdXJyKSk7CisgICAgICAgICAgICAgICAgY3VyciA9IF9fYnVpbHRpbl9jbHoobWFzayk7CisgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcihtTGlzdCk7CisgICAgICAgIH0KKyAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0ICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKDApOworICAgICAgICB9CisgICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBmcmVlX2JlZ2luKCkgY29uc3QgeworICAgICAgICAgICAgdWludDMyX3QgbWFzayA9ICgxIDw8ICgzMi1tQ2FwYWNpdHkpKSAtIDE7CisgICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IoIH4obUxpc3QgfCBtYXNrKSApOworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIHRoaXMgcHJvdGVjdHMgbU51bUJ1ZmZlcnMgYW5kIG1CdWZmZXJMaXN0CisgICAgbXV0YWJsZSBSV0xvY2sgbUxvY2s7CisgICAgaW50IG1OdW1CdWZmZXJzOworICAgIEJ1ZmZlckxpc3QgbUJ1ZmZlckxpc3Q7CisKICAgICBzdHJ1Y3QgVW5sb2NrVXBkYXRlIDogcHVibGljIFVwZGF0ZUJhc2UgewogICAgICAgICBjb25zdCBpbnQgbG9ja2VkQnVmZmVyOwogICAgICAgICBpbmxpbmUgVW5sb2NrVXBkYXRlKFNoYXJlZEJ1ZmZlckJhc2UqIHNiYiwgaW50IGxvY2tlZEJ1ZmZlcik7CkBAIC0zMTgsOCArMzYwLDggQEAKICAgICBzdHJ1Y3QgUmVhbGxvY2F0ZUNvbmRpdGlvbiA6IHB1YmxpYyBDb25kaXRpb25CYXNlIHsKICAgICAgICAgaW50IGJ1ZjsKICAgICAgICAgaW5saW5lIFJlYWxsb2NhdGVDb25kaXRpb24oU2hhcmVkQnVmZmVyQmFzZSogc2JiLCBpbnQgYnVmKTsKLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IoKSgpOwotICAgICAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJldHVybiAiUmVhbGxvY2F0ZUNvbmRpdGlvbiI7IH0KKyAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IoKSgpIGNvbnN0OworICAgICAgICBpbmxpbmUgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZWFsbG9jYXRlQ29uZGl0aW9uIjsgfQogICAgIH07CiB9OwogCkBAIC0zNDQsMTMgKzM4NiwxMiBAQAogICAgIHVpbnQ4X3QgICAgICAgICBjb25uZWN0ZWQ7CiAgICAgdWludDhfdCAgICAgICAgIHJlc2VydmVkWzNdOwogICAgIHVpbnQzMl90ICAgICAgICBwYWRbN107Ci0gICAgZGlzcGxheV9jYmxrX3QgIGRpc3BsYXlzW05VTV9ESVNQTEFZX01BWF07CisgICAgZGlzcGxheV9jYmxrX3QgIGRpc3BsYXlzW1NoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fRElTUExBWV9NQVhdOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNPTVBJTEVfVElNRV9BU1NFUlQoc2l6ZW9mKFNoYXJlZENsaWVudCkgPD0gNDA5NikKLUNPTVBJTEVfVElNRV9BU1NFUlQoc2l6ZW9mKFNoYXJlZEJ1ZmZlclN0YWNrKSA9PSAxMjgpCitDT01QSUxFX1RJTUVfQVNTRVJUKHNpemVvZihTaGFyZWRDbGllbnQpIDw9IDMyNzY4KQogQ09NUElMRV9USU1FX0FTU0VSVChzaXplb2Yoc3VyZmFjZV9mbGluZ2VyX2NibGtfdCkgPD0gNDA5NikKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlLmggYi9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlLmgKaW5kZXggNDcyZjc1OS4uZGRiZTAzZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oCisrKyBiL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaApAQCAtNDcsMTMgKzQ3LDMwIEBACiAgICAgICAgIFBPU1RfQlVGRkVSLCAvLyBvbmUtd2F5IHRyYW5zYWN0aW9uCiAgICAgICAgIENSRUFURV9PVkVSTEFZLAogICAgICAgICBSRVFVRVNUX0JVRkZFUiwKKyAgICAgICAgU0VUX0JVRkZFUl9DT1VOVCwKICAgICB9OwogCiBwdWJsaWM6IAogICAgIERFQ0xBUkVfTUVUQV9JTlRFUkZBQ0UoU3VyZmFjZSk7CiAKLSAgICB2aXJ0dWFsIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwgaW50IHVzYWdlKSA9IDA7IAorICAgIC8qCisgICAgICogcmVxdWVzdHMgYSBuZXcgYnVmZmVyIGZvciB0aGUgZ2l2ZW4gaW5kZXguIElmIHcsIGgsIG9yIGZvcm1hdCBhcmUKKyAgICAgKiBudWxsIHRoZSBidWZmZXIgaXMgY3JlYXRlZCB3aXRoIHRoZSBwYXJhbWV0ZXJzIGFzc2lnbmVkIHRvIHRoZQorICAgICAqIHN1cmZhY2UgaXQgaXMgYm91bmQgdG8uIE90aGVyd2lzZSB0aGUgYnVmZmVyJ3MgcGFyYW1ldGVycyBhcmUKKyAgICAgKiBzZXQgdG8gdGhvc2Ugc3BlY2lmaWVkLgorICAgICAqLworICAgIHZpcnR1YWwgc3A8R3JhcGhpY0J1ZmZlcj4gcmVxdWVzdEJ1ZmZlcihpbnQgYnVmZmVySWR4LAorICAgICAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB1c2FnZSkgPSAwOworCisgICAgLyoKKyAgICAgKiBzZXRzIHRoZSBudW1iZXIgb2YgYnVmZmVycyBkZXF1ZXVhYmxlIGZvciB0aGlzIHN1cmZhY2UuCisgICAgICovCisgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpID0gMDsKICAgICAKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBEZXByZWNhdGVkLi4uCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKICAgICBjbGFzcyBCdWZmZXJIZWFwIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyLmggYi9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXIuaAppbmRleCBkMWU3Nzg1Li5kZDQ0YWE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXIuaAorKysgYi9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSA8dWkvUGl4ZWxGb3JtYXQuaD4KIAotI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oPgorI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODUsOCArODUsMTEgQEAKICAgICAvKiBjcmVhdGUgY29ubmVjdGlvbiB3aXRoIHN1cmZhY2UgZmxpbmdlciwgcmVxdWlyZXMKICAgICAgKiBBQ0NFU1NfU1VSRkFDRV9GTElOR0VSIHBlcm1pc3Npb24KICAgICAgKi8KKyAgICB2aXJ0dWFsIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNyZWF0ZUNvbm5lY3Rpb24oKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHNwPElTdXJmYWNlRmxpbmdlckNsaWVudD4gY3JlYXRlQ29ubmVjdGlvbigpID0gMDsKKyAgICAvKiBjcmVhdGUgYSBjbGllbnQgY29ubmVjdGlvbiB3aXRoIHN1cmZhY2UgZmxpbmdlcgorICAgICAqLworICAgIHZpcnR1YWwgc3A8SVN1cmZhY2VDb21wb3NlckNsaWVudD4gY3JlYXRlQ2xpZW50Q29ubmVjdGlvbigpID0gMDsKIAogICAgIC8qIHJldHJpZXZlIHRoZSBjb250cm9sIGJsb2NrICovCiAgICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gZ2V0Q2JsaygpIGNvbnN0ID0gMDsKQEAgLTEyMyw2ICsxMjYsNyBAQAogICAgICAgICAvLyBKYXZhIGJ5IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuCiAgICAgICAgIEJPT1RfRklOSVNIRUQgPSBJQmluZGVyOjpGSVJTVF9DQUxMX1RSQU5TQUNUSU9OLAogICAgICAgICBDUkVBVEVfQ09OTkVDVElPTiwKKyAgICAgICAgQ1JFQVRFX0NMSUVOVF9DT05ORUNUSU9OLAogICAgICAgICBHRVRfQ0JMSywKICAgICAgICAgT1BFTl9HTE9CQUxfVFJBTlNBQ1RJT04sCiAgICAgICAgIENMT1NFX0dMT0JBTF9UUkFOU0FDVElPTiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3NlckNsaWVudC5oIGIvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFlOWUwNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3NlckNsaWVudC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX1NGX0lTVVJGQUNFX0NPTVBPU0VSX0NMSUVOVF9ICisjZGVmaW5lIEFORFJPSURfU0ZfSVNVUkZBQ0VfQ09NUE9TRVJfQ0xJRU5UX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8dXRpbHMvRXJyb3JzLmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorCisjaW5jbHVkZSA8YmluZGVyL0lJbnRlcmZhY2UuaD4KKworI2luY2x1ZGUgPHVpL1BpeGVsRm9ybWF0Lmg+CisKKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgSU1lbW9yeUhlYXA7CisKK3R5cGVkZWYgaW50MzJfdCAgICBDbGllbnRJRDsKK3R5cGVkZWYgaW50MzJfdCAgICBEaXNwbGF5SUQ7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgbGF5ZXJfc3RhdGVfdDsKKworY2xhc3MgSVN1cmZhY2VDb21wb3NlckNsaWVudCA6IHB1YmxpYyBJSW50ZXJmYWNlCit7CitwdWJsaWM6CisgICAgREVDTEFSRV9NRVRBX0lOVEVSRkFDRShTdXJmYWNlQ29tcG9zZXJDbGllbnQpOworCisgICAgc3RydWN0IHN1cmZhY2VfZGF0YV90IHsKKyAgICAgICAgaW50MzJfdCAgICAgICAgICAgICB0b2tlbjsKKyAgICAgICAgaW50MzJfdCAgICAgICAgICAgICBpZGVudGl0eTsKKyAgICAgICAgdWludDMyX3QgICAgICAgICAgICB3aWR0aDsKKyAgICAgICAgdWludDMyX3QgICAgICAgICAgICBoZWlnaHQ7CisgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgZm9ybWF0OworICAgICAgICBzdGF0dXNfdCByZWFkRnJvbVBhcmNlbChjb25zdCBQYXJjZWwmIHBhcmNlbCk7CisgICAgICAgIHN0YXR1c190IHdyaXRlVG9QYXJjZWwoUGFyY2VsKiBwYXJjZWwpIGNvbnN0OworICAgIH07CisKKyAgICB2aXJ0dWFsIHNwPElNZW1vcnlIZWFwPiBnZXRDb250cm9sQmxvY2soKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzc2l6ZV90IGdldFRva2VuRm9yU3VyZmFjZShjb25zdCBzcDxJU3VyZmFjZT4mIHN1cikgY29uc3QgPSAwOworCisgICAgLyoKKyAgICAgKiBSZXF1aXJlcyBBQ0NFU1NfU1VSRkFDRV9GTElOR0VSIHBlcm1pc3Npb24KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHNwPElTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKCBzdXJmYWNlX2RhdGFfdCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZzgmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheUlEIGRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncykgPSAwOworCisgICAgLyoKKyAgICAgKiBSZXF1aXJlcyBBQ0NFU1NfU1VSRkFDRV9GTElOR0VSIHBlcm1pc3Npb24KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHN0YXR1c190ICAgIGRlc3Ryb3lTdXJmYWNlKFN1cmZhY2VJRCBzaWQpID0gMDsKKworICAgIC8qCisgICAgICogUmVxdWlyZXMgQUNDRVNTX1NVUkZBQ0VfRkxJTkdFUiBwZXJtaXNzaW9uCisgICAgICovCisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpID0gMDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgQm5TdXJmYWNlQ29tcG9zZXJDbGllbnQgOiBwdWJsaWMgQm5JbnRlcmZhY2U8SVN1cmZhY2VDb21wb3NlckNsaWVudD4KK3sKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHN0YXR1c190ICAgIG9uVHJhbnNhY3QoIHVpbnQzMl90IGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXJjZWwmIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJjZWwqIHJlcGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgPSAwKTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIEFORFJPSURfU0ZfSVNVUkZBQ0VfQ09NUE9TRVJfQ0xJRU5UX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VGbGluZ2VyQ2xpZW50LmggYi9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjU3NjQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VGbGluZ2VyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBBTkRST0lEX1NGX0lTVVJGQUNFX0ZMSU5HRVJfQ0xJRU5UX0gKLSNkZWZpbmUgQU5EUk9JRF9TRl9JU1VSRkFDRV9GTElOR0VSX0NMSUVOVF9ICi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQotI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgotI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KLQotI2luY2x1ZGUgPGJpbmRlci9JSW50ZXJmYWNlLmg+Ci0KLSNpbmNsdWRlIDx1aS9QaXhlbEZvcm1hdC5oPgotICAKLSNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgSU1lbW9yeUhlYXA7Ci0KLXR5cGVkZWYgaW50MzJfdCAgICBDbGllbnRJRDsKLXR5cGVkZWYgaW50MzJfdCAgICBEaXNwbGF5SUQ7Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgbGF5ZXJfc3RhdGVfdDsKLQotY2xhc3MgSVN1cmZhY2VGbGluZ2VyQ2xpZW50IDogcHVibGljIElJbnRlcmZhY2UKLXsKLXB1YmxpYzogCi0gICAgREVDTEFSRV9NRVRBX0lOVEVSRkFDRShTdXJmYWNlRmxpbmdlckNsaWVudCk7Ci0KLSAgICBzdHJ1Y3Qgc3VyZmFjZV9kYXRhX3QgewotICAgICAgICBpbnQzMl90ICAgICAgICAgICAgIHRva2VuOwotICAgICAgICBpbnQzMl90ICAgICAgICAgICAgIGlkZW50aXR5OwotICAgICAgICB1aW50MzJfdCAgICAgICAgICAgIHdpZHRoOwotICAgICAgICB1aW50MzJfdCAgICAgICAgICAgIGhlaWdodDsKLSAgICAgICAgdWludDMyX3QgICAgICAgICAgICBmb3JtYXQ7Ci0gICAgICAgIHN0YXR1c190IHJlYWRGcm9tUGFyY2VsKGNvbnN0IFBhcmNlbCYgcGFyY2VsKTsKLSAgICAgICAgc3RhdHVzX3Qgd3JpdGVUb1BhcmNlbChQYXJjZWwqIHBhcmNlbCkgY29uc3Q7Ci0gICAgfTsKLSAgICAKLSAgICB2aXJ0dWFsIHNwPElNZW1vcnlIZWFwPiBnZXRDb250cm9sQmxvY2soKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIHNwPElTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKCBzdXJmYWNlX2RhdGFfdCogZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGlkLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmc4JiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHNpZCkgPSAwOwotCi0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpID0gMDsKLX07Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgQm5TdXJmYWNlRmxpbmdlckNsaWVudCA6IHB1YmxpYyBCbkludGVyZmFjZTxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+Ci17Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBvblRyYW5zYWN0KCB1aW50MzJfdCBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyY2VsJiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyY2VsKiByZXBseSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzID0gMCk7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLX07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KLSNlbmRpZiAvLyBBTkRST0lEX1NGX0lTVVJGQUNFX0ZMSU5HRVJfQ0xJRU5UX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZS5oIGIvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9TdXJmYWNlLmgKaW5kZXggMDI3OWQ4NC4uNGZkMDY4MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9TdXJmYWNlLmgKKysrIGIvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9TdXJmYWNlLmgKQEAgLTI4LDEyICsyOCwxNSBAQAogI2luY2x1ZGUgPHVpL2VnbC9hbmRyb2lkX25hdGl2ZXMuaD4KIAogI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlLmg+Ci0jaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VGbGluZ2VyQ2xpZW50Lmg+CisjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3NlckNsaWVudC5oPgorCisjZGVmaW5lIEFORFJPSURfVklFV19TVVJGQUNFX0pOSV9JRCAgICAibU5hdGl2ZVN1cmZhY2UiCiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2NsYXNzIEdyYXBoaWNCdWZmZXI7CiBjbGFzcyBHcmFwaGljQnVmZmVyTWFwcGVyOwogY2xhc3MgSU9NWDsKIGNsYXNzIFJlY3Q7CkBAIC00MSw2ICs0NCw3IEBACiBjbGFzcyBTdXJmYWNlQ29tcG9zZXJDbGllbnQ7CiBjbGFzcyBTaGFyZWRDbGllbnQ7CiBjbGFzcyBTaGFyZWRCdWZmZXJDbGllbnQ7CitjbGFzcyBTdXJmYWNlQ2xpZW50OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtNTYsNyArNjAsNiBAQAogICAgIHN0YXRpYyBib29sIGlzU2FtZVN1cmZhY2UoCiAgICAgICAgICAgICBjb25zdCBzcDxTdXJmYWNlQ29udHJvbD4mIGxocywgY29uc3Qgc3A8U3VyZmFjZUNvbnRyb2w+JiByaHMpOwogICAgICAgICAKLSAgICBTdXJmYWNlSUQgICBJRCgpIGNvbnN0ICAgICAgeyByZXR1cm4gbVRva2VuOyB9CiAgICAgdWludDMyX3QgICAgZ2V0RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtRmxhZ3M7IH0KICAgICB1aW50MzJfdCAgICBnZXRJZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1JZGVudGl0eTsgfQogCkBAIC0xMDQsNyArMTA3LDcgQEAKICAgICBTdXJmYWNlQ29udHJvbCgKICAgICAgICAgICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudCwKICAgICAgICAgICAgIGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyZmFjZSwKLSAgICAgICAgICAgIGNvbnN0IElTdXJmYWNlRmxpbmdlckNsaWVudDo6c3VyZmFjZV9kYXRhX3QmIGRhdGEsCisgICAgICAgICAgICBjb25zdCBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCYgZGF0YSwKICAgICAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIFBpeGVsRm9ybWF0IGZvcm1hdCwgdWludDMyX3QgZmxhZ3MpOwogCiAgICAgflN1cmZhY2VDb250cm9sKCk7CkBAIC0xMjgsNyArMTMxLDcgQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBTdXJmYWNlIAotICAgIDogcHVibGljIEVHTE5hdGl2ZUJhc2U8YW5kcm9pZF9uYXRpdmVfd2luZG93X3QsIFN1cmZhY2UsIFJlZkJhc2U+CisgICAgOiBwdWJsaWMgRUdMTmF0aXZlQmFzZTxBTmF0aXZlV2luZG93LCBTdXJmYWNlLCBSZWZCYXNlPgogewogcHVibGljOgogICAgIHN0cnVjdCBTdXJmYWNlSW5mbyB7CkBAIC0xNDEsMTcgKzE0NCwxNyBAQAogICAgICAgICB1aW50MzJfdCAgICByZXNlcnZlZFsyXTsKICAgICB9OwogCi0gICAgU3VyZmFjZShjb25zdCBQYXJjZWwmIGRhdGEpOworICAgIHN0YXRpYyBzdGF0dXNfdCB3cml0ZVRvUGFyY2VsKAorICAgICAgICAgICAgY29uc3Qgc3A8U3VyZmFjZT4mIGNvbnRyb2wsIFBhcmNlbCogcGFyY2VsKTsKKworICAgIHN0YXRpYyBzcDxTdXJmYWNlPiByZWFkRnJvbVBhcmNlbCgKKyAgICAgICAgICAgIGNvbnN0IFBhcmNlbCYgZGF0YSwgY29uc3Qgc3A8U3VyZmFjZT4mIG90aGVyKTsKIAogICAgIHN0YXRpYyBib29sIGlzVmFsaWQoY29uc3Qgc3A8U3VyZmFjZT4mIHN1cmZhY2UpIHsKICAgICAgICAgcmV0dXJuIChzdXJmYWNlICE9IDApICYmIHN1cmZhY2UtPmlzVmFsaWQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1NhbWVTdXJmYWNlKAotICAgICAgICAgICAgY29uc3Qgc3A8U3VyZmFjZT4mIGxocywgY29uc3Qgc3A8U3VyZmFjZT4mIHJocyk7Ci0KICAgICBib29sICAgICAgICBpc1ZhbGlkKCk7Ci0gICAgU3VyZmFjZUlEICAgSUQoKSBjb25zdCAgICAgICAgICB7IHJldHVybiBtVG9rZW47IH0KICAgICB1aW50MzJfdCAgICBnZXRGbGFncygpIGNvbnN0ICAgIHsgcmV0dXJuIG1GbGFnczsgfQogICAgIHVpbnQzMl90ICAgIGdldElkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gbUlkZW50aXR5OyB9CiAKQEAgLTE2Myw0NCArMTY2LDQzIEBACiAgICAgLy8gc2V0U3dhcFJlY3RhbmdsZSgpIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgR0wgRVMgY2xpZW50cwogICAgIHZvaWQgICAgICAgIHNldFN3YXBSZWN0YW5nbGUoY29uc3QgUmVjdCYgcik7CiAKKwogcHJpdmF0ZToKLSAgICAvLyBjYW4ndCBiZSBjb3BpZWQKLSAgICBTdXJmYWNlJiBvcGVyYXRvciA9IChTdXJmYWNlJiByaHMpOwotICAgIFN1cmZhY2UoY29uc3QgU3VyZmFjZSYgcmhzKTsKLQotICAgIFN1cmZhY2UoY29uc3Qgc3A8U3VyZmFjZUNvbnRyb2w+JiBjb250cm9sKTsKLSAgICB2b2lkIGluaXQoKTsKLSAgICAgflN1cmZhY2UoKTsKLSAgCi0gICAgZnJpZW5kIGNsYXNzIFN1cmZhY2VDb21wb3NlckNsaWVudDsKLSAgICBmcmllbmQgY2xhc3MgU3VyZmFjZUNvbnRyb2w7Ci0KLSAgICAKKyAgICAvKgorICAgICAqIEFuZHJvaWQgZnJhbWV3b3JrcyBmcmllbmRzCisgICAgICogKGV2ZW50dWFsbHkgdGhpcyBzaG91bGQgZ28gYXdheSBhbmQgYmUgcmVwbGFjZWQgYnkgcHJvcGVyIEFQSXMpCisgICAgICovCiAgICAgLy8gY2FtZXJhIGFuZCBjYW1jb3JkZXIgbmVlZCBhY2Nlc3MgdG8gdGhlIElTdXJmYWNlIGJpbmRlciBpbnRlcmZhY2UgZm9yIHByZXZpZXcKICAgICBmcmllbmQgY2xhc3MgQ2FtZXJhOwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVJlY29yZGVyOwotICAgIC8vIG1lZGlhcGxheWVyIG5lZWRzIGFjY2VzcyB0byBJU3VyZmFjZSBmb3IgZGlzcGxheQorICAgIC8vIE1lZGlhUGxheWVyIG5lZWRzIGFjY2VzcyB0byBJU3VyZmFjZSBmb3IgZGlzcGxheQogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllcjsKICAgICBmcmllbmQgY2xhc3MgSU9NWDsKICAgICAvLyB0aGlzIGlzIGp1c3QgdG8gYmUgYWJsZSB0byB3cml0ZSBzb21lIHVuaXQgdGVzdHMKICAgICBmcmllbmQgY2xhc3MgVGVzdDsKIAotICAgIHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gZ2V0Q2xpZW50KCkgY29uc3Q7Ci0gICAgc3A8SVN1cmZhY2U+IGdldElTdXJmYWNlKCkgY29uc3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTdXJmYWNlQ29tcG9zZXJDbGllbnQ7CisgICAgZnJpZW5kIGNsYXNzIFN1cmZhY2VDb250cm9sOwogCi0gICAgc3RhdHVzX3QgZ2V0QnVmZmVyTG9ja2VkKGludCBpbmRleCwgaW50IHVzYWdlKTsKLSAgIAotICAgICAgICAgICBzdGF0dXNfdCB2YWxpZGF0ZSgpIGNvbnN0OworICAgIC8vIGNhbid0IGJlIGNvcGllZAorICAgIFN1cmZhY2UmIG9wZXJhdG9yID0gKFN1cmZhY2UmIHJocyk7CisgICAgU3VyZmFjZShjb25zdCBTdXJmYWNlJiByaHMpOwogCi0gICAgaW5saW5lIGNvbnN0IEdyYXBoaWNCdWZmZXJNYXBwZXImIGdldEJ1ZmZlck1hcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1CdWZmZXJNYXBwZXI7IH0KLSAgICBpbmxpbmUgR3JhcGhpY0J1ZmZlck1hcHBlciYgZ2V0QnVmZmVyTWFwcGVyKCkgeyByZXR1cm4gbUJ1ZmZlck1hcHBlcjsgfQotICAgIAotICAgIHN0YXRpYyBpbnQgc2V0U3dhcEludGVydmFsKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGludCBpbnRlcnZhbCk7Ci0gICAgc3RhdGljIGludCBkZXF1ZXVlQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiogYnVmZmVyKTsKLSAgICBzdGF0aWMgaW50IGxvY2tCdWZmZXIoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcik7Ci0gICAgc3RhdGljIGludCBxdWV1ZUJ1ZmZlcihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKTsKLSAgICBzdGF0aWMgaW50IHF1ZXJ5KGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGludCB3aGF0LCBpbnQqIHZhbHVlKTsKLSAgICBzdGF0aWMgaW50IHBlcmZvcm0oYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgaW50IG9wZXJhdGlvbiwgLi4uKTsKKyAgICBTdXJmYWNlKGNvbnN0IHNwPFN1cmZhY2VDb250cm9sPiYgY29udHJvbCk7CisgICAgU3VyZmFjZShjb25zdCBQYXJjZWwmIGRhdGEsIGNvbnN0IHNwPElCaW5kZXI+JiByZWYpOworICAgIH5TdXJmYWNlKCk7CisKKworICAgIC8qCisgICAgICogIEFOYXRpdmVXaW5kb3cgaG9va3MKKyAgICAgKi8KKyAgICBzdGF0aWMgaW50IHNldFN3YXBJbnRlcnZhbChBTmF0aXZlV2luZG93KiB3aW5kb3csIGludCBpbnRlcnZhbCk7CisgICAgc3RhdGljIGludCBkZXF1ZXVlQnVmZmVyKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqKiBidWZmZXIpOworICAgIHN0YXRpYyBpbnQgbG9ja0J1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpOworICAgIHN0YXRpYyBpbnQgcXVldWVCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKTsKKyAgICBzdGF0aWMgaW50IHF1ZXJ5KEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50IHdoYXQsIGludCogdmFsdWUpOworICAgIHN0YXRpYyBpbnQgcGVyZm9ybShBTmF0aXZlV2luZG93KiB3aW5kb3csIGludCBvcGVyYXRpb24sIC4uLik7CiAKICAgICBpbnQgZGVxdWV1ZUJ1ZmZlcihhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCoqIGJ1ZmZlcik7CiAgICAgaW50IGxvY2tCdWZmZXIoYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcik7CkBAIC0yMDgsNDQgKzIxMCw4NiBAQAogICAgIGludCBxdWVyeShpbnQgd2hhdCwgaW50KiB2YWx1ZSk7CiAgICAgaW50IHBlcmZvcm0oaW50IG9wZXJhdGlvbiwgdmFfbGlzdCBhcmdzKTsKIAotICAgIHN0YXR1c190IGRlcXVldWVCdWZmZXIoc3A8R3JhcGhpY0J1ZmZlcj4qIGJ1ZmZlcik7Ci0KICAgICB2b2lkIGRpc3BhdGNoX3NldFVzYWdlKHZhX2xpc3QgYXJncyk7CiAgICAgaW50ICBkaXNwYXRjaF9jb25uZWN0KHZhX2xpc3QgYXJncyk7CiAgICAgaW50ICBkaXNwYXRjaF9kaXNjb25uZWN0KHZhX2xpc3QgYXJncyk7CisgICAgaW50ICBkaXNwYXRjaF9jcm9wKHZhX2xpc3QgYXJncyk7CisgICAgaW50ICBkaXNwYXRjaF9zZXRfYnVmZmVyX2NvdW50KHZhX2xpc3QgYXJncyk7CisgICAgaW50ICBkaXNwYXRjaF9zZXRfYnVmZmVyc19nZW9tZXRyeSh2YV9saXN0IGFyZ3MpOwogICAgIAogICAgIHZvaWQgc2V0VXNhZ2UodWludDMyX3QgcmVxVXNhZ2UpOwogICAgIGludCAgY29ubmVjdChpbnQgYXBpKTsKICAgICBpbnQgIGRpc2Nvbm5lY3QoaW50IGFwaSk7CisgICAgaW50ICBjcm9wKFJlY3QgY29uc3QqIHJlY3QpOworICAgIGludCAgc2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KTsKKyAgICBpbnQgIHNldEJ1ZmZlcnNHZW9tZXRyeShpbnQgdywgaW50IGgsIGludCBmb3JtYXQpOwogCi0gICAgdWludDMyX3QgZ2V0VXNhZ2UoKSBjb25zdDsKLSAgICBpbnQgICAgICBnZXRDb25uZWN0ZWRBcGkoKSBjb25zdDsKKyAgICAvKgorICAgICAqICBwcml2YXRlIHN0dWZmLi4uCisgICAgICovCisgICAgdm9pZCBpbml0KCk7CisgICAgc3RhdHVzX3QgdmFsaWRhdGUoKSBjb25zdDsKKyAgICBzcDxJU3VyZmFjZT4gZ2V0SVN1cmZhY2UoKSBjb25zdDsKKworICAgIGlubGluZSBjb25zdCBHcmFwaGljQnVmZmVyTWFwcGVyJiBnZXRCdWZmZXJNYXBwZXIoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyTWFwcGVyOyB9CisgICAgaW5saW5lIEdyYXBoaWNCdWZmZXJNYXBwZXImIGdldEJ1ZmZlck1hcHBlcigpIHsgcmV0dXJuIG1CdWZmZXJNYXBwZXI7IH0KKworICAgIHN0YXR1c190IGdldEJ1ZmZlckxvY2tlZChpbnQgaW5kZXgsCisgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHVzYWdlKTsKKyAgICBpbnQgZ2V0QnVmZmVySW5kZXgoY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJ1ZmZlcikgY29uc3Q7CisKKyAgICBpbnQgZ2V0Q29ubmVjdGVkQXBpKCkgY29uc3Q7CiAgICAgCisgICAgYm9vbCBuZWVkTmV3QnVmZmVyKGludCBidWZJZHgsCisgICAgICAgICAgICB1aW50MzJfdCAqcFdpZHRoLCB1aW50MzJfdCAqcEhlaWdodCwKKyAgICAgICAgICAgIHVpbnQzMl90ICpwRm9ybWF0LCB1aW50MzJfdCAqcFVzYWdlKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZlckluZm8geworICAgICAgICB1aW50MzJfdCBtV2lkdGg7CisgICAgICAgIHVpbnQzMl90IG1IZWlnaHQ7CisgICAgICAgIHVpbnQzMl90IG1Gb3JtYXQ7CisgICAgICAgIHVpbnQzMl90IG1Vc2FnZTsKKyAgICAgICAgbXV0YWJsZSB1aW50MzJfdCBtRGlydHk7CisgICAgICAgIGVudW0geworICAgICAgICAgICAgR0VPTUVUUlkgPSAweDAxCisgICAgICAgIH07CisgICAgcHVibGljOgorICAgICAgICBCdWZmZXJJbmZvKCk7CisgICAgICAgIHZvaWQgc2V0KHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZvcm1hdCk7CisgICAgICAgIHZvaWQgc2V0KHVpbnQzMl90IHVzYWdlKTsKKyAgICAgICAgdm9pZCBnZXQodWludDMyX3QgKnBXaWR0aCwgdWludDMyX3QgKnBIZWlnaHQsCisgICAgICAgICAgICAgICAgdWludDMyX3QgKnBGb3JtYXQsIHVpbnQzMl90ICpwVXNhZ2UpIGNvbnN0OworICAgICAgICBib29sIHZhbGlkYXRlQnVmZmVyKGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBidWZmZXIpIGNvbnN0OworICAgIH07CisKICAgICAvLyBjb25zdGFudHMKLSAgICBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+ICAgbUNsaWVudDsKKyAgICBHcmFwaGljQnVmZmVyTWFwcGVyJiAgICAgICAgbUJ1ZmZlck1hcHBlcjsKKyAgICBTdXJmYWNlQ2xpZW50JiAgICAgICAgICAgICAgbUNsaWVudDsKKyAgICBTaGFyZWRCdWZmZXJDbGllbnQqICAgICAgICAgbVNoYXJlZEJ1ZmZlckNsaWVudDsKKyAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICAgICAgbUluaXRDaGVjazsKICAgICBzcDxJU3VyZmFjZT4gICAgICAgICAgICAgICAgbVN1cmZhY2U7Ci0gICAgU3VyZmFjZUlEICAgICAgICAgICAgICAgICAgIG1Ub2tlbjsKICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgbUlkZW50aXR5OwogICAgIFBpeGVsRm9ybWF0ICAgICAgICAgICAgICAgICBtRm9ybWF0OwogICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICBtRmxhZ3M7Ci0gICAgR3JhcGhpY0J1ZmZlck1hcHBlciYgICAgICAgIG1CdWZmZXJNYXBwZXI7Ci0gICAgU2hhcmVkQnVmZmVyQ2xpZW50KiAgICAgICAgIG1TaGFyZWRCdWZmZXJDbGllbnQ7CiAKICAgICAvLyBwcm90ZWN0ZWQgYnkgbVN1cmZhY2VMb2NrCiAgICAgUmVjdCAgICAgICAgICAgICAgICAgICAgICAgIG1Td2FwUmVjdGFuZ2xlOwotICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICBtVXNhZ2U7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25uZWN0ZWQ7CisgICAgUmVjdCAgICAgICAgICAgICAgICAgICAgICAgIG1OZXh0QnVmZmVyQ3JvcDsKKyAgICBCdWZmZXJJbmZvICAgICAgICAgICAgICAgICAgbUJ1ZmZlckluZm87CiAgICAgCiAgICAgLy8gcHJvdGVjdGVkIGJ5IG1TdXJmYWNlTG9jay4gVGhlc2UgYXJlIGFsc28gdXNlZCBmcm9tIGxvY2svdW5sb2NrCiAgICAgLy8gYnV0IGluIHRoYXQgY2FzZSwgdGhleSBtdXN0IGJlIGNhbGxlZCBmb3JtIHRoZSBzYW1lIHRocmVhZC4KLSAgICBzcDxHcmFwaGljQnVmZmVyPiAgICAgICAgICAgbUJ1ZmZlcnNbMl07CiAgICAgbXV0YWJsZSBSZWdpb24gICAgICAgICAgICAgIG1EaXJ0eVJlZ2lvbjsKIAogICAgIC8vIG11c3QgYmUgdXNlZCBmcm9tIHRoZSBsb2NrL3VubG9jayB0aHJlYWQKICAgICBzcDxHcmFwaGljQnVmZmVyPiAgICAgICAgICAgbUxvY2tlZEJ1ZmZlcjsKICAgICBzcDxHcmFwaGljQnVmZmVyPiAgICAgICAgICAgbVBvc3RlZEJ1ZmZlcjsKICAgICBtdXRhYmxlIFJlZ2lvbiAgICAgICAgICAgICAgbU9sZERpcnR5UmVnaW9uOwotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBtTmVlZEZ1bGxVcGRhdGU7CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIG1SZXNlcnZlZDsKKworICAgIC8vIG9ubHkgdXNlZCBmcm9tIGRlcXVldWVCdWZmZXIoKQorICAgIFZlY3Rvcjwgc3A8R3JhcGhpY0J1ZmZlcj4gPiBtQnVmZmVyczsKIAogICAgIC8vIHF1ZXJ5KCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBkZXF1ZXVlQnVmZmVyKCkgdGhyZWFkCiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgIG1XaWR0aDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUNvbXBvc2VyQ2xpZW50LmggYi9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2VDb21wb3NlckNsaWVudC5oCmluZGV4IDlkMGYwY2JlLi44NzczZDcxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2VDb21wb3NlckNsaWVudC5oCisrKyBiL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUNvbXBvc2VyQ2xpZW50LmgKQEAgLTIyLDggKzIyLDkgQEAKIAogI2luY2x1ZGUgPGJpbmRlci9JQmluZGVyLmg+CiAKLSNpbmNsdWRlIDx1dGlscy9Tb3J0ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvU2luZ2xldG9uLmg+CisjaW5jbHVkZSA8dXRpbHMvU29ydGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgogCiAjaW5jbHVkZSA8dWkvUGl4ZWxGb3JtYXQuaD4KQEAgLTM5LDggKzQwLDI2IEBACiBjbGFzcyBTaGFyZWRDbGllbnQ7CiBjbGFzcyBJU3VyZmFjZUNvbXBvc2VyOwogY2xhc3MgRGlzcGxheUluZm87CitjbGFzcyBzdXJmYWNlX2ZsaW5nZXJfY2Jsa190OwogCi1jbGFzcyBTdXJmYWNlQ29tcG9zZXJDbGllbnQgOiB2aXJ0dWFsIHB1YmxpYyBSZWZCYXNlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgQ29tcG9zZXJTZXJ2aWNlIDogcHVibGljIFNpbmdsZXRvbjxDb21wb3NlclNlcnZpY2U+Cit7CisgICAgLy8gdGhlc2UgYXJlIGNvbnN0YW50cworICAgIHNwPElTdXJmYWNlQ29tcG9zZXI+IG1Db21wb3NlclNlcnZpY2U7CisgICAgc3A8SU1lbW9yeUhlYXA+IG1TZXJ2ZXJDYmxrTWVtb3J5OworICAgIHN1cmZhY2VfZmxpbmdlcl9jYmxrX3Qgdm9sYXRpbGUqIG1TZXJ2ZXJDYmxrOworICAgIENvbXBvc2VyU2VydmljZSgpOworICAgIGZyaWVuZCBjbGFzcyBTaW5nbGV0b248Q29tcG9zZXJTZXJ2aWNlPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3A8SVN1cmZhY2VDb21wb3Nlcj4gZ2V0Q29tcG9zZXJTZXJ2aWNlKCk7CisgICAgc3RhdGljIHN1cmZhY2VfZmxpbmdlcl9jYmxrX3QgY29uc3Qgdm9sYXRpbGUgKiBnZXRDb250cm9sQmxvY2soKTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBTdXJmYWNlQ29tcG9zZXJDbGllbnQgOiBwdWJsaWMgUmVmQmFzZQogewogcHVibGljOiAgICAKICAgICAgICAgICAgICAgICBTdXJmYWNlQ29tcG9zZXJDbGllbnQoKTsKQEAgLTUyLDEwICs3MSw2IEBACiAgICAgLy8gUmV0dXJuIHRoZSBjb25uZWN0aW9uIG9mIHRoaXMgY2xpZW50CiAgICAgc3A8SUJpbmRlcj4gY29ubmVjdGlvbigpIGNvbnN0OwogICAgIAotICAgIC8vIFJldHJpZXZlIGEgY2xpZW50IGZvciBhbiBleGlzdGluZyBjb25uZWN0aW9uLgotICAgIHN0YXRpYyBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+Ci0gICAgICAgICAgICAgICAgY2xpZW50Rm9yQ29ubmVjdGlvbihjb25zdCBzcDxJQmluZGVyPiYgY29ubik7Ci0KICAgICAvLyBGb3JjaWJseSByZW1vdmUgY29ubmVjdGlvbiBiZWZvcmUgYWxsIHJlZmVyZW5jZXMgaGF2ZSBnb25lIGF3YXkuCiAgICAgdm9pZCAgICAgICAgZGlzcG9zZSgpOwogCkBAIC0xMjMsMTMgKzEzOCw2IEBACiAgICAgc3RhdHVzX3QgbGlua1RvQ29tcG9zZXJEZWF0aChjb25zdCBzcDxJQmluZGVyOjpEZWF0aFJlY2lwaWVudD4mIHJlY2lwaWVudCwKICAgICAgICAgICAgIHZvaWQqIGNvb2tpZSA9IE5VTEwsIHVpbnQzMl90IGZsYWdzID0gMCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFN1cmZhY2U7Ci0gICAgZnJpZW5kIGNsYXNzIFN1cmZhY2VDb250cm9sOwotICAgIAotICAgIFN1cmZhY2VDb21wb3NlckNsaWVudChjb25zdCBzcDxJU3VyZmFjZUNvbXBvc2VyPiYgc20sIAotICAgICAgICAgICAgY29uc3Qgc3A8SUJpbmRlcj4mIGNvbm4pOwotCiAgICAgc3RhdHVzX3QgICAgaGlkZShTdXJmYWNlSUQgaWQpOwogICAgIHN0YXR1c190ICAgIHNob3coU3VyZmFjZUlEIGlkLCBpbnQzMl90IGxheWVyID0gLTEpOwogICAgIHN0YXR1c190ICAgIGZyZWV6ZShTdXJmYWNlSUQgaWQpOwpAQCAtMTQyLDMyICsxNTAsMjYgQEAKICAgICBzdGF0dXNfdCAgICBzZXRNYXRyaXgoU3VyZmFjZUlEIGlkLCBmbG9hdCBkc2R4LCBmbG9hdCBkdGR4LCBmbG9hdCBkc2R5LCBmbG9hdCBkdGR5KTsKICAgICBzdGF0dXNfdCAgICBzZXRQb3NpdGlvbihTdXJmYWNlSUQgaWQsIGludDMyX3QgeCwgaW50MzJfdCB5KTsKICAgICBzdGF0dXNfdCAgICBzZXRTaXplKFN1cmZhY2VJRCBpZCwgdWludDMyX3QgdywgdWludDMyX3QgaCk7Ci0gICAgCi0gICAgdm9pZCAgICAgICAgc2lnbmFsU2VydmVyKCk7Ci0KICAgICBzdGF0dXNfdCAgICBkZXN0cm95U3VyZmFjZShTdXJmYWNlSUQgc2lkKTsKIAotICAgIHZvaWQgICAgICAgIF9pbml0KGNvbnN0IHNwPElTdXJmYWNlQ29tcG9zZXI+JiBzbSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SVN1cmZhY2VGbGluZ2VyQ2xpZW50PiYgY29ubik7Ci0KLSAgICBpbmxpbmUgbGF5ZXJfc3RhdGVfdCogICBfZ2V0X3N0YXRlX2woU3VyZmFjZUlEIGlkKTsKLSAgICBsYXllcl9zdGF0ZV90KiAgICAgICAgICBfbG9ja0xheWVyU3RhdGUoU3VyZmFjZUlEIGlkKTsKLSAgICBpbmxpbmUgdm9pZCAgICAgICAgICAgICBfdW5sb2NrTGF5ZXJTdGF0ZSgpOworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgb25GaXJzdFJlZigpOworICAgIGlubGluZSBsYXllcl9zdGF0ZV90KiAgIGdldF9zdGF0ZV9sKFN1cmZhY2VJRCBpZCk7CisgICAgbGF5ZXJfc3RhdGVfdCogICAgICAgICAgbG9ja0xheWVyU3RhdGUoU3VyZmFjZUlEIGlkKTsKKyAgICBpbmxpbmUgdm9pZCAgICAgICAgICAgICB1bmxvY2tMYXllclN0YXRlKCk7CiAKICAgICBtdXRhYmxlICAgICBNdXRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTG9jazsKLSAgICAgICAgICAgICAgICBsYXllcl9zdGF0ZV90KiAgICAgICAgICAgICAgICAgICAgICBtUHJlYnVpbHRMYXllclN0YXRlOwogICAgICAgICAgICAgICAgIFNvcnRlZFZlY3RvcjxsYXllcl9zdGF0ZV90PiAgICAgICAgIG1TdGF0ZXM7CiAgICAgICAgICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRyYW5zYWN0aW9uT3BlbjsKKyAgICAgICAgICAgICAgICBsYXllcl9zdGF0ZV90KiAgICAgICAgICAgICAgICAgICAgICBtUHJlYnVpbHRMYXllclN0YXRlOwogCiAgICAgICAgICAgICAgICAgLy8gdGhlc2UgZG9uJ3QgbmVlZCB0byBiZSBwcm90ZWN0ZWQgYmVjYXVzZSB0aGV5IG5ldmVyIGNoYW5nZQogICAgICAgICAgICAgICAgIC8vIGFmdGVyIGFzc2lnbm1lbnQKICAgICAgICAgICAgICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICAgICAgbVN0YXR1czsKLSAgICAgICAgICAgICAgICBTaGFyZWRDbGllbnQqICAgICAgICAgICAgICAgbUNvbnRyb2w7Ci0gICAgICAgICAgICAgICAgc3A8SU1lbW9yeUhlYXA+ICAgICAgICAgICAgIG1Db250cm9sTWVtb3J5OwotICAgICAgICAgICAgICAgIHNwPElTdXJmYWNlRmxpbmdlckNsaWVudD4gICBtQ2xpZW50OwotICAgICAgICAgICAgICAgIHNwPElTdXJmYWNlQ29tcG9zZXI+ICAgICAgICBtU2lnbmFsU2VydmVyOworICAgICAgICAgICAgICAgIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+ICBtQ2xpZW50OwogfTsKIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAogCiAjZW5kaWYgLy8gQU5EUk9JRF9TRl9TVVJGQUNFX0NPTVBPU0VSX0NMSUVOVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3VpL0V2ZW50SHViLmggYi9pbmNsdWRlL3VpL0V2ZW50SHViLmgKaW5kZXggM2IxOGM3Ny4uZDMyMmEzNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91aS9FdmVudEh1Yi5oCisrKyBiL2luY2x1ZGUvdWkvRXZlbnRIdWIuaApAQCAtMTgsNiArMTgsNyBAQAogI2lmbmRlZiBfUlVOVElNRV9FVkVOVF9IVUJfSAogI2RlZmluZSBfUlVOVElNRV9FVkVOVF9IVUJfSAogCisjaW5jbHVkZSA8YW5kcm9pZC9pbnB1dC5oPgogI2luY2x1ZGUgPHV0aWxzL1N0cmluZzguaD4KICNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+CiAjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CkBAIC0yNyw2ICsyOCwzMSBAQAogCiAjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KIAorLyogVGhlc2UgY29uc3RhbnRzIGFyZSBub3QgZGVmaW5lZCBpbiBsaW51eC9pbnB1dC5oIGJ1dCB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBtdWx0aXRvdWNoCisgKiBpbnB1dCBwcm90b2NvbC4gKi8KKworI2RlZmluZSBBQlNfTVRfVE9VQ0hfTUFKT1IgMHgzMCAgLyogTWFqb3IgYXhpcyBvZiB0b3VjaGluZyBlbGxpcHNlICovCisjZGVmaW5lIEFCU19NVF9UT1VDSF9NSU5PUiAweDMxICAvKiBNaW5vciBheGlzIChvbWl0IGlmIGNpcmN1bGFyKSAqLworI2RlZmluZSBBQlNfTVRfV0lEVEhfTUFKT1IgMHgzMiAgLyogTWFqb3IgYXhpcyBvZiBhcHByb2FjaGluZyBlbGxpcHNlICovCisjZGVmaW5lIEFCU19NVF9XSURUSF9NSU5PUiAweDMzICAvKiBNaW5vciBheGlzIChvbWl0IGlmIGNpcmN1bGFyKSAqLworI2RlZmluZSBBQlNfTVRfT1JJRU5UQVRJT04gMHgzNCAgLyogRWxsaXBzZSBvcmllbnRhdGlvbiAqLworI2RlZmluZSBBQlNfTVRfUE9TSVRJT05fWCAweDM1ICAgLyogQ2VudGVyIFggZWxsaXBzZSBwb3NpdGlvbiAqLworI2RlZmluZSBBQlNfTVRfUE9TSVRJT05fWSAweDM2ICAgLyogQ2VudGVyIFkgZWxsaXBzZSBwb3NpdGlvbiAqLworI2RlZmluZSBBQlNfTVRfVE9PTF9UWVBFIDB4MzcgICAgLyogVHlwZSBvZiB0b3VjaGluZyBkZXZpY2UgKGZpbmdlciwgcGVuLCAuLi4pICovCisjZGVmaW5lIEFCU19NVF9CTE9CX0lEIDB4MzggICAgICAvKiBHcm91cCBhIHNldCBvZiBwYWNrZXRzIGFzIGEgYmxvYiAqLworI2RlZmluZSBBQlNfTVRfVFJBQ0tJTkdfSUQgMHgzOSAgLyogVW5pcXVlIElEIG9mIGluaXRpYXRlZCBjb250YWN0ICovCisjZGVmaW5lIEFCU19NVF9QUkVTU1VSRSAweDNhICAgICAvKiBQcmVzc3VyZSBvbiBjb250YWN0IGFyZWEgKi8KKworI2RlZmluZSBNVF9UT09MX0ZJTkdFUiAwIC8qIElkZW50aWZpZXMgYSBmaW5nZXIgKi8KKyNkZWZpbmUgTVRfVE9PTF9QRU4gMSAgICAvKiBJZGVudGlmaWVzIGEgcGVuICovCisKKyNkZWZpbmUgU1lOX01UX1JFUE9SVCAyCisKKy8qIENvbnZlbmllbmNlIGNvbnN0YW50cy4gKi8KKworI2RlZmluZSBCVE5fRklSU1QgMHgxMDAgIC8vIGZpcnN0IGJ1dHRvbiBzY2FuY29kZQorI2RlZmluZSBCVE5fTEFTVCAweDE1ZiAgIC8vIGxhc3QgYnV0dG9uIHNjYW5jb2RlCisKIHN0cnVjdCBwb2xsZmQ7CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKQEAgLTM0LDYyICs2MCwxMDEgQEAKIGNsYXNzIEtleUxheW91dE1hcDsKIAogLyoKLSAqIEdyYW5kIENlbnRyYWwgU3RhdGlvbiBmb3IgZXZlbnRzLiAgV2l0aCBhIHNpbmdsZSBjYWxsIHRvIHdhaXRFdmVudCgpCi0gKiB5b3UgY2FuIHdhaXQgZm9yOgotICogIC0gaW5wdXQgZXZlbnRzIGZyb20gdGhlIGtleXBhZCBvZiBhIHJlYWwgZGV2aWNlCi0gKiAgLSBpbnB1dCBldmVudHMgYW5kIG1ldGEtZXZlbnRzIChlLmcuICJxdWl0IikgZnJvbSB0aGUgc2ltdWxhdG9yCi0gKiAgLSBzeW50aGV0aWMgZXZlbnRzIGZyb20gdGhlIHJ1bnRpbWUgKGUuZy4gIlVSTCBmZXRjaCBjb21wbGV0ZWQiKQotICogIC0gcmVhbCBvciBmb3JnZWQgInZzeW5jIiBldmVudHMKKyAqIEdyYW5kIENlbnRyYWwgU3RhdGlvbiBmb3IgZXZlbnRzLgogICoKLSAqIERvIG5vdCBpbnN0YW50aWF0ZSB0aGlzIGNsYXNzLiAgSW5zdGVhZCwgY2FsbCBzdGFydFVwKCkuCisgKiBUaGUgZXZlbnQgaHViIGFnZ3JlZ2F0ZXMgaW5wdXQgZXZlbnRzIHJlY2VpdmVkIGFjcm9zcyBhbGwga25vd24gaW5wdXQKKyAqIGRldmljZXMgb24gdGhlIHN5c3RlbSwgaW5jbHVkaW5nIGRldmljZXMgdGhhdCBtYXkgYmUgZW11bGF0ZWQgYnkgdGhlIHNpbXVsYXRvcgorICogZW52aXJvbm1lbnQuICBJbiBhZGRpdGlvbiwgdGhlIGV2ZW50IGh1YiBnZW5lcmF0ZXMgZmFrZSBpbnB1dCBldmVudHMgdG8gaW5kaWNhdGUKKyAqIHdoZW4gZGV2aWNlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC4KKyAqCisgKiBUaGUgZXZlbnQgaHViIHByb3ZpZXMgYSBzdHJlYW0gb2YgaW5wdXQgZXZlbnRzICh2aWEgdGhlIGdldEV2ZW50IGZ1bmN0aW9uKS4KKyAqIEl0IGFsc28gc3VwcG9ydHMgcXVlcnlpbmcgdGhlIGN1cnJlbnQgYWN0dWFsIHN0YXRlIG9mIGlucHV0IGRldmljZXMgc3VjaCBhcyBpZGVudGlmeWluZworICogd2hpY2gga2V5cyBhcmUgY3VycmVudGx5IGRvd24uICBGaW5hbGx5LCB0aGUgZXZlbnQgaHViIGtlZXBzIHRyYWNrIG9mIHRoZSBjYXBhYmlsaXRpZXMgb2YKKyAqIGluZGl2aWR1YWwgaW5wdXQgZGV2aWNlcywgc3VjaCBhcyB0aGVpciBjbGFzcyBhbmQgdGhlIHNldCBvZiBrZXkgY29kZXMgdGhhdCB0aGV5IHN1cHBvcnQuCiAgKi8KLWNsYXNzIEV2ZW50SHViIDogcHVibGljIFJlZkJhc2UKLXsKK2NsYXNzIEV2ZW50SHViSW50ZXJmYWNlIDogcHVibGljIHZpcnR1YWwgUmVmQmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgRXZlbnRIdWJJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFsIH5FdmVudEh1YkludGVyZmFjZSgpIHsgfQorCiBwdWJsaWM6Ci0gICAgRXZlbnRIdWIoKTsKLSAgICAKLSAgICBzdGF0dXNfdCBlcnJvckNoZWNrKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gYml0IGZpZWxkcyBmb3IgY2xhc3NlcyBvZiBkZXZpY2VzLgotICAgIGVudW0gewotICAgICAgICBDTEFTU19LRVlCT0FSRCAgICAgID0gMHgwMDAwMDAwMSwKLSAgICAgICAgQ0xBU1NfQUxQSEFLRVkgICAgICA9IDB4MDAwMDAwMDIsCi0gICAgICAgIENMQVNTX1RPVUNIU0NSRUVOICAgPSAweDAwMDAwMDA0LAotICAgICAgICBDTEFTU19UUkFDS0JBTEwgICAgID0gMHgwMDAwMDAwOCwKLSAgICAgICAgQ0xBU1NfVE9VQ0hTQ1JFRU5fTVQ9IDB4MDAwMDAwMTAsCi0gICAgICAgIENMQVNTX0RQQUQgICAgICAgICAgPSAweDAwMDAwMDIwCi0gICAgfTsKLSAgICB1aW50MzJfdCBnZXREZXZpY2VDbGFzc2VzKGludDMyX3QgZGV2aWNlSWQpIGNvbnN0OwotICAgIAotICAgIFN0cmluZzggZ2V0RGV2aWNlTmFtZShpbnQzMl90IGRldmljZUlkKSBjb25zdDsKLSAgICAKLSAgICBpbnQgZ2V0QWJzb2x1dGVJbmZvKGludDMyX3QgZGV2aWNlSWQsIGludCBheGlzLCBpbnQgKm91dE1pblZhbHVlLAotICAgICAgICAgICAgaW50KiBvdXRNYXhWYWx1ZSwgaW50KiBvdXRGbGF0LCBpbnQqIG91dEZ1enopIGNvbnN0OwotICAgICAgICAKLSAgICBpbnQgZ2V0U3dpdGNoU3RhdGUoaW50IHN3KSBjb25zdDsKLSAgICBpbnQgZ2V0U3dpdGNoU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50IHN3KSBjb25zdDsKLSAgICAKLSAgICBpbnQgZ2V0U2NhbmNvZGVTdGF0ZShpbnQga2V5KSBjb25zdDsKLSAgICBpbnQgZ2V0U2NhbmNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQga2V5KSBjb25zdDsKLSAgICAKLSAgICBpbnQgZ2V0S2V5Y29kZVN0YXRlKGludCBrZXkpIGNvbnN0OwotICAgIGludCBnZXRLZXljb2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50IGtleSkgY29uc3Q7Ci0gICAgCi0gICAgc3RhdHVzX3Qgc2NhbmNvZGVUb0tleWNvZGUoaW50MzJfdCBkZXZpY2VJZCwgaW50IHNjYW5jb2RlLAotICAgICAgICAgICAgaW50MzJfdCogb3V0S2V5Y29kZSwgdWludDMyX3QqIG91dEZsYWdzKSBjb25zdDsKLQotICAgIC8vIGV4Y2x1ZGUgYSBwYXJ0aWN1bGFyIGRldmljZSBmcm9tIG9wZW5pbmcKLSAgICAvLyB0aGlzIGNhbiBiZSB1c2VkIHRvIGlnbm9yZSBpbnB1dCBkZXZpY2VzIGZvciBzZW5zb3JzCi0gICAgdm9pZCBhZGRFeGNsdWRlZERldmljZShjb25zdCBjaGFyKiBkZXZpY2VOYW1lKTsKLQotICAgIC8vIHNwZWNpYWwgdHlwZSBjb2RlcyB3aGVuIGRldmljZXMgYXJlIGFkZGVkL3JlbW92ZWQuCisgICAgLy8gU3ludGhldGljIHJhdyBldmVudCB0eXBlIGNvZGVzIHByb2R1Y2VkIHdoZW4gZGV2aWNlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC4KICAgICBlbnVtIHsKICAgICAgICAgREVWSUNFX0FEREVEID0gMHgxMDAwMDAwMCwKICAgICAgICAgREVWSUNFX1JFTU9WRUQgPSAweDIwMDAwMDAwCiAgICAgfTsKKworICAgIHZpcnR1YWwgdWludDMyX3QgZ2V0RGV2aWNlQ2xhc3NlcyhpbnQzMl90IGRldmljZUlkKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZzggZ2V0RGV2aWNlTmFtZShpbnQzMl90IGRldmljZUlkKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBnZXRBYnNvbHV0ZUluZm8oaW50MzJfdCBkZXZpY2VJZCwgaW50IGF4aXMsIGludCAqb3V0TWluVmFsdWUsCisgICAgICAgICAgICBpbnQqIG91dE1heFZhbHVlLCBpbnQqIG91dEZsYXQsIGludCogb3V0RnV6eikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBzY2FuY29kZVRvS2V5Y29kZShpbnQzMl90IGRldmljZUlkLCBpbnQgc2NhbmNvZGUsCisgICAgICAgICAgICBpbnQzMl90KiBvdXRLZXljb2RlLCB1aW50MzJfdCogb3V0RmxhZ3MpIGNvbnN0ID0gMDsKKworICAgIC8vIGV4Y2x1ZGUgYSBwYXJ0aWN1bGFyIGRldmljZSBmcm9tIG9wZW5pbmcKKyAgICAvLyB0aGlzIGNhbiBiZSB1c2VkIHRvIGlnbm9yZSBpbnB1dCBkZXZpY2VzIGZvciBzZW5zb3JzCisgICAgdmlydHVhbCB2b2lkIGFkZEV4Y2x1ZGVkRGV2aWNlKGNvbnN0IGNoYXIqIGRldmljZU5hbWUpID0gMDsKKworICAgIC8qCisgICAgICogV2FpdCBmb3IgdGhlIG5leHQgZXZlbnQgdG8gYmVjb21lIGF2YWlsYWJsZSBhbmQgcmV0dXJuIGl0LgorICAgICAqIEFmdGVyIHJldHVybmluZywgdGhlIEV2ZW50SHViIGhvbGRzIG9udG8gYSB3YWtlIGxvY2sgdW50aWwgdGhlIG5leHQgY2FsbCB0byBnZXRFdmVudC4KKyAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgZGV2aWNlIHdpbGwgbm90IGdvIHRvIHNsZWVwIHdoaWxlIHRoZSBldmVudCBpcyBiZWluZyBwcm9jZXNzZWQuCisgICAgICogSWYgdGhlIGRldmljZSBuZWVkcyB0byByZW1haW4gYXdha2UgbG9uZ2VyIHRoYW4gdGhhdCwgdGhlbiB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlCisgICAgICogZm9yIHRha2luZyBjYXJlIG9mIGl0IChzYXksIGJ5IHBva2luZyB0aGUgcG93ZXIgbWFuYWdlciB1c2VyIGFjdGl2aXR5IHRpbWVyKS4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXZlbnQoaW50MzJfdCogb3V0RGV2aWNlSWQsIGludDMyX3QqIG91dFR5cGUsCisgICAgICAgICAgICBpbnQzMl90KiBvdXRTY2FuY29kZSwgaW50MzJfdCogb3V0S2V5Y29kZSwgdWludDMyX3QgKm91dEZsYWdzLAorICAgICAgICAgICAgaW50MzJfdCogb3V0VmFsdWUsIG5zZWNzX3QqIG91dFdoZW4pID0gMDsKKworICAgIC8qCisgICAgICogUXVlcnkgY3VycmVudCBpbnB1dCBzdGF0ZS4KKyAgICAgKiAgIGRldmljZUlkIG1heSBiZSAtMSB0byBzZWFyY2ggZm9yIHRoZSBkZXZpY2UgYXV0b21hdGljYWxseSwgZmlsdGVyZWQgYnkgY2xhc3MuCisgICAgICogICBkZXZpY2VDbGFzc2VzIG1heSBiZSAtMSB0byBpZ25vcmUgZGV2aWNlIGNsYXNzIHdoaWxlIHNlYXJjaGluZy4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0U2NhbkNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQzMl90IGdldEtleUNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0U3dpdGNoU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzdykgY29uc3QgPSAwOworCisgICAgLyoKKyAgICAgKiBFeGFtaW5lIGtleSBpbnB1dCBkZXZpY2VzIGZvciBzcGVjaWZpYyBmcmFtZXdvcmsga2V5Y29kZSBzdXBwb3J0CisgICAgICovCisgICAgdmlydHVhbCBib29sIGhhc0tleXMoc2l6ZV90IG51bUNvZGVzLCBjb25zdCBpbnQzMl90KiBrZXlDb2RlcywKKyAgICAgICAgICAgIHVpbnQ4X3QqIG91dEZsYWdzKSBjb25zdCA9IDA7Cit9OworCitjbGFzcyBFdmVudEh1YiA6IHB1YmxpYyBFdmVudEh1YkludGVyZmFjZQoreworcHVibGljOgorICAgIEV2ZW50SHViKCk7CisKKyAgICBzdGF0dXNfdCBlcnJvckNoZWNrKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHVpbnQzMl90IGdldERldmljZUNsYXNzZXMoaW50MzJfdCBkZXZpY2VJZCkgY29uc3Q7CiAgICAgCi0gICAgLy8gZXhhbWluZSBrZXkgaW5wdXQgZGV2aWNlcyBmb3Igc3BlY2lmaWMgZnJhbWV3b3JrIGtleWNvZGUgc3VwcG9ydAotICAgIGJvb2wgaGFzS2V5cyhzaXplX3QgbnVtQ29kZXMsIGludDMyX3QqIGtleUNvZGVzLCB1aW50OF90KiBvdXRGbGFncyk7CisgICAgdmlydHVhbCBTdHJpbmc4IGdldERldmljZU5hbWUoaW50MzJfdCBkZXZpY2VJZCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBpbnQgZ2V0QWJzb2x1dGVJbmZvKGludDMyX3QgZGV2aWNlSWQsIGludCBheGlzLCBpbnQgKm91dE1pblZhbHVlLAorICAgICAgICAgICAgaW50KiBvdXRNYXhWYWx1ZSwgaW50KiBvdXRGbGF0LCBpbnQqIG91dEZ1enopIGNvbnN0OworICAgICAgICAKKyAgICB2aXJ0dWFsIHN0YXR1c190IHNjYW5jb2RlVG9LZXljb2RlKGludDMyX3QgZGV2aWNlSWQsIGludCBzY2FuY29kZSwKKyAgICAgICAgICAgIGludDMyX3QqIG91dEtleWNvZGUsIHVpbnQzMl90KiBvdXRGbGFncykgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRXhjbHVkZWREZXZpY2UoY29uc3QgY2hhciogZGV2aWNlTmFtZSk7CisKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0U2NhbkNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0S2V5Q29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qga2V5Q29kZSkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQzMl90IGdldFN3aXRjaFN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qgc3cpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGhhc0tleXMoc2l6ZV90IG51bUNvZGVzLCBjb25zdCBpbnQzMl90KiBrZXlDb2RlcywgdWludDhfdCogb3V0RmxhZ3MpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGdldEV2ZW50KGludDMyX3QqIG91dERldmljZUlkLCBpbnQzMl90KiBvdXRUeXBlLAogICAgICAgICAgICAgaW50MzJfdCogb3V0U2NhbmNvZGUsIGludDMyX3QqIG91dEtleWNvZGUsIHVpbnQzMl90ICpvdXRGbGFncywKQEAgLTEyNiw2ICsxOTEsMTAgQEAKICAgICBkZXZpY2VfdCogZ2V0RGV2aWNlKGludDMyX3QgZGV2aWNlSWQpIGNvbnN0OwogICAgIGJvb2wgaGFzS2V5Y29kZShkZXZpY2VfdCogZGV2aWNlLCBpbnQga2V5Y29kZSkgY29uc3Q7CiAgICAgCisgICAgaW50MzJfdCBnZXRTY2FuQ29kZVN0YXRlTG9ja2VkKGRldmljZV90KiBkZXZpY2UsIGludDMyX3Qgc2NhbkNvZGUpIGNvbnN0OworICAgIGludDMyX3QgZ2V0S2V5Q29kZVN0YXRlTG9ja2VkKGRldmljZV90KiBkZXZpY2UsIGludDMyX3Qga2V5Q29kZSkgY29uc3Q7CisgICAgaW50MzJfdCBnZXRTd2l0Y2hTdGF0ZUxvY2tlZChkZXZpY2VfdCogZGV2aWNlLCBpbnQzMl90IHN3KSBjb25zdDsKKwogICAgIC8vIFByb3RlY3QgYWxsIGludGVybmFsIHN0YXRlLgogICAgIG11dGFibGUgTXV0ZXggICBtTG9jazsKICAgICAKQEAgLTE1MSw3ICsyMjAsNyBAQAogCiAgICAgLy8gZGV2aWNlIGlkcyB0aGF0IHJlcG9ydCBwYXJ0aWN1bGFyIHN3aXRjaGVzLgogI2lmZGVmIEVWX1NXCi0gICAgaW50MzJfdCAgICAgICAgIG1Td2l0Y2hlc1tTV19NQVgrMV07CisgICAgaW50MzJfdCAgICAgICAgIG1Td2l0Y2hlc1tTV19NQVggKyAxXTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9GcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdy5oIGIvaW5jbHVkZS91aS9GcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdy5oCmluZGV4IDhlYTNhYjkuLjBmNDU5NGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWkvRnJhbWVidWZmZXJOYXRpdmVXaW5kb3cuaAorKysgYi9pbmNsdWRlL3VpL0ZyYW1lYnVmZmVyTmF0aXZlV2luZG93LmgKQEAgLTQzLDcgKzQzLDcgQEAKIAogY2xhc3MgRnJhbWVidWZmZXJOYXRpdmVXaW5kb3cgCiAgICAgOiBwdWJsaWMgRUdMTmF0aXZlQmFzZTwKLSAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QsIAorICAgICAgICBBTmF0aXZlV2luZG93LCAKICAgICAgICAgRnJhbWVidWZmZXJOYXRpdmVXaW5kb3csIAogICAgICAgICBMaWdodFJlZkJhc2U8RnJhbWVidWZmZXJOYXRpdmVXaW5kb3c+ID4KIHsKQEAgLTU5LDEyICs1OSwxMiBAQAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGlnaHRSZWZCYXNlPEZyYW1lYnVmZmVyTmF0aXZlV2luZG93PjsgICAgCiAgICAgfkZyYW1lYnVmZmVyTmF0aXZlV2luZG93KCk7IC8vIHRoaXMgY2xhc3MgY2Fubm90IGJlIG92ZXJsb2FkZWQKLSAgICBzdGF0aWMgaW50IHNldFN3YXBJbnRlcnZhbChhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBpbnQgaW50ZXJ2YWwpOwotICAgIHN0YXRpYyBpbnQgZGVxdWV1ZUJ1ZmZlcihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCoqIGJ1ZmZlcik7Ci0gICAgc3RhdGljIGludCBsb2NrQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpOwotICAgIHN0YXRpYyBpbnQgcXVldWVCdWZmZXIoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcik7Ci0gICAgc3RhdGljIGludCBxdWVyeShhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBpbnQgd2hhdCwgaW50KiB2YWx1ZSk7Ci0gICAgc3RhdGljIGludCBwZXJmb3JtKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGludCBvcGVyYXRpb24sIC4uLik7CisgICAgc3RhdGljIGludCBzZXRTd2FwSW50ZXJ2YWwoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgaW50ZXJ2YWwpOworICAgIHN0YXRpYyBpbnQgZGVxdWV1ZUJ1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiogYnVmZmVyKTsKKyAgICBzdGF0aWMgaW50IGxvY2tCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKTsKKyAgICBzdGF0aWMgaW50IHF1ZXVlQnVmZmVyKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcik7CisgICAgc3RhdGljIGludCBxdWVyeShBTmF0aXZlV2luZG93KiB3aW5kb3csIGludCB3aGF0LCBpbnQqIHZhbHVlKTsKKyAgICBzdGF0aWMgaW50IHBlcmZvcm0oQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgb3BlcmF0aW9uLCAuLi4pOwogICAgIAogICAgIGZyYW1lYnVmZmVyX2RldmljZV90KiBmYkRldjsKICAgICBhbGxvY19kZXZpY2VfdCogZ3JEZXY7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VpL0dyYXBoaWNCdWZmZXIuaCBiL2luY2x1ZGUvdWkvR3JhcGhpY0J1ZmZlci5oCmluZGV4IGU3MmI2YjMuLmEzZTg1YTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWkvR3JhcGhpY0J1ZmZlci5oCisrKyBiL2luY2x1ZGUvdWkvR3JhcGhpY0J1ZmZlci5oCkBAIC05MywxMCArOTMsOCBAQAogICAgIAogICAgIHZvaWQgc2V0SW5kZXgoaW50IGluZGV4KTsKICAgICBpbnQgZ2V0SW5kZXgoKSBjb25zdDsKLSAgICB2b2lkIHNldFZlcnRpY2FsU3RyaWRlKHVpbnQzMl90IHZzdHJpZGUpOwotICAgIHVpbnQzMl90IGdldFZlcnRpY2FsU3RyaWRlKCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB+R3JhcGhpY0J1ZmZlcigpOwogCiAgICAgZW51bSB7CkBAIC0xMDUsOCArMTAzLDEyIEBACiAgICAgICAgIG93bkRhdGEgICA9IDIsCiAgICAgfTsKIAotICAgIGlubGluZSBjb25zdCBHcmFwaGljQnVmZmVyTWFwcGVyJiBnZXRCdWZmZXJNYXBwZXIoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyTWFwcGVyOyB9Ci0gICAgaW5saW5lIEdyYXBoaWNCdWZmZXJNYXBwZXImIGdldEJ1ZmZlck1hcHBlcigpIHsgcmV0dXJuIG1CdWZmZXJNYXBwZXI7IH0KKyAgICBpbmxpbmUgY29uc3QgR3JhcGhpY0J1ZmZlck1hcHBlciYgZ2V0QnVmZmVyTWFwcGVyKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbUJ1ZmZlck1hcHBlcjsKKyAgICB9CisgICAgaW5saW5lIEdyYXBoaWNCdWZmZXJNYXBwZXImIGdldEJ1ZmZlck1hcHBlcigpIHsKKyAgICAgICAgcmV0dXJuIG1CdWZmZXJNYXBwZXI7CisgICAgfQogICAgIHVpbnQ4X3QgbU93bmVyOwogCiBwcml2YXRlOgpAQCAtMTM0LDcgKzEzNiw2IEBACiAKICAgICBHcmFwaGljQnVmZmVyTWFwcGVyJiBtQnVmZmVyTWFwcGVyOwogICAgIHNzaXplX3QgbUluaXRDaGVjazsKLSAgICB1aW50MzJfdCBtVlN0cmlkZTsKICAgICBpbnQgbUluZGV4OwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9HcmFwaGljQnVmZmVyQWxsb2NhdG9yLmggYi9pbmNsdWRlL3VpL0dyYXBoaWNCdWZmZXJBbGxvY2F0b3IuaAppbmRleCA3NDFkNzYzLi41NGI4MjM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VpL0dyYXBoaWNCdWZmZXJBbGxvY2F0b3IuaAorKysgYi9pbmNsdWRlL3VpL0dyYXBoaWNCdWZmZXJBbGxvY2F0b3IuaApAQCAtNzMsOSArNzMsOSBAQAogICAgIHN0cnVjdCBhbGxvY19yZWNfdCB7CiAgICAgICAgIHVpbnQzMl90IHc7CiAgICAgICAgIHVpbnQzMl90IGg7CisgICAgICAgIHVpbnQzMl90IHM7CiAgICAgICAgIFBpeGVsRm9ybWF0IGZvcm1hdDsKICAgICAgICAgdWludDMyX3QgdXNhZ2U7Ci0gICAgICAgIHZvaWQqIHZhZGRyOwogICAgICAgICBzaXplX3Qgc2l6ZTsKICAgICB9OwogICAgIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9JbnB1dC5oIGIvaW5jbHVkZS91aS9JbnB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZTBiYTA2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91aS9JbnB1dC5oCkBAIC0wLDAgKzEsMzgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBfVUlfSU5QVVRfSAorI2RlZmluZSBfVUlfSU5QVVRfSAorCisvKioKKyAqIE5hdGl2ZSBpbnB1dCBldmVudCBzdHJ1Y3R1cmVzLgorICovCisKKyNpbmNsdWRlIDxhbmRyb2lkL2lucHV0Lmg+CisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvVGltZXJzLmg+CisKKy8qCisgKiBBZGRpdGlvbmFsIHByaXZhdGUgY29uc3RhbnRzIG5vdCBkZWZpbmVkIGluIG5kay91aS9pbnB1dC5oLgorICovCitlbnVtIHsKKyAgICAvKgorICAgICAqIFByaXZhdGUgY29udHJvbCB0byBkZXRlcm1pbmUgd2hlbiBhbiBhcHAgaXMgdHJhY2tpbmcgYSBrZXkgc2VxdWVuY2UuCisgICAgICovCisgICAgS0VZX0VWRU5UX0ZMQUdfU1RBUlRfVFJBQ0tJTkcgPSAweDQwMDAwMDAwCit9OworCisvKgorICogTWF4aW11bSBudW1iZXIgb2YgcG9pbnRlcnMgc3VwcG9ydGVkIHBlciBtb3Rpb24gZXZlbnQuCisgKi8KKyNkZWZpbmUgTUFYX1BPSU5URVJTIDEwCisKKy8qCisgKiBEZWNsYXJlIGEgY29uY3JldGUgdHlwZSBmb3IgdGhlIE5ESydzIGlucHV0IGV2ZW50IGZvcndhcmQgZGVjbGFyYXRpb24uCisgKi8KK3N0cnVjdCBBSW5wdXRFdmVudCB7IH07CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLyoKKyAqIEEgcmF3IGV2ZW50IGFzIHJldHJpZXZlZCBmcm9tIHRoZSBFdmVudEh1Yi4KKyAqLworc3RydWN0IFJhd0V2ZW50IHsKKyAgICBuc2Vjc190IHdoZW47CisgICAgaW50MzJfdCBkZXZpY2VJZDsKKyAgICBpbnQzMl90IHR5cGU7CisgICAgaW50MzJfdCBzY2FuQ29kZTsKKyAgICBpbnQzMl90IGtleUNvZGU7CisgICAgaW50MzJfdCB2YWx1ZTsKKyAgICB1aW50MzJfdCBmbGFnczsKK307CisKKy8qCisgKiBGbGFncyB0aGF0IGZsb3cgYWxvbmdzaWRlIGV2ZW50cyBpbiB0aGUgaW5wdXQgZGlzcGF0Y2ggc3lzdGVtIHRvIGhlbHAgd2l0aCBjZXJ0YWluCisgKiBwb2xpY3kgZGVjaXNpb25zIHN1Y2ggYXMgd2FraW5nIGZyb20gZGV2aWNlIHNsZWVwLgorICovCitlbnVtIHsKKyAgICAvKiBUaGVzZSBmbGFncyBvcmlnaW5hdGUgaW4gUmF3RXZlbnRzIGFuZCBhcmUgZ2VuZXJhbGx5IHNldCBpbiB0aGUga2V5IG1hcC4gKi8KKworICAgIFBPTElDWV9GTEFHX1dBS0UgPSAweDAwMDAwMDAxLAorICAgIFBPTElDWV9GTEFHX1dBS0VfRFJPUFBFRCA9IDB4MDAwMDAwMDIsCisgICAgUE9MSUNZX0ZMQUdfU0hJRlQgPSAweDAwMDAwMDA0LAorICAgIFBPTElDWV9GTEFHX0NBUFNfTE9DSyA9IDB4MDAwMDAwMDgsCisgICAgUE9MSUNZX0ZMQUdfQUxUID0gMHgwMDAwMDAxMCwKKyAgICBQT0xJQ1lfRkxBR19BTFRfR1IgPSAweDAwMDAwMDIwLAorICAgIFBPTElDWV9GTEFHX01FTlUgPSAweDAwMDAwMDQwLAorICAgIFBPTElDWV9GTEFHX0xBVU5DSEVSID0gMHgwMDAwMDA4MCwKKworICAgIFBPTElDWV9GTEFHX1JBV19NQVNLID0gMHgwMDAwZmZmZiwKKworICAgIC8qIFRoZXNlIGZsYWdzIGFyZSBzZXQgYnkgdGhlIGlucHV0IHJlYWRlciBwb2xpY3kgYXMgaXQgaW50ZXJjZXB0cyBlYWNoIGV2ZW50LiAqLworCisgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIHNjcmVlbiB3YXMgb2ZmIHdoZW4gdGhlIGV2ZW50IHdhcyByZWNlaXZlZCBhbmQgdGhlIGV2ZW50CisgICAgLy8gc2hvdWxkIHdha2UgdGhlIGRldmljZS4KKyAgICBQT0xJQ1lfRkxBR19XT0tFX0hFUkUgPSAweDEwMDAwMDAwLAorCisgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIHNjcmVlbiB3YXMgZGltIHdoZW4gdGhlIGV2ZW50IHdhcyByZWNlaXZlZCBhbmQgdGhlIGV2ZW50CisgICAgLy8gc2hvdWxkIGJyaWdodGVuIHRoZSBkZXZpY2UuCisgICAgUE9MSUNZX0ZMQUdfQlJJR0hUX0hFUkUgPSAweDIwMDAwMDAwLAorfTsKKworLyoKKyAqIERlc2NyaWJlcyB0aGUgYmFzaWMgY29uZmlndXJhdGlvbiBvZiBpbnB1dCBkZXZpY2VzIHRoYXQgYXJlIHByZXNlbnQuCisgKi8KK3N0cnVjdCBJbnB1dENvbmZpZ3VyYXRpb24geworICAgIGVudW0geworICAgICAgICBUT1VDSFNDUkVFTl9VTkRFRklORUQgPSAwLAorICAgICAgICBUT1VDSFNDUkVFTl9OT1RPVUNIID0gMSwKKyAgICAgICAgVE9VQ0hTQ1JFRU5fU1RZTFVTID0gMiwKKyAgICAgICAgVE9VQ0hTQ1JFRU5fRklOR0VSID0gMworICAgIH07CisKKyAgICBlbnVtIHsKKyAgICAgICAgS0VZQk9BUkRfVU5ERUZJTkVEID0gMCwKKyAgICAgICAgS0VZQk9BUkRfTk9LRVlTID0gMSwKKyAgICAgICAgS0VZQk9BUkRfUVdFUlRZID0gMiwKKyAgICAgICAgS0VZQk9BUkRfMTJLRVkgPSAzCisgICAgfTsKKworICAgIGVudW0geworICAgICAgICBOQVZJR0FUSU9OX1VOREVGSU5FRCA9IDAsCisgICAgICAgIE5BVklHQVRJT05fTk9OQVYgPSAxLAorICAgICAgICBOQVZJR0FUSU9OX0RQQUQgPSAyLAorICAgICAgICBOQVZJR0FUSU9OX1RSQUNLQkFMTCA9IDMsCisgICAgICAgIE5BVklHQVRJT05fV0hFRUwgPSA0CisgICAgfTsKKworICAgIGludDMyX3QgdG91Y2hTY3JlZW47CisgICAgaW50MzJfdCBrZXlib2FyZDsKKyAgICBpbnQzMl90IG5hdmlnYXRpb247Cit9OworCisvKgorICogUG9pbnRlciBjb29yZGluYXRlIGRhdGEuCisgKi8KK3N0cnVjdCBQb2ludGVyQ29vcmRzIHsKKyAgICBmbG9hdCB4OworICAgIGZsb2F0IHk7CisgICAgZmxvYXQgcHJlc3N1cmU7CisgICAgZmxvYXQgc2l6ZTsKK307CisKKy8qCisgKiBJbnB1dCBldmVudHMuCisgKi8KK2NsYXNzIElucHV0RXZlbnQgOiBwdWJsaWMgQUlucHV0RXZlbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfklucHV0RXZlbnQoKSB7IH0KKworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRUeXBlKCkgY29uc3QgPSAwOworCisgICAgaW5saW5lIGludDMyX3QgZ2V0RGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtRGV2aWNlSWQ7IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldE5hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1OYXR1cmU7IH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUpOworCitwcml2YXRlOgorICAgIGludDMyX3QgbURldmljZUlkOworICAgIGludDMyX3QgbU5hdHVyZTsKK307CisKKy8qCisgKiBLZXkgZXZlbnRzLgorICovCitjbGFzcyBLZXlFdmVudCA6IHB1YmxpYyBJbnB1dEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5LZXlFdmVudCgpIHsgfQorCisgICAgdmlydHVhbCBpbnQzMl90IGdldFR5cGUoKSBjb25zdCB7IHJldHVybiBJTlBVVF9FVkVOVF9UWVBFX0tFWTsgfQorCisgICAgaW5saW5lIGludDMyX3QgZ2V0QWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbUFjdGlvbjsgfQorCisgICAgaW5saW5lIGludDMyX3QgZ2V0RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtRmxhZ3M7IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldEtleUNvZGUoKSBjb25zdCB7IHJldHVybiBtS2V5Q29kZTsgfQorCisgICAgaW5saW5lIGludDMyX3QgZ2V0U2NhbkNvZGUoKSBjb25zdCB7IHJldHVybiBtU2NhbkNvZGU7IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldE1ldGFTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1NZXRhU3RhdGU7IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldFJlcGVhdENvdW50KCkgY29uc3QgeyByZXR1cm4gbVJlcGVhdENvdW50OyB9CisKKyAgICBpbmxpbmUgbnNlY3NfdCBnZXREb3duVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1Eb3duVGltZTsgfQorCisgICAgaW5saW5lIG5zZWNzX3QgZ2V0RXZlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbUV2ZW50VGltZTsgfQorCisgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBldmVudCBtYXkgaGF2ZSBhIGRlZmF1bHQgYWN0aW9uIGltcGxlbWVudGF0aW9uLgorICAgIHN0YXRpYyBib29sIGhhc0RlZmF1bHRBY3Rpb24oaW50MzJfdCBrZXlDb2RlKTsKKyAgICBib29sIGhhc0RlZmF1bHRBY3Rpb24oKSBjb25zdDsKKworICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgZXZlbnQgcmVwcmVzZW50cyBhIHN5c3RlbSBrZXkuCisgICAgc3RhdGljIGJvb2wgaXNTeXN0ZW1LZXkoaW50MzJfdCBrZXlDb2RlKTsKKyAgICBib29sIGlzU3lzdGVtS2V5KCkgY29uc3Q7CisgICAgCisgICAgdm9pZCBpbml0aWFsaXplKAorICAgICAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgICAgIGludDMyX3QgbmF0dXJlLAorICAgICAgICAgICAgaW50MzJfdCBhY3Rpb24sCisgICAgICAgICAgICBpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAgaW50MzJfdCBrZXlDb2RlLAorICAgICAgICAgICAgaW50MzJfdCBzY2FuQ29kZSwKKyAgICAgICAgICAgIGludDMyX3QgbWV0YVN0YXRlLAorICAgICAgICAgICAgaW50MzJfdCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgIG5zZWNzX3QgZG93blRpbWUsCisgICAgICAgICAgICBuc2Vjc190IGV2ZW50VGltZSk7CisKK3ByaXZhdGU6CisgICAgaW50MzJfdCBtQWN0aW9uOworICAgIGludDMyX3QgbUZsYWdzOworICAgIGludDMyX3QgbUtleUNvZGU7CisgICAgaW50MzJfdCBtU2NhbkNvZGU7CisgICAgaW50MzJfdCBtTWV0YVN0YXRlOworICAgIGludDMyX3QgbVJlcGVhdENvdW50OworICAgIG5zZWNzX3QgbURvd25UaW1lOworICAgIG5zZWNzX3QgbUV2ZW50VGltZTsKK307CisKKy8qCisgKiBNb3Rpb24gZXZlbnRzLgorICovCitjbGFzcyBNb3Rpb25FdmVudCA6IHB1YmxpYyBJbnB1dEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb3Rpb25FdmVudCgpIHsgfQorCisgICAgdmlydHVhbCBpbnQzMl90IGdldFR5cGUoKSBjb25zdCB7IHJldHVybiBJTlBVVF9FVkVOVF9UWVBFX01PVElPTjsgfQorCisgICAgaW5saW5lIGludDMyX3QgZ2V0QWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbUFjdGlvbjsgfQorCisgICAgaW5saW5lIGludDMyX3QgZ2V0RWRnZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbUVkZ2VGbGFnczsgfQorCisgICAgaW5saW5lIGludDMyX3QgZ2V0TWV0YVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbU1ldGFTdGF0ZTsgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFhPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtWE9mZnNldDsgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtWU9mZnNldDsgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFhQcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtWFByZWNpc2lvbjsgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFlQcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtWVByZWNpc2lvbjsgfQorCisgICAgaW5saW5lIG5zZWNzX3QgZ2V0RG93blRpbWUoKSBjb25zdCB7IHJldHVybiBtRG93blRpbWU7IH0KKworICAgIGlubGluZSBzaXplX3QgZ2V0UG9pbnRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbVBvaW50ZXJJZHMuc2l6ZSgpOyB9CisKKyAgICBpbmxpbmUgaW50MzJfdCBnZXRQb2ludGVySWQoc2l6ZV90IHBvaW50ZXJJbmRleCkgY29uc3QgeyByZXR1cm4gbVBvaW50ZXJJZHNbcG9pbnRlckluZGV4XTsgfQorCisgICAgaW5saW5lIG5zZWNzX3QgZ2V0RXZlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZUV2ZW50VGltZXNbZ2V0SGlzdG9yeVNpemUoKV07IH0KKworICAgIGlubGluZSBmbG9hdCBnZXRSYXdYKHNpemVfdCBwb2ludGVySW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRQb2ludGVyQ29vcmRzKHBvaW50ZXJJbmRleCkueDsKKyAgICB9CisKKyAgICBpbmxpbmUgZmxvYXQgZ2V0UmF3WShzaXplX3QgcG9pbnRlckluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBnZXRDdXJyZW50UG9pbnRlckNvb3Jkcyhwb2ludGVySW5kZXgpLnk7CisgICAgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFgoc2l6ZV90IHBvaW50ZXJJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gZ2V0UmF3WChwb2ludGVySW5kZXgpICsgbVhPZmZzZXQ7CisgICAgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFkoc2l6ZV90IHBvaW50ZXJJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gZ2V0UmF3WShwb2ludGVySW5kZXgpICsgbVlPZmZzZXQ7CisgICAgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFByZXNzdXJlKHNpemVfdCBwb2ludGVySW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRQb2ludGVyQ29vcmRzKHBvaW50ZXJJbmRleCkucHJlc3N1cmU7CisgICAgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFNpemUoc2l6ZV90IHBvaW50ZXJJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFBvaW50ZXJDb29yZHMocG9pbnRlckluZGV4KS5zaXplOworICAgIH0KKworICAgIGlubGluZSBzaXplX3QgZ2V0SGlzdG9yeVNpemUoKSBjb25zdCB7IHJldHVybiBtU2FtcGxlRXZlbnRUaW1lcy5zaXplKCkgLSAxOyB9CisKKyAgICBpbmxpbmUgbnNlY3NfdCBnZXRIaXN0b3JpY2FsRXZlbnRUaW1lKHNpemVfdCBoaXN0b3JpY2FsSW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1TYW1wbGVFdmVudFRpbWVzW2hpc3RvcmljYWxJbmRleF07CisgICAgfQorCisgICAgaW5saW5lIGZsb2F0IGdldEhpc3RvcmljYWxSYXdYKHNpemVfdCBwb2ludGVySW5kZXgsIHNpemVfdCBoaXN0b3JpY2FsSW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldEhpc3RvcmljYWxQb2ludGVyQ29vcmRzKHBvaW50ZXJJbmRleCwgaGlzdG9yaWNhbEluZGV4KS54OworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRIaXN0b3JpY2FsUmF3WShzaXplX3QgcG9pbnRlckluZGV4LCBzaXplX3QgaGlzdG9yaWNhbEluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBnZXRIaXN0b3JpY2FsUG9pbnRlckNvb3Jkcyhwb2ludGVySW5kZXgsIGhpc3RvcmljYWxJbmRleCkueTsKKyAgICB9CisKKyAgICBpbmxpbmUgZmxvYXQgZ2V0SGlzdG9yaWNhbFgoc2l6ZV90IHBvaW50ZXJJbmRleCwgc2l6ZV90IGhpc3RvcmljYWxJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gZ2V0SGlzdG9yaWNhbFJhd1gocG9pbnRlckluZGV4LCBoaXN0b3JpY2FsSW5kZXgpICsgbVhPZmZzZXQ7CisgICAgfQorCisgICAgaW5saW5lIGZsb2F0IGdldEhpc3RvcmljYWxZKHNpemVfdCBwb2ludGVySW5kZXgsIHNpemVfdCBoaXN0b3JpY2FsSW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldEhpc3RvcmljYWxSYXdZKHBvaW50ZXJJbmRleCwgaGlzdG9yaWNhbEluZGV4KSArIG1ZT2Zmc2V0OworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRIaXN0b3JpY2FsUHJlc3N1cmUoc2l6ZV90IHBvaW50ZXJJbmRleCwgc2l6ZV90IGhpc3RvcmljYWxJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gZ2V0SGlzdG9yaWNhbFBvaW50ZXJDb29yZHMocG9pbnRlckluZGV4LCBoaXN0b3JpY2FsSW5kZXgpLnByZXNzdXJlOworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRIaXN0b3JpY2FsU2l6ZShzaXplX3QgcG9pbnRlckluZGV4LCBzaXplX3QgaGlzdG9yaWNhbEluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBnZXRIaXN0b3JpY2FsUG9pbnRlckNvb3Jkcyhwb2ludGVySW5kZXgsIGhpc3RvcmljYWxJbmRleCkuc2l6ZTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemUoCisgICAgICAgICAgICBpbnQzMl90IGRldmljZUlkLAorICAgICAgICAgICAgaW50MzJfdCBuYXR1cmUsCisgICAgICAgICAgICBpbnQzMl90IGFjdGlvbiwKKyAgICAgICAgICAgIGludDMyX3QgZWRnZUZsYWdzLAorICAgICAgICAgICAgaW50MzJfdCBtZXRhU3RhdGUsCisgICAgICAgICAgICBmbG9hdCB4T2Zmc2V0LAorICAgICAgICAgICAgZmxvYXQgeU9mZnNldCwKKyAgICAgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sCisgICAgICAgICAgICBmbG9hdCB5UHJlY2lzaW9uLAorICAgICAgICAgICAgbnNlY3NfdCBkb3duVGltZSwKKyAgICAgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lLAorICAgICAgICAgICAgc2l6ZV90IHBvaW50ZXJDb3VudCwKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3QqIHBvaW50ZXJJZHMsCisgICAgICAgICAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKTsKKworICAgIHZvaWQgYWRkU2FtcGxlKAorICAgICAgICAgICAgbnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgICAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKTsKKworICAgIHZvaWQgb2Zmc2V0TG9jYXRpb24oZmxvYXQgeE9mZnNldCwgZmxvYXQgeU9mZnNldCk7CisKKyAgICAvLyBMb3ctbGV2ZWwgYWNjZXNzb3JzLgorICAgIGlubGluZSBjb25zdCBpbnQzMl90KiBnZXRQb2ludGVySWRzKCkgY29uc3QgeyByZXR1cm4gbVBvaW50ZXJJZHMuYXJyYXkoKTsgfQorICAgIGlubGluZSBjb25zdCBuc2Vjc190KiBnZXRTYW1wbGVFdmVudFRpbWVzKCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZUV2ZW50VGltZXMuYXJyYXkoKTsgfQorICAgIGlubGluZSBjb25zdCBQb2ludGVyQ29vcmRzKiBnZXRTYW1wbGVQb2ludGVyQ29vcmRzKCkgY29uc3QgeworICAgICAgICAgICAgcmV0dXJuIG1TYW1wbGVQb2ludGVyQ29vcmRzLmFycmF5KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGludDMyX3QgbUFjdGlvbjsKKyAgICBpbnQzMl90IG1FZGdlRmxhZ3M7CisgICAgaW50MzJfdCBtTWV0YVN0YXRlOworICAgIGZsb2F0IG1YT2Zmc2V0OworICAgIGZsb2F0IG1ZT2Zmc2V0OworICAgIGZsb2F0IG1YUHJlY2lzaW9uOworICAgIGZsb2F0IG1ZUHJlY2lzaW9uOworICAgIG5zZWNzX3QgbURvd25UaW1lOworICAgIFZlY3RvcjxpbnQzMl90PiBtUG9pbnRlcklkczsKKyAgICBWZWN0b3I8bnNlY3NfdD4gbVNhbXBsZUV2ZW50VGltZXM7CisgICAgVmVjdG9yPFBvaW50ZXJDb29yZHM+IG1TYW1wbGVQb2ludGVyQ29vcmRzOworCisgICAgaW5saW5lIGNvbnN0IFBvaW50ZXJDb29yZHMmIGdldEN1cnJlbnRQb2ludGVyQ29vcmRzKHNpemVfdCBwb2ludGVySW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1TYW1wbGVQb2ludGVyQ29vcmRzW2dldEhpc3RvcnlTaXplKCkgKiBnZXRQb2ludGVyQ291bnQoKSArIHBvaW50ZXJJbmRleF07CisgICAgfQorCisgICAgaW5saW5lIGNvbnN0IFBvaW50ZXJDb29yZHMmIGdldEhpc3RvcmljYWxQb2ludGVyQ29vcmRzKAorICAgICAgICAgICAgc2l6ZV90IHBvaW50ZXJJbmRleCwgc2l6ZV90IGhpc3RvcmljYWxJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gbVNhbXBsZVBvaW50ZXJDb29yZHNbaGlzdG9yaWNhbEluZGV4ICogZ2V0UG9pbnRlckNvdW50KCkgKyBwb2ludGVySW5kZXhdOworICAgIH0KK307CisKKy8qCisgKiBJbnB1dCBldmVudCBmYWN0b3J5LgorICovCitjbGFzcyBJbnB1dEV2ZW50RmFjdG9yeUludGVyZmFjZSB7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+SW5wdXRFdmVudEZhY3RvcnlJbnRlcmZhY2UoKSB7IH0KKworcHVibGljOgorICAgIElucHV0RXZlbnRGYWN0b3J5SW50ZXJmYWNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIEtleUV2ZW50KiBjcmVhdGVLZXlFdmVudCgpID0gMDsKKyAgICB2aXJ0dWFsIE1vdGlvbkV2ZW50KiBjcmVhdGVNb3Rpb25FdmVudCgpID0gMDsKK307CisKKy8qCisgKiBBIHNpbXBsZSBpbnB1dCBldmVudCBmYWN0b3J5IGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyBhIHNpbmdsZSBwcmVhbGxvY2F0ZWQgaW5zdGFuY2UKKyAqIG9mIGVhY2ggdHlwZSBvZiBpbnB1dCBldmVudCB0aGF0IGFyZSByZXVzZWQgZm9yIGVhY2ggcmVxdWVzdC4KKyAqLworY2xhc3MgUHJlYWxsb2NhdGVkSW5wdXRFdmVudEZhY3RvcnkgOiBwdWJsaWMgSW5wdXRFdmVudEZhY3RvcnlJbnRlcmZhY2UgeworcHVibGljOgorICAgIFByZWFsbG9jYXRlZElucHV0RXZlbnRGYWN0b3J5KCkgeyB9CisgICAgdmlydHVhbCB+UHJlYWxsb2NhdGVkSW5wdXRFdmVudEZhY3RvcnkoKSB7IH0KKworICAgIHZpcnR1YWwgS2V5RXZlbnQqIGNyZWF0ZUtleUV2ZW50KCkgeyByZXR1cm4gJiBtS2V5RXZlbnQ7IH0KKyAgICB2aXJ0dWFsIE1vdGlvbkV2ZW50KiBjcmVhdGVNb3Rpb25FdmVudCgpIHsgcmV0dXJuICYgbU1vdGlvbkV2ZW50OyB9CisKK3ByaXZhdGU6CisgICAgS2V5RXZlbnQgbUtleUV2ZW50OworICAgIE1vdGlvbkV2ZW50IG1Nb3Rpb25FdmVudDsKK307CisKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gX1VJX0lOUFVUX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvSW5wdXREaXNwYXRjaGVyLmggYi9pbmNsdWRlL3VpL0lucHV0RGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViOGY4MjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3VpL0lucHV0RGlzcGF0Y2hlci5oCkBAIC0wLDAgKzEsNjQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBfVUlfSU5QVVRfRElTUEFUQ0hFUl9ICisjZGVmaW5lIF9VSV9JTlBVVF9ESVNQQVRDSEVSX0gKKworI2luY2x1ZGUgPHVpL0lucHV0Lmg+CisjaW5jbHVkZSA8dWkvSW5wdXRUcmFuc3BvcnQuaD4KKyNpbmNsdWRlIDx1dGlscy9LZXllZFZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKyNpbmNsdWRlIDx1dGlscy9UaW1lcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgorI2luY2x1ZGUgPHV0aWxzL1BvbGxMb29wLmg+CisjaW5jbHVkZSA8dXRpbHMvUG9vbC5oPgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvKgorICogQ29uc3RhbnRzIHVzZWQgdG8gcmVwb3J0IHRoZSBvdXRjb21lIG9mIGlucHV0IGV2ZW50IGluamVjdGlvbi4KKyAqLworZW51bSB7CisgICAgLyogKElOVEVSTkFMIFVTRSBPTkxZKSBTcGVjaWZpZXMgdGhhdCBpbmplY3Rpb24gaXMgcGVuZGluZyBhbmQgaXRzIG91dGNvbWUgaXMgdW5rbm93bi4gKi8KKyAgICBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVORElORyA9IC0xLAorCisgICAgLyogSW5qZWN0aW9uIHN1Y2NlZWRlZC4gKi8KKyAgICBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEID0gMCwKKworICAgIC8qIEluamVjdGlvbiBmYWlsZWQgYmVjYXVzZSB0aGUgaW5qZWN0b3IgZGlkIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gaW5qZWN0CisgICAgICogaW50byB0aGUgYXBwbGljYXRpb24gd2l0aCBpbnB1dCBmb2N1cy4gKi8KKyAgICBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQgPSAxLAorCisgICAgLyogSW5qZWN0aW9uIGZhaWxlZCBiZWNhdXNlIHRoZXJlIHdlcmUgbm8gYXZhaWxhYmxlIGlucHV0IHRhcmdldHMuICovCisgICAgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRCA9IDIsCisKKyAgICAvKiBJbmplY3Rpb24gZmFpbGVkIGR1ZSB0byBhIHRpbWVvdXQuICovCisgICAgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1RJTUVEX09VVCA9IDMKK307CisKKworLyoKKyAqIEFuIGlucHV0IHRhcmdldCBzcGVjaWZpZXMgaG93IGFuIGlucHV0IGV2ZW50IGlzIHRvIGJlIGRpc3BhdGNoZWQgdG8gYSBwYXJ0aWN1bGFyIHdpbmRvdworICogaW5jbHVkaW5nIHRoZSB3aW5kb3cncyBpbnB1dCBjaGFubmVsLCBjb250cm9sIGZsYWdzLCBhIHRpbWVvdXQsIGFuZCBhbiBYIC8gWSBvZmZzZXQgdG8KKyAqIGJlIGFkZGVkIHRvIGlucHV0IGV2ZW50IGNvb3JkaW5hdGVzIHRvIGNvbXBlbnNhdGUgZm9yIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUKKyAqIHdpbmRvdyBhcmVhLgorICovCitzdHJ1Y3QgSW5wdXRUYXJnZXQgeworICAgIGVudW0geworICAgICAgICAvKiBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgc3Vic2VxdWVudCBldmVudCBkZWxpdmVyeSBzaG91bGQgYmUgaGVsZCB1bnRpbCB0aGUKKyAgICAgICAgICogY3VycmVudCBldmVudCBpcyBkZWxpdmVyZWQgdG8gdGhpcyB0YXJnZXQgb3IgYSB0aW1lb3V0IG9jY3Vycy4gKi8KKyAgICAgICAgRkxBR19TWU5DID0gMHgwMSwKKworICAgICAgICAvKiBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgYSBNb3Rpb25FdmVudCB3aXRoIEFDVElPTl9ET1dOIGZhbGxzIG91dHNpZGUgb2YgdGhlIGFyZWEgb2YKKyAgICAgICAgICogdGhpcyB0YXJnZXQgYW5kIHNvIHNob3VsZCBpbnN0ZWFkIGJlIGRlbGl2ZXJlZCBhcyBhbiBBQ1RJT05fT1VUU0lERSB0byB0aGlzIHRhcmdldC4gKi8KKyAgICAgICAgRkxBR19PVVRTSURFID0gMHgwMiwKKworICAgICAgICAvKiBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgYSBLZXlFdmVudCBvciBNb3Rpb25FdmVudCBpcyBiZWluZyBjYW5jZWxlZC4KKyAgICAgICAgICogSW4gdGhlIGNhc2Ugb2YgYSBrZXkgZXZlbnQsIGl0IHNob3VsZCBiZSBkZWxpdmVyZWQgd2l0aCBLZXlFdmVudC5GTEFHX0NBTkNFTEVEIHNldC4KKyAgICAgICAgICogSW4gdGhlIGNhc2Ugb2YgYSBtb3Rpb24gZXZlbnQsIGl0IHNob3VsZCBiZSBkZWxpdmVyZWQgYXMgTW90aW9uRXZlbnQuQUNUSU9OX0NBTkNFTC4gKi8KKyAgICAgICAgRkxBR19DQU5DRUwgPSAweDA0CisgICAgfTsKKworICAgIC8vIFRoZSBpbnB1dCBjaGFubmVsIHRvIGJlIHRhcmdldGVkLgorICAgIHNwPElucHV0Q2hhbm5lbD4gaW5wdXRDaGFubmVsOworCisgICAgLy8gRmxhZ3MgZm9yIHRoZSBpbnB1dCB0YXJnZXQuCisgICAgaW50MzJfdCBmbGFnczsKKworICAgIC8vIFRoZSB0aW1lb3V0IGZvciBldmVudCBkZWxpdmVyeSB0byB0aGlzIHRhcmdldCBpbiBuYW5vc2Vjb25kcy4gIE9yIC0xIGlmIG5vbmUuCisgICAgbnNlY3NfdCB0aW1lb3V0OworCisgICAgLy8gVGhlIHggYW5kIHkgb2Zmc2V0IHRvIGFkZCB0byBhIE1vdGlvbkV2ZW50IGFzIGl0IGlzIGRlbGl2ZXJlZC4KKyAgICAvLyAoaWdub3JlZCBmb3IgS2V5RXZlbnRzKQorICAgIGZsb2F0IHhPZmZzZXQsIHlPZmZzZXQ7Cit9OworCisKKy8qCisgKiBJbnB1dCBkaXNwYXRjaGVyIHBvbGljeSBpbnRlcmZhY2UuCisgKgorICogVGhlIGlucHV0IHJlYWRlciBwb2xpY3kgaXMgdXNlZCBieSB0aGUgaW5wdXQgcmVhZGVyIHRvIGludGVyYWN0IHdpdGggdGhlIFdpbmRvdyBNYW5hZ2VyCisgKiBhbmQgb3RoZXIgc3lzdGVtIGNvbXBvbmVudHMuCisgKgorICogVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBpcyBwYXJ0aWFsbHkgc3VwcG9ydGVkIGJ5IGNhbGxiYWNrcyBpbnRvIHRoZSBEVk0KKyAqIHZpYSBKTkkuICBUaGlzIGludGVyZmFjZSBpcyBhbHNvIG1vY2tlZCBpbiB0aGUgdW5pdCB0ZXN0cy4KKyAqLworY2xhc3MgSW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlIDogcHVibGljIHZpcnR1YWwgUmVmQmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgSW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlKCkgeyB9CisgICAgdmlydHVhbCB+SW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlKCkgeyB9CisKK3B1YmxpYzoKKyAgICAvKiBOb3RpZmllcyB0aGUgc3lzdGVtIHRoYXQgYSBjb25maWd1cmF0aW9uIGNoYW5nZSBoYXMgb2NjdXJyZWQuICovCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5zZWNzX3Qgd2hlbikgPSAwOworCisgICAgLyogTm90aWZpZXMgdGhlIHN5c3RlbSB0aGF0IGFuIGlucHV0IGNoYW5uZWwgaXMgdW5yZWNvdmVyYWJseSBicm9rZW4uICovCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlucHV0Q2hhbm5lbEJyb2tlbihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpID0gMDsKKworICAgIC8qIE5vdGlmaWVzIHRoZSBzeXN0ZW0gdGhhdCBhbiBpbnB1dCBjaGFubmVsIGlzIG5vdCByZXNwb25kaW5nLgorICAgICAqIFJldHVybnMgdHJ1ZSBhbmQgYSBuZXcgdGltZW91dCB2YWx1ZSBpZiB0aGUgZGlzcGF0Y2hlciBzaG91bGQga2VlcCB3YWl0aW5nLgorICAgICAqIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLiAqLworICAgIHZpcnR1YWwgYm9vbCBub3RpZnlJbnB1dENoYW5uZWxBTlIoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsLAorICAgICAgICAgICAgbnNlY3NfdCYgb3V0TmV3VGltZW91dCkgPSAwOworCisgICAgLyogTm90aWZpZXMgdGhlIHN5c3RlbSB0aGF0IGFuIGlucHV0IGNoYW5uZWwgcmVjb3ZlcmVkIGZyb20gQU5SLiAqLworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5SKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgPSAwOworCisgICAgLyogR2V0cyB0aGUga2V5IHJlcGVhdCB0aW1lb3V0IG9yIC0xIGlmIGF1dG9tYXRpYyBrZXkgcmVwZWF0aW5nIGlzIGRpc2FibGVkLiAqLworICAgIHZpcnR1YWwgbnNlY3NfdCBnZXRLZXlSZXBlYXRUaW1lb3V0KCkgPSAwOworCisgICAgLyogV2FpdHMgZm9yIGtleSBldmVudCBpbnB1dCB0YXJnZXRzIHRvIGJlY29tZSBhdmFpbGFibGUuCisgICAgICogSWYgdGhlIGV2ZW50IGlzIGJlaW5nIGluamVjdGVkLCBpbmplY3RvclBpZCBhbmQgaW5qZWN0b3JVaWQgc2hvdWxkIHNwZWNpZnkgdGhlCisgICAgICogcHJvY2VzcyBpZCBhbmQgdXNlZCBpZCBvZiB0aGUgaW5qZWN0aW5nIGFwcGxpY2F0aW9uLCBvdGhlcndpc2UgdGhleSBzaG91bGQgYm90aAorICAgICAqIGJlIC0xLgorICAgICAqIFJldHVybnMgb25lIG9mIHRoZSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fWFhYIGNvbnN0YW50cy4gKi8KKyAgICB2aXJ0dWFsIGludDMyX3Qgd2FpdEZvcktleUV2ZW50VGFyZ2V0cyhLZXlFdmVudCoga2V5RXZlbnQsIHVpbnQzMl90IHBvbGljeUZsYWdzLAorICAgICAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCwKKyAgICAgICAgICAgIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpID0gMDsKKworICAgIC8qIFdhaXRzIGZvciBtb3Rpb24gZXZlbnQgdGFyZ2V0cyB0byBiZWNvbWUgYXZhaWxhYmxlLgorICAgICAqIElmIHRoZSBldmVudCBpcyBiZWluZyBpbmplY3RlZCwgaW5qZWN0b3JQaWQgYW5kIGluamVjdG9yVWlkIHNob3VsZCBzcGVjaWZ5IHRoZQorICAgICAqIHByb2Nlc3MgaWQgYW5kIHVzZWQgaWQgb2YgdGhlIGluamVjdGluZyBhcHBsaWNhdGlvbiwgb3RoZXJ3aXNlIHRoZXkgc2hvdWxkIGJvdGgKKyAgICAgKiBiZSAtMS4KKyAgICAgKiBSZXR1cm5zIG9uZSBvZiB0aGUgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1hYWCBjb25zdGFudHMuICovCisgICAgdmlydHVhbCBpbnQzMl90IHdhaXRGb3JNb3Rpb25FdmVudFRhcmdldHMoTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsCisgICAgICAgICAgICBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzKSA9IDA7Cit9OworCisKKy8qIE5vdGlmaWVzIHRoZSBzeXN0ZW0gYWJvdXQgaW5wdXQgZXZlbnRzIGdlbmVyYXRlZCBieSB0aGUgaW5wdXQgcmVhZGVyLgorICogVGhlIGRpc3BhdGNoZXIgaXMgZXhwZWN0ZWQgdG8gYmUgbW9zdGx5IGFzeW5jaHJvbm91cy4gKi8KK2NsYXNzIElucHV0RGlzcGF0Y2hlckludGVyZmFjZSA6IHB1YmxpYyB2aXJ0dWFsIFJlZkJhc2UgeworcHJvdGVjdGVkOgorICAgIElucHV0RGlzcGF0Y2hlckludGVyZmFjZSgpIHsgfQorICAgIHZpcnR1YWwgfklucHV0RGlzcGF0Y2hlckludGVyZmFjZSgpIHsgfQorCitwdWJsaWM6CisgICAgLyogUnVucyBhIHNpbmdsZSBpdGVyYXRpb24gb2YgdGhlIGRpc3BhdGNoIGxvb3AuCisgICAgICogTm9taW5hbGx5IHByb2Nlc3NlcyBvbmUgcXVldWVkIGV2ZW50LCBhIHRpbWVvdXQsIG9yIGEgcmVzcG9uc2UgZnJvbSBhbiBpbnB1dCBjb25zdW1lci4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgZGlzcGF0Y2hlciB0aHJlYWQuCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoT25jZSgpID0gMDsKKworICAgIC8qIE5vdGlmaWVzIHRoZSBkaXNwYXRjaGVyIGFib3V0IG5ldyBldmVudHMuCisgICAgICoKKyAgICAgKiBUaGVzZSBtZXRob2RzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgcmVhZGVyIHRocmVhZC4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQobnNlY3NfdCBldmVudFRpbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXBwU3dpdGNoQ29taW5nKG5zZWNzX3QgZXZlbnRUaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUtleShuc2Vjc190IGV2ZW50VGltZSwgaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUsCisgICAgICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFncywgaW50MzJfdCBhY3Rpb24sIGludDMyX3QgZmxhZ3MsIGludDMyX3Qga2V5Q29kZSwKKyAgICAgICAgICAgIGludDMyX3Qgc2NhbkNvZGUsIGludDMyX3QgbWV0YVN0YXRlLCBuc2Vjc190IGRvd25UaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU1vdGlvbihuc2Vjc190IGV2ZW50VGltZSwgaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUsCisgICAgICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFncywgaW50MzJfdCBhY3Rpb24sIGludDMyX3QgbWV0YVN0YXRlLCBpbnQzMl90IGVkZ2VGbGFncywKKyAgICAgICAgICAgIHVpbnQzMl90IHBvaW50ZXJDb3VudCwgY29uc3QgaW50MzJfdCogcG9pbnRlcklkcywgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3JkcywKKyAgICAgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sIGZsb2F0IHlQcmVjaXNpb24sIG5zZWNzX3QgZG93blRpbWUpID0gMDsKKworICAgIC8qIEluamVjdHMgYW4gaW5wdXQgZXZlbnQgYW5kIG9wdGlvbmFsbHkgd2FpdHMgZm9yIHN5bmMuCisgICAgICogVGhpcyBtZXRob2QgbWF5IGJsb2NrIGV2ZW4gaWYgc3luYyBpcyBmYWxzZSBiZWNhdXNlIGl0IG11c3Qgd2FpdCBmb3IgcHJldmlvdXMgZXZlbnRzCisgICAgICogdG8gYmUgZGlzcGF0Y2hlZCBiZWZvcmUgaXQgY2FuIGRldGVybWluZSB3aGV0aGVyIGlucHV0IGV2ZW50IGluamVjdGlvbiB3aWxsIGJlCisgICAgICogcGVybWl0dGVkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGlucHV0IGZvY3VzLgorICAgICAqIFJldHVybnMgb25lIG9mIHRoZSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fWFhYIGNvbnN0YW50cy4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgb24gYW55IHRocmVhZCAodXN1YWxseSBieSB0aGUgaW5wdXQgbWFuYWdlcikuCisgICAgICovCisgICAgdmlydHVhbCBpbnQzMl90IGluamVjdElucHV0RXZlbnQoY29uc3QgSW5wdXRFdmVudCogZXZlbnQsCisgICAgICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBib29sIHN5bmMsIGludDMyX3QgdGltZW91dE1pbGxpcykgPSAwOworCisgICAgLyogUHJlZW1wdHMgaW5wdXQgZGlzcGF0Y2ggaW4gcHJvZ3Jlc3MgYnkgbWFraW5nIHBlbmRpbmcgc3luY2hyb25vdXMKKyAgICAgKiBkaXNwYXRjaGVzIGFzeW5jaHJvbm91cyBpbnN0ZWFkLiAgVGhpcyBtZXRob2QgaXMgZ2VuZXJhbGx5IGNhbGxlZCBkdXJpbmcgYSBmb2N1cworICAgICAqIHRyYW5zaXRpb24gZnJvbSBvbmUgYXBwbGljYXRpb24gdG8gdGhlIG5leHQgc28gYXMgdG8gZW5hYmxlIHRoZSBuZXcgYXBwbGljYXRpb24KKyAgICAgKiB0byBzdGFydCByZWNlaXZpbmcgaW5wdXQgYXMgc29vbiBhcyBwb3NzaWJsZSB3aXRob3V0IGhhdmluZyB0byB3YWl0IGZvciB0aGUKKyAgICAgKiBvbGQgYXBwbGljYXRpb24gdG8gZmluaXNoIHVwLgorICAgICAqCisgICAgICogVGhpcyBtZXRob2QgbWF5IGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkICh1c3VhbGx5IGJ5IHRoZSBpbnB1dCBtYW5hZ2VyKS4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgcHJlZW1wdElucHV0RGlzcGF0Y2goKSA9IDA7CisKKyAgICAvKiBSZWdpc3RlcnMgb3IgdW5yZWdpc3RlciBpbnB1dCBjaGFubmVscyB0aGF0IG1heSBiZSB1c2VkIGFzIHRhcmdldHMgZm9yIGlucHV0IGV2ZW50cy4KKyAgICAgKgorICAgICAqIFRoZXNlIG1ldGhvZHMgbWF5IGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkICh1c3VhbGx5IGJ5IHRoZSBpbnB1dCBtYW5hZ2VyKS4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHN0YXR1c190IHJlZ2lzdGVySW5wdXRDaGFubmVsKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgPSAwOworICAgIHZpcnR1YWwgc3RhdHVzX3QgdW5yZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpID0gMDsKK307CisKKy8qIERpc3BhdGNoZXMgZXZlbnRzIHRvIGlucHV0IHRhcmdldHMuICBTb21lIGZ1bmN0aW9ucyBvZiB0aGUgaW5wdXQgZGlzcGF0Y2hlciwgc3VjaCBhcworICogaWRlbnRpZnlpbmcgaW5wdXQgdGFyZ2V0cywgYXJlIGNvbnRyb2xsZWQgYnkgYSBzZXBhcmF0ZSBwb2xpY3kgb2JqZWN0LgorICoKKyAqIElNUE9SVEFOVCBJTlZBUklBTlQ6CisgKiAgICAgQmVjYXVzZSB0aGUgcG9saWN5IGNhbiBwb3RlbnRpYWxseSBibG9jayBvciBjYXVzZSByZS1lbnRyYW5jZSBpbnRvIHRoZSBpbnB1dCBkaXNwYXRjaGVyLAorICogICAgIHRoZSBpbnB1dCBkaXNwYXRjaGVyIG5ldmVyIGNhbGxzIGludG8gdGhlIHBvbGljeSB3aGlsZSBob2xkaW5nIGl0cyBpbnRlcm5hbCBsb2Nrcy4KKyAqICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgYWxzbyBjYXJlZnVsbHkgZGVzaWduZWQgdG8gcmVjb3ZlciBmcm9tIHNjZW5hcmlvcyBzdWNoIGFzIGFuCisgKiAgICAgaW5wdXQgY2hhbm5lbCBiZWNvbWluZyB1bnJlZ2lzdGVyZWQgd2hpbGUgaWRlbnRpZnlpbmcgaW5wdXQgdGFyZ2V0cyBvciBwcm9jZXNzaW5nIHRpbWVvdXRzLgorICoKKyAqICAgICBNZXRob2RzIG1hcmtlZCAnTG9ja2VkJyBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBsb2NrIGFjcXVpcmVkLgorICoKKyAqICAgICBNZXRob2RzIG1hcmtlZCAnTG9ja2VkSW50ZXJydXB0aWJsZScgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbG9jayBhY3F1aXJlZCBidXQKKyAqICAgICBtYXkgZHVyaW5nIHRoZSBjb3Vyc2Ugb2YgdGhlaXIgZXhlY3V0aW9uIHJlbGVhc2UgdGhlIGxvY2ssIGNhbGwgaW50byB0aGUgcG9saWN5LCBhbmQKKyAqICAgICB0aGVuIHJlYWNxdWlyZSB0aGUgbG9jay4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlY292ZXJpbmcgZ3JhY2VmdWxseS4KKyAqCisgKiAgICAgQSAnTG9ja2VkSW50ZXJydXB0aWJsZScgbWV0aG9kIG1heSBjYWxsZWQgYSAnTG9ja2VkJyBtZXRob2QsIGJ1dCBOT1QgdmljZS12ZXJzYS4KKyAqLworY2xhc3MgSW5wdXREaXNwYXRjaGVyIDogcHVibGljIElucHV0RGlzcGF0Y2hlckludGVyZmFjZSB7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+SW5wdXREaXNwYXRjaGVyKCk7CisKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJbnB1dERpc3BhdGNoZXIoY29uc3Qgc3A8SW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlPiYgcG9saWN5KTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9uY2UoKTsKKworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZChuc2Vjc190IGV2ZW50VGltZSk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFwcFN3aXRjaENvbWluZyhuc2Vjc190IGV2ZW50VGltZSk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUtleShuc2Vjc190IGV2ZW50VGltZSwgaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUsCisgICAgICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFncywgaW50MzJfdCBhY3Rpb24sIGludDMyX3QgZmxhZ3MsIGludDMyX3Qga2V5Q29kZSwKKyAgICAgICAgICAgIGludDMyX3Qgc2NhbkNvZGUsIGludDMyX3QgbWV0YVN0YXRlLCBuc2Vjc190IGRvd25UaW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TW90aW9uKG5zZWNzX3QgZXZlbnRUaW1lLCBpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgICAgIHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGFjdGlvbiwgaW50MzJfdCBtZXRhU3RhdGUsIGludDMyX3QgZWRnZUZsYWdzLAorICAgICAgICAgICAgdWludDMyX3QgcG9pbnRlckNvdW50LCBjb25zdCBpbnQzMl90KiBwb2ludGVySWRzLCBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzLAorICAgICAgICAgICAgZmxvYXQgeFByZWNpc2lvbiwgZmxvYXQgeVByZWNpc2lvbiwgbnNlY3NfdCBkb3duVGltZSk7CisKKyAgICB2aXJ0dWFsIGludDMyX3QgaW5qZWN0SW5wdXRFdmVudChjb25zdCBJbnB1dEV2ZW50KiBldmVudCwKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIGJvb2wgc3luYywgaW50MzJfdCB0aW1lb3V0TWlsbGlzKTsKKworICAgIHZpcnR1YWwgdm9pZCBwcmVlbXB0SW5wdXREaXNwYXRjaCgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCByZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgdW5yZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpOworCitwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0cnVjdCBMaW5rIHsKKyAgICAgICAgVCogbmV4dDsKKyAgICAgICAgVCogcHJldjsKKyAgICB9OworCisgICAgc3RydWN0IEV2ZW50RW50cnkgOiBMaW5rPEV2ZW50RW50cnk+IHsKKyAgICAgICAgZW51bSB7CisgICAgICAgICAgICBUWVBFX1NFTlRJTkVMLAorICAgICAgICAgICAgVFlQRV9DT05GSUdVUkFUSU9OX0NIQU5HRUQsCisgICAgICAgICAgICBUWVBFX0tFWSwKKyAgICAgICAgICAgIFRZUEVfTU9USU9OCisgICAgICAgIH07CisKKyAgICAgICAgaW50MzJfdCByZWZDb3VudDsKKyAgICAgICAgaW50MzJfdCB0eXBlOworICAgICAgICBuc2Vjc190IGV2ZW50VGltZTsKKworICAgICAgICBpbnQzMl90IGluamVjdGlvblJlc3VsdDsgLy8gaW5pdGlhbGx5IElOUFVUX0VWRU5UX0lOSkVDVElPTl9QRU5ESU5HCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQ7ICAgICAvLyAtMSBpZiBub3QgaW5qZWN0ZWQKKyAgICAgICAgaW50MzJfdCBpbmplY3RvclVpZDsgICAgIC8vIC0xIGlmIG5vdCBpbmplY3RlZAorCisgICAgICAgIGJvb2wgZGlzcGF0Y2hJblByb2dyZXNzOyAvLyBpbml0aWFsbHkgZmFsc2UsIHNldCB0byB0cnVlIHdoaWxlIGRpc3BhdGNoaW5nCisKKyAgICAgICAgaW5saW5lIGJvb2wgaXNJbmplY3RlZCgpIHsgcmV0dXJuIGluamVjdG9yUGlkID49IDA7IH0KKyAgICB9OworCisgICAgc3RydWN0IENvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkgOiBFdmVudEVudHJ5IHsKKyAgICB9OworCisgICAgc3RydWN0IEtleUVudHJ5IDogRXZlbnRFbnRyeSB7CisgICAgICAgIGludDMyX3QgZGV2aWNlSWQ7CisgICAgICAgIGludDMyX3QgbmF0dXJlOworICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFnczsKKyAgICAgICAgaW50MzJfdCBhY3Rpb247CisgICAgICAgIGludDMyX3QgZmxhZ3M7CisgICAgICAgIGludDMyX3Qga2V5Q29kZTsKKyAgICAgICAgaW50MzJfdCBzY2FuQ29kZTsKKyAgICAgICAgaW50MzJfdCBtZXRhU3RhdGU7CisgICAgICAgIGludDMyX3QgcmVwZWF0Q291bnQ7CisgICAgICAgIG5zZWNzX3QgZG93blRpbWU7CisgICAgfTsKKworICAgIHN0cnVjdCBNb3Rpb25TYW1wbGUgeworICAgICAgICBNb3Rpb25TYW1wbGUqIG5leHQ7CisKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWU7CisgICAgICAgIFBvaW50ZXJDb29yZHMgcG9pbnRlckNvb3Jkc1tNQVhfUE9JTlRFUlNdOworICAgIH07CisKKyAgICBzdHJ1Y3QgTW90aW9uRW50cnkgOiBFdmVudEVudHJ5IHsKKyAgICAgICAgaW50MzJfdCBkZXZpY2VJZDsKKyAgICAgICAgaW50MzJfdCBuYXR1cmU7CisgICAgICAgIHVpbnQzMl90IHBvbGljeUZsYWdzOworICAgICAgICBpbnQzMl90IGFjdGlvbjsKKyAgICAgICAgaW50MzJfdCBtZXRhU3RhdGU7CisgICAgICAgIGludDMyX3QgZWRnZUZsYWdzOworICAgICAgICBmbG9hdCB4UHJlY2lzaW9uOworICAgICAgICBmbG9hdCB5UHJlY2lzaW9uOworICAgICAgICBuc2Vjc190IGRvd25UaW1lOworICAgICAgICB1aW50MzJfdCBwb2ludGVyQ291bnQ7CisgICAgICAgIGludDMyX3QgcG9pbnRlcklkc1tNQVhfUE9JTlRFUlNdOworCisgICAgICAgIC8vIExpbmtlZCBsaXN0IG9mIG1vdGlvbiBzYW1wbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vdGlvbiBldmVudC4KKyAgICAgICAgTW90aW9uU2FtcGxlIGZpcnN0U2FtcGxlOworICAgICAgICBNb3Rpb25TYW1wbGUqIGxhc3RTYW1wbGU7CisgICAgfTsKKworICAgIC8vIFRyYWNrcyB0aGUgcHJvZ3Jlc3Mgb2YgZGlzcGF0Y2hpbmcgYSBwYXJ0aWN1bGFyIGV2ZW50IHRvIGEgcGFydGljdWxhciBjb25uZWN0aW9uLgorICAgIHN0cnVjdCBEaXNwYXRjaEVudHJ5IDogTGluazxEaXNwYXRjaEVudHJ5PiB7CisgICAgICAgIEV2ZW50RW50cnkqIGV2ZW50RW50cnk7IC8vIHRoZSBldmVudCB0byBkaXNwYXRjaAorICAgICAgICBpbnQzMl90IHRhcmdldEZsYWdzOworICAgICAgICBmbG9hdCB4T2Zmc2V0OworICAgICAgICBmbG9hdCB5T2Zmc2V0OworICAgICAgICBuc2Vjc190IHRpbWVvdXQ7CisKKyAgICAgICAgLy8gVHJ1ZSBpZiBkaXNwYXRjaCBoYXMgc3RhcnRlZC4KKyAgICAgICAgYm9vbCBpblByb2dyZXNzOworCisgICAgICAgIC8vIEZvciBtb3Rpb24gZXZlbnRzOgorICAgICAgICAvLyAgIFBvaW50ZXIgdG8gdGhlIGZpcnN0IG1vdGlvbiBzYW1wbGUgdG8gZGlzcGF0Y2ggaW4gdGhpcyBjeWNsZS4KKyAgICAgICAgLy8gICBVc3VhbGx5IE5VTEwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbGlzdCBvZiBtb3Rpb24gc2FtcGxlcyBiZWdpbnMgYXQKKyAgICAgICAgLy8gICBNb3Rpb25FbnRyeTo6Zmlyc3RTYW1wbGUuICBPdGhlcndpc2UsIHNvbWUgc2FtcGxlcyB3ZXJlIGRpc3BhdGNoZWQgaW4gYSBwcmV2aW91cworICAgICAgICAvLyAgIGN5Y2xlIGFuZCB0aGlzIHBvaW50ZXIgaW5kaWNhdGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgcmVtYWluaW5pbmcgc2FtcGxlCisgICAgICAgIC8vICAgdG8gZGlzcGF0Y2ggZHVyaW5nIHRoZSBjdXJyZW50IGN5Y2xlLgorICAgICAgICBNb3Rpb25TYW1wbGUqIGhlYWRNb3Rpb25TYW1wbGU7CisgICAgICAgIC8vICAgUG9pbnRlciB0byBhIG1vdGlvbiBzYW1wbGUgdG8gZGlzcGF0Y2ggaW4gdGhlIG5leHQgY3ljbGUgaWYgdGhlIGRpc3BhdGNoZXIgd2FzCisgICAgICAgIC8vICAgdW5hYmxlIHRvIHNlbmQgYWxsIG1vdGlvbiBzYW1wbGVzIGR1cmluZyB0aGlzIGN5Y2xlLiAgT24gdGhlIG5leHQgY3ljbGUsCisgICAgICAgIC8vICAgaGVhZE1vdGlvblNhbXBsZSB3aWxsIGJlIGluaXRpYWxpemVkIHRvIHRhaWxNb3Rpb25TYW1wbGUgYW5kIHRhaWxNb3Rpb25TYW1wbGUKKyAgICAgICAgLy8gICB3aWxsIGJlIHNldCB0byBOVUxMLgorICAgICAgICBNb3Rpb25TYW1wbGUqIHRhaWxNb3Rpb25TYW1wbGU7CisgICAgfTsKKworICAgIC8vIEEgY29tbWFuZCBlbnRyeSBjYXB0dXJlcyBzdGF0ZSBhbmQgYmVoYXZpb3IgZm9yIGFuIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQgaW4gdGhlCisgICAgLy8gZGlzcGF0Y2ggbG9vcCBhZnRlciB0aGUgaW5pdGlhbCBwcm9jZXNzaW5nIGhhcyB0YWtlbiBwbGFjZS4gIEl0IGlzIGVzc2VudGlhbGx5CisgICAgLy8gYSBraW5kIG9mIGNvbnRpbnVhdGlvbiB1c2VkIHRvIHBvc3Rwb25lIHNlbnNpdGl2ZSBwb2xpY3kgaW50ZXJhY3Rpb25zIHRvIGEgcG9pbnQKKyAgICAvLyBpbiB0aGUgZGlzcGF0Y2ggbG9vcCB3aGVyZSBpdCBpcyBzYWZlIHRvIHJlbGVhc2UgdGhlIGxvY2sgKGdlbmVyYWxseSBhZnRlciBmaW5pc2hpbmcKKyAgICAvLyB0aGUgY3JpdGljYWwgcGFydHMgb2YgdGhlIGRpc3BhdGNoIGN5Y2xlKS4KKyAgICAvLworICAgIC8vIFRoZSBzcGVjaWFsIHRoaW5nIGFib3V0IGNvbW1hbmRzIGlzIHRoYXQgdGhleSBjYW4gdm9sdW50YXJpbHkgcmVsZWFzZSBhbmQgcmVhY3F1aXJlCisgICAgLy8gdGhlIGRpc3BhdGNoZXIgbG9jayBhdCB3aWxsLiAgSW5pdGlhbGx5IHdoZW4gdGhlIGNvbW1hbmQgc3RhcnRzIHJ1bm5pbmcsIHRoZQorICAgIC8vIGRpc3BhdGNoZXIgbG9jayBpcyBoZWxkLiAgSG93ZXZlciwgaWYgdGhlIGNvbW1hbmQgbmVlZHMgdG8gY2FsbCBpbnRvIHRoZSBwb2xpY3kgdG8KKyAgICAvLyBkbyBzb21lIHdvcmssIGl0IGNhbiByZWxlYXNlIHRoZSBsb2NrLCBkbyB0aGUgd29yaywgdGhlbiByZWFjcXVpcmUgdGhlIGxvY2sgYWdhaW4KKyAgICAvLyBiZWZvcmUgcmV0dXJuaW5nLgorICAgIC8vCisgICAgLy8gVGhpcyBtZWNoYW5pc20gaXMgYSBiaXQgY2x1bmt5IGJ1dCBpdCBoZWxwcyB0byBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGRpc3BhdGNoCisgICAgLy8gbmV2ZXIgY2FsbHMgaW50byB0aGUgcG9saWN5IHdoaWxlIGhvbGRpbmcgaXRzIGxvY2suCisgICAgLy8KKyAgICAvLyBDb21tYW5kcyBhcmUgaW1wbGljaXRseSAnTG9ja2VkSW50ZXJydXB0aWJsZScuCisgICAgc3RydWN0IENvbW1hbmRFbnRyeTsKKyAgICB0eXBlZGVmIHZvaWQgKElucHV0RGlzcGF0Y2hlcjo6KkNvbW1hbmQpKENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5KTsKKworICAgIGNsYXNzIENvbm5lY3Rpb247CisgICAgc3RydWN0IENvbW1hbmRFbnRyeSA6IExpbms8Q29tbWFuZEVudHJ5PiB7CisgICAgICAgIENvbW1hbmRFbnRyeSgpOworICAgICAgICB+Q29tbWFuZEVudHJ5KCk7CisKKyAgICAgICAgQ29tbWFuZCBjb21tYW5kOworCisgICAgICAgIC8vIHBhcmFtZXRlcnMgZm9yIHRoZSBjb21tYW5kICh1c2FnZSB2YXJpZXMgYnkgY29tbWFuZCkKKyAgICAgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKKyAgICB9OworCisgICAgLy8gR2VuZXJpYyBxdWV1ZSBpbXBsZW1lbnRhdGlvbi4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBzdHJ1Y3QgUXVldWUgeworICAgICAgICBUIGhlYWQ7CisgICAgICAgIFQgdGFpbDsKKworICAgICAgICBpbmxpbmUgUXVldWUoKSB7CisgICAgICAgICAgICBoZWFkLnByZXYgPSBOVUxMOworICAgICAgICAgICAgaGVhZC5uZXh0ID0gJiB0YWlsOworICAgICAgICAgICAgdGFpbC5wcmV2ID0gJiBoZWFkOworICAgICAgICAgICAgdGFpbC5uZXh0ID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlubGluZSBib29sIGlzRW1wdHkoKSB7CisgICAgICAgICAgICByZXR1cm4gaGVhZC5uZXh0ID09ICYgdGFpbDsKKyAgICAgICAgfQorCisgICAgICAgIGlubGluZSB2b2lkIGVucXVldWVBdFRhaWwoVCogZW50cnkpIHsKKyAgICAgICAgICAgIFQqIGxhc3QgPSB0YWlsLnByZXY7CisgICAgICAgICAgICBsYXN0LT5uZXh0ID0gZW50cnk7CisgICAgICAgICAgICBlbnRyeS0+cHJldiA9IGxhc3Q7CisgICAgICAgICAgICBlbnRyeS0+bmV4dCA9ICYgdGFpbDsKKyAgICAgICAgICAgIHRhaWwucHJldiA9IGVudHJ5OworICAgICAgICB9CisKKyAgICAgICAgaW5saW5lIHZvaWQgZW5xdWV1ZUF0SGVhZChUKiBlbnRyeSkgeworICAgICAgICAgICAgVCogZmlyc3QgPSBoZWFkLm5leHQ7CisgICAgICAgICAgICBoZWFkLm5leHQgPSBlbnRyeTsKKyAgICAgICAgICAgIGVudHJ5LT5wcmV2ID0gJiBoZWFkOworICAgICAgICAgICAgZW50cnktPm5leHQgPSBmaXJzdDsKKyAgICAgICAgICAgIGZpcnN0LT5wcmV2ID0gZW50cnk7CisgICAgICAgIH0KKworICAgICAgICBpbmxpbmUgdm9pZCBkZXF1ZXVlKFQqIGVudHJ5KSB7CisgICAgICAgICAgICBlbnRyeS0+cHJldi0+bmV4dCA9IGVudHJ5LT5uZXh0OworICAgICAgICAgICAgZW50cnktPm5leHQtPnByZXYgPSBlbnRyeS0+cHJldjsKKyAgICAgICAgfQorCisgICAgICAgIGlubGluZSBUKiBkZXF1ZXVlQXRIZWFkKCkgeworICAgICAgICAgICAgVCogZmlyc3QgPSBoZWFkLm5leHQ7CisgICAgICAgICAgICBkZXF1ZXVlKGZpcnN0KTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKiBBbGxvY2F0ZXMgcXVldWUgZW50cmllcyBhbmQgcGVyZm9ybXMgcmVmZXJlbmNlIGNvdW50aW5nIGFzIG5lZWRlZC4gKi8KKyAgICBjbGFzcyBBbGxvY2F0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgQWxsb2NhdG9yKCk7CisKKyAgICAgICAgQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSogb2J0YWluQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeShuc2Vjc190IGV2ZW50VGltZSk7CisgICAgICAgIEtleUVudHJ5KiBvYnRhaW5LZXlFbnRyeShuc2Vjc190IGV2ZW50VGltZSwKKyAgICAgICAgICAgICAgICBpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IG5hdHVyZSwgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgYWN0aW9uLAorICAgICAgICAgICAgICAgIGludDMyX3QgZmxhZ3MsIGludDMyX3Qga2V5Q29kZSwgaW50MzJfdCBzY2FuQ29kZSwgaW50MzJfdCBtZXRhU3RhdGUsCisgICAgICAgICAgICAgICAgaW50MzJfdCByZXBlYXRDb3VudCwgbnNlY3NfdCBkb3duVGltZSk7CisgICAgICAgIE1vdGlvbkVudHJ5KiBvYnRhaW5Nb3Rpb25FbnRyeShuc2Vjc190IGV2ZW50VGltZSwKKyAgICAgICAgICAgICAgICBpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IG5hdHVyZSwgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgYWN0aW9uLAorICAgICAgICAgICAgICAgIGludDMyX3QgbWV0YVN0YXRlLCBpbnQzMl90IGVkZ2VGbGFncywgZmxvYXQgeFByZWNpc2lvbiwgZmxvYXQgeVByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICBuc2Vjc190IGRvd25UaW1lLCB1aW50MzJfdCBwb2ludGVyQ291bnQsCisgICAgICAgICAgICAgICAgY29uc3QgaW50MzJfdCogcG9pbnRlcklkcywgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3Jkcyk7CisgICAgICAgIERpc3BhdGNoRW50cnkqIG9idGFpbkRpc3BhdGNoRW50cnkoRXZlbnRFbnRyeSogZXZlbnRFbnRyeSk7CisgICAgICAgIENvbW1hbmRFbnRyeSogb2J0YWluQ29tbWFuZEVudHJ5KENvbW1hbmQgY29tbWFuZCk7CisKKyAgICAgICAgdm9pZCByZWxlYXNlRXZlbnRFbnRyeShFdmVudEVudHJ5KiBlbnRyeSk7CisgICAgICAgIHZvaWQgcmVsZWFzZUNvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkoQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSogZW50cnkpOworICAgICAgICB2b2lkIHJlbGVhc2VLZXlFbnRyeShLZXlFbnRyeSogZW50cnkpOworICAgICAgICB2b2lkIHJlbGVhc2VNb3Rpb25FbnRyeShNb3Rpb25FbnRyeSogZW50cnkpOworICAgICAgICB2b2lkIHJlbGVhc2VEaXNwYXRjaEVudHJ5KERpc3BhdGNoRW50cnkqIGVudHJ5KTsKKyAgICAgICAgdm9pZCByZWxlYXNlQ29tbWFuZEVudHJ5KENvbW1hbmRFbnRyeSogZW50cnkpOworCisgICAgICAgIHZvaWQgYXBwZW5kTW90aW9uU2FtcGxlKE1vdGlvbkVudHJ5KiBtb3Rpb25FbnRyeSwKKyAgICAgICAgICAgICAgICBuc2Vjc190IGV2ZW50VGltZSwgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3Jkcyk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBQb29sPENvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnk+IG1Db25maWd1cmF0aW9uQ2hhbmdlRW50cnlQb29sOworICAgICAgICBQb29sPEtleUVudHJ5PiBtS2V5RW50cnlQb29sOworICAgICAgICBQb29sPE1vdGlvbkVudHJ5PiBtTW90aW9uRW50cnlQb29sOworICAgICAgICBQb29sPE1vdGlvblNhbXBsZT4gbU1vdGlvblNhbXBsZVBvb2w7CisgICAgICAgIFBvb2w8RGlzcGF0Y2hFbnRyeT4gbURpc3BhdGNoRW50cnlQb29sOworICAgICAgICBQb29sPENvbW1hbmRFbnRyeT4gbUNvbW1hbmRFbnRyeVBvb2w7CisKKyAgICAgICAgdm9pZCBpbml0aWFsaXplRXZlbnRFbnRyeShFdmVudEVudHJ5KiBlbnRyeSwgaW50MzJfdCB0eXBlLCBuc2Vjc190IGV2ZW50VGltZSk7CisgICAgfTsKKworICAgIC8qIE1hbmFnZXMgdGhlIGRpc3BhdGNoIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBpbnB1dCBjaGFubmVsLiAqLworICAgIGNsYXNzIENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCk7CisKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gU3RhdHVzIHsKKyAgICAgICAgICAgIC8vIEV2ZXJ5dGhpbmcgaXMgcGVhY2h5LgorICAgICAgICAgICAgU1RBVFVTX05PUk1BTCwKKyAgICAgICAgICAgIC8vIEFuIHVucmVjb3ZlcmFibGUgY29tbXVuaWNhdGlvbiBlcnJvciBoYXMgb2NjdXJyZWQuCisgICAgICAgICAgICBTVEFUVVNfQlJPS0VOLAorICAgICAgICAgICAgLy8gVGhlIGNsaWVudCBpcyBub3QgcmVzcG9uZGluZy4KKyAgICAgICAgICAgIFNUQVRVU19OT1RfUkVTUE9ORElORywKKyAgICAgICAgICAgIC8vIFRoZSBpbnB1dCBjaGFubmVsIGhhcyBiZWVuIHVucmVnaXN0ZXJlZC4KKyAgICAgICAgICAgIFNUQVRVU19aT01CSUUKKyAgICAgICAgfTsKKworICAgICAgICBTdGF0dXMgc3RhdHVzOworICAgICAgICBzcDxJbnB1dENoYW5uZWw+IGlucHV0Q2hhbm5lbDsKKyAgICAgICAgSW5wdXRQdWJsaXNoZXIgaW5wdXRQdWJsaXNoZXI7CisgICAgICAgIFF1ZXVlPERpc3BhdGNoRW50cnk+IG91dGJvdW5kUXVldWU7CisgICAgICAgIG5zZWNzX3QgbmV4dFRpbWVvdXRUaW1lOyAvLyBuZXh0IHRpbWVvdXQgdGltZSAoTE9OR19MT05HX01BWCBpZiBub25lKQorCisgICAgICAgIG5zZWNzX3QgbGFzdEV2ZW50VGltZTsgLy8gdGhlIHRpbWUgd2hlbiB0aGUgZXZlbnQgd2FzIG9yaWdpbmFsbHkgY2FwdHVyZWQKKyAgICAgICAgbnNlY3NfdCBsYXN0RGlzcGF0Y2hUaW1lOyAvLyB0aGUgdGltZSB3aGVuIHRoZSBsYXN0IGV2ZW50IHdhcyBkaXNwYXRjaGVkCisgICAgICAgIG5zZWNzX3QgbGFzdEFOUlRpbWU7IC8vIHRoZSB0aW1lIHdoZW4gdGhlIGxhc3QgQU5SIHdhcyByZWNvcmRlZAorCisgICAgICAgIGV4cGxpY2l0IENvbm5lY3Rpb24oY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKTsKKworICAgICAgICBpbmxpbmUgY29uc3QgY2hhciogZ2V0SW5wdXRDaGFubmVsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlucHV0Q2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpOyB9CisKKyAgICAgICAgY29uc3QgY2hhciogZ2V0U3RhdHVzTGFiZWwoKSBjb25zdDsKKworICAgICAgICAvLyBGaW5kcyBhIERpc3BhdGNoRW50cnkgaW4gdGhlIG91dGJvdW5kIHF1ZXVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGV2ZW50LgorICAgICAgICAvLyBSZXR1cm5zIE5VTEwgaWYgbm90IGZvdW5kLgorICAgICAgICBEaXNwYXRjaEVudHJ5KiBmaW5kUXVldWVkRGlzcGF0Y2hFbnRyeUZvckV2ZW50KGNvbnN0IEV2ZW50RW50cnkqIGV2ZW50RW50cnkpIGNvbnN0OworCisgICAgICAgIC8vIERldGVybWluZSB3aGV0aGVyIHRoaXMgY29ubmVjdGlvbiBoYXMgYSBwZW5kaW5nIHN5bmNocm9ub3VzIGRpc3BhdGNoIHRhcmdldC4KKyAgICAgICAgLy8gU2luY2UgdGhlcmUgY2FuIG9ubHkgZXZlciBiZSBhdCBtb3N0IG9uZSBzdWNoIHRhcmdldCBhdCBhIHRpbWUsIGlmIHRoZXJlIGlzIG9uZSwKKyAgICAgICAgLy8gaXQgbXVzdCBiZSBhdCB0aGUgdGFpbCBiZWNhdXNlIG5vdGhpbmcgZWxzZSBjYW4gYmUgZW5xdWV1ZWQgYWZ0ZXIgaXQuCisgICAgICAgIGlubGluZSBib29sIGhhc1BlbmRpbmdTeW5jVGFyZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICEgb3V0Ym91bmRRdWV1ZS5pc0VtcHR5KCkKKyAgICAgICAgICAgICAgICAgICAgJiYgKG91dGJvdW5kUXVldWUudGFpbC5wcmV2LT50YXJnZXRGbGFncyAmIElucHV0VGFyZ2V0OjpGTEFHX1NZTkMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gR2V0cyB0aGUgdGltZSBzaW5jZSB0aGUgY3VycmVudCBldmVudCB3YXMgb3JpZ2luYWxseSBvYnRhaW5lZCBmcm9tIHRoZSBpbnB1dCBkcml2ZXIuCisgICAgICAgIGlubGluZSBkb3VibGUgZ2V0RXZlbnRMYXRlbmN5TWlsbGlzKG5zZWNzX3QgY3VycmVudFRpbWUpIHsKKyAgICAgICAgICAgIHJldHVybiAoY3VycmVudFRpbWUgLSBsYXN0RXZlbnRUaW1lKSAvIDEwMDAwMDAuMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEdldHMgdGhlIHRpbWUgc2luY2UgdGhlIGN1cnJlbnQgZXZlbnQgZW50ZXJlZCB0aGUgb3V0Ym91bmQgZGlzcGF0Y2ggcXVldWUuCisgICAgICAgIGlubGluZSBkb3VibGUgZ2V0RGlzcGF0Y2hMYXRlbmN5TWlsbGlzKG5zZWNzX3QgY3VycmVudFRpbWUpIHsKKyAgICAgICAgICAgIHJldHVybiAoY3VycmVudFRpbWUgLSBsYXN0RGlzcGF0Y2hUaW1lKSAvIDEwMDAwMDAuMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEdldHMgdGhlIHRpbWUgc2luY2UgdGhlIGN1cnJlbnQgZXZlbnQgQU5SIHdhcyBkZWNsYXJlZCwgaWYgYXBwbGljYWJsZS4KKyAgICAgICAgaW5saW5lIGRvdWJsZSBnZXRBTlJMYXRlbmN5TWlsbGlzKG5zZWNzX3QgY3VycmVudFRpbWUpIHsKKyAgICAgICAgICAgIHJldHVybiAoY3VycmVudFRpbWUgLSBsYXN0QU5SVGltZSkgLyAxMDAwMDAwLjA7CisgICAgICAgIH0KKworICAgICAgICBzdGF0dXNfdCBpbml0aWFsaXplKCk7CisKKyAgICAgICAgdm9pZCBzZXROZXh0VGltZW91dFRpbWUobnNlY3NfdCBjdXJyZW50VGltZSwgbnNlY3NfdCB0aW1lb3V0KTsKKyAgICB9OworCisgICAgc3A8SW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlPiBtUG9saWN5OworCisgICAgTXV0ZXggbUxvY2s7CisKKyAgICBBbGxvY2F0b3IgbUFsbG9jYXRvcjsKKyAgICBzcDxQb2xsTG9vcD4gbVBvbGxMb29wOworCisgICAgUXVldWU8RXZlbnRFbnRyeT4gbUluYm91bmRRdWV1ZTsKKyAgICBRdWV1ZTxDb21tYW5kRW50cnk+IG1Db21tYW5kUXVldWU7CisKKyAgICAvLyBBbGwgcmVnaXN0ZXJlZCBjb25uZWN0aW9ucyBtYXBwZWQgYnkgcmVjZWl2ZSBwaXBlIGZpbGUgZGVzY3JpcHRvci4KKyAgICBLZXllZFZlY3RvcjxpbnQsIHNwPENvbm5lY3Rpb24+ID4gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQ7CisKKyAgICAvLyBBY3RpdmUgY29ubmVjdGlvbnMgYXJlIGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBhIG5vbi1lbXB0eSBvdXRib3VuZCBxdWV1ZS4KKyAgICAvLyBXZSBkb24ndCB1c2UgYSByZWYtY291bnRlZCBwb2ludGVyIGhlcmUgYmVjYXVzZSB3ZSBleHBsaWNpdGx5IGFib3J0IGNvbm5lY3Rpb25zCisgICAgLy8gZHVyaW5nIHVucmVnaXN0cmF0aW9uIHdoaWNoIGNhdXNlcyB0aGUgY29ubmVjdGlvbidzIG91dGJvdW5kIHF1ZXVlIHRvIGJlIGNsZWFyZWQKKyAgICAvLyBhbmQgdGhlIGNvbm5lY3Rpb24gaXRzZWxmIHRvIGJlIGRlYWN0aXZhdGVkLgorICAgIFZlY3RvcjxDb25uZWN0aW9uKj4gbUFjdGl2ZUNvbm5lY3Rpb25zOworCisgICAgLy8gTGlzdCBvZiBjb25uZWN0aW9ucyB0aGF0IGhhdmUgdGltZWQgb3V0LiAgT25seSB1c2VkIGJ5IGRpc3BhdGNoT25jZSgpCisgICAgLy8gV2UgZG9uJ3QgdXNlIGEgcmVmLWNvdW50ZWQgcG9pbnRlciBoZXJlIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIGZvciBhIGNvbm5lY3Rpb24KKyAgICAvLyB0byBiZSB1bnJlZ2lzdGVyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aW1lZCBvdXQgY29ubmVjdGlvbnMgc2luY2Ugd2UgaG9sZCB0aGUgbG9jayBmb3IKKyAgICAvLyB0aGUgZHVyYXRpb24uCisgICAgVmVjdG9yPENvbm5lY3Rpb24qPiBtVGltZWRPdXRDb25uZWN0aW9uczsKKworICAgIC8vIFByZWFsbG9jYXRlZCBrZXkgYW5kIG1vdGlvbiBldmVudCBvYmplY3RzIHVzZWQgb25seSB0byBhc2sgdGhlIGlucHV0IGRpc3BhdGNoZXIgcG9saWN5CisgICAgLy8gZm9yIHRoZSB0YXJnZXRzIG9mIGFuIGV2ZW50IHRoYXQgaXMgdG8gYmUgZGlzcGF0Y2hlZC4KKyAgICBLZXlFdmVudCBtUmV1c2FibGVLZXlFdmVudDsKKyAgICBNb3Rpb25FdmVudCBtUmV1c2FibGVNb3Rpb25FdmVudDsKKworICAgIC8vIFRoZSBpbnB1dCB0YXJnZXRzIHRoYXQgd2VyZSBtb3N0IHJlY2VudGx5IGlkZW50aWZpZWQgZm9yIGRpc3BhdGNoLgorICAgIC8vIElmIHRoZXJlIGlzIGEgc3luY2hyb25vdXMgZXZlbnQgZGlzcGF0Y2ggaW4gcHJvZ3Jlc3MsIHRoZSBjdXJyZW50IGlucHV0IHRhcmdldHMgd2lsbAorICAgIC8vIHJlbWFpbiB1bmNoYW5nZWQgdW50aWwgdGhlIGRpc3BhdGNoIGhhcyBjb21wbGV0ZWQgb3IgYmVlbiBhYm9ydGVkLgorICAgIFZlY3RvcjxJbnB1dFRhcmdldD4gbUN1cnJlbnRJbnB1dFRhcmdldHM7CisgICAgYm9vbCBtQ3VycmVudElucHV0VGFyZ2V0c1ZhbGlkOyAvLyBmYWxzZSB3aGlsZSB0YXJnZXRzIGFyZSBiZWluZyByZWNvbXB1dGVkCisKKyAgICAvLyBFdmVudCBpbmplY3Rpb24gYW5kIHN5bmNocm9uaXphdGlvbi4KKyAgICBDb25kaXRpb24gbUluamVjdGlvblJlc3VsdEF2YWlsYWJsZUNvbmRpdGlvbjsKKyAgICBDb25kaXRpb24gbUZ1bGx5U3luY2hyb25pemVkQ29uZGl0aW9uOworICAgIGJvb2wgaXNGdWxseVN5bmNocm9uaXplZExvY2tlZCgpOworICAgIEV2ZW50RW50cnkqIGNyZWF0ZUVudHJ5RnJvbUlucHV0RXZlbnRMb2NrZWQoY29uc3QgSW5wdXRFdmVudCogZXZlbnQpOworICAgIHZvaWQgc2V0SW5qZWN0aW9uUmVzdWx0TG9ja2VkKEV2ZW50RW50cnkqIGVudHJ5LCBpbnQzMl90IGluamVjdGlvblJlc3VsdCk7CisKKyAgICAvLyBLZXkgcmVwZWF0IHRyYWNraW5nLgorICAgIC8vIFhYWCBNb3ZlIHRoaXMgdXAgdG8gdGhlIGlucHV0IHJlYWRlciBpbnN0ZWFkLgorICAgIHN0cnVjdCBLZXlSZXBlYXRTdGF0ZSB7CisgICAgICAgIEtleUVudHJ5KiBsYXN0S2V5RW50cnk7IC8vIG9yIG51bGwgaWYgbm8gcmVwZWF0CisgICAgICAgIG5zZWNzX3QgbmV4dFJlcGVhdFRpbWU7CisgICAgfSBtS2V5UmVwZWF0U3RhdGU7CisKKyAgICB2b2lkIHJlc2V0S2V5UmVwZWF0TG9ja2VkKCk7CisKKyAgICAvLyBEZWZlcnJlZCBjb21tYW5kIHByb2Nlc3NpbmcuCisgICAgYm9vbCBydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKTsKKyAgICBDb21tYW5kRW50cnkqIHBvc3RDb21tYW5kTG9ja2VkKENvbW1hbmQgY29tbWFuZCk7CisKKyAgICAvLyBQcm9jZXNzIGV2ZW50cyB0aGF0IGhhdmUganVzdCBiZWVuIGRlcXVldWVkIGZyb20gdGhlIGhlYWQgb2YgdGhlIGlucHV0IHF1ZXVlLgorICAgIHZvaWQgcHJvY2Vzc0NvbmZpZ3VyYXRpb25DaGFuZ2VkTG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIENvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkqIGVudHJ5KTsKKyAgICB2b2lkIHByb2Nlc3NLZXlMb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgS2V5RW50cnkqIGVudHJ5LCBuc2Vjc190IGtleVJlcGVhdFRpbWVvdXQpOworICAgIHZvaWQgcHJvY2Vzc0tleVJlcGVhdExvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBuc2Vjc190IGtleVJlcGVhdFRpbWVvdXQpOworICAgIHZvaWQgcHJvY2Vzc01vdGlvbkxvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBNb3Rpb25FbnRyeSogZW50cnkpOworCisgICAgLy8gSWRlbnRpZnkgaW5wdXQgdGFyZ2V0cyBmb3IgYW4gZXZlbnQgYW5kIGRpc3BhdGNoIHRvIHRoZW0uCisgICAgdm9pZCBpZGVudGlmeUlucHV0VGFyZ2V0c0FuZERpc3BhdGNoS2V5TG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIEtleUVudHJ5KiBlbnRyeSk7CisgICAgdm9pZCBpZGVudGlmeUlucHV0VGFyZ2V0c0FuZERpc3BhdGNoTW90aW9uTG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIE1vdGlvbkVudHJ5KiBlbnRyeSk7CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50VG9DdXJyZW50SW5wdXRUYXJnZXRzTG9ja2VkKAorICAgICAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgRXZlbnRFbnRyeSogZW50cnksIGJvb2wgcmVzdW1lV2l0aEFwcGVuZGVkTW90aW9uU2FtcGxlKTsKKworICAgIC8vIE1hbmFnZSB0aGUgZGlzcGF0Y2ggY3ljbGUgZm9yIGEgc2luZ2xlIGNvbm5lY3Rpb24uCisgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBJbnRlcnJ1cHRpYmxlIGJlY2F1c2UgZG9pbmcgYWxsIG9mIHRoZSB3b3JrCisgICAgLy8gd2l0aCB0aGUgbXV0ZXggaGVsZCBtYWtlcyBpdCBlYXNpZXIgdG8gZW5zdXJlIHRoYXQgY29ubmVjdGlvbiBpbnZhcmlhbnRzIGFyZSBtYWludGFpbmVkLgorICAgIC8vIElmIG5lZWRlZCwgdGhlIG1ldGhvZHMgcG9zdCBjb21tYW5kcyB0byBydW4gbGF0ZXIgb25jZSB0aGUgY3JpdGljYWwgYml0cyBhcmUgZG9uZS4KKyAgICB2b2lkIHByZXBhcmVEaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uLAorICAgICAgICAgICAgRXZlbnRFbnRyeSogZXZlbnRFbnRyeSwgY29uc3QgSW5wdXRUYXJnZXQqIGlucHV0VGFyZ2V0LAorICAgICAgICAgICAgYm9vbCByZXN1bWVXaXRoQXBwZW5kZWRNb3Rpb25TYW1wbGUpOworICAgIHZvaWQgc3RhcnREaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKTsKKyAgICB2b2lkIGZpbmlzaERpc3BhdGNoQ3ljbGVMb2NrZWQobnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pOworICAgIHZvaWQgdGltZW91dERpc3BhdGNoQ3ljbGVMb2NrZWQobnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pOworICAgIHZvaWQgcmVzdW1lQWZ0ZXJUaW1lb3V0RGlzcGF0Y2hDeWNsZUxvY2tlZChuc2Vjc190IGN1cnJlbnRUaW1lLAorICAgICAgICAgICAgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24sIG5zZWNzX3QgbmV3VGltZW91dCk7CisgICAgdm9pZCBhYm9ydERpc3BhdGNoQ3ljbGVMb2NrZWQobnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24sCisgICAgICAgICAgICBib29sIGJyb2tlbik7CisgICAgc3RhdGljIGJvb2wgaGFuZGxlUmVjZWl2ZUNhbGxiYWNrKGludCByZWNlaXZlRmQsIGludCBldmVudHMsIHZvaWQqIGRhdGEpOworCisgICAgLy8gQWRkIG9yIHJlbW92ZSBhIGNvbm5lY3Rpb24gdG8gdGhlIG1BY3RpdmVDb25uZWN0aW9ucyB2ZWN0b3IuCisgICAgdm9pZCBhY3RpdmF0ZUNvbm5lY3Rpb25Mb2NrZWQoQ29ubmVjdGlvbiogY29ubmVjdGlvbik7CisgICAgdm9pZCBkZWFjdGl2YXRlQ29ubmVjdGlvbkxvY2tlZChDb25uZWN0aW9uKiBjb25uZWN0aW9uKTsKKworICAgIC8vIEludGVyZXN0aW5nIGV2ZW50cyB0aGF0IHdlIG1pZ2h0IGxpa2UgdG8gbG9nIG9yIHRlbGwgdGhlIGZyYW1ld29yayBhYm91dC4KKyAgICB2b2lkIG9uRGlzcGF0Y2hDeWNsZVN0YXJ0ZWRMb2NrZWQoCisgICAgICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbik7CisgICAgdm9pZCBvbkRpc3BhdGNoQ3ljbGVGaW5pc2hlZExvY2tlZCgKKyAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uLCBib29sIHJlY292ZXJlZEZyb21BTlIpOworICAgIHZvaWQgb25EaXNwYXRjaEN5Y2xlQU5STG9ja2VkKAorICAgICAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pOworICAgIHZvaWQgb25EaXNwYXRjaEN5Y2xlQnJva2VuTG9ja2VkKAorICAgICAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pOworCisgICAgLy8gT3V0Ym91bmQgcG9saWN5IGludGVyYWN0aW9ucy4KKyAgICB2b2lkIGRvTm90aWZ5SW5wdXRDaGFubmVsQnJva2VuTG9ja2VkSW50ZXJydXB0aWJsZShDb21tYW5kRW50cnkqIGNvbW1hbmRFbnRyeSk7CisgICAgdm9pZCBkb05vdGlmeUlucHV0Q2hhbm5lbEFOUkxvY2tlZEludGVycnVwdGlibGUoQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkpOworICAgIHZvaWQgZG9Ob3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5STG9ja2VkSW50ZXJydXB0aWJsZShDb21tYW5kRW50cnkqIGNvbW1hbmRFbnRyeSk7Cit9OworCisvKiBFbnF1ZXVlcyBhbmQgZGlzcGF0Y2hlcyBpbnB1dCBldmVudHMsIGVuZGxlc3NseS4gKi8KK2NsYXNzIElucHV0RGlzcGF0Y2hlclRocmVhZCA6IHB1YmxpYyBUaHJlYWQgeworcHVibGljOgorICAgIGV4cGxpY2l0IElucHV0RGlzcGF0Y2hlclRocmVhZChjb25zdCBzcDxJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2U+JiBkaXNwYXRjaGVyKTsKKyAgICB+SW5wdXREaXNwYXRjaGVyVGhyZWFkKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIHRocmVhZExvb3AoKTsKKworICAgIHNwPElucHV0RGlzcGF0Y2hlckludGVyZmFjZT4gbURpc3BhdGNoZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBfVUlfSU5QVVRfRElTUEFUQ0hFUl9QUklWX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvSW5wdXRNYW5hZ2VyLmggYi9pbmNsdWRlL3VpL0lucHV0TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NTUyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3VpL0lucHV0TWFuYWdlci5oCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBfVUlfSU5QVVRfTUFOQUdFUl9ICisjZGVmaW5lIF9VSV9JTlBVVF9NQU5BR0VSX0gKKworLyoqCisgKiBOYXRpdmUgaW5wdXQgbWFuYWdlci4KKyAqLworCisjaW5jbHVkZSA8dWkvRXZlbnRIdWIuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dC5oPgorI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1RpbWVycy5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgSW5wdXRDaGFubmVsOworCitjbGFzcyBJbnB1dFJlYWRlckludGVyZmFjZTsKK2NsYXNzIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOworY2xhc3MgSW5wdXRSZWFkZXJUaHJlYWQ7CisKK2NsYXNzIElucHV0RGlzcGF0Y2hlckludGVyZmFjZTsKK2NsYXNzIElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZTsKK2NsYXNzIElucHV0RGlzcGF0Y2hlclRocmVhZDsKKworLyoKKyAqIFRoZSBpbnB1dCBtYW5hZ2VyIGlzIHRoZSBjb3JlIG9mIHRoZSBzeXN0ZW0gZXZlbnQgcHJvY2Vzc2luZy4KKyAqCisgKiBUaGUgaW5wdXQgbWFuYWdlciB1c2VzIHR3byB0aHJlYWRzLgorICoKKyAqIDEuIFRoZSBJbnB1dFJlYWRlclRocmVhZCAoY2FsbGVkICJJbnB1dFJlYWRlciIpIHJlYWRzIGFuZCBwcmVwcm9jZXNzZXMgcmF3IGlucHV0IGV2ZW50cywKKyAqICAgIGFwcGxpZXMgcG9saWN5LCBhbmQgcG9zdHMgbWVzc2FnZXMgdG8gYSBxdWV1ZSBtYW5hZ2VkIGJ5IHRoZSBEaXNwYXRjaGVyVGhyZWFkLgorICogMi4gVGhlIElucHV0RGlzcGF0Y2hlclRocmVhZCAoY2FsbGVkICJJbnB1dERpc3BhdGNoZXIiKSB0aHJlYWQgd2FpdHMgZm9yIG5ldyBldmVudHMgb24gdGhlCisgKiAgICBxdWV1ZSBhbmQgYXN5bmNocm9ub3VzbHkgZGlzcGF0Y2hlcyB0aGVtIHRvIGFwcGxpY2F0aW9ucy4KKyAqCisgKiBCeSBkZXNpZ24sIHRoZSBJbnB1dFJlYWRlclRocmVhZCBjbGFzcyBhbmQgSW5wdXREaXNwYXRjaGVyVGhyZWFkIGNsYXNzIGRvIG5vdCBzaGFyZSBhbnkKKyAqIGludGVybmFsIHN0YXRlLiAgTW9yZW92ZXIsIGFsbCBjb21tdW5pY2F0aW9uIGlzIGRvbmUgb25lIHdheSBmcm9tIHRoZSBJbnB1dFJlYWRlclRocmVhZAorICogaW50byB0aGUgSW5wdXREaXNwYXRjaGVyVGhyZWFkIGFuZCBuZXZlciB0aGUgcmV2ZXJzZS4gIEJvdGggY2xhc3NlcyBtYXkgaW50ZXJhY3Qgd2l0aCB0aGUKKyAqIElucHV0RGlzcGF0Y2hQb2xpY3ksIGhvd2V2ZXIuCisgKgorICogVGhlIElucHV0TWFuYWdlciBjbGFzcyBuZXZlciBtYWtlcyBhbnkgY2FsbHMgaW50byBKYXZhIGl0c2VsZi4gIEluc3RlYWQsIHRoZQorICogSW5wdXREaXNwYXRjaFBvbGljeSBpcyByZXNwb25zaWJsZSBmb3IgcGVyZm9ybWluZyBhbGwgZXh0ZXJuYWwgaW50ZXJhY3Rpb25zIHdpdGggdGhlCisgKiBzeXN0ZW0sIGluY2x1ZGluZyBjYWxsaW5nIERWTSBzZXJ2aWNlcy4KKyAqLworY2xhc3MgSW5wdXRNYW5hZ2VySW50ZXJmYWNlIDogcHVibGljIHZpcnR1YWwgUmVmQmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgSW5wdXRNYW5hZ2VySW50ZXJmYWNlKCkgeyB9CisgICAgdmlydHVhbCB+SW5wdXRNYW5hZ2VySW50ZXJmYWNlKCkgeyB9CisKK3B1YmxpYzoKKyAgICAvKiBTdGFydHMgdGhlIGlucHV0IG1hbmFnZXIgdGhyZWFkcy4gKi8KKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KCkgPSAwOworCisgICAgLyogU3RvcHMgdGhlIGlucHV0IG1hbmFnZXIgdGhyZWFkcyBhbmQgd2FpdHMgZm9yIHRoZW0gdG8gZXhpdC4gKi8KKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKSA9IDA7CisKKyAgICAvKiBSZWdpc3RlcnMgYW4gaW5wdXQgY2hhbm5lbCBwcmlvciB0byB1c2luZyBpdCBhcyB0aGUgdGFyZ2V0IG9mIGFuIGV2ZW50LiAqLworICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKSA9IDA7CisKKyAgICAvKiBVbnJlZ2lzdGVycyBhbiBpbnB1dCBjaGFubmVsLiAqLworICAgIHZpcnR1YWwgc3RhdHVzX3QgdW5yZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpID0gMDsKKworICAgIC8qIEluamVjdHMgYW4gaW5wdXQgZXZlbnQgYW5kIG9wdGlvbmFsbHkgd2FpdHMgZm9yIHN5bmMuCisgICAgICogVGhpcyBtZXRob2QgbWF5IGJsb2NrIGV2ZW4gaWYgc3luYyBpcyBmYWxzZSBiZWNhdXNlIGl0IG11c3Qgd2FpdCBmb3IgcHJldmlvdXMgZXZlbnRzCisgICAgICogdG8gYmUgZGlzcGF0Y2hlZCBiZWZvcmUgaXQgY2FuIGRldGVybWluZSB3aGV0aGVyIGlucHV0IGV2ZW50IGluamVjdGlvbiB3aWxsIGJlCisgICAgICogcGVybWl0dGVkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGlucHV0IGZvY3VzLgorICAgICAqIFJldHVybnMgb25lIG9mIHRoZSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fWFhYIGNvbnN0YW50cy4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGludDMyX3QgaW5qZWN0SW5wdXRFdmVudChjb25zdCBJbnB1dEV2ZW50KiBldmVudCwKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIGJvb2wgc3luYywgaW50MzJfdCB0aW1lb3V0TWlsbGlzKSA9IDA7CisKKyAgICAvKiBQcmVlbXB0cyBpbnB1dCBkaXNwYXRjaCBpbiBwcm9ncmVzcyBieSBtYWtpbmcgcGVuZGluZyBzeW5jaHJvbm91cworICAgICAqIGRpc3BhdGNoZXMgYXN5bmNocm9ub3VzIGluc3RlYWQuICBUaGlzIG1ldGhvZCBpcyBnZW5lcmFsbHkgY2FsbGVkIGR1cmluZyBhIGZvY3VzCisgICAgICogdHJhbnNpdGlvbiBmcm9tIG9uZSBhcHBsaWNhdGlvbiB0byB0aGUgbmV4dCBzbyBhcyB0byBlbmFibGUgdGhlIG5ldyBhcHBsaWNhdGlvbgorICAgICAqIHRvIHN0YXJ0IHJlY2VpdmluZyBpbnB1dCBhcyBzb29uIGFzIHBvc3NpYmxlIHdpdGhvdXQgaGF2aW5nIHRvIHdhaXQgZm9yIHRoZQorICAgICAqIG9sZCBhcHBsaWNhdGlvbiB0byBmaW5pc2ggdXAuCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHByZWVtcHRJbnB1dERpc3BhdGNoKCkgPSAwOworCisgICAgLyogR2V0cyBpbnB1dCBkZXZpY2UgY29uZmlndXJhdGlvbi4gKi8KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5wdXRDb25maWd1cmF0aW9uKElucHV0Q29uZmlndXJhdGlvbiogb3V0Q29uZmlndXJhdGlvbikgY29uc3QgPSAwOworCisgICAgLyoKKyAgICAgKiBRdWVyaWVzIGN1cnJlbnQgaW5wdXQgc3RhdGUuCisgICAgICogICBkZXZpY2VJZCBtYXkgYmUgLTEgdG8gc2VhcmNoIGZvciB0aGUgZGV2aWNlIGF1dG9tYXRpY2FsbHksIGZpbHRlcmVkIGJ5IGNsYXNzLgorICAgICAqICAgZGV2aWNlQ2xhc3NlcyBtYXkgYmUgLTEgdG8gaWdub3JlIGRldmljZSBjbGFzcyB3aGlsZSBzZWFyY2hpbmcuCisgICAgICovCisgICAgdmlydHVhbCBpbnQzMl90IGdldFNjYW5Db2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzY2FuQ29kZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRLZXlDb2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBrZXlDb2RlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQzMl90IGdldFN3aXRjaFN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qgc3cpIGNvbnN0ID0gMDsKKworICAgIC8qIERldGVybWluZXMgd2hldGhlciBwaHlzaWNhbCBrZXlzIGV4aXN0IGZvciB0aGUgZ2l2ZW4gZnJhbWV3b3JrLWRvbWFpbiBrZXkgY29kZXMuICovCisgICAgdmlydHVhbCBib29sIGhhc0tleXMoc2l6ZV90IG51bUNvZGVzLCBjb25zdCBpbnQzMl90KiBrZXlDb2RlcywgdWludDhfdCogb3V0RmxhZ3MpIGNvbnN0ID0gMDsKK307CisKK2NsYXNzIElucHV0TWFuYWdlciA6IHB1YmxpYyBJbnB1dE1hbmFnZXJJbnRlcmZhY2UgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfklucHV0TWFuYWdlcigpOworCitwdWJsaWM6CisgICAgSW5wdXRNYW5hZ2VyKAorICAgICAgICAgICAgY29uc3Qgc3A8RXZlbnRIdWJJbnRlcmZhY2U+JiBldmVudEh1YiwKKyAgICAgICAgICAgIGNvbnN0IHNwPElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlPiYgcmVhZGVyUG9saWN5LAorICAgICAgICAgICAgY29uc3Qgc3A8SW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlPiYgZGlzcGF0Y2hlclBvbGljeSk7CisKKyAgICAvLyAodXNlZCBmb3IgdGVzdGluZyBwdXJwb3NlcykKKyAgICBJbnB1dE1hbmFnZXIoCisgICAgICAgICAgICBjb25zdCBzcDxJbnB1dFJlYWRlckludGVyZmFjZT4mIHJlYWRlciwKKyAgICAgICAgICAgIGNvbnN0IHNwPElucHV0RGlzcGF0Y2hlckludGVyZmFjZT4mIGRpc3BhdGNoZXIpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydCgpOworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCByZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgdW5yZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpOworCisgICAgdmlydHVhbCBpbnQzMl90IGluamVjdElucHV0RXZlbnQoY29uc3QgSW5wdXRFdmVudCogZXZlbnQsCisgICAgICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBib29sIHN5bmMsIGludDMyX3QgdGltZW91dE1pbGxpcyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZW1wdElucHV0RGlzcGF0Y2goKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZXRJbnB1dENvbmZpZ3VyYXRpb24oSW5wdXRDb25maWd1cmF0aW9uKiBvdXRDb25maWd1cmF0aW9uKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0U2NhbkNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0S2V5Q29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qga2V5Q29kZSkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQzMl90IGdldFN3aXRjaFN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qgc3cpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNLZXlzKHNpemVfdCBudW1Db2RlcywgY29uc3QgaW50MzJfdCoga2V5Q29kZXMsIHVpbnQ4X3QqIG91dEZsYWdzKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzcDxJbnB1dFJlYWRlckludGVyZmFjZT4gbVJlYWRlcjsKKyAgICBzcDxJbnB1dFJlYWRlclRocmVhZD4gbVJlYWRlclRocmVhZDsKKworICAgIHNwPElucHV0RGlzcGF0Y2hlckludGVyZmFjZT4gbURpc3BhdGNoZXI7CisgICAgc3A8SW5wdXREaXNwYXRjaGVyVGhyZWFkPiBtRGlzcGF0Y2hlclRocmVhZDsKKworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gX1VJX0lOUFVUX01BTkFHRVJfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9JbnB1dFJlYWRlci5oIGIvaW5jbHVkZS91aS9JbnB1dFJlYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MWRhMzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3VpL0lucHV0UmVhZGVyLmgKQEAgLTAsMCArMSw2MzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9VSV9JTlBVVF9SRUFERVJfSAorI2RlZmluZSBfVUlfSU5QVVRfUkVBREVSX0gKKworI2luY2x1ZGUgPHVpL0V2ZW50SHViLmg+CisjaW5jbHVkZSA8dWkvSW5wdXQuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dERpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx1dGlscy9LZXllZFZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKyNpbmNsdWRlIDx1dGlscy9UaW1lcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgorI2luY2x1ZGUgPHV0aWxzL0JpdFNldC5oPgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qIE1heGltdW0gcG9pbnRlciBpZCB2YWx1ZSBzdXBwb3J0ZWQuCisgKiAoVGhpcyBpcyBsaW1pdGVkIGJ5IG91ciB1c2Ugb2YgQml0U2V0MzIgdG8gdHJhY2sgcG9pbnRlciBhc3NpZ25tZW50cy4pICovCisjZGVmaW5lIE1BWF9QT0lOVEVSX0lEIDMyCisKKy8qIE1heGltdW0gbnVtYmVyIG9mIGhpc3RvcmljYWwgc2FtcGxlcyB0byBhdmVyYWdlLiAqLworI2RlZmluZSBBVkVSQUdJTkdfSElTVE9SWV9TSVpFIDUKKworCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2V4dGVybiBpbnQzMl90IHVwZGF0ZU1ldGFTdGF0ZShpbnQzMl90IGtleUNvZGUsIGJvb2wgZG93biwgaW50MzJfdCBvbGRNZXRhU3RhdGUpOworZXh0ZXJuIGludDMyX3Qgcm90YXRlS2V5Q29kZShpbnQzMl90IGtleUNvZGUsIGludDMyX3Qgb3JpZW50YXRpb24pOworCisvKgorICogQW4gaW5wdXQgZGV2aWNlIHN0cnVjdHVyZSB0cmFja3MgdGhlIHN0YXRlIG9mIGEgc2luZ2xlIGlucHV0IGRldmljZS4KKyAqCisgKiBUaGlzIHN0cnVjdHVyZSBpcyBvbmx5IHVzZWQgYnkgUmVhZGVyVGhyZWFkIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2hhcmVkIHdpdGgKKyAqIERpc3BhdGNoZXJUaHJlYWQgKGJlY2F1c2UgdGhhdCB3b3VsZCByZXF1aXJlIGxvY2tpbmcpLiAgVGhpcyB3b3JrcyBvdXQgZmluZSBiZWNhdXNlCisgKiBEaXNwYXRjaGVyVGhyZWFkIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiBjb29rZWQgZXZlbnQgZGF0YSBhbnl3YXlzIGFuZCBkb2VzIG5vdCBuZWVkCisgKiBhbnkgb2YgdGhlIGxvdy1sZXZlbCBkYXRhIGZyb20gSW5wdXREZXZpY2UuCisgKi8KK3N0cnVjdCBJbnB1dERldmljZSB7CisgICAgc3RydWN0IEFic29sdXRlQXhpc0luZm8geworICAgICAgICBib29sIHZhbGlkOyAgICAgICAgLy8gc2V0IHRvIHRydWUgaWYgYXhpcyBwYXJhbWV0ZXJzIGFyZSBrbm93biwgZmFsc2Ugb3RoZXJ3aXNlCisKKyAgICAgICAgaW50MzJfdCBtaW5WYWx1ZTsgIC8vIG1pbmltdW0gdmFsdWUKKyAgICAgICAgaW50MzJfdCBtYXhWYWx1ZTsgIC8vIG1heGltdW0gdmFsdWUKKyAgICAgICAgaW50MzJfdCByYW5nZTsgICAgIC8vIHJhbmdlIG9mIHZhbHVlcywgZXF1YWwgdG8gbWF4VmFsdWUgLSBtaW5WYWx1ZQorICAgICAgICBpbnQzMl90IGZsYXQ7ICAgICAgLy8gY2VudGVyIGZsYXQgcG9zaXRpb24sIGVnLiBmbGF0ID09IDggbWVhbnMgY2VudGVyIGlzIGJldHdlZW4gLTggYW5kIDgKKyAgICAgICAgaW50MzJfdCBmdXp6OyAgICAgIC8vIGVycm9yIHRvbGVyYW5jZSwgZWcuIGZ1enogPT0gNCBtZWFucyB2YWx1ZSBpcyArLy0gNCBkdWUgdG8gbm9pc2UKKyAgICB9OworCisgICAgc3RydWN0IFZpcnR1YWxLZXkgeworICAgICAgICBpbnQzMl90IGtleUNvZGU7CisgICAgICAgIGludDMyX3Qgc2NhbkNvZGU7CisgICAgICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgICAgIC8vIGNvbXB1dGVkIGhpdCBib3gsIHNwZWNpZmllZCBpbiB0b3VjaCBzY3JlZW4gY29vcmRzIGJhc2VkIG9uIGtub3duIGRpc3BsYXkgc2l6ZQorICAgICAgICBpbnQzMl90IGhpdExlZnQ7CisgICAgICAgIGludDMyX3QgaGl0VG9wOworICAgICAgICBpbnQzMl90IGhpdFJpZ2h0OworICAgICAgICBpbnQzMl90IGhpdEJvdHRvbTsKKworICAgICAgICBpbmxpbmUgYm9vbCBpc0hpdChpbnQzMl90IHgsIGludDMyX3QgeSkgY29uc3QgeworICAgICAgICAgICAgcmV0dXJuIHggPj0gaGl0TGVmdCAmJiB4IDw9IGhpdFJpZ2h0ICYmIHkgPj0gaGl0VG9wICYmIHkgPD0gaGl0Qm90dG9tOworICAgICAgICB9CisgICAgfTsKKworICAgIHN0cnVjdCBLZXlib2FyZFN0YXRlIHsKKyAgICAgICAgc3RydWN0IEN1cnJlbnQgeworICAgICAgICAgICAgaW50MzJfdCBtZXRhU3RhdGU7CisgICAgICAgICAgICBuc2Vjc190IGRvd25UaW1lOyAvLyB0aW1lIG9mIG1vc3QgcmVjZW50IGtleSBkb3duCisgICAgICAgIH0gY3VycmVudDsKKworICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgfTsKKworICAgIHN0cnVjdCBUcmFja2JhbGxTdGF0ZSB7CisgICAgICAgIHN0cnVjdCBBY2N1bXVsYXRvciB7CisgICAgICAgICAgICBlbnVtIHsKKyAgICAgICAgICAgICAgICBGSUVMRF9CVE5fTU9VU0UgPSAxLAorICAgICAgICAgICAgICAgIEZJRUxEX1JFTF9YID0gMiwKKyAgICAgICAgICAgICAgICBGSUVMRF9SRUxfWSA9IDQKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHVpbnQzMl90IGZpZWxkczsKKworICAgICAgICAgICAgYm9vbCBidG5Nb3VzZTsKKyAgICAgICAgICAgIGludDMyX3QgcmVsWDsKKyAgICAgICAgICAgIGludDMyX3QgcmVsWTsKKworICAgICAgICAgICAgaW5saW5lIHZvaWQgY2xlYXIoKSB7CisgICAgICAgICAgICAgICAgZmllbGRzID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5saW5lIGJvb2wgaXNEaXJ0eSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmllbGRzICE9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gYWNjdW11bGF0b3I7CisKKyAgICAgICAgc3RydWN0IEN1cnJlbnQgeworICAgICAgICAgICAgYm9vbCBkb3duOworICAgICAgICAgICAgbnNlY3NfdCBkb3duVGltZTsKKyAgICAgICAgfSBjdXJyZW50OworCisgICAgICAgIHN0cnVjdCBQcmVjYWxjdWxhdGVkIHsKKyAgICAgICAgICAgIGZsb2F0IHhTY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IHlTY2FsZTsKKyAgICAgICAgICAgIGZsb2F0IHhQcmVjaXNpb247CisgICAgICAgICAgICBmbG9hdCB5UHJlY2lzaW9uOworICAgICAgICB9IHByZWNhbGN1bGF0ZWQ7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworICAgIH07CisKKyAgICBzdHJ1Y3QgU2luZ2xlVG91Y2hTY3JlZW5TdGF0ZSB7CisgICAgICAgIHN0cnVjdCBBY2N1bXVsYXRvciB7CisgICAgICAgICAgICBlbnVtIHsKKyAgICAgICAgICAgICAgICBGSUVMRF9CVE5fVE9VQ0ggPSAxLAorICAgICAgICAgICAgICAgIEZJRUxEX0FCU19YID0gMiwKKyAgICAgICAgICAgICAgICBGSUVMRF9BQlNfWSA9IDQsCisgICAgICAgICAgICAgICAgRklFTERfQUJTX1BSRVNTVVJFID0gOCwKKyAgICAgICAgICAgICAgICBGSUVMRF9BQlNfVE9PTF9XSURUSCA9IDE2CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB1aW50MzJfdCBmaWVsZHM7CisKKyAgICAgICAgICAgIGJvb2wgYnRuVG91Y2g7CisgICAgICAgICAgICBpbnQzMl90IGFic1g7CisgICAgICAgICAgICBpbnQzMl90IGFic1k7CisgICAgICAgICAgICBpbnQzMl90IGFic1ByZXNzdXJlOworICAgICAgICAgICAgaW50MzJfdCBhYnNUb29sV2lkdGg7CisKKyAgICAgICAgICAgIGlubGluZSB2b2lkIGNsZWFyKCkgeworICAgICAgICAgICAgICAgIGZpZWxkcyA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlubGluZSBib29sIGlzRGlydHkoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkcyAhPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGFjY3VtdWxhdG9yOworCisgICAgICAgIHN0cnVjdCBDdXJyZW50IHsKKyAgICAgICAgICAgIGJvb2wgZG93bjsKKyAgICAgICAgICAgIGludDMyX3QgeDsKKyAgICAgICAgICAgIGludDMyX3QgeTsKKyAgICAgICAgICAgIGludDMyX3QgcHJlc3N1cmU7CisgICAgICAgICAgICBpbnQzMl90IHNpemU7CisgICAgICAgIH0gY3VycmVudDsKKworICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgfTsKKworICAgIHN0cnVjdCBNdWx0aVRvdWNoU2NyZWVuU3RhdGUgeworICAgICAgICBzdHJ1Y3QgQWNjdW11bGF0b3IgeworICAgICAgICAgICAgZW51bSB7CisgICAgICAgICAgICAgICAgRklFTERfQUJTX01UX1BPU0lUSU9OX1ggPSAxLAorICAgICAgICAgICAgICAgIEZJRUxEX0FCU19NVF9QT1NJVElPTl9ZID0gMiwKKyAgICAgICAgICAgICAgICBGSUVMRF9BQlNfTVRfVE9VQ0hfTUFKT1IgPSA0LAorICAgICAgICAgICAgICAgIEZJRUxEX0FCU19NVF9XSURUSF9NQUpPUiA9IDgsCisgICAgICAgICAgICAgICAgRklFTERfQUJTX01UX1RSQUNLSU5HX0lEID0gMTYKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHVpbnQzMl90IHBvaW50ZXJDb3VudDsKKyAgICAgICAgICAgIHN0cnVjdCBQb2ludGVyIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBmaWVsZHM7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGFic01UUG9zaXRpb25YOworICAgICAgICAgICAgICAgIGludDMyX3QgYWJzTVRQb3NpdGlvblk7CisgICAgICAgICAgICAgICAgaW50MzJfdCBhYnNNVFRvdWNoTWFqb3I7CisgICAgICAgICAgICAgICAgaW50MzJfdCBhYnNNVFdpZHRoTWFqb3I7CisgICAgICAgICAgICAgICAgaW50MzJfdCBhYnNNVFRyYWNraW5nSWQ7CisKKyAgICAgICAgICAgICAgICBpbmxpbmUgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgICAgICAgICAgICAgZmllbGRzID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IHBvaW50ZXJzW01BWF9QT0lOVEVSUyArIDFdOyAvLyArIDEgdG8gcmVtb3ZlIHRoZSBuZWVkIGZvciBleHRyYSByYW5nZSBjaGVja3MKKworICAgICAgICAgICAgaW5saW5lIHZvaWQgY2xlYXIoKSB7CisgICAgICAgICAgICAgICAgcG9pbnRlckNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBwb2ludGVyc1swXS5jbGVhcigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbmxpbmUgYm9vbCBpc0RpcnR5KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBwb2ludGVyQ291bnQgIT0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBhY2N1bXVsYXRvcjsKKworICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgfTsKKworICAgIHN0cnVjdCBQb2ludGVyRGF0YSB7CisgICAgICAgIHVpbnQzMl90IGlkOworICAgICAgICBpbnQzMl90IHg7CisgICAgICAgIGludDMyX3QgeTsKKyAgICAgICAgaW50MzJfdCBwcmVzc3VyZTsKKyAgICAgICAgaW50MzJfdCBzaXplOworICAgIH07CisKKyAgICBzdHJ1Y3QgVG91Y2hEYXRhIHsKKyAgICAgICAgdWludDMyX3QgcG9pbnRlckNvdW50OworICAgICAgICBQb2ludGVyRGF0YSBwb2ludGVyc1tNQVhfUE9JTlRFUlNdOworICAgICAgICBCaXRTZXQzMiBpZEJpdHM7CisgICAgICAgIHVpbnQzMl90IGlkVG9JbmRleFtNQVhfUE9JTlRFUl9JRF07CisKKyAgICAgICAgdm9pZCBjb3B5RnJvbShjb25zdCBUb3VjaERhdGEmIG90aGVyKTsKKworICAgICAgICBpbmxpbmUgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgICAgIHBvaW50ZXJDb3VudCA9IDA7CisgICAgICAgICAgICBpZEJpdHMuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBjb21tb24gc3RhdGUgdXNlZCBmb3IgYm90aCBzaW5nbGUtdG91Y2ggYW5kIG11bHRpLXRvdWNoIHNjcmVlbnMgYWZ0ZXIgdGhlIGluaXRpYWwKKyAgICAvLyB0b3VjaCBkZWNvZGluZyBoYXMgYmVlbiBwZXJmb3JtZWQKKyAgICBzdHJ1Y3QgVG91Y2hTY3JlZW5TdGF0ZSB7CisgICAgICAgIFZlY3RvcjxWaXJ0dWFsS2V5PiB2aXJ0dWFsS2V5czsKKworICAgICAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgICAgICBib29sIHVzZUJhZFRvdWNoRmlsdGVyOworICAgICAgICAgICAgYm9vbCB1c2VKdW1weVRvdWNoRmlsdGVyOworICAgICAgICAgICAgYm9vbCB1c2VBdmVyYWdpbmdUb3VjaEZpbHRlcjsKKworICAgICAgICAgICAgQWJzb2x1dGVBeGlzSW5mbyB4QXhpczsKKyAgICAgICAgICAgIEFic29sdXRlQXhpc0luZm8geUF4aXM7CisgICAgICAgICAgICBBYnNvbHV0ZUF4aXNJbmZvIHByZXNzdXJlQXhpczsKKyAgICAgICAgICAgIEFic29sdXRlQXhpc0luZm8gc2l6ZUF4aXM7CisgICAgICAgIH0gcGFyYW1ldGVyczsKKworICAgICAgICAvLyBUaGUgdG91Y2ggZGF0YSBvZiB0aGUgY3VycmVudCBzYW1wbGUgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICBUb3VjaERhdGEgY3VycmVudFRvdWNoOworCisgICAgICAgIC8vIFRoZSB0b3VjaCBkYXRhIG9mIHRoZSBwcmV2aW91cyBzYW1wbGUgdGhhdCB3YXMgcHJvY2Vzc2VkLiAgVGhpcyBpcyB1cGRhdGVkCisgICAgICAgIC8vIGluY3JlbWVudGFsbHkgd2hpbGUgdGhlIGN1cnJlbnQgc2FtcGxlIGlzIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgVG91Y2hEYXRhIGxhc3RUb3VjaDsKKworICAgICAgICAvLyBUaGUgdGltZSB0aGUgcHJpbWFyeSBwb2ludGVyIGxhc3Qgd2VudCBkb3duLgorICAgICAgICBuc2Vjc190IGRvd25UaW1lOworCisgICAgICAgIHN0cnVjdCBDdXJyZW50VmlydHVhbEtleVN0YXRlIHsKKyAgICAgICAgICAgIGJvb2wgZG93bjsKKyAgICAgICAgICAgIG5zZWNzX3QgZG93blRpbWU7CisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGU7CisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlOworICAgICAgICB9IGN1cnJlbnRWaXJ0dWFsS2V5OworCisgICAgICAgIHN0cnVjdCBBdmVyYWdpbmdUb3VjaEZpbHRlclN0YXRlIHsKKyAgICAgICAgICAgIC8vIEluZGl2aWR1YWwgaGlzdG9yeSB0cmFja3MgYXJlIHN0b3JlZCBieSBwb2ludGVyIGlkCisgICAgICAgICAgICB1aW50MzJfdCBoaXN0b3J5U3RhcnRbTUFYX1BPSU5URVJTXTsKKyAgICAgICAgICAgIHVpbnQzMl90IGhpc3RvcnlFbmRbTUFYX1BPSU5URVJTXTsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4OworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHk7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcHJlc3N1cmU7CisgICAgICAgICAgICAgICAgfSBwb2ludGVyc1tNQVhfUE9JTlRFUlNdOworICAgICAgICAgICAgfSBoaXN0b3J5RGF0YVtBVkVSQUdJTkdfSElTVE9SWV9TSVpFXTsKKyAgICAgICAgfSBhdmVyYWdpbmdUb3VjaEZpbHRlcjsKKworICAgICAgICBzdHJ1Y3QgSnVtcFRvdWNoRmlsdGVyU3RhdGUgeworICAgICAgICAgICAgaW50MzJfdCBqdW1weVBvaW50c0Ryb3BwZWQ7CisgICAgICAgIH0ganVtcHlUb3VjaEZpbHRlcjsKKworICAgICAgICBzdHJ1Y3QgUHJlY2FsY3VsYXRlZCB7CisgICAgICAgICAgICBpbnQzMl90IHhPcmlnaW47CisgICAgICAgICAgICBmbG9hdCB4U2NhbGU7CisKKyAgICAgICAgICAgIGludDMyX3QgeU9yaWdpbjsKKyAgICAgICAgICAgIGZsb2F0IHlTY2FsZTsKKworICAgICAgICAgICAgaW50MzJfdCBwcmVzc3VyZU9yaWdpbjsKKyAgICAgICAgICAgIGZsb2F0IHByZXNzdXJlU2NhbGU7CisKKyAgICAgICAgICAgIGludDMyX3Qgc2l6ZU9yaWdpbjsKKyAgICAgICAgICAgIGZsb2F0IHNpemVTY2FsZTsKKyAgICAgICAgfSBwcmVjYWxjdWxhdGVkOworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAgICBib29sIGFwcGx5QmFkVG91Y2hGaWx0ZXIoKTsKKyAgICAgICAgYm9vbCBhcHBseUp1bXB5VG91Y2hGaWx0ZXIoKTsKKyAgICAgICAgdm9pZCBhcHBseUF2ZXJhZ2luZ1RvdWNoRmlsdGVyKCk7CisgICAgICAgIHZvaWQgY2FsY3VsYXRlUG9pbnRlcklkcygpOworCisgICAgICAgIGJvb2wgaXNQb2ludEluc2lkZURpc3BsYXkoaW50MzJfdCB4LCBpbnQzMl90IHkpIGNvbnN0OworICAgIH07CisKKyAgICBJbnB1dERldmljZShpbnQzMl90IGlkLCB1aW50MzJfdCBjbGFzc2VzLCBTdHJpbmc4IG5hbWUpOworCisgICAgaW50MzJfdCBpZDsKKyAgICB1aW50MzJfdCBjbGFzc2VzOworICAgIFN0cmluZzggbmFtZTsKKyAgICBib29sIGlnbm9yZWQ7CisKKyAgICBLZXlib2FyZFN0YXRlIGtleWJvYXJkOworICAgIFRyYWNrYmFsbFN0YXRlIHRyYWNrYmFsbDsKKyAgICBUb3VjaFNjcmVlblN0YXRlIHRvdWNoU2NyZWVuOworICAgIHVuaW9uIHsKKyAgICAgICAgU2luZ2xlVG91Y2hTY3JlZW5TdGF0ZSBzaW5nbGVUb3VjaFNjcmVlbjsKKyAgICAgICAgTXVsdGlUb3VjaFNjcmVlblN0YXRlIG11bHRpVG91Y2hTY3JlZW47CisgICAgfTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIGlubGluZSBib29sIGlzS2V5Ym9hcmQoKSBjb25zdCB7IHJldHVybiBjbGFzc2VzICYgSU5QVVRfREVWSUNFX0NMQVNTX0tFWUJPQVJEOyB9CisgICAgaW5saW5lIGJvb2wgaXNBbHBoYUtleSgpIGNvbnN0IHsgcmV0dXJuIGNsYXNzZXMgJiBJTlBVVF9ERVZJQ0VfQ0xBU1NfQUxQSEFLRVk7IH0KKyAgICBpbmxpbmUgYm9vbCBpc1RyYWNrYmFsbCgpIGNvbnN0IHsgcmV0dXJuIGNsYXNzZXMgJiBJTlBVVF9ERVZJQ0VfQ0xBU1NfVFJBQ0tCQUxMOyB9CisgICAgaW5saW5lIGJvb2wgaXNEUGFkKCkgY29uc3QgeyByZXR1cm4gY2xhc3NlcyAmIElOUFVUX0RFVklDRV9DTEFTU19EUEFEOyB9CisgICAgaW5saW5lIGJvb2wgaXNTaW5nbGVUb3VjaFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIChjbGFzc2VzCisgICAgICAgICAgICAmIChJTlBVVF9ERVZJQ0VfQ0xBU1NfVE9VQ0hTQ1JFRU4gfCBJTlBVVF9ERVZJQ0VfQ0xBU1NfVE9VQ0hTQ1JFRU5fTVQpKQorICAgICAgICAgICAgPT0gSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOOyB9CisgICAgaW5saW5lIGJvb2wgaXNNdWx0aVRvdWNoU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gY2xhc3NlcworICAgICAgICAgICAgJiBJTlBVVF9ERVZJQ0VfQ0xBU1NfVE9VQ0hTQ1JFRU5fTVQ7IH0KKyAgICBpbmxpbmUgYm9vbCBpc1RvdWNoU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gY2xhc3NlcworICAgICAgICAgICAgJiAoSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOIHwgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOX01UKTsgfQorfTsKKworCisvKgorICogSW5wdXQgcmVhZGVyIHBvbGljeSBpbnRlcmZhY2UuCisgKgorICogVGhlIGlucHV0IHJlYWRlciBwb2xpY3kgaXMgdXNlZCBieSB0aGUgaW5wdXQgcmVhZGVyIHRvIGludGVyYWN0IHdpdGggdGhlIFdpbmRvdyBNYW5hZ2VyCisgKiBhbmQgb3RoZXIgc3lzdGVtIGNvbXBvbmVudHMuCisgKgorICogVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBpcyBwYXJ0aWFsbHkgc3VwcG9ydGVkIGJ5IGNhbGxiYWNrcyBpbnRvIHRoZSBEVk0KKyAqIHZpYSBKTkkuICBUaGlzIGludGVyZmFjZSBpcyBhbHNvIG1vY2tlZCBpbiB0aGUgdW5pdCB0ZXN0cy4KKyAqLworY2xhc3MgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2UgOiBwdWJsaWMgdmlydHVhbCBSZWZCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZSgpIHsgfQorICAgIHZpcnR1YWwgfklucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlKCkgeyB9CisKK3B1YmxpYzoKKyAgICAvKiBEaXNwbGF5IG9yaWVudGF0aW9ucy4gKi8KKyAgICBlbnVtIHsKKyAgICAgICAgUk9UQVRJT05fMCA9IDAsCisgICAgICAgIFJPVEFUSU9OXzkwID0gMSwKKyAgICAgICAgUk9UQVRJT05fMTgwID0gMiwKKyAgICAgICAgUk9UQVRJT05fMjcwID0gMworICAgIH07CisKKyAgICAvKiBBY3Rpb25zIHJldHVybmVkIGJ5IGludGVyY2VwdFhYWCBtZXRob2RzLiAqLworICAgIGVudW0geworICAgICAgICAvLyBUaGUgaW5wdXQgZGlzcGF0Y2hlciBzaG91bGQgZG8gbm90aGluZyBhbmQgZGlzY2FyZCB0aGUgaW5wdXQgdW5sZXNzIG90aGVyCisgICAgICAgIC8vIGZsYWdzIGFyZSBzZXQuCisgICAgICAgIEFDVElPTl9OT05FID0gMCwKKworICAgICAgICAvLyBUaGUgaW5wdXQgZGlzcGF0Y2hlciBzaG91bGQgZGlzcGF0Y2ggdGhlIGlucHV0IHRvIHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgICAgQUNUSU9OX0RJU1BBVENIID0gMHgwMDAwMDAwMSwKKworICAgICAgICAvLyBUaGUgaW5wdXQgZGlzcGF0Y2hlciBzaG91bGQgcGVyZm9ybSBzcGVjaWFsIGZpbHRlcmluZyBpbiBwcmVwYXJhdGlvbiBmb3IKKyAgICAgICAgLy8gYSBwZW5kaW5nIGFwcCBzd2l0Y2guCisgICAgICAgIEFDVElPTl9BUFBfU1dJVENIX0NPTUlORyA9IDB4MDAwMDAwMDIsCisKKyAgICAgICAgLy8gVGhlIGlucHV0IGRpc3BhdGNoZXIgc2hvdWxkIGFkZCBQT0xJQ1lfRkxBR19XT0tFX0hFUkUgdG8gdGhlIHBvbGljeSBmbGFncyBpdAorICAgICAgICAvLyBwYXNzZXMgdGhyb3VnaCB0aGUgZGlzcGF0Y2ggcGlwZWxpbmUuCisgICAgICAgIEFDVElPTl9XT0tFX0hFUkUgPSAweDAwMDAwMDA0LAorCisgICAgICAgIC8vIFRoZSBpbnB1dCBkaXNwYXRjaGVyIHNob3VsZCBhZGQgUE9MSUNZX0ZMQUdfQlJJR0hUX0hFUkUgdG8gdGhlIHBvbGljeSBmbGFncyBpdAorICAgICAgICAvLyBwYXNzZXMgdGhyb3VnaCB0aGUgZGlzcGF0Y2ggcGlwZWxpbmUuCisgICAgICAgIEFDVElPTl9CUklHSFRfSEVSRSA9IDB4MDAwMDAwMDgsCisgICAgfTsKKworICAgIC8qIERlc2NyaWJlcyBhIHZpcnR1YWwga2V5LiAqLworICAgIHN0cnVjdCBWaXJ0dWFsS2V5RGVmaW5pdGlvbiB7CisgICAgICAgIGludDMyX3Qgc2NhbkNvZGU7CisKKyAgICAgICAgLy8gY29uZmlndXJlZCBwb3NpdGlvbiBkYXRhLCBzcGVjaWZpZWQgaW4gZGlzcGxheSBjb29yZHMKKyAgICAgICAgaW50MzJfdCBjZW50ZXJYOworICAgICAgICBpbnQzMl90IGNlbnRlclk7CisgICAgICAgIGludDMyX3Qgd2lkdGg7CisgICAgICAgIGludDMyX3QgaGVpZ2h0OworICAgIH07CisKKyAgICAvKiBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkaXNwbGF5IHdpdGggdGhlIHNwZWNpZmllZCBpZC4KKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRpc3BsYXkgaW5mbyBpcyBhdmFpbGFibGUsIGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RGlzcGxheUluZm8oaW50MzJfdCBkaXNwbGF5SWQsCisgICAgICAgICAgICBpbnQzMl90KiB3aWR0aCwgaW50MzJfdCogaGVpZ2h0LCBpbnQzMl90KiBvcmllbnRhdGlvbikgPSAwOworCisgICAgLyogUHJvdmlkZXMgZmVlZGJhY2sgZm9yIGEgdmlydHVhbCBrZXkuCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxLZXlGZWVkYmFjayhuc2Vjc190IHdoZW4sIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgICAgICBpbnQzMl90IGFjdGlvbiwgaW50MzJfdCBmbGFncywgaW50MzJfdCBrZXlDb2RlLAorICAgICAgICAgICAgaW50MzJfdCBzY2FuQ29kZSwgaW50MzJfdCBtZXRhU3RhdGUsIG5zZWNzX3QgZG93blRpbWUpID0gMDsKKworICAgIC8qIEludGVyY2VwdHMgYSBrZXkgZXZlbnQuCisgICAgICogVGhlIHBvbGljeSBjYW4gdXNlIHRoaXMgbWV0aG9kIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBlcmZvcm0gcG93ZXIgbWFuYWdlbWVudCBmdW5jdGlvbnMKKyAgICAgKiBhbmQgZWFybHkgZXZlbnQgcHJlcHJvY2Vzc2luZy4KKyAgICAgKgorICAgICAqIFJldHVybnMgYSBwb2xpY3kgYWN0aW9uIGNvbnN0YW50IHN1Y2ggYXMgQUNUSU9OX0RJU1BBVENILgorICAgICAqLworICAgIHZpcnR1YWwgaW50MzJfdCBpbnRlcmNlcHRLZXkobnNlY3NfdCB3aGVuLCBpbnQzMl90IGRldmljZUlkLAorICAgICAgICAgICAgYm9vbCBkb3duLCBpbnQzMl90IGtleUNvZGUsIGludDMyX3Qgc2NhbkNvZGUsIHVpbnQzMl90IHBvbGljeUZsYWdzKSA9IDA7CisKKyAgICAvKiBJbnRlcmNlcHRzIGEgdHJhY2tiYWxsIGV2ZW50LgorICAgICAqIFRoZSBwb2xpY3kgY2FuIHVzZSB0aGlzIG1ldGhvZCBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25zCisgICAgICogYW5kIGVhcmx5IGV2ZW50IHByZXByb2Nlc3NpbmcuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIGEgcG9saWN5IGFjdGlvbiBjb25zdGFudCBzdWNoIGFzIEFDVElPTl9ESVNQQVRDSC4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGludDMyX3QgaW50ZXJjZXB0VHJhY2tiYWxsKG5zZWNzX3Qgd2hlbiwgYm9vbCBidXR0b25DaGFuZ2VkLCBib29sIGJ1dHRvbkRvd24sCisgICAgICAgICAgICBib29sIHJvbGxlZCkgPSAwOworCisgICAgLyogSW50ZXJjZXB0cyBhIHRvdWNoIGV2ZW50LgorICAgICAqIFRoZSBwb2xpY3kgY2FuIHVzZSB0aGlzIG1ldGhvZCBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25zCisgICAgICogYW5kIGVhcmx5IGV2ZW50IHByZXByb2Nlc3NpbmcuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIGEgcG9saWN5IGFjdGlvbiBjb25zdGFudCBzdWNoIGFzIEFDVElPTl9ESVNQQVRDSC4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGludDMyX3QgaW50ZXJjZXB0VG91Y2gobnNlY3NfdCB3aGVuKSA9IDA7CisKKyAgICAvKiBJbnRlcmNlcHRzIGEgc3dpdGNoIGV2ZW50LgorICAgICAqIFRoZSBwb2xpY3kgY2FuIHVzZSB0aGlzIG1ldGhvZCBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25zCisgICAgICogYW5kIGVhcmx5IGV2ZW50IHByZXByb2Nlc3NpbmcuCisgICAgICoKKyAgICAgKiBTd2l0Y2hlcyBhcmUgbm90IGRpc3BhdGNoZWQgdG8gYXBwbGljYXRpb25zIHNvIHRoaXMgbWV0aG9kIHNob3VsZAorICAgICAqIHVzdWFsbHkgcmV0dXJuIEFDVElPTl9OT05FLgorICAgICAqLworICAgIHZpcnR1YWwgaW50MzJfdCBpbnRlcmNlcHRTd2l0Y2gobnNlY3NfdCB3aGVuLCBpbnQzMl90IHN3aXRjaENvZGUsIGludDMyX3Qgc3dpdGNoVmFsdWUpID0gMDsKKworICAgIC8qIERldGVybWluZXMgd2hldGhlciB0byB0dXJuIG9uIHNvbWUgaGFja3Mgd2UgaGF2ZSB0byBpbXByb3ZlIHRoZSB0b3VjaCBpbnRlcmFjdGlvbiB3aXRoIGEKKyAgICAgKiBjZXJ0YWluIGRldmljZSB3aG9zZSBzY3JlZW4gY3VycmVudGx5IGlzIG5vdCBhbGwgdGhhdCBnb29kLgorICAgICAqLworICAgIHZpcnR1YWwgYm9vbCBmaWx0ZXJUb3VjaEV2ZW50cygpID0gMDsKKworICAgIC8qIERldGVybWluZXMgd2hldGhlciB0byB0dXJuIG9uIHNvbWUgaGFja3MgdG8gaW1wcm92ZSB0b3VjaCBpbnRlcmFjdGlvbiB3aXRoIGFub3RoZXIgZGV2aWNlCisgICAgICogd2hlcmUgdG91Y2ggY29vcmRpbmF0ZSBkYXRhIGNhbiBnZXQgY29ycnVwdGVkLgorICAgICAqLworICAgIHZpcnR1YWwgYm9vbCBmaWx0ZXJKdW1weVRvdWNoRXZlbnRzKCkgPSAwOworCisgICAgLyogR2V0cyB0aGUgY29uZmlndXJlZCB2aXJ0dWFsIGtleSBkZWZpbml0aW9ucyBmb3IgYW4gaW5wdXQgZGV2aWNlLiAqLworICAgIHZpcnR1YWwgdm9pZCBnZXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMoY29uc3QgU3RyaW5nOCYgZGV2aWNlTmFtZSwKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsS2V5RGVmaW5pdGlvbj4mIG91dFZpcnR1YWxLZXlEZWZpbml0aW9ucykgPSAwOworCisgICAgLyogR2V0cyB0aGUgZXhjbHVkZWQgZGV2aWNlIG5hbWVzIGZvciB0aGUgcGxhdGZvcm0uICovCisgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkRGV2aWNlTmFtZXMoVmVjdG9yPFN0cmluZzg+JiBvdXRFeGNsdWRlZERldmljZU5hbWVzKSA9IDA7Cit9OworCisKKy8qIFByb2Nlc3NlcyByYXcgaW5wdXQgZXZlbnRzIGFuZCBzZW5kcyBjb29rZWQgZXZlbnQgZGF0YSB0byBhbiBpbnB1dCBkaXNwYXRjaGVyLiAqLworY2xhc3MgSW5wdXRSZWFkZXJJbnRlcmZhY2UgOiBwdWJsaWMgdmlydHVhbCBSZWZCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBJbnB1dFJlYWRlckludGVyZmFjZSgpIHsgfQorICAgIHZpcnR1YWwgfklucHV0UmVhZGVySW50ZXJmYWNlKCkgeyB9CisKK3B1YmxpYzoKKyAgICAvKiBSdW5zIGEgc2luZ2xlIGl0ZXJhdGlvbiBvZiB0aGUgcHJvY2Vzc2luZyBsb29wLgorICAgICAqIE5vbWluYWxseSByZWFkcyBhbmQgcHJvY2Vzc2VzIG9uZSBpbmNvbWluZyBtZXNzYWdlIGZyb20gdGhlIEV2ZW50SHViLgorICAgICAqCisgICAgICogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgaW5wdXQgcmVhZGVyIHRocmVhZC4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgbG9vcE9uY2UoKSA9IDA7CisKKyAgICAvKiBHZXRzIHRoZSBjdXJyZW50IHZpcnR1YWwga2V5LiAgUmV0dXJucyBmYWxzZSBpZiBub3QgZG93bi4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgb24gYW55IHRocmVhZCAodXN1YWxseSBieSB0aGUgaW5wdXQgbWFuYWdlcikuCisgICAgICovCisgICAgdmlydHVhbCBib29sIGdldEN1cnJlbnRWaXJ0dWFsS2V5KGludDMyX3QqIG91dEtleUNvZGUsIGludDMyX3QqIG91dFNjYW5Db2RlKSBjb25zdCA9IDA7CisKKyAgICAvKiBHZXRzIHRoZSBjdXJyZW50IGlucHV0IGRldmljZSBjb25maWd1cmF0aW9uLgorICAgICAqCisgICAgICogVGhpcyBtZXRob2QgbWF5IGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkICh1c3VhbGx5IGJ5IHRoZSBpbnB1dCBtYW5hZ2VyKS4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q3VycmVudElucHV0Q29uZmlndXJhdGlvbihJbnB1dENvbmZpZ3VyYXRpb24qIG91dENvbmZpZ3VyYXRpb24pIGNvbnN0ID0gMDsKKworICAgIC8qCisgICAgICogUXVlcnkgY3VycmVudCBpbnB1dCBzdGF0ZS4KKyAgICAgKiAgIGRldmljZUlkIG1heSBiZSAtMSB0byBzZWFyY2ggZm9yIHRoZSBkZXZpY2UgYXV0b21hdGljYWxseSwgZmlsdGVyZWQgYnkgY2xhc3MuCisgICAgICogICBkZXZpY2VDbGFzc2VzIG1heSBiZSAtMSB0byBpZ25vcmUgZGV2aWNlIGNsYXNzIHdoaWxlIHNlYXJjaGluZy4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0Q3VycmVudFNjYW5Db2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzY2FuQ29kZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRDdXJyZW50S2V5Q29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qga2V5Q29kZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRDdXJyZW50U3dpdGNoU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzdykgY29uc3QgPSAwOworCisgICAgLyogRGV0ZXJtaW5lIHdoZXRoZXIgcGh5c2ljYWwga2V5cyBleGlzdCBmb3IgdGhlIGdpdmVuIGZyYW1ld29yay1kb21haW4ga2V5IGNvZGVzLiAqLworICAgIHZpcnR1YWwgYm9vbCBoYXNLZXlzKHNpemVfdCBudW1Db2RlcywgY29uc3QgaW50MzJfdCoga2V5Q29kZXMsIHVpbnQ4X3QqIG91dEZsYWdzKSBjb25zdCA9IDA7Cit9OworCisKKy8qIFRoZSBpbnB1dCByZWFkZXIgcmVhZHMgcmF3IGV2ZW50IGRhdGEgZnJvbSB0aGUgZXZlbnQgaHViIGFuZCBwcm9jZXNzZXMgaXQgaW50byBpbnB1dCBldmVudHMKKyAqIHRoYXQgaXQgc2VuZHMgdG8gdGhlIGlucHV0IGRpc3BhdGNoZXIuICBTb21lIGZ1bmN0aW9ucyBvZiB0aGUgaW5wdXQgcmVhZGVyLCBzdWNoIGFzIGVhcmx5CisgKiBldmVudCBmaWx0ZXJpbmcgaW4gbG93IHBvd2VyIHN0YXRlcywgYXJlIGNvbnRyb2xsZWQgYnkgYSBzZXBhcmF0ZSBwb2xpY3kgb2JqZWN0LgorICoKKyAqIElNUE9SVEFOVCBJTlZBUklBTlQ6CisgKiAgICAgQmVjYXVzZSB0aGUgcG9saWN5IGNhbiBwb3RlbnRpYWxseSBibG9jayBvciBjYXVzZSByZS1lbnRyYW5jZSBpbnRvIHRoZSBpbnB1dCByZWFkZXIsCisgKiAgICAgdGhlIGlucHV0IHJlYWRlciBuZXZlciBjYWxscyBpbnRvIHRoZSBwb2xpY3kgd2hpbGUgaG9sZGluZyBpdHMgaW50ZXJuYWwgbG9ja3MuCisgKi8KK2NsYXNzIElucHV0UmVhZGVyIDogcHVibGljIElucHV0UmVhZGVySW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBJbnB1dFJlYWRlcihjb25zdCBzcDxFdmVudEh1YkludGVyZmFjZT4mIGV2ZW50SHViLAorICAgICAgICAgICAgY29uc3Qgc3A8SW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U+JiBwb2xpY3ksCisgICAgICAgICAgICBjb25zdCBzcDxJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2U+JiBkaXNwYXRjaGVyKTsKKyAgICB2aXJ0dWFsIH5JbnB1dFJlYWRlcigpOworCisgICAgdmlydHVhbCB2b2lkIGxvb3BPbmNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Q3VycmVudFZpcnR1YWxLZXkoaW50MzJfdCogb3V0S2V5Q29kZSwgaW50MzJfdCogb3V0U2NhbkNvZGUpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGdldEN1cnJlbnRJbnB1dENvbmZpZ3VyYXRpb24oSW5wdXRDb25maWd1cmF0aW9uKiBvdXRDb25maWd1cmF0aW9uKSBjb25zdDsKKworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRDdXJyZW50U2NhbkNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0Q3VycmVudEtleUNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGUpIGNvbnN0OworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRDdXJyZW50U3dpdGNoU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzdykgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzS2V5cyhzaXplX3QgbnVtQ29kZXMsIGNvbnN0IGludDMyX3QqIGtleUNvZGVzLCB1aW50OF90KiBvdXRGbGFncykgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgLy8gTG9jayB0aGF0IG11c3QgYmUgYWNxdWlyZWQgd2hpbGUgbWFuaXB1bGF0aW5nIHN0YXRlIHRoYXQgbWF5IGJlIGNvbmN1cnJlbnRseSBhY2Nlc3NlZAorICAgIC8vIGZyb20gb3RoZXIgdGhyZWFkcyBieSBpbnB1dCBzdGF0ZSBxdWVyeSBtZXRob2RzLiAgSXQgc2hvdWxkIGJlIGhlbGQgZm9yIGFzIHNob3J0IGEKKyAgICAvLyB0aW1lIGFzIHBvc3NpYmxlLgorICAgIC8vCisgICAgLy8gRXhwb3J0ZWQgc3RhdGU6CisgICAgLy8gICAtIGdsb2JhbCB2aXJ0dWFsIGtleSBjb2RlIGFuZCBzY2FuIGNvZGUKKyAgICAvLyAgIC0gZGV2aWNlIGxpc3QgYW5kIGltbXV0YWJsZSBwcm9wZXJ0aWVzIG9mIGRldmljZXMgc3VjaCBhcyBpZCwgbmFtZSwgYW5kIGNsYXNzCisgICAgLy8gICAgIChidXQgbm90IG90aGVyIGludGVybmFsIGRldmljZSBzdGF0ZSkKKyAgICBtdXRhYmxlIE11dGV4IG1FeHBvcnRlZFN0YXRlTG9jazsKKworICAgIC8vIGN1cnJlbnQgdmlydHVhbCBrZXkgaW5mb3JtYXRpb24gKGxvY2sgbUV4cG9ydGVkU3RhdGVMb2NrKQorICAgIGludDMyX3QgbUV4cG9ydGVkVmlydHVhbEtleUNvZGU7CisgICAgaW50MzJfdCBtRXhwb3J0ZWRWaXJ0dWFsU2NhbkNvZGU7CisKKyAgICAvLyBjdXJyZW50IGlucHV0IGNvbmZpZ3VyYXRpb24gKGxvY2sgbUV4cG9ydGVkU3RhdGVMb2NrKQorICAgIElucHV0Q29uZmlndXJhdGlvbiBtRXhwb3J0ZWRJbnB1dENvbmZpZ3VyYXRpb247CisKKyAgICAvLyBjb21iaW5lZCBrZXkgbWV0YSBzdGF0ZQorICAgIGludDMyX3QgbUdsb2JhbE1ldGFTdGF0ZTsKKworICAgIHNwPEV2ZW50SHViSW50ZXJmYWNlPiBtRXZlbnRIdWI7CisgICAgc3A8SW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U+IG1Qb2xpY3k7CisgICAgc3A8SW5wdXREaXNwYXRjaGVySW50ZXJmYWNlPiBtRGlzcGF0Y2hlcjsKKworICAgIEtleWVkVmVjdG9yPGludDMyX3QsIElucHV0RGV2aWNlKj4gbURldmljZXM7CisKKyAgICAvLyBkaXNwbGF5IHByb3BlcnRpZXMgbmVlZGVkIHRvIHRyYW5zbGF0ZSB0b3VjaCBzY3JlZW4gY29vcmRpbmF0ZXMgaW50byBkaXNwbGF5IGNvb3JkaW5hdGVzCisgICAgaW50MzJfdCBtRGlzcGxheU9yaWVudGF0aW9uOworICAgIGludDMyX3QgbURpc3BsYXlXaWR0aDsKKyAgICBpbnQzMl90IG1EaXNwbGF5SGVpZ2h0OworCisgICAgLy8gbG93LWxldmVsIGlucHV0IGV2ZW50IGRlY29kaW5nCisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCk7CisgICAgdm9pZCBoYW5kbGVEZXZpY2VBZGRlZChjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpOworICAgIHZvaWQgaGFuZGxlRGV2aWNlUmVtb3ZlZChjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpOworICAgIHZvaWQgaGFuZGxlU3luYyhjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpOworICAgIHZvaWQgaGFuZGxlS2V5KGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCk7CisgICAgdm9pZCBoYW5kbGVSZWxhdGl2ZU1vdGlvbihjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpOworICAgIHZvaWQgaGFuZGxlQWJzb2x1dGVNb3Rpb24oY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KTsKKyAgICB2b2lkIGhhbmRsZVN3aXRjaChjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpOworCisgICAgLy8gaW5wdXQgcG9saWN5IHByb2Nlc3NpbmcgYW5kIGRpc3BhdGNoCisgICAgdm9pZCBvbktleShuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsIGJvb2wgZG93biwKKyAgICAgICAgICAgIGludDMyX3Qga2V5Q29kZSwgaW50MzJfdCBzY2FuQ29kZSwgdWludDMyX3QgcG9saWN5RmxhZ3MpOworICAgIHZvaWQgb25Td2l0Y2gobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlLCBpbnQzMl90IHN3aXRjaENvZGUsIGludDMyX3Qgc3dpdGNoVmFsdWUpOworICAgIHZvaWQgb25TaW5nbGVUb3VjaFNjcmVlblN0YXRlQ2hhbmdlZChuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UpOworICAgIHZvaWQgb25NdWx0aVRvdWNoU2NyZWVuU3RhdGVDaGFuZ2VkKG5zZWNzX3Qgd2hlbiwgSW5wdXREZXZpY2UqIGRldmljZSk7CisgICAgdm9pZCBvblRvdWNoU2NyZWVuQ2hhbmdlZChuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsIGJvb2wgaGF2ZVBvaW50ZXJJZHMpOworICAgIHZvaWQgb25UcmFja2JhbGxTdGF0ZUNoYW5nZWQobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlKTsKKyAgICB2b2lkIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQobnNlY3NfdCB3aGVuKTsKKworICAgIGJvb2wgYXBwbHlTdGFuZGFyZElucHV0RGlzcGF0Y2hQb2xpY3lBY3Rpb25zKG5zZWNzX3Qgd2hlbiwKKyAgICAgICAgICAgIGludDMyX3QgcG9saWN5QWN0aW9ucywgdWludDMyX3QqIHBvbGljeUZsYWdzKTsKKworICAgIGJvb2wgY29uc3VtZVZpcnR1YWxLZXlUb3VjaGVzKG5zZWNzX3Qgd2hlbiwgSW5wdXREZXZpY2UqIGRldmljZSwgdWludDMyX3QgcG9saWN5RmxhZ3MpOworICAgIHZvaWQgZGlzcGF0Y2hWaXJ0dWFsS2V5KG5zZWNzX3Qgd2hlbiwgSW5wdXREZXZpY2UqIGRldmljZSwgdWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICBpbnQzMl90IGtleUV2ZW50QWN0aW9uLCBpbnQzMl90IGtleUV2ZW50RmxhZ3MpOworICAgIHZvaWQgZGlzcGF0Y2hUb3VjaGVzKG5zZWNzX3Qgd2hlbiwgSW5wdXREZXZpY2UqIGRldmljZSwgdWludDMyX3QgcG9saWN5RmxhZ3MpOworICAgIHZvaWQgZGlzcGF0Y2hUb3VjaChuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsIHVpbnQzMl90IHBvbGljeUZsYWdzLAorICAgICAgICAgICAgSW5wdXREZXZpY2U6OlRvdWNoRGF0YSogdG91Y2gsIEJpdFNldDMyIGlkQml0cywgaW50MzJfdCBtb3Rpb25FdmVudEFjdGlvbik7CisKKyAgICAvLyBkaXNwbGF5CisgICAgdm9pZCByZXNldERpc3BsYXlQcm9wZXJ0aWVzKCk7CisgICAgYm9vbCByZWZyZXNoRGlzcGxheVByb3BlcnRpZXMoKTsKKworICAgIC8vIGRldmljZSBtYW5hZ2VtZW50CisgICAgSW5wdXREZXZpY2UqIGdldERldmljZShpbnQzMl90IGRldmljZUlkKTsKKyAgICBJbnB1dERldmljZSogZ2V0Tm9uSWdub3JlZERldmljZShpbnQzMl90IGRldmljZUlkKTsKKyAgICB2b2lkIGFkZERldmljZShuc2Vjc190IHdoZW4sIGludDMyX3QgZGV2aWNlSWQpOworICAgIHZvaWQgcmVtb3ZlRGV2aWNlKG5zZWNzX3Qgd2hlbiwgSW5wdXREZXZpY2UqIGRldmljZSk7CisgICAgdm9pZCBjb25maWd1cmVEZXZpY2UoSW5wdXREZXZpY2UqIGRldmljZSk7CisgICAgdm9pZCBjb25maWd1cmVEZXZpY2VGb3JDdXJyZW50RGlzcGxheVNpemUoSW5wdXREZXZpY2UqIGRldmljZSk7CisgICAgdm9pZCBjb25maWd1cmVWaXJ0dWFsS2V5cyhJbnB1dERldmljZSogZGV2aWNlKTsKKyAgICB2b2lkIGNvbmZpZ3VyZUFic29sdXRlQXhpc0luZm8oSW5wdXREZXZpY2UqIGRldmljZSwgaW50IGF4aXMsIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICBJbnB1dERldmljZTo6QWJzb2x1dGVBeGlzSW5mbyogb3V0KTsKKyAgICB2b2lkIGNvbmZpZ3VyZUV4Y2x1ZGVkRGV2aWNlcygpOworCisgICAgLy8gZ2xvYmFsIG1ldGEgc3RhdGUgbWFuYWdlbWVudCBmb3IgYWxsIGRldmljZXMKKyAgICB2b2lkIHJlc2V0R2xvYmFsTWV0YVN0YXRlKCk7CisgICAgaW50MzJfdCBnbG9iYWxNZXRhU3RhdGUoKTsKKworICAgIC8vIHZpcnR1YWwga2V5IG1hbmFnZW1lbnQKKyAgICB2b2lkIHVwZGF0ZUV4cG9ydGVkVmlydHVhbEtleVN0YXRlKCk7CisKKyAgICAvLyBpbnB1dCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQKKyAgICB2b2lkIHVwZGF0ZUV4cG9ydGVkSW5wdXRDb25maWd1cmF0aW9uKCk7Cit9OworCisKKy8qIFJlYWRzIHJhdyBldmVudHMgZnJvbSB0aGUgZXZlbnQgaHViIGFuZCBwcm9jZXNzZXMgdGhlbSwgZW5kbGVzc2x5LiAqLworY2xhc3MgSW5wdXRSZWFkZXJUaHJlYWQgOiBwdWJsaWMgVGhyZWFkIHsKK3B1YmxpYzoKKyAgICBJbnB1dFJlYWRlclRocmVhZChjb25zdCBzcDxJbnB1dFJlYWRlckludGVyZmFjZT4mIHJlYWRlcik7CisgICAgdmlydHVhbCB+SW5wdXRSZWFkZXJUaHJlYWQoKTsKKworcHJpdmF0ZToKKyAgICBzcDxJbnB1dFJlYWRlckludGVyZmFjZT4gbVJlYWRlcjsKKworICAgIHZpcnR1YWwgYm9vbCB0aHJlYWRMb29wKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBfVUlfSU5QVVRfUkVBREVSX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvSW5wdXRUcmFuc3BvcnQuaCBiL2luY2x1ZGUvdWkvSW5wdXRUcmFuc3BvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTcxNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91aS9JbnB1dFRyYW5zcG9ydC5oCkBAIC0wLDAgKzEsMzYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBfVUlfSU5QVVRfVFJBTlNQT1JUX0gKKyNkZWZpbmUgX1VJX0lOUFVUX1RSQU5TUE9SVF9ICisKKy8qKgorICogTmF0aXZlIGlucHV0IHRyYW5zcG9ydC4KKyAqCisgKiBVc2VzIGFub255bW91cyBzaGFyZWQgbWVtb3J5IGFzIGEgd2hpdGVib2FyZCBmb3Igc2VuZGluZyBpbnB1dCBldmVudHMgZnJvbSBhbgorICogSW5wdXRQdWJsaXNoZXIgdG8gYW4gSW5wdXRDb25zdW1lciBhbmQgZW5zdXJpbmcgYXBwcm9wcmlhdGUgc3luY2hyb25pemF0aW9uLgorICogT25lIGludGVyZXN0aW5nIGZlYXR1cmUgaXMgdGhhdCBwdWJsaXNoZWQgZXZlbnRzIGNhbiBiZSB1cGRhdGVkIGluIHBsYWNlIGFzIGxvbmcgYXMgdGhleQorICogaGF2ZSBub3QgeWV0IGJlZW4gY29uc3VtZWQuCisgKgorICogVGhlIElucHV0UHVibGlzaGVyIGFuZCBJbnB1dENvbnN1bWVyIG9ubHkgdGFrZSBjYXJlIG9mIHRyYW5zZmVycmluZyBldmVudCBkYXRhCisgKiBvdmVyIGFuIElucHV0Q2hhbm5lbCBhbmQgc2VuZGluZyBzeW5jaHJvbml6YXRpb24gc2lnbmFscy4gIFRoZSBJbnB1dERpc3BhdGNoZXIgYW5kIElucHV0UXVldWUKKyAqIGJ1aWxkIG9uIHRoZXNlIGFic3RyYWN0aW9ucyB0byBhZGQgbXVsdGlwbGV4aW5nIGFuZCBxdWV1ZWluZy4KKyAqLworCisjaW5jbHVkZSA8c2VtYXBob3JlLmg+CisjaW5jbHVkZSA8dWkvSW5wdXQuaD4KKyNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9Qb2xsTG9vcC5oPgorI2luY2x1ZGUgPHV0aWxzL1RpbWVycy5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLyoKKyAqIEFuIGlucHV0IGNoYW5uZWwgY29uc2lzdHMgb2YgYSBzaGFyZWQgbWVtb3J5IGJ1ZmZlciBhbmQgYSBwYWlyIG9mIHBpcGVzCisgKiB1c2VkIHRvIHNlbmQgaW5wdXQgbWVzc2FnZXMgZnJvbSBhbiBJbnB1dFB1Ymxpc2hlciB0byBhbiBJbnB1dENvbnN1bWVyCisgKiBhY3Jvc3MgcHJvY2Vzc2VzLiAgRWFjaCBjaGFubmVsIGhhcyBhIGRlc2NyaXB0aXZlIG5hbWUgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKyAqCisgKiBFYWNoIGVuZHBvaW50IGhhcyBpdHMgb3duIElucHV0Q2hhbm5lbCBvYmplY3QgdGhhdCBzcGVjaWZpZXMgaXRzIG93biBmaWxlIGRlc2NyaXB0b3JzLgorICoKKyAqIFRoZSBpbnB1dCBjaGFubmVsIGlzIGNsb3NlZCB3aGVuIGFsbCByZWZlcmVuY2VzIHRvIGl0IGFyZSByZWxlYXNlZC4KKyAqLworY2xhc3MgSW5wdXRDaGFubmVsIDogcHVibGljIFJlZkJhc2UgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfklucHV0Q2hhbm5lbCgpOworCitwdWJsaWM6CisgICAgSW5wdXRDaGFubmVsKGNvbnN0IFN0cmluZzgmIG5hbWUsIGludDMyX3QgYXNobWVtRmQsIGludDMyX3QgcmVjZWl2ZVBpcGVGZCwKKyAgICAgICAgICAgIGludDMyX3Qgc2VuZFBpcGVGZCk7CisKKyAgICAvKiBDcmVhdGVzIGEgcGFpciBvZiBpbnB1dCBjaGFubmVscyBhbmQgdGhlaXIgdW5kZXJseWluZyBzaGFyZWQgbWVtb3J5IGJ1ZmZlcnMKKyAgICAgKiBhbmQgcGlwZXMuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIE9LIG9uIHN1Y2Nlc3MuCisgICAgICovCisgICAgc3RhdGljIHN0YXR1c190IG9wZW5JbnB1dENoYW5uZWxQYWlyKGNvbnN0IFN0cmluZzgmIG5hbWUsCisgICAgICAgICAgICBzcDxJbnB1dENoYW5uZWw+JiBvdXRTZXJ2ZXJDaGFubmVsLCBzcDxJbnB1dENoYW5uZWw+JiBvdXRDbGllbnRDaGFubmVsKTsKKworICAgIGlubGluZSBTdHJpbmc4IGdldE5hbWUoKSBjb25zdCB7IHJldHVybiBtTmFtZTsgfQorICAgIGlubGluZSBpbnQzMl90IGdldEFzaG1lbUZkKCkgY29uc3QgeyByZXR1cm4gbUFzaG1lbUZkOyB9CisgICAgaW5saW5lIGludDMyX3QgZ2V0UmVjZWl2ZVBpcGVGZCgpIGNvbnN0IHsgcmV0dXJuIG1SZWNlaXZlUGlwZUZkOyB9CisgICAgaW5saW5lIGludDMyX3QgZ2V0U2VuZFBpcGVGZCgpIGNvbnN0IHsgcmV0dXJuIG1TZW5kUGlwZUZkOyB9CisKKyAgICAvKiBTZW5kcyBhIHNpZ25hbCB0byB0aGUgb3RoZXIgZW5kcG9pbnQuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIE9LIG9uIHN1Y2Nlc3MuCisgICAgICogUmV0dXJucyBERUFEX09CSkVDVCBpZiB0aGUgY2hhbm5lbCdzIHBlZXIgaGFzIGJlZW4gY2xvc2VkLgorICAgICAqIE90aGVyIGVycm9ycyBwcm9iYWJseSBpbmRpY2F0ZSB0aGF0IHRoZSBjaGFubmVsIGlzIGJyb2tlbi4KKyAgICAgKi8KKyAgICBzdGF0dXNfdCBzZW5kU2lnbmFsKGNoYXIgc2lnbmFsKTsKKworICAgIC8qIFJlY2VpdmVzIGEgc2lnbmFsIHNlbmQgYnkgdGhlIG90aGVyIGVuZHBvaW50LgorICAgICAqIChTaG91bGQgb25seSBjYWxsIHRoaXMgYWZ0ZXIgcG9sbCgpIGluZGljYXRlcyB0aGF0IHRoZSByZWNlaXZlUGlwZUZkIGhhcyBhdmFpbGFibGUgaW5wdXQuKQorICAgICAqCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqIFJldHVybnMgV09VTERfQkxPQ0sgaWYgdGhlcmUgaXMgbm8gc2lnbmFsIHByZXNlbnQuCisgICAgICogUmV0dXJucyBERUFEX09CSkVDVCBpZiB0aGUgY2hhbm5lbCdzIHBlZXIgaGFzIGJlZW4gY2xvc2VkLgorICAgICAqIE90aGVyIGVycm9ycyBwcm9iYWJseSBpbmRpY2F0ZSB0aGF0IHRoZSBjaGFubmVsIGlzIGJyb2tlbi4KKyAgICAgKi8KKyAgICBzdGF0dXNfdCByZWNlaXZlU2lnbmFsKGNoYXIqIG91dFNpZ25hbCk7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nOCBtTmFtZTsKKyAgICBpbnQzMl90IG1Bc2htZW1GZDsKKyAgICBpbnQzMl90IG1SZWNlaXZlUGlwZUZkOworICAgIGludDMyX3QgbVNlbmRQaXBlRmQ7Cit9OworCisvKgorICogUHJpdmF0ZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24gb2YgaW5wdXQgZXZlbnRzIGFzIG1lc3NhZ2VzIHdyaXR0ZW4gaW50byBhbgorICogYXNobWVtIGJ1ZmZlci4KKyAqLworc3RydWN0IElucHV0TWVzc2FnZSB7CisgICAgLyogU2VtYXBob3JlIGNvdW50IGlzIHNldCB0byAxIHdoZW4gdGhlIG1lc3NhZ2UgaXMgcHVibGlzaGVkLgorICAgICAqIEl0IGJlY29tZXMgMCB0cmFuc2llbnRseSB3aGlsZSB0aGUgcHVibGlzaGVyIHVwZGF0ZXMgdGhlIG1lc3NhZ2UuCisgICAgICogSXQgYmVjb21lcyAwIHBlcm1hbmVudGx5IHdoZW4gdGhlIGNvbnN1bWVyIGNvbnN1bWVzIHRoZSBtZXNzYWdlLgorICAgICAqLworICAgIHNlbV90IHNlbWFwaG9yZTsKKworICAgIC8qIEluaXRpYWxpemVkIHRvIGZhbHNlIGJ5IHRoZSBwdWJsaXNoZXIuCisgICAgICogU2V0IHRvIHRydWUgYnkgdGhlIGNvbnN1bWVyIHdoZW4gaXQgY29uc3VtZXMgdGhlIG1lc3NhZ2UuCisgICAgICovCisgICAgYm9vbCBjb25zdW1lZDsKKworICAgIGludDMyX3QgdHlwZTsKKworICAgIHN0cnVjdCBTYW1wbGVEYXRhIHsKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWU7CisgICAgICAgIFBvaW50ZXJDb29yZHMgY29vcmRzWzBdOyAvLyB2YXJpYWJsZSBsZW5ndGgKKyAgICB9OworCisgICAgaW50MzJfdCBkZXZpY2VJZDsKKyAgICBpbnQzMl90IG5hdHVyZTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGludDMyX3QgYWN0aW9uOworICAgICAgICAgICAgaW50MzJfdCBmbGFnczsKKyAgICAgICAgICAgIGludDMyX3Qga2V5Q29kZTsKKyAgICAgICAgICAgIGludDMyX3Qgc2NhbkNvZGU7CisgICAgICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZTsKKyAgICAgICAgICAgIGludDMyX3QgcmVwZWF0Q291bnQ7CisgICAgICAgICAgICBuc2Vjc190IGRvd25UaW1lOworICAgICAgICAgICAgbnNlY3NfdCBldmVudFRpbWU7CisgICAgICAgIH0ga2V5OworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQzMl90IGFjdGlvbjsKKyAgICAgICAgICAgIGludDMyX3QgbWV0YVN0YXRlOworICAgICAgICAgICAgaW50MzJfdCBlZGdlRmxhZ3M7CisgICAgICAgICAgICBuc2Vjc190IGRvd25UaW1lOworICAgICAgICAgICAgZmxvYXQgeE9mZnNldDsKKyAgICAgICAgICAgIGZsb2F0IHlPZmZzZXQ7CisgICAgICAgICAgICBmbG9hdCB4UHJlY2lzaW9uOworICAgICAgICAgICAgZmxvYXQgeVByZWNpc2lvbjsKKyAgICAgICAgICAgIHNpemVfdCBwb2ludGVyQ291bnQ7CisgICAgICAgICAgICBpbnQzMl90IHBvaW50ZXJJZHNbTUFYX1BPSU5URVJTXTsKKyAgICAgICAgICAgIHNpemVfdCBzYW1wbGVDb3VudDsKKyAgICAgICAgICAgIFNhbXBsZURhdGEgc2FtcGxlRGF0YVswXTsgLy8gdmFyaWFibGUgbGVuZ3RoCisgICAgICAgIH0gbW90aW9uOworICAgIH07CisKKyAgICAvKiBHZXRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYWRkIHRvIHN0ZXAgdG8gdGhlIG5leHQgU2FtcGxlRGF0YSBvYmplY3QgaW4gYSBtb3Rpb24KKyAgICAgKiBldmVudCBtZXNzYWdlIGZvciBhIGdpdmVuIG51bWJlciBvZiBwb2ludGVycy4KKyAgICAgKi8KKyAgICBzdGF0aWMgaW5saW5lIHNpemVfdCBzYW1wbGVEYXRhU3RyaWRlKHNpemVfdCBwb2ludGVyQ291bnQpIHsKKyAgICAgICAgcmV0dXJuIHNpemVvZihJbnB1dE1lc3NhZ2U6OlNhbXBsZURhdGEpICsgcG9pbnRlckNvdW50ICogc2l6ZW9mKFBvaW50ZXJDb29yZHMpOworICAgIH0KKworICAgIC8qIEFkZHMgdGhlIFNhbXBsZURhdGEgc3RyaWRlIHRvIHRoZSBnaXZlbiBwb2ludGVyLiAqLworICAgIHN0YXRpYyBpbmxpbmUgU2FtcGxlRGF0YSogc2FtcGxlRGF0YVB0ckluY3JlbWVudChTYW1wbGVEYXRhKiBwdHIsIHNpemVfdCBzdHJpZGUpIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5wdXRNZXNzYWdlOjpTYW1wbGVEYXRhKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocHRyKSArIHN0cmlkZSk7CisgICAgfQorfTsKKworLyoKKyAqIFB1Ymxpc2hlcyBpbnB1dCBldmVudHMgdG8gYW4gYW5vbnltb3VzIHNoYXJlZCBtZW1vcnkgYnVmZmVyLgorICogVXNlcyBhdG9taWMgb3BlcmF0aW9ucyB0byBjb29yZGluYXRlIHNoYXJlZCBhY2Nlc3Mgd2l0aCBhIHNpbmdsZSBjb25jdXJyZW50IGNvbnN1bWVyLgorICovCitjbGFzcyBJbnB1dFB1Ymxpc2hlciB7CitwdWJsaWM6CisgICAgLyogQ3JlYXRlcyBhIHB1Ymxpc2hlciBhc3NvY2lhdGVkIHdpdGggYW4gaW5wdXQgY2hhbm5lbC4gKi8KKyAgICBleHBsaWNpdCBJbnB1dFB1Ymxpc2hlcihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBjaGFubmVsKTsKKworICAgIC8qIERlc3Ryb3lzIHRoZSBwdWJsaXNoZXIgYW5kIHJlbGVhc2VzIGl0cyBpbnB1dCBjaGFubmVsLiAqLworICAgIH5JbnB1dFB1Ymxpc2hlcigpOworCisgICAgLyogR2V0cyB0aGUgdW5kZXJseWluZyBpbnB1dCBjaGFubmVsLiAqLworICAgIGlubGluZSBzcDxJbnB1dENoYW5uZWw+IGdldENoYW5uZWwoKSB7IHJldHVybiBtQ2hhbm5lbDsgfQorCisgICAgLyogUHJlcGFyZXMgdGhlIHB1Ymxpc2hlciBmb3IgdXNlLiAgTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGl0IGlzIHVzZWQuCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqCisgICAgICogVGhpcyBtZXRob2QgaW1wbGljaXRseSBjYWxscyByZXNldCgpLiAqLworICAgIHN0YXR1c190IGluaXRpYWxpemUoKTsKKworICAgIC8qIFJlc2V0cyB0aGUgcHVibGlzaGVyIHRvIGl0cyBpbml0aWFsIHN0YXRlIGFuZCB1bnBpbnMgaXRzIGFzaG1lbSBidWZmZXIuCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqCisgICAgICogU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBhbiBldmVudCBoYXMgYmVlbiBjb25zdW1lZCB0byByZWxlYXNlIHJlc291cmNlcyB1c2VkIGJ5IHRoZQorICAgICAqIHB1Ymxpc2hlciB1bnRpbCB0aGUgbmV4dCBldmVudCBpcyByZWFkeSB0byBiZSBwdWJsaXNoZWQuCisgICAgICovCisgICAgc3RhdHVzX3QgcmVzZXQoKTsKKworICAgIC8qIFB1Ymxpc2hlcyBhIGtleSBldmVudCB0byB0aGUgYXNobWVtIGJ1ZmZlci4KKyAgICAgKgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKiBSZXR1cm5zIElOVkFMSURfT1BFUkFUSU9OIGlmIHRoZSBwdWJsaXNoZXIgaGFzIG5vdCBiZWVuIHJlc2V0LgorICAgICAqLworICAgIHN0YXR1c190IHB1Ymxpc2hLZXlFdmVudCgKKyAgICAgICAgICAgIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgICAgICBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgICAgIGludDMyX3QgYWN0aW9uLAorICAgICAgICAgICAgaW50MzJfdCBmbGFncywKKyAgICAgICAgICAgIGludDMyX3Qga2V5Q29kZSwKKyAgICAgICAgICAgIGludDMyX3Qgc2NhbkNvZGUsCisgICAgICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZSwKKyAgICAgICAgICAgIGludDMyX3QgcmVwZWF0Q291bnQsCisgICAgICAgICAgICBuc2Vjc190IGRvd25UaW1lLAorICAgICAgICAgICAgbnNlY3NfdCBldmVudFRpbWUpOworCisgICAgLyogUHVibGlzaGVzIGEgbW90aW9uIGV2ZW50IHRvIHRoZSBhc2htZW0gYnVmZmVyLgorICAgICAqCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqIFJldHVybnMgSU5WQUxJRF9PUEVSQVRJT04gaWYgdGhlIHB1Ymxpc2hlciBoYXMgbm90IGJlZW4gcmVzZXQuCisgICAgICogUmV0dXJucyBCQURfVkFMVUUgaWYgcG9pbnRlckNvdW50IGlzIGxlc3MgdGhhbiAxIG9yIGdyZWF0ZXIgdGhhbiBNQVhfUE9JTlRFUlMuCisgICAgICovCisgICAgc3RhdHVzX3QgcHVibGlzaE1vdGlvbkV2ZW50KAorICAgICAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgICAgIGludDMyX3QgbmF0dXJlLAorICAgICAgICAgICAgaW50MzJfdCBhY3Rpb24sCisgICAgICAgICAgICBpbnQzMl90IGVkZ2VGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgbWV0YVN0YXRlLAorICAgICAgICAgICAgZmxvYXQgeE9mZnNldCwKKyAgICAgICAgICAgIGZsb2F0IHlPZmZzZXQsCisgICAgICAgICAgICBmbG9hdCB4UHJlY2lzaW9uLAorICAgICAgICAgICAgZmxvYXQgeVByZWNpc2lvbiwKKyAgICAgICAgICAgIG5zZWNzX3QgZG93blRpbWUsCisgICAgICAgICAgICBuc2Vjc190IGV2ZW50VGltZSwKKyAgICAgICAgICAgIHNpemVfdCBwb2ludGVyQ291bnQsCisgICAgICAgICAgICBjb25zdCBpbnQzMl90KiBwb2ludGVySWRzLAorICAgICAgICAgICAgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3Jkcyk7CisKKyAgICAvKiBBcHBlbmRzIGEgbW90aW9uIHNhbXBsZSB0byBhIG1vdGlvbiBldmVudCB1bmxlc3MgYWxyZWFkeSBjb25zdW1lZC4KKyAgICAgKgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKiBSZXR1cm5zIElOVkFMSURfT1BFUkFUSU9OIGlmIHRoZSBjdXJyZW50IGV2ZW50IGlzIG5vdCBhIE1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRSBldmVudC4KKyAgICAgKiBSZXR1cm5zIEZBSUxFRF9UUkFOU0FDVElPTiBpZiB0aGUgY3VycmVudCBldmVudCBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVkLgorICAgICAqIFJldHVybnMgTk9fTUVNT1JZIGlmIHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgbm8gYWRkaXRpb25hbCBzYW1wbGVzIGNhbiBiZSBhZGRlZC4KKyAgICAgKi8KKyAgICBzdGF0dXNfdCBhcHBlbmRNb3Rpb25TYW1wbGUoCisgICAgICAgICAgICBuc2Vjc190IGV2ZW50VGltZSwKKyAgICAgICAgICAgIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMpOworCisgICAgLyogU2VuZHMgYSBkaXNwYXRjaCBzaWduYWwgdG8gdGhlIGNvbnN1bWVyIHRvIGluZm9ybSBpdCB0aGF0IGEgbmV3IG1lc3NhZ2UgaXMgYXZhaWxhYmxlLgorICAgICAqCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqIEVycm9ycyBwcm9iYWJseSBpbmRpY2F0ZSB0aGF0IHRoZSBjaGFubmVsIGlzIGJyb2tlbi4KKyAgICAgKi8KKyAgICBzdGF0dXNfdCBzZW5kRGlzcGF0Y2hTaWduYWwoKTsKKworICAgIC8qIFJlY2VpdmVzIHRoZSBmaW5pc2hlZCBzaWduYWwgZnJvbSB0aGUgY29uc3VtZXIgaW4gcmVwbHkgdG8gdGhlIG9yaWdpbmFsIGRpc3BhdGNoIHNpZ25hbC4KKyAgICAgKgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKiBSZXR1cm5zIFdPVUxEX0JMT0NLIGlmIHRoZXJlIGlzIG5vIHNpZ25hbCBwcmVzZW50LgorICAgICAqIE90aGVyIGVycm9ycyBwcm9iYWJseSBpbmRpY2F0ZSB0aGF0IHRoZSBjaGFubmVsIGlzIGJyb2tlbi4KKyAgICAgKi8KKyAgICBzdGF0dXNfdCByZWNlaXZlRmluaXNoZWRTaWduYWwoKTsKKworcHJpdmF0ZToKKyAgICBzcDxJbnB1dENoYW5uZWw+IG1DaGFubmVsOworCisgICAgc2l6ZV90IG1Bc2htZW1TaXplOworICAgIElucHV0TWVzc2FnZSogbVNoYXJlZE1lc3NhZ2U7CisgICAgYm9vbCBtUGlubmVkOworICAgIGJvb2wgbVNlbWFwaG9yZUluaXRpYWxpemVkOworICAgIGJvb2wgbVdhc0Rpc3BhdGNoZWQ7CisKKyAgICBzaXplX3QgbU1vdGlvbkV2ZW50UG9pbnRlckNvdW50OworICAgIElucHV0TWVzc2FnZTo6U2FtcGxlRGF0YSogbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVRhaWw7CisgICAgc2l6ZV90IG1Nb3Rpb25FdmVudFNhbXBsZURhdGFTdHJpZGU7CisKKyAgICBzdGF0dXNfdCBwdWJsaXNoSW5wdXRFdmVudCgKKyAgICAgICAgICAgIGludDMyX3QgdHlwZSwKKyAgICAgICAgICAgIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgICAgICBpbnQzMl90IG5hdHVyZSk7Cit9OworCisvKgorICogQ29uc3VtZXMgaW5wdXQgZXZlbnRzIGZyb20gYW4gYW5vbnltb3VzIHNoYXJlZCBtZW1vcnkgYnVmZmVyLgorICogVXNlcyBhdG9taWMgb3BlcmF0aW9ucyB0byBjb29yZGluYXRlIHNoYXJlZCBhY2Nlc3Mgd2l0aCBhIHNpbmdsZSBjb25jdXJyZW50IHB1Ymxpc2hlci4KKyAqLworY2xhc3MgSW5wdXRDb25zdW1lciB7CitwdWJsaWM6CisgICAgLyogQ3JlYXRlcyBhIGNvbnN1bWVyIGFzc29jaWF0ZWQgd2l0aCBhbiBpbnB1dCBjaGFubmVsLiAqLworICAgIGV4cGxpY2l0IElucHV0Q29uc3VtZXIoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgY2hhbm5lbCk7CisKKyAgICAvKiBEZXN0cm95cyB0aGUgY29uc3VtZXIgYW5kIHJlbGVhc2VzIGl0cyBpbnB1dCBjaGFubmVsLiAqLworICAgIH5JbnB1dENvbnN1bWVyKCk7CisKKyAgICAvKiBHZXRzIHRoZSB1bmRlcmx5aW5nIGlucHV0IGNoYW5uZWwuICovCisgICAgaW5saW5lIHNwPElucHV0Q2hhbm5lbD4gZ2V0Q2hhbm5lbCgpIHsgcmV0dXJuIG1DaGFubmVsOyB9CisKKyAgICAvKiBQcmVwYXJlcyB0aGUgY29uc3VtZXIgZm9yIHVzZS4gIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBpdCBpcyB1c2VkLiAqLworICAgIHN0YXR1c190IGluaXRpYWxpemUoKTsKKworICAgIC8qIENvbnN1bWVzIHRoZSBpbnB1dCBldmVudCBpbiB0aGUgYnVmZmVyIGFuZCBjb3BpZXMgaXRzIGNvbnRlbnRzIGludG8KKyAgICAgKiBhbiBJbnB1dEV2ZW50IG9iamVjdCBjcmVhdGVkIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmFjdG9yeS4KKyAgICAgKiBUaGlzIG9wZXJhdGlvbiB3aWxsIGJsb2NrIGlmIHRoZSBwdWJsaXNoZXIgaXMgdXBkYXRpbmcgdGhlIGV2ZW50LgorICAgICAqCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqIFJldHVybnMgSU5WQUxJRF9PUEVSQVRJT04gaWYgdGhlcmUgaXMgbm8gY3VycmVudGx5IHB1Ymxpc2hlZCBldmVudC4KKyAgICAgKiBSZXR1cm5zIE5PX01FTU9SWSBpZiB0aGUgZXZlbnQgY291bGQgbm90IGJlIGNyZWF0ZWQuCisgICAgICovCisgICAgc3RhdHVzX3QgY29uc3VtZShJbnB1dEV2ZW50RmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSwgSW5wdXRFdmVudCoqIG91dEV2ZW50KTsKKworICAgIC8qIFNlbmRzIGEgZmluaXNoZWQgc2lnbmFsIHRvIHRoZSBwdWJsaXNoZXIgdG8gaW5mb3JtIGl0IHRoYXQgdGhlIGN1cnJlbnQgbWVzc2FnZSBpcworICAgICAqIGZpbmlzaGVkIHByb2Nlc3NpbmcuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIE9LIG9uIHN1Y2Nlc3MuCisgICAgICogRXJyb3JzIHByb2JhYmx5IGluZGljYXRlIHRoYXQgdGhlIGNoYW5uZWwgaXMgYnJva2VuLgorICAgICAqLworICAgIHN0YXR1c190IHNlbmRGaW5pc2hlZFNpZ25hbCgpOworCisgICAgLyogUmVjZWl2ZXMgdGhlIGRpc3BhdGNoZWQgc2lnbmFsIGZyb20gdGhlIHB1Ymxpc2hlci4KKyAgICAgKgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKiBSZXR1cm5zIFdPVUxEX0JMT0NLIGlmIHRoZXJlIGlzIG5vIHNpZ25hbCBwcmVzZW50LgorICAgICAqIE90aGVyIGVycm9ycyBwcm9iYWJseSBpbmRpY2F0ZSB0aGF0IHRoZSBjaGFubmVsIGlzIGJyb2tlbi4KKyAgICAgKi8KKyAgICBzdGF0dXNfdCByZWNlaXZlRGlzcGF0Y2hTaWduYWwoKTsKKworcHJpdmF0ZToKKyAgICBzcDxJbnB1dENoYW5uZWw+IG1DaGFubmVsOworCisgICAgc2l6ZV90IG1Bc2htZW1TaXplOworICAgIElucHV0TWVzc2FnZSogbVNoYXJlZE1lc3NhZ2U7CisKKyAgICB2b2lkIHBvcHVsYXRlS2V5RXZlbnQoS2V5RXZlbnQqIGtleUV2ZW50KSBjb25zdDsKKyAgICB2b2lkIHBvcHVsYXRlTW90aW9uRXZlbnQoTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50KSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworLyoKKyAqIE5ESyBpbnB1dCBxdWV1ZSBBUEkuCisgKi8KK3N0cnVjdCBBSW5wdXRRdWV1ZSB7CitwdWJsaWM6CisgICAgLyogQ3JlYXRlcyBhIGNvbnN1bWVyIGFzc29jaWF0ZWQgd2l0aCBhbiBpbnB1dCBjaGFubmVsLiAqLworICAgIGV4cGxpY2l0IEFJbnB1dFF1ZXVlKGNvbnN0IGFuZHJvaWQ6OnNwPGFuZHJvaWQ6OklucHV0Q2hhbm5lbD4mIGNoYW5uZWwpOworCisgICAgLyogRGVzdHJveXMgdGhlIGNvbnN1bWVyIGFuZCByZWxlYXNlcyBpdHMgaW5wdXQgY2hhbm5lbC4gKi8KKyAgICB2aXJ0dWFsIH5BSW5wdXRRdWV1ZSgpOworCisgICAgaW5saW5lIGFuZHJvaWQ6OklucHV0Q29uc3VtZXImIGdldENvbnN1bWVyKCkgeyByZXR1cm4gbUNvbnN1bWVyOyB9CisgICAgCisgICAgYW5kcm9pZDo6c3RhdHVzX3QgY29uc3VtZShhbmRyb2lkOjpJbnB1dEV2ZW50KiogZXZlbnQpOworICAgIAorICAgIHZvaWQgc2V0UG9sbExvb3AoY29uc3QgYW5kcm9pZDo6c3A8YW5kcm9pZDo6UG9sbExvb3A+JiBwb2xsTG9vcCkgeyBtUG9sbExvb3AgPSBwb2xsTG9vcDsgfQorICAgIGNvbnN0IGFuZHJvaWQ6OnNwPGFuZHJvaWQ6OlBvbGxMb29wPiBnZXRQb2xsTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1Qb2xsTG9vcDsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBkb0RlZmF1bHRLZXkoYW5kcm9pZDo6S2V5RXZlbnQqIGtleUV2ZW50KSA9IDA7CisgICAgCitwcml2YXRlOgorICAgIGFuZHJvaWQ6OklucHV0Q29uc3VtZXIgbUNvbnN1bWVyOworICAgIGFuZHJvaWQ6OlByZWFsbG9jYXRlZElucHV0RXZlbnRGYWN0b3J5IG1JbnB1dEV2ZW50RmFjdG9yeTsKKyAgICBhbmRyb2lkOjpzcDxhbmRyb2lkOjpQb2xsTG9vcD4gbVBvbGxMb29wOworfTsKKworI2VuZGlmIC8vIF9VSV9JTlBVVF9UUkFOU1BPUlRfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9LZXljb2RlTGFiZWxzLmggYi9pbmNsdWRlL3VpL0tleWNvZGVMYWJlbHMuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDU3MWU0N2IuLmU4MWQwZjkKLS0tIGEvaW5jbHVkZS91aS9LZXljb2RlTGFiZWxzLmgKKysrIGIvaW5jbHVkZS91aS9LZXljb2RlTGFiZWxzLmgKQEAgLTExNCw2ICsxMTQsMTAgQEAKICAgICB7ICJNRURJQV9SRVdJTkQiLCA4OSB9LAogICAgIHsgIk1FRElBX0ZBU1RfRk9SV0FSRCIsIDkwIH0sCiAgICAgeyAiTVVURSIsIDkxIH0sCisgICAgeyAiUEFHRV9VUCIsIDkyIH0sCisgICAgeyAiUEFHRV9ET1dOIiwgOTMgfSwKKyAgICB7ICJQSUNUU1lNQk9MUyIsIDk0IH0sCisgICAgeyAiU1dJVENIX0NIQVJTRVQiLCA5NSB9LAogCiAgICAgLy8gTk9URTogSWYgeW91IGFkZCBhIG5ldyBrZXljb2RlIGhlcmUgeW91IG11c3QgYWxzbyBhZGQgaXQgdG86CiAgICAgLy8gICAoZW51bSBLZXlDb2RlLCBpbiB0aGlzIGZpbGUpCkBAIC0yMTgsNyArMjIyLDExIEBACiAgICAga0tleUNvZGVQcmV2aW91c1NvbmcgPSA4OCwKICAgICBrS2V5Q29kZVJld2luZCA9IDg5LAogICAgIGtLZXlDb2RlRm9yd2FyZCA9IDkwLAotICAgIGtLZXlDb2RlTXV0ZSA9IDkxCisgICAga0tleUNvZGVNdXRlID0gOTEsCisgICAga0tleUNvZGVQYWdlVXAgPSA5MiwKKyAgICBrS2V5Q29kZVBhZ2VEb3duID0gOTMsCisgICAga0tleUNvZGVQaWN0U3ltYm9scyA9IDk0LAorICAgIGtLZXlDb2RlU3dpdGNoQ2hhcnNldCA9IDk1CiB9IEtleUNvZGU7CiAKIHN0YXRpYyBjb25zdCBLZXljb2RlTGFiZWwgRkxBR1NbXSA9IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvYW5kcm9pZF9uYXRpdmVfYnVmZmVyLmggYi9pbmNsdWRlL3VpL2FuZHJvaWRfbmF0aXZlX2J1ZmZlci5oCmluZGV4IDljOTJhZjguLjQwMjg0M2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWkvYW5kcm9pZF9uYXRpdmVfYnVmZmVyLmgKKysrIGIvaW5jbHVkZS91aS9hbmRyb2lkX25hdGl2ZV9idWZmZXIuaApAQCAtMzMsNiArMzMsMTUgQEAKICAgICAgICAgY29tbW9uLnZlcnNpb24gPSBzaXplb2YoYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QpOwogICAgICAgICBtZW1zZXQoY29tbW9uLnJlc2VydmVkLCAwLCBzaXplb2YoY29tbW9uLnJlc2VydmVkKSk7CiAgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBtZXRob2RzIHRoYXQgc3A8YW5kcm9pZF9uYXRpdmVfYnVmZmVyX3Q+IGV4cGVjdHMgc28gdGhhdCBpdAorICAgIC8vIGNhbiBiZSB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgcmVmY291bnQgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3Qncy4KKyAgICB2b2lkIGluY1N0cm9uZyhjb25zdCB2b2lkKiBpZCkgY29uc3QgeworICAgICAgICBjb21tb24uaW5jUmVmKGNvbnN0X2Nhc3Q8YW5kcm9pZF9uYXRpdmVfYmFzZV90Kj4oJmNvbW1vbikpOworICAgIH0KKyAgICB2b2lkIGRlY1N0cm9uZyhjb25zdCB2b2lkKiBpZCkgY29uc3QgeworICAgICAgICBjb21tb24uZGVjUmVmKGNvbnN0X2Nhc3Q8YW5kcm9pZF9uYXRpdmVfYmFzZV90Kj4oJmNvbW1vbikpOworICAgIH0KICNlbmRpZgogCiAgICAgc3RydWN0IGFuZHJvaWRfbmF0aXZlX2Jhc2VfdCBjb21tb247CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VpL2VnbC9hbmRyb2lkX25hdGl2ZXMuaCBiL2luY2x1ZGUvdWkvZWdsL2FuZHJvaWRfbmF0aXZlcy5oCmluZGV4IDc3M2ZkOTMuLmNhODliMDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWkvZWdsL2FuZHJvaWRfbmF0aXZlcy5oCisrKyBiL2luY2x1ZGUvdWkvZWdsL2FuZHJvaWRfbmF0aXZlcy5oCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpbmNsdWRlIDxoYXJkd2FyZS9ncmFsbG9jLmg+CiAKKyNpbmNsdWRlIDxhbmRyb2lkL25hdGl2ZV93aW5kb3cuaD4KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtNDEsNiArNDMsMTQgQEAKIAogc3RydWN0IGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90OwogCit0eXBlZGVmIHN0cnVjdCBhbmRyb2lkX25hdGl2ZV9yZWN0X3QKK3sKKyAgICBpbnQzMl90IGxlZnQ7CisgICAgaW50MzJfdCB0b3A7CisgICAgaW50MzJfdCByaWdodDsKKyAgICBpbnQzMl90IGJvdHRvbTsKK30gYW5kcm9pZF9uYXRpdmVfcmVjdF90OworCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdHlwZWRlZiBzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfYmFzZV90CkBAIC02MywxNSArNzMsMTggQEAKIC8qIGF0dHJpYnV0ZXMgcXVlcmlhYmxlIHdpdGggcXVlcnkoKSAqLwogZW51bSB7CiAgICAgTkFUSVZFX1dJTkRPV19XSURUSCAgICAgPSAwLAotICAgIE5BVElWRV9XSU5ET1dfSEVJR0hUICAgID0gMSwKLSAgICBOQVRJVkVfV0lORE9XX0ZPUk1BVCAgICA9IDIsCisgICAgTkFUSVZFX1dJTkRPV19IRUlHSFQsCisgICAgTkFUSVZFX1dJTkRPV19GT1JNQVQsCiB9OwogCiAvKiB2YWxpZCBvcGVyYXRpb25zIGZvciB0aGUgKCpwZXJmb3JtKSgpIGhvb2sgKi8KIGVudW0gewogICAgIE5BVElWRV9XSU5ET1dfU0VUX1VTQUdFICA9IDAsCi0gICAgTkFUSVZFX1dJTkRPV19DT05ORUNUICAgID0gMSwKLSAgICBOQVRJVkVfV0lORE9XX0RJU0NPTk5FQ1QgPSAyCisgICAgTkFUSVZFX1dJTkRPV19DT05ORUNULAorICAgIE5BVElWRV9XSU5ET1dfRElTQ09OTkVDVCwKKyAgICBOQVRJVkVfV0lORE9XX1NFVF9DUk9QLAorICAgIE5BVElWRV9XSU5ET1dfU0VUX0JVRkZFUl9DT1VOVCwKKyAgICBOQVRJVkVfV0lORE9XX1NFVF9CVUZGRVJTX0dFT01FVFJZLAogfTsKIAogLyogcGFyYW1ldGVyIGZvciBOQVRJVkVfV0lORE9XX1tESVNdQ09OTkVDVCAqLwpAQCAtNzksMTYgKzkyLDI1IEBACiAgICAgTkFUSVZFX1dJTkRPV19BUElfRUdMID0gMQogfTsKIAotdHlwZWRlZiBzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QgCitzdHJ1Y3QgQU5hdGl2ZVdpbmRvdyAKIHsKICNpZmRlZiBfX2NwbHVzcGx1cwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KCkKKyAgICBBTmF0aXZlV2luZG93KCkKICAgICAgICAgOiBmbGFncygwKSwgbWluU3dhcEludGVydmFsKDApLCBtYXhTd2FwSW50ZXJ2YWwoMCksIHhkcGkoMCksIHlkcGkoMCkKICAgICB7CiAgICAgICAgIGNvbW1vbi5tYWdpYyA9IEFORFJPSURfTkFUSVZFX1dJTkRPV19NQUdJQzsKLSAgICAgICAgY29tbW9uLnZlcnNpb24gPSBzaXplb2YoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QpOworICAgICAgICBjb21tb24udmVyc2lvbiA9IHNpemVvZihBTmF0aXZlV2luZG93KTsKICAgICAgICAgbWVtc2V0KGNvbW1vbi5yZXNlcnZlZCwgMCwgc2l6ZW9mKGNvbW1vbi5yZXNlcnZlZCkpOwogICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUgbWV0aG9kcyB0aGF0IHNwPEFOYXRpdmVXaW5kb3c+IGV4cGVjdHMgc28gdGhhdCBpdAorICAgIC8vIGNhbiBiZSB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgcmVmY291bnQgQU5hdGl2ZVdpbmRvdydzLgorICAgIHZvaWQgaW5jU3Ryb25nKGNvbnN0IHZvaWQqIGlkKSBjb25zdCB7CisgICAgICAgIGNvbW1vbi5pbmNSZWYoY29uc3RfY2FzdDxhbmRyb2lkX25hdGl2ZV9iYXNlX3QqPigmY29tbW9uKSk7CisgICAgfQorICAgIHZvaWQgZGVjU3Ryb25nKGNvbnN0IHZvaWQqIGlkKSBjb25zdCB7CisgICAgICAgIGNvbW1vbi5kZWNSZWYoY29uc3RfY2FzdDxhbmRyb2lkX25hdGl2ZV9iYXNlX3QqPigmY29tbW9uKSk7CisgICAgfQogI2VuZGlmCiAgICAgCiAgICAgc3RydWN0IGFuZHJvaWRfbmF0aXZlX2Jhc2VfdCBjb21tb247CkBAIC0xMTUsNyArMTM3LDcgQEAKICAgICAgKiAKICAgICAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciAtZXJybm8gb24gZXJyb3IuCiAgICAgICovCi0gICAgaW50ICAgICAoKnNldFN3YXBJbnRlcnZhbCkoc3RydWN0IGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csCisgICAgaW50ICAgICAoKnNldFN3YXBJbnRlcnZhbCkoc3RydWN0IEFOYXRpdmVXaW5kb3cqIHdpbmRvdywKICAgICAgICAgICAgICAgICBpbnQgaW50ZXJ2YWwpOwogICAgIAogICAgIC8qCkBAIC0xMjUsNyArMTQ3LDcgQEAKICAgICAgKiAKICAgICAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciAtZXJybm8gb24gZXJyb3IuCiAgICAgICovCi0gICAgaW50ICAgICAoKmRlcXVldWVCdWZmZXIpKHN0cnVjdCBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCAKKyAgICBpbnQgICAgICgqZGVxdWV1ZUJ1ZmZlcikoc3RydWN0IEFOYXRpdmVXaW5kb3cqIHdpbmRvdywKICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqKiBidWZmZXIpOwogCiAgICAgLyoKQEAgLTEzNSw3ICsxNTcsNyBAQAogICAgICAqIAogICAgICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIC1lcnJubyBvbiBlcnJvci4KICAgICAgKi8KLSAgICBpbnQgICAgICgqbG9ja0J1ZmZlcikoc3RydWN0IGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csCisgICAgaW50ICAgICAoKmxvY2tCdWZmZXIpKHN0cnVjdCBBTmF0aXZlV2luZG93KiB3aW5kb3csCiAgICAgICAgICAgICAgICAgc3RydWN0IGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpOwogICAgLyoKICAgICAqIGhvb2sgY2FsbGVkIGJ5IEVHTCB3aGVuIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlbmRlciBidWZmZXIgYXJlIGRvbmUuIApAQCAtMTQ1LDcgKzE2Nyw3IEBACiAgICAgKiAKICAgICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIC1lcnJubyBvbiBlcnJvci4KICAgICAqLwotICAgIGludCAgICAgKCpxdWV1ZUJ1ZmZlcikoc3RydWN0IGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csCisgICAgaW50ICAgICAoKnF1ZXVlQnVmZmVyKShzdHJ1Y3QgQU5hdGl2ZVdpbmRvdyogd2luZG93LAogICAgICAgICAgICAgICAgIHN0cnVjdCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKTsKIAogICAgIC8qCkBAIC0xNTMsMTMgKzE3NSwxMyBAQAogICAgICAqIAogICAgICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIC1lcnJubyBvbiBlcnJvci4KICAgICAgKi8KLSAgICBpbnQgICAgICgqcXVlcnkpKHN0cnVjdCBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LAorICAgIGludCAgICAgKCpxdWVyeSkoc3RydWN0IEFOYXRpdmVXaW5kb3cqIHdpbmRvdywKICAgICAgICAgICAgICAgICBpbnQgd2hhdCwgaW50KiB2YWx1ZSk7CiAgICAgCiAgICAgLyoKICAgICAgKiBob29rIHVzZWQgdG8gcGVyZm9ybSB2YXJpb3VzIG9wZXJhdGlvbnMgb24gdGhlIHN1cmZhY2UuCiAgICAgICogKCpwZXJmb3JtKSgpIGlzIGEgZ2VuZXJpYyBtZWNoYW5pc20gdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8KLSAgICAgKiBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCB3aGlsZSBrZWVwaW5nIGJhY2t3YXJkIGJpbmFyeSBjb21wYXRpYmlsaXR5LgorICAgICAqIEFOYXRpdmVXaW5kb3cgd2hpbGUga2VlcGluZyBiYWNrd2FyZCBiaW5hcnkgY29tcGF0aWJpbGl0eS4KICAgICAgKiAKICAgICAgKiBUaGlzIGhvb2sgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHksIGluc3RlYWQgdXNlIHRoZSBoZWxwZXIgZnVuY3Rpb25zCiAgICAgICogZGVmaW5lZCBiZWxvdy4KQEAgLTE3MSwxOSArMTkzLDI1IEBACiAgICAgICogICAgIE5BVElWRV9XSU5ET1dfU0VUX1VTQUdFCiAgICAgICogICAgIE5BVElWRV9XSU5ET1dfQ09OTkVDVAogICAgICAqICAgICBOQVRJVkVfV0lORE9XX0RJU0NPTk5FQ1QKKyAgICAgKiAgICAgTkFUSVZFX1dJTkRPV19TRVRfQ1JPUAorICAgICAqICAgICBOQVRJVkVfV0lORE9XX1NFVF9CVUZGRVJfQ09VTlQKKyAgICAgKiAgICAgTkFUSVZFX1dJTkRPV19TRVRfQlVGRkVSU19HRU9NRVRSWQogICAgICAqICAKICAgICAgKi8KICAgICAKLSAgICBpbnQgICAgICgqcGVyZm9ybSkoc3RydWN0IGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csCisgICAgaW50ICAgICAoKnBlcmZvcm0pKHN0cnVjdCBBTmF0aXZlV2luZG93KiB3aW5kb3csCiAgICAgICAgICAgICAgICAgaW50IG9wZXJhdGlvbiwgLi4uICk7CiAgICAgCiAgICAgdm9pZCogcmVzZXJ2ZWRfcHJvY1szXTsKLX0gYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q7Cit9OwogCisvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4uLiAgcGxlYXNlIHN3aXRjaCB0byBBTmF0aXZlV2luZG93LgordHlwZWRlZiBzdHJ1Y3QgQU5hdGl2ZVdpbmRvdyBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDsKIAogLyoKLSAqICBuYXRpdmVfd2luZG93X3NldF91c2FnZSgpIHNldHMgdGhlIGludGVuZGVkIHVzYWdlIGZsYWdzIGZvciB0aGUgbmV4dAotICogIGJ1ZmZlcnMgYWNxdWlyZWQgd2l0aCAoKmxvY2tCdWZmZXIpKCkgYW5kIG9uLgorICogIG5hdGl2ZV93aW5kb3dfc2V0X3VzYWdlKC4uLiwgdXNhZ2UpCisgKiAgU2V0cyB0aGUgaW50ZW5kZWQgdXNhZ2UgZmxhZ3MgZm9yIHRoZSBuZXh0IGJ1ZmZlcnMKKyAqICBhY3F1aXJlZCB3aXRoICgqbG9ja0J1ZmZlcikoKSBhbmQgb24uCiAgKiAgQnkgZGVmYXVsdCAoaWYgdGhpcyBmdW5jdGlvbiBpcyBuZXZlciBjYWxsZWQpLCBhIHVzYWdlIG9mCiAgKiAgICAgIEdSQUxMT0NfVVNBR0VfSFdfUkVOREVSIHwgR1JBTExPQ19VU0FHRV9IV19URVhUVVJFCiAgKiAgaXMgYXNzdW1lZC4KQEAgLTE5MiwzNSArMjIwLDgzIEBACiAgKi8KIAogc3RhdGljIGlubGluZSBpbnQgbmF0aXZlX3dpbmRvd19zZXRfdXNhZ2UoCi0gICAgICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGludCB1c2FnZSkKKyAgICAgICAgQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgdXNhZ2UpCiB7CiAgICAgcmV0dXJuIHdpbmRvdy0+cGVyZm9ybSh3aW5kb3csIE5BVElWRV9XSU5ET1dfU0VUX1VTQUdFLCB1c2FnZSk7CiB9CiAKIC8qCi0gKiBuYXRpdmVfd2luZG93X2Nvbm5lY3QoLi4uLCBOQVRJVkVfV0lORE9XX0FQSV9FR0wpIG11c3QgYmUgY2FsbGVkCi0gKiBieSBFR0wgd2hlbiB0aGUgd2luZG93IGlzIG1hZGUgY3VycmVudC4KKyAqIG5hdGl2ZV93aW5kb3dfY29ubmVjdCguLi4sIE5BVElWRV9XSU5ET1dfQVBJX0VHTCkKKyAqIE11c3QgYmUgY2FsbGVkIGJ5IEVHTCB3aGVuIHRoZSB3aW5kb3cgaXMgbWFkZSBjdXJyZW50LgogICogUmV0dXJucyAtRUlOVkFMIGlmIGZvciBzb21lIHJlYXNvbiB0aGUgd2luZG93IGNhbm5vdCBiZSBjb25uZWN0ZWQsIHdoaWNoCiAgKiBjYW4gaGFwcGVuIGlmIGl0J3MgY29ubmVjdGVkIHRvIHNvbWUgb3RoZXIgQVBJLgogICovCiBzdGF0aWMgaW5saW5lIGludCBuYXRpdmVfd2luZG93X2Nvbm5lY3QoCi0gICAgICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGludCBhcGkpCisgICAgICAgIEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50IGFwaSkKIHsKICAgICByZXR1cm4gd2luZG93LT5wZXJmb3JtKHdpbmRvdywgTkFUSVZFX1dJTkRPV19DT05ORUNULCBhcGkpOwogfQogCiAvKgotICogbmF0aXZlX3dpbmRvd19kaXNjb25uZWN0KC4uLiwgTkFUSVZFX1dJTkRPV19BUElfRUdMKSBtdXN0IGJlIGNhbGxlZAotICogYnkgRUdMIHdoZW4gdGhlIHdpbmRvdyBpcyBtYWRlIG5vdCBjdXJyZW50LgorICogbmF0aXZlX3dpbmRvd19kaXNjb25uZWN0KC4uLiwgTkFUSVZFX1dJTkRPV19BUElfRUdMKQorICogTXVzdCBiZSBjYWxsZWQgYnkgRUdMIHdoZW4gdGhlIHdpbmRvdyBpcyBtYWRlIG5vdCBjdXJyZW50LgogICogQW4gZXJyb3IgaXMgcmV0dXJuZWQgaWYgZm9yIGluc3RhbmNlIHRoZSB3aW5kb3cgd2Fzbid0IGNvbm5lY3RlZCBpbiB0aGUKICAqIGZpcnN0IHBsYWNlLgogICovCiBzdGF0aWMgaW5saW5lIGludCBuYXRpdmVfd2luZG93X2Rpc2Nvbm5lY3QoCi0gICAgICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGludCBhcGkpCisgICAgICAgIEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50IGFwaSkKIHsKICAgICByZXR1cm4gd2luZG93LT5wZXJmb3JtKHdpbmRvdywgTkFUSVZFX1dJTkRPV19ESVNDT05ORUNULCBhcGkpOwogfQogCisvKgorICogbmF0aXZlX3dpbmRvd19zZXRfY3JvcCguLi4sIGNyb3ApCisgKiBTZXRzIHdoaWNoIHJlZ2lvbiBvZiB0aGUgbmV4dCBxdWV1ZWQgYnVmZmVycyBuZWVkcyB0byBiZSBjb25zaWRlcmVkLgorICogQSBidWZmZXIncyBjcm9wIHJlZ2lvbiBpcyBzY2FsZWQgdG8gbWF0Y2ggdGhlIHN1cmZhY2UncyBzaXplLgorICoKKyAqIFRoZSBzcGVjaWZpZWQgY3JvcCByZWdpb24gYXBwbGllcyB0byBhbGwgYnVmZmVycyBxdWV1ZWQgYWZ0ZXIgaXQgaXMgY2FsbGVkLgorICoKKyAqIGlmICdjcm9wJyBpcyBOVUxMLCBzdWJzZXF1ZW50bHkgcXVldWVkIGJ1ZmZlcnMgd29uJ3QgYmUgY3JvcHBlZC4KKyAqCisgKiBBbiBlcnJvciBpcyByZXR1cm5lZCBpZiBmb3IgaW5zdGFuY2UgdGhlIGNyb3AgcmVnaW9uIGlzIGludmFsaWQsCisgKiBvdXQgb2YgdGhlIGJ1ZmZlcidzIGJvdW5kIG9yIGlmIHRoZSB3aW5kb3cgaXMgaW52YWxpZC4KKyAqLworc3RhdGljIGlubGluZSBpbnQgbmF0aXZlX3dpbmRvd19zZXRfY3JvcCgKKyAgICAgICAgQU5hdGl2ZVdpbmRvdyogd2luZG93LAorICAgICAgICBhbmRyb2lkX25hdGl2ZV9yZWN0X3QgY29uc3QgKiBjcm9wKQoreworICAgIHJldHVybiB3aW5kb3ctPnBlcmZvcm0od2luZG93LCBOQVRJVkVfV0lORE9XX1NFVF9DUk9QLCBjcm9wKTsKK30KKworLyoKKyAqIG5hdGl2ZV93aW5kb3dfc2V0X2J1ZmZlcl9jb3VudCguLi4sIGNvdW50KQorICogU2V0cyB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbmF0aXZlIHdpbmRvdy4KKyAqLworc3RhdGljIGlubGluZSBpbnQgbmF0aXZlX3dpbmRvd19zZXRfYnVmZmVyX2NvdW50KAorICAgICAgICBBTmF0aXZlV2luZG93KiB3aW5kb3csCisgICAgICAgIHNpemVfdCBidWZmZXJDb3VudCkKK3sKKyAgICByZXR1cm4gd2luZG93LT5wZXJmb3JtKHdpbmRvdywgTkFUSVZFX1dJTkRPV19TRVRfQlVGRkVSX0NPVU5ULCBidWZmZXJDb3VudCk7Cit9CisKKy8qCisgKiBuYXRpdmVfd2luZG93X3NldF9idWZmZXJzX2dlb21ldHJ5KC4uLiwgaW50IHcsIGludCBoLCBpbnQgZm9ybWF0KQorICogQWxsIGJ1ZmZlcnMgZGVxdWV1ZWQgYWZ0ZXIgdGhpcyBjYWxsIHdpbGwgaGF2ZSB0aGUgZ2VvbWV0cnkgc3BlY2lmaWVkLgorICogSW4gcGFydGljdWxhciwgYWxsIGJ1ZmZlcnMgd2lsbCBoYXZlIGEgZml4ZWQtc2l6ZSwgaW5kZXBlbmRlbnQgZm9ybSB0aGUKKyAqIG5hdGl2ZS13aW5kb3cgc2l6ZS4gVGhleSB3aWxsIGJlIGFwcHJvcHJpYXRlbHkgc2NhbGVkIHRvIHRoZSB3aW5kb3ctc2l6ZQorICogdXBvbiBjb21wb3NpdGlvbi4KKyAqCisgKiBJZiBhbGwgcGFyYW1ldGVycyBhcmUgMCwgdGhlIG5vcm1hbCBiZWhhdmlvciBpcyByZXN0b3JlZC4gVGhhdCBpcywKKyAqIGRlcXVldWVkIGJ1ZmZlcnMgZm9sbG93aW5nIHRoaXMgY2FsbCB3aWxsIGJlIHNpemVkIHRvIHRoZSB3aW5kb3cncyBzaXplLgorICoKKyAqLworc3RhdGljIGlubGluZSBpbnQgbmF0aXZlX3dpbmRvd19zZXRfYnVmZmVyc19nZW9tZXRyeSgKKyAgICAgICAgQU5hdGl2ZVdpbmRvdyogd2luZG93LAorICAgICAgICBpbnQgdywgaW50IGgsIGludCBmb3JtYXQpCit7CisgICAgcmV0dXJuIHdpbmRvdy0+cGVyZm9ybSh3aW5kb3csIE5BVElWRV9XSU5ET1dfU0VUX0JVRkZFUlNfR0VPTUVUUlksCisgICAgICAgICAgICB3LCBoLCBmb3JtYXQpOworfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjYzLDYgKzMzOSwxNSBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIE5BVElWRV9UWVBFLCB0eXBlbmFtZSBUWVBFLCB0eXBlbmFtZSBSRUY+CiBjbGFzcyBFR0xOYXRpdmVCYXNlIDogcHVibGljIE5BVElWRV9UWVBFLCBwdWJsaWMgUkVGCiB7CitwdWJsaWM6CisgICAgLy8gRGlzYW1iaWd1YXRlIGJldHdlZW4gdGhlIGluY1N0cm9uZyBpbiBSRUYgYW5kIE5BVElWRV9UWVBFCisgICAgdm9pZCBpbmNTdHJvbmcoY29uc3Qgdm9pZCogaWQpIGNvbnN0IHsKKyAgICAgICAgUkVGOjppbmNTdHJvbmcoaWQpOworICAgIH0KKyAgICB2b2lkIGRlY1N0cm9uZyhjb25zdCB2b2lkKiBpZCkgY29uc3QgeworICAgICAgICBSRUY6OmRlY1N0cm9uZyhpZCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdHlwZWRlZiBFR0xOYXRpdmVCYXNlPE5BVElWRV9UWVBFLCBUWVBFLCBSRUY+IEJBU0U7CiAgICAgRUdMTmF0aXZlQmFzZSgpIDogTkFUSVZFX1RZUEUoKSwgUkVGKCkgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91dGlscy9CaXRTZXQuaCBiL2luY2x1ZGUvdXRpbHMvQml0U2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTljOGJmMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdXRpbHMvQml0U2V0LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgVVRJTFNfQklUU0VUX0gKKyNkZWZpbmUgVVRJTFNfQklUU0VUX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisvKgorICogQ29udGFpbnMgc29tZSBiaXQgbWFuaXB1bGF0aW9uIGhlbHBlcnMuCisgKi8KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBBIHNpbXBsZSBzZXQgb2YgMzIgYml0cyB0aGF0IGNhbiBiZSBpbmRpdmlkdWFsbHkgbWFya2VkIG9yIGNsZWFyZWQuCitzdHJ1Y3QgQml0U2V0MzIgeworICAgIHVpbnQzMl90IHZhbHVlOworCisgICAgaW5saW5lIEJpdFNldDMyKCkgOiB2YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBpbmxpbmUgQml0U2V0MzIodWludDMyX3QgdmFsdWUpIDogdmFsdWUodmFsdWUpIHsgfQorCisgICAgLy8gR2V0cyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBiaXQgaW5kZXguCisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCB2YWx1ZUZvckJpdCh1aW50MzJfdCBuKSB7IHJldHVybiAweDgwMDAwMDAwID4+IG47IH0KKworICAgIC8vIENsZWFycyB0aGUgYml0IHNldC4KKyAgICBpbmxpbmUgdm9pZCBjbGVhcigpIHsgdmFsdWUgPSAwOyB9CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGJpdCBzZXQgZG9lcyBub3QgY29udGFpbiBhbnkgbWFya2VkIGJpdHMuCisgICAgaW5saW5lIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICEgdmFsdWU7IH0KKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIGJpdCBpcyBtYXJrZWQuCisgICAgaW5saW5lIGJvb2wgaGFzQml0KHVpbnQzMl90IG4pIGNvbnN0IHsgcmV0dXJuIHZhbHVlICYgdmFsdWVGb3JCaXQobik7IH0KKworICAgIC8vIE1hcmtzIHRoZSBzcGVjaWZpZWQgYml0LgorICAgIGlubGluZSB2b2lkIG1hcmtCaXQodWludDMyX3QgbikgeyB2YWx1ZSB8PSB2YWx1ZUZvckJpdChuKTsgfQorCisgICAgLy8gQ2xlYXJzIHRoZSBzcGVjaWZpZWQgYml0LgorICAgIGlubGluZSB2b2lkIGNsZWFyQml0KHVpbnQzMl90IG4pIHsgdmFsdWUgJj0gfiB2YWx1ZUZvckJpdChuKTsgfQorCisgICAgLy8gRmluZHMgdGhlIGZpcnN0IG1hcmtlZCBiaXQgaW4gdGhlIHNldC4KKyAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIGFsbCBiaXRzIGFyZSB1bm1hcmtlZC4KKyAgICBpbmxpbmUgdWludDMyX3QgZmlyc3RNYXJrZWRCaXQoKSBjb25zdCB7IHJldHVybiBfX2J1aWx0aW5fY2x6KHZhbHVlKTsgfQorCisgICAgLy8gRmluZHMgdGhlIGZpcnN0IHVubWFya2VkIGJpdCBpbiB0aGUgc2V0LgorICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgYWxsIGJpdHMgYXJlIG1hcmtlZC4KKyAgICBpbmxpbmUgdWludDMyX3QgZmlyc3RVbm1hcmtlZEJpdCgpIGNvbnN0IHsgcmV0dXJuIF9fYnVpbHRpbl9jbHoofiB2YWx1ZSk7IH0KKworICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0gKGNvbnN0IEJpdFNldDMyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdmFsdWUgPT0gb3RoZXIudmFsdWU7IH0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9IChjb25zdCBCaXRTZXQzMiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHZhbHVlICE9IG90aGVyLnZhbHVlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBVVElMU19CSVRTRVRfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91dGlscy9CdWZmZXIuaCBiL2luY2x1ZGUvdXRpbHMvQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMjJiMGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS91dGlscy9CdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBfX1VUSUxTX0JVRkZFUl9IX18KLSNkZWZpbmUgX19VVElMU19CVUZGRVJfSF9fIDEKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBhbmRyb2lkIHsKLQotY2xhc3MgQnVmZmVyCi17Ci1wcml2YXRlOgotICAgIGNoYXIgKmJ1ZjsKLSAgICBpbnQgYnVmc2l6OwotICAgIGludCB1c2VkOwotICAgIHZvaWQgZW5zdXJlQ2FwYWNpdHkoaW50IGxlbik7Ci0KLSAgICB2b2lkCi0gICAgbWFrZVJvb21Gb3IoaW50IGxlbikKLSAgICB7Ci0gICAgICAgIGlmIChsZW4gKyB1c2VkID49IGJ1ZnNpeikgewotICAgICAgICAgICAgYnVmc2l6ID0gKGxlbiArIHVzZWQpICogMy8yICsgMjsKLSAgICAgICAgICAgIGNoYXIgKmJsYWggPSBuZXcgY2hhcltidWZzaXpdOwotCi0gICAgICAgICAgICBtZW1jcHkoYmxhaCwgYnVmLCB1c2VkKTsKLSAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZjsKLSAgICAgICAgICAgIGJ1ZiA9IGJsYWg7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi1wdWJsaWM6Ci0gICAgQnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIGJ1ZnNpeiA9IDE2OwotICAgICAgICBidWYgPSBuZXcgY2hhcltidWZzaXpdOwotICAgICAgICBjbGVhcigpOwotICAgIH0KLQotICAgIH5CdWZmZXIoKQotICAgIHsKLSAgICAgICBkZWxldGVbXSBidWY7Ci0gICAgfQotCi0gICAgdm9pZAotICAgIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIGJ1ZlswXSA9ICdcMCc7Ci0gICAgICAgIHVzZWQgPSAwOwotICAgIH0KLQotICAgIGludAotICAgIGxlbmd0aCgpCi0gICAgewotICAgICAgICByZXR1cm4gdXNlZDsKLSAgICB9Ci0KLSAgICB2b2lkCi0gICAgYXBwZW5kKGNvbnN0IGNoYXIgYykKLSAgICB7Ci0gICAgICAgIG1ha2VSb29tRm9yKDEpOwotICAgICAgICBidWZbdXNlZF0gPSBjOwotICAgICAgICB1c2VkKys7Ci0gICAgICAgIGJ1Zlt1c2VkXSA9ICdcMCc7Ci0gICAgfQotCi0gICAgdm9pZAotICAgIGFwcGVuZChjb25zdCBjaGFyICpzLCBpbnQgbGVuKQotICAgIHsKLSAgICAgICAgbWFrZVJvb21Gb3IobGVuKTsKLQotICAgICAgICBtZW1jcHkoYnVmICsgdXNlZCwgcywgbGVuKTsKLSAgICAgICAgdXNlZCArPSBsZW47Ci0gICAgICAgIGJ1Zlt1c2VkXSA9ICdcMCc7Ci0gICAgfQotCi0gICAgdm9pZAotICAgIGFwcGVuZChjb25zdCBjaGFyICpzKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHMsIHN0cmxlbihzKSk7Ci0gICAgfQotCi0gICAgY2hhciAqCi0gICAgZ2V0Qnl0ZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJ1ZjsKLSAgICB9Ci19OwotCi19OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvUG9sbExvb3AuaCBiL2luY2x1ZGUvdXRpbHMvUG9sbExvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzY1MWNhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91dGlscy9Qb2xsTG9vcC5oCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBVVElMU19QT0xMX0xPT1BfSAorI2RlZmluZSBVVElMU19QT0xMX0xPT1BfSAorCisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorCisjaW5jbHVkZSA8c3lzL3BvbGwuaD4KKworI2luY2x1ZGUgPGFuZHJvaWQvbG9vcGVyLmg+CisKK3N0cnVjdCBBTG9vcGVyIDogcHVibGljIGFuZHJvaWQ6OlJlZkJhc2UgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFMb29wZXIoKSB7IH0KKworcHVibGljOgorICAgIEFMb29wZXIoKSB7IH0KK307CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLyoqCisgKiBBIGJhc2ljIGZpbGUgZGVzY3JpcHRvciBwb2xsaW5nIGxvb3AgYmFzZWQgb24gcG9sbCgpIHdpdGggY2FsbGJhY2tzLgorICovCitjbGFzcyBQb2xsTG9vcCA6IHB1YmxpYyBBTG9vcGVyIHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5Qb2xsTG9vcCgpOworCitwdWJsaWM6CisgICAgUG9sbExvb3AoKTsKKworICAgIC8qKgorICAgICAqIEEgY2FsbGJhY2sgdGhhdCBpdCB0byBiZSBpbnZva2VkIHdoZW4gYW4gZXZlbnQgb2NjdXJzIG9uIGEgZmlsZSBkZXNjcmlwdG9yLgorICAgICAqIFNwZWNpZmllcyB0aGUgZXZlbnRzIHRoYXQgd2VyZSB0cmlnZ2VyZWQgYW5kIHRoZSB1c2VyIGRhdGEgcHJvdmlkZWQgd2hlbiB0aGUKKyAgICAgKiBjYWxsYmFjayB3YXMgc2V0LgorICAgICAqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBjYWxsYmFjayBzaG91bGQgYmUga2VwdCwgZmFsc2UgaWYgaXQgc2hvdWxkIGJlIHJlbW92ZWQgYXV0b21hdGljYWxseQorICAgICAqIGFmdGVyIHRoZSBjYWxsYmFjayByZXR1cm5zLgorICAgICAqLworICAgIHR5cGVkZWYgYm9vbCAoKkNhbGxiYWNrKShpbnQgZmQsIGludCBldmVudHMsIHZvaWQqIGRhdGEpOworCisgICAgLyoqCisgICAgICogUGVyZm9ybXMgYSBzaW5nbGUgY2FsbCB0byBwb2xsKCkgd2l0aCBvcHRpb25hbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4KKyAgICAgKiBJbnZva2VzIGNhbGxiYWNrcyBmb3IgYWxsIGZpbGUgZGVzY3JpcHRvcnMgb24gd2hpY2ggYW4gZXZlbnQgb2NjdXJyZWQuCisgICAgICoKKyAgICAgKiBJZiB0aGUgdGltZW91dCBpcyB6ZXJvLCByZXR1cm5zIGltbWVkaWF0ZWx5IHdpdGhvdXQgYmxvY2tpbmcuCisgICAgICogSWYgdGhlIHRpbWVvdXQgaXMgbmVnYXRpdmUsIHdhaXRzIGluZGVmaW5pdGVseSB1bnRpbCBhd29rZW4uCisgICAgICoKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgYSBjYWxsYmFjayB3YXMgaW52b2tlZCBvciBpZiB0aGUgbG9vcCB3YXMgYXdva2VuIGJ5IHdha2UoKS4KKyAgICAgKiBSZXR1cm5zIGZhbHNlIGlmIGEgdGltZW91dCBvciBlcnJvciBvY2N1cnJlZC4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAqIFRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbCBlaXRoZXIgYSBmaWxlIGRlc2NyaXB0b3IgaXMgc2lnbmFsbGVkLCBhIHRpbWVvdXQgb2NjdXJzLAorICAgICAqIG9yIHdha2UoKSBpcyBjYWxsZWQuCisgICAgICogVGhpcyBtZXRob2QgZG9lcyBub3QgcmV0dXJuIHVudGlsIGl0IGhhcyBmaW5pc2hlZCBpbnZva2luZyB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzCisgICAgICogZm9yIGFsbCBmaWxlIGRlc2NyaXB0b3JzIHRoYXQgd2VyZSBzaWduYWxsZWQuCisgICAgICovCisgICAgYm9vbCBwb2xsT25jZShpbnQgdGltZW91dE1pbGxpcyk7CisKKyAgICAvKioKKyAgICAgKiBXYWtlcyB0aGUgbG9vcCBhc3luY2hyb25vdXNseS4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZC4KKyAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGltbWVkaWF0ZWx5LgorICAgICAqLworICAgIHZvaWQgd2FrZSgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY2FsbGJhY2sgZm9yIGEgZmlsZSBkZXNjcmlwdG9yLCByZXBsYWNpbmcgdGhlIGV4aXN0aW5nIG9uZSwgaWYgYW55LgorICAgICAqIEl0IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2Qgd2l0aCBldmVudHMgPT0gMCBvciBjYWxsYmFjayA9PSBOVUxMLgorICAgICAqCisgICAgICogTm90ZSB0aGF0IGEgY2FsbGJhY2sgY2FuIGJlIGludm9rZWQgd2l0aCB0aGUgUE9MTEVSUiwgUE9MTEhVUCBvciBQT0xMTlZBTCBldmVudHMKKyAgICAgKiBldmVuIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aGVuIHJlZ2lzdGVyZWQuCisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCisgICAgICogVGhpcyBtZXRob2QgbWF5IGJsb2NrIGJyaWVmbHkgaWYgaXQgbmVlZHMgdG8gd2FrZSB0aGUgcG9sbCBsb29wLgorICAgICAqLworICAgIHZvaWQgc2V0Q2FsbGJhY2soaW50IGZkLCBpbnQgZXZlbnRzLCBDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogZGF0YSA9IE5VTEwpOworCisgICAgLyoqCisgICAgICogTGlrZSBzZXRDYWxsYmFjaygpLCBidXQgZm9yIHRoZSBOREsgY2FsbGJhY2sgZnVuY3Rpb24uCisgICAgICovCisgICAgdm9pZCBzZXRMb29wZXJDYWxsYmFjayhpbnQgZmQsIGludCBldmVudHMsIEFMb29wZXJfY2FsbGJhY2tGdW5jKiBjYWxsYmFjaywgdm9pZCogZGF0YSk7CisgICAgCisgICAgLyoqCisgICAgICogUmVtb3ZlcyB0aGUgY2FsbGJhY2sgZm9yIGEgZmlsZSBkZXNjcmlwdG9yLCBpZiBvbmUgZXhpc3RzLgorICAgICAqCisgICAgICogV2hlbiB0aGlzIG1ldGhvZCByZXR1cm5zLCBpdCBpcyBzYWZlIHRvIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3Igc2luY2UgdGhlIHBvbGwgbG9vcAorICAgICAqIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYSByZWZlcmVuY2UgdG8gaXQuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNhbGxiYWNrIHRvCisgICAgICogYWxyZWFkeSBiZSBydW5uaW5nIG9yIGZvciBpdCB0byBydW4gb25lIGxhc3QgdGltZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyBhbHJlYWR5CisgICAgICogc2lnbmFsbGVkLiAgQ2FsbGluZyBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0IHRoaXMgY2FzZSBpcyBzYWZlbHkgaGFuZGxlZC4KKyAgICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNhbGxiYWNrIHRha2VzIGNhcmUgb2YgcmVtb3ZpbmcgaXRzZWxmIGR1cmluZyBpdHMgb3duIGV4ZWN1dGlvbiBlaXRoZXIKKyAgICAgKiBieSByZXR1cm5pbmcgZmFsc2Ugb3IgY2FsbGluZyB0aGlzIG1ldGhvZCwgdGhlbiBpdCBjYW4gYmUgZ3VhcmFudGVlZCB0byBub3QgYmUgaW52b2tlZAorICAgICAqIGFnYWluIGF0IGFueSBsYXRlciB0aW1lIHVubGVzcyByZWdpc3RlcmVkIGFuZXcuCisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCisgICAgICogVGhpcyBtZXRob2QgbWF5IGJsb2NrIGJyaWVmbHkgaWYgaXQgbmVlZHMgdG8gd2FrZSB0aGUgcG9sbCBsb29wLgorICAgICAqCisgICAgICogUmV0dXJucyB0cnVlIGlmIGEgY2FsbGJhY2sgd2FzIGFjdHVhbGx5IHJlbW92ZWQsIGZhbHNlIGlmIG5vbmUgd2FzIHJlZ2lzdGVyZWQuCisgICAgICovCisgICAgYm9vbCByZW1vdmVDYWxsYmFjayhpbnQgZmQpOworCisgICAgLyoqCisgICAgICogU2V0IHRoZSBnaXZlbiBQb2xsTG9vcCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICogY2FsbGluZyB0aHJlYWQuICBUaGVyZSBtdXN0IGJlIGEgMToxIHJlbGF0aW9uc2hpcCBiZXR3ZWVuCisgICAgICogUG9sbExvb3AgYW5kIHRocmVhZC4KKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCBzZXRGb3JUaHJlYWQoY29uc3Qgc3A8UG9sbExvb3A+JiBwb2xsTG9vcCk7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBQb2xsTG9vcCBhc3NvY2lhdGVkIHdpdGggdGhlIGNhbGxpbmcgdGhyZWFkLgorICAgICAqLworICAgIHN0YXRpYyBzcDxQb2xsTG9vcD4gZ2V0Rm9yVGhyZWFkKCk7CisgICAgCitwcml2YXRlOgorICAgIHN0cnVjdCBSZXF1ZXN0ZWRDYWxsYmFjayB7CisgICAgICAgIENhbGxiYWNrIGNhbGxiYWNrOworICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyogbG9vcGVyQ2FsbGJhY2s7CisgICAgICAgIHZvaWQqIGRhdGE7CisgICAgfTsKKworICAgIHN0cnVjdCBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBpbnQgZmQ7CisgICAgICAgIGludCBldmVudHM7CisgICAgICAgIENhbGxiYWNrIGNhbGxiYWNrOworICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyogbG9vcGVyQ2FsbGJhY2s7CisgICAgICAgIHZvaWQqIGRhdGE7CisgICAgfTsKKworICAgIE11dGV4IG1Mb2NrOworICAgIGJvb2wgbVBvbGxpbmc7CisgICAgdWludDMyX3QgbVdhaXRlcnM7CisgICAgQ29uZGl0aW9uIG1Bd2FrZTsKKyAgICBDb25kaXRpb24gbVJlc3VtZTsKKworICAgIGludCBtV2FrZVJlYWRQaXBlRmQ7CisgICAgaW50IG1XYWtlV3JpdGVQaXBlRmQ7CisKKyAgICBWZWN0b3I8c3RydWN0IHBvbGxmZD4gbVJlcXVlc3RlZEZkczsKKyAgICBWZWN0b3I8UmVxdWVzdGVkQ2FsbGJhY2s+IG1SZXF1ZXN0ZWRDYWxsYmFja3M7CisKKyAgICBWZWN0b3I8UGVuZGluZ0NhbGxiYWNrPiBtUGVuZGluZ0NhbGxiYWNrczsgLy8gdXNlZCBwcml2YXRlbHkgYnkgcG9sbE9uY2UKKworICAgIHZvaWQgb3Blbldha2VQaXBlKCk7CisgICAgdm9pZCBjbG9zZVdha2VQaXBlKCk7CisKKyAgICB2b2lkIHNldENhbGxiYWNrQ29tbW9uKGludCBmZCwgaW50IGV2ZW50cywgQ2FsbGJhY2sgY2FsbGJhY2ssCisgICAgICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyogbG9vcGVyQ2FsbGJhY2ssIHZvaWQqIGRhdGEpOworICAgIHNzaXplX3QgZ2V0UmVxdWVzdEluZGV4TG9ja2VkKGludCBmZCk7CisgICAgdm9pZCB3YWtlQW5kTG9jaygpOworICAgIHN0YXRpYyB2b2lkIHRocmVhZERlc3RydWN0b3Iodm9pZCAqc3QpOworfTsKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gVVRJTFNfUE9MTF9MT09QX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvUG9vbC5oIGIvaW5jbHVkZS91dGlscy9Qb29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVlNzY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdXRpbHMvUG9vbC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIFVUSUxTX1BPT0xfSAorI2RlZmluZSBVVElMU19QT09MX0gKKworI2luY2x1ZGUgPHV0aWxzL1R5cGVIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgUG9vbEltcGwgeworcHVibGljOgorICAgIFBvb2xJbXBsKHNpemVfdCBvYmpTaXplKTsKKyAgICB+UG9vbEltcGwoKTsKKworICAgIHZvaWQqIGFsbG9jSW1wbCgpOworICAgIHZvaWQgZnJlZUltcGwodm9pZCogb2JqKTsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbU9ialNpemU7Cit9OworCisvKgorICogQSBob21vZ2VuZW91cyB0eXBlZCBtZW1vcnkgcG9vbCBmb3IgZml4ZWQgc2l6ZSBvYmplY3RzLgorICogTm90IGludGVuZGVkIHRvIGJlIHRocmVhZC1zYWZlLgorICovCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgUG9vbCA6IHByaXZhdGUgUG9vbEltcGwgeworcHVibGljOgorICAgIC8qIENyZWF0ZXMgYW4gaW5pdGlhbGx5IGVtcHR5IHBvb2wuICovCisgICAgUG9vbCgpIDogUG9vbEltcGwoc2l6ZW9mKFQpKSB7IH0KKworICAgIC8qIERlc3Ryb3lzIHRoZSBwb29sLgorICAgICAqIEFzc3VtZXMgdGhhdCB0aGUgcG9vbCBpcyBlbXB0eS4gKi8KKyAgICB+UG9vbCgpIHsgfQorCisgICAgLyogQWxsb2NhdGVzIGFuIG9iamVjdCBmcm9tIHRoZSBwb29sLCBncm93aW5nIHRoZSBwb29sIGlmIG5lZWRlZC4gKi8KKyAgICBpbmxpbmUgVCogYWxsb2MoKSB7CisgICAgICAgIHZvaWQqIG1lbSA9IGFsbG9jSW1wbCgpOworICAgICAgICBpZiAoISB0cmFpdHM8VD46Omhhc190cml2aWFsX2N0b3IpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKG1lbSkgVCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtZW0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyogRnJlZXMgYW4gb2JqZWN0IGZyb20gdGhlIHBvb2wuICovCisgICAgaW5saW5lIHZvaWQgZnJlZShUKiBvYmopIHsKKyAgICAgICAgaWYgKCEgdHJhaXRzPFQ+OjpoYXNfdHJpdmlhbF9kdG9yKSB7CisgICAgICAgICAgICBvYmotPn5UKCk7CisgICAgICAgIH0KKyAgICAgICAgZnJlZUltcGwob2JqKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBVVElMU19QT09MX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvUmVmQmFzZS5oIGIvaW5jbHVkZS91dGlscy9SZWZCYXNlLmgKaW5kZXggYmQ3ZjI4Yy4uOWM2NGFjMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91dGlscy9SZWZCYXNlLmgKKysrIGIvaW5jbHVkZS91dGlscy9SZWZCYXNlLmgKQEAgLTMzMyw5ICszMzMsMTAgQEAKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHNwPFQ+JiBzcDxUPjo6b3BlcmF0b3IgPSAoY29uc3Qgc3A8VD4mIG90aGVyKSB7Ci0gICAgaWYgKG90aGVyLm1fcHRyKSBvdGhlci5tX3B0ci0+aW5jU3Ryb25nKHRoaXMpOworICAgIFQqIG90aGVyUHRyKG90aGVyLm1fcHRyKTsKKyAgICBpZiAob3RoZXJQdHIpIG90aGVyUHRyLT5pbmNTdHJvbmcodGhpcyk7CiAgICAgaWYgKG1fcHRyKSBtX3B0ci0+ZGVjU3Ryb25nKHRoaXMpOwotICAgIG1fcHRyID0gb3RoZXIubV9wdHI7CisgICAgbV9wdHIgPSBvdGhlclB0cjsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTM1MSw5ICszNTIsMTAgQEAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiBzcDxUPiYgc3A8VD46Om9wZXJhdG9yID0gKGNvbnN0IHNwPFU+JiBvdGhlcikKIHsKLSAgICBpZiAob3RoZXIubV9wdHIpIG90aGVyLm1fcHRyLT5pbmNTdHJvbmcodGhpcyk7CisgICAgVSogb3RoZXJQdHIob3RoZXIubV9wdHIpOworICAgIGlmIChvdGhlclB0cikgb3RoZXJQdHItPmluY1N0cm9uZyh0aGlzKTsKICAgICBpZiAobV9wdHIpIG1fcHRyLT5kZWNTdHJvbmcodGhpcyk7Ci0gICAgbV9wdHIgPSBvdGhlci5tX3B0cjsKKyAgICBtX3B0ciA9IG90aGVyUHRyOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtNDY2LDEwICs0NjgsMTIgQEAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB3cDxUPiYgd3A8VD46Om9wZXJhdG9yID0gKGNvbnN0IHdwPFQ+JiBvdGhlcikKIHsKLSAgICBpZiAob3RoZXIubV9wdHIpIG90aGVyLm1fcmVmcy0+aW5jV2Vhayh0aGlzKTsKKyAgICB3ZWFrcmVmX3R5cGUqIG90aGVyUmVmcyhvdGhlci5tX3JlZnMpOworICAgIFQqIG90aGVyUHRyKG90aGVyLm1fcHRyKTsKKyAgICBpZiAob3RoZXJQdHIpIG90aGVyUmVmcy0+aW5jV2Vhayh0aGlzKTsKICAgICBpZiAobV9wdHIpIG1fcmVmcy0+ZGVjV2Vhayh0aGlzKTsKLSAgICBtX3B0ciA9IG90aGVyLm1fcHRyOwotICAgIG1fcmVmcyA9IG90aGVyLm1fcmVmczsKKyAgICBtX3B0ciA9IG90aGVyUHRyOworICAgIG1fcmVmcyA9IG90aGVyUmVmczsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTQ3OCw4ICs0ODIsOSBAQAogewogICAgIHdlYWtyZWZfdHlwZSogbmV3UmVmcyA9CiAgICAgICAgIG90aGVyICE9IE5VTEwgPyBvdGhlci0+Y3JlYXRlV2Vhayh0aGlzKSA6IDA7CisgICAgVCogb3RoZXJQdHIob3RoZXIubV9wdHIpOwogICAgIGlmIChtX3B0cikgbV9yZWZzLT5kZWNXZWFrKHRoaXMpOwotICAgIG1fcHRyID0gb3RoZXIuZ2V0KCk7CisgICAgbV9wdHIgPSBvdGhlclB0cjsKICAgICBtX3JlZnMgPSBuZXdSZWZzOwogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTQ5OCwxMCArNTAzLDEyIEBACiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogd3A8VD4mIHdwPFQ+OjpvcGVyYXRvciA9IChjb25zdCB3cDxVPiYgb3RoZXIpCiB7Ci0gICAgaWYgKG90aGVyLm1fcHRyKSBvdGhlci5tX3JlZnMtPmluY1dlYWsodGhpcyk7CisgICAgd2Vha3JlZl90eXBlKiBvdGhlclJlZnMob3RoZXIubV9yZWZzKTsKKyAgICBVKiBvdGhlclB0cihvdGhlci5tX3B0cik7CisgICAgaWYgKG90aGVyUHRyKSBvdGhlclJlZnMtPmluY1dlYWsodGhpcyk7CiAgICAgaWYgKG1fcHRyKSBtX3JlZnMtPmRlY1dlYWsodGhpcyk7Ci0gICAgbV9wdHIgPSBvdGhlci5tX3B0cjsKLSAgICBtX3JlZnMgPSBvdGhlci5tX3JlZnM7CisgICAgbV9wdHIgPSBvdGhlclB0cjsKKyAgICBtX3JlZnMgPSBvdGhlclJlZnM7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC01MTAsOCArNTE3LDkgQEAKIHsKICAgICB3ZWFrcmVmX3R5cGUqIG5ld1JlZnMgPQogICAgICAgICBvdGhlciAhPSBOVUxMID8gb3RoZXItPmNyZWF0ZVdlYWsodGhpcykgOiAwOworICAgIFUqIG90aGVyUHRyKG90aGVyLm1fcHRyKTsKICAgICBpZiAobV9wdHIpIG1fcmVmcy0+ZGVjV2Vhayh0aGlzKTsKLSAgICBtX3B0ciA9IG90aGVyLmdldCgpOworICAgIG1fcHRyID0gb3RoZXJQdHI7CiAgICAgbV9yZWZzID0gbmV3UmVmczsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxzL1Jlc291cmNlVHlwZXMuaCBiL2luY2x1ZGUvdXRpbHMvUmVzb3VyY2VUeXBlcy5oCmluZGV4IGI3MDFjZTcuLmM3ZDlmZjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdXRpbHMvUmVzb3VyY2VUeXBlcy5oCisrKyBiL2luY2x1ZGUvdXRpbHMvUmVzb3VyY2VUeXBlcy5oCkBAIC05MzMsNiArOTMzLDcgQEAKICAgICAgICAgU0NSRUVOU0laRV9TTUFMTCA9IDB4MDEsCiAgICAgICAgIFNDUkVFTlNJWkVfTk9STUFMID0gMHgwMiwKICAgICAgICAgU0NSRUVOU0laRV9MQVJHRSA9IDB4MDMsCisgICAgICAgIFNDUkVFTlNJWkVfWExBUkdFID0gMHgwNCwKICAgICAgICAgCiAgICAgICAgIC8vIHNjcmVlbkxheW91dCBiaXRzIGZvciB3aWRlL2xvbmcgc2NyZWVuIHZhcmlhdGlvbi4KICAgICAgICAgTUFTS19TQ1JFRU5MT05HID0gMHgzMCwKQEAgLTEyMDgsNyArMTIwOSwyOCBAQAogICAgICAgICAgICAgaWYgKHNjcmVlbkxheW91dCB8fCBvLnNjcmVlbkxheW91dCkgewogICAgICAgICAgICAgICAgIGlmICgoKHNjcmVlbkxheW91dF5vLnNjcmVlbkxheW91dCkgJiBNQVNLX1NDUkVFTlNJWkUpICE9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICYmIChyZXF1ZXN0ZWQtPnNjcmVlbkxheW91dCAmIE1BU0tfU0NSRUVOU0laRSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY3JlZW5MYXlvdXQgJiBNQVNLX1NDUkVFTlNJWkUpOworICAgICAgICAgICAgICAgICAgICAvLyBBIGxpdHRsZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBoZXJlOiB1bmRlZmluZWQgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gY29uc2lkZXJlZCBlcXVpdmFsZW50IHRvIG5vcm1hbC4gIEJ1dCBvbmx5IGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0ZWQgc2l6ZSBpcyBhdCBsZWFzdCBub3JtYWw7IG90aGVyd2lzZSwgc21hbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gaXMgYmV0dGVyIHRoYW4gdGhlIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIGludCBteVNMID0gKHNjcmVlbkxheW91dCAmIE1BU0tfU0NSRUVOU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGludCBvU0wgPSAoby5zY3JlZW5MYXlvdXQgJiBNQVNLX1NDUkVFTlNJWkUpOworICAgICAgICAgICAgICAgICAgICBpbnQgZml4ZWRNeVNMID0gbXlTTDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGZpeGVkT1NMID0gb1NMOworICAgICAgICAgICAgICAgICAgICBpZiAoKHJlcXVlc3RlZC0+c2NyZWVuTGF5b3V0ICYgTUFTS19TQ1JFRU5TSVpFKSA+PSBTQ1JFRU5TSVpFX05PUk1BTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpeGVkTXlTTCA9PSAwKSBmaXhlZE15U0wgPSBTQ1JFRU5TSVpFX05PUk1BTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXhlZE9TTCA9PSAwKSBmaXhlZE9TTCA9IFNDUkVFTlNJWkVfTk9STUFMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBzY3JlZW4gc2l6ZSwgdGhlIGJlc3QgbWF0Y2ggaXMgdGhlIG9uZSB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgIC8vIGNsb3Nlc3QgdG8gdGhlIHJlcXVlc3RlZCBzY3JlZW4gc2l6ZSwgYnV0IG5vdCBvdmVyCisgICAgICAgICAgICAgICAgICAgIC8vICh0aGUgbm90IG92ZXIgcGFydCBpcyBkZWFsdCB3aXRoIGluIG1hdGNoKCkgYmVsb3cpLgorICAgICAgICAgICAgICAgICAgICBpZiAoZml4ZWRNeVNMID09IGZpeGVkT1NMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdHdvIGFyZSB0aGUgc2FtZSwgYnV0ICd0aGlzJyBpcyBhY3R1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5kZWZpbmVkLCB0aGVuIHRoZSBvdGhlciBpcyByZWFsbHkgYSBiZXR0ZXIgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlTTCA9PSAwKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZml4ZWRNeVNMID49IGZpeGVkT1NMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoKChzY3JlZW5MYXlvdXReby5zY3JlZW5MYXlvdXQpICYgTUFTS19TQ1JFRU5MT05HKSAhPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocmVxdWVzdGVkLT5zY3JlZW5MYXlvdXQgJiBNQVNLX1NDUkVFTkxPTkcpKSB7CkBAIC0xMzcwLDggKzEzOTIsMTEgQEAKICAgICAgICAgaWYgKHNjcmVlbkNvbmZpZyAhPSAwKSB7CiAgICAgICAgICAgICBjb25zdCBpbnQgc2NyZWVuU2l6ZSA9IHNjcmVlbkxheW91dCZNQVNLX1NDUkVFTlNJWkU7CiAgICAgICAgICAgICBjb25zdCBpbnQgc2V0U2NyZWVuU2l6ZSA9IHNldHRpbmdzLnNjcmVlbkxheW91dCZNQVNLX1NDUkVFTlNJWkU7Ci0gICAgICAgICAgICBpZiAoc2V0U2NyZWVuU2l6ZSAhPSAwICYmIHNjcmVlblNpemUgIT0gMAotICAgICAgICAgICAgICAgICAgICAmJiBzY3JlZW5TaXplICE9IHNldFNjcmVlblNpemUpIHsKKyAgICAgICAgICAgIC8vIEFueSBzY3JlZW4gc2l6ZXMgZm9yIGxhcmdlciBzY3JlZW5zIHRoYW4gdGhlIHNldHRpbmcgZG8gbm90CisgICAgICAgICAgICAvLyBtYXRjaC4KKyAgICAgICAgICAgIGlmICgoc2V0U2NyZWVuU2l6ZSAhPSAwICYmIHNjcmVlblNpemUgIT0gMAorICAgICAgICAgICAgICAgICAgICAmJiBzY3JlZW5TaXplID4gc2V0U2NyZWVuU2l6ZSkgfHwKKyAgICAgICAgICAgICAgICAgICAgKHNldFNjcmVlblNpemUgPT0gMCAmJiBzY3JlZW5TaXplICE9IDApKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxzL1NpbmdsZXRvbi5oIGIvaW5jbHVkZS91dGlscy9TaW5nbGV0b24uaAppbmRleCBiYzc2MjZhOC4uM2I5NzViNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91dGlscy9TaW5nbGV0b24uaAorKysgYi9pbmNsdWRlL3V0aWxzL1NpbmdsZXRvbi5oCkBAIC01NCwxMSArNTQsMTMgQEAKICAqIChlZzogPFRZUEU+LmNwcCkgdG8gY3JlYXRlIHRoZSBzdGF0aWMgaW5zdGFuY2Ugb2YgU2luZ2xldG9uPD4ncyBhdHRyaWJ1dGVzLAogICogYW5kIGF2b2lkIHRvIGhhdmUgYSBjb3B5IG9mIHRoZW0gaW4gZWFjaCBjb21waWxhdGlvbiB1bml0cyBTaW5nbGV0b248VFlQRT4KICAqIGlzIHVzZWQuCisgKiBOT1RFOiB3ZSB1c2UgYSB2ZXJzaW9uIG9mIE11dGV4IGN0b3IgdGhhdCB0YWtlcyBhIHBhcmFtZXRlciwgYmVjYXVzZQorICogZm9yIHNvbWUgdW5rbm93biByZWFzb24gdXNpbmcgdGhlIGRlZmF1bHQgY3RvciBkb2Vzbid0IGVtaXQgdGhlIHZhcmlhYmxlIQogICovCiAKLSNkZWZpbmUgQU5EUk9JRF9TSU5HTEVUT05fU1RBVElDX0lOU1RBTkNFKFRZUEUpICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSBjbGFzcyBTaW5nbGV0b248IFRZUEUgPjsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVFlQRSA+IE11dGV4IFNpbmdsZXRvbjwgVFlQRSA+OjpzTG9jazsgIFwKKyNkZWZpbmUgQU5EUk9JRF9TSU5HTEVUT05fU1RBVElDX0lOU1RBTkNFKFRZUEUpICAgICAgICAgICAgICAgICBcCisgICAgdGVtcGxhdGUgY2xhc3MgU2luZ2xldG9uPCBUWVBFID47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRlbXBsYXRlPD4gTXV0ZXggU2luZ2xldG9uPCBUWVBFID46OnNMb2NrKE11dGV4OjpQUklWQVRFKTsgIFwKICAgICB0ZW1wbGF0ZTw+IFRZUEUqIFNpbmdsZXRvbjwgVFlQRSA+OjpzSW5zdGFuY2UoMCk7CiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91dGlscy9TdG9wV2F0Y2guaCBiL2luY2x1ZGUvdXRpbHMvU3RvcFdhdGNoLmgKaW5kZXggY2MwYmViYy4uNjkzZGQzYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91dGlscy9TdG9wV2F0Y2guaAorKysgYi9pbmNsdWRlL3V0aWxzL1N0b3BXYXRjaC5oCkBAIC0zNyw2ICszNyw4IEBACiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKICAgICAgICAgbnNlY3NfdCAgICAgbGFwKCk7CiAgICAgICAgIG5zZWNzX3QgICAgIGVsYXBzZWRUaW1lKCkgY29uc3Q7CisKKyAgICAgICAgdm9pZCAgICAgICAgcmVzZXQoKTsKICAgICAgICAgCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqICAgICBtTmFtZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvVmVjdG9yLmggYi9pbmNsdWRlL3V0aWxzL1ZlY3Rvci5oCmluZGV4IGFkNTlmZDYuLmVjODUxYmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdXRpbHMvVmVjdG9yLmgKKysrIGIvaW5jbHVkZS91dGlscy9WZWN0b3IuaApAQCAtMTE0LDEzICsxMTQsMTkgQEAKICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFRZUEU+JiB2ZWN0b3IpOwogCiAKKyAgICAvLyEgaW5zZXJ0IGFuIGFycmF5IGF0IGEgZ2l2ZW4gaW5kZXgKKyAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRBcnJheUF0KGNvbnN0IFRZUEUqIGFycmF5LCBzaXplX3QgaW5kZXgsIHNpemVfdCBsZW5ndGgpOworCisgICAgLy8hIGFwcGVuZCBhbiBhcnJheSBhdCB0aGUgZW5kIG9mIHRoaXMgdmVjdG9yCisgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgYXBwZW5kQXJyYXkoY29uc3QgVFlQRSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworCiAgICAgICAgICAgICAvKiEgCiAgICAgICAgICAgICAgKiBhZGQvaW5zZXJ0L3JlcGxhY2UgaXRlbXMKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgIAogICAgIC8vISBpbnNlcnQgb25lIG9yIHNldmVyYWwgaXRlbXMgaW5pdGlhbGl6ZWQgd2l0aCB0aGVpciBkZWZhdWx0IGNvbnN0cnVjdG9yCiAgICAgaW5saW5lICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXQoc2l6ZV90IGluZGV4LCBzaXplX3QgbnVtSXRlbXMgPSAxKTsKLSAgICAvLyEgaW5zZXJ0IG9uIG9uciBzZXZlcmFsIGl0ZW1zIGluaXRpYWxpemVkIGZyb20gYSBwcm90b3R5cGUgaXRlbQorICAgIC8vISBpbnNlcnQgb25lIG9yIHNldmVyYWwgaXRlbXMgaW5pdGlhbGl6ZWQgZnJvbSBhIHByb3RvdHlwZSBpdGVtCiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXQoY29uc3QgVFlQRSYgcHJvdG90eXBlX2l0ZW0sIHNpemVfdCBpbmRleCwgc2l6ZV90IG51bUl0ZW1zID0gMSk7CiAgICAgLy8hIHBvcCB0aGUgdG9wIG9mIHRoZSBzdGFjayAocmVtb3ZlcyB0aGUgbGFzdCBlbGVtZW50KS4gTm8tb3AgaWYgdGhlIHN0YWNrJ3MgZW1wdHkKICAgICBpbmxpbmUgIHZvaWQgICAgICAgICAgICBwb3AoKTsKQEAgLTI1OSw2ICsyNjUsMTYgQEAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVFlQRT4gaW5saW5lCitzc2l6ZV90IFZlY3RvcjxUWVBFPjo6aW5zZXJ0QXJyYXlBdChjb25zdCBUWVBFKiBhcnJheSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbGVuZ3RoKSB7CisgICAgcmV0dXJuIFZlY3RvckltcGw6Omluc2VydEFycmF5QXQoYXJyYXksIGluZGV4LCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUWVBFPiBpbmxpbmUKK3NzaXplX3QgVmVjdG9yPFRZUEU+OjphcHBlbmRBcnJheShjb25zdCBUWVBFKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkgeworICAgIHJldHVybiBWZWN0b3JJbXBsOjphcHBlbmRBcnJheShhcnJheSwgbGVuZ3RoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVFlQRT4gaW5saW5lCiBzc2l6ZV90IFZlY3RvcjxUWVBFPjo6aW5zZXJ0QXQoY29uc3QgVFlQRSYgaXRlbSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbnVtSXRlbXMpIHsKICAgICByZXR1cm4gVmVjdG9ySW1wbDo6aW5zZXJ0QXQoJml0ZW0sIGluZGV4LCBudW1JdGVtcyk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxzL1ZlY3RvckltcGwuaCBiL2luY2x1ZGUvdXRpbHMvVmVjdG9ySW1wbC5oCmluZGV4IDQ5YjAzZjEuLmM0ZWMyZmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdXRpbHMvVmVjdG9ySW1wbC5oCisrKyBiL2luY2x1ZGUvdXRpbHMvVmVjdG9ySW1wbC5oCkBAIC02NSw5ICs2NSwxMSBAQAogICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgc2V0Q2FwYWNpdHkoc2l6ZV90IHNpemUpOwogCi0gICAgICAgICAgICAvKiEgYXBwZW5kL2luc2VydCBhbm90aGVyIHZlY3RvciAqLworICAgICAgICAgICAgLyohIGFwcGVuZC9pbnNlcnQgYW5vdGhlciB2ZWN0b3Igb3IgYXJyYXkgKi8KICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRWZWN0b3JBdChjb25zdCBWZWN0b3JJbXBsJiB2ZWN0b3IsIHNpemVfdCBpbmRleCk7CiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvckltcGwmIHZlY3Rvcik7CisgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXJyYXlBdChjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbGVuZ3RoKTsKKyAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBhcHBlbmRBcnJheShjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8qISBhZGQvaW5zZXJ0L3JlcGxhY2UgaXRlbXMgKi8KICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRBdChzaXplX3Qgd2hlcmUsIHNpemVfdCBudW1JdGVtcyA9IDEpOwpAQCAtMTg0LDYgKzE4Niw4IEBACiAgICAgICAgICAgICB2b2lkICAgICAgICAgICAgcHVzaChjb25zdCB2b2lkKiBpdGVtKTsKICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRWZWN0b3JBdChjb25zdCBWZWN0b3JJbXBsJiB2ZWN0b3IsIHNpemVfdCBpbmRleCk7CiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvckltcGwmIHZlY3Rvcik7CisgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXJyYXlBdChjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbGVuZ3RoKTsKKyAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBhcHBlbmRBcnJheShjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXQoc2l6ZV90IHdoZXJlLCBzaXplX3QgbnVtSXRlbXMgPSAxKTsKICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRBdChjb25zdCB2b2lkKiBpdGVtLCBzaXplX3Qgd2hlcmUsIHNpemVfdCBudW1JdGVtcyA9IDEpOwogICAgICAgICAgICAgc3NpemVfdCAgICAgICAgIHJlcGxhY2VBdChzaXplX3QgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91dGlscy9aaXBGaWxlQ1JPLmggYi9pbmNsdWRlL3V0aWxzL1ppcEZpbGVDUk8uaAppbmRleCAzMGUwMDM2Li5lMzhiZjY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3V0aWxzL1ppcEZpbGVDUk8uaAorKysgYi9pbmNsdWRlL3V0aWxzL1ppcEZpbGVDUk8uaApAQCAtNDcsOCArNDcsOCBAQAogICAgICAgICBjb25zdCBjaGFyKiBmaWxlTmFtZSk7CiAKIGV4dGVybiBib29sIFppcEZpbGVDUk9fZ2V0RW50cnlJbmZvKFppcEZpbGVDUk8gemlwLCBaaXBFbnRyeUNSTyBlbnRyeSwKLSAgICAgICAgaW50KiBwTWV0aG9kLCBsb25nKiBwVW5jb21wTGVuLAotICAgICAgICBsb25nKiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpOworICAgICAgICBpbnQqIHBNZXRob2QsIHNpemVfdCogcFVuY29tcExlbiwKKyAgICAgICAgc2l6ZV90KiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpOwogCiBleHRlcm4gYm9vbCBaaXBGaWxlQ1JPX3VuY29tcHJlc3NFbnRyeShaaXBGaWxlQ1JPIHppcCwgWmlwRW50cnlDUk8gZW50cnksIGludCBmZCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvWmlwRmlsZVJPLmggYi9pbmNsdWRlL3V0aWxzL1ppcEZpbGVSTy5oCmluZGV4IDUxYzRmMmYuLjk3ZDMxZjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdXRpbHMvWmlwRmlsZVJPLmgKKysrIGIvaW5jbHVkZS91dGlscy9aaXBGaWxlUk8uaApAQCAtNTgsMTQgKzU4LDE5IEBACiBjbGFzcyBaaXBGaWxlUk8gewogcHVibGljOgogICAgIFppcEZpbGVSTygpCi0gICAgICAgIDogbUZkKC0xKSwgbUZpbGVNYXAoTlVMTCksIG1IYXNoVGFibGVTaXplKC0xKSwgbUhhc2hUYWJsZShOVUxMKQorICAgICAgICA6IG1GZCgtMSksIG1GaWxlTmFtZShOVUxMKSwgbUZpbGVMZW5ndGgoLTEpLAorICAgICAgICAgIG1EaXJlY3RvcnlNYXAoTlVMTCksCisgICAgICAgICAgbU51bUVudHJpZXMoLTEpLCBtRGlyZWN0b3J5T2Zmc2V0KC0xKSwKKyAgICAgICAgICBtSGFzaFRhYmxlU2l6ZSgtMSksIG1IYXNoVGFibGUoTlVMTCkKICAgICAgICAge30KICAgICB+WmlwRmlsZVJPKCkgewogICAgICAgICBmcmVlKG1IYXNoVGFibGUpOwotICAgICAgICBpZiAobUZpbGVNYXApCi0gICAgICAgICAgICBtRmlsZU1hcC0+cmVsZWFzZSgpOworICAgICAgICBpZiAobURpcmVjdG9yeU1hcCkKKyAgICAgICAgICAgIG1EaXJlY3RvcnlNYXAtPnJlbGVhc2UoKTsKICAgICAgICAgaWYgKG1GZCA+PSAwKQogICAgICAgICAgICAgY2xvc2UobUZkKTsKKyAgICAgICAgaWYgKG1GaWxlTmFtZSkKKyAgICAgICAgICAgIGZyZWUobUZpbGVOYW1lKTsKICAgICB9CiAKICAgICAvKgpAQCAtMTE4LDggKzEyMyw4IEBACiAgICAgICogUmV0dXJucyAiZmFsc2UiIGlmICJlbnRyeSIgaXMgYm9ndXMgb3IgaWYgdGhlIGRhdGEgaW4gdGhlIFppcCBmaWxlCiAgICAgICogYXBwZWFycyB0byBiZSBiYWQuCiAgICAgICovCi0gICAgYm9vbCBnZXRFbnRyeUluZm8oWmlwRW50cnlSTyBlbnRyeSwgaW50KiBwTWV0aG9kLCBsb25nKiBwVW5jb21wTGVuLAotICAgICAgICBsb25nKiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpIGNvbnN0OworICAgIGJvb2wgZ2V0RW50cnlJbmZvKFppcEVudHJ5Uk8gZW50cnksIGludCogcE1ldGhvZCwgc2l6ZV90KiBwVW5jb21wTGVuLAorICAgICAgICBzaXplX3QqIHBDb21wTGVuLCBvZmZfdCogcE9mZnNldCwgbG9uZyogcE1vZFdoZW4sIGxvbmcqIHBDcmMzMikgY29uc3Q7CiAKICAgICAvKgogICAgICAqIENyZWF0ZSBhIG5ldyBGaWxlTWFwIG9iamVjdCB0aGF0IG1hcHMgYSBzdWJzZXQgb2YgdGhlIGFyY2hpdmUuICBGb3IKQEAgLTE1NSwxMyArMTYwLDEzIEBACiAgICAgICogVXRpbGl0eSBmdW5jdGlvbjogdW5jb21wcmVzcyBkZWZsYXRlZCBkYXRhLCBidWZmZXIgdG8gYnVmZmVyLgogICAgICAqLwogICAgIHN0YXRpYyBib29sIGluZmxhdGVCdWZmZXIodm9pZCogb3V0QnVmLCBjb25zdCB2b2lkKiBpbkJ1ZiwKLSAgICAgICAgbG9uZyB1bmNvbXBMZW4sIGxvbmcgY29tcExlbik7CisgICAgICAgIHNpemVfdCB1bmNvbXBMZW4sIHNpemVfdCBjb21wTGVuKTsKIAogICAgIC8qCiAgICAgICogVXRpbGl0eSBmdW5jdGlvbjogdW5jb21wcmVzcyBkZWZsYXRlZCBkYXRhLCBidWZmZXIgdG8gZmQuCiAgICAgICovCiAgICAgc3RhdGljIGJvb2wgaW5mbGF0ZUJ1ZmZlcihpbnQgZmQsIGNvbnN0IHZvaWQqIGluQnVmLAotICAgICAgICBsb25nIHVuY29tcExlbiwgbG9uZyBjb21wTGVuKTsKKyAgICAgICAgc2l6ZV90IHVuY29tcExlbiwgc2l6ZV90IGNvbXBMZW4pOwogCiAgICAgLyoKICAgICAgKiBTb21lIGJhc2ljIGZ1bmN0aW9ucyBmb3IgcmF3IGRhdGEgbWFuaXB1bGF0aW9uLiAgIkxFIiBtZWFucwpAQCAtMTc5LDYgKzE4NCw5IEBACiAgICAgWmlwRmlsZVJPKGNvbnN0IFppcEZpbGVSTyYgc3JjKTsKICAgICBaaXBGaWxlUk8mIG9wZXJhdG9yPShjb25zdCBaaXBGaWxlUk8mIHNyYyk7CiAKKyAgICAvKiBsb2NhdGUgYW5kIHBhcnNlIHRoZSBjZW50cmFsIGRpcmVjdG9yeSAqLworICAgIGJvb2wgbWFwQ2VudHJhbERpcmVjdG9yeSh2b2lkKTsKKwogICAgIC8qIHBhcnNlIHRoZSBhcmNoaXZlLCBwcmVwcGluZyBpbnRlcm5hbCBzdHJ1Y3R1cmVzICovCiAgICAgYm9vbCBwYXJzZVppcEFyY2hpdmUodm9pZCk7CiAKQEAgLTIwMywxMiArMjExLDIxIEBACiAgICAgLyogb3BlbiBaaXAgYXJjaGl2ZSAqLwogICAgIGludCAgICAgICAgIG1GZDsKIAorICAgIC8qIHppcCBmaWxlIG5hbWUgKi8KKyAgICBjaGFyKiAgICAgICBtRmlsZU5hbWU7CisKKyAgICAvKiBsZW5ndGggb2YgZmlsZSAqLworICAgIHNpemVfdCAgICAgIG1GaWxlTGVuZ3RoOworCiAgICAgLyogbWFwcGVkIGZpbGUgKi8KLSAgICBGaWxlTWFwKiAgICBtRmlsZU1hcDsKKyAgICBGaWxlTWFwKiAgICBtRGlyZWN0b3J5TWFwOwogCiAgICAgLyogbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIFppcCBhcmNoaXZlICovCiAgICAgaW50ICAgICAgICAgbU51bUVudHJpZXM7CiAKKyAgICAvKiBDRCBkaXJlY3Rvcnkgb2Zmc2V0IGluIHRoZSBaaXAgYXJjaGl2ZSAqLworICAgIG9mZl90ICAgICAgIG1EaXJlY3RvcnlPZmZzZXQ7CisKICAgICAvKgogICAgICAqIFdlIGtub3cgaG93IG1hbnkgZW50cmllcyBhcmUgaW4gdGhlIFppcCBhcmNoaXZlLCBzbyB3ZSBoYXZlIGEKICAgICAgKiBmaXhlZC1zaXplIGhhc2ggdGFibGUuICBXZSBwcm9iZSBmb3IgYW4gZW1wdHkgc2xvdC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvdGhyZWFkcy5oIGIvaW5jbHVkZS91dGlscy90aHJlYWRzLmgKaW5kZXggNWFjMGM1ZS4uMWJjZmFlZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91dGlscy90aHJlYWRzLmgKKysrIGIvaW5jbHVkZS91dGlscy90aHJlYWRzLmgKQEAgLTI5NSw2ICsyOTUsOTYgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURTKQorCisvKgorICogU2ltcGxlIG11dGV4IGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGlzIHN5c3RlbS1kZXBlbmRlbnQuCisgKgorICogVGhlIG11dGV4IG11c3QgYmUgdW5sb2NrZWQgYnkgdGhlIHRocmVhZCB0aGF0IGxvY2tlZCBpdC4gIFRoZXkgYXJlIG5vdAorICogcmVjdXJzaXZlLCBpLmUuIHRoZSBzYW1lIHRocmVhZCBjYW4ndCBsb2NrIGl0IG11bHRpcGxlIHRpbWVzLgorICovCitjbGFzcyBSV0xvY2sgeworcHVibGljOgorICAgIGVudW0geworICAgICAgICBQUklWQVRFID0gMCwKKyAgICAgICAgU0hBUkVEID0gMQorICAgIH07CisKKyAgICAgICAgICAgICAgICBSV0xvY2soKTsKKyAgICAgICAgICAgICAgICBSV0xvY2soY29uc3QgY2hhciogbmFtZSk7CisgICAgICAgICAgICAgICAgUldMb2NrKGludCB0eXBlLCBjb25zdCBjaGFyKiBuYW1lID0gTlVMTCk7CisgICAgICAgICAgICAgICAgflJXTG9jaygpOworCisgICAgc3RhdHVzX3QgICAgcmVhZExvY2soKTsKKyAgICBzdGF0dXNfdCAgICB0cnlSZWFkTG9jaygpOworICAgIHN0YXR1c190ICAgIHdyaXRlTG9jaygpOworICAgIHN0YXR1c190ICAgIHRyeVdyaXRlTG9jaygpOworICAgIHZvaWQgICAgICAgIHVubG9jaygpOworCisgICAgY2xhc3MgQXV0b1JMb2NrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGlubGluZSBBdXRvUkxvY2soUldMb2NrJiByd2xvY2spIDogbUxvY2socndsb2NrKSAgeyBtTG9jay5yZWFkTG9jaygpOyB9CisgICAgICAgIGlubGluZSB+QXV0b1JMb2NrKCkgeyBtTG9jay51bmxvY2soKTsgfQorICAgIHByaXZhdGU6CisgICAgICAgIFJXTG9jayYgbUxvY2s7CisgICAgfTsKKworICAgIGNsYXNzIEF1dG9XTG9jayB7CisgICAgcHVibGljOgorICAgICAgICBpbmxpbmUgQXV0b1dMb2NrKFJXTG9jayYgcndsb2NrKSA6IG1Mb2NrKHJ3bG9jaykgIHsgbUxvY2sud3JpdGVMb2NrKCk7IH0KKyAgICAgICAgaW5saW5lIH5BdXRvV0xvY2soKSB7IG1Mb2NrLnVubG9jaygpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgUldMb2NrJiBtTG9jazsKKyAgICB9OworCitwcml2YXRlOgorICAgIC8vIEEgUldMb2NrIGNhbm5vdCBiZSBjb3BpZWQKKyAgICAgICAgICAgICAgICBSV0xvY2soY29uc3QgUldMb2NrJik7CisgICBSV0xvY2smICAgICAgb3BlcmF0b3IgPSAoY29uc3QgUldMb2NrJik7CisKKyAgIHB0aHJlYWRfcndsb2NrX3QgbVJXTG9jazsKK307CisKK2lubGluZSBSV0xvY2s6OlJXTG9jaygpIHsKKyAgICBwdGhyZWFkX3J3bG9ja19pbml0KCZtUldMb2NrLCBOVUxMKTsKK30KK2lubGluZSBSV0xvY2s6OlJXTG9jayhjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgcHRocmVhZF9yd2xvY2tfaW5pdCgmbVJXTG9jaywgTlVMTCk7Cit9CitpbmxpbmUgUldMb2NrOjpSV0xvY2soaW50IHR5cGUsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICBpZiAodHlwZSA9PSBTSEFSRUQpIHsKKyAgICAgICAgcHRocmVhZF9yd2xvY2thdHRyX3QgYXR0cjsKKyAgICAgICAgcHRocmVhZF9yd2xvY2thdHRyX2luaXQoJmF0dHIpOworICAgICAgICBwdGhyZWFkX3J3bG9ja2F0dHJfc2V0cHNoYXJlZCgmYXR0ciwgUFRIUkVBRF9QUk9DRVNTX1NIQVJFRCk7CisgICAgICAgIHB0aHJlYWRfcndsb2NrX2luaXQoJm1SV0xvY2ssICZhdHRyKTsKKyAgICAgICAgcHRocmVhZF9yd2xvY2thdHRyX2Rlc3Ryb3koJmF0dHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHB0aHJlYWRfcndsb2NrX2luaXQoJm1SV0xvY2ssIE5VTEwpOworICAgIH0KK30KK2lubGluZSBSV0xvY2s6On5SV0xvY2soKSB7CisgICAgcHRocmVhZF9yd2xvY2tfZGVzdHJveSgmbVJXTG9jayk7Cit9CitpbmxpbmUgc3RhdHVzX3QgUldMb2NrOjpyZWFkTG9jaygpIHsKKyAgICByZXR1cm4gLXB0aHJlYWRfcndsb2NrX3JkbG9jaygmbVJXTG9jayk7Cit9CitpbmxpbmUgc3RhdHVzX3QgUldMb2NrOjp0cnlSZWFkTG9jaygpIHsKKyAgICByZXR1cm4gLXB0aHJlYWRfcndsb2NrX3RyeXJkbG9jaygmbVJXTG9jayk7Cit9CitpbmxpbmUgc3RhdHVzX3QgUldMb2NrOjp3cml0ZUxvY2soKSB7CisgICAgcmV0dXJuIC1wdGhyZWFkX3J3bG9ja193cmxvY2soJm1SV0xvY2spOworfQoraW5saW5lIHN0YXR1c190IFJXTG9jazo6dHJ5V3JpdGVMb2NrKCkgeworICAgIHJldHVybiAtcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrKCZtUldMb2NrKTsKK30KK2lubGluZSB2b2lkIFJXTG9jazo6dW5sb2NrKCkgeworICAgIHB0aHJlYWRfcndsb2NrX3VubG9jaygmbVJXTG9jayk7Cit9CisKKyNlbmRpZiAvLyBIQVZFX1BUSFJFQURTCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogLyoKICAqIENvbmRpdGlvbiB2YXJpYWJsZSBjbGFzcy4gIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzeXN0ZW0tZGVwZW5kZW50LgogICoKZGlmZiAtLWdpdCBhL2xpYnMvYXVkaW9mbGluZ2VyL0FuZHJvaWQubWsgYi9saWJzL2F1ZGlvZmxpbmdlci9BbmRyb2lkLm1rCmluZGV4IDg3MGMwYjguLjIyZWNjNTQgMTAwNjQ0Ci0tLSBhL2xpYnMvYXVkaW9mbGluZ2VyL0FuZHJvaWQubWsKKysrIGIvbGlicy9hdWRpb2ZsaW5nZXIvQW5kcm9pZC5tawpAQCAtODcsNyArODcsOCBAQAogICAgIGxpYnV0aWxzIFwKICAgICBsaWJiaW5kZXIgXAogICAgIGxpYm1lZGlhIFwKLSAgICBsaWJoYXJkd2FyZV9sZWdhY3kKKyAgICBsaWJoYXJkd2FyZV9sZWdhY3kgXAorICAgIGxpYmVmZmVjdHMKIAogaWZlcSAoJChzdHJpcCAkKEJPQVJEX1VTRVNfR0VORVJJQ19BVURJTykpLHRydWUpCiAgIExPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgKz0gbGliYXVkaW9pbnRlcmZhY2UgbGliYXVkaW9wb2xpY3liYXNlCmRpZmYgLS1naXQgYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0R1bXBJbnRlcmZhY2UuY3BwIGIvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9EdW1wSW50ZXJmYWNlLmNwcAppbmRleCBhMDE4YjRjLi42YzExMTE0IDEwMDY0NAotLS0gYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0R1bXBJbnRlcmZhY2UuY3BwCisrKyBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRHVtcEludGVyZmFjZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQXVkaW9EdW1wSW50ZXJmYWNlOjpBdWRpb0R1bXBJbnRlcmZhY2UoQXVkaW9IYXJkd2FyZUludGVyZmFjZSogaHcpCi0gICAgOiBtRmlyc3RId091dHB1dCh0cnVlKSwgbVBvbGljeUNvbW1hbmRzKFN0cmluZzgoIiIpKSwgbUZpbGVOYW1lKFN0cmluZzgoIiIpKQorICAgIDogbVBvbGljeUNvbW1hbmRzKFN0cmluZzgoIiIpKSwgbUZpbGVOYW1lKFN0cmluZzgoIiIpKQogewogICAgIGlmKGh3ID09IDApIHsKICAgICAgICAgTE9HRSgiRHVtcCBjb25zdHJ1Y3QgaHcgPSAwIik7CkBAIC00Nyw2ICs0NywxMSBAQAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbU91dHB1dHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY2xvc2VPdXRwdXRTdHJlYW0oKEF1ZGlvU3RyZWFtT3V0ICopbU91dHB1dHNbaV0pOwogICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUlucHV0cy5zaXplKCk7IGkrKykgeworICAgICAgICBjbG9zZUlucHV0U3RyZWFtKChBdWRpb1N0cmVhbUluICopbUlucHV0c1tpXSk7CisgICAgfQorCiAgICAgaWYobUZpbmFsSW50ZXJmYWNlKSBkZWxldGUgbUZpbmFsSW50ZXJmYWNlOwogfQogCkBAIC02MCwzMSArNjUsMzIgQEAKICAgICB1aW50MzJfdCBsUmF0ZSA9IDQ0MTAwOwogCiAKLSAgICBpZiAoQXVkaW9TeXN0ZW06OmlzQTJkcERldmljZSgoQXVkaW9TeXN0ZW06OmF1ZGlvX2RldmljZXMpZGV2aWNlcykgfHwgbUZpcnN0SHdPdXRwdXQpIHsKLSAgICAgICAgb3V0RmluYWwgPSBtRmluYWxJbnRlcmZhY2UtPm9wZW5PdXRwdXRTdHJlYW0oZGV2aWNlcywgZm9ybWF0LCBjaGFubmVscywgc2FtcGxlUmF0ZSwgc3RhdHVzKTsKLSAgICAgICAgaWYgKG91dEZpbmFsICE9IDApIHsKLSAgICAgICAgICAgIGxGb3JtYXQgPSBvdXRGaW5hbC0+Zm9ybWF0KCk7Ci0gICAgICAgICAgICBsQ2hhbm5lbHMgPSBvdXRGaW5hbC0+Y2hhbm5lbHMoKTsKLSAgICAgICAgICAgIGxSYXRlID0gb3V0RmluYWwtPnNhbXBsZVJhdGUoKTsKLSAgICAgICAgICAgIGlmICghQXVkaW9TeXN0ZW06OmlzQTJkcERldmljZSgoQXVkaW9TeXN0ZW06OmF1ZGlvX2RldmljZXMpZGV2aWNlcykpIHsKLSAgICAgICAgICAgICAgICBtRmlyc3RId091dHB1dCA9IGZhbHNlOworICAgIG91dEZpbmFsID0gbUZpbmFsSW50ZXJmYWNlLT5vcGVuT3V0cHV0U3RyZWFtKGRldmljZXMsIGZvcm1hdCwgY2hhbm5lbHMsIHNhbXBsZVJhdGUsIHN0YXR1cyk7CisgICAgaWYgKG91dEZpbmFsICE9IDApIHsKKyAgICAgICAgbEZvcm1hdCA9IG91dEZpbmFsLT5mb3JtYXQoKTsKKyAgICAgICAgbENoYW5uZWxzID0gb3V0RmluYWwtPmNoYW5uZWxzKCk7CisgICAgICAgIGxSYXRlID0gb3V0RmluYWwtPnNhbXBsZVJhdGUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZm9ybWF0ICE9IDApIHsKKyAgICAgICAgICAgIGlmICgqZm9ybWF0ICE9IDApIHsKKyAgICAgICAgICAgICAgICBsRm9ybWF0ID0gKmZvcm1hdDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKmZvcm1hdCA9IGxGb3JtYXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZm9ybWF0ICE9IDAgJiYgKmZvcm1hdCAhPSAwKSB7Ci0gICAgICAgICAgICBsRm9ybWF0ID0gKmZvcm1hdDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxGb3JtYXQgPSBBdWRpb1N5c3RlbTo6UENNXzE2X0JJVDsKKyAgICAgICAgaWYgKGNoYW5uZWxzICE9IDApIHsKKyAgICAgICAgICAgIGlmICgqY2hhbm5lbHMgIT0gMCkgeworICAgICAgICAgICAgICAgIGxDaGFubmVscyA9ICpjaGFubmVsczsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKmNoYW5uZWxzID0gbENoYW5uZWxzOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFubmVscyAhPSAwICYmICpjaGFubmVscyAhPSAwKSB7Ci0gICAgICAgICAgICBsQ2hhbm5lbHMgPSAqY2hhbm5lbHM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsQ2hhbm5lbHMgPSBBdWRpb1N5c3RlbTo6Q0hBTk5FTF9PVVRfU1RFUkVPOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzYW1wbGVSYXRlICE9IDAgJiYgKnNhbXBsZVJhdGUgIT0gMCkgewotICAgICAgICAgICAgbFJhdGUgPSAqc2FtcGxlUmF0ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxSYXRlID0gNDQxMDA7CisgICAgICAgIGlmIChzYW1wbGVSYXRlICE9IDApIHsKKyAgICAgICAgICAgIGlmICgqc2FtcGxlUmF0ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbFJhdGUgPSAqc2FtcGxlUmF0ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKnNhbXBsZVJhdGUgPSBsUmF0ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoc3RhdHVzKSAqc3RhdHVzID0gTk9fRVJST1I7CiAgICAgfQpAQCAtMTExLDcgKzExNyw2IEBACiAgICAgZHVtcE91dC0+c3RhbmRieSgpOwogICAgIGlmIChkdW1wT3V0LT5maW5hbFN0cmVhbSgpICE9IE5VTEwpIHsKICAgICAgICAgbUZpbmFsSW50ZXJmYWNlLT5jbG9zZU91dHB1dFN0cmVhbShkdW1wT3V0LT5maW5hbFN0cmVhbSgpKTsKLSAgICAgICAgbUZpcnN0SHdPdXRwdXQgPSB0cnVlOwogICAgIH0KIAogICAgIG1PdXRwdXRzLnJlbW92ZShkdW1wT3V0KTsKQEAgLTEyNiwxOCArMTMxLDMzIEBACiAgICAgdWludDMyX3QgbENoYW5uZWxzID0gQXVkaW9TeXN0ZW06OkNIQU5ORUxfSU5fTU9OTzsKICAgICB1aW50MzJfdCBsUmF0ZSA9IDgwMDA7CiAKLQotICAgIGlmIChtSW5wdXRzLnNpemUoKSA9PSAwKSB7Ci0gICAgICAgIGluRmluYWwgPSBtRmluYWxJbnRlcmZhY2UtPm9wZW5JbnB1dFN0cmVhbShkZXZpY2VzLCBmb3JtYXQsIGNoYW5uZWxzLCBzYW1wbGVSYXRlLCBzdGF0dXMsIGFjb3VzdGljcyk7Ci0gICAgICAgIGlmIChpbkZpbmFsID09IDApIHJldHVybiAwOwotCisgICAgaW5GaW5hbCA9IG1GaW5hbEludGVyZmFjZS0+b3BlbklucHV0U3RyZWFtKGRldmljZXMsIGZvcm1hdCwgY2hhbm5lbHMsIHNhbXBsZVJhdGUsIHN0YXR1cywgYWNvdXN0aWNzKTsKKyAgICBpZiAoaW5GaW5hbCAhPSAwKSB7CiAgICAgICAgIGxGb3JtYXQgPSBpbkZpbmFsLT5mb3JtYXQoKTsKICAgICAgICAgbENoYW5uZWxzID0gaW5GaW5hbC0+Y2hhbm5lbHMoKTsKICAgICAgICAgbFJhdGUgPSBpbkZpbmFsLT5zYW1wbGVSYXRlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZvcm1hdCAhPSAwICYmICpmb3JtYXQgIT0gMCkgbEZvcm1hdCA9ICpmb3JtYXQ7Ci0gICAgICAgIGlmIChjaGFubmVscyAhPSAwICYmICpjaGFubmVscyAhPSAwKSBsQ2hhbm5lbHMgPSAqY2hhbm5lbHM7Ci0gICAgICAgIGlmIChzYW1wbGVSYXRlICE9IDAgJiYgKnNhbXBsZVJhdGUgIT0gMCkgbFJhdGUgPSAqc2FtcGxlUmF0ZTsKKyAgICAgICAgaWYgKGZvcm1hdCAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKmZvcm1hdCAhPSAwKSB7CisgICAgICAgICAgICAgICAgbEZvcm1hdCA9ICpmb3JtYXQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpmb3JtYXQgPSBsRm9ybWF0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjaGFubmVscyAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKmNoYW5uZWxzICE9IDApIHsKKyAgICAgICAgICAgICAgICBsQ2hhbm5lbHMgPSAqY2hhbm5lbHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpjaGFubmVscyA9IGxDaGFubmVsczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoc2FtcGxlUmF0ZSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKnNhbXBsZVJhdGUgIT0gMCkgeworICAgICAgICAgICAgICAgIGxSYXRlID0gKnNhbXBsZVJhdGU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpzYW1wbGVSYXRlID0gbFJhdGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKHN0YXR1cykgKnN0YXR1cyA9IE5PX0VSUk9SOwogICAgIH0KICAgICBMT0dWKCJvcGVuSW5wdXRTdHJlYW0oKSwgaW5GaW5hbCAlcCIsIGluRmluYWwpOwpAQCAtMjIzLDYgKzI0MywxNSBAQAogICAgIHJldHVybiBrZXlWYWx1ZVBhaXJzOwogfQogCitzdGF0dXNfdCBBdWRpb0R1bXBJbnRlcmZhY2U6OnNldE1vZGUoaW50IG1vZGUpCit7CisgICAgcmV0dXJuIG1GaW5hbEludGVyZmFjZS0+c2V0TW9kZShtb2RlKTsKK30KKworc2l6ZV90IEF1ZGlvRHVtcEludGVyZmFjZTo6Z2V0SW5wdXRCdWZmZXJTaXplKHVpbnQzMl90IHNhbXBsZVJhdGUsIGludCBmb3JtYXQsIGludCBjaGFubmVsQ291bnQpCit7CisgICAgcmV0dXJuIG1GaW5hbEludGVyZmFjZS0+Z2V0SW5wdXRCdWZmZXJTaXplKHNhbXBsZVJhdGUsIGZvcm1hdCwgY2hhbm5lbENvdW50KTsKK30KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yMzUsNyArMjY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzYW1wbGVSYXRlKQogICAgIDogbUludGVyZmFjZShpbnRlcmZhY2UpLCBtSWQoaWQpLAogICAgICAgbVNhbXBsZVJhdGUoc2FtcGxlUmF0ZSksIG1Gb3JtYXQoZm9ybWF0KSwgbUNoYW5uZWxzKGNoYW5uZWxzKSwgbUxhdGVuY3koMCksIG1EZXZpY2UoZGV2aWNlcyksCi0gICAgICBtQnVmZmVyU2l6ZSgxMDI0KSwgbUZpbmFsU3RyZWFtKGZpbmFsU3RyZWFtKSwgbU91dEZpbGUoMCksIG1GaWxlQ291bnQoMCkKKyAgICAgIG1CdWZmZXJTaXplKDEwMjQpLCBtRmluYWxTdHJlYW0oZmluYWxTdHJlYW0pLCBtRmlsZSgwKSwgbUZpbGVDb3VudCgwKQogewogICAgIExPR1YoIkF1ZGlvU3RyZWFtT3V0RHVtcCBDb25zdHJ1Y3RvciAlcCwgbUludGVyZmFjZSAlcCwgbUZpbmFsU3RyZWFtICVwIiwgdGhpcywgbUludGVyZmFjZSwgbUZpbmFsU3RyZWFtKTsKIH0KQEAgLTI1NCwyNiArMjgzLDI2IEBACiAgICAgaWYgKG1GaW5hbFN0cmVhbSkgewogICAgICAgICByZXQgPSBtRmluYWxTdHJlYW0tPndyaXRlKGJ1ZmZlciwgYnl0ZXMpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHVzbGVlcCgoYnl0ZXMgKiAxMDAwMDAwKSAvIGZyYW1lU2l6ZSgpIC8gc2FtcGxlUmF0ZSgpKTsKKyAgICAgICAgdXNsZWVwKCgoKGJ5dGVzICogMTAwMCkgLyBmcmFtZVNpemUoKSkgLyBzYW1wbGVSYXRlKCkpICogMTAwMCk7CiAgICAgICAgIHJldCA9IGJ5dGVzOwogICAgIH0KLSAgICBpZighbU91dEZpbGUpIHsKKyAgICBpZighbUZpbGUpIHsKICAgICAgICAgaWYgKG1JbnRlcmZhY2UtPmZpbGVOYW1lKCkgIT0gIiIpIHsKICAgICAgICAgICAgIGNoYXIgbmFtZVsyNTVdOwotICAgICAgICAgICAgc3ByaW50ZihuYW1lLCAiJXNfJWRfJWQucGNtIiwgbUludGVyZmFjZS0+ZmlsZU5hbWUoKS5zdHJpbmcoKSwgbUlkLCArK21GaWxlQ291bnQpOwotICAgICAgICAgICAgbU91dEZpbGUgPSBmb3BlbihuYW1lLCAid2IiKTsKLSAgICAgICAgICAgIExPR1YoIk9wZW5pbmcgZHVtcCBmaWxlICVzLCBmaCAlcCIsIG5hbWUsIG1PdXRGaWxlKTsKKyAgICAgICAgICAgIHNwcmludGYobmFtZSwgIiVzX291dF8lZF8lZC5wY20iLCBtSW50ZXJmYWNlLT5maWxlTmFtZSgpLnN0cmluZygpLCBtSWQsICsrbUZpbGVDb3VudCk7CisgICAgICAgICAgICBtRmlsZSA9IGZvcGVuKG5hbWUsICJ3YiIpOworICAgICAgICAgICAgTE9HVigiT3BlbmluZyBkdW1wIGZpbGUgJXMsIGZoICVwIiwgbmFtZSwgbUZpbGUpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChtT3V0RmlsZSkgewotICAgICAgICBmd3JpdGUoYnVmZmVyLCBieXRlcywgMSwgbU91dEZpbGUpOworICAgIGlmIChtRmlsZSkgeworICAgICAgICBmd3JpdGUoYnVmZmVyLCBieXRlcywgMSwgbUZpbGUpOwogICAgIH0KICAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0dXNfdCBBdWRpb1N0cmVhbU91dER1bXA6OnN0YW5kYnkoKQogewotICAgIExPR1YoIkF1ZGlvU3RyZWFtT3V0RHVtcCBzdGFuZGJ5KCksIG1PdXRGaWxlICVwLCBtRmluYWxTdHJlYW0gJXAiLCBtT3V0RmlsZSwgbUZpbmFsU3RyZWFtKTsKKyAgICBMT0dWKCJBdWRpb1N0cmVhbU91dER1bXAgc3RhbmRieSgpLCBtRmlsZSAlcCwgbUZpbmFsU3RyZWFtICVwIiwgbUZpbGUsIG1GaW5hbFN0cmVhbSk7CiAKICAgICBDbG9zZSgpOwogICAgIGlmIChtRmluYWxTdHJlYW0gIT0gMCApIHJldHVybiBtRmluYWxTdHJlYW0tPnN0YW5kYnkoKTsKQEAgLTMzMCw3ICszNTksNyBAQAogICAgIH0KIAogICAgIGlmIChwYXJhbS5nZXRJbnQoU3RyaW5nOCgiZm9ybWF0IiksIHZhbHVlSW50KSA9PSBOT19FUlJPUikgewotICAgICAgICBpZiAobU91dEZpbGUgPT0gMCkgeworICAgICAgICBpZiAobUZpbGUgPT0gMCkgewogICAgICAgICAgICAgbUZvcm1hdCA9IHZhbHVlSW50OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RhdHVzID0gSU5WQUxJRF9PUEVSQVRJT047CkBAIC0zNDUsNyArMzc0LDcgQEAKICAgICB9CiAgICAgaWYgKHBhcmFtLmdldEludChTdHJpbmc4KCJzYW1wbGluZ19yYXRlIiksIHZhbHVlSW50KSA9PSBOT19FUlJPUikgewogICAgICAgICBpZiAodmFsdWVJbnQgPiAwICYmIHZhbHVlSW50IDw9IDQ4MDAwKSB7Ci0gICAgICAgICAgICBpZiAobU91dEZpbGUgPT0gMCkgeworICAgICAgICAgICAgaWYgKG1GaWxlID09IDApIHsKICAgICAgICAgICAgICAgICBtU2FtcGxlUmF0ZSA9IHZhbHVlSW50OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBJTlZBTElEX09QRVJBVElPTjsKQEAgLTM3Myw5ICs0MDIsOSBAQAogCiB2b2lkIEF1ZGlvU3RyZWFtT3V0RHVtcDo6Q2xvc2UoKQogewotICAgIGlmKG1PdXRGaWxlKSB7Ci0gICAgICAgIGZjbG9zZShtT3V0RmlsZSk7Ci0gICAgICAgIG1PdXRGaWxlID0gMDsKKyAgICBpZihtRmlsZSkgeworICAgICAgICBmY2xvc2UobUZpbGUpOworICAgICAgICBtRmlsZSA9IDA7CiAgICAgfQogfQogCkBAIC0zOTYsNyArNDI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzYW1wbGVSYXRlKQogICAgIDogbUludGVyZmFjZShpbnRlcmZhY2UpLCBtSWQoaWQpLAogICAgICAgbVNhbXBsZVJhdGUoc2FtcGxlUmF0ZSksIG1Gb3JtYXQoZm9ybWF0KSwgbUNoYW5uZWxzKGNoYW5uZWxzKSwgbURldmljZShkZXZpY2VzKSwKLSAgICAgIG1CdWZmZXJTaXplKDEwMjQpLCBtRmluYWxTdHJlYW0oZmluYWxTdHJlYW0pLCBtSW5GaWxlKDApCisgICAgICBtQnVmZmVyU2l6ZSgxMDI0KSwgbUZpbmFsU3RyZWFtKGZpbmFsU3RyZWFtKSwgbUZpbGUoMCksIG1GaWxlQ291bnQoMCkKIHsKICAgICBMT0dWKCJBdWRpb1N0cmVhbUluRHVtcCBDb25zdHJ1Y3RvciAlcCwgbUludGVyZmFjZSAlcCwgbUZpbmFsU3RyZWFtICVwIiwgdGhpcywgbUludGVyZmFjZSwgbUZpbmFsU3RyZWFtKTsKIH0KQEAgLTQwOSw1NSArNDM4LDY4IEBACiAKIHNzaXplX3QgQXVkaW9TdHJlYW1JbkR1bXA6OnJlYWQodm9pZCogYnVmZmVyLCBzc2l6ZV90IGJ5dGVzKQogeworICAgIHNzaXplX3QgcmV0OworCiAgICAgaWYgKG1GaW5hbFN0cmVhbSkgewotICAgICAgICByZXR1cm4gbUZpbmFsU3RyZWFtLT5yZWFkKGJ1ZmZlciwgYnl0ZXMpOwotICAgIH0KLQotICAgIHVzbGVlcCgoYnl0ZXMgKiAxMDAwMDAwKSAvIGZyYW1lU2l6ZSgpIC8gc2FtcGxlUmF0ZSgpKTsKLQotICAgIGlmKCFtSW5GaWxlKSB7Ci0gICAgICAgIGNoYXIgbmFtZVsyNTVdOwotICAgICAgICBzdHJjcHkobmFtZSwgIi9zZGNhcmQvbXVzaWMvc2luZTQ0MCIpOwotICAgICAgICBpZiAoY2hhbm5lbHMoKSA9PSBBdWRpb1N5c3RlbTo6Q0hBTk5FTF9JTl9NT05PKSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl9tbyIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfc3QiKTsKKyAgICAgICAgcmV0ID0gbUZpbmFsU3RyZWFtLT5yZWFkKGJ1ZmZlciwgYnl0ZXMpOworICAgICAgICBpZighbUZpbGUpIHsKKyAgICAgICAgICAgIGlmIChtSW50ZXJmYWNlLT5maWxlTmFtZSgpICE9ICIiKSB7CisgICAgICAgICAgICAgICAgY2hhciBuYW1lWzI1NV07CisgICAgICAgICAgICAgICAgc3ByaW50ZihuYW1lLCAiJXNfaW5fJWRfJWQucGNtIiwgbUludGVyZmFjZS0+ZmlsZU5hbWUoKS5zdHJpbmcoKSwgbUlkLCArK21GaWxlQ291bnQpOworICAgICAgICAgICAgICAgIG1GaWxlID0gZm9wZW4obmFtZSwgIndiIik7CisgICAgICAgICAgICAgICAgTE9HVigiT3BlbmluZyBpbnB1dCBkdW1wIGZpbGUgJXMsIGZoICVwIiwgbmFtZSwgbUZpbGUpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChmb3JtYXQoKSA9PSBBdWRpb1N5c3RlbTo6UENNXzE2X0JJVCkgewotICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfMTZiIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl84YiIpOworICAgICAgICBpZiAobUZpbGUpIHsKKyAgICAgICAgICAgIGZ3cml0ZShidWZmZXIsIGJ5dGVzLCAxLCBtRmlsZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHNhbXBsZVJhdGUoKSA8IDE2MDAwKSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl84ayIpOwotICAgICAgICB9IGVsc2UgaWYgKHNhbXBsZVJhdGUoKSA8IDMyMDAwKSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl8yMmsiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzYW1wbGVSYXRlKCkgPCA0ODAwMCkgewotICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfNDRrIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl80OGsiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1c2xlZXAoKCgoYnl0ZXMgKiAxMDAwKSAvIGZyYW1lU2l6ZSgpKSAvIHNhbXBsZVJhdGUoKSkgKiAxMDAwKTsKKyAgICAgICAgcmV0ID0gYnl0ZXM7CisgICAgICAgIGlmKCFtRmlsZSkgeworICAgICAgICAgICAgY2hhciBuYW1lWzI1NV07CisgICAgICAgICAgICBzdHJjcHkobmFtZSwgIi9zZGNhcmQvbXVzaWMvc2luZTQ0MCIpOworICAgICAgICAgICAgaWYgKGNoYW5uZWxzKCkgPT0gQXVkaW9TeXN0ZW06OkNIQU5ORUxfSU5fTU9OTykgeworICAgICAgICAgICAgICAgIHN0cmNhdChuYW1lLCAiX21vIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0cmNhdChuYW1lLCAiX3N0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZm9ybWF0KCkgPT0gQXVkaW9TeXN0ZW06OlBDTV8xNl9CSVQpIHsKKyAgICAgICAgICAgICAgICBzdHJjYXQobmFtZSwgIl8xNmIiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfOGIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzYW1wbGVSYXRlKCkgPCAxNjAwMCkgeworICAgICAgICAgICAgICAgIHN0cmNhdChuYW1lLCAiXzhrIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNhbXBsZVJhdGUoKSA8IDMyMDAwKSB7CisgICAgICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfMjJrIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNhbXBsZVJhdGUoKSA8IDQ4MDAwKSB7CisgICAgICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfNDRrIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0cmNhdChuYW1lLCAiXzQ4ayIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RyY2F0KG5hbWUsICIud2F2Iik7CisgICAgICAgICAgICBtRmlsZSA9IGZvcGVuKG5hbWUsICJyYiIpOworICAgICAgICAgICAgTE9HVigiT3BlbmluZyBpbnB1dCByZWFkIGZpbGUgJXMsIGZoICVwIiwgbmFtZSwgbUZpbGUpOworICAgICAgICAgICAgaWYgKG1GaWxlKSB7CisgICAgICAgICAgICAgICAgZnNlZWsobUZpbGUsIEFVRElPX0RVTVBfV0FWRV9IRFJfU0laRSwgU0VFS19TRVQpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHN0cmNhdChuYW1lLCAiLndhdiIpOwotICAgICAgICBtSW5GaWxlID0gZm9wZW4obmFtZSwgInJiIik7Ci0gICAgICAgIExPR1YoIk9wZW5pbmcgZHVtcCBmaWxlICVzLCBmaCAlcCIsIG5hbWUsIG1JbkZpbGUpOwotICAgICAgICBpZiAobUluRmlsZSkgewotICAgICAgICAgICAgZnNlZWsobUluRmlsZSwgQVVESU9fRFVNUF9XQVZFX0hEUl9TSVpFLCBTRUVLX1NFVCk7Ci0gICAgICAgIH0KLQotICAgIH0KLSAgICBpZiAobUluRmlsZSkgewotICAgICAgICBzc2l6ZV90IGJ5dGVzUmVhZCA9IGZyZWFkKGJ1ZmZlciwgYnl0ZXMsIDEsIG1JbkZpbGUpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ5dGVzKSB7Ci0gICAgICAgICAgICBmc2VlayhtSW5GaWxlLCBBVURJT19EVU1QX1dBVkVfSERSX1NJWkUsIFNFRUtfU0VUKTsKLSAgICAgICAgICAgIGZyZWFkKCh1aW50OF90ICopYnVmZmVyK2J5dGVzUmVhZCwgYnl0ZXMtYnl0ZXNSZWFkLCAxLCBtSW5GaWxlKTsKKyAgICAgICAgaWYgKG1GaWxlKSB7CisgICAgICAgICAgICBzc2l6ZV90IGJ5dGVzUmVhZCA9IGZyZWFkKGJ1ZmZlciwgYnl0ZXMsIDEsIG1GaWxlKTsKKyAgICAgICAgICAgIGlmIChieXRlc1JlYWQgPj0wICYmIGJ5dGVzUmVhZCA8IGJ5dGVzKSB7CisgICAgICAgICAgICAgICAgZnNlZWsobUZpbGUsIEFVRElPX0RVTVBfV0FWRV9IRFJfU0laRSwgU0VFS19TRVQpOworICAgICAgICAgICAgICAgIGZyZWFkKCh1aW50OF90ICopYnVmZmVyK2J5dGVzUmVhZCwgYnl0ZXMtYnl0ZXNSZWFkLCAxLCBtRmlsZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGJ5dGVzOworCisgICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdHVzX3QgQXVkaW9TdHJlYW1JbkR1bXA6OnN0YW5kYnkoKQogewotICAgIExPR1YoIkF1ZGlvU3RyZWFtSW5EdW1wIHN0YW5kYnkoKSwgbUluRmlsZSAlcCwgbUZpbmFsU3RyZWFtICVwIiwgbUluRmlsZSwgbUZpbmFsU3RyZWFtKTsKKyAgICBMT0dWKCJBdWRpb1N0cmVhbUluRHVtcCBzdGFuZGJ5KCksIG1GaWxlICVwLCBtRmluYWxTdHJlYW0gJXAiLCBtRmlsZSwgbUZpbmFsU3RyZWFtKTsKIAogICAgIENsb3NlKCk7CiAgICAgaWYgKG1GaW5hbFN0cmVhbSAhPSAwICkgcmV0dXJuIG1GaW5hbFN0cmVhbS0+c3RhbmRieSgpOwpAQCAtNTIzLDkgKzU2NSw5IEBACiAKIHZvaWQgQXVkaW9TdHJlYW1JbkR1bXA6OkNsb3NlKCkKIHsKLSAgICBpZihtSW5GaWxlKSB7Ci0gICAgICAgIGZjbG9zZShtSW5GaWxlKTsKLSAgICAgICAgbUluRmlsZSA9IDA7CisgICAgaWYobUZpbGUpIHsKKyAgICAgICAgZmNsb3NlKG1GaWxlKTsKKyAgICAgICAgbUZpbGUgPSAwOwogICAgIH0KIH0KIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0R1bXBJbnRlcmZhY2UuaCBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRHVtcEludGVyZmFjZS5oCmluZGV4IDRjNjJiM2UuLjgxNGNlNWYgMTAwNjQ0Ci0tLSBhL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRHVtcEludGVyZmFjZS5oCisrKyBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRHVtcEludGVyZmFjZS5oCkBAIC02OSw3ICs2OSw3IEBACiAgICAgdWludDMyX3QgbURldmljZTsgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBkZXZpY2UgdGhpcyBvdXRwdXQgaXMgcm91dGVkIHRvCiAgICAgc2l6ZV90ICBtQnVmZmVyU2l6ZTsKICAgICBBdWRpb1N0cmVhbU91dCAgICAgICptRmluYWxTdHJlYW07Ci0gICAgRklMRSAgICAgICAgICAgICAgICAqbU91dEZpbGU7ICAgICAgLy8gb3V0cHV0IGZpbGUKKyAgICBGSUxFICAgICAgICAgICAgICAgICptRmlsZTsgICAgICAvLyBvdXRwdXQgZmlsZQogICAgIGludCAgICAgICAgICAgICAgICAgbUZpbGVDb3VudDsKIH07CiAKQEAgLTEwOSw3ICsxMDksOCBAQAogICAgIHVpbnQzMl90IG1EZXZpY2U7ICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgZGV2aWNlIHRoaXMgb3V0cHV0IGlzIHJvdXRlZCB0bwogICAgIHNpemVfdCAgbUJ1ZmZlclNpemU7CiAgICAgQXVkaW9TdHJlYW1JbiAgICAgICptRmluYWxTdHJlYW07Ci0gICAgRklMRSAgICAgICAgICAgICAgICAqbUluRmlsZTsgICAgICAvLyBvdXRwdXQgZmlsZQorICAgIEZJTEUgICAgICAgICAgICAgICAgKm1GaWxlOyAgICAgIC8vIG91dHB1dCBmaWxlCisgICAgaW50ICAgICAgICAgICAgICAgICBtRmlsZUNvdW50OwogfTsKIAogY2xhc3MgQXVkaW9EdW1wSW50ZXJmYWNlIDogcHVibGljIEF1ZGlvSGFyZHdhcmVCYXNlCkBAIC0xMzQsNiArMTM1LDggQEAKICAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHNldE1hc3RlclZvbHVtZShmbG9hdCB2b2x1bWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBtRmluYWxJbnRlcmZhY2UtPnNldE1hc3RlclZvbHVtZSh2b2x1bWUpO30KIAorICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0TW9kZShpbnQgbW9kZSk7CisKICAgICAvLyBtaWMgbXV0ZQogICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0TWljTXV0ZShib29sIHN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gbUZpbmFsSW50ZXJmYWNlLT5zZXRNaWNNdXRlKHN0YXRlKTt9CkBAIC0xNDMsNiArMTQ2LDggQEAKICAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYga2V5VmFsdWVQYWlycyk7CiAgICAgdmlydHVhbCBTdHJpbmc4ICAgICBnZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIGtleXMpOwogCisgICAgdmlydHVhbCBzaXplX3QgICAgICBnZXRJbnB1dEJ1ZmZlclNpemUodWludDMyX3Qgc2FtcGxlUmF0ZSwgaW50IGZvcm1hdCwgaW50IGNoYW5uZWxDb3VudCk7CisKICAgICB2aXJ0dWFsIEF1ZGlvU3RyZWFtSW4qIG9wZW5JbnB1dFN0cmVhbSh1aW50MzJfdCBkZXZpY2VzLCBpbnQgKmZvcm1hdCwgdWludDMyX3QgKmNoYW5uZWxzLAogICAgICAgICAgICAgdWludDMyX3QgKnNhbXBsZVJhdGUsIHN0YXR1c190ICpzdGF0dXMsIEF1ZGlvU3lzdGVtOjphdWRpb19pbl9hY291c3RpY3MgYWNvdXN0aWNzKTsKICAgICB2aXJ0dWFsICAgIHZvaWQgICAgICAgIGNsb3NlSW5wdXRTdHJlYW0oQXVkaW9TdHJlYW1JbiogaW4pOwpAQCAtMTUzLDggKzE1OCw3IEBACiBwcm90ZWN0ZWQ6CiAKICAgICBBdWRpb0hhcmR3YXJlSW50ZXJmYWNlICAgICAgICAgICptRmluYWxJbnRlcmZhY2U7Ci0gICAgU29ydGVkVmVjdG9yPEF1ZGlvU3RyZWFtT3V0RHVtcCAqPiAgICBtT3V0cHV0czsKLSAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1GaXJzdEh3T3V0cHV0OworICAgIFNvcnRlZFZlY3RvcjxBdWRpb1N0cmVhbU91dER1bXAgKj4gICBtT3V0cHV0czsKICAgICBTb3J0ZWRWZWN0b3I8QXVkaW9TdHJlYW1JbkR1bXAgKj4gICAgbUlucHV0czsKICAgICBNdXRleCAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Mb2NrOwogICAgIFN0cmluZzggICAgICAgICAgICAgICAgICAgICAgICAgbVBvbGljeUNvbW1hbmRzOwpkaWZmIC0tZ2l0IGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9GbGluZ2VyLmNwcCBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRmxpbmdlci5jcHAKaW5kZXggMjQxNGU4ZC4uNDhjMDRhNiAxMDA2NDQKLS0tIGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9GbGluZ2VyLmNwcAorKysgYi9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0ZsaW5nZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8bWVkaWEvQXVkaW9SZWNvcmQuaD4KIAogI2luY2x1ZGUgPHByaXZhdGUvbWVkaWEvQXVkaW9UcmFja1NoYXJlZC5oPgotCisjaW5jbHVkZSA8cHJpdmF0ZS9tZWRpYS9BdWRpb0VmZmVjdFNoYXJlZC5oPgogI2luY2x1ZGUgPGhhcmR3YXJlX2xlZ2FjeS9BdWRpb0hhcmR3YXJlSW50ZXJmYWNlLmg+CiAKICNpbmNsdWRlICJBdWRpb01peGVyLmgiCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAibGlmZXZpYmVzLmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgPG1lZGlhL0VmZmVjdHNGYWN0b3J5QXBpLmg+CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIHRoZSBzaW0gYnVpbGQgZG9lc24ndCBoYXZlIGdldHRpZAogCkBAIC02Nyw2ICs2OSw3IEBACiAKIC8vc3RhdGljIGNvbnN0IG5zZWNzX3Qga1N0YW5kYnlUaW1lSW5Oc2VjcyA9IHNlY29uZHMoMyk7CiBzdGF0aWMgY29uc3QgZmxvYXQgTUFYX0dBSU4gPSA0MDk2LjBmOworc3RhdGljIGNvbnN0IGZsb2F0IE1BWF9HQUlOX0lOVCA9IDB4MTAwMDsKIAogLy8gcmV0cnkgY291bnRzIGZvciBidWZmZXIgZmlsbCB0aW1lb3V0CiAvLyA1MCAqIH4yMG1zZWNzID0gMSBzZWNvbmQKQEAgLTEyMyw3ICsxMjYsOCBAQAogCiBBdWRpb0ZsaW5nZXI6OkF1ZGlvRmxpbmdlcigpCiAgICAgOiBCbkF1ZGlvRmxpbmdlcigpLAotICAgICAgICBtQXVkaW9IYXJkd2FyZSgwKSwgbU1hc3RlclZvbHVtZSgxLjBmKSwgbU1hc3Rlck11dGUoZmFsc2UpLCBtTmV4dFRocmVhZElkKDApCisgICAgICAgIG1BdWRpb0hhcmR3YXJlKDApLCBtTWFzdGVyVm9sdW1lKDEuMGYpLCBtTWFzdGVyTXV0ZShmYWxzZSksIG1OZXh0VW5pcXVlSWQoMSksCisgICAgICAgIG1Ub3RhbEVmZmVjdHNDcHVMb2FkKDApLCBtVG90YWxFZmZlY3RzTWVtb3J5KDApCiB7CiAgICAgbUhhcmR3YXJlU3RhdHVzID0gQVVESU9fSFdfSURMRTsKIApAQCAtMTMyLDggKzEzNiw4IEBACiAgICAgbUhhcmR3YXJlU3RhdHVzID0gQVVESU9fSFdfSU5JVDsKICAgICBpZiAobUF1ZGlvSGFyZHdhcmUtPmluaXRDaGVjaygpID09IE5PX0VSUk9SKSB7CiAgICAgICAgIC8vIG9wZW4gMTYtYml0IG91dHB1dCBzdHJlYW0gZm9yIHMvdyBtaXhlcgotCi0gICAgICAgIHNldE1vZGUoQXVkaW9TeXN0ZW06Ok1PREVfTk9STUFMKTsKKyAgICAgICAgbU1vZGUgPSBBdWRpb1N5c3RlbTo6TU9ERV9OT1JNQUw7CisgICAgICAgIHNldE1vZGUobU1vZGUpOwogCiAgICAgICAgIHNldE1hc3RlclZvbHVtZSgxLjBmKTsKICAgICAgICAgc2V0TWFzdGVyTXV0ZShmYWxzZSk7CkBAIC0xNDIsNiArMTQ2LDcgQEAKICAgICB9CiAjaWZkZWYgTFZNWAogICAgIExpZmVWaWJlczo6aW5pdCgpOworICAgIG1MaWZlVmliZXNDbGllbnRQaWQgPSAtMTsKICNlbmRpZgogfQogCkBAIC0yODEsNiArMjg2LDcgQEAKICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCiAgICAgICAgIGludCBvdXRwdXQsCisgICAgICAgIGludCAqc2Vzc2lvbklkLAogICAgICAgICBzdGF0dXNfdCAqc3RhdHVzKQogewogICAgIHNwPFBsYXliYWNrVGhyZWFkOjpUcmFjaz4gdHJhY2s7CkBAIC0yODgsNiArMjk0LDcgQEAKICAgICBzcDxDbGllbnQ+IGNsaWVudDsKICAgICB3cDxDbGllbnQ+IHdjbGllbnQ7CiAgICAgc3RhdHVzX3QgbFN0YXR1czsKKyAgICBpbnQgbFNlc3Npb25JZDsKIAogICAgIGlmIChzdHJlYW1UeXBlID49IEF1ZGlvU3lzdGVtOjpOVU1fU1RSRUFNX1RZUEVTKSB7CiAgICAgICAgIExPR0UoImludmFsaWQgc3RyZWFtIHR5cGUiKTsKQEAgLTMxMiw4ICszMTksMjMgQEAKICAgICAgICAgICAgIGNsaWVudCA9IG5ldyBDbGllbnQodGhpcywgcGlkKTsKICAgICAgICAgICAgIG1DbGllbnRzLmFkZChwaWQsIGNsaWVudCk7CiAgICAgICAgIH0KKworICAgICAgICAvLyBJZiBubyBhdWRpbyBzZXNzaW9uIGlkIGlzIHByb3ZpZGVkLCBjcmVhdGUgb25lIGhlcmUKKyAgICAgICAgLy8gVE9ETzogZW5mb3JjZSBzYW1lIHN0cmVhbSB0eXBlIGZvciBhbGwgdHJhY2tzIGluIHNhbWUgYXVkaW8gc2Vzc2lvbj8KKyAgICAgICAgLy8gVE9ETzogcHJldmVudCBzYW1lIGF1ZGlvIHNlc3Npb24gb24gZGlmZmVyZW50IG91dHB1dCB0aHJlYWRzCisgICAgICAgIExPR1YoImNyZWF0ZVRyYWNrKCkgc2Vzc2lvbklkOiAlZCIsIChzZXNzaW9uSWQgPT0gTlVMTCkgPyAtMiA6ICpzZXNzaW9uSWQpOworICAgICAgICBpZiAoc2Vzc2lvbklkICE9IE5VTEwgJiYgKnNlc3Npb25JZCAhPSAwKSB7CisgICAgICAgICAgICBsU2Vzc2lvbklkID0gKnNlc3Npb25JZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxTZXNzaW9uSWQgPSBuZXh0VW5pcXVlSWQoKTsKKyAgICAgICAgICAgIGlmIChzZXNzaW9uSWQgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpzZXNzaW9uSWQgPSBsU2Vzc2lvbklkOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIExPR1YoImNyZWF0ZVRyYWNrKCkgbFNlc3Npb25JZDogJWQiLCBsU2Vzc2lvbklkKTsKKwogICAgICAgICB0cmFjayA9IHRocmVhZC0+Y3JlYXRlVHJhY2tfbChjbGllbnQsIHN0cmVhbVR5cGUsIHNhbXBsZVJhdGUsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICBjaGFubmVsQ291bnQsIGZyYW1lQ291bnQsIHNoYXJlZEJ1ZmZlciwgJmxTdGF0dXMpOworICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgc2hhcmVkQnVmZmVyLCBsU2Vzc2lvbklkLCAmbFN0YXR1cyk7CiAgICAgfQogICAgIGlmIChsU3RhdHVzID09IE5PX0VSUk9SKSB7CiAgICAgICAgIHRyYWNrSGFuZGxlID0gbmV3IFRyYWNrSGFuZGxlKHRyYWNrKTsKQEAgLTQxMCw2ICs0MzIsOCBAQAogCiBzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OnNldE1vZGUoaW50IG1vZGUpCiB7CisgICAgc3RhdHVzX3QgcmV0OworCiAgICAgLy8gY2hlY2sgY2FsbGluZyBwZXJtaXNzaW9ucwogICAgIGlmICghc2V0dGluZ3NBbGxvd2VkKCkpIHsKICAgICAgICAgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOwpAQCAtNDE5LDE1ICs0NDMsMjMgQEAKICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKICAgICB9CiAKLSAgICBBdXRvTXV0ZXggbG9jayhtSGFyZHdhcmVMb2NrKTsKLSAgICBtSGFyZHdhcmVTdGF0dXMgPSBBVURJT19IV19TRVRfTU9ERTsKLSAgICBzdGF0dXNfdCByZXQgPSBtQXVkaW9IYXJkd2FyZS0+c2V0TW9kZShtb2RlKTsKLSNpZmRlZiBMVk1YCi0gICAgaWYgKE5PX0VSUk9SID09IHJldCkgewotICAgICAgICBMaWZlVmliZXM6OnNldE1vZGUobW9kZSk7CisgICAgeyAvLyBzY29wZSBmb3IgdGhlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IGxvY2sobUhhcmR3YXJlTG9jayk7CisgICAgICAgIG1IYXJkd2FyZVN0YXR1cyA9IEFVRElPX0hXX1NFVF9NT0RFOworICAgICAgICByZXQgPSBtQXVkaW9IYXJkd2FyZS0+c2V0TW9kZShtb2RlKTsKKyAgICAgICAgbUhhcmR3YXJlU3RhdHVzID0gQVVESU9fSFdfSURMRTsKICAgICB9CisKKyAgICBpZiAoTk9fRVJST1IgPT0gcmV0KSB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgICAgIG1Nb2RlID0gbW9kZTsKKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1QbGF5YmFja1RocmVhZHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgIG1QbGF5YmFja1RocmVhZHMudmFsdWVBdChpKS0+c2V0TW9kZShtb2RlKTsKKyNpZmRlZiBMVk1YCisgICAgICAgIExpZmVWaWJlczo6c2V0TW9kZShtb2RlKTsKICNlbmRpZgotICAgIG1IYXJkd2FyZVN0YXR1cyA9IEFVRElPX0hXX0lETEU7CisgICAgfQorCiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNTk2LDggKzYyOCwxMCBAQAogICAgIGludCBtdXNpY0VuYWJsZWQgPSAtMTsKICAgICBpZiAoTk9fRVJST1IgPT0gcGFyYW0uZ2V0KGtleSwgdmFsdWUpKSB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBMaWZldmliZXNFbmFibGUpIHsKKyAgICAgICAgICAgIG1MaWZlVmliZXNDbGllbnRQaWQgPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nUGlkKCk7CiAgICAgICAgICAgICBtdXNpY0VuYWJsZWQgPSAxOwogICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IExpZmV2aWJlc0Rpc2FibGUpIHsKKyAgICAgICAgICAgIG1MaWZlVmliZXNDbGllbnRQaWQgPSAtMTsKICAgICAgICAgICAgIG11c2ljRW5hYmxlZCA9IDA7CiAgICAgICAgIH0KICAgICB9CkBAIC02MDksNyArNjQzLDcgQEAKICAgICAgICAgbUhhcmR3YXJlU3RhdHVzID0gQVVESU9fU0VUX1BBUkFNRVRFUjsKICAgICAgICAgcmVzdWx0ID0gbUF1ZGlvSGFyZHdhcmUtPnNldFBhcmFtZXRlcnMoa2V5VmFsdWVQYWlycyk7CiAjaWZkZWYgTFZNWAotICAgICAgICBpZiAoKE5PX0VSUk9SID09IHJlc3VsdCkgJiYgKG11c2ljRW5hYmxlZCAhPSAtMSkpIHsKKyAgICAgICAgaWYgKG11c2ljRW5hYmxlZCAhPSAtMSkgewogICAgICAgICAgICAgTGlmZVZpYmVzOjplbmFibGVNdXNpYygoYm9vbCkgbXVzaWNFbmFibGVkKTsKICAgICAgICAgfQogI2VuZGlmCkBAIC03MTMsNTEgKzc0Nyw1NyBAQAogdm9pZCBBdWRpb0ZsaW5nZXI6OnJlZ2lzdGVyQ2xpZW50KGNvbnN0IHNwPElBdWRpb0ZsaW5nZXJDbGllbnQ+JiBjbGllbnQpCiB7CiAKLSAgICBMT0dWKCJyZWdpc3RlckNsaWVudCgpICVwLCB0aWQgJWQsIGNhbGxpbmcgdGlkICVkIiwgY2xpZW50LmdldCgpLCBnZXR0aWQoKSwgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Z2V0Q2FsbGluZ1BpZCgpKTsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogCi0gICAgc3A8SUJpbmRlcj4gYmluZGVyID0gY2xpZW50LT5hc0JpbmRlcigpOwotICAgIGlmIChtTm90aWZpY2F0aW9uQ2xpZW50cy5pbmRleE9mKGJpbmRlcikgPCAwKSB7Ci0gICAgICAgIExPR1YoIkFkZGluZyBub3RpZmljYXRpb24gY2xpZW50ICVwIiwgYmluZGVyLmdldCgpKTsKLSAgICAgICAgYmluZGVyLT5saW5rVG9EZWF0aCh0aGlzKTsKLSAgICAgICAgbU5vdGlmaWNhdGlvbkNsaWVudHMuYWRkKGJpbmRlcik7Ci0gICAgfQorICAgIGludCBwaWQgPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nUGlkKCk7CisgICAgaWYgKG1Ob3RpZmljYXRpb25DbGllbnRzLmluZGV4T2ZLZXkocGlkKSA8IDApIHsKKyAgICAgICAgc3A8Tm90aWZpY2F0aW9uQ2xpZW50PiBub3RpZmljYXRpb25DbGllbnQgPSBuZXcgTm90aWZpY2F0aW9uQ2xpZW50KHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCk7CisgICAgICAgIExPR1YoInJlZ2lzdGVyQ2xpZW50KCkgY2xpZW50ICVwLCBwaWQgJWQiLCBub3RpZmljYXRpb25DbGllbnQuZ2V0KCksIHBpZCk7CiAKLSAgICAvLyB0aGUgY29uZmlnIGNoYW5nZSBpcyBhbHdheXMgc2VudCBmcm9tIHBsYXliYWNrIG9yIHJlY29yZCB0aHJlYWRzIHRvIGF2b2lkIGRlYWRsb2NrCi0gICAgLy8gd2l0aCBBdWRpb1N5c3RlbTo6Z0xvY2sKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1QbGF5YmFja1RocmVhZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgbVBsYXliYWNrVGhyZWFkcy52YWx1ZUF0KGkpLT5zZW5kQ29uZmlnRXZlbnQoQXVkaW9TeXN0ZW06Ok9VVFBVVF9PUEVORUQpOwotICAgIH0KKyAgICAgICAgbU5vdGlmaWNhdGlvbkNsaWVudHMuYWRkKHBpZCwgbm90aWZpY2F0aW9uQ2xpZW50KTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVJlY29yZFRocmVhZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgbVJlY29yZFRocmVhZHMudmFsdWVBdChpKS0+c2VuZENvbmZpZ0V2ZW50KEF1ZGlvU3lzdGVtOjpJTlBVVF9PUEVORUQpOwotICAgIH0KLX0KKyAgICAgICAgc3A8SUJpbmRlcj4gYmluZGVyID0gY2xpZW50LT5hc0JpbmRlcigpOworICAgICAgICBiaW5kZXItPmxpbmtUb0RlYXRoKG5vdGlmaWNhdGlvbkNsaWVudCk7CiAKLXZvaWQgQXVkaW9GbGluZ2VyOjpiaW5kZXJEaWVkKGNvbnN0IHdwPElCaW5kZXI+JiB3aG8pIHsKKyAgICAgICAgLy8gdGhlIGNvbmZpZyBjaGFuZ2UgaXMgYWx3YXlzIHNlbnQgZnJvbSBwbGF5YmFjayBvciByZWNvcmQgdGhyZWFkcyB0byBhdm9pZCBkZWFkbG9jaworICAgICAgICAvLyB3aXRoIEF1ZGlvU3lzdGVtOjpnTG9jaworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1QbGF5YmFja1RocmVhZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIG1QbGF5YmFja1RocmVhZHMudmFsdWVBdChpKS0+c2VuZENvbmZpZ0V2ZW50KEF1ZGlvU3lzdGVtOjpPVVRQVVRfT1BFTkVEKTsKKyAgICAgICAgfQogCi0gICAgTE9HVigiYmluZGVyRGllZCgpICVwLCB0aWQgJWQsIGNhbGxpbmcgdGlkICVkIiwgd2hvLnVuc2FmZV9nZXQoKSwgZ2V0dGlkKCksIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmdldENhbGxpbmdQaWQoKSk7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKLQotICAgIElCaW5kZXIgKmJpbmRlciA9IHdoby51bnNhZmVfZ2V0KCk7Ci0KLSAgICBpZiAoYmluZGVyICE9IE5VTEwpIHsKLSAgICAgICAgaW50IGluZGV4ID0gbU5vdGlmaWNhdGlvbkNsaWVudHMuaW5kZXhPZihiaW5kZXIpOwotICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgTE9HVigiUmVtb3Zpbmcgbm90aWZpY2F0aW9uIGNsaWVudCAlcCIsIGJpbmRlcik7Ci0gICAgICAgICAgICBtTm90aWZpY2F0aW9uQ2xpZW50cy5yZW1vdmVBdChpbmRleCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVJlY29yZFRocmVhZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIG1SZWNvcmRUaHJlYWRzLnZhbHVlQXQoaSktPnNlbmRDb25maWdFdmVudChBdWRpb1N5c3RlbTo6SU5QVVRfT1BFTkVEKTsKICAgICAgICAgfQogICAgIH0KIH0KIAordm9pZCBBdWRpb0ZsaW5nZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkNsaWVudChwaWRfdCBwaWQpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKworICAgIGludCBpbmRleCA9IG1Ob3RpZmljYXRpb25DbGllbnRzLmluZGV4T2ZLZXkocGlkKTsKKyAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgICBzcCA8Tm90aWZpY2F0aW9uQ2xpZW50PiBjbGllbnQgPSBtTm90aWZpY2F0aW9uQ2xpZW50cy52YWx1ZUZvcihwaWQpOworICAgICAgICBMT0dWKCJyZW1vdmVOb3RpZmljYXRpb25DbGllbnQoKSAlcCwgcGlkICVkIiwgY2xpZW50LmdldCgpLCBwaWQpOworI2lmZGVmIExWTVgKKyAgICAgICAgaWYgKHBpZCA9PSBtTGlmZVZpYmVzQ2xpZW50UGlkKSB7CisgICAgICAgICAgICBMT0dWKCJEaXNhYmxpbmcgbGlmZXZpYmVzIik7CisgICAgICAgICAgICBMaWZlVmliZXM6OmVuYWJsZU11c2ljKGZhbHNlKTsKKyAgICAgICAgICAgIG1MaWZlVmliZXNDbGllbnRQaWQgPSAtMTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1Ob3RpZmljYXRpb25DbGllbnRzLnJlbW92ZUl0ZW0ocGlkKTsKKyAgICB9Cit9CisKIC8vIGF1ZGlvQ29uZmlnQ2hhbmdlZF9sKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBBdWRpb0ZsaW5nZXI6Om1Mb2NrIGhlbGQKLXZvaWQgQXVkaW9GbGluZ2VyOjphdWRpb0NvbmZpZ0NoYW5nZWRfbChpbnQgZXZlbnQsIGludCBpb0hhbmRsZSwgdm9pZCAqcGFyYW0yKSB7Cit2b2lkIEF1ZGlvRmxpbmdlcjo6YXVkaW9Db25maWdDaGFuZ2VkX2woaW50IGV2ZW50LCBpbnQgaW9IYW5kbGUsIHZvaWQgKnBhcmFtMikKK3sKICAgICBzaXplX3Qgc2l6ZSA9IG1Ob3RpZmljYXRpb25DbGllbnRzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBzcDxJQmluZGVyPiBiaW5kZXIgPSBtTm90aWZpY2F0aW9uQ2xpZW50cy5pdGVtQXQoaSk7Ci0gICAgICAgIExPR1YoImF1ZGlvQ29uZmlnQ2hhbmdlZF9sKCkgTm90aWZ5aW5nIGNoYW5nZSB0byBjbGllbnQgJXAiLCBiaW5kZXIuZ2V0KCkpOwotICAgICAgICBzcDxJQXVkaW9GbGluZ2VyQ2xpZW50PiBjbGllbnQgPSBpbnRlcmZhY2VfY2FzdDxJQXVkaW9GbGluZ2VyQ2xpZW50PiAoYmluZGVyKTsKLSAgICAgICAgY2xpZW50LT5pb0NvbmZpZ0NoYW5nZWQoZXZlbnQsIGlvSGFuZGxlLCBwYXJhbTIpOworICAgICAgICBtTm90aWZpY2F0aW9uQ2xpZW50cy52YWx1ZUF0KGkpLT5jbGllbnQoKS0+aW9Db25maWdDaGFuZ2VkKGV2ZW50LCBpb0hhbmRsZSwgcGFyYW0yKTsKICAgICB9CiB9CiAKQEAgLTc2OCwxMiArODA4LDEzIEBACiAgICAgbUNsaWVudHMucmVtb3ZlSXRlbShwaWQpOwogfQogCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQXVkaW9GbGluZ2VyOjpUaHJlYWRCYXNlOjpUaHJlYWRCYXNlKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgaW50IGlkKQogICAgIDogICBUaHJlYWQoZmFsc2UpLAogICAgICAgICBtQXVkaW9GbGluZ2VyKGF1ZGlvRmxpbmdlciksIG1TYW1wbGVSYXRlKDApLCBtRnJhbWVDb3VudCgwKSwgbUNoYW5uZWxDb3VudCgwKSwKLSAgICAgICAgbUZvcm1hdCgwKSwgbUZyYW1lU2l6ZSgxKSwgbVN0YW5kYnkoZmFsc2UpLCBtSWQoaWQpLCBtRXhpdGluZyhmYWxzZSkKKyAgICAgICAgbUZyYW1lU2l6ZSgxKSwgbUZvcm1hdCgwKSwgbVN0YW5kYnkoZmFsc2UpLCBtSWQoaWQpLCBtRXhpdGluZyhmYWxzZSkKIHsKIH0KIApAQCAtODA2LDcgKzg0Nyw3IEBACiAKIGludCBBdWRpb0ZsaW5nZXI6OlRocmVhZEJhc2U6OmNoYW5uZWxDb3VudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1DaGFubmVsQ291bnQ7CisgICAgcmV0dXJuIChpbnQpbUNoYW5uZWxDb3VudDsKIH0KIAogaW50IEF1ZGlvRmxpbmdlcjo6VGhyZWFkQmFzZTo6Zm9ybWF0KCkgY29uc3QKQEAgLTg2MywxMSArOTA0LDEyIEBACiAgICAgICAgIExPR1YoInByb2Nlc3NDb25maWdFdmVudHMoKSByZW1haW5pbmcgZXZlbnRzICVkIiwgbUNvbmZpZ0V2ZW50cy5zaXplKCkpOwogICAgICAgICBDb25maWdFdmVudCAqY29uZmlnRXZlbnQgPSBtQ29uZmlnRXZlbnRzWzBdOwogICAgICAgICBtQ29uZmlnRXZlbnRzLnJlbW92ZUF0KDApOwotICAgICAgICAvLyByZWxlYXNlIG1Mb2NrIGJlY2F1c2UgYXVkaW9Db25maWdDaGFuZ2VkKCkgd2lsbCBsb2NrIEF1ZGlvRmxpbmdlciBtTG9jawotICAgICAgICAvLyBiZWZvcmUgY2FsbGluZyBBdWRpb2ZsaW5nZXI6OmF1ZGlvQ29uZmlnQ2hhbmdlZF9sKCkgdGh1cyBjcmVhdGluZwotICAgICAgICAvLyBwb3RlbnRpYWwgY3Jvc3MgZGVhZGxvY2sgYmV0d2VlbiBBdWRpb0ZsaW5nZXI6Om1Mb2NrIGFuZCBtTG9jaworICAgICAgICAvLyByZWxlYXNlIG1Mb2NrIGJlZm9yZSBsb2NraW5nIEF1ZGlvRmxpbmdlciBtTG9jazogbG9jayBvcmRlciBpcyBhbHdheXMKKyAgICAgICAgLy8gQXVkaW9GbGluZ2VyIHRoZW4gVGhyZWFkQmFzZSB0byBhdm9pZCBjcm9zcyBkZWFkbG9jawogICAgICAgICBtTG9jay51bmxvY2soKTsKLSAgICAgICAgYXVkaW9Db25maWdDaGFuZ2VkKGNvbmZpZ0V2ZW50LT5tRXZlbnQsIGNvbmZpZ0V2ZW50LT5tUGFyYW0pOworICAgICAgICBtQXVkaW9GbGluZ2VyLT5tTG9jay5sb2NrKCk7CisgICAgICAgIGF1ZGlvQ29uZmlnQ2hhbmdlZF9sKGNvbmZpZ0V2ZW50LT5tRXZlbnQsIGNvbmZpZ0V2ZW50LT5tUGFyYW0pOworICAgICAgICBtQXVkaW9GbGluZ2VyLT5tTG9jay51bmxvY2soKTsKICAgICAgICAgZGVsZXRlIGNvbmZpZ0V2ZW50OwogICAgICAgICBtTG9jay5sb2NrKCk7CiAgICAgfQpAQCAtOTI5LDEwICs5NzEsMTEgQEAKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpQbGF5YmFja1RocmVhZChjb25zdCBzcDxBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIsIEF1ZGlvU3RyZWFtT3V0KiBvdXRwdXQsIGludCBpZCkKK0F1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OlBsYXliYWNrVGhyZWFkKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkLCB1aW50MzJfdCBkZXZpY2UpCiAgICAgOiAgIFRocmVhZEJhc2UoYXVkaW9GbGluZ2VyLCBpZCksCiAgICAgICAgIG1NaXhCdWZmZXIoMCksIG1TdXNwZW5kZWQoMCksIG1CeXRlc1dyaXR0ZW4oMCksIG1PdXRwdXQob3V0cHV0KSwKLSAgICAgICAgbUxhc3RXcml0ZVRpbWUoMCksIG1OdW1Xcml0ZXMoMCksIG1OdW1EZWxheWVkV3JpdGVzKDApLCBtSW5Xcml0ZShmYWxzZSkKKyAgICAgICAgbUxhc3RXcml0ZVRpbWUoMCksIG1OdW1Xcml0ZXMoMCksIG1OdW1EZWxheWVkV3JpdGVzKDApLCBtSW5Xcml0ZShmYWxzZSksCisgICAgICAgIG1EZXZpY2UoZGV2aWNlKQogewogICAgIHJlYWRPdXRwdXRQYXJhbWV0ZXJzKCk7CiAKQEAgLTk0Myw4ICs5ODYsNiBAQAogICAgICAgICBtU3RyZWFtVHlwZXNbc3RyZWFtXS52b2x1bWUgPSBtQXVkaW9GbGluZ2VyLT5zdHJlYW1Wb2x1bWVJbnRlcm5hbChzdHJlYW0pOwogICAgICAgICBtU3RyZWFtVHlwZXNbc3RyZWFtXS5tdXRlID0gbUF1ZGlvRmxpbmdlci0+c3RyZWFtTXV0ZShzdHJlYW0pOwogICAgIH0KLSAgICAvLyBub3RpZnkgY2xpZW50IHByb2Nlc3NlcyB0aGF0IGEgbmV3IGlucHV0IGhhcyBiZWVuIG9wZW5lZAotICAgIHNlbmRDb25maWdFdmVudChBdWRpb1N5c3RlbTo6T1VUUFVUX09QRU5FRCk7CiB9CiAKIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6On5QbGF5YmFja1RocmVhZCgpCkBAIC05NTYsNiArOTk3LDcgQEAKIHsKICAgICBkdW1wSW50ZXJuYWxzKGZkLCBhcmdzKTsKICAgICBkdW1wVHJhY2tzKGZkLCBhcmdzKTsKKyAgICBkdW1wRWZmZWN0Q2hhaW5zKGZkLCBhcmdzKTsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKQEAgLTk2Nyw3ICsxMDA5LDcgQEAKIAogICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIk91dHB1dCB0aHJlYWQgJXAgdHJhY2tzXG4iLCB0aGlzKTsKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgcmVzdWx0LmFwcGVuZCgiICAgTmFtZSBDbGllbiBUeXAgRm10IENobiBCdWYgIFMgTSBGIFNSYXRlICBMZWZ0ViBSaWdoViBTZXJ2ICAgICBVc2VyXG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCIgICBOYW1lICBDbGllbiBUeXAgRm10IENobiBTZXNzaW9uIEJ1ZiAgUyBNIEYgU1JhdGUgTGVmdFYgUmlnaFYgIFNlcnYgICAgICAgVXNlciAgICAgICBNYWluIGJ1ZiAgIEF1eCBCdWZcbiIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBzcDxUcmFjaz4gdHJhY2sgPSBtVHJhY2tzW2ldOwogICAgICAgICBpZiAodHJhY2sgIT0gMCkgewpAQCAtOTc4LDcgKzEwMjAsNyBAQAogCiAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiT3V0cHV0IHRocmVhZCAlcCBhY3RpdmUgdHJhY2tzXG4iLCB0aGlzKTsKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgcmVzdWx0LmFwcGVuZCgiICAgTmFtZSBDbGllbiBUeXAgRm10IENobiBCdWYgIFMgTSBGIFNSYXRlICBMZWZ0ViBSaWdoViBTZXJ2ICAgICBVc2VyXG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCIgICBOYW1lICBDbGllbiBUeXAgRm10IENobiBTZXNzaW9uIEJ1ZiAgUyBNIEYgU1JhdGUgTGVmdFYgUmlnaFYgIFNlcnYgICAgICAgVXNlciAgICAgICBNYWluIGJ1ZiAgIEF1eCBCdWZcbiIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUFjdGl2ZVRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICB3cDxUcmFjaz4gd1RyYWNrID0gbUFjdGl2ZVRyYWNrc1tpXTsKICAgICAgICAgaWYgKHdUcmFjayAhPSAwKSB7CkBAIC05OTMsNiArMTAzNSwyNCBAQAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAorc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6ZHVtcEVmZmVjdENoYWlucyhpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpCit7CisgICAgY29uc3Qgc2l6ZV90IFNJWkUgPSAyNTY7CisgICAgY2hhciBidWZmZXJbU0laRV07CisgICAgU3RyaW5nOCByZXN1bHQ7CisKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcbi0gJWQgRWZmZWN0IENoYWluczpcbiIsIG1FZmZlY3RDaGFpbnMuc2l6ZSgpKTsKKyAgICB3cml0ZShmZCwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1FZmZlY3RDaGFpbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3A8RWZmZWN0Q2hhaW4+IGNoYWluID0gbUVmZmVjdENoYWluc1tpXTsKKyAgICAgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgICAgIGNoYWluLT5kdW1wKGZkLCBhcmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKIHN0YXR1c190IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmR1bXBJbnRlcm5hbHMoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKQogewogICAgIGNvbnN0IHNpemVfdCBTSVpFID0gMjU2OwpAQCAtMTAxMSw2ICsxMDcxLDggQEAKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAic3VzcGVuZCBjb3VudDogJWRcbiIsIG1TdXNwZW5kZWQpOwogICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJtaXggYnVmZmVyIDogJXBcbiIsIG1NaXhCdWZmZXIpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKICAgICB3cml0ZShmZCwgcmVzdWx0LnN0cmluZygpLCByZXN1bHQuc2l6ZSgpKTsKIAogICAgIGR1bXBCYXNlKGZkLCBhcmdzKTsKQEAgLTEwNDgsMTMgKzExMTAsMTQgQEAKICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCisgICAgICAgIGludCBzZXNzaW9uSWQsCiAgICAgICAgIHN0YXR1c190ICpzdGF0dXMpCiB7CiAgICAgc3A8VHJhY2s+IHRyYWNrOwogICAgIHN0YXR1c190IGxTdGF0dXM7CiAKICAgICBpZiAobVR5cGUgPT0gRElSRUNUKSB7Ci0gICAgICAgIGlmIChzYW1wbGVSYXRlICE9IG1TYW1wbGVSYXRlIHx8IGZvcm1hdCAhPSBtRm9ybWF0IHx8IGNoYW5uZWxDb3VudCAhPSBtQ2hhbm5lbENvdW50KSB7CisgICAgICAgIGlmIChzYW1wbGVSYXRlICE9IG1TYW1wbGVSYXRlIHx8IGZvcm1hdCAhPSBtRm9ybWF0IHx8IGNoYW5uZWxDb3VudCAhPSAoaW50KW1DaGFubmVsQ291bnQpIHsKICAgICAgICAgICAgIExPR0UoImNyZWF0ZVRyYWNrX2woKSBCYWQgcGFyYW1ldGVyOiAgc2FtcGxlUmF0ZSAlZCBmb3JtYXQgJWQsIGNoYW5uZWxDb3VudCAlZCBmb3Igb3V0cHV0ICVwIiwKICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsIG1PdXRwdXQpOwogICAgICAgICAgICAgbFN0YXR1cyA9IEJBRF9WQUxVRTsKQEAgLTEwNzgsMTIgKzExNDEsMTggQEAKICAgICB7IC8vIHNjb3BlIGZvciBtTG9jawogICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgICAgICB0cmFjayA9IG5ldyBUcmFjayh0aGlzLCBjbGllbnQsIHN0cmVhbVR5cGUsIHNhbXBsZVJhdGUsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICBjaGFubmVsQ291bnQsIGZyYW1lQ291bnQsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgY2hhbm5lbENvdW50LCBmcmFtZUNvdW50LCBzaGFyZWRCdWZmZXIsIHNlc3Npb25JZCk7CiAgICAgICAgIGlmICh0cmFjay0+Z2V0Q2JsaygpID09IE5VTEwgfHwgdHJhY2stPm5hbWUoKSA8IDApIHsKICAgICAgICAgICAgIGxTdGF0dXMgPSBOT19NRU1PUlk7CiAgICAgICAgICAgICBnb3RvIEV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgbVRyYWNrcy5hZGQodHJhY2spOworCisgICAgICAgIHNwPEVmZmVjdENoYWluPiBjaGFpbiA9IGdldEVmZmVjdENoYWluX2woc2Vzc2lvbklkKTsKKyAgICAgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgICAgIExPR1YoImNyZWF0ZVRyYWNrX2woKSBzZXR0aW5nIG1haW4gYnVmZmVyICVwIiwgY2hhaW4tPmluQnVmZmVyKCkpOworICAgICAgICAgICAgdHJhY2stPnNldE1haW5CdWZmZXIoY2hhaW4tPmluQnVmZmVyKCkpOworICAgICAgICB9CiAgICAgfQogICAgIGxTdGF0dXMgPSBOT19FUlJPUjsKIApAQCAtMTIwMCw2ICsxMjY5LDE0IEBACiAgICAgICAgIHRyYWNrLT5tRmlsbGluZ1VwU3RhdHVzID0gVHJhY2s6OkZTX0ZJTExJTkc7CiAgICAgICAgIHRyYWNrLT5tUmVzZXREb25lID0gZmFsc2U7CiAgICAgICAgIG1BY3RpdmVUcmFja3MuYWRkKHRyYWNrKTsKKyAgICAgICAgaWYgKHRyYWNrLT5tYWluQnVmZmVyKCkgIT0gbU1peEJ1ZmZlcikgeworICAgICAgICAgICAgc3A8RWZmZWN0Q2hhaW4+IGNoYWluID0gZ2V0RWZmZWN0Q2hhaW5fbCh0cmFjay0+c2Vzc2lvbklkKCkpOworICAgICAgICAgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgICAgICAgICBMT0dWKCJhZGRUcmFja19sKCkgc3RhcnRpbmcgdHJhY2sgb24gY2hhaW4gJXAgZm9yIHNlc3Npb24gJWQiLCBjaGFpbi5nZXQoKSwgdHJhY2stPnNlc3Npb25JZCgpKTsKKyAgICAgICAgICAgICAgICBjaGFpbi0+c3RhcnRUcmFjaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgc3RhdHVzID0gTk9fRVJST1I7CiAgICAgfQogCkBAIC0xMjI0LDE2ICsxMzAxLDE3IEBACiAgICAgcmV0dXJuIG1PdXRwdXQtPmdldFBhcmFtZXRlcnMoa2V5cyk7CiB9CiAKLXZvaWQgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6YXVkaW9Db25maWdDaGFuZ2VkKGludCBldmVudCwgaW50IHBhcmFtKSB7CisvLyBkZXN0cm95VHJhY2tfbCgpIG11c3QgYmUgY2FsbGVkIHdpdGggQXVkaW9GbGluZ2VyOjptTG9jayBoZWxkCit2b2lkIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmF1ZGlvQ29uZmlnQ2hhbmdlZF9sKGludCBldmVudCwgaW50IHBhcmFtKSB7CiAgICAgQXVkaW9TeXN0ZW06Ok91dHB1dERlc2NyaXB0b3IgZGVzYzsKICAgICB2b2lkICpwYXJhbTIgPSAwOwogCi0gICAgTE9HVigiUGxheWJhY2tUaHJlYWQ6OmF1ZGlvQ29uZmlnQ2hhbmdlZCwgdGhyZWFkICVwLCBldmVudCAlZCwgcGFyYW0gJWQiLCB0aGlzLCBldmVudCwgcGFyYW0pOworICAgIExPR1YoIlBsYXliYWNrVGhyZWFkOjphdWRpb0NvbmZpZ0NoYW5nZWRfbCwgdGhyZWFkICVwLCBldmVudCAlZCwgcGFyYW0gJWQiLCB0aGlzLCBldmVudCwgcGFyYW0pOwogCiAgICAgc3dpdGNoIChldmVudCkgewogICAgIGNhc2UgQXVkaW9TeXN0ZW06Ok9VVFBVVF9PUEVORUQ6CiAgICAgY2FzZSBBdWRpb1N5c3RlbTo6T1VUUFVUX0NPTkZJR19DSEFOR0VEOgotICAgICAgICBkZXNjLmNoYW5uZWxzID0gbUNoYW5uZWxDb3VudDsKKyAgICAgICAgZGVzYy5jaGFubmVscyA9IG1DaGFubmVsczsKICAgICAgICAgZGVzYy5zYW1wbGluZ1JhdGUgPSBtU2FtcGxlUmF0ZTsKICAgICAgICAgZGVzYy5mb3JtYXQgPSBtRm9ybWF0OwogICAgICAgICBkZXNjLmZyYW1lQ291bnQgPSBtRnJhbWVDb3VudDsKQEAgLTEyNDcsMjQgKzEzMjUsMjUgQEAKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1BdWRpb0ZsaW5nZXItPm1Mb2NrKTsKICAgICBtQXVkaW9GbGluZ2VyLT5hdWRpb0NvbmZpZ0NoYW5nZWRfbChldmVudCwgbUlkLCBwYXJhbTIpOwogfQogCiB2b2lkIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OnJlYWRPdXRwdXRQYXJhbWV0ZXJzKCkKIHsKICAgICBtU2FtcGxlUmF0ZSA9IG1PdXRwdXQtPnNhbXBsZVJhdGUoKTsKLSAgICBtQ2hhbm5lbENvdW50ID0gQXVkaW9TeXN0ZW06OnBvcENvdW50KG1PdXRwdXQtPmNoYW5uZWxzKCkpOwotCisgICAgbUNoYW5uZWxzID0gbU91dHB1dC0+Y2hhbm5lbHMoKTsKKyAgICBtQ2hhbm5lbENvdW50ID0gKHVpbnQxNl90KUF1ZGlvU3lzdGVtOjpwb3BDb3VudChtQ2hhbm5lbHMpOwogICAgIG1Gb3JtYXQgPSBtT3V0cHV0LT5mb3JtYXQoKTsKLSAgICBtRnJhbWVTaXplID0gbU91dHB1dC0+ZnJhbWVTaXplKCk7CisgICAgbUZyYW1lU2l6ZSA9ICh1aW50MTZfdCltT3V0cHV0LT5mcmFtZVNpemUoKTsKICAgICBtRnJhbWVDb3VudCA9IG1PdXRwdXQtPmJ1ZmZlclNpemUoKSAvIG1GcmFtZVNpemU7CiAKICAgICAvLyBGSVhNRSAtIEN1cnJlbnQgbWl4ZXIgaW1wbGVtZW50YXRpb24gb25seSBzdXBwb3J0cyBzdGVyZW8gb3V0cHV0OiBBbHdheXMKICAgICAvLyBBbGxvY2F0ZSBhIHN0ZXJlbyBidWZmZXIgZXZlbiBpZiBIVyBvdXRwdXQgaXMgbW9uby4KLSAgICBpZiAobU1peEJ1ZmZlciAhPSBOVUxMKSBkZWxldGUgbU1peEJ1ZmZlcjsKKyAgICBpZiAobU1peEJ1ZmZlciAhPSBOVUxMKSBkZWxldGVbXSBtTWl4QnVmZmVyOwogICAgIG1NaXhCdWZmZXIgPSBuZXcgaW50MTZfdFttRnJhbWVDb3VudCAqIDJdOwogICAgIG1lbXNldChtTWl4QnVmZmVyLCAwLCBtRnJhbWVDb3VudCAqIDIgKiBzaXplb2YoaW50MTZfdCkpOworCisgICAgLy9UT0RPIGhhbmRsZSBlZmZlY3RzIHJlY29uZmlnCiB9CiAKIHN0YXR1c190IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmdldFJlbmRlclBvc2l0aW9uKHVpbnQzMl90ICpoYWxGcmFtZXMsIHVpbnQzMl90ICpkc3BGcmFtZXMpCkBAIC0xMjgwLDEwICsxMzU5LDU2IEBACiAgICAgcmV0dXJuIG1PdXRwdXQtPmdldFJlbmRlclBvc2l0aW9uKGRzcEZyYW1lcyk7CiB9CiAKK2Jvb2wgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6aGFzQXVkaW9TZXNzaW9uKGludCBzZXNzaW9uSWQpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBpZiAoZ2V0RWZmZWN0Q2hhaW5fbChzZXNzaW9uSWQpICE9IDApIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHNwPFRyYWNrPiB0cmFjayA9IG1UcmFja3NbaV07CisgICAgICAgIGlmIChzZXNzaW9uSWQgPT0gdHJhY2stPnNlc3Npb25JZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3A8QXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbj4gQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6Z2V0RWZmZWN0Q2hhaW4oaW50IHNlc3Npb25JZCkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBnZXRFZmZlY3RDaGFpbl9sKHNlc3Npb25JZCk7Cit9CisKK3NwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW4+IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmdldEVmZmVjdENoYWluX2woaW50IHNlc3Npb25JZCkKK3sKKyAgICBzcDxFZmZlY3RDaGFpbj4gY2hhaW47CisKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RDaGFpbnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChtRWZmZWN0Q2hhaW5zW2ldLT5zZXNzaW9uSWQoKSA9PSBzZXNzaW9uSWQpIHsKKyAgICAgICAgICAgIGNoYWluID0gbUVmZmVjdENoYWluc1tpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjaGFpbjsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpzZXRNb2RlKHVpbnQzMl90IG1vZGUpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RDaGFpbnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIG1FZmZlY3RDaGFpbnNbaV0tPnNldE1vZGUobW9kZSk7CisgICAgfQorfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUF1ZGlvRmxpbmdlcjo6TWl4ZXJUaHJlYWQ6Ok1peGVyVGhyZWFkKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkKQotICAgIDogICBQbGF5YmFja1RocmVhZChhdWRpb0ZsaW5nZXIsIG91dHB1dCwgaWQpLAorQXVkaW9GbGluZ2VyOjpNaXhlclRocmVhZDo6TWl4ZXJUaHJlYWQoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLCBBdWRpb1N0cmVhbU91dCogb3V0cHV0LCBpbnQgaWQsIHVpbnQzMl90IGRldmljZSkKKyAgICA6ICAgUGxheWJhY2tUaHJlYWQoYXVkaW9GbGluZ2VyLCBvdXRwdXQsIGlkLCBkZXZpY2UpLAogICAgICAgICBtQXVkaW9NaXhlcigwKQogewogICAgIG1UeXBlID0gUGxheWJhY2tUaHJlYWQ6Ok1JWEVSOwpAQCAtMTMwMiw3ICsxNDI3LDYgQEAKIAogYm9vbCBBdWRpb0ZsaW5nZXI6Ok1peGVyVGhyZWFkOjp0aHJlYWRMb29wKCkKIHsKLSAgICBpbnQxNl90KiBjdXJCdWYgPSBtTWl4QnVmZmVyOwogICAgIFZlY3Rvcjwgc3A8VHJhY2s+ID4gdHJhY2tzVG9SZW1vdmU7CiAgICAgdWludDMyX3QgbWl4ZXJTdGF0dXMgPSBNSVhFUl9JRExFOwogICAgIG5zZWNzX3Qgc3RhbmRieVRpbWUgPSBzeXN0ZW1UaW1lKCk7CkBAIC0xMzE1LDYgKzE0MzksNyBAQAogICAgIHVpbnQzMl90IGFjdGl2ZVNsZWVwVGltZSA9IGFjdGl2ZVNsZWVwVGltZVVzKCk7CiAgICAgdWludDMyX3QgaWRsZVNsZWVwVGltZSA9IGlkbGVTbGVlcFRpbWVVcygpOwogICAgIHVpbnQzMl90IHNsZWVwVGltZSA9IGlkbGVTbGVlcFRpbWU7CisgICAgVmVjdG9yPCBzcDxFZmZlY3RDaGFpbj4gPiBlZmZlY3RDaGFpbnM7CiAKICAgICB3aGlsZSAoIWV4aXRQZW5kaW5nKCkpCiAgICAgewpAQCAtMTM3MywxMyArMTQ5OCwyMCBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtaXhlclN0YXR1cyA9IHByZXBhcmVUcmFja3NfbChhY3RpdmVUcmFja3MsICZ0cmFja3NUb1JlbW92ZSk7CisKKyAgICAgICAgICAgIC8vIHByZXZlbnQgYW55IGNoYW5nZXMgaW4gZWZmZWN0IGNoYWluIGxpc3QgYW5kIGluIGVhY2ggZWZmZWN0IGNoYWluCisgICAgICAgICAgICAvLyBkdXJpbmcgbWl4aW5nIGFuZCBlZmZlY3QgcHJvY2VzcyBhcyB0aGUgYXVkaW8gYnVmZmVycyBjb3VsZCBiZSBkZWxldGVkCisgICAgICAgICAgICAvLyBvciBtb2RpZmllZCBpZiBhbiBlZmZlY3QgaXMgY3JlYXRlZCBvciBkZWxldGVkCisgICAgICAgICAgICBlZmZlY3RDaGFpbnMgPSBtRWZmZWN0Q2hhaW5zOworICAgICAgICAgICAgbG9ja0VmZmVjdENoYWluc19sKCk7CiAgICAgICAgfQogCiAgICAgICAgIGlmIChMSUtFTFkobWl4ZXJTdGF0dXMgPT0gTUlYRVJfVFJBQ0tTX1JFQURZKSkgewogICAgICAgICAgICAgLy8gbWl4IGJ1ZmZlcnMuLi4KLSAgICAgICAgICAgIG1BdWRpb01peGVyLT5wcm9jZXNzKGN1ckJ1Zik7CisgICAgICAgICAgICBtQXVkaW9NaXhlci0+cHJvY2VzcygpOwogICAgICAgICAgICAgc2xlZXBUaW1lID0gMDsKICAgICAgICAgICAgIHN0YW5kYnlUaW1lID0gc3lzdGVtVGltZSgpICsga1N0YW5kYnlUaW1lSW5Oc2VjczsKKyAgICAgICAgICAgIC8vVE9ETzogZGVsYXkgc3RhbmRieSB3aGVuIGVmZmVjdHMgaGF2ZSBhIHRhaWwKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIG5vIHRyYWNrcyBhcmUgcmVhZHksIHNsZWVwIG9uY2UgZm9yIHRoZSBkdXJhdGlvbiBvZiBhbiBvdXRwdXQKICAgICAgICAgICAgIC8vIGJ1ZmZlciBzaXplLCB0aGVuIHdyaXRlIDBzIHRvIHRoZSBvdXRwdXQKQEAgLTEzOTEsMTAgKzE1MjMsMTEgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1CeXRlc1dyaXR0ZW4gIT0gMCB8fAogICAgICAgICAgICAgICAgICAgICAgICAobWl4ZXJTdGF0dXMgPT0gTUlYRVJfVFJBQ0tTX0VOQUJMRUQgJiYgbG9uZ1N0YW5kYnlFeGl0KSkgewotICAgICAgICAgICAgICAgIG1lbXNldCAoY3VyQnVmLCAwLCBtaXhCdWZmZXJTaXplKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQgKG1NaXhCdWZmZXIsIDAsIG1peEJ1ZmZlclNpemUpOwogICAgICAgICAgICAgICAgIHNsZWVwVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgTE9HVl9JRigobUJ5dGVzV3JpdHRlbiA9PSAwICYmIChtaXhlclN0YXR1cyA9PSBNSVhFUl9UUkFDS1NfRU5BQkxFRCAmJiBsb25nU3RhbmRieUV4aXQpKSwgImFudGljaXBhdGVkIHN0YXJ0Iik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBUT0RPIGFkZCBzdGFuZGJ5IHRpbWUgZXh0ZW5zaW9uIGZjdCBvZiBlZmZlY3QgdGFpbAogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1TdXNwZW5kZWQpIHsKQEAgLTE0MDIsMTYgKzE1MzUsMjIgQEAKICAgICAgICAgfQogICAgICAgICAvLyBzbGVlcFRpbWUgPT0gMCBtZWFucyB3ZSBtdXN0IHdyaXRlIHRvIGF1ZGlvIGhhcmR3YXJlCiAgICAgICAgIGlmIChzbGVlcFRpbWUgPT0gMCkgewotICAgICAgICAgICAgbUxhc3RXcml0ZVRpbWUgPSBzeXN0ZW1UaW1lKCk7Ci0gICAgICAgICAgICBtSW5Xcml0ZSA9IHRydWU7Ci0gICAgICAgICAgICBtQnl0ZXNXcml0dGVuICs9IG1peEJ1ZmZlclNpemU7CisgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlZmZlY3RDaGFpbnMuc2l6ZSgpOyBpICsrKSB7CisgICAgICAgICAgICAgICAgIGVmZmVjdENoYWluc1tpXS0+cHJvY2Vzc19sKCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIC8vIGVuYWJsZSBjaGFuZ2VzIGluIGVmZmVjdCBjaGFpbgorICAgICAgICAgICAgIHVubG9ja0VmZmVjdENoYWlucygpOwogI2lmZGVmIExWTVgKICAgICAgICAgICAgIGludCBhdWRpb091dHB1dFR5cGUgPSBMaWZlVmliZXM6OmdldE1peGVyVHlwZShtSWQsIG1UeXBlKTsKICAgICAgICAgICAgIGlmIChMaWZlVmliZXM6OmF1ZGlvT3V0cHV0VHlwZUlzTGlmZVZpYmVzKGF1ZGlvT3V0cHV0VHlwZSkpIHsKLSAgICAgICAgICAgICAgIExpZmVWaWJlczo6cHJvY2VzcyhhdWRpb091dHB1dFR5cGUsIGN1ckJ1ZiwgbWl4QnVmZmVyU2l6ZSk7CisgICAgICAgICAgICAgICBMaWZlVmliZXM6OnByb2Nlc3MoYXVkaW9PdXRwdXRUeXBlLCBtTWl4QnVmZmVyLCBtaXhCdWZmZXJTaXplKTsKICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IChpbnQpbU91dHB1dC0+d3JpdGUoY3VyQnVmLCBtaXhCdWZmZXJTaXplKTsKKyAgICAgICAgICAgIG1MYXN0V3JpdGVUaW1lID0gc3lzdGVtVGltZSgpOworICAgICAgICAgICAgbUluV3JpdGUgPSB0cnVlOworICAgICAgICAgICAgbUJ5dGVzV3JpdHRlbiArPSBtaXhCdWZmZXJTaXplOworCisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gKGludCltT3V0cHV0LT53cml0ZShtTWl4QnVmZmVyLCBtaXhCdWZmZXJTaXplKTsKICAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKSBtQnl0ZXNXcml0dGVuIC09IG1peEJ1ZmZlclNpemU7CiAgICAgICAgICAgICBtTnVtV3JpdGVzKys7CiAgICAgICAgICAgICBtSW5Xcml0ZSA9IGZhbHNlOwpAQCAtMTQzMCw2ICsxNTY5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1TdGFuZGJ5ID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBlbmFibGUgY2hhbmdlcyBpbiBlZmZlY3QgY2hhaW4KKyAgICAgICAgICAgIHVubG9ja0VmZmVjdENoYWlucygpOwogICAgICAgICAgICAgdXNsZWVwKHNsZWVwVGltZSk7CiAgICAgICAgIH0KIApAQCAtMTQzNyw2ICsxNTc4LDEwIEBACiAgICAgICAgIC8vIHNpbmNlIHdlIGNhbid0IGd1YXJhbnRlZSB0aGUgZGVzdHJ1Y3RvcnMgd29uJ3QgYWNxdWlyZSB0aGF0CiAgICAgICAgIC8vIHNhbWUgbG9jay4KICAgICAgICAgdHJhY2tzVG9SZW1vdmUuY2xlYXIoKTsKKworICAgICAgICAvLyBFZmZlY3QgY2hhaW5zIHdpbGwgYmUgYWN0dWFsbHkgZGVsZXRlZCBoZXJlIGlmIHRoZXkgd2VyZSByZW1vdmVkIGZyb20KKyAgICAgICAgLy8gbUVmZmVjdENoYWlucyBsaXN0IGR1cmluZyBtaXhpbmcgb3IgZWZmZWN0cyBwcm9jZXNzaW5nCisgICAgICAgIGVmZmVjdENoYWlucy5jbGVhcigpOwogICAgIH0KIAogICAgIGlmICghbVN0YW5kYnkpIHsKQEAgLTE0NTQsNiArMTU5OSw4IEBACiAgICAgdWludDMyX3QgbWl4ZXJTdGF0dXMgPSBNSVhFUl9JRExFOwogICAgIC8vIGZpbmQgb3V0IHdoaWNoIHRyYWNrcyBuZWVkIHRvIGJlIHByb2Nlc3NlZAogICAgIHNpemVfdCBjb3VudCA9IGFjdGl2ZVRyYWNrcy5zaXplKCk7CisgICAgc2l6ZV90IG1peGVkVHJhY2tzID0gMDsKKyAgICBzaXplX3QgdHJhY2tzV2l0aEVmZmVjdCA9IDA7CiAKICAgICBmbG9hdCBtYXN0ZXJWb2x1bWUgPSBtTWFzdGVyVm9sdW1lOwogICAgIGJvb2wgIG1hc3Rlck11dGUgPSBtTWFzdGVyTXV0ZTsKQEAgLTE0NzYsNiArMTYyMywxNCBAQAogICAgICAgICBMaWZlVmliZXM6OmNvbXB1dGVWb2x1bWVzKGF1ZGlvT3V0cHV0VHlwZSwgYWN0aXZlVHlwZXMsIHRyYWNrc0Nvbm5lY3RlZENoYW5nZWQsIHN0YXRlQ2hhbmdlZCwgbWFzdGVyVm9sdW1lLCBtYXN0ZXJNdXRlKTsKICAgICB9CiAjZW5kaWYKKyAgICAvLyBEZWxlZ2F0ZSBtYXN0ZXIgdm9sdW1lIGNvbnRyb2wgdG8gZWZmZWN0IGluIG91dHB1dCBtaXggZWZmZWN0IGNoYWluIGlmIG5lZWRlZAorICAgIHNwPEVmZmVjdENoYWluPiBjaGFpbiA9IGdldEVmZmVjdENoYWluX2woMCk7CisgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgdWludDMyX3QgdiA9ICh1aW50MzJfdCkobWFzdGVyVm9sdW1lICogKDEgPDwgMjQpKTsKKyAgICAgICAgY2hhaW4tPnNldFZvbHVtZSgmdiwgJnYpOworICAgICAgICBtYXN0ZXJWb2x1bWUgPSAoZmxvYXQpKCh2ICsgKDEgPDwgMjMpKSA+PiAyNCk7CisgICAgICAgIGNoYWluLmNsZWFyKCk7CisgICAgfQogCiAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxjb3VudCA7IGkrKykgewogICAgICAgICBzcDxUcmFjaz4gdCA9IGFjdGl2ZVRyYWNrc1tpXS5wcm9tb3RlKCk7CkBAIC0xNDkyLDExICsxNjQ3LDQyIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIC8vTE9HVigidHJhY2sgJWQgdT0lMDh4LCBzPSUwOHggW09LXSBvbiB0aHJlYWQgJXAiLCB0cmFjay0+bmFtZSgpLCBjYmxrLT51c2VyLCBjYmxrLT5zZXJ2ZXIsIHRoaXMpOwogCisgICAgICAgICAgICBtaXhlZFRyYWNrcysrOworCisgICAgICAgICAgICAvLyB0cmFjay0+bWFpbkJ1ZmZlcigpICE9IG1NaXhCdWZmZXIgbWVhbnMgdGhlcmUgaXMgYW4gZWZmZWN0IGNoYWluCisgICAgICAgICAgICAvLyBjb25uZWN0ZWQgdG8gdGhlIHRyYWNrCisgICAgICAgICAgICBjaGFpbi5jbGVhcigpOworICAgICAgICAgICAgaWYgKHRyYWNrLT5tYWluQnVmZmVyKCkgIT0gbU1peEJ1ZmZlcikgeworICAgICAgICAgICAgICAgIGNoYWluID0gZ2V0RWZmZWN0Q2hhaW5fbCh0cmFjay0+c2Vzc2lvbklkKCkpOworICAgICAgICAgICAgICAgIC8vIERlbGVnYXRlIHZvbHVtZSBjb250cm9sIHRvIGVmZmVjdCBpbiB0cmFjayBlZmZlY3QgY2hhaW4gaWYgbmVlZGVkCisgICAgICAgICAgICAgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tzV2l0aEVmZmVjdCsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExPR1coInByZXBhcmVUcmFja3NfbCgpOiB0cmFjayAlMDh4IGF0dGFjaGVkIHRvIGVmZmVjdCBidXQgbm8gY2hhaW4gZm91bmQgb24gc2Vzc2lvbiAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm5hbWUoKSwgdHJhY2stPnNlc3Npb25JZCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgaW50IHBhcmFtID0gQXVkaW9NaXhlcjo6Vk9MVU1FOworICAgICAgICAgICAgaWYgKHRyYWNrLT5tRmlsbGluZ1VwU3RhdHVzID09IFRyYWNrOjpGU19GSUxMRUQpIHsKKyAgICAgICAgICAgICAgICAvLyBubyByYW1wIGZvciB0aGUgZmlyc3Qgdm9sdW1lIHNldHRpbmcKKyAgICAgICAgICAgICAgICB0cmFjay0+bUZpbGxpbmdVcFN0YXR1cyA9IFRyYWNrOjpGU19BQ1RJVkU7CisgICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5tU3RhdGUgPT0gVHJhY2tCYXNlOjpSRVNVTUlORykgeworICAgICAgICAgICAgICAgICAgICB0cmFjay0+bVN0YXRlID0gVHJhY2tCYXNlOjpBQ1RJVkU7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gQXVkaW9NaXhlcjo6UkFNUF9WT0xVTUU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChjYmxrLT5zZXJ2ZXIgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0cmFjayBpcyBzdG9wcGVkIGJlZm9yZSB0aGUgZmlyc3QgZnJhbWUgd2FzIG1peGVkLAorICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhcHBseSByYW1wCisgICAgICAgICAgICAgICAgcGFyYW0gPSBBdWRpb01peGVyOjpSQU1QX1ZPTFVNRTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gY29tcHV0ZSB2b2x1bWUgZm9yIHRoaXMgdHJhY2sKLSAgICAgICAgICAgIGludDE2X3QgbGVmdCwgcmlnaHQ7CisgICAgICAgICAgICBpbnQxNl90IGxlZnQsIHJpZ2h0LCBhdXg7CiAgICAgICAgICAgICBpZiAodHJhY2stPmlzTXV0ZWQoKSB8fCBtYXN0ZXJNdXRlIHx8IHRyYWNrLT5pc1BhdXNpbmcoKSB8fAogICAgICAgICAgICAgICAgIG1TdHJlYW1UeXBlc1t0cmFjay0+dHlwZSgpXS5tdXRlKSB7Ci0gICAgICAgICAgICAgICAgbGVmdCA9IHJpZ2h0ID0gMDsKKyAgICAgICAgICAgICAgICBsZWZ0ID0gcmlnaHQgPSBhdXggPSAwOwogICAgICAgICAgICAgICAgIGlmICh0cmFjay0+aXNQYXVzaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhY2stPnNldFBhdXNlZCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1MTUsMzEgKzE3MDEsMjggQEAKICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgICAgICBmbG9hdCB2ID0gbWFzdGVyVm9sdW1lICogdHlwZVZvbHVtZTsKLSAgICAgICAgICAgICAgICBmbG9hdCB2X2NsYW1wZWQgPSB2ICogY2Jsay0+dm9sdW1lWzBdOwotICAgICAgICAgICAgICAgIGlmICh2X2NsYW1wZWQgPiBNQVhfR0FJTikgdl9jbGFtcGVkID0gTUFYX0dBSU47Ci0gICAgICAgICAgICAgICAgbGVmdCA9IGludDE2X3Qodl9jbGFtcGVkKTsKLSAgICAgICAgICAgICAgICB2X2NsYW1wZWQgPSB2ICogY2Jsay0+dm9sdW1lWzFdOwotICAgICAgICAgICAgICAgIGlmICh2X2NsYW1wZWQgPiBNQVhfR0FJTikgdl9jbGFtcGVkID0gTUFYX0dBSU47Ci0gICAgICAgICAgICAgICAgcmlnaHQgPSBpbnQxNl90KHZfY2xhbXBlZCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdWludDMyX3QgdmwgPSAodWludDMyX3QpKHYgKiBjYmxrLT52b2x1bWVbMF0pIDw8IDEyOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyID0gKHVpbnQzMl90KSh2ICogY2Jsay0+dm9sdW1lWzFdKSA8PCAxMjsKIAotICAgICAgICAgICAgLy8gWFhYOiB0aGVzZSB0aGluZ3MgRE9OJ1QgbmVlZCB0byBiZSBkb25lIGVhY2ggdGltZQotICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPnNldEJ1ZmZlclByb3ZpZGVyKHRyYWNrKTsKLSAgICAgICAgICAgIG1BdWRpb01peGVyLT5lbmFibGUoQXVkaW9NaXhlcjo6TUlYSU5HKTsKLQotICAgICAgICAgICAgaW50IHBhcmFtID0gQXVkaW9NaXhlcjo6Vk9MVU1FOwotICAgICAgICAgICAgaWYgKHRyYWNrLT5tRmlsbGluZ1VwU3RhdHVzID09IFRyYWNrOjpGU19GSUxMRUQpIHsKLSAgICAgICAgICAgICAgICAvLyBubyByYW1wIGZvciB0aGUgZmlyc3Qgdm9sdW1lIHNldHRpbmcKLSAgICAgICAgICAgICAgICB0cmFjay0+bUZpbGxpbmdVcFN0YXR1cyA9IFRyYWNrOjpGU19BQ1RJVkU7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5tU3RhdGUgPT0gVHJhY2tCYXNlOjpSRVNVTUlORykgewotICAgICAgICAgICAgICAgICAgICB0cmFjay0+bVN0YXRlID0gVHJhY2tCYXNlOjpBQ1RJVkU7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtID0gQXVkaW9NaXhlcjo6UkFNUF9WT0xVTUU7CisgICAgICAgICAgICAgICAgLy8gRGVsZWdhdGUgdm9sdW1lIGNvbnRyb2wgdG8gZWZmZWN0IGluIHRyYWNrIGVmZmVjdCBjaGFpbiBpZiBuZWVkZWQKKyAgICAgICAgICAgICAgICBpZiAoY2hhaW4gIT0gMCAmJiBjaGFpbi0+c2V0Vm9sdW1lKCZ2bCwgJnZyKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgcmFtcCB2b2x1bWUgaXMgdm9sdW1lIGlzIGNvbnRyb2xsZWQgYnkgZWZmZWN0CisgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gQXVkaW9NaXhlcjo6Vk9MVU1FOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Jsay0+c2VydmVyICE9IDApIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdHJhY2sgaXMgc3RvcHBlZCBiZWZvcmUgdGhlIGZpcnN0IGZyYW1lIHdhcyBtaXhlZCwKLSAgICAgICAgICAgICAgICAvLyBkbyBub3QgYXBwbHkgcmFtcAotICAgICAgICAgICAgICAgIHBhcmFtID0gQXVkaW9NaXhlcjo6UkFNUF9WT0xVTUU7CisKKyAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHZvbHVtZXMgZnJvbSA4LjI0IHRvIDQuMTIgZm9ybWF0CisgICAgICAgICAgICAgICAgdWludDMyX3Qgdl9jbGFtcGVkID0gKHZsICsgKDEgPDwgMTEpKSA+PiAxMjsKKyAgICAgICAgICAgICAgICBpZiAodl9jbGFtcGVkID4gTUFYX0dBSU5fSU5UKSB2X2NsYW1wZWQgPSBNQVhfR0FJTl9JTlQ7CisgICAgICAgICAgICAgICAgbGVmdCA9IGludDE2X3Qodl9jbGFtcGVkKTsKKyAgICAgICAgICAgICAgICB2X2NsYW1wZWQgPSAodnIgKyAoMSA8PCAxMSkpID4+IDEyOworICAgICAgICAgICAgICAgIGlmICh2X2NsYW1wZWQgPiBNQVhfR0FJTl9JTlQpIHZfY2xhbXBlZCA9IE1BWF9HQUlOX0lOVDsKKyAgICAgICAgICAgICAgICByaWdodCA9IGludDE2X3Qodl9jbGFtcGVkKTsKKworICAgICAgICAgICAgICAgIHZfY2xhbXBlZCA9ICh1aW50MzJfdCkodiAqIGNibGstPnNlbmRMZXZlbCk7CisgICAgICAgICAgICAgICAgaWYgKHZfY2xhbXBlZCA+IE1BWF9HQUlOX0lOVCkgdl9jbGFtcGVkID0gTUFYX0dBSU5fSU5UOworICAgICAgICAgICAgICAgIGF1eCA9IGludDE2X3Qodl9jbGFtcGVkKTsKICAgICAgICAgICAgIH0KKwogI2lmZGVmIExWTVgKICAgICAgICAgICAgIGlmICggdHJhY2tzQ29ubmVjdGVkQ2hhbmdlZCB8fCBzdGF0ZUNoYW5nZWQgKQogICAgICAgICAgICAgewpAQCAtMTU0NywxOCArMTczMCwzMCBAQAogICAgICAgICAgICAgICAgICBwYXJhbSA9IEF1ZGlvTWl4ZXI6OlZPTFVNRTsKICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPnNldFBhcmFtZXRlcihwYXJhbSwgQXVkaW9NaXhlcjo6Vk9MVU1FMCwgbGVmdCk7Ci0gICAgICAgICAgICBtQXVkaW9NaXhlci0+c2V0UGFyYW1ldGVyKHBhcmFtLCBBdWRpb01peGVyOjpWT0xVTUUxLCByaWdodCk7CisKKyAgICAgICAgICAgIC8vIFhYWDogdGhlc2UgdGhpbmdzIERPTidUIG5lZWQgdG8gYmUgZG9uZSBlYWNoIHRpbWUKKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRCdWZmZXJQcm92aWRlcih0cmFjayk7CisgICAgICAgICAgICBtQXVkaW9NaXhlci0+ZW5hYmxlKEF1ZGlvTWl4ZXI6Ok1JWElORyk7CisKKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRQYXJhbWV0ZXIocGFyYW0sIEF1ZGlvTWl4ZXI6OlZPTFVNRTAsICh2b2lkICopbGVmdCk7CisgICAgICAgICAgICBtQXVkaW9NaXhlci0+c2V0UGFyYW1ldGVyKHBhcmFtLCBBdWRpb01peGVyOjpWT0xVTUUxLCAodm9pZCAqKXJpZ2h0KTsKKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRQYXJhbWV0ZXIocGFyYW0sIEF1ZGlvTWl4ZXI6OkFVWExFVkVMLCAodm9pZCAqKWF1eCk7CiAgICAgICAgICAgICBtQXVkaW9NaXhlci0+c2V0UGFyYW1ldGVyKAogICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXI6OlRSQUNLLAotICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXI6OkZPUk1BVCwgdHJhY2stPmZvcm1hdCgpKTsKKyAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpGT1JNQVQsICh2b2lkICopdHJhY2stPmZvcm1hdCgpKTsKICAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRQYXJhbWV0ZXIoCiAgICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6VFJBQ0ssCi0gICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6Q0hBTk5FTF9DT1VOVCwgdHJhY2stPmNoYW5uZWxDb3VudCgpKTsKKyAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpDSEFOTkVMX0NPVU5ULCAodm9pZCAqKXRyYWNrLT5jaGFubmVsQ291bnQoKSk7CiAgICAgICAgICAgICBtQXVkaW9NaXhlci0+c2V0UGFyYW1ldGVyKAogICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXI6OlJFU0FNUExFLAogICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXI6OlNBTVBMRV9SQVRFLAotICAgICAgICAgICAgICAgIGludChjYmxrLT5zYW1wbGVSYXRlKSk7CisgICAgICAgICAgICAgICAgKHZvaWQgKikoY2Jsay0+c2FtcGxlUmF0ZSkpOworICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPnNldFBhcmFtZXRlcigKKyAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpUUkFDSywKKyAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpNQUlOX0JVRkZFUiwgKHZvaWQgKil0cmFjay0+bWFpbkJ1ZmZlcigpKTsKKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6VFJBQ0ssCisgICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6QVVYX0JVRkZFUiwgKHZvaWQgKil0cmFjay0+YXV4QnVmZmVyKCkpOwogCiAgICAgICAgICAgICAvLyByZXNldCByZXRyeSBjb3VudAogICAgICAgICAgICAgdHJhY2stPm1SZXRyeUNvdW50ID0ga01heFRyYWNrUmV0cmllczsKQEAgLTE1NzIsNyArMTc2Nyw2IEBACiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBjb25zdW1lZCBhbGwgdGhlIGJ1ZmZlcnMgb2YgdGhpcyB0cmFjay4KICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgaXQgZnJvbSB0aGUgbGlzdCBvZiBhY3RpdmUgdHJhY2tzLgogICAgICAgICAgICAgICAgIHRyYWNrc1RvUmVtb3ZlLT5hZGQodHJhY2spOwotICAgICAgICAgICAgICAgIG1BdWRpb01peGVyLT5kaXNhYmxlKEF1ZGlvTWl4ZXI6Ok1JWElORyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIE5vIGJ1ZmZlcnMgZm9yIHRoaXMgdHJhY2suIEdpdmUgaXQgYSBmZXcgY2hhbmNlcyB0bwogICAgICAgICAgICAgICAgIC8vIGZpbGwgYSBidWZmZXIsIHRoZW4gcmVtb3ZlIGl0IGZyb20gYWN0aXZlIGxpc3QuCkBAIC0xNTgyLDkgKzE3NzYsOCBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWl4ZXJTdGF0dXMgIT0gTUlYRVJfVFJBQ0tTX1JFQURZKSB7CiAgICAgICAgICAgICAgICAgICAgIG1peGVyU3RhdHVzID0gTUlYRVJfVFJBQ0tTX0VOQUJMRUQ7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPmRpc2FibGUoQXVkaW9NaXhlcjo6TUlYSU5HKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5kaXNhYmxlKEF1ZGlvTWl4ZXI6Ok1JWElORyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1OTQsNiArMTc4NywxMyBAQAogICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBzcDxUcmFjaz4mIHRyYWNrID0gdHJhY2tzVG9SZW1vdmUtPml0ZW1BdChpKTsKICAgICAgICAgICAgIG1BY3RpdmVUcmFja3MucmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgICAgIGlmICh0cmFjay0+bWFpbkJ1ZmZlcigpICE9IG1NaXhCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBjaGFpbiA9IGdldEVmZmVjdENoYWluX2wodHJhY2stPnNlc3Npb25JZCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hhaW4gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBMT0dWKCJzdG9wcGluZyB0cmFjayBvbiBjaGFpbiAlcCBmb3Igc2Vzc2lvbiBJZDogJWQiLCBjaGFpbi5nZXQoKSwgdHJhY2stPnNlc3Npb25JZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhaW4tPnN0b3BUcmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0cmFjay0+aXNUZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgICAgICBtVHJhY2tzLnJlbW92ZSh0cmFjayk7CiAgICAgICAgICAgICAgICAgZGVsZXRlVHJhY2tOYW1lX2wodHJhY2stPm1OYW1lKTsKQEAgLTE2MDEsNzAgKzE4MDEsMzMgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIG1peCBidWZmZXIgbXVzdCBiZSBjbGVhcmVkIGlmIGFsbCB0cmFja3MgYXJlIGNvbm5lY3RlZCB0byBhbgorICAgIC8vIGVmZmVjdCBjaGFpbiBhcyBpbiB0aGlzIGNhc2UgdGhlIG1peGVyIHdpbGwgbm90IHdyaXRlIHRvCisgICAgLy8gbWl4IGJ1ZmZlciBhbmQgdHJhY2sgZWZmZWN0cyB3aWxsIGFjY3VtdWxhdGUgaW50byBpdAorICAgIGlmIChtaXhlZFRyYWNrcyAhPSAwICYmIG1peGVkVHJhY2tzID09IHRyYWNrc1dpdGhFZmZlY3QpIHsKKyAgICAgICAgbWVtc2V0KG1NaXhCdWZmZXIsIDAsIG1GcmFtZUNvdW50ICogbUNoYW5uZWxDb3VudCAqIHNpemVvZihpbnQxNl90KSk7CisgICAgfQorCiAgICAgcmV0dXJuIG1peGVyU3RhdHVzOwogfQogCi12b2lkIEF1ZGlvRmxpbmdlcjo6TWl4ZXJUaHJlYWQ6OmdldFRyYWNrcygKLSAgICAgICAgU29ydGVkVmVjdG9yIDwgc3A8VHJhY2s+ID4mIHRyYWNrcywKLSAgICAgICAgU29ydGVkVmVjdG9yIDwgd3A8VHJhY2s+ID4mIGFjdGl2ZVRyYWNrcywKLSAgICAgICAgaW50IHN0cmVhbVR5cGUpCit2b2lkIEF1ZGlvRmxpbmdlcjo6TWl4ZXJUaHJlYWQ6OmludmFsaWRhdGVUcmFja3MoaW50IHN0cmVhbVR5cGUpCiB7Ci0gICAgTE9HViAoIk1peGVyVGhyZWFkOjpnZXRUcmFja3MoKSBtaXhlciAlcCwgbVRyYWNrcy5zaXplICVkLCBtQWN0aXZlVHJhY2tzLnNpemUgJWQiLCB0aGlzLCAgbVRyYWNrcy5zaXplKCksIG1BY3RpdmVUcmFja3Muc2l6ZSgpKTsKKyAgICBMT0dWICgiTWl4ZXJUaHJlYWQ6OmludmFsaWRhdGVUcmFja3MoKSBtaXhlciAlcCwgc3RyZWFtVHlwZSAlZCwgbVRyYWNrcy5zaXplICVkIiwgdGhpcywgIHN0cmVhbVR5cGUsIG1UcmFja3Muc2l6ZSgpKTsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgIHNpemVfdCBzaXplID0gbVRyYWNrcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgc3A8VHJhY2s+IHQgPSBtVHJhY2tzW2ldOwogICAgICAgICBpZiAodC0+dHlwZSgpID09IHN0cmVhbVR5cGUpIHsKLSAgICAgICAgICAgIHRyYWNrcy5hZGQodCk7Ci0gICAgICAgICAgICBpbnQgaiA9IG1BY3RpdmVUcmFja3MuaW5kZXhPZih0KTsKLSAgICAgICAgICAgIGlmIChqID49IDApIHsKLSAgICAgICAgICAgICAgICB0ID0gbUFjdGl2ZVRyYWNrc1tqXS5wcm9tb3RlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBhY3RpdmVUcmFja3MuYWRkKHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHNpemUgPSBhY3RpdmVUcmFja3Muc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIG1BY3RpdmVUcmFja3MucmVtb3ZlKGFjdGl2ZVRyYWNrc1tpXSk7Ci0gICAgfQotCi0gICAgc2l6ZSA9IHRyYWNrcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgc3A8VHJhY2s+IHQgPSB0cmFja3NbaV07Ci0gICAgICAgIG1UcmFja3MucmVtb3ZlKHQpOwotICAgICAgICBkZWxldGVUcmFja05hbWVfbCh0LT5uYW1lKCkpOwotICAgIH0KLX0KLQotdm9pZCBBdWRpb0ZsaW5nZXI6Ok1peGVyVGhyZWFkOjpwdXRUcmFja3MoCi0gICAgICAgIFNvcnRlZFZlY3RvciA8IHNwPFRyYWNrPiA+JiB0cmFja3MsCi0gICAgICAgIFNvcnRlZFZlY3RvciA8IHdwPFRyYWNrPiA+JiBhY3RpdmVUcmFja3MpCi17Ci0gICAgTE9HViAoIk1peGVyVGhyZWFkOjpwdXRUcmFja3MoKSBtaXhlciAlcCwgdHJhY2tzLnNpemUgJWQsIGFjdGl2ZVRyYWNrcy5zaXplICVkIiwgdGhpcywgIHRyYWNrcy5zaXplKCksIGFjdGl2ZVRyYWNrcy5zaXplKCkpOwotICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7Ci0gICAgc2l6ZV90IHNpemUgPSB0cmFja3Muc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSA7IGkrKykgewotICAgICAgICBzcDxUcmFjaz4gdCA9IHRyYWNrc1tpXTsKLSAgICAgICAgaW50IG5hbWUgPSBnZXRUcmFja05hbWVfbCgpOwotCi0gICAgICAgIGlmIChuYW1lIDwgMCkgcmV0dXJuOwotCi0gICAgICAgIHQtPm1OYW1lID0gbmFtZTsKLSAgICAgICAgdC0+bVRocmVhZCA9IHRoaXM7Ci0gICAgICAgIG1UcmFja3MuYWRkKHQpOwotCi0gICAgICAgIGludCBqID0gYWN0aXZlVHJhY2tzLmluZGV4T2YodCk7Ci0gICAgICAgIGlmIChqID49IDApIHsKLSAgICAgICAgICAgIG1BY3RpdmVUcmFja3MuYWRkKHQpOwotICAgICAgICAgICAgLy8gZm9yY2UgYnVmZmVyIHJlZmlsbGluZyBhbmQgbm8gcmFtcCB2b2x1bWUgd2hlbiB0aGUgdHJhY2sgaXMgbWl4ZWQgZm9yIHRoZSBmaXJzdCB0aW1lCi0gICAgICAgICAgICB0LT5tRmlsbGluZ1VwU3RhdHVzID0gVHJhY2s6OkZTX0ZJTExJTkc7CisgICAgICAgICAgICB0LT5tQ2Jsay0+bG9jay5sb2NrKCk7CisgICAgICAgICAgICB0LT5tQ2Jsay0+ZmxhZ3MgfD0gQ0JMS19JTlZBTElEX09OOworICAgICAgICAgICAgdC0+bUNibGstPmN2LnNpZ25hbCgpOworICAgICAgICAgICAgdC0+bUNibGstPmxvY2sudW5sb2NrKCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKKwogLy8gZ2V0VHJhY2tOYW1lX2woKSBtdXN0IGJlIGNhbGxlZCB3aXRoIFRocmVhZEJhc2U6Om1Mb2NrIGhlbGQKIGludCBBdWRpb0ZsaW5nZXI6Ok1peGVyVGhyZWFkOjpnZXRUcmFja05hbWVfbCgpCiB7CkBAIC0xNzE2LDYgKzE4NzksMTUgQEAKICAgICAgICAgICAgICAgICByZWNvbmZpZyA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHBhcmFtLmdldEludChTdHJpbmc4KEF1ZGlvUGFyYW1ldGVyOjprZXlSb3V0aW5nKSwgdmFsdWUpID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAvLyBmb3J3YXJkIGRldmljZSBjaGFuZ2UgdG8gZWZmZWN0cyB0aGF0IGhhdmUgcmVxdWVzdGVkIHRvIGJlCisgICAgICAgICAgICAvLyBhd2FyZSBvZiBhdHRhY2hlZCBhdWRpbyBkZXZpY2UuCisgICAgICAgICAgICBtRGV2aWNlID0gKHVpbnQzMl90KXZhbHVlOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRWZmZWN0Q2hhaW5zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgbUVmZmVjdENoYWluc1tpXS0+c2V0RGV2aWNlKG1EZXZpY2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgewogICAgICAgICAgICAgc3RhdHVzID0gbU91dHB1dC0+c2V0UGFyYW1ldGVycyhrZXlWYWx1ZVBhaXIpOwogICAgICAgICAgICAgaWYgKCFtU3RhbmRieSAmJiBzdGF0dXMgPT0gSU5WQUxJRF9PUEVSQVRJT04pIHsKQEAgLTE3NzUsOSArMTk0Nyw4IEBACiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUF1ZGlvRmxpbmdlcjo6RGlyZWN0T3V0cHV0VGhyZWFkOjpEaXJlY3RPdXRwdXRUaHJlYWQoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLCBBdWRpb1N0cmVhbU91dCogb3V0cHV0LCBpbnQgaWQpCi0gICAgOiAgIFBsYXliYWNrVGhyZWFkKGF1ZGlvRmxpbmdlciwgb3V0cHV0LCBpZCksCi0gICAgbUxlZnRWb2x1bWUgKDEuMCksIG1SaWdodFZvbHVtZSgxLjApCitBdWRpb0ZsaW5nZXI6OkRpcmVjdE91dHB1dFRocmVhZDo6RGlyZWN0T3V0cHV0VGhyZWFkKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkLCB1aW50MzJfdCBkZXZpY2UpCisgICAgOiAgIFBsYXliYWNrVGhyZWFkKGF1ZGlvRmxpbmdlciwgb3V0cHV0LCBpZCwgZGV2aWNlKQogewogICAgIG1UeXBlID0gUGxheWJhY2tUaHJlYWQ6OkRJUkVDVDsKIH0KQEAgLTE3ODcsNiArMTk1OCwxMDIgQEAKIH0KIAogCitzdGF0aWMgaW5saW5lIGludDE2X3QgY2xhbXAxNihpbnQzMl90IHNhbXBsZSkKK3sKKyAgICBpZiAoKHNhbXBsZT4+MTUpIF4gKHNhbXBsZT4+MzEpKQorICAgICAgICBzYW1wbGUgPSAweDdGRkYgXiAoc2FtcGxlPj4zMSk7CisgICAgcmV0dXJuIHNhbXBsZTsKK30KKworc3RhdGljIGlubGluZQoraW50MzJfdCBtdWwoaW50MTZfdCBpbiwgaW50MTZfdCB2KQoreworI2lmIGRlZmluZWQoX19hcm1fXykgJiYgIWRlZmluZWQoX190aHVtYl9fKQorICAgIGludDMyX3Qgb3V0OworICAgIGFzbSggInNtdWxiYiAlW291dF0sICVbaW5dLCAlW3ZdIFxuIgorICAgICAgICAgOiBbb3V0XSI9ciIob3V0KQorICAgICAgICAgOiBbaW5dIiVyIihpbiksIFt2XSJyIih2KQorICAgICAgICAgOiApOworICAgIHJldHVybiBvdXQ7CisjZWxzZQorICAgIHJldHVybiBpbiAqIGludDMyX3Qodik7CisjZW5kaWYKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkRpcmVjdE91dHB1dFRocmVhZDo6YXBwbHlWb2x1bWUodWludDE2X3QgbGVmdFZvbCwgdWludDE2X3QgcmlnaHRWb2wsIGJvb2wgcmFtcCkKK3sKKyAgICAvLyBEbyBub3QgYXBwbHkgdm9sdW1lIG9uIGNvbXByZXNzZWQgYXVkaW8KKyAgICBpZiAoIUF1ZGlvU3lzdGVtOjppc0xpbmVhclBDTShtRm9ybWF0KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gY29udmVydCB0byBzaWduZWQgMTYgYml0IGJlZm9yZSB2b2x1bWUgY2FsY3VsYXRpb24KKyAgICBpZiAobUZvcm1hdCA9PSBBdWRpb1N5c3RlbTo6UENNXzhfQklUKSB7CisgICAgICAgIHNpemVfdCBjb3VudCA9IG1GcmFtZUNvdW50ICogbUNoYW5uZWxDb3VudDsKKyAgICAgICAgdWludDhfdCAqc3JjID0gKHVpbnQ4X3QgKiltTWl4QnVmZmVyICsgY291bnQtMTsKKyAgICAgICAgaW50MTZfdCAqZHN0ID0gbU1peEJ1ZmZlciArIGNvdW50LTE7CisgICAgICAgIHdoaWxlKGNvdW50LS0pIHsKKyAgICAgICAgICAgICpkc3QtLSA9IChpbnQxNl90KSgqc3JjLS1eMHg4MCkgPDwgODsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNpemVfdCBmcmFtZUNvdW50ID0gbUZyYW1lQ291bnQ7CisgICAgaW50MTZfdCAqb3V0ID0gbU1peEJ1ZmZlcjsKKyAgICBpZiAocmFtcCkgeworICAgICAgICBpZiAobUNoYW5uZWxDb3VudCA9PSAxKSB7CisgICAgICAgICAgICBpbnQzMl90IGQgPSAoKGludDMyX3QpbGVmdFZvbCAtIChpbnQzMl90KW1MZWZ0Vm9sU2hvcnQpIDw8IDE2OworICAgICAgICAgICAgaW50MzJfdCB2bEluYyA9IGQgLyAoaW50MzJfdClmcmFtZUNvdW50OworICAgICAgICAgICAgaW50MzJfdCB2bCA9ICgoaW50MzJfdCltTGVmdFZvbFNob3J0IDw8IDE2KTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBjbGFtcDE2KG11bChvdXRbMF0sIHZsID4+IDE2KSA+PiAxMik7CisgICAgICAgICAgICAgICAgb3V0Kys7CisgICAgICAgICAgICAgICAgdmwgKz0gdmxJbmM7CisgICAgICAgICAgICB9IHdoaWxlICgtLWZyYW1lQ291bnQpOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQzMl90IGQgPSAoKGludDMyX3QpbGVmdFZvbCAtIChpbnQzMl90KW1MZWZ0Vm9sU2hvcnQpIDw8IDE2OworICAgICAgICAgICAgaW50MzJfdCB2bEluYyA9IGQgLyAoaW50MzJfdClmcmFtZUNvdW50OworICAgICAgICAgICAgZCA9ICgoaW50MzJfdClyaWdodFZvbCAtIChpbnQzMl90KW1SaWdodFZvbFNob3J0KSA8PCAxNjsKKyAgICAgICAgICAgIGludDMyX3QgdnJJbmMgPSBkIC8gKGludDMyX3QpZnJhbWVDb3VudDsKKyAgICAgICAgICAgIGludDMyX3QgdmwgPSAoKGludDMyX3QpbUxlZnRWb2xTaG9ydCA8PCAxNik7CisgICAgICAgICAgICBpbnQzMl90IHZyID0gKChpbnQzMl90KW1SaWdodFZvbFNob3J0IDw8IDE2KTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBjbGFtcDE2KG11bChvdXRbMF0sIHZsID4+IDE2KSA+PiAxMik7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gY2xhbXAxNihtdWwob3V0WzFdLCB2ciA+PiAxNikgPj4gMTIpOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgICAgIHZsICs9IHZsSW5jOworICAgICAgICAgICAgICAgIHZyICs9IHZySW5jOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtQ2hhbm5lbENvdW50ID09IDEpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBjbGFtcDE2KG11bChvdXRbMF0sIGxlZnRWb2wpID4+IDEyKTsKKyAgICAgICAgICAgICAgICBvdXQrKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgb3V0WzBdID0gY2xhbXAxNihtdWwob3V0WzBdLCBsZWZ0Vm9sKSA+PiAxMik7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gY2xhbXAxNihtdWwob3V0WzFdLCByaWdodFZvbCkgPj4gMTIpOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGNvbnZlcnQgYmFjayB0byB1bnNpZ25lZCA4IGJpdCBhZnRlciB2b2x1bWUgY2FsY3VsYXRpb24KKyAgICBpZiAobUZvcm1hdCA9PSBBdWRpb1N5c3RlbTo6UENNXzhfQklUKSB7CisgICAgICAgIHNpemVfdCBjb3VudCA9IG1GcmFtZUNvdW50ICogbUNoYW5uZWxDb3VudDsKKyAgICAgICAgaW50MTZfdCAqc3JjID0gbU1peEJ1ZmZlcjsKKyAgICAgICAgdWludDhfdCAqZHN0ID0gKHVpbnQ4X3QgKiltTWl4QnVmZmVyOworICAgICAgICB3aGlsZShjb3VudC0tKSB7CisgICAgICAgICAgICAqZHN0KysgPSAodWludDhfdCkoKChpbnQzMl90KSpzcmMrKyArICgxPDw3KSkgPj4gOCleMHg4MDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1MZWZ0Vm9sU2hvcnQgPSBsZWZ0Vm9sOworICAgIG1SaWdodFZvbFNob3J0ID0gcmlnaHRWb2w7Cit9CisKIGJvb2wgQXVkaW9GbGluZ2VyOjpEaXJlY3RPdXRwdXRUaHJlYWQ6OnRocmVhZExvb3AoKQogewogICAgIHVpbnQzMl90IG1peGVyU3RhdHVzID0gTUlYRVJfSURMRTsKQEAgLTE4MDUsNiArMjA3MiwxMSBAQAogCiAgICAgd2hpbGUgKCFleGl0UGVuZGluZygpKQogICAgIHsKKyAgICAgICAgYm9vbCByYW1wVm9sdW1lOworICAgICAgICB1aW50MTZfdCBsZWZ0Vm9sOworICAgICAgICB1aW50MTZfdCByaWdodFZvbDsKKyAgICAgICAgVmVjdG9yPCBzcDxFZmZlY3RDaGFpbj4gPiBlZmZlY3RDaGFpbnM7CisKICAgICAgICAgcHJvY2Vzc0NvbmZpZ0V2ZW50cygpOwogCiAgICAgICAgIG1peGVyU3RhdHVzID0gTUlYRVJfSURMRTsKQEAgLTE4NTYsNiArMjEyOCw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBlZmZlY3RDaGFpbnMgPSBtRWZmZWN0Q2hhaW5zOworCiAgICAgICAgICAgICAvLyBmaW5kIG91dCB3aGljaCB0cmFja3MgbmVlZCB0byBiZSBwcm9jZXNzZWQKICAgICAgICAgICAgIGlmIChtQWN0aXZlVHJhY2tzLnNpemUoKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgc3A8VHJhY2s+IHQgPSBtQWN0aXZlVHJhY2tzWzBdLnByb21vdGUoKTsKQEAgLTE4NzEsNiArMjE0NSwxOSBAQAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgLy9MT0dWKCJ0cmFjayAlZCB1PSUwOHgsIHM9JTA4eCBbT0tdIiwgdHJhY2stPm5hbWUoKSwgY2Jsay0+dXNlciwgY2Jsay0+c2VydmVyKTsKIAorICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2stPm1GaWxsaW5nVXBTdGF0dXMgPT0gVHJhY2s6OkZTX0ZJTExFRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1GaWxsaW5nVXBTdGF0dXMgPSBUcmFjazo6RlNfQUNUSVZFOworICAgICAgICAgICAgICAgICAgICAgICAgbUxlZnRWb2xGbG9hdCA9IG1SaWdodFZvbEZsb2F0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1MZWZ0Vm9sU2hvcnQgPSBtUmlnaHRWb2xTaG9ydCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2stPm1TdGF0ZSA9PSBUcmFja0Jhc2U6OlJFU1VNSU5HKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1TdGF0ZSA9IFRyYWNrQmFzZTo6QUNUSVZFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbXBWb2x1bWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNibGstPnNlcnZlciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdHJhY2sgaXMgc3RvcHBlZCBiZWZvcmUgdGhlIGZpcnN0IGZyYW1lIHdhcyBtaXhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhcHBseSByYW1wCisgICAgICAgICAgICAgICAgICAgICAgICByYW1wVm9sdW1lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHZvbHVtZSBmb3IgdGhpcyB0cmFjawogICAgICAgICAgICAgICAgICAgICBmbG9hdCBsZWZ0LCByaWdodDsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5pc011dGVkKCkgfHwgbU1hc3Rlck11dGUgfHwgdHJhY2stPmlzUGF1c2luZygpIHx8CkBAIC0xODkwLDE3ICsyMTc3LDQyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCA9IHZfY2xhbXBlZC9NQVhfR0FJTjsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0ICE9IG1MZWZ0Vm9sdW1lIHx8IHJpZ2h0ICE9IG1SaWdodFZvbHVtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbU91dHB1dC0+c2V0Vm9sdW1lKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtTGVmdFZvbHVtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gbVJpZ2h0Vm9sdW1lOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0ICE9IG1MZWZ0Vm9sRmxvYXQgfHwgcmlnaHQgIT0gbVJpZ2h0Vm9sRmxvYXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1MZWZ0Vm9sRmxvYXQgPSBsZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgbVJpZ2h0Vm9sRmxvYXQgPSByaWdodDsKIAotICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2stPm1GaWxsaW5nVXBTdGF0dXMgPT0gVHJhY2s6OkZTX0ZJTExFRCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1GaWxsaW5nVXBTdGF0dXMgPSBUcmFjazo6RlNfQUNUSVZFOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5tU3RhdGUgPT0gVHJhY2tCYXNlOjpSRVNVTUlORykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLT5tU3RhdGUgPSBUcmFja0Jhc2U6OkFDVElWRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGF1ZGlvIEhBTCBpbXBsZW1lbnRzIHZvbHVtZSBjb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yY2Ugc29mdHdhcmUgdm9sdW1lIHRvIG5vbWluYWwgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtT3V0cHV0LT5zZXRWb2x1bWUobGVmdCwgcmlnaHQpID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSAxLjBmOwogICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHZvbHVtZXMgZnJvbSBmbG9hdCB0byA4LjI0CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2bCA9ICh1aW50MzJfdCkobGVmdCAqICgxIDw8IDI0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2ciA9ICh1aW50MzJfdCkocmlnaHQgKiAoMSA8PCAyNCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxlZ2F0ZSB2b2x1bWUgY29udHJvbCB0byBlZmZlY3QgaW4gdHJhY2sgZWZmZWN0IGNoYWluIGlmIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBvbmUgZWZmZWN0IGNoYWluIGNhbiBiZSBwcmVzZW50IG9uIERpcmVjdE91dHB1dFRocmVhZCwgc28gaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZXJlIGlzIG9uZSwgdGhlIHRyYWNrIGlzIGNvbm5lY3RlZCB0byBpdAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZmZlY3RDaGFpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IHJhbXAgdm9sdW1lIGlzIHZvbHVtZSBpcyBjb250cm9sbGVkIGJ5IGVmZmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVmZmVjdENoYWluc1swXS0+c2V0Vm9sdW1lKCZ2bCwgJnZyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW1wVm9sdW1lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHZvbHVtZXMgZnJvbSA4LjI0IHRvIDQuMTIgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2X2NsYW1wZWQgPSAodmwgKyAoMSA8PCAxMSkpID4+IDEyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZfY2xhbXBlZCA+IE1BWF9HQUlOX0lOVCkgdl9jbGFtcGVkID0gTUFYX0dBSU5fSU5UOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFZvbCA9ICh1aW50MTZfdCl2X2NsYW1wZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2X2NsYW1wZWQgPSAodnIgKyAoMSA8PCAxMSkpID4+IDEyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZfY2xhbXBlZCA+IE1BWF9HQUlOX0lOVCkgdl9jbGFtcGVkID0gTUFYX0dBSU5fSU5UOworICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRWb2wgPSAodWludDE2X3Qpdl9jbGFtcGVkOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFZvbCA9IG1MZWZ0Vm9sU2hvcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICByaWdodFZvbCA9IG1SaWdodFZvbFNob3J0OworICAgICAgICAgICAgICAgICAgICAgICAgcmFtcFZvbHVtZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgcmV0cnkgY291bnQKQEAgLTE5MzIsMTEgKzIyNDQsMTcgQEAKICAgICAgICAgICAgIC8vIHJlbW92ZSBhbGwgdGhlIHRyYWNrcyB0aGF0IG5lZWQgdG8gYmUuLi4KICAgICAgICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1RvUmVtb3ZlICE9IDApKSB7CiAgICAgICAgICAgICAgICAgbUFjdGl2ZVRyYWNrcy5yZW1vdmUodHJhY2tUb1JlbW92ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFlZmZlY3RDaGFpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIExPR1YoInN0b3BwaW5nIHRyYWNrIG9uIGNoYWluICVwIGZvciBzZXNzaW9uIElkOiAlZCIsIGVmZmVjdENoYWluc1swXS5nZXQoKSwgdHJhY2tUb1JlbW92ZS0+c2Vzc2lvbklkKCkpOworICAgICAgICAgICAgICAgICAgICBlZmZlY3RDaGFpbnNbMF0tPnN0b3BUcmFjaygpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodHJhY2tUb1JlbW92ZS0+aXNUZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbVRyYWNrcy5yZW1vdmUodHJhY2tUb1JlbW92ZSk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVRyYWNrTmFtZV9sKHRyYWNrVG9SZW1vdmUtPm1OYW1lKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxvY2tFZmZlY3RDaGFpbnNfbCgpOwogICAgICAgIH0KIAogICAgICAgICBpZiAoTElLRUxZKG1peGVyU3RhdHVzID09IE1JWEVSX1RSQUNLU19SRUFEWSkpIHsKQEAgLTE5NDQsNyArMjI2Miw3IEBACiAgICAgICAgICAgICBzaXplX3QgZnJhbWVDb3VudCA9IG1GcmFtZUNvdW50OwogICAgICAgICAgICAgY3VyQnVmID0gKGludDhfdCAqKW1NaXhCdWZmZXI7CiAgICAgICAgICAgICAvLyBvdXRwdXQgYXVkaW8gdG8gaGFyZHdhcmUKLSAgICAgICAgICAgIHdoaWxlKGZyYW1lQ291bnQpIHsKKyAgICAgICAgICAgIHdoaWxlIChmcmFtZUNvdW50KSB7CiAgICAgICAgICAgICAgICAgYnVmZmVyLmZyYW1lQ291bnQgPSBmcmFtZUNvdW50OwogICAgICAgICAgICAgICAgIGFjdGl2ZVRyYWNrLT5nZXROZXh0QnVmZmVyKCZidWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShidWZmZXIucmF3ID09IDApKSB7CkBAIC0xOTc2LDYgKzIyOTQsMTQgQEAKICAgICAgICAgfQogICAgICAgICAvLyBzbGVlcFRpbWUgPT0gMCBtZWFucyB3ZSBtdXN0IHdyaXRlIHRvIGF1ZGlvIGhhcmR3YXJlCiAgICAgICAgIGlmIChzbGVlcFRpbWUgPT0gMCkgeworICAgICAgICAgICAgaWYgKG1peGVyU3RhdHVzID09IE1JWEVSX1RSQUNLU19SRUFEWSkgeworICAgICAgICAgICAgICAgIGFwcGx5Vm9sdW1lKGxlZnRWb2wsIHJpZ2h0Vm9sLCByYW1wVm9sdW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWZmZWN0Q2hhaW5zLnNpemUoKTsgaSArKykgeworICAgICAgICAgICAgICAgIGVmZmVjdENoYWluc1tpXS0+cHJvY2Vzc19sKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1bmxvY2tFZmZlY3RDaGFpbnMoKTsKKwogICAgICAgICAgICAgbUxhc3RXcml0ZVRpbWUgPSBzeXN0ZW1UaW1lKCk7CiAgICAgICAgICAgICBtSW5Xcml0ZSA9IHRydWU7CiAgICAgICAgICAgICBtQnl0ZXNXcml0dGVuICs9IG1peEJ1ZmZlclNpemU7CkBAIC0xOTg1LDYgKzIzMTEsNyBAQAogICAgICAgICAgICAgbUluV3JpdGUgPSBmYWxzZTsKICAgICAgICAgICAgIG1TdGFuZGJ5ID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1bmxvY2tFZmZlY3RDaGFpbnMoKTsKICAgICAgICAgICAgIHVzbGVlcChzbGVlcFRpbWUpOwogICAgICAgICB9CiAKQEAgLTE5OTMsNiArMjMyMCwxMCBAQAogICAgICAgICAvLyBzYW1lIGxvY2suCiAgICAgICAgIHRyYWNrVG9SZW1vdmUuY2xlYXIoKTsKICAgICAgICAgYWN0aXZlVHJhY2suY2xlYXIoKTsKKworICAgICAgICAvLyBFZmZlY3QgY2hhaW5zIHdpbGwgYmUgYWN0dWFsbHkgZGVsZXRlZCBoZXJlIGlmIHRoZXkgd2VyZSByZW1vdmVkIGZyb20KKyAgICAgICAgLy8gbUVmZmVjdENoYWlucyBsaXN0IGR1cmluZyBtaXhpbmcgb3IgZWZmZWN0cyBwcm9jZXNzaW5nCisgICAgICAgIGVmZmVjdENoYWlucy5jbGVhcigpOwogICAgIH0KIAogICAgIGlmICghbVN0YW5kYnkpIHsKQEAgLTIwODMsNyArMjQxNCw3IEBACiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEF1ZGlvRmxpbmdlcjo6RHVwbGljYXRpbmdUaHJlYWQ6OkR1cGxpY2F0aW5nVGhyZWFkKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9GbGluZ2VyOjpNaXhlclRocmVhZCogbWFpblRocmVhZCwgaW50IGlkKQotICAgIDogICBNaXhlclRocmVhZChhdWRpb0ZsaW5nZXIsIG1haW5UaHJlYWQtPmdldE91dHB1dCgpLCBpZCksIG1XYWl0VGltZU1zKFVJTlRfTUFYKQorICAgIDogICBNaXhlclRocmVhZChhdWRpb0ZsaW5nZXIsIG1haW5UaHJlYWQtPmdldE91dHB1dCgpLCBpZCwgbWFpblRocmVhZC0+ZGV2aWNlKCkpLCBtV2FpdFRpbWVNcyhVSU5UX01BWCkKIHsKICAgICBtVHlwZSA9IFBsYXliYWNrVGhyZWFkOjpEVVBMSUNBVElORzsKICAgICBhZGRPdXRwdXRUcmFjayhtYWluVGhyZWFkKTsKQEAgLTIwOTksNyArMjQzMCw2IEBACiAKIGJvb2wgQXVkaW9GbGluZ2VyOjpEdXBsaWNhdGluZ1RocmVhZDo6dGhyZWFkTG9vcCgpCiB7Ci0gICAgaW50MTZfdCogY3VyQnVmID0gbU1peEJ1ZmZlcjsKICAgICBWZWN0b3I8IHNwPFRyYWNrPiA+IHRyYWNrc1RvUmVtb3ZlOwogICAgIHVpbnQzMl90IG1peGVyU3RhdHVzID0gTUlYRVJfSURMRTsKICAgICBuc2Vjc190IHN0YW5kYnlUaW1lID0gc3lzdGVtVGltZSgpOwpAQCAtMjEwOSw2ICsyNDM5LDcgQEAKICAgICB1aW50MzJfdCBhY3RpdmVTbGVlcFRpbWUgPSBhY3RpdmVTbGVlcFRpbWVVcygpOwogICAgIHVpbnQzMl90IGlkbGVTbGVlcFRpbWUgPSBpZGxlU2xlZXBUaW1lVXMoKTsKICAgICB1aW50MzJfdCBzbGVlcFRpbWUgPSBpZGxlU2xlZXBUaW1lOworICAgIFZlY3Rvcjwgc3A8RWZmZWN0Q2hhaW4+ID4gZWZmZWN0Q2hhaW5zOwogCiAgICAgd2hpbGUgKCFleGl0UGVuZGluZygpKQogICAgIHsKQEAgLTIxNjksMTQgKzI1MDAsMjAgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbWl4ZXJTdGF0dXMgPSBwcmVwYXJlVHJhY2tzX2woYWN0aXZlVHJhY2tzLCAmdHJhY2tzVG9SZW1vdmUpOworCisgICAgICAgICAgICAvLyBwcmV2ZW50IGFueSBjaGFuZ2VzIGluIGVmZmVjdCBjaGFpbiBsaXN0IGFuZCBpbiBlYWNoIGVmZmVjdCBjaGFpbgorICAgICAgICAgICAgLy8gZHVyaW5nIG1peGluZyBhbmQgZWZmZWN0IHByb2Nlc3MgYXMgdGhlIGF1ZGlvIGJ1ZmZlcnMgY291bGQgYmUgZGVsZXRlZAorICAgICAgICAgICAgLy8gb3IgbW9kaWZpZWQgaWYgYW4gZWZmZWN0IGlzIGNyZWF0ZWQgb3IgZGVsZXRlZAorICAgICAgICAgICAgZWZmZWN0Q2hhaW5zID0gbUVmZmVjdENoYWluczsKKyAgICAgICAgICAgIGxvY2tFZmZlY3RDaGFpbnNfbCgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKExJS0VMWShtaXhlclN0YXR1cyA9PSBNSVhFUl9UUkFDS1NfUkVBRFkpKSB7CiAgICAgICAgICAgICAvLyBtaXggYnVmZmVycy4uLgogICAgICAgICAgICAgaWYgKG91dHB1dHNSZWFkeShvdXRwdXRUcmFja3MpKSB7Ci0gICAgICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPnByb2Nlc3MoY3VyQnVmKTsKKyAgICAgICAgICAgICAgICBtQXVkaW9NaXhlci0+cHJvY2VzcygpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtZW1zZXQoY3VyQnVmLCAwLCBtaXhCdWZmZXJTaXplKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQobU1peEJ1ZmZlciwgMCwgbWl4QnVmZmVyU2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzbGVlcFRpbWUgPSAwOwogICAgICAgICAgICAgd3JpdGVGcmFtZXMgPSBtRnJhbWVDb3VudDsKQEAgLTIxOTMsNiArMjUzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRwdXRUcmFja3NbaV0tPmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZUZyYW1lcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQobU1peEJ1ZmZlciwgMCwgbWl4QnVmZmVyU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTIyMDQsMTMgKzI1NDIsMjEgQEAKICAgICAgICAgfQogICAgICAgICAvLyBzbGVlcFRpbWUgPT0gMCBtZWFucyB3ZSBtdXN0IHdyaXRlIHRvIGF1ZGlvIGhhcmR3YXJlCiAgICAgICAgIGlmIChzbGVlcFRpbWUgPT0gMCkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlZmZlY3RDaGFpbnMuc2l6ZSgpOyBpICsrKSB7CisgICAgICAgICAgICAgICAgZWZmZWN0Q2hhaW5zW2ldLT5wcm9jZXNzX2woKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGVuYWJsZSBjaGFuZ2VzIGluIGVmZmVjdCBjaGFpbgorICAgICAgICAgICAgdW5sb2NrRWZmZWN0Q2hhaW5zKCk7CisKICAgICAgICAgICAgIHN0YW5kYnlUaW1lID0gc3lzdGVtVGltZSgpICsga1N0YW5kYnlUaW1lSW5Oc2VjczsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3V0cHV0VHJhY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0VHJhY2tzW2ldLT53cml0ZShjdXJCdWYsIHdyaXRlRnJhbWVzKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmFja3NbaV0tPndyaXRlKG1NaXhCdWZmZXIsIHdyaXRlRnJhbWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1TdGFuZGJ5ID0gZmFsc2U7CiAgICAgICAgICAgICBtQnl0ZXNXcml0dGVuICs9IG1peEJ1ZmZlclNpemU7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBlbmFibGUgY2hhbmdlcyBpbiBlZmZlY3QgY2hhaW4KKyAgICAgICAgICAgIHVubG9ja0VmZmVjdENoYWlucygpOwogICAgICAgICAgICAgdXNsZWVwKHNsZWVwVGltZSk7CiAgICAgICAgIH0KIApAQCAtMjIxOSw2ICsyNTY1LDEwIEBACiAgICAgICAgIC8vIHNhbWUgbG9jay4KICAgICAgICAgdHJhY2tzVG9SZW1vdmUuY2xlYXIoKTsKICAgICAgICAgb3V0cHV0VHJhY2tzLmNsZWFyKCk7CisKKyAgICAgICAgLy8gRWZmZWN0IGNoYWlucyB3aWxsIGJlIGFjdHVhbGx5IGRlbGV0ZWQgaGVyZSBpZiB0aGV5IHdlcmUgcmVtb3ZlZCBmcm9tCisgICAgICAgIC8vIG1FZmZlY3RDaGFpbnMgbGlzdCBkdXJpbmcgbWl4aW5nIG9yIGVmZmVjdHMgcHJvY2Vzc2luZworICAgICAgICBlZmZlY3RDaGFpbnMuY2xlYXIoKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzAzLDcgKzI2NTMsOCBAQAogICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAogICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCi0gICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyKQorICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeT4mIHNoYXJlZEJ1ZmZlciwKKyAgICAgICAgICAgIGludCBzZXNzaW9uSWQpCiAgICAgOiAgIFJlZkJhc2UoKSwKICAgICAgICAgbVRocmVhZCh0aHJlYWQpLAogICAgICAgICBtQ2xpZW50KGNsaWVudCksCkBAIC0yMzEyLDcgKzI2NjMsOCBAQAogICAgICAgICBtU3RhdGUoSURMRSksCiAgICAgICAgIG1DbGllbnRUaWQoLTEpLAogICAgICAgICBtRm9ybWF0KGZvcm1hdCksCi0gICAgICAgIG1GbGFncyhmbGFncyAmIH5TWVNURU1fRkxBR1NfTUFTSykKKyAgICAgICAgbUZsYWdzKGZsYWdzICYgflNZU1RFTV9GTEFHU19NQVNLKSwKKyAgICAgICAgbVNlc3Npb25JZChzZXNzaW9uSWQpCiB7CiAgICAgTE9HVl9JRihzaGFyZWRCdWZmZXIgIT0gMCwgInNoYXJlZEJ1ZmZlcjogJXAsIHNpemU6ICVkIiwgc2hhcmVkQnVmZmVyLT5wb2ludGVyKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKIApAQCAtMjMzMiwxMyArMjY4NCwxMyBAQAogICAgICAgICAgICAgICAgIC8vIGNsZWFyIGFsbCBidWZmZXJzCiAgICAgICAgICAgICAgICAgbUNibGstPmZyYW1lQ291bnQgPSBmcmFtZUNvdW50OwogICAgICAgICAgICAgICAgIG1DYmxrLT5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKLSAgICAgICAgICAgICAgICBtQ2Jsay0+Y2hhbm5lbHMgPSAodWludDhfdCljaGFubmVsQ291bnQ7CisgICAgICAgICAgICAgICAgbUNibGstPmNoYW5uZWxDb3VudCA9ICh1aW50OF90KWNoYW5uZWxDb3VudDsKICAgICAgICAgICAgICAgICBpZiAoc2hhcmVkQnVmZmVyID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgbUJ1ZmZlciA9IChjaGFyKiltQ2JsayArIHNpemVvZihhdWRpb190cmFja19jYmxrX3QpOwogICAgICAgICAgICAgICAgICAgICBtZW1zZXQobUJ1ZmZlciwgMCwgZnJhbWVDb3VudCpjaGFubmVsQ291bnQqc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdW5kZXJydW4gY29uZGl0aW9uIHRvIGF2b2lkIGZhbHNlIHVuZGVycnVuIGNhbGxiYWNrIHVudGlsIGZpcnN0IGRhdGEgaXMKICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdHRlbiB0byBidWZmZXIKLSAgICAgICAgICAgICAgICAgICAgbUNibGstPmZsb3dDb250cm9sRmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAgIG1DYmxrLT5mbGFncyA9IENCTEtfVU5ERVJSVU5fT047CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+cG9pbnRlcigpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzNTYsMTIgKzI3MDgsMTIgQEAKICAgICAgICAgICAgLy8gY2xlYXIgYWxsIGJ1ZmZlcnMKICAgICAgICAgICAgbUNibGstPmZyYW1lQ291bnQgPSBmcmFtZUNvdW50OwogICAgICAgICAgICBtQ2Jsay0+c2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7Ci0gICAgICAgICAgIG1DYmxrLT5jaGFubmVscyA9ICh1aW50OF90KWNoYW5uZWxDb3VudDsKKyAgICAgICAgICAgbUNibGstPmNoYW5uZWxDb3VudCA9ICh1aW50OF90KWNoYW5uZWxDb3VudDsKICAgICAgICAgICAgbUJ1ZmZlciA9IChjaGFyKiltQ2JsayArIHNpemVvZihhdWRpb190cmFja19jYmxrX3QpOwogICAgICAgICAgICBtZW1zZXQobUJ1ZmZlciwgMCwgZnJhbWVDb3VudCpjaGFubmVsQ291bnQqc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgLy8gRm9yY2UgdW5kZXJydW4gY29uZGl0aW9uIHRvIGF2b2lkIGZhbHNlIHVuZGVycnVuIGNhbGxiYWNrIHVudGlsIGZpcnN0IGRhdGEgaXMKICAgICAgICAgICAgLy8gd3JpdHRlbiB0byBidWZmZXIKLSAgICAgICAgICAgbUNibGstPmZsb3dDb250cm9sRmxhZyA9IDE7CisgICAgICAgICAgIG1DYmxrLT5mbGFncyA9IENCTEtfVU5ERVJSVU5fT047CiAgICAgICAgICAgIG1CdWZmZXJFbmQgPSAodWludDhfdCAqKW1CdWZmZXIgKyBidWZmZXJTaXplOwogICAgICAgIH0KICAgIH0KQEAgLTI0MjMsNyArMjc3NSw3IEBACiB9CiAKIGludCBBdWRpb0ZsaW5nZXI6OlRocmVhZEJhc2U6OlRyYWNrQmFzZTo6Y2hhbm5lbENvdW50KCkgY29uc3QgewotICAgIHJldHVybiAoaW50KW1DYmxrLT5jaGFubmVsczsKKyAgICByZXR1cm4gKGludCltQ2Jsay0+Y2hhbm5lbENvdW50OwogfQogCiB2b2lkKiBBdWRpb0ZsaW5nZXI6OlRocmVhZEJhc2U6OlRyYWNrQmFzZTo6Z2V0QnVmZmVyKHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgZnJhbWVzKSBjb25zdCB7CkBAIC0yNDM1LDkgKzI3ODcsOSBAQAogICAgIGlmIChidWZmZXJTdGFydCA8IG1CdWZmZXIgfHwgYnVmZmVyU3RhcnQgPiBidWZmZXJFbmQgfHwgYnVmZmVyRW5kID4gbUJ1ZmZlckVuZCB8fAogICAgICAgICAoKHVuc2lnbmVkIGxvbmcpYnVmZmVyU3RhcnQgJiAodW5zaWduZWQgbG9uZykoY2Jsay0+ZnJhbWVTaXplIC0gMSkpKSB7CiAgICAgICAgIExPR0UoIlRyYWNrQmFzZTo6Z2V0QnVmZmVyIGJ1ZmZlciBvdXQgb2YgcmFuZ2U6XG4gICAgc3RhcnQ6ICVwLCBlbmQgJXAgLCBtQnVmZmVyICVwIG1CdWZmZXJFbmQgJXBcbiAgICBcCi0gICAgICAgICAgICAgICAgc2VydmVyICVkLCBzZXJ2ZXJCYXNlICVkLCB1c2VyICVkLCB1c2VyQmFzZSAlZCwgY2hhbm5lbHMgJWQiLAorICAgICAgICAgICAgICAgIHNlcnZlciAlZCwgc2VydmVyQmFzZSAlZCwgdXNlciAlZCwgdXNlckJhc2UgJWQsIGNoYW5uZWxDb3VudCAlZCIsCiAgICAgICAgICAgICAgICAgYnVmZmVyU3RhcnQsIGJ1ZmZlckVuZCwgbUJ1ZmZlciwgbUJ1ZmZlckVuZCwKLSAgICAgICAgICAgICAgICBjYmxrLT5zZXJ2ZXIsIGNibGstPnNlcnZlckJhc2UsIGNibGstPnVzZXIsIGNibGstPnVzZXJCYXNlLCBjYmxrLT5jaGFubmVscyk7CisgICAgICAgICAgICAgICAgY2Jsay0+c2VydmVyLCBjYmxrLT5zZXJ2ZXJCYXNlLCBjYmxrLT51c2VyLCBjYmxrLT51c2VyQmFzZSwgY2Jsay0+Y2hhbm5lbENvdW50KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yNDU1LDE1ICsyODA3LDE3IEBACiAgICAgICAgICAgICBpbnQgZm9ybWF0LAogICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAotICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeT4mIHNoYXJlZEJ1ZmZlcikKLSAgICA6ICAgVHJhY2tCYXNlKHRocmVhZCwgY2xpZW50LCBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgMCwgc2hhcmVkQnVmZmVyKSwKLSAgICBtTXV0ZShmYWxzZSksIG1TaGFyZWRCdWZmZXIoc2hhcmVkQnVmZmVyKSwgbU5hbWUoLTEpCisgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAorICAgICAgICAgICAgaW50IHNlc3Npb25JZCkKKyAgICA6ICAgVHJhY2tCYXNlKHRocmVhZCwgY2xpZW50LCBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgMCwgc2hhcmVkQnVmZmVyLCBzZXNzaW9uSWQpLAorICAgIG1NdXRlKGZhbHNlKSwgbVNoYXJlZEJ1ZmZlcihzaGFyZWRCdWZmZXIpLCBtTmFtZSgtMSksIG1NYWluQnVmZmVyKE5VTEwpLCBtQXV4QnVmZmVyKE5VTEwpLCBtQXV4RWZmZWN0SWQoMCkKIHsKICAgICBpZiAobUNibGsgIT0gTlVMTCkgewogICAgICAgICBzcDxUaHJlYWRCYXNlPiBiYXNlVGhyZWFkID0gdGhyZWFkLnByb21vdGUoKTsKICAgICAgICAgaWYgKGJhc2VUaHJlYWQgIT0gMCkgewogICAgICAgICAgICAgUGxheWJhY2tUaHJlYWQgKnBsYXliYWNrVGhyZWFkID0gKFBsYXliYWNrVGhyZWFkICopYmFzZVRocmVhZC5nZXQoKTsKICAgICAgICAgICAgIG1OYW1lID0gcGxheWJhY2tUaHJlYWQtPmdldFRyYWNrTmFtZV9sKCk7CisgICAgICAgICAgICBtTWFpbkJ1ZmZlciA9IHBsYXliYWNrVGhyZWFkLT5taXhCdWZmZXIoKTsKICAgICAgICAgfQogICAgICAgICBMT0dWKCJUcmFjayBjb25zdHJ1Y3RvciBuYW1lICVkLCBjYWxsaW5nIHRocmVhZCAlZCIsIG1OYW1lLCBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nUGlkKCkpOwogICAgICAgICBpZiAobU5hbWUgPCAwKSB7CkBAIC0yNTE3LDEyICsyODcxLDEzIEBACiAKIHZvaWQgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6VHJhY2s6OmR1bXAoY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBzbnByaW50ZihidWZmZXIsIHNpemUsICIgICU1ZCAlNWQgJTN1ICUzdSAlM3UgJTA0dSAlMWQgJTFkICUxZCAlNXUgJTV1ICU1dSAgJTA4eCAlMDh4XG4iLAorICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIiAgICUwNWQgJTA1ZCAlMDN1ICUwM3UgJTAzdSAlMDV1ICAgJTA0dSAlMWQgJTFkICUxZCAlMDV1ICUwNXUgJTA1dSAgMHglMDh4IDB4JTA4eCAweCUwOHggMHglMDh4XG4iLAogICAgICAgICAgICAgbU5hbWUgLSBBdWRpb01peGVyOjpUUkFDSzAsCiAgICAgICAgICAgICAobUNsaWVudCA9PSBOVUxMKSA/IGdldHBpZCgpIDogbUNsaWVudC0+cGlkKCksCiAgICAgICAgICAgICBtU3RyZWFtVHlwZSwKICAgICAgICAgICAgIG1Gb3JtYXQsCi0gICAgICAgICAgICBtQ2Jsay0+Y2hhbm5lbHMsCisgICAgICAgICAgICBtQ2Jsay0+Y2hhbm5lbENvdW50LAorICAgICAgICAgICAgbVNlc3Npb25JZCwKICAgICAgICAgICAgIG1GcmFtZUNvdW50LAogICAgICAgICAgICAgbVN0YXRlLAogICAgICAgICAgICAgbU11dGUsCkBAIC0yNTMxLDcgKzI4ODYsOSBAQAogICAgICAgICAgICAgbUNibGstPnZvbHVtZVswXSwKICAgICAgICAgICAgIG1DYmxrLT52b2x1bWVbMV0sCiAgICAgICAgICAgICBtQ2Jsay0+c2VydmVyLAotICAgICAgICAgICAgbUNibGstPnVzZXIpOworICAgICAgICAgICAgbUNibGstPnVzZXIsCisgICAgICAgICAgICAoaW50KW1NYWluQnVmZmVyLAorICAgICAgICAgICAgKGludCltQXV4QnVmZmVyKTsKIH0KIAogc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6VHJhY2s6OmdldE5leHRCdWZmZXIoQXVkaW9CdWZmZXJQcm92aWRlcjo6QnVmZmVyKiBidWZmZXIpCkBAIC0yNTc5LDkgKzI5MzYsOSBAQAogICAgIGlmIChtRmlsbGluZ1VwU3RhdHVzICE9IEZTX0ZJTExJTkcpIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1DYmxrLT5mcmFtZXNSZWFkeSgpID49IG1DYmxrLT5mcmFtZUNvdW50IHx8Ci0gICAgICAgIG1DYmxrLT5mb3JjZVJlYWR5KSB7CisgICAgICAgICAgICAobUNibGstPmZsYWdzICYgQ0JMS19GT1JDRVJFQURZX01TSykpIHsKICAgICAgICAgbUZpbGxpbmdVcFN0YXR1cyA9IEZTX0ZJTExFRDsKLSAgICAgICAgbUNibGstPmZvcmNlUmVhZHkgPSAwOworICAgICAgICBtQ2Jsay0+ZmxhZ3MgJj0gfkNCTEtfRk9SQ0VSRUFEWV9NU0s7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjk2LDggKzMwNTMsOCBAQAogICAgICAgICBUcmFja0Jhc2U6OnJlc2V0KCk7CiAgICAgICAgIC8vIEZvcmNlIHVuZGVycnVuIGNvbmRpdGlvbiB0byBhdm9pZCBmYWxzZSB1bmRlcnJ1biBjYWxsYmFjayB1bnRpbCBmaXJzdCBkYXRhIGlzCiAgICAgICAgIC8vIHdyaXR0ZW4gdG8gYnVmZmVyCi0gICAgICAgIG1DYmxrLT5mbG93Q29udHJvbEZsYWcgPSAxOwotICAgICAgICBtQ2Jsay0+Zm9yY2VSZWFkeSA9IDA7CisgICAgICAgIG1DYmxrLT5mbGFncyB8PSBDQkxLX1VOREVSUlVOX09OOworICAgICAgICBtQ2Jsay0+ZmxhZ3MgJj0gfkNCTEtfRk9SQ0VSRUFEWV9NU0s7CiAgICAgICAgIG1GaWxsaW5nVXBTdGF0dXMgPSBGU19GSUxMSU5HOwogICAgICAgICBtUmVzZXREb25lID0gdHJ1ZTsKICAgICB9CkBAIC0yNzE0LDYgKzMwNzEsMjMgQEAKICAgICBtVm9sdW1lWzFdID0gcmlnaHQ7CiB9CiAKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OlRyYWNrOjphdHRhY2hBdXhFZmZlY3QoaW50IEVmZmVjdElkKQoreworICAgIHN0YXR1c190IHN0YXR1cyA9IERFQURfT0JKRUNUOworICAgIHNwPFRocmVhZEJhc2U+IHRocmVhZCA9IG1UaHJlYWQucHJvbW90ZSgpOworICAgIGlmICh0aHJlYWQgIT0gMCkgeworICAgICAgIFBsYXliYWNrVGhyZWFkICpwbGF5YmFja1RocmVhZCA9IChQbGF5YmFja1RocmVhZCAqKXRocmVhZC5nZXQoKTsKKyAgICAgICBzdGF0dXMgPSBwbGF5YmFja1RocmVhZC0+YXR0YWNoQXV4RWZmZWN0KHRoaXMsIEVmZmVjdElkKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpUcmFjazo6c2V0QXV4QnVmZmVyKGludCBFZmZlY3RJZCwgaW50MzJfdCAqYnVmZmVyKQoreworICAgIG1BdXhFZmZlY3RJZCA9IEVmZmVjdElkOworICAgIG1BdXhCdWZmZXIgPSBidWZmZXI7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gUmVjb3JkVHJhY2sgY29uc3RydWN0b3IgbXVzdCBiZSBjYWxsZWQgd2l0aCBBdWRpb0ZsaW5nZXI6Om1Mb2NrIGhlbGQKQEAgLTI3MjQsOSArMzA5OCwxMCBAQAogICAgICAgICAgICAgaW50IGZvcm1hdCwKICAgICAgICAgICAgIGludCBjaGFubmVsQ291bnQsCiAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCwKLSAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQorICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCisgICAgICAgICAgICBpbnQgc2Vzc2lvbklkKQogICAgIDogICBUcmFja0Jhc2UodGhyZWFkLCBjbGllbnQsIHNhbXBsZVJhdGUsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgZmxhZ3MsIDApLAorICAgICAgICAgICAgICAgICAgY2hhbm5lbENvdW50LCBmcmFtZUNvdW50LCBmbGFncywgMCwgc2Vzc2lvbklkKSwKICAgICAgICAgbU92ZXJmbG93KGZhbHNlKQogewogICAgIGlmIChtQ2JsayAhPSBOVUxMKSB7CkBAIC0yODA4LDE2ICszMTgzLDE3IEBACiAgICAgICAgIFRyYWNrQmFzZTo6cmVzZXQoKTsKICAgICAgICAgLy8gRm9yY2Ugb3ZlcmVycnVuIGNvbmRpdGlvbiB0byBhdm9pZCBmYWxzZSBvdmVycnVuIGNhbGxiYWNrIHVudGlsIGZpcnN0IGRhdGEgaXMKICAgICAgICAgLy8gcmVhZCBmcm9tIGJ1ZmZlcgotICAgICAgICBtQ2Jsay0+Zmxvd0NvbnRyb2xGbGFnID0gMTsKKyAgICAgICAgbUNibGstPmZsYWdzIHw9IENCTEtfVU5ERVJSVU5fT047CiAgICAgfQogfQogCiB2b2lkIEF1ZGlvRmxpbmdlcjo6UmVjb3JkVGhyZWFkOjpSZWNvcmRUcmFjazo6ZHVtcChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogewotICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIiAgICUwNWQgJTAzdSAlMDN1ICUwNHUgJTAxZCAlMDV1ICAlMDh4ICUwOHhcbiIsCisgICAgc25wcmludGYoYnVmZmVyLCBzaXplLCAiICAgJTA1ZCAlMDN1ICUwM3UgJTA1ZCAgICUwNHUgJTAxZCAlMDV1ICAlMDh4ICUwOHhcbiIsCiAgICAgICAgICAgICAobUNsaWVudCA9PSBOVUxMKSA/IGdldHBpZCgpIDogbUNsaWVudC0+cGlkKCksCiAgICAgICAgICAgICBtRm9ybWF0LAotICAgICAgICAgICAgbUNibGstPmNoYW5uZWxzLAorICAgICAgICAgICAgbUNibGstPmNoYW5uZWxDb3VudCwKKyAgICAgICAgICAgIG1TZXNzaW9uSWQsCiAgICAgICAgICAgICBtRnJhbWVDb3VudCwKICAgICAgICAgICAgIG1TdGF0ZSwKICAgICAgICAgICAgIG1DYmxrLT5zYW1wbGVSYXRlLApAQCAtMjgzNSwxOSArMzIxMSwxOSBAQAogICAgICAgICAgICAgaW50IGZvcm1hdCwKICAgICAgICAgICAgIGludCBjaGFubmVsQ291bnQsCiAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkKLSAgICA6ICAgVHJhY2sodGhyZWFkLCBOVUxMLCBBdWRpb1N5c3RlbTo6TlVNX1NUUkVBTV9UWVBFUywgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsIGZyYW1lQ291bnQsIE5VTEwpLAorICAgIDogICBUcmFjayh0aHJlYWQsIE5VTEwsIEF1ZGlvU3lzdGVtOjpOVU1fU1RSRUFNX1RZUEVTLCBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgTlVMTCwgMCksCiAgICAgbUFjdGl2ZShmYWxzZSksIG1Tb3VyY2VUaHJlYWQoc291cmNlVGhyZWFkKQogewogCiAgICAgUGxheWJhY2tUaHJlYWQgKnBsYXliYWNrVGhyZWFkID0gKFBsYXliYWNrVGhyZWFkICopdGhyZWFkLnVuc2FmZV9nZXQoKTsKICAgICBpZiAobUNibGsgIT0gTlVMTCkgewotICAgICAgICBtQ2Jsay0+b3V0ID0gMTsKKyAgICAgICAgbUNibGstPmZsYWdzIHw9IENCTEtfRElSRUNUSU9OX09VVDsKICAgICAgICAgbUNibGstPmJ1ZmZlcnMgPSAoY2hhciopbUNibGsgKyBzaXplb2YoYXVkaW9fdHJhY2tfY2Jsa190KTsKICAgICAgICAgbUNibGstPnZvbHVtZVswXSA9IG1DYmxrLT52b2x1bWVbMV0gPSAweDEwMDA7CiAgICAgICAgIG1PdXRCdWZmZXIuZnJhbWVDb3VudCA9IDA7CiAgICAgICAgIHBsYXliYWNrVGhyZWFkLT5tVHJhY2tzLmFkZCh0aGlzKTsKLSAgICAgICAgTE9HVigiT3V0cHV0VHJhY2sgY29uc3RydWN0b3IgbUNibGsgJXAsIG1CdWZmZXIgJXAsIG1DYmxrLT5idWZmZXJzICVwLCBtQ2Jsay0+ZnJhbWVDb3VudCAlZCwgbUNibGstPnNhbXBsZVJhdGUgJWQsIG1DYmxrLT5jaGFubmVscyAlZCBtQnVmZmVyRW5kICVwIiwKLSAgICAgICAgICAgICAgICBtQ2JsaywgbUJ1ZmZlciwgbUNibGstPmJ1ZmZlcnMsIG1DYmxrLT5mcmFtZUNvdW50LCBtQ2Jsay0+c2FtcGxlUmF0ZSwgbUNibGstPmNoYW5uZWxzLCBtQnVmZmVyRW5kKTsKKyAgICAgICAgTE9HVigiT3V0cHV0VHJhY2sgY29uc3RydWN0b3IgbUNibGsgJXAsIG1CdWZmZXIgJXAsIG1DYmxrLT5idWZmZXJzICVwLCBtQ2Jsay0+ZnJhbWVDb3VudCAlZCwgbUNibGstPnNhbXBsZVJhdGUgJWQsIG1DYmxrLT5jaGFubmVsQ291bnQgJWQgbUJ1ZmZlckVuZCAlcCIsCisgICAgICAgICAgICAgICAgbUNibGssIG1CdWZmZXIsIG1DYmxrLT5idWZmZXJzLCBtQ2Jsay0+ZnJhbWVDb3VudCwgbUNibGstPnNhbXBsZVJhdGUsIG1DYmxrLT5jaGFubmVsQ291bnQsIG1CdWZmZXJFbmQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExPR1coIkVycm9yIGNyZWF0aW5nIG91dHB1dCB0cmFjayBvbiB0aHJlYWQgJXAiLCBwbGF5YmFja1RocmVhZCk7CiAgICAgfQpAQCAtMjg4Miw3ICszMjU4LDcgQEAKIHsKICAgICBCdWZmZXIgKnBJbkJ1ZmZlcjsKICAgICBCdWZmZXIgaW5CdWZmZXI7Ci0gICAgdWludDMyX3QgY2hhbm5lbHMgPSBtQ2Jsay0+Y2hhbm5lbHM7CisgICAgdWludDMyX3QgY2hhbm5lbENvdW50ID0gbUNibGstPmNoYW5uZWxDb3VudDsKICAgICBib29sIG91dHB1dEJ1ZmZlckZ1bGwgPSBmYWxzZTsKICAgICBpbkJ1ZmZlci5mcmFtZUNvdW50ID0gZnJhbWVzOwogICAgIGluQnVmZmVyLmkxNiA9IGRhdGE7CkBAIC0yODk4LDEwICszMjc0LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgKG1CdWZmZXJRdWV1ZS5zaXplKCkgPCBrTWF4T3ZlckZsb3dCdWZmZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN0YXJ0RnJhbWVzID0gKG1DYmxrLT5mcmFtZUNvdW50IC0gZnJhbWVzKTsKICAgICAgICAgICAgICAgICAgICAgcEluQnVmZmVyID0gbmV3IEJ1ZmZlcjsKLSAgICAgICAgICAgICAgICAgICAgcEluQnVmZmVyLT5tQnVmZmVyID0gbmV3IGludDE2X3Rbc3RhcnRGcmFtZXMgKiBjaGFubmVsc107CisgICAgICAgICAgICAgICAgICAgIHBJbkJ1ZmZlci0+bUJ1ZmZlciA9IG5ldyBpbnQxNl90W3N0YXJ0RnJhbWVzICogY2hhbm5lbENvdW50XTsKICAgICAgICAgICAgICAgICAgICAgcEluQnVmZmVyLT5mcmFtZUNvdW50ID0gc3RhcnRGcmFtZXM7CiAgICAgICAgICAgICAgICAgICAgIHBJbkJ1ZmZlci0+aTE2ID0gcEluQnVmZmVyLT5tQnVmZmVyOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQocEluQnVmZmVyLT5yYXcsIDAsIHN0YXJ0RnJhbWVzICogY2hhbm5lbHMgKiBzaXplb2YoaW50MTZfdCkpOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQocEluQnVmZmVyLT5yYXcsIDAsIHN0YXJ0RnJhbWVzICogY2hhbm5lbENvdW50ICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgICAgICAgICAgbUJ1ZmZlclF1ZXVlLmFkZChwSW5CdWZmZXIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIExPR1cgKCJPdXRwdXRUcmFjazo6d3JpdGUoKSAlcCBubyBtb3JlIGJ1ZmZlcnMgaW4gcXVldWUiLCB0aGlzKTsKQEAgLTI5MzksMTIgKzMzMTUsMTIgQEAKICAgICAgICAgfQogCiAgICAgICAgIHVpbnQzMl90IG91dEZyYW1lcyA9IHBJbkJ1ZmZlci0+ZnJhbWVDb3VudCA+IG1PdXRCdWZmZXIuZnJhbWVDb3VudCA/IG1PdXRCdWZmZXIuZnJhbWVDb3VudCA6IHBJbkJ1ZmZlci0+ZnJhbWVDb3VudDsKLSAgICAgICAgbWVtY3B5KG1PdXRCdWZmZXIucmF3LCBwSW5CdWZmZXItPnJhdywgb3V0RnJhbWVzICogY2hhbm5lbHMgKiBzaXplb2YoaW50MTZfdCkpOworICAgICAgICBtZW1jcHkobU91dEJ1ZmZlci5yYXcsIHBJbkJ1ZmZlci0+cmF3LCBvdXRGcmFtZXMgKiBjaGFubmVsQ291bnQgKiBzaXplb2YoaW50MTZfdCkpOwogICAgICAgICBtQ2Jsay0+c3RlcFVzZXIob3V0RnJhbWVzKTsKICAgICAgICAgcEluQnVmZmVyLT5mcmFtZUNvdW50IC09IG91dEZyYW1lczsKLSAgICAgICAgcEluQnVmZmVyLT5pMTYgKz0gb3V0RnJhbWVzICogY2hhbm5lbHM7CisgICAgICAgIHBJbkJ1ZmZlci0+aTE2ICs9IG91dEZyYW1lcyAqIGNoYW5uZWxDb3VudDsKICAgICAgICAgbU91dEJ1ZmZlci5mcmFtZUNvdW50IC09IG91dEZyYW1lczsKLSAgICAgICAgbU91dEJ1ZmZlci5pMTYgKz0gb3V0RnJhbWVzICogY2hhbm5lbHM7CisgICAgICAgIG1PdXRCdWZmZXIuaTE2ICs9IG91dEZyYW1lcyAqIGNoYW5uZWxDb3VudDsKIAogICAgICAgICBpZiAocEluQnVmZmVyLT5mcmFtZUNvdW50ID09IDApIHsKICAgICAgICAgICAgIGlmIChtQnVmZmVyUXVldWUuc2l6ZSgpKSB7CkBAIC0yOTY0LDEwICszMzQwLDEwIEBACiAgICAgICAgIGlmICh0aHJlYWQgIT0gMCAmJiAhdGhyZWFkLT5zdGFuZGJ5KCkpIHsKICAgICAgICAgICAgIGlmIChtQnVmZmVyUXVldWUuc2l6ZSgpIDwga01heE92ZXJGbG93QnVmZmVycykgewogICAgICAgICAgICAgICAgIHBJbkJ1ZmZlciA9IG5ldyBCdWZmZXI7Ci0gICAgICAgICAgICAgICAgcEluQnVmZmVyLT5tQnVmZmVyID0gbmV3IGludDE2X3RbaW5CdWZmZXIuZnJhbWVDb3VudCAqIGNoYW5uZWxzXTsKKyAgICAgICAgICAgICAgICBwSW5CdWZmZXItPm1CdWZmZXIgPSBuZXcgaW50MTZfdFtpbkJ1ZmZlci5mcmFtZUNvdW50ICogY2hhbm5lbENvdW50XTsKICAgICAgICAgICAgICAgICBwSW5CdWZmZXItPmZyYW1lQ291bnQgPSBpbkJ1ZmZlci5mcmFtZUNvdW50OwogICAgICAgICAgICAgICAgIHBJbkJ1ZmZlci0+aTE2ID0gcEluQnVmZmVyLT5tQnVmZmVyOwotICAgICAgICAgICAgICAgIG1lbWNweShwSW5CdWZmZXItPnJhdywgaW5CdWZmZXIucmF3LCBpbkJ1ZmZlci5mcmFtZUNvdW50ICogY2hhbm5lbHMgKiBzaXplb2YoaW50MTZfdCkpOworICAgICAgICAgICAgICAgIG1lbWNweShwSW5CdWZmZXItPnJhdywgaW5CdWZmZXIucmF3LCBpbkJ1ZmZlci5mcmFtZUNvdW50ICogY2hhbm5lbENvdW50ICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgICAgICBtQnVmZmVyUXVldWUuYWRkKHBJbkJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgTE9HVigiT3V0cHV0VHJhY2s6OndyaXRlKCkgJXAgdGhyZWFkICVwIGFkZGluZyBvdmVyZmxvdyBidWZmZXIgJWQiLCB0aGlzLCBtVGhyZWFkLnVuc2FmZV9nZXQoKSwgbUJ1ZmZlclF1ZXVlLnNpemUoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjk4MywxMCArMzM1OSwxMCBAQAogICAgICAgICBpZiAobUNibGstPnVzZXIgPCBtQ2Jsay0+ZnJhbWVDb3VudCkgewogICAgICAgICAgICAgZnJhbWVzID0gbUNibGstPmZyYW1lQ291bnQgLSBtQ2Jsay0+dXNlcjsKICAgICAgICAgICAgIHBJbkJ1ZmZlciA9IG5ldyBCdWZmZXI7Ci0gICAgICAgICAgICBwSW5CdWZmZXItPm1CdWZmZXIgPSBuZXcgaW50MTZfdFtmcmFtZXMgKiBjaGFubmVsc107CisgICAgICAgICAgICBwSW5CdWZmZXItPm1CdWZmZXIgPSBuZXcgaW50MTZfdFtmcmFtZXMgKiBjaGFubmVsQ291bnRdOwogICAgICAgICAgICAgcEluQnVmZmVyLT5mcmFtZUNvdW50ID0gZnJhbWVzOwogICAgICAgICAgICAgcEluQnVmZmVyLT5pMTYgPSBwSW5CdWZmZXItPm1CdWZmZXI7Ci0gICAgICAgICAgICBtZW1zZXQocEluQnVmZmVyLT5yYXcsIDAsIGZyYW1lcyAqIGNoYW5uZWxzICogc2l6ZW9mKGludDE2X3QpKTsKKyAgICAgICAgICAgIG1lbXNldChwSW5CdWZmZXItPnJhdywgMCwgZnJhbWVzICogY2hhbm5lbENvdW50ICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgIG1CdWZmZXJRdWV1ZS5hZGQocEluQnVmZmVyKTsKICAgICAgICAgfSBlbHNlIGlmIChtQWN0aXZlKSB7CiAgICAgICAgICAgICBzdG9wKCk7CkBAIC0zMDg2LDYgKzM0NjIsMjggQEAKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitBdWRpb0ZsaW5nZXI6Ok5vdGlmaWNhdGlvbkNsaWVudDo6Tm90aWZpY2F0aW9uQ2xpZW50KGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUF1ZGlvRmxpbmdlckNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgcGlkKQorICAgIDogbUF1ZGlvRmxpbmdlcihhdWRpb0ZsaW5nZXIpLCBtUGlkKHBpZCksIG1DbGllbnQoY2xpZW50KQoreworfQorCitBdWRpb0ZsaW5nZXI6Ok5vdGlmaWNhdGlvbkNsaWVudDo6fk5vdGlmaWNhdGlvbkNsaWVudCgpCit7CisgICAgbUNsaWVudC5jbGVhcigpOworfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6Tm90aWZpY2F0aW9uQ2xpZW50OjpiaW5kZXJEaWVkKGNvbnN0IHdwPElCaW5kZXI+JiB3aG8pCit7CisgICAgc3A8Tm90aWZpY2F0aW9uQ2xpZW50PiBrZWVwKHRoaXMpOworICAgIHsKKyAgICAgICAgbUF1ZGlvRmxpbmdlci0+cmVtb3ZlTm90aWZpY2F0aW9uQ2xpZW50KG1QaWQpOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBBdWRpb0ZsaW5nZXI6OlRyYWNrSGFuZGxlOjpUcmFja0hhbmRsZShjb25zdCBzcDxBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpUcmFjaz4mIHRyYWNrKQogICAgIDogQm5BdWRpb1RyYWNrKCksCiAgICAgICBtVHJhY2sodHJhY2spCkBAIC0zMTI4LDYgKzM1MjYsMTEgQEAKICAgICByZXR1cm4gbVRyYWNrLT5nZXRDYmxrKCk7CiB9CiAKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6VHJhY2tIYW5kbGU6OmF0dGFjaEF1eEVmZmVjdChpbnQgRWZmZWN0SWQpCit7CisgICAgcmV0dXJuIG1UcmFjay0+YXR0YWNoQXV4RWZmZWN0KEVmZmVjdElkKTsKK30KKwogc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpUcmFja0hhbmRsZTo6b25UcmFuc2FjdCgKICAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKQogewpAQCAtMzE0NCw2ICszNTQ3LDcgQEAKICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cykKIHsKICAgICBzcDxSZWNvcmRUaHJlYWQ6OlJlY29yZFRyYWNrPiByZWNvcmRUcmFjazsKQEAgLTMxNTMsNiArMzU1Nyw3IEBACiAgICAgc3RhdHVzX3QgbFN0YXR1czsKICAgICBSZWNvcmRUaHJlYWQgKnRocmVhZDsKICAgICBzaXplX3QgaW5GcmFtZUNvdW50OworICAgIGludCBsU2Vzc2lvbklkOwogCiAgICAgLy8gY2hlY2sgY2FsbGluZyBwZXJtaXNzaW9ucwogICAgIGlmICghcmVjb3JkaW5nQWxsb3dlZCgpKSB7CkBAIC0zMTc3LDkgKzM1ODIsMTggQEAKICAgICAgICAgICAgIG1DbGllbnRzLmFkZChwaWQsIGNsaWVudCk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBJZiBubyBhdWRpbyBzZXNzaW9uIGlkIGlzIHByb3ZpZGVkLCBjcmVhdGUgb25lIGhlcmUKKyAgICAgICAgaWYgKHNlc3Npb25JZCAhPSBOVUxMICYmICpzZXNzaW9uSWQgIT0gMCkgeworICAgICAgICAgICAgbFNlc3Npb25JZCA9ICpzZXNzaW9uSWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsU2Vzc2lvbklkID0gbmV4dFVuaXF1ZUlkKCk7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbklkICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqc2Vzc2lvbklkID0gbFNlc3Npb25JZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAvLyBjcmVhdGUgbmV3IHJlY29yZCB0cmFjay4gVGhlIHJlY29yZCB0cmFjayB1c2VzIG9uZSB0cmFjayBpbiBtSGFyZHdhcmVNaXhlclRocmVhZCBieSBjb252ZW50aW9uLgogICAgICAgICByZWNvcmRUcmFjayA9IG5ldyBSZWNvcmRUaHJlYWQ6OlJlY29yZFRyYWNrKHRocmVhZCwgY2xpZW50LCBzYW1wbGVSYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBjaGFubmVsQ291bnQsIGZyYW1lQ291bnQsIGZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgY2hhbm5lbENvdW50LCBmcmFtZUNvdW50LCBmbGFncywgbFNlc3Npb25JZCk7CiAgICAgfQogICAgIGlmIChyZWNvcmRUcmFjay0+Z2V0Q2JsaygpID09IE5VTEwpIHsKICAgICAgICAgLy8gcmVtb3ZlIGxvY2FsIHN0cm9uZyByZWZlcmVuY2UgdG8gQ2xpZW50IGJlZm9yZSBkZWxldGluZyB0aGUgUmVjb3JkVHJhY2sgc28gdGhhdCB0aGUgQ2xpZW50CkBAIC0zMjQyLDcgKzM2NTYsNiBAQAogICAgIG1SZXFDaGFubmVsQ291bnQgPSBBdWRpb1N5c3RlbTo6cG9wQ291bnQoY2hhbm5lbHMpOwogICAgIG1SZXFTYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICByZWFkSW5wdXRQYXJhbWV0ZXJzKCk7Ci0gICAgc2VuZENvbmZpZ0V2ZW50KEF1ZGlvU3lzdGVtOjpJTlBVVF9PUEVORUQpOwogfQogCiAKQEAgLTMzMzksNyArMzc1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lc0luID0gZnJhbWVzT3V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Sc21wSW5JbmRleCArPSBmcmFtZXNJbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXNPdXQgLT0gZnJhbWVzSW47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1DaGFubmVsQ291bnQgPT0gbVJlcUNoYW5uZWxDb3VudCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaW50KW1DaGFubmVsQ291bnQgPT0gbVJlcUNoYW5uZWxDb3VudCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRm9ybWF0ICE9IEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShkc3QsIHNyYywgZnJhbWVzSW4gKiBtRnJhbWVTaXplKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzM2MCw3ICszNzczLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZXNPdXQgJiYgbUZyYW1lQ291bnQgPT0gbVJzbXBJbkluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lc091dCA9PSBtRnJhbWVDb3VudCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobUNoYW5uZWxDb3VudCA9PSBtUmVxQ2hhbm5lbENvdW50IHx8IG1Gb3JtYXQgIT0gQXVkaW9TeXN0ZW06OlBDTV8xNl9CSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaW50KW1DaGFubmVsQ291bnQgPT0gbVJlcUNoYW5uZWxDb3VudCB8fCBtRm9ybWF0ICE9IEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklUKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQnl0ZXNSZWFkID0gbUlucHV0LT5yZWFkKGJ1ZmZlci5yYXcsIG1JbnB1dEJ5dGVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzT3V0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzUxOCw3ICszOTMxLDcgQEAKIAogICAgIGlmIChtQWN0aXZlVHJhY2sgIT0gMCkgewogICAgICAgICByZXN1bHQuYXBwZW5kKCJBY3RpdmUgVHJhY2s6XG4iKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgQ2xpZW4gRm10IENobiBCdWYgIFMgU1JhdGUgIFNlcnYgICAgIFVzZXJcbiIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCIgICBDbGllbiBGbXQgQ2huIFNlc3Npb24gQnVmICBTIFNSYXRlICBTZXJ2ICAgICBVc2VyXG4iKTsKICAgICAgICAgbUFjdGl2ZVRyYWNrLT5kdW1wKGJ1ZmZlciwgU0laRSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKIApAQCAtMzY1NywxNCArNDA3MCwxNCBAQAogICAgIHJldHVybiBtSW5wdXQtPmdldFBhcmFtZXRlcnMoa2V5cyk7CiB9CiAKLXZvaWQgQXVkaW9GbGluZ2VyOjpSZWNvcmRUaHJlYWQ6OmF1ZGlvQ29uZmlnQ2hhbmdlZChpbnQgZXZlbnQsIGludCBwYXJhbSkgewordm9pZCBBdWRpb0ZsaW5nZXI6OlJlY29yZFRocmVhZDo6YXVkaW9Db25maWdDaGFuZ2VkX2woaW50IGV2ZW50LCBpbnQgcGFyYW0pIHsKICAgICBBdWRpb1N5c3RlbTo6T3V0cHV0RGVzY3JpcHRvciBkZXNjOwogICAgIHZvaWQgKnBhcmFtMiA9IDA7CiAKICAgICBzd2l0Y2ggKGV2ZW50KSB7CiAgICAgY2FzZSBBdWRpb1N5c3RlbTo6SU5QVVRfT1BFTkVEOgogICAgIGNhc2UgQXVkaW9TeXN0ZW06OklOUFVUX0NPTkZJR19DSEFOR0VEOgotICAgICAgICBkZXNjLmNoYW5uZWxzID0gbUNoYW5uZWxDb3VudDsKKyAgICAgICAgZGVzYy5jaGFubmVscyA9IG1DaGFubmVsczsKICAgICAgICAgZGVzYy5zYW1wbGluZ1JhdGUgPSBtU2FtcGxlUmF0ZTsKICAgICAgICAgZGVzYy5mb3JtYXQgPSBtRm9ybWF0OwogICAgICAgICBkZXNjLmZyYW1lQ291bnQgPSBtRnJhbWVDb3VudDsKQEAgLTM2NzYsNyArNDA4OSw2IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIE11dGV4OjpBdXRvbG9jayBfbChtQXVkaW9GbGluZ2VyLT5tTG9jayk7CiAgICAgbUF1ZGlvRmxpbmdlci0+YXVkaW9Db25maWdDaGFuZ2VkX2woZXZlbnQsIG1JZCwgcGFyYW0yKTsKIH0KIApAQCAtMzY4OCw5ICs0MTAwLDEwIEBACiAgICAgbVJlc2FtcGxlciA9IDA7CiAKICAgICBtU2FtcGxlUmF0ZSA9IG1JbnB1dC0+c2FtcGxlUmF0ZSgpOwotICAgIG1DaGFubmVsQ291bnQgPSBBdWRpb1N5c3RlbTo6cG9wQ291bnQobUlucHV0LT5jaGFubmVscygpKTsKKyAgICBtQ2hhbm5lbHMgPSBtSW5wdXQtPmNoYW5uZWxzKCk7CisgICAgbUNoYW5uZWxDb3VudCA9ICh1aW50MTZfdClBdWRpb1N5c3RlbTo6cG9wQ291bnQobUNoYW5uZWxzKTsKICAgICBtRm9ybWF0ID0gbUlucHV0LT5mb3JtYXQoKTsKLSAgICBtRnJhbWVTaXplID0gbUlucHV0LT5mcmFtZVNpemUoKTsKKyAgICBtRnJhbWVTaXplID0gKHVpbnQxNl90KW1JbnB1dC0+ZnJhbWVTaXplKCk7CiAgICAgbUlucHV0Qnl0ZXMgPSBtSW5wdXQtPmJ1ZmZlclNpemUoKTsKICAgICBtRnJhbWVDb3VudCA9IG1JbnB1dEJ5dGVzIC8gbUZyYW1lU2l6ZTsKICAgICBtUnNtcEluQnVmZmVyID0gbmV3IGludDE2X3RbbUZyYW1lQ291bnQgKiBtQ2hhbm5lbENvdW50XTsKQEAgLTM3NjcsMTQgKzQxODAsMTUgQEAKIAogICAgIG1IYXJkd2FyZVN0YXR1cyA9IEFVRElPX0hXX0lETEU7CiAgICAgaWYgKG91dHB1dCAhPSAwKSB7CisgICAgICAgIGludCBpZCA9IG5leHRVbmlxdWVJZCgpOwogICAgICAgICBpZiAoKGZsYWdzICYgQXVkaW9TeXN0ZW06Ok9VVFBVVF9GTEFHX0RJUkVDVCkgfHwKICAgICAgICAgICAgIChmb3JtYXQgIT0gQXVkaW9TeXN0ZW06OlBDTV8xNl9CSVQpIHx8CiAgICAgICAgICAgICAoY2hhbm5lbHMgIT0gQXVkaW9TeXN0ZW06OkNIQU5ORUxfT1VUX1NURVJFTykpIHsKLSAgICAgICAgICAgIHRocmVhZCA9IG5ldyBEaXJlY3RPdXRwdXRUaHJlYWQodGhpcywgb3V0cHV0LCArK21OZXh0VGhyZWFkSWQpOwotICAgICAgICAgICAgTE9HVigib3Blbk91dHB1dCgpIGNyZWF0ZWQgZGlyZWN0IG91dHB1dDogSUQgJWQgdGhyZWFkICVwIiwgbU5leHRUaHJlYWRJZCwgdGhyZWFkKTsKKyAgICAgICAgICAgIHRocmVhZCA9IG5ldyBEaXJlY3RPdXRwdXRUaHJlYWQodGhpcywgb3V0cHV0LCBpZCwgKnBEZXZpY2VzKTsKKyAgICAgICAgICAgIExPR1YoIm9wZW5PdXRwdXQoKSBjcmVhdGVkIGRpcmVjdCBvdXRwdXQ6IElEICVkIHRocmVhZCAlcCIsIGlkLCB0aHJlYWQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhyZWFkID0gbmV3IE1peGVyVGhyZWFkKHRoaXMsIG91dHB1dCwgKyttTmV4dFRocmVhZElkKTsKLSAgICAgICAgICAgIExPR1YoIm9wZW5PdXRwdXQoKSBjcmVhdGVkIG1peGVyIG91dHB1dDogSUQgJWQgdGhyZWFkICVwIiwgbU5leHRUaHJlYWRJZCwgdGhyZWFkKTsKKyAgICAgICAgICAgIHRocmVhZCA9IG5ldyBNaXhlclRocmVhZCh0aGlzLCBvdXRwdXQsIGlkLCAqcERldmljZXMpOworICAgICAgICAgICAgTE9HVigib3Blbk91dHB1dCgpIGNyZWF0ZWQgbWl4ZXIgb3V0cHV0OiBJRCAlZCB0aHJlYWQgJXAiLCBpZCwgdGhyZWFkKTsKIAogI2lmZGVmIExWTVgKICAgICAgICAgICAgIHVuc2lnbmVkIGJpdHNQZXJTYW1wbGUgPQpAQCAtMzc4OCwxNCArNDIwMiwxNiBAQAogI2VuZGlmCiAKICAgICAgICAgfQotICAgICAgICBtUGxheWJhY2tUaHJlYWRzLmFkZChtTmV4dFRocmVhZElkLCB0aHJlYWQpOworICAgICAgICBtUGxheWJhY2tUaHJlYWRzLmFkZChpZCwgdGhyZWFkKTsKIAogICAgICAgICBpZiAocFNhbXBsaW5nUmF0ZSkgKnBTYW1wbGluZ1JhdGUgPSBzYW1wbGluZ1JhdGU7CiAgICAgICAgIGlmIChwRm9ybWF0KSAqcEZvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgaWYgKHBDaGFubmVscykgKnBDaGFubmVscyA9IGNoYW5uZWxzOwogICAgICAgICBpZiAocExhdGVuY3lNcykgKnBMYXRlbmN5TXMgPSB0aHJlYWQtPmxhdGVuY3koKTsKIAotICAgICAgICByZXR1cm4gbU5leHRUaHJlYWRJZDsKKyAgICAgICAgLy8gbm90aWZ5IGNsaWVudCBwcm9jZXNzZXMgb2YgdGhlIG5ldyBvdXRwdXQgY3JlYXRpb24KKyAgICAgICAgdGhyZWFkLT5hdWRpb0NvbmZpZ0NoYW5nZWRfbChBdWRpb1N5c3RlbTo6T1VUUFVUX09QRU5FRCk7CisgICAgICAgIHJldHVybiBpZDsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTM4MTIsMTEgKzQyMjgsMTMgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0KLSAgICBEdXBsaWNhdGluZ1RocmVhZCAqdGhyZWFkID0gbmV3IER1cGxpY2F0aW5nVGhyZWFkKHRoaXMsIHRocmVhZDEsICsrbU5leHRUaHJlYWRJZCk7CisgICAgaW50IGlkID0gbmV4dFVuaXF1ZUlkKCk7CisgICAgRHVwbGljYXRpbmdUaHJlYWQgKnRocmVhZCA9IG5ldyBEdXBsaWNhdGluZ1RocmVhZCh0aGlzLCB0aHJlYWQxLCBpZCk7CiAgICAgdGhyZWFkLT5hZGRPdXRwdXRUcmFjayh0aHJlYWQyKTsKLSAgICBtUGxheWJhY2tUaHJlYWRzLmFkZChtTmV4dFRocmVhZElkLCB0aHJlYWQpOwotICAgIHJldHVybiBtTmV4dFRocmVhZElkOworICAgIG1QbGF5YmFja1RocmVhZHMuYWRkKGlkLCB0aHJlYWQpOworICAgIC8vIG5vdGlmeSBjbGllbnQgcHJvY2Vzc2VzIG9mIHRoZSBuZXcgb3V0cHV0IGNyZWF0aW9uCisgICAgdGhyZWFkLT5hdWRpb0NvbmZpZ0NoYW5nZWRfbChBdWRpb1N5c3RlbTo6T1VUUFVUX09QRU5FRCk7CisgICAgcmV0dXJuIGlkOwogfQogCiBzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OmNsb3NlT3V0cHV0KGludCBvdXRwdXQpCkBAIC0zOTM1LDE3ICs0MzUzLDIwIEBACiAgICAgfQogCiAgICAgaWYgKGlucHV0ICE9IDApIHsKKyAgICAgICAgaW50IGlkID0gbmV4dFVuaXF1ZUlkKCk7CiAgICAgICAgICAvLyBTdGFydCByZWNvcmQgdGhyZWFkCi0gICAgICAgIHRocmVhZCA9IG5ldyBSZWNvcmRUaHJlYWQodGhpcywgaW5wdXQsIHJlcVNhbXBsaW5nUmF0ZSwgcmVxQ2hhbm5lbHMsICsrbU5leHRUaHJlYWRJZCk7Ci0gICAgICAgIG1SZWNvcmRUaHJlYWRzLmFkZChtTmV4dFRocmVhZElkLCB0aHJlYWQpOwotICAgICAgICBMT0dWKCJvcGVuSW5wdXQoKSBjcmVhdGVkIHJlY29yZCB0aHJlYWQ6IElEICVkIHRocmVhZCAlcCIsIG1OZXh0VGhyZWFkSWQsIHRocmVhZCk7CisgICAgICAgIHRocmVhZCA9IG5ldyBSZWNvcmRUaHJlYWQodGhpcywgaW5wdXQsIHJlcVNhbXBsaW5nUmF0ZSwgcmVxQ2hhbm5lbHMsIGlkKTsKKyAgICAgICAgbVJlY29yZFRocmVhZHMuYWRkKGlkLCB0aHJlYWQpOworICAgICAgICBMT0dWKCJvcGVuSW5wdXQoKSBjcmVhdGVkIHJlY29yZCB0aHJlYWQ6IElEICVkIHRocmVhZCAlcCIsIGlkLCB0aHJlYWQpOwogICAgICAgICBpZiAocFNhbXBsaW5nUmF0ZSkgKnBTYW1wbGluZ1JhdGUgPSByZXFTYW1wbGluZ1JhdGU7CiAgICAgICAgIGlmIChwRm9ybWF0KSAqcEZvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgaWYgKHBDaGFubmVscykgKnBDaGFubmVscyA9IHJlcUNoYW5uZWxzOwogCiAgICAgICAgIGlucHV0LT5zdGFuZGJ5KCk7CiAKLSAgICAgICAgcmV0dXJuIG1OZXh0VGhyZWFkSWQ7CisgICAgICAgIC8vIG5vdGlmeSBjbGllbnQgcHJvY2Vzc2VzIG9mIHRoZSBuZXcgaW5wdXQgY3JlYXRpb24KKyAgICAgICAgdGhyZWFkLT5hdWRpb0NvbmZpZ0NoYW5nZWRfbChBdWRpb1N5c3RlbTo6SU5QVVRfT1BFTkVEKTsKKyAgICAgICAgcmV0dXJuIGlkOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMzk4NSwyNiArNDQwNiwyNiBAQAogICAgIH0KIAogICAgIExPR1YoInNldFN0cmVhbU91dHB1dCgpIHN0cmVhbSAlZCB0byBvdXRwdXQgJWQiLCBzdHJlYW0sIG91dHB1dCk7CisgICAgYXVkaW9Db25maWdDaGFuZ2VkX2woQXVkaW9TeXN0ZW06OlNUUkVBTV9DT05GSUdfQ0hBTkdFRCwgb3V0cHV0LCAmc3RyZWFtKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVBsYXliYWNrVGhyZWFkcy5zaXplKCk7IGkrKykgewogICAgICAgICBQbGF5YmFja1RocmVhZCAqdGhyZWFkID0gbVBsYXliYWNrVGhyZWFkcy52YWx1ZUF0KGkpLmdldCgpOwogICAgICAgICBpZiAodGhyZWFkICE9IGRzdFRocmVhZCAmJgogICAgICAgICAgICAgdGhyZWFkLT50eXBlKCkgIT0gUGxheWJhY2tUaHJlYWQ6OkRJUkVDVCkgewogICAgICAgICAgICAgTWl4ZXJUaHJlYWQgKnNyY1RocmVhZCA9IChNaXhlclRocmVhZCAqKXRocmVhZDsKLSAgICAgICAgICAgIFNvcnRlZFZlY3RvciA8IHNwPE1peGVyVGhyZWFkOjpUcmFjaz4gPiB0cmFja3M7Ci0gICAgICAgICAgICBTb3J0ZWRWZWN0b3IgPCB3cDxNaXhlclRocmVhZDo6VHJhY2s+ID4gYWN0aXZlVHJhY2tzOwotICAgICAgICAgICAgc3JjVGhyZWFkLT5nZXRUcmFja3ModHJhY2tzLCBhY3RpdmVUcmFja3MsIHN0cmVhbSk7Ci0gICAgICAgICAgICBpZiAodHJhY2tzLnNpemUoKSkgewotICAgICAgICAgICAgICAgIGRzdFRocmVhZC0+cHV0VHJhY2tzKHRyYWNrcywgYWN0aXZlVHJhY2tzKTsKKyAgICAgICAgICAgIHNyY1RocmVhZC0+aW52YWxpZGF0ZVRyYWNrcyhzdHJlYW0pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQotCi0gICAgZHN0VGhyZWFkLT5zZW5kQ29uZmlnRXZlbnQoQXVkaW9TeXN0ZW06OlNUUkVBTV9DT05GSUdfQ0hBTkdFRCwgc3RyZWFtKTsKIAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAorCitpbnQgQXVkaW9GbGluZ2VyOjpuZXdBdWRpb1Nlc3Npb25JZCgpCit7CisgICAgcmV0dXJuIG5leHRVbmlxdWVJZCgpOworfQorCiAvLyBjaGVja1BsYXliYWNrVGhyZWFkX2woKSBtdXN0IGJlIGNhbGxlZCB3aXRoIEF1ZGlvRmxpbmdlcjo6bUxvY2sgaGVsZAogQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZCAqQXVkaW9GbGluZ2VyOjpjaGVja1BsYXliYWNrVGhyZWFkX2woaW50IG91dHB1dCkgY29uc3QKIHsKQEAgLTQwMzcsNiArNDQ1OCwxNTY0IEBACiAgICAgcmV0dXJuIHRocmVhZDsKIH0KIAoraW50IEF1ZGlvRmxpbmdlcjo6bmV4dFVuaXF1ZUlkKCkKK3sKKyAgICByZXR1cm4gYW5kcm9pZF9hdG9taWNfaW5jKCZtTmV4dFVuaXF1ZUlkKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIEVmZmVjdCBtYW5hZ2VtZW50CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBFZmZlY3RMb2FkTGlicmFyeShsaWJQYXRoLCBoYW5kbGUpOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OnVubG9hZEVmZmVjdExpYnJhcnkoaW50IGhhbmRsZSkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBFZmZlY3RVbmxvYWRMaWJyYXJ5KGhhbmRsZSk7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6cXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpudW1FZmZlY3RzKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgcmV0dXJuIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cyhudW1FZmZlY3RzKTsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpxdWVyeUVmZmVjdCh1aW50MzJfdCBpbmRleCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcikKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBFZmZlY3RRdWVyeUVmZmVjdChpbmRleCwgZGVzY3JpcHRvcik7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6Z2V0RWZmZWN0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICpwVXVpZCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcikKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBFZmZlY3RHZXREZXNjcmlwdG9yKHBVdWlkLCBkZXNjcmlwdG9yKTsKK30KKworc3A8SUVmZmVjdD4gQXVkaW9GbGluZ2VyOjpjcmVhdGVFZmZlY3QocGlkX3QgcGlkLAorICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzYywKKyAgICAgICAgY29uc3Qgc3A8SUVmZmVjdENsaWVudD4mIGVmZmVjdENsaWVudCwKKyAgICAgICAgaW50MzJfdCBwcmlvcml0eSwKKyAgICAgICAgaW50IG91dHB1dCwKKyAgICAgICAgaW50IHNlc3Npb25JZCwKKyAgICAgICAgc3RhdHVzX3QgKnN0YXR1cywKKyAgICAgICAgaW50ICppZCwKKyAgICAgICAgaW50ICplbmFibGVkKQoreworICAgIHN0YXR1c190IGxTdGF0dXMgPSBOT19FUlJPUjsKKyAgICBzcDxFZmZlY3RIYW5kbGU+IGhhbmRsZTsKKyAgICBlZmZlY3RfaW50ZXJmYWNlX3QgaXRmZTsKKyAgICBlZmZlY3RfZGVzY3JpcHRvcl90IGRlc2M7CisgICAgc3A8Q2xpZW50PiBjbGllbnQ7CisgICAgd3A8Q2xpZW50PiB3Y2xpZW50OworCisgICAgTE9HVigiY3JlYXRlRWZmZWN0IHBpZCAlZCwgY2xpZW50ICVwLCBwcmlvcml0eSAlZCwgc2Vzc2lvbklkICVkLCBvdXRwdXQgJWQiLCBwaWQsIGVmZmVjdENsaWVudC5nZXQoKSwgcHJpb3JpdHksIHNlc3Npb25JZCwgb3V0cHV0KTsKKworICAgIGlmIChwRGVzYyA9PSBOVUxMKSB7CisgICAgICAgIGxTdGF0dXMgPSBCQURfVkFMVUU7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisKKyAgICAgICAgaWYgKCFFZmZlY3RJc051bGxVdWlkKCZwRGVzYy0+dXVpZCkpIHsKKyAgICAgICAgICAgIC8vIGlmIHV1aWQgaXMgc3BlY2lmaWVkLCByZXF1ZXN0IGVmZmVjdCBkZXNjcmlwdG9yCisgICAgICAgICAgICBsU3RhdHVzID0gRWZmZWN0R2V0RGVzY3JpcHRvcigmcERlc2MtPnV1aWQsICZkZXNjKTsKKyAgICAgICAgICAgIGlmIChsU3RhdHVzIDwgMCkgeworICAgICAgICAgICAgICAgIExPR1coImNyZWF0ZUVmZmVjdCgpIGVycm9yICVkIGZyb20gRWZmZWN0R2V0RGVzY3JpcHRvciIsIGxTdGF0dXMpOworICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGlmIHV1aWQgaXMgbm90IHNwZWNpZmllZCwgbG9vayBmb3IgYW4gYXZhaWxhYmxlIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAvLyBvZiB0aGUgcmVxdWlyZWQgdHlwZSBpbiBlZmZlY3QgZmFjdG9yeQorICAgICAgICAgICAgaWYgKEVmZmVjdElzTnVsbFV1aWQoJnBEZXNjLT50eXBlKSkgeworICAgICAgICAgICAgICAgIExPR1coImNyZWF0ZUVmZmVjdCgpIG5vIGVmZmVjdCB0eXBlIik7CisgICAgICAgICAgICAgICAgbFN0YXR1cyA9IEJBRF9WQUxVRTsKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1aW50MzJfdCBudW1FZmZlY3RzID0gMDsKKyAgICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgZDsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKworICAgICAgICAgICAgbFN0YXR1cyA9IEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygmbnVtRWZmZWN0cyk7CisgICAgICAgICAgICBpZiAobFN0YXR1cyA8IDApIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJjcmVhdGVFZmZlY3QoKSBlcnJvciAlZCBmcm9tIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cyIsIGxTdGF0dXMpOworICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBudW1FZmZlY3RzOyBpKyspIHsKKyAgICAgICAgICAgICAgICBsU3RhdHVzID0gRWZmZWN0UXVlcnlFZmZlY3QoaSwgJmRlc2MpOworICAgICAgICAgICAgICAgIGlmIChsU3RhdHVzIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBMT0dXKCJjcmVhdGVFZmZlY3QoKSBlcnJvciAlZCBmcm9tIEVmZmVjdFF1ZXJ5RWZmZWN0IiwgbFN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKCZkZXNjLnR5cGUsICZwRGVzYy0+dHlwZSwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIG1hdGNoaW5nIHR5cGUgZm91bmQgc2F2ZSBlZmZlY3QgZGVzY3JpcHRvci4gSWYgdGhlIHNlc3Npb24gaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gMCBhbmQgdGhlIGVmZmVjdCBpcyBub3QgYXV4aWxpYXJ5LCBjb250aW51ZSBlbnVtZXJhdGlvbiBpbiBjYXNlCisgICAgICAgICAgICAgICAgICAgIC8vIGFuIGF1eGlsaWFyeSB2ZXJzaW9uIG9mIHRoaXMgZWZmZWN0IHR5cGUgaXMgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZkLCAmZGVzYywgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlc3Npb25JZCAhPSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlc2MuZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfQVVYSUxJQVJZKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZm91bmQpIHsKKyAgICAgICAgICAgICAgICBsU3RhdHVzID0gQkFEX1ZBTFVFOworICAgICAgICAgICAgICAgIExPR1coImNyZWF0ZUVmZmVjdCgpIGVmZmVjdCBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBGb3Igc2FtZSBlZmZlY3QgdHlwZSwgY2hvc2UgYXV4aWxpYXJ5IHZlcnNpb24gb3ZlciBpbnNlcnQgdmVyc2lvbiBpZgorICAgICAgICAgICAgLy8gY29ubmVjdCB0byBvdXRwdXQgbWl4IChDb21wbGlhbmNlIHRvIE9wZW5TTCBFUykKKyAgICAgICAgICAgIGlmIChzZXNzaW9uSWQgPT0gMCAmJgorICAgICAgICAgICAgICAgICAgICAoZC5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSykgIT0gRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkpIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkoJmRlc2MsICZkLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gRG8gbm90IGFsbG93IGF1eGlsaWFyeSBlZmZlY3RzIG9uIGEgc2Vzc2lvbiBkaWZmZXJlbnQgZnJvbSAwIChvdXRwdXQgbWl4KQorICAgICAgICBpZiAoc2Vzc2lvbklkICE9IDAgJiYKKyAgICAgICAgICAgICAoZGVzYy5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSykgPT0gRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkpIHsKKyAgICAgICAgICAgIGxTdGF0dXMgPSBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNlc3Npb24gLTEgaXMgcmVzZXJ2ZWQgZm9yIG91dHB1dCBzdGFnZSBlZmZlY3RzIHRoYXQgY2FuIG9ubHkgYmUgY3JlYXRlZAorICAgICAgICAvLyBieSBhdWRpbyBwb2xpY3kgbWFuYWdlciAocnVubmluZyBpbiBzYW1lIHByb2Nlc3MpCisgICAgICAgIGlmIChzZXNzaW9uSWQgPT0gLTEgJiYgZ2V0cGlkKCkgIT0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Z2V0Q2FsbGluZ1BpZCgpKSB7CisgICAgICAgICAgICBsU3RhdHVzID0gSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICAvLyByZXR1cm4gZWZmZWN0IGRlc2NyaXB0b3IKKyAgICAgICAgbWVtY3B5KHBEZXNjLCAmZGVzYywgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKworICAgICAgICAvLyBJZiBvdXRwdXQgaXMgbm90IHNwZWNpZmllZCB0cnkgdG8gZmluZCBhIG1hdGNoaW5nIGF1ZGlvIHNlc3Npb24gSUQgaW4gb25lIG9mIHRoZQorICAgICAgICAvLyBvdXRwdXQgdGhyZWFkcy4KKyAgICAgICAgLy8gVE9ETzogYWxsb3cgYXR0YWNobWVudCBvZiBlZmZlY3QgdG8gaW5wdXRzCisgICAgICAgIGlmIChvdXRwdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKHNlc3Npb25JZCA8PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBmaXJzdCBvdXRwdXQKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBkZWZpbmUgY3JpdGVyaWEgdG8gY2hvb3NlIG91dHB1dCB3aGVuIG5vdCBzcGVjaWZpZWQuIE9yCisgICAgICAgICAgICAgICAgLy8gcmVjZWl2ZSBvdXRwdXQgZnJvbSBhdWRpbyBwb2xpY3kgbWFuYWdlcgorICAgICAgICAgICAgICAgIGlmIChtUGxheWJhY2tUaHJlYWRzLnNpemUoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG1QbGF5YmFja1RocmVhZHMua2V5QXQoMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgLy8gbG9vayBmb3IgdGhlIHRocmVhZCB3aGVyZSB0aGUgc3BlY2lmaWVkIGF1ZGlvIHNlc3Npb24gaXMgcHJlc2VudAorICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVBsYXliYWNrVGhyZWFkcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAobVBsYXliYWNrVGhyZWFkcy52YWx1ZUF0KGkpLT5oYXNBdWRpb1Nlc3Npb24oc2Vzc2lvbklkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gbVBsYXliYWNrVGhyZWFkcy5rZXlBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFBsYXliYWNrVGhyZWFkICp0aHJlYWQgPSBjaGVja1BsYXliYWNrVGhyZWFkX2wob3V0cHV0KTsKKyAgICAgICAgaWYgKHRocmVhZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dFKCJ1bmtub3duIG91dHB1dCB0aHJlYWQiKTsKKyAgICAgICAgICAgIGxTdGF0dXMgPSBCQURfVkFMVUU7CisgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICB3Y2xpZW50ID0gbUNsaWVudHMudmFsdWVGb3IocGlkKTsKKworICAgICAgICBpZiAod2NsaWVudCAhPSBOVUxMKSB7CisgICAgICAgICAgICBjbGllbnQgPSB3Y2xpZW50LnByb21vdGUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNsaWVudCA9IG5ldyBDbGllbnQodGhpcywgcGlkKTsKKyAgICAgICAgICAgIG1DbGllbnRzLmFkZChwaWQsIGNsaWVudCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBjcmVhdGUgZWZmZWN0IG9uIHNlbGVjdGVkIG91dHB1dCB0cmhlYWQKKyAgICAgICAgaGFuZGxlID0gdGhyZWFkLT5jcmVhdGVFZmZlY3RfbChjbGllbnQsIGVmZmVjdENsaWVudCwgcHJpb3JpdHksIHNlc3Npb25JZCwgJmRlc2MsIGVuYWJsZWQsICZsU3RhdHVzKTsKKyAgICAgICAgaWYgKGhhbmRsZSAhPSAwICYmIGlkICE9IE5VTEwpIHsKKyAgICAgICAgICAgICppZCA9IGhhbmRsZS0+aWQoKTsKKyAgICAgICAgfQorICAgIH0KKworRXhpdDoKKyAgICBpZihzdGF0dXMpIHsKKyAgICAgICAgKnN0YXR1cyA9IGxTdGF0dXM7CisgICAgfQorICAgIHJldHVybiBoYW5kbGU7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6cmVnaXN0ZXJFZmZlY3RSZXNvdXJjZV9sKGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MpIHsKKyAgICBpZiAobVRvdGFsRWZmZWN0c0NwdUxvYWQgKyBkZXNjLT5jcHVMb2FkID4gTUFYX0VGRkVDVFNfQ1BVX0xPQUQpIHsKKyAgICAgICAgTE9HVygicmVnaXN0ZXJFZmZlY3RSZXNvdXJjZSgpIENQVSBMb2FkIGxpbWl0IGV4Y2VlZGVkIGZvciBGeCAlcywgQ1BVICVmIE1JUFMiLAorICAgICAgICAgICAgICAgIGRlc2MtPm5hbWUsIChmbG9hdClkZXNjLT5jcHVMb2FkLzEwKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKyAgICBpZiAobVRvdGFsRWZmZWN0c01lbW9yeSArIGRlc2MtPm1lbW9yeVVzYWdlID4gTUFYX0VGRkVDVFNfTUVNT1JZKSB7CisgICAgICAgIExPR1coInJlZ2lzdGVyRWZmZWN0UmVzb3VyY2UoKSBtZW1vcnkgbGltaXQgZXhjZWVkZWQgZm9yIEZ4ICVzLCBNZW1vcnkgJWQgS0IiLAorICAgICAgICAgICAgICAgIGRlc2MtPm5hbWUsIGRlc2MtPm1lbW9yeVVzYWdlKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKyAgICBtVG90YWxFZmZlY3RzQ3B1TG9hZCArPSBkZXNjLT5jcHVMb2FkOworICAgIG1Ub3RhbEVmZmVjdHNNZW1vcnkgKz0gZGVzYy0+bWVtb3J5VXNhZ2U7CisgICAgTE9HVigicmVnaXN0ZXJFZmZlY3RSZXNvdXJjZV9sKCkgZWZmZWN0ICVzLCBDUFUgJWQsIG1lbW9yeSAlZCIsCisgICAgICAgICAgICBkZXNjLT5uYW1lLCBkZXNjLT5jcHVMb2FkLCBkZXNjLT5tZW1vcnlVc2FnZSk7CisgICAgTE9HVigiICB0b3RhbCBDUFUgJWQsIHRvdGFsIG1lbW9yeSAlZCIsIG1Ub3RhbEVmZmVjdHNDcHVMb2FkLCBtVG90YWxFZmZlY3RzTWVtb3J5KTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3ZvaWQgQXVkaW9GbGluZ2VyOjp1bnJlZ2lzdGVyRWZmZWN0UmVzb3VyY2VfbChlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjKSB7CisgICAgbVRvdGFsRWZmZWN0c0NwdUxvYWQgLT0gZGVzYy0+Y3B1TG9hZDsKKyAgICBtVG90YWxFZmZlY3RzTWVtb3J5IC09IGRlc2MtPm1lbW9yeVVzYWdlOworICAgIExPR1YoInVucmVnaXN0ZXJFZmZlY3RSZXNvdXJjZV9sKCkgZWZmZWN0ICVzLCBDUFUgJWQsIG1lbW9yeSAlZCIsCisgICAgICAgICAgICBkZXNjLT5uYW1lLCBkZXNjLT5jcHVMb2FkLCBkZXNjLT5tZW1vcnlVc2FnZSk7CisgICAgTE9HVigiICB0b3RhbCBDUFUgJWQsIHRvdGFsIG1lbW9yeSAlZCIsIG1Ub3RhbEVmZmVjdHNDcHVMb2FkLCBtVG90YWxFZmZlY3RzTWVtb3J5KTsKK30KKworLy8gUGxheWJhY2tUaHJlYWQ6OmNyZWF0ZUVmZmVjdF9sKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBBdWRpb0ZsaW5nZXI6Om1Mb2NrIGhlbGQKK3NwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlPiBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpjcmVhdGVFZmZlY3RfbCgKKyAgICAgICAgY29uc3Qgc3A8QXVkaW9GbGluZ2VyOjpDbGllbnQ+JiBjbGllbnQsCisgICAgICAgIGNvbnN0IHNwPElFZmZlY3RDbGllbnQ+JiBlZmZlY3RDbGllbnQsCisgICAgICAgIGludDMyX3QgcHJpb3JpdHksCisgICAgICAgIGludCBzZXNzaW9uSWQsCisgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MsCisgICAgICAgIGludCAqZW5hYmxlZCwKKyAgICAgICAgc3RhdHVzX3QgKnN0YXR1cworICAgICAgICApCit7CisgICAgc3A8RWZmZWN0TW9kdWxlPiBlZmZlY3Q7CisgICAgc3A8RWZmZWN0SGFuZGxlPiBoYW5kbGU7CisgICAgc3RhdHVzX3QgbFN0YXR1czsKKyAgICBzcDxUcmFjaz4gdHJhY2s7CisgICAgc3A8RWZmZWN0Q2hhaW4+IGNoYWluOworICAgIGJvb2wgZWZmZWN0Q3JlYXRlZCA9IGZhbHNlOworICAgIGJvb2wgZWZmZWN0UmVnaXN0ZXJlZCA9IGZhbHNlOworCisgICAgaWYgKG1PdXRwdXQgPT0gMCkgeworICAgICAgICBMT0dXKCJjcmVhdGVFZmZlY3RfbCgpIEF1ZGlvIGRyaXZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIGxTdGF0dXMgPSBOT19JTklUOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLy8gRG8gbm90IGFsbG93IGF1eGlsaWFyeSBlZmZlY3Qgb24gc2Vzc2lvbiBvdGhlciB0aGFuIDAKKyAgICBpZiAoKGRlc2MtPmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSAmJgorICAgICAgICBzZXNzaW9uSWQgIT0gMCkgeworICAgICAgICBMT0dXKCJjcmVhdGVFZmZlY3RfbCgpIENhbm5vdCBhZGQgYXV4aWxpYXJ5IGVmZmVjdCAlcyB0byBzZXNzaW9uICVkIiwgZGVzYy0+bmFtZSwgc2Vzc2lvbklkKTsKKyAgICAgICAgbFN0YXR1cyA9IEJBRF9WQUxVRTsKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8vIERvIG5vdCBhbGxvdyBlZmZlY3RzIHdpdGggc2Vzc2lvbiBJRCAwIG9uIGRpcmVjdCBvdXRwdXQgb3IgZHVwbGljYXRpbmcgdGhyZWFkcworICAgIC8vIFRPRE86IGFkZCBydWxlIGZvciBodyBhY2NlbGVyYXRlZCBlZmZlY3RzIG9uIGRpcmVjdCBvdXRwdXRzIHdpdGggbm9uIFBDTSBmb3JtYXQKKyAgICBpZiAoc2Vzc2lvbklkID09IDAgJiYgbVR5cGUgIT0gTUlYRVIpIHsKKyAgICAgICAgTE9HVygiY3JlYXRlRWZmZWN0X2woKSBDYW5ub3QgYWRkIGF1eGlsaWFyeSBlZmZlY3QgJXMgdG8gc2Vzc2lvbiAlZCIsIGRlc2MtPm5hbWUsIHNlc3Npb25JZCk7CisgICAgICAgIGxTdGF0dXMgPSBCQURfVkFMVUU7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBMT0dWKCJjcmVhdGVFZmZlY3RfbCgpIHRocmVhZCAlcCBlZmZlY3QgJXMgb24gc2Vzc2lvbiAlZCIsIHRoaXMsIGRlc2MtPm5hbWUsIHNlc3Npb25JZCk7CisKKyAgICB7IC8vIHNjb3BlIGZvciBtTG9jaworICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworCisgICAgICAgIC8vIGNoZWNrIGZvciBleGlzdGluZyBlZmZlY3QgY2hhaW4gd2l0aCB0aGUgcmVxdWVzdGVkIGF1ZGlvIHNlc3Npb24KKyAgICAgICAgY2hhaW4gPSBnZXRFZmZlY3RDaGFpbl9sKHNlc3Npb25JZCk7CisgICAgICAgIGlmIChjaGFpbiA9PSAwKSB7CisgICAgICAgICAgICAvLyBjcmVhdGUgYSBuZXcgY2hhaW4gZm9yIHRoaXMgc2Vzc2lvbgorICAgICAgICAgICAgTE9HVigiY3JlYXRlRWZmZWN0X2woKSBuZXcgZWZmZWN0IGNoYWluIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lvbklkKTsKKyAgICAgICAgICAgIGNoYWluID0gbmV3IEVmZmVjdENoYWluKHRoaXMsIHNlc3Npb25JZCk7CisgICAgICAgICAgICBhZGRFZmZlY3RDaGFpbl9sKGNoYWluKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNoYWluLT5nZXRFZmZlY3RGcm9tRGVzYyhkZXNjKTsKKyAgICAgICAgfQorCisgICAgICAgIExPR1YoImNyZWF0ZUVmZmVjdF9sKCkgZ290IGVmZmVjdCAlcCBvbiBjaGFpbiAlcCIsIGVmZmVjdCA9PSAwID8gMCA6IGVmZmVjdC5nZXQoKSwgY2hhaW4uZ2V0KCkpOworCisgICAgICAgIGlmIChlZmZlY3QgPT0gMCkgeworICAgICAgICAgICAgLy8gQ2hlY2sgQ1BVIGFuZCBtZW1vcnkgdXNhZ2UKKyAgICAgICAgICAgIGxTdGF0dXMgPSBtQXVkaW9GbGluZ2VyLT5yZWdpc3RlckVmZmVjdFJlc291cmNlX2woZGVzYyk7CisgICAgICAgICAgICBpZiAobFN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVmZmVjdFJlZ2lzdGVyZWQgPSB0cnVlOworICAgICAgICAgICAgLy8gY3JlYXRlIGEgbmV3IGVmZmVjdCBtb2R1bGUgaWYgbm9uZSBwcmVzZW50IGluIHRoZSBjaGFpbgorICAgICAgICAgICAgZWZmZWN0ID0gbmV3IEVmZmVjdE1vZHVsZSh0aGlzLCBjaGFpbiwgZGVzYywgbUF1ZGlvRmxpbmdlci0+bmV4dFVuaXF1ZUlkKCksIHNlc3Npb25JZCk7CisgICAgICAgICAgICBsU3RhdHVzID0gZWZmZWN0LT5zdGF0dXMoKTsKKyAgICAgICAgICAgIGlmIChsU3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbFN0YXR1cyA9IGNoYWluLT5hZGRFZmZlY3QoZWZmZWN0KTsKKyAgICAgICAgICAgIGlmIChsU3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWZmZWN0Q3JlYXRlZCA9IHRydWU7CisKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0RGV2aWNlKG1EZXZpY2UpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRNb2RlKG1BdWRpb0ZsaW5nZXItPmdldE1vZGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gY3JlYXRlIGVmZmVjdCBoYW5kbGUgYW5kIGNvbm5lY3QgaXQgdG8gZWZmZWN0IG1vZHVsZQorICAgICAgICBoYW5kbGUgPSBuZXcgRWZmZWN0SGFuZGxlKGVmZmVjdCwgY2xpZW50LCBlZmZlY3RDbGllbnQsIHByaW9yaXR5KTsKKyAgICAgICAgbFN0YXR1cyA9IGVmZmVjdC0+YWRkSGFuZGxlKGhhbmRsZSk7CisgICAgICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgICAgICAqZW5hYmxlZCA9IChpbnQpZWZmZWN0LT5pc0VuYWJsZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworRXhpdDoKKyAgICBpZiAobFN0YXR1cyAhPSBOT19FUlJPUiAmJiBsU3RhdHVzICE9IEFMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgIGlmIChlZmZlY3RDcmVhdGVkKSB7CisgICAgICAgICAgICBpZiAoY2hhaW4tPnJlbW92ZUVmZmVjdChlZmZlY3QpID09IDApIHsKKyAgICAgICAgICAgICAgICByZW1vdmVFZmZlY3RDaGFpbl9sKGNoYWluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZWZmZWN0UmVnaXN0ZXJlZCkgeworICAgICAgICAgICAgbUF1ZGlvRmxpbmdlci0+dW5yZWdpc3RlckVmZmVjdFJlc291cmNlX2woZGVzYyk7CisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlLmNsZWFyKCk7CisgICAgfQorCisgICAgaWYoc3RhdHVzKSB7CisgICAgICAgICpzdGF0dXMgPSBsU3RhdHVzOworICAgIH0KKyAgICByZXR1cm4gaGFuZGxlOworfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmRpc2Nvbm5lY3RFZmZlY3QoY29uc3Qgc3A8IEVmZmVjdE1vZHVsZT4mIGVmZmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cDxFZmZlY3RIYW5kbGU+JiBoYW5kbGUpIHsKKyAgICBlZmZlY3RfZGVzY3JpcHRvcl90IGRlc2MgPSBlZmZlY3QtPmRlc2MoKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIC8vIGRlbGV0ZSB0aGUgZWZmZWN0IG1vZHVsZSBpZiByZW1vdmluZyBsYXN0IGhhbmRsZSBvbiBpdAorICAgIGlmIChlZmZlY3QtPnJlbW92ZUhhbmRsZShoYW5kbGUpID09IDApIHsKKyAgICAgICAgaWYgKChkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgZGV0YWNoQXV4RWZmZWN0X2woZWZmZWN0LT5pZCgpKTsKKyAgICAgICAgfQorICAgICAgICBzcDxFZmZlY3RDaGFpbj4gY2hhaW4gPSBlZmZlY3QtPmNoYWluKCkucHJvbW90ZSgpOworICAgICAgICBpZiAoY2hhaW4gIT0gMCkgeworICAgICAgICAgICAgLy8gcmVtb3ZlIGVmZmVjdCBjaGFpbiBpZiByZW1vdmUgbGFzdCBlZmZlY3QKKyAgICAgICAgICAgIGlmIChjaGFpbi0+cmVtb3ZlRWZmZWN0KGVmZmVjdCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHJlbW92ZUVmZmVjdENoYWluX2woY2hhaW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1Mb2NrLnVubG9jaygpOworICAgICAgICBtQXVkaW9GbGluZ2VyLT5tTG9jay5sb2NrKCk7CisgICAgICAgIG1BdWRpb0ZsaW5nZXItPnVucmVnaXN0ZXJFZmZlY3RSZXNvdXJjZV9sKCZkZXNjKTsKKyAgICAgICAgbUF1ZGlvRmxpbmdlci0+bUxvY2sudW5sb2NrKCk7CisgICAgfQorfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjphZGRFZmZlY3RDaGFpbl9sKGNvbnN0IHNwPEVmZmVjdENoYWluPiYgY2hhaW4pCit7CisgICAgaW50IHNlc3Npb24gPSBjaGFpbi0+c2Vzc2lvbklkKCk7CisgICAgaW50MTZfdCAqYnVmZmVyID0gbU1peEJ1ZmZlcjsKKyAgICBib29sIG93bnNCdWZmZXIgPSBmYWxzZTsKKworICAgIExPR1YoImFkZEVmZmVjdENoYWluX2woKSAlcCBvbiB0aHJlYWQgJXAgZm9yIHNlc3Npb24gJWQiLCBjaGFpbi5nZXQoKSwgdGhpcywgc2Vzc2lvbik7CisgICAgaWYgKHNlc3Npb24gPiAwKSB7CisgICAgICAgIC8vIE9ubHkgb25lIGVmZmVjdCBjaGFpbiBjYW4gYmUgcHJlc2VudCBpbiBkaXJlY3Qgb3V0cHV0IHRocmVhZCBhbmQgaXQgdXNlcworICAgICAgICAvLyB0aGUgbWl4IGJ1ZmZlciBhcyBpbnB1dAorICAgICAgICBpZiAobVR5cGUgIT0gRElSRUNUKSB7CisgICAgICAgICAgICBzaXplX3QgbnVtU2FtcGxlcyA9IG1GcmFtZUNvdW50ICogbUNoYW5uZWxDb3VudDsKKyAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBpbnQxNl90W251bVNhbXBsZXNdOworICAgICAgICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgbnVtU2FtcGxlcyAqIHNpemVvZihpbnQxNl90KSk7CisgICAgICAgICAgICBMT0dWKCJhZGRFZmZlY3RDaGFpbl9sKCkgY3JlYXRpbmcgbmV3IGlucHV0IGJ1ZmZlciAlcCBzZXNzaW9uICVkIiwgYnVmZmVyLCBzZXNzaW9uKTsKKyAgICAgICAgICAgIG93bnNCdWZmZXIgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXR0YWNoIGFsbCB0cmFja3Mgd2l0aCBzYW1lIHNlc3Npb24gSUQgdG8gdGhpcyBjaGFpbi4KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBzcDxUcmFjaz4gdHJhY2sgPSBtVHJhY2tzW2ldOworICAgICAgICAgICAgaWYgKHNlc3Npb24gPT0gdHJhY2stPnNlc3Npb25JZCgpKSB7CisgICAgICAgICAgICAgICAgTE9HVigiYWRkRWZmZWN0Q2hhaW5fbCgpIHRyYWNrLT5zZXRNYWluQnVmZmVyIHRyYWNrICVwIGJ1ZmZlciAlcCIsIHRyYWNrLmdldCgpLCBidWZmZXIpOworICAgICAgICAgICAgICAgIHRyYWNrLT5zZXRNYWluQnVmZmVyKGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBpbmRpY2F0ZSBhbGwgYWN0aXZlIHRyYWNrcyBpbiB0aGUgY2hhaW4KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDAgOyBpIDwgbUFjdGl2ZVRyYWNrcy5zaXplKCkgOyArK2kpIHsKKyAgICAgICAgICAgIHNwPFRyYWNrPiB0cmFjayA9IG1BY3RpdmVUcmFja3NbaV0ucHJvbW90ZSgpOworICAgICAgICAgICAgaWYgKHRyYWNrID09IDApIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHNlc3Npb24gPT0gdHJhY2stPnNlc3Npb25JZCgpKSB7CisgICAgICAgICAgICAgICAgTE9HVigiYWRkRWZmZWN0Q2hhaW5fbCgpIGFjdGl2YXRpbmcgdHJhY2sgJXAgb24gc2Vzc2lvbiAlZCIsIHRyYWNrLmdldCgpLCBzZXNzaW9uKTsKKyAgICAgICAgICAgICAgICBjaGFpbi0+c3RhcnRUcmFjaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgY2hhaW4tPnNldEluQnVmZmVyKGJ1ZmZlciwgb3duc0J1ZmZlcik7CisgICAgY2hhaW4tPnNldE91dEJ1ZmZlcihtTWl4QnVmZmVyKTsKKyAgICAvLyBFZmZlY3QgY2hhaW4gZm9yIHNlc3Npb24gLTEgaXMgaW5zZXJ0ZWQgYXQgZW5kIG9mIGVmZmVjdCBjaGFpbnMgbGlzdAorICAgIC8vIGluIG9yZGVyIHRvIGJlIHByb2Nlc3NlZCBsYXN0IGFzIGl0IGNvbnRhaW5zIG91dHB1dCBzdGFnZSBlZmZlY3RzCisgICAgLy8gRWZmZWN0IGNoYWluIGZvciBzZXNzaW9uIDAgaXMgaW5zZXJ0ZWQgYmVmb3JlIHNlc3Npb24gLTEgdG8gYmUgcHJvY2Vzc2VkCisgICAgLy8gYWZ0ZXIgdHJhY2sgc3BlY2lmaWMgZWZmZWN0cyBhbmQgYmVmb3JlIG91dHB1dCBzdGFnZQorICAgIC8vIEVmZmVjdCBjaGFpbiBmb3Igc2Vzc2lvbiBvdGhlciB0aGFuIDAgaXMgaW5zZXJ0ZWQgYXQgYmVnaW5uaW5nIG9mIGVmZmVjdAorICAgIC8vIGNoYWlucyBsaXN0IHRvIGJlIHByb2Nlc3NlZCBiZWZvcmUgb3V0cHV0IG1peCBlZmZlY3RzLiBSZWxhdGl2ZSBvcmRlciBiZXR3ZWVuCisgICAgLy8gc2Vzc2lvbnMgb3RoZXIgdGhhbiAwIGlzIG5vdCBpbXBvcnRhbnQKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RDaGFpbnMuc2l6ZSgpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChtRWZmZWN0Q2hhaW5zW2ldLT5zZXNzaW9uSWQoKSA8IHNlc3Npb24pIGJyZWFrOworICAgIH0KKyAgICBtRWZmZWN0Q2hhaW5zLmluc2VydEF0KGNoYWluLCBpKTsKKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc2l6ZV90IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OnJlbW92ZUVmZmVjdENoYWluX2woY29uc3Qgc3A8RWZmZWN0Q2hhaW4+JiBjaGFpbikKK3sKKyAgICBpbnQgc2Vzc2lvbiA9IGNoYWluLT5zZXNzaW9uSWQoKTsKKworICAgIExPR1YoInJlbW92ZUVmZmVjdENoYWluX2woKSAlcCBmcm9tIHRocmVhZCAlcCBmb3Igc2Vzc2lvbiAlZCIsIGNoYWluLmdldCgpLCB0aGlzLCBzZXNzaW9uKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUVmZmVjdENoYWlucy5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAoY2hhaW4gPT0gbUVmZmVjdENoYWluc1tpXSkgeworICAgICAgICAgICAgbUVmZmVjdENoYWlucy5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgIC8vIGRldGFjaCBhbGwgdHJhY2tzIHdpdGggc2FtZSBzZXNzaW9uIElEIGZyb20gdGhpcyBjaGFpbgorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgc3A8VHJhY2s+IHRyYWNrID0gbVRyYWNrc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbiA9PSB0cmFjay0+c2Vzc2lvbklkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2stPnNldE1haW5CdWZmZXIobU1peEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtRWZmZWN0Q2hhaW5zLnNpemUoKTsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpsb2NrRWZmZWN0Q2hhaW5zX2woKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUVmZmVjdENoYWlucy5zaXplKCk7IGkrKykgeworICAgICAgICBtRWZmZWN0Q2hhaW5zW2ldLT5sb2NrKCk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OnVubG9ja0VmZmVjdENoYWlucygpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1FZmZlY3RDaGFpbnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgbUVmZmVjdENoYWluc1tpXS0+dW5sb2NrKCk7CisgICAgfQorfQorCitzcDxBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZT4gQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6Z2V0RWZmZWN0X2woaW50IHNlc3Npb25JZCwgaW50IGVmZmVjdElkKQoreworICAgIHNwPEVmZmVjdE1vZHVsZT4gZWZmZWN0OworCisgICAgc3A8RWZmZWN0Q2hhaW4+IGNoYWluID0gZ2V0RWZmZWN0Q2hhaW5fbChzZXNzaW9uSWQpOworICAgIGlmIChjaGFpbiAhPSAwKSB7CisgICAgICAgIGVmZmVjdCA9IGNoYWluLT5nZXRFZmZlY3RGcm9tSWQoZWZmZWN0SWQpOworICAgIH0KKyAgICByZXR1cm4gZWZmZWN0OworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjphdHRhY2hBdXhFZmZlY3QoY29uc3Qgc3A8QXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6VHJhY2s+IHRyYWNrLCBpbnQgRWZmZWN0SWQpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICByZXR1cm4gYXR0YWNoQXV4RWZmZWN0X2wodHJhY2ssIEVmZmVjdElkKTsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6YXR0YWNoQXV4RWZmZWN0X2woY29uc3Qgc3A8QXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6VHJhY2s+IHRyYWNrLCBpbnQgRWZmZWN0SWQpCit7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gTk9fRVJST1I7CisKKyAgICBpZiAoRWZmZWN0SWQgPT0gMCkgeworICAgICAgICB0cmFjay0+c2V0QXV4QnVmZmVyKDAsIE5VTEwpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEF1eGlsaWFyeSBlZmZlY3RzIGFyZSBhbHdheXMgaW4gYXVkaW8gc2Vzc2lvbiAwCisgICAgICAgIHNwPEVmZmVjdE1vZHVsZT4gZWZmZWN0ID0gZ2V0RWZmZWN0X2woMCwgRWZmZWN0SWQpOworICAgICAgICBpZiAoZWZmZWN0ICE9IDApIHsKKyAgICAgICAgICAgIGlmICgoZWZmZWN0LT5kZXNjKCkuZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfQVVYSUxJQVJZKSB7CisgICAgICAgICAgICAgICAgdHJhY2stPnNldEF1eEJ1ZmZlcihFZmZlY3RJZCwgKGludDMyX3QgKillZmZlY3QtPmluQnVmZmVyKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmRldGFjaEF1eEVmZmVjdF9sKGludCBlZmZlY3RJZCkKK3sKKyAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHNwPFRyYWNrPiB0cmFjayA9IG1UcmFja3NbaV07CisgICAgICAgIGlmICh0cmFjay0+YXV4RWZmZWN0SWQoKSA9PSBlZmZlY3RJZCkgeworICAgICAgICAgICAgYXR0YWNoQXV4RWZmZWN0X2wodHJhY2ssIDApOworICAgICAgICB9CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgRWZmZWN0TW9kdWxlIGltcGxlbWVudGF0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyN1bmRlZiBMT0dfVEFHCisjZGVmaW5lIExPR19UQUcgIkF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlIgorCitBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6RWZmZWN0TW9kdWxlKGNvbnN0IHdwPFRocmVhZEJhc2U+JiB3VGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW4+JiBjaGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkKQorICAgIDogbVRocmVhZCh3VGhyZWFkKSwgbUNoYWluKGNoYWluKSwgbUlkKGlkKSwgbVNlc3Npb25JZChzZXNzaW9uSWQpLCBtRWZmZWN0SW50ZXJmYWNlKE5VTEwpLAorICAgICAgbVN0YXR1cyhOT19JTklUKSwgbVN0YXRlKElETEUpCit7CisgICAgTE9HVigiQ29uc3RydWN0b3IgJXAiLCB0aGlzKTsKKyAgICBpbnQgbFN0YXR1czsKKyAgICBzcDxUaHJlYWRCYXNlPiB0aHJlYWQgPSBtVGhyZWFkLnByb21vdGUoKTsKKyAgICBpZiAodGhyZWFkID09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBQbGF5YmFja1RocmVhZCAqcCA9IChQbGF5YmFja1RocmVhZCAqKXRocmVhZC5nZXQoKTsKKworICAgIG1lbWNweSgmbURlc2NyaXB0b3IsIGRlc2MsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisKKyAgICAvLyBjcmVhdGUgZWZmZWN0IGVuZ2luZSBmcm9tIGVmZmVjdCBmYWN0b3J5CisgICAgbVN0YXR1cyA9IEVmZmVjdENyZWF0ZSgmZGVzYy0+dXVpZCwgc2Vzc2lvbklkLCBwLT5pZCgpLCAmbUVmZmVjdEludGVyZmFjZSk7CisKKyAgICBpZiAobVN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxTdGF0dXMgPSBpbml0KCk7CisgICAgaWYgKGxTdGF0dXMgPCAwKSB7CisgICAgICAgIG1TdGF0dXMgPSBsU3RhdHVzOworICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKworICAgIExPR1YoIkNvbnN0cnVjdG9yIHN1Y2Nlc3MgbmFtZSAlcywgSW50ZXJmYWNlICVwIiwgbURlc2NyaXB0b3IubmFtZSwgbUVmZmVjdEludGVyZmFjZSk7CisgICAgcmV0dXJuOworRXJyb3I6CisgICAgRWZmZWN0UmVsZWFzZShtRWZmZWN0SW50ZXJmYWNlKTsKKyAgICBtRWZmZWN0SW50ZXJmYWNlID0gTlVMTDsKKyAgICBMT0dWKCJDb25zdHJ1Y3RvciBFcnJvciAlZCIsIG1TdGF0dXMpOworfQorCitBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6fkVmZmVjdE1vZHVsZSgpCit7CisgICAgTE9HVigiRGVzdHJ1Y3RvciAlcCIsIHRoaXMpOworICAgIGlmIChtRWZmZWN0SW50ZXJmYWNlICE9IE5VTEwpIHsKKyAgICAgICAgLy8gcmVsZWFzZSBlZmZlY3QgZW5naW5lCisgICAgICAgIEVmZmVjdFJlbGVhc2UobUVmZmVjdEludGVyZmFjZSk7CisgICAgfQorfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6YWRkSGFuZGxlKHNwPEVmZmVjdEhhbmRsZT4mIGhhbmRsZSkKK3sKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIC8vIEZpcnN0IGhhbmRsZSBpbiBtSGFuZGxlcyBoYXMgaGlnaGVzdCBwcmlvcml0eSBhbmQgY29udHJvbHMgdGhlIGVmZmVjdCBtb2R1bGUKKyAgICBpbnQgcHJpb3JpdHkgPSBoYW5kbGUtPnByaW9yaXR5KCk7CisgICAgc2l6ZV90IHNpemUgPSBtSGFuZGxlcy5zaXplKCk7CisgICAgc3A8RWZmZWN0SGFuZGxlPiBoOworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaCA9IG1IYW5kbGVzW2ldLnByb21vdGUoKTsKKyAgICAgICAgaWYgKGggPT0gMCkgY29udGludWU7CisgICAgICAgIGlmIChoLT5wcmlvcml0eSgpIDw9IHByaW9yaXR5KSBicmVhazsKKyAgICB9CisgICAgLy8gaWYgaW5zZXJ0ZWQgaW4gZmlyc3QgcGxhY2UsIG1vdmUgZWZmZWN0IGNvbnRyb2wgZnJvbSBwcmV2aW91cyBvd25lciB0byB0aGlzIGhhbmRsZQorICAgIGlmIChpID09IDApIHsKKyAgICAgICAgaWYgKGggIT0gMCkgeworICAgICAgICAgICAgaC0+c2V0Q29udHJvbChmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlLT5zZXRDb250cm9sKHRydWUsIGZhbHNlKTsKKyAgICAgICAgc3RhdHVzID0gTk9fRVJST1I7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RhdHVzID0gQUxSRUFEWV9FWElTVFM7CisgICAgfQorICAgIG1IYW5kbGVzLmluc2VydEF0KGhhbmRsZSwgaSk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc2l6ZV90IEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpyZW1vdmVIYW5kbGUoY29uc3Qgd3A8RWZmZWN0SGFuZGxlPiYgaGFuZGxlKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgc2l6ZV90IHNpemUgPSBtSGFuZGxlcy5zaXplKCk7CisgICAgc2l6ZV90IGk7CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBpZiAobUhhbmRsZXNbaV0gPT0gaGFuZGxlKSBicmVhazsKKyAgICB9CisgICAgaWYgKGkgPT0gc2l6ZSkgeworICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9CisgICAgbUhhbmRsZXMucmVtb3ZlQXQoaSk7CisgICAgc2l6ZSA9IG1IYW5kbGVzLnNpemUoKTsKKyAgICAvLyBpZiByZW1vdmVkIGZyb20gZmlyc3QgcGxhY2UsIG1vdmUgZWZmZWN0IGNvbnRyb2wgZnJvbSB0aGlzIGhhbmRsZSB0byBuZXh0IGluIGxpbmUKKyAgICBpZiAoaSA9PSAwICYmIHNpemUgIT0gMCkgeworICAgICAgICBzcDxFZmZlY3RIYW5kbGU+IGggPSBtSGFuZGxlc1swXS5wcm9tb3RlKCk7CisgICAgICAgIGlmIChoICE9IDApIHsKKyAgICAgICAgICAgIGgtPnNldENvbnRyb2wodHJ1ZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc2l6ZTsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6ZGlzY29ubmVjdChjb25zdCB3cDxFZmZlY3RIYW5kbGU+JiBoYW5kbGUpCit7CisgICAgLy8ga2VlcCBhIHN0cm9uZyByZWZlcmVuY2Ugb24gdGhpcyBFZmZlY3RNb2R1bGUgdG8gYXZvaWQgY2FsbGluZyB0aGUKKyAgICAvLyBkZXN0cnVjdG9yIGJlZm9yZSB3ZSBleGl0CisgICAgc3A8RWZmZWN0TW9kdWxlPiBrZWVwKHRoaXMpOworICAgIHsKKyAgICAgICAgc3A8VGhyZWFkQmFzZT4gdGhyZWFkID0gbVRocmVhZC5wcm9tb3RlKCk7CisgICAgICAgIGlmICh0aHJlYWQgIT0gMCkgeworICAgICAgICAgICAgUGxheWJhY2tUaHJlYWQgKnBsYXliYWNrVGhyZWFkID0gKFBsYXliYWNrVGhyZWFkICopdGhyZWFkLmdldCgpOworICAgICAgICAgICAgcGxheWJhY2tUaHJlYWQtPmRpc2Nvbm5lY3RFZmZlY3Qoa2VlcCwgaGFuZGxlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6cHJvY2VzcygpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKworICAgIGlmIChtRWZmZWN0SW50ZXJmYWNlID09IE5VTEwgfHwgbUNvbmZpZy5pbnB1dENmZy5idWZmZXIucmF3ID09IE5VTEwgfHwgbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnJhdyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobVN0YXRlICE9IElETEUpIHsKKyAgICAgICAgLy8gZG8gMzIgYml0IHRvIDE2IGJpdCBjb252ZXJzaW9uIGZvciBhdXhpbGlhcnkgZWZmZWN0IGlucHV0IGJ1ZmZlcgorICAgICAgICBpZiAoKG1EZXNjcmlwdG9yLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgQXVkaW9NaXhlcjo6ZGl0aGVyQW5kQ2xhbXAobUNvbmZpZy5pbnB1dENmZy5idWZmZXIuczMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLnMzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5mcmFtZUNvdW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRPRE86IGhhbmRsZSBlZmZlY3RzIHdpdGggYnVmZmVyIHByb3ZpZGVyCisgICAgICAgIGlmIChtU3RhdGUgIT0gQUNUSVZFKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1TdGF0ZSkgeworICAgICAgICAgICAgY2FzZSBSRVNFVDoKKyAgICAgICAgICAgICAgICByZXNldCgpOworICAgICAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVJUSU5HOworICAgICAgICAgICAgICAgIC8vIGNsZWFyIGF1eGlsaWFyeSBlZmZlY3QgaW5wdXQgYnVmZmVyIGZvciBuZXh0IGFjY3VtdWxhdGlvbgorICAgICAgICAgICAgICAgIGlmICgobURlc2NyaXB0b3IuZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfQVVYSUxJQVJZKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldChtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5yYXcsIDAsIG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLmZyYW1lQ291bnQqc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSBTVEFSVElORzoKKyAgICAgICAgICAgICAgICBzdGFydCgpOworICAgICAgICAgICAgICAgIG1TdGF0ZSA9IEFDVElWRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1RPUFBJTkc6CisgICAgICAgICAgICAgICAgbVN0YXRlID0gU1RPUFBFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1RPUFBFRDoKKyAgICAgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgICAgICAgICAgbVN0YXRlID0gSURMRTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBkbyB0aGUgYWN0dWFsIHByb2Nlc3NpbmcgaW4gdGhlIGVmZmVjdCBlbmdpbmUKKyAgICAgICAgKCptRWZmZWN0SW50ZXJmYWNlKS0+cHJvY2VzcyhtRWZmZWN0SW50ZXJmYWNlLCAmbUNvbmZpZy5pbnB1dENmZy5idWZmZXIsICZtQ29uZmlnLm91dHB1dENmZy5idWZmZXIpOworCisgICAgICAgIC8vIGNsZWFyIGF1eGlsaWFyeSBlZmZlY3QgaW5wdXQgYnVmZmVyIGZvciBuZXh0IGFjY3VtdWxhdGlvbgorICAgICAgICBpZiAoKG1EZXNjcmlwdG9yLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgbWVtc2V0KG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLnJhdywgMCwgbUNvbmZpZy5pbnB1dENmZy5idWZmZXIuZnJhbWVDb3VudCpzaXplb2YoaW50MzJfdCkpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICgobURlc2NyaXB0b3IuZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfSU5TRVJUICYmCisgICAgICAgICAgICAgICAgbUNvbmZpZy5pbnB1dENmZy5idWZmZXIucmF3ICE9IG1Db25maWcub3V0cHV0Q2ZnLmJ1ZmZlci5yYXcpeworICAgICAgICAvLyBJZiBhbiBpbnNlcnQgZWZmZWN0IGlzIGlkbGUgYW5kIGlucHV0IGJ1ZmZlciBpcyBkaWZmZXJlbnQgZnJvbSBvdXRwdXQgYnVmZmVyLCBjb3B5IGlucHV0IHRvCisgICAgICAgIC8vIG91dHB1dAorICAgICAgICBzcDxFZmZlY3RDaGFpbj4gY2hhaW4gPSBtQ2hhaW4ucHJvbW90ZSgpOworICAgICAgICBpZiAoY2hhaW4gIT0gMCAmJiBjaGFpbi0+YWN0aXZlVHJhY2tzKCkgIT0gMCkgeworICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5mcmFtZUNvdW50ICogc2l6ZW9mKGludDE2X3QpOworICAgICAgICAgICAgaWYgKG1Db25maWcuaW5wdXRDZmcuY2hhbm5lbHMgPT0gQ0hBTk5FTF9TVEVSRU8pIHsKKyAgICAgICAgICAgICAgICBzaXplICo9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1jcHkobUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnJhdywgbUNvbmZpZy5pbnB1dENmZy5idWZmZXIucmF3LCBzaXplKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6cmVzZXQoKQoreworICAgIGlmIChtRWZmZWN0SW50ZXJmYWNlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAoKm1FZmZlY3RJbnRlcmZhY2UpLT5jb21tYW5kKG1FZmZlY3RJbnRlcmZhY2UsIEVGRkVDVF9DTURfUkVTRVQsIDAsIE5VTEwsIDAsIE5VTEwpOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6Y29uZmlndXJlKCkKK3sKKyAgICB1aW50MzJfdCBjaGFubmVsczsKKyAgICBpZiAobUVmZmVjdEludGVyZmFjZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKworICAgIHNwPFRocmVhZEJhc2U+IHRocmVhZCA9IG1UaHJlYWQucHJvbW90ZSgpOworICAgIGlmICh0aHJlYWQgPT0gMCkgeworICAgICAgICByZXR1cm4gREVBRF9PQkpFQ1Q7CisgICAgfQorCisgICAgLy8gVE9ETzogaGFuZGxlIGNvbmZpZ3VyYXRpb24gb2YgZWZmZWN0cyByZXBsYWNpbmcgdHJhY2sgcHJvY2VzcworICAgIGlmICh0aHJlYWQtPmNoYW5uZWxDb3VudCgpID09IDEpIHsKKyAgICAgICAgY2hhbm5lbHMgPSBDSEFOTkVMX01PTk87CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hhbm5lbHMgPSBDSEFOTkVMX1NURVJFTzsKKyAgICB9CisKKyAgICBpZiAoKG1EZXNjcmlwdG9yLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICBtQ29uZmlnLmlucHV0Q2ZnLmNoYW5uZWxzID0gQ0hBTk5FTF9NT05POworICAgIH0gZWxzZSB7CisgICAgICAgIG1Db25maWcuaW5wdXRDZmcuY2hhbm5lbHMgPSBjaGFubmVsczsKKyAgICB9CisgICAgbUNvbmZpZy5vdXRwdXRDZmcuY2hhbm5lbHMgPSBjaGFubmVsczsKKyAgICBtQ29uZmlnLmlucHV0Q2ZnLmZvcm1hdCA9IFNBTVBMRV9GT1JNQVRfUENNX1MxNTsKKyAgICBtQ29uZmlnLm91dHB1dENmZy5mb3JtYXQgPSBTQU1QTEVfRk9STUFUX1BDTV9TMTU7CisgICAgbUNvbmZpZy5pbnB1dENmZy5zYW1wbGluZ1JhdGUgPSB0aHJlYWQtPnNhbXBsZVJhdGUoKTsKKyAgICBtQ29uZmlnLm91dHB1dENmZy5zYW1wbGluZ1JhdGUgPSBtQ29uZmlnLmlucHV0Q2ZnLnNhbXBsaW5nUmF0ZTsKKyAgICBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmNvb2tpZSA9IE5VTEw7CisgICAgbUNvbmZpZy5pbnB1dENmZy5idWZmZXJQcm92aWRlci5nZXRCdWZmZXIgPSBOVUxMOworICAgIG1Db25maWcuaW5wdXRDZmcuYnVmZmVyUHJvdmlkZXIucmVsZWFzZUJ1ZmZlciA9IE5VTEw7CisgICAgbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyUHJvdmlkZXIuY29va2llID0gTlVMTDsKKyAgICBtQ29uZmlnLm91dHB1dENmZy5idWZmZXJQcm92aWRlci5nZXRCdWZmZXIgPSBOVUxMOworICAgIG1Db25maWcub3V0cHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLnJlbGVhc2VCdWZmZXIgPSBOVUxMOworICAgIG1Db25maWcuaW5wdXRDZmcuYWNjZXNzTW9kZSA9IEVGRkVDVF9CVUZGRVJfQUNDRVNTX1JFQUQ7CisgICAgLy8gSW5zZXJ0IGVmZmVjdDoKKyAgICAvLyAtIGluIHNlc3Npb24gMCBvciAtMSwgYWx3YXlzIG92ZXJ3cml0ZXMgb3V0cHV0IGJ1ZmZlcjogaW5wdXQgYnVmZmVyID09IG91dHB1dCBidWZmZXIKKyAgICAvLyAtIGluIG90aGVyIHNlc3Npb25zOgorICAgIC8vICAgICAgbGFzdCBlZmZlY3QgaW4gdGhlIGNoYWluIGFjY3VtdWxhdGVzIGluIG91dHB1dCBidWZmZXI6IGlucHV0IGJ1ZmZlciAhPSBvdXRwdXQgYnVmZmVyCisgICAgLy8gICAgICBvdGhlciBlZmZlY3Q6IG92ZXJ3cml0ZXMgb3V0cHV0IGJ1ZmZlcjogaW5wdXQgYnVmZmVyID09IG91dHB1dCBidWZmZXIKKyAgICAvLyBBdXhpbGlhcnkgZWZmZWN0OgorICAgIC8vICAgICAgYWNjdW11bGF0ZXMgaW4gb3V0cHV0IGJ1ZmZlcjogaW5wdXQgYnVmZmVyICE9IG91dHB1dCBidWZmZXIKKyAgICAvLyBUaGVyZWZvcmU6IGFjY3VtdWxhdGUgPD0+IGlucHV0IGJ1ZmZlciAhPSBvdXRwdXQgYnVmZmVyCisgICAgaWYgKG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLnJhdyAhPSBtQ29uZmlnLm91dHB1dENmZy5idWZmZXIucmF3KSB7CisgICAgICAgIG1Db25maWcub3V0cHV0Q2ZnLmFjY2Vzc01vZGUgPSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19BQ0NVTVVMQVRFOworICAgIH0gZWxzZSB7CisgICAgICAgIG1Db25maWcub3V0cHV0Q2ZnLmFjY2Vzc01vZGUgPSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19XUklURTsKKyAgICB9CisgICAgbUNvbmZpZy5pbnB1dENmZy5tYXNrID0gRUZGRUNUX0NPTkZJR19BTEw7CisgICAgbUNvbmZpZy5vdXRwdXRDZmcubWFzayA9IEVGRkVDVF9DT05GSUdfQUxMOworICAgIG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLmZyYW1lQ291bnQgPSB0aHJlYWQtPmZyYW1lQ291bnQoKTsKKyAgICBtQ29uZmlnLm91dHB1dENmZy5idWZmZXIuZnJhbWVDb3VudCA9IG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLmZyYW1lQ291bnQ7CisKKyAgICBzdGF0dXNfdCBjbWRTdGF0dXM7CisgICAgaW50IHNpemUgPSBzaXplb2YoaW50KTsKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSAoKm1FZmZlY3RJbnRlcmZhY2UpLT5jb21tYW5kKG1FZmZlY3RJbnRlcmZhY2UsIEVGRkVDVF9DTURfQ09ORklHVVJFLCBzaXplb2YoZWZmZWN0X2NvbmZpZ190KSwgJm1Db25maWcsICZzaXplLCAmY21kU3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IDApIHsKKyAgICAgICAgc3RhdHVzID0gY21kU3RhdHVzOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6aW5pdCgpCit7CisgICAgaWYgKG1FZmZlY3RJbnRlcmZhY2UgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisgICAgc3RhdHVzX3QgY21kU3RhdHVzOworICAgIGludCBzaXplID0gc2l6ZW9mKHN0YXR1c190KTsKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSAoKm1FZmZlY3RJbnRlcmZhY2UpLT5jb21tYW5kKG1FZmZlY3RJbnRlcmZhY2UsIEVGRkVDVF9DTURfSU5JVCwgMCwgTlVMTCwgJnNpemUsICZjbWRTdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gMCkgeworICAgICAgICBzdGF0dXMgPSBjbWRTdGF0dXM7CisgICAgfQorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpzdGFydCgpCit7CisgICAgaWYgKG1FZmZlY3RJbnRlcmZhY2UgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisgICAgc3RhdHVzX3QgY21kU3RhdHVzOworICAgIGludCBzaXplID0gc2l6ZW9mKHN0YXR1c190KTsKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSAoKm1FZmZlY3RJbnRlcmZhY2UpLT5jb21tYW5kKG1FZmZlY3RJbnRlcmZhY2UsIEVGRkVDVF9DTURfRU5BQkxFLCAwLCBOVUxMLCAmc2l6ZSwgJmNtZFN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgICAgIHN0YXR1cyA9IGNtZFN0YXR1czsKKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OnN0b3AoKQoreworICAgIGlmIChtRWZmZWN0SW50ZXJmYWNlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CisgICAgfQorICAgIHN0YXR1c190IGNtZFN0YXR1czsKKyAgICBpbnQgc2l6ZSA9IHNpemVvZihzdGF0dXNfdCk7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gKCptRWZmZWN0SW50ZXJmYWNlKS0+Y29tbWFuZChtRWZmZWN0SW50ZXJmYWNlLCBFRkZFQ1RfQ01EX0RJU0FCTEUsIDAsIE5VTEwsICZzaXplLCAmY21kU3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IDApIHsKKyAgICAgICAgc3RhdHVzID0gY21kU3RhdHVzOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6Y29tbWFuZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgKnJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSkKK3sKKyAgICBMT0dWKCJjb21tYW5kKCksIGNtZENvZGU6ICVkLCBtRWZmZWN0SW50ZXJmYWNlOiAlcCIsIGNtZENvZGUsIG1FZmZlY3RJbnRlcmZhY2UpOworCisgICAgaWYgKG1FZmZlY3RJbnRlcmZhY2UgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gKCptRWZmZWN0SW50ZXJmYWNlKS0+Y29tbWFuZChtRWZmZWN0SW50ZXJmYWNlLCBjbWRDb2RlLCBjbWRTaXplLCBwQ21kRGF0YSwgcmVwbHlTaXplLCBwUmVwbHlEYXRhKTsKKyAgICBpZiAoY21kQ29kZSAhPSBFRkZFQ1RfQ01EX0dFVF9QQVJBTSAmJiBzdGF0dXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgaW50IHNpemUgPSAocmVwbHlTaXplID09IE5VTEwpID8gMCA6ICpyZXBseVNpemU7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbUhhbmRsZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIHNwPEVmZmVjdEhhbmRsZT4gaCA9IG1IYW5kbGVzW2ldLnByb21vdGUoKTsKKyAgICAgICAgICAgIGlmIChoICE9IDApIHsKKyAgICAgICAgICAgICAgICBoLT5jb21tYW5kRXhlY3V0ZWQoY21kQ29kZSwgY21kU2l6ZSwgcENtZERhdGEsIHNpemUsIHBSZXBseURhdGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIExPR1YoInNldEVuYWJsZWQgJXAgZW5hYmxlZCAlZCIsIHRoaXMsIGVuYWJsZWQpOworCisgICAgaWYgKGVuYWJsZWQgIT0gaXNFbmFibGVkKCkpIHsKKyAgICAgICAgc3dpdGNoIChtU3RhdGUpIHsKKyAgICAgICAgLy8gZ29pbmcgZnJvbSBkaXNhYmxlZCB0byBlbmFibGVkCisgICAgICAgIGNhc2UgSURMRToKKyAgICAgICAgICAgIG1TdGF0ZSA9IFJFU0VUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1RPUFBJTkc6CisgICAgICAgICAgICBtU3RhdGUgPSBBQ1RJVkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTVE9QUEVEOgorICAgICAgICAgICAgbVN0YXRlID0gU1RBUlRJTkc7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBnb2luZyBmcm9tIGVuYWJsZWQgdG8gZGlzYWJsZWQKKyAgICAgICAgY2FzZSBSRVNFVDoKKyAgICAgICAgICAgIG1TdGF0ZSA9IElETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTVEFSVElORzoKKyAgICAgICAgICAgIG1TdGF0ZSA9IFNUT1BQRUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQ1RJVkU6CisgICAgICAgICAgICBtU3RhdGUgPSBTVE9QUElORzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbUhhbmRsZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIHNwPEVmZmVjdEhhbmRsZT4gaCA9IG1IYW5kbGVzW2ldLnByb21vdGUoKTsKKyAgICAgICAgICAgIGlmIChoICE9IDApIHsKKyAgICAgICAgICAgICAgICBoLT5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBOT19FUlJPUjsKK30KKworYm9vbCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6aXNFbmFibGVkKCkKK3sKKyAgICBzd2l0Y2ggKG1TdGF0ZSkgeworICAgIGNhc2UgUkVTRVQ6CisgICAgY2FzZSBTVEFSVElORzoKKyAgICBjYXNlIEFDVElWRToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBJRExFOgorICAgIGNhc2UgU1RPUFBJTkc6CisgICAgY2FzZSBTVE9QUEVEOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpzZXRWb2x1bWUodWludDMyX3QgKmxlZnQsIHVpbnQzMl90ICpyaWdodCwgYm9vbCBjb250cm9sbGVyKQoreworICAgIHN0YXR1c190IHN0YXR1cyA9IE5PX0VSUk9SOworCisgICAgLy8gU2VuZCB2b2x1bWUgaW5kaWNhdGlvbiBpZiBFRkZFQ1RfRkxBR19WT0xVTUVfSU5EIGlzIHNldCBhbmQgcmVhZCBiYWNrIGFsdGVyZWQgdm9sdW1lCisgICAgLy8gaWYgY29udHJvbGxlciBmbGFnIGlzIHNldCAoTm90ZSB0aGF0IGNvbnRyb2xsZXIgPT0gVFJVRSA9PiBFRkZFQ1RfRkxBR19WT0xVTUVfQ1RSTCBzZXQpCisgICAgaWYgKChtRGVzY3JpcHRvci5mbGFncyAmIEVGRkVDVF9GTEFHX1ZPTFVNRV9NQVNLKSAmIChFRkZFQ1RfRkxBR19WT0xVTUVfQ1RSTHxFRkZFQ1RfRkxBR19WT0xVTUVfSU5EKSkgeworICAgICAgICBzdGF0dXNfdCBjbWRTdGF0dXM7CisgICAgICAgIHVpbnQzMl90IHZvbHVtZVsyXTsKKyAgICAgICAgdWludDMyX3QgKnBWb2x1bWUgPSBOVUxMOworICAgICAgICBpbnQgc2l6ZSA9IHNpemVvZih2b2x1bWUpOworICAgICAgICB2b2x1bWVbMF0gPSAqbGVmdDsKKyAgICAgICAgdm9sdW1lWzFdID0gKnJpZ2h0OworICAgICAgICBpZiAoY29udHJvbGxlcikgeworICAgICAgICAgICAgcFZvbHVtZSA9IHZvbHVtZTsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSAoKm1FZmZlY3RJbnRlcmZhY2UpLT5jb21tYW5kKG1FZmZlY3RJbnRlcmZhY2UsIEVGRkVDVF9DTURfU0VUX1ZPTFVNRSwgc2l6ZSwgdm9sdW1lLCAmc2l6ZSwgcFZvbHVtZSk7CisgICAgICAgIGlmIChjb250cm9sbGVyICYmIHN0YXR1cyA9PSBOT19FUlJPUiAmJiBzaXplID09IHNpemVvZih2b2x1bWUpKSB7CisgICAgICAgICAgICAqbGVmdCA9IHZvbHVtZVswXTsKKyAgICAgICAgICAgICpyaWdodCA9IHZvbHVtZVsxXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6c2V0RGV2aWNlKHVpbnQzMl90IGRldmljZSkKK3sKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBOT19FUlJPUjsKKyAgICBpZiAoKG1EZXNjcmlwdG9yLmZsYWdzICYgRUZGRUNUX0ZMQUdfREVWSUNFX01BU0spID09IEVGRkVDVF9GTEFHX0RFVklDRV9JTkQpIHsKKyAgICAgICAgLy8gY29udmVydCBkZXZpY2UgYml0IGZpZWxkIGZyb20gQXVkaW9TeXN0ZW0gdG8gRWZmZWN0QXBpIGZvcm1hdC4KKyAgICAgICAgZGV2aWNlID0gZGV2aWNlQXVkaW9TeXN0ZW1Ub0VmZmVjdEFwaShkZXZpY2UpOworICAgICAgICBpZiAoZGV2aWNlID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzX3QgY21kU3RhdHVzOworICAgICAgICBpbnQgc2l6ZSA9IHNpemVvZihzdGF0dXNfdCk7CisgICAgICAgIHN0YXR1cyA9ICgqbUVmZmVjdEludGVyZmFjZSktPmNvbW1hbmQobUVmZmVjdEludGVyZmFjZSwgRUZGRUNUX0NNRF9TRVRfREVWSUNFLCBzaXplb2YodWludDMyX3QpLCAmZGV2aWNlLCAmc2l6ZSwgJmNtZFN0YXR1cyk7CisgICAgICAgIGlmIChzdGF0dXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IGNtZFN0YXR1czsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6c2V0TW9kZSh1aW50MzJfdCBtb2RlKQoreworICAgIHN0YXR1c190IHN0YXR1cyA9IE5PX0VSUk9SOworICAgIGlmICgobURlc2NyaXB0b3IuZmxhZ3MgJiBFRkZFQ1RfRkxBR19BVURJT19NT0RFX01BU0spID09IEVGRkVDVF9GTEFHX0FVRElPX01PREVfSU5EKSB7CisgICAgICAgIC8vIGNvbnZlcnQgYXVkaW8gbW9kZSBmcm9tIEF1ZGlvU3lzdGVtIHRvIEVmZmVjdEFwaSBmb3JtYXQuCisgICAgICAgIGludCBlZmZlY3RNb2RlID0gbW9kZUF1ZGlvU3lzdGVtVG9FZmZlY3RBcGkobW9kZSk7CisgICAgICAgIGlmIChlZmZlY3RNb2RlIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXNfdCBjbWRTdGF0dXM7CisgICAgICAgIGludCBzaXplID0gc2l6ZW9mKHN0YXR1c190KTsKKyAgICAgICAgc3RhdHVzID0gKCptRWZmZWN0SW50ZXJmYWNlKS0+Y29tbWFuZChtRWZmZWN0SW50ZXJmYWNlLCBFRkZFQ1RfQ01EX1NFVF9BVURJT19NT0RFLCBzaXplb2YoaW50KSwgJmVmZmVjdE1vZGUsICZzaXplLCAmY21kU3RhdHVzKTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgc3RhdHVzID0gY21kU3RhdHVzOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdGF0dXM7Cit9CisKKy8vIHVwZGF0ZSB0aGlzIHRhYmxlIHdoZW4gQXVkaW9TeXN0ZW06OmF1ZGlvX2RldmljZXMgb3IgYXVkaW9fZGV2aWNlX2UgKGluIEVmZmVjdEFwaS5oKSBhcmUgbW9kaWZpZWQKK2NvbnN0IHVpbnQzMl90IEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpzRGV2aWNlQ29udlRhYmxlW10gPSB7CisgICAgREVWSUNFX0VBUlBJRUNFLCAvLyBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9FQVJQSUVDRQorICAgIERFVklDRV9TUEVBS0VSLCAvLyBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9TUEVBS0VSCisgICAgREVWSUNFX1dJUkVEX0hFQURTRVQsIC8vIGNhc2UgQXVkaW9TeXN0ZW06OkRFVklDRV9PVVRfV0lSRURfSEVBRFNFVAorICAgIERFVklDRV9XSVJFRF9IRUFEUEhPTkUsIC8vIEF1ZGlvU3lzdGVtOjpERVZJQ0VfT1VUX1dJUkVEX0hFQURQSE9ORQorICAgIERFVklDRV9CTFVFVE9PVEhfU0NPLCAvLyBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9CTFVFVE9PVEhfU0NPCisgICAgREVWSUNFX0JMVUVUT09USF9TQ09fSEVBRFNFVCwgLy8gQXVkaW9TeXN0ZW06OkRFVklDRV9PVVRfQkxVRVRPT1RIX1NDT19IRUFEU0VUCisgICAgREVWSUNFX0JMVUVUT09USF9TQ09fQ0FSS0lULCAvLyAgQXVkaW9TeXN0ZW06OkRFVklDRV9PVVRfQkxVRVRPT1RIX1NDT19DQVJLSVQKKyAgICBERVZJQ0VfQkxVRVRPT1RIX0EyRFAsIC8vICBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9CTFVFVE9PVEhfQTJEUAorICAgIERFVklDRV9CTFVFVE9PVEhfQTJEUF9IRUFEUEhPTkVTLCAvLyBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9CTFVFVE9PVEhfQTJEUF9IRUFEUEhPTkVTCisgICAgREVWSUNFX0JMVUVUT09USF9BMkRQX1NQRUFLRVIsIC8vIEF1ZGlvU3lzdGVtOjpERVZJQ0VfT1VUX0JMVUVUT09USF9BMkRQX1NQRUFLRVIKKyAgICBERVZJQ0VfQVVYX0RJR0lUQUwgLy8gQXVkaW9TeXN0ZW06OkRFVklDRV9PVVRfQVVYX0RJR0lUQUwKK307CisKK3VpbnQzMl90IEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpkZXZpY2VBdWRpb1N5c3RlbVRvRWZmZWN0QXBpKHVpbnQzMl90IGRldmljZSkKK3sKKyAgICB1aW50MzJfdCBkZXZpY2VPdXQgPSAwOworICAgIHdoaWxlIChkZXZpY2UpIHsKKyAgICAgICAgY29uc3QgdWludDMyX3QgaSA9IDMxIC0gX19idWlsdGluX2NseihkZXZpY2UpOworICAgICAgICBkZXZpY2UgJj0gfigxIDw8IGkpOworICAgICAgICBpZiAoaSA+PSBzaXplb2Yoc0RldmljZUNvbnZUYWJsZSkvc2l6ZW9mKHVpbnQzMl90KSkgeworICAgICAgICAgICAgTE9HRSgiZGV2aWNlIGNvbnZlcnRpb24gZXJyb3IgZm9yIEF1ZGlvU3lzdGVtIGRldmljZSAweCUwOHgiLCBkZXZpY2UpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZGV2aWNlT3V0IHw9ICh1aW50MzJfdClzRGV2aWNlQ29udlRhYmxlW2ldOworICAgIH0KKyAgICByZXR1cm4gZGV2aWNlT3V0OworfQorCisvLyB1cGRhdGUgdGhpcyB0YWJsZSB3aGVuIEF1ZGlvU3lzdGVtOjphdWRpb19tb2RlIG9yIGF1ZGlvX21vZGVfZSAoaW4gRWZmZWN0QXBpLmgpIGFyZSBtb2RpZmllZAorY29uc3QgdWludDMyX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OnNNb2RlQ29udlRhYmxlW10gPSB7CisgICAgQVVESU9fTU9ERV9OT1JNQUwsICAgLy8gQXVkaW9TeXN0ZW06Ok1PREVfTk9STUFMCisgICAgQVVESU9fTU9ERV9SSU5HVE9ORSwgLy8gQXVkaW9TeXN0ZW06Ok1PREVfUklOR1RPTkUKKyAgICBBVURJT19NT0RFX0lOX0NBTEwgICAvLyBBdWRpb1N5c3RlbTo6TU9ERV9JTl9DQUxMCit9OworCitpbnQgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6Om1vZGVBdWRpb1N5c3RlbVRvRWZmZWN0QXBpKHVpbnQzMl90IG1vZGUpCit7CisgICAgaW50IG1vZGVPdXQgPSAtMTsKKyAgICBpZiAobW9kZSA8IHNpemVvZihzTW9kZUNvbnZUYWJsZSkgLyBzaXplb2YodWludDMyX3QpKSB7CisgICAgICAgIG1vZGVPdXQgPSAoaW50KXNNb2RlQ29udlRhYmxlW21vZGVdOworICAgIH0KKyAgICByZXR1cm4gbW9kZU91dDsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OmR1bXAoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKQoreworICAgIGNvbnN0IHNpemVfdCBTSVpFID0gMjU2OworICAgIGNoYXIgYnVmZmVyW1NJWkVdOworICAgIFN0cmluZzggcmVzdWx0OworCisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiXHRFZmZlY3QgSUQgJWQ6XG4iLCBtSWQpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKworICAgIGJvb2wgbG9ja2VkID0gdHJ5TG9jayhtTG9jayk7CisgICAgLy8gZmFpbGVkIHRvIGxvY2sgLSBBdWRpb0ZsaW5nZXIgaXMgcHJvYmFibHkgZGVhZGxvY2tlZAorICAgIGlmICghbG9ja2VkKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlx0XHRDb3VsZCBub3QgbG9jayBGeCBtdXRleDpcbiIpOworICAgIH0KKworICAgIHJlc3VsdC5hcHBlbmQoIlx0XHRTZXNzaW9uIFN0YXR1cyBTdGF0ZSBFbmdpbmU6XG4iKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdFx0JTA1ZCAgICUwM2QgICAgJTAzZCAgIDB4JTA4eFxuIiwKKyAgICAgICAgICAgIG1TZXNzaW9uSWQsIG1TdGF0dXMsIG1TdGF0ZSwgKHVpbnQzMl90KW1FZmZlY3RJbnRlcmZhY2UpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKworICAgIHJlc3VsdC5hcHBlbmQoIlx0XHREZXNjcmlwdG9yOlxuIik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiXHRcdC0gVVVJRDogJTA4WC0lMDRYLSUwNFgtJTA0WC0lMDJYJTAyWCUwMlglMDJYJTAyWCUwMlhcbiIsCisgICAgICAgICAgICBtRGVzY3JpcHRvci51dWlkLnRpbWVMb3csIG1EZXNjcmlwdG9yLnV1aWQudGltZU1pZCwgbURlc2NyaXB0b3IudXVpZC50aW1lSGlBbmRWZXJzaW9uLAorICAgICAgICAgICAgbURlc2NyaXB0b3IudXVpZC5jbG9ja1NlcSwgbURlc2NyaXB0b3IudXVpZC5ub2RlWzBdLCBtRGVzY3JpcHRvci51dWlkLm5vZGVbMV0sbURlc2NyaXB0b3IudXVpZC5ub2RlWzJdLAorICAgICAgICAgICAgbURlc2NyaXB0b3IudXVpZC5ub2RlWzNdLG1EZXNjcmlwdG9yLnV1aWQubm9kZVs0XSxtRGVzY3JpcHRvci51dWlkLm5vZGVbNV0pOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdFx0LSBUWVBFOiAlMDhYLSUwNFgtJTA0WC0lMDRYLSUwMlglMDJYJTAyWCUwMlglMDJYJTAyWFxuIiwKKyAgICAgICAgICAgICAgICBtRGVzY3JpcHRvci50eXBlLnRpbWVMb3csIG1EZXNjcmlwdG9yLnR5cGUudGltZU1pZCwgbURlc2NyaXB0b3IudHlwZS50aW1lSGlBbmRWZXJzaW9uLAorICAgICAgICAgICAgICAgIG1EZXNjcmlwdG9yLnR5cGUuY2xvY2tTZXEsIG1EZXNjcmlwdG9yLnR5cGUubm9kZVswXSwgbURlc2NyaXB0b3IudHlwZS5ub2RlWzFdLG1EZXNjcmlwdG9yLnR5cGUubm9kZVsyXSwKKyAgICAgICAgICAgICAgICBtRGVzY3JpcHRvci50eXBlLm5vZGVbM10sbURlc2NyaXB0b3IudHlwZS5ub2RlWzRdLG1EZXNjcmlwdG9yLnR5cGUubm9kZVs1XSk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIlx0XHQtIGFwaVZlcnNpb246ICUwNFhcblx0XHQtIGZsYWdzOiAlMDhYXG4iLAorICAgICAgICAgICAgbURlc2NyaXB0b3IuYXBpVmVyc2lvbiwKKyAgICAgICAgICAgIG1EZXNjcmlwdG9yLmZsYWdzKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiXHRcdC0gbmFtZTogJXNcbiIsCisgICAgICAgICAgICBtRGVzY3JpcHRvci5uYW1lKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiXHRcdC0gaW1wbGVtZW50b3I6ICVzXG4iLAorICAgICAgICAgICAgbURlc2NyaXB0b3IuaW1wbGVtZW50b3IpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKworICAgIHJlc3VsdC5hcHBlbmQoIlx0XHQtIElucHV0IGNvbmZpZ3VyYXRpb246XG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCJcdFx0XHRCdWZmZXIgICAgIEZyYW1lcyAgU21wIHJhdGUgQ2hhbm5lbHMgRm9ybWF0XG4iKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdFx0XHQweCUwOHggJTA1ZCAgICUwNWQgICAgJTA4eCAlZFxuIiwKKyAgICAgICAgICAgICh1aW50MzJfdCltQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5yYXcsCisgICAgICAgICAgICBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5mcmFtZUNvdW50LAorICAgICAgICAgICAgbUNvbmZpZy5pbnB1dENmZy5zYW1wbGluZ1JhdGUsCisgICAgICAgICAgICBtQ29uZmlnLmlucHV0Q2ZnLmNoYW5uZWxzLAorICAgICAgICAgICAgbUNvbmZpZy5pbnB1dENmZy5mb3JtYXQpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKworICAgIHJlc3VsdC5hcHBlbmQoIlx0XHQtIE91dHB1dCBjb25maWd1cmF0aW9uOlxuIik7CisgICAgcmVzdWx0LmFwcGVuZCgiXHRcdFx0QnVmZmVyICAgICBGcmFtZXMgIFNtcCByYXRlIENoYW5uZWxzIEZvcm1hdFxuIik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiXHRcdFx0MHglMDh4ICUwNWQgICAlMDVkICAgICUwOHggJWRcbiIsCisgICAgICAgICAgICAodWludDMyX3QpbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnJhdywKKyAgICAgICAgICAgIG1Db25maWcub3V0cHV0Q2ZnLmJ1ZmZlci5mcmFtZUNvdW50LAorICAgICAgICAgICAgbUNvbmZpZy5vdXRwdXRDZmcuc2FtcGxpbmdSYXRlLAorICAgICAgICAgICAgbUNvbmZpZy5vdXRwdXRDZmcuY2hhbm5lbHMsCisgICAgICAgICAgICBtQ29uZmlnLm91dHB1dENmZy5mb3JtYXQpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIlx0XHQlZCBDbGllbnRzOlxuIiwgbUhhbmRsZXMuc2l6ZSgpKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgcmVzdWx0LmFwcGVuZCgiXHRcdFx0UGlkICAgUHJpb3JpdHkgQ3RybCBMb2NrZWQgY2xpZW50IHNlcnZlclxuIik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtSGFuZGxlcy5zaXplKCk7ICsraSkgeworICAgICAgICBzcDxFZmZlY3RIYW5kbGU+IGhhbmRsZSA9IG1IYW5kbGVzW2ldLnByb21vdGUoKTsKKyAgICAgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgICAgICBoYW5kbGUtPmR1bXAoYnVmZmVyLCBTSVpFKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdC5hcHBlbmQoIlxuIik7CisKKyAgICB3cml0ZShmZCwgcmVzdWx0LnN0cmluZygpLCByZXN1bHQubGVuZ3RoKCkpOworCisgICAgaWYgKGxvY2tlZCkgeworICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICB9CisKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBFZmZlY3RIYW5kbGUgaW1wbGVtZW50YXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3VuZGVmIExPR19UQUcKKyNkZWZpbmUgTE9HX1RBRyAiQXVkaW9GbGluZ2VyOjpFZmZlY3RIYW5kbGUiCisKK0F1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlOjpFZmZlY3RIYW5kbGUoY29uc3Qgc3A8RWZmZWN0TW9kdWxlPiYgZWZmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPEF1ZGlvRmxpbmdlcjo6Q2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElFZmZlY3RDbGllbnQ+JiBlZmZlY3RDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSkKKyAgICA6IEJuRWZmZWN0KCksCisgICAgbUVmZmVjdChlZmZlY3QpLCBtRWZmZWN0Q2xpZW50KGVmZmVjdENsaWVudCksIG1DbGllbnQoY2xpZW50KSwgbVByaW9yaXR5KHByaW9yaXR5KSwgbUhhc0NvbnRyb2woZmFsc2UpCit7CisgICAgTE9HVigiY29uc3RydWN0b3IgJXAiLCB0aGlzKTsKKworICAgIGludCBidWZPZmZzZXQgPSAoKHNpemVvZihlZmZlY3RfcGFyYW1fY2Jsa190KSAtIDEpIC8gc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpOworICAgIG1DYmxrTWVtb3J5ID0gY2xpZW50LT5oZWFwKCktPmFsbG9jYXRlKEVGRkVDVF9QQVJBTV9CVUZGRVJfU0laRSArIGJ1Zk9mZnNldCk7CisgICAgaWYgKG1DYmxrTWVtb3J5ICE9IDApIHsKKyAgICAgICAgbUNibGsgPSBzdGF0aWNfY2FzdDxlZmZlY3RfcGFyYW1fY2Jsa190ICo+KG1DYmxrTWVtb3J5LT5wb2ludGVyKCkpOworCisgICAgICAgIGlmIChtQ2JsaykgeworICAgICAgICAgICAgbmV3KG1DYmxrKSBlZmZlY3RfcGFyYW1fY2Jsa190KCk7CisgICAgICAgICAgICBtQnVmZmVyID0gKHVpbnQ4X3QgKiltQ2JsayArIGJ1Zk9mZnNldDsKKyAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBMT0dFKCJub3QgZW5vdWdoIG1lbW9yeSBmb3IgRWZmZWN0IHNpemU9JXUiLCBFRkZFQ1RfUEFSQU1fQlVGRkVSX1NJWkUgKyBzaXplb2YoZWZmZWN0X3BhcmFtX2NibGtfdCkpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6fkVmZmVjdEhhbmRsZSgpCit7CisgICAgTE9HVigiRGVzdHJ1Y3RvciAlcCIsIHRoaXMpOworICAgIGRpc2Nvbm5lY3QoKTsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RIYW5kbGU6OmVuYWJsZSgpCit7CisgICAgaWYgKCFtSGFzQ29udHJvbCkgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIGlmIChtRWZmZWN0ID09IDApIHJldHVybiBERUFEX09CSkVDVDsKKworICAgIHJldHVybiBtRWZmZWN0LT5zZXRFbmFibGVkKHRydWUpOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6ZGlzYWJsZSgpCit7CisgICAgaWYgKCFtSGFzQ29udHJvbCkgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIGlmIChtRWZmZWN0ID09IE5VTEwpIHJldHVybiBERUFEX09CSkVDVDsKKworICAgIHJldHVybiBtRWZmZWN0LT5zZXRFbmFibGVkKGZhbHNlKTsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6ZGlzY29ubmVjdCgpCit7CisgICAgaWYgKG1FZmZlY3QgPT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1FZmZlY3QtPmRpc2Nvbm5lY3QodGhpcyk7CisgICAgLy8gcmVsZWFzZSBzcCBvbiBtb2R1bGUgPT4gbW9kdWxlIGRlc3RydWN0b3IgY2FuIGJlIGNhbGxlZCBub3cKKyAgICBtRWZmZWN0LmNsZWFyKCk7CisgICAgaWYgKG1DYmxrKSB7CisgICAgICAgIG1DYmxrLT5+ZWZmZWN0X3BhcmFtX2NibGtfdCgpOyAgIC8vIGRlc3Ryb3kgb3VyIHNoYXJlZC1zdHJ1Y3R1cmUuCisgICAgfQorICAgIG1DYmxrTWVtb3J5LmNsZWFyKCk7ICAgICAgICAgICAgLy8gYW5kIGZyZWUgdGhlIHNoYXJlZCBtZW1vcnkKKyAgICBpZiAobUNsaWVudCAhPSAwKSB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtQ2xpZW50LT5hdWRpb0ZsaW5nZXIoKS0+bUxvY2spOworICAgICAgICBtQ2xpZW50LmNsZWFyKCk7CisgICAgfQorfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6Y29tbWFuZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgKnJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSkKK3sKKyAgICBMT0dWKCJjb21tYW5kKCksIGNtZENvZGU6ICVkLCBtSGFzQ29udHJvbDogJWQsIG1FZmZlY3Q6ICVwIiwgY21kQ29kZSwgbUhhc0NvbnRyb2wsIChtRWZmZWN0ID09IDApID8gMCA6IG1FZmZlY3QuZ2V0KCkpOworCisgICAgLy8gb25seSBnZXQgcGFyYW1ldGVyIGNvbW1hbmQgaXMgcGVybWl0dGVkIGZvciBhcHBsaWNhdGlvbnMgbm90IGNvbnRyb2xsaW5nIHRoZSBlZmZlY3QKKyAgICBpZiAoIW1IYXNDb250cm9sICYmIGNtZENvZGUgIT0gRUZGRUNUX0NNRF9HRVRfUEFSQU0pIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKyAgICBpZiAobUVmZmVjdCA9PSAwKSByZXR1cm4gREVBRF9PQkpFQ1Q7CisKKyAgICAvLyBoYW5kbGUgY29tbWFuZHMgdGhhdCBhcmUgbm90IGZvcndhcmRlZCB0cmFuc3BhcmVudGx5IHRvIGVmZmVjdCBlbmdpbmUKKyAgICBpZiAoY21kQ29kZSA9PSBFRkZFQ1RfQ01EX1NFVF9QQVJBTV9DT01NSVQpIHsKKyAgICAgICAgLy8gTm8gbmVlZCB0byB0cnlsb2NrKCkgaGVyZSBhcyB0aGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGluIHRoZSBiaW5kZXIgdGhyZWFkIHNlcnZpbmcgYSBwYXJ0aWN1bGFyIGNsaWVudCBwcm9jZXNzOgorICAgICAgICAvLyBubyByaXNrIHRvIGJsb2NrIHRoZSB3aG9sZSBtZWRpYSBzZXJ2ZXIgcHJvY2VzcyBvciBtaXhlciB0aHJlYWRzIGlzIHdlIGFyZSBzdHVjayBoZXJlCisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtQ2Jsay0+bG9jayk7CisgICAgICAgIGlmIChtQ2Jsay0+Y2xpZW50SW5kZXggPiBFRkZFQ1RfUEFSQU1fQlVGRkVSX1NJWkUgfHwKKyAgICAgICAgICAgIG1DYmxrLT5zZXJ2ZXJJbmRleCA+IEVGRkVDVF9QQVJBTV9CVUZGRVJfU0laRSkgeworICAgICAgICAgICAgbUNibGstPnNlcnZlckluZGV4ID0gMDsKKyAgICAgICAgICAgIG1DYmxrLT5jbGllbnRJbmRleCA9IDA7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IE5PX0VSUk9SOworICAgICAgICB3aGlsZSAobUNibGstPnNlcnZlckluZGV4IDwgbUNibGstPmNsaWVudEluZGV4KSB7CisgICAgICAgICAgICBpbnQgcmVwbHk7CisgICAgICAgICAgICBpbnQgcnNpemUgPSBzaXplb2YoaW50KTsKKyAgICAgICAgICAgIGludCAqcCA9IChpbnQgKikobUJ1ZmZlciArIG1DYmxrLT5zZXJ2ZXJJbmRleCk7CisgICAgICAgICAgICBpbnQgc2l6ZSA9ICpwKys7CisgICAgICAgICAgICBpZiAoKCh1aW50OF90ICopcCArIHNpemUpID4gbUJ1ZmZlciArIG1DYmxrLT5jbGllbnRJbmRleCkgeworICAgICAgICAgICAgICAgIExPR1coImNvbW1hbmQoKTogaW52YWxpZCBwYXJhbWV0ZXIgYmxvY2sgc2l6ZSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWZmZWN0X3BhcmFtX3QgKnBhcmFtID0gKGVmZmVjdF9wYXJhbV90ICopcDsKKyAgICAgICAgICAgIGlmIChwYXJhbS0+cHNpemUgPT0gMCB8fCBwYXJhbS0+dnNpemUgPT0gMCkgeworICAgICAgICAgICAgICAgIExPR1coImNvbW1hbmQoKTogbnVsbCBwYXJhbWV0ZXIgb3IgdmFsdWUgc2l6ZSIpOworICAgICAgICAgICAgICAgIG1DYmxrLT5zZXJ2ZXJJbmRleCArPSBzaXplOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IHBzaXplID0gc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArICgocGFyYW0tPnBzaXplIC0gMSkgLyBzaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCkgKyBwYXJhbS0+dnNpemU7CisgICAgICAgICAgICBzdGF0dXNfdCByZXQgPSBtRWZmZWN0LT5jb21tYW5kKEVGRkVDVF9DTURfU0VUX1BBUkFNLCBwc2l6ZSwgcCwgJnJzaXplLCAmcmVwbHkpOworICAgICAgICAgICAgaWYgKHJldCA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIGlmIChyZXBseSAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSByZXBseTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0YXR1cyA9IHJldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1DYmxrLT5zZXJ2ZXJJbmRleCArPSBzaXplOworICAgICAgICB9CisgICAgICAgIG1DYmxrLT5zZXJ2ZXJJbmRleCA9IDA7CisgICAgICAgIG1DYmxrLT5jbGllbnRJbmRleCA9IDA7CisgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfSBlbHNlIGlmIChjbWRDb2RlID09IEVGRkVDVF9DTURfRU5BQkxFKSB7CisgICAgICAgIHJldHVybiBlbmFibGUoKTsKKyAgICB9IGVsc2UgaWYgKGNtZENvZGUgPT0gRUZGRUNUX0NNRF9ESVNBQkxFKSB7CisgICAgICAgIHJldHVybiBkaXNhYmxlKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1FZmZlY3QtPmNvbW1hbmQoY21kQ29kZSwgY21kU2l6ZSwgcENtZERhdGEsIHJlcGx5U2l6ZSwgcFJlcGx5RGF0YSk7Cit9CisKK3NwPElNZW1vcnk+IEF1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlOjpnZXRDYmxrKCkgY29uc3QgeworICAgIHJldHVybiBtQ2Jsa01lbW9yeTsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6c2V0Q29udHJvbChib29sIGhhc0NvbnRyb2wsIGJvb2wgc2lnbmFsKQoreworICAgIExPR1YoInNldENvbnRyb2wgJXAgY29udHJvbCAlZCIsIHRoaXMsIGhhc0NvbnRyb2wpOworCisgICAgbUhhc0NvbnRyb2wgPSBoYXNDb250cm9sOworICAgIGlmIChzaWduYWwgJiYgbUVmZmVjdENsaWVudCAhPSAwKSB7CisgICAgICAgIG1FZmZlY3RDbGllbnQtPmNvbnRyb2xTdGF0dXNDaGFuZ2VkKGhhc0NvbnRyb2wpOworICAgIH0KK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6Y29tbWFuZEV4ZWN1dGVkKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwgdm9pZCAqcENtZERhdGEsIGludCByZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpCit7CisgICAgaWYgKG1FZmZlY3RDbGllbnQgIT0gMCkgeworICAgICAgICBtRWZmZWN0Q2xpZW50LT5jb21tYW5kRXhlY3V0ZWQoY21kQ29kZSwgY21kU2l6ZSwgcENtZERhdGEsIHJlcGx5U2l6ZSwgcFJlcGx5RGF0YSk7CisgICAgfQorfQorCisKKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1FZmZlY3RDbGllbnQgIT0gMCkgeworICAgICAgICBtRWZmZWN0Q2xpZW50LT5lbmFibGVTdGF0dXNDaGFuZ2VkKGVuYWJsZWQpOworICAgIH0KK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RIYW5kbGU6Om9uVHJhbnNhY3QoCisgICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncykKK3sKKyAgICByZXR1cm4gQm5FZmZlY3Q6Om9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKK30KKworCit2b2lkIEF1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlOjpkdW1wKGNoYXIqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCit7CisgICAgYm9vbCBsb2NrZWQgPSB0cnlMb2NrKG1DYmxrLT5sb2NrKTsKKworICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIlx0XHRcdCUwNWQgJTA1ZCAgICAlMDF1ICAgICUwMXUgICAgICAlMDV1ICAlMDV1XG4iLAorICAgICAgICAgICAgKG1DbGllbnQgPT0gTlVMTCkgPyBnZXRwaWQoKSA6IG1DbGllbnQtPnBpZCgpLAorICAgICAgICAgICAgbVByaW9yaXR5LAorICAgICAgICAgICAgbUhhc0NvbnRyb2wsCisgICAgICAgICAgICAhbG9ja2VkLAorICAgICAgICAgICAgbUNibGstPmNsaWVudEluZGV4LAorICAgICAgICAgICAgbUNibGstPnNlcnZlckluZGV4CisgICAgICAgICAgICApOworCisgICAgaWYgKGxvY2tlZCkgeworICAgICAgICBtQ2Jsay0+bG9jay51bmxvY2soKTsKKyAgICB9Cit9CisKKyN1bmRlZiBMT0dfVEFHCisjZGVmaW5lIExPR19UQUcgIkF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW4iCisKK0F1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW46OkVmZmVjdENoYWluKGNvbnN0IHdwPFRocmVhZEJhc2U+JiB3VGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQpCisgICAgOiBtVGhyZWFkKHdUaHJlYWQpLCBtU2Vzc2lvbklkKHNlc3Npb25JZCksIG1Wb2x1bWVDdHJsSWR4KC0xKSwgbUFjdGl2ZVRyYWNrQ250KDApLCBtT3duSW5CdWZmZXIoZmFsc2UpCit7CisKK30KKworQXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbjo6fkVmZmVjdENoYWluKCkKK3sKKyAgICBpZiAobU93bkluQnVmZmVyKSB7CisgICAgICAgIGRlbGV0ZSBtSW5CdWZmZXI7CisgICAgfQorCit9CisKK3NwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlPiBBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjpnZXRFZmZlY3RGcm9tRGVzYyhlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjcmlwdG9yKQoreworICAgIHNwPEVmZmVjdE1vZHVsZT4gZWZmZWN0OworICAgIHNpemVfdCBzaXplID0gbUVmZmVjdHMuc2l6ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKG1lbWNtcCgmbUVmZmVjdHNbaV0tPmRlc2MoKS51dWlkLCAmZGVzY3JpcHRvci0+dXVpZCwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKSA9PSAwKSB7CisgICAgICAgICAgICBlZmZlY3QgPSBtRWZmZWN0c1tpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBlZmZlY3Q7Cit9CisKK3NwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlPiBBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjpnZXRFZmZlY3RGcm9tSWQoaW50IGlkKQoreworICAgIHNwPEVmZmVjdE1vZHVsZT4gZWZmZWN0OworICAgIHNpemVfdCBzaXplID0gbUVmZmVjdHMuc2l6ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKG1FZmZlY3RzW2ldLT5pZCgpID09IGlkKSB7CisgICAgICAgICAgICBlZmZlY3QgPSBtRWZmZWN0c1tpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBlZmZlY3Q7Cit9CisKKy8vIE11c3QgYmUgY2FsbGVkIHdpdGggRWZmZWN0Q2hhaW46Om1Mb2NrIGxvY2tlZAordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjpwcm9jZXNzX2woKQoreworICAgIHNpemVfdCBzaXplID0gbUVmZmVjdHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIG1FZmZlY3RzW2ldLT5wcm9jZXNzKCk7CisgICAgfQorICAgIC8vIGlmIG5vIHRyYWNrIGlzIGFjdGl2ZSwgaW5wdXQgYnVmZmVyIG11c3QgYmUgY2xlYXJlZCBoZXJlIGFzIHRoZSBtaXhlciBwcm9jZXNzCisgICAgLy8gd2lsbCBub3QgZG8gaXQKKyAgICBpZiAobVNlc3Npb25JZCA+IDAgJiYgYWN0aXZlVHJhY2tzKCkgPT0gMCkgeworICAgICAgICBzcDxUaHJlYWRCYXNlPiB0aHJlYWQgPSBtVGhyZWFkLnByb21vdGUoKTsKKyAgICAgICAgaWYgKHRocmVhZCAhPSAwKSB7CisgICAgICAgICAgICBzaXplX3QgbnVtU2FtcGxlcyA9IHRocmVhZC0+ZnJhbWVDb3VudCgpICogdGhyZWFkLT5jaGFubmVsQ291bnQoKTsKKyAgICAgICAgICAgIG1lbXNldChtSW5CdWZmZXIsIDAsIG51bVNhbXBsZXMgKiBzaXplb2YoaW50MTZfdCkpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjphZGRFZmZlY3Qoc3A8RWZmZWN0TW9kdWxlPiYgZWZmZWN0KQoreworICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgZGVzYyA9IGVmZmVjdC0+ZGVzYygpOworICAgIHVpbnQzMl90IGluc2VydFByZWYgPSBkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfSU5TRVJUX01BU0s7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworCisgICAgaWYgKChkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAvLyBBdXhpbGlhcnkgZWZmZWN0cyBhcmUgaW5zZXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBtRWZmZWN0cyB2ZWN0b3IgYXMKKyAgICAgICAgLy8gdGhleSBhcmUgcHJvY2Vzc2VkIGZpcnN0IGFuZCBhY2N1bXVsYXRlZCBpbiBjaGFpbiBpbnB1dCBidWZmZXIKKyAgICAgICAgbUVmZmVjdHMuaW5zZXJ0QXQoZWZmZWN0LCAwKTsKKyAgICAgICAgc3A8VGhyZWFkQmFzZT4gdGhyZWFkID0gbVRocmVhZC5wcm9tb3RlKCk7CisgICAgICAgIGlmICh0aHJlYWQgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CisgICAgICAgIH0KKyAgICAgICAgLy8gdGhlIGlucHV0IGJ1ZmZlciBmb3IgYXV4aWxpYXJ5IGVmZmVjdCBjb250YWlucyBtb25vIHNhbXBsZXMgaW4KKyAgICAgICAgLy8gMzIgYml0IGZvcm1hdC4gVGhpcyBpcyB0byBhdm9pZCBzYXR1cmF0aW9uIGluIEF1ZG9NaXhlcgorICAgICAgICAvLyBhY2N1bXVsYXRpb24gc3RhZ2UuIFNhdHVyYXRpb24gaXMgZG9uZSBpbiBFZmZlY3RNb2R1bGU6OnByb2Nlc3MoKSBiZWZvcmUKKyAgICAgICAgLy8gY2FsbGluZyB0aGUgcHJvY2VzcyBpbiBlZmZlY3QgZW5naW5lCisgICAgICAgIHNpemVfdCBudW1TYW1wbGVzID0gdGhyZWFkLT5mcmFtZUNvdW50KCk7CisgICAgICAgIGludDMyX3QgKmJ1ZmZlciA9IG5ldyBpbnQzMl90W251bVNhbXBsZXNdOworICAgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBudW1TYW1wbGVzICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgZWZmZWN0LT5zZXRJbkJ1ZmZlcigoaW50MTZfdCAqKWJ1ZmZlcik7CisgICAgICAgIC8vIGF1eGlsaWFyeSBlZmZlY3RzIG91dHB1dCBzYW1wbGVzIHRvIGNoYWluIGlucHV0IGJ1ZmZlciBmb3IgZnVydGhlciBwcm9jZXNzaW5nCisgICAgICAgIC8vIGJ5IGluc2VydCBlZmZlY3RzCisgICAgICAgIGVmZmVjdC0+c2V0T3V0QnVmZmVyKG1JbkJ1ZmZlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSW5zZXJ0IGVmZmVjdHMgYXJlIGluc2VydGVkIGF0IHRoZSBlbmQgb2YgbUVmZmVjdHMgdmVjdG9yIGFzIHRoZXkgYXJlIHByb2Nlc3NlZAorICAgICAgICAvLyAgYWZ0ZXIgdHJhY2sgYW5kIGF1eGlsaWFyeSBlZmZlY3RzLgorICAgICAgICAvLyBJbnNlcnQgZWZmZWN0IG9yZGVyIGFzIGEgZnVuY3Rpb24gb2YgaW5kaWNhdGVkIHByZWZlcmVuY2U6CisgICAgICAgIC8vICBpZiBFRkZFQ1RfRkxBR19JTlNFUlRfRVhDTFVTSVZFLCBpbnNlcnQgaW4gZmlyc3QgcG9zaXRpb24gb3IgcmVqZWN0IGlmCisgICAgICAgIC8vICBhbm90aGVyIGVmZmVjdCBpcyBwcmVzZW50CisgICAgICAgIC8vICBlbHNlIGlmIEVGRkVDVF9GTEFHX0lOU0VSVF9GSVJTVCwgaW5zZXJ0IGluIGZpcnN0IHBvc2l0aW9uIG9yIGFmdGVyIHRoZQorICAgICAgICAvLyAgbGFzdCBlZmZlY3QgY2xhaW1pbmcgZmlyc3QgcG9zaXRpb24KKyAgICAgICAgLy8gIGVsc2UgaWYgRUZGRUNUX0ZMQUdfSU5TRVJUX0xBU1QsIGluc2VydCBpbiBsYXN0IHBvc2l0aW9uIG9yIGJlZm9yZSB0aGUKKyAgICAgICAgLy8gIGZpcnN0IGVmZmVjdCBjbGFpbWluZyBsYXN0IHBvc2l0aW9uCisgICAgICAgIC8vICBlbHNlIGlmIEVGRkVDVF9GTEFHX0lOU0VSVF9BTlkgaW5zZXJ0IGFmdGVyIGZpcnN0IG9yIGJlZm9yZSBsYXN0CisgICAgICAgIC8vIFJlamVjdCBpbnNlcnRpb24gaWYgYW4gZWZmZWN0IHdpdGggRUZGRUNUX0ZMQUdfSU5TRVJUX0VYQ0xVU0lWRSBpcworICAgICAgICAvLyBhbHJlYWR5IHByZXNlbnQKKworICAgICAgICBpbnQgc2l6ZSA9IChpbnQpbUVmZmVjdHMuc2l6ZSgpOworICAgICAgICBpbnQgaWR4X2luc2VydCA9IHNpemU7CisgICAgICAgIGludCBpZHhfaW5zZXJ0X2ZpcnN0ID0gLTE7CisgICAgICAgIGludCBpZHhfaW5zZXJ0X2xhc3QgPSAtMTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkID0gbUVmZmVjdHNbaV0tPmRlc2MoKTsKKyAgICAgICAgICAgIHVpbnQzMl90IGlNb2RlID0gZC5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSzsKKyAgICAgICAgICAgIHVpbnQzMl90IGlQcmVmID0gZC5mbGFncyAmIEVGRkVDVF9GTEFHX0lOU0VSVF9NQVNLOworICAgICAgICAgICAgaWYgKGlNb2RlID09IEVGRkVDVF9GTEFHX1RZUEVfSU5TRVJUKSB7CisgICAgICAgICAgICAgICAgLy8gY2hlY2sgaW52YWxpZCBlZmZlY3QgY2hhaW5pbmcgY29tYmluYXRpb25zCisgICAgICAgICAgICAgICAgaWYgKGluc2VydFByZWYgPT0gRUZGRUNUX0ZMQUdfSU5TRVJUX0VYQ0xVU0lWRSB8fAorICAgICAgICAgICAgICAgICAgICBpUHJlZiA9PSBFRkZFQ1RfRkxBR19JTlNFUlRfRVhDTFVTSVZFKSB7CisgICAgICAgICAgICAgICAgICAgIExPR1coImFkZEVmZmVjdCgpIGNvdWxkIG5vdCBpbnNlcnQgZWZmZWN0ICVzOiBleGNsdXNpdmUgY29uZmxpY3Qgd2l0aCAlcyIsIGRlc2MubmFtZSwgZC5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyByZW1lbWJlciBwb3NpdGlvbiBvZiBmaXJzdCBpbnNlcnQgZWZmZWN0IGFuZCBieSBkZWZhdWx0CisgICAgICAgICAgICAgICAgLy8gc2VsZWN0IHRoaXMgYXMgaW5zZXJ0IHBvc2l0aW9uIGZvciBuZXcgZWZmZWN0CisgICAgICAgICAgICAgICAgaWYgKGlkeF9pbnNlcnQgPT0gc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBpZHhfaW5zZXJ0ID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgcG9zaXRpb24gb2YgbGFzdCBpbnNlcnQgZWZmZWN0IGNsYWltaW5nCisgICAgICAgICAgICAgICAgLy8gZmlyc3QgcG9zaXRpb24KKyAgICAgICAgICAgICAgICBpZiAoaVByZWYgPT0gRUZGRUNUX0ZMQUdfSU5TRVJUX0ZJUlNUKSB7CisgICAgICAgICAgICAgICAgICAgIGlkeF9pbnNlcnRfZmlyc3QgPSBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyByZW1lbWJlciBwb3NpdGlvbiBvZiBmaXJzdCBpbnNlcnQgZWZmZWN0IGNsYWltaW5nCisgICAgICAgICAgICAgICAgLy8gbGFzdCBwb3NpdGlvbgorICAgICAgICAgICAgICAgIGlmIChpUHJlZiA9PSBFRkZFQ1RfRkxBR19JTlNFUlRfTEFTVCAmJgorICAgICAgICAgICAgICAgICAgICBpZHhfaW5zZXJ0X2xhc3QgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWR4X2luc2VydF9sYXN0ID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBtb2RpZnkgaWR4X2luc2VydCBmcm9tIGZpcnN0IHBvc2l0aW9uIGlmIG5lZWRlZAorICAgICAgICBpZiAoaW5zZXJ0UHJlZiA9PSBFRkZFQ1RfRkxBR19JTlNFUlRfTEFTVCkgeworICAgICAgICAgICAgaWYgKGlkeF9pbnNlcnRfbGFzdCAhPSAtMSkgeworICAgICAgICAgICAgICAgIGlkeF9pbnNlcnQgPSBpZHhfaW5zZXJ0X2xhc3Q7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlkeF9pbnNlcnQgPSBzaXplOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlkeF9pbnNlcnRfZmlyc3QgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpZHhfaW5zZXJ0ID0gaWR4X2luc2VydF9maXJzdCArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBhbHdheXMgcmVhZCBzYW1wbGVzIGZyb20gY2hhaW4gaW5wdXQgYnVmZmVyCisgICAgICAgIGVmZmVjdC0+c2V0SW5CdWZmZXIobUluQnVmZmVyKTsKKworICAgICAgICAvLyBpZiBsYXN0IGVmZmVjdCBpbiB0aGUgY2hhaW4sIG91dHB1dCBzYW1wbGVzIHRvIGNoYWluCisgICAgICAgIC8vIG91dHB1dCBidWZmZXIsIG90aGVyd2lzZSB0byBjaGFpbiBpbnB1dCBidWZmZXIKKyAgICAgICAgaWYgKGlkeF9pbnNlcnQgPT0gc2l6ZSkgeworICAgICAgICAgICAgaWYgKGlkeF9pbnNlcnQgIT0gMCkgeworICAgICAgICAgICAgICAgIG1FZmZlY3RzW2lkeF9pbnNlcnQtMV0tPnNldE91dEJ1ZmZlcihtSW5CdWZmZXIpOworICAgICAgICAgICAgICAgIG1FZmZlY3RzW2lkeF9pbnNlcnQtMV0tPmNvbmZpZ3VyZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWZmZWN0LT5zZXRPdXRCdWZmZXIobU91dEJ1ZmZlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlZmZlY3QtPnNldE91dEJ1ZmZlcihtSW5CdWZmZXIpOworICAgICAgICB9CisgICAgICAgIG1FZmZlY3RzLmluc2VydEF0KGVmZmVjdCwgaWR4X2luc2VydCk7CisgICAgICAgIC8vIEFsd2F5cyBnaXZlIHZvbHVtZSBjb250cm9sIHRvIGxhc3QgZWZmZWN0IGluIGNoYWluIHdpdGggdm9sdW1lIGNvbnRyb2wgY2FwYWJpbGl0eQorICAgICAgICBpZiAoKChkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfVk9MVU1FX01BU0spICYgRUZGRUNUX0ZMQUdfVk9MVU1FX0NUUkwpICYmCisgICAgICAgICAgICAgICAgbVZvbHVtZUN0cmxJZHggPCBpZHhfaW5zZXJ0KSB7CisgICAgICAgICAgICBtVm9sdW1lQ3RybElkeCA9IGlkeF9pbnNlcnQ7CisgICAgICAgIH0KKworICAgICAgICBMT0dWKCJhZGRFZmZlY3QoKSBlZmZlY3QgJXAsIGFkZGVkIGluIGNoYWluICVwIGF0IHJhbmsgJWQiLCBlZmZlY3QuZ2V0KCksIHRoaXMsIGlkeF9pbnNlcnQpOworICAgIH0KKyAgICBlZmZlY3QtPmNvbmZpZ3VyZSgpOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc2l6ZV90IEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW46OnJlbW92ZUVmZmVjdChjb25zdCBzcDxFZmZlY3RNb2R1bGU+JiBlZmZlY3QpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKworICAgIGludCBzaXplID0gKGludCltRWZmZWN0cy5zaXplKCk7CisgICAgaW50IGk7CisgICAgdWludDMyX3QgdHlwZSA9IGVmZmVjdC0+ZGVzYygpLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLOworCisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBpZiAoZWZmZWN0ID09IG1FZmZlY3RzW2ldKSB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgICAgIGRlbGV0ZVtdIGVmZmVjdC0+aW5CdWZmZXIoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPT0gc2l6ZSAtIDEgJiYgaSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1FZmZlY3RzW2kgLSAxXS0+c2V0T3V0QnVmZmVyKG1PdXRCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICBtRWZmZWN0c1tpIC0gMV0tPmNvbmZpZ3VyZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1FZmZlY3RzLnJlbW92ZUF0KGkpOworICAgICAgICAgICAgTE9HVigicmVtb3ZlRWZmZWN0KCkgZWZmZWN0ICVwLCByZW1vdmVkIGZyb20gY2hhaW4gJXAgYXQgcmFuayAlZCIsIGVmZmVjdC5nZXQoKSwgdGhpcywgaSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBSZXR1cm4gdm9sdW1lIGNvbnRyb2wgdG8gbGFzdCBlZmZlY3QgaW4gY2hhaW4gd2l0aCB2b2x1bWUgY29udHJvbCBjYXBhYmlsaXR5CisgICAgaWYgKG1Wb2x1bWVDdHJsSWR4ID09IGkpIHsKKyAgICAgICAgc2l6ZSA9IChpbnQpbUVmZmVjdHMuc2l6ZSgpOworICAgICAgICBmb3IgKGkgPSBzaXplOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICBpZiAoKG1FZmZlY3RzW2kgLSAxXS0+ZGVzYygpLmZsYWdzICYgRUZGRUNUX0ZMQUdfVk9MVU1FX01BU0spICYgRUZGRUNUX0ZMQUdfVk9MVU1FX0NUUkwpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBtVm9sdW1lQ3RybElkeCByZXNldCB0byAtMSBpZiBubyBlZmZlY3QgZm91bmQgd2l0aCB2b2x1bWUgY29udHJvbCBmbGFnIHNldAorICAgICAgICBtVm9sdW1lQ3RybElkeCA9IGkgLSAxOworICAgIH0KKworICAgIHJldHVybiBtRWZmZWN0cy5zaXplKCk7Cit9CisKK3ZvaWQgQXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbjo6c2V0RGV2aWNlKHVpbnQzMl90IGRldmljZSkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBtRWZmZWN0c1tpXS0+c2V0RGV2aWNlKGRldmljZSk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW46OnNldE1vZGUodWludDMyX3QgbW9kZSkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBtRWZmZWN0c1tpXS0+c2V0TW9kZShtb2RlKTsKKyAgICB9Cit9CisKK2Jvb2wgQXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbjo6c2V0Vm9sdW1lKHVpbnQzMl90ICpsZWZ0LCB1aW50MzJfdCAqcmlnaHQpCit7CisgICAgdWludDMyX3QgbmV3TGVmdCA9ICpsZWZ0OworICAgIHVpbnQzMl90IG5ld1JpZ2h0ID0gKnJpZ2h0OworICAgIGJvb2wgaGFzQ29udHJvbCA9IGZhbHNlOworCisgICAgLy8gZmlyc3QgZ2V0IHZvbHVtZSB1cGRhdGUgZnJvbSB2b2x1bWUgY29udHJvbGxlcgorICAgIGlmIChtVm9sdW1lQ3RybElkeCA+PSAwKSB7CisgICAgICAgIG1FZmZlY3RzW21Wb2x1bWVDdHJsSWR4XS0+c2V0Vm9sdW1lKCZuZXdMZWZ0LCAmbmV3UmlnaHQsIHRydWUpOworICAgICAgICBoYXNDb250cm9sID0gdHJ1ZTsKKyAgICB9CisgICAgLy8gdGhlbiBpbmRpY2F0ZSB2b2x1bWUgdG8gYWxsIG90aGVyIGVmZmVjdHMgaW4gY2hhaW4uCisgICAgLy8gUGFzcyBhbHRlcmVkIHZvbHVtZSB0byBlZmZlY3RzIGJlZm9yZSB2b2x1bWUgY29udHJvbGxlcgorICAgIC8vIGFuZCByZXF1ZXN0ZWQgdm9sdW1lIHRvIGVmZmVjdHMgYWZ0ZXIgY29udHJvbGxlcgorICAgIHVpbnQzMl90IGxWb2wgPSBuZXdMZWZ0OworICAgIHVpbnQzMl90IHJWb2wgPSBuZXdSaWdodDsKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBpZiAoKGludClpID09IG1Wb2x1bWVDdHJsSWR4KSBjb250aW51ZTsKKyAgICAgICAgLy8gdGhpcyBhbHNvIHdvcmtzIGZvciBtVm9sdW1lQ3RybElkeCA9PSAtMSB3aGVuIHRoZXJlIGlzIG5vIHZvbHVtZSBjb250cm9sbGVyCisgICAgICAgIGlmICgoaW50KWkgPiBtVm9sdW1lQ3RybElkeCkgeworICAgICAgICAgICAgbFZvbCA9ICpsZWZ0OworICAgICAgICAgICAgclZvbCA9ICpyaWdodDsKKyAgICAgICAgfQorICAgICAgICBtRWZmZWN0c1tpXS0+c2V0Vm9sdW1lKCZsVm9sLCAmclZvbCwgZmFsc2UpOworICAgIH0KKyAgICAqbGVmdCA9IG5ld0xlZnQ7CisgICAgKnJpZ2h0ID0gbmV3UmlnaHQ7CisKKyAgICByZXR1cm4gaGFzQ29udHJvbDsKK30KKworc3A8QXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU+IEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW46OmdldFZvbHVtZUNvbnRyb2xsZXIoKQoreworICAgIHNwPEVmZmVjdE1vZHVsZT4gZWZmZWN0OworICAgIGlmIChtVm9sdW1lQ3RybElkeCA+PSAwKSB7CisgICAgICAgIGVmZmVjdCA9IG1FZmZlY3RzW21Wb2x1bWVDdHJsSWR4XTsKKyAgICB9CisgICAgcmV0dXJuIGVmZmVjdDsKK30KKworCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjpkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncykKK3sKKyAgICBjb25zdCBzaXplX3QgU0laRSA9IDI1NjsKKyAgICBjaGFyIGJ1ZmZlcltTSVpFXTsKKyAgICBTdHJpbmc4IHJlc3VsdDsKKworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIkVmZmVjdHMgZm9yIHNlc3Npb24gJWQ6XG4iLCBtU2Vzc2lvbklkKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisKKyAgICBib29sIGxvY2tlZCA9IHRyeUxvY2sobUxvY2spOworICAgIC8vIGZhaWxlZCB0byBsb2NrIC0gQXVkaW9GbGluZ2VyIGlzIHByb2JhYmx5IGRlYWRsb2NrZWQKKyAgICBpZiAoIWxvY2tlZCkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCJcdENvdWxkIG5vdCBsb2NrIG11dGV4OlxuIik7CisgICAgfQorCisgICAgcmVzdWx0LmFwcGVuZCgiXHROdW0gZnggSW4gYnVmZmVyICAgT3V0IGJ1ZmZlciAgIFZvbCBjdHJsIEFjdGl2ZSB0cmFja3M6XG4iKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdCUwMmQgICAgIDB4JTA4eCAgMHglMDh4ICAgJTAyZCAgICAgICAlZFxuIiwKKyAgICAgICAgICAgIG1FZmZlY3RzLnNpemUoKSwKKyAgICAgICAgICAgICh1aW50MzJfdCltSW5CdWZmZXIsCisgICAgICAgICAgICAodWludDMyX3QpbU91dEJ1ZmZlciwKKyAgICAgICAgICAgIChtVm9sdW1lQ3RybElkeCA9PSAtMSkgPyAwIDogbUVmZmVjdHNbbVZvbHVtZUN0cmxJZHhdLT5pZCgpLAorICAgICAgICAgICAgbUFjdGl2ZVRyYWNrQ250KTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgd3JpdGUoZmQsIHJlc3VsdC5zdHJpbmcoKSwgcmVzdWx0LnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1FZmZlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHNwPEVmZmVjdE1vZHVsZT4gZWZmZWN0ID0gbUVmZmVjdHNbaV07CisgICAgICAgIGlmIChlZmZlY3QgIT0gMCkgeworICAgICAgICAgICAgZWZmZWN0LT5kdW1wKGZkLCBhcmdzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsb2NrZWQpIHsKKyAgICAgICAgbUxvY2sudW5sb2NrKCk7CisgICAgfQorCisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCisjdW5kZWYgTE9HX1RBRworI2RlZmluZSBMT0dfVEFHICJBdWRpb0ZsaW5nZXIiCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpvblRyYW5zYWN0KApkaWZmIC0tZ2l0IGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9GbGluZ2VyLmggYi9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0ZsaW5nZXIuaAppbmRleCA3MzllYzMzLi40MmRjYTRjIDEwMDY0NAotLS0gYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0ZsaW5nZXIuaAorKysgYi9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0ZsaW5nZXIuaApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiBjbGFzcyBhdWRpb190cmFja19jYmxrX3Q7CitjbGFzcyBlZmZlY3RfcGFyYW1fY2Jsa190OwogY2xhc3MgQXVkaW9NaXhlcjsKIGNsYXNzIEF1ZGlvQnVmZmVyOwogY2xhc3MgQXVkaW9SZXNhbXBsZXI7CkBAIC01Nyw3ICs1OCw3IEBACiAKIHN0YXRpYyBjb25zdCBuc2Vjc190IGtTdGFuZGJ5VGltZUluTnNlY3MgPSBzZWNvbmRzKDMpOwogCi1jbGFzcyBBdWRpb0ZsaW5nZXIgOiBwdWJsaWMgQm5BdWRpb0ZsaW5nZXIsIHB1YmxpYyBJQmluZGVyOjpEZWF0aFJlY2lwaWVudAorY2xhc3MgQXVkaW9GbGluZ2VyIDogcHVibGljIEJuQXVkaW9GbGluZ2VyCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5zdGFudGlhdGUoKTsKQEAgLTc1LDYgKzc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc2Vzc2lvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAqc3RhdHVzKTsKIAogICAgIHZpcnR1YWwgICAgIHVpbnQzMl90ICAgIHNhbXBsZVJhdGUoaW50IG91dHB1dCkgY29uc3Q7CkBAIC0xMzksOCArMTQxLDMwIEBACiAKICAgICB2aXJ0dWFsIHN0YXR1c190IGdldFJlbmRlclBvc2l0aW9uKHVpbnQzMl90ICpoYWxGcmFtZXMsIHVpbnQzMl90ICpkc3BGcmFtZXMsIGludCBvdXRwdXQpOwogCi0gICAgLy8gSUJpbmRlcjo6RGVhdGhSZWNpcGllbnQKLSAgICB2aXJ0dWFsICAgICB2b2lkICAgICAgICBiaW5kZXJEaWVkKGNvbnN0IHdwPElCaW5kZXI+JiB3aG8pOworICAgIHZpcnR1YWwgaW50IG5ld0F1ZGlvU2Vzc2lvbklkKCk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IGxvYWRFZmZlY3RMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgdW5sb2FkRWZmZWN0TGlicmFyeShpbnQgaGFuZGxlKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpudW1FZmZlY3RzKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcXVlcnlFZmZlY3QodWludDMyX3QgaW5kZXgsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2NyaXB0b3IpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRFZmZlY3REZXNjcmlwdG9yKGVmZmVjdF91dWlkX3QgKnBVdWlkLCBlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjcmlwdG9yKTsKKworICAgIHZpcnR1YWwgc3A8SUVmZmVjdD4gY3JlYXRlRWZmZWN0KHBpZF90IHBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUVmZmVjdENsaWVudD4mIGVmZmVjdENsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcHJpb3JpdHksCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ICpzdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplbmFibGVkKTsKKworICAgICAgICAgICAgc3RhdHVzX3QgcmVnaXN0ZXJFZmZlY3RSZXNvdXJjZV9sKGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MpOworICAgICAgICAgICAgdm9pZCAgICAgdW5yZWdpc3RlckVmZmVjdFJlc291cmNlX2woZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzYyk7CiAKICAgICBlbnVtIGhhcmR3YXJlX2NhbGxfc3RhdGUgewogICAgICAgICBBVURJT19IV19JRExFID0gMCwKQEAgLTE3MCw2ICsxOTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhbm5lbENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc2Vzc2lvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAqc3RhdHVzKTsKIAogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgIG9uVHJhbnNhY3QoCkBAIC0xNzgsNiArMjAzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyY2VsKiByZXBseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpOwogCisgICAgICAgICAgICAgICAgdWludDMyX3QgICAgZ2V0TW9kZSgpIHsgcmV0dXJuIG1Nb2RlOyB9CisKIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9GbGluZ2VyKCk7CiAgICAgdmlydHVhbCAgICAgICAgICAgICAgICAgfkF1ZGlvRmxpbmdlcigpOwpAQCAtMjA1LDYgKzIzMiwyNyBAQAogICAgICAgICBwaWRfdCAgICAgICAgICAgICAgIG1QaWQ7CiAgICAgfTsKIAorICAgIC8vIC0tLSBOb3RpZmljYXRpb24gQ2xpZW50IC0tLQorICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBJQmluZGVyOjpEZWF0aFJlY2lwaWVudCB7CisgICAgcHVibGljOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNsaWVudChjb25zdCBzcDxBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJQXVkaW9GbGluZ2VyQ2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgcGlkKTsKKyAgICAgICAgdmlydHVhbCAgICAgICAgICAgICB+Tm90aWZpY2F0aW9uQ2xpZW50KCk7CisKKyAgICAgICAgICAgICAgICBzcDxJQXVkaW9GbGluZ2VyQ2xpZW50PiAgICBjbGllbnQoKSB7IHJldHVybiBtQ2xpZW50OyB9CisKKyAgICAgICAgICAgICAgICAvLyBJQmluZGVyOjpEZWF0aFJlY2lwaWVudAorICAgICAgICAgICAgICAgIHZpcnR1YWwgICAgIHZvaWQgICAgICAgIGJpbmRlckRpZWQoY29uc3Qgd3A8SUJpbmRlcj4mIHdobyk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNsaWVudChjb25zdCBOb3RpZmljYXRpb25DbGllbnQmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25DbGllbnQmIG9wZXJhdG9yID0gKGNvbnN0IE5vdGlmaWNhdGlvbkNsaWVudCYpOworCisgICAgICAgIHNwPEF1ZGlvRmxpbmdlcj4gICAgICAgIG1BdWRpb0ZsaW5nZXI7CisgICAgICAgIHBpZF90ICAgICAgICAgICAgICAgICAgIG1QaWQ7CisgICAgICAgIHNwPElBdWRpb0ZsaW5nZXJDbGllbnQ+IG1DbGllbnQ7CisgICAgfTsKIAogICAgIGNsYXNzIFRyYWNrSGFuZGxlOwogICAgIGNsYXNzIFJlY29yZEhhbmRsZTsKQEAgLTIxNSw2ICsyNjMsOSBAQAogICAgIGNsYXNzIER1cGxpY2F0aW5nVGhyZWFkOwogICAgIGNsYXNzIFRyYWNrOwogICAgIGNsYXNzIFJlY29yZFRyYWNrOworICAgIGNsYXNzIEVmZmVjdE1vZHVsZTsKKyAgICBjbGFzcyBFZmZlY3RIYW5kbGU7CisgICAgY2xhc3MgRWZmZWN0Q2hhaW47CiAKICAgICBjbGFzcyBUaHJlYWRCYXNlIDogcHVibGljIFRocmVhZCB7CiAgICAgcHVibGljOgpAQCAtMjUwLDEzICszMDEsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhbm5lbENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5UcmFja0Jhc2UoKTsKIAogICAgICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICBzdGFydCgpID0gMDsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgc3RvcCgpID0gMDsKICAgICAgICAgICAgICAgICAgICAgc3A8SU1lbW9yeT4gZ2V0Q2JsaygpIGNvbnN0OwogICAgICAgICAgICAgICAgICAgICBhdWRpb190cmFja19jYmxrX3QqIGNibGsoKSBjb25zdCB7IHJldHVybiBtQ2JsazsgfQorICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICBzZXNzaW9uSWQoKSB7IHJldHVybiBtU2Vzc2lvbklkOyB9CiAKICAgICAgICAgcHJvdGVjdGVkOgogICAgICAgICAgICAgZnJpZW5kIGNsYXNzIFRocmVhZEJhc2U7CkBAIC0zMDUsNiArMzU4LDcgQEAKICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgbUNsaWVudFRpZDsKICAgICAgICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAgbUZvcm1hdDsKICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgbUZsYWdzOworICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICBtU2Vzc2lvbklkOwogICAgICAgICB9OwogCiAgICAgICAgIGNsYXNzIENvbmZpZ0V2ZW50IHsKQEAgLTMyNCw3ICszNzgsNyBAQAogICAgICAgICB2aXJ0dWFsICAgICBib29sICAgICAgICBjaGVja0Zvck5ld1BhcmFtZXRlcnNfbCgpID0gMDsKICAgICAgICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgc2V0UGFyYW1ldGVycyhjb25zdCBTdHJpbmc4JiBrZXlWYWx1ZVBhaXJzKTsKICAgICAgICAgdmlydHVhbCAgICAgU3RyaW5nOCAgICAgZ2V0UGFyYW1ldGVycyhjb25zdCBTdHJpbmc4JiBrZXlzKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgICAgIHZvaWQgICAgICAgIGF1ZGlvQ29uZmlnQ2hhbmdlZChpbnQgZXZlbnQsIGludCBwYXJhbSA9IDApID0gMDsKKyAgICAgICAgdmlydHVhbCAgICAgdm9pZCAgICAgICAgYXVkaW9Db25maWdDaGFuZ2VkX2woaW50IGV2ZW50LCBpbnQgcGFyYW0gPSAwKSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIHNlbmRDb25maWdFdmVudChpbnQgZXZlbnQsIGludCBwYXJhbSA9IDApOwogICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBzZW5kQ29uZmlnRXZlbnRfbChpbnQgZXZlbnQsIGludCBwYXJhbSA9IDApOwogICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBwcm9jZXNzQ29uZmlnRXZlbnRzKCk7CkBAIC0zNDgsOSArNDAyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHNwPEF1ZGlvRmxpbmdlcj4gICAgICAgIG1BdWRpb0ZsaW5nZXI7CiAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG1TYW1wbGVSYXRlOwogICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgICAgICAgICBtRnJhbWVDb3VudDsKLSAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbUNoYW5uZWxDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbUNoYW5uZWxzOworICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCAgICAgICAgICAgICAgICBtQ2hhbm5lbENvdW50OworICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCAgICAgICAgICAgICAgICBtRnJhbWVTaXplOwogICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtRm9ybWF0OwotICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtRnJhbWVTaXplOwogICAgICAgICAgICAgICAgICAgICBDb25kaXRpb24gICAgICAgICAgICAgICBtUGFyYW1Db25kOwogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nOD4gICAgICAgICBtTmV3UGFyYW1ldGVyczsKICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgbVBhcmFtU3RhdHVzOwpAQCAtMzg2LDcgKzQ0MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhbm5lbENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5UcmFjaygpOwogCiAgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIGR1bXAoY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSk7CkBAIC00MDUsNiArNDYxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlKCkgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1TdHJlYW1UeXBlOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ICAgIGF0dGFjaEF1eEVmZmVjdChpbnQgRWZmZWN0SWQpOworICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBzZXRBdXhCdWZmZXIoaW50IEVmZmVjdElkLCBpbnQzMl90ICpidWZmZXIpOworICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAqYXV4QnVmZmVyKCkgeyByZXR1cm4gbUF1eEJ1ZmZlcjsgfQorICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBzZXRNYWluQnVmZmVyKGludDE2X3QgKmJ1ZmZlcikgeyBtTWFpbkJ1ZmZlciA9IGJ1ZmZlcjsgfQorICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICAgICAqbWFpbkJ1ZmZlcigpIHsgcmV0dXJuIG1NYWluQnVmZmVyOyB9CisgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIGF1eEVmZmVjdElkKCkgeyByZXR1cm4gbUF1eEVmZmVjdElkOyB9CiAKIAogICAgICAgICBwcm90ZWN0ZWQ6CkBAIC00NDUsNiArNTA3LDkgQEAKICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgbVJlc2V0RG9uZTsKICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgbVN0cmVhbVR5cGU7CiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIG1OYW1lOworICAgICAgICAgICAgaW50MTZfdCAgICAgICAgICAgICAqbU1haW5CdWZmZXI7CisgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICAgICptQXV4QnVmZmVyOworICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICBtQXV4RWZmZWN0SWQ7CiAgICAgICAgIH07ICAvLyBlbmQgb2YgVHJhY2sKIAogCkBAIC00ODYsNyArNTUxLDcgQEAKICAgICAgICAgICAgIER1cGxpY2F0aW5nVGhyZWFkKiAgICAgICAgICBtU291cmNlVGhyZWFkOwogICAgICAgICB9OyAgLy8gZW5kIG9mIE91dHB1dFRyYWNrCiAKLSAgICAgICAgUGxheWJhY2tUaHJlYWQgKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkKTsKKyAgICAgICAgUGxheWJhY2tUaHJlYWQgKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkLCB1aW50MzJfdCBkZXZpY2UpOwogICAgICAgICB2aXJ0dWFsICAgICAgICAgICAgIH5QbGF5YmFja1RocmVhZCgpOwogCiAgICAgICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgIGR1bXAoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKTsKQEAgLTUxOSw2ICs1ODQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeT4mIHNoYXJlZEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAqc3RhdHVzKTsKIAogICAgICAgICAgICAgICAgICAgICBBdWRpb1N0cmVhbU91dCogZ2V0T3V0cHV0KCkgeyByZXR1cm4gbU91dHB1dDsgfQpAQCAtNTI4LDggKzU5NCwzNCBAQAogICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICByZXN0b3JlKCkgeyBpZiAobVN1c3BlbmRlZCkgbVN1c3BlbmRlZC0tOyB9CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgIGlzU3VzcGVuZGVkKCkgeyByZXR1cm4gKG1TdXNwZW5kZWQgIT0gMCk7IH0KICAgICAgICAgdmlydHVhbCAgICAgU3RyaW5nOCAgICAgZ2V0UGFyYW1ldGVycyhjb25zdCBTdHJpbmc4JiBrZXlzKTsKLSAgICAgICAgdmlydHVhbCAgICAgdm9pZCAgICAgICAgYXVkaW9Db25maWdDaGFuZ2VkKGludCBldmVudCwgaW50IHBhcmFtID0gMCk7CisgICAgICAgIHZpcnR1YWwgICAgIHZvaWQgICAgICAgIGF1ZGlvQ29uZmlnQ2hhbmdlZF9sKGludCBldmVudCwgaW50IHBhcmFtID0gMCk7CiAgICAgICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgIGdldFJlbmRlclBvc2l0aW9uKHVpbnQzMl90ICpoYWxGcmFtZXMsIHVpbnQzMl90ICpkc3BGcmFtZXMpOworICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICAgICAqbWl4QnVmZmVyKCkgeyByZXR1cm4gbU1peEJ1ZmZlcjsgfTsKKworICAgICAgICAgICAgICAgICAgICBzcDxFZmZlY3RIYW5kbGU+IGNyZWF0ZUVmZmVjdF9sKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPEF1ZGlvRmxpbmdlcjo6Q2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElFZmZlY3RDbGllbnQ+JiBlZmZlY3RDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ICpzdGF0dXMpOworICAgICAgICAgICAgICAgICAgICB2b2lkIGRpc2Nvbm5lY3RFZmZlY3QoY29uc3Qgc3A8IEVmZmVjdE1vZHVsZT4mIGVmZmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdwPEVmZmVjdEhhbmRsZT4mIGhhbmRsZSk7CisKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNBdWRpb1Nlc3Npb24oaW50IHNlc3Npb25JZCk7CisgICAgICAgICAgICAgICAgICAgIHNwPEVmZmVjdENoYWluPiBnZXRFZmZlY3RDaGFpbihpbnQgc2Vzc2lvbklkKTsKKyAgICAgICAgICAgICAgICAgICAgc3A8RWZmZWN0Q2hhaW4+IGdldEVmZmVjdENoYWluX2woaW50IHNlc3Npb25JZCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1c190IGFkZEVmZmVjdENoYWluX2woY29uc3Qgc3A8RWZmZWN0Q2hhaW4+JiBjaGFpbik7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZW1vdmVFZmZlY3RDaGFpbl9sKGNvbnN0IHNwPEVmZmVjdENoYWluPiYgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICB2b2lkIGxvY2tFZmZlY3RDaGFpbnNfbCgpOworICAgICAgICAgICAgICAgICAgICB2b2lkIHVubG9ja0VmZmVjdENoYWlucygpOworCisgICAgICAgICAgICAgICAgICAgIHNwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlPiBnZXRFZmZlY3RfbChpbnQgc2Vzc2lvbklkLCBpbnQgZWZmZWN0SWQpOworICAgICAgICAgICAgICAgICAgICB2b2lkIGRldGFjaEF1eEVmZmVjdF9sKGludCBlZmZlY3RJZCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1c190IGF0dGFjaEF1eEVmZmVjdChjb25zdCBzcDxBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpUcmFjaz4gdHJhY2ssIGludCBFZmZlY3RJZCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1c190IGF0dGFjaEF1eEVmZmVjdF9sKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OlRyYWNrPiB0cmFjaywgaW50IEVmZmVjdElkKTsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCBzZXRNb2RlKHVpbnQzMl90IG1vZGUpOwogCiAgICAgICAgIHN0cnVjdCAgc3RyZWFtX3R5cGVfdCB7CiAgICAgICAgICAgICBzdHJlYW1fdHlwZV90KCkKQEAgLTU3Miw4ICs2NjQsMTEgQEAKIAogICAgICAgICB2b2lkICAgICAgICByZWFkT3V0cHV0UGFyYW1ldGVycygpOwogCisgICAgICAgIHVpbnQzMl90ICAgIGRldmljZSgpIHsgcmV0dXJuIG1EZXZpY2U7IH0KKwogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgIGR1bXBJbnRlcm5hbHMoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKTsKICAgICAgICAgc3RhdHVzX3QgICAgZHVtcFRyYWNrcyhpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpOworICAgICAgICBzdGF0dXNfdCAgICBkdW1wRWZmZWN0Q2hhaW5zKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CiAKICAgICAgICAgU29ydGVkVmVjdG9yPCBzcDxUcmFjaz4gPiAgICAgICBtVHJhY2tzOwogICAgICAgICAvLyBtU3RyZWFtVHlwZXNbXSB1c2VzIDEgYWRkaXRpb25uYWwgc3RyZWFtIHR5cGUgaW50ZXJuYWxseSBmb3IgdGhlIE91dHB1dFRyYWNrIHVzZWQgYnkgRHVwbGljYXRpbmdUaHJlYWQKQEAgLTU4NCwyMSArNjc5LDE5IEBACiAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU51bVdyaXRlczsKICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTnVtRGVsYXllZFdyaXRlczsKICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSW5Xcml0ZTsKKyAgICAgICAgVmVjdG9yPCBzcDxFZmZlY3RDaGFpbj4gPiAgICAgICBtRWZmZWN0Q2hhaW5zOworICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIG1EZXZpY2U7CiAgICAgfTsKIAogICAgIGNsYXNzIE1peGVyVGhyZWFkIDogcHVibGljIFBsYXliYWNrVGhyZWFkIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE1peGVyVGhyZWFkIChjb25zdCBzcDxBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIsIEF1ZGlvU3RyZWFtT3V0KiBvdXRwdXQsIGludCBpZCk7CisgICAgICAgIE1peGVyVGhyZWFkIChjb25zdCBzcDxBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIsIEF1ZGlvU3RyZWFtT3V0KiBvdXRwdXQsIGludCBpZCwgdWludDMyX3QgZGV2aWNlKTsKICAgICAgICAgdmlydHVhbCAgICAgICAgICAgICB+TWl4ZXJUaHJlYWQoKTsKIAogICAgICAgICAvLyBUaHJlYWQgdmlydHVhbHMKICAgICAgICAgdmlydHVhbCAgICAgYm9vbCAgICAgICAgdGhyZWFkTG9vcCgpOwogCi0gICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIGdldFRyYWNrcyhTb3J0ZWRWZWN0b3IgPCBzcDxUcmFjaz4gPiYgdHJhY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0ZWRWZWN0b3IgPCB3cDxUcmFjaz4gPiYgYWN0aXZlVHJhY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZWFtVHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIHB1dFRyYWNrcyhTb3J0ZWRWZWN0b3IgPCBzcDxUcmFjaz4gPiYgdHJhY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0ZWRWZWN0b3IgPCB3cDxUcmFjaz4gPiYgYWN0aXZlVHJhY2tzKTsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgaW52YWxpZGF0ZVRyYWNrcyhpbnQgc3RyZWFtVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgICAgIGJvb2wgICAgICAgIGNoZWNrRm9yTmV3UGFyYW1ldGVyc19sKCk7CiAgICAgICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgIGR1bXBJbnRlcm5hbHMoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKTsKIApAQCAtNjE1LDcgKzcwOCw3IEBACiAgICAgY2xhc3MgRGlyZWN0T3V0cHV0VGhyZWFkIDogcHVibGljIFBsYXliYWNrVGhyZWFkIHsKICAgICBwdWJsaWM6CiAKLSAgICAgICAgRGlyZWN0T3V0cHV0VGhyZWFkIChjb25zdCBzcDxBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIsIEF1ZGlvU3RyZWFtT3V0KiBvdXRwdXQsIGludCBpZCk7CisgICAgICAgIERpcmVjdE91dHB1dFRocmVhZCAoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLCBBdWRpb1N0cmVhbU91dCogb3V0cHV0LCBpbnQgaWQsIHVpbnQzMl90IGRldmljZSk7CiAgICAgICAgIH5EaXJlY3RPdXRwdXRUaHJlYWQoKTsKIAogICAgICAgICAvLyBUaHJlYWQgdmlydHVhbHMKQEAgLTYzMCw4ICs3MjMsMTIgQEAKICAgICAgICAgdmlydHVhbCAgICAgdWludDMyX3QgICAgaWRsZVNsZWVwVGltZVVzKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBmbG9hdCBtTGVmdFZvbHVtZTsKLSAgICAgICAgZmxvYXQgbVJpZ2h0Vm9sdW1lOworICAgICAgICB2b2lkIGFwcGx5Vm9sdW1lKHVpbnQxNl90IGxlZnRWb2wsIHVpbnQxNl90IHJpZ2h0Vm9sLCBib29sIHJhbXApOworCisgICAgICAgIGZsb2F0IG1MZWZ0Vm9sRmxvYXQ7CisgICAgICAgIGZsb2F0IG1SaWdodFZvbEZsb2F0OworICAgICAgICB1aW50MTZfdCBtTGVmdFZvbFNob3J0OworICAgICAgICB1aW50MTZfdCBtUmlnaHRWb2xTaG9ydDsKICAgICB9OwogCiAgICAgY2xhc3MgRHVwbGljYXRpbmdUaHJlYWQgOiBwdWJsaWMgTWl4ZXJUaHJlYWQgewpAQCAtNjYxLDYgKzc1OCw4IEBACiAgICAgICAgICAgICAgIGZsb2F0IHN0cmVhbVZvbHVtZUludGVybmFsKGludCBzdHJlYW0pIGNvbnN0IHsgcmV0dXJuIG1TdHJlYW1UeXBlc1tzdHJlYW1dLnZvbHVtZTsgfQogICAgICAgICAgICAgICB2b2lkIGF1ZGlvQ29uZmlnQ2hhbmdlZF9sKGludCBldmVudCwgaW50IGlvSGFuZGxlLCB2b2lkICpwYXJhbTIpOwogCisgICAgICAgICAgICAgIGludCAgbmV4dFVuaXF1ZUlkKCk7CisKICAgICBmcmllbmQgY2xhc3MgQXVkaW9CdWZmZXI7CiAKICAgICBjbGFzcyBUcmFja0hhbmRsZSA6IHB1YmxpYyBhbmRyb2lkOjpCbkF1ZGlvVHJhY2sgewpAQCAtNjc0LDYgKzc3Myw3IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgcGF1c2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkICAgICAgICBzZXRWb2x1bWUoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQpOwogICAgICAgICB2aXJ0dWFsIHNwPElNZW1vcnk+IGdldENibGsoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICBhdHRhY2hBdXhFZmZlY3QoaW50IGVmZmVjdElkKTsKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCBvblRyYW5zYWN0KAogICAgICAgICAgICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncyk7CiAgICAgcHJpdmF0ZToKQEAgLTY4NSw2ICs3ODUsNyBAQAogCiAKICAgICAgICAgICAgICAgICB2b2lkICAgICAgICByZW1vdmVDbGllbnRfbChwaWRfdCBwaWQpOworICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbkNsaWVudChwaWRfdCBwaWQpOwogCiAKICAgICAvLyByZWNvcmQgdGhyZWFkCkBAIC03MDEsNyArODAyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFubmVsQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+UmVjb3JkVHJhY2soKTsKIAogICAgICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICBzdGFydCgpOwpAQCAtNzQ0LDcgKzg0Niw3IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgcmVsZWFzZUJ1ZmZlcihBdWRpb0J1ZmZlclByb3ZpZGVyOjpCdWZmZXIqIGJ1ZmZlcik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCAgICAgICAgY2hlY2tGb3JOZXdQYXJhbWV0ZXJzX2woKTsKICAgICAgICAgdmlydHVhbCBTdHJpbmc4ICAgICBnZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIGtleXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGF1ZGlvQ29uZmlnQ2hhbmdlZChpbnQgZXZlbnQsIGludCBwYXJhbSA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGF1ZGlvQ29uZmlnQ2hhbmdlZF9sKGludCBldmVudCwgaW50IHBhcmFtID0gMCk7CiAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgcmVhZElucHV0UGFyYW1ldGVycygpOwogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCAgZ2V0SW5wdXRGcmFtZXNMb3N0KCk7CiAKQEAgLTc3Niw2ICs4NzgsMjI3IEBACiAgICAgICAgIHNwPFJlY29yZFRocmVhZDo6UmVjb3JkVHJhY2s+IG1SZWNvcmRUcmFjazsKICAgICB9OwogCisgICAgLy8tLS0gQXVkaW8gRWZmZWN0IE1hbmFnZW1lbnQKKworICAgIC8vIEVmZmVjdE1vZHVsZSBhbmQgRWZmZWN0Q2hhaW4gY2xhc3NlcyBib3RoIGhhdmUgdGhlaXIgb3duIG11dGV4IHRvIHByb3RlY3QKKyAgICAvLyBzdGF0ZSBjaGFuZ2VzIG9yIHJlc291cmNlIG1vZGlmaWNhdGlvbnMuIEFsd2F5cyByZXNwZWN0IHRoZSBmb2xsb3dpbmcgb3JkZXIKKyAgICAvLyBpZiBtdWx0aXBsZSBtdXRleGVzIG11c3QgYmUgYWNxdWlyZWQgdG8gYXZvaWQgY3Jvc3MgZGVhZGxvY2s6CisgICAgLy8gQXVkaW9GbGluZ2VyIC0+IFRocmVhZEJhc2UgLT4gRWZmZWN0Q2hhaW4gLT4gRWZmZWN0TW9kdWxlCisKKyAgICAvLyBUaGUgRWZmZWN0TW9kdWxlIGNsYXNzIGlzIGEgd3JhcHBlciBvYmplY3QgY29udHJvbGxpbmcgdGhlIGVmZmVjdCBlbmdpbmUgaW1wbGVtZW50YXRpb24KKyAgICAvLyBpbiB0aGUgZWZmZWN0IGxpYnJhcnkuIEl0IHByZXZlbnRzIGNvbmN1cnJlbnQgY2FsbHMgdG8gcHJvY2VzcygpIGFuZCBjb21tYW5kKCkgZnVuY3Rpb25zCisgICAgLy8gZnJvbSBkaWZmZXJlbnQgY2xpZW50IHRocmVhZHMuIEl0IGtlZXBzIGEgbGlzdCBvZiBFZmZlY3RIYW5kbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nCisgICAgLy8gdG8gYWxsIGNsaWVudCBhcHBsaWNhdGlvbnMgdXNpbmcgdGhpcyBlZmZlY3QgYW5kIG5vdGlmaWVzIGFwcGxpY2F0aW9ucyBvZiBlZmZlY3Qgc3RhdGUsCisgICAgLy8gY29udHJvbCBvciBwYXJhbWV0ZXIgY2hhbmdlcy4gSXQgbWFuYWdlcyB0aGUgYWN0aXZhdGlvbiBzdGF0ZSBtYWNoaW5lIHRvIHNlbmQgYXBwcm9wcmlhdGUKKyAgICAvLyByZXNldCwgZW5hYmxlLCBkaXNhYmxlIGNvbW1hbmRzIHRvIGVmZmVjdCBlbmdpbmUgYW5kIHByb3ZpZGUgdm9sdW1lCisgICAgLy8gcmFtcGluZyB3aGVuIGVmZmVjdHMgYXJlIGFjdGl2YXRlZC9kZWFjdGl2YXRlZC4KKyAgICAvLyBXaGVuIGNvbnRyb2xsaW5nIGFuIGF1eGlsaWFyeSBlZmZlY3QsIHRoZSBFZmZlY3RNb2R1bGUgYWxzbyBwcm92aWRlcyBhbiBpbnB1dCBidWZmZXIgdXNlZCBieQorICAgIC8vIHRoZSBhdHRhY2hlZCB0cmFjayhzKSB0byBhY2N1bXVsYXRlIHRoZWlyIGF1eGlsaWFyeSBjaGFubmVsLgorICAgIGNsYXNzIEVmZmVjdE1vZHVsZTogcHVibGljIFJlZkJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgRWZmZWN0TW9kdWxlKGNvbnN0IHdwPFRocmVhZEJhc2U+JiB3VGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3A8QXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbj4mIGNoYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQpOworICAgICAgICB+RWZmZWN0TW9kdWxlKCk7CisKKyAgICAgICAgZW51bSBlZmZlY3Rfc3RhdGUgeworICAgICAgICAgICAgSURMRSwKKyAgICAgICAgICAgIFJFU0VULAorICAgICAgICAgICAgU1RBUlRJTkcsCisgICAgICAgICAgICBBQ1RJVkUsCisgICAgICAgICAgICBTVE9QUElORywKKyAgICAgICAgICAgIFNUT1BQRUQKKyAgICAgICAgfTsKKworICAgICAgICBpbnQgICAgICAgICBpZCgpIHsgcmV0dXJuIG1JZDsgfQorICAgICAgICB2b2lkIHByb2Nlc3MoKTsKKyAgICAgICAgc3RhdHVzX3QgY29tbWFuZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgKnJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSk7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICBzdGF0dXNfdCBjb25maWd1cmUoKTsKKyAgICAgICAgc3RhdHVzX3QgaW5pdCgpOworICAgICAgICB1aW50MzJfdCBzdGF0ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtU3RhdGU7CisgICAgICAgIH0KKyAgICAgICAgdWludDMyX3Qgc3RhdHVzKCkgeworICAgICAgICAgICAgcmV0dXJuIG1TdGF0dXM7CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzX3QgICAgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpOworICAgICAgICBib29sIGlzRW5hYmxlZCgpOworCisgICAgICAgIHZvaWQgICAgICAgIHNldEluQnVmZmVyKGludDE2X3QgKmJ1ZmZlcikgeyBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5zMTYgPSBidWZmZXI7IH0KKyAgICAgICAgaW50MTZfdCAgICAgKmluQnVmZmVyKCkgeyByZXR1cm4gbUNvbmZpZy5pbnB1dENmZy5idWZmZXIuczE2OyB9CisgICAgICAgIHZvaWQgICAgICAgIHNldE91dEJ1ZmZlcihpbnQxNl90ICpidWZmZXIpIHsgbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnMxNiA9IGJ1ZmZlcjsgfQorICAgICAgICBpbnQxNl90ICAgICAqb3V0QnVmZmVyKCkgeyByZXR1cm4gbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnMxNjsgfQorCisgICAgICAgIHN0YXR1c190IGFkZEhhbmRsZShzcDxFZmZlY3RIYW5kbGU+JiBoYW5kbGUpOworICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoY29uc3Qgd3A8RWZmZWN0SGFuZGxlPiYgaGFuZGxlKTsKKyAgICAgICAgc2l6ZV90IHJlbW92ZUhhbmRsZSAoY29uc3Qgd3A8RWZmZWN0SGFuZGxlPiYgaGFuZGxlKTsKKworICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90JiBkZXNjKCkgeyByZXR1cm4gbURlc2NyaXB0b3I7IH0KKyAgICAgICAgd3A8RWZmZWN0Q2hhaW4+JiAgICAgY2hhaW4oKSB7IHJldHVybiBtQ2hhaW47IH0KKworICAgICAgICBzdGF0dXNfdCAgICAgICAgIHNldERldmljZSh1aW50MzJfdCBkZXZpY2UpOworICAgICAgICBzdGF0dXNfdCAgICAgICAgIHNldFZvbHVtZSh1aW50MzJfdCAqbGVmdCwgdWludDMyX3QgKnJpZ2h0LCBib29sIGNvbnRyb2xsZXIpOworICAgICAgICBzdGF0dXNfdCAgICAgICAgIHNldE1vZGUodWludDMyX3QgbW9kZSk7CisKKyAgICAgICAgc3RhdHVzX3QgICAgICAgICBkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CisKKyAgICBwcm90ZWN0ZWQ6CisKKyAgICAgICAgRWZmZWN0TW9kdWxlKGNvbnN0IEVmZmVjdE1vZHVsZSYpOworICAgICAgICBFZmZlY3RNb2R1bGUmIG9wZXJhdG9yID0gKGNvbnN0IEVmZmVjdE1vZHVsZSYpOworCisgICAgICAgIHN0YXR1c190IHN0YXJ0KCk7CisgICAgICAgIHN0YXR1c190IHN0b3AoKTsKKworICAgICAgICAvLyB1cGRhdGUgdGhpcyB0YWJsZSB3aGVuIEF1ZGlvU3lzdGVtOjphdWRpb19kZXZpY2VzIG9yIGF1ZGlvX2RldmljZV9lIChpbiBFZmZlY3RBcGkuaCkgYXJlIG1vZGlmaWVkCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzRGV2aWNlQ29udlRhYmxlW107CisgICAgICAgIHN0YXRpYyB1aW50MzJfdCBkZXZpY2VBdWRpb1N5c3RlbVRvRWZmZWN0QXBpKHVpbnQzMl90IGRldmljZSk7CisKKyAgICAgICAgLy8gdXBkYXRlIHRoaXMgdGFibGUgd2hlbiBBdWRpb1N5c3RlbTo6YXVkaW9fbW9kZSBvciBhdWRpb19tb2RlX2UgKGluIEVmZmVjdEFwaS5oKSBhcmUgbW9kaWZpZWQKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNNb2RlQ29udlRhYmxlW107CisgICAgICAgIHN0YXRpYyBpbnQgbW9kZUF1ZGlvU3lzdGVtVG9FZmZlY3RBcGkodWludDMyX3QgbW9kZSk7CisKKyAgICAgICAgTXV0ZXggICAgICAgICAgICAgICBtTG9jazsgICAgICAvLyBtdXRleCBmb3IgcHJvY2VzcywgY29tbWFuZHMgYW5kIGhhbmRsZXMgbGlzdCBwcm90ZWN0aW9uCisgICAgICAgIHdwPFRocmVhZEJhc2U+ICAgICAgbVRocmVhZDsgICAgLy8gcGFyZW50IHRocmVhZAorICAgICAgICB3cDxFZmZlY3RDaGFpbj4gICAgIG1DaGFpbjsgICAgIC8vIHBhcmVudCBlZmZlY3QgY2hhaW4KKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICBtSWQ7ICAgICAgICAvLyB0aGlzIGluc3RhbmNlIHVuaXF1ZSBJRAorICAgICAgICBpbnQgICAgICAgICAgICAgICAgIG1TZXNzaW9uSWQ7IC8vIGF1ZGlvIHNlc3Npb24gSUQKKyAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBtRGVzY3JpcHRvcjsvLyBlZmZlY3QgZGVzY3JpcHRvciByZWNlaXZlZCBmcm9tIGVmZmVjdCBlbmdpbmUKKyAgICAgICAgZWZmZWN0X2NvbmZpZ190ICAgICBtQ29uZmlnOyAgICAvLyBpbnB1dCBhbmQgb3V0cHV0IGF1ZGlvIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgZWZmZWN0X2ludGVyZmFjZV90ICBtRWZmZWN0SW50ZXJmYWNlOyAvLyBFZmZlY3QgbW9kdWxlIEMgQVBJCisgICAgICAgIHN0YXR1c190IG1TdGF0dXM7ICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gc3RhdHVzCisgICAgICAgIHVpbnQzMl90IG1TdGF0ZTsgICAgICAgICAgICAgICAgLy8gY3VycmVudCBhY3RpdmF0aW9uIHN0YXRlIChlZmZlY3Rfc3RhdGUpCisgICAgICAgIFZlY3Rvcjwgd3A8RWZmZWN0SGFuZGxlPiA+IG1IYW5kbGVzOyAgICAvLyBsaXN0IG9mIGNsaWVudCBoYW5kbGVzCisgICAgfTsKKworICAgIC8vIFRoZSBFZmZlY3RIYW5kbGUgY2xhc3MgaW1wbGVtZW50cyB0aGUgSUVmZmVjdCBpbnRlcmZhY2UuIEl0IHByb3ZpZGVzIHJlc291cmNlcworICAgIC8vIHRvIHJlY2VpdmUgcGFyYW1ldGVyIHVwZGF0ZXMsIGtlZXBzIHRyYWNrIG9mIGVmZmVjdCBjb250cm9sCisgICAgLy8gb3duZXJzaGlwIGFuZCBzdGF0ZSBhbmQgaGFzIGEgcG9pbnRlciB0byB0aGUgRWZmZWN0TW9kdWxlIG9iamVjdCBpdCBpcyBjb250cm9sbGluZy4KKyAgICAvLyBUaGVyZSBpcyBvbmUgRWZmZWN0SGFuZGxlIG9iamVjdCBmb3IgZWFjaCBhcHBsaWNhdGlvbiBjb250cm9sbGluZyAob3IgdXNpbmcpCisgICAgLy8gYW4gZWZmZWN0IG1vZHVsZS4KKyAgICAvLyBUaGUgRWZmZWN0SGFuZGxlIGlzIG9idGFpbmVkIGJ5IGNhbGxpbmcgQXVkaW9GbGluZ2VyOjpjcmVhdGVFZmZlY3QoKS4KKyAgICBjbGFzcyBFZmZlY3RIYW5kbGU6IHB1YmxpYyBhbmRyb2lkOjpCbkVmZmVjdCB7CisgICAgcHVibGljOgorCisgICAgICAgIEVmZmVjdEhhbmRsZShjb25zdCBzcDxFZmZlY3RNb2R1bGU+JiBlZmZlY3QsCisgICAgICAgICAgICAgICAgY29uc3Qgc3A8QXVkaW9GbGluZ2VyOjpDbGllbnQ+JiBjbGllbnQsCisgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUVmZmVjdENsaWVudD4mIGVmZmVjdENsaWVudCwKKyAgICAgICAgICAgICAgICBpbnQzMl90IHByaW9yaXR5KTsKKyAgICAgICAgdmlydHVhbCB+RWZmZWN0SGFuZGxlKCk7CisKKyAgICAgICAgLy8gSUVmZmVjdAorICAgICAgICB2aXJ0dWFsIHN0YXR1c190IGVuYWJsZSgpOworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IGRpc2FibGUoKTsKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCBjb21tYW5kKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwgdm9pZCAqcENtZERhdGEsIGludCAqcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKTsKKyAgICAgICAgdmlydHVhbCBzcDxJTWVtb3J5PiBnZXRDYmxrKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgb25UcmFuc2FjdCh1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsCisgICAgICAgICAgICAgICAgUGFyY2VsKiByZXBseSwgdWludDMyX3QgZmxhZ3MpOworCisKKyAgICAgICAgLy8gR2l2ZSBvciB0YWtlIGNvbnRyb2wgb2YgZWZmZWN0IG1vZHVsZQorICAgICAgICB2b2lkIHNldENvbnRyb2woYm9vbCBoYXNDb250cm9sLCBib29sIHNpZ25hbCk7CisgICAgICAgIHZvaWQgY29tbWFuZEV4ZWN1dGVkKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwgdm9pZCAqcENtZERhdGEsIGludCByZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpOworICAgICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKworICAgICAgICAvLyBHZXR0ZXJzCisgICAgICAgIGludCBpZCgpIHsgcmV0dXJuIG1FZmZlY3QtPmlkKCk7IH0KKyAgICAgICAgaW50IHByaW9yaXR5KCkgeyByZXR1cm4gbVByaW9yaXR5OyB9CisgICAgICAgIGJvb2wgaGFzQ29udHJvbCgpIHsgcmV0dXJuIG1IYXNDb250cm9sOyB9CisgICAgICAgIHNwPEVmZmVjdE1vZHVsZT4gZWZmZWN0KCkgeyByZXR1cm4gbUVmZmVjdDsgfQorCisgICAgICAgIHZvaWQgZHVtcChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKTsKKworICAgIHByb3RlY3RlZDoKKworICAgICAgICBFZmZlY3RIYW5kbGUoY29uc3QgRWZmZWN0SGFuZGxlJik7CisgICAgICAgIEVmZmVjdEhhbmRsZSYgb3BlcmF0b3IgPShjb25zdCBFZmZlY3RIYW5kbGUmKTsKKworICAgICAgICBzcDxFZmZlY3RNb2R1bGU+IG1FZmZlY3Q7ICAgICAgICAgICAvLyBwb2ludGVyIHRvIGNvbnRyb2xsZWQgRWZmZWN0TW9kdWxlCisgICAgICAgIHNwPElFZmZlY3RDbGllbnQ+IG1FZmZlY3RDbGllbnQ7ICAgIC8vIGNhbGxiYWNrIGludGVyZmFjZSBmb3IgY2xpZW50IG5vdGlmaWNhdGlvbnMKKyAgICAgICAgc3A8Q2xpZW50PiAgICAgICAgICBtQ2xpZW50OyAgICAgICAgLy8gY2xpZW50IGZvciBzaGFyZWQgbWVtb3J5IGFsbG9jYXRpb24KKyAgICAgICAgc3A8SU1lbW9yeT4gICAgICAgICBtQ2Jsa01lbW9yeTsgICAgLy8gc2hhcmVkIG1lbW9yeSBmb3IgY29udHJvbCBibG9jaworICAgICAgICBlZmZlY3RfcGFyYW1fY2Jsa190KiBtQ2JsazsgICAgICAgICAvLyBjb250cm9sIGJsb2NrIGZvciBkZWZlcnJlZCBwYXJhbWV0ZXIgc2V0dGluZyB2aWEgc2hhcmVkIG1lbW9yeQorICAgICAgICB1aW50OF90KiAgICAgICAgICAgIG1CdWZmZXI7ICAgICAgICAvLyBwb2ludGVyIHRvIHBhcmFtZXRlciBhcmVhIGluIHNoYXJlZCBtZW1vcnkKKyAgICAgICAgaW50IG1Qcmlvcml0eTsgICAgICAgICAgICAgICAgICAgICAgLy8gY2xpZW50IGFwcGxpY2F0aW9uIHByaW9yaXR5IHRvIGNvbnRyb2wgdGhlIGVmZmVjdAorICAgICAgICBib29sIG1IYXNDb250cm9sOyAgICAgICAgICAgICAgICAgICAvLyB0cnVlIGlmIHRoaXMgaGFuZGxlIGlzIGNvbnRyb2xsaW5nIHRoZSBlZmZlY3QKKyAgICB9OworCisgICAgLy8gdGhlIEVmZmVjdENoYWluIGNsYXNzIHJlcHJlc2VudHMgYSBncm91cCBvZiBlZmZlY3RzIGFzc29jaWF0ZWQgdG8gb25lIGF1ZGlvIHNlc3Npb24uCisgICAgLy8gVGhlcmUgY2FuIGJlIGFueSBudW1iZXIgb2YgRWZmZWN0Q2hhaW4gb2JqZWN0cyBwZXIgb3V0cHV0IG1peGVyIHRocmVhZCAoUGxheWJhY2tUaHJlYWQpLgorICAgIC8vIFRoZSBFZmZlY0NoYWluIHdpdGggc2Vzc2lvbiBJRCAwIGNvbnRhaW5zIGdsb2JhbCBlZmZlY3RzIGFwcGxpZWQgdG8gdGhlIG91dHB1dCBtaXguCisgICAgLy8gRWZmZWN0cyBpbiB0aGlzIGNoYWluIGNhbiBiZSBpbnNlcnQgb3IgYXV4aWxpYXJ5LiBFZmZlY3RzIGluIG90aGVyIGNoYWlucyAoYXR0YWNoZWQgdG8gdHJhY2tzKQorICAgIC8vIGFyZSBpbnNlcnQgb25seS4gVGhlIEVmZmVjdENoYWluIG1haW50YWlucyBhbiBvcmRlcmVkIGxpc3Qgb2YgZWZmZWN0IG1vZHVsZSwgdGhlIG9yZGVyIGNvcnJlc3BvbmRpbmcKKyAgICAvLyBpbiB0aGUgZWZmZWN0IHByb2Nlc3Mgb3JkZXIuIFdoZW4gYXR0YWNoZWQgdG8gYSB0cmFjayAoc2Vzc2lvbiBJRCAhPSAwKSwgaXQgYWxzbyBwcm92aWRlIGl0J3Mgb3duCisgICAgLy8gaW5wdXQgYnVmZmVyIHVzZWQgYnkgdGhlIHRyYWNrIGFzIGFjY3VtdWxhdGlvbiBidWZmZXIuCisgICAgY2xhc3MgRWZmZWN0Q2hhaW46IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEVmZmVjdENoYWluKGNvbnN0IHdwPFRocmVhZEJhc2U+JiB3VGhyZWFkLCBpbnQgc2Vzc2lvbklkKTsKKyAgICAgICAgfkVmZmVjdENoYWluKCk7CisKKyAgICAgICAgdm9pZCBwcm9jZXNzX2woKTsKKworICAgICAgICB2b2lkIGxvY2soKSB7CisgICAgICAgICAgICBtTG9jay5sb2NrKCk7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCB1bmxvY2soKSB7CisgICAgICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXR1c190IGFkZEVmZmVjdChzcDxFZmZlY3RNb2R1bGU+JiBoYW5kbGUpOworICAgICAgICBzaXplX3QgcmVtb3ZlRWZmZWN0KGNvbnN0IHNwPEVmZmVjdE1vZHVsZT4mIGhhbmRsZSk7CisKKyAgICAgICAgaW50IHNlc3Npb25JZCgpIHsKKyAgICAgICAgICAgIHJldHVybiBtU2Vzc2lvbklkOworICAgICAgICB9CisgICAgICAgIHNwPEVmZmVjdE1vZHVsZT4gZ2V0RWZmZWN0RnJvbURlc2MoZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcik7CisgICAgICAgIHNwPEVmZmVjdE1vZHVsZT4gZ2V0RWZmZWN0RnJvbUlkKGludCBpZCk7CisgICAgICAgIHNwPEVmZmVjdE1vZHVsZT4gZ2V0Vm9sdW1lQ29udHJvbGxlcigpOworICAgICAgICBib29sIHNldFZvbHVtZSh1aW50MzJfdCAqbGVmdCwgdWludDMyX3QgKnJpZ2h0KTsKKyAgICAgICAgdm9pZCBzZXREZXZpY2UodWludDMyX3QgZGV2aWNlKTsKKyAgICAgICAgdm9pZCBzZXRNb2RlKHVpbnQzMl90IG1vZGUpOworCisKKyAgICAgICAgdm9pZCBzZXRJbkJ1ZmZlcihpbnQxNl90ICpidWZmZXIsIGJvb2wgb3duc0J1ZmZlciA9IGZhbHNlKSB7CisgICAgICAgICAgICBtSW5CdWZmZXIgPSBidWZmZXI7CisgICAgICAgICAgICBtT3duSW5CdWZmZXIgPSBvd25zQnVmZmVyOworICAgICAgICB9CisgICAgICAgIGludDE2X3QgKmluQnVmZmVyKCkgeworICAgICAgICAgICAgcmV0dXJuIG1JbkJ1ZmZlcjsKKyAgICAgICAgfQorICAgICAgICB2b2lkIHNldE91dEJ1ZmZlcihpbnQxNl90ICpidWZmZXIpIHsKKyAgICAgICAgICAgIG1PdXRCdWZmZXIgPSBidWZmZXI7CisgICAgICAgIH0KKyAgICAgICAgaW50MTZfdCAqb3V0QnVmZmVyKCkgeworICAgICAgICAgICAgcmV0dXJuIG1PdXRCdWZmZXI7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHN0YXJ0VHJhY2soKSB7bUFjdGl2ZVRyYWNrQ250Kys7fQorICAgICAgICB2b2lkIHN0b3BUcmFjaygpIHttQWN0aXZlVHJhY2tDbnQtLTt9CisgICAgICAgIGludCBhY3RpdmVUcmFja3MoKSB7IHJldHVybiBtQWN0aXZlVHJhY2tDbnQ7fQorCisgICAgICAgIHN0YXR1c190IGR1bXAoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKTsKKworICAgIHByb3RlY3RlZDoKKworICAgICAgICBFZmZlY3RDaGFpbihjb25zdCBFZmZlY3RDaGFpbiYpOworICAgICAgICBFZmZlY3RDaGFpbiYgb3BlcmF0b3IgPShjb25zdCBFZmZlY3RDaGFpbiYpOworCisgICAgICAgIHdwPFRocmVhZEJhc2U+IG1UaHJlYWQ7ICAgICAvLyBwYXJlbnQgbWl4ZXIgdGhyZWFkCisgICAgICAgIE11dGV4IG1Mb2NrOyAgICAgICAgICAgICAgICAvLyBtdXRleCBwcm90ZWN0aW5nIGVmZmVjdCBsaXN0CisgICAgICAgIFZlY3RvcjxzcDxFZmZlY3RNb2R1bGU+ID4gbUVmZmVjdHM7IC8vIGxpc3Qgb2YgZWZmZWN0IG1vZHVsZXMKKyAgICAgICAgaW50IG1TZXNzaW9uSWQ7ICAgICAgICAgICAgIC8vIGF1ZGlvIHNlc3Npb24gSUQKKyAgICAgICAgaW50MTZfdCAqbUluQnVmZmVyOyAgICAgICAgIC8vIGNoYWluIGlucHV0IGJ1ZmZlcgorICAgICAgICBpbnQxNl90ICptT3V0QnVmZmVyOyAgICAgICAgLy8gY2hhaW4gb3V0cHV0IGJ1ZmZlcgorICAgICAgICBpbnQgbVZvbHVtZUN0cmxJZHg7ICAgICAgICAgLy8gaW5kZXggb2YgaW5zZXJ0IGVmZmVjdCBoYXZpbmcgY29udHJvbCBvdmVyIHZvbHVtZQorICAgICAgICBpbnQgbUFjdGl2ZVRyYWNrQ250OyAgICAgICAgLy8gbnVtYmVyIG9mIGFjdGl2ZSB0cmFja3MgY29ubmVjdGVkCisgICAgICAgIGJvb2wgbU93bkluQnVmZmVyOyAgICAgICAgICAvLyB0cnVlIGlmIHRoZSBjaGFpbiBvd25zIGl0cyBpbnB1dCBidWZmZXIKKyAgICB9OworCiAgICAgZnJpZW5kIGNsYXNzIFJlY29yZFRocmVhZDsKICAgICBmcmllbmQgY2xhc3MgUGxheWJhY2tUaHJlYWQ7CiAKQEAgLTc5Niw4ICsxMTE5LDE5IEBACiAKICAgICAgICAgICAgICAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8IGludCwgc3A8UmVjb3JkVGhyZWFkPiA+ICAgIG1SZWNvcmRUaHJlYWRzOwogCi0gICAgICAgICAgICAgICAgU29ydGVkVmVjdG9yPCBzcDxJQmluZGVyPiA+ICAgICAgICAgbU5vdGlmaWNhdGlvbkNsaWVudHM7Ci0gICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU5leHRUaHJlYWRJZDsKKyAgICAgICAgICAgICAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8IHBpZF90LCBzcDxOb3RpZmljYXRpb25DbGllbnQ+ID4gICAgbU5vdGlmaWNhdGlvbkNsaWVudHM7CisgICAgICAgICAgICAgICAgdm9sYXRpbGUgaW50MzJfdCAgICAgICAgICAgICAgICAgICAgbU5leHRVbmlxdWVJZDsKKyNpZmRlZiBMVk1YCisgICAgICAgICAgICAgICAgaW50IG1MaWZlVmliZXNDbGllbnRQaWQ7CisjZW5kaWYKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBtTW9kZTsKKworICAgICAgICAgICAgICAgIC8vIE1heGltdW0gQ1BVIGxvYWQgYWxsb2NhdGVkIHRvIGF1ZGlvIGVmZmVjdHMgaW4gMC4xIE1JUFMgKEFSTXY1VEUsIDAgV1MgbWVtb3J5KSB1bml0cworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBNQVhfRUZGRUNUU19DUFVfTE9BRCA9IDEwMDA7CisgICAgICAgICAgICAgICAgLy8gTWF4aW11bSBtZW1vcnkgYWxsb2NhdGVkIHRvIGF1ZGlvIGVmZmVjdHMgaW4gS0IKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTUFYX0VGRkVDVFNfTUVNT1JZID0gNTEyOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG1Ub3RhbEVmZmVjdHNDcHVMb2FkOyAvLyBjdXJyZW50IENQVSBsb2FkIHVzZWQgYnkgZWZmZWN0cworICAgICAgICAgICAgICAgIHVpbnQzMl90IG1Ub3RhbEVmZmVjdHNNZW1vcnk7ICAvLyBjdXJyZW50IG1lbW9yeSB1c2VkIGJ5IGVmZmVjdHMKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvTWl4ZXIuY3BwIGIvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9NaXhlci5jcHAKaW5kZXggMTlhNDQyYS4uOGFhYTMyNSAxMDA2NDQKLS0tIGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9NaXhlci5jcHAKKysrIGIvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9NaXhlci5jcHAKQEAgLTU2LDYgKzU2LDggQEAKICAgICAgICAgdC0+dm9sdW1lWzFdID0gVU5JVFlfR0FJTjsKICAgICAgICAgdC0+dm9sdW1lSW5jWzBdID0gMDsKICAgICAgICAgdC0+dm9sdW1lSW5jWzFdID0gMDsKKyAgICAgICAgdC0+YXV4TGV2ZWwgPSAwOworICAgICAgICB0LT5hdXhJbmMgPSAwOwogICAgICAgICB0LT5jaGFubmVsQ291bnQgPSAyOwogICAgICAgICB0LT5lbmFibGVkID0gMDsKICAgICAgICAgdC0+Zm9ybWF0ID0gMTY7CkBAIC02NSw2ICs2Nyw4IEBACiAgICAgICAgIHQtPnJlc2FtcGxlciA9IDA7CiAgICAgICAgIHQtPnNhbXBsZVJhdGUgPSBtU2FtcGxlUmF0ZTsKICAgICAgICAgdC0+aW4gPSAwOworICAgICAgICB0LT5tYWluQnVmZmVyID0gTlVMTDsKKyAgICAgICAgdC0+YXV4QnVmZmVyID0gTlVMTDsKICAgICAgICAgdCsrOwogICAgIH0KIH0KQEAgLTE2OSwyOCArMTczLDQ4IEBACiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCi1zdGF0dXNfdCBBdWRpb01peGVyOjpzZXRQYXJhbWV0ZXIoaW50IHRhcmdldCwgaW50IG5hbWUsIGludCB2YWx1ZSkKK3N0YXR1c190IEF1ZGlvTWl4ZXI6OnNldFBhcmFtZXRlcihpbnQgdGFyZ2V0LCBpbnQgbmFtZSwgdm9pZCAqdmFsdWUpCiB7CisgICAgaW50IHZhbHVlSW50ID0gKGludCl2YWx1ZTsKKyAgICBpbnQzMl90ICp2YWx1ZUJ1ZiA9IChpbnQzMl90ICopdmFsdWU7CisKICAgICBzd2l0Y2ggKHRhcmdldCkgewogICAgIGNhc2UgVFJBQ0s6CiAgICAgICAgIGlmIChuYW1lID09IENIQU5ORUxfQ09VTlQpIHsKLSAgICAgICAgICAgIGlmICgodWludDMyX3QodmFsdWUpIDw9IE1BWF9OVU1fQ0hBTk5FTFMpICYmICh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAobVN0YXRlLnRyYWNrc1sgbUFjdGl2ZVRyYWNrIF0uY2hhbm5lbENvdW50ICE9IHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TdGF0ZS50cmFja3NbIG1BY3RpdmVUcmFjayBdLmNoYW5uZWxDb3VudCA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICBMT0dWKCJzZXRQYXJhbWV0ZXIoVFJBQ0ssIENIQU5ORUxfQ09VTlQsICVkKSIsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmICgodWludDMyX3QodmFsdWVJbnQpIDw9IE1BWF9OVU1fQ0hBTk5FTFMpICYmICh2YWx1ZUludCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobVN0YXRlLnRyYWNrc1sgbUFjdGl2ZVRyYWNrIF0uY2hhbm5lbENvdW50ICE9IHZhbHVlSW50KSB7CisgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS50cmFja3NbIG1BY3RpdmVUcmFjayBdLmNoYW5uZWxDb3VudCA9IHZhbHVlSW50OworICAgICAgICAgICAgICAgICAgICBMT0dWKCJzZXRQYXJhbWV0ZXIoVFJBQ0ssIENIQU5ORUxfQ09VTlQsICVkKSIsIHZhbHVlSW50KTsKICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZVN0YXRlKDE8PG1BY3RpdmVUcmFjayk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAobmFtZSA9PSBNQUlOX0JVRkZFUikgeworICAgICAgICAgICAgaWYgKG1TdGF0ZS50cmFja3NbIG1BY3RpdmVUcmFjayBdLm1haW5CdWZmZXIgIT0gdmFsdWVCdWYpIHsKKyAgICAgICAgICAgICAgICBtU3RhdGUudHJhY2tzWyBtQWN0aXZlVHJhY2sgXS5tYWluQnVmZmVyID0gdmFsdWVCdWY7CisgICAgICAgICAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKFRSQUNLLCBNQUlOX0JVRkZFUiwgJXApIiwgdmFsdWVCdWYpOworICAgICAgICAgICAgICAgIGludmFsaWRhdGVTdGF0ZSgxPDxtQWN0aXZlVHJhY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGlmIChuYW1lID09IEFVWF9CVUZGRVIpIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUudHJhY2tzWyBtQWN0aXZlVHJhY2sgXS5hdXhCdWZmZXIgIT0gdmFsdWVCdWYpIHsKKyAgICAgICAgICAgICAgICBtU3RhdGUudHJhY2tzWyBtQWN0aXZlVHJhY2sgXS5hdXhCdWZmZXIgPSB2YWx1ZUJ1ZjsKKyAgICAgICAgICAgICAgICBMT0dWKCJzZXRQYXJhbWV0ZXIoVFJBQ0ssIEFVWF9CVUZGRVIsICVwKSIsIHZhbHVlQnVmKTsKKyAgICAgICAgICAgICAgICBpbnZhbGlkYXRlU3RhdGUoMTw8bUFjdGl2ZVRyYWNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfQorCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUkVTQU1QTEU6CiAgICAgICAgIGlmIChuYW1lID09IFNBTVBMRV9SQVRFKSB7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPiAwKSB7CisgICAgICAgICAgICBpZiAodmFsdWVJbnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgdHJhY2tfdCYgdHJhY2sgPSBtU3RhdGUudHJhY2tzWyBtQWN0aXZlVHJhY2sgXTsKLSAgICAgICAgICAgICAgICBpZiAodHJhY2suc2V0UmVzYW1wbGVyKHVpbnQzMl90KHZhbHVlKSwgbVNhbXBsZVJhdGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRyYWNrLnNldFJlc2FtcGxlcih1aW50MzJfdCh2YWx1ZUludCksIG1TYW1wbGVSYXRlKSkgewogICAgICAgICAgICAgICAgICAgICBMT0dWKCJzZXRQYXJhbWV0ZXIoUkVTQU1QTEUsIFNBTVBMRV9SQVRFLCAldSkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QodmFsdWVJbnQpKTsKICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZVN0YXRlKDE8PG1BY3RpdmVUcmFjayk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKQEAgLTIwMSwxOCArMjI1LDM5IEBACiAgICAgY2FzZSBWT0xVTUU6CiAgICAgICAgIGlmICgodWludDMyX3QobmFtZS1WT0xVTUUwKSA8IE1BWF9OVU1fQ0hBTk5FTFMpKSB7CiAgICAgICAgICAgICB0cmFja190JiB0cmFjayA9IG1TdGF0ZS50cmFja3NbIG1BY3RpdmVUcmFjayBdOwotICAgICAgICAgICAgaWYgKHRyYWNrLnZvbHVtZVtuYW1lLVZPTFVNRTBdICE9IHZhbHVlKSB7CisgICAgICAgICAgICBpZiAodHJhY2sudm9sdW1lW25hbWUtVk9MVU1FMF0gIT0gdmFsdWVJbnQpIHsKKyAgICAgICAgICAgICAgICBMT0dWKCJzZXRQYXJhbWV0ZXIoVk9MVU1FLCBWT0xVTUUwLzE6ICUwNHgpIiwgdmFsdWVJbnQpOwogICAgICAgICAgICAgICAgIHRyYWNrLnByZXZWb2x1bWVbbmFtZS1WT0xVTUUwXSA9IHRyYWNrLnZvbHVtZVtuYW1lLVZPTFVNRTBdIDw8IDE2OwotICAgICAgICAgICAgICAgIHRyYWNrLnZvbHVtZVtuYW1lLVZPTFVNRTBdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgdHJhY2sudm9sdW1lW25hbWUtVk9MVU1FMF0gPSB2YWx1ZUludDsKICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09IFZPTFVNRSkgewotICAgICAgICAgICAgICAgICAgICB0cmFjay5wcmV2Vm9sdW1lW25hbWUtVk9MVU1FMF0gPSB2YWx1ZSA8PCAxNjsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2sucHJldlZvbHVtZVtuYW1lLVZPTFVNRTBdID0gdmFsdWVJbnQgPDwgMTY7CiAgICAgICAgICAgICAgICAgICAgIHRyYWNrLnZvbHVtZUluY1tuYW1lLVZPTFVNRTBdID0gMDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGQgPSAodmFsdWU8PDE2KSAtIHRyYWNrLnByZXZWb2x1bWVbbmFtZS1WT0xVTUUwXTsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkID0gKHZhbHVlSW50PDwxNikgLSB0cmFjay5wcmV2Vm9sdW1lW25hbWUtVk9MVU1FMF07CiAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgdm9sSW5jID0gZCAvIGludDMyX3QobVN0YXRlLmZyYW1lQ291bnQpOwogICAgICAgICAgICAgICAgICAgICB0cmFjay52b2x1bWVJbmNbbmFtZS1WT0xVTUUwXSA9IHZvbEluYzsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZvbEluYyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmFjay5wcmV2Vm9sdW1lW25hbWUtVk9MVU1FMF0gPSB2YWx1ZSA8PCAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLnByZXZWb2x1bWVbbmFtZS1WT0xVTUUwXSA9IHZhbHVlSW50IDw8IDE2OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludmFsaWRhdGVTdGF0ZSgxPDxtQWN0aXZlVHJhY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gQVVYTEVWRUwpIHsKKyAgICAgICAgICAgIHRyYWNrX3QmIHRyYWNrID0gbVN0YXRlLnRyYWNrc1sgbUFjdGl2ZVRyYWNrIF07CisgICAgICAgICAgICBpZiAodHJhY2suYXV4TGV2ZWwgIT0gdmFsdWVJbnQpIHsKKyAgICAgICAgICAgICAgICBMT0dWKCJzZXRQYXJhbWV0ZXIoVk9MVU1FLCBBVVhMRVZFTDogJTA0eCkiLCB2YWx1ZUludCk7CisgICAgICAgICAgICAgICAgdHJhY2sucHJldkF1eExldmVsID0gdHJhY2suYXV4TGV2ZWwgPDwgMTY7CisgICAgICAgICAgICAgICAgdHJhY2suYXV4TGV2ZWwgPSB2YWx1ZUludDsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09IFZPTFVNRSkgeworICAgICAgICAgICAgICAgICAgICB0cmFjay5wcmV2QXV4TGV2ZWwgPSB2YWx1ZUludCA8PCAxNjsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2suYXV4SW5jID0gMDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGQgPSAodmFsdWVJbnQ8PDE2KSAtIHRyYWNrLnByZXZBdXhMZXZlbDsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB2b2xJbmMgPSBkIC8gaW50MzJfdChtU3RhdGUuZnJhbWVDb3VudCk7CisgICAgICAgICAgICAgICAgICAgIHRyYWNrLmF1eEluYyA9IHZvbEluYzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZvbEluYyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFjay5wcmV2QXV4TGV2ZWwgPSB2YWx1ZUludCA8PCAxNjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlU3RhdGUoMTw8bUFjdGl2ZVRyYWNrKTsKQEAgLTI0NSw3ICsyOTAsNyBAQAogfQogCiBpbmxpbmUKLXZvaWQgQXVkaW9NaXhlcjo6dHJhY2tfdDo6YWRqdXN0Vm9sdW1lUmFtcCgpCit2b2lkIEF1ZGlvTWl4ZXI6OnRyYWNrX3Q6OmFkanVzdFZvbHVtZVJhbXAoYm9vbCBhdXgpCiB7CiAgICAgZm9yIChpbnQgaT0wIDsgaTwyIDsgaSsrKSB7CiAgICAgICAgIGlmICgoKHZvbHVtZUluY1tpXT4wKSAmJiAoKChwcmV2Vm9sdW1lW2ldK3ZvbHVtZUluY1tpXSk+PjE2KSA+PSB2b2x1bWVbaV0pKSB8fApAQCAtMjU0LDYgKzI5OSwxMyBAQAogICAgICAgICAgICAgcHJldlZvbHVtZVtpXSA9IHZvbHVtZVtpXTw8MTY7CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKGF1eCkgeworICAgICAgICBpZiAoKChhdXhJbmM+MCkgJiYgKCgocHJldkF1eExldmVsK2F1eEluYyk+PjE2KSA+PSBhdXhMZXZlbCkpIHx8CisgICAgICAgICAgICAoKGF1eEluYzwwKSAmJiAoKChwcmV2QXV4TGV2ZWwrYXV4SW5jKT4+MTYpIDw9IGF1eExldmVsKSkpIHsKKyAgICAgICAgICAgIGF1eEluYyA9IDA7CisgICAgICAgICAgICBwcmV2QXV4TGV2ZWwgPSBhdXhMZXZlbDw8MTY7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIApAQCAtMjY1LDEzICszMTcsMTMgQEAKIAogCiAKLXZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzcyh2b2lkKiBvdXRwdXQpCit2b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3MoKQogewotICAgIG1TdGF0ZS5ob29rKCZtU3RhdGUsIG91dHB1dCk7CisgICAgbVN0YXRlLmhvb2soJm1TdGF0ZSk7CiB9CiAKIAotdm9pZCBBdWRpb01peGVyOjpwcm9jZXNzX192YWxpZGF0ZShzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KQordm9pZCBBdWRpb01peGVyOjpwcm9jZXNzX192YWxpZGF0ZShzdGF0ZV90KiBzdGF0ZSkKIHsKICAgICBMT0dXX0lGKCFzdGF0ZS0+bmVlZHNDaGFuZ2VkLAogICAgICAgICAiaW4gcHJvY2Vzc19fdmFsaWRhdGUoKSBidXQgbm90aGluZydzIGludmFsaWQiKTsKQEAgLTMwOCw3ICszNjAsMTAgQEAKICAgICAgICAgbiB8PSBORUVEU19DSEFOTkVMXzEgKyB0LmNoYW5uZWxDb3VudCAtIDE7CiAgICAgICAgIG4gfD0gTkVFRFNfRk9STUFUXzE2OwogICAgICAgICBuIHw9IHQuZG9lc1Jlc2FtcGxlKCkgPyBORUVEU19SRVNBTVBMRV9FTkFCTEVEIDogTkVFRFNfUkVTQU1QTEVfRElTQUJMRUQ7Ci0gICAgICAgCisgICAgICAgIGlmICh0LmF1eExldmVsICE9IDAgJiYgdC5hdXhCdWZmZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgbiB8PSBORUVEU19BVVhfRU5BQkxFRDsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh0LnZvbHVtZUluY1swXXx0LnZvbHVtZUluY1sxXSkgewogICAgICAgICAgICAgdm9sdW1lUmFtcCA9IDE7CiAgICAgICAgIH0gZWxzZSBpZiAoIXQuZG9lc1Jlc2FtcGxlKCkgJiYgdC52b2x1bWVSTCA9PSAwKSB7CkBAIC0zMTksNiArMzc0LDkgQEAKICAgICAgICAgaWYgKChuICYgTkVFRFNfTVVURV9fTUFTSykgPT0gTkVFRFNfTVVURV9FTkFCTEVEKSB7CiAgICAgICAgICAgICB0Lmhvb2sgPSB0cmFja19fbm9wOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKChuICYgTkVFRFNfQVVYX19NQVNLKSA9PSBORUVEU19BVVhfRU5BQkxFRCkgeworICAgICAgICAgICAgICAgIGFsbDE2Qml0c1N0ZXJlb05vUmVzYW1wbGUgPSAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKChuICYgTkVFRFNfUkVTQU1QTEVfX01BU0spID09IE5FRURTX1JFU0FNUExFX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBhbGwxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxlID0gMDsKICAgICAgICAgICAgICAgICByZXNhbXBsaW5nID0gMTsKQEAgLTM2OSw3ICs0MjcsNyBAQAogICAgICAgICBjb3VudEFjdGl2ZVRyYWNrcywgc3RhdGUtPmVuYWJsZWRUcmFja3MsCiAgICAgICAgIGFsbDE2Qml0c1N0ZXJlb05vUmVzYW1wbGUsIHJlc2FtcGxpbmcsIHZvbHVtZVJhbXApOwogCi0gICBzdGF0ZS0+aG9vayhzdGF0ZSwgb3V0cHV0KTsKKyAgIHN0YXRlLT5ob29rKHN0YXRlKTsKIAogICAgLy8gTm93IHRoYXQgdGhlIHZvbHVtZSByYW1wIGhhcyBiZWVuIGRvbmUsIHNldCBvcHRpbWFsIHN0YXRlIGFuZAogICAgLy8gdHJhY2sgaG9va3MgZm9yIHN1YnNlcXVlbnQgbWl4ZXIgcHJvY2VzcwpAQCAtMzkwLDcgKzQ0OCw3IEBACiAgICAgICAgfQogICAgICAgIGlmIChhbGxNdXRlZCkgewogICAgICAgICAgICBzdGF0ZS0+aG9vayA9IHByb2Nlc3NfX25vcDsKLSAgICAgICB9IGVsc2UgaWYgKCFyZXNhbXBsaW5nICYmIGFsbDE2Qml0c1N0ZXJlb05vUmVzYW1wbGUpIHsKKyAgICAgICB9IGVsc2UgaWYgKGFsbDE2Qml0c1N0ZXJlb05vUmVzYW1wbGUpIHsKICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZlVHJhY2tzID09IDEpIHsKICAgICAgICAgICAgICAgc3RhdGUtPmhvb2sgPSBwcm9jZXNzX19PbmVUcmFjazE2Qml0c1N0ZXJlb05vUmVzYW1wbGluZzsKICAgICAgICAgICAgfQpAQCAtNDgxLDMwICs1MzksNDQgQEAKIH0KIAogCi12b2lkIEF1ZGlvTWl4ZXI6OnRyYWNrX19nZW5lcmljUmVzYW1wbGUodHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3Qgb3V0RnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCkKK3ZvaWQgQXVkaW9NaXhlcjo6dHJhY2tfX2dlbmVyaWNSZXNhbXBsZSh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBvdXRGcmFtZUNvdW50LCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpCiB7CiAgICAgdC0+cmVzYW1wbGVyLT5zZXRTYW1wbGVSYXRlKHQtPnNhbXBsZVJhdGUpOwogCiAgICAgLy8gcmFtcCBnYWluIC0gcmVzYW1wbGUgdG8gdGVtcCBidWZmZXIgYW5kIHNjYWxlL21peCBpbiAybmQgc3RlcAotICAgIGlmIFVOTElLRUxZKHQtPnZvbHVtZUluY1swXXx0LT52b2x1bWVJbmNbMV0pIHsKKyAgICBpZiAoYXV4ICE9IE5VTEwpIHsKKyAgICAgICAgLy8gYWx3YXlzIHJlc2FtcGxlIHdpdGggdW5pdHkgZ2FpbiB3aGVuIHNlbmRpbmcgdG8gYXV4aWxpYXJ5IGJ1ZmZlciB0byBiZSBhYmxlCisgICAgICAgIC8vIHRvIGFwcGx5IHNlbmQgbGV2ZWwgYWZ0ZXIgcmVzYW1wbGluZworICAgICAgICAvLyBUT0RPOiBtb2RpZnkgZWFjaCByZXNhbXBsZXIgdG8gc3VwcG9ydCBhdXggY2hhbm5lbD8KICAgICAgICAgdC0+cmVzYW1wbGVyLT5zZXRWb2x1bWUoVU5JVFlfR0FJTiwgVU5JVFlfR0FJTik7CiAgICAgICAgIG1lbXNldCh0ZW1wLCAwLCBvdXRGcmFtZUNvdW50ICogTUFYX05VTV9DSEFOTkVMUyAqIHNpemVvZihpbnQzMl90KSk7CiAgICAgICAgIHQtPnJlc2FtcGxlci0+cmVzYW1wbGUodGVtcCwgb3V0RnJhbWVDb3VudCwgdC0+YnVmZmVyUHJvdmlkZXIpOwotICAgICAgICB2b2x1bWVSYW1wU3RlcmVvKHQsIG91dCwgb3V0RnJhbWVDb3VudCwgdGVtcCk7Ci0gICAgfQorICAgICAgICBpZiBVTkxJS0VMWSh0LT52b2x1bWVJbmNbMF18dC0+dm9sdW1lSW5jWzFdfHQtPmF1eEluYykgeworICAgICAgICAgICAgdm9sdW1lUmFtcFN0ZXJlbyh0LCBvdXQsIG91dEZyYW1lQ291bnQsIHRlbXAsIGF1eCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2b2x1bWVTdGVyZW8odCwgb3V0LCBvdXRGcmFtZUNvdW50LCB0ZW1wLCBhdXgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgVU5MSUtFTFkodC0+dm9sdW1lSW5jWzBdfHQtPnZvbHVtZUluY1sxXSkgeworICAgICAgICAgICAgdC0+cmVzYW1wbGVyLT5zZXRWb2x1bWUoVU5JVFlfR0FJTiwgVU5JVFlfR0FJTik7CisgICAgICAgICAgICBtZW1zZXQodGVtcCwgMCwgb3V0RnJhbWVDb3VudCAqIE1BWF9OVU1fQ0hBTk5FTFMgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICAgICAgdC0+cmVzYW1wbGVyLT5yZXNhbXBsZSh0ZW1wLCBvdXRGcmFtZUNvdW50LCB0LT5idWZmZXJQcm92aWRlcik7CisgICAgICAgICAgICB2b2x1bWVSYW1wU3RlcmVvKHQsIG91dCwgb3V0RnJhbWVDb3VudCwgdGVtcCwgYXV4KTsKKyAgICAgICAgfQogCi0gICAgLy8gY29uc3RhbnQgZ2FpbgotICAgIGVsc2UgewotICAgICAgICB0LT5yZXNhbXBsZXItPnNldFZvbHVtZSh0LT52b2x1bWVbMF0sIHQtPnZvbHVtZVsxXSk7Ci0gICAgICAgIHQtPnJlc2FtcGxlci0+cmVzYW1wbGUob3V0LCBvdXRGcmFtZUNvdW50LCB0LT5idWZmZXJQcm92aWRlcik7CisgICAgICAgIC8vIGNvbnN0YW50IGdhaW4KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0LT5yZXNhbXBsZXItPnNldFZvbHVtZSh0LT52b2x1bWVbMF0sIHQtPnZvbHVtZVsxXSk7CisgICAgICAgICAgICB0LT5yZXNhbXBsZXItPnJlc2FtcGxlKG91dCwgb3V0RnJhbWVDb3VudCwgdC0+YnVmZmVyUHJvdmlkZXIpOworICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIEF1ZGlvTWl4ZXI6OnRyYWNrX19ub3AodHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3Qgb3V0RnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCkKK3ZvaWQgQXVkaW9NaXhlcjo6dHJhY2tfX25vcCh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBvdXRGcmFtZUNvdW50LCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpCiB7CiB9CiAKLXZvaWQgQXVkaW9NaXhlcjo6dm9sdW1lUmFtcFN0ZXJlbyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBmcmFtZUNvdW50LCBpbnQzMl90KiB0ZW1wKQordm9pZCBBdWRpb01peGVyOjp2b2x1bWVSYW1wU3RlcmVvKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IGZyYW1lQ291bnQsIGludDMyX3QqIHRlbXAsIGludDMyX3QqIGF1eCkKIHsKICAgICBpbnQzMl90IHZsID0gdC0+cHJldlZvbHVtZVswXTsKICAgICBpbnQzMl90IHZyID0gdC0+cHJldlZvbHVtZVsxXTsKQEAgLTUxNCw5OCArNTg2LDIzOCBAQAogICAgIC8vTE9HRCgiWzBdICVwOiBpbmM9JWYsIHYwPSVmLCB2MT0lZCwgZmluYWw9JWYsIGNvdW50PSVkIiwKICAgICAvLyAgICAgICAgdCwgdmxJbmMvNjU1MzYuMGYsIHZsLzY1NTM2LjBmLCB0LT52b2x1bWVbMF0sCiAgICAgLy8gICAgICAgKHZsICsgdmxJbmMqZnJhbWVDb3VudCkvNjU1MzYuMGYsIGZyYW1lQ291bnQpOwotICAgCisKICAgICAvLyByYW1wIHZvbHVtZQotICAgIGRvIHsKLSAgICAgICAgKm91dCsrICs9ICh2bCA+PiAxNikgKiAoKnRlbXArKyA+PiAxMik7Ci0gICAgICAgICpvdXQrKyArPSAodnIgPj4gMTYpICogKCp0ZW1wKysgPj4gMTIpOwotICAgICAgICB2bCArPSB2bEluYzsKLSAgICAgICAgdnIgKz0gdnJJbmM7Ci0gICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKLQotICAgIHQtPnByZXZWb2x1bWVbMF0gPSB2bDsKLSAgICB0LT5wcmV2Vm9sdW1lWzFdID0gdnI7Ci0gICAgdC0+YWRqdXN0Vm9sdW1lUmFtcCgpOwotfQotCi12b2lkIEF1ZGlvTWl4ZXI6OnRyYWNrX18xNkJpdHNTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCkKLXsKLSAgICBpbnQxNl90IGNvbnN0ICppbiA9IHN0YXRpY19jYXN0PGludDE2X3QgY29uc3QgKj4odC0+aW4pOwotCi0gICAgLy8gcmFtcCBnYWluCi0gICAgaWYgVU5MSUtFTFkodC0+dm9sdW1lSW5jWzBdfHQtPnZvbHVtZUluY1sxXSkgewotICAgICAgICBpbnQzMl90IHZsID0gdC0+cHJldlZvbHVtZVswXTsKLSAgICAgICAgaW50MzJfdCB2ciA9IHQtPnByZXZWb2x1bWVbMV07Ci0gICAgICAgIGNvbnN0IGludDMyX3QgdmxJbmMgPSB0LT52b2x1bWVJbmNbMF07Ci0gICAgICAgIGNvbnN0IGludDMyX3QgdnJJbmMgPSB0LT52b2x1bWVJbmNbMV07Ci0KLSAgICAgICAgLy8gTE9HRCgiWzFdICVwOiBpbmM9JWYsIHYwPSVmLCB2MT0lZCwgZmluYWw9JWYsIGNvdW50PSVkIiwKLSAgICAgICAgLy8gICAgICAgIHQsIHZsSW5jLzY1NTM2LjBmLCB2bC82NTUzNi4wZiwgdC0+dm9sdW1lWzBdLAotICAgICAgICAvLyAgICAgICAgKHZsICsgdmxJbmMqZnJhbWVDb3VudCkvNjU1MzYuMGYsIGZyYW1lQ291bnQpOworICAgIGlmIFVOTElLRUxZKGF1eCAhPSBOVUxMKSB7CisgICAgICAgIGludDMyX3QgdmEgPSB0LT5wcmV2QXV4TGV2ZWw7CisgICAgICAgIGNvbnN0IGludDMyX3QgdmFJbmMgPSB0LT5hdXhJbmM7CisgICAgICAgIGludDMyX3QgbDsKKyAgICAgICAgaW50MzJfdCByOwogCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogKGludDMyX3QpICppbisrOwotICAgICAgICAgICAgKm91dCsrICs9ICh2ciA+PiAxNikgKiAoaW50MzJfdCkgKmluKys7CisgICAgICAgICAgICBsID0gKCp0ZW1wKysgPj4gMTIpOworICAgICAgICAgICAgciA9ICgqdGVtcCsrID4+IDEyKTsKKyAgICAgICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogbDsKKyAgICAgICAgICAgICpvdXQrKyArPSAodnIgPj4gMTYpICogcjsKKyAgICAgICAgICAgICphdXgrKyArPSAodmEgPj4gMTcpICogKGwgKyByKTsKKyAgICAgICAgICAgIHZsICs9IHZsSW5jOworICAgICAgICAgICAgdnIgKz0gdnJJbmM7CisgICAgICAgICAgICB2YSArPSB2YUluYzsKKyAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICAgICAgdC0+cHJldkF1eExldmVsID0gdmE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgKm91dCsrICs9ICh2bCA+PiAxNikgKiAoKnRlbXArKyA+PiAxMik7CisgICAgICAgICAgICAqb3V0KysgKz0gKHZyID4+IDE2KSAqICgqdGVtcCsrID4+IDEyKTsKICAgICAgICAgICAgIHZsICs9IHZsSW5jOwogICAgICAgICAgICAgdnIgKz0gdnJJbmM7CiAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7Ci0gICAgICAgCi0gICAgICAgIHQtPnByZXZWb2x1bWVbMF0gPSB2bDsKLSAgICAgICAgdC0+cHJldlZvbHVtZVsxXSA9IHZyOwotICAgICAgICB0LT5hZGp1c3RWb2x1bWVSYW1wKCk7CiAgICAgfQorICAgIHQtPnByZXZWb2x1bWVbMF0gPSB2bDsKKyAgICB0LT5wcmV2Vm9sdW1lWzFdID0gdnI7CisgICAgdC0+YWRqdXN0Vm9sdW1lUmFtcCgoYXV4ICE9IE5VTEwpKTsKK30KIAotICAgIC8vIGNvbnN0YW50IGdhaW4KLSAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgdWludDMyX3QgdnJsID0gdC0+dm9sdW1lUkw7Cit2b2lkIEF1ZGlvTWl4ZXI6OnZvbHVtZVN0ZXJlbyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBmcmFtZUNvdW50LCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpCit7CisgICAgY29uc3QgaW50MTZfdCB2bCA9IHQtPnZvbHVtZVswXTsKKyAgICBjb25zdCBpbnQxNl90IHZyID0gdC0+dm9sdW1lWzFdOworCisgICAgaWYgVU5MSUtFTFkoYXV4ICE9IE5VTEwpIHsKKyAgICAgICAgY29uc3QgaW50MTZfdCB2YSA9IChpbnQxNl90KXQtPmF1eExldmVsOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICB1aW50MzJfdCBybCA9ICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90IGNvbnN0ICo+KGluKTsKLSAgICAgICAgICAgIGluICs9IDI7Ci0gICAgICAgICAgICBvdXRbMF0gPSBtdWxBZGRSTCgxLCBybCwgdnJsLCBvdXRbMF0pOwotICAgICAgICAgICAgb3V0WzFdID0gbXVsQWRkUkwoMCwgcmwsIHZybCwgb3V0WzFdKTsKKyAgICAgICAgICAgIGludDE2X3QgbCA9IChpbnQxNl90KSgqdGVtcCsrID4+IDEyKTsKKyAgICAgICAgICAgIGludDE2X3QgciA9IChpbnQxNl90KSgqdGVtcCsrID4+IDEyKTsKKyAgICAgICAgICAgIG91dFswXSA9IG11bEFkZChsLCB2bCwgb3V0WzBdKTsKKyAgICAgICAgICAgIGludDE2X3QgYSA9IChpbnQxNl90KSgoKGludDMyX3QpbCArIHIpID4+IDEpOworICAgICAgICAgICAgb3V0WzFdID0gbXVsQWRkKHIsIHZyLCBvdXRbMV0pOworICAgICAgICAgICAgb3V0ICs9IDI7CisgICAgICAgICAgICBhdXhbMF0gPSBtdWxBZGQoYSwgdmEsIGF1eFswXSk7CisgICAgICAgICAgICBhdXgrKzsKKyAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBpbnQxNl90IGwgPSAoaW50MTZfdCkoKnRlbXArKyA+PiAxMik7CisgICAgICAgICAgICBpbnQxNl90IHIgPSAoaW50MTZfdCkoKnRlbXArKyA+PiAxMik7CisgICAgICAgICAgICBvdXRbMF0gPSBtdWxBZGQobCwgdmwsIG91dFswXSk7CisgICAgICAgICAgICBvdXRbMV0gPSBtdWxBZGQociwgdnIsIG91dFsxXSk7CiAgICAgICAgICAgICBvdXQgKz0gMjsKICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKICAgICB9Cit9CisKK3ZvaWQgQXVkaW9NaXhlcjo6dHJhY2tfXzE2Qml0c1N0ZXJlbyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBmcmFtZUNvdW50LCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpCit7CisgICAgaW50MTZfdCBjb25zdCAqaW4gPSBzdGF0aWNfY2FzdDxpbnQxNl90IGNvbnN0ICo+KHQtPmluKTsKKworICAgIGlmIFVOTElLRUxZKGF1eCAhPSBOVUxMKSB7CisgICAgICAgIGludDMyX3QgbDsKKyAgICAgICAgaW50MzJfdCByOworICAgICAgICAvLyByYW1wIGdhaW4KKyAgICAgICAgaWYgVU5MSUtFTFkodC0+dm9sdW1lSW5jWzBdfHQtPnZvbHVtZUluY1sxXXx0LT5hdXhJbmMpIHsKKyAgICAgICAgICAgIGludDMyX3QgdmwgPSB0LT5wcmV2Vm9sdW1lWzBdOworICAgICAgICAgICAgaW50MzJfdCB2ciA9IHQtPnByZXZWb2x1bWVbMV07CisgICAgICAgICAgICBpbnQzMl90IHZhID0gdC0+cHJldkF1eExldmVsOworICAgICAgICAgICAgY29uc3QgaW50MzJfdCB2bEluYyA9IHQtPnZvbHVtZUluY1swXTsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3QgdnJJbmMgPSB0LT52b2x1bWVJbmNbMV07CisgICAgICAgICAgICBjb25zdCBpbnQzMl90IHZhSW5jID0gdC0+YXV4SW5jOworICAgICAgICAgICAgLy8gTE9HRCgiWzFdICVwOiBpbmM9JWYsIHYwPSVmLCB2MT0lZCwgZmluYWw9JWYsIGNvdW50PSVkIiwKKyAgICAgICAgICAgIC8vICAgICAgICB0LCB2bEluYy82NTUzNi4wZiwgdmwvNjU1MzYuMGYsIHQtPnZvbHVtZVswXSwKKyAgICAgICAgICAgIC8vICAgICAgICAodmwgKyB2bEluYypmcmFtZUNvdW50KS82NTUzNi4wZiwgZnJhbWVDb3VudCk7CisKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBsID0gKGludDMyX3QpKmluKys7CisgICAgICAgICAgICAgICAgciA9IChpbnQzMl90KSppbisrOworICAgICAgICAgICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogbDsKKyAgICAgICAgICAgICAgICAqb3V0KysgKz0gKHZyID4+IDE2KSAqIHI7CisgICAgICAgICAgICAgICAgKmF1eCsrICs9ICh2YSA+PiAxNykgKiAobCArIHIpOworICAgICAgICAgICAgICAgIHZsICs9IHZsSW5jOworICAgICAgICAgICAgICAgIHZyICs9IHZySW5jOworICAgICAgICAgICAgICAgIHZhICs9IHZhSW5jOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKworICAgICAgICAgICAgdC0+cHJldlZvbHVtZVswXSA9IHZsOworICAgICAgICAgICAgdC0+cHJldlZvbHVtZVsxXSA9IHZyOworICAgICAgICAgICAgdC0+cHJldkF1eExldmVsID0gdmE7CisgICAgICAgICAgICB0LT5hZGp1c3RWb2x1bWVSYW1wKHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gY29uc3RhbnQgZ2FpbgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHZybCA9IHQtPnZvbHVtZVJMOworICAgICAgICAgICAgY29uc3QgaW50MTZfdCB2YSA9IChpbnQxNl90KXQtPmF1eExldmVsOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHVpbnQzMl90IHJsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QgY29uc3QgKj4oaW4pOworICAgICAgICAgICAgICAgIGludDE2X3QgYSA9IChpbnQxNl90KSgoKGludDMyX3QpaW5bMF0gKyBpblsxXSkgPj4gMSk7CisgICAgICAgICAgICAgICAgaW4gKz0gMjsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBtdWxBZGRSTCgxLCBybCwgdnJsLCBvdXRbMF0pOworICAgICAgICAgICAgICAgIG91dFsxXSA9IG11bEFkZFJMKDAsIHJsLCB2cmwsIG91dFsxXSk7CisgICAgICAgICAgICAgICAgb3V0ICs9IDI7CisgICAgICAgICAgICAgICAgYXV4WzBdID0gbXVsQWRkKGEsIHZhLCBhdXhbMF0pOworICAgICAgICAgICAgICAgIGF1eCsrOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIHJhbXAgZ2FpbgorICAgICAgICBpZiBVTkxJS0VMWSh0LT52b2x1bWVJbmNbMF18dC0+dm9sdW1lSW5jWzFdKSB7CisgICAgICAgICAgICBpbnQzMl90IHZsID0gdC0+cHJldlZvbHVtZVswXTsKKyAgICAgICAgICAgIGludDMyX3QgdnIgPSB0LT5wcmV2Vm9sdW1lWzFdOworICAgICAgICAgICAgY29uc3QgaW50MzJfdCB2bEluYyA9IHQtPnZvbHVtZUluY1swXTsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3QgdnJJbmMgPSB0LT52b2x1bWVJbmNbMV07CisKKyAgICAgICAgICAgIC8vIExPR0QoIlsxXSAlcDogaW5jPSVmLCB2MD0lZiwgdjE9JWQsIGZpbmFsPSVmLCBjb3VudD0lZCIsCisgICAgICAgICAgICAvLyAgICAgICAgdCwgdmxJbmMvNjU1MzYuMGYsIHZsLzY1NTM2LjBmLCB0LT52b2x1bWVbMF0sCisgICAgICAgICAgICAvLyAgICAgICAgKHZsICsgdmxJbmMqZnJhbWVDb3VudCkvNjU1MzYuMGYsIGZyYW1lQ291bnQpOworCisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgKm91dCsrICs9ICh2bCA+PiAxNikgKiAoaW50MzJfdCkgKmluKys7CisgICAgICAgICAgICAgICAgKm91dCsrICs9ICh2ciA+PiAxNikgKiAoaW50MzJfdCkgKmluKys7CisgICAgICAgICAgICAgICAgdmwgKz0gdmxJbmM7CisgICAgICAgICAgICAgICAgdnIgKz0gdnJJbmM7CisgICAgICAgICAgICB9IHdoaWxlICgtLWZyYW1lQ291bnQpOworCisgICAgICAgICAgICB0LT5wcmV2Vm9sdW1lWzBdID0gdmw7CisgICAgICAgICAgICB0LT5wcmV2Vm9sdW1lWzFdID0gdnI7CisgICAgICAgICAgICB0LT5hZGp1c3RWb2x1bWVSYW1wKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNvbnN0YW50IGdhaW4KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB2cmwgPSB0LT52b2x1bWVSTDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBybCA9ICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90IGNvbnN0ICo+KGluKTsKKyAgICAgICAgICAgICAgICBpbiArPSAyOworICAgICAgICAgICAgICAgIG91dFswXSA9IG11bEFkZFJMKDEsIHJsLCB2cmwsIG91dFswXSk7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gbXVsQWRkUkwoMCwgcmwsIHZybCwgb3V0WzFdKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gMjsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgdC0+aW4gPSBpbjsKIH0KIAotdm9pZCBBdWRpb01peGVyOjp0cmFja19fMTZCaXRzTW9ubyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBmcmFtZUNvdW50LCBpbnQzMl90KiB0ZW1wKQordm9pZCBBdWRpb01peGVyOjp0cmFja19fMTZCaXRzTW9ubyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBmcmFtZUNvdW50LCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpCiB7CiAgICAgaW50MTZfdCBjb25zdCAqaW4gPSBzdGF0aWNfY2FzdDxpbnQxNl90IGNvbnN0ICo+KHQtPmluKTsKIAotICAgIC8vIHJhbXAgZ2FpbgotICAgIGlmIFVOTElLRUxZKHQtPnZvbHVtZUluY1swXXx0LT52b2x1bWVJbmNbMV0pIHsKLSAgICAgICAgaW50MzJfdCB2bCA9IHQtPnByZXZWb2x1bWVbMF07Ci0gICAgICAgIGludDMyX3QgdnIgPSB0LT5wcmV2Vm9sdW1lWzFdOwotICAgICAgICBjb25zdCBpbnQzMl90IHZsSW5jID0gdC0+dm9sdW1lSW5jWzBdOwotICAgICAgICBjb25zdCBpbnQzMl90IHZySW5jID0gdC0+dm9sdW1lSW5jWzFdOworICAgIGlmIFVOTElLRUxZKGF1eCAhPSBOVUxMKSB7CisgICAgICAgIC8vIHJhbXAgZ2FpbgorICAgICAgICBpZiBVTkxJS0VMWSh0LT52b2x1bWVJbmNbMF18dC0+dm9sdW1lSW5jWzFdfHQtPmF1eEluYykgeworICAgICAgICAgICAgaW50MzJfdCB2bCA9IHQtPnByZXZWb2x1bWVbMF07CisgICAgICAgICAgICBpbnQzMl90IHZyID0gdC0+cHJldlZvbHVtZVsxXTsKKyAgICAgICAgICAgIGludDMyX3QgdmEgPSB0LT5wcmV2QXV4TGV2ZWw7CisgICAgICAgICAgICBjb25zdCBpbnQzMl90IHZsSW5jID0gdC0+dm9sdW1lSW5jWzBdOworICAgICAgICAgICAgY29uc3QgaW50MzJfdCB2ckluYyA9IHQtPnZvbHVtZUluY1sxXTsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3QgdmFJbmMgPSB0LT5hdXhJbmM7CiAKLSAgICAgICAgLy8gTE9HRCgiWzJdICVwOiBpbmM9JWYsIHYwPSVmLCB2MT0lZCwgZmluYWw9JWYsIGNvdW50PSVkIiwKLSAgICAgICAgLy8gICAgICAgICB0LCB2bEluYy82NTUzNi4wZiwgdmwvNjU1MzYuMGYsIHQtPnZvbHVtZVswXSwKLSAgICAgICAgLy8gICAgICAgICAodmwgKyB2bEluYypmcmFtZUNvdW50KS82NTUzNi4wZiwgZnJhbWVDb3VudCk7CisgICAgICAgICAgICAvLyBMT0dEKCJbMl0gJXA6IGluYz0lZiwgdjA9JWYsIHYxPSVkLCBmaW5hbD0lZiwgY291bnQ9JWQiLAorICAgICAgICAgICAgLy8gICAgICAgICB0LCB2bEluYy82NTUzNi4wZiwgdmwvNjU1MzYuMGYsIHQtPnZvbHVtZVswXSwKKyAgICAgICAgICAgIC8vICAgICAgICAgKHZsICsgdmxJbmMqZnJhbWVDb3VudCkvNjU1MzYuMGYsIGZyYW1lQ291bnQpOwogCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGludDMyX3QgbCA9ICppbisrOwotICAgICAgICAgICAgKm91dCsrICs9ICh2bCA+PiAxNikgKiBsOwotICAgICAgICAgICAgKm91dCsrICs9ICh2ciA+PiAxNikgKiBsOwotICAgICAgICAgICAgdmwgKz0gdmxJbmM7Ci0gICAgICAgICAgICB2ciArPSB2ckluYzsKLSAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKLSAgICAgICAKLSAgICAgICAgdC0+cHJldlZvbHVtZVswXSA9IHZsOwotICAgICAgICB0LT5wcmV2Vm9sdW1lWzFdID0gdnI7Ci0gICAgICAgIHQtPmFkanVzdFZvbHVtZVJhbXAoKTsKLSAgICB9Ci0gICAgLy8gY29uc3RhbnQgZ2FpbgotICAgIGVsc2UgewotICAgICAgICBjb25zdCBpbnQxNl90IHZsID0gdC0+dm9sdW1lWzBdOwotICAgICAgICBjb25zdCBpbnQxNl90IHZyID0gdC0+dm9sdW1lWzFdOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpbnQxNl90IGwgPSAqaW4rKzsKLSAgICAgICAgICAgIG91dFswXSA9IG11bEFkZChsLCB2bCwgb3V0WzBdKTsKLSAgICAgICAgICAgIG91dFsxXSA9IG11bEFkZChsLCB2ciwgb3V0WzFdKTsKLSAgICAgICAgICAgIG91dCArPSAyOwotICAgICAgICB9IHdoaWxlICgtLWZyYW1lQ291bnQpOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGludDMyX3QgbCA9ICppbisrOworICAgICAgICAgICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogbDsKKyAgICAgICAgICAgICAgICAqb3V0KysgKz0gKHZyID4+IDE2KSAqIGw7CisgICAgICAgICAgICAgICAgKmF1eCsrICs9ICh2YSA+PiAxNikgKiBsOworICAgICAgICAgICAgICAgIHZsICs9IHZsSW5jOworICAgICAgICAgICAgICAgIHZyICs9IHZySW5jOworICAgICAgICAgICAgICAgIHZhICs9IHZhSW5jOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKworICAgICAgICAgICAgdC0+cHJldlZvbHVtZVswXSA9IHZsOworICAgICAgICAgICAgdC0+cHJldlZvbHVtZVsxXSA9IHZyOworICAgICAgICAgICAgdC0+cHJldkF1eExldmVsID0gdmE7CisgICAgICAgICAgICB0LT5hZGp1c3RWb2x1bWVSYW1wKHRydWUpOworICAgICAgICB9CisgICAgICAgIC8vIGNvbnN0YW50IGdhaW4KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCBpbnQxNl90IHZsID0gdC0+dm9sdW1lWzBdOworICAgICAgICAgICAgY29uc3QgaW50MTZfdCB2ciA9IHQtPnZvbHVtZVsxXTsKKyAgICAgICAgICAgIGNvbnN0IGludDE2X3QgdmEgPSAoaW50MTZfdCl0LT5hdXhMZXZlbDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpbnQxNl90IGwgPSAqaW4rKzsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBtdWxBZGQobCwgdmwsIG91dFswXSk7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gbXVsQWRkKGwsIHZyLCBvdXRbMV0pOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgICAgIGF1eFswXSA9IG11bEFkZChsLCB2YSwgYXV4WzBdKTsKKyAgICAgICAgICAgICAgICBhdXgrKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyByYW1wIGdhaW4KKyAgICAgICAgaWYgVU5MSUtFTFkodC0+dm9sdW1lSW5jWzBdfHQtPnZvbHVtZUluY1sxXSkgeworICAgICAgICAgICAgaW50MzJfdCB2bCA9IHQtPnByZXZWb2x1bWVbMF07CisgICAgICAgICAgICBpbnQzMl90IHZyID0gdC0+cHJldlZvbHVtZVsxXTsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3QgdmxJbmMgPSB0LT52b2x1bWVJbmNbMF07CisgICAgICAgICAgICBjb25zdCBpbnQzMl90IHZySW5jID0gdC0+dm9sdW1lSW5jWzFdOworCisgICAgICAgICAgICAvLyBMT0dEKCJbMl0gJXA6IGluYz0lZiwgdjA9JWYsIHYxPSVkLCBmaW5hbD0lZiwgY291bnQ9JWQiLAorICAgICAgICAgICAgLy8gICAgICAgICB0LCB2bEluYy82NTUzNi4wZiwgdmwvNjU1MzYuMGYsIHQtPnZvbHVtZVswXSwKKyAgICAgICAgICAgIC8vICAgICAgICAgKHZsICsgdmxJbmMqZnJhbWVDb3VudCkvNjU1MzYuMGYsIGZyYW1lQ291bnQpOworCisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBsID0gKmluKys7CisgICAgICAgICAgICAgICAgKm91dCsrICs9ICh2bCA+PiAxNikgKiBsOworICAgICAgICAgICAgICAgICpvdXQrKyArPSAodnIgPj4gMTYpICogbDsKKyAgICAgICAgICAgICAgICB2bCArPSB2bEluYzsKKyAgICAgICAgICAgICAgICB2ciArPSB2ckluYzsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisKKyAgICAgICAgICAgIHQtPnByZXZWb2x1bWVbMF0gPSB2bDsKKyAgICAgICAgICAgIHQtPnByZXZWb2x1bWVbMV0gPSB2cjsKKyAgICAgICAgICAgIHQtPmFkanVzdFZvbHVtZVJhbXAoZmFsc2UpOworICAgICAgICB9CisgICAgICAgIC8vIGNvbnN0YW50IGdhaW4KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCBpbnQxNl90IHZsID0gdC0+dm9sdW1lWzBdOworICAgICAgICAgICAgY29uc3QgaW50MTZfdCB2ciA9IHQtPnZvbHVtZVsxXTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpbnQxNl90IGwgPSAqaW4rKzsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBtdWxBZGQobCwgdmwsIG91dFswXSk7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gbXVsQWRkKGwsIHZyLCBvdXRbMV0pOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICAgICAgfQogICAgIH0KICAgICB0LT5pbiA9IGluOwogfQpAQCAtNjI0LDM3ICs4MzYsNTYgQEAKIH0KIAogLy8gbm8tb3AgY2FzZQotdm9pZCBBdWRpb01peGVyOjpwcm9jZXNzX19ub3Aoc3RhdGVfdCogc3RhdGUsIHZvaWQqIG91dHB1dCkKK3ZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fbm9wKHN0YXRlX3QqIHN0YXRlKQogewotICAgIC8vIHRoaXMgYXNzdW1lcyBvdXRwdXQgMTYgYml0cyBzdGVyZW8sIG5vIHJlc2FtcGxpbmcKLSAgICBtZW1zZXQob3V0cHV0LCAwLCBzdGF0ZS0+ZnJhbWVDb3VudCo0KTsKLSAgICB1aW50MzJfdCBlbiA9IHN0YXRlLT5lbmFibGVkVHJhY2tzOwotICAgIHdoaWxlIChlbikgewotICAgICAgICBjb25zdCBpbnQgaSA9IDMxIC0gX19idWlsdGluX2Nseihlbik7Ci0gICAgICAgIGVuICY9IH4oMTw8aSk7Ci0gICAgICAgIHRyYWNrX3QmIHQgPSBzdGF0ZS0+dHJhY2tzW2ldOwotICAgICAgICBzaXplX3Qgb3V0RnJhbWVzID0gc3RhdGUtPmZyYW1lQ291bnQ7Ci0gICAgICAgIHdoaWxlIChvdXRGcmFtZXMpIHsKLSAgICAgICAgICAgIHQuYnVmZmVyLmZyYW1lQ291bnQgPSBvdXRGcmFtZXM7Ci0gICAgICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5nZXROZXh0QnVmZmVyKCZ0LmJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoIXQuYnVmZmVyLnJhdykgYnJlYWs7Ci0gICAgICAgICAgICBvdXRGcmFtZXMgLT0gdC5idWZmZXIuZnJhbWVDb3VudDsKLSAgICAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJnQuYnVmZmVyKTsKKyAgICB1aW50MzJfdCBlMCA9IHN0YXRlLT5lbmFibGVkVHJhY2tzOworICAgIHNpemVfdCBidWZTaXplID0gc3RhdGUtPmZyYW1lQ291bnQgKiBzaXplb2YoaW50MTZfdCkgKiBNQVhfTlVNX0NIQU5ORUxTOworICAgIHdoaWxlIChlMCkgeworICAgICAgICAvLyBwcm9jZXNzIGJ5IGdyb3VwIG9mIHRyYWNrcyB3aXRoIHNhbWUgb3V0cHV0IGJ1ZmZlciB0bworICAgICAgICAvLyBhdm9pZCBtdWx0aXBsZSBtZW1zZXQoKSBvbiBzYW1lIGJ1ZmZlcgorICAgICAgICB1aW50MzJfdCBlMSA9IGUwLCBlMiA9IGUwOworICAgICAgICBpbnQgaSA9IDMxIC0gX19idWlsdGluX2NseihlMSk7CisgICAgICAgIHRyYWNrX3QmIHQxID0gc3RhdGUtPnRyYWNrc1tpXTsKKyAgICAgICAgZTIgJj0gfigxPDxpKTsKKyAgICAgICAgd2hpbGUgKGUyKSB7CisgICAgICAgICAgICBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KGUyKTsKKyAgICAgICAgICAgIGUyICY9IH4oMTw8aSk7CisgICAgICAgICAgICB0cmFja190JiB0MiA9IHN0YXRlLT50cmFja3NbaV07CisgICAgICAgICAgICBpZiBVTkxJS0VMWSh0Mi5tYWluQnVmZmVyICE9IHQxLm1haW5CdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBlMSAmPSB+KDE8PGkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGUwICY9IH4oZTEpOworCisgICAgICAgIG1lbXNldCh0MS5tYWluQnVmZmVyLCAwLCBidWZTaXplKTsKKworICAgICAgICB3aGlsZSAoZTEpIHsKKyAgICAgICAgICAgIGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZTEpOworICAgICAgICAgICAgZTEgJj0gfigxPDxpKTsKKyAgICAgICAgICAgIHQxID0gc3RhdGUtPnRyYWNrc1tpXTsKKyAgICAgICAgICAgIHNpemVfdCBvdXRGcmFtZXMgPSBzdGF0ZS0+ZnJhbWVDb3VudDsKKyAgICAgICAgICAgIHdoaWxlIChvdXRGcmFtZXMpIHsKKyAgICAgICAgICAgICAgICB0MS5idWZmZXIuZnJhbWVDb3VudCA9IG91dEZyYW1lczsKKyAgICAgICAgICAgICAgICB0MS5idWZmZXJQcm92aWRlci0+Z2V0TmV4dEJ1ZmZlcigmdDEuYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXQxLmJ1ZmZlci5yYXcpIGJyZWFrOworICAgICAgICAgICAgICAgIG91dEZyYW1lcyAtPSB0MS5idWZmZXIuZnJhbWVDb3VudDsKKyAgICAgICAgICAgICAgICB0MS5idWZmZXJQcm92aWRlci0+cmVsZWFzZUJ1ZmZlcigmdDEuYnVmZmVyKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KIAogLy8gZ2VuZXJpYyBjb2RlIHdpdGhvdXQgcmVzYW1wbGluZwotdm9pZCBBdWRpb01peGVyOjpwcm9jZXNzX19nZW5lcmljTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpCit2b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3NfX2dlbmVyaWNOb1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUpCiB7CiAgICAgaW50MzJfdCBvdXRUZW1wW0JMT0NLU0laRSAqIE1BWF9OVU1fQ0hBTk5FTFNdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7CiAKICAgICAvLyBhY3F1aXJlIGVhY2ggdHJhY2sncyBidWZmZXIKICAgICB1aW50MzJfdCBlbmFibGVkVHJhY2tzID0gc3RhdGUtPmVuYWJsZWRUcmFja3M7Ci0gICAgdWludDMyX3QgZW4gPSBlbmFibGVkVHJhY2tzOwotICAgIHdoaWxlIChlbikgewotICAgICAgICBjb25zdCBpbnQgaSA9IDMxIC0gX19idWlsdGluX2Nseihlbik7Ci0gICAgICAgIGVuICY9IH4oMTw8aSk7CisgICAgdWludDMyX3QgZTAgPSBlbmFibGVkVHJhY2tzOworICAgIHdoaWxlIChlMCkgeworICAgICAgICBjb25zdCBpbnQgaSA9IDMxIC0gX19idWlsdGluX2NseihlMCk7CisgICAgICAgIGUwICY9IH4oMTw8aSk7CiAgICAgICAgIHRyYWNrX3QmIHQgPSBzdGF0ZS0+dHJhY2tzW2ldOwogICAgICAgICB0LmJ1ZmZlci5mcmFtZUNvdW50ID0gc3RhdGUtPmZyYW1lQ291bnQ7CiAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPmdldE5leHRCdWZmZXIoJnQuYnVmZmVyKTsKQEAgLTY2NiwxMTAgKzg5NywxNTYgQEAKICAgICAgICAgICAgIGVuYWJsZWRUcmFja3MgJj0gfigxPDxpKTsKICAgICB9CiAKLSAgICAvLyB0aGlzIGFzc3VtZXMgb3V0cHV0IDE2IGJpdHMgc3RlcmVvLCBubyByZXNhbXBsaW5nCi0gICAgaW50MzJfdCogb3V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KG91dHB1dCk7Ci0gICAgc2l6ZV90IG51bUZyYW1lcyA9IHN0YXRlLT5mcmFtZUNvdW50OwotICAgIGRvIHsKLSAgICAgICAgbWVtc2V0KG91dFRlbXAsIDAsIHNpemVvZihvdXRUZW1wKSk7Ci0KLSAgICAgICAgZW4gPSBlbmFibGVkVHJhY2tzOwotICAgICAgICB3aGlsZSAoZW4pIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KGVuKTsKLSAgICAgICAgICAgIGVuICY9IH4oMTw8aSk7Ci0gICAgICAgICAgICB0cmFja190JiB0ID0gc3RhdGUtPnRyYWNrc1tpXTsKLSAgICAgICAgICAgIHNpemVfdCBvdXRGcmFtZXMgPSBCTE9DS1NJWkU7Ci0gICAgICAgICAgIAotICAgICAgICAgICAgd2hpbGUgKG91dEZyYW1lcykgewotICAgICAgICAgICAgICAgIHNpemVfdCBpbkZyYW1lcyA9ICh0LmZyYW1lQ291bnQgPiBvdXRGcmFtZXMpP291dEZyYW1lczp0LmZyYW1lQ291bnQ7Ci0gICAgICAgICAgICAgICAgaWYgKGluRnJhbWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICh0Lmhvb2spKCZ0LCBvdXRUZW1wICsgKEJMT0NLU0laRS1vdXRGcmFtZXMpKk1BWF9OVU1fQ0hBTk5FTFMsIGluRnJhbWVzLCBzdGF0ZS0+cmVzYW1wbGVUZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgdC5mcmFtZUNvdW50IC09IGluRnJhbWVzOwotICAgICAgICAgICAgICAgICAgICBvdXRGcmFtZXMgLT0gaW5GcmFtZXM7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0LmZyYW1lQ291bnQgPT0gMCAmJiBvdXRGcmFtZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdC5idWZmZXJQcm92aWRlci0+cmVsZWFzZUJ1ZmZlcigmdC5idWZmZXIpOwotICAgICAgICAgICAgICAgICAgICB0LmJ1ZmZlci5mcmFtZUNvdW50ID0gbnVtRnJhbWVzIC0gKEJMT0NLU0laRSAtIG91dEZyYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPmdldE5leHRCdWZmZXIoJnQuYnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgdC5pbiA9IHQuYnVmZmVyLnJhdzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHQuaW4gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZFRyYWNrcyAmPSB+KDE8PGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdC5mcmFtZUNvdW50ID0gdC5idWZmZXIuZnJhbWVDb3VudDsKLSAgICAgICAgICAgICAgICAgfQorICAgIGUwID0gZW5hYmxlZFRyYWNrczsKKyAgICB3aGlsZSAoZTApIHsKKyAgICAgICAgLy8gcHJvY2VzcyBieSBncm91cCBvZiB0cmFja3Mgd2l0aCBzYW1lIG91dHB1dCBidWZmZXIgdG8KKyAgICAgICAgLy8gb3B0aW1pemUgY2FjaGUgdXNlCisgICAgICAgIHVpbnQzMl90IGUxID0gZTAsIGUyID0gZTA7CisgICAgICAgIGludCBqID0gMzEgLSBfX2J1aWx0aW5fY2x6KGUxKTsKKyAgICAgICAgdHJhY2tfdCYgdDEgPSBzdGF0ZS0+dHJhY2tzW2pdOworICAgICAgICBlMiAmPSB+KDE8PGopOworICAgICAgICB3aGlsZSAoZTIpIHsKKyAgICAgICAgICAgIGogPSAzMSAtIF9fYnVpbHRpbl9jbHooZTIpOworICAgICAgICAgICAgZTIgJj0gfigxPDxqKTsKKyAgICAgICAgICAgIHRyYWNrX3QmIHQyID0gc3RhdGUtPnRyYWNrc1tqXTsKKyAgICAgICAgICAgIGlmIFVOTElLRUxZKHQyLm1haW5CdWZmZXIgIT0gdDEubWFpbkJ1ZmZlcikgeworICAgICAgICAgICAgICAgIGUxICY9IH4oMTw8aik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBkaXRoZXJBbmRDbGFtcChvdXQsIG91dFRlbXAsIEJMT0NLU0laRSk7Ci0gICAgICAgIG91dCArPSBCTE9DS1NJWkU7Ci0gICAgICAgIG51bUZyYW1lcyAtPSBCTE9DS1NJWkU7Ci0gICAgfSB3aGlsZSAobnVtRnJhbWVzKTsKLQorICAgICAgICBlMCAmPSB+KGUxKTsKKyAgICAgICAgLy8gdGhpcyBhc3N1bWVzIG91dHB1dCAxNiBiaXRzIHN0ZXJlbywgbm8gcmVzYW1wbGluZworICAgICAgICBpbnQzMl90ICpvdXQgPSB0MS5tYWluQnVmZmVyOworICAgICAgICBzaXplX3QgbnVtRnJhbWVzID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgbWVtc2V0KG91dFRlbXAsIDAsIHNpemVvZihvdXRUZW1wKSk7CisgICAgICAgICAgICBlMiA9IGUxOworICAgICAgICAgICAgd2hpbGUgKGUyKSB7CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZTIpOworICAgICAgICAgICAgICAgIGUyICY9IH4oMTw8aSk7CisgICAgICAgICAgICAgICAgdHJhY2tfdCYgdCA9IHN0YXRlLT50cmFja3NbaV07CisgICAgICAgICAgICAgICAgc2l6ZV90IG91dEZyYW1lcyA9IEJMT0NLU0laRTsKKyAgICAgICAgICAgICAgICBpbnQzMl90ICphdXggPSBOVUxMOworICAgICAgICAgICAgICAgIGlmIFVOTElLRUxZKCh0Lm5lZWRzICYgTkVFRFNfQVVYX19NQVNLKSA9PSBORUVEU19BVVhfRU5BQkxFRCkgeworICAgICAgICAgICAgICAgICAgICBhdXggPSB0LmF1eEJ1ZmZlciArIG51bUZyYW1lczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2hpbGUgKG91dEZyYW1lcykgeworICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5GcmFtZXMgPSAodC5mcmFtZUNvdW50ID4gb3V0RnJhbWVzKT9vdXRGcmFtZXM6dC5mcmFtZUNvdW50OworICAgICAgICAgICAgICAgICAgICBpZiAoaW5GcmFtZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICh0Lmhvb2spKCZ0LCBvdXRUZW1wICsgKEJMT0NLU0laRS1vdXRGcmFtZXMpKk1BWF9OVU1fQ0hBTk5FTFMsIGluRnJhbWVzLCBzdGF0ZS0+cmVzYW1wbGVUZW1wLCBhdXgpOworICAgICAgICAgICAgICAgICAgICAgICAgdC5mcmFtZUNvdW50IC09IGluRnJhbWVzOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0RnJhbWVzIC09IGluRnJhbWVzOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgVU5MSUtFTFkoYXV4ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXggKz0gaW5GcmFtZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHQuZnJhbWVDb3VudCA9PSAwICYmIG91dEZyYW1lcykgeworICAgICAgICAgICAgICAgICAgICAgICAgdC5idWZmZXJQcm92aWRlci0+cmVsZWFzZUJ1ZmZlcigmdC5idWZmZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgdC5idWZmZXIuZnJhbWVDb3VudCA9IChzdGF0ZS0+ZnJhbWVDb3VudCAtIG51bUZyYW1lcykgLSAoQkxPQ0tTSVpFIC0gb3V0RnJhbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPmdldE5leHRCdWZmZXIoJnQuYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHQuaW4gPSB0LmJ1ZmZlci5yYXc7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZFRyYWNrcyAmPSB+KDE8PGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUxICY9IH4oMTw8aSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0LmZyYW1lQ291bnQgPSB0LmJ1ZmZlci5mcmFtZUNvdW50OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGl0aGVyQW5kQ2xhbXAob3V0LCBvdXRUZW1wLCBCTE9DS1NJWkUpOworICAgICAgICAgICAgb3V0ICs9IEJMT0NLU0laRTsKKyAgICAgICAgICAgIG51bUZyYW1lcyArPSBCTE9DS1NJWkU7CisgICAgICAgIH0gd2hpbGUgKG51bUZyYW1lcyA8IHN0YXRlLT5mcmFtZUNvdW50KTsKKyAgICB9CiAKICAgICAvLyByZWxlYXNlIGVhY2ggdHJhY2sncyBidWZmZXIKLSAgICBlbiA9IGVuYWJsZWRUcmFja3M7Ci0gICAgd2hpbGUgKGVuKSB7Ci0gICAgICAgIGNvbnN0IGludCBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KGVuKTsKLSAgICAgICAgZW4gJj0gfigxPDxpKTsKKyAgICBlMCA9IGVuYWJsZWRUcmFja3M7CisgICAgd2hpbGUgKGUwKSB7CisgICAgICAgIGNvbnN0IGludCBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KGUwKTsKKyAgICAgICAgZTAgJj0gfigxPDxpKTsKICAgICAgICAgdHJhY2tfdCYgdCA9IHN0YXRlLT50cmFja3NbaV07CiAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJnQuYnVmZmVyKTsKICAgICB9CiB9CiAKLS8vIGdlbmVyaWMgY29kZSB3aXRoIHJlc2FtcGxpbmcKLXZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fZ2VuZXJpY1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUsIHZvaWQqIG91dHB1dCkKKworICAvLyBnZW5lcmljIGNvZGUgd2l0aCByZXNhbXBsaW5nCit2b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3NfX2dlbmVyaWNSZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlKQogewogICAgIGludDMyX3QqIGNvbnN0IG91dFRlbXAgPSBzdGF0ZS0+b3V0cHV0VGVtcDsKICAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IHNpemVvZihpbnQzMl90KSAqIE1BWF9OVU1fQ0hBTk5FTFMgKiBzdGF0ZS0+ZnJhbWVDb3VudDsKICAgICBtZW1zZXQob3V0VGVtcCwgMCwgc2l6ZSk7CiAKLSAgICBpbnQzMl90KiBvdXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90Kj4ob3V0cHV0KTsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gc3RhdGUtPmZyYW1lQ291bnQ7CiAKLSAgICB1aW50MzJfdCBlbiA9IHN0YXRlLT5lbmFibGVkVHJhY2tzOwotICAgIHdoaWxlIChlbikgewotICAgICAgICBjb25zdCBpbnQgaSA9IDMxIC0gX19idWlsdGluX2Nseihlbik7Ci0gICAgICAgIGVuICY9IH4oMTw8aSk7Ci0gICAgICAgIHRyYWNrX3QmIHQgPSBzdGF0ZS0+dHJhY2tzW2ldOwotCi0gICAgICAgIC8vIHRoaXMgaXMgYSBsaXR0bGUgZ29vZnksIG9uIHRoZSByZXNhbXBsaW5nIGNhc2Ugd2UgZG9uJ3QKLSAgICAgICAgLy8gYWNxdWlyZS9yZWxlYXNlIHRoZSBidWZmZXJzIGJlY2F1c2UgaXQncyBkb25lIGJ5Ci0gICAgICAgIC8vIHRoZSByZXNhbXBsZXIuCi0gICAgICAgIGlmICgodC5uZWVkcyAmIE5FRURTX1JFU0FNUExFX19NQVNLKSA9PSBORUVEU19SRVNBTVBMRV9FTkFCTEVEKSB7Ci0gICAgICAgICAgICAodC5ob29rKSgmdCwgb3V0VGVtcCwgbnVtRnJhbWVzLCBzdGF0ZS0+cmVzYW1wbGVUZW1wKTsKLSAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgc2l6ZV90IG91dEZyYW1lcyA9IG51bUZyYW1lczsKLSAgICAgICAgICAgCi0gICAgICAgICAgICB3aGlsZSAob3V0RnJhbWVzKSB7Ci0gICAgICAgICAgICAgICAgdC5idWZmZXIuZnJhbWVDb3VudCA9IG91dEZyYW1lczsKLSAgICAgICAgICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5nZXROZXh0QnVmZmVyKCZ0LmJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgdC5pbiA9IHQuYnVmZmVyLnJhdzsKLSAgICAgICAgICAgICAgICAvLyB0LmluID09IE5VTEwgY2FuIGhhcHBlbiBpZiB0aGUgdHJhY2sgd2FzIGZsdXNoZWQganVzdCBhZnRlciBoYXZpbmcKLSAgICAgICAgICAgICAgICAvLyBiZWVuIGVuYWJsZWQgZm9yIG1peGluZy4KLSAgICAgICAgICAgICAgICBpZiAodC5pbiA9PSBOVUxMKSBicmVhazsKLQotICAgICAgICAgICAgICAgICh0Lmhvb2spKCZ0LCBvdXRUZW1wICsgKG51bUZyYW1lcy1vdXRGcmFtZXMpKk1BWF9OVU1fQ0hBTk5FTFMsIHQuYnVmZmVyLmZyYW1lQ291bnQsIHN0YXRlLT5yZXNhbXBsZVRlbXApOwotICAgICAgICAgICAgICAgIG91dEZyYW1lcyAtPSB0LmJ1ZmZlci5mcmFtZUNvdW50OwotICAgICAgICAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJnQuYnVmZmVyKTsKKyAgICB1aW50MzJfdCBlMCA9IHN0YXRlLT5lbmFibGVkVHJhY2tzOworICAgIHdoaWxlIChlMCkgeworICAgICAgICAvLyBwcm9jZXNzIGJ5IGdyb3VwIG9mIHRyYWNrcyB3aXRoIHNhbWUgb3V0cHV0IGJ1ZmZlcgorICAgICAgICAvLyB0byBvcHRpbWl6ZSBjYWNoZSB1c2UKKyAgICAgICAgdWludDMyX3QgZTEgPSBlMCwgZTIgPSBlMDsKKyAgICAgICAgaW50IGogPSAzMSAtIF9fYnVpbHRpbl9jbHooZTEpOworICAgICAgICB0cmFja190JiB0MSA9IHN0YXRlLT50cmFja3Nbal07CisgICAgICAgIGUyICY9IH4oMTw8aik7CisgICAgICAgIHdoaWxlIChlMikgeworICAgICAgICAgICAgaiA9IDMxIC0gX19idWlsdGluX2NseihlMik7CisgICAgICAgICAgICBlMiAmPSB+KDE8PGopOworICAgICAgICAgICAgdHJhY2tfdCYgdDIgPSBzdGF0ZS0+dHJhY2tzW2pdOworICAgICAgICAgICAgaWYgVU5MSUtFTFkodDIubWFpbkJ1ZmZlciAhPSB0MS5tYWluQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZTEgJj0gfigxPDxqKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KKyAgICAgICAgZTAgJj0gfihlMSk7CisgICAgICAgIGludDMyX3QgKm91dCA9IHQxLm1haW5CdWZmZXI7CisgICAgICAgIHdoaWxlIChlMSkgeworICAgICAgICAgICAgY29uc3QgaW50IGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZTEpOworICAgICAgICAgICAgZTEgJj0gfigxPDxpKTsKKyAgICAgICAgICAgIHRyYWNrX3QmIHQgPSBzdGF0ZS0+dHJhY2tzW2ldOworICAgICAgICAgICAgaW50MzJfdCAqYXV4ID0gTlVMTDsKKyAgICAgICAgICAgIGlmIFVOTElLRUxZKCh0Lm5lZWRzICYgTkVFRFNfQVVYX19NQVNLKSA9PSBORUVEU19BVVhfRU5BQkxFRCkgeworICAgICAgICAgICAgICAgIGF1eCA9IHQuYXV4QnVmZmVyOworICAgICAgICAgICAgfQogCi0gICAgZGl0aGVyQW5kQ2xhbXAob3V0LCBvdXRUZW1wLCBudW1GcmFtZXMpOworICAgICAgICAgICAgLy8gdGhpcyBpcyBhIGxpdHRsZSBnb29meSwgb24gdGhlIHJlc2FtcGxpbmcgY2FzZSB3ZSBkb24ndAorICAgICAgICAgICAgLy8gYWNxdWlyZS9yZWxlYXNlIHRoZSBidWZmZXJzIGJlY2F1c2UgaXQncyBkb25lIGJ5CisgICAgICAgICAgICAvLyB0aGUgcmVzYW1wbGVyLgorICAgICAgICAgICAgaWYgKCh0Lm5lZWRzICYgTkVFRFNfUkVTQU1QTEVfX01BU0spID09IE5FRURTX1JFU0FNUExFX0VOQUJMRUQpIHsKKyAgICAgICAgICAgICAgICAodC5ob29rKSgmdCwgb3V0VGVtcCwgbnVtRnJhbWVzLCBzdGF0ZS0+cmVzYW1wbGVUZW1wLCBhdXgpOworICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgICAgIHNpemVfdCBvdXRGcmFtZXMgPSAwOworCisgICAgICAgICAgICAgICAgd2hpbGUgKG91dEZyYW1lcyA8IG51bUZyYW1lcykgeworICAgICAgICAgICAgICAgICAgICB0LmJ1ZmZlci5mcmFtZUNvdW50ID0gbnVtRnJhbWVzIC0gb3V0RnJhbWVzOworICAgICAgICAgICAgICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5nZXROZXh0QnVmZmVyKCZ0LmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgIHQuaW4gPSB0LmJ1ZmZlci5yYXc7CisgICAgICAgICAgICAgICAgICAgIC8vIHQuaW4gPT0gTlVMTCBjYW4gaGFwcGVuIGlmIHRoZSB0cmFjayB3YXMgZmx1c2hlZCBqdXN0IGFmdGVyIGhhdmluZworICAgICAgICAgICAgICAgICAgICAvLyBiZWVuIGVuYWJsZWQgZm9yIG1peGluZy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHQuaW4gPT0gTlVMTCkgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgVU5MSUtFTFkoYXV4ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1eCArPSBvdXRGcmFtZXM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKHQuaG9vaykoJnQsIG91dFRlbXAgKyBvdXRGcmFtZXMqTUFYX05VTV9DSEFOTkVMUywgdC5idWZmZXIuZnJhbWVDb3VudCwgc3RhdGUtPnJlc2FtcGxlVGVtcCwgYXV4KTsKKyAgICAgICAgICAgICAgICAgICAgb3V0RnJhbWVzICs9IHQuYnVmZmVyLmZyYW1lQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJnQuYnVmZmVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGl0aGVyQW5kQ2xhbXAob3V0LCBvdXRUZW1wLCBudW1GcmFtZXMpOworICAgIH0KIH0KIAogLy8gb25lIHRyYWNrLCAxNiBiaXRzIHN0ZXJlbyB3aXRob3V0IHJlc2FtcGxpbmcgaXMgdGhlIG1vc3QgY29tbW9uIGNhc2UKLXZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fT25lVHJhY2sxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUsIHZvaWQqIG91dHB1dCkKK3ZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fT25lVHJhY2sxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUpCiB7CiAgICAgY29uc3QgaW50IGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooc3RhdGUtPmVuYWJsZWRUcmFja3MpOwogICAgIGNvbnN0IHRyYWNrX3QmIHQgPSBzdGF0ZS0+dHJhY2tzW2ldOwogCiAgICAgQXVkaW9CdWZmZXJQcm92aWRlcjo6QnVmZmVyJiBiKHQuYnVmZmVyKTsKLSAgIAotICAgIGludDMyX3QqIG91dCA9IHN0YXRpY19jYXN0PGludDMyX3QqPihvdXRwdXQpOworCisgICAgaW50MzJfdCogb3V0ID0gdC5tYWluQnVmZmVyOwogICAgIHNpemVfdCBudW1GcmFtZXMgPSBzdGF0ZS0+ZnJhbWVDb3VudDsKLSAgCisKICAgICBjb25zdCBpbnQxNl90IHZsID0gdC52b2x1bWVbMF07CiAgICAgY29uc3QgaW50MTZfdCB2ciA9IHQudm9sdW1lWzFdOwogICAgIGNvbnN0IHVpbnQzMl90IHZybCA9IHQudm9sdW1lUkw7CkBAIC03ODcsNyArMTA2NCw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc2l6ZV90IG91dEZyYW1lcyA9IGIuZnJhbWVDb3VudDsKLSAgICAgICAKKwogICAgICAgICBpZiAoVU5MSUtFTFkodWludDMyX3QodmwpID4gVU5JVFlfR0FJTiB8fCB1aW50MzJfdCh2cikgPiBVTklUWV9HQUlOKSkgewogICAgICAgICAgICAgLy8gdm9sdW1lIGlzIGJvb3N0ZWQsIHNvIHdlIG1pZ2h0IG5lZWQgdG8gY2xhbXAgZXZlbiB0aG91Z2gKICAgICAgICAgICAgIC8vIHdlIHByb2Nlc3Mgb25seSBvbmUgdHJhY2suCkBAIC04MTYsNyArMTA5Myw5IEBACiB9CiAKIC8vIDIgdHJhY2tzIGlzIGFsc28gYSBjb21tb24gY2FzZQotdm9pZCBBdWRpb01peGVyOjpwcm9jZXNzX19Ud29UcmFja3MxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUsIHZvaWQqIG91dHB1dCkKKy8vIE5FVkVSIHVzZWQgaW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBwcm9jZXNzX192YWxpZGF0ZSgpCisvLyBvbmx5IHVzZSBpZiB0aGUgMiB0cmFja3MgaGF2ZSB0aGUgc2FtZSBvdXRwdXQgYnVmZmVyCit2b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3NfX1R3b1RyYWNrczE2Qml0c1N0ZXJlb05vUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSkKIHsKICAgICBpbnQgaTsKICAgICB1aW50MzJfdCBlbiA9IHN0YXRlLT5lbmFibGVkVHJhY2tzOwpAQCAtODI5LDI0ICsxMTA4LDI1IEBACiAgICAgaSA9IDMxIC0gX19idWlsdGluX2Nseihlbik7CiAgICAgY29uc3QgdHJhY2tfdCYgdDEgPSBzdGF0ZS0+dHJhY2tzW2ldOwogICAgIEF1ZGlvQnVmZmVyUHJvdmlkZXI6OkJ1ZmZlciYgYjEodDEuYnVmZmVyKTsKLSAgIAorCiAgICAgaW50MTZfdCBjb25zdCAqaW4wOwogICAgIGNvbnN0IGludDE2X3QgdmwwID0gdDAudm9sdW1lWzBdOwogICAgIGNvbnN0IGludDE2X3QgdnIwID0gdDAudm9sdW1lWzFdOwogICAgIHNpemVfdCBmcmFtZUNvdW50MCA9IDA7Ci0gIAorCiAgICAgaW50MTZfdCBjb25zdCAqaW4xOwogICAgIGNvbnN0IGludDE2X3QgdmwxID0gdDEudm9sdW1lWzBdOwogICAgIGNvbnN0IGludDE2X3QgdnIxID0gdDEudm9sdW1lWzFdOwogICAgIHNpemVfdCBmcmFtZUNvdW50MSA9IDA7Ci0gICAKLSAgICBpbnQzMl90KiBvdXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90Kj4ob3V0cHV0KTsKKworICAgIC8vRklYTUU6IG9ubHkgd29ya3MgaWYgdHdvIHRyYWNrcyB1c2Ugc2FtZSBidWZmZXIKKyAgICBpbnQzMl90KiBvdXQgPSB0MC5tYWluQnVmZmVyOwogICAgIHNpemVfdCBudW1GcmFtZXMgPSBzdGF0ZS0+ZnJhbWVDb3VudDsKICAgICBpbnQxNl90IGNvbnN0ICpidWZmID0gTlVMTDsKIAotICAKKwogICAgIHdoaWxlIChudW1GcmFtZXMpIHsKLSAgIAorCiAgICAgICAgIGlmIChmcmFtZUNvdW50MCA9PSAwKSB7CiAgICAgICAgICAgICBiMC5mcmFtZUNvdW50ID0gbnVtRnJhbWVzOwogICAgICAgICAgICAgdDAuYnVmZmVyUHJvdmlkZXItPmdldE5leHRCdWZmZXIoJmIwKTsKQEAgLTg3NSwxMyArMTE1NSwxMyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWVDb3VudDEgPSBiMS5mcmFtZUNvdW50OwogICAgICAgICB9Ci0gICAgICAgCisKICAgICAgICAgc2l6ZV90IG91dEZyYW1lcyA9IGZyYW1lQ291bnQwIDwgZnJhbWVDb3VudDE/ZnJhbWVDb3VudDA6ZnJhbWVDb3VudDE7CiAKICAgICAgICAgbnVtRnJhbWVzIC09IG91dEZyYW1lczsKICAgICAgICAgZnJhbWVDb3VudDAgLT0gb3V0RnJhbWVzOwogICAgICAgICBmcmFtZUNvdW50MSAtPSBvdXRGcmFtZXM7Ci0gICAgICAgCisKICAgICAgICAgZG8gewogICAgICAgICAgICAgaW50MzJfdCBsMCA9ICppbjArKzsKICAgICAgICAgICAgIGludDMyX3QgcjAgPSAqaW4wKys7CkBAIC04OTYsMTcgKzExNzYsMTcgQEAKICAgICAgICAgICAgIHIgPSBjbGFtcDE2KHIpOwogICAgICAgICAgICAgKm91dCsrID0gKHI8PDE2KSB8IChsICYgMHhGRkZGKTsKICAgICAgICAgfSB3aGlsZSAoLS1vdXRGcmFtZXMpOwotICAgICAgIAorCiAgICAgICAgIGlmIChmcmFtZUNvdW50MCA9PSAwKSB7CiAgICAgICAgICAgICB0MC5idWZmZXJQcm92aWRlci0+cmVsZWFzZUJ1ZmZlcigmYjApOwogICAgICAgICB9CiAgICAgICAgIGlmIChmcmFtZUNvdW50MSA9PSAwKSB7CiAgICAgICAgICAgICB0MS5idWZmZXJQcm92aWRlci0+cmVsZWFzZUJ1ZmZlcigmYjEpOwogICAgICAgICB9Ci0gICAgfSAgIAotICAgICAgIAorICAgIH0KKwogICAgIGlmIChidWZmICE9IE5VTEwpIHsKLSAgICAgICAgZGVsZXRlIFtdIGJ1ZmY7ICAgICAgIAorICAgICAgICBkZWxldGUgW10gYnVmZjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvTWl4ZXIuaCBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvTWl4ZXIuaAppbmRleCAxNTc2NmNkLi5hZWUzZTE3IDEwMDY0NAotLS0gYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb01peGVyLmgKKysrIGIvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9NaXhlci5oCkBAIC02MywxMSArNjMsMTQgQEAKICAgICAgICAgLy8gZm9yIHRhcmdldCBUUkFDSwogICAgICAgICBDSEFOTkVMX0NPVU5UICAgPSAweDQwMDAsCiAgICAgICAgIEZPUk1BVCAgICAgICAgICA9IDB4NDAwMSwKKyAgICAgICAgTUFJTl9CVUZGRVIgICAgID0gMHg0MDAyLAorICAgICAgICBBVVhfQlVGRkVSICAgICAgPSAweDQwMDMsCiAgICAgICAgIC8vIGZvciBUQVJHRVQgUkVTQU1QTEUKICAgICAgICAgU0FNUExFX1JBVEUgICAgID0gMHg0MTAwLAogICAgICAgICAvLyBmb3IgVEFSR0VUIFZPTFVNRSAoOCBjaGFubmVscyBtYXgpCiAgICAgICAgIFZPTFVNRTAgICAgICAgICA9IDB4NDIwMCwKICAgICAgICAgVk9MVU1FMSAgICAgICAgID0gMHg0MjAxLAorICAgICAgICBBVVhMRVZFTCAgICAgICAgPSAweDQyMTAsCiAgICAgfTsKIAogCkBAIC03OCwxMCArODEsMTAgQEAKICAgICBzdGF0dXNfdCAgICBkaXNhYmxlKGludCBuYW1lKTsKIAogICAgIHN0YXR1c190ICAgIHNldEFjdGl2ZVRyYWNrKGludCB0cmFjayk7Ci0gICAgc3RhdHVzX3QgICAgc2V0UGFyYW1ldGVyKGludCB0YXJnZXQsIGludCBuYW1lLCBpbnQgdmFsdWUpOworICAgIHN0YXR1c190ICAgIHNldFBhcmFtZXRlcihpbnQgdGFyZ2V0LCBpbnQgbmFtZSwgdm9pZCAqdmFsdWUpOwogCiAgICAgc3RhdHVzX3QgICAgc2V0QnVmZmVyUHJvdmlkZXIoQXVkaW9CdWZmZXJQcm92aWRlciogYnVmZmVyUHJvdmlkZXIpOwotICAgIHZvaWQgICAgICAgIHByb2Nlc3Modm9pZCogb3V0cHV0KTsKKyAgICB2b2lkICAgICAgICBwcm9jZXNzKCk7CiAKICAgICB1aW50MzJfdCAgICB0cmFja05hbWVzKCkgY29uc3QgeyByZXR1cm4gbVRyYWNrTmFtZXM7IH0KIApAQCAtOTQsNiArOTcsNyBAQAogICAgICAgICBORUVEU19GT1JNQVRfX01BU0sgICAgICAgICAgPSAweDAwMDAwMEYwLAogICAgICAgICBORUVEU19NVVRFX19NQVNLICAgICAgICAgICAgPSAweDAwMDAwMTAwLAogICAgICAgICBORUVEU19SRVNBTVBMRV9fTUFTSyAgICAgICAgPSAweDAwMDAxMDAwLAorICAgICAgICBORUVEU19BVVhfX01BU0sgICAgICAgICAgICAgPSAweDAwMDEwMDAwLAogICAgIH07CiAKICAgICBlbnVtIHsKQEAgLTEwNyw2ICsxMTEsOSBAQAogCiAgICAgICAgIE5FRURTX1JFU0FNUExFX0RJU0FCTEVEICAgICA9IDB4MDAwMDAwMDAsCiAgICAgICAgIE5FRURTX1JFU0FNUExFX0VOQUJMRUQgICAgICA9IDB4MDAwMDEwMDAsCisKKyAgICAgICAgTkVFRFNfQVVYX0RJU0FCTEVEICAgICA9IDB4MDAwMDAwMDAsCisgICAgICAgIE5FRURTX0FVWF9FTkFCTEVEICAgICAgPSAweDAwMDEwMDAwLAogICAgIH07CiAKICAgICBzdGF0aWMgaW5saW5lIGludDMyX3QgYXBwbHlWb2x1bWUoaW50MzJfdCBpbiwgaW50MzJfdCB2KSB7CkBAIC0xMTUsOSArMTIyLDEwIEBACiAKIAogICAgIHN0cnVjdCBzdGF0ZV90OworICAgIHN0cnVjdCB0cmFja190OwogCi0gICAgdHlwZWRlZiB2b2lkICgqbWl4X3QpKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpOwotCisgICAgdHlwZWRlZiB2b2lkICgqbWl4X3QpKHN0YXRlX3QqIHN0YXRlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpob29rX3QpKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dHB1dCwgc2l6ZV90IG51bU91dEZyYW1lcywgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KTsKICAgICBzdGF0aWMgY29uc3QgaW50IEJMT0NLU0laRSA9IDE2OyAvLyA0IGNhY2hlIGxpbmVzCiAKICAgICBzdHJ1Y3QgdHJhY2tfdCB7CkBAIC0xMzEsNiArMTM5LDkgQEAKICAgICAgICAgaW50MzJfdCAgICAgcHJldlZvbHVtZVsyXTsKIAogICAgICAgICBpbnQzMl90ICAgICB2b2x1bWVJbmNbMl07CisgICAgICAgIGludDMyX3QgICAgIGF1eExldmVsOworICAgICAgICBpbnQzMl90ICAgICBhdXhJbmM7CisgICAgICAgIGludDMyX3QgICAgIHByZXZBdXhMZXZlbDsKIAogICAgICAgICB1aW50MTZfdCAgICBmcmFtZUNvdW50OwogCkBAIC0xNDIsMTUgKzE1MywxNyBAQAogICAgICAgICBBdWRpb0J1ZmZlclByb3ZpZGVyKiAgICAgICAgICAgICAgICBidWZmZXJQcm92aWRlcjsKICAgICAgICAgbXV0YWJsZSBBdWRpb0J1ZmZlclByb3ZpZGVyOjpCdWZmZXIgYnVmZmVyOwogCi0gICAgICAgIHZvaWQgKCpob29rKSh0cmFja190KiB0LCBpbnQzMl90KiBvdXRwdXQsIHNpemVfdCBudW1PdXRGcmFtZXMsIGludDMyX3QqIHRlbXApOworICAgICAgICBob29rX3QgICAgICBob29rOwogICAgICAgICB2b2lkIGNvbnN0KiBpbjsgICAgICAgICAgICAgLy8gY3VycmVudCBsb2NhdGlvbiBpbiBidWZmZXIKIAogICAgICAgICBBdWRpb1Jlc2FtcGxlciogICAgIHJlc2FtcGxlcjsKICAgICAgICAgdWludDMyX3QgICAgICAgICAgICBzYW1wbGVSYXRlOworICAgICAgICBpbnQzMl90KiAgICAgICAgICAgbWFpbkJ1ZmZlcjsKKyAgICAgICAgaW50MzJfdCogICAgICAgICAgIGF1eEJ1ZmZlcjsKIAogICAgICAgICBib29sICAgICAgICBzZXRSZXNhbXBsZXIodWludDMyX3Qgc2FtcGxlUmF0ZSwgdWludDMyX3QgZGV2U2FtcGxlUmF0ZSk7CiAgICAgICAgIGJvb2wgICAgICAgIGRvZXNSZXNhbXBsZSgpIGNvbnN0OwotICAgICAgICB2b2lkICAgICAgICBhZGp1c3RWb2x1bWVSYW1wKCk7CisgICAgICAgIHZvaWQgICAgICAgIGFkanVzdFZvbHVtZVJhbXAoYm9vbCBhdXgpOwogICAgIH07CiAKICAgICAvLyBwYWQgdG8gMzItYnl0ZXMgdG8gZmlsbCBjYWNoZSBsaW5lCkBAIC0xNzMsMTggKzE4NiwxOSBAQAogCiAgICAgdm9pZCBpbnZhbGlkYXRlU3RhdGUodWludDMyX3QgbWFzayk7CiAKLSAgICBzdGF0aWMgdm9pZCB0cmFja19fZ2VuZXJpY1Jlc2FtcGxlKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IG51bUZyYW1lcywgaW50MzJfdCogdGVtcCk7Ci0gICAgc3RhdGljIHZvaWQgdHJhY2tfX25vcCh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBudW1GcmFtZXMsIGludDMyX3QqIHRlbXApOwotICAgIHN0YXRpYyB2b2lkIHZvbHVtZVJhbXBTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCk7Ci0gICAgc3RhdGljIHZvaWQgdHJhY2tfXzE2Qml0c1N0ZXJlbyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBudW1GcmFtZXMsIGludDMyX3QqIHRlbXApOwotICAgIHN0YXRpYyB2b2lkIHRyYWNrX18xNkJpdHNNb25vKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IG51bUZyYW1lcywgaW50MzJfdCogdGVtcCk7CisgICAgc3RhdGljIHZvaWQgdHJhY2tfX2dlbmVyaWNSZXNhbXBsZSh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBudW1GcmFtZXMsIGludDMyX3QqIHRlbXAsIGludDMyX3QqIGF1eCk7CisgICAgc3RhdGljIHZvaWQgdHJhY2tfX25vcCh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBudW1GcmFtZXMsIGludDMyX3QqIHRlbXAsIGludDMyX3QqIGF1eCk7CisgICAgc3RhdGljIHZvaWQgdHJhY2tfXzE2Qml0c1N0ZXJlbyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBudW1GcmFtZXMsIGludDMyX3QqIHRlbXAsIGludDMyX3QqIGF1eCk7CisgICAgc3RhdGljIHZvaWQgdHJhY2tfXzE2Qml0c01vbm8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgbnVtRnJhbWVzLCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpOworICAgIHN0YXRpYyB2b2lkIHZvbHVtZVJhbXBTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KTsKKyAgICBzdGF0aWMgdm9pZCB2b2x1bWVTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KTsKIAotICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NfX3ZhbGlkYXRlKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpOwotICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NfX25vcChzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KTsKLSAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX19nZW5lcmljTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpOwotICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NfX2dlbmVyaWNSZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpOwotICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NfX09uZVRyYWNrMTZCaXRzU3RlcmVvTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpOwotICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NfX1R3b1RyYWNrczE2Qml0c1N0ZXJlb05vUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX192YWxpZGF0ZShzdGF0ZV90KiBzdGF0ZSk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc19fbm9wKHN0YXRlX3QqIHN0YXRlKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX19nZW5lcmljTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX19nZW5lcmljUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc19fT25lVHJhY2sxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUpOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NfX1R3b1RyYWNrczE2Qml0c1N0ZXJlb05vUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSk7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb1BvbGljeU1hbmFnZXJCYXNlLmNwcCBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvUG9saWN5TWFuYWdlckJhc2UuY3BwCmluZGV4IGM4YjNmNDguLjM4MWE5NTggMTAwNjQ0Ci0tLSBhL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvUG9saWN5TWFuYWdlckJhc2UuY3BwCisrKyBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvUG9saWN5TWFuYWdlckJhc2UuY3BwCkBAIC0xMjQ5LDYgKzEyNDksMTcgQEAKICAgICBMT0dWKCJzZXREZXZpY2VDb25uZWN0aW9uU3RhdGUoKSBjbG9zaW5nIEEyRFAgYW5kIGR1cGxpY2F0ZWQgb3V0cHV0ISIpOwogCiAgICAgaWYgKG1EdXBsaWNhdGVkT3V0cHV0ICE9IDApIHsKKyAgICAgICAgQXVkaW9PdXRwdXREZXNjcmlwdG9yICpkdXBPdXRwdXREZXNjID0gbU91dHB1dHMudmFsdWVGb3IobUR1cGxpY2F0ZWRPdXRwdXQpOworICAgICAgICBBdWRpb091dHB1dERlc2NyaXB0b3IgKmh3T3V0cHV0RGVzYyA9IG1PdXRwdXRzLnZhbHVlRm9yKG1IYXJkd2FyZU91dHB1dCk7CisgICAgICAgIC8vIEFzIGFsbCBhY3RpdmUgdHJhY2tzIG9uIGR1cGxpY2F0ZWQgb3V0cHV0IHdpbGwgYmUgZGVsZXRlZCwKKyAgICAgICAgLy8gYW5kIGFzIHRoZXkgd2VyZSBhbHNvIHJlZmVyZW5jZWQgb24gaGFyZHdhcmUgb3V0cHV0LCB0aGUgcmVmZXJlbmNlCisgICAgICAgIC8vIGNvdW50IGZvciB0aGVpciBzdHJlYW0gdHlwZSBtdXN0IGJlIGFkanVzdGVkIGFjY29yZGluZ2x5IG9uCisgICAgICAgIC8vIGhhcmR3YXJlIG91dHB1dC4KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KUF1ZGlvU3lzdGVtOjpOVU1fU1RSRUFNX1RZUEVTOyBpKyspIHsKKyAgICAgICAgICAgIGludCByZWZDb3VudCA9IGR1cE91dHB1dERlc2MtPm1SZWZDb3VudFtpXTsKKyAgICAgICAgICAgIGh3T3V0cHV0RGVzYy0+Y2hhbmdlUmVmQ291bnQoKEF1ZGlvU3lzdGVtOjpzdHJlYW1fdHlwZSlpLC1yZWZDb3VudCk7CisgICAgICAgIH0KKwogICAgICAgICBtcENsaWVudEludGVyZmFjZS0+Y2xvc2VPdXRwdXQobUR1cGxpY2F0ZWRPdXRwdXQpOwogICAgICAgICBkZWxldGUgbU91dHB1dHMudmFsdWVGb3IobUR1cGxpY2F0ZWRPdXRwdXQpOwogICAgICAgICBtT3V0cHV0cy5yZW1vdmVJdGVtKG1EdXBsaWNhdGVkT3V0cHV0KTsKQEAgLTEyODgsMTEgKzEyOTksNiBAQAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpQXVkaW9TeXN0ZW06Ok5VTV9TVFJFQU1fVFlQRVM7IGkrKykgewogICAgICAgICAgICAgaWYgKGdldFN0cmF0ZWd5KChBdWRpb1N5c3RlbTo6c3RyZWFtX3R5cGUpaSkgPT0gc3RyYXRlZ3kpIHsKICAgICAgICAgICAgICAgICBtcENsaWVudEludGVyZmFjZS0+c2V0U3RyZWFtT3V0cHV0KChBdWRpb1N5c3RlbTo6c3RyZWFtX3R5cGUpaSwgbUhhcmR3YXJlT3V0cHV0KTsKLSAgICAgICAgICAgICAgICBpbnQgcmVmQ291bnQgPSBhMmRwT3V0cHV0RGVzYy0+bVJlZkNvdW50W2ldOwotICAgICAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGR1cGxpY2F0ZWQgb3V0cHV0LCB0aGUgcmVmIGNvdW50IGlzIGZpcnN0IGluY3JlbWVudGVkCi0gICAgICAgICAgICAgICAgLy8gYW5kIHRoZW4gZGVjcmVtZW50ZWQgb24gaGFyZHdhcmUgb3V0cHV0IHR1cyBrZWVwaW5nIGl0cyB2YWx1ZQotICAgICAgICAgICAgICAgIGh3T3V0cHV0RGVzYy0+Y2hhbmdlUmVmQ291bnQoKEF1ZGlvU3lzdGVtOjpzdHJlYW1fdHlwZSlpLCByZWZDb3VudCk7Ci0gICAgICAgICAgICAgICAgYTJkcE91dHB1dERlc2MtPmNoYW5nZVJlZkNvdW50KChBdWRpb1N5c3RlbTo6c3RyZWFtX3R5cGUpaSwtcmVmQ291bnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8vIGRvIG5vdCBjaGFuZ2UgbmV3RGV2aWNlIGlmIGl0IHdhcyBhbHJlYWR5IHNldCBiZWZvcmUgdGhpcyBjYWxsIGJ5IGEgcHJldmlvdXMgY2FsbCB0bwpAQCAtMTMxOCwxMSArMTMyNCw2IEBACiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludClBdWRpb1N5c3RlbTo6TlVNX1NUUkVBTV9UWVBFUzsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoZ2V0U3RyYXRlZ3koKEF1ZGlvU3lzdGVtOjpzdHJlYW1fdHlwZSlpKSA9PSBzdHJhdGVneSkgewogICAgICAgICAgICAgICAgIG1wQ2xpZW50SW50ZXJmYWNlLT5zZXRTdHJlYW1PdXRwdXQoKEF1ZGlvU3lzdGVtOjpzdHJlYW1fdHlwZSlpLCBhMmRwT3V0cHV0KTsKLSAgICAgICAgICAgICAgICBpbnQgcmVmQ291bnQgPSBod091dHB1dERlc2MtPm1SZWZDb3VudFtpXTsKLSAgICAgICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBkdXBsaWNhdGVkIG91dHB1dCwgdGhlIHJlZiBjb3VudCBpcyBmaXJzdCBpbmNyZW1lbnRlZAotICAgICAgICAgICAgICAgIC8vIGFuZCB0aGVuIGRlY3JlbWVudGVkIG9uIGhhcmR3YXJlIG91dHB1dCB0dXMga2VlcGluZyBpdHMgdmFsdWUKLSAgICAgICAgICAgICAgICBhMmRwT3V0cHV0RGVzYy0+Y2hhbmdlUmVmQ291bnQoKEF1ZGlvU3lzdGVtOjpzdHJlYW1fdHlwZSlpLCByZWZDb3VudCk7Ci0gICAgICAgICAgICAgICAgaHdPdXRwdXREZXNjLT5jaGFuZ2VSZWZDb3VudCgoQXVkaW9TeXN0ZW06OnN0cmVhbV90eXBlKWksLXJlZkNvdW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2xpYnMvYmluZGVyL0lQQ1RocmVhZFN0YXRlLmNwcCBiL2xpYnMvYmluZGVyL0lQQ1RocmVhZFN0YXRlLmNwcAppbmRleCAwMDE2NTAzLi4yODcwNmJhIDEwMDY0NAotLS0gYS9saWJzL2JpbmRlci9JUENUaHJlYWRTdGF0ZS5jcHAKKysrIGIvbGlicy9iaW5kZXIvSVBDVGhyZWFkU3RhdGUuY3BwCkBAIC0zNjcsNiArMzY3LDE2IEBACiAgICAgcmV0dXJuIHRva2VuOwogfQogCit2b2lkIElQQ1RocmVhZFN0YXRlOjpzZXRTdHJpY3RNb2RlUG9saWN5KGludDMyX3QgcG9saWN5KQoreworICAgIG1TdHJpY3RNb2RlUG9saWN5ID0gcG9saWN5OworfQorCisKK2ludDMyX3QgSVBDVGhyZWFkU3RhdGU6OmdldFN0cmljdE1vZGVQb2xpY3koKSBjb25zdCB7CisgICAgcmV0dXJuIG1TdHJpY3RNb2RlUG9saWN5OworfQorCiB2b2lkIElQQ1RocmVhZFN0YXRlOjpyZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGludDY0X3QgdG9rZW4pCiB7CiAgICAgbUNhbGxpbmdVaWQgPSAoaW50KSh0b2tlbj4+MzIpOwpAQCAtNTg4LDcgKzU5OCw4IEBACiB9CiAKIElQQ1RocmVhZFN0YXRlOjpJUENUaHJlYWRTdGF0ZSgpCi0gICAgOiBtUHJvY2VzcyhQcm9jZXNzU3RhdGU6OnNlbGYoKSksIG1NeVRocmVhZElkKGFuZHJvaWRHZXRUaWQoKSkKKyAgICA6IG1Qcm9jZXNzKFByb2Nlc3NTdGF0ZTo6c2VsZigpKSwgbU15VGhyZWFkSWQoYW5kcm9pZEdldFRpZCgpKSwKKyAgICAgIG1TdHJpY3RNb2RlUG9saWN5KDApCiB7CiAgICAgcHRocmVhZF9zZXRzcGVjaWZpYyhnVExTLCB0aGlzKTsKICAgICBjbGVhckNhbGxlcigpOwpkaWZmIC0tZ2l0IGEvbGlicy9iaW5kZXIvSVNlcnZpY2VNYW5hZ2VyLmNwcCBiL2xpYnMvYmluZGVyL0lTZXJ2aWNlTWFuYWdlci5jcHAKaW5kZXggMGNmNDE1ODYuLmEzYTNmMGUgMTAwNjQ0Ci0tLSBhL2xpYnMvYmluZGVyL0lTZXJ2aWNlTWFuYWdlci5jcHAKKysrIGIvbGlicy9iaW5kZXIvSVNlcnZpY2VNYW5hZ2VyLmNwcApAQCAtMTI5LDE5ICsxMjksMTkgQEAKICAgICAgICAgOiBCcEludGVyZmFjZTxJU2VydmljZU1hbmFnZXI+KGltcGwpCiAgICAgewogICAgIH0KLSAgICAgICAgCisKICAgICB2aXJ0dWFsIHNwPElCaW5kZXI+IGdldFNlcnZpY2UoY29uc3QgU3RyaW5nMTYmIG5hbWUpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCBuOwogICAgICAgICBmb3IgKG4gPSAwOyBuIDwgNTsgbisrKXsKICAgICAgICAgICAgIHNwPElCaW5kZXI+IHN2YyA9IGNoZWNrU2VydmljZShuYW1lKTsKICAgICAgICAgICAgIGlmIChzdmMgIT0gTlVMTCkgcmV0dXJuIHN2YzsKLSAgICAgICAgICAgIExPR0koIldhaXRpbmcgZm9yIHNldmljZSAlcy4uLlxuIiwgU3RyaW5nOChuYW1lKS5zdHJpbmcoKSk7CisgICAgICAgICAgICBMT0dJKCJXYWl0aW5nIGZvciBzZXJ2aWNlICVzLi4uXG4iLCBTdHJpbmc4KG5hbWUpLnN0cmluZygpKTsKICAgICAgICAgICAgIHNsZWVwKDEpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICAKKwogICAgIHZpcnR1YWwgc3A8SUJpbmRlcj4gY2hlY2tTZXJ2aWNlKCBjb25zdCBTdHJpbmcxNiYgbmFtZSkgY29uc3QKICAgICB7CiAgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKQEAgLTIyNiw0ICsyMjYsMyBAQAogfQogCiB9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCmRpZmYgLS1naXQgYS9saWJzL2JpbmRlci9QYXJjZWwuY3BwIGIvbGlicy9iaW5kZXIvUGFyY2VsLmNwcAppbmRleCAwMGQyMjEwLi5jMjU3NGJkIDEwMDY0NAotLS0gYS9saWJzL2JpbmRlci9QYXJjZWwuY3BwCisrKyBiL2xpYnMvYmluZGVyL1BhcmNlbC5jcHAKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KIAorI2luY2x1ZGUgPGJpbmRlci9JUENUaHJlYWRTdGF0ZS5oPgogI2luY2x1ZGUgPGJpbmRlci9CaW5kZXIuaD4KICNpbmNsdWRlIDxiaW5kZXIvQnBCaW5kZXIuaD4KICNpbmNsdWRlIDx1dGlscy9EZWJ1Zy5oPgpAQCAtNDM2LDE5ICs0MzcsMjIgQEAKICAgICByZXR1cm4gbUhhc0ZkczsKIH0KIAorLy8gV3JpdGUgUlBDIGhlYWRlcnMuICAocHJldmlvdXNseSBqdXN0IHRoZSBpbnRlcmZhY2UgdG9rZW4pCiBzdGF0dXNfdCBQYXJjZWw6OndyaXRlSW50ZXJmYWNlVG9rZW4oY29uc3QgU3RyaW5nMTYmIGludGVyZmFjZSkKIHsKKyAgICB3cml0ZUludDMyKElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmdldFN0cmljdE1vZGVQb2xpY3koKSk7CiAgICAgLy8gY3VycmVudGx5IHRoZSBpbnRlcmZhY2UgaWRlbnRpZmljYXRpb24gdG9rZW4gaXMganVzdCBpdHMgbmFtZSBhcyBhIHN0cmluZwogICAgIHJldHVybiB3cml0ZVN0cmluZzE2KGludGVyZmFjZSk7CiB9CiAKIGJvb2wgUGFyY2VsOjpjaGVja0ludGVyZmFjZShJQmluZGVyKiBiaW5kZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVuZm9yY2VJbnRlcmZhY2UoYmluZGVyLT5nZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOyAKKyAgICByZXR1cm4gZW5mb3JjZUludGVyZmFjZShiaW5kZXItPmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CiB9CiAKIGJvb2wgUGFyY2VsOjplbmZvcmNlSW50ZXJmYWNlKGNvbnN0IFN0cmluZzE2JiBpbnRlcmZhY2UpIGNvbnN0CiB7CisgICAgaW50MzJfdCBzdHJpY3RfcG9saWN5ID0gcmVhZEludDMyKCk7CiAgICAgY29uc3QgU3RyaW5nMTYgc3RyKHJlYWRTdHJpbmcxNigpKTsKICAgICBpZiAoc3RyID09IGludGVyZmFjZSkgewogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Nyw3ICs0NjEsNyBAQAogICAgICAgICAgICAgICAgIFN0cmluZzgoaW50ZXJmYWNlKS5zdHJpbmcoKSwgU3RyaW5nOChzdHIpLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLX0gCit9CiAKIGNvbnN0IHNpemVfdCogUGFyY2VsOjpvYmplY3RzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL2xpYnMvY2FtZXJhL0NhbWVyYS5jcHAgYi9saWJzL2NhbWVyYS9DYW1lcmEuY3BwCmluZGV4IGYxOWM1MDIuLjAwMzczOTkgMTAwNjQ0Ci0tLSBhL2xpYnMvY2FtZXJhL0NhbWVyYS5jcHAKKysrIGIvbGlicy9jYW1lcmEvQ2FtZXJhLmNwcApAQCAtOTIsMTYgKzkyLDM1IEBACiAKIENhbWVyYTo6fkNhbWVyYSgpCiB7Ci0gICAgZGlzY29ubmVjdCgpOworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2FsbCBkaXNjb25uZWN0KCkgaGVyZSBiZWNhdXNlIGlmIHRoZSBDYW1lcmFTZXJ2aWNlCisgICAgLy8gdGhpbmtzIHdlIGFyZSB0aGUgb3duZXIgb2YgdGhlIGhhcmR3YXJlLCBpdCB3aWxsIGhvbGQgYSAoc3Ryb25nKQorICAgIC8vIHJlZmVyZW5jZSB0byB1cywgYW5kIHdlIGNhbid0IHBvc3NpYmx5IGJlIGhlcmUuIFdlIGFsc28gZG9uJ3Qgd2FudCB0bworICAgIC8vIGNhbGwgZGlzY29ubmVjdCgpIGhlcmUgaWYgd2UgYXJlIGluIHRoZSBzYW1lIHByb2Nlc3MgYXMgbWVkaWFzZXJ2ZXIsCisgICAgLy8gYmVjYXVzZSB3ZSBtYXkgYmUgaW52b2tlZCBieSBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNvbm5lY3QoKSBhbmQgd2lsbAorICAgIC8vIGRlYWRsb2NrIGlmIHdlIGNhbGwgYW55IG1ldGhvZCBvZiBJQ2FtZXJhIGhlcmUuCiB9CiAKLXNwPENhbWVyYT4gQ2FtZXJhOjpjb25uZWN0KCkKK2ludDMyX3QgQ2FtZXJhOjpnZXROdW1iZXJPZkNhbWVyYXMoKQoreworICAgIGNvbnN0IHNwPElDYW1lcmFTZXJ2aWNlPiYgY3MgPSBnZXRDYW1lcmFTZXJ2aWNlKCk7CisgICAgaWYgKGNzID09IDApIHJldHVybiAwOworICAgIHJldHVybiBjcy0+Z2V0TnVtYmVyT2ZDYW1lcmFzKCk7Cit9CisKK3N0YXR1c190IENhbWVyYTo6Z2V0Q2FtZXJhSW5mbyhpbnQgY2FtZXJhSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IENhbWVyYUluZm8qIGNhbWVyYUluZm8pIHsKKyAgICBjb25zdCBzcDxJQ2FtZXJhU2VydmljZT4mIGNzID0gZ2V0Q2FtZXJhU2VydmljZSgpOworICAgIGlmIChjcyA9PSAwKSByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICByZXR1cm4gY3MtPmdldENhbWVyYUluZm8oY2FtZXJhSWQsIGNhbWVyYUluZm8pOworfQorCitzcDxDYW1lcmE+IENhbWVyYTo6Y29ubmVjdChpbnQgY2FtZXJhSWQpCiB7CiAgICAgTE9HVigiY29ubmVjdCIpOwogICAgIHNwPENhbWVyYT4gYyA9IG5ldyBDYW1lcmEoKTsKICAgICBjb25zdCBzcDxJQ2FtZXJhU2VydmljZT4mIGNzID0gZ2V0Q2FtZXJhU2VydmljZSgpOwogICAgIGlmIChjcyAhPSAwKSB7Ci0gICAgICAgIGMtPm1DYW1lcmEgPSBjcy0+Y29ubmVjdChjKTsKKyAgICAgICAgYy0+bUNhbWVyYSA9IGNzLT5jb25uZWN0KGMsIGNhbWVyYUlkKTsKICAgICB9CiAgICAgaWYgKGMtPm1DYW1lcmEgIT0gMCkgewogICAgICAgICBjLT5tQ2FtZXJhLT5hc0JpbmRlcigpLT5saW5rVG9EZWF0aChjKTsKZGlmZiAtLWdpdCBhL2xpYnMvY2FtZXJhL0NhbWVyYVBhcmFtZXRlcnMuY3BwIGIvbGlicy9jYW1lcmEvQ2FtZXJhUGFyYW1ldGVycy5jcHAKaW5kZXggNjVmZDdhYy4uMTQxNTQ5MyAxMDA2NDQKLS0tIGEvbGlicy9jYW1lcmEvQ2FtZXJhUGFyYW1ldGVycy5jcHAKKysrIGIvbGlicy9jYW1lcmEvQ2FtZXJhUGFyYW1ldGVycy5jcHAKQEAgLTY5LDggKzY5LDEzIEBACiBjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OktFWV9aT09NX1JBVElPU1tdID0gInpvb20tcmF0aW9zIjsKIGNvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6S0VZX1pPT01fU1VQUE9SVEVEW10gPSAiem9vbS1zdXBwb3J0ZWQiOwogY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfU01PT1RIX1pPT01fU1VQUE9SVEVEW10gPSAic21vb3RoLXpvb20tc3VwcG9ydGVkIjsKK2NvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6S0VZX0ZPQ1VTX0RJU1RBTkNFU1tdID0gImZvY3VzLWRpc3RhbmNlcyI7Citjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OktFWV9WSURFT19GUkFNRV9GT1JNQVRbXSA9ICJ2aWRlby1mcmFtZS1mb3JtYXQiOworY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfTUVURVJJTkdfTU9ERVtdID0gIm1ldGVyaW5nLW1vZGUiOworY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfU1VQUE9SVEVEX01FVEVSSU5HX01PREVTW10gPSAibWV0ZXJpbmctbW9kZS12YWx1ZXMiOwogCiBjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OlRSVUVbXSA9ICJ0cnVlIjsKK2NvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6Rk9DVVNfRElTVEFOQ0VfSU5GSU5JVFlbXSA9ICJJbmZpbml0eSI7CiAKIC8vIFZhbHVlcyBmb3Igd2hpdGUgYmFsYW5jZSBzZXR0aW5ncy4KIGNvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6V0hJVEVfQkFMQU5DRV9BVVRPW10gPSAiYXV0byI7CkBAIC0xMzcsNiArMTQyLDEyIEBACiBjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OkZPQ1VTX01PREVfTUFDUk9bXSA9ICJtYWNybyI7CiBjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OkZPQ1VTX01PREVfRklYRURbXSA9ICJmaXhlZCI7CiBjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OkZPQ1VTX01PREVfRURPRltdID0gImVkb2YiOworY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpGT0NVU19NT0RFX0NPTlRJTlVPVVNbXSA9ICJjb250aW51b3VzIjsKKworLy8gVmFsdWVzIGZvciBtZXRlcmluZyBtb2RlIHNldHRpbmdzLgorY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpNRVRFUklOR19NT0RFX0NFTlRFUl9XRUlHSFRFRFtdID0gImNlbnRlci13ZWlnaHRlZCI7Citjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6Ok1FVEVSSU5HX01PREVfRlJBTUVfQVZFUkFHRVtdID0gImZyYW1lLWF2ZXJhZ2UiOworY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpNRVRFUklOR19NT0RFX1NQT1RbXSA9ICJzcG90IjsKIAogQ2FtZXJhUGFyYW1ldGVyczo6Q2FtZXJhUGFyYW1ldGVycygpCiAgICAgICAgICAgICAgICAgOiBtTWFwKCkKZGlmZiAtLWdpdCBhL2xpYnMvY2FtZXJhL0lDYW1lcmFTZXJ2aWNlLmNwcCBiL2xpYnMvY2FtZXJhL0lDYW1lcmFTZXJ2aWNlLmNwcAppbmRleCA0NmI1NDc4Li44NWYxYTI5IDEwMDY0NAotLS0gYS9saWJzL2NhbWVyYS9JQ2FtZXJhU2VydmljZS5jcHAKKysrIGIvbGlicy9jYW1lcmEvSUNhbWVyYVNlcnZpY2UuY3BwCkBAIC0zNCwxMiArMzQsMzQgQEAKICAgICB7CiAgICAgfQogCisgICAgLy8gZ2V0IG51bWJlciBvZiBjYW1lcmFzIGF2YWlsYWJsZQorICAgIHZpcnR1YWwgaW50MzJfdCBnZXROdW1iZXJPZkNhbWVyYXMoKQorICAgIHsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUNhbWVyYVNlcnZpY2U6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChCbkNhbWVyYVNlcnZpY2U6OkdFVF9OVU1CRVJfT0ZfQ0FNRVJBUywgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOworICAgIH0KKworICAgIC8vIGdldCBpbmZvcm1hdGlvbiBhYm91dCBhIGNhbWVyYQorICAgIHZpcnR1YWwgc3RhdHVzX3QgZ2V0Q2FtZXJhSW5mbyhpbnQgY2FtZXJhSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDYW1lcmFJbmZvKiBjYW1lcmFJbmZvKSB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElDYW1lcmFTZXJ2aWNlOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoY2FtZXJhSWQpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoQm5DYW1lcmFTZXJ2aWNlOjpHRVRfQ0FNRVJBX0lORk8sIGRhdGEsICZyZXBseSk7CisgICAgICAgIGNhbWVyYUluZm8tPmZhY2luZyA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICBjYW1lcmFJbmZvLT5vcmllbnRhdGlvbiA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICByZXR1cm4gcmVwbHkucmVhZEludDMyKCk7CisgICAgfQorCiAgICAgLy8gY29ubmVjdCB0byBjYW1lcmEgc2VydmljZQotICAgIHZpcnR1YWwgc3A8SUNhbWVyYT4gY29ubmVjdChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50KQorICAgIHZpcnR1YWwgc3A8SUNhbWVyYT4gY29ubmVjdChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50LCBpbnQgY2FtZXJhSWQpCiAgICAgewogICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CiAgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQ2FtZXJhU2VydmljZTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKICAgICAgICAgZGF0YS53cml0ZVN0cm9uZ0JpbmRlcihjYW1lcmFDbGllbnQtPmFzQmluZGVyKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoY2FtZXJhSWQpOwogICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoQm5DYW1lcmFTZXJ2aWNlOjpDT05ORUNULCBkYXRhLCAmcmVwbHkpOwogICAgICAgICByZXR1cm4gaW50ZXJmYWNlX2Nhc3Q8SUNhbWVyYT4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKICAgICB9CkBAIC01MywxMCArNzUsMjUgQEAKICAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKQogewogICAgIHN3aXRjaChjb2RlKSB7CisgICAgICAgIGNhc2UgR0VUX05VTUJFUl9PRl9DQU1FUkFTOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUNhbWVyYVNlcnZpY2UsIGRhdGEsIHJlcGx5KTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKGdldE51bWJlck9mQ2FtZXJhcygpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgY2FzZSBHRVRfQ0FNRVJBX0lORk86IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQ2FtZXJhU2VydmljZSwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgQ2FtZXJhSW5mbyBjYW1lcmFJbmZvOworICAgICAgICAgICAgbWVtc2V0KCZjYW1lcmFJbmZvLCAwLCBzaXplb2YoY2FtZXJhSW5mbykpOworICAgICAgICAgICAgc3RhdHVzX3QgcmVzdWx0ID0gZ2V0Q2FtZXJhSW5mbyhkYXRhLnJlYWRJbnQzMigpLCAmY2FtZXJhSW5mbyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihjYW1lcmFJbmZvLmZhY2luZyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihjYW1lcmFJbmZvLm9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CiAgICAgICAgIGNhc2UgQ09OTkVDVDogewogICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElDYW1lcmFTZXJ2aWNlLCBkYXRhLCByZXBseSk7CiAgICAgICAgICAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjYW1lcmFDbGllbnQgPSBpbnRlcmZhY2VfY2FzdDxJQ2FtZXJhQ2xpZW50PihkYXRhLnJlYWRTdHJvbmdCaW5kZXIoKSk7Ci0gICAgICAgICAgICBzcDxJQ2FtZXJhPiBjYW1lcmEgPSBjb25uZWN0KGNhbWVyYUNsaWVudCk7CisgICAgICAgICAgICBzcDxJQ2FtZXJhPiBjYW1lcmEgPSBjb25uZWN0KGNhbWVyYUNsaWVudCwgZGF0YS5yZWFkSW50MzIoKSk7CiAgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIoY2FtZXJhLT5hc0JpbmRlcigpKTsKICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKICAgICAgICAgfSBicmVhazsKZGlmZiAtLWdpdCBhL2xpYnMvcnMvcnMuc3BlYyBiL2xpYnMvcnMvcnMuc3BlYwppbmRleCBjYjk5MzdjLi41YWU4ZDAxIDEwMDY0NAotLS0gYS9saWJzL3JzL3JzLnNwZWMKKysrIGIvbGlicy9ycy9ycy5zcGVjCkBAIC0yOSw3ICsyOSw3IEBACiBDb250ZXh0U2V0U3VyZmFjZSB7CiAJcGFyYW0gdWludDMyX3Qgd2lkdGgKIAlwYXJhbSB1aW50MzJfdCBoZWlnaHQKLQlwYXJhbSBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCAqc3VyCisJcGFyYW0gQU5hdGl2ZVdpbmRvdyAqc3VyCiAJfQogCiBDb250ZXh0RHVtcCB7CmRpZmYgLS1naXQgYS9saWJzL3JzL3JzQ29udGV4dC5jcHAgYi9saWJzL3JzL3JzQ29udGV4dC5jcHAKaW5kZXggZDhhOWE5OS4uNTk2ZjUzMyAxMDA2NDQKLS0tIGEvbGlicy9ycy9yc0NvbnRleHQuY3BwCisrKyBiL2xpYnMvcnMvcnNDb250ZXh0LmNwcApAQCAtNDczLDcgKzQ3Myw3IEBACiAgICAgb2JqRGVzdHJveU9PQkRlc3Ryb3koKTsKIH0KIAotdm9pZCBDb250ZXh0OjpzZXRTdXJmYWNlKHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190ICpzdXIpCit2b2lkIENvbnRleHQ6OnNldFN1cmZhY2UodWludDMyX3QgdywgdWludDMyX3QgaCwgQU5hdGl2ZVdpbmRvdyAqc3VyKQogewogICAgIHJzQXNzZXJ0KG1Jc0dyYXBoaWNzQ29udGV4dCk7CiAKQEAgLTg4OCw3ICs4ODgsNyBAQAogICAgIHJzYy0+cmVzdW1lKCk7CiB9CiAKLXZvaWQgcnNpX0NvbnRleHRTZXRTdXJmYWNlKENvbnRleHQgKnJzYywgdWludDMyX3QgdywgdWludDMyX3QgaCwgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QgKnN1cikKK3ZvaWQgcnNpX0NvbnRleHRTZXRTdXJmYWNlKENvbnRleHQgKnJzYywgdWludDMyX3QgdywgdWludDMyX3QgaCwgQU5hdGl2ZVdpbmRvdyAqc3VyKQogewogICAgIHJzYy0+c2V0U3VyZmFjZSh3LCBoLCBzdXIpOwogfQpkaWZmIC0tZ2l0IGEvbGlicy9ycy9yc0NvbnRleHQuaCBiL2xpYnMvcnMvcnNDb250ZXh0LmgKaW5kZXggODJjMzY4Ny4uNzA5NzMwZSAxMDA2NDQKLS0tIGEvbGlicy9ycy9yc0NvbnRleHQuaAorKysgYi9saWJzL3JzL3JzQ29udGV4dC5oCkBAIC05OCw3ICs5OCw3IEBACiAKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKLSAgICB2b2lkIHNldFN1cmZhY2UodWludDMyX3QgdywgdWludDMyX3QgaCwgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QgKnN1cik7CisgICAgdm9pZCBzZXRTdXJmYWNlKHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIEFOYXRpdmVXaW5kb3cgKnN1cik7CiAgICAgdm9pZCBzZXRQcmlvcml0eShpbnQzMl90IHApOwogCiAgICAgdm9pZCBhc3NpZ25OYW1lKE9iamVjdEJhc2UgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgbGVuKTsKQEAgLTI0Niw3ICsyNDYsNyBAQAogCiAgICAgc3RhdGljIHZvaWQgKiB0aHJlYWRQcm9jKHZvaWQgKik7CiAKLSAgICBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCAqbVduZFN1cmZhY2U7CisgICAgQU5hdGl2ZVdpbmRvdyAqbVduZFN1cmZhY2U7CiAKICAgICBWZWN0b3I8T2JqZWN0QmFzZSAqPiBtTmFtZXM7CiAKZGlmZiAtLWdpdCBhL2xpYnMvcnMvcnNQcm9ncmFtLmNwcCBiL2xpYnMvcnMvcnNQcm9ncmFtLmNwcAppbmRleCA0NzhhNmRjLi43MGUyODY4IDEwMDY0NAotLS0gYS9saWJzL3JzL3JzUHJvZ3JhbS5jcHAKKysrIGIvbGlicy9ycy9yc1Byb2dyYW0uY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAKIAogICAgIGlmIChyc2MtPnByb3BzLm1Mb2dTaGFkZXJzKSB7CiAgICAgICAgIExPR1YoIkxvYWRpbmcgc2hhZGVyIHR5cGUgJXgsIElEICVpIiwgdHlwZSwgbVNoYWRlcklEKTsKLSAgICAgICAgTE9HVihtU2hhZGVyLnN0cmluZygpKTsKKyAgICAgICAgTE9HVigiJXMiLCBtU2hhZGVyLnN0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAobVNoYWRlcklEKSB7CmRpZmYgLS1naXQgYS9saWJzL3JzL3JzU2NyaXB0Qy5jcHAgYi9saWJzL3JzL3JzU2NyaXB0Qy5jcHAKaW5kZXggMWYyMzc3My4uZjRkMjQ1MSAxMDA2NDQKLS0tIGEvbGlicy9ycy9yc1NjcmlwdEMuY3BwCisrKyBiL2xpYnMvcnMvcnNTY3JpcHRDLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIEFDQ2NoYXIgYnVmWzQwOTZdOwogICAgICAgICBBQ0NzaXplaSBsZW47CiAgICAgICAgIGFjY0dldFNjcmlwdEluZm9Mb2cocy0+bUFjY1NjcmlwdCwgc2l6ZW9mKGJ1ZiksICZsZW4sIGJ1Zik7Ci0gICAgICAgIExPR0UoYnVmKTsKKyAgICAgICAgTE9HRSgiJXMiLCBidWYpOwogICAgICAgICByc2MtPnNldEVycm9yKFJTX0VSUk9SX0JBRF9TQ1JJUFQsICJFcnJvciBjb21waWxpbmcgdXNlciBzY3JpcHQuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNDUsNyArMzQ1LDcgQEAKICAgICAgICAgICAgIHMuYXBwZW5kKGUtPmdldE5hbWUoKSk7CiAgICAgICAgICAgICBzLmFwcGVuZCgiXG5cbiIpOwogICAgICAgICAgICAgaWYgKHJzYy0+cHJvcHMubUxvZ1NjcmlwdHMpIHsKLSAgICAgICAgICAgICAgICBMT0dWKHMpOworICAgICAgICAgICAgICAgIExPR1YoIiVzIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHMpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0ci0+YXBwZW5kKHMpOwogICAgICAgICB9CkBAIC0zNzIsNyArMzcyLDcgQEAKICAgICAgICAgICAgIHMuYXBwZW5kKG1TbG90TmFtZXNbY3RdKTsKICAgICAgICAgICAgIHMuYXBwZW5kKCI7XG4iKTsKICAgICAgICAgICAgIGlmIChyc2MtPnByb3BzLm1Mb2dTY3JpcHRzKSB7Ci0gICAgICAgICAgICAgICAgTE9HVihzKTsKKyAgICAgICAgICAgICAgICBMT0dWKCIlcyIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdHItPmFwcGVuZChzKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9BbmRyb2lkLm1rIGIvbGlicy9zdXJmYWNlZmxpbmdlci9BbmRyb2lkLm1rCmluZGV4IDg2ZWI3OGQuLmExNGJmYjUgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvQW5kcm9pZC5taworKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0FuZHJvaWQubWsKQEAgLTYsNiArNiw3IEBACiAgICAgRGlzcGxheUhhcmR3YXJlL0Rpc3BsYXlIYXJkd2FyZS5jcHAgXAogICAgIERpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmVCYXNlLmNwcCBcCiAgICAgQmx1ckZpbHRlci5jcHAuYXJtIFwKKyAgICBHTEV4dGVuc2lvbnMuY3BwIFwKICAgICBMYXllci5jcHAgXAogICAgIExheWVyQmFzZS5jcHAgXAogICAgIExheWVyQnVmZmVyLmNwcCBcCkBAIC0xMywxNCArMTQsMTQgQEAKICAgICBMYXllckRpbS5jcHAgXAogICAgIE1lc3NhZ2VRdWV1ZS5jcHAgXAogICAgIFN1cmZhY2VGbGluZ2VyLmNwcCBcCi0gICAgVG9rZW5pemVyLmNwcCBcCisgICAgVGV4dHVyZU1hbmFnZXIuY3BwIFwKICAgICBUcmFuc2Zvcm0uY3BwCiAKIExPQ0FMX0NGTEFHUzo9IC1ETE9HX1RBRz1cIlN1cmZhY2VGbGluZ2VyXCIKIExPQ0FMX0NGTEFHUyArPSAtREdMX0dMRVhUX1BST1RPVFlQRVMgLURFR0xfRUdMRVhUX1BST1RPVFlQRVMKIAotaWZlcSAoJChUQVJHRVRfQk9BUkRfUExBVEZPUk0pLCBtc203aykKLQlMT0NBTF9DRkxBR1MgKz0gLURESU1fV0lUSF9URVhUVVJFCitpZmVxICgkKFRBUkdFVF9CT0FSRF9QTEFURk9STSksIG9tYXAzKQorCUxPQ0FMX0NGTEFHUyArPSAtRE5PX1JHQlhfODg4OAogZW5kaWYKIAogIyBuZWVkICItbHJ0IiBvbiBMaW51eCBzaW11bGF0b3IgdG8gcGljayB1cCBjbG9ja19nZXR0aW1lCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0JhcnJpZXIuaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvQmFycmllci5oCmluZGV4IGUyYmNmNmEuLjZmODUwN2UgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvQmFycmllci5oCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvQmFycmllci5oCkBAIC0yOSwxMCArMjksNiBAQAogICAgIGlubGluZSBCYXJyaWVyKCkgOiBzdGF0ZShDTE9TRUQpIHsgfQogICAgIGlubGluZSB+QmFycmllcigpIHsgfQogICAgIHZvaWQgb3BlbigpIHsKLSAgICAgICAgLy8gZ2NjIG1lbW9yeSBiYXJyaWVyLCB0aGlzIG1ha2VzIHN1cmUgYWxsIG1lbW9yeSB3cml0ZXMKLSAgICAgICAgLy8gaGF2ZSBiZWVuIGlzc3VlZCBieSBnY2MuIE9uIGFuIFNNUCBzeXN0ZW0gd2UnZCBuZWVkIGEgcmVhbAotICAgICAgICAvLyBoL3cgYmFycmllci4KLSAgICAgICAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKGxvY2spOwogICAgICAgICBzdGF0ZSA9IE9QRU5FRDsKICAgICAgICAgY3YuYnJvYWRjYXN0KCk7CmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0Rpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9EaXNwbGF5SGFyZHdhcmUvRGlzcGxheUhhcmR3YXJlLmNwcAppbmRleCBlYTY4MzUyLi4yZWFjMGE4IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0Rpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvRGlzcGxheUhhcmR3YXJlL0Rpc3BsYXlIYXJkd2FyZS5jcHAKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlIDxoYXJkd2FyZS9vdmVybGF5Lmg+CiAjaW5jbHVkZSA8aGFyZHdhcmUvZ3JhbGxvYy5oPgogCisjaW5jbHVkZSAiR0xFeHRlbnNpb25zLmgiCisKIHVzaW5nIG5hbWVzcGFjZSBhbmRyb2lkOwogCiAKQEAgLTczLDcgKzc1LDggQEAKIERpc3BsYXlIYXJkd2FyZTo6RGlzcGxheUhhcmR3YXJlKAogICAgICAgICBjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsCiAgICAgICAgIHVpbnQzMl90IGRweSkKLSAgICA6IERpc3BsYXlIYXJkd2FyZUJhc2UoZmxpbmdlciwgZHB5KQorICAgIDogRGlzcGxheUhhcmR3YXJlQmFzZShmbGluZ2VyLCBkcHkpLAorICAgICAgbUZsYWdzKDApCiB7CiAgICAgaW5pdChkcHkpOwogfQpAQCAtOTcsNiArMTAwLDkgQEAKIHsKICAgICBtTmF0aXZlV2luZG93ID0gbmV3IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93KCk7CiAgICAgZnJhbWVidWZmZXJfZGV2aWNlX3QgY29uc3QgKiBmYkRldiA9IG1OYXRpdmVXaW5kb3ctPmdldERldmljZSgpOworICAgIG1EcGlYID0gbU5hdGl2ZVdpbmRvdy0+eGRwaTsKKyAgICBtRHBpWSA9IG1OYXRpdmVXaW5kb3ctPnlkcGk7CisgICAgbVJlZnJlc2hSYXRlID0gZmJEZXYtPmZwczsKIAogICAgIG1PdmVybGF5RW5naW5lID0gTlVMTDsKICAgICBod19tb2R1bGVfdCBjb25zdCogbW9kdWxlOwpAQCAtMTA0LDYgKzExMCwxMSBAQAogICAgICAgICBvdmVybGF5X2NvbnRyb2xfb3Blbihtb2R1bGUsICZtT3ZlcmxheUVuZ2luZSk7CiAgICAgfQogCisgICAgRUdMaW50IHcsIGgsIGR1bW15OworICAgIEVHTGludCBudW1Db25maWdzPTA7CisgICAgRUdMU3VyZmFjZSBzdXJmYWNlOworICAgIEVHTENvbnRleHQgY29udGV4dDsKKwogICAgIC8vIGluaXRpYWxpemUgRUdMCiAgICAgRUdMaW50IGF0dHJpYnNbXSA9IHsKICAgICAgICAgICAgIEVHTF9TVVJGQUNFX1RZUEUsICAgRUdMX1dJTkRPV19CSVQsCkBAIC0xMjEsMTIgKzEzMiw2IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBFR0xpbnQgdywgaCwgZHVtbXk7Ci0gICAgRUdMaW50IG51bUNvbmZpZ3M9MDsKLSAgICBFR0xTdXJmYWNlIHN1cmZhY2U7Ci0gICAgRUdMQ29udGV4dCBjb250ZXh0OwotICAgIG1GbGFncyA9IENBQ0hFRF9CVUZGRVJTOwotCiAgICAgLy8gVE9ETzogYWxsIHRoZSBleHRlbnNpb25zIGJlbG93IHNob3VsZCBiZSBxdWVyaWVkIHRocm91Z2gKICAgICAvLyBlZ2xHZXRQcm9jQWRkcmVzcygpLgogCkBAIC0xNDUsMjIgKzE1MCw2IEBACiAgICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0JMVUVfU0laRSwgICZiKTsKICAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfQUxQSEFfU0laRSwgJmEpOwogCi0gICAgLyoKLSAgICAgKiBHYXRoZXIgRUdMIGV4dGVuc2lvbnMKLSAgICAgKi8KLQotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGVnbF9leHRlbnNpb25zID0gZWdsUXVlcnlTdHJpbmcoCi0gICAgICAgICAgICBkaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7Ci0gICAgCi0gICAgTE9HSSgiRUdMIGluZm9ybWF0aW9uczoiKTsKLSAgICBMT0dJKCIjIG9mIGNvbmZpZ3MgOiAlZCIsIG51bUNvbmZpZ3MpOwotICAgIExPR0koInZlbmRvciAgICA6ICVzIiwgZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX1ZFTkRPUikpOwotICAgIExPR0koInZlcnNpb24gICA6ICVzIiwgZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX1ZFUlNJT04pKTsKLSAgICBMT0dJKCJleHRlbnNpb25zOiAlcyIsIGVnbF9leHRlbnNpb25zKTsKLSAgICBMT0dJKCJDbGllbnQgQVBJOiAlcyIsIGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9DTElFTlRfQVBJUyk/OiJOb3QgU3VwcG9ydGVkIik7Ci0gICAgTE9HSSgiRUdMU3VyZmFjZTogJWQtJWQtJWQtJWQsIGNvbmZpZz0lcCIsIHIsIGcsIGIsIGEsIGNvbmZpZyk7Ci0gICAgCi0KICAgICBpZiAobU5hdGl2ZVdpbmRvdy0+aXNVcGRhdGVPbkRlbWFuZCgpKSB7CiAgICAgICAgIG1GbGFncyB8PSBQQVJUSUFMX1VQREFURVM7CiAgICAgfQpAQCAtMTc1LDYgKzE2NCw4IEBACiAgICAgICovCiAKICAgICBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkaXNwbGF5LCBjb25maWcsIG1OYXRpdmVXaW5kb3cuZ2V0KCksIE5VTEwpOworICAgIGVnbFF1ZXJ5U3VyZmFjZShkaXNwbGF5LCBzdXJmYWNlLCBFR0xfV0lEVEgsICAmbVdpZHRoKTsKKyAgICBlZ2xRdWVyeVN1cmZhY2UoZGlzcGxheSwgc3VyZmFjZSwgRUdMX0hFSUdIVCwgJm1IZWlnaHQpOwogCiAgICAgaWYgKG1GbGFncyAmIFBBUlRJQUxfVVBEQVRFUykgewogICAgICAgICAvLyBpZiB3ZSBoYXZlIHBhcnRpYWwgdXBkYXRlcywgd2UgZGVmaW5pdGVseSBkb24ndCBuZWVkIHRvCkBAIC0xODgsMzEgKzE3OSw2IEBACiAgICAgICAgICAgICBtRmxhZ3MgfD0gQlVGRkVSX1BSRVNFUlZFRDsKICAgICAgICAgfQogICAgIH0KLQotICAgIGVnbFF1ZXJ5U3VyZmFjZShkaXNwbGF5LCBzdXJmYWNlLCBFR0xfV0lEVEgsICAmbVdpZHRoKTsKLSAgICBlZ2xRdWVyeVN1cmZhY2UoZGlzcGxheSwgc3VyZmFjZSwgRUdMX0hFSUdIVCwgJm1IZWlnaHQpOwotCi0jaWZkZWYgRUdMX0FORFJPSURfc3dhcF9yZWN0YW5nbGUgICAgCi0gICAgaWYgKHN0cnN0cihlZ2xfZXh0ZW5zaW9ucywgIkVHTF9BTkRST0lEX3N3YXBfcmVjdGFuZ2xlIikpIHsKLSAgICAgICAgaWYgKGVnbFNldFN3YXBSZWN0YW5nbGVBTkRST0lEKGRpc3BsYXksIHN1cmZhY2UsCi0gICAgICAgICAgICAgICAgMCwgMCwgbVdpZHRoLCBtSGVpZ2h0KSA9PSBFR0xfVFJVRSkgewotICAgICAgICAgICAgLy8gVGhpcyBjb3VsZCBmYWlsIGlmIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcwotICAgICAgICAgICAgLy8gc3BlY2lmaWMgc3VyZmFjZSAob2YgY29uZmlnKQotICAgICAgICAgICAgbUZsYWdzIHw9IFNXQVBfUkVDVEFOR0xFOwotICAgICAgICB9Ci0gICAgfQotICAgIC8vIHdoZW4gd2UgaGF2ZSB0aGUgY2hvaWNlIGJldHdlZW4gUEFSVElBTF9VUERBVEVTIGFuZCBTV0FQX1JFQ1RBTkdMRQotICAgIC8vIGNob29zZSBQQVJUSUFMX1VQREFURVMsIHdoaWNoIHNob3VsZCBiZSBtb3JlIGVmZmljaWVudAotICAgIGlmIChtRmxhZ3MgJiBQQVJUSUFMX1VQREFURVMpCi0gICAgICAgIG1GbGFncyAmPSB+U1dBUF9SRUNUQU5HTEU7Ci0jZW5kaWYKLSAgICAKLQotICAgIExPR0koImZsYWdzICAgICA6ICUwOHgiLCBtRmxhZ3MpOwotICAgIAotICAgIG1EcGlYID0gbU5hdGl2ZVdpbmRvdy0+eGRwaTsKLSAgICBtRHBpWSA9IG1OYXRpdmVXaW5kb3ctPnlkcGk7Ci0gICAgbVJlZnJlc2hSYXRlID0gZmJEZXYtPmZwczsgCiAgICAgCiAgICAgLyogUmVhZCBkZW5zaXR5IGZyb20gYnVpbGQtc3BlY2lmaWMgcm8uc2YubGNkX2RlbnNpdHkgcHJvcGVydHkKICAgICAgKiBleGNlcHQgaWYgaXQgaXMgb3ZlcnJpZGRlbiBieSBxZW11LnNmLmxjZF9kZW5zaXR5LgpAQCAtMjM1LDYxICsyMDEsNjcgQEAKICAgICAKICAgICBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIE5VTEwsIE5VTEwpOwogICAgIAotICAgIC8qCi0gICAgICogR2F0aGVyIE9wZW5HTCBFUyBleHRlbnNpb25zCi0gICAgICovCi0KLSAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0KTsKLSAgICBjb25zdCBjaGFyKiBjb25zdCAgZ2xfZXh0ZW5zaW9ucyA9IChjb25zdCBjaGFyKilnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKTsKLSAgICBjb25zdCBjaGFyKiBjb25zdCAgZ2xfcmVuZGVyZXIgPSAoY29uc3QgY2hhciopZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpOwotICAgIExPR0koIk9wZW5HTCBpbmZvcm1hdGlvbnM6Iik7Ci0gICAgTE9HSSgidmVuZG9yICAgIDogJXMiLCBnbEdldFN0cmluZyhHTF9WRU5ET1IpKTsKLSAgICBMT0dJKCJyZW5kZXJlciAgOiAlcyIsIGdsX3JlbmRlcmVyKTsKLSAgICBMT0dJKCJ2ZXJzaW9uICAgOiAlcyIsIGdsR2V0U3RyaW5nKEdMX1ZFUlNJT04pKTsKLSAgICBMT0dJKCJleHRlbnNpb25zOiAlcyIsIGdsX2V4dGVuc2lvbnMpOwotCi0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVEVYVFVSRV9TSVpFLCAmbU1heFRleHR1cmVTaXplKTsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WSUVXUE9SVF9ESU1TLCAmbU1heFZpZXdwb3J0RGltcyk7Ci0gICAgTE9HSSgiR0xfTUFYX1RFWFRVUkVfU0laRSA9ICVkIiwgbU1heFRleHR1cmVTaXplKTsKLSAgICBMT0dJKCJHTF9NQVhfVklFV1BPUlRfRElNUyA9ICVkIiwgbU1heFZpZXdwb3J0RGltcyk7Ci0KLSNpZiAwCi0gICAgLy8gZm9yIGRyaXZlcnMgdGhhdCBkb24ndCBoYXZlIHByb3BlciBzdXBwb3J0IGZvciBmbHVzaGluZyBjYWNoZWQgYnVmZmVycwotICAgIC8vIG9uIGdyYWxsb2MgdW5sb2NrLCB1bmNvbW1lbnQgdGhpcyBibG9jayBhbmQgdGVzdCBmb3IgdGhlIHNwZWNpZmljCi0gICAgLy8gcmVuZGVyZXIgc3Vic3RyaW5nCi0gICAgaWYgKHN0cnN0cihnbF9yZW5kZXJlciwgIjxzb21lIHZlbmRvciBzdHJpbmc+IikpIHsKLSAgICAgICAgTE9HRCgiQXNzdW1pbmcgdW5jYWNoZWQgZ3JhcGhpY3MgYnVmZmVycy4iKTsKLSAgICAgICAgbUZsYWdzICY9IH5DQUNIRURfQlVGRkVSUzsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChzdHJzdHIoZ2xfZXh0ZW5zaW9ucywgIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKSkgewotICAgICAgICBtRmxhZ3MgfD0gTlBPVF9FWFRFTlNJT047Ci0gICAgfQotICAgIGlmIChzdHJzdHIoZ2xfZXh0ZW5zaW9ucywgIkdMX09FU19kcmF3X3RleHR1cmUiKSkgewotICAgICAgICBtRmxhZ3MgfD0gRFJBV19URVhUVVJFX0VYVEVOU0lPTjsKLSAgICB9Ci0jaWZkZWYgRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlcgotICAgIGlmIChzdHJzdHIoIGdsX2V4dGVuc2lvbnMsICJHTF9PRVNfRUdMX2ltYWdlIikgJiYKLSAgICAgICAgKHN0cnN0cihlZ2xfZXh0ZW5zaW9ucywgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8IAotICAgICAgICAgICAgICAgIHN0cnN0cihlZ2xfZXh0ZW5zaW9ucywgIkVHTF9LSFJfaW1hZ2UiKSkgJiYKLSAgICAgICAgc3Ryc3RyKGVnbF9leHRlbnNpb25zLCAiRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlciIpKSB7Ci0gICAgICAgIG1GbGFncyB8PSBESVJFQ1RfVEVYVFVSRTsKLSAgICB9Ci0jZWxzZQotI3dhcm5pbmcgIkVHTF9BTkRST0lEX2ltYWdlX25hdGl2ZV9idWZmZXIgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0KLSAgICAvLyBVbmJpbmQgdGhlIGNvbnRleHQgZnJvbSB0aGlzIHRocmVhZAotICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotCiAgICAgbURpc3BsYXkgPSBkaXNwbGF5OwogICAgIG1Db25maWcgID0gY29uZmlnOwogICAgIG1TdXJmYWNlID0gc3VyZmFjZTsKICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CiAgICAgbUZvcm1hdCAgPSBmYkRldi0+Zm9ybWF0OwogICAgIG1QYWdlRmxpcENvdW50ID0gMDsKKworICAgIC8qCisgICAgICogR2F0aGVyIE9wZW5HTCBFUyBleHRlbnNpb25zCisgICAgICovCisKKyAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0KTsKKworICAgIEdMRXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucyhHTEV4dGVuc2lvbnM6OmdldEluc3RhbmNlKCkpOworICAgIGV4dGVuc2lvbnMuaW5pdFdpdGhHTFN0cmluZ3MoCisgICAgICAgICAgICBnbEdldFN0cmluZyhHTF9WRU5ET1IpLAorICAgICAgICAgICAgZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpLAorICAgICAgICAgICAgZ2xHZXRTdHJpbmcoR0xfVkVSU0lPTiksCisgICAgICAgICAgICBnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSwKKyAgICAgICAgICAgIGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9WRU5ET1IpLAorICAgICAgICAgICAgZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX1ZFUlNJT04pLAorICAgICAgICAgICAgZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpKTsKKworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1RFWFRVUkVfU0laRSwgJm1NYXhUZXh0dXJlU2l6ZSk7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVklFV1BPUlRfRElNUywgJm1NYXhWaWV3cG9ydERpbXMpOworCisKKyNpZmRlZiBFR0xfQU5EUk9JRF9zd2FwX3JlY3RhbmdsZQorICAgIGlmIChleHRlbnNpb25zLmhhc0V4dGVuc2lvbigiRUdMX0FORFJPSURfc3dhcF9yZWN0YW5nbGUiKSkgeworICAgICAgICBpZiAoZWdsU2V0U3dhcFJlY3RhbmdsZUFORFJPSUQoZGlzcGxheSwgc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAwLCAwLCBtV2lkdGgsIG1IZWlnaHQpID09IEVHTF9UUlVFKSB7CisgICAgICAgICAgICAvLyBUaGlzIGNvdWxkIGZhaWwgaWYgdGhpcyBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzCisgICAgICAgICAgICAvLyBzcGVjaWZpYyBzdXJmYWNlIChvZiBjb25maWcpCisgICAgICAgICAgICBtRmxhZ3MgfD0gU1dBUF9SRUNUQU5HTEU7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gd2hlbiB3ZSBoYXZlIHRoZSBjaG9pY2UgYmV0d2VlbiBQQVJUSUFMX1VQREFURVMgYW5kIFNXQVBfUkVDVEFOR0xFCisgICAgLy8gY2hvb3NlIFBBUlRJQUxfVVBEQVRFUywgd2hpY2ggc2hvdWxkIGJlIG1vcmUgZWZmaWNpZW50CisgICAgaWYgKG1GbGFncyAmIFBBUlRJQUxfVVBEQVRFUykKKyAgICAgICAgbUZsYWdzICY9IH5TV0FQX1JFQ1RBTkdMRTsKKyNlbmRpZgorCisgICAgTE9HSSgiRUdMIGluZm9ybWF0aW9uczoiKTsKKyAgICBMT0dJKCIjIG9mIGNvbmZpZ3MgOiAlZCIsIG51bUNvbmZpZ3MpOworICAgIExPR0koInZlbmRvciAgICA6ICVzIiwgZXh0ZW5zaW9ucy5nZXRFZ2xWZW5kb3IoKSk7CisgICAgTE9HSSgidmVyc2lvbiAgIDogJXMiLCBleHRlbnNpb25zLmdldEVnbFZlcnNpb24oKSk7CisgICAgTE9HSSgiZXh0ZW5zaW9uczogJXMiLCBleHRlbnNpb25zLmdldEVnbEV4dGVuc2lvbigpKTsKKyAgICBMT0dJKCJDbGllbnQgQVBJOiAlcyIsIGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9DTElFTlRfQVBJUyk/OiJOb3QgU3VwcG9ydGVkIik7CisgICAgTE9HSSgiRUdMU3VyZmFjZTogJWQtJWQtJWQtJWQsIGNvbmZpZz0lcCIsIHIsIGcsIGIsIGEsIGNvbmZpZyk7CisKKyAgICBMT0dJKCJPcGVuR0wgaW5mb3JtYXRpb25zOiIpOworICAgIExPR0koInZlbmRvciAgICA6ICVzIiwgZXh0ZW5zaW9ucy5nZXRWZW5kb3IoKSk7CisgICAgTE9HSSgicmVuZGVyZXIgIDogJXMiLCBleHRlbnNpb25zLmdldFJlbmRlcmVyKCkpOworICAgIExPR0koInZlcnNpb24gICA6ICVzIiwgZXh0ZW5zaW9ucy5nZXRWZXJzaW9uKCkpOworICAgIExPR0koImV4dGVuc2lvbnM6ICVzIiwgZXh0ZW5zaW9ucy5nZXRFeHRlbnNpb24oKSk7CisgICAgTE9HSSgiR0xfTUFYX1RFWFRVUkVfU0laRSA9ICVkIiwgbU1heFRleHR1cmVTaXplKTsKKyAgICBMT0dJKCJHTF9NQVhfVklFV1BPUlRfRElNUyA9ICVkIiwgbU1heFZpZXdwb3J0RGltcyk7CisgICAgTE9HSSgiZmxhZ3MgPSAlMDh4IiwgbUZsYWdzKTsKKworICAgIC8vIFVuYmluZCB0aGUgY29udGV4dCBmcm9tIHRoaXMgdGhyZWFkCisgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0Rpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvRGlzcGxheUhhcmR3YXJlL0Rpc3BsYXlIYXJkd2FyZS5oCmluZGV4IGRmMDQ2YWYuLjY2YmY1MjEgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvRGlzcGxheUhhcmR3YXJlL0Rpc3BsYXlIYXJkd2FyZS5oCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvRGlzcGxheUhhcmR3YXJlL0Rpc3BsYXlIYXJkd2FyZS5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlIDxwaXhlbGZsaW5nZXIvcGl4ZWxmbGluZ2VyLmg+CiAKKyNpbmNsdWRlICJHTEV4dGVuc2lvbnMuaCIKKwogI2luY2x1ZGUgIkRpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmVCYXNlLmgiCiAKIHN0cnVjdCBvdmVybGF5X2NvbnRyb2xfZGV2aWNlX3Q7CkBAIC00MywxNSArNDUsMTEgQEAKIHsKIHB1YmxpYzoKICAgICBlbnVtIHsKLSAgICAgICAgRElSRUNUX1RFWFRVUkUgICAgICAgICAgPSAweDAwMDAwMDAyLAotICAgICAgICBDT1BZX0JJVFNfRVhURU5TSU9OICAgICA9IDB4MDAwMDAwMDgsCi0gICAgICAgIE5QT1RfRVhURU5TSU9OICAgICAgICAgID0gMHgwMDAwMDEwMCwKLSAgICAgICAgRFJBV19URVhUVVJFX0VYVEVOU0lPTiAgPSAweDAwMDAwMjAwLAotICAgICAgICBCVUZGRVJfUFJFU0VSVkVEICAgICAgICA9IDB4MDAwMTAwMDAsCi0gICAgICAgIFBBUlRJQUxfVVBEQVRFUyAgICAgICAgID0gMHgwMDAyMDAwMCwgICAvLyB2aWRlbyBkcml2ZXIgZmVhdHVyZQotICAgICAgICBTTE9XX0NPTkZJRyAgICAgICAgICAgICA9IDB4MDAwNDAwMDAsICAgLy8gc29mdHdhcmUKLSAgICAgICAgU1dBUF9SRUNUQU5HTEUgICAgICAgICAgPSAweDAwMDgwMDAwLAotICAgICAgICBDQUNIRURfQlVGRkVSUyAgICAgICAgICA9IDB4MDAxMDAwMDAKKyAgICAgICAgQ09QWV9CSVRTX0VYVEVOU0lPTiAgICAgICAgID0gMHgwMDAwMDAwOCwKKyAgICAgICAgQlVGRkVSX1BSRVNFUlZFRCAgICAgICAgICAgID0gMHgwMDAxMDAwMCwKKyAgICAgICAgUEFSVElBTF9VUERBVEVTICAgICAgICAgICAgID0gMHgwMDAyMDAwMCwgICAvLyB2aWRlbyBkcml2ZXIgZmVhdHVyZQorICAgICAgICBTTE9XX0NPTkZJRyAgICAgICAgICAgICAgICAgPSAweDAwMDQwMDAwLCAgIC8vIHNvZnR3YXJlCisgICAgICAgIFNXQVBfUkVDVEFOR0xFICAgICAgICAgICAgICA9IDB4MDAwODAwMDAsCiAgICAgfTsKIAogICAgIERpc3BsYXlIYXJkd2FyZSgKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvR0xFeHRlbnNpb25zLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvR0xFeHRlbnNpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjRmOWZjCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9HTEV4dGVuc2lvbnMuY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJHTEV4dGVuc2lvbnMuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FORFJPSURfU0lOR0xFVE9OX1NUQVRJQ19JTlNUQU5DRSggR0xFeHRlbnNpb25zICkKKworR0xFeHRlbnNpb25zOjpHTEV4dGVuc2lvbnMoKQorICAgIDogbUhhdmVUZXh0dXJlRXh0ZXJuYWwoZmFsc2UpLAorICAgICAgbUhhdmVOcG90KGZhbHNlKSwKKyAgICAgIG1IYXZlRGlyZWN0VGV4dHVyZShmYWxzZSkKK3sKK30KKwordm9pZCBHTEV4dGVuc2lvbnM6OmluaXRXaXRoR0xTdHJpbmdzKAorICAgICAgICBHTHVieXRlIGNvbnN0KiB2ZW5kb3IsCisgICAgICAgIEdMdWJ5dGUgY29uc3QqIHJlbmRlcmVyLAorICAgICAgICBHTHVieXRlIGNvbnN0KiB2ZXJzaW9uLAorICAgICAgICBHTHVieXRlIGNvbnN0KiBleHRlbnNpb25zLAorICAgICAgICBjaGFyIGNvbnN0KiBlZ2xfdmVuZG9yLAorICAgICAgICBjaGFyIGNvbnN0KiBlZ2xfdmVyc2lvbiwKKyAgICAgICAgY2hhciBjb25zdCogZWdsX2V4dGVuc2lvbnMpCit7CisgICAgbVZlbmRvciAgICAgPSAoY2hhciBjb25zdCopdmVuZG9yOworICAgIG1SZW5kZXJlciAgID0gKGNoYXIgY29uc3QqKXJlbmRlcmVyOworICAgIG1WZXJzaW9uICAgID0gKGNoYXIgY29uc3QqKXZlcnNpb247CisgICAgbUV4dGVuc2lvbnMgPSAoY2hhciBjb25zdCopZXh0ZW5zaW9uczsKKyAgICBtRWdsVmVuZG9yICAgICA9IGVnbF92ZW5kb3I7CisgICAgbUVnbFZlcnNpb24gICAgPSBlZ2xfdmVyc2lvbjsKKyAgICBtRWdsRXh0ZW5zaW9ucyA9IGVnbF9leHRlbnNpb25zOworCisgICAgY2hhciBjb25zdCogY3VyciA9IChjaGFyIGNvbnN0KilleHRlbnNpb25zOworICAgIGNoYXIgY29uc3QqIGhlYWQgPSBjdXJyOworICAgIGRvIHsKKyAgICAgICAgaGVhZCA9IHN0cmNocihjdXJyLCAnICcpOworICAgICAgICBTdHJpbmc4IHMoY3VyciwgaGVhZCA/IGhlYWQtY3VyciA6IHN0cmxlbihjdXJyKSk7CisgICAgICAgIGlmIChzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBtRXh0ZW5zaW9uTGlzdC5hZGQocyk7CisgICAgICAgIH0KKyAgICAgICAgY3VyciA9IGhlYWQrMTsKKyAgICB9IHdoaWxlIChoZWFkKTsKKworICAgIGN1cnIgPSBlZ2xfZXh0ZW5zaW9uczsKKyAgICBoZWFkID0gY3VycjsKKyAgICBkbyB7CisgICAgICAgIGhlYWQgPSBzdHJjaHIoY3VyciwgJyAnKTsKKyAgICAgICAgU3RyaW5nOCBzKGN1cnIsIGhlYWQgPyBoZWFkLWN1cnIgOiBzdHJsZW4oY3VycikpOworICAgICAgICBpZiAocy5sZW5ndGgoKSkgeworICAgICAgICAgICAgbUV4dGVuc2lvbkxpc3QuYWRkKHMpOworICAgICAgICB9CisgICAgICAgIGN1cnIgPSBoZWFkKzE7CisgICAgfSB3aGlsZSAoaGVhZCk7CisKKyNpZmRlZiBFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyCisgICAgaWYgKGhhc0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZSIpICYmCisgICAgICAgIChoYXNFeHRlbnNpb24oIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8IGhhc0V4dGVuc2lvbigiRUdMX0tIUl9pbWFnZSIpKSAmJgorICAgICAgICBoYXNFeHRlbnNpb24oIkVHTF9BTkRST0lEX2ltYWdlX25hdGl2ZV9idWZmZXIiKSkKKyAgICB7CisgICAgICAgIG1IYXZlRGlyZWN0VGV4dHVyZSA9IHRydWU7CisgICAgfQorI2Vsc2UKKyN3YXJuaW5nICJFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyIG5vdCBzdXBwb3J0ZWQiCisjZW5kaWYKKworICAgIGlmIChoYXNFeHRlbnNpb24oIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKSkgeworICAgICAgICBtSGF2ZU5wb3QgPSB0cnVlOworICAgIH0KKworICAgIGlmIChoYXNFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2V4dGVybmFsIikpIHsKKyAgICAgICAgbUhhdmVUZXh0dXJlRXh0ZXJuYWwgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoc3Ryc3RyKG1SZW5kZXJlci5zdHJpbmcoKSwgIkFkcmVubyIpKSB7CisgICAgICAgIC8vIGhhY2sgZm9yIEFkcmVubyAyMDAKKyAgICAgICAgbUhhdmVUZXh0dXJlRXh0ZXJuYWwgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBHTEV4dGVuc2lvbnM6Omhhc0V4dGVuc2lvbihjaGFyIGNvbnN0KiBleHRlbnNpb24pIGNvbnN0Cit7CisgICAgY29uc3QgU3RyaW5nOCBzKGV4dGVuc2lvbik7CisgICAgcmV0dXJuIG1FeHRlbnNpb25MaXN0LmluZGV4T2YocykgPj0gMDsKK30KKworY2hhciBjb25zdCogR0xFeHRlbnNpb25zOjpnZXRWZW5kb3IoKSBjb25zdCB7CisgICAgcmV0dXJuIG1WZW5kb3Iuc3RyaW5nKCk7Cit9CisKK2NoYXIgY29uc3QqIEdMRXh0ZW5zaW9uczo6Z2V0UmVuZGVyZXIoKSBjb25zdCB7CisgICAgcmV0dXJuIG1SZW5kZXJlci5zdHJpbmcoKTsKK30KKworY2hhciBjb25zdCogR0xFeHRlbnNpb25zOjpnZXRWZXJzaW9uKCkgY29uc3QgeworICAgIHJldHVybiBtVmVyc2lvbi5zdHJpbmcoKTsKK30KKworY2hhciBjb25zdCogR0xFeHRlbnNpb25zOjpnZXRFeHRlbnNpb24oKSBjb25zdCB7CisgICAgcmV0dXJuIG1FeHRlbnNpb25zLnN0cmluZygpOworfQorCitjaGFyIGNvbnN0KiBHTEV4dGVuc2lvbnM6OmdldEVnbFZlbmRvcigpIGNvbnN0IHsKKyAgICByZXR1cm4gbUVnbFZlbmRvci5zdHJpbmcoKTsKK30KKworY2hhciBjb25zdCogR0xFeHRlbnNpb25zOjpnZXRFZ2xWZXJzaW9uKCkgY29uc3QgeworICAgIHJldHVybiBtRWdsVmVyc2lvbi5zdHJpbmcoKTsKK30KKworY2hhciBjb25zdCogR0xFeHRlbnNpb25zOjpnZXRFZ2xFeHRlbnNpb24oKSBjb25zdCB7CisgICAgcmV0dXJuIG1FZ2xFeHRlbnNpb25zLnN0cmluZygpOworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvR0xFeHRlbnNpb25zLmggYi9saWJzL3N1cmZhY2VmbGluZ2VyL0dMRXh0ZW5zaW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYjI4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0dMRXh0ZW5zaW9ucy5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfU0ZfR0xFWFRFTlNJT05fSAorI2RlZmluZSBBTkRST0lEX1NGX0dMRVhURU5TSU9OX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgorI2luY2x1ZGUgPHV0aWxzL1NvcnRlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1NpbmdsZXRvbi5oPgorCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRlIDxHTEVTL2dsLmg+CisjaW5jbHVkZSA8R0xFUy9nbGV4dC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgR0xFeHRlbnNpb25zIDogcHVibGljIFNpbmdsZXRvbjxHTEV4dGVuc2lvbnM+Cit7CisgICAgZnJpZW5kIGNsYXNzIFNpbmdsZXRvbjxHTEV4dGVuc2lvbnM+OworCisgICAgYm9vbCBtSGF2ZVRleHR1cmVFeHRlcm5hbCAgIDogMTsKKyAgICBib29sIG1IYXZlTnBvdCAgICAgICAgICAgICAgOiAxOworICAgIGJvb2wgbUhhdmVEaXJlY3RUZXh0dXJlICAgICA6IDE7CisKKyAgICBTdHJpbmc4IG1WZW5kb3I7CisgICAgU3RyaW5nOCBtUmVuZGVyZXI7CisgICAgU3RyaW5nOCBtVmVyc2lvbjsKKyAgICBTdHJpbmc4IG1FeHRlbnNpb25zOworICAgIFN0cmluZzggbUVnbFZlbmRvcjsKKyAgICBTdHJpbmc4IG1FZ2xWZXJzaW9uOworICAgIFN0cmluZzggbUVnbEV4dGVuc2lvbnM7CisgICAgU29ydGVkVmVjdG9yPFN0cmluZzg+IG1FeHRlbnNpb25MaXN0OworCisgICAgR0xFeHRlbnNpb25zKGNvbnN0IEdMRXh0ZW5zaW9ucyYpOworICAgIEdMRXh0ZW5zaW9ucyYgb3BlcmF0b3IgPSAoY29uc3QgR0xFeHRlbnNpb25zJik7CisKK3Byb3RlY3RlZDoKKyAgICBHTEV4dGVuc2lvbnMoKTsKKworcHVibGljOgorICAgIGlubGluZSBib29sIGhhdmVUZXh0dXJlRXh0ZXJuYWwoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtSGF2ZVRleHR1cmVFeHRlcm5hbDsKKyAgICB9CisgICAgaW5saW5lIGJvb2wgaGF2ZU5wb3QoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtSGF2ZU5wb3Q7CisgICAgfQorICAgIGlubGluZSBib29sIGhhdmVEaXJlY3RUZXh0dXJlKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbUhhdmVEaXJlY3RUZXh0dXJlOworICAgIH0KKworICAgIHZvaWQgaW5pdFdpdGhHTFN0cmluZ3MoCisgICAgICAgICAgICBHTHVieXRlIGNvbnN0KiB2ZW5kb3IsCisgICAgICAgICAgICBHTHVieXRlIGNvbnN0KiByZW5kZXJlciwKKyAgICAgICAgICAgIEdMdWJ5dGUgY29uc3QqIHZlcnNpb24sCisgICAgICAgICAgICBHTHVieXRlIGNvbnN0KiBleHRlbnNpb25zLAorICAgICAgICAgICAgY2hhciBjb25zdCogZWdsX3ZlbmRvciwKKyAgICAgICAgICAgIGNoYXIgY29uc3QqIGVnbF92ZXJzaW9uLAorICAgICAgICAgICAgY2hhciBjb25zdCogZWdsX2V4dGVuc2lvbnMpOworCisgICAgY2hhciBjb25zdCogZ2V0VmVuZG9yKCkgY29uc3Q7CisgICAgY2hhciBjb25zdCogZ2V0UmVuZGVyZXIoKSBjb25zdDsKKyAgICBjaGFyIGNvbnN0KiBnZXRWZXJzaW9uKCkgY29uc3Q7CisgICAgY2hhciBjb25zdCogZ2V0RXh0ZW5zaW9uKCkgY29uc3Q7CisKKyAgICBjaGFyIGNvbnN0KiBnZXRFZ2xWZW5kb3IoKSBjb25zdDsKKyAgICBjaGFyIGNvbnN0KiBnZXRFZ2xWZXJzaW9uKCkgY29uc3Q7CisgICAgY2hhciBjb25zdCogZ2V0RWdsRXh0ZW5zaW9uKCkgY29uc3Q7CisKKyAgICBib29sIGhhc0V4dGVuc2lvbihjaGFyIGNvbnN0KiBleHRlbnNpb24pIGNvbnN0OworfTsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBBTkRST0lEX1NGX0dMRVhURU5TSU9OX0gKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXIuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllci5jcHAKaW5kZXggY2U3ZTlhYS4uNzU4ZGE0ZSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllci5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9TdXJmYWNlLmg+CiAKICNpbmNsdWRlICJjbHouaCIKKyNpbmNsdWRlICJHTEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJMYXllci5oIgogI2luY2x1ZGUgIlN1cmZhY2VGbGluZ2VyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUhhcmR3YXJlL0Rpc3BsYXlIYXJkd2FyZS5oIgpAQCAtNDcsNDcgKzQ4LDczIEBACiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCB1aW50MzJfdCBMYXllcjo6dHlwZUluZm8gPSBMYXllckJhc2VDbGllbnQ6OnR5cGVJbmZvIHwgNDsKLWNvbnN0IGNoYXIqIGNvbnN0IExheWVyOjp0eXBlSUQgPSAiTGF5ZXIiOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTGF5ZXI6OkxheWVyKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwgCi0gICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGMsIGludDMyX3QgaSkKLSAgICA6ICAgTGF5ZXJCYXNlQ2xpZW50KGZsaW5nZXIsIGRpc3BsYXksIGMsIGkpLAotICAgICAgICBtU2VjdXJlKGZhbHNlKSwKLSAgICAgICAgbU5vRUdMSW1hZ2VGb3JTd0J1ZmZlcnMoZmFsc2UpLAorTGF5ZXI6OkxheWVyKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLAorICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSwgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50KQorICAgIDogICBMYXllckJhc2VDbGllbnQoZmxpbmdlciwgZGlzcGxheSwgY2xpZW50KSwKKyAgICAgICAgbUdMRXh0ZW5zaW9ucyhHTEV4dGVuc2lvbnM6OmdldEluc3RhbmNlKCkpLAogICAgICAgICBtTmVlZHNCbGVuZGluZyh0cnVlKSwKLSAgICAgICAgbU5lZWRzRGl0aGVyaW5nKGZhbHNlKQorICAgICAgICBtTmVlZHNEaXRoZXJpbmcoZmFsc2UpLAorICAgICAgICBtU2VjdXJlKGZhbHNlKSwKKyAgICAgICAgbVRleHR1cmVNYW5hZ2VyKCksCisgICAgICAgIG1CdWZmZXJNYW5hZ2VyKG1UZXh0dXJlTWFuYWdlciksCisgICAgICAgIG1XaWR0aCgwKSwgbUhlaWdodCgwKSwgbUZpeGVkU2l6ZShmYWxzZSkKIHsKLSAgICAvLyBubyBPcGVuR0wgb3BlcmF0aW9uIGlzIHBvc3NpYmxlIGhlcmUsIHNpbmNlIHdlIG1pZ2h0IG5vdCBiZQotICAgIC8vIGluIHRoZSBPcGVuR0wgdGhyZWFkLgotICAgIG1Gcm9udEJ1ZmZlckluZGV4ID0gbGNibGstPmdldEZyb250QnVmZmVyKCk7CiB9CiAKIExheWVyOjp+TGF5ZXIoKQogewotICAgIGRlc3Ryb3koKTsKLSAgICAvLyB0aGUgYWN0dWFsIGJ1ZmZlcnMgd2lsbCBiZSBkZXN0cm95ZWQgaGVyZQorICAgIC8vIEZJWE1FOiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIFVJIHRocmVhZAorICAgIEVHTERpc3BsYXkgZHB5KG1GbGluZ2VyLT5ncmFwaGljUGxhbmUoMCkuZ2V0RUdMRGlzcGxheSgpKTsKKyAgICBtQnVmZmVyTWFuYWdlci5kZXN0cm95KGRweSk7CisKKyAgICAvLyB3ZSBjYW4gdXNlIGdldFVzZXJDbGllbnRVbnNhZmUgaGVyZSBiZWNhdXNlIHdlIGtub3cgd2UncmUKKyAgICAvLyBzaW5nbGUtdGhyZWFkZWQgYXQgdGhhdCBwb2ludC4KKyAgICBzcDxVc2VyQ2xpZW50PiBvdXJDbGllbnQobVVzZXJDbGllbnRSZWYuZ2V0VXNlckNsaWVudFVuc2FmZSgpKTsKKyAgICBpZiAob3VyQ2xpZW50ICE9IDApIHsKKyAgICAgICAgb3VyQ2xpZW50LT5kZXRhY2hMYXllcih0aGlzKTsKKyAgICB9CiB9CiAKLXZvaWQgTGF5ZXI6OmRlc3Ryb3koKQorc3RhdHVzX3QgTGF5ZXI6OnNldFRva2VuKGNvbnN0IHNwPFVzZXJDbGllbnQ+JiB1c2VyQ2xpZW50LAorICAgICAgICBTaGFyZWRDbGllbnQqIHNoYXJlZENsaWVudCwgaW50MzJfdCB0b2tlbikKIHsKLSAgICBmb3IgKHNpemVfdCBpPTAgOyBpPE5VTV9CVUZGRVJTIDsgaSsrKSB7Ci0gICAgICAgIGlmIChtVGV4dHVyZXNbaV0ubmFtZSAhPSAtMVUpIHsKLSAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlc1tpXS5uYW1lKTsKLSAgICAgICAgICAgIG1UZXh0dXJlc1tpXS5uYW1lID0gLTFVOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtVGV4dHVyZXNbaV0uaW1hZ2UgIT0gRUdMX05PX0lNQUdFX0tIUikgewotICAgICAgICAgICAgRUdMRGlzcGxheSBkcHkobUZsaW5nZXItPmdyYXBoaWNQbGFuZSgwKS5nZXRFR0xEaXNwbGF5KCkpOwotICAgICAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKGRweSwgbVRleHR1cmVzW2ldLmltYWdlKTsKLSAgICAgICAgICAgIG1UZXh0dXJlc1tpXS5pbWFnZSA9IEVHTF9OT19JTUFHRV9LSFI7Ci0gICAgICAgIH0KLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKLSAgICAgICAgbUJ1ZmZlcnNbaV0uY2xlYXIoKTsKLSAgICAgICAgbVdpZHRoID0gbUhlaWdodCA9IDA7CisgICAgc3A8U2hhcmVkQnVmZmVyU2VydmVyPiBsY2JsayA9IG5ldyBTaGFyZWRCdWZmZXJTZXJ2ZXIoCisgICAgICAgICAgICBzaGFyZWRDbGllbnQsIHRva2VuLCBtQnVmZmVyTWFuYWdlci5nZXREZWZhdWx0QnVmZmVyQ291bnQoKSwKKyAgICAgICAgICAgIGdldElkZW50aXR5KCkpOworCisgICAgc3RhdHVzX3QgZXJyID0gbVVzZXJDbGllbnRSZWYuc2V0VG9rZW4odXNlckNsaWVudCwgbGNibGssIHRva2VuKTsKKworICAgIExPR0VfSUYoZXJyICE9IE5PX0VSUk9SLAorICAgICAgICAgICAgIkNsaWVudFJlZjo6c2V0VG9rZW4oJXAsICVwLCAldSkgZmFpbGVkIiwKKyAgICAgICAgICAgIHVzZXJDbGllbnQuZ2V0KCksIGxjYmxrLmdldCgpLCB0b2tlbik7CisKKyAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7CisgICAgICAgIC8vIHdlIG5lZWQgdG8gZnJlZSB0aGUgYnVmZmVycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdXJmYWNlCiAgICAgfQotICAgIG1TdXJmYWNlLmNsZWFyKCk7CisKKyAgICByZXR1cm4gZXJyOworfQorCitpbnQzMl90IExheWVyOjpnZXRUb2tlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Vc2VyQ2xpZW50UmVmLmdldFRva2VuKCk7Cit9CisKK3NwPFVzZXJDbGllbnQ+IExheWVyOjpnZXRDbGllbnQoKSBjb25zdAoreworICAgIHJldHVybiBtVXNlckNsaWVudFJlZi5nZXRDbGllbnQoKTsKK30KKworLy8gY2FsbGVkIHdpdGggU3VyZmFjZUZsaW5nZXI6Om1TdGF0ZUxvY2sgYXMgc29vbiBhcyB0aGUgbGF5ZXIgaXMgZW50ZXJlZAorLy8gaW4gdGhlIHB1cmdhdG9yeSBsaXN0Cit2b2lkIExheWVyOjpvblJlbW92ZWQoKQoreworICAgIENsaWVudFJlZjo6QWNjZXNzIHNoYXJlZENsaWVudChtVXNlckNsaWVudFJlZik7CisgICAgU2hhcmVkQnVmZmVyU2VydmVyKiBsY2JsayhzaGFyZWRDbGllbnQuZ2V0KCkpOworICAgIGlmIChsY2JsaykgeworICAgICAgICAvLyB3YWtlIHVwIHRoZSBjb25kaXRpb24KKyAgICAgICAgbGNibGstPnNldFN0YXR1cyhOT19JTklUKTsKKyAgICB9CiB9CiAKIHNwPExheWVyQmFzZUNsaWVudDo6U3VyZmFjZT4gTGF5ZXI6OmNyZWF0ZVN1cmZhY2UoKSBjb25zdApAQCAtOTcsOSArMTI0LDE3IEBACiAKIHN0YXR1c190IExheWVyOjpkaXRjaCgpCiB7CisgICAgLy8gTk9URTogQ2FsbGVkIGZyb20gdGhlIG1haW4gVUkgdGhyZWFkCisKICAgICAvLyB0aGUgbGF5ZXIgaXMgbm90IG9uIHNjcmVlbiBhbnltb3JlLiBmcmVlIGFzIG11Y2ggcmVzb3VyY2VzIGFzIHBvc3NpYmxlCiAgICAgbUZyZWV6ZUxvY2suY2xlYXIoKTsKLSAgICBkZXN0cm95KCk7CisKKyAgICBFR0xEaXNwbGF5IGRweShtRmxpbmdlci0+Z3JhcGhpY1BsYW5lKDApLmdldEVHTERpc3BsYXkoKSk7CisgICAgbUJ1ZmZlck1hbmFnZXIuZGVzdHJveShkcHkpOworICAgIG1TdXJmYWNlLmNsZWFyKCk7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIG1XaWR0aCA9IG1IZWlnaHQgPSAwOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIApAQCAtMTI3LDI4ICsxNjIsMjQgQEAKICAgICBjb25zdCB1aW50MzJfdCBod0ZsYWdzID0gaHcuZ2V0RmxhZ3MoKTsKICAgICAKICAgICBtRm9ybWF0ID0gZm9ybWF0OworICAgIG1SZXFGb3JtYXQgPSBmb3JtYXQ7CiAgICAgbVdpZHRoICA9IHc7CiAgICAgbUhlaWdodCA9IGg7CiAgICAgbVNlY3VyZSA9IChmbGFncyAmIElTdXJmYWNlQ29tcG9zZXI6OmVTZWN1cmUpID8gdHJ1ZSA6IGZhbHNlOwogICAgIG1OZWVkc0JsZW5kaW5nID0gKGluZm8uaF9hbHBoYSAtIGluZm8ubF9hbHBoYSkgPiAwOwotICAgIG1Ob0VHTEltYWdlRm9yU3dCdWZmZXJzID0gIShod0ZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpDQUNIRURfQlVGRkVSUyk7CiAKICAgICAvLyB3ZSB1c2UgdGhlIHJlZCBpbmRleAogICAgIGludCBkaXNwbGF5UmVkU2l6ZSA9IGRpc3BsYXlJbmZvLmdldFNpemUoUGl4ZWxGb3JtYXRJbmZvOjpJTkRFWF9SRUQpOwogICAgIGludCBsYXllclJlZHNpemUgPSBpbmZvLmdldFNpemUoUGl4ZWxGb3JtYXRJbmZvOjpJTkRFWF9SRUQpOwogICAgIG1OZWVkc0RpdGhlcmluZyA9IGxheWVyUmVkc2l6ZSA+IGRpc3BsYXlSZWRTaXplOwogCi0gICAgZm9yIChzaXplX3QgaT0wIDsgaTxOVU1fQlVGRkVSUyA7IGkrKykgewotICAgICAgICBtQnVmZmVyc1tpXSA9IG5ldyBHcmFwaGljQnVmZmVyKCk7Ci0gICAgfQotICAgIG1TdXJmYWNlID0gbmV3IFN1cmZhY2VMYXllcihtRmxpbmdlciwgY2xpZW50SW5kZXgoKSwgdGhpcyk7CisgICAgbVN1cmZhY2UgPSBuZXcgU3VyZmFjZUxheWVyKG1GbGluZ2VyLCB0aGlzKTsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKIHZvaWQgTGF5ZXI6OnJlbG9hZFRleHR1cmUoY29uc3QgUmVnaW9uJiBkaXJ0eSkKIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwotICAgIHNwPEdyYXBoaWNCdWZmZXI+IGJ1ZmZlcihnZXRGcm9udEJ1ZmZlckxvY2tlZCgpKTsKKyAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXIobUJ1ZmZlck1hbmFnZXIuZ2V0QWN0aXZlQnVmZmVyKCkpOwogICAgIGlmIChidWZmZXIgPT0gTlVMTCkgewogICAgICAgICAvLyB0aGlzIHNpdHVhdGlvbiBjYW4gaGFwcGVuIGlmIHdlIHJhbiBvdXQgb2YgbWVtb3J5IGZvciBpbnN0YW5jZS4KICAgICAgICAgLy8gbm90IG11Y2ggd2UgY2FuIGRvLiBjb250aW51ZSB0byB1c2Ugd2hhdGV2ZXIgdGV4dHVyZSB3YXMgYm91bmQKQEAgLTE1NiwxMTggKzE4NywyMCBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgaW50IGluZGV4ID0gbUZyb250QnVmZmVySW5kZXg7Ci0KLSAgICAvLyBjcmVhdGUgdGhlIG5ldyB0ZXh0dXJlIG5hbWUgaWYgbmVlZGVkCi0gICAgaWYgKFVOTElLRUxZKG1UZXh0dXJlc1tpbmRleF0ubmFtZSA9PSAtMVUpKSB7Ci0gICAgICAgIG1UZXh0dXJlc1tpbmRleF0ubmFtZSA9IGNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgbVRleHR1cmVzW2luZGV4XS53aWR0aCA9IDA7Ci0gICAgICAgIG1UZXh0dXJlc1tpbmRleF0uaGVpZ2h0ID0gMDsKLSAgICB9Ci0KLSNpZmRlZiBFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyCi0gICAgaWYgKG1GbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6RElSRUNUX1RFWFRVUkUpIHsKLSAgICAgICAgaWYgKGJ1ZmZlci0+dXNhZ2UgJiBHcmFwaGljQnVmZmVyOjpVU0FHRV9IV19URVhUVVJFKSB7Ci0gICAgICAgICAgICBpZiAobVRleHR1cmVzW2luZGV4XS5kaXJ0eSkgewotICAgICAgICAgICAgICAgIGlmIChpbml0aWFsaXplRWdsSW1hZ2UoYnVmZmVyLCAmbVRleHR1cmVzW2luZGV4XSkgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gbm90IHN1cmUgd2hhdCB3ZSBjYW4gZG8gaGVyZS4uLgotICAgICAgICAgICAgICAgICAgICBtRmxhZ3MgJj0gfkRpc3BsYXlIYXJkd2FyZTo6RElSRUNUX1RFWFRVUkU7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gc2xvd3BhdGg7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1IeWJyaWRCdWZmZXI9PTAgfHwgKG1IeWJyaWRCdWZmZXItPndpZHRoICE9IGJ1ZmZlci0+d2lkdGggfHwKLSAgICAgICAgICAgICAgICAgICAgbUh5YnJpZEJ1ZmZlci0+aGVpZ2h0ICE9IGJ1ZmZlci0+aGVpZ2h0KSkgewotICAgICAgICAgICAgICAgIG1IeWJyaWRCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBtSHlicmlkQnVmZmVyID0gbmV3IEdyYXBoaWNCdWZmZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXItPndpZHRoLCBidWZmZXItPmhlaWdodCwgYnVmZmVyLT5mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljQnVmZmVyOjpVU0FHRV9TV19XUklURV9PRlRFTiB8Ci0gICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljQnVmZmVyOjpVU0FHRV9IV19URVhUVVJFKTsKLSAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbGl6ZUVnbEltYWdlKAotICAgICAgICAgICAgICAgICAgICAgICAgbUh5YnJpZEJ1ZmZlciwgJm1UZXh0dXJlc1swXSkgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gbm90IHN1cmUgd2hhdCB3ZSBjYW4gZG8gaGVyZS4uLgotICAgICAgICAgICAgICAgICAgICBtRmxhZ3MgJj0gfkRpc3BsYXlIYXJkd2FyZTo6RElSRUNUX1RFWFRVUkU7Ci0gICAgICAgICAgICAgICAgICAgIG1IeWJyaWRCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBzbG93cGF0aDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEdHTFN1cmZhY2UgdDsKLSAgICAgICAgICAgIHN0YXR1c190IHJlcyA9IGJ1ZmZlci0+bG9jaygmdCwgR1JBTExPQ19VU0FHRV9TV19SRUFEX09GVEVOKTsKLSAgICAgICAgICAgIExPR0VfSUYocmVzLCAiZXJyb3IgJWQgKCVzKSBsb2NraW5nIGJ1ZmZlciAlcCIsCi0gICAgICAgICAgICAgICAgICAgIHJlcywgc3RyZXJyb3IocmVzKSwgYnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICBUZXh0dXJlKiBjb25zdCB0ZXh0dXJlKCZtVGV4dHVyZXNbMF0pOwotCi0gICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlLT5uYW1lKTsKLQotICAgICAgICAgICAgICAgIHNwPEdyYXBoaWNCdWZmZXI+IGJ1ZihtSHlicmlkQnVmZmVyKTsKLSAgICAgICAgICAgICAgICB2b2lkKiB2YWRkcjsKLSAgICAgICAgICAgICAgICByZXMgPSBidWYtPmxvY2soR3JhcGhpY0J1ZmZlcjo6VVNBR0VfU1dfV1JJVEVfT0ZURU4sICZ2YWRkcik7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOT19FUlJPUikgewotICAgICAgICAgICAgICAgICAgICBpbnQgYnBwID0gMDsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmZvcm1hdCkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfUkdCXzU2NToKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1JHQkFfNDQ0NDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJwcCA9IDI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1JHQkFfODg4ODoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1JHQlhfODg4ODoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJwcCA9IDQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1N1cHBvcnRlZFl1dkZvcm1hdCh0LmZvcm1hdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBqdXN0IHNob3cgdGhlIFkgcGxhbmUgb2YgWVVWIGJ1ZmZlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicHAgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb29wcywgd2UgZG9uJ3QgaGFuZGxlIHRoaXMgZm9ybWF0IQotICAgICAgICAgICAgICAgICAgICAgICAgTE9HRSgibGF5ZXIgJXAsIHRleHR1cmU9JWQsIHVzaW5nIGZvcm1hdCAlZCwgd2hpY2ggaXMgbm90ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCBieSB0aGUgR0wiLCB0aGlzLCB0ZXh0dXJlLT5uYW1lLCB0LmZvcm1hdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGJwcCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVjdCBib3VuZHMoZGlydHkuZ2V0Qm91bmRzKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNyY19zdHJpZGUgPSB0LnN0cmlkZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkc3Rfc3RyaWRlID0gYnVmLT5zdHJpZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX3N0cmlkZSA9PSBkc3Rfc3RyaWRlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLndpZHRoKCkgPT0gdC53aWR0aCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kcy5oZWlnaHQoKSA9PSB0LmhlaWdodCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkodmFkZHIsIHQuZGF0YSwgdC5oZWlnaHQgKiB0LnN0cmlkZSAqIGJwcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgY29uc3QgKiBzcmMgPSB0LmRhdGEgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm91bmRzLmxlZnQgKyBib3VuZHMudG9wICogc3JjX3N0cmlkZSkgKiBicHA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSAqIGRzdCA9IChHTHVieXRlICopdmFkZHIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm91bmRzLmxlZnQgKyBib3VuZHMudG9wICogZHN0X3N0cmlkZSkgKiBicHA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IGJvdW5kcy53aWR0aCgpICogYnBwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoID0gYm91bmRzLmhlaWdodCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zdHJpZGUgKj0gYnBwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9zdHJpZGUgKj0gYnBwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChoLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCBsZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QgKz0gZHN0X3N0cmlkZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjICs9IHNyY19zdHJpZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJ1Zi0+dW5sb2NrKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJ1ZmZlci0+dW5sb2NrKCk7Ci0gICAgICAgICAgICB9CisgICAgaWYgKG1HTEV4dGVuc2lvbnMuaGF2ZURpcmVjdFRleHR1cmUoKSkgeworICAgICAgICBFR0xEaXNwbGF5IGRweShtRmxpbmdlci0+Z3JhcGhpY1BsYW5lKDApLmdldEVHTERpc3BsYXkoKSk7CisgICAgICAgIGlmIChtQnVmZmVyTWFuYWdlci5pbml0RWdsSW1hZ2UoZHB5LCBidWZmZXIpICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAvLyBub3Qgc3VyZSB3aGF0IHdlIGNhbiBkbyBoZXJlLi4uCisgICAgICAgICAgICBnb3RvIHNsb3dwYXRoOwogICAgICAgICB9Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAgICB7CisgICAgfSBlbHNlIHsKIHNsb3dwYXRoOgotICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPE5VTV9CVUZGRVJTIDsgaSsrKSB7Ci0gICAgICAgICAgICBtVGV4dHVyZXNbaV0uaW1hZ2UgPSBFR0xfTk9fSU1BR0VfS0hSOwotICAgICAgICB9CiAgICAgICAgIEdHTFN1cmZhY2UgdDsKICAgICAgICAgc3RhdHVzX3QgcmVzID0gYnVmZmVyLT5sb2NrKCZ0LCBHUkFMTE9DX1VTQUdFX1NXX1JFQURfT0ZURU4pOwogICAgICAgICBMT0dFX0lGKHJlcywgImVycm9yICVkICglcykgbG9ja2luZyBidWZmZXIgJXAiLAogICAgICAgICAgICAgICAgIHJlcywgc3RyZXJyb3IocmVzKSwgYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKHJlcyA9PSBOT19FUlJPUikgewotICAgICAgICAgICAgbG9hZFRleHR1cmUoJm1UZXh0dXJlc1swXSwgZGlydHksIHQpOworICAgICAgICAgICAgbUJ1ZmZlck1hbmFnZXIubG9hZFRleHR1cmUoZGlydHksIHQpOwogICAgICAgICAgICAgYnVmZmVyLT51bmxvY2soKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3NSwxMSArMjA4LDggQEAKIAogdm9pZCBMYXllcjo6b25EcmF3KGNvbnN0IFJlZ2lvbiYgY2xpcCkgY29uc3QKIHsKLSAgICBpbnQgaW5kZXggPSBtRnJvbnRCdWZmZXJJbmRleDsKLSAgICBpZiAobVRleHR1cmVzW2luZGV4XS5pbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hSKQotICAgICAgICBpbmRleCA9IDA7Ci0gICAgR0x1aW50IHRleHR1cmVOYW1lID0gbVRleHR1cmVzW2luZGV4XS5uYW1lOwotICAgIGlmIChVTkxJS0VMWSh0ZXh0dXJlTmFtZSA9PSAtMUxVKSkgeworICAgIFRleHR1cmUgdGV4KG1CdWZmZXJNYW5hZ2VyLmdldEFjdGl2ZVRleHR1cmUoKSk7CisgICAgaWYgKHRleC5uYW1lID09IC0xTFUpIHsKICAgICAgICAgLy8gdGhlIHRleHR1cmUgaGFzIG5vdCBiZWVuIGNyZWF0ZWQgeWV0LCB0aGlzIExheWVyIGhhcwogICAgICAgICAvLyBpbiBmYWN0IG5ldmVyIGJlZW4gZHJhd24gaW50by4gVGhpcyBoYXBwZW5zIGZyZXF1ZW50bHkgd2l0aAogICAgICAgICAvLyBTdXJmYWNlVmlldyBiZWNhdXNlIHRoZSBXaW5kb3dNYW5hZ2VyIGNhbid0IGtub3cgd2hlbiB0aGUgY2xpZW50CkBAIC0zMDEsMjEgKzIzMSw2MSBAQAogICAgICAgICAvLyBpZiBub3QgZXZlcnl0aGluZyBiZWxvdyB1cyBpcyBjb3ZlcmVkLCB3ZSBwbHVnIHRoZSBob2xlcyEKICAgICAgICAgUmVnaW9uIGhvbGVzKGNsaXAuc3VidHJhY3QodW5kZXIpKTsKICAgICAgICAgaWYgKCFob2xlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGNsZWFyV2l0aE9wZW5HTChob2xlcyk7CisgICAgICAgICAgICBjbGVhcldpdGhPcGVuR0woaG9sZXMsIDAsIDAsIDAsIDEpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZHJhd1dpdGhPcGVuR0woY2xpcCwgbVRleHR1cmVzW2luZGV4XSk7CisgICAgZHJhd1dpdGhPcGVuR0woY2xpcCwgdGV4KTsKIH0KIAotc3A8R3JhcGhpY0J1ZmZlcj4gTGF5ZXI6OnJlcXVlc3RCdWZmZXIoaW50IGluZGV4LCBpbnQgdXNhZ2UpCitib29sIExheWVyOjpuZWVkc0ZpbHRlcmluZygpIGNvbnN0Cit7CisgICAgaWYgKCEobUZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpTTE9XX0NPTkZJRykpIHsKKyAgICAgICAgLy8gTk9URTogdGhlcmUgaXMgYSByYWNlIGhlcmUsIGJlY2F1c2UgbUZpeGVkU2l6ZSBpcyB1cGRhdGVkIGluIGEKKyAgICAgICAgLy8gYmluZGVyIHRyYW5zYWN0aW9uLiBob3dldmVyLCBpdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgc2luY2UgaXQgaXMKKyAgICAgICAgLy8gZXZhbHVhdGVkIGVhY2ggdGltZSB3ZSBkcmF3LiBUbyBiZSBwZXJmZWN0bHkgY29ycmVjdCwgdGhpcyBmbGFnCisgICAgICAgIC8vIHdvdWxkIGhhdmUgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGEgYnVmZmVyLgorICAgICAgICBpZiAobUZpeGVkU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gTGF5ZXJCYXNlOjpuZWVkc0ZpbHRlcmluZygpOworfQorCisKK3N0YXR1c190IExheWVyOjpzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpCit7CisgICAgQ2xpZW50UmVmOjpBY2Nlc3Mgc2hhcmVkQ2xpZW50KG1Vc2VyQ2xpZW50UmVmKTsKKyAgICBTaGFyZWRCdWZmZXJTZXJ2ZXIqIGxjYmxrKHNoYXJlZENsaWVudC5nZXQoKSk7CisgICAgaWYgKCFsY2JsaykgeworICAgICAgICAvLyBvb3BzLCB0aGUgY2xpZW50IGlzIGFscmVhZHkgZ29uZQorICAgICAgICByZXR1cm4gREVBRF9PQkpFQ1Q7CisgICAgfQorCisgICAgLy8gTk9URTogbGNibGstPnJlc2l6ZSgpIGlzIHByb3RlY3RlZCBieSBhbiBpbnRlcm5hbCBsb2NrCisgICAgc3RhdHVzX3QgZXJyID0gbGNibGstPnJlc2l6ZShidWZmZXJDb3VudCk7CisgICAgaWYgKGVyciA9PSBOT19FUlJPUikKKyAgICAgICAgbUJ1ZmZlck1hbmFnZXIucmVzaXplKGJ1ZmZlckNvdW50KTsKKworICAgIHJldHVybiBlcnI7Cit9CisKK3NwPEdyYXBoaWNCdWZmZXI+IExheWVyOjpyZXF1ZXN0QnVmZmVyKGludCBpbmRleCwKKyAgICAgICAgdWludDMyX3QgcmVxV2lkdGgsIHVpbnQzMl90IHJlcUhlaWdodCwgdWludDMyX3QgcmVxRm9ybWF0LAorICAgICAgICB1aW50MzJfdCB1c2FnZSkKIHsKICAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXI7CiAKKyAgICBpZiAoaW50MzJfdChyZXFXaWR0aCB8IHJlcUhlaWdodCB8IHJlcUZvcm1hdCkgPCAwKQorICAgICAgICByZXR1cm4gYnVmZmVyOworCisgICAgaWYgKCghcmVxV2lkdGggJiYgcmVxSGVpZ2h0KSB8fCAocmVxV2lkdGggJiYgIXJlcUhlaWdodCkpCisgICAgICAgIHJldHVybiBidWZmZXI7CisKICAgICAvLyB0aGlzIGVuc3VyZXMgb3VyIGNsaWVudCBkb2Vzbid0IGdvIGF3YXkgd2hpbGUgd2UncmUgYWNjZXNzaW5nCiAgICAgLy8gdGhlIHNoYXJlZCBhcmVhLgotICAgIHNwPENsaWVudD4gb3VyQ2xpZW50KGNsaWVudC5wcm9tb3RlKCkpOwotICAgIGlmIChvdXJDbGllbnQgPT0gMCkgeworICAgIENsaWVudFJlZjo6QWNjZXNzIHNoYXJlZENsaWVudChtVXNlckNsaWVudFJlZik7CisgICAgU2hhcmVkQnVmZmVyU2VydmVyKiBsY2JsayhzaGFyZWRDbGllbnQuZ2V0KCkpOworICAgIGlmICghbGNibGspIHsKICAgICAgICAgLy8gb29wcywgdGhlIGNsaWVudCBpcyBhbHJlYWR5IGdvbmUKICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgICB9CkBAIC0zMjQsNyArMjk0LDcgQEAKICAgICAgKiBUaGlzIGlzIGNhbGxlZCBmcm9tIHRoZSBjbGllbnQncyBTdXJmYWNlOjpkZXF1ZXVlKCkuIFRoaXMgY2FuIGhhcHBlbgogICAgICAqIGF0IGFueSB0aW1lLCBlc3BlY2lhbGx5IHdoaWxlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgdXNpbmcgdGhlCiAgICAgICogYnVmZmVyICdpbmRleCcgYXMgb3VyIGZyb250IGJ1ZmZlci4KLSAgICAgKiAKKyAgICAgKgogICAgICAqIE1ha2Ugc3VyZSB0aGUgYnVmZmVyIHdlJ3JlIHJlc2l6aW5nIGlzIG5vdCB0aGUgZnJvbnQgYnVmZmVyIGFuZCBoYXMgYmVlbgogICAgICAqIGRlcXVldWVkLiBPbmNlIHRoaXMgY29uZGl0aW9uIGlzIGFzc2VydGVkLCB3ZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoaXMKICAgICAgKiBidWZmZXIgY2Fubm90IGJlY29tZSB0aGUgZnJvbnQgYnVmZmVyIHVuZGVyIG91ciBmZWV0LCBzaW5jZSB3ZSdyZSBjYWxsZWQKQEAgLTMzNywzMSArMzA3LDMzIEBACiAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfQogCi0gICAgdWludDMyX3QgdywgaDsKKyAgICB1aW50MzJfdCB3LCBoLCBmOwogICAgIHsgLy8gc2NvcGUgZm9yIHRoZSBsb2NrCiAgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7Ci0gICAgICAgIHcgPSBtV2lkdGg7Ci0gICAgICAgIGggPSBtSGVpZ2h0OwotICAgICAgICBidWZmZXIgPSBtQnVmZmVyc1tpbmRleF07Ci0gICAgICAgIAotICAgICAgICAvLyBkZXN0cm95KCkgY291bGQgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgd2UgZ2V0IGhlcmUsIHdlIGxvZyBpdAotICAgICAgICAvLyBiZWNhdXNlIGl0J3MgdW5jb21tb24sIGFuZCB0aGUgY29kZSBiZWxvdyBzaG91bGQgaGFuZGxlIGl0Ci0gICAgICAgIExPR1dfSUYoYnVmZmVyPT0wLCAKLSAgICAgICAgICAgICAgICAibUJ1ZmZlcnNbJWRdIGlzIG51bGwgKG1XaWR0aD0lZCwgbUhlaWdodD0lZCkiLAotICAgICAgICAgICAgICAgIGluZGV4LCB3LCBoKTsKLSAgICAgICAgCi0gICAgICAgIG1CdWZmZXJzW2luZGV4XS5jbGVhcigpOworICAgICAgICBjb25zdCBib29sIGZpeGVkU2l6ZUNoYW5nZWQgPSBtRml4ZWRTaXplICE9IChyZXFXaWR0aCAmJiByZXFIZWlnaHQpOworICAgICAgICBjb25zdCBib29sIGZvcm1hdENoYW5nZWQgICAgPSBtUmVxRm9ybWF0ICE9IHJlcUZvcm1hdDsKKyAgICAgICAgbVJlcVdpZHRoICA9IHJlcVdpZHRoOworICAgICAgICBtUmVxSGVpZ2h0ID0gcmVxSGVpZ2h0OworICAgICAgICBtUmVxRm9ybWF0ID0gcmVxRm9ybWF0OworICAgICAgICBtRml4ZWRTaXplID0gcmVxV2lkdGggJiYgcmVxSGVpZ2h0OworICAgICAgICB3ID0gcmVxV2lkdGggID8gcmVxV2lkdGggIDogbVdpZHRoOworICAgICAgICBoID0gcmVxSGVpZ2h0ID8gcmVxSGVpZ2h0IDogbUhlaWdodDsKKyAgICAgICAgZiA9IHJlcUZvcm1hdCA/IHJlcUZvcm1hdCA6IG1Gb3JtYXQ7CisgICAgICAgIGJ1ZmZlciA9IG1CdWZmZXJNYW5hZ2VyLmRldGFjaEJ1ZmZlcihpbmRleCk7CisgICAgICAgIGlmIChmaXhlZFNpemVDaGFuZ2VkIHx8IGZvcm1hdENoYW5nZWQpIHsKKyAgICAgICAgICAgIGxjYmxrLT5yZWFsbG9jYXRlQWxsRXhjZXB0KGluZGV4KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGNvbnN0IHVpbnQzMl90IGVmZmVjdGl2ZVVzYWdlID0gZ2V0RWZmZWN0aXZlVXNhZ2UodXNhZ2UpOwogICAgIGlmIChidWZmZXIhPTAgJiYgYnVmZmVyLT5nZXRTdHJvbmdDb3VudCgpID09IDEpIHsKLSAgICAgICAgZXJyID0gYnVmZmVyLT5yZWFsbG9jYXRlKHcsIGgsIG1Gb3JtYXQsIGVmZmVjdGl2ZVVzYWdlKTsKKyAgICAgICAgZXJyID0gYnVmZmVyLT5yZWFsbG9jYXRlKHcsIGgsIGYsIGVmZmVjdGl2ZVVzYWdlKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBoZXJlIHdlIGhhdmUgdG8gcmVhbGxvY2F0ZSBhIG5ldyBidWZmZXIgYmVjYXVzZSB3ZSBjb3VsZCBoYXZlIGEKICAgICAgICAgLy8gY2xpZW50IGluIG91ciBwcm9jZXNzIHdpdGggYSByZWZlcmVuY2UgdG8gaXQgKGVnOiBzdGF0dXMgYmFyKSwKICAgICAgICAgLy8gYW5kIHdlIGNhbid0IHJlbGVhc2UgdGhlIGhhbmRsZSB1bmRlciBpdHMgZmVldC4KICAgICAgICAgYnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgIGJ1ZmZlciA9IG5ldyBHcmFwaGljQnVmZmVyKHcsIGgsIG1Gb3JtYXQsIGVmZmVjdGl2ZVVzYWdlKTsKKyAgICAgICAgYnVmZmVyID0gbmV3IEdyYXBoaWNCdWZmZXIodywgaCwgZiwgZWZmZWN0aXZlVXNhZ2UpOwogICAgICAgICBlcnIgPSBidWZmZXItPmluaXRDaGVjaygpOwogICAgIH0KIApAQCAtMzc3LDE1ICszNDksNyBAQAogCiAgICAgaWYgKGVyciA9PSBOT19FUlJPUiAmJiBidWZmZXItPmhhbmRsZSAhPSAwKSB7CiAgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7Ci0gICAgICAgIGlmIChtV2lkdGggJiYgbUhlaWdodCkgewotICAgICAgICAgICAgLy8gYW5kIHdlIGhhdmUgbmV3IGJ1ZmZlcgotICAgICAgICAgICAgbUJ1ZmZlcnNbaW5kZXhdID0gYnVmZmVyOwotICAgICAgICAgICAgLy8gdGV4dHVyZSBpcyBub3cgZGlydHkuLi4KLSAgICAgICAgICAgIG1UZXh0dXJlc1tpbmRleF0uZGlydHkgPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gb29wcyB3ZSBnb3Qga2lsbGVkIHdoaWxlIHdlIHdlcmUgYWxsb2NhdGluZyB0aGUgYnVmZmVyCi0gICAgICAgICAgICBidWZmZXIuY2xlYXIoKTsKLSAgICAgICAgfQorICAgICAgICBtQnVmZmVyTWFuYWdlci5hdHRhY2hCdWZmZXIoaW5kZXgsIGJ1ZmZlcik7CiAgICAgfQogICAgIHJldHVybiBidWZmZXI7CiB9CkBAIC00MTEsMTUgKzM3NSw4IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gaXQncyBhbGxvd2VkIHRvIG1vZGlmeSB0aGUgdXNhZ2UgZmxhZ3MgaGVyZSwgYnV0IGdlbmVyYWxseQogICAgICAgICAvLyB0aGUgcmVxdWVzdGVkIGZsYWdzIHNob3VsZCBiZSBob25vcmVkLgotICAgICAgICBpZiAobU5vRUdMSW1hZ2VGb3JTd0J1ZmZlcnMpIHsKLSAgICAgICAgICAgIGlmICh1c2FnZSAmIEdyYXBoaWNCdWZmZXI6OlVTQUdFX0hXX01BU0spIHsKLSAgICAgICAgICAgICAgICAvLyByZXF1ZXN0IEVHTEltYWdlIGZvciBoL3cgYnVmZmVycyBvbmx5Ci0gICAgICAgICAgICAgICAgdXNhZ2UgfD0gR3JhcGhpY0J1ZmZlcjo6VVNBR0VfSFdfVEVYVFVSRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIHJlcXVlc3QgRUdMSW1hZ2UgZm9yIGFsbCBidWZmZXJzCi0gICAgICAgICAgICB1c2FnZSB8PSBHcmFwaGljQnVmZmVyOjpVU0FHRV9IV19URVhUVVJFOwotICAgICAgICB9CisgICAgICAgIC8vIHJlcXVlc3QgRUdMSW1hZ2UgZm9yIGFsbCBidWZmZXJzCisgICAgICAgIHVzYWdlIHw9IEdyYXBoaWNCdWZmZXI6OlVTQUdFX0hXX1RFWFRVUkU7CiAgICAgfQogICAgIHJldHVybiB1c2FnZTsKIH0KQEAgLTQyOSw0MiArMzg2LDUwIEBACiAgICAgY29uc3QgTGF5ZXI6OlN0YXRlJiBmcm9udChkcmF3aW5nU3RhdGUoKSk7CiAgICAgY29uc3QgTGF5ZXI6OlN0YXRlJiB0ZW1wKGN1cnJlbnRTdGF0ZSgpKTsKIAotICAgIGlmICgoZnJvbnQucmVxdWVzdGVkX3cgIT0gdGVtcC5yZXF1ZXN0ZWRfdykgfHwgCi0gICAgICAgIChmcm9udC5yZXF1ZXN0ZWRfaCAhPSB0ZW1wLnJlcXVlc3RlZF9oKSkgeworICAgIGNvbnN0IGJvb2wgc2l6ZUNoYW5nZWQgPSAoZnJvbnQucmVxdWVzdGVkX3cgIT0gdGVtcC5yZXF1ZXN0ZWRfdykgfHwKKyAgICAgICAgICAgIChmcm9udC5yZXF1ZXN0ZWRfaCAhPSB0ZW1wLnJlcXVlc3RlZF9oKTsKKworICAgIGlmIChzaXplQ2hhbmdlZCkgewogICAgICAgICAvLyB0aGUgc2l6ZSBjaGFuZ2VkLCB3ZSBuZWVkIHRvIGFzayBvdXIgY2xpZW50IHRvIHJlcXVlc3QgYSBuZXcgYnVmZmVyCiAgICAgICAgIExPR0RfSUYoREVCVUdfUkVTSVpFLAotICAgICAgICAgICAgICAgICAgICAicmVzaXplIChsYXllcj0lcCksIHJlcXVlc3RlZCAoJWR4JWQpLCAiCi0gICAgICAgICAgICAgICAgICAgICJkcmF3aW5nICglZCwlZCksICglZHglZCksICglZHglZCkiLAotICAgICAgICAgICAgICAgICAgICB0aGlzLCAKLSAgICAgICAgICAgICAgICAgICAgaW50KHRlbXAucmVxdWVzdGVkX3cpLCBpbnQodGVtcC5yZXF1ZXN0ZWRfaCksCi0gICAgICAgICAgICAgICAgICAgIGludChmcm9udC5yZXF1ZXN0ZWRfdyksIGludChmcm9udC5yZXF1ZXN0ZWRfaCksCi0gICAgICAgICAgICAgICAgICAgIGludChtQnVmZmVyc1swXS0+Z2V0V2lkdGgoKSksIGludChtQnVmZmVyc1swXS0+Z2V0SGVpZ2h0KCkpLAotICAgICAgICAgICAgICAgICAgICBpbnQobUJ1ZmZlcnNbMV0tPmdldFdpZHRoKCkpLCBpbnQobUJ1ZmZlcnNbMV0tPmdldEhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgInJlc2l6ZSAobGF5ZXI9JXApLCByZXF1ZXN0ZWQgKCVkeCVkKSwgZHJhd2luZyAoJWQsJWQpIiwKKyAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgIGludCh0ZW1wLnJlcXVlc3RlZF93KSwgaW50KHRlbXAucmVxdWVzdGVkX2gpLAorICAgICAgICAgICAgICAgIGludChmcm9udC5yZXF1ZXN0ZWRfdyksIGludChmcm9udC5yZXF1ZXN0ZWRfaCkpOwogCi0gICAgICAgIC8vIHdlJ3JlIGJlaW5nIHJlc2l6ZWQgYW5kIHRoZXJlIGlzIGEgZnJlZXplIGRpc3BsYXkgcmVxdWVzdCwKLSAgICAgICAgLy8gYWNxdWlyZSBhIGZyZWV6ZSBsb2NrLCBzbyB0aGF0IHRoZSBzY3JlZW4gc3RheXMgcHV0Ci0gICAgICAgIC8vIHVudGlsIHdlJ3ZlIHJlZHJhd24gYXQgdGhlIG5ldyBzaXplOyB0aGlzIGlzIHRvIGF2b2lkCi0gICAgICAgIC8vIGdsaXRjaGVzIHVwb24gb3JpZW50YXRpb24gY2hhbmdlcy4KLSAgICAgICAgaWYgKG1GbGluZ2VyLT5oYXNGcmVlemVSZXF1ZXN0KCkpIHsKLSAgICAgICAgICAgIC8vIGlmIHRoZSBzdXJmYWNlIGlzIGhpZGRlbiwgZG9uJ3QgdHJ5IHRvIGFjcXVpcmUgdGhlCi0gICAgICAgICAgICAvLyBmcmVlemUgbG9jaywgc2luY2UgaGlkZGVuIHN1cmZhY2VzIG1heSBuZXZlciByZWRyYXcKLSAgICAgICAgICAgIGlmICghKGZyb250LmZsYWdzICYgSVN1cmZhY2VDb21wb3Nlcjo6ZUxheWVySGlkZGVuKSkgewotICAgICAgICAgICAgICAgIG1GcmVlemVMb2NrID0gbUZsaW5nZXItPmdldEZyZWV6ZUxvY2soKTsKKyAgICAgICAgaWYgKCFpc0ZpeGVkU2l6ZSgpKSB7CisgICAgICAgICAgICAvLyB3ZSdyZSBiZWluZyByZXNpemVkIGFuZCB0aGVyZSBpcyBhIGZyZWV6ZSBkaXNwbGF5IHJlcXVlc3QsCisgICAgICAgICAgICAvLyBhY3F1aXJlIGEgZnJlZXplIGxvY2ssIHNvIHRoYXQgdGhlIHNjcmVlbiBzdGF5cyBwdXQKKyAgICAgICAgICAgIC8vIHVudGlsIHdlJ3ZlIHJlZHJhd24gYXQgdGhlIG5ldyBzaXplOyB0aGlzIGlzIHRvIGF2b2lkCisgICAgICAgICAgICAvLyBnbGl0Y2hlcyB1cG9uIG9yaWVudGF0aW9uIGNoYW5nZXMuCisgICAgICAgICAgICBpZiAobUZsaW5nZXItPmhhc0ZyZWV6ZVJlcXVlc3QoKSkgeworICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzdXJmYWNlIGlzIGhpZGRlbiwgZG9uJ3QgdHJ5IHRvIGFjcXVpcmUgdGhlCisgICAgICAgICAgICAgICAgLy8gZnJlZXplIGxvY2ssIHNpbmNlIGhpZGRlbiBzdXJmYWNlcyBtYXkgbmV2ZXIgcmVkcmF3CisgICAgICAgICAgICAgICAgaWYgKCEoZnJvbnQuZmxhZ3MgJiBJU3VyZmFjZUNvbXBvc2VyOjplTGF5ZXJIaWRkZW4pKSB7CisgICAgICAgICAgICAgICAgICAgIG1GcmVlemVMb2NrID0gbUZsaW5nZXItPmdldEZyZWV6ZUxvY2soKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBtYWtlIHN1cmUgTGF5ZXJCYXNlOjpkb1RyYW5zYWN0aW9uIGRvZXNuJ3QgdXBkYXRlCisgICAgICAgICAgICAvLyB0aGUgZHJhd2luZyBzdGF0ZSdzIHNpemUKKyAgICAgICAgICAgIExheWVyOjpTdGF0ZSYgZWRpdERyYXcobURyYXdpbmdTdGF0ZSk7CisgICAgICAgICAgICBlZGl0RHJhdy5yZXF1ZXN0ZWRfdyA9IHRlbXAucmVxdWVzdGVkX3c7CisgICAgICAgICAgICBlZGl0RHJhdy5yZXF1ZXN0ZWRfaCA9IHRlbXAucmVxdWVzdGVkX2g7CisKKyAgICAgICAgICAgIC8vIHJlY29yZCB0aGUgbmV3IHNpemUsIGZvcm0gdGhpcyBwb2ludCBvbiwgd2hlbiB0aGUgY2xpZW50IHJlcXVlc3QKKyAgICAgICAgICAgIC8vIGEgYnVmZmVyLCBpdCdsbCBnZXQgdGhlIG5ldyBzaXplLgorICAgICAgICAgICAgc2V0QnVmZmVyU2l6ZSh0ZW1wLnJlcXVlc3RlZF93LCB0ZW1wLnJlcXVlc3RlZF9oKTsKKworICAgICAgICAgICAgQ2xpZW50UmVmOjpBY2Nlc3Mgc2hhcmVkQ2xpZW50KG1Vc2VyQ2xpZW50UmVmKTsKKyAgICAgICAgICAgIFNoYXJlZEJ1ZmZlclNlcnZlciogbGNibGsoc2hhcmVkQ2xpZW50LmdldCgpKTsKKyAgICAgICAgICAgIGlmIChsY2JsaykgeworICAgICAgICAgICAgICAgIC8vIGFsbCBidWZmZXJzIG5lZWQgcmVhbGxvY2F0aW9uCisgICAgICAgICAgICAgICAgbGNibGstPnJlYWxsb2NhdGVBbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHJlY29yZCB0aGUgbmV3IHNpemUKKyAgICAgICAgICAgIHNldEJ1ZmZlclNpemUodGVtcC5yZXF1ZXN0ZWRfdywgdGVtcC5yZXF1ZXN0ZWRfaCk7CiAgICAgICAgIH0KLQotICAgICAgICAvLyB0aGlzIHdpbGwgbWFrZSBzdXJlIExheWVyQmFzZTo6ZG9UcmFuc2FjdGlvbiBkb2Vzbid0IHVwZGF0ZQotICAgICAgICAvLyB0aGUgZHJhd2luZyBzdGF0ZSdzIHNpemUKLSAgICAgICAgTGF5ZXI6OlN0YXRlJiBlZGl0RHJhdyhtRHJhd2luZ1N0YXRlKTsKLSAgICAgICAgZWRpdERyYXcucmVxdWVzdGVkX3cgPSB0ZW1wLnJlcXVlc3RlZF93OwotICAgICAgICBlZGl0RHJhdy5yZXF1ZXN0ZWRfaCA9IHRlbXAucmVxdWVzdGVkX2g7Ci0KLSAgICAgICAgLy8gcmVjb3JkIHRoZSBuZXcgc2l6ZSwgZm9ybSB0aGlzIHBvaW50IG9uLCB3aGVuIHRoZSBjbGllbnQgcmVxdWVzdCBhCi0gICAgICAgIC8vIGJ1ZmZlciwgaXQnbGwgZ2V0IHRoZSBuZXcgc2l6ZS4KLSAgICAgICAgc2V0RHJhd2luZ1NpemUodGVtcC5yZXF1ZXN0ZWRfdywgdGVtcC5yZXF1ZXN0ZWRfaCk7Ci0KLSAgICAgICAgLy8gYWxsIGJ1ZmZlcnMgbmVlZCByZWFsbG9jYXRpb24KLSAgICAgICAgbGNibGstPnJlYWxsb2NhdGUoKTsKICAgICB9CiAKICAgICBpZiAodGVtcC5zZXF1ZW5jZSAhPSBmcm9udC5zZXF1ZW5jZSkgewpAQCAtNDc4LDM1ICs0NDMsNTEgQEAKICAgICByZXR1cm4gTGF5ZXJCYXNlOjpkb1RyYW5zYWN0aW9uKGZsYWdzKTsKIH0KIAotdm9pZCBMYXllcjo6c2V0RHJhd2luZ1NpemUodWludDMyX3QgdywgdWludDMyX3QgaCkgewordm9pZCBMYXllcjo6c2V0QnVmZmVyU2l6ZSh1aW50MzJfdCB3LCB1aW50MzJfdCBoKSB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKICAgICBtV2lkdGggPSB3OwogICAgIG1IZWlnaHQgPSBoOwogfQogCitib29sIExheWVyOjppc0ZpeGVkU2l6ZSgpIGNvbnN0IHsKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBtRml4ZWRTaXplOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBwYWdlZmxpcCBoYW5kbGluZy4uLgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIExheWVyOjpsb2NrUGFnZUZsaXAoYm9vbCYgcmVjb21wdXRlVmlzaWJsZVJlZ2lvbnMpCiB7CisgICAgQ2xpZW50UmVmOjpBY2Nlc3Mgc2hhcmVkQ2xpZW50KG1Vc2VyQ2xpZW50UmVmKTsKKyAgICBTaGFyZWRCdWZmZXJTZXJ2ZXIqIGxjYmxrKHNoYXJlZENsaWVudC5nZXQoKSk7CisgICAgaWYgKCFsY2JsaykgeworICAgICAgICAvLyBjbGllbnQgZGllZAorICAgICAgICByZWNvbXB1dGVWaXNpYmxlUmVnaW9ucyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzc2l6ZV90IGJ1ZiA9IGxjYmxrLT5yZXRpcmVBbmRMb2NrKCk7Ci0gICAgaWYgKGJ1ZiA8IE5PX0VSUk9SKSB7Ci0gICAgICAgIC8vTE9HVygibm90aGluZyB0byByZXRpcmUgKCVzKSIsIHN0cmVycm9yKC1idWYpKTsKLSAgICAgICAgLy8gTk9URTogaGVyZSB0aGUgYnVmZmVyIGlzIGxvY2tlZCBiZWNhdXNlIHdlIHdpbGwgdXNlZCAKKyAgICBpZiAoYnVmID09IE5PVF9FTk9VR0hfREFUQSkgeworICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIG5vdCBhbiBlcnJvciwgaXQgc2ltcGx5IG1lYW5zIHRoZXJlIGlzIG5vdGhpbmcgdG8KKyAgICAgICAgLy8gcmV0aXJlLiBUaGUgYnVmZmVyIGlzIGxvY2tlZCBiZWNhdXNlIHdlIHdpbGwgdXNlIGl0CiAgICAgICAgIC8vIGZvciBjb21wb3NpdGlvbiBsYXRlciBpbiB0aGUgbG9vcAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gb3VjaCwgdGhpcyByZWFsbHkgc2hvdWxkIG5ldmVyIGhhcHBlbgotICAgIGlmICh1aW50MzJfdChidWYpPj1OVU1fQlVGRkVSUykgewotICAgICAgICBMT0dFKCJyZXRpcmVBbmRMb2NrKCkgYnVmZmVyIGluZGV4ICglZCkgb3V0IG9mIHJhbmdlIiwgYnVmKTsKKyAgICBpZiAoYnVmIDwgTk9fRVJST1IpIHsKKyAgICAgICAgTE9HRSgicmV0aXJlQW5kTG9jaygpIGJ1ZmZlciBpbmRleCAoJWQpIG91dCBvZiByYW5nZSIsIGludChidWYpKTsKICAgICAgICAgbVBvc3RlZERpcnR5UmVnaW9uLmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyB3ZSByZXRpcmVkIGEgYnVmZmVyLCB3aGljaCBiZWNvbWVzIHRoZSBuZXcgZnJvbnQgYnVmZmVyCi0gICAgbUZyb250QnVmZmVySW5kZXggPSBidWY7CisgICAgaWYgKG1CdWZmZXJNYW5hZ2VyLnNldEFjdGl2ZUJ1ZmZlckluZGV4KGJ1ZikgPCBOT19FUlJPUikgeworICAgICAgICBMT0dFKCJyZXRpcmVBbmRMb2NrKCkgYnVmZmVyIGluZGV4ICglZCkgb3V0IG9mIHJhbmdlIiwgaW50KGJ1ZikpOworICAgICAgICBtUG9zdGVkRGlydHlSZWdpb24uY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIGdldCB0aGUgZGlydHkgcmVnaW9uCiAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gbmV3RnJvbnRCdWZmZXIoZ2V0QnVmZmVyKGJ1ZikpOwpAQCAtNTU5LDkgKzU0MCwxNSBAQAogICAgICAgICBtRmxpbmdlci0+c2lnbmFsRXZlbnQoKTsKICAgICB9CiAKLSAgICBpZiAoIW1Qb3N0ZWREaXJ0eVJlZ2lvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVsb2FkVGV4dHVyZSggbVBvc3RlZERpcnR5UmVnaW9uICk7Ci0gICAgfQorICAgIC8qIGEgYnVmZmVyIHdhcyBwb3N0ZWQsIHNvIHdlIG5lZWQgdG8gY2FsbCByZWxvYWRUZXh0dXJlKCksIHdoaWNoCisgICAgICogd2lsbCB1cGRhdGUgb3VyIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyAoZWc6IEVHTEltYWdlS0hSIG9yCisgICAgICogdGV4dHVyZSBuYW1lcykuIHdlIG5lZWQgdG8gZG8gdGhpcyBldmVuIGlmIG1Qb3N0ZWREaXJ0eVJlZ2lvbiBpcworICAgICAqIGVtcHR5IC0tIGl0J3Mgb3J0aG9nb25hbCB0byB0aGUgZmFjdCB0aGF0IGEgbmV3IGJ1ZmZlciB3YXMgcG9zdGVkLAorICAgICAqIGZvciBpbnN0YW5jZSwgYSBkZWdlbmVyYXRlIGNhc2UgY291bGQgYmUgdGhhdCB0aGUgdXNlciBkaWQgYW4gZW1wdHkKKyAgICAgKiB1cGRhdGUgYnV0IHJlcGFpbnRlZCB0aGUgYnVmZmVyIHdpdGggYXBwcm9wcmlhdGUgY29udGVudCAoYWZ0ZXIgYQorICAgICAqIHJlc2l6ZSBmb3IgaW5zdGFuY2UpLgorICAgICAqLworICAgIHJlbG9hZFRleHR1cmUoIG1Qb3N0ZWREaXJ0eVJlZ2lvbiApOwogfQogCiB2b2lkIExheWVyOjp1bmxvY2tQYWdlRmxpcCgKQEAgLTU4NSwyNCArNTcyLDI2NSBAQAogICAgIH0KICAgICBpZiAodmlzaWJsZVJlZ2lvblNjcmVlbi5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gYW4gaW52aXNpYmxlIGxheWVyIHNob3VsZCBub3QgaG9sZCBhIGZyZWV6ZS1sb2NrCi0gICAgICAgIC8vIChiZWNhdXNlIGl0IG1heSBuZXZlciBiZSB1cGRhdGVkIGFuZCB0aGVyZW9yZSBuZXZlciByZWxlYXNlIGl0KQorICAgICAgICAvLyAoYmVjYXVzZSBpdCBtYXkgbmV2ZXIgYmUgdXBkYXRlZCBhbmQgdGhlcmVmb3JlIG5ldmVyIHJlbGVhc2UgaXQpCiAgICAgICAgIG1GcmVlemVMb2NrLmNsZWFyKCk7CiAgICAgfQogfQogCiB2b2lkIExheWVyOjpmaW5pc2hQYWdlRmxpcCgpCiB7Ci0gICAgc3RhdHVzX3QgZXJyID0gbGNibGstPnVubG9jayggbUZyb250QnVmZmVySW5kZXggKTsKLSAgICBMT0dFX0lGKGVyciE9Tk9fRVJST1IsIAotICAgICAgICAgICAgImxheWVyICVwLCBidWZmZXI9JWQgd2Fzbid0IGxvY2tlZCEiLAotICAgICAgICAgICAgdGhpcywgbUZyb250QnVmZmVySW5kZXgpOworICAgIENsaWVudFJlZjo6QWNjZXNzIHNoYXJlZENsaWVudChtVXNlckNsaWVudFJlZik7CisgICAgU2hhcmVkQnVmZmVyU2VydmVyKiBsY2JsayhzaGFyZWRDbGllbnQuZ2V0KCkpOworICAgIGlmIChsY2JsaykgeworICAgICAgICBpbnQgYnVmID0gbUJ1ZmZlck1hbmFnZXIuZ2V0QWN0aXZlQnVmZmVySW5kZXgoKTsKKyAgICAgICAgaWYgKGJ1ZiA+PSAwKSB7CisgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBsY2Jsay0+dW5sb2NrKCBidWYgKTsKKyAgICAgICAgICAgIExPR0VfSUYoZXJyIT1OT19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgImxheWVyICVwLCBidWZmZXI9JWQgd2Fzbid0IGxvY2tlZCEiLAorICAgICAgICAgICAgICAgICAgICB0aGlzLCBidWYpOworICAgICAgICB9CisgICAgfQorfQorCisKK3ZvaWQgTGF5ZXI6OmR1bXAoU3RyaW5nOCYgcmVzdWx0LCBjaGFyKiBidWZmZXIsIHNpemVfdCBTSVpFKSBjb25zdAoreworICAgIExheWVyQmFzZUNsaWVudDo6ZHVtcChyZXN1bHQsIGJ1ZmZlciwgU0laRSk7CisKKyAgICBDbGllbnRSZWY6OkFjY2VzcyBzaGFyZWRDbGllbnQobVVzZXJDbGllbnRSZWYpOworICAgIFNoYXJlZEJ1ZmZlclNlcnZlciogbGNibGsoc2hhcmVkQ2xpZW50LmdldCgpKTsKKyAgICB1aW50MzJfdCB0b3RhbFRpbWUgPSAwOworICAgIGlmIChsY2JsaykgeworICAgICAgICBTaGFyZWRCdWZmZXJTdGFjazo6U3RhdGlzdGljcyBzdGF0cyA9IGxjYmxrLT5nZXRTdGF0cygpOworICAgICAgICB0b3RhbFRpbWU9IHN0YXRzLnRvdGFsVGltZTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCggbGNibGstPmR1bXAoIiAgICAgICIpICk7CisgICAgfQorCisgICAgc3A8Y29uc3QgR3JhcGhpY0J1ZmZlcj4gYnVmMChnZXRCdWZmZXIoMCkpOworICAgIHNwPGNvbnN0IEdyYXBoaWNCdWZmZXI+IGJ1ZjEoZ2V0QnVmZmVyKDEpKTsKKyAgICB1aW50MzJfdCB3MD0wLCBoMD0wLCBzMD0wOworICAgIHVpbnQzMl90IHcxPTAsIGgxPTAsIHMxPTA7CisgICAgaWYgKGJ1ZjAgIT0gMCkgeworICAgICAgICB3MCA9IGJ1ZjAtPmdldFdpZHRoKCk7CisgICAgICAgIGgwID0gYnVmMC0+Z2V0SGVpZ2h0KCk7CisgICAgICAgIHMwID0gYnVmMC0+Z2V0U3RyaWRlKCk7CisgICAgfQorICAgIGlmIChidWYxICE9IDApIHsKKyAgICAgICAgdzEgPSBidWYxLT5nZXRXaWR0aCgpOworICAgICAgICBoMSA9IGJ1ZjEtPmdldEhlaWdodCgpOworICAgICAgICBzMSA9IGJ1ZjEtPmdldFN0cmlkZSgpOworICAgIH0KKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsCisgICAgICAgICAgICAiICAgICAgIgorICAgICAgICAgICAgImZvcm1hdD0lMmQsIFslM3V4JTN1OiUzdV0gWyUzdXglM3U6JTN1XSwiCisgICAgICAgICAgICAiIGZyZWV6ZUxvY2s9JXAsIGRxLXEtdGltZT0ldSB1c1xuIiwKKyAgICAgICAgICAgIG1Gb3JtYXQsIHcwLCBoMCwgczAsIHcxLCBoMSwgczEsCisgICAgICAgICAgICBnZXRGcmVlemVMb2NrKCkuZ2V0KCksIHRvdGFsVGltZSk7CisKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMYXllcjo6Q2xpZW50UmVmOjpDbGllbnRSZWYoKQorICAgIDogbUNvbnRyb2xCbG9jaygwKSwgbVRva2VuKC0xKSB7Cit9CisKK0xheWVyOjpDbGllbnRSZWY6On5DbGllbnRSZWYoKSB7Cit9CisKK2ludDMyX3QgTGF5ZXI6OkNsaWVudFJlZjo6Z2V0VG9rZW4oKSBjb25zdCB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICByZXR1cm4gbVRva2VuOworfQorCitzcDxVc2VyQ2xpZW50PiBMYXllcjo6Q2xpZW50UmVmOjpnZXRDbGllbnQoKSBjb25zdCB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICByZXR1cm4gbVVzZXJDbGllbnQucHJvbW90ZSgpOworfQorCitzdGF0dXNfdCBMYXllcjo6Q2xpZW50UmVmOjpzZXRUb2tlbihjb25zdCBzcDxVc2VyQ2xpZW50PiYgdWMsCisgICAgICAgIGNvbnN0IHNwPFNoYXJlZEJ1ZmZlclNlcnZlcj4mIHNoYXJlZENsaWVudCwgaW50MzJfdCB0b2tlbikgeworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisKKyAgICB7IC8vIHNjb3BlIGZvciBzdHJvbmcgbVVzZXJDbGllbnQgcmVmZXJlbmNlCisgICAgICAgIHNwPFVzZXJDbGllbnQ+IHVzZXJDbGllbnQobVVzZXJDbGllbnQucHJvbW90ZSgpKTsKKyAgICAgICAgaWYgKG1Vc2VyQ2xpZW50ICE9IDAgJiYgbUNvbnRyb2xCbG9jayAhPSAwKSB7CisgICAgICAgICAgICBtQ29udHJvbEJsb2NrLT5zZXRTdGF0dXMoTk9fSU5JVCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtVXNlckNsaWVudCA9IHVjOworICAgIG1Ub2tlbiA9IHRva2VuOworICAgIG1Db250cm9sQmxvY2sgPSBzaGFyZWRDbGllbnQ7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitzcDxVc2VyQ2xpZW50PiBMYXllcjo6Q2xpZW50UmVmOjpnZXRVc2VyQ2xpZW50VW5zYWZlKCkgY29uc3QgeworICAgIHJldHVybiBtVXNlckNsaWVudC5wcm9tb3RlKCk7Cit9CisKKy8vIHRoaXMgY2xhc3MgZ2l2ZXMgdXMgYWNjZXNzIHRvIFNoYXJlZEJ1ZmZlclNlcnZlciBzYWZlbHkKKy8vIGl0IG1ha2VzIHN1cmUgdGhlIFVzZXJDbGllbnQgKGFuZCBpdHMgYXNzb2NpYXRlZCBzaGFyZWQgbWVtb3J5KQorLy8gd29uJ3QgZ28gYXdheSB3aGlsZSB3ZSdyZSBhY2Nlc3NpbmcgaXQuCitMYXllcjo6Q2xpZW50UmVmOjpBY2Nlc3M6OkFjY2Vzcyhjb25zdCBDbGllbnRSZWYmIHJlZikKKyAgICA6IG1Db250cm9sQmxvY2soMCkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wocmVmLm1Mb2NrKTsKKyAgICBtVXNlckNsaWVudFN0cm9uZ1JlZiA9IHJlZi5tVXNlckNsaWVudC5wcm9tb3RlKCk7CisgICAgaWYgKG1Vc2VyQ2xpZW50U3Ryb25nUmVmICE9IDApCisgICAgICAgIG1Db250cm9sQmxvY2sgPSByZWYubUNvbnRyb2xCbG9jazsKK30KKworTGF5ZXI6OkNsaWVudFJlZjo6QWNjZXNzOjp+QWNjZXNzKCkKK3sKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xheWVyOjpCdWZmZXJNYW5hZ2VyOjpCdWZmZXJNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyJiB0bSkKKyAgICA6IG1OdW1CdWZmZXJzKE5VTV9CVUZGRVJTKSwgbVRleHR1cmVNYW5hZ2VyKHRtKSwKKyAgICAgIG1BY3RpdmVCdWZmZXIoLTEpLCBtRmFpbG92ZXIoZmFsc2UpCit7Cit9CisKK0xheWVyOjpCdWZmZXJNYW5hZ2VyOjp+QnVmZmVyTWFuYWdlcigpCit7Cit9CisKK3N0YXR1c190IExheWVyOjpCdWZmZXJNYW5hZ2VyOjpyZXNpemUoc2l6ZV90IHNpemUpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBtTnVtQnVmZmVycyA9IHNpemU7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCisvLyBvbmx5IGZvciBkZWJ1Z2dpbmcKK3NwPEdyYXBoaWNCdWZmZXI+IExheWVyOjpCdWZmZXJNYW5hZ2VyOjpnZXRCdWZmZXIoc2l6ZV90IGluZGV4KSBjb25zdCB7CisgICAgcmV0dXJuIG1CdWZmZXJEYXRhW2luZGV4XS5idWZmZXI7Cit9CisKK3N0YXR1c190IExheWVyOjpCdWZmZXJNYW5hZ2VyOjpzZXRBY3RpdmVCdWZmZXJJbmRleChzaXplX3QgaW5kZXgpIHsKKyAgICBtQWN0aXZlQnVmZmVyID0gaW5kZXg7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitzaXplX3QgTGF5ZXI6OkJ1ZmZlck1hbmFnZXI6OmdldEFjdGl2ZUJ1ZmZlckluZGV4KCkgY29uc3QgeworICAgIHJldHVybiBtQWN0aXZlQnVmZmVyOworfQorCitUZXh0dXJlIExheWVyOjpCdWZmZXJNYW5hZ2VyOjpnZXRBY3RpdmVUZXh0dXJlKCkgY29uc3QgeworICAgIFRleHR1cmUgcmVzOworICAgIGlmIChtRmFpbG92ZXIgfHwgbUFjdGl2ZUJ1ZmZlcjwwKSB7CisgICAgICAgIHJlcyA9IG1GYWlsb3ZlclRleHR1cmU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SW1hZ2UmPihyZXMpID0gbUJ1ZmZlckRhdGFbbUFjdGl2ZUJ1ZmZlcl0udGV4dHVyZTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworc3A8R3JhcGhpY0J1ZmZlcj4gTGF5ZXI6OkJ1ZmZlck1hbmFnZXI6OmdldEFjdGl2ZUJ1ZmZlcigpIGNvbnN0IHsKKyAgICBzcDxHcmFwaGljQnVmZmVyPiByZXN1bHQ7CisgICAgY29uc3Qgc3NpemVfdCBhY3RpdmVCdWZmZXIgPSBtQWN0aXZlQnVmZmVyOworICAgIGlmIChhY3RpdmVCdWZmZXIgPj0gMCkgeworICAgICAgICBCdWZmZXJEYXRhIGNvbnN0ICogY29uc3QgYnVmZmVycyA9IG1CdWZmZXJEYXRhOworICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgICAgICByZXN1bHQgPSBidWZmZXJzW2FjdGl2ZUJ1ZmZlcl0uYnVmZmVyOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzcDxHcmFwaGljQnVmZmVyPiBMYXllcjo6QnVmZmVyTWFuYWdlcjo6ZGV0YWNoQnVmZmVyKHNpemVfdCBpbmRleCkKK3sKKyAgICBCdWZmZXJEYXRhKiBjb25zdCBidWZmZXJzID0gbUJ1ZmZlckRhdGE7CisgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyOworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgYnVmZmVyID0gYnVmZmVyc1tpbmRleF0uYnVmZmVyOworICAgIGJ1ZmZlcnNbaW5kZXhdLmJ1ZmZlciA9IDA7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworc3RhdHVzX3QgTGF5ZXI6OkJ1ZmZlck1hbmFnZXI6OmF0dGFjaEJ1ZmZlcihzaXplX3QgaW5kZXgsCisgICAgICAgIGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBidWZmZXIpCit7CisgICAgQnVmZmVyRGF0YSogY29uc3QgYnVmZmVycyA9IG1CdWZmZXJEYXRhOworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgYnVmZmVyc1tpbmRleF0uYnVmZmVyID0gYnVmZmVyOworICAgIGJ1ZmZlcnNbaW5kZXhdLnRleHR1cmUuZGlydHkgPSB0cnVlOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgTGF5ZXI6OkJ1ZmZlck1hbmFnZXI6OmRlc3Ryb3koRUdMRGlzcGxheSBkcHkpCit7CisgICAgQnVmZmVyRGF0YSogY29uc3QgYnVmZmVycyA9IG1CdWZmZXJEYXRhOworICAgIHNpemVfdCBudW07CisgICAgeyAvLyBzY29wZSBmb3IgdGhlIGxvY2sKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICAgICAgbnVtID0gbU51bUJ1ZmZlcnM7CisgICAgICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtIDsgaSsrKSB7CisgICAgICAgICAgICBidWZmZXJzW2ldLmJ1ZmZlciA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0gOyBpKyspIHsKKyAgICAgICAgZGVzdHJveVRleHR1cmUoJmJ1ZmZlcnNbaV0udGV4dHVyZSwgZHB5KTsKKyAgICB9CisgICAgZGVzdHJveVRleHR1cmUoJm1GYWlsb3ZlclRleHR1cmUsIGRweSk7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitzdGF0dXNfdCBMYXllcjo6QnVmZmVyTWFuYWdlcjo6aW5pdEVnbEltYWdlKEVHTERpc3BsYXkgZHB5LAorICAgICAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyKQoreworICAgIHN0YXR1c190IGVyciA9IE5PX0lOSVQ7CisgICAgc3NpemVfdCBpbmRleCA9IG1BY3RpdmVCdWZmZXI7CisgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAgICAgaWYgKCFtRmFpbG92ZXIpIHsKKyAgICAgICAgICAgIEltYWdlJiB0ZXh0dXJlKG1CdWZmZXJEYXRhW2luZGV4XS50ZXh0dXJlKTsKKyAgICAgICAgICAgIGVyciA9IG1UZXh0dXJlTWFuYWdlci5pbml0RWdsSW1hZ2UoJnRleHR1cmUsIGRweSwgYnVmZmVyKTsKKyAgICAgICAgICAgIC8vIGlmIEVHTEltYWdlIGZhaWxzLCB3ZSBzd2l0Y2ggdG8gcmVndWxhciB0ZXh0dXJlIG1vZGUsIGFuZCB3ZQorICAgICAgICAgICAgLy8gZnJlZSBhbGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB1c2luZyBFR0xJbWFnZXMuCisgICAgICAgICAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgbUZhaWxvdmVyID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZGVzdHJveVRleHR1cmUoJm1GYWlsb3ZlclRleHR1cmUsIGRweSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1GYWlsb3ZlciA9IHRydWU7CisgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bSA9IG1OdW1CdWZmZXJzOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtIDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lUZXh0dXJlKCZtQnVmZmVyRGF0YVtpXS50ZXh0dXJlLCBkcHkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHdlIGZhaWxlZCBvbmNlLCBkb24ndCB0cnkgYWdhaW4KKyAgICAgICAgICAgIGVyciA9IEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZXJyOworfQorCitzdGF0dXNfdCBMYXllcjo6QnVmZmVyTWFuYWdlcjo6bG9hZFRleHR1cmUoCisgICAgICAgIGNvbnN0IFJlZ2lvbiYgZGlydHksIGNvbnN0IEdHTFN1cmZhY2UmIHQpCit7CisgICAgcmV0dXJuIG1UZXh0dXJlTWFuYWdlci5sb2FkVGV4dHVyZSgmbUZhaWxvdmVyVGV4dHVyZSwgZGlydHksIHQpOworfQorCitzdGF0dXNfdCBMYXllcjo6QnVmZmVyTWFuYWdlcjo6ZGVzdHJveVRleHR1cmUoSW1hZ2UqIHRleCwgRUdMRGlzcGxheSBkcHkpCit7CisgICAgaWYgKHRleC0+bmFtZSAhPSAtMVUpIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4LT5uYW1lKTsKKyAgICAgICAgdGV4LT5uYW1lID0gLTFVOworICAgIH0KKyAgICBpZiAodGV4LT5pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKSB7CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUihkcHksIHRleC0+aW1hZ2UpOworICAgICAgICB0ZXgtPmltYWdlID0gRUdMX05PX0lNQUdFX0tIUjsKKyAgICB9CisgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogTGF5ZXI6OlN1cmZhY2VMYXllcjo6U3VyZmFjZUxheWVyKGNvbnN0IHNwPFN1cmZhY2VGbGluZ2VyPiYgZmxpbmdlciwKLSAgICAgICAgU3VyZmFjZUlEIGlkLCBjb25zdCBzcDxMYXllcj4mIG93bmVyKQotICAgIDogU3VyZmFjZShmbGluZ2VyLCBpZCwgb3duZXItPmdldElkZW50aXR5KCksIG93bmVyKQorICAgICAgICBjb25zdCBzcDxMYXllcj4mIG93bmVyKQorICAgIDogU3VyZmFjZShmbGluZ2VyLCBvd25lci0+Z2V0SWRlbnRpdHkoKSwgb3duZXIpCiB7CiB9CiAKQEAgLTYxMCwyMCArODM4LDM3IEBACiB7CiB9CiAKLXNwPEdyYXBoaWNCdWZmZXI+IExheWVyOjpTdXJmYWNlTGF5ZXI6OnJlcXVlc3RCdWZmZXIoaW50IGluZGV4LCBpbnQgdXNhZ2UpCitzcDxHcmFwaGljQnVmZmVyPiBMYXllcjo6U3VyZmFjZUxheWVyOjpyZXF1ZXN0QnVmZmVyKGludCBpbmRleCwKKyAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB1c2FnZSkKIHsKICAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXI7CiAgICAgc3A8TGF5ZXI+IG93bmVyKGdldE93bmVyKCkpOwogICAgIGlmIChvd25lciAhPSAwKSB7Ci0gICAgICAgIExPR0VfSUYodWludDMyX3QoaW5kZXgpPj1OVU1fQlVGRkVSUywKLSAgICAgICAgICAgICAgICAiZ2V0QnVmZmVyKCkgaW5kZXggKCVkKSBvdXQgb2YgcmFuZ2UiLCBpbmRleCk7Ci0gICAgICAgIGlmICh1aW50MzJfdChpbmRleCkgPCBOVU1fQlVGRkVSUykgewotICAgICAgICAgICAgYnVmZmVyID0gb3duZXItPnJlcXVlc3RCdWZmZXIoaW5kZXgsIHVzYWdlKTsKLSAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiByZXF1ZXN0QnVmZmVyKCkgY2Fubm90IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZAorICAgICAgICAgKiBhcyBpdCBjb3VsZCBjYXVzZSBhIGRlYWQtbG9jaywgc2luY2UgaXQgbWF5IGhhdmUgdG8gd2FpdAorICAgICAgICAgKiBvbiBjb25kaXRpb25zIHVwZGF0ZWQgbXkgdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAgKi8KKyAgICAgICAgYnVmZmVyID0gb3duZXItPnJlcXVlc3RCdWZmZXIoaW5kZXgsIHcsIGgsIGZvcm1hdCwgdXNhZ2UpOwogICAgIH0KICAgICByZXR1cm4gYnVmZmVyOwogfQogCitzdGF0dXNfdCBMYXllcjo6U3VyZmFjZUxheWVyOjpzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpCit7CisgICAgc3RhdHVzX3QgZXJyID0gREVBRF9PQkpFQ1Q7CisgICAgc3A8TGF5ZXI+IG93bmVyKGdldE93bmVyKCkpOworICAgIGlmIChvd25lciAhPSAwKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNldEJ1ZmZlckNvdW50KCkgY2Fubm90IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZAorICAgICAgICAgKiBhcyBpdCBjb3VsZCBjYXVzZSBhIGRlYWQtbG9jaywgc2luY2UgaXQgbWF5IGhhdmUgdG8gd2FpdAorICAgICAgICAgKiBvbiBjb25kaXRpb25zIHVwZGF0ZWQgbXkgdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAgKi8KKyAgICAgICAgZXJyID0gb3duZXItPnNldEJ1ZmZlckNvdW50KGJ1ZmZlckNvdW50KTsKKyAgICB9CisgICAgcmV0dXJuIGVycjsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllci5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllci5oCmluZGV4IDc0M2FmYjQuLmUxZDI4M2IgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXIuaAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyLmgKQEAgLTMxLDM2ICszMSw0MyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJCYXNlLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgQ2xpZW50OwogY2xhc3MgRnJlZXplTG9jazsKK2NsYXNzIENsaWVudDsKK2NsYXNzIEdMRXh0ZW5zaW9uczsKK2NsYXNzIFVzZXJDbGllbnQ7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBzaXplX3QgTlVNX0JVRkZFUlMgPSAyOwotCiBjbGFzcyBMYXllciA6IHB1YmxpYyBMYXllckJhc2VDbGllbnQKIHsKLXB1YmxpYzogICAgCi0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHR5cGVJbmZvOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlSUQ7Ci0gICAgdmlydHVhbCBjaGFyIGNvbnN0KiBnZXRUeXBlSUQoKSBjb25zdCB7IHJldHVybiB0eXBlSUQ7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90IGdldFR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gdHlwZUluZm87IH0KLSAgICAKLSAgICAgICAgICAgICAgICAgTGF5ZXIoU3VyZmFjZUZsaW5nZXIqIGZsaW5nZXIsIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgaW50MzJfdCBpKTsKK3B1YmxpYzoKKyAgICAgICAgICAgIExheWVyKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50KTsKIAotICAgICAgICB2aXJ0dWFsIH5MYXllcigpOworICAgIHZpcnR1YWwgfkxheWVyKCk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGdldFR5cGVJZCgpIGNvbnN0IHsgcmV0dXJuICJMYXllciI7IH0KKworICAgIC8vIHRoZSB0aGlzIGxheWVyJ3Mgc2l6ZSBhbmQgZm9ybWF0CiAgICAgc3RhdHVzX3Qgc2V0QnVmZmVycyh1aW50MzJfdCB3LCB1aW50MzJfdCBoLCAKICAgICAgICAgICAgIFBpeGVsRm9ybWF0IGZvcm1hdCwgdWludDMyX3QgZmxhZ3M9MCk7CiAKLSAgICB2b2lkIHNldERyYXdpbmdTaXplKHVpbnQzMl90IHcsIHVpbnQzMl90IGgpOworICAgIC8vIGFzc29jaWF0ZSBhIFVzZXJDbGllbnQgdG8gdGhpcyBMYXllcgorICAgIHN0YXR1c190IHNldFRva2VuKGNvbnN0IHNwPFVzZXJDbGllbnQ+JiB1YywgU2hhcmVkQ2xpZW50KiBzYywgaW50MzJfdCBpZHgpOworICAgIGludDMyX3QgZ2V0VG9rZW4oKSBjb25zdDsKKyAgICBzcDxVc2VyQ2xpZW50PiBnZXRDbGllbnQoKSBjb25zdDsKIAorICAgIC8vIFNldCB0aGlzIExheWVyJ3MgYnVmZmVycyBzaXplCisgICAgdm9pZCBzZXRCdWZmZXJTaXplKHVpbnQzMl90IHcsIHVpbnQzMl90IGgpOworICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdDsKKworICAgIC8vIExheWVyQmFzZSBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgb25EcmF3KGNvbnN0IFJlZ2lvbiYgY2xpcCkgY29uc3Q7CiAgICAgdmlydHVhbCB1aW50MzJfdCBkb1RyYW5zYWN0aW9uKHVpbnQzMl90IHRyYW5zYWN0aW9uRmxhZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBsb2NrUGFnZUZsaXAoYm9vbCYgcmVjb21wdXRlVmlzaWJsZVJlZ2lvbnMpOwpAQCAtNjgsNjMgKzc1LDE2MSBAQAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYWdlRmxpcCgpOwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgICAgICB7IHJldHVybiBtTmVlZHNCbGVuZGluZzsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0RpdGhlcmluZygpIGNvbnN0ICAgICB7IHJldHVybiBtTmVlZHNEaXRoZXJpbmc7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNGaWx0ZXJpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWN1cmUoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbVNlY3VyZTsgfQogICAgIHZpcnR1YWwgc3A8U3VyZmFjZT4gY3JlYXRlU3VyZmFjZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgc3RhdHVzX3QgZGl0Y2goKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgb25SZW1vdmVkKCk7CisKICAgICAvLyBvbmx5IGZvciBkZWJ1Z2dpbmcKLSAgICBpbmxpbmUgc3A8R3JhcGhpY0J1ZmZlcj4gZ2V0QnVmZmVyKGludCBpKSB7IHJldHVybiBtQnVmZmVyc1tpXTsgfQorICAgIGlubGluZSBzcDxHcmFwaGljQnVmZmVyPiBnZXRCdWZmZXIoaW50IGkpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1CdWZmZXJNYW5hZ2VyLmdldEJ1ZmZlcihpKTsgfQogICAgIC8vIG9ubHkgZm9yIGRlYnVnZ2luZwotICAgIGlubGluZSBjb25zdCBzcDxGcmVlemVMb2NrPiYgIGdldEZyZWV6ZUxvY2soKSBjb25zdCB7IHJldHVybiBtRnJlZXplTG9jazsgfQotICAgIC8vIG9ubHkgZm9yIGRlYnVnZ2luZwotICAgIGlubGluZSBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1Gb3JtYXQ7IH0KLSAgICAvLyBvbmx5IGZvciBkZWJ1Z2dpbmcKLSAgICBpbmxpbmUgaW50IGdldEZyb250QnVmZmVySW5kZXgoKSBjb25zdCB7IHJldHVybiBtRnJvbnRCdWZmZXJJbmRleDsgfQorICAgIGlubGluZSBjb25zdCBzcDxGcmVlemVMb2NrPiYgIGdldEZyZWV6ZUxvY2soKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtRnJlZXplTG9jazsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGR1bXAoU3RyaW5nOCYgcmVzdWx0LCBjaGFyKiBzY3JhdGNoLCBzaXplX3Qgc2l6ZSkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgaW5saW5lIHNwPEdyYXBoaWNCdWZmZXI+IGdldEZyb250QnVmZmVyTG9ja2VkKCkgewotICAgICAgICByZXR1cm4gbUJ1ZmZlcnNbbUZyb250QnVmZmVySW5kZXhdOwotICAgIH0KLSAKICAgICB2b2lkIHJlbG9hZFRleHR1cmUoY29uc3QgUmVnaW9uJiBkaXJ0eSk7Ci0KICAgICB1aW50MzJfdCBnZXRFZmZlY3RpdmVVc2FnZSh1aW50MzJfdCB1c2FnZSkgY29uc3Q7CisgICAgc3A8R3JhcGhpY0J1ZmZlcj4gcmVxdWVzdEJ1ZmZlcihpbnQgYnVmZmVySWR4LAorICAgICAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB1c2FnZSk7CisgICAgc3RhdHVzX3Qgc2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KTsKIAotICAgIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGluZGV4LCBpbnQgdXNhZ2UpOwotICAgIHZvaWQgZGVzdHJveSgpOworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICBjbGFzcyBTdXJmYWNlTGF5ZXIgOiBwdWJsaWMgTGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN1cmZhY2VMYXllcihjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsCi0gICAgICAgICAgICAgICAgU3VyZmFjZUlEIGlkLCBjb25zdCBzcDxMYXllcj4mIG93bmVyKTsKKyAgICAgICAgU3VyZmFjZUxheWVyKGNvbnN0IHNwPFN1cmZhY2VGbGluZ2VyPiYgZmxpbmdlciwgY29uc3Qgc3A8TGF5ZXI+JiBvd25lcik7CiAgICAgICAgIH5TdXJmYWNlTGF5ZXIoKTsKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGluZGV4LCBpbnQgdXNhZ2UpOworICAgICAgICB2aXJ0dWFsIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHVzYWdlKTsKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpOwogICAgICAgICBzcDxMYXllcj4gZ2V0T3duZXIoKSBjb25zdCB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5ZXIqPihTdXJmYWNlOjpnZXRPd25lcigpLmdldCgpKTsKICAgICAgICAgfQogICAgIH07CiAgICAgZnJpZW5kIGNsYXNzIFN1cmZhY2VMYXllcjsKLSAgICAKLSAgICBzcDxTdXJmYWNlPiAgICAgICAgICAgICBtU3VyZmFjZTsKIAotICAgICAgICAgICAgYm9vbCAgICAgICAgICAgIG1TZWN1cmU7Ci0gICAgICAgICAgICBib29sICAgICAgICAgICAgbU5vRUdMSW1hZ2VGb3JTd0J1ZmZlcnM7Ci0gICAgICAgICAgICBpbnQzMl90ICAgICAgICAgbUZyb250QnVmZmVySW5kZXg7Ci0gICAgICAgICAgICBib29sICAgICAgICAgICAgbU5lZWRzQmxlbmRpbmc7Ci0gICAgICAgICAgICBib29sICAgICAgICAgICAgbU5lZWRzRGl0aGVyaW5nOwotICAgICAgICAgICAgUmVnaW9uICAgICAgICAgIG1Qb3N0ZWREaXJ0eVJlZ2lvbjsKLSAgICAgICAgICAgIHNwPEZyZWV6ZUxvY2s+ICBtRnJlZXplTG9jazsKLSAgICAgICAgICAgIFBpeGVsRm9ybWF0ICAgICBtRm9ybWF0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBwcm90ZWN0ZWQgYnkgbUxvY2sKLSAgICAgICAgICAgIHNwPEdyYXBoaWNCdWZmZXI+IG1CdWZmZXJzW05VTV9CVUZGRVJTXTsKLSAgICAgICAgICAgIFRleHR1cmUgICAgICAgICBtVGV4dHVyZXNbTlVNX0JVRkZFUlNdOwotICAgICAgICAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gbUh5YnJpZEJ1ZmZlcjsKLSAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICBtV2lkdGg7Ci0gICAgICAgICAgICB1aW50MzJfdCAgICAgICAgbUhlaWdodDsKLSAgICAgICAgICAgIAotICAgbXV0YWJsZSBNdXRleCBtTG9jazsKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgY2xhc3MgQ2xpZW50UmVmIHsKKyAgICAgICAgQ2xpZW50UmVmKGNvbnN0IENsaWVudFJlZiYgcmhzKTsKKyAgICAgICAgQ2xpZW50UmVmJiBvcGVyYXRvciA9IChjb25zdCBDbGllbnRSZWYmIHJocyk7CisgICAgICAgIG11dGFibGUgTXV0ZXggbUxvY2s7CisgICAgICAgIC8vIGJpbmRlciB0aHJlYWQsIHBhZ2UtZmxpcCB0aHJlYWQKKyAgICAgICAgc3A8U2hhcmVkQnVmZmVyU2VydmVyPiBtQ29udHJvbEJsb2NrOworICAgICAgICB3cDxVc2VyQ2xpZW50PiBtVXNlckNsaWVudDsKKyAgICAgICAgaW50MzJfdCBtVG9rZW47CisgICAgcHVibGljOgorICAgICAgICBDbGllbnRSZWYoKTsKKyAgICAgICAgfkNsaWVudFJlZigpOworICAgICAgICBpbnQzMl90IGdldFRva2VuKCkgY29uc3Q7CisgICAgICAgIHNwPFVzZXJDbGllbnQ+IGdldENsaWVudCgpIGNvbnN0OworICAgICAgICBzdGF0dXNfdCBzZXRUb2tlbihjb25zdCBzcDxVc2VyQ2xpZW50PiYgdWMsCisgICAgICAgICAgICAgICAgY29uc3Qgc3A8U2hhcmVkQnVmZmVyU2VydmVyPiYgc2hhcmVkQ2xpZW50LCBpbnQzMl90IHRva2VuKTsKKyAgICAgICAgc3A8VXNlckNsaWVudD4gZ2V0VXNlckNsaWVudFVuc2FmZSgpIGNvbnN0OworICAgICAgICBjbGFzcyBBY2Nlc3MgeworICAgICAgICAgICAgQWNjZXNzKGNvbnN0IEFjY2VzcyYgcmhzKTsKKyAgICAgICAgICAgIEFjY2VzcyYgb3BlcmF0b3IgPSAoY29uc3QgQWNjZXNzJiByaHMpOworICAgICAgICAgICAgc3A8VXNlckNsaWVudD4gbVVzZXJDbGllbnRTdHJvbmdSZWY7CisgICAgICAgICAgICBzcDxTaGFyZWRCdWZmZXJTZXJ2ZXI+IG1Db250cm9sQmxvY2s7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEFjY2Vzcyhjb25zdCBDbGllbnRSZWYmIHJlZik7CisgICAgICAgICAgICB+QWNjZXNzKCk7CisgICAgICAgICAgICBpbmxpbmUgU2hhcmVkQnVmZmVyU2VydmVyKiBnZXQoKSBjb25zdCB7IHJldHVybiBtQ29udHJvbEJsb2NrLmdldCgpOyB9CisgICAgICAgIH07CisgICAgICAgIGZyaWVuZCBjbGFzcyBBY2Nlc3M7CisgICAgfTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBjbGFzcyBCdWZmZXJNYW5hZ2VyIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBOVU1fQlVGRkVSUyA9IDI7CisgICAgICAgIHN0cnVjdCBCdWZmZXJEYXRhIHsKKyAgICAgICAgICAgIHNwPEdyYXBoaWNCdWZmZXI+ICAgYnVmZmVyOworICAgICAgICAgICAgSW1hZ2UgICAgICAgICAgICAgICB0ZXh0dXJlOworICAgICAgICB9OworICAgICAgICAvLyB0aGlzIGxvY2sgcHJvdGVjdCBtQnVmZmVyRGF0YVtdLmJ1ZmZlciBidXQgc2luY2UgdGhlcmUKKyAgICAgICAgLy8gaXMgdmVyeSBsaXR0bGUgY29udGVudGlvbiwgd2UgaGF2ZSBvbmx5IG9uZSBsaWtlIGZvcgorICAgICAgICAvLyB0aGUgd2hvbGUgYXJyYXksIHdlIGFsc28gdXNlIGl0IHRvIHByb3RlY3QgbU51bUJ1ZmZlcnMuCisgICAgICAgIG11dGFibGUgTXV0ZXggbUxvY2s7CisgICAgICAgIEJ1ZmZlckRhdGEgICAgICAgICAgbUJ1ZmZlckRhdGFbU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUFYXTsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgICAgICBtTnVtQnVmZmVyczsKKyAgICAgICAgVGV4dHVyZSAgICAgICAgICAgICBtRmFpbG92ZXJUZXh0dXJlOworICAgICAgICBUZXh0dXJlTWFuYWdlciYgICAgIG1UZXh0dXJlTWFuYWdlcjsKKyAgICAgICAgc3NpemVfdCAgICAgICAgICAgICBtQWN0aXZlQnVmZmVyOworICAgICAgICBib29sICAgICAgICAgICAgICAgIG1GYWlsb3ZlcjsKKyAgICAgICAgc3RhdGljIHN0YXR1c190IGRlc3Ryb3lUZXh0dXJlKEltYWdlKiB0ZXgsIEVHTERpc3BsYXkgZHB5KTsKKworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHNpemVfdCBnZXREZWZhdWx0QnVmZmVyQ291bnQoKSB7IHJldHVybiBOVU1fQlVGRkVSUzsgfQorICAgICAgICBCdWZmZXJNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyJiB0bSk7CisgICAgICAgIH5CdWZmZXJNYW5hZ2VyKCk7CisKKyAgICAgICAgLy8gZGV0YWNoL2F0dGFjaCBidWZmZXIgZnJvbS90byBnaXZlbiBpbmRleAorICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBkZXRhY2hCdWZmZXIoc2l6ZV90IGluZGV4KTsKKyAgICAgICAgc3RhdHVzX3QgYXR0YWNoQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJ1ZmZlcik7CisgICAgICAgIC8vIHJlc2l6ZSB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBidWZmZXJzCisgICAgICAgIHN0YXR1c190IHJlc2l6ZShzaXplX3Qgc2l6ZSk7CisKKyAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAvLyBtdXN0IGJlIGNhbGxlZCBmcm9tIEdMIHRocmVhZAorCisgICAgICAgIC8vIHNldC9nZXQgYWN0aXZlIGJ1ZmZlciBpbmRleAorICAgICAgICBzdGF0dXNfdCBzZXRBY3RpdmVCdWZmZXJJbmRleChzaXplX3QgaW5kZXgpOworICAgICAgICBzaXplX3QgZ2V0QWN0aXZlQnVmZmVySW5kZXgoKSBjb25zdDsKKyAgICAgICAgLy8gcmV0dXJuIHRoZSBhY3RpdmUgYnVmZmVyCisgICAgICAgIHNwPEdyYXBoaWNCdWZmZXI+IGdldEFjdGl2ZUJ1ZmZlcigpIGNvbnN0OworICAgICAgICAvLyByZXR1cm4gdGhlIGFjdGl2ZSB0ZXh0dXJlIChvciBmYWlsLW92ZXIpCisgICAgICAgIFRleHR1cmUgZ2V0QWN0aXZlVGV4dHVyZSgpIGNvbnN0OworICAgICAgICAvLyBmcmVlcyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGFsbCBidWZmZXJzCisgICAgICAgIHN0YXR1c190IGRlc3Ryb3koRUdMRGlzcGxheSBkcHkpOworICAgICAgICAvLyBsb2FkIGJpdG1hcCBkYXRhIGludG8gdGhlIGFjdGl2ZSBidWZmZXIKKyAgICAgICAgc3RhdHVzX3QgbG9hZFRleHR1cmUoY29uc3QgUmVnaW9uJiBkaXJ0eSwgY29uc3QgR0dMU3VyZmFjZSYgdCk7CisgICAgICAgIC8vIG1ha2UgYWN0aXZlIGJ1ZmZlciBhbiBFR0xJbWFnZSBpZiBuZWVkZWQKKyAgICAgICAgc3RhdHVzX3QgaW5pdEVnbEltYWdlKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgIGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBidWZmZXIpOworCisgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgLy8gb25seSBmb3IgZGVidWdnaW5nCisgICAgICAgIHNwPEdyYXBoaWNCdWZmZXI+IGdldEJ1ZmZlcihzaXplX3QgaW5kZXgpIGNvbnN0OworICAgIH07CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gdGhyZWFkLXNhZmUKKyAgICBDbGllbnRSZWYgbVVzZXJDbGllbnRSZWY7CisKKyAgICAvLyBjb25zdGFudHMKKyAgICBzcDxTdXJmYWNlPiBtU3VyZmFjZTsKKyAgICBQaXhlbEZvcm1hdCBtRm9ybWF0OworICAgIGNvbnN0IEdMRXh0ZW5zaW9ucyYgbUdMRXh0ZW5zaW9uczsKKyAgICBib29sIG1OZWVkc0JsZW5kaW5nOworICAgIGJvb2wgbU5lZWRzRGl0aGVyaW5nOworCisgICAgLy8gcGFnZS1mbGlwIHRocmVhZCAoY3VycmVudGx5IG1haW4gdGhyZWFkKQorICAgIGJvb2wgbVNlY3VyZTsKKyAgICBSZWdpb24gbVBvc3RlZERpcnR5UmVnaW9uOworCisgICAgLy8gcGFnZS1mbGlwIHRocmVhZCBhbmQgdHJhbnNhY3Rpb24gdGhyZWFkIChjdXJyZW50bHkgbWFpbiB0aHJlYWQpCisgICAgc3A8RnJlZXplTG9jaz4gIG1GcmVlemVMb2NrOworCisgICAgLy8gc2VlIHRocmVhZGluZyB1c2FnZSBpbiBkZWNsYXJhdGlvbgorICAgIFRleHR1cmVNYW5hZ2VyIG1UZXh0dXJlTWFuYWdlcjsKKyAgICBCdWZmZXJNYW5hZ2VyIG1CdWZmZXJNYW5hZ2VyOworCisgICAgLy8gYmluZGVyIHRocmVhZCwgdHJhbnNhY3Rpb24gdGhyZWFkCisgICAgbXV0YWJsZSBNdXRleCBtTG9jazsKKyAgICB1aW50MzJfdCBtV2lkdGg7CisgICAgdWludDMyX3QgbUhlaWdodDsKKyAgICB1aW50MzJfdCBtUmVxV2lkdGg7CisgICAgdWludDMyX3QgbVJlcUhlaWdodDsKKyAgICB1aW50MzJfdCBtUmVxRm9ybWF0OworICAgIGJvb2wgbUZpeGVkU2l6ZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJhc2UuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJhc2UuY3BwCmluZGV4IGE4YjczNWUuLmQ1YWE1M2YgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCYXNlLmNwcAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmFzZS5jcHAKQEAgLTMyLDI5ICszMiwyMSBAQAogI2luY2x1ZGUgIkxheWVyQmFzZS5oIgogI2luY2x1ZGUgIlN1cmZhY2VGbGluZ2VyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUhhcmR3YXJlL0Rpc3BsYXlIYXJkd2FyZS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAKIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgdWludDMyX3QgTGF5ZXJCYXNlOjp0eXBlSW5mbyA9IDE7Ci1jb25zdCBjaGFyKiBjb25zdCBMYXllckJhc2U6OnR5cGVJRCA9ICJMYXllckJhc2UiOwotCi1jb25zdCB1aW50MzJfdCBMYXllckJhc2VDbGllbnQ6OnR5cGVJbmZvID0gTGF5ZXJCYXNlOjp0eXBlSW5mbyB8IDI7Ci1jb25zdCBjaGFyKiBjb25zdCBMYXllckJhc2VDbGllbnQ6OnR5cGVJRCA9ICJMYXllckJhc2VDbGllbnQiOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogTGF5ZXJCYXNlOjpMYXllckJhc2UoU3VyZmFjZUZsaW5nZXIqIGZsaW5nZXIsIERpc3BsYXlJRCBkaXNwbGF5KQogICAgIDogZHB5KGRpc3BsYXkpLCBjb250ZW50RGlydHkoZmFsc2UpLAogICAgICAgbUZsaW5nZXIoZmxpbmdlciksCi0gICAgICBtVHJhbnNmb3JtZWQoZmFsc2UpLAotICAgICAgbVVzZUxpbmVhckZpbHRlcmluZyhmYWxzZSksCisgICAgICBtTmVlZHNGaWx0ZXJpbmcoZmFsc2UpLAogICAgICAgbU9yaWVudGF0aW9uKDApLAogICAgICAgbUxlZnQoMCksIG1Ub3AoMCksCiAgICAgICBtVHJhbnNhY3Rpb25GbGFncygwKSwKLSAgICAgIG1QcmVtdWx0aXBsaWVkQWxwaGEodHJ1ZSksIG1EZWJ1ZyhmYWxzZSksCisgICAgICBtUHJlbXVsdGlwbGllZEFscGhhKHRydWUpLCBtTmFtZSgidW5uYW1lZCIpLCBtRGVidWcoZmFsc2UpLAogICAgICAgbUludmFsaWRhdGUoMCkKIHsKICAgICBjb25zdCBEaXNwbGF5SGFyZHdhcmUmIGh3KGZsaW5nZXItPmdyYXBoaWNQbGFuZSgwKS5kaXNwbGF5SGFyZHdhcmUoKSk7CkBAIC0xNTksNyArMTUxLDYgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIGJvb2wgTGF5ZXJCYXNlOjpzZXRNYXRyaXgoY29uc3QgbGF5ZXJfc3RhdGVfdDo6bWF0cml4MjJfdCYgbWF0cml4KSB7Ci0gICAgLy8gVE9ETzogY2hlY2sgdGhlIG1hdHJpeCBoYXMgY2hhbmdlZAogICAgIG1DdXJyZW50U3RhdGUuc2VxdWVuY2UrKzsKICAgICBtQ3VycmVudFN0YXRlLnRyYW5zZm9ybS5zZXQoCiAgICAgICAgICAgICBtYXRyaXguZHNkeCwgbWF0cml4LmRzZHksIG1hdHJpeC5kdGR4LCBtYXRyaXguZHRkeSk7CkBAIC0xNjcsNyArMTU4LDYgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIGJvb2wgTGF5ZXJCYXNlOjpzZXRUcmFuc3BhcmVudFJlZ2lvbkhpbnQoY29uc3QgUmVnaW9uJiB0cmFuc3BhcmVudCkgewotICAgIC8vIFRPRE86IGNoZWNrIHRoZSByZWdpb24gaGFzIGNoYW5nZWQKICAgICBtQ3VycmVudFN0YXRlLnNlcXVlbmNlKys7CiAgICAgbUN1cnJlbnRTdGF0ZS50cmFuc3BhcmVudFJlZ2lvbiA9IHRyYW5zcGFyZW50OwogICAgIHJlcXVlc3RUcmFuc2FjdGlvbigpOwpAQCAtMjIxLDEzICsyMTEsMTIgQEAKICAgICAgICAgZmxhZ3MgfD0gZVZpc2libGVSZWdpb247CiAgICAgICAgIHRoaXMtPmNvbnRlbnREaXJ0eSA9IHRydWU7CiAKLSAgICAgICAgY29uc3QgYm9vbCBsaW5lYXJGaWx0ZXJpbmcgPSBtVXNlTGluZWFyRmlsdGVyaW5nOwotICAgICAgICBtVXNlTGluZWFyRmlsdGVyaW5nID0gZmFsc2U7CisgICAgICAgIG1OZWVkc0ZpbHRlcmluZyA9IGZhbHNlOwogICAgICAgICBpZiAoIShtRmxhZ3MgJiBEaXNwbGF5SGFyZHdhcmU6OlNMT1dfQ09ORklHKSkgewogICAgICAgICAgICAgLy8gd2UgbWF5IHVzZSBsaW5lYXIgZmlsdGVyaW5nLCBpZiB0aGUgbWF0cml4IHNjYWxlcyB1cwogICAgICAgICAgICAgY29uc3QgdWludDhfdCB0eXBlID0gdGVtcC50cmFuc2Zvcm0uZ2V0VHlwZSgpOwogICAgICAgICAgICAgaWYgKCF0ZW1wLnRyYW5zZm9ybS5wcmVzZXJ2ZVJlY3RzKCkgfHwgKHR5cGUgPj0gVHJhbnNmb3JtOjpTQ0FMRSkpIHsKLSAgICAgICAgICAgICAgICBtVXNlTGluZWFyRmlsdGVyaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtTmVlZHNGaWx0ZXJpbmcgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjY3LDcgKzI1Niw2IEBACiAgICAgLy8gY2FjaGUgYSBmZXcgdGhpbmdzLi4uCiAgICAgbU9yaWVudGF0aW9uID0gdHIuZ2V0T3JpZW50YXRpb24oKTsKICAgICBtVHJhbnNmb3JtZWRCb3VuZHMgPSB0ci5tYWtlQm91bmRzKHcsIGgpOwotICAgIG1UcmFuc2Zvcm1lZCA9IHRyYW5zZm9ybWVkOwogICAgIG1MZWZ0ID0gdHIudHgoKTsKICAgICBtVG9wICA9IHRyLnR5KCk7CiB9CkBAIC0zMzYsNDUgKzMyNCwyNSBAQAogICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CiAKICAgICBvbkRyYXcoY2xpcCk7Ci0KLSAgICAvKgotICAgIGdsRGlzYWJsZShHTF9URVhUVVJFXzJEKTsKLSAgICBnbERpc2FibGUoR0xfRElUSEVSKTsKLSAgICBnbEVuYWJsZShHTF9CTEVORCk7Ci0gICAgZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKLSAgICBnbENvbG9yNHgoMCwgMHg4MDAwLCAwLCAweDEwMDAwKTsKLSAgICBkcmF3UmVnaW9uKHRyYW5zcGFyZW50UmVnaW9uU2NyZWVuKTsKLSAgICBnbERpc2FibGUoR0xfQkxFTkQpOwotICAgICovCiB9CiAKLUdMdWludCBMYXllckJhc2U6OmNyZWF0ZVRleHR1cmUoKSBjb25zdAotewotICAgIEdMdWludCB0ZXh0dXJlTmFtZSA9IC0xOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmVOYW1lKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVOYW1lKTsKLSAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgcmV0dXJuIHRleHR1cmVOYW1lOwotfQotCi12b2lkIExheWVyQmFzZTo6Y2xlYXJXaXRoT3BlbkdMKGNvbnN0IFJlZ2lvbiYgY2xpcCwgR0xjbGFtcHggcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1weCBncmVlbiwgR0xjbGFtcHggYmx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcHggYWxwaGEpIGNvbnN0Cit2b2lkIExheWVyQmFzZTo6Y2xlYXJXaXRoT3BlbkdMKGNvbnN0IFJlZ2lvbiYgY2xpcCwgR0xjbGFtcGYgcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgYWxwaGEpIGNvbnN0CiB7CiAgICAgY29uc3QgRGlzcGxheUhhcmR3YXJlJiBodyhncmFwaGljUGxhbmUoMCkuZGlzcGxheUhhcmR3YXJlKCkpOwogICAgIGNvbnN0IHVpbnQzMl90IGZiSGVpZ2h0ID0gaHcuZ2V0SGVpZ2h0KCk7Ci0gICAgZ2xDb2xvcjR4KHJlZCxncmVlbixibHVlLGFscGhhKTsKLSAgICBnbERpc2FibGUoR0xfVEVYVFVSRV8yRCk7CisgICAgZ2xDb2xvcjRmKHJlZCxncmVlbixibHVlLGFscGhhKTsKKworICAgIFRleHR1cmVNYW5hZ2VyOjpkZWFjdGl2YXRlVGV4dHVyZXMoKTsKKwogICAgIGdsRGlzYWJsZShHTF9CTEVORCk7CiAgICAgZ2xEaXNhYmxlKEdMX0RJVEhFUik7CiAKICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2xpcC5iZWdpbigpOwogICAgIFJlZ2lvbjo6Y29uc3RfaXRlcmF0b3IgY29uc3QgZW5kID0gY2xpcC5lbmQoKTsKICAgICBnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwotICAgIGdsVmVydGV4UG9pbnRlcigyLCBHTF9GSVhFRCwgMCwgbVZlcnRpY2VzKTsKKyAgICBnbFZlcnRleFBvaW50ZXIoMiwgR0xfRkxPQVQsIDAsIG1WZXJ0aWNlcyk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICBjb25zdCBSZWN0JiByID0gKml0Kys7CiAgICAgICAgIGNvbnN0IEdMaW50IHN5ID0gZmJIZWlnaHQgLSAoci50b3AgKyByLmhlaWdodCgpKTsKQEAgLTM5NSwzOSArMzYzLDI1IEBACiAgICAgY29uc3QgU3RhdGUmIHMoZHJhd2luZ1N0YXRlKCkpOwogICAgIAogICAgIC8vIGJpbmQgb3VyIHRleHR1cmUKLSAgICB2YWxpZGF0ZVRleHR1cmUodGV4dHVyZS5uYW1lKTsKKyAgICBUZXh0dXJlTWFuYWdlcjo6YWN0aXZhdGVUZXh0dXJlKHRleHR1cmUsIG5lZWRzRmlsdGVyaW5nKCkpOwogICAgIHVpbnQzMl90IHdpZHRoICA9IHRleHR1cmUud2lkdGg7IAogICAgIHVpbnQzMl90IGhlaWdodCA9IHRleHR1cmUuaGVpZ2h0OwotICAgIAotICAgIGdsRW5hYmxlKEdMX1RFWFRVUkVfMkQpOwogCisgICAgR0xlbnVtIHNyYyA9IG1QcmVtdWx0aXBsaWVkQWxwaGEgPyBHTF9PTkUgOiBHTF9TUkNfQUxQSEE7CiAgICAgaWYgKFVOTElLRUxZKHMuYWxwaGEgPCAweEZGKSkgewotICAgICAgICAvLyBXZSBoYXZlIGFuIGFscGhhLW1vZHVsYXRpb24uIFdlIG5lZWQgdG8gbW9kdWxhdGUgYWxsCi0gICAgICAgIC8vIHRleHR1cmUgY29tcG9uZW50cyBieSBhbHBoYSBiZWNhdXNlIHdlJ3JlIGFsd2F5cyB1c2luZyAKLSAgICAgICAgLy8gcHJlbXVsdGlwbGllZCBhbHBoYS4KLSAgICAgICAgCi0gICAgICAgIC8vIElmIHRoZSB0ZXh0dXJlIGRvZXNuJ3QgaGF2ZSBhbiBhbHBoYSBjaGFubmVsIHdlIGNhbgotICAgICAgICAvLyB1c2UgUkVQTEFDRSBhbmQgc3dpdGNoIHRvIG5vbiBwcmVtdWx0aXBsaWVkIGFscGhhCi0gICAgICAgIC8vIGJsZW5kaW5nIChTUkNBL09ORV9NSU5VU19TUkNBKS4KLSAgICAgICAgCi0gICAgICAgIEdMZW51bSBlbnYsIHNyYzsKLSAgICAgICAgaWYgKG5lZWRzQmxlbmRpbmcoKSkgewotICAgICAgICAgICAgZW52ID0gR0xfTU9EVUxBVEU7Ci0gICAgICAgICAgICBzcmMgPSBtUHJlbXVsdGlwbGllZEFscGhhID8gR0xfT05FIDogR0xfU1JDX0FMUEhBOworICAgICAgICBjb25zdCBHTGZsb2F0IGFscGhhID0gcy5hbHBoYSAqICgxLjBmLzI1NS4wZik7CisgICAgICAgIGlmIChtUHJlbXVsdGlwbGllZEFscGhhKSB7CisgICAgICAgICAgICBnbENvbG9yNGYoYWxwaGEsIGFscGhhLCBhbHBoYSwgYWxwaGEpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZW52ID0gR0xfUkVQTEFDRTsKLSAgICAgICAgICAgIHNyYyA9IEdMX1NSQ19BTFBIQTsKKyAgICAgICAgICAgIGdsQ29sb3I0ZigxLCAxLCAxLCBhbHBoYSk7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3QgR0dMZml4ZWQgYWxwaGEgPSAocy5hbHBoYSA8PCAxNikvMjU1OwotICAgICAgICBnbENvbG9yNHgoYWxwaGEsIGFscGhhLCBhbHBoYSwgYWxwaGEpOwogICAgICAgICBnbEVuYWJsZShHTF9CTEVORCk7CiAgICAgICAgIGdsQmxlbmRGdW5jKHNyYywgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7Ci0gICAgICAgIGdsVGV4RW52eChHTF9URVhUVVJFX0VOViwgR0xfVEVYVFVSRV9FTlZfTU9ERSwgZW52KTsKKyAgICAgICAgZ2xUZXhFbnZ4KEdMX1RFWFRVUkVfRU5WLCBHTF9URVhUVVJFX0VOVl9NT0RFLCBHTF9NT0RVTEFURSk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgZ2xDb2xvcjRmKDEsIDEsIDEsIDEpOwogICAgICAgICBnbFRleEVudngoR0xfVEVYVFVSRV9FTlYsIEdMX1RFWFRVUkVfRU5WX01PREUsIEdMX1JFUExBQ0UpOwotICAgICAgICBnbENvbG9yNHgoMHgxMDAwMCwgMHgxMDAwMCwgMHgxMDAwMCwgMHgxMDAwMCk7CiAgICAgICAgIGlmIChuZWVkc0JsZW5kaW5nKCkpIHsKLSAgICAgICAgICAgIEdMZW51bSBzcmMgPSBtUHJlbXVsdGlwbGllZEFscGhhID8gR0xfT05FIDogR0xfU1JDX0FMUEhBOwogICAgICAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwogICAgICAgICAgICAgZ2xCbGVuZEZ1bmMoc3JjLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQzNywxMyArMzkxLDExIEBACiAKICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2xpcC5iZWdpbigpOwogICAgIFJlZ2lvbjo6Y29uc3RfaXRlcmF0b3IgY29uc3QgZW5kID0gY2xpcC5lbmQoKTsKLQotICAgIC8vU3RvcFdhdGNoIHdhdGNoKCJHTCB0cmFuc2Zvcm1lZCIpOwotICAgIGNvbnN0IEdMZml4ZWQgdGV4Q29vcmRzWzRdWzJdID0gewotICAgICAgICAgICAgeyAwLCAgICAgICAgMCB9LAotICAgICAgICAgICAgeyAwLCAgICAgICAgMHgxMDAwMCB9LAotICAgICAgICAgICAgeyAweDEwMDAwLCAgMHgxMDAwMCB9LAotICAgICAgICAgICAgeyAweDEwMDAwLCAgMCB9CisgICAgY29uc3QgR0xmbG9hdCB0ZXhDb29yZHNbNF1bMl0gPSB7CisgICAgICAgICAgICB7IDAsICAwIH0sCisgICAgICAgICAgICB7IDAsICAxIH0sCisgICAgICAgICAgICB7IDEsICAxIH0sCisgICAgICAgICAgICB7IDEsICAwIH0KICAgICB9OwogCiAgICAgZ2xNYXRyaXhNb2RlKEdMX1RFWFRVUkUpOwpAQCAtNDY5LDkgKzQyMSwxNSBAQAogICAgICAgICBnbFNjYWxlZih0ZXh0dXJlLndTY2FsZSwgdGV4dHVyZS5oU2NhbGUsIDEuMGYpOwogICAgIH0KIAorICAgIGlmIChuZWVkc0RpdGhlcmluZygpKSB7CisgICAgICAgIGdsRW5hYmxlKEdMX0RJVEhFUik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2xEaXNhYmxlKEdMX0RJVEhFUik7CisgICAgfQorCiAgICAgZ2xFbmFibGVDbGllbnRTdGF0ZShHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKLSAgICBnbFZlcnRleFBvaW50ZXIoMiwgR0xfRklYRUQsIDAsIG1WZXJ0aWNlcyk7Ci0gICAgZ2xUZXhDb29yZFBvaW50ZXIoMiwgR0xfRklYRUQsIDAsIHRleENvb3Jkcyk7CisgICAgZ2xWZXJ0ZXhQb2ludGVyKDIsIEdMX0ZMT0FULCAwLCBtVmVydGljZXMpOworICAgIGdsVGV4Q29vcmRQb2ludGVyKDIsIEdMX0ZMT0FULCAwLCB0ZXhDb29yZHMpOwogCiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICBjb25zdCBSZWN0JiByID0gKml0Kys7CkBAIC00ODIsMjQ2ICs0NDAsNDAgQEAKICAgICBnbERpc2FibGVDbGllbnRTdGF0ZShHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKIH0KIAotdm9pZCBMYXllckJhc2U6OnZhbGlkYXRlVGV4dHVyZShHTGludCB0ZXh0dXJlTmFtZSkgY29uc3QKK3ZvaWQgTGF5ZXJCYXNlOjpkdW1wKFN0cmluZzgmIHJlc3VsdCwgY2hhciogYnVmZmVyLCBzaXplX3QgU0laRSkgY29uc3QKIHsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVOYW1lKTsKLSAgICAvLyBUT0RPOiByZWxvYWQgdGhlIHRleHR1cmUgaWYgbmVlZGVkCi0gICAgLy8gdGhpcyBpcyBjdXJyZW50bHkgZG9uZSBpbiBsb2FkVGV4dHVyZSgpIGJlbG93Ci0gICAgaWYgKG1Vc2VMaW5lYXJGaWx0ZXJpbmcpIHsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICB9IGVsc2UgewotICAgICAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgfQotCi0gICAgaWYgKG5lZWRzRGl0aGVyaW5nKCkpIHsKLSAgICAgICAgZ2xFbmFibGUoR0xfRElUSEVSKTsKLSAgICB9IGVsc2UgewotICAgICAgICBnbERpc2FibGUoR0xfRElUSEVSKTsKLSAgICB9CisgICAgY29uc3QgTGF5ZXI6OlN0YXRlJiBzKGRyYXdpbmdTdGF0ZSgpKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsCisgICAgICAgICAgICAiKyAlcyAlcFxuIgorICAgICAgICAgICAgIiAgICAgICIKKyAgICAgICAgICAgICJ6PSU5ZCwgcG9zPSglNGQsJTRkKSwgc2l6ZT0oJTRkLCU0ZCksICIKKyAgICAgICAgICAgICJuZWVkc0JsZW5kaW5nPSUxZCwgbmVlZHNEaXRoZXJpbmc9JTFkLCBpbnZhbGlkYXRlPSUxZCwgIgorICAgICAgICAgICAgImFscGhhPTB4JTAyeCwgZmxhZ3M9MHglMDh4LCB0cj1bJS4yZiwgJS4yZl1bJS4yZiwgJS4yZl1cbiIsCisgICAgICAgICAgICBnZXRUeXBlSWQoKSwgdGhpcywgcy56LCB0eCgpLCB0eSgpLCBzLncsIHMuaCwKKyAgICAgICAgICAgIG5lZWRzQmxlbmRpbmcoKSwgbmVlZHNEaXRoZXJpbmcoKSwgY29udGVudERpcnR5LAorICAgICAgICAgICAgcy5hbHBoYSwgcy5mbGFncywKKyAgICAgICAgICAgIHMudHJhbnNmb3JtWzBdWzBdLCBzLnRyYW5zZm9ybVswXVsxXSwKKyAgICAgICAgICAgIHMudHJhbnNmb3JtWzFdWzBdLCBzLnRyYW5zZm9ybVsxXVsxXSk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwogfQogCi1ib29sIExheWVyQmFzZTo6aXNTdXBwb3J0ZWRZdXZGb3JtYXQoaW50IGZvcm1hdCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIyX1NQOgotICAgICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIwX1NQOgotICAgICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIyX1A6Ci0gICAgICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ2JDcl80MjBfUDoKLSAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMl9JOgotICAgICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIwX0k6Ci0gICAgICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ3JDYl80MjBfU1A6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIExheWVyQmFzZTo6bG9hZFRleHR1cmUoVGV4dHVyZSogdGV4dHVyZSwgCi0gICAgICAgIGNvbnN0IFJlZ2lvbiYgZGlydHksIGNvbnN0IEdHTFN1cmZhY2UmIHQpIGNvbnN0Ci17Ci0gICAgaWYgKHRleHR1cmUtPm5hbWUgPT0gLTFVKSB7Ci0gICAgICAgIC8vIHVoPwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlLT5uYW1lKTsKLQotICAgIC8qCi0gICAgICogSW4gT3BlbkdMIEVTIHdlIGNhbid0IHNwZWNpZnkgYSBzdHJpZGUgd2l0aCBnbFRleEltYWdlMkQgKGhvd2V2ZXIsCi0gICAgICogR0xfVU5QQUNLX0FMSUdOTUVOVCBpcyBhIGxpbWl0ZWQgZm9ybSBvZiBzdHJpZGUpLgotICAgICAqIFNvIGlmIHRoZSBzdHJpZGUgaGVyZSBpc24ndCByZXByZXNlbnRhYmxlIHdpdGggR0xfVU5QQUNLX0FMSUdOTUVOVCwgd2UKLSAgICAgKiBuZWVkIHRvIGRvIHNvbWV0aGluZyByZWFzb25hYmxlIChoZXJlIGNyZWF0aW5nIGEgYmlnZ2VyIHRleHR1cmUpLgotICAgICAqIAotICAgICAqIGV4dHJhIHBpeGVscyA9ICgoKHN0cmlkZSAtIHdpZHRoKSAqIHBpeGVsc2l6ZSkgLyBHTF9VTlBBQ0tfQUxJR05NRU5UKTsKLSAgICAgKiAKLSAgICAgKiBUaGlzIHNpdHVhdGlvbiBkb2Vzbid0IGhhcHBlbiBvZnRlbiwgYnV0IHNvbWUgaC93IGhhdmUgYSBsaW1pdGF0aW9uCi0gICAgICogZm9yIHRoZWlyIGZyYW1lYnVmZmVyIChlZzogbXVzdCBiZSBtdWx0aXBsZSBvZiA4IHBpeGVscyksIGFuZAotICAgICAqIHdlIG5lZWQgdG8gdGFrZSB0aGF0IGludG8gYWNjb3VudCB3aGVuIHVzaW5nIHRoZXNlIGJ1ZmZlcnMgYXMKLSAgICAgKiB0ZXh0dXJlcy4KLSAgICAgKgotICAgICAqIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGEgcHJvYmxlbSB3aXRoIFBPVCB0ZXh0dXJlcwotICAgICAqLwotICAgIAotICAgIGludCB1bnBhY2sgPSBfX2J1aWx0aW5fY3R6KHQuc3RyaWRlICogYnl0ZXNQZXJQaXhlbCh0LmZvcm1hdCkpOwotICAgIHVucGFjayA9IDEgPDwgKCh1bnBhY2sgPiAzKSA/IDMgOiB1bnBhY2spOwotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgdW5wYWNrKTsKLSAgICAKLSAgICAvKgotICAgICAqIHJvdW5kIHRvIFBPVCBpZiBuZWVkZWQgCi0gICAgICovCi0gICAgaWYgKCEobUZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpOUE9UX0VYVEVOU0lPTikpIHsKLSAgICAgICAgdGV4dHVyZS0+TlBPVEFkanVzdCA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIGlmICh0ZXh0dXJlLT5OUE9UQWRqdXN0KSB7Ci0gICAgICAgIC8vIGZpbmQgdGhlIHNtYWxsZXN0IHBvd2VyLW9mLXR3byB0aGF0IHdpbGwgYWNjb21tb2RhdGUgb3VyIHN1cmZhY2UKLSAgICAgICAgdGV4dHVyZS0+cG90V2lkdGggID0gMSA8PCAoMzEgLSBjbHoodC53aWR0aCkpOwotICAgICAgICB0ZXh0dXJlLT5wb3RIZWlnaHQgPSAxIDw8ICgzMSAtIGNseih0LmhlaWdodCkpOwotICAgICAgICBpZiAodGV4dHVyZS0+cG90V2lkdGggIDwgdC53aWR0aCkgIHRleHR1cmUtPnBvdFdpZHRoICA8PD0gMTsKLSAgICAgICAgaWYgKHRleHR1cmUtPnBvdEhlaWdodCA8IHQuaGVpZ2h0KSB0ZXh0dXJlLT5wb3RIZWlnaHQgPDw9IDE7Ci0gICAgICAgIHRleHR1cmUtPndTY2FsZSA9IGZsb2F0KHQud2lkdGgpICAvIHRleHR1cmUtPnBvdFdpZHRoOwotICAgICAgICB0ZXh0dXJlLT5oU2NhbGUgPSBmbG9hdCh0LmhlaWdodCkgLyB0ZXh0dXJlLT5wb3RIZWlnaHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGV4dHVyZS0+cG90V2lkdGggID0gdC53aWR0aDsKLSAgICAgICAgdGV4dHVyZS0+cG90SGVpZ2h0ID0gdC5oZWlnaHQ7Ci0gICAgfQotCi0gICAgUmVjdCBib3VuZHMoZGlydHkuYm91bmRzKCkpOwotICAgIEdMdm9pZCogZGF0YSA9IDA7Ci0gICAgaWYgKHRleHR1cmUtPndpZHRoICE9IHQud2lkdGggfHwgdGV4dHVyZS0+aGVpZ2h0ICE9IHQuaGVpZ2h0KSB7Ci0gICAgICAgIHRleHR1cmUtPndpZHRoICA9IHQud2lkdGg7Ci0gICAgICAgIHRleHR1cmUtPmhlaWdodCA9IHQuaGVpZ2h0OwotCi0gICAgICAgIC8vIHRleHR1cmUgc2l6ZSBjaGFuZ2VkLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBvbmUKLSAgICAgICAgYm91bmRzLnNldChSZWN0KHQud2lkdGgsIHQuaGVpZ2h0KSk7Ci0gICAgICAgIGlmICh0LndpZHRoICA9PSB0ZXh0dXJlLT5wb3RXaWR0aCAmJgotICAgICAgICAgICAgdC5oZWlnaHQgPT0gdGV4dHVyZS0+cG90SGVpZ2h0KSB7Ci0gICAgICAgICAgICAvLyB3ZSBjYW4gZG8gaXQgb25lIHBhc3MKLSAgICAgICAgICAgIGRhdGEgPSB0LmRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JfNTY1KSB7Ci0gICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKLSAgICAgICAgICAgICAgICAgICAgR0xfUkdCLCB0ZXh0dXJlLT5wb3RXaWR0aCwgdGV4dHVyZS0+cG90SGVpZ2h0LCAwLAotICAgICAgICAgICAgICAgICAgICBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCBkYXRhKTsKLSAgICAgICAgfSBlbHNlIGlmICh0LmZvcm1hdCA9PSBIQUxfUElYRUxfRk9STUFUX1JHQkFfNDQ0NCkgewotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIHRleHR1cmUtPnBvdFdpZHRoLCB0ZXh0dXJlLT5wb3RIZWlnaHQsIDAsCi0gICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQsIGRhdGEpOwotICAgICAgICB9IGVsc2UgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCQV84ODg4IHx8Ci0gICAgICAgICAgICAgICAgICAgdC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JYXzg4ODgpIHsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCB0ZXh0dXJlLT5wb3RXaWR0aCwgdGV4dHVyZS0+cG90SGVpZ2h0LCAwLAotICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc1N1cHBvcnRlZFl1dkZvcm1hdCh0LmZvcm1hdCkpIHsKLSAgICAgICAgICAgIC8vIGp1c3Qgc2hvdyB0aGUgWSBwbGFuZSBvZiBZVVYgYnVmZmVycwotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRSwgdGV4dHVyZS0+cG90V2lkdGgsIHRleHR1cmUtPnBvdEhlaWdodCwgMCwKLSAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIG9vcHMsIHdlIGRvbid0IGhhbmRsZSB0aGlzIGZvcm1hdCEKLSAgICAgICAgICAgIExPR0UoImxheWVyICVwLCB0ZXh0dXJlPSVkLCB1c2luZyBmb3JtYXQgJWQsIHdoaWNoIGlzIG5vdCAiCi0gICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQgYnkgdGhlIEdMIiwgdGhpcywgdGV4dHVyZS0+bmFtZSwgdC5mb3JtYXQpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghZGF0YSkgewotICAgICAgICBpZiAodC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JfNTY1KSB7Ci0gICAgICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKLSAgICAgICAgICAgICAgICAgICAgMCwgYm91bmRzLnRvcCwgdC53aWR0aCwgYm91bmRzLmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LAotICAgICAgICAgICAgICAgICAgICB0LmRhdGEgKyBib3VuZHMudG9wKnQuc3RyaWRlKjIpOwotICAgICAgICB9IGVsc2UgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCQV80NDQ0KSB7Ci0gICAgICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKLSAgICAgICAgICAgICAgICAgICAgMCwgYm91bmRzLnRvcCwgdC53aWR0aCwgYm91bmRzLmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80LAotICAgICAgICAgICAgICAgICAgICB0LmRhdGEgKyBib3VuZHMudG9wKnQuc3RyaWRlKjIpOwotICAgICAgICB9IGVsc2UgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCQV84ODg4IHx8Ci0gICAgICAgICAgICAgICAgICAgdC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JYXzg4ODgpIHsKLSAgICAgICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotICAgICAgICAgICAgICAgICAgICAwLCBib3VuZHMudG9wLCB0LndpZHRoLCBib3VuZHMuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgIHQuZGF0YSArIGJvdW5kcy50b3AqdC5zdHJpZGUqNCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNTdXBwb3J0ZWRZdXZGb3JtYXQodC5mb3JtYXQpKSB7Ci0gICAgICAgICAgICAvLyBqdXN0IHNob3cgdGhlIFkgcGxhbmUgb2YgWVVWIGJ1ZmZlcnMKLSAgICAgICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotICAgICAgICAgICAgICAgICAgICAwLCBib3VuZHMudG9wLCB0LndpZHRoLCBib3VuZHMuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgdC5kYXRhICsgYm91bmRzLnRvcCp0LnN0cmlkZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXR1c190IExheWVyQmFzZTo6aW5pdGlhbGl6ZUVnbEltYWdlKAotICAgICAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyLCBUZXh0dXJlKiB0ZXh0dXJlKQotewotICAgIHN0YXR1c190IGVyciA9IE5PX0VSUk9SOwotCi0gICAgLy8gd2UgbmVlZCB0byByZWNyZWF0ZSB0aGUgdGV4dHVyZQotICAgIEVHTERpc3BsYXkgZHB5KG1GbGluZ2VyLT5ncmFwaGljUGxhbmUoMCkuZ2V0RUdMRGlzcGxheSgpKTsKLQotICAgIC8vIGZyZWUgdGhlIHByZXZpb3VzIGltYWdlCi0gICAgaWYgKHRleHR1cmUtPmltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpIHsKLSAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKGRweSwgdGV4dHVyZS0+aW1hZ2UpOwotICAgICAgICB0ZXh0dXJlLT5pbWFnZSA9IEVHTF9OT19JTUFHRV9LSFI7Ci0gICAgfQotCi0gICAgLy8gY29uc3RydWN0IGFuIEVHTF9OQVRJVkVfQlVGRkVSX0FORFJPSUQKLSAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogY2xpZW50QnVmID0gYnVmZmVyLT5nZXROYXRpdmVCdWZmZXIoKTsKLQotICAgIC8vIGNyZWF0ZSB0aGUgbmV3IEVHTEltYWdlS0hSCi0gICAgY29uc3QgRUdMaW50IGF0dHJzW10gPSB7Ci0gICAgICAgICAgICBFR0xfSU1BR0VfUFJFU0VSVkVEX0tIUiwgICAgRUdMX1RSVUUsCi0gICAgICAgICAgICBFR0xfTk9ORSwgICAgICAgICAgICAgICAgICAgRUdMX05PTkUKLSAgICB9OwotICAgIHRleHR1cmUtPmltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoCi0gICAgICAgICAgICBkcHksIEVHTF9OT19DT05URVhULCBFR0xfTkFUSVZFX0JVRkZFUl9BTkRST0lELAotICAgICAgICAgICAgKEVHTENsaWVudEJ1ZmZlciljbGllbnRCdWYsIGF0dHJzKTsKLQotICAgIGlmICh0ZXh0dXJlLT5pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKSB7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS0+bmFtZSk7Ci0gICAgICAgIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwKLSAgICAgICAgICAgICAgICAoR0xlZ2xJbWFnZU9FUyl0ZXh0dXJlLT5pbWFnZSk7Ci0gICAgICAgIEdMaW50IGVycm9yID0gZ2xHZXRFcnJvcigpOwotICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IgIT0gR0xfTk9fRVJST1IpKSB7Ci0gICAgICAgICAgICBMT0dFKCJsYXllcj0lcCwgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyglcCkgIgotICAgICAgICAgICAgICAgICAiZmFpbGVkIGVycj0weCUwNHgiLAotICAgICAgICAgICAgICAgICB0aGlzLCB0ZXh0dXJlLT5pbWFnZSwgZXJyb3IpOwotICAgICAgICAgICAgZXJyID0gSU5WQUxJRF9PUEVSQVRJT047Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBFdmVyeXRoaW5nIHdlbnQgb2theSEKLSAgICAgICAgICAgIHRleHR1cmUtPk5QT1RBZGp1c3QgPSBmYWxzZTsKLSAgICAgICAgICAgIHRleHR1cmUtPmRpcnR5ICA9IGZhbHNlOwotICAgICAgICAgICAgdGV4dHVyZS0+d2lkdGggID0gY2xpZW50QnVmLT53aWR0aDsKLSAgICAgICAgICAgIHRleHR1cmUtPmhlaWdodCA9IGNsaWVudEJ1Zi0+aGVpZ2h0OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTE9HRSgibGF5ZXI9JXAsIGVnbENyZWF0ZUltYWdlS0hSKCkgZmFpbGVkLiBlcnI9MHglNHgiLAotICAgICAgICAgICAgICAgIHRoaXMsIGVnbEdldEVycm9yKCkpOwotICAgICAgICBlcnIgPSBJTlZBTElEX09QRVJBVElPTjsKLSAgICB9Ci0gICAgcmV0dXJuIGVycjsKLX0KLQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW50MzJfdCBMYXllckJhc2VDbGllbnQ6OnNJZGVudGl0eSA9IDA7CitpbnQzMl90IExheWVyQmFzZUNsaWVudDo6c0lkZW50aXR5ID0gMTsKIAogTGF5ZXJCYXNlQ2xpZW50OjpMYXllckJhc2VDbGllbnQoU3VyZmFjZUZsaW5nZXIqIGZsaW5nZXIsIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIGludDMyX3QgaSkKLSAgICA6IExheWVyQmFzZShmbGluZ2VyLCBkaXNwbGF5KSwgbGNibGsoTlVMTCksIGNsaWVudChjbGllbnQpLCBtSW5kZXgoaSksCisgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCkKKyAgICA6IExheWVyQmFzZShmbGluZ2VyLCBkaXNwbGF5KSwgbUNsaWVudFJlZihjbGllbnQpLAogICAgICAgbUlkZW50aXR5KHVpbnQzMl90KGFuZHJvaWRfYXRvbWljX2luYygmc0lkZW50aXR5KSkpCiB7Ci0gICAgbGNibGsgPSBuZXcgU2hhcmVkQnVmZmVyU2VydmVyKAotICAgICAgICAgICAgY2xpZW50LT5jdHJsYmxrLCBpLCBOVU1fQlVGRkVSUywKLSAgICAgICAgICAgIG1JZGVudGl0eSk7Ci19Ci0KLXZvaWQgTGF5ZXJCYXNlQ2xpZW50OjpvbkZpcnN0UmVmKCkKLXsgICAgCi0gICAgc3A8Q2xpZW50PiBjbGllbnQodGhpcy0+Y2xpZW50LnByb21vdGUoKSk7Ci0gICAgaWYgKGNsaWVudCAhPSAwKSB7Ci0gICAgICAgIGNsaWVudC0+YmluZExheWVyKHRoaXMsIG1JbmRleCk7Ci0gICAgfQogfQogCiBMYXllckJhc2VDbGllbnQ6On5MYXllckJhc2VDbGllbnQoKQogewotICAgIHNwPENsaWVudD4gY2xpZW50KHRoaXMtPmNsaWVudC5wcm9tb3RlKCkpOwotICAgIGlmIChjbGllbnQgIT0gMCkgewotICAgICAgICBjbGllbnQtPmZyZWUobUluZGV4KTsKKyAgICBzcDxDbGllbnQ+IGMobUNsaWVudFJlZi5wcm9tb3RlKCkpOworICAgIGlmIChjICE9IDApIHsKKyAgICAgICAgYy0+ZGV0YWNoTGF5ZXIodGhpcyk7CiAgICAgfQotICAgIGRlbGV0ZSBsY2JsazsKLX0KLQotaW50MzJfdCBMYXllckJhc2VDbGllbnQ6OnNlcnZlckluZGV4KCkgY29uc3QgCi17Ci0gICAgc3A8Q2xpZW50PiBjbGllbnQodGhpcy0+Y2xpZW50LnByb21vdGUoKSk7Ci0gICAgaWYgKGNsaWVudCAhPSAwKSB7Ci0gICAgICAgIHJldHVybiAoY2xpZW50LT5jaWQ8PDE2KXxtSW5kZXg7Ci0gICAgfQotICAgIHJldHVybiAweEZGRkYwMDAwIHwgbUluZGV4OwogfQogCiBzcDxMYXllckJhc2VDbGllbnQ6OlN1cmZhY2U+IExheWVyQmFzZUNsaWVudDo6Z2V0U3VyZmFjZSgpCkBAIC03MzgsMjUgKzQ5MCwzMSBAQAogCiBzcDxMYXllckJhc2VDbGllbnQ6OlN1cmZhY2U+IExheWVyQmFzZUNsaWVudDo6Y3JlYXRlU3VyZmFjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5ldyBTdXJmYWNlKG1GbGluZ2VyLCBjbGllbnRJbmRleCgpLCBtSWRlbnRpdHksCisgICAgcmV0dXJuIG5ldyBTdXJmYWNlKG1GbGluZ2VyLCBtSWRlbnRpdHksCiAgICAgICAgICAgICBjb25zdF9jYXN0PExheWVyQmFzZUNsaWVudCAqPih0aGlzKSk7CiB9CiAKLS8vIGNhbGxlZCB3aXRoIFN1cmZhY2VGbGluZ2VyOjptU3RhdGVMb2NrIGFzIHNvb24gYXMgdGhlIGxheWVyIGlzIGVudGVyZWQKLS8vIGluIHRoZSBwdXJnYXRvcnkgbGlzdAotdm9pZCBMYXllckJhc2VDbGllbnQ6Om9uUmVtb3ZlZCgpCit2b2lkIExheWVyQmFzZUNsaWVudDo6ZHVtcChTdHJpbmc4JiByZXN1bHQsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IFNJWkUpIGNvbnN0CiB7Ci0gICAgLy8gd2FrZSB1cCB0aGUgY29uZGl0aW9uCi0gICAgbGNibGstPnNldFN0YXR1cyhOT19JTklUKTsKKyAgICBMYXllckJhc2U6OmR1bXAocmVzdWx0LCBidWZmZXIsIFNJWkUpOworCisgICAgc3A8Q2xpZW50PiBjbGllbnQobUNsaWVudFJlZi5wcm9tb3RlKCkpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwKKyAgICAgICAgICAgICIgICAgICBuYW1lPSVzXG4iCisgICAgICAgICAgICAiICAgICAgY2xpZW50PSVwLCBpZGVudGl0eT0ldVxuIiwKKyAgICAgICAgICAgIGdldE5hbWUoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIGNsaWVudC5nZXQoKSwgZ2V0SWRlbnRpdHkoKSk7CisKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBMYXllckJhc2VDbGllbnQ6OlN1cmZhY2U6OlN1cmZhY2UoCiAgICAgICAgIGNvbnN0IHNwPFN1cmZhY2VGbGluZ2VyPiYgZmxpbmdlciwKLSAgICAgICAgU3VyZmFjZUlEIGlkLCBpbnQgaWRlbnRpdHksIAorICAgICAgICBpbnQgaWRlbnRpdHksCiAgICAgICAgIGNvbnN0IHNwPExheWVyQmFzZUNsaWVudD4mIG93bmVyKSAKLSAgICA6IG1GbGluZ2VyKGZsaW5nZXIpLCBtVG9rZW4oaWQpLCBtSWRlbnRpdHkoaWRlbnRpdHkpLCBtT3duZXIob3duZXIpCisgICAgOiBtRmxpbmdlcihmbGluZ2VyKSwgbUlkZW50aXR5KGlkZW50aXR5KSwgbU93bmVyKG93bmVyKQogewogfQogCkBAIC03OTksMTEgKzU1NywxNyBAQAogICAgIHJldHVybiBCblN1cmZhY2U6Om9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKIH0KIAotc3A8R3JhcGhpY0J1ZmZlcj4gTGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlOjpyZXF1ZXN0QnVmZmVyKGludCBpbmRleCwgaW50IHVzYWdlKSAKK3NwPEdyYXBoaWNCdWZmZXI+IExheWVyQmFzZUNsaWVudDo6U3VyZmFjZTo6cmVxdWVzdEJ1ZmZlcihpbnQgYnVmZmVySWR4LAorICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHVzYWdlKQogewogICAgIHJldHVybiBOVUxMOyAKIH0KIAorc3RhdHVzX3QgTGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlOjpzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpCit7CisgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworfQorCiBzdGF0dXNfdCBMYXllckJhc2VDbGllbnQ6OlN1cmZhY2U6OnJlZ2lzdGVyQnVmZmVycygKICAgICAgICAgY29uc3QgSVN1cmZhY2U6OkJ1ZmZlckhlYXAmIGJ1ZmZlcnMpIAogeyAKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCYXNlLmggYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmFzZS5oCmluZGV4IDYyZWM4MzkuLjQyODhjZjcgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCYXNlLmgKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJhc2UuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHVpL1JlZ2lvbi5oPgogI2luY2x1ZGUgPHVpL092ZXJsYXkuaD4KIAotI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oPgorI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwcml2YXRlL3N1cmZhY2VmbGluZ2VyL1NoYXJlZEJ1ZmZlclN0YWNrLmg+CiAjaW5jbHVkZSA8cHJpdmF0ZS9zdXJmYWNlZmxpbmdlci9MYXllclN0YXRlLmg+CiAKQEAgLTQ1LDQxICs0NSwxNyBAQAogY2xhc3MgQ2xpZW50OwogY2xhc3MgR3JhcGhpY0J1ZmZlcjsKIGNsYXNzIEdyYXBoaWNQbGFuZTsKK2NsYXNzIExheWVyQmFzZUNsaWVudDsKIGNsYXNzIFN1cmZhY2VGbGluZ2VyOworY2xhc3MgVGV4dHVyZTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIExheWVyQmFzZSA6IHB1YmxpYyBSZWZCYXNlCiB7Ci0gICAgLy8gcG9vciBtYW4ncyBkeW5hbWljX2Nhc3QgYmVsb3cKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBnZXRUeXBlSW5mb09mQW55VHlwZSB7Ci0gICAgICAgIHN0YXRpYyB1aW50MzJfdCBnZXQoKSB7IHJldHVybiBUOjp0eXBlSW5mbzsgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBnZXRUeXBlSW5mb09mQW55VHlwZTxUKj4gewotICAgICAgICBzdGF0aWMgdWludDMyX3QgZ2V0KCkgeyByZXR1cm4gZ2V0VHlwZUluZm9PZkFueVR5cGU8VD46OmdldCgpOyB9Ci0gICAgfTsKLQogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB0eXBlSW5mbzsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZUlEOwotICAgIHZpcnR1YWwgY2hhciBjb25zdCogZ2V0VHlwZUlEKCkgY29uc3QgeyByZXR1cm4gdHlwZUlEOyB9Ci0gICAgdmlydHVhbCB1aW50MzJfdCBnZXRUeXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIHR5cGVJbmZvOyB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgVCBkeW5hbWljQ2FzdChMYXllckJhc2UqIGJhc2UpIHsKLSAgICAgICAgdWludDMyX3QgbW9zdERlcml2ZWRJbmZvID0gYmFzZS0+Z2V0VHlwZUluZm8oKTsKLSAgICAgICAgdWludDMyX3QgY2FzdFRvSW5mbyA9IGdldFR5cGVJbmZvT2ZBbnlUeXBlPFQ+OjpnZXQoKTsKLSAgICAgICAgaWYgKChtb3N0RGVyaXZlZEluZm8gJiBjYXN0VG9JbmZvKSA9PSBjYXN0VG9JbmZvKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGJhc2UpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgICAgICAgICBMYXllckJhc2UoU3VyZmFjZUZsaW5nZXIqIGZsaW5nZXIsIERpc3BsYXlJRCBkaXNwbGF5KTsKIAotICAgIAotICAgIExheWVyQmFzZShTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXkpOwotICAgIAogICAgIERpc3BsYXlJRCAgICAgICAgICAgZHB5OwogICAgIG11dGFibGUgYm9vbCAgICAgICAgY29udGVudERpcnR5OwogICAgICAgICAgICAgUmVnaW9uICAgICAgdmlzaWJsZVJlZ2lvblNjcmVlbjsKQEAgLTEyNSw2ICsxMDEsMTAgQEAKIAogICAgICAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKKyAgICB2aXJ0dWFsIHNwPExheWVyQmFzZUNsaWVudD4gZ2V0TGF5ZXJCYXNlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBnZXRUeXBlSWQoKSBjb25zdCB7IHJldHVybiAiTGF5ZXJCYXNlIjsgfQorCiAgICAgLyoqCiAgICAgICogZHJhdyAtIHBlcmZvcm1zIHNvbWUgZ2xvYmFsIGNsaXBwaW5nIG9wdGltaXphdGlvbnMKICAgICAgKiBhbmQgY2FsbHMgb25EcmF3KCkuCkBAIC0xOTksOSArMTc5LDkgQEAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNEaXRoZXJpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLyoqCi0gICAgICogdHJhbnNmb3JtZWQgLS0gdHJ1ZSBpcyB0aGlzIHN1cmZhY2UgbmVlZHMgYSB0byBiZSB0cmFuc2Zvcm1lZAorICAgICAqIG5lZWRzTGluZWFyRmlsdGVyaW5nIC0gdHJ1ZSBpZiB0aGlzIHN1cmZhY2UgbmVlZHMgZmlsdGVyaW5nCiAgICAgICovCi0gICAgdmlydHVhbCBib29sIHRyYW5zZm9ybWVkKCkgY29uc3QgICAgeyByZXR1cm4gbVRyYW5zZm9ybWVkOyB9CisgICAgdmlydHVhbCBib29sIG5lZWRzRmlsdGVyaW5nKCkgY29uc3QgeyByZXR1cm4gbU5lZWRzRmlsdGVyaW5nOyB9CiAKICAgICAvKioKICAgICAgKiBpc1NlY3VyZSAtIHRydWUgaWYgdGhpcyBzdXJmYWNlIGlzIHNlY3VyZSwgdGhhdCBpcyBpZiBpdCBwcmV2ZW50cwpAQCAtMjE3LDcgKzE5NywxMCBAQAogICAgICAqICBjdXJyZW50IGxpc3QgKi8KICAgICB2aXJ0dWFsIHZvaWQgb25SZW1vdmVkKCkgeyB9OwogICAgIAotICAgIAorICAgIC8qKiBhbHdheXMgY2FsbCBiYXNlIGNsYXNzIGZpcnN0ICovCisgICAgdmlydHVhbCB2b2lkIGR1bXAoU3RyaW5nOCYgcmVzdWx0LCBjaGFyKiBzY3JhdGNoLCBzaXplX3Qgc2l6ZSkgY29uc3Q7CisKKwogICAgIGVudW0geyAvLyBmbGFncyBmb3IgZG9UcmFuc2FjdGlvbigpCiAgICAgICAgIGVWaXNpYmxlUmVnaW9uICAgICAgPSAweDAwMDAwMDAyLAogICAgIH07CkBAIC0yNDEsNDQgKzIyNCwxOCBAQAogICAgIGNvbnN0IEdyYXBoaWNQbGFuZSYgZ3JhcGhpY1BsYW5lKGludCBkcHkpIGNvbnN0OwogICAgICAgICAgIEdyYXBoaWNQbGFuZSYgZ3JhcGhpY1BsYW5lKGludCBkcHkpOwogCi0gICAgICAgICAgR0x1aW50IGNyZWF0ZVRleHR1cmUoKSBjb25zdDsKLSAgICAKLSAgICAgICAgICBzdHJ1Y3QgVGV4dHVyZSB7Ci0gICAgICAgICAgICAgIFRleHR1cmUoKSA6IG5hbWUoLTFVKSwgd2lkdGgoMCksIGhlaWdodCgwKSwKLSAgICAgICAgICAgICAgICAgIGltYWdlKEVHTF9OT19JTUFHRV9LSFIpLCB0cmFuc2Zvcm0oMCksIAotICAgICAgICAgICAgICAgICAgTlBPVEFkanVzdChmYWxzZSksIGRpcnR5KHRydWUpIHsgfQotICAgICAgICAgICAgICBHTHVpbnQgICAgICAgIG5hbWU7Ci0gICAgICAgICAgICAgIEdMdWludCAgICAgICAgd2lkdGg7Ci0gICAgICAgICAgICAgIEdMdWludCAgICAgICAgaGVpZ2h0OwotICAgICAgICAgICAgICBHTHVpbnQgICAgICAgIHBvdFdpZHRoOwotICAgICAgICAgICAgICBHTHVpbnQgICAgICAgIHBvdEhlaWdodDsKLSAgICAgICAgICAgICAgR0xmbG9hdCAgICAgICB3U2NhbGU7Ci0gICAgICAgICAgICAgIEdMZmxvYXQgICAgICAgaFNjYWxlOwotICAgICAgICAgICAgICBFR0xJbWFnZUtIUiAgIGltYWdlOwotICAgICAgICAgICAgICB1aW50MzJfdCAgICAgIHRyYW5zZm9ybTsKLSAgICAgICAgICAgICAgYm9vbCAgICAgICAgICBOUE9UQWRqdXN0OwotICAgICAgICAgICAgICBib29sICAgICAgICAgIGRpcnR5OwotICAgICAgICAgIH07Ci0KLSAgICAgICAgICB2b2lkIGNsZWFyV2l0aE9wZW5HTChjb25zdCBSZWdpb24mIGNsaXAsIEdMY2xhbXB4IHIsIEdMY2xhbXB4IGcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcHggYiwgR0xjbGFtcHggYWxwaGEpIGNvbnN0OworICAgICAgICAgIHZvaWQgY2xlYXJXaXRoT3BlbkdMKGNvbnN0IFJlZ2lvbiYgY2xpcCwgR0xjbGFtcGYgciwgR0xjbGFtcGYgZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBiLCBHTGNsYW1wZiBhbHBoYSkgY29uc3Q7CiAgICAgICAgICAgdm9pZCBjbGVhcldpdGhPcGVuR0woY29uc3QgUmVnaW9uJiBjbGlwKSBjb25zdDsKICAgICAgICAgICB2b2lkIGRyYXdXaXRoT3BlbkdMKGNvbnN0IFJlZ2lvbiYgY2xpcCwgY29uc3QgVGV4dHVyZSYgdGV4dHVyZSkgY29uc3Q7Ci0gICAgICAgICAgdm9pZCBsb2FkVGV4dHVyZShUZXh0dXJlKiB0ZXh0dXJlLCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2lvbiYgZGlydHksIGNvbnN0IEdHTFN1cmZhY2UmIHQpIGNvbnN0OwotICAgICAgICAgIHN0YXR1c190IGluaXRpYWxpemVFZ2xJbWFnZSgKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBidWZmZXIsIFRleHR1cmUqIHRleHR1cmUpOwotCi0gICAgICAgICAgYm9vbCBpc1N1cHBvcnRlZFl1dkZvcm1hdChpbnQgZm9ybWF0KSBjb25zdDsKICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzcDxTdXJmYWNlRmxpbmdlcj4gbUZsaW5nZXI7CiAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgIG1GbGFnczsKIAogICAgICAgICAgICAgICAgIC8vIGNhY2hlZCBkdXJpbmcgdmFsaWRhdGVWaXNpYmlsaXR5KCkKLSAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgbVRyYW5zZm9ybWVkOwotICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICBtVXNlTGluZWFyRmlsdGVyaW5nOworICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICBtTmVlZHNGaWx0ZXJpbmc7CiAgICAgICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIG1PcmllbnRhdGlvbjsKLSAgICAgICAgICAgICAgICBHTGZpeGVkICAgICAgICAgbVZlcnRpY2VzWzRdWzJdOworICAgICAgICAgICAgICAgIEdMZmxvYXQgICAgICAgICBtVmVydGljZXNbNF1bMl07CiAgICAgICAgICAgICAgICAgUmVjdCAgICAgICAgICAgIG1UcmFuc2Zvcm1lZEJvdW5kczsKICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgbUxlZnQ7CiAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgIG1Ub3A7CkBAIC0zMDMsNyArMjYwLDYgQEAKIAogcHJpdmF0ZToKICAgICBMYXllckJhc2UoY29uc3QgTGF5ZXJCYXNlJiByaHMpOwotICAgIHZvaWQgdmFsaWRhdGVUZXh0dXJlKEdMaW50IHRleHR1cmVOYW1lKSBjb25zdDsKIH07CiAKIApAQCAtMzEzLDQyICsyNjksMjUgQEAKIHsKIHB1YmxpYzoKICAgICBjbGFzcyBTdXJmYWNlOwotICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHR5cGVJbmZvOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlSUQ7Ci0gICAgdmlydHVhbCBjaGFyIGNvbnN0KiBnZXRUeXBlSUQoKSBjb25zdCB7IHJldHVybiB0eXBlSUQ7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90IGdldFR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gdHlwZUluZm87IH0KIAotICAgIC8vIGxjYmxrIGlzIChhbG1vc3QpIG9ubHkgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiBTRiB0aHJlYWQsIGluIHRoZSBwbGFjZXMKLSAgICAvLyB3aGVyZSBpdCdzIG5vdCwgYSByZWZlcmVuY2UgdG8gQ2xpZW50IG11c3QgYmUgaGVsZAotICAgIFNoYXJlZEJ1ZmZlclNlcnZlciogICAgIGxjYmxrOwotCi0gICAgTGF5ZXJCYXNlQ2xpZW50KFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwgCi0gICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIGludDMyX3QgaSk7CisgICAgICAgICAgICBMYXllckJhc2VDbGllbnQoU3VyZmFjZUZsaW5nZXIqIGZsaW5nZXIsIERpc3BsYXlJRCBkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50KTsKICAgICB2aXJ0dWFsIH5MYXllckJhc2VDbGllbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25GaXJzdFJlZigpOwogCi0gICAgY29uc3Qgd3A8Q2xpZW50PiAgICBjbGllbnQ7Ci0KLSAgICBpbmxpbmUgIHVpbnQzMl90ICAgIGdldElkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gbUlkZW50aXR5OyB9Ci0gICAgaW5saW5lICBpbnQzMl90ICAgICBjbGllbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1JbmRleDsgfQotICAgICAgICAgICAgaW50MzJfdCAgICAgc2VydmVySW5kZXgoKSBjb25zdDsKLQotICAgCiAgICAgICAgICAgICBzcDxTdXJmYWNlPiBnZXRTdXJmYWNlKCk7CiAgICAgdmlydHVhbCBzcDxTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIG9uUmVtb3ZlZCgpOworICAgIHZpcnR1YWwgc3A8TGF5ZXJCYXNlQ2xpZW50PiBnZXRMYXllckJhc2VDbGllbnQoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PExheWVyQmFzZUNsaWVudCo+KHRoaXMpOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBnZXRUeXBlSWQoKSBjb25zdCB7IHJldHVybiAiTGF5ZXJCYXNlQ2xpZW50IjsgfQogCisgICAgdWludDMyX3QgZ2V0SWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiBtSWRlbnRpdHk7IH0KIAotICAgIGNsYXNzIFN1cmZhY2UgOiBwdWJsaWMgQm5TdXJmYWNlIAotICAgIHsKKyAgICBjbGFzcyBTdXJmYWNlIDogcHVibGljIEJuU3VyZmFjZSAgewogICAgIHB1YmxpYzoKLSAgICAgICAgaW50MzJfdCBnZXRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1Ub2tlbjsgfQogICAgICAgICBpbnQzMl90IGdldElkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gbUlkZW50aXR5OyB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgU3VyZmFjZShjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsIAotICAgICAgICAgICAgICAgIFN1cmZhY2VJRCBpZCwgaW50IGlkZW50aXR5LCAKKyAgICAgICAgU3VyZmFjZShjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsIGludCBpZGVudGl0eSwKICAgICAgICAgICAgICAgICBjb25zdCBzcDxMYXllckJhc2VDbGllbnQ+JiBvd25lcik7CiAgICAgICAgIHZpcnR1YWwgflN1cmZhY2UoKTsKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCBvblRyYW5zYWN0KHVpbnQzMl90IGNvZGUsIGNvbnN0IFBhcmNlbCYgZGF0YSwKQEAgLTM1Niw3ICsyOTUsMTAgQEAKICAgICAgICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBnZXRPd25lcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBpbmRleCwgaW50IHVzYWdlKTsKKyAgICAgICAgdmlydHVhbCBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBidWZmZXJJZHgsCisgICAgICAgICAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB1c2FnZSk7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KTsKKwogICAgICAgICB2aXJ0dWFsIHN0YXR1c190IHJlZ2lzdGVyQnVmZmVycyhjb25zdCBJU3VyZmFjZTo6QnVmZmVySGVhcCYgYnVmZmVycyk7IAogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEJ1ZmZlcihzc2l6ZV90IG9mZnNldCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQnVmZmVycygpOwpAQCAtMzY2LDIwICszMDgsMjIgQEAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYXllckJhc2VDbGllbnQ7CiAgICAgICAgIHNwPFN1cmZhY2VGbGluZ2VyPiAgbUZsaW5nZXI7Ci0gICAgICAgIGludDMyX3QgICAgICAgICAgICAgbVRva2VuOwogICAgICAgICBpbnQzMl90ICAgICAgICAgICAgIG1JZGVudGl0eTsKICAgICAgICAgd3A8TGF5ZXJCYXNlQ2xpZW50PiBtT3duZXI7CiAgICAgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBTdXJmYWNlOwogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGR1bXAoU3RyaW5nOCYgcmVzdWx0LCBjaGFyKiBzY3JhdGNoLCBzaXplX3Qgc2l6ZSkgY29uc3Q7CisKIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIG1JbmRleDsKLSAgICBtdXRhYmxlICAgICBNdXRleCAgICAgICAgICAgbUxvY2s7Ci0gICAgbXV0YWJsZSAgICAgd3A8U3VyZmFjZT4gICAgIG1DbGllbnRTdXJmYWNlOworICAgIG11dGFibGUgTXV0ZXggbUxvY2s7CisgICAgbXV0YWJsZSB3cDxTdXJmYWNlPiBtQ2xpZW50U3VyZmFjZTsKKyAgICBjb25zdCB3cDxDbGllbnQ+IG1DbGllbnRSZWY7CiAgICAgLy8gb25seSByZWFkCi0gICAgY29uc3QgICAgICAgdWludDMyX3QgICAgICAgIG1JZGVudGl0eTsKLSAgICBzdGF0aWMgICAgICBpbnQzMl90ICAgICAgICAgc0lkZW50aXR5OworICAgIGNvbnN0IHVpbnQzMl90IG1JZGVudGl0eTsKKyAgICBzdGF0aWMgaW50MzJfdCBzSWRlbnRpdHk7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCbHVyLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCbHVyLmNwcAppbmRleCA1ZmQ3OTA0Li42NGE0M2M3IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmx1ci5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJsdXIuY3BwCkBAIC0zMywxNCArMzMsOSBAQAogbmFtZXNwYWNlIGFuZHJvaWQgewogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IHVpbnQzMl90IExheWVyQmx1cjo6dHlwZUluZm8gPSBMYXllckJhc2VDbGllbnQ6OnR5cGVJbmZvIHwgODsKLWNvbnN0IGNoYXIqIGNvbnN0IExheWVyQmx1cjo6dHlwZUlEID0gIkxheWVyQmx1ciI7Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBMYXllckJsdXI6OkxheWVyQmx1cihTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgaW50MzJfdCBpKQotICAgIDogTGF5ZXJCYXNlQ2xpZW50KGZsaW5nZXIsIGRpc3BsYXksIGNsaWVudCwgaSksIG1DYWNoZURpcnR5KHRydWUpLAorICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQpCisgICAgOiBMYXllckJhc2VDbGllbnQoZmxpbmdlciwgZGlzcGxheSwgY2xpZW50KSwgbUNhY2hlRGlydHkodHJ1ZSksCiAgICAgICAgICAgbVJlZnJlc2hDYWNoZSh0cnVlKSwgbUNhY2hlQWdlKDApLCBtVGV4dHVyZU5hbWUoLTFVKSwKICAgICAgICAgICBtV2lkdGhTY2FsZSgxLjBmKSwgbUhlaWdodFNjYWxlKDEuMGYpLAogICAgICAgICAgIG1CbHVyRm9ybWF0KEdHTF9QSVhFTF9GT1JNQVRfUkdCXzU2NSkKQEAgLTEwMCw3ICs5NSw5IEBACiAgICAgICAgICAgICAgICAgICAgIG1DYWNoZURpcnR5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFtQXV0b1JlZnJlc2hQZW5kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtRmxpbmdlci0+c2lnbmFsRGVsYXllZEV2ZW50KG1zMm5zKDUwMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbUZsaW5nZXItPnBvc3RNZXNzYWdlQXN5bmMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBNZXNzYWdlQmFzZShNZXNzYWdlUXVldWU6OklOVkFMSURBVEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtczJucyg1MDApKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1BdXRvUmVmcmVzaFBlbmRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTQ5LDYgKzE0NiwxMSBAQAogICAgIFJlZ2lvbjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjbGlwLmJlZ2luKCk7CiAgICAgUmVnaW9uOjpjb25zdF9pdGVyYXRvciBjb25zdCBlbmQgPSBjbGlwLmVuZCgpOwogICAgIGlmIChpdCAhPSBlbmQpIHsKKyNpZiBkZWZpbmVkKEdMX09FU190ZXh0dXJlX2V4dGVybmFsKQorICAgICAgICBpZiAoR0xFeHRlbnNpb25zOjpnZXRJbnN0YW5jZSgpLmhhdmVUZXh0dXJlRXh0ZXJuYWwoKSkgeworICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGdsRW5hYmxlKEdMX1RFWFRVUkVfMkQpOwogICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlTmFtZSk7CiAKQEAgLTE4MSw3ICsxODMsNyBAQAogICAgICAgICAgICAgYmwuZGF0YSA9IChHR0x1Ynl0ZSopcGl4ZWxzOyAgICAgICAgICAgIAogICAgICAgICAgICAgYmx1ckZpbHRlcigmYmwsIDgsIDIpOwogCi0gICAgICAgICAgICBpZiAobUZsYWdzICYgKERpc3BsYXlIYXJkd2FyZTo6TlBPVF9FWFRFTlNJT04pKSB7CisgICAgICAgICAgICBpZiAoR0xFeHRlbnNpb25zOjpnZXRJbnN0YW5jZSgpLmhhdmVOcG90KCkpIHsKICAgICAgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbVJlYWRGb3JtYXQsIHcsIGgsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBtUmVhZEZvcm1hdCwgbVJlYWRUeXBlLCBwaXhlbHMpOwogICAgICAgICAgICAgICAgIG1XaWR0aFNjYWxlICA9IDEuMGYgLyB3OwpAQCAtMjA2LDggKzIwOCw4IEBACiAKICAgICAgICAgY29uc3QgU3RhdGUmIHMgPSBkcmF3aW5nU3RhdGUoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHMuYWxwaGEgPCAweEZGKSkgewotICAgICAgICAgICAgY29uc3QgR0dMZml4ZWQgYWxwaGEgPSAocy5hbHBoYSA8PCAxNikvMjU1OwotICAgICAgICAgICAgZ2xDb2xvcjR4KDAsIDAsIDAsIGFscGhhKTsKKyAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgYWxwaGEgPSBzLmFscGhhICogKDEuMGYvMjU1LjBmKTsKKyAgICAgICAgICAgIGdsQ29sb3I0ZigwLCAwLCAwLCBhbHBoYSk7CiAgICAgICAgICAgICBnbEVuYWJsZShHTF9CTEVORCk7CiAgICAgICAgICAgICBnbEJsZW5kRnVuYyhHTF9TUkNfQUxQSEEsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogICAgICAgICAgICAgZ2xUZXhFbnZ4KEdMX1RFWFRVUkVfRU5WLCBHTF9URVhUVVJFX0VOVl9NT0RFLCBHTF9SRVBMQUNFKTsKQEAgLTIyNSwzOCArMjI3LDIwIEBACiAgICAgICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwogICAgICAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkodHJhbnNmb3JtZWQoKQotICAgICAgICAgICAgICAgIHx8ICEobUZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpEUkFXX1RFWFRVUkVfRVhURU5TSU9OKSApKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIGEgdmVyeSByYXJlIHNjZW5hcmlvLgotICAgICAgICAgICAgZ2xNYXRyaXhNb2RlKEdMX1RFWFRVUkUpOwotICAgICAgICAgICAgZ2xMb2FkSWRlbnRpdHkoKTsKLSAgICAgICAgICAgIGdsU2NhbGVmKG1XaWR0aFNjYWxlLCBtSGVpZ2h0U2NhbGUsIDEpOwotICAgICAgICAgICAgZ2xUcmFuc2xhdGVmKC14LCBtWU9mZnNldCAtIHksIDApOwotICAgICAgICAgICAgZ2xFbmFibGVDbGllbnRTdGF0ZShHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKLSAgICAgICAgICAgIGdsVmVydGV4UG9pbnRlcigyLCBHTF9GSVhFRCwgMCwgbVZlcnRpY2VzKTsKLSAgICAgICAgICAgIGdsVGV4Q29vcmRQb2ludGVyKDIsIEdMX0ZJWEVELCAwLCBtVmVydGljZXMpOwotICAgICAgICAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewotICAgICAgICAgICAgICAgIGNvbnN0IFJlY3QmIHIgPSAqaXQrKzsKLSAgICAgICAgICAgICAgICBjb25zdCBHTGludCBzeSA9IGZiSGVpZ2h0IC0gKHIudG9wICsgci5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgZ2xTY2lzc29yKHIubGVmdCwgc3ksIHIud2lkdGgoKSwgci5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7IAotICAgICAgICAgICAgfSAgICAgICAKLSAgICAgICAgICAgIGdsRGlzYWJsZUNsaWVudFN0YXRlKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTk9URTogdGhpcyBpcyBtYXJnaW5hbGx5IGZhc3RlciB3aXRoIHRoZSBzb2Z0d2FyZSBnbCwgYmVjYXVzZQotICAgICAgICAgICAgLy8gZ2xSZWFkUGl4ZWxzKCkgcmVhZHMgdGhlIGZiIGJvdHRvbS10by10b3AsIGhvd2V2ZXIgd2UnbGwKLSAgICAgICAgICAgIC8vIHNraXAgYWxsIHRoZSBqYWNjb2JpYW4gY29tcHV0YXRpb25zLgotICAgICAgICAgICAgUmVjdCByOwotICAgICAgICAgICAgR0xpbnQgY3JvcFs0XSA9IHsgMCwgMCwgdywgaCB9OwotICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpdihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0NST1BfUkVDVF9PRVMsIGNyb3ApOwotICAgICAgICAgICAgeSA9IGZiSGVpZ2h0IC0gKHkgKyBoKTsKLSAgICAgICAgICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBSZWN0JiByID0gKml0Kys7Ci0gICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgc3kgPSBmYkhlaWdodCAtIChyLnRvcCArIHIuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGdsU2Npc3NvcihyLmxlZnQsIHN5LCByLndpZHRoKCksIHIuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGdsRHJhd1RleGlPRVMoeCwgeSwgMCwgdywgaCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGdsTWF0cml4TW9kZShHTF9URVhUVVJFKTsKKyAgICAgICAgZ2xMb2FkSWRlbnRpdHkoKTsKKyAgICAgICAgZ2xTY2FsZWYobVdpZHRoU2NhbGUsIG1IZWlnaHRTY2FsZSwgMSk7CisgICAgICAgIGdsVHJhbnNsYXRlZigteCwgbVlPZmZzZXQgLSB5LCAwKTsKKyAgICAgICAgZ2xFbmFibGVDbGllbnRTdGF0ZShHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKKyAgICAgICAgZ2xWZXJ0ZXhQb2ludGVyKDIsIEdMX0ZMT0FULCAwLCBtVmVydGljZXMpOworICAgICAgICBnbFRleENvb3JkUG9pbnRlcigyLCBHTF9GTE9BVCwgMCwgbVZlcnRpY2VzKTsKKyAgICAgICAgd2hpbGUgKGl0ICE9IGVuZCkgeworICAgICAgICAgICAgY29uc3QgUmVjdCYgciA9ICppdCsrOworICAgICAgICAgICAgY29uc3QgR0xpbnQgc3kgPSBmYkhlaWdodCAtIChyLnRvcCArIHIuaGVpZ2h0KCkpOworICAgICAgICAgICAgZ2xTY2lzc29yKHIubGVmdCwgc3ksIHIud2lkdGgoKSwgci5oZWlnaHQoKSk7CisgICAgICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKICAgICAgICAgfQorICAgICAgICBnbERpc2FibGVDbGllbnRTdGF0ZShHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCbHVyLmggYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmx1ci5oCmluZGV4IDViNjNkZWMuLjRjOWVjNjQgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCbHVyLmgKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJsdXIuaApAQCAtMzEsMTggKzMxLDE0IEBACiBjbGFzcyBMYXllckJsdXIgOiBwdWJsaWMgTGF5ZXJCYXNlQ2xpZW50CiB7CiBwdWJsaWM6ICAgIAotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB0eXBlSW5mbzsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZUlEOwotICAgIHZpcnR1YWwgY2hhciBjb25zdCogZ2V0VHlwZUlEKCkgY29uc3QgeyByZXR1cm4gdHlwZUlEOyB9Ci0gICAgdmlydHVhbCB1aW50MzJfdCBnZXRUeXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIHR5cGVJbmZvOyB9Ci0gICAgCiAgICAgICAgICAgICAgICAgTGF5ZXJCbHVyKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgaW50MzJfdCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCk7CiAgICAgICAgIHZpcnR1YWwgfkxheWVyQmx1cigpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uRHJhdyhjb25zdCBSZWdpb24mIGNsaXApIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTZWN1cmUoKSBjb25zdCAgICAgICB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogZ2V0VHlwZUlkKCkgY29uc3QgeyByZXR1cm4gIkxheWVyQmx1ciI7IH0KIAogICAgIHZpcnR1YWwgdWludDMyX3QgZG9UcmFuc2FjdGlvbih1aW50MzJfdCBmbGFncyk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVSZWdpb24oY29uc3QgUmVnaW9uJiB2aXNpYmxlUmVnaW9uKTsKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCdWZmZXIuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJ1ZmZlci5jcHAKaW5kZXggNWMyMTU5My4uNWY4MzYzNjYgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCdWZmZXIuY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCdWZmZXIuY3BwCkBAIC0zOSwxNSArMzksMTMgQEAKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IHVpbnQzMl90IExheWVyQnVmZmVyOjp0eXBlSW5mbyA9IExheWVyQmFzZUNsaWVudDo6dHlwZUluZm8gfCAweDIwOwotY29uc3QgY2hhciogY29uc3QgTGF5ZXJCdWZmZXI6OnR5cGVJRCA9ICJMYXllckJ1ZmZlciI7CiBncmFsbG9jX21vZHVsZV90IGNvbnN0KiBMYXllckJ1ZmZlcjo6c0dyYWxsb2NNb2R1bGUgPSAwOwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogTGF5ZXJCdWZmZXI6OkxheWVyQnVmZmVyKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBpbnQzMl90IGkpCi0gICAgOiBMYXllckJhc2VDbGllbnQoZmxpbmdlciwgZGlzcGxheSwgY2xpZW50LCBpKSwKKyAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50KQorICAgIDogTGF5ZXJCYXNlQ2xpZW50KGZsaW5nZXIsIGRpc3BsYXksIGNsaWVudCksCiAgICAgICBtTmVlZHNCbGVuZGluZyhmYWxzZSksIG1CbGl0RW5naW5lKDApCiB7CiB9CkBAIC02Miw4ICs2MCw3IEBACiB2b2lkIExheWVyQnVmZmVyOjpvbkZpcnN0UmVmKCkKIHsKICAgICBMYXllckJhc2VDbGllbnQ6Om9uRmlyc3RSZWYoKTsKLSAgICBtU3VyZmFjZSA9IG5ldyBTdXJmYWNlTGF5ZXJCdWZmZXIobUZsaW5nZXIsIGNsaWVudEluZGV4KCksCi0gICAgICAgICAgICBjb25zdF9jYXN0PExheWVyQnVmZmVyICo+KHRoaXMpKTsKKyAgICBtU3VyZmFjZSA9IG5ldyBTdXJmYWNlTGF5ZXJCdWZmZXIobUZsaW5nZXIsIHRoaXMpOwogCiAgICAgaHdfbW9kdWxlX3QgY29uc3QqIG1vZHVsZSA9IChod19tb2R1bGVfdCBjb25zdCopc0dyYWxsb2NNb2R1bGU7CiAgICAgaWYgKCFtb2R1bGUpIHsKQEAgLTEyMCw3ICsxMTcsNyBAQAogICAgICAgICBzb3VyY2UtPm9uVHJhbnNhY3Rpb24oZmxhZ3MpOwogICAgIHVpbnQzMl90IHJlcyA9IExheWVyQmFzZTo6ZG9UcmFuc2FjdGlvbihmbGFncyk7CiAgICAgLy8gd2UgYWx3YXlzIHdhbnQgZmlsdGVyaW5nIGZvciB0aGVzZSBzdXJmYWNlcwotICAgIG1Vc2VMaW5lYXJGaWx0ZXJpbmcgPSAhKG1GbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6U0xPV19DT05GSUcpOworICAgIG1OZWVkc0ZpbHRlcmluZyA9ICEobUZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpTTE9XX0NPTkZJRyk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtMTQ1LDE0ICsxNDIsNiBAQAogICAgIH0KIH0KIAotYm9vbCBMYXllckJ1ZmZlcjo6dHJhbnNmb3JtZWQoKSBjb25zdAotewotICAgIHNwPFNvdXJjZT4gc291cmNlKGdldFNvdXJjZSgpKTsKLSAgICBpZiAoTElLRUxZKHNvdXJjZSAhPSAwKSkKLSAgICAgICAgcmV0dXJuIHNvdXJjZS0+dHJhbnNmb3JtZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgTGF5ZXJCdWZmZXI6OnNlcnZlckRlc3Ryb3koKQogewogICAgIHNwPFNvdXJjZT4gc291cmNlKGNsZWFyU291cmNlKCkpOwpAQCAtMjE0LDkgKzIwMyw5IEBACiAvLyBMYXllckJ1ZmZlcjo6U3VyZmFjZUxheWVyQnVmZmVyCiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUxheWVyQnVmZmVyOjpTdXJmYWNlTGF5ZXJCdWZmZXI6OlN1cmZhY2VMYXllckJ1ZmZlcihjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsCi0gICAgICAgIFN1cmZhY2VJRCBpZCwgY29uc3Qgc3A8TGF5ZXJCdWZmZXI+JiBvd25lcikKLSAgICA6IExheWVyQmFzZUNsaWVudDo6U3VyZmFjZShmbGluZ2VyLCBpZCwgb3duZXItPmdldElkZW50aXR5KCksIG93bmVyKQorTGF5ZXJCdWZmZXI6OlN1cmZhY2VMYXllckJ1ZmZlcjo6U3VyZmFjZUxheWVyQnVmZmVyKAorICAgICAgICBjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsIGNvbnN0IHNwPExheWVyQnVmZmVyPiYgb3duZXIpCisgICAgOiBMYXllckJhc2VDbGllbnQ6OlN1cmZhY2UoZmxpbmdlciwgb3duZXItPmdldElkZW50aXR5KCksIG93bmVyKQogewogfQogCkBAIC0zMjEsMTYgKzMxMCwxMiBAQAogfQogdm9pZCBMYXllckJ1ZmZlcjo6U291cmNlOjp1bnJlZ2lzdGVyQnVmZmVycygpIHsKIH0KLWJvb2wgTGF5ZXJCdWZmZXI6OlNvdXJjZTo6dHJhbnNmb3JtZWQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1MYXllci5tVHJhbnNmb3JtZWQ7IAotfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogTGF5ZXJCdWZmZXI6OkJ1ZmZlclNvdXJjZTo6QnVmZmVyU291cmNlKExheWVyQnVmZmVyJiBsYXllciwKICAgICAgICAgY29uc3QgSVN1cmZhY2U6OkJ1ZmZlckhlYXAmIGJ1ZmZlcnMpCi0gICAgOiBTb3VyY2UobGF5ZXIpLCBtU3RhdHVzKE5PX0VSUk9SKSwgbUJ1ZmZlclNpemUoMCksCi0gICAgICBtVXNlRUdMSW1hZ2VEaXJlY3RseSh0cnVlKQorICAgIDogU291cmNlKGxheWVyKSwgbVN0YXR1cyhOT19FUlJPUiksIG1CdWZmZXJTaXplKDApCiB7CiAgICAgaWYgKGJ1ZmZlcnMuaGVhcCA9PSBOVUxMKSB7CiAgICAgICAgIC8vIHRoaXMgaXMgYWxsb3dlZCwgYnV0IGluIHRoaXMgY2FzZSwgaXQgaXMgaWxsZWdhbCB0byByZWNlaXZlCkBAIC0zODgsMTEgKzM3MywxMSBAQAogCiAgICAgaWYgKG1UZXh0dXJlLm5hbWUgIT0gLTFVKSB7CiAgICAgICAgIC8vIEdMIHRleHR1cmVzIGNhbiBvbmx5IGJlIGRlc3Ryb3llZCBmcm9tIHRoZSBHTCB0aHJlYWQKLSAgICAgICAgbUxheWVyLm1GbGluZ2VyLT5tRXZlbnRRdWV1ZS5wb3N0TWVzc2FnZSgKLSAgICAgICAgICAgICAgICBuZXcgTWVzc2FnZURlc3Ryb3lUZXh0dXJlKG1MYXllci5tRmxpbmdlci5nZXQoKSwgbVRleHR1cmUubmFtZSkgKTsKKyAgICAgICAgZ2V0RmxpbmdlcigpLT5tRXZlbnRRdWV1ZS5wb3N0TWVzc2FnZSgKKyAgICAgICAgICAgICAgICBuZXcgTWVzc2FnZURlc3Ryb3lUZXh0dXJlKGdldEZsaW5nZXIoKSwgbVRleHR1cmUubmFtZSkgKTsKICAgICB9CiAgICAgaWYgKG1UZXh0dXJlLmltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpIHsKLSAgICAgICAgRUdMRGlzcGxheSBkcHkobUxheWVyLm1GbGluZ2VyLT5ncmFwaGljUGxhbmUoMCkuZ2V0RUdMRGlzcGxheSgpKTsKKyAgICAgICAgRUdMRGlzcGxheSBkcHkoZ2V0RmxpbmdlcigpLT5ncmFwaGljUGxhbmUoMCkuZ2V0RUdMRGlzcGxheSgpKTsKICAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKGRweSwgbVRleHR1cmUuaW1hZ2UpOwogICAgIH0KIH0KQEAgLTQ0NCwxMSArNDI5LDYgQEAKICAgICBtQnVmZmVyID0gYnVmZmVyOwogfQogCi1ib29sIExheWVyQnVmZmVyOjpCdWZmZXJTb3VyY2U6OnRyYW5zZm9ybWVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUJ1ZmZlckhlYXAudHJhbnNmb3JtID8gdHJ1ZSA6IFNvdXJjZTo6dHJhbnNmb3JtZWQoKTsgCi19Ci0KIHZvaWQgTGF5ZXJCdWZmZXI6OkJ1ZmZlclNvdXJjZTo6b25EcmF3KGNvbnN0IFJlZ2lvbiYgY2xpcCkgY29uc3QgCiB7CiAgICAgc3A8QnVmZmVyPiBvdXJCdWZmZXIoZ2V0QnVmZmVyKCkpOwpAQCAtNDYyLDM1ICs0NDIsMTAgQEAKICAgICBOYXRpdmVCdWZmZXIgc3JjKG91ckJ1ZmZlci0+Z2V0QnVmZmVyKCkpOwogICAgIGNvbnN0IFJlY3QgdHJhbnNmb3JtZWRCb3VuZHMobUxheWVyLmdldFRyYW5zZm9ybWVkQm91bmRzKCkpOwogCi0gICAgaWYgKFVOTElLRUxZKG1UZXh0dXJlLm5hbWUgPT0gLTFMVSkpIHsKLSAgICAgICAgbVRleHR1cmUubmFtZSA9IG1MYXllci5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgfQotCiAjaWYgZGVmaW5lZChFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyKQotICAgIGlmIChtTGF5ZXIubUZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpESVJFQ1RfVEVYVFVSRSkgeworICAgIGlmIChHTEV4dGVuc2lvbnM6OmdldEluc3RhbmNlKCkuaGF2ZURpcmVjdFRleHR1cmUoKSkgewogICAgICAgICBlcnIgPSBJTlZBTElEX09QRVJBVElPTjsKICAgICAgICAgaWYgKG91ckJ1ZmZlci0+c3VwcG9ydHNDb3B5Yml0KCkpIHsKLQotICAgICAgICAgICAgLy8gdGhlcmUgYXJlIGNvbnN0cmFpbnRzIG9uIGJ1ZmZlcnMgdXNlZCBieSB0aGUgR1BVIGFuZCB0aGVzZSBtYXkgbm90Ci0gICAgICAgICAgICAvLyBiZSBob25vcmVkIGhlcmUuIFdlIG5lZWQgdG8gY2hhbmdlIHRoZSBBUEkgc28gdGhlIGJ1ZmZlcnMKLSAgICAgICAgICAgIC8vIGFyZSBhbGxvY2F0ZWQgd2l0aCBncmFsbG9jLiBGb3Igbm93IGRpc2FibGUgdGhpcyBjb2RlLXBhdGgKLSNpZiAwCi0gICAgICAgICAgICAvLyBGaXJzdCwgdHJ5IHRvIHVzZSB0aGUgYnVmZmVyIGFzIGFuIEVHTEltYWdlIGRpcmVjdGx5Ci0gICAgICAgICAgICBpZiAobVVzZUVHTEltYWdlRGlyZWN0bHkpIHsKLSAgICAgICAgICAgICAgICAvLyBOT1RFOiBBc3N1bWUgdGhlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgd2l0aCB0aGUgcHJvcGVyIFVTQUdFIGZsYWdzCi0KLSAgICAgICAgICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXIgPSBuZXcgIEdyYXBoaWNCdWZmZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBzcmMuaW1nLncsIHNyYy5pbWcuaCwgc3JjLmltZy5mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljQnVmZmVyOjpVU0FHRV9IV19URVhUVVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgc3JjLmltZy53LCBzcmMuaW1nLmhhbmRsZSwgZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgZXJyID0gbUxheWVyLmluaXRpYWxpemVFZ2xJbWFnZShidWZmZXIsICZtVGV4dHVyZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVyciAhPSBOT19FUlJPUikgewotICAgICAgICAgICAgICAgICAgICBtVXNlRUdMSW1hZ2VEaXJlY3RseSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNlbmRpZgotCiAgICAgICAgICAgICBjb3B5Yml0X2RldmljZV90KiBjb3B5Yml0ID0gbUxheWVyLm1CbGl0RW5naW5lOwogICAgICAgICAgICAgaWYgKGNvcHliaXQgJiYgZXJyICE9IE5PX0VSUk9SKSB7CiAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIG91ciBFR0xJbWFnZUtIUiB0aGUgZmlyc3QgdGltZQpAQCAtNTI3LDcgKzQ4Miw3IEBACiAgICAgICAgIHQuZm9ybWF0ID0gc3JjLmltZy5mb3JtYXQ7CiAgICAgICAgIHQuZGF0YSA9IChHR0x1Ynl0ZSopc3JjLmltZy5iYXNlOwogICAgICAgICBjb25zdCBSZWdpb24gZGlydHkoUmVjdCh0LndpZHRoLCB0LmhlaWdodCkpOwotICAgICAgICBtTGF5ZXIubG9hZFRleHR1cmUoJm1UZXh0dXJlLCBkaXJ0eSwgdCk7CisgICAgICAgIG1UZXh0dXJlTWFuYWdlci5sb2FkVGV4dHVyZSgmbVRleHR1cmUsIGRpcnR5LCB0KTsKICAgICB9CiAKICAgICBtVGV4dHVyZS50cmFuc2Zvcm0gPSBtQnVmZmVySGVhcC50cmFuc2Zvcm07CkBAIC01NjksNyArNTI0LDcgQEAKICAgICAvLyBmaWd1cmUgb3V0IGlmIHdlIG5lZWQgbGluZWFyIGZpbHRlcmluZwogICAgIGlmIChidWZmZXJzLncgKiBoID09IGJ1ZmZlcnMuaCAqIHcpIHsKICAgICAgICAgLy8gc2FtZSBwaXhlbCBhcmVhLCBkb24ndCB1c2UgZmlsdGVyaW5nCi0gICAgICAgIG1MYXllci5tVXNlTGluZWFyRmlsdGVyaW5nID0gZmFsc2U7CisgICAgICAgIG1MYXllci5tTmVlZHNGaWx0ZXJpbmcgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBFR0xJbWFnZUtIUgpAQCAtNTkzLDcgKzU0OCw4IEBACiAgICAgICAgIGRzdC5jcm9wLnIgPSB3OwogICAgICAgICBkc3QuY3JvcC5iID0gaDsKIAotICAgICAgICBlcnIgPSBtTGF5ZXIuaW5pdGlhbGl6ZUVnbEltYWdlKGJ1ZmZlciwgJm1UZXh0dXJlKTsKKyAgICAgICAgRUdMRGlzcGxheSBkcHkoZ2V0RmxpbmdlcigpLT5ncmFwaGljUGxhbmUoMCkuZ2V0RUdMRGlzcGxheSgpKTsKKyAgICAgICAgZXJyID0gbVRleHR1cmVNYW5hZ2VyLmluaXRFZ2xJbWFnZSgmbVRleHR1cmUsIGRweSwgYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gZXJyOwpAQCAtNjAyLDE0ICs1NTgsMTMgQEAKIHZvaWQgTGF5ZXJCdWZmZXI6OkJ1ZmZlclNvdXJjZTo6Y2xlYXJUZW1wQnVmZmVySW1hZ2UoKSBjb25zdAogewogICAgIC8vIGRlbGV0ZSB0aGUgaW1hZ2UKLSAgICBFR0xEaXNwbGF5IGRweShtTGF5ZXIubUZsaW5nZXItPmdyYXBoaWNQbGFuZSgwKS5nZXRFR0xEaXNwbGF5KCkpOworICAgIEVHTERpc3BsYXkgZHB5KGdldEZsaW5nZXIoKS0+Z3JhcGhpY1BsYW5lKDApLmdldEVHTERpc3BsYXkoKSk7CiAgICAgZWdsRGVzdHJveUltYWdlS0hSKGRweSwgbVRleHR1cmUuaW1hZ2UpOwogCiAgICAgLy8gYW5kIHRoZSBhc3NvY2lhdGVkIHRleHR1cmUgKHJlY3JlYXRlIGEgbmFtZSkKICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZS5uYW1lKTsKICAgICBUZXh0dXJlIGRlZmF1bHRUZXh0dXJlOwogICAgIG1UZXh0dXJlID0gZGVmYXVsdFRleHR1cmU7Ci0gICAgbVRleHR1cmUubmFtZSA9IG1MYXllci5jcmVhdGVUZXh0dXJlKCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjIwLDcgKzU3NSw3IEBACiAgICAgOiBTb3VyY2UobGF5ZXIpLCBtVmlzaWJpbGl0eUNoYW5nZWQoZmFsc2UpLAogICAgIG1PdmVybGF5KDApLCBtT3ZlcmxheUhhbmRsZSgwKSwgbU92ZXJsYXlEZXZpY2UoMCksIG1PcmllbnRhdGlvbihvcmllbnRhdGlvbikKIHsKLSAgICBvdmVybGF5X2NvbnRyb2xfZGV2aWNlX3QqIG92ZXJsYXlfZGV2ID0gbUxheWVyLm1GbGluZ2VyLT5nZXRPdmVybGF5RW5naW5lKCk7CisgICAgb3ZlcmxheV9jb250cm9sX2RldmljZV90KiBvdmVybGF5X2RldiA9IGdldEZsaW5nZXIoKS0+Z2V0T3ZlcmxheUVuZ2luZSgpOwogICAgIGlmIChvdmVybGF5X2RldiA9PSBOVUxMKSB7CiAgICAgICAgIC8vIG92ZXJsYXlzIG5vdCBzdXBwb3J0ZWQKICAgICAgICAgcmV0dXJuOwpAQCAtNjUxLDcgKzYwNiw3IEBACiAKICAgICAqb3ZlcmxheVJlZiA9IG5ldyBPdmVybGF5UmVmKG1PdmVybGF5SGFuZGxlLCBjaGFubmVsLAogICAgICAgICAgICAgbVdpZHRoLCBtSGVpZ2h0LCBtRm9ybWF0LCBtV2lkdGhTdHJpZGUsIG1IZWlnaHRTdHJpZGUpOwotICAgIG1MYXllci5tRmxpbmdlci0+c2lnbmFsRXZlbnQoKTsKKyAgICBnZXRGbGluZ2VyKCktPnNpZ25hbEV2ZW50KCk7CiB9CiAKIExheWVyQnVmZmVyOjpPdmVybGF5U291cmNlOjp+T3ZlcmxheVNvdXJjZSgpCkBAIC02NjUsOSArNjIwLDkgQEAKIHZvaWQgTGF5ZXJCdWZmZXI6Ok92ZXJsYXlTb3VyY2U6Om9uRHJhdyhjb25zdCBSZWdpb24mIGNsaXApIGNvbnN0CiB7CiAgICAgLy8gdGhpcyB3b3VsZCBiZSB3aGVyZSB0aGUgY29sb3Ita2V5IHdvdWxkIGJlIHNldCwgc2hvdWxkIHdlIG5lZWQgaXQuCi0gICAgR0xjbGFtcHggcmVkID0gMDsKLSAgICBHTGNsYW1weCBncmVlbiA9IDA7Ci0gICAgR0xjbGFtcHggYmx1ZSA9IDA7CisgICAgR0xjbGFtcGYgcmVkID0gMDsKKyAgICBHTGNsYW1wZiBncmVlbiA9IDA7CisgICAgR0xjbGFtcGYgYmx1ZSA9IDA7CiAgICAgbUxheWVyLmNsZWFyV2l0aE9wZW5HTChjbGlwLCByZWQsIGdyZWVuLCBibHVlLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJ1ZmZlci5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJ1ZmZlci5oCmluZGV4IGIxNzY2MjMuLjFjMGJmODMgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCdWZmZXIuaAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQnVmZmVyLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIAogI2luY2x1ZGUgIkxheWVyQmFzZS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAKIHN0cnVjdCBjb3B5Yml0X2RldmljZV90OwogCkBAIC00NSwzMSArNDYsMjYgQEAKICAgICAgICAgdmlydHVhbCB2b2lkIG9uVmlzaWJpbGl0eVJlc29sdmVkKGNvbnN0IFRyYW5zZm9ybSYgcGxhbmVUcmFuc2Zvcm0pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEJ1ZmZlcihzc2l6ZV90IG9mZnNldCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQnVmZmVycygpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgdHJhbnNmb3JtZWQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSB7IH0KKyAgICAgICAgU3VyZmFjZUZsaW5nZXIqIGdldEZsaW5nZXIoKSBjb25zdCB7IHJldHVybiBtTGF5ZXIubUZsaW5nZXIuZ2V0KCk7IH0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIExheWVyQnVmZmVyJiBtTGF5ZXI7CiAgICAgfTsKIAogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB0eXBlSW5mbzsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZUlEOwotICAgIHZpcnR1YWwgY2hhciBjb25zdCogZ2V0VHlwZUlEKCkgY29uc3QgeyByZXR1cm4gdHlwZUlEOyB9Ci0gICAgdmlydHVhbCB1aW50MzJfdCBnZXRUeXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIHR5cGVJbmZvOyB9Ci0KICAgICAgICAgICAgIExheWVyQnVmZmVyKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBpbnQzMl90IGkpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQpOwogICAgICAgICB2aXJ0dWFsIH5MYXllckJ1ZmZlcigpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uRmlyc3RSZWYoKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgY2hhciogZ2V0VHlwZUlkKCkgY29uc3QgeyByZXR1cm4gIkxheWVyQnVmZmVyIjsgfQogCiAgICAgdmlydHVhbCBzcDxMYXllckJhc2VDbGllbnQ6OlN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIHN0YXR1c190IGRpdGNoKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uRHJhdyhjb25zdCBSZWdpb24mIGNsaXApIGNvbnN0OwogICAgIHZpcnR1YWwgdWludDMyX3QgZG9UcmFuc2FjdGlvbih1aW50MzJfdCBmbGFncyk7CiAgICAgdmlydHVhbCB2b2lkIHVubG9ja1BhZ2VGbGlwKGNvbnN0IFRyYW5zZm9ybSYgcGxhbmVUcmFuc2Zvcm0sIFJlZ2lvbiYgb3V0RGlydHlSZWdpb24pOwotICAgIHZpcnR1YWwgYm9vbCB0cmFuc2Zvcm1lZCgpIGNvbnN0OwogCiAgICAgc3RhdHVzX3QgcmVnaXN0ZXJCdWZmZXJzKGNvbnN0IElTdXJmYWNlOjpCdWZmZXJIZWFwJiBidWZmZXJzKTsKICAgICB2b2lkIHBvc3RCdWZmZXIoc3NpemVfdCBvZmZzZXQpOwpAQCAtMTMzLDcgKzEyOSw2IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBvbkRyYXcoY29uc3QgUmVnaW9uJiBjbGlwKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RCdWZmZXIoc3NpemVfdCBvZmZzZXQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJ1ZmZlcnMoKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRyYW5zZm9ybWVkKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgeyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdHVzX3QgaW5pdFRlbXBCdWZmZXIoKSBjb25zdDsKQEAgLTE0Myw5ICsxMzgsOSBAQAogICAgICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXM7CiAgICAgICAgIElTdXJmYWNlOjpCdWZmZXJIZWFwICAgICAgICAgICAgbUJ1ZmZlckhlYXA7CiAgICAgICAgIHNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgbUJ1ZmZlclNpemU7Ci0gICAgICAgIG11dGFibGUgTGF5ZXJCYXNlOjpUZXh0dXJlICAgICAgbVRleHR1cmU7CisgICAgICAgIG11dGFibGUgVGV4dHVyZSAgICAgICAgICAgICAgICAgbVRleHR1cmU7CiAgICAgICAgIG11dGFibGUgTmF0aXZlQnVmZmVyICAgICAgICAgICAgbVRlbXBCdWZmZXI7Ci0gICAgICAgIG11dGFibGUgYm9vbCAgICAgICAgICAgICAgICAgICAgbVVzZUVHTEltYWdlRGlyZWN0bHk7CisgICAgICAgIG11dGFibGUgVGV4dHVyZU1hbmFnZXIgICAgICAgICAgbVRleHR1cmVNYW5hZ2VyOwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgT3ZlcmxheVNvdXJjZSA6IHB1YmxpYyBTb3VyY2UgewpAQCAtMTk1LDcgKzE5MCw3IEBACiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU3VyZmFjZUxheWVyQnVmZmVyKGNvbnN0IHNwPFN1cmZhY2VGbGluZ2VyPiYgZmxpbmdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN1cmZhY2VJRCBpZCwgY29uc3Qgc3A8TGF5ZXJCdWZmZXI+JiBvd25lcik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxMYXllckJ1ZmZlcj4mIG93bmVyKTsKICAgICAgICAgdmlydHVhbCB+U3VyZmFjZUxheWVyQnVmZmVyKCk7CiAKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCByZWdpc3RlckJ1ZmZlcnMoY29uc3QgSVN1cmZhY2U6OkJ1ZmZlckhlYXAmIGJ1ZmZlcnMpOwpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckRpbS5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyRGltLmNwcAppbmRleCBmZDYxZTMwLi5hMWYzMzllIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyRGltLmNwcAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyRGltLmNwcApAQCAtMzAsOSArMzAsNiBAQAogbmFtZXNwYWNlIGFuZHJvaWQgewogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IHVpbnQzMl90IExheWVyRGltOjp0eXBlSW5mbyA9IExheWVyQmFzZUNsaWVudDo6dHlwZUluZm8gfCAweDEwOwotY29uc3QgY2hhciogY29uc3QgTGF5ZXJEaW06OnR5cGVJRCA9ICJMYXllckRpbSI7Ci0KIGJvb2wgTGF5ZXJEaW06OnNVc2VUZXh0dXJlOwogR0x1aW50IExheWVyRGltOjpzVGV4SWQ7CiBFR0xJbWFnZUtIUiBMYXllckRpbTo6c0ltYWdlOwpAQCAtNDIsOCArMzksOCBAQAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIExheWVyRGltOjpMYXllckRpbShTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgaW50MzJfdCBpKQotICAgIDogTGF5ZXJCYXNlQ2xpZW50KGZsaW5nZXIsIGRpc3BsYXksIGNsaWVudCwgaSkKKyAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50KQorICAgIDogTGF5ZXJCYXNlQ2xpZW50KGZsaW5nZXIsIGRpc3BsYXksIGNsaWVudCkKIHsKIH0KIApAQCAtNTQsNTQgKzUxLDYgQEAKICAgICBzV2lkdGggPSB3OwogICAgIHNIZWlnaHQgPSBoOwogICAgIHNVc2VUZXh0dXJlID0gZmFsc2U7Ci0gICAgCi0jaWYgZGVmaW5lZChESU1fV0lUSF9URVhUVVJFKSAmJiBkZWZpbmVkKEVHTF9BTkRST0lEX2ltYWdlX25hdGl2ZV9idWZmZXIpCi0KLSN3YXJuaW5nICJ1c2luZyBhIHRleHR1cmUgdG8gaW1wbGVtZW50IExheWVyRGltIgotICAgIAotICAgIC8qIE9uIHNvbWUgaC93IGxpa2UgbXNtN0ssIGl0IGlzIGZhc3RlciB0byB1c2UgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlCi0gICAgICogc29mdHdhcmUgcmVuZGVyZXIgd2lsbCBkZWZlciB0byBjb3B5Yml0LCBmb3IgdGhpcyB0byB3b3JrIHdlIG5lZWQgdG8KLSAgICAgKiB1c2UgYW4gRUdMSW1hZ2UgdGV4dHVyZSBzbyBjb3B5Yml0IGNhbiBhY3R1YWxseSBtYWtlIHVzZSBvZiBpdC4KLSAgICAgKiBUaGlzIGJ1cm5zIGEgZnVsbC1zY3JlZW4gd29ydGggb2YgZ3JhcGhpYyBtZW1vcnkuCi0gICAgICovCi0KLSAgICBjb25zdCBEaXNwbGF5SGFyZHdhcmUmIGh3KGZsaW5nZXItPmdyYXBoaWNQbGFuZSgwKS5kaXNwbGF5SGFyZHdhcmUoKSk7Ci0gICAgdWludDMyX3QgZmxhZ3MgPSBody5nZXRGbGFncygpOwotCi0gICAgaWYgKExJS0VMWShmbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6RElSRUNUX1RFWFRVUkUpKSB7Ci0gICAgICAgIHNwPEdyYXBoaWNCdWZmZXI+IGJ1ZmZlciA9IG5ldyBHcmFwaGljQnVmZmVyKHcsIGgsIFBJWEVMX0ZPUk1BVF9SR0JfNTY1LAotICAgICAgICAgICAgICAgICBHcmFwaGljQnVmZmVyOjpVU0FHRV9TV19XUklURV9PRlRFTiB8Ci0gICAgICAgICAgICAgICAgIEdyYXBoaWNCdWZmZXI6OlVTQUdFX0hXX1RFWFRVUkUpOwotICAgICAgICAKLSAgICAgICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGNsaWVudEJ1ZiA9IGJ1ZmZlci0+Z2V0TmF0aXZlQnVmZmVyKCk7Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmc1RleElkKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBzVGV4SWQpOwotCi0gICAgICAgIEVHTERpc3BsYXkgZHB5ID0gZWdsR2V0Q3VycmVudERpc3BsYXkoKTsKLSAgICAgICAgc0ltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZHB5LCBFR0xfTk9fQ09OVEVYVCwgCi0gICAgICAgICAgICAgICAgRUdMX05BVElWRV9CVUZGRVJfQU5EUk9JRCwgKEVHTENsaWVudEJ1ZmZlciljbGllbnRCdWYsIDApOwotICAgICAgICBpZiAoc0ltYWdlID09IEVHTF9OT19JTUFHRV9LSFIpIHsKLSAgICAgICAgICAgIExPR0UoImVnbENyZWF0ZUltYWdlS0hSKCkgZmFpbGVkLiBlcnI9MHglNHgiLCBlZ2xHZXRFcnJvcigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgKEdMZWdsSW1hZ2VPRVMpc0ltYWdlKTsKLSAgICAgICAgR0xpbnQgZXJyb3IgPSBnbEdldEVycm9yKCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBHTF9OT19FUlJPUikgewotICAgICAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKGRweSwgc0ltYWdlKTsKLSAgICAgICAgICAgIExPR0UoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoKSBmYWlsZWQuIGVycj0weCU0eCIsIGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGluaXRpYWxpemUgdGhlIHRleHR1cmUgd2l0aCB6ZXJvcwotICAgICAgICBHR0xTdXJmYWNlIHQ7Ci0gICAgICAgIGJ1ZmZlci0+bG9jaygmdCwgR1JBTExPQ19VU0FHRV9TV19XUklURV9PRlRFTik7Ci0gICAgICAgIG1lbXNldCh0LmRhdGEsIDAsIHQuc3RyaWRlICogdC5oZWlnaHQgKiAyKTsKLSAgICAgICAgYnVmZmVyLT51bmxvY2soKTsKLSAgICAgICAgc1VzZVRleHR1cmUgPSB0cnVlOwotICAgIH0KLSNlbmRpZgogfQogCiBMYXllckRpbTo6fkxheWVyRGltKCkKQEAgLTExNSwzMyArNjQsMTkgQEAKICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGNvbnN0IGVuZCA9IGNsaXAuZW5kKCk7CiAgICAgaWYgKHMuYWxwaGE+MCAmJiAoaXQgIT0gZW5kKSkgewogICAgICAgICBjb25zdCBEaXNwbGF5SGFyZHdhcmUmIGh3KGdyYXBoaWNQbGFuZSgwKS5kaXNwbGF5SGFyZHdhcmUoKSk7Ci0gICAgICAgIGNvbnN0IEdHTGZpeGVkIGFscGhhID0gKHMuYWxwaGEgPDwgMTYpLzI1NTsKKyAgICAgICAgY29uc3QgR0xmbG9hdCBhbHBoYSA9IHMuYWxwaGEvMjU1LjBmOwogICAgICAgICBjb25zdCB1aW50MzJfdCBmYkhlaWdodCA9IGh3LmdldEhlaWdodCgpOwogICAgICAgICBnbERpc2FibGUoR0xfRElUSEVSKTsKICAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwogICAgICAgICBnbEJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwotICAgICAgICBnbENvbG9yNHgoMCwgMCwgMCwgYWxwaGEpOwotICAgICAgICAKLSNpZiBkZWZpbmVkKERJTV9XSVRIX1RFWFRVUkUpICYmIGRlZmluZWQoRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlcikKLSAgICAgICAgaWYgKHNVc2VUZXh0dXJlKSB7Ci0gICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHNUZXhJZCk7Ci0gICAgICAgICAgICBnbEVuYWJsZShHTF9URVhUVVJFXzJEKTsKLSAgICAgICAgICAgIGdsVGV4RW52eChHTF9URVhUVVJFX0VOViwgR0xfVEVYVFVSRV9FTlZfTU9ERSwgR0xfUkVQTEFDRSk7Ci0gICAgICAgICAgICBjb25zdCBHTHNob3J0IHRleENvb3Jkc1s0XVsyXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgeyAwLCAgMCB9LAotICAgICAgICAgICAgICAgICAgICB7IDAsICAxIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgMSwgIDEgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAxLCAgMCB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgZ2xNYXRyaXhNb2RlKEdMX1RFWFRVUkUpOwotICAgICAgICAgICAgZ2xMb2FkSWRlbnRpdHkoKTsKLSAgICAgICAgICAgIGdsRW5hYmxlQ2xpZW50U3RhdGUoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7Ci0gICAgICAgICAgICBnbFRleENvb3JkUG9pbnRlcigyLCBHTF9TSE9SVCwgMCwgdGV4Q29vcmRzKTsKLSAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX1RFWFRVUkVfMkQpOworICAgICAgICBnbENvbG9yNGYoMCwgMCwgMCwgYWxwaGEpOworCisjaWYgZGVmaW5lZChHTF9PRVNfdGV4dHVyZV9leHRlcm5hbCkKKyAgICAgICAgaWYgKEdMRXh0ZW5zaW9uczo6Z2V0SW5zdGFuY2UoKS5oYXZlVGV4dHVyZUV4dGVybmFsKCkpIHsKKyAgICAgICAgICAgIGdsRGlzYWJsZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUyk7CiAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBnbERpc2FibGUoR0xfVEVYVFVSRV8yRCk7CiAKICAgICAgICAgR0xzaG9ydCB3ID0gc1dpZHRoOwogICAgICAgICBHTHNob3J0IGggPSBzSGVpZ2h0OwpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckRpbS5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckRpbS5oCmluZGV4IGQ0NjcyYTEuLmYwMzIzMTQgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJEaW0uaAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyRGltLmgKQEAgLTM3LDE4ICszNywxNCBAQAogICAgIHN0YXRpYyBpbnQzMl90IHNXaWR0aDsKICAgICBzdGF0aWMgaW50MzJfdCBzSGVpZ2h0OwogcHVibGljOiAgICAKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgdHlwZUluZm87Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVJRDsKLSAgICB2aXJ0dWFsIGNoYXIgY29uc3QqIGdldFR5cGVJRCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVJRDsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgZ2V0VHlwZUluZm8oKSBjb25zdCB7IHJldHVybiB0eXBlSW5mbzsgfQotICAgIAogICAgICAgICAgICAgICAgIExheWVyRGltKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgaW50MzJfdCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCk7CiAgICAgICAgIHZpcnR1YWwgfkxheWVyRGltKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb25EcmF3KGNvbnN0IFJlZ2lvbiYgY2xpcCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCAgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NlY3VyZSgpIGNvbnN0ICAgICAgIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBnZXRUeXBlSWQoKSBjb25zdCB7IHJldHVybiAiTGF5ZXJEaW0iOyB9CiAKICAgICBzdGF0aWMgdm9pZCBpbml0RGltbWVyKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCB1aW50MzJfdCB3LCB1aW50MzJfdCBoKTsKIH07CmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL01lc3NhZ2VRdWV1ZS5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyL01lc3NhZ2VRdWV1ZS5jcHAKaW5kZXggYjQzZDgwMS4uZDY2OGU4OCAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9NZXNzYWdlUXVldWUuY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTWVzc2FnZVF1ZXVlLmNwcApAQCAtNjAsOSArNjAsOSBAQAogewogfQogCi1NZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSBNZXNzYWdlUXVldWU6OndhaXRNZXNzYWdlKG5zZWNzX3QgdGltZW91dCkKK3NwPE1lc3NhZ2VCYXNlPiBNZXNzYWdlUXVldWU6OndhaXRNZXNzYWdlKG5zZWNzX3QgdGltZW91dCkKIHsKLSAgICBNZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSByZXN1bHQ7CisgICAgc3A8TWVzc2FnZUJhc2U+IHJlc3VsdDsKIAogICAgIGJvb2wgYWdhaW47CiAgICAgZG8gewpAQCAtMTMyLDYgKzEzMiw3IEBACiAgICAgICAgIGlmIChhZ2FpbikgewogICAgICAgICAgICAgLy8gdGhlIG1lc3NhZ2UgaGFzIGJlZW4gcHJvY2Vzc2VkLiByZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gaXQKICAgICAgICAgICAgIC8vIHdpdGhvdXQgaG9sZGluZyB0aGUgbG9jay4KKyAgICAgICAgICAgIHJlc3VsdC0+bm90aWZ5KCk7CiAgICAgICAgICAgICByZXN1bHQgPSAwOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTQxLDcgKzE0Miw3IEBACiB9CiAKIHN0YXR1c190IE1lc3NhZ2VRdWV1ZTo6cG9zdE1lc3NhZ2UoCi0gICAgICAgIGNvbnN0IE1lc3NhZ2VMaXN0Ojp2YWx1ZV90eXBlJiBtZXNzYWdlLCBuc2Vjc190IHJlbFRpbWUsIHVpbnQzMl90IGZsYWdzKQorICAgICAgICBjb25zdCBzcDxNZXNzYWdlQmFzZT4mIG1lc3NhZ2UsIG5zZWNzX3QgcmVsVGltZSwgdWludDMyX3QgZmxhZ3MpCiB7CiAgICAgcmV0dXJuIHF1ZXVlTWVzc2FnZShtZXNzYWdlLCByZWxUaW1lLCBmbGFncyk7CiB9CkBAIC0xNTQsNyArMTU1LDcgQEAKIH0KIAogc3RhdHVzX3QgTWVzc2FnZVF1ZXVlOjpxdWV1ZU1lc3NhZ2UoCi0gICAgICAgIGNvbnN0IE1lc3NhZ2VMaXN0Ojp2YWx1ZV90eXBlJiBtZXNzYWdlLCBuc2Vjc190IHJlbFRpbWUsIHVpbnQzMl90IGZsYWdzKQorICAgICAgICBjb25zdCBzcDxNZXNzYWdlQmFzZT4mIG1lc3NhZ2UsIG5zZWNzX3QgcmVsVGltZSwgdWludDMyX3QgZmxhZ3MpCiB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKICAgICBtZXNzYWdlLT53aGVuID0gc3lzdGVtVGltZSgpICsgcmVsVGltZTsKQEAgLTE2NywxMyArMTY4LDEzIEBACiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCi12b2lkIE1lc3NhZ2VRdWV1ZTo6ZHVtcChjb25zdCBNZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSYgbWVzc2FnZSkKK3ZvaWQgTWVzc2FnZVF1ZXVlOjpkdW1wKGNvbnN0IHNwPE1lc3NhZ2VCYXNlPiYgbWVzc2FnZSkKIHsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgIGR1bXBMb2NrZWQobWVzc2FnZSk7CiB9CiAKLXZvaWQgTWVzc2FnZVF1ZXVlOjpkdW1wTG9ja2VkKGNvbnN0IE1lc3NhZ2VMaXN0Ojp2YWx1ZV90eXBlJiBtZXNzYWdlKQordm9pZCBNZXNzYWdlUXVldWU6OmR1bXBMb2NrZWQoY29uc3Qgc3A8TWVzc2FnZUJhc2U+JiBtZXNzYWdlKQogewogICAgIExJU1Q6OmNvbnN0X2l0ZXJhdG9yIGN1cihtTWVzc2FnZXMuYmVnaW4oKSk7CiAgICAgTElTVDo6Y29uc3RfaXRlcmF0b3IgZW5kKG1NZXNzYWdlcy5lbmQoKSk7CmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL01lc3NhZ2VRdWV1ZS5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9NZXNzYWdlUXVldWUuaAppbmRleCBkYzgxMzhkLi44OTBmODA5IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL01lc3NhZ2VRdWV1ZS5oCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTWVzc2FnZVF1ZXVlLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDx1dGlscy9UaW1lcnMuaD4KICNpbmNsdWRlIDx1dGlscy9MaXN0Lmg+CiAKKyNpbmNsdWRlICJCYXJyaWVyLmgiCiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIApAQCAtMzcsNyArMzgsNiBAQAogICAgIExpc3Q8IHNwPE1lc3NhZ2VCYXNlPiA+IG1MaXN0OwogICAgIHR5cGVkZWYgTGlzdDwgc3A8TWVzc2FnZUJhc2U+ID4gTElTVDsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHNwPE1lc3NhZ2VCYXNlPiB2YWx1ZV90eXBlOwogICAgIGlubGluZSBMSVNUOjppdGVyYXRvciBiZWdpbigpICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1MaXN0LmJlZ2luKCk7IH0KICAgICBpbmxpbmUgTElTVDo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCAgICB7IHJldHVybiBtTGlzdC5iZWdpbigpOyB9CiAgICAgaW5saW5lIExJU1Q6Oml0ZXJhdG9yIGVuZCgpICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbUxpc3QuZW5kKCk7IH0KQEAgLTYzLDExICs2MywxOSBAQAogICAgIAogICAgIC8vIHJldHVybiB0cnVlIGlmIG1lc3NhZ2UgaGFzIGEgaGFuZGxlcgogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVyKCkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIHdhaXRzIGZvciB0aGUgaGFuZGxlciB0byBiZSBwcm9jZXNzZWQKKyAgICB2b2lkIHdhaXQoKSBjb25zdCB7IGJhcnJpZXIud2FpdCgpOyB9CiAgICAgCisgICAgLy8gcmVsZWFzZXMgYWxsIHdhaXRlcnMuIHRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGlmCisgICAgLy8gaGFuZGxlciByZXR1cm5zIHRydWUKKyAgICB2b2lkIG5vdGlmeSgpIGNvbnN0IHsgYmFycmllci5vcGVuKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VCYXNlKCkgeyB9CiAKIHByaXZhdGU6CisgICAgbXV0YWJsZSBCYXJyaWVyIGJhcnJpZXI7CiAgICAgZnJpZW5kIGNsYXNzIExpZ2h0UmVmQmFzZTxNZXNzYWdlQmFzZT47CiB9OwogCkBAIC04Miw0MiArOTAsMzMgQEAKICAgICB0eXBlZGVmIExpc3Q8IHNwPE1lc3NhZ2VCYXNlPiA+IExJU1Q7CiBwdWJsaWM6CiAKLSAgICAvLyB0aGlzIGlzIGEgd29yay1hcm91bmQgdGhlIG11bHRpY2hhciBjb25zdGFudCB3YXJuaW5nLiBBIG1hY3JvIHdvdWxkCi0gICAgLy8gd29yayB0b28sIGJ1dCB3b3VsZCBwb2xsdXRlIHRoZSBuYW1lc3BhY2UuCi0gICAgdGVtcGxhdGUgPGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkPgotICAgIHN0cnVjdCBXSEFUIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IFZhbHVlID0gCi0gICAgICAgICAgICAodWludDMyX3QoYSYweGZmKTw8MjQpfCh1aW50MzJfdChiJjB4ZmYpPDwxNil8Ci0gICAgICAgICAgICAodWludDMyX3QoYyYweGZmKTw8OCl8dWludDMyX3QoZCYweGZmKTsKLSAgICB9OwotICAgIAogICAgIE1lc3NhZ2VRdWV1ZSgpOwogICAgIH5NZXNzYWdlUXVldWUoKTsKIAogICAgIC8vIHByZS1kZWZpbmVkIG1lc3NhZ2VzCiAgICAgZW51bSB7Ci0gICAgICAgIElOVkFMSURBVEUgPSBXSEFUPCdfJywncCcsJ2QnLCd0Jz46OlZhbHVlCisgICAgICAgIElOVkFMSURBVEUgPSAnX3VwZCcKICAgICB9OwogCi0gICAgTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUgd2FpdE1lc3NhZ2UobnNlY3NfdCB0aW1lb3V0ID0gLTEpOworICAgIHNwPE1lc3NhZ2VCYXNlPiB3YWl0TWVzc2FnZShuc2Vjc190IHRpbWVvdXQgPSAtMSk7CiAgICAgCi0gICAgc3RhdHVzX3QgcG9zdE1lc3NhZ2UoY29uc3QgTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUmIG1lc3NhZ2UsIAorICAgIHN0YXR1c190IHBvc3RNZXNzYWdlKGNvbnN0IHNwPE1lc3NhZ2VCYXNlPiYgbWVzc2FnZSwKICAgICAgICAgICAgIG5zZWNzX3QgcmVsdGltZT0wLCB1aW50MzJfdCBmbGFncyA9IDApOwotICAgICAgICAKKwogICAgIHN0YXR1c190IGludmFsaWRhdGUoKTsKICAgICAKLSAgICB2b2lkIGR1bXAoY29uc3QgTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUmIG1lc3NhZ2UpOworICAgIHZvaWQgZHVtcChjb25zdCBzcDxNZXNzYWdlQmFzZT4mIG1lc3NhZ2UpOwogCiBwcml2YXRlOgotICAgIHN0YXR1c190IHF1ZXVlTWVzc2FnZShjb25zdCBNZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSYgbWVzc2FnZSwKKyAgICBzdGF0dXNfdCBxdWV1ZU1lc3NhZ2UoY29uc3Qgc3A8TWVzc2FnZUJhc2U+JiBtZXNzYWdlLAogICAgICAgICAgICAgbnNlY3NfdCByZWx0aW1lLCB1aW50MzJfdCBmbGFncyk7Ci0gICAgdm9pZCBkdW1wTG9ja2VkKGNvbnN0IE1lc3NhZ2VMaXN0Ojp2YWx1ZV90eXBlJiBtZXNzYWdlKTsKKyAgICB2b2lkIGR1bXBMb2NrZWQoY29uc3Qgc3A8TWVzc2FnZUJhc2U+JiBtZXNzYWdlKTsKICAgICAKICAgICBNdXRleCAgICAgICAgICAgbUxvY2s7CiAgICAgQ29uZGl0aW9uICAgICAgIG1Db25kaXRpb247CiAgICAgTWVzc2FnZUxpc3QgICAgIG1NZXNzYWdlczsKICAgICBib29sICAgICAgICAgICAgbUludmFsaWRhdGU7Ci0gICAgTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUgbUludmFsaWRhdGVNZXNzYWdlOworICAgIHNwPE1lc3NhZ2VCYXNlPiBtSW52YWxpZGF0ZU1lc3NhZ2U7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUZsaW5nZXIuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9TdXJmYWNlRmxpbmdlci5jcHAKaW5kZXggMDcyMmZkYS4uNjhlOGYxOSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9TdXJmYWNlRmxpbmdlci5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9TdXJmYWNlRmxpbmdlci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxHTEVTL2dsLmg+CiAKICNpbmNsdWRlICJjbHouaCIKKyNpbmNsdWRlICJHTEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJMYXllci5oIgogI2luY2x1ZGUgIkxheWVyQmx1ci5oIgogI2luY2x1ZGUgIkxheWVyQnVmZmVyLmgiCkBAIC0yMDYsOCArMjA3LDggQEAKICAgICBwcm9wZXJ0eV9nZXQoImRlYnVnLnNmLnNob3diYWNrZ3JvdW5kIiwgdmFsdWUsICIwIik7CiAgICAgbURlYnVnQmFja2dyb3VuZCA9IGF0b2kodmFsdWUpOwogCi0gICAgTE9HSV9JRihtRGVidWdSZWdpb24sICAgICAgICAgICAic2hvd3VwZGF0ZXMgZW5hYmxlZCIpOwotICAgIExPR0lfSUYobURlYnVnQmFja2dyb3VuZCwgICAgICAgInNob3diYWNrZ3JvdW5kIGVuYWJsZWQiKTsKKyAgICBMT0dJX0lGKG1EZWJ1Z1JlZ2lvbiwgICAgICAgInNob3d1cGRhdGVzIGVuYWJsZWQiKTsKKyAgICBMT0dJX0lGKG1EZWJ1Z0JhY2tncm91bmQsICAgInNob3diYWNrZ3JvdW5kIGVuYWJsZWQiKTsKIH0KIAogU3VyZmFjZUZsaW5nZXI6On5TdXJmYWNlRmxpbmdlcigpCkBAIC0yMjUsNTYgKzIyNiwyOSBAQAogICAgIHJldHVybiBtU2VydmVySGVhcDsKIH0KIAotc3A8SVN1cmZhY2VGbGluZ2VyQ2xpZW50PiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlQ29ubmVjdGlvbigpCitzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlQ29ubmVjdGlvbigpCiB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1TdGF0ZUxvY2spOwotICAgIHVpbnQzMl90IHRva2VuID0gbVRva2Vucy5hY3F1aXJlKCk7Ci0KLSAgICBzcDxDbGllbnQ+IGNsaWVudCA9IG5ldyBDbGllbnQodG9rZW4sIHRoaXMpOwotICAgIGlmIChjbGllbnQtPmN0cmxibGsgPT0gMCkgewotICAgICAgICBtVG9rZW5zLnJlbGVhc2UodG9rZW4pOwotICAgICAgICByZXR1cm4gMDsKKyAgICBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBiY2xpZW50OworICAgIHNwPENsaWVudD4gY2xpZW50KG5ldyBDbGllbnQodGhpcykpOworICAgIHN0YXR1c190IGVyciA9IGNsaWVudC0+aW5pdENoZWNrKCk7CisgICAgaWYgKGVyciA9PSBOT19FUlJPUikgeworICAgICAgICBiY2xpZW50ID0gY2xpZW50OwogICAgIH0KLSAgICBzdGF0dXNfdCBlcnIgPSBtQ2xpZW50c01hcC5hZGQodG9rZW4sIGNsaWVudCk7Ci0gICAgaWYgKGVyciA8IDApIHsKLSAgICAgICAgbVRva2Vucy5yZWxlYXNlKHRva2VuKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHNwPEJDbGllbnQ+IGJjbGllbnQgPQotICAgICAgICBuZXcgQkNsaWVudCh0aGlzLCB0b2tlbiwgY2xpZW50LT5nZXRDb250cm9sQmxvY2tNZW1vcnkoKSk7CiAgICAgcmV0dXJuIGJjbGllbnQ7CiB9CiAKLXZvaWQgU3VyZmFjZUZsaW5nZXI6OmRlc3Ryb3lDb25uZWN0aW9uKENsaWVudElEIGNpZCkKK3NwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IFN1cmZhY2VGbGluZ2VyOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKCkKIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN0YXRlTG9jayk7Ci0gICAgc3A8Q2xpZW50PiBjbGllbnQgPSBtQ2xpZW50c01hcC52YWx1ZUZvcihjaWQpOwotICAgIGlmIChjbGllbnQgIT0gMCkgewotICAgICAgICAvLyBmcmVlIGFsbCB0aGUgbGF5ZXJzIHRoaXMgY2xpZW50IG93bnMKLSAgICAgICAgVmVjdG9yPCB3cDxMYXllckJhc2VDbGllbnQ+ID4gbGF5ZXJzKGNsaWVudC0+Z2V0TGF5ZXJzKCkpOwotICAgICAgICBjb25zdCBzaXplX3QgY291bnQgPSBsYXllcnMuc2l6ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7Ci0gICAgICAgICAgICBzcDxMYXllckJhc2VDbGllbnQ+IGxheWVyKGxheWVyc1tpXS5wcm9tb3RlKCkpOwotICAgICAgICAgICAgaWYgKGxheWVyICE9IDApIHsKLSAgICAgICAgICAgICAgICBwdXJnYXRvcml6ZUxheWVyX2wobGF5ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjbGllbnQgd2lsbCBiZSBmcmVlZAotICAgICAgICAvLyBkdXJpbmcgdGhlIG5leHQgdHJhbnNhY3Rpb24sIGFmdGVyIHRoZXNlIHN1cmZhY2VzIGhhdmUgYmVlbgotICAgICAgICAvLyBwcm9wZXJseSByZW1vdmVkIGZyb20gdGhlIHNjcmVlbgotCi0gICAgICAgIC8vIHJlbW92ZSB0aGlzIGNsaWVudCBmcm9tIG91ciBDbGllbnRJRC0+Q2xpZW50IG1hcHBpbmcuCi0gICAgICAgIG1DbGllbnRzTWFwLnJlbW92ZUl0ZW0oY2lkKTsKLQotICAgICAgICAvLyBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIGRpc2Nvbm5lY3RlZCBjbGllbnRzCi0gICAgICAgIG1EaXNjb25uZWN0ZWRDbGllbnRzLmFkZChjbGllbnQpOwotCi0gICAgICAgIC8vIHJlcXVlc3QgYSB0cmFuc2FjdGlvbgotICAgICAgICBzZXRUcmFuc2FjdGlvbkZsYWdzKGVUcmFuc2FjdGlvbk5lZWRlZCk7CisgICAgc3A8SVN1cmZhY2VDb21wb3NlckNsaWVudD4gYmNsaWVudDsKKyAgICBzcDxVc2VyQ2xpZW50PiBjbGllbnQobmV3IFVzZXJDbGllbnQodGhpcykpOworICAgIHN0YXR1c190IGVyciA9IGNsaWVudC0+aW5pdENoZWNrKCk7CisgICAgaWYgKGVyciA9PSBOT19FUlJPUikgeworICAgICAgICBiY2xpZW50ID0gY2xpZW50OwogICAgIH0KKyAgICByZXR1cm4gYmNsaWVudDsKIH0KIAorCiBjb25zdCBHcmFwaGljUGxhbmUmIFN1cmZhY2VGbGluZ2VyOjpncmFwaGljUGxhbmUoaW50IGRweSkgY29uc3QKIHsKICAgICBMT0dFX0lGKHVpbnQzMl90KGRweSkgPj0gRElTUExBWV9DT1VOVCwgIkludmFsaWQgRGlzcGxheUlEICVkIiwgZHB5KTsKQEAgLTM1NywxNiArMzMxLDggQEAKICAgICBkY2Jsay0+eWRwaSAgICAgICAgID0gaHcuZ2V0RHBpWSgpOwogICAgIGRjYmxrLT5mcHMgICAgICAgICAgPSBody5nZXRSZWZyZXNoUmF0ZSgpOwogICAgIGRjYmxrLT5kZW5zaXR5ICAgICAgPSBody5nZXREZW5zaXR5KCk7Ci0gICAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKIAogICAgIC8vIEluaXRpYWxpemUgT3BlbkdMfEVTCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwotICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleEVudngoR0xfVEVYVFVSRV9FTlYsIEdMX1RFWFRVUkVfRU5WX01PREUsIEdMX1JFUExBQ0UpOwogICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgNCk7CiAgICAgZ2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7IAogICAgIGdsRW5hYmxlQ2xpZW50U3RhdGUoR0xfVkVSVEVYX0FSUkFZKTsKQEAgLTQyNyw3ICszOTMsNyBAQAogICAgICAgICAgICAgdGltZW91dCA9IHdhaXRUaW1lPjAgPyB3YWl0VGltZSA6IDA7CiAgICAgICAgIH0KIAotICAgICAgICBNZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSBtc2cgPSBtRXZlbnRRdWV1ZS53YWl0TWVzc2FnZSh0aW1lb3V0KTsKKyAgICAgICAgc3A8TWVzc2FnZUJhc2U+IG1zZyA9IG1FdmVudFF1ZXVlLndhaXRNZXNzYWdlKHRpbWVvdXQpOwogCiAgICAgICAgIC8vIHNlZSBpZiB3ZSB0aW1lZCBvdXQKICAgICAgICAgaWYgKGlzRnJvemVuKCkpIHsKQEAgLTQ2Miw5ICs0MjgsMjAgQEAKICAgICBjb25zdF9jYXN0PFN1cmZhY2VGbGluZ2VyKj4odGhpcyktPnNpZ25hbEV2ZW50KCk7CiB9CiAKLXZvaWQgU3VyZmFjZUZsaW5nZXI6OnNpZ25hbERlbGF5ZWRFdmVudChuc2Vjc190IGRlbGF5KQorc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OnBvc3RNZXNzYWdlQXN5bmMoY29uc3Qgc3A8TWVzc2FnZUJhc2U+JiBtc2csCisgICAgICAgIG5zZWNzX3QgcmVsdGltZSwgdWludDMyX3QgZmxhZ3MpCiB7Ci0gICAgbUV2ZW50UXVldWUucG9zdE1lc3NhZ2UoIG5ldyBNZXNzYWdlQmFzZShNZXNzYWdlUXVldWU6OklOVkFMSURBVEUpLCBkZWxheSk7CisgICAgcmV0dXJuIG1FdmVudFF1ZXVlLnBvc3RNZXNzYWdlKG1zZywgcmVsdGltZSwgZmxhZ3MpOworfQorCitzdGF0dXNfdCBTdXJmYWNlRmxpbmdlcjo6cG9zdE1lc3NhZ2VTeW5jKGNvbnN0IHNwPE1lc3NhZ2VCYXNlPiYgbXNnLAorICAgICAgICBuc2Vjc190IHJlbHRpbWUsIHVpbnQzMl90IGZsYWdzKQoreworICAgIHN0YXR1c190IHJlcyA9IG1FdmVudFF1ZXVlLnBvc3RNZXNzYWdlKG1zZywgcmVsdGltZSwgZmxhZ3MpOworICAgIGlmIChyZXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgbXNnLT53YWl0KCk7CisgICAgfQorICAgIHJldHVybiByZXM7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY1NSwxMCArNjMyLDYgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICAvLyBnZXQgcmlkIG9mIGFsbCByZXNvdXJjZXMgd2UgZG9uJ3QgbmVlZCBhbnltb3JlCi0gICAgICAgIC8vIChsYXllcnMgYW5kIGNsaWVudHMpCi0gICAgICAgIGZyZWVfcmVzb3VyY2VzX2woKTsKICAgICB9CiAKICAgICBjb21taXRUcmFuc2FjdGlvbigpOwpAQCAtODA1LDcgKzc3OCw4IEBACiB2b2lkIFN1cmZhY2VGbGluZ2VyOjpoYW5kbGVQYWdlRmxpcCgpCiB7CiAgICAgYm9vbCB2aXNpYmxlUmVnaW9ucyA9IG1WaXNpYmxlUmVnaW9uc0RpcnR5OwotICAgIExheWVyVmVjdG9yJiBjdXJyZW50TGF5ZXJzID0gY29uc3RfY2FzdDxMYXllclZlY3RvciY+KG1EcmF3aW5nU3RhdGUubGF5ZXJzU29ydGVkQnlaKTsKKyAgICBMYXllclZlY3RvciYgY3VycmVudExheWVycyA9IGNvbnN0X2Nhc3Q8TGF5ZXJWZWN0b3ImPigKKyAgICAgICAgICAgIG1EcmF3aW5nU3RhdGUubGF5ZXJzU29ydGVkQnlaKTsKICAgICB2aXNpYmxlUmVnaW9ucyB8PSBsb2NrUGFnZUZsaXAoY3VycmVudExheWVycyk7CiAKICAgICAgICAgY29uc3QgRGlzcGxheUhhcmR3YXJlJiBodyA9IGdyYXBoaWNQbGFuZSgwKS5kaXNwbGF5SGFyZHdhcmUoKTsKQEAgLTgyNyw3ICs4MDEsNyBAQAogICAgIHNpemVfdCBjb3VudCA9IGN1cnJlbnRMYXllcnMuc2l6ZSgpOwogICAgIHNwPExheWVyQmFzZT4gY29uc3QqIGxheWVycyA9IGN1cnJlbnRMYXllcnMuYXJyYXkoKTsKICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyID0gbGF5ZXJzW2ldOworICAgICAgICBjb25zdCBzcDxMYXllckJhc2U+JiBsYXllcihsYXllcnNbaV0pOwogICAgICAgICBsYXllci0+bG9ja1BhZ2VGbGlwKHJlY29tcHV0ZVZpc2libGVSZWdpb25zKTsKICAgICB9CiAgICAgcmV0dXJuIHJlY29tcHV0ZVZpc2libGVSZWdpb25zOwpAQCAtODQwLDcgKzgxNCw3IEBACiAgICAgc2l6ZV90IGNvdW50ID0gY3VycmVudExheWVycy5zaXplKCk7CiAgICAgc3A8TGF5ZXJCYXNlPiBjb25zdCogbGF5ZXJzID0gY3VycmVudExheWVycy5hcnJheSgpOwogICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8Y291bnQgOyBpKyspIHsKLSAgICAgICAgY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIgPSBsYXllcnNbaV07CisgICAgICAgIGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKGxheWVyc1tpXSk7CiAgICAgICAgIGxheWVyLT51bmxvY2tQYWdlRmxpcChwbGFuZVRyYW5zZm9ybSwgbURpcnR5UmVnaW9uKTsKICAgICB9CiB9CkBAIC04NzIsNyArODQ2LDcgQEAKICAgICAgICAgLy8gdGFrZXMgYSByZWN0YW5nbGUsIHdlIG11c3QgbWFrZSBzdXJlIHRvIHVwZGF0ZSB0aGF0IHdob2xlCiAgICAgICAgIC8vIHJlY3RhbmdsZSBpbiB0aGF0IGNhc2UKICAgICAgICAgaWYgKGZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpTV0FQX1JFQ1RBTkdMRSkgewotICAgICAgICAgICAgLy8gRklYTUU6IHdlIHJlYWxseSBzaG91bGQgYmUgYWJsZSB0byBwYXNzIGEgcmVnaW9uIHRvCisgICAgICAgICAgICAvLyBUT0RPOiB3ZSByZWFsbHkgc2hvdWxkIGJlIGFibGUgdG8gcGFzcyBhIHJlZ2lvbiB0bwogICAgICAgICAgICAgLy8gU1dBUF9SRUNUQU5HTEUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHJlZHJhdyBhbGwgdGhpcy4KICAgICAgICAgICAgIG1EaXJ0eVJlZ2lvbi5zZXQobUludmFsaWRSZWdpb24uYm91bmRzKCkpOwogICAgICAgICB9IGVsc2UgewpAQCAtOTM4LDE3ICs5MTIsMTggQEAKIAogdm9pZCBTdXJmYWNlRmxpbmdlcjo6ZGVidWdGbGFzaFJlZ2lvbnMoKQogewotICAgICBjb25zdCBEaXNwbGF5SGFyZHdhcmUmIGh3KGdyYXBoaWNQbGFuZSgwKS5kaXNwbGF5SGFyZHdhcmUoKSk7Ci0gICAgIGNvbnN0IHVpbnQzMl90IGZsYWdzID0gaHcuZ2V0RmxhZ3MoKTsKKyAgICBjb25zdCBEaXNwbGF5SGFyZHdhcmUmIGh3KGdyYXBoaWNQbGFuZSgwKS5kaXNwbGF5SGFyZHdhcmUoKSk7CisgICAgY29uc3QgdWludDMyX3QgZmxhZ3MgPSBody5nZXRGbGFncygpOwogCi0gICAgIGlmICghKChmbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6U1dBUF9SRUNUQU5HTEUpIHx8Ci0gICAgICAgICAgICAgKGZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpCVUZGRVJfUFJFU0VSVkVEKSkpIHsKLSAgICAgICAgIGNvbnN0IFJlZ2lvbiByZXBhaW50KChmbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6UEFSVElBTF9VUERBVEVTKSA/Ci0gICAgICAgICAgICAgICAgIG1EaXJ0eVJlZ2lvbi5ib3VuZHMoKSA6IGh3LmJvdW5kcygpKTsKLSAgICAgICAgIGNvbXBvc2VTdXJmYWNlcyhyZXBhaW50KTsKLSAgICAgfQotICAgIAotICAgIGdsRGlzYWJsZShHTF9URVhUVVJFXzJEKTsKKyAgICBpZiAoISgoZmxhZ3MgJiBEaXNwbGF5SGFyZHdhcmU6OlNXQVBfUkVDVEFOR0xFKSB8fAorICAgICAgICAgICAgKGZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpCVUZGRVJfUFJFU0VSVkVEKSkpIHsKKyAgICAgICAgY29uc3QgUmVnaW9uIHJlcGFpbnQoKGZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpQQVJUSUFMX1VQREFURVMpID8KKyAgICAgICAgICAgICAgICBtRGlydHlSZWdpb24uYm91bmRzKCkgOiBody5ib3VuZHMoKSk7CisgICAgICAgIGNvbXBvc2VTdXJmYWNlcyhyZXBhaW50KTsKKyAgICB9CisKKyAgICBUZXh0dXJlTWFuYWdlcjo6ZGVhY3RpdmF0ZVRleHR1cmVzKCk7CisKICAgICBnbERpc2FibGUoR0xfQkxFTkQpOwogICAgIGdsRGlzYWJsZShHTF9ESVRIRVIpOwogICAgIGdsRGlzYWJsZShHTF9TQ0lTU09SX1RFU1QpOwpAQCAtOTU2LDkgKzkzMSw5IEBACiAgICAgc3RhdGljIGludCB0b2dnbGUgPSAwOwogICAgIHRvZ2dsZSA9IDEgLSB0b2dnbGU7CiAgICAgaWYgKHRvZ2dsZSkgewotICAgICAgICBnbENvbG9yNHgoMHgxMDAwMCwgMCwgMHgxMDAwMCwgMHgxMDAwMCk7CisgICAgICAgIGdsQ29sb3I0ZigxLCAwLCAxLCAxKTsKICAgICB9IGVsc2UgewotICAgICAgICBnbENvbG9yNHgoMHgxMDAwMCwgMHgxMDAwMCwgMCwgMHgxMDAwMCk7CisgICAgICAgIGdsQ29sb3I0ZigxLCAxLCAwLCAxKTsKICAgICB9CiAKICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbURpcnR5UmVnaW9uLmJlZ2luKCk7CkBAIC05NzQsNyArOTQ5LDcgQEAKICAgICAgICAgZ2xWZXJ0ZXhQb2ludGVyKDIsIEdMX0ZMT0FULCAwLCB2ZXJ0aWNlcyk7CiAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtSW52YWxpZFJlZ2lvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgbURpcnR5UmVnaW9uLmR1bXAoIm1EaXJ0eVJlZ2lvbiIpOwogICAgICAgICBtSW52YWxpZFJlZ2lvbi5kdW1wKCJtSW52YWxpZFJlZ2lvbiIpOwpAQCAtOTgyLDcgKzk1Nyw3IEBACiAgICAgaHcuZmxpcChtSW52YWxpZFJlZ2lvbik7CiAKICAgICBpZiAobURlYnVnUmVnaW9uID4gMSkKLSAgICAgICB1c2xlZXAobURlYnVnUmVnaW9uICogMTAwMCk7CisgICAgICAgIHVzbGVlcChtRGVidWdSZWdpb24gKiAxMDAwKTsKIAogICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CiAgICAgLy9tRGlydHlSZWdpb24uZHVtcCgibURpcnR5UmVnaW9uIik7CkBAIC0xMDAyLDcgKzk3Nyw3IEBACiAgICAgZ2xEaXNhYmxlKEdMX0RJVEhFUik7CiAKICAgICBpZiAoTElLRUxZKCFtRGVidWdCYWNrZ3JvdW5kKSkgewotICAgICAgICBnbENsZWFyQ29sb3J4KDAsMCwwLDApOworICAgICAgICBnbENsZWFyQ29sb3IoMCwwLDAsMCk7CiAgICAgICAgIFJlZ2lvbjo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWdpb24uYmVnaW4oKTsKICAgICAgICAgUmVnaW9uOjpjb25zdF9pdGVyYXRvciBjb25zdCBlbmQgPSByZWdpb24uZW5kKCk7CiAgICAgICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKQEAgLTEwMTgsNiArOTkzLDExIEBACiAgICAgICAgIGdsVmVydGV4UG9pbnRlcigyLCBHTF9TSE9SVCwgMCwgdmVydGljZXMpOwogICAgICAgICBnbFRleENvb3JkUG9pbnRlcigyLCBHTF9TSE9SVCwgMCwgdGNvb3Jkcyk7CiAgICAgICAgIGdsRW5hYmxlQ2xpZW50U3RhdGUoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7CisjaWYgZGVmaW5lZChHTF9PRVNfdGV4dHVyZV9leHRlcm5hbCkKKyAgICAgICAgaWYgKEdMRXh0ZW5zaW9uczo6Z2V0SW5zdGFuY2UoKS5oYXZlVGV4dHVyZUV4dGVybmFsKCkpIHsKKyAgICAgICAgICAgIGdsRGlzYWJsZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUyk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBnbEVuYWJsZShHTF9URVhUVVJFXzJEKTsKICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtV29ybWhvbGVUZXhOYW1lKTsKICAgICAgICAgZ2xUZXhFbnZ4KEdMX1RFWFRVUkVfRU5WLCBHTF9URVhUVVJFX0VOVl9NT0RFLCBHTF9SRVBMQUNFKTsKQEAgLTEwNjEsNiArMTA0MSwyNyBAQAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAorc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OmFkZExheWVyX2woY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIpCit7CisgICAgc3NpemVfdCBpID0gbUN1cnJlbnRTdGF0ZS5sYXllcnNTb3J0ZWRCeVouYWRkKAorICAgICAgICAgICAgICAgIGxheWVyLCAmTGF5ZXJCYXNlOjpjb21wYXJlQ3VycmVudFN0YXRlWik7CisgICAgcmV0dXJuIChpIDwgMCkgPyBzdGF0dXNfdChpKSA6IHN0YXR1c190KE5PX0VSUk9SKTsKK30KKworc3NpemVfdCBTdXJmYWNlRmxpbmdlcjo6YWRkQ2xpZW50TGF5ZXIoY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LAorICAgICAgICBjb25zdCBzcDxMYXllckJhc2VDbGllbnQ+JiBsYmMpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1TdGF0ZUxvY2spOworCisgICAgLy8gYXR0YWNoIHRoaXMgbGF5ZXIgdG8gdGhlIGNsaWVudAorICAgIHNzaXplX3QgbmFtZSA9IGNsaWVudC0+YXR0YWNoTGF5ZXIobGJjKTsKKworICAgIC8vIGFkZCB0aGlzIGxheWVyIHRvIHRoZSBjdXJyZW50IHN0YXRlIGxpc3QKKyAgICBhZGRMYXllcl9sKGxiYyk7CisKKyAgICByZXR1cm4gbmFtZTsKK30KKwogc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OnJlbW92ZUxheWVyKGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKQogewogICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3RhdGVMb2NrKTsKQEAgLTEwNzAsMzYgKzEwNzEsMTUgQEAKICAgICByZXR1cm4gZXJyOwogfQogCi1zdGF0dXNfdCBTdXJmYWNlRmxpbmdlcjo6aW52YWxpZGF0ZUxheWVyVmlzaWJpbGl0eShjb25zdCBzcDxMYXllckJhc2U+JiBsYXllcikKLXsKLSAgICBsYXllci0+Zm9yY2VWaXNpYmlsaXR5VHJhbnNhY3Rpb24oKTsKLSAgICBzZXRUcmFuc2FjdGlvbkZsYWdzKGVUcmF2ZXJzYWxOZWVkZWQpOwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OmFkZExheWVyX2woY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIpCi17Ci0gICAgaWYgKGxheWVyID09IDApCi0gICAgICAgIHJldHVybiBCQURfVkFMVUU7Ci0gICAgc3NpemVfdCBpID0gbUN1cnJlbnRTdGF0ZS5sYXllcnNTb3J0ZWRCeVouYWRkKAotICAgICAgICAgICAgICAgIGxheWVyLCAmTGF5ZXJCYXNlOjpjb21wYXJlQ3VycmVudFN0YXRlWik7Ci0gICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYmMgPSBMYXllckJhc2U6OmR5bmFtaWNDYXN0PCBMYXllckJhc2VDbGllbnQqID4obGF5ZXIuZ2V0KCkpOwotICAgIGlmIChsYmMgIT0gMCkgewotICAgICAgICBtTGF5ZXJNYXAuYWRkKGxiYy0+c2VydmVySW5kZXgoKSwgbGJjKTsKLSAgICB9Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCiBzdGF0dXNfdCBTdXJmYWNlRmxpbmdlcjo6cmVtb3ZlTGF5ZXJfbChjb25zdCBzcDxMYXllckJhc2U+JiBsYXllckJhc2UpCiB7CisgICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYmMobGF5ZXJCYXNlLT5nZXRMYXllckJhc2VDbGllbnQoKSk7CisgICAgaWYgKGxiYyAhPSAwKSB7CisgICAgICAgIG1MYXllck1hcC5yZW1vdmVJdGVtKCBsYmMtPmdldFN1cmZhY2UoKS0+YXNCaW5kZXIoKSApOworICAgIH0KICAgICBzc2l6ZV90IGluZGV4ID0gbUN1cnJlbnRTdGF0ZS5sYXllcnNTb3J0ZWRCeVoucmVtb3ZlKGxheWVyQmFzZSk7CiAgICAgaWYgKGluZGV4ID49IDApIHsKICAgICAgICAgbUxheWVyc1JlbW92ZWQgPSB0cnVlOwotICAgICAgICBzcDxMYXllckJhc2VDbGllbnQ+IGxheWVyID0KLSAgICAgICAgICAgIExheWVyQmFzZTo6ZHluYW1pY0Nhc3Q8IExheWVyQmFzZUNsaWVudCogPihsYXllckJhc2UuZ2V0KCkpOwotICAgICAgICBpZiAobGF5ZXIgIT0gMCkgewotICAgICAgICAgICAgbUxheWVyTWFwLnJlbW92ZUl0ZW0obGF5ZXItPnNlcnZlckluZGV4KCkpOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBOT19FUlJPUjsKICAgICB9CiAgICAgcmV0dXJuIHN0YXR1c190KGluZGV4KTsKQEAgLTExMTQsMjIgKzEwOTQsMTYgQEAKIAogICAgIC8vIGl0J3MgcG9zc2libGUgdGhhdCB3ZSBkb24ndCBmaW5kIGEgbGF5ZXIsIGJlY2F1c2UgaXQgbWlnaHQKICAgICAvLyBoYXZlIGJlZW4gZGVzdHJveWVkIGFscmVhZHkgLS0gdGhpcyBpcyBub3QgdGVjaG5pY2FsbHkgYW4gZXJyb3IKLSAgICAvLyBmcm9tIHRoZSB1c2VyIGJlY2F1c2UgdGhlcmUgaXMgYSByYWNlIGJldHdlZW4gQkNsaWVudDo6ZGVzdHJveVN1cmZhY2UoKSwKLSAgICAvLyB+QkNsaWVudCgpIGFuZCB+SVN1cmZhY2UoKS4KKyAgICAvLyBmcm9tIHRoZSB1c2VyIGJlY2F1c2UgdGhlcmUgaXMgYSByYWNlIGJldHdlZW4gQ2xpZW50OjpkZXN0cm95U3VyZmFjZSgpLAorICAgIC8vIH5DbGllbnQoKSBhbmQgfklTdXJmYWNlKCkuCiAgICAgcmV0dXJuIChlcnIgPT0gTkFNRV9OT1RfRk9VTkQpID8gc3RhdHVzX3QoTk9fRVJST1IpIDogZXJyOwogfQogCi0KLXZvaWQgU3VyZmFjZUZsaW5nZXI6OmZyZWVfcmVzb3VyY2VzX2woKQorc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OmludmFsaWRhdGVMYXllclZpc2liaWxpdHkoY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIpCiB7Ci0gICAgLy8gZnJlZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGRpc2Nvbm5lY3RlZCBjbGllbnRzCi0gICAgVmVjdG9yPCBzcDxDbGllbnQ+ID4mIGRpc2Nvbm5lY3RlZENsaWVudHMobURpc2Nvbm5lY3RlZENsaWVudHMpOwotICAgIGNvbnN0IHNpemVfdCBjb3VudCA9IGRpc2Nvbm5lY3RlZENsaWVudHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8Y291bnQgOyBpKyspIHsKLSAgICAgICAgc3A8Q2xpZW50PiBjbGllbnQgPSBkaXNjb25uZWN0ZWRDbGllbnRzW2ldOwotICAgICAgICBtVG9rZW5zLnJlbGVhc2UoY2xpZW50LT5jaWQpOwotICAgIH0KLSAgICBkaXNjb25uZWN0ZWRDbGllbnRzLmNsZWFyKCk7CisgICAgbGF5ZXItPmZvcmNlVmlzaWJpbGl0eVRyYW5zYWN0aW9uKCk7CisgICAgc2V0VHJhbnNhY3Rpb25GbGFncyhlVHJhdmVyc2FsTmVlZGVkKTsKKyAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKIHVpbnQzMl90IFN1cmZhY2VGbGluZ2VyOjpnZXRUcmFuc2FjdGlvbkZsYWdzKHVpbnQzMl90IGZsYWdzKQpAQCAtMTEzNywxNSArMTExMSwxMSBAQAogICAgIHJldHVybiBhbmRyb2lkX2F0b21pY19hbmQofmZsYWdzLCAmbVRyYW5zYWN0aW9uRmxhZ3MpICYgZmxhZ3M7CiB9CiAKLXVpbnQzMl90IFN1cmZhY2VGbGluZ2VyOjpzZXRUcmFuc2FjdGlvbkZsYWdzKHVpbnQzMl90IGZsYWdzLCBuc2Vjc190IGRlbGF5KQordWludDMyX3QgU3VyZmFjZUZsaW5nZXI6OnNldFRyYW5zYWN0aW9uRmxhZ3ModWludDMyX3QgZmxhZ3MpCiB7CiAgICAgdWludDMyX3Qgb2xkID0gYW5kcm9pZF9hdG9taWNfb3IoZmxhZ3MsICZtVHJhbnNhY3Rpb25GbGFncyk7CiAgICAgaWYgKChvbGQgJiBmbGFncyk9PTApIHsgLy8gd2FrZSB0aGUgc2VydmVyIHVwCi0gICAgICAgIGlmIChkZWxheSA+IDApIHsKLSAgICAgICAgICAgIHNpZ25hbERlbGF5ZWRFdmVudChkZWxheSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzaWduYWxFdmVudCgpOwotICAgICAgICB9CisgICAgICAgIHNpZ25hbEV2ZW50KCk7CiAgICAgfQogICAgIHJldHVybiBvbGQ7CiB9CkBAIC0xMjI0LDggKzExOTQsOCBAQAogICAgIHJldHVybiBvcmllbnRhdGlvbjsKIH0KIAotc3A8SVN1cmZhY2U+IFN1cmZhY2VGbGluZ2VyOjpjcmVhdGVTdXJmYWNlKENsaWVudElEIGNsaWVudElkLCBpbnQgcGlkLAotICAgICAgICBjb25zdCBTdHJpbmc4JiBuYW1lLCBJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90KiBwYXJhbXMsCitzcDxJU3VyZmFjZT4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZVN1cmZhY2UoY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBpbnQgcGlkLAorICAgICAgICBjb25zdCBTdHJpbmc4JiBuYW1lLCBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCogcGFyYW1zLAogICAgICAgICBEaXNwbGF5SUQgZCwgdWludDMyX3QgdywgdWludDMyX3QgaCwgUGl4ZWxGb3JtYXQgZm9ybWF0LAogICAgICAgICB1aW50MzJfdCBmbGFncykKIHsKQEAgLTEyMzgsNTcgKzEyMDgsNTIgQEAKICAgICAgICAgcmV0dXJuIHN1cmZhY2VIYW5kbGU7CiAgICAgfQogICAgIAotICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3RhdGVMb2NrKTsKLSAgICBzcDxDbGllbnQ+IGNsaWVudCA9IG1DbGllbnRzTWFwLnZhbHVlRm9yKGNsaWVudElkKTsKLSAgICBpZiAoVU5MSUtFTFkoY2xpZW50ID09IDApKSB7Ci0gICAgICAgIExPR0UoImNyZWF0ZVN1cmZhY2UoKSBmYWlsZWQsIGNsaWVudCBub3QgZm91bmQgKGlkPSVkKSIsIGNsaWVudElkKTsKLSAgICAgICAgcmV0dXJuIHN1cmZhY2VIYW5kbGU7Ci0gICAgfQotCiAgICAgLy9MT0dEKCJjcmVhdGVTdXJmYWNlIGZvciBwaWQgJWQgKCVkIHggJWQpIiwgcGlkLCB3LCBoKTsKLSAgICBpbnQzMl90IGlkID0gY2xpZW50LT5nZW5lcmF0ZUlkKHBpZCk7Ci0gICAgaWYgKHVpbnQzMl90KGlkKSA+PSBOVU1fTEFZRVJTX01BWCkgewotICAgICAgICBMT0dFKCJjcmVhdGVTdXJmYWNlKCkgZmFpbGVkLCBnZW5lcmF0ZUlkID0gJWQiLCBpZCk7Ci0gICAgICAgIHJldHVybiBzdXJmYWNlSGFuZGxlOwotICAgIH0KLQorICAgIHNwPExheWVyPiBub3JtYWxMYXllcjsKICAgICBzd2l0Y2ggKGZsYWdzICYgZUZYU3VyZmFjZU1hc2spIHsKICAgICAgICAgY2FzZSBlRlhTdXJmYWNlTm9ybWFsOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGZsYWdzICYgZVB1c2hCdWZmZXJzKSkgewotICAgICAgICAgICAgICAgIGxheWVyID0gY3JlYXRlUHVzaEJ1ZmZlcnNTdXJmYWNlTG9ja2VkKGNsaWVudCwgZCwgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICB3LCBoLCBmbGFncyk7CisgICAgICAgICAgICAgICAgbGF5ZXIgPSBjcmVhdGVQdXNoQnVmZmVyc1N1cmZhY2UoY2xpZW50LCBkLCB3LCBoLCBmbGFncyk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxheWVyID0gY3JlYXRlTm9ybWFsU3VyZmFjZUxvY2tlZChjbGllbnQsIGQsIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgdywgaCwgZmxhZ3MsIGZvcm1hdCk7CisgICAgICAgICAgICAgICAgbm9ybWFsTGF5ZXIgPSBjcmVhdGVOb3JtYWxTdXJmYWNlKGNsaWVudCwgZCwgdywgaCwgZmxhZ3MsIGZvcm1hdCk7CisgICAgICAgICAgICAgICAgbGF5ZXIgPSBub3JtYWxMYXllcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGVGWFN1cmZhY2VCbHVyOgotICAgICAgICAgICAgbGF5ZXIgPSBjcmVhdGVCbHVyU3VyZmFjZUxvY2tlZChjbGllbnQsIGQsIGlkLCB3LCBoLCBmbGFncyk7CisgICAgICAgICAgICBsYXllciA9IGNyZWF0ZUJsdXJTdXJmYWNlKGNsaWVudCwgZCwgdywgaCwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZUZYU3VyZmFjZURpbToKLSAgICAgICAgICAgIGxheWVyID0gY3JlYXRlRGltU3VyZmFjZUxvY2tlZChjbGllbnQsIGQsIGlkLCB3LCBoLCBmbGFncyk7CisgICAgICAgICAgICBsYXllciA9IGNyZWF0ZURpbVN1cmZhY2UoY2xpZW50LCBkLCB3LCBoLCBmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAobGF5ZXIgIT0gMCkgeworICAgICAgICBsYXllci0+aW5pdFN0YXRlcyh3LCBoLCBmbGFncyk7CiAgICAgICAgIGxheWVyLT5zZXROYW1lKG5hbWUpOwotICAgICAgICBzZXRUcmFuc2FjdGlvbkZsYWdzKGVUcmFuc2FjdGlvbk5lZWRlZCk7CisgICAgICAgIHNzaXplX3QgdG9rZW4gPSBhZGRDbGllbnRMYXllcihjbGllbnQsIGxheWVyKTsKKwogICAgICAgICBzdXJmYWNlSGFuZGxlID0gbGF5ZXItPmdldFN1cmZhY2UoKTsKICAgICAgICAgaWYgKHN1cmZhY2VIYW5kbGUgIT0gMCkgeyAKLSAgICAgICAgICAgIHBhcmFtcy0+dG9rZW4gPSBzdXJmYWNlSGFuZGxlLT5nZXRUb2tlbigpOworICAgICAgICAgICAgcGFyYW1zLT50b2tlbiA9IHRva2VuOwogICAgICAgICAgICAgcGFyYW1zLT5pZGVudGl0eSA9IHN1cmZhY2VIYW5kbGUtPmdldElkZW50aXR5KCk7CiAgICAgICAgICAgICBwYXJhbXMtPndpZHRoID0gdzsKICAgICAgICAgICAgIHBhcmFtcy0+aGVpZ2h0ID0gaDsKICAgICAgICAgICAgIHBhcmFtcy0+Zm9ybWF0ID0gZm9ybWF0OworICAgICAgICAgICAgaWYgKG5vcm1hbExheWVyICE9IDApIHsKKyAgICAgICAgICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN0YXRlTG9jayk7CisgICAgICAgICAgICAgICAgbUxheWVyTWFwLmFkZChzdXJmYWNlSGFuZGxlLT5hc0JpbmRlcigpLCBub3JtYWxMYXllcik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBzZXRUcmFuc2FjdGlvbkZsYWdzKGVUcmFuc2FjdGlvbk5lZWRlZCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN1cmZhY2VIYW5kbGU7CiB9CiAKLXNwPExheWVyQmFzZUNsaWVudD4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZU5vcm1hbFN1cmZhY2VMb2NrZWQoCitzcDxMYXllcj4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZU5vcm1hbFN1cmZhY2UoCiAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgIGludDMyX3QgaWQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzLAorICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncywKICAgICAgICAgUGl4ZWxGb3JtYXQmIGZvcm1hdCkKIHsKICAgICAvLyBpbml0aWFsaXplIHRoZSBzdXJmYWNlcwpAQCAtMTI5OCw1MyArMTI2Myw1NiBAQAogICAgICAgICBmb3JtYXQgPSBQSVhFTF9GT1JNQVRfUkdCQV84ODg4OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBJWEVMX0ZPUk1BVF9PUEFRVUU6CisjaWZkZWYgTk9fUkdCWF84ODg4CiAgICAgICAgIGZvcm1hdCA9IFBJWEVMX0ZPUk1BVF9SR0JfNTY1OworI2Vsc2UKKyAgICAgICAgZm9ybWF0ID0gUElYRUxfRk9STUFUX1JHQlhfODg4ODsKKyNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzcDxMYXllcj4gbGF5ZXIgPSBuZXcgTGF5ZXIodGhpcywgZGlzcGxheSwgY2xpZW50LCBpZCk7CisjaWZkZWYgTk9fUkdCWF84ODg4CisgICAgaWYgKGZvcm1hdCA9PSBQSVhFTF9GT1JNQVRfUkdCWF84ODg4KQorICAgICAgICBmb3JtYXQgPSBQSVhFTF9GT1JNQVRfUkdCQV84ODg4OworI2VuZGlmCisKKyAgICBzcDxMYXllcj4gbGF5ZXIgPSBuZXcgTGF5ZXIodGhpcywgZGlzcGxheSwgY2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSBsYXllci0+c2V0QnVmZmVycyh3LCBoLCBmb3JtYXQsIGZsYWdzKTsKLSAgICBpZiAoTElLRUxZKGVyciA9PSBOT19FUlJPUikpIHsKLSAgICAgICAgbGF5ZXItPmluaXRTdGF0ZXModywgaCwgZmxhZ3MpOwotICAgICAgICBhZGRMYXllcl9sKGxheWVyKTsKLSAgICB9IGVsc2UgeworICAgIGlmIChMSUtFTFkoZXJyICE9IE5PX0VSUk9SKSkgewogICAgICAgICBMT0dFKCJjcmVhdGVOb3JtYWxTdXJmYWNlTG9ja2VkKCkgZmFpbGVkICglcykiLCBzdHJlcnJvcigtZXJyKSk7CiAgICAgICAgIGxheWVyLmNsZWFyKCk7CiAgICAgfQogICAgIHJldHVybiBsYXllcjsKIH0KIAotc3A8TGF5ZXJCYXNlQ2xpZW50PiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlQmx1clN1cmZhY2VMb2NrZWQoCitzcDxMYXllckJsdXI+IFN1cmZhY2VGbGluZ2VyOjpjcmVhdGVCbHVyU3VyZmFjZSgKICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgaW50MzJfdCBpZCwgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZmxhZ3MpCisgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKQogewotICAgIHNwPExheWVyQmx1cj4gbGF5ZXIgPSBuZXcgTGF5ZXJCbHVyKHRoaXMsIGRpc3BsYXksIGNsaWVudCwgaWQpOworICAgIHNwPExheWVyQmx1cj4gbGF5ZXIgPSBuZXcgTGF5ZXJCbHVyKHRoaXMsIGRpc3BsYXksIGNsaWVudCk7CiAgICAgbGF5ZXItPmluaXRTdGF0ZXModywgaCwgZmxhZ3MpOwotICAgIGFkZExheWVyX2wobGF5ZXIpOwogICAgIHJldHVybiBsYXllcjsKIH0KIAotc3A8TGF5ZXJCYXNlQ2xpZW50PiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlRGltU3VyZmFjZUxvY2tlZCgKK3NwPExheWVyRGltPiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlRGltU3VyZmFjZSgKICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgaW50MzJfdCBpZCwgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZmxhZ3MpCisgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKQogewotICAgIHNwPExheWVyRGltPiBsYXllciA9IG5ldyBMYXllckRpbSh0aGlzLCBkaXNwbGF5LCBjbGllbnQsIGlkKTsKKyAgICBzcDxMYXllckRpbT4gbGF5ZXIgPSBuZXcgTGF5ZXJEaW0odGhpcywgZGlzcGxheSwgY2xpZW50KTsKICAgICBsYXllci0+aW5pdFN0YXRlcyh3LCBoLCBmbGFncyk7Ci0gICAgYWRkTGF5ZXJfbChsYXllcik7CiAgICAgcmV0dXJuIGxheWVyOwogfQogCi1zcDxMYXllckJhc2VDbGllbnQ+IFN1cmZhY2VGbGluZ2VyOjpjcmVhdGVQdXNoQnVmZmVyc1N1cmZhY2VMb2NrZWQoCitzcDxMYXllckJ1ZmZlcj4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZVB1c2hCdWZmZXJzU3VyZmFjZSgKICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgaW50MzJfdCBpZCwgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZmxhZ3MpCisgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKQogewotICAgIHNwPExheWVyQnVmZmVyPiBsYXllciA9IG5ldyBMYXllckJ1ZmZlcih0aGlzLCBkaXNwbGF5LCBjbGllbnQsIGlkKTsKKyAgICBzcDxMYXllckJ1ZmZlcj4gbGF5ZXIgPSBuZXcgTGF5ZXJCdWZmZXIodGhpcywgZGlzcGxheSwgY2xpZW50KTsKICAgICBsYXllci0+aW5pdFN0YXRlcyh3LCBoLCBmbGFncyk7Ci0gICAgYWRkTGF5ZXJfbChsYXllcik7CiAgICAgcmV0dXJuIGxheWVyOwogfQogCi1zdGF0dXNfdCBTdXJmYWNlRmxpbmdlcjo6cmVtb3ZlU3VyZmFjZShTdXJmYWNlSUQgaW5kZXgpCitzdGF0dXNfdCBTdXJmYWNlRmxpbmdlcjo6cmVtb3ZlU3VyZmFjZShjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIFN1cmZhY2VJRCBzaWQpCiB7CiAgICAgLyoKICAgICAgKiBjYWxsZWQgYnkgdGhlIHdpbmRvdyBtYW5hZ2VyLCB3aGVuIGEgc3VyZmFjZSBzaG91bGQgYmUgbWFya2VkIGZvcgpAQCAtMTM1Nyw3ICsxMzI1LDcgQEAKIAogICAgIHN0YXR1c190IGVyciA9IE5BTUVfTk9UX0ZPVU5EOwogICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3RhdGVMb2NrKTsKLSAgICBzcDxMYXllckJhc2VDbGllbnQ+IGxheWVyID0gZ2V0TGF5ZXJVc2VyX2woaW5kZXgpOworICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGF5ZXIgPSBjbGllbnQtPmdldExheWVyVXNlcihzaWQpOwogICAgIGlmIChsYXllciAhPSAwKSB7CiAgICAgICAgIGVyciA9IHB1cmdhdG9yaXplTGF5ZXJfbChsYXllcik7CiAgICAgICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKQEAgLTEzOTcsMjEgKzEzNjUsMjAgQEAKICAgICAgICAgfQogICAgIH07CiAKLSAgICBtRXZlbnRRdWV1ZS5wb3N0TWVzc2FnZSggbmV3IE1lc3NhZ2VEZXN0cm95U3VyZmFjZSh0aGlzLCBsYXllcikgKTsKKyAgICBwb3N0TWVzc2FnZUFzeW5jKCBuZXcgTWVzc2FnZURlc3Ryb3lTdXJmYWNlKHRoaXMsIGxheWVyKSApOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OnNldENsaWVudFN0YXRlKAotICAgICAgICBDbGllbnRJRCBjaWQsCisgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwKICAgICAgICAgaW50MzJfdCBjb3VudCwKICAgICAgICAgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKQogewogICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3RhdGVMb2NrKTsKICAgICB1aW50MzJfdCBmbGFncyA9IDA7Ci0gICAgY2lkIDw8PSAxNjsKICAgICBmb3IgKGludCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IGxheWVyX3N0YXRlX3QmIHMgPSBzdGF0ZXNbaV07Ci0gICAgICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGF5ZXIoZ2V0TGF5ZXJVc2VyX2wocy5zdXJmYWNlIHwgY2lkKSk7CisgICAgICAgIGNvbnN0IGxheWVyX3N0YXRlX3QmIHMoc3RhdGVzW2ldKTsKKyAgICAgICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYXllcihjbGllbnQtPmdldExheWVyVXNlcihzLnN1cmZhY2UpKTsKICAgICAgICAgaWYgKGxheWVyICE9IDApIHsKICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHdoYXQgPSBzLndoYXQ7CiAgICAgICAgICAgICBpZiAod2hhdCAmIGVQb3NpdGlvbkNoYW5nZWQpIHsKQEAgLTE0NTcsMTIgKzE0MjQsNiBAQAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAotc3A8TGF5ZXJCYXNlQ2xpZW50PiBTdXJmYWNlRmxpbmdlcjo6Z2V0TGF5ZXJVc2VyX2woU3VyZmFjZUlEIHMpIGNvbnN0Ci17Ci0gICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYXllciA9IG1MYXllck1hcC52YWx1ZUZvcihzKTsKLSAgICByZXR1cm4gbGF5ZXI7Ci19Ci0KIHZvaWQgU3VyZmFjZUZsaW5nZXI6OnNjcmVlblJlbGVhc2VkKGludCBkcHkpCiB7CiAgICAgLy8gdGhpcyBtYXkgYmUgY2FsbGVkIGJ5IGEgc2lnbmFsIGhhbmRsZXIsIHdlIGNhbid0IGRvIHRvbyBtdWNoIGluIGhlcmUKQEAgLTE1MTIsODMgKzE0NzMsMTcgQEAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBzID0gbUNsaWVudHNNYXAuc2l6ZSgpOwotICAgICAgICBjaGFyIG5hbWVbNjRdOwotICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPHMgOyBpKyspIHsKLSAgICAgICAgICAgIHNwPENsaWVudD4gY2xpZW50ID0gbUNsaWVudHNNYXAudmFsdWVBdChpKTsKLSAgICAgICAgICAgIHNwcmludGYobmFtZSwgIiAgQ2xpZW50IChpZD0weCUwOHgpIiwgY2xpZW50LT5jaWQpOwotICAgICAgICAgICAgY2xpZW50LT5kdW1wKG5hbWUpOwotICAgICAgICB9CiAgICAgICAgIGNvbnN0IExheWVyVmVjdG9yJiBjdXJyZW50TGF5ZXJzID0gbUN1cnJlbnRTdGF0ZS5sYXllcnNTb3J0ZWRCeVo7CiAgICAgICAgIGNvbnN0IHNpemVfdCBjb3VudCA9IGN1cnJlbnRMYXllcnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7Ci0gICAgICAgICAgICAvKioqIExheWVyQmFzZSAqKiovCi0gICAgICAgICAgICBjb25zdCBzcDxMYXllckJhc2U+JiBsYXllciA9IGN1cnJlbnRMYXllcnNbaV07Ci0gICAgICAgICAgICBjb25zdCBMYXllcjo6U3RhdGUmIHMgPSBsYXllci0+ZHJhd2luZ1N0YXRlKCk7Ci0gICAgICAgICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsCi0gICAgICAgICAgICAgICAgICAgICIrICVzICVwXG4iCi0gICAgICAgICAgICAgICAgICAgICIgICAgICAiCi0gICAgICAgICAgICAgICAgICAgICJ6PSU5ZCwgcG9zPSglNGQsJTRkKSwgc2l6ZT0oJTRkLCU0ZCksICIKLSAgICAgICAgICAgICAgICAgICAgIm5lZWRzQmxlbmRpbmc9JTFkLCBuZWVkc0RpdGhlcmluZz0lMWQsIGludmFsaWRhdGU9JTFkLCAiCi0gICAgICAgICAgICAgICAgICAgICJhbHBoYT0weCUwMngsIGZsYWdzPTB4JTA4eCwgdHI9WyUuMmYsICUuMmZdWyUuMmYsICUuMmZdXG4iLAotICAgICAgICAgICAgICAgICAgICBsYXllci0+Z2V0VHlwZUlEKCksIGxheWVyLmdldCgpLAotICAgICAgICAgICAgICAgICAgICBzLnosIGxheWVyLT50eCgpLCBsYXllci0+dHkoKSwgcy53LCBzLmgsCi0gICAgICAgICAgICAgICAgICAgIGxheWVyLT5uZWVkc0JsZW5kaW5nKCksIGxheWVyLT5uZWVkc0RpdGhlcmluZygpLAotICAgICAgICAgICAgICAgICAgICBsYXllci0+Y29udGVudERpcnR5LAotICAgICAgICAgICAgICAgICAgICBzLmFscGhhLCBzLmZsYWdzLAotICAgICAgICAgICAgICAgICAgICBzLnRyYW5zZm9ybVswXVswXSwgcy50cmFuc2Zvcm1bMF1bMV0sCi0gICAgICAgICAgICAgICAgICAgIHMudHJhbnNmb3JtWzFdWzBdLCBzLnRyYW5zZm9ybVsxXVsxXSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgICAgICAgICBidWZmZXJbMF0gPSAwOwotICAgICAgICAgICAgLyoqKiBMYXllckJhc2VDbGllbnQgKioqLwotICAgICAgICAgICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYmMgPQotICAgICAgICAgICAgICAgIExheWVyQmFzZTo6ZHluYW1pY0Nhc3Q8IExheWVyQmFzZUNsaWVudCogPihsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAobGJjICE9IDApIHsKLSAgICAgICAgICAgICAgICBzcDxDbGllbnQ+IGNsaWVudChsYmMtPmNsaWVudC5wcm9tb3RlKCkpOwotICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICBuYW1lPSVzXG4iLCBsYmMtPmdldE5hbWUoKS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwotICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICBpZD0weCUwOHgsIGNsaWVudD0weCUwOHgsIGlkZW50aXR5PSV1XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgbGJjLT5jbGllbnRJbmRleCgpLCBjbGllbnQuZ2V0KCkgPyBjbGllbnQtPmNpZCA6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBsYmMtPmdldElkZW50aXR5KCkpOwotCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwotICAgICAgICAgICAgICAgIGJ1ZmZlclswXSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKioqIExheWVyICoqKi8KLSAgICAgICAgICAgIHNwPExheWVyPiBsID0gTGF5ZXJCYXNlOjpkeW5hbWljQ2FzdDwgTGF5ZXIqID4obGF5ZXIuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKGwgIT0gMCkgewotICAgICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlclN0YWNrOjpTdGF0aXN0aWNzIHN0YXRzID0gbC0+bGNibGstPmdldFN0YXRzKCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCggbC0+bGNibGstPmR1bXAoIiAgICAgICIpICk7Ci0gICAgICAgICAgICAgICAgc3A8Y29uc3QgR3JhcGhpY0J1ZmZlcj4gYnVmMChsLT5nZXRCdWZmZXIoMCkpOwotICAgICAgICAgICAgICAgIHNwPGNvbnN0IEdyYXBoaWNCdWZmZXI+IGJ1ZjEobC0+Z2V0QnVmZmVyKDEpKTsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCB3MD0wLCBoMD0wLCBzMD0wOwotICAgICAgICAgICAgICAgIHVpbnQzMl90IHcxPTAsIGgxPTAsIHMxPTA7Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZjAgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICB3MCA9IGJ1ZjAtPmdldFdpZHRoKCk7Ci0gICAgICAgICAgICAgICAgICAgIGgwID0gYnVmMC0+Z2V0SGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHMwID0gYnVmMC0+Z2V0U3RyaWRlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChidWYxICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgdzEgPSBidWYxLT5nZXRXaWR0aCgpOwotICAgICAgICAgICAgICAgICAgICBoMSA9IGJ1ZjEtPmdldEhlaWdodCgpOwotICAgICAgICAgICAgICAgICAgICBzMSA9IGJ1ZjEtPmdldFN0cmlkZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdD0lMmQsIFslM3V4JTN1OiUzdV0gWyUzdXglM3U6JTN1XSwiCi0gICAgICAgICAgICAgICAgICAgICAgICAiIGZyZWV6ZUxvY2s9JXAsIGRxLXEtdGltZT0ldSB1c1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGwtPnBpeGVsRm9ybWF0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICB3MCwgaDAsIHMwLCB3MSwgaDEsIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgbC0+Z2V0RnJlZXplTG9jaygpLmdldCgpLCBzdGF0cy50b3RhbFRpbWUpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIoY3VycmVudExheWVyc1tpXSk7CisgICAgICAgICAgICBsYXllci0+ZHVtcChyZXN1bHQsIGJ1ZmZlciwgU0laRSk7CisgICAgICAgICAgICBjb25zdCBMYXllcjo6U3RhdGUmIHMobGF5ZXItPmRyYXdpbmdTdGF0ZSgpKTsKICAgICAgICAgICAgIHMudHJhbnNwYXJlbnRSZWdpb24uZHVtcChyZXN1bHQsICJ0cmFuc3BhcmVudFJlZ2lvbiIpOwogICAgICAgICAgICAgbGF5ZXItPnRyYW5zcGFyZW50UmVnaW9uU2NyZWVuLmR1bXAocmVzdWx0LCAidHJhbnNwYXJlbnRSZWdpb25TY3JlZW4iKTsKICAgICAgICAgICAgIGxheWVyLT52aXNpYmxlUmVnaW9uU2NyZWVuLmR1bXAocmVzdWx0LCAidmlzaWJsZVJlZ2lvblNjcmVlbiIpOwogICAgICAgICB9CisKICAgICAgICAgbVdvcm1ob2xlUmVnaW9uLmR1bXAocmVzdWx0LCAiV29ybWhvbGVSZWdpb24iKTsKICAgICAgICAgY29uc3QgRGlzcGxheUhhcmR3YXJlJiBodyhncmFwaGljUGxhbmUoMCkuZGlzcGxheUhhcmR3YXJlKCkpOwogICAgICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsCkBAIC0xNjAxLDE4ICsxNDk2LDE5IEBACiAgICAgICAgICAgICAgICAgIiAgbGFzdCB0cmFuc2FjdGlvbiB0aW1lICAgICA6ICVmIHVzXG4iLAogICAgICAgICAgICAgICAgIG1MYXN0U3dhcEJ1ZmZlclRpbWUvMTAwMC4wLCBtTGFzdFRyYW5zYWN0aW9uVGltZS8xMDAwLjApOwogICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisKICAgICAgICAgaWYgKGluU3dhcEJ1ZmZlcnNEdXJhdGlvbiB8fCAhbG9ja2VkKSB7CiAgICAgICAgICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgIGVnbFN3YXBCdWZmZXJzIHRpbWU6ICVmIHVzXG4iLAogICAgICAgICAgICAgICAgICAgICBpblN3YXBCdWZmZXJzRHVyYXRpb24vMTAwMC4wKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgfQorCiAgICAgICAgIGlmIChpblRyYW5zYWN0aW9uRHVyYXRpb24gfHwgIWxvY2tlZCkgewogICAgICAgICAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICB0cmFuc2FjdGlvbiB0aW1lOiAlZiB1c1xuIiwKICAgICAgICAgICAgICAgICAgICAgaW5UcmFuc2FjdGlvbkR1cmF0aW9uLzEwMDAuMCk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIH0KLSAgICAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICBjbGllbnQgY291bnQ6ICVkXG4iLCBtQ2xpZW50c01hcC5zaXplKCkpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisKICAgICAgICAgY29uc3QgR3JhcGhpY0J1ZmZlckFsbG9jYXRvciYgYWxsb2MoR3JhcGhpY0J1ZmZlckFsbG9jYXRvcjo6Z2V0KCkpOwogICAgICAgICBhbGxvYy5kdW1wKHJlc3VsdCk7CiAKQEAgLTE3MDUsMTIgKzE2MDEsOTEgQEAKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWYgMAotI3ByYWdtYSBtYXJrIC0KLSNlbmRpZgogCi1DbGllbnQ6OkNsaWVudChDbGllbnRJRCBjbGllbnRJRCwgY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyKQotICAgIDogY3RybGJsaygwKSwgY2lkKGNsaWVudElEKSwgbVBpZCgwKSwgbUJpdG1hcCgwKSwgbUZsaW5nZXIoZmxpbmdlcikKK3NwPExheWVyPiBTdXJmYWNlRmxpbmdlcjo6Z2V0TGF5ZXIoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXIpIGNvbnN0Cit7CisgICAgc3A8TGF5ZXI+IHJlc3VsdDsKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN0YXRlTG9jayk7CisgICAgcmVzdWx0ID0gbUxheWVyTWFwLnZhbHVlRm9yKCBzdXItPmFzQmluZGVyKCkgKS5wcm9tb3RlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NsaWVudDo6Q2xpZW50KGNvbnN0IHNwPFN1cmZhY2VGbGluZ2VyPiYgZmxpbmdlcikKKyAgICA6IG1GbGluZ2VyKGZsaW5nZXIpLCBtTmFtZUdlbmVyYXRvcigxKQoreworfQorCitDbGllbnQ6On5DbGllbnQoKQoreworICAgIGNvbnN0IHNpemVfdCBjb3VudCA9IG1MYXllcnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8Y291bnQgOyBpKyspIHsKKyAgICAgICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYXllcihtTGF5ZXJzLnZhbHVlQXQoaSkucHJvbW90ZSgpKTsKKyAgICAgICAgaWYgKGxheWVyICE9IDApIHsKKyAgICAgICAgICAgIG1GbGluZ2VyLT5yZW1vdmVMYXllcihsYXllcik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXR1c190IENsaWVudDo6aW5pdENoZWNrKCkgY29uc3QgeworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3NpemVfdCBDbGllbnQ6OmF0dGFjaExheWVyKGNvbnN0IHNwPExheWVyQmFzZUNsaWVudD4mIGxheWVyKQoreworICAgIGludDMyX3QgbmFtZSA9IGFuZHJvaWRfYXRvbWljX2luYygmbU5hbWVHZW5lcmF0b3IpOworICAgIG1MYXllcnMuYWRkKG5hbWUsIGxheWVyKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwordm9pZCBDbGllbnQ6OmRldGFjaExheWVyKGNvbnN0IExheWVyQmFzZUNsaWVudCogbGF5ZXIpCit7CisgICAgLy8gd2UgZG8gYSBsaW5lYXIgc2VhcmNoIGhlcmUsIGJlY2F1c2UgdGhpcyBkb2Vzbid0IGhhcHBlbiBvZnRlbgorICAgIGNvbnN0IHNpemVfdCBjb3VudCA9IG1MYXllcnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8Y291bnQgOyBpKyspIHsKKyAgICAgICAgaWYgKG1MYXllcnMudmFsdWVBdChpKSA9PSBsYXllcikgeworICAgICAgICAgICAgbUxheWVycy5yZW1vdmVJdGVtc0F0KGksIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CitzcDxMYXllckJhc2VDbGllbnQ+IENsaWVudDo6Z2V0TGF5ZXJVc2VyKGludDMyX3QgaSkgY29uc3QgeworICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGJjOworICAgIGNvbnN0IHdwPExheWVyQmFzZUNsaWVudD4mIGxheWVyKG1MYXllcnMudmFsdWVGb3IoaSkpOworICAgIGlmIChsYXllciAhPSAwKSB7CisgICAgICAgIGxiYyA9IGxheWVyLnByb21vdGUoKTsKKyAgICAgICAgTE9HRV9JRihsYmM9PTAsICJnZXRMYXllclVzZXIobmFtZT0lZCkgaXMgZGVhZCIsIGludChpKSk7CisgICAgfQorICAgIHJldHVybiBsYmM7Cit9CisKK3NwPElNZW1vcnlIZWFwPiBDbGllbnQ6OmdldENvbnRyb2xCbG9jaygpIGNvbnN0IHsKKyAgICByZXR1cm4gMDsKK30KK3NzaXplX3QgQ2xpZW50OjpnZXRUb2tlbkZvclN1cmZhY2UoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXIpIGNvbnN0IHsKKyAgICByZXR1cm4gLTE7Cit9CitzcDxJU3VyZmFjZT4gQ2xpZW50OjpjcmVhdGVTdXJmYWNlKAorICAgICAgICBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCogcGFyYW1zLCBpbnQgcGlkLAorICAgICAgICBjb25zdCBTdHJpbmc4JiBuYW1lLAorICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSwgdWludDMyX3QgdywgdWludDMyX3QgaCwgUGl4ZWxGb3JtYXQgZm9ybWF0LAorICAgICAgICB1aW50MzJfdCBmbGFncykKK3sKKyAgICByZXR1cm4gbUZsaW5nZXItPmNyZWF0ZVN1cmZhY2UodGhpcywgcGlkLCBuYW1lLCBwYXJhbXMsCisgICAgICAgICAgICBkaXNwbGF5LCB3LCBoLCBmb3JtYXQsIGZsYWdzKTsKK30KK3N0YXR1c190IENsaWVudDo6ZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHNpZCkgeworICAgIHJldHVybiBtRmxpbmdlci0+cmVtb3ZlU3VyZmFjZSh0aGlzLCBzaWQpOworfQorc3RhdHVzX3QgQ2xpZW50OjpzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpIHsKKyAgICByZXR1cm4gbUZsaW5nZXItPnNldENsaWVudFN0YXRlKHRoaXMsIGNvdW50LCBzdGF0ZXMpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNlckNsaWVudDo6VXNlckNsaWVudChjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIpCisgICAgOiBjdHJsYmxrKDApLCBtQml0bWFwKDApLCBtRmxpbmdlcihmbGluZ2VyKQogewogICAgIGNvbnN0IGludCBwZ3NpemUgPSBnZXRwYWdlc2l6ZSgpOwogICAgIGNvbnN0IGludCBjYmxrc2l6ZSA9ICgoc2l6ZW9mKFNoYXJlZENsaWVudCkrKHBnc2l6ZS0xKSkmfihwZ3NpemUtMSkpOwpAQCAtMTcyNCw5NyArMTY5OSw5MSBAQAogICAgIH0KIH0KIAotQ2xpZW50Ojp+Q2xpZW50KCkgeworVXNlckNsaWVudDo6flVzZXJDbGllbnQoKQorewogICAgIGlmIChjdHJsYmxrKSB7CiAgICAgICAgIGN0cmxibGstPn5TaGFyZWRDbGllbnQoKTsgIC8vIGRlc3Ryb3kgb3VyIHNoYXJlZC1zdHJ1Y3R1cmUuCiAgICAgfQorCisgICAgLyoKKyAgICAgKiBXaGVuIGEgVXNlckNsaWVudCBkaWVzLCBpdCdzIHVuY2xlYXIgd2hhdCB0byBkbyBleGFjdGx5LgorICAgICAqIFdlIGNvdWxkIGdvIGFoZWFkIGFuZCBkZXN0cm95IGFsbCBzdXJmYWNlcyBsaW5rZWQgdG8gdGhhdCBjbGllbnQKKyAgICAgKiBob3dldmVyLCBpdCB3b3VsZG4ndCBiZSBmYWlyIHRvIHRoZSBtYWluIENsaWVudAorICAgICAqICh1c3VhbGx5IHRoZSB0aGUgd2luZG93LW1hbmFnZXIpLCB3aGljaCBtaWdodCB3YW50IHRvIHJlLXRhcmdldAorICAgICAqIHRoZSBsYXllciB0byBhbm90aGVyIFVzZXJDbGllbnQuCisgICAgICogSSB0aGluayB0aGUgYmVzdCBpcyB0byBkbyBub3RoaW5nLCBvciBub3QgbXVjaDsgaW4gbW9zdCBjYXNlcyB0aGUKKyAgICAgKiBXTSBpdHNlbGYgd2lsbCBnbyBhaGVhZCBhbmQgY2xlYW4gdGhpbmdzIHVwIHdoZW4gaXQgZGV0ZWN0cyBhIGNsaWVudCBvZgorICAgICAqIGhpcyBoYXMgZGllZC4KKyAgICAgKiBUaGUgcmVtYWluaW5nIHF1ZXN0aW9uIGlzIHdoYXQgdG8gZGlzcGxheT8gY3VycmVudGx5IHdlIGtlZXAKKyAgICAgKiBqdXN0IGtlZXAgdGhlIGN1cnJlbnQgYnVmZmVyLgorICAgICAqLwogfQogCi1pbnQzMl90IENsaWVudDo6Z2VuZXJhdGVJZChpbnQgcGlkKQotewotICAgIGNvbnN0IHVpbnQzMl90IGkgPSBjbHooIH5tQml0bWFwICk7Ci0gICAgaWYgKGkgPj0gTlVNX0xBWUVSU19NQVgpIHsKLSAgICAgICAgcmV0dXJuIE5PX01FTU9SWTsKLSAgICB9Ci0gICAgbVBpZCA9IHBpZDsKLSAgICBtSW5Vc2UuYWRkKHVpbnQ4X3QoaSkpOwotICAgIG1CaXRtYXAgfD0gMTw8KDMxLWkpOwotICAgIHJldHVybiBpOworc3RhdHVzX3QgVXNlckNsaWVudDo6aW5pdENoZWNrKCkgY29uc3QgeworICAgIHJldHVybiBjdHJsYmxrID09IDAgPyBOT19JTklUIDogTk9fRVJST1I7CiB9CiAKLXN0YXR1c190IENsaWVudDo6YmluZExheWVyKGNvbnN0IHNwPExheWVyQmFzZUNsaWVudD4mIGxheWVyLCBpbnQzMl90IGlkKQordm9pZCBVc2VyQ2xpZW50OjpkZXRhY2hMYXllcihjb25zdCBMYXllciogbGF5ZXIpCiB7Ci0gICAgc3NpemVfdCBpZHggPSBtSW5Vc2UuaW5kZXhPZihpZCk7Ci0gICAgaWYgKGlkeCA8IDApCi0gICAgICAgIHJldHVybiBOQU1FX05PVF9GT1VORDsKLSAgICByZXR1cm4gbUxheWVycy5pbnNlcnRBdChsYXllciwgaWR4KTsKLX0KLQotdm9pZCBDbGllbnQ6OmZyZWUoaW50MzJfdCBpZCkKLXsKLSAgICBzc2l6ZV90IGlkeCA9IG1JblVzZS5yZW1vdmUodWludDhfdChpZCkpOwotICAgIGlmIChpZHggPj0gMCkgewotICAgICAgICBtQml0bWFwICY9IH4oMTw8KDMxLWlkKSk7Ci0gICAgICAgIG1MYXllcnMucmVtb3ZlSXRlbXNBdChpZHgpOworICAgIGludDMyX3QgbmFtZSA9IGxheWVyLT5nZXRUb2tlbigpOworICAgIGlmIChuYW1lID49IDApIHsKKyAgICAgICAgaW50MzJfdCBtYXNrID0gMUxVPDxuYW1lOworICAgICAgICBpZiAoKGFuZHJvaWRfYXRvbWljX2FuZCh+bWFzaywgJm1CaXRtYXApICYgbWFzaykgPT0gMCkgeworICAgICAgICAgICAgTE9HVygidG9rZW4gJWQgd2Fzbid0IG1hcmtlZCBhcyB1c2VkICUwOHgiLCBuYW1lLCBpbnQobUJpdG1hcCkpOworICAgICAgICB9CiAgICAgfQogfQogCi1ib29sIENsaWVudDo6aXNWYWxpZChpbnQzMl90IGkpIGNvbnN0IHsKLSAgICByZXR1cm4gKHVpbnQzMl90KGkpPE5VTV9MQVlFUlNfTUFYKSAmJiAobUJpdG1hcCAmICgxPDwoMzEtaSkpKTsKK3NwPElNZW1vcnlIZWFwPiBVc2VyQ2xpZW50OjpnZXRDb250cm9sQmxvY2soKSBjb25zdCB7CisgICAgcmV0dXJuIG1DYmxrSGVhcDsKIH0KIAotc3A8TGF5ZXJCYXNlQ2xpZW50PiBDbGllbnQ6OmdldExheWVyVXNlcihpbnQzMl90IGkpIGNvbnN0IHsKLSAgICBzcDxMYXllckJhc2VDbGllbnQ+IGxiYzsKLSAgICBzc2l6ZV90IGlkeCA9IG1JblVzZS5pbmRleE9mKHVpbnQ4X3QoaSkpOwotICAgIGlmIChpZHggPj0gMCkgewotICAgICAgICBsYmMgPSBtTGF5ZXJzW2lkeF0ucHJvbW90ZSgpOwotICAgICAgICBMT0dFX0lGKGxiYz09MCwgImdldExheWVyVXNlcihpPSVkKSwgaWR4PSVkIGlzIGRlYWQiLCBpbnQoaSksIGludChpZHgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxiYzsKLX0KLQotdm9pZCBDbGllbnQ6OmR1bXAoY29uc3QgY2hhciogd2hhdCkKK3NzaXplX3QgVXNlckNsaWVudDo6Z2V0VG9rZW5Gb3JTdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyKSBjb25zdAogeworICAgIGludDMyX3QgbmFtZSA9IE5BTUVfTk9UX0ZPVU5EOworICAgIHNwPExheWVyPiBsYXllcihtRmxpbmdlci0+Z2V0TGF5ZXIoc3VyKSk7CisgICAgaWYgKGxheWVyID09IDApIHJldHVybiBuYW1lOworCisgICAgLy8gaWYgdGhpcyBsYXllciBhbHJlYWR5IGhhcyBhIHRva2VuLCBqdXN0IHJldHVybiBpdAorICAgIG5hbWUgPSBsYXllci0+Z2V0VG9rZW4oKTsKKyAgICBpZiAoKG5hbWUgPj0gMCkgJiYgKGxheWVyLT5nZXRDbGllbnQoKSA9PSB0aGlzKSkKKyAgICAgICAgcmV0dXJuIG5hbWU7CisKKyAgICBuYW1lID0gMDsKKyAgICBkbyB7CisgICAgICAgIGludDMyX3QgbWFzayA9IDFMVTw8bmFtZTsKKyAgICAgICAgaWYgKChhbmRyb2lkX2F0b21pY19vcihtYXNrLCAmbUJpdG1hcCkgJiBtYXNrKSA9PSAwKSB7CisgICAgICAgICAgICAvLyB3ZSBmb3VuZCBhbmQgbG9ja2VkIHRoYXQgbmFtZQorICAgICAgICAgICAgc3RhdHVzX3QgZXJyID0gbGF5ZXItPnNldFRva2VuKAorICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFVzZXJDbGllbnQqPih0aGlzKSwgY3RybGJsaywgbmFtZSk7CisgICAgICAgICAgICBpZiAoZXJyICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgLy8gZnJlZSB0aGUgbmFtZQorICAgICAgICAgICAgICAgIGFuZHJvaWRfYXRvbWljX2FuZCh+bWFzaywgJm1CaXRtYXApOworICAgICAgICAgICAgICAgIG5hbWUgPSBlcnI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoKytuYW1lID4gMzEpCisgICAgICAgICAgICBuYW1lID0gTk9fTUVNT1JZOworICAgIH0gd2hpbGUobmFtZSA+PSAwKTsKKworICAgIC8vTE9HRCgiZ2V0VG9rZW5Gb3JTdXJmYWNlKCVwKSA9PiAlZCAoY2xpZW50PSVwLCBiaXRtYXA9JTA4bHgpIiwKKyAgICAvLyAgICAgICAgc3VyLT5hc0JpbmRlcigpLmdldCgpLCBuYW1lLCB0aGlzLCBtQml0bWFwKTsKKyAgICByZXR1cm4gbmFtZTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWYgMAotI3ByYWdtYSBtYXJrIC0KLSNlbmRpZgotCi1CQ2xpZW50OjpCQ2xpZW50KFN1cmZhY2VGbGluZ2VyICpmbGluZ2VyLCBDbGllbnRJRCBjaWQsIGNvbnN0IHNwPElNZW1vcnlIZWFwPiYgY2JsaykKLSAgICA6IG1JZChjaWQpLCBtRmxpbmdlcihmbGluZ2VyKSwgbUNibGsoY2JsaykKLXsKLX0KLQotQkNsaWVudDo6fkJDbGllbnQoKSB7Ci0gICAgLy8gZGVzdHJveSBhbGwgcmVzb3VyY2VzIGF0dGFjaGVkIHRvIHRoaXMgY2xpZW50Ci0gICAgbUZsaW5nZXItPmRlc3Ryb3lDb25uZWN0aW9uKG1JZCk7Ci19Ci0KLXNwPElNZW1vcnlIZWFwPiBCQ2xpZW50OjpnZXRDb250cm9sQmxvY2soKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1DYmxrOwotfQotCi1zcDxJU3VyZmFjZT4gQkNsaWVudDo6Y3JlYXRlU3VyZmFjZSgKLSAgICAgICAgSVN1cmZhY2VGbGluZ2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCogcGFyYW1zLCBpbnQgcGlkLAorc3A8SVN1cmZhY2U+IFVzZXJDbGllbnQ6OmNyZWF0ZVN1cmZhY2UoCisgICAgICAgIElTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90KiBwYXJhbXMsIGludCBwaWQsCiAgICAgICAgIGNvbnN0IFN0cmluZzgmIG5hbWUsCiAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5LCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBQaXhlbEZvcm1hdCBmb3JtYXQsCi0gICAgICAgIHVpbnQzMl90IGZsYWdzKQotewotICAgIHJldHVybiBtRmxpbmdlci0+Y3JlYXRlU3VyZmFjZShtSWQsIHBpZCwgbmFtZSwgcGFyYW1zLCBkaXNwbGF5LCB3LCBoLAotICAgICAgICAgICAgZm9ybWF0LCBmbGFncyk7CisgICAgICAgIHVpbnQzMl90IGZsYWdzKSB7CisgICAgcmV0dXJuIDA7CiB9Ci0KLXN0YXR1c190IEJDbGllbnQ6OmRlc3Ryb3lTdXJmYWNlKFN1cmZhY2VJRCBzaWQpCi17Ci0gICAgc2lkIHw9IChtSWQgPDwgMTYpOyAvLyBhZGQgdGhlIGNsaWVudC1wYXJ0IHRvIGlkCi0gICAgcmV0dXJuIG1GbGluZ2VyLT5yZW1vdmVTdXJmYWNlKHNpZCk7CitzdGF0dXNfdCBVc2VyQ2xpZW50OjpkZXN0cm95U3VyZmFjZShTdXJmYWNlSUQgc2lkKSB7CisgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwogfQotCi1zdGF0dXNfdCBCQ2xpZW50OjpzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpCi17Ci0gICAgcmV0dXJuIG1GbGluZ2VyLT5zZXRDbGllbnRTdGF0ZShtSWQsIGNvdW50LCBzdGF0ZXMpOworc3RhdHVzX3QgVXNlckNsaWVudDo6c2V0U3RhdGUoaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKSB7CisgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUZsaW5nZXIuaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUZsaW5nZXIuaAppbmRleCBkNzVkYzE1Li4wYmZjMTcwIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2VGbGluZ2VyLmgKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9TdXJmYWNlRmxpbmdlci5oCkBAIC0zMiwxMSArMzIsMTAgQEAKIAogI2luY2x1ZGUgPHVpL1BpeGVsRm9ybWF0Lmg+CiAjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3Nlci5oPgotI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oPgorI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuaD4KIAogI2luY2x1ZGUgIkJhcnJpZXIuaCIKICNpbmNsdWRlICJMYXllci5oIgotI2luY2x1ZGUgIlRva2VuaXplci5oIgogCiAjaW5jbHVkZSAiTWVzc2FnZVF1ZXVlLmgiCiAKQEAgLTQ4LDU1ICs0Nyw4MCBAQAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIENsaWVudDsKLWNsYXNzIEJDbGllbnQ7CiBjbGFzcyBEaXNwbGF5SGFyZHdhcmU7CiBjbGFzcyBGcmVlemVMb2NrOwogY2xhc3MgTGF5ZXI7CitjbGFzcyBMYXllckJsdXI7CitjbGFzcyBMYXllckRpbTsKIGNsYXNzIExheWVyQnVmZmVyOwogCi10eXBlZGVmIGludDMyX3QgQ2xpZW50SUQ7Ci0KICNkZWZpbmUgTElLRUxZKCBleHAgKSAgICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgdHJ1ZSAgKSkKICNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIENsaWVudCA6IHB1YmxpYyBSZWZCYXNlCitjbGFzcyBDbGllbnQgOiBwdWJsaWMgQm5TdXJmYWNlQ29tcG9zZXJDbGllbnQKIHsKIHB1YmxpYzoKLSAgICAgICAgICAgIENsaWVudChDbGllbnRJRCBjaWQsIGNvbnN0IHNwPFN1cmZhY2VGbGluZ2VyPiYgZmxpbmdlcik7Ci0gICAgICAgICAgICB+Q2xpZW50KCk7CisgICAgICAgIENsaWVudChjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIpOworICAgICAgICB+Q2xpZW50KCk7CiAKLSAgICAgICAgICAgIGludDMyX3QgICAgICAgICAgICAgICAgIGdlbmVyYXRlSWQoaW50IHBpZCk7Ci0gICAgICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBmcmVlKGludDMyX3QgaWQpOwotICAgICAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgYmluZExheWVyKGNvbnN0IHNwPExheWVyQmFzZUNsaWVudD4mIGxheWVyLCBpbnQzMl90IGlkKTsKKyAgICBzdGF0dXNfdCBpbml0Q2hlY2soKSBjb25zdDsKIAotICAgIGlubGluZSAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNWYWxpZChpbnQzMl90IGkpIGNvbnN0OwotICAgIHNwPExheWVyQmFzZUNsaWVudD4gICAgICAgICAgICAgZ2V0TGF5ZXJVc2VyKGludDMyX3QgaSkgY29uc3Q7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wKGNvbnN0IGNoYXIqIHdoYXQpOwotICAgIAotICAgIGNvbnN0IFZlY3Rvcjwgd3A8TGF5ZXJCYXNlQ2xpZW50PiA+JiBnZXRMYXllcnMoKSBjb25zdCB7IAotICAgICAgICByZXR1cm4gbUxheWVyczsgCi0gICAgfQotICAgIAotICAgIGNvbnN0IHNwPElNZW1vcnlIZWFwPiYgZ2V0Q29udHJvbEJsb2NrTWVtb3J5KCkgY29uc3QgewotICAgICAgICByZXR1cm4gbUNibGtIZWFwOyAKLSAgICB9Ci0gICAgCi0gICAgLy8gcG9pbnRlciB0byB0aGlzIGNsaWVudCdzIGNvbnRyb2wgYmxvY2sKLSAgICBTaGFyZWRDbGllbnQqICAgICAgICAgICBjdHJsYmxrOwotICAgIENsaWVudElEICAgICAgICAgICAgICAgIGNpZDsKKyAgICAvLyBwcm90ZWN0ZWQgYnkgU3VyZmFjZUZsaW5nZXI6Om1TdGF0ZUxvY2sKKyAgICBzc2l6ZV90IGF0dGFjaExheWVyKGNvbnN0IHNwPExheWVyQmFzZUNsaWVudD4mIGxheWVyKTsKKyAgICB2b2lkIGRldGFjaExheWVyKGNvbnN0IExheWVyQmFzZUNsaWVudCogbGF5ZXIpOworICAgIHNwPExheWVyQmFzZUNsaWVudD4gZ2V0TGF5ZXJVc2VyKGludDMyX3QgaSkgY29uc3Q7CiAKLSAgICAKIHByaXZhdGU6Ci0gICAgaW50IGdldENsaWVudFBpZCgpIGNvbnN0IHsgcmV0dXJuIG1QaWQ7IH0KLSAgICAgICAgCi0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUGlkOwotICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgbUJpdG1hcDsKLSAgICBTb3J0ZWRWZWN0b3I8dWludDhfdD4gICAgICAgICAgIG1JblVzZTsKLSAgICBWZWN0b3I8IHdwPExheWVyQmFzZUNsaWVudD4gPiAgIG1MYXllcnM7Ci0gICAgc3A8SU1lbW9yeUhlYXA+ICAgICAgICAgICAgICAgICBtQ2Jsa0hlYXA7Ci0gICAgc3A8U3VyZmFjZUZsaW5nZXI+ICAgICAgICAgICAgICBtRmxpbmdlcjsKKworICAgIC8vIElTdXJmYWNlQ29tcG9zZXJDbGllbnQgaW50ZXJmYWNlCisgICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gZ2V0Q29udHJvbEJsb2NrKCkgY29uc3Q7CisgICAgdmlydHVhbCBzc2l6ZV90IGdldFRva2VuRm9yU3VyZmFjZShjb25zdCBzcDxJU3VyZmFjZT4mIHN1cikgY29uc3Q7CisgICAgdmlydHVhbCBzcDxJU3VyZmFjZT4gY3JlYXRlU3VyZmFjZSgKKyAgICAgICAgICAgIHN1cmZhY2VfZGF0YV90KiBwYXJhbXMsIGludCBwaWQsIGNvbnN0IFN0cmluZzgmIG5hbWUsCisgICAgICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSwgdWludDMyX3QgdywgdWludDMyX3QgaCxQaXhlbEZvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICB1aW50MzJfdCBmbGFncyk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBkZXN0cm95U3VyZmFjZShTdXJmYWNlSUQgc3VyZmFjZUlkKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHNldFN0YXRlKGludDMyX3QgY291bnQsIGNvbnN0IGxheWVyX3N0YXRlX3QqIHN0YXRlcyk7CisKKyAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8IHNpemVfdCwgd3A8TGF5ZXJCYXNlQ2xpZW50PiA+IG1MYXllcnM7CisgICAgc3A8U3VyZmFjZUZsaW5nZXI+IG1GbGluZ2VyOworICAgIGludDMyX3QgbU5hbWVHZW5lcmF0b3I7Cit9OworCitjbGFzcyBVc2VyQ2xpZW50IDogcHVibGljIEJuU3VyZmFjZUNvbXBvc2VyQ2xpZW50Cit7CitwdWJsaWM6CisgICAgLy8gcG9pbnRlciB0byB0aGlzIGNsaWVudCdzIGNvbnRyb2wgYmxvY2sKKyAgICBTaGFyZWRDbGllbnQqIGN0cmxibGs7CisKK3B1YmxpYzoKKyAgICAgICAgVXNlckNsaWVudChjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIpOworICAgICAgICB+VXNlckNsaWVudCgpOworCisgICAgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7CisKKyAgICAvLyBwcm90ZWN0ZWQgYnkgU3VyZmFjZUZsaW5nZXI6Om1TdGF0ZUxvY2sKKyAgICB2b2lkIGRldGFjaExheWVyKGNvbnN0IExheWVyKiBsYXllcik7CisKK3ByaXZhdGU6CisKKyAgICAvLyBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50IGludGVyZmFjZQorICAgIHZpcnR1YWwgc3A8SU1lbW9yeUhlYXA+IGdldENvbnRyb2xCbG9jaygpIGNvbnN0OworICAgIHZpcnR1YWwgc3NpemVfdCBnZXRUb2tlbkZvclN1cmZhY2UoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXIpIGNvbnN0OworICAgIHZpcnR1YWwgc3A8SVN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoCisgICAgICAgICAgICBzdXJmYWNlX2RhdGFfdCogcGFyYW1zLCBpbnQgcGlkLCBjb25zdCBTdHJpbmc4JiBuYW1lLAorICAgICAgICAgICAgRGlzcGxheUlEIGRpc3BsYXksIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsUGl4ZWxGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHN1cmZhY2VJZCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpOworCisgICAgLy8gYXRvbWljLW9wcworICAgIG11dGFibGUgdm9sYXRpbGUgaW50MzJfdCBtQml0bWFwOworCisgICAgc3A8SU1lbW9yeUhlYXA+IG1DYmxrSGVhcDsKKyAgICBzcDxTdXJmYWNlRmxpbmdlcj4gbUZsaW5nZXI7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE1OSw3ICsxODMsOCBAQAogICAgIHZpcnR1YWwgc3RhdHVzX3QgZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpOwogCiAgICAgLy8gSVN1cmZhY2VDb21wb3NlciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHNwPElTdXJmYWNlRmxpbmdlckNsaWVudD4gICBjcmVhdGVDb25uZWN0aW9uKCk7CisgICAgdmlydHVhbCBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiAgY3JlYXRlQ29ubmVjdGlvbigpOworICAgIHZpcnR1YWwgc3A8SVN1cmZhY2VDb21wb3NlckNsaWVudD4gIGNyZWF0ZUNsaWVudENvbm5lY3Rpb24oKTsKICAgICB2aXJ0dWFsIHNwPElNZW1vcnlIZWFwPiAgICAgICAgICAgICBnZXRDYmxrKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgYm9vdEZpbmlzaGVkKCk7CiAgICAgdmlydHVhbCB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgb3Blbkdsb2JhbFRyYW5zYWN0aW9uKCk7CkBAIC0xNzQsMTMgKzE5OSwxNCBAQAogCiAgICAgICAgICAgICBvdmVybGF5X2NvbnRyb2xfZGV2aWNlX3QqIGdldE92ZXJsYXlFbmdpbmUoKSBjb25zdDsKIAotICAgICAgICAgICAgCiAgICAgc3RhdHVzX3QgcmVtb3ZlTGF5ZXIoY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIpOwogICAgIHN0YXR1c190IGFkZExheWVyKGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKTsKICAgICBzdGF0dXNfdCBpbnZhbGlkYXRlTGF5ZXJWaXNpYmlsaXR5KGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKTsKLSAgICAKKworICAgIHNwPExheWVyPiBnZXRMYXllcihjb25zdCBzcDxJU3VyZmFjZT4mIHN1cikgY29uc3Q7CisKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEJDbGllbnQ7CisgICAgZnJpZW5kIGNsYXNzIENsaWVudDsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJCYXNlOwogICAgIGZyaWVuZCBjbGFzcyBMYXllckJ1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJCYXNlQ2xpZW50OwpAQCAtMTg5LDMxICsyMTUsMzMgQEAKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJCbHVyOwogICAgIGZyaWVuZCBjbGFzcyBMYXllckRpbTsKIAotICAgIHNwPElTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKENsaWVudElEIGNsaWVudCwgaW50IHBpZCwgY29uc3QgU3RyaW5nOCYgbmFtZSwKLSAgICAgICAgICAgIElTdXJmYWNlRmxpbmdlckNsaWVudDo6c3VyZmFjZV9kYXRhX3QqIHBhcmFtcywKKyAgICBzcDxJU3VyZmFjZT4gY3JlYXRlU3VyZmFjZShjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsCisgICAgICAgICAgICBpbnQgcGlkLCBjb25zdCBTdHJpbmc4JiBuYW1lLAorICAgICAgICAgICAgSVN1cmZhY2VDb21wb3NlckNsaWVudDo6c3VyZmFjZV9kYXRhX3QqIHBhcmFtcywKICAgICAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5LCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBQaXhlbEZvcm1hdCBmb3JtYXQsCiAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyk7CiAKLSAgICBzcDxMYXllckJhc2VDbGllbnQ+IGNyZWF0ZU5vcm1hbFN1cmZhY2VMb2NrZWQoCisgICAgc3A8TGF5ZXI+IGNyZWF0ZU5vcm1hbFN1cmZhY2UoCiAgICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICAgICAgaW50MzJfdCBpZCwgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZmxhZ3MsCisgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncywKICAgICAgICAgICAgIFBpeGVsRm9ybWF0JiBmb3JtYXQpOwogCi0gICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBjcmVhdGVCbHVyU3VyZmFjZUxvY2tlZCgKKyAgICBzcDxMYXllckJsdXI+IGNyZWF0ZUJsdXJTdXJmYWNlKAogICAgICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgICAgIGludDMyX3QgaWQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKTsKIAotICAgIHNwPExheWVyQmFzZUNsaWVudD4gY3JlYXRlRGltU3VyZmFjZUxvY2tlZCgKKyAgICBzcDxMYXllckRpbT4gY3JlYXRlRGltU3VyZmFjZSgKICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgICAgICBpbnQzMl90IGlkLCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncyk7CisgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncyk7CiAKLSAgICBzcDxMYXllckJhc2VDbGllbnQ+IGNyZWF0ZVB1c2hCdWZmZXJzU3VyZmFjZUxvY2tlZCgKKyAgICBzcDxMYXllckJ1ZmZlcj4gY3JlYXRlUHVzaEJ1ZmZlcnNTdXJmYWNlKAogICAgICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgICAgIGludDMyX3QgaWQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKTsKIAotICAgIHN0YXR1c190IHJlbW92ZVN1cmZhY2UoU3VyZmFjZUlEIHN1cmZhY2VfaWQpOworICAgIHN0YXR1c190IHJlbW92ZVN1cmZhY2UoY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBTdXJmYWNlSUQgc2lkKTsKICAgICBzdGF0dXNfdCBkZXN0cm95U3VyZmFjZShjb25zdCBzcDxMYXllckJhc2VDbGllbnQ+JiBsYXllcik7Ci0gICAgc3RhdHVzX3Qgc2V0Q2xpZW50U3RhdGUoQ2xpZW50SUQgY2lkLCBpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpOworICAgIHN0YXR1c190IHNldENsaWVudFN0YXRlKGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgIGludDMyX3QgY291bnQsIGNvbnN0IGxheWVyX3N0YXRlX3QqIHN0YXRlcyk7CiAKIAogICAgIGNsYXNzIExheWVyVmVjdG9yIHsKQEAgLTI1Niw4ICsyODQsNiBAQAogcHVibGljOiAgICAgLy8gaGFjayB0byB3b3JrIGFyb3VuZCBnY2MgNC4wLjMgYnVnCiAgICAgICAgICAgICB2b2lkICAgICAgICBzaWduYWxFdmVudCgpOwogcHJpdmF0ZToKLSAgICAgICAgICAgIHZvaWQgICAgICAgIHNpZ25hbERlbGF5ZWRFdmVudChuc2Vjc190IGRlbGF5KTsKLQogICAgICAgICAgICAgdm9pZCAgICAgICAgaGFuZGxlQ29uc29sZUV2ZW50cygpOwogICAgICAgICAgICAgdm9pZCAgICAgICAgaGFuZGxlVHJhbnNhY3Rpb24odWludDMyX3QgdHJhbnNhY3Rpb25GbGFncyk7CiAgICAgICAgICAgICB2b2lkICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkxvY2tlZCgKQEAgLTI3OCwxNSArMzA0LDE0IEBACiAgICAgICAgICAgICB2b2lkICAgICAgICB1bmxvY2tDbGllbnRzKCk7CiAKIAotICAgICAgICAgICAgdm9pZCAgICAgICAgZGVzdHJveUNvbm5lY3Rpb24oQ2xpZW50SUQgY2lkKTsKLSAgICAgICAgICAgIHNwPExheWVyQmFzZUNsaWVudD4gZ2V0TGF5ZXJVc2VyX2woU3VyZmFjZUlEIGluZGV4KSBjb25zdDsKKyAgICAgICAgICAgIHNzaXplX3QgICAgIGFkZENsaWVudExheWVyKGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8TGF5ZXJCYXNlQ2xpZW50PiYgbGJjKTsKICAgICAgICAgICAgIHN0YXR1c190ICAgIGFkZExheWVyX2woY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIpOwogICAgICAgICAgICAgc3RhdHVzX3QgICAgcmVtb3ZlTGF5ZXJfbChjb25zdCBzcDxMYXllckJhc2U+JiBsYXllcik7CiAgICAgICAgICAgICBzdGF0dXNfdCAgICBwdXJnYXRvcml6ZUxheWVyX2woY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIpOwotICAgICAgICAgICAgdm9pZCAgICAgICAgZnJlZV9yZXNvdXJjZXNfbCgpOwogCiAgICAgICAgICAgICB1aW50MzJfdCAgICBnZXRUcmFuc2FjdGlvbkZsYWdzKHVpbnQzMl90IGZsYWdzKTsKLSAgICAgICAgICAgIHVpbnQzMl90ICAgIHNldFRyYW5zYWN0aW9uRmxhZ3ModWludDMyX3QgZmxhZ3MsIG5zZWNzX3QgZGVsYXkgPSAwKTsKKyAgICAgICAgICAgIHVpbnQzMl90ICAgIHNldFRyYW5zYWN0aW9uRmxhZ3ModWludDMyX3QgZmxhZ3MpOwogICAgICAgICAgICAgdm9pZCAgICAgICAgY29tbWl0VHJhbnNhY3Rpb24oKTsKIAogCkBAIC0zMTAsOSArMzM1LDEzIEBACiAgICAgICAgICAgIAogCiAgICAgbXV0YWJsZSAgICAgTWVzc2FnZVF1ZXVlICAgIG1FdmVudFF1ZXVlOwotICAgIAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIAorCisgICAgc3RhdHVzX3QgcG9zdE1lc3NhZ2VBc3luYyhjb25zdCBzcDxNZXNzYWdlQmFzZT4mIG1zZywKKyAgICAgICAgICAgIG5zZWNzX3QgcmVsdGltZT0wLCB1aW50MzJfdCBmbGFncyA9IDApOworCisgICAgc3RhdHVzX3QgcG9zdE1lc3NhZ2VTeW5jKGNvbnN0IHNwPE1lc3NhZ2VCYXNlPiYgbXNnLAorICAgICAgICAgICAgbnNlY3NfdCByZWx0aW1lPTAsIHVpbnQzMl90IGZsYWdzID0gMCk7CisKICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MgbXVzdCBiZSBwcm90ZWN0ZWQgYnkgbVN0YXRlTG9jawogICAgIG11dGFibGUgICAgIE11dGV4ICAgICAgICAgICAgICAgICAgIG1TdGF0ZUxvY2s7CiAgICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRTdGF0ZTsKQEAgLTMyMSwxNCArMzUwLDExIEBACiAgICAgdm9sYXRpbGUgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgbVRyYW5zYWN0aW9uQ291bnQ7CiAgICAgICAgICAgICAgICAgQ29uZGl0aW9uICAgICAgICAgICAgICAgbVRyYW5zYWN0aW9uQ1Y7CiAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgbVJlc2l6ZVRyYW5zYXRpb25QZW5kaW5nOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgLy8gcHJvdGVjdGVkIGJ5IG1TdGF0ZUxvY2sgKGJ1dCB3ZSBjb3VsZCB1c2UgYW5vdGhlciBsb2NrKQotICAgICAgICAgICAgICAgIFRva2VuaXplciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVG9rZW5zOwotICAgICAgICAgICAgICAgIERlZmF1bHRLZXllZFZlY3RvcjxDbGllbnRJRCwgc3A8Q2xpZW50PiA+ICAgbUNsaWVudHNNYXA7Ci0gICAgICAgICAgICAgICAgRGVmYXVsdEtleWVkVmVjdG9yPFN1cmZhY2VJRCwgc3A8TGF5ZXJCYXNlQ2xpZW50PiA+ICAgbUxheWVyTWFwOwotICAgICAgICAgICAgICAgIEdyYXBoaWNQbGFuZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtR3JhcGhpY1BsYW5lc1sxXTsKLSAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxheWVyc1JlbW92ZWQ7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPCBzcDxDbGllbnQ+ID4gICAgICAgICAgICAgICAgICAgIG1EaXNjb25uZWN0ZWRDbGllbnRzOworICAgICAgICAgICAgICAgIEdyYXBoaWNQbGFuZSAgICAgICAgICAgICAgICBtR3JhcGhpY1BsYW5lc1sxXTsKKyAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgbUxheWVyc1JlbW92ZWQ7CisgICAgICAgICAgICAgICAgRGVmYXVsdEtleWVkVmVjdG9yPCB3cDxJQmluZGVyPiwgd3A8TGF5ZXI+ID4gbUxheWVyTWFwOwogCiAgICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgbWVtYmVycyAobm8gc3luY2hyb25pemF0aW9uIG5lZWRlZCBmb3IgYWNjZXNzKQogICAgICAgICAgICAgICAgIHNwPElNZW1vcnlIZWFwPiAgICAgICAgICAgICBtU2VydmVySGVhcDsKQEAgLTM4OSwzMiArNDE1LDYgQEAKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBCQ2xpZW50IDogcHVibGljIEJuU3VyZmFjZUZsaW5nZXJDbGllbnQKLXsKLXB1YmxpYzoKLSAgICBCQ2xpZW50KFN1cmZhY2VGbGluZ2VyICpmbGluZ2VyLCBDbGllbnRJRCBjaWQsCi0gICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5SGVhcD4mIGNibGspOwotICAgIH5CQ2xpZW50KCk7Ci0KLSAgICAvLyBJU3VyZmFjZUZsaW5nZXJDbGllbnQgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gZ2V0Q29udHJvbEJsb2NrKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHNwPElTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKAotICAgICAgICAgICAgc3VyZmFjZV9kYXRhX3QqIHBhcmFtcywgaW50IHBpZCwgY29uc3QgU3RyaW5nOCYgbmFtZSwKLSAgICAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5LCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLFBpeGVsRm9ybWF0IGZvcm1hdCwKLSAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKTsKLQotICAgIHZpcnR1YWwgc3RhdHVzX3QgZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHN1cmZhY2VJZCk7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCBzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpOwotCi1wcml2YXRlOgotICAgIENsaWVudElEICAgICAgICAgICAgbUlkOwotICAgIFN1cmZhY2VGbGluZ2VyKiAgICAgbUZsaW5nZXI7Ci0gICAgc3A8SU1lbW9yeUhlYXA+ICAgICBtQ2JsazsKLX07Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIAogI2VuZGlmIC8vIEFORFJPSURfU1VSRkFDRV9GTElOR0VSX0gKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvVGV4dHVyZU1hbmFnZXIuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9UZXh0dXJlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUyNjAzMgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMzQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8dXRpbHMvRXJyb3JzLmg+CisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDx1aS9HcmFwaGljQnVmZmVyLmg+CisKKyNpbmNsdWRlIDxHTEVTL2dsLmg+CisjaW5jbHVkZSA8R0xFUy9nbGV4dC5oPgorCisjaW5jbHVkZSA8aGFyZHdhcmUvaGFyZHdhcmUuaD4KKworI2luY2x1ZGUgImNsei5oIgorI2luY2x1ZGUgIkRpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuaCIKKyNpbmNsdWRlICJHTEV4dGVuc2lvbnMuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIoKQorICAgIDogbUdMRXh0ZW5zaW9ucyhHTEV4dGVuc2lvbnM6OmdldEluc3RhbmNlKCkpCit7Cit9CisKK0dMZW51bSBUZXh0dXJlTWFuYWdlcjo6Z2V0VGV4dHVyZVRhcmdldChjb25zdCBJbWFnZSogaW1hZ2UpIHsKKyNpZiBkZWZpbmVkKEdMX09FU190ZXh0dXJlX2V4dGVybmFsKQorICAgIHN3aXRjaCAoaW1hZ2UtPnRhcmdldCkgeworICAgICAgICBjYXNlIFRleHR1cmU6OlRFWFRVUkVfRVhURVJOQUw6CisgICAgICAgICAgICByZXR1cm4gR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7Cit9CisKK3N0YXR1c190IFRleHR1cmVNYW5hZ2VyOjppbml0VGV4dHVyZShUZXh0dXJlKiB0ZXh0dXJlKQoreworICAgIGlmICh0ZXh0dXJlLT5uYW1lICE9IC0xVUwpCisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKworICAgIEdMdWludCB0ZXh0dXJlTmFtZSA9IC0xOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmVOYW1lKTsKKyAgICB0ZXh0dXJlLT5uYW1lID0gdGV4dHVyZU5hbWU7CisgICAgdGV4dHVyZS0+d2lkdGggPSAwOworICAgIHRleHR1cmUtPmhlaWdodCA9IDA7CisKKyAgICBjb25zdCBHTGVudW0gdGFyZ2V0ID0gR0xfVEVYVFVSRV8yRDsKKyAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZU5hbWUpOworICAgIGdsVGV4UGFyYW1ldGVyeCh0YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcngodGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcngodGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworCisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitzdGF0dXNfdCBUZXh0dXJlTWFuYWdlcjo6aW5pdFRleHR1cmUoSW1hZ2UqIHBJbWFnZSwgaW50MzJfdCBmb3JtYXQpCit7CisgICAgaWYgKHBJbWFnZS0+bmFtZSAhPSAtMVVMKQorICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisKKyAgICBHTHVpbnQgdGV4dHVyZU5hbWUgPSAtMTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlTmFtZSk7CisgICAgcEltYWdlLT5uYW1lID0gdGV4dHVyZU5hbWU7CisgICAgcEltYWdlLT53aWR0aCA9IDA7CisgICAgcEltYWdlLT5oZWlnaHQgPSAwOworCisgICAgR0xlbnVtIHRhcmdldCA9IEdMX1RFWFRVUkVfMkQ7CisjaWYgZGVmaW5lZChHTF9PRVNfdGV4dHVyZV9leHRlcm5hbCkKKyAgICBpZiAoR0xFeHRlbnNpb25zOjpnZXRJbnN0YW5jZSgpLmhhdmVUZXh0dXJlRXh0ZXJuYWwoKSkgeworICAgICAgICBpZiAoZm9ybWF0ICYmIGlzWXV2Rm9ybWF0KGZvcm1hdCkpIHsKKyAgICAgICAgICAgIHRhcmdldCA9IEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTOworICAgICAgICAgICAgcEltYWdlLT50YXJnZXQgPSBUZXh0dXJlOjpURVhUVVJFX0VYVEVSTkFMOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZU5hbWUpOworICAgIGdsVGV4UGFyYW1ldGVyeCh0YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcngodGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcngodGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworCisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitib29sIFRleHR1cmVNYW5hZ2VyOjppc1N1cHBvcnRlZFl1dkZvcm1hdChpbnQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lWMTI6CisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lWMTY6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVGV4dHVyZU1hbmFnZXI6OmlzWXV2Rm9ybWF0KGludCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAvLyBzdXBwb3J0ZWQgWVVWIGZvcm1hdHMKKyAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWVYxMjoKKyAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWVYxNjoKKyAgICAvLyBMZWdhY3kvZGVwcmVjYXRlZCBZVVYgZm9ybWF0cworICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ2JDcl80MjJfU1A6CisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDckNiXzQyMF9TUDoKKyAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIyX0k6CisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMF9TUF9USUxFRDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gQW55IE9FTSBmb3JtYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZAorICAgIGlmIChmb3JtYXQ+PTB4MTAwICYmIGZvcm1hdDw9MHgxRkYpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0dXNfdCBUZXh0dXJlTWFuYWdlcjo6aW5pdEVnbEltYWdlKEltYWdlKiBwSW1hZ2UsCisgICAgICAgIEVHTERpc3BsYXkgZHB5LCBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyKQoreworICAgIHN0YXR1c190IGVyciA9IE5PX0VSUk9SOworICAgIGlmICghcEltYWdlLT5kaXJ0eSkgcmV0dXJuIGVycjsKKworICAgIC8vIGZyZWUgdGhlIHByZXZpb3VzIGltYWdlCisgICAgaWYgKHBJbWFnZS0+aW1hZ2UgIT0gRUdMX05PX0lNQUdFX0tIUikgeworICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIoZHB5LCBwSW1hZ2UtPmltYWdlKTsKKyAgICAgICAgcEltYWdlLT5pbWFnZSA9IEVHTF9OT19JTUFHRV9LSFI7CisgICAgfQorCisgICAgLy8gY29uc3RydWN0IGFuIEVHTF9OQVRJVkVfQlVGRkVSX0FORFJPSUQKKyAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogY2xpZW50QnVmID0gYnVmZmVyLT5nZXROYXRpdmVCdWZmZXIoKTsKKworICAgIC8vIGNyZWF0ZSB0aGUgbmV3IEVHTEltYWdlS0hSCisgICAgY29uc3QgRUdMaW50IGF0dHJzW10gPSB7CisgICAgICAgICAgICBFR0xfSU1BR0VfUFJFU0VSVkVEX0tIUiwgICAgRUdMX1RSVUUsCisgICAgICAgICAgICBFR0xfTk9ORSwgICAgICAgICAgICAgICAgICAgRUdMX05PTkUKKyAgICB9OworICAgIHBJbWFnZS0+aW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUigKKyAgICAgICAgICAgIGRweSwgRUdMX05PX0NPTlRFWFQsIEVHTF9OQVRJVkVfQlVGRkVSX0FORFJPSUQsCisgICAgICAgICAgICAoRUdMQ2xpZW50QnVmZmVyKWNsaWVudEJ1ZiwgYXR0cnMpOworCisgICAgaWYgKHBJbWFnZS0+aW1hZ2UgIT0gRUdMX05PX0lNQUdFX0tIUikgeworICAgICAgICBpZiAocEltYWdlLT5uYW1lID09IC0xVUwpIHsKKyAgICAgICAgICAgIGluaXRUZXh0dXJlKHBJbWFnZSwgYnVmZmVyLT5mb3JtYXQpOworICAgICAgICB9CisgICAgICAgIGNvbnN0IEdMZW51bSB0YXJnZXQgPSBnZXRUZXh0dXJlVGFyZ2V0KHBJbWFnZSk7CisgICAgICAgIGdsQmluZFRleHR1cmUodGFyZ2V0LCBwSW1hZ2UtPm5hbWUpOworICAgICAgICBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRhcmdldCwgKEdMZWdsSW1hZ2VPRVMpcEltYWdlLT5pbWFnZSk7CisgICAgICAgIEdMaW50IGVycm9yID0gZ2xHZXRFcnJvcigpOworICAgICAgICBpZiAoZXJyb3IgIT0gR0xfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIExPR0UoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoJXApIGZhaWxlZCBlcnI9MHglMDR4IiwKKyAgICAgICAgICAgICAgICAgICAgcEltYWdlLT5pbWFnZSwgZXJyb3IpOworICAgICAgICAgICAgZXJyID0gSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFdmVyeXRoaW5nIHdlbnQgb2theSEKKyAgICAgICAgICAgIHBJbWFnZS0+ZGlydHkgID0gZmFsc2U7CisgICAgICAgICAgICBwSW1hZ2UtPndpZHRoICA9IGNsaWVudEJ1Zi0+d2lkdGg7CisgICAgICAgICAgICBwSW1hZ2UtPmhlaWdodCA9IGNsaWVudEJ1Zi0+aGVpZ2h0OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HRSgiZWdsQ3JlYXRlSW1hZ2VLSFIoKSBmYWlsZWQuIGVycj0weCU0eCIsIGVnbEdldEVycm9yKCkpOworICAgICAgICBlcnIgPSBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisgICAgcmV0dXJuIGVycjsKK30KKworc3RhdHVzX3QgVGV4dHVyZU1hbmFnZXI6OmxvYWRUZXh0dXJlKFRleHR1cmUqIHRleHR1cmUsCisgICAgICAgIGNvbnN0IFJlZ2lvbiYgZGlydHksIGNvbnN0IEdHTFN1cmZhY2UmIHQpCit7CisgICAgaWYgKHRleHR1cmUtPm5hbWUgPT0gLTFVTCkgeworICAgICAgICBzdGF0dXNfdCBlcnIgPSBpbml0VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgTE9HRV9JRihlcnIsICJsb2FkVGV4dHVyZSBmYWlsZWQgaW4gaW5pdFRleHR1cmUgKCVzKSIsIHN0cmVycm9yKGVycikpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICAgIGlmICh0ZXh0dXJlLT50YXJnZXQgIT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlLT5uYW1lKTsKKworICAgIC8qCisgICAgICogSW4gT3BlbkdMIEVTIHdlIGNhbid0IHNwZWNpZnkgYSBzdHJpZGUgd2l0aCBnbFRleEltYWdlMkQgKGhvd2V2ZXIsCisgICAgICogR0xfVU5QQUNLX0FMSUdOTUVOVCBpcyBhIGxpbWl0ZWQgZm9ybSBvZiBzdHJpZGUpLgorICAgICAqIFNvIGlmIHRoZSBzdHJpZGUgaGVyZSBpc24ndCByZXByZXNlbnRhYmxlIHdpdGggR0xfVU5QQUNLX0FMSUdOTUVOVCwgd2UKKyAgICAgKiBuZWVkIHRvIGRvIHNvbWV0aGluZyByZWFzb25hYmxlIChoZXJlIGNyZWF0aW5nIGEgYmlnZ2VyIHRleHR1cmUpLgorICAgICAqCisgICAgICogZXh0cmEgcGl4ZWxzID0gKCgoc3RyaWRlIC0gd2lkdGgpICogcGl4ZWxzaXplKSAvIEdMX1VOUEFDS19BTElHTk1FTlQpOworICAgICAqCisgICAgICogVGhpcyBzaXR1YXRpb24gZG9lc24ndCBoYXBwZW4gb2Z0ZW4sIGJ1dCBzb21lIGgvdyBoYXZlIGEgbGltaXRhdGlvbgorICAgICAqIGZvciB0aGVpciBmcmFtZWJ1ZmZlciAoZWc6IG11c3QgYmUgbXVsdGlwbGUgb2YgOCBwaXhlbHMpLCBhbmQKKyAgICAgKiB3ZSBuZWVkIHRvIHRha2UgdGhhdCBpbnRvIGFjY291bnQgd2hlbiB1c2luZyB0aGVzZSBidWZmZXJzIGFzCisgICAgICogdGV4dHVyZXMuCisgICAgICoKKyAgICAgKiBUaGlzIHNob3VsZCBuZXZlciBiZSBhIHByb2JsZW0gd2l0aCBQT1QgdGV4dHVyZXMKKyAgICAgKi8KKworICAgIGludCB1bnBhY2sgPSBfX2J1aWx0aW5fY3R6KHQuc3RyaWRlICogYnl0ZXNQZXJQaXhlbCh0LmZvcm1hdCkpOworICAgIHVucGFjayA9IDEgPDwgKCh1bnBhY2sgPiAzKSA/IDMgOiB1bnBhY2spOworICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgdW5wYWNrKTsKKworICAgIC8qCisgICAgICogcm91bmQgdG8gUE9UIGlmIG5lZWRlZAorICAgICAqLworICAgIGlmICghbUdMRXh0ZW5zaW9ucy5oYXZlTnBvdCgpKSB7CisgICAgICAgIHRleHR1cmUtPk5QT1RBZGp1c3QgPSB0cnVlOworICAgIH0KKworICAgIGlmICh0ZXh0dXJlLT5OUE9UQWRqdXN0KSB7CisgICAgICAgIC8vIGZpbmQgdGhlIHNtYWxsZXN0IHBvd2VyLW9mLXR3byB0aGF0IHdpbGwgYWNjb21tb2RhdGUgb3VyIHN1cmZhY2UKKyAgICAgICAgdGV4dHVyZS0+cG90V2lkdGggID0gMSA8PCAoMzEgLSBjbHoodC53aWR0aCkpOworICAgICAgICB0ZXh0dXJlLT5wb3RIZWlnaHQgPSAxIDw8ICgzMSAtIGNseih0LmhlaWdodCkpOworICAgICAgICBpZiAodGV4dHVyZS0+cG90V2lkdGggIDwgdC53aWR0aCkgIHRleHR1cmUtPnBvdFdpZHRoICA8PD0gMTsKKyAgICAgICAgaWYgKHRleHR1cmUtPnBvdEhlaWdodCA8IHQuaGVpZ2h0KSB0ZXh0dXJlLT5wb3RIZWlnaHQgPDw9IDE7CisgICAgICAgIHRleHR1cmUtPndTY2FsZSA9IGZsb2F0KHQud2lkdGgpICAvIHRleHR1cmUtPnBvdFdpZHRoOworICAgICAgICB0ZXh0dXJlLT5oU2NhbGUgPSBmbG9hdCh0LmhlaWdodCkgLyB0ZXh0dXJlLT5wb3RIZWlnaHQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGV4dHVyZS0+cG90V2lkdGggID0gdC53aWR0aDsKKyAgICAgICAgdGV4dHVyZS0+cG90SGVpZ2h0ID0gdC5oZWlnaHQ7CisgICAgfQorCisgICAgUmVjdCBib3VuZHMoZGlydHkuYm91bmRzKCkpOworICAgIEdMdm9pZCogZGF0YSA9IDA7CisgICAgaWYgKHRleHR1cmUtPndpZHRoICE9IHQud2lkdGggfHwgdGV4dHVyZS0+aGVpZ2h0ICE9IHQuaGVpZ2h0KSB7CisgICAgICAgIHRleHR1cmUtPndpZHRoICA9IHQud2lkdGg7CisgICAgICAgIHRleHR1cmUtPmhlaWdodCA9IHQuaGVpZ2h0OworCisgICAgICAgIC8vIHRleHR1cmUgc2l6ZSBjaGFuZ2VkLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBvbmUKKyAgICAgICAgYm91bmRzLnNldChSZWN0KHQud2lkdGgsIHQuaGVpZ2h0KSk7CisgICAgICAgIGlmICh0LndpZHRoICA9PSB0ZXh0dXJlLT5wb3RXaWR0aCAmJgorICAgICAgICAgICAgdC5oZWlnaHQgPT0gdGV4dHVyZS0+cG90SGVpZ2h0KSB7CisgICAgICAgICAgICAvLyB3ZSBjYW4gZG8gaXQgb25lIHBhc3MKKyAgICAgICAgICAgIGRhdGEgPSB0LmRhdGE7CisgICAgICAgIH0KKworICAgICAgICBpZiAodC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JfNTY1KSB7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAgICAgICAgICAgICAgICAgICAgR0xfUkdCLCB0ZXh0dXJlLT5wb3RXaWR0aCwgdGV4dHVyZS0+cG90SGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgICBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCBkYXRhKTsKKyAgICAgICAgfSBlbHNlIGlmICh0LmZvcm1hdCA9PSBIQUxfUElYRUxfRk9STUFUX1JHQkFfNDQ0NCkgeworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCisgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIHRleHR1cmUtPnBvdFdpZHRoLCB0ZXh0dXJlLT5wb3RIZWlnaHQsIDAsCisgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQsIGRhdGEpOworICAgICAgICB9IGVsc2UgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCQV84ODg4IHx8CisgICAgICAgICAgICAgICAgICAgdC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JYXzg4ODgpIHsKKyAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCB0ZXh0dXJlLT5wb3RXaWR0aCwgdGV4dHVyZS0+cG90SGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1N1cHBvcnRlZFl1dkZvcm1hdCh0LmZvcm1hdCkpIHsKKyAgICAgICAgICAgIC8vIGp1c3Qgc2hvdyB0aGUgWSBwbGFuZSBvZiBZVVYgYnVmZmVycworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCisgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRSwgdGV4dHVyZS0+cG90V2lkdGgsIHRleHR1cmUtPnBvdEhlaWdodCwgMCwKKyAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIG9vcHMsIHdlIGRvbid0IGhhbmRsZSB0aGlzIGZvcm1hdCEKKyAgICAgICAgICAgIExPR0UoInRleHR1cmU9JWQsIHVzaW5nIGZvcm1hdCAlZCwgd2hpY2ggaXMgbm90ICIKKyAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCBieSB0aGUgR0wiLCB0ZXh0dXJlLT5uYW1lLCB0LmZvcm1hdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFkYXRhKSB7CisgICAgICAgIGlmICh0LmZvcm1hdCA9PSBIQUxfUElYRUxfRk9STUFUX1JHQl81NjUpIHsKKyAgICAgICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorICAgICAgICAgICAgICAgICAgICAwLCBib3VuZHMudG9wLCB0LndpZHRoLCBib3VuZHMuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgIEdMX1JHQiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUsCisgICAgICAgICAgICAgICAgICAgIHQuZGF0YSArIGJvdW5kcy50b3AqdC5zdHJpZGUqMik7CisgICAgICAgIH0gZWxzZSBpZiAodC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JBXzQ0NDQpIHsKKyAgICAgICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorICAgICAgICAgICAgICAgICAgICAwLCBib3VuZHMudG9wLCB0LndpZHRoLCBib3VuZHMuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQsCisgICAgICAgICAgICAgICAgICAgIHQuZGF0YSArIGJvdW5kcy50b3AqdC5zdHJpZGUqMik7CisgICAgICAgIH0gZWxzZSBpZiAodC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JBXzg4ODggfHwKKyAgICAgICAgICAgICAgICAgICB0LmZvcm1hdCA9PSBIQUxfUElYRUxfRk9STUFUX1JHQlhfODg4OCkgeworICAgICAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCisgICAgICAgICAgICAgICAgICAgIDAsIGJvdW5kcy50b3AsIHQud2lkdGgsIGJvdW5kcy5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgdC5kYXRhICsgYm91bmRzLnRvcCp0LnN0cmlkZSo0KTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1N1cHBvcnRlZFl1dkZvcm1hdCh0LmZvcm1hdCkpIHsKKyAgICAgICAgICAgIC8vIGp1c3Qgc2hvdyB0aGUgWSBwbGFuZSBvZiBZVVYgYnVmZmVycworICAgICAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCisgICAgICAgICAgICAgICAgICAgIDAsIGJvdW5kcy50b3AsIHQud2lkdGgsIGJvdW5kcy5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICB0LmRhdGEgKyBib3VuZHMudG9wKnQuc3RyaWRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6OmFjdGl2YXRlVGV4dHVyZShjb25zdCBUZXh0dXJlJiB0ZXh0dXJlLCBib29sIGZpbHRlcikKK3sKKyAgICBjb25zdCBHTGVudW0gdGFyZ2V0ID0gZ2V0VGV4dHVyZVRhcmdldCgmdGV4dHVyZSk7CisgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKSB7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS5uYW1lKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfVEVYVFVSRV8yRCk7CisjaWYgZGVmaW5lZChHTF9PRVNfdGV4dHVyZV9leHRlcm5hbCkKKyAgICAgICAgaWYgKEdMRXh0ZW5zaW9uczo6Z2V0SW5zdGFuY2UoKS5oYXZlVGV4dHVyZUV4dGVybmFsKCkpIHsKKyAgICAgICAgICAgIGdsRGlzYWJsZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXh0dXJlLm5hbWUpOworICAgICAgICBnbEVuYWJsZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUyk7CisgICAgICAgIGdsRGlzYWJsZShHTF9URVhUVVJFXzJEKTsKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcngodGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlYWN0aXZhdGVUZXh0dXJlcygpCit7CisgICAgZ2xEaXNhYmxlKEdMX1RFWFRVUkVfMkQpOworI2lmIGRlZmluZWQoR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwpCisgICAgaWYgKEdMRXh0ZW5zaW9uczo6Z2V0SW5zdGFuY2UoKS5oYXZlVGV4dHVyZUV4dGVybmFsKCkpIHsKKyAgICAgICAgZ2xEaXNhYmxlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsKKyAgICB9CisjZW5kaWYKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL1RleHR1cmVNYW5hZ2VyLmggYi9saWJzL3N1cmZhY2VmbGluZ2VyL1RleHR1cmVNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdjMTRlNwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVGV4dHVyZU1hbmFnZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX1RFWFRVUkVfTUFOQUdFUl9ICisjZGVmaW5lIEFORFJPSURfVEVYVFVSRV9NQU5BR0VSX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRlIDxHTEVTL2dsLmg+CisKKyNpbmNsdWRlIDx1aS9SZWdpb24uaD4KKworI2luY2x1ZGUgPHBpeGVsZmxpbmdlci9waXhlbGZsaW5nZXIuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgR0xFeHRlbnNpb25zOworY2xhc3MgR3JhcGhpY0J1ZmZlcjsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0cnVjdCBJbWFnZSB7CisgICAgZW51bSB7IFRFWFRVUkVfMkQ9MCwgVEVYVFVSRV9FWFRFUk5BTD0xIH07CisgICAgSW1hZ2UoKSA6IG5hbWUoLTFVKSwgaW1hZ2UoRUdMX05PX0lNQUdFX0tIUiksIHdpZHRoKDApLCBoZWlnaHQoMCksCisgICAgICAgIHRyYW5zZm9ybSgwKSwgZGlydHkoMSksIHRhcmdldChURVhUVVJFXzJEKSB7IH0KKyAgICBHTHVpbnQgICAgICAgIG5hbWU7CisgICAgRUdMSW1hZ2VLSFIgICBpbWFnZTsKKyAgICBHTHVpbnQgICAgICAgIHdpZHRoOworICAgIEdMdWludCAgICAgICAgaGVpZ2h0OworICAgIHVpbnQzMl90ICAgICAgdHJhbnNmb3JtOworICAgIHVuc2lnbmVkICAgICAgZGlydHkgICAgIDogMTsKKyAgICB1bnNpZ25lZCAgICAgIHRhcmdldCAgICA6IDE7Cit9OworCitzdHJ1Y3QgVGV4dHVyZSA6IHB1YmxpYyBJbWFnZSB7CisgICAgVGV4dHVyZSgpIDogSW1hZ2UoKSwgTlBPVEFkanVzdCgwKSB7IH0KKyAgICBHTHVpbnQgICAgICBwb3RXaWR0aDsKKyAgICBHTHVpbnQgICAgICBwb3RIZWlnaHQ7CisgICAgR0xmbG9hdCAgICAgd1NjYWxlOworICAgIEdMZmxvYXQgICAgIGhTY2FsZTsKKyAgICB1bnNpZ25lZCAgICBOUE9UQWRqdXN0ICA6IDE7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgVGV4dHVyZU1hbmFnZXIgeworICAgIGNvbnN0IEdMRXh0ZW5zaW9ucyYgbUdMRXh0ZW5zaW9uczsKKyAgICBzdGF0aWMgc3RhdHVzX3QgaW5pdFRleHR1cmUoSW1hZ2UqIHRleHR1cmUsIGludDMyX3QgZm9ybWF0KTsKKyAgICBzdGF0aWMgc3RhdHVzX3QgaW5pdFRleHR1cmUoVGV4dHVyZSogdGV4dHVyZSk7CisgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRZdXZGb3JtYXQoaW50IGZvcm1hdCk7CisgICAgc3RhdGljIGJvb2wgaXNZdXZGb3JtYXQoaW50IGZvcm1hdCk7CisgICAgc3RhdGljIEdMZW51bSBnZXRUZXh0dXJlVGFyZ2V0KGNvbnN0IEltYWdlKiBwSW1hZ2UpOworcHVibGljOgorCisgICAgVGV4dHVyZU1hbmFnZXIoKTsKKworICAgIC8vIGxvYWQgYml0bWFwIGRhdGEgaW50byB0aGUgYWN0aXZlIGJ1ZmZlcgorICAgIHN0YXR1c190IGxvYWRUZXh0dXJlKFRleHR1cmUqIHRleHR1cmUsCisgICAgICAgICAgICBjb25zdCBSZWdpb24mIGRpcnR5LCBjb25zdCBHR0xTdXJmYWNlJiB0KTsKKworICAgIC8vIG1ha2UgYWN0aXZlIGJ1ZmZlciBhbiBFR0xJbWFnZSBpZiBuZWVkZWQKKyAgICBzdGF0dXNfdCBpbml0RWdsSW1hZ2UoSW1hZ2UqIHRleHR1cmUsCisgICAgICAgICAgICBFR0xEaXNwbGF5IGRweSwgY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJ1ZmZlcik7CisKKyAgICAvLyBhY3RpdmF0ZSBhIHRleHR1cmUKKyAgICBzdGF0aWMgdm9pZCBhY3RpdmF0ZVRleHR1cmUoY29uc3QgVGV4dHVyZSYgdGV4dHVyZSwgYm9vbCBmaWx0ZXIpOworCisgICAgLy8gZGVhY3RpdmF0ZSBhIHRleHR1cmUKKyAgICBzdGF0aWMgdm9pZCBkZWFjdGl2YXRlVGV4dHVyZXMoKTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gQU5EUk9JRF9URVhUVVJFX01BTkFHRVJfSApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9Ub2tlbml6ZXIuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9Ub2tlbml6ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTNhMjM5Li4wMDAwMDAwCi0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvVG9rZW5pemVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlICJUb2tlbml6ZXIuaCIKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLUFORFJPSURfQkFTSUNfVFlQRVNfVFJBSVRTKFRva2VuaXplcjo6cnVuX3QpCi0KLVRva2VuaXplcjo6VG9rZW5pemVyKCkKLXsKLX0KLQotVG9rZW5pemVyOjpUb2tlbml6ZXIoY29uc3QgVG9rZW5pemVyJiBvdGhlcikKLSAgICA6IG1SYW5nZXMob3RoZXIubVJhbmdlcykKLXsKLX0KLQotVG9rZW5pemVyOjp+VG9rZW5pemVyKCkKLXsKLX0KLQotdWludDMyX3QgVG9rZW5pemVyOjphY3F1aXJlKCkKLXsKLSAgICBpZiAoIW1SYW5nZXMuc2l6ZSgpIHx8IG1SYW5nZXNbMF0uZmlyc3QpIHsKLSAgICAgICAgX2luc2VydFRva2VuQXQoMCwwKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIC8vIGp1c3QgZXh0ZW5kIHRoZSBmaXJzdCBydW4KLSAgICBjb25zdCBydW5fdCYgcnVuID0gbVJhbmdlc1swXTsKLSAgICB1aW50MzJfdCB0b2tlbiA9IHJ1bi5maXJzdCArIHJ1bi5sZW5ndGg7Ci0gICAgX2luc2VydFRva2VuQXQodG9rZW4sIDEpOwotICAgIHJldHVybiB0b2tlbjsKLX0KLQotYm9vbCBUb2tlbml6ZXI6OmlzQWNxdWlyZWQodWludDMyX3QgdG9rZW4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChfaW5kZXhPcmRlck9mKHRva2VuKSA+PSAwKTsKLX0KLQotc3RhdHVzX3QgVG9rZW5pemVyOjpyZXNlcnZlKHVpbnQzMl90IHRva2VuKQotewotICAgIHNpemVfdCBvOwotICAgIGNvbnN0IHNzaXplX3QgaSA9IF9pbmRleE9yZGVyT2YodG9rZW4sICZvKTsKLSAgICBpZiAoaSA+PSAwKSB7Ci0gICAgICAgIHJldHVybiBCQURfVkFMVUU7IC8vIHRoaXMgdG9rZW4gaXMgYWxyZWFkeSB0YWtlbgotICAgIH0KLSAgICBzc2l6ZV90IGVyciA9IF9pbnNlcnRUb2tlbkF0KHRva2VuLCBvKTsKLSAgICByZXR1cm4gKGVycjwwKSA/IGVyciA6IHN0YXR1c190KE5PX0VSUk9SKTsKLX0KLQotc3RhdHVzX3QgVG9rZW5pemVyOjpyZWxlYXNlKHVpbnQzMl90IHRva2VuKQotewotICAgIGNvbnN0IHNzaXplX3QgaSA9IF9pbmRleE9yZGVyT2YodG9rZW4pOwotICAgIGlmIChpID49IDApIHsKLSAgICAgICAgY29uc3QgcnVuX3QmIHJ1biA9IG1SYW5nZXNbaV07Ci0gICAgICAgIGlmICgodG9rZW4gPj0gcnVuLmZpcnN0KSAmJiAodG9rZW4gPCBydW4uZmlyc3QrcnVuLmxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8vIHRva2VuIGluIHRoaXMgcmFuZ2UsIHdlIG5lZWQgdG8gc3BsaXQKLSAgICAgICAgICAgIHJ1bl90JiBydW4gPSBtUmFuZ2VzLmVkaXRJdGVtQXQoaSk7Ci0gICAgICAgICAgICBpZiAoKHRva2VuID09IHJ1bi5maXJzdCkgfHwgKHRva2VuID09IHJ1bi5maXJzdCtydW4ubGVuZ3RoLTEpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuID09IHJ1bi5maXJzdCkgewotICAgICAgICAgICAgICAgICAgICBydW4uZmlyc3QgKz0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcnVuLmxlbmd0aCAtPSAxOwotICAgICAgICAgICAgICAgIGlmIChydW4ubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gWFhYOiBzaG91bGQgd2Ugc3lzdGVtYXRpY2FsbHkgcmVtb3ZlIGEgcnVuIHRoYXQncyBlbXB0eT8KLSAgICAgICAgICAgICAgICAgICAgbVJhbmdlcy5yZW1vdmVJdGVtc0F0KGkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gc3BsaXQgdGhlIHJ1bgotICAgICAgICAgICAgICAgIHJ1bl90IG5ld19ydW47Ci0gICAgICAgICAgICAgICAgbmV3X3J1bi5maXJzdCA9IHRva2VuKzE7Ci0gICAgICAgICAgICAgICAgbmV3X3J1bi5sZW5ndGggPSBydW4uZmlyc3QrcnVuLmxlbmd0aCAtIG5ld19ydW4uZmlyc3Q7Ci0gICAgICAgICAgICAgICAgcnVuLmxlbmd0aCA9IHRva2VuIC0gcnVuLmZpcnN0OwotICAgICAgICAgICAgICAgIG1SYW5nZXMuaW5zZXJ0QXQobmV3X3J1biwgaSsxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gTkFNRV9OT1RfRk9VTkQ7Ci19Ci0KLXNzaXplX3QgVG9rZW5pemVyOjpfaW5kZXhPcmRlck9mKHVpbnQzMl90IHRva2VuLCBzaXplX3QqIG9yZGVyKSBjb25zdAotewotICAgIC8vIGJpbmFyeSBzZWFyY2gKLSAgICBzc2l6ZV90IGVyciA9IE5BTUVfTk9UX0ZPVU5EOwotICAgIHNzaXplX3QgbCA9IDA7Ci0gICAgc3NpemVfdCBoID0gbVJhbmdlcy5zaXplKCktMTsKLSAgICBzc2l6ZV90IG1pZDsKLSAgICBjb25zdCBydW5fdCogYSA9IG1SYW5nZXMuYXJyYXkoKTsKLSAgICB3aGlsZSAobCA8PSBoKSB7Ci0gICAgICAgIG1pZCA9IGwgKyAoaCAtIGwpLzI7Ci0gICAgICAgIGNvbnN0IHJ1bl90KiBjb25zdCBjdXJyID0gYSArIG1pZDsKLSAgICAgICAgaW50IGMgPSAwOwotICAgICAgICBpZiAodG9rZW4gPCBjdXJyLT5maXJzdCkgICAgICAgICAgICAgICAgICAgICAgICBjID0gMTsKLSAgICAgICAgZWxzZSBpZiAodG9rZW4gPj0gY3Vyci0+Zmlyc3QrY3Vyci0+bGVuZ3RoKSAgICAgYyA9IC0xOwotICAgICAgICBpZiAoYyA9PSAwKSB7Ci0gICAgICAgICAgICBlcnIgPSBsID0gbWlkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA8IDApIHsKLSAgICAgICAgICAgIGwgPSBtaWQgKyAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaCA9IG1pZCAtIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG9yZGVyKSAqb3JkZXIgPSBsOwotICAgIHJldHVybiBlcnI7Ci19Ci0KLXNzaXplX3QgVG9rZW5pemVyOjpfaW5zZXJ0VG9rZW5BdCh1aW50MzJfdCB0b2tlbiwgc2l6ZV90IGluZGV4KQotewotICAgIGNvbnN0IHNpemVfdCBjID0gbVJhbmdlcy5zaXplKCk7Ci0KLSAgICBpZiAoaW5kZXggPj0gMSkgewotICAgICAgICAvLyBkbyB3ZSBuZWVkIHRvIG1lcmdlIHdpdGggdGhlIHByZXZpb3VzIHJ1bj8KLSAgICAgICAgcnVuX3QmIHAgPSBtUmFuZ2VzLmVkaXRJdGVtQXQoaW5kZXgtMSk7Ci0gICAgICAgIGlmIChwLmZpcnN0K3AubGVuZ3RoID09IHRva2VuKSB7Ci0gICAgICAgICAgICBwLmxlbmd0aCArPSAxOwotICAgICAgICAgICAgaWYgKGluZGV4IDwgYykgewotICAgICAgICAgICAgICAgIGNvbnN0IHJ1bl90JiBuID0gbVJhbmdlc1tpbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuKzEgPT0gbi5maXJzdCkgewotICAgICAgICAgICAgICAgICAgICBwLmxlbmd0aCArPSBuLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgbVJhbmdlcy5yZW1vdmVJdGVtc0F0KGluZGV4KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKGluZGV4IDwgYykgewotICAgICAgICAvLyBkbyB3ZSBuZWVkIHRvIG1lcmdlIHdpdGggdGhlIG5leHQgcnVuPwotICAgICAgICBydW5fdCYgbiA9IG1SYW5nZXMuZWRpdEl0ZW1BdChpbmRleCk7Ci0gICAgICAgIGlmICh0b2tlbisxID09IG4uZmlyc3QpIHsKLSAgICAgICAgICAgIG4uZmlyc3QgLT0gMTsKLSAgICAgICAgICAgIG4ubGVuZ3RoICs9IDE7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbVJhbmdlcy5pbnNlcnRBdChydW5fdCh0b2tlbiwxKSwgaW5kZXgpOwotfQotCi12b2lkIFRva2VuaXplcjo6ZHVtcCgpIGNvbnN0Ci17Ci0gICAgY29uc3QgcnVuX3QqIHJhbmdlcyA9IG1SYW5nZXMuYXJyYXkoKTsKLSAgICBjb25zdCBzaXplX3QgYyA9IG1SYW5nZXMuc2l6ZSgpOwotICAgIHByaW50ZigiVG9rZW5pemVyICglcCwgc2l6ZSA9ICVkKVxuIiwgdGhpcywgaW50KGMpKTsKLSAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGMgOyBpKyspIHsKLSAgICAgICAgcHJpbnRmKCIldTogKCV1LCAldSlcbiIsIGksCi0gICAgICAgICAgICAgICAgdWludDMyX3QocmFuZ2VzW2ldLmZpcnN0KSwgdWludDMyX3QocmFuZ2VzW2ldLmxlbmd0aCkpOwotICAgIH0KLX0KLQotfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKLQpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9Ub2tlbml6ZXIuaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVG9rZW5pemVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMzA1N2QuLjAwMDAwMDAKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9Ub2tlbml6ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIEFORFJPSURfVE9LRU5JWkVSX0gKLSNkZWZpbmUgQU5EUk9JRF9UT0tFTklaRVJfSAotCi0jaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8dXRpbHMvRXJyb3JzLmg+Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1jbGFzcyBUb2tlbml6ZXIKLXsKLXB1YmxpYzoKLSAgICAgICAgICAgICAgICBUb2tlbml6ZXIoKTsKLSAgICAgICAgICAgICAgICBUb2tlbml6ZXIoY29uc3QgVG9rZW5pemVyJiBvdGhlcik7Ci0gICAgICAgICAgICAgICAgflRva2VuaXplcigpOwotCi0gICAgdWludDMyX3QgICAgYWNxdWlyZSgpOwotICAgIHN0YXR1c190ICAgIHJlc2VydmUodWludDMyX3QgdG9rZW4pOwotICAgIHN0YXR1c190ICAgIHJlbGVhc2UodWludDMyX3QgdG9rZW4pOwotICAgIGJvb2wgICAgICAgIGlzQWNxdWlyZWQodWludDMyX3QgdG9rZW4pIGNvbnN0OwotCi0gICAgdm9pZCBkdW1wKCkgY29uc3Q7Ci0KLSAgICBzdHJ1Y3QgcnVuX3QgewotICAgICAgICBydW5fdCgpIHt9OwotICAgICAgICBydW5fdCh1aW50MzJfdCBmLCB1aW50MzJfdCBsKSA6IGZpcnN0KGYpLCBsZW5ndGgobCkge30KLSAgICAgICAgdWludDMyX3QgICAgZmlyc3Q7Ci0gICAgICAgIHVpbnQzMl90ICAgIGxlbmd0aDsKLSAgICB9OwotcHJpdmF0ZToKLSAgICBzc2l6ZV90IF9pbmRleE9yZGVyT2YodWludDMyX3QgdG9rZW4sIHNpemVfdCogb3JkZXI9MCkgY29uc3Q7Ci0gICAgc3NpemVfdCBfaW5zZXJ0VG9rZW5BdCh1aW50MzJfdCB0b2tlbiwgc2l6ZV90IGluZGV4KTsKLSAgICBWZWN0b3I8cnVuX3Q+ICAgbVJhbmdlczsKLX07Ci0KLX07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2VuZGlmIC8vIEFORFJPSURfVE9LRU5JWkVSX0gKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvVHJhbnNmb3JtLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVHJhbnNmb3JtLmNwcAppbmRleCAxNzVmOTg5Li41ZTI3Y2M5IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL1RyYW5zZm9ybS5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9UcmFuc2Zvcm0uY3BwCkBAIC0yMjksMTQgKzIyOSwxMyBAQAogICAgIHJldHVybiByOwogfQogCi12b2lkIFRyYW5zZm9ybTo6dHJhbnNmb3JtKGZpeGVkMTYxNiogcG9pbnQsIGludCB4LCBpbnQgeSkgY29uc3QKK3ZvaWQgVHJhbnNmb3JtOjp0cmFuc2Zvcm0oZmxvYXQqIHBvaW50LCBpbnQgeCwgaW50IHkpIGNvbnN0CiB7Ci0gICAgY29uc3QgZmxvYXQgdG9GaXhlZCA9IDY1NTM2LjBmOwogICAgIGNvbnN0IG1hdDMzJiBNKG1NYXRyaXgpOwogICAgIHZlYzIgdih4LCB5KTsKICAgICB2ID0gdHJhbnNmb3JtKHYpOwotICAgIHBvaW50WzBdID0gdlswXSAqIHRvRml4ZWQ7Ci0gICAgcG9pbnRbMV0gPSB2WzFdICogdG9GaXhlZDsKKyAgICBwb2ludFswXSA9IHZbMF07CisgICAgcG9pbnRbMV0gPSB2WzFdOwogfQogCiBSZWN0IFRyYW5zZm9ybTo6bWFrZUJvdW5kcyhpbnQgdywgaW50IGgpIGNvbnN0CmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL1RyYW5zZm9ybS5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9UcmFuc2Zvcm0uaAppbmRleCAyZTViODkzLi4yMGZhMTFhIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL1RyYW5zZm9ybS5oCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVHJhbnNmb3JtLmgKQEAgLTM3LDggKzM3LDYgQEAKICAgICAgICAgICAgZXhwbGljaXQgVHJhbnNmb3JtKHVpbnQzMl90IG9yaWVudGF0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgflRyYW5zZm9ybSgpOwogCi0gICAgICAgICAgICB0eXBlZGVmIGludDMyX3QgZml4ZWQxNjE2OwotCiAgICAgICAgICAgICAvLyBGSVhNRTogbXVzdCBtYXRjaCBPVkVSTEFZX1RSQU5TRk9STV8qLCBwdWxsIGZyb20gaGFyZHdhcmUuaAogICAgICAgICAgICAgZW51bSBvcmllbnRhdGlvbl9mbGFncyB7CiAgICAgICAgICAgICAgICAgUk9UXzAgICA9IDB4MDAwMDAwMDAsCkBAIC03Niw3ICs3NCw3IEBACiAKICAgICAgICAgICAgIC8vIHRyYW5zZm9ybSBkYXRhCiAgICAgICAgICAgICBSZWN0ICAgIG1ha2VCb3VuZHMoaW50IHcsIGludCBoKSBjb25zdDsKLSAgICAgICAgICAgIHZvaWQgICAgdHJhbnNmb3JtKGZpeGVkMTYxNiogcG9pbnQsIGludCB4LCBpbnQgeSkgY29uc3Q7CisgICAgICAgICAgICB2b2lkICAgIHRyYW5zZm9ybShmbG9hdCogcG9pbnQsIGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgICAgICAgICBSZWdpb24gIHRyYW5zZm9ybShjb25zdCBSZWdpb24mIHJlZykgY29uc3Q7CiAgICAgICAgICAgICBUcmFuc2Zvcm0gb3BlcmF0b3IgKiAoY29uc3QgVHJhbnNmb3JtJiByaHMpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9BbmRyb2lkLm1rIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvQW5kcm9pZC5tawppbmRleCBmZTg1YjM0Li5jZTNjNzFhIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9BbmRyb2lkLm1rCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0FuZHJvaWQubWsKQEAgLTQsNyArNCw3IEBACiBMT0NBTF9TUkNfRklMRVM6PSBcCiAJSVN1cmZhY2VDb21wb3Nlci5jcHAgXAogCUlTdXJmYWNlLmNwcCBcCi0JSVN1cmZhY2VGbGluZ2VyQ2xpZW50LmNwcCBcCisJSVN1cmZhY2VDb21wb3NlckNsaWVudC5jcHAgXAogCUxheWVyU3RhdGUuY3BwIFwKIAlTaGFyZWRCdWZmZXJTdGFjay5jcHAgXAogCVN1cmZhY2UuY3BwIFwKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0lTdXJmYWNlLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0lTdXJmYWNlLmNwcAppbmRleCBiYjg2MTk5Li43MDQ5ZDllIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZS5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2UuY3BwCkBAIC03MSwxMSArNzEsMTUgQEAKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBidWZmZXJJZHgsIGludCB1c2FnZSkKKyAgICB2aXJ0dWFsIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwKKyAgICAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdXNhZ2UpCiAgICAgewogICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CiAgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKICAgICAgICAgZGF0YS53cml0ZUludDMyKGJ1ZmZlcklkeCk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMih3KTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGgpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoZm9ybWF0KTsKICAgICAgICAgZGF0YS53cml0ZUludDMyKHVzYWdlKTsKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KFJFUVVFU1RfQlVGRkVSLCBkYXRhLCAmcmVwbHkpOwogICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXIgPSBuZXcgR3JhcGhpY0J1ZmZlcigpOwpAQCAtODMsNiArODcsMTYgQEAKICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHN0YXR1c190IHNldEJ1ZmZlckNvdW50KGludCBidWZmZXJDb3VudCkKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoYnVmZmVyQ291bnQpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoU0VUX0JVRkZFUl9DT1VOVCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgc3RhdHVzX3QgZXJyID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCiAgICAgdmlydHVhbCBzdGF0dXNfdCByZWdpc3RlckJ1ZmZlcnMoY29uc3QgQnVmZmVySGVhcCYgYnVmZmVycykKICAgICB7CiAgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKQEAgLTE0MCwxMiArMTU0LDIyIEBACiAgICAgICAgIGNhc2UgUkVRVUVTVF9CVUZGRVI6IHsKICAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZSwgZGF0YSwgcmVwbHkpOwogICAgICAgICAgICAgaW50IGJ1ZmZlcklkeCA9IGRhdGEucmVhZEludDMyKCk7Ci0gICAgICAgICAgICBpbnQgdXNhZ2UgPSBkYXRhLnJlYWRJbnQzMigpOwotICAgICAgICAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyKHJlcXVlc3RCdWZmZXIoYnVmZmVySWR4LCB1c2FnZSkpOworICAgICAgICAgICAgdWludDMyX3QgdyA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICB1aW50MzJfdCBoID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIHVpbnQzMl90IGZvcm1hdCA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICB1aW50MzJfdCB1c2FnZSA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXIocmVxdWVzdEJ1ZmZlcihidWZmZXJJZHgsIHcsIGgsIGZvcm1hdCwgdXNhZ2UpKTsKICAgICAgICAgICAgIGlmIChidWZmZXIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgICAgICAgICAgcmV0dXJuIHJlcGx5LT53cml0ZSgqYnVmZmVyKTsKICAgICAgICAgfQorICAgICAgICBjYXNlIFNFVF9CVUZGRVJfQ09VTlQ6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZSwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgaW50IGJ1ZmZlckNvdW50ID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIHN0YXR1c190IGVyciA9IHNldEJ1ZmZlckNvdW50KGJ1ZmZlckNvdW50KTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKGVycik7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBSRUdJU1RFUl9CVUZGRVJTOiB7CiAgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2UsIGRhdGEsIHJlcGx5KTsKICAgICAgICAgICAgIEJ1ZmZlckhlYXAgYnVmZmVyOwpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VDb21wb3Nlci5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZUNvbXBvc2VyLmNwcAppbmRleCBiNmY0ZTI0Li41YzExMWY2IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZUNvbXBvc2VyLmNwcAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZUNvbXBvc2VyLmNwcApAQCAtNDYsMTMgKzQ2LDIyIEBACiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgc3A8SVN1cmZhY2VGbGluZ2VyQ2xpZW50PiBjcmVhdGVDb25uZWN0aW9uKCkKKyAgICB2aXJ0dWFsIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNyZWF0ZUNvbm5lY3Rpb24oKQogICAgIHsKICAgICAgICAgdWludDMyX3QgbjsKICAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OwogICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSVN1cmZhY2VDb21wb3Nlcjo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KEJuU3VyZmFjZUNvbXBvc2VyOjpDUkVBVEVfQ09OTkVDVElPTiwgZGF0YSwgJnJlcGx5KTsKLSAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElTdXJmYWNlRmxpbmdlckNsaWVudD4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKKyAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+KHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKSk7CisgICAgfQorCisgICAgdmlydHVhbCBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjcmVhdGVDbGllbnRDb25uZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IG47CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlQ29tcG9zZXI6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChCblN1cmZhY2VDb21wb3Nlcjo6Q1JFQVRFX0NMSUVOVF9DT05ORUNUSU9OLCBkYXRhLCAmcmVwbHkpOworICAgICAgICByZXR1cm4gaW50ZXJmYWNlX2Nhc3Q8SVN1cmZhY2VDb21wb3NlckNsaWVudD4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHNwPElNZW1vcnlIZWFwPiBnZXRDYmxrKCkgY29uc3QKQEAgLTEzNiw2ICsxNDUsMTEgQEAKICAgICAgICAgICAgIHNwPElCaW5kZXI+IGIgPSBjcmVhdGVDb25uZWN0aW9uKCktPmFzQmluZGVyKCk7CiAgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIoYik7CiAgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGNhc2UgQ1JFQVRFX0NMSUVOVF9DT05ORUNUSU9OOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2VDb21wb3NlciwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgc3A8SUJpbmRlcj4gYiA9IGNyZWF0ZUNsaWVudENvbm5lY3Rpb24oKS0+YXNCaW5kZXIoKTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihiKTsKKyAgICAgICAgfSBicmVhazsKICAgICAgICAgY2FzZSBPUEVOX0dMT0JBTF9UUkFOU0FDVElPTjogewogICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlQ29tcG9zZXIsIGRhdGEsIHJlcGx5KTsKICAgICAgICAgICAgIG9wZW5HbG9iYWxUcmFuc2FjdGlvbigpOwpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VDb21wb3NlckNsaWVudC5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZUNvbXBvc2VyQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2MxZjhlCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VDb21wb3NlckNsaWVudC5jcHAKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyB0YWcgYXMgc3VyZmFjZWZsaW5nZXIKKyNkZWZpbmUgTE9HX1RBRyAiU3VyZmFjZUZsaW5nZXIiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8YmluZGVyL1BhcmNlbC5oPgorI2luY2x1ZGUgPGJpbmRlci9JTWVtb3J5Lmg+CisjaW5jbHVkZSA8YmluZGVyL0lQQ1RocmVhZFN0YXRlLmg+CisjaW5jbHVkZSA8YmluZGVyL0lTZXJ2aWNlTWFuYWdlci5oPgorCisjaW5jbHVkZSA8dWkvUG9pbnQuaD4KKyNpbmNsdWRlIDx1aS9SZWN0Lmg+CisKKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgorI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxwcml2YXRlL3N1cmZhY2VmbGluZ2VyL0xheWVyU3RhdGUuaD4KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qIGlkZWFsbHkgQUlEX0dSQVBISUNTIHdvdWxkIGJlIGluIGEgc2VtaS1wdWJsaWMgaGVhZGVyCisgKiBvciB0aGVyZSB3b3VsZCBiZSBhIHdheSB0byBtYXAgYSB1c2VyL2dyb3VwIG5hbWUgdG8gaXRzIGlkCisgKi8KKyNpZm5kZWYgQUlEX0dSQVBISUNTCisjZGVmaW5lIEFJRF9HUkFQSElDUyAxMDAzCisjZW5kaWYKKworI2RlZmluZSBMSUtFTFkoIGV4cCApICAgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCB0cnVlICApKQorI2RlZmluZSBVTkxJS0VMWSggZXhwICkgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCBmYWxzZSApKQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitlbnVtIHsKKyAgICBHRVRfQ0JMSyA9IElCaW5kZXI6OkZJUlNUX0NBTExfVFJBTlNBQ1RJT04sCisgICAgR0VUX1RPS0VOLAorICAgIENSRUFURV9TVVJGQUNFLAorICAgIERFU1RST1lfU1VSRkFDRSwKKyAgICBTRVRfU1RBVEUKK307CisKK2NsYXNzIEJwU3VyZmFjZUNvbXBvc2VyQ2xpZW50IDogcHVibGljIEJwSW50ZXJmYWNlPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+Cit7CitwdWJsaWM6CisgICAgQnBTdXJmYWNlQ29tcG9zZXJDbGllbnQoY29uc3Qgc3A8SUJpbmRlcj4mIGltcGwpCisgICAgICAgIDogQnBJbnRlcmZhY2U8SVN1cmZhY2VDb21wb3NlckNsaWVudD4oaW1wbCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gZ2V0Q29udHJvbEJsb2NrKCkgY29uc3QKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChHRVRfQ0JMSywgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZW1vcnlIZWFwPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgc3NpemVfdCBnZXRUb2tlbkZvclN1cmZhY2UoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXIpIGNvbnN0CisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlU3Ryb25nQmluZGVyKHN1ci0+YXNCaW5kZXIoKSk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChHRVRfVE9LRU4sIGRhdGEsICZyZXBseSk7CisgICAgICAgIHJldHVybiByZXBseS5yZWFkSW50MzIoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHNwPElTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKCBzdXJmYWNlX2RhdGFfdCogcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nOCYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWxGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQorICAgIHsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSVN1cmZhY2VDb21wb3NlckNsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKHBpZCk7CisgICAgICAgIGRhdGEud3JpdGVTdHJpbmc4KG5hbWUpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoZGlzcGxheSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMih3KTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGgpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoZm9ybWF0KTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGZsYWdzKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KENSRUFURV9TVVJGQUNFLCBkYXRhLCAmcmVwbHkpOworICAgICAgICBwYXJhbXMtPnJlYWRGcm9tUGFyY2VsKHJlcGx5KTsKKyAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElTdXJmYWNlPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgc3RhdHVzX3QgZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHNpZCkKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihzaWQpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoREVTVFJPWV9TVVJGQUNFLCBkYXRhLCAmcmVwbHkpOworICAgICAgICByZXR1cm4gcmVwbHkucmVhZEludDMyKCk7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoY291bnQpOworICAgICAgICBmb3IgKGludCBpPTAgOyBpPGNvdW50IDsgaSsrKQorICAgICAgICAgICAgc3RhdGVzW2ldLndyaXRlKGRhdGEpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoU0VUX1NUQVRFLCBkYXRhLCAmcmVwbHkpOworICAgICAgICByZXR1cm4gcmVwbHkucmVhZEludDMyKCk7CisgICAgfQorfTsKKworSU1QTEVNRU5UX01FVEFfSU5URVJGQUNFKFN1cmZhY2VDb21wb3NlckNsaWVudCwgImFuZHJvaWQudWkuSVN1cmZhY2VDb21wb3NlckNsaWVudCIpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXR1c190IEJuU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpvblRyYW5zYWN0KAorICAgIHVpbnQzMl90IGNvZGUsIGNvbnN0IFBhcmNlbCYgZGF0YSwgUGFyY2VsKiByZXBseSwgdWludDMyX3QgZmxhZ3MpCit7CisgICAgLy8gY29kZXMgdGhhdCBkb24ndCByZXF1aXJlIHBlcm1pc3Npb24gY2hlY2sKKworICAgIHN3aXRjaChjb2RlKSB7CisgICAgICAgIGNhc2UgR0VUX0NCTEs6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZUNvbXBvc2VyQ2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBzcDxJTWVtb3J5SGVhcD4gY3RsKGdldENvbnRyb2xCbG9jaygpKTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihjdGwtPmFzQmluZGVyKCkpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOworICAgICAgICBjYXNlIEdFVF9UT0tFTjogeworICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlQ29tcG9zZXJDbGllbnQsIGRhdGEsIHJlcGx5KTsKKyAgICAgICAgICAgIHNwPElTdXJmYWNlPiBzdXIgPSBpbnRlcmZhY2VfY2FzdDxJU3VyZmFjZT4oZGF0YS5yZWFkU3Ryb25nQmluZGVyKCkpOworICAgICAgICAgICAgc3NpemVfdCB0b2tlbiA9IGdldFRva2VuRm9yU3VyZmFjZShzdXIpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIodG9rZW4pOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOworICAgIH0KKworICAgIC8vIHRoZXNlIG11c3QgYmUgY2hlY2tlZAorCisgICAgIElQQ1RocmVhZFN0YXRlKiBpcGMgPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpOworICAgICBjb25zdCBpbnQgcGlkID0gaXBjLT5nZXRDYWxsaW5nUGlkKCk7CisgICAgIGNvbnN0IGludCB1aWQgPSBpcGMtPmdldENhbGxpbmdVaWQoKTsKKyAgICAgY29uc3QgaW50IHNlbGZfcGlkID0gZ2V0cGlkKCk7CisgICAgIGlmIChVTkxJS0VMWShwaWQgIT0gc2VsZl9waWQgJiYgdWlkICE9IEFJRF9HUkFQSElDUykpIHsKKyAgICAgICAgIC8vIHdlJ3JlIGNhbGxlZCBmcm9tIGEgZGlmZmVyZW50IHByb2Nlc3MsIGRvIHRoZSByZWFsIGNoZWNrCisgICAgICAgICBpZiAoIWNoZWNrQ2FsbGluZ1Blcm1pc3Npb24oCisgICAgICAgICAgICAgICAgIFN0cmluZzE2KCJhbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX1NVUkZBQ0VfRkxJTkdFUiIpKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBMT0dFKCJQZXJtaXNzaW9uIERlbmlhbDogIgorICAgICAgICAgICAgICAgICAgICAgImNhbid0IG9wZW5HbG9iYWxUcmFuc2FjdGlvbiBwaWQ9JWQsIHVpZD0lZCIsIHBpZCwgdWlkKTsKKyAgICAgICAgICAgICByZXR1cm4gUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICB9CisgICAgIH0KKworICAgICBzd2l0Y2goY29kZSkgeworICAgICAgICBjYXNlIENSRUFURV9TVVJGQUNFOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2VDb21wb3NlckNsaWVudCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgc3VyZmFjZV9kYXRhX3QgcGFyYW1zOworICAgICAgICAgICAgaW50MzJfdCBwaWQgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgU3RyaW5nOCBuYW1lID0gZGF0YS5yZWFkU3RyaW5nOCgpOworICAgICAgICAgICAgRGlzcGxheUlEIGRpc3BsYXkgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgdWludDMyX3QgdyA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICB1aW50MzJfdCBoID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIFBpeGVsRm9ybWF0IGZvcm1hdCA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBzcDxJU3VyZmFjZT4gcyA9IGNyZWF0ZVN1cmZhY2UoJnBhcmFtcywgcGlkLCBuYW1lLCBkaXNwbGF5LCB3LCBoLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIGZsYWdzKTsKKyAgICAgICAgICAgIHBhcmFtcy53cml0ZVRvUGFyY2VsKHJlcGx5KTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihzLT5hc0JpbmRlcigpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgY2FzZSBERVNUUk9ZX1NVUkZBQ0U6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZUNvbXBvc2VyQ2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMiggZGVzdHJveVN1cmZhY2UoIGRhdGEucmVhZEludDMyKCkgKSApOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOworICAgICAgICBjYXNlIFNFVF9TVEFURTogeworICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlQ29tcG9zZXJDbGllbnQsIGRhdGEsIHJlcGx5KTsKKyAgICAgICAgICAgIGludDMyX3QgY291bnQgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgbGF5ZXJfc3RhdGVfdCogc3RhdGVzID0gbmV3IGxheWVyX3N0YXRlX3RbY291bnRdOworICAgICAgICAgICAgZm9yIChpbnQgaT0wIDsgaTxjb3VudCA7IGkrKykKKyAgICAgICAgICAgICAgICBzdGF0ZXNbaV0ucmVhZChkYXRhKTsKKyAgICAgICAgICAgIHN0YXR1c190IGVyciA9IHNldFN0YXRlKGNvdW50LCBzdGF0ZXMpOworICAgICAgICAgICAgZGVsZXRlIFtdIHN0YXRlczsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKGVycik7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQkJpbmRlcjo6b25UcmFuc2FjdChjb2RlLCBkYXRhLCByZXBseSwgZmxhZ3MpOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0dXNfdCBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdDo6cmVhZEZyb21QYXJjZWwoY29uc3QgUGFyY2VsJiBwYXJjZWwpCit7CisgICAgdG9rZW4gICAgPSBwYXJjZWwucmVhZEludDMyKCk7CisgICAgaWRlbnRpdHkgPSBwYXJjZWwucmVhZEludDMyKCk7CisgICAgd2lkdGggICAgPSBwYXJjZWwucmVhZEludDMyKCk7CisgICAgaGVpZ2h0ICAgPSBwYXJjZWwucmVhZEludDMyKCk7CisgICAgZm9ybWF0ICAgPSBwYXJjZWwucmVhZEludDMyKCk7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitzdGF0dXNfdCBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdDo6d3JpdGVUb1BhcmNlbChQYXJjZWwqIHBhcmNlbCkgY29uc3QKK3sKKyAgICBwYXJjZWwtPndyaXRlSW50MzIodG9rZW4pOworICAgIHBhcmNlbC0+d3JpdGVJbnQzMihpZGVudGl0eSk7CisgICAgcGFyY2VsLT53cml0ZUludDMyKHdpZHRoKTsKKyAgICBwYXJjZWwtPndyaXRlSW50MzIoaGVpZ2h0KTsKKyAgICBwYXJjZWwtPndyaXRlSW50MzIoZm9ybWF0KTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZUZsaW5nZXJDbGllbnQuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VGbGluZ2VyQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVmOTZkNy4uMDAwMDAwMAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZUZsaW5nZXJDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0vLyB0YWcgYXMgc3VyZmFjZWZsaW5nZXIKLSNkZWZpbmUgTE9HX1RBRyAiU3VyZmFjZUZsaW5nZXIiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCi0jaW5jbHVkZSA8YmluZGVyL1BhcmNlbC5oPgotI2luY2x1ZGUgPGJpbmRlci9JTWVtb3J5Lmg+Ci0jaW5jbHVkZSA8YmluZGVyL0lQQ1RocmVhZFN0YXRlLmg+Ci0jaW5jbHVkZSA8YmluZGVyL0lTZXJ2aWNlTWFuYWdlci5oPgotCi0jaW5jbHVkZSA8dWkvUG9pbnQuaD4KLSNpbmNsdWRlIDx1aS9SZWN0Lmg+Ci0KLSNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgotI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oPgotI2luY2x1ZGUgPHByaXZhdGUvc3VyZmFjZWZsaW5nZXIvTGF5ZXJTdGF0ZS5oPgotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLyogaWRlYWxseSBBSURfR1JBUEhJQ1Mgd291bGQgYmUgaW4gYSBzZW1pLXB1YmxpYyBoZWFkZXIKLSAqIG9yIHRoZXJlIHdvdWxkIGJlIGEgd2F5IHRvIG1hcCBhIHVzZXIvZ3JvdXAgbmFtZSB0byBpdHMgaWQKLSAqLwotI2lmbmRlZiBBSURfR1JBUEhJQ1MKLSNkZWZpbmUgQUlEX0dSQVBISUNTIDEwMDMKLSNlbmRpZgotCi0jZGVmaW5lIExJS0VMWSggZXhwICkgICAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIHRydWUgICkpCi0jZGVmaW5lIFVOTElLRUxZKCBleHAgKSAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIGZhbHNlICkpCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLWVudW0gewotICAgIEdFVF9DQkxLID0gSUJpbmRlcjo6RklSU1RfQ0FMTF9UUkFOU0FDVElPTiwKLSAgICBDUkVBVEVfU1VSRkFDRSwKLSAgICBERVNUUk9ZX1NVUkZBQ0UsCi0gICAgU0VUX1NUQVRFCi19OwotCi1jbGFzcyBCcFN1cmZhY2VGbGluZ2VyQ2xpZW50IDogcHVibGljIEJwSW50ZXJmYWNlPElTdXJmYWNlRmxpbmdlckNsaWVudD4KLXsKLXB1YmxpYzoKLSAgICBCcFN1cmZhY2VGbGluZ2VyQ2xpZW50KGNvbnN0IHNwPElCaW5kZXI+JiBpbXBsKQotICAgICAgICA6IEJwSW50ZXJmYWNlPElTdXJmYWNlRmxpbmdlckNsaWVudD4oaW1wbCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gZ2V0Q29udHJvbEJsb2NrKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKLSAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlRmxpbmdlckNsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKLSAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KEdFVF9DQkxLLCBkYXRhLCAmcmVwbHkpOwotICAgICAgICByZXR1cm4gaW50ZXJmYWNlX2Nhc3Q8SU1lbW9yeUhlYXA+KHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBzcDxJU3VyZmFjZT4gY3JlYXRlU3VyZmFjZSggc3VyZmFjZV9kYXRhX3QqIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZzgmIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncykKLSAgICB7Ci0gICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKLSAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlRmxpbmdlckNsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKLSAgICAgICAgZGF0YS53cml0ZUludDMyKHBpZCk7Ci0gICAgICAgIGRhdGEud3JpdGVTdHJpbmc4KG5hbWUpOwotICAgICAgICBkYXRhLndyaXRlSW50MzIoZGlzcGxheSk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnQzMih3KTsKLSAgICAgICAgZGF0YS53cml0ZUludDMyKGgpOwotICAgICAgICBkYXRhLndyaXRlSW50MzIoZm9ybWF0KTsKLSAgICAgICAgZGF0YS53cml0ZUludDMyKGZsYWdzKTsKLSAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KENSRUFURV9TVVJGQUNFLCBkYXRhLCAmcmVwbHkpOwotICAgICAgICBwYXJhbXMtPnJlYWRGcm9tUGFyY2VsKHJlcGx5KTsKLSAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElTdXJmYWNlPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwotICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIHZpcnR1YWwgc3RhdHVzX3QgZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHNpZCkKLSAgICB7Ci0gICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKLSAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlRmxpbmdlckNsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKLSAgICAgICAgZGF0YS53cml0ZUludDMyKHNpZCk7Ci0gICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChERVNUUk9ZX1NVUkZBQ0UsIGRhdGEsICZyZXBseSk7Ci0gICAgICAgIHJldHVybiByZXBseS5yZWFkSW50MzIoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190IHNldFN0YXRlKGludDMyX3QgY291bnQsIGNvbnN0IGxheWVyX3N0YXRlX3QqIHN0YXRlcykKLSAgICB7Ci0gICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKLSAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlRmxpbmdlckNsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKLSAgICAgICAgZGF0YS53cml0ZUludDMyKGNvdW50KTsKLSAgICAgICAgZm9yIChpbnQgaT0wIDsgaTxjb3VudCA7IGkrKykKLSAgICAgICAgICAgIHN0YXRlc1tpXS53cml0ZShkYXRhKTsKLSAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KFNFVF9TVEFURSwgZGF0YSwgJnJlcGx5KTsKLSAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOwotICAgIH0KLX07Ci0KLUlNUExFTUVOVF9NRVRBX0lOVEVSRkFDRShTdXJmYWNlRmxpbmdlckNsaWVudCwgImFuZHJvaWQudWkuSVN1cmZhY2VGbGluZ2VyQ2xpZW50Iik7Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotc3RhdHVzX3QgQm5TdXJmYWNlRmxpbmdlckNsaWVudDo6b25UcmFuc2FjdCgKLSAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKQotewotICAgIC8vIGNvZGVzIHRoYXQgZG9uJ3QgcmVxdWlyZSBwZXJtaXNzaW9uIGNoZWNrCi0KLSAgICBzd2l0Y2goY29kZSkgewotICAgICAgICBjYXNlIEdFVF9DQkxLOiB7Ci0gICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2VGbGluZ2VyQ2xpZW50LCBkYXRhLCByZXBseSk7Ci0gICAgICAgICAgICBzcDxJTWVtb3J5SGVhcD4gY3RsKGdldENvbnRyb2xCbG9jaygpKTsKLSAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihjdGwtPmFzQmluZGVyKCkpOwotICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwotICAgICAgICB9IGJyZWFrOwotICAgIH0KLQotICAgIC8vIHRoZXNlIG11c3QgYmUgY2hlY2tlZAotICAgICAKLSAgICAgSVBDVGhyZWFkU3RhdGUqIGlwYyA9IElQQ1RocmVhZFN0YXRlOjpzZWxmKCk7Ci0gICAgIGNvbnN0IGludCBwaWQgPSBpcGMtPmdldENhbGxpbmdQaWQoKTsKLSAgICAgY29uc3QgaW50IHVpZCA9IGlwYy0+Z2V0Q2FsbGluZ1VpZCgpOwotICAgICBjb25zdCBpbnQgc2VsZl9waWQgPSBnZXRwaWQoKTsKLSAgICAgaWYgKFVOTElLRUxZKHBpZCAhPSBzZWxmX3BpZCAmJiB1aWQgIT0gQUlEX0dSQVBISUNTKSkgewotICAgICAgICAgLy8gd2UncmUgY2FsbGVkIGZyb20gYSBkaWZmZXJlbnQgcHJvY2VzcywgZG8gdGhlIHJlYWwgY2hlY2sKLSAgICAgICAgIGlmICghY2hlY2tDYWxsaW5nUGVybWlzc2lvbigKLSAgICAgICAgICAgICAgICAgU3RyaW5nMTYoImFuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfU1VSRkFDRV9GTElOR0VSIikpKQotICAgICAgICAgewotICAgICAgICAgICAgIExPR0UoIlBlcm1pc3Npb24gRGVuaWFsOiAiCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgb3Blbkdsb2JhbFRyYW5zYWN0aW9uIHBpZD0lZCwgdWlkPSVkIiwgcGlkLCB1aWQpOwotICAgICAgICAgICAgIHJldHVybiBQRVJNSVNTSU9OX0RFTklFRDsKLSAgICAgICAgIH0KLSAgICAgfQotICAgCi0gICAgIHN3aXRjaChjb2RlKSB7Ci0gICAgICAgIGNhc2UgQ1JFQVRFX1NVUkZBQ0U6IHsKLSAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZUZsaW5nZXJDbGllbnQsIGRhdGEsIHJlcGx5KTsKLSAgICAgICAgICAgIHN1cmZhY2VfZGF0YV90IHBhcmFtczsKLSAgICAgICAgICAgIGludDMyX3QgcGlkID0gZGF0YS5yZWFkSW50MzIoKTsKLSAgICAgICAgICAgIFN0cmluZzggbmFtZSA9IGRhdGEucmVhZFN0cmluZzgoKTsKLSAgICAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5ID0gZGF0YS5yZWFkSW50MzIoKTsKLSAgICAgICAgICAgIHVpbnQzMl90IHcgPSBkYXRhLnJlYWRJbnQzMigpOwotICAgICAgICAgICAgdWludDMyX3QgaCA9IGRhdGEucmVhZEludDMyKCk7Ci0gICAgICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQgPSBkYXRhLnJlYWRJbnQzMigpOwotICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgPSBkYXRhLnJlYWRJbnQzMigpOwotICAgICAgICAgICAgc3A8SVN1cmZhY2U+IHMgPSBjcmVhdGVTdXJmYWNlKCZwYXJhbXMsIHBpZCwgbmFtZSwgZGlzcGxheSwgdywgaCwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBmbGFncyk7Ci0gICAgICAgICAgICBwYXJhbXMud3JpdGVUb1BhcmNlbChyZXBseSk7Ci0gICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIocy0+YXNCaW5kZXIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7Ci0gICAgICAgIH0gYnJlYWs7Ci0gICAgICAgIGNhc2UgREVTVFJPWV9TVVJGQUNFOiB7Ci0gICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2VGbGluZ2VyQ2xpZW50LCBkYXRhLCByZXBseSk7Ci0gICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMiggZGVzdHJveVN1cmZhY2UoIGRhdGEucmVhZEludDMyKCkgKSApOwotICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwotICAgICAgICB9IGJyZWFrOwotICAgICAgICBjYXNlIFNFVF9TVEFURTogewotICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlRmxpbmdlckNsaWVudCwgZGF0YSwgcmVwbHkpOwotICAgICAgICAgICAgaW50MzJfdCBjb3VudCA9IGRhdGEucmVhZEludDMyKCk7Ci0gICAgICAgICAgICBsYXllcl9zdGF0ZV90KiBzdGF0ZXMgPSBuZXcgbGF5ZXJfc3RhdGVfdFtjb3VudF07Ci0gICAgICAgICAgICBmb3IgKGludCBpPTAgOyBpPGNvdW50IDsgaSsrKQotICAgICAgICAgICAgICAgIHN0YXRlc1tpXS5yZWFkKGRhdGEpOwotICAgICAgICAgICAgc3RhdHVzX3QgZXJyID0gc2V0U3RhdGUoY291bnQsIHN0YXRlcyk7Ci0gICAgICAgICAgICBkZWxldGUgW10gc3RhdGVzOwotICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoZXJyKTsKLSAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKLSAgICAgICAgfSBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBCQmluZGVyOjpvblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7Ci0gICAgfQotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0YXR1c190IElTdXJmYWNlRmxpbmdlckNsaWVudDo6c3VyZmFjZV9kYXRhX3Q6OnJlYWRGcm9tUGFyY2VsKGNvbnN0IFBhcmNlbCYgcGFyY2VsKQotewotICAgIHRva2VuICAgID0gcGFyY2VsLnJlYWRJbnQzMigpOwotICAgIGlkZW50aXR5ID0gcGFyY2VsLnJlYWRJbnQzMigpOwotICAgIHdpZHRoICAgID0gcGFyY2VsLnJlYWRJbnQzMigpOwotICAgIGhlaWdodCAgID0gcGFyY2VsLnJlYWRJbnQzMigpOwotICAgIGZvcm1hdCAgID0gcGFyY2VsLnJlYWRJbnQzMigpOwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgSVN1cmZhY2VGbGluZ2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdDo6d3JpdGVUb1BhcmNlbChQYXJjZWwqIHBhcmNlbCkgY29uc3QKLXsKLSAgICBwYXJjZWwtPndyaXRlSW50MzIodG9rZW4pOwotICAgIHBhcmNlbC0+d3JpdGVJbnQzMihpZGVudGl0eSk7Ci0gICAgcGFyY2VsLT53cml0ZUludDMyKHdpZHRoKTsKLSAgICBwYXJjZWwtPndyaXRlSW50MzIoaGVpZ2h0KTsKLSAgICBwYXJjZWwtPndyaXRlSW50MzIoZm9ybWF0KTsKLSAgICByZXR1cm4gTk9fRVJST1I7Ci19Ci0KLX07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TaGFyZWRCdWZmZXJTdGFjay5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TaGFyZWRCdWZmZXJTdGFjay5jcHAKaW5kZXggYTE3ZThhYy4uZDY3YTU4OSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU2hhcmVkQnVmZmVyU3RhY2suY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L1NoYXJlZEJ1ZmZlclN0YWNrLmNwcApAQCAtNDQsMTUgKzQ0LDExIEBACiAKIC8vIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgY2xpZW50cwogc3RhdHVzX3QgU2hhcmVkQ2xpZW50Ojp2YWxpZGF0ZShzaXplX3QgaSkgY29uc3QgewotICAgIGlmICh1aW50MzJfdChpKSA+PSB1aW50MzJfdChOVU1fTEFZRVJTX01BWCkpCisgICAgaWYgKHVpbnQzMl90KGkpID49IHVpbnQzMl90KFNoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fTEFZRVJTX01BWCkpCiAgICAgICAgIHJldHVybiBCQURfSU5ERVg7CiAgICAgcmV0dXJuIHN1cmZhY2VzW2ldLnN0YXR1czsKIH0KIAotdWludDMyX3QgU2hhcmVkQ2xpZW50OjpnZXRJZGVudGl0eShzaXplX3QgdG9rZW4pIGNvbnN0IHsKLSAgICByZXR1cm4gdWludDMyX3Qoc3VyZmFjZXNbdG9rZW5dLmlkZW50aXR5KTsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKQEAgLTYyLDI0ICs1OCw1MiBAQAogCiB2b2lkIFNoYXJlZEJ1ZmZlclN0YWNrOjppbml0KGludDMyX3QgaSkKIHsKLSAgICBpblVzZSA9IC0xOworICAgIGluVXNlID0gLTI7CiAgICAgc3RhdHVzID0gTk9fRVJST1I7CiAgICAgaWRlbnRpdHkgPSBpOwogfQogCitzdGF0dXNfdCBTaGFyZWRCdWZmZXJTdGFjazo6c2V0Q3JvcChpbnQgYnVmZmVyLCBjb25zdCBSZWN0JiBjcm9wKQoreworICAgIGlmICh1aW50MzJfdChidWZmZXIpID49IE5VTV9CVUZGRVJfTUFYKQorICAgICAgICByZXR1cm4gQkFEX0lOREVYOworCisgICAgYnVmZmVyc1tidWZmZXJdLmNyb3AubCA9IHVpbnQxNl90KGNyb3AubGVmdCk7CisgICAgYnVmZmVyc1tidWZmZXJdLmNyb3AudCA9IHVpbnQxNl90KGNyb3AudG9wKTsKKyAgICBidWZmZXJzW2J1ZmZlcl0uY3JvcC5yID0gdWludDE2X3QoY3JvcC5yaWdodCk7CisgICAgYnVmZmVyc1tidWZmZXJdLmNyb3AuYiA9IHVpbnQxNl90KGNyb3AuYm90dG9tKTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKIHN0YXR1c190IFNoYXJlZEJ1ZmZlclN0YWNrOjpzZXREaXJ0eVJlZ2lvbihpbnQgYnVmZmVyLCBjb25zdCBSZWdpb24mIGRpcnR5KQogewogICAgIGlmICh1aW50MzJfdChidWZmZXIpID49IE5VTV9CVUZGRVJfTUFYKQogICAgICAgICByZXR1cm4gQkFEX0lOREVYOwogCi0gICAgLy8gaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2Ugb25seSBzZW5kIGEgc2luZ2xlIHJlY3RhbmdsZQotICAgIGNvbnN0IFJlY3QgYm91bmRzKGRpcnR5LmdldEJvdW5kcygpKTsKLSAgICBGbGF0UmVnaW9uJiByZWcoZGlydHlSZWdpb25bYnVmZmVyXSk7Ci0gICAgcmVnLmNvdW50ID0gMTsKLSAgICByZWcucmVjdHNbMF0gPSB1aW50MTZfdChib3VuZHMubGVmdCk7Ci0gICAgcmVnLnJlY3RzWzFdID0gdWludDE2X3QoYm91bmRzLnRvcCk7Ci0gICAgcmVnLnJlY3RzWzJdID0gdWludDE2X3QoYm91bmRzLnJpZ2h0KTsKLSAgICByZWcucmVjdHNbM10gPSB1aW50MTZfdChib3VuZHMuYm90dG9tKTsKKyAgICBGbGF0UmVnaW9uJiByZWcoYnVmZmVyc1tidWZmZXJdLmRpcnR5UmVnaW9uKTsKKyAgICBpZiAoZGlydHkuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlZy5jb3VudCA9IDA7CisgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICB9CisKKyAgICBzaXplX3QgY291bnQ7CisgICAgUmVjdCBjb25zdCogciA9IGRpcnR5LmdldEFycmF5KCZjb3VudCk7CisgICAgaWYgKGNvdW50ID4gRmxhdFJlZ2lvbjo6TlVNX1JFQ1RfTUFYKSB7CisgICAgICAgIGNvbnN0IFJlY3QgYm91bmRzKGRpcnR5LmdldEJvdW5kcygpKTsKKyAgICAgICAgcmVnLmNvdW50ID0gMTsKKyAgICAgICAgcmVnLnJlY3RzWzBdLmwgPSB1aW50MTZfdChib3VuZHMubGVmdCk7CisgICAgICAgIHJlZy5yZWN0c1swXS50ID0gdWludDE2X3QoYm91bmRzLnRvcCk7CisgICAgICAgIHJlZy5yZWN0c1swXS5yID0gdWludDE2X3QoYm91bmRzLnJpZ2h0KTsKKyAgICAgICAgcmVnLnJlY3RzWzBdLmIgPSB1aW50MTZfdChib3VuZHMuYm90dG9tKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZWcuY291bnQgPSBjb3VudDsKKyAgICAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxjb3VudCA7IGkrKykgeworICAgICAgICAgICAgcmVnLnJlY3RzW2ldLmwgPSB1aW50MTZfdChyW2ldLmxlZnQpOworICAgICAgICAgICAgcmVnLnJlY3RzW2ldLnQgPSB1aW50MTZfdChyW2ldLnRvcCk7CisgICAgICAgICAgICByZWcucmVjdHNbaV0uciA9IHVpbnQxNl90KHJbaV0ucmlnaHQpOworICAgICAgICAgICAgcmVnLnJlY3RzW2ldLmIgPSB1aW50MTZfdChyW2ldLmJvdHRvbSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCkBAIC04OSwxOCArMTEzLDM3IEBACiAgICAgaWYgKHVpbnQzMl90KGJ1ZmZlcikgPj0gTlVNX0JVRkZFUl9NQVgpCiAgICAgICAgIHJldHVybiByZXM7CiAKLSAgICBjb25zdCBGbGF0UmVnaW9uJiByZWcoZGlydHlSZWdpb25bYnVmZmVyXSk7Ci0gICAgcmVzLnNldChSZWN0KHJlZy5yZWN0c1swXSwgcmVnLnJlY3RzWzFdLCByZWcucmVjdHNbMl0sIHJlZy5yZWN0c1szXSkpOworICAgIGNvbnN0IEZsYXRSZWdpb24mIHJlZyhidWZmZXJzW2J1ZmZlcl0uZGlydHlSZWdpb24pOworICAgIGlmIChyZWcuY291bnQgPiBGbGF0UmVnaW9uOjpOVU1fUkVDVF9NQVgpCisgICAgICAgIHJldHVybiByZXM7CisKKyAgICBpZiAocmVnLmNvdW50ID09IDEpIHsKKyAgICAgICAgY29uc3QgUmVjdCByKAorICAgICAgICAgICAgICAgIHJlZy5yZWN0c1swXS5sLAorICAgICAgICAgICAgICAgIHJlZy5yZWN0c1swXS50LAorICAgICAgICAgICAgICAgIHJlZy5yZWN0c1swXS5yLAorICAgICAgICAgICAgICAgIHJlZy5yZWN0c1swXS5iKTsKKyAgICAgICAgcmVzLnNldChyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPHJlZy5jb3VudCA7IGkrKykgeworICAgICAgICAgICAgY29uc3QgUmVjdCByKAorICAgICAgICAgICAgICAgICAgICByZWcucmVjdHNbaV0ubCwKKyAgICAgICAgICAgICAgICAgICAgcmVnLnJlY3RzW2ldLnQsCisgICAgICAgICAgICAgICAgICAgIHJlZy5yZWN0c1tpXS5yLAorICAgICAgICAgICAgICAgICAgICByZWcucmVjdHNbaV0uYik7CisgICAgICAgICAgICByZXMub3JTZWxmKHIpOworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiByZXM7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogU2hhcmVkQnVmZmVyQmFzZTo6U2hhcmVkQnVmZmVyQmFzZShTaGFyZWRDbGllbnQqIHNoYXJlZENsaWVudCwKLSAgICAgICAgaW50IHN1cmZhY2UsIGludCBudW0sIGludDMyX3QgaWRlbnRpdHkpCisgICAgICAgIGludCBzdXJmYWNlLCBpbnQzMl90IGlkZW50aXR5KQogICAgIDogbVNoYXJlZENsaWVudChzaGFyZWRDbGllbnQpLCAKICAgICAgIG1TaGFyZWRTdGFjayhzaGFyZWRDbGllbnQtPnN1cmZhY2VzICsgc3VyZmFjZSksCi0gICAgICBtTnVtQnVmZmVycyhudW0pLCBtSWRlbnRpdHkoaWRlbnRpdHkpCisgICAgICBtSWRlbnRpdHkoaWRlbnRpdHkpCiB7CiB9CiAKQEAgLTEwOCwxOCArMTUxLDE4IEBACiB7CiB9CiAKLXVpbnQzMl90IFNoYXJlZEJ1ZmZlckJhc2U6OmdldElkZW50aXR5KCkKLXsKLSAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKLSAgICByZXR1cm4gc3RhY2suaWRlbnRpdHk7Ci19Ci0KIHN0YXR1c190IFNoYXJlZEJ1ZmZlckJhc2U6OmdldFN0YXR1cygpIGNvbnN0CiB7CiAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CiAgICAgcmV0dXJuIHN0YWNrLnN0YXR1czsKIH0KIAoraW50MzJfdCBTaGFyZWRCdWZmZXJCYXNlOjpnZXRJZGVudGl0eSgpIGNvbnN0Cit7CisgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CisgICAgcmV0dXJuIHN0YWNrLmlkZW50aXR5OworfQorCiBzaXplX3QgU2hhcmVkQnVmZmVyQmFzZTo6Z2V0RnJvbnRCdWZmZXIoKSBjb25zdAogewogICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOwpAQCAtMTMyLDE2ICsxNzUsNTIgQEAKICAgICBjaGFyIGJ1ZmZlcltTSVpFXTsKICAgICBTdHJpbmc4IHJlc3VsdDsKICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKLSAgICBpbnQgdGFpbCA9IChtTnVtQnVmZmVycyArIHN0YWNrLmhlYWQgLSBzdGFjay5hdmFpbGFibGUgKyAxKSAlIG1OdW1CdWZmZXJzOwogICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgCi0gICAgICAgICAgICAiJXNbIGhlYWQ9JTJkLCBhdmFpbGFibGU9JTJkLCBxdWV1ZWQ9JTJkLCB0YWlsPSUyZCBdICIKLSAgICAgICAgICAgICJyZWFsbG9jTWFzaz0lMDh4LCBpblVzZT0lMmQsIGlkZW50aXR5PSVkLCBzdGF0dXM9JWRcbiIsCi0gICAgICAgICAgICBwcmVmaXgsIHN0YWNrLmhlYWQsIHN0YWNrLmF2YWlsYWJsZSwgc3RhY2sucXVldWVkLCB0YWlsLAorICAgICAgICAgICAgIiVzWyBoZWFkPSUyZCwgYXZhaWxhYmxlPSUyZCwgcXVldWVkPSUyZCBdICIKKyAgICAgICAgICAgICJyZWFsbG9jTWFzaz0lMDh4LCBpblVzZT0lMmQsIGlkZW50aXR5PSVkLCBzdGF0dXM9JWQiLAorICAgICAgICAgICAgcHJlZml4LCBzdGFjay5oZWFkLCBzdGFjay5hdmFpbGFibGUsIHN0YWNrLnF1ZXVlZCwKICAgICAgICAgICAgIHN0YWNrLnJlYWxsb2NNYXNrLCBzdGFjay5pblVzZSwgc3RhY2suaWRlbnRpdHksIHN0YWNrLnN0YXR1cyk7CiAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHJlc3VsdC5hcHBlbmQoIlxuIik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdHVzX3QgU2hhcmVkQnVmZmVyQmFzZTo6d2FpdEZvckNvbmRpdGlvbihjb25zdCBDb25kaXRpb25CYXNlJiBjb25kaXRpb24pCit7CisgICAgY29uc3QgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CisgICAgU2hhcmVkQ2xpZW50JiBjbGllbnQoICptU2hhcmVkQ2xpZW50ICk7CisgICAgY29uc3QgbnNlY3NfdCBUSU1FT1VUID0gczJucygxKTsKKyAgICBjb25zdCBpbnQgaWRlbnRpdHkgPSBtSWRlbnRpdHk7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgX2woY2xpZW50LmxvY2spOworICAgIHdoaWxlICgoY29uZGl0aW9uKCk9PWZhbHNlKSAmJgorICAgICAgICAgICAgKHN0YWNrLmlkZW50aXR5ID09IGlkZW50aXR5KSAmJgorICAgICAgICAgICAgKHN0YWNrLnN0YXR1cyA9PSBOT19FUlJPUikpCisgICAgeworICAgICAgICBzdGF0dXNfdCBlcnIgPSBjbGllbnQuY3Yud2FpdFJlbGF0aXZlKGNsaWVudC5sb2NrLCBUSU1FT1VUKTsKKyAgICAgICAgLy8gaGFuZGxlIGVycm9ycyBhbmQgdGltZW91dHMKKyAgICAgICAgaWYgKENDX1VOTElLRUxZKGVyciAhPSBOT19FUlJPUikpIHsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gVElNRURfT1VUKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIExPR0UoIndhaXRGb3JDb25kaXRpb24oJXMpIHRpbWVkIG91dCAoaWRlbnRpdHk9JWQpLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiYnV0IGNvbmRpdGlvbiBpcyB0cnVlISBXZSByZWNvdmVyZWQgYnV0IGl0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGRuJ3QgaGFwcGVuLiIgLCBjb25kaXRpb24ubmFtZSgpLCBzdGFjay5pZGVudGl0eSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExPR1coIndhaXRGb3JDb25kaXRpb24oJXMpIHRpbWVkIG91dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiKGlkZW50aXR5PSVkLCBzdGF0dXM9JWQpLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiQ1BVIG1heSBiZSBwZWdnZWQuIHRyeWluZyBhZ2Fpbi4iLCBjb25kaXRpb24ubmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suaWRlbnRpdHksIHN0YWNrLnN0YXR1cyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJ3YWl0Rm9yQ29uZGl0aW9uKCVzKSBlcnJvciAoJXMpICIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24ubmFtZSgpLCBzdHJlcnJvcigtZXJyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gKHN0YWNrLmlkZW50aXR5ICE9IG1JZGVudGl0eSkgPyBzdGF0dXNfdChCQURfSU5ERVgpIDogc3RhY2suc3RhdHVzOworfQogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gY29uZGl0aW9ucyBhbmQgdXBkYXRlcwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTQ5LDI0ICsyMjgsMzQgQEAKIFNoYXJlZEJ1ZmZlckNsaWVudDo6RGVxdWV1ZUNvbmRpdGlvbjo6RGVxdWV1ZUNvbmRpdGlvbigKICAgICAgICAgU2hhcmVkQnVmZmVyQ2xpZW50KiBzYmMpIDogQ29uZGl0aW9uQmFzZShzYmMpICB7IAogfQotYm9vbCBTaGFyZWRCdWZmZXJDbGllbnQ6OkRlcXVldWVDb25kaXRpb246Om9wZXJhdG9yKCkoKSB7Citib29sIFNoYXJlZEJ1ZmZlckNsaWVudDo6RGVxdWV1ZUNvbmRpdGlvbjo6b3BlcmF0b3IoKSgpIGNvbnN0IHsKICAgICByZXR1cm4gc3RhY2suYXZhaWxhYmxlID4gMDsKIH0KIAogU2hhcmVkQnVmZmVyQ2xpZW50OjpMb2NrQ29uZGl0aW9uOjpMb2NrQ29uZGl0aW9uKAogICAgICAgICBTaGFyZWRCdWZmZXJDbGllbnQqIHNiYywgaW50IGJ1ZikgOiBDb25kaXRpb25CYXNlKHNiYyksIGJ1ZihidWYpIHsgCiB9Ci1ib29sIFNoYXJlZEJ1ZmZlckNsaWVudDo6TG9ja0NvbmRpdGlvbjo6b3BlcmF0b3IoKSgpIHsKLSAgICByZXR1cm4gKGJ1ZiAhPSBzdGFjay5oZWFkIHx8IAorYm9vbCBTaGFyZWRCdWZmZXJDbGllbnQ6OkxvY2tDb25kaXRpb246Om9wZXJhdG9yKCkoKSBjb25zdCB7CisgICAgLy8gTk9URTogaWYgc3RhY2suaGVhZCBpcyBtZXNzZWQgdXAsIHdlIGNvdWxkIGNyYXNoIHRoZSBjbGllbnQKKyAgICAvLyBvciBjYXVzZSBzb21lIGRyYXdpbmcgYXJ0aWZhY3RzLiBUaGlzIGlzIG9rYXksIGFzIGxvbmcgYXMgaXQgaXMKKyAgICAvLyBsaW1pdGVkIHRvIHRoZSBjbGllbnQuCisgICAgcmV0dXJuIChidWYgIT0gc3RhY2suaW5kZXhbc3RhY2suaGVhZF0gfHwKICAgICAgICAgICAgIChzdGFjay5xdWV1ZWQgPiAwICYmIHN0YWNrLmluVXNlICE9IGJ1ZikpOwogfQogCiBTaGFyZWRCdWZmZXJTZXJ2ZXI6OlJlYWxsb2NhdGVDb25kaXRpb246OlJlYWxsb2NhdGVDb25kaXRpb24oCiAgICAgICAgIFNoYXJlZEJ1ZmZlckJhc2UqIHNiYiwgaW50IGJ1ZikgOiBDb25kaXRpb25CYXNlKHNiYiksIGJ1ZihidWYpIHsgCiB9Ci1ib29sIFNoYXJlZEJ1ZmZlclNlcnZlcjo6UmVhbGxvY2F0ZUNvbmRpdGlvbjo6b3BlcmF0b3IoKSgpIHsKK2Jvb2wgU2hhcmVkQnVmZmVyU2VydmVyOjpSZWFsbG9jYXRlQ29uZGl0aW9uOjpvcGVyYXRvcigpKCkgY29uc3QgeworICAgIGludDMyX3QgaGVhZCA9IHN0YWNrLmhlYWQ7CisgICAgaWYgKHVpbnQzMl90KGhlYWQpID49IFNoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fQlVGRkVSX01BWCkgeworICAgICAgICAvLyBpZiBzdGFjay5oZWFkIGlzIG1lc3NlZCB1cCwgd2UgY2Fubm90IGFsbG93IHRoZSBzZXJ2ZXIgdG8KKyAgICAgICAgLy8gY3Jhc2ggKHNpbmNlIHN0YWNrLmhlYWQgaXMgbWFwcGVkIG9uIHRoZSBjbGllbnQgc2lkZSkKKyAgICAgICAgc3RhY2suc3RhdHVzID0gQkFEX1ZBTFVFOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIC8vIFRPRE86IHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgYnVmIGhhcyBiZWVuIGRlcXVldWVkCi0gICAgcmV0dXJuIChidWYgIT0gc3RhY2suaGVhZCk7CisgICAgcmV0dXJuIChidWYgIT0gc3RhY2suaW5kZXhbaGVhZF0pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTMsOCArMjgyLDEwIEBACiB9CiBzc2l6ZV90IFNoYXJlZEJ1ZmZlclNlcnZlcjo6VW5sb2NrVXBkYXRlOjpvcGVyYXRvcigpKCkgewogICAgIGlmIChzdGFjay5pblVzZSAhPSBsb2NrZWRCdWZmZXIpIHsKLSAgICAgICAgTE9HRSgidW5sb2NraW5nICVkLCBidXQgY3VycmVudGx5IGxvY2tlZCBidWZmZXIgaXMgJWQiLAotICAgICAgICAgICAgICAgIGxvY2tlZEJ1ZmZlciwgc3RhY2suaW5Vc2UpOworICAgICAgICBMT0dFKCJ1bmxvY2tpbmcgJWQsIGJ1dCBjdXJyZW50bHkgbG9ja2VkIGJ1ZmZlciBpcyAlZCAiCisgICAgICAgICAgICAgIihpZGVudGl0eT0lZCwgdG9rZW49JWQpIiwKKyAgICAgICAgICAgICAgICBsb2NrZWRCdWZmZXIsIHN0YWNrLmluVXNlLAorICAgICAgICAgICAgICAgIHN0YWNrLmlkZW50aXR5LCBzdGFjay50b2tlbik7CiAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CiAgICAgfQogICAgIGFuZHJvaWRfYXRvbWljX3dyaXRlKC0xLCAmc3RhY2suaW5Vc2UpOwpAQCAtMjA2LDExICsyOTcsMTIgQEAKICAgICA6IFVwZGF0ZUJhc2Uoc2JiKSwgbnVtQnVmZmVycyhudW1CdWZmZXJzKSB7CiB9CiBzc2l6ZV90IFNoYXJlZEJ1ZmZlclNlcnZlcjo6UmV0aXJlVXBkYXRlOjpvcGVyYXRvcigpKCkgewotICAgIC8vIGhlYWQgaXMgb25seSB3cml0dGVuIGluIHRoaXMgZnVuY3Rpb24sIHdoaWNoIGlzIHNpbmdsZS10aHJlYWQuCiAgICAgaW50MzJfdCBoZWFkID0gc3RhY2suaGVhZDsKKyAgICBpZiAodWludDMyX3QoaGVhZCkgPj0gU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUFYKQorICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogCiAgICAgLy8gUHJldmVudGl2ZWx5IGxvY2sgdGhlIGN1cnJlbnQgYnVmZmVyIGJlZm9yZSB1cGRhdGluZyBxdWV1ZWQuCi0gICAgYW5kcm9pZF9hdG9taWNfd3JpdGUoaGVhZCwgJnN0YWNrLmluVXNlKTsKKyAgICBhbmRyb2lkX2F0b21pY193cml0ZShzdGFjay5pbmRleFtoZWFkXSwgJnN0YWNrLmluVXNlKTsKIAogICAgIC8vIERlY3JlbWVudCB0aGUgbnVtYmVyIG9mIHF1ZXVlZCBidWZmZXJzIAogICAgIGludDMyX3QgcXVldWVkOwpAQCAtMjIxLDE2ICszMTMsMTUgQEAKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGFuZHJvaWRfYXRvbWljX2NtcHhjaGcocXVldWVkLCBxdWV1ZWQtMSwgJnN0YWNrLnF1ZXVlZCkpOwogICAgIAotICAgIC8vIHVwZGF0ZSB0aGUgaGVhZCBwb2ludGVyCi0gICAgaGVhZCA9ICgoaGVhZCsxID49IG51bUJ1ZmZlcnMpID8gMCA6IGhlYWQrMSk7Ci0KICAgICAvLyBsb2NrIHRoZSBidWZmZXIgYmVmb3JlIGFkdmFuY2luZyBoZWFkLCB3aGljaCBhdXRvbWF0aWNhbGx5IHVubG9ja3MKICAgICAvLyB0aGUgYnVmZmVyIHdlIHByZXZlbnRpdmVseSBsb2NrZWQgdXBvbiBlbnRlcmluZyB0aGlzIGZ1bmN0aW9uCi0gICAgYW5kcm9pZF9hdG9taWNfd3JpdGUoaGVhZCwgJnN0YWNrLmluVXNlKTsKIAotICAgIC8vIGFkdmFuY2UgaGVhZAorICAgIGhlYWQgPSAoaGVhZCArIDEpICUgbnVtQnVmZmVyczsKKyAgICBhbmRyb2lkX2F0b21pY193cml0ZShzdGFjay5pbmRleFtoZWFkXSwgJnN0YWNrLmluVXNlKTsKKworICAgIC8vIGhlYWQgaXMgb25seSBtb2RpZmllZCBoZXJlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHVzZSBjbXB4Y2hnCiAgICAgYW5kcm9pZF9hdG9taWNfd3JpdGUoaGVhZCwgJnN0YWNrLmhlYWQpOwotICAgIAorCiAgICAgLy8gbm93IHRoYXQgaGVhZCBoYXMgbW92ZWQsIHdlIGNhbiBpbmNyZW1lbnQgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgYnVmZmVycwogICAgIGFuZHJvaWRfYXRvbWljX2luYygmc3RhY2suYXZhaWxhYmxlKTsKICAgICByZXR1cm4gaGVhZDsKQEAgLTI1MCw0MSArMzQxLDMxIEBACiAKIFNoYXJlZEJ1ZmZlckNsaWVudDo6U2hhcmVkQnVmZmVyQ2xpZW50KFNoYXJlZENsaWVudCogc2hhcmVkQ2xpZW50LAogICAgICAgICBpbnQgc3VyZmFjZSwgaW50IG51bSwgaW50MzJfdCBpZGVudGl0eSkKLSAgICA6IFNoYXJlZEJ1ZmZlckJhc2Uoc2hhcmVkQ2xpZW50LCBzdXJmYWNlLCBudW0sIGlkZW50aXR5KSwgdGFpbCgwKQorICAgIDogU2hhcmVkQnVmZmVyQmFzZShzaGFyZWRDbGllbnQsIHN1cmZhY2UsIGlkZW50aXR5KSwKKyAgICAgIG1OdW1CdWZmZXJzKG51bSksIHRhaWwoMCksIHVuZG9EZXF1ZXVlVGFpbCgwKQogeworICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOwogICAgIHRhaWwgPSBjb21wdXRlVGFpbCgpOworICAgIHF1ZXVlZF9oZWFkID0gc3RhY2suaGVhZDsKIH0KIAogaW50MzJfdCBTaGFyZWRCdWZmZXJDbGllbnQ6OmNvbXB1dGVUYWlsKCkgY29uc3QKIHsKICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKLSAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSByZWFkIGF2YWlsYWJsZSBhbmQgaGVhZCBjb2hlcmVudGx5LAotICAgIC8vIHcuci50IFJldGlyZVVwZGF0ZS4KLSAgICBpbnQzMl90IG5ld1RhaWw7Ci0gICAgaW50MzJfdCBhdmFpbDsKLSAgICBpbnQzMl90IGhlYWQ7Ci0gICAgZG8gewotICAgICAgICBhdmFpbCA9IHN0YWNrLmF2YWlsYWJsZTsKLSAgICAgICAgaGVhZCA9IHN0YWNrLmhlYWQ7Ci0gICAgfSB3aGlsZSAoc3RhY2suYXZhaWxhYmxlICE9IGF2YWlsKTsKLSAgICBuZXdUYWlsID0gaGVhZCAtIGF2YWlsICsgMTsKLSAgICBpZiAobmV3VGFpbCA8IDApIHsKLSAgICAgICAgbmV3VGFpbCArPSBtTnVtQnVmZmVyczsKLSAgICB9IGVsc2UgaWYgKG5ld1RhaWwgPj0gbU51bUJ1ZmZlcnMpIHsKLSAgICAgICAgbmV3VGFpbCAtPSBtTnVtQnVmZmVyczsKLSAgICB9Ci0gICAgcmV0dXJuIG5ld1RhaWw7CisgICAgcmV0dXJuIChtTnVtQnVmZmVycyArIHN0YWNrLmhlYWQgLSBzdGFjay5hdmFpbGFibGUgKyAxKSAlIG1OdW1CdWZmZXJzOwogfQogCiBzc2l6ZV90IFNoYXJlZEJ1ZmZlckNsaWVudDo6ZGVxdWV1ZSgpCiB7CiAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CiAKLSAgICBpZiAoc3RhY2suaGVhZCA9PSB0YWlsICYmIHN0YWNrLmF2YWlsYWJsZSA9PSAyKSB7CisgICAgaWYgKHN0YWNrLmhlYWQgPT0gdGFpbCAmJiBzdGFjay5hdmFpbGFibGUgPT0gbU51bUJ1ZmZlcnMpIHsKICAgICAgICAgTE9HVygiZGVxdWV1ZTogdGFpbD0lZCwgaGVhZD0lZCwgYXZhaWw9JWQsIHF1ZXVlZD0lZCIsCiAgICAgICAgICAgICAgICAgdGFpbCwgc3RhY2suaGVhZCwgc3RhY2suYXZhaWxhYmxlLCBzdGFjay5xdWV1ZWQpOwogICAgIH0KLSAgICAgICAgCisKKyAgICBSV0xvY2s6OkF1dG9STG9jayBfcmQobUxvY2spOworCiAgICAgY29uc3QgbnNlY3NfdCBkZXF1ZXVlVGltZSA9IHN5c3RlbVRpbWUoU1lTVEVNX1RJTUVfVEhSRUFEKTsKIAogICAgIC8vTE9HRCgiWyVkXSBhYm91dCB0byBkZXF1ZXVlIGEgYnVmZmVyIiwKQEAgLTMwMSw5ICszODIsMTAgQEAKICAgICAgICAgTE9HVygiZGVxdWV1ZSBwcm9iYWJseSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzISIpOwogICAgIH0KIAotICAgIGludCBkZXF1ZXVlZCA9IHRhaWw7CisgICAgdW5kb0RlcXVldWVUYWlsID0gdGFpbDsKKyAgICBpbnQgZGVxdWV1ZWQgPSBzdGFjay5pbmRleFt0YWlsXTsKICAgICB0YWlsID0gKCh0YWlsKzEgPj0gbU51bUJ1ZmZlcnMpID8gMCA6IHRhaWwrMSk7Ci0gICAgTE9HRF9JRihERUJVR19BVE9NSUNTLCAiZGVxdWV1ZWQ9JWQsIHRhaWw9JWQsICVzIiwKKyAgICBMT0dEX0lGKERFQlVHX0FUT01JQ1MsICJkZXF1ZXVlZD0lZCwgdGFpbCsrPSVkLCAlcyIsCiAgICAgICAgICAgICBkZXF1ZXVlZCwgdGFpbCwgZHVtcCgiIikuc3RyaW5nKCkpOwogCiAgICAgbURlcXVldWVUaW1lW2RlcXVldWVkXSA9IGRlcXVldWVUaW1lOyAKQEAgLTMxMywxNiArMzk1LDIzIEBACiAKIHN0YXR1c190IFNoYXJlZEJ1ZmZlckNsaWVudDo6dW5kb0RlcXVldWUoaW50IGJ1ZikKIHsKKyAgICBSV0xvY2s6OkF1dG9STG9jayBfcmQobUxvY2spOworCisgICAgLy8gVE9ETzogd2UgY2FuIG9ubHkgdW5kbyB0aGUgcHJldmlvdXMgZGVxdWV1ZSwgd2Ugc2hvdWxkCisgICAgLy8gZW5mb3JjZSB0aGF0IGluIHRoZSBhcGkKICAgICBVbmRvRGVxdWV1ZVVwZGF0ZSB1cGRhdGUodGhpcyk7CiAgICAgc3RhdHVzX3QgZXJyID0gdXBkYXRlQ29uZGl0aW9uKCB1cGRhdGUgKTsKICAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7Ci0gICAgICAgIHRhaWwgPSBjb21wdXRlVGFpbCgpOworICAgICAgICB0YWlsID0gdW5kb0RlcXVldWVUYWlsOwogICAgIH0KICAgICByZXR1cm4gZXJyOwogfQogCiBzdGF0dXNfdCBTaGFyZWRCdWZmZXJDbGllbnQ6OmxvY2soaW50IGJ1ZikKIHsKKyAgICBSV0xvY2s6OkF1dG9STG9jayBfcmQobUxvY2spOworCisgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CiAgICAgTG9ja0NvbmRpdGlvbiBjb25kaXRpb24odGhpcywgYnVmKTsKICAgICBzdGF0dXNfdCBlcnIgPSB3YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbik7CiAgICAgcmV0dXJuIGVycjsKQEAgLTMzMCw1MyArNDE5LDEwNSBAQAogCiBzdGF0dXNfdCBTaGFyZWRCdWZmZXJDbGllbnQ6OnF1ZXVlKGludCBidWYpCiB7CisgICAgUldMb2NrOjpBdXRvUkxvY2sgX3JkKG1Mb2NrKTsKKworICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOworCisgICAgcXVldWVkX2hlYWQgPSAocXVldWVkX2hlYWQgKyAxKSAlIG1OdW1CdWZmZXJzOworICAgIHN0YWNrLmluZGV4W3F1ZXVlZF9oZWFkXSA9IGJ1ZjsKKwogICAgIFF1ZXVlVXBkYXRlIHVwZGF0ZSh0aGlzKTsKICAgICBzdGF0dXNfdCBlcnIgPSB1cGRhdGVDb25kaXRpb24oIHVwZGF0ZSApOwogICAgIExPR0RfSUYoREVCVUdfQVRPTUlDUywgInF1ZXVlZD0lZCwgJXMiLCBidWYsIGR1bXAoIiIpLnN0cmluZygpKTsKLSAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKKwogICAgIGNvbnN0IG5zZWNzX3Qgbm93ID0gc3lzdGVtVGltZShTWVNURU1fVElNRV9USFJFQUQpOwogICAgIHN0YWNrLnN0YXRzLnRvdGFsVGltZSA9IG5zMnVzKG5vdyAtIG1EZXF1ZXVlVGltZVtidWZdKTsKICAgICByZXR1cm4gZXJyOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlckNsaWVudDo6bmVlZE5ld0J1ZmZlcihpbnQgYnVmZmVyKSBjb25zdAorYm9vbCBTaGFyZWRCdWZmZXJDbGllbnQ6Om5lZWROZXdCdWZmZXIoaW50IGJ1ZikgY29uc3QKIHsKICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKLSAgICBjb25zdCB1aW50MzJfdCBtYXNrID0gMTw8YnVmZmVyOworICAgIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAxPDwoMzEtYnVmKTsKICAgICByZXR1cm4gKGFuZHJvaWRfYXRvbWljX2FuZCh+bWFzaywgJnN0YWNrLnJlYWxsb2NNYXNrKSAmIG1hc2spICE9IDA7CiB9CiAKLXN0YXR1c190IFNoYXJlZEJ1ZmZlckNsaWVudDo6c2V0RGlydHlSZWdpb24oaW50IGJ1ZmZlciwgY29uc3QgUmVnaW9uJiByZWcpCitzdGF0dXNfdCBTaGFyZWRCdWZmZXJDbGllbnQ6OnNldENyb3AoaW50IGJ1ZiwgY29uc3QgUmVjdCYgY3JvcCkKIHsKICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKLSAgICByZXR1cm4gc3RhY2suc2V0RGlydHlSZWdpb24oYnVmZmVyLCByZWcpOworICAgIHJldHVybiBzdGFjay5zZXRDcm9wKGJ1ZiwgY3JvcCk7Cit9CisKK3N0YXR1c190IFNoYXJlZEJ1ZmZlckNsaWVudDo6c2V0RGlydHlSZWdpb24oaW50IGJ1ZiwgY29uc3QgUmVnaW9uJiByZWcpCit7CisgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CisgICAgcmV0dXJuIHN0YWNrLnNldERpcnR5UmVnaW9uKGJ1ZiwgcmVnKTsKK30KKworc3RhdHVzX3QgU2hhcmVkQnVmZmVyQ2xpZW50OjpzZXRCdWZmZXJDb3VudCgKKyAgICAgICAgaW50IGJ1ZmZlckNvdW50LCBjb25zdCBTZXRCdWZmZXJDb3VudENhbGxiYWNrJiBpcGMpCit7CisgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CisgICAgaWYgKHVpbnQzMl90KGJ1ZmZlckNvdW50KSA+PSBTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0JVRkZFUl9NQVgpCisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisKKyAgICBpZiAodWludDMyX3QoYnVmZmVyQ291bnQpIDwgU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUlOKQorICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworCisgICAgUldMb2NrOjpBdXRvV0xvY2sgX3dyKG1Mb2NrKTsKKworICAgIHN0YXR1c190IGVyciA9IGlwYyhidWZmZXJDb3VudCk7CisgICAgaWYgKGVyciA9PSBOT19FUlJPUikgeworICAgICAgICBtTnVtQnVmZmVycyA9IGJ1ZmZlckNvdW50OworICAgICAgICBxdWV1ZWRfaGVhZCA9IChzdGFjay5oZWFkICsgc3RhY2sucXVldWVkKSAlIG1OdW1CdWZmZXJzOworICAgIH0KKyAgICByZXR1cm4gZXJyOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFNoYXJlZEJ1ZmZlclNlcnZlcjo6U2hhcmVkQnVmZmVyU2VydmVyKFNoYXJlZENsaWVudCogc2hhcmVkQ2xpZW50LAogICAgICAgICBpbnQgc3VyZmFjZSwgaW50IG51bSwgaW50MzJfdCBpZGVudGl0eSkKLSAgICA6IFNoYXJlZEJ1ZmZlckJhc2Uoc2hhcmVkQ2xpZW50LCBzdXJmYWNlLCBudW0sIGlkZW50aXR5KQorICAgIDogU2hhcmVkQnVmZmVyQmFzZShzaGFyZWRDbGllbnQsIHN1cmZhY2UsIGlkZW50aXR5KSwKKyAgICAgIG1OdW1CdWZmZXJzKG51bSkKIHsKICAgICBtU2hhcmVkU3RhY2stPmluaXQoaWRlbnRpdHkpOworICAgIG1TaGFyZWRTdGFjay0+dG9rZW4gPSBzdXJmYWNlOwogICAgIG1TaGFyZWRTdGFjay0+aGVhZCA9IG51bS0xOwogICAgIG1TaGFyZWRTdGFjay0+YXZhaWxhYmxlID0gbnVtOwogICAgIG1TaGFyZWRTdGFjay0+cXVldWVkID0gMDsKICAgICBtU2hhcmVkU3RhY2stPnJlYWxsb2NNYXNrID0gMDsKLSAgICBtZW1zZXQobVNoYXJlZFN0YWNrLT5kaXJ0eVJlZ2lvbiwgMCwgc2l6ZW9mKG1TaGFyZWRTdGFjay0+ZGlydHlSZWdpb24pKTsKKyAgICBtZW1zZXQobVNoYXJlZFN0YWNrLT5idWZmZXJzLCAwLCBzaXplb2YobVNoYXJlZFN0YWNrLT5idWZmZXJzKSk7CisgICAgZm9yIChpbnQgaT0wIDsgaTxudW0gOyBpKyspIHsKKyAgICAgICAgbUJ1ZmZlckxpc3QuYWRkKGkpOworICAgICAgICBtU2hhcmVkU3RhY2stPmluZGV4W2ldID0gaTsKKyAgICB9Cit9CisKK1NoYXJlZEJ1ZmZlclNlcnZlcjo6flNoYXJlZEJ1ZmZlclNlcnZlcigpCit7CiB9CiAKIHNzaXplX3QgU2hhcmVkQnVmZmVyU2VydmVyOjpyZXRpcmVBbmRMb2NrKCkKIHsKKyAgICBSV0xvY2s6OkF1dG9STG9jayBfbChtTG9jayk7CisKICAgICBSZXRpcmVVcGRhdGUgdXBkYXRlKHRoaXMsIG1OdW1CdWZmZXJzKTsKICAgICBzc2l6ZV90IGJ1ZiA9IHVwZGF0ZUNvbmRpdGlvbiggdXBkYXRlICk7Ci0gICAgTE9HRF9JRihERUJVR19BVE9NSUNTICYmIGJ1Zj49MCwgInJldGlyZT0lZCwgJXMiLCBpbnQoYnVmKSwgZHVtcCgiIikuc3RyaW5nKCkpOworICAgIGlmIChidWYgPj0gMCkgeworICAgICAgICBpZiAodWludDMyX3QoYnVmKSA+PSBTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0JVRkZFUl9NQVgpCisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKKyAgICAgICAgYnVmID0gc3RhY2suaW5kZXhbYnVmXTsKKyAgICAgICAgTE9HRF9JRihERUJVR19BVE9NSUNTICYmIGJ1Zj49MCwgInJldGlyZT0lZCwgJXMiLAorICAgICAgICAgICAgICAgIGludChidWYpLCBkdW1wKCIiKS5zdHJpbmcoKSk7CisgICAgfQogICAgIHJldHVybiBidWY7CiB9CiAKLXN0YXR1c190IFNoYXJlZEJ1ZmZlclNlcnZlcjo6dW5sb2NrKGludCBidWZmZXIpCitzdGF0dXNfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OnVubG9jayhpbnQgYnVmKQogewotICAgIFVubG9ja1VwZGF0ZSB1cGRhdGUodGhpcywgYnVmZmVyKTsKKyAgICBVbmxvY2tVcGRhdGUgdXBkYXRlKHRoaXMsIGJ1Zik7CiAgICAgc3RhdHVzX3QgZXJyID0gdXBkYXRlQ29uZGl0aW9uKCB1cGRhdGUgKTsKICAgICByZXR1cm4gZXJyOwogfQpAQCAtMzg5LDExICs1MzAsMjUgQEAKICAgICB9CiB9CiAKLXN0YXR1c190IFNoYXJlZEJ1ZmZlclNlcnZlcjo6cmVhbGxvY2F0ZSgpCitzdGF0dXNfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OnJlYWxsb2NhdGVBbGwoKQogeworICAgIFJXTG9jazo6QXV0b1JMb2NrIF9sKG1Mb2NrKTsKKwogICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOwotICAgIHVpbnQzMl90IG1hc2sgPSAoMTw8bU51bUJ1ZmZlcnMpLTE7Ci0gICAgYW5kcm9pZF9hdG9taWNfb3IobWFzaywgJnN0YWNrLnJlYWxsb2NNYXNrKTsgCisgICAgdWludDMyX3QgbWFzayA9IG1CdWZmZXJMaXN0LmdldE1hc2soKTsKKyAgICBhbmRyb2lkX2F0b21pY19vcihtYXNrLCAmc3RhY2sucmVhbGxvY01hc2spOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgU2hhcmVkQnVmZmVyU2VydmVyOjpyZWFsbG9jYXRlQWxsRXhjZXB0KGludCBidWZmZXIpCit7CisgICAgUldMb2NrOjpBdXRvUkxvY2sgX2wobUxvY2spOworCisgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CisgICAgQnVmZmVyTGlzdCB0ZW1wKG1CdWZmZXJMaXN0KTsKKyAgICB0ZW1wLnJlbW92ZShidWZmZXIpOworICAgIHVpbnQzMl90IG1hc2sgPSB0ZW1wLmdldE1hc2soKTsKKyAgICBhbmRyb2lkX2F0b21pY19vcihtYXNrLCAmc3RhY2sucmVhbGxvY01hc2spOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIApAQCAtNDAzLDE3ICs1NTgsNzcgQEAKICAgICByZXR1cm4gc3RhY2sucXVldWVkOwogfQogCi1zdGF0dXNfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OmFzc2VydFJlYWxsb2NhdGUoaW50IGJ1ZmZlcikKK3N0YXR1c190IFNoYXJlZEJ1ZmZlclNlcnZlcjo6YXNzZXJ0UmVhbGxvY2F0ZShpbnQgYnVmKQogewotICAgIFJlYWxsb2NhdGVDb25kaXRpb24gY29uZGl0aW9uKHRoaXMsIGJ1ZmZlcik7CisgICAgLyoKKyAgICAgKiBOT1RFOiBpdCdzIHNhZmUgdG8gaG9sZCBtTG9jayBmb3IgcmVhZCB3aGlsZSB3YWl0aW5nIGZvcgorICAgICAqIHRoZSBSZWFsbG9jYXRlQ29uZGl0aW9uIGJlY2F1c2UgdGhhdCBjb25kaXRpb24gaXMgbm90IHVwZGF0ZWQKKyAgICAgKiBieSB0aGUgdGhyZWFkIHRoYXQgaG9sZHMgbUxvY2sgZm9yIHdyaXRlLgorICAgICAqLworICAgIFJXTG9jazo6QXV0b1JMb2NrIF9sKG1Mb2NrKTsKKworICAgIC8vIFRPRE86IG5lZWQgdG8gdmFsaWRhdGUgImJ1ZiIKKyAgICBSZWFsbG9jYXRlQ29uZGl0aW9uIGNvbmRpdGlvbih0aGlzLCBidWYpOwogICAgIHN0YXR1c190IGVyciA9IHdhaXRGb3JDb25kaXRpb24oY29uZGl0aW9uKTsKICAgICByZXR1cm4gZXJyOwogfQogCi1SZWdpb24gU2hhcmVkQnVmZmVyU2VydmVyOjpnZXREaXJ0eVJlZ2lvbihpbnQgYnVmZmVyKSBjb25zdAorUmVnaW9uIFNoYXJlZEJ1ZmZlclNlcnZlcjo6Z2V0RGlydHlSZWdpb24oaW50IGJ1ZikgY29uc3QKIHsKICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKLSAgICByZXR1cm4gc3RhY2suZ2V0RGlydHlSZWdpb24oYnVmZmVyKTsKKyAgICByZXR1cm4gc3RhY2suZ2V0RGlydHlSZWdpb24oYnVmKTsKK30KKworLyoKKyAqIE5PVEU6IHRoaXMgaXMgbm90IHRocmVhZC1zYWZlIG9uIHRoZSBzZXJ2ZXItc2lkZSwgbWVhbmluZworICogJ2hlYWQnIGNhbm5vdCBtb3ZlIGR1cmluZyB0aGlzIG9wZXJhdGlvbi4gVGhlIGNsaWVudC1zaWRlCisgKiBjYW4gc2FmZWx5IG9wZXJhdGUgYW4gdXN1YWwuCisgKgorICovCitzdGF0dXNfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OnJlc2l6ZShpbnQgbmV3TnVtQnVmZmVycykKK3sKKyAgICBpZiAodWludDMyX3QobmV3TnVtQnVmZmVycykgPj0gU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUFYKQorICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworCisgICAgUldMb2NrOjpBdXRvV0xvY2sgX2wobUxvY2spOworCisgICAgLy8gZm9yIG5vdyB3ZSdyZSBub3Qgc3VwcG9ydGluZyBzaHJpbmtpbmcKKyAgICBjb25zdCBpbnQgbnVtQnVmZmVycyA9IG1OdW1CdWZmZXJzOworICAgIGlmIChuZXdOdW1CdWZmZXJzIDwgbnVtQnVmZmVycykKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKworICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOworICAgIGNvbnN0IGludCBleHRyYSA9IG5ld051bUJ1ZmZlcnMgLSBudW1CdWZmZXJzOworCisgICAgLy8gcmVhZCB0aGUgaGVhZCwgbWFrZSBzdXJlIGl0J3MgdmFsaWQKKyAgICBpbnQzMl90IGhlYWQgPSBzdGFjay5oZWFkOworICAgIGlmICh1aW50MzJfdChoZWFkKSA+PSBTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0JVRkZFUl9NQVgpCisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisKKyAgICBpbnQgYmFzZSA9IG51bUJ1ZmZlcnM7CisgICAgaW50MzJfdCBhdmFpbCA9IHN0YWNrLmF2YWlsYWJsZTsKKyAgICBpbnQgdGFpbCA9IGhlYWQgLSBhdmFpbCArIDE7CisKKyAgICBpZiAodGFpbCA+PSAwKSB7CisgICAgICAgIGludDhfdCogY29uc3QgaW5kZXggPSBjb25zdF9jYXN0PGludDhfdCo+KHN0YWNrLmluZGV4KTsKKyAgICAgICAgY29uc3QgaW50IG5iID0gbnVtQnVmZmVycyAtIGhlYWQ7CisgICAgICAgIG1lbW1vdmUoJmluZGV4W2hlYWQgKyBleHRyYV0sICZpbmRleFtoZWFkXSwgbmIpOworICAgICAgICBiYXNlID0gaGVhZDsKKyAgICAgICAgLy8gbW92ZSBoZWFkICdleHRyYScgYWhlYWQsIHRoaXMgZG9lc24ndCBpbXBhY3Qgc3RhY2suaW5kZXhbaGVhZF07CisgICAgICAgIHN0YWNrLmhlYWQgPSBoZWFkICsgZXh0cmE7CisgICAgfQorICAgIHN0YWNrLmF2YWlsYWJsZSArPSBleHRyYTsKKworICAgIC8vIGZpbGwgdGhlIG5ldyBmcmVlIHNwYWNlIHdpdGggdW51c2VkIGJ1ZmZlcnMKKyAgICBCdWZmZXJMaXN0Ojpjb25zdF9pdGVyYXRvciBjdXJyKG1CdWZmZXJMaXN0LmZyZWVfYmVnaW4oKSk7CisgICAgZm9yIChpbnQgaT0wIDsgaTxleHRyYSA7IGkrKykgeworICAgICAgICBzdGFjay5pbmRleFtiYXNlK2ldID0gKmN1cnI7CisgICAgICAgIG1CdWZmZXJMaXN0LmFkZCgqY3Vycik7CisgICAgICAgICsrY3VycjsKKyAgICB9CisKKyAgICBtTnVtQnVmZmVycyA9IG5ld051bUJ1ZmZlcnM7CisgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiBTaGFyZWRCdWZmZXJTdGFjazo6U3RhdGlzdGljcyBTaGFyZWRCdWZmZXJTZXJ2ZXI6OmdldFN0YXRzKCkgY29uc3QKQEAgLTQyMiw2ICs2MzcsMjkgQEAKICAgICByZXR1cm4gc3RhY2suc3RhdHM7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3RhdHVzX3QgU2hhcmVkQnVmZmVyU2VydmVyOjpCdWZmZXJMaXN0OjphZGQoaW50IHZhbHVlKQoreworICAgIGlmICh1aW50MzJfdCh2YWx1ZSkgPj0gbUNhcGFjaXR5KQorICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIHVpbnQzMl90IG1hc2sgPSAxPDwoMzEtdmFsdWUpOworICAgIGlmIChtTGlzdCAmIG1hc2spCisgICAgICAgIHJldHVybiBBTFJFQURZX0VYSVNUUzsKKyAgICBtTGlzdCB8PSBtYXNrOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgU2hhcmVkQnVmZmVyU2VydmVyOjpCdWZmZXJMaXN0OjpyZW1vdmUoaW50IHZhbHVlKQoreworICAgIGlmICh1aW50MzJfdCh2YWx1ZSkgPj0gbUNhcGFjaXR5KQorICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIHVpbnQzMl90IG1hc2sgPSAxPDwoMzEtdmFsdWUpOworICAgIGlmICghKG1MaXN0ICYgbWFzaykpCisgICAgICAgIHJldHVybiBOQU1FX05PVF9GT1VORDsKKyAgICBtTGlzdCAmPSB+bWFzazsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU3VyZmFjZS5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TdXJmYWNlLmNwcAppbmRleCA1ZGQ3NWMzLi5kYzYzMzJjIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TdXJmYWNlLmNwcAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TdXJmYWNlLmNwcApAQCAtMTcsOCArMTcsNiBAQAogI2RlZmluZSBMT0dfVEFHICJTdXJmYWNlIgogCiAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CkBAIC0yOCw4ICsyNiw2IEBACiAjaW5jbHVkZSA8dXRpbHMvQ2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CiAKLSNpbmNsdWRlIDxwaXhlbGZsaW5nZXIvcGl4ZWxmbGluZ2VyLmg+Ci0KICNpbmNsdWRlIDxiaW5kZXIvSVBDVGhyZWFkU3RhdGUuaD4KICNpbmNsdWRlIDxiaW5kZXIvSU1lbW9yeS5oPgogCkBAIC01NSw2ICs1MSw4IEBACiAgICAgICAgIGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBzcmMsIAogICAgICAgICBjb25zdCBSZWdpb24mIHJlZykKIHsKKyAgICAvLyBzcmMgYW5kIGRzdCB3aXRoLCBoZWlnaHQgYW5kIGZvcm1hdCBtdXN0IGJlIGlkZW50aWNhbC4gbm8gdmVyaWZpY2F0aW9uCisgICAgLy8gaXMgZG9uZSBoZXJlLgogICAgIHN0YXR1c190IGVycjsKICAgICB1aW50OF90IGNvbnN0ICogc3JjX2JpdHMgPSBOVUxMOwogICAgIGVyciA9IHNyYy0+bG9jayhHUkFMTE9DX1VTQUdFX1NXX1JFQURfT0ZURU4sIHJlZy5ib3VuZHMoKSwgKHZvaWQqKikmc3JjX2JpdHMpOwpAQCAtNjcsNyArNjUsNiBAQAogICAgIFJlZ2lvbjo6Y29uc3RfaXRlcmF0b3IgaGVhZChyZWcuYmVnaW4oKSk7CiAgICAgUmVnaW9uOjpjb25zdF9pdGVyYXRvciB0YWlsKHJlZy5lbmQoKSk7CiAgICAgaWYgKGhlYWQgIT0gdGFpbCAmJiBzcmNfYml0cyAmJiBkc3RfYml0cykgewotICAgICAgICAvLyBOT1RFOiBkc3QgYW5kIHNyYyBtdXN0IGJlIHRoZSBzYW1lIGZvcm1hdAogICAgICAgICBjb25zdCBzaXplX3QgYnBwID0gYnl0ZXNQZXJQaXhlbChzcmMtPmZvcm1hdCk7CiAgICAgICAgIGNvbnN0IHNpemVfdCBkYnByID0gZHN0LT5zdHJpZGUgKiBicHA7CiAgICAgICAgIGNvbnN0IHNpemVfdCBzYnByID0gc3JjLT5zdHJpZGUgKiBicHA7CkBAIC0xMDcsNyArMTA0LDcgQEAKIFN1cmZhY2VDb250cm9sOjpTdXJmYWNlQ29udHJvbCgKICAgICAgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50LCAKICAgICAgICAgY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXJmYWNlLAotICAgICAgICBjb25zdCBJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90JiBkYXRhLAorICAgICAgICBjb25zdCBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCYgZGF0YSwKICAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgUGl4ZWxGb3JtYXQgZm9ybWF0LCB1aW50MzJfdCBmbGFncykKICAgICA6IG1DbGllbnQoY2xpZW50KSwgbVN1cmZhY2Uoc3VyZmFjZSksCiAgICAgICBtVG9rZW4oZGF0YS50b2tlbiksIG1JZGVudGl0eShkYXRhLmlkZW50aXR5KSwKQEAgLTE1NCw3NSArMTUxLDc1IEBACiB9CiAKIHN0YXR1c190IFN1cmZhY2VDb250cm9sOjpzZXRMYXllcihpbnQzMl90IGxheWVyKSB7Ci0gICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciA8IDApIHJldHVybiBlcnI7CisgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHJldHVybiBjbGllbnQtPnNldExheWVyKG1Ub2tlbiwgbGF5ZXIpOwogfQogc3RhdHVzX3QgU3VyZmFjZUNvbnRyb2w6OnNldFBvc2l0aW9uKGludDMyX3QgeCwgaW50MzJfdCB5KSB7Ci0gICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciA8IDApIHJldHVybiBlcnI7CisgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHJldHVybiBjbGllbnQtPnNldFBvc2l0aW9uKG1Ub2tlbiwgeCwgeSk7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6c2V0U2l6ZSh1aW50MzJfdCB3LCB1aW50MzJfdCBoKSB7Ci0gICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciA8IDApIHJldHVybiBlcnI7CisgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHJldHVybiBjbGllbnQtPnNldFNpemUobVRva2VuLCB3LCBoKTsKIH0KIHN0YXR1c190IFN1cmZhY2VDb250cm9sOjpoaWRlKCkgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5oaWRlKG1Ub2tlbik7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6c2hvdyhpbnQzMl90IGxheWVyKSB7Ci0gICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciA8IDApIHJldHVybiBlcnI7CisgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHJldHVybiBjbGllbnQtPnNob3cobVRva2VuLCBsYXllcik7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6ZnJlZXplKCkgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5mcmVlemUobVRva2VuKTsKIH0KIHN0YXR1c190IFN1cmZhY2VDb250cm9sOjp1bmZyZWV6ZSgpIHsKLSAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyIDwgMCkgcmV0dXJuIGVycjsKKyAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgcmV0dXJuIGNsaWVudC0+dW5mcmVlemUobVRva2VuKTsKIH0KIHN0YXR1c190IFN1cmZhY2VDb250cm9sOjpzZXRGbGFncyh1aW50MzJfdCBmbGFncywgdWludDMyX3QgbWFzaykgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5zZXRGbGFncyhtVG9rZW4sIGZsYWdzLCBtYXNrKTsKIH0KIHN0YXR1c190IFN1cmZhY2VDb250cm9sOjpzZXRUcmFuc3BhcmVudFJlZ2lvbkhpbnQoY29uc3QgUmVnaW9uJiB0cmFuc3BhcmVudCkgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5zZXRUcmFuc3BhcmVudFJlZ2lvbkhpbnQobVRva2VuLCB0cmFuc3BhcmVudCk7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6c2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsKLSAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyIDwgMCkgcmV0dXJuIGVycjsKKyAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgcmV0dXJuIGNsaWVudC0+c2V0QWxwaGEobVRva2VuLCBhbHBoYSk7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6c2V0TWF0cml4KGZsb2F0IGRzZHgsIGZsb2F0IGR0ZHgsIGZsb2F0IGRzZHksIGZsb2F0IGR0ZHkpIHsKLSAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyIDwgMCkgcmV0dXJuIGVycjsKKyAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgcmV0dXJuIGNsaWVudC0+c2V0TWF0cml4KG1Ub2tlbiwgZHNkeCwgZHRkeCwgZHNkeSwgZHRkeSk7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6c2V0RnJlZXplVGludCh1aW50MzJfdCB0aW50KSB7Ci0gICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciA8IDApIHJldHVybiBlcnI7CisgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHJldHVybiBjbGllbnQtPnNldEZyZWV6ZVRpbnQobVRva2VuLCB0aW50KTsKIH0KIApAQCAtMjMzLDUwICsyMzAsMjcgQEAKICAgICAgICAgICAgICAgICBtVG9rZW4sIG1JZGVudGl0eSwgbUNsaWVudC5nZXQoKSk7CiAgICAgICAgIHJldHVybiBOT19JTklUOwogICAgIH0KLSAgICBTaGFyZWRDbGllbnQgY29uc3QqIGNibGsgPSBtQ2xpZW50LT5tQ29udHJvbDsKLSAgICBpZiAoY2JsayA9PSAwKSB7Ci0gICAgICAgIExPR0UoImNibGsgaXMgbnVsbCAoc3VyZmFjZSBpZD0lZCwgaWRlbnRpdHk9JXUpIiwgbVRva2VuLCBtSWRlbnRpdHkpOwotICAgICAgICByZXR1cm4gTk9fSU5JVDsKLSAgICB9Ci0gICAgc3RhdHVzX3QgZXJyID0gY2Jsay0+dmFsaWRhdGUobVRva2VuKTsKLSAgICBpZiAoZXJyICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoInN1cmZhY2UgKGlkPSVkLCBpZGVudGl0eT0ldSkgaXMgaW52YWxpZCwgZXJyPSVkICglcykiLAotICAgICAgICAgICAgICAgIG1Ub2tlbiwgbUlkZW50aXR5LCBlcnIsIHN0cmVycm9yKC1lcnIpKTsKLSAgICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gICAgdWludDMyX3QgaWRlbnRpdHkgPSBjYmxrLT5nZXRJZGVudGl0eShtVG9rZW4pOwotICAgIGlmIChtSWRlbnRpdHkgIT0gaWRlbnRpdHkpIHsKLSAgICAgICAgTE9HRSgidXNpbmcgYW4gaW52YWxpZCBzdXJmYWNlIGlkPSVkLCBpZGVudGl0eT0ldSBzaG91bGQgYmUgJWQiLAotICAgICAgICAgICAgICAgIG1Ub2tlbiwgbUlkZW50aXR5LCBpZGVudGl0eSk7Ci0gICAgICAgIHJldHVybiBOT19JTklUOwotICAgIH0KICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKIHN0YXR1c190IFN1cmZhY2VDb250cm9sOjp3cml0ZVN1cmZhY2VUb1BhcmNlbCgKICAgICAgICAgY29uc3Qgc3A8U3VyZmFjZUNvbnRyb2w+JiBjb250cm9sLCBQYXJjZWwqIHBhcmNlbCkKIHsKLSAgICB1aW50MzJfdCBmbGFncyA9IDA7Ci0gICAgdWludDMyX3QgZm9ybWF0ID0gMDsKLSAgICBTdXJmYWNlSUQgdG9rZW4gPSAtMTsKKyAgICBzcDxJU3VyZmFjZT4gc3VyOwogICAgIHVpbnQzMl90IGlkZW50aXR5ID0gMDsKICAgICB1aW50MzJfdCB3aWR0aCA9IDA7CiAgICAgdWludDMyX3QgaGVpZ2h0ID0gMDsKLSAgICBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNsaWVudDsKLSAgICBzcDxJU3VyZmFjZT4gc3VyOworICAgIHVpbnQzMl90IGZvcm1hdCA9IDA7CisgICAgdWludDMyX3QgZmxhZ3MgPSAwOwogICAgIGlmIChTdXJmYWNlQ29udHJvbDo6aXNWYWxpZChjb250cm9sKSkgewotICAgICAgICB0b2tlbiAgICA9IGNvbnRyb2wtPm1Ub2tlbjsKLSAgICAgICAgaWRlbnRpdHkgPSBjb250cm9sLT5tSWRlbnRpdHk7Ci0gICAgICAgIGNsaWVudCAgID0gY29udHJvbC0+bUNsaWVudDsKICAgICAgICAgc3VyICAgICAgPSBjb250cm9sLT5tU3VyZmFjZTsKKyAgICAgICAgaWRlbnRpdHkgPSBjb250cm9sLT5tSWRlbnRpdHk7CiAgICAgICAgIHdpZHRoICAgID0gY29udHJvbC0+bVdpZHRoOwogICAgICAgICBoZWlnaHQgICA9IGNvbnRyb2wtPm1IZWlnaHQ7CiAgICAgICAgIGZvcm1hdCAgID0gY29udHJvbC0+bUZvcm1hdDsKICAgICAgICAgZmxhZ3MgICAgPSBjb250cm9sLT5tRmxhZ3M7CiAgICAgfQotICAgIHBhcmNlbC0+d3JpdGVTdHJvbmdCaW5kZXIoY2xpZW50IT0wICA/IGNsaWVudC0+Y29ubmVjdGlvbigpIDogTlVMTCk7Ci0gICAgcGFyY2VsLT53cml0ZVN0cm9uZ0JpbmRlcihzdXIhPTAgICAgID8gc3VyLT5hc0JpbmRlcigpICAgICAgOiBOVUxMKTsKLSAgICBwYXJjZWwtPndyaXRlSW50MzIodG9rZW4pOworICAgIHBhcmNlbC0+d3JpdGVTdHJvbmdCaW5kZXIoc3VyIT0wID8gc3VyLT5hc0JpbmRlcigpIDogTlVMTCk7CiAgICAgcGFyY2VsLT53cml0ZUludDMyKGlkZW50aXR5KTsKICAgICBwYXJjZWwtPndyaXRlSW50MzIod2lkdGgpOwogICAgIHBhcmNlbC0+d3JpdGVJbnQzMihoZWlnaHQpOwpAQCAtMjk4LDcwICsyNzIsMTU5IEBACiAvLyAgU3VyZmFjZQogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCitjbGFzcyBTdXJmYWNlQ2xpZW50IDogcHVibGljIFNpbmdsZXRvbjxTdXJmYWNlQ2xpZW50PgoreworICAgIC8vIGFsbCB0aGVzZSBhdHRyaWJ1dGVzIGFyZSBjb25zdGFudHMKKyAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBtQ29tcG9zZXJTZXJ2aWNlOworICAgIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IG1DbGllbnQ7CisgICAgc3RhdHVzX3QgbVN0YXR1czsKKyAgICBTaGFyZWRDbGllbnQqIG1Db250cm9sOworICAgIHNwPElNZW1vcnlIZWFwPiBtQ29udHJvbE1lbW9yeTsKKworICAgIFN1cmZhY2VDbGllbnQoKQorICAgICAgICA6IFNpbmdsZXRvbjxTdXJmYWNlQ2xpZW50PigpLCBtU3RhdHVzKE5PX0lOSVQpCisgICAgeworICAgICAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBzZihDb21wb3NlclNlcnZpY2U6OmdldENvbXBvc2VyU2VydmljZSgpKTsKKyAgICAgICAgbUNvbXBvc2VyU2VydmljZSA9IHNmOworICAgICAgICBtQ2xpZW50ID0gc2YtPmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oKTsKKyAgICAgICAgaWYgKG1DbGllbnQgIT0gTlVMTCkgeworICAgICAgICAgICAgbUNvbnRyb2xNZW1vcnkgPSBtQ2xpZW50LT5nZXRDb250cm9sQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChtQ29udHJvbE1lbW9yeSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbUNvbnRyb2wgPSBzdGF0aWNfY2FzdDxTaGFyZWRDbGllbnQgKj4oCisgICAgICAgICAgICAgICAgICAgICAgICBtQ29udHJvbE1lbW9yeS0+Z2V0QmFzZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAobUNvbnRyb2wpIHsKKyAgICAgICAgICAgICAgICAgICAgbVN0YXR1cyA9IE5PX0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBmcmllbmQgY2xhc3MgU2luZ2xldG9uPFN1cmZhY2VDbGllbnQ+OworcHVibGljOgorICAgIHN0YXR1c190IGluaXRDaGVjaygpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1TdGF0dXM7CisgICAgfQorICAgIFNoYXJlZENsaWVudCogZ2V0U2hhcmVkQ2xpZW50KCkgY29uc3QgeworICAgICAgICByZXR1cm4gbUNvbnRyb2w7CisgICAgfQorICAgIHNzaXplX3QgZ2V0VG9rZW5Gb3JTdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyKSBjb25zdCB7CisgICAgICAgIC8vIFRPRE86IHdlIGNvdWxkIGNhY2hlIGEgZmV3IHRva2VucyBoZXJlIHRvIGF2b2lkIGFuIElQQworICAgICAgICByZXR1cm4gbUNsaWVudC0+Z2V0VG9rZW5Gb3JTdXJmYWNlKHN1cik7CisgICAgfQorICAgIHZvaWQgc2lnbmFsU2VydmVyKCkgY29uc3QgeworICAgICAgICBtQ29tcG9zZXJTZXJ2aWNlLT5zaWduYWwoKTsKKyAgICB9Cit9OworCitBTkRST0lEX1NJTkdMRVRPTl9TVEFUSUNfSU5TVEFOQ0UoU3VyZmFjZUNsaWVudCk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBTdXJmYWNlOjpTdXJmYWNlKGNvbnN0IHNwPFN1cmZhY2VDb250cm9sPiYgc3VyZmFjZSkKLSAgICA6IG1DbGllbnQoc3VyZmFjZS0+bUNsaWVudCksIG1TdXJmYWNlKHN1cmZhY2UtPm1TdXJmYWNlKSwKLSAgICAgIG1Ub2tlbihzdXJmYWNlLT5tVG9rZW4pLCBtSWRlbnRpdHkoc3VyZmFjZS0+bUlkZW50aXR5KSwKKyAgICA6IG1CdWZmZXJNYXBwZXIoR3JhcGhpY0J1ZmZlck1hcHBlcjo6Z2V0KCkpLAorICAgICAgbUNsaWVudChTdXJmYWNlQ2xpZW50OjpnZXRJbnN0YW5jZSgpKSwKKyAgICAgIG1TaGFyZWRCdWZmZXJDbGllbnQoTlVMTCksCisgICAgICBtSW5pdENoZWNrKE5PX0lOSVQpLAorICAgICAgbVN1cmZhY2Uoc3VyZmFjZS0+bVN1cmZhY2UpLAorICAgICAgbUlkZW50aXR5KHN1cmZhY2UtPm1JZGVudGl0eSksCiAgICAgICBtRm9ybWF0KHN1cmZhY2UtPm1Gb3JtYXQpLCBtRmxhZ3Moc3VyZmFjZS0+bUZsYWdzKSwKLSAgICAgIG1CdWZmZXJNYXBwZXIoR3JhcGhpY0J1ZmZlck1hcHBlcjo6Z2V0KCkpLCBtU2hhcmVkQnVmZmVyQ2xpZW50KE5VTEwpLAogICAgICAgbVdpZHRoKHN1cmZhY2UtPm1XaWR0aCksIG1IZWlnaHQoc3VyZmFjZS0+bUhlaWdodCkKIHsKLSAgICBtU2hhcmVkQnVmZmVyQ2xpZW50ID0gbmV3IFNoYXJlZEJ1ZmZlckNsaWVudCgKLSAgICAgICAgICAgIG1DbGllbnQtPm1Db250cm9sLCBtVG9rZW4sIDIsIG1JZGVudGl0eSk7Ci0KICAgICBpbml0KCk7CiB9CiAKLVN1cmZhY2U6OlN1cmZhY2UoY29uc3QgUGFyY2VsJiBwYXJjZWwpCi0gICAgOiAgbUJ1ZmZlck1hcHBlcihHcmFwaGljQnVmZmVyTWFwcGVyOjpnZXQoKSksIG1TaGFyZWRCdWZmZXJDbGllbnQoTlVMTCkKK1N1cmZhY2U6OlN1cmZhY2UoY29uc3QgUGFyY2VsJiBwYXJjZWwsIGNvbnN0IHNwPElCaW5kZXI+JiByZWYpCisgICAgOiBtQnVmZmVyTWFwcGVyKEdyYXBoaWNCdWZmZXJNYXBwZXI6OmdldCgpKSwKKyAgICAgIG1DbGllbnQoU3VyZmFjZUNsaWVudDo6Z2V0SW5zdGFuY2UoKSksCisgICAgICBtU2hhcmVkQnVmZmVyQ2xpZW50KE5VTEwpLAorICAgICAgbUluaXRDaGVjayhOT19JTklUKQogewotICAgIHNwPElCaW5kZXI+IGNsaWVudEJpbmRlciA9IHBhcmNlbC5yZWFkU3Ryb25nQmluZGVyKCk7Ci0gICAgbVN1cmZhY2UgICAgPSBpbnRlcmZhY2VfY2FzdDxJU3VyZmFjZT4ocGFyY2VsLnJlYWRTdHJvbmdCaW5kZXIoKSk7Ci0gICAgbVRva2VuICAgICAgPSBwYXJjZWwucmVhZEludDMyKCk7CisgICAgbVN1cmZhY2UgICAgPSBpbnRlcmZhY2VfY2FzdDxJU3VyZmFjZT4ocmVmKTsKICAgICBtSWRlbnRpdHkgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKICAgICBtV2lkdGggICAgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKICAgICBtSGVpZ2h0ICAgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKICAgICBtRm9ybWF0ICAgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKICAgICBtRmxhZ3MgICAgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKLQotICAgIC8vIEZJWE1FOiB3aGF0IGRvZXMgdGhhdCBtZWFuIGlmIGNsaWVudEJpbmRlciBpcyBOVUxMIGhlcmU/Ci0gICAgaWYgKGNsaWVudEJpbmRlciAhPSBOVUxMKSB7Ci0gICAgICAgIG1DbGllbnQgPSBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmNsaWVudEZvckNvbm5lY3Rpb24oY2xpZW50QmluZGVyKTsKLQotICAgICAgICBtU2hhcmVkQnVmZmVyQ2xpZW50ID0gbmV3IFNoYXJlZEJ1ZmZlckNsaWVudCgKLSAgICAgICAgICAgICAgICBtQ2xpZW50LT5tQ29udHJvbCwgbVRva2VuLCAyLCBtSWRlbnRpdHkpOwotICAgIH0KLQogICAgIGluaXQoKTsKIH0KIAorc3RhdHVzX3QgU3VyZmFjZTo6d3JpdGVUb1BhcmNlbCgKKyAgICAgICAgY29uc3Qgc3A8U3VyZmFjZT4mIHN1cmZhY2UsIFBhcmNlbCogcGFyY2VsKQoreworICAgIHNwPElTdXJmYWNlPiBzdXI7CisgICAgdWludDMyX3QgaWRlbnRpdHkgPSAwOworICAgIHVpbnQzMl90IHdpZHRoID0gMDsKKyAgICB1aW50MzJfdCBoZWlnaHQgPSAwOworICAgIHVpbnQzMl90IGZvcm1hdCA9IDA7CisgICAgdWludDMyX3QgZmxhZ3MgPSAwOworICAgIGlmIChTdXJmYWNlOjppc1ZhbGlkKHN1cmZhY2UpKSB7CisgICAgICAgIHN1ciAgICAgID0gc3VyZmFjZS0+bVN1cmZhY2U7CisgICAgICAgIGlkZW50aXR5ID0gc3VyZmFjZS0+bUlkZW50aXR5OworICAgICAgICB3aWR0aCAgICA9IHN1cmZhY2UtPm1XaWR0aDsKKyAgICAgICAgaGVpZ2h0ICAgPSBzdXJmYWNlLT5tSGVpZ2h0OworICAgICAgICBmb3JtYXQgICA9IHN1cmZhY2UtPm1Gb3JtYXQ7CisgICAgICAgIGZsYWdzICAgID0gc3VyZmFjZS0+bUZsYWdzOworICAgIH0KKyAgICBwYXJjZWwtPndyaXRlU3Ryb25nQmluZGVyKHN1ciE9MCA/IHN1ci0+YXNCaW5kZXIoKSA6IE5VTEwpOworICAgIHBhcmNlbC0+d3JpdGVJbnQzMihpZGVudGl0eSk7CisgICAgcGFyY2VsLT53cml0ZUludDMyKHdpZHRoKTsKKyAgICBwYXJjZWwtPndyaXRlSW50MzIoaGVpZ2h0KTsKKyAgICBwYXJjZWwtPndyaXRlSW50MzIoZm9ybWF0KTsKKyAgICBwYXJjZWwtPndyaXRlSW50MzIoZmxhZ3MpOworICAgIHJldHVybiBOT19FUlJPUjsKKworfQorCitzcDxTdXJmYWNlPiBTdXJmYWNlOjpyZWFkRnJvbVBhcmNlbCgKKyAgICAgICAgY29uc3QgUGFyY2VsJiBkYXRhLCBjb25zdCBzcDxTdXJmYWNlPiYgb3RoZXIpCit7CisgICAgc3A8U3VyZmFjZT4gcmVzdWx0KG90aGVyKTsKKyAgICBzcDxJQmluZGVyPiBiaW5kZXIoZGF0YS5yZWFkU3Ryb25nQmluZGVyKCkpOworICAgIGlmIChvdGhlcj09MCB8fCBiaW5kZXIgIT0gb3RoZXItPm1TdXJmYWNlLT5hc0JpbmRlcigpKSB7CisgICAgICAgIHJlc3VsdCA9IG5ldyBTdXJmYWNlKGRhdGEsIGJpbmRlcik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgU3VyZmFjZTo6aW5pdCgpCiB7Ci0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OnNldFN3YXBJbnRlcnZhbCAgPSBzZXRTd2FwSW50ZXJ2YWw7Ci0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OmRlcXVldWVCdWZmZXIgICAgPSBkZXF1ZXVlQnVmZmVyOwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190Ojpsb2NrQnVmZmVyICAgICAgID0gbG9ja0J1ZmZlcjsKLSAgICBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6cXVldWVCdWZmZXIgICAgICA9IHF1ZXVlQnVmZmVyOwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpxdWVyeSAgICAgICAgICAgID0gcXVlcnk7Ci0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OnBlcmZvcm0gICAgICAgICAgPSBwZXJmb3JtOwotICAgIG1Td2FwUmVjdGFuZ2xlLm1ha2VJbnZhbGlkKCk7CisgICAgQU5hdGl2ZVdpbmRvdzo6c2V0U3dhcEludGVydmFsICA9IHNldFN3YXBJbnRlcnZhbDsKKyAgICBBTmF0aXZlV2luZG93OjpkZXF1ZXVlQnVmZmVyICAgID0gZGVxdWV1ZUJ1ZmZlcjsKKyAgICBBTmF0aXZlV2luZG93Ojpsb2NrQnVmZmVyICAgICAgID0gbG9ja0J1ZmZlcjsKKyAgICBBTmF0aXZlV2luZG93OjpxdWV1ZUJ1ZmZlciAgICAgID0gcXVldWVCdWZmZXI7CisgICAgQU5hdGl2ZVdpbmRvdzo6cXVlcnkgICAgICAgICAgICA9IHF1ZXJ5OworICAgIEFOYXRpdmVXaW5kb3c6OnBlcmZvcm0gICAgICAgICAgPSBwZXJmb3JtOworCiAgICAgRGlzcGxheUluZm8gZGluZm87CiAgICAgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXREaXNwbGF5SW5mbygwLCAmZGluZm8pOwotICAgIGNvbnN0X2Nhc3Q8ZmxvYXQmPihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6eGRwaSkgPSBkaW5mby54ZHBpOwotICAgIGNvbnN0X2Nhc3Q8ZmxvYXQmPihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6eWRwaSkgPSBkaW5mby55ZHBpOworICAgIGNvbnN0X2Nhc3Q8ZmxvYXQmPihBTmF0aXZlV2luZG93Ojp4ZHBpKSA9IGRpbmZvLnhkcGk7CisgICAgY29uc3RfY2FzdDxmbG9hdCY+KEFOYXRpdmVXaW5kb3c6OnlkcGkpID0gZGluZm8ueWRwaTsKICAgICAvLyBGSVhNRTogc2V0IHJlYWwgdmFsdWVzIGhlcmUKLSAgICBjb25zdF9jYXN0PGludCY+KGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjptaW5Td2FwSW50ZXJ2YWwpID0gMTsKLSAgICBjb25zdF9jYXN0PGludCY+KGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjptYXhTd2FwSW50ZXJ2YWwpID0gMTsKLSAgICBjb25zdF9jYXN0PHVpbnQzMl90Jj4oYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OmZsYWdzKSA9IDA7Ci0gICAgLy8gYmUgZGVmYXVsdCB3ZSByZXF1ZXN0IGEgaGFyZHdhcmUgc3VyZmFjZQotICAgIG1Vc2FnZSA9IEdSQUxMT0NfVVNBR0VfSFdfUkVOREVSOworICAgIGNvbnN0X2Nhc3Q8aW50Jj4oQU5hdGl2ZVdpbmRvdzo6bWluU3dhcEludGVydmFsKSA9IDE7CisgICAgY29uc3RfY2FzdDxpbnQmPihBTmF0aXZlV2luZG93OjptYXhTd2FwSW50ZXJ2YWwpID0gMTsKKyAgICBjb25zdF9jYXN0PHVpbnQzMl90Jj4oQU5hdGl2ZVdpbmRvdzo6ZmxhZ3MpID0gMDsKKwogICAgIG1Db25uZWN0ZWQgPSAwOwotICAgIG1OZWVkRnVsbFVwZGF0ZSA9IGZhbHNlOworICAgIG1Td2FwUmVjdGFuZ2xlLm1ha2VJbnZhbGlkKCk7CisgICAgLy8gdHdvIGJ1ZmZlcnMgYnkgZGVmYXVsdAorICAgIG1CdWZmZXJzLnNldENhcGFjaXR5KDIpOworICAgIG1CdWZmZXJzLmluc2VydEF0KDAsIDIpOworCisgICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgbUNsaWVudC5pbml0Q2hlY2soKSA9PSBOT19FUlJPUikgeworICAgICAgICBpbnQzMl90IHRva2VuID0gbUNsaWVudC5nZXRUb2tlbkZvclN1cmZhY2UobVN1cmZhY2UpOworICAgICAgICBpZiAodG9rZW4gPj0gMCkgeworICAgICAgICAgICAgbVNoYXJlZEJ1ZmZlckNsaWVudCA9IG5ldyBTaGFyZWRCdWZmZXJDbGllbnQoCisgICAgICAgICAgICAgICAgICAgIG1DbGllbnQuZ2V0U2hhcmVkQ2xpZW50KCksIHRva2VuLCAyLCBtSWRlbnRpdHkpOworICAgICAgICAgICAgbUluaXRDaGVjayA9IG1DbGllbnQuZ2V0U2hhcmVkQ2xpZW50KCktPnZhbGlkYXRlKHRva2VuKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogU3VyZmFjZTo6flN1cmZhY2UoKQogewogICAgIC8vIHRoaXMgaXMgYSBjbGllbnQtc2lkZSBvcGVyYXRpb24sIHRoZSBzdXJmYWNlIGlzIGRlc3Ryb3llZCwgdW5tYXAKICAgICAvLyBpdHMgYnVmZmVycyBpbiB0aGlzIHByb2Nlc3MuCi0gICAgZm9yIChpbnQgaT0wIDsgaTwyIDsgaSsrKSB7CisgICAgc2l6ZV90IHNpemUgPSBtQnVmZmVycy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxzaXplIDsgaSsrKSB7CiAgICAgICAgIGlmIChtQnVmZmVyc1tpXSAhPSAwICYmIG1CdWZmZXJzW2ldLT5oYW5kbGUgIT0gMCkgewogICAgICAgICAgICAgZ2V0QnVmZmVyTWFwcGVyKCkudW5yZWdpc3RlckJ1ZmZlcihtQnVmZmVyc1tpXS0+aGFuZGxlKTsKICAgICAgICAgfQpAQCAtMzY5LDkzICs0MzIsODggQEAKIAogICAgIC8vIGNsZWFyIGFsbCByZWZlcmVuY2VzIGFuZCB0cmlnZ2VyIGFuIElQQyBub3csIHRvIG1ha2Ugc3VyZSB0aGluZ3MKICAgICAvLyBoYXBwZW4gd2l0aG91dCBkZWxheSwgc2luY2UgdGhlc2UgcmVzb3VyY2VzIGFyZSBxdWl0ZSBoZWF2eS4KLSAgICBtQ2xpZW50LmNsZWFyKCk7CisgICAgbUJ1ZmZlcnMuY2xlYXIoKTsKICAgICBtU3VyZmFjZS5jbGVhcigpOwogICAgIGRlbGV0ZSBtU2hhcmVkQnVmZmVyQ2xpZW50OwogICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmZsdXNoQ29tbWFuZHMoKTsKIH0KIAotc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBTdXJmYWNlOjpnZXRDbGllbnQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1DbGllbnQ7Citib29sIFN1cmZhY2U6OmlzVmFsaWQoKSB7CisgICAgcmV0dXJuIG1Jbml0Q2hlY2sgPT0gTk9fRVJST1I7Cit9CisKK3N0YXR1c190IFN1cmZhY2U6OnZhbGlkYXRlKCkgY29uc3QKK3sKKyAgICAvLyBjaGVjayB0aGF0IHdlIGluaXRpYWxpemVkIG91cnNlbGYgcHJvcGVybHkKKyAgICBpZiAobUluaXRDaGVjayAhPSBOT19FUlJPUikgeworICAgICAgICBMT0dFKCJpbnZhbGlkIHRva2VuIChpZGVudGl0eT0ldSkiLCBtSWRlbnRpdHkpOworICAgICAgICByZXR1cm4gbUluaXRDaGVjazsKKyAgICB9CisKKyAgICAvLyB2ZXJpZnkgdGhlIGlkZW50aXR5IG9mIHRoaXMgc3VyZmFjZQorICAgIHVpbnQzMl90IGlkZW50aXR5ID0gbVNoYXJlZEJ1ZmZlckNsaWVudC0+Z2V0SWRlbnRpdHkoKTsKKworICAgIC8vIHRoaXMgaXMgYSBiaXQgb2YgYSAodGVtcG9yYXJ5KSBzcGVjaWFsIGNhc2UsIGlkZW50aXR5PT0wIG1lYW5zIHRoYXQKKyAgICAvLyBubyBvcGVyYXRpb24gYXJlIGFsbG93ZWQgZnJvbSB0aGUgY2xpZW50IChlZzogZGVxdWV1ZS9xdWV1ZSksIHRoaXMKKyAgICAvLyBpcyB1c2VkIHdpdGggUFVTSF9CVUZGRVIgc3VyZmFjZXMgZm9yIGluc3RhbmNlCisgICAgaWYgKGlkZW50aXR5ID09IDApIHsKKyAgICAgICAgTE9HRSgiW1N1cmZhY2VdIGludmFsaWQgb3BlcmF0aW9uIChpZGVudGl0eT0ldSkiLCBtSWRlbnRpdHkpOworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorCisgICAgaWYgKG1JZGVudGl0eSAhPSBpZGVudGl0eSkgeworICAgICAgICBMT0dFKCJbU3VyZmFjZV0gdXNpbmcgYW4gaW52YWxpZCBzdXJmYWNlLCAiCisgICAgICAgICAgICAgICAgImlkZW50aXR5PSV1IHNob3VsZCBiZSAlZCIsCisgICAgICAgICAgICAgICAgbUlkZW50aXR5LCBpZGVudGl0eSk7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKworICAgIC8vIGNoZWNrIHRoZSBzdXJmYWNlIGRpZG4ndCBiZWNvbWUgaW52YWxpZAorICAgIHN0YXR1c190IGVyciA9IG1TaGFyZWRCdWZmZXJDbGllbnQtPmdldFN0YXR1cygpOworICAgIGlmIChlcnIgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgTE9HRSgic3VyZmFjZSAoaWRlbnRpdHk9JXUpIGlzIGludmFsaWQsIGVycj0lZCAoJXMpIiwKKyAgICAgICAgICAgICAgICBtSWRlbnRpdHksIGVyciwgc3RyZXJyb3IoLWVycikpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogc3A8SVN1cmZhY2U+IFN1cmZhY2U6OmdldElTdXJmYWNlKCkgY29uc3QgewogICAgIHJldHVybiBtU3VyZmFjZTsKIH0KIAotYm9vbCBTdXJmYWNlOjppc1ZhbGlkKCkgewotICAgIHJldHVybiBtVG9rZW4+PTAgJiYgbUNsaWVudCE9MDsKLX0KLQotc3RhdHVzX3QgU3VyZmFjZTo6dmFsaWRhdGUoKSBjb25zdAotewotICAgIHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gY2xpZW50KGdldENsaWVudCgpKTsKLSAgICBpZiAobVRva2VuPDAgfHwgbUNsaWVudD09MCkgewotICAgICAgICBMT0dFKCJpbnZhbGlkIHRva2VuICglZCwgaWRlbnRpdHk9JXUpIG9yIGNsaWVudCAoJXApIiwgCi0gICAgICAgICAgICAgICAgbVRva2VuLCBtSWRlbnRpdHksIGNsaWVudC5nZXQoKSk7Ci0gICAgICAgIHJldHVybiBOT19JTklUOwotICAgIH0KLSAgICBTaGFyZWRDbGllbnQgY29uc3QqIGNibGsgPSBtQ2xpZW50LT5tQ29udHJvbDsKLSAgICBpZiAoY2JsayA9PSAwKSB7Ci0gICAgICAgIExPR0UoImNibGsgaXMgbnVsbCAoc3VyZmFjZSBpZD0lZCwgaWRlbnRpdHk9JXUpIiwgbVRva2VuLCBtSWRlbnRpdHkpOwotICAgICAgICByZXR1cm4gTk9fSU5JVDsKLSAgICB9Ci0gICAgc3RhdHVzX3QgZXJyID0gY2Jsay0+dmFsaWRhdGUobVRva2VuKTsKLSAgICBpZiAoZXJyICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoInN1cmZhY2UgKGlkPSVkLCBpZGVudGl0eT0ldSkgaXMgaW52YWxpZCwgZXJyPSVkICglcykiLAotICAgICAgICAgICAgICAgIG1Ub2tlbiwgbUlkZW50aXR5LCBlcnIsIHN0cmVycm9yKC1lcnIpKTsKLSAgICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gICAgdWludDMyX3QgaWRlbnRpdHkgPSBjYmxrLT5nZXRJZGVudGl0eShtVG9rZW4pOwotICAgIGlmIChtSWRlbnRpdHkgIT0gaWRlbnRpdHkpIHsKLSAgICAgICAgTE9HRSgidXNpbmcgYW4gaW52YWxpZCBzdXJmYWNlIGlkPSVkLCBpZGVudGl0eT0ldSBzaG91bGQgYmUgJWQiLAotICAgICAgICAgICAgICAgIG1Ub2tlbiwgbUlkZW50aXR5LCBpZGVudGl0eSk7Ci0gICAgICAgIHJldHVybiBOT19JTklUOwotICAgIH0KLSAgICByZXR1cm4gTk9fRVJST1I7Ci19Ci0KLQotYm9vbCBTdXJmYWNlOjppc1NhbWVTdXJmYWNlKAotICAgICAgICBjb25zdCBzcDxTdXJmYWNlPiYgbGhzLCBjb25zdCBzcDxTdXJmYWNlPiYgcmhzKSAKLXsKLSAgICBpZiAobGhzID09IDAgfHwgcmhzID09IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBsaHMtPm1TdXJmYWNlLT5hc0JpbmRlcigpID09IHJocy0+bVN1cmZhY2UtPmFzQmluZGVyKCk7Ci19Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW50IFN1cmZhY2U6OnNldFN3YXBJbnRlcnZhbChhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBpbnQgaW50ZXJ2YWwpIHsKK2ludCBTdXJmYWNlOjpzZXRTd2FwSW50ZXJ2YWwoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgaW50ZXJ2YWwpIHsKICAgICByZXR1cm4gMDsKIH0KIAotaW50IFN1cmZhY2U6OmRlcXVldWVCdWZmZXIoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgCitpbnQgU3VyZmFjZTo6ZGVxdWV1ZUJ1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIAogICAgICAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCoqIGJ1ZmZlcikgewogICAgIFN1cmZhY2UqIHNlbGYgPSBnZXRTZWxmKHdpbmRvdyk7CiAgICAgcmV0dXJuIHNlbGYtPmRlcXVldWVCdWZmZXIoYnVmZmVyKTsKIH0KIAotaW50IFN1cmZhY2U6OmxvY2tCdWZmZXIoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgCitpbnQgU3VyZmFjZTo6bG9ja0J1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIAogICAgICAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKSB7CiAgICAgU3VyZmFjZSogc2VsZiA9IGdldFNlbGYod2luZG93KTsKICAgICByZXR1cm4gc2VsZi0+bG9ja0J1ZmZlcihidWZmZXIpOwogfQogCi1pbnQgU3VyZmFjZTo6cXVldWVCdWZmZXIoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgCitpbnQgU3VyZmFjZTo6cXVldWVCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCAKICAgICAgICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcikgewogICAgIFN1cmZhY2UqIHNlbGYgPSBnZXRTZWxmKHdpbmRvdyk7CiAgICAgcmV0dXJuIHNlbGYtPnF1ZXVlQnVmZmVyKGJ1ZmZlcik7CiB9CiAKLWludCBTdXJmYWNlOjpxdWVyeShhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCAKK2ludCBTdXJmYWNlOjpxdWVyeShBTmF0aXZlV2luZG93KiB3aW5kb3csIAogICAgICAgICBpbnQgd2hhdCwgaW50KiB2YWx1ZSkgewogICAgIFN1cmZhY2UqIHNlbGYgPSBnZXRTZWxmKHdpbmRvdyk7CiAgICAgcmV0dXJuIHNlbGYtPnF1ZXJ5KHdoYXQsIHZhbHVlKTsKIH0KIAotaW50IFN1cmZhY2U6OnBlcmZvcm0oYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgCitpbnQgU3VyZmFjZTo6cGVyZm9ybShBTmF0aXZlV2luZG93KiB3aW5kb3csIAogICAgICAgICBpbnQgb3BlcmF0aW9uLCAuLi4pIHsKICAgICB2YV9saXN0IGFyZ3M7CiAgICAgdmFfc3RhcnQoYXJncywgb3BlcmF0aW9uKTsKQEAgLTQ2NywyMSArNTI1LDI0IEBACiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdHVzX3QgU3VyZmFjZTo6ZGVxdWV1ZUJ1ZmZlcihzcDxHcmFwaGljQnVmZmVyPiogYnVmZmVyKSB7Ci0gICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIG91dDsKLSAgICBzdGF0dXNfdCBlcnIgPSBkZXF1ZXVlQnVmZmVyKCZvdXQpOwotICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgKmJ1ZmZlciA9IEdyYXBoaWNCdWZmZXI6OmdldFNlbGYob3V0KTsKK2Jvb2wgU3VyZmFjZTo6bmVlZE5ld0J1ZmZlcihpbnQgYnVmSWR4LAorICAgICAgICB1aW50MzJfdCAqcFdpZHRoLCB1aW50MzJfdCAqcEhlaWdodCwKKyAgICAgICAgdWludDMyX3QgKnBGb3JtYXQsIHVpbnQzMl90ICpwVXNhZ2UpIGNvbnN0Cit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1TdXJmYWNlTG9jayk7CisKKyAgICAvLyBBbHdheXMgY2FsbCBuZWVkTmV3QnVmZmVyKCksIHNpbmNlIGl0IGNsZWFycyB0aGUgbmVlZGVkIGJ1ZmZlcnMgZmxhZ3MKKyAgICBib29sIG5lZWROZXdCdWZmZXIgPSBtU2hhcmVkQnVmZmVyQ2xpZW50LT5uZWVkTmV3QnVmZmVyKGJ1ZklkeCk7CisgICAgYm9vbCB2YWxpZEJ1ZmZlciA9IG1CdWZmZXJJbmZvLnZhbGlkYXRlQnVmZmVyKG1CdWZmZXJzW2J1ZklkeF0pOworICAgIGJvb2wgbmV3TmVld0J1ZmZlciA9IG5lZWROZXdCdWZmZXIgfHwgIXZhbGlkQnVmZmVyOworICAgIGlmIChuZXdOZWV3QnVmZmVyKSB7CisgICAgICAgIG1CdWZmZXJJbmZvLmdldChwV2lkdGgsIHBIZWlnaHQsIHBGb3JtYXQsIHBVc2FnZSk7CiAgICAgfQotICAgIHJldHVybiBlcnI7CisgICAgcmV0dXJuIG5ld05lZXdCdWZmZXI7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCiBpbnQgU3VyZmFjZTo6ZGVxdWV1ZUJ1ZmZlcihhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCoqIGJ1ZmZlcikKIHsKLSAgICBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNsaWVudChnZXRDbGllbnQoKSk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gZXJyOwpAQCAtNDkyLDI0ICs1NTMsMjggQEAKICAgICAgICAgcmV0dXJuIGJ1ZklkeDsKICAgICB9CiAKLSAgICAvLyBiZWxvdyB3ZSBtYWtlIHN1cmUgd2UgQVQgTEVBU1QgaGF2ZSB0aGUgdXNhZ2UgZmxhZ3Mgd2Ugd2FudAotICAgIGNvbnN0IHVpbnQzMl90IHVzYWdlKGdldFVzYWdlKCkpOwotICAgIGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBiYWNrQnVmZmVyKG1CdWZmZXJzW2J1ZklkeF0pOwotICAgIGlmIChiYWNrQnVmZmVyID09IDAgfHwgCi0gICAgICAgICgodWludDMyX3QoYmFja0J1ZmZlci0+dXNhZ2UpICYgdXNhZ2UpICE9IHVzYWdlKSB8fAotICAgICAgICBtU2hhcmVkQnVmZmVyQ2xpZW50LT5uZWVkTmV3QnVmZmVyKGJ1ZklkeCkpIAotICAgIHsKLSAgICAgICAgZXJyID0gZ2V0QnVmZmVyTG9ja2VkKGJ1ZklkeCwgdXNhZ2UpOwotICAgICAgICBMT0dFX0lGKGVyciwgImdldEJ1ZmZlckxvY2tlZCglbGQsICUwOHgpIGZhaWxlZCAoJXMpIiwKLSAgICAgICAgICAgICAgICBidWZJZHgsIHVzYWdlLCBzdHJlcnJvcigtZXJyKSk7CisgICAgLy8gZ3JvdyB0aGUgYnVmZmVyIGFycmF5IGlmIG5lZWRlZAorICAgIGNvbnN0IHNpemVfdCBzaXplID0gbUJ1ZmZlcnMuc2l6ZSgpOworICAgIGNvbnN0IHNpemVfdCBuZWVkZWQgPSBidWZJZHgrMTsKKyAgICBpZiAoc2l6ZSA8IG5lZWRlZCkgeworICAgICAgICBtQnVmZmVycy5pbnNlcnRBdChzaXplLCBuZWVkZWQtc2l6ZSk7CisgICAgfQorCisgICAgdWludDMyX3QgdywgaCwgZm9ybWF0LCB1c2FnZTsKKyAgICBpZiAobmVlZE5ld0J1ZmZlcihidWZJZHgsICZ3LCAmaCwgJmZvcm1hdCwgJnVzYWdlKSkgeworICAgICAgICBlcnIgPSBnZXRCdWZmZXJMb2NrZWQoYnVmSWR4LCB3LCBoLCBmb3JtYXQsIHVzYWdlKTsKKyAgICAgICAgTE9HRV9JRihlcnIsICJnZXRCdWZmZXJMb2NrZWQoJWxkLCAldSwgJXUsICV1LCAlMDh4KSBmYWlsZWQgKCVzKSIsCisgICAgICAgICAgICAgICAgYnVmSWR4LCB3LCBoLCBmb3JtYXQsIHVzYWdlLCBzdHJlcnJvcigtZXJyKSk7CiAgICAgICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSB3aWR0aC9oZWlnaHQgd2l0aCB0aGUgd2hhdCB3ZSBnZXQgZnJvbSB0aGUgYnVmZmVyCisgICAgICAgICAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYmFja0J1ZmZlcihtQnVmZmVyc1tidWZJZHhdKTsKICAgICAgICAgICAgIG1XaWR0aCAgPSB1aW50MzJfdChiYWNrQnVmZmVyLT53aWR0aCk7CiAgICAgICAgICAgICBtSGVpZ2h0ID0gdWludDMyX3QoYmFja0J1ZmZlci0+aGVpZ2h0KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIGlmIHdlIHN0aWxsIGRvbid0IGhhdmUgYSBidWZmZXIgaGVyZSwgd2UgcHJvYmFibHkgcmFuIG91dCBvZiBtZW1vcnkKKyAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYmFja0J1ZmZlcihtQnVmZmVyc1tidWZJZHhdKTsKICAgICBpZiAoIWVyciAmJiBiYWNrQnVmZmVyPT0wKSB7CiAgICAgICAgIGVyciA9IE5PX01FTU9SWTsKICAgICB9CkBAIC01MjYsMTIgKzU5MSwxMSBAQAogCiBpbnQgU3VyZmFjZTo6bG9ja0J1ZmZlcihhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKQogewotICAgIHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gY2xpZW50KGdldENsaWVudCgpKTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgIT0gTk9fRVJST1IpCiAgICAgICAgIHJldHVybiBlcnI7CiAKLSAgICBpbnQzMl90IGJ1ZklkeCA9IEdyYXBoaWNCdWZmZXI6OmdldFNlbGYoYnVmZmVyKS0+Z2V0SW5kZXgoKTsKKyAgICBpbnQzMl90IGJ1ZklkeCA9IGdldEJ1ZmZlckluZGV4KEdyYXBoaWNCdWZmZXI6OmdldFNlbGYoYnVmZmVyKSk7CiAgICAgZXJyID0gbVNoYXJlZEJ1ZmZlckNsaWVudC0+bG9jayhidWZJZHgpOwogICAgIExPR0VfSUYoZXJyLCAiZXJyb3IgbG9ja2luZyBidWZmZXIgJWQgKCVzKSIsIGJ1ZklkeCwgc3RyZXJyb3IoLWVycikpOwogICAgIHJldHVybiBlcnI7CkBAIC01MzksNyArNjAzLDYgQEAKIAogaW50IFN1cmZhY2U6OnF1ZXVlQnVmZmVyKGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpCiB7ICAgCi0gICAgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjbGllbnQoZ2V0Q2xpZW50KCkpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciAhPSBOT19FUlJPUikKICAgICAgICAgcmV0dXJuIGVycjsKQEAgLTU0OCwxNCArNjExLDE1IEBACiAgICAgICAgIG1EaXJ0eVJlZ2lvbi5zZXQobVN3YXBSZWN0YW5nbGUpOwogICAgIH0KICAgICAKLSAgICBpbnQzMl90IGJ1ZklkeCA9IEdyYXBoaWNCdWZmZXI6OmdldFNlbGYoYnVmZmVyKS0+Z2V0SW5kZXgoKTsKKyAgICBpbnQzMl90IGJ1ZklkeCA9IGdldEJ1ZmZlckluZGV4KEdyYXBoaWNCdWZmZXI6OmdldFNlbGYoYnVmZmVyKSk7CisgICAgbVNoYXJlZEJ1ZmZlckNsaWVudC0+c2V0Q3JvcChidWZJZHgsIG1OZXh0QnVmZmVyQ3JvcCk7CiAgICAgbVNoYXJlZEJ1ZmZlckNsaWVudC0+c2V0RGlydHlSZWdpb24oYnVmSWR4LCBtRGlydHlSZWdpb24pOwogICAgIGVyciA9IG1TaGFyZWRCdWZmZXJDbGllbnQtPnF1ZXVlKGJ1ZklkeCk7CiAgICAgTE9HRV9JRihlcnIsICJlcnJvciBxdWV1aW5nIGJ1ZmZlciAlZCAoJXMpIiwgYnVmSWR4LCBzdHJlcnJvcigtZXJyKSk7CiAKICAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBjYW4gd2UgYXZvaWQgdGhpcyBJUEMgaWYgd2Uga25vdyB0aGVyZSBpcyBvbmUgcGVuZGluZz8KLSAgICAgICAgY2xpZW50LT5zaWduYWxTZXJ2ZXIoKTsKKyAgICAgICAgLy8gVE9ETzogY2FuIHdlIGF2b2lkIHRoaXMgSVBDIGlmIHdlIGtub3cgdGhlcmUgaXMgb25lIHBlbmRpbmc/CisgICAgICAgIG1DbGllbnQuc2lnbmFsU2VydmVyKCk7CiAgICAgfQogICAgIHJldHVybiBlcnI7CiB9CkBAIC01NzgsNiArNjQyLDEwIEBACiAKIGludCBTdXJmYWNlOjpwZXJmb3JtKGludCBvcGVyYXRpb24sIHZhX2xpc3QgYXJncykKIHsKKyAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOworICAgIGlmIChlcnIgIT0gTk9fRVJST1IpCisgICAgICAgIHJldHVybiBlcnI7CisKICAgICBpbnQgcmVzID0gTk9fRVJST1I7CiAgICAgc3dpdGNoIChvcGVyYXRpb24pIHsKICAgICBjYXNlIE5BVElWRV9XSU5ET1dfU0VUX1VTQUdFOgpAQCAtNTg5LDYgKzY1NywxNSBAQAogICAgIGNhc2UgTkFUSVZFX1dJTkRPV19ESVNDT05ORUNUOgogICAgICAgICByZXMgPSBkaXNwYXRjaF9kaXNjb25uZWN0KCBhcmdzICk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTkFUSVZFX1dJTkRPV19TRVRfQ1JPUDoKKyAgICAgICAgcmVzID0gZGlzcGF0Y2hfY3JvcCggYXJncyApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5BVElWRV9XSU5ET1dfU0VUX0JVRkZFUl9DT1VOVDoKKyAgICAgICAgcmVzID0gZGlzcGF0Y2hfc2V0X2J1ZmZlcl9jb3VudCggYXJncyApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5BVElWRV9XSU5ET1dfU0VUX0JVRkZFUlNfR0VPTUVUUlk6CisgICAgICAgIHJlcyA9IGRpc3BhdGNoX3NldF9idWZmZXJzX2dlb21ldHJ5KCBhcmdzICk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJlcyA9IE5BTUVfTk9UX0ZPVU5EOwogICAgICAgICBicmVhazsKQEAgLTYwOCwxMiArNjg1LDI1IEBACiAgICAgaW50IGFwaSA9IHZhX2FyZyhhcmdzLCBpbnQpOwogICAgIHJldHVybiBkaXNjb25uZWN0KCBhcGkgKTsKIH0KLQoraW50IFN1cmZhY2U6OmRpc3BhdGNoX2Nyb3AodmFfbGlzdCBhcmdzKSB7CisgICAgYW5kcm9pZF9uYXRpdmVfcmVjdF90IGNvbnN0KiByZWN0ID0gdmFfYXJnKGFyZ3MsIGFuZHJvaWRfbmF0aXZlX3JlY3RfdCopOworICAgIHJldHVybiBjcm9wKCByZWludGVycHJldF9jYXN0PFJlY3QgY29uc3QqPihyZWN0KSApOworfQoraW50IFN1cmZhY2U6OmRpc3BhdGNoX3NldF9idWZmZXJfY291bnQodmFfbGlzdCBhcmdzKSB7CisgICAgc2l6ZV90IGJ1ZmZlckNvdW50ID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7CisgICAgcmV0dXJuIHNldEJ1ZmZlckNvdW50KGJ1ZmZlckNvdW50KTsKK30KK2ludCBTdXJmYWNlOjpkaXNwYXRjaF9zZXRfYnVmZmVyc19nZW9tZXRyeSh2YV9saXN0IGFyZ3MpIHsKKyAgICBpbnQgdyA9IHZhX2FyZyhhcmdzLCBpbnQpOworICAgIGludCBoID0gdmFfYXJnKGFyZ3MsIGludCk7CisgICAgaW50IGYgPSB2YV9hcmcoYXJncywgaW50KTsKKyAgICByZXR1cm4gc2V0QnVmZmVyc0dlb21ldHJ5KHcsIGgsIGYpOworfQogCiB2b2lkIFN1cmZhY2U6OnNldFVzYWdlKHVpbnQzMl90IHJlcVVzYWdlKQogewogICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3VyZmFjZUxvY2spOwotICAgIG1Vc2FnZSA9IHJlcVVzYWdlOworICAgIG1CdWZmZXJJbmZvLnNldChyZXFVc2FnZSk7CiB9CiAKIGludCBTdXJmYWNlOjpjb25uZWN0KGludCBhcGkpCkBAIC02NTQsMTkgKzc0NCw1NSBAQAogICAgIHJldHVybiBlcnI7CiB9CiAKLXVpbnQzMl90IFN1cmZhY2U6OmdldFVzYWdlKCkgY29uc3QKK2ludCBTdXJmYWNlOjpjcm9wKFJlY3QgY29uc3QqIHJlY3QpCiB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1TdXJmYWNlTG9jayk7Ci0gICAgcmV0dXJuIG1Vc2FnZTsKKyAgICAvLyBUT0RPOiB2YWxpZGF0ZSByZWN0IHNpemUKKyAgICBtTmV4dEJ1ZmZlckNyb3AgPSAqcmVjdDsKKyAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKK2ludCBTdXJmYWNlOjpzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpCit7CisgICAgc3A8SVN1cmZhY2U+IHMobVN1cmZhY2UpOworICAgIGlmIChzID09IDApIHJldHVybiBOT19JTklUOworCisgICAgY2xhc3MgU2V0QnVmZmVyQ291bnRJUEMgOiBwdWJsaWMgU2hhcmVkQnVmZmVyQ2xpZW50OjpTZXRCdWZmZXJDb3VudENhbGxiYWNrIHsKKyAgICAgICAgc3A8SVN1cmZhY2U+IHN1cmZhY2U7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgb3BlcmF0b3IoKShpbnQgYnVmZmVyQ291bnQpIGNvbnN0IHsKKyAgICAgICAgICAgIHJldHVybiBzdXJmYWNlLT5zZXRCdWZmZXJDb3VudChidWZmZXJDb3VudCk7CisgICAgICAgIH0KKyAgICBwdWJsaWM6CisgICAgICAgIFNldEJ1ZmZlckNvdW50SVBDKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyZmFjZSkgOiBzdXJmYWNlKHN1cmZhY2UpIHsgfQorICAgIH0gaXBjKHMpOworCisgICAgc3RhdHVzX3QgZXJyID0gbVNoYXJlZEJ1ZmZlckNsaWVudC0+c2V0QnVmZmVyQ291bnQoYnVmZmVyQ291bnQsIGlwYyk7CisgICAgTE9HRV9JRihlcnIsICJJU3VyZmFjZTo6c2V0QnVmZmVyQ291bnQoJWQpIHJldHVybmVkICVzIiwKKyAgICAgICAgICAgIGJ1ZmZlckNvdW50LCBzdHJlcnJvcigtZXJyKSk7CisgICAgcmV0dXJuIGVycjsKK30KKworaW50IFN1cmZhY2U6OnNldEJ1ZmZlcnNHZW9tZXRyeShpbnQgdywgaW50IGgsIGludCBmb3JtYXQpCit7CisgICAgaWYgKHc8MCB8fCBoPDAgfHwgZm9ybWF0PDApCisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisKKyAgICBpZiAoKHcgJiYgIWgpIHx8ICghdyAmJiBoKSkKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKworICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3VyZmFjZUxvY2spOworICAgIG1CdWZmZXJJbmZvLnNldCh3LCBoLCBmb3JtYXQpOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBpbnQgU3VyZmFjZTo6Z2V0Q29ubmVjdGVkQXBpKCkgY29uc3QKIHsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN1cmZhY2VMb2NrKTsKICAgICByZXR1cm4gbUNvbm5lY3RlZDsKIH0KIAotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXR1c190IFN1cmZhY2U6OmxvY2soU3VyZmFjZUluZm8qIGluZm8sIGJvb2wgYmxvY2tpbmcpIHsKQEAgLTY3Nyw3ICs4MDMsNyBAQAogewogICAgIGlmIChnZXRDb25uZWN0ZWRBcGkoKSkgewogICAgICAgICBMT0dFKCJTdXJmYWNlOjpsb2NrKCVwKSBmYWlsZWQuIEFscmVhZHkgY29ubmVjdGVkIHRvIGFub3RoZXIgQVBJIiwKLSAgICAgICAgICAgICAgICAoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqKXRoaXMpOworICAgICAgICAgICAgICAgIChBTmF0aXZlV2luZG93Kil0aGlzKTsKICAgICAgICAgQ2FsbFN0YWNrIHN0YWNrOwogICAgICAgICBzdGFjay51cGRhdGUoKTsKICAgICAgICAgc3RhY2suZHVtcCgiIik7CkBAIC03MDMsNDUgKzgyOSw0NyBAQAogICAgIC8vIHdlJ3JlIGludGVuZGluZyB0byBkbyBzb2Z0d2FyZSByZW5kZXJpbmcgZnJvbSB0aGlzIHBvaW50CiAgICAgc2V0VXNhZ2UoR1JBTExPQ19VU0FHRV9TV19SRUFEX09GVEVOIHwgR1JBTExPQ19VU0FHRV9TV19XUklURV9PRlRFTik7CiAKLSAgICBzcDxHcmFwaGljQnVmZmVyPiBiYWNrQnVmZmVyOwotICAgIHN0YXR1c190IGVyciA9IGRlcXVldWVCdWZmZXIoJmJhY2tCdWZmZXIpOworICAgIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBvdXQ7CisgICAgc3RhdHVzX3QgZXJyID0gZGVxdWV1ZUJ1ZmZlcigmb3V0KTsKICAgICBMT0dFX0lGKGVyciwgImRlcXVldWVCdWZmZXIgZmFpbGVkICglcykiLCBzdHJlcnJvcigtZXJyKSk7CiAgICAgaWYgKGVyciA9PSBOT19FUlJPUikgeworICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBiYWNrQnVmZmVyKEdyYXBoaWNCdWZmZXI6OmdldFNlbGYob3V0KSk7CiAgICAgICAgIGVyciA9IGxvY2tCdWZmZXIoYmFja0J1ZmZlci5nZXQoKSk7CiAgICAgICAgIExPR0VfSUYoZXJyLCAibG9ja0J1ZmZlciAoaWR4PSVkKSBmYWlsZWQgKCVzKSIsCi0gICAgICAgICAgICAgICAgYmFja0J1ZmZlci0+Z2V0SW5kZXgoKSwgc3RyZXJyb3IoLWVycikpOworICAgICAgICAgICAgICAgIGdldEJ1ZmZlckluZGV4KGJhY2tCdWZmZXIpLCBzdHJlcnJvcigtZXJyKSk7CiAgICAgICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgIC8vIHdlIGhhbmRsZSBjb3B5LWJhY2sgaGVyZS4uLgotCiAgICAgICAgICAgICBjb25zdCBSZWN0IGJvdW5kcyhiYWNrQnVmZmVyLT53aWR0aCwgYmFja0J1ZmZlci0+aGVpZ2h0KTsKLSAgICAgICAgICAgIFJlZ2lvbiBzY3JhdGNoKGJvdW5kcyk7CisgICAgICAgICAgICBjb25zdCBSZWdpb24gYm91bmRzUmVnaW9uKGJvdW5kcyk7CisgICAgICAgICAgICBSZWdpb24gc2NyYXRjaChib3VuZHNSZWdpb24pOwogICAgICAgICAgICAgUmVnaW9uJiBuZXdEaXJ0eVJlZ2lvbihkaXJ0eUluID8gKmRpcnR5SW4gOiBzY3JhdGNoKTsKKyAgICAgICAgICAgIG5ld0RpcnR5UmVnaW9uICY9IGJvdW5kc1JlZ2lvbjsKIAotICAgICAgICAgICAgaWYgKG1OZWVkRnVsbFVwZGF0ZSkgewotICAgICAgICAgICAgICAgIC8vIHJlc2V0IG5ld0RpcnR5UmVnaW9uIHRvIGJvdW5kcyB3aGVuIGEgYnVmZmVyIGlzIHJlYWxsb2NhdGVkCi0gICAgICAgICAgICAgICAgLy8gaXQgd291bGQgYmUgYmV0dGVyIGlmIHRoaXMgaW5mb3JtYXRpb24gd2FzIGFzc29jaWF0ZWQgd2l0aAotICAgICAgICAgICAgICAgIC8vIHRoZSBidWZmZXIgYW5kIG1hZGUgYXZhaWxhYmxlIHRvIG91dHNpZGUgb2YgU3VyZmFjZS4KLSAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZG8gZm9yIG5vdyB0aG91Z2guCi0gICAgICAgICAgICAgICAgbU5lZWRGdWxsVXBkYXRlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbmV3RGlydHlSZWdpb24uc2V0KGJvdW5kcyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG5ld0RpcnR5UmVnaW9uLmFuZFNlbGYoYm91bmRzKTsKLSAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgLy8gZmlndXJlIG91dCBpZiB3ZSBjYW4gY29weSB0aGUgZnJvbnRidWZmZXIgYmFjawogICAgICAgICAgICAgY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGZyb250QnVmZmVyKG1Qb3N0ZWRCdWZmZXIpOwotICAgICAgICAgICAgaWYgKGZyb250QnVmZmVyICE9MCAmJgotICAgICAgICAgICAgICAgIGJhY2tCdWZmZXItPndpZHRoICA9PSBmcm9udEJ1ZmZlci0+d2lkdGggJiYgCi0gICAgICAgICAgICAgICAgYmFja0J1ZmZlci0+aGVpZ2h0ID09IGZyb250QnVmZmVyLT5oZWlnaHQgJiYKLSAgICAgICAgICAgICAgICAhKG1GbGFncyAmIElTdXJmYWNlQ29tcG9zZXI6OmVEZXN0cm95QmFja2J1ZmZlcikpIAotICAgICAgICAgICAgeworICAgICAgICAgICAgY29uc3QgYm9vbCBjYW5Db3B5QmFjayA9IChmcm9udEJ1ZmZlciAhPSAwICYmCisgICAgICAgICAgICAgICAgICAgIGJhY2tCdWZmZXItPndpZHRoICA9PSBmcm9udEJ1ZmZlci0+d2lkdGggJiYKKyAgICAgICAgICAgICAgICAgICAgYmFja0J1ZmZlci0+aGVpZ2h0ID09IGZyb250QnVmZmVyLT5oZWlnaHQgJiYKKyAgICAgICAgICAgICAgICAgICAgYmFja0J1ZmZlci0+Zm9ybWF0ID09IGZyb250QnVmZmVyLT5mb3JtYXQgJiYKKyAgICAgICAgICAgICAgICAgICAgIShtRmxhZ3MgJiBJU3VyZmFjZUNvbXBvc2VyOjplRGVzdHJveUJhY2tidWZmZXIpKTsKKworICAgICAgICAgICAgLy8gdGhlIGRpcnR5IHJlZ2lvbiB3ZSByZXBvcnQgdG8gc3VyZmFjZWZsaW5nZXIgaXMgdGhlIG9uZQorICAgICAgICAgICAgLy8gZ2l2ZW4gYnkgdGhlIHVzZXIgKGFzIG9wcG9zZWQgdG8gdGhlIG9uZSAqd2UqIHJldHVybiB0byB0aGUKKyAgICAgICAgICAgIC8vIHVzZXIpLgorICAgICAgICAgICAgbURpcnR5UmVnaW9uID0gbmV3RGlydHlSZWdpb247CisKKyAgICAgICAgICAgIGlmIChjYW5Db3B5QmFjaykgeworICAgICAgICAgICAgICAgIC8vIGNvcHkgdGhlIGFyZWEgdGhhdCBpcyBpbnZhbGlkIGFuZCBub3QgcmVwYWludGVkIHRoaXMgcm91bmQKICAgICAgICAgICAgICAgICBjb25zdCBSZWdpb24gY29weWJhY2sobU9sZERpcnR5UmVnaW9uLnN1YnRyYWN0KG5ld0RpcnR5UmVnaW9uKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb3B5YmFjay5pc0VtcHR5KCkgJiYgZnJvbnRCdWZmZXIhPTApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gY29weSBmcm9udCB0byBiYWNrCisgICAgICAgICAgICAgICAgaWYgKCFjb3B5YmFjay5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvcHlCbHQoYmFja0J1ZmZlciwgZnJvbnRCdWZmZXIsIGNvcHliYWNrKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGlmIHdlIGNhbid0IGNvcHktYmFjayBhbnl0aGluZywgbW9kaWZ5IHRoZSB1c2VyJ3MgZGlydHkKKyAgICAgICAgICAgICAgICAvLyByZWdpb24gdG8gbWFrZSBzdXJlIHRoZXkgcmVkcmF3IHRoZSB3aG9sZSBidWZmZXIKKyAgICAgICAgICAgICAgICBuZXdEaXJ0eVJlZ2lvbiA9IGJvdW5kc1JlZ2lvbjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbURpcnR5UmVnaW9uID0gbmV3RGlydHlSZWdpb247CisgICAgICAgICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBhcmUgb2YgdGhlIGJ1ZmZlciB0aGF0IGlzICJjbGVhbiIKKyAgICAgICAgICAgIC8vIChpZTogdGhhdCB3aWxsIGJlIHJlZHJhd24pCiAgICAgICAgICAgICBtT2xkRGlydHlSZWdpb24gPSBuZXdEaXJ0eVJlZ2lvbjsKIAogICAgICAgICAgICAgdm9pZCogdmFkZHI7CkBAIC03NzcsNyArOTA1LDcgQEAKICAgICAKICAgICBlcnIgPSBxdWV1ZUJ1ZmZlcihtTG9ja2VkQnVmZmVyLmdldCgpKTsKICAgICBMT0dFX0lGKGVyciwgInF1ZXVlQnVmZmVyIChpZHg9JWQpIGZhaWxlZCAoJXMpIiwKLSAgICAgICAgICAgIG1Mb2NrZWRCdWZmZXItPmdldEluZGV4KCksIHN0cmVycm9yKC1lcnIpKTsKKyAgICAgICAgICAgIGdldEJ1ZmZlckluZGV4KG1Mb2NrZWRCdWZmZXIpLCBzdHJlcnJvcigtZXJyKSk7CiAKICAgICBtUG9zdGVkQnVmZmVyID0gbUxvY2tlZEJ1ZmZlcjsKICAgICBtTG9ja2VkQnVmZmVyID0gMDsKQEAgLTc4OSw3ICs5MTcsMTMgQEAKICAgICBtU3dhcFJlY3RhbmdsZSA9IHI7CiB9CiAKLXN0YXR1c190IFN1cmZhY2U6OmdldEJ1ZmZlckxvY2tlZChpbnQgaW5kZXgsIGludCB1c2FnZSkKK2ludCBTdXJmYWNlOjpnZXRCdWZmZXJJbmRleChjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyKSBjb25zdAoreworICAgIHJldHVybiBidWZmZXItPmdldEluZGV4KCk7Cit9CisKK3N0YXR1c190IFN1cmZhY2U6OmdldEJ1ZmZlckxvY2tlZChpbnQgaW5kZXgsCisgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdXNhZ2UpCiB7CiAgICAgc3A8SVN1cmZhY2U+IHMobVN1cmZhY2UpOwogICAgIGlmIChzID09IDApIHJldHVybiBOT19JTklUOwpAQCAtNzk3LDIwICs5MzEsMjEgQEAKICAgICBzdGF0dXNfdCBlcnIgPSBOT19NRU1PUlk7CiAKICAgICAvLyBmcmVlIHRoZSBjdXJyZW50IGJ1ZmZlcgotICAgIHNwPEdyYXBoaWNCdWZmZXI+JiBjdXJyZW50QnVmZmVyKG1CdWZmZXJzW2luZGV4XSk7CisgICAgc3A8R3JhcGhpY0J1ZmZlcj4mIGN1cnJlbnRCdWZmZXIobUJ1ZmZlcnMuZWRpdEl0ZW1BdChpbmRleCkpOwogICAgIGlmIChjdXJyZW50QnVmZmVyICE9IDApIHsKICAgICAgICAgZ2V0QnVmZmVyTWFwcGVyKCkudW5yZWdpc3RlckJ1ZmZlcihjdXJyZW50QnVmZmVyLT5oYW5kbGUpOwogICAgICAgICBjdXJyZW50QnVmZmVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyID0gcy0+cmVxdWVzdEJ1ZmZlcihpbmRleCwgdXNhZ2UpOworICAgIHNwPEdyYXBoaWNCdWZmZXI+IGJ1ZmZlciA9IHMtPnJlcXVlc3RCdWZmZXIoaW5kZXgsIHcsIGgsIGZvcm1hdCwgdXNhZ2UpOwogICAgIExPR0VfSUYoYnVmZmVyPT0wLAogICAgICAgICAgICAgIklTdXJmYWNlOjpnZXRCdWZmZXIoJWQsICUwOHgpIHJldHVybmVkIE5VTEwiLAogICAgICAgICAgICAgaW5kZXgsIHVzYWdlKTsKICAgICBpZiAoYnVmZmVyICE9IDApIHsgLy8gdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGJ5IGNvbnN0cnVjdGlvbgogICAgICAgICBMT0dFX0lGKGJ1ZmZlci0+aGFuZGxlID09IE5VTEwsIAotICAgICAgICAgICAgICAgICJTdXJmYWNlIChpZGVudGl0eT0lZCkgcmVxdWVzdEJ1ZmZlciglZCwgJTA4eCkgcmV0dXJuZWQiCi0gICAgICAgICAgICAgICAgImEgYnVmZmVyIHdpdGggYSBudWxsIGhhbmRsZSIsIG1JZGVudGl0eSwgaW5kZXgsIHVzYWdlKTsKKyAgICAgICAgICAgICAgICAiU3VyZmFjZSAoaWRlbnRpdHk9JWQpIHJlcXVlc3RCdWZmZXIoJWQsICV1LCAldSwgJXUsICUwOHgpICIKKyAgICAgICAgICAgICAgICAicmV0dXJuZWQgYSBidWZmZXIgd2l0aCBhIG51bGwgaGFuZGxlIiwKKyAgICAgICAgICAgICAgICBtSWRlbnRpdHksIGluZGV4LCB3LCBoLCBmb3JtYXQsIHVzYWdlKTsKICAgICAgICAgZXJyID0gbVNoYXJlZEJ1ZmZlckNsaWVudC0+Z2V0U3RhdHVzKCk7CiAgICAgICAgIExPR0VfSUYoZXJyLCAgIlN1cmZhY2UgKGlkZW50aXR5PSVkKSBzdGF0ZSA9ICVkIiwgbUlkZW50aXR5LCBlcnIpOwogICAgICAgICBpZiAoIWVyciAmJiBidWZmZXItPmhhbmRsZSAhPSBOVUxMKSB7CkBAIC04MjAsMTQgKzk1NSw1MiBAQAogICAgICAgICAgICAgaWYgKGVyciA9PSBOT19FUlJPUikgewogICAgICAgICAgICAgICAgIGN1cnJlbnRCdWZmZXIgPSBidWZmZXI7CiAgICAgICAgICAgICAgICAgY3VycmVudEJ1ZmZlci0+c2V0SW5kZXgoaW5kZXgpOwotICAgICAgICAgICAgICAgIG1OZWVkRnVsbFVwZGF0ZSA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlcnIgPSBlcnI8MCA/IGVyciA6IE5PX01FTU9SWTsKKyAgICAgICAgICAgIGVyciA9IGVycjwwID8gZXJyIDogc3RhdHVzX3QoTk9fTUVNT1JZKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZXJyOyAKIH0KIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU3VyZmFjZTo6QnVmZmVySW5mbzo6QnVmZmVySW5mbygpCisgICAgOiBtV2lkdGgoMCksIG1IZWlnaHQoMCksIG1Gb3JtYXQoMCksCisgICAgICBtVXNhZ2UoR1JBTExPQ19VU0FHRV9IV19SRU5ERVIpLCBtRGlydHkoMCkKK3sKK30KKwordm9pZCBTdXJmYWNlOjpCdWZmZXJJbmZvOjpzZXQodWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZm9ybWF0KSB7CisgICAgaWYgKChtV2lkdGggIT0gdykgfHwgKG1IZWlnaHQgIT0gaCkgfHwgKG1Gb3JtYXQgIT0gZm9ybWF0KSkgeworICAgICAgICBtV2lkdGggPSB3OworICAgICAgICBtSGVpZ2h0ID0gaDsKKyAgICAgICAgbUZvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgbURpcnR5IHw9IEdFT01FVFJZOworICAgIH0KK30KKwordm9pZCBTdXJmYWNlOjpCdWZmZXJJbmZvOjpzZXQodWludDMyX3QgdXNhZ2UpIHsKKyAgICBtVXNhZ2UgPSB1c2FnZTsKK30KKwordm9pZCBTdXJmYWNlOjpCdWZmZXJJbmZvOjpnZXQodWludDMyX3QgKnBXaWR0aCwgdWludDMyX3QgKnBIZWlnaHQsCisgICAgICAgIHVpbnQzMl90ICpwRm9ybWF0LCB1aW50MzJfdCAqcFVzYWdlKSBjb25zdCB7CisgICAgKnBXaWR0aCAgPSBtV2lkdGg7CisgICAgKnBIZWlnaHQgPSBtSGVpZ2h0OworICAgICpwRm9ybWF0ID0gbUZvcm1hdDsKKyAgICAqcFVzYWdlICA9IG1Vc2FnZTsKK30KKworYm9vbCBTdXJmYWNlOjpCdWZmZXJJbmZvOjp2YWxpZGF0ZUJ1ZmZlcihjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyKSBjb25zdCB7CisgICAgLy8gbWFrZSBzdXJlIHdlIEFUIExFQVNUIGhhdmUgdGhlIHVzYWdlIGZsYWdzIHdlIHdhbnQKKyAgICBpZiAobURpcnR5IHx8IGJ1ZmZlcj09MCB8fAorICAgICAgICAgICAgKChidWZmZXItPnVzYWdlICYgbVVzYWdlKSAhPSBtVXNhZ2UpKSB7CisgICAgICAgIG1EaXJ0eSA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCiAKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L1N1cmZhY2VDb21wb3NlckNsaWVudC5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TdXJmYWNlQ29tcG9zZXJDbGllbnQuY3BwCmluZGV4IDMxMTc0OTUuLjQwOTZhYzYgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L1N1cmZhY2VDb21wb3NlckNsaWVudC5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU3VyZmFjZUNvbXBvc2VyQ2xpZW50LmNwcApAQCAtMTcsOTggKzE3LDEzNyBAQAogI2RlZmluZSBMT0dfVEFHICJTdXJmYWNlQ29tcG9zZXJDbGllbnQiCiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAotI2luY2x1ZGUgPGN1dGlscy9tZW1vcnkuaD4KLQotI2luY2x1ZGUgPHV0aWxzL0F0b21pYy5oPgogI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgogI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KLSNpbmNsdWRlIDx1dGlscy9LZXllZFZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1NvcnRlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHV0aWxzL1NpbmdsZXRvbi5oPgogCiAjaW5jbHVkZSA8YmluZGVyL0lTZXJ2aWNlTWFuYWdlci5oPgogI2luY2x1ZGUgPGJpbmRlci9JTWVtb3J5Lmg+CiAKICNpbmNsdWRlIDx1aS9EaXNwbGF5SW5mby5oPgotI2luY2x1ZGUgPHVpL1JlY3QuaD4KIAogI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXIuaD4KLSNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUZsaW5nZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9TdXJmYWNlQ29tcG9zZXJDbGllbnQuaD4KIAogI2luY2x1ZGUgPHByaXZhdGUvc3VyZmFjZWZsaW5nZXIvTGF5ZXJTdGF0ZS5oPgogI2luY2x1ZGUgPHByaXZhdGUvc3VyZmFjZWZsaW5nZXIvU2hhcmVkQnVmZmVyU3RhY2suaD4KIAotI2RlZmluZSBWRVJCT1NFKC4uLikJKCh2b2lkKTApCi0vLyNkZWZpbmUgVkVSQk9TRQkJCUxPR0QKLQotI2RlZmluZSBMSUtFTFkoIGV4cCApICAgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCB0cnVlICApKQotI2RlZmluZSBVTkxJS0VMWSggZXhwICkgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCBmYWxzZSApKQogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQU5EUk9JRF9TSU5HTEVUT05fU1RBVElDX0lOU1RBTkNFKENvbXBvc2VyU2VydmljZSk7CisKK0NvbXBvc2VyU2VydmljZTo6Q29tcG9zZXJTZXJ2aWNlKCkKKzogU2luZ2xldG9uPENvbXBvc2VyU2VydmljZT4oKSB7CisgICAgY29uc3QgU3RyaW5nMTYgbmFtZSgiU3VyZmFjZUZsaW5nZXIiKTsKKyAgICB3aGlsZSAoZ2V0U2VydmljZShuYW1lLCAmbUNvbXBvc2VyU2VydmljZSkgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgdXNsZWVwKDI1MDAwMCk7CisgICAgfQorICAgIG1TZXJ2ZXJDYmxrTWVtb3J5ID0gbUNvbXBvc2VyU2VydmljZS0+Z2V0Q2JsaygpOworICAgIG1TZXJ2ZXJDYmxrID0gc3RhdGljX2Nhc3Q8c3VyZmFjZV9mbGluZ2VyX2NibGtfdCB2b2xhdGlsZSAqPigKKyAgICAgICAgICAgIG1TZXJ2ZXJDYmxrTWVtb3J5LT5nZXRCYXNlKCkpOworfQorCitzcDxJU3VyZmFjZUNvbXBvc2VyPiBDb21wb3NlclNlcnZpY2U6OmdldENvbXBvc2VyU2VydmljZSgpIHsKKyAgICByZXR1cm4gQ29tcG9zZXJTZXJ2aWNlOjpnZXRJbnN0YW5jZSgpLm1Db21wb3NlclNlcnZpY2U7Cit9CisKK3N1cmZhY2VfZmxpbmdlcl9jYmxrX3QgY29uc3Qgdm9sYXRpbGUgKiBDb21wb3NlclNlcnZpY2U6OmdldENvbnRyb2xCbG9jaygpIHsKKyAgICByZXR1cm4gQ29tcG9zZXJTZXJ2aWNlOjpnZXRJbnN0YW5jZSgpLm1TZXJ2ZXJDYmxrOworfQorCitzdGF0aWMgaW5saW5lIHNwPElTdXJmYWNlQ29tcG9zZXI+IGdldENvbXBvc2VyU2VydmljZSgpIHsKKyAgICByZXR1cm4gQ29tcG9zZXJTZXJ2aWNlOjpnZXRDb21wb3NlclNlcnZpY2UoKTsKK30KKworc3RhdGljIGlubGluZSBzdXJmYWNlX2ZsaW5nZXJfY2Jsa190IGNvbnN0IHZvbGF0aWxlICogZ2V0X2NibGsoKSB7CisgICAgcmV0dXJuIENvbXBvc2VyU2VydmljZTo6Z2V0Q29udHJvbEJsb2NrKCk7Cit9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBNdXN0IG5vdCBiZSBob2xkaW5nIFN1cmZhY2VDb21wb3NlckNsaWVudDo6bUxvY2sgd2hlbiBhY3F1aXJpbmcgZ0xvY2sgaGVyZS4KLXN0YXRpYyBNdXRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdMb2NrOwotc3RhdGljIHNwPElTdXJmYWNlQ29tcG9zZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ1N1cmZhY2VNYW5hZ2VyOwotc3RhdGljIERlZmF1bHRLZXllZFZlY3Rvcjwgc3A8SUJpbmRlcj4sIHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gPiBnQWN0aXZlQ29ubmVjdGlvbnM7Ci1zdGF0aWMgU29ydGVkVmVjdG9yPHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gPiAgICAgICAgICAgICBnT3BlblRyYW5zYWN0aW9uczsKLXN0YXRpYyBzcDxJTWVtb3J5SGVhcD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdTZXJ2ZXJDYmxrTWVtb3J5Owotc3RhdGljIHZvbGF0aWxlIHN1cmZhY2VfZmxpbmdlcl9jYmxrX3QqICAgICAgICAgICAgICAgICAgICAgZ1NlcnZlckNibGs7Ci0KLXN0YXRpYyBzcDxJU3VyZmFjZUNvbXBvc2VyPiBnZXRDb21wb3NlclNlcnZpY2UoKQorY2xhc3MgQ29tcG9zZXIgOiBwdWJsaWMgU2luZ2xldG9uPENvbXBvc2VyPgogewotICAgIHNwPElTdXJmYWNlQ29tcG9zZXI+IHNjOwotICAgIE11dGV4OjpBdXRvbG9jayBfbChnTG9jayk7Ci0gICAgaWYgKGdTdXJmYWNlTWFuYWdlciAhPSAwKSB7Ci0gICAgICAgIHNjID0gZ1N1cmZhY2VNYW5hZ2VyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIHJlbGVhc2UgdGhlIGxvY2sgd2hpbGUgd2UncmUgd2FpdGluZy4uLgotICAgICAgICBnTG9jay51bmxvY2soKTsKKyAgICBNdXRleCBtTG9jazsKKyAgICBTb3J0ZWRWZWN0b3I8IHdwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gPiBtQWN0aXZlQ29ubmVjdGlvbnM7CisgICAgU29ydGVkVmVjdG9yPHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gPiBtT3BlblRyYW5zYWN0aW9uczsKIAotICAgICAgICBzcDxJQmluZGVyPiBiaW5kZXI7Ci0gICAgICAgIHNwPElTZXJ2aWNlTWFuYWdlcj4gc20gPSBkZWZhdWx0U2VydmljZU1hbmFnZXIoKTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgYmluZGVyID0gc20tPmdldFNlcnZpY2UoU3RyaW5nMTYoIlN1cmZhY2VGbGluZ2VyIikpOwotICAgICAgICAgICAgaWYgKGJpbmRlciA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgTE9HVygiU3VyZmFjZUZsaW5nZXIgbm90IHB1Ymxpc2hlZCwgd2FpdGluZy4uLiIpOwotICAgICAgICAgICAgICAgIHVzbGVlcCg1MDAwMDApOyAvLyAwLjUgcworICAgIENvbXBvc2VyKCkgOiBTaW5nbGV0b248Q29tcG9zZXI+KCkgeworICAgIH0KKworICAgIHZvaWQgYWRkQ2xpZW50SW1wbChjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQpIHsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLmFkZChjbGllbnQpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlQ2xpZW50SW1wbChjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQpIHsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZShjbGllbnQpOworICAgIH0KKworICAgIHZvaWQgb3Blbkdsb2JhbFRyYW5zYWN0aW9uSW1wbCgpCisgICAgeworICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgICAgICBpZiAobU9wZW5UcmFuc2FjdGlvbnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBMT0dFKCJvcGVuR2xvYmFsVHJhbnNhY3Rpb24oKSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIHNraXBwaW5nLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IHNpemVfdCBOID0gbUFjdGl2ZUNvbm5lY3Rpb25zLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjbGllbnQobUFjdGl2ZUNvbm5lY3Rpb25zW2ldLnByb21vdGUoKSk7CisgICAgICAgICAgICBpZiAoY2xpZW50ICE9IDAgJiYgbU9wZW5UcmFuc2FjdGlvbnMuaW5kZXhPZihjbGllbnQpIDwgMCkgeworICAgICAgICAgICAgICAgIGlmIChjbGllbnQtPm9wZW5UcmFuc2FjdGlvbigpID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgICAgIG1PcGVuVHJhbnNhY3Rpb25zLmFkZChjbGllbnQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExPR0UoIm9wZW5UcmFuc2FjdGlvbiBvbiBjbGllbnQgJXAgZmFpbGVkIiwgY2xpZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gbGV0IGl0IGdvLCBpdCdsbCBmYWlsIGxhdGVyIHdoZW4gdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gdHJpZXMgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uCisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9IHdoaWxlKGJpbmRlciA9PSAwKTsKLQotICAgICAgICAvLyBncmFiIHRoZSBsb2NrIGFnYWluIGZvciB1cGRhdGluZyBnU3VyZmFjZU1hbmFnZXIKLSAgICAgICAgZ0xvY2subG9jaygpOwotICAgICAgICBpZiAoZ1N1cmZhY2VNYW5hZ2VyID09IDApIHsKLSAgICAgICAgICAgIHNjID0gaW50ZXJmYWNlX2Nhc3Q8SVN1cmZhY2VDb21wb3Nlcj4oYmluZGVyKTsKLSAgICAgICAgICAgIGdTdXJmYWNlTWFuYWdlciA9IHNjOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2MgPSBnU3VyZmFjZU1hbmFnZXI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHNjOwotfQogCi1zdGF0aWMgdm9sYXRpbGUgc3VyZmFjZV9mbGluZ2VyX2NibGtfdCBjb25zdCAqIGdldF9jYmxrKCkKLXsKLSAgICBpZiAoZ1NlcnZlckNibGsgPT0gMCkgeworICAgIHZvaWQgY2xvc2VHbG9iYWxUcmFuc2FjdGlvbkltcGwoKQorICAgIHsKKyAgICAgICAgbUxvY2subG9jaygpOworICAgICAgICAgICAgU29ydGVkVmVjdG9yPCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+ID4gY2xpZW50cyhtT3BlblRyYW5zYWN0aW9ucyk7CisgICAgICAgICAgICBtT3BlblRyYW5zYWN0aW9ucy5jbGVhcigpOworICAgICAgICBtTG9jay51bmxvY2soKTsKKwogICAgICAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBzbShnZXRDb21wb3NlclNlcnZpY2UoKSk7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChnTG9jayk7Ci0gICAgICAgIGlmIChnU2VydmVyQ2JsayA9PSAwKSB7Ci0gICAgICAgICAgICBnU2VydmVyQ2Jsa01lbW9yeSA9IHNtLT5nZXRDYmxrKCk7Ci0gICAgICAgICAgICBMT0dFX0lGKGdTZXJ2ZXJDYmxrTWVtb3J5PT0wLCAiQ2FuJ3QgZ2V0IHNlcnZlciBjb250cm9sIGJsb2NrIik7Ci0gICAgICAgICAgICBnU2VydmVyQ2JsayA9IChzdXJmYWNlX2ZsaW5nZXJfY2Jsa190ICopZ1NlcnZlckNibGtNZW1vcnktPmdldEJhc2UoKTsKLSAgICAgICAgICAgIExPR0VfSUYoZ1NlcnZlckNibGs9PTAsICJDYW4ndCBnZXQgc2VydmVyIGNvbnRyb2wgYmxvY2sgYWRkcmVzcyIpOwotICAgICAgICB9CisgICAgICAgIHNtLT5vcGVuR2xvYmFsVHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdCBOID0gY2xpZW50cy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgY2xpZW50c1tpXS0+Y2xvc2VUcmFuc2FjdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICBzbS0+Y2xvc2VHbG9iYWxUcmFuc2FjdGlvbigpOwogICAgIH0KLSAgICByZXR1cm4gZ1NlcnZlckNibGs7Ci19CisKKyAgICBmcmllbmQgY2xhc3MgU2luZ2xldG9uPENvbXBvc2VyPjsKKworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFkZENsaWVudChjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQpIHsKKyAgICAgICAgQ29tcG9zZXI6OmdldEluc3RhbmNlKCkuYWRkQ2xpZW50SW1wbChjbGllbnQpOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCByZW1vdmVDbGllbnQoY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KSB7CisgICAgICAgIENvbXBvc2VyOjpnZXRJbnN0YW5jZSgpLnJlbW92ZUNsaWVudEltcGwoY2xpZW50KTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQgb3Blbkdsb2JhbFRyYW5zYWN0aW9uKCkgeworICAgICAgICBDb21wb3Nlcjo6Z2V0SW5zdGFuY2UoKS5vcGVuR2xvYmFsVHJhbnNhY3Rpb25JbXBsKCk7CisgICAgfQorICAgIHN0YXRpYyB2b2lkIGNsb3NlR2xvYmFsVHJhbnNhY3Rpb24oKSB7CisgICAgICAgIENvbXBvc2VyOjpnZXRJbnN0YW5jZSgpLmNsb3NlR2xvYmFsVHJhbnNhY3Rpb25JbXBsKCk7CisgICAgfQorfTsKKworQU5EUk9JRF9TSU5HTEVUT05fU1RBVElDX0lOU1RBTkNFKENvbXBvc2VyKTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTEyMCw2MSArMTU5LDI3IEBACiB9CiAKIFN1cmZhY2VDb21wb3NlckNsaWVudDo6U3VyZmFjZUNvbXBvc2VyQ2xpZW50KCkKKyAgICA6IG1UcmFuc2FjdGlvbk9wZW4oMCksIG1QcmVidWlsdExheWVyU3RhdGUoMCksIG1TdGF0dXMoTk9fSU5JVCkKK3sKK30KKwordm9pZCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6Om9uRmlyc3RSZWYoKQogewogICAgIHNwPElTdXJmYWNlQ29tcG9zZXI+IHNtKGdldENvbXBvc2VyU2VydmljZSgpKTsKLSAgICBpZiAoc20gPT0gMCkgewotICAgICAgICBfaW5pdCgwLCAwKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChzbSAhPSAwKSB7CisgICAgICAgIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNvbm4gPSBzbS0+Y3JlYXRlQ29ubmVjdGlvbigpOworICAgICAgICBpZiAoY29ubiAhPSAwKSB7CisgICAgICAgICAgICBtQ2xpZW50ID0gY29ubjsKKyAgICAgICAgICAgIENvbXBvc2VyOjphZGRDbGllbnQodGhpcyk7CisgICAgICAgICAgICBtUHJlYnVpbHRMYXllclN0YXRlID0gbmV3IGxheWVyX3N0YXRlX3Q7CisgICAgICAgICAgICBtU3RhdHVzID0gTk9fRVJST1I7CisgICAgICAgIH0KICAgICB9Ci0KLSAgICBfaW5pdChzbSwgc20tPmNyZWF0ZUNvbm5lY3Rpb24oKSk7Ci0KLSAgICBpZiAobUNsaWVudCAhPSAwKSB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChnTG9jayk7Ci0gICAgICAgIFZFUkJPU0UoIkFkZGluZyBjbGllbnQgJXAgdG8gbWFwIiwgdGhpcyk7Ci0gICAgICAgIGdBY3RpdmVDb25uZWN0aW9ucy5hZGQobUNsaWVudC0+YXNCaW5kZXIoKSwgdGhpcyk7Ci0gICAgfQotfQotCi1TdXJmYWNlQ29tcG9zZXJDbGllbnQ6OlN1cmZhY2VDb21wb3NlckNsaWVudCgKLSAgICAgICAgY29uc3Qgc3A8SVN1cmZhY2VDb21wb3Nlcj4mIHNtLCBjb25zdCBzcDxJQmluZGVyPiYgY29ubikKLXsKLSAgICBfaW5pdChzbSwgaW50ZXJmYWNlX2Nhc3Q8SVN1cmZhY2VGbGluZ2VyQ2xpZW50Pihjb25uKSk7Ci19Ci0KLQotc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpsaW5rVG9Db21wb3NlckRlYXRoKAotICAgICAgICBjb25zdCBzcDxJQmluZGVyOjpEZWF0aFJlY2lwaWVudD4mIHJlY2lwaWVudCwKLSAgICAgICAgdm9pZCogY29va2llLCB1aW50MzJfdCBmbGFncykKLXsKLSAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBzbShnZXRDb21wb3NlclNlcnZpY2UoKSk7Ci0gICAgcmV0dXJuIHNtLT5hc0JpbmRlcigpLT5saW5rVG9EZWF0aChyZWNpcGllbnQsIGNvb2tpZSwgZmxhZ3MpOyAgICAKLX0KLQotdm9pZCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6Ol9pbml0KAotICAgICAgICBjb25zdCBzcDxJU3VyZmFjZUNvbXBvc2VyPiYgc20sIGNvbnN0IHNwPElTdXJmYWNlRmxpbmdlckNsaWVudD4mIGNvbm4pCi17Ci0gICAgVkVSQk9TRSgiQ3JlYXRpbmcgY2xpZW50ICVwLCBjb25uICVwIiwgdGhpcywgY29ubi5nZXQoKSk7Ci0KLSAgICBtUHJlYnVpbHRMYXllclN0YXRlID0gMDsKLSAgICBtVHJhbnNhY3Rpb25PcGVuID0gMDsKLSAgICBtU3RhdHVzID0gTk9fRVJST1I7Ci0gICAgbUNvbnRyb2wgPSAwOwotCi0gICAgbUNsaWVudCA9IGNvbm47Ci0gICAgaWYgKG1DbGllbnQgPT0gMCkgewotICAgICAgICBtU3RhdHVzID0gTk9fSU5JVDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1Db250cm9sTWVtb3J5ID0gbUNsaWVudC0+Z2V0Q29udHJvbEJsb2NrKCk7Ci0gICAgbVNpZ25hbFNlcnZlciA9IHNtOwotICAgIG1Db250cm9sID0gc3RhdGljX2Nhc3Q8U2hhcmVkQ2xpZW50ICo+KG1Db250cm9sTWVtb3J5LT5nZXRCYXNlKCkpOwogfQogCiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6On5TdXJmYWNlQ29tcG9zZXJDbGllbnQoKQogewotICAgIFZFUkJPU0UoIkRlc3Ryb3lpbmcgY2xpZW50ICVwLCBjb25uICVwIiwgdGhpcywgbUNsaWVudC5nZXQoKSk7CisgICAgZGVsZXRlIG1QcmVidWlsdExheWVyU3RhdGU7CiAgICAgZGlzcG9zZSgpOwogfQogCkBAIC0xODgsNjkgKzE5MywzMSBAQAogICAgIHJldHVybiAobUNsaWVudCAhPSAwKSA/IG1DbGllbnQtPmFzQmluZGVyKCkgOiAwOwogfQogCi1zcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+Ci1TdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmNsaWVudEZvckNvbm5lY3Rpb24oY29uc3Qgc3A8SUJpbmRlcj4mIGNvbm4pCitzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmxpbmtUb0NvbXBvc2VyRGVhdGgoCisgICAgICAgIGNvbnN0IHNwPElCaW5kZXI6OkRlYXRoUmVjaXBpZW50PiYgcmVjaXBpZW50LAorICAgICAgICB2b2lkKiBjb29raWUsIHVpbnQzMl90IGZsYWdzKQogewotICAgIHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gY2xpZW50OwotCi0gICAgeyAvLyBzY29wZSBmb3IgbG9jawotICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2woZ0xvY2spOwotICAgICAgICBjbGllbnQgPSBnQWN0aXZlQ29ubmVjdGlvbnMudmFsdWVGb3IoY29ubik7Ci0gICAgfQotCi0gICAgaWYgKGNsaWVudCA9PSAwKSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gbWFrZSBhIG5ldyBjbGllbnQuCi0gICAgICAgIHNwPElTdXJmYWNlQ29tcG9zZXI+IHNtKGdldENvbXBvc2VyU2VydmljZSgpKTsKLSAgICAgICAgY2xpZW50ID0gbmV3IFN1cmZhY2VDb21wb3NlckNsaWVudChzbSwgY29ubik7Ci0gICAgICAgIGlmIChjbGllbnQgIT0gMCAmJiBjbGllbnQtPmluaXRDaGVjaygpID09IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2woZ0xvY2spOwotICAgICAgICAgICAgZ0FjdGl2ZUNvbm5lY3Rpb25zLmFkZChjb25uLCBjbGllbnQpOwotICAgICAgICAgICAgLy9MT0dEKCJ3ZSBoYXZlICVkIGNvbm5lY3Rpb25zIiwgZ0FjdGl2ZUNvbm5lY3Rpb25zLnNpemUoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjbGllbnQuY2xlYXIoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBjbGllbnQ7CisgICAgc3A8SVN1cmZhY2VDb21wb3Nlcj4gc20oZ2V0Q29tcG9zZXJTZXJ2aWNlKCkpOworICAgIHJldHVybiBzbS0+YXNCaW5kZXIoKS0+bGlua1RvRGVhdGgocmVjaXBpZW50LCBjb29raWUsIGZsYWdzKTsKIH0KIAogdm9pZCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmRpc3Bvc2UoKQogewogICAgIC8vIHRoaXMgY2FuIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KLQotICAgIHNwPElNZW1vcnlIZWFwPiAgICAgICAgICAgICBjb250cm9sTWVtb3J5OwotICAgIHNwPElTdXJmYWNlRmxpbmdlckNsaWVudD4gICBjbGllbnQ7Ci0KLSAgICB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBfbGcoZ0xvY2spOwotICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2xtKG1Mb2NrKTsKLQotICAgICAgICBtU2lnbmFsU2VydmVyID0gMDsKLQotICAgICAgICBpZiAobUNsaWVudCAhPSAwKSB7Ci0gICAgICAgICAgICBjbGllbnQgPSBtQ2xpZW50OwotICAgICAgICAgICAgbUNsaWVudC5jbGVhcigpOwotCi0gICAgICAgICAgICBzc2l6ZV90IGkgPSBnQWN0aXZlQ29ubmVjdGlvbnMuaW5kZXhPZktleShjbGllbnQtPmFzQmluZGVyKCkpOwotICAgICAgICAgICAgaWYgKGkgPj0gMCAmJiBnQWN0aXZlQ29ubmVjdGlvbnMudmFsdWVBdChpKSA9PSB0aGlzKSB7Ci0gICAgICAgICAgICAgICAgVkVSQk9TRSgiUmVtb3ZpbmcgY2xpZW50ICVwIGZyb20gbWFwIGF0ICVkIiwgdGhpcywgaW50KGkpKTsKLSAgICAgICAgICAgICAgICBnQWN0aXZlQ29ubmVjdGlvbnMucmVtb3ZlSXRlbXNBdChpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSBtUHJlYnVpbHRMYXllclN0YXRlOwotICAgICAgICBtUHJlYnVpbHRMYXllclN0YXRlID0gMDsKLSAgICAgICAgY29udHJvbE1lbW9yeSA9IG1Db250cm9sTWVtb3J5OwotICAgICAgICBtQ29udHJvbE1lbW9yeS5jbGVhcigpOwotICAgICAgICBtQ29udHJvbCA9IDA7Ci0gICAgICAgIG1TdGF0dXMgPSBOT19JTklUOworICAgIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNsaWVudDsKKyAgICBNdXRleDo6QXV0b2xvY2sgX2xtKG1Mb2NrKTsKKyAgICBpZiAobUNsaWVudCAhPSAwKSB7CisgICAgICAgIENvbXBvc2VyOjpyZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgIGNsaWVudCA9IG1DbGllbnQ7IC8vIGhvbGQgcmVmIHdoaWxlIGxvY2sgaXMgaGVsZAorICAgICAgICBtQ2xpZW50LmNsZWFyKCk7CiAgICAgfQorICAgIG1TdGF0dXMgPSBOT19JTklUOwogfQogCiBzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmdldERpc3BsYXlJbmZvKAogICAgICAgICBEaXNwbGF5SUQgZHB5LCBEaXNwbGF5SW5mbyogaW5mbykKIHsKLSAgICBpZiAodWludDMyX3QoZHB5KT49TlVNX0RJU1BMQVlfTUFYKQorICAgIGlmICh1aW50MzJfdChkcHkpPj1TaGFyZWRCdWZmZXJTdGFjazo6TlVNX0RJU1BMQVlfTUFYKQogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogCiAgICAgdm9sYXRpbGUgc3VyZmFjZV9mbGluZ2VyX2NibGtfdCBjb25zdCAqIGNibGsgPSBnZXRfY2JsaygpOwpAQCAtMjY4LDcgKzIzNSw3IEBACiAKIHNzaXplX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXREaXNwbGF5V2lkdGgoRGlzcGxheUlEIGRweSkKIHsKLSAgICBpZiAodWludDMyX3QoZHB5KT49TlVNX0RJU1BMQVlfTUFYKQorICAgIGlmICh1aW50MzJfdChkcHkpPj1TaGFyZWRCdWZmZXJTdGFjazo6TlVNX0RJU1BMQVlfTUFYKQogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIHZvbGF0aWxlIHN1cmZhY2VfZmxpbmdlcl9jYmxrX3QgY29uc3QgKiBjYmxrID0gZ2V0X2NibGsoKTsKICAgICB2b2xhdGlsZSBkaXNwbGF5X2NibGtfdCBjb25zdCAqIGRjYmxrID0gY2Jsay0+ZGlzcGxheXMgKyBkcHk7CkBAIC0yNzcsNyArMjQ0LDcgQEAKIAogc3NpemVfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmdldERpc3BsYXlIZWlnaHQoRGlzcGxheUlEIGRweSkKIHsKLSAgICBpZiAodWludDMyX3QoZHB5KT49TlVNX0RJU1BMQVlfTUFYKQorICAgIGlmICh1aW50MzJfdChkcHkpPj1TaGFyZWRCdWZmZXJTdGFjazo6TlVNX0RJU1BMQVlfTUFYKQogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIHZvbGF0aWxlIHN1cmZhY2VfZmxpbmdlcl9jYmxrX3QgY29uc3QgKiBjYmxrID0gZ2V0X2NibGsoKTsKICAgICB2b2xhdGlsZSBkaXNwbGF5X2NibGtfdCBjb25zdCAqIGRjYmxrID0gY2Jsay0+ZGlzcGxheXMgKyBkcHk7CkBAIC0yODYsNyArMjUzLDcgQEAKIAogc3NpemVfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmdldERpc3BsYXlPcmllbnRhdGlvbihEaXNwbGF5SUQgZHB5KQogewotICAgIGlmICh1aW50MzJfdChkcHkpPj1OVU1fRElTUExBWV9NQVgpCisgICAgaWYgKHVpbnQzMl90KGRweSk+PVNoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fRElTUExBWV9NQVgpCiAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CiAgICAgdm9sYXRpbGUgc3VyZmFjZV9mbGluZ2VyX2NibGtfdCBjb25zdCAqIGNibGsgPSBnZXRfY2JsaygpOwogICAgIHZvbGF0aWxlIGRpc3BsYXlfY2Jsa190IGNvbnN0ICogZGNibGsgPSBjYmxrLT5kaXNwbGF5cyArIGRweTsKQEAgLTMwNSwxMiArMjcyLDYgQEAKICAgICByZXR1cm4gbjsKIH0KIAotCi12b2lkIFN1cmZhY2VDb21wb3NlckNsaWVudDo6c2lnbmFsU2VydmVyKCkKLXsKLSAgICBtU2lnbmFsU2VydmVyLT5zaWduYWwoKTsKLX0KLQogc3A8U3VyZmFjZUNvbnRyb2w+IFN1cmZhY2VDb21wb3NlckNsaWVudDo6Y3JlYXRlU3VyZmFjZSgKICAgICAgICAgaW50IHBpZCwKICAgICAgICAgRGlzcGxheUlEIGRpc3BsYXksCkBAIC0zMjcsNyArMjg4LDYgQEAKIAogICAgIHJldHVybiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmNyZWF0ZVN1cmZhY2UocGlkLCBuYW1lLCBkaXNwbGF5LAogICAgICAgICAgICAgdywgaCwgZm9ybWF0LCBmbGFncyk7Ci0KIH0KIAogc3A8U3VyZmFjZUNvbnRyb2w+IFN1cmZhY2VDb21wb3NlckNsaWVudDo6Y3JlYXRlU3VyZmFjZSgKQEAgLTM0MSwxMyArMzAxLDExIEBACiB7CiAgICAgc3A8U3VyZmFjZUNvbnRyb2w+IHJlc3VsdDsKICAgICBpZiAobVN0YXR1cyA9PSBOT19FUlJPUikgewotICAgICAgICBJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90IGRhdGE7CisgICAgICAgIElTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90IGRhdGE7CiAgICAgICAgIHNwPElTdXJmYWNlPiBzdXJmYWNlID0gbUNsaWVudC0+Y3JlYXRlU3VyZmFjZSgmZGF0YSwgcGlkLCBuYW1lLAogICAgICAgICAgICAgICAgIGRpc3BsYXksIHcsIGgsIGZvcm1hdCwgZmxhZ3MpOwogICAgICAgICBpZiAoc3VyZmFjZSAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAodWludDMyX3QoZGF0YS50b2tlbikgPCBOVU1fTEFZRVJTX01BWCkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdXJmYWNlQ29udHJvbCh0aGlzLCBzdXJmYWNlLCBkYXRhLCB3LCBoLCBmb3JtYXQsIGZsYWdzKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdXJmYWNlQ29udHJvbCh0aGlzLCBzdXJmYWNlLCBkYXRhLCB3LCBoLCBmb3JtYXQsIGZsYWdzKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzczLDU2ICszMzEsMTQgQEAKIAogdm9pZCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6Om9wZW5HbG9iYWxUcmFuc2FjdGlvbigpCiB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKGdMb2NrKTsKLQotICAgIGlmIChnT3BlblRyYW5zYWN0aW9ucy5zaXplKCkpIHsKLSAgICAgICAgTE9HRSgib3Blbkdsb2JhbFRyYW5zYWN0aW9uKCkgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiBza2lwcGluZy4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IHNpemVfdCBOID0gZ0FjdGl2ZUNvbm5lY3Rpb25zLnNpemUoKTsKLSAgICBWRVJCT1NFKCJvcGVuR2xvYmFsVHJhbnNhY3Rpb24gKCVsZCBjbGllbnRzKSIsIE4pOwotICAgIGZvciAoc2l6ZV90IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjbGllbnQoZ0FjdGl2ZUNvbm5lY3Rpb25zLnZhbHVlQXQoaSkpOwotICAgICAgICBpZiAoZ09wZW5UcmFuc2FjdGlvbnMuaW5kZXhPZihjbGllbnQpIDwgMCkgewotICAgICAgICAgICAgaWYgKGNsaWVudC0+b3BlblRyYW5zYWN0aW9uKCkgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICBpZiAoZ09wZW5UcmFuc2FjdGlvbnMuYWRkKGNsaWVudCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE9vb3BzIQotICAgICAgICAgICAgICAgICAgICBMT0dFKCAgICJVbmFibGUgdG8gYWRkIGEgU3VyZmFjZUNvbXBvc2VyQ2xpZW50ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG8gdGhlIGdsb2JhbCB0cmFuc2FjdGlvbiBzZXQgKG91dCBvZiBtZW1vcnk/KSIpOwotICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmNsb3NlVHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gbGV0IGl0IGdvLCBpdCdsbCBmYWlsIGxhdGVyIHdoZW4gdGhlIHVzZXIKLSAgICAgICAgICAgICAgICAgICAgLy8gdHJpZXMgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBMT0dFKCJvcGVuVHJhbnNhY3Rpb24gb24gY2xpZW50ICVwIGZhaWxlZCIsIGNsaWVudC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgLy8gbGV0IGl0IGdvLCBpdCdsbCBmYWlsIGxhdGVyIHdoZW4gdGhlIHVzZXIKLSAgICAgICAgICAgICAgICAvLyB0cmllcyB0byBkbyBzb21ldGhpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBDb21wb3Nlcjo6b3Blbkdsb2JhbFRyYW5zYWN0aW9uKCk7CiB9CiAKIHZvaWQgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpjbG9zZUdsb2JhbFRyYW5zYWN0aW9uKCkKIHsKLSAgICBnTG9jay5sb2NrKCk7Ci0gICAgICAgIFNvcnRlZFZlY3Rvcjwgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiA+IGNsaWVudHMoZ09wZW5UcmFuc2FjdGlvbnMpOwotICAgICAgICBnT3BlblRyYW5zYWN0aW9ucy5jbGVhcigpOwotICAgIGdMb2NrLnVubG9jaygpOwotCi0gICAgY29uc3Qgc2l6ZV90IE4gPSBjbGllbnRzLnNpemUoKTsKLSAgICBWRVJCT1NFKCJjbG9zZUdsb2JhbFRyYW5zYWN0aW9uICglbGQgY2xpZW50cykiLCBOKTsKLQotICAgIHNwPElTdXJmYWNlQ29tcG9zZXI+IHNtKGdldENvbXBvc2VyU2VydmljZSgpKTsKLSAgICBzbS0+b3Blbkdsb2JhbFRyYW5zYWN0aW9uKCk7Ci0gICAgZm9yIChzaXplX3QgaT0wOyBpPE47IGkrKykgewotICAgICAgICBjbGllbnRzW2ldLT5jbG9zZVRyYW5zYWN0aW9uKCk7Ci0gICAgfQotICAgIHNtLT5jbG9zZUdsb2JhbFRyYW5zYWN0aW9uKCk7Ci0KKyAgICBDb21wb3Nlcjo6Y2xvc2VHbG9iYWxUcmFuc2FjdGlvbigpOwogfQogCi0KIHN0YXR1c190IFN1cmZhY2VDb21wb3NlckNsaWVudDo6ZnJlZXplRGlzcGxheShEaXNwbGF5SUQgZHB5LCB1aW50MzJfdCBmbGFncykKIHsKICAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBzbShnZXRDb21wb3NlclNlcnZpY2UoKSk7CkBAIC00NDcsMjYgKzM2MywxNiBAQAogICAgIGlmIChtU3RhdHVzICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gbVN0YXR1czsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwotICAgIFZFUkJPU0UoICAgIm9wZW5UcmFuc2FjdGlvbiAoY2xpZW50ICVwLCBtVHJhbnNhY3Rpb25PcGVuPSVkKSIsCi0gICAgICAgICAgICB0aGlzLCBtVHJhbnNhY3Rpb25PcGVuKTsKICAgICBtVHJhbnNhY3Rpb25PcGVuKys7Ci0gICAgaWYgKG1QcmVidWlsdExheWVyU3RhdGUgPT0gMCkgewotICAgICAgICBtUHJlYnVpbHRMYXllclN0YXRlID0gbmV3IGxheWVyX3N0YXRlX3Q7Ci0gICAgfQogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAotCiBzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmNsb3NlVHJhbnNhY3Rpb24oKQogewogICAgIGlmIChtU3RhdHVzICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gbVN0YXR1czsKIAogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7Ci0KLSAgICBWRVJCT1NFKCAgICJjbG9zZVRyYW5zYWN0aW9uIChjbGllbnQgJXAsIG1UcmFuc2FjdGlvbk9wZW49JWQpIiwKLSAgICAgICAgICAgIHRoaXMsIG1UcmFuc2FjdGlvbk9wZW4pOwotCiAgICAgaWYgKG1UcmFuc2FjdGlvbk9wZW4gPD0gMCkgewogICAgICAgICBMT0dFKCAgICJjbG9zZVRyYW5zYWN0aW9uIChjbGllbnQgJXAsIG1UcmFuc2FjdGlvbk9wZW49JWQpICIKICAgICAgICAgICAgICAgICAiY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBvcGVuVHJhbnNhY3Rpb24oKSIsCkBAIC00ODgsNyArMzk0LDcgQEAKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKLWxheWVyX3N0YXRlX3QqIFN1cmZhY2VDb21wb3NlckNsaWVudDo6X2dldF9zdGF0ZV9sKFN1cmZhY2VJRCBpbmRleCkKK2xheWVyX3N0YXRlX3QqIFN1cmZhY2VDb21wb3NlckNsaWVudDo6Z2V0X3N0YXRlX2woU3VyZmFjZUlEIGluZGV4KQogewogICAgIC8vIEFQSSB1c2FnZSBlcnJvciwgZG8gbm90aGluZy4KICAgICBpZiAobVRyYW5zYWN0aW9uT3Blbjw9MCkgewpAQCAtNDk4LDcgKzQwNCw3IEBACiAgICAgfQogCiAgICAgLy8gdXNlIG1QcmVidWlsdExheWVyU3RhdGUganVzdCB0byBmaW5kIG91dCBpZiB3ZSBhbHJlYWR5IGhhdmUgaXQKLSAgICBsYXllcl9zdGF0ZV90JiBkdW1teSA9ICptUHJlYnVpbHRMYXllclN0YXRlOworICAgIGxheWVyX3N0YXRlX3QmIGR1bW15KCptUHJlYnVpbHRMYXllclN0YXRlKTsKICAgICBkdW1teS5zdXJmYWNlID0gaW5kZXg7CiAgICAgc3NpemVfdCBpID0gbVN0YXRlcy5pbmRleE9mKGR1bW15KTsKICAgICBpZiAoaSA8IDApIHsKQEAgLTUwOCw0OSArNDE0LDQ5IEBACiAgICAgcmV0dXJuIG1TdGF0ZXMuZWRpdEFycmF5KCkgKyBpOwogfQogCi1sYXllcl9zdGF0ZV90KiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6Ol9sb2NrTGF5ZXJTdGF0ZShTdXJmYWNlSUQgaWQpCitsYXllcl9zdGF0ZV90KiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmxvY2tMYXllclN0YXRlKFN1cmZhY2VJRCBpZCkKIHsKICAgICBsYXllcl9zdGF0ZV90KiBzOwogICAgIG1Mb2NrLmxvY2soKTsKLSAgICBzID0gX2dldF9zdGF0ZV9sKGlkKTsKKyAgICBzID0gZ2V0X3N0YXRlX2woaWQpOwogICAgIGlmICghcykgbUxvY2sudW5sb2NrKCk7CiAgICAgcmV0dXJuIHM7CiB9CiAKLXZvaWQgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpfdW5sb2NrTGF5ZXJTdGF0ZSgpCit2b2lkIFN1cmZhY2VDb21wb3NlckNsaWVudDo6dW5sb2NrTGF5ZXJTdGF0ZSgpCiB7CiAgICAgbUxvY2sudW5sb2NrKCk7CiB9CiAKIHN0YXR1c190IFN1cmZhY2VDb21wb3NlckNsaWVudDo6c2V0UG9zaXRpb24oU3VyZmFjZUlEIGlkLCBpbnQzMl90IHgsIGludDMyX3QgeSkKIHsKLSAgICBsYXllcl9zdGF0ZV90KiBzID0gX2xvY2tMYXllclN0YXRlKGlkKTsKKyAgICBsYXllcl9zdGF0ZV90KiBzID0gbG9ja0xheWVyU3RhdGUoaWQpOwogICAgIGlmICghcykgcmV0dXJuIEJBRF9JTkRFWDsKICAgICBzLT53aGF0IHw9IElTdXJmYWNlQ29tcG9zZXI6OmVQb3NpdGlvbkNoYW5nZWQ7CiAgICAgcy0+eCA9IHg7CiAgICAgcy0+eSA9IHk7Ci0gICAgX3VubG9ja0xheWVyU3RhdGUoKTsKKyAgICB1bmxvY2tMYXllclN0YXRlKCk7CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiBzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnNldFNpemUoU3VyZmFjZUlEIGlkLCB1aW50MzJfdCB3LCB1aW50MzJfdCBoKQogewotICAgIGxheWVyX3N0YXRlX3QqIHMgPSBfbG9ja0xheWVyU3RhdGUoaWQpOworICAgIGxheWVyX3N0YXRlX3QqIHMgPSBsb2NrTGF5ZXJTdGF0ZShpZCk7CiAgICAgaWYgKCFzKSByZXR1cm4gQkFEX0lOREVYOwogICAgIHMtPndoYXQgfD0gSVN1cmZhY2VDb21wb3Nlcjo6ZVNpemVDaGFuZ2VkOwogICAgIHMtPncgPSB3OwogICAgIHMtPmggPSBoOwotICAgIF91bmxvY2tMYXllclN0YXRlKCk7CisgICAgdW5sb2NrTGF5ZXJTdGF0ZSgpOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzZXRMYXllcihTdXJmYWNlSUQgaWQsIGludDMyX3QgeikKIHsKLSAgICBsYXllcl9zdGF0ZV90KiBzID0gX2xvY2tMYXllclN0YXRlKGlkKTsKKyAgICBsYXllcl9zdGF0ZV90KiBzID0gbG9ja0xheWVyU3RhdGUoaWQpOwogICAgIGlmICghcykgcmV0dXJuIEJBRF9JTkRFWDsKICAgICBzLT53aGF0IHw9IElTdXJmYWNlQ29tcG9zZXI6OmVMYXllckNoYW5nZWQ7CiAgICAgcy0+eiA9IHo7Ci0gICAgX3VubG9ja0xheWVyU3RhdGUoKTsKKyAgICB1bmxvY2tMYXllclN0YXRlKCk7CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCkBAIC01NzksMzQgKzQ4NSwzNCBAQAogc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzZXRGbGFncyhTdXJmYWNlSUQgaWQsCiAgICAgICAgIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCBtYXNrKQogewotICAgIGxheWVyX3N0YXRlX3QqIHMgPSBfbG9ja0xheWVyU3RhdGUoaWQpOworICAgIGxheWVyX3N0YXRlX3QqIHMgPSBsb2NrTGF5ZXJTdGF0ZShpZCk7CiAgICAgaWYgKCFzKSByZXR1cm4gQkFEX0lOREVYOwogICAgIHMtPndoYXQgfD0gSVN1cmZhY2VDb21wb3Nlcjo6ZVZpc2liaWxpdHlDaGFuZ2VkOwogICAgIHMtPmZsYWdzICY9IH5tYXNrOwogICAgIHMtPmZsYWdzIHw9IChmbGFncyAmIG1hc2spOwogICAgIHMtPm1hc2sgfD0gbWFzazsKLSAgICBfdW5sb2NrTGF5ZXJTdGF0ZSgpOworICAgIHVubG9ja0xheWVyU3RhdGUoKTsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKIHN0YXR1c190IFN1cmZhY2VDb21wb3NlckNsaWVudDo6c2V0VHJhbnNwYXJlbnRSZWdpb25IaW50KAogICAgICAgICBTdXJmYWNlSUQgaWQsIGNvbnN0IFJlZ2lvbiYgdHJhbnNwYXJlbnRSZWdpb24pCiB7Ci0gICAgbGF5ZXJfc3RhdGVfdCogcyA9IF9sb2NrTGF5ZXJTdGF0ZShpZCk7CisgICAgbGF5ZXJfc3RhdGVfdCogcyA9IGxvY2tMYXllclN0YXRlKGlkKTsKICAgICBpZiAoIXMpIHJldHVybiBCQURfSU5ERVg7CiAgICAgcy0+d2hhdCB8PSBJU3VyZmFjZUNvbXBvc2VyOjplVHJhbnNwYXJlbnRSZWdpb25DaGFuZ2VkOwogICAgIHMtPnRyYW5zcGFyZW50UmVnaW9uID0gdHJhbnNwYXJlbnRSZWdpb247Ci0gICAgX3VubG9ja0xheWVyU3RhdGUoKTsKKyAgICB1bmxvY2tMYXllclN0YXRlKCk7CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiBzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnNldEFscGhhKFN1cmZhY2VJRCBpZCwgZmxvYXQgYWxwaGEpCiB7Ci0gICAgbGF5ZXJfc3RhdGVfdCogcyA9IF9sb2NrTGF5ZXJTdGF0ZShpZCk7CisgICAgbGF5ZXJfc3RhdGVfdCogcyA9IGxvY2tMYXllclN0YXRlKGlkKTsKICAgICBpZiAoIXMpIHJldHVybiBCQURfSU5ERVg7CiAgICAgcy0+d2hhdCB8PSBJU3VyZmFjZUNvbXBvc2VyOjplQWxwaGFDaGFuZ2VkOwogICAgIHMtPmFscGhhID0gYWxwaGE7Ci0gICAgX3VubG9ja0xheWVyU3RhdGUoKTsKKyAgICB1bmxvY2tMYXllclN0YXRlKCk7CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCkBAIC02MTUsNyArNTIxLDcgQEAKICAgICAgICAgZmxvYXQgZHNkeCwgZmxvYXQgZHRkeCwKICAgICAgICAgZmxvYXQgZHNkeSwgZmxvYXQgZHRkeSApCiB7Ci0gICAgbGF5ZXJfc3RhdGVfdCogcyA9IF9sb2NrTGF5ZXJTdGF0ZShpZCk7CisgICAgbGF5ZXJfc3RhdGVfdCogcyA9IGxvY2tMYXllclN0YXRlKGlkKTsKICAgICBpZiAoIXMpIHJldHVybiBCQURfSU5ERVg7CiAgICAgcy0+d2hhdCB8PSBJU3VyZmFjZUNvbXBvc2VyOjplTWF0cml4Q2hhbmdlZDsKICAgICBsYXllcl9zdGF0ZV90OjptYXRyaXgyMl90IG1hdHJpeDsKQEAgLTYyNCwxOSArNTMwLDIwIEBACiAgICAgbWF0cml4LmRzZHkgPSBkc2R5OwogICAgIG1hdHJpeC5kdGR5ID0gZHRkeTsKICAgICBzLT5tYXRyaXggPSBtYXRyaXg7Ci0gICAgX3VubG9ja0xheWVyU3RhdGUoKTsKKyAgICB1bmxvY2tMYXllclN0YXRlKCk7CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiBzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnNldEZyZWV6ZVRpbnQoU3VyZmFjZUlEIGlkLCB1aW50MzJfdCB0aW50KQogewotICAgIGxheWVyX3N0YXRlX3QqIHMgPSBfbG9ja0xheWVyU3RhdGUoaWQpOworICAgIGxheWVyX3N0YXRlX3QqIHMgPSBsb2NrTGF5ZXJTdGF0ZShpZCk7CiAgICAgaWYgKCFzKSByZXR1cm4gQkFEX0lOREVYOwogICAgIHMtPndoYXQgfD0gSVN1cmZhY2VDb21wb3Nlcjo6ZUZyZWV6ZVRpbnRDaGFuZ2VkOwogICAgIHMtPnRpbnQgPSB0aW50OwotICAgIF91bmxvY2tMYXllclN0YXRlKCk7CisgICAgdW5sb2NrTGF5ZXJTdGF0ZSgpOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIApkaWZmIC0tZ2l0IGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL0FuZHJvaWQubWsgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC90ZXN0cy9BbmRyb2lkLm1rCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9mcmFtZXdvcmstdGVzdHMvQW5kcm9pZC5tawpyZW5hbWUgdG8gbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvdGVzdHMvQW5kcm9pZC5tawpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvdGVzdHMvU2hhcmVkQnVmZmVyU3RhY2svQW5kcm9pZC5tayBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L3Rlc3RzL1NoYXJlZEJ1ZmZlclN0YWNrL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNkZmUwNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L3Rlc3RzL1NoYXJlZEJ1ZmZlclN0YWNrL0FuZHJvaWQubWsKQEAgLTAsMCArMSwxNyBAQAorTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTOj0gXAorCVNoYXJlZEJ1ZmZlclN0YWNrVGVzdC5jcHAKKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCisJbGliY3V0aWxzIFwKKwlsaWJ1dGlscyBcCisgICAgbGlidWkgXAorICAgIGxpYnN1cmZhY2VmbGluZ2VyX2NsaWVudAorCitMT0NBTF9NT0RVTEU6PSB0ZXN0LXNoYXJlZGJ1ZmZlcnN0YWNrCisKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IHRlc3RzCisKK2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvdGVzdHMvU2hhcmVkQnVmZmVyU3RhY2svU2hhcmVkQnVmZmVyU3RhY2tUZXN0LmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L3Rlc3RzL1NoYXJlZEJ1ZmZlclN0YWNrL1NoYXJlZEJ1ZmZlclN0YWNrVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwOWY0OAotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L3Rlc3RzL1NoYXJlZEJ1ZmZlclN0YWNrL1NoYXJlZEJ1ZmZlclN0YWNrVGVzdC5jcHAKQEAgLTAsMCArMSwyNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjdW5kZWYgTkRFQlVHCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxjdXRpbHMvbWVtb3J5Lmg+CisjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgorI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgorI2luY2x1ZGUgPHByaXZhdGUvc3VyZmFjZWZsaW5nZXIvU2hhcmVkQnVmZmVyU3RhY2suaD4KKwordXNpbmcgbmFtZXNwYWNlIGFuZHJvaWQ7CisKK3ZvaWQgbG9nKGNvbnN0IGNoYXIqIHByZWZpeCwgaW50ICpiLCBzaXplX3QgbnVtKTsKK3ZvaWQgdGVzdDAoU2hhcmVkQnVmZmVyU2VydmVyJiBzLCBTaGFyZWRCdWZmZXJDbGllbnQmIGMsIHNpemVfdCBudW0sIGludCogbGlzdCk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIFNoYXJlZENsaWVudCBjbGllbnQ7CisgICAgU2hhcmVkQnVmZmVyU2VydmVyIHMoJmNsaWVudCwgMCwgNCwgMCk7CisgICAgU2hhcmVkQnVmZmVyQ2xpZW50IGMoJmNsaWVudCwgMCwgNCwgMCk7CisKKyAgICBwcmludGYoImJhc2ljIHRlc3QgMFxuIik7CisgICAgaW50IGxpc3QwWzRdID0gezAsIDEsIDIsIDN9OworICAgIHRlc3QwKHMsIGMsIDQsIGxpc3QwKTsKKworICAgIHByaW50ZigiYmFzaWMgdGVzdCAxXG4iKTsKKyAgICBpbnQgbGlzdDFbNF0gPSB7MiwgMSwgMCwgM307CisgICAgdGVzdDAocywgYywgNCwgbGlzdDEpOworCisgICAgaW50IGIgPSBjLmRlcXVldWUoKTsKKyAgICBjLmxvY2soYik7CisgICAgYy5xdWV1ZShiKTsKKyAgICBzLnJldGlyZUFuZExvY2soKTsKKworICAgIHByaW50ZigiYmFzaWMgdGVzdCAyXG4iKTsKKyAgICBpbnQgbGlzdDJbNF0gPSB7MSwgMiwgMywgMH07CisgICAgdGVzdDAocywgYywgNCwgbGlzdDIpOworCisKKyAgICBwcmludGYoInJlc2l6ZSB0ZXN0XG4iKTsKKyAgICBjbGFzcyBTZXRCdWZmZXJDb3VudElQQyA6IHB1YmxpYyBTaGFyZWRCdWZmZXJDbGllbnQ6OlNldEJ1ZmZlckNvdW50Q2FsbGJhY2sgeworICAgICAgICBTaGFyZWRCdWZmZXJTZXJ2ZXImIHM7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgb3BlcmF0b3IoKShpbnQgYnVmZmVyQ291bnQpIGNvbnN0IHsKKyAgICAgICAgICAgIHJldHVybiBzLnJlc2l6ZShidWZmZXJDb3VudCk7CisgICAgICAgIH0KKyAgICBwdWJsaWM6CisgICAgICAgIFNldEJ1ZmZlckNvdW50SVBDKFNoYXJlZEJ1ZmZlclNlcnZlciYgcykgOiBzKHMpIHsgfQorICAgIH0gcmVzaXplKHMpOworCisgICAgYy5zZXRCdWZmZXJDb3VudCg2LCByZXNpemUpOworICAgIGludCBsaXN0M1s2XSA9IHszLCAyLCAxLCA0LCA1LCAwfTsKKyAgICB0ZXN0MChzLCBjLCA2LCBsaXN0Myk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBsb2coY29uc3QgY2hhciogcHJlZml4LCBpbnQgKmIsIHNpemVfdCBudW0pCit7CisgICAgcHJpbnRmKCIlczogIiwgcHJlZml4KTsKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bSA7IGkrKykgeworICAgICAgICBwcmludGYoIiVkICIsIGJbaV0pOworICAgIH0KKyAgICBwcmludGYoIlxuIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCB0ZXN0MCgKKyAgICAgICAgU2hhcmVkQnVmZmVyU2VydmVyJiBzLAorICAgICAgICBTaGFyZWRCdWZmZXJDbGllbnQmIGMsCisgICAgICAgIHNpemVfdCBudW0sCisgICAgICAgIGludCogbGlzdCkKK3sKKyAgICBzdGF0dXNfdCBlcnI7CisgICAgaW50IGJbbnVtXSwgdVtudW1dLCByW251bV07CisKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bSA7IGkrKykgeworICAgICAgICBiW2ldID0gYy5kZXF1ZXVlKCk7CisgICAgICAgIGFzc2VydChiW2ldPT1saXN0W2ldKTsKKyAgICB9CisgICAgbG9nKCJEUSIsIGIsIG51bSk7CisKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bS0xIDsgaSsrKSB7CisgICAgICAgIGVyciA9IGMubG9jayhiW2ldKTsKKyAgICAgICAgYXNzZXJ0KGVycj09MCk7CisgICAgfQorICAgIGxvZygiTEsiLCBiLCBudW0tMSk7CisKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bS0xIDsgaSsrKSB7CisgICAgICAgIGVyciA9IGMucXVldWUoYltpXSk7CisgICAgICAgIGFzc2VydChlcnI9PTApOworICAgIH0KKyAgICBsb2coIiBRIiwgYiwgbnVtLTEpOworCisKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bS0xIDsgaSsrKSB7CisgICAgICAgIHJbaV0gPSBzLnJldGlyZUFuZExvY2soKTsKKyAgICAgICAgYXNzZXJ0KHJbaV09PWxpc3RbaV0pOworICAgICAgICBlcnIgPSBzLnVubG9jayhyW2ldKTsKKyAgICAgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICB9CisgICAgbG9nKCJSVCIsIHIsIG51bS0xKTsKKworICAgIGVyciA9IGMubG9jayhiW251bS0xXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIkxLIiwgYitudW0tMSwgMSk7CisKKyAgICBlcnIgPSBjLnF1ZXVlKGJbbnVtLTFdKTsKKyAgICBhc3NlcnQoZXJyID09IDApOworICAgIGxvZygiIFEiLCBiK251bS0xLCAxKTsKKworICAgIHJbbnVtLTFdID0gcy5yZXRpcmVBbmRMb2NrKCk7CisgICAgYXNzZXJ0KHJbbnVtLTFdPT1saXN0W251bS0xXSk7CisgICAgZXJyID0gcy51bmxvY2socltudW0tMV0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCJSVCIsIHIrbnVtLTEsIDEpOworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgcHJpbnRmKCJcbiIpOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0gOyBpKyspIHsKKyAgICAgICAgYltpXSA9IGMuZGVxdWV1ZSgpOworICAgICAgICBhc3NlcnQoYltpXT09bGlzdFtpXSk7CisgICAgfQorICAgIGxvZygiRFEiLCBiLCBudW0pOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICBlcnIgPSBjLmxvY2soYltpXSk7CisgICAgICAgIGFzc2VydChlcnI9PTApOworICAgIH0KKyAgICBsb2coIkxLIiwgYiwgbnVtLTEpOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICB1W2ldID0gYltudW0tMi1pXTsKKyAgICB9CisgICAgdVtudW0tMV0gPSBiW251bS0xXTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgZXJyID0gYy5xdWV1ZSh1W2ldKTsKKyAgICAgICAgYXNzZXJ0KGVycj09MCk7CisgICAgfQorICAgIGxvZygiIFEiLCB1LCBudW0tMSk7CisKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bS0xIDsgaSsrKSB7CisgICAgICAgIHJbaV0gPSBzLnJldGlyZUFuZExvY2soKTsKKyAgICAgICAgYXNzZXJ0KHJbaV09PXVbaV0pOworICAgICAgICBlcnIgPSBzLnVubG9jayhyW2ldKTsKKyAgICAgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICB9CisgICAgbG9nKCJSVCIsIHIsIG51bS0xKTsKKworICAgIGVyciA9IGMubG9jayhiW251bS0xXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIkxLIiwgYitudW0tMSwgMSk7CisKKyAgICBlcnIgPSBjLnF1ZXVlKGJbbnVtLTFdKTsKKyAgICBhc3NlcnQoZXJyID09IDApOworICAgIGxvZygiIFEiLCBiK251bS0xLCAxKTsKKworICAgIHJbbnVtLTFdID0gcy5yZXRpcmVBbmRMb2NrKCk7CisgICAgYXNzZXJ0KHJbbnVtLTFdPT1saXN0W251bS0xXSk7CisgICAgZXJyID0gcy51bmxvY2socltudW0tMV0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCJSVCIsIHIrbnVtLTEsIDEpOworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgcHJpbnRmKCJcbiIpOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0gOyBpKyspIHsKKyAgICAgICAgYltpXSA9IGMuZGVxdWV1ZSgpOworICAgICAgICBhc3NlcnQoYltpXT09dVtpXSk7CisgICAgfQorICAgIGxvZygiRFEiLCBiLCBudW0pOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICBlcnIgPSBjLmxvY2soYltpXSk7CisgICAgICAgIGFzc2VydChlcnI9PTApOworICAgIH0KKyAgICBsb2coIkxLIiwgYiwgbnVtLTEpOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICBlcnIgPSBjLnF1ZXVlKGJbaV0pOworICAgICAgICBhc3NlcnQoZXJyPT0wKTsKKyAgICB9CisgICAgbG9nKCIgUSIsIGIsIG51bS0xKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgcltpXSA9IHMucmV0aXJlQW5kTG9jaygpOworICAgICAgICBhc3NlcnQocltpXT09dVtpXSk7CisgICAgICAgIGVyciA9IHMudW5sb2NrKHJbaV0pOworICAgICAgICBhc3NlcnQoZXJyID09IDApOworICAgIH0KKyAgICBsb2coIlJUIiwgciwgbnVtLTEpOworCisgICAgZXJyID0gYy5sb2NrKHVbbnVtLTFdKTsKKyAgICBhc3NlcnQoZXJyID09IDApOworICAgIGxvZygiTEsiLCB1K251bS0xLCAxKTsKKworICAgIGVyciA9IGMucXVldWUodVtudW0tMV0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCIgUSIsIHUrbnVtLTEsIDEpOworCisgICAgcltudW0tMV0gPSBzLnJldGlyZUFuZExvY2soKTsKKyAgICBhc3NlcnQocltudW0tMV09PXVbbnVtLTFdKTsKKyAgICBlcnIgPSBzLnVubG9jayhyW251bS0xXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIlJUIiwgcitudW0tMSwgMSk7CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBwcmludGYoIlxuIik7CisKKyAgICBiWzBdID0gYy5kZXF1ZXVlKCk7CisgICAgYXNzZXJ0KGJbMF09PXVbMF0pOworICAgIGxvZygiRFEiLCBiLCAxKTsKKworICAgIGMudW5kb0RlcXVldWUoYlswXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIlVEUSIsIGIsIDEpOworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgcHJpbnRmKCJcbiIpOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0gOyBpKyspIHsKKyAgICAgICAgYltpXSA9IGMuZGVxdWV1ZSgpOworICAgICAgICBhc3NlcnQoYltpXT09dVtpXSk7CisgICAgfQorICAgIGxvZygiRFEiLCBiLCBudW0pOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICBlcnIgPSBjLmxvY2soYltpXSk7CisgICAgICAgIGFzc2VydChlcnI9PTApOworICAgIH0KKyAgICBsb2coIkxLIiwgYiwgbnVtLTEpOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICBlcnIgPSBjLnF1ZXVlKGJbaV0pOworICAgICAgICBhc3NlcnQoZXJyPT0wKTsKKyAgICB9CisgICAgbG9nKCIgUSIsIGIsIG51bS0xKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgcltpXSA9IHMucmV0aXJlQW5kTG9jaygpOworICAgICAgICBhc3NlcnQocltpXT09dVtpXSk7CisgICAgICAgIGVyciA9IHMudW5sb2NrKHJbaV0pOworICAgICAgICBhc3NlcnQoZXJyID09IDApOworICAgIH0KKyAgICBsb2coIlJUIiwgciwgbnVtLTEpOworCisgICAgZXJyID0gYy5sb2NrKHVbbnVtLTFdKTsKKyAgICBhc3NlcnQoZXJyID09IDApOworICAgIGxvZygiTEsiLCB1K251bS0xLCAxKTsKKworICAgIGVyciA9IGMucXVldWUodVtudW0tMV0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCIgUSIsIHUrbnVtLTEsIDEpOworCisgICAgcltudW0tMV0gPSBzLnJldGlyZUFuZExvY2soKTsKKyAgICBhc3NlcnQocltudW0tMV09PXVbbnVtLTFdKTsKKyAgICBlcnIgPSBzLnVubG9jayhyW251bS0xXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIlJUIiwgcitudW0tMSwgMSk7CisgICAgcHJpbnRmKCJcbiIpOworfQpkaWZmIC0tZ2l0IGEvbGlicy91aS9BbmRyb2lkLm1rIGIvbGlicy91aS9BbmRyb2lkLm1rCmluZGV4IGY3YWNkOTcuLjI0Y2RjNzggMTAwNjQ0Ci0tLSBhL2xpYnMvdWkvQW5kcm9pZC5taworKysgYi9saWJzL3VpL0FuZHJvaWQubWsKQEAgLTExLDYgKzExLDExIEBACiAJR3JhcGhpY0J1ZmZlck1hcHBlci5jcHAgXAogCUtleUxheW91dE1hcC5jcHAgXAogCUtleUNoYXJhY3Rlck1hcC5jcHAgXAorCUlucHV0LmNwcCBcCisJSW5wdXREaXNwYXRjaGVyLmNwcCBcCisJSW5wdXRNYW5hZ2VyLmNwcCBcCisJSW5wdXRSZWFkZXIuY3BwIFwKKwlJbnB1dFRyYW5zcG9ydC5jcHAgXAogCUlPdmVybGF5LmNwcCBcCiAJT3ZlcmxheS5jcHAgXAogCVBpeGVsRm9ybWF0LmNwcCBcCmRpZmYgLS1naXQgYS9saWJzL3VpL0V2ZW50SHViLmNwcCBiL2xpYnMvdWkvRXZlbnRIdWIuY3BwCmluZGV4IGQ0NWVhZjAuLjI3ODk1ZjIgMTAwNjQ0Ci0tLSBhL2xpYnMvdWkvRXZlbnRIdWIuY3BwCisrKyBiL2xpYnMvdWkvRXZlbnRIdWIuY3BwCkBAIC0xNTUsNzcgKzE1NSw3MCBAQAogICAgIHJldHVybiAwOwogfQogCi1pbnQgRXZlbnRIdWI6OmdldFN3aXRjaFN0YXRlKGludCBzdykgY29uc3QKLXsKLSNpZmRlZiBFVl9TVwotICAgIGlmIChzdyA+PSAwICYmIHN3IDw9IFNXX01BWCkgewotICAgICAgICBpbnQzMl90IGRldmlkID0gbVN3aXRjaGVzW3N3XTsKLSAgICAgICAgaWYgKGRldmlkICE9IDApIHsKLSAgICAgICAgICAgIHJldHVybiBnZXRTd2l0Y2hTdGF0ZShkZXZpZCwgc3cpOworaW50MzJfdCBFdmVudEh1Yjo6Z2V0U2NhbkNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgIGludDMyX3Qgc2NhbkNvZGUpIGNvbnN0IHsKKyAgICBpZiAoc2NhbkNvZGUgPj0gMCAmJiBzY2FuQ29kZSA8PSBLRVlfTUFYKSB7CisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgaWYgKGRldmljZUlkID09IC0xKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1EZXZpY2VzQnlJZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgZGV2aWNlX3QqIGRldmljZSA9IG1EZXZpY2VzQnlJZFtpXS5kZXZpY2U7CisgICAgICAgICAgICAgICAgaWYgKGRldmljZSAhPSBOVUxMICYmIChkZXZpY2UtPmNsYXNzZXMgJiBkZXZpY2VDbGFzc2VzKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0ID0gZ2V0U2NhbkNvZGVTdGF0ZUxvY2tlZChkZXZpY2UsIHNjYW5Db2RlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA+PSBLRVlfU1RBVEVfRE9XTikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBLRVlfU1RBVEVfVVA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXZpY2VfdCogZGV2aWNlID0gZ2V0RGV2aWNlKGRldmljZUlkKTsKKyAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiBnZXRTY2FuQ29kZVN0YXRlTG9ja2VkKGRldmljZSwgc2NhbkNvZGUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIC0xOworICAgIHJldHVybiBLRVlfU1RBVEVfVU5LTk9XTjsKIH0KIAotaW50IEV2ZW50SHViOjpnZXRTd2l0Y2hTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQgc3cpIGNvbnN0Ci17Ci0jaWZkZWYgRVZfU1cKLSAgICBBdXRvTXV0ZXggX2wobUxvY2spOwotICAgIGRldmljZV90KiBkZXZpY2UgPSBnZXREZXZpY2UoZGV2aWNlSWQpOwotICAgIGlmIChkZXZpY2UgPT0gTlVMTCkgcmV0dXJuIC0xOwotICAgIAotICAgIGlmIChzdyA+PSAwICYmIHN3IDw9IFNXX01BWCkgewotICAgICAgICB1aW50OF90IHN3X2JpdG1hc2tbKFNXX01BWCs3KS84XTsKLSAgICAgICAgbWVtc2V0KHN3X2JpdG1hc2ssIDAsIHNpemVvZihzd19iaXRtYXNrKSk7Ci0gICAgICAgIGlmIChpb2N0bChtRkRzW2lkX3RvX2luZGV4KGRldmljZS0+aWQpXS5mZCwKLSAgICAgICAgICAgICAgICAgICBFVklPQ0dTVyhzaXplb2Yoc3dfYml0bWFzaykpLCBzd19iaXRtYXNrKSA+PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGVzdF9iaXQoc3csIHN3X2JpdG1hc2spID8gMSA6IDA7CitpbnQzMl90IEV2ZW50SHViOjpnZXRTY2FuQ29kZVN0YXRlTG9ja2VkKGRldmljZV90KiBkZXZpY2UsIGludDMyX3Qgc2NhbkNvZGUpIGNvbnN0IHsKKyAgICB1aW50OF90IGtleV9iaXRtYXNrWyhLRVlfTUFYICsgNykgLyA4XTsKKyAgICBtZW1zZXQoa2V5X2JpdG1hc2ssIDAsIHNpemVvZihrZXlfYml0bWFzaykpOworICAgIGlmIChpb2N0bChtRkRzW2lkX3RvX2luZGV4KGRldmljZS0+aWQpXS5mZCwKKyAgICAgICAgICAgICAgIEVWSU9DR0tFWShzaXplb2Yoa2V5X2JpdG1hc2spKSwga2V5X2JpdG1hc2spID49IDApIHsKKyAgICAgICAgcmV0dXJuIHRlc3RfYml0KHNjYW5Db2RlLCBrZXlfYml0bWFzaykgPyBLRVlfU1RBVEVfRE9XTiA6IEtFWV9TVEFURV9VUDsKKyAgICB9CisgICAgcmV0dXJuIEtFWV9TVEFURV9VTktOT1dOOworfQorCitpbnQzMl90IEV2ZW50SHViOjpnZXRLZXlDb2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICBpbnQzMl90IGtleUNvZGUpIGNvbnN0IHsKKworICAgIGlmIChkZXZpY2VJZCA9PSAtMSkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1EZXZpY2VzQnlJZDsgaSsrKSB7CisgICAgICAgICAgICBkZXZpY2VfdCogZGV2aWNlID0gbURldmljZXNCeUlkW2ldLmRldmljZTsKKyAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gTlVMTCAmJiAoZGV2aWNlLT5jbGFzc2VzICYgZGV2aWNlQ2xhc3NlcykgIT0gMCkgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0ID0gZ2V0S2V5Q29kZVN0YXRlTG9ja2VkKGRldmljZSwga2V5Q29kZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA+PSBLRVlfU1RBVEVfRE9XTikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gS0VZX1NUQVRFX1VQOworICAgIH0gZWxzZSB7CisgICAgICAgIGRldmljZV90KiBkZXZpY2UgPSBnZXREZXZpY2UoZGV2aWNlSWQpOworICAgICAgICBpZiAoZGV2aWNlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRLZXlDb2RlU3RhdGVMb2NrZWQoZGV2aWNlLCBrZXlDb2RlKTsKICAgICAgICAgfQogICAgIH0KLSNlbmRpZgotICAgIAotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gS0VZX1NUQVRFX1VOS05PV047CiB9CiAKLWludCBFdmVudEh1Yjo6Z2V0U2NhbmNvZGVTdGF0ZShpbnQgY29kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gZ2V0U2NhbmNvZGVTdGF0ZShtRmlyc3RLZXlib2FyZElkLCBjb2RlKTsKLX0KLQotaW50IEV2ZW50SHViOjpnZXRTY2FuY29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludCBjb2RlKSBjb25zdAotewotICAgIEF1dG9NdXRleCBfbChtTG9jayk7Ci0gICAgZGV2aWNlX3QqIGRldmljZSA9IGdldERldmljZShkZXZpY2VJZCk7Ci0gICAgaWYgKGRldmljZSA9PSBOVUxMKSByZXR1cm4gLTE7Ci0gICAgCi0gICAgaWYgKGNvZGUgPj0gMCAmJiBjb2RlIDw9IEtFWV9NQVgpIHsKLSAgICAgICAgdWludDhfdCBrZXlfYml0bWFza1soS0VZX01BWCs3KS84XTsKLSAgICAgICAgbWVtc2V0KGtleV9iaXRtYXNrLCAwLCBzaXplb2Yoa2V5X2JpdG1hc2spKTsKLSAgICAgICAgaWYgKGlvY3RsKG1GRHNbaWRfdG9faW5kZXgoZGV2aWNlLT5pZCldLmZkLAotICAgICAgICAgICAgICAgICAgIEVWSU9DR0tFWShzaXplb2Yoa2V5X2JpdG1hc2spKSwga2V5X2JpdG1hc2spID49IDApIHsKLSAgICAgICAgICAgIHJldHVybiB0ZXN0X2JpdChjb2RlLCBrZXlfYml0bWFzaykgPyAxIDogMDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWludCBFdmVudEh1Yjo6Z2V0S2V5Y29kZVN0YXRlKGludCBjb2RlKSBjb25zdAotewotICAgIHJldHVybiBnZXRLZXljb2RlU3RhdGUobUZpcnN0S2V5Ym9hcmRJZCwgY29kZSk7Ci19Ci0KLWludCBFdmVudEh1Yjo6Z2V0S2V5Y29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludCBjb2RlKSBjb25zdAotewotICAgIEF1dG9NdXRleCBfbChtTG9jayk7Ci0gICAgZGV2aWNlX3QqIGRldmljZSA9IGdldERldmljZShkZXZpY2VJZCk7Ci0gICAgaWYgKGRldmljZSA9PSBOVUxMIHx8IGRldmljZS0+bGF5b3V0TWFwID09IE5VTEwpIHJldHVybiAtMTsKLSAgICAKK2ludDMyX3QgRXZlbnRIdWI6OmdldEtleUNvZGVTdGF0ZUxvY2tlZChkZXZpY2VfdCogZGV2aWNlLCBpbnQzMl90IGtleUNvZGUpIGNvbnN0IHsKICAgICBWZWN0b3I8aW50MzJfdD4gc2NhbkNvZGVzOwotICAgIGRldmljZS0+bGF5b3V0TWFwLT5maW5kU2NhbmNvZGVzKGNvZGUsICZzY2FuQ29kZXMpOwotICAgIAotICAgIHVpbnQ4X3Qga2V5X2JpdG1hc2tbKEtFWV9NQVgrNykvOF07CisgICAgZGV2aWNlLT5sYXlvdXRNYXAtPmZpbmRTY2FuY29kZXMoa2V5Q29kZSwgJnNjYW5Db2Rlcyk7CisKKyAgICB1aW50OF90IGtleV9iaXRtYXNrWyhLRVlfTUFYICsgNykgLyA4XTsKICAgICBtZW1zZXQoa2V5X2JpdG1hc2ssIDAsIHNpemVvZihrZXlfYml0bWFzaykpOwogICAgIGlmIChpb2N0bChtRkRzW2lkX3RvX2luZGV4KGRldmljZS0+aWQpXS5mZCwKICAgICAgICAgICAgICAgIEVWSU9DR0tFWShzaXplb2Yoa2V5X2JpdG1hc2spKSwga2V5X2JpdG1hc2spID49IDApIHsKQEAgLTIzOSwxMiArMjMyLDQ1IEBACiAgICAgICAgICAgICBpbnQzMl90IHNjID0gc2NhbkNvZGVzLml0ZW1BdChpKTsKICAgICAgICAgICAgIC8vTE9HSSgiQ29kZSAlZDogZG93bj0lZCIsIHNjLCB0ZXN0X2JpdChzYywga2V5X2JpdG1hc2spKTsKICAgICAgICAgICAgIGlmIChzYyA+PSAwICYmIHNjIDw9IEtFWV9NQVggJiYgdGVzdF9iaXQoc2MsIGtleV9iaXRtYXNrKSkgewotICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIHJldHVybiBLRVlfU1RBVEVfRE9XTjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICByZXR1cm4gS0VZX1NUQVRFX1VQOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gS0VZX1NUQVRFX1VOS05PV047Cit9CisKK2ludDMyX3QgRXZlbnRIdWI6OmdldFN3aXRjaFN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywgaW50MzJfdCBzdykgY29uc3QgeworI2lmZGVmIEVWX1NXCisgICAgaWYgKHN3ID49IDAgJiYgc3cgPD0gU1dfTUFYKSB7CisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgaWYgKGRldmljZUlkID09IC0xKSB7CisgICAgICAgICAgICBkZXZpY2VJZCA9IG1Td2l0Y2hlc1tzd107CisgICAgICAgICAgICBpZiAoZGV2aWNlSWQgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBLRVlfU1RBVEVfVU5LTk9XTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRldmljZV90KiBkZXZpY2UgPSBnZXREZXZpY2UoZGV2aWNlSWQpOworICAgICAgICBpZiAoZGV2aWNlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBLRVlfU1RBVEVfVU5LTk9XTjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBnZXRTd2l0Y2hTdGF0ZUxvY2tlZChkZXZpY2UsIHN3KTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gS0VZX1NUQVRFX1VOS05PV047Cit9CisKK2ludDMyX3QgRXZlbnRIdWI6OmdldFN3aXRjaFN0YXRlTG9ja2VkKGRldmljZV90KiBkZXZpY2UsIGludDMyX3Qgc3cpIGNvbnN0IHsKKyAgICB1aW50OF90IHN3X2JpdG1hc2tbKFNXX01BWCArIDcpIC8gOF07CisgICAgbWVtc2V0KHN3X2JpdG1hc2ssIDAsIHNpemVvZihzd19iaXRtYXNrKSk7CisgICAgaWYgKGlvY3RsKG1GRHNbaWRfdG9faW5kZXgoZGV2aWNlLT5pZCldLmZkLAorICAgICAgICAgICAgICAgRVZJT0NHU1coc2l6ZW9mKHN3X2JpdG1hc2spKSwgc3dfYml0bWFzaykgPj0gMCkgeworICAgICAgICByZXR1cm4gdGVzdF9iaXQoc3csIHN3X2JpdG1hc2spID8gS0VZX1NUQVRFX0RPV04gOiBLRVlfU1RBVEVfVVA7CisgICAgfQorICAgIHJldHVybiBLRVlfU1RBVEVfVU5LTk9XTjsKIH0KIAogc3RhdHVzX3QgRXZlbnRIdWI6OnNjYW5jb2RlVG9LZXljb2RlKGludDMyX3QgZGV2aWNlSWQsIGludCBzY2FuY29kZSwKQEAgLTMwOSw5ICszMzUsNiBAQAogCiAgICAgc3RhdHVzX3QgZXJyOwogCi0gICAgZmRfc2V0IHJlYWRmZHM7Ci0gICAgaW50IG1heEZkID0gLTE7Ci0gICAgaW50IGNjOwogICAgIGludCBpOwogICAgIGludCByZXM7CiAgICAgaW50IHBvbGxyZXM7CkBAIC00NTcsNyArNDgwLDcgQEAKICAqIEluc3BlY3QgdGhlIGtub3duIGRldmljZXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgcGh5c2ljYWwga2V5cyBleGlzdCBmb3IgdGhlIGdpdmVuCiAgKiBmcmFtZXdvcmstZG9tYWluIGtleSBjb2Rlcy4KICAqLwotYm9vbCBFdmVudEh1Yjo6aGFzS2V5cyhzaXplX3QgbnVtQ29kZXMsIGludDMyX3QqIGtleUNvZGVzLCB1aW50OF90KiBvdXRGbGFncykgeworYm9vbCBFdmVudEh1Yjo6aGFzS2V5cyhzaXplX3QgbnVtQ29kZXMsIGNvbnN0IGludDMyX3QqIGtleUNvZGVzLCB1aW50OF90KiBvdXRGbGFncykgY29uc3QgewogICAgIGZvciAoc2l6ZV90IGNvZGVJbmRleCA9IDA7IGNvZGVJbmRleCA8IG51bUNvZGVzOyBjb2RlSW5kZXgrKykgewogICAgICAgICBvdXRGbGFnc1tjb2RlSW5kZXhdID0gMDsKIApAQCAtNDY1LDcgKzQ4OCw4IEBACiAgICAgICAgIFZlY3RvcjxpbnQzMl90PiBzY2FuQ29kZXM7CiAgICAgICAgIGZvciAoaW50IG4gPSAwOyAobiA8IG1GRENvdW50KSAmJiAob3V0RmxhZ3NbY29kZUluZGV4XSA9PSAwKTsgbisrKSB7CiAgICAgICAgICAgICBpZiAobURldmljZXNbbl0pIHsKLSAgICAgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBtRGV2aWNlc1tuXS0+bGF5b3V0TWFwLT5maW5kU2NhbmNvZGVzKGtleUNvZGVzW2NvZGVJbmRleF0sICZzY2FuQ29kZXMpOworICAgICAgICAgICAgICAgIHN0YXR1c190IGVyciA9IG1EZXZpY2VzW25dLT5sYXlvdXRNYXAtPmZpbmRTY2FuY29kZXMoCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2Rlc1tjb2RlSW5kZXhdLCAmc2NhbkNvZGVzKTsKICAgICAgICAgICAgICAgICBpZiAoIWVycikgewogICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayB0aGUgcG9zc2libGUgc2NhbiBjb2RlcyBpZGVudGlmaWVkIGJ5IHRoZSBsYXlvdXQgbWFwIGFnYWluc3QgdGhlCiAgICAgICAgICAgICAgICAgICAgIC8vIG1hcCBvZiBjb2RlcyBhY3R1YWxseSBlbWl0dGVkIGJ5IHRoZSBkcml2ZXIKQEAgLTYxOCwxMSArNjQyLDExIEBACiAgICAgICAgIC8vfQogICAgICAgICBmb3IgKGludCBpPTA7IGk8KChCVE5fTUlTQys3KS84KTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoa2V5X2JpdG1hc2tbaV0gIT0gMCkgewotICAgICAgICAgICAgICAgIGRldmljZS0+Y2xhc3NlcyB8PSBDTEFTU19LRVlCT0FSRDsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gSU5QVVRfREVWSUNFX0NMQVNTX0tFWUJPQVJEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmICgoZGV2aWNlLT5jbGFzc2VzICYgQ0xBU1NfS0VZQk9BUkQpICE9IDApIHsKKyAgICAgICAgaWYgKChkZXZpY2UtPmNsYXNzZXMgJiBJTlBVVF9ERVZJQ0VfQ0xBU1NfS0VZQk9BUkQpICE9IDApIHsKICAgICAgICAgICAgIGRldmljZS0+a2V5Qml0bWFzayA9IG5ldyB1aW50OF90W3NpemVvZihrZXlfYml0bWFzayldOwogICAgICAgICAgICAgaWYgKGRldmljZS0+a2V5Qml0bWFzayAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgbWVtY3B5KGRldmljZS0+a2V5Qml0bWFzaywga2V5X2JpdG1hc2ssIHNpemVvZihrZXlfYml0bWFzaykpOwpAQCAtNjQyLDcgKzY2Niw3IEBACiAgICAgICAgIGlmIChpb2N0bChmZCwgRVZJT0NHQklUKEVWX1JFTCwgc2l6ZW9mKHJlbF9iaXRtYXNrKSksIHJlbF9iaXRtYXNrKSA+PSAwKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodGVzdF9iaXQoUkVMX1gsIHJlbF9iaXRtYXNrKSAmJiB0ZXN0X2JpdChSRUxfWSwgcmVsX2JpdG1hc2spKSB7Ci0gICAgICAgICAgICAgICAgZGV2aWNlLT5jbGFzc2VzIHw9IENMQVNTX1RSQUNLQkFMTDsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gSU5QVVRfREVWSUNFX0NMQVNTX1RSQUNLQkFMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTY1NiwxMiArNjgwLDEyIEBACiAgICAgaWYgKHRlc3RfYml0KEFCU19NVF9UT1VDSF9NQUpPUiwgYWJzX2JpdG1hc2spCiAgICAgICAgICAgICAmJiB0ZXN0X2JpdChBQlNfTVRfUE9TSVRJT05fWCwgYWJzX2JpdG1hc2spCiAgICAgICAgICAgICAmJiB0ZXN0X2JpdChBQlNfTVRfUE9TSVRJT05fWSwgYWJzX2JpdG1hc2spKSB7Ci0gICAgICAgIGRldmljZS0+Y2xhc3NlcyB8PSBDTEFTU19UT1VDSFNDUkVFTiB8IENMQVNTX1RPVUNIU0NSRUVOX01UOworICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOIHwgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOX01UOwogICAgICAgICAKICAgICAvLyBJcyB0aGlzIGFuIG9sZCBzdHlsZSBzaW5nbGUtdG91Y2ggZHJpdmVyPwogICAgIH0gZWxzZSBpZiAodGVzdF9iaXQoQlROX1RPVUNILCBrZXlfYml0bWFzaykKICAgICAgICAgICAgICYmIHRlc3RfYml0KEFCU19YLCBhYnNfYml0bWFzaykgJiYgdGVzdF9iaXQoQUJTX1ksIGFic19iaXRtYXNrKSkgewotICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gQ0xBU1NfVE9VQ0hTQ1JFRU47CisgICAgICAgIGRldmljZS0+Y2xhc3NlcyB8PSBJTlBVVF9ERVZJQ0VfQ0xBU1NfVE9VQ0hTQ1JFRU47CiAgICAgfQogCiAjaWZkZWYgRVZfU1cKQEAgLTY4MCw3ICs3MDQsNyBAQAogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKChkZXZpY2UtPmNsYXNzZXMmQ0xBU1NfS0VZQk9BUkQpICE9IDApIHsKKyAgICBpZiAoKGRldmljZS0+Y2xhc3NlcyAmIElOUFVUX0RFVklDRV9DTEFTU19LRVlCT0FSRCkgIT0gMCkgewogICAgICAgICBjaGFyIHRtcGZuW3NpemVvZihuYW1lKV07CiAgICAgICAgIGNoYXIga2V5bGF5b3V0RmlsZW5hbWVbMzAwXTsKIApAQCAtNzIzLDcgKzc0Nyw3IEBACiAKICAgICAgICAgLy8gJ1EnIGtleSBzdXBwb3J0ID0gY2hlYXAgdGVzdCBvZiB3aGV0aGVyIHRoaXMgaXMgYW4gYWxwaGEtY2FwYWJsZSBrYmQKICAgICAgICAgaWYgKGhhc0tleWNvZGUoZGV2aWNlLCBrS2V5Q29kZVEpKSB7Ci0gICAgICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gQ0xBU1NfQUxQSEFLRVk7CisgICAgICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gSU5QVVRfREVWSUNFX0NMQVNTX0FMUEhBS0VZOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBTZWUgaWYgdGhpcyBoYXMgYSBEUEFELgpAQCAtNzMyLDcgKzc1Niw3IEBACiAgICAgICAgICAgICAgICAgaGFzS2V5Y29kZShkZXZpY2UsIGtLZXlDb2RlRHBhZExlZnQpICYmCiAgICAgICAgICAgICAgICAgaGFzS2V5Y29kZShkZXZpY2UsIGtLZXlDb2RlRHBhZFJpZ2h0KSAmJgogICAgICAgICAgICAgICAgIGhhc0tleWNvZGUoZGV2aWNlLCBrS2V5Q29kZURwYWRDZW50ZXIpKSB7Ci0gICAgICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gQ0xBU1NfRFBBRDsKKyAgICAgICAgICAgIGRldmljZS0+Y2xhc3NlcyB8PSBJTlBVVF9ERVZJQ0VfQ0xBU1NfRFBBRDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgTE9HSSgiTmV3IGtleWJvYXJkOiBkZXZpY2UtPmlkPTB4JXggZGV2bmFtZT0nJXMnIHByb3BOYW1lPSclcycga2V5bGF5b3V0PSclcydcbiIsCmRpZmYgLS1naXQgYS9saWJzL3VpL0ZyYW1lYnVmZmVyTmF0aXZlV2luZG93LmNwcCBiL2xpYnMvdWkvRnJhbWVidWZmZXJOYXRpdmVXaW5kb3cuY3BwCmluZGV4IDUyMzgwYTAuLjZmODk0OGQgMTAwNjQ0Ci0tLSBhL2xpYnMvdWkvRnJhbWVidWZmZXJOYXRpdmVXaW5kb3cuY3BwCisrKyBiL2xpYnMvdWkvRnJhbWVidWZmZXJOYXRpdmVXaW5kb3cuY3BwCkBAIC02Nyw3ICs2Nyw3IEBACiAgKiBUaGlzIGltcGxlbWVudHMgdGhlIChtYWluKSBmcmFtZWJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGNsYXNzIGlzIHVzZWQKICAqIG1vc3RseSBieSBTdXJmYWNlRmxpbmdlciwgYnV0IGFsc28gYnkgY29tbWFuZCBsaW5lIEdMIGFwcGxpY2F0aW9uLgogICogCi0gKiBJbiBmYWN0IHRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Qgb24gdG9wIG9mCisgKiBJbiBmYWN0IHRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgQU5hdGl2ZVdpbmRvdyBvbiB0b3Agb2YKICAqIHRoZSBmcmFtZWJ1ZmZlci4KICAqIAogICogQ3VycmVudGx5IGl0IGlzIHByZXR0eSBzaW1wbGUsIGl0IG1hbmFnZXMgb25seSB0d28gYnVmZmVycyAodGhlIGZyb250IGFuZCAKQEAgLTExNywyMyArMTE3LDIzIEBACiAgICAgICAgIExPR0VfSUYoZXJyLCAiZmIgYnVmZmVyIDEgYWxsb2NhdGlvbiBmYWlsZWQgdz0lZCwgaD0lZCwgZXJyPSVzIiwKICAgICAgICAgICAgICAgICBmYkRldi0+d2lkdGgsIGZiRGV2LT5oZWlnaHQsIHN0cmVycm9yKC1lcnIpKTsKIAotICAgICAgICBjb25zdF9jYXN0PHVpbnQzMl90Jj4oYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OmZsYWdzKSA9IGZiRGV2LT5mbGFnczsgCi0gICAgICAgIGNvbnN0X2Nhc3Q8ZmxvYXQmPihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6eGRwaSkgPSBmYkRldi0+eGRwaTsKLSAgICAgICAgY29uc3RfY2FzdDxmbG9hdCY+KGFuZHJvaWRfbmF0aXZlX3dpbmRvd190Ojp5ZHBpKSA9IGZiRGV2LT55ZHBpOwotICAgICAgICBjb25zdF9jYXN0PGludCY+KGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjptaW5Td2FwSW50ZXJ2YWwpID0gCisgICAgICAgIGNvbnN0X2Nhc3Q8dWludDMyX3QmPihBTmF0aXZlV2luZG93OjpmbGFncykgPSBmYkRldi0+ZmxhZ3M7IAorICAgICAgICBjb25zdF9jYXN0PGZsb2F0Jj4oQU5hdGl2ZVdpbmRvdzo6eGRwaSkgPSBmYkRldi0+eGRwaTsKKyAgICAgICAgY29uc3RfY2FzdDxmbG9hdCY+KEFOYXRpdmVXaW5kb3c6OnlkcGkpID0gZmJEZXYtPnlkcGk7CisgICAgICAgIGNvbnN0X2Nhc3Q8aW50Jj4oQU5hdGl2ZVdpbmRvdzo6bWluU3dhcEludGVydmFsKSA9IAogICAgICAgICAgICAgZmJEZXYtPm1pblN3YXBJbnRlcnZhbDsKLSAgICAgICAgY29uc3RfY2FzdDxpbnQmPihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6bWF4U3dhcEludGVydmFsKSA9IAorICAgICAgICBjb25zdF9jYXN0PGludCY+KEFOYXRpdmVXaW5kb3c6Om1heFN3YXBJbnRlcnZhbCkgPSAKICAgICAgICAgICAgIGZiRGV2LT5tYXhTd2FwSW50ZXJ2YWw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTE9HRSgiQ291bGRuJ3QgZ2V0IGdyYWxsb2MgbW9kdWxlIik7CiAgICAgfQogCi0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OnNldFN3YXBJbnRlcnZhbCA9IHNldFN3YXBJbnRlcnZhbDsKLSAgICBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6ZGVxdWV1ZUJ1ZmZlciA9IGRlcXVldWVCdWZmZXI7Ci0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OmxvY2tCdWZmZXIgPSBsb2NrQnVmZmVyOwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpxdWV1ZUJ1ZmZlciA9IHF1ZXVlQnVmZmVyOwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpxdWVyeSA9IHF1ZXJ5OwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpwZXJmb3JtID0gcGVyZm9ybTsKKyAgICBBTmF0aXZlV2luZG93OjpzZXRTd2FwSW50ZXJ2YWwgPSBzZXRTd2FwSW50ZXJ2YWw7CisgICAgQU5hdGl2ZVdpbmRvdzo6ZGVxdWV1ZUJ1ZmZlciA9IGRlcXVldWVCdWZmZXI7CisgICAgQU5hdGl2ZVdpbmRvdzo6bG9ja0J1ZmZlciA9IGxvY2tCdWZmZXI7CisgICAgQU5hdGl2ZVdpbmRvdzo6cXVldWVCdWZmZXIgPSBxdWV1ZUJ1ZmZlcjsKKyAgICBBTmF0aXZlV2luZG93OjpxdWVyeSA9IHF1ZXJ5OworICAgIEFOYXRpdmVXaW5kb3c6OnBlcmZvcm0gPSBwZXJmb3JtOwogfQogCiBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6fkZyYW1lYnVmZmVyTmF0aXZlV2luZG93KCkgCkBAIC0xNjgsMTMgKzE2OCwxMyBAQAogfQogCiBpbnQgRnJhbWVidWZmZXJOYXRpdmVXaW5kb3c6OnNldFN3YXBJbnRlcnZhbCgKLSAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgaW50IGludGVydmFsKSAKKyAgICAgICAgQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgaW50ZXJ2YWwpIAogewogICAgIGZyYW1lYnVmZmVyX2RldmljZV90KiBmYiA9IGdldFNlbGYod2luZG93KS0+ZmJEZXY7CiAgICAgcmV0dXJuIGZiLT5zZXRTd2FwSW50ZXJ2YWwoZmIsIGludGVydmFsKTsKIH0KIAotaW50IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93OjpkZXF1ZXVlQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIAoraW50IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93OjpkZXF1ZXVlQnVmZmVyKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgCiAgICAgICAgIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiogYnVmZmVyKQogewogICAgIEZyYW1lYnVmZmVyTmF0aXZlV2luZG93KiBzZWxmID0gZ2V0U2VsZih3aW5kb3cpOwpAQCAtMTk2LDcgKzE5Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6bG9ja0J1ZmZlcihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCAKK2ludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6bG9ja0J1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIAogICAgICAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKQogewogICAgIEZyYW1lYnVmZmVyTmF0aXZlV2luZG93KiBzZWxmID0gZ2V0U2VsZih3aW5kb3cpOwpAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCi1pbnQgRnJhbWVidWZmZXJOYXRpdmVXaW5kb3c6OnF1ZXVlQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIAoraW50IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93OjpxdWV1ZUJ1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIAogICAgICAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKQogewogICAgIEZyYW1lYnVmZmVyTmF0aXZlV2luZG93KiBzZWxmID0gZ2V0U2VsZih3aW5kb3cpOwpAQCAtMjI0LDcgKzIyNCw3IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotaW50IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93OjpxdWVyeShhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LAoraW50IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93OjpxdWVyeShBTmF0aXZlV2luZG93KiB3aW5kb3csCiAgICAgICAgIGludCB3aGF0LCBpbnQqIHZhbHVlKSAKIHsKICAgICBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdyogc2VsZiA9IGdldFNlbGYod2luZG93KTsKQEAgLTI0NSw3ICsyNDUsNyBAQAogICAgIHJldHVybiBCQURfVkFMVUU7CiB9CiAKLWludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6cGVyZm9ybShhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LAoraW50IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93OjpwZXJmb3JtKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywKICAgICAgICAgaW50IG9wZXJhdGlvbiwgLi4uKQogewogICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CmRpZmYgLS1naXQgYS9saWJzL3VpL0dyYXBoaWNCdWZmZXIuY3BwIGIvbGlicy91aS9HcmFwaGljQnVmZmVyLmNwcAppbmRleCBiYTFmZDljLi41MTljMjc3IDEwMDY0NAotLS0gYS9saWJzL3VpL0dyYXBoaWNCdWZmZXIuY3BwCisrKyBiL2xpYnMvdWkvR3JhcGhpY0J1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogR3JhcGhpY0J1ZmZlcjo6R3JhcGhpY0J1ZmZlcigpCiAgICAgOiBCQVNFKCksIG1Pd25lcihvd25EYXRhKSwgbUJ1ZmZlck1hcHBlcihHcmFwaGljQnVmZmVyTWFwcGVyOjpnZXQoKSksCi0gICAgICBtSW5pdENoZWNrKE5PX0VSUk9SKSwgIG1WU3RyaWRlKDApLCBtSW5kZXgoLTEpCisgICAgICBtSW5pdENoZWNrKE5PX0VSUk9SKSwgbUluZGV4KC0xKQogewogICAgIHdpZHRoICA9IAogICAgIGhlaWdodCA9IApAQCAtNTEsNyArNTEsNyBAQAogR3JhcGhpY0J1ZmZlcjo6R3JhcGhpY0J1ZmZlcih1aW50MzJfdCB3LCB1aW50MzJfdCBoLCAKICAgICAgICAgUGl4ZWxGb3JtYXQgcmVxRm9ybWF0LCB1aW50MzJfdCByZXFVc2FnZSkKICAgICA6IEJBU0UoKSwgbU93bmVyKG93bkRhdGEpLCBtQnVmZmVyTWFwcGVyKEdyYXBoaWNCdWZmZXJNYXBwZXI6OmdldCgpKSwKLSAgICAgIG1Jbml0Q2hlY2soTk9fRVJST1IpLCAgbVZTdHJpZGUoMCksIG1JbmRleCgtMSkKKyAgICAgIG1Jbml0Q2hlY2soTk9fRVJST1IpLCBtSW5kZXgoLTEpCiB7CiAgICAgd2lkdGggID0gCiAgICAgaGVpZ2h0ID0gCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgICAgIHVpbnQzMl90IGluU3RyaWRlLCBuYXRpdmVfaGFuZGxlX3QqIGluSGFuZGxlLCBib29sIGtlZXBPd25lcnNoaXApCiAgICAgOiBCQVNFKCksIG1Pd25lcihrZWVwT3duZXJzaGlwID8gb3duSGFuZGxlIDogb3duTm9uZSksCiAgICAgICBtQnVmZmVyTWFwcGVyKEdyYXBoaWNCdWZmZXJNYXBwZXI6OmdldCgpKSwKLSAgICAgIG1Jbml0Q2hlY2soTk9fRVJST1IpLCAgbVZTdHJpZGUoMCksIG1JbmRleCgtMSkKKyAgICAgIG1Jbml0Q2hlY2soTk9fRVJST1IpLCBtSW5kZXgoLTEpCiB7CiAgICAgd2lkdGggID0gdzsKICAgICBoZWlnaHQgPSBoOwpAQCAtMTExLDYgKzExMSw5IEBACiAgICAgaWYgKG1Pd25lciAhPSBvd25EYXRhKQogICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CiAKKyAgICBpZiAoaGFuZGxlICYmIHc9PXdpZHRoICYmIGg9PWhlaWdodCAmJiBmPT1mb3JtYXQgJiYgcmVxVXNhZ2U9PXVzYWdlKQorICAgICAgICByZXR1cm4gTk9fRVJST1I7CisKICAgICBpZiAoaGFuZGxlKSB7CiAgICAgICAgIEdyYXBoaWNCdWZmZXJBbGxvY2F0b3ImIGFsbG9jYXRvcihHcmFwaGljQnVmZmVyQWxsb2NhdG9yOjpnZXQoKSk7CiAgICAgICAgIGFsbG9jYXRvci5mcmVlKGhhbmRsZSk7CkBAIC0xMjIsOSArMTI1LDYgQEAKIHN0YXR1c190IEdyYXBoaWNCdWZmZXI6OmluaXRTaXplKHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIFBpeGVsRm9ybWF0IGZvcm1hdCwKICAgICAgICAgdWludDMyX3QgcmVxVXNhZ2UpCiB7Ci0gICAgaWYgKGZvcm1hdCA9PSBQSVhFTF9GT1JNQVRfUkdCWF84ODg4KQotICAgICAgICBmb3JtYXQgPSBQSVhFTF9GT1JNQVRfUkdCQV84ODg4OwotCiAgICAgR3JhcGhpY0J1ZmZlckFsbG9jYXRvciYgYWxsb2NhdG9yID0gR3JhcGhpY0J1ZmZlckFsbG9jYXRvcjo6Z2V0KCk7CiAgICAgc3RhdHVzX3QgZXJyID0gYWxsb2NhdG9yLmFsbG9jKHcsIGgsIGZvcm1hdCwgcmVxVXNhZ2UsICZoYW5kbGUsICZzdHJpZGUpOwogICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKQEAgLTEzMiw3ICsxMzIsNiBAQAogICAgICAgICB0aGlzLT5oZWlnaHQgPSBoOwogICAgICAgICB0aGlzLT5mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAgIHRoaXMtPnVzYWdlICA9IHJlcVVzYWdlOwotICAgICAgICBtVlN0cmlkZSA9IDA7CiAgICAgfQogICAgIHJldHVybiBlcnI7CiB9CkBAIC0xNzMsNyArMTcyLDYgQEAKICAgICAgICAgc3VyLT5oZWlnaHQgPSBoZWlnaHQ7CiAgICAgICAgIHN1ci0+c3RyaWRlID0gc3RyaWRlOwogICAgICAgICBzdXItPmZvcm1hdCA9IGZvcm1hdDsKLSAgICAgICAgc3VyLT52c3RyaWRlID0gbVZTdHJpZGU7CiAgICAgICAgIHN1ci0+ZGF0YSA9IHN0YXRpY19jYXN0PEdHTHVieXRlKj4odmFkZHIpOwogICAgIH0KICAgICByZXR1cm4gcmVzOwpAQCAtMjY3LDE0ICsyNjUsNiBAQAogICAgIHJldHVybiBtSW5kZXg7CiB9CiAKLXZvaWQgR3JhcGhpY0J1ZmZlcjo6c2V0VmVydGljYWxTdHJpZGUodWludDMyX3QgdnN0cmlkZSkgewotICAgIG1WU3RyaWRlID0gdnN0cmlkZTsKLX0KLQotdWludDMyX3QgR3JhcGhpY0J1ZmZlcjo6Z2V0VmVydGljYWxTdHJpZGUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1WU3RyaWRlOwotfQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdWkvR3JhcGhpY0J1ZmZlckFsbG9jYXRvci5jcHAgYi9saWJzL3VpL0dyYXBoaWNCdWZmZXJBbGxvY2F0b3IuY3BwCmluZGV4IDZhZTdlNzQuLmQ1MTY2NGQgMTAwNjQ0Ci0tLSBhL2xpYnMvdWkvR3JhcGhpY0J1ZmZlckFsbG9jYXRvci5jcHAKKysrIGIvbGlicy91aS9HcmFwaGljQnVmZmVyQWxsb2NhdG9yLmNwcApAQCAtMTUsNiArMTUsOCBAQAogKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAqLwogCisjZGVmaW5lIExPR19UQUcgIkdyYXBoaWNCdWZmZXJBbGxvY2F0b3IiCisKICNpbmNsdWRlIDxjdXRpbHMvbG9nLmg+CiAKICNpbmNsdWRlIDx1dGlscy9TaW5nbGV0b24uaD4KQEAgLTYxLDkgKzYzLDkgQEAKICAgICBjb25zdCBzaXplX3QgYyA9IGxpc3Quc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8YyA7IGkrKykgewogICAgICAgICBjb25zdCBhbGxvY19yZWNfdCYgcmVjKGxpc3QudmFsdWVBdChpKSk7Ci0gICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiUxMHA6ICU3LjJmIEtpQiB8ICU0dSB4ICU0dSB8ICUyZCB8IDB4JTA4eFxuIiwKKyAgICAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiJTEwcDogJTcuMmYgS2lCIHwgJTR1ICglNHUpIHggJTR1IHwgJTJkIHwgMHglMDh4XG4iLAogICAgICAgICAgICAgbGlzdC5rZXlBdChpKSwgcmVjLnNpemUvMTAyNC4wZiwgCi0gICAgICAgICAgICByZWMudywgcmVjLmgsIHJlYy5mb3JtYXQsIHJlYy51c2FnZSk7CisgICAgICAgICAgICByZWMudywgcmVjLnMsIHJlYy5oLCByZWMuZm9ybWF0LCByZWMudXNhZ2UpOwogICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHRvdGFsICs9IHJlYy5zaXplOwogICAgIH0KQEAgLTcxLDE2ICs3MywxMyBAQAogICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKIH0KIAotc3RhdGljIGlubGluZSB1aW50MzJfdCBjbGFtcCh1aW50MzJfdCBjKSB7Ci0gICAgcmV0dXJuIGM+MCA/IGMgOiAxOwotfQotCiBzdGF0dXNfdCBHcmFwaGljQnVmZmVyQWxsb2NhdG9yOjphbGxvYyh1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBQaXhlbEZvcm1hdCBmb3JtYXQsCiAgICAgICAgIGludCB1c2FnZSwgYnVmZmVyX2hhbmRsZV90KiBoYW5kbGUsIGludDMyX3QqIHN0cmlkZSkKIHsKLSAgICAvLyBtYWtlIHN1cmUgdG8gbm90IGFsbG9jYXRlIGEgMCB4IDAgYnVmZmVyCi0gICAgdyA9IGNsYW1wKHcpOwotICAgIGggPSBjbGFtcChoKTsKKyAgICAvLyBtYWtlIHN1cmUgdG8gbm90IGFsbG9jYXRlIGEgTiB4IDAgb3IgMCB4IE4gYnVmZmVyLCBzaW5jZSB0aGlzIGlzCisgICAgLy8gYWxsb3dlZCBmcm9tIGFuIEFQSSBzdGFuZC1wb2ludCBhbGxvY2F0ZSBhIDF4MSBidWZmZXIgaW5zdGVhZC4KKyAgICBpZiAoIXcgfHwgIWgpCisgICAgICAgIHcgPSBoID0gMTsKIAogICAgIC8vIHdlIGhhdmUgYSBoL3cgYWxsb2NhdG9yIGFuZCBoL3cgYnVmZmVyIGlzIHJlcXVlc3RlZAogICAgIHN0YXR1c190IGVycjsgCkBAIC0xMDAsOSArOTksOSBAQAogICAgICAgICBhbGxvY19yZWNfdCByZWM7CiAgICAgICAgIHJlYy53ID0gdzsKICAgICAgICAgcmVjLmggPSBoOworICAgICAgICByZWMucyA9ICpzdHJpZGU7CiAgICAgICAgIHJlYy5mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAgIHJlYy51c2FnZSA9IHVzYWdlOwotICAgICAgICByZWMudmFkZHIgPSAwOwogICAgICAgICByZWMuc2l6ZSA9IGggKiBzdHJpZGVbMF0gKiBieXRlc1BlclBpeGVsKGZvcm1hdCk7CiAgICAgICAgIGxpc3QuYWRkKCpoYW5kbGUsIHJlYyk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2xpYnMvdWkvSW5wdXQuY3BwIGIvbGlicy91aS9JbnB1dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY0MjUxZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvdWkvSW5wdXQuY3BwCkBAIC0wLDAgKzEsMTU0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorLy8KKy8vIFByb3ZpZGVzIGEgcGlwZS1iYXNlZCB0cmFuc3BvcnQgZm9yIG5hdGl2ZSBldmVudHMgaW4gdGhlIE5ESy4KKy8vCisjZGVmaW5lIExPR19UQUcgIklucHV0IgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisKKyNpbmNsdWRlIDx1aS9JbnB1dC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIGNsYXNzIElucHV0RXZlbnQKKwordm9pZCBJbnB1dEV2ZW50Ojppbml0aWFsaXplKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlKSB7CisgICAgbURldmljZUlkID0gZGV2aWNlSWQ7CisgICAgbU5hdHVyZSA9IG5hdHVyZTsKK30KKworLy8gY2xhc3MgS2V5RXZlbnQKKworYm9vbCBLZXlFdmVudDo6aGFzRGVmYXVsdEFjdGlvbihpbnQzMl90IGtleUNvZGUpIHsKKyAgICBzd2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgY2FzZSBLRVlDT0RFX0hPTUU6CisgICAgICAgIGNhc2UgS0VZQ09ERV9CQUNLOgorICAgICAgICBjYXNlIEtFWUNPREVfQ0FMTDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX0VORENBTEw6CisgICAgICAgIGNhc2UgS0VZQ09ERV9WT0xVTUVfVVA6CisgICAgICAgIGNhc2UgS0VZQ09ERV9WT0xVTUVfRE9XTjoKKyAgICAgICAgY2FzZSBLRVlDT0RFX1BPV0VSOgorICAgICAgICBjYXNlIEtFWUNPREVfQ0FNRVJBOgorICAgICAgICBjYXNlIEtFWUNPREVfSEVBRFNFVEhPT0s6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRU5VOgorICAgICAgICBjYXNlIEtFWUNPREVfTk9USUZJQ0FUSU9OOgorICAgICAgICBjYXNlIEtFWUNPREVfRk9DVVM6CisgICAgICAgIGNhc2UgS0VZQ09ERV9TRUFSQ0g6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9QTEFZX1BBVVNFOgorICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfU1RPUDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX05FWFQ6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9QUkVWSU9VUzoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX1JFV0lORDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01VVEU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEtleUV2ZW50OjpoYXNEZWZhdWx0QWN0aW9uKCkgY29uc3QgeworICAgIHJldHVybiBoYXNEZWZhdWx0QWN0aW9uKGdldEtleUNvZGUoKSk7Cit9CisKK2Jvb2wgS2V5RXZlbnQ6OmlzU3lzdGVtS2V5KGludDMyX3Qga2V5Q29kZSkgeworICAgIHN3aXRjaCAoa2V5Q29kZSkgeworICAgICAgICBjYXNlIEtFWUNPREVfTUVOVToKKyAgICAgICAgY2FzZSBLRVlDT0RFX1NPRlRfUklHSFQ6CisgICAgICAgIGNhc2UgS0VZQ09ERV9IT01FOgorICAgICAgICBjYXNlIEtFWUNPREVfQkFDSzoKKyAgICAgICAgY2FzZSBLRVlDT0RFX0NBTEw6CisgICAgICAgIGNhc2UgS0VZQ09ERV9FTkRDQUxMOgorICAgICAgICBjYXNlIEtFWUNPREVfVk9MVU1FX1VQOgorICAgICAgICBjYXNlIEtFWUNPREVfVk9MVU1FX0RPV046CisgICAgICAgIGNhc2UgS0VZQ09ERV9NVVRFOgorICAgICAgICBjYXNlIEtFWUNPREVfUE9XRVI6CisgICAgICAgIGNhc2UgS0VZQ09ERV9IRUFEU0VUSE9PSzoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX1BMQVlfUEFVU0U6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9TVE9QOgorICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfTkVYVDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX1BSRVZJT1VTOgorICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfUkVXSU5EOgorICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfRkFTVF9GT1JXQVJEOgorICAgICAgICBjYXNlIEtFWUNPREVfQ0FNRVJBOgorICAgICAgICBjYXNlIEtFWUNPREVfRk9DVVM6CisgICAgICAgIGNhc2UgS0VZQ09ERV9TRUFSQ0g6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEtleUV2ZW50Ojppc1N5c3RlbUtleSgpIGNvbnN0IHsKKyAgICByZXR1cm4gaXNTeXN0ZW1LZXkoZ2V0S2V5Q29kZSgpKTsKK30KKwordm9pZCBLZXlFdmVudDo6aW5pdGlhbGl6ZSgKKyAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgaW50MzJfdCBuYXR1cmUsCisgICAgICAgIGludDMyX3QgYWN0aW9uLAorICAgICAgICBpbnQzMl90IGZsYWdzLAorICAgICAgICBpbnQzMl90IGtleUNvZGUsCisgICAgICAgIGludDMyX3Qgc2NhbkNvZGUsCisgICAgICAgIGludDMyX3QgbWV0YVN0YXRlLAorICAgICAgICBpbnQzMl90IHJlcGVhdENvdW50LAorICAgICAgICBuc2Vjc190IGRvd25UaW1lLAorICAgICAgICBuc2Vjc190IGV2ZW50VGltZSkgeworICAgIElucHV0RXZlbnQ6OmluaXRpYWxpemUoZGV2aWNlSWQsIG5hdHVyZSk7CisgICAgbUFjdGlvbiA9IGFjdGlvbjsKKyAgICBtRmxhZ3MgPSBmbGFnczsKKyAgICBtS2V5Q29kZSA9IGtleUNvZGU7CisgICAgbVNjYW5Db2RlID0gc2NhbkNvZGU7CisgICAgbU1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKKyAgICBtUmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsKKyAgICBtRG93blRpbWUgPSBkb3duVGltZTsKKyAgICBtRXZlbnRUaW1lID0gZXZlbnRUaW1lOworfQorCisvLyBjbGFzcyBNb3Rpb25FdmVudAorCit2b2lkIE1vdGlvbkV2ZW50Ojppbml0aWFsaXplKAorICAgICAgICBpbnQzMl90IGRldmljZUlkLAorICAgICAgICBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgaW50MzJfdCBhY3Rpb24sCisgICAgICAgIGludDMyX3QgZWRnZUZsYWdzLAorICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZSwKKyAgICAgICAgZmxvYXQgeE9mZnNldCwKKyAgICAgICAgZmxvYXQgeU9mZnNldCwKKyAgICAgICAgZmxvYXQgeFByZWNpc2lvbiwKKyAgICAgICAgZmxvYXQgeVByZWNpc2lvbiwKKyAgICAgICAgbnNlY3NfdCBkb3duVGltZSwKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgIHNpemVfdCBwb2ludGVyQ291bnQsCisgICAgICAgIGNvbnN0IGludDMyX3QqIHBvaW50ZXJJZHMsCisgICAgICAgIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMpIHsKKyAgICBJbnB1dEV2ZW50Ojppbml0aWFsaXplKGRldmljZUlkLCBuYXR1cmUpOworICAgIG1BY3Rpb24gPSBhY3Rpb247CisgICAgbUVkZ2VGbGFncyA9IGVkZ2VGbGFnczsKKyAgICBtTWV0YVN0YXRlID0gbWV0YVN0YXRlOworICAgIG1YT2Zmc2V0ID0geE9mZnNldDsKKyAgICBtWU9mZnNldCA9IHlPZmZzZXQ7CisgICAgbVhQcmVjaXNpb24gPSB4UHJlY2lzaW9uOworICAgIG1ZUHJlY2lzaW9uID0geVByZWNpc2lvbjsKKyAgICBtRG93blRpbWUgPSBkb3duVGltZTsKKyAgICBtUG9pbnRlcklkcy5jbGVhcigpOworICAgIG1Qb2ludGVySWRzLmFwcGVuZEFycmF5KHBvaW50ZXJJZHMsIHBvaW50ZXJDb3VudCk7CisgICAgbVNhbXBsZUV2ZW50VGltZXMuY2xlYXIoKTsKKyAgICBtU2FtcGxlUG9pbnRlckNvb3Jkcy5jbGVhcigpOworICAgIGFkZFNhbXBsZShldmVudFRpbWUsIHBvaW50ZXJDb29yZHMpOworfQorCit2b2lkIE1vdGlvbkV2ZW50OjphZGRTYW1wbGUoCisgICAgICAgIGludDY0X3QgZXZlbnRUaW1lLAorICAgICAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKSB7CisgICAgbVNhbXBsZUV2ZW50VGltZXMucHVzaChldmVudFRpbWUpOworICAgIG1TYW1wbGVQb2ludGVyQ29vcmRzLmFwcGVuZEFycmF5KHBvaW50ZXJDb29yZHMsIGdldFBvaW50ZXJDb3VudCgpKTsKK30KKwordm9pZCBNb3Rpb25FdmVudDo6b2Zmc2V0TG9jYXRpb24oZmxvYXQgeE9mZnNldCwgZmxvYXQgeU9mZnNldCkgeworICAgIG1YT2Zmc2V0ICs9IHhPZmZzZXQ7CisgICAgbVlPZmZzZXQgKz0geU9mZnNldDsKK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbGlicy91aS9JbnB1dERpc3BhdGNoZXIuY3BwIGIvbGlicy91aS9JbnB1dERpc3BhdGNoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNmQxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL0lucHV0RGlzcGF0Y2hlci5jcHAKQEAgLTAsMCArMSwxNzA4IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorLy8KKy8vIFRoZSBpbnB1dCBkaXNwYXRjaGVyLgorLy8KKyNkZWZpbmUgTE9HX1RBRyAiSW5wdXREaXNwYXRjaGVyIgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisKKy8vIExvZyBkZXRhaWxlZCBkZWJ1ZyBtZXNzYWdlcyBhYm91dCBlYWNoIGluYm91bmQgZXZlbnQgbm90aWZpY2F0aW9uIHRvIHRoZSBkaXNwYXRjaGVyLgorI2RlZmluZSBERUJVR19JTkJPVU5EX0VWRU5UX0RFVEFJTFMgMAorCisvLyBMb2cgZGV0YWlsZWQgZGVidWcgbWVzc2FnZXMgYWJvdXQgZWFjaCBvdXRib3VuZCBldmVudCBwcm9jZXNzZWQgYnkgdGhlIGRpc3BhdGNoZXIuCisjZGVmaW5lIERFQlVHX09VVEJPVU5EX0VWRU5UX0RFVEFJTFMgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgYmF0Y2hpbmcuCisjZGVmaW5lIERFQlVHX0JBVENISU5HIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IHRoZSBkaXNwYXRjaCBjeWNsZS4KKyNkZWZpbmUgREVCVUdfRElTUEFUQ0hfQ1lDTEUgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgcmVnaXN0cmF0aW9ucy4KKyNkZWZpbmUgREVCVUdfUkVHSVNUUkFUSU9OIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MuCisjZGVmaW5lIERFQlVHX1BFUkZPUk1BTkNFX1NUQVRJU1RJQ1MgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgaW5wdXQgZXZlbnQgaW5qZWN0aW9uLgorI2RlZmluZSBERUJVR19JTkpFQ1RJT04gMAorCisjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgorI2luY2x1ZGUgPHVpL0lucHV0RGlzcGF0Y2hlci5oPgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBUT0RPLCB0aGlzIG5lZWRzIHRvIGJlIHNvbWV3aGVyZSBlbHNlLCBwZXJoYXBzIGluIHRoZSBwb2xpY3kKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc01vdmVtZW50S2V5KGludDMyX3Qga2V5Q29kZSkgeworICAgIHJldHVybiBrZXlDb2RlID09IEtFWUNPREVfRFBBRF9VUAorICAgICAgICAgICAgfHwga2V5Q29kZSA9PSBLRVlDT0RFX0RQQURfRE9XTgorICAgICAgICAgICAgfHwga2V5Q29kZSA9PSBLRVlDT0RFX0RQQURfTEVGVAorICAgICAgICAgICAgfHwga2V5Q29kZSA9PSBLRVlDT0RFX0RQQURfUklHSFQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgbnNlY3NfdCBub3coKSB7CisgICAgcmV0dXJuIHN5c3RlbVRpbWUoU1lTVEVNX1RJTUVfTU9OT1RPTklDKTsKK30KKworLy8gLS0tIElucHV0RGlzcGF0Y2hlciAtLS0KKworSW5wdXREaXNwYXRjaGVyOjpJbnB1dERpc3BhdGNoZXIoY29uc3Qgc3A8SW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlPiYgcG9saWN5KSA6CisgICAgbVBvbGljeShwb2xpY3kpIHsKKyAgICBtUG9sbExvb3AgPSBuZXcgUG9sbExvb3AoKTsKKworICAgIG1JbmJvdW5kUXVldWUuaGVhZC5yZWZDb3VudCA9IC0xOworICAgIG1JbmJvdW5kUXVldWUuaGVhZC50eXBlID0gRXZlbnRFbnRyeTo6VFlQRV9TRU5USU5FTDsKKyAgICBtSW5ib3VuZFF1ZXVlLmhlYWQuZXZlbnRUaW1lID0gTE9OR19MT05HX01JTjsKKworICAgIG1JbmJvdW5kUXVldWUudGFpbC5yZWZDb3VudCA9IC0xOworICAgIG1JbmJvdW5kUXVldWUudGFpbC50eXBlID0gRXZlbnRFbnRyeTo6VFlQRV9TRU5USU5FTDsKKyAgICBtSW5ib3VuZFF1ZXVlLnRhaWwuZXZlbnRUaW1lID0gTE9OR19MT05HX01BWDsKKworICAgIG1LZXlSZXBlYXRTdGF0ZS5sYXN0S2V5RW50cnkgPSBOVUxMOworCisgICAgbUN1cnJlbnRJbnB1dFRhcmdldHNWYWxpZCA9IGZhbHNlOworfQorCitJbnB1dERpc3BhdGNoZXI6On5JbnB1dERpc3BhdGNoZXIoKSB7CisgICAgcmVzZXRLZXlSZXBlYXRMb2NrZWQoKTsKKworICAgIHdoaWxlIChtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5zaXplKCkgIT0gMCkgeworICAgICAgICB1bnJlZ2lzdGVySW5wdXRDaGFubmVsKG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLnZhbHVlQXQoMCktPmlucHV0Q2hhbm5lbCk7CisgICAgfQorCisgICAgZm9yIChFdmVudEVudHJ5KiBlbnRyeSA9IG1JbmJvdW5kUXVldWUuaGVhZC5uZXh0OyBlbnRyeSAhPSAmIG1JbmJvdW5kUXVldWUudGFpbDsgKSB7CisgICAgICAgIEV2ZW50RW50cnkqIG5leHQgPSBlbnRyeS0+bmV4dDsKKyAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlRXZlbnRFbnRyeShuZXh0KTsKKyAgICAgICAgZW50cnkgPSBuZXh0OworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmRpc3BhdGNoT25jZSgpIHsKKyAgICBuc2Vjc190IGtleVJlcGVhdFRpbWVvdXQgPSBtUG9saWN5LT5nZXRLZXlSZXBlYXRUaW1lb3V0KCk7CisKKyAgICBib29sIHNraXBQb2xsID0gZmFsc2U7CisgICAgbnNlY3NfdCBjdXJyZW50VGltZTsKKyAgICBuc2Vjc190IG5leHRXYWtldXBUaW1lID0gTE9OR19MT05HX01BWDsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworICAgICAgICBjdXJyZW50VGltZSA9IG5vdygpOworCisgICAgICAgIC8vIFJlc2V0IHRoZSBrZXkgcmVwZWF0IHRpbWVyIHdoZW5ldmVyIHdlIGRpc2FsbG93IGtleSBldmVudHMsIGV2ZW4gaWYgdGhlIG5leHQgZXZlbnQKKyAgICAgICAgLy8gaXMgbm90IGEga2V5LiAgVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB3ZSBhYm9ydCBhIGtleSByZXBlYXQgaWYgdGhlIGRldmljZSBpcyBqdXN0IGNvbWluZworICAgICAgICAvLyBvdXQgb2Ygc2xlZXAuCisgICAgICAgIC8vIFhYWCB3ZSBzaG91bGQgaGFuZGxlIHJlc2V0dGluZyBpbnB1dCBzdGF0ZSBjb21pbmcgb3V0IG9mIHNsZWVwIG1vcmUgZ2VuZXJhbGx5IGVsc2V3aGVyZQorICAgICAgICBpZiAoa2V5UmVwZWF0VGltZW91dCA8IDApIHsKKyAgICAgICAgICAgIHJlc2V0S2V5UmVwZWF0TG9ja2VkKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBEZXRlY3QgYW5kIHByb2Nlc3MgdGltZW91dHMgZm9yIGFsbCBjb25uZWN0aW9ucyBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkKKyAgICAgICAgLy8gc3luY2hyb25vdXMgZXZlbnQgZGlzcGF0Y2hlcyBwZW5kaW5nLiAgVGhpcyBzdGVwIGlzIGVudGlyZWx5IG5vbi1pbnRlcnJ1cHRpYmxlLgorICAgICAgICBib29sIGhhc1BlbmRpbmdTeW5jVGFyZ2V0ID0gZmFsc2U7CisgICAgICAgIHNpemVfdCBhY3RpdmVDb25uZWN0aW9uQ291bnQgPSBtQWN0aXZlQ29ubmVjdGlvbnMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFjdGl2ZUNvbm5lY3Rpb25Db3VudDsgaSsrKSB7CisgICAgICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gbUFjdGl2ZUNvbm5lY3Rpb25zLml0ZW1BdChpKTsKKworICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24tPmhhc1BlbmRpbmdTeW5jVGFyZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICBoYXNQZW5kaW5nU3luY1RhcmdldCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5zZWNzX3QgY29ubmVjdGlvblRpbWVvdXRUaW1lICA9IGNvbm5lY3Rpb24tPm5leHRUaW1lb3V0VGltZTsKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9uVGltZW91dFRpbWUgPD0gY3VycmVudFRpbWUpIHsKKyAgICAgICAgICAgICAgICBtVGltZWRPdXRDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25UaW1lb3V0VGltZSA8IG5leHRXYWtldXBUaW1lKSB7CisgICAgICAgICAgICAgICAgbmV4dFdha2V1cFRpbWUgPSBjb25uZWN0aW9uVGltZW91dFRpbWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgdGltZWRPdXRDb25uZWN0aW9uQ291bnQgPSBtVGltZWRPdXRDb25uZWN0aW9ucy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGltZWRPdXRDb25uZWN0aW9uQ291bnQ7IGkrKykgeworICAgICAgICAgICAgQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1UaW1lZE91dENvbm5lY3Rpb25zLml0ZW1BdChpKTsKKyAgICAgICAgICAgIHRpbWVvdXREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHNraXBQb2xsID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBtVGltZWRPdXRDb25uZWN0aW9ucy5jbGVhcigpOworCisgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBwZW5kaW5nIHN5bmMgdGFyZ2V0LCB0aGVuIHdlIGNhbiBiZWdpbiBkZWxpdmVyaW5nIGEgbmV3IGV2ZW50LgorICAgICAgICAvLyAoT3RoZXJ3aXNlIHdlIHdhaXQgZm9yIGRpc3BhdGNoIHRvIGNvbXBsZXRlIGZvciB0aGF0IHRhcmdldC4pCisgICAgICAgIGlmICghIGhhc1BlbmRpbmdTeW5jVGFyZ2V0KSB7CisgICAgICAgICAgICBpZiAobUluYm91bmRRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWUgPj0gbUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzS2V5UmVwZWF0TG9ja2VkSW50ZXJydXB0aWJsZShjdXJyZW50VGltZSwga2V5UmVwZWF0VGltZW91dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBza2lwUG9sbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lIDwgbmV4dFdha2V1cFRpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0V2FrZXVwVGltZSA9IG1LZXlSZXBlYXRTdGF0ZS5uZXh0UmVwZWF0VGltZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSW5ib3VuZCBxdWV1ZSBoYXMgYXQgbGVhc3Qgb25lIGVudHJ5LgorICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHByb2Nlc3NpbmcgaXQgYnV0IGxlYXZlIGl0IG9uIHRoZSBxdWV1ZSB1bnRpbCBsYXRlciBzbyB0aGF0IHRoZQorICAgICAgICAgICAgICAgIC8vIGlucHV0IHJlYWRlciBjYW4ga2VlcCBhcHBlbmRpbmcgc2FtcGxlcyBvbnRvIGEgbW90aW9uIGV2ZW50IGJldHdlZW4gdGhlCisgICAgICAgICAgICAgICAgLy8gdGltZSB3ZSBzdGFydGVkIHByb2Nlc3NpbmcgaXQgYW5kIHRoZSB0aW1lIHdlIGZpbmFsbHkgZW5xdWV1ZSBkaXNwYXRjaAorICAgICAgICAgICAgICAgIC8vIGVudHJpZXMgZm9yIGl0LgorICAgICAgICAgICAgICAgIEV2ZW50RW50cnkqIGVudHJ5ID0gbUluYm91bmRRdWV1ZS5oZWFkLm5leHQ7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGVudHJ5LT50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX0NPTkZJR1VSQVRJT05fQ0hBTkdFRDogeworICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5KiB0eXBlZEVudHJ5ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5Kj4oZW50cnkpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29uZmlndXJhdGlvbkNoYW5nZWRMb2NrZWRJbnRlcnJ1cHRpYmxlKGN1cnJlbnRUaW1lLCB0eXBlZEVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX0tFWTogeworICAgICAgICAgICAgICAgICAgICBLZXlFbnRyeSogdHlwZWRFbnRyeSA9IHN0YXRpY19jYXN0PEtleUVudHJ5Kj4oZW50cnkpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzS2V5TG9ja2VkSW50ZXJydXB0aWJsZShjdXJyZW50VGltZSwgdHlwZWRFbnRyeSwga2V5UmVwZWF0VGltZW91dCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgRXZlbnRFbnRyeTo6VFlQRV9NT1RJT046IHsKKyAgICAgICAgICAgICAgICAgICAgTW90aW9uRW50cnkqIHR5cGVkRW50cnkgPSBzdGF0aWNfY2FzdDxNb3Rpb25FbnRyeSo+KGVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc01vdGlvbkxvY2tlZEludGVycnVwdGlibGUoY3VycmVudFRpbWUsIHR5cGVkRW50cnkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBEZXF1ZXVlIGFuZCByZWxlYXNlIHRoZSBldmVudCBlbnRyeSB0aGF0IHdlIGp1c3QgcHJvY2Vzc2VkLgorICAgICAgICAgICAgICAgIG1JbmJvdW5kUXVldWUuZGVxdWV1ZShlbnRyeSk7CisgICAgICAgICAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlRXZlbnRFbnRyeShlbnRyeSk7CisgICAgICAgICAgICAgICAgc2tpcFBvbGwgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUnVuIGFueSBkZWZlcnJlZCBjb21tYW5kcy4KKyAgICAgICAgc2tpcFBvbGwgfD0gcnVuQ29tbWFuZHNMb2NrZWRJbnRlcnJ1cHRpYmxlKCk7CisKKyAgICAgICAgLy8gV2FrZSB1cCBzeW5jaHJvbml6YXRpb24gd2FpdGVycywgaWYgbmVlZGVkLgorICAgICAgICBpZiAoaXNGdWxseVN5bmNocm9uaXplZExvY2tlZCgpKSB7CisgICAgICAgICAgICBtRnVsbHlTeW5jaHJvbml6ZWRDb25kaXRpb24uYnJvYWRjYXN0KCk7CisgICAgICAgIH0KKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgLy8gSWYgd2UgZGlzcGF0Y2hlZCBhbnl0aGluZywgZG9uJ3QgcG9sbCBqdXN0IG5vdy4gIFdhaXQgZm9yIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAvLyBDb250ZW50cyBtYXkgaGF2ZSBzaGlmdGVkIGR1cmluZyBmbGlnaHQuCisgICAgaWYgKHNraXBQb2xsKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXYWl0IGZvciBjYWxsYmFjayBvciB0aW1lb3V0IG9yIHdha2UuCisgICAgbnNlY3NfdCB0aW1lb3V0ID0gbmFub3NlY29uZHNfdG9fbWlsbGlzZWNvbmRzKG5leHRXYWtldXBUaW1lIC0gY3VycmVudFRpbWUpOworICAgIGludDMyX3QgdGltZW91dE1pbGxpcyA9IHRpbWVvdXQgPiBJTlRfTUFYID8gLTEgOiB0aW1lb3V0ID4gMCA/IGludDMyX3QodGltZW91dCkgOiAwOworICAgIG1Qb2xsTG9vcC0+cG9sbE9uY2UodGltZW91dE1pbGxpcyk7Cit9CisKK2Jvb2wgSW5wdXREaXNwYXRjaGVyOjpydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKSB7CisgICAgaWYgKG1Db21tYW5kUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5ID0gbUNvbW1hbmRRdWV1ZS5kZXF1ZXVlQXRIZWFkKCk7CisKKyAgICAgICAgQ29tbWFuZCBjb21tYW5kID0gY29tbWFuZEVudHJ5LT5jb21tYW5kOworICAgICAgICAodGhpcy0+KmNvbW1hbmQpKGNvbW1hbmRFbnRyeSk7IC8vIGNvbW1hbmRzIGFyZSBpbXBsaWNpdGx5ICdMb2NrZWRJbnRlcnJ1cHRpYmxlJworCisgICAgICAgIGNvbW1hbmRFbnRyeS0+Y29ubmVjdGlvbi5jbGVhcigpOworICAgICAgICBtQWxsb2NhdG9yLnJlbGVhc2VDb21tYW5kRW50cnkoY29tbWFuZEVudHJ5KTsKKyAgICB9IHdoaWxlICghIG1Db21tYW5kUXVldWUuaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSW5wdXREaXNwYXRjaGVyOjpDb21tYW5kRW50cnkqIElucHV0RGlzcGF0Y2hlcjo6cG9zdENvbW1hbmRMb2NrZWQoQ29tbWFuZCBjb21tYW5kKSB7CisgICAgQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkgPSBtQWxsb2NhdG9yLm9idGFpbkNvbW1hbmRFbnRyeShjb21tYW5kKTsKKyAgICBtQ29tbWFuZFF1ZXVlLmVucXVldWVBdFRhaWwoY29tbWFuZEVudHJ5KTsKKyAgICByZXR1cm4gY29tbWFuZEVudHJ5OworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6cHJvY2Vzc0NvbmZpZ3VyYXRpb25DaGFuZ2VkTG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSogZW50cnkpIHsKKyNpZiBERUJVR19PVVRCT1VORF9FVkVOVF9ERVRBSUxTCisgICAgTE9HRCgicHJvY2Vzc0NvbmZpZ3VyYXRpb25DaGFuZ2VkIC0gZXZlbnRUaW1lPSVsbGQiLCBlbnRyeS0+ZXZlbnRUaW1lKTsKKyNlbmRpZgorCisgICAgLy8gUmVzZXQga2V5IHJlcGVhdGluZyBpbiBjYXNlIGEga2V5Ym9hcmQgZGV2aWNlIHdhcyBhZGRlZCBvciByZW1vdmVkIG9yIHNvbWV0aGluZy4KKyAgICByZXNldEtleVJlcGVhdExvY2tlZCgpOworCisgICAgbUxvY2sudW5sb2NrKCk7CisKKyAgICBtUG9saWN5LT5ub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZChlbnRyeS0+ZXZlbnRUaW1lKTsKKworICAgIG1Mb2NrLmxvY2soKTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OnByb2Nlc3NLZXlMb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBLZXlFbnRyeSogZW50cnksIG5zZWNzX3Qga2V5UmVwZWF0VGltZW91dCkgeworI2lmIERFQlVHX09VVEJPVU5EX0VWRU5UX0RFVEFJTFMKKyAgICBMT0dEKCJwcm9jZXNzS2V5IC0gZXZlbnRUaW1lPSVsbGQsIGRldmljZUlkPTB4JXgsIG5hdHVyZT0weCV4LCBwb2xpY3lGbGFncz0weCV4LCBhY3Rpb249MHgleCwgIgorICAgICAgICAgICAgImZsYWdzPTB4JXgsIGtleUNvZGU9MHgleCwgc2NhbkNvZGU9MHgleCwgbWV0YVN0YXRlPTB4JXgsIGRvd25UaW1lPSVsbGQiLAorICAgICAgICAgICAgZW50cnktPmV2ZW50VGltZSwgZW50cnktPmRldmljZUlkLCBlbnRyeS0+bmF0dXJlLCBlbnRyeS0+cG9saWN5RmxhZ3MsIGVudHJ5LT5hY3Rpb24sCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MsIGVudHJ5LT5rZXlDb2RlLCBlbnRyeS0+c2NhbkNvZGUsIGVudHJ5LT5tZXRhU3RhdGUsCisgICAgICAgICAgICBlbnRyeS0+ZG93blRpbWUpOworI2VuZGlmCisKKyAgICBpZiAoZW50cnktPmFjdGlvbiA9PSBLRVlfRVZFTlRfQUNUSU9OX0RPV04gJiYgISBlbnRyeS0+aXNJbmplY3RlZCgpKSB7CisgICAgICAgIGlmIChtS2V5UmVwZWF0U3RhdGUubGFzdEtleUVudHJ5CisgICAgICAgICAgICAgICAgJiYgbUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeS0+a2V5Q29kZSA9PSBlbnRyeS0+a2V5Q29kZSkgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZWVuIHR3byBpZGVudGljYWwga2V5IGRvd25zIGluIGEgcm93IHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBkZXZpY2UKKyAgICAgICAgICAgIC8vIGRyaXZlciBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcga2V5IHJlcGVhdHMgaXRzZWxmLiAgV2UgdGFrZSBub3RlIG9mIHRoZQorICAgICAgICAgICAgLy8gcmVwZWF0IGhlcmUsIGJ1dCB3ZSBkaXNhYmxlIG91ciBvd24gbmV4dCBrZXkgcmVwZWF0IHRpbWVyIHNpbmNlIGl0IGlzIGNsZWFyIHRoYXQKKyAgICAgICAgICAgIC8vIHdlIHdpbGwgbm90IG5lZWQgdG8gc3ludGhlc2l6ZSBrZXkgcmVwZWF0cyBvdXJzZWx2ZXMuCisgICAgICAgICAgICBlbnRyeS0+cmVwZWF0Q291bnQgPSBtS2V5UmVwZWF0U3RhdGUubGFzdEtleUVudHJ5LT5yZXBlYXRDb3VudCArIDE7CisgICAgICAgICAgICByZXNldEtleVJlcGVhdExvY2tlZCgpOworICAgICAgICAgICAgbUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lID0gTE9OR19MT05HX01BWDsgLy8gZG9uJ3QgZ2VuZXJhdGUgcmVwZWF0cyBvdXJzZWx2ZXMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE5vdCBhIHJlcGVhdC4gIFNhdmUga2V5IGRvd24gc3RhdGUgaW4gY2FzZSB3ZSBkbyBzZWUgYSByZXBlYXQgbGF0ZXIuCisgICAgICAgICAgICByZXNldEtleVJlcGVhdExvY2tlZCgpOworICAgICAgICAgICAgbUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lID0gZW50cnktPmV2ZW50VGltZSArIGtleVJlcGVhdFRpbWVvdXQ7CisgICAgICAgIH0KKyAgICAgICAgbUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeSA9IGVudHJ5OworICAgICAgICBlbnRyeS0+cmVmQ291bnQgKz0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXNldEtleVJlcGVhdExvY2tlZCgpOworICAgIH0KKworICAgIGlkZW50aWZ5SW5wdXRUYXJnZXRzQW5kRGlzcGF0Y2hLZXlMb2NrZWRJbnRlcnJ1cHRpYmxlKGN1cnJlbnRUaW1lLCBlbnRyeSk7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpwcm9jZXNzS2V5UmVwZWF0TG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgbnNlY3NfdCBrZXlSZXBlYXRUaW1lb3V0KSB7CisgICAgS2V5RW50cnkqIGVudHJ5ID0gbUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeTsKKworICAgIC8vIFNlYXJjaCB0aGUgaW5ib3VuZCBxdWV1ZSBmb3IgYSBrZXkgdXAgY29ycmVzcG9uZGluZyB0byB0aGlzIGRldmljZS4KKyAgICAvLyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gZ2VuZXJhdGUgYSBrZXkgcmVwZWF0IGV2ZW50IGlmIHRoZSBrZXkgaXMgYWxyZWFkeSB1cC4KKyAgICBmb3IgKEV2ZW50RW50cnkqIHF1ZXVlZEVudHJ5ID0gbUluYm91bmRRdWV1ZS5oZWFkLm5leHQ7CisgICAgICAgICAgICBxdWV1ZWRFbnRyeSAhPSAmIG1JbmJvdW5kUXVldWUudGFpbDsgcXVldWVkRW50cnkgPSBlbnRyeS0+bmV4dCkgeworICAgICAgICBpZiAocXVldWVkRW50cnktPnR5cGUgPT0gRXZlbnRFbnRyeTo6VFlQRV9LRVkpIHsKKyAgICAgICAgICAgIEtleUVudHJ5KiBxdWV1ZWRLZXlFbnRyeSA9IHN0YXRpY19jYXN0PEtleUVudHJ5Kj4ocXVldWVkRW50cnkpOworICAgICAgICAgICAgaWYgKHF1ZXVlZEtleUVudHJ5LT5kZXZpY2VJZCA9PSBlbnRyeS0+ZGV2aWNlSWQKKyAgICAgICAgICAgICAgICAgICAgJiYgZW50cnktPmFjdGlvbiA9PSBLRVlfRVZFTlRfQUNUSU9OX1VQKSB7CisgICAgICAgICAgICAgICAgcmVzZXRLZXlSZXBlYXRMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBTeW50aGVzaXplIGEga2V5IHJlcGVhdCBhZnRlciB0aGUgcmVwZWF0IHRpbWVvdXQgZXhwaXJlZC4KKyAgICAvLyBSZXVzZSB0aGUgcmVwZWF0ZWQga2V5IGVudHJ5IGlmIGl0IGlzIG90aGVyd2lzZSB1bnJlZmVyZW5jZWQuCisgICAgdWludDMyX3QgcG9saWN5RmxhZ3MgPSBlbnRyeS0+cG9saWN5RmxhZ3MgJiBQT0xJQ1lfRkxBR19SQVdfTUFTSzsKKyAgICBpZiAoZW50cnktPnJlZkNvdW50ID09IDEpIHsKKyAgICAgICAgZW50cnktPmV2ZW50VGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBlbnRyeS0+ZG93blRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAgICAgZW50cnktPnBvbGljeUZsYWdzID0gcG9saWN5RmxhZ3M7CisgICAgICAgIGVudHJ5LT5yZXBlYXRDb3VudCArPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgIEtleUVudHJ5KiBuZXdFbnRyeSA9IG1BbGxvY2F0b3Iub2J0YWluS2V5RW50cnkoY3VycmVudFRpbWUsCisgICAgICAgICAgICAgICAgZW50cnktPmRldmljZUlkLCBlbnRyeS0+bmF0dXJlLCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgICAgICBlbnRyeS0+YWN0aW9uLCBlbnRyeS0+ZmxhZ3MsIGVudHJ5LT5rZXlDb2RlLCBlbnRyeS0+c2NhbkNvZGUsCisgICAgICAgICAgICAgICAgZW50cnktPm1ldGFTdGF0ZSwgZW50cnktPnJlcGVhdENvdW50ICsgMSwgY3VycmVudFRpbWUpOworCisgICAgICAgIG1LZXlSZXBlYXRTdGF0ZS5sYXN0S2V5RW50cnkgPSBuZXdFbnRyeTsKKyAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlS2V5RW50cnkoZW50cnkpOworCisgICAgICAgIGVudHJ5ID0gbmV3RW50cnk7CisgICAgfQorCisgICAgbUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lID0gY3VycmVudFRpbWUgKyBrZXlSZXBlYXRUaW1lb3V0OworCisjaWYgREVCVUdfT1VUQk9VTkRfRVZFTlRfREVUQUlMUworICAgIExPR0QoInByb2Nlc3NLZXlSZXBlYXQgLSBldmVudFRpbWU9JWxsZCwgZGV2aWNlSWQ9MHgleCwgbmF0dXJlPTB4JXgsIHBvbGljeUZsYWdzPTB4JXgsICIKKyAgICAgICAgICAgICJhY3Rpb249MHgleCwgZmxhZ3M9MHgleCwga2V5Q29kZT0weCV4LCBzY2FuQ29kZT0weCV4LCBtZXRhU3RhdGU9MHgleCwgIgorICAgICAgICAgICAgInJlcGVhdENvdW50PSVkLCBkb3duVGltZT0lbGxkIiwKKyAgICAgICAgICAgIGVudHJ5LT5ldmVudFRpbWUsIGVudHJ5LT5kZXZpY2VJZCwgZW50cnktPm5hdHVyZSwgZW50cnktPnBvbGljeUZsYWdzLAorICAgICAgICAgICAgZW50cnktPmFjdGlvbiwgZW50cnktPmZsYWdzLCBlbnRyeS0+a2V5Q29kZSwgZW50cnktPnNjYW5Db2RlLCBlbnRyeS0+bWV0YVN0YXRlLAorICAgICAgICAgICAgZW50cnktPnJlcGVhdENvdW50LCBlbnRyeS0+ZG93blRpbWUpOworI2VuZGlmCisKKyAgICBpZGVudGlmeUlucHV0VGFyZ2V0c0FuZERpc3BhdGNoS2V5TG9ja2VkSW50ZXJydXB0aWJsZShjdXJyZW50VGltZSwgZW50cnkpOworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6cHJvY2Vzc01vdGlvbkxvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIE1vdGlvbkVudHJ5KiBlbnRyeSkgeworI2lmIERFQlVHX09VVEJPVU5EX0VWRU5UX0RFVEFJTFMKKyAgICBMT0dEKCJwcm9jZXNzTW90aW9uIC0gZXZlbnRUaW1lPSVsbGQsIGRldmljZUlkPTB4JXgsIG5hdHVyZT0weCV4LCBwb2xpY3lGbGFncz0weCV4LCBhY3Rpb249MHgleCwgIgorICAgICAgICAgICAgIm1ldGFTdGF0ZT0weCV4LCBlZGdlRmxhZ3M9MHgleCwgeFByZWNpc2lvbj0lZiwgeVByZWNpc2lvbj0lZiwgZG93blRpbWU9JWxsZCIsCisgICAgICAgICAgICBlbnRyeS0+ZXZlbnRUaW1lLCBlbnRyeS0+ZGV2aWNlSWQsIGVudHJ5LT5uYXR1cmUsIGVudHJ5LT5wb2xpY3lGbGFncywgZW50cnktPmFjdGlvbiwKKyAgICAgICAgICAgIGVudHJ5LT5tZXRhU3RhdGUsIGVudHJ5LT5lZGdlRmxhZ3MsIGVudHJ5LT54UHJlY2lzaW9uLCBlbnRyeS0+eVByZWNpc2lvbiwKKyAgICAgICAgICAgIGVudHJ5LT5kb3duVGltZSk7CisKKyAgICAvLyBQcmludCB0aGUgbW9zdCByZWNlbnQgc2FtcGxlIHRoYXQgd2UgaGF2ZSBhdmFpbGFibGUsIHRoaXMgbWF5IGNoYW5nZSBkdWUgdG8gYmF0Y2hpbmcuCisgICAgc2l6ZV90IHNhbXBsZUNvdW50ID0gMTsKKyAgICBNb3Rpb25TYW1wbGUqIHNhbXBsZSA9ICYgZW50cnktPmZpcnN0U2FtcGxlOworICAgIGZvciAoOyBzYW1wbGUtPm5leHQgIT0gTlVMTDsgc2FtcGxlID0gc2FtcGxlLT5uZXh0KSB7CisgICAgICAgIHNhbXBsZUNvdW50ICs9IDE7CisgICAgfQorICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBlbnRyeS0+cG9pbnRlckNvdW50OyBpKyspIHsKKyAgICAgICAgTE9HRCgiICBQb2ludGVyICVkOiBpZD0lZCwgeD0lZiwgeT0lZiwgcHJlc3N1cmU9JWYsIHNpemU9JWYiLAorICAgICAgICAgICAgICAgIGksIGVudHJ5LT5wb2ludGVySWRzW2ldLAorICAgICAgICAgICAgICAgIHNhbXBsZS0+cG9pbnRlckNvb3Jkc1tpXS54LAorICAgICAgICAgICAgICAgIHNhbXBsZS0+cG9pbnRlckNvb3Jkc1tpXS55LAorICAgICAgICAgICAgICAgIHNhbXBsZS0+cG9pbnRlckNvb3Jkc1tpXS5wcmVzc3VyZSwKKyAgICAgICAgICAgICAgICBzYW1wbGUtPnBvaW50ZXJDb29yZHNbaV0uc2l6ZSk7CisgICAgfQorCisgICAgLy8gS2VlcCBpbiBtaW5kIHRoYXQgZHVlIHRvIGJhdGNoaW5nLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIG51bWJlciBvZiBzYW1wbGVzIGFjdHVhbGx5CisgICAgLy8gZGlzcGF0Y2hlZCB0byBjaGFuZ2UgYmVmb3JlIHRoZSBhcHBsaWNhdGlvbiBmaW5hbGx5IGNvbnN1bWVkIHRoZW0uCisgICAgaWYgKGVudHJ5LT5hY3Rpb24gPT0gTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFKSB7CisgICAgICAgIExPR0QoIiAgLi4uIFRvdGFsIG1vdmVtZW50IHNhbXBsZXMgY3VycmVudGx5IGJhdGNoZWQgJWQgLi4uIiwgc2FtcGxlQ291bnQpOworICAgIH0KKyNlbmRpZgorCisgICAgaWRlbnRpZnlJbnB1dFRhcmdldHNBbmREaXNwYXRjaE1vdGlvbkxvY2tlZEludGVycnVwdGlibGUoY3VycmVudFRpbWUsIGVudHJ5KTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmlkZW50aWZ5SW5wdXRUYXJnZXRzQW5kRGlzcGF0Y2hLZXlMb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBLZXlFbnRyeSogZW50cnkpIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgIExPR0QoImlkZW50aWZ5SW5wdXRUYXJnZXRzQW5kRGlzcGF0Y2hLZXkiKTsKKyNlbmRpZgorCisgICAgZW50cnktPmRpc3BhdGNoSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgbUN1cnJlbnRJbnB1dFRhcmdldHNWYWxpZCA9IGZhbHNlOworICAgIG1Mb2NrLnVubG9jaygpOworCisgICAgbVJldXNhYmxlS2V5RXZlbnQuaW5pdGlhbGl6ZShlbnRyeS0+ZGV2aWNlSWQsIGVudHJ5LT5uYXR1cmUsIGVudHJ5LT5hY3Rpb24sIGVudHJ5LT5mbGFncywKKyAgICAgICAgICAgIGVudHJ5LT5rZXlDb2RlLCBlbnRyeS0+c2NhbkNvZGUsIGVudHJ5LT5tZXRhU3RhdGUsIGVudHJ5LT5yZXBlYXRDb3VudCwKKyAgICAgICAgICAgIGVudHJ5LT5kb3duVGltZSwgZW50cnktPmV2ZW50VGltZSk7CisKKyAgICBtQ3VycmVudElucHV0VGFyZ2V0cy5jbGVhcigpOworICAgIGludDMyX3QgaW5qZWN0aW9uUmVzdWx0ID0gbVBvbGljeS0+d2FpdEZvcktleUV2ZW50VGFyZ2V0cygmIG1SZXVzYWJsZUtleUV2ZW50LAorICAgICAgICAgICAgZW50cnktPnBvbGljeUZsYWdzLCBlbnRyeS0+aW5qZWN0b3JQaWQsIGVudHJ5LT5pbmplY3RvclVpZCwKKyAgICAgICAgICAgIG1DdXJyZW50SW5wdXRUYXJnZXRzKTsKKworICAgIG1Mb2NrLmxvY2soKTsKKyAgICBtQ3VycmVudElucHV0VGFyZ2V0c1ZhbGlkID0gdHJ1ZTsKKworICAgIHNldEluamVjdGlvblJlc3VsdExvY2tlZChlbnRyeSwgaW5qZWN0aW9uUmVzdWx0KTsKKworICAgIGlmIChpbmplY3Rpb25SZXN1bHQgPT0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCkgeworICAgICAgICBkaXNwYXRjaEV2ZW50VG9DdXJyZW50SW5wdXRUYXJnZXRzTG9ja2VkKGN1cnJlbnRUaW1lLCBlbnRyeSwgZmFsc2UpOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmlkZW50aWZ5SW5wdXRUYXJnZXRzQW5kRGlzcGF0Y2hNb3Rpb25Mb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBNb3Rpb25FbnRyeSogZW50cnkpIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgIExPR0QoImlkZW50aWZ5SW5wdXRUYXJnZXRzQW5kRGlzcGF0Y2hNb3Rpb24iKTsKKyNlbmRpZgorCisgICAgZW50cnktPmRpc3BhdGNoSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgbUN1cnJlbnRJbnB1dFRhcmdldHNWYWxpZCA9IGZhbHNlOworICAgIG1Mb2NrLnVubG9jaygpOworCisgICAgbVJldXNhYmxlTW90aW9uRXZlbnQuaW5pdGlhbGl6ZShlbnRyeS0+ZGV2aWNlSWQsIGVudHJ5LT5uYXR1cmUsIGVudHJ5LT5hY3Rpb24sCisgICAgICAgICAgICBlbnRyeS0+ZWRnZUZsYWdzLCBlbnRyeS0+bWV0YVN0YXRlLAorICAgICAgICAgICAgMCwgMCwgZW50cnktPnhQcmVjaXNpb24sIGVudHJ5LT55UHJlY2lzaW9uLAorICAgICAgICAgICAgZW50cnktPmRvd25UaW1lLCBlbnRyeS0+ZXZlbnRUaW1lLCBlbnRyeS0+cG9pbnRlckNvdW50LCBlbnRyeS0+cG9pbnRlcklkcywKKyAgICAgICAgICAgIGVudHJ5LT5maXJzdFNhbXBsZS5wb2ludGVyQ29vcmRzKTsKKworICAgIG1DdXJyZW50SW5wdXRUYXJnZXRzLmNsZWFyKCk7CisgICAgaW50MzJfdCBpbmplY3Rpb25SZXN1bHQgPSBtUG9saWN5LT53YWl0Rm9yTW90aW9uRXZlbnRUYXJnZXRzKCYgbVJldXNhYmxlTW90aW9uRXZlbnQsCisgICAgICAgICAgICBlbnRyeS0+cG9saWN5RmxhZ3MsIGVudHJ5LT5pbmplY3RvclBpZCwgZW50cnktPmluamVjdG9yVWlkLAorICAgICAgICAgICAgbUN1cnJlbnRJbnB1dFRhcmdldHMpOworCisgICAgbUxvY2subG9jaygpOworICAgIG1DdXJyZW50SW5wdXRUYXJnZXRzVmFsaWQgPSB0cnVlOworCisgICAgc2V0SW5qZWN0aW9uUmVzdWx0TG9ja2VkKGVudHJ5LCBpbmplY3Rpb25SZXN1bHQpOworCisgICAgaWYgKGluamVjdGlvblJlc3VsdCA9PSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEKSB7CisgICAgICAgIGRpc3BhdGNoRXZlbnRUb0N1cnJlbnRJbnB1dFRhcmdldHNMb2NrZWQoY3VycmVudFRpbWUsIGVudHJ5LCBmYWxzZSk7CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudFRvQ3VycmVudElucHV0VGFyZ2V0c0xvY2tlZChuc2Vjc190IGN1cnJlbnRUaW1lLAorICAgICAgICBFdmVudEVudHJ5KiBldmVudEVudHJ5LCBib29sIHJlc3VtZVdpdGhBcHBlbmRlZE1vdGlvblNhbXBsZSkgeworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgTE9HRCgiZGlzcGF0Y2hFdmVudFRvQ3VycmVudElucHV0VGFyZ2V0cyAtICIKKyAgICAgICAgICAgICJyZXN1bWVXaXRoQXBwZW5kZWRNb3Rpb25TYW1wbGU9JXMiLAorICAgICAgICAgICAgcmVzdW1lV2l0aEFwcGVuZGVkTW90aW9uU2FtcGxlID8gInRydWUiIDogImZhbHNlIik7CisjZW5kaWYKKworICAgIGFzc2VydChldmVudEVudHJ5LT5kaXNwYXRjaEluUHJvZ3Jlc3MpOyAvLyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gc2V0IHRvIHRydWUKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUN1cnJlbnRJbnB1dFRhcmdldHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgY29uc3QgSW5wdXRUYXJnZXQmIGlucHV0VGFyZ2V0ID0gbUN1cnJlbnRJbnB1dFRhcmdldHMuaXRlbUF0KGkpOworCisgICAgICAgIHNzaXplX3QgY29ubmVjdGlvbkluZGV4ID0gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQuaW5kZXhPZktleSgKKyAgICAgICAgICAgICAgICBpbnB1dFRhcmdldC5pbnB1dENoYW5uZWwtPmdldFJlY2VpdmVQaXBlRmQoKSk7CisgICAgICAgIGlmIChjb25uZWN0aW9uSW5kZXggPj0gMCkgeworICAgICAgICAgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLnZhbHVlQXQoY29ubmVjdGlvbkluZGV4KTsKKyAgICAgICAgICAgIHByZXBhcmVEaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uLCBldmVudEVudHJ5LCAmIGlucHV0VGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICByZXN1bWVXaXRoQXBwZW5kZWRNb3Rpb25TYW1wbGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTE9HVygiRnJhbWV3b3JrIHJlcXVlc3RlZCBkZWxpdmVyeSBvZiBhbiBpbnB1dCBldmVudCB0byBjaGFubmVsICclcycgYnV0IGl0ICIKKyAgICAgICAgICAgICAgICAgICAgImlzIG5vdCByZWdpc3RlcmVkIHdpdGggdGhlIGlucHV0IGRpc3BhdGNoZXIuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRUYXJnZXQuaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6cHJlcGFyZURpc3BhdGNoQ3ljbGVMb2NrZWQobnNlY3NfdCBjdXJyZW50VGltZSwKKyAgICAgICAgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24sIEV2ZW50RW50cnkqIGV2ZW50RW50cnksIGNvbnN0IElucHV0VGFyZ2V0KiBpbnB1dFRhcmdldCwKKyAgICAgICAgYm9vbCByZXN1bWVXaXRoQXBwZW5kZWRNb3Rpb25TYW1wbGUpIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IHByZXBhcmVEaXNwYXRjaEN5Y2xlIC0gZmxhZ3M9JWQsIHRpbWVvdXQ9JWxsZG5zLCAiCisgICAgICAgICAgICAieE9mZnNldD0lZiwgeU9mZnNldD0lZiwgcmVzdW1lV2l0aEFwcGVuZGVkTW90aW9uU2FtcGxlPSVzIiwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgaW5wdXRUYXJnZXQtPmZsYWdzLCBpbnB1dFRhcmdldC0+dGltZW91dCwKKyAgICAgICAgICAgIGlucHV0VGFyZ2V0LT54T2Zmc2V0LCBpbnB1dFRhcmdldC0+eU9mZnNldCwKKyAgICAgICAgICAgIHJlc3VtZVdpdGhBcHBlbmRlZE1vdGlvblNhbXBsZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworI2VuZGlmCisKKyAgICAvLyBTa2lwIHRoaXMgZXZlbnQgaWYgdGhlIGNvbm5lY3Rpb24gc3RhdHVzIGlzIG5vdCBub3JtYWwuCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBxdWV1ZSBvdXRib3VuZCBldmVudHMgYXQgYWxsIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJyb2tlbiBvcgorICAgIC8vIG5vdCByZXNwb25kaW5nLgorICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgIT0gQ29ubmVjdGlvbjo6U1RBVFVTX05PUk1BTCkgeworICAgICAgICBMT0dWKCJjaGFubmVsICclcycgfiBEcm9wcGluZyBldmVudCBiZWNhdXNlIHRoZSBjaGFubmVsIHN0YXR1cyBpcyAlcyIsCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0U3RhdHVzTGFiZWwoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBSZXN1bWUgdGhlIGRpc3BhdGNoIGN5Y2xlIHdpdGggYSBmcmVzaGx5IGFwcGVuZGVkIG1vdGlvbiBzYW1wbGUuCisgICAgLy8gRmlyc3Qgd2UgY2hlY2sgdGhhdCB0aGUgbGFzdCBkaXNwYXRjaCBlbnRyeSBpbiB0aGUgb3V0Ym91bmQgcXVldWUgaXMgZm9yIHRoZSBzYW1lCisgICAgLy8gbW90aW9uIGV2ZW50IHRvIHdoaWNoIHdlIGFwcGVuZGVkIHRoZSBtb3Rpb24gc2FtcGxlLiAgSWYgd2UgZmluZCBzdWNoIGEgZGlzcGF0Y2gKKyAgICAvLyBlbnRyeSwgYW5kIGlmIGl0IGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcyB0aGVuIHdlIHRyeSB0byBzdHJlYW0gdGhlIG5ldyBzYW1wbGUuCisgICAgYm9vbCB3YXNFbXB0eSA9IGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUuaXNFbXB0eSgpOworCisgICAgaWYgKCEgd2FzRW1wdHkgJiYgcmVzdW1lV2l0aEFwcGVuZGVkTW90aW9uU2FtcGxlKSB7CisgICAgICAgIERpc3BhdGNoRW50cnkqIG1vdGlvbkV2ZW50RGlzcGF0Y2hFbnRyeSA9CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+ZmluZFF1ZXVlZERpc3BhdGNoRW50cnlGb3JFdmVudChldmVudEVudHJ5KTsKKyAgICAgICAgaWYgKG1vdGlvbkV2ZW50RGlzcGF0Y2hFbnRyeSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoIGVudHJ5IGlzIG5vdCBpbiBwcm9ncmVzcywgdGhlbiB3ZSBtdXN0IGJlIGJ1c3kgZGlzcGF0Y2hpbmcgYW4KKyAgICAgICAgICAgIC8vIGVhcmxpZXIgZXZlbnQuICBOb3QgYSBwcm9ibGVtLCB0aGUgbW90aW9uIGV2ZW50IGlzIG9uIHRoZSBvdXRib3VuZCBxdWV1ZSBhbmQgd2lsbAorICAgICAgICAgICAgLy8gYmUgZGlzcGF0Y2hlZCBsYXRlci4KKyAgICAgICAgICAgIGlmICghIG1vdGlvbkV2ZW50RGlzcGF0Y2hFbnRyeS0+aW5Qcm9ncmVzcykgeworI2lmIERFQlVHX0JBVENISU5HCisgICAgICAgICAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gTm90IHN0cmVhbWluZyBiZWNhdXNlIHRoZSBtb3Rpb24gZXZlbnQgaGFzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJub3QgeWV0IGJlZW4gZGlzcGF0Y2hlZC4gICIKKyAgICAgICAgICAgICAgICAgICAgICAgICIoV2FpdGluZyBmb3IgZWFybGllciBldmVudHMgdG8gYmUgY29uc3VtZWQuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCkpOworI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2ggZW50cnkgaXMgaW4gcHJvZ3Jlc3MgYnV0IGl0IGFscmVhZHkgaGFzIGEgdGFpbCBvZiBwZW5kaW5nCisgICAgICAgICAgICAvLyBtb3Rpb24gc2FtcGxlcywgdGhlbiBpdCBtdXN0IG1lYW4gdGhhdCB0aGUgc2hhcmVkIG1lbW9yeSBidWZmZXIgZmlsbGVkIHVwLgorICAgICAgICAgICAgLy8gTm90IGEgcHJvYmxlbSwgd2hlbiB0aGlzIGRpc3BhdGNoIGN5Y2xlIGlzIGZpbmlzaGVkLCB3ZSB3aWxsIGV2ZW50dWFsbHkgc3RhcnQKKyAgICAgICAgICAgIC8vIGEgbmV3IGRpc3BhdGNoIGN5Y2xlIHRvIHByb2Nlc3MgdGhlIHRhaWwgYW5kIHRoYXQgdGFpbCBpbmNsdWRlcyB0aGUgbmV3bHkKKyAgICAgICAgICAgIC8vIGFwcGVuZGVkIG1vdGlvbiBzYW1wbGUuCisgICAgICAgICAgICBpZiAobW90aW9uRXZlbnREaXNwYXRjaEVudHJ5LT50YWlsTW90aW9uU2FtcGxlKSB7CisjaWYgREVCVUdfQkFUQ0hJTkcKKyAgICAgICAgICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiBOb3Qgc3RyZWFtaW5nIGJlY2F1c2Ugbm8gbmV3IHNhbXBsZXMgY2FuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiZSBhcHBlbmRlZCB0byB0aGUgbW90aW9uIGV2ZW50IGluIHRoaXMgZGlzcGF0Y2ggY3ljbGUuICAiCisgICAgICAgICAgICAgICAgICAgICAgICAiKFdhaXRpbmcgZm9yIG5leHQgZGlzcGF0Y2ggY3ljbGUgdG8gc3RhcnQuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCkpOworI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGlzcGF0Y2ggZW50cnkgaXMgaW4gcHJvZ3Jlc3MgYW5kIGlzIHN0aWxsIHBvdGVudGlhbGx5IG9wZW4gZm9yIHN0cmVhbWluZy4KKyAgICAgICAgICAgIC8vIFRyeSB0byBzdHJlYW0gdGhlIG5ldyBtb3Rpb24gc2FtcGxlLiAgVGhpcyBtaWdodCBmYWlsIGlmIHRoZSBjb25zdW1lciBoYXMgYWxyZWFkeQorICAgICAgICAgICAgLy8gY29uc3VtZWQgdGhlIG1vdGlvbiBldmVudCAob3IgaWYgdGhlIGNoYW5uZWwgaXMgYnJva2VuKS4KKyAgICAgICAgICAgIE1vdGlvblNhbXBsZSogYXBwZW5kZWRNb3Rpb25TYW1wbGUgPSBzdGF0aWNfY2FzdDxNb3Rpb25FbnRyeSo+KGV2ZW50RW50cnkpLT5sYXN0U2FtcGxlOworICAgICAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gY29ubmVjdGlvbi0+aW5wdXRQdWJsaXNoZXIuYXBwZW5kTW90aW9uU2FtcGxlKAorICAgICAgICAgICAgICAgICAgICBhcHBlbmRlZE1vdGlvblNhbXBsZS0+ZXZlbnRUaW1lLCBhcHBlbmRlZE1vdGlvblNhbXBsZS0+cG9pbnRlckNvb3Jkcyk7CisgICAgICAgICAgICBpZiAoc3RhdHVzID09IE9LKSB7CisjaWYgREVCVUdfQkFUQ0hJTkcKKyAgICAgICAgICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiBTdWNjZXNzZnVsbHkgc3RyZWFtZWQgbmV3IG1vdGlvbiBzYW1wbGUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyNpZiBERUJVR19CQVRDSElORworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19NRU1PUlkpIHsKKyAgICAgICAgICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiBDb3VsZCBub3QgYXBwZW5kIG1vdGlvbiBzYW1wbGUgdG8gY3VycmVudGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwYXRjaGVkIG1vdmUgZXZlbnQgYmVjYXVzZSB0aGUgc2hhcmVkIG1lbW9yeSBidWZmZXIgaXMgZnVsbC4gICIKKyAgICAgICAgICAgICAgICAgICAgICAgICIoV2FpdGluZyBmb3IgbmV4dCBkaXNwYXRjaCBjeWNsZSB0byBzdGFydC4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSBzdGF0dXNfdChGQUlMRURfVFJBTlNBQ1RJT04pKSB7CisgICAgICAgICAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IGFwcGVuZCBtb3Rpb24gc2FtcGxlIHRvIGN1cnJlbnRseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZGlzcGF0Y2hlZCBtb3ZlIGV2ZW50IGJlY2F1c2UgdGhlIGV2ZW50IGhhcyBhbHJlYWR5IGJlZW4gY29uc3VtZWQuICAiCisgICAgICAgICAgICAgICAgICAgICAgICAiKFdhaXRpbmcgZm9yIG5leHQgZGlzcGF0Y2ggY3ljbGUgdG8gc3RhcnQuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiBDb3VsZCBub3QgYXBwZW5kIG1vdGlvbiBzYW1wbGUgdG8gY3VycmVudGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwYXRjaGVkIG1vdmUgZXZlbnQgZHVlIHRvIGFuIGVycm9yLCBzdGF0dXM9JWQuICAiCisgICAgICAgICAgICAgICAgICAgICAgICAiKFdhaXRpbmcgZm9yIG5leHQgZGlzcGF0Y2ggY3ljbGUgdG8gc3RhcnQuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIHN0YXR1cyk7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIC8vIEZhaWxlZCB0byBzdHJlYW0uICBTdGFydCBhIG5ldyB0YWlsIG9mIHBlbmRpbmcgbW90aW9uIHNhbXBsZXMgdG8gZGlzcGF0Y2gKKyAgICAgICAgICAgIC8vIGluIHRoZSBuZXh0IGN5Y2xlLgorICAgICAgICAgICAgbW90aW9uRXZlbnREaXNwYXRjaEVudHJ5LT50YWlsTW90aW9uU2FtcGxlID0gYXBwZW5kZWRNb3Rpb25TYW1wbGU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIGEgbmV3IGV2ZW50LgorICAgIC8vIEVucXVldWUgYSBuZXcgZGlzcGF0Y2ggZW50cnkgb250byB0aGUgb3V0Ym91bmQgcXVldWUgZm9yIHRoaXMgY29ubmVjdGlvbi4KKyAgICBEaXNwYXRjaEVudHJ5KiBkaXNwYXRjaEVudHJ5ID0gbUFsbG9jYXRvci5vYnRhaW5EaXNwYXRjaEVudHJ5KGV2ZW50RW50cnkpOyAvLyBpbmNyZW1lbnRzIHJlZgorICAgIGRpc3BhdGNoRW50cnktPnRhcmdldEZsYWdzID0gaW5wdXRUYXJnZXQtPmZsYWdzOworICAgIGRpc3BhdGNoRW50cnktPnhPZmZzZXQgPSBpbnB1dFRhcmdldC0+eE9mZnNldDsKKyAgICBkaXNwYXRjaEVudHJ5LT55T2Zmc2V0ID0gaW5wdXRUYXJnZXQtPnlPZmZzZXQ7CisgICAgZGlzcGF0Y2hFbnRyeS0+dGltZW91dCA9IGlucHV0VGFyZ2V0LT50aW1lb3V0OworICAgIGRpc3BhdGNoRW50cnktPmluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBkaXNwYXRjaEVudHJ5LT5oZWFkTW90aW9uU2FtcGxlID0gTlVMTDsKKyAgICBkaXNwYXRjaEVudHJ5LT50YWlsTW90aW9uU2FtcGxlID0gTlVMTDsKKworICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBjb3VsZCBub3Qgc3RyZWFtIGEgbmV3IG1vdGlvbiBzYW1wbGUgYmVjYXVzZSB0aGUgY29uc3VtZXIgaGFzCisgICAgLy8gYWxyZWFkeSBjb25zdW1lZCB0aGUgbW90aW9uIGV2ZW50IChvdGhlcndpc2UgdGhlIGNvcnJlc3BvbmRpbmcgZGlzcGF0Y2ggZW50cnkgd291bGQKKyAgICAvLyBzdGlsbCBiZSBpbiB0aGUgb3V0Ym91bmQgcXVldWUgZm9yIHRoaXMgY29ubmVjdGlvbikuICBXZSBzZXQgdGhlIGhlYWQgbW90aW9uIHNhbXBsZQorICAgIC8vIHRvIHRoZSBsaXN0IHN0YXJ0aW5nIHdpdGggdGhlIG5ld2x5IGFwcGVuZGVkIG1vdGlvbiBzYW1wbGUuCisgICAgaWYgKHJlc3VtZVdpdGhBcHBlbmRlZE1vdGlvblNhbXBsZSkgeworI2lmIERFQlVHX0JBVENISU5HCisgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IFByZXBhcmluZyBhIG5ldyBkaXNwYXRjaCBjeWNsZSBmb3IgYWRkaXRpb25hbCBtb3Rpb24gc2FtcGxlcyAiCisgICAgICAgICAgICAgICAgInRoYXQgY2Fubm90IGJlIHN0cmVhbWVkIGJlY2F1c2UgdGhlIG1vdGlvbiBldmVudCBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVkLiIsCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgICAgICBNb3Rpb25TYW1wbGUqIGFwcGVuZGVkTW90aW9uU2FtcGxlID0gc3RhdGljX2Nhc3Q8TW90aW9uRW50cnkqPihldmVudEVudHJ5KS0+bGFzdFNhbXBsZTsKKyAgICAgICAgZGlzcGF0Y2hFbnRyeS0+aGVhZE1vdGlvblNhbXBsZSA9IGFwcGVuZGVkTW90aW9uU2FtcGxlOworICAgIH0KKworICAgIC8vIEVucXVldWUgdGhlIGRpc3BhdGNoIGVudHJ5LgorICAgIGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUuZW5xdWV1ZUF0VGFpbChkaXNwYXRjaEVudHJ5KTsKKworICAgIC8vIElmIHRoZSBvdXRib3VuZCBxdWV1ZSB3YXMgcHJldmlvdXNseSBlbXB0eSwgc3RhcnQgdGhlIGRpc3BhdGNoIGN5Y2xlIGdvaW5nLgorICAgIGlmICh3YXNFbXB0eSkgeworICAgICAgICBhY3RpdmF0ZUNvbm5lY3Rpb25Mb2NrZWQoY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgIHN0YXJ0RGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbik7CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6c3RhcnREaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsCisgICAgICAgIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKSB7CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJjaGFubmVsICclcycgfiBzdGFydERpc3BhdGNoQ3ljbGUiLAorICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorCisgICAgYXNzZXJ0KGNvbm5lY3Rpb24tPnN0YXR1cyA9PSBDb25uZWN0aW9uOjpTVEFUVVNfTk9STUFMKTsKKyAgICBhc3NlcnQoISBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLmlzRW1wdHkoKSk7CisKKyAgICBEaXNwYXRjaEVudHJ5KiBkaXNwYXRjaEVudHJ5ID0gY29ubmVjdGlvbi0+b3V0Ym91bmRRdWV1ZS5oZWFkLm5leHQ7CisgICAgYXNzZXJ0KCEgZGlzcGF0Y2hFbnRyeS0+aW5Qcm9ncmVzcyk7CisKKyAgICAvLyBUT0RPIHRocm90dGxlIHN1Y2Nlc3NpdmUgQUNUSU9OX01PVkUgbW90aW9uIGV2ZW50cyBmb3IgdGhlIHNhbWUgZGV2aWNlCisgICAgLy8gICAgICBwb3NzaWJsZSBpbXBsZW1lbnRhdGlvbiBjb3VsZCBzZXQgYSBicmllZiBwb2xsIHRpbWVvdXQgaGVyZSBhbmQgcmVzdW1lIHN0YXJ0aW5nIHRoZQorICAgIC8vICAgICAgZGlzcGF0Y2ggY3ljbGUgd2hlbiBlbGFwc2VkCisKKyAgICAvLyBQdWJsaXNoIHRoZSBldmVudC4KKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgc3dpdGNoIChkaXNwYXRjaEVudHJ5LT5ldmVudEVudHJ5LT50eXBlKSB7CisgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX0tFWTogeworICAgICAgICBLZXlFbnRyeSoga2V5RW50cnkgPSBzdGF0aWNfY2FzdDxLZXlFbnRyeSo+KGRpc3BhdGNoRW50cnktPmV2ZW50RW50cnkpOworCisgICAgICAgIC8vIEFwcGx5IHRhcmdldCBmbGFncy4KKyAgICAgICAgaW50MzJfdCBhY3Rpb24gPSBrZXlFbnRyeS0+YWN0aW9uOworICAgICAgICBpbnQzMl90IGZsYWdzID0ga2V5RW50cnktPmZsYWdzOworICAgICAgICBpZiAoZGlzcGF0Y2hFbnRyeS0+dGFyZ2V0RmxhZ3MgJiBJbnB1dFRhcmdldDo6RkxBR19DQU5DRUwpIHsKKyAgICAgICAgICAgIGZsYWdzIHw9IEtFWV9FVkVOVF9GTEFHX0NBTkNFTEVEOworICAgICAgICB9CisKKyAgICAgICAgLy8gUHVibGlzaCB0aGUga2V5IGV2ZW50LgorICAgICAgICBzdGF0dXMgPSBjb25uZWN0aW9uLT5pbnB1dFB1Ymxpc2hlci5wdWJsaXNoS2V5RXZlbnQoa2V5RW50cnktPmRldmljZUlkLCBrZXlFbnRyeS0+bmF0dXJlLAorICAgICAgICAgICAgICAgIGFjdGlvbiwgZmxhZ3MsIGtleUVudHJ5LT5rZXlDb2RlLCBrZXlFbnRyeS0+c2NhbkNvZGUsCisgICAgICAgICAgICAgICAga2V5RW50cnktPm1ldGFTdGF0ZSwga2V5RW50cnktPnJlcGVhdENvdW50LCBrZXlFbnRyeS0+ZG93blRpbWUsCisgICAgICAgICAgICAgICAga2V5RW50cnktPmV2ZW50VGltZSk7CisKKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IHB1Ymxpc2gga2V5IGV2ZW50LCAiCisgICAgICAgICAgICAgICAgICAgICJzdGF0dXM9JWQiLCBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIHN0YXR1cyk7CisgICAgICAgICAgICBhYm9ydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIHRydWUgLypicm9rZW4qLyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX01PVElPTjogeworICAgICAgICBNb3Rpb25FbnRyeSogbW90aW9uRW50cnkgPSBzdGF0aWNfY2FzdDxNb3Rpb25FbnRyeSo+KGRpc3BhdGNoRW50cnktPmV2ZW50RW50cnkpOworCisgICAgICAgIC8vIEFwcGx5IHRhcmdldCBmbGFncy4KKyAgICAgICAgaW50MzJfdCBhY3Rpb24gPSBtb3Rpb25FbnRyeS0+YWN0aW9uOworICAgICAgICBpZiAoZGlzcGF0Y2hFbnRyeS0+dGFyZ2V0RmxhZ3MgJiBJbnB1dFRhcmdldDo6RkxBR19PVVRTSURFKSB7CisgICAgICAgICAgICBhY3Rpb24gPSBNT1RJT05fRVZFTlRfQUNUSU9OX09VVFNJREU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRpc3BhdGNoRW50cnktPnRhcmdldEZsYWdzICYgSW5wdXRUYXJnZXQ6OkZMQUdfQ0FOQ0VMKSB7CisgICAgICAgICAgICBhY3Rpb24gPSBNT1RJT05fRVZFTlRfQUNUSU9OX0NBTkNFTDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIGhlYWRNb3Rpb25TYW1wbGUgaXMgbm9uLU5VTEwsIHRoZW4gaXQgcG9pbnRzIHRvIHRoZSBmaXJzdCBuZXcgc2FtcGxlIHRoYXQgd2UKKyAgICAgICAgLy8gd2VyZSB1bmFibGUgdG8gZGlzcGF0Y2ggZHVyaW5nIHRoZSBwcmV2aW91cyBjeWNsZSBzbyB3ZSByZXN1bWUgZGlzcGF0Y2hpbmcgZnJvbQorICAgICAgICAvLyB0aGF0IHBvaW50IGluIHRoZSBsaXN0IG9mIG1vdGlvbiBzYW1wbGVzLgorICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGp1c3Qgc3RhcnQgZnJvbSB0aGUgZmlyc3Qgc2FtcGxlIG9mIHRoZSBtb3Rpb24gZXZlbnQuCisgICAgICAgIE1vdGlvblNhbXBsZSogZmlyc3RNb3Rpb25TYW1wbGUgPSBkaXNwYXRjaEVudHJ5LT5oZWFkTW90aW9uU2FtcGxlOworICAgICAgICBpZiAoISBmaXJzdE1vdGlvblNhbXBsZSkgeworICAgICAgICAgICAgZmlyc3RNb3Rpb25TYW1wbGUgPSAmIG1vdGlvbkVudHJ5LT5maXJzdFNhbXBsZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFB1Ymxpc2ggdGhlIG1vdGlvbiBldmVudCBhbmQgdGhlIGZpcnN0IG1vdGlvbiBzYW1wbGUuCisgICAgICAgIHN0YXR1cyA9IGNvbm5lY3Rpb24tPmlucHV0UHVibGlzaGVyLnB1Ymxpc2hNb3Rpb25FdmVudChtb3Rpb25FbnRyeS0+ZGV2aWNlSWQsCisgICAgICAgICAgICAgICAgbW90aW9uRW50cnktPm5hdHVyZSwgYWN0aW9uLCBtb3Rpb25FbnRyeS0+ZWRnZUZsYWdzLCBtb3Rpb25FbnRyeS0+bWV0YVN0YXRlLAorICAgICAgICAgICAgICAgIGRpc3BhdGNoRW50cnktPnhPZmZzZXQsIGRpc3BhdGNoRW50cnktPnlPZmZzZXQsCisgICAgICAgICAgICAgICAgbW90aW9uRW50cnktPnhQcmVjaXNpb24sIG1vdGlvbkVudHJ5LT55UHJlY2lzaW9uLAorICAgICAgICAgICAgICAgIG1vdGlvbkVudHJ5LT5kb3duVGltZSwgZmlyc3RNb3Rpb25TYW1wbGUtPmV2ZW50VGltZSwKKyAgICAgICAgICAgICAgICBtb3Rpb25FbnRyeS0+cG9pbnRlckNvdW50LCBtb3Rpb25FbnRyeS0+cG9pbnRlcklkcywKKyAgICAgICAgICAgICAgICBmaXJzdE1vdGlvblNhbXBsZS0+cG9pbnRlckNvb3Jkcyk7CisKKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IHB1Ymxpc2ggbW90aW9uIGV2ZW50LCAiCisgICAgICAgICAgICAgICAgICAgICJzdGF0dXM9JWQiLCBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIHN0YXR1cyk7CisgICAgICAgICAgICBhYm9ydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIHRydWUgLypicm9rZW4qLyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBBcHBlbmQgYWRkaXRpb25hbCBtb3Rpb24gc2FtcGxlcy4KKyAgICAgICAgTW90aW9uU2FtcGxlKiBuZXh0TW90aW9uU2FtcGxlID0gZmlyc3RNb3Rpb25TYW1wbGUtPm5leHQ7CisgICAgICAgIGZvciAoOyBuZXh0TW90aW9uU2FtcGxlICE9IE5VTEw7IG5leHRNb3Rpb25TYW1wbGUgPSBuZXh0TW90aW9uU2FtcGxlLT5uZXh0KSB7CisgICAgICAgICAgICBzdGF0dXMgPSBjb25uZWN0aW9uLT5pbnB1dFB1Ymxpc2hlci5hcHBlbmRNb3Rpb25TYW1wbGUoCisgICAgICAgICAgICAgICAgICAgIG5leHRNb3Rpb25TYW1wbGUtPmV2ZW50VGltZSwgbmV4dE1vdGlvblNhbXBsZS0+cG9pbnRlckNvb3Jkcyk7CisgICAgICAgICAgICBpZiAoc3RhdHVzID09IE5PX01FTU9SWSkgeworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgICAgICAgICAgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IFNoYXJlZCBtZW1vcnkgYnVmZmVyIGZ1bGwuICBTb21lIG1vdGlvbiBzYW1wbGVzIHdpbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBzZW50IGluIHRoZSBuZXh0IGRpc3BhdGNoIGN5Y2xlLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBPSykgeworICAgICAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBhcHBlbmQgbW90aW9uIHNhbXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGEgcmVhc29uIG90aGVyIHRoYW4gb3V0IG9mIG1lbW9yeSwgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBhYm9ydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIHRydWUgLypicm9rZW4qLyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtZW1iZXIgdGhlIG5leHQgbW90aW9uIHNhbXBsZSB0aGF0IHdlIGNvdWxkIG5vdCBkaXNwYXRjaCwgaW4gY2FzZSB3ZSByYW4gb3V0CisgICAgICAgIC8vIG9mIHNwYWNlIGluIHRoZSBzaGFyZWQgbWVtb3J5IGJ1ZmZlci4KKyAgICAgICAgZGlzcGF0Y2hFbnRyeS0+dGFpbE1vdGlvblNhbXBsZSA9IG5leHRNb3Rpb25TYW1wbGU7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICB9CisgICAgfQorCisgICAgLy8gU2VuZCB0aGUgZGlzcGF0Y2ggc2lnbmFsLgorICAgIHN0YXR1cyA9IGNvbm5lY3Rpb24tPmlucHV0UHVibGlzaGVyLnNlbmREaXNwYXRjaFNpZ25hbCgpOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IHNlbmQgZGlzcGF0Y2ggc2lnbmFsLCBzdGF0dXM9JWQiLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgc3RhdHVzKTsKKyAgICAgICAgYWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uLCB0cnVlIC8qYnJva2VuKi8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gUmVjb3JkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXdseSBzdGFydGVkIGRpc3BhdGNoIGN5Y2xlLgorICAgIGRpc3BhdGNoRW50cnktPmluUHJvZ3Jlc3MgPSB0cnVlOworCisgICAgY29ubmVjdGlvbi0+bGFzdEV2ZW50VGltZSA9IGRpc3BhdGNoRW50cnktPmV2ZW50RW50cnktPmV2ZW50VGltZTsKKyAgICBjb25uZWN0aW9uLT5sYXN0RGlzcGF0Y2hUaW1lID0gY3VycmVudFRpbWU7CisKKyAgICBuc2Vjc190IHRpbWVvdXQgPSBkaXNwYXRjaEVudHJ5LT50aW1lb3V0OworICAgIGNvbm5lY3Rpb24tPnNldE5leHRUaW1lb3V0VGltZShjdXJyZW50VGltZSwgdGltZW91dCk7CisKKyAgICAvLyBOb3RpZnkgb3RoZXIgc3lzdGVtIGNvbXBvbmVudHMuCisgICAgb25EaXNwYXRjaEN5Y2xlU3RhcnRlZExvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpmaW5pc2hEaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsCisgICAgICAgIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKSB7CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJjaGFubmVsICclcycgfiBmaW5pc2hEaXNwYXRjaEN5Y2xlIC0gJTAxLjFmbXMgc2luY2UgZXZlbnQsICIKKyAgICAgICAgICAgICIlMDEuMWZtcyBzaW5jZSBkaXNwYXRjaCIsCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRFdmVudExhdGVuY3lNaWxsaXMoY3VycmVudFRpbWUpLAorICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0RGlzcGF0Y2hMYXRlbmN5TWlsbGlzKGN1cnJlbnRUaW1lKSk7CisjZW5kaWYKKworICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgPT0gQ29ubmVjdGlvbjo6U1RBVFVTX0JST0tFTgorICAgICAgICAgICAgfHwgY29ubmVjdGlvbi0+c3RhdHVzID09IENvbm5lY3Rpb246OlNUQVRVU19aT01CSUUpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHRpbWVvdXQuCisgICAgY29ubmVjdGlvbi0+bmV4dFRpbWVvdXRUaW1lID0gTE9OR19MT05HX01BWDsKKworICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgPT0gQ29ubmVjdGlvbjo6U1RBVFVTX05PVF9SRVNQT05ESU5HKSB7CisgICAgICAgIC8vIFJlY292ZXJpbmcgZnJvbSBhbiBBTlIuCisgICAgICAgIGNvbm5lY3Rpb24tPnN0YXR1cyA9IENvbm5lY3Rpb246OlNUQVRVU19OT1JNQUw7CisKKyAgICAgICAgLy8gTm90aWZ5IG90aGVyIHN5c3RlbSBjb21wb25lbnRzLgorICAgICAgICBvbkRpc3BhdGNoQ3ljbGVGaW5pc2hlZExvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbiwgdHJ1ZSAvKnJlY292ZXJlZEZyb21BTlIqLyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTm9ybWFsIGZpbmlzaC4gIE5vdCBtdWNoIHRvIGRvIGhlcmUuCisKKyAgICAgICAgLy8gTm90aWZ5IG90aGVyIHN5c3RlbSBjb21wb25lbnRzLgorICAgICAgICBvbkRpc3BhdGNoQ3ljbGVGaW5pc2hlZExvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbiwgZmFsc2UgLypyZWNvdmVyZWRGcm9tQU5SKi8pOworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBwdWJsaXNoZXIgc2luY2UgdGhlIGV2ZW50IGhhcyBiZWVuIGNvbnN1bWVkLgorICAgIC8vIFdlIGRvIHRoaXMgbm93IHNvIHRoYXQgdGhlIHB1Ymxpc2hlciBjYW4gcmVsZWFzZSBzb21lIG9mIGl0cyBpbnRlcm5hbCByZXNvdXJjZXMKKyAgICAvLyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgbmV4dCBkaXNwYXRjaCBjeWNsZSB0byBiZWdpbi4KKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBjb25uZWN0aW9uLT5pbnB1dFB1Ymxpc2hlci5yZXNldCgpOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IHJlc2V0IHB1Ymxpc2hlciwgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIHN0YXR1cyk7CisgICAgICAgIGFib3J0RGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbiwgdHJ1ZSAvKmJyb2tlbiovKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGRpc3BhdGNoIGN5Y2xlIGZvciB0aGlzIGNvbm5lY3Rpb24uCisgICAgd2hpbGUgKCEgY29ubmVjdGlvbi0+b3V0Ym91bmRRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgRGlzcGF0Y2hFbnRyeSogZGlzcGF0Y2hFbnRyeSA9IGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUuaGVhZC5uZXh0OworICAgICAgICBpZiAoZGlzcGF0Y2hFbnRyeS0+aW5Qcm9ncmVzcykgeworICAgICAgICAgICAgIC8vIEZpbmlzaCBvciByZXN1bWUgY3VycmVudCBldmVudCBpbiBwcm9ncmVzcy4KKyAgICAgICAgICAgIGlmIChkaXNwYXRjaEVudHJ5LT50YWlsTW90aW9uU2FtcGxlKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIHRhaWwgb2YgdW5kaXNwYXRjaGVkIG1vdGlvbiBzYW1wbGVzLgorICAgICAgICAgICAgICAgIC8vIFJldXNlIHRoZSBzYW1lIERpc3BhdGNoRW50cnkgYW5kIHN0YXJ0IGEgbmV3IGN5Y2xlLgorICAgICAgICAgICAgICAgIGRpc3BhdGNoRW50cnktPmluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaEVudHJ5LT5oZWFkTW90aW9uU2FtcGxlID0gZGlzcGF0Y2hFbnRyeS0+dGFpbE1vdGlvblNhbXBsZTsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaEVudHJ5LT50YWlsTW90aW9uU2FtcGxlID0gTlVMTDsKKyAgICAgICAgICAgICAgICBzdGFydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZpbmlzaGVkLgorICAgICAgICAgICAgY29ubmVjdGlvbi0+b3V0Ym91bmRRdWV1ZS5kZXF1ZXVlQXRIZWFkKCk7CisgICAgICAgICAgICBtQWxsb2NhdG9yLnJlbGVhc2VEaXNwYXRjaEVudHJ5KGRpc3BhdGNoRW50cnkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSWYgdGhlIGhlYWQgaXMgbm90IGluIHByb2dyZXNzLCB0aGVuIHdlIG11c3QgaGF2ZSBhbHJlYWR5IGRlcXVldWVkIHRoZSBpbgorICAgICAgICAgICAgLy8gcHJvZ3Jlc3MgZXZlbnQsIHdoaWNoIG1lYW5zIHdlIGFjdHVhbGx5IGFib3J0ZWQgaXQgKGR1ZSB0byBBTlIpLgorICAgICAgICAgICAgLy8gU28ganVzdCBzdGFydCB0aGUgbmV4dCBldmVudCBmb3IgdGhpcyBjb25uZWN0aW9uLgorICAgICAgICAgICAgc3RhcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE91dGJvdW5kIHF1ZXVlIGlzIGVtcHR5LCBkZWFjdGl2YXRlIHRoZSBjb25uZWN0aW9uLgorICAgIGRlYWN0aXZhdGVDb25uZWN0aW9uTG9ja2VkKGNvbm5lY3Rpb24uZ2V0KCkpOworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6dGltZW91dERpc3BhdGNoQ3ljbGVMb2NrZWQobnNlY3NfdCBjdXJyZW50VGltZSwKKyAgICAgICAgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IHRpbWVvdXREaXNwYXRjaEN5Y2xlIiwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKworICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgIT0gQ29ubmVjdGlvbjo6U1RBVFVTX05PUk1BTCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRW50ZXIgdGhlIG5vdCByZXNwb25kaW5nIHN0YXRlLgorICAgIGNvbm5lY3Rpb24tPnN0YXR1cyA9IENvbm5lY3Rpb246OlNUQVRVU19OT1RfUkVTUE9ORElORzsKKyAgICBjb25uZWN0aW9uLT5sYXN0QU5SVGltZSA9IGN1cnJlbnRUaW1lOworCisgICAgLy8gTm90aWZ5IG90aGVyIHN5c3RlbSBjb21wb25lbnRzLgorICAgIC8vIFRoaXMgZW5xdWV1ZXMgYSBjb21tYW5kIHdoaWNoIHdpbGwgZXZlbnR1YWxseSBlaXRoZXIgY2FsbAorICAgIC8vIHJlc3VtZUFmdGVyVGltZW91dERpc3BhdGNoQ3ljbGVMb2NrZWQgb3IgYWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkLgorICAgIG9uRGlzcGF0Y2hDeWNsZUFOUkxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpyZXN1bWVBZnRlclRpbWVvdXREaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsCisgICAgICAgIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uLCBuc2Vjc190IG5ld1RpbWVvdXQpIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IHJlc3VtZUFmdGVyVGltZW91dERpc3BhdGNoQ3ljbGVMb2NrZWQiLAorICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorCisgICAgaWYgKGNvbm5lY3Rpb24tPnN0YXR1cyAhPSBDb25uZWN0aW9uOjpTVEFUVVNfTk9UX1JFU1BPTkRJTkcpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc3VtZSBub3JtYWwgZGlzcGF0Y2guCisgICAgY29ubmVjdGlvbi0+c3RhdHVzID0gQ29ubmVjdGlvbjo6U1RBVFVTX05PUk1BTDsKKyAgICBjb25uZWN0aW9uLT5zZXROZXh0VGltZW91dFRpbWUoY3VycmVudFRpbWUsIG5ld1RpbWVvdXQpOworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6YWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsCisgICAgICAgIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uLCBib29sIGJyb2tlbikgeworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gYWJvcnREaXNwYXRjaEN5Y2xlIC0gYnJva2VuPSVzIiwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgYnJva2VuID8gInRydWUiIDogImZhbHNlIik7CisjZW5kaWYKKworICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHRpbWVvdXQuCisgICAgY29ubmVjdGlvbi0+bmV4dFRpbWVvdXRUaW1lID0gTE9OR19MT05HX01BWDsKKworICAgIC8vIENsZWFyIHRoZSBvdXRib3VuZCBxdWV1ZS4KKyAgICBpZiAoISBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBEaXNwYXRjaEVudHJ5KiBkaXNwYXRjaEVudHJ5ID0gY29ubmVjdGlvbi0+b3V0Ym91bmRRdWV1ZS5kZXF1ZXVlQXRIZWFkKCk7CisgICAgICAgICAgICBtQWxsb2NhdG9yLnJlbGVhc2VEaXNwYXRjaEVudHJ5KGRpc3BhdGNoRW50cnkpOworICAgICAgICB9IHdoaWxlICghIGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUuaXNFbXB0eSgpKTsKKworICAgICAgICBkZWFjdGl2YXRlQ29ubmVjdGlvbkxvY2tlZChjb25uZWN0aW9uLmdldCgpKTsKKyAgICB9CisKKyAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGNvbm5lY3Rpb24gYXBwZWFycyB0byBiZSB1bnJlY292ZXJhYmx5IGJyb2tlbi4KKyAgICAvLyBJZ25vcmUgYWxyZWFkeSBicm9rZW4gb3Igem9tYmllIGNvbm5lY3Rpb25zLgorICAgIGlmIChicm9rZW4pIHsKKyAgICAgICAgaWYgKGNvbm5lY3Rpb24tPnN0YXR1cyA9PSBDb25uZWN0aW9uOjpTVEFUVVNfTk9STUFMCisgICAgICAgICAgICAgICAgfHwgY29ubmVjdGlvbi0+c3RhdHVzID09IENvbm5lY3Rpb246OlNUQVRVU19OT1RfUkVTUE9ORElORykgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+c3RhdHVzID0gQ29ubmVjdGlvbjo6U1RBVFVTX0JST0tFTjsKKworICAgICAgICAgICAgLy8gTm90aWZ5IG90aGVyIHN5c3RlbSBjb21wb25lbnRzLgorICAgICAgICAgICAgb25EaXNwYXRjaEN5Y2xlQnJva2VuTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBJbnB1dERpc3BhdGNoZXI6OmhhbmRsZVJlY2VpdmVDYWxsYmFjayhpbnQgcmVjZWl2ZUZkLCBpbnQgZXZlbnRzLCB2b2lkKiBkYXRhKSB7CisgICAgSW5wdXREaXNwYXRjaGVyKiBkID0gc3RhdGljX2Nhc3Q8SW5wdXREaXNwYXRjaGVyKj4oZGF0YSk7CisKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2woZC0+bUxvY2spOworCisgICAgICAgIHNzaXplX3QgY29ubmVjdGlvbkluZGV4ID0gZC0+bUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQuaW5kZXhPZktleShyZWNlaXZlRmQpOworICAgICAgICBpZiAoY29ubmVjdGlvbkluZGV4IDwgMCkgeworICAgICAgICAgICAgTE9HRSgiUmVjZWl2ZWQgc3B1cmlvdXMgcmVjZWl2ZSBjYWxsYmFjayBmb3IgdW5rbm93biBpbnB1dCBjaGFubmVsLiAgIgorICAgICAgICAgICAgICAgICAgICAiZmQ9JWQsIGV2ZW50cz0weCV4IiwgcmVjZWl2ZUZkLCBldmVudHMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyByZW1vdmUgdGhlIGNhbGxiYWNrCisgICAgICAgIH0KKworICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lID0gbm93KCk7CisKKyAgICAgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGQtPm1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLnZhbHVlQXQoY29ubmVjdGlvbkluZGV4KTsKKyAgICAgICAgaWYgKGV2ZW50cyAmIChQT0xMRVJSIHwgUE9MTEhVUCB8IFBPTExOVkFMKSkgeworICAgICAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIH4gQ29uc3VtZXIgY2xvc2VkIGlucHV0IGNoYW5uZWwgb3IgYW4gZXJyb3Igb2NjdXJyZWQuICAiCisgICAgICAgICAgICAgICAgICAgICJldmVudHM9MHgleCIsIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgZXZlbnRzKTsKKyAgICAgICAgICAgIGQtPmFib3J0RGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbiwgdHJ1ZSAvKmJyb2tlbiovKTsKKyAgICAgICAgICAgIGQtPnJ1bkNvbW1hbmRzTG9ja2VkSW50ZXJydXB0aWJsZSgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyByZW1vdmUgdGhlIGNhbGxiYWNrCisgICAgICAgIH0KKworICAgICAgICBpZiAoISAoZXZlbnRzICYgUE9MTElOKSkgeworICAgICAgICAgICAgTE9HVygiY2hhbm5lbCAnJXMnIH4gUmVjZWl2ZWQgc3B1cmlvdXMgY2FsbGJhY2sgZm9yIHVuaGFuZGxlZCBwb2xsIGV2ZW50LiAgIgorICAgICAgICAgICAgICAgICAgICAiZXZlbnRzPTB4JXgiLCBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIGV2ZW50cyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGNvbm5lY3Rpb24tPmlucHV0UHVibGlzaGVyLnJlY2VpdmVGaW5pc2hlZFNpZ25hbCgpOworICAgICAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgfiBGYWlsZWQgdG8gcmVjZWl2ZSBmaW5pc2hlZCBzaWduYWwuICBzdGF0dXM9JWQiLAorICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIHN0YXR1cyk7CisgICAgICAgICAgICBkLT5hYm9ydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIHRydWUgLypicm9rZW4qLyk7CisgICAgICAgICAgICBkLT5ydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gcmVtb3ZlIHRoZSBjYWxsYmFjaworICAgICAgICB9CisKKyAgICAgICAgZC0+ZmluaXNoRGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbik7CisgICAgICAgIGQtPnJ1bkNvbW1hbmRzTG9ja2VkSW50ZXJydXB0aWJsZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6bm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQobnNlY3NfdCBldmVudFRpbWUpIHsKKyNpZiBERUJVR19JTkJPVU5EX0VWRU5UX0RFVEFJTFMKKyAgICBMT0dEKCJub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZCAtIGV2ZW50VGltZT0lbGxkIiwgZXZlbnRUaW1lKTsKKyNlbmRpZgorCisgICAgYm9vbCB3YXNFbXB0eTsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIENvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkqIG5ld0VudHJ5ID0gbUFsbG9jYXRvci5vYnRhaW5Db25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5KGV2ZW50VGltZSk7CisKKyAgICAgICAgd2FzRW1wdHkgPSBtSW5ib3VuZFF1ZXVlLmlzRW1wdHkoKTsKKyAgICAgICAgbUluYm91bmRRdWV1ZS5lbnF1ZXVlQXRUYWlsKG5ld0VudHJ5KTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgaWYgKHdhc0VtcHR5KSB7CisgICAgICAgIG1Qb2xsTG9vcC0+d2FrZSgpOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6Om5vdGlmeUFwcFN3aXRjaENvbWluZyhuc2Vjc190IGV2ZW50VGltZSkgeworI2lmIERFQlVHX0lOQk9VTkRfRVZFTlRfREVUQUlMUworICAgIExPR0QoIm5vdGlmeUFwcFN3aXRjaENvbWluZyAtIGV2ZW50VGltZT0lbGxkIiwgZXZlbnRUaW1lKTsKKyNlbmRpZgorCisgICAgLy8gUmVtb3ZlIG1vdmVtZW50IGtleXMgZnJvbSB0aGUgcXVldWUgZnJvbSBtb3N0IHJlY2VudCB0byBsZWFzdCByZWNlbnQsIHN0b3BwaW5nIGF0IHRoZQorICAgIC8vIGZpcnN0IG5vbi1tb3ZlbWVudCBrZXkuCisgICAgLy8gVE9ETzogSW5jbHVkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHdoeSB3ZSBkbyB0aGlzLi4uCisKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIGZvciAoRXZlbnRFbnRyeSogZW50cnkgPSBtSW5ib3VuZFF1ZXVlLnRhaWwucHJldjsgZW50cnkgIT0gJiBtSW5ib3VuZFF1ZXVlLmhlYWQ7ICkgeworICAgICAgICAgICAgRXZlbnRFbnRyeSogcHJldiA9IGVudHJ5LT5wcmV2OworCisgICAgICAgICAgICBpZiAoZW50cnktPnR5cGUgPT0gRXZlbnRFbnRyeTo6VFlQRV9LRVkpIHsKKyAgICAgICAgICAgICAgICBLZXlFbnRyeSoga2V5RW50cnkgPSBzdGF0aWNfY2FzdDxLZXlFbnRyeSo+KGVudHJ5KTsKKyAgICAgICAgICAgICAgICBpZiAoaXNNb3ZlbWVudEtleShrZXlFbnRyeS0+a2V5Q29kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HVigiRHJvcHBpbmcgbW92ZW1lbnQga2V5IGR1cmluZyBhcHAgc3dpdGNoOiBrZXlDb2RlPSVkLCBhY3Rpb249JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUVudHJ5LT5rZXlDb2RlLCBrZXlFbnRyeS0+YWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgbUluYm91bmRRdWV1ZS5kZXF1ZXVlKGtleUVudHJ5KTsKKworICAgICAgICAgICAgICAgICAgICBzZXRJbmplY3Rpb25SZXN1bHRMb2NrZWQoZW50cnksIElOUFVUX0VWRU5UX0lOSkVDVElPTl9GQUlMRUQpOworCisgICAgICAgICAgICAgICAgICAgIG1BbGxvY2F0b3IucmVsZWFzZUtleUVudHJ5KGtleUVudHJ5KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBzdG9wIGF0IGxhc3Qgbm9uLW1vdmVtZW50IGtleQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVudHJ5ID0gcHJldjsKKyAgICAgICAgfQorICAgIH0gLy8gcmVsZWFzZSBsb2NrCit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpub3RpZnlLZXkobnNlY3NfdCBldmVudFRpbWUsIGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlLAorICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFncywgaW50MzJfdCBhY3Rpb24sIGludDMyX3QgZmxhZ3MsCisgICAgICAgIGludDMyX3Qga2V5Q29kZSwgaW50MzJfdCBzY2FuQ29kZSwgaW50MzJfdCBtZXRhU3RhdGUsIG5zZWNzX3QgZG93blRpbWUpIHsKKyNpZiBERUJVR19JTkJPVU5EX0VWRU5UX0RFVEFJTFMKKyAgICBMT0dEKCJub3RpZnlLZXkgLSBldmVudFRpbWU9JWxsZCwgZGV2aWNlSWQ9MHgleCwgbmF0dXJlPTB4JXgsIHBvbGljeUZsYWdzPTB4JXgsIGFjdGlvbj0weCV4LCAiCisgICAgICAgICAgICAiZmxhZ3M9MHgleCwga2V5Q29kZT0weCV4LCBzY2FuQ29kZT0weCV4LCBtZXRhU3RhdGU9MHgleCwgZG93blRpbWU9JWxsZCIsCisgICAgICAgICAgICBldmVudFRpbWUsIGRldmljZUlkLCBuYXR1cmUsIHBvbGljeUZsYWdzLCBhY3Rpb24sIGZsYWdzLAorICAgICAgICAgICAga2V5Q29kZSwgc2NhbkNvZGUsIG1ldGFTdGF0ZSwgZG93blRpbWUpOworI2VuZGlmCisKKyAgICBib29sIHdhc0VtcHR5OworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgaW50MzJfdCByZXBlYXRDb3VudCA9IDA7CisgICAgICAgIEtleUVudHJ5KiBuZXdFbnRyeSA9IG1BbGxvY2F0b3Iub2J0YWluS2V5RW50cnkoZXZlbnRUaW1lLAorICAgICAgICAgICAgICAgIGRldmljZUlkLCBuYXR1cmUsIHBvbGljeUZsYWdzLCBhY3Rpb24sIGZsYWdzLCBrZXlDb2RlLCBzY2FuQ29kZSwKKyAgICAgICAgICAgICAgICBtZXRhU3RhdGUsIHJlcGVhdENvdW50LCBkb3duVGltZSk7CisKKyAgICAgICAgd2FzRW1wdHkgPSBtSW5ib3VuZFF1ZXVlLmlzRW1wdHkoKTsKKyAgICAgICAgbUluYm91bmRRdWV1ZS5lbnF1ZXVlQXRUYWlsKG5ld0VudHJ5KTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgaWYgKHdhc0VtcHR5KSB7CisgICAgICAgIG1Qb2xsTG9vcC0+d2FrZSgpOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6Om5vdGlmeU1vdGlvbihuc2Vjc190IGV2ZW50VGltZSwgaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUsCisgICAgICAgIHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGFjdGlvbiwgaW50MzJfdCBtZXRhU3RhdGUsIGludDMyX3QgZWRnZUZsYWdzLAorICAgICAgICB1aW50MzJfdCBwb2ludGVyQ291bnQsIGNvbnN0IGludDMyX3QqIHBvaW50ZXJJZHMsIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMsCisgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sIGZsb2F0IHlQcmVjaXNpb24sIG5zZWNzX3QgZG93blRpbWUpIHsKKyNpZiBERUJVR19JTkJPVU5EX0VWRU5UX0RFVEFJTFMKKyAgICBMT0dEKCJub3RpZnlNb3Rpb24gLSBldmVudFRpbWU9JWxsZCwgZGV2aWNlSWQ9MHgleCwgbmF0dXJlPTB4JXgsIHBvbGljeUZsYWdzPTB4JXgsICIKKyAgICAgICAgICAgICJhY3Rpb249MHgleCwgbWV0YVN0YXRlPTB4JXgsIGVkZ2VGbGFncz0weCV4LCB4UHJlY2lzaW9uPSVmLCB5UHJlY2lzaW9uPSVmLCAiCisgICAgICAgICAgICAiZG93blRpbWU9JWxsZCIsCisgICAgICAgICAgICBldmVudFRpbWUsIGRldmljZUlkLCBuYXR1cmUsIHBvbGljeUZsYWdzLCBhY3Rpb24sIG1ldGFTdGF0ZSwgZWRnZUZsYWdzLAorICAgICAgICAgICAgeFByZWNpc2lvbiwgeVByZWNpc2lvbiwgZG93blRpbWUpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBwb2ludGVyQ291bnQ7IGkrKykgeworICAgICAgICBMT0dEKCIgIFBvaW50ZXIgJWQ6IGlkPSVkLCB4PSVmLCB5PSVmLCBwcmVzc3VyZT0lZiwgc2l6ZT0lZiIsCisgICAgICAgICAgICAgICAgaSwgcG9pbnRlcklkc1tpXSwgcG9pbnRlckNvb3Jkc1tpXS54LCBwb2ludGVyQ29vcmRzW2ldLnksCisgICAgICAgICAgICAgICAgcG9pbnRlckNvb3Jkc1tpXS5wcmVzc3VyZSwgcG9pbnRlckNvb3Jkc1tpXS5zaXplKTsKKyAgICB9CisjZW5kaWYKKworICAgIGJvb2wgd2FzRW1wdHk7CisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1Mb2NrKTsKKworICAgICAgICAvLyBBdHRlbXB0IGJhdGNoaW5nIGFuZCBzdHJlYW1pbmcgb2YgbW92ZSBldmVudHMuCisgICAgICAgIGlmIChhY3Rpb24gPT0gTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFKSB7CisgICAgICAgICAgICAvLyBCQVRDSElORyBDQVNFCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVHJ5IHRvIGFwcGVuZCBhIG1vdmUgc2FtcGxlIHRvIHRoZSB0YWlsIG9mIHRoZSBpbmJvdW5kIHF1ZXVlIGZvciB0aGlzIGRldmljZS4KKyAgICAgICAgICAgIC8vIEdpdmUgdXAgaWYgd2UgZW5jb3VudGVyIGEgbm9uLW1vdmUgbW90aW9uIGV2ZW50IGZvciB0aGlzIGRldmljZSBzaW5jZSB0aGF0CisgICAgICAgICAgICAvLyBtZWFucyB3ZSBjYW5ub3QgYXBwZW5kIGFueSBuZXcgc2FtcGxlcyB1bnRpbCBhIG5ldyBtb3Rpb24gZXZlbnQgaGFzIHN0YXJ0ZWQuCisgICAgICAgICAgICBmb3IgKEV2ZW50RW50cnkqIGVudHJ5ID0gbUluYm91bmRRdWV1ZS50YWlsLnByZXY7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5ICE9ICYgbUluYm91bmRRdWV1ZS5oZWFkOyBlbnRyeSA9IGVudHJ5LT5wcmV2KSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT50eXBlICE9IEV2ZW50RW50cnk6OlRZUEVfTU9USU9OKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEtlZXAgbG9va2luZyBmb3IgbW90aW9uIGV2ZW50cy4KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTW90aW9uRW50cnkqIG1vdGlvbkVudHJ5ID0gc3RhdGljX2Nhc3Q8TW90aW9uRW50cnkqPihlbnRyeSk7CisgICAgICAgICAgICAgICAgaWYgKG1vdGlvbkVudHJ5LT5kZXZpY2VJZCAhPSBkZXZpY2VJZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIGxvb2tpbmcgZm9yIHRoaXMgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobW90aW9uRW50cnktPmFjdGlvbiAhPSBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1vdGlvbkVudHJ5LT5wb2ludGVyQ291bnQgIT0gcG9pbnRlckNvdW50CisgICAgICAgICAgICAgICAgICAgICAgICB8fCBtb3Rpb25FbnRyeS0+aXNJbmplY3RlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIExhc3QgbW90aW9uIGV2ZW50IGluIHRoZSBxdWV1ZSBmb3IgdGhpcyBkZXZpY2UgaXMgbm90IGNvbXBhdGlibGUgZm9yCisgICAgICAgICAgICAgICAgICAgIC8vIGFwcGVuZGluZyBuZXcgc2FtcGxlcy4gIFN0b3AgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgZ290byBOb0JhdGNoaW5nT3JTdHJlYW1pbmc7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVGhlIGxhc3QgbW90aW9uIGV2ZW50IGlzIGEgbW92ZSBhbmQgaXMgY29tcGF0aWJsZSBmb3IgYXBwZW5kaW5nLgorICAgICAgICAgICAgICAgIC8vIERvIHRoZSBiYXRjaGluZyBtYWdpYy4KKyAgICAgICAgICAgICAgICBtQWxsb2NhdG9yLmFwcGVuZE1vdGlvblNhbXBsZShtb3Rpb25FbnRyeSwgZXZlbnRUaW1lLCBwb2ludGVyQ29vcmRzKTsKKyNpZiBERUJVR19CQVRDSElORworICAgICAgICAgICAgICAgIExPR0QoIkFwcGVuZGVkIG1vdGlvbiBzYW1wbGUgb250byBiYXRjaCBmb3IgbW9zdCByZWNlbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm1vdGlvbiBldmVudCBmb3IgdGhpcyBkZXZpY2UgaW4gdGhlIGluYm91bmQgcXVldWUuIik7CisjZW5kaWYKKworICAgICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjayBmb3Igc3BlY2lhbCBjYXNlIGJlY2F1c2UgZGlzcGF0Y2ggaXMgaW50ZXJydXB0aWJsZS4KKyAgICAgICAgICAgICAgICAvLyBUaGUgZGlzcGF0Y2ggbG9naWMgaXMgcGFydGlhbGx5IGludGVycnVwdGlibGUgYW5kIHJlbGVhc2VzIGl0cyBsb2NrIHdoaWxlCisgICAgICAgICAgICAgICAgLy8gaWRlbnRpZnlpbmcgdGFyZ2V0cy4gIEhvd2V2ZXIsIGFzIHNvb24gYXMgdGhlIHRhcmdldHMgaGF2ZSBiZWVuIGlkZW50aWZpZWQsCisgICAgICAgICAgICAgICAgLy8gdGhlIGRpc3BhdGNoZXIgcHJvY2VlZHMgdG8gd3JpdGUgYSBkaXNwYXRjaCBlbnRyeSBpbnRvIGFsbCByZWxldmFudCBvdXRib3VuZAorICAgICAgICAgICAgICAgIC8vIHF1ZXVlcyBhbmQgdGhlbiBwcm9tcHRseSByZW1vdmVzIHRoZSBtb3Rpb24gZW50cnkgZnJvbSB0aGUgcXVldWUuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBDb25zZXF1ZW50bHksIHdlIHNob3VsZCBuZXZlciBvYnNlcnZlIHRoZSBjYXNlIHdoZXJlIHRoZSBpbmJvdW5kIHF1ZXVlIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgLy8gYW4gaW4tcHJvZ3Jlc3MgbW90aW9uIGVudHJ5IHVubGVzcyB0aGUgY3VycmVudCBpbnB1dCB0YXJnZXRzIGFyZSBpbnZhbGlkCisgICAgICAgICAgICAgICAgLy8gKGN1cnJlbnRseSBiZWluZyBjb21wdXRlZCkuICBDaGVjayBmb3IgdGhpcyEKKyAgICAgICAgICAgICAgICBhc3NlcnQoISAobW90aW9uRW50cnktPmRpc3BhdGNoSW5Qcm9ncmVzcyAmJiBtQ3VycmVudElucHV0VGFyZ2V0c1ZhbGlkKSk7CisKKyAgICAgICAgICAgICAgICByZXR1cm47IC8vIGRvbmUhCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNUUkVBTUlORyBDQVNFCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gcGVuZGluZyBtb3Rpb24gZXZlbnQgKG9mIGFueSBraW5kKSBmb3IgdGhpcyBkZXZpY2UgaW4gdGhlIGluYm91bmQgcXVldWUuCisgICAgICAgICAgICAvLyBTZWFyY2ggdGhlIG91dGJvdW5kIHF1ZXVlcyBmb3IgYSBzeW5jaHJvbm91c2x5IGRpc3BhdGNoZWQgbW90aW9uIGV2ZW50IGZvciB0aGlzCisgICAgICAgICAgICAvLyBkZXZpY2UuICBJZiBmb3VuZCwgdGhlbiB3ZSBhcHBlbmQgdGhlIG5ldyBzYW1wbGUgdG8gdGhhdCBldmVudCBhbmQgdGhlbiB0cnkgdG8KKyAgICAgICAgICAgIC8vIHB1c2ggaXQgb3V0IHRvIGFsbCBjdXJyZW50IHRhcmdldHMuICBJdCBpcyBwb3NzaWJsZSB0aGF0IHNvbWUgdGFyZ2V0cyB3aWxsIGFscmVhZHkKKyAgICAgICAgICAgIC8vIGhhdmUgY29uc3VtZWQgdGhlIG1vdGlvbiBldmVudC4gIFRoaXMgY2FzZSBpcyBhdXRvbWF0aWNhbGx5IGhhbmRsZWQgYnkgdGhlCisgICAgICAgICAgICAvLyBsb2dpYyBpbiBwcmVwYXJlRGlzcGF0Y2hDeWNsZUxvY2tlZCBieSB0cmFja2luZyB3aGVyZSByZXN1bXB0aW9uIHRha2VzIHBsYWNlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRoZSByZWFzb24gd2UgbG9vayBmb3IgYSBzeW5jaHJvbm91c2x5IGRpc3BhdGNoZWQgbW90aW9uIGV2ZW50IGlzIGJlY2F1c2Ugd2UKKyAgICAgICAgICAgIC8vIHdhbnQgdG8gYmUgc3VyZSB0aGF0IG5vIG90aGVyIG1vdGlvbiBldmVudHMgaGF2ZSBiZWVuIGRpc3BhdGNoZWQgc2luY2UgdGhlIG1vdmUuCisgICAgICAgICAgICAvLyBJdCdzIGFsc28gY29udmVuaWVudCBiZWNhdXNlIGl0IG1lYW5zIHRoYXQgdGhlIGlucHV0IHRhcmdldHMgYXJlIHN0aWxsIHZhbGlkLgorICAgICAgICAgICAgLy8gVGhpcyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIHRvIHN1cHBvcnQgc3RyZWFtaW5nIG9mIGFzeW5jaHJvbm91c2x5IGRpc3BhdGNoZWQKKyAgICAgICAgICAgIC8vIG1vdGlvbiBldmVudHMgKHdoaWNoIG1pZ2h0IGJlIHNpZ25pZmljYW50bHkgbW9yZSBlZmZpY2llbnQpIGJ1dCBpdCBtYXkgYmVjb21lCisgICAgICAgICAgICAvLyBhIGxpdHRsZSBtb3JlIGNvbXBsaWNhdGVkIGFzIGEgcmVzdWx0LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgY29kZSBjcnVjaWFsbHkgZGVwZW5kcyBvbiB0aGUgaW52YXJpYW50IHRoYXQgYW4gb3V0Ym91bmQgcXVldWUgYWx3YXlzCisgICAgICAgICAgICAvLyAgICAgICBjb250YWlucyBhdCBtb3N0IG9uZSBzeW5jaHJvbm91cyBldmVudCBhbmQgaXQgaXMgYWx3YXlzIGxhc3QgKGJ1dCBpdCBtaWdodAorICAgICAgICAgICAgLy8gICAgICAgbm90IGJlIGZpcnN0ISkuCisgICAgICAgICAgICBpZiAobUN1cnJlbnRJbnB1dFRhcmdldHNWYWxpZCkgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUFjdGl2ZUNvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtQWN0aXZlQ29ubmVjdGlvbnMuaXRlbUF0KGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoISBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGF0Y2hFbnRyeSogZGlzcGF0Y2hFbnRyeSA9IGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUudGFpbC5wcmV2OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3BhdGNoRW50cnktPnRhcmdldEZsYWdzICYgSW5wdXRUYXJnZXQ6OkZMQUdfU1lOQykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXNwYXRjaEVudHJ5LT5ldmVudEVudHJ5LT50eXBlICE9IEV2ZW50RW50cnk6OlRZUEVfTU9USU9OKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gTm9CYXRjaGluZ09yU3RyZWFtaW5nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkVudHJ5KiBzeW5jZWRNb3Rpb25FbnRyeSA9IHN0YXRpY19jYXN0PE1vdGlvbkVudHJ5Kj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEVudHJ5LT5ldmVudEVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3luY2VkTW90aW9uRW50cnktPmFjdGlvbiAhPSBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN5bmNlZE1vdGlvbkVudHJ5LT5kZXZpY2VJZCAhPSBkZXZpY2VJZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3luY2VkTW90aW9uRW50cnktPnBvaW50ZXJDb3VudCAhPSBwb2ludGVyQ291bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN5bmNlZE1vdGlvbkVudHJ5LT5pc0luamVjdGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBOb0JhdGNoaW5nT3JTdHJlYW1pbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgc3luY2VkIG1vdmUgZW50cnkuICBBcHBlbmQgc2FtcGxlIGFuZCByZXN1bWUgZGlzcGF0Y2guCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFsbG9jYXRvci5hcHBlbmRNb3Rpb25TYW1wbGUoc3luY2VkTW90aW9uRW50cnksIGV2ZW50VGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJDb29yZHMpOworICAgICNpZiBERUJVR19CQVRDSElORworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPR0QoIkFwcGVuZGVkIG1vdGlvbiBzYW1wbGUgb250byBiYXRjaCBmb3IgbW9zdCByZWNlbnQgc3luY2hyb25vdXNseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzcGF0Y2hlZCBtb3Rpb24gZXZlbnQgZm9yIHRoaXMgZGV2aWNlIGluIHRoZSBvdXRib3VuZCBxdWV1ZXMuIik7CisgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSA9IG5vdygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0N1cnJlbnRJbnB1dFRhcmdldHNMb2NrZWQoY3VycmVudFRpbWUsIHN5bmNlZE1vdGlvbkVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAvKnJlc3VtZVdpdGhBcHBlbmRlZE1vdGlvblNhbXBsZSovKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmRzTG9ja2VkSW50ZXJydXB0aWJsZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gZG9uZSEKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworTm9CYXRjaGluZ09yU3RyZWFtaW5nOjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEp1c3QgZW5xdWV1ZSBhIG5ldyBtb3Rpb24gZXZlbnQuCisgICAgICAgIE1vdGlvbkVudHJ5KiBuZXdFbnRyeSA9IG1BbGxvY2F0b3Iub2J0YWluTW90aW9uRW50cnkoZXZlbnRUaW1lLAorICAgICAgICAgICAgICAgIGRldmljZUlkLCBuYXR1cmUsIHBvbGljeUZsYWdzLCBhY3Rpb24sIG1ldGFTdGF0ZSwgZWRnZUZsYWdzLAorICAgICAgICAgICAgICAgIHhQcmVjaXNpb24sIHlQcmVjaXNpb24sIGRvd25UaW1lLAorICAgICAgICAgICAgICAgIHBvaW50ZXJDb3VudCwgcG9pbnRlcklkcywgcG9pbnRlckNvb3Jkcyk7CisKKyAgICAgICAgd2FzRW1wdHkgPSBtSW5ib3VuZFF1ZXVlLmlzRW1wdHkoKTsKKyAgICAgICAgbUluYm91bmRRdWV1ZS5lbnF1ZXVlQXRUYWlsKG5ld0VudHJ5KTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgaWYgKHdhc0VtcHR5KSB7CisgICAgICAgIG1Qb2xsTG9vcC0+d2FrZSgpOworICAgIH0KK30KKworaW50MzJfdCBJbnB1dERpc3BhdGNoZXI6OmluamVjdElucHV0RXZlbnQoY29uc3QgSW5wdXRFdmVudCogZXZlbnQsCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIGJvb2wgc3luYywgaW50MzJfdCB0aW1lb3V0TWlsbGlzKSB7CisjaWYgREVCVUdfSU5CT1VORF9FVkVOVF9ERVRBSUxTCisgICAgTE9HRCgiaW5qZWN0SW5wdXRFdmVudCAtIGV2ZW50VHlwZT0lZCwgaW5qZWN0b3JQaWQ9JWQsIGluamVjdG9yVWlkPSVkLCAiCisgICAgICAgICAgICAic3luYz0lZCwgdGltZW91dE1pbGxpcz0lZCIsCisgICAgICAgICAgICBldmVudC0+Z2V0VHlwZSgpLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQsIHN5bmMsIHRpbWVvdXRNaWxsaXMpOworI2VuZGlmCisKKyAgICBuc2Vjc190IGVuZFRpbWUgPSBub3coKSArIG1pbGxpc2Vjb25kc190b19uYW5vc2Vjb25kcyh0aW1lb3V0TWlsbGlzKTsKKworICAgIEV2ZW50RW50cnkqIGluamVjdGVkRW50cnk7CisgICAgYm9vbCB3YXNFbXB0eTsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIGluamVjdGVkRW50cnkgPSBjcmVhdGVFbnRyeUZyb21JbnB1dEV2ZW50TG9ja2VkKGV2ZW50KTsKKyAgICAgICAgaW5qZWN0ZWRFbnRyeS0+cmVmQ291bnQgKz0gMTsKKyAgICAgICAgaW5qZWN0ZWRFbnRyeS0+aW5qZWN0b3JQaWQgPSBpbmplY3RvclBpZDsKKyAgICAgICAgaW5qZWN0ZWRFbnRyeS0+aW5qZWN0b3JVaWQgPSBpbmplY3RvclVpZDsKKworICAgICAgICB3YXNFbXB0eSA9IG1JbmJvdW5kUXVldWUuaXNFbXB0eSgpOworICAgICAgICBtSW5ib3VuZFF1ZXVlLmVucXVldWVBdFRhaWwoaW5qZWN0ZWRFbnRyeSk7CisKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgaWYgKHdhc0VtcHR5KSB7CisgICAgICAgIG1Qb2xsTG9vcC0+d2FrZSgpOworICAgIH0KKworICAgIGludDMyX3QgaW5qZWN0aW9uUmVzdWx0OworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gaW5qZWN0ZWRFbnRyeS0+aW5qZWN0aW9uUmVzdWx0OworICAgICAgICAgICAgaWYgKGluamVjdGlvblJlc3VsdCAhPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVORElORykgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBuc2Vjc190IHJlbWFpbmluZ1RpbWVvdXQgPSBlbmRUaW1lIC0gbm93KCk7CisgICAgICAgICAgICBpZiAocmVtYWluaW5nVGltZW91dCA8PSAwKSB7CisgICAgICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1RJTUVEX09VVDsKKyAgICAgICAgICAgICAgICBzeW5jID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1JbmplY3Rpb25SZXN1bHRBdmFpbGFibGVDb25kaXRpb24ud2FpdFJlbGF0aXZlKG1Mb2NrLCByZW1haW5pbmdUaW1lb3V0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzeW5jKSB7CisgICAgICAgICAgICB3aGlsZSAoISBpc0Z1bGx5U3luY2hyb25pemVkTG9ja2VkKCkpIHsKKyAgICAgICAgICAgICAgICBuc2Vjc190IHJlbWFpbmluZ1RpbWVvdXQgPSBlbmRUaW1lIC0gbm93KCk7CisgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1RpbWVvdXQgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fVElNRURfT1VUOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtRnVsbHlTeW5jaHJvbml6ZWRDb25kaXRpb24ud2FpdFJlbGF0aXZlKG1Mb2NrLCByZW1haW5pbmdUaW1lb3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1BbGxvY2F0b3IucmVsZWFzZUV2ZW50RW50cnkoaW5qZWN0ZWRFbnRyeSk7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIHJldHVybiBpbmplY3Rpb25SZXN1bHQ7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpzZXRJbmplY3Rpb25SZXN1bHRMb2NrZWQoRXZlbnRFbnRyeSogZW50cnksIGludDMyX3QgaW5qZWN0aW9uUmVzdWx0KSB7CisgICAgaWYgKGVudHJ5LT5pc0luamVjdGVkKCkpIHsKKyNpZiBERUJVR19JTkpFQ1RJT04KKyAgICAgICAgTE9HRCgiU2V0dGluZyBpbnB1dCBldmVudCBpbmplY3Rpb24gcmVzdWx0IHRvICVkLiAgIgorICAgICAgICAgICAgICAgICJpbmplY3RvclBpZD0lZCwgaW5qZWN0b3JVaWQ9JWQiLAorICAgICAgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQsIGVudHJ5LT5pbmplY3RvclBpZCwgZW50cnktPmluamVjdG9yVWlkKTsKKyNlbmRpZgorCisgICAgICAgIGVudHJ5LT5pbmplY3Rpb25SZXN1bHQgPSBpbmplY3Rpb25SZXN1bHQ7CisgICAgICAgIG1JbmplY3Rpb25SZXN1bHRBdmFpbGFibGVDb25kaXRpb24uYnJvYWRjYXN0KCk7CisgICAgfQorfQorCitib29sIElucHV0RGlzcGF0Y2hlcjo6aXNGdWxseVN5bmNocm9uaXplZExvY2tlZCgpIHsKKyAgICByZXR1cm4gbUluYm91bmRRdWV1ZS5pc0VtcHR5KCkgJiYgbUFjdGl2ZUNvbm5lY3Rpb25zLmlzRW1wdHkoKTsKK30KKworSW5wdXREaXNwYXRjaGVyOjpFdmVudEVudHJ5KiBJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZUVudHJ5RnJvbUlucHV0RXZlbnRMb2NrZWQoCisgICAgICAgIGNvbnN0IElucHV0RXZlbnQqIGV2ZW50KSB7CisgICAgc3dpdGNoIChldmVudC0+Z2V0VHlwZSgpKSB7CisgICAgY2FzZSBJTlBVVF9FVkVOVF9UWVBFX0tFWTogeworICAgICAgICBjb25zdCBLZXlFdmVudCoga2V5RXZlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBLZXlFdmVudCo+KGV2ZW50KTsKKyAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MgPSAwOyAvLyBYWFggY29uc2lkZXIgYWRkaW5nIGEgcG9saWN5IGZsYWcgdG8gdHJhY2sgaW5qZWN0ZWQgZXZlbnRzCisKKyAgICAgICAgS2V5RW50cnkqIGtleUVudHJ5ID0gbUFsbG9jYXRvci5vYnRhaW5LZXlFbnRyeShrZXlFdmVudC0+Z2V0RXZlbnRUaW1lKCksCisgICAgICAgICAgICAgICAga2V5RXZlbnQtPmdldERldmljZUlkKCksIGtleUV2ZW50LT5nZXROYXR1cmUoKSwgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICAgICAga2V5RXZlbnQtPmdldEFjdGlvbigpLCBrZXlFdmVudC0+Z2V0RmxhZ3MoKSwKKyAgICAgICAgICAgICAgICBrZXlFdmVudC0+Z2V0S2V5Q29kZSgpLCBrZXlFdmVudC0+Z2V0U2NhbkNvZGUoKSwga2V5RXZlbnQtPmdldE1ldGFTdGF0ZSgpLAorICAgICAgICAgICAgICAgIGtleUV2ZW50LT5nZXRSZXBlYXRDb3VudCgpLCBrZXlFdmVudC0+Z2V0RG93blRpbWUoKSk7CisgICAgICAgIHJldHVybiBrZXlFbnRyeTsKKyAgICB9CisKKyAgICBjYXNlIElOUFVUX0VWRU5UX1RZUEVfTU9USU9OOiB7CisgICAgICAgIGNvbnN0IE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4oZXZlbnQpOworICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFncyA9IDA7IC8vIFhYWCBjb25zaWRlciBhZGRpbmcgYSBwb2xpY3kgZmxhZyB0byB0cmFjayBpbmplY3RlZCBldmVudHMKKworICAgICAgICBjb25zdCBuc2Vjc190KiBzYW1wbGVFdmVudFRpbWVzID0gbW90aW9uRXZlbnQtPmdldFNhbXBsZUV2ZW50VGltZXMoKTsKKyAgICAgICAgY29uc3QgUG9pbnRlckNvb3Jkcyogc2FtcGxlUG9pbnRlckNvb3JkcyA9IG1vdGlvbkV2ZW50LT5nZXRTYW1wbGVQb2ludGVyQ29vcmRzKCk7CisgICAgICAgIHNpemVfdCBwb2ludGVyQ291bnQgPSBtb3Rpb25FdmVudC0+Z2V0UG9pbnRlckNvdW50KCk7CisKKyAgICAgICAgTW90aW9uRW50cnkqIG1vdGlvbkVudHJ5ID0gbUFsbG9jYXRvci5vYnRhaW5Nb3Rpb25FbnRyeSgqc2FtcGxlRXZlbnRUaW1lcywKKyAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0RGV2aWNlSWQoKSwgbW90aW9uRXZlbnQtPmdldE5hdHVyZSgpLCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0QWN0aW9uKCksIG1vdGlvbkV2ZW50LT5nZXRNZXRhU3RhdGUoKSwgbW90aW9uRXZlbnQtPmdldEVkZ2VGbGFncygpLAorICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5nZXRYUHJlY2lzaW9uKCksIG1vdGlvbkV2ZW50LT5nZXRZUHJlY2lzaW9uKCksCisgICAgICAgICAgICAgICAgbW90aW9uRXZlbnQtPmdldERvd25UaW1lKCksIHVpbnQzMl90KHBvaW50ZXJDb3VudCksCisgICAgICAgICAgICAgICAgbW90aW9uRXZlbnQtPmdldFBvaW50ZXJJZHMoKSwgc2FtcGxlUG9pbnRlckNvb3Jkcyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBtb3Rpb25FdmVudC0+Z2V0SGlzdG9yeVNpemUoKTsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgc2FtcGxlRXZlbnRUaW1lcyArPSAxOworICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3JkcyArPSBwb2ludGVyQ291bnQ7CisgICAgICAgICAgICBtQWxsb2NhdG9yLmFwcGVuZE1vdGlvblNhbXBsZShtb3Rpb25FbnRyeSwgKnNhbXBsZUV2ZW50VGltZXMsIHNhbXBsZVBvaW50ZXJDb29yZHMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtb3Rpb25FbnRyeTsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpyZXNldEtleVJlcGVhdExvY2tlZCgpIHsKKyAgICBpZiAobUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeSkgeworICAgICAgICBtQWxsb2NhdG9yLnJlbGVhc2VLZXlFbnRyeShtS2V5UmVwZWF0U3RhdGUubGFzdEtleUVudHJ5KTsKKyAgICAgICAgbUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeSA9IE5VTEw7CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6cHJlZW1wdElucHV0RGlzcGF0Y2goKSB7CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJwcmVlbXB0SW5wdXREaXNwYXRjaCIpOworI2VuZGlmCisKKyAgICBib29sIHByZWVtcHRlZE9uZSA9IGZhbHNlOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQWN0aXZlQ29ubmVjdGlvbnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtQWN0aXZlQ29ubmVjdGlvbnNbaV07CisgICAgICAgICAgICBpZiAoY29ubmVjdGlvbi0+aGFzUGVuZGluZ1N5bmNUYXJnZXQoKSkgeworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgICAgICAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gUHJlZW1wdGVkIHBlbmRpbmcgc3luY2hyb25vdXMgZGlzcGF0Y2giLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUudGFpbC5wcmV2LT50YXJnZXRGbGFncyAmPSB+IElucHV0VGFyZ2V0OjpGTEFHX1NZTkM7CisgICAgICAgICAgICAgICAgcHJlZW1wdGVkT25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gLy8gcmVsZWFzZSBsb2NrCisKKyAgICBpZiAocHJlZW1wdGVkT25lKSB7CisgICAgICAgIC8vIFdha2UgdXAgdGhlIHBvbGwgbG9vcCBzbyBpdCBjYW4gZ2V0IGEgaGVhZCBzdGFydCBkaXNwYXRjaGluZyB0aGUgbmV4dCBldmVudC4KKyAgICAgICAgbVBvbGxMb29wLT53YWtlKCk7CisgICAgfQorfQorCitzdGF0dXNfdCBJbnB1dERpc3BhdGNoZXI6OnJlZ2lzdGVySW5wdXRDaGFubmVsKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgeworI2lmIERFQlVHX1JFR0lTVFJBVElPTgorICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IHJlZ2lzdGVySW5wdXRDaGFubmVsIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBpbnQgcmVjZWl2ZUZkOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgcmVjZWl2ZUZkID0gaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCk7CisgICAgICAgIGlmIChtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5pbmRleE9mS2V5KHJlY2VpdmVGZCkgPj0gMCkgeworICAgICAgICAgICAgTE9HVygiQXR0ZW1wdGVkIHRvIHJlZ2lzdGVyIGFscmVhZHkgcmVnaXN0ZXJlZCBpbnB1dCBjaGFubmVsICclcyciLAorICAgICAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisKKyAgICAgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKGlucHV0Q2hhbm5lbCk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGNvbm5lY3Rpb24tPmluaXRpYWxpemUoKTsKKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgTE9HRSgiRmFpbGVkIHRvIGluaXRpYWxpemUgaW5wdXQgcHVibGlzaGVyIGZvciBpbnB1dCBjaGFubmVsICclcycsIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorCisgICAgICAgIG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLmFkZChyZWNlaXZlRmQsIGNvbm5lY3Rpb24pOworCisgICAgICAgIHJ1bkNvbW1hbmRzTG9ja2VkSW50ZXJydXB0aWJsZSgpOworICAgIH0gLy8gcmVsZWFzZSBsb2NrCisKKyAgICBtUG9sbExvb3AtPnNldENhbGxiYWNrKHJlY2VpdmVGZCwgUE9MTElOLCBoYW5kbGVSZWNlaXZlQ2FsbGJhY2ssIHRoaXMpOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgSW5wdXREaXNwYXRjaGVyOjp1bnJlZ2lzdGVySW5wdXRDaGFubmVsKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgeworI2lmIERFQlVHX1JFR0lTVFJBVElPTgorICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IHVucmVnaXN0ZXJJbnB1dENoYW5uZWwiLCBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIGludDMyX3QgcmVjZWl2ZUZkOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgcmVjZWl2ZUZkID0gaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCk7CisgICAgICAgIHNzaXplX3QgY29ubmVjdGlvbkluZGV4ID0gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQuaW5kZXhPZktleShyZWNlaXZlRmQpOworICAgICAgICBpZiAoY29ubmVjdGlvbkluZGV4IDwgMCkgeworICAgICAgICAgICAgTE9HVygiQXR0ZW1wdGVkIHRvIHVucmVnaXN0ZXIgYWxyZWFkeSB1bnJlZ2lzdGVyZWQgaW5wdXQgY2hhbm5lbCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorCisgICAgICAgIHNwPENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgIG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLnJlbW92ZUl0ZW1zQXQoY29ubmVjdGlvbkluZGV4KTsKKworICAgICAgICBjb25uZWN0aW9uLT5zdGF0dXMgPSBDb25uZWN0aW9uOjpTVEFUVVNfWk9NQklFOworCisgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUgPSBub3coKTsKKyAgICAgICAgYWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uLCB0cnVlIC8qYnJva2VuKi8pOworCisgICAgICAgIHJ1bkNvbW1hbmRzTG9ja2VkSW50ZXJydXB0aWJsZSgpOworICAgIH0gLy8gcmVsZWFzZSBsb2NrCisKKyAgICBtUG9sbExvb3AtPnJlbW92ZUNhbGxiYWNrKHJlY2VpdmVGZCk7CisKKyAgICAvLyBXYWtlIHRoZSBwb2xsIGxvb3AgYmVjYXVzZSByZW1vdmluZyB0aGUgY29ubmVjdGlvbiBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBjdXJyZW50CisgICAgLy8gc3luY2hyb25pemF0aW9uIHN0YXRlLgorICAgIG1Qb2xsTG9vcC0+d2FrZSgpOworICAgIHJldHVybiBPSzsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmFjdGl2YXRlQ29ubmVjdGlvbkxvY2tlZChDb25uZWN0aW9uKiBjb25uZWN0aW9uKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQWN0aXZlQ29ubmVjdGlvbnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKG1BY3RpdmVDb25uZWN0aW9ucy5pdGVtQXQoaSkgPT0gY29ubmVjdGlvbikgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIG1BY3RpdmVDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpkZWFjdGl2YXRlQ29ubmVjdGlvbkxvY2tlZChDb25uZWN0aW9uKiBjb25uZWN0aW9uKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQWN0aXZlQ29ubmVjdGlvbnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKG1BY3RpdmVDb25uZWN0aW9ucy5pdGVtQXQoaSkgPT0gY29ubmVjdGlvbikgeworICAgICAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZUF0KGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6b25EaXNwYXRjaEN5Y2xlU3RhcnRlZExvY2tlZCgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pIHsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6Om9uRGlzcGF0Y2hDeWNsZUZpbmlzaGVkTG9ja2VkKAorICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbiwgYm9vbCByZWNvdmVyZWRGcm9tQU5SKSB7CisgICAgaWYgKHJlY292ZXJlZEZyb21BTlIpIHsKKyAgICAgICAgTE9HSSgiY2hhbm5lbCAnJXMnIH4gUmVjb3ZlcmVkIGZyb20gQU5SLiAgJTAxLjFmbXMgc2luY2UgZXZlbnQsICIKKyAgICAgICAgICAgICAgICAiJTAxLjFmbXMgc2luY2UgZGlzcGF0Y2gsICUwMS4xZm1zIHNpbmNlIEFOUiIsCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldEV2ZW50TGF0ZW5jeU1pbGxpcyhjdXJyZW50VGltZSksCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0RGlzcGF0Y2hMYXRlbmN5TWlsbGlzKGN1cnJlbnRUaW1lKSwKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRBTlJMYXRlbmN5TWlsbGlzKGN1cnJlbnRUaW1lKSk7CisKKyAgICAgICAgQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkgPSBwb3N0Q29tbWFuZExvY2tlZCgKKyAgICAgICAgICAgICAgICAmIElucHV0RGlzcGF0Y2hlcjo6ZG9Ob3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5STG9ja2VkSW50ZXJydXB0aWJsZSk7CisgICAgICAgIGNvbW1hbmRFbnRyeS0+Y29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6b25EaXNwYXRjaEN5Y2xlQU5STG9ja2VkKAorICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbikgeworICAgIExPR0koImNoYW5uZWwgJyVzJyB+IE5vdCByZXNwb25kaW5nISAgJTAxLjFmbXMgc2luY2UgZXZlbnQsICUwMS4xZm1zIHNpbmNlIGRpc3BhdGNoIiwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldEV2ZW50TGF0ZW5jeU1pbGxpcyhjdXJyZW50VGltZSksCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXREaXNwYXRjaExhdGVuY3lNaWxsaXMoY3VycmVudFRpbWUpKTsKKworICAgIENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5ID0gcG9zdENvbW1hbmRMb2NrZWQoCisgICAgICAgICAgICAmIElucHV0RGlzcGF0Y2hlcjo6ZG9Ob3RpZnlJbnB1dENoYW5uZWxBTlJMb2NrZWRJbnRlcnJ1cHRpYmxlKTsKKyAgICBjb21tYW5kRW50cnktPmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6b25EaXNwYXRjaEN5Y2xlQnJva2VuTG9ja2VkKAorICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbikgeworICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENoYW5uZWwgaXMgdW5yZWNvdmVyYWJseSBicm9rZW4gYW5kIHdpbGwgYmUgZGlzcG9zZWQhIiwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisKKyAgICBDb21tYW5kRW50cnkqIGNvbW1hbmRFbnRyeSA9IHBvc3RDb21tYW5kTG9ja2VkKAorICAgICAgICAgICAgJiBJbnB1dERpc3BhdGNoZXI6OmRvTm90aWZ5SW5wdXRDaGFubmVsQnJva2VuTG9ja2VkSW50ZXJydXB0aWJsZSk7CisgICAgY29tbWFuZEVudHJ5LT5jb25uZWN0aW9uID0gY29ubmVjdGlvbjsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmRvTm90aWZ5SW5wdXRDaGFubmVsQnJva2VuTG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkpIHsKKyAgICBzcDxDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gY29tbWFuZEVudHJ5LT5jb25uZWN0aW9uOworCisgICAgaWYgKGNvbm5lY3Rpb24tPnN0YXR1cyAhPSBDb25uZWN0aW9uOjpTVEFUVVNfWk9NQklFKSB7CisgICAgICAgIG1Mb2NrLnVubG9jaygpOworCisgICAgICAgIG1Qb2xpY3ktPm5vdGlmeUlucHV0Q2hhbm5lbEJyb2tlbihjb25uZWN0aW9uLT5pbnB1dENoYW5uZWwpOworCisgICAgICAgIG1Mb2NrLmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpkb05vdGlmeUlucHV0Q2hhbm5lbEFOUkxvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgIENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5KSB7CisgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGNvbW1hbmRFbnRyeS0+Y29ubmVjdGlvbjsKKworICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgIT0gQ29ubmVjdGlvbjo6U1RBVFVTX1pPTUJJRSkgeworICAgICAgICBtTG9jay51bmxvY2soKTsKKworICAgICAgICBuc2Vjc190IG5ld1RpbWVvdXQ7CisgICAgICAgIGJvb2wgcmVzdW1lID0gbVBvbGljeS0+bm90aWZ5SW5wdXRDaGFubmVsQU5SKGNvbm5lY3Rpb24tPmlucHV0Q2hhbm5lbCwgbmV3VGltZW91dCk7CisKKyAgICAgICAgbUxvY2subG9jaygpOworCisgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUgPSBub3coKTsKKyAgICAgICAgaWYgKHJlc3VtZSkgeworICAgICAgICAgICAgcmVzdW1lQWZ0ZXJUaW1lb3V0RGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbiwgbmV3VGltZW91dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhYm9ydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIGZhbHNlIC8qKG5vdCkgYnJva2VuKi8pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6ZG9Ob3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5STG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkpIHsKKyAgICBzcDxDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gY29tbWFuZEVudHJ5LT5jb25uZWN0aW9uOworCisgICAgaWYgKGNvbm5lY3Rpb24tPnN0YXR1cyAhPSBDb25uZWN0aW9uOjpTVEFUVVNfWk9NQklFKSB7CisgICAgICAgIG1Mb2NrLnVubG9jaygpOworCisgICAgICAgIG1Qb2xpY3ktPm5vdGlmeUlucHV0Q2hhbm5lbFJlY292ZXJlZEZyb21BTlIoY29ubmVjdGlvbi0+aW5wdXRDaGFubmVsKTsKKworICAgICAgICBtTG9jay5sb2NrKCk7CisgICAgfQorfQorCisKKy8vIC0tLSBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvciAtLS0KKworSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6OkFsbG9jYXRvcigpIHsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6aW5pdGlhbGl6ZUV2ZW50RW50cnkoRXZlbnRFbnRyeSogZW50cnksIGludDMyX3QgdHlwZSwKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWUpIHsKKyAgICBlbnRyeS0+dHlwZSA9IHR5cGU7CisgICAgZW50cnktPnJlZkNvdW50ID0gMTsKKyAgICBlbnRyeS0+ZGlzcGF0Y2hJblByb2dyZXNzID0gZmFsc2U7CisgICAgZW50cnktPmV2ZW50VGltZSA9IGV2ZW50VGltZTsKKyAgICBlbnRyeS0+aW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1BFTkRJTkc7CisgICAgZW50cnktPmluamVjdG9yUGlkID0gLTE7CisgICAgZW50cnktPmluamVjdG9yVWlkID0gLTE7Cit9CisKK0lucHV0RGlzcGF0Y2hlcjo6Q29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSoKK0lucHV0RGlzcGF0Y2hlcjo6QWxsb2NhdG9yOjpvYnRhaW5Db25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5KG5zZWNzX3QgZXZlbnRUaW1lKSB7CisgICAgQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSogZW50cnkgPSBtQ29uZmlndXJhdGlvbkNoYW5nZUVudHJ5UG9vbC5hbGxvYygpOworICAgIGluaXRpYWxpemVFdmVudEVudHJ5KGVudHJ5LCBFdmVudEVudHJ5OjpUWVBFX0NPTkZJR1VSQVRJT05fQ0hBTkdFRCwgZXZlbnRUaW1lKTsKKyAgICByZXR1cm4gZW50cnk7Cit9CisKK0lucHV0RGlzcGF0Y2hlcjo6S2V5RW50cnkqIElucHV0RGlzcGF0Y2hlcjo6QWxsb2NhdG9yOjpvYnRhaW5LZXlFbnRyeShuc2Vjc190IGV2ZW50VGltZSwKKyAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUsIHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGFjdGlvbiwKKyAgICAgICAgaW50MzJfdCBmbGFncywgaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IHNjYW5Db2RlLCBpbnQzMl90IG1ldGFTdGF0ZSwKKyAgICAgICAgaW50MzJfdCByZXBlYXRDb3VudCwgbnNlY3NfdCBkb3duVGltZSkgeworICAgIEtleUVudHJ5KiBlbnRyeSA9IG1LZXlFbnRyeVBvb2wuYWxsb2MoKTsKKyAgICBpbml0aWFsaXplRXZlbnRFbnRyeShlbnRyeSwgRXZlbnRFbnRyeTo6VFlQRV9LRVksIGV2ZW50VGltZSk7CisKKyAgICBlbnRyeS0+ZGV2aWNlSWQgPSBkZXZpY2VJZDsKKyAgICBlbnRyeS0+bmF0dXJlID0gbmF0dXJlOworICAgIGVudHJ5LT5wb2xpY3lGbGFncyA9IHBvbGljeUZsYWdzOworICAgIGVudHJ5LT5hY3Rpb24gPSBhY3Rpb247CisgICAgZW50cnktPmZsYWdzID0gZmxhZ3M7CisgICAgZW50cnktPmtleUNvZGUgPSBrZXlDb2RlOworICAgIGVudHJ5LT5zY2FuQ29kZSA9IHNjYW5Db2RlOworICAgIGVudHJ5LT5tZXRhU3RhdGUgPSBtZXRhU3RhdGU7CisgICAgZW50cnktPnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7CisgICAgZW50cnktPmRvd25UaW1lID0gZG93blRpbWU7CisgICAgcmV0dXJuIGVudHJ5OworfQorCitJbnB1dERpc3BhdGNoZXI6Ok1vdGlvbkVudHJ5KiBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6b2J0YWluTW90aW9uRW50cnkobnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgIGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlLCB1aW50MzJfdCBwb2xpY3lGbGFncywgaW50MzJfdCBhY3Rpb24sCisgICAgICAgIGludDMyX3QgbWV0YVN0YXRlLCBpbnQzMl90IGVkZ2VGbGFncywgZmxvYXQgeFByZWNpc2lvbiwgZmxvYXQgeVByZWNpc2lvbiwKKyAgICAgICAgbnNlY3NfdCBkb3duVGltZSwgdWludDMyX3QgcG9pbnRlckNvdW50LAorICAgICAgICBjb25zdCBpbnQzMl90KiBwb2ludGVySWRzLCBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKSB7CisgICAgTW90aW9uRW50cnkqIGVudHJ5ID0gbU1vdGlvbkVudHJ5UG9vbC5hbGxvYygpOworICAgIGluaXRpYWxpemVFdmVudEVudHJ5KGVudHJ5LCBFdmVudEVudHJ5OjpUWVBFX01PVElPTiwgZXZlbnRUaW1lKTsKKworICAgIGVudHJ5LT5ldmVudFRpbWUgPSBldmVudFRpbWU7CisgICAgZW50cnktPmRldmljZUlkID0gZGV2aWNlSWQ7CisgICAgZW50cnktPm5hdHVyZSA9IG5hdHVyZTsKKyAgICBlbnRyeS0+cG9saWN5RmxhZ3MgPSBwb2xpY3lGbGFnczsKKyAgICBlbnRyeS0+YWN0aW9uID0gYWN0aW9uOworICAgIGVudHJ5LT5tZXRhU3RhdGUgPSBtZXRhU3RhdGU7CisgICAgZW50cnktPmVkZ2VGbGFncyA9IGVkZ2VGbGFnczsKKyAgICBlbnRyeS0+eFByZWNpc2lvbiA9IHhQcmVjaXNpb247CisgICAgZW50cnktPnlQcmVjaXNpb24gPSB5UHJlY2lzaW9uOworICAgIGVudHJ5LT5kb3duVGltZSA9IGRvd25UaW1lOworICAgIGVudHJ5LT5wb2ludGVyQ291bnQgPSBwb2ludGVyQ291bnQ7CisgICAgZW50cnktPmZpcnN0U2FtcGxlLmV2ZW50VGltZSA9IGV2ZW50VGltZTsKKyAgICBlbnRyeS0+Zmlyc3RTYW1wbGUubmV4dCA9IE5VTEw7CisgICAgZW50cnktPmxhc3RTYW1wbGUgPSAmIGVudHJ5LT5maXJzdFNhbXBsZTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcG9pbnRlckNvdW50OyBpKyspIHsKKyAgICAgICAgZW50cnktPnBvaW50ZXJJZHNbaV0gPSBwb2ludGVySWRzW2ldOworICAgICAgICBlbnRyeS0+Zmlyc3RTYW1wbGUucG9pbnRlckNvb3Jkc1tpXSA9IHBvaW50ZXJDb29yZHNbaV07CisgICAgfQorICAgIHJldHVybiBlbnRyeTsKK30KKworSW5wdXREaXNwYXRjaGVyOjpEaXNwYXRjaEVudHJ5KiBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6b2J0YWluRGlzcGF0Y2hFbnRyeSgKKyAgICAgICAgRXZlbnRFbnRyeSogZXZlbnRFbnRyeSkgeworICAgIERpc3BhdGNoRW50cnkqIGVudHJ5ID0gbURpc3BhdGNoRW50cnlQb29sLmFsbG9jKCk7CisgICAgZW50cnktPmV2ZW50RW50cnkgPSBldmVudEVudHJ5OworICAgIGV2ZW50RW50cnktPnJlZkNvdW50ICs9IDE7CisgICAgcmV0dXJuIGVudHJ5OworfQorCitJbnB1dERpc3BhdGNoZXI6OkNvbW1hbmRFbnRyeSogSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6Om9idGFpbkNvbW1hbmRFbnRyeShDb21tYW5kIGNvbW1hbmQpIHsKKyAgICBDb21tYW5kRW50cnkqIGVudHJ5ID0gbUNvbW1hbmRFbnRyeVBvb2wuYWxsb2MoKTsKKyAgICBlbnRyeS0+Y29tbWFuZCA9IGNvbW1hbmQ7CisgICAgcmV0dXJuIGVudHJ5OworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6QWxsb2NhdG9yOjpyZWxlYXNlRXZlbnRFbnRyeShFdmVudEVudHJ5KiBlbnRyeSkgeworICAgIHN3aXRjaCAoZW50cnktPnR5cGUpIHsKKyAgICBjYXNlIEV2ZW50RW50cnk6OlRZUEVfQ09ORklHVVJBVElPTl9DSEFOR0VEOgorICAgICAgICByZWxlYXNlQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeShzdGF0aWNfY2FzdDxDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5Kj4oZW50cnkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX0tFWToKKyAgICAgICAgcmVsZWFzZUtleUVudHJ5KHN0YXRpY19jYXN0PEtleUVudHJ5Kj4oZW50cnkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX01PVElPTjoKKyAgICAgICAgcmVsZWFzZU1vdGlvbkVudHJ5KHN0YXRpY19jYXN0PE1vdGlvbkVudHJ5Kj4oZW50cnkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6QWxsb2NhdG9yOjpyZWxlYXNlQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSgKKyAgICAgICAgQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSogZW50cnkpIHsKKyAgICBlbnRyeS0+cmVmQ291bnQgLT0gMTsKKyAgICBpZiAoZW50cnktPnJlZkNvdW50ID09IDApIHsKKyAgICAgICAgbUNvbmZpZ3VyYXRpb25DaGFuZ2VFbnRyeVBvb2wuZnJlZShlbnRyeSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGVudHJ5LT5yZWZDb3VudCA+IDApOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6cmVsZWFzZUtleUVudHJ5KEtleUVudHJ5KiBlbnRyeSkgeworICAgIGVudHJ5LT5yZWZDb3VudCAtPSAxOworICAgIGlmIChlbnRyeS0+cmVmQ291bnQgPT0gMCkgeworICAgICAgICBtS2V5RW50cnlQb29sLmZyZWUoZW50cnkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2VydChlbnRyeS0+cmVmQ291bnQgPiAwKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6OnJlbGVhc2VNb3Rpb25FbnRyeShNb3Rpb25FbnRyeSogZW50cnkpIHsKKyAgICBlbnRyeS0+cmVmQ291bnQgLT0gMTsKKyAgICBpZiAoZW50cnktPnJlZkNvdW50ID09IDApIHsKKyAgICAgICAgZm9yIChNb3Rpb25TYW1wbGUqIHNhbXBsZSA9IGVudHJ5LT5maXJzdFNhbXBsZS5uZXh0OyBzYW1wbGUgIT0gTlVMTDsgKSB7CisgICAgICAgICAgICBNb3Rpb25TYW1wbGUqIG5leHQgPSBzYW1wbGUtPm5leHQ7CisgICAgICAgICAgICBtTW90aW9uU2FtcGxlUG9vbC5mcmVlKHNhbXBsZSk7CisgICAgICAgICAgICBzYW1wbGUgPSBuZXh0OworICAgICAgICB9CisgICAgICAgIG1Nb3Rpb25FbnRyeVBvb2wuZnJlZShlbnRyeSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGVudHJ5LT5yZWZDb3VudCA+IDApOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6cmVsZWFzZURpc3BhdGNoRW50cnkoRGlzcGF0Y2hFbnRyeSogZW50cnkpIHsKKyAgICByZWxlYXNlRXZlbnRFbnRyeShlbnRyeS0+ZXZlbnRFbnRyeSk7CisgICAgbURpc3BhdGNoRW50cnlQb29sLmZyZWUoZW50cnkpOworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6QWxsb2NhdG9yOjpyZWxlYXNlQ29tbWFuZEVudHJ5KENvbW1hbmRFbnRyeSogZW50cnkpIHsKKyAgICBtQ29tbWFuZEVudHJ5UG9vbC5mcmVlKGVudHJ5KTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6YXBwZW5kTW90aW9uU2FtcGxlKE1vdGlvbkVudHJ5KiBtb3Rpb25FbnRyeSwKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWUsIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMpIHsKKyAgICBNb3Rpb25TYW1wbGUqIHNhbXBsZSA9IG1Nb3Rpb25TYW1wbGVQb29sLmFsbG9jKCk7CisgICAgc2FtcGxlLT5ldmVudFRpbWUgPSBldmVudFRpbWU7CisgICAgdWludDMyX3QgcG9pbnRlckNvdW50ID0gbW90aW9uRW50cnktPnBvaW50ZXJDb3VudDsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcG9pbnRlckNvdW50OyBpKyspIHsKKyAgICAgICAgc2FtcGxlLT5wb2ludGVyQ29vcmRzW2ldID0gcG9pbnRlckNvb3Jkc1tpXTsKKyAgICB9CisKKyAgICBzYW1wbGUtPm5leHQgPSBOVUxMOworICAgIG1vdGlvbkVudHJ5LT5sYXN0U2FtcGxlLT5uZXh0ID0gc2FtcGxlOworICAgIG1vdGlvbkVudHJ5LT5sYXN0U2FtcGxlID0gc2FtcGxlOworfQorCisvLyAtLS0gSW5wdXREaXNwYXRjaGVyOjpDb25uZWN0aW9uIC0tLQorCitJbnB1dERpc3BhdGNoZXI6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24oY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKSA6CisgICAgICAgIHN0YXR1cyhTVEFUVVNfTk9STUFMKSwgaW5wdXRDaGFubmVsKGlucHV0Q2hhbm5lbCksIGlucHV0UHVibGlzaGVyKGlucHV0Q2hhbm5lbCksCisgICAgICAgIG5leHRUaW1lb3V0VGltZShMT05HX0xPTkdfTUFYKSwKKyAgICAgICAgbGFzdEV2ZW50VGltZShMT05HX0xPTkdfTUFYKSwgbGFzdERpc3BhdGNoVGltZShMT05HX0xPTkdfTUFYKSwKKyAgICAgICAgbGFzdEFOUlRpbWUoTE9OR19MT05HX01BWCkgeworfQorCitJbnB1dERpc3BhdGNoZXI6OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKCkgeworfQorCitzdGF0dXNfdCBJbnB1dERpc3BhdGNoZXI6OkNvbm5lY3Rpb246OmluaXRpYWxpemUoKSB7CisgICAgcmV0dXJuIGlucHV0UHVibGlzaGVyLmluaXRpYWxpemUoKTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OkNvbm5lY3Rpb246OnNldE5leHRUaW1lb3V0VGltZShuc2Vjc190IGN1cnJlbnRUaW1lLCBuc2Vjc190IHRpbWVvdXQpIHsKKyAgICBuZXh0VGltZW91dFRpbWUgPSAodGltZW91dCA+PSAwKSA/IGN1cnJlbnRUaW1lICsgdGltZW91dCA6IExPTkdfTE9OR19NQVg7Cit9CisKK2NvbnN0IGNoYXIqIElucHV0RGlzcGF0Y2hlcjo6Q29ubmVjdGlvbjo6Z2V0U3RhdHVzTGFiZWwoKSBjb25zdCB7CisgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICBjYXNlIFNUQVRVU19OT1JNQUw6CisgICAgICAgIHJldHVybiAiTk9STUFMIjsKKworICAgIGNhc2UgU1RBVFVTX0JST0tFTjoKKyAgICAgICAgcmV0dXJuICJCUk9LRU4iOworCisgICAgY2FzZSBTVEFUVVNfTk9UX1JFU1BPTkRJTkc6CisgICAgICAgIHJldHVybiAiTk9UX1JFU1BPTkRJTkciOworCisgICAgY2FzZSBTVEFUVVNfWk9NQklFOgorICAgICAgICByZXR1cm4gIlpPTUJJRSI7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gIlVOS05PV04iOworICAgIH0KK30KKworSW5wdXREaXNwYXRjaGVyOjpEaXNwYXRjaEVudHJ5KiBJbnB1dERpc3BhdGNoZXI6OkNvbm5lY3Rpb246OmZpbmRRdWV1ZWREaXNwYXRjaEVudHJ5Rm9yRXZlbnQoCisgICAgICAgIGNvbnN0IEV2ZW50RW50cnkqIGV2ZW50RW50cnkpIGNvbnN0IHsKKyAgICBmb3IgKERpc3BhdGNoRW50cnkqIGRpc3BhdGNoRW50cnkgPSBvdXRib3VuZFF1ZXVlLnRhaWwucHJldjsKKyAgICAgICAgICAgIGRpc3BhdGNoRW50cnkgIT0gJiBvdXRib3VuZFF1ZXVlLmhlYWQ7IGRpc3BhdGNoRW50cnkgPSBkaXNwYXRjaEVudHJ5LT5wcmV2KSB7CisgICAgICAgIGlmIChkaXNwYXRjaEVudHJ5LT5ldmVudEVudHJ5ID09IGV2ZW50RW50cnkpIHsKKyAgICAgICAgICAgIHJldHVybiBkaXNwYXRjaEVudHJ5OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisvLyAtLS0gSW5wdXREaXNwYXRjaGVyOjpDb21tYW5kRW50cnkgLS0tCisKK0lucHV0RGlzcGF0Y2hlcjo6Q29tbWFuZEVudHJ5OjpDb21tYW5kRW50cnkoKSB7Cit9CisKK0lucHV0RGlzcGF0Y2hlcjo6Q29tbWFuZEVudHJ5Ojp+Q29tbWFuZEVudHJ5KCkgeworfQorCisKKy8vIC0tLSBJbnB1dERpc3BhdGNoZXJUaHJlYWQgLS0tCisKK0lucHV0RGlzcGF0Y2hlclRocmVhZDo6SW5wdXREaXNwYXRjaGVyVGhyZWFkKGNvbnN0IHNwPElucHV0RGlzcGF0Y2hlckludGVyZmFjZT4mIGRpc3BhdGNoZXIpIDoKKyAgICAgICAgVGhyZWFkKC8qY2FuQ2FsbEphdmEqLyB0cnVlKSwgbURpc3BhdGNoZXIoZGlzcGF0Y2hlcikgeworfQorCitJbnB1dERpc3BhdGNoZXJUaHJlYWQ6On5JbnB1dERpc3BhdGNoZXJUaHJlYWQoKSB7Cit9CisKK2Jvb2wgSW5wdXREaXNwYXRjaGVyVGhyZWFkOjp0aHJlYWRMb29wKCkgeworICAgIG1EaXNwYXRjaGVyLT5kaXNwYXRjaE9uY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbGlicy91aS9JbnB1dE1hbmFnZXIuY3BwIGIvbGlicy91aS9JbnB1dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZDE1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL0lucHV0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisvLworLy8gVGhlIGlucHV0IG1hbmFnZXIuCisvLworI2RlZmluZSBMT0dfVEFHICJJbnB1dE1hbmFnZXIiCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKworI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dFJlYWRlci5oPgorI2luY2x1ZGUgPHVpL0lucHV0RGlzcGF0Y2hlci5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0lucHV0TWFuYWdlcjo6SW5wdXRNYW5hZ2VyKAorICAgICAgICBjb25zdCBzcDxFdmVudEh1YkludGVyZmFjZT4mIGV2ZW50SHViLAorICAgICAgICBjb25zdCBzcDxJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZT4mIHJlYWRlclBvbGljeSwKKyAgICAgICAgY29uc3Qgc3A8SW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlPiYgZGlzcGF0Y2hlclBvbGljeSkgeworICAgIG1EaXNwYXRjaGVyID0gbmV3IElucHV0RGlzcGF0Y2hlcihkaXNwYXRjaGVyUG9saWN5KTsKKyAgICBtUmVhZGVyID0gbmV3IElucHV0UmVhZGVyKGV2ZW50SHViLCByZWFkZXJQb2xpY3ksIG1EaXNwYXRjaGVyKTsKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK0lucHV0TWFuYWdlcjo6SW5wdXRNYW5hZ2VyKAorICAgICAgICBjb25zdCBzcDxJbnB1dFJlYWRlckludGVyZmFjZT4mIHJlYWRlciwKKyAgICAgICAgY29uc3Qgc3A8SW5wdXREaXNwYXRjaGVySW50ZXJmYWNlPiYgZGlzcGF0Y2hlcikgOgorICAgICAgICBtUmVhZGVyKHJlYWRlciksCisgICAgICAgIG1EaXNwYXRjaGVyKGRpc3BhdGNoZXIpIHsKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK0lucHV0TWFuYWdlcjo6fklucHV0TWFuYWdlcigpIHsKKyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgSW5wdXRNYW5hZ2VyOjppbml0aWFsaXplKCkgeworICAgIG1SZWFkZXJUaHJlYWQgPSBuZXcgSW5wdXRSZWFkZXJUaHJlYWQobVJlYWRlcik7CisgICAgbURpc3BhdGNoZXJUaHJlYWQgPSBuZXcgSW5wdXREaXNwYXRjaGVyVGhyZWFkKG1EaXNwYXRjaGVyKTsKK30KKworc3RhdHVzX3QgSW5wdXRNYW5hZ2VyOjpzdGFydCgpIHsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBtRGlzcGF0Y2hlclRocmVhZC0+cnVuKCJJbnB1dERpc3BhdGNoZXIiLCBQUklPUklUWV9VUkdFTlRfRElTUExBWSk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBMT0dFKCJDb3VsZCBub3Qgc3RhcnQgSW5wdXREaXNwYXRjaGVyIHRocmVhZCBkdWUgdG8gZXJyb3IgJWQuIiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBtUmVhZGVyVGhyZWFkLT5ydW4oIklucHV0UmVhZGVyIiwgUFJJT1JJVFlfVVJHRU5UX0RJU1BMQVkpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgTE9HRSgiQ291bGQgbm90IHN0YXJ0IElucHV0UmVhZGVyIHRocmVhZCBkdWUgdG8gZXJyb3IgJWQuIiwgcmVzdWx0KTsKKworICAgICAgICBtRGlzcGF0Y2hlclRocmVhZC0+cmVxdWVzdEV4aXQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0TWFuYWdlcjo6c3RvcCgpIHsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBtUmVhZGVyVGhyZWFkLT5yZXF1ZXN0RXhpdEFuZFdhaXQoKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIExPR1coIkNvdWxkIG5vdCBzdG9wIElucHV0UmVhZGVyIHRocmVhZCBkdWUgdG8gZXJyb3IgJWQuIiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBtRGlzcGF0Y2hlclRocmVhZC0+cmVxdWVzdEV4aXRBbmRXYWl0KCk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBMT0dXKCJDb3VsZCBub3Qgc3RvcCBJbnB1dERpc3BhdGNoZXIgdGhyZWFkIGR1ZSB0byBlcnJvciAlZC4iLCByZXN1bHQpOworICAgIH0KKworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgSW5wdXRNYW5hZ2VyOjpyZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpIHsKKyAgICByZXR1cm4gbURpc3BhdGNoZXItPnJlZ2lzdGVySW5wdXRDaGFubmVsKGlucHV0Q2hhbm5lbCk7Cit9CisKK3N0YXR1c190IElucHV0TWFuYWdlcjo6dW5yZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpIHsKKyAgICByZXR1cm4gbURpc3BhdGNoZXItPnVucmVnaXN0ZXJJbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKTsKK30KKworaW50MzJfdCBJbnB1dE1hbmFnZXI6OmluamVjdElucHV0RXZlbnQoY29uc3QgSW5wdXRFdmVudCogZXZlbnQsCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIGJvb2wgc3luYywgaW50MzJfdCB0aW1lb3V0TWlsbGlzKSB7CisgICAgcmV0dXJuIG1EaXNwYXRjaGVyLT5pbmplY3RJbnB1dEV2ZW50KGV2ZW50LCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQsIHN5bmMsIHRpbWVvdXRNaWxsaXMpOworfQorCit2b2lkIElucHV0TWFuYWdlcjo6cHJlZW1wdElucHV0RGlzcGF0Y2goKSB7CisgICAgbURpc3BhdGNoZXItPnByZWVtcHRJbnB1dERpc3BhdGNoKCk7Cit9CisKK3ZvaWQgSW5wdXRNYW5hZ2VyOjpnZXRJbnB1dENvbmZpZ3VyYXRpb24oSW5wdXRDb25maWd1cmF0aW9uKiBvdXRDb25maWd1cmF0aW9uKSBjb25zdCB7CisgICAgbVJlYWRlci0+Z2V0Q3VycmVudElucHV0Q29uZmlndXJhdGlvbihvdXRDb25maWd1cmF0aW9uKTsKK30KKworaW50MzJfdCBJbnB1dE1hbmFnZXI6OmdldFNjYW5Db2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICBpbnQzMl90IHNjYW5Db2RlKSBjb25zdCB7CisgICAgcmV0dXJuIG1SZWFkZXItPmdldEN1cnJlbnRTY2FuQ29kZVN0YXRlKGRldmljZUlkLCBkZXZpY2VDbGFzc2VzLCBzY2FuQ29kZSk7Cit9CisKK2ludDMyX3QgSW5wdXRNYW5hZ2VyOjpnZXRLZXlDb2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICBpbnQzMl90IGtleUNvZGUpIGNvbnN0IHsKKyAgICByZXR1cm4gbVJlYWRlci0+Z2V0Q3VycmVudEtleUNvZGVTdGF0ZShkZXZpY2VJZCwgZGV2aWNlQ2xhc3Nlcywga2V5Q29kZSk7Cit9CisKK2ludDMyX3QgSW5wdXRNYW5hZ2VyOjpnZXRTd2l0Y2hTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsIGludDMyX3Qgc3cpIGNvbnN0IHsKKyAgICByZXR1cm4gbVJlYWRlci0+Z2V0Q3VycmVudFN3aXRjaFN0YXRlKGRldmljZUlkLCBkZXZpY2VDbGFzc2VzLCBzdyk7Cit9CisKK2Jvb2wgSW5wdXRNYW5hZ2VyOjpoYXNLZXlzKHNpemVfdCBudW1Db2RlcywgY29uc3QgaW50MzJfdCoga2V5Q29kZXMsIHVpbnQ4X3QqIG91dEZsYWdzKSBjb25zdCB7CisgICAgcmV0dXJuIG1SZWFkZXItPmhhc0tleXMobnVtQ29kZXMsIGtleUNvZGVzLCBvdXRGbGFncyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdWkvSW5wdXRSZWFkZXIuY3BwIGIvbGlicy91aS9JbnB1dFJlYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk5MDI3YwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvdWkvSW5wdXRSZWFkZXIuY3BwCkBAIC0wLDAgKzEsMjA1MCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisvLyBUaGUgaW5wdXQgcmVhZGVyLgorLy8KKyNkZWZpbmUgTE9HX1RBRyAiSW5wdXRSZWFkZXIiCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGZvciBlYWNoIHJhdyBldmVudCByZWNlaXZlZCBmcm9tIHRoZSBFdmVudEh1Yi4KKyNkZWZpbmUgREVCVUdfUkFXX0VWRU5UUyAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCB0b3VjaCBzY3JlZW4gZmlsdGVyaW5nIGhhY2tzLgorI2RlZmluZSBERUJVR19IQUNLUyAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCB2aXJ0dWFsIGtleSBwcm9jZXNzaW5nLgorI2RlZmluZSBERUJVR19WSVJUVUFMX0tFWVMgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgcG9pbnRlcnMuCisjZGVmaW5lIERFQlVHX1BPSU5URVJTIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IHBvaW50ZXIgYXNzaWdubWVudCBjYWxjdWxhdGlvbnMuCisjZGVmaW5lIERFQlVHX1BPSU5URVJfQVNTSUdOTUVOVCAwCisKKyNpbmNsdWRlIDxjdXRpbHMvbG9nLmg+CisjaW5jbHVkZSA8dWkvSW5wdXRSZWFkZXIuaD4KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisKKy8qKiBBbW91bnQgdGhhdCB0cmFja2JhbGwgbmVlZHMgdG8gbW92ZSBpbiBvcmRlciB0byBnZW5lcmF0ZSBhIGtleSBldmVudC4gKi8KKyNkZWZpbmUgVFJBQ0tCQUxMX01PVkVNRU5UX1RIUkVTSE9MRCA2CisKKy8qIFNsb3AgZGlzdGFuY2UgZm9yIGp1bXB5IHBvaW50ZXIgZGV0ZWN0aW9uLgorICogVGhlIHZlcnRpY2FsIHJhbmdlIG9mIHRoZSBzY3JlZW4gZGl2aWRlZCBieSB0aGlzIGlzIG91ciBlcHNpbG9uIHZhbHVlLiAqLworI2RlZmluZSBKVU1QWV9FUFNJTE9OX0RJVklTT1IgMjEyCisKKy8qIE51bWJlciBvZiBqdW1weSBwb2ludHMgdG8gZHJvcCBmb3IgdG91Y2hzY3JlZW5zIHRoYXQgbmVlZCBpdC4gKi8KKyNkZWZpbmUgSlVNUFlfVFJBTlNJVElPTl9EUk9QUyAzCisjZGVmaW5lIEpVTVBZX0RST1BfTElNSVQgMworCisvKiBNYXhpbXVtIHNxdWFyZWQgZGlzdGFuY2UgZm9yIGF2ZXJhZ2luZy4KKyAqIElmIG1vdmluZyBmYXJ0aGVyIHRoYW4gdGhpcywgdHVybiBvZiBhdmVyYWdpbmcgdG8gYXZvaWQgbGFnIGluIHJlc3BvbnNlLiAqLworI2RlZmluZSBBVkVSQUdJTkdfRElTVEFOQ0VfTElNSVQgKDc1ICogNzUpCisKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0gU3RhdGljIEZ1bmN0aW9ucyAtLS0KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBzdGF0aWMgVCBhYnMoY29uc3QgVCYgdmFsdWUpIHsKKyAgICByZXR1cm4gdmFsdWUgPCAwID8gLSB2YWx1ZSA6IHZhbHVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHN0YXRpYyBUIG1pbihjb25zdCBUJiBhLCBjb25zdCBUJiBiKSB7CisgICAgcmV0dXJuIGEgPCBiID8gYSA6IGI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgc3RhdGljIHZvaWQgc3dhcChUJiBhLCBUJiBiKSB7CisgICAgVCB0ZW1wID0gYTsKKyAgICBhID0gYjsKKyAgICBiID0gdGVtcDsKK30KKworCitpbnQzMl90IHVwZGF0ZU1ldGFTdGF0ZShpbnQzMl90IGtleUNvZGUsIGJvb2wgZG93biwgaW50MzJfdCBvbGRNZXRhU3RhdGUpIHsKKyAgICBpbnQzMl90IG1hc2s7CisgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAgY2FzZSBLRVlDT0RFX0FMVF9MRUZUOgorICAgICAgICBtYXNrID0gTUVUQV9BTFRfTEVGVF9PTjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLRVlDT0RFX0FMVF9SSUdIVDoKKyAgICAgICAgbWFzayA9IE1FVEFfQUxUX1JJR0hUX09OOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtFWUNPREVfU0hJRlRfTEVGVDoKKyAgICAgICAgbWFzayA9IE1FVEFfU0hJRlRfTEVGVF9PTjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLRVlDT0RFX1NISUZUX1JJR0hUOgorICAgICAgICBtYXNrID0gTUVUQV9TSElGVF9SSUdIVF9PTjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLRVlDT0RFX1NZTToKKyAgICAgICAgbWFzayA9IE1FVEFfU1lNX09OOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gb2xkTWV0YVN0YXRlOworICAgIH0KKworICAgIGludDMyX3QgbmV3TWV0YVN0YXRlID0gZG93biA/IG9sZE1ldGFTdGF0ZSB8IG1hc2sgOiBvbGRNZXRhU3RhdGUgJiB+IG1hc2sKKyAgICAgICAgICAgICYgfiAoTUVUQV9BTFRfT04gfCBNRVRBX1NISUZUX09OKTsKKworICAgIGlmIChuZXdNZXRhU3RhdGUgJiAoTUVUQV9BTFRfTEVGVF9PTiB8IE1FVEFfQUxUX1JJR0hUX09OKSkgeworICAgICAgICBuZXdNZXRhU3RhdGUgfD0gTUVUQV9BTFRfT047CisgICAgfQorCisgICAgaWYgKG5ld01ldGFTdGF0ZSAmIChNRVRBX1NISUZUX0xFRlRfT04gfCBNRVRBX1NISUZUX1JJR0hUX09OKSkgeworICAgICAgICBuZXdNZXRhU3RhdGUgfD0gTUVUQV9TSElGVF9PTjsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3TWV0YVN0YXRlOworfQorCitzdGF0aWMgY29uc3QgaW50MzJfdCBrZXlDb2RlUm90YXRpb25NYXBbXVs0XSA9IHsKKyAgICAgICAgLy8ga2V5IGNvZGVzIGVudW1lcmF0ZWQgY291bnRlci1jbG9ja3dpc2Ugd2l0aCB0aGUgb3JpZ2luYWwgKHVucm90YXRlZCkga2V5IGZpcnN0CisgICAgICAgIC8vIG5vIHJvdGF0aW9uLCAgICAgICAgOTAgZGVncmVlIHJvdGF0aW9uLCAgMTgwIGRlZ3JlZSByb3RhdGlvbiwgMjcwIGRlZ3JlZSByb3RhdGlvbgorICAgICAgICB7IEtFWUNPREVfRFBBRF9ET1dOLCAgIEtFWUNPREVfRFBBRF9SSUdIVCwgIEtFWUNPREVfRFBBRF9VUCwgICAgIEtFWUNPREVfRFBBRF9MRUZUIH0sCisgICAgICAgIHsgS0VZQ09ERV9EUEFEX1JJR0hULCAgS0VZQ09ERV9EUEFEX1VQLCAgICAgS0VZQ09ERV9EUEFEX0xFRlQsICAgS0VZQ09ERV9EUEFEX0RPV04gfSwKKyAgICAgICAgeyBLRVlDT0RFX0RQQURfVVAsICAgICBLRVlDT0RFX0RQQURfTEVGVCwgICBLRVlDT0RFX0RQQURfRE9XTiwgICBLRVlDT0RFX0RQQURfUklHSFQgfSwKKyAgICAgICAgeyBLRVlDT0RFX0RQQURfTEVGVCwgICBLRVlDT0RFX0RQQURfRE9XTiwgICBLRVlDT0RFX0RQQURfUklHSFQsICBLRVlDT0RFX0RQQURfVVAgfSwKK307CitzdGF0aWMgY29uc3QgaW50IGtleUNvZGVSb3RhdGlvbk1hcFNpemUgPQorICAgICAgICBzaXplb2Yoa2V5Q29kZVJvdGF0aW9uTWFwKSAvIHNpemVvZihrZXlDb2RlUm90YXRpb25NYXBbMF0pOworCitpbnQzMl90IHJvdGF0ZUtleUNvZGUoaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IG9yaWVudGF0aW9uKSB7CisgICAgaWYgKG9yaWVudGF0aW9uICE9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpST1RBVElPTl8wKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2V5Q29kZVJvdGF0aW9uTWFwU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoa2V5Q29kZSA9PSBrZXlDb2RlUm90YXRpb25NYXBbaV1bMF0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5Q29kZVJvdGF0aW9uTWFwW2ldW29yaWVudGF0aW9uXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ga2V5Q29kZTsKK30KKworCisvLyAtLS0gSW5wdXREZXZpY2UgLS0tCisKK0lucHV0RGV2aWNlOjpJbnB1dERldmljZShpbnQzMl90IGlkLCB1aW50MzJfdCBjbGFzc2VzLCBTdHJpbmc4IG5hbWUpIDoKKyAgICBpZChpZCksIGNsYXNzZXMoY2xhc3NlcyksIG5hbWUobmFtZSksIGlnbm9yZWQoZmFsc2UpIHsKK30KKwordm9pZCBJbnB1dERldmljZTo6cmVzZXQoKSB7CisgICAgaWYgKGlzS2V5Ym9hcmQoKSkgeworICAgICAgICBrZXlib2FyZC5yZXNldCgpOworICAgIH0KKworICAgIGlmIChpc1RyYWNrYmFsbCgpKSB7CisgICAgICAgIHRyYWNrYmFsbC5yZXNldCgpOworICAgIH0KKworICAgIGlmIChpc011bHRpVG91Y2hTY3JlZW4oKSkgeworICAgICAgICBtdWx0aVRvdWNoU2NyZWVuLnJlc2V0KCk7CisgICAgfSBlbHNlIGlmIChpc1NpbmdsZVRvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgc2luZ2xlVG91Y2hTY3JlZW4ucmVzZXQoKTsKKyAgICB9CisKKyAgICBpZiAoaXNUb3VjaFNjcmVlbigpKSB7CisgICAgICAgIHRvdWNoU2NyZWVuLnJlc2V0KCk7CisgICAgfQorfQorCisKKy8vIC0tLSBJbnB1dERldmljZTo6VG91Y2hEYXRhIC0tLQorCit2b2lkIElucHV0RGV2aWNlOjpUb3VjaERhdGE6OmNvcHlGcm9tKGNvbnN0IFRvdWNoRGF0YSYgb3RoZXIpIHsKKyAgICBwb2ludGVyQ291bnQgPSBvdGhlci5wb2ludGVyQ291bnQ7CisgICAgaWRCaXRzID0gb3RoZXIuaWRCaXRzOworCisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIHBvaW50ZXJzW2ldID0gb3RoZXIucG9pbnRlcnNbaV07CisgICAgICAgIGlkVG9JbmRleFtpXSA9IG90aGVyLmlkVG9JbmRleFtpXTsKKyAgICB9Cit9CisKKworLy8gLS0tIElucHV0RGV2aWNlOjpLZXlib2FyZFN0YXRlIC0tLQorCit2b2lkIElucHV0RGV2aWNlOjpLZXlib2FyZFN0YXRlOjpyZXNldCgpIHsKKyAgICBjdXJyZW50Lm1ldGFTdGF0ZSA9IE1FVEFfTk9ORTsKKyAgICBjdXJyZW50LmRvd25UaW1lID0gMDsKK30KKworCisvLyAtLS0gSW5wdXREZXZpY2U6OlRyYWNrYmFsbFN0YXRlIC0tLQorCit2b2lkIElucHV0RGV2aWNlOjpUcmFja2JhbGxTdGF0ZTo6cmVzZXQoKSB7CisgICAgYWNjdW11bGF0b3IuY2xlYXIoKTsKKyAgICBjdXJyZW50LmRvd24gPSBmYWxzZTsKKyAgICBjdXJyZW50LmRvd25UaW1lID0gMDsKK30KKworCisvLyAtLS0gSW5wdXREZXZpY2U6OlRvdWNoU2NyZWVuU3RhdGUgLS0tCisKK3ZvaWQgSW5wdXREZXZpY2U6OlRvdWNoU2NyZWVuU3RhdGU6OnJlc2V0KCkgeworICAgIGxhc3RUb3VjaC5jbGVhcigpOworICAgIGRvd25UaW1lID0gMDsKKyAgICBjdXJyZW50VmlydHVhbEtleS5kb3duID0gZmFsc2U7CisKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgTUFYX1BPSU5URVJTOyBpKyspIHsKKyAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeVN0YXJ0W2ldID0gMDsKKyAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeUVuZFtpXSA9IDA7CisgICAgfQorCisgICAganVtcHlUb3VjaEZpbHRlci5qdW1weVBvaW50c0Ryb3BwZWQgPSAwOworfQorCitzdHJ1Y3QgUG9pbnRlckRpc3RhbmNlSGVhcEVsZW1lbnQgeworICAgIHVpbnQzMl90IGN1cnJlbnRQb2ludGVySW5kZXggOiA4OworICAgIHVpbnQzMl90IGxhc3RQb2ludGVySW5kZXggOiA4OworICAgIHVpbnQ2NF90IGRpc3RhbmNlIDogNDg7IC8vIHNxdWFyZWQgZGlzdGFuY2UKK307CisKK3ZvaWQgSW5wdXREZXZpY2U6OlRvdWNoU2NyZWVuU3RhdGU6OmNhbGN1bGF0ZVBvaW50ZXJJZHMoKSB7CisgICAgdWludDMyX3QgY3VycmVudFBvaW50ZXJDb3VudCA9IGN1cnJlbnRUb3VjaC5wb2ludGVyQ291bnQ7CisgICAgdWludDMyX3QgbGFzdFBvaW50ZXJDb3VudCA9IGxhc3RUb3VjaC5wb2ludGVyQ291bnQ7CisKKyAgICBpZiAoY3VycmVudFBvaW50ZXJDb3VudCA9PSAwKSB7CisgICAgICAgIC8vIE5vIHBvaW50ZXJzIHRvIGFzc2lnbi4KKyAgICAgICAgY3VycmVudFRvdWNoLmlkQml0cy5jbGVhcigpOworICAgIH0gZWxzZSBpZiAobGFzdFBvaW50ZXJDb3VudCA9PSAwKSB7CisgICAgICAgIC8vIEFsbCBwb2ludGVycyBhcmUgbmV3LgorICAgICAgICBjdXJyZW50VG91Y2guaWRCaXRzLmNsZWFyKCk7CisgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjdXJyZW50UG9pbnRlckNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1tpXS5pZCA9IGk7CisgICAgICAgICAgICBjdXJyZW50VG91Y2guaWRUb0luZGV4W2ldID0gaTsKKyAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5pZEJpdHMubWFya0JpdChpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoY3VycmVudFBvaW50ZXJDb3VudCA9PSAxICYmIGxhc3RQb2ludGVyQ291bnQgPT0gMSkgeworICAgICAgICAvLyBPbmx5IG9uZSBwb2ludGVyIGFuZCBubyBjaGFuZ2UgaW4gY291bnQgc28gaXQgbXVzdCBoYXZlIHRoZSBzYW1lIGlkIGFzIGJlZm9yZS4KKyAgICAgICAgdWludDMyX3QgaWQgPSBsYXN0VG91Y2gucG9pbnRlcnNbMF0uaWQ7CisgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1swXS5pZCA9IGlkOworICAgICAgICBjdXJyZW50VG91Y2guaWRUb0luZGV4W2lkXSA9IDA7CisgICAgICAgIGN1cnJlbnRUb3VjaC5pZEJpdHMudmFsdWUgPSBCaXRTZXQzMjo6dmFsdWVGb3JCaXQoaWQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEdlbmVyYWwgY2FzZS4KKyAgICAgICAgLy8gV2UgYnVpbGQgYSBoZWFwIG9mIHNxdWFyZWQgZXVjbGlkZWFuIGRpc3RhbmNlcyBiZXR3ZWVuIGN1cnJlbnQgYW5kIGxhc3QgcG9pbnRlcnMKKyAgICAgICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGFuZCBsYXN0IHBvaW50ZXIgaW5kaWNlcy4gIFRoZW4sIHdlIGZpbmQgdGhlIGJlc3QKKyAgICAgICAgLy8gbWF0Y2ggKGJ5IGRpc3RhbmNlKSBmb3IgZWFjaCBjdXJyZW50IHBvaW50ZXIuCisgICAgICAgIFBvaW50ZXJEaXN0YW5jZUhlYXBFbGVtZW50IGhlYXBbTUFYX1BPSU5URVJTICogTUFYX1BPSU5URVJTXTsKKworICAgICAgICB1aW50MzJfdCBoZWFwU2l6ZSA9IDA7CisgICAgICAgIGZvciAodWludDMyX3QgY3VycmVudFBvaW50ZXJJbmRleCA9IDA7IGN1cnJlbnRQb2ludGVySW5kZXggPCBjdXJyZW50UG9pbnRlckNvdW50OworICAgICAgICAgICAgICAgIGN1cnJlbnRQb2ludGVySW5kZXgrKykgeworICAgICAgICAgICAgZm9yICh1aW50MzJfdCBsYXN0UG9pbnRlckluZGV4ID0gMDsgbGFzdFBvaW50ZXJJbmRleCA8IGxhc3RQb2ludGVyQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIGxhc3RQb2ludGVySW5kZXgrKykgeworICAgICAgICAgICAgICAgIGludDY0X3QgZGVsdGFYID0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2N1cnJlbnRQb2ludGVySW5kZXhdLngKKyAgICAgICAgICAgICAgICAgICAgICAgIC0gbGFzdFRvdWNoLnBvaW50ZXJzW2xhc3RQb2ludGVySW5kZXhdLng7CisgICAgICAgICAgICAgICAgaW50NjRfdCBkZWx0YVkgPSBjdXJyZW50VG91Y2gucG9pbnRlcnNbY3VycmVudFBvaW50ZXJJbmRleF0ueQorICAgICAgICAgICAgICAgICAgICAgICAgLSBsYXN0VG91Y2gucG9pbnRlcnNbbGFzdFBvaW50ZXJJbmRleF0ueTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRpc3RhbmNlID0gdWludDY0X3QoZGVsdGFYICogZGVsdGFYICsgZGVsdGFZICogZGVsdGFZKTsKKworICAgICAgICAgICAgICAgIC8vIEluc2VydCBuZXcgZWxlbWVudCBpbnRvIHRoZSBoZWFwIChzaWZ0IHVwKS4KKyAgICAgICAgICAgICAgICBoZWFwW2hlYXBTaXplXS5jdXJyZW50UG9pbnRlckluZGV4ID0gY3VycmVudFBvaW50ZXJJbmRleDsKKyAgICAgICAgICAgICAgICBoZWFwW2hlYXBTaXplXS5sYXN0UG9pbnRlckluZGV4ID0gbGFzdFBvaW50ZXJJbmRleDsKKyAgICAgICAgICAgICAgICBoZWFwW2hlYXBTaXplXS5kaXN0YW5jZSA9IGRpc3RhbmNlOworICAgICAgICAgICAgICAgIGhlYXBTaXplICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBIZWFwaWZ5CisgICAgICAgIGZvciAodWludDMyX3Qgc3RhcnRJbmRleCA9IGhlYXBTaXplIC8gMjsgc3RhcnRJbmRleCAhPSAwOyApIHsKKyAgICAgICAgICAgIHN0YXJ0SW5kZXggLT0gMTsKKyAgICAgICAgICAgIGZvciAodWludDMyX3QgcGFyZW50SW5kZXggPSBzdGFydEluZGV4OyA7KSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgY2hpbGRJbmRleCA9IHBhcmVudEluZGV4ICogMiArIDE7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPj0gaGVhcFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggKyAxIDwgaGVhcFNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGhlYXBbY2hpbGRJbmRleCArIDFdLmRpc3RhbmNlIDwgaGVhcFtjaGlsZEluZGV4XS5kaXN0YW5jZSkgeworICAgICAgICAgICAgICAgICAgICBjaGlsZEluZGV4ICs9IDE7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGhlYXBbcGFyZW50SW5kZXhdLmRpc3RhbmNlIDw9IGhlYXBbY2hpbGRJbmRleF0uZGlzdGFuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3dhcChoZWFwW3BhcmVudEluZGV4XSwgaGVhcFtjaGlsZEluZGV4XSk7CisgICAgICAgICAgICAgICAgcGFyZW50SW5kZXggPSBjaGlsZEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyNpZiBERUJVR19QT0lOVEVSX0FTU0lHTk1FTlQKKyAgICAgICAgTE9HRCgiY2FsY3VsYXRlUG9pbnRlcklkcyAtIGluaXRpYWwgZGlzdGFuY2UgbWluLWhlYXA6IHNpemU9JWQiLCBoZWFwU2l6ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGVhcFNpemU7IGkrKykgeworICAgICAgICAgICAgTE9HRCgiICBoZWFwWyVkXTogY3VyPSVkLCBsYXN0PSVkLCBkaXN0YW5jZT0lbGxkIiwKKyAgICAgICAgICAgICAgICAgICAgaSwgaGVhcFtpXS5jdXJyZW50UG9pbnRlckluZGV4LCBoZWFwW2ldLmxhc3RQb2ludGVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGhlYXBbaV0uZGlzdGFuY2UpOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICAvLyBQdWxsIG1hdGNoZXMgb3V0IGJ5IGluY3JlYXNpbmcgb3JkZXIgb2YgZGlzdGFuY2UuCisgICAgICAgIC8vIFRvIGF2b2lkIHJlYXNzaWduaW5nIHBvaW50ZXJzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gbWF0Y2hlZCwgdGhlIGxvb3Aga2VlcHMgdHJhY2sKKyAgICAgICAgLy8gb2Ygd2hpY2ggbGFzdCBhbmQgY3VycmVudCBwb2ludGVycyBoYXZlIGJlZW4gbWF0Y2hlZCB1c2luZyB0aGUgbWF0Y2hlZFhYWEJpdHMgdmFyaWFibGVzLgorICAgICAgICAvLyBJdCBhbHNvIHRyYWNrcyB0aGUgdXNlZCBwb2ludGVyIGlkIGJpdHMuCisgICAgICAgIEJpdFNldDMyIG1hdGNoZWRMYXN0Qml0cygwKTsKKyAgICAgICAgQml0U2V0MzIgbWF0Y2hlZEN1cnJlbnRCaXRzKDApOworICAgICAgICBCaXRTZXQzMiB1c2VkSWRCaXRzKDApOworICAgICAgICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gbWluKGN1cnJlbnRQb2ludGVyQ291bnQsIGxhc3RQb2ludGVyQ291bnQpOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgaWYgKGZpcnN0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCB0aW1lIHRocm91Z2ggdGhlIGxvb3AsIHdlIGp1c3QgY29uc3VtZSB0aGUgcm9vdCBlbGVtZW50IG9mCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBoZWFwICh0aGUgb25lIHdpdGggc21hbGxlc3QgZGlzdGFuY2UpLgorICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFByZXZpb3VzIGl0ZXJhdGlvbnMgY29uc3VtZWQgdGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgaGVhcC4KKyAgICAgICAgICAgICAgICAgICAgLy8gUG9wIHJvb3QgZWxlbWVudCBvZmYgb2YgdGhlIGhlYXAgKHNpZnQgZG93bikuCisgICAgICAgICAgICAgICAgICAgIGhlYXBTaXplIC09IDE7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChoZWFwU2l6ZSA+IDApOworCisgICAgICAgICAgICAgICAgICAgIC8vIFNpZnQgZG93bi4KKyAgICAgICAgICAgICAgICAgICAgaGVhcFswXSA9IGhlYXBbaGVhcFNpemVdOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IHBhcmVudEluZGV4ID0gMDsgOykgeworICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2hpbGRJbmRleCA9IHBhcmVudEluZGV4ICogMiArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRJbmRleCA+PSBoZWFwU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRJbmRleCArIDEgPCBoZWFwU2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBoZWFwW2NoaWxkSW5kZXggKyAxXS5kaXN0YW5jZSA8IGhlYXBbY2hpbGRJbmRleF0uZGlzdGFuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEluZGV4ICs9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFwW3BhcmVudEluZGV4XS5kaXN0YW5jZSA8PSBoZWFwW2NoaWxkSW5kZXhdLmRpc3RhbmNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3YXAoaGVhcFtwYXJlbnRJbmRleF0sIGhlYXBbY2hpbGRJbmRleF0pOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SW5kZXggPSBjaGlsZEluZGV4OworICAgICAgICAgICAgICAgICAgICB9CisKKyNpZiBERUJVR19QT0lOVEVSX0FTU0lHTk1FTlQKKyAgICAgICAgICAgICAgICAgICAgTE9HRCgiY2FsY3VsYXRlUG9pbnRlcklkcyAtIHJlZHVjZWQgZGlzdGFuY2UgbWluLWhlYXA6IHNpemU9JWQiLCBoZWFwU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGVhcFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgTE9HRCgiICBoZWFwWyVkXTogY3VyPSVkLCBsYXN0PSVkLCBkaXN0YW5jZT0lbGxkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgaGVhcFtpXS5jdXJyZW50UG9pbnRlckluZGV4LCBoZWFwW2ldLmxhc3RQb2ludGVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXBbaV0uZGlzdGFuY2UpOworICAgICAgICAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBjdXJyZW50UG9pbnRlckluZGV4ID0gaGVhcFswXS5jdXJyZW50UG9pbnRlckluZGV4OworICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkQ3VycmVudEJpdHMuaGFzQml0KGN1cnJlbnRQb2ludGVySW5kZXgpKSBjb250aW51ZTsgLy8gYWxyZWFkeSBtYXRjaGVkCisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0UG9pbnRlckluZGV4ID0gaGVhcFswXS5sYXN0UG9pbnRlckluZGV4OworICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkTGFzdEJpdHMuaGFzQml0KGxhc3RQb2ludGVySW5kZXgpKSBjb250aW51ZTsgLy8gYWxyZWFkeSBtYXRjaGVkCisKKyAgICAgICAgICAgICAgICBtYXRjaGVkQ3VycmVudEJpdHMubWFya0JpdChjdXJyZW50UG9pbnRlckluZGV4KTsKKyAgICAgICAgICAgICAgICBtYXRjaGVkTGFzdEJpdHMubWFya0JpdChsYXN0UG9pbnRlckluZGV4KTsKKworICAgICAgICAgICAgICAgIHVpbnQzMl90IGlkID0gbGFzdFRvdWNoLnBvaW50ZXJzW2xhc3RQb2ludGVySW5kZXhdLmlkOworICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1tjdXJyZW50UG9pbnRlckluZGV4XS5pZCA9IGlkOworICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5pZFRvSW5kZXhbaWRdID0gY3VycmVudFBvaW50ZXJJbmRleDsKKyAgICAgICAgICAgICAgICB1c2VkSWRCaXRzLm1hcmtCaXQoaWQpOworCisjaWYgREVCVUdfUE9JTlRFUl9BU1NJR05NRU5UCisgICAgICAgICAgICAgICAgTE9HRCgiY2FsY3VsYXRlUG9pbnRlcklkcyAtIG1hdGNoZWQ6IGN1cj0lZCwgbGFzdD0lZCwgaWQ9JWQsIGRpc3RhbmNlPSVsbGQiLAorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFBvaW50ZXJJbmRleCwgY3VycmVudFBvaW50ZXJJbmRleCwgaWQsIGhlYXBbMF0uZGlzdGFuY2UpOworI2VuZGlmCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBBc3NpZ24gZnJlc2ggaWRzIHRvIG5ldyBwb2ludGVycy4KKyAgICAgICAgaWYgKGN1cnJlbnRQb2ludGVyQ291bnQgPiBsYXN0UG9pbnRlckNvdW50KSB7CisgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSBjdXJyZW50UG9pbnRlckNvdW50IC0gbGFzdFBvaW50ZXJDb3VudDsgOykgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGN1cnJlbnRQb2ludGVySW5kZXggPSBtYXRjaGVkQ3VycmVudEJpdHMuZmlyc3RVbm1hcmtlZEJpdCgpOworICAgICAgICAgICAgICAgIHVpbnQzMl90IGlkID0gdXNlZElkQml0cy5maXJzdFVubWFya2VkQml0KCk7CisKKyAgICAgICAgICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbY3VycmVudFBvaW50ZXJJbmRleF0uaWQgPSBpZDsKKyAgICAgICAgICAgICAgICBjdXJyZW50VG91Y2guaWRUb0luZGV4W2lkXSA9IGN1cnJlbnRQb2ludGVySW5kZXg7CisgICAgICAgICAgICAgICAgdXNlZElkQml0cy5tYXJrQml0KGlkKTsKKworI2lmIERFQlVHX1BPSU5URVJfQVNTSUdOTUVOVAorICAgICAgICAgICAgICAgIExPR0QoImNhbGN1bGF0ZVBvaW50ZXJJZHMgLSBhc3NpZ25lZDogY3VyPSVkLCBpZD0lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UG9pbnRlckluZGV4LCBpZCk7CisjZW5kaWYKKworICAgICAgICAgICAgICAgIGlmICgtLWkgPT0gMCkgYnJlYWs7IC8vIGRvbmUKKyAgICAgICAgICAgICAgICBtYXRjaGVkQ3VycmVudEJpdHMubWFya0JpdChjdXJyZW50UG9pbnRlckluZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpeCBpZCBiaXRzLgorICAgICAgICBjdXJyZW50VG91Y2guaWRCaXRzID0gdXNlZElkQml0czsKKyAgICB9Cit9CisKKy8qIFNwZWNpYWwgaGFjayBmb3IgZGV2aWNlcyB0aGF0IGhhdmUgYmFkIHNjcmVlbiBkYXRhOiBpZiBvbmUgb2YgdGhlCisgKiBwb2ludHMgaGFzIG1vdmVkIG1vcmUgdGhhbiBhIHNjcmVlbiBoZWlnaHQgZnJvbSB0aGUgbGFzdCBwb3NpdGlvbiwKKyAqIHRoZW4gZHJvcCBpdC4gKi8KK2Jvb2wgSW5wdXREZXZpY2U6OlRvdWNoU2NyZWVuU3RhdGU6OmFwcGx5QmFkVG91Y2hGaWx0ZXIoKSB7CisgICAgLy8gVGhpcyBoYWNrIHJlcXVpcmVzIHZhbGlkIGF4aXMgcGFyYW1ldGVycy4KKyAgICBpZiAoISBwYXJhbWV0ZXJzLnlBeGlzLnZhbGlkKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBwb2ludGVyQ291bnQgPSBjdXJyZW50VG91Y2gucG9pbnRlckNvdW50OworCisgICAgLy8gTm90aGluZyB0byBkbyBpZiB0aGVyZSBhcmUgbm8gcG9pbnRzLgorICAgIGlmIChwb2ludGVyQ291bnQgPT0gMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgYSBmaW5nZXIgaXMgZ29pbmcgZG93biBvciB1cC4gIFdlIHJ1bgorICAgIC8vIGhlcmUgYmVmb3JlIGFzc2lnbmluZyBwb2ludGVyIElEcywgc28gdGhlcmUgaXNuJ3QgYSBnb29kCisgICAgLy8gd2F5IHRvIGRvIHBlci1maW5nZXIgbWF0Y2hpbmcuCisgICAgaWYgKHBvaW50ZXJDb3VudCAhPSBsYXN0VG91Y2gucG9pbnRlckNvdW50KSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBXZSBjb25zaWRlciBhIHNpbmdsZSBtb3ZlbWVudCBhY3Jvc3MgbW9yZSB0aGFuIGEgNy8xNiBvZgorICAgIC8vIHRoZSBsb25nIHNpemUgb2YgdGhlIHNjcmVlbiB0byBiZSBiYWQuICBUaGlzIHdhcyBhIG1hZ2ljIHZhbHVlCisgICAgLy8gZGV0ZXJtaW5lZCBieSBsb29raW5nIGF0IHRoZSBtYXhpbXVtIGRpc3RhbmNlIGl0IGlzIGZlYXNpYmxlCisgICAgLy8gdG8gYWN0dWFsbHkgbW92ZSBpbiBvbmUgc2FtcGxlLgorICAgIGludDMyX3QgbWF4RGVsdGFZID0gcGFyYW1ldGVycy55QXhpcy5yYW5nZSAqIDcgLyAxNjsKKworICAgIC8vIFhYWCBUaGUgb3JpZ2luYWwgY29kZSBpbiBJbnB1dERldmljZS5qYXZhIGluY2x1ZGVkIGNvbW1lbnRlZCBvdXQKKyAgICAvLyAgICAgY29kZSBmb3IgdGVzdGluZyB0aGUgWCBheGlzLiAgTm90ZSB0aGF0IHdoZW4gd2UgZHJvcCBhIHBvaW50CisgICAgLy8gICAgIHdlIGRvbid0IGFjdHVhbGx5IHJlc3RvcmUgdGhlIG9sZCBYIGVpdGhlci4gIFN0cmFuZ2UuCisgICAgLy8gICAgIFRoZSBvbGQgY29kZSBhbHNvIHRyaWVzIHRvIHRyYWNrIHdoZW4gYmFkIHBvaW50cyB3ZXJlIHByZXZpb3VzbHkKKyAgICAvLyAgICAgZGV0ZWN0ZWQgYnV0IGl0IHR1cm5zIG91dCB0aGF0IGR1ZSB0byB0aGUgcGxhY2VtZW50IG9mIGEgImJyZWFrIgorICAgIC8vICAgICBhdCB0aGUgZW5kIG9mIHRoZSBsb29wLCB3ZSBuZXZlciBzZXQgbURyb3BwZWRCYWRQb2ludCB0byB0cnVlCisgICAgLy8gICAgIHNvIGl0IGlzIGVmZmVjdGl2ZWx5IGRlYWQgY29kZS4KKyAgICAvLyBOZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIG9sZCBjb2RlIGlzIGJ1c3RlZCBvciBqdXN0IG92ZXJjb21wbGljYXRlZAorICAgIC8vIGJ1dCB3b3JraW5nIGFzIGludGVuZGVkLgorCisgICAgLy8gTG9vayB0aHJvdWdoIGFsbCBuZXcgcG9pbnRzIGFuZCBzZWUgaWYgYW55IGFyZSBmYXJ0aGVyIHRoYW4KKyAgICAvLyBhY2NlcHRhYmxlIGZyb20gYWxsIHByZXZpb3VzIHBvaW50cy4KKyAgICBmb3IgKHVpbnQzMl90IGkgPSBwb2ludGVyQ291bnQ7IGktLSA+IDA7ICkgeworICAgICAgICBpbnQzMl90IHkgPSBjdXJyZW50VG91Y2gucG9pbnRlcnNbaV0ueTsKKyAgICAgICAgaW50MzJfdCBjbG9zZXN0WSA9IElOVF9NQVg7CisgICAgICAgIGludDMyX3QgY2xvc2VzdERlbHRhWSA9IDA7CisKKyNpZiBERUJVR19IQUNLUworICAgICAgICBMT0dEKCJCYWRUb3VjaEZpbHRlcjogTG9va2luZyBhdCBuZXh0IHBvaW50ICMlZDogeT0lZCIsIGksIHkpOworI2VuZGlmCisKKyAgICAgICAgZm9yICh1aW50MzJfdCBqID0gcG9pbnRlckNvdW50OyBqLS0gPiAwOyApIHsKKyAgICAgICAgICAgIGludDMyX3QgbGFzdFkgPSBsYXN0VG91Y2gucG9pbnRlcnNbal0ueTsKKyAgICAgICAgICAgIGludDMyX3QgZGVsdGFZID0gYWJzKHkgLSBsYXN0WSk7CisKKyNpZiBERUJVR19IQUNLUworICAgICAgICAgICAgTE9HRCgiQmFkVG91Y2hGaWx0ZXI6IENvbXBhcmluZyB3aXRoIGxhc3QgcG9pbnQgIyVkOiB5PSVkIGRlbHRhWT0lZCIsCisgICAgICAgICAgICAgICAgICAgIGosIGxhc3RZLCBkZWx0YVkpOworI2VuZGlmCisKKyAgICAgICAgICAgIGlmIChkZWx0YVkgPCBtYXhEZWx0YVkpIHsKKyAgICAgICAgICAgICAgICBnb3RvIFNraXBTdWZmaWNpZW50bHlDbG9zZVBvaW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRlbHRhWSA8IGNsb3Nlc3REZWx0YVkpIHsKKyAgICAgICAgICAgICAgICBjbG9zZXN0RGVsdGFZID0gZGVsdGFZOworICAgICAgICAgICAgICAgIGNsb3Nlc3RZID0gbGFzdFk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBNdXN0IG5vdCBoYXZlIGZvdW5kIGEgY2xvc2UgZW5vdWdoIG1hdGNoLgorI2lmIERFQlVHX0hBQ0tTCisgICAgICAgIExPR0QoIkJhZFRvdWNoRmlsdGVyOiBEcm9wcGluZyBiYWQgcG9pbnQgIyVkOiBuZXdZPSVkIG9sZFk9JWQgZGVsdGFZPSVkIG1heERlbHRhWT0lZCIsCisgICAgICAgICAgICAgICAgaSwgeSwgY2xvc2VzdFksIGNsb3Nlc3REZWx0YVksIG1heERlbHRhWSk7CisjZW5kaWYKKworICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbaV0ueSA9IGNsb3Nlc3RZOworICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gWFhYIG9yaWdpbmFsIGNvZGUgb25seSBjb3JyZWN0cyBvbmUgcG9pbnQKKworICAgIFNraXBTdWZmaWNpZW50bHlDbG9zZVBvaW50OiA7CisgICAgfQorCisgICAgLy8gTm8gY2hhbmdlLgorICAgIHJldHVybiBmYWxzZTsKK30KKworLyogU3BlY2lhbCBoYWNrIGZvciBkZXZpY2VzIHRoYXQgaGF2ZSBiYWQgc2NyZWVuIGRhdGE6IGRyb3AgcG9pbnRzIHdoZXJlCisgKiB0aGUgY29vcmRpbmF0ZSB2YWx1ZSBmb3Igb25lIGF4aXMgaGFzIGp1bXBlZCB0byB0aGUgb3RoZXIgcG9pbnRlcidzIGxvY2F0aW9uLgorICovCitib29sIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjphcHBseUp1bXB5VG91Y2hGaWx0ZXIoKSB7CisgICAgLy8gVGhpcyBoYWNrIHJlcXVpcmVzIHZhbGlkIGF4aXMgcGFyYW1ldGVycy4KKyAgICBpZiAoISBwYXJhbWV0ZXJzLnlBeGlzLnZhbGlkKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBwb2ludGVyQ291bnQgPSBjdXJyZW50VG91Y2gucG9pbnRlckNvdW50OworICAgIGlmIChsYXN0VG91Y2gucG9pbnRlckNvdW50ICE9IHBvaW50ZXJDb3VudCkgeworI2lmIERFQlVHX0hBQ0tTCisgICAgICAgIExPR0QoIkp1bXB5VG91Y2hGaWx0ZXI6IERpZmZlcmVudCBwb2ludGVyIGNvdW50ICVkIC0+ICVkIiwKKyAgICAgICAgICAgICAgICBsYXN0VG91Y2gucG9pbnRlckNvdW50LCBwb2ludGVyQ291bnQpOworICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcG9pbnRlckNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIExPR0QoIiAgUG9pbnRlciAlZCAoJWQsICVkKSIsIGksCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1tpXS54LCBjdXJyZW50VG91Y2gucG9pbnRlcnNbaV0ueSk7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChqdW1weVRvdWNoRmlsdGVyLmp1bXB5UG9pbnRzRHJvcHBlZCA8IEpVTVBZX1RSQU5TSVRJT05fRFJPUFMpIHsKKyAgICAgICAgICAgIGlmIChsYXN0VG91Y2gucG9pbnRlckNvdW50ID09IDEgJiYgcG9pbnRlckNvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAgICAvLyBKdXN0IGRyb3AgdGhlIGZpcnN0IGZldyBldmVudHMgZ29pbmcgZnJvbSAxIHRvIDIgcG9pbnRlcnMuCisgICAgICAgICAgICAgICAgLy8gVGhleSdyZSBiYWQgb2Z0ZW4gZW5vdWdoIHRoYXQgdGhleSdyZSBub3Qgd29ydGggY29uc2lkZXJpbmcuCisgICAgICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJDb3VudCA9IDE7CisgICAgICAgICAgICAgICAganVtcHlUb3VjaEZpbHRlci5qdW1weVBvaW50c0Ryb3BwZWQgKz0gMTsKKworI2lmIERFQlVHX0hBQ0tTCisgICAgICAgICAgICAgICAgTE9HRCgiSnVtcHlUb3VjaEZpbHRlcjogUG9pbnRlciAyIGRyb3BwZWQiKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0VG91Y2gucG9pbnRlckNvdW50ID09IDIgJiYgcG9pbnRlckNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZXZlbnQgd2hlbiB3ZSBnbyBmcm9tIDIgLT4gMSB0ZW5kcyB0byBiZSBtZXNzZWQgdXAgdG9vCisgICAgICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJDb3VudCA9IDI7CisgICAgICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJzWzBdID0gbGFzdFRvdWNoLnBvaW50ZXJzWzBdOworICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1sxXSA9IGxhc3RUb3VjaC5wb2ludGVyc1sxXTsKKyAgICAgICAgICAgICAgICBqdW1weVRvdWNoRmlsdGVyLmp1bXB5UG9pbnRzRHJvcHBlZCArPSAxOworCisjaWYgREVCVUdfSEFDS1MKKyAgICAgICAgICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HRCgiSnVtcHlUb3VjaEZpbHRlcjogUG9pbnRlciAlZCByZXBsYWNlZCAoJWQsICVkKSIsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJzW2ldLngsIGN1cnJlbnRUb3VjaC5wb2ludGVyc1tpXS55KTsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBSZXNldCBqdW1weSBwb2ludHMgZHJvcHBlZCBvbiBvdGhlciB0cmFuc2l0aW9ucyBvciBpZiBsaW1pdCBleGNlZWRlZC4KKyAgICAgICAganVtcHlUb3VjaEZpbHRlci5qdW1weVBvaW50c0Ryb3BwZWQgPSAwOworCisjaWYgREVCVUdfSEFDS1MKKyAgICAgICAgTE9HRCgiSnVtcHlUb3VjaEZpbHRlcjogVHJhbnNpdGlvbiAtIGRyb3AgbGltaXQgcmVzZXQiKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gV2UgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgcG9pbnRlcnMgYXMgbGFzdCB0aW1lLgorICAgIC8vIEEgJ2p1bXB5JyBwb2ludCBpcyBvbmUgd2hlcmUgdGhlIGNvb3JkaW5hdGUgdmFsdWUgZm9yIG9uZSBheGlzCisgICAgLy8gaGFzIGp1bXBlZCB0byB0aGUgb3RoZXIgcG9pbnRlcidzIGxvY2F0aW9uLiBObyBuZWVkIHRvIGRvIGFueXRoaW5nCisgICAgLy8gZWxzZSBpZiB3ZSBvbmx5IGhhdmUgb25lIHBvaW50ZXIuCisgICAgaWYgKHBvaW50ZXJDb3VudCA8IDIpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChqdW1weVRvdWNoRmlsdGVyLmp1bXB5UG9pbnRzRHJvcHBlZCA8IEpVTVBZX0RST1BfTElNSVQpIHsKKyAgICAgICAgaW50IGp1bXB5RXBzaWxvbiA9IHBhcmFtZXRlcnMueUF4aXMucmFuZ2UgLyBKVU1QWV9FUFNJTE9OX0RJVklTT1I7CisKKyAgICAgICAgLy8gV2Ugb25seSByZXBsYWNlIHRoZSBzaW5nbGUgd29yc3QganVtcHkgcG9pbnQgYXMgY2hhcmFjdGVyaXplZCBieSBwb2ludGVyIGRpc3RhbmNlCisgICAgICAgIC8vIGluIGEgc2luZ2xlIGF4aXMuCisgICAgICAgIGludDMyX3QgYmFkUG9pbnRlckluZGV4ID0gLTE7CisgICAgICAgIGludDMyX3QgYmFkUG9pbnRlclJlcGxhY2VtZW50SW5kZXggPSAtMTsKKyAgICAgICAgaW50MzJfdCBiYWRQb2ludGVyRGlzdGFuY2UgPSBJTlRfTUlOOyAvLyBkaXN0YW5jZSB0byBiZSBjb3JyZWN0ZWQKKworICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSBwb2ludGVyQ291bnQ7IGktLSA+IDA7ICkgeworICAgICAgICAgICAgaW50MzJfdCB4ID0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2ldLng7CisgICAgICAgICAgICBpbnQzMl90IHkgPSBjdXJyZW50VG91Y2gucG9pbnRlcnNbaV0ueTsKKworI2lmIERFQlVHX0hBQ0tTCisgICAgICAgICAgICBMT0dEKCJKdW1weVRvdWNoRmlsdGVyOiBQb2ludCAlZCAoJWQsICVkKSIsIGksIHgsIHkpOworI2VuZGlmCisKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGEgdG91Y2ggcG9pbnQgaXMgdG9vIGNsb3NlIHRvIGFub3RoZXIncyBjb29yZGluYXRlcworICAgICAgICAgICAgYm9vbCBkcm9wWCA9IGZhbHNlLCBkcm9wWSA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh1aW50MzJfdCBqID0gMDsgaiA8IHBvaW50ZXJDb3VudDsgaisrKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPT0gaikgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYWJzKHggLSBjdXJyZW50VG91Y2gucG9pbnRlcnNbal0ueCkgPD0ganVtcHlFcHNpbG9uKSB7CisgICAgICAgICAgICAgICAgICAgIGRyb3BYID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGFicyh5IC0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2pdLnkpIDw9IGp1bXB5RXBzaWxvbikgeworICAgICAgICAgICAgICAgICAgICBkcm9wWSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghIGRyb3BYICYmICEgZHJvcFkpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gbm90IGp1bXB5CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZpbmQgYSByZXBsYWNlbWVudCBjYW5kaWRhdGUgYnkgY29tcGFyaW5nIHdpdGggb2xkZXIgcG9pbnRzIG9uIHRoZQorICAgICAgICAgICAgLy8gY29tcGxlbWVudGFyeSAobm9uLWp1bXB5KSBheGlzLgorICAgICAgICAgICAgaW50MzJfdCBkaXN0YW5jZSA9IElOVF9NSU47IC8vIGRpc3RhbmNlIHRvIGJlIGNvcnJlY3RlZAorICAgICAgICAgICAgaW50MzJfdCByZXBsYWNlbWVudEluZGV4ID0gLTE7CisKKyAgICAgICAgICAgIGlmIChkcm9wWCkgeworICAgICAgICAgICAgICAgIC8vIFggbG9va3MgdG9vIGNsb3NlLiAgRmluZCBhbiBvbGRlciByZXBsYWNlbWVudCBwb2ludCB3aXRoIGEgY2xvc2UgWS4KKyAgICAgICAgICAgICAgICBpbnQzMl90IHNtYWxsZXN0RGVsdGFZID0gSU5UX01BWDsKKyAgICAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGogPSAwOyBqIDwgcG9pbnRlckNvdW50OyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YVkgPSBhYnMoeSAtIGxhc3RUb3VjaC5wb2ludGVyc1tqXS55KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhWSA8IHNtYWxsZXN0RGVsdGFZKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbGVzdERlbHRhWSA9IGRlbHRhWTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50SW5kZXggPSBqOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gYWJzKHggLSBsYXN0VG91Y2gucG9pbnRlcnNbcmVwbGFjZW1lbnRJbmRleF0ueCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFkgbG9va3MgdG9vIGNsb3NlLiAgRmluZCBhbiBvbGRlciByZXBsYWNlbWVudCBwb2ludCB3aXRoIGEgY2xvc2UgWC4KKyAgICAgICAgICAgICAgICBpbnQzMl90IHNtYWxsZXN0RGVsdGFYID0gSU5UX01BWDsKKyAgICAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGogPSAwOyBqIDwgcG9pbnRlckNvdW50OyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YVggPSBhYnMoeCAtIGxhc3RUb3VjaC5wb2ludGVyc1tqXS54KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhWCA8IHNtYWxsZXN0RGVsdGFYKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbGVzdERlbHRhWCA9IGRlbHRhWDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50SW5kZXggPSBqOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gYWJzKHkgLSBsYXN0VG91Y2gucG9pbnRlcnNbcmVwbGFjZW1lbnRJbmRleF0ueSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHJlcGxhY2luZyB0aGlzIHBvaW50ZXIgd291bGQgY29ycmVjdCBhIHdvcnNlIGVycm9yIHRoYW4gdGhlIHByZXZpb3VzIG9uZXMKKyAgICAgICAgICAgIC8vIGNvbnNpZGVyZWQsIHRoZW4gdXNlIHRoaXMgcmVwbGFjZW1lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IGJhZFBvaW50ZXJEaXN0YW5jZSkgeworICAgICAgICAgICAgICAgIGJhZFBvaW50ZXJJbmRleCA9IGk7CisgICAgICAgICAgICAgICAgYmFkUG9pbnRlclJlcGxhY2VtZW50SW5kZXggPSByZXBsYWNlbWVudEluZGV4OworICAgICAgICAgICAgICAgIGJhZFBvaW50ZXJEaXN0YW5jZSA9IGRpc3RhbmNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ29ycmVjdCB0aGUganVtcHkgcG9pbnRlciBpZiBvbmUgd2FzIGZvdW5kLgorICAgICAgICBpZiAoYmFkUG9pbnRlckluZGV4ID49IDApIHsKKyNpZiBERUJVR19IQUNLUworICAgICAgICAgICAgTE9HRCgiSnVtcHlUb3VjaEZpbHRlcjogUmVwbGFjaW5nIGJhZCBwb2ludGVyICVkIHdpdGggKCVkLCAlZCkiLAorICAgICAgICAgICAgICAgICAgICBiYWRQb2ludGVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGxhc3RUb3VjaC5wb2ludGVyc1tiYWRQb2ludGVyUmVwbGFjZW1lbnRJbmRleF0ueCwKKyAgICAgICAgICAgICAgICAgICAgbGFzdFRvdWNoLnBvaW50ZXJzW2JhZFBvaW50ZXJSZXBsYWNlbWVudEluZGV4XS55KTsKKyNlbmRpZgorCisgICAgICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbYmFkUG9pbnRlckluZGV4XS54ID0KKyAgICAgICAgICAgICAgICAgICAgbGFzdFRvdWNoLnBvaW50ZXJzW2JhZFBvaW50ZXJSZXBsYWNlbWVudEluZGV4XS54OworICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJzW2JhZFBvaW50ZXJJbmRleF0ueSA9CisgICAgICAgICAgICAgICAgICAgIGxhc3RUb3VjaC5wb2ludGVyc1tiYWRQb2ludGVyUmVwbGFjZW1lbnRJbmRleF0ueTsKKyAgICAgICAgICAgIGp1bXB5VG91Y2hGaWx0ZXIuanVtcHlQb2ludHNEcm9wcGVkICs9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGp1bXB5VG91Y2hGaWx0ZXIuanVtcHlQb2ludHNEcm9wcGVkID0gMDsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIFNwZWNpYWwgaGFjayBmb3IgZGV2aWNlcyB0aGF0IGhhdmUgYmFkIHNjcmVlbiBkYXRhOiBhZ2dyZWdhdGUgYW5kCisgKiBjb21wdXRlIGF2ZXJhZ2VzIG9mIHRoZSBjb29yZGluYXRlIGRhdGEsIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mCisgKiBqaXR0ZXIgc2VlbiBieSBhcHBsaWNhdGlvbnMuICovCit2b2lkIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjphcHBseUF2ZXJhZ2luZ1RvdWNoRmlsdGVyKCkgeworICAgIGZvciAodWludDMyX3QgY3VycmVudEluZGV4ID0gMDsgY3VycmVudEluZGV4IDwgY3VycmVudFRvdWNoLnBvaW50ZXJDb3VudDsgY3VycmVudEluZGV4KyspIHsKKyAgICAgICAgdWludDMyX3QgaWQgPSBjdXJyZW50VG91Y2gucG9pbnRlcnNbY3VycmVudEluZGV4XS5pZDsKKyAgICAgICAgaW50MzJfdCB4ID0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2N1cnJlbnRJbmRleF0ueDsKKyAgICAgICAgaW50MzJfdCB5ID0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2N1cnJlbnRJbmRleF0ueTsKKyAgICAgICAgaW50MzJfdCBwcmVzc3VyZSA9IGN1cnJlbnRUb3VjaC5wb2ludGVyc1tjdXJyZW50SW5kZXhdLnByZXNzdXJlOworCisgICAgICAgIGlmIChsYXN0VG91Y2guaWRCaXRzLmhhc0JpdChpZCkpIHsKKyAgICAgICAgICAgIC8vIFBvaW50ZXIgd2FzIGRvd24gYmVmb3JlIGFuZCBpcyBzdGlsbCBkb3duIG5vdy4KKyAgICAgICAgICAgIC8vIENvbXB1dGUgYXZlcmFnZSBvdmVyIGhpc3RvcnkgdHJhY2UuCisgICAgICAgICAgICB1aW50MzJfdCBzdGFydCA9IGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlTdGFydFtpZF07CisgICAgICAgICAgICB1aW50MzJfdCBlbmQgPSBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5RW5kW2lkXTsKKworICAgICAgICAgICAgaW50NjRfdCBkZWx0YVggPSB4IC0gYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbZW5kXS5wb2ludGVyc1tpZF0ueDsKKyAgICAgICAgICAgIGludDY0X3QgZGVsdGFZID0geSAtIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlEYXRhW2VuZF0ucG9pbnRlcnNbaWRdLnk7CisgICAgICAgICAgICB1aW50NjRfdCBkaXN0YW5jZSA9IHVpbnQ2NF90KGRlbHRhWCAqIGRlbHRhWCArIGRlbHRhWSAqIGRlbHRhWSk7CisKKyNpZiBERUJVR19IQUNLUworICAgICAgICAgICAgTE9HRCgiQXZlcmFnaW5nVG91Y2hGaWx0ZXI6IFBvaW50ZXIgaWQgJWQgLSBEaXN0YW5jZSBmcm9tIGxhc3Qgc2FtcGxlOiAlbGxkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQsIGRpc3RhbmNlKTsKKyNlbmRpZgorCisgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBBVkVSQUdJTkdfRElTVEFOQ0VfTElNSVQpIHsKKyAgICAgICAgICAgICAgICAvLyBJbmNyZW1lbnQgZW5kIGluZGV4IGluIHByZXBhcmF0aW9uIGZvciByZWNvcmRpbmcgbmV3IGhpc3RvcmljYWwgZGF0YS4KKyAgICAgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgICAgICAgICBpZiAoZW5kID4gQVZFUkFHSU5HX0hJU1RPUllfU0laRSkgeworICAgICAgICAgICAgICAgICAgICBlbmQgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbmQgaW5kZXggaGFzIGxvb3BlZCBiYWNrIHRvIHRoZSBzdGFydCBpbmRleCB0aGVuIHdlIGhhdmUgZmlsbGVkCisgICAgICAgICAgICAgICAgLy8gdGhlIGhpc3RvcmljYWwgdHJhY2UgdXAgdG8gdGhlIGRlc2lyZWQgc2l6ZSBzbyB3ZSBkcm9wIHRoZSBoaXN0b3JpY2FsCisgICAgICAgICAgICAgICAgLy8gZGF0YSBhdCB0aGUgc3RhcnQgb2YgdGhlIHRyYWNlLgorICAgICAgICAgICAgICAgIGlmIChlbmQgPT0gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnQgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID4gQVZFUkFHSU5HX0hJU1RPUllfU0laRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gQWRkIHRoZSByYXcgZGF0YSB0byB0aGUgaGlzdG9yaWNhbCB0cmFjZS4KKyAgICAgICAgICAgICAgICBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5U3RhcnRbaWRdID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeUVuZFtpZF0gPSBlbmQ7CisgICAgICAgICAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbZW5kXS5wb2ludGVyc1tpZF0ueCA9IHg7CisgICAgICAgICAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbZW5kXS5wb2ludGVyc1tpZF0ueSA9IHk7CisgICAgICAgICAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbZW5kXS5wb2ludGVyc1tpZF0ucHJlc3N1cmUgPSBwcmVzc3VyZTsKKworICAgICAgICAgICAgICAgIC8vIEF2ZXJhZ2Ugb3ZlciBhbGwgaGlzdG9yaWNhbCBwb3NpdGlvbnMgaW4gdGhlIHRyYWNlIGJ5IHRvdGFsIHByZXNzdXJlLgorICAgICAgICAgICAgICAgIGludDMyX3QgYXZlcmFnZWRYID0gMDsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGF2ZXJhZ2VkWSA9IDA7CisgICAgICAgICAgICAgICAgaW50MzJfdCB0b3RhbFByZXNzdXJlID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaGlzdG9yaWNhbFggPSBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5RGF0YVtzdGFydF0ucG9pbnRlcnNbaWRdLng7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaGlzdG9yaWNhbFkgPSBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5RGF0YVtzdGFydF0ucG9pbnRlcnNbaWRdLnk7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaGlzdG9yaWNhbFByZXNzdXJlID0gYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbc3RhcnRdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaW50ZXJzW2lkXS5wcmVzc3VyZTsKKworICAgICAgICAgICAgICAgICAgICBhdmVyYWdlZFggKz0gaGlzdG9yaWNhbFggKiBoaXN0b3JpY2FsUHJlc3N1cmU7CisgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2VkWSArPSBoaXN0b3JpY2FsWSAqIGhpc3RvcmljYWxQcmVzc3VyZTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxQcmVzc3VyZSArPSBoaXN0b3JpY2FsUHJlc3N1cmU7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBzdGFydCArPSAxOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPiBBVkVSQUdJTkdfSElTVE9SWV9TSVpFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdmVyYWdlZFggLz0gdG90YWxQcmVzc3VyZTsKKyAgICAgICAgICAgICAgICBhdmVyYWdlZFkgLz0gdG90YWxQcmVzc3VyZTsKKworI2lmIERFQlVHX0hBQ0tTCisgICAgICAgICAgICAgICAgTE9HRCgiQXZlcmFnaW5nVG91Y2hGaWx0ZXI6IFBvaW50ZXIgaWQgJWQgLSAiCisgICAgICAgICAgICAgICAgICAgICAgICAidG90YWxQcmVzc3VyZT0lZCwgYXZlcmFnZWRYPSVkLCBhdmVyYWdlZFk9JWQiLCBpZCwgdG90YWxQcmVzc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2VkWCwgYXZlcmFnZWRZKTsKKyNlbmRpZgorCisgICAgICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJzW2N1cnJlbnRJbmRleF0ueCA9IGF2ZXJhZ2VkWDsKKyAgICAgICAgICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbY3VycmVudEluZGV4XS55ID0gYXZlcmFnZWRZOworICAgICAgICAgICAgfSBlbHNlIHsKKyNpZiBERUJVR19IQUNLUworICAgICAgICAgICAgICAgIExPR0QoIkF2ZXJhZ2luZ1RvdWNoRmlsdGVyOiBQb2ludGVyIGlkICVkIC0gRXhjZWVkZWQgbWF4IGRpc3RhbmNlIiwgaWQpOworI2VuZGlmCisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisjaWYgREVCVUdfSEFDS1MKKyAgICAgICAgICAgIExPR0QoIkF2ZXJhZ2luZ1RvdWNoRmlsdGVyOiBQb2ludGVyIGlkICVkIC0gUG9pbnRlciB3ZW50IHVwIiwgaWQpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICAvLyBSZXNldCBwb2ludGVyIGhpc3RvcnkuCisgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlTdGFydFtpZF0gPSAwOworICAgICAgICBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5RW5kW2lkXSA9IDA7CisgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlEYXRhWzBdLnBvaW50ZXJzW2lkXS54ID0geDsKKyAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbMF0ucG9pbnRlcnNbaWRdLnkgPSB5OworICAgICAgICBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5RGF0YVswXS5wb2ludGVyc1tpZF0ucHJlc3N1cmUgPSBwcmVzc3VyZTsKKyAgICB9Cit9CisKK2Jvb2wgSW5wdXREZXZpY2U6OlRvdWNoU2NyZWVuU3RhdGU6OmlzUG9pbnRJbnNpZGVEaXNwbGF5KGludDMyX3QgeCwgaW50MzJfdCB5KSBjb25zdCB7CisgICAgaWYgKCEgcGFyYW1ldGVycy54QXhpcy52YWxpZCB8fCAhIHBhcmFtZXRlcnMueUF4aXMudmFsaWQpIHsKKyAgICAgICAgLy8gQXNzdW1lIGFsbCBwb2ludHMgb24gYSB0b3VjaCBzY3JlZW4gd2l0aG91dCB2YWxpZCBheGlzIHBhcmFtZXRlcnMgYXJlCisgICAgICAgIC8vIGluc2lkZSB0aGUgZGlzcGxheS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIHggPj0gcGFyYW1ldGVycy54QXhpcy5taW5WYWx1ZQorICAgICAgICAmJiB4IDw9IHBhcmFtZXRlcnMueEF4aXMubWF4VmFsdWUKKyAgICAgICAgJiYgeSA+PSBwYXJhbWV0ZXJzLnlBeGlzLm1pblZhbHVlCisgICAgICAgICYmIHkgPD0gcGFyYW1ldGVycy55QXhpcy5tYXhWYWx1ZTsKK30KKworCisvLyAtLS0gSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGUgLS0tCisKK3ZvaWQgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OnJlc2V0KCkgeworICAgIGFjY3VtdWxhdG9yLmNsZWFyKCk7CisgICAgY3VycmVudC5kb3duID0gZmFsc2U7CisgICAgY3VycmVudC54ID0gMDsKKyAgICBjdXJyZW50LnkgPSAwOworICAgIGN1cnJlbnQucHJlc3N1cmUgPSAwOworICAgIGN1cnJlbnQuc2l6ZSA9IDA7Cit9CisKKworLy8gLS0tIElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGUgLS0tCisKK3ZvaWQgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZTo6cmVzZXQoKSB7CisgICAgYWNjdW11bGF0b3IuY2xlYXIoKTsKK30KKworCisvLyAtLS0gSW5wdXRSZWFkZXIgLS0tCisKK0lucHV0UmVhZGVyOjpJbnB1dFJlYWRlcihjb25zdCBzcDxFdmVudEh1YkludGVyZmFjZT4mIGV2ZW50SHViLAorICAgICAgICBjb25zdCBzcDxJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZT4mIHBvbGljeSwKKyAgICAgICAgY29uc3Qgc3A8SW5wdXREaXNwYXRjaGVySW50ZXJmYWNlPiYgZGlzcGF0Y2hlcikgOgorICAgICAgICBtRXZlbnRIdWIoZXZlbnRIdWIpLCBtUG9saWN5KHBvbGljeSksIG1EaXNwYXRjaGVyKGRpc3BhdGNoZXIpIHsKKyAgICBjb25maWd1cmVFeGNsdWRlZERldmljZXMoKTsKKyAgICByZXNldEdsb2JhbE1ldGFTdGF0ZSgpOworICAgIHJlc2V0RGlzcGxheVByb3BlcnRpZXMoKTsKKyAgICB1cGRhdGVFeHBvcnRlZFZpcnR1YWxLZXlTdGF0ZSgpOworfQorCitJbnB1dFJlYWRlcjo6fklucHV0UmVhZGVyKCkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbURldmljZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgZGVsZXRlIG1EZXZpY2VzLnZhbHVlQXQoaSk7CisgICAgfQorfQorCit2b2lkIElucHV0UmVhZGVyOjpsb29wT25jZSgpIHsKKyAgICBSYXdFdmVudCByYXdFdmVudDsKKyAgICBtRXZlbnRIdWItPmdldEV2ZW50KCYgcmF3RXZlbnQuZGV2aWNlSWQsICYgcmF3RXZlbnQudHlwZSwgJiByYXdFdmVudC5zY2FuQ29kZSwKKyAgICAgICAgICAgICYgcmF3RXZlbnQua2V5Q29kZSwgJiByYXdFdmVudC5mbGFncywgJiByYXdFdmVudC52YWx1ZSwgJiByYXdFdmVudC53aGVuKTsKKworICAgIC8vIFJlcGxhY2UgdGhlIGV2ZW50IHRpbWVzdGFtcCBzbyBpdCBpcyBpbiBzYW1lIHRpbWViYXNlIGFzIGphdmEubGFuZy5TeXN0ZW0ubmFub1RpbWUoKQorICAgIC8vIGFuZCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpIGFzIGV4cGVjdGVkIGJ5IHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uCisgICAgcmF3RXZlbnQud2hlbiA9IHN5c3RlbVRpbWUoU1lTVEVNX1RJTUVfTU9OT1RPTklDKTsKKworI2lmIERFQlVHX1JBV19FVkVOVFMKKyAgICBMT0dEKCJJbnB1dCBldmVudDogZGV2aWNlPTB4JXggdHlwZT0weCV4IHNjYW5jb2RlPSVkIGtleWNvZGU9JWQgdmFsdWU9JWQiLAorICAgICAgICAgICAgcmF3RXZlbnQuZGV2aWNlSWQsIHJhd0V2ZW50LnR5cGUsIHJhd0V2ZW50LnNjYW5Db2RlLCByYXdFdmVudC5rZXlDb2RlLAorICAgICAgICAgICAgcmF3RXZlbnQudmFsdWUpOworI2VuZGlmCisKKyAgICBwcm9jZXNzKCYgcmF3RXZlbnQpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpwcm9jZXNzKGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCkgeworICAgIHN3aXRjaCAocmF3RXZlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEV2ZW50SHViSW50ZXJmYWNlOjpERVZJQ0VfQURERUQ6CisgICAgICAgIGhhbmRsZURldmljZUFkZGVkKHJhd0V2ZW50KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEV2ZW50SHViSW50ZXJmYWNlOjpERVZJQ0VfUkVNT1ZFRDoKKyAgICAgICAgaGFuZGxlRGV2aWNlUmVtb3ZlZChyYXdFdmVudCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVl9TWU46CisgICAgICAgIGhhbmRsZVN5bmMocmF3RXZlbnQpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVZfS0VZOgorICAgICAgICBoYW5kbGVLZXkocmF3RXZlbnQpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVZfUkVMOgorICAgICAgICBoYW5kbGVSZWxhdGl2ZU1vdGlvbihyYXdFdmVudCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVl9BQlM6CisgICAgICAgIGhhbmRsZUFic29sdXRlTW90aW9uKHJhd0V2ZW50KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVWX1NXOgorICAgICAgICBoYW5kbGVTd2l0Y2gocmF3RXZlbnQpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmhhbmRsZURldmljZUFkZGVkKGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCkgeworICAgIElucHV0RGV2aWNlKiBkZXZpY2UgPSBnZXREZXZpY2UocmF3RXZlbnQtPmRldmljZUlkKTsKKyAgICBpZiAoZGV2aWNlKSB7CisgICAgICAgIExPR1coIklnbm9yaW5nIHNwdXJpb3VzIGRldmljZSBhZGRlZCBldmVudCBmb3IgZGV2aWNlSWQgJWQuIiwgcmF3RXZlbnQtPmRldmljZUlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZERldmljZShyYXdFdmVudC0+d2hlbiwgcmF3RXZlbnQtPmRldmljZUlkKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6aGFuZGxlRGV2aWNlUmVtb3ZlZChjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpIHsKKyAgICBJbnB1dERldmljZSogZGV2aWNlID0gZ2V0RGV2aWNlKHJhd0V2ZW50LT5kZXZpY2VJZCk7CisgICAgaWYgKCEgZGV2aWNlKSB7CisgICAgICAgIExPR1coIklnbm9yaW5nIHNwdXJpb3VzIGRldmljZSByZW1vdmVkIGV2ZW50IGZvciBkZXZpY2VJZCAlZC4iLCByYXdFdmVudC0+ZGV2aWNlSWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVtb3ZlRGV2aWNlKHJhd0V2ZW50LT53aGVuLCBkZXZpY2UpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpoYW5kbGVTeW5jKGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCkgeworICAgIElucHV0RGV2aWNlKiBkZXZpY2UgPSBnZXROb25JZ25vcmVkRGV2aWNlKHJhd0V2ZW50LT5kZXZpY2VJZCk7CisgICAgaWYgKCEgZGV2aWNlKSByZXR1cm47CisKKyAgICBpZiAocmF3RXZlbnQtPnNjYW5Db2RlID09IFNZTl9NVF9SRVBPUlQpIHsKKyAgICAgICAgLy8gTXVsdGlUb3VjaCBTeW5jOiBUaGUgZHJpdmVyIGhhcyByZXR1cm5lZCBhbGwgZGF0YSBmb3IgKm9uZSogb2YgdGhlIHBvaW50ZXJzLgorICAgICAgICAvLyBXZSBkcm9wIHBvaW50ZXJzIHdpdGggcHJlc3N1cmUgPD0gMCBzaW5jZSB0aGF0IGluZGljYXRlcyB0aGV5IGFyZSBub3QgZG93bi4KKyAgICAgICAgaWYgKGRldmljZS0+aXNNdWx0aVRvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IHBvaW50ZXJJbmRleCA9IGRldmljZS0+bXVsdGlUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5wb2ludGVyQ291bnQ7CisKKyAgICAgICAgICAgIGlmIChkZXZpY2UtPm11bHRpVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IucG9pbnRlcnNbcG9pbnRlckluZGV4XS5maWVsZHMpIHsKKyAgICAgICAgICAgICAgICBpZiAocG9pbnRlckluZGV4ID09IE1BWF9QT0lOVEVSUykgeworICAgICAgICAgICAgICAgICAgICBMT0dXKCJNdWx0aVRvdWNoIGRldmljZSBkcml2ZXIgcmV0dXJuZWQgbW9yZSB0aGFuIG1heGltdW0gb2YgJWQgcG9pbnRlcnMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUE9JTlRFUlMpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJJbmRleCArPSAxOworICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPm11bHRpVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IucG9pbnRlckNvdW50ID0gcG9pbnRlckluZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGV2aWNlLT5tdWx0aVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLnBvaW50ZXJzW3BvaW50ZXJJbmRleF0uY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocmF3RXZlbnQtPnNjYW5Db2RlID09IFNZTl9SRVBPUlQpIHsKKyAgICAgICAgLy8gR2VuZXJhbCBTeW5jOiBUaGUgZHJpdmVyIGhhcyByZXR1cm5lZCBhbGwgZGF0YSBmb3IgdGhlIGN1cnJlbnQgZXZlbnQgdXBkYXRlLgorICAgICAgICBpZiAoZGV2aWNlLT5pc011bHRpVG91Y2hTY3JlZW4oKSkgeworICAgICAgICAgICAgaWYgKGRldmljZS0+bXVsdGlUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5pc0RpcnR5KCkpIHsKKyAgICAgICAgICAgICAgICBvbk11bHRpVG91Y2hTY3JlZW5TdGF0ZUNoYW5nZWQocmF3RXZlbnQtPndoZW4sIGRldmljZSk7CisgICAgICAgICAgICAgICAgZGV2aWNlLT5tdWx0aVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZGV2aWNlLT5pc1NpbmdsZVRvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgICAgIGlmIChkZXZpY2UtPnNpbmdsZVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLmlzRGlydHkoKSkgeworICAgICAgICAgICAgICAgIG9uU2luZ2xlVG91Y2hTY3JlZW5TdGF0ZUNoYW5nZWQocmF3RXZlbnQtPndoZW4sIGRldmljZSk7CisgICAgICAgICAgICAgICAgZGV2aWNlLT5zaW5nbGVUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLmlzRGlydHkoKSkgeworICAgICAgICAgICAgb25UcmFja2JhbGxTdGF0ZUNoYW5nZWQocmF3RXZlbnQtPndoZW4sIGRldmljZSk7CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5jbGVhcigpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElucHV0UmVhZGVyOjpoYW5kbGVLZXkoY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KSB7CisgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IGdldE5vbklnbm9yZWREZXZpY2UocmF3RXZlbnQtPmRldmljZUlkKTsKKyAgICBpZiAoISBkZXZpY2UpIHJldHVybjsKKworICAgIGJvb2wgZG93biA9IHJhd0V2ZW50LT52YWx1ZSAhPSAwOworICAgIGludDMyX3Qgc2NhbkNvZGUgPSByYXdFdmVudC0+c2NhbkNvZGU7CisKKyAgICBpZiAoZGV2aWNlLT5pc0tleWJvYXJkKCkgJiYgKHNjYW5Db2RlIDwgQlROX0ZJUlNUIHx8IHNjYW5Db2RlID4gQlROX0xBU1QpKSB7CisgICAgICAgIGludDMyX3Qga2V5Q29kZSA9IHJhd0V2ZW50LT5rZXlDb2RlOworICAgICAgICBvbktleShyYXdFdmVudC0+d2hlbiwgZGV2aWNlLCBkb3duLCBrZXlDb2RlLCBzY2FuQ29kZSwgcmF3RXZlbnQtPmZsYWdzKTsKKyAgICB9IGVsc2UgaWYgKGRldmljZS0+aXNTaW5nbGVUb3VjaFNjcmVlbigpKSB7CisgICAgICAgIHN3aXRjaCAocmF3RXZlbnQtPnNjYW5Db2RlKSB7CisgICAgICAgIGNhc2UgQlROX1RPVUNIOgorICAgICAgICAgICAgZGV2aWNlLT5zaW5nbGVUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9CVE5fVE9VQ0g7CisgICAgICAgICAgICBkZXZpY2UtPnNpbmdsZVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLmJ0blRvdWNoID0gZG93bjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChkZXZpY2UtPmlzVHJhY2tiYWxsKCkpIHsKKyAgICAgICAgc3dpdGNoIChyYXdFdmVudC0+c2NhbkNvZGUpIHsKKyAgICAgICAgY2FzZSBCVE5fTU9VU0U6CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6OlRyYWNrYmFsbFN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQlROX01PVVNFOworICAgICAgICAgICAgZGV2aWNlLT50cmFja2JhbGwuYWNjdW11bGF0b3IuYnRuTW91c2UgPSBkb3duOworCisgICAgICAgICAgICAvLyBzZW5kIHRoZSBkb3duIGltbWVkaWF0ZWx5CisgICAgICAgICAgICAvLyBYWFggdGhpcyBlbXVsYXRlcyB0aGUgb2xkIGJlaGF2aW9yIG9mIEtleUlucHV0UXVldWUsIHVuY2xlYXIgd2hldGhlciBpdCBpcworICAgICAgICAgICAgLy8gICAgIG5lY2Vzc2FyeSBvciBpZiB3ZSBjYW4gd2FpdCB1bnRpbCB0aGUgbmV4dCBzeW5jCisgICAgICAgICAgICBvblRyYWNrYmFsbFN0YXRlQ2hhbmdlZChyYXdFdmVudC0+d2hlbiwgZGV2aWNlKTsKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6aGFuZGxlUmVsYXRpdmVNb3Rpb24oY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KSB7CisgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IGdldE5vbklnbm9yZWREZXZpY2UocmF3RXZlbnQtPmRldmljZUlkKTsKKyAgICBpZiAoISBkZXZpY2UpIHJldHVybjsKKworICAgIGlmIChkZXZpY2UtPmlzVHJhY2tiYWxsKCkpIHsKKyAgICAgICAgc3dpdGNoIChyYXdFdmVudC0+c2NhbkNvZGUpIHsKKyAgICAgICAgY2FzZSBSRUxfWDoKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLmZpZWxkcyB8PQorICAgICAgICAgICAgICAgICAgICBJbnB1dERldmljZTo6VHJhY2tiYWxsU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9SRUxfWDsKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLnJlbFggPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUxfWToKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLmZpZWxkcyB8PQorICAgICAgICAgICAgICAgICAgICBJbnB1dERldmljZTo6VHJhY2tiYWxsU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9SRUxfWTsKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLnJlbFkgPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6aGFuZGxlQWJzb2x1dGVNb3Rpb24oY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KSB7CisgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IGdldE5vbklnbm9yZWREZXZpY2UocmF3RXZlbnQtPmRldmljZUlkKTsKKyAgICBpZiAoISBkZXZpY2UpIHJldHVybjsKKworICAgIGlmIChkZXZpY2UtPmlzTXVsdGlUb3VjaFNjcmVlbigpKSB7CisgICAgICAgIHVpbnQzMl90IHBvaW50ZXJJbmRleCA9IGRldmljZS0+bXVsdGlUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5wb2ludGVyQ291bnQ7CisgICAgICAgIElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpQb2ludGVyKiBwb2ludGVyID0KKyAgICAgICAgICAgICAgICAmIGRldmljZS0+bXVsdGlUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5wb2ludGVyc1twb2ludGVySW5kZXhdOworCisgICAgICAgIHN3aXRjaCAocmF3RXZlbnQtPnNjYW5Db2RlKSB7CisgICAgICAgIGNhc2UgQUJTX01UX1BPU0lUSU9OX1g6CisgICAgICAgICAgICBwb2ludGVyLT5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19NVF9QT1NJVElPTl9YOworICAgICAgICAgICAgcG9pbnRlci0+YWJzTVRQb3NpdGlvblggPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQlNfTVRfUE9TSVRJT05fWToKKyAgICAgICAgICAgIHBvaW50ZXItPmZpZWxkcyB8PQorICAgICAgICAgICAgICAgICAgICBJbnB1dERldmljZTo6TXVsdGlUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX01UX1BPU0lUSU9OX1k7CisgICAgICAgICAgICBwb2ludGVyLT5hYnNNVFBvc2l0aW9uWSA9IHJhd0V2ZW50LT52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCU19NVF9UT1VDSF9NQUpPUjoKKyAgICAgICAgICAgIHBvaW50ZXItPmZpZWxkcyB8PQorICAgICAgICAgICAgICAgICAgICBJbnB1dERldmljZTo6TXVsdGlUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX01UX1RPVUNIX01BSk9SOworICAgICAgICAgICAgcG9pbnRlci0+YWJzTVRUb3VjaE1ham9yID0gcmF3RXZlbnQtPnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUJTX01UX1dJRFRIX01BSk9SOgorICAgICAgICAgICAgcG9pbnRlci0+ZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfTVRfV0lEVEhfTUFKT1I7CisgICAgICAgICAgICBwb2ludGVyLT5hYnNNVFdpZHRoTWFqb3IgPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQlNfTVRfVFJBQ0tJTkdfSUQ6CisgICAgICAgICAgICBwb2ludGVyLT5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19NVF9UUkFDS0lOR19JRDsKKyAgICAgICAgICAgIHBvaW50ZXItPmFic01UVHJhY2tpbmdJZCA9IHJhd0V2ZW50LT52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChkZXZpY2UtPmlzU2luZ2xlVG91Y2hTY3JlZW4oKSkgeworICAgICAgICBzd2l0Y2ggKHJhd0V2ZW50LT5zY2FuQ29kZSkgeworICAgICAgICBjYXNlIEFCU19YOgorICAgICAgICAgICAgZGV2aWNlLT5zaW5nbGVUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfWDsKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuYWJzWCA9IHJhd0V2ZW50LT52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCU19ZOgorICAgICAgICAgICAgZGV2aWNlLT5zaW5nbGVUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfWTsKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuYWJzWSA9IHJhd0V2ZW50LT52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCU19QUkVTU1VSRToKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX1BSRVNTVVJFOworICAgICAgICAgICAgZGV2aWNlLT5zaW5nbGVUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5hYnNQcmVzc3VyZSA9IHJhd0V2ZW50LT52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCU19UT09MX1dJRFRIOgorICAgICAgICAgICAgZGV2aWNlLT5zaW5nbGVUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfVE9PTF9XSURUSDsKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuYWJzVG9vbFdpZHRoID0gcmF3RXZlbnQtPnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmhhbmRsZVN3aXRjaChjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpIHsKKyAgICBJbnB1dERldmljZSogZGV2aWNlID0gZ2V0Tm9uSWdub3JlZERldmljZShyYXdFdmVudC0+ZGV2aWNlSWQpOworICAgIGlmICghIGRldmljZSkgcmV0dXJuOworCisgICAgb25Td2l0Y2gocmF3RXZlbnQtPndoZW4sIGRldmljZSwgcmF3RXZlbnQtPnNjYW5Db2RlLCByYXdFdmVudC0+dmFsdWUpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpvbktleShuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsCisgICAgICAgIGJvb2wgZG93biwgaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IHNjYW5Db2RlLCB1aW50MzJfdCBwb2xpY3lGbGFncykgeworICAgIC8qIFJlZnJlc2ggZGlzcGxheSBwcm9wZXJ0aWVzIHNvIHdlIGNhbiByb3RhdGUga2V5IGNvZGVzIGFjY29yZGluZyB0byBkaXNwbGF5IG9yaWVudGF0aW9uICovCisKKyAgICBpZiAoISByZWZyZXNoRGlzcGxheVByb3BlcnRpZXMoKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogVXBkYXRlIGRldmljZSBzdGF0ZSAqLworCisgICAgaW50MzJfdCBvbGRNZXRhU3RhdGUgPSBkZXZpY2UtPmtleWJvYXJkLmN1cnJlbnQubWV0YVN0YXRlOworICAgIGludDMyX3QgbmV3TWV0YVN0YXRlID0gdXBkYXRlTWV0YVN0YXRlKGtleUNvZGUsIGRvd24sIG9sZE1ldGFTdGF0ZSk7CisgICAgaWYgKG9sZE1ldGFTdGF0ZSAhPSBuZXdNZXRhU3RhdGUpIHsKKyAgICAgICAgZGV2aWNlLT5rZXlib2FyZC5jdXJyZW50Lm1ldGFTdGF0ZSA9IG5ld01ldGFTdGF0ZTsKKyAgICAgICAgcmVzZXRHbG9iYWxNZXRhU3RhdGUoKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRSBpZiB3ZSBzZW5kIGEgZG93biBldmVudCBhYm91dCBhIHJvdGF0ZWQga2V5IHByZXNzIHdlIHNob3VsZCBlbnN1cmUgdGhhdCB3ZSBzZW5kCisgICAgLy8gICAgICAgYSBjb3JyZXNwb25kaW5nIHVwIGV2ZW50IGFib3V0IHRoZSByb3RhdGVkIGtleSBwcmVzcyBldmVuIGlmIHRoZSBvcmllbnRhdGlvbgorICAgIC8vICAgICAgIGhhcyBjaGFuZ2VkIGluIHRoZSBtZWFudGltZQorICAgIGtleUNvZGUgPSByb3RhdGVLZXlDb2RlKGtleUNvZGUsIG1EaXNwbGF5T3JpZW50YXRpb24pOworCisgICAgaWYgKGRvd24pIHsKKyAgICAgICAgZGV2aWNlLT5rZXlib2FyZC5jdXJyZW50LmRvd25UaW1lID0gd2hlbjsKKyAgICB9CisKKyAgICAvKiBBcHBseSBwb2xpY3kgKi8KKworICAgIGludDMyX3QgcG9saWN5QWN0aW9ucyA9IG1Qb2xpY3ktPmludGVyY2VwdEtleSh3aGVuLCBkZXZpY2UtPmlkLAorICAgICAgICAgICAgZG93biwga2V5Q29kZSwgc2NhbkNvZGUsIHBvbGljeUZsYWdzKTsKKworICAgIGlmICghIGFwcGx5U3RhbmRhcmRJbnB1dERpc3BhdGNoUG9saWN5QWN0aW9ucyh3aGVuLCBwb2xpY3lBY3Rpb25zLCAmIHBvbGljeUZsYWdzKSkgeworICAgICAgICByZXR1cm47IC8vIGV2ZW50IGRyb3BwZWQKKyAgICB9CisKKyAgICAvKiBFbnF1ZXVlIGtleSBldmVudCBmb3IgZGlzcGF0Y2ggKi8KKworICAgIGludDMyX3Qga2V5RXZlbnRBY3Rpb247CisgICAgaWYgKGRvd24pIHsKKyAgICAgICAgZGV2aWNlLT5rZXlib2FyZC5jdXJyZW50LmRvd25UaW1lID0gd2hlbjsKKyAgICAgICAga2V5RXZlbnRBY3Rpb24gPSBLRVlfRVZFTlRfQUNUSU9OX0RPV047CisgICAgfSBlbHNlIHsKKyAgICAgICAga2V5RXZlbnRBY3Rpb24gPSBLRVlfRVZFTlRfQUNUSU9OX1VQOworICAgIH0KKworICAgIGludDMyX3Qga2V5RXZlbnRGbGFncyA9IEtFWV9FVkVOVF9GTEFHX0ZST01fU1lTVEVNOworICAgIGlmIChwb2xpY3lBY3Rpb25zICYgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OkFDVElPTl9XT0tFX0hFUkUpIHsKKyAgICAgICAga2V5RXZlbnRGbGFncyA9IGtleUV2ZW50RmxhZ3MgfCBLRVlfRVZFTlRfRkxBR19XT0tFX0hFUkU7CisgICAgfQorCisgICAgbURpc3BhdGNoZXItPm5vdGlmeUtleSh3aGVuLCBkZXZpY2UtPmlkLCBJTlBVVF9FVkVOVF9OQVRVUkVfS0VZLCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIGtleUV2ZW50QWN0aW9uLCBrZXlFdmVudEZsYWdzLCBrZXlDb2RlLCBzY2FuQ29kZSwKKyAgICAgICAgICAgIGRldmljZS0+a2V5Ym9hcmQuY3VycmVudC5tZXRhU3RhdGUsCisgICAgICAgICAgICBkZXZpY2UtPmtleWJvYXJkLmN1cnJlbnQuZG93blRpbWUpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpvblN3aXRjaChuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsIGludDMyX3Qgc3dpdGNoQ29kZSwKKyAgICAgICAgaW50MzJfdCBzd2l0Y2hWYWx1ZSkgeworICAgIGludDMyX3QgcG9saWN5QWN0aW9ucyA9IG1Qb2xpY3ktPmludGVyY2VwdFN3aXRjaCh3aGVuLCBzd2l0Y2hDb2RlLCBzd2l0Y2hWYWx1ZSk7CisKKyAgICB1aW50MzJfdCBwb2xpY3lGbGFncyA9IDA7CisgICAgYXBwbHlTdGFuZGFyZElucHV0RGlzcGF0Y2hQb2xpY3lBY3Rpb25zKHdoZW4sIHBvbGljeUFjdGlvbnMsICYgcG9saWN5RmxhZ3MpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpvbk11bHRpVG91Y2hTY3JlZW5TdGF0ZUNoYW5nZWQobnNlY3NfdCB3aGVuLAorICAgICAgICBJbnB1dERldmljZSogZGV2aWNlKSB7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IFJFUVVJUkVEX0ZJRUxEUyA9CisgICAgICAgICAgICBJbnB1dERldmljZTo6TXVsdGlUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX01UX1BPU0lUSU9OX1gKKyAgICAgICAgICAgIHwgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19NVF9QT1NJVElPTl9ZCisgICAgICAgICAgICB8IElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfTVRfVE9VQ0hfTUFKT1IKKyAgICAgICAgICAgIHwgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19NVF9XSURUSF9NQUpPUjsKKworICAgIC8qIFJlZnJlc2ggZGlzcGxheSBwcm9wZXJ0aWVzIHNvIHdlIGNhbiBtYXAgdG91Y2ggc2NyZWVuIGNvb3JkcyBpbnRvIGRpc3BsYXkgY29vcmRzICovCisKKyAgICBpZiAoISByZWZyZXNoRGlzcGxheVByb3BlcnRpZXMoKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogVXBkYXRlIGRldmljZSBzdGF0ZSAqLworCisgICAgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZSogaW4gPSAmIGRldmljZS0+bXVsdGlUb3VjaFNjcmVlbjsKKyAgICBJbnB1dERldmljZTo6VG91Y2hEYXRhKiBvdXQgPSAmIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoOworCisgICAgdWludDMyX3QgaW5Db3VudCA9IGluLT5hY2N1bXVsYXRvci5wb2ludGVyQ291bnQ7CisgICAgdWludDMyX3Qgb3V0Q291bnQgPSAwOworICAgIGJvb2wgaGF2ZVBvaW50ZXJJZHMgPSB0cnVlOworCisgICAgb3V0LT5jbGVhcigpOworCisgICAgZm9yICh1aW50MzJfdCBpbkluZGV4ID0gMDsgaW5JbmRleCA8IGluQ291bnQ7IGluSW5kZXgrKykgeworICAgICAgICB1aW50MzJfdCBmaWVsZHMgPSBpbi0+YWNjdW11bGF0b3IucG9pbnRlcnNbaW5JbmRleF0uZmllbGRzOworCisgICAgICAgIGlmICgoZmllbGRzICYgUkVRVUlSRURfRklFTERTKSAhPSBSRVFVSVJFRF9GSUVMRFMpIHsKKyNpZiBERUJVR19QT0lOVEVSUworICAgICAgICAgICAgTE9HRCgiUG9pbnRlcnM6IE1pc3NpbmcgcmVxdWlyZWQgbXVsdGl0b3VjaCBwb2ludGVyIGZpZWxkczogaW5kZXg9JWQsIGZpZWxkcz0lZCIsCisgICAgICAgICAgICAgICAgICAgIGluSW5kZXgsIGZpZWxkcyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgaWYgKGluLT5hY2N1bXVsYXRvci5wb2ludGVyc1tpbkluZGV4XS5hYnNNVFRvdWNoTWFqb3IgPD0gMCkgeworICAgICAgICAgICAgLy8gUG9pbnRlciBpcyBub3QgZG93bi4gIERyb3AgaXQuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FIGFzc2lnbm1lbnQgb2YgcHJlc3N1cmUgbWF5IGJlIGluY29ycmVjdCwgcHJvYmFibHkgYmV0dGVyIHRvIGxldAorICAgICAgICAvLyBwcmVzc3VyZSA9IHRvdWNoIC8gd2lkdGguICBMYXRlciBvbiB3ZSBwYXNzIHdpZHRoIHRvIE1vdGlvbkV2ZW50IGFzIGEgc2l6ZSwgd2hpY2gKKyAgICAgICAgLy8gaXNuJ3QgcXVpdGUgcmlnaHQgZWl0aGVyLiAgU2hvdWxkIGJlIHVzaW5nIHRvdWNoIGZvciB0aGF0LgorICAgICAgICBvdXQtPnBvaW50ZXJzW291dENvdW50XS54ID0gaW4tPmFjY3VtdWxhdG9yLnBvaW50ZXJzW2luSW5kZXhdLmFic01UUG9zaXRpb25YOworICAgICAgICBvdXQtPnBvaW50ZXJzW291dENvdW50XS55ID0gaW4tPmFjY3VtdWxhdG9yLnBvaW50ZXJzW2luSW5kZXhdLmFic01UUG9zaXRpb25ZOworICAgICAgICBvdXQtPnBvaW50ZXJzW291dENvdW50XS5wcmVzc3VyZSA9IGluLT5hY2N1bXVsYXRvci5wb2ludGVyc1tpbkluZGV4XS5hYnNNVFRvdWNoTWFqb3I7CisgICAgICAgIG91dC0+cG9pbnRlcnNbb3V0Q291bnRdLnNpemUgPSBpbi0+YWNjdW11bGF0b3IucG9pbnRlcnNbaW5JbmRleF0uYWJzTVRXaWR0aE1ham9yOworCisgICAgICAgIGlmIChoYXZlUG9pbnRlcklkcykgeworICAgICAgICAgICAgaWYgKGZpZWxkcyAmIElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjoKKyAgICAgICAgICAgICAgICAgICAgRklFTERfQUJTX01UX1RSQUNLSU5HX0lEKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgaWQgPSB1aW50MzJfdChpbi0+YWNjdW11bGF0b3IucG9pbnRlcnNbaW5JbmRleF0uYWJzTVRUcmFja2luZ0lkKTsKKworICAgICAgICAgICAgICAgIGlmIChpZCA+IE1BWF9QT0lOVEVSX0lEKSB7CisjaWYgREVCVUdfUE9JTlRFUlMKKyAgICAgICAgICAgICAgICAgICAgTE9HRCgiUG9pbnRlcnM6IElnbm9yaW5nIGRyaXZlciBwcm92aWRlZCBwb2ludGVyIGlkICVkIGJlY2F1c2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdCBpcyBsYXJnZXIgdGhhbiBtYXggc3VwcG9ydGVkIGlkICVkIGZvciBvcHRpbWl6YXRpb25zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCwgTUFYX1BPSU5URVJfSUQpOworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIGhhdmVQb2ludGVySWRzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBvdXQtPnBvaW50ZXJzW291dENvdW50XS5pZCA9IGlkOworICAgICAgICAgICAgICAgICAgICBvdXQtPmlkVG9JbmRleFtpZF0gPSBvdXRDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgb3V0LT5pZEJpdHMubWFya0JpdChpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBoYXZlUG9pbnRlcklkcyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb3V0Q291bnQgKz0gMTsKKyAgICB9CisKKyAgICBvdXQtPnBvaW50ZXJDb3VudCA9IG91dENvdW50OworCisgICAgb25Ub3VjaFNjcmVlbkNoYW5nZWQod2hlbiwgZGV2aWNlLCBoYXZlUG9pbnRlcklkcyk7Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6Om9uU2luZ2xlVG91Y2hTY3JlZW5TdGF0ZUNoYW5nZWQobnNlY3NfdCB3aGVuLAorICAgICAgICBJbnB1dERldmljZSogZGV2aWNlKSB7CisgICAgLyogUmVmcmVzaCBkaXNwbGF5IHByb3BlcnRpZXMgc28gd2UgY2FuIG1hcCB0b3VjaCBzY3JlZW4gY29vcmRzIGludG8gZGlzcGxheSBjb29yZHMgKi8KKworICAgIGlmICghIHJlZnJlc2hEaXNwbGF5UHJvcGVydGllcygpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgZGV2aWNlIHN0YXRlICovCisKKyAgICBJbnB1dERldmljZTo6U2luZ2xlVG91Y2hTY3JlZW5TdGF0ZSogaW4gPSAmIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW47CisgICAgSW5wdXREZXZpY2U6OlRvdWNoRGF0YSogb3V0ID0gJiBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRUb3VjaDsKKworICAgIHVpbnQzMl90IGZpZWxkcyA9IGluLT5hY2N1bXVsYXRvci5maWVsZHM7CisKKyAgICBpZiAoZmllbGRzICYgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9CVE5fVE9VQ0gpIHsKKyAgICAgICAgaW4tPmN1cnJlbnQuZG93biA9IGluLT5hY2N1bXVsYXRvci5idG5Ub3VjaDsKKyAgICB9CisKKyAgICBpZiAoZmllbGRzICYgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfWCkgeworICAgICAgICBpbi0+Y3VycmVudC54ID0gaW4tPmFjY3VtdWxhdG9yLmFic1g7CisgICAgfQorCisgICAgaWYgKGZpZWxkcyAmIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX1kpIHsKKyAgICAgICAgaW4tPmN1cnJlbnQueSA9IGluLT5hY2N1bXVsYXRvci5hYnNZOworICAgIH0KKworICAgIGlmIChmaWVsZHMgJiBJbnB1dERldmljZTo6U2luZ2xlVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19QUkVTU1VSRSkgeworICAgICAgICBpbi0+Y3VycmVudC5wcmVzc3VyZSA9IGluLT5hY2N1bXVsYXRvci5hYnNQcmVzc3VyZTsKKyAgICB9CisKKyAgICBpZiAoZmllbGRzICYgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfVE9PTF9XSURUSCkgeworICAgICAgICBpbi0+Y3VycmVudC5zaXplID0gaW4tPmFjY3VtdWxhdG9yLmFic1Rvb2xXaWR0aDsKKyAgICB9CisKKyAgICBvdXQtPmNsZWFyKCk7CisKKyAgICBpZiAoaW4tPmN1cnJlbnQuZG93bikgeworICAgICAgICBvdXQtPnBvaW50ZXJDb3VudCA9IDE7CisgICAgICAgIG91dC0+cG9pbnRlcnNbMF0uaWQgPSAwOworICAgICAgICBvdXQtPnBvaW50ZXJzWzBdLnggPSBpbi0+Y3VycmVudC54OworICAgICAgICBvdXQtPnBvaW50ZXJzWzBdLnkgPSBpbi0+Y3VycmVudC55OworICAgICAgICBvdXQtPnBvaW50ZXJzWzBdLnByZXNzdXJlID0gaW4tPmN1cnJlbnQucHJlc3N1cmU7CisgICAgICAgIG91dC0+cG9pbnRlcnNbMF0uc2l6ZSA9IGluLT5jdXJyZW50LnNpemU7CisgICAgICAgIG91dC0+aWRUb0luZGV4WzBdID0gMDsKKyAgICAgICAgb3V0LT5pZEJpdHMubWFya0JpdCgwKTsKKyAgICB9CisKKyAgICBvblRvdWNoU2NyZWVuQ2hhbmdlZCh3aGVuLCBkZXZpY2UsIHRydWUpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpvblRvdWNoU2NyZWVuQ2hhbmdlZChuc2Vjc190IHdoZW4sCisgICAgICAgIElucHV0RGV2aWNlKiBkZXZpY2UsIGJvb2wgaGF2ZVBvaW50ZXJJZHMpIHsKKyAgICAvKiBBcHBseSBwb2xpY3kgKi8KKworICAgIGludDMyX3QgcG9saWN5QWN0aW9ucyA9IG1Qb2xpY3ktPmludGVyY2VwdFRvdWNoKHdoZW4pOworCisgICAgdWludDMyX3QgcG9saWN5RmxhZ3MgPSAwOworICAgIGlmICghIGFwcGx5U3RhbmRhcmRJbnB1dERpc3BhdGNoUG9saWN5QWN0aW9ucyh3aGVuLCBwb2xpY3lBY3Rpb25zLCAmIHBvbGljeUZsYWdzKSkgeworICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmxhc3RUb3VjaC5jbGVhcigpOworICAgICAgICByZXR1cm47IC8vIGV2ZW50IGRyb3BwZWQKKyAgICB9CisKKyAgICAvKiBQcmVwcm9jZXNzIHBvaW50ZXIgZGF0YSAqLworCisgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy51c2VCYWRUb3VjaEZpbHRlcikgeworICAgICAgICBpZiAoZGV2aWNlLT50b3VjaFNjcmVlbi5hcHBseUJhZFRvdWNoRmlsdGVyKCkpIHsKKyAgICAgICAgICAgIGhhdmVQb2ludGVySWRzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnVzZUp1bXB5VG91Y2hGaWx0ZXIpIHsKKyAgICAgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4uYXBwbHlKdW1weVRvdWNoRmlsdGVyKCkpIHsKKyAgICAgICAgICAgIGhhdmVQb2ludGVySWRzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoISBoYXZlUG9pbnRlcklkcykgeworICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmNhbGN1bGF0ZVBvaW50ZXJJZHMoKTsKKyAgICB9CisKKyAgICBJbnB1dERldmljZTo6VG91Y2hEYXRhIHRlbXA7CisgICAgSW5wdXREZXZpY2U6OlRvdWNoRGF0YSogc2F2ZWRUb3VjaDsKKyAgICBpZiAoZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnVzZUF2ZXJhZ2luZ1RvdWNoRmlsdGVyKSB7CisgICAgICAgIHRlbXAuY29weUZyb20oZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VG91Y2gpOworICAgICAgICBzYXZlZFRvdWNoID0gJiB0ZW1wOworCisgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uYXBwbHlBdmVyYWdpbmdUb3VjaEZpbHRlcigpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNhdmVkVG91Y2ggPSAmIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoOworICAgIH0KKworICAgIC8qIFByb2Nlc3MgdmlydHVhbCBrZXlzIG9yIHRvdWNoZXMgKi8KKworICAgIGlmICghIGNvbnN1bWVWaXJ0dWFsS2V5VG91Y2hlcyh3aGVuLCBkZXZpY2UsIHBvbGljeUZsYWdzKSkgeworICAgICAgICBkaXNwYXRjaFRvdWNoZXMod2hlbiwgZGV2aWNlLCBwb2xpY3lGbGFncyk7CisgICAgfQorCisgICAgLy8gQ29weSBjdXJyZW50IHRvdWNoIHRvIGxhc3QgdG91Y2ggaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBuZXh0IGN5Y2xlLgorICAgIGRldmljZS0+dG91Y2hTY3JlZW4ubGFzdFRvdWNoLmNvcHlGcm9tKCpzYXZlZFRvdWNoKTsKK30KKworYm9vbCBJbnB1dFJlYWRlcjo6Y29uc3VtZVZpcnR1YWxLZXlUb3VjaGVzKG5zZWNzX3Qgd2hlbiwKKyAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSwgdWludDMyX3QgcG9saWN5RmxhZ3MpIHsKKyAgICBpZiAoZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5kb3duKSB7CisgICAgICAgIGlmIChkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRUb3VjaC5wb2ludGVyQ291bnQgPT0gMCkgeworICAgICAgICAgICAgLy8gUG9pbnRlciB3ZW50IHVwIHdoaWxlIHZpcnR1YWwga2V5IHdhcyBkb3duLiAgU2VuZCBrZXkgdXAgZXZlbnQuCisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LmRvd24gPSBmYWxzZTsKKworI2lmIERFQlVHX1ZJUlRVQUxfS0VZUworICAgICAgICAgICAgTE9HRCgiVmlydHVhbEtleXM6IEdlbmVyYXRpbmcga2V5IHVwOiBrZXlDb2RlPSVkLCBzY2FuQ29kZT0lZCIsCisgICAgICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkua2V5Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5zY2FuQ29kZSk7CisjZW5kaWYKKworICAgICAgICAgICAgZGlzcGF0Y2hWaXJ0dWFsS2V5KHdoZW4sIGRldmljZSwgcG9saWN5RmxhZ3MsIEtFWV9FVkVOVF9BQ1RJT05fVVAsCisgICAgICAgICAgICAgICAgICAgIEtFWV9FVkVOVF9GTEFHX0ZST01fU1lTVEVNIHwgS0VZX0VWRU5UX0ZMQUdfVklSVFVBTF9IQVJEX0tFWSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gY29uc3VtZWQKKyAgICAgICAgfQorCisgICAgICAgIGludDMyX3QgeCA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLnBvaW50ZXJzWzBdLng7CisgICAgICAgIGludDMyX3QgeSA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLnBvaW50ZXJzWzBdLnk7CisgICAgICAgIGlmIChkZXZpY2UtPnRvdWNoU2NyZWVuLmlzUG9pbnRJbnNpZGVEaXNwbGF5KHgsIHkpCisgICAgICAgICAgICAgICAgfHwgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VG91Y2gucG9pbnRlckNvdW50ICE9IDEpIHsKKyAgICAgICAgICAgIC8vIFBvaW50ZXIgbW92ZWQgaW5zaWRlIHRoZSBkaXNwbGF5IGFyZWEgb3IgYW5vdGhlciBwb2ludGVyIGFsc28gd2VudCBkb3duLgorICAgICAgICAgICAgLy8gU2VuZCBrZXkgY2FuY2VsbGF0aW9uLgorICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5kb3duID0gZmFsc2U7CisKKyNpZiBERUJVR19WSVJUVUFMX0tFWVMKKyAgICAgICAgICAgIExPR0QoIlZpcnR1YWxLZXlzOiBDYW5jZWxpbmcga2V5OiBrZXlDb2RlPSVkLCBzY2FuQ29kZT0lZCIsCisgICAgICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkua2V5Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5zY2FuQ29kZSk7CisjZW5kaWYKKworICAgICAgICAgICAgZGlzcGF0Y2hWaXJ0dWFsS2V5KHdoZW4sIGRldmljZSwgcG9saWN5RmxhZ3MsIEtFWV9FVkVOVF9BQ1RJT05fVVAsCisgICAgICAgICAgICAgICAgICAgIEtFWV9FVkVOVF9GTEFHX0ZST01fU1lTVEVNIHwgS0VZX0VWRU5UX0ZMQUdfVklSVFVBTF9IQVJEX0tFWQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgS0VZX0VWRU5UX0ZMQUdfQ0FOQ0VMRUQpOworCisgICAgICAgICAgICAvLyBDbGVhciB0aGUgbGFzdCB0b3VjaCBkYXRhIHNvIHdlIHdpbGwgY29uc2lkZXIgdGhlIHBvaW50ZXIgYXMgaGF2aW5nIGp1c3QgYmVlbgorICAgICAgICAgICAgLy8gcHJlc3NlZCBkb3duIHdoZW4gZ2VuZXJhdGluZyBzdWJzZXF1ZW50IG1vdGlvbiBldmVudHMuCisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmxhc3RUb3VjaC5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBub3QgY29uc3VtZWQKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VG91Y2gucG9pbnRlckNvdW50ID09IDEKKyAgICAgICAgICAgICYmIGRldmljZS0+dG91Y2hTY3JlZW4ubGFzdFRvdWNoLnBvaW50ZXJDb3VudCA9PSAwKSB7CisgICAgICAgIGludDMyX3QgeCA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLnBvaW50ZXJzWzBdLng7CisgICAgICAgIGludDMyX3QgeSA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLnBvaW50ZXJzWzBdLnk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGV2aWNlLT50b3VjaFNjcmVlbi52aXJ0dWFsS2V5cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgY29uc3QgSW5wdXREZXZpY2U6OlZpcnR1YWxLZXkmIHZpcnR1YWxLZXkgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLnZpcnR1YWxLZXlzW2ldOworCisjaWYgREVCVUdfVklSVFVBTF9LRVlTCisgICAgICAgICAgICBMT0dEKCJWaXJ0dWFsS2V5czogSGl0IHRlc3QgKCVkLCAlZCk6IGtleUNvZGU9JWQsIHNjYW5Db2RlPSVkLCAiCisgICAgICAgICAgICAgICAgICAgICJsZWZ0PSVkLCB0b3A9JWQsIHJpZ2h0PSVkLCBib3R0b209JWQiLAorICAgICAgICAgICAgICAgICAgICB4LCB5LAorICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsS2V5LmtleUNvZGUsIHZpcnR1YWxLZXkuc2NhbkNvZGUsCisgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxLZXkuaGl0TGVmdCwgdmlydHVhbEtleS5oaXRUb3AsCisgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxLZXkuaGl0UmlnaHQsIHZpcnR1YWxLZXkuaGl0Qm90dG9tKTsKKyNlbmRpZgorCisgICAgICAgICAgICBpZiAodmlydHVhbEtleS5pc0hpdCh4LCB5KSkgeworICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuZG93biA9IHRydWU7CisgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5kb3duVGltZSA9IHdoZW47CisgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5rZXlDb2RlID0gdmlydHVhbEtleS5rZXlDb2RlOworICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuc2NhbkNvZGUgPSB2aXJ0dWFsS2V5LnNjYW5Db2RlOworCisjaWYgREVCVUdfVklSVFVBTF9LRVlTCisgICAgICAgICAgICAgICAgICAgIExPR0QoIlZpcnR1YWxLZXlzOiBHZW5lcmF0aW5nIGtleSBkb3duOiBrZXlDb2RlPSVkLCBzY2FuQ29kZT0lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5rZXlDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuc2NhbkNvZGUpOworI2VuZGlmCisKKyAgICAgICAgICAgICAgICBkaXNwYXRjaFZpcnR1YWxLZXkod2hlbiwgZGV2aWNlLCBwb2xpY3lGbGFncywgS0VZX0VWRU5UX0FDVElPTl9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgS0VZX0VWRU5UX0ZMQUdfRlJPTV9TWVNURU0gfCBLRVlfRVZFTlRfRkxBR19WSVJUVUFMX0hBUkRfS0VZKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gY29uc3VtZWQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsgLy8gbm90IGNvbnN1bWVkCit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmRpc3BhdGNoVmlydHVhbEtleShuc2Vjc190IHdoZW4sCisgICAgICAgIElucHV0RGV2aWNlKiBkZXZpY2UsIHVpbnQzMl90IHBvbGljeUZsYWdzLAorICAgICAgICBpbnQzMl90IGtleUV2ZW50QWN0aW9uLCBpbnQzMl90IGtleUV2ZW50RmxhZ3MpIHsKKyAgICB1cGRhdGVFeHBvcnRlZFZpcnR1YWxLZXlTdGF0ZSgpOworCisgICAgaW50MzJfdCBrZXlDb2RlID0gZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5rZXlDb2RlOworICAgIGludDMyX3Qgc2NhbkNvZGUgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LnNjYW5Db2RlOworICAgIG5zZWNzX3QgZG93blRpbWUgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LmRvd25UaW1lOworICAgIGludDMyX3QgbWV0YVN0YXRlID0gZ2xvYmFsTWV0YVN0YXRlKCk7CisKKyAgICBtUG9saWN5LT52aXJ0dWFsS2V5RmVlZGJhY2sod2hlbiwgZGV2aWNlLT5pZCwga2V5RXZlbnRBY3Rpb24sIGtleUV2ZW50RmxhZ3MsCisgICAgICAgICAgICBrZXlDb2RlLCBzY2FuQ29kZSwgbWV0YVN0YXRlLCBkb3duVGltZSk7CisKKyAgICBpbnQzMl90IHBvbGljeUFjdGlvbnMgPSBtUG9saWN5LT5pbnRlcmNlcHRLZXkod2hlbiwgZGV2aWNlLT5pZCwKKyAgICAgICAgICAgIGtleUV2ZW50QWN0aW9uID09IEtFWV9FVkVOVF9BQ1RJT05fRE9XTiwga2V5Q29kZSwgc2NhbkNvZGUsIHBvbGljeUZsYWdzKTsKKworICAgIGlmIChhcHBseVN0YW5kYXJkSW5wdXREaXNwYXRjaFBvbGljeUFjdGlvbnMod2hlbiwgcG9saWN5QWN0aW9ucywgJiBwb2xpY3lGbGFncykpIHsKKyAgICAgICAgbURpc3BhdGNoZXItPm5vdGlmeUtleSh3aGVuLCBkZXZpY2UtPmlkLCBJTlBVVF9FVkVOVF9OQVRVUkVfS0VZLCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgICAgICBrZXlFdmVudEFjdGlvbiwga2V5RXZlbnRGbGFncywga2V5Q29kZSwgc2NhbkNvZGUsIG1ldGFTdGF0ZSwgZG93blRpbWUpOworICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6ZGlzcGF0Y2hUb3VjaGVzKG5zZWNzX3Qgd2hlbiwKKyAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSwgdWludDMyX3QgcG9saWN5RmxhZ3MpIHsKKyAgICB1aW50MzJfdCBjdXJyZW50UG9pbnRlckNvdW50ID0gZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VG91Y2gucG9pbnRlckNvdW50OworICAgIHVpbnQzMl90IGxhc3RQb2ludGVyQ291bnQgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmxhc3RUb3VjaC5wb2ludGVyQ291bnQ7CisgICAgaWYgKGN1cnJlbnRQb2ludGVyQ291bnQgPT0gMCAmJiBsYXN0UG9pbnRlckNvdW50ID09IDApIHsKKyAgICAgICAgcmV0dXJuOyAvLyBub3RoaW5nIHRvIGRvIQorICAgIH0KKworICAgIEJpdFNldDMyIGN1cnJlbnRJZEJpdHMgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRUb3VjaC5pZEJpdHM7CisgICAgQml0U2V0MzIgbGFzdElkQml0cyA9IGRldmljZS0+dG91Y2hTY3JlZW4ubGFzdFRvdWNoLmlkQml0czsKKworICAgIGlmIChjdXJyZW50SWRCaXRzID09IGxhc3RJZEJpdHMpIHsKKyAgICAgICAgLy8gTm8gcG9pbnRlciBpZCBjaGFuZ2VzIHNvIHRoaXMgaXMgYSBtb3ZlIGV2ZW50LgorICAgICAgICAvLyBUaGUgZGlzcGF0Y2hlciB0YWtlcyBjYXJlIG9mIGJhdGNoaW5nIG1vdmVzIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVhbCB3aXRoIHRoYXQgaGVyZS4KKyAgICAgICAgaW50MzJfdCBtb3Rpb25FdmVudEFjdGlvbiA9IE1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRTsKKyAgICAgICAgZGlzcGF0Y2hUb3VjaCh3aGVuLCBkZXZpY2UsIHBvbGljeUZsYWdzLCAmIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLAorICAgICAgICAgICAgICAgIGN1cnJlbnRJZEJpdHMsIG1vdGlvbkV2ZW50QWN0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGVyZSBtYXkgYmUgcG9pbnRlcnMgZ29pbmcgdXAgYW5kIHBvaW50ZXJzIGdvaW5nIGRvd24gYXQgdGhlIHNhbWUgdGltZSB3aGVuIHBvaW50ZXIKKyAgICAgICAgLy8gaWRzIGFyZSByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGRyaXZlci4KKyAgICAgICAgQml0U2V0MzIgdXBJZEJpdHMobGFzdElkQml0cy52YWx1ZSAmIH4gY3VycmVudElkQml0cy52YWx1ZSk7CisgICAgICAgIEJpdFNldDMyIGRvd25JZEJpdHMoY3VycmVudElkQml0cy52YWx1ZSAmIH4gbGFzdElkQml0cy52YWx1ZSk7CisgICAgICAgIEJpdFNldDMyIGFjdGl2ZUlkQml0cyhsYXN0SWRCaXRzLnZhbHVlKTsKKworICAgICAgICB3aGlsZSAoISB1cElkQml0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IHVwSWQgPSB1cElkQml0cy5maXJzdE1hcmtlZEJpdCgpOworICAgICAgICAgICAgdXBJZEJpdHMuY2xlYXJCaXQodXBJZCk7CisgICAgICAgICAgICBCaXRTZXQzMiBvbGRBY3RpdmVJZEJpdHMgPSBhY3RpdmVJZEJpdHM7CisgICAgICAgICAgICBhY3RpdmVJZEJpdHMuY2xlYXJCaXQodXBJZCk7CisKKyAgICAgICAgICAgIGludDMyX3QgbW90aW9uRXZlbnRBY3Rpb247CisgICAgICAgICAgICBpZiAoYWN0aXZlSWRCaXRzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50QWN0aW9uID0gTU9USU9OX0VWRU5UX0FDVElPTl9VUDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbW90aW9uRXZlbnRBY3Rpb24gPSBNT1RJT05fRVZFTlRfQUNUSU9OX1BPSU5URVJfVVAKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKHVwSWQgPDwgTU9USU9OX0VWRU5UX0FDVElPTl9QT0lOVEVSX0lOREVYX1NISUZUKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGlzcGF0Y2hUb3VjaCh3aGVuLCBkZXZpY2UsIHBvbGljeUZsYWdzLCAmIGRldmljZS0+dG91Y2hTY3JlZW4ubGFzdFRvdWNoLAorICAgICAgICAgICAgICAgICAgICBvbGRBY3RpdmVJZEJpdHMsIG1vdGlvbkV2ZW50QWN0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlICghIGRvd25JZEJpdHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICB1aW50MzJfdCBkb3duSWQgPSBkb3duSWRCaXRzLmZpcnN0TWFya2VkQml0KCk7CisgICAgICAgICAgICBkb3duSWRCaXRzLmNsZWFyQml0KGRvd25JZCk7CisgICAgICAgICAgICBCaXRTZXQzMiBvbGRBY3RpdmVJZEJpdHMgPSBhY3RpdmVJZEJpdHM7CisgICAgICAgICAgICBhY3RpdmVJZEJpdHMubWFya0JpdChkb3duSWQpOworCisgICAgICAgICAgICBpbnQzMl90IG1vdGlvbkV2ZW50QWN0aW9uOworICAgICAgICAgICAgaWYgKG9sZEFjdGl2ZUlkQml0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBtb3Rpb25FdmVudEFjdGlvbiA9IE1PVElPTl9FVkVOVF9BQ1RJT05fRE9XTjsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmRvd25UaW1lID0gd2hlbjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbW90aW9uRXZlbnRBY3Rpb24gPSBNT1RJT05fRVZFTlRfQUNUSU9OX1BPSU5URVJfRE9XTgorICAgICAgICAgICAgICAgICAgICAgICAgfCAoZG93bklkIDw8IE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9TSElGVCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRpc3BhdGNoVG91Y2god2hlbiwgZGV2aWNlLCBwb2xpY3lGbGFncywgJiBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRUb3VjaCwKKyAgICAgICAgICAgICAgICAgICAgYWN0aXZlSWRCaXRzLCBtb3Rpb25FdmVudEFjdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmRpc3BhdGNoVG91Y2gobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlLCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgSW5wdXREZXZpY2U6OlRvdWNoRGF0YSogdG91Y2gsIEJpdFNldDMyIGlkQml0cywKKyAgICAgICAgaW50MzJfdCBtb3Rpb25FdmVudEFjdGlvbikgeworICAgIGludDMyX3Qgb3JpZW50ZWRXaWR0aCwgb3JpZW50ZWRIZWlnaHQ7CisgICAgc3dpdGNoIChtRGlzcGxheU9yaWVudGF0aW9uKSB7CisgICAgY2FzZSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6Uk9UQVRJT05fOTA6CisgICAgY2FzZSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6Uk9UQVRJT05fMjcwOgorICAgICAgICBvcmllbnRlZFdpZHRoID0gbURpc3BsYXlIZWlnaHQ7CisgICAgICAgIG9yaWVudGVkSGVpZ2h0ID0gbURpc3BsYXlXaWR0aDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgb3JpZW50ZWRXaWR0aCA9IG1EaXNwbGF5V2lkdGg7CisgICAgICAgIG9yaWVudGVkSGVpZ2h0ID0gbURpc3BsYXlIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHVpbnQzMl90IHBvaW50ZXJDb3VudCA9IDA7CisgICAgaW50MzJfdCBwb2ludGVySWRzW01BWF9QT0lOVEVSU107CisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzW01BWF9QT0lOVEVSU107CisKKyAgICBjb25zdCBJbnB1dERldmljZTo6VG91Y2hTY3JlZW5TdGF0ZTo6UHJlY2FsY3VsYXRlZCYgcHJlY2FsY3VsYXRlZCA9CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQ7CisKKyAgICAvLyBXYWxrIHRocm91Z2ggdGhlIHRoZSBhY3RpdmUgcG9pbnRlcnMgYW5kIG1hcCB0b3VjaCBzY3JlZW4gY29vcmRpbmF0ZXMgKFRvdWNoRGF0YSkgaW50bworICAgIC8vIGRpc3BsYXkgY29vcmRpbmF0ZXMgKFBvaW50ZXJDb29yZHMpIGFuZCBhZGp1c3QgZm9yIGRpc3BsYXkgb3JpZW50YXRpb24uCisgICAgd2hpbGUgKCEgaWRCaXRzLmlzRW1wdHkoKSkgeworICAgICAgICB1aW50MzJfdCBpZCA9IGlkQml0cy5maXJzdE1hcmtlZEJpdCgpOworICAgICAgICBpZEJpdHMuY2xlYXJCaXQoaWQpOworICAgICAgICB1aW50MzJfdCBpbmRleCA9IHRvdWNoLT5pZFRvSW5kZXhbaWRdOworCisgICAgICAgIGZsb2F0IHggPSBmbG9hdCh0b3VjaC0+cG9pbnRlcnNbaW5kZXhdLngKKyAgICAgICAgICAgICAgICAtIHByZWNhbGN1bGF0ZWQueE9yaWdpbikgKiBwcmVjYWxjdWxhdGVkLnhTY2FsZTsKKyAgICAgICAgZmxvYXQgeSA9IGZsb2F0KHRvdWNoLT5wb2ludGVyc1tpbmRleF0ueQorICAgICAgICAgICAgICAgIC0gcHJlY2FsY3VsYXRlZC55T3JpZ2luKSAqIHByZWNhbGN1bGF0ZWQueVNjYWxlOworICAgICAgICBmbG9hdCBwcmVzc3VyZSA9IGZsb2F0KHRvdWNoLT5wb2ludGVyc1tpbmRleF0ucHJlc3N1cmUKKyAgICAgICAgICAgICAgICAtIHByZWNhbGN1bGF0ZWQucHJlc3N1cmVPcmlnaW4pICogcHJlY2FsY3VsYXRlZC5wcmVzc3VyZVNjYWxlOworICAgICAgICBmbG9hdCBzaXplID0gZmxvYXQodG91Y2gtPnBvaW50ZXJzW2luZGV4XS5zaXplCisgICAgICAgICAgICAgICAgLSBwcmVjYWxjdWxhdGVkLnNpemVPcmlnaW4pICogcHJlY2FsY3VsYXRlZC5zaXplU2NhbGU7CisKKyAgICAgICAgc3dpdGNoIChtRGlzcGxheU9yaWVudGF0aW9uKSB7CisgICAgICAgIGNhc2UgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OlJPVEFUSU9OXzkwOiB7CisgICAgICAgICAgICBmbG9hdCB4VGVtcCA9IHg7CisgICAgICAgICAgICB4ID0geTsKKyAgICAgICAgICAgIHkgPSBtRGlzcGxheVdpZHRoIC0geFRlbXA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpST1RBVElPTl8xODA6IHsKKyAgICAgICAgICAgIHggPSBtRGlzcGxheVdpZHRoIC0geDsKKyAgICAgICAgICAgIHkgPSBtRGlzcGxheUhlaWdodCAtIHk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpST1RBVElPTl8yNzA6IHsKKyAgICAgICAgICAgIGZsb2F0IHhUZW1wID0geDsKKyAgICAgICAgICAgIHggPSBtRGlzcGxheUhlaWdodCAtIHk7CisgICAgICAgICAgICB5ID0geFRlbXA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcG9pbnRlcklkc1twb2ludGVyQ291bnRdID0gaW50MzJfdChpZCk7CisKKyAgICAgICAgcG9pbnRlckNvb3Jkc1twb2ludGVyQ291bnRdLnggPSB4OworICAgICAgICBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF0ueSA9IHk7CisgICAgICAgIHBvaW50ZXJDb29yZHNbcG9pbnRlckNvdW50XS5wcmVzc3VyZSA9IHByZXNzdXJlOworICAgICAgICBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF0uc2l6ZSA9IHNpemU7CisKKyAgICAgICAgcG9pbnRlckNvdW50ICs9IDE7CisgICAgfQorCisgICAgLy8gQ2hlY2sgZWRnZSBmbGFncyBieSBsb29raW5nIG9ubHkgYXQgdGhlIGZpcnN0IHBvaW50ZXIgc2luY2UgdGhlIGZsYWdzIGFyZQorICAgIC8vIGdsb2JhbCB0byB0aGUgZXZlbnQuCisgICAgLy8gWFhYIE1heWJlIHdlIHNob3VsZCByZXZpc2UgdGhlIGVkZ2UgZmxhZ3MgQVBJIHRvIHdvcmsgb24gYSBwZXItcG9pbnRlciBiYXNpcy4KKyAgICBpbnQzMl90IG1vdGlvbkV2ZW50RWRnZUZsYWdzID0gMDsKKyAgICBpZiAobW90aW9uRXZlbnRBY3Rpb24gPT0gTU9USU9OX0VWRU5UX0FDVElPTl9ET1dOKSB7CisgICAgICAgIGlmIChwb2ludGVyQ29vcmRzWzBdLnggPD0gMCkgeworICAgICAgICAgICAgbW90aW9uRXZlbnRFZGdlRmxhZ3MgfD0gTU9USU9OX0VWRU5UX0VER0VfRkxBR19MRUZUOworICAgICAgICB9IGVsc2UgaWYgKHBvaW50ZXJDb29yZHNbMF0ueCA+PSBvcmllbnRlZFdpZHRoKSB7CisgICAgICAgICAgICBtb3Rpb25FdmVudEVkZ2VGbGFncyB8PSBNT1RJT05fRVZFTlRfRURHRV9GTEFHX1JJR0hUOworICAgICAgICB9CisgICAgICAgIGlmIChwb2ludGVyQ29vcmRzWzBdLnkgPD0gMCkgeworICAgICAgICAgICAgbW90aW9uRXZlbnRFZGdlRmxhZ3MgfD0gTU9USU9OX0VWRU5UX0VER0VfRkxBR19UT1A7CisgICAgICAgIH0gZWxzZSBpZiAocG9pbnRlckNvb3Jkc1swXS55ID49IG9yaWVudGVkSGVpZ2h0KSB7CisgICAgICAgICAgICBtb3Rpb25FdmVudEVkZ2VGbGFncyB8PSBNT1RJT05fRVZFTlRfRURHRV9GTEFHX0JPVFRPTTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5zZWNzX3QgZG93blRpbWUgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmRvd25UaW1lOworICAgIG1EaXNwYXRjaGVyLT5ub3RpZnlNb3Rpb24od2hlbiwgZGV2aWNlLT5pZCwgSU5QVVRfRVZFTlRfTkFUVVJFX1RPVUNILCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIG1vdGlvbkV2ZW50QWN0aW9uLCBnbG9iYWxNZXRhU3RhdGUoKSwgbW90aW9uRXZlbnRFZGdlRmxhZ3MsCisgICAgICAgICAgICBwb2ludGVyQ291bnQsIHBvaW50ZXJJZHMsIHBvaW50ZXJDb29yZHMsCisgICAgICAgICAgICAwLCAwLCBkb3duVGltZSk7Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6Om9uVHJhY2tiYWxsU3RhdGVDaGFuZ2VkKG5zZWNzX3Qgd2hlbiwKKyAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSkgeworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBERUxUQV9GSUVMRFMgPQorICAgICAgICAgICAgSW5wdXREZXZpY2U6OlRyYWNrYmFsbFN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfUkVMX1gKKyAgICAgICAgICAgIHwgSW5wdXREZXZpY2U6OlRyYWNrYmFsbFN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfUkVMX1k7CisKKyAgICAvKiBSZWZyZXNoIGRpc3BsYXkgcHJvcGVydGllcyBzbyB3ZSBjYW4gdHJhY2tiYWxsIG1vdmVzIGFjY29yZGluZyB0byBkaXNwbGF5IG9yaWVudGF0aW9uICovCisKKyAgICBpZiAoISByZWZyZXNoRGlzcGxheVByb3BlcnRpZXMoKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogVXBkYXRlIGRldmljZSBzdGF0ZSAqLworCisgICAgdWludDMyX3QgZmllbGRzID0gZGV2aWNlLT50cmFja2JhbGwuYWNjdW11bGF0b3IuZmllbGRzOworICAgIGJvb2wgZG93bkNoYW5nZWQgPSBmaWVsZHMgJiBJbnB1dERldmljZTo6VHJhY2tiYWxsU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9CVE5fTU9VU0U7CisgICAgYm9vbCBkZWx0YUNoYW5nZWQgPSBmaWVsZHMgJiBERUxUQV9GSUVMRFM7CisKKyAgICBib29sIGRvd247CisgICAgaWYgKGRvd25DaGFuZ2VkKSB7CisgICAgICAgIGlmIChkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5idG5Nb3VzZSkgeworICAgICAgICAgICAgZGV2aWNlLT50cmFja2JhbGwuY3VycmVudC5kb3duID0gdHJ1ZTsKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmN1cnJlbnQuZG93blRpbWUgPSB3aGVuOworICAgICAgICAgICAgZG93biA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5jdXJyZW50LmRvd24gPSBmYWxzZTsKKyAgICAgICAgICAgIGRvd24gPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRvd24gPSBkZXZpY2UtPnRyYWNrYmFsbC5jdXJyZW50LmRvd247CisgICAgfQorCisgICAgLyogQXBwbHkgcG9saWN5ICovCisKKyAgICBpbnQzMl90IHBvbGljeUFjdGlvbnMgPSBtUG9saWN5LT5pbnRlcmNlcHRUcmFja2JhbGwod2hlbiwgZG93bkNoYW5nZWQsIGRvd24sIGRlbHRhQ2hhbmdlZCk7CisKKyAgICB1aW50MzJfdCBwb2xpY3lGbGFncyA9IDA7CisgICAgaWYgKCEgYXBwbHlTdGFuZGFyZElucHV0RGlzcGF0Y2hQb2xpY3lBY3Rpb25zKHdoZW4sIHBvbGljeUFjdGlvbnMsICYgcG9saWN5RmxhZ3MpKSB7CisgICAgICAgIHJldHVybjsgLy8gZXZlbnQgZHJvcHBlZAorICAgIH0KKworICAgIC8qIEVucXVldWUgbW90aW9uIGV2ZW50IGZvciBkaXNwYXRjaCAqLworCisgICAgaW50MzJfdCBtb3Rpb25FdmVudEFjdGlvbjsKKyAgICBpZiAoZG93bkNoYW5nZWQpIHsKKyAgICAgICAgbW90aW9uRXZlbnRBY3Rpb24gPSBkb3duID8gTU9USU9OX0VWRU5UX0FDVElPTl9ET1dOIDogTU9USU9OX0VWRU5UX0FDVElPTl9VUDsKKyAgICB9IGVsc2UgeworICAgICAgICBtb3Rpb25FdmVudEFjdGlvbiA9IE1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRTsKKyAgICB9CisKKyAgICBpbnQzMl90IHBvaW50ZXJJZCA9IDA7CisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzOworICAgIHBvaW50ZXJDb29yZHMueCA9IGZpZWxkcyAmIElucHV0RGV2aWNlOjpUcmFja2JhbGxTdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX1JFTF9YCisgICAgICAgICAgICA/IGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLnJlbFggKiBkZXZpY2UtPnRyYWNrYmFsbC5wcmVjYWxjdWxhdGVkLnhTY2FsZSA6IDA7CisgICAgcG9pbnRlckNvb3Jkcy55ID0gZmllbGRzICYgSW5wdXREZXZpY2U6OlRyYWNrYmFsbFN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfUkVMX1kKKyAgICAgICAgICAgID8gZGV2aWNlLT50cmFja2JhbGwuYWNjdW11bGF0b3IucmVsWSAqIGRldmljZS0+dHJhY2tiYWxsLnByZWNhbGN1bGF0ZWQueVNjYWxlIDogMDsKKyAgICBwb2ludGVyQ29vcmRzLnByZXNzdXJlID0gMS4wZjsgLy8gWFhYIENvbnNpZGVyIG1ha2luZyB0aGlzIDEuMGYgaWYgZG93biwgMCBvdGhlcndpc2UuCisgICAgcG9pbnRlckNvb3Jkcy5zaXplID0gMDsKKworICAgIGZsb2F0IHRlbXA7CisgICAgc3dpdGNoIChtRGlzcGxheU9yaWVudGF0aW9uKSB7CisgICAgY2FzZSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6Uk9UQVRJT05fOTA6CisgICAgICAgIHRlbXAgPSBwb2ludGVyQ29vcmRzLng7CisgICAgICAgIHBvaW50ZXJDb29yZHMueCA9IHBvaW50ZXJDb29yZHMueTsKKyAgICAgICAgcG9pbnRlckNvb3Jkcy55ID0gLSB0ZW1wOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OlJPVEFUSU9OXzE4MDoKKyAgICAgICAgcG9pbnRlckNvb3Jkcy54ID0gLSBwb2ludGVyQ29vcmRzLng7CisgICAgICAgIHBvaW50ZXJDb29yZHMueSA9IC0gcG9pbnRlckNvb3Jkcy55OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OlJPVEFUSU9OXzI3MDoKKyAgICAgICAgdGVtcCA9IHBvaW50ZXJDb29yZHMueDsKKyAgICAgICAgcG9pbnRlckNvb3Jkcy54ID0gLSBwb2ludGVyQ29vcmRzLnk7CisgICAgICAgIHBvaW50ZXJDb29yZHMueSA9IHRlbXA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1EaXNwYXRjaGVyLT5ub3RpZnlNb3Rpb24od2hlbiwgZGV2aWNlLT5pZCwgSU5QVVRfRVZFTlRfTkFUVVJFX1RSQUNLQkFMTCwgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICBtb3Rpb25FdmVudEFjdGlvbiwgZ2xvYmFsTWV0YVN0YXRlKCksIE1PVElPTl9FVkVOVF9FREdFX0ZMQUdfTk9ORSwKKyAgICAgICAgICAgIDEsICYgcG9pbnRlcklkLCAmIHBvaW50ZXJDb29yZHMsCisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5wcmVjYWxjdWxhdGVkLnhQcmVjaXNpb24sCisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5wcmVjYWxjdWxhdGVkLnlQcmVjaXNpb24sCisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5jdXJyZW50LmRvd25UaW1lKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6b25Db25maWd1cmF0aW9uQ2hhbmdlZChuc2Vjc190IHdoZW4pIHsKKyAgICAvLyBSZXNldCBnbG9iYWwgbWV0YSBzdGF0ZSBiZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGxpc3Qgb2YgYWxsIGNvbmZpZ3VyZWQgZGV2aWNlcy4KKyAgICByZXNldEdsb2JhbE1ldGFTdGF0ZSgpOworCisgICAgLy8gUmVzZXQgdmlydHVhbCBrZXlzLCBqdXN0IGluIGNhc2UuCisgICAgdXBkYXRlRXhwb3J0ZWRWaXJ0dWFsS2V5U3RhdGUoKTsKKworICAgIC8vIFVwZGF0ZSBpbnB1dCBjb25maWd1cmF0aW9uLgorICAgIHVwZGF0ZUV4cG9ydGVkSW5wdXRDb25maWd1cmF0aW9uKCk7CisKKyAgICAvLyBFbnF1ZXVlIGNvbmZpZ3VyYXRpb24gY2hhbmdlZC4KKyAgICBtRGlzcGF0Y2hlci0+bm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQod2hlbik7Cit9CisKK2Jvb2wgSW5wdXRSZWFkZXI6OmFwcGx5U3RhbmRhcmRJbnB1dERpc3BhdGNoUG9saWN5QWN0aW9ucyhuc2Vjc190IHdoZW4sCisgICAgICAgIGludDMyX3QgcG9saWN5QWN0aW9ucywgdWludDMyX3QqIHBvbGljeUZsYWdzKSB7CisgICAgaWYgKHBvbGljeUFjdGlvbnMgJiBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX0FQUF9TV0lUQ0hfQ09NSU5HKSB7CisgICAgICAgIG1EaXNwYXRjaGVyLT5ub3RpZnlBcHBTd2l0Y2hDb21pbmcod2hlbik7CisgICAgfQorCisgICAgaWYgKHBvbGljeUFjdGlvbnMgJiBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX1dPS0VfSEVSRSkgeworICAgICAgICAqcG9saWN5RmxhZ3MgfD0gUE9MSUNZX0ZMQUdfV09LRV9IRVJFOworICAgIH0KKworICAgIGlmIChwb2xpY3lBY3Rpb25zICYgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OkFDVElPTl9CUklHSFRfSEVSRSkgeworICAgICAgICAqcG9saWN5RmxhZ3MgfD0gUE9MSUNZX0ZMQUdfQlJJR0hUX0hFUkU7CisgICAgfQorCisgICAgcmV0dXJuIHBvbGljeUFjdGlvbnMgJiBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX0RJU1BBVENIOworfQorCit2b2lkIElucHV0UmVhZGVyOjpyZXNldERpc3BsYXlQcm9wZXJ0aWVzKCkgeworICAgIG1EaXNwbGF5V2lkdGggPSBtRGlzcGxheUhlaWdodCA9IC0xOworICAgIG1EaXNwbGF5T3JpZW50YXRpb24gPSAtMTsKK30KKworYm9vbCBJbnB1dFJlYWRlcjo6cmVmcmVzaERpc3BsYXlQcm9wZXJ0aWVzKCkgeworICAgIGludDMyX3QgbmV3V2lkdGgsIG5ld0hlaWdodCwgbmV3T3JpZW50YXRpb247CisgICAgaWYgKG1Qb2xpY3ktPmdldERpc3BsYXlJbmZvKDAsICYgbmV3V2lkdGgsICYgbmV3SGVpZ2h0LCAmIG5ld09yaWVudGF0aW9uKSkgeworICAgICAgICBpZiAobmV3V2lkdGggIT0gbURpc3BsYXlXaWR0aCB8fCBuZXdIZWlnaHQgIT0gbURpc3BsYXlIZWlnaHQpIHsKKyAgICAgICAgICAgIExPR0QoIkRpc3BsYXkgc2l6ZSBjaGFuZ2VkIGZyb20gJWR4JWQgdG8gJWR4JWQsIHVwZGF0aW5nIGRldmljZSBjb25maWd1cmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgbURpc3BsYXlXaWR0aCwgbURpc3BsYXlIZWlnaHQsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOworCisgICAgICAgICAgICBtRGlzcGxheVdpZHRoID0gbmV3V2lkdGg7CisgICAgICAgICAgICBtRGlzcGxheUhlaWdodCA9IG5ld0hlaWdodDsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRGV2aWNlcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGNvbmZpZ3VyZURldmljZUZvckN1cnJlbnREaXNwbGF5U2l6ZShtRGV2aWNlcy52YWx1ZUF0KGkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChuZXdPcmllbnRhdGlvbiAhPSBtRGlzcGxheU9yaWVudGF0aW9uKSB7CisgICAgICAgICAgICBMT0dEKCJEaXNwbGF5IG9yaWVudGF0aW9uIGNoYW5nZWQgdG8gJWQiLCBtRGlzcGxheU9yaWVudGF0aW9uKTsKKworICAgICAgICAgICAgbURpc3BsYXlPcmllbnRhdGlvbiA9IG5ld09yaWVudGF0aW9uOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc2V0RGlzcGxheVByb3BlcnRpZXMoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworSW5wdXREZXZpY2UqIElucHV0UmVhZGVyOjpnZXREZXZpY2UoaW50MzJfdCBkZXZpY2VJZCkgeworICAgIHNzaXplX3QgaW5kZXggPSBtRGV2aWNlcy5pbmRleE9mS2V5KGRldmljZUlkKTsKKyAgICByZXR1cm4gaW5kZXggPj0gMCA/IG1EZXZpY2VzLnZhbHVlQXQoKHNpemVfdCkgaW5kZXgpIDogTlVMTDsKK30KKworSW5wdXREZXZpY2UqIElucHV0UmVhZGVyOjpnZXROb25JZ25vcmVkRGV2aWNlKGludDMyX3QgZGV2aWNlSWQpIHsKKyAgICBJbnB1dERldmljZSogZGV2aWNlID0gZ2V0RGV2aWNlKGRldmljZUlkKTsKKyAgICByZXR1cm4gZGV2aWNlICYmICEgZGV2aWNlLT5pZ25vcmVkID8gZGV2aWNlIDogTlVMTDsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6YWRkRGV2aWNlKG5zZWNzX3Qgd2hlbiwgaW50MzJfdCBkZXZpY2VJZCkgeworICAgIHVpbnQzMl90IGNsYXNzZXMgPSBtRXZlbnRIdWItPmdldERldmljZUNsYXNzZXMoZGV2aWNlSWQpOworICAgIFN0cmluZzggbmFtZSA9IG1FdmVudEh1Yi0+Z2V0RGV2aWNlTmFtZShkZXZpY2VJZCk7CisgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IG5ldyBJbnB1dERldmljZShkZXZpY2VJZCwgY2xhc3NlcywgbmFtZSk7CisKKyAgICBpZiAoY2xhc3NlcyAhPSAwKSB7CisgICAgICAgIExPR0koIkRldmljZSBhZGRlZDogaWQ9MHgleCwgbmFtZT0lcywgY2xhc3Nlcz0lMDJ4IiwgZGV2aWNlLT5pZCwKKyAgICAgICAgICAgICAgICBkZXZpY2UtPm5hbWUuc3RyaW5nKCksIGRldmljZS0+Y2xhc3Nlcyk7CisKKyAgICAgICAgY29uZmlndXJlRGV2aWNlKGRldmljZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HSSgiRGV2aWNlIGFkZGVkOiBpZD0weCV4LCBuYW1lPSVzIChpZ25vcmVkIG5vbi1pbnB1dCBkZXZpY2UpIiwgZGV2aWNlLT5pZCwKKyAgICAgICAgICAgICAgICBkZXZpY2UtPm5hbWUuc3RyaW5nKCkpOworCisgICAgICAgIGRldmljZS0+aWdub3JlZCA9IHRydWU7CisgICAgfQorCisgICAgZGV2aWNlLT5yZXNldCgpOworCisgICAgbURldmljZXMuYWRkKGRldmljZUlkLCBkZXZpY2UpOworCisgICAgaWYgKCEgZGV2aWNlLT5pZ25vcmVkKSB7CisgICAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQod2hlbik7CisgICAgfQorfQorCit2b2lkIElucHV0UmVhZGVyOjpyZW1vdmVEZXZpY2UobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlKSB7CisgICAgbURldmljZXMucmVtb3ZlSXRlbShkZXZpY2UtPmlkKTsKKworICAgIGlmICghIGRldmljZS0+aWdub3JlZCkgeworICAgICAgICBMT0dJKCJEZXZpY2UgcmVtb3ZlZDogaWQ9MHgleCwgbmFtZT0lcywgY2xhc3Nlcz0lMDJ4IiwgZGV2aWNlLT5pZCwKKyAgICAgICAgICAgICAgICBkZXZpY2UtPm5hbWUuc3RyaW5nKCksIGRldmljZS0+Y2xhc3Nlcyk7CisKKyAgICAgICAgb25Db25maWd1cmF0aW9uQ2hhbmdlZCh3aGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0dJKCJEZXZpY2UgcmVtb3ZlZDogaWQ9MHgleCwgbmFtZT0lcyAoaWdub3JlZCBub24taW5wdXQgZGV2aWNlKSIsIGRldmljZS0+aWQsCisgICAgICAgICAgICAgICAgZGV2aWNlLT5uYW1lLnN0cmluZygpKTsKKyAgICB9CisKKyAgICBkZWxldGUgZGV2aWNlOworfQorCit2b2lkIElucHV0UmVhZGVyOjpjb25maWd1cmVEZXZpY2UoSW5wdXREZXZpY2UqIGRldmljZSkgeworICAgIGlmIChkZXZpY2UtPmlzTXVsdGlUb3VjaFNjcmVlbigpKSB7CisgICAgICAgIGNvbmZpZ3VyZUFic29sdXRlQXhpc0luZm8oZGV2aWNlLCBBQlNfTVRfUE9TSVRJT05fWCwgIlgiLAorICAgICAgICAgICAgICAgICYgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnhBeGlzKTsKKyAgICAgICAgY29uZmlndXJlQWJzb2x1dGVBeGlzSW5mbyhkZXZpY2UsIEFCU19NVF9QT1NJVElPTl9ZLCAiWSIsCisgICAgICAgICAgICAgICAgJiBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueUF4aXMpOworICAgICAgICBjb25maWd1cmVBYnNvbHV0ZUF4aXNJbmZvKGRldmljZSwgQUJTX01UX1RPVUNIX01BSk9SLCAiUHJlc3N1cmUiLAorICAgICAgICAgICAgICAgICYgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnByZXNzdXJlQXhpcyk7CisgICAgICAgIGNvbmZpZ3VyZUFic29sdXRlQXhpc0luZm8oZGV2aWNlLCBBQlNfTVRfV0lEVEhfTUFKT1IsICJTaXplIiwKKyAgICAgICAgICAgICAgICAmIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy5zaXplQXhpcyk7CisgICAgfSBlbHNlIGlmIChkZXZpY2UtPmlzU2luZ2xlVG91Y2hTY3JlZW4oKSkgeworICAgICAgICBjb25maWd1cmVBYnNvbHV0ZUF4aXNJbmZvKGRldmljZSwgQUJTX1gsICJYIiwKKyAgICAgICAgICAgICAgICAmIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy54QXhpcyk7CisgICAgICAgIGNvbmZpZ3VyZUFic29sdXRlQXhpc0luZm8oZGV2aWNlLCBBQlNfWSwgIlkiLAorICAgICAgICAgICAgICAgICYgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnlBeGlzKTsKKyAgICAgICAgY29uZmlndXJlQWJzb2x1dGVBeGlzSW5mbyhkZXZpY2UsIEFCU19QUkVTU1VSRSwgIlByZXNzdXJlIiwKKyAgICAgICAgICAgICAgICAmIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy5wcmVzc3VyZUF4aXMpOworICAgICAgICBjb25maWd1cmVBYnNvbHV0ZUF4aXNJbmZvKGRldmljZSwgQUJTX1RPT0xfV0lEVEgsICJTaXplIiwKKyAgICAgICAgICAgICAgICAmIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy5zaXplQXhpcyk7CisgICAgfQorCisgICAgaWYgKGRldmljZS0+aXNUb3VjaFNjcmVlbigpKSB7CisgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy51c2VCYWRUb3VjaEZpbHRlciA9CisgICAgICAgICAgICAgICAgbVBvbGljeS0+ZmlsdGVyVG91Y2hFdmVudHMoKTsKKyAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnVzZUF2ZXJhZ2luZ1RvdWNoRmlsdGVyID0KKyAgICAgICAgICAgICAgICBtUG9saWN5LT5maWx0ZXJUb3VjaEV2ZW50cygpOworICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMudXNlSnVtcHlUb3VjaEZpbHRlciA9CisgICAgICAgICAgICAgICAgbVBvbGljeS0+ZmlsdGVySnVtcHlUb3VjaEV2ZW50cygpOworCisgICAgICAgIGlmIChkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMucHJlc3N1cmVBeGlzLnZhbGlkKSB7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQucHJlc3N1cmVPcmlnaW4gPQorICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMucHJlc3N1cmVBeGlzLm1pblZhbHVlOworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnByZXNzdXJlU2NhbGUgPQorICAgICAgICAgICAgICAgICAgICAxLjBmIC8gZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnByZXNzdXJlQXhpcy5yYW5nZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC5wcmVzc3VyZU9yaWdpbiA9IDA7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQucHJlc3N1cmVTY2FsZSA9IDEuMGY7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnNpemVBeGlzLnZhbGlkKSB7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQuc2l6ZU9yaWdpbiA9CisgICAgICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy5zaXplQXhpcy5taW5WYWx1ZTsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC5zaXplU2NhbGUgPQorICAgICAgICAgICAgICAgICAgICAxLjBmIC8gZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnNpemVBeGlzLnJhbmdlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnNpemVPcmlnaW4gPSAwOworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnNpemVTY2FsZSA9IDEuMGY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZGV2aWNlLT5pc1RyYWNrYmFsbCgpKSB7CisgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLnByZWNhbGN1bGF0ZWQueFByZWNpc2lvbiA9IFRSQUNLQkFMTF9NT1ZFTUVOVF9USFJFU0hPTEQ7CisgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLnByZWNhbGN1bGF0ZWQueVByZWNpc2lvbiA9IFRSQUNLQkFMTF9NT1ZFTUVOVF9USFJFU0hPTEQ7CisgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLnByZWNhbGN1bGF0ZWQueFNjYWxlID0gMS4wZiAvIFRSQUNLQkFMTF9NT1ZFTUVOVF9USFJFU0hPTEQ7CisgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLnByZWNhbGN1bGF0ZWQueVNjYWxlID0gMS4wZiAvIFRSQUNLQkFMTF9NT1ZFTUVOVF9USFJFU0hPTEQ7CisgICAgfQorCisgICAgY29uZmlndXJlRGV2aWNlRm9yQ3VycmVudERpc3BsYXlTaXplKGRldmljZSk7Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmNvbmZpZ3VyZURldmljZUZvckN1cnJlbnREaXNwbGF5U2l6ZShJbnB1dERldmljZSogZGV2aWNlKSB7CisgICAgaWYgKGRldmljZS0+aXNUb3VjaFNjcmVlbigpKSB7CisgICAgICAgIGlmIChkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueEF4aXMudmFsaWQKKyAgICAgICAgICAgICAgICAmJiBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueUF4aXMudmFsaWQpIHsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC54T3JpZ2luID0KKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnhBeGlzLm1pblZhbHVlOworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnlPcmlnaW4gPQorICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueUF4aXMubWluVmFsdWU7CisKKyAgICAgICAgICAgIGlmIChtRGlzcGxheVdpZHRoIDwgMCkgeworICAgICAgICAgICAgICAgIExPR0QoIlNraXBwaW5nIHBhcnQgb2YgdG91Y2ggc2NyZWVuIGNvbmZpZ3VyYXRpb24gc2luY2UgZGlzcGxheSBzaXplIGlzIHVua25vd24uIik7CisKKyAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQueFNjYWxlID0gMS4wZjsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQueVNjYWxlID0gMS4wZjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTE9HSSgiRGV2aWNlIGNvbmZpZ3VyZWQ6IGlkPTB4JXgsIG5hbWU9JXMgKGRpc3BsYXkgc2l6ZSB3YXMgY2hhbmdlZCkiLCBkZXZpY2UtPmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT5uYW1lLnN0cmluZygpKTsKKworICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC54U2NhbGUgPQorICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQobURpc3BsYXlXaWR0aCkgLyBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueEF4aXMucmFuZ2U7CisgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnlTY2FsZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdChtRGlzcGxheUhlaWdodCkgLyBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueUF4aXMucmFuZ2U7CisKKyAgICAgICAgICAgICAgICBjb25maWd1cmVWaXJ0dWFsS2V5cyhkZXZpY2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnhPcmlnaW4gPSAwOworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnhTY2FsZSA9IDEuMGY7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQueU9yaWdpbiA9IDA7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQueVNjYWxlID0gMS4wZjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6Y29uZmlndXJlVmlydHVhbEtleXMoSW5wdXREZXZpY2UqIGRldmljZSkgeworICAgIGFzc2VydChkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueEF4aXMudmFsaWQKKyAgICAgICAgICAgICYmIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy55QXhpcy52YWxpZCk7CisKKyAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnZpcnR1YWxLZXlzLmNsZWFyKCk7CisKKyAgICBWZWN0b3I8SW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OlZpcnR1YWxLZXlEZWZpbml0aW9uPiB2aXJ0dWFsS2V5RGVmaW5pdGlvbnM7CisgICAgbVBvbGljeS0+Z2V0VmlydHVhbEtleURlZmluaXRpb25zKGRldmljZS0+bmFtZSwgdmlydHVhbEtleURlZmluaXRpb25zKTsKKyAgICBpZiAodmlydHVhbEtleURlZmluaXRpb25zLnNpemUoKSA9PSAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnZpcnR1YWxLZXlzLnNldENhcGFjaXR5KHZpcnR1YWxLZXlEZWZpbml0aW9ucy5zaXplKCkpOworCisgICAgaW50MzJfdCB0b3VjaFNjcmVlbkxlZnQgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueEF4aXMubWluVmFsdWU7CisgICAgaW50MzJfdCB0b3VjaFNjcmVlblRvcCA9IGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy55QXhpcy5taW5WYWx1ZTsKKyAgICBpbnQzMl90IHRvdWNoU2NyZWVuV2lkdGggPSBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueEF4aXMucmFuZ2U7CisgICAgaW50MzJfdCB0b3VjaFNjcmVlbkhlaWdodCA9IGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy55QXhpcy5yYW5nZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlydHVhbEtleURlZmluaXRpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGNvbnN0IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpWaXJ0dWFsS2V5RGVmaW5pdGlvbiYgdmlydHVhbEtleURlZmluaXRpb24gPQorICAgICAgICAgICAgICAgIHZpcnR1YWxLZXlEZWZpbml0aW9uc1tpXTsKKworICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnZpcnR1YWxLZXlzLmFkZCgpOworICAgICAgICBJbnB1dERldmljZTo6VmlydHVhbEtleSYgdmlydHVhbEtleSA9CisgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi52aXJ0dWFsS2V5cy5lZGl0VG9wKCk7CisKKyAgICAgICAgdmlydHVhbEtleS5zY2FuQ29kZSA9IHZpcnR1YWxLZXlEZWZpbml0aW9uLnNjYW5Db2RlOworICAgICAgICBpbnQzMl90IGtleUNvZGU7CisgICAgICAgIHVpbnQzMl90IGZsYWdzOworICAgICAgICBpZiAobUV2ZW50SHViLT5zY2FuY29kZVRvS2V5Y29kZShkZXZpY2UtPmlkLCB2aXJ0dWFsS2V5LnNjYW5Db2RlLAorICAgICAgICAgICAgICAgICYga2V5Q29kZSwgJiBmbGFncykpIHsKKyAgICAgICAgICAgIExPR0koIiAgVmlydHVhbEtleSAlZDogY291bGQgbm90IG9idGFpbiBrZXkgY29kZSwgaWdub3JpbmciLCB2aXJ0dWFsS2V5LnNjYW5Db2RlKTsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4udmlydHVhbEtleXMucG9wKCk7IC8vIGRyb3AgdGhlIGtleQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsS2V5LmtleUNvZGUgPSBrZXlDb2RlOworICAgICAgICB2aXJ0dWFsS2V5LmZsYWdzID0gZmxhZ3M7CisKKyAgICAgICAgLy8gY29udmVydCB0aGUga2V5IGRlZmluaXRpb24ncyBkaXNwbGF5IGNvb3JkaW5hdGVzIGludG8gdG91Y2ggY29vcmRpbmF0ZXMgZm9yIGEgaGl0IGJveAorICAgICAgICBpbnQzMl90IGhhbGZXaWR0aCA9IHZpcnR1YWxLZXlEZWZpbml0aW9uLndpZHRoIC8gMjsKKyAgICAgICAgaW50MzJfdCBoYWxmSGVpZ2h0ID0gdmlydHVhbEtleURlZmluaXRpb24uaGVpZ2h0IC8gMjsKKworICAgICAgICB2aXJ0dWFsS2V5LmhpdExlZnQgPSAodmlydHVhbEtleURlZmluaXRpb24uY2VudGVyWCAtIGhhbGZXaWR0aCkKKyAgICAgICAgICAgICAgICAqIHRvdWNoU2NyZWVuV2lkdGggLyBtRGlzcGxheVdpZHRoICsgdG91Y2hTY3JlZW5MZWZ0OworICAgICAgICB2aXJ0dWFsS2V5LmhpdFJpZ2h0PSAodmlydHVhbEtleURlZmluaXRpb24uY2VudGVyWCArIGhhbGZXaWR0aCkKKyAgICAgICAgICAgICAgICAqIHRvdWNoU2NyZWVuV2lkdGggLyBtRGlzcGxheVdpZHRoICsgdG91Y2hTY3JlZW5MZWZ0OworICAgICAgICB2aXJ0dWFsS2V5LmhpdFRvcCA9ICh2aXJ0dWFsS2V5RGVmaW5pdGlvbi5jZW50ZXJZIC0gaGFsZkhlaWdodCkKKyAgICAgICAgICAgICAgICAqIHRvdWNoU2NyZWVuSGVpZ2h0IC8gbURpc3BsYXlIZWlnaHQgKyB0b3VjaFNjcmVlblRvcDsKKyAgICAgICAgdmlydHVhbEtleS5oaXRCb3R0b20gPSAodmlydHVhbEtleURlZmluaXRpb24uY2VudGVyWSArIGhhbGZIZWlnaHQpCisgICAgICAgICAgICAgICAgKiB0b3VjaFNjcmVlbkhlaWdodCAvIG1EaXNwbGF5SGVpZ2h0ICsgdG91Y2hTY3JlZW5Ub3A7CisKKyAgICAgICAgTE9HSSgiICBWaXJ0dWFsS2V5ICVkOiBrZXlDb2RlPSVkIGhpdExlZnQ9JWQgaGl0UmlnaHQ9JWQgaGl0VG9wPSVkIGhpdEJvdHRvbT0lZCIsCisgICAgICAgICAgICAgICAgdmlydHVhbEtleS5zY2FuQ29kZSwgdmlydHVhbEtleS5rZXlDb2RlLAorICAgICAgICAgICAgICAgIHZpcnR1YWxLZXkuaGl0TGVmdCwgdmlydHVhbEtleS5oaXRSaWdodCwgdmlydHVhbEtleS5oaXRUb3AsIHZpcnR1YWxLZXkuaGl0Qm90dG9tKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmNvbmZpZ3VyZUFic29sdXRlQXhpc0luZm8oSW5wdXREZXZpY2UqIGRldmljZSwKKyAgICAgICAgaW50IGF4aXMsIGNvbnN0IGNoYXIqIG5hbWUsIElucHV0RGV2aWNlOjpBYnNvbHV0ZUF4aXNJbmZvKiBvdXQpIHsKKyAgICBpZiAoISBtRXZlbnRIdWItPmdldEFic29sdXRlSW5mbyhkZXZpY2UtPmlkLCBheGlzLAorICAgICAgICAgICAgJiBvdXQtPm1pblZhbHVlLCAmIG91dC0+bWF4VmFsdWUsICYgb3V0LT5mbGF0LCAmb3V0LT5mdXp6KSkgeworICAgICAgICBvdXQtPnJhbmdlID0gb3V0LT5tYXhWYWx1ZSAtIG91dC0+bWluVmFsdWU7CisgICAgICAgIGlmIChvdXQtPnJhbmdlICE9IDApIHsKKyAgICAgICAgICAgIExPR0koIiAgJXM6IG1pbj0lZCBtYXg9JWQgZmxhdD0lZCBmdXp6PSVkIiwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwgb3V0LT5taW5WYWx1ZSwgb3V0LT5tYXhWYWx1ZSwgb3V0LT5mbGF0LCBvdXQtPmZ1enopOworICAgICAgICAgICAgb3V0LT52YWxpZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBvdXQtPnZhbGlkID0gZmFsc2U7CisgICAgb3V0LT5taW5WYWx1ZSA9IDA7CisgICAgb3V0LT5tYXhWYWx1ZSA9IDA7CisgICAgb3V0LT5mbGF0ID0gMDsKKyAgICBvdXQtPmZ1enogPSAwOworICAgIG91dC0+cmFuZ2UgPSAwOworICAgIExPR0koIiAgJXM6IHVua25vd24gYXhpcyB2YWx1ZXMsIG1hcmtpbmcgYXMgaW52YWxpZCIsIG5hbWUpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpjb25maWd1cmVFeGNsdWRlZERldmljZXMoKSB7CisgICAgVmVjdG9yPFN0cmluZzg+IGV4Y2x1ZGVkRGV2aWNlTmFtZXM7CisgICAgbVBvbGljeS0+Z2V0RXhjbHVkZWREZXZpY2VOYW1lcyhleGNsdWRlZERldmljZU5hbWVzKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhjbHVkZWREZXZpY2VOYW1lcy5zaXplKCk7IGkrKykgeworICAgICAgICBtRXZlbnRIdWItPmFkZEV4Y2x1ZGVkRGV2aWNlKGV4Y2x1ZGVkRGV2aWNlTmFtZXNbaV0pOworICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6cmVzZXRHbG9iYWxNZXRhU3RhdGUoKSB7CisgICAgbUdsb2JhbE1ldGFTdGF0ZSA9IC0xOworfQorCitpbnQzMl90IElucHV0UmVhZGVyOjpnbG9iYWxNZXRhU3RhdGUoKSB7CisgICAgaWYgKG1HbG9iYWxNZXRhU3RhdGUgPT0gLTEpIHsKKyAgICAgICAgbUdsb2JhbE1ldGFTdGF0ZSA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbURldmljZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIElucHV0RGV2aWNlKiBkZXZpY2UgPSBtRGV2aWNlcy52YWx1ZUF0KGkpOworICAgICAgICAgICAgaWYgKGRldmljZS0+aXNLZXlib2FyZCgpKSB7CisgICAgICAgICAgICAgICAgbUdsb2JhbE1ldGFTdGF0ZSB8PSBkZXZpY2UtPmtleWJvYXJkLmN1cnJlbnQubWV0YVN0YXRlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtR2xvYmFsTWV0YVN0YXRlOworfQorCit2b2lkIElucHV0UmVhZGVyOjp1cGRhdGVFeHBvcnRlZFZpcnR1YWxLZXlTdGF0ZSgpIHsKKyAgICBpbnQzMl90IGtleUNvZGUgPSAtMSwgc2NhbkNvZGUgPSAtMTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbURldmljZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IG1EZXZpY2VzLnZhbHVlQXQoaSk7CisgICAgICAgIGlmIChkZXZpY2UtPmlzVG91Y2hTY3JlZW4oKSkgeworICAgICAgICAgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuZG93bikgeworICAgICAgICAgICAgICAgIGtleUNvZGUgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LmtleUNvZGU7CisgICAgICAgICAgICAgICAgc2NhbkNvZGUgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LnNjYW5Db2RlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeyAvLyBhY3F1aXJlIGV4cG9ydGVkIHN0YXRlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1FeHBvcnRlZFN0YXRlTG9jayk7CisKKyAgICAgICAgbUV4cG9ydGVkVmlydHVhbEtleUNvZGUgPSBrZXlDb2RlOworICAgICAgICBtRXhwb3J0ZWRWaXJ0dWFsU2NhbkNvZGUgPSBzY2FuQ29kZTsKKyAgICB9IC8vIHJlbGVhc2UgZXhwb3J0ZWQgc3RhdGUgbG9jaworfQorCitib29sIElucHV0UmVhZGVyOjpnZXRDdXJyZW50VmlydHVhbEtleShpbnQzMl90KiBvdXRLZXlDb2RlLCBpbnQzMl90KiBvdXRTY2FuQ29kZSkgY29uc3QgeworICAgIHsgLy8gYWNxdWlyZSBleHBvcnRlZCBzdGF0ZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtRXhwb3J0ZWRTdGF0ZUxvY2spOworCisgICAgICAgICpvdXRLZXlDb2RlID0gbUV4cG9ydGVkVmlydHVhbEtleUNvZGU7CisgICAgICAgICpvdXRTY2FuQ29kZSA9IG1FeHBvcnRlZFZpcnR1YWxTY2FuQ29kZTsKKyAgICAgICAgcmV0dXJuIG1FeHBvcnRlZFZpcnR1YWxLZXlDb2RlICE9IC0xOworICAgIH0gLy8gcmVsZWFzZSBleHBvcnRlZCBzdGF0ZSBsb2NrCit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OnVwZGF0ZUV4cG9ydGVkSW5wdXRDb25maWd1cmF0aW9uKCkgeworICAgIGludDMyX3QgdG91Y2hTY3JlZW5Db25maWcgPSBJbnB1dENvbmZpZ3VyYXRpb246OlRPVUNIU0NSRUVOX05PVE9VQ0g7CisgICAgaW50MzJfdCBrZXlib2FyZENvbmZpZyA9IElucHV0Q29uZmlndXJhdGlvbjo6S0VZQk9BUkRfTk9LRVlTOworICAgIGludDMyX3QgbmF2aWdhdGlvbkNvbmZpZyA9IElucHV0Q29uZmlndXJhdGlvbjo6TkFWSUdBVElPTl9OT05BVjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbURldmljZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IG1EZXZpY2VzLnZhbHVlQXQoaSk7CisgICAgICAgIGludDMyX3QgZGV2aWNlQ2xhc3NlcyA9IGRldmljZS0+Y2xhc3NlczsKKworICAgICAgICBpZiAoZGV2aWNlQ2xhc3NlcyAmIElOUFVUX0RFVklDRV9DTEFTU19UT1VDSFNDUkVFTikgeworICAgICAgICAgICAgdG91Y2hTY3JlZW5Db25maWcgPSBJbnB1dENvbmZpZ3VyYXRpb246OlRPVUNIU0NSRUVOX0ZJTkdFUjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGV2aWNlQ2xhc3NlcyAmIElOUFVUX0RFVklDRV9DTEFTU19BTFBIQUtFWSkgeworICAgICAgICAgICAga2V5Ym9hcmRDb25maWcgPSBJbnB1dENvbmZpZ3VyYXRpb246OktFWUJPQVJEX1FXRVJUWTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGV2aWNlQ2xhc3NlcyAmIElOUFVUX0RFVklDRV9DTEFTU19UUkFDS0JBTEwpIHsKKyAgICAgICAgICAgIG5hdmlnYXRpb25Db25maWcgPSBJbnB1dENvbmZpZ3VyYXRpb246Ok5BVklHQVRJT05fVFJBQ0tCQUxMOworICAgICAgICB9IGVsc2UgaWYgKGRldmljZUNsYXNzZXMgJiBJTlBVVF9ERVZJQ0VfQ0xBU1NfRFBBRCkgeworICAgICAgICAgICAgbmF2aWdhdGlvbkNvbmZpZyA9IElucHV0Q29uZmlndXJhdGlvbjo6TkFWSUdBVElPTl9EUEFEOworICAgICAgICB9CisgICAgfQorCisgICAgeyAvLyBhY3F1aXJlIGV4cG9ydGVkIHN0YXRlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1FeHBvcnRlZFN0YXRlTG9jayk7CisKKyAgICAgICAgbUV4cG9ydGVkSW5wdXRDb25maWd1cmF0aW9uLnRvdWNoU2NyZWVuID0gdG91Y2hTY3JlZW5Db25maWc7CisgICAgICAgIG1FeHBvcnRlZElucHV0Q29uZmlndXJhdGlvbi5rZXlib2FyZCA9IGtleWJvYXJkQ29uZmlnOworICAgICAgICBtRXhwb3J0ZWRJbnB1dENvbmZpZ3VyYXRpb24ubmF2aWdhdGlvbiA9IG5hdmlnYXRpb25Db25maWc7CisgICAgfSAvLyByZWxlYXNlIGV4cG9ydGVkIHN0YXRlIGxvY2sKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6Z2V0Q3VycmVudElucHV0Q29uZmlndXJhdGlvbihJbnB1dENvbmZpZ3VyYXRpb24qIG91dENvbmZpZ3VyYXRpb24pIGNvbnN0IHsKKyAgICB7IC8vIGFjcXVpcmUgZXhwb3J0ZWQgc3RhdGUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUV4cG9ydGVkU3RhdGVMb2NrKTsKKworICAgICAgICAqb3V0Q29uZmlndXJhdGlvbiA9IG1FeHBvcnRlZElucHV0Q29uZmlndXJhdGlvbjsKKyAgICB9IC8vIHJlbGVhc2UgZXhwb3J0ZWQgc3RhdGUgbG9jaworfQorCitpbnQzMl90IElucHV0UmVhZGVyOjpnZXRDdXJyZW50U2NhbkNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgIGludDMyX3Qgc2NhbkNvZGUpIGNvbnN0IHsKKyAgICB7IC8vIGFjcXVpcmUgZXhwb3J0ZWQgc3RhdGUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUV4cG9ydGVkU3RhdGVMb2NrKTsKKworICAgICAgICBpZiAobUV4cG9ydGVkVmlydHVhbFNjYW5Db2RlID09IHNjYW5Db2RlKSB7CisgICAgICAgICAgICByZXR1cm4gS0VZX1NUQVRFX1ZJUlRVQUw7CisgICAgICAgIH0KKyAgICB9IC8vIHJlbGVhc2UgZXhwb3J0ZWQgc3RhdGUgbG9jaworCisgICAgcmV0dXJuIG1FdmVudEh1Yi0+Z2V0U2NhbkNvZGVTdGF0ZShkZXZpY2VJZCwgZGV2aWNlQ2xhc3Nlcywgc2NhbkNvZGUpOworfQorCitpbnQzMl90IElucHV0UmVhZGVyOjpnZXRDdXJyZW50S2V5Q29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgaW50MzJfdCBrZXlDb2RlKSBjb25zdCB7CisgICAgeyAvLyBhY3F1aXJlIGV4cG9ydGVkIHN0YXRlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1FeHBvcnRlZFN0YXRlTG9jayk7CisKKyAgICAgICAgaWYgKG1FeHBvcnRlZFZpcnR1YWxLZXlDb2RlID09IGtleUNvZGUpIHsKKyAgICAgICAgICAgIHJldHVybiBLRVlfU1RBVEVfVklSVFVBTDsKKyAgICAgICAgfQorICAgIH0gLy8gcmVsZWFzZSBleHBvcnRlZCBzdGF0ZSBsb2NrCisKKyAgICByZXR1cm4gbUV2ZW50SHViLT5nZXRLZXlDb2RlU3RhdGUoZGV2aWNlSWQsIGRldmljZUNsYXNzZXMsIGtleUNvZGUpOworfQorCitpbnQzMl90IElucHV0UmVhZGVyOjpnZXRDdXJyZW50U3dpdGNoU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICBpbnQzMl90IHN3KSBjb25zdCB7CisgICAgcmV0dXJuIG1FdmVudEh1Yi0+Z2V0U3dpdGNoU3RhdGUoZGV2aWNlSWQsIGRldmljZUNsYXNzZXMsIHN3KTsKK30KKworYm9vbCBJbnB1dFJlYWRlcjo6aGFzS2V5cyhzaXplX3QgbnVtQ29kZXMsIGNvbnN0IGludDMyX3QqIGtleUNvZGVzLCB1aW50OF90KiBvdXRGbGFncykgY29uc3QgeworICAgIHJldHVybiBtRXZlbnRIdWItPmhhc0tleXMobnVtQ29kZXMsIGtleUNvZGVzLCBvdXRGbGFncyk7Cit9CisKKworLy8gLS0tIElucHV0UmVhZGVyVGhyZWFkIC0tLQorCitJbnB1dFJlYWRlclRocmVhZDo6SW5wdXRSZWFkZXJUaHJlYWQoY29uc3Qgc3A8SW5wdXRSZWFkZXJJbnRlcmZhY2U+JiByZWFkZXIpIDoKKyAgICAgICAgVGhyZWFkKC8qY2FuQ2FsbEphdmEqLyB0cnVlKSwgbVJlYWRlcihyZWFkZXIpIHsKK30KKworSW5wdXRSZWFkZXJUaHJlYWQ6On5JbnB1dFJlYWRlclRocmVhZCgpIHsKK30KKworYm9vbCBJbnB1dFJlYWRlclRocmVhZDo6dGhyZWFkTG9vcCgpIHsKKyAgICBtUmVhZGVyLT5sb29wT25jZSgpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3VpL0lucHV0VHJhbnNwb3J0LmNwcCBiL2xpYnMvdWkvSW5wdXRUcmFuc3BvcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZGVmM2MKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL0lucHV0VHJhbnNwb3J0LmNwcApAQCAtMCwwICsxLDcxMSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisvLyBQcm92aWRlcyBhIHNoYXJlZCBtZW1vcnkgdHJhbnNwb3J0IGZvciBpbnB1dCBldmVudHMuCisvLworI2RlZmluZSBMT0dfVEFHICJJbnB1dFRyYW5zcG9ydCIKKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgY2hhbm5lbCBzaWduYWxsaW5nIChzZW5kIHNpZ25hbCwgcmVjZWl2ZSBzaWduYWwpCisjZGVmaW5lIERFQlVHX0NIQU5ORUxfU0lHTkFMUyAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyB3aGVuZXZlciBJbnB1dENoYW5uZWwgb2JqZWN0cyBhcmUgY3JlYXRlZC9kZXN0cm95ZWQKKyNkZWZpbmUgREVCVUdfQ0hBTk5FTF9MSUZFQ1lDTEUgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgdHJhbnNwb3J0IGFjdGlvbnMgKGluaXRpYWxpemUsIHJlc2V0LCBwdWJsaXNoLCAuLi4pCisjZGVmaW5lIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TIDAKKworCisjaW5jbHVkZSA8Y3V0aWxzL2FzaG1lbS5oPgorI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDx1aS9JbnB1dFRyYW5zcG9ydC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIE11c3QgYmUgYXQgbGVhc3Qgc2l6ZW9mKElucHV0TWVzc2FnZSkgKyBzdWZmaWNpZW50IHNwYWNlIGZvciBwb2ludGVyIGRhdGEKK3N0YXRpYyBjb25zdCBpbnQgREVGQVVMVF9NRVNTQUdFX0JVRkZFUl9TSVpFID0gMTYzODQ7CisKKy8vIFNpZ25hbCBzZW50IGJ5IHRoZSBwcm9kdWNlciB0byB0aGUgY29uc3VtZXIgdG8gaW5mb3JtIGl0IHRoYXQgYSBuZXcgbWVzc2FnZSBpcworLy8gYXZhaWxhYmxlIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBzaGFyZWQgbWVtb3J5IGJ1ZmZlci4KK3N0YXRpYyBjb25zdCBjaGFyIElOUFVUX1NJR05BTF9ESVNQQVRDSCA9ICdEJzsKKworLy8gU2lnbmFsIHNlbnQgYnkgdGhlIGNvbnN1bWVyIHRvIHRoZSBwcm9kdWNlciB0byBpbmZvcm0gaXQgdGhhdCBpdCBoYXMgZmluaXNoZWQKKy8vIGNvbnN1bWluZyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZS4KK3N0YXRpYyBjb25zdCBjaGFyIElOUFVUX1NJR05BTF9GSU5JU0hFRCA9ICdmJzsKKworCisvLyAtLS0gSW5wdXRDaGFubmVsIC0tLQorCitJbnB1dENoYW5uZWw6OklucHV0Q2hhbm5lbChjb25zdCBTdHJpbmc4JiBuYW1lLCBpbnQzMl90IGFzaG1lbUZkLCBpbnQzMl90IHJlY2VpdmVQaXBlRmQsCisgICAgICAgIGludDMyX3Qgc2VuZFBpcGVGZCkgOgorICAgICAgICBtTmFtZShuYW1lKSwgbUFzaG1lbUZkKGFzaG1lbUZkKSwgbVJlY2VpdmVQaXBlRmQocmVjZWl2ZVBpcGVGZCksIG1TZW5kUGlwZUZkKHNlbmRQaXBlRmQpIHsKKyNpZiBERUJVR19DSEFOTkVMX0xJRkVDWUNMRQorICAgIExPR0QoIklucHV0IGNoYW5uZWwgY29uc3RydWN0ZWQ6IG5hbWU9JyVzJywgYXNobWVtRmQ9JWQsIHJlY2VpdmVQaXBlRmQ9JWQsIHNlbmRQaXBlRmQ9JWQiLAorICAgICAgICAgICAgbU5hbWUuc3RyaW5nKCksIGFzaG1lbUZkLCByZWNlaXZlUGlwZUZkLCBzZW5kUGlwZUZkKTsKKyNlbmRpZgorCisgICAgaW50IHJlc3VsdCA9IGZjbnRsKG1SZWNlaXZlUGlwZUZkLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKKyAgICBMT0dfQUxXQVlTX0ZBVEFMX0lGKHJlc3VsdCAhPSAwLCAiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IG1ha2UgcmVjZWl2ZSBwaXBlICIKKyAgICAgICAgICAgICJub24tYmxvY2tpbmcuICBlcnJubz0lZCIsIG1OYW1lLnN0cmluZygpLCBlcnJubyk7CisKKyAgICByZXN1bHQgPSBmY250bChtU2VuZFBpcGVGZCwgRl9TRVRGTCwgT19OT05CTE9DSyk7CisgICAgTE9HX0FMV0FZU19GQVRBTF9JRihyZXN1bHQgIT0gMCwgImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBtYWtlIHNlbmQgcGlwZSAiCisgICAgICAgICAgICAibm9uLWJsb2NraW5nLiAgZXJybm89JWQiLCBtTmFtZS5zdHJpbmcoKSwgZXJybm8pOworfQorCitJbnB1dENoYW5uZWw6On5JbnB1dENoYW5uZWwoKSB7CisjaWYgREVCVUdfQ0hBTk5FTF9MSUZFQ1lDTEUKKyAgICBMT0dEKCJJbnB1dCBjaGFubmVsIGRlc3Ryb3llZDogbmFtZT0nJXMnLCBhc2htZW1GZD0lZCwgcmVjZWl2ZVBpcGVGZD0lZCwgc2VuZFBpcGVGZD0lZCIsCisgICAgICAgICAgICBtTmFtZS5zdHJpbmcoKSwgbUFzaG1lbUZkLCBtUmVjZWl2ZVBpcGVGZCwgbVNlbmRQaXBlRmQpOworI2VuZGlmCisKKyAgICA6OmNsb3NlKG1Bc2htZW1GZCk7CisgICAgOjpjbG9zZShtUmVjZWl2ZVBpcGVGZCk7CisgICAgOjpjbG9zZShtU2VuZFBpcGVGZCk7Cit9CisKK3N0YXR1c190IElucHV0Q2hhbm5lbDo6b3BlbklucHV0Q2hhbm5lbFBhaXIoY29uc3QgU3RyaW5nOCYgbmFtZSwKKyAgICAgICAgc3A8SW5wdXRDaGFubmVsPiYgb3V0U2VydmVyQ2hhbm5lbCwgc3A8SW5wdXRDaGFubmVsPiYgb3V0Q2xpZW50Q2hhbm5lbCkgeworICAgIHN0YXR1c190IHJlc3VsdDsKKworICAgIGludCBzZXJ2ZXJBc2htZW1GZCA9IGFzaG1lbV9jcmVhdGVfcmVnaW9uKG5hbWUuc3RyaW5nKCksIERFRkFVTFRfTUVTU0FHRV9CVUZGRVJfU0laRSk7CisgICAgaWYgKHNlcnZlckFzaG1lbUZkIDwgMCkgeworICAgICAgICByZXN1bHQgPSAtZXJybm87CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBjcmVhdGUgc2hhcmVkIG1lbW9yeSByZWdpb24uIGVycm5vPSVkIiwKKyAgICAgICAgICAgICAgICBuYW1lLnN0cmluZygpLCBlcnJubyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gYXNobWVtX3NldF9wcm90X3JlZ2lvbihzZXJ2ZXJBc2htZW1GZCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgfiBFcnJvciAlZCB0cnlpbmcgdG8gc2V0IHByb3RlY3Rpb24gb2YgYXNobWVtIGZkICVkLiIsCisgICAgICAgICAgICAgICAgICAgIG5hbWUuc3RyaW5nKCksIHJlc3VsdCwgc2VydmVyQXNobWVtRmQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRHVwIHRoZSBmaWxlIGRlc2NyaXB0b3IgYmVjYXVzZSB0aGUgc2VydmVyIGFuZCBjbGllbnQgaW5wdXQgY2hhbm5lbCBvYmplY3RzIHRoYXQKKyAgICAgICAgICAgIC8vIGFyZSByZXR1cm5lZCBtYXkgaGF2ZSBkaWZmZXJlbnQgbGlmZXRpbWVzIGJ1dCB0aGV5IHNoYXJlIHRoZSBzYW1lIHNoYXJlZCBtZW1vcnkgcmVnaW9uLgorICAgICAgICAgICAgaW50IGNsaWVudEFzaG1lbUZkOworICAgICAgICAgICAgY2xpZW50QXNobWVtRmQgPSBkdXAoc2VydmVyQXNobWVtRmQpOworICAgICAgICAgICAgaWYgKGNsaWVudEFzaG1lbUZkIDwgMCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IC1lcnJubzsKKyAgICAgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgfiBDb3VsZCBub3QgZHVwKCkgc2hhcmVkIG1lbW9yeSByZWdpb24gZmQuIGVycm5vPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuc3RyaW5nKCksIGVycm5vKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGZvcndhcmRbMl07CisgICAgICAgICAgICAgICAgaWYgKHBpcGUoZm9yd2FyZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gLWVycm5vOworICAgICAgICAgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgfiBDb3VsZCBub3QgY3JlYXRlIGZvcndhcmQgcGlwZS4gIGVycm5vPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnN0cmluZygpLCBlcnJubyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHJldmVyc2VbMl07CisgICAgICAgICAgICAgICAgICAgIGlmIChwaXBlKHJldmVyc2UpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAtZXJybm87CisgICAgICAgICAgICAgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgfiBDb3VsZCBub3QgY3JlYXRlIHJldmVyc2UgcGlwZS4gIGVycm5vPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zdHJpbmcoKSwgZXJybm8pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOCBzZXJ2ZXJDaGFubmVsTmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJDaGFubmVsTmFtZS5hcHBlbmQoIiAoc2VydmVyKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0U2VydmVyQ2hhbm5lbCA9IG5ldyBJbnB1dENoYW5uZWwoc2VydmVyQ2hhbm5lbE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlckFzaG1lbUZkLCByZXZlcnNlWzBdLCBmb3J3YXJkWzFdKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOCBjbGllbnRDaGFubmVsTmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRDaGFubmVsTmFtZS5hcHBlbmQoIiAoY2xpZW50KSIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0Q2xpZW50Q2hhbm5lbCA9IG5ldyBJbnB1dENoYW5uZWwoY2xpZW50Q2hhbm5lbE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEFzaG1lbUZkLCBmb3J3YXJkWzBdLCByZXZlcnNlWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPSzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICA6OmNsb3NlKGZvcndhcmRbMF0pOworICAgICAgICAgICAgICAgICAgICA6OmNsb3NlKGZvcndhcmRbMV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICA6OmNsb3NlKGNsaWVudEFzaG1lbUZkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA6OmNsb3NlKHNlcnZlckFzaG1lbUZkKTsKKyAgICB9CisKKyAgICBvdXRTZXJ2ZXJDaGFubmVsLmNsZWFyKCk7CisgICAgb3V0Q2xpZW50Q2hhbm5lbC5jbGVhcigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXR1c190IElucHV0Q2hhbm5lbDo6c2VuZFNpZ25hbChjaGFyIHNpZ25hbCkgeworICAgIHNzaXplX3QgbldyaXRlID0gOjp3cml0ZShtU2VuZFBpcGVGZCwgJiBzaWduYWwsIDEpOworCisgICAgaWYgKG5Xcml0ZSA9PSAxKSB7CisjaWYgREVCVUdfQ0hBTk5FTF9TSUdOQUxTCisgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IHNlbnQgc2lnbmFsICclYyciLCBtTmFtZS5zdHJpbmcoKSwgc2lnbmFsKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisjaWYgREVCVUdfQ0hBTk5FTF9TSUdOQUxTCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gZXJyb3Igc2VuZGluZyBzaWduYWwgJyVjJywgZXJybm89JWQiLCBtTmFtZS5zdHJpbmcoKSwgc2lnbmFsLCBlcnJubyk7CisjZW5kaWYKKyAgICByZXR1cm4gLWVycm5vOworfQorCitzdGF0dXNfdCBJbnB1dENoYW5uZWw6OnJlY2VpdmVTaWduYWwoY2hhciogb3V0U2lnbmFsKSB7CisgICAgc3NpemVfdCBuUmVhZCA9IDo6cmVhZChtUmVjZWl2ZVBpcGVGZCwgb3V0U2lnbmFsLCAxKTsKKyAgICBpZiAoblJlYWQgPT0gMSkgeworI2lmIERFQlVHX0NIQU5ORUxfU0lHTkFMUworICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiByZWNlaXZlZCBzaWduYWwgJyVjJyIsIG1OYW1lLnN0cmluZygpLCAqb3V0U2lnbmFsKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgaWYgKG5SZWFkID09IDApIHsgLy8gY2hlY2sgZm9yIEVPRgorI2lmIERFQlVHX0NIQU5ORUxfU0lHTkFMUworICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiByZWNlaXZlIHNpZ25hbCBmYWlsZWQgYmVjYXVzZSBwZWVyIHdhcyBjbG9zZWQiLCBtTmFtZS5zdHJpbmcoKSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIERFQURfT0JKRUNUOworICAgIH0KKworICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKKyNpZiBERUJVR19DSEFOTkVMX1NJR05BTFMKKyAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gcmVjZWl2ZSBzaWduYWwgZmFpbGVkIGJlY2F1c2Ugbm8gc2lnbmFsIGF2YWlsYWJsZSIsIG1OYW1lLnN0cmluZygpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gV09VTERfQkxPQ0s7CisgICAgfQorCisjaWYgREVCVUdfQ0hBTk5FTF9TSUdOQUxTCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gcmVjZWl2ZSBzaWduYWwgZmFpbGVkLCBlcnJubz0lZCIsIG1OYW1lLnN0cmluZygpLCBlcnJubyk7CisjZW5kaWYKKyAgICByZXR1cm4gLWVycm5vOworfQorCisKKy8vIC0tLSBJbnB1dFB1Ymxpc2hlciAtLS0KKworSW5wdXRQdWJsaXNoZXI6OklucHV0UHVibGlzaGVyKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGNoYW5uZWwpIDoKKyAgICAgICAgbUNoYW5uZWwoY2hhbm5lbCksIG1TaGFyZWRNZXNzYWdlKE5VTEwpLAorICAgICAgICBtUGlubmVkKGZhbHNlKSwgbVNlbWFwaG9yZUluaXRpYWxpemVkKGZhbHNlKSwgbVdhc0Rpc3BhdGNoZWQoZmFsc2UpLAorICAgICAgICBtTW90aW9uRXZlbnRTYW1wbGVEYXRhVGFpbChOVUxMKSB7Cit9CisKK0lucHV0UHVibGlzaGVyOjp+SW5wdXRQdWJsaXNoZXIoKSB7CisgICAgcmVzZXQoKTsKKworICAgIGlmIChtU2hhcmVkTWVzc2FnZSkgeworICAgICAgICBtdW5tYXAobVNoYXJlZE1lc3NhZ2UsIG1Bc2htZW1TaXplKTsKKyAgICB9Cit9CisKK3N0YXR1c190IElucHV0UHVibGlzaGVyOjppbml0aWFsaXplKCkgeworI2lmIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IGluaXRpYWxpemUiLAorICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIGludCBhc2htZW1GZCA9IG1DaGFubmVsLT5nZXRBc2htZW1GZCgpOworICAgIGludCByZXN1bHQgPSBhc2htZW1fZ2V0X3NpemVfcmVnaW9uKGFzaG1lbUZkKTsKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gRXJyb3IgJWQgZ2V0dGluZyBzaXplIG9mIGFzaG1lbSBmZCAlZC4iLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlc3VsdCwgYXNobWVtRmQpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisgICAgbUFzaG1lbVNpemUgPSAoc2l6ZV90KSByZXN1bHQ7CisKKyAgICBtU2hhcmVkTWVzc2FnZSA9IHN0YXRpY19jYXN0PElucHV0TWVzc2FnZSo+KG1tYXAoTlVMTCwgbUFzaG1lbVNpemUsCisgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBhc2htZW1GZCwgMCkpOworICAgIGlmICghIG1TaGFyZWRNZXNzYWdlKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBtbWFwIGZhaWxlZCBvbiBhc2htZW0gZmQgJWQuIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBhc2htZW1GZCk7CisgICAgICAgIHJldHVybiBOT19NRU1PUlk7CisgICAgfQorCisgICAgbVBpbm5lZCA9IHRydWU7CisgICAgbVNoYXJlZE1lc3NhZ2UtPmNvbnN1bWVkID0gZmFsc2U7CisKKyAgICByZXR1cm4gcmVzZXQoKTsKK30KKworc3RhdHVzX3QgSW5wdXRQdWJsaXNoZXI6OnJlc2V0KCkgeworI2lmIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IHJlc2V0IiwKKyAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIGlmIChtUGlubmVkKSB7CisgICAgICAgIC8vIERlc3Ryb3kgdGhlIHNlbWFwaG9yZSBzaW5jZSB3ZSBhcmUgYWJvdXQgdG8gdW5waW4gdGhlIG1lbW9yeSByZWdpb24gdGhhdCBjb250YWlucyBpdC4KKyAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgaWYgKG1TZW1hcGhvcmVJbml0aWFsaXplZCkgeworICAgICAgICAgICAgaWYgKG1TaGFyZWRNZXNzYWdlLT5jb25zdW1lZCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbV9wb3N0KCYgbVNoYXJlZE1lc3NhZ2UtPnNlbWFwaG9yZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IEVycm9yICVkIGluIHNlbV9wb3N0LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgZXJybm8pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbV9kZXN0cm95KCYgbVNoYXJlZE1lc3NhZ2UtPnNlbWFwaG9yZSk7CisgICAgICAgICAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBFcnJvciAlZCBpbiBzZW1fZGVzdHJveS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgZXJybm8pOworICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtU2VtYXBob3JlSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVucGluIHRoZSByZWdpb24gc2luY2Ugd2Ugbm8gbG9uZ2VyIGNhcmUgYWJvdXQgaXRzIGNvbnRlbnRzLgorICAgICAgICBpbnQgYXNobWVtRmQgPSBtQ2hhbm5lbC0+Z2V0QXNobWVtRmQoKTsKKyAgICAgICAgcmVzdWx0ID0gYXNobWVtX3VucGluX3JlZ2lvbihhc2htZW1GZCwgMCwgMCk7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gRXJyb3IgJWQgdW5waW5uaW5nIGFzaG1lbSBmZCAlZC4iLAorICAgICAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCByZXN1bHQsIGFzaG1lbUZkKTsKKyAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgICAgICB9CisKKyAgICAgICAgbVBpbm5lZCA9IGZhbHNlOworICAgIH0KKworICAgIG1Nb3Rpb25FdmVudFNhbXBsZURhdGFUYWlsID0gTlVMTDsKKyAgICBtV2FzRGlzcGF0Y2hlZCA9IGZhbHNlOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgSW5wdXRQdWJsaXNoZXI6OnB1Ymxpc2hJbnB1dEV2ZW50KAorICAgICAgICBpbnQzMl90IHR5cGUsCisgICAgICAgIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgIGludDMyX3QgbmF0dXJlKSB7CisgICAgaWYgKG1QaW5uZWQpIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IEF0dGVtcHRlZCB0byBwdWJsaXNoIGEgbmV3IGV2ZW50IGJ1dCBwdWJsaXNoZXIgaGFzICIKKyAgICAgICAgICAgICAgICAibm90IHlldCBiZWVuIHJlc2V0LiIsIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorCisgICAgLy8gUGluIHRoZSByZWdpb24uCisgICAgLy8gV2UgZG8gbm90IGNoZWNrIGZvciBBU0hNRU1fTk9UX1BVUkdFRCBiZWNhdXNlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHByZXZpb3VzCisgICAgLy8gY29udGVudHMgb2YgdGhlIGJ1ZmZlciBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hldGhlciBpdCB3YXMgcHVyZ2VkIGluIHRoZSBtZWFudGltZS4KKyAgICBpbnQgYXNobWVtRmQgPSBtQ2hhbm5lbC0+Z2V0QXNobWVtRmQoKTsKKyAgICBpbnQgcmVzdWx0ID0gYXNobWVtX3Bpbl9yZWdpb24oYXNobWVtRmQsIDAsIDApOworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBFcnJvciAlZCBwaW5uaW5nIGFzaG1lbSBmZCAlZC4iLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlc3VsdCwgYXNobWVtRmQpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICBtUGlubmVkID0gdHJ1ZTsKKworICAgIHJlc3VsdCA9IHNlbV9pbml0KCYgbVNoYXJlZE1lc3NhZ2UtPnNlbWFwaG9yZSwgMSwgMSk7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IEVycm9yICVkIGluIHNlbV9pbml0LiIsCisgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgZXJybm8pOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICBtU2VtYXBob3JlSW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgbVNoYXJlZE1lc3NhZ2UtPmNvbnN1bWVkID0gZmFsc2U7CisgICAgbVNoYXJlZE1lc3NhZ2UtPnR5cGUgPSB0eXBlOworICAgIG1TaGFyZWRNZXNzYWdlLT5kZXZpY2VJZCA9IGRldmljZUlkOworICAgIG1TaGFyZWRNZXNzYWdlLT5uYXR1cmUgPSBuYXR1cmU7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBJbnB1dFB1Ymxpc2hlcjo6cHVibGlzaEtleUV2ZW50KAorICAgICAgICBpbnQzMl90IGRldmljZUlkLAorICAgICAgICBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgaW50MzJfdCBhY3Rpb24sCisgICAgICAgIGludDMyX3QgZmxhZ3MsCisgICAgICAgIGludDMyX3Qga2V5Q29kZSwKKyAgICAgICAgaW50MzJfdCBzY2FuQ29kZSwKKyAgICAgICAgaW50MzJfdCBtZXRhU3RhdGUsCisgICAgICAgIGludDMyX3QgcmVwZWF0Q291bnQsCisgICAgICAgIG5zZWNzX3QgZG93blRpbWUsCisgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gcHVibGlzaEtleUV2ZW50OiBkZXZpY2VJZD0lZCwgbmF0dXJlPSVkLCAiCisgICAgICAgICAgICAiYWN0aW9uPSVkLCBmbGFncz0lZCwga2V5Q29kZT0lZCwgc2NhbkNvZGU9JWQsIG1ldGFTdGF0ZT0lZCwgcmVwZWF0Q291bnQ9JWQsIgorICAgICAgICAgICAgImRvd25UaW1lPSVsbGQsIGV2ZW50VGltZT0lbGxkIiwKKyAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksCisgICAgICAgICAgICBkZXZpY2VJZCwgbmF0dXJlLCBhY3Rpb24sIGZsYWdzLCBrZXlDb2RlLCBzY2FuQ29kZSwgbWV0YVN0YXRlLCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgIGRvd25UaW1lLCBldmVudFRpbWUpOworI2VuZGlmCisKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBwdWJsaXNoSW5wdXRFdmVudChJTlBVVF9FVkVOVF9UWVBFX0tFWSwgZGV2aWNlSWQsIG5hdHVyZSk7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LmFjdGlvbiA9IGFjdGlvbjsKKyAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LmZsYWdzID0gZmxhZ3M7CisgICAgbVNoYXJlZE1lc3NhZ2UtPmtleS5rZXlDb2RlID0ga2V5Q29kZTsKKyAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LnNjYW5Db2RlID0gc2NhbkNvZGU7CisgICAgbVNoYXJlZE1lc3NhZ2UtPmtleS5tZXRhU3RhdGUgPSBtZXRhU3RhdGU7CisgICAgbVNoYXJlZE1lc3NhZ2UtPmtleS5yZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OworICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuZG93blRpbWUgPSBkb3duVGltZTsKKyAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LmV2ZW50VGltZSA9IGV2ZW50VGltZTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0UHVibGlzaGVyOjpwdWJsaXNoTW90aW9uRXZlbnQoCisgICAgICAgIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgIGludDMyX3QgbmF0dXJlLAorICAgICAgICBpbnQzMl90IGFjdGlvbiwKKyAgICAgICAgaW50MzJfdCBlZGdlRmxhZ3MsCisgICAgICAgIGludDMyX3QgbWV0YVN0YXRlLAorICAgICAgICBmbG9hdCB4T2Zmc2V0LAorICAgICAgICBmbG9hdCB5T2Zmc2V0LAorICAgICAgICBmbG9hdCB4UHJlY2lzaW9uLAorICAgICAgICBmbG9hdCB5UHJlY2lzaW9uLAorICAgICAgICBuc2Vjc190IGRvd25UaW1lLAorICAgICAgICBuc2Vjc190IGV2ZW50VGltZSwKKyAgICAgICAgc2l6ZV90IHBvaW50ZXJDb3VudCwKKyAgICAgICAgY29uc3QgaW50MzJfdCogcG9pbnRlcklkcywKKyAgICAgICAgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3JkcykgeworI2lmIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IHB1Ymxpc2hNb3Rpb25FdmVudDogZGV2aWNlSWQ9JWQsIG5hdHVyZT0lZCwgIgorICAgICAgICAgICAgImFjdGlvbj0lZCwgZWRnZUZsYWdzPSVkLCBtZXRhU3RhdGU9JWQsIHhPZmZzZXQ9JWYsIHlPZmZzZXQ9JWYsICIKKyAgICAgICAgICAgICJ4UHJlY2lzaW9uPSVmLCB5UHJlY2lzaW9uPSVmLCBkb3duVGltZT0lbGxkLCBldmVudFRpbWU9JWxsZCwgIgorICAgICAgICAgICAgInBvaW50ZXJDb3VudD0lZCIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLAorICAgICAgICAgICAgZGV2aWNlSWQsIG5hdHVyZSwgYWN0aW9uLCBlZGdlRmxhZ3MsIG1ldGFTdGF0ZSwgeE9mZnNldCwgeU9mZnNldCwKKyAgICAgICAgICAgIHhQcmVjaXNpb24sIHlQcmVjaXNpb24sIGRvd25UaW1lLCBldmVudFRpbWUsIHBvaW50ZXJDb3VudCk7CisjZW5kaWYKKworICAgIGlmIChwb2ludGVyQ291bnQgPiBNQVhfUE9JTlRFUlMgfHwgcG9pbnRlckNvdW50IDwgMSkgeworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gSW52YWxpZCBudW1iZXIgb2YgcG9pbnRlcnMgcHJvdmlkZWQ6ICVkLiIsCisgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgcG9pbnRlckNvdW50KTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBwdWJsaXNoSW5wdXRFdmVudChJTlBVVF9FVkVOVF9UWVBFX01PVElPTiwgZGV2aWNlSWQsIG5hdHVyZSk7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLmFjdGlvbiA9IGFjdGlvbjsKKyAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLmVkZ2VGbGFncyA9IGVkZ2VGbGFnczsKKyAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLm1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKKyAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnhPZmZzZXQgPSB4T2Zmc2V0OworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ueU9mZnNldCA9IHlPZmZzZXQ7CisgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi54UHJlY2lzaW9uID0geFByZWNpc2lvbjsKKyAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnlQcmVjaXNpb24gPSB5UHJlY2lzaW9uOworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uZG93blRpbWUgPSBkb3duVGltZTsKKyAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnBvaW50ZXJDb3VudCA9IHBvaW50ZXJDb3VudDsKKworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlQ291bnQgPSAxOworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlRGF0YVswXS5ldmVudFRpbWUgPSBldmVudFRpbWU7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ucG9pbnRlcklkc1tpXSA9IHBvaW50ZXJJZHNbaV07CisgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlRGF0YVswXS5jb29yZHNbaV0gPSBwb2ludGVyQ29vcmRzW2ldOworICAgIH0KKworICAgIC8vIENhY2hlIGVzc2VudGlhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbW90aW9uIGV2ZW50IHRvIGVuc3VyZSB0aGF0IGEgbWFsaWNpb3VzIGNvbnN1bWVyCisgICAgLy8gY2Fubm90IGNvbmZ1c2UgdGhlIHB1Ymxpc2hlciBieSBtb2RpZnlpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGJ1ZmZlciB3aGlsZQorICAgIC8vIGl0IGlzIGJlaW5nIHVwZGF0ZWQuCisgICAgaWYgKGFjdGlvbiA9PSBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUpIHsKKyAgICAgICAgbU1vdGlvbkV2ZW50UG9pbnRlckNvdW50ID0gcG9pbnRlckNvdW50OworICAgICAgICBtTW90aW9uRXZlbnRTYW1wbGVEYXRhU3RyaWRlID0gSW5wdXRNZXNzYWdlOjpzYW1wbGVEYXRhU3RyaWRlKHBvaW50ZXJDb3VudCk7CisgICAgICAgIG1Nb3Rpb25FdmVudFNhbXBsZURhdGFUYWlsID0gSW5wdXRNZXNzYWdlOjpzYW1wbGVEYXRhUHRySW5jcmVtZW50KAorICAgICAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlRGF0YSwgbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVN0cmlkZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVRhaWwgPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0UHVibGlzaGVyOjphcHBlbmRNb3Rpb25TYW1wbGUoCisgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lLAorICAgICAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gYXBwZW5kTW90aW9uU2FtcGxlOiBldmVudFRpbWU9JWxsZCIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBldmVudFRpbWUpOworI2VuZGlmCisKKyAgICBpZiAoISBtUGlubmVkIHx8ICEgbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVRhaWwpIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IENhbm5vdCBhcHBlbmQgbW90aW9uIHNhbXBsZSBiZWNhdXNlIHRoZXJlIGlzIG5vIGN1cnJlbnQgIgorICAgICAgICAgICAgICAgICJNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUgZXZlbnQuIiwgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisKKyAgICBJbnB1dE1lc3NhZ2U6OlNhbXBsZURhdGEqIG5ld1RhaWwgPSBJbnB1dE1lc3NhZ2U6OnNhbXBsZURhdGFQdHJJbmNyZW1lbnQoCisgICAgICAgICAgICBtTW90aW9uRXZlbnRTYW1wbGVEYXRhVGFpbCwgbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVN0cmlkZSk7CisgICAgc2l6ZV90IG5ld0J5dGVzVXNlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG5ld1RhaWwpIC0KKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1TaGFyZWRNZXNzYWdlKTsKKworICAgIGlmIChuZXdCeXRlc1VzZWQgPiBtQXNobWVtU2l6ZSkgeworI2lmIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TCisgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBDYW5ub3QgYXBwZW5kIG1vdGlvbiBzYW1wbGUgYmVjYXVzZSB0aGUgc2hhcmVkIG1lbW9yeSAiCisgICAgICAgICAgICAgICAgImJ1ZmZlciBpcyBmdWxsLiAgQnVmZmVyIHNpemU6ICVkIGJ5dGVzLCBwb2ludGVyczogJWQsIHNhbXBsZXM6ICVkIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLAorICAgICAgICAgICAgICAgIG1Bc2htZW1TaXplLCBtTW90aW9uRXZlbnRQb2ludGVyQ291bnQsIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlQ291bnQpOworI2VuZGlmCisgICAgICAgIHJldHVybiBOT19NRU1PUlk7CisgICAgfQorCisgICAgaW50IHJlc3VsdDsKKyAgICBpZiAobVdhc0Rpc3BhdGNoZWQpIHsKKyAgICAgICAgcmVzdWx0ID0gc2VtX3RyeXdhaXQoJiBtU2hhcmVkTWVzc2FnZS0+c2VtYXBob3JlKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgICAgICAvLyBPbmx5IHBvc3NpYmxlIHNvdXJjZSBvZiBjb250ZW50aW9uIGlzIHRoZSBjb25zdW1lciBoYXZpbmcgY29uc3VtZWQgKG9yIGJlaW5nIGluIHRoZQorICAgICAgICAgICAgICAgIC8vIHByb2Nlc3Mgb2YgY29uc3VtaW5nKSB0aGUgbWVzc2FnZSBhbmQgbGVmdCB0aGUgc2VtYXBob3JlIGNvdW50IGF0IDAuCisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICAgICAgICAgICAgICBMT0dEKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gQ2Fubm90IGFwcGVuZCBtb3Rpb24gc2FtcGxlIGJlY2F1c2UgdGhlIG1lc3NhZ2UgaGFzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbHJlYWR5IGJlZW4gY29uc3VtZWQuIiwgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFJTEVEX1RSQU5TQUNUSU9OOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gRXJyb3IgJWQgaW4gc2VtX3RyeXdhaXQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIGVycm5vKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG1Nb3Rpb25FdmVudFNhbXBsZURhdGFUYWlsLT5ldmVudFRpbWUgPSBldmVudFRpbWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtTW90aW9uRXZlbnRQb2ludGVyQ291bnQ7IGkrKykgeworICAgICAgICBtTW90aW9uRXZlbnRTYW1wbGVEYXRhVGFpbC0+Y29vcmRzW2ldID0gcG9pbnRlckNvb3Jkc1tpXTsKKyAgICB9CisgICAgbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVRhaWwgPSBuZXdUYWlsOworCisgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5zYW1wbGVDb3VudCArPSAxOworCisgICAgaWYgKG1XYXNEaXNwYXRjaGVkKSB7CisgICAgICAgIHJlc3VsdCA9IHNlbV9wb3N0KCYgbVNoYXJlZE1lc3NhZ2UtPnNlbWFwaG9yZSk7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gRXJyb3IgJWQgaW4gc2VtX3Bvc3QuIiwKKyAgICAgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgZXJybm8pOworICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBJbnB1dFB1Ymxpc2hlcjo6c2VuZERpc3BhdGNoU2lnbmFsKCkgeworI2lmIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IHNlbmREaXNwYXRjaFNpZ25hbCIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgbVdhc0Rpc3BhdGNoZWQgPSB0cnVlOworICAgIHJldHVybiBtQ2hhbm5lbC0+c2VuZFNpZ25hbChJTlBVVF9TSUdOQUxfRElTUEFUQ0gpOworfQorCitzdGF0dXNfdCBJbnB1dFB1Ymxpc2hlcjo6cmVjZWl2ZUZpbmlzaGVkU2lnbmFsKCkgeworI2lmIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IHJlY2VpdmVGaW5pc2hlZFNpZ25hbCIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgY2hhciBzaWduYWw7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gbUNoYW5uZWwtPnJlY2VpdmVTaWduYWwoJiBzaWduYWwpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKHNpZ25hbCAhPSBJTlBVVF9TSUdOQUxfRklOSVNIRUQpIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IFJlY2VpdmVkIHVuZXhwZWN0ZWQgc2lnbmFsICclYycgZnJvbSBjb25zdW1lciIsCisgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgc2lnbmFsKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorICAgIHJldHVybiBPSzsKK30KKworLy8gLS0tIElucHV0Q29uc3VtZXIgLS0tCisKK0lucHV0Q29uc3VtZXI6OklucHV0Q29uc3VtZXIoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgY2hhbm5lbCkgOgorICAgICAgICBtQ2hhbm5lbChjaGFubmVsKSwgbVNoYXJlZE1lc3NhZ2UoTlVMTCkgeworfQorCitJbnB1dENvbnN1bWVyOjp+SW5wdXRDb25zdW1lcigpIHsKKyAgICBpZiAobVNoYXJlZE1lc3NhZ2UpIHsKKyAgICAgICAgbXVubWFwKG1TaGFyZWRNZXNzYWdlLCBtQXNobWVtU2l6ZSk7CisgICAgfQorfQorCitzdGF0dXNfdCBJbnB1dENvbnN1bWVyOjppbml0aWFsaXplKCkgeworI2lmIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIGNvbnN1bWVyIH4gaW5pdGlhbGl6ZSIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgaW50IGFzaG1lbUZkID0gbUNoYW5uZWwtPmdldEFzaG1lbUZkKCk7CisgICAgaW50IHJlc3VsdCA9IGFzaG1lbV9nZXRfc2l6ZV9yZWdpb24oYXNobWVtRmQpOworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBjb25zdW1lciB+IEVycm9yICVkIGdldHRpbmcgc2l6ZSBvZiBhc2htZW0gZmQgJWQuIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCByZXN1bHQsIGFzaG1lbUZkKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgbUFzaG1lbVNpemUgPSAoc2l6ZV90KSByZXN1bHQ7CisKKyAgICBtU2hhcmVkTWVzc2FnZSA9IHN0YXRpY19jYXN0PElucHV0TWVzc2FnZSo+KG1tYXAoTlVMTCwgbUFzaG1lbVNpemUsCisgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBhc2htZW1GZCwgMCkpOworICAgIGlmICghIG1TaGFyZWRNZXNzYWdlKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBjb25zdW1lciB+IG1tYXAgZmFpbGVkIG9uIGFzaG1lbSBmZCAlZC4iLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIGFzaG1lbUZkKTsKKyAgICAgICAgcmV0dXJuIE5PX01FTU9SWTsKKyAgICB9CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0Q29uc3VtZXI6OmNvbnN1bWUoSW5wdXRFdmVudEZhY3RvcnlJbnRlcmZhY2UqIGZhY3RvcnksIElucHV0RXZlbnQqKiBvdXRFdmVudCkgeworI2lmIERFQlVHX1RSQU5TUE9SVF9BQ1RJT05TCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIGNvbnN1bWVyIH4gY29uc3VtZSIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgKm91dEV2ZW50ID0gTlVMTDsKKworICAgIGludCBhc2htZW1GZCA9IG1DaGFubmVsLT5nZXRBc2htZW1GZCgpOworICAgIGludCByZXN1bHQgPSBhc2htZW1fcGluX3JlZ2lvbihhc2htZW1GZCwgMCwgMCk7CisgICAgaWYgKHJlc3VsdCAhPSBBU0hNRU1fTk9UX1BVUkdFRCkgeworICAgICAgICBpZiAocmVzdWx0ID09IEFTSE1FTV9XQVNfUFVSR0VEKSB7CisgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgY29uc3VtZXIgfiBFcnJvciAlZCBwaW5uaW5nIGFzaG1lbSBmZCAlZCBiZWNhdXNlIGl0IHdhcyBwdXJnZWQgIgorICAgICAgICAgICAgICAgICAgICAid2hpY2ggcHJvYmFibHkgaW5kaWNhdGVzIHRoYXQgdGhlIHB1Ymxpc2hlciBhbmQgY29uc3VtZXIgYXJlIG91dCBvZiBzeW5jLiIsCisgICAgICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlc3VsdCwgYXNobWVtRmQpOworICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgICAgICB9CisKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIGNvbnN1bWVyIH4gRXJyb3IgJWQgcGlubmluZyBhc2htZW0gZmQgJWQuIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCByZXN1bHQsIGFzaG1lbUZkKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgaWYgKG1TaGFyZWRNZXNzYWdlLT5jb25zdW1lZCkgeworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgY29uc3VtZXIgfiBUaGUgY3VycmVudCBtZXNzYWdlIGhhcyBhbHJlYWR5IGJlZW4gY29uc3VtZWQuIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIC8vIEFjcXVpcmUgYnV0ICpuZXZlciByZWxlYXNlKiB0aGUgc2VtYXBob3JlLiAgQ29udGVudGlvbiBvbiB0aGUgc2VtYXBob3JlIGlzIHVzZWQgdG8gc2lnbmFsCisgICAgLy8gdG8gdGhlIHB1Ymxpc2hlciB0aGF0IHRoZSBtZXNzYWdlIGhhcyBiZWVuIGNvbnN1bWVkIChvciBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZworICAgIC8vIGNvbnN1bWVkKS4gIEV2ZW50dWFsbHkgdGhlIHB1Ymxpc2hlciB3aWxsIHJlaW5pdGlhbGl6ZSB0aGUgc2VtYXBob3JlIGZvciB0aGUgbmV4dCBtZXNzYWdlLgorICAgIHJlc3VsdCA9IHNlbV93YWl0KCYgbVNoYXJlZE1lc3NhZ2UtPnNlbWFwaG9yZSk7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIGNvbnN1bWVyIH4gRXJyb3IgJWQgaW4gc2VtX3dhaXQuIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBlcnJubyk7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIG1TaGFyZWRNZXNzYWdlLT5jb25zdW1lZCA9IHRydWU7CisKKyAgICBzd2l0Y2ggKG1TaGFyZWRNZXNzYWdlLT50eXBlKSB7CisgICAgY2FzZSBJTlBVVF9FVkVOVF9UWVBFX0tFWTogeworICAgICAgICBLZXlFdmVudCoga2V5RXZlbnQgPSBmYWN0b3J5LT5jcmVhdGVLZXlFdmVudCgpOworICAgICAgICBpZiAoISBrZXlFdmVudCkgcmV0dXJuIE5PX01FTU9SWTsKKworICAgICAgICBwb3B1bGF0ZUtleUV2ZW50KGtleUV2ZW50KTsKKworICAgICAgICAqb3V0RXZlbnQgPSBrZXlFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBJTlBVVF9FVkVOVF9UWVBFX01PVElPTjogeworICAgICAgICBNb3Rpb25FdmVudCogbW90aW9uRXZlbnQgPSBmYWN0b3J5LT5jcmVhdGVNb3Rpb25FdmVudCgpOworICAgICAgICBpZiAoISBtb3Rpb25FdmVudCkgcmV0dXJuIE5PX01FTU9SWTsKKworICAgICAgICBwb3B1bGF0ZU1vdGlvbkV2ZW50KG1vdGlvbkV2ZW50KTsKKworICAgICAgICAqb3V0RXZlbnQgPSBtb3Rpb25FdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIGNvbnN1bWVyIH4gUmVjZWl2ZWQgbWVzc2FnZSBvZiB1bmtub3duIHR5cGUgJWQiLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIG1TaGFyZWRNZXNzYWdlLT50eXBlKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBJbnB1dENvbnN1bWVyOjpzZW5kRmluaXNoZWRTaWduYWwoKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgY29uc3VtZXIgfiBzZW5kRmluaXNoZWRTaWduYWwiLAorICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIHJldHVybiBtQ2hhbm5lbC0+c2VuZFNpZ25hbChJTlBVVF9TSUdOQUxfRklOSVNIRUQpOworfQorCitzdGF0dXNfdCBJbnB1dENvbnN1bWVyOjpyZWNlaXZlRGlzcGF0Y2hTaWduYWwoKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgY29uc3VtZXIgfiByZWNlaXZlRGlzcGF0Y2hTaWduYWwiLAorICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIGNoYXIgc2lnbmFsOworICAgIHN0YXR1c190IHJlc3VsdCA9IG1DaGFubmVsLT5yZWNlaXZlU2lnbmFsKCYgc2lnbmFsKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmIChzaWduYWwgIT0gSU5QVVRfU0lHTkFMX0RJU1BBVENIKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBjb25zdW1lciB+IFJlY2VpdmVkIHVuZXhwZWN0ZWQgc2lnbmFsICclYycgZnJvbSBwdWJsaXNoZXIiLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHNpZ25hbCk7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgSW5wdXRDb25zdW1lcjo6cG9wdWxhdGVLZXlFdmVudChLZXlFdmVudCoga2V5RXZlbnQpIGNvbnN0IHsKKyAgICBrZXlFdmVudC0+aW5pdGlhbGl6ZSgKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5kZXZpY2VJZCwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5uYXR1cmUsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LmFjdGlvbiwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuZmxhZ3MsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LmtleUNvZGUsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LnNjYW5Db2RlLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPmtleS5tZXRhU3RhdGUsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LnJlcGVhdENvdW50LAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPmtleS5kb3duVGltZSwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuZXZlbnRUaW1lKTsKK30KKwordm9pZCBJbnB1dENvbnN1bWVyOjpwb3B1bGF0ZU1vdGlvbkV2ZW50KE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCkgY29uc3QgeworICAgIG1vdGlvbkV2ZW50LT5pbml0aWFsaXplKAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPmRldmljZUlkLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm5hdHVyZSwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uYWN0aW9uLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5lZGdlRmxhZ3MsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLm1ldGFTdGF0ZSwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ueE9mZnNldCwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ueU9mZnNldCwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ueFByZWNpc2lvbiwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ueVByZWNpc2lvbiwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uZG93blRpbWUsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnNhbXBsZURhdGFbMF0uZXZlbnRUaW1lLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5wb2ludGVyQ291bnQsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnBvaW50ZXJJZHMsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnNhbXBsZURhdGFbMF0uY29vcmRzKTsKKworICAgIHNpemVfdCBzYW1wbGVDb3VudCA9IG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlQ291bnQ7CisgICAgaWYgKHNhbXBsZUNvdW50ID4gMSkgeworICAgICAgICBJbnB1dE1lc3NhZ2U6OlNhbXBsZURhdGEqIHNhbXBsZURhdGEgPSBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnNhbXBsZURhdGE7CisgICAgICAgIHNpemVfdCBzYW1wbGVEYXRhU3RyaWRlID0gSW5wdXRNZXNzYWdlOjpzYW1wbGVEYXRhU3RyaWRlKAorICAgICAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ucG9pbnRlckNvdW50KTsKKworICAgICAgICB3aGlsZSAoLS1zYW1wbGVDb3VudCA+IDApIHsKKyAgICAgICAgICAgIHNhbXBsZURhdGEgPSBJbnB1dE1lc3NhZ2U6OnNhbXBsZURhdGFQdHJJbmNyZW1lbnQoc2FtcGxlRGF0YSwgc2FtcGxlRGF0YVN0cmlkZSk7CisgICAgICAgICAgICBtb3Rpb25FdmVudC0+YWRkU2FtcGxlKHNhbXBsZURhdGEtPmV2ZW50VGltZSwgc2FtcGxlRGF0YS0+Y29vcmRzKTsKKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisvLyAtLS0gQUlucHV0UXVldWUgLS0tCisKK3VzaW5nIGFuZHJvaWQ6OklucHV0RXZlbnQ7Cit1c2luZyBhbmRyb2lkOjpJbnB1dENoYW5uZWw7Cit1c2luZyBhbmRyb2lkOjpJbnB1dENvbnN1bWVyOwordXNpbmcgYW5kcm9pZDo6c3A7Cit1c2luZyBhbmRyb2lkOjpzdGF0dXNfdDsKKworQUlucHV0UXVldWU6OkFJbnB1dFF1ZXVlKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGNoYW5uZWwpIDoKKyAgICAgICAgbUNvbnN1bWVyKGNoYW5uZWwpIHsKK30KKworQUlucHV0UXVldWU6On5BSW5wdXRRdWV1ZSgpIHsKK30KKworc3RhdHVzX3QgQUlucHV0UXVldWU6OmNvbnN1bWUoSW5wdXRFdmVudCoqIGV2ZW50KSB7CisgICAgcmV0dXJuIG1Db25zdW1lci5jb25zdW1lKCZtSW5wdXRFdmVudEZhY3RvcnksIGV2ZW50KTsKK30KZGlmZiAtLWdpdCBhL2xpYnMvdWkvUGl4ZWxGb3JtYXQuY3BwIGIvbGlicy91aS9QaXhlbEZvcm1hdC5jcHAKaW5kZXggOWI0MTgwNC4uYjIwNTQxOCAxMDA2NDQKLS0tIGEvbGlicy91aS9QaXhlbEZvcm1hdC5jcHAKKysrIGIvbGlicy91aS9QaXhlbEZvcm1hdC5jcHAKQEAgLTU5LDE5ICs1OSwxMyBAQAogICAgIC8vIFlVViBmb3JtYXQgZnJvbSB0aGUgSEFMIGFyZSBoYW5kbGVkIGhlcmUKICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ2JDcl80MjJfU1A6Ci0gICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDckNiXzQyMl9TUDoKLSAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIyX1A6CiAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMl9JOgotICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9DYllDcllfNDIyX0k6CisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lWMTY6CiAgICAgICAgIGluZm8tPmJpdHNQZXJQaXhlbCA9IDE2OwogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMF9TUDoKICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNyQ2JfNDIwX1NQOgogICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ2JDcl80MjBfU1BfVElMRUQ6Ci0gICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDckNiXzQyMF9TUF9USUxFRDoKLSAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIwX1A6Ci0gICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMF9JOgotICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9DYllDcllfNDIwX0k6CisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lWMTI6CiAgICAgICAgIGluZm8tPmJpdHNQZXJQaXhlbCA9IDEyOwogICAgICBkb25lOgogICAgICAgICBpbmZvLT5mb3JtYXQgPSBmb3JtYXQ7CmRpZmYgLS1naXQgYS9saWJzL3VpL3Rlc3RzL0FuZHJvaWQubWsgYi9saWJzL3VpL3Rlc3RzL0FuZHJvaWQubWsKaW5kZXggNmNjNGE1YS4uNDZkNzQ5MyAxMDA2NDQKLS0tIGEvbGlicy91aS90ZXN0cy9BbmRyb2lkLm1rCisrKyBiL2xpYnMvdWkvdGVzdHMvQW5kcm9pZC5tawpAQCAtMSwxNiArMSw0NSBAQAorIyBCdWlsZCB0aGUgdW5pdCB0ZXN0cy4KIExPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCiAKLUxPQ0FMX1NSQ19GSUxFUzo9IFwKLQlyZWdpb24uY3BwCit0ZXN0X3NyY19maWxlcyA6PSBcCisgICAgSW5wdXRDaGFubmVsX3Rlc3QuY3BwIFwKKyAgICBJbnB1dERpc3BhdGNoZXJfdGVzdC5jcHAgXAorICAgIElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJfdGVzdC5jcHAKIAotTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCitzaGFyZWRfbGlicmFyaWVzIDo9IFwKIAlsaWJjdXRpbHMgXAogCWxpYnV0aWxzIFwKLSAgICBsaWJ1aQorCWxpYkVHTCBcCisJbGliYmluZGVyIFwKKwlsaWJwaXhlbGZsaW5nZXIgXAorCWxpYmhhcmR3YXJlIFwKKwlsaWJoYXJkd2FyZV9sZWdhY3kgXAorCWxpYnVpIFwKKwlsaWJzdGxwb3J0CiAKLUxPQ0FMX01PRFVMRTo9IHRlc3QtcmVnaW9uCitzdGF0aWNfbGlicmFyaWVzIDo9IFwKKwlsaWJndGVzdCBcCisJbGliZ3Rlc3RfbWFpbgogCi1MT0NBTF9NT0RVTEVfVEFHUyA6PSB0ZXN0cworY19pbmNsdWRlcyA6PSBcCisgICAgYmlvbmljIFwKKyAgICBiaW9uaWMvbGlic3RkYysrL2luY2x1ZGUgXAorICAgIGV4dGVybmFsL2d0ZXN0L2luY2x1ZGUgXAorICAgIGV4dGVybmFsL3N0bHBvcnQvc3RscG9ydAogCi1pbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKK21vZHVsZV90YWdzIDo9IGVuZyB0ZXN0cworCiskKGZvcmVhY2ggZmlsZSwkKHRlc3Rfc3JjX2ZpbGVzKSwgXAorICAgICQoZXZhbCBpbmNsdWRlICQoQ0xFQVJfVkFSUykpIFwKKyAgICAkKGV2YWwgTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKHNoYXJlZF9saWJyYXJpZXMpKSBcCisgICAgJChldmFsIExPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gJChzdGF0aWNfbGlicmFyaWVzKSkgXAorICAgICQoZXZhbCBMT0NBTF9DX0lOQ0xVREVTIDo9ICQoY19pbmNsdWRlcykpIFwKKyAgICAkKGV2YWwgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoZmlsZSkpIFwKKyAgICAkKGV2YWwgTE9DQUxfTU9EVUxFIDo9ICQobm90ZGlyICQoZmlsZTolLmNwcD0lKSkpIFwKKyAgICAkKGV2YWwgTE9DQUxfTU9EVUxFX1RBR1MgOj0gJChtb2R1bGVfdGFncykpIFwKKyAgICAkKGV2YWwgaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpKSBcCispCisKKyMgQnVpbGQgdGhlIG1hbnVhbCB0ZXN0IHByb2dyYW1zLgoraW5jbHVkZSAkKGNhbGwgYWxsLXN1YmRpci1tYWtlZmlsZXMpCmRpZmYgLS1naXQgYS9saWJzL3VpL3Rlc3RzL0lucHV0Q2hhbm5lbF90ZXN0LmNwcCBiL2xpYnMvdWkvdGVzdHMvSW5wdXRDaGFubmVsX3Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZWMxYzAyCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy91aS90ZXN0cy9JbnB1dENoYW5uZWxfdGVzdC5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisvLworCisjaW5jbHVkZSA8dWkvSW5wdXRUcmFuc3BvcnQuaD4KKyNpbmNsdWRlIDx1dGlscy9UaW1lcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9TdG9wV2F0Y2guaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPGN1dGlscy9hc2htZW0uaD4KKworI2luY2x1ZGUgIi4uLy4uL3V0aWxzL3Rlc3RzL1Rlc3RIZWxwZXJzLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgSW5wdXRDaGFubmVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IH0KK307CisKKworVEVTVF9GKElucHV0Q2hhbm5lbFRlc3QsIENvbnN0cnVjdG9yQW5kRGVzdHJ1Y3Rvcl9UYWtlc093bmVyc2hpcE9mRmlsZURlc2NyaXB0b3JzKSB7CisgICAgLy8gT3VyIHB1cnBvc2UgaGVyZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgaW5wdXQgY2hhbm5lbCBkZXN0cnVjdG9yIGNsb3NlcyB0aGUKKyAgICAvLyBmaWxlIGRlc2NyaXB0b3JzIHByb3ZpZGVkIHRvIGl0LiAgT25lIGVhc3kgd2F5IGlzIHRvIHByb3ZpZGUgaXQgd2l0aCBvbmUgZW5kCisgICAgLy8gb2YgYSBwaXBlIGFuZCB0byBjaGVjayBmb3IgRVBJUEUgb24gdGhlIG90aGVyIGVuZCBhZnRlciB0aGUgY2hhbm5lbCBpcyBkZXN0cm95ZWQuCisgICAgUGlwZSBmYWtlQXNobWVtLCBzZW5kUGlwZSwgcmVjZWl2ZVBpcGU7CisKKyAgICBzcDxJbnB1dENoYW5uZWw+IGlucHV0Q2hhbm5lbCA9IG5ldyBJbnB1dENoYW5uZWwoU3RyaW5nOCgiY2hhbm5lbCBuYW1lIiksCisgICAgICAgICAgICBmYWtlQXNobWVtLnNlbmRGZCwgcmVjZWl2ZVBpcGUucmVjZWl2ZUZkLCBzZW5kUGlwZS5zZW5kRmQpOworCisgICAgRVhQRUNUX1NUUkVRKCJjaGFubmVsIG5hbWUiLCBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSkKKyAgICAgICAgICAgIDw8ICJjaGFubmVsIHNob3VsZCBoYXZlIHByb3ZpZGVkIG5hbWUiOworICAgIEVYUEVDVF9FUShmYWtlQXNobWVtLnNlbmRGZCwgaW5wdXRDaGFubmVsLT5nZXRBc2htZW1GZCgpKQorICAgICAgICAgICAgPDwgImNoYW5uZWwgc2hvdWxkIGhhdmUgcHJvdmlkZWQgYXNobWVtIGZkIjsKKyAgICBFWFBFQ1RfRVEocmVjZWl2ZVBpcGUucmVjZWl2ZUZkLCBpbnB1dENoYW5uZWwtPmdldFJlY2VpdmVQaXBlRmQoKSkKKyAgICAgICAgICAgIDw8ICJjaGFubmVsIHNob3VsZCBoYXZlIHByb3ZpZGVkIHJlY2VpdmUgcGlwZSBmZCI7CisgICAgRVhQRUNUX0VRKHNlbmRQaXBlLnNlbmRGZCwgaW5wdXRDaGFubmVsLT5nZXRTZW5kUGlwZUZkKCkpCisgICAgICAgICAgICA8PCAiY2hhbm5lbCBzaG91bGQgaGF2ZSBwcm92aWRlZCBzZW5kIHBpcGUgZmQiOworCisgICAgaW5wdXRDaGFubmVsLmNsZWFyKCk7IC8vIGRlc3Ryb3lzIGlucHV0IGNoYW5uZWwKKworICAgIEVYUEVDVF9FUSgtRVBJUEUsIGZha2VBc2htZW0ucmVhZFNpZ25hbCgpKQorICAgICAgICAgICAgPDwgImNoYW5uZWwgc2hvdWxkIGhhdmUgY2xvc2VkIGFzaG1lbSBmZCB3aGVuIGRlc3Ryb3llZCI7CisgICAgRVhQRUNUX0VRKC1FUElQRSwgcmVjZWl2ZVBpcGUud3JpdGVTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJjaGFubmVsIHNob3VsZCBoYXZlIGNsb3NlZCByZWNlaXZlIHBpcGUgZmQgd2hlbiBkZXN0cm95ZWQiOworICAgIEVYUEVDVF9FUSgtRVBJUEUsIHNlbmRQaXBlLnJlYWRTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJjaGFubmVsIHNob3VsZCBoYXZlIGNsb3NlZCBzZW5kIHBpcGUgZmQgd2hlbiBkZXN0cm95ZWQiOworCisgICAgLy8gY2xlYW4gdXAgZmRzIG9mIFBpcGUgZW5kcG9pbnRzIHRoYXQgd2VyZSBjbG9zZWQgc28gd2UgZG9uJ3QgdHJ5IHRvIGNsb3NlIHRoZW0gYWdhaW4KKyAgICBmYWtlQXNobWVtLnNlbmRGZCA9IC0xOworICAgIHJlY2VpdmVQaXBlLnJlY2VpdmVGZCA9IC0xOworICAgIHNlbmRQaXBlLnNlbmRGZCA9IC0xOworfQorCitURVNUX0YoSW5wdXRDaGFubmVsVGVzdCwgT3BlbklucHV0Q2hhbm5lbFBhaXJfUmV0dXJuc0FQYWlyT2ZDb25uZWN0ZWRDaGFubmVscykgeworICAgIHNwPElucHV0Q2hhbm5lbD4gc2VydmVyQ2hhbm5lbCwgY2xpZW50Q2hhbm5lbDsKKworICAgIHN0YXR1c190IHJlc3VsdCA9IElucHV0Q2hhbm5lbDo6b3BlbklucHV0Q2hhbm5lbFBhaXIoU3RyaW5nOCgiY2hhbm5lbCBuYW1lIiksCisgICAgICAgICAgICBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsKTsKKworICAgIEFTU0VSVF9FUShPSywgcmVzdWx0KQorICAgICAgICAgICAgPDwgInNob3VsZCBoYXZlIHN1Y2Nlc3NmdWxseSBvcGVuZWQgYSBjaGFubmVsIHBhaXIiOworCisgICAgLy8gTmFtZQorICAgIEVYUEVDVF9TVFJFUSgiY2hhbm5lbCBuYW1lIChzZXJ2ZXIpIiwgc2VydmVyQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKQorICAgICAgICAgICAgPDwgInNlcnZlciBjaGFubmVsIHNob3VsZCBoYXZlIHN1ZmZpeGVkIG5hbWUiOworICAgIEVYUEVDVF9TVFJFUSgiY2hhbm5lbCBuYW1lIChjbGllbnQpIiwgY2xpZW50Q2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKQorICAgICAgICAgICAgPDwgImNsaWVudCBjaGFubmVsIHNob3VsZCBoYXZlIHN1ZmZpeGVkIG5hbWUiOworCisgICAgLy8gQXNobWVtIHVuaXF1ZW5lc3MKKyAgICBFWFBFQ1RfTkUoc2VydmVyQ2hhbm5lbC0+Z2V0QXNobWVtRmQoKSwgY2xpZW50Q2hhbm5lbC0+Z2V0QXNobWVtRmQoKSkKKyAgICAgICAgICAgIDw8ICJzZXJ2ZXIgYW5kIGNsaWVudCBjaGFubmVsIHNob3VsZCBoYXZlIGRpZmZlcmVudCBhc2htZW0gZmRzIGJlY2F1c2UgaXQgd2FzIGR1cCdkIjsKKworICAgIC8vIEFzaG1lbSB1c2FiaWxpdHkKKyAgICBzc2l6ZV90IHNlcnZlckFzaG1lbVNpemUgPSBhc2htZW1fZ2V0X3NpemVfcmVnaW9uKHNlcnZlckNoYW5uZWwtPmdldEFzaG1lbUZkKCkpOworICAgIHNzaXplX3QgY2xpZW50QXNobWVtU2l6ZSA9IGFzaG1lbV9nZXRfc2l6ZV9yZWdpb24oY2xpZW50Q2hhbm5lbC0+Z2V0QXNobWVtRmQoKSk7CisgICAgdWludDMyX3QqIHNlcnZlckFzaG1lbSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4obW1hcChOVUxMLCBzZXJ2ZXJBc2htZW1TaXplLAorICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgc2VydmVyQ2hhbm5lbC0+Z2V0QXNobWVtRmQoKSwgMCkpOworICAgIHVpbnQzMl90KiBjbGllbnRBc2htZW0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KG1tYXAoTlVMTCwgY2xpZW50QXNobWVtU2l6ZSwKKyAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGNsaWVudENoYW5uZWwtPmdldEFzaG1lbUZkKCksIDApKTsKKyAgICBBU1NFUlRfVFJVRShzZXJ2ZXJBc2htZW0gIT0gTlVMTCkKKyAgICAgICAgICAgIDw8ICJzZXJ2ZXIgY2hhbm5lbCBhc2htZW0gc2hvdWxkIGJlIG1hcHBhYmxlIjsKKyAgICBBU1NFUlRfVFJVRShjbGllbnRBc2htZW0gIT0gTlVMTCkKKyAgICAgICAgICAgIDw8ICJjbGllbnQgY2hhbm5lbCBhc2htZW0gc2hvdWxkIGJlIG1hcHBhYmxlIjsKKyAgICAqc2VydmVyQXNobWVtID0gMHhmMDBkZDAwZDsKKyAgICBFWFBFQ1RfRVEoMHhmMDBkZDAwZCwgKmNsaWVudEFzaG1lbSkKKyAgICAgICAgICAgIDw8ICJhc2htZW0gYnVmZmVyIHNob3VsZCBiZSBzaGFyZWQgYnkgY2xpZW50IGFuZCBzZXJ2ZXIiOworICAgIG11bm1hcChzZXJ2ZXJBc2htZW0sIHNlcnZlckFzaG1lbVNpemUpOworICAgIG11bm1hcChjbGllbnRBc2htZW0sIGNsaWVudEFzaG1lbVNpemUpOworCisgICAgLy8gU2VydmVyLT5DbGllbnQgY29tbXVuaWNhdGlvbgorICAgIEVYUEVDVF9FUShPSywgc2VydmVyQ2hhbm5lbC0+c2VuZFNpZ25hbCgnUycpKQorICAgICAgICAgICAgPDwgInNlcnZlciBjaGFubmVsIHNob3VsZCBiZSBhYmxlIHRvIHNlbmQgc2lnbmFsIHRvIGNsaWVudCBjaGFubmVsIjsKKyAgICBjaGFyIHNpZ25hbDsKKyAgICBFWFBFQ1RfRVEoT0ssIGNsaWVudENoYW5uZWwtPnJlY2VpdmVTaWduYWwoJiBzaWduYWwpKQorICAgICAgICAgICAgPDwgImNsaWVudCBjaGFubmVsIHNob3VsZCBiZSBhYmxlIHRvIHJlY2VpdmUgc2lnbmFsIGZyb20gc2VydmVyIGNoYW5uZWwiOworICAgIEVYUEVDVF9FUSgnUycsIHNpZ25hbCkKKyAgICAgICAgICAgIDw8ICJjbGllbnQgY2hhbm5lbCBzaG91bGQgcmVjZWl2ZSB0aGUgY29ycmVjdCBzaWduYWwgZnJvbSBzZXJ2ZXIgY2hhbm5lbCI7CisKKyAgICAvLyBDbGllbnQtPlNlcnZlciBjb21tdW5pY2F0aW9uCisgICAgRVhQRUNUX0VRKE9LLCBjbGllbnRDaGFubmVsLT5zZW5kU2lnbmFsKCdjJykpCisgICAgICAgICAgICA8PCAiY2xpZW50IGNoYW5uZWwgc2hvdWxkIGJlIGFibGUgdG8gc2VuZCBzaWduYWwgdG8gc2VydmVyIGNoYW5uZWwiOworICAgIEVYUEVDVF9FUShPSywgc2VydmVyQ2hhbm5lbC0+cmVjZWl2ZVNpZ25hbCgmIHNpZ25hbCkpCisgICAgICAgICAgICA8PCAic2VydmVyIGNoYW5uZWwgc2hvdWxkIGJlIGFibGUgdG8gcmVjZWl2ZSBzaWduYWwgZnJvbSBjbGllbnQgY2hhbm5lbCI7CisgICAgRVhQRUNUX0VRKCdjJywgc2lnbmFsKQorICAgICAgICAgICAgPDwgInNlcnZlciBjaGFubmVsIHNob3VsZCByZWNlaXZlIHRoZSBjb3JyZWN0IHNpZ25hbCBmcm9tIGNsaWVudCBjaGFubmVsIjsKK30KKworVEVTVF9GKElucHV0Q2hhbm5lbFRlc3QsIFJlY2VpdmVTaWduYWxfV2hlbk5vU2lnbmFsUHJlc2VudF9SZXR1cm5zQW5FcnJvcikgeworICAgIHNwPElucHV0Q2hhbm5lbD4gc2VydmVyQ2hhbm5lbCwgY2xpZW50Q2hhbm5lbDsKKworICAgIHN0YXR1c190IHJlc3VsdCA9IElucHV0Q2hhbm5lbDo6b3BlbklucHV0Q2hhbm5lbFBhaXIoU3RyaW5nOCgiY2hhbm5lbCBuYW1lIiksCisgICAgICAgICAgICBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsKTsKKworICAgIEFTU0VSVF9FUShPSywgcmVzdWx0KQorICAgICAgICAgICAgPDwgInNob3VsZCBoYXZlIHN1Y2Nlc3NmdWxseSBvcGVuZWQgYSBjaGFubmVsIHBhaXIiOworCisgICAgY2hhciBzaWduYWw7CisgICAgRVhQRUNUX0VRKFdPVUxEX0JMT0NLLCBjbGllbnRDaGFubmVsLT5yZWNlaXZlU2lnbmFsKCYgc2lnbmFsKSkKKyAgICAgICAgICAgIDw8ICJyZWNlaXZlU2lnbmFsIHNob3VsZCBoYXZlIHJldHVybmVkIFdPVUxEX0JMT0NLIjsKK30KKworVEVTVF9GKElucHV0Q2hhbm5lbFRlc3QsIFJlY2VpdmVTaWduYWxfV2hlblBlZXJDbG9zZWRfUmV0dXJuc0FuRXJyb3IpIHsKKyAgICBzcDxJbnB1dENoYW5uZWw+IHNlcnZlckNoYW5uZWwsIGNsaWVudENoYW5uZWw7CisKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBJbnB1dENoYW5uZWw6Om9wZW5JbnB1dENoYW5uZWxQYWlyKFN0cmluZzgoImNoYW5uZWwgbmFtZSIpLAorICAgICAgICAgICAgc2VydmVyQ2hhbm5lbCwgY2xpZW50Q2hhbm5lbCk7CisKKyAgICBBU1NFUlRfRVEoT0ssIHJlc3VsdCkKKyAgICAgICAgICAgIDw8ICJzaG91bGQgaGF2ZSBzdWNjZXNzZnVsbHkgb3BlbmVkIGEgY2hhbm5lbCBwYWlyIjsKKworICAgIHNlcnZlckNoYW5uZWwuY2xlYXIoKTsgLy8gY2xvc2Ugc2VydmVyIGNoYW5uZWwKKworICAgIGNoYXIgc2lnbmFsOworICAgIEVYUEVDVF9FUShERUFEX09CSkVDVCwgY2xpZW50Q2hhbm5lbC0+cmVjZWl2ZVNpZ25hbCgmIHNpZ25hbCkpCisgICAgICAgICAgICA8PCAicmVjZWl2ZVNpZ25hbCBzaG91bGQgaGF2ZSByZXR1cm5lZCBERUFEX09CSkVDVCI7Cit9CisKK1RFU1RfRihJbnB1dENoYW5uZWxUZXN0LCBTZW5kU2lnbmFsX1doZW5QZWVyQ2xvc2VkX1JldHVybnNBbkVycm9yKSB7CisgICAgc3A8SW5wdXRDaGFubmVsPiBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsOworCisgICAgc3RhdHVzX3QgcmVzdWx0ID0gSW5wdXRDaGFubmVsOjpvcGVuSW5wdXRDaGFubmVsUGFpcihTdHJpbmc4KCJjaGFubmVsIG5hbWUiKSwKKyAgICAgICAgICAgIHNlcnZlckNoYW5uZWwsIGNsaWVudENoYW5uZWwpOworCisgICAgQVNTRVJUX0VRKE9LLCByZXN1bHQpCisgICAgICAgICAgICA8PCAic2hvdWxkIGhhdmUgc3VjY2Vzc2Z1bGx5IG9wZW5lZCBhIGNoYW5uZWwgcGFpciI7CisKKyAgICBzZXJ2ZXJDaGFubmVsLmNsZWFyKCk7IC8vIGNsb3NlIHNlcnZlciBjaGFubmVsCisKKyAgICBFWFBFQ1RfRVEoREVBRF9PQkpFQ1QsIGNsaWVudENoYW5uZWwtPnNlbmRTaWduYWwoJ1MnKSkKKyAgICAgICAgICAgIDw8ICJzZW5kU2lnbmFsIHNob3VsZCBoYXZlIHJldHVybmVkIERFQURfT0JKRUNUIjsKK30KKworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3VpL3Rlc3RzL0lucHV0RGlzcGF0Y2hlcl90ZXN0LmNwcCBiL2xpYnMvdWkvdGVzdHMvSW5wdXREaXNwYXRjaGVyX3Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYzZlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL3Rlc3RzL0lucHV0RGlzcGF0Y2hlcl90ZXN0LmNwcApAQCAtMCwwICsxLDE4IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorLy8KKworI2luY2x1ZGUgPHVpL0lucHV0RGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgSW5wdXREaXNwYXRjaGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKK307CisKK1RFU1RfRihJbnB1dERpc3BhdGNoZXJUZXN0LCBEdW1teSkgeworICAgIC8vIFRPRE8KK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbGlicy91aS90ZXN0cy9JbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyX3Rlc3QuY3BwIGIvbGlicy91aS90ZXN0cy9JbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyX3Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNmI1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL3Rlc3RzL0lucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJfdGVzdC5jcHAKQEAgLTAsMCArMSw0NDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisvLworCisjaW5jbHVkZSA8dWkvSW5wdXRUcmFuc3BvcnQuaD4KKyNpbmNsdWRlIDx1dGlscy9UaW1lcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9TdG9wV2F0Y2guaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPGN1dGlscy9hc2htZW0uaD4KKworI2luY2x1ZGUgIi4uLy4uL3V0aWxzL3Rlc3RzL1Rlc3RIZWxwZXJzLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Citwcm90ZWN0ZWQ6CisgICAgc3A8SW5wdXRDaGFubmVsPiBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsOworICAgIElucHV0UHVibGlzaGVyKiBtUHVibGlzaGVyOworICAgIElucHV0Q29uc3VtZXIqIG1Db25zdW1lcjsKKyAgICBQcmVhbGxvY2F0ZWRJbnB1dEV2ZW50RmFjdG9yeSBtRXZlbnRGYWN0b3J5OworCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgICAgICBzdGF0dXNfdCByZXN1bHQgPSBJbnB1dENoYW5uZWw6Om9wZW5JbnB1dENoYW5uZWxQYWlyKFN0cmluZzgoImNoYW5uZWwgbmFtZSIpLAorICAgICAgICAgICAgICAgIHNlcnZlckNoYW5uZWwsIGNsaWVudENoYW5uZWwpOworCisgICAgICAgIG1QdWJsaXNoZXIgPSBuZXcgSW5wdXRQdWJsaXNoZXIoc2VydmVyQ2hhbm5lbCk7CisgICAgICAgIG1Db25zdW1lciA9IG5ldyBJbnB1dENvbnN1bWVyKGNsaWVudENoYW5uZWwpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAgICAgaWYgKG1QdWJsaXNoZXIpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtUHVibGlzaGVyOworICAgICAgICAgICAgbVB1Ymxpc2hlciA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUNvbnN1bWVyKSB7CisgICAgICAgICAgICBkZWxldGUgbUNvbnN1bWVyOworICAgICAgICAgICAgbUNvbnN1bWVyID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHNlcnZlckNoYW5uZWwuY2xlYXIoKTsKKyAgICAgICAgY2xpZW50Q2hhbm5lbC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgSW5pdGlhbGl6ZSgpOworICAgIHZvaWQgUHVibGlzaEFuZENvbnN1bWVLZXlFdmVudCgpOworICAgIHZvaWQgUHVibGlzaEFuZENvbnN1bWVNb3Rpb25FdmVudCgKKyAgICAgICAgICAgIHNpemVfdCBzYW1wbGVzVG9BcHBlbmRCZWZvcmVEaXNwYXRjaCA9IDAsCisgICAgICAgICAgICBzaXplX3Qgc2FtcGxlc1RvQXBwZW5kQWZ0ZXJEaXNwYXRjaCA9IDApOworfTsKKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBHZXRDaGFubmVsX1JldHVybnNUaGVDaGFubmVsKSB7CisgICAgRVhQRUNUX0VRKHNlcnZlckNoYW5uZWwuZ2V0KCksIG1QdWJsaXNoZXItPmdldENoYW5uZWwoKS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKGNsaWVudENoYW5uZWwuZ2V0KCksIG1Db25zdW1lci0+Z2V0Q2hhbm5lbCgpLmdldCgpKTsKK30KKwordm9pZCBJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdDo6SW5pdGlhbGl6ZSgpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5pbml0aWFsaXplKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIGluaXRpYWxpemUgc2hvdWxkIHJldHVybiBPSyI7CisKKyAgICBzdGF0dXMgPSBtQ29uc3VtZXItPmluaXRpYWxpemUoKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJjb25zdW1lciBpbml0aWFsaXplIHNob3VsZCByZXR1cm4gT0siOworfQorCit2b2lkIElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0OjpQdWJsaXNoQW5kQ29uc3VtZUtleUV2ZW50KCkgeworICAgIHN0YXR1c190IHN0YXR1czsKKworICAgIGNvbnN0IGludDMyX3QgZGV2aWNlSWQgPSAxOworICAgIGNvbnN0IGludDMyX3QgbmF0dXJlID0gSU5QVVRfRVZFTlRfTkFUVVJFX0tFWTsKKyAgICBjb25zdCBpbnQzMl90IGFjdGlvbiA9IEtFWV9FVkVOVF9BQ1RJT05fRE9XTjsKKyAgICBjb25zdCBpbnQzMl90IGZsYWdzID0gS0VZX0VWRU5UX0ZMQUdfRlJPTV9TWVNURU07CisgICAgY29uc3QgaW50MzJfdCBrZXlDb2RlID0gS0VZQ09ERV9FTlRFUjsKKyAgICBjb25zdCBpbnQzMl90IHNjYW5Db2RlID0gMTM7CisgICAgY29uc3QgaW50MzJfdCBtZXRhU3RhdGUgPSBNRVRBX0FMVF9MRUZUX09OIHwgTUVUQV9BTFRfT047CisgICAgY29uc3QgaW50MzJfdCByZXBlYXRDb3VudCA9IDE7CisgICAgY29uc3QgbnNlY3NfdCBkb3duVGltZSA9IDM7CisgICAgY29uc3QgbnNlY3NfdCBldmVudFRpbWUgPSA0OworCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+cHVibGlzaEtleUV2ZW50KGRldmljZUlkLCBuYXR1cmUsIGFjdGlvbiwgZmxhZ3MsCisgICAgICAgICAgICBrZXlDb2RlLCBzY2FuQ29kZSwgbWV0YVN0YXRlLCByZXBlYXRDb3VudCwgZG93blRpbWUsIGV2ZW50VGltZSk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHB1Ymxpc2hLZXlFdmVudCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnNlbmREaXNwYXRjaFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBzZW5kRGlzcGF0Y2hTaWduYWwgc2hvdWxkIHJldHVybiBPSyI7CisKKyAgICBzdGF0dXMgPSBtQ29uc3VtZXItPnJlY2VpdmVEaXNwYXRjaFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIHJlY2VpdmVEaXNwYXRjaFNpZ25hbCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIElucHV0RXZlbnQqIGV2ZW50OworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+Y29uc3VtZSgmIG1FdmVudEZhY3RvcnksICYgZXZlbnQpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIGNvbnN1bWUgc2hvdWxkIHJldHVybiBPSyI7CisKKyAgICBBU1NFUlRfVFJVRShldmVudCAhPSBOVUxMKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIHNob3VsZCBoYXZlIHJldHVybmVkIG5vbi1OVUxMIGV2ZW50IjsKKyAgICBBU1NFUlRfRVEoSU5QVVRfRVZFTlRfVFlQRV9LRVksIGV2ZW50LT5nZXRUeXBlKCkpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBrZXkgZXZlbnQiOworCisgICAgS2V5RXZlbnQqIGtleUV2ZW50ID0gc3RhdGljX2Nhc3Q8S2V5RXZlbnQqPihldmVudCk7CisgICAgRVhQRUNUX0VRKGRldmljZUlkLCBrZXlFdmVudC0+Z2V0RGV2aWNlSWQoKSk7CisgICAgRVhQRUNUX0VRKG5hdHVyZSwga2V5RXZlbnQtPmdldE5hdHVyZSgpKTsKKyAgICBFWFBFQ1RfRVEoYWN0aW9uLCBrZXlFdmVudC0+Z2V0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShmbGFncywga2V5RXZlbnQtPmdldEZsYWdzKCkpOworICAgIEVYUEVDVF9FUShrZXlDb2RlLCBrZXlFdmVudC0+Z2V0S2V5Q29kZSgpKTsKKyAgICBFWFBFQ1RfRVEoc2NhbkNvZGUsIGtleUV2ZW50LT5nZXRTY2FuQ29kZSgpKTsKKyAgICBFWFBFQ1RfRVEobWV0YVN0YXRlLCBrZXlFdmVudC0+Z2V0TWV0YVN0YXRlKCkpOworICAgIEVYUEVDVF9FUShyZXBlYXRDb3VudCwga2V5RXZlbnQtPmdldFJlcGVhdENvdW50KCkpOworICAgIEVYUEVDVF9FUShkb3duVGltZSwga2V5RXZlbnQtPmdldERvd25UaW1lKCkpOworICAgIEVYUEVDVF9FUShldmVudFRpbWUsIGtleUV2ZW50LT5nZXRFdmVudFRpbWUoKSk7CisKKyAgICBzdGF0dXMgPSBtQ29uc3VtZXItPnNlbmRGaW5pc2hlZFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIHNlbmRGaW5pc2hlZFNpZ25hbCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnJlY2VpdmVGaW5pc2hlZFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciByZWNlaXZlRmluaXNoZWRTaWduYWwgc2hvdWxkIHJldHVybiBPSyI7CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5yZXNldCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciByZXNldCBzaG91bGQgcmV0dXJuIE9LIjsKK30KKwordm9pZCBJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdDo6UHVibGlzaEFuZENvbnN1bWVNb3Rpb25FdmVudCgKKyAgICAgICAgc2l6ZV90IHNhbXBsZXNUb0FwcGVuZEJlZm9yZURpc3BhdGNoLCBzaXplX3Qgc2FtcGxlc1RvQXBwZW5kQWZ0ZXJEaXNwYXRjaCkgeworICAgIHN0YXR1c190IHN0YXR1czsKKworICAgIGNvbnN0IGludDMyX3QgZGV2aWNlSWQgPSAxOworICAgIGNvbnN0IGludDMyX3QgbmF0dXJlID0gSU5QVVRfRVZFTlRfTkFUVVJFX1RPVUNIOworICAgIGNvbnN0IGludDMyX3QgYWN0aW9uID0gTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFOworICAgIGNvbnN0IGludDMyX3QgZWRnZUZsYWdzID0gTU9USU9OX0VWRU5UX0VER0VfRkxBR19UT1A7CisgICAgY29uc3QgaW50MzJfdCBtZXRhU3RhdGUgPSBNRVRBX0FMVF9MRUZUX09OIHwgTUVUQV9BTFRfT047CisgICAgY29uc3QgZmxvYXQgeE9mZnNldCA9IC0xMDsKKyAgICBjb25zdCBmbG9hdCB5T2Zmc2V0ID0gLTIwOworICAgIGNvbnN0IGZsb2F0IHhQcmVjaXNpb24gPSAwLjI1OworICAgIGNvbnN0IGZsb2F0IHlQcmVjaXNpb24gPSAwLjU7CisgICAgY29uc3QgbnNlY3NfdCBkb3duVGltZSA9IDM7CisgICAgY29uc3Qgc2l6ZV90IHBvaW50ZXJDb3VudCA9IDM7CisgICAgY29uc3QgaW50MzJfdCBwb2ludGVySWRzW3BvaW50ZXJDb3VudF0gPSB7IDIsIDAsIDEgfTsKKworICAgIFZlY3Rvcjxuc2Vjc190PiBzYW1wbGVFdmVudFRpbWVzOworICAgIFZlY3RvcjxQb2ludGVyQ29vcmRzPiBzYW1wbGVQb2ludGVyQ29vcmRzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPD0gc2FtcGxlc1RvQXBwZW5kQWZ0ZXJEaXNwYXRjaCArIHNhbXBsZXNUb0FwcGVuZEJlZm9yZURpc3BhdGNoOyBpKyspIHsKKyAgICAgICAgc2FtcGxlRXZlbnRUaW1lcy5wdXNoKGkgKyAxMCk7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgcG9pbnRlckNvdW50OyBqKyspIHsKKyAgICAgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHMucHVzaCgpOworICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkcy5lZGl0VG9wKCkueCA9IDEwMCAqIGkgKyBqOworICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkcy5lZGl0VG9wKCkueSA9IDIwMCAqIGkgKyBqOworICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkcy5lZGl0VG9wKCkucHJlc3N1cmUgPSAwLjUgKiBpICsgajsKKyAgICAgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHMuZWRpdFRvcCgpLnNpemUgPSAwLjcgKiBpICsgajsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hNb3Rpb25FdmVudChkZXZpY2VJZCwgbmF0dXJlLCBhY3Rpb24sIGVkZ2VGbGFncywKKyAgICAgICAgICAgIG1ldGFTdGF0ZSwgeE9mZnNldCwgeU9mZnNldCwgeFByZWNpc2lvbiwgeVByZWNpc2lvbiwKKyAgICAgICAgICAgIGRvd25UaW1lLCBzYW1wbGVFdmVudFRpbWVzWzBdLCBwb2ludGVyQ291bnQsIHBvaW50ZXJJZHMsIHNhbXBsZVBvaW50ZXJDb29yZHMuYXJyYXkoKSk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHB1Ymxpc2hNb3Rpb25FdmVudCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FtcGxlc1RvQXBwZW5kQmVmb3JlRGlzcGF0Y2g7IGkrKykgeworICAgICAgICBzaXplX3Qgc2FtcGxlSW5kZXggPSBpICsgMTsKKyAgICAgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+YXBwZW5kTW90aW9uU2FtcGxlKHNhbXBsZUV2ZW50VGltZXNbc2FtcGxlSW5kZXhdLAorICAgICAgICAgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHMuYXJyYXkoKSArIHNhbXBsZUluZGV4ICogcG9pbnRlckNvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBhcHBlbmRNb3Rpb25FdmVudCBzaG91bGQgcmV0dXJuIE9LIjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5zZW5kRGlzcGF0Y2hTaWduYWwoKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgc2VuZERpc3BhdGNoU2lnbmFsIHNob3VsZCByZXR1cm4gT0siOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW1wbGVzVG9BcHBlbmRBZnRlckRpc3BhdGNoOyBpKyspIHsKKyAgICAgICAgc2l6ZV90IHNhbXBsZUluZGV4ID0gaSArIDEgKyBzYW1wbGVzVG9BcHBlbmRCZWZvcmVEaXNwYXRjaDsKKyAgICAgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+YXBwZW5kTW90aW9uU2FtcGxlKHNhbXBsZUV2ZW50VGltZXNbc2FtcGxlSW5kZXhdLAorICAgICAgICAgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHMuYXJyYXkoKSArIHNhbXBsZUluZGV4ICogcG9pbnRlckNvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBhcHBlbmRNb3Rpb25FdmVudCBzaG91bGQgcmV0dXJuIE9LIjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBtQ29uc3VtZXItPnJlY2VpdmVEaXNwYXRjaFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIHJlY2VpdmVEaXNwYXRjaFNpZ25hbCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIElucHV0RXZlbnQqIGV2ZW50OworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+Y29uc3VtZSgmIG1FdmVudEZhY3RvcnksICYgZXZlbnQpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIGNvbnN1bWUgc2hvdWxkIHJldHVybiBPSyI7CisKKyAgICBBU1NFUlRfVFJVRShldmVudCAhPSBOVUxMKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIHNob3VsZCBoYXZlIHJldHVybmVkIG5vbi1OVUxMIGV2ZW50IjsKKyAgICBBU1NFUlRfRVEoSU5QVVRfRVZFTlRfVFlQRV9NT1RJT04sIGV2ZW50LT5nZXRUeXBlKCkpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBtb3Rpb24gZXZlbnQiOworCisgICAgc2l6ZV90IGxhc3RTYW1wbGVJbmRleCA9IHNhbXBsZXNUb0FwcGVuZEJlZm9yZURpc3BhdGNoICsgc2FtcGxlc1RvQXBwZW5kQWZ0ZXJEaXNwYXRjaDsKKworICAgIE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCA9IHN0YXRpY19jYXN0PE1vdGlvbkV2ZW50Kj4oZXZlbnQpOworICAgIEVYUEVDVF9FUShkZXZpY2VJZCwgbW90aW9uRXZlbnQtPmdldERldmljZUlkKCkpOworICAgIEVYUEVDVF9FUShuYXR1cmUsIG1vdGlvbkV2ZW50LT5nZXROYXR1cmUoKSk7CisgICAgRVhQRUNUX0VRKGFjdGlvbiwgbW90aW9uRXZlbnQtPmdldEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoZWRnZUZsYWdzLCBtb3Rpb25FdmVudC0+Z2V0RWRnZUZsYWdzKCkpOworICAgIEVYUEVDVF9FUShtZXRhU3RhdGUsIG1vdGlvbkV2ZW50LT5nZXRNZXRhU3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKHhQcmVjaXNpb24sIG1vdGlvbkV2ZW50LT5nZXRYUHJlY2lzaW9uKCkpOworICAgIEVYUEVDVF9FUSh5UHJlY2lzaW9uLCBtb3Rpb25FdmVudC0+Z2V0WVByZWNpc2lvbigpKTsKKyAgICBFWFBFQ1RfRVEoZG93blRpbWUsIG1vdGlvbkV2ZW50LT5nZXREb3duVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoc2FtcGxlRXZlbnRUaW1lc1tsYXN0U2FtcGxlSW5kZXhdLCBtb3Rpb25FdmVudC0+Z2V0RXZlbnRUaW1lKCkpOworICAgIEVYUEVDVF9FUShwb2ludGVyQ291bnQsIG1vdGlvbkV2ZW50LT5nZXRQb2ludGVyQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKGxhc3RTYW1wbGVJbmRleCwgbW90aW9uRXZlbnQtPmdldEhpc3RvcnlTaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb2ludGVyQ291bnQ7IGkrKykgeworICAgICAgICBTQ09QRURfVFJBQ0UoaSk7CisgICAgICAgIEVYUEVDVF9FUShwb2ludGVySWRzW2ldLCBtb3Rpb25FdmVudC0+Z2V0UG9pbnRlcklkKGkpKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBzYW1wbGVJbmRleCA9IDA7IHNhbXBsZUluZGV4IDwgbGFzdFNhbXBsZUluZGV4OyBzYW1wbGVJbmRleCsrKSB7CisgICAgICAgIFNDT1BFRF9UUkFDRShzYW1wbGVJbmRleCk7CisgICAgICAgIEVYUEVDVF9FUShzYW1wbGVFdmVudFRpbWVzW3NhbXBsZUluZGV4XSwKKyAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0SGlzdG9yaWNhbEV2ZW50VGltZShzYW1wbGVJbmRleCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBTQ09QRURfVFJBQ0UoaSk7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc2FtcGxlSW5kZXggKiBwb2ludGVyQ291bnQgKyBpOworICAgICAgICAgICAgRVhQRUNUX0VRKHNhbXBsZVBvaW50ZXJDb29yZHNbb2Zmc2V0XS54LAorICAgICAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0SGlzdG9yaWNhbFJhd1goaSwgc2FtcGxlSW5kZXgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShzYW1wbGVQb2ludGVyQ29vcmRzW29mZnNldF0ueSwKKyAgICAgICAgICAgICAgICAgICAgbW90aW9uRXZlbnQtPmdldEhpc3RvcmljYWxSYXdZKGksIHNhbXBsZUluZGV4KSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLnggKyB4T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0SGlzdG9yaWNhbFgoaSwgc2FtcGxlSW5kZXgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShzYW1wbGVQb2ludGVyQ29vcmRzW29mZnNldF0ueSArIHlPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5nZXRIaXN0b3JpY2FsWShpLCBzYW1wbGVJbmRleCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKHNhbXBsZVBvaW50ZXJDb29yZHNbb2Zmc2V0XS5wcmVzc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgbW90aW9uRXZlbnQtPmdldEhpc3RvcmljYWxQcmVzc3VyZShpLCBzYW1wbGVJbmRleCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKHNhbXBsZVBvaW50ZXJDb29yZHNbb2Zmc2V0XS5zaXplLAorICAgICAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0SGlzdG9yaWNhbFNpemUoaSwgc2FtcGxlSW5kZXgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFNDT1BFRF9UUkFDRShsYXN0U2FtcGxlSW5kZXgpOworICAgIEVYUEVDVF9FUShzYW1wbGVFdmVudFRpbWVzW2xhc3RTYW1wbGVJbmRleF0sIG1vdGlvbkV2ZW50LT5nZXRFdmVudFRpbWUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb2ludGVyQ291bnQ7IGkrKykgeworICAgICAgICBTQ09QRURfVFJBQ0UoaSk7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBsYXN0U2FtcGxlSW5kZXggKiBwb2ludGVyQ291bnQgKyBpOworICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLngsIG1vdGlvbkV2ZW50LT5nZXRSYXdYKGkpKTsKKyAgICAgICAgRVhQRUNUX0VRKHNhbXBsZVBvaW50ZXJDb29yZHNbb2Zmc2V0XS55LCBtb3Rpb25FdmVudC0+Z2V0UmF3WShpKSk7CisgICAgICAgIEVYUEVDVF9FUShzYW1wbGVQb2ludGVyQ29vcmRzW29mZnNldF0ueCArIHhPZmZzZXQsIG1vdGlvbkV2ZW50LT5nZXRYKGkpKTsKKyAgICAgICAgRVhQRUNUX0VRKHNhbXBsZVBvaW50ZXJDb29yZHNbb2Zmc2V0XS55ICsgeU9mZnNldCwgbW90aW9uRXZlbnQtPmdldFkoaSkpOworICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLnByZXNzdXJlLCBtb3Rpb25FdmVudC0+Z2V0UHJlc3N1cmUoaSkpOworICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLnNpemUsIG1vdGlvbkV2ZW50LT5nZXRTaXplKGkpKTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBtQ29uc3VtZXItPnNlbmRGaW5pc2hlZFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIHNlbmRGaW5pc2hlZFNpZ25hbCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnJlY2VpdmVGaW5pc2hlZFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciByZWNlaXZlRmluaXNoZWRTaWduYWwgc2hvdWxkIHJldHVybiBPSyI7CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5yZXNldCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciByZXNldCBzaG91bGQgcmV0dXJuIE9LIjsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBQdWJsaXNoS2V5RXZlbnRfRW5kVG9FbmQpIHsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFB1Ymxpc2hBbmRDb25zdW1lS2V5RXZlbnQoKSk7Cit9CisKK1RFU1RfRihJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdCwgUHVibGlzaEtleUV2ZW50X1doZW5Ob3RSZXNldF9SZXR1cm5zRXJyb3IpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hLZXlFdmVudCgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgcHVibGlzaEtleUV2ZW50IHNob3VsZCByZXR1cm4gT0sgZmlyc3QgdGltZSI7CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5wdWJsaXNoS2V5RXZlbnQoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgQVNTRVJUX0VRKElOVkFMSURfT1BFUkFUSU9OLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHB1Ymxpc2hLZXlFdmVudCBzaG91bGQgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OIGJlY2F1c2UgIgorICAgICAgICAgICAgICAgICAgICAidGhlIHB1Ymxpc2hlciB3YXMgbm90IHJlc2V0IjsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBQdWJsaXNoTW90aW9uRXZlbnRfRW5kVG9FbmQpIHsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFB1Ymxpc2hBbmRDb25zdW1lTW90aW9uRXZlbnQoKSk7Cit9CisKK1RFU1RfRihJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdCwgUHVibGlzaE1vdGlvbkV2ZW50X1doZW5Ob3RSZXNldF9SZXR1cm5zRXJyb3IpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKworICAgIGNvbnN0IHNpemVfdCBwb2ludGVyQ291bnQgPSAxOworICAgIGludDMyX3QgcG9pbnRlcklkc1twb2ludGVyQ291bnRdID0geyAwIH07CisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF0gPSB7IHsgMCwgMCwgMCwgMCB9IH07CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5wdWJsaXNoTW90aW9uRXZlbnQoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgIHBvaW50ZXJDb3VudCwgcG9pbnRlcklkcywgcG9pbnRlckNvb3Jkcyk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHB1Ymxpc2hNb3Rpb25FdmVudCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hNb3Rpb25FdmVudCgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgcG9pbnRlckNvdW50LCBwb2ludGVySWRzLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoSU5WQUxJRF9PUEVSQVRJT04sIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgcHVibGlzaE1vdGlvbkV2ZW50IHNob3VsZCByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04gYmVjYXVzZSAiOworICAgICAgICAgICAgICAgICAgICAidGhlIHB1Ymxpc2hlciB3YXMgbm90IHJlc2V0IjsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBQdWJsaXNoTW90aW9uRXZlbnRfV2hlblBvaW50ZXJDb3VudExlc3NUaGFuMV9SZXR1cm5zRXJyb3IpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKworICAgIGNvbnN0IHNpemVfdCBwb2ludGVyQ291bnQgPSAwOworICAgIGludDMyX3QgcG9pbnRlcklkc1twb2ludGVyQ291bnRdOworICAgIFBvaW50ZXJDb29yZHMgcG9pbnRlckNvb3Jkc1twb2ludGVyQ291bnRdOworCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+cHVibGlzaE1vdGlvbkV2ZW50KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICBwb2ludGVyQ291bnQsIHBvaW50ZXJJZHMsIHBvaW50ZXJDb29yZHMpOworICAgIEFTU0VSVF9FUShCQURfVkFMVUUsIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgcHVibGlzaE1vdGlvbkV2ZW50IHNob3VsZCByZXR1cm4gQkFEX1ZBTFVFIjsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBQdWJsaXNoTW90aW9uRXZlbnRfV2hlblBvaW50ZXJDb3VudEdyZWF0ZXJUaGFuTWF4X1JldHVybnNFcnJvcikgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworCisgICAgY29uc3Qgc2l6ZV90IHBvaW50ZXJDb3VudCA9IE1BWF9QT0lOVEVSUyArIDE7CisgICAgaW50MzJfdCBwb2ludGVySWRzW3BvaW50ZXJDb3VudF07CisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF07CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5wdWJsaXNoTW90aW9uRXZlbnQoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgIHBvaW50ZXJDb3VudCwgcG9pbnRlcklkcywgcG9pbnRlckNvb3Jkcyk7CisgICAgQVNTRVJUX0VRKEJBRF9WQUxVRSwgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBwdWJsaXNoTW90aW9uRXZlbnQgc2hvdWxkIHJldHVybiBCQURfVkFMVUUiOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIFB1Ymxpc2hNdWx0aXBsZUV2ZW50c19FbmRUb0VuZCkgeworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEluaXRpYWxpemUoKSk7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoUHVibGlzaEFuZENvbnN1bWVNb3Rpb25FdmVudCgpKTsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShQdWJsaXNoQW5kQ29uc3VtZUtleUV2ZW50KCkpOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFB1Ymxpc2hBbmRDb25zdW1lTW90aW9uRXZlbnQoKSk7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoUHVibGlzaEFuZENvbnN1bWVNb3Rpb25FdmVudCgpKTsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShQdWJsaXNoQW5kQ29uc3VtZUtleUV2ZW50KCkpOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIEFwcGVuZE1vdGlvblNhbXBsZV9XaGVuQ2FsbGVkQmVmb3JlRGlzcGF0Y2hTaWduYWxfQXBwZW5kc1NhbXBsZXMpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShQdWJsaXNoQW5kQ29uc3VtZU1vdGlvbkV2ZW50KDMsIDApKTsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBBcHBlbmRNb3Rpb25TYW1wbGVfV2hlbkNhbGxlZEFmdGVyRGlzcGF0Y2hTaWduYWxBbmROb3RDb25zdW1lZF9BcHBlbmRzU2FtcGxlcykgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFB1Ymxpc2hBbmRDb25zdW1lTW90aW9uRXZlbnQoMCwgNCkpOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIEFwcGVuZE1vdGlvblNhbXBsZV9XaGVuTm9Nb3Rpb25FdmVudFB1Ymxpc2hlZF9SZXR1cm5zRXJyb3IpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKworICAgIFBvaW50ZXJDb29yZHMgcG9pbnRlckNvb3Jkc1sxXTsKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5hcHBlbmRNb3Rpb25TYW1wbGUoMCwgcG9pbnRlckNvb3Jkcyk7CisgICAgQVNTRVJUX0VRKElOVkFMSURfT1BFUkFUSU9OLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIGFwcGVuZE1vdGlvblNhbXBsZSBzaG91bGQgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OIjsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBBcHBlbmRNb3Rpb25TYW1wbGVfV2hlblB1Ymxpc2hlZE1vdGlvbkV2ZW50SXNOb3RBTW92ZV9SZXR1cm5zRXJyb3IpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKworICAgIGNvbnN0IHNpemVfdCBwb2ludGVyQ291bnQgPSBNQVhfUE9JTlRFUlM7CisgICAgaW50MzJfdCBwb2ludGVySWRzW3BvaW50ZXJDb3VudF07CisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF07CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5wdWJsaXNoTW90aW9uRXZlbnQoMCwgMCwgTU9USU9OX0VWRU5UX0FDVElPTl9ET1dOLAorICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgcG9pbnRlckNvdW50LCBwb2ludGVySWRzLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cyk7CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5hcHBlbmRNb3Rpb25TYW1wbGUoMCwgcG9pbnRlckNvb3Jkcyk7CisgICAgQVNTRVJUX0VRKElOVkFMSURfT1BFUkFUSU9OLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIGFwcGVuZE1vdGlvblNhbXBsZSBzaG91bGQgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OIjsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBBcHBlbmRNb3Rpb25TYW1wbGVfV2hlbkFscmVhZHlDb25zdW1lZF9SZXR1cm5zRXJyb3IpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKworICAgIGNvbnN0IHNpemVfdCBwb2ludGVyQ291bnQgPSBNQVhfUE9JTlRFUlM7CisgICAgaW50MzJfdCBwb2ludGVySWRzW3BvaW50ZXJDb3VudF07CisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF07CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5wdWJsaXNoTW90aW9uRXZlbnQoMCwgMCwgTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFLAorICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgcG9pbnRlckNvdW50LCBwb2ludGVySWRzLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cyk7CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5zZW5kRGlzcGF0Y2hTaWduYWwoKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cyk7CisKKyAgICBzdGF0dXMgPSBtQ29uc3VtZXItPnJlY2VpdmVEaXNwYXRjaFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKTsKKworICAgIElucHV0RXZlbnQqIGV2ZW50OworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+Y29uc3VtZSgmIG1FdmVudEZhY3RvcnksICYgZXZlbnQpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPmFwcGVuZE1vdGlvblNhbXBsZSgwLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoc3RhdHVzX3QoRkFJTEVEX1RSQU5TQUNUSU9OKSwgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBhcHBlbmRNb3Rpb25TYW1wbGUgc2hvdWxkIHJldHVybiBGQUlMRURfVFJBTlNBQ1RJT04iOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIEFwcGVuZE1vdGlvblNhbXBsZV9XaGVuQnVmZmVyRnVsbF9SZXR1cm5zRXJyb3IpIHsKKyAgICBzdGF0dXNfdCBzdGF0dXM7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKworICAgIGNvbnN0IHNpemVfdCBwb2ludGVyQ291bnQgPSBNQVhfUE9JTlRFUlM7CisgICAgaW50MzJfdCBwb2ludGVySWRzW3BvaW50ZXJDb3VudF07CisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF07CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5wdWJsaXNoTW90aW9uRXZlbnQoMCwgMCwgTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFLAorICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgcG9pbnRlckNvdW50LCBwb2ludGVySWRzLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cyk7CisKKyAgICBmb3IgKGludCBjb3VudCA9IDE7OyBjb3VudCsrKSB7CisgICAgICAgIEFTU0VSVF9MVChjb3VudCwgMTAwMDAwKSA8PCAic2hvdWxkIGV2ZW50dWFsbHkgcmVhY2ggT09NIjsKKworICAgICAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5hcHBlbmRNb3Rpb25TYW1wbGUoMCwgcG9pbnRlckNvb3Jkcyk7CisgICAgICAgIGlmIChzdGF0dXMgIT0gT0spIHsKKyAgICAgICAgICAgIEFTU0VSVF9HVChjb3VudCwgMTIpIDw8ICJzaG91bGQgYmUgYWJsZSB0byBhZGQgYXQgbGVhc3QgYSBkb3plbiBzYW1wbGVzIjsKKyAgICAgICAgICAgIEFTU0VSVF9FUShOT19NRU1PUlksIHN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBhcHBlbmRNb3Rpb25TYW1wbGUgc2hvdWxkIHJldHVybiBOT19NRU1PUlkgd2hlbiBidWZmZXIgaXMgZnVsbCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPmFwcGVuZE1vdGlvblNhbXBsZSgwLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoTk9fTUVNT1JZLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIGFwcGVuZE1vdGlvblNhbXBsZSBzaG91bGQgcmV0dXJuIE5PX01FTU9SWSBwZXJzaXN0ZW50bHkgdW50aWwgcmVzZXQiOworfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3VpL3Rlc3RzL3JlZ2lvbi9BbmRyb2lkLm1rIGIvbGlicy91aS90ZXN0cy9yZWdpb24vQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2M0YTVhCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy91aS90ZXN0cy9yZWdpb24vQW5kcm9pZC5tawpAQCAtMCwwICsxLDE2IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSBcCisJcmVnaW9uLmNwcAorCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKKwlsaWJjdXRpbHMgXAorCWxpYnV0aWxzIFwKKyAgICBsaWJ1aQorCitMT0NBTF9NT0RVTEU6PSB0ZXN0LXJlZ2lvbgorCitMT0NBTF9NT0RVTEVfVEFHUyA6PSB0ZXN0cworCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKZGlmZiAtLWdpdCBhL2xpYnMvdWkvdGVzdHMvcmVnaW9uLmNwcCBiL2xpYnMvdWkvdGVzdHMvcmVnaW9uL3JlZ2lvbi5jcHAKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGxpYnMvdWkvdGVzdHMvcmVnaW9uLmNwcApyZW5hbWUgdG8gbGlicy91aS90ZXN0cy9yZWdpb24vcmVnaW9uLmNwcApkaWZmIC0tZ2l0IGEvbGlicy91dGlscy9BbmRyb2lkLm1rIGIvbGlicy91dGlscy9BbmRyb2lkLm1rCmluZGV4IGFmZWNkY2IuLjdkNDUyNGEgMTAwNjQ0Ci0tLSBhL2xpYnMvdXRpbHMvQW5kcm9pZC5taworKysgYi9saWJzL3V0aWxzL0FuZHJvaWQubWsKQEAgLTI2LDYgKzI2LDcgQEAKIAlEZWJ1Zy5jcHAgXAogCUZpbGVNYXAuY3BwIFwKIAlGbGF0dGVuYWJsZS5jcHAgXAorCVBvb2wuY3BwIFwKIAlSZWZCYXNlLmNwcCBcCiAJUmVzb3VyY2VUeXBlcy5jcHAgXAogCVNoYXJlZEJ1ZmZlci5jcHAgXApAQCAtMzksNyArNDAsNyBAQAogCVRocmVhZHMuY3BwIFwKIAlUaW1lcnMuY3BwIFwKIAlWZWN0b3JJbXBsLmNwcCBcCi0gICAgWmlwRmlsZUNSTy5jcHAgXAorCVppcEZpbGVDUk8uY3BwIFwKIAlaaXBGaWxlUk8uY3BwIFwKIAlaaXBVdGlscy5jcHAgXAogCW1pc2MuY3BwCkBAIC03Niw4ICs3Nyw5IEBACiAjIHdlIGhhdmUgdGhlIGNvbW1vbiBzb3VyY2VzLCBwbHVzIHNvbWUgZGV2aWNlLXNwZWNpZmljIHN0dWZmCiBMT0NBTF9TUkNfRklMRVM6PSBcCiAJJChjb21tb25Tb3VyY2VzKSBcCi0gICAgQmFja3VwRGF0YS5jcHAgXAotCUJhY2t1cEhlbHBlcnMuY3BwCisJQmFja3VwRGF0YS5jcHAgXAorCUJhY2t1cEhlbHBlcnMuY3BwIFwKKwlQb2xsTG9vcC5jcHAKIAogaWZlcSAoJChUQVJHRVRfT1MpLGxpbnV4KQogTE9DQUxfTERMSUJTICs9IC1scnQgLWxkbApkaWZmIC0tZ2l0IGEvbGlicy91dGlscy9Bc3NldE1hbmFnZXIuY3BwIGIvbGlicy91dGlscy9Bc3NldE1hbmFnZXIuY3BwCmluZGV4IDVhMDVlNmEuLjYwYTBkODIgMTAwNjQ0Ci0tLSBhL2xpYnMvdXRpbHMvQXNzZXRNYW5hZ2VyLmNwcAorKysgYi9saWJzL3V0aWxzL0Fzc2V0TWFuYWdlci5jcHAKQEAgLTgyNCw3ICs4MjQsNyBAQAogCiAgICAgLy8gVE9ETzogbG9vayBmb3IgcHJldmlvdXNseS1jcmVhdGVkIHNoYXJlZCBtZW1vcnkgc2xpY2U/CiAgICAgaW50IG1ldGhvZDsKLSAgICBsb25nIHVuY29tcHJlc3NlZExlbjsKKyAgICBzaXplX3QgdW5jb21wcmVzc2VkTGVuOwogCiAgICAgLy9wcmludGYoIlVTSU5HIFppcCAnJXMnXG4iLCBwRW50cnktPmdldEZpbGVOYW1lKCkpOwogCmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL1BvbGxMb29wLmNwcCBiL2xpYnMvdXRpbHMvUG9sbExvb3AuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZmUxNDEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3V0aWxzL1BvbGxMb29wLmNwcApAQCAtMCwwICsxLDMzNyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisvLyBBIHNlbGVjdCBsb29wIGltcGxlbWVudGF0aW9uLgorLy8KKyNkZWZpbmUgTE9HX1RBRyAiUG9sbExvb3AiCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKworLy8gRGVidWdzIHBvbGwgYW5kIHdha2UgaW50ZXJhY3Rpb25zLgorI2RlZmluZSBERUJVR19QT0xMX0FORF9XQUtFIDAKKworLy8gRGVidWdzIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBhbmQgaW52b2NhdGlvbi4KKyNkZWZpbmUgREVCVUdfQ0FMTEJBQ0tTIDAKKworI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDx1dGlscy9Qb2xsTG9vcC5oPgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdGF0aWMgcHRocmVhZF9tdXRleF90IGdUTFNNdXRleCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CitzdGF0aWMgYm9vbCBnSGF2ZVRMUyA9IGZhbHNlOworc3RhdGljIHB0aHJlYWRfa2V5X3QgZ1RMUyA9IDA7CisKK1BvbGxMb29wOjpQb2xsTG9vcCgpIDoKKyAgICAgICAgbVBvbGxpbmcoZmFsc2UpLCBtV2FpdGVycygwKSB7CisgICAgb3Blbldha2VQaXBlKCk7Cit9CisKK1BvbGxMb29wOjp+UG9sbExvb3AoKSB7CisgICAgY2xvc2VXYWtlUGlwZSgpOworfQorCit2b2lkIFBvbGxMb29wOjp0aHJlYWREZXN0cnVjdG9yKHZvaWQgKnN0KSB7CisgICAgUG9sbExvb3AqIGNvbnN0IHNlbGYgPSBzdGF0aWNfY2FzdDxQb2xsTG9vcCo+KHN0KTsKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmRlY1N0cm9uZygodm9pZCopdGhyZWFkRGVzdHJ1Y3Rvcik7CisgICAgfQorfQorCit2b2lkIFBvbGxMb29wOjpzZXRGb3JUaHJlYWQoY29uc3Qgc3A8UG9sbExvb3A+JiBwb2xsTG9vcCkgeworICAgIHNwPFBvbGxMb29wPiBvbGQgPSBnZXRGb3JUaHJlYWQoKTsKKyAgICAKKyAgICBpZiAocG9sbExvb3AgIT0gTlVMTCkgeworICAgICAgICBwb2xsTG9vcC0+aW5jU3Ryb25nKCh2b2lkKil0aHJlYWREZXN0cnVjdG9yKTsKKyAgICB9CisgICAgCisgICAgcHRocmVhZF9zZXRzcGVjaWZpYyhnVExTLCBwb2xsTG9vcC5nZXQoKSk7CisgICAgCisgICAgaWYgKG9sZCAhPSBOVUxMKSB7CisgICAgICAgIG9sZC0+ZGVjU3Ryb25nKCh2b2lkKil0aHJlYWREZXN0cnVjdG9yKTsKKyAgICB9Cit9CisgICAgCitzcDxQb2xsTG9vcD4gUG9sbExvb3A6OmdldEZvclRocmVhZCgpIHsKKyAgICBpZiAoIWdIYXZlVExTKSB7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ1RMU011dGV4KTsKKyAgICAgICAgaWYgKHB0aHJlYWRfa2V5X2NyZWF0ZSgmZ1RMUywgdGhyZWFkRGVzdHJ1Y3RvcikgIT0gMCkgeworICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdUTFNNdXRleCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBnSGF2ZVRMUyA9IHRydWU7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnVExTTXV0ZXgpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gKFBvbGxMb29wKilwdGhyZWFkX2dldHNwZWNpZmljKGdUTFMpOworfQorCit2b2lkIFBvbGxMb29wOjpvcGVuV2FrZVBpcGUoKSB7CisgICAgaW50IHdha2VGZHNbMl07CisgICAgaW50IHJlc3VsdCA9IHBpcGUod2FrZUZkcyk7CisgICAgTE9HX0FMV0FZU19GQVRBTF9JRihyZXN1bHQgIT0gMCwgIkNvdWxkIG5vdCBjcmVhdGUgd2FrZSBwaXBlLiAgZXJybm89JWQiLCBlcnJubyk7CisKKyAgICBtV2FrZVJlYWRQaXBlRmQgPSB3YWtlRmRzWzBdOworICAgIG1XYWtlV3JpdGVQaXBlRmQgPSB3YWtlRmRzWzFdOworCisgICAgcmVzdWx0ID0gZmNudGwobVdha2VSZWFkUGlwZUZkLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKKyAgICBMT0dfQUxXQVlTX0ZBVEFMX0lGKHJlc3VsdCAhPSAwLCAiQ291bGQgbm90IG1ha2Ugd2FrZSByZWFkIHBpcGUgbm9uLWJsb2NraW5nLiAgZXJybm89JWQiLAorICAgICAgICAgICAgZXJybm8pOworCisgICAgcmVzdWx0ID0gZmNudGwobVdha2VXcml0ZVBpcGVGZCwgRl9TRVRGTCwgT19OT05CTE9DSyk7CisgICAgTE9HX0FMV0FZU19GQVRBTF9JRihyZXN1bHQgIT0gMCwgIkNvdWxkIG5vdCBtYWtlIHdha2Ugd3JpdGUgcGlwZSBub24tYmxvY2tpbmcuICBlcnJubz0lZCIsCisgICAgICAgICAgICBlcnJubyk7CisKKyAgICAvLyBBZGQgdGhlIHdha2UgcGlwZSB0byB0aGUgaGVhZCBvZiB0aGUgcmVxdWVzdCBsaXN0IHdpdGggYSBudWxsIGNhbGxiYWNrLgorICAgIHN0cnVjdCBwb2xsZmQgcmVxdWVzdGVkRmQ7CisgICAgcmVxdWVzdGVkRmQuZmQgPSBtV2FrZVJlYWRQaXBlRmQ7CisgICAgcmVxdWVzdGVkRmQuZXZlbnRzID0gUE9MTElOOworICAgIG1SZXF1ZXN0ZWRGZHMuaW5zZXJ0QXQocmVxdWVzdGVkRmQsIDApOworCisgICAgUmVxdWVzdGVkQ2FsbGJhY2sgcmVxdWVzdGVkQ2FsbGJhY2s7CisgICAgcmVxdWVzdGVkQ2FsbGJhY2suY2FsbGJhY2sgPSBOVUxMOworICAgIHJlcXVlc3RlZENhbGxiYWNrLmxvb3BlckNhbGxiYWNrID0gTlVMTDsKKyAgICByZXF1ZXN0ZWRDYWxsYmFjay5kYXRhID0gTlVMTDsKKyAgICBtUmVxdWVzdGVkQ2FsbGJhY2tzLmluc2VydEF0KHJlcXVlc3RlZENhbGxiYWNrLCAwKTsKK30KKwordm9pZCBQb2xsTG9vcDo6Y2xvc2VXYWtlUGlwZSgpIHsKKyAgICBjbG9zZShtV2FrZVJlYWRQaXBlRmQpOworICAgIGNsb3NlKG1XYWtlV3JpdGVQaXBlRmQpOworCisgICAgLy8gTm90ZTogV2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgdGhlIHBvbGwgc3RydWN0dXJlIG9yIGNhbGxiYWNrIGVudHJ5IGJlY2F1c2UgdGhpcworICAgIC8vICAgICAgIG1ldGhvZCBpcyBjdXJyZW50bHkgb25seSBjYWxsZWQgYnkgdGhlIGRlc3RydWN0b3IuCit9CisKK2Jvb2wgUG9sbExvb3A6OnBvbGxPbmNlKGludCB0aW1lb3V0TWlsbGlzKSB7CisgICAgbUxvY2subG9jaygpOworICAgIHdoaWxlIChtV2FpdGVycyAhPSAwKSB7CisgICAgICAgIG1SZXN1bWUud2FpdChtTG9jayk7CisgICAgfQorICAgIG1Qb2xsaW5nID0gdHJ1ZTsKKyAgICBtTG9jay51bmxvY2soKTsKKworICAgIGJvb2wgcmVzdWx0OworICAgIHNpemVfdCByZXF1ZXN0ZWRDb3VudCA9IG1SZXF1ZXN0ZWRGZHMuc2l6ZSgpOworCisjaWYgREVCVUdfUE9MTF9BTkRfV0FLRQorICAgIExPR0QoIiVwIH4gcG9sbE9uY2UgLSB3YWl0aW5nIG9uICVkIGZkcyIsIHRoaXMsIHJlcXVlc3RlZENvdW50KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcXVlc3RlZENvdW50OyBpKyspIHsKKyAgICAgICAgTE9HRCgiICBmZCAlZCAtIGV2ZW50cyAlZCIsIG1SZXF1ZXN0ZWRGZHNbaV0uZmQsIG1SZXF1ZXN0ZWRGZHNbaV0uZXZlbnRzKTsKKyAgICB9CisjZW5kaWYKKworICAgIGludCByZXNwb25kZWRDb3VudCA9IHBvbGwobVJlcXVlc3RlZEZkcy5lZGl0QXJyYXkoKSwgcmVxdWVzdGVkQ291bnQsIHRpbWVvdXRNaWxsaXMpOworCisgICAgaWYgKHJlc3BvbmRlZENvdW50ID09IDApIHsKKyAgICAgICAgLy8gVGltZW91dAorI2lmIERFQlVHX1BPTExfQU5EX1dBS0UKKyAgICAgICAgTE9HRCgiJXAgfiBwb2xsT25jZSAtIHRpbWVvdXQiLCB0aGlzKTsKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgZ290byBEb25lOworICAgIH0KKworICAgIGlmIChyZXNwb25kZWRDb3VudCA8IDApIHsKKyAgICAgICAgLy8gRXJyb3IKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFCisgICAgICAgIExPR0QoIiVwIH4gcG9sbE9uY2UgLSBlcnJvciwgZXJybm89JWQiLCB0aGlzLCBlcnJubyk7CisjZW5kaWYKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICBMT0dXKCJQb2xsIGZhaWxlZCB3aXRoIGFuIHVuZXhwZWN0ZWQgZXJyb3IsIGVycm5vPSVkIiwgZXJybm8pOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBnb3RvIERvbmU7CisgICAgfQorCisjaWYgREVCVUdfUE9MTF9BTkRfV0FLRQorICAgIExPR0QoIiVwIH4gcG9sbE9uY2UgLSBoYW5kbGluZyByZXNwb25zZXMgZnJvbSAlZCBmZHMiLCB0aGlzLCByZXNwb25kZWRDb3VudCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXF1ZXN0ZWRDb3VudDsgaSsrKSB7CisgICAgICAgIExPR0QoIiAgZmQgJWQgLSBldmVudHMgJWQsIHJldmVudHMgJWQiLCBtUmVxdWVzdGVkRmRzW2ldLmZkLCBtUmVxdWVzdGVkRmRzW2ldLmV2ZW50cywKKyAgICAgICAgICAgICAgICBtUmVxdWVzdGVkRmRzW2ldLnJldmVudHMpOworICAgIH0KKyNlbmRpZgorCisgICAgbVBlbmRpbmdDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcXVlc3RlZENvdW50OyBpKyspIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHBvbGxmZCYgcmVxdWVzdGVkRmQgPSBtUmVxdWVzdGVkRmRzLml0ZW1BdChpKTsKKworICAgICAgICBzaG9ydCByZXZlbnRzID0gcmVxdWVzdGVkRmQucmV2ZW50czsKKyAgICAgICAgaWYgKHJldmVudHMpIHsKKyAgICAgICAgICAgIGNvbnN0IFJlcXVlc3RlZENhbGxiYWNrJiByZXF1ZXN0ZWRDYWxsYmFjayA9IG1SZXF1ZXN0ZWRDYWxsYmFja3MuaXRlbUF0KGkpOworICAgICAgICAgICAgQ2FsbGJhY2sgY2FsbGJhY2sgPSByZXF1ZXN0ZWRDYWxsYmFjay5jYWxsYmFjazsKKyAgICAgICAgICAgIEFMb29wZXJfY2FsbGJhY2tGdW5jKiBsb29wZXJDYWxsYmFjayA9IHJlcXVlc3RlZENhbGxiYWNrLmxvb3BlckNhbGxiYWNrOworCisgICAgICAgICAgICBpZiAoY2FsbGJhY2sgfHwgbG9vcGVyQ2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICBQZW5kaW5nQ2FsbGJhY2sgcGVuZGluZ0NhbGxiYWNrOworICAgICAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFjay5mZCA9IHJlcXVlc3RlZEZkLmZkOworICAgICAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFjay5ldmVudHMgPSByZXF1ZXN0ZWRGZC5yZXZlbnRzOworICAgICAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFjay5jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFjay5sb29wZXJDYWxsYmFjayA9IGxvb3BlckNhbGxiYWNrOworICAgICAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFjay5kYXRhID0gcmVxdWVzdGVkQ2FsbGJhY2suZGF0YTsKKyAgICAgICAgICAgICAgICBtUGVuZGluZ0NhbGxiYWNrcy5wdXNoKHBlbmRpbmdDYWxsYmFjayk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0ZWRGZC5mZCA9PSBtV2FrZVJlYWRQaXBlRmQpIHsKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFCisgICAgICAgICAgICAgICAgICAgIExPR0QoIiVwIH4gcG9sbE9uY2UgLSBhd29rZW4iLCB0aGlzKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsxNl07CisgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgblJlYWQ7CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5SZWFkID0gcmVhZChtV2FrZVJlYWRQaXBlRmQsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChuUmVhZCA9PSBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFIHx8IERFQlVHX0NBTExCQUNLUworICAgICAgICAgICAgICAgICAgICBMT0dEKCIlcCB+IHBvbGxPbmNlIC0gZmQgJWQgaGFzIG5vIGNhbGxiYWNrISIsIHRoaXMsIHJlcXVlc3RlZEZkLmZkKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVzcG9uZGVkQ291bnQgLT0gMTsKKyAgICAgICAgICAgIGlmIChyZXNwb25kZWRDb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzdWx0ID0gdHJ1ZTsKKworRG9uZToKKyAgICBtTG9jay5sb2NrKCk7CisgICAgbVBvbGxpbmcgPSBmYWxzZTsKKyAgICBpZiAobVdhaXRlcnMgIT0gMCkgeworICAgICAgICBtQXdha2UuYnJvYWRjYXN0KCk7CisgICAgfQorICAgIG1Mb2NrLnVubG9jaygpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBzaXplX3QgcGVuZGluZ0NvdW50ID0gbVBlbmRpbmdDYWxsYmFja3Muc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBlbmRpbmdDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBjb25zdCBQZW5kaW5nQ2FsbGJhY2smIHBlbmRpbmdDYWxsYmFjayA9IG1QZW5kaW5nQ2FsbGJhY2tzLml0ZW1BdChpKTsKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFIHx8IERFQlVHX0NBTExCQUNLUworICAgICAgICAgICAgTE9HRCgiJXAgfiBwb2xsT25jZSAtIGludm9raW5nIGNhbGxiYWNrIGZvciBmZCAlZCIsIHRoaXMsIHBlbmRpbmdDYWxsYmFjay5mZCk7CisjZW5kaWYKKworICAgICAgICAgICAgYm9vbCBrZWVwID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FsbGJhY2suY2FsbGJhY2sgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGtlZXAgPSBwZW5kaW5nQ2FsbGJhY2suY2FsbGJhY2socGVuZGluZ0NhbGxiYWNrLmZkLCBwZW5kaW5nQ2FsbGJhY2suZXZlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0NhbGxiYWNrLmRhdGEpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBrZWVwID0gcGVuZGluZ0NhbGxiYWNrLmxvb3BlckNhbGxiYWNrKHBlbmRpbmdDYWxsYmFjay5mZCwgcGVuZGluZ0NhbGxiYWNrLmV2ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFjay5kYXRhKSAhPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEga2VlcCkgeworICAgICAgICAgICAgICAgIHJlbW92ZUNhbGxiYWNrKHBlbmRpbmdDYWxsYmFjay5mZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFCisgICAgTE9HRCgiJXAgfiBwb2xsT25jZSAtIGRvbmUiLCB0aGlzKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUG9sbExvb3A6Ondha2UoKSB7CisjaWYgREVCVUdfUE9MTF9BTkRfV0FLRQorICAgIExPR0QoIiVwIH4gd2FrZSIsIHRoaXMpOworI2VuZGlmCisKKyAgICBzc2l6ZV90IG5Xcml0ZSA9IHdyaXRlKG1XYWtlV3JpdGVQaXBlRmQsICJXIiwgMSk7CisgICAgaWYgKG5Xcml0ZSAhPSAxKSB7CisgICAgICAgIGlmIChlcnJubyAhPSBFQUdBSU4pIHsKKyAgICAgICAgICAgIExPR1coIkNvdWxkIG5vdCB3cml0ZSB3YWtlIHNpZ25hbCwgZXJybm89JWQiLCBlcnJubyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUG9sbExvb3A6OnNldENhbGxiYWNrKGludCBmZCwgaW50IGV2ZW50cywgQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEpIHsKKyAgICBzZXRDYWxsYmFja0NvbW1vbihmZCwgZXZlbnRzLCBjYWxsYmFjaywgTlVMTCwgZGF0YSk7Cit9CisKK3ZvaWQgUG9sbExvb3A6OnNldExvb3BlckNhbGxiYWNrKGludCBmZCwgaW50IGV2ZW50cywgQUxvb3Blcl9jYWxsYmFja0Z1bmMqIGNhbGxiYWNrLAorICAgICAgICB2b2lkKiBkYXRhKSB7CisgICAgc2V0Q2FsbGJhY2tDb21tb24oZmQsIGV2ZW50cywgTlVMTCwgY2FsbGJhY2ssIGRhdGEpOworfQorCit2b2lkIFBvbGxMb29wOjpzZXRDYWxsYmFja0NvbW1vbihpbnQgZmQsIGludCBldmVudHMsIENhbGxiYWNrIGNhbGxiYWNrLAorICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyogbG9vcGVyQ2FsbGJhY2ssIHZvaWQqIGRhdGEpIHsKKworI2lmIERFQlVHX0NBTExCQUNLUworICAgIExPR0QoIiVwIH4gc2V0Q2FsbGJhY2sgLSBmZD0lZCwgZXZlbnRzPSVkIiwgdGhpcywgZmQsIGV2ZW50cyk7CisjZW5kaWYKKworICAgIGlmICghIGV2ZW50cyB8fCAoISBjYWxsYmFjayAmJiAhIGxvb3BlckNhbGxiYWNrKSkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIGF0dGVtcHQgdG8gc2V0IGEgY2FsbGJhY2sgd2l0aCBubyBzZWxlY3RlZCBwb2xsIGV2ZW50cyBvciBubyBjYWxsYmFjay4iKTsKKyAgICAgICAgcmVtb3ZlQ2FsbGJhY2soZmQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2FrZUFuZExvY2soKTsKKworICAgIHN0cnVjdCBwb2xsZmQgcmVxdWVzdGVkRmQ7CisgICAgcmVxdWVzdGVkRmQuZmQgPSBmZDsKKyAgICByZXF1ZXN0ZWRGZC5ldmVudHMgPSBldmVudHM7CisKKyAgICBSZXF1ZXN0ZWRDYWxsYmFjayByZXF1ZXN0ZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0ZWRDYWxsYmFjay5jYWxsYmFjayA9IGNhbGxiYWNrOworICAgIHJlcXVlc3RlZENhbGxiYWNrLmxvb3BlckNhbGxiYWNrID0gbG9vcGVyQ2FsbGJhY2s7CisgICAgcmVxdWVzdGVkQ2FsbGJhY2suZGF0YSA9IGRhdGE7CisKKyAgICBzc2l6ZV90IGluZGV4ID0gZ2V0UmVxdWVzdEluZGV4TG9ja2VkKGZkKTsKKyAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgIG1SZXF1ZXN0ZWRGZHMucHVzaChyZXF1ZXN0ZWRGZCk7CisgICAgICAgIG1SZXF1ZXN0ZWRDYWxsYmFja3MucHVzaChyZXF1ZXN0ZWRDYWxsYmFjayk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbVJlcXVlc3RlZEZkcy5yZXBsYWNlQXQocmVxdWVzdGVkRmQsIHNpemVfdChpbmRleCkpOworICAgICAgICBtUmVxdWVzdGVkQ2FsbGJhY2tzLnJlcGxhY2VBdChyZXF1ZXN0ZWRDYWxsYmFjaywgc2l6ZV90KGluZGV4KSk7CisgICAgfQorCisgICAgbUxvY2sudW5sb2NrKCk7Cit9CisKK2Jvb2wgUG9sbExvb3A6OnJlbW92ZUNhbGxiYWNrKGludCBmZCkgeworI2lmIERFQlVHX0NBTExCQUNLUworICAgIExPR0QoIiVwIH4gcmVtb3ZlQ2FsbGJhY2sgLSBmZD0lZCIsIHRoaXMsIGZkKTsKKyNlbmRpZgorCisgICAgd2FrZUFuZExvY2soKTsKKworICAgIHNzaXplX3QgaW5kZXggPSBnZXRSZXF1ZXN0SW5kZXhMb2NrZWQoZmQpOworICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAgICAgIG1SZXF1ZXN0ZWRGZHMucmVtb3ZlQXQoc2l6ZV90KGluZGV4KSk7CisgICAgICAgIG1SZXF1ZXN0ZWRDYWxsYmFja3MucmVtb3ZlQXQoc2l6ZV90KGluZGV4KSk7CisgICAgfQorCisgICAgbUxvY2sudW5sb2NrKCk7CisgICAgcmV0dXJuIGluZGV4ID49IDA7Cit9CisKK3NzaXplX3QgUG9sbExvb3A6OmdldFJlcXVlc3RJbmRleExvY2tlZChpbnQgZmQpIHsKKyAgICBzaXplX3QgcmVxdWVzdENvdW50ID0gbVJlcXVlc3RlZEZkcy5zaXplKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcXVlc3RDb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChtUmVxdWVzdGVkRmRzLml0ZW1BdChpKS5mZCA9PSBmZCkgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKK3ZvaWQgUG9sbExvb3A6Ondha2VBbmRMb2NrKCkgeworICAgIG1Mb2NrLmxvY2soKTsKKyAgICBtV2FpdGVycyArPSAxOworICAgIHdoaWxlIChtUG9sbGluZykgeworICAgICAgICB3YWtlKCk7CisgICAgICAgIG1Bd2FrZS53YWl0KG1Mb2NrKTsKKyAgICB9CisgICAgbVdhaXRlcnMgLT0gMTsKKyAgICBpZiAobVdhaXRlcnMgPT0gMCkgeworICAgICAgICBtUmVzdW1lLnNpZ25hbCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbGlicy91dGlscy9Qb29sLmNwcCBiL2xpYnMvdXRpbHMvUG9vbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxOGNiOQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvdXRpbHMvUG9vbC5jcHAKQEAgLTAsMCArMSwzNyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisvLyBBIHNpbXBsZSBtZW1vcnkgcG9vbC4KKy8vCisjZGVmaW5lIExPR19UQUcgIlBvb2wiCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKworI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDx1dGlscy9Qb29sLmg+CisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBUT0RPIFByb3ZpZGUgYSByZWFsIGltcGxlbWVudGF0aW9uIG9mIGEgcG9vbC4gIFRoaXMgaXMganVzdCBhIHN0dWIgZm9yIGluaXRpYWwgZGV2ZWxvcG1lbnQuCisKK1Bvb2xJbXBsOjpQb29sSW1wbChzaXplX3Qgb2JqU2l6ZSkgOgorICAgIG1PYmpTaXplKG9ialNpemUpIHsKK30KKworUG9vbEltcGw6On5Qb29sSW1wbCgpIHsKK30KKwordm9pZCogUG9vbEltcGw6OmFsbG9jSW1wbCgpIHsKKyAgICB2b2lkKiBwdHIgPSBtYWxsb2MobU9ialNpemUpOworICAgIExPR19BTFdBWVNfRkFUQUxfSUYocHRyID09IE5VTEwsICJDYW5ub3QgYWxsb2NhdGUgbmV3IHBvb2wgb2JqZWN0LiIpOworICAgIHJldHVybiBwdHI7Cit9CisKK3ZvaWQgUG9vbEltcGw6OmZyZWVJbXBsKHZvaWQqIG9iaikgeworICAgIExPR19BTFdBWVNfRkFUQUxfSUYob2JqID09IE5VTEwsICJDYWxsZXIgYXR0ZW1wdGVkIHRvIGZyZWUgTlVMTCBwb29sIG9iamVjdC4iKTsKKyAgICByZXR1cm4gZnJlZShvYmopOworfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL1Jlc291cmNlVHlwZXMuY3BwIGIvbGlicy91dGlscy9SZXNvdXJjZVR5cGVzLmNwcAppbmRleCA3ZTBmODgxLi5hMTQwMWFkIDEwMDY0NAotLS0gYS9saWJzL3V0aWxzL1Jlc291cmNlVHlwZXMuY3BwCisrKyBiL2xpYnMvdXRpbHMvUmVzb3VyY2VUeXBlcy5jcHAKQEAgLTQxNzgsNiArNDE3OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBSZXNUYWJsZV9jb25maWc6OlNDUkVFTlNJWkVfTEFSR0U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiIChsYXJnZSkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBSZXNUYWJsZV9jb25maWc6OlNDUkVFTlNJWkVfWExBUkdFOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAoeGxhcmdlKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiIGxuZz0lZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPmNvbmZpZy5zY3JlZW5MYXlvdXQmUmVzVGFibGVfY29uZmlnOjpNQVNLX1NDUkVFTkxPTkcpOwpkaWZmIC0tZ2l0IGEvbGlicy91dGlscy9TdG9wV2F0Y2guY3BwIGIvbGlicy91dGlscy9TdG9wV2F0Y2guY3BwCmluZGV4IDY4YTFjNTIuLmI1ZGRhMmYgMTAwNjQ0Ci0tLSBhL2xpYnMvdXRpbHMvU3RvcFdhdGNoLmNwcAorKysgYi9saWJzL3V0aWxzL1N0b3BXYXRjaC5jcHAKQEAgLTMwLDEwICszMCw5IEBACiAKIAogU3RvcFdhdGNoOjpTdG9wV2F0Y2goY29uc3QgY2hhciAqbmFtZSwgaW50IGNsb2NrLCB1aW50MzJfdCBmbGFncykKLSAgICA6ICAgbU5hbWUobmFtZSksIG1DbG9jayhjbG9jayksIG1GbGFncyhmbGFncyksCi0gICAgICAgIG1TdGFydFRpbWUoMCksIG1OdW1MYXBzKDApCisgICAgOiAgIG1OYW1lKG5hbWUpLCBtQ2xvY2soY2xvY2spLCBtRmxhZ3MoZmxhZ3MpCiB7Ci0gICAgbVN0YXJ0VGltZSA9IHN5c3RlbVRpbWUobUNsb2NrKTsKKyAgICByZXNldCgpOwogfQogCiBTdG9wV2F0Y2g6On5TdG9wV2F0Y2goKQpAQCAtNzIsNiArNzEsMTIgQEAKICAgICByZXR1cm4gc3lzdGVtVGltZShtQ2xvY2spIC0gbVN0YXJ0VGltZTsKIH0KIAordm9pZCBTdG9wV2F0Y2g6OnJlc2V0KCkKK3sKKyAgICBtTnVtTGFwcyA9IDA7CisgICAgbVN0YXJ0VGltZSA9IHN5c3RlbVRpbWUobUNsb2NrKTsKK30KKwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvU3RyaW5nOC5jcHAgYi9saWJzL3V0aWxzL1N0cmluZzguY3BwCmluZGV4IDYzNmNkODMuLjgyNzc2ZjQgMTAwNjQ0Ci0tLSBhL2xpYnMvdXRpbHMvU3RyaW5nOC5jcHAKKysrIGIvbGlicy91dGlscy9TdHJpbmc4LmNwcApAQCAtMzAxLDggKzMwMSw5IEBACiAKIHN0YXR1c190IFN0cmluZzg6OnNldFRvKGNvbnN0IGNoYXIqIG90aGVyKQogeworICAgIGNvbnN0IGNoYXIgKm5ld1N0cmluZyA9IGFsbG9jRnJvbVVURjgob3RoZXIsIHN0cmxlbihvdGhlcikpOwogICAgIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyRnJvbURhdGEobVN0cmluZyktPnJlbGVhc2UoKTsKLSAgICBtU3RyaW5nID0gYWxsb2NGcm9tVVRGOChvdGhlciwgc3RybGVuKG90aGVyKSk7CisgICAgbVN0cmluZyA9IG5ld1N0cmluZzsKICAgICBpZiAobVN0cmluZykgcmV0dXJuIE5PX0VSUk9SOwogCiAgICAgbVN0cmluZyA9IGdldEVtcHR5U3RyaW5nKCk7CkBAIC0zMTEsOCArMzEyLDkgQEAKIAogc3RhdHVzX3QgU3RyaW5nODo6c2V0VG8oY29uc3QgY2hhciogb3RoZXIsIHNpemVfdCBsZW4pCiB7CisgICAgY29uc3QgY2hhciAqbmV3U3RyaW5nID0gYWxsb2NGcm9tVVRGOChvdGhlciwgbGVuKTsKICAgICBTaGFyZWRCdWZmZXI6OmJ1ZmZlckZyb21EYXRhKG1TdHJpbmcpLT5yZWxlYXNlKCk7Ci0gICAgbVN0cmluZyA9IGFsbG9jRnJvbVVURjgob3RoZXIsIGxlbik7CisgICAgbVN0cmluZyA9IG5ld1N0cmluZzsKICAgICBpZiAobVN0cmluZykgcmV0dXJuIE5PX0VSUk9SOwogCiAgICAgbVN0cmluZyA9IGdldEVtcHR5U3RyaW5nKCk7CkBAIC0zMjEsOCArMzIzLDkgQEAKIAogc3RhdHVzX3QgU3RyaW5nODo6c2V0VG8oY29uc3QgY2hhcjE2X3QqIG90aGVyLCBzaXplX3QgbGVuKQogeworICAgIGNvbnN0IGNoYXIgKm5ld1N0cmluZyA9IGFsbG9jRnJvbVVURjE2KG90aGVyLCBsZW4pOwogICAgIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyRnJvbURhdGEobVN0cmluZyktPnJlbGVhc2UoKTsKLSAgICBtU3RyaW5nID0gYWxsb2NGcm9tVVRGMTYob3RoZXIsIGxlbik7CisgICAgbVN0cmluZyA9IG5ld1N0cmluZzsKICAgICBpZiAobVN0cmluZykgcmV0dXJuIE5PX0VSUk9SOwogCiAgICAgbVN0cmluZyA9IGdldEVtcHR5U3RyaW5nKCk7CkBAIC0zMzEsOCArMzM0LDkgQEAKIAogc3RhdHVzX3QgU3RyaW5nODo6c2V0VG8oY29uc3QgY2hhcjMyX3QqIG90aGVyLCBzaXplX3QgbGVuKQogeworICAgIGNvbnN0IGNoYXIgKm5ld1N0cmluZyA9IGFsbG9jRnJvbVVURjMyKG90aGVyLCBsZW4pOwogICAgIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyRnJvbURhdGEobVN0cmluZyktPnJlbGVhc2UoKTsKLSAgICBtU3RyaW5nID0gYWxsb2NGcm9tVVRGMzIob3RoZXIsIGxlbik7CisgICAgbVN0cmluZyA9IG5ld1N0cmluZzsKICAgICBpZiAobVN0cmluZykgcmV0dXJuIE5PX0VSUk9SOwogCiAgICAgbVN0cmluZyA9IGdldEVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL1ZlY3RvckltcGwuY3BwIGIvbGlicy91dGlscy9WZWN0b3JJbXBsLmNwcAppbmRleCAwMzIyYWY3Li4yODljODI2IDEwMDY0NAotLS0gYS9saWJzL3V0aWxzL1ZlY3RvckltcGwuY3BwCisrKyBiL2xpYnMvdXRpbHMvVmVjdG9ySW1wbC5jcHAKQEAgLTEwOCwxMyArMTA4LDcgQEAKIAogc3NpemVfdCBWZWN0b3JJbXBsOjppbnNlcnRWZWN0b3JBdChjb25zdCBWZWN0b3JJbXBsJiB2ZWN0b3IsIHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoaW5kZXggPiBzaXplKCkpCi0gICAgICAgIHJldHVybiBCQURfSU5ERVg7Ci0gICAgdm9pZCogd2hlcmUgPSBfZ3JvdyhpbmRleCwgdmVjdG9yLnNpemUoKSk7Ci0gICAgaWYgKHdoZXJlKSB7Ci0gICAgICAgIF9kb19jb3B5KHdoZXJlLCB2ZWN0b3IuYXJyYXlJbXBsKCksIHZlY3Rvci5zaXplKCkpOwotICAgIH0KLSAgICByZXR1cm4gd2hlcmUgPyBpbmRleCA6IChzc2l6ZV90KU5PX01FTU9SWTsKKyAgICByZXR1cm4gaW5zZXJ0QXJyYXlBdCh2ZWN0b3IuYXJyYXlJbXBsKCksIGluZGV4LCB2ZWN0b3Iuc2l6ZSgpKTsKIH0KIAogc3NpemVfdCBWZWN0b3JJbXBsOjphcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9ySW1wbCYgdmVjdG9yKQpAQCAtMTIyLDYgKzExNiwyMiBAQAogICAgIHJldHVybiBpbnNlcnRWZWN0b3JBdCh2ZWN0b3IsIHNpemUoKSk7CiB9CiAKK3NzaXplX3QgVmVjdG9ySW1wbDo6aW5zZXJ0QXJyYXlBdChjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChpbmRleCA+IHNpemUoKSkKKyAgICAgICAgcmV0dXJuIEJBRF9JTkRFWDsKKyAgICB2b2lkKiB3aGVyZSA9IF9ncm93KGluZGV4LCBsZW5ndGgpOworICAgIGlmICh3aGVyZSkgeworICAgICAgICBfZG9fY29weSh3aGVyZSwgYXJyYXksIGxlbmd0aCk7CisgICAgfQorICAgIHJldHVybiB3aGVyZSA/IGluZGV4IDogKHNzaXplX3QpTk9fTUVNT1JZOworfQorCitzc2l6ZV90IFZlY3RvckltcGw6OmFwcGVuZEFycmF5KGNvbnN0IHZvaWQqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHJldHVybiBpbnNlcnRBcnJheUF0KGFycmF5LCBzaXplKCksIGxlbmd0aCk7Cit9CisKIHNzaXplX3QgVmVjdG9ySW1wbDo6aW5zZXJ0QXQoc2l6ZV90IGluZGV4LCBzaXplX3QgbnVtSXRlbXMpCiB7CiAgICAgcmV0dXJuIGluc2VydEF0KDAsIGluZGV4LCBudW1JdGVtcyk7CmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL1ppcEZpbGVDUk8uY3BwIGIvbGlicy91dGlscy9aaXBGaWxlQ1JPLmNwcAppbmRleCA0NWY2YzhiLi4xNmIyMTljYSAxMDA2NDQKLS0tIGEvbGlicy91dGlscy9aaXBGaWxlQ1JPLmNwcAorKysgYi9saWJzL3V0aWxzL1ppcEZpbGVDUk8uY3BwCkBAIC0zOSw4ICszOSw4IEBACiB9CiAKIGJvb2wgWmlwRmlsZUNST19nZXRFbnRyeUluZm8oWmlwRmlsZUNSTyB6aXBUb2tlbiwgWmlwRW50cnlSTyBlbnRyeVRva2VuLAotICAgICAgICBpbnQqIHBNZXRob2QsIGxvbmcqIHBVbmNvbXBMZW4sCi0gICAgICAgIGxvbmcqIHBDb21wTGVuLCBvZmZfdCogcE9mZnNldCwgbG9uZyogcE1vZFdoZW4sIGxvbmcqIHBDcmMzMikgeworICAgICAgICBpbnQqIHBNZXRob2QsIHNpemVfdCogcFVuY29tcExlbiwKKyAgICAgICAgc2l6ZV90KiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpIHsKICAgICBaaXBGaWxlUk8qIHppcCA9IChaaXBGaWxlUk8qKXppcFRva2VuOwogICAgIFppcEVudHJ5Uk8gZW50cnkgPSAoWmlwRW50cnlSTyllbnRyeVRva2VuOwogICAgIHJldHVybiB6aXAtPmdldEVudHJ5SW5mbyhlbnRyeSwgcE1ldGhvZCwgcFVuY29tcExlbiwgcENvbXBMZW4sIHBPZmZzZXQsCmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL1ppcEZpbGVSTy5jcHAgYi9saWJzL3V0aWxzL1ppcEZpbGVSTy5jcHAKaW5kZXggNmM3MDFkZC4uMjhkYzUxMiAxMDA2NDQKLS0tIGEvbGlicy91dGlscy9aaXBGaWxlUk8uY3BwCisrKyBiL2xpYnMvdXRpbHMvWmlwRmlsZVJPLmNwcApAQCAtMjksNiArMjksMjIgQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qCisgKiBURU1QX0ZBSUxVUkVfUkVUUlkgaXMgZGVmaW5lZCBieSBzb21lLCBidXQgbm90IGFsbCwgdmVyc2lvbnMgb2YKKyAqIDx1bmlzdGQuaD4uIChBbGFzLCBpdCBpcyBub3QgYXMgc3RhbmRhcmQgYXMgd2UnZCBob3BlZCEpIFNvLCBpZiBpdCdzCisgKiBub3QgYWxyZWFkeSBkZWZpbmVkLCB0aGVuIGRlZmluZSBpdCBoZXJlLgorICovCisjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQorLyogVXNlZCB0byByZXRyeSBzeXNjYWxscyB0aGF0IGNhbiByZXR1cm4gRUlOVFIuICovCisjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHApICh7ICAgICAgICAgXAorICAgIHR5cGVvZiAoZXhwKSBfcmM7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9yYyA9IChleHApOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKF9yYyA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7IFwKKyAgICBfcmM7IH0pCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIGFuZHJvaWQ7CiAKQEAgLTM4LDYgKzU0LDcgQEAKICNkZWZpbmUga0VPQ0RTaWduYXR1cmUgICAgICAweDA2MDU0YjUwCiAjZGVmaW5lIGtFT0NETGVuICAgICAgICAgICAgMjIKICNkZWZpbmUga0VPQ0ROdW1FbnRyaWVzICAgICA4ICAgICAgICAgICAgICAgLy8gb2Zmc2V0IHRvICNvZiBlbnRyaWVzIGluIGZpbGUKKyNkZWZpbmUga0VPQ0RTaXplICAgICAgICAgICAxMiAgICAgICAgICAgICAgLy8gc2l6ZSBvZiB0aGUgY2VudHJhbCBkaXJlY3RvcnkKICNkZWZpbmUga0VPQ0RGaWxlT2Zmc2V0ICAgICAxNiAgICAgICAgICAgICAgLy8gb2Zmc2V0IHRvIGNlbnRyYWwgZGlyZWN0b3J5CiAKICNkZWZpbmUga01heENvbW1lbnRMZW4gICAgICA2NTUzNSAgICAgICAgICAgLy8gbG9uZ2VzdCBwb3NzaWJsZSBpbiB1c2hvcnQKQEAgLTkwLDkgKzEwNyw4IEBACiBzdGF0dXNfdCBaaXBGaWxlUk86Om9wZW4oY29uc3QgY2hhciogemlwRmlsZU5hbWUpCiB7CiAgICAgaW50IGZkID0gLTE7Ci0gICAgb2ZmX3QgbGVuZ3RoOwogCi0gICAgYXNzZXJ0KG1GaWxlTWFwID09IE5VTEwpOworICAgIGFzc2VydChtRGlyZWN0b3J5TWFwID09IE5VTEwpOwogCiAgICAgLyoKICAgICAgKiBPcGVuIGFuZCBtYXAgdGhlIHNwZWNpZmllZCBmaWxlLgpAQCAtMTAzLDE3MiArMTE5LDI0MCBAQAogICAgICAgICByZXR1cm4gTkFNRV9OT1RfRk9VTkQ7CiAgICAgfQogCi0gICAgbGVuZ3RoID0gbHNlZWsoZmQsIDAsIFNFRUtfRU5EKTsKLSAgICBpZiAobGVuZ3RoIDwgMCkgeworICAgIG1GaWxlTGVuZ3RoID0gbHNlZWsoZmQsIDAsIFNFRUtfRU5EKTsKKyAgICBpZiAobUZpbGVMZW5ndGggPCBrRU9DRExlbikgewogICAgICAgICBjbG9zZShmZCk7CiAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgIH0KIAotICAgIG1GaWxlTWFwID0gbmV3IEZpbGVNYXAoKTsKLSAgICBpZiAobUZpbGVNYXAgPT0gTlVMTCkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHJldHVybiBOT19NRU1PUlk7CisgICAgaWYgKG1GaWxlTmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGZyZWUobUZpbGVOYW1lKTsKICAgICB9Ci0gICAgaWYgKCFtRmlsZU1hcC0+Y3JlYXRlKHppcEZpbGVOYW1lLCBmZCwgMCwgbGVuZ3RoLCB0cnVlKSkgewotICAgICAgICBMT0dXKCJVbmFibGUgdG8gbWFwICclcyc6ICVzXG4iLCB6aXBGaWxlTmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKLSAgICB9CisgICAgbUZpbGVOYW1lID0gc3RyZHVwKHppcEZpbGVOYW1lKTsKIAogICAgIG1GZCA9IGZkOwogCiAgICAgLyoKLSAgICAgKiBHb3QgaXQgbWFwcGVkLCB2ZXJpZnkgaXQgYW5kIGNyZWF0ZSBkYXRhIHN0cnVjdHVyZXMgZm9yIGZhc3QgYWNjZXNzLgorICAgICAqIEZpbmQgdGhlIENlbnRyYWwgRGlyZWN0b3J5IGFuZCBzdG9yZSBpdHMgc2l6ZSBhbmQgbnVtYmVyIG9mIGVudHJpZXMuCisgICAgICovCisgICAgaWYgKCFtYXBDZW50cmFsRGlyZWN0b3J5KCkpIHsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIC8qCisgICAgICogVmVyaWZ5IENlbnRyYWwgRGlyZWN0b3J5IGFuZCBjcmVhdGUgZGF0YSBzdHJ1Y3R1cmVzIGZvciBmYXN0IGFjY2Vzcy4KICAgICAgKi8KICAgICBpZiAoIXBhcnNlWmlwQXJjaGl2ZSgpKSB7Ci0gICAgICAgIG1GaWxlTWFwLT5yZWxlYXNlKCk7Ci0gICAgICAgIG1GaWxlTWFwID0gTlVMTDsKLSAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKICAgICByZXR1cm4gT0s7CisKK2JhaWw6CisgICAgZnJlZShtRmlsZU5hbWUpOworICAgIG1GaWxlTmFtZSA9IE5VTEw7CisgICAgY2xvc2UoZmQpOworICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogfQogCiAvKgogICogUGFyc2UgdGhlIFppcCBhcmNoaXZlLCB2ZXJpZnlpbmcgaXRzIGNvbnRlbnRzIGFuZCBpbml0aWFsaXppbmcgaW50ZXJuYWwKICAqIGRhdGEgc3RydWN0dXJlcy4KICAqLworYm9vbCBaaXBGaWxlUk86Om1hcENlbnRyYWxEaXJlY3Rvcnkodm9pZCkKK3sKKyAgICBzaXplX3QgcmVhZEFtb3VudCA9IGtNYXhFT0NEU2VhcmNoOworICAgIGlmIChyZWFkQW1vdW50ID4gKHNpemVfdCkgbUZpbGVMZW5ndGgpCisgICAgICAgIHJlYWRBbW91bnQgPSBtRmlsZUxlbmd0aDsKKworICAgIHVuc2lnbmVkIGNoYXIqIHNjYW5CdWYgPSAodW5zaWduZWQgY2hhciopIG1hbGxvYyhyZWFkQW1vdW50KTsKKyAgICBpZiAoc2NhbkJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIExPR1coImNvdWxkbid0IGFsbG9jYXRlIHNjYW5CdWY6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZnJlZShzY2FuQnVmKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qCisgICAgICogTWFrZSBzdXJlIHRoaXMgaXMgYSBaaXAgYXJjaGl2ZS4KKyAgICAgKi8KKyAgICBpZiAobHNlZWsobUZkLCAwLCBTRUVLX1NFVCkgIT0gMCkgeworICAgICAgICBMT0dXKCJzZWVrIHRvIHN0YXJ0IGZhaWxlZDogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBmcmVlKHNjYW5CdWYpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3NpemVfdCBhY3R1YWwgPSBURU1QX0ZBSUxVUkVfUkVUUlkocmVhZChtRmQsIHNjYW5CdWYsIHNpemVvZihpbnQzMl90KSkpOworICAgIGlmIChhY3R1YWwgIT0gKHNzaXplX3QpIHNpemVvZihpbnQzMl90KSkgeworICAgICAgICBMT0dJKCJjb3VsZG4ndCByZWFkIGZpcnN0IHNpZ25hdHVyZSBmcm9tIHppcCBhcmNoaXZlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBoZWFkZXIgPSBnZXQ0TEUoc2NhbkJ1Zik7CisgICAgICAgIGlmIChoZWFkZXIgPT0ga0VPQ0RTaWduYXR1cmUpIHsKKyAgICAgICAgICAgIExPR0koIkZvdW5kIFppcCBhcmNoaXZlLCBidXQgaXQgbG9va3MgZW1wdHlcbiIpOworICAgICAgICAgICAgZnJlZShzY2FuQnVmKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChoZWFkZXIgIT0ga0xGSFNpZ25hdHVyZSkgeworICAgICAgICAgICAgTE9HVigiTm90IGEgWmlwIGFyY2hpdmUgKGZvdW5kIDB4JTA4eClcbiIsIHZhbCk7CisgICAgICAgICAgICBmcmVlKHNjYW5CdWYpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBQZXJmb3JtIHRoZSB0cmFkaXRpb25hbCBFT0NEIHNuaXBlIGh1bnQuCisgICAgICoKKyAgICAgKiBXZSdyZSBzZWFyY2hpbmcgZm9yIHRoZSBFbmQgb2YgQ2VudHJhbCBEaXJlY3RvcnkgbWFnaWMgbnVtYmVyLAorICAgICAqIHdoaWNoIGFwcGVhcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBFT0NEIGJsb2NrLiAgSXQncyBmb2xsb3dlZCBieQorICAgICAqIDE4IGJ5dGVzIG9mIEVPQ0Qgc3R1ZmYgYW5kIHVwIHRvIDY0S0Igb2YgYXJjaGl2ZSBjb21tZW50LiAgV2UKKyAgICAgKiBuZWVkIHRvIHJlYWQgdGhlIGxhc3QgcGFydCBvZiB0aGUgZmlsZSBpbnRvIGEgYnVmZmVyLCBkaWcgdGhyb3VnaAorICAgICAqIGl0IHRvIGZpbmQgdGhlIG1hZ2ljIG51bWJlciwgcGFyc2Ugc29tZSB2YWx1ZXMgb3V0LCBhbmQgdXNlIHRob3NlCisgICAgICogdG8gZGV0ZXJtaW5lIHRoZSBleHRlbnQgb2YgdGhlIENELgorICAgICAqCisgICAgICogV2Ugc3RhcnQgYnkgcHVsbGluZyBpbiB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBmaWxlLgorICAgICAqLworICAgIG9mZl90IHNlYXJjaFN0YXJ0ID0gbUZpbGVMZW5ndGggLSByZWFkQW1vdW50OworCisgICAgaWYgKGxzZWVrKG1GZCwgc2VhcmNoU3RhcnQsIFNFRUtfU0VUKSAhPSBzZWFyY2hTdGFydCkgeworICAgICAgICBMT0dXKCJzZWVrICVsZCBmYWlsZWQ6ICVzXG4iLCAgKGxvbmcpIHNlYXJjaFN0YXJ0LCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBmcmVlKHNjYW5CdWYpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGFjdHVhbCA9IFRFTVBfRkFJTFVSRV9SRVRSWShyZWFkKG1GZCwgc2NhbkJ1ZiwgcmVhZEFtb3VudCkpOworICAgIGlmIChhY3R1YWwgIT0gKHNzaXplX3QpIHJlYWRBbW91bnQpIHsKKyAgICAgICAgTE9HVygiWmlwOiByZWFkICV6ZCBmYWlsZWQ6ICVzXG4iLCByZWFkQW1vdW50LCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBmcmVlKHNjYW5CdWYpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBTY2FuIGJhY2t3YXJkIGZvciB0aGUgRU9DRCBtYWdpYy4gIEluIGFuIGFyY2hpdmUgd2l0aG91dCBhIHRyYWlsaW5nCisgICAgICogY29tbWVudCwgd2UnbGwgZmluZCBpdCBvbiB0aGUgZmlyc3QgdHJ5LiAgKFdlIG1heSB3YW50IHRvIGNvbnNpZGVyCisgICAgICogZG9pbmcgYW4gaW5pdGlhbCBtaW5pbWFsIHJlYWQ7IGlmIHdlIGRvbid0IGZpbmQgaXQsIHJldHJ5IHdpdGggYQorICAgICAqIHNlY29uZCByZWFkIGFzIGFib3ZlLikKKyAgICAgKi8KKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSByZWFkQW1vdW50IC0ga0VPQ0RMZW47IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGlmIChzY2FuQnVmW2ldID09IDB4NTAgJiYgZ2V0NExFKCZzY2FuQnVmW2ldKSA9PSBrRU9DRFNpZ25hdHVyZSkgeworICAgICAgICAgICAgTE9HVigiKysrIEZvdW5kIEVPQ0QgYXQgYnVmKyVkXG4iLCBpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpIDwgMCkgeworICAgICAgICBMT0dEKCJaaXA6IEVPQ0Qgbm90IGZvdW5kLCAlcyBpcyBub3QgemlwXG4iLCBtRmlsZU5hbWUpOworICAgICAgICBmcmVlKHNjYW5CdWYpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgb2ZmX3QgZW9jZE9mZnNldCA9IHNlYXJjaFN0YXJ0ICsgaTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBlb2NkUHRyID0gc2NhbkJ1ZiArIGk7CisKKyAgICBhc3NlcnQoZW9jZE9mZnNldCA8IG1GaWxlTGVuZ3RoKTsKKworICAgIC8qCisgICAgICogR3JhYiB0aGUgQ0Qgb2Zmc2V0IGFuZCBzaXplLCBhbmQgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZQorICAgICAqIGFyY2hpdmUuICBWZXJpZnkgdGhhdCB0aGV5IGxvb2sgcmVhc29uYWJsZS4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCBpbnQgbnVtRW50cmllcyA9IGdldDJMRShlb2NkUHRyICsga0VPQ0ROdW1FbnRyaWVzKTsKKyAgICB1bnNpZ25lZCBpbnQgZGlyU2l6ZSA9IGdldDRMRShlb2NkUHRyICsga0VPQ0RTaXplKTsKKyAgICB1bnNpZ25lZCBpbnQgZGlyT2Zmc2V0ID0gZ2V0NExFKGVvY2RQdHIgKyBrRU9DREZpbGVPZmZzZXQpOworCisgICAgaWYgKChsb25nIGxvbmcpIGRpck9mZnNldCArIChsb25nIGxvbmcpIGRpclNpemUgPiAobG9uZyBsb25nKSBlb2NkT2Zmc2V0KSB7CisgICAgICAgIExPR1coImJhZCBvZmZzZXRzIChkaXIgJWxkLCBzaXplICV1LCBlb2NkICVsZClcbiIsCisgICAgICAgICAgICAobG9uZykgZGlyT2Zmc2V0LCBkaXJTaXplLCAobG9uZykgZW9jZE9mZnNldCk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG51bUVudHJpZXMgPT0gMCkgeworICAgICAgICBMT0dXKCJlbXB0eSBhcmNoaXZlP1xuIik7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBMT0dWKCIrKysgbnVtRW50cmllcz0lZCBkaXJTaXplPSVkIGRpck9mZnNldD0lZFxuIiwKKyAgICAgICAgbnVtRW50cmllcywgZGlyU2l6ZSwgZGlyT2Zmc2V0KTsKKworICAgIG1EaXJlY3RvcnlNYXAgPSBuZXcgRmlsZU1hcCgpOworICAgIGlmIChtRGlyZWN0b3J5TWFwID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiVW5hYmxlIHRvIGNyZWF0ZSBkaXJlY3RvcnkgbWFwOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1EaXJlY3RvcnlNYXAtPmNyZWF0ZShtRmlsZU5hbWUsIG1GZCwgZGlyT2Zmc2V0LCBkaXJTaXplLCB0cnVlKSkgeworICAgICAgICBMT0dXKCJVbmFibGUgdG8gbWFwICclcycgKCV6ZCB0byAlemQpOiAlc1xuIiwgbUZpbGVOYW1lLAorICAgICAgICAgICAgICAgIGRpck9mZnNldCwgZGlyT2Zmc2V0ICsgZGlyU2l6ZSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZnJlZShzY2FuQnVmKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1OdW1FbnRyaWVzID0gbnVtRW50cmllczsKKyAgICBtRGlyZWN0b3J5T2Zmc2V0ID0gZGlyT2Zmc2V0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgWmlwRmlsZVJPOjpwYXJzZVppcEFyY2hpdmUodm9pZCkKIHsKLSNkZWZpbmUgQ0hFQ0tfT0ZGU0VUKF9vZmYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICgodW5zaWduZWQgaW50KSAoX29mZikgPj0gbWF4T2Zmc2V0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTE9HRSgiRVJST1I6IGJhZCBvZmZzZXQgJXUgKG1heCAlZCk6ICVzXG4iLCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KSAoX29mZiksIG1heE9mZnNldCwgI19vZmYpOyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBnb3RvIGJhaWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciogYmFzZVB0ciA9IChjb25zdCB1bnNpZ25lZCBjaGFyKiltRmlsZU1hcC0+Z2V0RGF0YVB0cigpOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHB0cjsKLSAgICBzaXplX3QgbGVuZ3RoID0gbUZpbGVNYXAtPmdldERhdGFMZW5ndGgoKTsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGludCBpLCBudW1FbnRyaWVzLCBjZE9mZnNldDsKLSAgICB1bnNpZ25lZCBpbnQgdmFsOwotCi0gICAgLyoKLSAgICAgKiBUaGUgZmlyc3QgNCBieXRlcyBvZiB0aGUgZmlsZSB3aWxsIGVpdGhlciBiZSB0aGUgbG9jYWwgaGVhZGVyCi0gICAgICogc2lnbmF0dXJlIGZvciB0aGUgZmlyc3QgZmlsZSAoa0xGSFNpZ25hdHVyZSkgb3IsIGlmIHRoZSBhcmNoaXZlIGRvZXNuJ3QKLSAgICAgKiBoYXZlIGFueSBmaWxlcyBpbiBpdCwgdGhlIGVuZC1vZi1jZW50cmFsLWRpcmVjdG9yeSBzaWduYXR1cmUKLSAgICAgKiAoa0VPQ0RTaWduYXR1cmUpLgotICAgICAqLwotICAgIHZhbCA9IGdldDRMRShiYXNlUHRyKTsKLSAgICBpZiAodmFsID09IGtFT0NEU2lnbmF0dXJlKSB7Ci0gICAgICAgIExPR0koIkZvdW5kIFppcCBhcmNoaXZlLCBidXQgaXQgbG9va3MgZW1wdHlcbiIpOwotICAgICAgICBnb3RvIGJhaWw7Ci0gICAgfSBlbHNlIGlmICh2YWwgIT0ga0xGSFNpZ25hdHVyZSkgewotICAgICAgICBMT0dWKCJOb3QgYSBaaXAgYXJjaGl2ZSAoZm91bmQgMHglMDh4KVxuIiwgdmFsKTsKLSAgICAgICAgZ290byBiYWlsOwotICAgIH0KLQotICAgIC8qCi0gICAgICogRmluZCB0aGUgRU9DRC4gIFdlJ2xsIGZpbmQgaXQgaW1tZWRpYXRlbHkgdW5sZXNzIHRoZXkgaGF2ZSBhIGZpbGUKLSAgICAgKiBjb21tZW50LgotICAgICAqLwotICAgIHB0ciA9IGJhc2VQdHIgKyBsZW5ndGggLSBrRU9DRExlbjsKLQotICAgIHdoaWxlIChwdHIgPj0gYmFzZVB0cikgewotICAgICAgICBpZiAoKnB0ciA9PSAoa0VPQ0RTaWduYXR1cmUgJiAweGZmKSAmJiBnZXQ0TEUocHRyKSA9PSBrRU9DRFNpZ25hdHVyZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBwdHItLTsKLSAgICB9Ci0gICAgaWYgKHB0ciA8IGJhc2VQdHIpIHsKLSAgICAgICAgTE9HSSgiQ291bGQgbm90IGZpbmQgZW5kLW9mLWNlbnRyYWwtZGlyZWN0b3J5IGluIFppcFxuIik7Ci0gICAgICAgIGdvdG8gYmFpbDsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIFRoZXJlIGFyZSB0d28gaW50ZXJlc3RpbmcgaXRlbXMgaW4gdGhlIEVPQ0QgYmxvY2s6IHRoZSBudW1iZXIgb2YKLSAgICAgKiBlbnRyaWVzIGluIHRoZSBmaWxlLCBhbmQgdGhlIGZpbGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUKLSAgICAgKiBjZW50cmFsIGRpcmVjdG9yeS4KLSAgICAgKgotICAgICAqIChUaGVyZSdzIGFjdHVhbGx5IGEgY291bnQgb2YgdGhlICNvZiBlbnRyaWVzIGluIHRoaXMgZmlsZSwgYW5kIGZvcgotICAgICAqIGFsbCBmaWxlcyB3aGljaCBjb21wcmlzZSBhIHNwYW5uZWQgYXJjaGl2ZSwgYnV0IGZvciBvdXIgcHVycG9zZXMKLSAgICAgKiB3ZSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGN1cnJlbnQgZmlsZS4gIEJlc2lkZXMsIHdlIGV4cGVjdCB0aGUKLSAgICAgKiB0d28gdG8gYmUgZXF1aXZhbGVudCBmb3Igb3VyIHN0dWZmLikKLSAgICAgKi8KLSAgICBudW1FbnRyaWVzID0gZ2V0MkxFKHB0ciArIGtFT0NETnVtRW50cmllcyk7Ci0gICAgY2RPZmZzZXQgPSBnZXQ0TEUocHRyICsga0VPQ0RGaWxlT2Zmc2V0KTsKLQotICAgIC8qIHZhbGlkIG9mZnNldHMgYXJlIFswLEVPQ0RdICovCi0gICAgdW5zaWduZWQgaW50IG1heE9mZnNldDsKLSAgICBtYXhPZmZzZXQgPSAocHRyIC0gYmFzZVB0cikgKzE7Ci0KLSAgICBMT0dWKCIrKysgbnVtRW50cmllcz0lZCBjZE9mZnNldD0lZFxuIiwgbnVtRW50cmllcywgY2RPZmZzZXQpOwotICAgIGlmIChudW1FbnRyaWVzID09IDAgfHwgY2RPZmZzZXQgPj0gbGVuZ3RoKSB7Ci0gICAgICAgIExPR1coIkludmFsaWQgZW50cmllcz0lZCBvZmZzZXQ9JWQgKGxlbj0lemQpXG4iLAotICAgICAgICAgICAgbnVtRW50cmllcywgY2RPZmZzZXQsIGxlbmd0aCk7Ci0gICAgICAgIGdvdG8gYmFpbDsKLSAgICB9CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2RQdHIgPSAoY29uc3QgdW5zaWduZWQgY2hhciopIG1EaXJlY3RvcnlNYXAtPmdldERhdGFQdHIoKTsKKyAgICBzaXplX3QgY2RMZW5ndGggPSBtRGlyZWN0b3J5TWFwLT5nZXREYXRhTGVuZ3RoKCk7CisgICAgaW50IG51bUVudHJpZXMgPSBtTnVtRW50cmllczsKIAogICAgIC8qCiAgICAgICogQ3JlYXRlIGhhc2ggdGFibGUuICBXZSBoYXZlIGEgbWluaW11bSA3NSUgbG9hZCBmYWN0b3IsIHBvc3NpYmx5IGFzCiAgICAgICogbG93IGFzIDUwJSBhZnRlciB3ZSByb3VuZCBvZmYgdG8gYSBwb3dlciBvZiAyLgogICAgICAqLwotICAgIG1OdW1FbnRyaWVzID0gbnVtRW50cmllczsKLSAgICBtSGFzaFRhYmxlU2l6ZSA9IHJvdW5kVXBQb3dlcjIoMSArICgobnVtRW50cmllcyAqIDQpIC8gMykpOwotICAgIG1IYXNoVGFibGUgPSAoSGFzaEVudHJ5KikgY2FsbG9jKDEsIHNpemVvZihIYXNoRW50cnkpICogbUhhc2hUYWJsZVNpemUpOworICAgIG1IYXNoVGFibGVTaXplID0gcm91bmRVcFBvd2VyMigxICsgKG51bUVudHJpZXMgKiA0KSAvIDMpOworICAgIG1IYXNoVGFibGUgPSAoSGFzaEVudHJ5KikgY2FsbG9jKG1IYXNoVGFibGVTaXplLCBzaXplb2YoSGFzaEVudHJ5KSk7CiAKICAgICAvKgogICAgICAqIFdhbGsgdGhyb3VnaCB0aGUgY2VudHJhbCBkaXJlY3RvcnksIGFkZGluZyBlbnRyaWVzIHRvIHRoZSBoYXNoCiAgICAgICogdGFibGUuCiAgICAgICovCi0gICAgcHRyID0gYmFzZVB0ciArIGNkT2Zmc2V0OwotICAgIGZvciAoaSA9IDA7IGkgPCBudW1FbnRyaWVzOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgaW50IGZpbGVOYW1lTGVuLCBleHRyYUxlbiwgY29tbWVudExlbiwgbG9jYWxIZHJPZmZzZXQ7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGxvY2FsSGRyOwotICAgICAgICB1bnNpZ25lZCBpbnQgaGFzaDsKLQorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHB0ciA9IGNkUHRyOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtRW50cmllczsgaSsrKSB7CiAgICAgICAgIGlmIChnZXQ0TEUocHRyKSAhPSBrQ0RFU2lnbmF0dXJlKSB7CiAgICAgICAgICAgICBMT0dXKCJNaXNzZWQgYSBjZW50cmFsIGRpciBzaWcgKGF0ICVkKVxuIiwgaSk7CiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHB0ciArIGtDREVMZW4gPiBiYXNlUHRyICsgbGVuZ3RoKSB7CisgICAgICAgIGlmIChwdHIgKyBrQ0RFTGVuID4gY2RQdHIgKyBjZExlbmd0aCkgewogICAgICAgICAgICAgTE9HVygiUmFuIG9mZiB0aGUgZW5kIChhdCAlZClcbiIsIGkpOwogICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9CiAKLSAgICAgICAgbG9jYWxIZHJPZmZzZXQgPSBnZXQ0TEUocHRyICsga0NERUxvY2FsT2Zmc2V0KTsKLSAgICAgICAgQ0hFQ0tfT0ZGU0VUKGxvY2FsSGRyT2Zmc2V0KTsKKyAgICAgICAgbG9uZyBsb2NhbEhkck9mZnNldCA9IChsb25nKSBnZXQ0TEUocHRyICsga0NERUxvY2FsT2Zmc2V0KTsKKyAgICAgICAgaWYgKGxvY2FsSGRyT2Zmc2V0ID49IG1EaXJlY3RvcnlPZmZzZXQpIHsKKyAgICAgICAgICAgIExPR1coImJhZCBMRkggb2Zmc2V0ICVsZCBhdCBlbnRyeSAlZFxuIiwgbG9jYWxIZHJPZmZzZXQsIGkpOworICAgICAgICAgICAgZ290byBiYWlsOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgaW50IGZpbGVOYW1lTGVuLCBleHRyYUxlbiwgY29tbWVudExlbiwgaGFzaDsKKwogICAgICAgICBmaWxlTmFtZUxlbiA9IGdldDJMRShwdHIgKyBrQ0RFTmFtZUxlbik7CiAgICAgICAgIGV4dHJhTGVuID0gZ2V0MkxFKHB0ciArIGtDREVFeHRyYUxlbik7CiAgICAgICAgIGNvbW1lbnRMZW4gPSBnZXQyTEUocHRyICsga0NERUNvbW1lbnRMZW4pOwogCi0gICAgICAgIC8vTE9HVigiKysrICVkOiBsb2NhbEhkcj0lZCBmbmw9JWQgZWw9JWQgY2w9JWRcbiIsCi0gICAgICAgIC8vICAgIGksIGxvY2FsSGRyT2Zmc2V0LCBmaWxlTmFtZUxlbiwgZXh0cmFMZW4sIGNvbW1lbnRMZW4pOwotICAgICAgICAvL0xPR1YoIiAnJS4qcydcbiIsIGZpbGVOYW1lTGVuLCBwdHIgKyBrQ0RFTGVuKTsKLQogICAgICAgICAvKiBhZGQgdGhlIENERSBmaWxlbmFtZSB0byB0aGUgaGFzaCB0YWJsZSAqLwogICAgICAgICBoYXNoID0gY29tcHV0ZUhhc2goKGNvbnN0IGNoYXIqKXB0ciArIGtDREVMZW4sIGZpbGVOYW1lTGVuKTsKICAgICAgICAgYWRkVG9IYXNoKChjb25zdCBjaGFyKilwdHIgKyBrQ0RFTGVuLCBmaWxlTmFtZUxlbiwgaGFzaCk7CiAKLSAgICAgICAgbG9jYWxIZHIgPSBiYXNlUHRyICsgbG9jYWxIZHJPZmZzZXQ7Ci0gICAgICAgIGlmIChnZXQ0TEUobG9jYWxIZHIpICE9IGtMRkhTaWduYXR1cmUpIHsKLSAgICAgICAgICAgIExPR1coIkJhZCBvZmZzZXQgdG8gbG9jYWwgaGVhZGVyOiAlZCAoYXQgJWQpXG4iLAotICAgICAgICAgICAgICAgIGxvY2FsSGRyT2Zmc2V0LCBpKTsKKyAgICAgICAgcHRyICs9IGtDREVMZW4gKyBmaWxlTmFtZUxlbiArIGV4dHJhTGVuICsgY29tbWVudExlbjsKKyAgICAgICAgaWYgKChzaXplX3QpKHB0ciAtIGNkUHRyKSA+IGNkTGVuZ3RoKSB7CisgICAgICAgICAgICBMT0dXKCJiYWQgQ0QgYWR2YW5jZSAoJWQgdnMgJXpkKSBhdCBlbnRyeSAlZFxuIiwKKyAgICAgICAgICAgICAgICAoaW50KSAocHRyIC0gY2RQdHIpLCBjZExlbmd0aCwgaSk7CiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KLQotICAgICAgICBwdHIgKz0ga0NERUxlbiArIGZpbGVOYW1lTGVuICsgZXh0cmFMZW4gKyBjb21tZW50TGVuOwotICAgICAgICBDSEVDS19PRkZTRVQocHRyIC0gYmFzZVB0cik7CiAgICAgfQotCisgICAgTE9HVigiKysrIHppcCBnb29kIHNjYW4gJWQgZW50cmllc1xuIiwgbnVtRW50cmllcyk7CiAgICAgcmVzdWx0ID0gdHJ1ZTsKIAogYmFpbDoKICAgICByZXR1cm4gcmVzdWx0OwotI3VuZGVmIENIRUNLX09GRlNFVAogfQogCi0KIC8qCiAgKiBTaW1wbGUgc3RyaW5nIGhhc2ggZnVuY3Rpb24gZm9yIG5vbi1udWxsLXRlcm1pbmF0ZWQgc3RyaW5ncy4KICAqLwpAQCAtMzE1LDcgKzM5OSw3IEBACiAgICAgICAgICAgICBtZW1jbXAobUhhc2hUYWJsZVtlbnRdLm5hbWUsIGZpbGVOYW1lLCBuYW1lTGVuKSA9PSAwKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBtYXRjaCAqLwotICAgICAgICAgICAgcmV0dXJuIChaaXBFbnRyeVJPKSAoZW50ICsga1ppcEVudHJ5QWRqKTsKKyAgICAgICAgICAgIHJldHVybiAoWmlwRW50cnlSTykobG9uZykoZW50ICsga1ppcEVudHJ5QWRqKTsKICAgICAgICAgfQogCiAgICAgICAgIGVudCA9IChlbnQgKyAxKSAmIChtSGFzaFRhYmxlU2l6ZS0xKTsKQEAgLTM1NCwyMCArNDM4LDI0IEBACiAgKiBSZXR1cm5zICJmYWxzZSIgaWYgdGhlIG9mZnNldHMgdG8gdGhlIGZpZWxkcyBvciB0aGUgY29udGVudHMgb2YgdGhlIGZpZWxkcwogICogYXBwZWFyIHRvIGJlIGJvZ3VzLgogICovCi1ib29sIFppcEZpbGVSTzo6Z2V0RW50cnlJbmZvKFppcEVudHJ5Uk8gZW50cnksIGludCogcE1ldGhvZCwgbG9uZyogcFVuY29tcExlbiwKLSAgICBsb25nKiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpIGNvbnN0Citib29sIFppcEZpbGVSTzo6Z2V0RW50cnlJbmZvKFppcEVudHJ5Uk8gZW50cnksIGludCogcE1ldGhvZCwgc2l6ZV90KiBwVW5jb21wTGVuLAorICAgIHNpemVfdCogcENvbXBMZW4sIG9mZl90KiBwT2Zmc2V0LCBsb25nKiBwTW9kV2hlbiwgbG9uZyogcENyYzMyKSBjb25zdAogewotICAgIGludCBlbnQgPSBlbnRyeVRvSW5kZXgoZW50cnkpOworICAgIGJvb2wgcmV0ID0gZmFsc2U7CisKKyAgICBjb25zdCBpbnQgZW50ID0gZW50cnlUb0luZGV4KGVudHJ5KTsKICAgICBpZiAoZW50IDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgSGFzaEVudHJ5IGhhc2hFbnRyeSA9IG1IYXNoVGFibGVbZW50XTsKKwogICAgIC8qCiAgICAgICogUmVjb3ZlciB0aGUgc3RhcnQgb2YgdGhlIGNlbnRyYWwgZGlyZWN0b3J5IGVudHJ5IGZyb20gdGhlIGZpbGVuYW1lCi0gICAgICogcG9pbnRlci4KKyAgICAgKiBwb2ludGVyLiAgVGhlIGZpbGVuYW1lIGlzIHRoZSBmaXJzdCBlbnRyeSBwYXN0IHRoZSBmaXhlZC1zaXplIGRhdGEsCisgICAgICogc28gd2UgY2FuIGp1c3Qgc3VidHJhY3QgYmFjayBmcm9tIHRoYXQuCiAgICAgICovCi0gICAgY29uc3QgdW5zaWduZWQgY2hhciogYmFzZVB0ciA9IChjb25zdCB1bnNpZ25lZCBjaGFyKiltRmlsZU1hcC0+Z2V0RGF0YVB0cigpOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHB0ciA9IChjb25zdCB1bnNpZ25lZCBjaGFyKikgbUhhc2hUYWJsZVtlbnRdLm5hbWU7Ci0gICAgc2l6ZV90IHppcExlbmd0aCA9IG1GaWxlTWFwLT5nZXREYXRhTGVuZ3RoKCk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogcHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKSBoYXNoRW50cnkubmFtZTsKKyAgICBvZmZfdCBjZE9mZnNldCA9IG1EaXJlY3RvcnlPZmZzZXQ7CiAKICAgICBwdHIgLT0ga0NERUxlbjsKIApAQCAtMzgwLDQ4ICs0NjgsNzggQEAKICAgICBpZiAocENyYzMyICE9IE5VTEwpCiAgICAgICAgICpwQ3JjMzIgPSBnZXQ0TEUocHRyICsga0NERUNSQyk7CiAKKyAgICBzaXplX3QgY29tcExlbiA9IGdldDRMRShwdHIgKyBrQ0RFQ29tcExlbik7CisgICAgaWYgKHBDb21wTGVuICE9IE5VTEwpCisgICAgICAgICpwQ29tcExlbiA9IGNvbXBMZW47CisgICAgc2l6ZV90IHVuY29tcExlbiA9IGdldDRMRShwdHIgKyBrQ0RFVW5jb21wTGVuKTsKKyAgICBpZiAocFVuY29tcExlbiAhPSBOVUxMKQorICAgICAgICAqcFVuY29tcExlbiA9IHVuY29tcExlbjsKKwogICAgIC8qCi0gICAgICogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RocyBhcmUgbm90IHNvIGxhcmdlIHRoYXQgc29tZWJvZHkKLSAgICAgKiB0cnlpbmcgdG8gbWFwIHRoZSBjb21wcmVzc2VkIG9yIHVuY29tcHJlc3NlZCBkYXRhIHJ1bnMgb2ZmIHRoZSBlbmQKLSAgICAgKiBvZiB0aGUgbWFwcGVkIHJlZ2lvbi4KKyAgICAgKiBJZiByZXF1ZXN0ZWQsIGRldGVybWluZSB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgZGF0YS4gIEFsbCB3ZQorICAgICAqIGhhdmUgaXMgdGhlIG9mZnNldCB0byB0aGUgTG9jYWwgRmlsZSBIZWFkZXIsIHdoaWNoIGlzIHZhcmlhYmxlIHNpemUsCisgICAgICogc28gd2UgaGF2ZSB0byByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgc3RydWN0IHRvIGZpZ3VyZSBvdXQgd2hlcmUKKyAgICAgKiB0aGUgYWN0dWFsIGRhdGEgc3RhcnRzLgorICAgICAqCisgICAgICogV2UgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBsZW5ndGhzIGFyZSBub3Qgc28gbGFyZ2UgdGhhdAorICAgICAqIHNvbWVib2R5IHRyeWluZyB0byBtYXAgdGhlIGNvbXByZXNzZWQgb3IgdW5jb21wcmVzc2VkIGRhdGEgcnVucworICAgICAqIG9mZiB0aGUgZW5kIG9mIHRoZSBtYXBwZWQgcmVnaW9uLgorICAgICAqCisgICAgICogTm90ZSB3ZSBkb24ndCB2ZXJpZnkgY29tcExlbi91bmNvbXBMZW4gaWYgdGhleSBkb24ndCByZXF1ZXN0IHRoZQorICAgICAqIGRhdGFPZmZzZXQsIGJlY2F1c2UgZGF0YU9mZnNldCBpcyBleHBlbnNpdmUgdG8gZGV0ZXJtaW5lLiAgSG93ZXZlciwKKyAgICAgKiBpZiB0aGV5IGRvbid0IGhhdmUgdGhlIGZpbGUgb2Zmc2V0LCB0aGV5J3JlIG5vdCBsaWtlbHkgdG8gYmUgZG9pbmcKKyAgICAgKiBhbnl0aGluZyB3aXRoIHRoZSBjb250ZW50cy4KICAgICAgKi8KLSAgICB1bnNpZ25lZCBsb25nIGxvY2FsSGRyT2Zmc2V0ID0gZ2V0NExFKHB0ciArIGtDREVMb2NhbE9mZnNldCk7Ci0gICAgaWYgKGxvY2FsSGRyT2Zmc2V0ICsga0xGSExlbiA+PSB6aXBMZW5ndGgpIHsKLSAgICAgICAgTE9HRSgiRVJST1I6IGJhZCBsb2NhbCBoZHIgb2Zmc2V0IGluIHppcFxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciogbG9jYWxIZHIgPSBiYXNlUHRyICsgbG9jYWxIZHJPZmZzZXQ7Ci0gICAgb2ZmX3QgZGF0YU9mZnNldCA9IGxvY2FsSGRyT2Zmc2V0ICsga0xGSExlbgotICAgICAgICArIGdldDJMRShsb2NhbEhkciArIGtMRkhOYW1lTGVuKSArIGdldDJMRShsb2NhbEhkciArIGtMRkhFeHRyYUxlbik7Ci0gICAgaWYgKCh1bnNpZ25lZCBsb25nKSBkYXRhT2Zmc2V0ID49IHppcExlbmd0aCkgewotICAgICAgICBMT0dFKCJFUlJPUjogYmFkIGRhdGEgb2Zmc2V0IGluIHppcFxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAocENvbXBMZW4gIT0gTlVMTCkgewotICAgICAgICAqcENvbXBMZW4gPSBnZXQ0TEUocHRyICsga0NERUNvbXBMZW4pOwotICAgICAgICBpZiAoKnBDb21wTGVuIDwgMCB8fCAoc2l6ZV90KShkYXRhT2Zmc2V0ICsgKnBDb21wTGVuKSA+PSB6aXBMZW5ndGgpIHsKLSAgICAgICAgICAgIExPR0UoIkVSUk9SOiBiYWQgY29tcHJlc3NlZCBsZW5ndGggaW4gemlwXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAocFVuY29tcExlbiAhPSBOVUxMKSB7Ci0gICAgICAgICpwVW5jb21wTGVuID0gZ2V0NExFKHB0ciArIGtDREVVbmNvbXBMZW4pOwotICAgICAgICBpZiAoKnBVbmNvbXBMZW4gPCAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJFUlJPUjogbmVnYXRpdmUgdW5jb21wcmVzc2VkIGxlbmd0aCBpbiB6aXBcbiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtZXRob2QgPT0ga0NvbXByZXNzU3RvcmVkICYmCi0gICAgICAgICAgICAoc2l6ZV90KShkYXRhT2Zmc2V0ICsgKnBVbmNvbXBMZW4pID49IHppcExlbmd0aCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HRSgiRVJST1I6IGJhZCB1bmNvbXByZXNzZWQgbGVuZ3RoIGluIHppcFxuIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAocE9mZnNldCAhPSBOVUxMKSB7CisgICAgICAgIGxvbmcgbG9jYWxIZHJPZmZzZXQgPSBnZXQ0TEUocHRyICsga0NERUxvY2FsT2Zmc2V0KTsKKyAgICAgICAgaWYgKGxvY2FsSGRyT2Zmc2V0ICsga0xGSExlbiA+PSBjZE9mZnNldCkgeworICAgICAgICAgICAgTE9HRSgiRVJST1I6IGJhZCBsb2NhbCBoZHIgb2Zmc2V0IGluIHppcFxuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBjaGFyIGxmaEJ1ZltrTEZITGVuXTsKKyAgICAgICAgaWYgKGxzZWVrKG1GZCwgbG9jYWxIZHJPZmZzZXQsIFNFRUtfU0VUKSAhPSBsb2NhbEhkck9mZnNldCkgeworICAgICAgICAgICAgTE9HVygiZmFpbGVkIHNlZWtpbmcgdG8gbGZoIGF0IG9mZnNldCAlbGRcbiIsIGxvY2FsSGRyT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBzc2l6ZV90IGFjdHVhbCA9CisgICAgICAgICAgICBURU1QX0ZBSUxVUkVfUkVUUlkocmVhZChtRmQsIGxmaEJ1Ziwgc2l6ZW9mKGxmaEJ1ZikpKTsKKyAgICAgICAgaWYgKGFjdHVhbCAhPSBzaXplb2YobGZoQnVmKSkgeworICAgICAgICAgICAgTE9HVygiZmFpbGVkIHJlYWRpbmcgbGZoIGZyb20gb2Zmc2V0ICVsZFxuIiwgbG9jYWxIZHJPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdldDRMRShsZmhCdWYpICE9IGtMRkhTaWduYXR1cmUpIHsKKyAgICAgICAgICAgIExPR1coImRpZG4ndCBmaW5kIHNpZ25hdHVyZSBhdCBzdGFydCBvZiBsZmgsIG9mZnNldD0lbGRcbiIsCisgICAgICAgICAgICAgICAgbG9jYWxIZHJPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgb2ZmX3QgZGF0YU9mZnNldCA9IGxvY2FsSGRyT2Zmc2V0ICsga0xGSExlbgorICAgICAgICAgICAgKyBnZXQyTEUobGZoQnVmICsga0xGSE5hbWVMZW4pICsgZ2V0MkxFKGxmaEJ1ZiArIGtMRkhFeHRyYUxlbik7CisgICAgICAgIGlmIChkYXRhT2Zmc2V0ID49IGNkT2Zmc2V0KSB7CisgICAgICAgICAgICBMT0dXKCJiYWQgZGF0YSBvZmZzZXQgJWxkIGluIHppcFxuIiwgKGxvbmcpIGRhdGFPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLyogY2hlY2sgbGVuZ3RocyAqLworICAgICAgICBpZiAoKG9mZl90KShkYXRhT2Zmc2V0ICsgY29tcExlbikgPiBjZE9mZnNldCkgeworICAgICAgICAgICAgTE9HVygiYmFkIGNvbXByZXNzZWQgbGVuZ3RoIGluIHppcCAoJWxkICsgJXpkID4gJWxkKVxuIiwKKyAgICAgICAgICAgICAgICAobG9uZykgZGF0YU9mZnNldCwgY29tcExlbiwgKGxvbmcpIGNkT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtZXRob2QgPT0ga0NvbXByZXNzU3RvcmVkICYmCisgICAgICAgICAgICAob2ZmX3QpKGRhdGFPZmZzZXQgKyB1bmNvbXBMZW4pID4gY2RPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIExPR0UoIkVSUk9SOiBiYWQgdW5jb21wcmVzc2VkIGxlbmd0aCBpbiB6aXAgKCVsZCArICV6ZCA+ICVsZClcbiIsCisgICAgICAgICAgICAgICAgKGxvbmcpIGRhdGFPZmZzZXQsIHVuY29tcExlbiwgKGxvbmcpIGNkT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCiAgICAgICAgICpwT2Zmc2V0ID0gZGF0YU9mZnNldDsKICAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDU3LDE0ICs1NzUsMTQgQEAKICAgICAgKi8KIAogICAgIEZpbGVNYXAqIG5ld01hcDsKLSAgICBsb25nIGNvbXBMZW47CisgICAgc2l6ZV90IGNvbXBMZW47CiAgICAgb2ZmX3Qgb2Zmc2V0OwogCiAgICAgaWYgKCFnZXRFbnRyeUluZm8oZW50cnksIE5VTEwsIE5VTEwsICZjb21wTGVuLCAmb2Zmc2V0LCBOVUxMLCBOVUxMKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBuZXdNYXAgPSBuZXcgRmlsZU1hcCgpOwotICAgIGlmICghbmV3TWFwLT5jcmVhdGUobUZpbGVNYXAtPmdldEZpbGVOYW1lKCksIG1GZCwgb2Zmc2V0LCBjb21wTGVuLCB0cnVlKSkgeworICAgIGlmICghbmV3TWFwLT5jcmVhdGUobUZpbGVOYW1lLCBtRmQsIG9mZnNldCwgY29tcExlbiwgdHJ1ZSkpIHsKICAgICAgICAgbmV3TWFwLT5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQ4MCwxOSArNTk4LDI2IEBACiAgKi8KIGJvb2wgWmlwRmlsZVJPOjp1bmNvbXByZXNzRW50cnkoWmlwRW50cnlSTyBlbnRyeSwgdm9pZCogYnVmZmVyKSBjb25zdAogewotICAgIGNvbnN0IGludCBrU2VxdWVudGlhbE1pbiA9IDMyNzY4OworICAgIGNvbnN0IHNpemVfdCBrU2VxdWVudGlhbE1pbiA9IDMyNzY4OwogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgaW50IGVudCA9IGVudHJ5VG9JbmRleChlbnRyeSk7CiAgICAgaWYgKGVudCA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJhc2VQdHIgPSAoY29uc3QgdW5zaWduZWQgY2hhciopbUZpbGVNYXAtPmdldERhdGFQdHIoKTsKICAgICBpbnQgbWV0aG9kOwotICAgIGxvbmcgdW5jb21wTGVuLCBjb21wTGVuOworICAgIHNpemVfdCB1bmNvbXBMZW4sIGNvbXBMZW47CiAgICAgb2ZmX3Qgb2Zmc2V0OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHB0cjsKIAogICAgIGdldEVudHJ5SW5mbyhlbnRyeSwgJm1ldGhvZCwgJnVuY29tcExlbiwgJmNvbXBMZW4sICZvZmZzZXQsIE5VTEwsIE5VTEwpOwogCisgICAgRmlsZU1hcCogZmlsZSA9IGNyZWF0ZUVudHJ5RmlsZU1hcChlbnRyeSk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgcHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKSBmaWxlLT5nZXREYXRhUHRyKCk7CisKICAgICAvKgogICAgICAqIEV4cGVyaW1lbnQgd2l0aCBtYWR2aXNlIGhpbnQuICBXaGVuIHdlIHdhbnQgdG8gdW5jb21wcmVzcyBhIGZpbGUsCiAgICAgICogd2UgcHVsbCBzb21lIHN0dWZmIG91dCBvZiB0aGUgY2VudHJhbCBkaXIgZW50cnkgYW5kIHRoZW4gaGl0IGEKQEAgLTUwNywxNyArNjMyLDE3IEBACiAgICAgICogcGFpciBvZiBzeXN0ZW0gY2FsbHMgYXJlIG5lZ2F0ZWQgYnkgYSByZWR1Y3Rpb24gaW4gcGFnZSBmYXVsdHMuCiAgICAgICovCiAgICAgaWYgKGNvbXBMZW4gPiBrU2VxdWVudGlhbE1pbikKLSAgICAgICAgbUZpbGVNYXAtPmFkdmlzZShGaWxlTWFwOjpTRVFVRU5USUFMKTsKKyAgICAgICAgZmlsZS0+YWR2aXNlKEZpbGVNYXA6OlNFUVVFTlRJQUwpOwogCiAgICAgaWYgKG1ldGhvZCA9PSBrQ29tcHJlc3NTdG9yZWQpIHsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgYmFzZVB0ciArIG9mZnNldCwgdW5jb21wTGVuKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgcHRyLCB1bmNvbXBMZW4pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghaW5mbGF0ZUJ1ZmZlcihidWZmZXIsIGJhc2VQdHIgKyBvZmZzZXQsIHVuY29tcExlbiwgY29tcExlbikpCisgICAgICAgIGlmICghaW5mbGF0ZUJ1ZmZlcihidWZmZXIsIHB0ciwgdW5jb21wTGVuLCBjb21wTGVuKSkKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKICAgICBpZiAoY29tcExlbiA+IGtTZXF1ZW50aWFsTWluKQotICAgICAgICBtRmlsZU1hcC0+YWR2aXNlKEZpbGVNYXA6Ok5PUk1BTCk7CisgICAgICAgIGZpbGUtPmFkdmlzZShGaWxlTWFwOjpOT1JNQUwpOwogCiAgICAgcmVzdWx0ID0gdHJ1ZTsKIApAQCAtNTM3LDI5ICs2NjIsMzQgQEAKICAgICBpZiAoZW50IDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgdW5zaWduZWQgY2hhciogYmFzZVB0ciA9IChjb25zdCB1bnNpZ25lZCBjaGFyKiltRmlsZU1hcC0+Z2V0RGF0YVB0cigpOwogICAgIGludCBtZXRob2Q7Ci0gICAgbG9uZyB1bmNvbXBMZW4sIGNvbXBMZW47CisgICAgc2l6ZV90IHVuY29tcExlbiwgY29tcExlbjsKICAgICBvZmZfdCBvZmZzZXQ7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogcHRyOwogCiAgICAgZ2V0RW50cnlJbmZvKGVudHJ5LCAmbWV0aG9kLCAmdW5jb21wTGVuLCAmY29tcExlbiwgJm9mZnNldCwgTlVMTCwgTlVMTCk7CiAKLSAgICBpZiAobWV0aG9kID09IGtDb21wcmVzc1N0b3JlZCkgewotICAgICAgICBzc2l6ZV90IGFjdHVhbDsKKyAgICBjb25zdCBGaWxlTWFwKiBmaWxlID0gY3JlYXRlRW50cnlGaWxlTWFwKGVudHJ5KTsKKyAgICBpZiAoZmlsZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CiAKLSAgICAgICAgYWN0dWFsID0gd3JpdGUoZmQsIGJhc2VQdHIgKyBvZmZzZXQsIHVuY29tcExlbik7CisgICAgcHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKSBmaWxlLT5nZXREYXRhUHRyKCk7CisKKyAgICBpZiAobWV0aG9kID09IGtDb21wcmVzc1N0b3JlZCkgeworICAgICAgICBzc2l6ZV90IGFjdHVhbCA9IHdyaXRlKGZkLCBwdHIsIHVuY29tcExlbik7CiAgICAgICAgIGlmIChhY3R1YWwgPCAwKSB7CiAgICAgICAgICAgICBMT0dFKCJXcml0ZSBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAgICAgZ290byBiYWlsOwotICAgICAgICB9IGVsc2UgaWYgKGFjdHVhbCAhPSB1bmNvbXBMZW4pIHsKLSAgICAgICAgICAgIExPR0UoIlBhcnRpYWwgd3JpdGUgZHVyaW5nIHVuY29tcHJlc3MgKCVkIG9mICVsZClcbiIsCi0gICAgICAgICAgICAgICAgKGludClhY3R1YWwsIHVuY29tcExlbik7CisgICAgICAgIH0gZWxzZSBpZiAoKHNpemVfdCkgYWN0dWFsICE9IHVuY29tcExlbikgeworICAgICAgICAgICAgTE9HRSgiUGFydGlhbCB3cml0ZSBkdXJpbmcgdW5jb21wcmVzcyAoJXpkIG9mICV6ZClcbiIsCisgICAgICAgICAgICAgICAgYWN0dWFsLCB1bmNvbXBMZW4pOwogICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTE9HSSgiKysrIHN1Y2Nlc3NmdWwgd3JpdGVcbiIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFpbmZsYXRlQnVmZmVyKGZkLCBiYXNlUHRyK29mZnNldCwgdW5jb21wTGVuLCBjb21wTGVuKSkKKyAgICAgICAgaWYgKCFpbmZsYXRlQnVmZmVyKGZkLCBwdHIsIHVuY29tcExlbiwgY29tcExlbikpCiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC01NzMsNyArNzAzLDcgQEAKICAqIFVuY29tcHJlc3MgImRlZmxhdGUiIGRhdGEgZnJvbSBvbmUgYnVmZmVyIHRvIGFub3RoZXIuCiAgKi8KIC8qc3RhdGljKi8gYm9vbCBaaXBGaWxlUk86OmluZmxhdGVCdWZmZXIodm9pZCogb3V0QnVmLCBjb25zdCB2b2lkKiBpbkJ1ZiwKLSAgICBsb25nIHVuY29tcExlbiwgbG9uZyBjb21wTGVuKQorICAgIHNpemVfdCB1bmNvbXBMZW4sIHNpemVfdCBjb21wTGVuKQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgel9zdHJlYW0genN0cmVhbTsKQEAgLTU4Miw3ICs3MTIsNyBAQAogICAgIC8qCiAgICAgICogSW5pdGlhbGl6ZSB0aGUgemxpYiBzdHJlYW0gc3RydWN0LgogICAgICAqLwotCW1lbXNldCgmenN0cmVhbSwgMCwgc2l6ZW9mKHpzdHJlYW0pKTsKKyAgICBtZW1zZXQoJnpzdHJlYW0sIDAsIHNpemVvZih6c3RyZWFtKSk7CiAgICAgenN0cmVhbS56YWxsb2MgPSBaX05VTEw7CiAgICAgenN0cmVhbS56ZnJlZSA9IFpfTlVMTDsKICAgICB6c3RyZWFtLm9wYXF1ZSA9IFpfTlVMTDsKQEAgLTU5MiwxMCArNzIyLDEwIEBACiAgICAgenN0cmVhbS5hdmFpbF9vdXQgPSB1bmNvbXBMZW47CiAgICAgenN0cmVhbS5kYXRhX3R5cGUgPSBaX1VOS05PV047CiAKLQkvKgotCSAqIFVzZSB0aGUgdW5kb2N1bWVudGVkICJuZWdhdGl2ZSB3aW5kb3cgYml0cyIgZmVhdHVyZSB0byB0ZWxsIHpsaWIKLQkgKiB0aGF0IHRoZXJlJ3Mgbm8gemxpYiBoZWFkZXIgd2FpdGluZyBmb3IgaXQuCi0JICovCisgICAgLyoKKyAgICAgKiBVc2UgdGhlIHVuZG9jdW1lbnRlZCAibmVnYXRpdmUgd2luZG93IGJpdHMiIGZlYXR1cmUgdG8gdGVsbCB6bGliCisgICAgICogdGhhdCB0aGVyZSdzIG5vIHpsaWIgaGVhZGVyIHdhaXRpbmcgZm9yIGl0LgorICAgICAqLwogICAgIHplcnIgPSBpbmZsYXRlSW5pdDIoJnpzdHJlYW0sIC1NQVhfV0JJVFMpOwogICAgIGlmICh6ZXJyICE9IFpfT0spIHsKICAgICAgICAgaWYgKHplcnIgPT0gWl9WRVJTSU9OX0VSUk9SKSB7CkBAIC02MTksOCArNzQ5LDggQEAKICAgICB9CiAKICAgICAvKiBwYXJhbm9pYSAqLwotICAgIGlmICgobG9uZykgenN0cmVhbS50b3RhbF9vdXQgIT0gdW5jb21wTGVuKSB7Ci0gICAgICAgIExPR1coIlNpemUgbWlzbWF0Y2ggb24gaW5mbGF0ZWQgZmlsZSAoJWxkIHZzICVsZClcbiIsCisgICAgaWYgKHpzdHJlYW0udG90YWxfb3V0ICE9IHVuY29tcExlbikgeworICAgICAgICBMT0dXKCJTaXplIG1pc21hdGNoIG9uIGluZmxhdGVkIGZpbGUgKCVsZCB2cyAlemQpXG4iLAogICAgICAgICAgICAgenN0cmVhbS50b3RhbF9vdXQsIHVuY29tcExlbik7CiAgICAgICAgIGdvdG8gel9iYWlsOwogICAgIH0KQEAgLTYzOCwxMCArNzY4LDEwIEBACiAgKiBVbmNvbXByZXNzICJkZWZsYXRlIiBkYXRhIGZyb20gb25lIGJ1ZmZlciB0byBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KICAqLwogLypzdGF0aWMqLyBib29sIFppcEZpbGVSTzo6aW5mbGF0ZUJ1ZmZlcihpbnQgZmQsIGNvbnN0IHZvaWQqIGluQnVmLAotICAgIGxvbmcgdW5jb21wTGVuLCBsb25nIGNvbXBMZW4pCisgICAgc2l6ZV90IHVuY29tcExlbiwgc2l6ZV90IGNvbXBMZW4pCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBjb25zdCBpbnQga1dyaXRlQnVmU2l6ZSA9IDMyNzY4OworICAgIGNvbnN0IHNpemVfdCBrV3JpdGVCdWZTaXplID0gMzI3Njg7CiAgICAgdW5zaWduZWQgY2hhciB3cml0ZUJ1ZltrV3JpdGVCdWZTaXplXTsKICAgICB6X3N0cmVhbSB6c3RyZWFtOwogICAgIGludCB6ZXJyOwpAQCAtNjQ5LDcgKzc3OSw3IEBACiAgICAgLyoKICAgICAgKiBJbml0aWFsaXplIHRoZSB6bGliIHN0cmVhbSBzdHJ1Y3QuCiAgICAgICovCi0JbWVtc2V0KCZ6c3RyZWFtLCAwLCBzaXplb2YoenN0cmVhbSkpOworICAgIG1lbXNldCgmenN0cmVhbSwgMCwgc2l6ZW9mKHpzdHJlYW0pKTsKICAgICB6c3RyZWFtLnphbGxvYyA9IFpfTlVMTDsKICAgICB6c3RyZWFtLnpmcmVlID0gWl9OVUxMOwogICAgIHpzdHJlYW0ub3BhcXVlID0gWl9OVUxMOwpAQCAtNjU5LDEwICs3ODksMTAgQEAKICAgICB6c3RyZWFtLmF2YWlsX291dCA9IHNpemVvZih3cml0ZUJ1Zik7CiAgICAgenN0cmVhbS5kYXRhX3R5cGUgPSBaX1VOS05PV047CiAKLQkvKgotCSAqIFVzZSB0aGUgdW5kb2N1bWVudGVkICJuZWdhdGl2ZSB3aW5kb3cgYml0cyIgZmVhdHVyZSB0byB0ZWxsIHpsaWIKLQkgKiB0aGF0IHRoZXJlJ3Mgbm8gemxpYiBoZWFkZXIgd2FpdGluZyBmb3IgaXQuCi0JICovCisgICAgLyoKKyAgICAgKiBVc2UgdGhlIHVuZG9jdW1lbnRlZCAibmVnYXRpdmUgd2luZG93IGJpdHMiIGZlYXR1cmUgdG8gdGVsbCB6bGliCisgICAgICogdGhhdCB0aGVyZSdzIG5vIHpsaWIgaGVhZGVyIHdhaXRpbmcgZm9yIGl0LgorICAgICAqLwogICAgIHplcnIgPSBpbmZsYXRlSW5pdDIoJnpzdHJlYW0sIC1NQVhfV0JJVFMpOwogICAgIGlmICh6ZXJyICE9IFpfT0spIHsKICAgICAgICAgaWYgKHplcnIgPT0gWl9WRVJTSU9OX0VSUk9SKSB7CkBAIC03MDgsOCArODM4LDggQEAKICAgICBhc3NlcnQoemVyciA9PSBaX1NUUkVBTV9FTkQpOyAgICAgICAvKiBvdGhlciBlcnJvcnMgc2hvdWxkJ3ZlIGJlZW4gY2F1Z2h0ICovCiAKICAgICAvKiBwYXJhbm9pYSAqLwotICAgIGlmICgobG9uZykgenN0cmVhbS50b3RhbF9vdXQgIT0gdW5jb21wTGVuKSB7Ci0gICAgICAgIExPR1coIlNpemUgbWlzbWF0Y2ggb24gaW5mbGF0ZWQgZmlsZSAoJWxkIHZzICVsZClcbiIsCisgICAgaWYgKHpzdHJlYW0udG90YWxfb3V0ICE9IHVuY29tcExlbikgeworICAgICAgICBMT0dXKCJTaXplIG1pc21hdGNoIG9uIGluZmxhdGVkIGZpbGUgKCVsZCB2cyAlemQpXG4iLAogICAgICAgICAgICAgenN0cmVhbS50b3RhbF9vdXQsIHVuY29tcExlbik7CiAgICAgICAgIGdvdG8gel9iYWlsOwogICAgIH0KZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvdGVzdHMvQW5kcm9pZC5tayBiL2xpYnMvdXRpbHMvdGVzdHMvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmViZmQ3YwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvdXRpbHMvdGVzdHMvQW5kcm9pZC5tawpAQCAtMCwwICsxLDM4IEBACisjIEJ1aWxkIHRoZSB1bml0IHRlc3RzLgorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK3Rlc3Rfc3JjX2ZpbGVzIDo9IFwKKwlQb2xsTG9vcF90ZXN0LmNwcAorCitzaGFyZWRfbGlicmFyaWVzIDo9IFwKKwlsaWJ6IFwKKwlsaWJsb2cgXAorCWxpYmN1dGlscyBcCisJbGlidXRpbHMgXAorCWxpYnN0bHBvcnQKKworc3RhdGljX2xpYnJhcmllcyA6PSBcCisJbGliZ3Rlc3QgXAorCWxpYmd0ZXN0X21haW4KKworY19pbmNsdWRlcyA6PSBcCisgICAgZXh0ZXJuYWwvemxpYiBcCisgICAgZXh0ZXJuYWwvaWN1NGMvY29tbW9uIFwKKyAgICBiaW9uaWMgXAorICAgIGJpb25pYy9saWJzdGRjKysvaW5jbHVkZSBcCisgICAgZXh0ZXJuYWwvZ3Rlc3QvaW5jbHVkZSBcCisgICAgZXh0ZXJuYWwvc3RscG9ydC9zdGxwb3J0CisKK21vZHVsZV90YWdzIDo9IGVuZyB0ZXN0cworCiskKGZvcmVhY2ggZmlsZSwkKHRlc3Rfc3JjX2ZpbGVzKSwgXAorICAgICQoZXZhbCBpbmNsdWRlICQoQ0xFQVJfVkFSUykpIFwKKyAgICAkKGV2YWwgTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKHNoYXJlZF9saWJyYXJpZXMpKSBcCisgICAgJChldmFsIExPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gJChzdGF0aWNfbGlicmFyaWVzKSkgXAorICAgICQoZXZhbCBMT0NBTF9DX0lOQ0xVREVTIDo9ICQoY19pbmNsdWRlcykpIFwKKyAgICAkKGV2YWwgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoZmlsZSkpIFwKKyAgICAkKGV2YWwgTE9DQUxfTU9EVUxFIDo9ICQobm90ZGlyICQoZmlsZTolLmNwcD0lKSkpIFwKKyAgICAkKGV2YWwgTE9DQUxfTU9EVUxFX1RBR1MgOj0gJChtb2R1bGVfdGFncykpIFwKKyAgICAkKGV2YWwgaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpKSBcCispCmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL3Rlc3RzL1BvbGxMb29wX3Rlc3QuY3BwIGIvbGlicy91dGlscy90ZXN0cy9Qb2xsTG9vcF90ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODQ4YzBmCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy91dGlscy90ZXN0cy9Qb2xsTG9vcF90ZXN0LmNwcApAQCAtMCwwICsxLDM3MCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisKKyNpbmNsdWRlIDx1dGlscy9Qb2xsTG9vcC5oPgorI2luY2x1ZGUgPHV0aWxzL1RpbWVycy5oPgorI2luY2x1ZGUgPHV0aWxzL1N0b3BXYXRjaC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiVGVzdEhlbHBlcnMuaCIKKworLy8gIyBvZiBtaWxsaXNlY29uZHMgdG8gZnVkZ2Ugc3RvcHdhdGNoIG1lYXN1cmVtZW50cworI2RlZmluZSBUSU1JTkdfVE9MRVJBTkNFX01TIDI1CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgRGVsYXllZFdha2UgOiBwdWJsaWMgRGVsYXllZFRhc2sgeworICAgIHNwPFBvbGxMb29wPiBtUG9sbExvb3A7CisKK3B1YmxpYzoKKyAgICBEZWxheWVkV2FrZShpbnQgZGVsYXlNaWxsaXMsIGNvbnN0IHNwPFBvbGxMb29wPiBwb2xsTG9vcCkgOgorICAgICAgICBEZWxheWVkVGFzayhkZWxheU1pbGxpcyksIG1Qb2xsTG9vcChwb2xsTG9vcCkgeworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBkb1Rhc2soKSB7CisgICAgICAgIG1Qb2xsTG9vcC0+d2FrZSgpOworICAgIH0KK307CisKK2NsYXNzIERlbGF5ZWRXcml0ZVNpZ25hbCA6IHB1YmxpYyBEZWxheWVkVGFzayB7CisgICAgUGlwZSogbVBpcGU7CisKK3B1YmxpYzoKKyAgICBEZWxheWVkV3JpdGVTaWduYWwoaW50IGRlbGF5TWlsbGlzLCBQaXBlKiBwaXBlKSA6CisgICAgICAgIERlbGF5ZWRUYXNrKGRlbGF5TWlsbGlzKSwgbVBpcGUocGlwZSkgeworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBkb1Rhc2soKSB7CisgICAgICAgIG1QaXBlLT53cml0ZVNpZ25hbCgpOworICAgIH0KK307CisKK2NsYXNzIENhbGxiYWNrSGFuZGxlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRDYWxsYmFjayhjb25zdCBzcDxQb2xsTG9vcD4mIHBvbGxMb29wLCBpbnQgZmQsIGludCBldmVudHMpIHsKKyAgICAgICAgcG9sbExvb3AtPnNldENhbGxiYWNrKGZkLCBldmVudHMsIHN0YXRpY0hhbmRsZXIsIHRoaXMpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkNhbGxiYWNrSGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZXIoaW50IGZkLCBpbnQgZXZlbnRzKSA9IDA7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc3RhdGljSGFuZGxlcihpbnQgZmQsIGludCBldmVudHMsIHZvaWQqIGRhdGEpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxiYWNrSGFuZGxlcio+KGRhdGEpLT5oYW5kbGVyKGZkLCBldmVudHMpOworICAgIH0KK307CisKK2NsYXNzIFN0dWJDYWxsYmFja0hhbmRsZXIgOiBwdWJsaWMgQ2FsbGJhY2tIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBib29sIG5leHRSZXN1bHQ7CisgICAgaW50IGNhbGxiYWNrQ291bnQ7CisKKyAgICBpbnQgZmQ7CisgICAgaW50IGV2ZW50czsKKworICAgIFN0dWJDYWxsYmFja0hhbmRsZXIoYm9vbCBuZXh0UmVzdWx0KSA6IG5leHRSZXN1bHQobmV4dFJlc3VsdCksCisgICAgICAgICAgICBjYWxsYmFja0NvdW50KDApLCBmZCgtMSksIGV2ZW50cygtMSkgeworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVyKGludCBmZCwgaW50IGV2ZW50cykgeworICAgICAgICBjYWxsYmFja0NvdW50ICs9IDE7CisgICAgICAgIHRoaXMtPmZkID0gZmQ7CisgICAgICAgIHRoaXMtPmV2ZW50cyA9IGV2ZW50czsKKyAgICAgICAgcmV0dXJuIG5leHRSZXN1bHQ7CisgICAgfQorfTsKKworY2xhc3MgUG9sbExvb3BUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHJvdGVjdGVkOgorICAgIHNwPFBvbGxMb29wPiBtUG9sbExvb3A7CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgICAgIG1Qb2xsTG9vcCA9IG5ldyBQb2xsTG9vcCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAgICAgbVBvbGxMb29wLmNsZWFyKCk7CisgICAgfQorfTsKKworCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuTm9uWmVyb1RpbWVvdXRBbmROb3RBd29rZW5fV2FpdHNGb3JUaW1lb3V0QW5kUmV0dXJuc0ZhbHNlKSB7CisgICAgU3RvcFdhdGNoIHN0b3BXYXRjaCgicG9sbE9uY2UiKTsKKyAgICBib29sIHJlc3VsdCA9IG1Qb2xsTG9vcC0+cG9sbE9uY2UoMTAwKTsKKyAgICBpbnQzMl90IGVsYXBzZWRNaWxsaXMgPSBuczJtcyhzdG9wV2F0Y2guZWxhcHNlZFRpbWUoKSk7CisKKyAgICBFWFBFQ1RfTkVBUigxMDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIGVxdWFsIHRpbWVvdXQiOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSBmYWxzZSBiZWNhdXNlIHRpbWVvdXQgb2NjdXJyZWQiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuTm9uWmVyb1RpbWVvdXRBbmRBd29rZW5CZWZvcmVXYWl0aW5nX0ltbWVkaWF0ZWx5UmV0dXJuc1RydWUpIHsKKyAgICBtUG9sbExvb3AtPndha2UoKTsKKworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgYm9vbCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDEwMDApOworICAgIGludDMyX3QgZWxhcHNlZE1pbGxpcyA9IG5zMm1zKHN0b3BXYXRjaC5lbGFwc2VkVGltZSgpKTsKKworICAgIEVYUEVDVF9ORUFSKDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIHplcm8gYmVjYXVzZSB3YWtlKCkgd2FzIGNhbGxlZCBiZWZvcmUgd2FpdGluZyI7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgdHJ1ZSBiZWNhdXNlIGxvb3Agd2FzIGF3b2tlbiI7Cit9CisKK1RFU1RfRihQb2xsTG9vcFRlc3QsIFBvbGxPbmNlX1doZW5Ob25aZXJvVGltZW91dEFuZEF3b2tlbldoaWxlV2FpdGluZ19Qcm9tcHRseVJldHVybnNUcnVlKSB7CisgICAgc3A8RGVsYXllZFdha2U+IGRlbGF5ZWRXYWtlID0gbmV3IERlbGF5ZWRXYWtlKDEwMCwgbVBvbGxMb29wKTsKKyAgICBkZWxheWVkV2FrZS0+cnVuKCk7CisKKyAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoKCJwb2xsT25jZSIpOworICAgIGJvb2wgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgxMDAwKTsKKyAgICBpbnQzMl90IGVsYXBzZWRNaWxsaXMgPSBuczJtcyhzdG9wV2F0Y2guZWxhcHNlZFRpbWUoKSk7CisKKyAgICBFWFBFQ1RfTkVBUigxMDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIGVxdWFsIHdha2UgZGVsYXkiOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCkKKyAgICAgICAgICAgIDw8ICJwb2xsT25jZSByZXN1bHQgc2hvdWxkIGJlIHRydWUgYmVjYXVzZSBsb29wIHdhcyBhd29rZW4iOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuWmVyb1RpbWVvdXRBbmROb1JlZ2lzdGVyZWRGRHNfSW1tZWRpYXRlbHlSZXR1cm5zRmFsc2UpIHsKKyAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoKCJwb2xsT25jZSIpOworICAgIGJvb2wgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgwKTsKKyAgICBpbnQzMl90IGVsYXBzZWRNaWxsaXMgPSBuczJtcyhzdG9wV2F0Y2guZWxhcHNlZFRpbWUoKSk7CisKKyAgICBFWFBFQ1RfTkVBUigwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYmUgYXBwcm94LiB6ZXJvIjsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgZmFsc2UgYmVjYXVzZSB0aW1lb3V0IG9jY3VycmVkIjsKK30KKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUG9sbE9uY2VfV2hlblplcm9UaW1lb3V0QW5kTm9TaWduYWxsZWRGRHNfSW1tZWRpYXRlbHlSZXR1cm5zRmFsc2UpIHsKKyAgICBQaXBlIHBpcGU7CisgICAgU3R1YkNhbGxiYWNrSGFuZGxlciBoYW5kbGVyKHRydWUpOworCisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgYm9vbCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDApOworICAgIGludDMyX3QgZWxhcHNlZE1pbGxpcyA9IG5zMm1zKHN0b3BXYXRjaC5lbGFwc2VkVGltZSgpKTsKKworICAgIEVYUEVDVF9ORUFSKDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBiZSBhcHByb3guIHplcm8iOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSBmYWxzZSBiZWNhdXNlIHRpbWVvdXQgb2NjdXJyZWQiOworICAgIEVYUEVDVF9FUSgwLCBoYW5kbGVyLmNhbGxiYWNrQ291bnQpCisgICAgICAgICAgICA8PCAiY2FsbGJhY2sgc2hvdWxkIG5vdCBoYXZlIGJlZW4gaW52b2tlZCBiZWNhdXNlIEZEIHdhcyBub3Qgc2lnbmFsbGVkIjsKK30KKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUG9sbE9uY2VfV2hlblplcm9UaW1lb3V0QW5kU2lnbmFsbGVkRkRfSW1tZWRpYXRlbHlJbnZva2VzQ2FsbGJhY2tBbmRSZXR1cm5zVHJ1ZSkgeworICAgIFBpcGUgcGlwZTsKKyAgICBTdHViQ2FsbGJhY2tIYW5kbGVyIGhhbmRsZXIodHJ1ZSk7CisKKyAgICBBU1NFUlRfRVEoT0ssIHBpcGUud3JpdGVTaWduYWwoKSk7CisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgYm9vbCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDApOworICAgIGludDMyX3QgZWxhcHNlZE1pbGxpcyA9IG5zMm1zKHN0b3BXYXRjaC5lbGFwc2VkVGltZSgpKTsKKworICAgIEVYUEVDVF9ORUFSKDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBiZSBhcHByb3guIHplcm8iOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCkKKyAgICAgICAgICAgIDw8ICJwb2xsT25jZSByZXN1bHQgc2hvdWxkIGJlIHRydWUgYmVjYXVzZSBGRCB3YXMgc2lnbmFsbGVkIjsKKyAgICBFWFBFQ1RfRVEoMSwgaGFuZGxlci5jYWxsYmFja0NvdW50KQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSI7CisgICAgRVhQRUNUX0VRKHBpcGUucmVjZWl2ZUZkLCBoYW5kbGVyLmZkKQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBoYXZlIHJlY2VpdmVkIHBpcGUgZmQgYXMgcGFyYW1ldGVyIjsKKyAgICBFWFBFQ1RfRVEoUE9MTF9JTiwgaGFuZGxlci5ldmVudHMpCisgICAgICAgICAgICA8PCAiY2FsbGJhY2sgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgUE9MTF9JTiBhcyBldmVudHMiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuTm9uWmVyb1RpbWVvdXRBbmROb1NpZ25hbGxlZEZEc19XYWl0c0ZvclRpbWVvdXRBbmRSZXR1cm5zRmFsc2UpIHsKKyAgICBQaXBlIHBpcGU7CisgICAgU3R1YkNhbGxiYWNrSGFuZGxlciBoYW5kbGVyKHRydWUpOworCisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgYm9vbCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDEwMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgRVhQRUNUX05FQVIoMTAwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYXBwcm94LiBlcXVhbCB0aW1lb3V0IjsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgZmFsc2UgYmVjYXVzZSB0aW1lb3V0IG9jY3VycmVkIjsKKyAgICBFWFBFQ1RfRVEoMCwgaGFuZGxlci5jYWxsYmFja0NvdW50KQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBub3QgaGF2ZSBiZWVuIGludm9rZWQgYmVjYXVzZSBGRCB3YXMgbm90IHNpZ25hbGxlZCI7Cit9CisKK1RFU1RfRihQb2xsTG9vcFRlc3QsIFBvbGxPbmNlX1doZW5Ob25aZXJvVGltZW91dEFuZFNpZ25hbGxlZEZEQmVmb3JlV2FpdGluZ19JbW1lZGlhdGVseUludm9rZXNDYWxsYmFja0FuZFJldHVybnNUcnVlKSB7CisgICAgUGlwZSBwaXBlOworICAgIFN0dWJDYWxsYmFja0hhbmRsZXIgaGFuZGxlcih0cnVlKTsKKworICAgIHBpcGUud3JpdGVTaWduYWwoKTsKKyAgICBoYW5kbGVyLnNldENhbGxiYWNrKG1Qb2xsTG9vcCwgcGlwZS5yZWNlaXZlRmQsIFBPTExfSU4pOworCisgICAgU3RvcFdhdGNoIHN0b3BXYXRjaCgicG9sbE9uY2UiKTsKKyAgICBib29sIHJlc3VsdCA9IG1Qb2xsTG9vcC0+cG9sbE9uY2UoMTAwKTsKKyAgICBpbnQzMl90IGVsYXBzZWRNaWxsaXMgPSBuczJtcyhzdG9wV2F0Y2guZWxhcHNlZFRpbWUoKSk7CisKKyAgICBBU1NFUlRfRVEoT0ssIHBpcGUucmVhZFNpZ25hbCgpKQorICAgICAgICAgICAgPDwgInNpZ25hbCBzaG91bGQgYWN0dWFsbHkgaGF2ZSBiZWVuIHdyaXR0ZW4iOworICAgIEVYUEVDVF9ORUFSKDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBiZSBhcHByb3guIHplcm8iOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCkKKyAgICAgICAgICAgIDw8ICJwb2xsT25jZSByZXN1bHQgc2hvdWxkIGJlIHRydWUgYmVjYXVzZSBGRCB3YXMgc2lnbmFsbGVkIjsKKyAgICBFWFBFQ1RfRVEoMSwgaGFuZGxlci5jYWxsYmFja0NvdW50KQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSI7CisgICAgRVhQRUNUX0VRKHBpcGUucmVjZWl2ZUZkLCBoYW5kbGVyLmZkKQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBoYXZlIHJlY2VpdmVkIHBpcGUgZmQgYXMgcGFyYW1ldGVyIjsKKyAgICBFWFBFQ1RfRVEoUE9MTF9JTiwgaGFuZGxlci5ldmVudHMpCisgICAgICAgICAgICA8PCAiY2FsbGJhY2sgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgUE9MTF9JTiBhcyBldmVudHMiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuTm9uWmVyb1RpbWVvdXRBbmRTaWduYWxsZWRGRFdoaWxlV2FpdGluZ19Qcm9tcHRseUludm9rZXNDYWxsYmFja0FuZFJldHVybnNUcnVlKSB7CisgICAgUGlwZSBwaXBlOworICAgIFN0dWJDYWxsYmFja0hhbmRsZXIgaGFuZGxlcih0cnVlKTsKKyAgICBzcDxEZWxheWVkV3JpdGVTaWduYWw+IGRlbGF5ZWRXcml0ZVNpZ25hbCA9IG5ldyBEZWxheWVkV3JpdGVTaWduYWwoMTAwLCAmIHBpcGUpOworCisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKyAgICBkZWxheWVkV3JpdGVTaWduYWwtPnJ1bigpOworCisgICAgU3RvcFdhdGNoIHN0b3BXYXRjaCgicG9sbE9uY2UiKTsKKyAgICBib29sIHJlc3VsdCA9IG1Qb2xsTG9vcC0+cG9sbE9uY2UoMTAwMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgQVNTRVJUX0VRKE9LLCBwaXBlLnJlYWRTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJzaWduYWwgc2hvdWxkIGFjdHVhbGx5IGhhdmUgYmVlbiB3cml0dGVuIjsKKyAgICBFWFBFQ1RfTkVBUigxMDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIGVxdWFsIHNpZ25hbCBkZWxheSI7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgdHJ1ZSBiZWNhdXNlIEZEIHdhcyBzaWduYWxsZWQiOworICAgIEVYUEVDVF9FUSgxLCBoYW5kbGVyLmNhbGxiYWNrQ291bnQpCisgICAgICAgICAgICA8PCAiY2FsbGJhY2sgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIjsKKyAgICBFWFBFQ1RfRVEocGlwZS5yZWNlaXZlRmQsIGhhbmRsZXIuZmQpCisgICAgICAgICAgICA8PCAiY2FsbGJhY2sgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgcGlwZSBmZCBhcyBwYXJhbWV0ZXIiOworICAgIEVYUEVDVF9FUShQT0xMX0lOLCBoYW5kbGVyLmV2ZW50cykKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgaGF2ZSByZWNlaXZlZCBQT0xMX0lOIGFzIGV2ZW50cyI7Cit9CisKK1RFU1RfRihQb2xsTG9vcFRlc3QsIFBvbGxPbmNlX1doZW5DYWxsYmFja0FkZGVkVGhlblJlbW92ZWRfQ2FsbGJhY2tTaG91bGROb3RCZUludm9rZWQpIHsKKyAgICBQaXBlIHBpcGU7CisgICAgU3R1YkNhbGxiYWNrSGFuZGxlciBoYW5kbGVyKHRydWUpOworCisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKyAgICBwaXBlLndyaXRlU2lnbmFsKCk7IC8vIHdvdWxkIGNhdXNlIEZEIHRvIGJlIGNvbnNpZGVyZWQgc2lnbmFsbGVkCisgICAgbVBvbGxMb29wLT5yZW1vdmVDYWxsYmFjayhwaXBlLnJlY2VpdmVGZCk7CisKKyAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoKCJwb2xsT25jZSIpOworICAgIGJvb2wgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgxMDApOworICAgIGludDMyX3QgZWxhcHNlZE1pbGxpcyA9IG5zMm1zKHN0b3BXYXRjaC5lbGFwc2VkVGltZSgpKTsKKworICAgIEFTU0VSVF9FUShPSywgcGlwZS5yZWFkU2lnbmFsKCkpCisgICAgICAgICAgICA8PCAic2lnbmFsIHNob3VsZCBhY3R1YWxseSBoYXZlIGJlZW4gd3JpdHRlbiI7CisgICAgRVhQRUNUX05FQVIoMTAwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYXBwcm94LiBlcXVhbCB0aW1lb3V0IGJlY2F1c2UgRkQgd2FzIG5vIGxvbmdlciByZWdpc3RlcmVkIjsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgZmFsc2UgYmVjYXVzZSB0aW1lb3V0IG9jY3VycmVkIjsKKyAgICBFWFBFQ1RfRVEoMCwgaGFuZGxlci5jYWxsYmFja0NvdW50KQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBub3QgYmUgaW52b2tlZCI7Cit9CisKK1RFU1RfRihQb2xsTG9vcFRlc3QsIFBvbGxPbmNlX1doZW5DYWxsYmFja1JldHVybnNGYWxzZV9DYWxsYmFja1Nob3VsZE5vdEJlSW52b2tlZEFnYWluTGF0ZXIpIHsKKyAgICBQaXBlIHBpcGU7CisgICAgU3R1YkNhbGxiYWNrSGFuZGxlciBoYW5kbGVyKGZhbHNlKTsKKworICAgIGhhbmRsZXIuc2V0Q2FsbGJhY2sobVBvbGxMb29wLCBwaXBlLnJlY2VpdmVGZCwgUE9MTF9JTik7CisKKyAgICAvLyBGaXJzdCBsb29wOiBDYWxsYmFjayBpcyByZWdpc3RlcmVkIGFuZCBGRCBpcyBzaWduYWxsZWQuCisgICAgcGlwZS53cml0ZVNpZ25hbCgpOworCisgICAgU3RvcFdhdGNoIHN0b3BXYXRjaCgicG9sbE9uY2UiKTsKKyAgICBib29sIHJlc3VsdCA9IG1Qb2xsTG9vcC0+cG9sbE9uY2UoMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgQVNTRVJUX0VRKE9LLCBwaXBlLnJlYWRTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJzaWduYWwgc2hvdWxkIGFjdHVhbGx5IGhhdmUgYmVlbiB3cml0dGVuIjsKKyAgICBFWFBFQ1RfTkVBUigwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYXBwcm94LiBlcXVhbCB6ZXJvIGJlY2F1c2UgRkQgd2FzIGFscmVhZHkgc2lnbmFsbGVkIjsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSB0cnVlIGJlY2F1c2UgRkQgd2FzIHNpZ25hbGxlZCI7CisgICAgRVhQRUNUX0VRKDEsIGhhbmRsZXIuY2FsbGJhY2tDb3VudCkKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgYmUgaW52b2tlZCI7CisKKyAgICAvLyBTZWNvbmQgbG9vcDogQ2FsbGJhY2sgaXMgbm8gbG9uZ2VyIHJlZ2lzdGVyZWQgYW5kIEZEIGlzIHNpZ25hbGxlZC4KKyAgICBwaXBlLndyaXRlU2lnbmFsKCk7CisKKyAgICBzdG9wV2F0Y2gucmVzZXQoKTsKKyAgICByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDApOworICAgIGVsYXBzZWRNaWxsaXMgPSBuczJtcyhzdG9wV2F0Y2guZWxhcHNlZFRpbWUoKSk7CisKKyAgICBBU1NFUlRfRVEoT0ssIHBpcGUucmVhZFNpZ25hbCgpKQorICAgICAgICAgICAgPDwgInNpZ25hbCBzaG91bGQgYWN0dWFsbHkgaGF2ZSBiZWVuIHdyaXR0ZW4iOworICAgIEVYUEVDVF9ORUFSKDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIGVxdWFsIHplcm8gYmVjYXVzZSB0aW1lb3V0IHdhcyB6ZXJvIjsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgZmFsc2UgYmVjYXVzZSB0aW1lb3V0IG9jY3VycmVkIjsKKyAgICBFWFBFQ1RfRVEoMSwgaGFuZGxlci5jYWxsYmFja0NvdW50KQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBub3QgYmUgaW52b2tlZCB0aGlzIHRpbWUiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBSZW1vdmVDYWxsYmFja19XaGVuQ2FsbGJhY2tOb3RBZGRlZF9SZXR1cm5zRmFsc2UpIHsKKyAgICBib29sIHJlc3VsdCA9IG1Qb2xsTG9vcC0+cmVtb3ZlQ2FsbGJhY2soMSk7CisKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KQorICAgICAgICAgICAgPDwgInJlbW92ZUNhbGxiYWNrIHNob3VsZCByZXR1cm4gZmFsc2UgYmVjYXVzZSBGRCBub3QgcmVnaXN0ZXJlZCI7Cit9CisKK1RFU1RfRihQb2xsTG9vcFRlc3QsIFJlbW92ZUNhbGxiYWNrX1doZW5DYWxsYmFja0FkZGVkVGhlblJlbW92ZWRUd2ljZV9SZXR1cm5zVHJ1ZUZpcnN0VGltZUFuZFJldHVybnNGYWxzZVNlY29uZFRpbWUpIHsKKyAgICBQaXBlIHBpcGU7CisgICAgU3R1YkNhbGxiYWNrSGFuZGxlciBoYW5kbGVyKGZhbHNlKTsKKyAgICBoYW5kbGVyLnNldENhbGxiYWNrKG1Qb2xsTG9vcCwgcGlwZS5yZWNlaXZlRmQsIFBPTExfSU4pOworCisgICAgLy8gRmlyc3QgdGltZS4KKyAgICBib29sIHJlc3VsdCA9IG1Qb2xsTG9vcC0+cmVtb3ZlQ2FsbGJhY2socGlwZS5yZWNlaXZlRmQpOworCisgICAgRVhQRUNUX1RSVUUocmVzdWx0KQorICAgICAgICAgICAgPDwgInJlbW92ZUNhbGxiYWNrIHNob3VsZCByZXR1cm4gdHJ1ZSBmaXJzdCB0aW1lIGJlY2F1c2UgRkQgd2FzIHJlZ2lzdGVyZWQiOworCisgICAgLy8gU2Vjb25kIHRpbWUuCisgICAgcmVzdWx0ID0gbVBvbGxMb29wLT5yZW1vdmVDYWxsYmFjayhwaXBlLnJlY2VpdmVGZCk7CisKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KQorICAgICAgICAgICAgPDwgInJlbW92ZUNhbGxiYWNrIHNob3VsZCByZXR1cm4gZmFsc2Ugc2Vjb25kIHRpbWUgYmVjYXVzZSBGRCB3YXMgbm8gbG9uZ2VyIHJlZ2lzdGVyZWQiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuQ2FsbGJhY2tBZGRlZFR3aWNlX09ubHlTZWNvbmRDYWxsYmFja1Nob3VsZEJlSW52b2tlZCkgeworICAgIFBpcGUgcGlwZTsKKyAgICBTdHViQ2FsbGJhY2tIYW5kbGVyIGhhbmRsZXIxKHRydWUpOworICAgIFN0dWJDYWxsYmFja0hhbmRsZXIgaGFuZGxlcjIodHJ1ZSk7CisKKyAgICBoYW5kbGVyMS5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKyAgICBoYW5kbGVyMi5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsgLy8gcmVwbGFjZSBpdAorICAgIHBpcGUud3JpdGVTaWduYWwoKTsgLy8gd291bGQgY2F1c2UgRkQgdG8gYmUgY29uc2lkZXJlZCBzaWduYWxsZWQKKworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgYm9vbCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDEwMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgQVNTRVJUX0VRKE9LLCBwaXBlLnJlYWRTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJzaWduYWwgc2hvdWxkIGFjdHVhbGx5IGhhdmUgYmVlbiB3cml0dGVuIjsKKyAgICBFWFBFQ1RfTkVBUigwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYXBwcm94LiB6ZXJvIGJlY2F1c2UgRkQgd2FzIGFscmVhZHkgc2lnbmFsbGVkIjsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSB0cnVlIGJlY2F1c2UgRkQgd2FzIHNpZ25hbGxlZCI7CisgICAgRVhQRUNUX0VRKDAsIGhhbmRsZXIxLmNhbGxiYWNrQ291bnQpCisgICAgICAgICAgICA8PCAib3JpZ2luYWwgaGFuZGxlciBjYWxsYmFjayBzaG91bGQgbm90IGJlIGludm9rZWQgYmVjYXVzZSBpdCB3YXMgcmVwbGFjZWQiOworICAgIEVYUEVDVF9FUSgxLCBoYW5kbGVyMi5jYWxsYmFja0NvdW50KQorICAgICAgICAgICAgPDwgInJlcGxhY2VtZW50IGhhbmRsZXIgY2FsbGJhY2sgc2hvdWxkIGJlIGludm9rZWQiOworfQorCisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvdGVzdHMvVGVzdEhlbHBlcnMuaCBiL2xpYnMvdXRpbHMvdGVzdHMvVGVzdEhlbHBlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGU5ODVlCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy91dGlscy90ZXN0cy9UZXN0SGVscGVycy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIFRFU1RIRUxQRVJTX0gKKyNkZWZpbmUgVEVTVEhFTFBFUlNfSAorCisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIFBpcGUgeworcHVibGljOgorICAgIGludCBzZW5kRmQ7CisgICAgaW50IHJlY2VpdmVGZDsKKworICAgIFBpcGUoKSB7CisgICAgICAgIGludCBmZHNbMl07CisgICAgICAgIDo6cGlwZShmZHMpOworCisgICAgICAgIHJlY2VpdmVGZCA9IGZkc1swXTsKKyAgICAgICAgc2VuZEZkID0gZmRzWzFdOworICAgIH0KKworICAgIH5QaXBlKCkgeworICAgICAgICBpZiAoc2VuZEZkICE9IC0xKSB7CisgICAgICAgICAgICA6OmNsb3NlKHNlbmRGZCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVjZWl2ZUZkICE9IC0xKSB7CisgICAgICAgICAgICA6OmNsb3NlKHJlY2VpdmVGZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0dXNfdCB3cml0ZVNpZ25hbCgpIHsKKyAgICAgICAgc3NpemVfdCBuV3JpdHRlbiA9IDo6d3JpdGUoc2VuZEZkLCAiKiIsIDEpOworICAgICAgICByZXR1cm4gbldyaXR0ZW4gPT0gMSA/IDAgOiAtZXJybm87CisgICAgfQorCisgICAgc3RhdHVzX3QgcmVhZFNpZ25hbCgpIHsKKyAgICAgICAgY2hhciBidWZbMV07CisgICAgICAgIHNzaXplX3QgblJlYWQgPSA6OnJlYWQocmVjZWl2ZUZkLCBidWYsIDEpOworICAgICAgICByZXR1cm4gblJlYWQgPT0gMSA/IDAgOiBuUmVhZCA9PSAwID8gLUVQSVBFIDogLWVycm5vOworICAgIH0KK307CisKK2NsYXNzIERlbGF5ZWRUYXNrIDogcHVibGljIFRocmVhZCB7CisgICAgaW50IG1EZWxheU1pbGxpczsKKworcHVibGljOgorICAgIERlbGF5ZWRUYXNrKGludCBkZWxheU1pbGxpcykgOiBtRGVsYXlNaWxsaXMoZGVsYXlNaWxsaXMpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+RGVsYXllZFRhc2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkb1Rhc2soKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgdGhyZWFkTG9vcCgpIHsKKyAgICAgICAgdXNsZWVwKG1EZWxheU1pbGxpcyAqIDEwMDApOworICAgICAgICBkb1Rhc2soKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIFRFU1RIRUxQRVJTX0gKZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9BZGRyZXNzLmphdmEgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vQWRkcmVzcy5qYXZhCmluZGV4IGFjMjc1YzYuLmIxNTJmNDggMTAwNjQ0Ci0tLSBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9BZGRyZXNzLmphdmEKKysrIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0FkZHJlc3MuamF2YQpAQCAtNTAwLDcgKzUwMCwxMCBAQAogICAgICAgICAgICAgYS5tQWRtaW5BcmVhID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgYS5tU3ViQWRtaW5BcmVhID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgYS5tTG9jYWxpdHkgPSBpbi5yZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBhLm1TdWJMb2NhbGl0eSA9IGluLnJlYWRTdHJpbmcoKTsKICAgICAgICAgICAgIGEubVRob3JvdWdoZmFyZSA9IGluLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgICAgIGEubVN1YlRob3JvdWdoZmFyZSA9IGluLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgICAgIGEubVByZW1pc2VzID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgYS5tUG9zdGFsQ29kZSA9IGluLnJlYWRTdHJpbmcoKTsKICAgICAgICAgICAgIGEubUNvdW50cnlDb2RlID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgYS5tQ291bnRyeU5hbWUgPSBpbi5yZWFkU3RyaW5nKCk7CkBAIC01NDQsNyArNTQ3LDEwIEBACiAgICAgICAgIHBhcmNlbC53cml0ZVN0cmluZyhtQWRtaW5BcmVhKTsKICAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1TdWJBZG1pbkFyZWEpOwogICAgICAgICBwYXJjZWwud3JpdGVTdHJpbmcobUxvY2FsaXR5KTsKKyAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1TdWJMb2NhbGl0eSk7CiAgICAgICAgIHBhcmNlbC53cml0ZVN0cmluZyhtVGhvcm91Z2hmYXJlKTsKKyAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1TdWJUaG9yb3VnaGZhcmUpOworICAgICAgICBwYXJjZWwud3JpdGVTdHJpbmcobVByZW1pc2VzKTsKICAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1Qb3N0YWxDb2RlKTsKICAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1Db3VudHJ5Q29kZSk7CiAgICAgICAgIHBhcmNlbC53cml0ZVN0cmluZyhtQ291bnRyeU5hbWUpOwpkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0NyaXRlcmlhLmphdmEgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vQ3JpdGVyaWEuamF2YQppbmRleCA5ZDI1OGQwLi4xZjNmYjdhIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vQ3JpdGVyaWEuamF2YQorKysgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vQ3JpdGVyaWEuamF2YQpAQCAtNTcsOSArNTcsMzUgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQ0NVUkFDWV9DT0FSU0UgPSAyOwogCi0gICAgcHJpdmF0ZSBpbnQgbUFjY3VyYWN5ICAgICAgICAgICAgICA9IE5PX1JFUVVJUkVNRU5UOworICAgIC8qKgorICAgICAqIEEgY29uc3RhbnQgaW5kaWNhdGluZyBhIGxvdyBsb2NhdGlvbiBhY2N1cmFjeSByZXF1aXJlbWVudAorICAgICAqIC0gbWF5IGJlIHVzZWQgZm9yIGhvcml6b250YWwsIGFsdGl0dWRlLCBzcGVlZCBvciBiZWFyaW5nIGFjY3VyYWN5LgorICAgICAqIEZvciBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwb3NpdGlvbiB0aGlzIGNvcnJlc3BvbmRzIHJvdWdobHkgdG8KKyAgICAgKiBhbiBhY2N1cmFjeSBvZiBncmVhdGVyIHRoYW4gNTAwIG1ldGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQ0NVUkFDWV9MT1cgPSAxOworCisgICAgLyoqCisgICAgICogQSBjb25zdGFudCBpbmRpY2F0aW5nIGEgbWVkaXVtIGFjY3VyYWN5IHJlcXVpcmVtZW50CisgICAgICogLSBjdXJyZW50bHkgdXNlZCBvbmx5IGZvciBob3Jpem9udGFsIGFjY3VyYWN5LgorICAgICAqIEZvciBob3Jpem9udGFsIHBvc2l0aW9uIHRoaXMgY29ycmVzcG9uZHMgcm91Z2hseSB0byB0byBhbiBhY2N1cmFjeQorICAgICAqIG9mIGJldHdlZW4gMTAwIGFuZCA1MDAgbWV0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFDQ1VSQUNZX01FRElVTSA9IDI7CisKKyAgICAvKioKKyAgICAgKiBhIGNvbnN0YW50IGluZGljYXRpbmcgYSBoaWdoIGFjY3VyYWN5IHJlcXVpcmVtZW50CisgICAgICogLSBtYXkgYmUgdXNlZCBmb3IgaG9yaXpvbnRhbCwgYWx0aXR1ZGUsIHNwZWVkIG9yIGJlYXJpbmcgYWNjdXJhY3kuCisgICAgICogRm9yIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHBvc2l0aW9uIHRoaXMgY29ycmVzcG9uZHMgcm91Z2hseSB0bworICAgICAqIGFuIGFjY3VyYWN5IG9mIGxlc3MgdGhhbiAxMDAgbWV0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFDQ1VSQUNZX0hJR0ggPSAzOworCisgICAgcHJpdmF0ZSBpbnQgbUhvcml6b250YWxBY2N1cmFjeSAgICA9IE5PX1JFUVVJUkVNRU5UOworICAgIHByaXZhdGUgaW50IG1WZXJ0aWNhbEFjY3VyYWN5ICAgICAgPSBOT19SRVFVSVJFTUVOVDsKKyAgICBwcml2YXRlIGludCBtU3BlZWRBY2N1cmFjeSAgICAgICAgID0gTk9fUkVRVUlSRU1FTlQ7CisgICAgcHJpdmF0ZSBpbnQgbUJlYXJpbmdBY2N1cmFjeSAgICAgICA9IE5PX1JFUVVJUkVNRU5UOwogICAgIHByaXZhdGUgaW50IG1Qb3dlclJlcXVpcmVtZW50ICAgICAgPSBOT19SRVFVSVJFTUVOVDsKLS8vICAgIHByaXZhdGUgaW50IG1QcmVmZXJyZWRSZXNwb25zZVRpbWUgPSBOT19SRVFVSVJFTUVOVDsKICAgICBwcml2YXRlIGJvb2xlYW4gbUFsdGl0dWRlUmVxdWlyZWQgID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1CZWFyaW5nUmVxdWlyZWQgICA9IGZhbHNlOwogICAgIHByaXZhdGUgYm9vbGVhbiBtU3BlZWRSZXF1aXJlZCAgICAgPSBmYWxzZTsKQEAgLTc3LDkgKzEwMywxMSBAQAogICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQ3JpdGVyaWEgb2JqZWN0IHRoYXQgaXMgYSBjb3B5IG9mIHRoZSBnaXZlbiBjcml0ZXJpYS4KICAgICAgKi8KICAgICBwdWJsaWMgQ3JpdGVyaWEoQ3JpdGVyaWEgY3JpdGVyaWEpIHsKLSAgICAgICAgbUFjY3VyYWN5ID0gY3JpdGVyaWEubUFjY3VyYWN5OworICAgICAgICBtSG9yaXpvbnRhbEFjY3VyYWN5ID0gY3JpdGVyaWEubUhvcml6b250YWxBY2N1cmFjeTsKKyAgICAgICAgbVZlcnRpY2FsQWNjdXJhY3kgPSBjcml0ZXJpYS5tVmVydGljYWxBY2N1cmFjeTsKKyAgICAgICAgbVNwZWVkQWNjdXJhY3kgPSBjcml0ZXJpYS5tU3BlZWRBY2N1cmFjeTsKKyAgICAgICAgbUJlYXJpbmdBY2N1cmFjeSA9IGNyaXRlcmlhLm1CZWFyaW5nQWNjdXJhY3k7CiAgICAgICAgIG1Qb3dlclJlcXVpcmVtZW50ID0gY3JpdGVyaWEubVBvd2VyUmVxdWlyZW1lbnQ7Ci0vLyAgICAgICAgbVByZWZlcnJlZFJlc3BvbnNlVGltZSA9IGNyaXRlcmlhLm1QcmVmZXJyZWRSZXNwb25zZVRpbWU7CiAgICAgICAgIG1BbHRpdHVkZVJlcXVpcmVkID0gY3JpdGVyaWEubUFsdGl0dWRlUmVxdWlyZWQ7CiAgICAgICAgIG1CZWFyaW5nUmVxdWlyZWQgPSBjcml0ZXJpYS5tQmVhcmluZ1JlcXVpcmVkOwogICAgICAgICBtU3BlZWRSZXF1aXJlZCA9IGNyaXRlcmlhLm1TcGVlZFJlcXVpcmVkOwpAQCAtODcsMTkgKzExNSwxMTggQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhlIGRlc2lyZWQgaG9yaXpvbnRhbCBhY2N1cmFjeSAobGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSkuCisgICAgICogQWNjdXJhY3kgbWF5IGJlIHtAbGluayAjQUNDVVJBQ1lfTE9XfSwge0BsaW5rICNBQ0NVUkFDWV9NRURJVU19LAorICAgICAqIHtAbGluayAjQUNDVVJBQ1lfSElHSH0gb3Ige0BsaW5rICNOT19SRVFVSVJFTUVOVH0uCisgICAgICogTW9yZSBhY2N1cmF0ZSBsb2NhdGlvbiBtYXkgY29uc3VtZSBtb3JlIHBvd2VyIGFuZCBtYXkgdGFrZSBsb25nZXIuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhY2N1cmFjeSBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgY29uc3RhbnRzCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SG9yaXpvbnRhbEFjY3VyYWN5KGludCBhY2N1cmFjeSkgeworICAgICAgICBpZiAoYWNjdXJhY3kgPCBOT19SRVFVSVJFTUVOVCB8fCBhY2N1cmFjeSA+IEFDQ1VSQUNZX0hJR0gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImFjY3VyYWN5PSIgKyBhY2N1cmFjeSk7CisgICAgICAgIH0KKyAgICAgICAgbUhvcml6b250YWxBY2N1cmFjeSA9IGFjY3VyYWN5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBjb25zdGFudCBpbmRpY2F0aW5nIHRoZSBkZXNpcmVkIGhvcml6b250YWwgYWNjdXJhY3kgKGxhdGl0dWRlIGFuZCBsb25naXR1ZGUpLgorICAgICAqIEFjY3VyYWN5IG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0xPV30sIHtAbGluayAjQUNDVVJBQ1lfTUVESVVNfSwKKyAgICAgKiB7QGxpbmsgI0FDQ1VSQUNZX0hJR0h9IG9yIHtAbGluayAjTk9fUkVRVUlSRU1FTlR9LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0SG9yaXpvbnRhbEFjY3VyYWN5KCkgeworICAgICAgICByZXR1cm4gbUhvcml6b250YWxBY2N1cmFjeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhlIGRlc2lyZWQgdmVydGljYWwgYWNjdXJhY3kgKGFsdGl0dWRlKS4KKyAgICAgKiBBY2N1cmFjeSBtYXkgYmUge0BsaW5rICNBQ0NVUkFDWV9MT1d9LCB7QGxpbmsgI0FDQ1VSQUNZX01FRElVTX0sCisgICAgICoge0BsaW5rICNBQ0NVUkFDWV9ISUdIfSBvciB7QGxpbmsgI05PX1JFUVVJUkVNRU5UfS4KKyAgICAgKiBNb3JlIGFjY3VyYXRlIGxvY2F0aW9uIG1heSBjb25zdW1lIG1vcmUgcG93ZXIgYW5kIG1heSB0YWtlIGxvbmdlci4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGFjY3VyYWN5IGlzIG5vdCBvbmUgb2YgdGhlIHN1cHBvcnRlZCBjb25zdGFudHMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRWZXJ0aWNhbEFjY3VyYWN5KGludCBhY2N1cmFjeSkgeworICAgICAgICBpZiAoYWNjdXJhY3kgPCBOT19SRVFVSVJFTUVOVCB8fCBhY2N1cmFjeSA+IEFDQ1VSQUNZX0hJR0gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImFjY3VyYWN5PSIgKyBhY2N1cmFjeSk7CisgICAgICAgIH0KKyAgICAgICAgbVZlcnRpY2FsQWNjdXJhY3kgPSBhY2N1cmFjeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgY29uc3RhbnQgaW5kaWNhdGluZyB0aGUgZGVzaXJlZCB2ZXJ0aWNhbCBhY2N1cmFjeSAoYWx0aXR1ZGUpLgorICAgICAqIEFjY3VyYWN5IG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0xPV30sIHtAbGluayAjQUNDVVJBQ1lfSElHSH0sCisgICAgICogb3Ige0BsaW5rICNOT19SRVFVSVJFTUVOVH0uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRWZXJ0aWNhbEFjY3VyYWN5KCkgeworICAgICAgICByZXR1cm4gbVZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5kaWNhdGVzIHRoZSBkZXNpcmVkIHNwZWVkIGFjY3VyYWN5LgorICAgICAqIEFjY3VyYWN5IG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0xPV30sIHtAbGluayAjQUNDVVJBQ1lfSElHSH0sCisgICAgICogb3Ige0BsaW5rICNOT19SRVFVSVJFTUVOVH0uCisgICAgICogTW9yZSBhY2N1cmF0ZSBsb2NhdGlvbiBtYXkgY29uc3VtZSBtb3JlIHBvd2VyIGFuZCBtYXkgdGFrZSBsb25nZXIuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhY2N1cmFjeSBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgY29uc3RhbnRzCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U3BlZWRBY2N1cmFjeShpbnQgYWNjdXJhY3kpIHsKKyAgICAgICAgaWYgKGFjY3VyYWN5IDwgTk9fUkVRVUlSRU1FTlQgfHwgYWNjdXJhY3kgPiBBQ0NVUkFDWV9ISUdIKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJhY2N1cmFjeT0iICsgYWNjdXJhY3kpOworICAgICAgICB9CisgICAgICAgIG1TcGVlZEFjY3VyYWN5ID0gYWNjdXJhY3k7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGNvbnN0YW50IGluZGljYXRpbmcgdGhlIGRlc2lyZWQgc3BlZWQgYWNjdXJhY3kKKyAgICAgKiBBY2N1cmFjeSBtYXkgYmUge0BsaW5rICNBQ0NVUkFDWV9MT1d9LCB7QGxpbmsgI0FDQ1VSQUNZX0hJR0h9LAorICAgICAqIG9yIHtAbGluayAjTk9fUkVRVUlSRU1FTlR9LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U3BlZWRBY2N1cmFjeSgpIHsKKyAgICAgICAgcmV0dXJuIG1TcGVlZEFjY3VyYWN5OworICAgIH0KKworICAgIC8qKgorICAgICAqIEluZGljYXRlcyB0aGUgZGVzaXJlZCBiZWFyaW5nIGFjY3VyYWN5LgorICAgICAqIEFjY3VyYWN5IG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0xPV30sIHtAbGluayAjQUNDVVJBQ1lfSElHSH0sCisgICAgICogb3Ige0BsaW5rICNOT19SRVFVSVJFTUVOVH0uCisgICAgICogTW9yZSBhY2N1cmF0ZSBsb2NhdGlvbiBtYXkgY29uc3VtZSBtb3JlIHBvd2VyIGFuZCBtYXkgdGFrZSBsb25nZXIuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhY2N1cmFjeSBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgY29uc3RhbnRzCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0QmVhcmluZ0FjY3VyYWN5KGludCBhY2N1cmFjeSkgeworICAgICAgICBpZiAoYWNjdXJhY3kgPCBOT19SRVFVSVJFTUVOVCB8fCBhY2N1cmFjeSA+IEFDQ1VSQUNZX0hJR0gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImFjY3VyYWN5PSIgKyBhY2N1cmFjeSk7CisgICAgICAgIH0KKyAgICAgICAgbUJlYXJpbmdBY2N1cmFjeSA9IGFjY3VyYWN5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBjb25zdGFudCBpbmRpY2F0aW5nIHRoZSBkZXNpcmVkIGJlYXJpbmcgYWNjdXJhY3kuCisgICAgICogQWNjdXJhY3kgbWF5IGJlIHtAbGluayAjQUNDVVJBQ1lfTE9XfSwge0BsaW5rICNBQ0NVUkFDWV9ISUdIfSwKKyAgICAgKiBvciB7QGxpbmsgI05PX1JFUVVJUkVNRU5UfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEJlYXJpbmdBY2N1cmFjeSgpIHsKKyAgICAgICAgcmV0dXJuIG1CZWFyaW5nQWNjdXJhY3k7CisgICAgfQorCisgICAgLyoqCiAgICAgICogSW5kaWNhdGVzIHRoZSBkZXNpcmVkIGFjY3VyYWN5IGZvciBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlLiBBY2N1cmFjeQogICAgICAqIG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0ZJTkV9IGlmIGRlc2lyZWQgbG9jYXRpb24KICAgICAgKiBpcyBmaW5lLCBlbHNlIGl0IGNhbiBiZSB7QGxpbmsgI0FDQ1VSQUNZX0NPQVJTRX0uCi0gICAgICogTW9yZSBhY2N1cmF0ZSBsb2NhdGlvbiB1c3VhbGx5IGNvbnN1bWVzIG1vcmUgcG93ZXIgYW5kIG1heSB0YWtlCi0gICAgICogbG9uZ2VyLgorICAgICAqIE1vcmUgYWNjdXJhdGUgbG9jYXRpb24gbWF5IGNvbnN1bWUgbW9yZSBwb3dlciBhbmQgbWF5IHRha2UgbG9uZ2VyLgogICAgICAqCi0gICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYWNjdXJhY3kgaXMgbmVnYXRpdmUKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhY2N1cmFjeSBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgY29uc3RhbnRzCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgc2V0QWNjdXJhY3koaW50IGFjY3VyYWN5KSB7Ci0gICAgICAgIGlmIChhY2N1cmFjeSA8IE5PX1JFUVVJUkVNRU5UICYmIGFjY3VyYWN5ID4gQUNDVVJBQ1lfQ09BUlNFKSB7CisgICAgICAgIGlmIChhY2N1cmFjeSA8IE5PX1JFUVVJUkVNRU5UIHx8IGFjY3VyYWN5ID4gQUNDVVJBQ1lfQ09BUlNFKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJhY2N1cmFjeT0iICsgYWNjdXJhY3kpOwogICAgICAgICB9Ci0gICAgICAgIG1BY2N1cmFjeSA9IGFjY3VyYWN5OworICAgICAgICBpZiAoYWNjdXJhY3kgPT0gQUNDVVJBQ1lfRklORSkgeworICAgICAgICAgICAgbUhvcml6b250YWxBY2N1cmFjeSA9IEFDQ1VSQUNZX0hJR0g7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtSG9yaXpvbnRhbEFjY3VyYWN5ID0gQUNDVVJBQ1lfTE9XOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyoqCkBAIC0xMDgsNyArMjM1LDExIEBACiAgICAgICogaXMgZmluZSwgZWxzZSBpdCBjYW4gYmUge0BsaW5rICNBQ0NVUkFDWV9DT0FSU0V9LgogICAgICAqLwogICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7Ci0gICAgICAgIHJldHVybiBtQWNjdXJhY3k7CisgICAgICAgIGlmIChtSG9yaXpvbnRhbEFjY3VyYWN5ID49IEFDQ1VSQUNZX0hJR0gpIHsKKyAgICAgICAgICAgIHJldHVybiBBQ0NVUkFDWV9GSU5FOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIEFDQ1VSQUNZX0NPQVJTRTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgpAQCAtMTMxLDIwICsyNjIsNiBAQAogICAgICAgICByZXR1cm4gbVBvd2VyUmVxdWlyZW1lbnQ7CiAgICAgfQogCi0vLyAgICAvKioKLS8vICAgICAqIEluZGljYXRlcyB0aGUgcHJlZmVycmVkIHJlc3BvbnNlIHRpbWUgb2YgdGhlIHByb3ZpZGVyLCBpbiBtaWxsaXNlY29uZHMuCi0vLyAgICAgKi8KLS8vICAgIHB1YmxpYyB2b2lkIHNldFByZWZlcnJlZFJlc3BvbnNlVGltZShpbnQgdGltZSkgewotLy8gICAgICAgIG1QcmVmZXJyZWRSZXNwb25zZVRpbWUgPSB0aW1lOwotLy8gICAgfQotLy8KLS8vICAgIC8qKgotLy8gICAgICogUmV0dXJucyB0aGUgcHJlZmVycmVkIHJlc3BvbnNlIHRpbWUgb2YgdGhlIHByb3ZpZGVyLCBpbiBtaWxsaXNlY29uZHMuCi0vLyAgICAgKi8KLS8vICAgIHB1YmxpYyBpbnQgZ2V0UHJlZmVycmVkUmVzcG9uc2VUaW1lKCkgewotLy8gICAgICAgIHJldHVybiBtUHJlZmVycmVkUmVzcG9uc2VUaW1lOwotLy8gICAgfQotCiAgICAgLyoqCiAgICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByb3ZpZGVyIGlzIGFsbG93ZWQgdG8gaW5jdXIgbW9uZXRhcnkgY29zdC4KICAgICAgKi8KQEAgLTIxMSw5ICszMjgsMTEgQEAKICAgICAgICAgbmV3IFBhcmNlbGFibGUuQ3JlYXRvcjxDcml0ZXJpYT4oKSB7CiAgICAgICAgIHB1YmxpYyBDcml0ZXJpYSBjcmVhdGVGcm9tUGFyY2VsKFBhcmNlbCBpbikgewogICAgICAgICAgICAgQ3JpdGVyaWEgYyA9IG5ldyBDcml0ZXJpYSgpOwotICAgICAgICAgICAgYy5tQWNjdXJhY3kgPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICBjLm1Ib3Jpem9udGFsQWNjdXJhY3kgPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICBjLm1WZXJ0aWNhbEFjY3VyYWN5ID0gaW4ucmVhZEludCgpOworICAgICAgICAgICAgYy5tU3BlZWRBY2N1cmFjeSA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIGMubUJlYXJpbmdBY2N1cmFjeSA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgICAgIGMubVBvd2VyUmVxdWlyZW1lbnQgPSBpbi5yZWFkSW50KCk7Ci0vLyAgICAgICAgICAgIGMubVByZWZlcnJlZFJlc3BvbnNlVGltZSA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgICAgIGMubUFsdGl0dWRlUmVxdWlyZWQgPSBpbi5yZWFkSW50KCkgIT0gMDsKICAgICAgICAgICAgIGMubUJlYXJpbmdSZXF1aXJlZCA9IGluLnJlYWRJbnQoKSAhPSAwOwogICAgICAgICAgICAgYy5tU3BlZWRSZXF1aXJlZCA9IGluLnJlYWRJbnQoKSAhPSAwOwpAQCAtMjMxLDkgKzM1MCwxMSBAQAogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoUGFyY2VsIHBhcmNlbCwgaW50IGZsYWdzKSB7Ci0gICAgICAgIHBhcmNlbC53cml0ZUludChtQWNjdXJhY3kpOworICAgICAgICBwYXJjZWwud3JpdGVJbnQobUhvcml6b250YWxBY2N1cmFjeSk7CisgICAgICAgIHBhcmNlbC53cml0ZUludChtVmVydGljYWxBY2N1cmFjeSk7CisgICAgICAgIHBhcmNlbC53cml0ZUludChtU3BlZWRBY2N1cmFjeSk7CisgICAgICAgIHBhcmNlbC53cml0ZUludChtQmVhcmluZ0FjY3VyYWN5KTsKICAgICAgICAgcGFyY2VsLndyaXRlSW50KG1Qb3dlclJlcXVpcmVtZW50KTsKLS8vICAgICAgICBwYXJjZWwud3JpdGVJbnQobVByZWZlcnJlZFJlc3BvbnNlVGltZSk7CiAgICAgICAgIHBhcmNlbC53cml0ZUludChtQWx0aXR1ZGVSZXF1aXJlZCA/IDEgOiAwKTsKICAgICAgICAgcGFyY2VsLndyaXRlSW50KG1CZWFyaW5nUmVxdWlyZWQgPyAxIDogMCk7CiAgICAgICAgIHBhcmNlbC53cml0ZUludChtU3BlZWRSZXF1aXJlZCA/IDEgOiAwKTsKZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9HZW9jb2Rlci5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dlb2NvZGVyLmphdmEKaW5kZXggYzMyNWIxYi4uNTQ2YmI5ZCAxMDA2NDQKLS0tIGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dlb2NvZGVyLmphdmEKKysrIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dlb2NvZGVyLmphdmEKQEAgLTQwLDcgKzQwLDkgQEAKICAqCiAgKiBUaGUgR2VvY29kZXIgY2xhc3MgcmVxdWlyZXMgYSBiYWNrZW5kIHNlcnZpY2UgdGhhdCBpcyBub3QgaW5jbHVkZWQgaW4KICAqIHRoZSBjb3JlIGFuZHJvaWQgZnJhbWV3b3JrLiAgVGhlIEdlb2NvZGVyIHF1ZXJ5IG1ldGhvZHMgd2lsbCByZXR1cm4gYW4KLSAqIGVtcHR5IGxpc3QgaWYgdGhlcmUgbm8gYmFja2VuZCBzZXJ2aWNlIGluIHRoZSBwbGF0Zm9ybS4KKyAqIGVtcHR5IGxpc3QgaWYgdGhlcmUgbm8gYmFja2VuZCBzZXJ2aWNlIGluIHRoZSBwbGF0Zm9ybS4gIFVzZSB0aGUKKyAqIGlzSW1wbGVtZW50ZWQoKSBtZXRob2QgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBHZW9jb2RlciBpbXBsZW1lbnRhdGlvbgorICogZXhpc3RzLgogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgR2VvY29kZXIgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiR2VvY29kZXIiOwpAQCAtNDksNiArNTEsMjMgQEAKICAgICBwcml2YXRlIElMb2NhdGlvbk1hbmFnZXIgbVNlcnZpY2U7CiAKICAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIEdlb2NvZGVyIG1ldGhvZHMgZ2V0RnJvbUxvY2F0aW9uIGFuZAorICAgICAqIGdldEZyb21Mb2NhdGlvbk5hbWUgYXJlIGltcGxlbWVudGVkLiAgTGFjayBvZiBuZXR3b3JrCisgICAgICogY29ubmVjdGl2aXR5IG1heSBzdGlsbCBjYXVzZSB0aGVzZSBtZXRob2RzIHRvIHJldHVybiBudWxsIG9yCisgICAgICogZW1wdHkgbGlzdHMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBCb29sZWFuIGlzSW1wbGVtZW50ZWQoKSB7CisgICAgICAgIElCaW5kZXIgYiA9IFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoQ29udGV4dC5MT0NBVElPTl9TRVJWSUNFKTsKKyAgICAgICAgSUxvY2F0aW9uTWFuYWdlciBsbSA9IElMb2NhdGlvbk1hbmFnZXIuU3R1Yi5hc0ludGVyZmFjZShiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBsbS5nZW9jb2RlcklzSW1wbGVtZW50ZWQoKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy5lKFRBRywgImlzSW1wbGVtZW50ZWQ6IGdvdCBSZW1vdGVFeGNlcHRpb24iLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgogICAgICAqIENvbnN0cnVjdHMgYSBHZW9jb2RlciB3aG9zZSByZXNwb25zZXMgd2lsbCBiZSBsb2NhbGl6ZWQgZm9yIHRoZQogICAgICAqIGdpdmVuIExvY2FsZS4KICAgICAgKgpkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dlb2NvZGVyUGFyYW1zLmphdmEgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR2VvY29kZXJQYXJhbXMuamF2YQppbmRleCAxNzRmZTNlLi44YjhlNjNiIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR2VvY29kZXJQYXJhbXMuamF2YQorKysgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR2VvY29kZXJQYXJhbXMuamF2YQpAQCAtMjksOCArMjksNiBAQAogICogYXMgd2VsbCBhcyB0aGUgR2VvY29kZXIgY2xpZW50J3MgcGFja2FnZSBuYW1lIGZvciBnZW9jb2RlciBzZXJ2ZXIKICAqIGxvZ2dpbmcuICBUaGlzIGluZm9ybWF0aW9uIGlzIGtlcHQgaW4gYSBzZXBhcmF0ZSBjbGFzcyB0byBhbGxvdyBmb3IKICAqIGZ1dHVyZSBleHBhbnNpb24gb2YgdGhlIElHZW9jb2RlUHJvdmlkZXIgaW50ZXJmYWNlLgotICoKLSAqIEBoaWRlCiAgKi8KIHB1YmxpYyBjbGFzcyBHZW9jb2RlclBhcmFtcyBpbXBsZW1lbnRzIFBhcmNlbGFibGUgewogICAgIHByaXZhdGUgTG9jYWxlIG1Mb2NhbGU7CmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR3BzU3RhdHVzLmphdmEgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR3BzU3RhdHVzLmphdmEKaW5kZXggY2U2OWFjMS4uNGFmNTVhNiAxMDA2NDQKLS0tIGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dwc1N0YXR1cy5qYXZhCisrKyBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9HcHNTdGF0dXMuamF2YQpAQCAtMTUwLDE1ICsxNTAsMTcgQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHN2Q291bnQ7IGkrKykgewogICAgICAgICAgICAgaW50IHBybiA9IHBybnNbaV0gLSAxOwogICAgICAgICAgICAgaW50IHByblNoaWZ0ID0gKDEgPDwgcHJuKTsKLSAgICAgICAgICAgIEdwc1NhdGVsbGl0ZSBzYXRlbGxpdGUgPSBtU2F0ZWxsaXRlc1twcm5dOwotCi0gICAgICAgICAgICBzYXRlbGxpdGUubVZhbGlkID0gdHJ1ZTsKLSAgICAgICAgICAgIHNhdGVsbGl0ZS5tU25yID0gc25yc1tpXTsKLSAgICAgICAgICAgIHNhdGVsbGl0ZS5tRWxldmF0aW9uID0gZWxldmF0aW9uc1tpXTsKLSAgICAgICAgICAgIHNhdGVsbGl0ZS5tQXppbXV0aCA9IGF6aW11dGhzW2ldOwotICAgICAgICAgICAgc2F0ZWxsaXRlLm1IYXNFcGhlbWVyaXMgPSAoKGVwaGVtZXJpc01hc2sgJiBwcm5TaGlmdCkgIT0gMCk7Ci0gICAgICAgICAgICBzYXRlbGxpdGUubUhhc0FsbWFuYWMgPSAoKGFsbWFuYWNNYXNrICYgcHJuU2hpZnQpICE9IDApOwotICAgICAgICAgICAgc2F0ZWxsaXRlLm1Vc2VkSW5GaXggPSAoKHVzZWRJbkZpeE1hc2sgJiBwcm5TaGlmdCkgIT0gMCk7CisgICAgICAgICAgICBpZiAocHJuID49IDAgJiYgcHJuIDwgbVNhdGVsbGl0ZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgR3BzU2F0ZWxsaXRlIHNhdGVsbGl0ZSA9IG1TYXRlbGxpdGVzW3Bybl07CisgICAgCisgICAgICAgICAgICAgICAgc2F0ZWxsaXRlLm1WYWxpZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2F0ZWxsaXRlLm1TbnIgPSBzbnJzW2ldOworICAgICAgICAgICAgICAgIHNhdGVsbGl0ZS5tRWxldmF0aW9uID0gZWxldmF0aW9uc1tpXTsKKyAgICAgICAgICAgICAgICBzYXRlbGxpdGUubUF6aW11dGggPSBhemltdXRoc1tpXTsKKyAgICAgICAgICAgICAgICBzYXRlbGxpdGUubUhhc0VwaGVtZXJpcyA9ICgoZXBoZW1lcmlzTWFzayAmIHByblNoaWZ0KSAhPSAwKTsKKyAgICAgICAgICAgICAgICBzYXRlbGxpdGUubUhhc0FsbWFuYWMgPSAoKGFsbWFuYWNNYXNrICYgcHJuU2hpZnQpICE9IDApOworICAgICAgICAgICAgICAgIHNhdGVsbGl0ZS5tVXNlZEluRml4ID0gKCh1c2VkSW5GaXhNYXNrICYgcHJuU2hpZnQpICE9IDApOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uTWFuYWdlci5haWRsIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0lMb2NhdGlvbk1hbmFnZXIuYWlkbAppbmRleCAyYzAzOTllLi4zMmQ0YjI3IDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uTWFuYWdlci5haWRsCisrKyBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9JTG9jYXRpb25NYW5hZ2VyLmFpZGwKQEAgLTE4LDYgKzE4LDcgQEAKIAogaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlclBhcmFtczsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklHZW9jb2RlUHJvdmlkZXI7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR3BzU3RhdHVzTGlzdGVuZXI7CkBAIC0zMiwxMyArMzMsMTUgQEAKICAqLwogaW50ZXJmYWNlIElMb2NhdGlvbk1hbmFnZXIKIHsKLSAgICBMaXN0IGdldEFsbFByb3ZpZGVycygpOwotICAgIExpc3QgZ2V0UHJvdmlkZXJzKGJvb2xlYW4gZW5hYmxlZE9ubHkpOworICAgIExpc3Q8U3RyaW5nPiBnZXRBbGxQcm92aWRlcnMoKTsKKyAgICBMaXN0PFN0cmluZz4gZ2V0UHJvdmlkZXJzKGluIENyaXRlcmlhIGNyaXRlcmlhLCBib29sZWFuIGVuYWJsZWRPbmx5KTsKKyAgICBTdHJpbmcgZ2V0QmVzdFByb3ZpZGVyKGluIENyaXRlcmlhIGNyaXRlcmlhLCBib29sZWFuIGVuYWJsZWRPbmx5KTsKKyAgICBib29sZWFuIHByb3ZpZGVyTWVldHNDcml0ZXJpYShTdHJpbmcgcHJvdmlkZXIsIGluIENyaXRlcmlhIGNyaXRlcmlhKTsKIAotICAgIHZvaWQgcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhTdHJpbmcgcHJvdmlkZXIsIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsCi0gICAgICAgIGluIElMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKLSAgICB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNQSShTdHJpbmcgcHJvdmlkZXIsIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsCi0gICAgICAgIGluIFBlbmRpbmdJbnRlbnQgaW50ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXMoU3RyaW5nIHByb3ZpZGVyLCBpbiBDcml0ZXJpYSBjcml0ZXJpYSwgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwKKyAgICAgICAgYm9vbGVhbiBzaW5nbGVTaG90LCBpbiBJTG9jYXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7CisgICAgdm9pZCByZXF1ZXN0TG9jYXRpb25VcGRhdGVzUEkoU3RyaW5nIHByb3ZpZGVyLCBpbiBDcml0ZXJpYSBjcml0ZXJpYSwgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwKKyAgICAgICAgYm9vbGVhbiBzaW5nbGVTaG90LCBpbiBQZW5kaW5nSW50ZW50IGludGVudCk7CiAgICAgdm9pZCByZW1vdmVVcGRhdGVzKGluIElMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKICAgICB2b2lkIHJlbW92ZVVwZGF0ZXNQSShpbiBQZW5kaW5nSW50ZW50IGludGVudCk7CiAKQEAgLTY0LDYgKzY3LDcgQEAKICAgICAvLyBpdCBuZWVkIG5vdCBiZSBzaGFyZWQgd2l0aCBvdGhlciBwcm92aWRlcnMuCiAgICAgdm9pZCByZXBvcnRMb2NhdGlvbihpbiBMb2NhdGlvbiBsb2NhdGlvbiwgYm9vbGVhbiBwYXNzaXZlKTsKIAorICAgIGJvb2xlYW4gZ2VvY29kZXJJc0ltcGxlbWVudGVkKCk7CiAgICAgU3RyaW5nIGdldEZyb21Mb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGludCBtYXhSZXN1bHRzLAogICAgICAgICBpbiBHZW9jb2RlclBhcmFtcyBwYXJhbXMsIG91dCBMaXN0PEFkZHJlc3M+IGFkZHJzKTsKICAgICBTdHJpbmcgZ2V0RnJvbUxvY2F0aW9uTmFtZShTdHJpbmcgbG9jYXRpb25OYW1lLApkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0lMb2NhdGlvblByb3ZpZGVyLmFpZGwgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uUHJvdmlkZXIuYWlkbAppbmRleCA5N2IyODNjLi4yYjk3ODJhIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uUHJvdmlkZXIuYWlkbAorKysgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uUHJvdmlkZXIuYWlkbApAQCAtMTYsNiArMTYsNyBAQAogCiBwYWNrYWdlIGFuZHJvaWQubG9jYXRpb247CiAKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOwogaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247CiBpbXBvcnQgYW5kcm9pZC5uZXQuTmV0d29ya0luZm87CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CkBAIC0zNCw2ICszNSw3IEBACiAgICAgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCk7CiAgICAgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcoKTsKICAgICBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpOworICAgIGJvb2xlYW4gbWVldHNDcml0ZXJpYShpbiBDcml0ZXJpYSBjcml0ZXJpYSk7CiAgICAgaW50IGdldEFjY3VyYWN5KCk7CiAgICAgdm9pZCBlbmFibGUoKTsKICAgICB2b2lkIGRpc2FibGUoKTsKZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9Mb2NhdGlvbk1hbmFnZXIuamF2YSBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9Mb2NhdGlvbk1hbmFnZXIuamF2YQppbmRleCA5ZTRhMTZiLi43ZDA3ZTRiIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vTG9jYXRpb25NYW5hZ2VyLmphdmEKKysrIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0xvY2F0aW9uTWFuYWdlci5qYXZhCkBAIC0yOCw4ICsyOCw2IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uRHVtbXlMb2NhdGlvblByb3ZpZGVyOwogCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiAKQEAgLTExNyw2ICsxMTUsMzcgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfTE9DQVRJT05fQ0hBTkdFRCA9ICJsb2NhdGlvbiI7CiAKKyAgICAvKioKKyAgICAgKiBCcm9hZGNhc3QgaW50ZW50IGFjdGlvbiBpbmRpY2F0aW5nIHRoYXQgdGhlIEdQUyBoYXMgZWl0aGVyIGJlZW4KKyAgICAgKiBlbmFibGVkIG9yIGRpc2FibGVkLiBBbiBpbnRlbnQgZXh0cmEgcHJvdmlkZXMgdGhpcyBzdGF0ZSBhcyBhIGJvb2xlYW4sCisgICAgICogd2hlcmUge0Bjb2RlIHRydWV9IG1lYW5zIGVuYWJsZWQuCisgICAgICogQHNlZSAjRVhUUkFfR1BTX0VOQUJMRUQKKyAgICAgKgorICAgICAqIHtAaGlkZX0KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBHUFNfRU5BQkxFRF9DSEFOR0VfQUNUSU9OID0KKyAgICAgICAgImFuZHJvaWQubG9jYXRpb24uR1BTX0VOQUJMRURfQ0hBTkdFIjsKKworICAgIC8qKgorICAgICAqIEJyb2FkY2FzdCBpbnRlbnQgYWN0aW9uIGluZGljYXRpbmcgdGhhdCB0aGUgR1BTIGhhcyBlaXRoZXIgc3RhcnRlZCBvcgorICAgICAqIHN0b3BwZWQgcmVjZWl2aW5nIEdQUyBmaXhlcy4gQW4gaW50ZW50IGV4dHJhIHByb3ZpZGVzIHRoaXMgc3RhdGUgYXMgYQorICAgICAqIGJvb2xlYW4sIHdoZXJlIHtAY29kZSB0cnVlfSBtZWFucyB0aGF0IHRoZSBHUFMgaXMgYWN0aXZlbHkgcmVjZWl2aW5nIGZpeGVzLgorICAgICAqIEBzZWUgI0VYVFJBX0dQU19FTkFCTEVECisgICAgICoKKyAgICAgKiB7QGhpZGV9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1BTX0ZJWF9DSEFOR0VfQUNUSU9OID0KKyAgICAgICAgImFuZHJvaWQubG9jYXRpb24uR1BTX0ZJWF9DSEFOR0UiOworCisgICAgLyoqCisgICAgICogVGhlIGxvb2t1cCBrZXkgZm9yIGEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB3aGV0aGVyIEdQUyBpcyBlbmFibGVkIG9yCisgICAgICogZGlzYWJsZWQuIHtAY29kZSB0cnVlfSBtZWFucyBHUFMgaXMgZW5hYmxlZC4gUmV0cmlldmUgaXQgd2l0aAorICAgICAqIHtAbGluayBhbmRyb2lkLmNvbnRlbnQuSW50ZW50I2dldEJvb2xlYW5FeHRyYShTdHJpbmcsYm9vbGVhbil9LgorICAgICAqCisgICAgICoge0BoaWRlfQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYVFJBX0dQU19FTkFCTEVEID0gImVuYWJsZWQiOworCiAgICAgLy8gTWFwIGZyb20gTG9jYXRpb25MaXN0ZW5lcnMgdG8gdGhlaXIgYXNzb2NpYXRlZCBMaXN0ZW5lclRyYW5zcG9ydCBvYmplY3RzCiAgICAgcHJpdmF0ZSBIYXNoTWFwPExvY2F0aW9uTGlzdGVuZXIsTGlzdGVuZXJUcmFuc3BvcnQ+IG1MaXN0ZW5lcnMgPQogICAgICAgICBuZXcgSGFzaE1hcDxMb2NhdGlvbkxpc3RlbmVyLExpc3RlbmVyVHJhbnNwb3J0PigpOwpAQCAtMjE4LDE1ICsyNDcsMTIgQEAKICAgICAgKiBmYWN0b3J5IENvbnRleHQuZ2V0U3lzdGVtU2VydmljZS4KICAgICAgKi8KICAgICBwdWJsaWMgTG9jYXRpb25NYW5hZ2VyKElMb2NhdGlvbk1hbmFnZXIgc2VydmljZSkgewotICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgIExvZy5kKFRBRywgIkNvbnN0cnVjdG9yOiBzZXJ2aWNlID0gIiArIHNlcnZpY2UpOwotICAgICAgICB9CiAgICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKICAgICB9CiAKICAgICBwcml2YXRlIExvY2F0aW9uUHJvdmlkZXIgY3JlYXRlUHJvdmlkZXIoU3RyaW5nIG5hbWUsIEJ1bmRsZSBpbmZvKSB7CiAgICAgICAgIER1bW15TG9jYXRpb25Qcm92aWRlciBwcm92aWRlciA9Ci0gICAgICAgICAgICBuZXcgRHVtbXlMb2NhdGlvblByb3ZpZGVyKG5hbWUpOworICAgICAgICAgICAgbmV3IER1bW15TG9jYXRpb25Qcm92aWRlcihuYW1lLCBtU2VydmljZSk7CiAgICAgICAgIHByb3ZpZGVyLnNldFJlcXVpcmVzTmV0d29yayhpbmZvLmdldEJvb2xlYW4oIm5ldHdvcmsiKSk7CiAgICAgICAgIHByb3ZpZGVyLnNldFJlcXVpcmVzU2F0ZWxsaXRlKGluZm8uZ2V0Qm9vbGVhbigic2F0ZWxsaXRlIikpOwogICAgICAgICBwcm92aWRlci5zZXRSZXF1aXJlc0NlbGwoaW5mby5nZXRCb29sZWFuKCJjZWxsIikpOwpAQCAtMjY4LDcgKzI5NCw3IEBACiAgICAgICovCiAgICAgcHVibGljIExpc3Q8U3RyaW5nPiBnZXRQcm92aWRlcnMoYm9vbGVhbiBlbmFibGVkT25seSkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmdldFByb3ZpZGVycyhlbmFibGVkT25seSk7CisgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuZ2V0UHJvdmlkZXJzKG51bGwsIGVuYWJsZWRPbmx5KTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICBMb2cuZShUQUcsICJnZXRQcm92aWRlcnM6IFJlbW90ZUV4Y2VwdGlvbiIsIGV4KTsKICAgICAgICAgfQpAQCAtMzEzLDE3MyArMzM5LDE1IEBACiAgICAgICogQHJldHVybiBsaXN0IG9mIFN0cmluZ3MgY29udGFpbmluZyBuYW1lcyBvZiB0aGUgcHJvdmlkZXJzCiAgICAgICovCiAgICAgcHVibGljIExpc3Q8U3RyaW5nPiBnZXRQcm92aWRlcnMoQ3JpdGVyaWEgY3JpdGVyaWEsIGJvb2xlYW4gZW5hYmxlZE9ubHkpIHsKLSAgICAgICAgTGlzdDxTdHJpbmc+IGdvb2RQcm92aWRlcnMgPSBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsKLSAgICAgICAgTGlzdDxTdHJpbmc+IHByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhlbmFibGVkT25seSk7Ci0gICAgICAgIGZvciAoU3RyaW5nIHByb3ZpZGVyTmFtZSA6IHByb3ZpZGVycykgewotICAgICAgICAgICAgTG9jYXRpb25Qcm92aWRlciBwcm92aWRlciA9IGdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSk7Ci0gICAgICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCAmJiBwcm92aWRlci5tZWV0c0NyaXRlcmlhKGNyaXRlcmlhKSkgewotICAgICAgICAgICAgICAgIGlmIChnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBnb29kUHJvdmlkZXJzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvb2RQcm92aWRlcnMuYWRkKHByb3ZpZGVyTmFtZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChjcml0ZXJpYSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjcml0ZXJpYT09bnVsbCIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBnb29kUHJvdmlkZXJzOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIG5leHQgbG9vc2VyIHBvd2VyIHJlcXVpcmVtZW50LCBpbiB0aGUgc2VxdWVuY2U6Ci0gICAgICoKLSAgICAgKiBQT1dFUl9MT1cgLT4gUE9XRVJfTUVESVVNIC0+IFBPV0VSX0hJR0ggLT4gTk9fUkVRVUlSRU1FTlQKLSAgICAgKi8KLSAgICBwcml2YXRlIGludCBuZXh0UG93ZXIoaW50IHBvd2VyKSB7Ci0gICAgICAgIHN3aXRjaCAocG93ZXIpIHsKLSAgICAgICAgY2FzZSBDcml0ZXJpYS5QT1dFUl9MT1c6Ci0gICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuUE9XRVJfTUVESVVNOwotICAgICAgICBjYXNlIENyaXRlcmlhLlBPV0VSX01FRElVTToKLSAgICAgICAgICAgIHJldHVybiBDcml0ZXJpYS5QT1dFUl9ISUdIOwotICAgICAgICBjYXNlIENyaXRlcmlhLlBPV0VSX0hJR0g6Ci0gICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7Ci0gICAgICAgIGNhc2UgQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiZ2V0UHJvdmlkZXJzOiBSZW1vdGVFeGNlcHRpb24iLCBleCk7CiAgICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGxvb3NlciBhY2N1cmFjeSByZXF1aXJlbWVudCwgaW4gdGhlIHNlcXVlbmNlOgotICAgICAqCi0gICAgICogQUNDVVJBQ1lfRklORSAtPiBBQ0NVUkFDWV9BUFBST1hJTUFURS0+IE5PX1JFUVVJUkVNRU5UCi0gICAgICovCi0gICAgcHJpdmF0ZSBpbnQgbmV4dEFjY3VyYWN5KGludCBhY2N1cmFjeSkgewotICAgICAgICBpZiAoYWNjdXJhY3kgPT0gQ3JpdGVyaWEuQUNDVVJBQ1lfRklORSkgewotICAgICAgICAgICAgcmV0dXJuIENyaXRlcmlhLkFDQ1VSQUNZX0NPQVJTRTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgYWJzdHJhY3QgY2xhc3MgTHBDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxMb2NhdGlvblByb3ZpZGVyPiB7Ci0KLSAgICAgICAgcHVibGljIGludCBjb21wYXJlKGludCBhMSwgaW50IGEyKSB7Ci0gICAgICAgICAgICBpZiAoYTEgPCBhMikgewotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYTEgPiBhMikgewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShmbG9hdCBhMSwgZmxvYXQgYTIpIHsKLSAgICAgICAgICAgIGlmIChhMSA8IGEyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfSBlbHNlIGlmIChhMSA+IGEyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBMcFBvd2VyQ29tcGFyYXRvciBleHRlbmRzIExwQ29tcGFyYXRvciB7Ci0gICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShMb2NhdGlvblByb3ZpZGVyIGwxLCBMb2NhdGlvblByb3ZpZGVyIGwyKSB7Ci0gICAgICAgICAgICBpbnQgYTEgPSBsMS5nZXRQb3dlclJlcXVpcmVtZW50KCk7Ci0gICAgICAgICAgICBpbnQgYTIgPSBsMi5nZXRQb3dlclJlcXVpcmVtZW50KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGFyZShhMSwgYTIpOyAvLyBTbWFsbGVyIGlzIGJldHRlcgotICAgICAgICAgfQotCi0gICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoTG9jYXRpb25Qcm92aWRlciBsMSwgTG9jYXRpb25Qcm92aWRlciBsMikgewotICAgICAgICAgICAgIGludCBhMSA9IGwxLmdldFBvd2VyUmVxdWlyZW1lbnQoKTsKLSAgICAgICAgICAgICBpbnQgYTIgPSBsMi5nZXRQb3dlclJlcXVpcmVtZW50KCk7Ci0gICAgICAgICAgICAgcmV0dXJuIGExID09IGEyOwotICAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgY2xhc3MgTHBBY2N1cmFjeUNvbXBhcmF0b3IgZXh0ZW5kcyBMcENvbXBhcmF0b3IgewotICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoTG9jYXRpb25Qcm92aWRlciBsMSwgTG9jYXRpb25Qcm92aWRlciBsMikgewotICAgICAgICAgICAgaW50IGExID0gbDEuZ2V0QWNjdXJhY3koKTsKLSAgICAgICAgICAgIGludCBhMiA9IGwyLmdldEFjY3VyYWN5KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGFyZShhMSwgYTIpOyAvLyBTbWFsbGVyIGlzIGJldHRlcgotICAgICAgICAgfQotCi0gICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoTG9jYXRpb25Qcm92aWRlciBsMSwgTG9jYXRpb25Qcm92aWRlciBsMikgewotICAgICAgICAgICAgIGludCBhMSA9IGwxLmdldEFjY3VyYWN5KCk7Ci0gICAgICAgICAgICAgaW50IGEyID0gbDIuZ2V0QWNjdXJhY3koKTsKLSAgICAgICAgICAgICByZXR1cm4gYTEgPT0gYTI7Ci0gICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBMcENhcGFiaWxpdHlDb21wYXJhdG9yIGV4dGVuZHMgTHBDb21wYXJhdG9yIHsKLQotICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUxUSVRVREVfU0NPUkUgPSA0OwotICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQkVBUklOR19TQ09SRSA9IDQ7Ci0gICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTUEVFRF9TQ09SRSA9IDQ7Ci0KLSAgICAgICAgcHJpdmF0ZSBpbnQgc2NvcmUoTG9jYXRpb25Qcm92aWRlciBwKSB7Ci0gICAgICAgICAgICByZXR1cm4gKHAuc3VwcG9ydHNBbHRpdHVkZSgpID8gQUxUSVRVREVfU0NPUkUgOiAwKSArCi0gICAgICAgICAgICAgICAgKHAuc3VwcG9ydHNCZWFyaW5nKCkgPyBCRUFSSU5HX1NDT1JFIDogMCkgKwotICAgICAgICAgICAgICAgIChwLnN1cHBvcnRzU3BlZWQoKSA/IFNQRUVEX1NDT1JFIDogMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoTG9jYXRpb25Qcm92aWRlciBsMSwgTG9jYXRpb25Qcm92aWRlciBsMikgewotICAgICAgICAgICAgaW50IGExID0gc2NvcmUobDEpOwotICAgICAgICAgICAgaW50IGEyID0gc2NvcmUobDIpOwotICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmUoLWExLCAtYTIpOyAvLyBCaWdnZXIgaXMgYmV0dGVyCi0gICAgICAgICB9Ci0KLSAgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhMb2NhdGlvblByb3ZpZGVyIGwxLCBMb2NhdGlvblByb3ZpZGVyIGwyKSB7Ci0gICAgICAgICAgICAgaW50IGExID0gc2NvcmUobDEpOwotICAgICAgICAgICAgIGludCBhMiA9IHNjb3JlKGwyKTsKLSAgICAgICAgICAgICByZXR1cm4gYTEgPT0gYTI7Ci0gICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBMb2NhdGlvblByb3ZpZGVyIGJlc3QoTGlzdDxTdHJpbmc+IHByb3ZpZGVyTmFtZXMpIHsKLSAgICAgICAgTGlzdDxMb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcnMgPSBuZXcgQXJyYXlMaXN0PExvY2F0aW9uUHJvdmlkZXI+KHByb3ZpZGVyTmFtZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChTdHJpbmcgbmFtZSA6IHByb3ZpZGVyTmFtZXMpIHsKLSAgICAgICAgICAgIHByb3ZpZGVycy5hZGQoZ2V0UHJvdmlkZXIobmFtZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHByb3ZpZGVycy5zaXplKCkgPCAyKSB7Ci0gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLmdldCgwKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpcnN0LCBzb3J0IGJ5IHBvd2VyIHJlcXVpcmVtZW50Ci0gICAgICAgIENvbGxlY3Rpb25zLnNvcnQocHJvdmlkZXJzLCBuZXcgTHBQb3dlckNvbXBhcmF0b3IoKSk7Ci0gICAgICAgIGludCBwb3dlciA9IHByb3ZpZGVycy5nZXQoMCkuZ2V0UG93ZXJSZXF1aXJlbWVudCgpOwotICAgICAgICBpZiAocG93ZXIgPCBwcm92aWRlcnMuZ2V0KDEpLmdldFBvd2VyUmVxdWlyZW1lbnQoKSkgewotICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5nZXQoMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaWR4LCBzaXplOwotCi0gICAgICAgIExpc3Q8TG9jYXRpb25Qcm92aWRlcj4gdG1wID0gbmV3IEFycmF5TGlzdDxMb2NhdGlvblByb3ZpZGVyPigpOwotICAgICAgICBpZHggPSAwOwotICAgICAgICBzaXplID0gcHJvdmlkZXJzLnNpemUoKTsKLSAgICAgICAgd2hpbGUgKChpZHggPCBzaXplKSAmJiAocHJvdmlkZXJzLmdldChpZHgpLmdldFBvd2VyUmVxdWlyZW1lbnQoKSA9PSBwb3dlcikpIHsKLSAgICAgICAgICAgIHRtcC5hZGQocHJvdmlkZXJzLmdldChpZHgpKTsKLSAgICAgICAgICAgIGlkeCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTmV4dCwgc29ydCBieSBhY2N1cmFjeQotICAgICAgICBDb2xsZWN0aW9ucy5zb3J0KHRtcCwgbmV3IExwQWNjdXJhY3lDb21wYXJhdG9yKCkpOwotICAgICAgICBpbnQgYWNjID0gdG1wLmdldCgwKS5nZXRBY2N1cmFjeSgpOwotICAgICAgICBpZiAoYWNjIDwgdG1wLmdldCgxKS5nZXRBY2N1cmFjeSgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gdG1wLmdldCgwKTsKLSAgICAgICAgfQotCi0gICAgICAgIExpc3Q8TG9jYXRpb25Qcm92aWRlcj4gdG1wMiA9IG5ldyBBcnJheUxpc3Q8TG9jYXRpb25Qcm92aWRlcj4oKTsKLSAgICAgICAgaWR4ID0gMDsKLSAgICAgICAgc2l6ZSA9IHRtcC5zaXplKCk7Ci0gICAgICAgIHdoaWxlICgoaWR4IDwgc2l6ZSkgJiYgKHRtcC5nZXQoaWR4KS5nZXRBY2N1cmFjeSgpID09IGFjYykpIHsKLSAgICAgICAgICAgIHRtcDIuYWRkKHRtcC5nZXQoaWR4KSk7Ci0gICAgICAgICAgICBpZHgrKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbmFsbHksIHNvcnQgYnkgY2FwYWJpbGl0eSAic2NvcmUiCi0gICAgICAgIENvbGxlY3Rpb25zLnNvcnQodG1wMiwgbmV3IExwQ2FwYWJpbGl0eUNvbXBhcmF0b3IoKSk7Ci0gICAgICAgIHJldHVybiB0bXAyLmdldCgwKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCiAgICAgLyoqCkBAIC01MDUsNzIgKzM3MywxNCBAQAogICAgICAqIEByZXR1cm4gbmFtZSBvZiB0aGUgcHJvdmlkZXIgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIHJlcXVpcmVtZW50cwogICAgICAqLwogICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVzdFByb3ZpZGVyKENyaXRlcmlhIGNyaXRlcmlhLCBib29sZWFuIGVuYWJsZWRPbmx5KSB7Ci0gICAgICAgIExpc3Q8U3RyaW5nPiBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7Ci0gICAgICAgIGlmICghZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpLmdldE5hbWUoKTsKKyAgICAgICAgaWYgKGNyaXRlcmlhID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImNyaXRlcmlhPT1udWxsIik7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgY3JpdGVyaWEgdGhhdCB3ZSBjYW4gbW9kaWZ5Ci0gICAgICAgIGNyaXRlcmlhID0gbmV3IENyaXRlcmlhKGNyaXRlcmlhKTsKLQotICAgICAgICAvLyBMb29zZW4gcG93ZXIgcmVxdWlyZW1lbnQKLSAgICAgICAgaW50IHBvd2VyID0gY3JpdGVyaWEuZ2V0UG93ZXJSZXF1aXJlbWVudCgpOwotICAgICAgICB3aGlsZSAoZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkgJiYgKHBvd2VyICE9IENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UKSkgewotICAgICAgICAgICAgcG93ZXIgPSBuZXh0UG93ZXIocG93ZXIpOwotICAgICAgICAgICAgY3JpdGVyaWEuc2V0UG93ZXJSZXF1aXJlbWVudChwb3dlcik7Ci0gICAgICAgICAgICBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuZ2V0QmVzdFByb3ZpZGVyKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiZ2V0QmVzdFByb3ZpZGVyOiBSZW1vdGVFeGNlcHRpb24iLCBleCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOwotICAgICAgICB9Ci0KLS8vICAgICAgICAvLyBMb29zZW4gcmVzcG9uc2UgdGltZSByZXF1aXJlbWVudAotLy8gICAgICAgIGludCByZXNwb25zZVRpbWUgPSBjcml0ZXJpYS5nZXRQcmVmZXJyZWRSZXNwb25zZVRpbWUoKTsKLS8vICAgICAgICB3aGlsZSAoZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkgJiYKLS8vICAgICAgICAgICAgKHJlc3BvbnNlVGltZSAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkpIHsKLS8vICAgICAgICAgICAgcmVzcG9uc2VUaW1lICs9IDEwMDA7Ci0vLyAgICAgICAgICAgIGlmIChyZXNwb25zZVRpbWUgPiA2MDAwMCkgewotLy8gICAgICAgICAgICAgICAgcmVzcG9uc2VUaW1lID0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7Ci0vLyAgICAgICAgICAgIH0KLS8vICAgICAgICAgICAgY3JpdGVyaWEuc2V0UHJlZmVycmVkUmVzcG9uc2VUaW1lKHJlc3BvbnNlVGltZSk7Ci0vLyAgICAgICAgICAgIGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEpOwotLy8gICAgICAgIH0KLS8vICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7Ci0vLyAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpOwotLy8gICAgICAgIH0KLQotICAgICAgICAvLyBMb29zZW4gYWNjdXJhY3kgcmVxdWlyZW1lbnQKLSAgICAgICAgaW50IGFjY3VyYWN5ID0gY3JpdGVyaWEuZ2V0QWNjdXJhY3koKTsKLSAgICAgICAgd2hpbGUgKGdvb2RQcm92aWRlcnMuaXNFbXB0eSgpICYmIChhY2N1cmFjeSAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkpIHsKLSAgICAgICAgICAgIGFjY3VyYWN5ID0gbmV4dEFjY3VyYWN5KGFjY3VyYWN5KTsKLSAgICAgICAgICAgIGNyaXRlcmlhLnNldEFjY3VyYWN5KGFjY3VyYWN5KTsKLSAgICAgICAgICAgIGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEsIGVuYWJsZWRPbmx5KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmVzdChnb29kUHJvdmlkZXJzKS5nZXROYW1lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgYmVhcmluZyByZXF1aXJlbWVudAotICAgICAgICBjcml0ZXJpYS5zZXRCZWFyaW5nUmVxdWlyZWQoZmFsc2UpOwotICAgICAgICBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7Ci0gICAgICAgIGlmICghZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpLmdldE5hbWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlbW92ZSBzcGVlZCByZXF1aXJlbWVudAotICAgICAgICBjcml0ZXJpYS5zZXRTcGVlZFJlcXVpcmVkKGZhbHNlKTsKLSAgICAgICAgZ29vZFByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhjcml0ZXJpYSwgZW5hYmxlZE9ubHkpOwotICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmVzdChnb29kUHJvdmlkZXJzKS5nZXROYW1lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgYWx0aXR1ZGUgcmVxdWlyZW1lbnQKLSAgICAgICAgY3JpdGVyaWEuc2V0QWx0aXR1ZGVSZXF1aXJlZChmYWxzZSk7Ci0gICAgICAgIGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEsIGVuYWJsZWRPbmx5KTsKLSAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOwotICAgICAgICB9Ci0KICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCkBAIC02MjcsNyArNDM3LDcgQEAKICAgICAgICAgaWYgKGxpc3RlbmVyID09IG51bGwpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImxpc3RlbmVyPT1udWxsIik7CiAgICAgICAgIH0KLSAgICAgICAgX3JlcXVlc3RMb2NhdGlvblVwZGF0ZXMocHJvdmlkZXIsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKHByb3ZpZGVyLCBudWxsLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZmFsc2UsIGxpc3RlbmVyLCBudWxsKTsKICAgICB9CiAKICAgICAvKioKQEAgLTY3MCwxMCArNDgwLDEwIEBACiAgICAgICogZWFjaCBsb2NhdGlvbiB1cGRhdGUKICAgICAgKiBAcGFyYW0gbG9vcGVyIGEgTG9vcGVyIG9iamVjdCB3aG9zZSBtZXNzYWdlIHF1ZXVlIHdpbGwgYmUgdXNlZCB0bwogICAgICAqIGltcGxlbWVudCB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqIElmIGxvb3BlciBpcyBudWxsIHRoZW4gdGhlIGNhbGxiYWNrcyB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICoKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBwcm92aWRlciBpcyBudWxsIG9yIGRvZXNuJ3QgZXhpc3QKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBsaXN0ZW5lciBpcyBudWxsCi0gICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgbG9vcGVyIGlzIG51bGwKICAgICAgKiBAdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uIGlmIG5vIHN1aXRhYmxlIHBlcm1pc3Npb24gaXMgcHJlc2VudCBmb3IgdGhlIHByb3ZpZGVyLgogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXMoU3RyaW5nIHByb3ZpZGVyLApAQCAtNjg1LDE1ICs0OTUsNzAgQEAKICAgICAgICAgaWYgKGxpc3RlbmVyID09IG51bGwpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImxpc3RlbmVyPT1udWxsIik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxvb3BlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsb29wZXI9PW51bGwiKTsKLSAgICAgICAgfQotICAgICAgICBfcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIGxpc3RlbmVyLCBsb29wZXIpOworICAgICAgICBfcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgbnVsbCwgbWluVGltZSwgbWluRGlzdGFuY2UsIGZhbHNlLCBsaXN0ZW5lciwgbG9vcGVyKTsKICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgX3JlcXVlc3RMb2NhdGlvblVwZGF0ZXMoU3RyaW5nIHByb3ZpZGVyLAotICAgICAgICBsb25nIG1pblRpbWUsIGZsb2F0IG1pbkRpc3RhbmNlLCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICBMb29wZXIgbG9vcGVyKSB7CisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIGJlIG5vdGlmaWVkIHBlcmlvZGljYWxseSBiYXNlZCBvbgorICAgICAqIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuICBQZXJpb2RpY2FsbHksIHRoZSBzdXBwbGllZCBMb2NhdGlvbkxpc3RlbmVyIHdpbGwKKyAgICAgKiBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCBMb2NhdGlvbiBvciB3aXRoIHN0YXR1cyB1cGRhdGVzLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIDxwPiBJbiBjYXNlIHRoZSBwcm92aWRlciBpcyBkaXNhYmxlZCBieSB0aGUgdXNlciwgdXBkYXRlcyB3aWxsIHN0b3AsCisgICAgICogYW5kIHRoZSB7QGxpbmsgTG9jYXRpb25MaXN0ZW5lciNvblByb3ZpZGVyRGlzYWJsZWQoU3RyaW5nKX0KKyAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuIEFzIHNvb24gYXMgdGhlIHByb3ZpZGVyIGlzIGVuYWJsZWQgYWdhaW4sCisgICAgICogdGhlIHtAbGluayBMb2NhdGlvbkxpc3RlbmVyI29uUHJvdmlkZXJFbmFibGVkKFN0cmluZyl9IG1ldGhvZCB3aWxsCisgICAgICogYmUgY2FsbGVkIGFuZCBsb2NhdGlvbiB1cGRhdGVzIHdpbGwgc3RhcnQgYWdhaW4uCisgICAgICoKKyAgICAgKiA8cD4gVGhlIGZyZXF1ZW5jeSBvZiBub3RpZmljYXRpb24gbWF5IGJlIGNvbnRyb2xsZWQgdXNpbmcgdGhlCisgICAgICogbWluVGltZSBhbmQgbWluRGlzdGFuY2UgcGFyYW1ldGVycy4gSWYgbWluVGltZSBpcyBncmVhdGVyIHRoYW4gMCwKKyAgICAgKiB0aGUgTG9jYXRpb25NYW5hZ2VyIGNvdWxkIHBvdGVudGlhbGx5IHJlc3QgZm9yIG1pblRpbWUgbWlsbGlzZWNvbmRzCisgICAgICogYmV0d2VlbiBsb2NhdGlvbiB1cGRhdGVzIHRvIGNvbnNlcnZlIHBvd2VyLiBJZiBtaW5EaXN0YW5jZSBpcyBncmVhdGVyIHRoYW4gMCwKKyAgICAgKiBhIGxvY2F0aW9uIHdpbGwgb25seSBiZSBicm9hZGNhc3RlZCBpZiB0aGUgZGV2aWNlIG1vdmVzIGJ5IG1pbkRpc3RhbmNlIG1ldGVycy4KKyAgICAgKiBUbyBvYnRhaW4gbm90aWZpY2F0aW9ucyBhcyBmcmVxdWVudGx5IGFzIHBvc3NpYmxlLCBzZXQgYm90aCBwYXJhbWV0ZXJzIHRvIDAuCisgICAgICoKKyAgICAgKiA8cD4gQmFja2dyb3VuZCBzZXJ2aWNlcyBzaG91bGQgYmUgY2FyZWZ1bCBhYm91dCBzZXR0aW5nIGEgc3VmZmljaWVudGx5IGhpZ2gKKyAgICAgKiBtaW5UaW1lIHNvIHRoYXQgdGhlIGRldmljZSBkb2Vzbid0IGNvbnN1bWUgdG9vIG11Y2ggcG93ZXIgYnkga2VlcGluZyB0aGUKKyAgICAgKiBHUFMgb3Igd2lyZWxlc3MgcmFkaW9zIG9uIGFsbCB0aGUgdGltZS4gSW4gcGFydGljdWxhciwgdmFsdWVzIHVuZGVyIDYwMDAwbXMKKyAgICAgKiBhcmUgbm90IHJlY29tbWVuZGVkLgorICAgICAqCisgICAgICogPHA+IFRoZSBzdXBwbGllZCBMb29wZXIgaXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIGNhbGxiYWNrIG1lY2hhbmlzbS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtaW5UaW1lIHRoZSBtaW5pbXVtIHRpbWUgaW50ZXJ2YWwgZm9yIG5vdGlmaWNhdGlvbnMsIGluCisgICAgICogbWlsbGlzZWNvbmRzLiBUaGlzIGZpZWxkIGlzIG9ubHkgdXNlZCBhcyBhIGhpbnQgdG8gY29uc2VydmUgcG93ZXIsIGFuZCBhY3R1YWwKKyAgICAgKiB0aW1lIGJldHdlZW4gbG9jYXRpb24gdXBkYXRlcyBtYXkgYmUgZ3JlYXRlciBvciBsZXNzZXIgdGhhbiB0aGlzIHZhbHVlLgorICAgICAqIEBwYXJhbSBtaW5EaXN0YW5jZSB0aGUgbWluaW11bSBkaXN0YW5jZSBpbnRlcnZhbCBmb3Igbm90aWZpY2F0aW9ucywKKyAgICAgKiBpbiBtZXRlcnMKKyAgICAgKiBAcGFyYW0gY3JpdGVyaWEgY29udGFpbnMgcGFyYW1ldGVycyBmb3IgdGhlIGxvY2F0aW9uIG1hbmFnZXIgdG8gY2hvb3NlIHRoZQorICAgICAqIGFwcHJvcHJpYXRlIHByb3ZpZGVyIGFuZCBwYXJhbWV0ZXJzIHRvIGNvbXB1dGUgdGhlIGxvY2F0aW9uCisgICAgICogQHBhcmFtIGxpc3RlbmVyIGEgeyNsaW5rIExvY2F0aW9uTGlzdGVuZXJ9IHdob3NlCisgICAgICoge0BsaW5rIExvY2F0aW9uTGlzdGVuZXIjb25Mb2NhdGlvbkNoYW5nZWR9IG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmb3IKKyAgICAgKiBlYWNoIGxvY2F0aW9uIHVwZGF0ZQorICAgICAqIEBwYXJhbSBsb29wZXIgYSBMb29wZXIgb2JqZWN0IHdob3NlIG1lc3NhZ2UgcXVldWUgd2lsbCBiZSB1c2VkIHRvCisgICAgICogaW1wbGVtZW50IHRoZSBjYWxsYmFjayBtZWNoYW5pc20uCisgICAgICogSWYgbG9vcGVyIGlzIG51bGwgdGhlbiB0aGUgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGNyaXRlcmlhIGlzIG51bGwKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBsaXN0ZW5lciBpcyBudWxsCisgICAgICogQHRocm93cyBTZWN1cml0eUV4Y2VwdGlvbiBpZiBubyBzdWl0YWJsZSBwZXJtaXNzaW9uIGlzIHByZXNlbnQgdG8gYWNjZXNzCisgICAgICogdGhlIGxvY2F0aW9uIHNlcnZpY2VzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXMobG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwKKyAgICAgICAgICAgIENyaXRlcmlhIGNyaXRlcmlhLCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBMb29wZXIgbG9vcGVyKSB7CisgICAgICAgIGlmIChjcml0ZXJpYSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjcml0ZXJpYT09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0ZW5lcj09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKG51bGwsIGNyaXRlcmlhLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZmFsc2UsIGxpc3RlbmVyLCBsb29wZXIpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhTdHJpbmcgcHJvdmlkZXIsIENyaXRlcmlhIGNyaXRlcmlhLCBsb25nIG1pblRpbWUsCisgICAgICAgICAgICBmbG9hdCBtaW5EaXN0YW5jZSwgYm9vbGVhbiBzaW5nbGVTaG90LCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBMb29wZXIgbG9vcGVyKSB7CiAgICAgICAgIGlmIChtaW5UaW1lIDwgMEwpIHsKICAgICAgICAgICAgIG1pblRpbWUgPSAwTDsKICAgICAgICAgfQpAQCAtNzA4LDcgKzU3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IG5ldyBMaXN0ZW5lclRyYW5zcG9ydChsaXN0ZW5lciwgbG9vcGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5wdXQobGlzdGVuZXIsIHRyYW5zcG9ydCk7Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2UucmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIHRyYW5zcG9ydCk7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UucmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgY3JpdGVyaWEsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBzaW5nbGVTaG90LCB0cmFuc3BvcnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIExvZy5lKFRBRywgInJlcXVlc3RMb2NhdGlvblVwZGF0ZXM6IERlYWRPYmplY3RFeGNlcHRpb24iLCBleCk7CkBAIC03NTQsNyArNjE5LDcgQEAKICAgICAgKiB0aW1lIGJldHdlZW4gbG9jYXRpb24gdXBkYXRlcyBtYXkgYmUgZ3JlYXRlciBvciBsZXNzZXIgdGhhbiB0aGlzIHZhbHVlLgogICAgICAqIEBwYXJhbSBtaW5EaXN0YW5jZSB0aGUgbWluaW11bSBkaXN0YW5jZSBpbnRlcnZhbCBmb3Igbm90aWZpY2F0aW9ucywKICAgICAgKiBpbiBtZXRlcnMKLSAgICAgKiBAcGFyYW0gaW50ZW50IGEgeyNsaW5rIFBlbmRpbmdJbnRldH0gdG8gYmUgc2VudCBmb3IgZWFjaCBsb2NhdGlvbiB1cGRhdGUKKyAgICAgKiBAcGFyYW0gaW50ZW50IGEgeyNsaW5rIFBlbmRpbmdJbnRlbnR9IHRvIGJlIHNlbnQgZm9yIGVhY2ggbG9jYXRpb24gdXBkYXRlCiAgICAgICoKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBwcm92aWRlciBpcyBudWxsIG9yIGRvZXNuJ3QgZXhpc3QKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBpbnRlbnQgaXMgbnVsbApAQCAtNzY4LDExICs2MzMsNjcgQEAKICAgICAgICAgaWYgKGludGVudCA9PSBudWxsKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbnRlbnQ9PW51bGwiKTsKICAgICAgICAgfQotICAgICAgICBfcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIGludGVudCk7CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKHByb3ZpZGVyLCBudWxsLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZmFsc2UsIGludGVudCk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSB2b2lkIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKFN0cmluZyBwcm92aWRlciwKLSAgICAgICAgICAgIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIFBlbmRpbmdJbnRlbnQgaW50ZW50KSB7CisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIGJlIG5vdGlmaWVkIHBlcmlvZGljYWxseSBiYXNlZCBvbgorICAgICAqIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuICBQZXJpb2RpY2FsbHksIHRoZSBzdXBwbGllZCBQZW5kaW5nSW50ZW50IHdpbGwKKyAgICAgKiBiZSBicm9hZGNhc3Qgd2l0aCB0aGUgY3VycmVudCBMb2NhdGlvbiBvciB3aXRoIHN0YXR1cyB1cGRhdGVzLgorICAgICAqCisgICAgICogPHA+IExvY2F0aW9uIHVwZGF0ZXMgYXJlIHNlbnQgd2l0aCBhIGtleSBvZiBLRVlfTE9DQVRJT05fQ0hBTkdFRCBhbmQgYSBMb2NhdGlvbiB2YWx1ZS4KKyAgICAgKgorICAgICAqIDxwPiBJdCBtYXkgdGFrZSBhIHdoaWxlIHRvIHJlY2VpdmUgdGhlIG1vc3QgcmVjZW50IGxvY2F0aW9uLiBJZgorICAgICAqIGFuIGltbWVkaWF0ZSBsb2NhdGlvbiBpcyByZXF1aXJlZCwgYXBwbGljYXRpb25zIG1heSB1c2UgdGhlCisgICAgICoge0BsaW5rICNnZXRMYXN0S25vd25Mb2NhdGlvbihTdHJpbmcpfSBtZXRob2QuCisgICAgICoKKyAgICAgKiA8cD4gVGhlIGZyZXF1ZW5jeSBvZiBub3RpZmljYXRpb24gb3IgbmV3IGxvY2F0aW9ucyBtYXkgYmUgY29udHJvbGxlZCB1c2luZyB0aGUKKyAgICAgKiBtaW5UaW1lIGFuZCBtaW5EaXN0YW5jZSBwYXJhbWV0ZXJzLiBJZiBtaW5UaW1lIGlzIGdyZWF0ZXIgdGhhbiAwLAorICAgICAqIHRoZSBMb2NhdGlvbk1hbmFnZXIgY291bGQgcG90ZW50aWFsbHkgcmVzdCBmb3IgbWluVGltZSBtaWxsaXNlY29uZHMKKyAgICAgKiBiZXR3ZWVuIGxvY2F0aW9uIHVwZGF0ZXMgdG8gY29uc2VydmUgcG93ZXIuIElmIG1pbkRpc3RhbmNlIGlzIGdyZWF0ZXIgdGhhbiAwLAorICAgICAqIGEgbG9jYXRpb24gd2lsbCBvbmx5IGJlIGJyb2FkY2FzdCBpZiB0aGUgZGV2aWNlIG1vdmVzIGJ5IG1pbkRpc3RhbmNlIG1ldGVycy4KKyAgICAgKiBUbyBvYnRhaW4gbm90aWZpY2F0aW9ucyBhcyBmcmVxdWVudGx5IGFzIHBvc3NpYmxlLCBzZXQgYm90aCBwYXJhbWV0ZXJzIHRvIDAuCisgICAgICoKKyAgICAgKiA8cD4gQmFja2dyb3VuZCBzZXJ2aWNlcyBzaG91bGQgYmUgY2FyZWZ1bCBhYm91dCBzZXR0aW5nIGEgc3VmZmljaWVudGx5IGhpZ2gKKyAgICAgKiBtaW5UaW1lIHNvIHRoYXQgdGhlIGRldmljZSBkb2Vzbid0IGNvbnN1bWUgdG9vIG11Y2ggcG93ZXIgYnkga2VlcGluZyB0aGUKKyAgICAgKiBHUFMgb3Igd2lyZWxlc3MgcmFkaW9zIG9uIGFsbCB0aGUgdGltZS4gSW4gcGFydGljdWxhciwgdmFsdWVzIHVuZGVyIDYwMDAwbXMKKyAgICAgKiBhcmUgbm90IHJlY29tbWVuZGVkLgorICAgICAqCisgICAgICogPHA+IEluIGNhc2UgdGhlIHByb3ZpZGVyIGlzIGRpc2FibGVkIGJ5IHRoZSB1c2VyLCB1cGRhdGVzIHdpbGwgc3RvcCwKKyAgICAgKiBhbmQgYW4gaW50ZW50IHdpbGwgYmUgc2VudCB3aXRoIGFuIGV4dHJhIHdpdGgga2V5IEtFWV9QUk9WSURFUl9FTkFCTEVEIGFuZCBhIGJvb2xlYW4gdmFsdWUKKyAgICAgKiBvZiBmYWxzZS4gIElmIHRoZSBwcm92aWRlciBpcyByZS1lbmFibGVkLCBhbiBpbnRlbnQgd2lsbCBiZSBzZW50IHdpdGggYW4KKyAgICAgKiBleHRyYSB3aXRoIGtleSBLRVlfUFJPVklERVJfRU5BQkxFRCBhbmQgYSBib29sZWFuIHZhbHVlIG9mIHRydWUgYW5kIGxvY2F0aW9uIHVwZGF0ZXMgd2lsbAorICAgICAqIHN0YXJ0IGFnYWluLgorICAgICAqCisgICAgICogPHA+IElmIHRoZSBwcm92aWRlcidzIHN0YXR1cyBjaGFuZ2VzLCBhbiBpbnRlbnQgd2lsbCBiZSBzZW50IHdpdGggYW4gZXh0cmEgd2l0aCBrZXkKKyAgICAgKiBLRVlfU1RBVFVTX0NIQU5HRUQgYW5kIGFuIGludGVnZXIgdmFsdWUgaW5kaWNhdGluZyB0aGUgbmV3IHN0YXR1cy4gIEFueSBleHRyYXMgYXNzb2NpYXRlZAorICAgICAqIHdpdGggdGhlIHN0YXR1cyB1cGRhdGUgd2lsbCBiZSBzZW50IGFzIHdlbGwuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWluVGltZSB0aGUgbWluaW11bSB0aW1lIGludGVydmFsIGZvciBub3RpZmljYXRpb25zLCBpbgorICAgICAqIG1pbGxpc2Vjb25kcy4gVGhpcyBmaWVsZCBpcyBvbmx5IHVzZWQgYXMgYSBoaW50IHRvIGNvbnNlcnZlIHBvd2VyLCBhbmQgYWN0dWFsCisgICAgICogdGltZSBiZXR3ZWVuIGxvY2F0aW9uIHVwZGF0ZXMgbWF5IGJlIGdyZWF0ZXIgb3IgbGVzc2VyIHRoYW4gdGhpcyB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gbWluRGlzdGFuY2UgdGhlIG1pbmltdW0gZGlzdGFuY2UgaW50ZXJ2YWwgZm9yIG5vdGlmaWNhdGlvbnMsCisgICAgICogaW4gbWV0ZXJzCisgICAgICogQHBhcmFtIGNyaXRlcmlhIGNvbnRhaW5zIHBhcmFtZXRlcnMgZm9yIHRoZSBsb2NhdGlvbiBtYW5hZ2VyIHRvIGNob29zZSB0aGUKKyAgICAgKiBhcHByb3ByaWF0ZSBwcm92aWRlciBhbmQgcGFyYW1ldGVycyB0byBjb21wdXRlIHRoZSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSBpbnRlbnQgYSB7I2xpbmsgUGVuZGluZ0ludGVudH0gdG8gYmUgc2VudCBmb3IgZWFjaCBsb2NhdGlvbiB1cGRhdGUKKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHByb3ZpZGVyIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdAorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGludGVudCBpcyBudWxsCisgICAgICogQHRocm93cyBTZWN1cml0eUV4Y2VwdGlvbiBpZiBubyBzdWl0YWJsZSBwZXJtaXNzaW9uIGlzIHByZXNlbnQgZm9yIHRoZSBwcm92aWRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0TG9jYXRpb25VcGRhdGVzKGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIENyaXRlcmlhIGNyaXRlcmlhLCBQZW5kaW5nSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoY3JpdGVyaWEgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY3JpdGVyaWE9PW51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludGVudD09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKG51bGwsIGNyaXRlcmlhLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZmFsc2UsIGludGVudCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKFN0cmluZyBwcm92aWRlciwgQ3JpdGVyaWEgY3JpdGVyaWEsCisgICAgICAgICAgICBsb25nIG1pblRpbWUsIGZsb2F0IG1pbkRpc3RhbmNlLCBib29sZWFuIHNpbmdsZVNob3QsIFBlbmRpbmdJbnRlbnQgaW50ZW50KSB7CiAgICAgICAgIGlmIChtaW5UaW1lIDwgMEwpIHsKICAgICAgICAgICAgIG1pblRpbWUgPSAwTDsKICAgICAgICAgfQpAQCAtNzgxLDEzICs3MDIsMTUwIEBACiAgICAgICAgIH0KIAogICAgICAgICB0cnkgewotICAgICAgICAgICAgbVNlcnZpY2UucmVxdWVzdExvY2F0aW9uVXBkYXRlc1BJKHByb3ZpZGVyLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgaW50ZW50KTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnJlcXVlc3RMb2NhdGlvblVwZGF0ZXNQSShwcm92aWRlciwgY3JpdGVyaWEsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBzaW5nbGVTaG90LCBpbnRlbnQpOwogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIExvZy5lKFRBRywgInJlcXVlc3RMb2NhdGlvblVwZGF0ZXM6IFJlbW90ZUV4Y2VwdGlvbiIsIGV4KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgorICAgICAqIFJlZ2lzdGVycyB0aGUgY3VycmVudCBhY3Rpdml0eSB0byBiZSBub3RpZmllZCBwZXJpb2RpY2FsbHkgYnkKKyAgICAgKiB0aGUgbmFtZWQgcHJvdmlkZXIuICBQZXJpb2RpY2FsbHksIHRoZSBzdXBwbGllZCBMb2NhdGlvbkxpc3RlbmVyIHdpbGwKKyAgICAgKiBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCBMb2NhdGlvbiBvciB3aXRoIHN0YXR1cyB1cGRhdGVzLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIDxwPiBJbiBjYXNlIHRoZSBwcm92aWRlciBpcyBkaXNhYmxlZCBieSB0aGUgdXNlciwgdXBkYXRlcyB3aWxsIHN0b3AsCisgICAgICogYW5kIHRoZSB7QGxpbmsgTG9jYXRpb25MaXN0ZW5lciNvblByb3ZpZGVyRGlzYWJsZWQoU3RyaW5nKX0KKyAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuIEFzIHNvb24gYXMgdGhlIHByb3ZpZGVyIGlzIGVuYWJsZWQgYWdhaW4sCisgICAgICogdGhlIHtAbGluayBMb2NhdGlvbkxpc3RlbmVyI29uUHJvdmlkZXJFbmFibGVkKFN0cmluZyl9IG1ldGhvZCB3aWxsCisgICAgICogYmUgY2FsbGVkIGFuZCBsb2NhdGlvbiB1cGRhdGVzIHdpbGwgc3RhcnQgYWdhaW4uCisgICAgICoKKyAgICAgKiA8cD4gVGhlIHN1cHBsaWVkIExvb3BlciBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqCisgICAgICogQHBhcmFtIHByb3ZpZGVyIHRoZSBuYW1lIG9mIHRoZSBwcm92aWRlciB3aXRoIHdoaWNoIHRvIHJlZ2lzdGVyCisgICAgICogQHBhcmFtIGxpc3RlbmVyIGEgeyNsaW5rIExvY2F0aW9uTGlzdGVuZXJ9IHdob3NlCisgICAgICoge0BsaW5rIExvY2F0aW9uTGlzdGVuZXIjb25Mb2NhdGlvbkNoYW5nZWR9IG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmb3IKKyAgICAgKiBlYWNoIGxvY2F0aW9uIHVwZGF0ZQorICAgICAqIEBwYXJhbSBsb29wZXIgYSBMb29wZXIgb2JqZWN0IHdob3NlIG1lc3NhZ2UgcXVldWUgd2lsbCBiZSB1c2VkIHRvCisgICAgICogaW1wbGVtZW50IHRoZSBjYWxsYmFjayBtZWNoYW5pc20uCisgICAgICogSWYgbG9vcGVyIGlzIG51bGwgdGhlbiB0aGUgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHByb3ZpZGVyIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdAorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGxpc3RlbmVyIGlzIG51bGwKKyAgICAgKiBAdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uIGlmIG5vIHN1aXRhYmxlIHBlcm1pc3Npb24gaXMgcHJlc2VudCBmb3IgdGhlIHByb3ZpZGVyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RTaW5nbGVVcGRhdGUoU3RyaW5nIHByb3ZpZGVyLCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBMb29wZXIgbG9vcGVyKSB7CisgICAgICAgIGlmIChwcm92aWRlciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJwcm92aWRlcj09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0ZW5lcj09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKHByb3ZpZGVyLCBudWxsLCAwTCwgMC4wZiwgdHJ1ZSwgbGlzdGVuZXIsIGxvb3Blcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIGJlIG5vdGlmaWVkIHBlcmlvZGljYWxseSBiYXNlZCBvbgorICAgICAqIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuICBQZXJpb2RpY2FsbHksIHRoZSBzdXBwbGllZCBMb2NhdGlvbkxpc3RlbmVyIHdpbGwKKyAgICAgKiBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCBMb2NhdGlvbiBvciB3aXRoIHN0YXR1cyB1cGRhdGVzLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIDxwPiBJbiBjYXNlIHRoZSBwcm92aWRlciBpcyBkaXNhYmxlZCBieSB0aGUgdXNlciwgdXBkYXRlcyB3aWxsIHN0b3AsCisgICAgICogYW5kIHRoZSB7QGxpbmsgTG9jYXRpb25MaXN0ZW5lciNvblByb3ZpZGVyRGlzYWJsZWQoU3RyaW5nKX0KKyAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuIEFzIHNvb24gYXMgdGhlIHByb3ZpZGVyIGlzIGVuYWJsZWQgYWdhaW4sCisgICAgICogdGhlIHtAbGluayBMb2NhdGlvbkxpc3RlbmVyI29uUHJvdmlkZXJFbmFibGVkKFN0cmluZyl9IG1ldGhvZCB3aWxsCisgICAgICogYmUgY2FsbGVkIGFuZCBsb2NhdGlvbiB1cGRhdGVzIHdpbGwgc3RhcnQgYWdhaW4uCisgICAgICoKKyAgICAgKiA8cD4gVGhlIHN1cHBsaWVkIExvb3BlciBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqCisgICAgICogQHBhcmFtIGNyaXRlcmlhIGNvbnRhaW5zIHBhcmFtZXRlcnMgZm9yIHRoZSBsb2NhdGlvbiBtYW5hZ2VyIHRvIGNob29zZSB0aGUKKyAgICAgKiBhcHByb3ByaWF0ZSBwcm92aWRlciBhbmQgcGFyYW1ldGVycyB0byBjb21wdXRlIHRoZSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciBhIHsjbGluayBMb2NhdGlvbkxpc3RlbmVyfSB3aG9zZQorICAgICAqIHtAbGluayBMb2NhdGlvbkxpc3RlbmVyI29uTG9jYXRpb25DaGFuZ2VkfSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZm9yCisgICAgICogZWFjaCBsb2NhdGlvbiB1cGRhdGUKKyAgICAgKiBAcGFyYW0gbG9vcGVyIGEgTG9vcGVyIG9iamVjdCB3aG9zZSBtZXNzYWdlIHF1ZXVlIHdpbGwgYmUgdXNlZCB0bworICAgICAqIGltcGxlbWVudCB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqIElmIGxvb3BlciBpcyBudWxsIHRoZW4gdGhlIGNhbGxiYWNrcyB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgY3VycmVudCB0aHJlYWQuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBjcml0ZXJpYSBpcyBudWxsCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgbGlzdGVuZXIgaXMgbnVsbAorICAgICAqIEB0aHJvd3MgU2VjdXJpdHlFeGNlcHRpb24gaWYgbm8gc3VpdGFibGUgcGVybWlzc2lvbiBpcyBwcmVzZW50IHRvIGFjY2VzcworICAgICAqIHRoZSBsb2NhdGlvbiBzZXJ2aWNlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0U2luZ2xlVXBkYXRlKENyaXRlcmlhIGNyaXRlcmlhLCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBMb29wZXIgbG9vcGVyKSB7CisgICAgICAgIGlmIChjcml0ZXJpYSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjcml0ZXJpYT09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0ZW5lcj09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKG51bGwsIGNyaXRlcmlhLCAwTCwgMC4wZiwgdHJ1ZSwgbGlzdGVuZXIsIGxvb3Blcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIGJlIG5vdGlmaWVkIHBlcmlvZGljYWxseSBieQorICAgICAqIHRoZSBuYW1lZCBwcm92aWRlci4gIFBlcmlvZGljYWxseSwgdGhlIHN1cHBsaWVkIFBlbmRpbmdJbnRlbnQgd2lsbAorICAgICAqIGJlIGJyb2FkY2FzdCB3aXRoIHRoZSBjdXJyZW50IExvY2F0aW9uIG9yIHdpdGggc3RhdHVzIHVwZGF0ZXMuCisgICAgICoKKyAgICAgKiA8cD4gTG9jYXRpb24gdXBkYXRlcyBhcmUgc2VudCB3aXRoIGEga2V5IG9mIEtFWV9MT0NBVElPTl9DSEFOR0VEIGFuZCBhIExvY2F0aW9uIHZhbHVlLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm92aWRlciB0aGUgbmFtZSBvZiB0aGUgcHJvdmlkZXIgd2l0aCB3aGljaCB0byByZWdpc3RlcgorICAgICAqIEBwYXJhbSBpbnRlbnQgYSB7I2xpbmsgUGVuZGluZ0ludGVudH0gdG8gYmUgc2VudCBmb3IgdGhlIGxvY2F0aW9uIHVwZGF0ZQorICAgICAqCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgcHJvdmlkZXIgaXMgbnVsbCBvciBkb2Vzbid0IGV4aXN0CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgaW50ZW50IGlzIG51bGwKKyAgICAgKiBAdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uIGlmIG5vIHN1aXRhYmxlIHBlcm1pc3Npb24gaXMgcHJlc2VudCBmb3IgdGhlIHByb3ZpZGVyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RTaW5nbGVVcGRhdGUoU3RyaW5nIHByb3ZpZGVyLCBQZW5kaW5nSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAocHJvdmlkZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicHJvdmlkZXI9PW51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludGVudD09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKHByb3ZpZGVyLCBudWxsLCAwTCwgMC4wZiwgdHJ1ZSwgaW50ZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgdGhlIGN1cnJlbnQgYWN0aXZpdHkgdG8gYmUgbm90aWZpZWQgcGVyaW9kaWNhbGx5IGJhc2VkIG9uCisgICAgICogdGhlIHNwZWNpZmllZCBjcml0ZXJpYS4gIFBlcmlvZGljYWxseSwgdGhlIHN1cHBsaWVkIFBlbmRpbmdJbnRlbnQgd2lsbAorICAgICAqIGJlIGJyb2FkY2FzdCB3aXRoIHRoZSBjdXJyZW50IExvY2F0aW9uIG9yIHdpdGggc3RhdHVzIHVwZGF0ZXMuCisgICAgICoKKyAgICAgKiA8cD4gTG9jYXRpb24gdXBkYXRlcyBhcmUgc2VudCB3aXRoIGEga2V5IG9mIEtFWV9MT0NBVElPTl9DSEFOR0VEIGFuZCBhIExvY2F0aW9uIHZhbHVlLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjcml0ZXJpYSBjb250YWlucyBwYXJhbWV0ZXJzIGZvciB0aGUgbG9jYXRpb24gbWFuYWdlciB0byBjaG9vc2UgdGhlCisgICAgICogYXBwcm9wcmlhdGUgcHJvdmlkZXIgYW5kIHBhcmFtZXRlcnMgdG8gY29tcHV0ZSB0aGUgbG9jYXRpb24KKyAgICAgKiBAcGFyYW0gaW50ZW50IGEgeyNsaW5rIFBlbmRpbmdJbnRlbnR9IHRvIGJlIHNlbnQgZm9yIHRoZSBsb2NhdGlvbiB1cGRhdGUKKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHByb3ZpZGVyIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdAorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGludGVudCBpcyBudWxsCisgICAgICogQHRocm93cyBTZWN1cml0eUV4Y2VwdGlvbiBpZiBubyBzdWl0YWJsZSBwZXJtaXNzaW9uIGlzIHByZXNlbnQgZm9yIHRoZSBwcm92aWRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0U2luZ2xlVXBkYXRlKENyaXRlcmlhIGNyaXRlcmlhLCBQZW5kaW5nSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoY3JpdGVyaWEgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY3JpdGVyaWE9PW51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludGVudD09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKG51bGwsIGNyaXRlcmlhLCAwTCwgMC4wZiwgdHJ1ZSwgaW50ZW50KTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBSZW1vdmVzIGFueSBjdXJyZW50IHJlZ2lzdHJhdGlvbiBmb3IgbG9jYXRpb24gdXBkYXRlcyBvZiB0aGUgY3VycmVudCBhY3Rpdml0eQogICAgICAqIHdpdGggdGhlIGdpdmVuIExvY2F0aW9uTGlzdGVuZXIuICBGb2xsb3dpbmcgdGhpcyBjYWxsLCB1cGRhdGVzIHdpbGwgbm8gbG9uZ2VyCiAgICAgICogb2NjdXIgZm9yIHRoaXMgbGlzdGVuZXIuCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXIuamF2YQppbmRleCBiYjNlMmE1Li44YzE2NTgwIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlci5qYXZhCisrKyBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9Mb2NhdGlvblByb3ZpZGVyLmphdmEKQEAgLTE2LDYgKzE2LDkgQEAKIAogcGFja2FnZSBhbmRyb2lkLmxvY2F0aW9uOwogCitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKwogLyoqCiAgKiBBbiBhYnN0cmFjdCBzdXBlcmNsYXNzIGZvciBsb2NhdGlvbiBwcm92aWRlcnMuICBBIGxvY2F0aW9uIHByb3ZpZGVyCiAgKiBwcm92aWRlcyBwZXJpb2RpYyByZXBvcnRzIG9uIHRoZSBnZW9ncmFwaGljYWwgbG9jYXRpb24gb2YgdGhlCkBAIC0zNiw3ICszOSw4IEBACiAgICAgLy8gaW4gdGhlIG5hbWUgb2YgYSBMb2NhdGlvblByb3ZpZGVyLgogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFEX0NIQVJTX1JFR0VYID0gIlteYS16QS1aMC05XSI7CiAKLSAgICBwcml2YXRlIFN0cmluZyBtTmFtZTsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtTmFtZTsKKyAgICBwcml2YXRlIGZpbmFsIElMb2NhdGlvbk1hbmFnZXIgbVNlcnZpY2U7CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVVRfT0ZfU0VSVklDRSA9IDA7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUgPSAxOwpAQCAtNTAsMTMgKzU0LDEzIEBACiAgICAgICoKICAgICAgKiB7QGhpZGV9CiAgICAgICovCi0gICAgcHVibGljIExvY2F0aW9uUHJvdmlkZXIoU3RyaW5nIG5hbWUpIHsKKyAgICBwdWJsaWMgTG9jYXRpb25Qcm92aWRlcihTdHJpbmcgbmFtZSwgSUxvY2F0aW9uTWFuYWdlciBzZXJ2aWNlKSB7CiAgICAgICAgIGlmIChuYW1lLm1hdGNoZXMoQkFEX0NIQVJTX1JFR0VYKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibmFtZSAiICsgbmFtZSArCiAgICAgICAgICAgICAgICAgIiBjb250YWlucyBhbiBpbGxlZ2FsIGNoYXJhY3RlciIpOwogICAgICAgICB9Ci0gICAgICAgIC8vIExvZy5kKFRBRywgIkNvbnN0cnVjdG9yOiBuYW1lID0gIiArIG5hbWUpOwogICAgICAgICBtTmFtZSA9IG5hbWU7CisgICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKICAgICB9CiAKICAgICAvKioKQEAgLTcxLDI5ICs3NSwxMiBAQAogICAgICAqIGZhbHNlIG90aGVyd2lzZS4KICAgICAgKi8KICAgICBwdWJsaWMgYm9vbGVhbiBtZWV0c0NyaXRlcmlhKENyaXRlcmlhIGNyaXRlcmlhKSB7Ci0gICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIG1hdGNoIHRoZSBzcGVjaWFsIHBhc3NpdmUgcHJvdmlkZXIgYmFzZWQgb24gY3JpdGVyaWEuCi0gICAgICAgIGlmIChMb2NhdGlvbk1hbmFnZXIuUEFTU0lWRV9QUk9WSURFUi5lcXVhbHMobU5hbWUpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UucHJvdmlkZXJNZWV0c0NyaXRlcmlhKG1OYW1lLCBjcml0ZXJpYSk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJtZWV0c0NyaXRlcmlhOiBSZW1vdGVFeGNlcHRpb24iLCBlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBpZiAoKGNyaXRlcmlhLmdldEFjY3VyYWN5KCkgIT0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQpICYmIAotICAgICAgICAgICAgKGNyaXRlcmlhLmdldEFjY3VyYWN5KCkgPCBnZXRBY2N1cmFjeSgpKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGludCBjcml0ZXJpYVBvd2VyID0gY3JpdGVyaWEuZ2V0UG93ZXJSZXF1aXJlbWVudCgpOwotICAgICAgICBpZiAoKGNyaXRlcmlhUG93ZXIgIT0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQpICYmCi0gICAgICAgICAgICAoY3JpdGVyaWFQb3dlciA8IGdldFBvd2VyUmVxdWlyZW1lbnQoKSkpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3JpdGVyaWEuaXNBbHRpdHVkZVJlcXVpcmVkKCkgJiYgIXN1cHBvcnRzQWx0aXR1ZGUoKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjcml0ZXJpYS5pc1NwZWVkUmVxdWlyZWQoKSAmJiAhc3VwcG9ydHNTcGVlZCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNyaXRlcmlhLmlzQmVhcmluZ1JlcXVpcmVkKCkgJiYgIXN1cHBvcnRzQmVhcmluZygpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlckludGVyZmFjZS5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZmZTE1YzMuLjAwMDAwMDAKLS0tIGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGFuZHJvaWQubG9jYXRpb247Ci0KLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOwotaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotCi0vKioKLSAqIExvY2F0aW9uIE1hbmFnZXIncyBpbnRlcmZhY2UgZm9yIGxvY2F0aW9uIHByb3ZpZGVycy4KLSAqCi0gKiB7QGhpZGV9Ci0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSB7Ci0gICAgU3RyaW5nIGdldE5hbWUoKTsKLSAgICBib29sZWFuIHJlcXVpcmVzTmV0d29yaygpOwotICAgIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKTsKLSAgICBib29sZWFuIHJlcXVpcmVzQ2VsbCgpOwotICAgIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0KCk7Ci0gICAgYm9vbGVhbiBzdXBwb3J0c0FsdGl0dWRlKCk7Ci0gICAgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCk7Ci0gICAgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcoKTsKLSAgICBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpOwotICAgIGludCBnZXRBY2N1cmFjeSgpOwotICAgIGJvb2xlYW4gaXNFbmFibGVkKCk7Ci0gICAgdm9pZCBlbmFibGUoKTsKLSAgICB2b2lkIGRpc2FibGUoKTsKLSAgICBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpOwotICAgIGxvbmcgZ2V0U3RhdHVzVXBkYXRlVGltZSgpOwotICAgIHZvaWQgZW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSk7Ci0gICAgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKTsKLSAgICB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKTsKLSAgICB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pOwotICAgIHZvaWQgdXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pOwotICAgIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcyk7Ci0gICAgdm9pZCBhZGRMaXN0ZW5lcihpbnQgdWlkKTsKLSAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpOwotfQpkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL3Byb3ZpZGVyL0dlb2NvZGVQcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL3Byb3ZpZGVyL0dlb2NvZGVQcm92aWRlci5qYXZhCmluZGV4IDg2Mzc2YTcuLjlhNTg3NjMgMTAwNjQ0Ci0tLSBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9wcm92aWRlci9HZW9jb2RlUHJvdmlkZXIuamF2YQorKysgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vcHJvdmlkZXIvR2VvY29kZVByb3ZpZGVyLmphdmEKQEAgLTI5LDggKzI5LDYgQEAKICAqIG91dHNpZGUgb2YgdGhlIGNvcmUgYW5kcm9pZCBwbGF0Zm9ybS4KICAqIEdlb2NvZGUgcHJvdmlkZXJzIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBzZXJ2aWNlcyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YKICAqIHtAbGluayBHZW9jb2RlUHJvdmlkZXIjZ2V0QmluZGVyKCl9IGluIGl0cyBnZXRCaW5kZXIoKSBtZXRob2QuCi0gKgotICogQGhpZGUKICAqLwogcHVibGljIGFic3RyYWN0IGNsYXNzIEdlb2NvZGVQcm92aWRlciB7CiAKQEAgLTUzLDcgKzUxLDcgQEAKIAogICAgIC8qKgogICAgICAqIFRoaXMgbWV0aG9kIGlzIG92ZXJyaWRkZW4gdG8gaW1wbGVtZW50IHRoZQotICAgICAqIHtAbGluayBHZW9jb2RlciNnZXRGcm9tTG9jYXRpb24oZG91YmxlLCBkb3VibGUsIGludCl9IG1ldGhvZC4KKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlciNnZXRGcm9tTG9jYXRpb24oZG91YmxlLCBkb3VibGUsIGludCl9IG1ldGhvZC4KICAgICAgKiBDbGFzc2VzIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBzaG91bGQgbm90IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIHBhcmFtcyBwYXJhbWV0ZXIuCiAgICAgICovCiAgICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBvbkdldEZyb21Mb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGludCBtYXhSZXN1bHRzLApAQCAtNjEsNyArNTksNyBAQAogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgaXMgb3ZlcnJpZGRlbiB0byBpbXBsZW1lbnQgdGhlCi0gICAgICoge0BsaW5rIEdlb2NvZGVyI2dldEZyb21Mb2NhdGlvbk5hbWUoU3RyaW5nLCBpbnQsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSl9IG1ldGhvZC4KKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlciNnZXRGcm9tTG9jYXRpb25OYW1lKFN0cmluZywgaW50LCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpfSBtZXRob2QuCiAgICAgICogQ2xhc3NlcyBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2Qgc2hvdWxkIG5vdCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBwYXJhbXMgcGFyYW1ldGVyLgogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgb25HZXRGcm9tTG9jYXRpb25OYW1lKFN0cmluZyBsb2NhdGlvbk5hbWUsCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vcHJvdmlkZXIvTG9jYXRpb25Qcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL3Byb3ZpZGVyL0xvY2F0aW9uUHJvdmlkZXIuamF2YQppbmRleCA1NmNmYjMzLi5jZjkzOWRlIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vcHJvdmlkZXIvTG9jYXRpb25Qcm92aWRlci5qYXZhCisrKyBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9wcm92aWRlci9Mb2NhdGlvblByb3ZpZGVyLmphdmEKQEAgLTE4LDYgKzE4LDcgQEAKIAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25NYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uUHJvdmlkZXI7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbjsKQEAgLTMyLDggKzMzLDYgQEAKICAqIG91dHNpZGUgb2YgdGhlIGNvcmUgYW5kcm9pZCBwbGF0Zm9ybS4KICAqIExvY2F0aW9uIHByb3ZpZGVycyBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgc2VydmljZXMgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mCiAgKiB7QGxpbmsgTG9jYXRpb25Qcm92aWRlciNnZXRCaW5kZXIoKX0gaW4gaXRzIGdldEJpbmRlcigpIG1ldGhvZC4KLSAqCi0gKiBAaGlkZQogICovCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgTG9jYXRpb25Qcm92aWRlciB7CiAKQEAgLTc1LDYgKzc0LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gTG9jYXRpb25Qcm92aWRlci50aGlzLm9uR2V0UG93ZXJSZXF1aXJlbWVudCgpOwogICAgICAgICB9CiAKKyAgICAgICAgcHVibGljIGJvb2xlYW4gbWVldHNDcml0ZXJpYShDcml0ZXJpYSBjcml0ZXJpYSkgeworICAgICAgICAgICAgcmV0dXJuIExvY2F0aW9uUHJvdmlkZXIudGhpcy5vbk1lZXRzQ3JpdGVyaWEoY3JpdGVyaWEpOworICAgICAgICB9CisKICAgICAgICAgcHVibGljIGludCBnZXRBY2N1cmFjeSgpIHsKICAgICAgICAgICAgIHJldHVybiBMb2NhdGlvblByb3ZpZGVyLnRoaXMub25HZXRBY2N1cmFjeSgpOwogICAgICAgICB9CkBAIC0yMjYsNiArMjI5LDEyIEBACiAgICAgcHVibGljIGFic3RyYWN0IGludCBvbkdldFBvd2VyUmVxdWlyZW1lbnQoKTsKIAogICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHByb3ZpZGVyIG1lZXRzIHRoZSBnaXZlbiBjcml0ZXJpYSwKKyAgICAgKiBmYWxzZSBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gb25NZWV0c0NyaXRlcmlhKENyaXRlcmlhIGNyaXRlcmlhKTsKKworICAgIC8qKgogICAgICAqIFJldHVybnMgYSBjb25zdGFudCBkZXNjcmliaW5nIGhvcml6b250YWwgYWNjdXJhY3kgb2YgdGhpcyBwcm92aWRlci4KICAgICAgKiBJZiB0aGUgcHJvdmlkZXIgcmV0dXJucyBmaW5lciBncmFpbiBvciBleGFjdCBsb2NhdGlvbiwKICAgICAgKiB7QGxpbmsgQ3JpdGVyaWEjQUNDVVJBQ1lfRklORX0gaXMgcmV0dXJuZWQsIG90aGVyd2lzZSBpZiB0aGUKQEAgLTI0NiwxMSArMjU1LDExIEBACiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGEgaW5mb3JtYXRpb24gb24gdGhlIHN0YXR1cyBvZiB0aGlzIHByb3ZpZGVyLgotICAgICAqIHtAbGluayAjT1VUX09GX1NFUlZJQ0V9IGlzIHJldHVybmVkIGlmIHRoZSBwcm92aWRlciBpcworICAgICAqIHtAbGluayBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXIjT1VUX09GX1NFUlZJQ0V9IGlzIHJldHVybmVkIGlmIHRoZSBwcm92aWRlciBpcwogICAgICAqIG91dCBvZiBzZXJ2aWNlLCBhbmQgdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gY2hhbmdlIGluIHRoZSBuZWFyCi0gICAgICogZnV0dXJlOyB7QGxpbmsgI1RFTVBPUkFSSUxZX1VOQVZBSUxBQkxFfSBpcyByZXR1cm5lZCBpZgorICAgICAqIGZ1dHVyZTsge0BsaW5rIGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlciNURU1QT1JBUklMWV9VTkFWQUlMQUJMRX0gaXMgcmV0dXJuZWQgaWYKICAgICAgKiB0aGUgcHJvdmlkZXIgaXMgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUgYnV0IGlzIGV4cGVjdGVkIHRvIGJlCi0gICAgICogYXZhaWxhYmxlIHNob3J0bHk7IGFuZCB7QGxpbmsgI0FWQUlMQUJMRX0gaXMgcmV0dXJuZWQKKyAgICAgKiBhdmFpbGFibGUgc2hvcnRseTsgYW5kIHtAbGluayBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXIjQVZBSUxBQkxFfSBpcyByZXR1cm5lZAogICAgICAqIGlmIHRoZSBwcm92aWRlciBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLgogICAgICAqCiAgICAgICogPHA+IElmIGV4dHJhcyBpcyBub24tbnVsbCwgYWRkaXRpb25hbCBzdGF0dXMgaW5mb3JtYXRpb24gbWF5IGJlCkBAIC0yOTksOSArMzA4LDkgQEAKIAogICAgIC8qKgogICAgICAqIFVwZGF0ZXMgdGhlIG5ldHdvcmsgc3RhdGUgZm9yIHRoZSBnaXZlbiBwcm92aWRlci4gVGhpcyBmdW5jdGlvbiBtdXN0Ci0gICAgICogYmUgb3ZlcndyaXR0ZW4gaWYge0BsaW5rICNyZXF1aXJlc05ldHdvcmt9IHJldHVybnMgdHJ1ZS4gVGhlIHN0YXRlIGlzCi0gICAgICoge0BsaW5rICNURU1QT1JBUklMWV9VTkFWQUlMQUJMRX0gKGRpc2Nvbm5lY3RlZCksIE9SIHtAbGluayAjQVZBSUxBQkxFfQotICAgICAqIChjb25uZWN0ZWQgb3IgY29ubmVjdGluZykuCisgICAgICogYmUgb3ZlcndyaXR0ZW4gaWYge0BsaW5rIGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlciNyZXF1aXJlc05ldHdvcmt9IHJldHVybnMgdHJ1ZS4KKyAgICAgKiBUaGUgc3RhdGUgaXMge0BsaW5rIGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlciNURU1QT1JBUklMWV9VTkFWQUlMQUJMRX0gKGRpc2Nvbm5lY3RlZCkKKyAgICAgKiBPUiB7QGxpbmsgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVyI0FWQUlMQUJMRX0gKGNvbm5lY3RlZCBvciBjb25uZWN0aW5nKS4KICAgICAgKgogICAgICAqIEBwYXJhbSBzdGF0ZSBkYXRhIHN0YXRlCiAgICAgICovCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0R1bW15TG9jYXRpb25Qcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9EdW1teUxvY2F0aW9uUHJvdmlkZXIuamF2YQppbmRleCBmZjVlMjdiLi5lN2I1MTQzIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0R1bW15TG9jYXRpb25Qcm92aWRlci5qYXZhCisrKyBiL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vRHVtbXlMb2NhdGlvblByb3ZpZGVyLmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIAogcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbjsKIAoraW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXI7CiAKIC8qKgpAQCAtNDEsOCArNDIsOCBAQAogICAgIGludCBtUG93ZXJSZXF1aXJlbWVudDsKICAgICBpbnQgbUFjY3VyYWN5OwogCi0gICAgcHVibGljIER1bW15TG9jYXRpb25Qcm92aWRlcihTdHJpbmcgbmFtZSkgewotICAgICAgICBzdXBlcihuYW1lKTsKKyAgICBwdWJsaWMgRHVtbXlMb2NhdGlvblByb3ZpZGVyKFN0cmluZyBuYW1lLCBJTG9jYXRpb25NYW5hZ2VyIHNlcnZpY2UpIHsKKyAgICAgICAgc3VwZXIobmFtZSwgc2VydmljZSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0UmVxdWlyZXNOZXR3b3JrKGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKSB7CmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dlb2NvZGVyUHJveHkuamF2YSBiL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR2VvY29kZXJQcm94eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDYyOTdiLi4wMDAwMDAwCi0tLSBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR2VvY29kZXJQcm94eS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWU7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb247Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uR2VvY29kZXJQYXJhbXM7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR2VvY29kZVByb3ZpZGVyOwotaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOwotaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotLyoqCi0gKiBBIGNsYXNzIGZvciBwcm94eWluZyBJR2VvY29kZVByb3ZpZGVyIGltcGxlbWVudGF0aW9ucy4KLSAqCi0gKiB7QGhpZGV9Ci0gKi8KLXB1YmxpYyBjbGFzcyBHZW9jb2RlclByb3h5IHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiR2VvY29kZXJQcm94eSI7Ci0KLSAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgcHJpdmF0ZSBmaW5hbCBJbnRlbnQgbUludGVudDsKLSAgICBwcml2YXRlIGZpbmFsIENvbm5lY3Rpb24gbVNlcnZpY2VDb25uZWN0aW9uID0gbmV3IENvbm5lY3Rpb24oKTsKLSAgICBwcml2YXRlIElHZW9jb2RlUHJvdmlkZXIgbVByb3ZpZGVyOwotCi0gICAgcHVibGljIEdlb2NvZGVyUHJveHkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgc2VydmljZU5hbWUpIHsKLSAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBtSW50ZW50ID0gbmV3IEludGVudChzZXJ2aWNlTmFtZSk7Ci0gICAgICAgIG1Db250ZXh0LmJpbmRTZXJ2aWNlKG1JbnRlbnQsIG1TZXJ2aWNlQ29ubmVjdGlvbiwgQ29udGV4dC5CSU5EX0FVVE9fQ1JFQVRFKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGNsYXNzIENvbm5lY3Rpb24gaW1wbGVtZW50cyBTZXJ2aWNlQ29ubmVjdGlvbiB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZUNvbm5lY3RlZChDb21wb25lbnROYW1lIGNsYXNzTmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB7Ci0gICAgICAgICAgICBMb2cuZChUQUcsICJvblNlcnZpY2VDb25uZWN0ZWQgIiArIGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBtUHJvdmlkZXIgPSBJR2VvY29kZVByb3ZpZGVyLlN0dWIuYXNJbnRlcmZhY2Uoc2VydmljZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUpIHsKLSAgICAgICAgICAgIExvZy5kKFRBRywgIm9uU2VydmljZURpc2Nvbm5lY3RlZCAiICsgY2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIG1Qcm92aWRlciA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZyb21Mb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGludCBtYXhSZXN1bHRzLAotICAgICAgICAgICAgR2VvY29kZXJQYXJhbXMgcGFyYW1zLCBMaXN0PEFkZHJlc3M+IGFkZHJzKSB7Ci0gICAgICAgIElHZW9jb2RlUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuZ2V0RnJvbUxvY2F0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIG1heFJlc3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIGFkZHJzKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiZ2V0RnJvbUxvY2F0aW9uIGZhaWxlZCIsIGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAiU2VydmljZSBub3QgQXZhaWxhYmxlIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZyb21Mb2NhdGlvbk5hbWUoU3RyaW5nIGxvY2F0aW9uTmFtZSwKLSAgICAgICAgICAgIGRvdWJsZSBsb3dlckxlZnRMYXRpdHVkZSwgZG91YmxlIGxvd2VyTGVmdExvbmdpdHVkZSwKLSAgICAgICAgICAgIGRvdWJsZSB1cHBlclJpZ2h0TGF0aXR1ZGUsIGRvdWJsZSB1cHBlclJpZ2h0TG9uZ2l0dWRlLCBpbnQgbWF4UmVzdWx0cywKLSAgICAgICAgICAgIEdlb2NvZGVyUGFyYW1zIHBhcmFtcywgTGlzdDxBZGRyZXNzPiBhZGRycykgewotICAgICAgICBJR2VvY29kZVByb3ZpZGVyIHByb3ZpZGVyOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgewotICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLmdldEZyb21Mb2NhdGlvbk5hbWUobG9jYXRpb25OYW1lLCBsb3dlckxlZnRMYXRpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyTGVmdExvbmdpdHVkZSwgdXBwZXJSaWdodExhdGl0dWRlLCB1cHBlclJpZ2h0TG9uZ2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgbWF4UmVzdWx0cywgcGFyYW1zLCBhZGRycyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIExvZy5lKFRBRywgImdldEZyb21Mb2NhdGlvbk5hbWUgZmFpbGVkIiwgZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJTZXJ2aWNlIG5vdCBBdmFpbGFibGUiOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR3BzTG9jYXRpb25Qcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9HcHNMb2NhdGlvblByb3ZpZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE1ZDY5MmMuLjAwMDAwMDAKLS0tIGEvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9HcHNMb2NhdGlvblByb3ZpZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uOwotCi1pbXBvcnQgYW5kcm9pZC5hcHAuQWxhcm1NYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUdwc1N0YXR1c0xpc3RlbmVyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUdwc1N0YXR1c1Byb3ZpZGVyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklOZXRJbml0aWF0ZWRMaXN0ZW5lcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2U7Ci1pbXBvcnQgYW5kcm9pZC5uZXQuQ29ubmVjdGl2aXR5TWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKLWltcG9ydCBhbmRyb2lkLm5ldC5TbnRwQ2xpZW50OwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3MuUHJvY2VzczsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7Ci1pbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotaW1wb3J0IGFuZHJvaWQudXRpbC5TcGFyc2VJbnRBcnJheTsKLQotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5JQmF0dGVyeVN0YXRzOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZTsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5HcHNOZXRJbml0aWF0ZWRIYW5kbGVyOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkdwc05ldEluaXRpYXRlZEhhbmRsZXIuR3BzTmlOb3RpZmljYXRpb247Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ0J1ZmZlcklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEubmV0LkluZXRBZGRyZXNzOwotaW1wb3J0IGphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7Ci1pbXBvcnQgamF2YS51dGlsLk1hcC5FbnRyeTsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaDsKLQotLyoqCi0gKiBBIEdQUyBpbXBsZW1lbnRhdGlvbiBvZiBMb2NhdGlvblByb3ZpZGVyIHVzZWQgYnkgTG9jYXRpb25NYW5hZ2VyLgotICoKLSAqIHtAaGlkZX0KLSAqLwotcHVibGljIGNsYXNzIEdwc0xvY2F0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiR3BzTG9jYXRpb25Qcm92aWRlciI7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBWRVJCT1NFID0gZmFsc2U7Ci0KLSAgICAvKioKLSAgICAgKiBCcm9hZGNhc3QgaW50ZW50IGFjdGlvbiBpbmRpY2F0aW5nIHRoYXQgdGhlIEdQUyBoYXMgZWl0aGVyIGJlZW4KLSAgICAgKiBlbmFibGVkIG9yIGRpc2FibGVkLiBBbiBpbnRlbnQgZXh0cmEgcHJvdmlkZXMgdGhpcyBzdGF0ZSBhcyBhIGJvb2xlYW4sCi0gICAgICogd2hlcmUge0Bjb2RlIHRydWV9IG1lYW5zIGVuYWJsZWQuCi0gICAgICogQHNlZSAjRVhUUkFfRU5BQkxFRAotICAgICAqCi0gICAgICoge0BoaWRlfQotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04gPQotICAgICAgICAiYW5kcm9pZC5sb2NhdGlvbi5HUFNfRU5BQkxFRF9DSEFOR0UiOwotCi0gICAgLyoqCi0gICAgICogQnJvYWRjYXN0IGludGVudCBhY3Rpb24gaW5kaWNhdGluZyB0aGF0IHRoZSBHUFMgaGFzIGVpdGhlciBzdGFydGVkIG9yCi0gICAgICogc3RvcHBlZCByZWNlaXZpbmcgR1BTIGZpeGVzLiBBbiBpbnRlbnQgZXh0cmEgcHJvdmlkZXMgdGhpcyBzdGF0ZSBhcyBhCi0gICAgICogYm9vbGVhbiwgd2hlcmUge0Bjb2RlIHRydWV9IG1lYW5zIHRoYXQgdGhlIEdQUyBpcyBhY3RpdmVseSByZWNlaXZpbmcgZml4ZXMuCi0gICAgICogQHNlZSAjRVhUUkFfRU5BQkxFRAotICAgICAqCi0gICAgICoge0BoaWRlfQotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdQU19GSVhfQ0hBTkdFX0FDVElPTiA9Ci0gICAgICAgICJhbmRyb2lkLmxvY2F0aW9uLkdQU19GSVhfQ0hBTkdFIjsKLQotICAgIC8qKgotICAgICAqIFRoZSBsb29rdXAga2V5IGZvciBhIGJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBHUFMgaXMgZW5hYmxlZCBvcgotICAgICAqIGRpc2FibGVkLiB7QGNvZGUgdHJ1ZX0gbWVhbnMgR1BTIGlzIGVuYWJsZWQuIFJldHJpZXZlIGl0IHdpdGgKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkludGVudCNnZXRCb29sZWFuRXh0cmEoU3RyaW5nLGJvb2xlYW4pfS4KLSAgICAgKgotICAgICAqIHtAaGlkZX0KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQV9FTkFCTEVEID0gImVuYWJsZWQiOwotCi0gICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBHcHNQb3NpdGlvbk1vZGUgZW51bSBpbiBncHMuaAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUE9TSVRJT05fTU9ERV9TVEFOREFMT05FID0gMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1BPU0lUSU9OX01PREVfTVNfQkFTRUQgPSAxOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUE9TSVRJT05fTU9ERV9NU19BU1NJU1RFRCA9IDI7Ci0KLSAgICAvLyB0aGVzZSBuZWVkIHRvIG1hdGNoIEdwc1N0YXR1c1ZhbHVlIGRlZmluZXMgaW4gZ3BzLmgKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19OT05FID0gMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19TRVNTSU9OX0JFR0lOID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19TRVNTSU9OX0VORCA9IDI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19TVEFUVVNfRU5HSU5FX09OID0gMzsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19FTkdJTkVfT0ZGID0gNDsKLQotICAgIC8vIHRoZXNlIG5lZWQgdG8gbWF0Y2ggR3BzQXBnc1N0YXR1c1ZhbHVlIGRlZmluZXMgaW4gZ3BzLmgKLSAgICAvKiogQUdQUyBzdGF0dXMgZXZlbnQgdmFsdWVzLiAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUkVRVUVTVF9BR1BTX0RBVEFfQ09OTiA9IDE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19SRUxFQVNFX0FHUFNfREFUQV9DT05OID0gMjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0FHUFNfREFUQV9DT05ORUNURUQgPSAzOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfQUdQU19EQVRBX0NPTk5fRE9ORSA9IDQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19BR1BTX0RBVEFfQ09OTl9GQUlMRUQgPSA1OwotCi0gICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBHcHNMb2NhdGlvbkZsYWdzIGVudW0gaW4gZ3BzLmgKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSU5WQUxJRCA9IDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19MQVRfTE9ORyA9IDE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19BTFRJVFVERSA9IDI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19TUEVFRCA9IDQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19CRUFSSU5HID0gODsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSEFTX0FDQ1VSQUNZID0gMTY7Ci0KLS8vIElNUE9SVEFOVCAtIHRoZSBHUFNfREVMRVRFXyogc3ltYm9scyBoZXJlIG11c3QgbWF0Y2ggY29uc3RhbnRzIGluIGdwcy5oCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfRVBIRU1FUklTID0gMHgwMDAxOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0FMTUFOQUMgPSAweDAwMDI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfUE9TSVRJT04gPSAweDAwMDQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfVElNRSA9IDB4MDAwODsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9JT05PID0gMHgwMDEwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX1VUQyA9IDB4MDAyMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9IRUFMVEggPSAweDAwNDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfU1ZESVIgPSAweDAwODA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfU1ZTVEVFUiA9IDB4MDEwMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9TQURBVEEgPSAweDAyMDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfUlRJID0gMHgwNDAwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0NFTExEQl9JTkZPID0gMHg4MDAwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0FMTCA9IDB4RkZGRjsKLQotICAgIC8vIHRoZXNlIG5lZWQgdG8gbWF0Y2ggQUdwc1R5cGUgZW51bSBpbiBncHMuaAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX1RZUEVfU1VQTCA9IDE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFHUFNfVFlQRV9DMksgPSAyOwotCi0gICAgLy8gZm9yIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX0RBVEFfQ09OTkVDVElPTl9DTE9TRUQgPSAwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOSU5HID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUdQU19EQVRBX0NPTk5FQ1RJT05fT1BFTiA9IDI7Ci0KLSAgICAvLyBIYW5kbGVyIG1lc3NhZ2VzCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENIRUNLX0xPQ0FUSU9OID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRU5BQkxFID0gMjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRU5BQkxFX1RSQUNLSU5HID0gMzsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVVBEQVRFX05FVFdPUktfU1RBVEUgPSA0OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTkpFQ1RfTlRQX1RJTUUgPSA1OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET1dOTE9BRF9YVFJBX0RBVEEgPSA2OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVUERBVEVfTE9DQVRJT04gPSA3OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBRERfTElTVEVORVIgPSA4OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSRU1PVkVfTElTVEVORVIgPSA5OwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRJRVNfRklMRSA9ICIvZXRjL2dwcy5jb25mIjsKLQotICAgIHByaXZhdGUgaW50IG1Mb2NhdGlvbkZsYWdzID0gTE9DQVRJT05fSU5WQUxJRDsKLQotICAgIC8vIGN1cnJlbnQgc3RhdHVzCi0gICAgcHJpdmF0ZSBpbnQgbVN0YXR1cyA9IExvY2F0aW9uUHJvdmlkZXIuVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEU7Ci0KLSAgICAvLyB0aW1lIGZvciBsYXN0IHN0YXR1cyB1cGRhdGUKLSAgICBwcml2YXRlIGxvbmcgbVN0YXR1c1VwZGF0ZVRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAKLSAgICAvLyB0dXJuIG9mZiBHUFMgZml4IGljb24gaWYgd2UgaGF2ZW4ndCByZWNlaXZlZCBhIGZpeCBpbiAxMCBzZWNvbmRzCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBSRUNFTlRfRklYX1RJTUVPVVQgPSAxMDsKLSAgICAKLSAgICAvLyBudW1iZXIgb2YgZml4ZXMgdG8gcmVjZWl2ZSBiZWZvcmUgZGlzYWJsaW5nIEdQUwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNSU5fRklYX0NPVU5UID0gMTA7Ci0KLSAgICAvLyBzdG9wIHRyeWluZyBpZiB3ZSBkbyBub3QgcmVjZWl2ZSBhIGZpeCB3aXRoaW4gNjAgc2Vjb25kcwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT19GSVhfVElNRU9VVCA9IDYwOwotCi0gICAgLy8gdHJ1ZSBpZiB3ZSBhcmUgZW5hYmxlZAotICAgIHByaXZhdGUgdm9sYXRpbGUgYm9vbGVhbiBtRW5hYmxlZDsKLSAgICAKLSAgICAvLyB0cnVlIGlmIHdlIGhhdmUgbmV0d29yayBjb25uZWN0aXZpdHkKLSAgICBwcml2YXRlIGJvb2xlYW4gbU5ldHdvcmtBdmFpbGFibGU7Ci0KLSAgICAvLyBmbGFncyB0byB0cmlnZ2VyIE5UUCBvciBYVFJBIGRhdGEgZG93bmxvYWQgd2hlbiBuZXR3b3JrIGJlY29tZXMgYXZhaWxhYmxlCi0gICAgLy8gaW5pdGlhbGl6ZWQgdG8gdHJ1ZSBzbyB3ZSBkbyBOVFAgYW5kIFhUUkEgd2hlbiB0aGUgbmV0d29yayBjb21lcyB1cCBhZnRlciBib290aW5nCi0gICAgcHJpdmF0ZSBib29sZWFuIG1JbmplY3ROdHBUaW1lUGVuZGluZyA9IHRydWU7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1Eb3dubG9hZFh0cmFEYXRhUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyB0cnVlIGlmIEdQUyBpcyBuYXZpZ2F0aW5nCi0gICAgcHJpdmF0ZSBib29sZWFuIG1OYXZpZ2F0aW5nOwotCi0gICAgLy8gdHJ1ZSBpZiBHUFMgZW5naW5lIGlzIG9uCi0gICAgcHJpdmF0ZSBib29sZWFuIG1FbmdpbmVPbjsKLSAgICAKLSAgICAvLyByZXF1ZXN0ZWQgZnJlcXVlbmN5IG9mIGZpeGVzLCBpbiBzZWNvbmRzCi0gICAgcHJpdmF0ZSBpbnQgbUZpeEludGVydmFsID0gMTsKLQotICAgIC8vIG51bWJlciBvZiBmaXhlcyB3ZSBoYXZlIHJlY2VpdmVkIHNpbmNlIHdlIHN0YXJ0ZWQgbmF2aWdhdGluZwotICAgIHByaXZhdGUgaW50IG1GaXhDb3VudDsKLQotICAgIC8vIHRydWUgaWYgd2Ugc3RhcnRlZCBuYXZpZ2F0aW9uCi0gICAgcHJpdmF0ZSBib29sZWFuIG1TdGFydGVkOwotCi0gICAgLy8gZm9yIGNhbGN1bGF0aW5nIHRpbWUgdG8gZmlyc3QgZml4Ci0gICAgcHJpdmF0ZSBsb25nIG1GaXhSZXF1ZXN0VGltZSA9IDA7Ci0gICAgLy8gdGltZSB0byBmaXJzdCBmaXggZm9yIG1vc3QgcmVjZW50IHNlc3Npb24KLSAgICBwcml2YXRlIGludCBtVFRGRiA9IDA7Ci0gICAgLy8gdGltZSB3ZSByZWNlaXZlZCBvdXIgbGFzdCBmaXgKLSAgICBwcml2YXRlIGxvbmcgbUxhc3RGaXhUaW1lOwotCi0gICAgLy8gcHJvcGVydGllcyBsb2FkZWQgZnJvbSBQUk9QRVJUSUVTX0ZJTEUKLSAgICBwcml2YXRlIFByb3BlcnRpZXMgbVByb3BlcnRpZXM7Ci0gICAgcHJpdmF0ZSBTdHJpbmcgbU50cFNlcnZlcjsKLSAgICBwcml2YXRlIFN0cmluZyBtU3VwbFNlcnZlckhvc3Q7Ci0gICAgcHJpdmF0ZSBpbnQgbVN1cGxTZXJ2ZXJQb3J0OwotICAgIHByaXZhdGUgU3RyaW5nIG1DMktTZXJ2ZXJIb3N0OwotICAgIHByaXZhdGUgaW50IG1DMktTZXJ2ZXJQb3J0OwotCi0gICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OwotICAgIHByaXZhdGUgZmluYWwgSUxvY2F0aW9uTWFuYWdlciBtTG9jYXRpb25NYW5hZ2VyOwotICAgIHByaXZhdGUgTG9jYXRpb24gbUxvY2F0aW9uID0gbmV3IExvY2F0aW9uKExvY2F0aW9uTWFuYWdlci5HUFNfUFJPVklERVIpOwotICAgIHByaXZhdGUgQnVuZGxlIG1Mb2NhdGlvbkV4dHJhcyA9IG5ldyBCdW5kbGUoKTsKLSAgICBwcml2YXRlIEFycmF5TGlzdDxMaXN0ZW5lcj4gbUxpc3RlbmVycyA9IG5ldyBBcnJheUxpc3Q8TGlzdGVuZXI+KCk7Ci0KLSAgICAvLyBHcHNMb2NhdGlvblByb3ZpZGVyJ3MgaGFuZGxlciB0aHJlYWQKLSAgICBwcml2YXRlIGZpbmFsIFRocmVhZCBtVGhyZWFkOwotICAgIC8vIEhhbmRsZXIgZm9yIHByb2Nlc3NpbmcgZXZlbnRzIGluIG1UaHJlYWQuCi0gICAgcHJpdmF0ZSBIYW5kbGVyIG1IYW5kbGVyOwotICAgIC8vIFVzZWQgdG8gc2lnbmFsIHdoZW4gb3VyIG1haW4gdGhyZWFkIGhhcyBpbml0aWFsaXplZCBldmVyeXRoaW5nCi0gICAgcHJpdmF0ZSBmaW5hbCBDb3VudERvd25MYXRjaCBtSW5pdGlhbGl6ZWRMYXRjaCA9IG5ldyBDb3VudERvd25MYXRjaCgxKTsKLSAgICAvLyBUaHJlYWQgZm9yIHJlY2VpdmluZyBldmVudHMgZnJvbSB0aGUgbmF0aXZlIGNvZGUKLSAgICBwcml2YXRlIFRocmVhZCBtRXZlbnRUaHJlYWQ7Ci0KLSAgICBwcml2YXRlIFN0cmluZyBtQUdwc0FwbjsKLSAgICBwcml2YXRlIGludCBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGU7Ci0gICAgcHJpdmF0ZSBmaW5hbCBDb25uZWN0aXZpdHlNYW5hZ2VyIG1Db25uTWdyOwotICAgIHByaXZhdGUgZmluYWwgR3BzTmV0SW5pdGlhdGVkSGFuZGxlciBtTklIYW5kbGVyOyAKLQotICAgIC8vIFdha2Vsb2NrcwotICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBXQUtFTE9DS19LRVkgPSAiR3BzTG9jYXRpb25Qcm92aWRlciI7Ci0gICAgcHJpdmF0ZSBmaW5hbCBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbVdha2VMb2NrOwotCi0gICAgLy8gQWxhcm1zCi0gICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIEFMQVJNX1dBS0VVUCA9ICJjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5BTEFSTV9XQUtFVVAiOwotICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBBTEFSTV9USU1FT1VUID0gImNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkFMQVJNX1RJTUVPVVQiOwotICAgIHByaXZhdGUgZmluYWwgQWxhcm1NYW5hZ2VyIG1BbGFybU1hbmFnZXI7Ci0gICAgcHJpdmF0ZSBmaW5hbCBQZW5kaW5nSW50ZW50IG1XYWtldXBJbnRlbnQ7Ci0gICAgcHJpdmF0ZSBmaW5hbCBQZW5kaW5nSW50ZW50IG1UaW1lb3V0SW50ZW50OwotCi0gICAgcHJpdmF0ZSBmaW5hbCBJQmF0dGVyeVN0YXRzIG1CYXR0ZXJ5U3RhdHM7Ci0gICAgcHJpdmF0ZSBmaW5hbCBTcGFyc2VJbnRBcnJheSBtQ2xpZW50VWlkcyA9IG5ldyBTcGFyc2VJbnRBcnJheSgpOwotCi0gICAgLy8gaG93IG9mdGVuIHRvIHJlcXVlc3QgTlRQIHRpbWUsIGluIG1pbGxpc2Vjb25kcwotICAgIC8vIGN1cnJlbnQgc2V0dGluZyA0IGhvdXJzCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBOVFBfSU5URVJWQUwgPSA0KjYwKjYwKjEwMDA7Ci0gICAgLy8gaG93IGxvbmcgdG8gd2FpdCBpZiB3ZSBoYXZlIGEgbmV0d29yayBlcnJvciBpbiBOVFAgb3IgWFRSQSBkb3dubG9hZGluZwotICAgIC8vIGN1cnJlbnQgc2V0dGluZyAtIDUgbWludXRlcwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgUkVUUllfSU5URVJWQUwgPSA1KjYwKjEwMDA7Ci0KLSAgICAvLyB0byBhdm9pZCBpbmplY3RpbmcgYmFkIE5UUCB0aW1lLCB3ZSByZWplY3QgYW55IHRpbWUgZml4ZXMgdGhhdCBkaWZmZXIgZnJvbSBzeXN0ZW0gdGltZQotICAgIC8vIGJ5IG1vcmUgdGhhbiA1IG1pbnV0ZXMuCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBNQVhfTlRQX1NZU1RFTV9USU1FX09GRlNFVCA9IDUqNjAqMTAwMDsKLQotICAgIHByaXZhdGUgZmluYWwgSUdwc1N0YXR1c1Byb3ZpZGVyIG1HcHNTdGF0dXNQcm92aWRlciA9IG5ldyBJR3BzU3RhdHVzUHJvdmlkZXIuU3R1YigpIHsKLSAgICAgICAgcHVibGljIHZvaWQgYWRkR3BzU3RhdHVzTGlzdGVuZXIoSUdwc1N0YXR1c0xpc3RlbmVyIGxpc3RlbmVyKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJsaXN0ZW5lciBpcyBudWxsIGluIGFkZEdwc1N0YXR1c0xpc3RlbmVyIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7Ci0gICAgICAgICAgICAgICAgSUJpbmRlciBiaW5kZXIgPSBsaXN0ZW5lci5hc0JpbmRlcigpOwotICAgICAgICAgICAgICAgIGludCBzaXplID0gbUxpc3RlbmVycy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgTGlzdGVuZXIgdGVzdCA9IG1MaXN0ZW5lcnMuZ2V0KGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmluZGVyLmVxdWFscyh0ZXN0Lm1MaXN0ZW5lci5hc0JpbmRlcigpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGlzdGVuZXIgYWxyZWFkeSBhZGRlZAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgTGlzdGVuZXIgbCA9IG5ldyBMaXN0ZW5lcihsaXN0ZW5lcik7Ci0gICAgICAgICAgICAgICAgYmluZGVyLmxpbmtUb0RlYXRoKGwsIDApOwotICAgICAgICAgICAgICAgIG1MaXN0ZW5lcnMuYWRkKGwpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlR3BzU3RhdHVzTGlzdGVuZXIoSUdwc1N0YXR1c0xpc3RlbmVyIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBpZiAobGlzdGVuZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigibGlzdGVuZXIgaXMgbnVsbCBpbiBhZGRHcHNTdGF0dXNMaXN0ZW5lciIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgewotICAgICAgICAgICAgICAgIElCaW5kZXIgYmluZGVyID0gbGlzdGVuZXIuYXNCaW5kZXIoKTsKLSAgICAgICAgICAgICAgICBMaXN0ZW5lciBsID0gbnVsbDsKLSAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZSAmJiBsID09IG51bGw7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBMaXN0ZW5lciB0ZXN0ID0gbUxpc3RlbmVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiaW5kZXIuZXF1YWxzKHRlc3QubUxpc3RlbmVyLmFzQmluZGVyKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsID0gdGVzdDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChsICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobCk7Ci0gICAgICAgICAgICAgICAgICAgIGJpbmRlci51bmxpbmtUb0RlYXRoKGwsIDApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwdWJsaWMgSUdwc1N0YXR1c1Byb3ZpZGVyIGdldEdwc1N0YXR1c1Byb3ZpZGVyKCkgewotICAgICAgICByZXR1cm4gbUdwc1N0YXR1c1Byb3ZpZGVyOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbUJyb2FkY2FzdFJlY2lldmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgewotICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKLQotICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoQUxBUk1fV0FLRVVQKSkgewotICAgICAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiQUxBUk1fV0FLRVVQIik7Ci0gICAgICAgICAgICAgICAgc3RhcnROYXZpZ2F0aW5nKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQUxBUk1fVElNRU9VVCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkFMQVJNX1RJTUVPVVQiKTsKLSAgICAgICAgICAgICAgICBoaWJlcm5hdGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTdXBwb3J0ZWQoKSB7Ci0gICAgICAgIHJldHVybiBuYXRpdmVfaXNfc3VwcG9ydGVkKCk7Ci0gICAgfQotCi0gICAgcHVibGljIEdwc0xvY2F0aW9uUHJvdmlkZXIoQ29udGV4dCBjb250ZXh0LCBJTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcikgewotICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIgPSBsb2NhdGlvbk1hbmFnZXI7Ci0gICAgICAgIG1OSUhhbmRsZXIgPSBuZXcgR3BzTmV0SW5pdGlhdGVkSGFuZGxlcihjb250ZXh0LCB0aGlzKTsKLQotICAgICAgICBtTG9jYXRpb24uc2V0RXh0cmFzKG1Mb2NhdGlvbkV4dHJhcyk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgd2FrZSBsb2NrCi0gICAgICAgIFBvd2VyTWFuYWdlciBwb3dlck1hbmFnZXIgPSAoUG93ZXJNYW5hZ2VyKSBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuUE9XRVJfU0VSVklDRSk7Ci0gICAgICAgIG1XYWtlTG9jayA9IHBvd2VyTWFuYWdlci5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssIFdBS0VMT0NLX0tFWSk7Ci0KLSAgICAgICAgbUFsYXJtTWFuYWdlciA9IChBbGFybU1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOwotICAgICAgICBtV2FrZXVwSW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIG5ldyBJbnRlbnQoQUxBUk1fV0FLRVVQKSwgMCk7Ci0gICAgICAgIG1UaW1lb3V0SW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIG5ldyBJbnRlbnQoQUxBUk1fVElNRU9VVCksIDApOwotCi0gICAgICAgIG1Db25uTWdyID0gKENvbm5lY3Rpdml0eU1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQ09OTkVDVElWSVRZX1NFUlZJQ0UpOwotCi0gICAgICAgIC8vIEJhdHRlcnkgc3RhdGlzdGljcyBzZXJ2aWNlIHRvIGJlIG5vdGlmaWVkIHdoZW4gR1BTIHR1cm5zIG9uIG9yIG9mZgotICAgICAgICBtQmF0dGVyeVN0YXRzID0gSUJhdHRlcnlTdGF0cy5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoImJhdHRlcnlpbmZvIikpOwotCi0gICAgICAgIG1Qcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXMoKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKFBST1BFUlRJRVNfRklMRSk7Ci0gICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gc3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsKLSAgICAgICAgICAgIG1Qcm9wZXJ0aWVzLmxvYWQoc3RyZWFtKTsKLSAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpOwotICAgICAgICAgICAgbU50cFNlcnZlciA9IG1Qcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJOVFBfU0VSVkVSIiwgbnVsbCk7Ci0KLSAgICAgICAgICAgIG1TdXBsU2VydmVySG9zdCA9IG1Qcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJTVVBMX0hPU1QiKTsKLSAgICAgICAgICAgIFN0cmluZyBwb3J0U3RyaW5nID0gbVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIlNVUExfUE9SVCIpOwotICAgICAgICAgICAgaWYgKG1TdXBsU2VydmVySG9zdCAhPSBudWxsICYmIHBvcnRTdHJpbmcgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TdXBsU2VydmVyUG9ydCA9IEludGVnZXIucGFyc2VJbnQocG9ydFN0cmluZyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAidW5hYmxlIHRvIHBhcnNlIFNVUExfUE9SVDogIiArIHBvcnRTdHJpbmcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbUMyS1NlcnZlckhvc3QgPSBtUHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiQzJLX0hPU1QiKTsKLSAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBtUHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiQzJLX1BPUlQiKTsKLSAgICAgICAgICAgIGlmIChtQzJLU2VydmVySG9zdCAhPSBudWxsICYmIHBvcnRTdHJpbmcgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1DMktTZXJ2ZXJQb3J0ID0gSW50ZWdlci5wYXJzZUludChwb3J0U3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJ1bmFibGUgdG8gcGFyc2UgQzJLX1BPUlQ6ICIgKyBwb3J0U3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIExvZy53KFRBRywgIkNvdWxkIG5vdCBvcGVuIEdQUyBjb25maWd1cmF0aW9uIGZpbGUgIiArIFBST1BFUlRJRVNfRklMRSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyB3YWl0IHVudGlsIHdlIGFyZSBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgcmV0dXJuaW5nCi0gICAgICAgIG1UaHJlYWQgPSBuZXcgR3BzTG9jYXRpb25Qcm92aWRlclRocmVhZCgpOwotICAgICAgICBtVGhyZWFkLnN0YXJ0KCk7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIG1Jbml0aWFsaXplZExhdGNoLmF3YWl0KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5pbnRlcnJ1cHQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplKCkgewotICAgICAgICAvLyByZWdpc3RlciBvdXIgcmVjZWl2ZXIgb24gb3VyIHRocmVhZCByYXRoZXIgdGhhbiB0aGUgbWFpbiB0aHJlYWQKLSAgICAgICAgSW50ZW50RmlsdGVyIGludGVudEZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKLSAgICAgICAgaW50ZW50RmlsdGVyLmFkZEFjdGlvbihBTEFSTV9XQUtFVVApOwotICAgICAgICBpbnRlbnRGaWx0ZXIuYWRkQWN0aW9uKEFMQVJNX1RJTUVPVVQpOwotICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZGNhc3RSZWNpZXZlciwgaW50ZW50RmlsdGVyKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoaXMgcHJvdmlkZXIuCi0gICAgICovCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gTG9jYXRpb25NYW5hZ2VyLkdQU19QUk9WSURFUjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIHJlcXVpcmVzIGFjY2VzcyB0byBhCi0gICAgICogZGF0YSBuZXR3b3JrIChlLmcuLCB0aGUgSW50ZXJuZXQpLCBmYWxzZSBvdGhlcndpc2UuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKCkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB1cGRhdGVOZXR3b3JrU3RhdGUoaW50IHN0YXRlLCBOZXR3b3JrSW5mbyBpbmZvKSB7Ci0gICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFVQREFURV9ORVRXT1JLX1NUQVRFKTsKLSAgICAgICAgTWVzc2FnZSBtID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIFVQREFURV9ORVRXT1JLX1NUQVRFKTsKLSAgICAgICAgbS5hcmcxID0gc3RhdGU7Ci0gICAgICAgIG0ub2JqID0gaW5mbzsKLSAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKLSAgICAgICAgbU5ldHdvcmtBdmFpbGFibGUgPSAoc3RhdGUgPT0gTG9jYXRpb25Qcm92aWRlci5BVkFJTEFCTEUpOwotCi0gICAgICAgIGlmIChERUJVRykgewotICAgICAgICAgICAgTG9nLmQoVEFHLCAidXBkYXRlTmV0d29ya1N0YXRlICIgKyAobU5ldHdvcmtBdmFpbGFibGUgPyAiYXZhaWxhYmxlIiA6ICJ1bmF2YWlsYWJsZSIpCi0gICAgICAgICAgICAgICAgKyAiIGluZm86ICIgKyBpbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmZvICE9IG51bGwgJiYgaW5mby5nZXRUeXBlKCkgPT0gQ29ubmVjdGl2aXR5TWFuYWdlci5UWVBFX01PQklMRV9TVVBMCi0gICAgICAgICAgICAgICAgJiYgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID09IEFHUFNfREFUQV9DT05ORUNUSU9OX09QRU5JTkcpIHsKLSAgICAgICAgICAgIFN0cmluZyBhcG5OYW1lID0gaW5mby5nZXRFeHRyYUluZm8oKTsKLSAgICAgICAgICAgIGlmIChtTmV0d29ya0F2YWlsYWJsZSAmJiBhcG5OYW1lICE9IG51bGwgJiYgYXBuTmFtZS5sZW5ndGgoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBtQUdwc0FwbiA9IGFwbk5hbWU7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJjYWxsIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9vcGVuIik7Ci0gICAgICAgICAgICAgICAgbmF0aXZlX2FncHNfZGF0YV9jb25uX29wZW4oYXBuTmFtZSk7Ci0gICAgICAgICAgICAgICAgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID0gQUdQU19EQVRBX0NPTk5FQ1RJT05fT1BFTjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJjYWxsIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQiKTsKLSAgICAgICAgICAgICAgICBtQUdwc0FwbiA9IG51bGw7Ci0gICAgICAgICAgICAgICAgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID0gQUdQU19EQVRBX0NPTk5FQ1RJT05fQ0xPU0VEOwotICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtTmV0d29ya0F2YWlsYWJsZSkgewotICAgICAgICAgICAgaWYgKG1JbmplY3ROdHBUaW1lUGVuZGluZykgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKElOSkVDVF9OVFBfVElNRSk7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIElOSkVDVF9OVFBfVElNRSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1Eb3dubG9hZFh0cmFEYXRhUGVuZGluZykgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKERPV05MT0FEX1hUUkFfREFUQSk7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIERPV05MT0FEX1hUUkFfREFUQSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUluamVjdE50cFRpbWUoKSB7Ci0gICAgICAgIGlmICghbU5ldHdvcmtBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIC8vIHRyeSBhZ2FpbiB3aGVuIG5ldHdvcmsgaXMgdXAKLSAgICAgICAgICAgIG1JbmplY3ROdHBUaW1lUGVuZGluZyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbUluamVjdE50cFRpbWVQZW5kaW5nID0gZmFsc2U7Ci0KLSAgICAgICAgU250cENsaWVudCBjbGllbnQgPSBuZXcgU250cENsaWVudCgpOwotICAgICAgICBsb25nIGRlbGF5OwotCi0gICAgICAgIGlmIChjbGllbnQucmVxdWVzdFRpbWUobU50cFNlcnZlciwgMTAwMDApKSB7Ci0gICAgICAgICAgICBsb25nIHRpbWUgPSBjbGllbnQuZ2V0TnRwVGltZSgpOwotICAgICAgICAgICAgbG9uZyB0aW1lUmVmZXJlbmNlID0gY2xpZW50LmdldE50cFRpbWVSZWZlcmVuY2UoKTsKLSAgICAgICAgICAgIGludCBjZXJ0YWludHkgPSAoaW50KShjbGllbnQuZ2V0Um91bmRUcmlwVGltZSgpLzIpOwotICAgICAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgIGxvbmcgc3lzdGVtVGltZU9mZnNldCA9IHRpbWUgLSBub3c7Ci0KLSAgICAgICAgICAgIExvZy5kKFRBRywgIk5UUCBzZXJ2ZXIgcmV0dXJuZWQ6ICIKLSAgICAgICAgICAgICAgICAgICAgKyB0aW1lICsgIiAoIiArIG5ldyBEYXRlKHRpbWUpCi0gICAgICAgICAgICAgICAgICAgICsgIikgcmVmZXJlbmNlOiAiICsgdGltZVJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICArICIgY2VydGFpbnR5OiAiICsgY2VydGFpbnR5Ci0gICAgICAgICAgICAgICAgICAgICsgIiBzeXN0ZW0gdGltZSBvZmZzZXQ6ICIgKyBzeXN0ZW1UaW1lT2Zmc2V0KTsKLQotICAgICAgICAgICAgLy8gc2FuaXR5IGNoZWNrIE5UUCB0aW1lIGFuZCBkbyBub3QgdXNlIGlmIGl0IGlzIHRvbyBmYXIgZnJvbSBzeXN0ZW0gdGltZQotICAgICAgICAgICAgaWYgKHN5c3RlbVRpbWVPZmZzZXQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgc3lzdGVtVGltZU9mZnNldCA9IC1zeXN0ZW1UaW1lT2Zmc2V0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN5c3RlbVRpbWVPZmZzZXQgPCBNQVhfTlRQX1NZU1RFTV9USU1FX09GRlNFVCkgewotICAgICAgICAgICAgICAgIG5hdGl2ZV9pbmplY3RfdGltZSh0aW1lLCB0aW1lUmVmZXJlbmNlLCBjZXJ0YWludHkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJOVFAgdGltZSBkaWZmZXJzIGZyb20gc3lzdGVtIHRpbWUgYnkgIiArIHN5c3RlbVRpbWVPZmZzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIm1zLiAgSWdub3JpbmcuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWxheSA9IE5UUF9JTlRFUlZBTDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAicmVxdWVzdFRpbWUgZmFpbGVkIik7Ci0gICAgICAgICAgICBkZWxheSA9IFJFVFJZX0lOVEVSVkFMOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc2VuZCBkZWxheWVkIG1lc3NhZ2UgZm9yIG5leHQgTlRQIGluamVjdGlvbgotICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhJTkpFQ1RfTlRQX1RJTUUpOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIElOSkVDVF9OVFBfVElNRSksIGRlbGF5KTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlRG93bmxvYWRYdHJhRGF0YSgpIHsKLSAgICAgICAgaWYgKCFtRG93bmxvYWRYdHJhRGF0YVBlbmRpbmcpIHsKLSAgICAgICAgICAgIC8vIHRyeSBhZ2FpbiB3aGVuIG5ldHdvcmsgaXMgdXAKLSAgICAgICAgICAgIG1Eb3dubG9hZFh0cmFEYXRhUGVuZGluZyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbURvd25sb2FkWHRyYURhdGFQZW5kaW5nID0gZmFsc2U7Ci0KLQotICAgICAgICBHcHNYdHJhRG93bmxvYWRlciB4dHJhRG93bmxvYWRlciA9IG5ldyBHcHNYdHJhRG93bmxvYWRlcihtQ29udGV4dCwgbVByb3BlcnRpZXMpOwotICAgICAgICBieXRlW10gZGF0YSA9IHh0cmFEb3dubG9hZGVyLmRvd25sb2FkWHRyYURhdGEoKTsKLSAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKERFQlVHKSB7Ci0gICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiY2FsbGluZyBuYXRpdmVfaW5qZWN0X3h0cmFfZGF0YSIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmF0aXZlX2luamVjdF94dHJhX2RhdGEoZGF0YSwgZGF0YS5sZW5ndGgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gdHJ5IGFnYWluIGxhdGVyCi0gICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhET1dOTE9BRF9YVFJBX0RBVEEpOwotICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBET1dOTE9BRF9YVFJBX0RBVEEpLCBSRVRSWV9JTlRFUlZBTCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGlzIGlzIGNhbGxlZCB0byBpbmZvcm0gdXMgd2hlbiBhbm90aGVyIGxvY2F0aW9uIHByb3ZpZGVyIHJldHVybnMgYSBsb2NhdGlvbi4KLSAgICAgKiBTb21lZGF5IHdlIG1pZ2h0IHVzZSB0aGlzIGZvciBuZXR3b3JrIGxvY2F0aW9uIGluamVjdGlvbiB0byBhaWQgdGhlIEdQUwotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKSB7Ci0gICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFVQREFURV9MT0NBVElPTik7Ci0gICAgICAgIE1lc3NhZ2UgbSA9IE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBVUERBVEVfTE9DQVRJT04pOwotICAgICAgICBtLm9iaiA9IGxvY2F0aW9uOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlVXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pIHsKLSAgICAgICAgaWYgKGxvY2F0aW9uLmhhc0FjY3VyYWN5KCkpIHsKLSAgICAgICAgICAgIG5hdGl2ZV9pbmplY3RfbG9jYXRpb24obG9jYXRpb24uZ2V0TGF0aXR1ZGUoKSwgbG9jYXRpb24uZ2V0TG9uZ2l0dWRlKCksCi0gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmdldEFjY3VyYWN5KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciByZXF1aXJlcyBhY2Nlc3MgdG8gYQotICAgICAqIHNhdGVsbGl0ZS1iYXNlZCBwb3NpdGlvbmluZyBzeXN0ZW0gKGUuZy4sIEdQUyksIGZhbHNlCi0gICAgICogb3RoZXJ3aXNlLgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzU2F0ZWxsaXRlKCkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIHJlcXVpcmVzIGFjY2VzcyB0byBhbiBhcHByb3ByaWF0ZQotICAgICAqIGNlbGx1bGFyIG5ldHdvcmsgKGUuZy4sIHRvIG1ha2UgdXNlIG9mIGNlbGwgdG93ZXIgSURzKSwgZmFsc2UKLSAgICAgKiBvdGhlcndpc2UuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNDZWxsKCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2Ugb2YgdGhpcyBwcm92aWRlciBtYXkgcmVzdWx0IGluIGEKLSAgICAgKiBtb25ldGFyeSBjaGFyZ2UgdG8gdGhlIHVzZXIsIGZhbHNlIGlmIHVzZSBpcyBmcmVlLiAgSXQgaXMgdXAgdG8KLSAgICAgKiBlYWNoIHByb3ZpZGVyIHRvIGdpdmUgYWNjdXJhdGUgaW5mb3JtYXRpb24uCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0KCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciBpcyBhYmxlIHRvIHByb3ZpZGUgYWx0aXR1ZGUKLSAgICAgKiBpbmZvcm1hdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBwcm92aWRlciB0aGF0IHJlcG9ydHMgYWx0aXR1ZGUKLSAgICAgKiB1bmRlciBtb3N0IGNpcmN1bXN0YW5jZXMgYnV0IG1heSBvY2Nhc3Npb25hbGx5IG5vdCByZXBvcnQgaXQKLSAgICAgKiBzaG91bGQgcmV0dXJuIHRydWUuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNBbHRpdHVkZSgpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciBpcyBhYmxlIHRvIHByb3ZpZGUgc3BlZWQKLSAgICAgKiBpbmZvcm1hdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBwcm92aWRlciB0aGF0IHJlcG9ydHMgc3BlZWQKLSAgICAgKiB1bmRlciBtb3N0IGNpcmN1bXN0YW5jZXMgYnV0IG1heSBvY2Nhc3Npb25hbGx5IG5vdCByZXBvcnQgaXQKLSAgICAgKiBzaG91bGQgcmV0dXJuIHRydWUuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciBpcyBhYmxlIHRvIHByb3ZpZGUgYmVhcmluZwotICAgICAqIGluZm9ybWF0aW9uLCBmYWxzZSBvdGhlcndpc2UuICBBIHByb3ZpZGVyIHRoYXQgcmVwb3J0cyBiZWFyaW5nCi0gICAgICogdW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzIGJ1dCBtYXkgb2NjYXNzaW9uYWxseSBub3QgcmVwb3J0IGl0Ci0gICAgICogc2hvdWxkIHJldHVybiB0cnVlLgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQmVhcmluZygpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgcG93ZXIgcmVxdWlyZW1lbnQgZm9yIHRoaXMgcHJvdmlkZXIuCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHRoZSBwb3dlciByZXF1aXJlbWVudCBmb3IgdGhpcyBwcm92aWRlciwgYXMgb25lIG9mIHRoZQotICAgICAqIGNvbnN0YW50cyBDcml0ZXJpYS5QT1dFUl9SRVFVSVJFTUVOVF8qLgotICAgICAqLwotICAgIHB1YmxpYyBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpIHsKLSAgICAgICAgcmV0dXJuIENyaXRlcmlhLlBPV0VSX0hJR0g7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgaG9yaXpvbnRhbCBhY2N1cmFjeSBvZiB0aGlzIHByb3ZpZGVyCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHRoZSBhY2N1cmFjeSBvZiBsb2NhdGlvbiBmcm9tIHRoaXMgcHJvdmlkZXIsIGFzIG9uZQotICAgICAqIG9mIHRoZSBjb25zdGFudHMgQ3JpdGVyaWEuQUNDVVJBQ1lfKi4KLSAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldEFjY3VyYWN5KCkgewotICAgICAgICByZXR1cm4gQ3JpdGVyaWEuQUNDVVJBQ1lfRklORTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBFbmFibGVzIHRoaXMgcHJvdmlkZXIuICBXaGVuIGVuYWJsZWQsIGNhbGxzIHRvIGdldFN0YXR1cygpCi0gICAgICogbXVzdCBiZSBoYW5kbGVkLiAgSGFyZHdhcmUgbWF5IGJlIHN0YXJ0ZWQgdXAKLSAgICAgKiB3aGVuIHRoZSBwcm92aWRlciBpcyBlbmFibGVkLgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtSGFuZGxlcikgewotICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoRU5BQkxFKTsKLSAgICAgICAgICAgIE1lc3NhZ2UgbSA9IE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBFTkFCTEUpOwotICAgICAgICAgICAgbS5hcmcxID0gMTsKLSAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUVuYWJsZSgpIHsKLSAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJoYW5kbGVFbmFibGUiKTsKLSAgICAgICAgaWYgKG1FbmFibGVkKSByZXR1cm47Ci0gICAgICAgIG1FbmFibGVkID0gbmF0aXZlX2luaXQoKTsKLQotICAgICAgICBpZiAobUVuYWJsZWQpIHsKLSAgICAgICAgICAgIGlmIChtU3VwbFNlcnZlckhvc3QgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG5hdGl2ZV9zZXRfYWdwc19zZXJ2ZXIoQUdQU19UWVBFX1NVUEwsIG1TdXBsU2VydmVySG9zdCwgbVN1cGxTZXJ2ZXJQb3J0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtQzJLU2VydmVySG9zdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbmF0aXZlX3NldF9hZ3BzX3NlcnZlcihBR1BTX1RZUEVfQzJLLCBtQzJLU2VydmVySG9zdCwgbUMyS1NlcnZlclBvcnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBydW4gZXZlbnQgbGlzdGVuZXIgdGhyZWFkIHdoaWxlIHdlIGFyZSBlbmFibGVkCi0gICAgICAgICAgICBtRXZlbnRUaHJlYWQgPSBuZXcgR3BzRXZlbnRUaHJlYWQoKTsKLSAgICAgICAgICAgIG1FdmVudFRocmVhZC5zdGFydCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTG9nLncoVEFHLCAiRmFpbGVkIHRvIGVuYWJsZSBsb2NhdGlvbiBwcm92aWRlciIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRGlzYWJsZXMgdGhpcyBwcm92aWRlci4gIFdoZW4gZGlzYWJsZWQsIGNhbGxzIHRvIGdldFN0YXR1cygpCi0gICAgICogbmVlZCBub3QgYmUgaGFuZGxlZC4gIEhhcmR3YXJlIG1heSBiZSBzaHV0Ci0gICAgICogZG93biB3aGlsZSB0aGUgcHJvdmlkZXIgaXMgZGlzYWJsZWQuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgZGlzYWJsZSgpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtSGFuZGxlcikgewotICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoRU5BQkxFKTsKLSAgICAgICAgICAgIE1lc3NhZ2UgbSA9IE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBFTkFCTEUpOwotICAgICAgICAgICAgbS5hcmcxID0gMDsKLSAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZURpc2FibGUoKSB7Ci0gICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlRGlzYWJsZSIpOwotICAgICAgICBpZiAoIW1FbmFibGVkKSByZXR1cm47Ci0KLSAgICAgICAgbUVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgc3RvcE5hdmlnYXRpbmcoKTsKLSAgICAgICAgbmF0aXZlX2Rpc2FibGUoKTsKLQotICAgICAgICAvLyBtYWtlIHN1cmUgb3VyIGV2ZW50IHRocmVhZCBleGl0cwotICAgICAgICBpZiAobUV2ZW50VGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbUV2ZW50VGhyZWFkLmpvaW4oKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB3aGVuIGpvaW5pbmcgbUV2ZW50VGhyZWFkIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtRXZlbnRUaHJlYWQgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZG8gdGhpcyBiZWZvcmUgcmVsZWFzaW5nIHdha2Vsb2NrCi0gICAgICAgIG5hdGl2ZV9jbGVhbnVwKCk7Ci0KLSAgICAgICAgLy8gVGhlIEdwc0V2ZW50VGhyZWFkIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBHUFMgdG8gc2h1dGRvd24KLSAgICAgICAgLy8gc28gd2UgbmVlZCB0byByZXBvcnQgdGhlIEdQU19TVEFUVVNfRU5HSU5FX09GRiBldmVudCBoZXJlCi0gICAgICAgIGlmIChtTmF2aWdhdGluZykgewotICAgICAgICAgICAgcmVwb3J0U3RhdHVzKEdQU19TVEFUVVNfU0VTU0lPTl9FTkQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtRW5naW5lT24pIHsKLSAgICAgICAgICAgIHJlcG9ydFN0YXR1cyhHUFNfU1RBVFVTX0VOR0lORV9PRkYpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaXNFbmFibGVkKCkgewotICAgICAgICByZXR1cm4gbUVuYWJsZWQ7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRTdGF0dXMoQnVuZGxlIGV4dHJhcykgewotICAgICAgICBpZiAoZXh0cmFzICE9IG51bGwpIHsKLSAgICAgICAgICAgIGV4dHJhcy5wdXRJbnQoInNhdGVsbGl0ZXMiLCBtU3ZDb3VudCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1TdGF0dXM7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVN0YXR1cyhpbnQgc3RhdHVzLCBpbnQgc3ZDb3VudCkgewotICAgICAgICBpZiAoc3RhdHVzICE9IG1TdGF0dXMgfHwgc3ZDb3VudCAhPSBtU3ZDb3VudCkgewotICAgICAgICAgICAgbVN0YXR1cyA9IHN0YXR1czsKLSAgICAgICAgICAgIG1TdkNvdW50ID0gc3ZDb3VudDsKLSAgICAgICAgICAgIG1Mb2NhdGlvbkV4dHJhcy5wdXRJbnQoInNhdGVsbGl0ZXMiLCBzdkNvdW50KTsKLSAgICAgICAgICAgIG1TdGF0dXNVcGRhdGVUaW1lID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgbG9uZyBnZXRTdGF0dXNVcGRhdGVUaW1lKCkgewotICAgICAgICByZXR1cm4gbVN0YXR1c1VwZGF0ZVRpbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1IYW5kbGVyKSB7Ci0gICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhFTkFCTEVfVFJBQ0tJTkcpOwotICAgICAgICAgICAgTWVzc2FnZSBtID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIEVOQUJMRV9UUkFDS0lORyk7Ci0gICAgICAgICAgICBtLmFyZzEgPSAoZW5hYmxlID8gMSA6IDApOwotICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlRW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSkgewotICAgICAgICBpZiAoZW5hYmxlKSB7Ci0gICAgICAgICAgICBtVFRGRiA9IDA7Ci0gICAgICAgICAgICBtTGFzdEZpeFRpbWUgPSAwOwotICAgICAgICAgICAgc3RhcnROYXZpZ2F0aW5nKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtV2FrZXVwSW50ZW50KTsKLSAgICAgICAgICAgIG1BbGFybU1hbmFnZXIuY2FuY2VsKG1UaW1lb3V0SW50ZW50KTsKLSAgICAgICAgICAgIHN0b3BOYXZpZ2F0aW5nKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgewotICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldE1pblRpbWUgIiArIG1pblRpbWUpOwotICAgICAgICAKLSAgICAgICAgaWYgKG1pblRpbWUgPj0gMCkgewotICAgICAgICAgICAgaW50IGludGVydmFsID0gKGludCkobWluVGltZS8xMDAwKTsKLSAgICAgICAgICAgIGlmIChpbnRlcnZhbCA8IDEpIHsKLSAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtRml4SW50ZXJ2YWwgPSBpbnRlcnZhbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0SW50ZXJuYWxTdGF0ZSgpIHsKLSAgICAgICAgcmV0dXJuIG5hdGl2ZV9nZXRfaW50ZXJuYWxfc3RhdGUoKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIGNsYXNzIExpc3RlbmVyIGltcGxlbWVudHMgSUJpbmRlci5EZWF0aFJlY2lwaWVudCB7Ci0gICAgICAgIGZpbmFsIElHcHNTdGF0dXNMaXN0ZW5lciBtTGlzdGVuZXI7Ci0gICAgICAgIAotICAgICAgICBpbnQgbVNlbnNvcnMgPSAwOwotICAgICAgICAKLSAgICAgICAgTGlzdGVuZXIoSUdwc1N0YXR1c0xpc3RlbmVyIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBtTGlzdGVuZXIgPSBsaXN0ZW5lcjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcHVibGljIHZvaWQgYmluZGVyRGllZCgpIHsKLSAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiR1BTIHN0YXR1cyBsaXN0ZW5lciBkaWVkIik7Ci0KLSAgICAgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7Ci0gICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUodGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobUxpc3RlbmVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtTGlzdGVuZXIuYXNCaW5kZXIoKS51bmxpbmtUb0RlYXRoKHRoaXMsIDApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoaW50IHVpZCkgewotICAgICAgICBNZXNzYWdlIG0gPSBNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgQUREX0xJU1RFTkVSKTsKLSAgICAgICAgbS5hcmcxID0gdWlkOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlQWRkTGlzdGVuZXIoaW50IHVpZCkgewotICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgewotICAgICAgICAgICAgaWYgKG1DbGllbnRVaWRzLmluZGV4T2ZLZXkodWlkKSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGJlIGhlcmUgLS0gYWxyZWFkeSBoYXZlIHRoaXMgdWlkLgotICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkR1cGxpY2F0ZSBhZGQgbGlzdGVuZXIgZm9yIHVpZCAiICsgdWlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtQ2xpZW50VWlkcy5wdXQodWlkLCAwKTsKLSAgICAgICAgICAgIGlmIChtTmF2aWdhdGluZykgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMubm90ZVN0YXJ0R3BzKHVpZCk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIGFkZExpc3RlbmVyIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoaW50IHVpZCkgewotICAgICAgICBNZXNzYWdlIG0gPSBNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgUkVNT1ZFX0xJU1RFTkVSKTsKLSAgICAgICAgbS5hcmcxID0gdWlkOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlUmVtb3ZlTGlzdGVuZXIoaW50IHVpZCkgewotICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgewotICAgICAgICAgICAgaWYgKG1DbGllbnRVaWRzLmluZGV4T2ZLZXkodWlkKSA8IDApIHsKLSAgICAgICAgICAgICAgICAvLyBTaG91bGRuJ3QgYmUgaGVyZSAtLSBkb24ndCBoYXZlIHRoaXMgdWlkLgotICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlVubmVlZGVkIHJlbW92ZSBsaXN0ZW5lciBmb3IgdWlkICIgKyB1aWQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1DbGllbnRVaWRzLmRlbGV0ZSh1aWQpOwotICAgICAgICAgICAgaWYgKG1OYXZpZ2F0aW5nKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbUJhdHRlcnlTdGF0cy5ub3RlU3RvcEdwcyh1aWQpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZW1vdmVMaXN0ZW5lciIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHNlbmRFeHRyYUNvbW1hbmQoU3RyaW5nIGNvbW1hbmQsIEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgCi0gICAgICAgIGlmICgiZGVsZXRlX2FpZGluZ19kYXRhIi5lcXVhbHMoY29tbWFuZCkpIHsKLSAgICAgICAgICAgIHJldHVybiBkZWxldGVBaWRpbmdEYXRhKGV4dHJhcyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCJmb3JjZV90aW1lX2luamVjdGlvbiIuZXF1YWxzKGNvbW1hbmQpKSB7Ci0gICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhJTkpFQ1RfTlRQX1RJTUUpOwotICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIElOSkVDVF9OVFBfVElNRSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCJmb3JjZV94dHJhX2luamVjdGlvbiIuZXF1YWxzKGNvbW1hbmQpKSB7Ci0gICAgICAgICAgICBpZiAobmF0aXZlX3N1cHBvcnRzX3h0cmEoKSkgewotICAgICAgICAgICAgICAgIHh0cmFEb3dubG9hZFJlcXVlc3QoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgTG9nLncoVEFHLCAic2VuZEV4dHJhQ29tbWFuZDogdW5rbm93biBjb21tYW5kICIgKyBjb21tYW5kKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBkZWxldGVBaWRpbmdEYXRhKEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgaW50IGZsYWdzOwotCi0gICAgICAgIGlmIChleHRyYXMgPT0gbnVsbCkgewotICAgICAgICAgICAgZmxhZ3MgPSBHUFNfREVMRVRFX0FMTDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZsYWdzID0gMDsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigiZXBoZW1lcmlzIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfRVBIRU1FUklTOwotICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJhbG1hbmFjIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfQUxNQU5BQzsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigicG9zaXRpb24iKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9QT1NJVElPTjsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigidGltZSIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1RJTUU7Ci0gICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oImlvbm8iKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9JT05POwotICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJ1dGMiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9VVEM7Ci0gICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oImhlYWx0aCIpKSBmbGFncyB8PSBHUFNfREVMRVRFX0hFQUxUSDsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigic3ZkaXIiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9TVkRJUjsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigic3ZzdGVlciIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1NWU1RFRVI7Ci0gICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oInNhZGF0YSIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1NBREFUQTsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigicnRpIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfUlRJOwotICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJjZWxsZGItaW5mbyIpKSBmbGFncyB8PSBHUFNfREVMRVRFX0NFTExEQl9JTkZPOwotICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJhbGwiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9BTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmxhZ3MgIT0gMCkgewotICAgICAgICAgICAgbmF0aXZlX2RlbGV0ZV9haWRpbmdfZGF0YShmbGFncyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgc3RhcnROYXZpZ2F0aW5nKCkgewotICAgICAgICBpZiAoIW1TdGFydGVkKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInN0YXJ0TmF2aWdhdGluZyIpOwotICAgICAgICAgICAgbVN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgaW50IHBvc2l0aW9uTW9kZTsKLSAgICAgICAgICAgIGlmIChTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuQVNTSVNURURfR1BTX0VOQUJMRUQsIDEpICE9IDApIHsKLSAgICAgICAgICAgICAgICBwb3NpdGlvbk1vZGUgPSBHUFNfUE9TSVRJT05fTU9ERV9NU19CQVNFRDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcG9zaXRpb25Nb2RlID0gR1BTX1BPU0lUSU9OX01PREVfU1RBTkRBTE9ORTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFuYXRpdmVfc3RhcnQocG9zaXRpb25Nb2RlLCBmYWxzZSwgMSkpIHsKLSAgICAgICAgICAgICAgICBtU3RhcnRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIm5hdGl2ZV9zdGFydCBmYWlsZWQgaW4gc3RhcnROYXZpZ2F0aW5nKCkiKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHJlc2V0IFNWIGNvdW50IHRvIHplcm8KLSAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhMb2NhdGlvblByb3ZpZGVyLlRFTVBPUkFSSUxZX1VOQVZBSUxBQkxFLCAwKTsKLSAgICAgICAgICAgIG1GaXhDb3VudCA9IDA7Ci0gICAgICAgICAgICBtRml4UmVxdWVzdFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgIC8vIHNldCB0aW1lciB0byBnaXZlIHVwIGlmIHdlIGRvIG5vdCByZWNlaXZlIGEgZml4IHdpdGhpbiBOT19GSVhfVElNRU9VVAotICAgICAgICAgICAgLy8gYW5kIG91ciBmaXggaW50ZXJ2YWwgaXMgbm90IHNob3J0Ci0gICAgICAgICAgICBpZiAobUZpeEludGVydmFsID49IE5PX0ZJWF9USU1FT1VUKSB7Ci0gICAgICAgICAgICAgICAgbUFsYXJtTWFuYWdlci5zZXQoQWxhcm1NYW5hZ2VyLkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQLAotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkgKyBOT19GSVhfVElNRU9VVCAqIDEwMDAsIG1UaW1lb3V0SW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzdG9wTmF2aWdhdGluZygpIHsKLSAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzdG9wTmF2aWdhdGluZyIpOwotICAgICAgICBpZiAobVN0YXJ0ZWQpIHsKLSAgICAgICAgICAgIG1TdGFydGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBuYXRpdmVfc3RvcCgpOwotICAgICAgICAgICAgbVRURkYgPSAwOwotICAgICAgICAgICAgbUxhc3RGaXhUaW1lID0gMDsKLSAgICAgICAgICAgIG1Mb2NhdGlvbkZsYWdzID0gTE9DQVRJT05fSU5WQUxJRDsKLQotICAgICAgICAgICAgLy8gcmVzZXQgU1YgY291bnQgdG8gemVybwotICAgICAgICAgICAgdXBkYXRlU3RhdHVzKExvY2F0aW9uUHJvdmlkZXIuVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUsIDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhpYmVybmF0ZSgpIHsKLSAgICAgICAgLy8gc3RvcCBHUFMgdW50aWwgb3VyIG5leHQgZml4IGludGVydmFsIGFycml2ZXMKLSAgICAgICAgc3RvcE5hdmlnYXRpbmcoKTsKLSAgICAgICAgbUZpeENvdW50ID0gMDsKLSAgICAgICAgbUFsYXJtTWFuYWdlci5jYW5jZWwobVRpbWVvdXRJbnRlbnQpOwotICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtV2FrZXVwSW50ZW50KTsKLSAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAgICAgbUFsYXJtTWFuYWdlci5zZXQoQWxhcm1NYW5hZ2VyLkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQLAotICAgICAgICAgICAgICAgIFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpICsgbUZpeEludGVydmFsICogMTAwMCwgbVdha2V1cEludGVudCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gdXBkYXRlIG91ciBwb3NpdGlvbi4KLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgcmVwb3J0TG9jYXRpb24oaW50IGZsYWdzLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwKLSAgICAgICAgICAgIGZsb2F0IHNwZWVkLCBmbG9hdCBiZWFyaW5nLCBmbG9hdCBhY2N1cmFjeSwgbG9uZyB0aW1lc3RhbXApIHsKLSAgICAgICAgaWYgKFZFUkJPU0UpIExvZy52KFRBRywgInJlcG9ydExvY2F0aW9uIGxhdDogIiArIGxhdGl0dWRlICsgIiBsb25nOiAiICsgbG9uZ2l0dWRlICsKLSAgICAgICAgICAgICAgICAiIHRpbWVzdGFtcDogIiArIHRpbWVzdGFtcCk7Ci0KLSAgICAgICAgbUxhc3RGaXhUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7Ci0gICAgICAgIC8vIHJlcG9ydCB0aW1lIHRvIGZpcnN0IGZpeAotICAgICAgICBpZiAobVRURkYgPT0gMCAmJiAoZmxhZ3MgJiBMT0NBVElPTl9IQVNfTEFUX0xPTkcpID09IExPQ0FUSU9OX0hBU19MQVRfTE9ORykgewotICAgICAgICAgICAgbVRURkYgPSAoaW50KShtTGFzdEZpeFRpbWUgLSBtRml4UmVxdWVzdFRpbWUpOwotICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJUVEZGOiAiICsgbVRURkYpOwotCi0gICAgICAgICAgICAvLyBub3RpZnkgc3RhdHVzIGxpc3RlbmVycwotICAgICAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKLSAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIExpc3RlbmVyIGxpc3RlbmVyID0gbUxpc3RlbmVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25GaXJzdEZpeChtVFRGRik7IAotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIHN0b3BOYXZpZ2F0aW5nIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtTGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGp1c3QgZm9yIHNpemUgb2YgbGlzdCBjaGFuZ2luZwotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3luY2hyb25pemVkIChtTG9jYXRpb24pIHsKLSAgICAgICAgICAgIG1Mb2NhdGlvbkZsYWdzID0gZmxhZ3M7Ci0gICAgICAgICAgICBpZiAoKGZsYWdzICYgTE9DQVRJT05fSEFTX0xBVF9MT05HKSA9PSBMT0NBVElPTl9IQVNfTEFUX0xPTkcpIHsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0TGF0aXR1ZGUobGF0aXR1ZGUpOwotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRMb25naXR1ZGUobG9uZ2l0dWRlKTsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0VGltZSh0aW1lc3RhbXApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKChmbGFncyAmIExPQ0FUSU9OX0hBU19BTFRJVFVERSkgPT0gTE9DQVRJT05fSEFTX0FMVElUVURFKSB7Ci0gICAgICAgICAgICAgICAgbUxvY2F0aW9uLnNldEFsdGl0dWRlKGFsdGl0dWRlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUxvY2F0aW9uLnJlbW92ZUFsdGl0dWRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKGZsYWdzICYgTE9DQVRJT05fSEFTX1NQRUVEKSA9PSBMT0NBVElPTl9IQVNfU1BFRUQpIHsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0U3BlZWQoc3BlZWQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24ucmVtb3ZlU3BlZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBMT0NBVElPTl9IQVNfQkVBUklORykgPT0gTE9DQVRJT05fSEFTX0JFQVJJTkcpIHsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0QmVhcmluZyhiZWFyaW5nKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUxvY2F0aW9uLnJlbW92ZUJlYXJpbmcoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBMT0NBVElPTl9IQVNfQUNDVVJBQ1kpID09IExPQ0FUSU9OX0hBU19BQ0NVUkFDWSkgewotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRBY2N1cmFjeShhY2N1cmFjeSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5yZW1vdmVBY2N1cmFjeSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIucmVwb3J0TG9jYXRpb24obUxvY2F0aW9uLCBmYWxzZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBjYWxsaW5nIHJlcG9ydExvY2F0aW9uIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVN0YXJ0ZWQgJiYgbVN0YXR1cyAhPSBMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSkgewotICAgICAgICAgICAgLy8gd2Ugc3RpbGwgd2FudCB0byB0aW1lIG91dCBpZiB3ZSBkbyBub3QgcmVjZWl2ZSBNSU5fRklYX0NPVU5UCi0gICAgICAgICAgICAvLyB3aXRoaW4gdGhlIHRpbWUgb3V0IGFuZCB3ZSBhcmUgcmVxdWVzdGluZyBpbmZyZXF1ZW50IGZpeGVzCi0gICAgICAgICAgICBpZiAobUZpeEludGVydmFsIDwgTk9fRklYX1RJTUVPVVQpIHsKLSAgICAgICAgICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtVGltZW91dEludGVudCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHNlbmQgYW4gaW50ZW50IHRvIG5vdGlmeSB0aGF0IHRoZSBHUFMgaXMgcmVjZWl2aW5nIGZpeGVzLgotICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoR1BTX0ZJWF9DSEFOR0VfQUNUSU9OKTsKLSAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShFWFRSQV9FTkFCTEVELCB0cnVlKTsKLSAgICAgICAgICAgIG1Db250ZXh0LnNlbmRCcm9hZGNhc3QoaW50ZW50KTsKLSAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSwgbVN2Q291bnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1GaXhDb3VudCsrID49IE1JTl9GSVhfQ09VTlQgJiYgbUZpeEludGVydmFsID4gMSkgewotICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJleGNlZWRlZCBNSU5fRklYX0NPVU5UIik7Ci0gICAgICAgICAgICBoaWJlcm5hdGUoKTsKLSAgICAgICAgfQotICAgfQotCi0gICAgLyoqCi0gICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gdXBkYXRlIG91ciBzdGF0dXMKLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgcmVwb3J0U3RhdHVzKGludCBzdGF0dXMpIHsKLSAgICAgICAgaWYgKFZFUkJPU0UpIExvZy52KFRBRywgInJlcG9ydFN0YXR1cyBzdGF0dXM6ICIgKyBzdGF0dXMpOwotCi0gICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7Ci0gICAgICAgICAgICBib29sZWFuIHdhc05hdmlnYXRpbmcgPSBtTmF2aWdhdGluZzsKLQotICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEdQU19TVEFUVVNfU0VTU0lPTl9CRUdJTjoKLSAgICAgICAgICAgICAgICAgICAgbU5hdmlnYXRpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBtRW5naW5lT24gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEdQU19TVEFUVVNfU0VTU0lPTl9FTkQ6Ci0gICAgICAgICAgICAgICAgICAgIG1OYXZpZ2F0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgR1BTX1NUQVRVU19FTkdJTkVfT046Ci0gICAgICAgICAgICAgICAgICAgIG1FbmdpbmVPbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgR1BTX1NUQVRVU19FTkdJTkVfT0ZGOgotICAgICAgICAgICAgICAgICAgICBtRW5naW5lT24gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgbU5hdmlnYXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIGJld2FyZSwgdGhlIGV2ZW50cyBjYW4gY29tZSBvdXQgb2Ygb3JkZXIKLSAgICAgICAgICAgIGlmICgobU5hdmlnYXRpbmcgfHwgbUVuZ2luZU9uKSAmJiAhbVdha2VMb2NrLmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJBY3F1aXJpbmcgd2FrZWxvY2siKTsKLSAgICAgICAgICAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHdhc05hdmlnYXRpbmcgIT0gbU5hdmlnYXRpbmcpIHsKLSAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIExpc3RlbmVyIGxpc3RlbmVyID0gbUxpc3RlbmVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobU5hdmlnYXRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25HcHNTdGFydGVkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLm1MaXN0ZW5lci5vbkdwc1N0b3BwZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZXBvcnRTdGF0dXMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1MaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkanVzdCBmb3Igc2l6ZSBvZiBsaXN0IGNoYW5naW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgYmF0dGVyeSBzdGF0cwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPW1DbGllbnRVaWRzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgdWlkID0gbUNsaWVudFVpZHMua2V5QXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobU5hdmlnYXRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLm5vdGVTdGFydEdwcyh1aWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLm5vdGVTdG9wR3BzKHVpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gcmVwb3J0U3RhdHVzIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gc2VuZCBhbiBpbnRlbnQgdG8gbm90aWZ5IHRoYXQgdGhlIEdQUyBoYXMgYmVlbiBlbmFibGVkIG9yIGRpc2FibGVkLgotICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pOwotICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShFWFRSQV9FTkFCTEVELCBtTmF2aWdhdGluZyk7Ci0gICAgICAgICAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChpbnRlbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBiZXdhcmUsIHRoZSBldmVudHMgY2FuIGNvbWUgb3V0IG9mIG9yZGVyCi0gICAgICAgICAgICBpZiAoIW1OYXZpZ2F0aW5nICYmICFtRW5naW5lT24gJiYgbVdha2VMb2NrLmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJSZWxlYXNpbmcgd2FrZWxvY2siKTsKLSAgICAgICAgICAgICAgICBtV2FrZUxvY2sucmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gdXBkYXRlIFNWIGluZm8KLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgcmVwb3J0U3ZTdGF0dXMoKSB7Ci0KLSAgICAgICAgaW50IHN2Q291bnQgPSBuYXRpdmVfcmVhZF9zdl9zdGF0dXMobVN2cywgbVNucnMsIG1TdkVsZXZhdGlvbnMsIG1TdkF6aW11dGhzLCBtU3ZNYXNrcyk7Ci0gICAgICAgIAotICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgewotICAgICAgICAgICAgaW50IHNpemUgPSBtTGlzdGVuZXJzLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgTGlzdGVuZXIgbGlzdGVuZXIgPSBtTGlzdGVuZXJzLmdldChpKTsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25TdlN0YXR1c0NoYW5nZWQoc3ZDb3VudCwgbVN2cywgbVNucnMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdkVsZXZhdGlvbnMsIG1TdkF6aW11dGhzLCBtU3ZNYXNrc1tFUEhFTUVSSVNfTUFTS10sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10sIG1Tdk1hc2tzW1VTRURfRk9SX0ZJWF9NQVNLXSk7IAotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZXBvcnRTdkluZm8iKTsKLSAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwotICAgICAgICAgICAgICAgICAgICAvLyBhZGp1c3QgZm9yIHNpemUgb2YgbGlzdCBjaGFuZ2luZwotICAgICAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFZFUkJPU0UpIHsKLSAgICAgICAgICAgIExvZy52KFRBRywgIlNWIGNvdW50OiAiICsgc3ZDb3VudCArCi0gICAgICAgICAgICAgICAgICAgICIgZXBoZW1lcmlzTWFzazogIiArIEludGVnZXIudG9IZXhTdHJpbmcobVN2TWFza3NbRVBIRU1FUklTX01BU0tdKSArCi0gICAgICAgICAgICAgICAgICAgICIgYWxtYW5hY01hc2s6ICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10pKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3ZDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgTG9nLnYoVEFHLCAic3Y6ICIgKyBtU3ZzW2ldICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgc25yOiAiICsgKGZsb2F0KW1TbnJzW2ldLzEwICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgZWxldjogIiArIG1TdkVsZXZhdGlvbnNbaV0gKwotICAgICAgICAgICAgICAgICAgICAgICAgIiBhemltdXRoOiAiICsgbVN2QXppbXV0aHNbaV0gKwotICAgICAgICAgICAgICAgICAgICAgICAgKChtU3ZNYXNrc1tFUEhFTUVSSVNfTUFTS10gJiAoMSA8PCAobVN2c1tpXSAtIDEpKSkgPT0gMCA/ICIgICIgOiAiIEUiKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAoKG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10gJiAoMSA8PCAobVN2c1tpXSAtIDEpKSkgPT0gMCA/ICIgICIgOiAiIEEiKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAoKG1Tdk1hc2tzW1VTRURfRk9SX0ZJWF9NQVNLXSAmICgxIDw8IChtU3ZzW2ldIC0gMSkpKSA9PSAwID8gIiIgOiAiVSIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHVwZGF0ZVN0YXR1cyhtU3RhdHVzLCBzdkNvdW50KTsKLQotICAgICAgICBpZiAobU5hdmlnYXRpbmcgJiYgbVN0YXR1cyA9PSBMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSAmJiBtTGFzdEZpeFRpbWUgPiAwICYmCi0gICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIG1MYXN0Rml4VGltZSA+IFJFQ0VOVF9GSVhfVElNRU9VVCAqIDEwMDApIHsKLSAgICAgICAgICAgIC8vIHNlbmQgYW4gaW50ZW50IHRvIG5vdGlmeSB0aGF0IHRoZSBHUFMgaXMgbm8gbG9uZ2VyIHJlY2VpdmluZyBmaXhlcy4KLSAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEdQU19GSVhfQ0hBTkdFX0FDVElPTik7Ci0gICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoRVhUUkFfRU5BQkxFRCwgZmFsc2UpOwotICAgICAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChpbnRlbnQpOwotICAgICAgICAgICAgdXBkYXRlU3RhdHVzKExvY2F0aW9uUHJvdmlkZXIuVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUsIG1TdkNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIHVwZGF0ZSBBR1BTIHN0YXR1cwotICAgICAqLwotICAgIHByaXZhdGUgdm9pZCByZXBvcnRBR3BzU3RhdHVzKGludCB0eXBlLCBpbnQgc3RhdHVzKSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7Ci0gICAgICAgICAgICBjYXNlIEdQU19SRVFVRVNUX0FHUFNfREFUQV9DT05OOgotICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gbUNvbm5NZ3Iuc3RhcnRVc2luZ05ldHdvcmtGZWF0dXJlKAotICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGl2aXR5TWFuYWdlci5UWVBFX01PQklMRSwgUGhvbmUuRkVBVFVSRV9FTkFCTEVfU1VQTCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBQaG9uZS5BUE5fQUxSRUFEWV9BQ1RJVkUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1BR3BzQXBuICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9vcGVuKG1BR3BzQXBuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZSA9IEFHUFNfREFUQV9DT05ORUNUSU9OX09QRU47Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJtQUdwc0FwbiBub3Qgc2V0IHdoZW4gcmVjZWl2aW5nIFBob25lLkFQTl9BTFJFQURZX0FDVElWRSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX2FncHNfZGF0YV9jb25uX2ZhaWxlZCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gUGhvbmUuQVBOX1JFUVVFU1RfU1RBUlRFRCkgewotICAgICAgICAgICAgICAgICAgICBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgPSBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOSU5HOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdQU19SRUxFQVNFX0FHUFNfREFUQV9DT05OOgotICAgICAgICAgICAgICAgIGlmIChtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgIT0gQUdQU19EQVRBX0NPTk5FQ1RJT05fQ0xPU0VEKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Db25uTWdyLnN0b3BVc2luZ05ldHdvcmtGZWF0dXJlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpdml0eU1hbmFnZXIuVFlQRV9NT0JJTEUsIFBob25lLkZFQVRVUkVfRU5BQkxFX1NVUEwpOwotICAgICAgICAgICAgICAgICAgICBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fY2xvc2VkKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZSA9IEFHUFNfREFUQV9DT05ORUNUSU9OX0NMT1NFRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTkVDVEVEOgotICAgICAgICAgICAgICAgIC8vIExvZy5kKFRBRywgIkdQU19BR1BTX0RBVEFfQ09OTkVDVEVEIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTl9ET05FOgotICAgICAgICAgICAgICAgIC8vIExvZy5kKFRBRywgIkdQU19BR1BTX0RBVEFfQ09OTl9ET05FIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTl9GQUlMRUQ6Ci0gICAgICAgICAgICAgICAgLy8gTG9nLmQoVEFHLCAiR1BTX0FHUFNfREFUQV9DT05OX0ZBSUxFRCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gcmVwb3J0IE5NRUEgZGF0YSByZWNlaXZlZAotICAgICAqLwotICAgIHByaXZhdGUgdm9pZCByZXBvcnRObWVhKGludCBpbmRleCwgbG9uZyB0aW1lc3RhbXApIHsKLSAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKLSAgICAgICAgICAgIGludCBzaXplID0gbUxpc3RlbmVycy5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICAvLyBkb24ndCBib3RoZXIgY3JlYXRpbmcgdGhlIFN0cmluZyBpZiB3ZSBoYXZlIG5vIGxpc3RlbmVycwotICAgICAgICAgICAgICAgIGludCBsZW5ndGggPSBuYXRpdmVfcmVhZF9ubWVhKGluZGV4LCBtTm1lYUJ1ZmZlciwgbU5tZWFCdWZmZXIubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbm1lYSA9IG5ldyBTdHJpbmcobU5tZWFCdWZmZXIsIDAsIGxlbmd0aCk7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBMaXN0ZW5lciBsaXN0ZW5lciA9IG1MaXN0ZW5lcnMuZ2V0KGkpOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubUxpc3RlbmVyLm9uTm1lYVJlY2VpdmVkKHRpbWVzdGFtcCwgbm1lYSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gcmVwb3J0Tm1lYSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRqdXN0IGZvciBzaXplIG9mIGxpc3QgY2hhbmdpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIHJlcXVlc3QgWFRSQSBkYXRhCi0gICAgICovCi0gICAgcHJpdmF0ZSB2b2lkIHh0cmFEb3dubG9hZFJlcXVlc3QoKSB7Ci0gICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAieHRyYURvd25sb2FkUmVxdWVzdCIpOwotICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhET1dOTE9BRF9YVFJBX0RBVEEpOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgRE9XTkxPQURfWFRSQV9EQVRBKSk7Ci0gICAgfQotCi0gICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgLy8gTkkgQ2xpZW50IHN1cHBvcnQKLQkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwcml2YXRlIGZpbmFsIElOZXRJbml0aWF0ZWRMaXN0ZW5lciBtTmV0SW5pdGlhdGVkTGlzdGVuZXIgPSBuZXcgSU5ldEluaXRpYXRlZExpc3RlbmVyLlN0dWIoKSB7Ci0gICAgCS8vIFNlbmRzIGEgcmVzcG9uc2UgZm9yIGFuIE5JIHJlcWV1c3QgdG8gSEFMLgotICAgIAlwdWJsaWMgYm9vbGVhbiBzZW5kTmlSZXNwb25zZShpbnQgbm90aWZpY2F0aW9uSWQsIGludCB1c2VyUmVzcG9uc2UpCi0gICAgCXsKLSAgICAgICAgCS8vIFRPRE8gQWRkIFBlcm1pc3Npb24gY2hlY2sKLSAgICAJCQotICAgIAkJU3RyaW5nQnVpbGRlciBleHRyYXNCdWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwotCi0gICAgCQlpZiAoREVCVUcpIExvZy5kKFRBRywgInNlbmROaVJlc3BvbnNlLCBub3RpZklkOiAiICsgbm90aWZpY2F0aW9uSWQgKwotICAgIAkJCQkiLCByZXNwb25zZTogIiArIHVzZXJSZXNwb25zZSk7Ci0gICAgCQkKLSAgICAJCW5hdGl2ZV9zZW5kX25pX3Jlc3BvbnNlKG5vdGlmaWNhdGlvbklkLCB1c2VyUmVzcG9uc2UpOwotICAgIAkJCi0gICAgCQlyZXR1cm4gdHJ1ZTsKLSAgICAJfSAgICAgICAgCi0gICAgfTsKLSAgICAgICAgCi0gICAgcHVibGljIElOZXRJbml0aWF0ZWRMaXN0ZW5lciBnZXROZXRJbml0aWF0ZWRMaXN0ZW5lcigpIHsKLSAgICAgICAgcmV0dXJuIG1OZXRJbml0aWF0ZWRMaXN0ZW5lcjsKLSAgICB9Ci0KLSAgICAvLyBDYWxsZWQgYnkgSk5JIGZ1bmN0aW9uIHRvIHJlcG9ydCBhbiBOSSByZXF1ZXN0LgotCUBTdXBwcmVzc1dhcm5pbmdzKCJkZXByZWNhdGlvbiIpCi0JcHVibGljIHZvaWQgcmVwb3J0TmlOb3RpZmljYXRpb24oCi0gICAgICAgIAlpbnQgbm90aWZpY2F0aW9uSWQsCi0gICAgICAgIAlpbnQgbmlUeXBlLAotICAgICAgICAJaW50IG5vdGlmeUZsYWdzLAotICAgICAgICAJaW50IHRpbWVvdXQsCi0gICAgICAgIAlpbnQgZGVmYXVsdFJlc3BvbnNlLAotICAgICAgICAJU3RyaW5nIHJlcXVlc3RvcklkLAotICAgICAgICAJU3RyaW5nIHRleHQsCi0gICAgICAgIAlpbnQgcmVxdWVzdG9ySWRFbmNvZGluZywKLSAgICAgICAgCWludCB0ZXh0RW5jb2RpbmcsCi0gICAgICAgIAlTdHJpbmcgZXh0cmFzICAvLyBFbmNvZGVkIGV4dHJhIGRhdGEKLSAgICAgICAgKQotCXsKLQkJTG9nLmkoVEFHLCAicmVwb3J0TmlOb3RpZmljYXRpb246IGVudGVyZWQiKTsKLQkJTG9nLmkoVEFHLCAibm90aWZpY2F0aW9uSWQ6ICIgKyBub3RpZmljYXRpb25JZCArCi0JCQkJIiwgbmlUeXBlOiAiICsgbmlUeXBlICsKLQkJCQkiLCBub3RpZnlGbGFnczogIiArIG5vdGlmeUZsYWdzICsKLQkJCQkiLCB0aW1lb3V0OiAiICsgdGltZW91dCArCi0JCQkJIiwgZGVmYXVsdFJlc3BvbnNlOiAiICsgZGVmYXVsdFJlc3BvbnNlKTsKLQkJCi0JCUxvZy5pKFRBRywgInJlcXVlc3RvcklkOiAiICsgcmVxdWVzdG9ySWQgKwotCQkJCSIsIHRleHQ6ICIgKyB0ZXh0ICsKLQkJCQkiLCByZXF1ZXN0b3JJZEVuY29kaW5nOiAiICsgcmVxdWVzdG9ySWRFbmNvZGluZyArCi0JCQkJIiwgdGV4dEVuY29kaW5nOiAiICsgdGV4dEVuY29kaW5nKTsKLQkJCi0JCUdwc05pTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IG5ldyBHcHNOaU5vdGlmaWNhdGlvbigpOwotCQkKLQkJbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbklkID0gbm90aWZpY2F0aW9uSWQ7Ci0JCW5vdGlmaWNhdGlvbi5uaVR5cGUgPSBuaVR5cGU7Ci0JCW5vdGlmaWNhdGlvbi5uZWVkTm90aWZ5ID0gKG5vdGlmeUZsYWdzICYgR3BzTmV0SW5pdGlhdGVkSGFuZGxlci5HUFNfTklfTkVFRF9OT1RJRlkpICE9IDA7Ci0JCW5vdGlmaWNhdGlvbi5uZWVkVmVyaWZ5ID0gKG5vdGlmeUZsYWdzICYgR3BzTmV0SW5pdGlhdGVkSGFuZGxlci5HUFNfTklfTkVFRF9WRVJJRlkpICE9IDA7Ci0JCW5vdGlmaWNhdGlvbi5wcml2YWN5T3ZlcnJpZGUgPSAobm90aWZ5RmxhZ3MgJiBHcHNOZXRJbml0aWF0ZWRIYW5kbGVyLkdQU19OSV9QUklWQUNZX09WRVJSSURFKSAhPSAwOwotCQlub3RpZmljYXRpb24udGltZW91dCA9IHRpbWVvdXQ7Ci0JCW5vdGlmaWNhdGlvbi5kZWZhdWx0UmVzcG9uc2UgPSBkZWZhdWx0UmVzcG9uc2U7Ci0JCW5vdGlmaWNhdGlvbi5yZXF1ZXN0b3JJZCA9IHJlcXVlc3RvcklkOwotCQlub3RpZmljYXRpb24udGV4dCA9IHRleHQ7Ci0JCW5vdGlmaWNhdGlvbi5yZXF1ZXN0b3JJZEVuY29kaW5nID0gcmVxdWVzdG9ySWRFbmNvZGluZzsKLQkJbm90aWZpY2F0aW9uLnRleHRFbmNvZGluZyA9IHRleHRFbmNvZGluZzsKLQkJCi0JCS8vIFByb2Nlc3MgZXh0cmFzLCBhc3N1bWluZyB0aGUgZm9ybWF0IGlzCi0JCS8vIG9uZSBvZiBtb3JlIGxpbmVzIG9mICJrZXkgPSB2YWx1ZSIKLQkJQnVuZGxlIGJ1bmRsZSA9IG5ldyBCdW5kbGUoKTsKLQkJCi0JCWlmIChleHRyYXMgPT0gbnVsbCkgZXh0cmFzID0gIiI7Ci0JCVByb3BlcnRpZXMgZXh0cmFQcm9wID0gbmV3IFByb3BlcnRpZXMoKTsKLQkJCi0JCXRyeSB7Ci0JCQlleHRyYVByb3AubG9hZChuZXcgU3RyaW5nQnVmZmVySW5wdXRTdHJlYW0oZXh0cmFzKSk7Ci0JCX0KLQkJY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0JCXsKLQkJCUxvZy5lKFRBRywgInJlcG9ydE5pTm90aWZpY2F0aW9uIGNhbm5vdCBwYXJzZSBleHRyYXMgZGF0YTogIiArIGV4dHJhcyk7Ci0JCX0KLQkJCi0JCWZvciAoRW50cnk8T2JqZWN0LCBPYmplY3Q+IGVudCA6IGV4dHJhUHJvcC5lbnRyeVNldCgpKQotCQl7Ci0JCQlidW5kbGUucHV0U3RyaW5nKChTdHJpbmcpIGVudC5nZXRLZXkoKSwgKFN0cmluZykgZW50LmdldFZhbHVlKCkpOwotCQl9CQkKLQkJCi0JCW5vdGlmaWNhdGlvbi5leHRyYXMgPSBidW5kbGU7Ci0JCQotCQltTklIYW5kbGVyLmhhbmRsZU5pTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7CQkKLQl9Ci0KLSAgICAvLyB0aGlzIHRocmVhZCBpcyB1c2VkIHRvIHJlY2VpdmUgZXZlbnRzIGZyb20gdGhlIG5hdGl2ZSBjb2RlLgotICAgIC8vIG5hdGl2ZV93YWl0X2Zvcl9ldmVudCgpIHdpbGwgY2FsbGJhY2sgdG8gdXMgdmlhIHJlcG9ydExvY2F0aW9uKCksIHJlcG9ydFN0YXR1cygpLCBldGMuCi0gICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBuYXRpdmUgY29kZSBjYW5ub3QgY2FsbCBKYXZhIG9uIGEgdGhyZWFkIHRoYXQgdGhlIEpWTSBkb2VzCi0gICAgLy8gbm90IGtub3cgYWJvdXQuCi0gICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBHcHNFdmVudFRocmVhZCBleHRlbmRzIFRocmVhZCB7Ci0KLSAgICAgICAgcHVibGljIEdwc0V2ZW50VGhyZWFkKCkgewotICAgICAgICAgICAgc3VwZXIoIkdwc0V2ZW50VGhyZWFkIik7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkdwc0V2ZW50VGhyZWFkIHN0YXJ0aW5nIik7Ci0gICAgICAgICAgICAvLyBFeGl0IGFzIHNvb24gYXMgZGlzYWJsZSgpIGlzIGNhbGxlZCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBHUFMgdG8gc3RvcC4KLSAgICAgICAgICAgIHdoaWxlIChtRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCB3YWl0IGZvciBhbiBldmVudCBmcm9tIHRoZSBHUFMsCi0gICAgICAgICAgICAgICAgLy8gd2hpY2ggd2lsbCBiZSByZXBvcnRlZCB2aWEgcmVwb3J0TG9jYXRpb24gb3IgcmVwb3J0U3RhdHVzCi0gICAgICAgICAgICAgICAgbmF0aXZlX3dhaXRfZm9yX2V2ZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkdwc0V2ZW50VGhyZWFkIGV4aXRpbmciKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUHJvdmlkZXJIYW5kbGVyIGV4dGVuZHMgSGFuZGxlciB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1zZy53aGF0KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBFTkFCTEU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtc2cuYXJnMSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbmFibGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURpc2FibGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEVOQUJMRV9UUkFDS0lORzoKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlRW5hYmxlTG9jYXRpb25UcmFja2luZyhtc2cuYXJnMSA9PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBVUERBVEVfTkVUV09SS19TVEFURToKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlVXBkYXRlTmV0d29ya1N0YXRlKG1zZy5hcmcxLCAoTmV0d29ya0luZm8pbXNnLm9iaik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgSU5KRUNUX05UUF9USU1FOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmplY3ROdHBUaW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRE9XTkxPQURfWFRSQV9EQVRBOgotICAgICAgICAgICAgICAgICAgICBpZiAobmF0aXZlX3N1cHBvcnRzX3h0cmEoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRG93bmxvYWRYdHJhRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgVVBEQVRFX0xPQ0FUSU9OOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVVcGRhdGVMb2NhdGlvbigoTG9jYXRpb24pbXNnLm9iaik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQUREX0xJU1RFTkVSOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVBZGRMaXN0ZW5lcihtc2cuYXJnMSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgUkVNT1ZFX0xJU1RFTkVSOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZW1vdmVMaXN0ZW5lcihtc2cuYXJnMSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHByaXZhdGUgZmluYWwgY2xhc3MgR3BzTG9jYXRpb25Qcm92aWRlclRocmVhZCBleHRlbmRzIFRocmVhZCB7Ci0KLSAgICAgICAgcHVibGljIEdwc0xvY2F0aW9uUHJvdmlkZXJUaHJlYWQoKSB7Ci0gICAgICAgICAgICBzdXBlcigiR3BzTG9jYXRpb25Qcm92aWRlciIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eShQcm9jZXNzLlRIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EKTsKLSAgICAgICAgICAgIGluaXRpYWxpemUoKTsKLSAgICAgICAgICAgIExvb3Blci5wcmVwYXJlKCk7Ci0gICAgICAgICAgICBtSGFuZGxlciA9IG5ldyBQcm92aWRlckhhbmRsZXIoKTsKLSAgICAgICAgICAgIC8vIHNpZ25hbCB3aGVuIHdlIGFyZSBpbml0aWFsaXplZCBhbmQgcmVhZHkgdG8gZ28KLSAgICAgICAgICAgIG1Jbml0aWFsaXplZExhdGNoLmNvdW50RG93bigpOwotICAgICAgICAgICAgTG9vcGVyLmxvb3AoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGZvciBHUFMgU1Ygc3RhdGlzdGljcwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfU1ZTID0gMzI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVQSEVNRVJJU19NQVNLID0gMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUxNQU5BQ19NQVNLID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVVNFRF9GT1JfRklYX01BU0sgPSAyOwotCi0gICAgLy8gcHJlYWxsb2NhdGVkIGFycmF5cywgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gcmVwb3J0U3RhdHVzKCkKLSAgICBwcml2YXRlIGludCBtU3ZzW10gPSBuZXcgaW50W01BWF9TVlNdOwotICAgIHByaXZhdGUgZmxvYXQgbVNucnNbXSA9IG5ldyBmbG9hdFtNQVhfU1ZTXTsKLSAgICBwcml2YXRlIGZsb2F0IG1TdkVsZXZhdGlvbnNbXSA9IG5ldyBmbG9hdFtNQVhfU1ZTXTsKLSAgICBwcml2YXRlIGZsb2F0IG1TdkF6aW11dGhzW10gPSBuZXcgZmxvYXRbTUFYX1NWU107Ci0gICAgcHJpdmF0ZSBpbnQgbVN2TWFza3NbXSA9IG5ldyBpbnRbM107Ci0gICAgcHJpdmF0ZSBpbnQgbVN2Q291bnQ7Ci0gICAgLy8gcHJlYWxsb2NhdGVkIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluIHJlcG9ydE5tZWEoKQotICAgIHByaXZhdGUgYnl0ZVtdIG1ObWVhQnVmZmVyID0gbmV3IGJ5dGVbMTIwXTsKLQotICAgIHN0YXRpYyB7IGNsYXNzX2luaXRfbmF0aXZlKCk7IH0KLSAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBjbGFzc19pbml0X25hdGl2ZSgpOwotICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBib29sZWFuIG5hdGl2ZV9pc19zdXBwb3J0ZWQoKTsKLQotICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX2luaXQoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9kaXNhYmxlKCk7Ci0gICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfY2xlYW51cCgpOwotICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N0YXJ0KGludCBwb3NpdGlvbk1vZGUsIGJvb2xlYW4gc2luZ2xlRml4LCBpbnQgZml4SW50ZXJ2YWwpOwotICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N0b3AoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9zZXRfZml4X2ZyZXF1ZW5jeShpbnQgZml4RnJlcXVlbmN5KTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9kZWxldGVfYWlkaW5nX2RhdGEoaW50IGZsYWdzKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV93YWl0X2Zvcl9ldmVudCgpOwotICAgIC8vIHJldHVybnMgbnVtYmVyIG9mIFNWcwotICAgIC8vIG1hc2tbMF0gaXMgZXBoZW1lcmlzIG1hc2sgYW5kIG1hc2tbMV0gaXMgYWxtYW5hYyBtYXNrCi0gICAgcHJpdmF0ZSBuYXRpdmUgaW50IG5hdGl2ZV9yZWFkX3N2X3N0YXR1cyhpbnRbXSBzdnMsIGZsb2F0W10gc25ycywKLSAgICAgICAgICAgIGZsb2F0W10gZWxldmF0aW9ucywgZmxvYXRbXSBhemltdXRocywgaW50W10gbWFza3MpOwotICAgIHByaXZhdGUgbmF0aXZlIGludCBuYXRpdmVfcmVhZF9ubWVhKGludCBpbmRleCwgYnl0ZVtdIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpOwotICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2luamVjdF9sb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGZsb2F0IGFjY3VyYWN5KTsKLQotICAgIC8vIFhUUkEgU3VwcG9ydAotICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2luamVjdF90aW1lKGxvbmcgdGltZSwgbG9uZyB0aW1lUmVmZXJlbmNlLCBpbnQgdW5jZXJ0YWludHkpOwotICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N1cHBvcnRzX3h0cmEoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9pbmplY3RfeHRyYV9kYXRhKGJ5dGVbXSBkYXRhLCBpbnQgbGVuZ3RoKTsKLQotICAgIC8vIERFQlVHIFN1cHBvcnQKLSAgICBwcml2YXRlIG5hdGl2ZSBTdHJpbmcgbmF0aXZlX2dldF9pbnRlcm5hbF9zdGF0ZSgpOwotCi0gICAgLy8gQUdQUyBTdXBwb3J0Ci0gICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fb3BlbihTdHJpbmcgYXBuKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9jbG9zZWQoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9zZXRfYWdwc19zZXJ2ZXIoaW50IHR5cGUsIFN0cmluZyBob3N0bmFtZSwgaW50IHBvcnQpOwotCi0gICAgLy8gTmV0d29yay1pbml0aWF0ZWQgKE5JKSBTdXBwb3J0Ci0gICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfc2VuZF9uaV9yZXNwb25zZShpbnQgbm90aWZpY2F0aW9uSWQsIGludCB1c2VyUmVzcG9uc2UpOwotfQpkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9HcHNOZXRJbml0aWF0ZWRIYW5kbGVyLmphdmEgYi9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc05ldEluaXRpYXRlZEhhbmRsZXIuamF2YQppbmRleCBhNTQ2NmQxLi5kM2E3MWIzIDEwMDc1NQotLS0gYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc05ldEluaXRpYXRlZEhhbmRsZXIuamF2YQorKysgYi9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc05ldEluaXRpYXRlZEhhbmRsZXIuamF2YQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwpAQCAtODEsNyArODIsNyBAQAogICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKICAgICAKICAgICAvLyBwYXJlbnQgZ3BzIGxvY2F0aW9uIHByb3ZpZGVyCi0gICAgcHJpdmF0ZSBmaW5hbCBHcHNMb2NhdGlvblByb3ZpZGVyIG1HcHNMb2NhdGlvblByb3ZpZGVyOworICAgIHByaXZhdGUgZmluYWwgTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7CiAgICAgCiAgICAgLy8gY29uZmlndXJhdGlvbiBvZiBub3RpZmljYWl0b24gYmVoYXZpb3IKICAgICBwcml2YXRlIGJvb2xlYW4gbVBsYXlTb3VuZHMgPSBmYWxzZTsKQEAgLTkzLDI1ICs5NCwyNSBAQAogICAgICAgICAKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEdwc05pTm90aWZpY2F0aW9uCiAgICAgewotICAgIAlpbnQgbm90aWZpY2F0aW9uSWQ7Ci0gICAgCWludCBuaVR5cGU7Ci0gICAgCWJvb2xlYW4gbmVlZE5vdGlmeTsKLSAgICAJYm9vbGVhbiBuZWVkVmVyaWZ5OwotICAgIAlib29sZWFuIHByaXZhY3lPdmVycmlkZTsKLSAgICAJaW50IHRpbWVvdXQ7Ci0gICAgCWludCBkZWZhdWx0UmVzcG9uc2U7Ci0gICAgCVN0cmluZyByZXF1ZXN0b3JJZDsKLSAgICAJU3RyaW5nIHRleHQ7Ci0gICAgCWludCByZXF1ZXN0b3JJZEVuY29kaW5nOwotICAgIAlpbnQgdGV4dEVuY29kaW5nOwotICAgIAlCdW5kbGUgZXh0cmFzOworICAgICAgICBwdWJsaWMgaW50IG5vdGlmaWNhdGlvbklkOworICAgICAgICBwdWJsaWMgaW50IG5pVHlwZTsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gbmVlZE5vdGlmeTsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gbmVlZFZlcmlmeTsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcHJpdmFjeU92ZXJyaWRlOworICAgICAgICBwdWJsaWMgaW50IHRpbWVvdXQ7CisgICAgICAgIHB1YmxpYyBpbnQgZGVmYXVsdFJlc3BvbnNlOworICAgICAgICBwdWJsaWMgU3RyaW5nIHJlcXVlc3RvcklkOworICAgICAgICBwdWJsaWMgU3RyaW5nIHRleHQ7CisgICAgICAgIHB1YmxpYyBpbnQgcmVxdWVzdG9ySWRFbmNvZGluZzsKKyAgICAgICAgcHVibGljIGludCB0ZXh0RW5jb2Rpbmc7CisgICAgICAgIHB1YmxpYyBCdW5kbGUgZXh0cmFzOwogICAgIH07CiAgICAgCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBHcHNOaVJlc3BvbnNlIHsKLSAgICAJLyogVXNlciByZXBvbnNlLCBvbmUgb2YgdGhlIHZhbHVlcyBpbiBHcHNVc2VyUmVzcG9uc2VUeXBlICovCi0gICAgCWludCB1c2VyUmVzcG9uc2U7Ci0gICAgCS8qIE9wdGlvbmFsIGV4dHJhIGRhdGEgdG8gcGFzcyB3aXRoIHRoZSB1c2VyIHJlc3BvbnNlICovCi0gICAgCUJ1bmRsZSBleHRyYXM7CisgICAgICAgIC8qIFVzZXIgcmVwb25zZSwgb25lIG9mIHRoZSB2YWx1ZXMgaW4gR3BzVXNlclJlc3BvbnNlVHlwZSAqLworICAgICAgICBpbnQgdXNlclJlc3BvbnNlOworICAgICAgICAvKiBPcHRpb25hbCBleHRyYSBkYXRhIHRvIHBhc3Mgd2l0aCB0aGUgdXNlciByZXNwb25zZSAqLworICAgICAgICBCdW5kbGUgZXh0cmFzOwogICAgIH07CiAgICAgCiAgICAgLyoqCkBAIC0xMjIsNjMgKzEyMyw1NyBAQAogICAgICAqLwogICAgIHByaXZhdGUgTm90aWZpY2F0aW9uIG1OaU5vdGlmaWNhdGlvbjsKICAgICAKLSAgICBwdWJsaWMgR3BzTmV0SW5pdGlhdGVkSGFuZGxlcihDb250ZXh0IGNvbnRleHQsIEdwc0xvY2F0aW9uUHJvdmlkZXIgZ3BzTG9jYXRpb25Qcm92aWRlcikgewotICAgIAltQ29udGV4dCA9IGNvbnRleHQ7ICAgICAgIAotICAgIAltR3BzTG9jYXRpb25Qcm92aWRlciA9IGdwc0xvY2F0aW9uUHJvdmlkZXI7CisgICAgcHVibGljIEdwc05ldEluaXRpYXRlZEhhbmRsZXIoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbUxvY2F0aW9uTWFuYWdlciA9IChMb2NhdGlvbk1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTE9DQVRJT05fU0VSVklDRSk7CiAgICAgfQogICAgIAogICAgIC8vIEhhbmRsZXMgTkkgZXZlbnRzIGZyb20gSEFMCiAgICAgcHVibGljIHZvaWQgaGFuZGxlTmlOb3RpZmljYXRpb24oR3BzTmlOb3RpZmljYXRpb24gbm90aWYpCiAgICAgewotICAgIAlpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZU5pTm90aWZpY2F0aW9uIiArICIgbm90aWZpY2F0aW9uSWQ6ICIgKyBub3RpZi5ub3RpZmljYXRpb25JZCAKLSAgICAJCQkrICIgcmVxdWVzdG9ySWQ6ICIgKyBub3RpZi5yZXF1ZXN0b3JJZCArICIgdGV4dDogIiArIG5vdGlmLnRleHQpOwotICAgIAkKLSAgICAJLy8gTm90aWZ5IGFuZCB2ZXJpZnkgd2l0aCBpbW1lZGlhdGUgcG9wLXVwCi0gICAgCWlmIChub3RpZi5uZWVkTm90aWZ5ICYmIG5vdGlmLm5lZWRWZXJpZnkgJiYgbVBvcHVwSW1tZWRpYXRlbHkpCi0gICAgCXsKLSAgICAJCS8vIFBvcHVwIHRoZSBkaWFsb2cgYm94IG5vdwotICAgIAkJb3Blbk5pRGlhbG9nKG5vdGlmKTsKLSAgICAJfQotICAgIAkKLSAgICAJLy8gTm90aWZ5IG9ubHksIG9yIGRlbGF5ZWQgcG9wLXVwIChjaGFuZ2UgbVBvcHVwSW1tZWRpYXRlbHkgdG8gRkFMU0UpIAotICAgIAlpZiAobm90aWYubmVlZE5vdGlmeSAmJiAhbm90aWYubmVlZFZlcmlmeSB8fAotICAgIAkJbm90aWYubmVlZE5vdGlmeSAmJiBub3RpZi5uZWVkVmVyaWZ5ICYmICFtUG9wdXBJbW1lZGlhdGVseSkgCi0gICAgCXsKLSAgICAJCS8vIFNob3cgdGhlIG5vdGlmaWNhdGlvbgorICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZU5pTm90aWZpY2F0aW9uIiArICIgbm90aWZpY2F0aW9uSWQ6ICIgKyBub3RpZi5ub3RpZmljYXRpb25JZAorICAgICAgICAgICAgICAgICsgIiByZXF1ZXN0b3JJZDogIiArIG5vdGlmLnJlcXVlc3RvcklkICsgIiB0ZXh0OiAiICsgbm90aWYudGV4dCk7CiAKLSAgICAJCS8vIGlmIG1Qb3B1cEltbWVkaWF0ZWx5ID09IEZBTFNFIGFuZCBuZWVkVmVyaWZ5ID09IFRSVUUsIGEgZGlhbG9nIHdpbGwgYmUgb3BlbmVkCi0gICAgCQkvLyB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSBub3RpZmljYXRpb24gbWVzc2FnZQotICAgIAkJCi0gICAgCQlzZXROaU5vdGlmaWNhdGlvbihub3RpZik7Ci0gICAgCX0KLSAgICAJCi0gICAgCS8vIEFDQ0VQVCBjYXNlczogMS4gTm90aWZ5LCBubyB2ZXJpZnk7IDIuIG5vIG5vdGlmeSwgbm8gdmVyaWZ5OyAzLiBwcml2YWN5IG92ZXJyaWRlLgotICAgIAlpZiAoIG5vdGlmLm5lZWROb3RpZnkgJiYgIW5vdGlmLm5lZWRWZXJpZnkgfHwgCi0gICAgCQkhbm90aWYubmVlZE5vdGlmeSAmJiAhbm90aWYubmVlZFZlcmlmeSB8fCAKLSAgICAJCSBub3RpZi5wcml2YWN5T3ZlcnJpZGUpCi0gICAgCXsKLSAgICAJCXRyeSB7Ci0gICAgCQkJbUdwc0xvY2F0aW9uUHJvdmlkZXIuZ2V0TmV0SW5pdGlhdGVkTGlzdGVuZXIoKS5zZW5kTmlSZXNwb25zZShub3RpZi5ub3RpZmljYXRpb25JZCwgR1BTX05JX1JFU1BPTlNFX0FDQ0VQVCk7Ci0gICAgCQl9IAotICAgIAkJY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKQotICAgIAkJewotICAgIAkJCUxvZy5lKFRBRywgZS5nZXRNZXNzYWdlKCkpOwotICAgIAkJfQotICAgIAl9Ci0gICAgCQotICAgIAkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIAkvLyAgIEEgbm90ZSBhYm91dCB0aW1lb3V0Ci0gICAgCS8vICAgQWNjb3JkaW5nIHRvIHRoZSBwcm90b2NvbCwgaW4gdGhlIG5lZWRfbm90aWZ5IGFuZCBuZWVkX3ZlcmlmeSBjYXNlLAotICAgIAkvLyAgIGEgZGVmYXVsdCByZXNwb25zZSBzaG91bGQgYmUgc2VudCB3aGVuIHRpbWUgb3V0LgotICAgIAkvLyAgIAotICAgIAkvLyAgIEluIHNvbWUgR1BTIGhhcmR3YXJlLCB0aGUgR1BTIGRyaXZlciAodW5kZXIgSEFMKSBjYW4gaGFuZGxlIHRoZSB0aW1lb3V0IGNhc2UKLSAgICAJLy8gICBhbmQgdGhpcyBjbGFzcyBHcHNOZXRJbml0aWF0ZWRIYW5kbGVyIGRvZXMgbm90IG5lZWQgdG8gZG8gYW55dGhpbmcuCi0gICAgCS8vICAgCi0gICAgCS8vICAgSG93ZXZlciwgdGhlIFVJIHNob3VsZCBhdCBsZWFzdCBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gdGltZW91dC4gRnVydGhlciwgCi0gICAgCS8vICAgZm9yIG1vcmUgZ2VuZXJhbCBoYW5kbGluZywgdGltZW91dCByZXNwb25zZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIEhhbmRsZXIgaGVyZS4KLSAgICAJLy8gICAgCSAgICAJCisgICAgICAgIC8vIE5vdGlmeSBhbmQgdmVyaWZ5IHdpdGggaW1tZWRpYXRlIHBvcC11cAorICAgICAgICBpZiAobm90aWYubmVlZE5vdGlmeSAmJiBub3RpZi5uZWVkVmVyaWZ5ICYmIG1Qb3B1cEltbWVkaWF0ZWx5KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBQb3B1cCB0aGUgZGlhbG9nIGJveCBub3cKKyAgICAgICAgICAgIG9wZW5OaURpYWxvZyhub3RpZik7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3RpZnkgb25seSwgb3IgZGVsYXllZCBwb3AtdXAgKGNoYW5nZSBtUG9wdXBJbW1lZGlhdGVseSB0byBGQUxTRSkKKyAgICAgICAgaWYgKG5vdGlmLm5lZWROb3RpZnkgJiYgIW5vdGlmLm5lZWRWZXJpZnkgfHwKKyAgICAgICAgICAgIG5vdGlmLm5lZWROb3RpZnkgJiYgbm90aWYubmVlZFZlcmlmeSAmJiAhbVBvcHVwSW1tZWRpYXRlbHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFNob3cgdGhlIG5vdGlmaWNhdGlvbgorCisgICAgICAgICAgICAvLyBpZiBtUG9wdXBJbW1lZGlhdGVseSA9PSBGQUxTRSBhbmQgbmVlZFZlcmlmeSA9PSBUUlVFLCBhIGRpYWxvZyB3aWxsIGJlIG9wZW5lZAorICAgICAgICAgICAgLy8gd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgbm90aWZpY2F0aW9uIG1lc3NhZ2UKKworICAgICAgICAgICAgc2V0TmlOb3RpZmljYXRpb24obm90aWYpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQUNDRVBUIGNhc2VzOiAxLiBOb3RpZnksIG5vIHZlcmlmeTsgMi4gbm8gbm90aWZ5LCBubyB2ZXJpZnk7IDMuIHByaXZhY3kgb3ZlcnJpZGUuCisgICAgICAgIGlmICggbm90aWYubmVlZE5vdGlmeSAmJiAhbm90aWYubmVlZFZlcmlmeSB8fAorICAgICAgICAgICAgIW5vdGlmLm5lZWROb3RpZnkgJiYgIW5vdGlmLm5lZWRWZXJpZnkgfHwKKyAgICAgICAgICAgICBub3RpZi5wcml2YWN5T3ZlcnJpZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIuc2VuZE5pUmVzcG9uc2Uobm90aWYubm90aWZpY2F0aW9uSWQsIEdQU19OSV9SRVNQT05TRV9BQ0NFUFQpOworICAgICAgICB9CisKKyAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgICAgLy8gICBBIG5vdGUgYWJvdXQgdGltZW91dAorICAgICAgICAvLyAgIEFjY29yZGluZyB0byB0aGUgcHJvdG9jb2wsIGluIHRoZSBuZWVkX25vdGlmeSBhbmQgbmVlZF92ZXJpZnkgY2FzZSwKKyAgICAgICAgLy8gICBhIGRlZmF1bHQgcmVzcG9uc2Ugc2hvdWxkIGJlIHNlbnQgd2hlbiB0aW1lIG91dC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICBJbiBzb21lIEdQUyBoYXJkd2FyZSwgdGhlIEdQUyBkcml2ZXIgKHVuZGVyIEhBTCkgY2FuIGhhbmRsZSB0aGUgdGltZW91dCBjYXNlCisgICAgICAgIC8vICAgYW5kIHRoaXMgY2xhc3MgR3BzTmV0SW5pdGlhdGVkSGFuZGxlciBkb2VzIG5vdCBuZWVkIHRvIGRvIGFueXRoaW5nLgorICAgICAgICAvLworICAgICAgICAvLyAgIEhvd2V2ZXIsIHRoZSBVSSBzaG91bGQgYXQgbGVhc3QgY2xvc2UgdGhlIGRpYWxvZyB3aGVuIHRpbWVvdXQuIEZ1cnRoZXIsCisgICAgICAgIC8vICAgZm9yIG1vcmUgZ2VuZXJhbCBoYW5kbGluZywgdGltZW91dCByZXNwb25zZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIEhhbmRsZXIgaGVyZS4KKyAgICAgICAgLy8KICAgICB9Ci0gICAgCisKICAgICAvLyBTZXRzIHRoZSBOSSBub3RpZmljYXRpb24uCiAgICAgcHJpdmF0ZSBzeW5jaHJvbml6ZWQgdm9pZCBzZXROaU5vdGlmaWNhdGlvbihHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikgewogICAgICAgICBOb3RpZmljYXRpb25NYW5hZ2VyIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSAoTm90aWZpY2F0aW9uTWFuYWdlcikgbUNvbnRleHQKQEAgLTE4NiwyNzIgKzE4MSwyNzIgQEAKICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbk1hbmFnZXIgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAKLSAgICAJU3RyaW5nIHRpdGxlID0gZ2V0Tm90aWZUaXRsZShub3RpZik7Ci0gICAgCVN0cmluZyBtZXNzYWdlID0gZ2V0Tm90aWZNZXNzYWdlKG5vdGlmKTsKLSAgICAgICAgCisKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gZ2V0Tm90aWZUaXRsZShub3RpZik7CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gZ2V0Tm90aWZNZXNzYWdlKG5vdGlmKTsKKwogICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldE5pTm90aWZpY2F0aW9uLCBub3RpZnlJZDogIiArIG5vdGlmLm5vdGlmaWNhdGlvbklkICsKLSAgICAgICAgCQkiLCB0aXRsZTogIiArIHRpdGxlICsKLSAgICAgICAgCQkiLCBtZXNzYWdlOiAiICsgbWVzc2FnZSk7Ci0gICAgICAgIAotICAgIAkvLyBDb25zdHJ1Y3QgTm90aWZpY2F0aW9uCi0gICAgCWlmIChtTmlOb3RpZmljYXRpb24gPT0gbnVsbCkgewotICAgICAgICAJbU5pTm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOwotICAgICAgICAJbU5pTm90aWZpY2F0aW9uLmljb24gPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2dwc19vbjsgLyogQ2hhbmdlIG5vdGlmaWNhdGlvbiBpY29uIGhlcmUgKi8KLSAgICAgICAgCW1OaU5vdGlmaWNhdGlvbi53aGVuID0gMDsKKyAgICAgICAgICAgICAgICAiLCB0aXRsZTogIiArIHRpdGxlICsKKyAgICAgICAgICAgICAgICAiLCBtZXNzYWdlOiAiICsgbWVzc2FnZSk7CisKKyAgICAgICAgLy8gQ29uc3RydWN0IE5vdGlmaWNhdGlvbgorICAgICAgICBpZiAobU5pTm90aWZpY2F0aW9uID09IG51bGwpIHsKKyAgICAgICAgICAgIG1OaU5vdGlmaWNhdGlvbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKKyAgICAgICAgICAgIG1OaU5vdGlmaWNhdGlvbi5pY29uID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19ncHNfb247IC8qIENoYW5nZSBub3RpZmljYXRpb24gaWNvbiBoZXJlICovCisgICAgICAgICAgICBtTmlOb3RpZmljYXRpb24ud2hlbiA9IDA7CiAgICAgICAgIH0KLSAgICAJCisKICAgICAgICAgaWYgKG1QbGF5U291bmRzKSB7Ci0gICAgICAgIAltTmlOb3RpZmljYXRpb24uZGVmYXVsdHMgfD0gTm90aWZpY2F0aW9uLkRFRkFVTFRfU09VTkQ7CisgICAgICAgICAgICBtTmlOb3RpZmljYXRpb24uZGVmYXVsdHMgfD0gTm90aWZpY2F0aW9uLkRFRkFVTFRfU09VTkQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIAltTmlOb3RpZmljYXRpb24uZGVmYXVsdHMgJj0gfk5vdGlmaWNhdGlvbi5ERUZBVUxUX1NPVU5EOworICAgICAgICAgICAgbU5pTm90aWZpY2F0aW9uLmRlZmF1bHRzICY9IH5Ob3RpZmljYXRpb24uREVGQVVMVF9TT1VORDsKICAgICAgICAgfSAgICAgICAgCi0gICAgICAgIAorCiAgICAgICAgIG1OaU5vdGlmaWNhdGlvbi5mbGFncyA9IE5vdGlmaWNhdGlvbi5GTEFHX09OR09JTkdfRVZFTlQ7CiAgICAgICAgIG1OaU5vdGlmaWNhdGlvbi50aWNrZXJUZXh0ID0gZ2V0Tm90aWZUaWNrZXIobm90aWYpOwotICAgICAgICAKKwogICAgICAgICAvLyBpZiBub3QgdG8gcG9wdXAgZGlhbG9nIGltbWVkaWF0ZWx5LCBwZW5kaW5nIGludGVudCB3aWxsIG9wZW4gdGhlIGRpYWxvZwotICAgICAgICBJbnRlbnQgaW50ZW50ID0gIW1Qb3B1cEltbWVkaWF0ZWx5ID8gZ2V0RGxnSW50ZW50KG5vdGlmKSA6IG5ldyBJbnRlbnQoKTsgICAgCSAgICAgICAgCisgICAgICAgIEludGVudCBpbnRlbnQgPSAhbVBvcHVwSW1tZWRpYXRlbHkgPyBnZXREbGdJbnRlbnQobm90aWYpIDogbmV3IEludGVudCgpOwogICAgICAgICBQZW5kaW5nSW50ZW50IHBpID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIGludGVudCwgMCk7ICAgICAgICAgICAgICAgIAogICAgICAgICBtTmlOb3RpZmljYXRpb24uc2V0TGF0ZXN0RXZlbnRJbmZvKG1Db250ZXh0LCB0aXRsZSwgbWVzc2FnZSwgcGkpOwotICAgICAgICAKKwogICAgICAgICBpZiAodmlzaWJsZSkgewogICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5ub3RpZnkobm90aWYubm90aWZpY2F0aW9uSWQsIG1OaU5vdGlmaWNhdGlvbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBub3RpZmljYXRpb25NYW5hZ2VyLmNhbmNlbChub3RpZi5ub3RpZmljYXRpb25JZCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgLy8gT3BlbnMgdGhlIG5vdGlmaWNhdGlvbiBkaWFsb2cgYW5kIHdhaXRzIGZvciB1c2VyIGlucHV0Ci0gICAgcHJpdmF0ZSB2b2lkIG9wZW5OaURpYWxvZyhHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikgCi0gICAgewotICAgIAlJbnRlbnQgaW50ZW50ID0gZ2V0RGxnSW50ZW50KG5vdGlmKTsKLSAgICAJCi0gICAgCWlmIChERUJVRykgTG9nLmQoVEFHLCAib3Blbk5pRGlhbG9nLCBub3RpZnlJZDogIiArIG5vdGlmLm5vdGlmaWNhdGlvbklkICsgCi0gICAgCQkJIiwgcmVxdWVzdG9ySWQ6ICIgKyBub3RpZi5yZXF1ZXN0b3JJZCArIAotICAgIAkJCSIsIHRleHQ6ICIgKyBub3RpZi50ZXh0KTsgICAgICAgICAgICAgICAJCiAKLSAgICAJbUNvbnRleHQuc3RhcnRBY3Rpdml0eShpbnRlbnQpOworICAgIC8vIE9wZW5zIHRoZSBub3RpZmljYXRpb24gZGlhbG9nIGFuZCB3YWl0cyBmb3IgdXNlciBpbnB1dAorICAgIHByaXZhdGUgdm9pZCBvcGVuTmlEaWFsb2coR3BzTmlOb3RpZmljYXRpb24gbm90aWYpCisgICAgeworICAgICAgICBJbnRlbnQgaW50ZW50ID0gZ2V0RGxnSW50ZW50KG5vdGlmKTsKKworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9wZW5OaURpYWxvZywgbm90aWZ5SWQ6ICIgKyBub3RpZi5ub3RpZmljYXRpb25JZCArCisgICAgICAgICAgICAgICAgIiwgcmVxdWVzdG9ySWQ6ICIgKyBub3RpZi5yZXF1ZXN0b3JJZCArCisgICAgICAgICAgICAgICAgIiwgdGV4dDogIiArIG5vdGlmLnRleHQpOworCisgICAgICAgIG1Db250ZXh0LnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKICAgICB9Ci0gICAgCisKICAgICAvLyBDb25zdHJ1Y3QgdGhlIGludGVudCBmb3IgYnJpbmdpbmcgdXAgdGhlIGRpYWxvZyBhY3Rpdml0eSwgd2hpY2ggc2hvd3MgdGhlIAogICAgIC8vIG5vdGlmaWNhdGlvbiBhbmQgdGFrZXMgdXNlciBpbnB1dAogICAgIHByaXZhdGUgSW50ZW50IGdldERsZ0ludGVudChHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCUludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgCVN0cmluZyB0aXRsZSA9IGdldERpYWxvZ1RpdGxlKG5vdGlmKTsKLSAgICAJU3RyaW5nIG1lc3NhZ2UgPSBnZXREaWFsb2dNZXNzYWdlKG5vdGlmKTsKLSAgICAJCi0gICAgCS8vIGRpcmVjdGx5IGJyaW5nIHVwIHRoZSBOSSBhY3Rpdml0eQotICAgIAlpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwotICAgIAlpbnRlbnQuc2V0Q2xhc3MobUNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5OZXRJbml0aWF0ZWRBY3Rpdml0eS5jbGFzcyk7ICAgIAkKKyAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gZ2V0RGlhbG9nVGl0bGUobm90aWYpOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGdldERpYWxvZ01lc3NhZ2Uobm90aWYpOwogCi0gICAgCS8vIHB1dCBkYXRhIGluIHRoZSBpbnRlbnQKLSAgICAJaW50ZW50LnB1dEV4dHJhKE5JX0lOVEVOVF9LRVlfTk9USUZfSUQsIG5vdGlmLm5vdGlmaWNhdGlvbklkKTsgICAgCQotICAgIAlpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9USVRMRSwgdGl0bGUpOwotICAgIAlpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9NRVNTQUdFLCBtZXNzYWdlKTsKLSAgICAJaW50ZW50LnB1dEV4dHJhKE5JX0lOVEVOVF9LRVlfVElNRU9VVCwgbm90aWYudGltZW91dCk7Ci0gICAgCWludGVudC5wdXRFeHRyYShOSV9JTlRFTlRfS0VZX0RFRkFVTFRfUkVTUE9OU0UsIG5vdGlmLmRlZmF1bHRSZXNwb25zZSk7Ci0gICAgCQotICAgIAlpZiAoREVCVUcpIExvZy5kKFRBRywgImdlbmVyYXRlSW50ZW50LCB0aXRsZTogIiArIHRpdGxlICsgIiwgbWVzc2FnZTogIiArIG1lc3NhZ2UgKwotICAgIAkJCSIsIHRpbWVvdXQ6ICIgKyBub3RpZi50aW1lb3V0KTsKLSAgICAJCi0gICAgCXJldHVybiBpbnRlbnQ7CisgICAgICAgIC8vIGRpcmVjdGx5IGJyaW5nIHVwIHRoZSBOSSBhY3Rpdml0eQorICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICBpbnRlbnQuc2V0Q2xhc3MobUNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5OZXRJbml0aWF0ZWRBY3Rpdml0eS5jbGFzcyk7CisKKyAgICAgICAgLy8gcHV0IGRhdGEgaW4gdGhlIGludGVudAorICAgICAgICBpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9OT1RJRl9JRCwgbm90aWYubm90aWZpY2F0aW9uSWQpOworICAgICAgICBpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9USVRMRSwgdGl0bGUpOworICAgICAgICBpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9NRVNTQUdFLCBtZXNzYWdlKTsKKyAgICAgICAgaW50ZW50LnB1dEV4dHJhKE5JX0lOVEVOVF9LRVlfVElNRU9VVCwgbm90aWYudGltZW91dCk7CisgICAgICAgIGludGVudC5wdXRFeHRyYShOSV9JTlRFTlRfS0VZX0RFRkFVTFRfUkVTUE9OU0UsIG5vdGlmLmRlZmF1bHRSZXNwb25zZSk7CisKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJnZW5lcmF0ZUludGVudCwgdGl0bGU6ICIgKyB0aXRsZSArICIsIG1lc3NhZ2U6ICIgKyBtZXNzYWdlICsKKyAgICAgICAgICAgICAgICAiLCB0aW1lb3V0OiAiICsgbm90aWYudGltZW91dCk7CisKKyAgICAgICAgcmV0dXJuIGludGVudDsKICAgICB9Ci0gICAgCisKICAgICAvLyBDb252ZXJ0cyBhIHN0cmluZyAob3IgSGV4IHN0cmluZykgdG8gYSBjaGFyIGFycmF5CiAgICAgc3RhdGljIGJ5dGVbXSBzdHJpbmdUb0J5dGVBcnJheShTdHJpbmcgb3JpZ2luYWwsIGJvb2xlYW4gaXNIZXgpCiAgICAgewotICAgIAlpbnQgbGVuZ3RoID0gaXNIZXggPyBvcmlnaW5hbC5sZW5ndGgoKSAvIDIgOiBvcmlnaW5hbC5sZW5ndGgoKTsKLSAgICAJYnl0ZVtdIG91dHB1dCA9IG5ldyBieXRlW2xlbmd0aF07Ci0gICAgCWludCBpOwotICAgIAkKLSAgICAJaWYgKGlzSGV4KQotICAgIAl7Ci0gICAgCQlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgCQl7Ci0gICAgCQkJb3V0cHV0W2ldID0gKGJ5dGUpIEludGVnZXIucGFyc2VJbnQob3JpZ2luYWwuc3Vic3RyaW5nKGkqMiwgaSoyKzIpLCAxNik7Ci0gICAgCQl9Ci0gICAgCX0KLSAgICAJZWxzZSB7Ci0gICAgCQlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgCQl7Ci0gICAgCQkJb3V0cHV0W2ldID0gKGJ5dGUpIG9yaWdpbmFsLmNoYXJBdChpKTsKLSAgICAJCX0KLSAgICAJfQotICAgIAkKLSAgICAJcmV0dXJuIG91dHB1dDsKKyAgICAgICAgaW50IGxlbmd0aCA9IGlzSGV4ID8gb3JpZ2luYWwubGVuZ3RoKCkgLyAyIDogb3JpZ2luYWwubGVuZ3RoKCk7CisgICAgICAgIGJ5dGVbXSBvdXRwdXQgPSBuZXcgYnl0ZVtsZW5ndGhdOworICAgICAgICBpbnQgaTsKKworICAgICAgICBpZiAoaXNIZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSAoYnl0ZSkgSW50ZWdlci5wYXJzZUludChvcmlnaW5hbC5zdWJzdHJpbmcoaSoyLCBpKjIrMiksIDE2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSAoYnl0ZSkgb3JpZ2luYWwuY2hhckF0KGkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgICB9Ci0gICAgCisKICAgICAvKioKICAgICAgKiBVbnBhY2tzIGFuIGJ5dGUgYXJyYXkgY29udGFpbmluZyA3LWJpdCBwYWNrZWQgY2hhcmFjdGVycyBpbnRvIGEgU3RyaW5nLgotICAgICAqIAorICAgICAqCiAgICAgICogQHBhcmFtIGlucHV0IGEgNy1iaXQgcGFja2VkIGNoYXIgYXJyYXkKICAgICAgKiBAcmV0dXJuIHRoZSB1bnBhY2tlZCBTdHJpbmcKICAgICAgKi8KICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZUdTTVBhY2tlZFN0cmluZyhieXRlW10gaW5wdXQpCiAgICAgewotICAgIAlmaW5hbCBjaGFyIENIQVJfQ1IgPSAweDBEOwotICAgIAlpbnQgblN0cmlkeCA9IDA7Ci0gICAgCWludCBuUGNraWR4ID0gMDsKLSAgICAJaW50IG51bV9ieXRlcyA9IGlucHV0Lmxlbmd0aDsKLSAgICAJaW50IGNQcmV2ID0gMDsKLSAgICAJaW50IGNDdXJyID0gMDsKLSAgICAJYnl0ZSBuU2hpZnQ7Ci0gICAgCWJ5dGUgbmV4dENoYXI7Ci0gICAgCWJ5dGVbXSBzdHJpbmdCdWYgPSBuZXcgYnl0ZVtpbnB1dC5sZW5ndGggKiAyXTsgCi0gICAgCVN0cmluZyByZXN1bHQgPSAiIjsKLSAgICAJCi0gICAgCXdoaWxlKG5QY2tpZHggPCBudW1fYnl0ZXMpCi0gICAgCXsKLSAgICAJCW5TaGlmdCA9IChieXRlKSAoblN0cmlkeCAmIDB4MDcpOwotICAgIAkJY0N1cnIgPSBpbnB1dFtuUGNraWR4KytdOwotICAgIAkJaWYgKGNDdXJyIDwgMCkgY0N1cnIgKz0gMjU2OworICAgICAgICBmaW5hbCBjaGFyIENIQVJfQ1IgPSAweDBEOworICAgICAgICBpbnQgblN0cmlkeCA9IDA7CisgICAgICAgIGludCBuUGNraWR4ID0gMDsKKyAgICAgICAgaW50IG51bV9ieXRlcyA9IGlucHV0Lmxlbmd0aDsKKyAgICAgICAgaW50IGNQcmV2ID0gMDsKKyAgICAgICAgaW50IGNDdXJyID0gMDsKKyAgICAgICAgYnl0ZSBuU2hpZnQ7CisgICAgICAgIGJ5dGUgbmV4dENoYXI7CisgICAgICAgIGJ5dGVbXSBzdHJpbmdCdWYgPSBuZXcgYnl0ZVtpbnB1dC5sZW5ndGggKiAyXTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9ICIiOwogCi0gICAgCQkvKiBBIDctYml0IGNoYXJhY3RlciBjYW4gYmUgc3BsaXQgYXQgdGhlIG1vc3QgYmV0d2VlbiB0d28gYnl0ZXMgb2YgcGFja2VkCi0gICAgCQkgKiogZGF0YS4KLSAgICAJCSAqLwotICAgIAkJbmV4dENoYXIgPSAoYnl0ZSkgKCggKGNDdXJyIDw8IG5TaGlmdCkgfCAoY1ByZXYgPj4gKDgtblNoaWZ0KSkgKSAmIDB4N0YpOwotICAgIAkJc3RyaW5nQnVmW25TdHJpZHgrK10gPSBuZXh0Q2hhcjsKKyAgICAgICAgd2hpbGUoblBja2lkeCA8IG51bV9ieXRlcykKKyAgICAgICAgeworICAgICAgICAgICAgblNoaWZ0ID0gKGJ5dGUpIChuU3RyaWR4ICYgMHgwNyk7CisgICAgICAgICAgICBjQ3VyciA9IGlucHV0W25QY2tpZHgrK107CisgICAgICAgICAgICBpZiAoY0N1cnIgPCAwKSBjQ3VyciArPSAyNTY7CiAKLSAgICAJCS8qIFNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgd2hvbGUgb2YgdGhlIG5leHQgNy1iaXQgY2hhcmFjdGVyIGZpdHMgaW5zaWRlCi0gICAgCQkgKiogdGhlIGN1cnJlbnQgYnl0ZSBvZiBwYWNrZWQgZGF0YS4KLSAgICAJCSAqLwotICAgIAkJaWYoblNoaWZ0ID09IDYpCi0gICAgCQl7Ci0gICAgCQkJLyogSWYgdGhlIG5leHQgNy1iaXQgY2hhcmFjdGVyIGlzIGEgQ1IgKDB4MEQpIGFuZCBpdCBpcyB0aGUgbGFzdAotICAgIAkJCSAqKiBjaGFyYWN0ZXIsIHRoZW4gaXQgaW5kaWNhdGVzIGEgcGFkZGluZyBjaGFyYWN0ZXIuIERyb3AgaXQuCi0gICAgCQkJICovCi0gICAgCQkJaWYgKG5QY2tpZHggPT0gbnVtX2J5dGVzIHx8IChjQ3VyciA+PiAxKSA9PSBDSEFSX0NSKQotICAgIAkJCXsKLSAgICAJCQkJYnJlYWs7Ci0gICAgCQkJfQotICAgIAkJCQotICAgIAkJCW5leHRDaGFyID0gKGJ5dGUpIChjQ3VyciA+PiAxKTsgCi0gICAgCQkJc3RyaW5nQnVmW25TdHJpZHgrK10gPSBuZXh0Q2hhcjsKLSAgICAJCX0KKyAgICAgICAgICAgIC8qIEEgNy1iaXQgY2hhcmFjdGVyIGNhbiBiZSBzcGxpdCBhdCB0aGUgbW9zdCBiZXR3ZWVuIHR3byBieXRlcyBvZiBwYWNrZWQKKyAgICAgICAgICAgICAqKiBkYXRhLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXh0Q2hhciA9IChieXRlKSAoKCAoY0N1cnIgPDwgblNoaWZ0KSB8IChjUHJldiA+PiAoOC1uU2hpZnQpKSApICYgMHg3Rik7CisgICAgICAgICAgICBzdHJpbmdCdWZbblN0cmlkeCsrXSA9IG5leHRDaGFyOwogCi0gICAgCQljUHJldiA9IGNDdXJyOwotICAgIAl9Ci0gICAgCQotICAgIAl0cnl7Ci0gICAgCQlyZXN1bHQgPSBuZXcgU3RyaW5nKHN0cmluZ0J1ZiwgMCwgblN0cmlkeCwgIlVTLUFTQ0lJIik7Ci0gICAgCX0KLSAgICAJY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKLSAgICAJewotICAgIAkJTG9nLmUoVEFHLCBlLmdldE1lc3NhZ2UoKSk7Ci0gICAgCX0KLSAgICAJCi0gICAgCXJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHdob2xlIG9mIHRoZSBuZXh0IDctYml0IGNoYXJhY3RlciBmaXRzIGluc2lkZQorICAgICAgICAgICAgICoqIHRoZSBjdXJyZW50IGJ5dGUgb2YgcGFja2VkIGRhdGEuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmKG5TaGlmdCA9PSA2KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIElmIHRoZSBuZXh0IDctYml0IGNoYXJhY3RlciBpcyBhIENSICgweDBEKSBhbmQgaXQgaXMgdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgKiogY2hhcmFjdGVyLCB0aGVuIGl0IGluZGljYXRlcyBhIHBhZGRpbmcgY2hhcmFjdGVyLiBEcm9wIGl0LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmIChuUGNraWR4ID09IG51bV9ieXRlcyB8fCAoY0N1cnIgPj4gMSkgPT0gQ0hBUl9DUikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG5leHRDaGFyID0gKGJ5dGUpIChjQ3VyciA+PiAxKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWZbblN0cmlkeCsrXSA9IG5leHRDaGFyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjUHJldiA9IGNDdXJyOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmcoc3RyaW5nQnVmLCAwLCBuU3RyaWR4LCAiVVMtQVNDSUkiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKQorICAgICAgICB7CisgICAgICAgICAgICBMb2cuZShUQUcsIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVVVEY4U3RyaW5nKGJ5dGVbXSBpbnB1dCkKICAgICB7Ci0gICAgCVN0cmluZyBkZWNvZGVkID0gIiI7Ci0gICAgCXRyeSB7Ci0gICAgCQlkZWNvZGVkID0gbmV3IFN0cmluZyhpbnB1dCwgIlVURi04Iik7Ci0gICAgCX0KLSAgICAJY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKLSAgICAJeyAKLSAgICAJCUxvZy5lKFRBRywgZS5nZXRNZXNzYWdlKCkpOwotICAgIAl9IAotCQlyZXR1cm4gZGVjb2RlZDsKKyAgICAgICAgU3RyaW5nIGRlY29kZWQgPSAiIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRlY29kZWQgPSBuZXcgU3RyaW5nKGlucHV0LCAiVVRGLTgiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKQorICAgICAgICB7CisgICAgICAgICAgICBMb2cuZShUQUcsIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVjb2RlZDsKICAgICB9Ci0gICAgCisKICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZVVDUzJTdHJpbmcoYnl0ZVtdIGlucHV0KQogICAgIHsKLSAgICAJU3RyaW5nIGRlY29kZWQgPSAiIjsKLSAgICAJdHJ5IHsKLSAgICAJCWRlY29kZWQgPSBuZXcgU3RyaW5nKGlucHV0LCAiVVRGLTE2Iik7Ci0gICAgCX0KLSAgICAJY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKLSAgICAJeyAKLSAgICAJCUxvZy5lKFRBRywgZS5nZXRNZXNzYWdlKCkpOwotICAgIAl9IAotCQlyZXR1cm4gZGVjb2RlZDsKKyAgICAgICAgU3RyaW5nIGRlY29kZWQgPSAiIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRlY29kZWQgPSBuZXcgU3RyaW5nKGlucHV0LCAiVVRGLTE2Iik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAgICAgTG9nLmUoVEFHLCBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlY29kZWQ7CiAgICAgfQotICAgIAorCiAgICAgLyoqIERlY29kZSBOSSBzdHJpbmcKLSAgICAgKiAKKyAgICAgKgogICAgICAqIEBwYXJhbSBvcmlnaW5hbCAgIFRoZSB0ZXh0IHN0cmluZyB0byBiZSBkZWNvZGVkCiAgICAgICogQHBhcmFtIGlzSGV4ICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZyBoYXMgYmVlbiBlbmNvZGVkIGFzIGEgSGV4IHN0cmluZy4gRW5jb2RpbmcKLSAgICAgKiAgICAgICAgICAgICAgICAgICBhIHN0cmluZyBhcyBIZXggY2FuIGFsbG93IHplcm9zIGluc2lkZSB0aGUgY29kZWQgdGV4dC4gCisgICAgICogICAgICAgICAgICAgICAgICAgYSBzdHJpbmcgYXMgSGV4IGNhbiBhbGxvdyB6ZXJvcyBpbnNpZGUgdGhlIGNvZGVkIHRleHQuCiAgICAgICogQHBhcmFtIGNvZGluZyAgICAgU3BlY2lmaWVzIHRoZSBjb2Rpbmcgc2NoZW1lIG9mIHRoZSBzdHJpbmcsIHN1Y2ggYXMgR1NNLCBVVEY4LCBVQ1MyLCBldGMuIFRoaXMgY29kaW5nIHNjaGVtZQotICAgICAqIAkJCQkJIG5lZWRzIHRvIG1hdGNoIHRob3NlIHVzZWQgcGFzc2VkIHRvIEhBTCBmcm9tIHRoZSBuYXRpdmUgR1BTIGRyaXZlci4gRGVjb2RpbmcgaXMgZG9uZSBhY2NvcmRpbmcKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBuZWVkcyB0byBtYXRjaCB0aG9zZSB1c2VkIHBhc3NlZCB0byBIQUwgZnJvbSB0aGUgbmF0aXZlIEdQUyBkcml2ZXIuIERlY29kaW5nIGlzIGRvbmUgYWNjb3JkaW5nCiAgICAgICogICAgICAgICAgICAgICAgICAgdG8gdGhlIDxjb2RlPiBjb2RpbmcgPC9jb2RlPiwgYWZ0ZXIgYSBIZXggc3RyaW5nIGlzIGRlY29kZWQuIEdlbmVyYWxseSwgaWYgdGhlCi0gICAgICogICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uIHN0cmluZ3MgZG9uJ3QgbmVlZCBmdXJ0aGVyIGRlY29kaW5nLCA8Y29kZT4gY29kaW5nIDwvY29kZT4gZW5jb2RpbmcgY2FuIGJlIAorICAgICAqICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbiBzdHJpbmdzIGRvbid0IG5lZWQgZnVydGhlciBkZWNvZGluZywgPGNvZGU+IGNvZGluZyA8L2NvZGU+IGVuY29kaW5nIGNhbiBiZQogICAgICAqICAgICAgICAgICAgICAgICAgIHNldCB0byAtMSwgYW5kIDxjb2RlPiBpc0hleCA8L2NvZGU+IGNhbiBiZSBmYWxzZS4KICAgICAgKiBAcmV0dXJuIHRoZSBkZWNvZGVkIHN0cmluZwogICAgICAqLwogICAgIHN0YXRpYyBwcml2YXRlIFN0cmluZyBkZWNvZGVTdHJpbmcoU3RyaW5nIG9yaWdpbmFsLCBib29sZWFuIGlzSGV4LCBpbnQgY29kaW5nKQogICAgIHsKLSAgICAJU3RyaW5nIGRlY29kZWQgPSBvcmlnaW5hbDsKLSAgICAJYnl0ZVtdIGlucHV0ID0gc3RyaW5nVG9CeXRlQXJyYXkob3JpZ2luYWwsIGlzSGV4KTsKKyAgICAgICAgU3RyaW5nIGRlY29kZWQgPSBvcmlnaW5hbDsKKyAgICAgICAgYnl0ZVtdIGlucHV0ID0gc3RyaW5nVG9CeXRlQXJyYXkob3JpZ2luYWwsIGlzSGV4KTsKIAotICAgIAlzd2l0Y2ggKGNvZGluZykgewotICAgIAljYXNlIEdQU19FTkNfTk9ORToKLSAgICAJCWRlY29kZWQgPSBvcmlnaW5hbDsKLSAgICAJCWJyZWFrOwotICAgIAkJCi0gICAgCWNhc2UgR1BTX0VOQ19TVVBMX0dTTV9ERUZBVUxUOgotICAgIAkJZGVjb2RlZCA9IGRlY29kZUdTTVBhY2tlZFN0cmluZyhpbnB1dCk7Ci0gICAgCQlicmVhazsKLSAgICAJCQotICAgIAljYXNlIEdQU19FTkNfU1VQTF9VVEY4OgotICAgIAkJZGVjb2RlZCA9IGRlY29kZVVURjhTdHJpbmcoaW5wdXQpOwotICAgIAkJYnJlYWs7Ci0gICAgCQkKLSAgICAJY2FzZSBHUFNfRU5DX1NVUExfVUNTMjoKLSAgICAJCWRlY29kZWQgPSBkZWNvZGVVQ1MyU3RyaW5nKGlucHV0KTsKLSAgICAJCWJyZWFrOwotICAgIAkJCi0gICAgCWNhc2UgR1BTX0VOQ19VTktOT1dOOgotICAgIAkJZGVjb2RlZCA9IG9yaWdpbmFsOwotICAgIAkJYnJlYWs7Ci0gICAgCQkKLSAgICAJZGVmYXVsdDoKLSAgICAJCUxvZy5lKFRBRywgIlVua25vd24gZW5jb2RpbmcgIiArIGNvZGluZyArICIgZm9yIE5JIHRleHQgIiArIG9yaWdpbmFsKTsKLSAgICAJCWJyZWFrOwotICAgIAl9Ci0gICAgCXJldHVybiBkZWNvZGVkOworICAgICAgICBzd2l0Y2ggKGNvZGluZykgeworICAgICAgICBjYXNlIEdQU19FTkNfTk9ORToKKyAgICAgICAgICAgIGRlY29kZWQgPSBvcmlnaW5hbDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR1BTX0VOQ19TVVBMX0dTTV9ERUZBVUxUOgorICAgICAgICAgICAgZGVjb2RlZCA9IGRlY29kZUdTTVBhY2tlZFN0cmluZyhpbnB1dCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdQU19FTkNfU1VQTF9VVEY4OgorICAgICAgICAgICAgZGVjb2RlZCA9IGRlY29kZVVURjhTdHJpbmcoaW5wdXQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHUFNfRU5DX1NVUExfVUNTMjoKKyAgICAgICAgICAgIGRlY29kZWQgPSBkZWNvZGVVQ1MyU3RyaW5nKGlucHV0KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR1BTX0VOQ19VTktOT1dOOgorICAgICAgICAgICAgZGVjb2RlZCA9IG9yaWdpbmFsOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExvZy5lKFRBRywgIlVua25vd24gZW5jb2RpbmcgIiArIGNvZGluZyArICIgZm9yIE5JIHRleHQgIiArIG9yaWdpbmFsKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkZWNvZGVkOwogICAgIH0KLSAgICAKKwogICAgIC8vIGNoYW5nZSB0aGlzIHRvIGNvbmZpZ3VyZSBub3RpZmljYXRpb24gZGlzcGxheQogICAgIHN0YXRpYyBwcml2YXRlIFN0cmluZyBnZXROb3RpZlRpY2tlcihHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCVN0cmluZyB0aWNrZXIgPSBTdHJpbmcuZm9ybWF0KCJQb3NpdGlvbiByZXF1ZXN0ISBSZXFJZDogWyVzXSBDbGllbnROYW1lOiBbJXNdIiwKLSAgICAJCQlkZWNvZGVTdHJpbmcobm90aWYucmVxdWVzdG9ySWQsIG1Jc0hleElucHV0LCBub3RpZi5yZXF1ZXN0b3JJZEVuY29kaW5nKSwKLSAgICAJCQlkZWNvZGVTdHJpbmcobm90aWYudGV4dCwgbUlzSGV4SW5wdXQsIG5vdGlmLnRleHRFbmNvZGluZykpOwotICAgIAlyZXR1cm4gdGlja2VyOworICAgICAgICBTdHJpbmcgdGlja2VyID0gU3RyaW5nLmZvcm1hdCgiUG9zaXRpb24gcmVxdWVzdCEgUmVxSWQ6IFslc10gQ2xpZW50TmFtZTogWyVzXSIsCisgICAgICAgICAgICAgICAgZGVjb2RlU3RyaW5nKG5vdGlmLnJlcXVlc3RvcklkLCBtSXNIZXhJbnB1dCwgbm90aWYucmVxdWVzdG9ySWRFbmNvZGluZyksCisgICAgICAgICAgICAgICAgZGVjb2RlU3RyaW5nKG5vdGlmLnRleHQsIG1Jc0hleElucHV0LCBub3RpZi50ZXh0RW5jb2RpbmcpKTsKKyAgICAgICAgcmV0dXJuIHRpY2tlcjsKICAgICB9Ci0gICAgCisKICAgICAvLyBjaGFuZ2UgdGhpcyB0byBjb25maWd1cmUgbm90aWZpY2F0aW9uIGRpc3BsYXkKICAgICBzdGF0aWMgcHJpdmF0ZSBTdHJpbmcgZ2V0Tm90aWZUaXRsZShHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCVN0cmluZyB0aXRsZSA9IFN0cmluZy5mb3JtYXQoIlBvc2l0aW9uIFJlcXVlc3QiKTsKLSAgICAJcmV0dXJuIHRpdGxlOworICAgICAgICBTdHJpbmcgdGl0bGUgPSBTdHJpbmcuZm9ybWF0KCJQb3NpdGlvbiBSZXF1ZXN0Iik7CisgICAgICAgIHJldHVybiB0aXRsZTsKICAgICB9Ci0gICAgCisKICAgICAvLyBjaGFuZ2UgdGhpcyB0byBjb25maWd1cmUgbm90aWZpY2F0aW9uIGRpc3BsYXkKICAgICBzdGF0aWMgcHJpdmF0ZSBTdHJpbmcgZ2V0Tm90aWZNZXNzYWdlKEdwc05pTm90aWZpY2F0aW9uIG5vdGlmKQogICAgIHsKLSAgICAJU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmcuZm9ybWF0KAotICAgIAkJCSJOSSBSZXF1ZXN0IHJlY2VpdmVkIGZyb20gWyVzXSBmb3IgY2xpZW50IFslc10hIiwgCi0gICAgCQkJZGVjb2RlU3RyaW5nKG5vdGlmLnJlcXVlc3RvcklkLCBtSXNIZXhJbnB1dCwgbm90aWYucmVxdWVzdG9ySWRFbmNvZGluZyksCi0gICAgCQkJZGVjb2RlU3RyaW5nKG5vdGlmLnRleHQsIG1Jc0hleElucHV0LCBub3RpZi50ZXh0RW5jb2RpbmcpKTsKLSAgICAJcmV0dXJuIG1lc3NhZ2U7CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAiTkkgUmVxdWVzdCByZWNlaXZlZCBmcm9tIFslc10gZm9yIGNsaWVudCBbJXNdISIsCisgICAgICAgICAgICAgICAgZGVjb2RlU3RyaW5nKG5vdGlmLnJlcXVlc3RvcklkLCBtSXNIZXhJbnB1dCwgbm90aWYucmVxdWVzdG9ySWRFbmNvZGluZyksCisgICAgICAgICAgICAgICAgZGVjb2RlU3RyaW5nKG5vdGlmLnRleHQsIG1Jc0hleElucHV0LCBub3RpZi50ZXh0RW5jb2RpbmcpKTsKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CiAgICAgfSAgICAgICAKLSAgICAKKwogICAgIC8vIGNoYW5nZSB0aGlzIHRvIGNvbmZpZ3VyZSBkaWFsb2cgZGlzcGxheSAoZm9yIHZlcmlmaWNhdGlvbikKICAgICBzdGF0aWMgcHVibGljIFN0cmluZyBnZXREaWFsb2dUaXRsZShHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCXJldHVybiBnZXROb3RpZlRpdGxlKG5vdGlmKTsKKyAgICAgICAgcmV0dXJuIGdldE5vdGlmVGl0bGUobm90aWYpOwogICAgIH0KLSAgICAKKwogICAgIC8vIGNoYW5nZSB0aGlzIHRvIGNvbmZpZ3VyZSBkaWFsb2cgZGlzcGxheSAoZm9yIHZlcmlmaWNhdGlvbikKICAgICBzdGF0aWMgcHJpdmF0ZSBTdHJpbmcgZ2V0RGlhbG9nTWVzc2FnZShHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCXJldHVybiBnZXROb3RpZk1lc3NhZ2Uobm90aWYpOworICAgICAgICByZXR1cm4gZ2V0Tm90aWZNZXNzYWdlKG5vdGlmKTsKICAgICB9Ci0gICAgCisKIH0KZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR3BzWHRyYURvd25sb2FkZXIuamF2YSBiL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR3BzWHRyYURvd25sb2FkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc4YmRhMi4uMDAwMDAwMAotLS0gYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc1h0cmFEb3dubG9hZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb247Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBDbGllbnQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBHZXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBVcmlSZXF1ZXN0OwotaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUm91dGVQYXJhbXM7Ci0KLWltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOwotaW1wb3J0IGphdmEudXRpbC5SYW5kb207Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLm5ldC5Qcm94eTsKLWltcG9ydCBhbmRyb2lkLm5ldC5odHRwLkFuZHJvaWRIdHRwQ2xpZW50OwotaW1wb3J0IGFuZHJvaWQudXRpbC5Db25maWc7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKLQotCi0KLS8qKgotICogQSBjbGFzcyBmb3IgZG93bmxvYWRpbmcgR1BTIFhUUkEgZGF0YS4KLSAqCi0gKiB7QGhpZGV9Ci0gKi8KLXB1YmxpYyBjbGFzcyBHcHNYdHJhRG93bmxvYWRlciB7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkdwc1h0cmFEb3dubG9hZGVyIjsKLSAgICAKLSAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgcHJpdmF0ZSBTdHJpbmdbXSBtWHRyYVNlcnZlcnM7Ci0gICAgLy8gdG8gbG9hZCBiYWxhbmNlIG91ciBzZXJ2ZXIgcmVxdWVzdHMKLSAgICBwcml2YXRlIGludCBtTmV4dFNlcnZlckluZGV4OwotCi0gICAgR3BzWHRyYURvd25sb2FkZXIoQ29udGV4dCBjb250ZXh0LCBQcm9wZXJ0aWVzIHByb3BlcnRpZXMpIHsKLSAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwotCi0gICAgICAgIC8vIHJlYWQgWFRSQSBzZXJ2ZXJzIGZyb20gdGhlIFByb3BlcnRpZXMgb2JqZWN0Ci0gICAgICAgIGludCBjb3VudCA9IDA7Ci0gICAgICAgIFN0cmluZyBzZXJ2ZXIxID0gcHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiWFRSQV9TRVJWRVJfMSIpOwotICAgICAgICBTdHJpbmcgc2VydmVyMiA9IHByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIlhUUkFfU0VSVkVSXzIiKTsKLSAgICAgICAgU3RyaW5nIHNlcnZlcjMgPSBwcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJYVFJBX1NFUlZFUl8zIik7Ci0gICAgICAgIGlmIChzZXJ2ZXIxICE9IG51bGwpIGNvdW50Kys7Ci0gICAgICAgIGlmIChzZXJ2ZXIyICE9IG51bGwpIGNvdW50Kys7Ci0gICAgICAgIGlmIChzZXJ2ZXIzICE9IG51bGwpIGNvdW50Kys7Ci0gICAgICAgIAotICAgICAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAgICAgTG9nLmUoVEFHLCAiTm8gWFRSQSBzZXJ2ZXJzIHdlcmUgc3BlY2lmaWVkIGluIHRoZSBHUFMgY29uZmlndXJhdGlvbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbVh0cmFTZXJ2ZXJzID0gbmV3IFN0cmluZ1tjb3VudF07Ci0gICAgICAgICAgICBjb3VudCA9IDA7Ci0gICAgICAgICAgICBpZiAoc2VydmVyMSAhPSBudWxsKSBtWHRyYVNlcnZlcnNbY291bnQrK10gPSBzZXJ2ZXIxOwotICAgICAgICAgICAgaWYgKHNlcnZlcjIgIT0gbnVsbCkgbVh0cmFTZXJ2ZXJzW2NvdW50KytdID0gc2VydmVyMjsKLSAgICAgICAgICAgIGlmIChzZXJ2ZXIzICE9IG51bGwpIG1YdHJhU2VydmVyc1tjb3VudCsrXSA9IHNlcnZlcjM7Ci0KLSAgICAgICAgICAgIC8vIHJhbmRvbWl6ZSBmaXJzdCBzZXJ2ZXIKLSAgICAgICAgICAgIFJhbmRvbSByYW5kb20gPSBuZXcgUmFuZG9tKCk7Ci0gICAgICAgICAgICBtTmV4dFNlcnZlckluZGV4ID0gcmFuZG9tLm5leHRJbnQoY291bnQpOwotICAgICAgICB9ICAgICAgIAotICAgIH0KLQotICAgIGJ5dGVbXSBkb3dubG9hZFh0cmFEYXRhKCkgewotICAgICAgICBTdHJpbmcgcHJveHlIb3N0ID0gUHJveHkuZ2V0SG9zdChtQ29udGV4dCk7Ci0gICAgICAgIGludCBwcm94eVBvcnQgPSBQcm94eS5nZXRQb3J0KG1Db250ZXh0KTsKLSAgICAgICAgYm9vbGVhbiB1c2VQcm94eSA9IChwcm94eUhvc3QgIT0gbnVsbCAmJiBwcm94eVBvcnQgIT0gLTEpOwotICAgICAgICBieXRlW10gcmVzdWx0ID0gbnVsbDsKLSAgICAgICAgaW50IHN0YXJ0SW5kZXggPSBtTmV4dFNlcnZlckluZGV4OwotCi0gICAgICAgIGlmIChtWHRyYVNlcnZlcnMgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBsb2FkIGJhbGFuY2Ugb3VyIHJlcXVlc3RzIGFtb25nIHRoZSBhdmFpbGFibGUgc2VydmVycwotICAgICAgICB3aGlsZSAocmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGRvRG93bmxvYWQobVh0cmFTZXJ2ZXJzW21OZXh0U2VydmVySW5kZXhdLCB1c2VQcm94eSwgcHJveHlIb3N0LCBwcm94eVBvcnQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBpbmNyZW1lbnQgbU5leHRTZXJ2ZXJJbmRleCBhbmQgd3JhcCBhcm91bmQgaWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICBtTmV4dFNlcnZlckluZGV4Kys7Ci0gICAgICAgICAgICBpZiAobU5leHRTZXJ2ZXJJbmRleCA9PSBtWHRyYVNlcnZlcnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgbU5leHRTZXJ2ZXJJbmRleCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBicmVhayBpZiB3ZSBoYXZlIHRyaWVkIGFsbCB0aGUgc2VydmVycwotICAgICAgICAgICAgaWYgKG1OZXh0U2VydmVySW5kZXggPT0gc3RhcnRJbmRleCkgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgc3RhdGljIGJ5dGVbXSBkb0Rvd25sb2FkKFN0cmluZyB1cmwsIGJvb2xlYW4gaXNQcm94eVNldCwgCi0gICAgICAgICAgICBTdHJpbmcgcHJveHlIb3N0LCBpbnQgcHJveHlQb3J0KSB7Ci0gICAgICAgIGlmIChDb25maWcuTE9HRCkgTG9nLmQoVEFHLCAiRG93bmxvYWRpbmcgWFRSQSBkYXRhIGZyb20gIiArIHVybCk7Ci0KLSAgICAgICAgQW5kcm9pZEh0dHBDbGllbnQgY2xpZW50ID0gbnVsbDsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNsaWVudCA9IEFuZHJvaWRIdHRwQ2xpZW50Lm5ld0luc3RhbmNlKCJBbmRyb2lkIik7Ci0gICAgICAgICAgICBIdHRwVXJpUmVxdWVzdCByZXEgPSBuZXcgSHR0cEdldCh1cmwpOwotCi0gICAgICAgICAgICBpZiAoaXNQcm94eVNldCkgewotICAgICAgICAgICAgICAgIEh0dHBIb3N0IHByb3h5ID0gbmV3IEh0dHBIb3N0KHByb3h5SG9zdCwgcHJveHlQb3J0KTsKLSAgICAgICAgICAgICAgICBDb25uUm91dGVQYXJhbXMuc2V0RGVmYXVsdFByb3h5KHJlcS5nZXRQYXJhbXMoKSwgcHJveHkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXEuYWRkSGVhZGVyKAotICAgICAgICAgICAgICAgICAgICAiQWNjZXB0IiwKLSAgICAgICAgICAgICAgICAgICAgIiovKiwgYXBwbGljYXRpb24vdm5kLndhcC5tbXMtbWVzc2FnZSwgYXBwbGljYXRpb24vdm5kLndhcC5zaWMiKTsKLQotICAgICAgICAgICAgcmVxLmFkZEhlYWRlcigKLSAgICAgICAgICAgICAgICAgICAgIngtd2FwLXByb2ZpbGUiLAotICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5vcGVubW9iaWxlYWxsaWFuY2Uub3JnL3RlY2gvcHJvZmlsZXMvVUFQUk9GL2NjcHBzY2hlbWEtMjAwMjEyMTIjIik7Ci0KLSAgICAgICAgICAgIEh0dHBSZXNwb25zZSByZXNwb25zZSA9IGNsaWVudC5leGVjdXRlKHJlcSk7Ci0gICAgICAgICAgICBTdGF0dXNMaW5lIHN0YXR1cyA9IHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzQ29kZSgpICE9IDIwMCkgeyAvLyBIVFRQIDIwMCBpcyBzdWNjZXNzLgotICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HRCkgTG9nLmQoVEFHLCAiSFRUUCBlcnJvcjogIiArIHN0YXR1cy5nZXRSZWFzb25QaHJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEh0dHBFbnRpdHkgZW50aXR5ID0gcmVzcG9uc2UuZ2V0RW50aXR5KCk7Ci0gICAgICAgICAgICBieXRlW10gYm9keSA9IG51bGw7Ci0gICAgICAgICAgICBpZiAoZW50aXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5LmdldENvbnRlbnRMZW5ndGgoKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBuZXcgYnl0ZVsoaW50KSBlbnRpdHkuZ2V0Q29udGVudExlbmd0aCgpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIERhdGFJbnB1dFN0cmVhbSBkaXMgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGVudGl0eS5nZXRDb250ZW50KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXMucmVhZEZ1bGx5KGJvZHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXMuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlVuZXhwZWN0ZWQgSU9FeGNlcHRpb24uIiwgZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuY29uc3VtZUNvbnRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBib2R5OwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgaWYgKENvbmZpZy5MT0dEKSBMb2cuZChUQUcsICJlcnJvciAiICsgZSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBpZiAoY2xpZW50ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlclByb3h5LmphdmEgYi9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJQcm94eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWVjMDlhLi4wMDAwMDAwCi0tLSBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlclByb3h5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb247Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklMb2NhdGlvblByb3ZpZGVyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlOwotaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247Ci1pbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotCi0vKioKLSAqIEEgY2xhc3MgZm9yIHByb3h5aW5nIGxvY2F0aW9uIHByb3ZpZGVycyBpbXBsZW1lbnRlZCBhcyBzZXJ2aWNlcy4KLSAqCi0gKiB7QGhpZGV9Ci0gKi8KLXB1YmxpYyBjbGFzcyBMb2NhdGlvblByb3ZpZGVyUHJveHkgaW1wbGVtZW50cyBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTG9jYXRpb25Qcm92aWRlclByb3h5IjsKLQotICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKLSAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtTmFtZTsKLSAgICBwcml2YXRlIElMb2NhdGlvblByb3ZpZGVyIG1Qcm92aWRlcjsKLSAgICBwcml2YXRlIEhhbmRsZXIgbUhhbmRsZXI7Ci0gICAgcHJpdmF0ZSBmaW5hbCBDb25uZWN0aW9uIG1TZXJ2aWNlQ29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKCk7Ci0KLSAgICAvLyBjYWNoZWQgdmFsdWVzIHNldCBieSB0aGUgbG9jYXRpb24gbWFuYWdlcgotICAgIHByaXZhdGUgYm9vbGVhbiBtTG9jYXRpb25UcmFja2luZyA9IGZhbHNlOwotICAgIHByaXZhdGUgYm9vbGVhbiBtRW5hYmxlZCA9IGZhbHNlOwotICAgIHByaXZhdGUgbG9uZyBtTWluVGltZSA9IC0xOwotICAgIHByaXZhdGUgaW50IG1OZXR3b3JrU3RhdGU7Ci0gICAgcHJpdmF0ZSBOZXR3b3JrSW5mbyBtTmV0d29ya0luZm87Ci0KLSAgICAvLyBmb3IgY2FjaGluZyByZXF1aXJlc05ldHdvcmssIHJlcXVpcmVzU2F0ZWxsaXRlLCBldGMuCi0gICAgcHJpdmF0ZSBEdW1teUxvY2F0aW9uUHJvdmlkZXIgbUNhY2hlZEF0dHJpYnV0ZXM7Ci0KLSAgICAvLyBjb25zdHJ1Y3RvciBmb3IgcHJveHlpbmcgbG9jYXRpb24gcHJvdmlkZXJzIGltcGxlbWVudGVkIGluIGEgc2VwYXJhdGUgc2VydmljZQotICAgIHB1YmxpYyBMb2NhdGlvblByb3ZpZGVyUHJveHkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHNlcnZpY2VOYW1lLAotICAgICAgICAgICAgSGFuZGxlciBoYW5kbGVyKSB7Ci0gICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgbU5hbWUgPSBuYW1lOwotICAgICAgICBtSGFuZGxlciA9IGhhbmRsZXI7Ci0gICAgICAgIG1Db250ZXh0LmJpbmRTZXJ2aWNlKG5ldyBJbnRlbnQoc2VydmljZU5hbWUpLCBtU2VydmljZUNvbm5lY3Rpb24sIENvbnRleHQuQklORF9BVVRPX0NSRUFURSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBDb25uZWN0aW9uIGltcGxlbWVudHMgU2VydmljZUNvbm5lY3Rpb24gewotICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VDb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUsIElCaW5kZXIgc2VydmljZSkgewotICAgICAgICAgICAgTG9nLmQoVEFHLCAiTG9jYXRpb25Qcm92aWRlclByb3h5Lm9uU2VydmljZUNvbm5lY3RlZCAiICsgY2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIG1Qcm92aWRlciA9IElMb2NhdGlvblByb3ZpZGVyLlN0dWIuYXNJbnRlcmZhY2Uoc2VydmljZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1Qcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnBvc3QobVNlcnZpY2VDb25uZWN0ZWRUYXNrKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUpIHsKLSAgICAgICAgICAgIExvZy5kKFRBRywgIkxvY2F0aW9uUHJvdmlkZXJQcm94eS5vblNlcnZpY2VEaXNjb25uZWN0ZWQgIiArIGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBtUHJvdmlkZXIgPSBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBSdW5uYWJsZSBtU2VydmljZUNvbm5lY3RlZFRhc2sgPSBuZXcgUnVubmFibGUoKSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOwotICAgICAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzID0gbmV3IER1bW15TG9jYXRpb25Qcm92aWRlcihtTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFJlcXVpcmVzTmV0d29yayhwcm92aWRlci5yZXF1aXJlc05ldHdvcmsoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFJlcXVpcmVzU2F0ZWxsaXRlKHByb3ZpZGVyLnJlcXVpcmVzU2F0ZWxsaXRlKCkpOwotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRSZXF1aXJlc0NlbGwocHJvdmlkZXIucmVxdWlyZXNDZWxsKCkpOwotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRIYXNNb25ldGFyeUNvc3QocHJvdmlkZXIuaGFzTW9uZXRhcnlDb3N0KCkpOwotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRTdXBwb3J0c0FsdGl0dWRlKHByb3ZpZGVyLnN1cHBvcnRzQWx0aXR1ZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFN1cHBvcnRzU3BlZWQocHJvdmlkZXIuc3VwcG9ydHNTcGVlZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0U3VwcG9ydHNCZWFyaW5nKHByb3ZpZGVyLnN1cHBvcnRzQmVhcmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0UG93ZXJSZXF1aXJlbWVudChwcm92aWRlci5nZXRQb3dlclJlcXVpcmVtZW50KCkpOwotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRBY2N1cmFjeShwcm92aWRlci5nZXRBY2N1cmFjeSgpKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcyA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyByZXNlbmQgcHJldmlvdXMgdmFsdWVzIGZyb20gdGhlIGxvY2F0aW9uIG1hbmFnZXIgaWYgdGhlIHNlcnZpY2UgaGFzIHJlc3RhcnRlZAotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAobUVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIuZW5hYmxlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtTG9jYXRpb25UcmFja2luZykgewotICAgICAgICAgICAgICAgICAgICBwcm92aWRlci5lbmFibGVMb2NhdGlvblRyYWNraW5nKHRydWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobU1pblRpbWUgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBwcm92aWRlci5zZXRNaW5UaW1lKG1NaW5UaW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1OZXR3b3JrSW5mbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyLnVwZGF0ZU5ldHdvcmtTdGF0ZShtTmV0d29ya1N0YXRlLCBtTmV0d29ya0luZm8pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gbU5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKCkgewotICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLnJlcXVpcmVzTmV0d29yaygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKSB7Ci0gICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMucmVxdWlyZXNTYXRlbGxpdGUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzQ2VsbCgpIHsKLSAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5yZXF1aXJlc0NlbGwoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpIHsKLSAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5oYXNNb25ldGFyeUNvc3QoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUoKSB7Ci0gICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMuc3VwcG9ydHNBbHRpdHVkZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKLSAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5zdXBwb3J0c1NwZWVkKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nKCkgewotICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLnN1cHBvcnRzQmVhcmluZygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgewotICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLmdldFBvd2VyUmVxdWlyZW1lbnQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7Ci0gICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMuZ2V0QWNjdXJhY3koKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKLSAgICAgICAgbUVuYWJsZWQgPSB0cnVlOwotICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHByb3ZpZGVyLmVuYWJsZSgpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoKSB7Ci0gICAgICAgIG1FbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgewotICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcHJvdmlkZXIuZGlzYWJsZSgpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKLSAgICAgICAgcmV0dXJuIG1FbmFibGVkOwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuZ2V0U3RhdHVzKGV4dHJhcyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHB1YmxpYyBsb25nIGdldFN0YXR1c1VwZGF0ZVRpbWUoKSB7Ci0gICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5nZXRTdGF0dXNVcGRhdGVUaW1lKCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gbVByb3ZpZGVyLmdldEludGVybmFsU3RhdGUoKTsKLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIExvZy5lKFRBRywgImdldEludGVybmFsU3RhdGUgZmFpbGVkIiwgZSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzTG9jYXRpb25UcmFja2luZygpIHsKLSAgICAgICAgcmV0dXJuIG1Mb2NhdGlvblRyYWNraW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKLSAgICAgICAgbUxvY2F0aW9uVHJhY2tpbmcgPSBlbmFibGU7Ci0gICAgICAgIGlmICghZW5hYmxlKSB7Ci0gICAgICAgICAgICBtTWluVGltZSA9IC0xOwotICAgICAgICB9Ci0gICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgewotICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcHJvdmlkZXIuZW5hYmxlTG9jYXRpb25UcmFja2luZyhlbmFibGUpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBsb25nIGdldE1pblRpbWUoKSB7Ci0gICAgICAgIHJldHVybiBtTWluVGltZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgewotICAgICAgIG1NaW5UaW1lID0gbWluVGltZTsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBwcm92aWRlci5zZXRNaW5UaW1lKG1pblRpbWUpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKLSAgICAgICAgbU5ldHdvcmtTdGF0ZSA9IHN0YXRlOwotICAgICAgICBtTmV0d29ya0luZm8gPSBpbmZvOwotICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHByb3ZpZGVyLnVwZGF0ZU5ldHdvcmtTdGF0ZShzdGF0ZSwgaW5mbyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pIHsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBwcm92aWRlci51cGRhdGVMb2NhdGlvbihsb2NhdGlvbik7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcykgewotICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHByb3ZpZGVyLnNlbmRFeHRyYUNvbW1hbmQoY29tbWFuZCwgZXh0cmFzKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKGludCB1aWQpIHsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBwcm92aWRlci5hZGRMaXN0ZW5lcih1aWQpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpIHsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBwcm92aWRlci5yZW1vdmVMaXN0ZW5lcih1aWQpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vTW9ja1Byb3ZpZGVyLmphdmEgYi9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL01vY2tQcm92aWRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTEyNzQwLi4wMDAwMDAwCi0tLSBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vTW9ja1Byb3ZpZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb247Ci0KLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklMb2NhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXI7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlOwotaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwotaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlByaW50V3JpdGVyUHJpbnRlcjsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci0KLS8qKgotICogQSBtb2NrIGxvY2F0aW9uIHByb3ZpZGVyIHVzZWQgYnkgTG9jYXRpb25NYW5hZ2VyU2VydmljZSB0byBpbXBsZW1lbnQgdGVzdCBwcm92aWRlcnMuCi0gKgotICoge0BoaWRlfQotICovCi1wdWJsaWMgY2xhc3MgTW9ja1Byb3ZpZGVyIGltcGxlbWVudHMgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSB7Ci0gICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbU5hbWU7Ci0gICAgcHJpdmF0ZSBmaW5hbCBJTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7Ci0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1SZXF1aXJlc05ldHdvcms7Ci0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1SZXF1aXJlc1NhdGVsbGl0ZTsKLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbVJlcXVpcmVzQ2VsbDsKLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbUhhc01vbmV0YXJ5Q29zdDsKLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbVN1cHBvcnRzQWx0aXR1ZGU7Ci0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1TdXBwb3J0c1NwZWVkOwotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtU3VwcG9ydHNCZWFyaW5nOwotICAgIHByaXZhdGUgZmluYWwgaW50IG1Qb3dlclJlcXVpcmVtZW50OwotICAgIHByaXZhdGUgZmluYWwgaW50IG1BY2N1cmFjeTsKLSAgICBwcml2YXRlIGZpbmFsIExvY2F0aW9uIG1Mb2NhdGlvbjsKLSAgICBwcml2YXRlIGludCBtU3RhdHVzOwotICAgIHByaXZhdGUgbG9uZyBtU3RhdHVzVXBkYXRlVGltZTsKLSAgICBwcml2YXRlIGZpbmFsIEJ1bmRsZSBtRXh0cmFzID0gbmV3IEJ1bmRsZSgpOwotICAgIHByaXZhdGUgYm9vbGVhbiBtSGFzTG9jYXRpb247Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1IYXNTdGF0dXM7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1FbmFibGVkOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJNb2NrUHJvdmlkZXIiOwotCi0gICAgcHVibGljIE1vY2tQcm92aWRlcihTdHJpbmcgbmFtZSwgIElMb2NhdGlvbk1hbmFnZXIgbG9jYXRpb25NYW5hZ2VyLAotICAgICAgICBib29sZWFuIHJlcXVpcmVzTmV0d29yaywgYm9vbGVhbiByZXF1aXJlc1NhdGVsbGl0ZSwKLSAgICAgICAgYm9vbGVhbiByZXF1aXJlc0NlbGwsIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0LCBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUsCi0gICAgICAgIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCwgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcsIGludCBwb3dlclJlcXVpcmVtZW50LCBpbnQgYWNjdXJhY3kpIHsKLSAgICAgICAgbU5hbWUgPSBuYW1lOwotICAgICAgICBtTG9jYXRpb25NYW5hZ2VyID0gbG9jYXRpb25NYW5hZ2VyOwotICAgICAgICBtUmVxdWlyZXNOZXR3b3JrID0gcmVxdWlyZXNOZXR3b3JrOwotICAgICAgICBtUmVxdWlyZXNTYXRlbGxpdGUgPSByZXF1aXJlc1NhdGVsbGl0ZTsKLSAgICAgICAgbVJlcXVpcmVzQ2VsbCA9IHJlcXVpcmVzQ2VsbDsKLSAgICAgICAgbUhhc01vbmV0YXJ5Q29zdCA9IGhhc01vbmV0YXJ5Q29zdDsKLSAgICAgICAgbVN1cHBvcnRzQWx0aXR1ZGUgPSBzdXBwb3J0c0FsdGl0dWRlOwotICAgICAgICBtU3VwcG9ydHNCZWFyaW5nID0gc3VwcG9ydHNCZWFyaW5nOwotICAgICAgICBtU3VwcG9ydHNTcGVlZCA9IHN1cHBvcnRzU3BlZWQ7Ci0gICAgICAgIG1Qb3dlclJlcXVpcmVtZW50ID0gcG93ZXJSZXF1aXJlbWVudDsKLSAgICAgICAgbUFjY3VyYWN5ID0gYWNjdXJhY3k7Ci0gICAgICAgIG1Mb2NhdGlvbiA9IG5ldyBMb2NhdGlvbihuYW1lKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBtTmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKCkgewotICAgICAgICBtRW5hYmxlZCA9IGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKLSAgICAgICAgbUVuYWJsZWQgPSB0cnVlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKLSAgICAgICAgcmV0dXJuIG1FbmFibGVkOwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgaWYgKG1IYXNTdGF0dXMpIHsKLSAgICAgICAgICAgIGV4dHJhcy5jbGVhcigpOwotICAgICAgICAgICAgZXh0cmFzLnB1dEFsbChtRXh0cmFzKTsKLSAgICAgICAgICAgIHJldHVybiBtU3RhdHVzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIExvY2F0aW9uUHJvdmlkZXIuQVZBSUxBQkxFOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGxvbmcgZ2V0U3RhdHVzVXBkYXRlVGltZSgpIHsKLSAgICAgICAgcmV0dXJuIG1TdGF0dXNVcGRhdGVUaW1lOwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7Ci0gICAgICAgIHJldHVybiBtQWNjdXJhY3k7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgewotICAgICAgICByZXR1cm4gbVBvd2VyUmVxdWlyZW1lbnQ7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0KCkgewotICAgICAgICByZXR1cm4gbUhhc01vbmV0YXJ5Q29zdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc0NlbGwoKSB7Ci0gICAgICAgIHJldHVybiBtUmVxdWlyZXNDZWxsOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzTmV0d29yaygpIHsKLSAgICAgICAgcmV0dXJuIG1SZXF1aXJlc05ldHdvcms7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKSB7Ci0gICAgICAgIHJldHVybiBtUmVxdWlyZXNTYXRlbGxpdGU7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNBbHRpdHVkZSgpIHsKLSAgICAgICAgcmV0dXJuIG1TdXBwb3J0c0FsdGl0dWRlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQmVhcmluZygpIHsKLSAgICAgICAgcmV0dXJuIG1TdXBwb3J0c0JlYXJpbmc7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKLSAgICAgICAgcmV0dXJuIG1TdXBwb3J0c1NwZWVkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKExvY2F0aW9uIGwpIHsKLSAgICAgICAgbUxvY2F0aW9uLnNldChsKTsKLSAgICAgICAgbUhhc0xvY2F0aW9uID0gdHJ1ZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIucmVwb3J0TG9jYXRpb24obUxvY2F0aW9uLCBmYWxzZSk7Ci0gICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBMb2cuZShUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyByZXBvcnRMb2NhdGlvbiIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgY2xlYXJMb2NhdGlvbigpIHsKLSAgICAgICAgbUhhc0xvY2F0aW9uID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3RhdHVzKGludCBzdGF0dXMsIEJ1bmRsZSBleHRyYXMsIGxvbmcgdXBkYXRlVGltZSkgewotICAgICAgICBtU3RhdHVzID0gc3RhdHVzOwotICAgICAgICBtU3RhdHVzVXBkYXRlVGltZSA9IHVwZGF0ZVRpbWU7Ci0gICAgICAgIG1FeHRyYXMuY2xlYXIoKTsKLSAgICAgICAgaWYgKGV4dHJhcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtRXh0cmFzLnB1dEFsbChleHRyYXMpOwotICAgICAgICB9Ci0gICAgICAgIG1IYXNTdGF0dXMgPSB0cnVlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGNsZWFyU3RhdHVzKCkgewotICAgICAgICBtSGFzU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIG1TdGF0dXNVcGRhdGVUaW1lID0gMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB1cGRhdGVMb2NhdGlvbihMb2NhdGlvbiBsb2NhdGlvbikgewotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHNlbmRFeHRyYUNvbW1hbmQoU3RyaW5nIGNvbW1hbmQsIEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKGludCB1aWQpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCByZW1vdmVMaXN0ZW5lcihpbnQgdWlkKSB7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZHVtcChQcmludFdyaXRlciBwdywgU3RyaW5nIHByZWZpeCkgewotICAgICAgICBwdy5wcmludGxuKHByZWZpeCArIG1OYW1lKTsKLSAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibUhhc0xvY2F0aW9uPSIgKyBtSGFzTG9jYXRpb24pOwotICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtTG9jYXRpb246Iik7Ci0gICAgICAgIG1Mb2NhdGlvbi5kdW1wKG5ldyBQcmludFdyaXRlclByaW50ZXIocHcpLCBwcmVmaXggKyAiICAiKTsKLSAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibUhhc1N0YXR1cz0iICsgbUhhc1N0YXR1cyk7Ci0gICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1TdGF0dXM9IiArIG1TdGF0dXMpOwotICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtU3RhdHVzVXBkYXRlVGltZT0iICsgbVN0YXR1c1VwZGF0ZVRpbWUpOwotICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtRXh0cmFzPSIgKyBtRXh0cmFzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL1Bhc3NpdmVQcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9QYXNzaXZlUHJvdmlkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI5MDkzNy4uMDAwMDAwMAotLS0gYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL1Bhc3NpdmVQcm92aWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uOwotCi1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25NYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlckludGVyZmFjZTsKLWltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKLWltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotCi0vKioKLSAqIEEgcGFzc2l2ZSBsb2NhdGlvbiBwcm92aWRlciByZXBvcnRzIGxvY2F0aW9ucyByZWNlaXZlZCBmcm9tIG90aGVyIHByb3ZpZGVycwotICogZm9yIGNsaWVudHMgdGhhdCB3YW50IHRvIGxpc3RlbiBwYXNzaXZlbHkgd2l0aG91dCBhY3R1YWxseSB0cmlnZ2VyaW5nCi0gKiBsb2NhdGlvbiB1cGRhdGVzLgotICoKLSAqIHtAaGlkZX0KLSAqLwotcHVibGljIGNsYXNzIFBhc3NpdmVQcm92aWRlciBpbXBsZW1lbnRzIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgewotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJQYXNzaXZlUHJvdmlkZXIiOwotCi0gICAgcHJpdmF0ZSBmaW5hbCBJTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1UcmFja2luZzsKLQotICAgIHB1YmxpYyBQYXNzaXZlUHJvdmlkZXIoSUxvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXIpIHsKLSAgICAgICAgbUxvY2F0aW9uTWFuYWdlciA9IGxvY2F0aW9uTWFuYWdlcjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBMb2NhdGlvbk1hbmFnZXIuUEFTU0lWRV9QUk9WSURFUjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc05ldHdvcmsoKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1NhdGVsbGl0ZSgpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzQ2VsbCgpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUoKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nKCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRBY2N1cmFjeSgpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZW5hYmxlKCkgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRTdGF0dXMoQnVuZGxlIGV4dHJhcykgewotICAgICAgICBpZiAobVRyYWNraW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gTG9jYXRpb25Qcm92aWRlci5BVkFJTEFCTEU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gTG9jYXRpb25Qcm92aWRlci5URU1QT1JBUklMWV9VTkFWQUlMQUJMRTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBsb25nIGdldFN0YXR1c1VwZGF0ZVRpbWUoKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKLSAgICAgICAgbVRyYWNraW5nID0gZW5hYmxlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKSB7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdXBkYXRlTmV0d29ya1N0YXRlKGludCBzdGF0ZSwgTmV0d29ya0luZm8gaW5mbykgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKSB7Ci0gICAgICAgIGlmIChtVHJhY2tpbmcpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUgbG9jYXRpb24gYmFjayB0byB0aGUgbG9jYXRpb24gbWFuYWdlcgotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIucmVwb3J0TG9jYXRpb24obG9jYXRpb24sIHRydWUpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyByZXBvcnRMb2NhdGlvbiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcykgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoaW50IHVpZCkgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpIHsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9FZmZlY3QuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9BdWRpb0VmZmVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYjdmZWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9FZmZlY3QuamF2YQpAQCAtMCwwICsxLDk1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgYW5kcm9pZC5tZWRpYTsKKworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuTG9vcGVyOworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKK2ltcG9ydCBqYXZhLm5pby5CeXRlT3JkZXI7CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKKworLyoqCisgKiBBdWRpb0VmZmVjdCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIGF1ZGlvIGVmZmVjdCBjb250cm9sIGluIEphdmEgYXBwbGljYXRpb25zLgorICogQ3JlYXRpbmcgYW4gQXVkaW9FZmZlY3Qgb2JqZWN0IHdpbGwgY3JlYXRlIHRoZSBlZmZlY3QgZW5naW5lIGluIGF1ZGlvIGZyYW1ld29yayBpZiBubworICogaW5zdGFuY2Ugb2YgdGhlIHNhbWUgZWZmZWN0IHR5cGUgZXhpc3RzIGluIHRoZSBzcGVjaWZpZWQgYXVkaW8gc2Vzc2lvbi4KKyAqIElmIG9uZSBleGlzdHMsIHRoaXMgaW5zdGFuY2Ugd2lsbCBiZSB1c2VkLiBUaGUgYXBwbGljYXRpb24gY3JlYXRpbmcgdGhlIEF1ZGlvRWZmZWN0IG9iamVjdAorICogKG9yIGEgZGVyaXZlZCBjbGFzcykgd2lsbCBlaXRoZXIgcmVjZWl2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lIG9yIG5vdCBkZXBlbmRpbmcKKyAqIG9uIHRoZSBwcmlvcml0eSBwYXJhbWV0ZXIuIElmIHByaW9yaXR5IGlzIGhpZ2hlciB0aGFuIHRoZSBwcmlvcml0eSB1c2VkIGJ5IHRoZSBjdXJyZW50CisgKiBlZmZlY3QgZW5naW5lIG93bmVyLCB0aGUgY29udHJvbCB3aWxsIGJlIHRyYW5zZmVyZWQgdG8gdGhlIG5ldyBvYmplY3QuIE90aGVyd2lzZQorICogY29udHJvbCB3aWxsIHJlbWFpbiB3aXRoIHRoZSBwcmV2aW91cyBvYmplY3QuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBhcHBsaWNhdGlvbiB3aWxsIGJlCisgKiBub3RpZmllZCBvZiBjaGFuZ2VzIGluIGVmZmVjdCBlbmdpbmUgc3RhdGUgb3IgY29udHJvbCBvd25lcnNoaXAgYnkgdGhlIGFwcHJvcGlhdGUgbGlzdGVuZXIuCisgKiBJZiB0aGUgZWZmZWN0IGlzIHRvIGJlIGFwcGxpZWQgdG8gYSBzcGVjaWZpYyBBdWRpb1RyYWNrIG9yIE1lZGlhUGxheWVyIGluc3RhbmNlLAorICogdGhlIGFwcGxpY2F0aW9uIG11c3Qgc3BlY2lmeSB0aGUgYXVkaW8gc2Vzc2lvbiBJRCBvZiB0aGF0IGluc3RhbmNlLgorICoKKyAqIHtAaGlkZSBQZW5kaW5nIEFQSSBjb3VuY2lsIHJldmlld30KKyAqLworcHVibGljIGNsYXNzIEF1ZGlvRWZmZWN0Cit7CisgICAgc3RhdGljIHsKKyAgICAgICAgU3lzdGVtLmxvYWRMaWJyYXJ5KCJhdWRpb2VmZmVjdF9qbmkiKTsKKyAgICAgICAgbmF0aXZlX2luaXQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgVEFHID0gIkF1ZGlvRWZmZWN0LUpBVkEiOworCisgICAgLyoqCisgICAgICogVGhlIGZvbGxvd2luZyBVVUlEcyBkZWZpbmUgZWZmZWN0IHR5cGVzIGNvcnJlc3BvbmRpbmcgdG8gc3RhbmRhcmQgYXVkaW8gZWZmZWN0cworICAgICAqIHdob3NlIGltcGxlbWVudGF0aW9uIGFuZCBpbnRlcmZhY2UgY29uZm9ybSB0byB0aGUgT3BlblNMIEVTIHNwZWNpZmljYXRpb24uCisgICAgICogVGhlIGRlZmluaXRpb25zIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBJRHMgaW4gT3BlblNMRVNfSUlELmgKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVVSUQgRUZGRUNUX1RZUEVfRU5WX1JFVkVSQiA9IFVVSUQuZnJvbVN0cmluZygiYzJlNWQ1ZjAtOTRiZC00NzYzLTljYWMtNGUyMzRkMDY4MzllIik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVVUlEIEVGRkVDVF9UWVBFX1BSRVNFVF9SRVZFUkIgPSBVVUlELmZyb21TdHJpbmcoIjQ3MzgyZDYwLWRkZDgtMTFkYi1iZjNhLTAwMDJhNWQ1YzUxYiIpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVVVJRCBFRkZFQ1RfVFlQRV9FUVVBTElaRVIgPSBVVUlELmZyb21TdHJpbmcoIjBiZWQ0MzAwLWRkZDYtMTFkYi04ZjM0LTAwMDJhNWQ1YzUxYiIpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVVVJRCBFRkZFQ1RfVFlQRV9CQVNTX0JPT1NUID0gVVVJRC5mcm9tU3RyaW5nKCIwNjM0ZjIyMC1kZGQ0LTExZGItYTBmYy0wMDAyYTVkNWM1MWIiKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVVSUQgRUZGRUNUX1RZUEVfVklSVFVBTElaRVIgPSBVVUlELmZyb21TdHJpbmcoIjM3Y2MyYzAwLWRkZGQtMTFkYi04NTc3LTAwMDJhNWQ1YzUxYiIpOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVVUlEIEVGRkVDVF9UWVBFX0lOVkFMSUQgPSBVVUlELmZyb21TdHJpbmcoImVjNzE3OGVjLWU1ZTEtNDQzMi1hM2Y0LTQ2NTdlNjc5NTIxMCIpOworCisgICAgLyoqCisgICAgICogU3RhdGUgb2YgYW4gQXVkaW9FZmZlY3Qgb2JqZWN0IHRoYXQgd2FzIG5vdCBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgdXBvbiBjcmVhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1VOSU5JVElBTElaRUQgPSAwOworICAgIC8qKgorICAgICAqIFN0YXRlIG9mIGFuIEF1ZGlvRWZmZWN0IG9iamVjdCB0aGF0IGlzIHJlYWR5IHRvIGJlIHVzZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfSU5JVElBTElaRUQgICA9IDE7CisKKyAgICAvKioKKyAgICAgKiBFdmVudCBpZCBmb3IgZW5naW5lIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb24uCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTkFUSVZFX0VWRU5UX0VOQUJMRURfU1RBVFVTICA9IDA7CisgICAgLyoqCisgICAgICogRXZlbnQgaWQgZm9yIGVuZ2luZSBjb250cm9sIG93bmVyc2hpcCBjaGFuZ2Ugbm90aWZpY2F0aW9uLgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IE5BVElWRV9FVkVOVF9DT05UUk9MX1NUQVRVUyA9IDE7CisgICAgLyoqCisgICAgICogRXZlbnQgaWQgZm9yIGVuZ2luZSBwYXJhbWV0ZXIgY2hhbmdlIG5vdGlmaWNhdGlvbi4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBOQVRJVkVfRVZFTlRfUEFSQU1FVEVSX0NIQU5HRUQgPSAyOworCisKKyAgICAvLyB0byBrZWVwIGluIHN5bmMgd2l0aCBmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvam5pL2F1ZGlvZWZmZWN0L2FuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3QuY3BwCisgICAgcHVibGljICBzdGF0aWMgZmluYWwgaW50IFNVQ0NFU1MgICAgICAgICAgICAgID0gMDsKKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgRVJST1IgICAgICAgICAgICAgICAgPSAtMTsKKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgQUxSRUFEWV9FWElTVFMgICAgICAgPSAtMjsKKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgTk9fSU5JVCAgICAgICAgICAgICAgPSAtMzsKKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgQkFEX1ZBTFVFICAgICAgICAgICAgPSAtNDsKKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgSU5WQUxJRF9PUEVSQVRJT04gICAgPSAtNTsKKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgTk9fTUVNT1JZICAgICAgICAgICAgPSAtNjsKKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgREVBRF9PQkpFQ1QgICAgICAgICAgPSAtNzsKKworCisgICAgIC8qKgorICAgICAgKiBUaGUgZWZmZWN0IGRlc2NyaXB0b3IgY29udGFpbnMgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGZhY2lsaXRhdGUKKyAgICAgICogZWZmZWN0cyBlbnVtZXJhdGlvbjoKKyAgICAgICogbVR5cGU6IFVVSUQgY29ycmVzcG9uZGluZyB0byB0aGUgT3BlblNMIEVTIGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSB0aGlzIGVmZmVjdAorICAgICAgKiBtVXVpZDogVVVJRCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uCisgICAgICAqIG1Db25uZWN0TW9kZToge0BsaW5rICNFRkZFQ1RfSU5TRVJUfSBvciB7QGxpbmsgI0VGRkVDVF9BVVhJTElBUll9CisgICAgICAqIG1OYW1lOiBodW1hbiByZWFkYWJsZSBlZmZlY3QgbmFtZQorICAgICAgKiBtSW1wbGVtZW50b3I6IGh1bWFuIHJlYWRhYmxlIGVmZmVjdCBpbXBsZW1lbnRvciBuYW1lCisgICAgICAqLworICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIERlc2NyaXB0b3IgeworCisgICAgICAgICBwdWJsaWMgRGVzY3JpcHRvcigpIHsKKyAgICAgICAgIH0KKyAgICAgICAgIHB1YmxpYyBEZXNjcmlwdG9yKFN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHV1aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29ubmVjdE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpbXBsZW1lbnRvcikgeworICAgICAgICAgICAgIG1UeXBlID0gVVVJRC5mcm9tU3RyaW5nKHR5cGUpOworICAgICAgICAgICAgIG1VdWlkID0gVVVJRC5mcm9tU3RyaW5nKHV1aWQpOworICAgICAgICAgICAgIG1Db25uZWN0TW9kZSA9IGNvbm5lY3RNb2RlOworICAgICAgICAgICAgIG1OYW1lID0gbmFtZTsKKyAgICAgICAgICAgICBtSW1wbGVtZW50b3IgPSBpbXBsZW1lbnRvcjsKKyAgICAgICAgIH0KKworICAgICAgICAgcHVibGljIFVVSUQgbVR5cGU7CisgICAgICAgICBwdWJsaWMgVVVJRCBtVXVpZDsKKyAgICAgICAgIHB1YmxpYyBTdHJpbmcgbUNvbm5lY3RNb2RlOworICAgICAgICAgcHVibGljIFN0cmluZyBtTmFtZTsKKyAgICAgICAgIHB1YmxpYyBTdHJpbmcgbUltcGxlbWVudG9yOworICAgICB9OworCisgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVGRkVDVF9JTlNFUlQgPSAiSW5zZXJ0IjsKKyAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUZGRUNUX0FVWElMSUFSWSA9ICJBdXhpbGlhcnkiOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIE1lbWJlciB2YXJpYWJsZXMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLyoqCisgICAgICogSW5kaWNhdGVzIHRoZSBzdGF0ZSBvZiB0aGUgQXVkaW9FZmZlY3QgaW5zdGFuY2UKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IG1TdGF0ZSA9IFNUQVRFX1VOSU5JVElBTElaRUQ7CisgICAgLyoqCisgICAgICogTG9jayB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gbVN0YXRlCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIE9iamVjdCBtU3RhdGVMb2NrID0gbmV3IE9iamVjdCgpOworICAgIC8qKgorICAgICAqIFN5c3RlbSB3aWRlIHVuaXF1ZSBlZmZlY3QgSUQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IG1JZDsKKworICAgIC8vIGFjY2Vzc2VkIGJ5IG5hdGl2ZSBtZXRob2RzCisgICAgcHJpdmF0ZSBpbnQgbU5hdGl2ZUF1ZGlvRWZmZWN0OworICAgIHByaXZhdGUgaW50IG1KbmlEYXRhOworCisgICAgLyoqCisgICAgICogRWZmZWN0IGRlc2NyaXB0b3IKKyAgICAgKi8KKyAgICBwcml2YXRlIERlc2NyaXB0b3IgbURlc2NyaXB0b3I7CisKKyAgICAvKioKKyAgICAgKiBMaXN0ZW5lciBmb3IgZWZmZWN0IGVuZ2luZSBzdGF0ZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucy4KKyAgICAgKiAgQHNlZSAjc2V0RW5hYmxlU3RhdHVzTGlzdGVuZXIoT25FbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lcikKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgT25FbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lciBtRW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXIgPSBudWxsOworICAgIC8qKgorICAgICAqIExpc3RlbmVyIGZvciBlZmZlY3QgZW5naW5lIGNvbnRyb2wgb3duZXJzaGlwIGNoYW5nZSBub3RpZmljYXRpb25zLgorICAgICAqICBAc2VlICNzZXRDb250cm9sU3RhdHVzTGlzdGVuZXIoT25Db250cm9sU3RhdHVzQ2hhbmdlTGlzdGVuZXIpCisgICAgICovCisgICAgcHJvdGVjdGVkIE9uQ29udHJvbFN0YXR1c0NoYW5nZUxpc3RlbmVyIG1Db250cm9sQ2hhbmdlU3RhdHVzTGlzdGVuZXIgPSBudWxsOworICAgIC8qKgorICAgICAqIExpc3RlbmVyIGZvciBlZmZlY3QgZW5naW5lIGNvbnRyb2wgb3duZXJzaGlwIGNoYW5nZSBub3RpZmljYXRpb25zLgorICAgICAqICBAc2VlICNzZXRQYXJhbWV0ZXJMaXN0ZW5lcihPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyKQorICAgICAqLworICAgIHByb3RlY3RlZCBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIG1QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciA9IG51bGw7CisgICAgLyoqCisgICAgICogTG9jayB0byBwcm90ZWN0IGxpc3RlbmVycyB1cGRhdGVzIGFnYWluc3QgZXZlbnQgbm90aWZpY2F0aW9ucworICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBPYmplY3QgbUxpc3RlbmVyTG9jayA9IG5ldyBPYmplY3QoKTsKKyAgICAvKioKKyAgICAgKiBIYW5kbGVyIGZvciBldmVudHMgY29taW5nIGZyb20gdGhlIG5hdGl2ZSBjb2RlCisgICAgICovCisgICAgcHJvdGVjdGVkIE5hdGl2ZUV2ZW50SGFuZGxlciBtTmF0aXZlRXZlbnRIYW5kbGVyID0gbnVsbDsKKworCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RydWN0b3IsIEZpbmFsaXplCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8qKgorICAgICAqIENsYXNzIGNvbnN0cnVjdG9yLgorICAgICAqIEBwYXJhbSB0eXBlOiAgdHlwZSBvZiBlZmZlY3QgZW5naW5lIGNyZWF0ZWQuIFNlZQorICAgICAqICAge0BsaW5rICNFRkZFQ1RfVFlQRV9FTlZfUkVWRVJCfSwge0BsaW5rICNFRkZFQ1RfVFlQRV9FUVVBTElaRVJ9IC4uLgorICAgICAqICAgVHlwZXMgY29ycmVzcG9uZGluZyB0byBidWlsdC1pbiBlZmZlY3RzIGFyZSBkZWZpbmVkIGJ5IEF1ZGlvRWZmZWN0IGNsYXNzLgorICAgICAqICAgT3RoZXIgdHlwZXMgY2FuIGJlIHNwZWNpZmllZCBwcm92aWRlZCB0aGV5IGNvcnJlc3BvbmQgYW4gZXhpc3RpbmcgT3BlblNMIEVTCisgICAgICogICBpbnRlcmZhY2UgSUQgYW5kIHRoZSBjb3JyZXNwb25zaW5nIGVmZmVjdCBpcyBhdmFpbGFibGUgb24gdGhlIHBsYXRmb3JtLgorICAgICAqICAgSWYgYW4gdW5zcGVjaWZpZWQgZWZmZWN0IHR5cGUgaXMgcmVxdWVzdGVkLCB0aGUgY29uc3RydWN0b3Igd2l0aCB0aHJvdyB0aGUKKyAgICAgKiAgIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbi4KKyAgICAgKiBAcGFyYW0gdXVpZDogIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGEgcGFydGljdWxhciBlZmZlY3QgaW1wbGVtZW50YXRpb24uIE11c3QgYmUKKyAgICAgKiAgc3BlY2lmaWVkIGlmIHRoZSBjYWxsZXIgd2FudHMgdG8gdXNlIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiBhbiBlZmZlY3QgdHlwZS4KKyAgICAgKiAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxsIGluIHdoaWNoIGNhc2Ugb25seSB0aGUgdHlwZSB3aWxsIGJlIHVzZWQgdG8gc2VsZWN0CisgICAgICogIHRoZSBlZmZlY3QuCisgICAgICogQHBhcmFtIHByaW9yaXR5OiAgdGhlIHByaW9yaXR5IGxldmVsIHJlcXVlc3RlZCBieSB0aGUgYXBwbGljYXRpb24gZm9yIGNvbnRyb2xsaW5nCisgICAgICogIHRoZSBlZmZlY3QgZW5naW5lLiBBcyB0aGUgc2FtZSBlZmZlY3QgZW5naW5lIGNhbiBiZSBzaGFyZWQgYnkgc2V2ZXJhbCBhcHBsaWNhdGlvbnMsCisgICAgICogIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyBob3cgbXVjaCB0aGUgcmVxdWVzdGluZyBhcHBsaWNhdGlvbiBuZWVkcyBjb250cm9sIG9mCisgICAgICogIGVmZmVjdCBwYXJhbWV0ZXJzLiBUaGUgbm9ybWFsIHByaW9yaXR5IGlzIDAsIGFib3ZlIG5vcm1hbCBpcyBhIHBvc2l0aXZlIG51bWJlciwKKyAgICAgKiAgYmVsb3cgbm9ybWFsIGEgbmVnYXRpdmUgbnVtYmVyLgorICAgICAqIEBwYXJhbSBhdWRpb1Nlc3Npb246ICBTeXN0ZW0gd2lkZSB1bmlxdWUgYXVkaW8gc2Vzc2lvbiBpZGVudGlmaWVyLiBJZiBhdWRpb1Nlc3Npb24KKyAgICAgKiAgaXMgbm90IDAsIHRoZSBlZmZlY3Qgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgTWVkaWFQbGF5ZXIgb3IgQXVkaW9UcmFjayBpbiB0aGUKKyAgICAgKiAgc2FtZSBhdWRpbyBzZXNzaW9uLiBPdGhlcndpc2UsIHRoZSBlZmZlY3Qgd2lsbCBhcHBseSB0byB0aGUgb3V0cHV0IG1peC4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbgorICAgICAqLworCisgICAgcHVibGljIEF1ZGlvRWZmZWN0KFVVSUQgdHlwZSwgVVVJRCB1dWlkLCBpbnQgcHJpb3JpdHksIGludCBhdWRpb1Nlc3Npb24pCisgICAgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24sIFJ1bnRpbWVFeGNlcHRpb24geworICAgICAgICBpbnRbXSBpZCA9IG5ldyBpbnRbMV07CisgICAgICAgIERlc2NyaXB0b3JbXSBkZXNjID0gbmV3IERlc2NyaXB0b3JbMV07CisgICAgICAgIC8vIG5hdGl2ZSBpbml0aWFsaXphdGlvbgorICAgICAgICBpbnQgaW5pdFJlc3VsdCA9IG5hdGl2ZV9zZXR1cChuZXcgV2Vha1JlZmVyZW5jZTxBdWRpb0VmZmVjdD4odGhpcyksCisgICAgICAgICAgICAgICAgdHlwZS50b1N0cmluZygpLCB1dWlkLnRvU3RyaW5nKCksIHByaW9yaXR5LCBhdWRpb1Nlc3Npb24sIGlkLCBkZXNjKTsKKyAgICAgICAgaWYgKGluaXRSZXN1bHQgIT0gU1VDQ0VTUyAmJiBpbml0UmVzdWx0ICE9IEFMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJFcnJvciBjb2RlICIraW5pdFJlc3VsdCsiIHdoZW4gaW5pdGlhbGl6aW5nIEF1ZGlvRWZmZWN0LiIpOworICAgICAgICAgICAgc3dpdGNoIChpbml0UmVzdWx0KSB7CisgICAgICAgICAgICBjYXNlIEJBRF9WQUxVRToKKyAgICAgICAgICAgICAgICB0aHJvdyAobmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRWZmZWN0IHR5cGU6ICIrdHlwZSsgIiBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgICAgIGNhc2UgSU5WQUxJRF9PUEVSQVRJT046CisgICAgICAgICAgICAgICAgdGhyb3cgKG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiRWZmZWN0IGxpYnJhcnkgbm90IGxvYWRlZCIpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgKG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW5ub3QgaW5pdGlhbGl6ZSBlZmZlY3QgZW5naW5lIGZvciB0eXBlOiAiK3R5cGUrCisgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3I6ICIrIGluaXRSZXN1bHQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtSWQgPSBpZFswXTsKKyAgICAgICAgbURlc2NyaXB0b3IgPSBkZXNjWzBdOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdGF0ZUxvY2spIHsKKyAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX0lOSVRJQUxJWkVEOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVsZWFzZXMgdGhlIG5hdGl2ZSBBdWRpb0VmZmVjdCByZXNvdXJjZXMuIEl0IGlzIGEgZ29vZCBwcmFjdGljZSB0byByZWxlYXNlIHRoZQorICAgICAqIGVmZmVjdCBlbmdpbmUgd2hlbiBub3QgaW4gdXNlIGFzIGNvbnRyb2wgY2FuIGJlIHJldHVybmVkIHRvIG90aGVyIGFwcGxpY2F0aW9ucworICAgICAqIG9yIHRoZSBuYXRpdmUgcmVzb3VyY2VzIHJlbGVhc2VkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbGVhc2UoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRlTG9jaykgeworICAgICAgICAgICAgbmF0aXZlX3JlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX1VOSU5JVElBTElaRUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHsKKyAgICAgICAgbmF0aXZlX2ZpbmFsaXplKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBlZmZlY3QgZGVzY3JpcHRvci4KKyAgICAgKiB7QHNlZSAjRGVzY3JpcHRvcn0uCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgRGVzY3JpcHRvciBnZXREZXNjcmlwdG9yKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgiZ2V0RGVzY3JpcHRvcigpIik7CisgICAgICAgIHJldHVybiBtRGVzY3JpcHRvcjsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gRWZmZWN0cyBFbnVtZXJhdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFF1ZXJ5IGFsbCBlZmZlY3RzIGF2YWlsYWJsZSBvbiB0aGUgcGxhdGZvcm0uIFJldHVybnMgYW4gYXJyYXkgb2YKKyAgICAgKiB7QGxpbmsgI0Rlc2NyaXB0b3J9IG9iamVjdHMKKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICovCisKKyAgICBzdGF0aWMgcHVibGljIERlc2NyaXB0b3JbXSBxdWVyeUVmZmVjdHMoKSB7CisgICAgICAgIHJldHVybiAoRGVzY3JpcHRvcltdKW5hdGl2ZV9xdWVyeV9lZmZlY3RzKCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENvbnRyb2wgbWV0aG9kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIEVuYWJsZSBlZmZlY3QgZW5naW5lLgorICAgICAqIEByZXR1cm4ge0BsaW5rICNOT19FUlJPUn0gaW4gY2FzZSBvZiBzdWNjZXNzLAorICAgICAqIHtAbGluayAjSU5WQUxJRF9PUEVSQVRJT059IG9yIHtAbGluayAjREVBRF9PQkpFQ1R9IGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZW5hYmxlKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgiZW5hYmxlKCkiKTsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZV9lbmFibGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXNhYmxlIGVmZmVjdCBlbmdpbmUuCisgICAgICogQHJldHVybiBOT19FUlJPUiBpbiBjYXNlIG9mIHN1Y2Nlc3MsCisgICAgICogSU5WQUxJRF9PUEVSQVRJT04gb3IgREVBRF9PQkpFQ1QgaW4gY2FzZSBvZiBmYWlsdXJlLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGludCBkaXNhYmxlKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgiZGlzYWJsZSgpIik7CisgICAgICAgIHJldHVybiBuYXRpdmVfZGlzYWJsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBlZmZlY3QgcGFyYW1ldGVyLiBUaGUgc2V0UGFyYW1ldGVyIG1ldGhvZCBpcyBwcm92aWRlZCBpbiBzZXZlcmFsCisgICAgICogZm9ybXMgYWRkcmVzc2luZyBtb3N0IGNvbW1vbiBwYXJhbWV0ZXIgZm9ybWF0cy4gVGhpcyBmb3JtIGlzIHRoZQorICAgICAqIG1vc3QgZ2VuZXJpYyBvbmUgd2hlcmUgdGhlIHBhcmFtZXRlciBhbmQgaXRzIHZhbHVlIGFyZSBib3RoIHNwZWNpZmllZAorICAgICAqIGFzIGFuIGFycmF5IG9mIGJ5dGVzLiBUaGUgcGFyYW1ldGVyIGFuZCB2YWx1ZSB0eXBlIGFuZCBsZW5ndGggYXJlIHRoZXJlZm9yZQorICAgICAqIHRvdGFsbHkgZnJlZS4gRm9yIHN0YW5kYXJkIGVmZmVjdCBkZWZpbmVkIGJ5IE9wZW5TTCBFUywgdGhlIHBhcmFtZXRlciBmb3JtYXQKKyAgICAgKiBhbmQgdmFsdWVzIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRpb25zIGluIHRoZSBjb3JyZXNwb25kaW5nIE9wZW5TTCBFUyBpbnRlcmZhY2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyYW06ICB0aGUgaWRlbnRpZmllciBvZiB0aGUgcGFyYW1ldGVyIHRvIHNldAorICAgICAqIEBwYXJhbSB2YWx1ZTogIHRoZSBuZXcgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyCisgICAgICogQHJldHVybiBOT19FUlJPUiBpbiBjYXNlIG9mIHN1Y2Nlc3MsCisgICAgICoge0BsaW5rICNCQURfVkFMVUV9LCB7QGxpbmsgI05PX01FTU9SWX0sIHtAbGluayAjSU5WQUxJRF9PUEVSQVRJT059IG9yIHtAbGluayBERUFEX09CSkVDVH0gaW4gY2FzZSBvZiBmYWlsdXJlCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihieXRlW10gcGFyYW0sIGJ5dGVbXSB2YWx1ZSkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgic2V0UGFyYW1ldGVyKCkiKTsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZV9zZXRQYXJhbWV0ZXIocGFyYW0ubGVuZ3RoLCBwYXJhbSwgdmFsdWUubGVuZ3RoLCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IGVmZmVjdCBwYXJhbWV0ZXIuIFRoZSBwYXJhbWV0ZXIgYW5kIGl0cyB2YWx1ZSBhcmUgaW50ZWdlcnMuCisgICAgICogIEBzZWUgI3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihpbnQgcGFyYW0sIGludCB2YWx1ZSkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHAgPSBpbnRUb0J5dGVBcnJheShwYXJhbSk7CisgICAgICAgIGJ5dGVbXSB2ID0gaW50VG9CeXRlQXJyYXkodmFsdWUpOworICAgICAgICByZXR1cm4gc2V0UGFyYW1ldGVyKHAsIHYpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBlZmZlY3QgcGFyYW1ldGVyLiBUaGUgcGFyYW1ldGVyIGlzIGFuIGludGVnZXIgYW5kIHRoZSB2YWx1ZSBpcyBhIHNob3J0IGludGVnZXIuCisgICAgICogIEBzZWUgI3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihpbnQgcGFyYW0sIHNob3J0IHZhbHVlKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBieXRlW10gcCA9IGludFRvQnl0ZUFycmF5KHBhcmFtKTsKKyAgICAgICAgYnl0ZVtdIHYgPSBzaG9ydFRvQnl0ZUFycmF5KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHNldFBhcmFtZXRlcihwLCB2KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBpbnRlZ2VyIGFuZCB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgYnl0ZXMuCisgICAgICogIEBzZWUgI3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihpbnQgcGFyYW0sIGJ5dGVbXSB2YWx1ZSkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHAgPSBpbnRUb0J5dGVBcnJheShwYXJhbSk7CisgICAgICAgIHJldHVybiBzZXRQYXJhbWV0ZXIocCwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBlZmZlY3QgcGFyYW1ldGVyLiBUaGUgcGFyYW1ldGVyIGlzIGFuIGFycmF5IG9mIDEgb3IgMiBpbnRlZ2VycyBhbmQgdGhlIHZhbHVlCisgICAgICogIGlzIGFsc28gYW4gYXJyYXkgb2YgMSBvciAyIGludGVnZXJzCisgICAgICogIEBzZWUgI3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihpbnRbXSBwYXJhbSwgaW50W10gdmFsdWUpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPiAyIHx8IHZhbHVlLmxlbmd0aCA+IDIpIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHAgPSBpbnRUb0J5dGVBcnJheShwYXJhbVswXSk7CisgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICBieXRlW10gcDIgPSBpbnRUb0J5dGVBcnJheShwYXJhbVsxXSk7CisgICAgICAgICAgICBwID0gY29uY2F0QXJyYXlzKHAsIHAyKTsKKyAgICAgICAgfQorICAgICAgICBieXRlW10gdiA9IGludFRvQnl0ZUFycmF5KHZhbHVlWzBdKTsKKyAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgIGJ5dGVbXSB2MiA9IGludFRvQnl0ZUFycmF5KHZhbHVlWzFdKTsKKyAgICAgICAgICAgIHYgPSBjb25jYXRBcnJheXModiwgdjIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZXRQYXJhbWV0ZXIocCwgdik7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IGVmZmVjdCBwYXJhbWV0ZXIuIFRoZSBwYXJhbWV0ZXIgaXMgYW4gYXJyYXkgb2YgMSBvciAyIGludGVnZXJzIGFuZCB0aGUgdmFsdWUKKyAgICAgKiAgaXMgYW4gYXJyYXkgb2YgMSBvciAyIHNob3J0IGludGVnZXJzCisgICAgICogIEBzZWUgI3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihpbnRbXSBwYXJhbSwgc2hvcnRbXSB2YWx1ZSkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA+IDIgfHwgdmFsdWUubGVuZ3RoID4gMikgeworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBieXRlW10gcCA9IGludFRvQnl0ZUFycmF5KHBhcmFtWzBdKTsKKyAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgIGJ5dGVbXSBwMiA9IGludFRvQnl0ZUFycmF5KHBhcmFtWzFdKTsKKyAgICAgICAgICAgIHAgPSBjb25jYXRBcnJheXMocCwgcDIpOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZVtdIHYgPSBzaG9ydFRvQnl0ZUFycmF5KHZhbHVlWzBdKTsKKyAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgIGJ5dGVbXSB2MiA9IHNob3J0VG9CeXRlQXJyYXkodmFsdWVbMV0pOworICAgICAgICAgICAgdiA9IGNvbmNhdEFycmF5cyh2LCB2Mik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNldFBhcmFtZXRlcihwLCB2KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiAxIG9yIDIgaW50ZWdlcnMgYW5kIHRoZSB2YWx1ZQorICAgICAqICBpcyBhbiBhcnJheSBvZiBieXRlcworICAgICAqICBAc2VlICNzZXRQYXJhbWV0ZXIoYnl0ZVtdLCBieXRlW10pCisgICAgICovCisgICAgcHVibGljIGludCBzZXRQYXJhbWV0ZXIoaW50W10gcGFyYW0sIGJ5dGVbXSB2YWx1ZSkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA+IDIpIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHAgPSBpbnRUb0J5dGVBcnJheShwYXJhbVswXSk7CisgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICBieXRlW10gcDIgPSBpbnRUb0J5dGVBcnJheShwYXJhbVsxXSk7CisgICAgICAgICAgICBwID0gY29uY2F0QXJyYXlzKHAsIHAyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2V0UGFyYW1ldGVyKHAsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIGdldFBhcmFtZXRlciBtZXRob2QgaXMgcHJvdmlkZWQgaW4gc2V2ZXJhbAorICAgICAqIGZvcm1zIGFkZHJlc3NpbmcgbW9zdCBjb21tb24gcGFyYW1ldGVyIGZvcm1hdHMuIFRoaXMgZm9ybSBpcyB0aGUKKyAgICAgKiBtb3N0IGdlbmVyaWMgb25lIHdoZXJlIHRoZSBwYXJhbWV0ZXIgYW5kIGl0cyB2YWx1ZSBhcmUgYm90aCBzcGVjaWZpZWQKKyAgICAgKiBhcyBhbiBhcnJheSBvZiBieXRlcy4gVGhlIHBhcmFtZXRlciBhbmQgdmFsdWUgdHlwZSBhbmQgbGVuZ3RoIGFyZSB0aGVyZWZvcmUKKyAgICAgKiB0b3RhbGx5IGZyZWUuCisgICAgICogQHBhcmFtIHBhcmFtOiAgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHBhcmFtZXRlciB0byBzZXQKKyAgICAgKiBAcGFyYW0gdmFsdWU6ICB0aGUgbmV3IHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcgorICAgICAqIEByZXR1cm4gTk9fRVJST1IgaW4gY2FzZSBvZiBzdWNjZXNzLAorICAgICAqIHtAbGluayAjQkFEX1ZBTFVFfSwge0BsaW5rICNOT19NRU1PUll9LCB7QGxpbmsgI0lOVkFMSURfT1BFUkFUSU9OfSBvciB7QGxpbmsgREVBRF9PQkpFQ1R9IGluIGNhc2Ugb2YgZmFpbHVyZQorICAgICAqIFdoZW4gY2FsbGVkLCB2YWx1ZS5sZW5ndGggaW5kaWNhdGVzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHJldHVybmVkIHBhcmFtZXRlcnMgdmFsdWUuCisgICAgICogV2hlbiByZXR1cm5pbmcsIHZhbHVlLmxlbmd0aCBpcyB1cGRhdGVkIHdpdGggdGhlIGFjdHVhbCBzaXplIG9mIHRoZSByZXR1cm5lZCB2YWx1ZS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFyYW1ldGVyKGJ5dGVbXSBwYXJhbSwgYnl0ZVtdIHZhbHVlKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBjaGVja1N0YXRlKCJnZXRQYXJhbWV0ZXIoKSIpOworICAgICAgICBpbnRbXSB2U2l6ZSA9IG5ldyBpbnRbMV07CisgICAgICAgIHZTaXplWzBdID0gdmFsdWUubGVuZ3RoOworICAgICAgICBpbnQgc3RhdHVzID0gbmF0aXZlX2dldFBhcmFtZXRlcihwYXJhbS5sZW5ndGgsIHBhcmFtLCB2U2l6ZSwgdmFsdWUpOworICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gdlNpemVbMF0pIHsKKyAgICAgICAgICAgIGJ5dGVbXSByZXNpemVkVmFsdWUgPSBuZXcgYnl0ZVt2U2l6ZVswXV07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHZhbHVlLCAwLCByZXNpemVkVmFsdWUsIDAsIHZTaXplWzBdKTsKKyAgICAgICAgICAgIHZhbHVlID0gcmVzaXplZFZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IGVmZmVjdCBwYXJhbWV0ZXIuIFRoZSBwYXJhbWV0ZXIgaXMgYW4gaW50ZWdlciBhbmQgdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIGJ5dGVzLgorICAgICAqICBAc2VlICNnZXRQYXJhbWV0ZXIoYnl0ZVtdLCBieXRlW10pCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQYXJhbWV0ZXIoaW50IHBhcmFtLCBieXRlW10gdmFsdWUpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW0pOworCisgICAgICAgIHJldHVybiBnZXRQYXJhbWV0ZXIocCwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCBlZmZlY3QgcGFyYW1ldGVyLiBUaGUgcGFyYW1ldGVyIGlzIGFuIGludGVnZXIgYW5kIHRoZSB2YWx1ZQorICAgICAqICBpcyBhbiBhcnJheSBvZiAxIG9yIDIgaW50ZWdlcnMKKyAgICAgKiAgQHNlZSAjZ2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFyYW1ldGVyKGludCBwYXJhbSwgaW50W10gdmFsdWUpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW0pOworCisgICAgICAgIGJ5dGVbXSB2ID0gbmV3IGJ5dGVbdmFsdWUubGVuZ3RoICogNF07CisKKyAgICAgICAgaW50IHN0YXR1cyA9IGdldFBhcmFtZXRlcihwLCB2KTsKKworICAgICAgICB2YWx1ZVswXSA9IGJ5dGVBcnJheVRvSW50KHYpOworICAgICAgICBpZiAodi5sZW5ndGggPiA0KSB7CisgICAgICAgICAgICB2YWx1ZVsxXSA9IGJ5dGVBcnJheVRvSW50KHYsIDQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IGVmZmVjdCBwYXJhbWV0ZXIuIFRoZSBwYXJhbWV0ZXIgaXMgYW4gaW50ZWdlciBhbmQgdGhlIHZhbHVlCisgICAgICogIGlzIGFuIGFycmF5IG9mIDEgb3IgMiBzaG9ydCBpbnRlZ2VycworICAgICAqICBAc2VlICNnZXRQYXJhbWV0ZXIoYnl0ZVtdLCBieXRlW10pCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQYXJhbWV0ZXIoaW50IHBhcmFtLCBzaG9ydFtdIHZhbHVlKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMikgeworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBieXRlW10gcCA9IGludFRvQnl0ZUFycmF5KHBhcmFtKTsKKworICAgICAgICBieXRlW10gdiA9IG5ldyBieXRlW3ZhbHVlLmxlbmd0aCAqIDJdOworCisgICAgICAgIGludCBzdGF0dXMgPSBnZXRQYXJhbWV0ZXIocCwgdik7CisKKyAgICAgICAgdmFsdWVbMF0gPSBieXRlQXJyYXlUb1Nob3J0KHYpOworICAgICAgICBpZiAodi5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICB2YWx1ZVsxXSA9IGJ5dGVBcnJheVRvU2hvcnQodiwgMik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiAxIG9yIDIgaW50ZWdlcnMgYW5kIHRoZSB2YWx1ZQorICAgICAqICBpcyBhbHNvIGFuIGFycmF5IG9mIDEgb3IgMiBpbnRlZ2VycworICAgICAqICBAc2VlICNnZXRQYXJhbWV0ZXIoYnl0ZVtdLCBieXRlW10pCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQYXJhbWV0ZXIoaW50W10gcGFyYW0sIGludFtdIHZhbHVlKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMiB8fCB2YWx1ZS5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMF0pOworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgYnl0ZVtdIHAyID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMV0pOworICAgICAgICAgICAgcCA9IGNvbmNhdEFycmF5cyhwLCBwMik7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHYgPSBuZXcgYnl0ZVt2YWx1ZS5sZW5ndGggKiA0XTsKKworICAgICAgICBpbnQgc3RhdHVzID0gZ2V0UGFyYW1ldGVyKHAsIHYpOworCisgICAgICAgIHZhbHVlWzBdID0gYnl0ZUFycmF5VG9JbnQodik7CisgICAgICAgIGlmICh2Lmxlbmd0aCA+IDQpIHsKKyAgICAgICAgICAgIHZhbHVlWzFdID0gYnl0ZUFycmF5VG9JbnQodiwgNCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiAxIG9yIDIgaW50ZWdlcnMgYW5kIHRoZSB2YWx1ZQorICAgICAqICBpcyBhbiBhcnJheSBvZiAxIG9yIDIgc2hvcnQgaW50ZWdlcnMKKyAgICAgKiAgQHNlZSAjZ2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFyYW1ldGVyKGludFtdIHBhcmFtLCBzaG9ydFtdIHZhbHVlKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMiB8fCB2YWx1ZS5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMF0pOworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgYnl0ZVtdIHAyID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMV0pOworICAgICAgICAgICAgcCA9IGNvbmNhdEFycmF5cyhwLCBwMik7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHYgPSBuZXcgYnl0ZVt2YWx1ZS5sZW5ndGggKiAyXTsKKworICAgICAgICBpbnQgc3RhdHVzID0gZ2V0UGFyYW1ldGVyKHAsIHYpOworCisgICAgICAgIHZhbHVlWzBdID0gYnl0ZUFycmF5VG9TaG9ydCh2KTsKKyAgICAgICAgaWYgKHYubGVuZ3RoID4gMikgeworICAgICAgICAgICAgdmFsdWVbMV0gPSBieXRlQXJyYXlUb1Nob3J0KHYsIDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IGVmZmVjdCBwYXJhbWV0ZXIuIFRoZSBwYXJhbWV0ZXIgaXMgYW4gYXJyYXkgb2YgMSBvciAyIGludGVnZXJzIGFuZCB0aGUgdmFsdWUKKyAgICAgKiAgaXMgYW4gYXJyYXkgb2YgYnl0ZXMKKyAgICAgKiAgQHNlZSAjZ2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFyYW1ldGVyKGludFtdIHBhcmFtLCBieXRlW10gdmFsdWUpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMF0pOworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgYnl0ZVtdIHAyID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMV0pOworICAgICAgICAgICAgcCA9IGNvbmNhdEFycmF5cyhwLCBwMik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZ2V0UGFyYW1ldGVyKHAsIHZhbHVlKTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFNlbmQgYSBjb21tYW5kIHRvIHRoZSBlZmZlY3QgZW5naW5lLiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBzZW5kIHByb3ByaWV0YXJ5CisgICAgICogY29tbWFuZHMgdG8gYSBwYXJ0aWN1bGFyIGVmZmVjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgKgorICAgICAqLworICAgIHB1YmxpYyBpbnQgY29tbWFuZChpbnQgY21kQ29kZSwgYnl0ZVtdIGNvbW1hbmQsIGJ5dGVbXSByZXBseSkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgiY29tbWFuZCgpIik7CisgICAgICAgIGludFtdIHJlcGx5U2l6ZSA9IG5ldyBpbnRbMV07CisgICAgICAgIHJlcGx5U2l6ZVswXSA9IHJlcGx5Lmxlbmd0aDsKKworICAgICAgICBpbnQgc3RhdHVzID0gbmF0aXZlX2NvbW1hbmQoY21kQ29kZSwgY29tbWFuZC5sZW5ndGgsIGNvbW1hbmQsIHJlcGx5U2l6ZSwgcmVwbHkpOworCisgICAgICAgIGlmIChyZXBseS5sZW5ndGggPiByZXBseVNpemVbMF0pIHsKKyAgICAgICAgICAgIGJ5dGVbXSByZXNpemVkUmVwbHkgPSBuZXcgYnl0ZVtyZXBseVNpemVbMF1dOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShyZXBseSwgMCwgcmVzaXplZFJlcGx5LCAwLCByZXBseVNpemVbMF0pOworICAgICAgICAgICAgcmVwbHkgPSByZXNpemVkUmVwbHk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gR2V0dGVycworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgZWZmZWN0IHVuaXF1ZSBpZGVudGlmaWVyLiBUaGlzIHN5c3RlbSB3aWRlIHVuaXF1ZSBpZGVudGlmaWVyCisgICAgICogY2FuIGJlIHVzZWQgdG8gYXR0YWNoIHRoaXMgZWZmZWN0IHRvIGEgTWVkaWFQbGF5ZXIgb3IgYW4gQXVkaW9UcmFjaworICAgICAqIHdoZW4gdGhlIGVmZmVjdCBpcyBhbiBhdXhpbGlhcnkgZWZmZWN0IChSZXZlcmIpCisgICAgICogQHJldHVybiB0aGUgZWZmZWN0IGlkZW50aWZpZXIuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldElkKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgiZ2V0SWQoKSIpOworICAgICAgICByZXR1cm4gbUlkOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgZWZmZWN0IGVuZ2luZSBlbmFibGUgc3RhdGUKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGVmZmVjdCBpcyBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRFbmFibGUoKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBjaGVja1N0YXRlKCJnZXRFbmFibGUoKSIpOworICAgICAgICByZXR1cm4gbmF0aXZlX2dldEVuYWJsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrcyBpZiB0aGlzIEF1ZGlvRWZmZWN0IG9iamVjdCBpcyBjb250cm9sbGluZyB0aGUgZWZmZWN0IGVuZ2luZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBpbnN0YW5jZSBoYXMgY29udHJvbCBvZiBlZmZlY3QgZW5naW5lLCBmYWxzZSBvdGhlcndpc2UuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNDb250cm9sKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgiaGFzQ29udHJvbCgpIik7CisgICAgICAgIHJldHVybiBuYXRpdmVfaGFzQ29udHJvbCgpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJbml0aWFsaXphdGlvbiAvIGNvbmZpZ3VyYXRpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbGlzdGVuZXIgQXVkaW9FZmZlY3Qgbm90aWZpZXMgd2hlbiB0aGUgZWZmZWN0IGVuZ2luZSBpcyBlbmFibGVkCisgICAgICogb3IgZGlzYWJsZWQuCisgICAgICogQHBhcmFtIGxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RW5hYmxlU3RhdHVzTGlzdGVuZXIoT25FbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1MaXN0ZW5lckxvY2spIHsKKyAgICAgICAgICAgIG1FbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICB9CisgICAgICAgIGlmICgobGlzdGVuZXIgIT0gbnVsbCkgJiYgKG1OYXRpdmVFdmVudEhhbmRsZXIgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgIGNyZWF0ZU5hdGl2ZUV2ZW50SGFuZGxlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbGlzdGVuZXIgQXVkaW9FZmZlY3Qgbm90aWZpZXMgd2hlbiB0aGUgZWZmZWN0IGVuZ2luZSBjb250cm9sCisgICAgICogaXMgdGFrZW4gb3IgcmV0dXJuZWQuCisgICAgICogQHBhcmFtIGxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q29udHJvbFN0YXR1c0xpc3RlbmVyKE9uQ29udHJvbFN0YXR1c0NoYW5nZUxpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3RlbmVyTG9jaykgeworICAgICAgICAgICAgbUNvbnRyb2xDaGFuZ2VTdGF0dXNMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICB9CisgICAgICAgIGlmICgobGlzdGVuZXIgIT0gbnVsbCkgJiYgKG1OYXRpdmVFdmVudEhhbmRsZXIgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgIGNyZWF0ZU5hdGl2ZUV2ZW50SGFuZGxlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbGlzdGVuZXIgQXVkaW9FZmZlY3Qgbm90aWZpZXMgd2hlbiBhIHBhcmFtZXRlciBpcyBjaGFuZ2VkLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhcmFtZXRlckxpc3RlbmVyKE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICBtUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGxpc3RlbmVyICE9IG51bGwpICYmIChtTmF0aXZlRXZlbnRIYW5kbGVyID09IG51bGwpKSB7CisgICAgICAgICAgICBjcmVhdGVOYXRpdmVFdmVudEhhbmRsZXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBuYXRpdmUgZXZlbnQgaGFuZGxlcgorICAgIC8vIEl0IGlzIGNhbGxlZCBvbmx5IHdoZW4gYSBub24tbnVsbCBldmVudCBsaXN0ZW5lciBpcyBzZXQuCisgICAgLy8gcHJlY29uZGl0aW9uOgorICAgIC8vICAgIG1OYXRpdmVFdmVudEhhbmRsZXIgaXMgbnVsbAorICAgIHByaXZhdGUgdm9pZCBjcmVhdGVOYXRpdmVFdmVudEhhbmRsZXIoKSB7CisgICAgICAgIExvb3BlciBsb29wZXI7CisgICAgICAgIGlmICgobG9vcGVyID0gTG9vcGVyLm15TG9vcGVyKCkpICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1OYXRpdmVFdmVudEhhbmRsZXIgPSBuZXcgTmF0aXZlRXZlbnRIYW5kbGVyKHRoaXMsIGxvb3Blcik7CisgICAgICAgIH0gZWxzZSBpZiAoKGxvb3BlciA9IExvb3Blci5nZXRNYWluTG9vcGVyKCkpICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1OYXRpdmVFdmVudEhhbmRsZXIgPSBuZXcgTmF0aXZlRXZlbnRIYW5kbGVyKHRoaXMsIGxvb3Blcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtTmF0aXZlRXZlbnRIYW5kbGVyID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW50ZXJmYWNlIGRlZmluaXRpb25zCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8qKgorICAgICAqIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiB0aGUKKyAgICAgKiBlZmZlY3QgZW5naW5lIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICovCisgICAgcHVibGljIGludGVyZmFjZSBPbkVuYWJsZVN0YXR1c0NoYW5nZUxpc3RlbmVyICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBDYWxsZWQgb24gdGhlIGxpc3RlbmVyIHRvIG5vdGlmeSBpdCB0aGF0IHRoZSBlZmZlY3QgZW5naW5lCisgICAgICAgICAqIGhhcyBiZWVuIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgICAqLworICAgICAgICB2b2lkIG9uRW5hYmxlU3RhdHVzQ2hhbmdlKEF1ZGlvRWZmZWN0IGVmZmVjdCwgYm9vbGVhbiBlbmFibGVkKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gdGhlCisgICAgICogZWZmZWN0IGVuZ2luZSBjb250cm9sIGlzIHRha2VuIG9yIHJldHVybmVkLgorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgT25Db250cm9sU3RhdHVzQ2hhbmdlTGlzdGVuZXIgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIENhbGxlZCBvbiB0aGUgbGlzdGVuZXIgdG8gbm90aWZ5IGl0IHRoYXQgdGhlIGVmZmVjdCBlbmdpbmUKKyAgICAgICAgICogY29udHJvbCBoYXMgYmVlbiB0YWtlbiBvciByZXR1cm5lZC4KKyAgICAgICAgICovCisgICAgICAgIHZvaWQgb25Db250cm9sU3RhdHVzQ2hhbmdlKEF1ZGlvRWZmZWN0IGVmZmVjdCwgYm9vbGVhbiBjb250cm9sR3JhbnRlZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIGEKKyAgICAgKiBwYXJhbWV0ZXIgdmFsdWUgaGFzIGNoYW5nZWQuCisgICAgICovCisgICAgcHVibGljIGludGVyZmFjZSBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBDYWxsZWQgb24gdGhlIGxpc3RlbmVyIHRvIG5vdGlmeSBpdCB0aGF0IGEgcGFyYW1ldGVyIHZhbHVlIGhhcyBjaGFuZ2VkLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCBvblBhcmFtZXRlckNoYW5nZShBdWRpb0VmZmVjdCBlZmZlY3QsIGludCBzdGF0dXMsIGJ5dGVbXSBwYXJhbSwgYnl0ZVtdIHZhbHVlKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIElubmVyIGNsYXNzZXMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLyoqCisgICAgICogSGVscGVyIGNsYXNzIHRvIGhhbmRsZSB0aGUgZm9yd2FyZGluZyBvZiBuYXRpdmUgZXZlbnRzIHRvIHRoZSBhcHByb3ByaWF0ZSBsaXN0ZW5lcnMKKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIE5hdGl2ZUV2ZW50SGFuZGxlciBleHRlbmRzIEhhbmRsZXIKKyAgICB7CisgICAgICAgIHByaXZhdGUgQXVkaW9FZmZlY3QgbUF1ZGlvRWZmZWN0OworCisgICAgICAgIHB1YmxpYyBOYXRpdmVFdmVudEhhbmRsZXIoQXVkaW9FZmZlY3QgYWUsIExvb3BlciBsb29wZXIpIHsKKyAgICAgICAgICAgIHN1cGVyKGxvb3Blcik7CisgICAgICAgICAgICBtQXVkaW9FZmZlY3QgPSBhZTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CisgICAgICAgICAgICBpZiAobUF1ZGlvRWZmZWN0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzd2l0Y2gobXNnLndoYXQpIHsKKyAgICAgICAgICAgIGNhc2UgTkFUSVZFX0VWRU5UX0VOQUJMRURfU1RBVFVTOgorICAgICAgICAgICAgICAgIE9uRW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXIgZW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXIgPSBudWxsOworICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3RlbmVyTG9jaykgeworICAgICAgICAgICAgICAgICAgICBlbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lciA9IG1BdWRpb0VmZmVjdC5tRW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChlbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGVuYWJsZVN0YXR1c0NoYW5nZUxpc3RlbmVyLm9uRW5hYmxlU3RhdHVzQ2hhbmdlKG1BdWRpb0VmZmVjdCwgKGJvb2xlYW4pKG1zZy5hcmcxICE9IDApKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5BVElWRV9FVkVOVF9DT05UUk9MX1NUQVRVUzoKKyAgICAgICAgICAgICAgICBPbkNvbnRyb2xTdGF0dXNDaGFuZ2VMaXN0ZW5lciBjb250cm9sU3RhdHVzQ2hhbmdlTGlzdGVuZXIgPSBudWxsOworICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3RlbmVyTG9jaykgeworICAgICAgICAgICAgICAgICAgICBjb250cm9sU3RhdHVzQ2hhbmdlTGlzdGVuZXIgPSBtQXVkaW9FZmZlY3QubUNvbnRyb2xDaGFuZ2VTdGF0dXNMaXN0ZW5lcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xTdGF0dXNDaGFuZ2VMaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xTdGF0dXNDaGFuZ2VMaXN0ZW5lci5vbkNvbnRyb2xTdGF0dXNDaGFuZ2UobUF1ZGlvRWZmZWN0LCAoYm9vbGVhbikobXNnLmFyZzEgIT0gMCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTkFUSVZFX0VWRU5UX1BBUkFNRVRFUl9DSEFOR0VEOgorICAgICAgICAgICAgICAgIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgcGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgPSBudWxsOworICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3RlbmVyTG9jaykgeworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciA9IG1BdWRpb0VmZmVjdC5tUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGFyZzEgY29udGFpbnMgb2Zmc2V0IG9mIHBhcmFtZXRlciB2YWx1ZSBmcm9tIHN0YXJ0IG9mIGJ5dGUgYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgaW50IHZPZmZzZXQgPSBtc2cuYXJnMTsKKyAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIHAgPSAoYnl0ZVtdKW1zZy5vYmo7CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBlZmZlY3RfcGFyYW1fdCBpbiBFZmZlY3RBcGkuaCBmb3IgcHNpemUgYW5kIHZzaXplIGZpZWxkcyBvZmZzZXRzCisgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMgPSBieXRlQXJyYXlUb0ludChwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHBzaXplID0gYnl0ZUFycmF5VG9JbnQocCwgNCk7CisgICAgICAgICAgICAgICAgICAgIGludCB2c2l6ZSA9IGJ5dGVBcnJheVRvSW50KHAsIDgpOworICAgICAgICAgICAgICAgICAgICBieXRlW10gcGFyYW0gPSBuZXcgYnl0ZVtwc2l6ZV07CisgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSB2YWx1ZSA9IG5ldyBieXRlW3ZzaXplXTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShwLCAxMiwgcGFyYW0sIDAsIHBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShwLCB2T2Zmc2V0LCB2YWx1ZSwgMCwgdnNpemUpOworCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNoYW5nZUxpc3RlbmVyLm9uUGFyYW1ldGVyQ2hhbmdlKG1BdWRpb0VmZmVjdCwgc3RhdHVzLCBwYXJhbSwgdmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiaGFuZGxlTWVzc2FnZSgpIFVua25vd24gZXZlbnQgdHlwZTogIiArIG1zZy53aGF0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBKYXZhIG1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIG5hdGl2ZSBzaWRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcG9zdEV2ZW50RnJvbU5hdGl2ZShPYmplY3QgZWZmZWN0X3JlZiwKKyAgICAgICAgICAgIGludCB3aGF0LCBpbnQgYXJnMSwgaW50IGFyZzIsIE9iamVjdCBvYmopIHsKKyAgICAgICAgQXVkaW9FZmZlY3QgZWZmZWN0ID0gKEF1ZGlvRWZmZWN0KSgoV2Vha1JlZmVyZW5jZSllZmZlY3RfcmVmKS5nZXQoKTsKKyAgICAgICAgaWYgKGVmZmVjdCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWZmZWN0Lm1OYXRpdmVFdmVudEhhbmRsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgTWVzc2FnZSBtID0gZWZmZWN0Lm1OYXRpdmVFdmVudEhhbmRsZXIub2J0YWluTWVzc2FnZSh3aGF0LCBhcmcxLCBhcmcyLCBvYmopOworICAgICAgICAgICAgZWZmZWN0Lm1OYXRpdmVFdmVudEhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7CisgICAgICAgIH0KKworICAgIH0KKworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBOYXRpdmUgbWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgSmF2YSBzaWRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGZpbmFsIHZvaWQgbmF0aXZlX2luaXQoKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfc2V0dXAoT2JqZWN0IGF1ZGlvZWZmZWN0X3RoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB1dWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByaW9yaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGF1ZGlvU2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0W10gZGVzYyk7CisKKyAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCB2b2lkIG5hdGl2ZV9maW5hbGl6ZSgpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgdm9pZCBuYXRpdmVfcmVsZWFzZSgpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9lbmFibGUoKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfZGlzYWJsZSgpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgYm9vbGVhbiBuYXRpdmVfZ2V0RW5hYmxlKCk7CisKKyAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCBib29sZWFuIG5hdGl2ZV9oYXNDb250cm9sKCk7CisKKyAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX3NldFBhcmFtZXRlcihpbnQgcHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIHBhcmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlW10gdmFsdWUpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9nZXRQYXJhbWV0ZXIoaW50IHBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSBwYXJhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSB2c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlW10gdmFsdWUpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9jb21tYW5kKGludCBjbWRDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY21kU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGNtZERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIHJlcFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSByZXBEYXRhKTsKKworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBPYmplY3RbXSBuYXRpdmVfcXVlcnlfZWZmZWN0cygpOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBVdGlsaXR5IG1ldGhvZHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJvdGVjdGVkIHZvaWQgY2hlY2tTdGF0ZShTdHJpbmcgbWV0aG9kTmFtZSkKKyAgICAgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRlTG9jaykgeworICAgICAgICAgICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9JTklUSUFMSVpFRCkgeworICAgICAgICAgICAgICAgIHRocm93KG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24obWV0aG9kTmFtZSsiIGNhbGxlZCBvbiB1bmluaXRpYWxpemVkIEF1ZGlvRWZmZWN0LiIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGNoZWNrU3RhdHVzKGludCBzdGF0dXMpIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBBdWRpb0VmZmVjdC5TVUNDRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXVkaW9FZmZlY3QuQkFEX1ZBTFVFOgorICAgICAgICAgICAgdGhyb3cgKG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkF1ZGlvRWZmZWN0OiBiYWQgcGFyYW1ldGVyIHZhbHVlIikpOworICAgICAgICBjYXNlIEF1ZGlvRWZmZWN0LklOVkFMSURfT1BFUkFUSU9OOgorICAgICAgICAgICAgdGhyb3cgKG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiQXVkaW9FZmZlY3Q6IGludmFsaWQgcGFyYW1ldGVyIG9wZXJhdGlvbiIpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IChuZXcgUnVudGltZUV4Y2VwdGlvbigiQXVkaW9FZmZlY3Q6IHNldC9nZXQgcGFyYW1ldGVyIGVycm9yIikpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIGludCBieXRlQXJyYXlUb0ludChieXRlW10gdmFsdWVCdWYpIHsKKyAgICAgICAgcmV0dXJuIGJ5dGVBcnJheVRvSW50KHZhbHVlQnVmLCAwKTsKKworICAgIH0KKyAgICBwcm90ZWN0ZWQgaW50IGJ5dGVBcnJheVRvSW50KGJ5dGVbXSB2YWx1ZUJ1ZiwgaW50IG9mZnNldCkgeworICAgICAgICBCeXRlQnVmZmVyIGNvbnZlcnRlciA9IEJ5dGVCdWZmZXIud3JhcCh2YWx1ZUJ1Zik7CisgICAgICAgIGNvbnZlcnRlci5vcmRlcihCeXRlT3JkZXIubmF0aXZlT3JkZXIoKSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0ZXIuZ2V0SW50KG9mZnNldCk7CisKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgYnl0ZVtdIGludFRvQnl0ZUFycmF5KGludCB2YWx1ZSkgeworICAgICAgICBCeXRlQnVmZmVyIGNvbnZlcnRlciA9IEJ5dGVCdWZmZXIuYWxsb2NhdGUoNCk7CisgICAgICAgIGNvbnZlcnRlci5vcmRlcihCeXRlT3JkZXIubmF0aXZlT3JkZXIoKSk7CisgICAgICAgIGNvbnZlcnRlci5wdXRJbnQodmFsdWUpOworICAgICAgICByZXR1cm4gY29udmVydGVyLmFycmF5KCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHNob3J0IGJ5dGVBcnJheVRvU2hvcnQoYnl0ZVtdIHZhbHVlQnVmKSB7CisgICAgICAgIHJldHVybiBieXRlQXJyYXlUb1Nob3J0KHZhbHVlQnVmLCAwKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgc2hvcnQgYnl0ZUFycmF5VG9TaG9ydChieXRlW10gdmFsdWVCdWYsIGludCBvZmZzZXQpIHsKKyAgICAgICAgQnl0ZUJ1ZmZlciBjb252ZXJ0ZXIgPSBCeXRlQnVmZmVyLndyYXAodmFsdWVCdWYpOworICAgICAgICBjb252ZXJ0ZXIub3JkZXIoQnl0ZU9yZGVyLm5hdGl2ZU9yZGVyKCkpOworICAgICAgICByZXR1cm4gY29udmVydGVyLmdldFNob3J0KG9mZnNldCk7CisKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgYnl0ZVtdIHNob3J0VG9CeXRlQXJyYXkoc2hvcnQgdmFsdWUpIHsKKyAgICAgICAgQnl0ZUJ1ZmZlciBjb252ZXJ0ZXIgPSBCeXRlQnVmZmVyLmFsbG9jYXRlKDIpOworICAgICAgICBjb252ZXJ0ZXIub3JkZXIoQnl0ZU9yZGVyLm5hdGl2ZU9yZGVyKCkpOworICAgICAgICBzaG9ydCBzVmFsdWUgPSAoc2hvcnQpdmFsdWU7CisgICAgICAgIGNvbnZlcnRlci5wdXRTaG9ydChzVmFsdWUpOworICAgICAgICByZXR1cm4gY29udmVydGVyLmFycmF5KCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIGJ5dGVbXSBjb25jYXRBcnJheXMoYnl0ZVtdIC4uLmFycmF5cykgeworICAgICAgICBpbnQgbGVuID0gMDsKKyAgICAgICAgZm9yIChieXRlW10gYSA6IGFycmF5cykgeworICAgICAgICAgICAgbGVuICs9IGEubGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSBiID0gbmV3IGJ5dGVbbGVuXTsKKworICAgICAgICBpbnQgb2ZmcyA9IDA7CisgICAgICAgIGZvciAoYnl0ZVtdIGEgOiBhcnJheXMpIHsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYSwgMCwgYiwgb2ZmcywgYS5sZW5ndGgpOworICAgICAgICAgICAgb2ZmcyArPSBhLmxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYjsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9BdWRpb1NlcnZpY2UuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9BdWRpb1NlcnZpY2UuamF2YQppbmRleCAwOGZjNzgyLi45MjEyNzA4IDEwMDY0NAotLS0gYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9TZXJ2aWNlLmphdmEKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0F1ZGlvU2VydmljZS5qYXZhCkBAIC0xMTAzLDE2ICsxMTAzLDIwIEBACiAgICAgcHJpdmF0ZSBCbHVldG9vdGhIZWFkc2V0LlNlcnZpY2VMaXN0ZW5lciBtQmx1ZXRvb3RoSGVhZHNldFNlcnZpY2VMaXN0ZW5lciA9CiAgICAgICAgIG5ldyBCbHVldG9vdGhIZWFkc2V0LlNlcnZpY2VMaXN0ZW5lcigpIHsKICAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlQ29ubmVjdGVkKCkgewotICAgICAgICAgICAgaWYgKG1CbHVldG9vdGhIZWFkc2V0ICE9IG51bGwgJiYKLSAgICAgICAgICAgICAgICBtQmx1ZXRvb3RoSGVhZHNldC5nZXRTdGF0ZSgpID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfQ09OTkVDVEVEKSB7Ci0gICAgICAgICAgICAgICAgbUJsdWV0b290aEhlYWRzZXRDb25uZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKG1CbHVldG9vdGhIZWFkc2V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBCbHVldG9vdGhEZXZpY2UgZGV2aWNlID0gbUJsdWV0b290aEhlYWRzZXQuZ2V0Q3VycmVudEhlYWRzZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAobUJsdWV0b290aEhlYWRzZXQuZ2V0U3RhdGUoZGV2aWNlKSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RFRCkgeworICAgICAgICAgICAgICAgICAgICBtQmx1ZXRvb3RoSGVhZHNldENvbm5lY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZURpc2Nvbm5lY3RlZCgpIHsKLSAgICAgICAgICAgIGlmIChtQmx1ZXRvb3RoSGVhZHNldCAhPSBudWxsICYmCi0gICAgICAgICAgICAgICAgbUJsdWV0b290aEhlYWRzZXQuZ2V0U3RhdGUoKSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRCkgewotICAgICAgICAgICAgICAgIG1CbHVldG9vdGhIZWFkc2V0Q29ubmVjdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY2xlYXJBbGxTY29DbGllbnRzKCk7CisgICAgICAgICAgICBpZiAobUJsdWV0b290aEhlYWRzZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIEJsdWV0b290aERldmljZSBkZXZpY2UgPSBtQmx1ZXRvb3RoSGVhZHNldC5nZXRDdXJyZW50SGVhZHNldCgpOworICAgICAgICAgICAgICAgIGlmIChtQmx1ZXRvb3RoSGVhZHNldC5nZXRTdGF0ZShkZXZpY2UpID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRElTQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIG1CbHVldG9vdGhIZWFkc2V0Q29ubmVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQWxsU2NvQ2xpZW50cygpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH07CkBAIC0xNjM0LDYgKzE2MzgsMTIgQEAKIAogICAgICAgICAgICAgICAgIGNhc2UgTVNHX01FRElBX1NFUlZFUl9TVEFSVEVEOgogICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJNZWRpYSBzZXJ2ZXIgc3RhcnRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGUgdG8gYXVkaW8gSEFMIHRoYXQgd2Ugc3RhcnQgdGhlIHJlY29uZmlndXJhdGlvbiBwaGFzZSBhZnRlciBhIG1lZGlhCisgICAgICAgICAgICAgICAgICAgIC8vIHNlcnZlciBjcmFzaAorICAgICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgTVNHX01FRElBX1NFUlZFUl9TVEFSVEVEIG1lc3NhZ2UgaXMgb25seSByZWNlaXZlZCB3aGVuIHRoZSBtZWRpYSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJvY2VzcyByZXN0YXJ0cyBhZnRlciBhIGNyYXNoLCBub3QgdGhlIGZpcnN0IHRpbWUgaXQgaXMgc3RhcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgQXVkaW9TeXN0ZW0uc2V0UGFyYW1ldGVycygicmVzdGFydGluZz10cnVlIik7CisKICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBkZXZpY2UgY29ubmVjdGlvbiBzdGF0ZXMKICAgICAgICAgICAgICAgICAgICAgU2V0IHNldCA9IG1Db25uZWN0ZWREZXZpY2VzLmVudHJ5U2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGkgPSBzZXQuaXRlcmF0b3IoKTsKQEAgLTE2NjcsNiArMTY3Nyw5IEBACiAKICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSByaW5nZXIgbW9kZQogICAgICAgICAgICAgICAgICAgICBzZXRSaW5nZXJNb2RlSW50KGdldFJpbmdlck1vZGUoKSwgZmFsc2UpOworCisgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlIHRoZSBlbmQgb2YgcmVjb25maWd1cmF0aW9uIHBoYXNlIHRvIGF1ZGlvIEhBTAorICAgICAgICAgICAgICAgICAgICBBdWRpb1N5c3RlbS5zZXRQYXJhbWV0ZXJzKCJyZXN0YXJ0aW5nPWZhbHNlIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBNU0dfUExBWV9TT1VORF9FRkZFQ1Q6CmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9UcmFjay5qYXZhIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0F1ZGlvVHJhY2suamF2YQppbmRleCAxZThkNzJmLi4wNzljNDFmIDEwMDY0NAotLS0gYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9UcmFjay5qYXZhCisrKyBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9BdWRpb1RyYWNrLmphdmEKQEAgLTIxMCw2ICsyMTAsMTAgQEAKICAgICAgKiBAc2VlIEF1ZGlvRm9ybWF0I0VOQ09ESU5HX1BDTV8xNkJJVAogICAgICAqLwogICAgIHByaXZhdGUgaW50IG1BdWRpb0Zvcm1hdCA9IEF1ZGlvRm9ybWF0LkVOQ09ESU5HX1BDTV8xNkJJVDsKKyAgICAvKioKKyAgICAgKiBBdWRpbyBzZXNzaW9uIElECisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbVNlc3Npb25JZCA9IDA7CiAKIAogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI1OCw2ICsyNjIsNDggQEAKICAgICBwdWJsaWMgQXVkaW9UcmFjayhpbnQgc3RyZWFtVHlwZSwgaW50IHNhbXBsZVJhdGVJbkh6LCBpbnQgY2hhbm5lbENvbmZpZywgaW50IGF1ZGlvRm9ybWF0LAogICAgICAgICAgICAgaW50IGJ1ZmZlclNpemVJbkJ5dGVzLCBpbnQgbW9kZSkKICAgICB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcyhzdHJlYW1UeXBlLCBzYW1wbGVSYXRlSW5IeiwgY2hhbm5lbENvbmZpZywgYXVkaW9Gb3JtYXQsCisgICAgICAgICAgICAgICAgYnVmZmVyU2l6ZUluQnl0ZXMsIG1vZGUsIDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsYXNzIGNvbnN0cnVjdG9yIHdpdGggYXVkaW8gc2Vzc2lvbi4gVXNlIHRoaXMgY29uc3RydWN0b3Igd2hlbiB0aGUgQXVkaW9UcmFjayBtdXN0IGJlCisgICAgICogYXR0YWNoZWQgdG8gYSBwYXJ0aWN1bGFyIGF1ZGlvIHNlc3Npb24uIFRoZSBwcmltYXJ5IHVzZSBvZiB0aGUgYXVkaW8gc2Vzc2lvbiBJRCBpcyB0bworICAgICAqIGFzc29jaWF0ZSBhdWRpbyBlZmZlY3RzIHRvIGEgcGFydGljdWxhciBpbnN0YW5jZSBvZiBBdWRpb1RyYWNrOiBpZiBhbiBhdWRpbyBzZXNzaW9uIElECisgICAgICogaXMgcHJvdmlkZWQgd2hlbiBjcmVhdGluZyBhbiBBdWRpb0VmZmVjdCwgdGhpcyBlZmZlY3Qgd2lsbCBiZSBhcHBsaWVkIG9ubHkgdG8gYXVkaW8gdHJhY2tzCisgICAgICogYW5kIG1lZGlhIHBsYXllcnMgaW4gdGhlIHNhbWUgc2Vzc2lvbiBhbmQgbm90IHRvIHRoZSBvdXRwdXQgbWl4LgorICAgICAqIFdoZW4gYW4gQXVkaW9UcmFjayBpcyBjcmVhdGVkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHNlc3Npb24sIGl0IHdpbGwgY3JlYXRlIGl0cyBvd24gc2Vzc2lvbgorICAgICAqIHdoaWNoIGNhbiBiZSByZXRyZWl2ZWQgYnkgY2FsbGluZyB0aGUge0BsaW5rICNnZXRBdWRpb1Nlc3Npb25JZCgpfSBtZXRob2QuCisgICAgICogSWYgYSBzZXNzaW9uIElEIGlzIHByb3ZpZGVkLCB0aGlzIEF1ZGlvVHJhY2sgd2lsbCBzaGFyZSBlZmZlY3RzIGF0dGFjaGVkIHRvIHRoaXMgc2Vzc2lvbgorICAgICAqIHdpdGggYWxsIG90aGVyIG1lZGlhIHBsYXllcnMgb3IgYXVkaW8gdHJhY2tzIGluIHRoZSBzYW1lIHNlc3Npb24uCisgICAgICogQHBhcmFtIHN0cmVhbVR5cGUgdGhlIHR5cGUgb2YgdGhlIGF1ZGlvIHN0cmVhbS4gU2VlCisgICAgICogICB7QGxpbmsgQXVkaW9NYW5hZ2VyI1NUUkVBTV9WT0lDRV9DQUxMfSwge0BsaW5rIEF1ZGlvTWFuYWdlciNTVFJFQU1fU1lTVEVNfSwKKyAgICAgKiAgIHtAbGluayBBdWRpb01hbmFnZXIjU1RSRUFNX1JJTkd9LCB7QGxpbmsgQXVkaW9NYW5hZ2VyI1NUUkVBTV9NVVNJQ30gYW5kCisgICAgICogICB7QGxpbmsgQXVkaW9NYW5hZ2VyI1NUUkVBTV9BTEFSTX0KKyAgICAgKiBAcGFyYW0gc2FtcGxlUmF0ZUluSHogdGhlIHNhbXBsZSByYXRlIGV4cHJlc3NlZCBpbiBIZXJ0ei4gRXhhbXBsZXMgb2YgcmF0ZXMgYXJlIChidXQKKyAgICAgKiAgIG5vdCBsaW1pdGVkIHRvKSA0NDEwMCwgMjIwNTAgYW5kIDExMDI1LgorICAgICAqIEBwYXJhbSBjaGFubmVsQ29uZmlnIGRlc2NyaWJlcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYXVkaW8gY2hhbm5lbHMuCisgICAgICogICBTZWUge0BsaW5rIEF1ZGlvRm9ybWF0I0NIQU5ORUxfT1VUX01PTk99IGFuZAorICAgICAqICAge0BsaW5rIEF1ZGlvRm9ybWF0I0NIQU5ORUxfT1VUX1NURVJFT30KKyAgICAgKiBAcGFyYW0gYXVkaW9Gb3JtYXQgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgYXVkaW8gZGF0YSBpcyByZXByZXNlbnRlZC4KKyAgICAgKiAgIFNlZSB7QGxpbmsgQXVkaW9Gb3JtYXQjRU5DT0RJTkdfUENNXzE2QklUfSBhbmQKKyAgICAgKiAgIHtAbGluayBBdWRpb0Zvcm1hdCNFTkNPRElOR19QQ01fOEJJVH0KKyAgICAgKiBAcGFyYW0gYnVmZmVyU2l6ZUluQnl0ZXMgdGhlIHRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgYnVmZmVyIHdoZXJlIGF1ZGlvIGRhdGEgaXMgcmVhZAorICAgICAqICAgZnJvbSBmb3IgcGxheWJhY2suIElmIHVzaW5nIHRoZSBBdWRpb1RyYWNrIGluIHN0cmVhbWluZyBtb2RlLCB5b3UgY2FuIHdyaXRlIGRhdGEgaW50bworICAgICAqICAgdGhpcyBidWZmZXIgaW4gc21hbGxlciBjaHVua3MgdGhhbiB0aGlzIHNpemUuIElmIHVzaW5nIHRoZSBBdWRpb1RyYWNrIGluIHN0YXRpYyBtb2RlLAorICAgICAqICAgdGhpcyBpcyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBzb3VuZCB0aGF0IHdpbGwgYmUgcGxheWVkIGZvciB0aGlzIGluc3RhbmNlLgorICAgICAqICAgU2VlIHtAbGluayAjZ2V0TWluQnVmZmVyU2l6ZShpbnQsIGludCwgaW50KX0gdG8gZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIHJlcXVpcmVkIGJ1ZmZlciBzaXplCisgICAgICogICBmb3IgdGhlIHN1Y2Nlc3NmdWwgY3JlYXRpb24gb2YgYW4gQXVkaW9UcmFjayBpbnN0YW5jZSBpbiBzdHJlYW1pbmcgbW9kZS4gVXNpbmcgdmFsdWVzCisgICAgICogICBzbWFsbGVyIHRoYW4gZ2V0TWluQnVmZmVyU2l6ZSgpIHdpbGwgcmVzdWx0IGluIGFuIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCisgICAgICogQHBhcmFtIG1vZGUgc3RyZWFtaW5nIG9yIHN0YXRpYyBidWZmZXIuIFNlZSB7QGxpbmsgI01PREVfU1RBVElDfSBhbmQge0BsaW5rICNNT0RFX1NUUkVBTX0KKyAgICAgKiBAcGFyYW0gc2Vzc2lvbklkIElkIG9mIGF1ZGlvIHNlc3Npb24gdGhlIEF1ZGlvVHJhY2sgbXVzdCBiZSBhdHRhY2hlZCB0bworICAgICAqIEB0aHJvd3MgamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAvLyBGSVhNRTogdW5oaWRlLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIEF1ZGlvVHJhY2soaW50IHN0cmVhbVR5cGUsIGludCBzYW1wbGVSYXRlSW5IeiwgaW50IGNoYW5uZWxDb25maWcsIGludCBhdWRpb0Zvcm1hdCwKKyAgICAgICAgICAgIGludCBidWZmZXJTaXplSW5CeXRlcywgaW50IG1vZGUsIGludCBzZXNzaW9uSWQpCisgICAgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CiAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX1VOSU5JVElBTElaRUQ7CiAgICAgICAgIAogICAgICAgICAvLyByZW1lbWJlciB3aGljaCBsb29wZXIgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBBdWRpb1RyYWNrIGluc3RhbmNpYXRpb24KQEAgLTI2OSwxNSArMzE1LDIzIEBACiAKICAgICAgICAgYXVkaW9CdWZmU2l6ZUNoZWNrKGJ1ZmZlclNpemVJbkJ5dGVzKTsKIAorICAgICAgICBpZiAoc2Vzc2lvbklkIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgKG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXVkaW8gc2Vzc2lvbiBJRDogIitzZXNzaW9uSWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIGludFtdIHNlc3Npb24gPSBuZXcgaW50WzFdOworICAgICAgICBzZXNzaW9uWzBdID0gc2Vzc2lvbklkOwogICAgICAgICAvLyBuYXRpdmUgaW5pdGlhbGl6YXRpb24KICAgICAgICAgaW50IGluaXRSZXN1bHQgPSBuYXRpdmVfc2V0dXAobmV3IFdlYWtSZWZlcmVuY2U8QXVkaW9UcmFjaz4odGhpcyksCiAgICAgICAgICAgICAgICAgbVN0cmVhbVR5cGUsIG1TYW1wbGVSYXRlLCBtQ2hhbm5lbHMsIG1BdWRpb0Zvcm1hdCwKLSAgICAgICAgICAgICAgICBtTmF0aXZlQnVmZmVyU2l6ZUluQnl0ZXMsIG1EYXRhTG9hZE1vZGUpOworICAgICAgICAgICAgICAgIG1OYXRpdmVCdWZmZXJTaXplSW5CeXRlcywgbURhdGFMb2FkTW9kZSwgc2Vzc2lvbik7CiAgICAgICAgIGlmIChpbml0UmVzdWx0ICE9IFNVQ0NFU1MpIHsKICAgICAgICAgICAgIGxvZ2UoIkVycm9yIGNvZGUgIitpbml0UmVzdWx0KyIgd2hlbiBpbml0aWFsaXppbmcgQXVkaW9UcmFjay4iKTsKICAgICAgICAgICAgIHJldHVybjsgLy8gd2l0aCBtU3RhdGUgPT0gU1RBVEVfVU5JTklUSUFMSVpFRAogICAgICAgICB9CiAKKyAgICAgICAgbVNlc3Npb25JZCA9IHNlc3Npb25bMF07CisKICAgICAgICAgaWYgKG1EYXRhTG9hZE1vZGUgPT0gTU9ERV9TVEFUSUMpIHsKICAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX05PX1NUQVRJQ19EQVRBOwogICAgICAgICB9IGVsc2UgewpAQCAtNTkwLDYgKzY0NCwxNyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYXVkaW8gc2Vzc2lvbiBJRC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIElEIG9mIHRoZSBhdWRpbyBzZXNzaW9uIHRoaXMgQXVkaW9UcmFjayBiZWxvbmdzIHRvLgorICAgICAvLyBGSVhNRTogdW5oaWRlLgorICAgICAvLyBGSVhNRTogbGluayB0byBBdWRpb0VmZmVjdCBjbGFzcyB3aGVuIHB1YmxpYy4KKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QXVkaW9TZXNzaW9uSWQoKSB7CisgICAgICAgIHJldHVybiBtU2Vzc2lvbklkOworICAgIH0KIAogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBJbml0aWFsaXphdGlvbiAvIGNvbmZpZ3VyYXRpb24KQEAgLTEwMTIsNyArMTA3Nyw3IEBACiAKICAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX3NldHVwKE9iamVjdCBhdWRpb3RyYWNrX3RoaXMsCiAgICAgICAgICAgICBpbnQgc3RyZWFtVHlwZSwgaW50IHNhbXBsZVJhdGUsIGludCBuYkNoYW5uZWxzLCBpbnQgYXVkaW9Gb3JtYXQsCi0gICAgICAgICAgICBpbnQgYnVmZlNpemVJbkJ5dGVzLCBpbnQgbW9kZSk7CisgICAgICAgICAgICBpbnQgYnVmZlNpemVJbkJ5dGVzLCBpbnQgbW9kZSwgaW50W10gc2Vzc2lvbklkKTsKIAogICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIHZvaWQgbmF0aXZlX2ZpbmFsaXplKCk7CiAKQEAgLTEwNTYsNiArMTEyMSw3IEBACiAgICAgc3RhdGljIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfZ2V0X21pbl9idWZmX3NpemUoCiAgICAgICAgICAgICBpbnQgc2FtcGxlUmF0ZUluSHosIGludCBjaGFubmVsQ29uZmlnLCBpbnQgYXVkaW9Gb3JtYXQpOwogCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9nZXRfc2Vzc2lvbl9pZCgpOwogCiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBVdGlsaXR5IG1ldGhvZHMKZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9DYW1jb3JkZXJQcm9maWxlLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQ2FtY29yZGVyUHJvZmlsZS5qYXZhCmluZGV4IDY0ZDY0NjAuLmEyN2RmNTcgMTAwNjQ0Ci0tLSBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9DYW1jb3JkZXJQcm9maWxlLmphdmEKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0NhbWNvcmRlclByb2ZpbGUuamF2YQpAQCAtMTE5LDE1ICsxMTksMjYgQEAKICAgICBwdWJsaWMgaW50IGF1ZGlvQ2hhbm5lbHM7CiAKICAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBjYW1jb3JkZXIgcHJvZmlsZSBmb3IgdGhlIGdpdmVuIHF1YWxpdHkgbGV2ZWwuCisgICAgICogUmV0dXJucyB0aGUgY2FtY29yZGVyIHByb2ZpbGUgZm9yIHRoZSBkZWZhdWx0IGNhbWVyYSBhdCB0aGUgZ2l2ZW4KKyAgICAgKiBxdWFsaXR5IGxldmVsLgogICAgICAqIEBwYXJhbSBxdWFsaXR5IHRoZSB0YXJnZXQgcXVhbGl0eSBsZXZlbCBmb3IgdGhlIGNhbWNvcmRlciBwcm9maWxlCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBDYW1jb3JkZXJQcm9maWxlIGdldChpbnQgcXVhbGl0eSkgeworICAgICAgICByZXR1cm4gZ2V0KDAsIHF1YWxpdHkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGNhbWNvcmRlciBwcm9maWxlIGZvciB0aGUgZ2l2ZW4gY2FtZXJhIGF0IHRoZSBnaXZlbgorICAgICAqIHF1YWxpdHkgbGV2ZWwuCisgICAgICogQHBhcmFtIGNhbWVyYUlkIHRoZSBpZCBmb3IgdGhlIGNhbWVyYQorICAgICAqIEBwYXJhbSBxdWFsaXR5IHRoZSB0YXJnZXQgcXVhbGl0eSBsZXZlbCBmb3IgdGhlIGNhbWNvcmRlciBwcm9maWxlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBDYW1jb3JkZXJQcm9maWxlIGdldChpbnQgY2FtZXJhSWQsIGludCBxdWFsaXR5KSB7CiAgICAgICAgIGlmIChxdWFsaXR5IDwgUVVBTElUWV9MT1cgfHwgcXVhbGl0eSA+IFFVQUxJVFlfSElHSCkgewogICAgICAgICAgICAgU3RyaW5nIGVyck1lc3NhZ2UgPSAiVW5zdXBwb3J0ZWQgcXVhbGl0eSBsZXZlbDogIiArIHF1YWxpdHk7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKGVyck1lc3NhZ2UpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuYXRpdmVfZ2V0X2NhbWNvcmRlcl9wcm9maWxlKHF1YWxpdHkpOworICAgICAgICByZXR1cm4gbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZShjYW1lcmFJZCwgcXVhbGl0eSk7CiAgICAgfQogCiAgICAgc3RhdGljIHsKQEAgLTE2NSw1ICsxNzYsNiBAQAogCiAgICAgLy8gTWV0aG9kcyBpbXBsZW1lbnRlZCBieSBKTkkKICAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgZmluYWwgdm9pZCBuYXRpdmVfaW5pdCgpOwotICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCBDYW1jb3JkZXJQcm9maWxlIG5hdGl2ZV9nZXRfY2FtY29yZGVyX3Byb2ZpbGUoaW50IHF1YWxpdHkpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCBDYW1jb3JkZXJQcm9maWxlIG5hdGl2ZV9nZXRfY2FtY29yZGVyX3Byb2ZpbGUoCisgICAgICAgICAgICBpbnQgY2FtZXJhSWQsIGludCBxdWFsaXR5KTsKIH0KZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9DYW1lcmFQcm9maWxlLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQ2FtZXJhUHJvZmlsZS5qYXZhCmluZGV4IGY4ZDM5MzUuLjZhMGJlMDggMTAwNjQ0Ci0tLSBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9DYW1lcmFQcm9maWxlLmphdmEKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0NhbWVyYVByb2ZpbGUuamF2YQpAQCAtMTcsNiArMTcsNyBAQAogcGFja2FnZSBhbmRyb2lkLm1lZGlhOwogCiBpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIAogLyoqCiAgKiBUaGUgQ2FtZXJhUHJvZmlsZSBjbGFzcyBpcyB1c2VkIHRvIHJldHJpZXZlIHRoZSBwcmUtZGVmaW5lZCBzdGlsbCBpbWFnZQpAQCAtNDAsMzYgKzQxLDU1IEBACiAgICAgLyoKICAgICAgKiBDYWNoZSB0aGUgSnBlZyBlbmNvZGluZyBxdWFsaXR5IHBhcmFtZXRlcnMKICAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzSnBlZ0VuY29kaW5nUXVhbGl0eVBhcmFtZXRlcnM7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSGFzaE1hcDxJbnRlZ2VyLCBpbnRbXT4gc0NhY2hlID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgaW50W10+KCk7CiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGEgcHJlLWRlZmluZWQgc3RpbGwgaW1hZ2UgY2FwdHVyZSAoanBlZykgcXVhbGl0eSBsZXZlbAotICAgICAqIHVzZWQgZm9yIHRoZSBnaXZlbiBxdWFsaXR5IGxldmVsIGluIHRoZSBDYW1lcmEgYXBwbGljYXRpb24uCisgICAgICogdXNlZCBmb3IgdGhlIGdpdmVuIHF1YWxpdHkgbGV2ZWwgaW4gdGhlIENhbWVyYSBhcHBsaWNhdGlvbiBmb3IKKyAgICAgKiB0aGUgZGVmYXVsdCBjYW1lcmEuCiAgICAgICoKICAgICAgKiBAcGFyYW0gcXVhbGl0eSBUaGUgdGFyZ2V0IHF1YWxpdHkgbGV2ZWwKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGludCBnZXRKcGVnRW5jb2RpbmdRdWFsaXR5UGFyYW1ldGVyKGludCBxdWFsaXR5KSB7CisgICAgICAgIHJldHVybiBnZXRKcGVnRW5jb2RpbmdRdWFsaXR5UGFyYW1ldGVyKDAsIHF1YWxpdHkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBwcmUtZGVmaW5lZCBzdGlsbCBpbWFnZSBjYXB0dXJlIChqcGVnKSBxdWFsaXR5IGxldmVsCisgICAgICogdXNlZCBmb3IgdGhlIGdpdmVuIHF1YWxpdHkgbGV2ZWwgaW4gdGhlIENhbWVyYSBhcHBsaWNhdGlvbiBmb3IKKyAgICAgKiB0aGUgc3BlY2lmaWVkIGNhbWVyYS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjYW1lcmFJZCBUaGUgaWQgb2YgdGhlIGNhbWVyYQorICAgICAqIEBwYXJhbSBxdWFsaXR5IFRoZSB0YXJnZXQgcXVhbGl0eSBsZXZlbAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEpwZWdFbmNvZGluZ1F1YWxpdHlQYXJhbWV0ZXIoaW50IGNhbWVyYUlkLCBpbnQgcXVhbGl0eSkgewogICAgICAgICBpZiAocXVhbGl0eSA8IFFVQUxJVFlfTE9XIHx8IHF1YWxpdHkgPiBRVUFMSVRZX0hJR0gpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuc3VwcG9ydGVkIHF1YWxpdHkgbGV2ZWw6ICIgKyBxdWFsaXR5KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gc0pwZWdFbmNvZGluZ1F1YWxpdHlQYXJhbWV0ZXJzW3F1YWxpdHldOworICAgICAgICBzeW5jaHJvbml6ZWQgKHNDYWNoZSkgeworICAgICAgICAgICAgaW50W10gbGV2ZWxzID0gc0NhY2hlLmdldChjYW1lcmFJZCk7CisgICAgICAgICAgICBpZiAobGV2ZWxzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBsZXZlbHMgPSBnZXRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyhjYW1lcmFJZCk7CisgICAgICAgICAgICAgICAgc0NhY2hlLnB1dChjYW1lcmFJZCwgbGV2ZWxzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBsZXZlbHNbcXVhbGl0eV07CisgICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0aWMgewogICAgICAgICBTeXN0ZW0ubG9hZExpYnJhcnkoIm1lZGlhX2puaSIpOwogICAgICAgICBuYXRpdmVfaW5pdCgpOwotICAgICAgICBzSnBlZ0VuY29kaW5nUXVhbGl0eVBhcmFtZXRlcnMgPSBnZXRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscygpOwogICAgIH0KIAotICAgIHByaXZhdGUgc3RhdGljIGludFtdIGdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKCkgewotICAgICAgICBpbnQgbkxldmVscyA9IG5hdGl2ZV9nZXRfbnVtX2ltYWdlX2VuY29kaW5nX3F1YWxpdHlfbGV2ZWxzKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgaW50W10gZ2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoaW50IGNhbWVyYUlkKSB7CisgICAgICAgIGludCBuTGV2ZWxzID0gbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHMoY2FtZXJhSWQpOwogICAgICAgICBpZiAobkxldmVscyAhPSBRVUFMSVRZX0hJR0ggKyAxKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVW5leHBlY3RlZCBKcGVnIGVuY29kaW5nIHF1YWxpdHkgbGV2ZWxzICIgKyBuTGV2ZWxzKTsKICAgICAgICAgfQogCiAgICAgICAgIGludFtdIGxldmVscyA9IG5ldyBpbnRbbkxldmVsc107CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkxldmVsczsgKytpKSB7Ci0gICAgICAgICAgICBsZXZlbHNbaV0gPSBuYXRpdmVfZ2V0X2ltYWdlX2VuY29kaW5nX3F1YWxpdHlfbGV2ZWwoaSk7CisgICAgICAgICAgICBsZXZlbHNbaV0gPSBuYXRpdmVfZ2V0X2ltYWdlX2VuY29kaW5nX3F1YWxpdHlfbGV2ZWwoY2FtZXJhSWQsIGkpOwogICAgICAgICB9CiAgICAgICAgIEFycmF5cy5zb3J0KGxldmVscyk7ICAvLyBMb3dlciBxdWFsaXR5IGxldmVsIEFMV0FZUyBjb21lcyBiZWZvcmUgaGlnaGVyIG9uZQogICAgICAgICByZXR1cm4gbGV2ZWxzOwpAQCAtNzcsNiArOTcsNiBAQAogCiAgICAgLy8gTWV0aG9kcyBpbXBsZW1lbnRlZCBieSBKTkkKICAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgZmluYWwgdm9pZCBuYXRpdmVfaW5pdCgpOwotICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHMoKTsKLSAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9nZXRfaW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbChpbnQgaW5kZXgpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHMoaW50IGNhbWVyYUlkKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9nZXRfaW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbChpbnQgY2FtZXJhSWQsIGludCBpbmRleCk7CiB9CmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvRXhpZkludGVyZmFjZS5qYXZhIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0V4aWZJbnRlcmZhY2UuamF2YQppbmRleCBiMjY5MDZkLi43NDQ4OGM1IDEwMDY0NAotLS0gYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvRXhpZkludGVyZmFjZS5qYXZhCisrKyBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9FeGlmSW50ZXJmYWNlLmphdmEKQEAgLTUxLDYgKzUxLDE5IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHX0dQU19MQVRJVFVERV9SRUYgPSAiR1BTTGF0aXR1ZGVSZWYiOwogICAgIC8qKiBUeXBlIGlzIFN0cmluZy4gKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfR1BTX0xPTkdJVFVERV9SRUYgPSAiR1BTTG9uZ2l0dWRlUmVmIjsKKworICAgIC8qKgorICAgICAqIFRoZSBhbHRpdHVkZSAoaW4gbWV0ZXJzKSBiYXNlZCBvbiB0aGUgcmVmZXJlbmNlIGluIFRBR19HUFNfQUxUSVRVREVfUkVGLgorICAgICAqIFR5cGUgaXMgcmF0aW9uYWwuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHX0dQU19BTFRJVFVERSA9ICJHUFNBbHRpdHVkZSI7CisKKyAgICAvKioKKyAgICAgKiAwIGlmIHRoZSBhbHRpdHVkZSBpcyBhYm92ZSBzZWEgbGV2ZWwuIDEgaWYgdGhlIGFsdGl0dWRlIGlzIGJlbG93IHNlYQorICAgICAqIGxldmVsLiBUeXBlIGlzIGludC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfR1BTX0FMVElUVURFX1JFRiA9ICJHUFNBbHRpdHVkZVJlZiI7CisKICAgICAvKiogVHlwZSBpcyBTdHJpbmcuICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHX0dQU19USU1FU1RBTVAgPSAiR1BTVGltZVN0YW1wIjsKICAgICAvKiogVHlwZSBpcyBTdHJpbmcuICovCkBAIC0yODksNiArMzAyLDIzIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBhbHRpdHVkZSBpbiBtZXRlcnMuIElmIHRoZSBleGlmIHRhZyBkb2VzIG5vdCBleGlzdCwgcmV0dXJuCisgICAgICogPHZhcj5kZWZhdWx0VmFsdWU8L3Zhcj4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHRoZSB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIHRhZyBpcyBub3QgYXZhaWxhYmxlLgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgZ2V0QWx0aXR1ZGUoZG91YmxlIGRlZmF1bHRWYWx1ZSkgeworICAgICAgICBkb3VibGUgYWx0aXR1ZGUgPSBnZXRBdHRyaWJ1dGVEb3VibGUoVEFHX0dQU19BTFRJVFVERSwgLTEpOworICAgICAgICBpbnQgcmVmID0gZ2V0QXR0cmlidXRlSW50KFRBR19HUFNfQUxUSVRVREVfUkVGLCAtMSk7CisKKyAgICAgICAgaWYgKGFsdGl0dWRlID49IDAgJiYgcmVmID49IDApIHsKKyAgICAgICAgICAgIHJldHVybiAoZG91YmxlKSAoYWx0aXR1ZGUgKiAoKHJlZiA9PSAxKSA/IC0xIDogMSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgogICAgICAqIFJldHVybnMgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBKYW4uIDEsIDE5NzAsIG1pZG5pZ2h0LgogICAgICAqIFJldHVybnMgLTEgaWYgdGhlIGRhdGUgdGltZSBpbmZvcm1hdGlvbiBpZiBub3QgYXZhaWxhYmxlLgogICAgICAqIEBoaWRlCkBAIC0zNDUsMTQgKzM3NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAvIEZsb2F0LnBhcnNlRmxvYXQocGFpclsxXS50cmltKCkpKSk7CiAKICAgICAgICAgICAgIHBhaXIgPSBwYXJ0c1syXS5zcGxpdCgiLyIpOwotICAgICAgICAgICAgZmxvYXQgc2Vjb25kcyA9IEZsb2F0LnBhcnNlRmxvYXQocGFpclswXS50cmltKCkpCi0gICAgICAgICAgICAgICAgICAgIC8gRmxvYXQucGFyc2VGbG9hdChwYWlyWzFdLnRyaW0oKSk7CisgICAgICAgICAgICBkb3VibGUgc2Vjb25kcyA9IERvdWJsZS5wYXJzZURvdWJsZShwYWlyWzBdLnRyaW0oKSkKKyAgICAgICAgICAgICAgICAgICAgLyBEb3VibGUucGFyc2VEb3VibGUocGFpclsxXS50cmltKCkpOwogCi0gICAgICAgICAgICBmbG9hdCByZXN1bHQgPSBkZWdyZWVzICsgKG1pbnV0ZXMgLyA2MEYpICsgKHNlY29uZHMgLyAoNjBGICogNjBGKSk7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gZGVncmVlcyArIChtaW51dGVzIC8gNjAuMCkgKyAoc2Vjb25kcyAvIDM2MDAuMCk7CiAgICAgICAgICAgICBpZiAoKHJlZi5lcXVhbHMoIlMiKSB8fCByZWYuZXF1YWxzKCJXIikpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC1yZXN1bHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIChmbG9hdCkgLXJlc3VsdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICByZXR1cm4gKGZsb2F0KSByZXN1bHQ7CiAgICAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIC8vIGlmIGZvciB3aGF0ZXZlciByZWFzb24gd2UgY2FuJ3QgcGFyc2UgdGhlIGxhdCBsb25nIHRoZW4gcmV0dXJuCiAgICAgICAgICAgICAvLyBudWxsCmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvTWVkaWFGaWxlLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvTWVkaWFGaWxlLmphdmEKaW5kZXggOWQxZDQyMC4uNmU1MjdkOSAxMDA2NDQKLS0tIGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL01lZGlhRmlsZS5qYXZhCisrKyBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9NZWRpYUZpbGUuamF2YQpAQCAtNDYsOCArNDYsOSBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV9XTUEgICAgID0gNjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGSUxFX1RZUEVfT0dHICAgICA9IDc7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMRV9UWVBFX0FBQyAgICAgPSA4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV9NS0EgICAgID0gOTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklSU1RfQVVESU9fRklMRV9UWVBFID0gRklMRV9UWVBFX01QMzsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFTVF9BVURJT19GSUxFX1RZUEUgPSBGSUxFX1RZUEVfQUFDOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVNUX0FVRElPX0ZJTEVfVFlQRSA9IEZJTEVfVFlQRV9NS0E7CiAKICAgICAvLyBNSURJIGZpbGUgdHlwZXMKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGSUxFX1RZUEVfTUlEICAgICA9IDExOwpAQCAtNjMsOCArNjQsMTAgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGSUxFX1RZUEVfM0dQUDIgICA9IDI0OwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV9XTVYgICAgID0gMjU7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMRV9UWVBFX0FTRiAgICAgPSAyNjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGSUxFX1RZUEVfTUtWICAgICA9IDI3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV9NUDJUUyAgID0gMjg7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZJUlNUX1ZJREVPX0ZJTEVfVFlQRSA9IEZJTEVfVFlQRV9NUDQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfVklERU9fRklMRV9UWVBFID0gRklMRV9UWVBFX0FTRjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFTVF9WSURFT19GSUxFX1RZUEUgPSBGSUxFX1RZUEVfTVAyVFM7CiAgICAgCiAgICAgLy8gSW1hZ2UgZmlsZSB0eXBlcwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV9KUEVHICAgID0gMzE7CkBAIC0xMzQsNiArMTM3LDcgQEAKICAgICAgICAgYWRkRmlsZVR5cGUoIk9HRyIsIEZJTEVfVFlQRV9PR0csICJhcHBsaWNhdGlvbi9vZ2ciKTsKICAgICAgICAgYWRkRmlsZVR5cGUoIk9HQSIsIEZJTEVfVFlQRV9PR0csICJhcHBsaWNhdGlvbi9vZ2ciKTsKICAgICAgICAgYWRkRmlsZVR5cGUoIkFBQyIsIEZJTEVfVFlQRV9BQUMsICJhdWRpby9hYWMiKTsKKyAgICAgICAgYWRkRmlsZVR5cGUoIk1LQSIsIEZJTEVfVFlQRV9NS0EsICJhdWRpby94LW1hdHJvc2thIik7CiAgCiAgICAgICAgIGFkZEZpbGVUeXBlKCJNSUQiLCBGSUxFX1RZUEVfTUlELCAiYXVkaW8vbWlkaSIpOwogICAgICAgICBhZGRGaWxlVHlwZSgiTUlESSIsIEZJTEVfVFlQRV9NSUQsICJhdWRpby9taWRpIik7CkBAIC0xNTEsNiArMTU1LDEwIEBACiAgICAgICAgIGFkZEZpbGVUeXBlKCIzR1BQIiwgRklMRV9UWVBFXzNHUFAsICJ2aWRlby8zZ3BwIik7CiAgICAgICAgIGFkZEZpbGVUeXBlKCIzRzIiLCBGSUxFX1RZUEVfM0dQUDIsICJ2aWRlby8zZ3BwMiIpOwogICAgICAgICBhZGRGaWxlVHlwZSgiM0dQUDIiLCBGSUxFX1RZUEVfM0dQUDIsICJ2aWRlby8zZ3BwMiIpOworICAgICAgICBhZGRGaWxlVHlwZSgiTUtWIiwgRklMRV9UWVBFX01LViwgInZpZGVvL3gtbWF0cm9za2EiKTsKKyAgICAgICAgYWRkRmlsZVR5cGUoIldFQk0iLCBGSUxFX1RZUEVfTUtWLCAidmlkZW8veC1tYXRyb3NrYSIpOworICAgICAgICBhZGRGaWxlVHlwZSgiVFMiLCBGSUxFX1RZUEVfTVAyVFMsICJ2aWRlby9tcDJ0cyIpOworCiAgICAgICAgIGlmIChpc1dNVkVuYWJsZWQoKSkgewogICAgICAgICAgICAgYWRkRmlsZVR5cGUoIldNViIsIEZJTEVfVFlQRV9XTVYsICJ2aWRlby94LW1zLXdtdiIpOwogICAgICAgICAgICAgYWRkRmlsZVR5cGUoIkFTRiIsIEZJTEVfVFlQRV9BU0YsICJ2aWRlby94LW1zLWFzZiIpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL01lZGlhUGxheWVyLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvTWVkaWFQbGF5ZXIuamF2YQppbmRleCAzOGIxNTgyLi44Y2FhMDdhIDEwMDY0NAotLS0gYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvTWVkaWFQbGF5ZXIuamF2YQorKysgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvTWVkaWFQbGF5ZXIuamF2YQpAQCAtMTMzLDcgKzEzMyw3IEBACiAgKiAgICAgICAgIDxsaT5JdCBpcyBnb29kIHByb2dyYW1taW5nIHByYWN0aWNlIHRvIGhhdmUgeW91ciBhcHBsaWNhdGlvbgogICogICAgICAgICByZWdpc3RlciBhIE9uRXJyb3JMaXN0ZW5lciB0byBsb29rIG91dCBmb3IgZXJyb3Igbm90aWZpY2F0aW9ucyBmcm9tCiAgKiAgICAgICAgIHRoZSBpbnRlcm5hbCBwbGF5ZXIgZW5naW5lLjwvbGk+Ci0gKiAgICAgICAgIDxsaT5JbGxlZ2xTdGF0ZUV4Y2VwdGlvbiBpcworICogICAgICAgICA8bGk+SWxsZWdhbFN0YXRlRXhjZXB0aW9uIGlzCiAgKiAgICAgICAgIHRocm93biB0byBwcmV2ZW50IHByb2dyYW1taW5nIGVycm9ycyBzdWNoIGFzIGNhbGxpbmcge0BsaW5rICNwcmVwYXJlKCl9LAogICogICAgICAgICB7QGxpbmsgI3ByZXBhcmVBc3luYygpfSwgb3Igb25lIG9mIHRoZSBvdmVybG9hZGVkIDxjb2RlPnNldERhdGFTb3VyY2UKICAqICAgICAgICAgPC9jb2RlPiBtZXRob2RzIGluIGFuIGludmFsaWQgc3RhdGUuIDwvbGk+CkBAIC00MjMsNiArNDIzLDE4IEBACiAgKiAgICAgPHRkPlN1Y2Nlc3NmdWwgaW52b2tlIG9mIHRoaXMgbWV0aG9kIGluIGEgdmFsaWQgc3RhdGUgdHJhbnNmZXJzIHRoZQogICogICAgICAgICBvYmplY3QgdG8gdGhlIDxlbT5TdG9wcGVkPC9lbT4gc3RhdGUuIENhbGxpbmcgdGhpcyBtZXRob2QgaW4gYW4KICAqICAgICAgICAgaW52YWxpZCBzdGF0ZSB0cmFuc2ZlcnMgdGhlIG9iamVjdCB0byB0aGUgPGVtPkVycm9yPC9lbT4gc3RhdGUuPC9wPjwvdGQ+PC90cj4KKyAgKiA8dHI+PHRkPnNldEF1ZGlvU2Vzc2lvbklkIDwvcD48L3RkPgorICogICAgIDx0ZD57SWRsZX0gPC9wPjwvdGQ+CisgKiAgICAgPHRkPntJbml0aWFsaXplZCwgUHJlcGFyZWQsIFN0YXJ0ZWQsIFBhdXNlZCwgU3RvcHBlZCwgUGxheWJhY2tDb21wbGV0ZWQsCisgKiAgICAgICAgICBFcnJvcn0gPC9wPjwvdGQ+CisgKiAgICAgPHRkPlRoaXMgbWV0aG9kIG11c3QgYmUgY2FsbGVkIGluIGlkbGUgc3RhdGUgYXMgdGhlIGF1ZGlvIHNlc3Npb24gSUQgbXVzdCBiZSBrbm93biBiZWZvcmUKKyAqICAgICAgICAgY2FsbGluZyBzZXREYXRhU291cmNlLiBDYWxsaW5nIGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgb2JqZWN0IHN0YXRlLiA8L3A+PC90ZD48L3RyPgorICogPHRyPjx0ZD5nZXRBdWRpb1Nlc3Npb25JZCA8L3A+PC90ZD4KKyAqICAgICA8dGQ+YW55IDwvcD48L3RkPgorICogICAgIDx0ZD57fSA8L3A+PC90ZD4KKyAqICAgICA8dGQ+VGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBpbiBhbnkgc3RhdGUgYW5kIGNhbGxpbmcgaXQgZG9lcyBub3QgY2hhbmdlCisgKiAgICAgICAgIHRoZSBvYmplY3Qgc3RhdGUuIDwvcD48L3RkPjwvdHI+CisgKgogICogPC90YWJsZT4KICAqCiAgKiA8YSBuYW1lPSJQZXJtaXNzaW9ucyI+PC9hPgpAQCAtMTE1OSw2ICsxMTcxLDM4IEBACiAgICAgcHVibGljIG5hdGl2ZSBCaXRtYXAgZ2V0RnJhbWVBdChpbnQgbXNlYykgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbjsKIAogICAgIC8qKgorICAgICAqIFNldHMgdGhlIGF1ZGlvIHNlc3Npb24gSUQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2Vzc2lvbklkOiB0aGUgYXVkaW8gc2Vzc2lvbiBJRC4KKyAgICAgKiBUaGUgYXVkaW8gc2Vzc2lvbiBJRCBpcyBhIHN5c3RlbSB3aWRlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgYXVkaW8gc3RyZWFtIHBsYXllZCBieQorICAgICAqIHRoaXMgTWVkaWFQbGF5ZXIgaW5zdGFuY2UuCisgICAgICogVGhlIHByaW1hcnkgdXNlIG9mIHRoZSBhdWRpbyBzZXNzaW9uIElEICBpcyB0byBhc3NvY2lhdGUgYXVkaW8gZWZmZWN0cyB0byBhIHBhcnRpY3VsYXIKKyAgICAgKiBpbnN0YW5jZSBvZiBNZWRpYVBsYXllcjogaWYgYW4gYXVkaW8gc2Vzc2lvbiBJRCBpcyBwcm92aWRlZCB3aGVuIGNyZWF0aW5nIGFuIGF1ZGlvIGVmZmVjdCwKKyAgICAgKiB0aGlzIGVmZmVjdCB3aWxsIGJlIGFwcGxpZWQgb25seSB0byB0aGUgYXVkaW8gY29udGVudCBvZiBtZWRpYSBwbGF5ZXJzIHdpdGhpbiB0aGUgc2FtZQorICAgICAqIGF1ZGlvIHNlc3Npb24gYW5kIG5vdCB0byB0aGUgb3V0cHV0IG1peC4KKyAgICAgKiBXaGVuIGNyZWF0ZWQsIGEgTWVkaWFQbGF5ZXIgaW5zdGFuY2UgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgaXRzIG93biBhdWRpbyBzZXNzaW9uIElELgorICAgICAqIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGZvcmNlIHRoaXMgcGxheWVyIHRvIGJlIHBhcnQgb2YgYW4gYWxyZWFkeSBleGlzdGluZyBhdWRpbyBzZXNzaW9uCisgICAgICogYnkgY2FsbGluZyB0aGlzIG1ldGhvZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgb25lIG9mIHRoZSBvdmVybG9hZGVkIDxjb2RlPiBzZXREYXRhU291cmNlIDwvY29kZT4gbWV0aG9kcy4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBpZiBpdCBpcyBjYWxsZWQgaW4gYW4gaW52YWxpZCBzdGF0ZQorICAgICAqCisgICAgIC8vIEZJWE1FOiB1bmhpZGUuCisgICAgIC8vIEZJWE1FOiBsaW5rIHRvIEF1ZGlvRWZmZWN0IGNsYXNzIHdoZW4gcHVibGljLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIG5hdGl2ZSB2b2lkIHNldEF1ZGlvU2Vzc2lvbklkKGludCBzZXNzaW9uSWQpICB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBJbGxlZ2FsU3RhdGVFeGNlcHRpb247CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBhdWRpbyBzZXNzaW9uIElELgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYXVkaW8gc2Vzc2lvbiBJRC4ge0BzZWUgI3NldEF1ZGlvU2Vzc2lvbklkKGludCl9LgorICAgICAqIE5vdGUgdGhhdCB0aGUgYXVkaW8gc2Vzc2lvbiBJRCBpcyAwIG9ubHkgaWYgYSBwcm9ibGVtIG9jY3VyZWQgd2hlbiB0aGUgTWVkaWFQbGF5ZXIgd2FzIGNvbnRydWN0ZWQuCisgICAgIC8vIEZJWE1FOiB1bmhpZGUuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgbmF0aXZlIGludCBnZXRBdWRpb1Nlc3Npb25JZCgpOworCisgICAgLyoqCiAgICAgICogQHBhcmFtIHJlcXVlc3QgUGFyY2VsIGRlc3RpbmF0ZWQgdG8gdGhlIG1lZGlhIHBsYXllci4gVGhlCiAgICAgICogICAgICAgICAgICAgICAgSW50ZXJmYWNlIHRva2VuIG11c3QgYmUgc2V0IHRvIHRoZSBJTWVkaWFQbGF5ZXIKICAgICAgKiAgICAgICAgICAgICAgICBvbmUgdG8gYmUgcm91dGVkIGNvcnJlY3RseSB0aHJvdWdoIHRoZSBzeXN0ZW0uCkBAIC0xNTIzLDYgKzE1NjcsMTUgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNRURJQV9JTkZPX1ZJREVPX1RSQUNLX0xBR0dJTkcgPSA3MDA7CiAKKyAgICAvKiogTWVkaWFQbGF5ZXIgaXMgdGVtcG9yYXJpbHkgcGF1c2luZyBwbGF5YmFjayBpbnRlcm5hbGx5IGluIG9yZGVyIHRvCisgICAgICogYnVmZmVyIG1vcmUgZGF0YS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNRURJQV9JTkZPX0JVRkZFUklOR19TVEFSVCA9IDcwMTsKKworICAgIC8qKiBNZWRpYVBsYXllciBpcyByZXN1bWluZyBwbGF5YmFjayBhZnRlciBmaWxsaW5nIGJ1ZmZlcnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUVESUFfSU5GT19CVUZGRVJJTkdfRU5EID0gNzAyOworCiAgICAgLyoqIEJhZCBpbnRlcmxlYXZpbmcgbWVhbnMgdGhhdCBhIG1lZGlhIGhhcyBiZWVuIGltcHJvcGVybHkgaW50ZXJsZWF2ZWQgb3IKICAgICAgKiBub3QgaW50ZXJsZWF2ZWQgYXQgYWxsLCBlLmcgaGFzIGFsbCB0aGUgdmlkZW8gc2FtcGxlcyBmaXJzdCB0aGVuIGFsbCB0aGUKICAgICAgKiBhdWRpbyBvbmVzLiBWaWRlbyBpcyBwbGF5aW5nIGJ1dCBhIGxvdCBvZiBkaXNrIHNlZWtzIG1heSBiZSBoYXBwZW5pbmcuCmRpZmYgLS1naXQgYS9tZWRpYS9qbmkvQW5kcm9pZC5tayBiL21lZGlhL2puaS9BbmRyb2lkLm1rCmluZGV4IGE2YTI1Y2QuLjZlZWMyMTVhIDEwMDY0NAotLS0gYS9tZWRpYS9qbmkvQW5kcm9pZC5taworKysgYi9tZWRpYS9qbmkvQW5kcm9pZC5tawpAQCAtMTEsNyArMTEsOCBAQAogICAgIGFuZHJvaWRfbWVkaWFfTWVkaWFTY2FubmVyLmNwcCBcCiAgICAgYW5kcm9pZF9tZWRpYV9NZWRpYU1ldGFkYXRhUmV0cmlldmVyLmNwcCBcCiAgICAgYW5kcm9pZF9tZWRpYV9SZXNhbXBsZUlucHV0U3RyZWFtLmNwcCBcCi0gICAgYW5kcm9pZF9tZWRpYV9NZWRpYVByb2ZpbGVzLmNwcAorICAgIGFuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlcy5jcHAgXAorICAgIGFuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW0uY3BwCiAKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gXAogICAgIGxpYmFuZHJvaWRfcnVudGltZSBcCkBAIC0yMywzNSArMjQsMjYgQEAKICAgICBsaWJ1aSBcCiAgICAgbGliY3V0aWxzIFwKICAgICBsaWJzdXJmYWNlZmxpbmdlcl9jbGllbnQgXAorICAgIGxpYnN0YWdlZnJpZ2h0IFwKICAgICBsaWJjYW1lcmFfY2xpZW50CiAKIGlmbmVxICgkKEJVSUxEX1dJVEhPVVRfUFYpLHRydWUpCiAKLUxPQ0FMX1NSQ19GSUxFUyArPSBcCi0gICAgYW5kcm9pZF9tZWRpYV9BbXJJbnB1dFN0cmVhbS5jcHAKLQogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBcCi0gICAgbGlib3BlbmNvcmVfcGxheWVyICAgICAgICAgIFwKLSAgICBsaWJvbXhfYW1yZW5jX3NoYXJlZGxpYnJhcnkKKyAgICBsaWJvcGVuY29yZV9wbGF5ZXIKIGVsc2UKICAgICBMT0NBTF9DRkxBR1MgKz0gLUROT19PUEVOQ09SRQogZW5kaWYKIAotaWZlcSAoJChCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQpLHRydWUpCi0KLUxPQ0FMX0NGTEFHUyArPSAtREJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVD0xCi0KLUxPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgKz0gXAotICAgIGxpYnN0YWdlZnJpZ2h0Ci0KLWVuZGlmCi0KIExPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0KIAogTE9DQUxfQ19JTkNMVURFUyArPSBcCiAgICAgZXh0ZXJuYWwvdHJlbW9yL1RyZW1vciBcCiAgICAgZnJhbWV3b3Jrcy9iYXNlL2NvcmUvam5pIFwKICAgICBmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlibWVkaWEgXAorICAgIGZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1ybmIvZW5jL3NyYyBcCisgICAgZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJuYi9jb21tb24gXAorICAgIGZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1ybmIvY29tbW9uL2luY2x1ZGUgXAogICAgICQoUFZfSU5DTFVERVMpIFwKICAgICAkKEpOSV9IX0lOQ0xVREUpIFwKICAgICAkKGNhbGwgaW5jbHVkZS1wYXRoLWZvciwgY29yZWNnIGdyYXBoaWNzKQpAQCAtNjUsNCArNTcsNSBAQAogaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQogCiAjIGJ1aWxkIGxpYnNvdW5kcG9vbC5zbwotaW5jbHVkZSAkKExPQ0FMX1BBVEgpL3NvdW5kcG9vbC9BbmRyb2lkLm1rCisjIGJ1aWxkIGxpYmF1ZGlvZWZmZWN0X2puaS5zbworaW5jbHVkZSAkKGNhbGwgYWxsLW1ha2VmaWxlcy11bmRlciwkKExPQ0FMX1BBVEgpKQpkaWZmIC0tZ2l0IGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW0uY3BwIGIvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW0uY3BwCmluZGV4IGM0ZGQwN2UuLmY4YWVjZGQgMTAwNjQ0Ci0tLSBhL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX0FtcklucHV0U3RyZWFtLmNwcAorKysgYi9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9BbXJJbnB1dFN0cmVhbS5jcHAKQEAgLTE4LDM2ICsxOCw0MyBAQAogI2RlZmluZSBMT0dfVEFHICJBbXJJbnB1dFN0cmVhbSIKICNpbmNsdWRlICJ1dGlscy9Mb2cuaCIKIAotI2luY2x1ZGUgPG1lZGlhL21lZGlhcmVjb3JkZXIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgotCiAjaW5jbHVkZSAiam5pLmgiCiAjaW5jbHVkZSAiSk5JSGVscC5oIgogI2luY2x1ZGUgImFuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oIgotI2luY2x1ZGUgImdzbWFtcl9lbmNvZGVyX3dyYXBwZXIuaCIKLQorI2luY2x1ZGUgImdzbWFtcl9lbmMuaCIKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB1c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKIAogLy8gQ29ycmVzcG9uZHMgdG8gbWF4IGJpdCByYXRlIG9mIDEyLjIga2Jwcy4KLXN0YXRpYyBjb25zdCBpbnQgYU1heE91dHB1dEJ1ZmZlclNpemUgPSAzMjsKK3N0YXRpYyBjb25zdCBpbnQgTUFYX09VVFBVVF9CVUZGRVJfU0laRSA9IDMyOworc3RhdGljIGNvbnN0IGludCBGUkFNRV9EVVJBVElPTl9NUyA9IDIwOworc3RhdGljIGNvbnN0IGludCBTQU1QTElOR19SQVRFX0haID0gODAwMDsKK3N0YXRpYyBjb25zdCBpbnQgU0FNUExFU19QRVJfRlJBTUUgPSAoKFNBTVBMSU5HX1JBVEVfSFogKiBGUkFNRV9EVVJBVElPTl9NUykgLyAxMDAwKTsKK3N0YXRpYyBjb25zdCBpbnQgQllURVNfUEVSX1NBTVBMRSA9IDI7ICAvLyBBc3N1bWUgMTYtYml0IFBDTSBzYW1wbGVzCitzdGF0aWMgY29uc3QgaW50IEJZVEVTX1BFUl9GUkFNRSA9IChTQU1QTEVTX1BFUl9GUkFNRSAqIEJZVEVTX1BFUl9TQU1QTEUpOwogCi1zdGF0aWMgY29uc3QgaW50IFNBTVBMRVNfUEVSX0ZSQU1FID0gODAwMCAqIDIwIC8gMTAwMDsKK3N0cnVjdCBHc21BbXJFbmNvZGVyU3RhdGUgeworICAgIEdzbUFtckVuY29kZXJTdGF0ZSgpCisgICAgICAgIDogbUVuY1N0YXRlKE5VTEwpLAorICAgICAgICAgIG1TaWRTdGF0ZShOVUxMKSwKKyAgICAgICAgICBtTGFzdE1vZGVVc2VkKDApIHsKKyAgICB9CiAKKyAgICB+R3NtQW1yRW5jb2RlclN0YXRlKCkge30KKworICAgIHZvaWQqICAgbUVuY1N0YXRlOworICAgIHZvaWQqICAgbVNpZFN0YXRlOworICAgIGludDMyX3QgbUxhc3RNb2RlVXNlZDsKK307CiAKIC8vCiAvLyBoZWxwZXIgZnVuY3Rpb24gdG8gdGhyb3cgYW4gZXhjZXB0aW9uCiAvLwogc3RhdGljIHZvaWQgdGhyb3dFeGNlcHRpb24oSk5JRW52ICplbnYsIGNvbnN0IGNoYXIqIGV4LCBjb25zdCBjaGFyKiBmbXQsIGludCBkYXRhKSB7CiAgICAgaWYgKGpjbGFzcyBjbHMgPSBlbnYtPkZpbmRDbGFzcyhleCkpIHsKLSAgICAgICAgY2hhciBtc2dbMTAwMF07CisgICAgICAgIGNoYXIgbXNnWzEyOF07CiAgICAgICAgIHNwcmludGYobXNnLCBmbXQsIGRhdGEpOwogICAgICAgICBlbnYtPlRocm93TmV3KGNscywgbXNnKTsKICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihjbHMpOwpAQCAtNTYsMzQgKzYzLDIxIEBACiAKIHN0YXRpYyBqaW50IGFuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW1fR3NtQW1yRW5jb2Rlck5ldwogICAgICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eikgewotICAgIENQdkdzbUFtckVuY29kZXIqIGdhZSA9IG5ldyBDUHZHc21BbXJFbmNvZGVyKCk7CisgICAgR3NtQW1yRW5jb2RlclN0YXRlKiBnYWUgPSBuZXcgR3NtQW1yRW5jb2RlclN0YXRlKCk7CiAgICAgaWYgKGdhZSA9PSBOVUxMKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLAotICAgICAgICAgICAgICAgICJuZXcgQ1B2R3NtQW1yRW5jb2RlcigpIGZhaWxlZCIsIDApOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgIk91dCBvZiBtZW1vcnkiLCAwKTsKICAgICB9CiAgICAgcmV0dXJuIChqaW50KWdhZTsKIH0KIAogc3RhdGljIHZvaWQgYW5kcm9pZF9tZWRpYV9BbXJJbnB1dFN0cmVhbV9Hc21BbXJFbmNvZGVySW5pdGlhbGl6ZQogICAgICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamludCBnYWUpIHsKLSAgICAvLyBzZXQgaW5wdXQgcGFyYW1ldGVycwotICAgIFRFbmNvZGVQcm9wZXJ0aWVzIGVuY29kZVByb3BzOwotICAgIGVuY29kZVByb3BzLmlJbkJpdHNQZXJTYW1wbGUgPSAxNjsKLSAgICBlbmNvZGVQcm9wcy5pSW5TYW1wbGluZ1JhdGUgPSA4MDAwOwotICAgIGVuY29kZVByb3BzLmlJbkNsb2NrUmF0ZSA9IDEwMDA7Ci0gICAgZW5jb2RlUHJvcHMuaUluTnVtQ2hhbm5lbHMgPSAxOwotICAgIGVuY29kZVByb3BzLmlJbkludGVybGVhdmVNb2RlID0gVEVuY29kZVByb3BlcnRpZXM6OkVJTlRFUkxFQVZFX0xSOwotICAgIGVuY29kZVByb3BzLmlNb2RlID0gQ1B2R3NtQW1yRW5jb2Rlcjo6R1NNX0FNUl8xMl8yOwotICAgIGVuY29kZVByb3BzLmlCaXRTdHJlYW1Gb3JtYXQgPSBmYWxzZTsKLSAgICBlbmNvZGVQcm9wcy5pQXVkaW9PYmplY3RUeXBlID0gMDsKLSAgICBlbmNvZGVQcm9wcy5pT3V0U2FtcGxpbmdSYXRlID0gZW5jb2RlUHJvcHMuaUluU2FtcGxpbmdSYXRlOwotICAgIGVuY29kZVByb3BzLmlPdXROdW1DaGFubmVscyA9IGVuY29kZVByb3BzLmlJbk51bUNoYW5uZWxzOwotICAgIGVuY29kZVByb3BzLmlPdXRDbG9ja1JhdGUgPSBlbmNvZGVQcm9wcy5pSW5DbG9ja1JhdGU7Ci0KLSAgICBpZiAoaW50IHJ0biA9ICgoQ1B2R3NtQW1yRW5jb2RlciopZ2FlKS0+Ci0gICAgICAgICAgICBJbml0aWFsaXplRW5jb2RlcihhTWF4T3V0cHV0QnVmZmVyU2l6ZSwgJmVuY29kZVByb3BzKSkgeworICAgIEdzbUFtckVuY29kZXJTdGF0ZSAqc3RhdGUgPSAoR3NtQW1yRW5jb2RlclN0YXRlICopIGdhZTsKKyAgICBpbnQzMl90IG5SZXN1bHQgPSBBTVJFbmNvZGVJbml0KCZzdGF0ZS0+bUVuY1N0YXRlLCAmc3RhdGUtPm1TaWRTdGF0ZSwgZmFsc2UpOworICAgIGlmIChuUmVzdWx0ICE9IE9LKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iLAotICAgICAgICAgICAgICAgICJDUHZHc21BbXJFbmNvZGVyOjpJbml0aWFsaXplRW5jb2RlciBmYWlsZWQgJWQiLCBydG4pOworICAgICAgICAgICAgICAgICJHc21BbXJFbmNvZGVyIGluaXRpYWxpemF0aW9uIGZhaWxlZCAlZCIsIG5SZXN1bHQpOwogICAgIH0KIH0KIApAQCAtOTEsNDIgKzg1LDIzIEBACiAgICAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgamludCBnYWUsIGpieXRlQXJyYXkgcGNtLCBqaW50IHBjbU9mZnNldCwgamJ5dGVBcnJheSBhbXIsIGppbnQgYW1yT2Zmc2V0KSB7CiAKLSAgICAvLyBzZXQgdXAgaW5wdXQgc3RyZWFtCi0gICAgamJ5dGUgaW5CdWZbU0FNUExFU19QRVJfRlJBTUUqMl07Ci0gICAgVElucHV0QXVkaW9TdHJlYW0gaW47Ci0gICAgaW4uaVNhbXBsZUJ1ZmZlciA9ICh1aW50OCopaW5CdWY7CisgICAgamJ5dGUgaW5CdWZbQllURVNfUEVSX0ZSQU1FXTsKKyAgICBqYnl0ZSBvdXRCdWZbTUFYX09VVFBVVF9CVUZGRVJfU0laRV07CisKICAgICBlbnYtPkdldEJ5dGVBcnJheVJlZ2lvbihwY20sIHBjbU9mZnNldCwgc2l6ZW9mKGluQnVmKSwgaW5CdWYpOwotICAgIGluLmlTYW1wbGVMZW5ndGggPSBzaXplb2YoaW5CdWYpOwotICAgIGluLmlNb2RlID0gQ1B2R3NtQW1yRW5jb2Rlcjo6R1NNX0FNUl8xMl8yOwotICAgIGluLmlTdGFydFRpbWUgPSAwOwotICAgIGluLmlTdG9wVGltZSA9IDA7Ci0KLSAgICAvLyBzZXQgdXAgb3V0cHV0IHN0cmVhbQotICAgIGpieXRlIG91dEJ1ZlthTWF4T3V0cHV0QnVmZmVyU2l6ZV07Ci0gICAgaW50MzIgc2FtcGxlRnJhbWVTaXplWzFdID0geyAwIH07Ci0gICAgVE91dHB1dEF1ZGlvU3RyZWFtIG91dDsKLSAgICBvdXQuaUJpdFN0cmVhbUJ1ZmZlciA9ICh1aW50OCopb3V0QnVmOwotICAgIG91dC5pTnVtU2FtcGxlRnJhbWVzID0gMDsKLSAgICBvdXQuaVNhbXBsZUZyYW1lU2l6ZSA9IHNhbXBsZUZyYW1lU2l6ZTsKLSAgICBvdXQuaVN0YXJ0VGltZSA9IDA7Ci0gICAgb3V0LmlTdG9wVGltZSA9IDA7Ci0KLSAgICAvLyBlbmNvZGUKLSAgICBpZiAoaW50IHJ0biA9ICgoQ1B2R3NtQW1yRW5jb2RlciopZ2FlKS0+RW5jb2RlKGluLCBvdXQpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGVudiwgImphdmEvaW8vSU9FeGNlcHRpb24iLCAiQ1B2R3NtQW1yRW5jb2Rlcjo6RW5jb2RlIGZhaWxlZCAlZCIsIHJ0bik7CisgICAgR3NtQW1yRW5jb2RlclN0YXRlICpzdGF0ZSA9IChHc21BbXJFbmNvZGVyU3RhdGUgKikgZ2FlOworICAgIGludDMyX3QgbGVuZ3RoID0gQU1SRW5jb2RlKHN0YXRlLT5tRW5jU3RhdGUsIHN0YXRlLT5tU2lkU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChNb2RlKSBNUjEyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludDE2X3QgKikgaW5CdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopIG91dEJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZyYW1lX1R5cGVfM0dQUCopICZzdGF0ZS0+bUxhc3RNb2RlVXNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU1SX1RYX1dNRik7CisgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9pby9JT0V4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBlbmNvZGUgYSBmcmFtZSB3aXRoIGVycm9yIGNvZGU6ICVkIiwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIC8vIHZhbGlkYXRlIG9uZS1mcmFtZSBhc3N1bXB0aW9uCi0gICAgaWYgKG91dC5pTnVtU2FtcGxlRnJhbWVzICE9IDEpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9pby9JT0V4Y2VwdGlvbiIsCi0gICAgICAgICAgICAgICAgIkNQdkdzbUFtckVuY29kZXI6OkVuY29kZSBtb3JlIHRoYW4gb25lIGZyYW1lIHJldHVybmVkICVkIiwgb3V0LmlOdW1TYW1wbGVGcmFtZXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBjb3B5IHJlc3VsdAotICAgIGludCBsZW5ndGggPSBvdXQuaVNhbXBsZUZyYW1lU2l6ZVswXTsKLQogICAgIC8vIFRoZSAxc3QgYnl0ZSBvZiBQViBBTVIgZnJhbWVzIGFyZSBXTUYgKFdpcmVsZXNzIE11bHRpbWVkaWEgRm9ydW0pCiAgICAgLy8gYml0cGFja2VkLCBpLmUuOwogICAgIC8vICAgIFtQKDQpICsgRlQoNCldLiBRPTEgZm9yIGdvb2QgZnJhbWUsIFA9cGFkZGluZyBiaXQsIDAKQEAgLTE0NCwxNSArMTE5LDE1IEBACiAKIHN0YXRpYyB2b2lkIGFuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW1fR3NtQW1yRW5jb2RlckNsZWFudXAKICAgICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGppbnQgZ2FlKSB7Ci0gICAgaWYgKGludCBydG4gPSAoKENQdkdzbUFtckVuY29kZXIqKWdhZSktPkNsZWFudXBFbmNvZGVyKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCi0gICAgICAgICAgICAgICAgIkNQdkdzbUFtckVuY29kZXI6OkNsZWFudXBFbmNvZGVyIGZhaWxlZCAlZCIsIHJ0bik7Ci0gICAgfQorICAgIEdzbUFtckVuY29kZXJTdGF0ZSAqc3RhdGUgPSAoR3NtQW1yRW5jb2RlclN0YXRlICopZ2FlOworICAgIEFNUkVuY29kZUV4aXQoJnN0YXRlLT5tRW5jU3RhdGUsICZzdGF0ZS0+bVNpZFN0YXRlKTsKKyAgICBzdGF0ZS0+bUVuY1N0YXRlID0gTlVMTDsKKyAgICBzdGF0ZS0+bVNpZFN0YXRlID0gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQgYW5kcm9pZF9tZWRpYV9BbXJJbnB1dFN0cmVhbV9Hc21BbXJFbmNvZGVyRGVsZXRlCiAgICAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqaW50IGdhZSkgewotICAgIGRlbGV0ZSAoQ1B2R3NtQW1yRW5jb2RlciopZ2FlOworICAgIGRlbGV0ZSAoR3NtQW1yRW5jb2RlclN0YXRlKilnYWU7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX01lZGlhUGxheWVyLmNwcCBiL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX01lZGlhUGxheWVyLmNwcAppbmRleCA4ZWQzNzMwLi5jNTI1MGQ3IDEwMDY0NAotLS0gYS9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllci5jcHAKKysrIGIvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXIuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAKICAgICBpZiAoc3VyZmFjZSAhPSBOVUxMKSB7CiAgICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+IG5hdGl2ZV9zdXJmYWNlID0gZ2V0X3N1cmZhY2UoZW52LCBzdXJmYWNlKTsKICAgICAgICAgTE9HVigicHJlcGFyZTogc3VyZmFjZT0lcCAoaWQ9JWQpIiwKLSAgICAgICAgICAgICBuYXRpdmVfc3VyZmFjZS5nZXQoKSwgbmF0aXZlX3N1cmZhY2UtPklEKCkpOworICAgICAgICAgICAgIG5hdGl2ZV9zdXJmYWNlLmdldCgpLCBuYXRpdmVfc3VyZmFjZS0+Z2V0SWRlbnRpdHkoKSk7CiAgICAgICAgIG1wLT5zZXRWaWRlb1N1cmZhY2UobmF0aXZlX3N1cmZhY2UpOwogICAgIH0KIH0KQEAgLTMzMiw3ICszMzIsNyBAQAogICAgIGlmIChzdXJmYWNlICE9IE5VTEwpIHsKICAgICAgICAgY29uc3Qgc3A8U3VyZmFjZT4gbmF0aXZlX3N1cmZhY2UgPSBnZXRfc3VyZmFjZShlbnYsIHN1cmZhY2UpOwogICAgICAgICBMT0dWKCJwcmVwYXJlQXN5bmM6IHN1cmZhY2U9JXAgKGlkPSVkKSIsCi0gICAgICAgICAgICAgbmF0aXZlX3N1cmZhY2UuZ2V0KCksIG5hdGl2ZV9zdXJmYWNlLT5JRCgpKTsKKyAgICAgICAgICAgICBuYXRpdmVfc3VyZmFjZS5nZXQoKSwgbmF0aXZlX3N1cmZhY2UtPmdldElkZW50aXR5KCkpOwogICAgICAgICBtcC0+c2V0VmlkZW9TdXJmYWNlKG5hdGl2ZV9zdXJmYWNlKTsKICAgICB9CiAgICAgcHJvY2Vzc19tZWRpYV9wbGF5ZXJfY2FsbCggZW52LCB0aGl6LCBtcC0+cHJlcGFyZUFzeW5jKCksICJqYXZhL2lvL0lPRXhjZXB0aW9uIiwgIlByZXBhcmUgQXN5bmMgZmFpbGVkLiIgKTsKQEAgLTYzNiw3ICs2MzYsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZmllbGRzLnN1cmZhY2VfbmF0aXZlID0gZW52LT5HZXRGaWVsZElEKHN1cmZhY2UsICJtU3VyZmFjZSIsICJJIik7CisgICAgZmllbGRzLnN1cmZhY2VfbmF0aXZlID0gZW52LT5HZXRGaWVsZElEKHN1cmZhY2UsIEFORFJPSURfVklFV19TVVJGQUNFX0pOSV9JRCwgIkkiKTsKICAgICBpZiAoZmllbGRzLnN1cmZhY2VfbmF0aXZlID09IE5VTEwpIHsKICAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL1J1bnRpbWVFeGNlcHRpb24iLCAiQ2FuJ3QgZmluZCBTdXJmYWNlLm1TdXJmYWNlIik7CiAgICAgICAgIHJldHVybjsKQEAgLTcwNSw2ICs3MDUsMjcgQEAKICAgICByZXR1cm4gaXNTdXNwZW5kID8gbXAtPnN1c3BlbmQoKSA6IG1wLT5yZXN1bWUoKTsKIH0KIAorc3RhdGljIHZvaWQgYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllcl9zZXRfYXVkaW9fc2Vzc2lvbl9pZChKTklFbnYgKmVudiwgIGpvYmplY3QgdGhpeiwgamludCBzZXNzaW9uSWQpIHsKKyAgICBMT0dWKCJzZXRfc2Vzc2lvbl9pZCgpOiAlZCIsIHNlc3Npb25JZCk7CisgICAgc3A8TWVkaWFQbGF5ZXI+IG1wID0gZ2V0TWVkaWFQbGF5ZXIoZW52LCB0aGl6KTsKKyAgICBpZiAobXAgPT0gTlVMTCApIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsIE5VTEwpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHByb2Nlc3NfbWVkaWFfcGxheWVyX2NhbGwoIGVudiwgdGhpeiwgbXAtPnNldEF1ZGlvU2Vzc2lvbklkKHNlc3Npb25JZCksIE5VTEwsIE5VTEwgKTsKK30KKworc3RhdGljIGppbnQgYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllcl9nZXRfYXVkaW9fc2Vzc2lvbl9pZChKTklFbnYgKmVudiwgIGpvYmplY3QgdGhpeikgeworICAgIExPR1YoImdldF9zZXNzaW9uX2lkKCkiKTsKKyAgICBzcDxNZWRpYVBsYXllcj4gbXAgPSBnZXRNZWRpYVBsYXllcihlbnYsIHRoaXopOworICAgIGlmIChtcCA9PSBOVUxMICkgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwgTlVMTCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBtcC0+Z2V0QXVkaW9TZXNzaW9uSWQoKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGdNZXRob2RzW10gPSB7CkBAIC03MzgsNiArNzU5LDggQEAKICAgICB7Im5hdGl2ZV9maW5hbGl6ZSIsICAgICAiKClWIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXJfbmF0aXZlX2ZpbmFsaXplfSwKICAgICB7InNub29wIiwgICAgICAgICAgICAgICAiKFtTSSlJIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXJfc25vb3B9LAogICAgIHsibmF0aXZlX3N1c3BlbmRfcmVzdW1lIiwgIihaKUkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllcl9uYXRpdmVfc3VzcGVuZF9yZXN1bWV9LAorICAgIHsiZ2V0QXVkaW9TZXNzaW9uSWQiLCAgICIoKUkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllcl9nZXRfYXVkaW9fc2Vzc2lvbl9pZH0sCisgICAgeyJzZXRBdWRpb1Nlc3Npb25JZCIsICAgIihJKVYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUGxheWVyX3NldF9hdWRpb19zZXNzaW9uX2lkfSwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrQ2xhc3NQYXRoTmFtZSA9ICJhbmRyb2lkL21lZGlhL01lZGlhUGxheWVyIjsKZGlmZiAtLWdpdCBhL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXMuY3BwIGIvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlcy5jcHAKaW5kZXggN2Q3NTMzYS4uY2NlOWZkMCAxMDA2NDQKLS0tIGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlcy5jcHAKKysrIGIvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlcy5jcHAKQEAgLTE2MiwyNiArMTYyLDI2IEBACiB9CiAKIHN0YXRpYyBqb2JqZWN0Ci1hbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LCBqaW50IHF1YWxpdHkpCithbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LCBqaW50IGlkLCBqaW50IHF1YWxpdHkpCiB7Ci0gICAgTE9HVigibmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZTogJWQiLCBxdWFsaXR5KTsKKyAgICBMT0dWKCJuYXRpdmVfZ2V0X2NhbWNvcmRlcl9wcm9maWxlOiAlZCAlZCIsIGlkLCBxdWFsaXR5KTsKICAgICBpZiAocXVhbGl0eSAhPSBDQU1DT1JERVJfUVVBTElUWV9ISUdIICYmIHF1YWxpdHkgIT0gQ0FNQ09SREVSX1FVQUxJVFlfTE9XKSB7CiAgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9SdW50aW1lRXhjZXB0aW9uIiwgIlVua25vd24gY2FtY29yZGVyIHByb2ZpbGUgcXVhbGl0eSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBjYW1jb3JkZXJfcXVhbGl0eSBxID0gc3RhdGljX2Nhc3Q8Y2FtY29yZGVyX3F1YWxpdHk+KHF1YWxpdHkpOwotICAgIGludCBkdXJhdGlvbiAgICAgICAgID0gc1Byb2ZpbGVzLT5nZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoImR1cmF0aW9uIiwgcSk7Ci0gICAgaW50IGZpbGVGb3JtYXQgICAgICAgPSBzUHJvZmlsZXMtPmdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZSgiZmlsZS5mb3JtYXQiLCBxKTsKLSAgICBpbnQgdmlkZW9Db2RlYyAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuY29kZWMiLCAgIHEpOwotICAgIGludCB2aWRlb0JpdFJhdGUgICAgID0gc1Byb2ZpbGVzLT5nZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoInZpZC5icHMiLCAgICAgcSk7Ci0gICAgaW50IHZpZGVvRnJhbWVSYXRlICAgPSBzUHJvZmlsZXMtPmdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZSgidmlkLmZwcyIsICAgICBxKTsKLSAgICBpbnQgdmlkZW9GcmFtZVdpZHRoICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQud2lkdGgiLCAgIHEpOwotICAgIGludCB2aWRlb0ZyYW1lSGVpZ2h0ID0gc1Byb2ZpbGVzLT5nZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoInZpZC5oZWlnaHQiLCAgcSk7Ci0gICAgaW50IGF1ZGlvQ29kZWMgICAgICAgPSBzUHJvZmlsZXMtPmdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZSgiYXVkLmNvZGVjIiwgICBxKTsKLSAgICBpbnQgYXVkaW9CaXRSYXRlICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuYnBzIiwgICAgIHEpOwotICAgIGludCBhdWRpb1NhbXBsZVJhdGUgID0gc1Byb2ZpbGVzLT5nZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoImF1ZC5oeiIsICAgICAgcSk7Ci0gICAgaW50IGF1ZGlvQ2hhbm5lbHMgICAgPSBzUHJvZmlsZXMtPmdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZSgiYXVkLmNoIiwgICAgICBxKTsKKyAgICBpbnQgZHVyYXRpb24gICAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJkdXJhdGlvbiIsICAgIGlkLCBxKTsKKyAgICBpbnQgZmlsZUZvcm1hdCAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJmaWxlLmZvcm1hdCIsIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9Db2RlYyAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuY29kZWMiLCAgIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9CaXRSYXRlICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuYnBzIiwgICAgIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9GcmFtZVJhdGUgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuZnBzIiwgICAgIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9GcmFtZVdpZHRoICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQud2lkdGgiLCAgIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9GcmFtZUhlaWdodCA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuaGVpZ2h0IiwgIGlkLCBxKTsKKyAgICBpbnQgYXVkaW9Db2RlYyAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuY29kZWMiLCAgIGlkLCBxKTsKKyAgICBpbnQgYXVkaW9CaXRSYXRlICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuYnBzIiwgICAgIGlkLCBxKTsKKyAgICBpbnQgYXVkaW9TYW1wbGVSYXRlICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuaHoiLCAgICAgIGlkLCBxKTsKKyAgICBpbnQgYXVkaW9DaGFubmVscyAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuY2giLCAgICAgIGlkLCBxKTsKIAogICAgIC8vIENoZWNrIG9uIHRoZSB2YWx1ZXMgcmV0cmlldmVkCiAgICAgaWYgKGR1cmF0aW9uID09IC0xIHx8IGZpbGVGb3JtYXQgPT0gLTEgfHwgdmlkZW9Db2RlYyA9PSAtMSB8fCBhdWRpb0NvZGVjID09IC0xIHx8CkBAIC0yNTMsMTcgKzI1MywxNyBAQAogfQogCiBzdGF0aWMgamludAotYW5kcm9pZF9tZWRpYV9NZWRpYVByb2ZpbGVzX25hdGl2ZV9nZXRfbnVtX2ltYWdlX2VuY29kaW5nX3F1YWxpdHlfbGV2ZWxzKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCithbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHMoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwgamludCBjYW1lcmFJZCkKIHsKICAgICBMT0dWKCJuYXRpdmVfZ2V0X251bV9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVscyIpOwotICAgIHJldHVybiBzUHJvZmlsZXMtPmdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKCkuc2l6ZSgpOworICAgIHJldHVybiBzUHJvZmlsZXMtPmdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGNhbWVyYUlkKS5zaXplKCk7CiB9CiAKIHN0YXRpYyBqaW50Ci1hbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGppbnQgaW5kZXgpCithbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGppbnQgY2FtZXJhSWQsIGppbnQgaW5kZXgpCiB7CiAgICAgTE9HVigibmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsIik7Ci0gICAgVmVjdG9yPGludD4gbGV2ZWxzID0gc1Byb2ZpbGVzLT5nZXRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscygpOworICAgIFZlY3RvcjxpbnQ+IGxldmVscyA9IHNQcm9maWxlcy0+Z2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoY2FtZXJhSWQpOwogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbGV2ZWxzLnNpemUoKSkgewogICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiwgIm91dCBvZiBhcnJheSBib3VuZGFyeSIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0yODcsNyArMjg3LDcgQEAKIAogc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnTWV0aG9kc0ZvckNhbWNvcmRlclByb2ZpbGVDbGFzc1tdID0gewogICAgIHsibmF0aXZlX2luaXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKClWIiwgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9NZWRpYVByb2ZpbGVzX25hdGl2ZV9pbml0fSwKLSAgICB7Im5hdGl2ZV9nZXRfY2FtY29yZGVyX3Byb2ZpbGUiLCAgICAgICAgICAgIihJKUxhbmRyb2lkL21lZGlhL0NhbWNvcmRlclByb2ZpbGU7IiwKKyAgICB7Im5hdGl2ZV9nZXRfY2FtY29yZGVyX3Byb2ZpbGUiLCAgICAgICAgICAgIihJSSlMYW5kcm9pZC9tZWRpYS9DYW1jb3JkZXJQcm9maWxlOyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZX0sCiB9OwogCkBAIC0zMDIsOCArMzAyLDggQEAKIHN0YXRpYyBKTklOYXRpdmVNZXRob2QgZ01ldGhvZHNGb3JDYW1lcmFQcm9maWxlQ2xhc3NbXSA9IHsKICAgICB7Im5hdGl2ZV9pbml0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIigpViIsICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlc19uYXRpdmVfaW5pdH0sCiAgICAgeyJuYXRpdmVfZ2V0X251bV9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVscyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKUkiLCAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHN9LAotICAgIHsibmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsIiwiKEkpSSIsICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9NZWRpYVByb2ZpbGVzX25hdGl2ZV9nZXRfaW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoSSlJIiwgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHN9LAorICAgIHsibmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsIiwiKElJKUkiLCAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlc19uYXRpdmVfZ2V0X2ltYWdlX2VuY29kaW5nX3F1YWxpdHlfbGV2ZWx9LAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtFbmNvZGVyQ2FwYWJpbGl0aWVzQ2xhc3NQYXRoTmFtZSA9ICJhbmRyb2lkL21lZGlhL0VuY29kZXJDYXBhYmlsaXRpZXMiOwpkaWZmIC0tZ2l0IGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFSZWNvcmRlci5jcHAgYi9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVJlY29yZGVyLmNwcAppbmRleCAwMGFmM2EyLi5jMTEzZmZlIDEwMDY0NAotLS0gYS9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVJlY29yZGVyLmNwcApAQCAtMzE3LDggKzMxNyw4IEBACiAKICAgICBqb2JqZWN0IHN1cmZhY2UgPSBlbnYtPkdldE9iamVjdEZpZWxkKHRoaXosIGZpZWxkcy5zdXJmYWNlKTsKICAgICBpZiAoc3VyZmFjZSAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+JiBuYXRpdmVfc3VyZmFjZSA9IGdldF9zdXJmYWNlKGVudiwgc3VyZmFjZSk7Ci0gICAgICAgIExPR0koInByZXBhcmU6IHN1cmZhY2U9JXAgKGlkPSVkKSIsIG5hdGl2ZV9zdXJmYWNlLmdldCgpLCBuYXRpdmVfc3VyZmFjZS0+SUQoKSk7CisgICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+IG5hdGl2ZV9zdXJmYWNlID0gZ2V0X3N1cmZhY2UoZW52LCBzdXJmYWNlKTsKKyAgICAgICAgTE9HSSgicHJlcGFyZTogc3VyZmFjZT0lcCAoaWRlbnRpdHk9JWQpIiwgbmF0aXZlX3N1cmZhY2UuZ2V0KCksIG5hdGl2ZV9zdXJmYWNlLT5nZXRJZGVudGl0eSgpKTsKICAgICAgICAgaWYgKHByb2Nlc3NfbWVkaWFfcmVjb3JkZXJfY2FsbChlbnYsIG1yLT5zZXRQcmV2aWV3U3VyZmFjZShuYXRpdmVfc3VyZmFjZSksICJqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbiIsICJzZXRQcmV2aWV3U3VyZmFjZSBmYWlsZWQuIikpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDAzLDcgKzQwMyw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmaWVsZHMuc3VyZmFjZV9uYXRpdmUgPSBlbnYtPkdldEZpZWxkSUQoc3VyZmFjZSwgIm1TdXJmYWNlIiwgIkkiKTsKKyAgICBmaWVsZHMuc3VyZmFjZV9uYXRpdmUgPSBlbnYtPkdldEZpZWxkSUQoc3VyZmFjZSwgQU5EUk9JRF9WSUVXX1NVUkZBQ0VfSk5JX0lELCAiSSIpOwogICAgIGlmIChmaWVsZHMuc3VyZmFjZV9uYXRpdmUgPT0gTlVMTCkgewogICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbiIsICJDYW4ndCBmaW5kIFN1cmZhY2UubVN1cmZhY2UiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFTY2FubmVyLmNwcCBiL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX01lZGlhU2Nhbm5lci5jcHAKaW5kZXggMmFiMjQ0NS4uMjczZjFhZiAxMDA2NDQKLS0tIGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFTY2FubmVyLmNwcAorKysgYi9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVNjYW5uZXIuY3BwCkBAIC0zMSwxMyArMzEsNyBAQAogI2luY2x1ZGUgIkpOSUhlbHAuaCIKICNpbmNsdWRlICJhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaCIKIAotI2lmbmRlZiBOT19PUEVOQ09SRQotI2luY2x1ZGUgInB2bWVkaWFzY2FubmVyLmgiCi0jZW5kaWYKLQotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L1N0YWdlZnJpZ2h0TWVkaWFTY2FubmVyLmg+Ci0jZW5kaWYKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yODYsMjUgKzI4MCwxMCBAQAogICAgIH0KIH0KIAotc3RhdGljIE1lZGlhU2Nhbm5lciAqY3JlYXRlTWVkaWFTY2FubmVyKCkgewotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAotICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKLSAgICBpZiAocHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5lbmFibGUtc2NhbiIsIHZhbHVlLCBOVUxMKQotICAgICAgICAmJiAoIXN0cmNtcCh2YWx1ZSwgIjEiKSB8fCAhc3RyY2FzZWNtcCh2YWx1ZSwgInRydWUiKSkpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdGFnZWZyaWdodE1lZGlhU2Nhbm5lcjsKLSAgICB9Ci0jZW5kaWYKLSNpZm5kZWYgTk9fT1BFTkNPUkUKLSAgICByZXR1cm4gbmV3IFBWTWVkaWFTY2FubmVyKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBOVUxMOwotfQotCiBzdGF0aWMgdm9pZAogYW5kcm9pZF9tZWRpYV9NZWRpYVNjYW5uZXJfbmF0aXZlX3NldHVwKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCiB7Ci0gICAgTWVkaWFTY2FubmVyICptcCA9IGNyZWF0ZU1lZGlhU2Nhbm5lcigpOworICAgIE1lZGlhU2Nhbm5lciAqbXAgPSBuZXcgU3RhZ2VmcmlnaHRNZWRpYVNjYW5uZXI7CiAKICAgICBpZiAobXAgPT0gTlVMTCkgewogICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbiIsICJPdXQgb2YgbWVtb3J5Iik7CmRpZmYgLS1naXQgYS9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvQW5kcm9pZC5tayBiL21lZGlhL2puaS9hdWRpb2VmZmVjdC9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwM2I2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvQW5kcm9pZC5tawpAQCAtMCwwICsxLDE2IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSBcCisJYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdC5jcHAKKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCisJbGliY3V0aWxzIFwKKwlsaWJ1dGlscyBcCisJbGliYW5kcm9pZF9ydW50aW1lIFwKKwlsaWJuYXRpdmVoZWxwZXIgXAorCWxpYm1lZGlhCisKK0xPQ0FMX01PRFVMRTo9IGxpYmF1ZGlvZWZmZWN0X2puaQorCitpbmNsdWRlICQoQlVJTERfU0hBUkVEX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdC5jcHAgYi9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdmMmQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2puaS9hdWRpb2VmZmVjdC9hbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0LmNwcApAQCAtMCwwICsxLDg2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkF1ZGlvRWZmZWN0cy1KTkkiCisKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKyNpbmNsdWRlIDxuYXRpdmVoZWxwZXIvam5pLmg+CisjaW5jbHVkZSA8bmF0aXZlaGVscGVyL0pOSUhlbHAuaD4KKyNpbmNsdWRlIDxhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaD4KKyNpbmNsdWRlICJtZWRpYS9BdWRpb0VmZmVjdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKKworI2RlZmluZSBBVURJT0VGRkVDVF9TVUNDRVNTICAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgQVVESU9FRkZFQ1RfRVJST1IgICAgICAgICAgICAgICAgICAgICAgIC0xCisjZGVmaW5lIEFVRElPRUZGRUNUX0VSUk9SX0FMUkVBRFlfRVhJU1RTICAgICAgICAtMgorI2RlZmluZSBBVURJT0VGRkVDVF9FUlJPUl9OT19JTklUICAgICAgICAgICAgICAgLTMKKyNkZWZpbmUgQVVESU9FRkZFQ1RfRVJST1JfQkFEX1ZBTFVFICAgICAgICAgICAgIC00CisjZGVmaW5lIEFVRElPRUZGRUNUX0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OICAgICAtNQorI2RlZmluZSBBVURJT0VGRkVDVF9FUlJPUl9OT19NRU1PUlkgICAgICAgICAgICAgLTYKKyNkZWZpbmUgQVVESU9FRkZFQ1RfRVJST1JfREVBRF9PQkpFQ1QgICAgICAgICAgIC03CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrQ2xhc3NQYXRoTmFtZSA9ICJhbmRyb2lkL21lZGlhL0F1ZGlvRWZmZWN0IjsKKworc3RydWN0IGZpZWxkc190IHsKKyAgICAvLyB0aGVzZSBmaWVsZHMgcHJvdmlkZSBhY2Nlc3MgZnJvbSBDKysgdG8gdGhlLi4uCisgICAgamNsYXNzICAgIGNsYXp6RWZmZWN0OyAgICAgICAgICAvLyBBdWRpb0VmZmVjdCBjbGFzcworICAgIGptZXRob2RJRCBtaWRQb3N0TmF0aXZlRXZlbnQ7ICAgLy8gZXZlbnQgcG9zdCBjYWxsYmFjayBtZXRob2QKKyAgICBqZmllbGRJRCAgZmlkTmF0aXZlQXVkaW9FZmZlY3Q7IC8vIHN0b3JlcyBpbiBKYXZhIHRoZSBuYXRpdmUgQXVkaW9FZmZlY3Qgb2JqZWN0CisgICAgamZpZWxkSUQgIGZpZEpuaURhdGE7ICAgICAgICAgICAvLyBzdG9yZXMgaW4gSmF2YSBhZGRpdGlvbmFsIHJlc291cmNlcyB1c2VkIGJ5IHRoZSBuYXRpdmUgQXVkaW9FZmZlY3QKKyAgICBqY2xhc3MgICAgY2xhenpEZXNjOyAgICAgICAgICAgIC8vIEF1ZGlvRWZmZWN0LkRlc2NyaXB0b3IgY2xhc3MKKyAgICBqbWV0aG9kSUQgbWlkRGVzY0NzdG9yOyAgICAgICAgIC8vIEF1ZGlvRWZmZWN0LkRlc2NyaXB0b3IgY2xhc3MgY29uc3RydWN0b3IKK307CitzdGF0aWMgZmllbGRzX3QgZmllbGRzOworCitzdHJ1Y3QgZWZmZWN0X2NhbGxiYWNrX2Nvb2tpZSB7CisgICAgamNsYXNzICAgICAgYXVkaW9FZmZlY3RfY2xhc3M7ICAvLyBBdWRpb0VmZmVjdCBjbGFzcworICAgIGpvYmplY3QgICAgIGF1ZGlvRWZmZWN0X3JlZjsgICAgLy8gQXVkaW9FZmZlY3Qgb2JqZWN0IGluc3RhbmNlCisgfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2xhc3MgQXVkaW9FZmZlY3RKbmlTdG9yYWdlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVmZmVjdF9jYWxsYmFja19jb29raWUgbUNhbGxiYWNrRGF0YTsKKworICAgIEF1ZGlvRWZmZWN0Sm5pU3RvcmFnZSgpIHsKKyAgICB9CisKKyAgICB+QXVkaW9FZmZlY3RKbmlTdG9yYWdlKCkgeworICAgIH0KKworfTsKKworCitzdGF0aWMgamludCB0cmFuc2xhdGVFcnJvcihpbnQgY29kZSkgeworICAgIHN3aXRjaChjb2RlKSB7CisgICAgY2FzZSBOT19FUlJPUjoKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX1NVQ0NFU1M7CisgICAgY2FzZSBBTFJFQURZX0VYSVNUUzoKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX0VSUk9SX0FMUkVBRFlfRVhJU1RTOworICAgIGNhc2UgTk9fSU5JVDoKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX0VSUk9SX05PX0lOSVQ7CisgICAgY2FzZSBCQURfVkFMVUU6CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9CQURfVkFMVUU7CisgICAgY2FzZSBJTlZBTElEX09QRVJBVElPTjoKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OOworICAgIGNhc2UgTk9fTUVNT1JZOgorICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1JfTk9fTUVNT1JZOworICAgIGNhc2UgREVBRF9PQkpFQ1Q6CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9ERUFEX09CSkVDVDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1I7CisgICAgfQorfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0YXRpYyB2b2lkIGVmZmVjdENhbGxiYWNrKGludCBldmVudCwgdm9pZCogdXNlciwgdm9pZCAqaW5mbykgeworCisgICAgZWZmZWN0X3BhcmFtX3QgKnA7CisgICAgaW50IGFyZzEgPSAwOworICAgIGludCBhcmcyID0gMDsKKyAgICBqb2JqZWN0IG9iaiA9IE5VTEw7CisgICAgamJ5dGVBcnJheSBhcnJheSA9IE5VTEw7CisgICAgamJ5dGUgKmJ5dGVzOworICAgIGJvb2wgcGFyYW07CisgICAgc2l6ZV90IHNpemU7CisKKyAgICBlZmZlY3RfY2FsbGJhY2tfY29va2llICpjYWxsYmFja0luZm8gPSAoZWZmZWN0X2NhbGxiYWNrX2Nvb2tpZSAqKXVzZXI7CisgICAgSk5JRW52ICplbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisKKyAgICBMT0dWKCJlZmZlY3RDYWxsYmFjazogY2FsbGJhY2tJbmZvICVwLCBhdWRpb0VmZmVjdF9yZWYgJXAgYXVkaW9FZmZlY3RfY2xhc3MgJXAiLAorICAgICAgICAgICAgY2FsbGJhY2tJbmZvLAorICAgICAgICAgICAgY2FsbGJhY2tJbmZvLT5hdWRpb0VmZmVjdF9yZWYsCisgICAgICAgICAgICBjYWxsYmFja0luZm8tPmF1ZGlvRWZmZWN0X2NsYXNzKTsKKworICAgIGlmICghdXNlciB8fCAhZW52KSB7CisgICAgICAgIExPR1coImVmZmVjdENhbGxiYWNrIGVycm9yIHVzZXIgJXAsIGVudiAlcCIsIHVzZXIsIGVudik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGV2ZW50KSB7CisgICAgY2FzZSBBdWRpb0VmZmVjdDo6RVZFTlRfQ09OVFJPTF9TVEFUVVNfQ0hBTkdFRDoKKyAgICAgICAgaWYgKGluZm8gPT0gMCkgeworICAgICAgICAgICAgTE9HVygiRVZFTlRfQ09OVFJPTF9TVEFUVVNfQ0hBTkdFRCBpbmZvID09IE5VTEwiKTsKKyAgICAgICAgICAgIGdvdG8gZWZmZWN0Q2FsbGJhY2tfRXhpdDsKKyAgICAgICAgfQorICAgICAgICBwYXJhbSA9ICooYm9vbCAqKWluZm87CisgICAgICAgIGFyZzEgPSAoaW50KXBhcmFtOworICAgICAgICBMT0dWKCJFVkVOVF9DT05UUk9MX1NUQVRVU19DSEFOR0VEIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9FZmZlY3Q6OkVWRU5UX0VOQUJMRV9TVEFUVVNfQ0hBTkdFRDoKKyAgICAgICAgaWYgKGluZm8gPT0gMCkgeworICAgICAgICAgICAgTE9HVygiRVZFTlRfRU5BQkxFX1NUQVRVU19DSEFOR0VEIGluZm8gPT0gTlVMTCIpOworICAgICAgICAgICAgZ290byBlZmZlY3RDYWxsYmFja19FeGl0OworICAgICAgICB9CisgICAgICAgIHBhcmFtID0gKihib29sICopaW5mbzsKKyAgICAgICAgYXJnMSA9IChpbnQpcGFyYW07CisgICAgICAgIExPR1YoIkVWRU5UX0VOQUJMRV9TVEFUVVNfQ0hBTkdFRCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvRWZmZWN0OjpFVkVOVF9QQVJBTUVURVJfQ0hBTkdFRDoKKyAgICAgICAgaWYgKGluZm8gPT0gMCkgeworICAgICAgICAgICAgTE9HVygiRVZFTlRfUEFSQU1FVEVSX0NIQU5HRUQgaW5mbyA9PSBOVUxMIik7CisgICAgICAgICAgICBnb3RvIGVmZmVjdENhbGxiYWNrX0V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgcCA9IChlZmZlY3RfcGFyYW1fdCAqKWluZm87CisgICAgICAgIGlmIChwLT5wc2l6ZSA9PSAwIHx8IHAtPnZzaXplID09IDApIHsKKyAgICAgICAgICAgIGdvdG8gZWZmZWN0Q2FsbGJhY2tfRXhpdDsKKyAgICAgICAgfQorICAgICAgICAvLyBhcmcxIGNvbnRhaW5zIG9mZnNldCBvZiBwYXJhbWV0ZXIgdmFsdWUgZnJvbSBzdGFydCBvZiBieXRlIGFycmF5CisgICAgICAgIGFyZzEgPSBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgKChwLT5wc2l6ZSAtIDEpIC8gc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpOworICAgICAgICBzaXplID0gYXJnMSArIHAtPnZzaXplOworICAgICAgICBhcnJheSA9IGVudi0+TmV3Qnl0ZUFycmF5KHNpemUpOworICAgICAgICBpZiAoYXJyYXkgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HRSgiZWZmZWN0Q2FsbGJhY2s6IENvdWxkbid0IGFsbG9jYXRlIGJ5dGUgYXJyYXkgZm9yIHBhcmFtZXRlciBkYXRhIik7CisgICAgICAgICAgICBnb3RvIGVmZmVjdENhbGxiYWNrX0V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZXMgPSBlbnYtPkdldEJ5dGVBcnJheUVsZW1lbnRzKGFycmF5LCBOVUxMKTsKKyAgICAgICAgbWVtY3B5KGJ5dGVzLCBwLCBzaXplKTsKKyAgICAgICAgZW52LT5SZWxlYXNlQnl0ZUFycmF5RWxlbWVudHMoYXJyYXksIGJ5dGVzLCAwKTsKKyAgICAgICAgb2JqID0gYXJyYXk7CisgICAgICAgIExPR1YoIkVWRU5UX1BBUkFNRVRFUl9DSEFOR0VEIik7CisgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb0VmZmVjdDo6RVZFTlRfRVJST1I6CisgICAgICAgIExPR1coIkVWRU5UX0VSUk9SIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGVudi0+Q2FsbFN0YXRpY1ZvaWRNZXRob2QoCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXVkaW9FZmZlY3RfY2xhc3MsCisgICAgICAgIGZpZWxkcy5taWRQb3N0TmF0aXZlRXZlbnQsCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXVkaW9FZmZlY3RfcmVmLCBldmVudCwgYXJnMSwgYXJnMiwgb2JqKTsKKworZWZmZWN0Q2FsbGJhY2tfRXhpdDoKKyAgICBpZiAoYXJyYXkpIHsKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihhcnJheSk7CisgICAgfQorCisgICAgaWYgKGVudi0+RXhjZXB0aW9uQ2hlY2soKSkgeworICAgICAgICBlbnYtPkV4Y2VwdGlvbkRlc2NyaWJlKCk7CisgICAgICAgIGVudi0+RXhjZXB0aW9uQ2xlYXIoKTsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFRoaXMgZnVuY3Rpb24gZ2V0cyBzb21lIGZpZWxkIElEcywgd2hpY2ggaW4gdHVybiBjYXVzZXMgY2xhc3MgaW5pdGlhbGl6YXRpb24uCisvLyBJdCBpcyBjYWxsZWQgZnJvbSBhIHN0YXRpYyBibG9jayBpbiBBdWRpb0VmZmVjdCwgd2hpY2ggd29uJ3QgcnVuIHVudGlsIHRoZQorLy8gZmlyc3QgdGltZSBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHVzZWQuCitzdGF0aWMgdm9pZAorYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfaW5pdChKTklFbnYgKmVudikKK3sKKworICAgIExPR1YoImFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2luaXQiKTsKKworICAgIGZpZWxkcy5jbGF6ekVmZmVjdCA9IE5VTEw7CisgICAgZmllbGRzLmNsYXp6RGVzYyA9IE5VTEw7CisKKyAgICAvLyBHZXQgdGhlIEF1ZGlvRWZmZWN0IGNsYXNzCisgICAgamNsYXNzIGNsYXp6ID0gZW52LT5GaW5kQ2xhc3Moa0NsYXNzUGF0aE5hbWUpOworICAgIGlmIChjbGF6eiA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIkNhbid0IGZpbmQgJXMiLCBrQ2xhc3NQYXRoTmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmaWVsZHMuY2xhenpFZmZlY3QgPSAoamNsYXNzKWVudi0+TmV3R2xvYmFsUmVmKGNsYXp6KTsKKworICAgIC8vIEdldCB0aGUgcG9zdEV2ZW50IG1ldGhvZAorICAgIGZpZWxkcy5taWRQb3N0TmF0aXZlRXZlbnQgPSBlbnYtPkdldFN0YXRpY01ldGhvZElEKAorICAgICAgICAgICAgZmllbGRzLmNsYXp6RWZmZWN0LAorICAgICAgICAgICAgInBvc3RFdmVudEZyb21OYXRpdmUiLCAiKExqYXZhL2xhbmcvT2JqZWN0O0lJSUxqYXZhL2xhbmcvT2JqZWN0OylWIik7CisgICAgaWYgKGZpZWxkcy5taWRQb3N0TmF0aXZlRXZlbnQgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJDYW4ndCBmaW5kIEF1ZGlvRWZmZWN0LiVzIiwgInBvc3RFdmVudEZyb21OYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEdldCB0aGUgdmFyaWFibGVzIGZpZWxkcworICAgIC8vICAgICAgbmF0aXZlVHJhY2tJbkphdmFPYmoKKyAgICBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QgPSBlbnYtPkdldEZpZWxkSUQoCisgICAgICAgICAgICBmaWVsZHMuY2xhenpFZmZlY3QsCisgICAgICAgICAgICAibU5hdGl2ZUF1ZGlvRWZmZWN0IiwgIkkiKTsKKyAgICBpZiAoZmllbGRzLmZpZE5hdGl2ZUF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiQ2FuJ3QgZmluZCBBdWRpb0VmZmVjdC4lcyIsICJtTmF0aXZlQXVkaW9FZmZlY3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyAgICAgIGZpZEpuaURhdGE7CisgICAgZmllbGRzLmZpZEpuaURhdGEgPSBlbnYtPkdldEZpZWxkSUQoCisgICAgICAgICAgICBmaWVsZHMuY2xhenpFZmZlY3QsCisgICAgICAgICAgICAibUpuaURhdGEiLCAiSSIpOworICAgIGlmIChmaWVsZHMuZmlkSm5pRGF0YSA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIkNhbid0IGZpbmQgQXVkaW9FZmZlY3QuJXMiLCAibUpuaURhdGEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNsYXp6ID0gZW52LT5GaW5kQ2xhc3MoImFuZHJvaWQvbWVkaWEvQXVkaW9FZmZlY3QkRGVzY3JpcHRvciIpOworICAgIGlmIChjbGF6eiA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIkNhbid0IGZpbmQgYW5kcm9pZC9tZWRpYS9BdWRpb0VmZmVjdCREZXNjcmlwdG9yIGNsYXNzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZmllbGRzLmNsYXp6RGVzYyA9IChqY2xhc3MpZW52LT5OZXdHbG9iYWxSZWYoY2xhenopOworCisgICAgZmllbGRzLm1pZERlc2NDc3RvcgorICAgICAgICAgICAgPSBlbnYtPkdldE1ldGhvZElEKAorICAgICAgICAgICAgICAgICAgICBmaWVsZHMuY2xhenpEZXNjLAorICAgICAgICAgICAgICAgICAgICAiPGluaXQ+IiwKKyAgICAgICAgICAgICAgICAgICAgIihMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspViIpOworICAgIGlmIChmaWVsZHMubWlkRGVzY0NzdG9yID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiQ2FuJ3QgZmluZCBhbmRyb2lkL21lZGlhL0F1ZGlvRWZmZWN0JERlc2NyaXB0b3IgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworCitzdGF0aWMgamludAorYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfc2V0dXAoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwgam9iamVjdCB3ZWFrX3RoaXMsCisgICAgICAgIGpzdHJpbmcgdHlwZSwganN0cmluZyB1dWlkLCBqaW50IHByaW9yaXR5LCBqaW50IHNlc3Npb25JZCwgamludEFycmF5IGpJZCwgam9iamVjdEFycmF5IGphdmFkZXNjKQoreworICAgIExPR1YoImFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX3NldHVwIik7CisgICAgQXVkaW9FZmZlY3RKbmlTdG9yYWdlKiBscEpuaVN0b3JhZ2UgPSBOVUxMOworICAgIGludCBsU3RhdHVzID0gQVVESU9FRkZFQ1RfRVJST1JfTk9fTUVNT1JZOworICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gTlVMTDsKKyAgICBqaW50KiBuSWQgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnR5cGVTdHIgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnV1aWRTdHIgPSBOVUxMOworICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgZGVzYzsKKyAgICBqb2JqZWN0IGpkZXNjOworICAgIGNoYXIgc3RyW0VGRkVDVF9TVFJJTkdfTEVOX01BWF07CisgICAganN0cmluZyBqZGVzY1R5cGU7CisgICAganN0cmluZyBqZGVzY1V1aWQ7CisgICAganN0cmluZyBqZGVzY0Nvbm5lY3Q7CisgICAganN0cmluZyBqZGVzY05hbWU7CisgICAganN0cmluZyBqZGVzY0ltcGxlbWVudG9yOworCisgICAgaWYgKHR5cGUgIT0gTlVMTCkgeworICAgICAgICB0eXBlU3RyID0gZW52LT5HZXRTdHJpbmdVVEZDaGFycyh0eXBlLCBOVUxMKTsKKyAgICAgICAgaWYgKHR5cGVTdHIgPT0gTlVMTCkgeyAgLy8gT3V0IG9mIG1lbW9yeQorICAgICAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL1J1bnRpbWVFeGNlcHRpb24iLCAiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHV1aWQgIT0gTlVMTCkgeworICAgICAgICB1dWlkU3RyID0gZW52LT5HZXRTdHJpbmdVVEZDaGFycyh1dWlkLCBOVUxMKTsKKyAgICAgICAgaWYgKHV1aWRTdHIgPT0gTlVMTCkgeyAgLy8gT3V0IG9mIG1lbW9yeQorICAgICAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL1J1bnRpbWVFeGNlcHRpb24iLCAiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGVTdHIgPT0gTlVMTCAmJiB1dWlkU3RyID09IE5VTEwpIHsKKyAgICAgICAgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIGxwSm5pU3RvcmFnZSA9IG5ldyBBdWRpb0VmZmVjdEpuaVN0b3JhZ2UoKTsKKyAgICBpZiAobHBKbmlTdG9yYWdlID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgic2V0dXA6IEVycm9yIGNyZWF0aW5nIEpOSSBTdG9yYWdlIik7CisgICAgICAgIGdvdG8gc2V0dXBfZmFpbHVyZTsKKyAgICB9CisKKyAgICBscEpuaVN0b3JhZ2UtPm1DYWxsYmFja0RhdGEuYXVkaW9FZmZlY3RfY2xhc3MgPSAoamNsYXNzKWVudi0+TmV3R2xvYmFsUmVmKGZpZWxkcy5jbGF6ekVmZmVjdCk7CisgICAgLy8gd2UgdXNlIGEgd2VhayByZWZlcmVuY2Ugc28gdGhlIEF1ZGlvRWZmZWN0IG9iamVjdCBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuCisgICAgbHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhLmF1ZGlvRWZmZWN0X3JlZiA9IGVudi0+TmV3R2xvYmFsUmVmKHdlYWtfdGhpcyk7CisKKyAgICBMT0dWKCJzZXR1cDogbHBKbmlTdG9yYWdlOiAlcCBhdWRpb0VmZmVjdF9yZWYgJXAgYXVkaW9FZmZlY3RfY2xhc3MgJXAsICZtQ2FsbGJhY2tEYXRhICVwIiwKKyAgICAgICAgICAgIGxwSm5pU3RvcmFnZSwKKyAgICAgICAgICAgIGxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YS5hdWRpb0VmZmVjdF9yZWYsCisgICAgICAgICAgICBscEpuaVN0b3JhZ2UtPm1DYWxsYmFja0RhdGEuYXVkaW9FZmZlY3RfY2xhc3MsCisgICAgICAgICAgICAmbHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhKTsKKworICAgIGlmIChqSWQpIHsKKyAgICAgICAgbklkID0gKGppbnQgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpJZCwgTlVMTCk7CisgICAgICAgIGlmIChuSWQgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HRSgic2V0dXA6IEVycm9yIHJldHJpZXZpbmcgaWQgcG9pbnRlciIpOworICAgICAgICAgICAgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgICAgIGdvdG8gc2V0dXBfZmFpbHVyZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIExPR0UoInNldHVwOiBOVUxMIGphdmEgYXJyYXkgZm9yIGlkIHBvaW50ZXIiKTsKKyAgICAgICAgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIC8vIGNyZWF0ZSB0aGUgbmF0aXZlIEF1ZGlvRWZmZWN0IG9iamVjdAorICAgIGxwQXVkaW9FZmZlY3QgPSBuZXcgQXVkaW9FZmZlY3QodHlwZVN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWRTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdENhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uSWQpOworICAgIGlmIChscEF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiRXJyb3IgY3JlYXRpbmcgQXVkaW9FZmZlY3QiKTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIGxTdGF0dXMgPSB0cmFuc2xhdGVFcnJvcihscEF1ZGlvRWZmZWN0LT5pbml0Q2hlY2soKSk7CisgICAgaWYgKGxTdGF0dXMgIT0gQVVESU9FRkZFQ1RfU1VDQ0VTUyAmJiBsU3RhdHVzICE9IEFVRElPRUZGRUNUX0VSUk9SX0FMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgIExPR0UoIkF1ZGlvRWZmZWN0IGluaXRDaGVjayBmYWlsZWQgJWQiLCBsU3RhdHVzKTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIG5JZFswXSA9IGxwQXVkaW9FZmZlY3QtPmlkKCk7CisKKyAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpJZCwgbklkLCAwKTsKKyAgICBuSWQgPSBOVUxMOworCisgICAgaWYgKHR5cGVTdHIpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnModHlwZSwgdHlwZVN0cik7CisgICAgICAgIHR5cGVTdHIgPSBOVUxMOworICAgIH0KKworICAgIGlmICh1dWlkU3RyKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKHV1aWQsIHV1aWRTdHIpOworICAgICAgICB1dWlkU3RyID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyBnZXQgdGhlIGVmZmVjdCBkZXNjcmlwdG9yCisgICAgZGVzYyA9IGxwQXVkaW9FZmZlY3QtPmRlc2NyaXB0b3IoKTsKKworICAgIEF1ZGlvRWZmZWN0OjpndWlkVG9TdHJpbmcoJmRlc2MudHlwZSwgc3RyLCBFRkZFQ1RfU1RSSU5HX0xFTl9NQVgpOworICAgIGpkZXNjVHlwZSA9IGVudi0+TmV3U3RyaW5nVVRGKHN0cik7CisKKyAgICBBdWRpb0VmZmVjdDo6Z3VpZFRvU3RyaW5nKCZkZXNjLnV1aWQsIHN0ciwgRUZGRUNUX1NUUklOR19MRU5fTUFYKTsKKyAgICBqZGVzY1V1aWQgPSBlbnYtPk5ld1N0cmluZ1VURihzdHIpOworCisgICAgaWYgKChkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICBqZGVzY0Nvbm5lY3QgPSBlbnYtPk5ld1N0cmluZ1VURigiQXV4aWxpYXJ5Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgamRlc2NDb25uZWN0ID0gZW52LT5OZXdTdHJpbmdVVEYoIkluc2VydCIpOworICAgIH0KKworICAgIGpkZXNjTmFtZSA9IGVudi0+TmV3U3RyaW5nVVRGKGRlc2MubmFtZSk7CisgICAgamRlc2NJbXBsZW1lbnRvciA9IGVudi0+TmV3U3RyaW5nVVRGKGRlc2MuaW1wbGVtZW50b3IpOworCisgICAgamRlc2MgPSBlbnYtPk5ld09iamVjdChmaWVsZHMuY2xhenpEZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzLm1pZERlc2NDc3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjVXVpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjQ29ubmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjSW1wbGVtZW50b3IpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoamRlc2NUeXBlKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpkZXNjVXVpZCk7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihqZGVzY0Nvbm5lY3QpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoamRlc2NOYW1lKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpkZXNjSW1wbGVtZW50b3IpOworICAgIGlmIChqZGVzYyA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoImVudi0+TmV3T2JqZWN0KGZpZWxkcy5jbGF6ekRlc2MsIGZpZWxkcy5taWREZXNjQ3N0b3IpIik7CisgICAgICAgIGdvdG8gc2V0dXBfZmFpbHVyZTsKKyAgICB9CisKKyAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChqYXZhZGVzYywgMCwgamRlc2MpOworCisgICAgZW52LT5TZXRJbnRGaWVsZCh0aGl6LCBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QsIChpbnQpbHBBdWRpb0VmZmVjdCk7CisKKyAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGZpZWxkcy5maWRKbmlEYXRhLCAoaW50KWxwSm5pU3RvcmFnZSk7CisKKyAgICByZXR1cm4gQVVESU9FRkZFQ1RfU1VDQ0VTUzsKKworICAgIC8vIGZhaWx1cmVzOgorc2V0dXBfZmFpbHVyZToKKworICAgIGlmIChuSWQgIT0gTlVMTCkgeworICAgICAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpJZCwgbklkLCAwKTsKKyAgICB9CisKKyAgICBpZiAobHBBdWRpb0VmZmVjdCkgeworICAgICAgICBkZWxldGUgbHBBdWRpb0VmZmVjdDsKKyAgICB9CisgICAgZW52LT5TZXRJbnRGaWVsZCh0aGl6LCBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QsIDApOworCisgICAgaWYgKGxwSm5pU3RvcmFnZSkgeworICAgICAgICBkZWxldGUgbHBKbmlTdG9yYWdlOworICAgIH0KKyAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGZpZWxkcy5maWRKbmlEYXRhLCAwKTsKKworICAgIGlmICh1dWlkU3RyICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnModXVpZCwgdXVpZFN0cik7CisgICAgfQorCisgICAgaWYgKHR5cGVTdHIgIT0gTlVMTCkgeworICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyh0eXBlLCB0eXBlU3RyKTsKKyAgICB9CisKKyAgICByZXR1cm4gbFN0YXR1czsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdGF0aWMgdm9pZCBhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9maW5hbGl6ZShKTklFbnYgKmVudiwgIGpvYmplY3QgdGhpeikgeworICAgIExPR1YoImFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2ZpbmFsaXplIGpvYmplY3Q6ICV4XG4iLCAoaW50KXRoaXopOworCisgICAgLy8gZGVsZXRlIHRoZSBBdWRpb0VmZmVjdCBvYmplY3QKKyAgICBBdWRpb0VmZmVjdCogbHBBdWRpb0VmZmVjdCA9IChBdWRpb0VmZmVjdCAqKWVudi0+R2V0SW50RmllbGQoCisgICAgICAgIHRoaXosIGZpZWxkcy5maWROYXRpdmVBdWRpb0VmZmVjdCk7CisgICAgaWYgKGxwQXVkaW9FZmZlY3QpIHsKKyAgICAgICAgTE9HVigiZGVsZXRpbmcgQXVkaW9FZmZlY3Q6ICV4XG4iLCAoaW50KWxwQXVkaW9FZmZlY3QpOworICAgICAgICBkZWxldGUgbHBBdWRpb0VmZmVjdDsKKyAgICB9CisKKyAgICAvLyBkZWxldGUgdGhlIEpOSSBkYXRhCisgICAgQXVkaW9FZmZlY3RKbmlTdG9yYWdlKiBscEpuaVN0b3JhZ2UgPSAoQXVkaW9FZmZlY3RKbmlTdG9yYWdlICopZW52LT5HZXRJbnRGaWVsZCgKKyAgICAgICAgdGhpeiwgZmllbGRzLmZpZEpuaURhdGEpOworICAgIGlmIChscEpuaVN0b3JhZ2UpIHsKKyAgICAgICAgTE9HVigiZGVsZXRpbmcgcEpuaVN0b3JhZ2U6ICV4XG4iLCAoaW50KWxwSm5pU3RvcmFnZSk7CisgICAgICAgIGRlbGV0ZSBscEpuaVN0b3JhZ2U7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdGF0aWMgdm9pZCBhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9yZWxlYXNlKEpOSUVudiAqZW52LCAgam9iamVjdCB0aGl6KSB7CisKKyAgICAvLyBkbyBldmVyeXRoaW5nIGEgY2FsbCB0byBmaW5hbGl6ZSB3b3VsZAorICAgIGFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2ZpbmFsaXplKGVudiwgdGhpeik7CisgICAgLy8gKyByZXNldCB0aGUgbmF0aXZlIHJlc291cmNlcyBpbiB0aGUgSmF2YSBvYmplY3Qgc28gYW55IGF0dGVtcHQgdG8gYWNjZXNzCisgICAgLy8gdGhlbSBhZnRlciBhIGNhbGwgdG8gcmVsZWFzZSBmYWlscy4KKyAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGZpZWxkcy5maWROYXRpdmVBdWRpb0VmZmVjdCwgMCk7CisgICAgZW52LT5TZXRJbnRGaWVsZCh0aGl6LCBmaWVsZHMuZmlkSm5pRGF0YSwgMCk7Cit9CisKKworc3RhdGljIGppbnQKK2FuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2VuYWJsZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6KQoreworICAgIC8vIHJldHJpZXZlIHRoZSBBdWRpb0VmZmVjdCBvYmplY3QKKyAgICBBdWRpb0VmZmVjdCogbHBBdWRpb0VmZmVjdCA9IChBdWRpb0VmZmVjdCAqKWVudi0+R2V0SW50RmllbGQoCisgICAgICAgIHRoaXosIGZpZWxkcy5maWROYXRpdmVBdWRpb0VmZmVjdCk7CisKKyAgICBpZiAobHBBdWRpb0VmZmVjdCA9PSBOVUxMKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLAorICAgICAgICAgICAgIlVuYWJsZSB0byByZXRyaWV2ZSBBdWRpb0VmZmVjdCBwb2ludGVyIGZvciBlbmFibGUoKSIpOworICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1JfTk9fSU5JVDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJhbnNsYXRlRXJyb3IobHBBdWRpb0VmZmVjdC0+ZW5hYmxlKCkpOworfQorCisKK3N0YXRpYyBqaW50CithbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9kaXNhYmxlKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCit7CisgICAgLy8gcmV0cmlldmUgdGhlIEF1ZGlvRWZmZWN0IG9iamVjdAorICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gKEF1ZGlvRWZmZWN0ICopZW52LT5HZXRJbnRGaWVsZCgKKyAgICAgICAgdGhpeiwgZmllbGRzLmZpZE5hdGl2ZUF1ZGlvRWZmZWN0KTsKKworICAgIGlmIChscEF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIGRpc2FibGUoKSIpOworICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1JfTk9fSU5JVDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJhbnNsYXRlRXJyb3IobHBBdWRpb0VmZmVjdC0+ZGlzYWJsZSgpKTsKK30KKworCitzdGF0aWMgamJvb2xlYW4KK2FuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2dldEVuYWJsZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6KQoreworICAgIC8vIHJldHJpZXZlIHRoZSBBdWRpb0VmZmVjdCBvYmplY3QKKyAgICBBdWRpb0VmZmVjdCogbHBBdWRpb0VmZmVjdCA9IChBdWRpb0VmZmVjdCAqKWVudi0+R2V0SW50RmllbGQoCisgICAgICAgIHRoaXosIGZpZWxkcy5maWROYXRpdmVBdWRpb0VmZmVjdCk7CisKKyAgICBpZiAobHBBdWRpb0VmZmVjdCA9PSBOVUxMKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLAorICAgICAgICAgICAgIlVuYWJsZSB0byByZXRyaWV2ZSBBdWRpb0VmZmVjdCBwb2ludGVyIGZvciBnZXRFbmFibGVkKCkiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiAoamJvb2xlYW4pbHBBdWRpb0VmZmVjdC0+aXNFbmFibGVkKCk7Cit9CisKKworc3RhdGljIGpib29sZWFuCithbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9oYXNDb250cm9sKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCit7CisgICAgLy8gcmV0cmlldmUgdGhlIEF1ZGlvRWZmZWN0IG9iamVjdAorICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gKEF1ZGlvRWZmZWN0ICopZW52LT5HZXRJbnRGaWVsZCgKKyAgICAgICAgdGhpeiwgZmllbGRzLmZpZE5hdGl2ZUF1ZGlvRWZmZWN0KTsKKworICAgIGlmIChscEF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIGdldEVuYWJsZWQoKSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGxwQXVkaW9FZmZlY3QtPmluaXRDaGVjaygpID09IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBqaW50IGFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX3NldFBhcmFtZXRlcihKTklFbnYgKmVudiwKKyAgICAgICAgam9iamVjdCB0aGl6LCBpbnQgcHNpemUsIGpieXRlQXJyYXkgcEphdmFQYXJhbSwgaW50IHZzaXplLAorICAgICAgICBqYnl0ZUFycmF5IHBKYXZhVmFsdWUpIHsKKyAgICAvLyByZXRyaWV2ZSB0aGUgQXVkaW9FZmZlY3Qgb2JqZWN0CisgICAgamJ5dGUqIGxwVmFsdWUgPSBOVUxMOworICAgIGpieXRlKiBscFBhcmFtID0gTlVMTDsKKyAgICBqaW50IGxTdGF0dXMgPSBBVURJT0VGRkVDVF9FUlJPUl9CQURfVkFMVUU7CisgICAgZWZmZWN0X3BhcmFtX3QgKnA7CisgICAgaW50IHZvZmZzZXQ7CisKKyAgICBBdWRpb0VmZmVjdCogbHBBdWRpb0VmZmVjdCA9IChBdWRpb0VmZmVjdCAqKSBlbnYtPkdldEludEZpZWxkKHRoaXosCisgICAgICAgICAgICBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QpOworCisgICAgaWYgKGxwQXVkaW9FZmZlY3QgPT0gTlVMTCkgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIHNldFBhcmFtZXRlcigpIik7CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9OT19JTklUOworICAgIH0KKworICAgIGlmIChwc2l6ZSA9PSAwIHx8IHZzaXplID09IDAgfHwgcEphdmFQYXJhbSA9PSBOVUxMIHx8IHBKYXZhVmFsdWUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1JfQkFEX1ZBTFVFOworICAgIH0KKworICAgIC8vIGdldCB0aGUgcG9pbnRlciBmb3IgdGhlIHBhcmFtIGZyb20gdGhlIGphdmEgYXJyYXkKKyAgICBscFBhcmFtID0gKGpieXRlICopIGVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChwSmF2YVBhcmFtLCBOVUxMKTsKKyAgICBpZiAobHBQYXJhbSA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoInNldFBhcmFtZXRlcjogRXJyb3IgcmV0cmlldmluZyBwYXJhbSBwb2ludGVyIik7CisgICAgICAgIGdvdG8gc2V0UGFyYW1ldGVyX0V4aXQ7CisgICAgfQorCisgICAgLy8gZ2V0IHRoZSBwb2ludGVyIGZvciB0aGUgdmFsdWUgZnJvbSB0aGUgamF2YSBhcnJheQorICAgIGxwVmFsdWUgPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKHBKYXZhVmFsdWUsIE5VTEwpOworICAgIGlmIChscFZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgic2V0UGFyYW1ldGVyOiBFcnJvciByZXRyaWV2aW5nIHZhbHVlIHBvaW50ZXIiKTsKKyAgICAgICAgZ290byBzZXRQYXJhbWV0ZXJfRXhpdDsKKyAgICB9CisKKyAgICB2b2Zmc2V0ID0gKChwc2l6ZSAtIDEpIC8gc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpOworICAgIHAgPSAoZWZmZWN0X3BhcmFtX3QgKikgbWFsbG9jKHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyB2b2Zmc2V0ICsgdnNpemUpOworICAgIG1lbWNweShwLT5kYXRhLCBscFBhcmFtLCBwc2l6ZSk7CisgICAgcC0+cHNpemUgPSBwc2l6ZTsKKyAgICBtZW1jcHkocC0+ZGF0YSArIHZvZmZzZXQsIGxwVmFsdWUsIHBzaXplKTsKKyAgICBwLT52c2l6ZSA9IHZzaXplOworCisgICAgbFN0YXR1cyA9IGxwQXVkaW9FZmZlY3QtPnNldFBhcmFtZXRlcihwKTsKKyAgICBpZiAobFN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICBsU3RhdHVzID0gcC0+c3RhdHVzOworICAgIH0KKworICAgIGZyZWUocCk7CisKK3NldFBhcmFtZXRlcl9FeGl0OgorCisgICAgaWYgKGxwUGFyYW0gIT0gTlVMTCkgeworICAgICAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKHBKYXZhUGFyYW0sIGxwUGFyYW0sIDApOworICAgIH0KKyAgICBpZiAobHBWYWx1ZSAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwocEphdmFWYWx1ZSwgbHBWYWx1ZSwgMCk7CisgICAgfQorICAgIHJldHVybiB0cmFuc2xhdGVFcnJvcihsU3RhdHVzKTsKK30KKworc3RhdGljIGppbnQKK2FuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2dldFBhcmFtZXRlcihKTklFbnYgKmVudiwKKyAgICAgICAgam9iamVjdCB0aGl6LCBpbnQgcHNpemUsIGpieXRlQXJyYXkgcEphdmFQYXJhbSwKKyAgICAgICAgamludEFycmF5IHBKYXZhVmFsdWVTaXplLCBqYnl0ZUFycmF5IHBKYXZhVmFsdWUpIHsKKyAgICAvLyByZXRyaWV2ZSB0aGUgQXVkaW9FZmZlY3Qgb2JqZWN0CisgICAgamJ5dGUqIGxwUGFyYW0gPSBOVUxMOworICAgIGpieXRlKiBscFZhbHVlID0gTlVMTDsKKyAgICBqYnl0ZSogbHBWYWx1ZVNpemUgPSBOVUxMOworICAgIGppbnQgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKyAgICBlZmZlY3RfcGFyYW1fdCAqcDsKKyAgICBpbnQgdm9mZnNldDsKKworICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gKEF1ZGlvRWZmZWN0ICopIGVudi0+R2V0SW50RmllbGQodGhpeiwKKyAgICAgICAgICAgIGZpZWxkcy5maWROYXRpdmVBdWRpb0VmZmVjdCk7CisKKyAgICBpZiAobHBBdWRpb0VmZmVjdCA9PSBOVUxMKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICJVbmFibGUgdG8gcmV0cmlldmUgQXVkaW9FZmZlY3QgcG9pbnRlciBmb3IgZ2V0UGFyYW1ldGVyKCkiKTsKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX0VSUk9SX05PX0lOSVQ7CisgICAgfQorCisgICAgaWYgKHBzaXplID09IDAgfHwgcEphdmFWYWx1ZVNpemUgPT0gTlVMTCB8fCBwSmF2YVBhcmFtID09IE5VTEwgfHwgcEphdmFWYWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9CQURfVkFMVUU7CisgICAgfQorCisgICAgLy8gZ2V0IHRoZSBwb2ludGVyIGZvciB0aGUgcGFyYW0gZnJvbSB0aGUgamF2YSBhcnJheQorICAgIGxwUGFyYW0gPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKHBKYXZhUGFyYW0sIE5VTEwpOworICAgIGlmIChscFBhcmFtID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiZ2V0UGFyYW1ldGVyOiBFcnJvciByZXRyaWV2aW5nIHBhcmFtIHBvaW50ZXIiKTsKKyAgICAgICAgZ290byBnZXRQYXJhbWV0ZXJfRXhpdDsKKyAgICB9CisKKyAgICAvLyBnZXQgdGhlIHBvaW50ZXIgZm9yIHRoZSB2YWx1ZSBmcm9tIHRoZSBqYXZhIGFycmF5CisgICAgbHBWYWx1ZSA9IChqYnl0ZSAqKSBlbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwocEphdmFWYWx1ZSwgTlVMTCk7CisgICAgaWYgKGxwVmFsdWUgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJnZXRQYXJhbWV0ZXI6IEVycm9yIHJldHJpZXZpbmcgdmFsdWUgcG9pbnRlciIpOworICAgICAgICBnb3RvIGdldFBhcmFtZXRlcl9FeGl0OworICAgIH0KKworICAgIC8vIGdldCB0aGUgcG9pbnRlciBmb3IgdGhlIHZhbHVlIHNpemUgZnJvbSB0aGUgamF2YSBhcnJheQorICAgIGxwVmFsdWVTaXplID0gKGpieXRlICopIGVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChwSmF2YVZhbHVlU2l6ZSwgTlVMTCk7CisgICAgaWYgKGxwVmFsdWVTaXplID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiZ2V0UGFyYW1ldGVyOiBFcnJvciByZXRyaWV2aW5nIHZhbHVlIHNpemUgcG9pbnRlciIpOworICAgICAgICBnb3RvIGdldFBhcmFtZXRlcl9FeGl0OworICAgIH0KKworICAgIHZvZmZzZXQgPSAoKHBzaXplIC0gMSkgLyBzaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCk7CisgICAgcCA9IChlZmZlY3RfcGFyYW1fdCAqKSBtYWxsb2Moc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHZvZmZzZXQKKyAgICAgICAgICAgICsgbHBWYWx1ZVNpemVbMF0pOworICAgIG1lbWNweShwLT5kYXRhLCBscFBhcmFtLCBwc2l6ZSk7CisgICAgcC0+cHNpemUgPSBwc2l6ZTsKKyAgICBwLT52c2l6ZSA9IGxwVmFsdWVTaXplWzBdOworCisgICAgbFN0YXR1cyA9IGxwQXVkaW9FZmZlY3QtPmdldFBhcmFtZXRlcihwKTsKKyAgICBpZiAobFN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICBsU3RhdHVzID0gcC0+c3RhdHVzOworICAgICAgICBpZiAobFN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgbWVtY3B5KGxwVmFsdWUsIHAtPmRhdGEgKyB2b2Zmc2V0LCBwLT52c2l6ZSk7CisgICAgICAgICAgICBscFZhbHVlU2l6ZVswXSA9IHAtPnZzaXplOworICAgICAgICB9CisgICAgfQorCisgICAgZnJlZShwKTsKKworZ2V0UGFyYW1ldGVyX0V4aXQ6CisKKyAgICBpZiAobHBQYXJhbSAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwocEphdmFQYXJhbSwgbHBQYXJhbSwgMCk7CisgICAgfQorICAgIGlmIChscFZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChwSmF2YVZhbHVlLCBscFZhbHVlLCAwKTsKKyAgICB9CisgICAgaWYgKGxwVmFsdWVTaXplICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChwSmF2YVZhbHVlU2l6ZSwgbHBWYWx1ZVNpemUsIDApOworICAgIH0KKworICAgIHJldHVybiB0cmFuc2xhdGVFcnJvcihsU3RhdHVzKTsKK30KKworc3RhdGljIGppbnQgYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfY29tbWFuZChKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LAorICAgICAgICBqaW50IGNtZENvZGUsIGppbnQgY21kU2l6ZSwgamJ5dGVBcnJheSBqQ21kRGF0YSwgamludEFycmF5IGpSZXBseVNpemUsCisgICAgICAgIGpieXRlQXJyYXkgalJlcGx5RGF0YSkgeworICAgIGpieXRlKiBwQ21kRGF0YSA9IE5VTEw7CisgICAgamJ5dGUqIHBSZXBseURhdGEgPSBOVUxMOworICAgIGppbnQqIHBSZXBseVNpemUgPSBOVUxMOworICAgIGppbnQgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKworICAgIC8vIHJldHJpZXZlIHRoZSBBdWRpb0VmZmVjdCBvYmplY3QKKyAgICBBdWRpb0VmZmVjdCogbHBBdWRpb0VmZmVjdCA9IChBdWRpb0VmZmVjdCAqKSBlbnYtPkdldEludEZpZWxkKHRoaXosCisgICAgICAgICAgICBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QpOworCisgICAgaWYgKGxwQXVkaW9FZmZlY3QgPT0gTlVMTCkgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIHNldFBhcmFtZXRlcigpIik7CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9OT19JTklUOworICAgIH0KKworICAgIGlmICgoY21kU2l6ZSAhPSAwICYmIGpDbWREYXRhID09IE5VTEwpIHx8IChqUmVwbHlTaXplICE9IE5VTEwgJiYgalJlcGx5RGF0YSA9PSBOVUxMKSkgeworICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1JfQkFEX1ZBTFVFOworICAgIH0KKworICAgIC8vIGdldCB0aGUgcG9pbnRlciBmb3IgdGhlIGNvbW1hbmQgZnJvbSB0aGUgamF2YSBhcnJheQorICAgIGlmIChjbWRTaXplICE9IDApIHsKKyAgICAgICAgcENtZERhdGEgPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpDbWREYXRhLCBOVUxMKTsKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIExPR0UoInNldFBhcmFtZXRlcjogRXJyb3IgcmV0cmlldmluZyBjb21tYW5kIHBvaW50ZXIiKTsKKyAgICAgICAgICAgIGdvdG8gY29tbWFuZF9FeGl0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZ2V0IHRoZSBwb2ludGVyIGZvciB0aGUgcmVwbHkgc2l6ZSBmcm9tIHRoZSBqYXZhIGFycmF5CisgICAgaWYgKGpSZXBseVNpemUgIT0gTlVMTCkgeworICAgICAgICBwUmVwbHlTaXplID0gKGppbnQgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpSZXBseVNpemUsIE5VTEwpOworICAgICAgICBpZiAocFJlcGx5U2l6ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dFKCJzZXRQYXJhbWV0ZXI6IEVycm9yIHJldHJpZXZpbmcgcmVwbHkgcG9pbnRlciIpOworICAgICAgICAgICAgZ290byBjb21tYW5kX0V4aXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBnZXQgdGhlIHBvaW50ZXIgZm9yIHRoZSByZXBseSBmcm9tIHRoZSBqYXZhIGFycmF5CisgICAgaWYgKHBSZXBseVNpemUgIT0gTlVMTCAmJiBwUmVwbHlTaXplWzBdICE9IDAgJiYgalJlcGx5RGF0YSAhPSBOVUxMKSB7CisgICAgICAgIHBSZXBseURhdGEgPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpSZXBseURhdGEsIE5VTEwpOworICAgICAgICBpZiAocFJlcGx5RGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dFKCJzZXRQYXJhbWV0ZXI6IEVycm9yIHJldHJpZXZpbmcgcmVwbHkgcG9pbnRlciIpOworICAgICAgICAgICAgZ290byBjb21tYW5kX0V4aXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsU3RhdHVzID0gdHJhbnNsYXRlRXJyb3IobHBBdWRpb0VmZmVjdC0+Y29tbWFuZChjbWRDb2RlLCBjbWRTaXplLCBwQ21kRGF0YSwKKyAgICAgICAgICAgIHBSZXBseVNpemUsIHBSZXBseURhdGEpKTsKKworY29tbWFuZF9FeGl0OgorCisgICAgaWYgKHBDbWREYXRhICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChqQ21kRGF0YSwgcENtZERhdGEsIDApOworICAgIH0KKyAgICBpZiAocFJlcGx5RGF0YSAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoalJlcGx5RGF0YSwgcFJlcGx5RGF0YSwgMCk7CisgICAgfQorICAgIGlmIChwUmVwbHlTaXplICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChqUmVwbHlTaXplLCBwUmVwbHlTaXplLCAwKTsKKyAgICB9CisKKyAgICByZXR1cm4gbFN0YXR1czsKK30KKworc3RhdGljIGpvYmplY3RBcnJheQorYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfcXVlcnlFZmZlY3RzKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenopCit7CisgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkZXNjOworICAgIGNoYXIgc3RyW0VGRkVDVF9TVFJJTkdfTEVOX01BWF07CisgICAgdWludDMyX3QgbnVtRWZmZWN0czsKKyAgICB1aW50MzJfdCBpID0gMDsKKyAgICBqc3RyaW5nIGpkZXNjVHlwZTsKKyAgICBqc3RyaW5nIGpkZXNjVXVpZDsKKyAgICBqc3RyaW5nIGpkZXNjQ29ubmVjdDsKKyAgICBqc3RyaW5nIGpkZXNjTmFtZTsKKyAgICBqc3RyaW5nIGpkZXNjSW1wbGVtZW50b3I7CisgICAgam9iamVjdCBqZGVzYzsKKworICAgIEF1ZGlvRWZmZWN0OjpxdWVyeU51bWJlckVmZmVjdHMoJm51bUVmZmVjdHMpOworICAgIGpvYmplY3RBcnJheSByZXQgPSBlbnYtPk5ld09iamVjdEFycmF5KG51bUVmZmVjdHMsIGZpZWxkcy5jbGF6ekRlc2MsIE5VTEwpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIExPR1YoInF1ZXJ5RWZmZWN0cygpIG51bUVmZmVjdHM6ICVkIiwgbnVtRWZmZWN0cyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRWZmZWN0czsgaSsrKSB7CisgICAgICAgIGlmIChBdWRpb0VmZmVjdDo6cXVlcnlFZmZlY3QoaSwgJmRlc2MpICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICBnb3RvIHF1ZXJ5RWZmZWN0c19mYWlsdXJlOworICAgICAgICB9CisKKyAgICAgICAgQXVkaW9FZmZlY3Q6Omd1aWRUb1N0cmluZygmZGVzYy50eXBlLCBzdHIsIEVGRkVDVF9TVFJJTkdfTEVOX01BWCk7CisgICAgICAgIGpkZXNjVHlwZSA9IGVudi0+TmV3U3RyaW5nVVRGKHN0cik7CisKKyAgICAgICAgQXVkaW9FZmZlY3Q6Omd1aWRUb1N0cmluZygmZGVzYy51dWlkLCBzdHIsIEVGRkVDVF9TVFJJTkdfTEVOX01BWCk7CisgICAgICAgIGpkZXNjVXVpZCA9IGVudi0+TmV3U3RyaW5nVVRGKHN0cik7CisKKyAgICAgICAgaWYgKChkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgamRlc2NDb25uZWN0ID0gZW52LT5OZXdTdHJpbmdVVEYoIkF1eGlsaWFyeSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgamRlc2NDb25uZWN0ID0gZW52LT5OZXdTdHJpbmdVVEYoIkluc2VydCIpOworICAgICAgICB9CisKKyAgICAgICAgamRlc2NOYW1lID0gZW52LT5OZXdTdHJpbmdVVEYoZGVzYy5uYW1lKTsKKyAgICAgICAgamRlc2NJbXBsZW1lbnRvciA9IGVudi0+TmV3U3RyaW5nVVRGKGRlc2MuaW1wbGVtZW50b3IpOworCisgICAgICAgIGpkZXNjID0gZW52LT5OZXdPYmplY3QoZmllbGRzLmNsYXp6RGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHMubWlkRGVzY0NzdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZGVzY1V1aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamRlc2NDb25uZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZGVzY0ltcGxlbWVudG9yKTsKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihqZGVzY1R5cGUpOworICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpkZXNjVXVpZCk7CisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoamRlc2NDb25uZWN0KTsKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihqZGVzY05hbWUpOworICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpkZXNjSW1wbGVtZW50b3IpOworICAgICAgICBpZiAoamRlc2MgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HRSgiZW52LT5OZXdPYmplY3QoZmllbGRzLmNsYXp6RGVzYywgZmllbGRzLm1pZERlc2NDc3RvcikiKTsKKyAgICAgICAgICAgIGdvdG8gcXVlcnlFZmZlY3RzX2ZhaWx1cmU7CisgICAgICAgIH0KKworICAgICAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChyZXQsIGksIGpkZXNjKTsKKyAgIH0KKworICAgIHJldHVybiByZXQ7CisKK3F1ZXJ5RWZmZWN0c19mYWlsdXJlOgorCisgICAgaWYgKHJldCAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocmV0KTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBEYWx2aWsgVk0gdHlwZSBzaWduYXR1cmVzCitzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGdNZXRob2RzW10gPSB7CisgICAgeyJuYXRpdmVfaW5pdCIsICAgICAgICAgICIoKVYiLCAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfaW5pdH0sCisgICAgeyJuYXRpdmVfc2V0dXAiLCAgICAgICAgICIoTGphdmEvbGFuZy9PYmplY3Q7TGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7SUlbSVtMamF2YS9sYW5nL09iamVjdDspSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfc2V0dXB9LAorICAgIHsibmF0aXZlX2ZpbmFsaXplIiwgICAgICAiKClWIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2ZpbmFsaXplfSwKKyAgICB7Im5hdGl2ZV9yZWxlYXNlIiwgICAgICAgIigpViIsICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9yZWxlYXNlfSwKKyAgICB7Im5hdGl2ZV9lbmFibGUiLCAgICAgICAgIigpSSIsICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9lbmFibGV9LAorICAgIHsibmF0aXZlX2Rpc2FibGUiLCAgICAgICAiKClJIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2Rpc2FibGV9LAorICAgIHsibmF0aXZlX2dldEVuYWJsZSIsICAgICAiKClaIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2dldEVuYWJsZX0sCisgICAgeyJuYXRpdmVfaGFzQ29udHJvbCIsICAgICIoKVoiLCAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfaGFzQ29udHJvbH0sCisgICAgeyJuYXRpdmVfc2V0UGFyYW1ldGVyIiwgICIoSVtCSVtCKUkiLCAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9zZXRQYXJhbWV0ZXJ9LAorICAgIHsibmF0aXZlX2dldFBhcmFtZXRlciIsICAiKElbQltJW0IpSSIsICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2dldFBhcmFtZXRlcn0sCisgICAgeyJuYXRpdmVfY29tbWFuZCIsICAgICAgICIoSUlbQltJW0IpSSIsICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfY29tbWFuZH0sCisgICAgeyJuYXRpdmVfcXVlcnlfZWZmZWN0cyIsICIoKVtMamF2YS9sYW5nL09iamVjdDsiLCAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX3F1ZXJ5RWZmZWN0c30sCit9OworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IHJlZ2lzdGVyX2FuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3QoSk5JRW52ICplbnYpCit7CisgICAgcmV0dXJuIEFuZHJvaWRSdW50aW1lOjpyZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LCBrQ2xhc3NQYXRoTmFtZSwgZ01ldGhvZHMsIE5FTEVNKGdNZXRob2RzKSk7Cit9CisKK2ppbnQgSk5JX09uTG9hZChKYXZhVk0qIHZtLCB2b2lkKiByZXNlcnZlZCkKK3sKKworICAgIEpOSUVudiogZW52ID0gTlVMTDsKKyAgICBqaW50IHJlc3VsdCA9IC0xOworCisgICAgaWYgKHZtLT5HZXRFbnYoKHZvaWQqKikgJmVudiwgSk5JX1ZFUlNJT05fMV80KSAhPSBKTklfT0spIHsKKyAgICAgICAgTE9HRSgiRVJST1I6IEdldEVudiBmYWlsZWRcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGFzc2VydChlbnYgIT0gTlVMTCk7CisKKyAgICBpZiAocmVnaXN0ZXJfYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdChlbnYpIDwgMCkgeworICAgICAgICBMT0dFKCJFUlJPUjogQXVkaW9FZmZlY3QgbmF0aXZlIHJlZ2lzdHJhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgLyogc3VjY2VzcyAtLSByZXR1cm4gdmFsaWQgdmVyc2lvbiBudW1iZXIgKi8KKyAgICByZXN1bHQgPSBKTklfVkVSU0lPTl8xXzQ7CisKK2JhaWw6CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvQW5kcm9pZC5tayBiL21lZGlhL2xpYmRybS9tb2JpbGUyL0FuZHJvaWQubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxODcxMzkuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvQW5kcm9pZC5taworKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUxPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBGaXJzdCBwcm9qZWN0Ci0jIAotIyBCdWlsZCBEUk0yIGNvcmUgbGlicmFyeQotIwotIyBPdXRwdXQ6IGxpYmRybTIuc28KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1pbmNsdWRlICQoQ0xFQVJfVkFSUykKLQotY29tbW9uX1NSQ19GSUxFUyA6PSBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvYmt0cmFjZS5jcHAgXAotICAgIHNyYy91dGlsL3VzdGwtMS4wL21lbWJsb2NrLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvb2ZzdHJlYW0uY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC91YWxnb2Jhc2UuY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC91bmV3LmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvY21lbWxpbmsuY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC9tZW1saW5rLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvc2lzdHJlYW0uY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC91Yml0c2V0LmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvdXN0ZHhlcHQuY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC9mc3RyZWFtLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvbWlzdHJlYW0uY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC9zb3N0cmVhbS5jcHAgXAotICAgIHNyYy91dGlsL3VzdGwtMS4wL3VleGNlcHRpb24uY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC91c3RyaW5nLmNwcCBcCi0gICAgc3JjL3V0aWwveG1sL0RvbUV4cGF0QWdlbnQuY3BwIFwKLSAgICBzcmMvdXRpbC94bWwvRXhwYXRXcmFwcGVyLmNwcCBcCi0gICAgc3JjL3V0aWwveG1sL1hNTERvY3VtZW50SW1wbC5jcHAgXAotICAgIHNyYy91dGlsL3htbC9YTUxFbGVtZW50SW1wbC5jcHAgXAotICAgIHNyYy91dGlsL2RvbWNvcmUvQ2hhcmFjdGVyRGF0YUltcGwuY3BwIFwKLSAgICBzcmMvdXRpbC9kb21jb3JlL0VsZW1lbnRJbXBsLmNwcCBcCi0gICAgc3JjL3V0aWwvZG9tY29yZS9Ob2RlTGlzdEltcGwuY3BwIFwKLSAgICBzcmMvdXRpbC9kb21jb3JlL0RvY3VtZW50SW1wbC5jcHAgXAotICAgIHNyYy91dGlsL2RvbWNvcmUvTm9kZUltcGwuY3BwIFwKLSAgICBzcmMvdXRpbC9kb21jb3JlL1RleHRJbXBsLmNwcCBcCi0gICAgc3JjL3V0aWwvZG9tY29yZS9ET01FeGNlcHRpb24uY3BwIFwKLSAgICBzcmMvdXRpbC9kb21jb3JlL05vZGVJdGVyYXRvci5jcHAgXAotICAgIHNyYy91dGlsL2NyeXB0by9Ecm1DcnlwdG8uY3BwIFwKLSAgICBzcmMvcmlnaHRzL1JvTWFuYWdlci5jcHAgXAotICAgIHNyYy9yaWdodHMvQXNzZXQuY3BwIFwKLSAgICBzcmMvcmlnaHRzL1JvLmNwcCBcCi0gICAgc3JjL3JpZ2h0cy9PcGVyYXRpb25QZXJtaXNzaW9uLmNwcCBcCi0gICAgc3JjL3JpZ2h0cy9SaWdodC5jcHAgXAotICAgIHNyYy9yaWdodHMvQ29uc3RyYWludC5jcHAgXAotICAgIHNyYy9kcm1tYW5hZ2VyL0RybU1hbmFnZXIuY3BwIFwKLSAgICBzcmMvZGNmL0RybURjZkNvbW1vbi5jcHAgXAotICAgIHNyYy9kY2YvRHJtRGNmQ29udGFpbmVyLmNwcCBcCi0gICAgc3JjL2RjZi9Ecm1JU3RyZWFtLmNwcCBcCi0gICAgc3JjL2RjZi9Ecm1SYXdDb250ZW50LmNwcCBcCi0gICAgc3JjL3JvYXAvUm9hcE1lc3NhZ2VIYW5kbGVyLmNwcCBcCi0gICAgc3JjL3JvYXAvUmVnaXN0cmF0aW9uLmNwcAotCi1pZmVxICgkKFRBUkdFVF9BUkNIKSxhcm0pCi0JTE9DQUxfQ0ZMQUdTICs9IC1mc3RyaWN0LWFsaWFzaW5nIC1mb21pdC1mcmFtZS1wb2ludGVyCi1lbmRpZgotCi1jb21tb25fQ0ZMQUdTIDo9IC1XIC1nIC1EUExBVEZPUk1fQU5EUk9JRAotCi1jb21tb25fQ19JTkNMVURFUyArPVwKLSAgICAkKExPQ0FMX1BBVEgpL2luY2x1ZGUgXAotICAgICQoTE9DQUxfUEFUSCkvc3JjL3V0aWwvdXN0bC0xLjAgXAotICAgIGV4dGVybmFsL2V4cGF0L2xpYiBcCi0gICAgZXh0ZXJuYWwvb3BlbnNzbCAgICBcCi0gICAgZXh0ZXJuYWwvb3BlbnNzbC9pbmNsdWRlCi0KLUxPQ0FMX1NSQ19GSUxFUyA6PSAkKGNvbW1vbl9TUkNfRklMRVMpCi1MT0NBTF9DRkxBR1MgKz0gJChjb21tb25fQ0ZMQUdTKQotTE9DQUxfQ19JTkNMVURFUyArPSAkKGNvbW1vbl9DX0lOQ0xVREVTKQotCi1MT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IGxpYmV4cGF0IGxpYmNyeXB0bwotTE9DQUxfTU9EVUxFIDo9IGxpYmRybTIgCi0KLWlmZXEgKCQoVEFSR0VUX09TKS0kKFRBUkdFVF9BUkNIKSxsaW51eC14ODYpCi1MT0NBTF9DRkxBR1MgKz0gLURVU1RMX0FORFJPSURfWDg2Ci1lbmRpZgotCi1pbmNsdWRlICQoQlVJTERfU1RBVElDX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL0RybTJDb21tb25UeXBlcy5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9Ecm0yQ29tbW9uVHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFkM2E3MzEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9Ecm0yQ29tbW9uVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfRFJNMkNPTU1PTlRZUEVTX0hfCi0jZGVmaW5lIF9EUk0yQ09NTU9OVFlQRVNfSF8KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotI2lmZGVmIERSTTJfVVQKLSNkZWZpbmUgUFJPVEVDVEVEIHB1YmxpYwotI2RlZmluZSBQUklWQVRFIHB1YmxpYwotI2Vsc2UKLSNkZWZpbmUgUFJPVEVDVEVEIHByb3RlY3RlZAotI2RlZmluZSBQUklWQVRFIHByaXZhdGUKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybURjZkNvbW1vbi5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9kY2YvRHJtRGNmQ29tbW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYTdiM2YuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9kY2YvRHJtRGNmQ29tbW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpZm5kZWYgX19EQ0ZfQ09NTV9IX18KLSNkZWZpbmUgX19EQ0ZfQ09NTV9IX18KLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotI2luY2x1ZGUgPG1pc3RyZWFtLmg+Ci0jaW5jbHVkZSA8dXN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotLy8vL0RDRiBib3ggdHlwZSBsaXN0Ci1jb25zdCB1aW50MzJfdCBEQ0ZfQ09OVEFJTkVSX0JPWCA9IHVpbnQzMl90KCdtJyA8PCAyNCB8ICdyJyA8PCAxNiB8ICdkJyA8PCA4IHwgJ28nKTsKLWNvbnN0IHVpbnQzMl90IERDRl9VU0VSX1RZUEUgPSB1aW50MzJfdCgnZCcgPDwgMjQgfCAnaScgPDwgMTYgfCAndScgPDwgOCB8ICd1Jyk7Ci1jb25zdCB1aW50MzJfdCBEQ0ZfRklMRV9UWVBFID0gdWludDMyX3QoJ3AnIDw8IDI0IHwgJ3knIDw8IDE2IHwgJ3QnIDw8IDggfCAnZicpOwotY29uc3QgdWludDMyX3QgRENGX0ZJTEVfQlJBTkQgPSB1aW50MzJfdCgnZicgPDwgMjQgfCAnYycgPDwgMTYgfCAnZCcgPDwgOCB8ICdvJyk7Ci0KLQotLyoqCi0gKiBUaGUgYmFzaWMgYm94IGNsYXNzLgotICovCi1jbGFzcyBCb3gKLXsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBjb25zdHJ1Y3RvciBmb3IgQm94LCB1c2VkIHRvIHBhcnNlIEJveAotICAgICAqIFxwYXJhbSBib3ggIEJveCBkYXRhCi0gICAgICovCi0gICAgQm94KGNvbnN0IHVpbnQ4X3QqIGJveCk7Ci0KLSAgICAvKioKLSAgICAgKiBjb3B5IGNvbnN0cnVjdG9yIGZvciBCb3gKLSAgICAgKiBccGFyYW0gZGNmQm94ICBCb3ggb2JqZWN0IHVzZWQgdG8gaW5pdCBhIG5ldyBCb3ggb2JqZWN0Ci0gICAgICovCi0gICAgQm94KGNvbnN0IEJveCYgZGNmQm94KTsKLQotICAgIC8qKgotICAgICAqIGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIEJveAotICAgICAqIFxwYXJhbSBvdGhlciAgQm94IG9iamVjdCB1c2VkIHRvIGFzc2lnbiB0byBhIGV4aXN0IEJveCBvYmplY3QKLSAgICAgKi8KLSAgICBCb3gmIG9wZXJhdG9yPShjb25zdCBCb3gmIG90aGVyKTsKLQotICAgIC8qKiBEZXN0cnVjdG9yIGZvciBCb3ggKi8KLSAgICB2aXJ0dWFsIH5Cb3goKTsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgc2l6ZSBvZiBCb3gKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBzaXplCi0gICAgICovCi0gICAgdWludDY0X3QgZ2V0U2l6ZSh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgdHlwZSBvZiBCb3gKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSB0eXBlCi0gICAgICovCi0gICAgdWludDMyX3QgZ2V0VHlwZSh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgdXNlciB0eXBlIG9mIEJveAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIHVzZXIgdHlwZQotICAgICAqLwotICAgIGNvbnN0IHVpbnQ4X3QqIGdldFVzZXJ0eXBlKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBsZW5ndGggb2YgQm94Ci0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgbGVuZ3RoCi0gICAgICovCi0gICAgdmlydHVhbCB1aW50MzJfdCBnZXRMZW4odm9pZCkgY29uc3Q7Ci1QUklWQVRFOgotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBVU0VSX1RZUEVfTEVOID0gMTY7Ci0KLSAgICB1aW50MzJfdCBtU2l6ZTsKLSAgICB1aW50MzJfdCBtVHlwZTsKLSAgICB1aW50NjRfdCBtTGFyZ2VTaXplOwotICAgIHVpbnQ4X3QqIG1Vc2VyVHlwZTsKLSAgICB1aW50MzJfdCBtQm94TGVuZ3RoOwotfTsKLQotLyoqCi0gKiBUaGUgZnVsbEJveCBjbGFzcy4KLSAqLwotY2xhc3MgRnVsbEJveCA6IHB1YmxpYyBCb3gKLXsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBjb25zdHJ1Y3RvciBmb3IgRnVsbEJveCwgdXNlZCB0byBwYXJzZSBGdWxsQm94Ci0gICAgICogXHBhcmFtIGZ1bGxCb3ggIEZ1bGxCb3ggZGF0YQotICAgICAqLwotICAgIEZ1bGxCb3goY29uc3QgdWludDhfdCogZnVsbEJveCk7Ci0KLSAgICAvKiogRGVzdHJ1Y3RvciBmb3IgRnVsbEJveCAqLwotICAgIHZpcnR1YWwgfkZ1bGxCb3goKXt9Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHZlcnNpb24gb2YgRnVsbEJveAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIHZlcnNpb24KLSAgICAgKi8KLSAgICB1aW50OF90IGdldFZlcnNpb24odm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIGZsYWcgb2YgRnVsbEJveAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGZsYWcKLSAgICAgKi8KLSAgICBjb25zdCB1aW50OF90KiBnZXRGbGFnKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBsZW5ndGggb2YgRnVsbEJveAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGxlbmd0aAotICAgICAqLwotICAgIHZpcnR1YWwgdWludDMyX3QgZ2V0TGVuKHZvaWQpIGNvbnN0OwotUFJJVkFURToKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgRkxBR19MRU4gPSAzOwotCi0gICAgdWludDhfdCBtVmVyc2lvbjsKLSAgICB1aW50OF90IG1GbGFnW0ZMQUdfTEVOXTsKLSAgICB1aW50MzJfdCBtRnVsbEJveExlbmd0aDsKLX07Ci0KLS8vLy8vLyB0ZXh0YWwgaGVhZGVyIGNsYXNzCi1jbGFzcyBUZXh0dWFsSGVhZGVyCi17Ci1wdWJsaWM6Ci0gICAgLyoqIGRlZmF1bHQgY29uc3RydWN0b3Igb2YgRHJtSW5TdHJlYW0gKi8KLSAgICBUZXh0dWFsSGVhZGVyKCl7fTsKLQotICAgIC8qKgotICAgICAqIGNvbnN0cnVjdG9yIGZvciBUZXh0dWFsSGVhZGVyLCB1c2VkIHRvIHBhcnNlIHRleHRhbCBoZWFkZXIKLSAgICAgKiBccGFyYW0gaW5EYXRhICB0ZXh0YWwgaGVhZGVyIGRhdGEKLSAgICAgKi8KLSAgICBUZXh0dWFsSGVhZGVyKGNvbnN0IHN0cmluZyYgaW5EYXRhKTsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgbmFtZSBvZiB0ZXh0YWwgaGVhZGVyCi0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgbmFtZQotICAgICAqLwotICAgIHN0cmluZyBnZXROYW1lKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHZhbHVlIG9mIHRleHRhbCBoZWFkZXIKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSB2YWx1ZQotICAgICAqLwotICAgIHN0cmluZyBnZXRWYWx1ZSgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBwYXJhbWV0ZXIgb2YgdGV4dGFsIGhlYWRlcgotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIHBhcmFtZXRlcgotICAgICAqLwotICAgIHN0cmluZyBnZXRQYXJhbSgpIGNvbnN0OwotUFJJVkFURToKLSAgICBzdHJpbmcgbmFtZTsKLSAgICBzdHJpbmcgdmFsdWU7Ci0gICAgc3RyaW5nIHBhcmFtOwotfTsKLQotZXh0ZXJuIGludDY0X3QgbnRvaF9pbnQ2NChpbnQ2NF90IGluKTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RjZi9Ecm1EY2ZDb250YWluZXIuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybURjZkNvbnRhaW5lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGRhNDUwLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybURjZkNvbnRhaW5lci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIF9fRENGX0NPTlRBSU5FUl9IX18KLSNkZWZpbmUgX19EQ0ZfQ09OVEFJTkVSX0hfXwotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8dXZlY3Rvci5oPgotI2luY2x1ZGUgPGRjZi9Ecm1JU3RyZWFtLmg+Ci0jaW5jbHVkZSA8ZGNmL0RybURjZkNvbW1vbi5oPgotCi1jbGFzcyBEcm1JblN0cmVhbTsKLQotLy8vLy8vLy8vZGNmIGNvbnRhaW5lcgotY2xhc3MgRGNmQ29udGFpbmVyIDogcHVibGljIEZ1bGxCb3gKLXsKLXB1YmxpYzoKLSAgICBmcmllbmQgY2xhc3MgRHJtSW5TdHJlYW07Ci0KLSAgICAvKiogZGVmYXVsdCBjb25zdHJ1Y3RvciBvZiBEY2ZDb250YWluZXIgKi8KLSAgICBEY2ZDb250YWluZXIoaXN0cmVhbSYgaW5SYXdEYXRhKTpGdWxsQm94KE5VTEwpLG1Db25TdHJlYW0oaW5SYXdEYXRhKXt9Ci0KLSAgICAvKioKLSAgICAgKiBjb25zdHJ1Y3RvciBmb3IgRGNmQ29udGFpbmVyLCB1c2VkIHRvIHBhcnNlIERDRiBjb250YWluZXIKLSAgICAgKiBccGFyYW0gZGF0YSAgRENGIGNvbnRhaW5lciBkYXRhCi0gICAgICogXHBhcmFtIGxlbiAgIERDRiBjb250YWluZXIgZGF0YSBsZW4KLSAgICAgKiBccGFyYW0gb2ZmICAgdGhlIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiBEQ0YgY29udGFpbmVyCi0gICAgICovCi0gICAgRGNmQ29udGFpbmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsaXN0cmVhbSYgaW5SYXdEYXRhLHVpbnQ2NF90IGNvbk9mZik7Ci0KLSAgICAvKiogRGVzdHJ1Y3RvciBmb3IgRGNmQ29udGFpbmVyICovCi0gICAgfkRjZkNvbnRhaW5lcigpOwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBjb250ZW50IHR5cGUgb2Ygb25lIGNvbnRlbnQKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBjb250ZW50IHR5cGUKLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0Q29udGVudFR5cGUodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIGVuY3J5cHRpb24gbWV0aG9kIGFwcGx5IHRvIGNvbnRlbnQKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBlbmNyeXB0aW9uIG1ldGhvZAotICAgICAqLwotICAgIHVpbnQ4X3QgZ2V0RW5jcnlwdGlvbk1ldGhvZCh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgcGFkZGluZyBzY2hlbWUgYXBwbHkgdG8gY29udGVudAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIHBhZGRpbmcgc2NoZW1lCi0gICAgICovCi0gICAgdWludDhfdCBnZXRQYWRkaW5nU2NoZW1lKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBsZW5ndGggb2YgcGxhaW4gY29udGVudAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGxlbmd0aCBvZiBwbGFpbiBjb250ZW50Ci0gICAgICovCi0gICAgdWludDY0X3QgZ2V0UGxhaW50ZXh0TGVuZ3RoKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBsZW5ndGggb2YgY29udGVudCBJRAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGxlbmd0aCBvZiBjb250ZW50IElECi0gICAgICovCi0gICAgdWludDE2X3QgZ2V0Q29udGVudElETGVuZ3RoKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBsZW5ndGggb2YgcmlnaHRzIGlzc3VlciBVUkwKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBsZW5ndGggb2YgcmlnaHRzIGlzc3VlciBVUkwKLSAgICAgKi8KLSAgICB1aW50MTZfdCBnZXRSaWdodHNJc3N1ZXJVUkxMZW5ndGgodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIGxlbmd0aCBvZiB0ZXh0YWwgaGVhZGVyCi0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgbGVuZ3RoIG9mIHRleHRhbCBoZWFkZXIKLSAgICAgKi8KLSAgICB1aW50MTZfdCBnZXRUZXh0dWFsSGVhZGVyc0xlbmd0aCh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgY29udGVudCBJRCBvZiBvbmUgY29udGVudAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGNvbnRlbnQgSUQKLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0Q29udGVudElEKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSByaWdodHMgaXNzdWVyIFVSTAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIHJpZ2h0cyBpc3N1ZXIgVVJMCi0gICAgICovCi0gICAgc3RyaW5nIGdldFJpZ2h0c0lzc3VlclVSTCh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgcHJldmlldyBtZXRob2QKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBwcmV2aWV3IG1ldGhvZAotICAgICAqLwotICAgIHN0cmluZyBnZXRQcmV2aWV3TWV0aG9kKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBsb2NhdGlvbiBvZiBjb250ZW50Ci0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgbG9jYXRpb24gb2YgY29udGVudAotICAgICAqLwotICAgIHN0cmluZyBnZXRDb250ZW50TG9jYXRpb24odm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIFVSTCBvZiBjb250ZW50Ci0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgVVJMIG9mIGNvbnRlbnQKLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0Q29udGVudFVSTCh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgY3VzdG9tZXIgaGVhZAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGN1c3RvbWVyIGhlYWQKLSAgICAgKi8KLSAgICB2ZWN0b3I8c3RyaW5nPiBnZXRDdXN0b21lckhlYWQodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHByZXZpZXcgZWxlbWVudCBkYXRhCi0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgRFJNIEluc3RyZWFtIG9mIHByZXZpZXcgZWxlbWVudCBkYXRhCi0gICAgICovCi0gICAgRHJtSW5TdHJlYW0gZ2V0UHJldmlld0VsZW1lbnREYXRhKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBwbGFpbiBjb250ZW50Ci0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgRFJNIEluc3RyZWFtIG9mIHBsYWluIGNvbnRlbnQKLSAgICAgKi8KLSAgICBEcm1JblN0cmVhbSBnZXREZWNyeXB0Q29udGVudCh1aW50OF90KiBkZWNyeXB0S2V5KSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgaXN0cmVhbSBvZiBEQ0YKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBpc3RyZWFtIG9mIERDRgotICAgICAqLwotICAgIGlzdHJlYW0mIGdldFN0cmVhbSh2b2lkKSBjb25zdDsKLQotUFJJVkFURToKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgVVNFUl9EQVRBX0ZMQUcgPSAweDAxOwotCi0gICAgdWludDhfdCBtQ29udGVudFR5cGVMZW47Ci0gICAgc3RyaW5nIG1Db250ZW50VHlwZTsKLSAgICB1aW50OF90IG1FbmNyeXB0aW9uTWV0aG9kOwotICAgIHVpbnQ4X3QgbVBhZGRpbmdTY2hlbWU7Ci0gICAgdWludDY0X3QgbVBsYWludGV4dExlbmd0aDsKLSAgICB1aW50MTZfdCBtQ29udGVudElETGVuZ3RoOwotICAgIHVpbnQxNl90IG1SaWdodHNJc3N1ZXJVUkxMZW5ndGg7Ci0gICAgdWludDE2X3QgbVRleHR1YWxIZWFkZXJzTGVuZ3RoOwotICAgIHN0cmluZyBtQ29udGVudElEOwotICAgIHN0cmluZyBtUmlnaHRzSXNzdWVyVVJMOwotICAgIHZlY3RvcjxUZXh0dWFsSGVhZGVyKj4gbVRleHR1YWxIZWFkZXJzOwotICAgIGJvb2wgbVNpbGVudEZpcnN0OwotICAgIHN0cmluZyBtU2xpZW50TWV0aG9kOwotICAgIHN0cmluZyBtU2lsZW50UmlnaHRzVVJMOwotICAgIHN0cmluZyBtUHJldmlld01ldGhvZDsKLSAgICBzdHJpbmcgbVByZXZpZXdFbGVtZW50VVJJOwotICAgIHN0cmluZyBtUHJldmlld1JpZ2h0c1VSTDsKLSAgICBzdHJpbmcgbUNvbnRlbnRVUkw7Ci0gICAgc3RyaW5nIG1Db250ZW50VmVyc2lvbjsKLSAgICBzdHJpbmcgbUNvbnRlbnRMb2NhdGlvbjsKLSAgICB2ZWN0b3I8c3RyaW5nPiBtQ3VzdG9tSGVhZGVyOwotICAgIGJvb2wgbUhhc1VzZXJEYXRhOwotICAgIHVpbnQ2NF90IG1EYXRhTGVuOwotICAgIGlzdHJlYW0mIG1Db25TdHJlYW07Ci0gICAgdWludDY0X3QgbURlY09mZnNldDsKLQotUFJJVkFURToKLSAgICAvLyBwYXJzZSB0ZXh0IGhlYWRlcgotICAgIGJvb2wgcGFyc2VUZXh0dWFsSGVhZGVycyhjb25zdCB1aW50OF90KiBkYXRhLCB1aW50MzJfdCBsZW4pOwotICAgIHZvaWQgY29weShjb25zdCBEY2ZDb250YWluZXImIGNvbnRhaW5lcik7Ci0gICAgRGNmQ29udGFpbmVyKGNvbnN0IERjZkNvbnRhaW5lciYgY29udGFpbmVyKTpGdWxsQm94KE5VTEwpLG1Db25TdHJlYW0oY29udGFpbmVyLm1Db25TdHJlYW0pe30KLSAgICBEY2ZDb250YWluZXImIG9wZXJhdG9yPShjb25zdCBEY2ZDb250YWluZXImIG90aGVyKXtyZXR1cm4gKnRoaXM7fQotfTsKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybUlTdHJlYW0uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybUlTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBlMjY0ZS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RjZi9Ecm1JU3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBfX0RSTV9JU1RSRUFNX0hfXwotI2RlZmluZSBfX0RSTV9JU1RSRUFNX0hfXwotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8dXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmg+Ci0jaW5jbHVkZSA8ZGNmL0RybURjZkNvbnRhaW5lci5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLWNsYXNzIERjZkNvbnRhaW5lcjsKLQotY2xhc3MgRHJtSW5TdHJlYW0KLXsKLXB1YmxpYzoKLSAgICAvKiogZGVmYXVsdCBjb25zdHJ1Y3RvciBvZiBEcm1JblN0cmVhbSAqLwotICAgIERybUluU3RyZWFtKCk6bURlY3J5cHRQb3MoMCl7fQotCi0gICAgLyoqCi0gICAgICogY29uc3RydWN0b3IgZm9yIERybUluU3RyZWFtLCB1c2VkIHRvIHJlYWQgRENGIGNvbnRlbnQKLSAgICAgKiBccGFyYW0gZW5jRmlsZSAgRENGIGNvbnRhaW5lciBkYXRhCi0gICAgICogXHBhcmFtIGxlbiAgIERDRiBjb250YWluZXIgZGF0YSBsZW4KLSAgICAgKiBccGFyYW0gb2ZmICAgdGhlIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiBEQ0YgY29udGFpbmVyCi0gICAgICovCi0gICAgRHJtSW5TdHJlYW0oY29uc3QgRGNmQ29udGFpbmVyKiBjb250YWluZXIsdWludDhfdCogS2V5KTsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgc2l6ZSBvZiBEUk0gSW5zdHJlYW0KLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBzaXplIG9mIERSTSBJbnN0cmVhbQotICAgICAqLwotICAgIHVpbnQ2NF90IHNpemUoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIHJlYWQgZGF0YSBmcm9tIERSTSBJbnN0cmVhbQotICAgICAqIFxwYXJhbSAgZGF0YSAgdGhlIGJ1ZmZlciB0byBzdG9yZSByZWFkIGRhdGEKLSAgICAgKiBccGFyYW0gIGxlbiAgIGhvdyBtdWNoIGRhdGEgbmVlZCB0byByZWFkCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGFjdHVhbCBsZW4gb2YgcmVhZCBkYXRhCi0gICAgICovCi0gICAgdWludDY0X3QgcmVhZCh1aW50OF90KiBkYXRhLHVpbnQ2NF90IGxlbik7Ci0KLVBSSVZBVEU6Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEFFU19JVl9MRU4gPSAxNjsKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgQUVTX0tFWV9MRU4gPSAxNjsKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgQUVTX0JMT0NLX0xFTiA9IDE2OwotCi0gICAgY29uc3QgRGNmQ29udGFpbmVyKiBtRGNmQ29uOwotICAgIHVpbnQ2NF90IG1EZWNyeXB0UG9zOwotICAgIHVpbnQ4X3QgbUFlc0tleVtBRVNfS0VZX0xFTl07Ci19OwotCi0KLQotI2VuZGlmCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9kY2YvRHJtUmF3Q29udGVudC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9kY2YvRHJtUmF3Q29udGVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDQzM2FmLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybVJhd0NvbnRlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIF9fRFJNX0NPTlRFTlRfSF9fCi0jZGVmaW5lIF9fRFJNX0NPTlRFTlRfSF9fCi0KLSNpbmNsdWRlIDxEcm0yQ29tbW9uVHlwZXMuaD4KLSNpbmNsdWRlIDxkY2YvRHJtRGNmQ29udGFpbmVyLmg+Ci0KLS8vLy8vLy8vLy8vLy9yYXcgY29udGVudAotY2xhc3MgRHJtUmF3Q29udGVudAotewotcHVibGljOgotICAgIC8qKgotICAgICAqIGNvbnN0cnVjdG9yIGZvciBEcm1SYXdDb250ZW50LCB1c2VkIHRvIHBhcnNlIERDRgotICAgICAqIFxwYXJhbSBpblJhd0RhdGEgIGlucHV0IHN0cmVhbSBvZiByYXcgZGF0YS4KLSAgICAgKi8KLSAgICBEcm1SYXdDb250ZW50KGlzdHJlYW0mIGluUmF3RGF0YSk7Ci0KLSAgICAvKiogRGVzdHJ1Y3RvciBmb3IgRHJtUmF3Q29udGVudCAqLwotICAgIH5Ecm1SYXdDb250ZW50KCk7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgRENGIGNvbnRhaW5lcgotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIERDRiBjb250YWluZXIKLSAgICAgKi8KLSAgICB2ZWN0b3I8RGNmQ29udGFpbmVyKj4gZ2V0Q29udGVudHModm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIGxlbmd0aCBvZiBEQ0YgaGFzaAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGxlbmd0aCBvZiBEQ0YgaGFzaAotICAgICAqLwotICAgIHVpbnQzMl90IGdldERjZkhhc2hMZW4oKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCBEQ0YgaGFzaAotICAgICAqIFxwYXJhbSBvdXREY2ZIYXNoICB0aGUgYnVmZmVyIHRvIHN0b3JlIERDRiBoYXNoCi0gICAgICogXHJldHVybgotICAgICAqICAgbm9uZQotICAgICAqLwotICAgIHZvaWQgZ2V0RGNmSGFzaCh1aW50OF90KiBvdXREY2ZIYXNoKSBjb25zdDsKLQotUFJJVkFURToKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgRENGX0hBU0hfTEVOID0gMjA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEZJWF9IRUFERVJfTEVOID0gMjA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1BWF9QSUVDRV9MRU4gPSAoMTAwICogMTAyNCk7Ci0KLSAgICB1aW50OF90IG1EY2ZIYXNoW0RDRl9IQVNIX0xFTl07Ci0gICAgdmVjdG9yPERjZkNvbnRhaW5lcio+IG1Db250YWluZXI7Ci0KLVBSSVZBVEU6Ci0gICAgYm9vbCBwYXJzZURjZkhlYWRlcihjb25zdCB1aW50OF90KiBkY2ZIZWFkKTsKLSAgICBEcm1SYXdDb250ZW50KGNvbnN0IERybVJhd0NvbnRlbnQmIHJhd0NvbnRlbnQpe30KLSAgICBEcm1SYXdDb250ZW50JiBvcGVyYXRvcj0oY29uc3QgRHJtUmF3Q29udGVudCYgb3RoZXIpe3JldHVybiAqdGhpczt9Ci19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZHJtbWFuYWdlci9Ecm1NYW5hZ2VyLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RybW1hbmFnZXIvRHJtTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGJmYmMxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZHJtbWFuYWdlci9Ecm1NYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovDQotI2lmbmRlZiBfRFJNTUFOQUdFUl8KLSNkZWZpbmUgX0RSTU1BTkFHRVJfCi0KLSNpbmNsdWRlIDxEcm0yQ29tbW9uVHlwZXMuaD4KLSNpbmNsdWRlIDxvZnN0cmVhbS5oPgotI2luY2x1ZGUgPHNvc3RyZWFtLmg+Ci0jaW5jbHVkZSA8dXN0cmluZy5oPgotI2luY2x1ZGUgPHNpc3RyZWFtLmg+Ci0jaW5jbHVkZSA8dXZlY3Rvci5oPgotCi11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotLyoqIEl0IHNob3VsZCBiZSByZW1vdmVkIGFmdGVyIHJlYWwgRGNmQ29udGFpbmVyIGlzIHJlYWR5ICovCi0jZGVmaW5lIERjZkNvbnRhaW5lciBzdHJpbmcKLXN0YXRpYyBjb25zdCBpbnQxNl90IERSTV9PSyA9IDE7Ci0KLWNsYXNzIERybU1hbmFnZXIKLXsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBFcnJvciBkZWZpbml0aW9uCi0gICAgICovCi0gICAgIHN0YXRpYyBjb25zdCBpbnQxNl90IERSTV9NQU5BR0VSX0JBU0UgPSAxMDA7Ci0gICAgIHN0YXRpYyBjb25zdCBpbnQxNl90IEVSUl9EQ0ZTVFJFQU1fTk9UX0lOSVRJQUxJWkVEID0gRFJNX01BTkFHRVJfQkFTRSsxOwotICAgICBzdGF0aWMgY29uc3QgaW50MTZfdCBFUlJfV1JPTkdfRENGREFUQSA9IERSTV9NQU5BR0VSX0JBU0UrMjsKLSAgICAgc3RhdGljIGNvbnN0IGludDE2X3QgRVJSX1dST05HX1JJR0hUUyA9IERSTV9NQU5BR0VSX0JBU0UrMzsKLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZvciBEcm1NYW5hZ2VyLHVzZWQgdG8gb3BlbiBsb2NhbCBkY2YgZmlsZS4KLSAgICAgKiBAcGFyYW0gaW5SYXdEYXRhIGlucHV0IHN0cmVhbSBvZiByYXcgZGF0YS4KLSAgICAgKi8KLSAgICBEcm1NYW5hZ2VyKGlzdHJlYW0gKmluUmF3RGF0YSk7Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RvciBmb3IgRHJtTWFuYWdlcix1c2VkIHRvIHNlcGFyYXRlIGRjZiBmaWxlIGFuZCB0cmlnIG1lc3NhZ2Ugd2hlbiB1cHBlcgotICAgICAqIGFwcGxpY2F0aW9uIGRvd25sb2FkaW5nIG9uZSBtdWx0aXBhcnQgbWVzc2FnZSBmcm9tIENJLgotICAgICAqIEBwYXJhbSBpblJhd0RhdGEgaW5wdXQgc3RyZWFtIG9mIHJhdyBkYXRhLgotICAgICAqLwotICAgIERybU1hbmFnZXIoaXN0cmVhbSAqIGluUmF3RGF0YSwgc3RyaW5nIG1pbWVUeXBlKTsKLQotICAgIC8qKiBEZXN0cnVjdG9yIGZvciBEb21FeHBhdEFnZW50LiAqLwotICAgIH5Ecm1NYW5hZ2VyKCk7Ci0gICAgLyoqCi0gICAgICogQ29uZmlnIERSTSBlbmdpbmUKLSAgICAgKiBGaXggbWUgbGF0ZXIKLSAgICAgKi8KLSAgICAgYm9vbCBjb25maWcoKTsKLQotICAgIC8qKgotICAgICAqIENvbnN1bWUgcmlnaHRzIGFjY29yZGluZyB0byBzcGVjaWZpZWQgb3BlcmF0aW9uLCBEcm1NYW5hZ2VyIHdpbGwgY2hlY2suCi0gICAgICogQHBhcmFtIG9wZXJhdGlvblR5cGUgdGhlIHR5cGUgb2Ygb3BlcmF0aW9uLgotICAgICAqIEByZXR1cm4gdGhlIG9wZXJhdGlvbiByZXN1bHQuCi0gICAgICovCi0gICAgaW50MTZfdCBjb25zdW1lUmlnaHRzKGludDE2X3Qgb3BlcmF0aW9uVHlwZSk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGxpc3Qgb2YgYWxsIGRjZiBjb250YWluZXJzIG9iamVjdCByZWZlcmVuY2UgaW4gdGhlIGRjZiBmaWxlLgotICAgICAqIEBwYXJhbSB0aGUgdmVjdG9yIG9mIHRoZSBkY2Ygb2JqZWN0cyBsaXN0IHJldHVybmVkLgotICAgICAqIEByZXR1cm4gdGhlIG9wZXJhdGlvbiByZXN1bHQuCi0gICAgICovCi0gICAgIGludDE2X3QgZ2V0TGlzdE9mRGNmT2JqZWN0cyh2ZWN0b3I8RGNmQ29udGFpbmVyKj4gKipvdXREY2ZMaXN0KTsKLQotICAgIC8qKgotICAgICAqIE9wZW4gb25lIERjZiBjb250YWluZXIgdG8gcmVhZCB0aGUgZGVjcnlwdGVkIGRhdGEgYWNjb3JkaW5nIHRvIHNwZWNpZmllZAotICAgICAqIG9wZXJhdGlvbi4KLSAgICAgKiBAcGFyYW0gb25lRGNmT2JqZWN0IHRoZSByZWZlcmVuY2Ugb2YgdGhlIERjZkNvbnRhaW5lci4KLSAgICAgKiBAcGFyYW0gb3BlcmF0aW9uVHlwZSB0aGUgdHlwZSBvZiBvcGVyYXRpb24uCi0gICAgICogQHBhcmFtIGRlY3J5cHRlZCBkYXRhIHJldHVybmVkLgotICAgICAqIEByZXR1cm4gdGhlIG9wZXJhdGlvbiByZXN1bHQuCi0gICAgICovCi0gICAgaW50MTZfdCBvcGVuRGVjcnlwdGVkQ29udGVudChEY2ZDb250YWluZXIgKm9uZURjZk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBvcGVyYXRpb25UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3RyZWFtICpvdXREZWNyeXB0ZWREYXRhKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgc2VwYXJhdGVkIERjZiByYXcgZGF0YSBmcm9tIG11bHRpcGFydCBtZXNzYWdlLgotICAgICAqIEByZXR1cm4gdGhlIGlmc3RyZWFtIG9mIHRoZSBkY2YgcmF3IGRhdGEgd2hpY2ggc2hvdWxkIGJlIHN0b3JlZCBieSB1cHBlcgotICAgICAqIGFwcGxpY2F0aW9uLgotICAgICAqLwotICAgIGlmc3RyZWFtKiBnZXRPcmlnaW5hbE1lZGlhRGF0YSh2b2lkKTsKLQotICAgIC8qKgotICAgICAqIEhhbmRsZSBEUk0yLjAgcHVzaCBtZXNzYWdlCi0gICAgICovCi0gICAgYm9vbCBoYW5kbGVQdXNoTXNnKHVpbnQ4X3QqIGRhdGEsIHN0cmluZyBtaW1lVHlwZSk7Ci0KLVBSSVZBVEU6Ci0gICAgaXN0cmVhbSAqbURjZlN0cmVhbTsgLyoqPCB0aGUgaGFuZGxlciBvZiBkY2Ygc3RyZWFtLiAqLwotICAgIHZlY3RvcjxEY2ZDb250YWluZXIqPiBtRGNmczsgLyoqPCBhbGwgdGhlIGRjZiBjb250YWluZXJzIGluY2x1ZGVkIGluIG9uZSBkY2YgZmlsZS4gKi8KLX07Ci0KLSNlbmRpZiAvL19EUk1NQU5BR0VSXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvQXNzZXQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL0Fzc2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2Njk2ZGQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvQXNzZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX0FTU0VUX0gKLSNkZWZpbmUgX0FTU0VUX0gKLQotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDx1dmVjdG9yLmg+Ci0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8cmlnaHRzL1JpZ2h0Lmg+Ci11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotY2xhc3MgQXNzZXQgewotcHVibGljOgotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZvciBhc3NldC4KLSAgICAgKi8KLSAgICBBc3NldCgpOwotCi0gICAgLyoqCi0gICAgICogRGVzdHJ1Y3RvciBmb3IgYXNzZXQuCi0gICAgICovCi0gICAgfkFzc2V0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUZXN0IHdoZXRoZXIgYXNzZXQgaGFzIHBhcmVudCBvciBub3QuCi0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBoYXNQYXJlbnQoKTsKLQotICAgIC8qKgotICAgICAqIFNldCBpZCBvZiBhc3NldC4KLSAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIGFzc2V0LgotICAgICAqLwotICAgIHZvaWQgc2V0SUQoY29uc3Qgc3RyaW5nICZpZCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGlkIG9mIGNvbnRlbnQuCi0gICAgICogQHJldHVybiBhc3NldCBpZC4KLSAgICAgKi8KLSAgICBjb25zdCBzdHJpbmcmIGdldElEKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgY29udGVuZCBpZCByZWxhdGVkIHRvIGFzc2V0LgotICAgICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgY29udGVudC4KLSAgICAgKi8KLSAgICB2b2lkIHNldENvbnRlbnRJRChjb25zdCBzdHJpbmcgJmlkKTsKLQotICAgIC8qKgotICAgICAqIEdldCBjb250ZW50IGlkLgotICAgICAqIEByZXR1cm4gY29udGVudCBpZC4KLSAgICAgKi8KLSAgICBjb25zdCBzdHJpbmcmIGdldENvbnRlbnRJRCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IGRpZ2VzdCB2YWx1ZSBvZiBEQ0YuCi0gICAgICogQHBhcmFtIHZhbHVlIHRoZSBEQ0YgZGlnZXN0IHZhbHVlLgotICAgICAqLwotICAgIHZvaWQgc2V0RENGRGlnZXN0KGNvbnN0IHN0cmluZyAmdmFsdWUpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBEQ0YgZGlnZXN0IHZhbHVlLgotICAgICAqIEByZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBvZiBEQ0YuCi0gICAgICovCi0gICAgY29uc3Qgc3RyaW5nJiBnZXREQ0ZEaWdlc3QoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCBlbmNyeXB0ZWQga2V5IGluIGFzc2V0LgotICAgICAqIEBwYXJhbSB0aGUgZW5jcnlwdGVkIGtleS4KLSAgICAgKi8KLSAgICB2b2lkIHNldEVuY3J5cHRlZEtleShjb25zdCBzdHJpbmcgJmtleSk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgZW5jcnlwdGVkIGtleS4KLSAgICAgKiBAcmV0dXJuIGVuY3lwdGVkIGtleS4KLSAgICAgKi8KLSAgICBjb25zdCBzdHJpbmcmIGdldEVuY3J5dGVkS2V5KCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgY2VrLgotICAgICAqIEByZXR1cm4gY2VrLgotICAgICAqLwotICAgIGNvbnN0IGNoYXIqIGdldENlaygpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IHRoZSByZXRyaWV2YWwgbWV0aG9kIG9mIGtleS4KLSAgICAgKiBAcGFyYW0gcm0gdGhlIHJldHJpZXZhbCBtZXRob2Qgb2YgdGhlIGtleS4KLSAgICAgKi8KLSAgICB2b2lkIHNldEtleVJldHJpZXZhbE1ldGhvZChjb25zdCBzdHJpbmcgJnJtKTsKLQotICAgIC8qKgotICAgICAqIFNldCBwYXJlbnQgY29udGVudCBpZCBmb3IgYXNzZXQuCi0gICAgICogQHBhcmFtIGlkIHRoZSBwYXJlbnQgY29udGVudCBpZC4KLSAgICAgKi8KLSAgICB2b2lkIHNldFBhcmVudENvbnRlbnRJRChjb25zdCBzdHJpbmcgJmlkKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgcGFyZW50IGNvbnRlbnQgaWQgb2YgdGhlIGFzc2V0LgotICAgICAqIEByZXR1cm4gdGhlIHBhcmVudCBjb250ZW50IGlkLgotICAgICAqLwotICAgIGNvbnN0IHN0cmluZyYgZ2V0UGFyZW50Q29udGVudElEKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBSZWNvdmVyIHRoZSBDRUsgdXNpbmcgcHJpdmF0ZSBrZXkuCi0gICAgICovCi0gICAgdm9pZCByZWNvdmVyQ2VrKCk7Ci0KLVBSSVZBVEU6Ci0gICAgc3RyaW5nIG1Bc3NldElEOwotICAgIHN0cmluZyBtQ29udGVudElEOwotICAgIHN0cmluZyBtRGlnZXN0TWV0aG9kOwotICAgIHN0cmluZyBtRGlnZXN0VmFsdWU7Ci0gICAgc3RyaW5nIG1FbmNyeXB0ZWRNZXRob2Q7Ci0gICAgc3RyaW5nIG1FbmNyeXB0ZWRLZXk7Ci0gICAgc3RyaW5nIG1SZXRyaWV2YWxNZXRob2Q7Ci0gICAgc3RyaW5nIG1QYXJlbnRDb250ZW50SUQ7Ci0gICAgc3RyaW5nIG1DZWs7Ci19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL0NvbnN0cmFpbnQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL0NvbnN0cmFpbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNmNWFmZS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9Db25zdHJhaW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9DT05TVFJBSU5UX0gKLSNkZWZpbmUgX0NPTlNUUkFJTlRfSAotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8dXN0cmluZy5oPgotI2luY2x1ZGUgPHV2ZWN0b3IuaD4KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi1zdHJ1Y3QgQ29udGV4dCB7Ci0gICAgc3RyaW5nIGlkOwotICAgIHN0cmluZyB2ZXJzaW9uOwotfTsKLQotY29uc3QgaW50IElOSVRfVkFMVUUgPSAtMTsKLQotY2xhc3MgQ29uc3RyYWludCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBNT0RFIHtOT05FLCBNT1ZFLCBDT1BZfTsgLyoqPCBleHBvcnQgbW9kZSB0eXBlLiAqLwotCi0gICAgLyoqCi0gICAgICogQ29uc3RydXRvciBmb3IgY29uc3RyYWludC4KLSAgICAgKi8KLSAgICBDb25zdHJhaW50KCk7Ci0KLSAgICAvKioKLSAgICAgKiBEZXN0cnVjdG9yIGZvciBjb25zdHJhaW50LgotICAgICAqLwotICAgIH5Db25zdHJhaW50KCk7Ci0KLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBUZXN0IHdoZXRoZXIgY29uc3RyYWludCBpcyB2YWxpZCBvciBub3QKLSAgICAgKiBAcGFyYW0gdGltZSB0aGUgc3BlY2l0aWMgdGltZSB0byB0ZXN0LgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaXNWYWxpZChsb25nIHRpbWUpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogVGVzdCB3aGV0aGVyIGNvbnN0cmFpbnQgaXMgdW5jb25zdHJhaW50IG9yIG5vdAotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaXNVbkNvbnN0cmFpbnQoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFRlc3Qgd2hldGhlciBjb25zdHJhaW50IGlzIGRhdGV0aW1lIHJlbGF0ZWQgb3Igbm90LgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaXNEYXRlVGltZUNvbnN0cmFpbnQoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFRlc3Qgd2hldGhlciBjb25zdHJhaW50IGNvbnRhaW4gaW50ZXJ2YWwgb3Igbm90Ci0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBpc0ludGVydmFsQ29uc3RyYWludCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogVGVzdCB3aGV0aGVyIGNvbnN0cmFpbnQgaXMgdGltZWQgY291bnQgb3Igbm90Ci0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBpc1RpbWVkQ291bnRDb25zdHJhaW50KCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgdGhlIHN0YXJ0IHRpbWUgdmFsdWUgb2YgY29uc3RyYWludC4KLSAgICAgKiBAcGFyYW0gdGltZSB0aGUgc3BlY2lmaWMgdGltZSB2YWx1ZS4KLSAgICAgKi8KLSAgICB2b2lkIHNldFN0YXJ0VGltZShsb25nIHRpbWUpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBzdGFydCB0aW1lLgotICAgICAqIEByZXR1cm4gdmFsdWUgb2Ygc3RhcnQgdGltZS4KLSAgICAgKi8KLSAgICBsb25nIGdldFN0YXJ0VGltZSgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IHRoZSBlbmQgdGltZS4KLSAgICAgKiBAcGFyYW0gdGltZSB0aGUgdmFsdWUgb2YgZW5kIHRpbWUuCi0gICAgICovCi0gICAgdm9pZCBzZXRFbmRUaW1lKGxvbmcgdGltZSk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGVuZCB0aW1lLgotICAgICAqIEBwYXJhbSByZXR1cm4gdGhlIHZhbHVlIG9mICBlbmQgdGltZS4KLSAgICAgKi8KLSAgICBsb25nIGdldEVuZFRpbWUoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCB0aGUgYWNjdW11bGF0ZWQgLgotICAgICAqIEBwYXJhbSB0aW1lIHRoZSBzcGVjaWZpYyB0aW1lLgotICAgICAqLwotICAgIHZvaWQgc2V0QWNjdW11bGF0ZWQobG9uZyB0aW1lKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgYWNjdW11bGF0ZWQuCi0gICAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgYWNjdW11bGF0ZWQKLSAgICAgKi8KLSAgICBsb25nIGdldEFjY3VtdWxhdGVkKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgdGhlIGNvdW50LgotICAgICAqIEBwYXJhbSBjb3VudCB0aGUgdmFsdWUgb2YgY291bnQuCi0gICAgICovCi0gICAgdm9pZCBzZXRDb3VudChpbnQgY291bnQpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBjb3VudC4KLSAgICAgKiBAcmV0dXJuIHZhbHVlIG9mIGNvdW50LgotICAgICAqLwotICAgIGludCBnZXRDb3VudCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IHRoZSB2YWx1ZSBvZiB0aW1lci4KLSAgICAgKiBAcGFyYW0gdGltZXIgdGhlIHZhbHVlIG9mIHRoZSB0aW1lci4KLSAgICAgKi8KLSAgICB2b2lkIHNldFRpbWVyKGludCB0aW1lcik7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIHRpbWVyLgotICAgICAqIEByZXR1cm4gdmFsdWUgb2YgdGltZS4KLSAgICAgKi8KLSAgICBpbnQgZ2V0VGltZXIoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCB0aGUgdGltZWRDb3VudC4KLSAgICAgKiBAcGFyYW0gdGltZWRDb3VudCB0aGUgdmFsdWUgb2YgdGltZWRDb3VudC4KLSAgICAgKi8KLSAgICB2b2lkIHNldFRpbWVkQ291bnQoaW50IHRpbWVkQ291bnQpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSB0aW1lZENvdW50LgotICAgICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRpbWVkQ291bnQuCi0gICAgICovCi0gICAgaW50IGdldFRpbWVkQ291bnQoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCB0aGUgaW50ZXJ2YWwuCi0gICAgICogQHBhcmFtIGludGVydmFsIHRoZSB2YWx1ZSBvZiBpbnRlcnZhbC4KLSAgICAgKi8KLSAgICB2b2lkIHNldEludGVydmFsKGludCBpbnRlcnZhbCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGludGVydmFsLgotICAgICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIGludGVydmFsLgotICAgICAqLwotICAgIGludCBnZXRJbnRlcnZhbCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogc2V0IGV4cG9ydCBtb2RlLgotICAgICAqIEBwYXJhbSBtb2RlIHRoZSBtb2RlIHR5cGUgb2YgZXhwb3J0LgotICAgICAqLwotICAgIHZvaWQgc2V0RXhwb3J0TW9kZShNT0RFIG1vZGUpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBleHBvcnQgbW9kZS4KLSAgICAgKiBAcmV0dXJuIHRoZSBleHBvcnQgbW9kZS4KLSAgICAgKi8KLSAgICBNT0RFIGdldEV4cG9ydE1vZGUoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIENvbnN1bWUgdGhlIGNvbnN0cmFpbnQuCi0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHdoZXRoZXIgY29uc3VtZSBzdWNjZXNmdWxseSBvciBub3QuCi0gICAgICovCi0gICAgYm9vbCBjb25zdW1lKCk7Ci0KLVBSSVZBVEU6Ci0gICAgaW50IG1Db3VudDsgLyoqPCB0aGUgY291bnQuICovCi0gICAgaW50IG1UaW1lZENvdW50OyAvKio8IHRpbWVkIGNvdW50LiAqLwotICAgIGludCBtVGltZXI7IC8qKjwgdGltZXIgZm9yIHRpbWVkIGNvdW50LiAqLwotICAgIGxvbmcgbVN0YXJ0OyAvKio8IHN0YXJ0IHRpbWUuICovCi0gICAgbG9uZyBtRW5kOyAvKio8IGVuZCB0aW1lLiAqLwotICAgIGludCBtSW50ZXJ2YWw7IC8qKjwgaW50ZXJ2YWwuICovCi0gICAgbG9uZyBtQWNjdW11bGF0ZWQ7IC8qKjwgYWNjdW1sYXRlZC4gKi8KLSAgICB2ZWN0b3I8Q29udGV4dD4gbVN5c3RlbUxpc3Q7IC8qKjwgc3lzdGVtIGxpc3QuICovCi0gICAgTU9ERSBtRXhwb3J0OyAvKio8IGV4cG9ydCBtb2RlLiAqLwotfTsKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvT3BlcmF0aW9uUGVybWlzc2lvbi5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvT3BlcmF0aW9uUGVybWlzc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGNiYTdiLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL09wZXJhdGlvblBlcm1pc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfT1BFUkFUSU9OUEVSTUlTU0lPTl9ICi0jZGVmaW5lIF9PUEVSQVRJT05QRVJNSVNTSU9OX0gKLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHJpZ2h0cy9Db25zdHJhaW50Lmg+Ci0KLWNsYXNzIE9wZXJhdGlvblBlcm1pc3Npb24gewotcHVibGljOgotICAgIGVudW0gT1BFUkFUSU9OIHtOT05FLCBQTEFZLCBESVNQTEFZLCBFWEVDVVRFLCBQUklOVCwgRVhQT1JULCBDT01NT059OwotCi0gICAgLyoqCi0gICAgICogQ29uc3RydXRvciBvZiBPcGVyYXRpb25QZXJtaXNzaW9uLgotICAgICAqLwotICAgIE9wZXJhdGlvblBlcm1pc3Npb24oKTsKLQotICAgIC8qKgotICAgICAqIENvbnN0cnV0b3Igb2YgT3BlcmF0aW9uUGVybWlzc2lvbi4KLSAgICAgKiBAcGFyYW0gdHlwZSB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uIHR5cGUuCi0gICAgICogQHBhcmFtIGNzdCB0aGUgY29uc3RyYWludCByZWxhdGVkIHdpdGggb3BlcmF0aW9uIHBlcm1pc3Npb24uCi0gICAgICovCi0gICAgT3BlcmF0aW9uUGVybWlzc2lvbihPUEVSQVRJT04gdHlwZSwgQ29uc3RyYWludCogY3N0PU5VTEwpOwotCi0gICAgLyoqCi0gICAgICogRGVzdHJ1dG9yIG9mIE9wZXJhdGlvblBlcm1pc3Npb24uCi0gICAgICovCi0gICAgfk9wZXJhdGlvblBlcm1pc3Npb24oKTsKLQotICAgIC8qKgotICAgICAqIFNldCB0aGUgdHlwZSBmb3Igb3BlcmF0aW9uIHBlcm1pc3Npb24uCi0gICAgICogQHBhcmFtIHR5cGUgdGhlIHNwZWNpZmljIHR5cGUuCi0gICAgICovCi0gICAgdm9pZCBzZXRUeXBlKE9QRVJBVElPTiB0eXBlKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgdHlwZSBvZiBvcGVyYXRpb24gcGVybWlzc2lvbi4KLSAgICAgKiBAcmV0dXJuIG9wZXJhdGlvbiB0eXBlLgotICAgICAqLwotICAgIE9QRVJBVElPTiBnZXRUeXBlKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBBZGQgY29uc3RyYWludCBmb3Igb3BlcmF0aW9uIHBlcm1pc3Npb24uCi0gICAgICogQHBhcmFtIGNvbnN0cmFpbnQgdGhlIGNvbnN0cmFpbnQgcmVsYXRlZCB3aXRoIG9wZXJhdGlvbiBwZXJtaXNzaW9uLgotICAgICAqLwotICAgIHZvaWQgYWRkQ29uc3RyYWludChDb25zdHJhaW50KiBjb25zdHJhaW50KTsKLQotICAgIC8qKgotICAgICAqIEFkZCBjb25zdHJhaW50IGZvciBvcGVyYXRpb24gcGVybWlzc2lvbi4KLSAgICAgKiBAcmV0dXJuIGNvbnN0cmFpbnQgcmVsYXRlZCB3aXRoIG9wZXJhdGlvbiBwZXJtaXNzaW9uLgotICAgICAqLwotICAgIENvbnN0cmFpbnQqIGdldENvbnN0cmFpbnQoKSBjb25zdDsKLQotUFJJVkFURToKLSAgICBPUEVSQVRJT04gbVR5cGU7Ci0gICAgQ29uc3RyYWludCogbUNvbnN0cmFpbnQ7Ci0KLVBSSVZBVEU6Ci0gICAgLyoqCi0gICAgICogRGlzYWJsZSB0aGUgYXNzaWdubWVudCBiZXR3ZWVuIE9wZXJhdGlvblBlcm1pc3Npb25zLgotICAgICAqLwotICAgIE9wZXJhdGlvblBlcm1pc3Npb24mIG9wZXJhdG9yPShjb25zdCBPcGVyYXRpb25QZXJtaXNzaW9uICZvcCk7Ci0KLSAgICAvKioKLSAgICAgKiBEaXNhYmxlIGNvcHkgY29uc3RydXRvci4KLSAgICAgKi8KLSAgICBPcGVyYXRpb25QZXJtaXNzaW9uKGNvbnN0IE9wZXJhdGlvblBlcm1pc3Npb24gJm9wKTsKLX07Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvUmlnaHQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL1JpZ2h0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0N2U0ODQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvUmlnaHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfUklHSFRfSAotI2RlZmluZSBfUklHSFRfSAotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8dXZlY3Rvci5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDxyaWdodHMvQ29uc3RyYWludC5oPgotI2luY2x1ZGUgPHJpZ2h0cy9PcGVyYXRpb25QZXJtaXNzaW9uLmg+Ci11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotY2xhc3MgUmlnaHQgewotcHVibGljOgotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZvciBSaWdodC4KLSAgICAgKi8KLSAgICBSaWdodCgpOwotCi0gICAgLyoqCi0gICAgICogRGVzdHJ1Y3RvciBmb3IgUmlnaHQuCi0gICAgICovCi0gICAgflJpZ2h0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBBZGQgdGhlIGFzc2V0IGlkIHJlbGF0ZWQgd2l0aCByaWdodCBpbnRvIGFzc2V0IG5hbWUgbGlzdC4KLSAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBhc3NldC4KLSAgICAgKi8KLSAgICB2b2lkIGFkZEFzc2V0SUQoY29uc3Qgc3RyaW5nJiBpZCk7Ci0KLSAgICAvKioKLSAgICAgKiBBZGQgYSBvcGVyYXRpb24gcGVybWlzc2lvbiBpbnRvIHJpZ2h0J3Mgb3BlcmF0aW9uIHBlcm1pc3Npb24gbGlzdC4KLSAgICAgKiBAcGFyYW0gb3AgYSBwb2ludGVyIG9mIG9wZXJhdGlvbiBwZXJtaXNzaW9uLgotICAgICAqLwotICAgIHZvaWQgYWRkT3BlcmF0aW9uUGVybWlzc2lvbihPcGVyYXRpb25QZXJtaXNzaW9uKiBvcCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGNvbnN0cmFpbnQgcmVsYXRlZCB3aXRoIG9wZXJhdGlvbiB0eXBlLgotICAgICAqIEBwYXJhbSB0eXBlIHRoZSBzcGVjaWZpYyBvcGVyYXRpb24gdHlwZS4KLSAgICAgKiBAcmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kIG90aGVyd2lzZSB0aGUgY29uc3RyYWludCBwb2ludGVyLgotICAgICAqLwotICAgIENvbnN0cmFpbnQqIGdldENvbnN0cmFpbnQoT3BlcmF0aW9uUGVybWlzc2lvbjo6T1BFUkFUSU9OIHR5cGUpOwotCi0gICAgLyoqCi0gICAgICogVGVzdCB3aGV0aGVyIHRoZSByaWdodCBoYXMgc3BlY2lmaWMgb3BlcmF0aW9uIHR5cGUgb3Igbm90LgotICAgICAqIEBwYXJhbSB0eXBlIHRoZSBzcGVjaWZpYyB0eXBlLgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgY2hlY2tQZXJtaXNzaW9uKE9wZXJhdGlvblBlcm1pc3Npb246Ok9QRVJBVElPTiB0eXBlKTsKLQotcHVibGljOgotICAgIHZlY3RvcjxzdHJpbmc+IG1Bc3NldE5hbWVMaXN0OwotCi1QUklWQVRFOgotICAgIHZlY3RvcjxPcGVyYXRpb25QZXJtaXNzaW9uKj4gbU9wTGlzdDsKLQotUFJJVkFURToKLQotICAgIC8qKgotICAgICAqIERpc2FibGUgdGhlIGFzc2lnbm1lbnQgYmV0d2VlbiByaWdodHMuCi0gICAgICovCi0gICAgUmlnaHQmIG9wZXJhdG9yPShjb25zdCBSaWdodCYgcmlnaHQpOwotCi0gICAgLyoqCi0gICAgICogRGlzYWJsZSBjb3B5IGNvbnN0cnVjdG9yLgotICAgICAqLwotICAgIFJpZ2h0KGNvbnN0IFJpZ2h0JiByaWdodCk7Ci0gICB9OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL1JvLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9Sby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmYwYTk3Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL1JvLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpZm5kZWYgX1JPX0hfCi0jZGVmaW5lIF9ST19IXwotCi0jaW5jbHVkZSA8cmlnaHRzL0Fzc2V0Lmg+Ci0jaW5jbHVkZSA8cmlnaHRzL1JpZ2h0Lmg+Ci0jaW5jbHVkZSA8dXZlY3Rvci5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDxzaXN0cmVhbS5oPgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLWNsYXNzIEFzc2V0OwotY2xhc3MgWE1MRG9jdW1lbnRJbXBsOwotY2xhc3MgWE1MRWxlbWVudEltcGw7Ci1jbGFzcyBOb2RlSW1wbDsKLQotY2xhc3MgUm8gewotcHVibGljOgotICAgIGVudW0gRVJSQ09ERSB7IFJPX05VTExfU1RSRUFNLCBST19FUlJfQkFEX1hNTCwgUk9fT0ssIFJPX0JBRCB9OwotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0b3IgZm9yIFJvLgotICAgICAqLwotICAgIFJvKCk7Ci0KLSAgICAvKioKLSAgICAgKiBEZXN0cnVjdG9yIGZvciBSby4KLSAgICAgKi8KLSAgICB+Um8oKTsKLQotICAgIC8qKgotICAgICAqIFNldCBpZCBmb3IgUm8uCi0gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiBSby4KLSAgICAgKi8KLSAgICB2b2lkIHNldFJvSUQoc3RyaW5nICZpZCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGlkIG9mIFJvLgotICAgICAqIEByZXR1cm4gdGhlIGlkIG9mIFJvLgotICAgICAqLwotICAgIGNvbnN0IHN0cmluZyYgZ2V0Um9JRCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IHZlcnNpb24gZm9yIFJvLgotICAgICAqLwotICAgIHZvaWQgc2V0Um9WZXJzaW9uKHN0cmluZyAmdmVyc2lvbik7Ci0KLSAgICAvKioKLSAgICAgKiBBZGQgYSBhc3NldCBpbnRvIHJvJ3MgYXNzZXQgbGlzdC4KLSAgICAgKiBAcGFyYW0gYXNzZXQgdGhlIHBvaW50ZXIgb2YgYXNzZXQuCi0gICAgICovCi0gICAgdm9pZCBhZGRBc3NldChBc3NldCogYXNzZXQpOwotCi0gICAgLyoqCi0gICAgICogQWRkIGEgcmlnaHQgaW50byBybydzIHJpZ2h0IGxpc3QuCi0gICAgICogQHBhcmFtIHJpZ2h0IHRoZSBwb2ludGVyIG9mIHJpZ2h0LgotICAgICAqLwotICAgIHZvaWQgYWRkUmlnaHQoUmlnaHQqIHJpZ2h0KTsKLQotICAgIC8qKgotICAgICAqIFNhdmUgdGhlIFJvLgotICAgICAqLwotICAgIGJvb2wgc2F2ZSgpOwotCi0gICAgLyoqCi0gICAgICogVmVyaWZ5IHRoZSBSby4KLSAgICAgKi8KLSAgICBib29sIHZlcmlmeSgpOwotCi0gICAgLyoqCi0gICAgICogUGFyc2UgdGhlIHJvIGZyb20gc3RyZWFtLgotICAgICAqIEBwYXJhbSByb1N0cmVhbSB0aGUgaW5wdXQgcm8gc3RyZWFtLgotICAgICAqIEByZXR1cm4gUk9fT0sgaWYgcGFyc2Ugc3VjY2Vzc2Z1bGx5IG90aGVyd2lzZSByZXR1cm4gZXJyb3IgY29kZS4KLSAgICAgKi8KLSAgICBFUlJDT0RFIHBhcnNlKGlzdHJpbmdzdHJlYW0gKnJvU3RyZWFtKTsKLQotICAgIC8qKgotICAgICAqIENoZWNrIHRoZSBwZXJtaXNzaW9uIG9mIHRoZSBjb250ZW50LgotICAgICAqIEBwYXJhbSB0eXBlIHRoZSBvcGVyYXRpb24gdHlwZS4KLSAgICAgKiBAcGFyYW0gY29udGVudElEIHRoZSBzcGVjaWZpYyBjb250ZW50SUQuCi0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGNoZWNrUGVybWlzc2lvbihPcGVyYXRpb25QZXJtaXNzaW9uOjpPUEVSQVRJT04gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIGNvbnRlbnRJRCk7Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdW1lIHRoZSByaWdodCByZWxhdGVkIHRvIGNvbnRlbnQuCi0gICAgICogQHBhcmFtIHR5cGUgdGhlIG9wZXJhdGlvbiB0eXBlLgotICAgICAqIEBwYXJhbSBjb250ZW50SUQgdGhlIHNwZWNpZmljIGNvbnRlbnRJRC4KLSAgICAgKiBAcmV0dXJuIHRoZSBzdGF0dXMgb2YgY29uc3VtZS4KLSAgICAgKi8KLSAgICBFUlJDT0RFIGNvbnN1bWUoT3BlcmF0aW9uUGVybWlzc2lvbjo6T1BFUkFUSU9OIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgY29udGVudElEKTsKLQotICAgIC8qKgotICAgICAqIEdldCBDRUsgb2YgY29udGVudC4KLSAgICAgKiBAcGFyYW0gY29udGVudElEIHRoZSBzcGVjaWZpYyBjb250ZW50IGlkLgotICAgICAqIEByZXR1cm4gIiIgaWYgbm90IGZvdW5kIG90aGVyd2lzZSByZXR1cm4gQ0VLLgotICAgICAqLwotICAgIHN0cmluZyBnZXRDb250ZW50Q2VrKGNvbnN0IHN0cmluZyYgY29udGVudElEKTsKLQotICAgIC8qKgotICAgICAqIEdldCBEaWdlc3QgdmFsdWUgb2YgY29udGVudC4KLSAgICAgKiBAcGFyYW0gY29udGVudElEIHRoZSBzcGVjaWZpYyBjb250ZW50IGlkLgotICAgICAqIEByZXR1cm4gIiIgaWYgbm90IGZvdW5kIG90aGVyd2lzZSByZXR1cm4gZGlnZXN0IHZhbHVlLgotICAgICAqLwotICAgIHN0cmluZyBnZXRDb250ZW50SGFzaChjb25zdCBzdHJpbmcmIGNvbnRlbnRJRCk7Ci0KLVBSSVZBVEU6Ci0gICAgLyoqCi0gICAgICogSGFuZGxlIHRoZSB4bWwgZG9tIGRvY3VtZW50LgotICAgICAqIEBwYXJhbSBkb2MgdGhlIHBvaW50ZXIgdG8gdGhlIGRvbSBkb2N1bWVudC4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGhhbmRsZURvY3VtZW50KGNvbnN0IFhNTERvY3VtZW50SW1wbCogZG9jKTsKLQotICAgIC8qKgotICAgICAqIEhhbmRsZSB0aGUgeG1sIGRvbSBub2RlIHdoaWNoIGNvbnRhaW5zIDxyaWdodD4gZWxlbWVudC4KLSAgICAgKiBAcGFyYW0gY3VyTm9kZSB0aGUgZG9tIG5vZGUgd2hpY2ggY29udGFpbnMgPHJpZ2h0PiBlbGVtZW50LgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaGFuZGxlUmlnaHRzKGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKTsKLQotICAgIC8qKgotICAgICAqIEhhbmRsZSB0aGUgeG1sIGRvbSBub2RlIHdoaWNoIGNvbnRhaW5zIHRoZSA8YWdyZWVtZW50PiBlbGVtZW50LgotICAgICAqIEBwYXJhbSBjdXJOb2RlIHRoZSBkb20gbm9kZSB3aGljaCBjb250YWlucyA8YWdyZWVtZW50PiBlbGVtZW50LgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaGFuZGxlQWdyZWVtZW50KGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKTsKLQotICAgIC8qKgotICAgICAqIEhhbmRsZSB0aGUgeG1sIGRvbSBub2RlIHdoaWNoIGNvbnRhaW5zIHRoZSA8YXNzZXQ+IGVsZW1lbnQuCi0gICAgICogQHBhcmFtIGN1ck5vZGUgdGhlIGRvbSBub2RlIHdoaWNoIGNvbnRhaW5zIDxhc3NldD4gZWxlbWVudC4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGhhbmRsZUFzc2V0KGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKTsKLQotICAgIC8qKgotICAgICAqIEhhbmRsZSB0aGUgeG1sIGRvbSBub2RlIHdoaWNoIGNvbnRhaW5zIHRoZSA8cGVybWlzc2lvbj4gZWxlbWVudC4KLSAgICAgKiBAcGFyYW0gY3VyTm9kZSB0aGUgZG9tIG5vZGUgd2hpY2ggY29udGFpbnMgPHBlcm1pc3Npb24+IGVsZW1lbnQuCi0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBoYW5kbGVQZXJtaXNzaW9uKGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgY29uc3RyYWludCBpbiB4bWwgZG9tIG5vZGUuCi0gICAgICogQHBhcmFtIGN1ck5vZGUgdGhlIGRvbSBub2RlIHdoaWNoIGNvbnRhaW5zIGNvbnN0cmFpbnQuCi0gICAgICogQHJldHVybiB0aGUgY29uc3RyYWludC4KLSAgICAgKi8KLSAgICBDb25zdHJhaW50KiBnZXRDb25zdHJhaW50KGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKTsKLQotICAgIC8qKgotICAgICAqIENvbnZlcnQgSVNPODYwMSB0aW1lIHRvIGxvbmcuCi0gICAgICogQHBhcmFtIHRzIHRoZSBzdHJpbmcgd2l0aCBJU084NjAxIHRpbWUuCi0gICAgICogQHJldHVybiB0aGUgcmVzdWx0IHZhbHVlLgotICAgICAqLwotICAgIGxvbmcgY29udmVydElTTzg2MDFEYXRlVGltZVRvTG9uZyhjb25zdCBjaGFyKiB0cyk7Ci0KLSAgICAvKioKLSAgICAgKiBDb252ZXJ0IElTTzg2MDEgcGVyaW9kIHRvIGxvbmcuCi0gICAgICogQHBhcmFtIHRzIHRoZSBzdHJpbmcgd2l0aCBJU084NjAxIHBlcmlvZC4KLSAgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgdmFsdWUuCi0gICAgICovCi0gICAgbG9uZyBjb252ZXJ0SVNPODYwMVBlcmlvZFRvTG9uZyhjb25zdCBjaGFyKiB0cyk7Ci0KLSAgICAvKioKLSAgICAgKiBMb2FkIHRoZSByaWdodHMgcmVsYXRlZCB3aXRoIHNwZWNpZmljIGNvbnRlbnRpbnRvIGNvbnRlbnQgcmlnaHRzIGxpc3QuCi0gICAgICogQHBhcmFtIGNvbnRlbnRJRCB0aGUgc3BlY2lmaWMgY29udGVudCBpZC4KLSAgICAgKi8KLSAgICB2b2lkIGxvYWRSaWdodHMoY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpOwotCi0gICAgLyoqCi0gICAgICogRnJlZSB0aGUgY3VycmVudCBjb250ZW50IHJpZ2h0cyBsaXN0LgotICAgICAqLwotICAgIHZvaWQgZnJlZVJpZ2h0cygpOwotCi1QUklWQVRFOgotICAgIC8qKgotICAgICAqIERpc2FibGUgdGhlIGFzc2lnbm1lbnQgYmV0d2VlbiByaWdodHMuCi0gICAgICovCi0gICAgUm8mIG9wZXJhdG9yPShjb25zdCBSbyYgcm8pOwotCi0gICAgLyoqCi0gICAgICogRGlzYWJsZSBjb3B5IGNvbnN0cnVjdG9yLgotICAgICAqLwotICAgIFJvKGNvbnN0IFJvJiBybyk7Ci0KLXB1YmxpYzoKLSAgICB2ZWN0b3I8QXNzZXQqPiBtQXNzZXRMaXN0OwotICAgIHZlY3RvcjxSaWdodCo+IG1SaWdodExpc3Q7Ci0KLVBSSVZBVEU6Ci0gICAgc3RyaW5nIG1Sb0lEOyAvKiogdGhlIFJvIGlkLiAqLwotICAgIHN0cmluZyBtUm9WZXJzaW9uOyAvKiogdGhlIFJvIHZlcnNpb24uICovCi0gICAgWE1MRG9jdW1lbnRJbXBsICptRG9jOyAvKio8IHRoZSB4bWwgZG9jdW1lbnQgaGFuZGxlLiAqLwotICAgIHZlY3RvcjxSaWdodCo+IG1Db250ZW50UmlnaHRMaXN0OyAvKio8IHRoZSByaWdodCBsaXN0IHRvIHN0b3JlIHRoZSByZXN1bHQgcmVsYXRlZCB3aXRoIHNwZWNpZmljIGNvbnRlbnQuICovCi0gICAgUmlnaHQqIG1Qcm9wZXJSaWdodDsgLyoqPCB0aGUgcmlnaHQgdG8gY29uc3VtZS4gKi8KLX07Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL1JvTWFuYWdlci5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvUm9NYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZTllZWYuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvUm9NYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX1JPTUFOQUdFUl9ICi0jZGVmaW5lIF9ST01BTkFHRVJfSAotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8dXN0cmluZy5oPgotI2luY2x1ZGUgPHJpZ2h0cy9Sby5oPgotCi11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotY2xhc3MgUm9NYW5hZ2VyIHsKLQotcHVibGljOgotICAgIC8qKgotICAgICAqIFNpbmdsZXRvbiBpbnN0YW5jZSBmdW5jdGlvbi4KLSAgICAgKiBAcmV0dXJuIHRoZSBzaW5nbGV0b24gcG9pbnRlci4KLSAgICAgKi8KLSAgICBzdGF0aWMgUm9NYW5hZ2VyKiBJbnN0YW5jZSgpOwotCi0gICAgLyoqCi0gICAgICogRGVzdHJ1Y3RvciBmb3IgRXhwYXRXcmFwcGVyLgotICAgICAqLwotICAgIH5Sb01hbmFnZXIoKTsKLQotICAgIC8qKgotICAgICAqIEluc3RhbGwgUm8gZnJvbSBzdHJlYW0uCi0gICAgICogQHBhcmFtIHJvU3RyZWFtIHRoZSBpbnB1dCBybyBzdHJlYW0uCi0gICAgICogQHJldHVybiB0aGUgc3RhdHVzIG9mIGluc3RhbGxhbHRpb24uCi0gICAgICovCi0gICAgUm86OkVSUkNPREUgaW5zdGFsbFJvKGlzdHJpbmdzdHJlYW0gKnJvU3RyZWFtKTsKLQotICAgIC8qKgotICAgICAqIENoZWNrIHdoZXRoZXIgUm8gaW4gY2FjaGUgb3Igbm90LgotICAgICAqIEBwYXJhbSByb0lEIHRoZSBzcGVjaWZpYyByb0lELgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBjaGVja1JvSW5DYWNoZShjb25zdCBzdHJpbmcmIHJvSUQpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSByby4KLSAgICAgKiBAcGFyYW0gcm9JRCB0aGUgc3BlY2lmaWMgaWQgb2Ygcm8uCi0gICAgICogQHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZCBvdGhlcndpc2UgcmV0dXJuIHJvLgotICAgICAqLwotICAgIFJvKiBnZXRSbyhjb25zdCBzdHJpbmcmIHJvSUQpOwotCi0gICAgLyoqCi0gICAgICogR2V0IGFsbCB0aGUgUm8uCi0gICAgICogQHJldHVybiBybyBsaXN0LgotICAgICAqLwotICAgIHZlY3RvcjxSbyo+IGdldEFsbFJvKCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgcm8gd2hpY2ggY29udGFpbmVkIHJpZ2h0cyBvZiBzcGVjaWZpYyBjb250ZW50LgotICAgICAqIEBwYXJhbSBjb250ZW50SUQgdGhlIHNwZWNpZmljIGlkIG9mIGNvbnRlbnQuCi0gICAgICogQHJldHVybiBOVUxMIGlmIG5vdCBmb3VudCBvdGhlcndpc2UgdGhlIHJlbGF0ZWQgcm8uCi0gICAgICovCi0gICAgUm8qIGdldFJvQnlDb250ZW50SUQoY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpOwotCi0gICAgLyoqCi0gICAgICogRGVsZXRlIFJvIGJ5IGl0cyBpZC4KLSAgICAgKiBAcGFyYW0gcm9JRCB0aGUgc3BlY2lmaWMgcm9JRC4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGRlbGV0ZVJvKGNvbnN0IHN0cmluZyYgcm9JRCk7Ci0KLQotUFJJVkFURToKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RvciBmb3IgUm9NYW5hZ2VyLgotICAgICAqLwotICAgIFJvTWFuYWdlcigpOwotCi1QUklWQVRFOgotICAgIHN0YXRpYyBSb01hbmFnZXIqIG1zSW5zdGFuY2U7IC8qKjwgc2luZ2xldG9uIGluc3RhbmNlIHBvaW50ZXIuICovCi0gICAgdmVjdG9yPFJvKj4gbVJvTGlzdDsgLyoqPCB0aGUgcm8gbGlzdC4gKi8KLX07Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yb2FwL1JlZ2lzdHJhdGlvbi5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yb2FwL1JlZ2lzdHJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmVlZDhlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcm9hcC9SZWdpc3RyYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfUkVHSVNUUkFUSU9OXwotI2RlZmluZSBfUkVHSVNUUkFUSU9OXwotCi0jaW5jbHVkZSA8cm9hcC9Sb2FwTWVzc2FnZUhhbmRsZXIuaD4KLQotY2xhc3MgUmVnaXN0cmF0aW9uIDogcHVibGljIFJvYXBNZXNzYWdlSGFuZGxlcgotewotcHVibGljOgotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZvciBSZWdpc3RyYXRpb24uCi0gICAgICogQHBhcmFtIHR5cGUgdGhlIGFkZHJlc3Mgb2YgUkkuCi0gICAgICovCi0gICAgUmVnaXN0cmF0aW9uKHN0cmluZyByaUFkZHJlcyk7Ci0KLSAgICAvKioKLSAgICAgKiBSZWdpc3RyYXRpb24gd2l0aCB0aGUgUkkuCi0gICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHJlZ2lzdHJhdGlvbi4KLSAgICAgKi8KLSAgICBpbnQxNl90IHJlZ2lzdGVyV2l0aFJJKCk7Ci0KLSAgICAvKioKLSAgICAgKiBDcmVhdGUgb25lIHNwZWNpZmllZCBjbGllbnQgbWVzc2FnZSBiYXNlZCBvbiBtZXNzYWdlIHRlbXBsYXRlIHhtbCBmaWxlLgotICAgICAqIEBwYXJhbSB0eXBlIHRoZSBtZXNzYWdlIHR5cGUuICAgICAKLSAgICAgKiBAcmV0dXJuIHRoZSBwb2ludGVyIG9mIHRoZSBkb2N1bWVudCBvYmplY3Qgb2YgdGhlIG1lc3NhZ2UgaWYgc3VjY2Vzc2Z1bCxvdGhlcndpc2UKLSAgICAgKiAgICAgICAgIHJldHVybiBOVUxMLgotICAgICAqLwotICAgICBYTUxEb2N1bWVudEltcGwqIGNyZWF0ZUNsaWVudE1zZyhpbnQxNl90IHR5cGUpOwotfQotI2VuZGlmIF9SRUdJU1RSQVRJT05fCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JvYXAvUm9hcE1lc3NhZ2VIYW5kbGVyLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JvYXAvUm9hcE1lc3NhZ2VIYW5kbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMTA0N2YuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yb2FwL1JvYXBNZXNzYWdlSGFuZGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9ST0FQTUVTU0FHRUhBRExFUl8KLSNkZWZpbmUgX1JPQVBNRVNTQUdFSEFETEVSXwotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8dXRpbC94bWwvWE1MRG9jdW1lbnRJbXBsLmg+Ci0KLWNsYXNzIFJvYXBNZXNzYWdlSGFuZGxlcgotewotcHVibGljOgotICAgIC8qKgotICAgICAqIGRlZmluZSBhbGwgdGhlIGNsaWVudCBtZXNzYWdlIHR5cGVzLgotICAgICAqLwotICAgICBlbnVtIG1zZ1R5cGUge0RldmljZUhlbGxvPTEsUmVnaXN0cmF0aW9uUmVxdWVzdCxST1JlcXVlc3R9OwotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0b3IgZm9yIERybU1hbmFnZXIsdXNlZCB0byBvcGVuIGxvY2FsIGRjZiBmaWxlLgotICAgICAqIEBwYXJhbSB0eXBlIHRoZSBtZXNzYWdlIHR5cGUuCi0gICAgICovCi0gICAgIFJvYXBNZXNzYWdlSGFuZGxlcigpOwotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlIG9uZSBzcGVjaWZpZWQgY2xpZW50IG1lc3NhZ2UgYmFzZWQgb24gbWVzc2FnZSB0ZW1wbGF0ZSB4bWwgZmlsZS4KLSAgICAgKiBAcGFyYW0gdHlwZSB0aGUgbWVzc2FnZSB0eXBlLiAgICAgCi0gICAgICogQHJldHVybiB0aGUgcG9pbnRlciBvZiB0aGUgZG9jdW1lbnQgb2JqZWN0IG9mIHRoZSBtZXNzYWdlIGlmIHN1Y2Nlc3NmdWwsb3RoZXJ3aXNlCi0gICAgICogICAgICAgICByZXR1cm4gTlVMTC4KLSAgICAgKi8KLSAgICAgWE1MRG9jdW1lbnRJbXBsKiBjcmVhdGVDbGllbnRNc2cobXNnVHlwZSB0eXBlKTsKLQotICAgIC8qKgotICAgICAqIEhhbmRsZSByZWNlaXZlZCBtZXNzYWdlIGZyb20gUkkuCi0gICAgICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuCi0gICAgICovCi0gICAgYm9vbCBoYW5kbGVQZWVyTXNnKCk7Ci0KLSAgICAvKioKLSAgICAgKiBTZW5kIHRoZSBjbGllbnQgbWVzc2FnZSB0byBSSQotICAgICAqLwotICAgIGludDE2X3Qgc2VuZCgpOwotCi0gICAgLyoqCi0gICAgICogUmVjZWl2ZSBtZXNzYWdlIGZyb20gUkkgYW5kIHBhcnNlIGl0IAotICAgICAqIEByZXR1cm4gdGhlIHBvaW50ZXIgb2YgdGhlIHBhcnNlZCBkb2N1bWVudC4KLSAgICAgKi8KLSAgICBYTUxEb2N1bWVudEltcGwqIHJlY2VpdmUoKTsKLQotUFJPVEVDVEVEOgotICAgIFhNTERvY3VtZW50SW1wbCAqIG1Eb2M7Ci1QUklWQVRFOgotICAgIGludDE2X3QgbU1zZ1R5cGU7Ci19OwotI2VuZGlmIC8vX1JPQVBNRVNTQUdFSEFETEVSXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2NyeXB0by9Ecm1DcnlwdG8uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwZTdiYzEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2NyeXB0by9Ecm1DcnlwdG8uaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBfRFJNQ1JZUFRPX0hfCi0jZGVmaW5lIF9EUk1DUllQVE9fSF8KLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotCi0vLyBBRVMgZW5jcnlwdCBtb2RlCi10eXBlZGVmIGVudW0ge0FFU18xMjhfQ0JDID0gMHgwMSxBRVNfMTI4X0NUUiA9IDB4MDJ9QWVzTW9kZTsKLQotLy8gYWVzIGNyeXB0byBmb3IgZGVjcnlwdAotY2xhc3MgQWVzQWdlbnQKLXsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEFlc0FnZW50KGNvbnN0IEFlc01vZGUgbWV0aG9kLGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRlY3J5cHRlZEtleSkKLSAgICAgICAgICAgIDptb2RlKG1ldGhvZCksQWVzS2V5KGRlY3J5cHRlZEtleSl7fTsKLQotICAgICAgICAvKioNCi0gICAgICAgICAqIGRlY3J5cHQgZGF0YSB1c2luZyBBRVMsIG5vdyBvbmx5IHN1cHBvcnQgMTI4IGJpdHMgQ0JDCi0gICAgICAgICAqIFxwYXJhbSBpdiAgICAgICAxMjggYml0cyBpbml0aWFsaXphdGlvbiB2ZWN0b3IvY291bnRlcgotICAgICAgICAgKiAgICAgICAgICAgICAgICAgcHJlZml4aW5nIHRoZSBjaXBoZXJ0ZXh0DQotICAgICAgICAgKiBccGFyYW0gZW5jRGF0YSAgZW5jcnlwdGVkIGRhdGENCi0gICAgICAgICAqIFxwYXJhbSBlbmNMZW4gICB0aGUgbGVuZ3RoIG9mIGVuY0RhdGENCi0gICAgICAgICAqIFxwYXJhbSBkZWNEYXRhICB0aGUgYnVmZmVyIHRvIHN0b3JlIGRlY3J5cHRlZCBkYXRhDQotICAgICAgICAgKiBccGFyYW0gZGVjTGVuICAgdGhlIGFjdHVhbCBsZW5ndGggb2YgZGVjcnlwdGVkIGRhdGENCi0gICAgICAgICAqIFxyZXR1cm4NCi0gICAgICAgICAqICAgPj0gICBzdWNjZWVkLCB0aGUgcGFkZGluZyBsZW5ndGgNCi0gICAgICAgICAqICAgPCAwICBmYWlsZWQNCi0gICAgICAgICAqLwotICAgICAgICBpbnQzMl90IGRlY0NvbnRlbnQoIHVuc2lnbmVkIGNoYXIqIGl2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGVuY0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBlbmNMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGVjRGF0YSk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IEFFU19ERUNfRkFJTEVEID0gLTE7Ci0KLSAgICBQUklWQVRFOgotICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgQUVTX0tFWV9CSVRTID0gMTI4OwotICAgICAgICBjb25zdCBBZXNNb2RlIG1vZGU7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIEFlc0tleTsKLQotICAgIFBSSVZBVEU6Ci0gICAgICAgIC8vIGdldCB0aGUgYWN0dWFsIGxlbmd0aCBvZiBkZWNyeXB0IGRhdGENCi0gICAgICAgIHZvaWQgZGlzY2FyZFBhZGRpbmdCeXRlKHVuc2lnbmVkIGNoYXIqIGRlY3J5cHRlZEJ1Zix1bnNpZ25lZCBsb25nKiBkZWNyeXB0ZWRCdWZMZW4pOw0KLX07Ci0KLS8vIFNoYTEgY3J5cHRvIGZvciBoYXNoCi1jbGFzcyBTaGExQWdlbnQKLXsKLSAgICBwdWJsaWM6Ci0gICAgICAgIC8qKg0KLSAgICAgICAgICogY29tcHV0ZSBoYXNoIHVzaW5nIFNoYTENCi0gICAgICAgICAqIFxwYXJhbSBpbkRhdGEgICB0aGUgZGF0YSB0byBiZSBoYXNoZWQNCi0gICAgICAgICAqIFxwYXJhbSBpbkxlbiAgICB0aGUgbGVuZ3RoIG9mIGluRGF0YQ0KLSAgICAgICAgICogXHBhcmFtIG91dEhhc2ggIHRoZSBoYXNoIG9mIGluRGF0YQ0KLSAgICAgICAgICogXHJldHVybiAgIG5vbmUNCi0gICAgICAgICAqLw0KLSAgICAgICAgdm9pZCBjb21wdXRlSGFzaCggY29uc3QgdW5zaWduZWQgY2hhciogaW5EYXRhLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbkxlbiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIG91dEhhc2gpIGNvbnN0Ow0KLQ0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBnZXQgdGhlIGxlbmd0aCBvZiBTSEExIGhhc2gNCi0gICAgICAgICAqIFxwYXJhbSAgbm9uZQ0KLSAgICAgICAgICogXHJldHVybg0KLSAgICAgICAgICogICAgICB0aGUgbGVuZ3RoIG9mIFNIQTEgaGFzaA0KLSAgICAgICAgICovDQotICAgICAgICB1bnNpZ25lZCBsb25nIGdldFNoYUxlbih2b2lkKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU0hBX0RJR0VTVF9MRU5HVEg7Ci0gICAgICAgIH0NCi19OwotCi0vLyBIbWFjLVNoYTEgY3J5cHRvIGZvciBNQUMKLWNsYXNzIEhtYWNTaGExQWdlbnQKLXsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEhtYWNTaGExQWdlbnQoY29uc3QgdW5zaWduZWQgY2hhciogS2V5LCBpbnQga2V5X2xlbikKLSAgICAgICAgICA6bWFjS2V5KEtleSksa2V5TGVuKGtleV9sZW4pe307Ci0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBjb21wdXRlIE1BQyB1c2luZyBIbWFjLVNoYTENCi0gICAgICAgICAqIFxwYXJhbSBpbkRhdGEgIHRoZSBkYXRhIHRvIGJlIE1BQw0KLSAgICAgICAgICogXHBhcmFtIGluTGVuICAgdGhlIGxlbmd0aCBvZiBpbkRhdGENCi0gICAgICAgICAqIFxwYXJhbSBvdXRNYWMgIHRoZSBNQUMgb2YgaW5EYXRhDQotICAgICAgICAgKiBccmV0dXJuICAgbm9uZQ0KLSAgICAgICAgICovDQotICAgICAgICB2b2lkIGNvbXB1dGVNYWMoIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluRGF0YSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbkxlbiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogb3V0TWFjKSBjb25zdDsNCi0NCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogZ2V0IHRoZSBsZW5ndGggb2YgSE1BQy1TSEExIE1BQw0KLSAgICAgICAgICogXHBhcmFtICBub25lDQotICAgICAgICAgKiBccmV0dXJuDQotICAgICAgICAgKiAgICAgIHRoZSBsZW5ndGggb2YgSE1BQy1TSEExIE1BQw0KLSAgICAgICAgICovDQotICAgICAgICB1bnNpZ25lZCBsb25nIGdldEhtYWNMZW4odm9pZCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFNIQV9ESUdFU1RfTEVOR1RIOwotICAgICAgICB9Ci0NCi0gICAgUFJJVkFURToKLSAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogbWFjS2V5OwotICAgICAgICBjb25zdCBpbnQga2V5TGVuOwotfTsKLQotLy8gUnNhIGNyeXB0byBmb3Igc2lnbmF0dXJlLHZlcmlmeSBzaWduYXR1cmUgYW5kIGtleSB0cmFuc3BvcnQKLWNsYXNzIFJzYUFnZW50Ci17Ci0gICAgcHVibGljOgotICAgICAgICBSc2FBZ2VudChSU0EmIEtleSk6cnNhS2V5KEtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcnNhU2l6ZSA9ICh1bnNpZ25lZCBpbnQpUlNBX3NpemUoJktleSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gc2lnbmF0dXJlIGFsZ29yaXRobQotICAgICAgICB0eXBlZGVmIGVudW0ge1JTQV9QU1MsUlNBX1NIQTF9UnNhQWxnOwotCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogRG8gc2lnbmF0dXJlIHVzaW5nIFJTQS1QU1MNCi0gICAgICAgICAqIFxwYXJhbSByYXdEYXRhICB0aGUgZGF0YSB0byBiZSBzaWduYXR1cmUNCi0gICAgICAgICAqIFxwYXJhbSByYXdMZW4gICB0aGUgbGVuZ3RoIG9mIGluRGF0YQ0KLSAgICAgICAgICogXHBhcmFtIHNpZ0RhdGEgIHRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIHNpZ25hdHVyZSBvZiByYXdEYXRhCi0gICAgICAgICAqIFxwYXJhbSBzaWdBbGcgICBzaWduYXR1cmUgYWxnb3JpdGhtDQotICAgICAgICAgKiBccmV0dXJuDQotICAgICAgICAgKiAgIHRydWUgICBzdWNjZWVkDQotICAgICAgICAgKiAgIGZhbHNlICBmYWlsZWQNCi0gICAgICAgICAqLw0KLSAgICAgICAgYm9vbCBzaWduYXR1cmUoIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHJhd0RhdGEsDQotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyByYXdMZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc2lnRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJzYUFsZyBzaWdBbGcpOw0KLQ0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBnZXQgdGhlIGxlbmd0aCBvZiBzaWduYXR1cmUNCi0gICAgICAgICAqIFxwYXJhbSAgbm9uZQ0KLSAgICAgICAgICogXHJldHVybg0KLSAgICAgICAgICogICAgICB0aGUgbGVuZ3RoIG9mIHNpZ25hdHVyZQ0KLSAgICAgICAgICovDQotICAgICAgICB1bnNpZ25lZCBpbnQgZ2V0U2lnTGVuKHZvaWQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByc2FTaXplOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBWZXJpZnkgc2lnbmF0dXJlIHVzaW5nIFJTQS1QU1MNCi0gICAgICAgICAqIFxwYXJhbSBzaWdEYXRhICB0aGUgZGF0YSB0byBiZSB2ZXJpZnkNCi0gICAgICAgICAqIFxwYXJhbSBzaWdMZW4gICB0aGUgbGVuZ3RoIG9mIHNpZ0RhdGEKLSAgICAgICAgICogXHBhcmFtIHJhd0RhdGEgIHRoZSBkYXRhIGZyb20gd2hpY2ggdGhlIHNpZ0RhdGEgZ2VuZXJhdGVkCi0gICAgICAgICAqIFxwYXJhbSByYXdMZW4gICB0aGUgbGVuZ3RoIG9mIHJhd0RhdGEKLSAgICAgICAgICogXHBhcmFtIHNpZ0FsZyAgIHNpZ25hdHVyZSBhbGdvcml0aG0NCi0gICAgICAgICAqIFxyZXR1cm4NCi0gICAgICAgICAqICAgdHJ1ZSAgIHN1Y2NlZWQNCi0gICAgICAgICAqICAgZmFsc2UgIGZhaWxlZA0KLSAgICAgICAgICovDQotICAgICAgICBib29sIHNpZ1ZlcmlmeSh1bnNpZ25lZCBjaGFyKiBzaWdEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpZ0xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogcmF3RGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyByYXdMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJzYUFsZyBzaWdBbGcpOwotDQotCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogRGVjcnlwdCBkYXRhIHVzaW5nIFJTQQ0KLSAgICAgICAgICogXHBhcmFtIGVuY0RhdGEgIGVuY3J5cHRlZCBkYXRhDQotICAgICAgICAgKiBccGFyYW0gZW5jTGVuICAgdGhlIGxlbmd0aCBvZiBlbmNEYXRhDQotICAgICAgICAgKiBccGFyYW0gZGVjRGF0YSAgdGhlIGJ1ZmZlciB0byBzdG9yZSBkZWNyeXB0ZWQgZGF0YQ0KLSAgICAgICAgICogXHJldHVybg0KLSAgICAgICAgICogICAtMSAgZGVjcnlwdGVkIGZhaWxlZA0KLSAgICAgICAgICogICA+MCAgdGhlIGFjdHVhbCBsZW5ndGggb2YgZGVjcnlwdGVkIGRhdGENCi0gICAgICAgICAqLw0KLSAgICAgICAgaW50IGRlY3J5cHQoIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGVuY0RhdGEsDQotICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBlbmNMZW4sDQotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGVjRGF0YSk7DQotDQotICAgICAgICAvKioNCi0gICAgICAgICAqIGdldCB0aGUgbGVuZ3RoIG9mIGRlY3J5cHRlZCBkYXRhDQotICAgICAgICAgKiBccGFyYW0gbm9uZQ0KLSAgICAgICAgICogXHJldHVybg0KLSAgICAgICAgICogICAgICB0aGUgbGVuZ3RoIG9mIGRlY3J5cHRlZCBkYXRhDQotICAgICAgICAgKi8NCi0gICAgICAgIHVuc2lnbmVkIGludCBnZXREZWNMZW4odm9pZCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICByZXR1cm4gcnNhU2l6ZTsKLSAgICAgICAgfQotDQotICAgIFBSSVZBVEU6Ci0gICAgICAgIFJTQSYgcnNhS2V5OwotICAgICAgICB1bnNpZ25lZCBpbnQgcnNhU2l6ZTsKLX07Ci0KLQotI2VuZGlmIC8qIF9EUk1DUllQVE9fSF8gKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0NoYXJhY3RlckRhdGFJbXBsLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9DaGFyYWN0ZXJEYXRhSW1wbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWFiMzFlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0NoYXJhY3RlckRhdGFJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9fQ0hBUkFDVEVSX0lNUExfXw0KLSNkZWZpbmUgX19DSEFSQUNURVJfSU1QTF9fDQotDQotI2luY2x1ZGUgIk5vZGVJbXBsLmgiDQotI2luY2x1ZGUgIkRPTVN0cmluZy5oIg0KLQ0KLWNsYXNzIENoYXJhY3RlckRhdGFJbXBsIDogcHVibGljIE5vZGVJbXBsDQotew0KLXByaXZhdGU6DQotICAgIERPTVN0cmluZyogY2hhckRhdGE7DQotcHVibGljOg0KLQ0KLSAgICAgLyoqDQotICAgICAgKiBEZWZhdWx0IENvbnN0cnVjdG9yIGZvciBDaGFyYWN0ZXJEYXRhSW1wbC4NCi0gICAgICAqLw0KLSAgICAgQ2hhcmFjdGVyRGF0YUltcGwoKTsNCi0NCi0gICAgIC8qKg0KLSAgICAgICogQ29uc3RydWN0b3IgZm9yIENoYXJhY3RlckRhdGFJbXBsLg0KLSAgICAgICogQHBhcmFtIGRhdGEgVGhlIHNwZWNpZnkgY2hhcmFjdGVyIGRhdGEuDQotICAgICAgKi8NCi0gICAgIENoYXJhY3RlckRhdGFJbXBsKGNvbnN0IERPTVN0cmluZyogZGF0YSk7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgY2hhcmFjdGVyIGRhdGEgb2YgdGhlIG5vZGUgdGhhdCBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlLiBUaGUgRE9NDQotICAgICAqIGltcGxlbWVudGF0aW9uIG1heSBub3QgcHV0IGFyYml0cmFyeSBsaW1pdHMgb24gdGhlIGFtb3VudCBvZiBkYXRhDQotICAgICAqIHRoYXQgbWF5IGJlIHN0b3JlZCBpbiBhIDxjb2RlPkNoYXJhY3RlckRhdGE8L2NvZGU+IG5vZGUuIEhvd2V2ZXIsDQotICAgICAqIGltcGxlbWVudGF0aW9uIGxpbWl0cyBtYXkgbWVhbiB0aGF0IHRoZSBlbnRpcmV0eSBvZiBhIG5vZGUncyBkYXRhIG1heQ0KLSAgICAgKiBub3QgZml0IGludG8gYSBzaW5nbGUgPGNvZGU+RE9NU3RyaW5nPC9jb2RlPi4gSW4gc3VjaCBjYXNlcywgdGhlIHVzZXINCi0gICAgICogbWF5IGNhbGwgPGNvZGU+c3Vic3RyaW5nRGF0YTwvY29kZT4gdG8gcmV0cmlldmUgdGhlIGRhdGEgaW4NCi0gICAgICogYXBwcm9wcmlhdGVseSBzaXplZCBwaWVjZXMuDQotICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uDQotICAgICAqICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiBSYWlzZWQgd2hlbiB0aGUgbm9kZSBpcyByZWFkb25seS4NCi0gICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICogICBET01TVFJJTkdfU0laRV9FUlI6IFJhaXNlZCB3aGVuIGl0IHdvdWxkIHJldHVybiBtb3JlIGNoYXJhY3RlcnMgdGhhbg0KLSAgICAgKiAgIGZpdCBpbiBhIDxjb2RlPkRPTVN0cmluZzwvY29kZT4gdmFyaWFibGUgb24gdGhlIGltcGxlbWVudGF0aW9uDQotICAgICAqICAgcGxhdGZvcm0uDQotICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciBkYXRhLg0KLSAgICAgKi8NCi0gICAgY29uc3QgRE9NU3RyaW5nKiBnZXREYXRhKCkgY29uc3QgdGhyb3cgKERPTUV4Y2VwdGlvbik7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgY2hhcmFjdGVyIGRhdGEgb2YgdGhlIG5vZGUgdGhhdCBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlLiBUaGUgRE9NDQotICAgICAqIGltcGxlbWVudGF0aW9uIG1heSBub3QgcHV0IGFyYml0cmFyeSBsaW1pdHMgb24gdGhlIGFtb3VudCBvZiBkYXRhDQotICAgICAqIHRoYXQgbWF5IGJlIHN0b3JlZCBpbiBhIDxjb2RlPkNoYXJhY3RlckRhdGE8L2NvZGU+IG5vZGUuIEhvd2V2ZXIsDQotICAgICAqIGltcGxlbWVudGF0aW9uIGxpbWl0cyBtYXkgbWVhbiB0aGF0IHRoZSBlbnRpcmV0eSBvZiBhIG5vZGUncyBkYXRhIG1heQ0KLSAgICAgKiBub3QgZml0IGludG8gYSBzaW5nbGUgPGNvZGU+RE9NU3RyaW5nPC9jb2RlPi4gSW4gc3VjaCBjYXNlcywgdGhlIHVzZXINCi0gICAgICogbWF5IGNhbGwgPGNvZGU+c3Vic3RyaW5nRGF0YTwvY29kZT4gdG8gcmV0cmlldmUgdGhlIGRhdGEgaW4NCi0gICAgICogYXBwcm9wcmlhdGVseSBzaXplZCBwaWVjZXMuDQotICAgICAqIEBwYXJhbSBkYXRhIHRoZSBzcGVjaWZ5IGNoYXJhY3RlciBkYXRhLg0KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbg0KLSAgICAgKiAgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIHdoZW4gdGhlIG5vZGUgaXMgcmVhZG9ubHkuDQotICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uDQotICAgICAqICAgRE9NU1RSSU5HX1NJWkVfRVJSOiBSYWlzZWQgd2hlbiBpdCB3b3VsZCByZXR1cm4gbW9yZSBjaGFyYWN0ZXJzIHRoYW4NCi0gICAgICogICBmaXQgaW4gYSA8Y29kZT5ET01TdHJpbmc8L2NvZGU+IHZhcmlhYmxlIG9uIHRoZSBpbXBsZW1lbnRhdGlvbg0KLSAgICAgKiAgIHBsYXRmb3JtLg0KLSAgICAgKi8NCi0gICAgdm9pZCBzZXREYXRhKGNvbnN0IERPTVN0cmluZyogZGF0YSkgdGhyb3cgKERPTUV4Y2VwdGlvbik7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbnVtYmVyIG9mIDE2LWJpdCB1bml0cyB0aGF0IGFyZSBhdmFpbGFibGUgdGhyb3VnaCA8Y29kZT5kYXRhPC9jb2RlPg0KLSAgICAgKiBhbmQgdGhlIDxjb2RlPnN1YnN0cmluZ0RhdGE8L2NvZGU+IG1ldGhvZCBiZWxvdy4gVGhpcyBtYXkgaGF2ZSB0aGUNCi0gICAgICogdmFsdWUgemVybywgaS5lLiwgPGNvZGU+Q2hhcmFjdGVyRGF0YTwvY29kZT4gbm9kZXMgbWF5IGJlIGVtcHR5Lg0KLSAgICAgKiBAcmV0dXJuIHRoZSBzaXplIG9mIGNoYXJhY3RlcnMgZGF0YS4NCi0gICAgICovDQotICAgIGludCBnZXRMZW5ndGgoKSBjb25zdDsNCi0NCi0gICAgLyoqDQotICAgICAqIEFwcGVuZCB0aGUgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGNoYXJhY3RlciBkYXRhIG9mIHRoZSBub2RlLiBVcG9uDQotICAgICAqIHN1Y2Nlc3MsIDxjb2RlPmRhdGE8L2NvZGU+IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgY29uY2F0ZW5hdGlvbiBvZg0KLSAgICAgKiA8Y29kZT5kYXRhPC9jb2RlPiBhbmQgdGhlIDxjb2RlPkRPTVN0cmluZzwvY29kZT4gc3BlY2lmaWVkLg0KLSAgICAgKiBAcGFyYW0gYXJnIFRoZSA8Y29kZT5ET01TdHJpbmc8L2NvZGU+IHRvIGFwcGVuZC4NCi0gICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICogICBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6IFJhaXNlZCBpZiB0aGlzIG5vZGUgaXMgcmVhZG9ubHkuDQotICAgICAqLw0KLSAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgRE9NU3RyaW5nKiBhcmcpIHRocm93KERPTUV4Y2VwdGlvbik7DQotDQotICAgIC8qKiBPdmVycmlkZSBnZXROb2RlVmFsdWUoKSBtZXRob2QgaW4gTm9kZUltcGwuaC4qLw0KLSAgICBjb25zdCBET01TdHJpbmcqIGdldE5vZGVWYWx1ZSgpIGNvbnN0IHRocm93KERPTUV4Y2VwdGlvbik7DQotDQotICAgIC8qKiBPdmVycmlkZSBzZXROb2RlVmFsdWUoKSBtZXRob2QgaW4gTm9kZUltcGwuaCAqLw0KLSAgICB2b2lkIHNldE5vZGVWYWx1ZShET01TdHJpbmcqIG5vZGVWYWx1ZSkgdGhyb3coRE9NRXhjZXB0aW9uKTsNCi0NCi0gICAgfkNoYXJhY3RlckRhdGFJbXBsKCk7DQotfTsNCi0jZW5kaWYgLypfX0NIQVJBQ1RFUl9JTVBMX18qLw0KLQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0RPTUV4Y2VwdGlvbi5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRE9NRXhjZXB0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxNjUxOWIuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRE9NRXhjZXB0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9fRE9NX0VYQ0VQVElPTl9fDQotI2RlZmluZSBfX0RPTV9FWENFUFRJT05fXw0KLQ0KLSNpbmNsdWRlIDx1ZXhjZXB0aW9uLmg+DQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7DQotDQotLyoqDQotICogRE9NIG9wZXJhdGlvbnMgb25seSByYWlzZSBleGNlcHRpb25zIGluICJleGNlcHRpb25hbCIgY2lyY3Vtc3RhbmNlcywgaS5lLiwNCi0gKiB3aGVuIGFuIG9wZXJhdGlvbiBpcyBpbXBvc3NpYmxlIHRvIHBlcmZvcm0gKGVpdGhlciBmb3IgbG9naWNhbCByZWFzb25zLCBiZWNhdXNlIGRhdGEgaXMgbG9zdCwNCi0gKiBvciBiZWNhdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgYmVjb21lIHVuc3RhYmxlKS4gSW4gZ2VuZXJhbCwgRE9NIG1ldGhvZHMgcmV0dXJuIHNwZWNpZmljIGVycm9yDQotICogdmFsdWVzIGluIG9yZGluYXJ5IHByb2Nlc3Npbmcgc2l0dWF0aW9ucywgc3VjaCBhcyBvdXQtb2YtYm91bmQgZXJyb3JzIHdoZW4gdXNpbmcgPGNvZGU+Tm9kZUxpc3Q8L2NvZGU+Lg0KLSAqIDxwPkltcGxlbWVudGF0aW9ucyBzaG91bGQgcmFpc2Ugb3RoZXIgZXhjZXB0aW9ucyB1bmRlciBvdGhlciBjaXJjdW1zdGFuY2VzLiBGb3IgZXhhbXBsZSwgaW1wbGVtZW50YXRpb25zDQotICogc2hvdWxkIHJhaXNlIGFuIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBleGNlcHRpb24gaWYgYSBudWxsIGFyZ3VtZW50IGlzIHBhc3NlZC4NCi0gKiBTb21lIGxhbmd1YWdlcyBhbmQgb2JqZWN0IHN5c3RlbXMgZG8gbm90IHN1cHBvcnQgdGhlIGNvbmNlcHQgb2YgZXhjZXB0aW9ucy4NCi0gKiBGb3Igc3VjaCBzeXN0ZW1zLCBlcnJvciBjb25kaXRpb25zIG1heSBiZSBpbmRpY2F0ZWQgdXNpbmcgbmF0aXZlIGVycm9yIHJlcG9ydGluZyBtZWNoYW5pc21zLg0KLSAqIEZvciBzb21lIGJpbmRpbmdzLCBmb3IgZXhhbXBsZSwgbWV0aG9kcyBtYXkgcmV0dXJuIGVycm9yIGNvZGVzIHNpbWlsYXIgdG8gdGhvc2UgbGlzdGVkIGluIHRoZSBjb3JyZXNwb25kaW5nDQotICogbWV0aG9kIGRlc2NyaXB0aW9ucy4NCi0gKi8NCi1jbGFzcyBET01FeGNlcHRpb24gOiBwdWJsaWMgZXhjZXB0aW9uIHsNCi0NCi0gcHJpdmF0ZToNCi0gICAgICAgIHNob3J0IGNvZGU7DQotIHB1YmxpYzoNCi0gICAgICAgIERPTUV4Y2VwdGlvbihzaG9ydCBjb2RlKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHRoaXMtPmNvZGUgPSBjb2RlOw0KLSAgICAgICAgfQ0KLSBwdWJsaWM6DQotDQotICAgICAgICBlbnVtIEV4Y2VwdGlvblJlYXNvbiB7DQotICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAqIElmIGluZGV4IG9yIHNpemUgaXMgbmVnYXRpdmUsIG9yIGdyZWF0ZXIgdGhhbiB0aGUgYWxsb3dlZCB2YWx1ZQ0KLSAgICAgICAgICAgICovDQotICAgICAgICAgICAgSU5ERVhfU0laRV9FUlIgPSAxLA0KLQ0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGV4dCBkb2VzIG5vdCBmaXQgaW50byBhIERPTVN0cmluZw0KLSAgICAgICAgICAgICAqIEBzaW5jZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIERPTVNUUklOR19TSVpFX0VSUiA9IDIsDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgYW55IG5vZGUgaXMgaW5zZXJ0ZWQgc29tZXdoZXJlIGl0IGRvZXNuJ3QgYmVsb25nDQotICAgICAgICAgICAgICogQHNpbmNlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLURPTS1MZXZlbC0yLUNvcmUtMjAwMDExMTMvY29yZS5odG1sDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSID0gMywNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBhIG5vZGUgaXMgdXNlZCBpbiBhIGRpZmZlcmVudCBkb2N1bWVudCB0aGFuIHRoZSBvbmUgdGhhdCBjcmVhdGVkIGl0DQotICAgICAgICAgICAgICogKHRoYXQgZG9lc24ndCBzdXBwb3J0IGl0KQ0KLSAgICAgICAgICAgICAqIEBzaW5jZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUiA9IDQsDQotDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgYW4gaW52YWxpZCBvciBpbGxlZ2FsIGNoYXJhY3RlciBpcyBzcGVjaWZpZWQsIHN1Y2ggYXMgaW4gYSBuYW1lLiBTZWUNCi0gICAgICAgICAgICAgKiBwcm9kdWN0aW9uIDIgaW4gdGhlIFhNTCBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGVmaW5pdGlvbiBvZiBhIGxlZ2FsDQotICAgICAgICAgICAgICogY2hhcmFjdGVyLCBhbmQgcHJvZHVjdGlvbiA1IGZvciB0aGUgZGVmaW5pdGlvbiBvZiBhIGxlZ2FsIG5hbWUNCi0gICAgICAgICAgICAgKiBjaGFyYWN0ZXIuDQotICAgICAgICAgICAgICogQHNpbmNlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLURPTS1MZXZlbC0yLUNvcmUtMjAwMDExMTMvY29yZS5odG1sDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgSU5WQUxJRF9DSEFSQUNURVJfRVJSID0gNSwNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBkYXRhIGlzIHNwZWNpZmllZCBmb3IgYSBub2RlIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgZGF0YQ0KLSAgICAgICAgICAgICAqIEBzaW5jZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIE5PX0RBVEFfQUxMT1dFRF9FUlIgPSA2LA0KLQ0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBtb2RpZnkgYW4gb2JqZWN0IHdoZXJlIG1vZGlmaWNhdGlvbnMgYXJlIG5vdA0KLSAgICAgICAgICAgICAqIGFsbG93ZWQNCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgPSA3LA0KLQ0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIGFuIGF0dGVtcHQgaXMgbWFkZSB0byByZWZlcmVuY2UgYSBub2RlIGluIGEgY29udGV4dCB3aGVyZSBpdCBkb2VzDQotICAgICAgICAgICAgICogbm90IGV4aXN0DQotICAgICAgICAgICAgICogQHNpbmNlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLURPTS1MZXZlbC0yLUNvcmUtMjAwMDExMTMvY29yZS5odG1sDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgTk9UX0ZPVU5EX0VSUiA9IDgsDQotDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCB0eXBlIG9mIG9iamVjdCBvcg0KLSAgICAgICAgICAgICAqIG9wZXJhdGlvbi4NCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBOT1RfU1VQUE9SVEVEX0VSUiA9IDksDQotDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGFkZCBhbiBhdHRyaWJ1dGUgdGhhdCBpcyBhbHJlYWR5IGluIHVzZQ0KLSAgICAgICAgICAgICAqIGVsc2V3aGVyZQ0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIElOVVNFX0FUVFJJQlVURV9FUlIgPSAxMCwNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gdXNlIGFuIG9iamVjdCB0aGF0IGlzIG5vdCwgb3IgaXMgbm8gbG9uZ2VyLA0KLSAgICAgICAgICAgICAqIHVzYWJsZS4NCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBJTlZBTElEX1NUQVRFX0VSUiA9IDExLA0KLQ0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIGFuIGludmFsaWQgb3IgaWxsZWdhbCBzdHJpbmcgaXMgc3BlY2lmaWVkLg0KLSAgICAgICAgICAgICAqIEBzaW5jZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIFNZTlRBWF9FUlIgPSAxMiwNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4NCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBJTlZBTElEX01PRElGSUNBVElPTl9FUlIgPSAxMywNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gY3JlYXRlIG9yIGNoYW5nZSBhbiBvYmplY3QgaW4gYSB3YXkgd2hpY2ggaXMNCi0gICAgICAgICAgICAgKiBpbmNvcnJlY3Qgd2l0aCByZWdhcmQgdG8gbmFtZXNwYWNlcy4NCi0gICAgICAgICAgICAgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLURPTS1MZXZlbC0yLUNvcmUtMjAwMDExMTMvY29yZS5odG1sDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgTkFNRVNQQUNFX0VSUiA9IDE0LA0KLQ0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIGEgcGFyYW1ldGVyIG9yIGFuIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nDQotICAgICAgICAgICAgICogb2JqZWN0Lg0KLSAgICAgICAgICAgICAqIEBzaW5jZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIElOVkFMSURfQUNDRVNTX0VSUiA9IDE1LA0KLSAgICAgICAgfTsNCi1wdWJsaWM6DQotICAgICAgICAvKioNCi0gICAgICAgICAqIFJldHVybiB0aGUgZXhjZXB0aW9uIHJlYXNvbi4NCi0gICAgICAgICAqIEByZXR1cm4gdGhlIGV4Y2VwdGlvbiByZWFzb24uDQotICAgICAgICAgKi8NCi0gICAgICAgIHNob3J0IGdldENvZGUoKSBjb25zdA0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHJldHVybiBjb2RlOw0KLSAgICAgICAgfQ0KLX07DQotI2VuZGlmIC8qX19ET01FWENFUFRJT05fXyovDQotDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRE9NU3RyaW5nLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9ET01TdHJpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZmMmIxNC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9ET01TdHJpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfX0RPTV9TVFJJTkdfSF9fDQotI2RlZmluZSBfX0RPTV9TVFJJTkdfSF9fDQotDQotI2luY2x1ZGUgPHVzdHJpbmcuaD4NCi11c2luZyBuYW1lc3BhY2UgdXN0bDsNCi10eXBlZGVmIHN0cmluZyBET01TdHJpbmc7DQotDQotY29uc3QgRE9NU3RyaW5nIGVtcHR5U3RyaW5nID0gRE9NU3RyaW5nKCIiKTsNCi0NCi0jZW5kaWYgLypfX0RPTV9TVFJJTkdfSF8qLw0KLQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0RvY3VtZW50SW1wbC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRG9jdW1lbnRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMDNlMmEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRG9jdW1lbnRJbXBsLmgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9FbGVtZW50SW1wbC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRWxlbWVudEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIwYmM0NS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9FbGVtZW50SW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpZm5kZWYgX19ET01fRUxFTUVOVF9JTVBMX18NCi0jZGVmaW5lIF9fRE9NX0VMRU1FTlRfSU1QTF9fDQotI2luY2x1ZGUgIk5vZGVJbXBsLmgiDQotI2luY2x1ZGUgIk5vZGVMaXN0SW1wbC5oIg0KLSNpbmNsdWRlICJOb2RlVHlwZS5oIg0KLQ0KLWNsYXNzIEVsZW1lbnRJbXBsIDogcHVibGljIE5vZGVJbXBsDQotew0KLXB1YmxpYzoNCi0NCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogVGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQuIEZvciBleGFtcGxlLCBpbjoNCi0gICAgICAgICAqIDxwcmU+ICZsdDtlbGVtZW50RXhhbXBsZQ0KLSAgICAgICAgICogaWQ9ImRlbW8iJmd0OyAuLi4gJmx0Oy9lbGVtZW50RXhhbXBsZSZndDsgLCA8L3ByZT4NCi0gICAgICAgICAqICA8Y29kZT50YWdOYW1lPC9jb2RlPiBoYXMNCi0gICAgICAgICAqIHRoZSB2YWx1ZSA8Y29kZT4iZWxlbWVudEV4YW1wbGUiPC9jb2RlPi4gTm90ZSB0aGF0IHRoaXMgaXMNCi0gICAgICAgICAqIGNhc2UtcHJlc2VydmluZyBpbiBYTUwsIGFzIGFyZSBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgb2YgdGhlIERPTS4gVGhlDQotICAgICAgICAgKiBIVE1MIERPTSByZXR1cm5zIHRoZSA8Y29kZT50YWdOYW1lPC9jb2RlPiBvZiBhbiBIVE1MIGVsZW1lbnQgaW4gdGhlDQotICAgICAgICAgKiBjYW5vbmljYWwgdXBwZXJjYXNlIGZvcm0sIHJlZ2FyZGxlc3Mgb2YgdGhlIGNhc2UgaW4gdGhlIHNvdXJjZSBIVE1MDQotICAgICAgICAgKiBkb2N1bWVudC4NCi0gICAgICAgICAqIEByZXR1cm4gdGhlIGVsZW1lbnQncyB0YWcgbmFtZS4NCi0gICAgICAgICAqLw0KLSAgICAgICAgdmlydHVhbCBjb25zdCBET01TdHJpbmcqIGdldFRhZ05hbWUoKSBjb25zdDsNCi0NCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogUmV0cmlldmVzIGFuIGF0dHJpYnV0ZSB2YWx1ZSBieSBuYW1lLg0KLSAgICAgICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB0byByZXRyaWV2ZS4NCi0gICAgICAgICAqIEByZXR1cm4gVGhlIDxjb2RlPkF0dHI8L2NvZGU+IHZhbHVlIGFzIGEgc3RyaW5nLCBvciB0aGUgZW1wdHkgc3RyaW5nDQotICAgICAgICAgKiAgIGlmIHRoYXQgYXR0cmlidXRlIGRvZXMgbm90IGhhdmUgYSBzcGVjaWZpZWQgb3IgZGVmYXVsdCB2YWx1ZS4NCi0gICAgICAgICAqLw0KLSAgICAgICAgdmlydHVhbCBjb25zdCBET01TdHJpbmcqIGdldEF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUpIGNvbnN0Ow0KLQ0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBBZGRzIGEgbmV3IGF0dHJpYnV0ZS4gSWYgYW4gYXR0cmlidXRlIHdpdGggdGhhdCBuYW1lIGlzIGFscmVhZHkgcHJlc2VudA0KLSAgICAgICAgICogaW4gdGhlIGVsZW1lbnQsIGl0cyB2YWx1ZSBpcyBjaGFuZ2VkIHRvIGJlIHRoYXQgb2YgdGhlIHZhbHVlDQotICAgICAgICAgKiBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgaXMgYSBzaW1wbGUgc3RyaW5nOyBpdCBpcyBub3QgcGFyc2VkIGFzIGl0IGlzDQotICAgICAgICAgKiBiZWluZyBzZXQuIFNvIGFueSBtYXJrdXAgKHN1Y2ggYXMgc3ludGF4IHRvIGJlIHJlY29nbml6ZWQgYXMgYW4NCi0gICAgICAgICAqIGVudGl0eSByZWZlcmVuY2UpIGlzIHRyZWF0ZWQgYXMgbGl0ZXJhbCB0ZXh0LCBhbmQgbmVlZHMgdG8gYmUNCi0gICAgICAgICAqIGFwcHJvcHJpYXRlbHkgZXNjYXBlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gd2hlbiBpdCBpcyB3cml0dGVuIG91dC4NCi0gICAgICAgICAqIEluIG9yZGVyIHRvIGFzc2lnbiBhbiBhdHRyaWJ1dGUgdmFsdWUgdGhhdCBjb250YWlucyBlbnRpdHkNCi0gICAgICAgICAqIHJlZmVyZW5jZXMsIHRoZSB1c2VyIG11c3QgY3JlYXRlIGFuIDxjb2RlPkF0dHI8L2NvZGU+IG5vZGUgcGx1cyBhbnkNCi0gICAgICAgICAqIDxjb2RlPlRleHQ8L2NvZGU+IGFuZCA8Y29kZT5FbnRpdHlSZWZlcmVuY2U8L2NvZGU+IG5vZGVzLCBidWlsZCB0aGUNCi0gICAgICAgICAqIGFwcHJvcHJpYXRlIHN1YnRyZWUsIGFuZCB1c2UgPGNvZGU+c2V0QXR0cmlidXRlTm9kZTwvY29kZT4gdG8gYXNzaWduDQotICAgICAgICAgKiBpdCBhcyB0aGUgdmFsdWUgb2YgYW4gYXR0cmlidXRlLg0KLSAgICAgICAgICogPGJyPlRvIHNldCBhbiBhdHRyaWJ1dGUgd2l0aCBhIHF1YWxpZmllZCBuYW1lIGFuZCBuYW1lc3BhY2UgVVJJLCB1c2UNCi0gICAgICAgICAqIHRoZSA8Y29kZT5zZXRBdHRyaWJ1dGVOUzwvY29kZT4gbWV0aG9kLg0KLSAgICAgICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB0byBjcmVhdGUgb3IgYWx0ZXIuDQotICAgICAgICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gc2V0IGluIHN0cmluZyBmb3JtLg0KLSAgICAgICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICAgICAqICAgSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBuYW1lIGNvbnRhaW5zIGFuDQotICAgICAgICAgKiAgIGlsbGVnYWwgY2hhcmFjdGVyLg0KLSAgICAgICAgICogICA8YnI+Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIHJlYWRvbmx5Lg0KLSAgICAgICAgICovDQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IERPTVN0cmluZyogbmFtZSwgY29uc3QgRE9NU3RyaW5nKiB2YWx1ZSkgdGhyb3cgKERPTUV4Y2VwdGlvbik7DQotDQotICAgICAgICAvKioNCi0gICAgICAgICAqIFJlbW92ZXMgYW4gYXR0cmlidXRlIGJ5IG5hbWUuIElmIHRoZSByZW1vdmVkIGF0dHJpYnV0ZSBpcyBrbm93biB0byBoYXZlDQotICAgICAgICAgKiBhIGRlZmF1bHQgdmFsdWUsIGFuIGF0dHJpYnV0ZSBpbW1lZGlhdGVseSBhcHBlYXJzIGNvbnRhaW5pbmcgdGhlDQotICAgICAgICAgKiBkZWZhdWx0IHZhbHVlIGFzIHdlbGwgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbmFtZXNwYWNlIFVSSSwgbG9jYWwgbmFtZSwNCi0gICAgICAgICAqIGFuZCBwcmVmaXggd2hlbiBhcHBsaWNhYmxlLg0KLSAgICAgICAgICogPGJyPlRvIHJlbW92ZSBhbiBhdHRyaWJ1dGUgYnkgbG9jYWwgbmFtZSBhbmQgbmFtZXNwYWNlIFVSSSwgdXNlIHRoZQ0KLSAgICAgICAgICogPGNvZGU+cmVtb3ZlQXR0cmlidXRlTlM8L2NvZGU+IG1ldGhvZC4NCi0gICAgICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gcmVtb3ZlLg0KLSAgICAgICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICAgICAqICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIHJlYWRvbmx5Lg0KLSAgICAgICAgICovDQotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IERPTVN0cmluZyogbmFtZSkgdGhyb3cgKERPTUV4Y2VwdGlvbik7DQotDQotICAgICAgICAvKioNCi0gICAgICAgICAqIFJldHVybnMgYSA8Y29kZT5Ob2RlTGlzdDwvY29kZT4gb2YgYWxsIGRlc2NlbmRhbnQgPGNvZGU+RWxlbWVudHM8L2NvZGU+DQotICAgICAgICAgKiB3aXRoIGEgZ2l2ZW4gdGFnIG5hbWUsIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBlbmNvdW50ZXJlZCBpbg0KLSAgICAgICAgICogYSBwcmVvcmRlciB0cmF2ZXJzYWwgb2YgdGhpcyA8Y29kZT5FbGVtZW50PC9jb2RlPiB0cmVlLg0KLSAgICAgICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhZyB0byBtYXRjaCBvbi4gVGhlIHNwZWNpYWwgdmFsdWUgIioiDQotICAgICAgICAgKiAgIG1hdGNoZXMgYWxsIHRhZ3MuDQotICAgICAgICAgKiBAcmV0dXJuIEEgbGlzdCBvZiBtYXRjaGluZyA8Y29kZT5FbGVtZW50PC9jb2RlPiBub2Rlcy4NCi0gICAgICAgICAqLw0KLSAgICAgICAgTm9kZUxpc3RJbXBsKiBnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBET01TdHJpbmcqIG5hbWUpIGNvbnN0Ow0KLQ0KLSAgICAgICAgLyoqIE92ZXJyaWRlIGdldE5vZGVUeXBlKCkgbWV0aG9kIGluIE5vZGVJbXBsLmguKi8NCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzKCkgY29uc3Q7DQotDQotICAgICAgICAvKiogT3ZlcnJpZGUgZ2V0Tm9kZU5hbWUoKSBtZXRob2QgaW4gTm9kZUltcGwuaC4qLw0KLSAgICAgICAgY29uc3QgRE9NU3RyaW5nKiBnZXROb2RlTmFtZSgpIGNvbnN0Ow0KLQ0KLSAgICAgICAgLyoqIE92ZXJyaWRlIGdldE5vZGVUeXBlKCkgbWV0aG9kIGluIE5vZGVJbXBsLmguKi8NCi0gICAgICAgIE5vZGVUeXBlIGdldE5vZGVUeXBlKCkgY29uc3Q7DQotDQotICAgICAgICAvKiogRGVmaW5pbmcgImNsaWNrKCkiIG1ldGhvZCovDQotICAgICAgICB2aXJ0dWFsIHZvaWQgY2xpY2soKXt9DQotDQotICAgICAgICAvKiogRGVmaW5pbmcgImJsdXIoKSIgbWV0aG9kLCovDQotICAgICAgICB2aXJ0dWFsIHZvaWQgYmx1cigpe30NCi0NCi0gICAgICAgIC8qKiBEZWZpbmluZyAiZm9jdXMoKSIgbWV0aG9kKi8NCi0gICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpe30NCi0NCi0gICAgICAgIC8qKiBEZWZpbmluZyAiY2hhbmdlKCkiIG1ldGhvZCovDQotICAgICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlKCl7fQ0KLQ0KLSAgICAgICAgLyoqIERlZmluaW5nICJzZWxlY3QoKSIgbWV0aG9kKi8NCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWxlY3QoKXt9DQotDQotICAgICAgICAvKiogRGVmaW5pbmcgIm9uQ2xpY2soKSIgZXZlbnQgaW5wdXQsdGV4dGFyZWEsYnV0dG9uLCBhbmQgYW5jaG9yKi8NCi0gICAgICAgIHZpcnR1YWwgYm9vbCBvbkNsaWNrKCl7cmV0dXJuIHRydWU7fQ0KLQ0KLSAgICAgICAgLyoqIERlZmluaW5nICJvbkJsdXIoKSIgZXZlbnQsZm9yIGlucHV0LHRleHRhcmVhLGJ1dHRvbixhbmNob3IgYW5kIHNlbGVjdCAqLw0KLSAgICAgICAgdmlydHVhbCBib29sIG9uQmx1cigpe3JldHVybiB0cnVlO30NCi0NCi0gICAgICAgIC8qKiBEZWZpbmluZyAib25Gb2N1cygpIiBldmVudCxmb3IgaW5wdXQsdGV4dGFyZWEsYnV0dG9uLGFuY2hvciBhbmQgc2VsZWN0Ki8NCi0gICAgICAgIHZpcnR1YWwgYm9vbCBvbkZvY3VzKCl7cmV0dXJuIHRydWU7fQ0KLQ0KLSAgICAgICAgLyoqIERlZmluaW5nICJvbkNoYW5nZSgpIiBldmVudCxmb3IgaW5wdXQsdGV4dGFyZWEgYW5kIHNlbGVjdCB0YWcqLw0KLSAgICAgICAgdmlydHVhbCBib29sIG9uQ2hhbmdlKCl7cmV0dXJuIHRydWU7fQ0KLQ0KLSAgICAgICAgLyoqIERlZmluaW5nICJvblNlbGVjdCgpIiBldmVudCxmb3IgdGV4dGFyZWEgYW5kIGlucHV0Ki8NCi0gICAgICAgIHZpcnR1YWwgYm9vbCBvblNlbGVjdCgpe3JldHVybiB0cnVlO30NCi0NCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogd2hlbiB0aGUgZW5kIHRhZyBvZiBvbmUgZWxlbWVudCBpcyBmb3VuZCx0aGlzIG1ldGhvZCB3b3VsZCBiZSBjYWxsZWQuVGhlIGJhc2ljIGFjdGlvbiBpcyBjYWxsIHNlQ29tcGxldGVkKCkuDQotICAgICAgICAqKi8NCi0gICAgICAgIHZpcnR1YWwgdm9pZCBlbmRFbGVtZW50KCkge30NCi0NCi1wcml2YXRlOg0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBHZXQgZWxlbWVudHMgd2hvc2UgbmFtZSBtYXRjaCBvbiA8Y29kZT5uYW1lPC9jb2RlPix0aGFuIGtlZXAgdGhleSBpbnRvIDxjb2RlPm5vZGVMaXN0PC9jb2RlPi4NCi0gICAgICAgICAqIEBwYXJhbSBuYW1lICAgVGhlIHRhZyBuYW1lIG9mIHRoZSBlbGVtZW50cyB0byBtYXRjaCBvbi4NCi0gICAgICAgICAqIEBwYXJhbSBub2RlTGlzdCBrZWVwIGFsbCB0aGUgbWF0Y2hlZCBlbGVtZW50Lg0KLSAgICAgICAgICovDQotICAgICAgICB2b2lkIGdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IERPTVN0cmluZyogbmFtZSxOb2RlTGlzdEltcGwqIG5vZGVMaXN0KSBjb25zdDsNCi19Ow0KLSNlbmRpZiAvKl9fRE9NX0VMRU1FTlRfSU1QTF9fKi8NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9Ob2RlSW1wbC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvTm9kZUltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA0MjNjMy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9Ob2RlSW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiAgX19ET01fTk9ERV9JTVBMX18NCi0jZGVmaW5lICBfX0RPTV9OT0RFX0lNUExfXw0KLQ0KLSNpbmNsdWRlICJET01FeGNlcHRpb24uaCINCi0jaW5jbHVkZSAiTm9kZVR5cGUuaCINCi0jaW5jbHVkZSAiRE9NU3RyaW5nLmgiDQotY2xhc3MgTGF5b3V0QXR0cjsNCi1jbGFzcyBEb2N1bWVudEltcGw7DQotY2xhc3MgTm9kZUltcGwgew0KLXByaXZhdGU6DQotICAgIC8qKiBUaGUgcG9pbnRlciB0byBmaXJzdCBjaGlsZHJlbiAqLw0KLSAgICBOb2RlSW1wbCogZmlyc3RDaGlsZDsNCi0NCi0gICAgLyoqIFRoZSBwb2ludGVyIHRvIGxhc3RDaGlsZCBjaGlsZHJlbiAqLw0KLSAgICBOb2RlSW1wbCogbGFzdENoaWxkOw0KLQ0KLSAgICAvKiogVGhlIHBvaW50ZXIgdG8gcHJldmlvdXMgc2libGluZyBjaGlsZHJlbiAqLw0KLSAgICBOb2RlSW1wbCogcHJldmlvdXNTaWJsaW5nOw0KLQ0KLSAgICAvKiogVGhlIHBvaW50ZXIgdG8gbmV4dCBzaWJsaW5nIGNoaWxkcmVuICovDQotICAgIE5vZGVJbXBsKiBuZXh0U2libGluZzsNCi0NCi0gICAgLyoqIFRoZSBwb2ludGVyIHRvIHBhcmVudCAqLw0KLSAgICBOb2RlSW1wbCogcGFyZW50Ow0KLQ0KLSAgICAvKiogQ3VycmVudCBub2RlJ3MgZG9jdW1lbnQgY29udGV4dCAqLw0KLSAgICBjb25zdCBEb2N1bWVudEltcGwqIGRvY3VtZW50Ow0KLQ0KLSAgIC8qKg0KLSAgICAgKiBBZGQgbmV4dCBzbGliaW5nIG5vZGUNCi0gICAgICogQHBhcmFtIG5vZGUgdGhlIG5vZGUgdG8gYmUgYWRkLg0KLSAgICAgKi8NCi0gICAgdm9pZCBhcHBlbmROZXh0U2libGluZyhOb2RlSW1wbCogbm9kZSk7DQotDQotcHVibGljOg0KLSAgICAvKioNCi0gICAgICogRGVmYXVsdCBjb25zdHVjdG9yLg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwoKTogZmlyc3RDaGlsZChOVUxMKSxsYXN0Q2hpbGQoTlVMTCkscHJldmlvdXNTaWJsaW5nKE5VTEwpLG5leHRTaWJsaW5nKE5VTEwpLHBhcmVudChOVUxMKSxkb2N1bWVudChOVUxMKSB7fTsNCi0NCi0gICAgLyoqDQotICAgICAqIFNldCA8Y29kZT5wYXJlbnROb2RlPC9jb2RlPiBhcyBjdXJyZW50IG5vZGUncyBwYXJlbnQuDQotICAgICAqDQotICAgICAqIEBwYXJhbSBwYXJlbnROb2RlIFRoZSBzcGVjaWZ5IHBhcmVudCBub2RlLg0KLSAgICAgKi8NCi0gICAgdm9pZCBzZXRQYXJlbnQoTm9kZUltcGwqIHBhcmVudE5vZGUpOw0KLQ0KLSAgICAvKioNCi0gICAgICogU2V0IHRoZSBub2RlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBub2RlLg0KLSAgICAgKg0KLSAgICAgKiBAcGFyYW0gc2libGluZ05vZGUgVGhlIHNwZWNpYWwgbm9kZSBiZSBpbnNlcnQgYWZ0ZXIgY3VycmVudCBub2RlLg0KLSAgICAgKi8NCi0gICAgdm9pZCBzZXROZXh0U2libGluZyhOb2RlSW1wbCogc2libGluZ05vZGUpOw0KLQ0KLSAgICAvKioNCi0gICAgICogUmV0dXJucyB0aGUgbm9kZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcgdGhpcyBub2RlLg0KLSAgICAgKg0KLSAgICAgKiBAcGFyYW0gc2libGluZ05vZGUgVGhlIHNwZWNpYWwgbm9kZSBiZSBpbnNlcnQgYmVmb3JlIGN1cnJlbnQgbm9kZS4NCi0gICAgICovDQotICAgIHZvaWQgc2V0UHJldmlvdXNTaWJsaW5nKE5vZGVJbXBsKiBzaWJsaW5nTm9kZSk7DQotDQotICAgIC8qKg0KLSAgICAgKiBTZXQgPGNvZGU+Y2hpbGROb2RlPC9jb2RlPiBhcyBjdXJyZW50IG5vZGUncyBmaXJzdCBjaGlsZHJlbi4gSWYgY3VycmVudA0KLSAgICAgKiBub2RlIGhhdmUgZmlyc3QgY2hpbGQgbm9kZSxpdCB3aWxsIHJlcGxhY2Ugd2l0aCB0aGUgPGNvZGU+Y2hpbGROb2RlPC9jb2RlPi4NCi0gICAgICoNCi0gICAgICogQHBhcmFtIGNoaWxkTm9kZSBUaGUgc3BlY2lhbCBub2RlIGJlIHNldCBhcyB0aGUgZmlyc3QgY2hpbGRyZW4gbm9kZSBvZiBjdXJyZW50DQotICAgICAqICAgICAgICAgICAgICAgICAgbm9kZS4NCi0gICAgICovDQotICAgIHZvaWQgc2V0Rmlyc3RDaGlsZChOb2RlSW1wbCogY2hpbGROb2RlKTsNCi0NCi0gICAgLyoqDQotICAgICAqIFNldCA8Y29kZT5jaGlsZE5vZGU8L2NvZGU+IGFzIGN1cnJlbnQgbm9kZSdzIGxhc3QgY2hpbGRyZW4uIElmIGN1cnJlbnQNCi0gICAgICogbm9kZSBoYXZlIGxhc3QgY2hpbGQgbm9kZSxpdCB3aWxsIHJlcGxhY2Ugd2l0aCB0aGUgPGNvZGU+Y2hpbGROb2RlPC9jb2RlPi4NCi0gICAgICoNCi0gICAgICogQHBhcmFtIGNoaWxkTm9kZSBUaGUgc3BlY2lhbCBub2RlIGJlIHNldCBhcyB0aGUgbGFzdCBjaGlsZHJlbiBub2RlIG9mIGN1cnJlbnQNCi0gICAgICogICAgICAgICAgICAgICAgICBub2RlLg0KLSAgICAgKi8NCi0gICAgdm9pZCBzZXRMYXN0Q2hpbGQoTm9kZUltcGwqIGNoaWxkTm9kZSk7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbmFtZSBvZiB0aGlzIG5vZGUsIGRlcGVuZGluZyBvbiBpdHMgdHlwZTsNCi0gICAgICogQHJldHVybiB0aGUgbm9kZSdzIG5hbWUuDQotICAgICAqLw0KLSAgICB2aXJ0dWFsIGNvbnN0IERPTVN0cmluZyogZ2V0Tm9kZU5hbWUoKSBjb25zdCA9IDA7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgdmFsdWUgb2YgdGhpcyBub2RlLCBkZXBlbmRpbmcgb24gaXRzIHR5cGU7DQotICAgICAqIFdoZW4gaXQgaXMgZGVmaW5lZCB0byBiZSA8Y29kZT5udWxsPC9jb2RlPiwgc2V0dGluZyBpdCBoYXMgbm8gZWZmZWN0Lg0KLSAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiBub2RlLg0KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbg0KLSAgICAgKiBET01TVFJJTkdfU0laRV9FUlI6IFJhaXNlZCB3aGVuIGl0IHdvdWxkIHJldHVybiBtb3JlIGNoYXJhY3RlcnMgdGhhbg0KLSAgICAgKiBmaXQgaW4gYSA8Y29kZT5ET01TdHJpbmc8L2NvZGU+IHZhcmlhYmxlIG9uIHRoZSBpbXBsZW1lbnRhdGlvbg0KLSAgICAgKiBwbGF0Zm9ybS4NCi0gICAgICovDQotICAgIHZpcnR1YWwgY29uc3QgRE9NU3RyaW5nKiBnZXROb2RlVmFsdWUoKSBjb25zdCB0aHJvdyAoRE9NRXhjZXB0aW9uKTsNCi0NCi0gICAgLyoqDQotICAgICAqIFNldCB0aGUgbm9kZSB2YWx1ZS4NCi0gICAgICogQHBhcmFtIG5vZGVWYWx1ZSB0aGUgbm9kZSB2YWx1ZQ0KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbg0KLSAgICAgKiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6IFJhaXNlZCB3aGVuIHRoZSBub2RlIGlzIHJlYWRvbmx5Lg0KLSAgICAgKi8NCi0gICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShET01TdHJpbmcqIG5vZGVWYWx1ZSkgdGhyb3cgKERPTUV4Y2VwdGlvbik7DQotDQotICAgIC8qKg0KLSAgICAgKiBBIGNvZGUgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIG9iamVjdCwgYXMgZGVmaW5lZCBhYm92ZS4NCi0gICAgICogQHJldHVybiB0aGUgbm9kZSdzIHR5cGUuDQotICAgICAqLw0KLSAgICB2aXJ0dWFsIE5vZGVUeXBlIGdldE5vZGVUeXBlKCkgY29uc3QgPSAwOw0KLQ0KLSAgICAvKioNCi0gICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgbm9kZSAoaWYgaXQgaXMgYW4gZWxlbWVudCkgaGFzIGFueSBhdHRyaWJ1dGVzLg0KLSAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoaXMgbm9kZSBoYXMgYW55IGF0dHJpYnV0ZXMsDQotICAgICAqICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4NCi0gICAgICogQHNpbmNlIERPTSBMZXZlbCAyDQotICAgICAqLw0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlcygpIGNvbnN0Ow0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIHBhcmVudCBvZiB0aGlzIG5vZGUuIEFsbCBub2RlcywgZXhjZXB0IDxjb2RlPkF0dHI8L2NvZGU+LA0KLSAgICAgKiA8Y29kZT5Eb2N1bWVudDwvY29kZT4sIDxjb2RlPkRvY3VtZW50RnJhZ21lbnQ8L2NvZGU+LA0KLSAgICAgKiA8Y29kZT5FbnRpdHk8L2NvZGU+LCBhbmQgPGNvZGU+Tm90YXRpb248L2NvZGU+IG1heSBoYXZlIGEgcGFyZW50Lg0KLSAgICAgKiBIb3dldmVyLCBpZiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBjcmVhdGVkIGFuZCBub3QgeWV0IGFkZGVkIHRvIHRoZQ0KLSAgICAgKiB0cmVlLCBvciBpZiBpdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHRyZWUsIHRoaXMgaXMNCi0gICAgICogPGNvZGU+TlVMTDwvY29kZT4uDQotICAgICAqIEByZXR1cm4gcmV0dXJuIGN1cnJlbnQgbm9kZSdzIHBhcmVudC4NCi0gICAgICovDQotICAgIE5vZGVJbXBsKiBnZXRQYXJlbnROb2RlKCkgY29uc3Q7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBub2RlLiBJZiB0aGVyZSBpcyBubyBzdWNoIG5vZGUsIHRoaXMgcmV0dXJucw0KLSAgICAgKiA8Y29kZT5OVUxMPC9jb2RlPi4NCi0gICAgICogQHJldHVybiBjdXJyZW50IG5vZGUgIGZpcnN0IGNoaWxkcmVuLg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwqIGdldEZpcnN0Q2hpbGQoKSBjb25zdDsNCi0NCi0gICAgLyoqDQotICAgICAqIFRoZSBsYXN0IGNoaWxkIG9mIHRoaXMgbm9kZS4gSWYgdGhlcmUgaXMgbm8gc3VjaCBub2RlLCB0aGlzIHJldHVybnMNCi0gICAgICogPGNvZGU+TlVMTDwvY29kZT4uDQotICAgICAqIEByZXR1cm4gY3VycmVudCAgbm9kZSBsYXN0IGNoaWxkcmVuLg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwqIGdldExhc3RDaGlsZCgpIGNvbnN0Ow0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoaXMgbm9kZS4gSWYgdGhlcmUgaXMgbm8gc3VjaCBub2RlLA0KLSAgICAgKiB0aGlzIHJldHVybnMgPGNvZGU+TlVMTDwvY29kZT4uDQotICAgICAqIEByZXR1cm4gY3VycmVudCBub2RlIHByZXZpb3VzIHNpYmxpbmcgY2hpbGRyZW4uDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogZ2V0UHJldmlvdXNTaWJsaW5nKCkgY29uc3Q7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbm9kZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhpcyBub2RlLiBJZiB0aGVyZSBpcyBubyBzdWNoIG5vZGUsDQotICAgICAqIHRoaXMgcmV0dXJucyA8Y29kZT5OVUxMPC9jb2RlPi4NCi0gICAgICogQHJldHVybiByZXR1cm4gY3VycmVudCAgbm9kZSBuZXh0IHNpYmxpbmcgY2hpbGRyZW4uDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogZ2V0TmV4dFNpYmxpbmcoKSBjb25zdDsNCi0NCi0gICAgLyoqDQotICAgICAqIEluc2VydHMgdGhlIG5vZGUgPGNvZGU+bmV3Q2hpbGQ8L2NvZGU+IGJlZm9yZSB0aGUgZXhpc3RpbmcgY2hpbGQgbm9kZQ0KLSAgICAgKiA8Y29kZT5yZWZDaGlsZDwvY29kZT4uIElmIDxjb2RlPnJlZkNoaWxkPC9jb2RlPiBpcyA8Y29kZT5OVUxMPC9jb2RlPiwNCi0gICAgICogaW5zZXJ0IDxjb2RlPm5ld0NoaWxkPC9jb2RlPiBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IG9mIGNoaWxkcmVuLg0KLSAgICAgKiA8YnI+SWYgPGNvZGU+bmV3Q2hpbGQ8L2NvZGU+IGlzIGEgPGNvZGU+RG9jdW1lbnRGcmFnbWVudDwvY29kZT4gb2JqZWN0LA0KLSAgICAgKiBhbGwgb2YgaXRzIGNoaWxkcmVuIGFyZSBpbnNlcnRlZCwgaW4gdGhlIHNhbWUgb3JkZXIsIGJlZm9yZQ0KLSAgICAgKiA8Y29kZT5yZWZDaGlsZDwvY29kZT4uIElmIHRoZSA8Y29kZT5uZXdDaGlsZDwvY29kZT4gaXMgYWxyZWFkeSBpbiB0aGUNCi0gICAgICogdHJlZSwgaXQgaXMgZmlyc3QgcmVtb3ZlZC4NCi0gICAgICogQHBhcmFtIG5ld0NoaWxkIFRoZSBub2RlIHRvIGluc2VydC4NCi0gICAgICogQHBhcmFtIHJlZkNoaWxkIFRoZSByZWZlcmVuY2Ugbm9kZSwgaS5lLiwgdGhlIG5vZGUgYmVmb3JlIHdoaWNoIHRoZQ0KLSAgICAgKiAgIG5ldyBub2RlIG11c3QgYmUgaW5zZXJ0ZWQuDQotICAgICAqIEByZXR1cm4gVGhlIG5vZGUgYmVpbmcgaW5zZXJ0ZWQuDQotICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uDQotICAgICAqICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90DQotICAgICAqICAgYWxsb3cgY2hpbGRyZW4gb2YgdGhlIHR5cGUgb2YgdGhlIDxjb2RlPm5ld0NoaWxkPC9jb2RlPiBub2RlLCBvciBpZg0KLSAgICAgKiAgIHRoZSBub2RlIHRvIGluc2VydCBpcyBvbmUgb2YgdGhpcyBub2RlJ3MgYW5jZXN0b3JzIG9yIHRoaXMgbm9kZQ0KLSAgICAgKiAgIGl0c2VsZi4NCi0gICAgICogICA8YnI+V1JPTkdfRE9DVU1FTlRfRVJSOiBSYWlzZWQgaWYgPGNvZGU+bmV3Q2hpbGQ8L2NvZGU+IHdhcyBjcmVhdGVkDQotICAgICAqICAgZnJvbSBhIGRpZmZlcmVudCBkb2N1bWVudCB0aGFuIHRoZSBvbmUgdGhhdCBjcmVhdGVkIHRoaXMgbm9kZS4NCi0gICAgICogICA8YnI+Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIHJlYWRvbmx5IG9yDQotICAgICAqICAgaWYgdGhlIHBhcmVudCBvZiB0aGUgbm9kZSBiZWluZyBpbnNlcnRlZCBpcyByZWFkb25seS4NCi0gICAgICogICA8YnI+Tk9UX0ZPVU5EX0VSUjogUmFpc2VkIGlmIDxjb2RlPnJlZkNoaWxkPC9jb2RlPiBpcyBub3QgYSBjaGlsZCBvZg0KLSAgICAgKiAgIHRoaXMgbm9kZS4NCi0gICAgICovDQotICAgIE5vZGVJbXBsKiBpbnNlcnRCZWZvcmUoTm9kZUltcGwqIG5ld0NoaWxkLCBOb2RlSW1wbCogcmVmQ2hpbGQpIHRocm93IChET01FeGNlcHRpb24pOw0KLQ0KLSAgICAvKioNCi0gICAgICogUmVtb3ZlcyB0aGUgY2hpbGQgbm9kZSBpbmRpY2F0ZWQgYnkgPGNvZGU+b2xkQ2hpbGQ8L2NvZGU+IGZyb20gdGhlIGxpc3QNCi0gICAgICogb2YgY2hpbGRyZW4sIGFuZCByZXR1cm5zIGl0Lg0KLSAgICAgKiBAcGFyYW0gb2xkQ2hpbGQgVGhlIG5vZGUgYmVpbmcgcmVtb3ZlZC4NCi0gICAgICogQHJldHVybiBUaGUgbm9kZSByZW1vdmVkLg0KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbg0KLSAgICAgKiAgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIGlmIHRoaXMgbm9kZSBpcyByZWFkb25seS4NCi0gICAgICogICA8YnI+Tk9UX0ZPVU5EX0VSUjogUmFpc2VkIGlmIDxjb2RlPm9sZENoaWxkPC9jb2RlPiBpcyBub3QgYSBjaGlsZCBvZg0KLSAgICAgKiAgIHRoaXMgbm9kZS4NCi0gICAgICovDQotICAgIE5vZGVJbXBsKiByZW1vdmVDaGlsZChOb2RlSW1wbCogb2xkQ2hpbGQpIHRocm93IChET01FeGNlcHRpb24pOw0KLQ0KLSAgICAvKioNCi0gICAgICogQWRkcyB0aGUgbm9kZSA8Y29kZT5uZXdDaGlsZDwvY29kZT4gdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCBvZiBjaGlsZHJlbg0KLSAgICAgKiBvZiB0aGlzIG5vZGUuIElmIHRoZSA8Y29kZT5uZXdDaGlsZDwvY29kZT4gaXMgYWxyZWFkeSBpbiB0aGUgdHJlZSwgaXQNCi0gICAgICogaXMgZmlyc3QgcmVtb3ZlZC4NCi0gICAgICogQHBhcmFtIG5ld0NoaWxkIFRoZSBub2RlIHRvIGFkZC5JZiBpdCBpcyBhDQotICAgICAqICAgPGNvZGU+RG9jdW1lbnRGcmFnbWVudDwvY29kZT4gb2JqZWN0LCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZQ0KLSAgICAgKiAgIGRvY3VtZW50IGZyYWdtZW50IGFyZSBtb3ZlZCBpbnRvIHRoZSBjaGlsZCBsaXN0IG9mIHRoaXMgbm9kZQ0KLSAgICAgKiBAcmV0dXJuIFRoZSBub2RlIGFkZGVkLg0KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbg0KLSAgICAgKiAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogUmFpc2VkIGlmIHRoaXMgbm9kZSBpcyBvZiBhIHR5cGUgdGhhdCBkb2VzIG5vdA0KLSAgICAgKiAgIGFsbG93IGNoaWxkcmVuIG9mIHRoZSB0eXBlIG9mIHRoZSA8Y29kZT5uZXdDaGlsZDwvY29kZT4gbm9kZSwgb3IgaWYNCi0gICAgICogICB0aGUgbm9kZSB0byBhcHBlbmQgaXMgb25lIG9mIHRoaXMgbm9kZSdzIGFuY2VzdG9ycyBvciB0aGlzIG5vZGUNCi0gICAgICogICBpdHNlbGYuDQotICAgICAqICAgPGJyPldST05HX0RPQ1VNRU5UX0VSUjogUmFpc2VkIGlmIDxjb2RlPm5ld0NoaWxkPC9jb2RlPiB3YXMgY3JlYXRlZA0KLSAgICAgKiAgIGZyb20gYSBkaWZmZXJlbnQgZG9jdW1lbnQgdGhhbiB0aGUgb25lIHRoYXQgY3JlYXRlZCB0aGlzIG5vZGUuDQotICAgICAqICAgPGJyPk5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIGlmIHRoaXMgbm9kZSBpcyByZWFkb25seSBvcg0KLSAgICAgKiAgIGlmIHRoZSBwcmV2aW91cyBwYXJlbnQgb2YgdGhlIG5vZGUgYmVpbmcgaW5zZXJ0ZWQgaXMgcmVhZG9ubHkuDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogYXBwZW5kQ2hpbGQoTm9kZUltcGwqIG5ld0NoaWxkKSB0aHJvdyAoRE9NRXhjZXB0aW9uKTsNCi0NCi0gICAgLyoqDQotICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIG5vZGUgaGFzIGFueSBjaGlsZHJlbi4NCi0gICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIG5vZGUgaGFzIGFueSBjaGlsZHJlbiwNCi0gICAgICogICA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLg0KLSAgICAgKi8NCi0gICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3Q7DQotDQotICAgIHZpcnR1YWwgfk5vZGVJbXBsKCkge307DQotDQotICAgIC8qKg0KLSAgICAgKiBHZXQgdGhlIExheW91dEF0dHIgb2YgdGhpcyBub2RlDQotICAgICAqIEByZXR1cm4gdGhlIHBvaW50ZXIgdG8gIExheW91dEF0dHINCi0gICAgICovDQotICAgIHZpcnR1YWwgTGF5b3V0QXR0ciogZ2V0TGF5b3V0QXR0cigpIGNvbnN0IHsgcmV0dXJuIE5VTEw7fQ0KLQ0KLSAgICAvKioNCi0gICAgICogU2V0IHRoZSBMYXlvdXRBdHRyIG9mIHRoaXMgbm9kZQ0KLSAgICAgKiBAcGFyYW0gYXR0ciB0aGUgYXR0cmlidXRlcyB0byBiZSBzZXQNCi0gICAgICogQHJldHVybiB2b2lkDQotICAgICAqLw0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5b3V0QXR0cihMYXlvdXRBdHRyKiBhdHRyKSB7IHJldHVybjt9DQotDQotICAgIC8qKg0KLSAgICAgKiBTZXQgZG9jdW1lbnQgY29udGV4dC4NCi0gICAgICogQHBhcmFtIGRvY3VtZW50IFRoZSBzcGVjaWZ5IGRvY3VtZW50IGNvbnRleHQuDQotICAgICAqLw0KLSAgICB2b2lkIHNldERvY3VtZW50KGNvbnN0IERvY3VtZW50SW1wbCogZG9jdW1lbnQpOw0KLQ0KLSAgICAvKioNCi0gICAgICogR2V0IGRvY3VtZW50IGNvbnRleHQuDQotICAgICAqIEByZXR1cm4gdGhlIGN1cnJlbnQgbm9kZSdzIGRvY3VtZW50IGNvbnRleHQuDQotICAgICAqLw0KLSAgICBjb25zdCBEb2N1bWVudEltcGwqIGdldERvY3VtZW50KCkgY29uc3Q7DQotfTsNCi0jZW5kaWYgIC8qX19ET01fTk9ERV9JTVBMX18qLw0KLQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVJdGVyYXRvci5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvTm9kZUl0ZXJhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ZmRhMjguLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvTm9kZUl0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX19ET01fTk9ERV9JVEVSQVRPUl9fDQotI2RlZmluZSBfX0RPTV9OT0RFX0lURVJBVE9SX18NCi1jbGFzcyBOb2RlSW1wbDsNCi0vKioNCi0gKiBUaGUgSXRlcmF0b3IgaXMgdXNlZCB0byB2aXNpdCBET01fVFJFRS4NCi0gKiA8Y29kZT5BdHRlbnRpb248L2NvZGU+OlRoZSBJdGVyYXRvciBpcyBub3Qgc2FmZS4NCi0gKiBXaGVuIHRoZSBjYWxsZXIgdXNpbmcgdGhlIEl0ZXJhdG9yIHRvIGFjY2VzcyB0aGUgdHJlZSwNCi0gKiB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBtb2RpZmllZCwgdGhlIG5leHQoKSBvciBwcmV2KCkgbWF5IG5vdCByZXR1cm4gdGhlIHJpZ2h0IHJlc3VsdC4NCi0gKiBtZWFucyB3ZSBoYXZlIGEgPGNvZGU+cmVzdHJpY3Rpb248L2NvZGU+OiB0aGUgSXRlcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoZSB0cmVlIHN0cnVjdHVyZSB3aWxsDQotICogbm90IGJlIG1vZGlmaWVkIGJlZm9yZSB0aGUgZW5kIG9mIGl0ZXJhdGlvbi4NCi0gKi8NCi1jbGFzcyBOb2RlSXRlcmF0b3Igew0KLXByaXZhdGU6DQotICAgIE5vZGVJbXBsKiBzY29wZU5vZGU7LyoqIFRoZSBzcGVjaWZ5IHRoZSByYW5nZSBvZiBpdGVyYXRpbmcgKi8NCi0gICAgTm9kZUltcGwqIGVuZE5vZGU7ICAvKiogVGhlIHNwZWNpZnkgdGhlIGVuZCBwb3NpdGlvbiBvZiBpdGVyYXRpbmcgKi8NCi0gICAgTm9kZUltcGwqIGN1ck5vZGU7ICAvKiogVGhlIHBvc2l0aW9uIG9mIGN1cnJlbnQgbm9kZS4qLw0KLQ0KLSAgICAvKioNCi0gICAgICogRmluZCB0aGUgc3BlY2lmeSBub2RlJ3MgbmV4dCBvcmRlciBub2RlLg0KLSAgICAgKiBAcGFyYW0gbm9kZSBUaGUgc3BlY2lmeSBub2RlLg0KLSAgICAgKiBAcmV0dXJuIFRoZSBuZXh0IG9yZGVyIG5vZGUgd2hlbiBzdWNjZXNzLg0KLSAgICAgKiAgICAgICAgIE5VTEwgd2hlbiBoYXMgYW4gZXJyb3IuDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogZmluZE5leHRPcmRlck5vZGUoTm9kZUltcGwqIG5vZGUpOw0KLQ0KLSAgICAvKioNCi0gICAgICogRmluZCB0aGUgc3BlY2lmeSBub2RlJ3MgcHJldmlvdXMgb3JkZXIgbm9kZS4NCi0gICAgICogQHBhcmFtIG5vZGUgVGhlIHNwZWNpZnkgbm9kZS4NCi0gICAgICogQHJldHVybiBUaGUgcHJldmlvdXMgb3JkZXIgbm9kZSB3aGVuIHN1Y2Nlc3MuDQotICAgICAqICAgICAgICAgTlVMTCB3aGVuIGhhcyBhbiBlcnJvci4NCi0gICAgICovDQotICAgIE5vZGVJbXBsKiBmaW5kUHJldmlvdXNPcmRlck5vZGUoTm9kZUltcGwqIG5vZGUpOw0KLXB1YmxpYzoNCi0gICAgLyoqDQotICAgICAqIENvbnN0cnVjdCBmb3IgTm9kZUl0ZXJhdG9yLg0KLSAgICAgKiB3ZSBtdXN0IHNwZWNpZnkgPGNvZGU+c3RhcnQ8L2NvZGU+IHZhbHVlIHdoZW4gd2Ugd2FudCBpdGVyYXRlIHRoZSBET01fVFJFRS4NCi0gICAgICogYW5kIHdlIGFsc28gY2FuIHNwZWNpZnkgdGhlIDxjb2RlPnNjb3BlPC9jb2RlPiBpZiB3YW50IHJlc3RyaWN0IHRoZSByYW5nZSBvZiBpdGVyYXRvci4NCi0gICAgICogKGVnOiByZXN0cmljdCB0aGUgcmFuZ2Ugb2YgaXRlcmF0aW5nIGF0IGEgc3VidHJlZSkub3RoZXJ3aXNlIGl0IHdpbGwgaXRlcmF0ZSB0aGUgd2hvbGUgRE9NX1RSRUUuDQotICAgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uDQotICAgICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgb2YgaXRlcmF0aW5nLg0KLSAgICAgKiBAcGFyYW0gZW5kIFRoZSBlbmQgcG9zaXRpb24gb2YgaXRlcmF0aW5nLg0KLSAgICAgKi8NCi0gICAgTm9kZUl0ZXJhdG9yKE5vZGVJbXBsKiBzdGFydCwgTm9kZUltcGwqIHNjb3BlID0gTlVMTCwgTm9kZUltcGwqIGVuZCA9IE5VTEwpOw0KLQ0KLSAgICAvKioNCi0gICAgICogR2V0IG5leHQgb3JkZXIgbm9kZSBhdCBjdXJyZW50IHBvc2l0aW9uIGluIERPTV9UUkVFLg0KLSAgICAgKiBAcmV0dXJuIE5VTEwgT24gdGhlcmUgaXMgbm90IG5vZGUgY2FuIGJlIGdldC4NCi0gICAgICogICAgICAgICBUaGUgcG9pbnRlciBvZiBub2RlIE9uIGNhbiBnZXQgbmV4dCBub2RlLg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwqIG5leHQoKTsNCi0NCi0gICAgLyoqDQotICAgICAqIEdldCBuZXh0IG9yZGVyIG5vZGUgYXQgY3VycmVudCBwb3NpdGlvbiBpbiBET01fVFJFRS4NCi0gICAgICogQHJldHVybiBOVUxMIE9uIHRoZXJlIGlzIG5vdCBub2RlIGNhbiBiZSBnZXQuDQotICAgICAqICAgICAgICAgVGhlIHBvaW50ZXIgb2Ygbm9kZSBPbiBjYW4gZ2V0IHByZXZpb3VzIG5vZGUuDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogcHJldigpOw0KLX07DQotI2VuZGlmIC8qICBfX0RPTV9OT0RFX0lURVJBVE9SX18gKi8NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9Ob2RlTGlzdEltcGwuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVMaXN0SW1wbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2MwYTZhLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVMaXN0SW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9fTk9ERV9MSVNUX0lNUExfXw0KLSNkZWZpbmUgX19OT0RFX0xJU1RfSU1QTF9fDQotDQotI2luY2x1ZGUgIk5vZGVJbXBsLmgiDQotI2luY2x1ZGUgIlZlY3Rvci5oIg0KLWNsYXNzIE5vZGVMaXN0SW1wbCB7DQotcHJpdmF0ZToNCi0gICAgdmVjdG9yPGNvbnN0IE5vZGVJbXBsKj4gbm9kZUxpc3Q7DQotcHVibGljOg0KLSAgICAvKioNCi0gICAgICogIEFkZCBhIHNwZWNpYWwgbm9kZSBpbnRvIGxpc3QuDQotICAgICAqICBAcGFyYW0gbmV3Tm9kZSBzcGVjaWZ5IGNvbXBvbmVudC4NCi0gICAgICovDQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IE5vZGVJbXBsKiBuZXdOb2RlKTsNCi0NCi0gICAgLyoqDQotICAgICAqIFJldHVybiBUaGUgc3BlY2lhbCBwb3NpdGlvbiBub2RlIHBvaW50ZXIuDQotICAgICAqIEBwYXJhbSBpbmRleCBUaGUgc3BlY2lhbCBwb3NpdGlvbi4NCi0gICAgICogQHJldHVybiBUaGUgbm9kZSdzIHBvaW50ZXIgb24gc3VjY2Vzcy4NCi0gICAgICogICAgICAgICBOVUxMIHdoZW4gb3V0IG9mIGxpc3QncyBib3VuZGFyeS4NCi0gICAgICovDQotICAgIGNvbnN0IE5vZGVJbXBsKiBpdGVtKGludCBpbmRleCkgY29uc3Q7DQotDQotICAgIC8qKg0KLSAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBsaXN0Lg0KLSAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgbGlzdC4NCi0gICAgICovDQotICAgIGludCBnZXRMZW5ndGgoKSBjb25zdDsNCi0NCi0gICAgfk5vZGVMaXN0SW1wbCgpOw0KLX07DQotI2VuZGlmIC8qX19OT0RFX0xJU1RfSU1QTF9fICovDQotDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvTm9kZVR5cGUuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNTFhNjMuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvTm9kZVR5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfX0RPTV9OT0RFX1RZUEVfXw0KLSNkZWZpbmUgX19ET01fTk9ERV9UWVBFX18NCi1lbnVtIE5vZGVUeXBlIHsNCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIGlzIGFuIDxjb2RlPkVsZW1lbnQ8L2NvZGU+Lg0KLSAgICAgKi8NCi0gICAgRUxFTUVOVF9OT0RFID0gMSwNCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIGlzIGFuIDxjb2RlPkF0dHI8L2NvZGU+Lg0KLSAgICAgKi8NCi0gICAgQVRUUklCVVRFX05PREUgPSAyLA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgaXMgYSA8Y29kZT5UZXh0PC9jb2RlPiBub2RlLg0KLSAgICAgKi8NCi0gICAgVEVYVF9OT0RFICAgICAgICAgICAgICAgICA9IDMsDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbm9kZSB0eXBlIGlzIENEQVRBU2VjdGlvbi4NCi0gICAgICovDQotICAgIENEQVRBX1NFQ1RJT05fTk9ERSAgICAgICAgPSA0LA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgdHlwZSBpcyBhbiBFbnRpdHlSZWZlcmVuY2UuDQotICAgICAqLw0KLSAgICBFTlRJVFlfUkVGRVJFTkNFX05PREUgICAgID0gNSwNCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIHR5cGUgaXMgYW4gPGNvZGU+RW50aXR5PC9jb2RlPi4NCi0gICAgICovDQotICAgIEVOVElUWV9OT0RFICAgICAgICAgICAgICAgPSA2LA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgdHlwZSBpcyBhIFByb2Nlc3NpbmdJbnN0cnVjdGlvbi4NCi0gICAgICovDQotICAgIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSA9IDcsDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbm9kZSBpcyBhIENvbW1lbnQNCi0gICAgICovDQotICAgIENPTU1FTlRfTk9ERSAgICAgICAgICAgICAgPSA4LA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgaXMgYSBEb2N1bWVudC4NCi0gICAgICovDQotICAgIERPQ1VNRU5UX05PREUgICAgICAgICAgICAgPSA5LA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgaXMgYSBEb2N1bWVudFR5cGUuDQotICAgICAqLw0KLSAgICBET0NVTUVOVF9UWVBFX05PREUgICAgICAgID0gMTAsDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbm9kZSBpcyBhIERvY3VtZW50RnJhZ21lbnQuDQotICAgICAqLw0KLSAgICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgID0gMTEsDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbm9kZSBpcyBhIE5vdGF0aW9uLg0KLSAgICAgKi8NCi0gICAgTk9UQVRJT05fTk9ERSAgICAgICAgICAgICA9IDEyLA0KLX07DQotI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvVGV4dEltcGwuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL1RleHRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNTVmY2QuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvVGV4dEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfX0RPTV9URVhUX0lNUExfXw0KLSNkZWZpbmUgX19ET01fVEVYVF9JTVBMX18NCi0jaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YUltcGwuaCINCi1jbGFzcyBUZXh0SW1wbDpwdWJsaWMgQ2hhcmFjdGVyRGF0YUltcGwNCi17DQotcHJpdmF0ZToNCi0gICAgICAgIGNvbnN0IHN0YXRpYyBET01TdHJpbmcgbm9kZU5hbWU7DQotcHVibGljOg0KLSAgICAgICAgLyoqIFRleHQgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgVGV4dEltcGwuKi8NCi0gICAgICAgIFRleHRJbXBsKCk7DQotDQotICAgICAgICAvKioNCi0gICAgICAgICAqIENvbnN0cnVjdG9yIGZvciBUZXh0SW1wbA0KLSAgICAgICAgICogQHBhcmFtIGRhdGEgVGhlIHNwZWNpZnkgZGF0YSB0byBiZSBzZXQuDQotICAgICAgICAgKi8NCi0gICAgICAgIFRleHRJbXBsKGNvbnN0IERPTVN0cmluZyogZGF0YSk7DQotDQotICAgICAgICAvKiogT3ZlcnJpZGUgZ2V0Tm9kZVR5cGUgbWV0aG9kIGluIE5vZGVJbXBsLmggKi8NCi0gICAgICAgIE5vZGVUeXBlIGdldE5vZGVUeXBlKCkgY29uc3Q7DQotDQotICAgICAgICAvKiogT3ZlcnJpZGUgZ2V0Tm9kZU5hbWUgbWV0aG9kIGluIE5vZGVJbXBsLmggKi8NCi0gICAgICAgIGNvbnN0IERPTVN0cmluZyogZ2V0Tm9kZU5hbWUoKSBjb25zdDsNCi19Ow0KLSNlbmRpZiAvKl9fRE9NX1RFWFRfSU1QTF9fKi8NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9WZWN0b3IuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL1ZlY3Rvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2VhZTNiLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL1ZlY3Rvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9fVkVDVE9SX0hfXw0KLSNkZWZpbmUgX19WRUNUT1JfSF9fDQotI2luY2x1ZGUgPHV2ZWN0b3IuaD4NCi11c2luZyBuYW1lc3BhY2UgdXN0bDsNCi0jZW5kaWYgLypfX1ZFQ1RPUl9IX18qLw0KLQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL3N0YWNrLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9zdGFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmNmNGU1Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL3N0YWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX19TVEFDS19IX18NCi0jZGVmaW5lIF9fU1RBQ0tfSF9fDQotI2luY2x1ZGUgPHVzdGFjay5oPg0KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOw0KLSNlbmRpZiAvKl9fU1RBQ0tfSF9fKi8NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL0RvbUV4cGF0QWdlbnQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC94bWwvRG9tRXhwYXRBZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTcyZDViLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC94bWwvRG9tRXhwYXRBZ2VudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpZm5kZWYgX0RPTUVYUEFUQUdFTlRfCi0jZGVmaW5lIF9ET01FWFBBVEFHRU5UXwotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8b2ZzdHJlYW0uaD4KLSNpbmNsdWRlIDxzb3N0cmVhbS5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDxzaXN0cmVhbS5oPgotI2luY2x1ZGUgPHV0aWwvZG9tY29yZS9Ob2RlSW1wbC5oPgotI2luY2x1ZGUgPHV0aWwvZG9tY29yZS9ET01TdHJpbmcuaD4KLSNpbmNsdWRlICJFeHBhdFdyYXBwZXIuaCIKLSNpbmNsdWRlICJYTUxFbGVtZW50SW1wbC5oIgotI2luY2x1ZGUgIlhNTERvY3VtZW50SW1wbC5oIgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLWNsYXNzIERvbUV4cGF0QWdlbnQgOiBwdWJsaWMgRXhwYXRXcmFwcGVyIHsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RvciBmb3IgRG9tRXhwYXRBZ2VudC4KLSAgICAgKiBAcGFyYW0geG1sRG9jUHRyIFhNTERvY3VtZW50IHBvaW50ZXIuCi0gICAgICovCi0gICAgRG9tRXhwYXRBZ2VudChYTUxEb2N1bWVudEltcGwqIHhtbERvY1B0cik7Ci0KLSAgICAvKiogRGVzdHJ1Y3RvciBmb3IgRG9tRXhwYXRBZ2VudC4gKi8KLSAgICB+RG9tRXhwYXRBZ2VudCgpOwotCi0gICAgLyoqCi0gICAgICogR2VuZXJhdGUgWE1MIERPTSBEb2N1bWVudCBmcm9tIFhNTCBzb3VyY2UuCi0gICAgICogQHBhcmFtIDxjb2RlPnhtbFN0cmVhbTwvY29kZT4gdGhlIFhNTCBzb3VyY2Ugc3RyZWFtLgotICAgICAqIEByZXR1cm4gdHVyZSBvciBmYWxzZSB0byBpbmRpY2F0ZSB3aGV0aGVyIGdlbmVyYXRlIHN1Y2Nlc3NmdWxseS4KLSAgICAgKi8KLSAgICBib29sIGdlbmVyYXRlRG9jdW1lbnRGcm9tWE1MKGlzdHJpbmdzdHJlYW0gKnhtbFN0cmVhbSk7Ci0KLSAgICAvKioKLSAgICAgKiBHZW5lcmF0ZSBYTUwgc3RyZWFtIGZyb20gWE1MIERPTSBkb2N1bWVudC4KLSAgICAgKiBAcmV0dXJuIHhtbCBzdHJlYW0uCi0gICAgICovCi0gICAgb3N0cmluZ3N0cmVhbSogZ2VuZXJhdGVYTUxGcm9tRG9jdW1lbnQoKTsKLQotICAgIC8qKgotICAgICAqIGRlYWwgd2l0aCBzdGFydCBlbGVtZW50IGluIEV4cGF0LgotICAgICAqLwotICAgIHZpcnR1YWwgdm9pZCBzdGFydEVsZW1lbnQoY29uc3QgWE1MX0NoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqKmF0dHMpOwotCi0gICAgLyoqCi0gICAgICogZGVhbCB3aXRoIGVuZCBlbGVtZW50IGZvciBFeHBhdC4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgZW5kRWxlbWVudChjb25zdCBYTUxfQ2hhciAqbmFtZSk7Ci0KLSAgICAvKioKLSAgICAgKiBkZWFsIHdpdGggZGF0YSBoYW5kbGVyIGZvciBFeHBhdC4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YUhhbmRsZXIoY29uc3QgWE1MX0NoYXIgKnMsIGludCBsZW4pOwotCi1QUklWQVRFOgotICAgIC8qKgotICAgICAqIFB1c2ggYSB4bWwgZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpYyB0YWcgbmFtZSBpbnRvIHN0YWNrLgotICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRhZy4KLSAgICAgKiBAcGFyYW0gYXR0cyBUaGUgYXR0cmlidXRlcyBvZiByZWxhdGVkIHRhZy4KLSAgICAgKi8KLSAgICB2b2lkIHB1c2hUYWcoY29uc3QgRE9NU3RyaW5nICpuYW1lLCBjb25zdCBYTUxfQ2hhciAqKmF0dHMpOwotCi0gICAgLyoqCi0gICAgICogQXBwZW5kIHRleHQgaW50byB0b3AgZWxlbWVudCBvZiBzdGFjay4KLSAgICAgKiBAcGFyYW0gdGV4dCBUaGUgZGF0YSByZWxhdGVkIHRvIHRoZSBwcmVzZW50IHRhZy4KLSAgICAgKi8KLSAgICB2b2lkIGFwcGVuZFRleHQoY29uc3QgRE9NU3RyaW5nICp0ZXh0KTsKLQotICAgIC8qKgotICAgICAqIFBvcCB0aGUgeG1sIGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWMgdGFnIG5hbWUuCi0gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGFnLgotICAgICAqLwotICAgIHZvaWQgcG9wVGFnKGNvbnN0IERPTVN0cmluZyAqbmFtZSk7Ci0KLSAgICAvKioKLSAgICAgKiBUcmF2ZXJzZSB0aGUgWE1MIERPTSBkb2N1bWVudCBzdGFydGluZyBmcm9tIHNwZWNpZmljIGVsZW1lbnQuCi0gICAgICogQHBhcmFtIHJvb3QgVGhlIHNwZWNpZmljIGVsZW1lbnQgc3RhcnQgdG8gdHJhdmVyc2UuCi0gICAgICovCi0gICAgdm9pZCB0cmF2ZXJzZShFbGVtZW50SW1wbCAqcm9vdCk7Ci0KLVBSSVZBVEU6Ci0gICAgdmVjdG9yPE5vZGVJbXBsKj4gbVN0YWNrOyAvKio8IHRoZSBzdGFjayB0byBtYW5hZ2UgdGhlIHRhZy4gKi8KLSAgICBYTUxFbGVtZW50SW1wbCogbVRvcEVsZW1lbnRQdHI7IC8qKjwgdGhlIHRvcCBlbGVtZW50IG9mIHRoZSBzdGFjay4gKi8KLSAgICBYTUxEb2N1bWVudEltcGwqIG1YTUxEb2N1bWVudFB0cjsgLyoqPCBYTUwgRE9NIGRvY3VtZW50IHBvaW50ZXIuICovCi0gICAgb3N0cmluZ3N0cmVhbSBtWE1Mb3N0cmVhbTsgLyoqPCB4bWwgb3V0cHV0IHN0cmVhbS4gKi8KLX07Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL3htbC9FeHBhdFdyYXBwZXIuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC94bWwvRXhwYXRXcmFwcGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMmQ3ZmUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL3htbC9FeHBhdFdyYXBwZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpZm5kZWYgX1hNTF9IXwotI2RlZmluZSBfWE1MX0hfCi0KLSNpbmNsdWRlIDxleHBhdC5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDxEcm0yQ29tbW9uVHlwZXMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLWNsYXNzIEV4cGF0V3JhcHBlciB7Ci1wdWJsaWM6Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0b3IgZm9yIEV4cGF0V3JhcHBlci4KLSAgICAgKi8KLSAgICBFeHBhdFdyYXBwZXIoKTsKLQotICAgIC8qKgotICAgICAqIERlc3RydWN0b3IgZm9yIEV4cGF0V3JhcHBlci4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIH5FeHBhdFdyYXBwZXIoKTsKLQotICAgIC8qKgotICAgICAqIGRlY29kZSBjYWxsIGV4cGF0IHRvIHBhcnNlIHRoZSB4bWwuCi0gICAgICogQHBhcmFtIGJ1ZiBUaGUgYnVmZmVyIHRvIGJlIHBhcnNlZC4KLSAgICAgKiBAcGFyYW0gbGVuIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4KLSAgICAgKiBAcGFyYW0gaXNGaW5hbCBUaGUgZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBidWZmZXIKLSAgICAgKiAgICAgICAgICAgICAgICBpcyBhIGZyYWdtZW50IG9yIHdob2xlIHhtbC4KLSAgICAgKi8KLSAgICBpbnQgZGVjb2RlKGNvbnN0IGNoYXIqIGJ1ZiwgaW50IGxlbiwgaW50IGlzRmluYWwpOwotCi0gICAgLyoqCi0gICAgICogdmlydHVhbCBmdW50aW9uIHRvIGRlYWwgd2l0aCB0aGUgc3RhcnQgZWxlbWVudCBpbiBleHBhdCwgbmVlZCBpbXBsZW1lbnQgYnkgY2hpbGQgY2xhc3MuCi0gICAgICovCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0RWxlbWVudChjb25zdCBYTUxfQ2hhciAqbmFtZSwgY29uc3QgWE1MX0NoYXIgKiphdHRzKTsKLQotICAgIC8qKgotICAgICAqIHZpcnR1YWwgZnVudGlvbiB0byBkZWFsIHdpdGggdGhlIGVuZCBlbGVtZW50IGluIGV4cGF0LCBuZWVkIGltcGxlbWVudCBieSBjaGlsZCBjbGFzcy4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgZW5kRWxlbWVudChjb25zdCBYTUxfQ2hhciAqbmFtZSk7Ci0KLSAgICAvKioKLSAgICAgKiB2aXJ0dWFsIGZ1bnRpb24gdG8gZGVhbCB3aXRoIHRoZSBkYXRhIGhhbmRsZXIgaW4gZXhwYXQsIG5lZWQgaW1wbGVtZW50IGJ5IGNoaWxkIGNsYXNzLgotICAgICAqLwotICAgIHZpcnR1YWwgdm9pZCBkYXRhSGFuZGxlcihjb25zdCBYTUxfQ2hhciAqcywgaW50IGxlbik7Ci0KLVBSSVZBVEU6Ci0gICAgLyoqCi0gICAgICogQ2FsbGJhY2sgZm9yIEV4cGF0IHN0YXJ0RWxlbWVudC4KLSAgICAgKi8KLSAgICBzdGF0aWMgdm9pZCBzdGFydEVsZW1lbnRDYWxsYmFjayh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKm5hbWUsIGNvbnN0IFhNTF9DaGFyICoqYXR0cyk7Ci0KLSAgICAvKioKLSAgICAgKiBDYWxsYmFjayBmb3IgRXhwYXQgZW5kRWxlbWVudC4KLSAgICAgKi8KLSAgICBzdGF0aWMgdm9pZCBlbmRFbGVtZW50Q2FsbGJhY2sodm9pZCAqdXNlckRhdGEsIGNvbnN0IFhNTF9DaGFyICpuYW1lKTsKLQotICAgIC8qKgotICAgICAqIENhbGxiYWNrIGZvciBFeHBhdCBkYXRhSGFuZGxlci4KLSAgICAgKi8KLSAgICBzdGF0aWMgdm9pZCBkYXRhSGFuZGxlckNhbGxiYWNrKHZvaWQgKnVzZXJEYXRhLCBjb25zdCBYTUxfQ2hhciAqcywgaW50IGxlbik7Ci0KLVBSSVZBVEU6Ci0gICAgWE1MX1BhcnNlciBtUGFyc2VyOyAvKio8IFRoZSBleHBhdCBwYXJzZXIgb2JqZWN0LiAqLwotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL1hNTERvY3VtZW50SW1wbC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL3htbC9YTUxEb2N1bWVudEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI5Yjg3ZC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL1hNTERvY3VtZW50SW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovDQotI2lmbmRlZiBfWE1MRE9DVU1FTlRJTVBMX0hfCi0jZGVmaW5lIF9YTUxET0NVTUVOVElNUExfSF8KLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHV0aWwvZG9tY29yZS9Eb2N1bWVudEltcGwuaD4KLQotY2xhc3MgWE1MRG9jdW1lbnRJbXBsIDogcHVibGljIERvY3VtZW50SW1wbCB7Ci1wdWJsaWM6Ci0gICAgLyoqIENvbnN0cnVjdG9yIGZvciBYTUxEb2N1bWVudEltcGwuICovCi0gICAgWE1MRG9jdW1lbnRJbXBsKCk7Ci0KLSAgICAvKiogRGVzdHJ1Y3RvciBmb3IgWE1MRG9jdW1lbnRJbXBsLiAqLwotICAgIH5YTUxEb2N1bWVudEltcGwoKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudCBvZiB0aGUgZG9jdW1lbnQuCi0gICAgICogQHJldHVybiB0aGUgZmlyc3QgY2hpbGQgPGNvZGU+RWxlbWVudDwvY29kZT4gb2YgZG9jdW1lbnQuCi0gICAgICovCi0gICAgdmlydHVhbCBFbGVtZW50SW1wbCogZ2V0RG9jdW1lbnRFbGVtZW50KCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBDcmVhdGUgYSBYTUwgZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpYyBuYW1lLgotICAgICAqIEBwYXJhbSB0YWdOYW1lIFRoZSBzcGVjaWZpYyB0YWcgbmFtZS4KLSAgICAgKiBAcmV0dXJuIGEgbmV3IHhtbCA8Y29kZT5FbGVtZW50PC9jb2RlPgotICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uCi0gICAgICovCi0gICAgdmlydHVhbCBFbGVtZW50SW1wbCogY3JlYXRlRWxlbWVudChjb25zdCBET01TdHJpbmcqIHRhZ05hbWUpIGNvbnN0IHRocm93IChET01FeGNlcHRpb24pOwotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlIGEgdGV4dCBub2RlIHdpdGggdGhlIHNwZWNpZmljIGRhdGEuCi0gICAgICogQHBhcmFtIGRhdGEgVGhlIHNwZWNpZmljIGRhdGEuCi0gICAgICogQHJldHVybiBhIG5ldyA8Y29kZT5UZXh0PC9jb2RlPiBub2RlLgotICAgICAqLwotICAgIHZpcnR1YWwgVGV4dEltcGwqIGNyZWF0ZVRleHROb2RlKGNvbnN0IERPTVN0cmluZyogZGF0YSkgY29uc3Q7Ci19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC94bWwvWE1MRWxlbWVudEltcGwuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC94bWwvWE1MRWxlbWVudEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjOTVlYy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL1hNTEVsZW1lbnRJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovDQotI2lmbmRlZiBfWE1MRUxFTUVOVElNUExfSF8KLSNkZWZpbmUgX1hNTEVMRU1FTlRJTVBMX0hfCi0KLSNpbmNsdWRlIDxEcm0yQ29tbW9uVHlwZXMuaD4KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvRWxlbWVudEltcGwuaD4KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvRE9NU3RyaW5nLmg+Ci0jaW5jbHVkZSA8dW1hcC5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi10eXBlZGVmIG1hcDxET01TdHJpbmcsIERPTVN0cmluZz4gRE9NU3RyaW5nTWFwOwotCi1jbGFzcyBYTUxFbGVtZW50SW1wbCA6IHB1YmxpYyBFbGVtZW50SW1wbCB7Ci1wdWJsaWM6Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0b3IgZm9yIFhNTEVsZW1lbnRJbXBsLgotICAgICAqIEBwYXJhbSB0YWcgVGhlIG5hbWUgb2YgdGhlIHRhZy4KLSAgICAgKi8KLSAgICBYTUxFbGVtZW50SW1wbChjb25zdCBET01TdHJpbmcgKnRhZyk7Ci0KLSAgICAvKiogRGVzdHJ1Y3RvciBmb3IgWE1MRWxlbWVudEltcGwuICovCi0gICAgflhNTEVsZW1lbnRJbXBsKCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGF0dHJpYnV0ZSBtYXAgb2YgdGhlIFhNTCBlbGVtZW50LgotICAgICAqIEByZXR1cm4gPGNvZGU+RE9NU3RyaW5nTWFwPC9jb2RlPgotICAgICAqLwotICAgIGNvbnN0IERPTVN0cmluZ01hcCogZ2V0QXR0cmlidXRlTWFwKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIHRhZyBuYW1lIG9mIHRoZSBlbGVtZW50LgotICAgICAqIHJldHVybiB0YWcgbmFtZS4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIGNvbnN0IERPTVN0cmluZyogZ2V0VGFnTmFtZSgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQuCi0gICAgICogQHBhcmFtIG5hbWUgVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgotICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IERPTVN0cmluZyogbmFtZSwgY29uc3QgRE9NU3RyaW5nKiB2YWx1ZSkgdGhyb3cgKERPTUV4Y2VwdGlvbik7Ci0KLSAgICAvKioKLSAgICAgKiBSZW1vdmUgdGhlIHNwZWNpZmljIGF0dHJpYnV0ZS4KLSAgICAgKiBAcGFyYW0gbmFtZSBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuCi0gICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24uCi0gICAgICovCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUpIHRocm93IChET01FeGNlcHRpb24pOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBzcGVjaWZpYyBhdHRyaWJ1dGUuCi0gICAgICogQHBhcmFtIG5hbWUgVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgotICAgICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUuCi0gICAgICovCi0gICAgdmlydHVhbCBjb25zdCBET01TdHJpbmcqIGdldEF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogRGV0ZWN0IHdoZXRoZXIgZWxlbWVudCBoYXMgYXR0cmlidXRlcyBvciBub3QuCi0gICAgICogQHJldHVybiB0cnVlIG9yIGZhbHNlIHRvIGluZGljYXRlIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0ZXMoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIEZpbmQgdGhlIGZpcnN0IGNoaWxkIG5vZGUgaW4gZWxlbWVudCBieSBpdHMgdGFnIG5hbWUuCi0gICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIHNwZWNpZmljIGVsZW1lbnQgdG8gYmUgZm91bmQuCi0gICAgICogQHBhcmFtIHRhZyB0aGUgc3BlY2lmaWMgdGFnIG5hbWUgdG8gYmUgc2VhcmNoZWQuCi0gICAgICogQHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZCBvdGhlcndpc2UgdGhlIGNoaWxkIG5vZGUuCi0gICAgICovCi0gICAgY29uc3QgTm9kZUltcGwqIGZpbmRTb2xvQ2hpbGROb2RlKGNvbnN0IGNoYXIqIHRhZykgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGZpcnN0IHRleHQgY29udGFpbnRlZCBpbiBmaXJzdCBjaGlsZCBvZiB0aGUgZWxlbWVudC4KLSAgICAgKiBAcGFyYW0gdGFnIHRoZSBzcGVjaWZpYyB0YWcgbmFtZSB0byBiZSBzZWFyY2hlZC4KLSAgICAgKiBAcmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kIG90aGVyd2lzZSB0aGUgdGV4dC4KLSAgICAgKi8KLSAgICBjb25zdCBzdHJpbmcqIGdldFNvbG9UZXh0KGNvbnN0IGNoYXIqIHRhZykgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGZpcnN0IGNoaWxkIHhtbCBlbGVtZW50IGNvbnRhaW50ZWQgaW4gdGhlIGVsZW1lbnQuCi0gICAgICogQHBhcmFtIHRhZyB0aGUgc3BlY2lmaWMgdGFnIG5hbWUgdG8gYmUgc2VhcmNoZWQuCi0gICAgICogQHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZCBvdGhlcndpc2UgdGhlIGVsZW1lbnQuCi0gICAgICovCi0gICAgY29uc3QgWE1MRWxlbWVudEltcGwqIGdldFNvbG9FbGVtZW50KGNvbnN0IGNoYXIqIHRhZykgY29uc3Q7Ci0KLVBSSVZBVEU6Ci0gICAgRE9NU3RyaW5nIG1UYWdOYW1lOyAvKio8IFRoZSB0YWcgbmFtZS4gKi8KLSAgICBET01TdHJpbmdNYXAgbUF0dHJpYnV0ZU1hcDsgLyoqIFRoZSBtYXAgb2YgYXR0cmlidXRlcy4gKi8KLX07Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RjZi9Ecm1EY2ZDb21tb24uY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RjZi9Ecm1EY2ZDb21tb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjVlNGFjLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtRGNmQ29tbW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPGRjZi9Ecm1EY2ZDb21tb24uaD4KLQotaW50NjRfdCBudG9oX2ludDY0KGludDY0X3QgeCkKLXsKLSAgICByZXR1cm4gKCgoaW50NjRfdCkobnRvaGwoKGludDMyX3QpKCh4IDw8IDMyKSA+PiAzMikpKSA8PCAzMikgfCAodWludDMyX3QpbnRvaGwoKChpbnQzMl90KSh4ID4+IDMyKSkpKTsKLX0KLQotLyoqCi0gKiBDbGFzczogQm94Ci0gKi8KLUJveDo6Qm94KGNvbnN0IHVpbnQ4X3QqIGJveCk6bUxhcmdlU2l6ZSgwKSxtVXNlclR5cGUoTlVMTCkKLXsKLSAgICBpZighYm94KQotICAgIHsKLSAgICAgICAgcmV0dXJuIDsKLSAgICB9Ci0KLSAgICBjb25zdCB1aW50OF90KiBwID0gYm94OwotCi0gICAgLyogR2V0IHRoZSBzaXplIHZhbHVlICovCi0gICAgbVNpemUgPSBudG9obCgqKHVpbnQzMl90ICopcCk7Ci0gICAgcCArPSBzaXplb2YobVNpemUpOwotCi0gICAgLyogR2V0IHRoZSB0eXBlIHZhbHVlICovCi0gICAgbVR5cGUgPSAqKCh1aW50MzJfdCAqKXApOwotICAgIHAgKz0gc2l6ZW9mKG1UeXBlKTsKLQotICAgIGlmICgxID09IG1TaXplKQotICAgIHsKLSAgICAgICAgbUxhcmdlU2l6ZSA9IG50b2hfaW50NjQoKih1aW50NjRfdCAqKXApOwotICAgICAgICBwICs9IHNpemVvZihtTGFyZ2VTaXplKTsKLSAgICB9Ci0KLSAgICBpZiAoRENGX1VTRVJfVFlQRSA9PSBtVHlwZSkKLSAgICB7Ci0gICAgICAgIG1Vc2VyVHlwZSA9IG5ldyB1aW50OF90W1VTRVJfVFlQRV9MRU5dOwotICAgICAgICBtZW1jcHkobVVzZXJUeXBlLCBwLCBVU0VSX1RZUEVfTEVOKTsKLSAgICAgICAgcCArPSBVU0VSX1RZUEVfTEVOOwotICAgIH0KLQotICAgIG1Cb3hMZW5ndGggPSBwIC0gYm94OwotfQotCi1Cb3g6OkJveChjb25zdCBCb3gmIG90aGVyKQotewotICAgIG1TaXplID0gb3RoZXIubVNpemU7Ci0gICAgbVR5cGUgPSBvdGhlci5tVHlwZTsKLSAgICBtTGFyZ2VTaXplID0gb3RoZXIubUxhcmdlU2l6ZTsKLSAgICBtVXNlclR5cGUgPSBOVUxMOwotCi0gICAgaWYob3RoZXIubVVzZXJUeXBlKQotICAgIHsKLSAgICAgICAgbVVzZXJUeXBlID0gbmV3IHVpbnQ4X3RbVVNFUl9UWVBFX0xFTl07Ci0gICAgICAgIG1lbWNweShtVXNlclR5cGUsb3RoZXIubVVzZXJUeXBlLFVTRVJfVFlQRV9MRU4pOwotICAgIH0KLX0KLQotQm94JiBCb3g6Om9wZXJhdG9yPShjb25zdCBCb3gmIG90aGVyKQotewotICAgIGlmKHRoaXMgPT0gJm90aGVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGlmKG1Vc2VyVHlwZSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSBbXW1Vc2VyVHlwZTsKLSAgICAgICAgbVVzZXJUeXBlID0gTlVMTDsKLSAgICB9Ci0KLSAgICBpZihvdGhlci5tVXNlclR5cGUpCi0gICAgewotICAgICAgICBtVXNlclR5cGUgPSBuZXcgdWludDhfdFtVU0VSX1RZUEVfTEVOXTsKLSAgICAgICAgbWVtY3B5KG1Vc2VyVHlwZSwgb3RoZXIubVVzZXJUeXBlLCBVU0VSX1RZUEVfTEVOKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUJveDo6fkJveCgpCi17Ci0gICAgaWYobVVzZXJUeXBlKQotICAgIHsKLSAgICAgICAgZGVsZXRlIFtdbVVzZXJUeXBlOwotICAgICAgICBtVXNlclR5cGUgPSBOVUxMOwotICAgIH0KLX0KLQotdWludDY0X3QgQm94OjpnZXRTaXplKHZvaWQpIGNvbnN0Ci17Ci0gICAgaWYoMSA9PSBtU2l6ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtTGFyZ2VTaXplOwotICAgIH0KLQotICAgIHJldHVybiBtU2l6ZTsKLX0KLQotdWludDMyX3QgQm94OjpnZXRUeXBlKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1UeXBlOwotfQotCi1jb25zdCB1aW50OF90KiBCb3g6OmdldFVzZXJ0eXBlKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Vc2VyVHlwZTsKLX0KLQotdWludDMyX3QgQm94OjpnZXRMZW4odm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUJveExlbmd0aDsKLX0KLQotCi0vKioKLSAqIENsYXNzOiBGdWxsQm94Ci0gKi8KLUZ1bGxCb3g6OkZ1bGxCb3goY29uc3QgdWludDhfdCogZnVsbEJveCkgOiBCb3goZnVsbEJveCkKLXsKLSAgICBpZighZnVsbEJveCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA7Ci0gICAgfQotCi0gICAgY29uc3QgdWludDhfdCogcCA9IGZ1bGxCb3g7Ci0KLSAgICBwICs9IEJveDo6Z2V0TGVuKCk7Ci0KLSAgICBtVmVyc2lvbiA9ICpwOwotICAgIHArKzsKLQotICAgIG1lbWNweShtRmxhZywgcCxGTEFHX0xFTik7Ci0gICAgcCArPSBGTEFHX0xFTjsKLQotICAgIG1GdWxsQm94TGVuZ3RoID0gcCAtIGZ1bGxCb3g7Ci19Ci0KLXVpbnQ4X3QgRnVsbEJveDo6Z2V0VmVyc2lvbih2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtVmVyc2lvbjsKLX0KLQotY29uc3QgdWludDhfdCogRnVsbEJveDo6Z2V0RmxhZyh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtRmxhZzsKLX0KLQotdWludDMyX3QgRnVsbEJveDo6Z2V0TGVuKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1GdWxsQm94TGVuZ3RoOwotfQotCi0vLy8vLyBjbGFzcyBUZXh0dWFsSGVhZGVyIGltcGxlbWVudGF0aW9uCi1UZXh0dWFsSGVhZGVyOjpUZXh0dWFsSGVhZGVyKGNvbnN0IHN0cmluZyYgaW5EYXRhKQotewotICAgIHN0cmluZzo6c2l6ZV90eXBlIGxvYzEgPSBpbkRhdGEuZmluZCgiOiIsIDApOwotCi0gICAgaWYgKGxvYzEgIT0gc3RyaW5nOjpucG9zKQotICAgIHsKLSAgICAgICAgbmFtZS5hc3NpZ24oaW5EYXRhLCAwLCBsb2MxKTsKLSAgICB9Ci0KLSAgICBzdHJpbmc6OnNpemVfdHlwZSBsb2MyID0gaW5EYXRhLmZpbmQoIjsiLCBsb2MxICsgMSk7Ci0KLSAgICBpZiAobG9jMiAhPSBzdHJpbmc6Om5wb3MpCi0gICAgewotICAgICAgICB2YWx1ZS5hc3NpZ24oaW5EYXRhLCBsb2MxICsgMSwgbG9jMiAtIGxvYzEgLSAxKTsKLSAgICAgICAgcGFyYW0uYXNzaWduKGluRGF0YSwgbG9jMiArIDEsIGluRGF0YS5sZW5ndGgoKSAtIGxvYzIgLSAxKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgdmFsdWUuYXNzaWduKGluRGF0YSwgbG9jMSArIDEsIGluRGF0YS5sZW5ndGgoKSAtIGxvYzEgLSAxKTsKLSAgICB9Ci19Ci0KLXN0cmluZyBUZXh0dWFsSGVhZGVyOjpnZXROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotc3RyaW5nIFRleHR1YWxIZWFkZXI6OmdldFZhbHVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXN0cmluZyBUZXh0dWFsSGVhZGVyOjpnZXRQYXJhbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBhcmFtOwotfQotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZGNmL0RybURjZkNvbnRhaW5lci5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZGNmL0RybURjZkNvbnRhaW5lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxN2M5MzAuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RjZi9Ecm1EY2ZDb250YWluZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaW5jbHVkZSA8ZGNmL0RybURjZkNvbnRhaW5lci5oPgotCi1EY2ZDb250YWluZXI6OkRjZkNvbnRhaW5lcihjb25zdCB1aW50OF90KiBkYXRhLGlzdHJlYW0mIGluUmF3RGF0YSx1aW50NjRfdCBjb25PZmYpCi0gICAgICAgICAgICAgICAgOiBGdWxsQm94KGRhdGEpLG1Db25TdHJlYW0oaW5SYXdEYXRhKQotewotICAgIGlmKCFkYXRhKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBkYXRhOwotICAgIGNvbnN0IHVpbnQ4X3QqIGZsYWcgPSB0aGlzLT5nZXRGbGFnKCk7Ci0KLSAgICBpZihmbGFnWzBdICYgVVNFUl9EQVRBX0ZMQUcpCi0gICAgewotICAgICAgICBtSGFzVXNlckRhdGEgPSB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtSGFzVXNlckRhdGEgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBwICs9IHRoaXMtPmdldExlbigpOwotCi0gICAgRnVsbEJveCBmdWxsQm94RGlzY3JldGUocCk7Ci0KLSAgICBwICs9IGZ1bGxCb3hEaXNjcmV0ZS5nZXRMZW4oKTsKLQotICAgIG1Db250ZW50VHlwZUxlbiA9ICpwOwotICAgIHArKzsKLQotICAgIG1Db250ZW50VHlwZS5hc3NpZ24oKGNvbnN0IGNoYXIqKXAsMCxtQ29udGVudFR5cGVMZW4pOwotICAgIHAgKz0gbUNvbnRlbnRUeXBlTGVuOwotCi0gICAgLy8gcGFyc2UgY29tbW9uIGhlYWRlcgotICAgIEZ1bGxCb3ggZnVsbEJveENvbW0ocCk7Ci0gICAgcCArPSBmdWxsQm94Q29tbS5nZXRMZW4oKTsKLQotICAgIG1FbmNyeXB0aW9uTWV0aG9kID0gKnA7Ci0gICAgcCsrOwotCi0gICAgbVBhZGRpbmdTY2hlbWUgPSAqcDsKLSAgICBwKys7Ci0KLSAgICBtUGxhaW50ZXh0TGVuZ3RoID0gbnRvaF9pbnQ2NCgqKCh1aW50NjRfdCAqKXApKTsKLSAgICBwICs9IHNpemVvZihtUGxhaW50ZXh0TGVuZ3RoKTsKLQotICAgIG1Db250ZW50SURMZW5ndGggPSBudG9ocygqKHVpbnQxNl90ICopcCk7Ci0gICAgcCArPSBzaXplb2YobUNvbnRlbnRJRExlbmd0aCk7Ci0KLSAgICBtUmlnaHRzSXNzdWVyVVJMTGVuZ3RoID0gbnRvaHMoKih1aW50MTZfdCAqKXApOwotICAgIHAgKz0gc2l6ZW9mKG1SaWdodHNJc3N1ZXJVUkxMZW5ndGgpOwotCi0gICAgbVRleHR1YWxIZWFkZXJzTGVuZ3RoID0gbnRvaHMoKih1aW50MTZfdCAqKXApOwotICAgIHAgKz0gc2l6ZW9mKG1UZXh0dWFsSGVhZGVyc0xlbmd0aCk7Ci0KLSAgICBtQ29udGVudElELmFzc2lnbigoY29uc3QgY2hhciAqKXAsMCxtQ29udGVudElETGVuZ3RoKTsKLSAgICBwICs9IG1Db250ZW50SURMZW5ndGg7Ci0KLSAgICBtUmlnaHRzSXNzdWVyVVJMLmFzc2lnbigoY29uc3QgY2hhciAqKXAsMCxtUmlnaHRzSXNzdWVyVVJMTGVuZ3RoKTsKLSAgICBwICs9IG1SaWdodHNJc3N1ZXJVUkxMZW5ndGg7Ci0KLSAgICAvLyBwYXJzZSB0ZXh0dWFsIGhlYWRlcgotICAgIGlmIChtVGV4dHVhbEhlYWRlcnNMZW5ndGggPiAwKQotICAgIHsKLSAgICAgICAgaWYoZmFsc2UgPT0gcGFyc2VUZXh0dWFsSGVhZGVycyhwLG1UZXh0dWFsSGVhZGVyc0xlbmd0aCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHAgKz0gbVRleHR1YWxIZWFkZXJzTGVuZ3RoOwotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vIHBhcnNlciBncm91cCBpZAotCi0gICAgLy8vcGFyc2UgY29udGVudAotICAgIHAgPSBkYXRhICsgdGhpcy0+Z2V0TGVuKCkgKyBmdWxsQm94RGlzY3JldGUuZ2V0U2l6ZSgpOwotICAgIEZ1bGxCb3ggZnVsbEJveENvbnRldG4ocCk7Ci0gICAgcCArPSBmdWxsQm94Q29udGV0bi5nZXRMZW4oKTsKLSAgICBtRGF0YUxlbiA9IG50b2hfaW50NjQoKigodWludDY0X3QgKilwKSk7Ci0gICAgcCArPSBzaXplb2YobURhdGFMZW4pOwotCi0gICAgbURlY09mZnNldCA9IGNvbk9mZiArIChwIC0gZGF0YSk7Ci0gICAgcCArPSBtRGF0YUxlbjsKLQotICAgIC8vLy8vLy8vLy8vLy8vLyBwYXJzZXIgdXNlciBkYXRhCi19Ci0KLURjZkNvbnRhaW5lcjo6fkRjZkNvbnRhaW5lcigpCi17Ci0gICAgdWludDMyX3Qgc2l6ZSA9IG1UZXh0dWFsSGVhZGVycy5zaXplKCk7Ci0KLSAgICBmb3IodWludDMyX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgewotICAgICAgICBkZWxldGUgbVRleHR1YWxIZWFkZXJzW2ldOwotICAgIH0KLQotICAgIG1UZXh0dWFsSGVhZGVycy5jbGVhcigpOwotICAgIG1DdXN0b21IZWFkZXIuY2xlYXIoKTsKLX0KLQotCi1zdHJpbmcgRGNmQ29udGFpbmVyOjpnZXRDb250ZW50VHlwZSh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtQ29udGVudFR5cGU7Ci19Ci0KLXVpbnQ4X3QgRGNmQ29udGFpbmVyOjpnZXRFbmNyeXB0aW9uTWV0aG9kKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1FbmNyeXB0aW9uTWV0aG9kOwotfQotCi11aW50OF90IERjZkNvbnRhaW5lcjo6Z2V0UGFkZGluZ1NjaGVtZSh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtUGFkZGluZ1NjaGVtZTsKLX0KLQotdWludDY0X3QgRGNmQ29udGFpbmVyOjpnZXRQbGFpbnRleHRMZW5ndGgodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVBsYWludGV4dExlbmd0aDsKLX0KLQotdWludDE2X3QgRGNmQ29udGFpbmVyOjpnZXRDb250ZW50SURMZW5ndGgodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvbnRlbnRJRExlbmd0aDsKLX0KLQotdWludDE2X3QgRGNmQ29udGFpbmVyOjpnZXRSaWdodHNJc3N1ZXJVUkxMZW5ndGgodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVJpZ2h0c0lzc3VlclVSTExlbmd0aDsKLX0KLQotdWludDE2X3QgRGNmQ29udGFpbmVyOjpnZXRUZXh0dWFsSGVhZGVyc0xlbmd0aCh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtVGV4dHVhbEhlYWRlcnNMZW5ndGg7Ci19Ci0KLXN0cmluZyBEY2ZDb250YWluZXI6OmdldENvbnRlbnRJRCh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtQ29udGVudElEOwotfQotCi1zdHJpbmcgRGNmQ29udGFpbmVyOjpnZXRSaWdodHNJc3N1ZXJVUkwodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVJpZ2h0c0lzc3VlclVSTDsKLX0KLQotc3RyaW5nIERjZkNvbnRhaW5lcjo6Z2V0UHJldmlld01ldGhvZCh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtU2xpZW50TWV0aG9kOwotfQotCi1zdHJpbmcgRGNmQ29udGFpbmVyOjpnZXRDb250ZW50TG9jYXRpb24odm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvbnRlbnRMb2NhdGlvbjsKLX0KLQotc3RyaW5nIERjZkNvbnRhaW5lcjo6Z2V0Q29udGVudFVSTCh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtQ29udGVudFVSTDsKLX0KLQotdmVjdG9yPHN0cmluZz4gRGNmQ29udGFpbmVyOjpnZXRDdXN0b21lckhlYWQodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUN1c3RvbUhlYWRlcjsKLX0KLQotaXN0cmVhbSYgRGNmQ29udGFpbmVyOjpnZXRTdHJlYW0odm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvblN0cmVhbTsKLX0KLQotRHJtSW5TdHJlYW0gRGNmQ29udGFpbmVyOjpnZXRQcmV2aWV3RWxlbWVudERhdGEodm9pZCkgY29uc3QKLXsKLSAgICAgLy8gZ2V0IGRhdGEgYmFzZWQgb24gbVByZXZpZXdFbGVtZW50VVJJCi0gICAgIC8vZW5jcnlwdGVkRGF0YSA9IDsKLQotICAgICBEcm1JblN0cmVhbSBpblN0cmVhbTsKLSAgICAgcmV0dXJuIGluU3RyZWFtOwotfQotCi1Ecm1JblN0cmVhbSBEY2ZDb250YWluZXI6OmdldERlY3J5cHRDb250ZW50KHVpbnQ4X3QqIGRlY3J5cHRLZXkpIGNvbnN0Ci17Ci0gICAgRHJtSW5TdHJlYW0gaW5TdHJlYW0odGhpcyxkZWNyeXB0S2V5KTsKLSAgICByZXR1cm4gaW5TdHJlYW07Ci19Ci0KLWJvb2wgRGNmQ29udGFpbmVyOjpwYXJzZVRleHR1YWxIZWFkZXJzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVpbnQzMl90IGxlbikKLXsKLSAgICBpZighZGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBjb25zdCB1aW50OF90KiBwID0gZGF0YTsKLQotICAgIHdoaWxlIChsZW4gPiAodWludDMyX3QpKHAgLSBkYXRhKSkKLSAgICB7Ci0gICAgICAgIHVpbnQzMl90IGwgPSBzdHJsZW4oKGNvbnN0IGNoYXIqKXApOwotCi0gICAgICAgIHN0cmluZyBzdHIoKGNvbnN0IGNoYXIqKXAsIGwpOwotICAgICAgICBUZXh0dWFsSGVhZGVyKiB0bXAgPSBuZXcgVGV4dHVhbEhlYWRlcihzdHIpOwotCi0gICAgICAgIGlmKCF0bXApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIG1UZXh0dWFsSGVhZGVycy5wdXNoX2JhY2sodG1wKTsKLQotICAgICAgICBwICs9IGwgKyAxOwotICAgIH0KLQotICAgIHVpbnQzMl90IHNpemUgPSBtVGV4dHVhbEhlYWRlcnMuc2l6ZSgpOwotICAgIHVpbnQzMl90IHNpbGVudHBvcyA9IDA7Ci0gICAgdWludDMyX3QgcHJldmlld3BvcyA9IDA7Ci0KLSAgICBmb3IoIHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgIHsKLSAgICAgICAgc3RyaW5nIHRlbXBTdHIgPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldE5hbWUoKTsKLQotICAgICAgICBpZih0ZW1wU3RyID09ICJTaWxlbnQiKQotICAgICAgICB7Ci0gICAgICAgICAgICBzaWxlbnRwb3MgPSBpOwotICAgICAgICAgICAgbVNsaWVudE1ldGhvZCA9IG1UZXh0dWFsSGVhZGVyc1tpXS0+Z2V0VmFsdWUoKTsKLSAgICAgICAgICAgIG1TaWxlbnRSaWdodHNVUkwgPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldFBhcmFtKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZih0ZW1wU3RyID09ICJQcmV2aWV3IikKLSAgICAgICAgewotICAgICAgICAgICAgcHJldmlld3BvcyA9IGk7Ci0gICAgICAgICAgICBtUHJldmlld01ldGhvZCA9IG1UZXh0dWFsSGVhZGVyc1tpXS0+Z2V0VmFsdWUoKTsKLQotICAgICAgICAgICAgaWYobVByZXZpZXdNZXRob2QgPT0gImluc3RhbnQiKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1QcmV2aWV3RWxlbWVudFVSSSA9IG1UZXh0dWFsSGVhZGVyc1tpXS0+Z2V0UGFyYW0oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtUHJldmlld1JpZ2h0c1VSTCA9IG1UZXh0dWFsSGVhZGVyc1tpXS0+Z2V0UGFyYW0oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHRlbXBTdHIgPT0gIkNvbnRlbnRVUkwiKQotICAgICAgICB7Ci0gICAgICAgICAgICBtQ29udGVudFVSTCA9IG1UZXh0dWFsSGVhZGVyc1tpXS0+Z2V0VmFsdWUoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHRlbXBTdHIgPT0gIkNvbnRlbnRWZXJzaW9uIikKLSAgICAgICAgewotICAgICAgICAgICAgbUNvbnRlbnRWZXJzaW9uID0gbVRleHR1YWxIZWFkZXJzW2ldLT5nZXRWYWx1ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGlmKHRlbXBTdHIgPT0gIkNvbnRlbnQtTG9jYXRpb24iKQotICAgICAgICB7Ci0gICAgICAgICAgICBtQ29udGVudExvY2F0aW9uID0gbVRleHR1YWxIZWFkZXJzW2ldLT5nZXRWYWx1ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgc3RyaW5nIHN0ciA9IG1UZXh0dWFsSGVhZGVyc1tpXS0+Z2V0TmFtZSgpOwotICAgICAgICAgICAgc3RyICs9ICI6IjsKLSAgICAgICAgICAgIHN0ciArPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldFZhbHVlKCk7Ci0gICAgICAgICAgICBtQ3VzdG9tSGVhZGVyLnB1c2hfYmFjayhzdHIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoc2lsZW50cG9zIDwgcHJldmlld3BvcykKLSAgICB7Ci0gICAgICAgIG1TaWxlbnRGaXJzdCA9IHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIG1TaWxlbnRGaXJzdCA9IGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtSVN0cmVhbS5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZGNmL0RybUlTdHJlYW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmNjMTZhLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtSVN0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPGRjZi9Ecm1JU3RyZWFtLmg+Ci0KLQotRHJtSW5TdHJlYW06OkRybUluU3RyZWFtKGNvbnN0IERjZkNvbnRhaW5lciogY29udGFpbmVyLHVpbnQ4X3QqIEtleSkKLTptRGNmQ29uKGNvbnRhaW5lciksbURlY3J5cHRQb3MoMCkKLXsKLSAgICBtZW1jcHkobUFlc0tleSxLZXksQUVTX0tFWV9MRU4pOwotfQotCi11aW50NjRfdCBEcm1JblN0cmVhbTo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1EY2ZDb24tPm1QbGFpbnRleHRMZW5ndGg7Ci19Ci0KLXVpbnQ2NF90IERybUluU3RyZWFtOjpyZWFkKHVpbnQ4X3QqIGRhdGEsIHVpbnQ2NF90IGxlbikKLXsKLSAgICBpZighZGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmKG1EZWNyeXB0UG9zID49IG1EY2ZDb24tPm1QbGFpbnRleHRMZW5ndGgpCi0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICB1aW50NjRfdCByZWFkTGVuID0gbGVuOwotCi0gICAgLy8gY29tZSB0byB0aGUgZW5kIG9mIGRlY3J5cHRlZCBkYXRhCi0gICAgaWYobURlY3J5cHRQb3MgKyBsZW4gPiBtRGNmQ29uLT5tUGxhaW50ZXh0TGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmVhZExlbiA9IG1EY2ZDb24tPm1QbGFpbnRleHRMZW5ndGggLSBtRGVjcnlwdFBvczsKLSAgICB9Ci0KLSAgICB1aW50NjRfdCBlbmNMZW4gPSBtRGNmQ29uLT5tRGF0YUxlbjsKLSAgICB1aW50OF90KiBlbmNEYXRhID0gbmV3IHVpbnQ4X3RbZW5jTGVuXTsKLQotICAgIGlmKCFlbmNEYXRhKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgbURjZkNvbi0+bUNvblN0cmVhbS5zZWVrKG1EY2ZDb24tPm1EZWNPZmZzZXQpOwotICAgIG1EY2ZDb24tPm1Db25TdHJlYW0ucmVhZChlbmNEYXRhLGVuY0xlbik7Ci0KLSAgICB1aW50OF90IGl2W0FFU19JVl9MRU5dID0gezB9OwotCi0gICAgbWVtY3B5KGl2LGVuY0RhdGEsQUVTX0lWX0xFTik7Ci0gICAgZW5jTGVuIC09IEFFU19JVl9MRU47Ci0KLSAgICBpZihBRVNfMTI4X0NCQyAhPSBtRGNmQ29uLT5tRW5jcnlwdGlvbk1ldGhvZCkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSBbXWVuY0RhdGE7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEFlc0FnZW50IGRybUFlc0RlY3J5cHQoQUVTXzEyOF9DQkMsbUFlc0tleSk7Ci0gICAgaW50MzJfdCBwYWRMZW4gPSBkcm1BZXNEZWNyeXB0LmRlY0NvbnRlbnQoIGl2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNEYXRhICsgQUVTX0lWX0xFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTsKLQotICAgIGRlbGV0ZSBbXWVuY0RhdGE7Ci0KLSAgICBpZihwYWRMZW4gPj0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWFkTGVuOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RjZi9Ecm1SYXdDb250ZW50LmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtUmF3Q29udGVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MTNlM2MuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RjZi9Ecm1SYXdDb250ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPGRjZi9Ecm1SYXdDb250ZW50Lmg+Ci0KLQotRHJtUmF3Q29udGVudDo6RHJtUmF3Q29udGVudChpc3RyZWFtJiBpblJhd0RhdGEpCi17Ci0gICAgdWludDMyX3QgY291bnQgPSBpblJhd0RhdGEuc3RyZWFtX3NpemUoKTsKLQotICAgIGlmIChjb3VudCA8PSBNQVhfUElFQ0VfTEVOKQotICAgIHsKLSAgICAgICAgdWludDhfdCogZGF0YSA9IG5ldyB1aW50OF90W2NvdW50XTsKLQotICAgICAgICBpZighZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5SYXdEYXRhLnJlYWQoZGF0YSxjb3VudCk7Ci0KLSAgICAgICAgY29uc3QgdWludDhfdCogZGNmID0gZGF0YTsKLQotICAgICAgICAvL3BhcnNlIERDRiBmaWxlIGhlYWRlcgotICAgICAgICBpZihmYWxzZSA9PSBwYXJzZURjZkhlYWRlcihkY2YpKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGUgW11kYXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZGNmID0gZGF0YTsKLSAgICAgICAgZGNmICs9IEZJWF9IRUFERVJfTEVOOwotCi0gICAgICAgIGlmKGRjZiA+PSAoZGF0YSArIGNvdW50KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gcGFyc2UgY29udGFpbmVyIGJveAotICAgICAgICBGdWxsQm94IGNvbkZ1bGxCb3goZGNmKTsKLQotICAgICAgICBpZihEQ0ZfQ09OVEFJTkVSX0JPWCAhPSBjb25GdWxsQm94LmdldFR5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy9jaGVjayB3aGV0aGVyIGl0IGlzIG11bHRpcGFydCBEQ0Ygb3Igbm90Ci0gICAgICAgIGRvCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQ2NF90IHNpemUgPSBjb25GdWxsQm94LmdldFNpemUoKTsKLQotICAgICAgICAgICAgbUNvbnRhaW5lci5wdXNoX2JhY2sobmV3IERjZkNvbnRhaW5lcihkY2YsaW5SYXdEYXRhLGRjZi1kYXRhKSk7Ci0KLSAgICAgICAgICAgIGRjZiArPSBzaXplOwotCi0gICAgICAgICAgICAvLyBjb21lIHRvIHRoZSBlbmQgb2YgcmF3IGNvbnRlbnQKLSAgICAgICAgICAgIGlmKGRjZiA+PSAoZGF0YSArIGNvdW50KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29uRnVsbEJveCA9IEZ1bGxCb3goZGNmKTsKLSAgICAgICAgfXdoaWxlKERDRl9DT05UQUlORVJfQk9YID09IGNvbkZ1bGxCb3guZ2V0VHlwZSgpKTsKLQotICAgICAgICAvLyBjb21wdXRlIERDRiBoYXNoIHVzaW5nIFNoYTFBZ2VudAotICAgICAgICBTaGExQWdlbnQgZHJtU2hhMUhhc2g7Ci0gICAgICAgIGRybVNoYTFIYXNoLmNvbXB1dGVIYXNoKGRhdGEsZGNmLWRhdGEsbURjZkhhc2gpOwotCi0gICAgICAgIC8vLy8gcGFyc2UgbXV0YWJsZSBib3gKLQotICAgICAgICBkZWxldGUgW11kYXRhOwotICAgIH0KLX0KLQotRHJtUmF3Q29udGVudDo6fkRybVJhd0NvbnRlbnQoKQotewotICAgIHVpbnQzMl90IHNpemUgPSBtQ29udGFpbmVyLnNpemUoKTsKLQotICAgIGZvcih1aW50MzJfdCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSBtQ29udGFpbmVyW2ldOwotICAgIH0KLQotICAgIG1Db250YWluZXIuY2xlYXIoKTsKLX0KLQotdmVjdG9yPERjZkNvbnRhaW5lcio+IERybVJhd0NvbnRlbnQ6OmdldENvbnRlbnRzKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Db250YWluZXI7Ci19Ci0KLXVpbnQzMl90IERybVJhd0NvbnRlbnQ6OmdldERjZkhhc2hMZW4oKSBjb25zdAotewotICAgIHJldHVybiBEQ0ZfSEFTSF9MRU47Ci19Ci0KLXZvaWQgRHJtUmF3Q29udGVudDo6Z2V0RGNmSGFzaCh1aW50OF90KiBvdXREY2ZIYXNoKSBjb25zdAotewotICAgIGlmKG91dERjZkhhc2gpCi0gICAgewotICAgICAgICBtZW1jcHkob3V0RGNmSGFzaCxtRGNmSGFzaCxEQ0ZfSEFTSF9MRU4pOwotICAgIH0KLQotICAgIHJldHVybjsKLX0KLQotYm9vbCBEcm1SYXdDb250ZW50OjpwYXJzZURjZkhlYWRlcihjb25zdCB1aW50OF90KiBkY2ZIZWFkKQotewotICAgIGlmKCFkY2ZIZWFkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmKEZJWF9IRUFERVJfTEVOICE9IG50b2hsKCoodWludDMyX3QgKilkY2ZIZWFkKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBkY2ZIZWFkICs9IDQ7Ci0gICAgdWludDMyX3QgdHlwZSA9ICoodWludDMyX3QgKilkY2ZIZWFkOwotCi0gICAgaWYoRENGX0ZJTEVfVFlQRSAhPSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGRjZkhlYWQgKz0gNDsKLSAgICB0eXBlID0gKih1aW50MzJfdCAqKWRjZkhlYWQ7Ci0KLSAgICBpZihEQ0ZfRklMRV9CUkFORCAhPSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGRjZkhlYWQgKz0gNDsKLSAgICBpZigyICE9IG50b2hsKCoodWludDMyX3QgKilkY2ZIZWFkKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBkY2ZIZWFkICs9IDQ7Ci0gICAgdHlwZSA9ICoodWludDMyX3QgKilkY2ZIZWFkOwotCi0gICAgaWYoRENGX0ZJTEVfQlJBTkQgIT0gdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBkY2ZIZWFkICs9IDQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19CmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZHJtbWFuYWdlci9Ecm1NYW5hZ2VyLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kcm1tYW5hZ2VyL0RybU1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTk1MjZmLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kcm1tYW5hZ2VyL0RybU1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaW5jbHVkZSA8ZHJtbWFuYWdlci9Ecm1NYW5hZ2VyLmg+Ci0jaW5jbHVkZSA8dXN0cmluZy5oPgotI2luY2x1ZGUgPG9mc3RyZWFtLmg+Ci0jaW5jbHVkZSA8c29zdHJlYW0uaD4KLSNpbmNsdWRlIDxzaXN0cmVhbS5oPgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLS8qKnNlZSBEcm1NYW5hZ2VyLmggKi8KLURybU1hbmFnZXI6OkRybU1hbmFnZXIoaXN0cmVhbSAqIGluUmF3RGF0YSkKLXsKLSAgICBtRGNmU3RyZWFtID0gTlVMTDsKLSAgICBpZiAoaW5SYXdEYXRhICE9IE5VTEwpCi0gICAgewotICAgICAgICBtRGNmU3RyZWFtID0gaW5SYXdEYXRhOwotICAgIH0KLX0KLQotLyoqc2VlIERybU1hbmFnZXIuaCAqLwotRHJtTWFuYWdlcjo6RHJtTWFuYWdlcihpc3RyZWFtICogaW5SYXdEYXRhLCBzdHJpbmcgbWltZVR5cGUpCi17Ci0gICAgbURjZlN0cmVhbSA9IGluUmF3RGF0YTsKLX0KLQotLyoqc2VlIERybU1hbmFnZXIuaCAqLwotaW50MTZfdCBEcm1NYW5hZ2VyOjpnZXRMaXN0T2ZEY2ZPYmplY3RzKHZlY3RvcjxEY2ZDb250YWluZXIqPiAqKm91dERjZkxpc3QpCi17Ci0gICAgLyoqIGNhbGwgZGNmIGZ1bmN0aW9ucyB0byBwYXJzZSB0aGUgZGNmIGZpbGUqLwotICAgIGlmIChOVUxMID09IG1EY2ZTdHJlYW0pCi0gICAgewotICAgICAgICByZXR1cm4gRVJSX0RDRlNUUkVBTV9OT1RfSU5JVElBTElaRUQ7Ci0gICAgfQotICAgIGlmIChOVUxMID09IG91dERjZkxpc3QpCi0gICAgewotICAgICAgICByZXR1cm4gRVJSX0RDRlNUUkVBTV9OT1RfSU5JVElBTElaRUQ7Ci0gICAgfQotICAgICpvdXREY2ZMaXN0PSZtRGNmczsKLSAgICByZXR1cm4gRFJNX09LOwotfQotCi0vKipzZWUgRHJtTWFuYWdlci5oICovCi1pbnQxNl90IERybU1hbmFnZXI6Om9wZW5EZWNyeXB0ZWRDb250ZW50KERjZkNvbnRhaW5lciAqb25lRGNmT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IG9wZXJhdGlvblR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzdHJlYW0gKm91dERlY3J5cHRlZERhdGEpCi17Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qKnNlZSBEcm1NYW5hZ2VyLmggKi8KLURybU1hbmFnZXI6On5Ecm1NYW5hZ2VyKCkKLXsKLQotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Bc3NldC5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL0Fzc2V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIwYjQ2NS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL0Fzc2V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPHJpZ2h0cy9Bc3NldC5oPgotCi0vKiogc2VlIEFzc2V0LmggKi8KLUFzc2V0OjpBc3NldCgpCi17fQotCi0vKiogc2VlIEFzc2V0LmggKi8KLUFzc2V0Ojp+QXNzZXQoKQote30KLQotLyoqIHNlZSBBc3NldC5oICovCi1ib29sIEFzc2V0OjpoYXNQYXJlbnQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLyoqIHNlZSBBc3NldC5oICovCi12b2lkIEFzc2V0OjpzZXRJRChjb25zdCBzdHJpbmcgJmlkKQotewotICAgIG1Bc3NldElEID0gaWQ7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotY29uc3Qgc3RyaW5nJiBBc3NldDo6Z2V0SUQoKSBjb25zdAotewotICAgIHJldHVybiBtQXNzZXRJRDsKLX0KLQotLyoqIHNlZSBBc3NldC5oICovCi12b2lkIEFzc2V0OjpzZXRDb250ZW50SUQoY29uc3Qgc3RyaW5nICZpZCkKLXsKLSAgICBtQ29udGVudElEID0gaWQ7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotY29uc3Qgc3RyaW5nJiBBc3NldDo6Z2V0Q29udGVudElEKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvbnRlbnRJRDsKLX0KLQotLyoqIHNlZSBBc3NldC5oICovCi12b2lkIEFzc2V0OjpzZXRFbmNyeXB0ZWRLZXkoY29uc3Qgc3RyaW5nICZrZXkpCi17Ci0gICAgbUVuY3J5cHRlZEtleSA9IGtleTsKLX0KLQotLyoqIHNlZSBBc3NldC5oICovCi12b2lkIEFzc2V0OjpzZXREQ0ZEaWdlc3QoY29uc3Qgc3RyaW5nICZ2YWx1ZSkKLXsKLSAgICBtRGlnZXN0VmFsdWUgPSB2YWx1ZTsKLX0KLQotLyoqIHNlZSBBc3NldC5oICovCi1jb25zdCBzdHJpbmcmIEFzc2V0OjpnZXREQ0ZEaWdlc3QoKSBjb25zdAotewotICAgIHJldHVybiBtRGlnZXN0VmFsdWU7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotdm9pZCBBc3NldDo6c2V0S2V5UmV0cmlldmFsTWV0aG9kKGNvbnN0IHN0cmluZyAmcm0pCi17Ci0gICAgbVJldHJpZXZhbE1ldGhvZCA9IHJtOwotfQotCi0vKiogc2VlIEFzc2V0LmggKi8KLXZvaWQgQXNzZXQ6OnNldFBhcmVudENvbnRlbnRJRChjb25zdCBzdHJpbmcgJmlkKQotewotICAgIG1QYXJlbnRDb250ZW50SUQgPSBpZDsKLX0KLQotLyoqIHNlZSBBc3NldC5oICovCi1jb25zdCBzdHJpbmcmIEFzc2V0OjpnZXRFbmNyeXRlZEtleSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1FbmNyeXB0ZWRLZXk7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotY29uc3QgY2hhciogQXNzZXQ6OmdldENlaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotdm9pZCBBc3NldDo6cmVjb3ZlckNlaygpCi17Ci0vL2ZpeCBsYXRlci4KLQotfQotCi0vKiogc2VlIEFzc2V0LmggKi8KLWNvbnN0IHN0cmluZyYgQXNzZXQ6OmdldFBhcmVudENvbnRlbnRJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1QYXJlbnRDb250ZW50SUQ7Ci19CmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL0NvbnN0cmFpbnQuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Db25zdHJhaW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNiNDMxMS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL0NvbnN0cmFpbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaW5jbHVkZSA8cmlnaHRzL0NvbnN0cmFpbnQuaD4KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLUNvbnN0cmFpbnQ6OkNvbnN0cmFpbnQoKQotewotICAgIG1Db3VudCA9IElOSVRfVkFMVUU7Ci0gICAgbVRpbWVkQ291bnQgPSBJTklUX1ZBTFVFOwotICAgIG1UaW1lciA9IElOSVRfVkFMVUU7Ci0gICAgbVN0YXJ0ID0gSU5JVF9WQUxVRTsKLSAgICBtRW5kID0gSU5JVF9WQUxVRTsKLSAgICBtSW50ZXJ2YWwgPSBJTklUX1ZBTFVFOwotICAgIG1BY2N1bXVsYXRlZCA9IElOSVRfVkFMVUU7Ci0gICAgbUV4cG9ydCA9IE5PTkU7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1Db25zdHJhaW50Ojp+Q29uc3RyYWludCgpCi17fQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotYm9vbCBDb25zdHJhaW50Ojppc1VuQ29uc3RyYWludCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtQ291bnQgPT0gSU5JVF9WQUxVRSAmJiBtVGltZWRDb3VudCA9PSBJTklUX1ZBTFVFICYmCi0gICAgICAgICAgICBtVGltZXIgPT0gSU5JVF9WQUxVRSAmJiBtU3RhcnQgPT0gSU5JVF9WQUxVRSAmJgotICAgICAgICAgICAgbUVuZCA9PSBJTklUX1ZBTFVFICYmIG1JbnRlcnZhbCA9PSBJTklUX1ZBTFVFICYmCi0gICAgICAgICAgICBtQWNjdW11bGF0ZWQgPT0gSU5JVF9WQUxVRSAmJiBtRXhwb3J0ID09IE5PTkUgJiYKLSAgICAgICAgICAgIG1TeXN0ZW1MaXN0LmVtcHR5KCkpOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotYm9vbCBDb25zdHJhaW50Ojppc0RhdGVUaW1lQ29uc3RyYWludCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEobVN0YXJ0ID09IElOSVRfVkFMVUUgJiYgbUVuZCA9PSBJTklUX1ZBTFVFKTsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWJvb2wgQ29uc3RyYWludDo6aXNJbnRlcnZhbENvbnN0cmFpbnQoKSBjb25zdAotewotICAgIHJldHVybiAhKG1JbnRlcnZhbCA9PSBJTklUX1ZBTFVFKTsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWJvb2wgQ29uc3RyYWludDo6aXNUaW1lZENvdW50Q29uc3RyYWludCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEobVRpbWVkQ291bnQgPT0gSU5JVF9WQUxVRSk7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1ib29sIENvbnN0cmFpbnQ6OmlzVmFsaWQobG9uZyB0aW1lKSBjb25zdAotewotICAgIGlmIChpc1VuQ29uc3RyYWludCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKGlzRGF0ZVRpbWVDb25zdHJhaW50KCkpCi0gICAgewotICAgICAgICBpZiAodGltZSA8IG1TdGFydCB8fCB0aW1lID4gbUVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1JbnRlcnZhbCA9PSAwIHx8IG1Db3VudCA9PSAwIHx8Ci0gICAgICAgIG1UaW1lZENvdW50ID09IDAgfHwgbUFjY3VtdWxhdGVkID09IDApCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi12b2lkIENvbnN0cmFpbnQ6OnNldFN0YXJ0VGltZShsb25nIHRpbWUpCi17Ci0gICAgbVN0YXJ0ID0gdGltZTsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWxvbmcgQ29uc3RyYWludDo6Z2V0U3RhcnRUaW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN0YXJ0OwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotdm9pZCBDb25zdHJhaW50OjpzZXRFbmRUaW1lKGxvbmcgdGltZSkKLXsKLSAgICBtRW5kID0gdGltZTsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWxvbmcgQ29uc3RyYWludDo6Z2V0RW5kVGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1FbmQ7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi12b2lkIENvbnN0cmFpbnQ6OnNldEFjY3VtdWxhdGVkKGxvbmcgdGltZSkKLXsKLSAgICBtQWNjdW11bGF0ZWQgPSB0aW1lOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotbG9uZyBDb25zdHJhaW50OjpnZXRBY2N1bXVsYXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1BY2N1bXVsYXRlZDsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLXZvaWQgQ29uc3RyYWludDo6c2V0Q291bnQoaW50IGNvdW50KQotewotICAgIG1Db3VudCA9IGNvdW50OwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotaW50IENvbnN0cmFpbnQ6OmdldENvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvdW50OwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotdm9pZCBDb25zdHJhaW50OjpzZXRUaW1lcihpbnQgdGltZXIpCi17Ci0gICAgbVRpbWVyID0gdGltZXI7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1pbnQgQ29uc3RyYWludDo6Z2V0VGltZXIoKSBjb25zdAotewotICAgIHJldHVybiBtVGltZXI7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi12b2lkIENvbnN0cmFpbnQ6OnNldFRpbWVkQ291bnQoaW50IHRpbWVkQ291bnQpCi17Ci0gICAgbVRpbWVkQ291bnQgPSB0aW1lZENvdW50OwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotaW50IENvbnN0cmFpbnQ6OmdldFRpbWVkQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBtVGltZWRDb3VudDsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLXZvaWQgQ29uc3RyYWludDo6c2V0SW50ZXJ2YWwoaW50IGludGVydmFsKQotewotICAgIG1JbnRlcnZhbCA9IGludGVydmFsOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotaW50IENvbnN0cmFpbnQ6OmdldEludGVydmFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUludGVydmFsOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotdm9pZCBDb25zdHJhaW50OjpzZXRFeHBvcnRNb2RlKE1PREUgbW9kZSkKLXsKLSAgICBtRXhwb3J0ID0gbW9kZTsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLUNvbnN0cmFpbnQ6Ok1PREUgQ29uc3RyYWludDo6Z2V0RXhwb3J0TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1FeHBvcnQ7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1ib29sIENvbnN0cmFpbnQ6OmNvbnN1bWUoKQotewotICAgIGlmIChpc1VuQ29uc3RyYWludCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1Db3VudCA+IDApCi0gICAgewotICAgICAgICBtQ291bnQtLTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1BY2N1bXVsYXRlZCA+IDApCi0gICAgewotICAgICAgICBtQWNjdW11bGF0ZWQtLTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1UaW1lZENvdW50ID4gMCkKLSAgICB7Ci0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9PcGVyYXRpb25QZXJtaXNzaW9uLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvT3BlcmF0aW9uUGVybWlzc2lvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNzVmYjEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9PcGVyYXRpb25QZXJtaXNzaW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaW5jbHVkZSA8cmlnaHRzL09wZXJhdGlvblBlcm1pc3Npb24uaD4KLSNpbmNsdWRlIDxyaWdodHMvQ29uc3RyYWludC5oPgotCi0vKiogc2VlIE9wZXJhdGlvblBlcm1pc3Npb24uaCAqLwotT3BlcmF0aW9uUGVybWlzc2lvbjo6T3BlcmF0aW9uUGVybWlzc2lvbigpIDogbUNvbnN0cmFpbnQoTlVMTCkKLXsKLQotfQotCi0vKiogc2VlIE9wZXJhdGlvblBlcm1pc3Npb24uaCAqLwotT3BlcmF0aW9uUGVybWlzc2lvbjo6T3BlcmF0aW9uUGVybWlzc2lvbihPUEVSQVRJT04gdHlwZSwgQ29uc3RyYWludCAqY3N0KSA6IG1UeXBlKHR5cGUpLCBtQ29uc3RyYWludChjc3QpCi17Ci0KLX0KLQotLyoqIHNlZSBPcGVyYXRpb25QZXJtaXNzaW9uLmggKi8KLU9wZXJhdGlvblBlcm1pc3Npb246On5PcGVyYXRpb25QZXJtaXNzaW9uKCkKLXsKLSAgICBkZWxldGUgbUNvbnN0cmFpbnQ7Ci19Ci0KLS8qKiBzZWUgT3BlcmF0aW9uUGVybWlzc2lvbi5oICovCi12b2lkIE9wZXJhdGlvblBlcm1pc3Npb246OnNldFR5cGUoT1BFUkFUSU9OIHR5cGUpCi17Ci0gICAgbVR5cGUgPSB0eXBlOwotfQotCi0vKiogc2VlIE9wZXJhdGlvblBlcm1pc3Npb24uaCAqLwotT3BlcmF0aW9uUGVybWlzc2lvbjo6T1BFUkFUSU9OIE9wZXJhdGlvblBlcm1pc3Npb246OmdldFR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBtVHlwZTsKLX0KLQotLyoqIHNlZSBPcGVyYXRpb25QZXJtaXNzaW9uLmggKi8KLXZvaWQgT3BlcmF0aW9uUGVybWlzc2lvbjo6YWRkQ29uc3RyYWludChDb25zdHJhaW50KiBjb25zdHJhaW50KQotewotICAgIG1Db25zdHJhaW50ID0gY29uc3RyYWludDsKLX0KLQotLyoqIHNlZSBPcGVyYXRpb25QZXJtaXNzaW9uLmggKi8KLUNvbnN0cmFpbnQqIE9wZXJhdGlvblBlcm1pc3Npb246OmdldENvbnN0cmFpbnQoKSBjb25zdAotewotICAgIHJldHVybiBtQ29uc3RyYWludDsKLX0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvUmlnaHQuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9SaWdodC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZTljNzAuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9SaWdodC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpbmNsdWRlIDxyaWdodHMvUmlnaHQuaD4KLSNpbmNsdWRlIDxyaWdodHMvT3BlcmF0aW9uUGVybWlzc2lvbi5oPgotI2luY2x1ZGUgPHJpZ2h0cy9Db25zdHJhaW50Lmg+Ci0KLS8qKiBzZWUgUmlnaHQuaCAqLwotUmlnaHQ6OlJpZ2h0KCkKLXsKLQotfQotCi0vKiogc2VlIFJpZ2h0LmggKi8KLVJpZ2h0Ojp+UmlnaHQoKQotewotICAgICB2ZWN0b3I8T3BlcmF0aW9uUGVybWlzc2lvbio+OjppdGVyYXRvciBpdDsKLQotICAgICBmb3IgKGl0ID0gbU9wTGlzdC5iZWdpbigpOyBpdCAhPSBtT3BMaXN0LmVuZCgpOyBpdCsrKQotICAgICB7Ci0gICAgICAgIGRlbGV0ZSgqaXQpOwotICAgICB9Ci0KLSAgICAgbU9wTGlzdC5jbGVhcigpOwotfQotCi0vKiogc2VlIFJpZ2h0LmggKi8KLXZvaWQgUmlnaHQ6OmFkZEFzc2V0SUQoY29uc3Qgc3RyaW5nJiBpZCkKLXsKLSAgICBtQXNzZXROYW1lTGlzdC5wdXNoX2JhY2soaWQpOwotfQotCi0vKiogc2VlIFJpZ2h0LmggKi8KLXZvaWQgUmlnaHQ6OmFkZE9wZXJhdGlvblBlcm1pc3Npb24oT3BlcmF0aW9uUGVybWlzc2lvbiogb3ApCi17Ci0gICAgbU9wTGlzdC5wdXNoX2JhY2sob3ApOwotfQotCi0vKiogc2VlIFJpZ2h0LmggKi8KLWJvb2wgUmlnaHQ6OmNoZWNrUGVybWlzc2lvbihPcGVyYXRpb25QZXJtaXNzaW9uOjpPUEVSQVRJT04gdHlwZSkKLXsKLSAgICBmb3IgKHZlY3RvcjxPcGVyYXRpb25QZXJtaXNzaW9uKj46Oml0ZXJhdG9yIGl0ID0gbU9wTGlzdC5iZWdpbigpOwotICAgICAgICAgICAgIGl0ICE9IG1PcExpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBpZiAoKCppdCktPmdldFR5cGUoKSA9PSB0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLyoqIHNlZSBSaWdodC5oICovCi1Db25zdHJhaW50KiBSaWdodDo6Z2V0Q29uc3RyYWludChPcGVyYXRpb25QZXJtaXNzaW9uOjpPUEVSQVRJT04gdHlwZSkKLXsKLSAgICBmb3IgKHZlY3RvcjxPcGVyYXRpb25QZXJtaXNzaW9uKj46Oml0ZXJhdG9yIGl0ID0gbU9wTGlzdC5iZWdpbigpOwotICAgICAgICAgICAgIGl0ICE9IG1PcExpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBpZiAoKCppdCktPmdldFR5cGUoKSA9PSB0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKCppdCktPmdldENvbnN0cmFpbnQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Sby5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL1JvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE0MWUxNy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL1JvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPHJpZ2h0cy9Sby5oPgotI2luY2x1ZGUgPHJpZ2h0cy9Db25zdHJhaW50Lmg+Ci0jaW5jbHVkZSA8cmlnaHRzL09wZXJhdGlvblBlcm1pc3Npb24uaD4KLSNpbmNsdWRlIDx1dGlsL3htbC9Eb21FeHBhdEFnZW50Lmg+Ci0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL0RPTVN0cmluZy5oPgotI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgotCi0jaW5jbHVkZSA8dWFzc2VydC5oPgotI2luY2x1ZGUgPHRpbWUuaD4KLSNpbmNsdWRlIDxvZnN0cmVhbS5oPgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLWNvbnN0IGNoYXIgKlNUUl9ST19SSUdIVFMgPSAiby1leDpyaWdodHMiOwotY29uc3QgY2hhciAqU1RSX1JPX0NPTlRFWFQgPSAiby1leDpjb250ZXh0IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19BR1JFRU1FTlQgPSAiby1leDphZ3JlZW1lbnQiOwotY29uc3QgY2hhciAqU1RSX1JPX0FTU0VUID0gIm8tZXg6YXNzZXQiOwotY29uc3QgY2hhciAqU1RSX1JPX0lOSEVSSVQgPSAiby1leDppbmhlcml0IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19ESUdFU1QgPSAiby1leDpkaWdlc3QiOwotY29uc3QgY2hhciAqU1RSX1JPX0tFWUlORk8gPSAiZHM6S2V5SW5mbyI7Ci1jb25zdCBjaGFyICpTVFJfUk9fUEVSTUlTU0lPTiA9ICJvLWV4OnBlcm1pc3Npb24iOwotY29uc3QgY2hhciAqU1RSX1JPX0FTU0VUX0lEID0gIm8tZXg6aWQiOwotY29uc3QgY2hhciAqU1RSX1JPX0FTU0VUX0lEUkVGID0gIm8tZXg6aWRyZWYiOwotY29uc3QgY2hhciAqU1RSX1JPX0NPTlRFWFRfSUQgPSAiby1kZDp1aWQiOwotY29uc3QgY2hhciAqU1RSX1JPX0NPTlRFWFRfVkVSU0lPTiA9ICJvLWRkOnZlcnNpb24iOwotY29uc3QgY2hhciAqU1RSX1JPX0RJR0VTVF9WQUxVRSA9ICJkczpEaWdlc3RWYWx1ZSI7Ci1jb25zdCBjaGFyICpTVFJfUk9fQ0lQSEVSX1ZBTFVFID0gInhlbmM6Q2lwaGVyVmFsdWUiOwotY29uc3QgY2hhciAqU1RSX1JPX1JFVFJJRVZBTF9NRVRIT0QgPSAiZHM6UmV0cmlldmFsTWV0aG9kIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19QTEFZID0gIm8tZGQ6cGxheSI7Ci1jb25zdCBjaGFyICpTVFJfUk9fRElTUExBWSA9ICJvLWRkOmRpc3BsYXkiOwotY29uc3QgY2hhciAqU1RSX1JPX0VYRUNVVEUgPSAiby1kZDpleGVjdXRlIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19QUklOVCA9ICJvLWRkOnByaW50IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19FWFBPUlQgPSAiby1kZDpleHBvcnQiOwotY29uc3QgY2hhciAqU1RSX1JPX0NPTlNUUkFJTlQgPSAiby1leDpjb25zdHJhaW50IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19DT1VOVCA9ICJvLWRkOmNvdW50IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19USU1FRENPVU5UID0gIm8tZGQ6dGltZWQtY291bnQiOwotY29uc3QgY2hhciAqU1RSX1JPX1RJTUVSID0gIm9tYS1kZDp0aW1lciI7Ci1jb25zdCBjaGFyICpTVFJfUk9fSU5URVJWQUwgPSAiby1kZDppbnRlcnZhbCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fREFURVRJTUUgPSAiby1kZDpkYXRldGltZSI7Ci1jb25zdCBjaGFyICpTVFJfUk9fU1RBUlQgPSAiby1kZDpzdGFydCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fRU5EID0gIm8tZGQ6ZW5kIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19BQ0NVTVVMQVRFRCA9ICJvLWRkOmFjY3VtdWxhdGVkIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19JTkRJVklEVUFMID0gIm8tZGQ6aW5kaXZpZHVhbCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fU1lTVEVNID0gIm8tZGQ6c3lzdGVtIjsKLQotLyoqIHNlZSBSby5oICovCi1Sbzo6Um8oKQotewotICAgIG1Eb2MgPSBuZXcgWE1MRG9jdW1lbnRJbXBsKCk7Ci0gICAgbVByb3BlclJpZ2h0ID0gTlVMTDsKLX0KLQotLyoqIHNlZSBSby5oICovCi1Sbzo6flJvKCkKLXsKLSAgICAgZm9yICh2ZWN0b3I8UmlnaHQqPjo6aXRlcmF0b3IgaXRyID0gbVJpZ2h0TGlzdC5iZWdpbigpOyBpdHIgIT0gbVJpZ2h0TGlzdC5lbmQoKTsgaXRyKyspCi0gICAgIHsKLSAgICAgICAgZGVsZXRlKCppdHIpOwotICAgICB9Ci0KLSAgICAgbVJpZ2h0TGlzdC5jbGVhcigpOwotCi0gICAgIGZvciAodmVjdG9yPEFzc2V0Kj46Oml0ZXJhdG9yIGl0YSA9IG1Bc3NldExpc3QuYmVnaW4oKTsgaXRhICE9IG1Bc3NldExpc3QuZW5kKCk7IGl0YSsrKQotICAgICB7Ci0gICAgICAgIGRlbGV0ZSgqaXRhKTsKLSAgICAgfQotCi0gICAgIG1Bc3NldExpc3QuY2xlYXIoKTsKLQotICAgICBtUHJvcGVyUmlnaHQgPSBOVUxMOwotICAgICBkZWxldGUgbURvYzsKLQotfQotCi0vKiogc2VlIFJvLmggKi8KLXZvaWQgUm86OnNldFJvSUQoc3RyaW5nJiBpZCkKLXsKLSAgICBtUm9JRCA9IGlkOwotfQotCi0vKiogc2VlIFJvLmggKi8KLWNvbnN0IHN0cmluZyYgUm86OmdldFJvSUQoKSBjb25zdAotewotICAgIHJldHVybiBtUm9JRDsKLX0KLQotLyoqIHNlZSBSby5oICovCi12b2lkIFJvOjpzZXRSb1ZlcnNpb24oc3RyaW5nJiB2ZXJzaW9uKQotewotICAgIG1Sb1ZlcnNpb24gPSB2ZXJzaW9uOwotfQotCi0vKiogc2VlIFJvLmggKi8KLXZvaWQgUm86OmFkZEFzc2V0KEFzc2V0KiBhc3NldCkKLXsKLSAgICBtQXNzZXRMaXN0LnB1c2hfYmFjayhhc3NldCk7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotdm9pZCBSbzo6YWRkUmlnaHQoUmlnaHQqIHJpZ2h0KQotewotICAgIG1SaWdodExpc3QucHVzaF9iYWNrKHJpZ2h0KTsKLX0KLQotLyoqIHNlZSBSby5oICovCi1ib29sIFJvOjpzYXZlKCkKLXsKLSAgICAgTE9HSSgiPT09PT09PT09PT09PT1SbyBzYXZlLj09PT09PT09PT09PT09PT09Iik7Ci0KLSAgICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotUm86OkVSUkNPREUgUm86OnBhcnNlKGlzdHJpbmdzdHJlYW0gKnJvU3RyZWFtKQotewotICAgIERvbUV4cGF0QWdlbnQgeG1sQWdlbnQobURvYyk7Ci0KLSAgICBpZiAoTlVMTCA9PSByb1N0cmVhbSkKLSAgICB7Ci0gICAgICAgIExPR0koIk5VTEwgc3RyZWFtIik7Ci0gICAgICAgIHJldHVybiBST19OVUxMX1NUUkVBTTsKLSAgICB9Ci0KLSAgICBpZiAoeG1sQWdlbnQuZ2VuZXJhdGVEb2N1bWVudEZyb21YTUwocm9TdHJlYW0pID09IGZhbHNlKQotICAgIHsKLSAgICAgICAgTE9HSSgiZ2VuZXJhdGUgeG1sIGRvYyBlcnJvciIpOwotICAgICAgICByZXR1cm4gUk9fRVJSX0JBRF9YTUw7Ci0gICAgfQotCi0gICAgaGFuZGxlRG9jdW1lbnQobURvYyk7Ci0KLSAgICByZXR1cm4gUk9fT0s7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotYm9vbCBSbzo6aGFuZGxlRG9jdW1lbnQoY29uc3QgWE1MRG9jdW1lbnRJbXBsKiBkb2MpCi17Ci0gICAgYXNzZXJ0KGRvYyAhPSBOVUxMKTsKLQotICAgIE5vZGVJbXBsKiBub2RlID0gZG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKLQotICAgIHJldHVybiBoYW5kbGVSaWdodHMobm9kZSk7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotYm9vbCBSbzo6aGFuZGxlUmlnaHRzKGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKQotewotICAgIGFzc2VydChjdXJOb2RlICE9IE5VTEwpOwotCi0gICAgTm9kZUltcGwgKm5vZGUgPSBjdXJOb2RlLT5nZXRGaXJzdENoaWxkKCk7Ci0KLSAgICB3aGlsZSAoTlVMTCAhPSBub2RlKQotICAgIHsKLSAgICAgICAgY29uc3QgRE9NU3RyaW5nKiBuYW1lOwotCi0gICAgICAgIG5hbWUgPSBzdGF0aWNfY2FzdDxjb25zdCBYTUxFbGVtZW50SW1wbCo+KG5vZGUpLT5nZXRUYWdOYW1lKCk7Ci0KLSAgICAgICAgaWYgKG5hbWUtPmNvbXBhcmUoU1RSX1JPX0NPTlRFWFQpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIExPR0koInJpZ2h0cyBjb250ZXh0Iik7Ci0gICAgICAgICAgICBjb25zdCBET01TdHJpbmcgKnRva2VuID0gTlVMTDsKLSAgICAgICAgICAgIHRva2VuID0gc3RhdGljX2Nhc3Q8Y29uc3QgWE1MRWxlbWVudEltcGwqPihub2RlKS0+Z2V0U29sb1RleHQoU1RSX1JPX0NPTlRFWFRfSUQpOwotCi0gICAgICAgICAgICBpZiAodG9rZW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTE9HSSgqdG9rZW4pOwotICAgICAgICAgICAgICAgIG1Sb0lEID0gKnRva2VuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0b2tlbiA9IHN0YXRpY19jYXN0PGNvbnN0IFhNTEVsZW1lbnRJbXBsKj4obm9kZSktPmdldFNvbG9UZXh0KFNUUl9ST19DT05URVhUX1ZFUlNJT04pOwotICAgICAgICAgICAgaWYgKHRva2VuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgICAgICAgICBtUm9WZXJzaW9uID0gKnRva2VuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5hbWUtPmNvbXBhcmUoU1RSX1JPX0FHUkVFTUVOVCkgPT0gMCkKLSAgICAgICAgewotCi0gICAgICAgICAgICBMT0dJKCJyaWdodHMgYWdyZWVtZW50Iik7Ci0gICAgICAgICAgICBpZiAoaGFuZGxlQWdyZWVtZW50KG5vZGUpID09IGZhbHNlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIG5vZGUgPSBub2RlLT5nZXROZXh0U2libGluZygpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLyoqIHNlZSBSby5oICovCi1ib29sIFJvOjpoYW5kbGVBZ3JlZW1lbnQoY29uc3QgTm9kZUltcGwgKmN1ck5vZGUpCi17Ci0gICAgYXNzZXJ0KGN1ck5vZGUgIT0gTlVMTCk7Ci0KLSAgICBOb2RlSW1wbCAqbm9kZSA9IGN1ck5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKLQotICAgIHdoaWxlIChOVUxMICE9IG5vZGUpCi0gICAgewotICAgICAgICBjb25zdCBET01TdHJpbmcqIG5hbWU7Ci0KLSAgICAgICAgbmFtZSA9IHN0YXRpY19jYXN0PGNvbnN0IFhNTEVsZW1lbnRJbXBsKj4obm9kZSktPmdldFRhZ05hbWUoKTsKLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fQVNTRVQpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyBhYm91dCBhc3NldC4KLSAgICAgICAgICAgIExPR0koImFzc2V0Iik7Ci0KLSAgICAgICAgICAgIGlmIChoYW5kbGVBc3NldChub2RlKSA9PSBmYWxzZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fUEVSTUlTU0lPTikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nIGFib3V0IHBlcm1pc3Npb24uCi0gICAgICAgICAgICBMT0dJKCJwZXJtaXNzaW9uIik7Ci0KLSAgICAgICAgICAgIGlmIChoYW5kbGVQZXJtaXNzaW9uKG5vZGUpID09IGZhbHNlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIG5vZGUgPSBub2RlLT5nZXROZXh0U2libGluZygpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vKiogc2VlIFJvLmggKi8KLWJvb2wgUm86OmhhbmRsZUFzc2V0KGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKQotewotICAgIGFzc2VydChjdXJOb2RlICE9IE5VTEwpOwotCi0gICAgQXNzZXQgKmFzc2V0ID0gbmV3IEFzc2V0KCk7Ci0KLSAgICBjb25zdCBYTUxFbGVtZW50SW1wbCAqY3VyRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFhNTEVsZW1lbnRJbXBsKj4oY3VyTm9kZSk7Ci0KLSAgICBpZiAoY3VyRWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQotICAgIHsKLSAgICAgICAgRE9NU3RyaW5nIGFzc2V0SUQoU1RSX1JPX0FTU0VUX0lEKTsKLSAgICAgICAgTE9HSSgiYXNzZXQgaWQ6Iik7Ci0KLSAgICAgICAgY29uc3QgRE9NU3RyaW5nICppZCA9IGN1ckVsZW1lbnQtPmdldEF0dHJpYnV0ZSgmYXNzZXRJRCk7Ci0KLSAgICAgICAgaWYgKGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBhc3NldC0+c2V0SUQoKmlkKTsKLSAgICAgICAgfQotCi0gICAgfQotCi0gICAgTm9kZUltcGwqIG5vZGUgPSBjdXJOb2RlLT5nZXRGaXJzdENoaWxkKCk7Ci0KLSAgICBjb25zdCBET01TdHJpbmcgKm5hbWUgPSBOVUxMOwotICAgIGNvbnN0IHN0cmluZyAqdG9rZW4gPSBOVUxMOwotCi0gICAgd2hpbGUgKE5VTEwgIT0gbm9kZSkKLSAgICB7Ci0gICAgICAgIGN1ckVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBYTUxFbGVtZW50SW1wbCo+KG5vZGUpOwotICAgICAgICBuYW1lID0gY3VyRWxlbWVudC0+Z2V0VGFnTmFtZSgpOwotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19DT05URVhUKSA9PSAwIHx8Ci0gICAgICAgICAgICBuYW1lLT5jb21wYXJlKFNUUl9ST19JTkhFUklUKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0dJKCJhc3NldCBjb250ZXh0Iik7Ci0KLSAgICAgICAgICAgIHRva2VuID0gY3VyRWxlbWVudC0+Z2V0U29sb1RleHQoU1RSX1JPX0NPTlRFWFRfSUQpOwotICAgICAgICAgICAgaWYgKHRva2VuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExPR0koKnRva2VuKTsKLQotICAgICAgICAgICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19DT05URVhUKSA9PSAwKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXQtPnNldENvbnRlbnRJRCgqdG9rZW4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvL3BhcmVudCBJRC4KLSAgICAgICAgICAgICAgICAgICAgYXNzZXQtPnNldFBhcmVudENvbnRlbnRJRCgqdG9rZW4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19ESUdFU1QpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIExPR0koImFzc2V0IGRpZ2VzdCIpOwotICAgICAgICAgICAgLy9kaWdlc3QgbWV0aG9kIGlzIGZpeGVkIHZhbHVlOgotICAgICAgICAgICAgLy9odHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRpc2lnI3NoYTEKLSAgICAgICAgICAgIHRva2VuID0gY3VyRWxlbWVudC0+Z2V0U29sb1RleHQoU1RSX1JPX0RJR0VTVF9WQUxVRSk7Ci0gICAgICAgICAgICBpZiAodG9rZW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTE9HSSgqdG9rZW4pOwotICAgICAgICAgICAgICAgIGFzc2V0LT5zZXREQ0ZEaWdlc3QoKnRva2VuKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19LRVlJTkZPKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0dJKCJhc3NldCBrZXlpbmZvIik7Ci0KLSAgICAgICAgICAgIHRva2VuID0gY3VyRWxlbWVudC0+Z2V0U29sb1RleHQoU1RSX1JPX0NJUEhFUl9WQUxVRSk7Ci0gICAgICAgICAgICBpZiAodG9rZW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTE9HSSgqdG9rZW4pOwotICAgICAgICAgICAgICAgIGFzc2V0LT5zZXRFbmNyeXB0ZWRLZXkoKnRva2VuKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29uc3QgWE1MRWxlbWVudEltcGwgKm5vZGUgPSBjdXJFbGVtZW50LT5nZXRTb2xvRWxlbWVudChTVFJfUk9fUkVUUklFVkFMX01FVEhPRCk7Ci0KLSAgICAgICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBET01TdHJpbmcgdXJpKCJVUkkiKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBub2RlLT5nZXRBdHRyaWJ1dGUoJnVyaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgTE9HSSgqdG9rZW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXQtPnNldEtleVJldHJpZXZhbE1ldGhvZCgqdG9rZW4pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbm9kZSA9IG5vZGUtPmdldE5leHRTaWJsaW5nKCk7Ci0gICAgfQotCi0gICAgdGhpcy0+YWRkQXNzZXQoYXNzZXQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vKiogc2VlIFJvLmggKi8KLWJvb2wgUm86OmhhbmRsZVBlcm1pc3Npb24oY29uc3QgTm9kZUltcGwgKmN1ck5vZGUpCi17Ci0gICAgYXNzZXJ0KGN1ck5vZGUgIT0gTlVMTCk7Ci0KLSAgICBSaWdodCAqcmlnaHQgPSBuZXcgUmlnaHQoKTsKLQotICAgIGNvbnN0IFhNTEVsZW1lbnRJbXBsICpjdXJFbGVtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgWE1MRWxlbWVudEltcGwqPihjdXJOb2RlKTsKLQotICAgIE5vZGVJbXBsKiBub2RlID0gY3VyTm9kZS0+Z2V0Rmlyc3RDaGlsZCgpOwotCi0gICAgd2hpbGUgKE5VTEwgIT0gbm9kZSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IERPTVN0cmluZyAqbmFtZSA9IE5VTEw7Ci0gICAgICAgIE5vZGVMaXN0SW1wbCAqbm9kZUxpc3QgPSBOVUxMOwotCi0gICAgICAgIGNvbnN0IHN0cmluZyAqdG9rZW4gPSBOVUxMOwotICAgICAgICBjdXJFbGVtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgWE1MRWxlbWVudEltcGwqPihub2RlKTsKLSAgICAgICAgbmFtZSA9IGN1ckVsZW1lbnQtPmdldFRhZ05hbWUoKTsKLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fQVNTRVQpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIExPR0koInBlcm1pc3Npb24gYXNzZXQiKTsKLSAgICAgICAgICAgIGlmIChjdXJFbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRE9NU3RyaW5nIGFzc2V0SUQoU1RSX1JPX0FTU0VUX0lEUkVGKTsKLSAgICAgICAgICAgICAgICBjb25zdCBET01TdHJpbmcgKmlkID0gY3VyRWxlbWVudC0+Z2V0QXR0cmlidXRlKCZhc3NldElEKTsKLSAgICAgICAgICAgICAgICBpZiAoaWQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByaWdodC0+YWRkQXNzZXRJRCgqaWQpOwotICAgICAgICAgICAgICAgICAgICBMT0dJKCppZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgT3BlcmF0aW9uUGVybWlzc2lvbjo6T1BFUkFUSU9OIHR5cGUgPSBPcGVyYXRpb25QZXJtaXNzaW9uOjpOT05FOwotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19QTEFZKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0dJKCJwZXJtaXNzaW9uIHBsYXkgY29uc3RyYWludCIpOwotICAgICAgICAgICAgdHlwZSA9IE9wZXJhdGlvblBlcm1pc3Npb246OlBMQVk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fRElTUExBWSkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HSSgicGVybWlzc2lvbiBkaXNwbGF5IGNvc3RyYWludCIpOwotICAgICAgICAgICAgdHlwZSA9IE9wZXJhdGlvblBlcm1pc3Npb246OkRJU1BMQVk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fRVhFQ1VURSkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HSSgicGVybWlzc2lvbiBleGVjdXRlIGNvbnN0cmFpbnQiKTsKLSAgICAgICAgICAgIHR5cGUgPSBPcGVyYXRpb25QZXJtaXNzaW9uOjpFWEVDVVRFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5hbWUtPmNvbXBhcmUoU1RSX1JPX0VYUE9SVCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HSSgicGVybWlzc2lvbiBleHBvcnQgY29uc3RyYWludCIpOwotICAgICAgICAgICAgdHlwZSA9IE9wZXJhdGlvblBlcm1pc3Npb246OkVYUE9SVDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19QUklOVCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HSSgicGVybWlzc2lvbiBwcmludCBjb25zdHJhaW50Iik7Ci0gICAgICAgICAgICB0eXBlID0gT3BlcmF0aW9uUGVybWlzc2lvbjo6UFJJTlQ7Ci0gICAgICAgIH0KLQotICAgICAgICBDb25zdHJhaW50ICpjc3QgPSBOVUxMOwotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19DT05TVFJBSU5UKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0dJKCJwZXJtaXNzaW9uIGNvbW1vbiBjb25zdHJhaW50Iik7Ci0gICAgICAgICAgICB0eXBlID0gT3BlcmF0aW9uUGVybWlzc2lvbjo6Q09NTU9OOwotICAgICAgICB9Ci0KLSAgICAgICAgY3N0ID0gZ2V0Q29uc3RyYWludChjdXJFbGVtZW50KTsKLSAgICAgICAgaWYgKGNzdCkKLSAgICAgICAgewotICAgICAgICAgICAgT3BlcmF0aW9uUGVybWlzc2lvbiAqb3AgPSBuZXcgT3BlcmF0aW9uUGVybWlzc2lvbih0eXBlLCBjc3QpOwotICAgICAgICAgICAgcmlnaHQtPmFkZE9wZXJhdGlvblBlcm1pc3Npb24ob3ApOwotICAgICAgICB9Ci0KLSAgICAgICAgbm9kZSA9IG5vZGUtPmdldE5leHRTaWJsaW5nKCk7Ci0gICAgfQotCi0gICAgdGhpcy0+YWRkUmlnaHQocmlnaHQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vKiogc2VlIFJvLmggKi8KLWxvbmcgUm86OmNvbnZlcnRJU084NjAxRGF0ZVRpbWVUb0xvbmcoY29uc3QgY2hhciogdHMpCi17Ci0gICAgaWYgKE5VTEwgPT0gdHMpCi0gICAgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgc3RydWN0IHRtIHRpbWU7Ci0gICAgbWVtc2V0KCZ0aW1lLCAwLCBzaXplb2Yoc3RydWN0IHRtKSk7Ci0KLSAgICBzdHJwdGltZSh0cywgIiVGVCVUJXoiLCAmdGltZSk7Ci0KLS8vbmVlZCB0aW1lem9uZSBzdXBwb3J0OiAgcmV0dXJuIG1rdGltZSgmdGltZSkgLSB0aW1lem9uZTsKLS8vSXQgc2VlbXMgYW5kcm9pZC1zb29uZXIgZG9lc24ndCBzdXBwb3J0IHRpbWV6b25lIGZ1bmN0aW9uLgotLy9saW5lIGJlbG93IGlzIGp1c3QgZm9yIGJ1aWxkaW5nLCB2YWx1ZSB3b3VsZCBiZSB3cm9uZyBpZiBubyB0aW1lem9uZSBtaW51cy4KLSAgICByZXR1cm4gbWt0aW1lKCZ0aW1lKTsKLX0KLQotLyoqIHNlZSBSby5oICovCi1sb25nIFJvOjpjb252ZXJ0SVNPODYwMVBlcmlvZFRvTG9uZyhjb25zdCBjaGFyKiB0cykKLXsKLSAgICBpZiAoTlVMTCA9PSB0cykKLSAgICB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBpbnQgZGF0ZSwgaG91ciwgbWluLCBzZWM7Ci0gICAgc3NjYW5mKHRzLCAiUCVkRFQlZEglZE0lZFMiLCAmZGF0ZSwgJmhvdXIsICZtaW4sICZzZWMpOwotICAgIExPR0koIiVkICVkICVkICVkIiwgZGF0ZSwgaG91ciwgbWluLCBzZWMpOwotICAgIHJldHVybiAoZGF0ZSoyNCo2MCo2MCArIGhvdXIqNjAqNjAgKyBtaW4qNjAgKyBzZWMpOwotfQotCi0vKiogc2VlIFJvLmggKi8KLUNvbnN0cmFpbnQqIFJvOjpnZXRDb25zdHJhaW50KGNvbnN0IE5vZGVJbXBsKiBjdXJOb2RlKQotewotICAgIGFzc2VydChjdXJOb2RlICE9IE5VTEwpOwotCi0gICAgQ29uc3RyYWludCAqY29uc3RyYWludCA9IG5ldyBDb25zdHJhaW50KCk7Ci0KLSAgICBjb25zdCBYTUxFbGVtZW50SW1wbCAqY3VyRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFhNTEVsZW1lbnRJbXBsKj4oY3VyTm9kZSk7Ci0KLSAgICBjb25zdCBzdHJpbmcgKm5hbWUgPSBOVUxMOwotICAgIGNvbnN0IHN0cmluZyAqdG9rZW4gPSBOVUxMOwotCi0gICAgaWYgKCh0b2tlbiA9IGN1ckVsZW1lbnQtPmdldFNvbG9UZXh0KFNUUl9ST19DT1VOVCkpKQotICAgIHsKLSAgICAgICAgTE9HSSgqdG9rZW4pOwotICAgICAgICBjb25zdHJhaW50LT5zZXRDb3VudChhdG9pKHRva2VuLT5jX3N0cigpKSk7Ci0gICAgfQotCi0gICAgaWYgKCh0b2tlbiA9IGN1ckVsZW1lbnQtPmdldFNvbG9UZXh0KFNUUl9ST19TVEFSVCkpKQotICAgIHsKLSAgICAgICAgTE9HSSgqdG9rZW4pOwotICAgICAgICAvL3N0YXJ0IFRpbWUKLSAgICAgICAgY29uc3RyYWludC0+c2V0U3RhcnRUaW1lKGNvbnZlcnRJU084NjAxRGF0ZVRpbWVUb0xvbmcodG9rZW4tPmNfc3RyKCkpKTsKLSAgICB9Ci0KLSAgICBpZiAoKHRva2VuID0gY3VyRWxlbWVudC0+Z2V0U29sb1RleHQoU1RSX1JPX0VORCkpKQotICAgIHsKLSAgICAgICAgTE9HSSgqdG9rZW4pOwotICAgICAgICAvL2VuZCBUaW1lCi0gICAgICAgIGNvbnN0cmFpbnQtPnNldEVuZFRpbWUoY29udmVydElTTzg2MDFEYXRlVGltZVRvTG9uZyh0b2tlbi0+Y19zdHIoKSkpOwotICAgIH0KLQotICAgIGlmICgodG9rZW4gPSBjdXJFbGVtZW50LT5nZXRTb2xvVGV4dChTVFJfUk9fSU5URVJWQUwpKSkKLSAgICB7Ci0gICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgY29uc3RyYWludC0+c2V0SW50ZXJ2YWwoYXRvaSh0b2tlbi0+Y19zdHIoKSkpOwotICAgIH0KLQotICAgIGlmICgodG9rZW4gPSBjdXJFbGVtZW50LT5nZXRTb2xvVGV4dChTVFJfUk9fQUNDVU1VTEFURUQpKSkKLSAgICB7Ci0gICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgLy9QZXJpb2QKLSAgICAgICAgY29uc3RyYWludC0+c2V0QWNjdW11bGF0ZWQoY29udmVydElTTzg2MDFQZXJpb2RUb0xvbmcodG9rZW4tPmNfc3RyKCkpKTsKLSAgICB9Ci0KLSAgICBpZiAoKHRva2VuID0gY3VyRWxlbWVudC0+Z2V0U29sb1RleHQoU1RSX1JPX1RJTUVEQ09VTlQpKSkKLSAgICB7Ci0gICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgY29uc3RyYWludC0+c2V0VGltZWRDb3VudChhdG9pKHRva2VuLT5jX3N0cigpKSk7Ci0KLSAgICAgICAgY29uc3QgWE1MRWxlbWVudEltcGwgKm5vZGUgPSBjdXJFbGVtZW50LT5nZXRTb2xvRWxlbWVudChTVFJfUk9fVElNRURDT1VOVCk7Ci0KLSAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRE9NU3RyaW5nIHRpbWVyKFNUUl9ST19USU1FUik7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBub2RlLT5nZXRBdHRyaWJ1dGUoJnRpbWVyKTsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBMT0dJKCp0b2tlbik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQtPnNldFRpbWVyKGF0b2kodG9rZW4tPmNfc3RyKCkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgIH0KLQotICAgIHJldHVybiBjb25zdHJhaW50OwotfQotCi0vKiogc2VlIFJvLmggKi8KLXZvaWQgUm86OmxvYWRSaWdodHMoY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpCi17Ci0gICAgZm9yICh2ZWN0b3I8UmlnaHQqPjo6aXRlcmF0b3IgaXQgPSB0aGlzLT5tUmlnaHRMaXN0LmJlZ2luKCk7Ci0gICAgICAgIGl0ICE9IHRoaXMtPm1SaWdodExpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBpZiAoKCppdCktPm1Bc3NldE5hbWVMaXN0LmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1Db250ZW50UmlnaHRMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh2ZWN0b3I8QXNzZXQqPjo6aXRlcmF0b3IgaXRhID0gdGhpcy0+bUFzc2V0TGlzdC5iZWdpbigpOwotICAgICAgICAgICAgICAgICBpdGEgIT0gdGhpcy0+bUFzc2V0TGlzdC5lbmQoKTsgaXRhKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yICh2ZWN0b3I8c3RyaW5nPjo6aXRlcmF0b3IgaXRzID0gKCppdCktPm1Bc3NldE5hbWVMaXN0LmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgICAgICBpdHMgIT0gKCppdCktPm1Bc3NldE5hbWVMaXN0LmVuZCgpOyBpdHMrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoKml0cykuY29tcGFyZSgoKml0YSktPmdldElEKCkpID09IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50SUQuY29tcGFyZSgoKml0YSktPmdldENvbnRlbnRJRCgpKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPR0koImZpbmQgY29udGVudCByaWdodCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZW50UmlnaHRMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLQotICAgIH0KLQotfQotCi0vKiogc2VlIFJvLmggKi8KLXZvaWQgUm86OmZyZWVSaWdodHMoKQotewotICAgIG1Db250ZW50UmlnaHRMaXN0LmNsZWFyKCk7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotYm9vbCBSbzo6Y2hlY2tQZXJtaXNzaW9uKE9wZXJhdGlvblBlcm1pc3Npb246Ok9QRVJBVElPTiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIGNvbnRlbnRJRCkKLXsKLSAgICBsb2FkUmlnaHRzKGNvbnRlbnRJRCk7Ci0KLSAgICBmb3IgKHZlY3RvcjxSaWdodCo+OjppdGVyYXRvciBpdCA9IG1Db250ZW50UmlnaHRMaXN0LmJlZ2luKCk7IGl0ICE9IG1Db250ZW50UmlnaHRMaXN0LmVuZCgpOyBpdCsrKQotICAgICB7Ci0gICAgICAgIGlmICgoKml0KS0+Y2hlY2tQZXJtaXNzaW9uKHR5cGUpKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmVlUmlnaHRzKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgIH0KLSAgICBmcmVlUmlnaHRzKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vKiogc2VlIFJvLmggKi8KLVJvOjpFUlJDT0RFIFJvOjpjb25zdW1lKE9wZXJhdGlvblBlcm1pc3Npb246Ok9QRVJBVElPTiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgY29udGVudElEKQotewotICAgIGxvYWRSaWdodHMoY29udGVudElEKTsKLQotICAgIC8vY2hlY2sgaW4gbVJpZ2h0TGlzdAotICAgIHZlY3RvcjxSaWdodCo+OjppdGVyYXRvciBpdDsKLSAgICB2ZWN0b3I8UmlnaHQqPiB0bXBMaXN0OwotICAgIHZlY3RvcjxSaWdodCo+IHJldExpc3Q7Ci0gICAgQ29uc3RyYWludCAqY29uc3RyYWludCA9IE5VTEw7Ci0gICAgbG9uZyBlYWxpZXN0RW5kID0gLTE7Ci0gICAgYm9vbCBoYXNDb21tb25Db25zdHJhaW50ID0gZmFsc2U7Ci0gICAgYm9vbCBoYXNVbmNvbnN0cmFpbnQgPSBmYWxzZTsKLSAgICBib29sIGhhc0RhdGVUaW1lQ29uc3RyYWludCA9IGZhbHNlOwotICAgIGJvb2wgaGFzVGltZWRDb3VudENvbnN0cmFpbnQgPSBmYWxzZTsKLSAgICBib29sIGhhc0ludGVydmFsQ29uc3RyYWludCA9IGZhbHNlOwotCi0KLSAgICAvL2FwcGx5IHRoZSBSTyBydWxlLCBpZiBkbyBub3Qgc2F0aXNmeSB0aGUgY29uc3RyYWludCwgLgotICAgIC8vcHJvcGVyIHJpZ2h0IHNlbGVjdCBwcm9jZXNzCi0KLSAgICBmb3IgKGl0ID0gbUNvbnRlbnRSaWdodExpc3QuYmVnaW4oKTsgaXQgIT0gbUNvbnRlbnRSaWdodExpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBpZiAoKCppdCktPmNoZWNrUGVybWlzc2lvbih0eXBlKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RyYWludCA9ICgqaXQpLT5nZXRDb25zdHJhaW50KE9wZXJhdGlvblBlcm1pc3Npb246OkNPTU1PTik7Ci0gICAgICAgICAgICBpZiAoY29uc3RyYWludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQtPmlzVmFsaWQodGltZShOVUxMKSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBoYXNDb21tb25Db25zdHJhaW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0bXBMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb25zdHJhaW50ID0gKCppdCktPmdldENvbnN0cmFpbnQodHlwZSk7Ci0gICAgICAgICAgICBhc3NlcnQoY29uc3RyYWludCAhPSBOVUxMKTsKLQotICAgICAgICAgICAgaWYgKCFjb25zdHJhaW50LT5pc1ZhbGlkKHRpbWUoTlVMTCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29uc3RyYWludC0+aXNVbkNvbnN0cmFpbnQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvL3VzZSB1bmNvbnRyYWludGVkIGZpcnN0bHkuCi0gICAgICAgICAgICAgICAgaGFzVW5jb25zdHJhaW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0bXBMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29uc3RyYWludC0+aXNEYXRlVGltZUNvbnN0cmFpbnQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvL3VzZSBkYXRldGltZSBjb25zdHJhaW50IGluIGhpZ2ggcHJpb3JpdHkuCi0gICAgICAgICAgICAgICAgLy9pZiBjb250YWluIG11bHRpcGUgY29uc3RyYWludHMsIHVzZSB0aGUgZWFybGllc3QgZXhwaXJlIHRpbWUuCi0gICAgICAgICAgICAgICAgaGFzRGF0ZVRpbWVDb25zdHJhaW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0bXBMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29uc3RyYWludC0+aXNUaW1lZENvdW50Q29uc3RyYWludCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgLy9pbGxlZ2FsIE9wZXJhdGlvbiB3aGVuIHRpbWUgY291bnRlZAotICAgICAgICAgICAgICAgIGlmICh0eXBlID09IE9wZXJhdGlvblBlcm1pc3Npb246OlBSSU5UIHx8Ci0gICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gT3BlcmF0aW9uUGVybWlzc2lvbjo6RVhQT1JUKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaGFzVGltZWRDb3VudENvbnN0cmFpbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHRtcExpc3QucHVzaF9iYWNrKCppdCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0ludGVydmFsQ29uc3RyYWludCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGhhc0ludGVydmFsQ29uc3RyYWludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdG1wTGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdG1wTGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgfQotICAgIH0KLQotCi0gICAgZm9yIChpdCA9IHRtcExpc3QuYmVnaW4oKTsgaXQgIT0gdG1wTGlzdC5lbmQoKTsgaXQrKykKLSAgICB7Ci0gICAgICAgIGlmIChoYXNVbmNvbnN0cmFpbnQgPT0gdHJ1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy9kZWxldGUgb3RoZXIgY29uc3RyYWludAotICAgICAgICAgICAgY29uc3RyYWludCA9ICgqaXQpLT5nZXRDb25zdHJhaW50KHR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzVW5Db25zdHJhaW50KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXRMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoYXNEYXRlVGltZUNvbnN0cmFpbnQgPT0gdHJ1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy9kZWxldGUgb3RoZXIgY29uc3RyYWludAotICAgICAgICAgICAgY29uc3RyYWludCA9ICgqaXQpLT5nZXRDb25zdHJhaW50KHR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRGF0ZVRpbWVDb25zdHJhaW50KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBsb25nIHR0ID0gY29uc3RyYWludC0+Z2V0RW5kVGltZSgpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChlYWxpZXN0RW5kID09IC0xKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlYWxpZXN0RW5kID0gdHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXRMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVhbGllc3RFbmQgPiB0dCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZWFsaWVzdEVuZCA9IHR0OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0TGlzdC5wb3BfYmFjaygpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0TGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGhhc0ludGVydmFsQ29uc3RyYWludCA9PSB0cnVlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvL2RlbGV0ZSBvdGhlciBjb25zdHJhaW50Ci0gICAgICAgICAgICBjb25zdHJhaW50ID0gKCppdCktPmdldENvbnN0cmFpbnQodHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29uc3RyYWludCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3RyYWludC0+aXNJbnRlcnZhbENvbnN0cmFpbnQoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldExpc3QucHVzaF9iYWNrKCppdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGFzVGltZWRDb3VudENvbnN0cmFpbnQgPT0gdHJ1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RyYWludCA9ICgqaXQpLT5nZXRDb25zdHJhaW50KHR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzVGltZWRDb3VudENvbnN0cmFpbnQoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldExpc3QucHVzaF9iYWNrKCppdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXRMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgIH0KLQotICAgIGlmIChyZXRMaXN0LnNpemUoKSA9PSAwKQotICAgIHsKLSAgICAgICAgZnJlZVJpZ2h0cygpOwotICAgICAgICByZXR1cm4gUk9fQkFEOwotICAgIH0KLQotICAgIExPR0koIlByb3BlciByaWdodCBoYXMgJWQiLCByZXRMaXN0LnNpemUoKSk7Ci0KLSAgICBhc3NlcnQocmV0TGlzdC5zaXplKCkgPT0gMSk7Ci0KLSAgICBtUHJvcGVyUmlnaHQgPSByZXRMaXN0WzBdOwotICAgIGNvbnN0cmFpbnQgPSByZXRMaXN0WzBdLT5nZXRDb25zdHJhaW50KE9wZXJhdGlvblBlcm1pc3Npb246OkNPTU1PTik7Ci0gICAgaWYgKGNvbnN0cmFpbnQpCi0gICAgewotICAgICAgICBpZiAoY29uc3RyYWludC0+Y29uc3VtZSgpID09IGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmVlUmlnaHRzKCk7Ci0gICAgICAgICAgICByZXR1cm4gUk9fQkFEOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY29uc3RyYWludCA9IHJldExpc3RbMF0tPmdldENvbnN0cmFpbnQodHlwZSk7Ci0gICAgaWYgKGNvbnN0cmFpbnQpCi0gICAgewotICAgICAgICBpZiAoY29uc3RyYWludC0+Y29uc3VtZSgpID09IGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmVlUmlnaHRzKCk7Ci0gICAgICAgICAgICByZXR1cm4gUk9fQkFEOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy91cGRhdGUgdGhlIGNvbnN0cmFpbnQKLSAgICBmcmVlUmlnaHRzKCk7Ci0gICAgcmV0dXJuIFJPX09LOwotfQotCi0vKiogc2VlIFJvLmggKi8KLXN0cmluZyBSbzo6Z2V0Q29udGVudENlayhjb25zdCBzdHJpbmcmIGNvbnRlbnRJRCkKLXsKLSAgICBmb3IgKHZlY3RvcjxBc3NldCo+OjppdGVyYXRvciBpdCA9IG1Bc3NldExpc3QuYmVnaW4oKTsKLSAgICAgICAgaXQgIT0gbUFzc2V0TGlzdC5lbmQoKTsgaXQrKykKLSAgICB7Ci0gICAgICAgIGlmIChjb250ZW50SUQuY29tcGFyZSgoKml0KS0+Z2V0Q29udGVudElEKCkpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKml0KS0+Z2V0Q2VrKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gIiI7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotc3RyaW5nIFJvOjpnZXRDb250ZW50SGFzaChjb25zdCBzdHJpbmcmIGNvbnRlbnRJRCkKLXsKLSAgICBmb3IgKHZlY3RvcjxBc3NldCo+OjppdGVyYXRvciBpdCA9IG1Bc3NldExpc3QuYmVnaW4oKTsKLSAgICAgICAgaXQgIT0gbUFzc2V0TGlzdC5lbmQoKTsgaXQrKykKLSAgICB7Ci0gICAgICAgIGlmIChjb250ZW50SUQuY29tcGFyZSgoKml0KS0+Z2V0Q29udGVudElEKCkpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKml0KS0+Z2V0RENGRGlnZXN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gIiI7Ci19CmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL1JvTWFuYWdlci5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL1JvTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMTVkMjEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Sb01hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaW5jbHVkZSA8cmlnaHRzL1JvTWFuYWdlci5oPgotI2luY2x1ZGUgPHJpZ2h0cy9Bc3NldC5oPgotCi11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotUm9NYW5hZ2VyKiBSb01hbmFnZXI6Om1zSW5zdGFuY2UgPSBOVUxMOwotCi0vKiogc2VlIFJvTWFuYWdlci5oICovCi1Sb01hbmFnZXIqIFJvTWFuYWdlcjo6SW5zdGFuY2UoKQotewotICAgIGlmIChOVUxMID09IG1zSW5zdGFuY2UpCi0gICAgewotICAgICAgICBtc0luc3RhbmNlID0gbmV3IFJvTWFuYWdlcigpOwotICAgIH0KLQotICAgIHJldHVybiBtc0luc3RhbmNlOwotfQotCi0vKiogc2VlIFJvTWFuYWdlci5oICovCi1Sb01hbmFnZXI6OlJvTWFuYWdlcigpCi17Ci0vL2xvYWQgdGhlIHJvIGxpc3QgZnJvbSBsb2NhbCBzeXN0ZW0uCi19Ci0KLS8qKiBzZWUgUm9NYW5hZ2VyLmggKi8KLVJvTWFuYWdlcjo6flJvTWFuYWdlcigpCi17Ci0gICAgbXNJbnN0YW5jZSA9IE5VTEw7Ci0KLSAgICBmb3IgKHZlY3RvcjxSbyo+OjppdGVyYXRvciBpdCA9IG1Sb0xpc3QuYmVnaW4oKTsKLSAgICAgICAgIGl0ICE9IG1Sb0xpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBkZWxldGUgKCppdCk7Ci0gICAgfQotCi0gICAgbVJvTGlzdC5jbGVhcigpOwotfQotCi0vKiogc2VlIFJvTWFuYWdlci5oICovCi1Sbzo6RVJSQ09ERSBSb01hbmFnZXI6Omluc3RhbGxSbyhpc3RyaW5nc3RyZWFtICpyb1N0cmVhbSkKLXsKLSAgICBSbyAqcm8gPSBuZXcgUm8oKTsKLQotICAgIFJvOjpFUlJDT0RFIHJldCA9IHJvLT5wYXJzZShyb1N0cmVhbSk7Ci0KLSAgICBpZiAoUm86OlJPX09LID09IHJldCkKLSAgICB7Ci0gICAgICAgIHJvLT5zYXZlKCk7Ci0KLSAgICAgICAgbVJvTGlzdC5wdXNoX2JhY2socm8pOwotICAgIH0KLQotICAgIHJldHVybiByZXQ7Ci19Ci0KLS8qKiBzZWUgUm9NYW5hZ2VyLmggKi8KLVJvKiBSb01hbmFnZXI6OmdldFJvQnlDb250ZW50SUQoY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpCi17Ci0gICAgZm9yICh2ZWN0b3I8Um8qPjo6aXRlcmF0b3IgaXQgPSBtUm9MaXN0LmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSBtUm9MaXN0LmVuZCgpOyBpdCsrKQotICAgIHsKLSAgICAgICAgZm9yICh2ZWN0b3I8QXNzZXQqPjo6aXRlcmF0b3IgaXRhID0gKCppdCktPm1Bc3NldExpc3QuYmVnaW4oKTsKLSAgICAgICAgICAgICBpdGEgIT0gKCppdCktPm1Bc3NldExpc3QuZW5kKCk7IGl0YSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29udGVudElELmNvbXBhcmUoKCppdGEpLT5nZXRDb250ZW50SUQoKSkgPT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKml0OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qKiBzZWUgUm9NYW5hZ2VyLmggKi8KLVJvKiBSb01hbmFnZXI6OmdldFJvKGNvbnN0IHN0cmluZyYgcm9JRCkKLXsKLSAgICBmb3IgKHZlY3RvcjxSbyo+OjppdGVyYXRvciBpdCA9IG1Sb0xpc3QuYmVnaW4oKTsKLSAgICAgICAgIGl0ICE9IG1Sb0xpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBpZiAocm9JRC5jb21wYXJlKCgqaXQpLT5nZXRSb0lEKCkpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKml0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiogc2VlIFJvTWFuYWdlci5oICovCi12ZWN0b3I8Um8qPiBSb01hbmFnZXI6OmdldEFsbFJvKCkKLXsKLSAgICByZXR1cm4gbVJvTGlzdDsKLX0KLQotLyoqIHNlZSBSb01hbmFnZXIuaCAqLwotYm9vbCBSb01hbmFnZXI6OmRlbGV0ZVJvKGNvbnN0IHN0cmluZyYgcm9JRCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLyoqIHNlZSBSb01hbmFnZXIuaCAqLwotYm9vbCBSb01hbmFnZXI6OmNoZWNrUm9JbkNhY2hlKGNvbnN0IHN0cmluZyYgcm9JRCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JvYXAvUmVnaXN0cmF0aW9uLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yb2FwL1JlZ2lzdHJhdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNmY0NTkuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JvYXAvUmVnaXN0cmF0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS8qKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yb2FwL1JvYXBNZXNzYWdlSGFuZGxlci5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcm9hcC9Sb2FwTWVzc2FnZUhhbmRsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDE5MGVlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yb2FwL1JvYXBNZXNzYWdlSGFuZGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpbmNsdWRlIDxyb2FwL1JvYXBNZXNzYWdlSGFuZGxlci5oPgotI2luY2x1ZGUgPHV0aWwveG1sL0RvbUV4cGF0QWdlbnQuaD4KLSNpbmNsdWRlIDx1dGlsL3htbC9YTUxEb2N1bWVudEltcGwuaD4KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvTm9kZUxpc3RJbXBsLmg+Ci0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL0RPTVN0cmluZy5oPgotI2luY2x1ZGUgPG9mc3RyZWFtLmg+Ci11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotLyoqc2VlIFJvYXBNZXNzYWdlSGFuZGxlci5oICovCi1Sb2FwTWVzc2FnZUhhbmRsZXI6OlJvYXBNZXNzYWdlSGFuZGxlcigpCi17Ci0gICAgbURvYyA9IE5VTEw7Ci19Ci0KLS8qKnNlZSBSb2FwTWVzc2FnZUhhbmRsZXIuaCAqLwotWE1MRG9jdW1lbnRJbXBsKiBSb2FwTWVzc2FnZUhhbmRsZXI6OmNyZWF0ZUNsaWVudE1zZyhSb2FwTWVzc2FnZUhhbmRsZXI6Om1zZ1R5cGUgdHlwZSkKLXsKLSAgICAvKiBsb2FkIHRlbXBsYXRlIGZyb20gZmlsZXMgdGVtcG9yYXJpbHksIEZJWCBNRSBsYXRlciAqLwotICAgIHN0cmluZyBtc2dUZW1wbGF0ZTsKLSAgICBzd2l0Y2ggKHR5cGUpCi0gICAgewotICAgICAgICBjYXNlIFJvYXBNZXNzYWdlSGFuZGxlcjo6RGV2aWNlSGVsbG86Ci0gICAgICAgICAgICBtc2dUZW1wbGF0ZS5hcHBlbmQoImRldmljZUhlbGxvLnhtbCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUm9hcE1lc3NhZ2VIYW5kbGVyOjpSZWdpc3RyYXRpb25SZXF1ZXN0OgotICAgICAgICAgICAgbXNnVGVtcGxhdGUuYXBwZW5kKCJkZXZpY2VIZWxsby54bWwiKTsgICAgICAgIAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUm9hcE1lc3NhZ2VIYW5kbGVyOjpST1JlcXVlc3Q6Ci0gICAgICAgICAgICBtc2dUZW1wbGF0ZS5hcHBlbmQoImRldmljZUhlbGxvLnhtbCIpOyAgICAgIAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWZzdHJlYW0geG1sU3RyZWFtKG1zZ1RlbXBsYXRlLmNfc3RyKCkpOwotICAgIFhNTERvY3VtZW50SW1wbCogeG1sRG9jID0gbmV3IFhNTERvY3VtZW50SW1wbCgpOwotICAgIERvbUV4cGF0QWdlbnQgZG9tRXhwYXRBZ2VudDEoeG1sRG9jKTsKLSAgICBpZiAoZG9tRXhwYXRBZ2VudDEuZ2VuZXJhdGVEb2N1bWVudEZyb21YTUwoJnhtbFN0cmVhbSkpCi0gICAgewotICAgICAgICByZXR1cm4geG1sRG9jOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBkZWxldGUoeG1sRG9jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotfQotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2NyeXB0by9Ecm1DcnlwdG8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmJlZmI4Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2NyeXB0by9Ecm1DcnlwdG8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaW5jbHVkZSA8dXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmg+Ci0jaW5jbHVkZSA8dXN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotdm9pZCBBZXNBZ2VudDo6ZGlzY2FyZFBhZGRpbmdCeXRlKCB1bnNpZ25lZCBjaGFyKiBkZWNyeXB0ZWRCdWYsdW5zaWduZWQgbG9uZyogZGVjcnlwdGVkQnVmTGVuKQ0KLXsNCi0gICAgaWYoIWRlY3J5cHRlZEJ1ZikNCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IGk7Ci0gICAgdW5zaWduZWQgbG9uZyB0bXBMZW4gPSAqZGVjcnlwdGVkQnVmTGVuOwotDQotICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGxhc3Qgc2V2ZXJhbCBieXRlcyBhcmUgcGFkZGluZyBvciBub3QNCi0gICAgZm9yICggaSA9IDE7IGkgPCBkZWNyeXB0ZWRCdWZbdG1wTGVuIC0gMV07IGkrKykKLSAgICB7DQotICAgICAgICBpZiAoZGVjcnlwdGVkQnVmW3RtcExlbiAtIDEgLSBpXSAhPSBkZWNyeXB0ZWRCdWZbdG1wTGVuIC0gMV0pDQotICAgICAgICAgICAgYnJlYWs7DQotICAgIH0KLQotICAgIC8vIFRoZXkgYXJlIHBhZGRpbmcgYnl0ZXMNCi0gICAgaWYgKGkgPT0gZGVjcnlwdGVkQnVmW3RtcExlbiAtIDFdKQ0KLSAgICB7Ci0gICAgICAgICpkZWNyeXB0ZWRCdWZMZW4gPSB0bXBMZW4gLSBpOwotICAgIH0KLQ0KLSAgICByZXR1cm47DQotfQotCi1pbnQzMl90IEFlc0FnZW50OjpkZWNDb250ZW50KCB1bnNpZ25lZCBjaGFyKiBpdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGVuY0RhdGEsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmNMZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGVjRGF0YSkNCi17Ci0gICAgaWYoQUVTXzEyOF9DQkMgPT0gbW9kZSkKLSAgICB7Ci0gICAgICAgIEFFU19LRVkga2V5OwotICAgICAgICBBRVNfc2V0X2RlY3J5cHRfa2V5KEFlc0tleSxBRVNfS0VZX0JJVFMsJmtleSk7Ci0KLSAgICAgICAgdWludDhfdCAqdG1wQnVmID0gbmV3IHVpbnQ4X3RbZW5jTGVuXTsKLQotICAgICAgICBBRVNfY2JjX2VuY3J5cHQoIGVuY0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdG1wQnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGVuY0xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGl2LAotICAgICAgICAgICAgICAgICAgICAgICAgIEFFU19ERUNSWVBUKTsKLQotICAgICAgICB1bnNpZ25lZCBsb25nIHRlbXBMZW4gPSBlbmNMZW47Ci0gICAgICAgIGRpc2NhcmRQYWRkaW5nQnl0ZSh0bXBCdWYsJnRlbXBMZW4pOwotCi0gICAgICAgIG1lbWNweShkZWNEYXRhLCB0bXBCdWYsIHRlbXBMZW4pOwotCi0gICAgICAgIGRlbGV0ZSBbXXRtcEJ1ZjsKLSAgICAgICAgcmV0dXJuIGVuY0xlbiAtIHRlbXBMZW47Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBBRVNfREVDX0ZBSUxFRDsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhMUFnZW50Ojpjb21wdXRlSGFzaCggY29uc3QgdW5zaWduZWQgY2hhciogaW5EYXRhLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbkxlbiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIG91dEhhc2gpIGNvbnN0DQotewotICAgIEVWUF9EaWdlc3QoaW5EYXRhLGluTGVuLG91dEhhc2gsTlVMTCxFVlBfc2hhMSgpLE5VTEwpOwotICAgIHJldHVybjsKLX0KLQotdm9pZCBIbWFjU2hhMUFnZW50Ojpjb21wdXRlTWFjKCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbkRhdGEsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGluTGVuLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogb3V0RGF0YSkgY29uc3QNCi17Ci0gICAgSE1BQyhFVlBfc2hhMSgpLG1hY0tleSxrZXlMZW4saW5EYXRhLGluTGVuLG91dERhdGEsTlVMTCk7Ci0gICAgcmV0dXJuOwotfQotCi1ib29sIFJzYUFnZW50OjpzaWduYXR1cmUoIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHJhd0RhdGEsDQotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHJhd0xlbiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHNpZ0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJzYUFsZyBzaWdBbGcpDQotewotICAgIHN3aXRjaChzaWdBbGcpCi0gICAgewotICAgICAgICBjYXNlIFJTQV9QU1M6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtSGFzaFtTSEFfRElHRVNUX0xFTkdUSF07Ci0gICAgICAgICAgICAgICAgU2hhMUFnZW50IHNoYTE7Ci0gICAgICAgICAgICAgICAgc2hhMS5jb21wdXRlSGFzaChyYXdEYXRhLHJhd0xlbixtSGFzaCk7Ci0KLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEVNW3JzYVNpemVdOwotICAgICAgICAgICAgICAgIGlmKCAwID09IFJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1MoICZyc2FLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFfRElHRVNUX0xFTkdUSCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYoMCA+IFJTQV9wcml2YXRlX2VuY3J5cHQoIFNIQV9ESUdFU1RfTEVOR1RILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJzYUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1BLQ1MxX1BBRERJTkcpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUlNBX1NIQTE6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtSGFzaFtTSEFfRElHRVNUX0xFTkdUSF07Ci0gICAgICAgICAgICAgICAgU2hhMUFnZW50IHNoYTE7Ci0gICAgICAgICAgICAgICAgc2hhMS5jb21wdXRlSGFzaChyYXdEYXRhLHJhd0xlbixtSGFzaCk7Ci0KLSAgICAgICAgICAgICAgICBpZigwICE9IFJTQV9zaWduKCBOSURfc2hhMVdpdGhSU0EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBX0RJR0VTVF9MRU5HVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnNhU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnNhS2V5KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUnNhQWdlbnQ6OnNpZ1ZlcmlmeSggdW5zaWduZWQgY2hhciogc2lnRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzaWdMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHJhd0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcmF3TGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSc2FBbGcgc2lnQWxnKQ0KLXsKLSAgICBpZiggc2lnQWxnID09IFJTQV9QU1MpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGRlY1NpZ0RhdGFbcnNhU2l6ZV07Ci0KLSAgICAgICAgaWYoMCA+IFJTQV9wdWJsaWNfZGVjcnlwdChzaWdMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNTaWdEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyc2FLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1BLQ1MxX1BBRERJTkcpKQ0KLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtSGFzaFtTSEFfRElHRVNUX0xFTkdUSF07Ci0gICAgICAgICAgICBTaGExQWdlbnQgc2hhMTsKLSAgICAgICAgICAgIHNoYTEuY29tcHV0ZUhhc2gocmF3RGF0YSxyYXdMZW4sbUhhc2gpOwotCi0gICAgICAgICAgICBpZiggMCA9PSBSU0FfdmVyaWZ5X1BLQ1MxX1BTUyggJnJzYUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfc2hhMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY1NpZ0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmKHNpZ0FsZyA9PSBSU0FfU0hBMSkKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgbUhhc2hbU0hBX0RJR0VTVF9MRU5HVEhdOwotICAgICAgICBTaGExQWdlbnQgc2hhMTsKLSAgICAgICAgc2hhMS5jb21wdXRlSGFzaChyYXdEYXRhLHJhd0xlbixtSGFzaCk7Ci0KLSAgICAgICAgaWYoMCAhPSBSU0FfdmVyaWZ5KCBOSURfc2hhMVdpdGhSU0EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBX0RJR0VTVF9MRU5HVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJzYUtleSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWludCBSc2FBZ2VudDo6ZGVjcnlwdCggY29uc3QgdW5zaWduZWQgY2hhciogZW5jRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmNMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlY0RhdGEpDQotewotICAgIHJldHVybiBSU0FfcHJpdmF0ZV9kZWNyeXB0KCBlbmNMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyc2FLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QS0NTMV9QQURESU5HKTsKLX0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvQ2hhcmFjdGVyRGF0YUltcGwuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9DaGFyYWN0ZXJEYXRhSW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZTY5OWEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9DaGFyYWN0ZXJEYXRhSW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvQ2hhcmFjdGVyRGF0YUltcGwuaD4NCi0NCi0vKiogc2VlIENoYXJhY3RlckRhdGFJbXBsLmggKi8NCi1jb25zdCBET01TdHJpbmcqIENoYXJhY3RlckRhdGFJbXBsOjpnZXREYXRhKCkgY29uc3QgdGhyb3cgKERPTUV4Y2VwdGlvbikNCi17DQotICAgIHJldHVybiBjaGFyRGF0YTsNCi19DQotDQotLyoqIHNlZSBDaGFyYWN0ZXJEYXRhSW1wbC5oICovDQotQ2hhcmFjdGVyRGF0YUltcGw6OkNoYXJhY3RlckRhdGFJbXBsKCk6Y2hhckRhdGEoTlVMTCkNCi17DQotfQ0KLQ0KLS8qKiBzZWUgQ2hhcmFjdGVyRGF0YUltcGwuaCovDQotQ2hhcmFjdGVyRGF0YUltcGw6OkNoYXJhY3RlckRhdGFJbXBsKGNvbnN0IERPTVN0cmluZyogZGF0YSk6Y2hhckRhdGEoTlVMTCkNCi17DQotICAgIGlmIChkYXRhICE9IE5VTEwpDQotICAgICAgICBjaGFyRGF0YSA9IG5ldyBET01TdHJpbmcoKmRhdGEpOw0KLX0NCi0NCi0vKiogc2VlIENoYXJhY3RlckRhdGFJbXBsLmggKi8NCi12b2lkIENoYXJhY3RlckRhdGFJbXBsOjpzZXREYXRhKGNvbnN0IERPTVN0cmluZyogZGF0YSkgdGhyb3cgKERPTUV4Y2VwdGlvbikNCi17DQotDQotICAgIGlmIChjaGFyRGF0YSAhPSBOVUxMKQ0KLSAgICAgICAgZGVsZXRlIGNoYXJEYXRhOw0KLQ0KLSAgICBpZiAoZGF0YSA9PSBOVUxMKQ0KLSAgICAgICAgY2hhckRhdGEgPSBOVUxMOw0KLSAgICBlbHNlDQotICAgICAgICBjaGFyRGF0YSA9IG5ldyBET01TdHJpbmcoKmRhdGEpOw0KLX0NCi0NCi0vKiogc2VlIENoYXJhY3RlckRhdGFJbXBsLmggKi8NCi1pbnQgQ2hhcmFjdGVyRGF0YUltcGw6OmdldExlbmd0aCgpIGNvbnN0DQotew0KLSAgICByZXR1cm4gY2hhckRhdGEgIT0gTlVMTCA/IGNoYXJEYXRhLT5sZW5ndGgoKSA6IDA7DQotfQ0KLQ0KLS8qKiBzZWUgQ2hhcmFjdGVyRGF0YUltcGwuaCAqLw0KLXZvaWQgQ2hhcmFjdGVyRGF0YUltcGw6OmFwcGVuZERhdGEoY29uc3QgRE9NU3RyaW5nKiBhcmcpIHRocm93KERPTUV4Y2VwdGlvbikNCi17DQotICAgIGlmIChhcmcgIT0gTlVMTCkgew0KLSAgICAgICAgaWYgKGNoYXJEYXRhICE9IE5VTEwpDQotICAgICAgICAgICAgY2hhckRhdGEtPmFwcGVuZCgqYXJnKTsNCi0gICAgICAgIGVsc2UNCi0gICAgICAgICAgICBjaGFyRGF0YSA9IG5ldyBET01TdHJpbmcoKmFyZyk7DQotICAgIH0NCi19DQotDQotLyoqIHNlZSBDaGFyYWN0ZXJEYXRhSW1wbC5oICovDQotY29uc3QgRE9NU3RyaW5nKiBDaGFyYWN0ZXJEYXRhSW1wbDo6Z2V0Tm9kZVZhbHVlKCkgY29uc3QgdGhyb3coRE9NRXhjZXB0aW9uKQ0KLXsNCi0gICAgcmV0dXJuIGdldERhdGEoKTsNCi19DQotDQotLyoqIHNlZSBDaGFyYWN0ZXJEYXRhSW1wbC5oICovDQotdm9pZCBDaGFyYWN0ZXJEYXRhSW1wbDo6c2V0Tm9kZVZhbHVlKERPTVN0cmluZyogbm9kZVZhbHVlKSB0aHJvdyhET01FeGNlcHRpb24pDQotew0KLSAgICBzZXREYXRhKG5vZGVWYWx1ZSk7DQotfQ0KLQ0KLS8qKiBzZWUgQ2hhcmFjdGVyRGF0YUltcGwuaCAqLw0KLUNoYXJhY3RlckRhdGFJbXBsOjp+Q2hhcmFjdGVyRGF0YUltcGwoKQ0KLXsNCi0gICAgZGVsZXRlIGNoYXJEYXRhOw0KLX0NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL0RPTUV4Y2VwdGlvbi5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL0RPTUV4Y2VwdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhOWQzY2UuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9ET01FeGNlcHRpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9Eb2N1bWVudEltcGwuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9Eb2N1bWVudEltcGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmY0NmZiLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvRG9jdW1lbnRJbXBsLmNwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvRWxlbWVudEltcGwuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9FbGVtZW50SW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNDg4MzEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9FbGVtZW50SW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvRWxlbWVudEltcGwuaD4NCi0NCi0vKiogc2VlIEVsZW1lbnRJbXBsLmggKi8NCi1Ob2RlVHlwZSBFbGVtZW50SW1wbDo6Z2V0Tm9kZVR5cGUoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIEVMRU1FTlRfTk9ERTsNCi19DQotDQotLyoqIHNlZSBFbGVtZW50SW1wbC5oICovDQotY29uc3QgRE9NU3RyaW5nKiBFbGVtZW50SW1wbDo6Z2V0Tm9kZU5hbWUoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIGdldFRhZ05hbWUoKTsNCi19DQotDQotLyoqIHNlZSBFbGVtZW50SW1wbC5oICovDQotY29uc3QgRE9NU3RyaW5nKiBFbGVtZW50SW1wbDo6Z2V0VGFnTmFtZSgpIGNvbnN0DQotew0KLSAgICByZXR1cm4gTlVMTDsNCi19DQotDQotLyoqIHNlZSBFbGVtZW50SW1wbC5oICovDQotdm9pZCBFbGVtZW50SW1wbDo6c2V0QXR0cmlidXRlKGNvbnN0IERPTVN0cmluZyogbmFtZSwgY29uc3QgRE9NU3RyaW5nKiB2YWx1ZSkgdGhyb3cgKERPTUV4Y2VwdGlvbikNCi17DQotDQotfQ0KLQ0KLS8qKiBzZWUgRWxlbWVudEltcGwuaCAqLw0KLXZvaWQgRWxlbWVudEltcGw6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUpIHRocm93IChET01FeGNlcHRpb24pDQotew0KLQ0KLX0NCi0NCi0vKiogc2VlIEVsZW1lbnRJbXBsLmggKi8NCi1jb25zdCBET01TdHJpbmcqIEVsZW1lbnRJbXBsOjpnZXRBdHRyaWJ1dGUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIE5VTEw7DQotfQ0KLQ0KLS8qKiBzZWUgRWxlbWVudEltcGwuaCAqLw0KLXZvaWQgRWxlbWVudEltcGw6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IERPTVN0cmluZyogbmFtZSwgTm9kZUxpc3RJbXBsKiBub2RlTGlzdCkgY29uc3QNCi17DQotICAgIE5vZGVJbXBsKiBub2RlID0gZ2V0Rmlyc3RDaGlsZCgpOw0KLQ0KLSAgICBpZiAobm9kZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCB8fCBub2RlTGlzdCA9PSBOVUxMKQ0KLSAgICAgICAgcmV0dXJuOw0KLQ0KLSAgICBkbyB7DQotDQotICAgICAgICBpZiAobm9kZS0+Z2V0Tm9kZVR5cGUoKSA9PSBFTEVNRU5UX05PREUpIHsNCi0gICAgICAgICAgICBFbGVtZW50SW1wbCogZWxlbWVudE5vZGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50SW1wbCo+KG5vZGUpOw0KLSAgICAgICAgICAgIGlmICgqZWxlbWVudE5vZGUtPmdldFRhZ05hbWUoKSA9PSAqbmFtZSkNCi0gICAgICAgICAgICAgICAvKiBpZiBjdXJyZW50IGlzIGVsZW1lbnQgbm9kZSBhbmQgdGFnIG5hbWUgaXMgZXF1YWwgdG8gPGNvZGU+bmFtZTwvY29kZT4scHV0IGl0IGludG8gbm9kZUxpc3QgKi8NCi0gICAgICAgICAgICAgICAgbm9kZUxpc3QtPmFwcGVuZChub2RlKTsNCi0gICAgICAgICAgICAgICAvKg0KLSAgICAgICAgICAgICAgICAqIHZpc2l0IERPTSB0cmVlIHJlY3Vyc2l2ZWx5LA0KLSAgICAgICAgICAgICAgICAqIGdldCBhbGwgRWxlbWVudHMgbm9kZSB3aG9zZSB0YWdlIG5hbWUgaXMgZXF1YWwgdG8gbmFtZS4NCi0gICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICBlbGVtZW50Tm9kZS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSwgbm9kZUxpc3QpOw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgLyogc2V0IGN1cnJlbnQgbm9kZSdzIG5leHQgc2libGluZyBub2RlIGFzIGN1cnJlbnQgbm9kZS4qLw0KLSAgICAgICAgbm9kZSA9IG5vZGUtPmdldE5leHRTaWJsaW5nKCk7DQotICAgIH0gd2hpbGUobm9kZSAhPSBOVUxMKTsNCi19DQotDQotLyoqIHNlZSBFbGVtZW50SW1wbC5oICovDQotTm9kZUxpc3RJbXBsKiBFbGVtZW50SW1wbDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSBjb25zdA0KLXsNCi0gICAgTm9kZUxpc3RJbXBsKiBub2RlTGlzdCA9IG5ldyBOb2RlTGlzdEltcGwoKTsNCi0NCi0gICAgaWYgKG5vZGVMaXN0ID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQ0KLSAgICAgICAgcmV0dXJuIE5VTEw7DQotDQotICAgIGdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUsbm9kZUxpc3QpOw0KLQ0KLSAgICByZXR1cm4gbm9kZUxpc3Q7DQotfQ0KLQ0KLS8qKiBzZWUgRWxlbWVudEltcGwuaCAqLw0KLWJvb2wgRWxlbWVudEltcGw6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIGZhbHNlOw0KLX0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL05vZGVJbXBsLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvTm9kZUltcGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODNjNTVlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvTm9kZUltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2luY2x1ZGUgPHV0aWwvZG9tY29yZS9Ob2RlSW1wbC5oPg0KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvRG9jdW1lbnRJbXBsLmg+DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLXZvaWQgTm9kZUltcGw6OnNldFBhcmVudChOb2RlSW1wbCogcGFyZW50Tm9kZSkNCi17DQotICAgIHRoaXMtPnBhcmVudCA9IHBhcmVudE5vZGU7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi12b2lkIE5vZGVJbXBsOjpzZXROZXh0U2libGluZyhOb2RlSW1wbCogc2libGluZ05vZGUpDQotew0KLSAgICB0aGlzLT5uZXh0U2libGluZyA9IHNpYmxpbmdOb2RlOw0KLX0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotdm9pZCBOb2RlSW1wbDo6c2V0UHJldmlvdXNTaWJsaW5nKE5vZGVJbXBsKiBzaWJsaW5nTm9kZSkNCi17DQotICAgIHRoaXMtPnByZXZpb3VzU2libGluZyA9IHNpYmxpbmdOb2RlOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotdm9pZCBOb2RlSW1wbDo6c2V0Rmlyc3RDaGlsZChOb2RlSW1wbCogY2hpbGROb2RlKQ0KLXsNCi0gICAgdGhpcy0+Zmlyc3RDaGlsZCA9IGNoaWxkTm9kZTsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLXZvaWQgTm9kZUltcGw6OnNldExhc3RDaGlsZChOb2RlSW1wbCogY2hpbGROb2RlKQ0KLXsNCi0gICAgdGhpcy0+bGFzdENoaWxkID0gY2hpbGROb2RlOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotTm9kZUltcGwqIE5vZGVJbXBsOjpnZXRQYXJlbnROb2RlKCkgY29uc3QNCi17DQotICAgIHJldHVybiBwYXJlbnQ7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi1Ob2RlSW1wbCogTm9kZUltcGw6OmdldEZpcnN0Q2hpbGQoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIGZpcnN0Q2hpbGQ7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi1Ob2RlSW1wbCogTm9kZUltcGw6OmdldExhc3RDaGlsZCgpIGNvbnN0DQotew0KLSAgICByZXR1cm4gbGFzdENoaWxkOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotTm9kZUltcGwqIE5vZGVJbXBsOjpnZXRQcmV2aW91c1NpYmxpbmcoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIHByZXZpb3VzU2libGluZzsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLU5vZGVJbXBsKiBOb2RlSW1wbDo6Z2V0TmV4dFNpYmxpbmcoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIG5leHRTaWJsaW5nOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotTm9kZUltcGwqIE5vZGVJbXBsOjppbnNlcnRCZWZvcmUoTm9kZUltcGwqIG5ld0NoaWxkLCBOb2RlSW1wbCogcmVmQ2hpbGQpIHRocm93IChET01FeGNlcHRpb24pDQotew0KLSAgICBpZiAobmV3Q2hpbGQgPT0gTlVMTCkKLSAgICAgICAgI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAjZWxzZQ0KLSAgICAgICAgICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246OldST05HX0RPQ1VNRU5UX0VSUik7DQotICAgICAgICAjZW5kaWYNCi0gICAgaWYgKHJlZkNoaWxkID09IE5VTEwgfHwgcmVmQ2hpbGQtPmdldFBhcmVudE5vZGUoKSAhPSB0aGlzKQotICAgICAgICAjaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICNlbHNlDQotICAgICAgICAgICAgdGhyb3cgRE9NRXhjZXB0aW9uKERPTUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUik7Ci0gICAgICAgICNlbmRpZg0KLQ0KLSAgICBOb2RlSW1wbCogcGFyZW50Tm9kZSA9IG5ld0NoaWxkLT5nZXRQYXJlbnROb2RlKCk7DQotDQotICAgIGlmIChwYXJlbnROb2RlICE9IE5VTEwpDQotICAgICAgICBwYXJlbnROb2RlLT5yZW1vdmVDaGlsZChuZXdDaGlsZCk7DQotDQotICAgIE5vZGVJbXBsKiBwcmV2U2libGluZ05vZGUgPSByZWZDaGlsZC0+Z2V0UHJldmlvdXNTaWJsaW5nKCk7DQotDQotICAgIGlmIChwcmV2U2libGluZ05vZGUgIT0gTlVMTCkNCi0gICAgICAgIHByZXZTaWJsaW5nTm9kZS0+YXBwZW5kTmV4dFNpYmxpbmcobmV3Q2hpbGQpOw0KLSAgICBlbHNlDQotICAgICAgICBzZXRGaXJzdENoaWxkKG5ld0NoaWxkKTsNCi0NCi0gICAgbmV3Q2hpbGQtPmFwcGVuZE5leHRTaWJsaW5nKHJlZkNoaWxkKTsNCi0gICAgbmV3Q2hpbGQtPnNldFBhcmVudCh0aGlzKTsNCi0NCi0gICAgcmV0dXJuIG5ld0NoaWxkOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotTm9kZUltcGwqIE5vZGVJbXBsOjpyZW1vdmVDaGlsZChOb2RlSW1wbCogb2xkQ2hpbGQpIHRocm93IChET01FeGNlcHRpb24pDQotew0KLQ0KLSAgICBpZiAob2xkQ2hpbGQgPT0gTlVMTCB8fCBvbGRDaGlsZC0+Z2V0UGFyZW50Tm9kZSgpICE9IHRoaXMgKQotICAgICNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgIHJldHVybiBOVUxMOwotICAgICNlbHNlCi0gICAgICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246Ok5PVF9GT1VORF9FUlIpOwotICAgICNlbmRpZg0KLQ0KLSAgICBOb2RlSW1wbCogcGFyZW50Tm9kZSA9IG9sZENoaWxkLT5nZXRQYXJlbnROb2RlKCk7DQotICAgIE5vZGVJbXBsKiBuZXh0U2libGluZ05vZGUgPSBvbGRDaGlsZC0+Z2V0TmV4dFNpYmxpbmcoKTsNCi0gICAgTm9kZUltcGwqIHByZXZTaWJsaW5nTm9kZSA9IG9sZENoaWxkLT5nZXRQcmV2aW91c1NpYmxpbmcoKTsNCi0NCi0gICAgaWYgKHByZXZTaWJsaW5nTm9kZSA9PSBOVUxMICYmIG5leHRTaWJsaW5nTm9kZSAhPSBOVUxMKSB7DQotICAgICAgICAvKg0KLSAgICAgICAgICogY2hpbGRyZW4ncyBwcmV2aW91cyBzaWJsaW5nIG5vZGUgPT0gTlVMTCBhbmQgbmV4dCBzaWJsaW5nIG5vZGUgIT0NCi0gICAgICAgICAqIE5VTEwsIG1lYW5zIHRoZSBjaGlsZHJlbiBub2RlIGlzIHRoZSBmaXJzdCBub2RlIG9mIGl0cyBwYXJlbnQuDQotICAgICAgICAgKiBzbyBzZXQgdGhlIGNoaWxkcmVuJ3MgbmV4dCBzaWJsaW5nIG5vZGUgYXMgdGhlIGZpcnN0IG5vZGUgb2YgaXRzIHBhcmVudC4NCi0gICAgICAgICAqLw0KLSAgICAgICAgcGFyZW50Tm9kZS0+c2V0Rmlyc3RDaGlsZChuZXh0U2libGluZ05vZGUpOw0KLSAgICAgICAgbmV4dFNpYmxpbmdOb2RlLT5zZXRQcmV2aW91c1NpYmxpbmcoTlVMTCk7DQotDQotICAgIH0gZWxzZSBpZiAocHJldlNpYmxpbmdOb2RlICE9IE5VTEwgJiYgbmV4dFNpYmxpbmdOb2RlID09IE5VTEwpIHsNCi0gICAgICAgIC8qDQotICAgICAgICAgKiBjaGlsZHJlbidzIHByZXZpb3VzIHNpYmxpbmcgbm9kZSAhPSBOVUxMIGFuZCBuZXh0IHNpYmxpbmcgbm9kZSA9PQ0KLSAgICAgICAgICogTlVMTCwgbWVhbnMgdGhlIGNoaWxkIG5vZGUgaXMgdGhlIGxhc3Qgbm9kZSBvZiBwYXJlbnQuc28gc2V0IHRoZQ0KLSAgICAgICAgICogbGFzdCBub2RlIG9mIGNoaWxkcmVuJ3MgcGFyZW50IGFzIGNoaWxkcmVuJ3MgcHJldmlvdXMgc2libGluZyBub2RlLg0KLSAgICAgICAgICovDQotICAgICAgICBwcmV2U2libGluZ05vZGUtPnNldE5leHRTaWJsaW5nKE5VTEwpOw0KLSAgICAgICAgcGFyZW50Tm9kZS0+c2V0TGFzdENoaWxkKHByZXZTaWJsaW5nTm9kZSk7DQotDQotICAgIH0gZWxzZSBpZiAocHJldlNpYmxpbmdOb2RlICE9IE5VTEwgJiYgbmV4dFNpYmxpbmdOb2RlICE9IE5VTEwpIHsNCi0gICAgICAgIC8qDQotICAgICAgICAgKiBjaGlsZHJlbidzIHByZXZpb3VzIHNpYmxpbmcgbm9kZSAhPSBOVUxMIGFuZCBuZXh0IHNpYmxpbmcgbm9kZSAhPQ0KLSAgICAgICAgICogTlVMTCxtZWFucyB0aGUgbm9kZSBpcyBuZWl0aGVyIGZpcnN0IGNoaWxkIG5vciBsYXN0IGNoaWxkcmVuIG9mIGl0cyBwYXJlbnQuDQotICAgICAgICAgKi8NCi0gICAgICAgIHByZXZTaWJsaW5nTm9kZS0+YXBwZW5kTmV4dFNpYmxpbmcobmV4dFNpYmxpbmdOb2RlKTsNCi0NCi0gICAgfSBlbHNlIGlmIChwcmV2U2libGluZ05vZGUgPT0gTlVMTCAmJiBuZXh0U2libGluZ05vZGUgPT0gTlVMTCkgew0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIHRoaXMgbWVhbnMgaXQncyBvbmx5IG9uZSBjaGlsZHJlbiBub2RlIG9mIGl0cyBwYXJlbnQuDQotICAgICAgICAgKiBzbyBhZGp1c3QgdGhlIGZpcnN0IGNoaWxkIGFuZCBsYXN0IGNoaWxkIHRvIE5VTEwgd2hlbiByZW1vdmUgdGhlIGNoaWxkcmVuIG5vZGUuDQotICAgICAgICAgKi8NCi0gICAgICAgIHRoaXMtPnNldEZpcnN0Q2hpbGQoTlVMTCk7DQotICAgICAgICB0aGlzLT5zZXRMYXN0Q2hpbGQoTlVMTCk7DQotICAgIH0NCi0NCi0gICAgb2xkQ2hpbGQtPnNldFBhcmVudChOVUxMKTsNCi0gICAgb2xkQ2hpbGQtPnNldE5leHRTaWJsaW5nKE5VTEwpOw0KLSAgICBvbGRDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKE5VTEwpOw0KLQ0KLSAgICByZXR1cm4gb2xkQ2hpbGQ7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi12b2lkIE5vZGVJbXBsOjphcHBlbmROZXh0U2libGluZyhOb2RlSW1wbCogbm9kZSkNCi17DQotICAgIGlmIChub2RlID09IE5VTEwpDQotICAgICAgICByZXR1cm47DQotDQotICAgIHNldE5leHRTaWJsaW5nKG5vZGUpOw0KLSAgICBub2RlLT5zZXRQcmV2aW91c1NpYmxpbmcodGhpcyk7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi1Ob2RlSW1wbCogTm9kZUltcGw6OmFwcGVuZENoaWxkKE5vZGVJbXBsKiBuZXdDaGlsZCkgdGhyb3cgKERPTUV4Y2VwdGlvbikNCi17DQotICAgIGlmIChuZXdDaGlsZCA9PSBOVUxMKQotICAgICAgICAjaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICNlbHNlDQotICAgICAgICAgICAgdGhyb3cgRE9NRXhjZXB0aW9uKERPTUV4Y2VwdGlvbjo6V1JPTkdfRE9DVU1FTlRfRVJSKTsNCi0gICAgICAgICNlbmRpZg0KLSAgICAvKiBJZiBuZXdDaGlsZCBoYXZlIHBhcmVudCxyZW1vdmUgaXQgZnJvbSBpdHMgcGFyZW50IGF0IGZpcnN0LiovDQotICAgIE5vZGVJbXBsKiBwYXJlbnQgPSBuZXdDaGlsZC0+Z2V0UGFyZW50Tm9kZSgpOw0KLSAgICBpZiAocGFyZW50ICE9IE5VTEwpDQotICAgICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKG5ld0NoaWxkKTsNCi0NCi0gICAgaWYgKGdldEZpcnN0Q2hpbGQoKSA9PSBOVUxMICYmIGdldExhc3RDaGlsZCgpID09IE5VTEwpIHsNCi0gICAgICAgIC8qIFRoZXJlIGFyZSBub3QgYW55IG5vZGVzIGluIGN1cnJlbnQgbm9kZS4qLw0KLSAgICAgICAgc2V0Rmlyc3RDaGlsZChuZXdDaGlsZCk7DQotICAgIH0gZWxzZSBpZiAoZ2V0TGFzdENoaWxkKCkgIT0gTlVMTCkgew0KLSAgICAgICAgZ2V0TGFzdENoaWxkKCktPmFwcGVuZE5leHRTaWJsaW5nKG5ld0NoaWxkKTsNCi0gICAgfQ0KLQ0KLSAgICBuZXdDaGlsZC0+c2V0UGFyZW50KHRoaXMpOw0KLSAgICBzZXRMYXN0Q2hpbGQobmV3Q2hpbGQpOw0KLQ0KLQ0KLSAgICByZXR1cm4gbmV3Q2hpbGQ7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi1ib29sIE5vZGVJbXBsOjpoYXNDaGlsZE5vZGVzKCkgY29uc3QNCi17DQotICAgIHJldHVybiBnZXRGaXJzdENoaWxkKCkgIT0gTlVMTDsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLWNvbnN0IERPTVN0cmluZyogTm9kZUltcGw6OmdldE5vZGVWYWx1ZSgpIGNvbnN0IHRocm93IChET01FeGNlcHRpb24pDQotew0KLSAgICByZXR1cm4gTlVMTDsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLXZvaWQgTm9kZUltcGw6OnNldE5vZGVWYWx1ZShET01TdHJpbmcqIG5vZGVWYWx1ZSkgdGhyb3cgKERPTUV4Y2VwdGlvbikNCi17DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi1ib29sIE5vZGVJbXBsOjpoYXNBdHRyaWJ1dGVzKCkgY29uc3QNCi17DQotICAgIHJldHVybiBmYWxzZTsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oICovDQotY29uc3QgRG9jdW1lbnRJbXBsKiBOb2RlSW1wbDo6Z2V0RG9jdW1lbnQoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIGRvY3VtZW50Ow0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmggKi8NCi12b2lkIE5vZGVJbXBsOjpzZXREb2N1bWVudChjb25zdCBEb2N1bWVudEltcGwqIGRvY3VtZW50KQ0KLXsNCi0gICAgdGhpcy0+ZG9jdW1lbnQgPSBkb2N1bWVudDsNCi19DQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9Ob2RlSXRlcmF0b3IuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9Ob2RlSXRlcmF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTEzNjY5Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvTm9kZUl0ZXJhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvTm9kZUltcGwuaD4NCi0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL05vZGVJdGVyYXRvci5oPg0KLQ0KLS8qKiBzZWUgTm9kZUl0ZXJhdG9yLmggKi8NCi1Ob2RlSXRlcmF0b3I6Ok5vZGVJdGVyYXRvcihOb2RlSW1wbCogc3RhcnQsTm9kZUltcGwqIHNjb3BlLE5vZGVJbXBsKiBlbmQpOiBzY29wZU5vZGUoc2NvcGUpLGVuZE5vZGUoZW5kKSxjdXJOb2RlKHN0YXJ0KQ0KLXsNCi19DQotDQotLyoqIHNlZSBOb2RlSXRlcmF0b3IuaCAqLw0KLU5vZGVJbXBsKiBOb2RlSXRlcmF0b3I6OmZpbmROZXh0T3JkZXJOb2RlKE5vZGVJbXBsKiBub2RlKQ0KLXsNCi0gICAgaWYgKG5vZGUgPT0gZW5kTm9kZSkNCi0gICAgICAgIHJldHVybiBOVUxMOw0KLQ0KLSAgICBpZiAobm9kZSAhPSBOVUxMKSB7DQotICAgICAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpID09IHRydWUpIHsNCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+Z2V0Rmlyc3RDaGlsZCgpOw0KLSAgICAgICAgfWVsc2UgaWYgKG5vZGUgPT0gc2NvcGVOb2RlICYmIG5vZGUtPmhhc0NoaWxkTm9kZXMoKSA9PSBmYWxzZSkgew0KLSAgICAgICAgICAgIG5vZGUgPSBOVUxMOw0KLSAgICAgICAgfSBlbHNlIGlmIChub2RlLT5nZXROZXh0U2libGluZygpICE9IE5VTEwpIHsNCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+Z2V0TmV4dFNpYmxpbmcoKTsNCi0gICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgd2hpbGUgKG5vZGUgIT0gc2NvcGVOb2RlICYmIG5vZGUgIT0gTlVMTCAmJiBub2RlLT5nZXROZXh0U2libGluZygpID09IE5VTEwpIHsNCi0gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmdldFBhcmVudE5vZGUoKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgaWYgKG5vZGUgPT0gc2NvcGVOb2RlKQ0KLSAgICAgICAgICAgICAgICBub2RlID0gTlVMTDsNCi0gICAgICAgICAgICBpZiAobm9kZSAhPSBOVUxMKQ0KLSAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+Z2V0TmV4dFNpYmxpbmcoKTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLSAgICBpZiAobm9kZSA9PSBlbmROb2RlIHx8IG5vZGUgPT0gc2NvcGVOb2RlKQ0KLSAgICAgICAgbm9kZSA9IE5VTEw7DQotDQotICAgIHJldHVybiBub2RlOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJdGVyYXRvci5oICovDQotTm9kZUltcGwqIE5vZGVJdGVyYXRvcjo6bmV4dCgpDQotew0KLSAgICBOb2RlSW1wbCogbm9kZSA9IE5VTEw7DQotDQotICAgIG5vZGUgPSBmaW5kTmV4dE9yZGVyTm9kZShjdXJOb2RlKTsNCi0NCi0gICAgaWYgKG5vZGUgIT0gTlVMTCkNCi0gICAgICAgIGN1ck5vZGUgPSBub2RlOw0KLQ0KLSAgICByZXR1cm4gbm9kZTsNCi19DQotDQotLyoqIHNlZSBOb2RlSXRlcmF0b3IuaCAqLw0KLU5vZGVJbXBsKiBOb2RlSXRlcmF0b3I6OnByZXYoKQ0KLXsNCi0gICAgTm9kZUltcGwqIG5vZGU7DQotDQotICAgIG5vZGUgPSBmaW5kUHJldmlvdXNPcmRlck5vZGUoY3VyTm9kZSk7DQotDQotICAgIGlmIChub2RlICE9IE5VTEwpDQotICAgICAgICBjdXJOb2RlID0gbm9kZTsNCi0NCi0gICAgcmV0dXJuIG5vZGU7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUl0ZXJhdG9yLmggKi8NCi1Ob2RlSW1wbCogTm9kZUl0ZXJhdG9yOjpmaW5kUHJldmlvdXNPcmRlck5vZGUoTm9kZUltcGwqIG5vZGUpDQotew0KLSAgICBpZiAobm9kZSA9PSBOVUxMIHx8IG5vZGUgPT0gZW5kTm9kZSkNCi0gICAgICAgIHJldHVybiBOVUxMOw0KLQ0KLSAgICBpZiAobm9kZS0+Z2V0UHJldmlvdXNTaWJsaW5nKCkgIT0gTlVMTCkgew0KLSAgICAgICAgbm9kZSA9IG5vZGUtPmdldFByZXZpb3VzU2libGluZygpOw0KLSAgICAgICAgd2hpbGUobm9kZSAhPSBOVUxMICYmIG5vZGUtPmhhc0NoaWxkTm9kZXMoKSA9PSB0cnVlKQ0KLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5nZXRMYXN0Q2hpbGQoKTsNCi0gICAgfSBlbHNlIHsNCi0gICAgICAgIGlmIChub2RlID09IHNjb3BlTm9kZSkNCi0gICAgICAgICAgICBub2RlID0gTlVMTDsNCi0gICAgICAgIGVsc2UNCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+Z2V0UGFyZW50Tm9kZSgpOw0KLSAgICB9DQotDQotICAgIGlmIChub2RlID09IHNjb3BlTm9kZSB8fCBub2RlID09IGVuZE5vZGUpDQotICAgICAgICByZXR1cm4gTlVMTDsNCi0NCi0gICAgcmV0dXJuIG5vZGU7DQotfQ0KLQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvTm9kZUxpc3RJbXBsLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvTm9kZUxpc3RJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEwZDYyZC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL05vZGVMaXN0SW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvTm9kZUxpc3RJbXBsLmg+DQotDQotLyoqIHNlZSBOb2RlTGlzdEltcGwuaCovDQotdm9pZCBOb2RlTGlzdEltcGw6OmFwcGVuZChjb25zdCBOb2RlSW1wbCogbmV3Tm9kZSkNCi17DQotICAgIGlmIChuZXdOb2RlID09IE5VTEwpDQotICAgICAgICByZXR1cm47DQotDQotICAgIG5vZGVMaXN0LnB1c2hfYmFjayhuZXdOb2RlKTsNCi19DQotDQotLyoqIHNlZSBOb2RlTGlzdEltcGwuaCovDQotY29uc3QgTm9kZUltcGwqIE5vZGVMaXN0SW1wbDo6aXRlbShpbnQgaW5kZXgpIGNvbnN0DQotew0KLSAgICBpbnQgc2l6ZSA9IG5vZGVMaXN0LnNpemUoKTsNCi0NCi0gICAgaWYgKHNpemUgPT0gMCB8fCBpbmRleCA+IHNpemUgLSAxIHx8IGluZGV4IDwgMCkNCi0gICAgICAgIHJldHVybiBOVUxMOw0KLQ0KLSAgICByZXR1cm4gbm9kZUxpc3QuYXQoaW5kZXgpOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVMaXN0SW1wbC5oKi8NCi1pbnQgTm9kZUxpc3RJbXBsOjpnZXRMZW5ndGgoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIG5vZGVMaXN0LnNpemUoKTsNCi19DQotDQotLyoqIHNlZSBOb2RlTGlzdEltcGwuaCovDQotTm9kZUxpc3RJbXBsOjp+Tm9kZUxpc3RJbXBsKCkNCi17DQotICAgIG5vZGVMaXN0LmNsZWFyKCk7DQotfQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvVGV4dEltcGwuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9UZXh0SW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNDIxZDUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9UZXh0SW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvVGV4dEltcGwuaD4NCi0NCi1jb25zdCBET01TdHJpbmcgVGV4dEltcGw6Om5vZGVOYW1lID0gIiNURVhUIjsNCi0NCi0vKiogc2VlIFRleHRJbXBsLmggKi8NCi1UZXh0SW1wbDo6VGV4dEltcGwoKQ0KLXsNCi19DQotDQotLyoqIHNlZSBUZXh0SW1wbC5oICovDQotVGV4dEltcGw6OlRleHRJbXBsKGNvbnN0IERPTVN0cmluZyogZGF0YSk6Q2hhcmFjdGVyRGF0YUltcGwoZGF0YSkNCi17DQotfQ0KLQ0KLS8qKiBzZWUgVGV4dEltcGwuaCAqLw0KLU5vZGVUeXBlIFRleHRJbXBsOjpnZXROb2RlVHlwZSgpIGNvbnN0DQotew0KLSAgICByZXR1cm4gVEVYVF9OT0RFOw0KLX0NCi0NCi0vKiogc2VlIFRleHRJbXBsLmggKi8NCi1jb25zdCBET01TdHJpbmcqIFRleHRJbXBsOjpnZXROb2RlTmFtZSgpIGNvbnN0DQotew0KLSAgICByZXR1cm4gJm5vZGVOYW1lOw0KLX0NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9ia3RyYWNlLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2JrdHJhY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTY2NDYzLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2JrdHJhY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDYgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBia3RyYWNlLmNjCi0vLwotCi0jaW5jbHVkZSAiYmt0cmFjZS5oIgotI2luY2x1ZGUgInNvc3RyZWFtLmgiCi0jaW5jbHVkZSAibWlzdHJlYW0uaCIKLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaWYgbGludXggJiYgX19HTlVDX18gJiYgIWRlZmluZWQoSEFWRV9BTkRST0lEX09TKQotICAgICNpbmNsdWRlIDxleGVjaW5mby5oPgotI2Vsc2UKLSAgICBzdGF0aWMgaW5saW5lIGludCBiYWNrdHJhY2UgKHZvaWQqKiwgaW50KQkJCXsgcmV0dXJuICgwKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgY2hhcioqIGJhY2t0cmFjZV9zeW1ib2xzICh2b2lkKiBjb25zdCosIGludCkJeyByZXR1cm4gKE5VTEwpOyB9Ci0jZW5kaWYKLSNpZiBfX0dOVUNfXyA+PSAzICYmICFQTEFURk9STV9BTkRST0lECi0gICAgI2luY2x1ZGUgPGN4eGFiaS5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIERlZmF1bHQgY29uc3RydWN0b3IuIFRoZSBiYWNrdHJhY2UgaXMgb2J0YWluZWQgaGVyZS4KLUNCYWNrdHJhY2U6OkNCYWNrdHJhY2UgKHZvaWQpCi06IG1fU3ltYm9scyAoTlVMTCksCi0gIG1fbkZyYW1lcyAoMCksCi0gIG1fU3ltYm9sc1NpemUgKDApCi17Ci0jaWYgIVBMQVRGT1JNX0FORFJPSUQKLSAgICB0cnkgewotI2VuZGlmCi0JbV9uRnJhbWVzID0gYmFja3RyYWNlIChWZWN0b3JCbG9jayAobV9BZGRyZXNzZXMpKTsKLQlHZXRTeW1ib2xzKCk7Ci0jaWYgIVBMQVRGT1JNX0FORFJPSUQKLSAgICB9IGNhdGNoICguLi4pIHt9Ci0jZW5kaWYKLX0KLQotLy8vIENvcHkgY29uc3RydWN0b3IuCi1DQmFja3RyYWNlOjpDQmFja3RyYWNlIChjb25zdCBDQmFja3RyYWNlJiB2KQotOiBtX1N5bWJvbHMgKE5VTEwpLAotICBtX25GcmFtZXMgKDApLAotICBtX1N5bWJvbHNTaXplICgwKQotewotICAgIG9wZXJhdG9yPSAodik7Ci19Ci0KLS8vLyBDb3B5IG9wZXJhdG9yLgotY29uc3QgQ0JhY2t0cmFjZSYgQ0JhY2t0cmFjZTo6b3BlcmF0b3I9IChjb25zdCBDQmFja3RyYWNlJiB2KQotewotICAgIG1lbWNweSAobV9BZGRyZXNzZXMsIHYubV9BZGRyZXNzZXMsIHNpemVvZihtX0FkZHJlc3NlcykpOwotICAgIG1fU3ltYm9scyA9IHN0cmR1cCAodi5tX1N5bWJvbHMpOwotICAgIG1fbkZyYW1lcyA9IHYubV9uRnJhbWVzOwotICAgIG1fU3ltYm9sc1NpemUgPSB2Lm1fU3ltYm9sc1NpemU7Ci0gICAgcmV0dXJuICgqdGhpcyk7Ci19Ci0KLS8vLyBDb252ZXJ0cyBhIHN0cmluZyByZXR1cm5lZCBieSBiYWNrdHJhY2Vfc3ltYm9scyBpbnRvIHJlYWRhYmxlIGZvcm0uCi1zdGF0aWMgc2l6ZV90IEV4dHJhY3RBYmlOYW1lIChjb25zdCBjaGFyKiBpc3ltLCBjaGFyKiBubWJ1ZikKLXsKLSAgICAvLyBQcmVwYXJlIHRoZSBkZW1hbmdsZWQgbmFtZSwgaWYgcG9zc2libGUKLSAgICBzaXplX3Qgbm1TaXplID0gMDsKLSAgICBpZiAoaXN5bSkgewotCS8vIENvcHkgb3V0IHRoZSBuYW1lOyB0aGUgc3RyaW5ncyBhcmU6ICJmaWxlKGZ1bmN0aW9uKzB4NDIpIFsweEFkZHJlc3NdIgotCWNvbnN0IGNoYXIqIG1uU3RhcnQgPSBzdHJjaHIgKGlzeW0sICcoJyk7Ci0JaWYgKCsrbW5TdGFydCA9PSAoY29uc3QgY2hhciopKDEpKQotCSAgICBtblN0YXJ0ID0gaXN5bTsKLQljb25zdCBjaGFyKiBtbkVuZCA9IHN0cmNociAoaXN5bSwgJysnKTsKLQljb25zdCBjaGFyKiBpc3ltRW5kID0gaXN5bSArIHN0cmxlbiAoaXN5bSk7Ci0JaWYgKCFtbkVuZCkKLQkgICAgbW5FbmQgPSBpc3ltRW5kOwotCW5tU2l6ZSA9IG1pbiAoc2l6ZV90IChkaXN0YW5jZSAobW5TdGFydCwgbW5FbmQpKSwgMjU2VSk7Ci0JbWVtY3B5IChubWJ1ZiwgbW5TdGFydCwgbm1TaXplKTsKLSAgICB9Ci0gICAgbm1idWZbbm1TaXplXSA9IDA7Ci0gICAgLy8gRGVtYW5nbGUKLSAgICBkZW1hbmdsZV90eXBlX25hbWUgKG5tYnVmLCAyNTZVLCAmbm1TaXplKTsKLSAgICByZXR1cm4gKG5tU2l6ZSk7Ci19Ci0KLS8vLyBUcmllcyB0byBnZXQgc3ltYm9sIGluZm9ybWF0aW9uIGZvciB0aGUgYWRkcmVzc2VzLgotdm9pZCBDQmFja3RyYWNlOjpHZXRTeW1ib2xzICh2b2lkKQotewotICAgIGF1dG9fcHRyPGNoYXIqPiBzeW1ib2xzIChiYWNrdHJhY2Vfc3ltYm9scyAobV9BZGRyZXNzZXMsIG1fbkZyYW1lcykpOwotICAgIGlmICghc3ltYm9scy5nZXQoKSkKLQlyZXR1cm47Ci0gICAgY2hhciBubWJ1ZiBbMjU2XTsKLSAgICBzaXplX3Qgc3ltU2l6ZSA9IDE7Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBtX25GcmFtZXM7ICsrIGkpCi0Jc3ltU2l6ZSArPSBFeHRyYWN0QWJpTmFtZSAoc3ltYm9scy5nZXQoKVtpXSwgbm1idWYpICsgMTsKLSAgICBpZiAoIShtX1N5bWJvbHMgPSAoY2hhciopIGNhbGxvYyAoc3ltU2l6ZSwgMSkpKQotCXJldHVybjsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgbV9TeW1ib2xzU2l6ZSA8IHN5bVNpemUgLSAxOyArKyBpKSB7Ci0Jc2l6ZV90IHN6ID0gRXh0cmFjdEFiaU5hbWUgKHN5bWJvbHMuZ2V0KClbaV0sIG5tYnVmKTsKLQltZW1jcHkgKG1fU3ltYm9scyArIG1fU3ltYm9sc1NpemUsIG5tYnVmLCBzeik7Ci0JbV9TeW1ib2xzU2l6ZSArPSBzeiArIDE7Ci0JbV9TeW1ib2xzIFttX1N5bWJvbHNTaXplIC0gMV0gPSAnXG4nOwotICAgIH0KLX0KLQotLy8vIERlZmF1bHQgZGVzdHJ1Y3Rvci4KLUNCYWNrdHJhY2U6On5DQmFja3RyYWNlICh2b2lkKQotewotICAgIGZyZWVfbnVsbG9rIChtX1N5bWJvbHMpOwotfQotCi0jaWYgU0laRV9PRl9MT05HID09IDgKLSAgICAjZGVmaW5lIEFERFJFU1NfRk1UCSIlMTZwICAiCi0jZWxzZQotICAgICNkZWZpbmUgQUREUkVTU19GTVQJIiU4cCAgIgotI2VuZGlmCi0KLS8vLyBQcmludHMgdGhlIGJhY2t0cmFjZSB0byBccCBvcy4KLXZvaWQgQ0JhY2t0cmFjZTo6dGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgY29uc3QgY2hhciAqc3MgPSBtX1N5bWJvbHMsICpzZTsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IG1fbkZyYW1lczsgKysgaSkgewotCW9zLmZvcm1hdCAoQUREUkVTU19GTVQsIG1fQWRkcmVzc2VzW2ldKTsKLQlzZSA9IHN0cmNociAoc3MsICdcbicpICsgMTsKLQlvcy53cml0ZSAoc3MsIGRpc3RhbmNlIChzcywgc2UpKTsKLQlzcyA9IHNlOwotICAgIH0KLX0KLQotLy8vIFJlYWRzIHRoZSBvYmplY3QgZnJvbSBzdHJlYW0gXHAgaXMuCi12b2lkIENCYWNrdHJhY2U6OnJlYWQgKGlzdHJlYW0mIGlzKQotewotICAgIGFzc2VydCAoaXMuYWxpZ25lZCAoYWxpZ25vZiAobV9BZGRyZXNzZXNbMF0pKSAmJiAiQmFja3RyYWNlIG9iamVjdCBjb250YWlucyBwb2ludGVycyBhbmQgbXVzdCBiZSB2b2lkKiBhbGlnbmVkIik7Ci0gICAgaXMgPj4gbV9uRnJhbWVzID4+IG1fU3ltYm9sc1NpemU7Ci0gICAgZnJlZV9udWxsb2sgKG1fU3ltYm9scyk7Ci0gICAgbV9TeW1ib2xzID0gKGNoYXIqKSBtYWxsb2MgKG1fU3ltYm9sc1NpemUgKyAxKTsKLSAgICBpcy5yZWFkIChtX1N5bWJvbHMsIG1fU3ltYm9sc1NpemUpOwotICAgIG1fU3ltYm9scyBbbV9TeW1ib2xzU2l6ZV0gPSAwOwotICAgIGlzLmFsaWduKCk7Ci0gICAgaXMucmVhZCAobV9BZGRyZXNzZXMsIG1fbkZyYW1lcyAqIHNpemVvZih2b2lkKikpOwotfQotCi0vLy8gV3JpdGVzIHRoZSBvYmplY3QgdG8gc3RyZWFtIFxwIG9zLgotdm9pZCBDQmFja3RyYWNlOjp3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0IChvcy5hbGlnbmVkIChhbGlnbm9mIChtX0FkZHJlc3Nlc1swXSkpICYmICJCYWNrdHJhY2Ugb2JqZWN0IGNvbnRhaW5zIHBvaW50ZXJzIGFuZCBtdXN0IGJlIHZvaWQqIGFsaWduZWQiKTsKLSAgICBvcyA8PCBtX25GcmFtZXMgPDwgbV9TeW1ib2xzU2l6ZTsKLSAgICBvcy53cml0ZSAobV9TeW1ib2xzLCBtX1N5bWJvbHNTaXplKTsKLSAgICBvcy5hbGlnbigpOwotICAgIG9zLndyaXRlIChtX0FkZHJlc3NlcywgbV9uRnJhbWVzICogc2l6ZW9mKHZvaWQqKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB3cml0dGVuIG9iamVjdC4KLXNpemVfdCBDQmFja3RyYWNlOjpzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gKEFsaWduIChzdHJlYW1fc2l6ZV9vZiAobV9uRnJhbWVzKSArCi0JCSAgIHN0cmVhbV9zaXplX29mIChtX1N5bWJvbHNTaXplKSArCi0JCSAgIG1fbkZyYW1lcyAqIHNpemVvZih2b2lkKikgKwotCQkgICBtX1N5bWJvbHNTaXplKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvYmt0cmFjZS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvYmt0cmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjhjMGVhLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2JrdHJhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDYgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBia3RyYWNlLmgKLS8vCi0KLSNpZm5kZWYgQktUUkFDRV9IXzYzQUJCMUU0Mzg4Q0VERDk3NURCRTU4QjU3REU0NzRGCi0jZGVmaW5lIEJLVFJBQ0VfSF82M0FCQjFFNDM4OENFREQ5NzVEQkU1OEI1N0RFNDc0RgotCi0jaW5jbHVkZSAidWxpbWl0cy5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLWNsYXNzIG9zdHJpbmdzdHJlYW07Ci1jbGFzcyBpc3RyZWFtOwotY2xhc3Mgb3N0cmVhbTsKLQotLy8vIFxjbGFzcyBDQmFja3RyYWNlIGJrdHJhY2UuaCB1c3RsLmgKLS8vLwotLy8vIFxicmllZiBTdG9yZXMgdGhlIGJhY2t0cmFjZSBmcm9tIHRoZSBwb2ludCBvZiBjb25zdHJ1Y3Rpb24uCi0vLy8KLS8vLyBUaGUgYmFja3RyYWNlLCBvciBjYWxsc3RhY2ssIGlzIHRoZSBsaXN0aW5nIG9mIGZ1bmN0aW9ucyBjYWxsZWQgdG8KLS8vLyByZWFjaCB0aGUgY29uc3RydWN0aW9uIG9mIHRoaXMgb2JqZWN0LiBUaGlzIGlzIHVzZWZ1bCBmb3IgZGVidWdnaW5nLAotLy8vIHRvIHByaW50IHRoZSBsb2NhdGlvbiBvZiBhbiBlcnJvci4gVG8gZ2V0IG1lYW5pbmdmdWwgb3V0cHV0IHlvdSdsbAotLy8vIG5lZWQgdG8gdXNlIGEgZGVidWcgYnVpbGQgd2l0aCBzeW1ib2xzIGFuZCB3aXRoIGZyYW1lIHBvaW50ZXJzLiBGb3IKLS8vLyBHTlUgbGQgeW91IHdpbGwgYWxzbyBuZWVkIHRvIGxpbmsgd2l0aCB0aGUgLXJkeW5hbWljIG9wdGlvbiB0byBzZWUKLS8vLyBhY3R1YWwgZnVuY3Rpb24gbmFtZXMgaW5zdGVhZCBvZiBfX2d4eF9wZXJzb25hbGl0eTArMHhGNDgwMC4KLS8vLwotY2xhc3MgQ0JhY2t0cmFjZSB7Ci1wdWJsaWM6Ci0JCQlDQmFja3RyYWNlICh2b2lkKTsKLQkJCUNCYWNrdHJhY2UgKGNvbnN0IENCYWNrdHJhY2UmIHYpOwotCQkgICAgICAgfkNCYWNrdHJhY2UgKHZvaWQpOwotICAgIGNvbnN0IENCYWNrdHJhY2UmCW9wZXJhdG9yPSAoY29uc3QgQ0JhY2t0cmFjZSYgdik7Ci0gICAgdm9pZAkJdGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIHZvaWQJCXJlYWQgKGlzdHJlYW0mIGlzKTsKLSAgICB2b2lkCQl3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIHNpemVfdAkJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0OwotcHJpdmF0ZToKLSAgICB2b2lkCQlHZXRTeW1ib2xzICh2b2lkKTsKLXByaXZhdGU6Ci0gICAgdm9pZCoJCW1fQWRkcmVzc2VzIFs2NF07CS8vLzwgQWRkcmVzc2VzIG9mIGVhY2ggZnVuY3Rpb24gb24gdGhlIHN0YWNrLgotICAgIGNoYXIqCQltX1N5bWJvbHM7CQkvLy88IFN5bWJvbHMgY29ycmVzcG9uZGluZyB0byBlYWNoIGFkZHJlc3MuCi0gICAgdWludDMyX3QJCW1fbkZyYW1lczsJCS8vLzwgTnVtYmVyIG9mIGFkZHJlc3NlcyBpbiBtX0FkZHJlc3Nlcy4KLSAgICB1aW50MzJfdAkJbV9TeW1ib2xzU2l6ZTsJCS8vLzwgU2l6ZSBvZiBtX1N5bWJvbHMuCi19OwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLUFMSUdOT0YodXN0bDo6Q0JhY2t0cmFjZSwgc2l6ZW9mKHZvaWQqKSkKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2JzY29uZi5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvYnNjb25mLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YjRhZjEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvYnNjb25mLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgYnNjb25mIC0gYSBjb25maWd1cmUgcmVwbGFjZW1lbnQuCi0gKgotICogVGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHVzZWQgYnkgYnNjb25mLmMgdG8gc3BlY2lmeSBpbmZvcm1hdGlvbgotICogc3BlY2lmaWMgdG8geW91ciBwcm9qZWN0IHRoYXQgaXQgbmVlZHMgdG8gc3Vic3RpdHV0ZSBpbnRvIGZpbGVzIGxpc3RlZAotICogaW4gZ19GaWxlcy4gQmVpbmcgYSBjb25maWd1cmF0aW9uIGZpbGUsIHRoaXMgZmlsZSBjYW4gYmUgdXNlZCBvcgotICogbW9kaWZpZWQgZW50aXJlbHkgd2l0aG91dCByZXN0cmljdGlvbi4gWW91IHNob3VsZCBjaGFuZ2UgYWxsIHZhbHVlcwotICogYXBwcm9wcmlhdGVseSB0byB0aGUgbmFtZSBvZiB5b3VyIHByb2plY3QgYW5kIGl0cyByZXF1aXJlbWVudHMuIFRoZQotICogYnNjb25mIGxpY2Vuc2UgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBmaWxlLiBJdCBjYW4gYW5kIHNob3VsZCBiZQotICogdHJlYXRlZCBhcyBhIHRlbXBsYXRlIGZvciB0aGUgY3JlYXRpb24gb2YgeW91ciBvd24gY29uZmlndXJhdGlvbiBmaWxlLgotICoKLSAqIEFsbCBzdWJzdGl0dXRlZCB2YXJpYWJsZSBuYW1lcyBhcmUgZ2l2ZW4gd2l0aG91dCBlbmNsb3NpbmcgQEAuIEZvcgotICogZXhhbXBsZTogIkNDIiB3aWxsIG1hdGNoICJAQ0NAIiBpbiBjb25maWcuaC5pbiBhbmQgcmVwbGFjZSBpdCB3aXRoCi0gKiAiZ2NjIiBpbiBjb25maWcuaC4KLSovCi0KLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0KLSNkZWZpbmUgQlNDT05GX1ZFUlNJT04JCTB4MDMKLQotI2RlZmluZSBQQUNLQUdFX05BTUUJCSJ1c3RsIgotI2RlZmluZSBMSUJfTUFKT1IJCSIxIgotI2RlZmluZSBMSUJfTUlOT1IJCSIwIgotI2RlZmluZSBMSUJfQlVJTEQJCSIwIgotCi0jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTgkJTElCX01BSk9SICIuIiBMSUJfTUlOT1IKLSNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FCQlQQUNLQUdFX05BTUUKLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcJCVBBQ0tBR0VfTkFNRSAiICIgUEFDS0FHRV9WRVJTSU9OCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUCSJNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IgotCi1zdGF0aWMgY3BjaGFyX3QgZ19GaWxlcyBbXSA9IHsKLSAgICAiQ29uZmlnLm1rIiwKLSAgICAiY29uZmlnLmgiLAotICAgICJ1c3RsLnNwZWMiCi19OwotCi0vKiBWYWx1ZXMgc3Vic3RpdHV0ZSBAVkFSTkFNRUAgKi8KLXN0YXRpYyBjcGNoYXJfdCBnX0VudlZhcnMgW10gPSB7Ci0gICAgIkNDIiwKLSAgICAiTEQiLAotICAgICJDWFgiLAotICAgICJDUFAiLAotICAgICJIT01FIiwKLSAgICAiQ1hYRkxBR1MiLAotICAgICJMREZMQUdTIiwKLSAgICAiQ1BQRkxBR1MiLAotICAgICJMREZMQUdTIiwKLSAgICAiQ0ZMQUdTIgotfTsKLQotLyogIFZBUklBQkxFCVBST0dSQU0JCUhPVyBUTyBDQUxMCUlGIE5PVCBGT1VORCAqLwotc3RhdGljIGNwY2hhcl90IGdfUHJvZ1ZhcnMgW10gPSB7Ci0gICAgIkNDIiwJImdjYyIsCQkiZ2NjIiwJCSJAQ0NAIiwKLSAgICAiQ0MiLAkiY2MiLAkJImNjIiwJCSJnY2MiLAotICAgICJDWFgiLAkiZysrIiwJCSJnKysiLAkJIkBDWFhAIiwKLSAgICAiQ1hYIiwJImMrKyIsCQkiYysrIiwJCSJnKysiLAotICAgICJMRCIsCSJsZCIsCQkibGQiLAkJImxkIiwKLSAgICAiQVIiLAkiYXIiLAkJImFyIiwJCSJlY2hvIiwKLSAgICAiUkFOTElCIiwJInJhbmxpYiIsCSJyYW5saWIiLAkidG91Y2giLAotICAgICJET1hZR0VOIiwJImRveHlnZW4iLAkiZG94eWdlbiIsCSJlY2hvIiwKLSAgICAiSU5TVEFMTCIsCSJpbnN0YWxsIiwJImluc3RhbGwgLWMiLAkiY3AiCi19OwotCi0vKiAgIE5BTUUgICAgICAgICAgICAgICBJRiBOT1QgRk9VTkQgICAgICAgICAgICAgICAgICAgIElGIEZPVU5EICovCi1zdGF0aWMgY3BjaGFyX3QJZ19IZWFkZXJzIFtdID0gewotICAgICJhc3NlcnQuaCIsCQkiI3VuZGVmIEhBVkVfQVNTRVJUX0giLAkJIiNkZWZpbmUgSEFWRV9BU1NFUlRfSCAxIiwKLSAgICAiY3R5cGUuaCIsCQkiI3VuZGVmIEhBVkVfQ1RZUEVfSCIsCQkiI2RlZmluZSBIQVZFX0NUWVBFX0ggMSIsCi0gICAgImVycm5vLmgiLAkJIiN1bmRlZiBIQVZFX0VSUk5PX0giLAkJIiNkZWZpbmUgSEFWRV9FUlJOT19IIDEiLAotICAgICJmY250bC5oIiwJCSIjdW5kZWYgSEFWRV9GQ05UTF9IIiwJCSIjZGVmaW5lIEhBVkVfRkNOVExfSCAxIiwKLSAgICAiZmxvYXQuaCIsCQkiI3VuZGVmIEhBVkVfRkxPQVRfSCIsCQkiI2RlZmluZSBIQVZFX0ZMT0FUX0ggMSIsCi0gICAgImludHR5cGVzLmgiLAkiI3VuZGVmIEhBVkVfSU5UVFlQRVNfSCIsCSIjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxIiwKLSAgICAibGltaXRzLmgiLAkJIiN1bmRlZiBIQVZFX0xJTUlUU19IIiwJCSIjZGVmaW5lIEhBVkVfTElNSVRTX0ggMSIsCi0gICAgImxvY2FsZS5oIiwJCSIjdW5kZWYgSEFWRV9MT0NBTEVfSCIsCQkiI2RlZmluZSBIQVZFX0xPQ0FMRV9IIDEiLAotICAgICJtYWxsb2MuaCIsCQkiI3VuZGVmIEhBVkVfTUFMTE9DX0giLAkJIiNkZWZpbmUgSEFWRV9NQUxMT0NfSCAxIiwKLSAgICAiYWxsb2NhLmgiLAkJIiN1bmRlZiBIQVZFX0FMTE9DQV9IIiwJCSIjZGVmaW5lIEhBVkVfQUxMT0NBX0ggMSIsCi0gICAgIm1lbW9yeS5oIiwJCSIjdW5kZWYgSEFWRV9NRU1PUllfSCIsCQkiI2RlZmluZSBIQVZFX01FTU9SWV9IIDEiLAotICAgICJzaWduYWwuaCIsCQkiI3VuZGVmIEhBVkVfU0lHTkFMX0giLAkJIiNkZWZpbmUgSEFWRV9TSUdOQUxfSCAxIiwKLSAgICAic3RkYXJnLmgiLAkJIiN1bmRlZiBIQVZFX1NUREFSR19IIiwJCSIjZGVmaW5lIEhBVkVfU1REQVJHX0ggMSIsCi0gICAgInN0ZGRlZi5oIiwJCSIjdW5kZWYgSEFWRV9TVERERUZfSCIsCQkiI2RlZmluZSBIQVZFX1NURERFRl9IIDEiLAotICAgICJzdGRpbnQuaCIsCQkiI3VuZGVmIEhBVkVfU1RESU5UX0giLAkJIiNkZWZpbmUgSEFWRV9TVERJTlRfSCAxIiwKLSAgICAic3RkaW8uaCIsCQkiI3VuZGVmIEhBVkVfU1RESU9fSCIsCQkiI2RlZmluZSBIQVZFX1NURElPX0ggMSIsCi0gICAgInN0ZGxpYi5oIiwJCSIjdW5kZWYgSEFWRV9TVERMSUJfSCIsCQkiI2RlZmluZSBIQVZFX1NURExJQl9IIDEiLAotICAgICJzdHJpbmcuaCIsCQkiI3VuZGVmIEhBVkVfU1RSSU5HX0giLAkJIiNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxIiwKLSAgICAic3RyaW5ncy5oIiwJIiN1bmRlZiBIQVZFX1NUUklOR1NfSCIsCSIjZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEiLAotICAgICJzeXMvc3RhdC5oIiwJIiN1bmRlZiBIQVZFX1NZU19TVEFUX0giLAkiI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMSIsCi0gICAgInN5cy90eXBlcy5oIiwJIiN1bmRlZiBIQVZFX1NZU19UWVBFU19IIiwJIiNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxIiwKLSAgICAic3lzL3dhaXQuaCIsCSIjdW5kZWYgSEFWRV9TWVNfV0FJVF9IIiwJIiNkZWZpbmUgSEFWRV9TWVNfV0FJVF9IIDEiLAotICAgICJ0aW1lLmgiLAkJIiN1bmRlZiBIQVZFX1RJTUVfSCIsCQkiI2RlZmluZSBIQVZFX1RJTUVfSCAxIiwKLSAgICAidW5pc3RkLmgiLAkJIiN1bmRlZiBIQVZFX1VOSVNURF9IIiwJCSIjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSIsCi0gICAgIm1hdGguaCIsCQkiI3VuZGVmIEhBVkVfTUFUSF9IIiwJCSIjZGVmaW5lIEhBVkVfTUFUSF9IIDEiLAotICAgICJzdGRsaWIuaCIsCQkiI3VuZGVmIEhBVkVfU1RETElCX0giLAkJIiNkZWZpbmUgSEFWRV9TVERMSUJfSCAxIgotfTsKLQotLyogICBOQU1FICAgICAgICAgICAgICAgSUYgTk9UIEZPVU5EICAgICAgICAgICAgICAgICAgICBJRiBGT1VORCAqLwotc3RhdGljIGNwY2hhcl90IGdfTGlicyBbXSA9IHsKLSAgICAic3VwYysrIiwJCSIiLAkJCQkiLWxzdXBjKysiLAotI2lmIF9fR05VQ19fID49IDQKLSAgICAiZ2NjIiwJCSItbGdjY19zIiwJCQkiLWxnY2NfcyIsCi0gICAgImdjY19laCIsCQkiIiwJCQkJIiIsCi0jZWxpZiBfX0dOVUNfXyA+PSAzCi0gICAgImdjYyIsCQkiLWxnY2NfcyIsCQkJIi1sZ2NjIiwKLSAgICAiZ2NjX2VoIiwJCSItbGdjY19zIiwJCQkiLWxnY2NfZWgiLAotI2Vsc2UKLSAgICAiZ2NjIiwJCSIiLAkJCQkiLWxnY2MiLAotICAgICJnY2NfZWgiLAkJIiIsCQkJCSIiLAotI2VuZGlmCi0gICAgIlN5c3RlbVN0dWJzIiwJIiIsCQkJCSItbFN5c3RlbVN0dWJzIiwgLyogRm9yIE1hY09TIDEwLjQrICovCi0gICAgImMiLAkJIiIsCQkJCSItbGMiCi19OwotCi0vKiAgIE5BTUUgICAgICAgICAgICAgICBJRiBOT1QgRk9VTkQgICAgICAgICAgICAgICAgICAgIElGIEZPVU5EICovCi1zdGF0aWMgY3BjaGFyX3QgZ19GdW5jdGlvbnMgW10gPSB7Ci0gICAgImF0ZXhpdCIsCQkiI3VuZGVmIEhBVkVfQVRFWElUIiwJCSIjZGVmaW5lIEhBVkVfQVRFWElUIDEiLAotICAgICJtYWxsb2MiLAkJIiN1bmRlZiBIQVZFX01BTExPQ1xuIiwJCSIjZGVmaW5lIEhBVkVfTUFMTE9DIDFcbiIsCi0gICAgIm1lbWNociIsCQkiI3VuZGVmIEhBVkVfTUVNQ0hSIiwJCSIjZGVmaW5lIEhBVkVfTUVNQ0hSIDEiLAotICAgICJtZW1tb3ZlIiwJCSIjdW5kZWYgSEFWRV9NRU1NT1ZFIiwJCSIjZGVmaW5lIEhBVkVfTUVNTU9WRSAxIiwKLSAgICAibWVtc2V0IiwJCSIjdW5kZWYgSEFWRV9NRU1TRVQiLAkJIiNkZWZpbmUgSEFWRV9NRU1TRVQgMSIsCi0gICAgInB0cmRpZmZfdCIsCSIjdW5kZWYgSEFWRV9QVFJESUZGX1QiLAkiI2RlZmluZSBIQVZFX1BUUkRJRkZfVCAxIiwKLSAgICAic3RyZXJyb3IiLAkJIiN1bmRlZiBIQVZFX1NUUkVSUk9SIiwJCSIjZGVmaW5lIEhBVkVfU1RSRVJST1IgMSIsCi0gICAgInN0cnNpZ25hbCIsCSIjdW5kZWYgSEFWRV9TVFJTSUdOQUwiLAkiI2RlZmluZSBIQVZFX1NUUlNJR05BTCAxIiwKLSAgICAic3RydG9sIiwJCSIjdW5kZWYgSEFWRV9TVFJUT0wiLAkJIiNkZWZpbmUgSEFWRV9TVFJUT0wgMSIsCi0jaWYgX19HTlVDX18gPj0gMwotICAgICJyb3VuZCIsCQkiI3VuZGVmIEhBVkVfUk9VTkQiLAkJIiNkZWZpbmUgSEFWRV9ST1VORCAxIiwKLSNlbmRpZgotICAgICJzdHJyY2hyIiwJCSIjdW5kZWYgSEFWRV9TVFJSQ0hSIiwJCSIjZGVmaW5lIEhBVkVfU1RSUkNIUiAxIiwKLSAgICAiX192YV9jb3B5IiwJIiN1bmRlZiBIQVZFX1ZBX0NPUFkiLAkJIiNkZWZpbmUgSEFWRV9WQV9DT1BZIDEiCi19OwotCi0vKiAgIE5BTUUgICAgICAgICAgICAgICBXSVRIT1VUIFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0lUSCBURVhUICovCi1zdGF0aWMgY3BjaGFyX3QgZ19Db21wb25lbnRzIFtdID0gewotICAgICJzaGFyZWQiLAkJIiNCVUlMRF9TSEFSRURcdD0gMSIsCQkJIkJVSUxEX1NIQVJFRFx0PSAxICIsCi0gICAgInN0YXRpYyIsCQkiI0JVSUxEX1NUQVRJQ1x0PSAxIiwJCQkiQlVJTERfU1RBVElDXHQ9IDEgIiwKLSAgICAiZGVidWciLAkJIiNERUJVR1x0XHQ9IDEiLAkJCSJERUJVR1x0XHQ9IDEgIiwKLSAgICAiYm91bmRzIiwJCSIjdW5kZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HIiwJIiNkZWZpbmUgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HIDEgIiwKLSAgICAiZmFzdGNvcHkiLAkJIiN1bmRlZiBXQU5UX1VOUk9MTEVEX0NPUFkiLAkJIiNkZWZpbmUgV0FOVF9VTlJPTExFRF9DT1BZIDEgIiwKLSNpZiBfX0dOVUNfXyA+PSAzICYmIChfX2kzODZfXyB8fCBfX3g4Nl82NF9fKSAmJiAhc3VuCi0gICAgIm1teCIsCQkiI3VuZGVmIFdBTlRfTU1YIiwJCQkiI2RlZmluZSBXQU5UX01NWCAxICIsCi0jZW5kaWYKLSAgICAibGlic3RkYysrIiwJIiNkZWZpbmUgV0lUSE9VVF9MSUJTVERDUFAgMSIsCQkiI3VuZGVmIFdJVEhPVVRfTElCU1REQ1BQIiwKLSAgICAibGlic3RkYysrIiwJIk5PTElCU1REQ1BQXHQ9IC1ub2RlZmF1bHRsaWJzICIsCSIjTk9MSUJTVERDUFBcdD0gLW5vZGVmYXVsdGxpYnMiCi19OwotCi0vKiBQYXJhbGxlbCB0byBnX0NvbXBvbmVudHMgKi8KLXN0YXRpYyBTQ29tcG9uZW50SW5mbyBnX0NvbXBvbmVudEluZm9zIFtWZWN0b3JTaXplKGdfQ29tcG9uZW50cykgLyAzXSA9IHsKLSAgICB7IDEsICJCdWlsZHMgdGhlIHNoYXJlZCBsaWJyYXJ5IChpZiBzdXBwb3J0ZWQgYnkgdGhlIE9TKSIgfSwKLSAgICB7IDAsICJCdWlsZHMgdGhlIHN0YXRpYyBsaWJyYXJ5IiB9LAotICAgIHsgMCwgIkNvbXBpbGVzIHRoZSBsaWJyYXJ5IHdpdGggZGVidWdnaW5nIGluZm9ybWF0aW9uIiB9LAotICAgIHsgMSwgIkRpc2FibGUgcnVudGltZSBib3VuZHMgY2hlY2tpbmcgb24gc3RyZWFtIHJlYWRzL3dyaXRlcyIgfSwKLSAgICB7IDEsICJEaXNhYmxlIHNwZWNpYWxpemF0aW9ucyBmb3IgY29weS9maWxsIiB9LAotI2lmIF9fR05VQ19fID49IDMgJiYgKF9faTM4Nl9fIHx8IF9feDg2XzY0X18pICYmICFzdW4KLSAgICB7IDEsICJEaXNhYmxlIHVzZSBvZiBNTVgvU1NFLzNkTm93ISBpbnN0cnVjdGlvbnMiIH0sCi0jZW5kaWYKLSNpZiBfX0dOVUNfXyA+PSAzCi0gICAgeyAwLCAiTGluayB3aXRoIGxpYnN0ZGMrKyIgfSwKLSAgICB7IDAsICIiIH0KLSNlbHNlCi0gICAgeyAxLCAiIiB9LAotICAgIHsgMSwgIiIgfQotI2VuZGlmCi19OwotCi0vKiBTdWJzdGl0dXRlcyBuYW1lcyBsaWtlIEBQQUNLQUdFX05BTUVAIHdpdGggdGhlIHNlY29uZCBmaWVsZCAqLwotc3RhdGljIGNwY2hhcl90IGdfQ3VzdG9tVmFycyBbXSA9IHsKLSAgICAiUEFDS0FHRV9OQU1FIiwJCVBBQ0tBR0VfTkFNRSwKLSAgICAiUEFDS0FHRV9WRVJTSU9OIiwJCVBBQ0tBR0VfVkVSU0lPTiwKLSAgICAiUEFDS0FHRV9UQVJOQU1FIiwJCVBBQ0tBR0VfVEFSTkFNRSwKLSAgICAiUEFDS0FHRV9TVFJJTkciLAkJUEFDS0FHRV9TVFJJTkcsCi0gICAgIlBBQ0tBR0VfQlVHUkVQT1JUIiwJUEFDS0FHRV9CVUdSRVBPUlQsCi0gICAgIkxJQk5BTUUiLAkJCVBBQ0tBR0VfTkFNRSwKLSAgICAiTElCX01BSk9SIiwJCUxJQl9NQUpPUiwKLSAgICAiTElCX01JTk9SIiwJCUxJQl9NSU5PUiwKLSAgICAiTElCX0JVSUxEIiwJCUxJQl9CVUlMRAotfTsKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvY21lbWxpbmsuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvY21lbWxpbmsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjUwZTlmLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NtZW1saW5rLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gY21lbWxpbmsuY2MKLS8vCi0vLyBTZWUgY21lbWxpbmsuaCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlICJjbWVtbGluay5oIgotI2luY2x1ZGUgIm9mc3RyZWFtLmgiCi0jaW5jbHVkZSAic3RybXNpemUuaCIKLSNpbmNsdWRlICJ1YWxnby5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSNpbmNsdWRlIDxzdGRpby5oPgotI3VuZGVmIENQVV9IQVNfTU1YCi0jZW5kaWYKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGJyaWVmIEF0dGFjaGVzIHRoZSBvYmplY3QgdG8gcG9pbnRlciBccCBwIG9mIHNpemUgXHAgbi4KLS8vLwotLy8vIElmIFxwIHAgaXMgTlVMTCBhbmQgXHAgbiBpcyBub24temVybywgYmFkX2FsbG9jIGlzIHRocm93biBhbmQgY3VycmVudAotLy8vIHN0YXRlIHJlbWFpbnMgdW5jaGFuZ2VkLgotLy8vCi12b2lkIGNtZW1saW5rOjpsaW5rIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikKLXsKLSAgICBpZiAoIXAgJiYgbikKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgcHJpbnRmKCJiYWQgYWxsb2NcbiIpOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLQl0aHJvdyBiYWRfYWxsb2MgKG4pOwotI2VuZGlmCi0gICAgdW5saW5rKCk7Ci0gICAgcmVsaW5rIChwLCBuKTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgb2JqZWN0IHRvIHN0cmVhbSBccCBvcwotdm9pZCBjbWVtbGluazo6d3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdAotewotICAgIGNvbnN0IHdyaXR0ZW5fc2l6ZV90eXBlIHN6IChzaXplKCkpOwotICAgIGFzc2VydCAoc3ogPT0gc2l6ZSgpICYmICJObyBzdXBwb3J0IGZvciB3cml0aW5nIG1lbWJsb2NrcyBsYXJnZXIgdGhhbiA0RyIpOwotICAgIG9zIDw8IHN6OwotICAgIG9zLndyaXRlIChjZGF0YSgpLCBzeik7Ci0gICAgb3MuYWxpZ24gKGFsaWdub2YgKHN6KSk7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIG9iamVjdCB0byBzdHJlYW0gXHAgb3MKLXZvaWQgY21lbWxpbms6OnRleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdAotewotICAgIG9zLndyaXRlIChiZWdpbigpLCByZWFkYWJsZV9zaXplKCkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHdyaXRlIHRoaXMgb2JqZWN0IHRvIGEgc3RyZWFtLgotY21lbWxpbms6OnNpemVfdHlwZSBjbWVtbGluazo6c3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0Ci17Ci0gICAgY29uc3Qgd3JpdHRlbl9zaXplX3R5cGUgc3ogKHNpemUoKSk7Ci0gICAgcmV0dXJuIChBbGlnbiAoc3RyZWFtX3NpemVfb2YgKHN6KSArIHN6LCBhbGlnbm9mKHN6KSkpOwotfQotCi0vLy8gV3JpdGVzIHRoZSBkYXRhIHRvIGZpbGUgXHAgImZpbGVuYW1lIi4KLXZvaWQgY21lbWxpbms6OndyaXRlX2ZpbGUgKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBpbnQgbW9kZSkgY29uc3QKLXsKLSAgICBmc3RyZWFtIGY7Ci0gICAgZi5leGNlcHRpb25zIChmc3RyZWFtOjphbGxiYWRiaXRzKTsKLSAgICBmLm9wZW4gKGZpbGVuYW1lLCBmc3RyZWFtOjpvdXQgfCBmc3RyZWFtOjp0cnVuYywgbW9kZSk7Ci0gICAgZi53cml0ZSAoY2RhdGEoKSwgcmVhZGFibGVfc2l6ZSgpKTsKLSAgICBmLmNsb3NlKCk7Ci19Ci0KLS8vLyBzd2FwcyB0aGUgY29udGVudHMgd2l0aCBccCBsCi12b2lkIGNtZW1saW5rOjpzd2FwIChjbWVtbGluayYgbCkKLXsKLSNpZiBDUFVfSEFTX01NWCAmJiBTSVpFX09GX1BPSU5URVIgPT0gNAotICAgIGFzbSAoCi0JIm1vdnEgJTAsICUlbW0wXG5cdCIKLQkibW92cSAlMiwgJSVtbTFcblx0IgotCSJtb3ZxICUlbW0wLCAlMlxuXHQiCi0JIm1vdnEgJSVtbTEsICUwIgotCTogIj1tIihtX0RhdGEpLCAiPW0iKG1fU2l6ZSksICI9bSIobC5tX0RhdGEpLCAiPW0iKGwubV9TaXplKQotCTogCi0JOiAibW0wIiwgIm1tMSIsICJzdCIsICJzdCgxKSIpOwotICAgIHNpbWQ6OnJlc2V0X21teCgpOwotI2VsaWYgQ1BVX0hBU19TU0UgJiYgU0laRV9PRl9QT0lOVEVSID09IDgKLSAgICBhc20gKAotCSJtb3Z1cHMgJTAsICUleG1tMFxuXHQiCi0JIm1vdnVwcyAlMiwgJSV4bW0xXG5cdCIKLQkibW92dXBzICUleG1tMCwgJTJcblx0IgotCSJtb3Z1cHMgJSV4bW0xLCAlMCIKLQk6ICI9bSIobV9EYXRhKSwgIj1tIihtX1NpemUpLCAiPW0iKGwubV9EYXRhKSwgIj1tIihsLm1fU2l6ZSkKLQk6IAotCTogInhtbTAiLCAieG1tMSIpOwotI2Vsc2UKLSAgICA6OnVzdGw6OnN3YXAgKG1fRGF0YSwgbC5tX0RhdGEpOwotICAgIDo6dXN0bDo6c3dhcCAobV9TaXplLCBsLm1fU2l6ZSk7Ci0jZW5kaWYKLX0KLQotLy8vIENvbXBhcmVzIHRvIG1lbW9yeSBibG9jayBwb2ludGVkIGJ5IGwuIFNpemUgaXMgY29tcGFyZWQgZmlyc3QuCi1ib29sIGNtZW1saW5rOjpvcGVyYXRvcj09IChjb25zdCBjbWVtbGluayYgbCkgY29uc3QKLXsKLSAgICByZXR1cm4gKGwubV9TaXplID09IG1fU2l6ZSAmJgotCSAgICAobC5tX0RhdGEgPT0gbV9EYXRhIHx8IDAgPT0gbWVtY21wIChsLm1fRGF0YSwgbV9EYXRhLCBtX1NpemUpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvY21lbWxpbmsuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NtZW1saW5rLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YTkzODguLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvY21lbWxpbmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gY21lbWxpbmsuaAotLy8KLQotI2lmbmRlZiBDTUVNTElOS19IXzdDRkFCMzJDNUM2NzMyRUQyOUIzNEVGMDBFQTQwQTEyCi0jZGVmaW5lIENNRU1MSU5LX0hfN0NGQUIzMkM1QzY3MzJFRDI5QjM0RUYwMEVBNDBBMTIKLQotI2luY2x1ZGUgInVhbGdvYmFzZS5oIgotCi0vLy8gVGhlIHVzdGwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB1c3RsIGNsYXNzZXMgYW5kIGFsZ29yaXRobXMuCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLWNsYXNzIGlzdHJlYW07Ci1jbGFzcyBvc3RyZWFtOwotY2xhc3Mgb3N0cmluZ3N0cmVhbTsKLQotLy8vIFxjbGFzcyBjbWVtbGluayBjbWVtbGluay5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIE1lbW9yeU1hbmFnZW1lbnQKLS8vLwotLy8vIFxicmllZiBBIHJlYWQtb25seSBwb2ludGVyIHRvIGEgc2l6ZWQgYmxvY2sgb2YgbWVtb3J5LgotLy8vCi0vLy8gVXNlIHRoaXMgY2xhc3MgdGhlIHdheSB5b3Ugd291bGQgYSBjb25zdCBwb2ludGVyIHRvIGFuIGFsbG9jYXRlZCB1bnN0cnVjdHVyZWQgYmxvY2suCi0vLy8gVGhlIHBvaW50ZXIgYW5kIGJsb2NrIHNpemUgYXJlIGF2YWlsYWJsZSB0aHJvdWdoIG1lbWJlciBmdW5jdGlvbnMgYW5kIGNhc3Qgb3BlcmF0b3IuCi0vLy8KLS8vLyBFeGFtcGxlIHVzYWdlOgotLy8vCi0vLy8gXGNvZGUKLS8vLyAgICAgdm9pZCogcCA9IG1hbGxvYyAoNDY3MjEpOwotLy8vICAgICBjbWVtbGluayBhLCBiOwotLy8vICAgICBhLmxpbmsgKHAsIDQ2NzIxKTsKLS8vLyAgICAgYXNzZXJ0IChhLnNpemUoKSA9PSA0NjcyMSkpOwotLy8vICAgICBiID0gYTsKLS8vLyAgICAgYXNzZXJ0IChiLnNpemUoKSA9PSA0NjcyMSkpOwotLy8vICAgICBhc3NlcnQgKGIuRGF0YUF0KDM0KSA9PSBhLkRhdGFBdCgzNCkpOwotLy8vICAgICBhc3NlcnQgKDAgPT0gbWVtY21wIChhLCBiLCAxMikpOwotLy8vIFxlbmRjb2RlCi0vLy8KLWNsYXNzIGNtZW1saW5rIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlKglwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSoJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUJCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUJCWNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHNpemVfdAkJc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdWludDMyX3QJCXdyaXR0ZW5fc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlmZl90CQlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdF9wb2ludGVyCWNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3RfaXRlcmF0b3IJaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBjb25zdCBjbWVtbGluayYJcmNzZWxmX3Q7Ci1wdWJsaWM6Ci0gICAgaW5saW5lCQljbWVtbGluayAodm9pZCkJCQkJOiBtX0RhdGEgKE5VTEwpLCBtX1NpemUgKDApIHsgfQotICAgIGlubGluZQkJY21lbWxpbmsgKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQk6IG1fRGF0YSAoY29uc3RfcG9pbnRlcihwKSksIG1fU2l6ZSAobikgeyBhc3NlcnQgKHAgfHwgIW4pOyB9Ci0gICAgaW5saW5lCQljbWVtbGluayAoY29uc3QgY21lbWxpbmsmIGwpCQk6IG1fRGF0YSAobC5tX0RhdGEpLCBtX1NpemUgKGwubV9TaXplKSB7fQotICAgIGlubGluZSB2aXJ0dWFsICAgICB+Y21lbWxpbmsgKHZvaWQpCQkJCXt9Ci0gICAgdm9pZAkJbGluayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pOwotCQkJT1ZFUkxPQURfUE9JTlRFUl9BTkRfU0laRV9UX1YyKGxpbmssIGNvbnN0IHZvaWQqKQotICAgIGlubGluZSB2b2lkCQlsaW5rIChjb25zdCBjbWVtbGluayYgbCkJeyBsaW5rIChsLmJlZ2luKCksIGwuc2l6ZSgpKTsgfQotICAgIGlubGluZSB2b2lkCQlsaW5rIChjb25zdCB2b2lkKiBmaXJzdCwgY29uc3Qgdm9pZCogbGFzdCkJeyBsaW5rIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJcmVsaW5rIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbik7Ci0gICAgaW5saW5lIHZpcnR1YWwgdm9pZAl1bmxpbmsgKHZvaWQpCQkJeyBtX0RhdGEgPSBOVUxMOyBtX1NpemUgPSAwOyB9Ci0gICAgaW5saW5lIHJjc2VsZl90CW9wZXJhdG9yPSAoY29uc3QgY21lbWxpbmsmIGwpCXsgbGluayAobCk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgYm9vbAkJb3BlcmF0b3I9PSAoY29uc3QgY21lbWxpbmsmIGwpIGNvbnN0OwotICAgIHZvaWQJCXN3YXAgKGNtZW1saW5rJiBsKTsKLSAgICBpbmxpbmUgc2l6ZV90eXBlCXNpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9TaXplKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJbWF4X3NpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoc2l6ZSgpKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJcmVhZGFibGVfc2l6ZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKHNpemUoKSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJZW1wdHkgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoIXNpemUoKSk7IH0KLSAgIGlubGluZSBjb25zdF9wb2ludGVyCWNkYXRhICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fRGF0YSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJYmVnaW4gKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoaXRlcmF0b3IgKGNkYXRhKCkpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcglpYXQgKHNpemVfdHlwZSBpKSBjb25zdAkJeyBhc3NlcnQgKGkgPD0gc2l6ZSgpKTsgcmV0dXJuIChiZWdpbigpICsgaSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGlhdCAoc2l6ZSgpKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJcmVzaXplIChzaXplX3R5cGUgbikJCXsgbV9TaXplID0gbjsgfQotICAgIGlubGluZSB2b2lkCQlyZWFkIChpc3RyZWFtJikJCQl7IGFzc2VydCAoISJ1c3RsOjpjbWVtbGluayBpcyBhIHJlYWQtb25seSBvYmplY3QuIik7IH0KLSAgICB2b2lkCQl3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIHNpemVfdHlwZQkJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0OwotICAgIHZvaWQJCXRleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdDsKLSAgICB2b2lkCQl3cml0ZV9maWxlIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgaW50IG1vZGUgPSAwNjQ0KSBjb25zdDsKLXByaXZhdGU6Ci0gICAgY29uc3RfcG9pbnRlcgltX0RhdGE7CQkvLy88IFBvaW50ZXIgdG8gdGhlIGRhdGEgYmxvY2sgKGNvbnN0KQotICAgIHNpemVfdHlwZQkJbV9TaXplOwkJLy8vPCBzaXplIG9mIHRoZSBkYXRhIGJsb2NrCi19OwotCi0vLy8gQSBmYXN0IGFsdGVybmF0aXZlIHRvIGxpbmsgd2hpY2ggY2FuIGJlIHVzZWQgd2hlbiByZWxpbmtpbmcgdG8gdGhlIHNhbWUgYmxvY2sgKGkuZS4gd2hlbiBpdCBpcyByZXNpemVkKQotaW5saW5lIHZvaWQgY21lbWxpbms6OnJlbGluayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgbV9EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdF9wb2ludGVyPihwKTsKLSAgICBtX1NpemUgPSBuOwotfQotCi0vLy8gVXNlIHdpdGggY21lbWxpbmstZGVyaXZlZCBjbGFzc2VzIHRvIGxpbmsgdG8gYSBzdGF0aWMgYXJyYXkKLSNkZWZpbmUgc3RhdGljX2xpbmsodikJbGluayAoVmVjdG9yQmxvY2sodikpCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NvbmZpZy5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZTRiN2YuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyOTYgKzAsMCBAQAotLy8gY29uZmlnLmgKLS8vCi0vLyBBdXRvZ2VuZXJhdGVkIGZyb20gY29uZmlnLmguaW4gYnkgYnNjb25mLgotLy8KLQotI2lmbmRlZiBDT05GSUdfSF8wMUUzMzY3MDYzNERBQUM3NzlFRTVGRjQxQ0NCQjM2RgotI2RlZmluZSBDT05GSUdfSF8wMUUzMzY3MDYzNERBQUM3NzlFRTVGRjQxQ0NCQjM2RgotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotCi0jaW5jbHVkZSA8dXRpbHMvRW5kaWFuLmg+Ci0KLS8vIEJ5dGUgb3JkZXIgbWFjcm9zLCBjb252ZXJ0ZWQgaW4gdXR5cGVzLmgKLSNkZWZpbmUgVVNUTF9MSVRUTEVfRU5ESUFOCV9fTElUVExFX0VORElBTgotI2RlZmluZSBVU1RMX0JJR19FTkRJQU4JCV9fQklHX0VORElBTgotI2RlZmluZSBVU1RMX0JZVEVfT1JERVIJCV9fQllURV9PUkRFUgotCi0jaWYgIWRlZmluZWQgTkRFQlVHCi0jZGVmaW5lIE5ERUJVRwotI2VuZGlmCi0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotLy8gQnl0ZSBvcmRlciBtYWNyb3MsIGNvbnZlcnRlZCBpbiB1dHlwZXMuaAotI2RlZmluZSBVU1RMX0xJVFRMRV9FTkRJQU4JNDMyMQotI2RlZmluZSBVU1RMX0JJR19FTkRJQU4JCTEyMzQKLSNkZWZpbmUgVVNUTF9CWVRFX09SREVSCQlVU1RMX0xJVFRMRV9FTkRJQU4KLSNlbmRpZgotCi0vLyBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuCi0jZGVmaW5lIFVTVExfTkFNRQkidXN0bCIKLS8vIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZpbmUgVVNUTF9TVFJJTkcJInVzdGwgMS4wIgotLy8gRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZpbmUgVVNUTF9WRVJTSU9OCTB4MTAwCi0vLyBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4KLSNkZWZpbmUgVVNUTF9CVUdSRVBPUlQJIk1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4iCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3Ugd2FudCBzdHJlYW0gb3BlcmF0aW9ucyB0byB0aHJvdyBleGNlcHRpb25zIG9uCi0vLy8gaW5zdWZmaWNpZW50IGRhdGEgb3IgaW5zdWZmaWNpZW50IHNwYWNlLiBBbGwgdGhlc2UgZXJyb3JzIHNob3VsZAotLy8vIGJlIHByZXZlbnRhYmxlIGluIG91dHB1dCBjb2RlOyB0aGUgaW5wdXQgY29kZSBzaG91bGQgdmVyaWZ5IHRoZQotLy8vIGRhdGEgaW4gYSBzZXBhcmF0ZSBzdGVwLiBJdCBzbG93cyBkb3duIHN0cmVhbSBvcGVyYXRpb25zIGEgbG90LAotLy8vIGJ1dCBpdCdzIHlvdXIgY2FsbC4gQnkgZGVmYXVsdCBvbmx5IGRlYnVnIGJ1aWxkcyB0aHJvdy4KLS8vLwotI3VuZGVmIFdBTlRfU1RSRUFNX0JPVU5EU19DSEVDS0lORwotCi0jaWYgIWRlZmluZWQoV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HKSAmJiAhZGVmaW5lZChOREVCVUcpCi0gICAgI2RlZmluZSBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcgMQotI2VuZGlmCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRob3V0IGxpYnN0ZGMrKwotI2RlZmluZSBXSVRIT1VUX0xJQlNURENQUCAxCi0KLS8vLyBEZWZpbmUgR05VIGV4dGVuc2lvbnMgaWYgdW5hdmFpbGFibGUuCi0jaWZuZGVmIF9fR05VQ19fCi0gICAgLy8vIEdDQyAoYW5kIHNvbWUgb3RoZXIgY29tcGlsZXJzKSBkZWZpbmUgJ19fYXR0cmlidXRlX18nOyB1c3RsIGlzIHVzaW5nIHRoaXMKLSAgICAvLy8gbWFjcm8gdG8gYWxlcnQgdGhlIGNvbXBpbGVyIHRvIGZsYWcgaW5jb25zaXN0ZW5jaWVzIGluIHByaW50Zi9zY2FuZi1saWtlCi0gICAgLy8vIGZ1bmN0aW9uIGNhbGxzLiAgSnVzdCBpbiBjYXNlICdfX2F0dHJpYnV0ZV9fJyBpc24ndCBkZWZpbmVkLCBtYWtlIGEgZHVtbXkuCi0gICAgLy8vIAotICAgICNpZm5kZWYgX19hdHRyaWJ1dGVfXwotCSNkZWZpbmUgX19hdHRyaWJ1dGVfXyhwKQotICAgICNlbmRpZgotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gNAotICAgICNkZWZpbmUgRExMX0VYUE9SVAkJX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSAgICAjZGVmaW5lIERMTF9MT0NBTAkJX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQotI2Vsc2UKLSAgICAjZGVmaW5lIERMTF9FWFBPUlQKLSAgICAjZGVmaW5lIERMTF9MT0NBTAotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gMyAmJiBfX2kzODZfXwotICAgIC8vLyBHQ0MgMysgc3VwcG9ydHMgdGhlIHByZWZldGNoIGRpcmVjdGl2ZSwgd2hpY2ggc29tZSBDUFVzIHVzZSB0byBpbXByb3ZlIGNhY2hpbmcKLSAgICAjZGVmaW5lIHByZWZldGNoKHAscncsbG9jKQlfX2J1aWx0aW5fcHJlZmV0Y2gocCxydyxsb2MpCi0jZWxzZQotICAgICNkZWZpbmUgcHJlZmV0Y2gocCxydyxsb2MpCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgX19HTlVDX18gPCAzCi0gICAgLy8vIF9fYWxpZ25vZl9fIHJldHVybnMgdGhlIHJlY29tbWVuZGVkIGFsaWdubWVudCBmb3IgdGhlIHR5cGUKLSAgICAjZGVmaW5lIF9fYWxpZ25vZl9fKHYpCW1pbihzaXplb2YodiksIHNpemVvZih2b2lkKikpCi0jZW5kaWYKLQotLy8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYXRleGl0JyBmdW5jdGlvbi4KLSNkZWZpbmUgSEFWRV9BVEVYSVQgMQotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxhc3NlcnQuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfQVNTRVJUX0ggMQotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxjdHlwZS5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9DVFlQRV9IIDEKLQotLy8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZXJybm8uaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfRVJSTk9fSCAxCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX0ZDTlRMX0ggMQotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmbG9hdC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9GTE9BVF9IIDEKLQotLy8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbWl0cy5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9MSU1JVFNfSCAxCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxvY2FsZS5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9MT0NBTEVfSCAxCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBoYXMgYSB3b3JraW5nIGBtYWxsb2MnIGZ1bmN0aW9uLgotI2RlZmluZSBIQVZFX01BTExPQyAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWFsbG9jLmg+IGhlYWRlciBmaWxlLgotI3VuZGVmIEhBVkVfTUFMTE9DX0gKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxhbGxvY2EuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfQUxMT0NBX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbWNocicgZnVuY3Rpb24uCi0jZGVmaW5lIEhBVkVfTUVNQ0hSIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1tb3ZlJyBmdW5jdGlvbi4KLSNkZWZpbmUgSEFWRV9NRU1NT1ZFIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbXNldCcgZnVuY3Rpb24uCi0jZGVmaW5lIEhBVkVfTUVNU0VUIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHB0cmRpZmZfdCcuCi0jZGVmaW5lIEhBVkVfUFRSRElGRl9UIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzaWduYWwuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU0lHTkFMX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgX192YV9jb3B5IGZ1bmN0aW9uCi0jZGVmaW5lIEhBVkVfVkFfQ09QWSAxCi0KLS8vIERlZmluZSB0byAxIGlmIGBzdGF0JyBoYXMgdGhlIGJ1ZyB0aGF0IGl0IHN1Y2NlZWRzIHdoZW4gZ2l2ZW4gdGhlCi0vLyB6ZXJvLWxlbmd0aCBmaWxlIG5hbWUgYXJndW1lbnQuCi0vKiAjdW5kZWYgSEFWRV9TVEFUX0VNUFRZX1NUUklOR19CVUcgKi8KLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRhcmcuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1REQVJHX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGRlZi5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TVERERUZfSCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX1NURElOVF9IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpby5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TVERJT19IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1RETElCX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmVycm9yJyBmdW5jdGlvbi4KLSNkZWZpbmUgSEFWRV9TVFJFUlJPUiAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RycmNocicgZnVuY3Rpb24uCi0jZGVmaW5lIEhBVkVfU1RSUkNIUiAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3Ryc2lnbmFsJyBmdW5jdGlvbi4KLSN1bmRlZiBIQVZFX1NUUlNJR05BTAotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvbCcgZnVuY3Rpb24uCi0jZGVmaW5lIEhBVkVfU1RSVE9MIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8c3lzL3dhaXQuaD4gdGhhdCBpcyBQT1NJWC4xIGNvbXBhdGlibGUuCi0jZGVmaW5lIEhBVkVfU1lTX1dBSVRfSCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dGltZS5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9USU1FX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9VTklTVERfSCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWF0aC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9NQVRIX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgcmludGYgZnVuY3Rpb24uIFdpbGwgdXNlIHJpbnQgb3RoZXJ3aXNlLgotI3VuZGVmIEhBVkVfUklOVEYKLQotLy8gU1REQ19IRUFERVJTIGlzIGRlZmluZWQgdG8gMSBvbiBzYW5lIHN5c3RlbXMuCi0jaWYgZGVmaW5lZChIQVZFX0FTU0VSVF9IKSAmJiBkZWZpbmVkKEhBVkVfQ1RZUEVfSCkgJiZcCi0gICAgZGVmaW5lZChIQVZFX0VSUk5PX0gpICYmIGRlZmluZWQoSEFWRV9GTE9BVF9IKSAmJlwKLSAgICBkZWZpbmVkKEhBVkVfTElNSVRTX0gpICYmIGRlZmluZWQoSEFWRV9MT0NBTEVfSCkgJiZcCi0gICAgZGVmaW5lZChIQVZFX01BVEhfSCkgJiYgZGVmaW5lZChIQVZFX1NJR05BTF9IKSAmJlwKLSAgICBkZWZpbmVkKEhBVkVfU1REQVJHX0gpICYmIGRlZmluZWQoSEFWRV9TVERERUZfSCkgJiZcCi0gICAgZGVmaW5lZChIQVZFX1NURElPX0gpICYmIGRlZmluZWQoSEFWRV9TVERMSUJfSCkgJiZcCi0gICAgZGVmaW5lZChIQVZFX1NUUklOR19IKSAmJiBkZWZpbmVkKEhBVkVfVElNRV9IKQotI2RlZmluZSBTVERDX0hFQURFUlMgMQotI2VuZGlmCi0KLS8vIFNURENfSEVBREVSUyBpcyBkZWZpbmVkIHRvIDEgb24gdW5peCBzeXN0ZW1zLgotI2lmIGRlZmluZWQoSEFWRV9GQ05UTF9IKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRfSCkgJiYgZGVmaW5lZChIQVZFX1VOSVNURF9IKQotI2RlZmluZSBTVERVTklYX0hFQURFUlMgMQotI2VuZGlmCi0KLS8vIERlZmluZSB0byAxIGlmIGBsc3RhdCcgZGVyZWZlcmVuY2VzIGEgc3ltbGluayBzcGVjaWZpZWQgd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgotI2RlZmluZSBMU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSyAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdXIgY29tcGlsZXIgdHJlYXRzIGNoYXIgYXMgYSBzZXBhcmF0ZSB0eXBlIGFsb25nIHdpdGgKLS8vIHNpZ25lZCBjaGFyIGFuZCB1bnNpZ25lZCBjaGFyLiBUaGlzIHdpbGwgY3JlYXRlIG92ZXJsb2FkcyBmb3IgY2hhci4KLSNkZWZpbmUgSEFWRV9USFJFRV9DSEFSX1RZUEVTIDEKLQotLy8gRGVmaW5lIGFzIHRoZSByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMgKGBpbnQnIG9yIGB2b2lkJykuCi0jZGVmaW5lIFJFVFNJR1RZUEUgdm9pZAotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA2NCBiaXQgdHlwZXMgYXZhaWxhYmxlCi0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBsb25nIGxvbmcgdHlwZQotI3VuZGVmIEhBVkVfTE9OR19MT05HCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSB3YW50IHVucm9sbGVkIHNwZWNpYWxpemF0aW9ucyBmb3IgZmlsbCBhbmQgY29weQotI2RlZmluZSBXQU5UX1VOUk9MTEVEX0NPUFkgMSAKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gdXNlIE1NWC9TU0UvM2ROb3chIHByb2Nlc3NvciBpbnN0cnVjdGlvbnMKLSN1bmRlZiBXQU5UX01NWAotCi0vLyBEZWZpbmUgdG8gYnl0ZSBzaXplcyBvZiB0eXBlcwotI2RlZmluZSBTSVpFX09GX0NIQVIgMQotI2RlZmluZSBTSVpFX09GX1NIT1JUIDIKLSNkZWZpbmUgU0laRV9PRl9JTlQgNAotI2RlZmluZSBTSVpFX09GX0xPTkcgNAotI2RlZmluZSBTSVpFX09GX0xPTkdfTE9ORyA4Ci0jZGVmaW5lIFNJWkVfT0ZfUE9JTlRFUiA0Ci0jZGVmaW5lIFNJWkVfT0ZfU0laRV9UIDQKLSNkZWZpbmUgU0laRV9PRl9CT09MIFNJWkVfT0ZfTE9ORwotI2lmIFNJWkVfT0ZfU0laRV9UID09IFNJWkVfT0ZfTE9ORwotI2RlZmluZSBTSVpFX1RfSVNfTE9ORyAxCi0jZWxzZQotI2RlZmluZSBTSVpFX1RfSVNfTE9ORyAwCi0jZW5kaWYKLQotLy8gRXh0ZW5kZWQgQ1BVIGNhcGFiaWxpdGllcwotI3VuZGVmIENQVV9IQVNfRlBVCi0jdW5kZWYgQ1BVX0hBU19FWFRfREVCVUcKLSN1bmRlZiBDUFVfSEFTX1RJTUVTVEFNUEMKLSN1bmRlZiBDUFVfSEFTX01TUgotI3VuZGVmIENQVV9IQVNfQ01QWENIRzgKLSN1bmRlZiBDUFVfSEFTX0FQSUMKLSN1bmRlZiBDUFVfSEFTX1NZU0NBTEwKLSN1bmRlZiBDUFVfSEFTX01UUlIKLSN1bmRlZiBDUFVfSEFTX0NNT1YKLSN1bmRlZiBDUFVfSEFTX0ZDTU9WCi0jaWYgV0FOVF9NTVgKLSN1bmRlZiBDUFVfSEFTX01NWAotI3VuZGVmIENQVV9IQVNfRlhTQVZFCi0jdW5kZWYgQ1BVX0hBU19TU0UgCi0jdW5kZWYgQ1BVX0hBU19TU0UyCi0jdW5kZWYgQ1BVX0hBU19TU0UzCi0jdW5kZWYgQ1BVX0hBU19FWFRfM0ROT1cKLSN1bmRlZiBDUFVfSEFTXzNETk9XCi0jZW5kaWYKLQotLy8gR0NDIHZlY3RvciBleHRlbnNpb25zCi0jaWYgZGVmaW5lZChDUFVfSEFTX01NWCkgfHwgZGVmaW5lZChDUFVfSEFTX1NTRSkKLSAgICAjZGVmaW5lIEhBVkVfVkVDVE9SX0VYVEVOU0lPTlMgMQotI2VuZGlmCi0KLSNpZiBDUFVfSEFTX1NTRSAmJiBkZWZpbmVkKF9fR05VQ19fKQotICAgICNkZWZpbmUgX19zc2VfYWxpZ24JX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKQotI2Vsc2UKLSAgICAjZGVmaW5lIF9fc3NlX2FsaWduCQotI2VuZGlmCi0KLS8vIERlZmluZSB0byBlbXB0eSBpZiBgY29uc3QnIGRvZXMgbm90IGNvbmZvcm0gdG8gQU5TSSBDLgotLyogI2RlZmluZSBjb25zdCAqLwotCi0vLyBEZWZpbmUgYXMgYF9faW5saW5lJyBpZiB0aGF0J3Mgd2hhdCB0aGUgQyBjb21waWxlciBjYWxscyBpdCwgb3IgdG8gbm90aGluZwotLy8gaWYgaXQgaXMgbm90IHN1cHBvcnRlZC4KLS8qICNkZWZpbmUgaW5saW5lIF9faW5saW5lICovCi0KLS8vIERlZmluZSB0byBgbG9uZycgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuCi0vKiB0eXBlZGVmIGxvbmcgb2ZmX3Q7ICovCi0KLS8vIERlZmluZSB0byBgdW5zaWduZWQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLgotLyogdHlwZWRlZiBsb25nIHNpemVfdDsgKi8KLQotI2VuZGlmCS8vIENPTkZJR19IXzAxRTMzNjcwNjM0REFBQzc3OUVFNUZGNDFDQ0JCMzZGCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2ZzdHJlYW0uY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvZnN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2Yjk2OTEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvZnN0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODIgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIGZpbGUuY2MKLS8vCi0KLSNpbmNsdWRlICJmc3RyZWFtLmgiCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVleGNlcHRpb24uaCIKLSNpbmNsdWRlICJ1dXRpbGl0eS5oIgotCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSNpbmNsdWRlIDxzdGRpby5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIERlZmF1bHQgY29uc3RydWN0b3IuCi1mc3RyZWFtOjpmc3RyZWFtICh2b2lkKQotOiBpb3NfYmFzZSAoKSwKLSAgbV9mZCAoLTEpLAotICBtX0ZpbGVuYW1lICgpCi17Ci19Ci0KLS8vLyBPcGVucyBccCBmaWxlbmFtZSBpbiBccCBtb2RlLgotZnN0cmVhbTo6ZnN0cmVhbSAoY29uc3QgY2hhciogZmlsZW5hbWUsIG9wZW5tb2RlIG1vZGUpCi06IGlvc19iYXNlICgpLAotICBtX2ZkICgtMSksCi0gIG1fRmlsZW5hbWUgKCkKLXsKLSAgICBvcGVuIChmaWxlbmFtZSwgbW9kZSk7Ci19Ci0KLS8vLyBBdHRhY2hlcyB0byBccCBuZmQgb2YgXHAgZmlsZW5hbWUuCi1mc3RyZWFtOjpmc3RyZWFtIChpbnQgbmZkLCBjb25zdCBjaGFyKiBmaWxlbmFtZSkKLTogaW9zX2Jhc2UgKCksCi0gIG1fZmQgKC0xKSwKLSAgbV9GaWxlbmFtZSAoKQotewotICAgIGF0dGFjaCAobmZkLCBmaWxlbmFtZSk7Ci19Ci0KLS8vLyBEZXN0cnVjdG9yLiBDbG9zZXMgaWYgc3RpbGwgb3BlbiwgYnV0IHdpdGhvdXQgdGhyb3dpbmcuCi1mc3RyZWFtOjp+ZnN0cmVhbSAodm9pZCkgdGhyb3coKQotewotICAgIGNsZWFyIChnb29kYml0KTsKLSAgICBleGNlcHRpb25zIChnb29kYml0KTsKLSAgICBjbG9zZSgpOwotICAgIGFzc2VydCAoIShyZHN0YXRlKCkgJiBiYWRiaXQpICYmICJjbG9zZSBmYWlsZWQgaW4gdGhlIGRlc3RydWN0b3IhIFRoaXMgbWF5IGxlYWQgdG8gbG9zcyBvZiB1c2VyIGRhdGEuIFBsZWFzZSBjYWxsIGNsb3NlKCkgbWFudWFsbHkgYW5kIGVpdGhlciBlbmFibGUgZXhjZXB0aW9ucyBvciBjaGVjayB0aGUgYmFkYml0LiIpOwotfQotCi0vLy8gU2V0cyBzdGF0ZSBccCBzIGFuZCB0aHJvd3MgZGVwZW5kaW5nIG9uIHRoZSBleGNlcHRpb24gc2V0dGluZy4KLXZvaWQgZnN0cmVhbTo6c2V0X2FuZF90aHJvdyAoaW9zdGF0ZSBzLCBjb25zdCBjaGFyKiBvcCkKLXsKLSAgICBpZiAoaW9zX2Jhc2U6OnNldF9hbmRfdGhyb3cgKHMpKQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICAgICAgcHJpbnRmKCJmaWxlX2V4Y2VwdGlvblxuIik7Ci0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotCXRocm93IGZpbGVfZXhjZXB0aW9uIChvcCwgbmFtZSgpKTsKLSNlbmRpZgotfQotCi0vLy8gQXR0YWNoZXMgdG8gdGhlIGdpdmVuIFxwIG5mZC4KLXZvaWQgZnN0cmVhbTo6YXR0YWNoIChpbnQgbmZkLCBjb25zdCBjaGFyKiBmaWxlbmFtZSkKLXsKLSAgICBhc3NlcnQgKGZpbGVuYW1lICYmICJEb24ndCBkbyB0aGF0Iik7Ci0gICAgY2xlYXIgKGdvb2RiaXQpOwotICAgIGlmIChuZmQgPCAwICYmIGlvc19iYXNlOjpzZXRfYW5kX3Rocm93IChiYWRiaXQpKQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICAgICAgcHJpbnRmKCJmaWxlIGV4Y2VwdGlvblxuIik7Ci0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotCXRocm93IGZpbGVfZXhjZXB0aW9uICgib3BlbiIsIGZpbGVuYW1lKTsKLSNlbmRpZgotICAgIGNsb3NlKCk7Ci0gICAgbV9mZCA9IG5mZDsKLSAgICBtX0ZpbGVuYW1lID0gZmlsZW5hbWU7Ci19Ci0KLS8vLyBEZXRhY2hlcyBmcm9tIHRoZSBjdXJyZW50IGZkLgotdm9pZCBmc3RyZWFtOjpkZXRhY2ggKHZvaWQpCi17Ci0gICAgbV9mZCA9IC0xOwotICAgIG1fRmlsZW5hbWUuY2xlYXIoKTsKLX0KLQotLy8vIENvbnZlcnRzIG9wZW5tb2RlIGJpdHMgaW50byBsaWJjIG9wZW4gZmxhZ3MuCi0vKnN0YXRpYyovIGludCBmc3RyZWFtOjpvbV90b19mbGFncyAob3Blbm1vZGUgbSkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IHNfT01GbGFncyBbbm9tYml0c10gPSB7Ci0JMCwJCS8vIGluCi0JT19DUkVBVCwJLy8gb3V0Ci0JT19BUFBFTkQsCS8vIGFwcAotCU9fQVBQRU5ELAkvLyBhdGUKLQkwLAkJLy8gYmluYXJ5Ci0JT19UUlVOQywJLy8gdHJ1bmMKLQlPX05PTkJMT0NLLAkvLyBub25ibG9jawotCTAsCQkvLyBub2NyZWF0ZQotCU9fTk9DVFRZCS8vIG5vY3R0eQotICAgIH07Ci0gICAgaW50IGZsYWdzID0gKG0gLSAxKSAmIE9fQUNDTU9ERTsJLy8gaW4gYW5kIG91dAotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgVmVjdG9yU2l6ZShzX09NRmxhZ3MpOyArKyBpKQotCWlmIChtICYgKDEgPDwgaSkpCi0JICAgIGZsYWdzIHw9IHNfT01GbGFnc1tpXTsKLSAgICBpZiAobSAmIG5vY3JlYXRlKQotCWZsYWdzICY9IH5PX0NSRUFUOwotICAgIHJldHVybiAoZmxhZ3MpOwotfQotCi0vLy8gXGJyaWVmIE9wZW5zIFxwIGZpbGVuYW1lIGluIHRoZSBnaXZlbiBtb2RlLgotLy8vIFx3YXJuaW5nIFRoZSBzdHJpbmcgYXQgXHAgZmlsZW5hbWUgbXVzdCBleGlzdCB1bnRpbCB0aGUgb2JqZWN0IGlzIGNsb3NlZC4KLXZvaWQgZnN0cmVhbTo6b3BlbiAoY29uc3QgY2hhciogZmlsZW5hbWUsIG9wZW5tb2RlIG1vZGUsIG1vZGVfdCBwZXJtcykKLXsKLSAgICBpbnQgbmZkID0gOjpvcGVuIChmaWxlbmFtZSwgb21fdG9fZmxhZ3MobW9kZSksIHBlcm1zKTsKLSAgICBhdHRhY2ggKG5mZCwgZmlsZW5hbWUpOwotfQotCi0vLy8gQ2xvc2VzIHRoZSBmaWxlIGFuZCB0aHJvd3Mgb24gZXJyb3IuCi12b2lkIGZzdHJlYW06OmNsb3NlICh2b2lkKQotewotICAgIGlmIChtX2ZkID49IDAgJiYgOjpjbG9zZShtX2ZkKSkKLQlzZXRfYW5kX3Rocm93IChiYWRiaXQgfCBmYWlsYml0LCAiY2xvc2UiKTsKLSAgICBkZXRhY2goKTsKLX0KLQotLy8vIE1vdmVzIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gdG8gXHAgbi4KLW9mZl90IGZzdHJlYW06OnNlZWsgKG9mZl90IG4sIHNlZWtkaXIgd2hlbmNlKQotewotICAgIG9mZl90IHAgPSBsc2VlayAobV9mZCwgbiwgd2hlbmNlKTsKLSAgICBpZiAocCA8IDApCi0Jc2V0X2FuZF90aHJvdyAoZmFpbGJpdCwgInNlZWsiKTsKLSAgICByZXR1cm4gKHApOwotfQotCi0vLy8gUmV0dXJucyB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLgotb2ZmX3QgZnN0cmVhbTo6cG9zICh2b2lkKSBjb25zdAotewotICAgIHJldHVybiAobHNlZWsgKG1fZmQsIDAsIFNFRUtfQ1VSKSk7Ci19Ci0KLS8vLyBSZWFkcyBccCBuIGJ5dGVzIGludG8gXHAgcC4KLW9mZl90IGZzdHJlYW06OnJlYWQgKHZvaWQqIHAsIG9mZl90IG4pCi17Ci0gICAgb2ZmX3QgYnIgKDApOwotICAgIHdoaWxlIChiciA8IG4gJiYgZ29vZCgpKQotCWJyICs9IHJlYWRzb21lIChhZHZhbmNlIChwLCBiciksIG4gLSBicik7Ci0gICAgcmV0dXJuIChicik7Ci19Ci0KLS8vLyBSZWFkcyBhdCBtb3N0IFxwIG4gYnl0ZXMgaW50byBccCBwLCBzdG9wcGluZyB3aGVuIGl0IGZlZWxzIGxpa2UgaXQuCi1vZmZfdCBmc3RyZWFtOjpyZWFkc29tZSAodm9pZCogcCwgb2ZmX3QgbikKLXsKLSAgICBzc2l6ZV90IGJybjsKLSAgICBkbyB7IGJybiA9IDo6cmVhZCAobV9mZCwgcCwgbik7IH0gd2hpbGUgKGJybiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOwotICAgIGlmIChicm4gPiAwKQotCXJldHVybiAoYnJuKTsKLSAgICBpZiAoYnJuIDwgMCAmJiBlcnJubyAhPSBFQUdBSU4pCi0Jc2V0X2FuZF90aHJvdyAoZmFpbGJpdCwgInJlYWQiKTsKLSAgICBpZiAoIWJybiAmJiBpb3NfYmFzZTo6c2V0X2FuZF90aHJvdyAoZW9mYml0IHwgZmFpbGJpdCkpCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICBwcmludGYoInN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uXG4iKTsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0gICAgICAgIHRocm93IHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uICgicmVhZCIsIG5hbWUoKSwgcG9zKCksIG4sIDApOwotI2VuZGlmCi0gICAgcmV0dXJuICgwKTsKLX0KLQotLy8vIFdyaXRlcyBccCBuIGJ5dGVzIGZyb20gXHAgcC4KLW9mZl90IGZzdHJlYW06OndyaXRlIChjb25zdCB2b2lkKiBwLCBvZmZfdCBuKQotewotICAgIG9mZl90IGJ0dyAobik7Ci0gICAgd2hpbGUgKGJ0dykgewotCWNvbnN0IG9mZl90IGJ3IChuIC0gYnR3KTsKLQlzc2l6ZV90IGJ3biA9IDo6d3JpdGUgKG1fZmQsIGFkdmFuY2UocCxidyksIGJ0dyk7Ci0JaWYgKGJ3biA+IDApCi0JICAgIGJ0dyAtPSBid247Ci0JZWxzZSBpZiAoIWJ3bikgewotCSAgICBpZiAoaW9zX2Jhc2U6OnNldF9hbmRfdGhyb3cgKGVvZmJpdCB8IGZhaWxiaXQpKQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLQkgICAgICBwcmludGYoInN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uXG4iKTsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0JICAgIHRocm93IHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uICgid3JpdGUiLCBuYW1lKCksIHBvcygpIC0gYncsIG4sIGJ3KTsKLSNlbmRpZgotCSAgICBicmVhazsKLQl9IGVsc2UgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0JICAgIGlmIChlcnJubyAhPSBFQUdBSU4pCi0JCXNldF9hbmRfdGhyb3cgKGZhaWxiaXQsICJ3cml0ZSIpOwotCSAgICBicmVhazsKLQl9Ci0gICAgfQotICAgIHJldHVybiAobiAtIGJ0dyk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBmaWxlIHNpemUuCi1vZmZfdCBmc3RyZWFtOjpzaXplICh2b2lkKSBjb25zdAotewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIHN0LnN0X3NpemUgPSAwOwotICAgIHN0YXQgKHN0KTsKLSAgICByZXR1cm4gKHN0LnN0X3NpemUpOwotfQotCi0vLy8gU3luY2hyb25pemVzIHRoZSBmaWxlJ3MgZGF0YSBhbmQgc3RhdHVzIHdpdGggdGhlIGRpc2suCi12b2lkIGZzdHJlYW06OnN5bmMgKHZvaWQpCi17Ci0gICAgaWYgKGZzeW5jIChtX2ZkKSkKLQlzZXRfYW5kX3Rocm93IChmYWlsYml0LCAic3luYyIpOwotfQotCi0vLy8gR2V0IHRoZSBzdGF0IHN0cnVjdHVyZS4KLXZvaWQgZnN0cmVhbTo6c3RhdCAoc3RydWN0IHN0YXQmIHJzKSBjb25zdAotewotICAgIGlmIChmc3RhdCAobV9mZCwgJnJzKSkKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgIHByaW50ZigiZmlsZV9leGNlcHRpb25cbiIpOwotI2Vsc2UKLQl0aHJvdyBmaWxlX2V4Y2VwdGlvbiAoInN0YXQiLCBuYW1lKCkpOwotI2VuZGlmCi19Ci0KLS8vLyBDYWxscyB0aGUgZ2l2ZW4gaW9jdGwuIFVzZSBJT0NUTElEIG1hY3JvIHRvIHBhc3MgaW4gYm90aCBccCBuYW1lIGFuZCBccCByZXF1ZXN0LgotaW50IGZzdHJlYW06OmlvY3RsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIGxvbmcgYXJndW1lbnQpCi17Ci0gICAgaW50IHJ2ID0gOjppb2N0bCAobV9mZCwgcmVxdWVzdCwgYXJndW1lbnQpOwotICAgIGlmIChydiA8IDApCi0Jc2V0X2FuZF90aHJvdyAoZmFpbGJpdCwgcm5hbWUpOwotICAgIHJldHVybiAocnYpOwotfQotCi0vLy8gQ2FsbHMgdGhlIGdpdmVuIGZjbnRsLiBVc2UgRkNOVExJRCBtYWNybyB0byBwYXNzIGluIGJvdGggXHAgbmFtZSBhbmQgXHAgcmVxdWVzdC4KLWludCBmc3RyZWFtOjpmY250bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBsb25nIGFyZ3VtZW50KQotewotICAgIGludCBydiA9IDo6ZmNudGwgKG1fZmQsIHJlcXVlc3QsIGFyZ3VtZW50KTsKLSAgICBpZiAocnYgPCAwKQotCXNldF9hbmRfdGhyb3cgKGZhaWxiaXQsIHJuYW1lKTsKLSAgICByZXR1cm4gKHJ2KTsKLX0KLQotLy8vIE1lbW9yeS1tYXBzIHRoZSBmaWxlIGFuZCByZXR1cm5zIGEgbGluayB0byBpdC4KLW1lbWxpbmsgZnN0cmVhbTo6bW1hcCAob2ZmX3Qgbiwgb2ZmX3Qgb2Zmc2V0KQotewotICAgIHZvaWQqIHJlc3VsdCA9IDo6bW1hcCAoTlVMTCwgbiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgbV9mZCwgb2Zmc2V0KTsKLSAgICBpZiAocmVzdWx0ID09IE1BUF9GQUlMRUQpCi0Jc2V0X2FuZF90aHJvdyAoZmFpbGJpdCwgIm1tYXAiKTsKLSAgICByZXR1cm4gKG1lbWxpbmsgKHJlc3VsdCwgbikpOwotfQotCi0vLy8gVW5tYXBzIGEgbWVtb3J5LW1hcHBlZCBhcmVhLgotdm9pZCBmc3RyZWFtOjptdW5tYXAgKG1lbWxpbmsmIGwpCi17Ci0gICAgaWYgKDo6bXVubWFwIChsLmRhdGEoKSwgbC5zaXplKCkpKQotCXNldF9hbmRfdGhyb3cgKGZhaWxiaXQsICJtdW5tYXAiKTsKLSAgICBsLnVubGluaygpOwotfQotCi0vLy8gU3luY2hyb25pemVzIGEgbWVtb3J5LW1hcHBlZCBhcmVhLgotdm9pZCBmc3RyZWFtOjptc3luYyAobWVtbGluayYgbCkKLXsKLSAgICBpZiAoOjptc3luYyAobC5kYXRhKCksIGwuc2l6ZSgpLCBNU19BU1lOQyB8IE1TX0lOVkFMSURBVEUpKQotCXNldF9hbmRfdGhyb3cgKGZhaWxiaXQsICJtc3luYyIpOwotfQotCi12b2lkIGZzdHJlYW06OnNldF9ub25ibG9jayAoYm9vbCB2KQotewotICAgIGludCBjdXJmID0gZmNudGwgKEZDTlRMSUQgKEZfR0VURkwpKTsKLSAgICBpZiAoY3VyZiA8IDApIHJldHVybjsKLSAgICBpZiAodikgY3VyZiB8PSAgT19OT05CTE9DSzsKLSAgICBlbHNlICAgY3VyZiAmPSB+T19OT05CTE9DSzsKLSAgICBmY250bCAoRkNOVExJRCAoRl9TRVRGTCksIGN1cmYpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2ZzdHJlYW0uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2ZzdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y2MGJiZC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9mc3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gZnN0cmVhbS5oCi0vLwotCi0jaWZuZGVmIEZTVFJFQU1fSF8wNTZFMTBGNzBFQUQ0MTY0NDNFM0IzNkEyRDZCNUZBMwotI2RlZmluZSBGU1RSRUFNX0hfMDU2RTEwRjcwRUFENDE2NDQzRTNCMzZBMkQ2QjVGQTMKLQotI2luY2x1ZGUgInVpb3MuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0KLXN0cnVjdCBzdGF0OwotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgZnN0cmVhbSBmc3RyZWFtLmggdXN0bC5oCi0vLy8KLS8vLyBcYnJpZWYgSW1wbGVtZW50cyBmaWxlIG9wZXJhdGlvbnMuCi0vLy8KLS8vLyBUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBhcyBhIHN0cmVhbSwgYnV0IHJhdGhlciBhcyBhIGJhc2UgZm9yIG9uZS4gWW91Ci0vLy8gc2hvdWxkIHVzZSBpZnN0cmVhbSBvciBvZnN0cmVhbSBpZiB5b3Ugd2FudCBmbG93IG9wZXJhdG9ycy4gT3RoZXJ3aXNlCi0vLy8gdGhpcyBvbmx5IGltcGxlbWVudHMgZnVuY3Rpb25zIGZvciBiaW5hcnkgaS9vLgotLy8vCi1jbGFzcyBmc3RyZWFtIDogcHVibGljIGlvc19iYXNlIHsKLXB1YmxpYzoKLQkJCWZzdHJlYW0gKHZvaWQpOwotICAgIGV4cGxpY2l0CQlmc3RyZWFtIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgb3Blbm1vZGUgbW9kZSA9IGluIHwgb3V0KTsKLSAgICBleHBsaWNpdAkJZnN0cmVhbSAoaW50IG5mZCwgY29uc3QgY2hhciogZmlsZW5hbWUgPSBzdHJpbmc6OmVtcHR5X3N0cmluZyk7Ci0JCSAgICAgICB+ZnN0cmVhbSAodm9pZCkgdGhyb3coKTsKLSAgICB2b2lkCQlvcGVuIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgb3Blbm1vZGUgbW9kZSwgbW9kZV90IHBlcm1zID0gMDY0NCk7Ci0gICAgdm9pZAkJYXR0YWNoIChpbnQgbmZkLCBjb25zdCBjaGFyKiBmaWxlbmFtZSA9IHN0cmluZzo6ZW1wdHlfc3RyaW5nKTsKLSAgICB2b2lkCQlkZXRhY2ggKHZvaWQpOwotICAgIHZvaWQJCWNsb3NlICh2b2lkKTsKLSAgICB2b2lkCQlzeW5jICh2b2lkKTsKLSAgICBvZmZfdAkJcmVhZCAodm9pZCogcCwgb2ZmX3Qgbik7Ci0gICAgb2ZmX3QJCXJlYWRzb21lICh2b2lkKiBwLCBvZmZfdCBuKTsKLSAgICBvZmZfdAkJd3JpdGUgKGNvbnN0IHZvaWQqIHAsIG9mZl90IG4pOwotICAgIG9mZl90CQlzaXplICh2b2lkKSBjb25zdDsKLSAgICBvZmZfdAkJc2VlayAob2ZmX3Qgbiwgc2Vla2RpciB3aGVuY2UgPSBiZWcpOwotICAgIG9mZl90CQlwb3MgKHZvaWQpIGNvbnN0OwotICAgIHZvaWQJCXN0YXQgKHN0cnVjdCBzdGF0JiBycykgY29uc3Q7Ci0gICAgaW50CQkJaW9jdGwgKGNvbnN0IGNoYXIqIHJuYW1lLCBpbnQgcmVxdWVzdCwgbG9uZyBhcmd1bWVudCA9IDApOwotICAgIGlubGluZSBpbnQJCWlvY3RsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIGludCBhcmd1bWVudCkJeyByZXR1cm4gKGZzdHJlYW06OmlvY3RsIChybmFtZSwgcmVxdWVzdCwgbG9uZyhhcmd1bWVudCkpKTsgfQotICAgIGlubGluZSBpbnQJCWlvY3RsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIHZvaWQqIGFyZ3VtZW50KQl7IHJldHVybiAoZnN0cmVhbTo6aW9jdGwgKHJuYW1lLCByZXF1ZXN0LCBpbnRwdHJfdChhcmd1bWVudCkpKTsgfQotICAgIGludAkJCWZjbnRsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIGxvbmcgYXJndW1lbnQgPSAwKTsKLSAgICBpbmxpbmUgaW50CQlmY250bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBpbnQgYXJndW1lbnQpCXsgcmV0dXJuIChmc3RyZWFtOjpmY250bCAocm5hbWUsIHJlcXVlc3QsIGxvbmcoYXJndW1lbnQpKSk7IH0KLSAgICBpbmxpbmUgaW50CQlmY250bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCB2b2lkKiBhcmd1bWVudCkJeyByZXR1cm4gKGZzdHJlYW06OmZjbnRsIChybmFtZSwgcmVxdWVzdCwgaW50cHRyX3QoYXJndW1lbnQpKSk7IH0KLSAgICBtZW1saW5rCQltbWFwIChvZmZfdCBuLCBvZmZfdCBvZmZzZXQgPSAwKTsKLSAgICB2b2lkCQltdW5tYXAgKG1lbWxpbmsmIGwpOwotICAgIHZvaWQJCW1zeW5jIChtZW1saW5rJiBsKTsKLSAgICB2b2lkCQlzZXRfbm9uYmxvY2sgKGJvb2wgdiA9IHRydWUpOwotICAgIGlubGluZSBpbnQJCWZkICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fZmQpOyB9Ci0gICAgaW5saW5lIGJvb2wJCWlzX29wZW4gKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChmZCgpID49IDApOyB9Ci0gICAgaW5saW5lIG9mZl90CXRlbGxnICh2b2lkKSBjb25zdAl7IHJldHVybiAocG9zKCkpOyB9Ci0gICAgaW5saW5lIG9mZl90CXRlbGxwICh2b2lkKSBjb25zdAl7IHJldHVybiAocG9zKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXNlZWtnIChvZmZfdCBuLCBzZWVrZGlyIHdoZW5jZSA9IGJlZykJeyBzZWVrIChuLCB3aGVuY2UpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXNlZWtwIChvZmZfdCBuLCBzZWVrZGlyIHdoZW5jZSA9IGJlZykJeyBzZWVrIChuLCB3aGVuY2UpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWZsdXNoICh2b2lkKQkJeyBzeW5jKCk7IH0KLSAgICBpbmxpbmUgY29uc3Qgc3RyaW5nJiBuYW1lICh2b2lkKSBjb25zdAl7IHJldHVybiAobV9GaWxlbmFtZSk7IH0KLXByaXZhdGU6Ci0gICBETExfTE9DQUwgc3RhdGljIGludAlvbV90b19mbGFncyAob3Blbm1vZGUgbSk7Ci0gICAgRExMX0xPQ0FMIHZvaWQJc2V0X2FuZF90aHJvdyAoaW9zdGF0ZSBzLCBjb25zdCBjaGFyKiBvcCk7Ci1wcml2YXRlOgotICAgIGludAkJCW1fZmQ7CQkvLy88IEN1cnJlbnRseSBvcGVuIGZpbGUgZGVzY3JpcHRvci4KLSAgICBzdHJpbmcJCW1fRmlsZW5hbWU7CS8vLzwgQ3VycmVudGx5IG9wZW4gZmlsZW5hbWUuCi19OwotCi0vLy8gQXJndW1lbnQgbWFjcm8gZm9yIGZzdHJlYW06OmlvY3RsLiBVc2UgbGlrZSBmcy5pb2N0bCAoSU9DVExJRCAoVENHRVRTKSwgJnRzKS4KLSNkZWZpbmUgSU9DVExJRChyKQkiaW9jdGwoIiNyIikiLCByCi0jZGVmaW5lIEZDTlRMSUQocikJImZjbnRsKCIjciIpIiwgcgotCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tZW1ibG9jay5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tZW1ibG9jay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMTQzM2UuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtYmxvY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBtZW1ibG9jay5jYwotLy8KLS8vCUFsbG9jYXRlZCBtZW1vcnkgYmxvY2suCi0vLwotCi0jaW5jbHVkZSAiZnN0cmVhbS5oIgotI2luY2x1ZGUgIm1pc3RyZWFtLmgiCi0jaW5jbHVkZSAibWVtYmxvY2suaCIKLSNpbmNsdWRlICJ1YWxnby5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1bWVtb3J5LmgiCi0KLSNpbmNsdWRlIDxlcnJuby5oPgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBBbGxvY2F0ZXMgMCBieXRlcyBmb3IgdGhlIGludGVybmFsIGJsb2NrLgotbWVtYmxvY2s6Om1lbWJsb2NrICh2b2lkKQotOiBtZW1saW5rICgpLAotICBtX0NhcGFjaXR5ICgwKQotewotfQotCi0vLy8gQWxsb2NhdGVzIFxwIG4gYnl0ZXMgZm9yIHRoZSBpbnRlcm5hbCBibG9jay4KLW1lbWJsb2NrOjptZW1ibG9jayAoc2l6ZV90eXBlIG4pCi06IG1lbWxpbmsgKCksCi0gIG1fQ2FwYWNpdHkgKDApCi17Ci0gICAgcmVzaXplIChuKTsKLX0KLQotLy8vIGxpbmtzIHRvIFxwIHAsIFxwIG4uIERhdGEgY2FuIG5vdCBiZSBtb2RpZmllZCBhbmQgd2lsbCBub3QgYmUgZnJlZWQuCi1tZW1ibG9jazo6bWVtYmxvY2sgKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQotOiBtZW1saW5rICgpLAotICBtX0NhcGFjaXR5ICgwKQotewotICAgIGFzc2lnbiAocCwgbik7Ci19Ci0KLS8vLyBMaW5rcyB0byB3aGF0IFxwIGIgaXMgbGlua2VkIHRvLgotbWVtYmxvY2s6Om1lbWJsb2NrIChjb25zdCBjbWVtbGluayYgYikKLTogbWVtbGluayAoKSwKLSAgbV9DYXBhY2l0eSAoMCkKLXsKLSAgICBhc3NpZ24gKGIpOwotfQotCi0vLy8gTGlua3MgdG8gd2hhdCBccCBiIGlzIGxpbmtlZCB0by4KLW1lbWJsb2NrOjptZW1ibG9jayAoY29uc3QgbWVtbGluayYgYikKLTogbWVtbGluayAoKSwKLSAgbV9DYXBhY2l0eSAoMCkKLXsKLSAgICBhc3NpZ24gKGIpOwotfQotCi0vLy8gTGlua3MgdG8gd2hhdCBccCBiIGlzIGxpbmtlZCB0by4KLW1lbWJsb2NrOjptZW1ibG9jayAoY29uc3QgbWVtYmxvY2smIGIpCi06IG1lbWxpbmsgKCksCi0gIG1fQ2FwYWNpdHkgKDApCi17Ci0gICAgYXNzaWduIChiKTsKLX0KLQotLy8vIEZyZWVzIGludGVybmFsIGRhdGEsIGlmIGFwcHJvcHJpYXRlCi0vLy8gT25seSBpZiB0aGUgYmxvY2sgd2FzIGFsbG9jYXRlZCB1c2luZyByZXNpemUsIG9yIGxpbmtlZCB0byB1c2luZyBNYW5hZ2UsCi0vLy8gd2lsbCBpdCBiZSBmcmVlZC4gQWxzbywgRGVyaXZlZCBjbGFzc2VzIHNob3VsZCBjYWxsIERlc3RydWN0QmxvY2sgZnJvbQotLy8vIHRoZWlyIGRlc3RydWN0b3IsIGJlY2F1c2UgdXBzdHJlYW0gdmlydHVhbCBmdW5jdGlvbnMgYXJlIHVuYXZhaWxhYmxlIGF0Ci0vLy8gdGhpcyBwb2ludCBhbmQgd2lsbCBub3QgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkuCi0vLy8KLW1lbWJsb2NrOjp+bWVtYmxvY2sgKHZvaWQpCi17Ci0gICAgaWYgKCFpc19saW5rZWQoKSkKLQlkZWFsbG9jYXRlKCk7Ci19Ci0KLS8vLyByZXNpemVzIHRoZSBibG9jayB0byBccCBuZXdTaXplIGJ5dGVzLCByZWFsbG9jYXRpbmcgaWYgbmVjZXNzYXJ5Lgotdm9pZCBtZW1ibG9jazo6cmVzaXplIChzaXplX3R5cGUgbmV3U2l6ZSwgYm9vbCBiRXhhY3QpCi17Ci0gICAgaWYgKG1fQ2FwYWNpdHkgPCBuZXdTaXplICsgbWluaW11bUZyZWVDYXBhY2l0eSgpKQotCXJlc2VydmUgKG5ld1NpemUsIGJFeGFjdCk7Ci0gICAgbWVtbGluazo6cmVzaXplIChuZXdTaXplKTsKLX0KLQotLy8vIEZyZWVzIGludGVybmFsIGRhdGEuCi12b2lkIG1lbWJsb2NrOjpkZWFsbG9jYXRlICh2b2lkKSB0aHJvdygpCi17Ci0gICAgaWYgKG1fQ2FwYWNpdHkpIHsKLQlhc3NlcnQgKGNkYXRhKCkgJiYgIkludGVybmFsIGVycm9yOiBzcGFjZSBhbGxvY2F0ZWQsIGJ1dCB0aGUgcG9pbnRlciBpcyBOVUxMIik7Ci0JYXNzZXJ0IChkYXRhKCkgJiYgIkludGVybmFsIGVycm9yOiByZWFkLW9ubHkgYmxvY2sgaXMgbWFya2VkIGFzIGFsbG9jYXRlZCBzcGFjZSIpOwotCWZyZWUgKGRhdGEoKSk7Ci0gICAgfQotICAgIHVubGluaygpOwotfQotCi0vLy8gQXNzdW1lcyBjb250cm9sIG9mIHRoZSBtZW1vcnkgYmxvY2sgXHAgcCBvZiBzaXplIFxwIG4uCi0vLy8gVGhlIGJsb2NrIGFzc2lnbmVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBmcmVlZCBpbiB0aGUgZGVzdHJ1Y3Rvci4KLXZvaWQgbWVtYmxvY2s6Om1hbmFnZSAodm9pZCogcCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgYXNzZXJ0IChwIHx8ICFuKTsKLSAgICBhc3NlcnQgKCFtX0NhcGFjaXR5ICYmICJBbHJlYWR5IG1hbmFnaW5nIHNvbWV0aGluZy4gZGVhbGxvY2F0ZSBvciB1bmxpbmsgZmlyc3QuIik7Ci0gICAgbGluayAocCwgbik7Ci0gICAgbV9DYXBhY2l0eSA9IG47Ci19Ci0KLS8vLyAiSW5zdGFudGlhdGUiIGEgbGlua2VkIGJsb2NrIGJ5IGFsbG9jYXRpbmcgYW5kIGNvcHlpbmcgdGhlIGxpbmtlZCBkYXRhLgotdm9pZCBtZW1ibG9jazo6Y29weV9saW5rICh2b2lkKQotewotICAgIGNvbnN0IGNtZW1saW5rIGwgKCp0aGlzKTsKLSAgICBpZiAoaXNfbGlua2VkKCkpCi0JdW5saW5rKCk7Ci0gICAgYXNzaWduIChsKTsKLX0KLSAKLS8vLyBDb3BpZXMgZGF0YSBmcm9tIFxwIHAsIFxwIG4uCi12b2lkIG1lbWJsb2NrOjphc3NpZ24gKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQotewotICAgIGFzc2VydCAoKHAgIT0gKGNvbnN0IHZvaWQqKSBjZGF0YSgpIHx8IHNpemUoKSA9PSBuKSAmJiAiU2VsZi1hc3NpZ25tZW50IGNhbiBub3QgcmVzaXplIik7Ci0gICAgcmVzaXplIChuKTsKLSAgICBjb3B5IChwLCBuKTsKLX0KLQotLy8vIFxicmllZiBSZWFsbG9jYXRlcyBpbnRlcm5hbCBibG9jayB0byBob2xkIGF0IGxlYXN0IFxwIG5ld1NpemUgYnl0ZXMuCi0vLy8KLS8vLyBBZGRpdGlvbmFsIG1lbW9yeSBtYXkgYmUgYWxsb2NhdGVkLCBidXQgZm9yIGVmZmljaWVuY3kgaXQgaXMgYSB2ZXJ5Ci0vLy8gZ29vZCBpZGVhIHRvIGNhbGwgcmVzZXJ2ZSBiZWZvcmUgZG9pbmcgYnl0ZS1ieS1ieXRlIGVkaXQgb3BlcmF0aW9ucy4KLS8vLyBUaGUgYmxvY2sgc2l6ZSBhcyByZXR1cm5lZCBieSBzaXplKCkgaXMgbm90IGFsdGVyZWQuIHJlc2VydmUgd2lsbCBub3QKLS8vLyByZWR1Y2UgYWxsb2NhdGVkIG1lbW9yeS4gSWYgeW91IHRoaW5rIHlvdSBhcmUgd2FzdGluZyBzcGFjZSwgY2FsbAotLy8vIGRlYWxsb2NhdGUgYW5kIHN0YXJ0IG92ZXIuIFRvIGF2b2lkIHdhc3Rpbmcgc3BhY2UsIHVzZSB0aGUgYmxvY2sgZm9yCi0vLy8gb25seSBvbmUgcHVycG9zZSwgYW5kIHRyeSB0byBnZXQgdGhhdCBwdXJwb3NlIHRvIHVzZSBzaW1pbGFyIGFtb3VudHMKLS8vLyBvZiBtZW1vcnkgb24gZWFjaCBpdGVyYXRpb24uCi0vLy8KLXZvaWQgbWVtYmxvY2s6OnJlc2VydmUgKHNpemVfdHlwZSBuZXdTaXplLCBib29sIGJFeGFjdCkKLXsKLSAgICBpZiAoKG5ld1NpemUgKz0gbWluaW11bUZyZWVDYXBhY2l0eSgpKSA8PSBtX0NhcGFjaXR5KQotCXJldHVybjsKLSAgICB2b2lkKiBvbGRCbG9jayAoaXNfbGlua2VkKCkgPyBOVUxMIDogZGF0YSgpKTsKLSAgICBpZiAoIWJFeGFjdCkKLQluZXdTaXplID0gQWxpZ24gKG5ld1NpemUsIGNfUGFnZVNpemUpOwotICAgIHBvaW50ZXIgbmV3QmxvY2sgPSAocG9pbnRlcikgcmVhbGxvYyAob2xkQmxvY2ssIG5ld1NpemUpOwotICAgIGlmICghbmV3QmxvY2spCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICBwcmludGYoImJhZF9hbGxvY1xuIik7Ci0jZWxzZQotCXRocm93IGJhZF9hbGxvYyAobmV3U2l6ZSk7Ci0jZW5kaWYKLSAgICBpZiAoIW9sZEJsb2NrICYmIGNkYXRhKCkpCi0JY29weV9uIChjZGF0YSgpLCBtaW4gKHNpemUoKSArIDEsIG5ld1NpemUpLCBuZXdCbG9jayk7Ci0gICAgbGluayAobmV3QmxvY2ssIHNpemUoKSk7Ci0gICAgbV9DYXBhY2l0eSA9IG5ld1NpemU7Ci19Ci0KLS8vLyBTd2FwcyB0aGUgY29udGVudHMgd2l0aCBccCBsCi12b2lkIG1lbWJsb2NrOjpzd2FwIChtZW1ibG9jayYgbCkKLXsKLSAgICBtZW1saW5rOjpzd2FwIChsKTsKLSAgICA6OnVzdGw6OnN3YXAgKG1fQ2FwYWNpdHksIGwubV9DYXBhY2l0eSk7Ci19Ci0KLS8vLyBTaGlmdHMgdGhlIGRhdGEgaW4gdGhlIGxpbmtlZCBibG9jayBmcm9tIFxwIHN0YXJ0IHRvIFxwIHN0YXJ0ICsgXHAgbi4KLW1lbWJsb2NrOjppdGVyYXRvciBtZW1ibG9jazo6aW5zZXJ0IChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgY29uc3QgdW9mZl90IGlwID0gc3RhcnQgLSBiZWdpbigpOwotICAgIGFzc2VydCAoaXAgPD0gc2l6ZSgpKTsKLSAgICByZXNpemUgKHNpemUoKSArIG4sIGZhbHNlKTsKLSAgICBtZW1saW5rOjppbnNlcnQgKGlhdChpcCksIG4pOwotICAgIHJldHVybiAoaWF0IChpcCkpOwotfQotCi0vLy8gU2hpZnRzIHRoZSBkYXRhIGluIHRoZSBsaW5rZWQgYmxvY2sgZnJvbSBccCBzdGFydCArIFxwIG4gdG8gXHAgc3RhcnQuCi1tZW1ibG9jazo6aXRlcmF0b3IgbWVtYmxvY2s6OmVyYXNlIChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgY29uc3QgdW9mZl90IGVwID0gc3RhcnQgLSBiZWdpbigpOwotICAgIGFzc2VydCAoZXAgKyBuIDw9IHNpemUoKSk7Ci0gICAgbWVtbGluazo6ZXJhc2UgKHN0YXJ0LCBuKTsKLSAgICBtZW1saW5rOjpyZXNpemUgKHNpemUoKSAtIG4pOwotICAgIHJldHVybiAoaWF0IChlcCkpOwotfQotCi0vLy8gVW5saW5rcyBvYmplY3QuCi12b2lkIG1lbWJsb2NrOjp1bmxpbmsgKHZvaWQpCi17Ci0gICAgbWVtbGluazo6dW5saW5rKCk7Ci0gICAgbV9DYXBhY2l0eSA9IDA7Ci19Ci0KLS8vLyBSZWFkcyB0aGUgb2JqZWN0IGZyb20gc3RyZWFtIFxwIHMKLXZvaWQgbWVtYmxvY2s6OnJlYWQgKGlzdHJlYW0mIGlzKQotewotICAgIHdyaXR0ZW5fc2l6ZV90eXBlIG47Ci0gICAgaXMgPj4gbjsKLSAgICBpcy52ZXJpZnlfcmVtYWluaW5nICgicmVhZCIsICJ1c3RsOjptZW1ibG9jayIsIG4pOwotICAgIHJlc2l6ZSAobik7Ci0gICAgaXMucmVhZCAoZGF0YSgpLCB3cml0YWJsZV9zaXplKCkpOwotICAgIGlzLmFsaWduIChhbGlnbm9mIChuKSk7Ci19Ci0KLS8vLyBSZWFkcyB0aGUgZW50aXJlIGZpbGUgXHAgImZpbGVuYW1lIi4KLXZvaWQgbWVtYmxvY2s6OnJlYWRfZmlsZSAoY29uc3QgY2hhciogZmlsZW5hbWUpCi17Ci0gICAgZnN0cmVhbSBmOwotICAgIGYuZXhjZXB0aW9ucyAoZnN0cmVhbTo6YWxsYmFkYml0cyk7Ci0gICAgZi5vcGVuIChmaWxlbmFtZSwgZnN0cmVhbTo6aW4pOwotICAgIGNvbnN0IG9mZl90IGZzaXplIChmLnNpemUoKSk7Ci0gICAgcmVzZXJ2ZSAoZnNpemUpOwotICAgIGYucmVhZCAoZGF0YSgpLCBmc2l6ZSk7Ci0gICAgZi5jbG9zZSgpOwotICAgIHJlc2l6ZSAoZnNpemUpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21lbWJsb2NrLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tZW1ibG9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODVlYTBlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21lbWJsb2NrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gbWVtYmxvY2suaAotLy8KLQotI2lmbmRlZiBNRU1CTE9DS19IXzdFRDYzQTg5MTE2NENDNDM1NzhFNjM2NjRENTJBMTk2Ci0jZGVmaW5lIE1FTUJMT0NLX0hfN0VENjNBODkxMTY0Q0M0MzU3OEU2MzY2NEQ1MkExOTYKLQotI2luY2x1ZGUgIm1lbWxpbmsuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIG1lbWJsb2NrIG1lbWJsb2NrLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgTWVtb3J5TWFuYWdlbWVudAotLy8vCi0vLy8gXGJyaWVmIEFsbG9jYXRlZCBtZW1vcnkgYmxvY2suCi0vLy8KLS8vLyBBZGRzIG1lbW9yeSBtYW5hZ2VtZW50IGNhcGFiaWxpdGllcyB0byBtZW1saW5rLiBVc2VzIG1hbGxvYyBhbmQgcmVhbGxvYyB0bwotLy8vIG1haW50YWluIHRoZSBpbnRlcm5hbCBwb2ludGVyLCBidXQgb25seSBpZiBhbGxvY2F0ZWQgdXNpbmcgbWVtYmVycyBvZiB0aGlzIGNsYXNzLAotLy8vIG9yIGlmIGxpbmtlZCB0byB1c2luZyB0aGUgTWFuYWdlKCkgbWVtYmVyIGZ1bmN0aW9uLiBNYW5hZ2VkIG1lbW9yeSBpcyBhdXRvbWF0aWNhbGx5Ci0vLy8gZnJlZWQgaW4gdGhlIGRlc3RydWN0b3IuCi0vLy8KLWNsYXNzIG1lbWJsb2NrIDogcHVibGljIG1lbWxpbmsgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUJY19QYWdlU2l6ZSA9IDY0OwkvLy88IFRoZSBkZWZhdWx0IG1pbmltdW0gYWxsb2NhdGlvbiB1bml0LgotcHVibGljOgotCQkJCW1lbWJsb2NrICh2b2lkKTsKLQkJCQltZW1ibG9jayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pOwotICAgIGV4cGxpY2l0CQkJbWVtYmxvY2sgKHNpemVfdHlwZSBuKTsKLSAgICBleHBsaWNpdAkJCW1lbWJsb2NrIChjb25zdCBjbWVtbGluayYgYik7Ci0gICAgZXhwbGljaXQJCQltZW1ibG9jayAoY29uc3QgbWVtbGluayYgYik7Ci0JCQkJbWVtYmxvY2sgKGNvbnN0IG1lbWJsb2NrJiBiKTsKLSAgICB2aXJ0dWFsCQkgICAgICAgfm1lbWJsb2NrICh2b2lkKTsKLSAgICB2aXJ0dWFsIHZvaWQJCXVubGluayAodm9pZCk7Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKGNvbnN0IGNtZW1saW5rJiBsKQl7IGFzc2lnbiAobC5jZGF0YSgpLCBsLnJlYWRhYmxlX3NpemUoKSk7IH0KLSAgICBpbmxpbmUgY29uc3QgbWVtYmxvY2smCW9wZXJhdG9yPSAoY29uc3QgY21lbWxpbmsmIGwpCXsgYXNzaWduIChsKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3QgbWVtYmxvY2smCW9wZXJhdG9yPSAoY29uc3QgbWVtbGluayYgbCkJeyBhc3NpZ24gKGwpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBtZW1ibG9jayYJb3BlcmF0b3I9IChjb25zdCBtZW1ibG9jayYgbCkJeyBhc3NpZ24gKGwpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIHZvaWQJCQlhc3NpZ24gKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKTsKLSAgICB2b2lkCQkJc3dhcCAobWVtYmxvY2smIGwpOwotICAgIHZvaWQJCQlyZXNlcnZlIChzaXplX3R5cGUgbmV3U2l6ZSwgYm9vbCBiRXhhY3QgPSB0cnVlKTsKLSAgICB2b2lkCQkJcmVzaXplIChzaXplX3R5cGUgbmV3U2l6ZSwgYm9vbCBiRXhhY3QgPSB0cnVlKTsKLSAgICBpdGVyYXRvcgkJCWluc2VydCAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBzaXplKTsKLSAgICBpdGVyYXRvcgkJCWVyYXNlIChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIHNpemUpOwotICAgIGlubGluZSB2b2lkCQkJY2xlYXIgKHZvaWQpCQkJeyByZXNpemUgKDApOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlpc19saW5rZWQgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoIW1fQ2FwYWNpdHkgJiYgY2RhdGEoKSk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQltYXhfc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChpc19saW5rZWQoKSA/IG1lbWxpbms6Om1heF9zaXplKCkgOiBTSVpFX01BWCk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQljYXBhY2l0eSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX0NhcGFjaXR5KTsgfQotICAgIGlubGluZSB2b2lkCQkJbWFuYWdlIChtZW1saW5rJiBsKQkJeyBtYW5hZ2UgKGwuYmVnaW4oKSwgbC5zaXplKCkpOyB9Ci0gICAgdm9pZAkJCWRlYWxsb2NhdGUgKHZvaWQpIHRocm93KCk7Ci0gICAgdm9pZAkJCW1hbmFnZSAodm9pZCogcCwgc2l6ZV90eXBlIG4pOwotICAgIHZvaWQJCQljb3B5X2xpbmsgKHZvaWQpOwotICAgIHZvaWQJCQlyZWFkIChpc3RyZWFtJiBpcyk7Ci0gICAgdm9pZAkJCXJlYWRfZmlsZSAoY29uc3QgY2hhciogZmlsZW5hbWUpOwotcHJvdGVjdGVkOgotICAgIGlubGluZSB2aXJ0dWFsIHNpemVfdHlwZQltaW5pbXVtRnJlZUNhcGFjaXR5ICh2b2lkKSBjb25zdCB7IHJldHVybiAoMCk7IH0KLXByaXZhdGU6Ci0gICAgc2l6ZV90eXBlCQkJbV9DYXBhY2l0eTsJLy8vPCBOdW1iZXIgb2YgYnl0ZXMgYWxsb2NhdGVkIGJ5IFJlc2l6ZS4KLX07Ci0KLS8vLyBSZWFkcyBvYmplY3QgXHAgbCBmcm9tIHN0cmVhbSBccCBpcwotaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCBtZW1ibG9jayYgbCkKLXsKLSAgICBsLnJlYWQgKGlzKTsKLSAgICByZXR1cm4gKGlzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtbGluay5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tZW1saW5rLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVkNjYwMS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tZW1saW5rLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBtZW1saW5rLmNjCi0vLwotLy8JQSBwb2ludGVyIHRvIGEgc2l6ZWQgYmxvY2sgb2YgbWVtb3J5LgotLy8KLQotI2luY2x1ZGUgIm1pc3RyZWFtLmgiCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVzdGR4ZXB0LmgiCi0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBSZWFkcyB0aGUgb2JqZWN0IGZyb20gc3RyZWFtIFxwIHMKLXZvaWQgbWVtbGluazo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgd3JpdHRlbl9zaXplX3R5cGUgbjsKLSAgICBpcyA+PiBuOwotICAgIGlzLnZlcmlmeV9yZW1haW5pbmcgKCJyZWFkIiwgInVzdGw6Om1lbWxpbmsiLCBuKTsKLSAgICBpZiAobiA+IHNpemUoKSkKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgIHByaW50ZigibGVuZ3RoIGVycm9yXG4iKTsKLSNlbHNlCi0JdGhyb3cgbGVuZ3RoX2Vycm9yICgibWVtbGluayBjYW4gbm90IGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBsaW5rZWQgc3RvcmFnZSBmb3IgcmVhZGluZyIpOwotI2VuZGlmCi0gICAgcmVzaXplIChuKTsKLSAgICBpcy5yZWFkIChkYXRhKCksIG4pOwotICAgIGlzLmFsaWduIChhbGlnbm9mIChuKSk7Ci19Ci0KLS8vLyBDb3BpZXMgZGF0YSBmcm9tIFxwIHAsIFxwIG4gdG8gdGhlIGxpbmtlZCBibG9jayBzdGFydGluZyBhdCBccCBzdGFydC4KLXZvaWQgbWVtbGluazo6Y29weSAoaXRlcmF0b3Igc3RhcnQsIGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQotewotICAgIGFzc2VydCAoZGF0YSgpIHx8ICFuKTsKLSAgICBhc3NlcnQgKHAgfHwgIW4pOwotICAgIGFzc2VydCAoc3RhcnQgPj0gYmVnaW4oKSAmJiBzdGFydCArIG4gPD0gZW5kKCkpOwotICAgIGlmIChwKQotCWNvcHlfbiAoY29uc3RfaXRlcmF0b3IocCksIG4sIHN0YXJ0KTsKLX0KLQotLy8vIEZpbGxzIHRoZSBsaW5rZWQgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gcGF0dGVybi4KLS8vLyBcYXJnIHN0YXJ0ICAgT2Zmc2V0IGF0IHdoaWNoIHRvIHN0YXJ0IGZpbGxpbmcgdGhlIGxpbmtlZCBibG9jawotLy8vIFxhcmcgcCAgICAgICBQb2ludGVyIHRvIHRoZSBwYXR0ZXJuLgotLy8vIFxhcmcgZWxTaXplICBTaXplIG9mIHRoZSBwYXR0ZXJuLgotLy8vIFxhcmcgZWxDb3VudCBOdW1iZXIgb2YgdGltZXMgdG8gd3JpdGUgdGhlIHBhdHRlcm4uCi0vLy8gVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gaXMgXHAgZWxTaXplICogXHAgZWxDb3VudC4KLS8vLwotdm9pZCBtZW1saW5rOjpmaWxsIChpdGVyYXRvciBzdGFydCwgY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIGVsU2l6ZSwgc2l6ZV90eXBlIGVsQ291bnQpCi17Ci0gICAgYXNzZXJ0IChkYXRhKCkgfHwgIWVsQ291bnQgfHwgIWVsU2l6ZSk7Ci0gICAgYXNzZXJ0IChzdGFydCA+PSBiZWdpbigpICYmIHN0YXJ0ICsgZWxTaXplICogZWxDb3VudCA8PSBlbmQoKSk7Ci0gICAgaWYgKGVsU2l6ZSA9PSAxKQotCWZpbGxfbiAoc3RhcnQsIGVsQ291bnQsICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwKSk7Ci0gICAgZWxzZSB3aGlsZSAoZWxDb3VudC0tKQotCXN0YXJ0ID0gY29weV9uIChjb25zdF9pdGVyYXRvcihwKSwgZWxTaXplLCBzdGFydCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtbGluay5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtbGluay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWQ5OTI4Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21lbWxpbmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gbWVtbGluay5oCi0KLSNpZm5kZWYgTUVNTElOS19IXzc5OEQyNTgyN0M4RTMyMkQyRDdFNzM0QjE2OUZGNUZDCi0jZGVmaW5lIE1FTUxJTktfSF83OThEMjU4MjdDOEUzMjJEMkQ3RTczNEIxNjlGRjVGQwotCi0jaW5jbHVkZSAiY21lbWxpbmsuaCIKLSNpbmNsdWRlICJ1YWxnby5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIG1lbWxpbmsgbWVtbGluay5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIE1lbW9yeU1hbmFnZW1lbnQKLS8vLwotLy8vIFxicmllZiBXcmFwcGVyIGZvciBwb2ludGVyIHRvIGJsb2NrIHdpdGggc2l6ZS4KLS8vLwotLy8vIFVzZSB0aGlzIGNsYXNzIHRoZSB3YXkgeW91IHdvdWxkIGEgcG9pbnRlciB0byBhbiBhbGxvY2F0ZWQgdW5zdHJ1Y3R1cmVkIGJsb2NrLgotLy8vIFRoZSBwb2ludGVyIGFuZCBibG9jayBzaXplIGFyZSBhdmFpbGFibGUgdGhyb3VnaCBtZW1iZXIgZnVuY3Rpb25zIGFuZCBjYXN0IG9wZXJhdG9yLgotLy8vCi0vLy8gRXhhbXBsZSB1c2FnZToKLS8vLyBcY29kZQotLy8vICAgICB2b2lkKiBwID0gbWFsbG9jICg0NjcyMSk7Ci0vLy8gICAgIG1lbWxpbmsgYSwgYjsKLS8vLyAgICAgYS5saW5rIChwLCA0NjcyMSk7Ci0vLy8gICAgIGFzc2VydCAoYS5zaXplKCkgPT0gNDY3MjEpKTsKLS8vLyAgICAgYiA9IGE7Ci0vLy8gICAgIGFzc2VydCAoYi5zaXplKCkgPT0gNDY3MjEpKTsKLS8vLyAgICAgYXNzZXJ0IChiLmJlZ2luKCkgKyAzNCA9PSBhLmJlZ2luICsgMzQpOwotLy8vICAgICBhc3NlcnQgKDAgPT0gbWVtY21wIChhLCBiLCAxMikpOwotLy8vICAgICBhLmZpbGwgKDY3MywgYiwgNDIsIDY3KTsKLS8vLyAgICAgYi5lcmFzZSAoODcsIDEyKTsKLS8vLyBcZW5kY29kZQotLy8vCi1jbGFzcyBtZW1saW5rIDogcHVibGljIGNtZW1saW5rIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqCQkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNtZW1saW5rOjpwb2ludGVyCQljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgY21lbWxpbms6OmNvbnN0X2l0ZXJhdG9yCWNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgcG9pbnRlcgkJCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3QgbWVtbGluayYJCXJjc2VsZl90OwotcHVibGljOgotICAgIGlubGluZQkJbWVtbGluayAodm9pZCkJCQkJOiBjbWVtbGluaygpIHt9Ci0gICAgaW5saW5lCQltZW1saW5rICh2b2lkKiBwLCBzaXplX3R5cGUgbikJCTogY21lbWxpbmsgKHAsIG4pIHt9Ci0gICAgaW5saW5lCQltZW1saW5rIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikJOiBjbWVtbGluayAocCwgbikge30KLSAgICBpbmxpbmUJCW1lbWxpbmsgKHJjc2VsZl90IGwpCQkJOiBjbWVtbGluayAobCkge30KLSAgICBpbmxpbmUgZXhwbGljaXQJbWVtbGluayAoY29uc3QgY21lbWxpbmsmIGwpCQk6IGNtZW1saW5rIChsKSB7fQotICAgIGlubGluZSBwb2ludGVyCWRhdGEgKHZvaWQpCQkJCXsgcmV0dXJuIChjb25zdF9jYXN0PHBvaW50ZXI+KGNkYXRhKCkpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgliZWdpbiAodm9pZCkJCQkJeyByZXR1cm4gKGl0ZXJhdG9yIChkYXRhKCkpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcglpYXQgKHNpemVfdHlwZSBpKQkJCXsgYXNzZXJ0IChpIDw9IHNpemUoKSk7IHJldHVybiAoYmVnaW4oKSArIGkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCWVuZCAodm9pZCkJCQkJeyByZXR1cm4gKGlhdCAoc2l6ZSgpKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJYmVnaW4gKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoY21lbWxpbms6OmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChjbWVtbGluazo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWlhdCAoc2l6ZV90eXBlIGkpIGNvbnN0CQl7IHJldHVybiAoY21lbWxpbms6OmlhdCAoaSkpOyB9Ci0gICAgc2l6ZV90eXBlCQl3cml0YWJsZV9zaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHNpemUoKSk7IH0KLSAgICBpbmxpbmUgcmNzZWxmX3QJb3BlcmF0b3I9IChjb25zdCBjbWVtbGluayYgbCkJCXsgY21lbWxpbms6Om9wZXJhdG9yPSAobCk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHJjc2VsZl90CW9wZXJhdG9yPSAocmNzZWxmX3QgbCkJCQl7IGNtZW1saW5rOjpvcGVyYXRvcj0gKGwpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSB2b2lkCQlsaW5rIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikJeyBjbWVtbGluazo6bGluayAocCwgbik7IH0KLSAgICBpbmxpbmUgdm9pZAkJbGluayAodm9pZCogcCwgc2l6ZV90eXBlIG4pCQl7IGNtZW1saW5rOjpsaW5rIChwLCBuKTsgfQotICAgIGlubGluZSB2b2lkCQlsaW5rIChjb25zdCBjbWVtbGluayYgbCkJCXsgY21lbWxpbms6OmxpbmsgKGwpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWxpbmsgKG1lbWxpbmsmIGwpCQkJeyBjbWVtbGluazo6bGluayAobCk7IH0KLQkJCU9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihsaW5rLCB2b2lkKikKLQkJCU9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihsaW5rLCBjb25zdCB2b2lkKikKLSAgICBpbmxpbmUgdm9pZAkJbGluayAoY29uc3Qgdm9pZCogZmlyc3QsIGNvbnN0IHZvaWQqIGxhc3QpCXsgbGluayAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCwgbGFzdCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWxpbmsgKHZvaWQqIGZpcnN0LCB2b2lkKiBsYXN0KQkJeyBsaW5rIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJcmVsaW5rIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikJeyBjbWVtbGluazo6cmVsaW5rIChwLCBuKTsgfQotICAgIGlubGluZSB2b2lkCQlyZWxpbmsgKHZvaWQqIHAsIHNpemVfdHlwZSBuKQkJeyBjbWVtbGluazo6cmVsaW5rIChwLCBuKTsgfQotICAgIGlubGluZSB2b2lkCQljb3B5IChjb25zdCBjbWVtbGluayYgbCkJCXsgY29weSAoYmVnaW4oKSwgbC5jZGF0YSgpLCBsLnNpemUoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJY29weSAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pCXsgY29weSAoYmVnaW4oKSwgcCwgbik7IH0KLSAgICB2b2lkCQljb3B5IChpdGVyYXRvciBvZmZzZXQsIGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKTsKLSAgICBpbmxpbmUgdm9pZAkJc3dhcCAobWVtbGluayYgbCkJCQl7IGNtZW1saW5rOjpzd2FwIChsKTsgfQotICAgIHZvaWQJCWZpbGwgKGl0ZXJhdG9yIHN0YXJ0LCBjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgZWxzaXplLCBzaXplX3R5cGUgZWxDb3VudCA9IDEpOwotICAgIGlubGluZSB2b2lkCQlpbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBzaXplX3R5cGUgc2l6ZSk7Ci0gICAgaW5saW5lIHZvaWQJCWVyYXNlIChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIHNpemUpOwotICAgIHZvaWQJCXJlYWQgKGlzdHJlYW0mIGlzKTsKLX07Ci0KLS8vLyBTaGlmdHMgdGhlIGRhdGEgaW4gdGhlIGxpbmtlZCBibG9jayBmcm9tIFxwIHN0YXJ0IHRvIFxwIHN0YXJ0ICsgXHAgbi4KLS8vLyBUaGUgY29udGVudHMgb2YgdGhlIHVuY292ZXJlZCBieXRlcyBpcyB1bmRlZmluZWQuCi1pbmxpbmUgdm9pZCBtZW1saW5rOjppbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBzaXplX3R5cGUgbikKLXsKLSAgICBhc3NlcnQgKGRhdGEoKSB8fCAhbik7Ci0gICAgYXNzZXJ0IChjbWVtbGluazo6YmVnaW4oKSB8fCAhbik7Ci0gICAgYXNzZXJ0IChzdGFydCA+PSBiZWdpbigpICYmIHN0YXJ0ICsgbiA8PSBlbmQoKSk7Ci0gICAgcm90YXRlIChzdGFydCwgZW5kKCkgLSBuLCBlbmQoKSk7Ci19Ci0KLS8vLyBTaGlmdHMgdGhlIGRhdGEgaW4gdGhlIGxpbmtlZCBibG9jayBmcm9tIFxwIHN0YXJ0ICsgXHAgbiB0byBccCBzdGFydC4KLS8vLyBUaGUgY29udGVudHMgb2YgdGhlIHVuY292ZXJlZCBieXRlcyBpcyB1bmRlZmluZWQuCi1pbmxpbmUgdm9pZCBtZW1saW5rOjplcmFzZSAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBuKQotewotICAgIGFzc2VydCAoZGF0YSgpIHx8ICFuKTsKLSAgICBhc3NlcnQgKGNtZW1saW5rOjpiZWdpbigpIHx8ICFuKTsKLSAgICBhc3NlcnQgKHN0YXJ0ID49IGJlZ2luKCkgJiYgc3RhcnQgKyBuIDw9IGVuZCgpKTsKLSAgICByb3RhdGUgKHN0YXJ0LCBzdGFydCArIG4sIGVuZCgpKTsKLX0KLQotLy8vIFJlYWRzIG9iamVjdCBccCBsIGZyb20gc3RyZWFtIFxwIGlzCi1pbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmVhbSYgaXMsIG1lbWxpbmsmIGwpCi17Ci0gICAgbC5yZWFkIChpcyk7Ci0gICAgcmV0dXJuIChpcyk7Ci19Ci0KLS8vLyBVc2Ugd2l0aCBtZW1saW5rLWRlcml2ZWQgY2xhc3NlcyB0byBhbGxvY2F0ZSBhbmQgbGluayB0byBzdGFjayBzcGFjZS4KLSNkZWZpbmUgYWxsb2NhX2xpbmsobSxuKQkobSkubGluayAoYWxsb2NhIChuKSwgKG4pKQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9taXN0cmVhbS5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9taXN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOTk4Mjg5Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21pc3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0MiArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gbXN0cmVhbS5jcHAKLS8vCi0vLwlIZWxwZXIgY2xhc3NlcyB0byByZWFkIGFuZCB3cml0ZSBwYWNrZWQgYmluYXJ5IHN0cmVhbXMuCi0vLwotCi0jaW5jbHVkZSAibWlzdHJlYW0uaCIKLSNpbmNsdWRlICJzb3N0cmVhbS5oIgotI2luY2x1ZGUgInVhbGdvLmgiCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVzdHJpbmcuaCIKLQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSNpbmNsdWRlIDxzdGRpby5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIENvbnN0cnVjdHMgYSBzdHJlYW0gYXR0YWNoZWQgdG8gbm90aGluZy4KLS8vLyBBIHN0cmVhbSBhdHRhY2hlZCB0byBub3RoaW5nIGlzIG5vdCB1c2FibGUuIENhbGwgTGluaygpIGZ1bmN0aW9ucwotLy8vIGluaGVyaXRlZCBmcm9tIGNtZW1saW5rIHRvIGF0dGFjaCB0byBzb21lIG1lbW9yeSBibG9jay4KLS8vLwotaXN0cmVhbTo6aXN0cmVhbSAodm9pZCkKLTogY21lbWxpbmsgKCksCi0gIG1fUG9zICgwKQotewotfQotCi0vLy8gQXR0YWNoZXMgdGhlIHN0cmVhbSB0byBhIGJsb2NrIGF0IFxwIHAgb2Ygc2l6ZSBccCBuLgotaXN0cmVhbTo6aXN0cmVhbSAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pCi06IGNtZW1saW5rIChwLCBuKSwKLSAgbV9Qb3MgKDApCi17Ci19Ci0KLS8vLyBBdHRhY2hlcyB0byB0aGUgYmxvY2sgcG9pbnRlZCB0byBieSBccCBzb3VyY2UuCi1pc3RyZWFtOjppc3RyZWFtIChjb25zdCBjbWVtbGluayYgc291cmNlKQotOiBjbWVtbGluayAoc291cmNlKSwKLSAgbV9Qb3MgKDApCi17Ci19Ci0KLS8vLyBBdHRhY2hlcyB0byB0aGUgYmxvY2sgcG9pbnRlZCB0byBieSBzb3VyY2Ugb2Ygc2l6ZSBzb3VyY2UucG9zKCkKLWlzdHJlYW06OmlzdHJlYW0gKGNvbnN0IG9zdHJlYW0mIHNvdXJjZSkKLTogY21lbWxpbmsgKHNvdXJjZS5iZWdpbigpLCBzb3VyY2UucG9zKCkpLAotICBtX1BvcyAoMCkKLXsKLX0KLQotLy8vIFN3YXBzIGNvbnRlbnRzIHdpdGggXHAgaXMKLXZvaWQgaXN0cmVhbTo6c3dhcCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgY21lbWxpbms6OnN3YXAgKGlzKTsKLSAgICA6OnVzdGw6OnN3YXAgKG1fUG9zLCBpcy5tX1Bvcyk7Ci19Ci0KLS8vLyBDaGVja3MgdGhhdCBccCBuIGJ5dGVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHN0cmVhbSwgb3IgZWxzZSB0aHJvd3MuCi12b2lkIGlzdHJlYW06OnZlcmlmeV9yZW1haW5pbmcgKGNvbnN0IGNoYXIqIG9wLCBjb25zdCBjaGFyKiB0eXBlLCBzaXplX3QgbikgY29uc3QKLXsKLSAgICBpZiAocmVtYWluaW5nKCkgPCBuKQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICAgICAgcHJpbnRmKCJzdHJlYW0gYm91bmRzIGV4Y2VwdGlvblxuIik7Ci0jZWxzZQotCXRocm93IHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uIChvcCwgdHlwZSwgcG9zKCksIG4sIHJlbWFpbmluZygpKTsKLSNlbmRpZgotfQotCi0vLy8gUmVhZHMgXHAgbiBieXRlcyBpbnRvIFxwIGJ1ZmZlci4KLXZvaWQgaXN0cmVhbTo6cmVhZCAodm9pZCogYnVmZmVyLCBzaXplX3R5cGUgbikKLXsKLSNpZmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLSAgICB2ZXJpZnlfcmVtYWluaW5nICgicmVhZCIsICJiaW5hcnkgZGF0YSIsIG4pOwotI2Vsc2UKLSAgICBhc3NlcnQgKHJlbWFpbmluZygpID49IG4gJiYgIlJlYWRpbmcgcGFzdCBlbmQgb2YgYnVmZmVyLiBNYWtlIHN1cmUgeW91IGFyZSByZWFkaW5nIHRoZSByaWdodCBmb3JtYXQuIik7Ci0jZW5kaWYKLSAgICBjb3B5X24gKGlwb3MoKSwgbiwgcmVpbnRlcnByZXRfY2FzdDx2YWx1ZV90eXBlKj4oYnVmZmVyKSk7Ci0gICAgbV9Qb3MgKz0gbjsKLX0KLQotLy8vIFJlYWRzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyBpbnRvIFxwIHN0ci4KLXZvaWQgaXN0cmVhbTo6cmVhZF9zdHJ6IChzdHJpbmcmIHN0cikKLXsKLSAgICBjb25zdF9pdGVyYXRvciB6cCA9IGZpbmQgKGlwb3MoKSwgZW5kKCksIHN0cmluZzo6Y19UZXJtaW5hdG9yKTsKLSAgICBpZiAoenAgPT0gZW5kKCkpCi0JenAgPSBpcG9zKCk7Ci0gICAgY29uc3Qgc2l6ZV90eXBlIHN0cmwgPSBkaXN0YW5jZSAoaXBvcygpLCB6cCk7Ci0gICAgc3RyLnJlc2l6ZSAoc3RybCk7Ci0gICAgY29weSAoaXBvcygpLCB6cCwgc3RyLmJlZ2luKCkpOwotICAgIG1fUG9zICs9IHN0cmwgKyAxOwotfQotCi0vLy8gUmVhZHMgYXQgbW9zdCBccCBuIGJ5dGVzIGludG8gXHAgcy4KLWlzdHJlYW06OnNpemVfdHlwZSBpc3RyZWFtOjpyZWFkc29tZSAodm9pZCogcywgc2l6ZV90eXBlIG4pCi17Ci0gICAgaWYgKHJlbWFpbmluZygpIDwgbikKLQl1bmRlcmZsb3cgKG4pOwotICAgIGNvbnN0IHNpemVfdHlwZSBudHIgKG1pbiAobiwgcmVtYWluaW5nKCkpKTsKLSAgICByZWFkIChzLCBudHIpOwotICAgIHJldHVybiAobnRyKTsKLX0KLQotLy8vIFdyaXRlcyBhbGwgdW5yZWFkIGJ5dGVzIGludG8gXHAgb3MuCi12b2lkIGlzdHJlYW06OndyaXRlIChvc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICBvcy53cml0ZSAoaXBvcygpLCByZW1haW5pbmcoKSk7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIG9iamVjdCB0byBzdHJlYW0gXHAgb3MuCi12b2lkIGlzdHJlYW06OnRleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdAotewotICAgIG9zLndyaXRlIChpcG9zKCksIHJlbWFpbmluZygpKTsKLX0KLQotLy8vIExpbmtzIHRvIFxwIHAgb2Ygc2l6ZSBccCBuCi12b2lkIGlzdHJlYW06OnVubGluayAodm9pZCkKLXsKLSAgICBjbWVtbGluazo6dW5saW5rKCk7Ci0gICAgbV9Qb3MgPSAwOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcYnJpZWYgQ29uc3RydWN0cyBhIHN0cmVhbSBhdHRhY2hlZCB0byBub3RoaW5nLgotLy8vIEEgc3RyZWFtIGF0dGFjaGVkIHRvIG5vdGhpbmcgaXMgbm90IHVzYWJsZS4gQ2FsbCBMaW5rKCkgZnVuY3Rpb25zCi0vLy8gaW5oZXJpdGVkIGZyb20gbWVtbGluayB0byBhdHRhY2ggdG8gc29tZSBtZW1vcnkgYmxvY2suCi0vLy8KLW9zdHJlYW06Om9zdHJlYW0gKHZvaWQpCi06IG1lbWxpbmsgKCksCi0gIG1fUG9zICgwKQotewotfQotCi0vLy8gQXR0YWNoZXMgdGhlIHN0cmVhbSB0byBhIGJsb2NrIGF0IFxwIHAgb2Ygc2l6ZSBccCBuLgotb3N0cmVhbTo6b3N0cmVhbSAodm9pZCogcCwgc2l6ZV90eXBlIG4pCi06IG1lbWxpbmsgKHAsIG4pLAotICBtX1BvcyAoMCkKLXsKLX0KLQotLy8vIEF0dGFjaGVzIHRvIHRoZSBibG9jayBwb2ludGVkIHRvIGJ5IFxwIHNvdXJjZS4KLW9zdHJlYW06Om9zdHJlYW0gKGNvbnN0IG1lbWxpbmsmIHNvdXJjZSkKLTogbWVtbGluayAoc291cmNlKSwKLSAgbV9Qb3MgKDApCi17Ci19Ci0KLS8vLyBMaW5rcyB0byBccCBwIG9mIHNpemUgXHAgbgotdm9pZCBvc3RyZWFtOjp1bmxpbmsgKHZvaWQpCi17Ci0gICAgbWVtbGluazo6dW5saW5rKCk7Ci0gICAgbV9Qb3MgPSAwOwotfQotCi0vLy8gQ2hlY2tzIHRoYXQgXHAgbiBieXRlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBzdHJlYW0sIG9yIGVsc2UgdGhyb3dzLgotdm9pZCBvc3RyZWFtOjp2ZXJpZnlfcmVtYWluaW5nIChjb25zdCBjaGFyKiBvcCwgY29uc3QgY2hhciogdHlwZSwgc2l6ZV90IG4pIGNvbnN0Ci17Ci0gICAgaWYgKHJlbWFpbmluZygpIDwgbikKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgIHByaW50Zigic3RyZWFtIGJvdW5kcyBleGNlcHRpb25cbiIpOwotI2Vsc2UKLQl0aHJvdyBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbiAob3AsIHR5cGUsIHBvcygpLCBuLCByZW1haW5pbmcoKSk7Ci0jZW5kaWYKLX0KLQotLy8vIEFsaWducyB0aGUgd3JpdGUgcG9pbnRlciBvbiBccCBncmFpbi4gVGhlIHNraXBwZWQgYnl0ZXMgYXJlIHplcm9lZC4KLXZvaWQgb3N0cmVhbTo6YWxpZ24gKHNpemVfdHlwZSBncmFpbikKLXsKLSAgICBjb25zdCBzaXplX3QgciA9IHBvcygpICUgZ3JhaW47Ci0gICAgc2l6ZV90IG5iID0gZ3JhaW4gLSByOwotICAgIGlmICghcikgbmIgPSAwOwotI2lmZGVmIFdBTlRfU1RSRUFNX0JPVU5EU19DSEVDS0lORwotICAgIHZlcmlmeV9yZW1haW5pbmcgKCJhbGlnbiIsICJwYWRkaW5nIiwgbmIpOwotI2Vsc2UKLSAgICBhc3NlcnQgKHJlbWFpbmluZygpID49IG5iICYmICJCdWZmZXIgb3ZlcnJ1bi4gQ2hlY2sgeW91ciBzdHJlYW0gc2l6ZSBjYWxjdWxhdGlvbnMuIik7Ci0jZW5kaWYKLSAgICBmaWxsX24gKGlwb3MoKSwgbmIsICdceDAnKTsKLSAgICBtX1BvcyArPSBuYjsKLX0KLQotLy8vIFdyaXRlcyBccCBuIGJ5dGVzIGZyb20gXHAgYnVmZmVyLgotdm9pZCBvc3RyZWFtOjp3cml0ZSAoY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3R5cGUgbikKLXsKLSNpZmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLSAgICB2ZXJpZnlfcmVtYWluaW5nICgid3JpdGUiLCAiYmluYXJ5IGRhdGEiLCBuKTsKLSNlbHNlCi0gICAgYXNzZXJ0IChyZW1haW5pbmcoKSA+PSBuICYmICJCdWZmZXIgb3ZlcnJ1bi4gQ2hlY2sgeW91ciBzdHJlYW0gc2l6ZSBjYWxjdWxhdGlvbnMuIik7Ci0jZW5kaWYKLSAgICBjb3B5X24gKGNvbnN0X2l0ZXJhdG9yKGJ1ZmZlciksIG4sIGlwb3MoKSk7Ci0gICAgbV9Qb3MgKz0gbjsKLX0KLQotLy8vIFdyaXRlcyBccCBzdHIgYXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgotdm9pZCBvc3RyZWFtOjp3cml0ZV9zdHJ6IChjb25zdCBjaGFyKiBzdHIpCi17Ci0gICAgd3JpdGUgKHN0ciwgc3RybGVuKHN0cikpOwotICAgIGl3cml0ZSAoc3RyaW5nOjpjX1Rlcm1pbmF0b3IpOwotfQotCi0vLy8gV3JpdGVzIGFsbCBhdmFpbGFibGUgZGF0YSBmcm9tIFxwIGlzLgotdm9pZCBvc3RyZWFtOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICBpcy53cml0ZSAoKnRoaXMpOwotICAgIGlzLnNlZWsgKGlzLnNpemUoKSk7Ci19Ci0KLS8vLyBXcml0ZXMgYWxsIHdyaXR0ZW4gZGF0YSB0byBccCBvcy4KLXZvaWQgb3N0cmVhbTo6dGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgb3Mud3JpdGUgKGJlZ2luKCksIHBvcygpKTsKLX0KLQotLy8vIEluc2VydHMgYW4gZW1wdHkgYXJlYSBvZiBccCBzaXplLCBhdCBccCBzdGFydC4KLXZvaWQgb3N0cmVhbTo6aW5zZXJ0IChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIHMpCi17Ci0gICAgbWVtbGluazo6aW5zZXJ0IChzdGFydCwgcyk7Ci0gICAgbV9Qb3MgKz0gczsKLX0KLQotLy8vIEVyYXNlcyBhbiBhcmVhIG9mIFxwIHNpemUsIGF0IFxwIHN0YXJ0Lgotdm9pZCBvc3RyZWFtOjplcmFzZSAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBzKQotewotICAgIG1fUG9zIC09IHM7Ci0gICAgbWVtbGluazo6ZXJhc2UgKHN0YXJ0LCBzKTsKLX0KLQotLy8vIFN3YXBzIHdpdGggXHAgb3MKLXZvaWQgb3N0cmVhbTo6c3dhcCAob3N0cmVhbSYgb3MpCi17Ci0gICAgbWVtbGluazo6c3dhcCAob3MpOwotICAgIDo6dXN0bDo6c3dhcCAobV9Qb3MsIG9zLm1fUG9zKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21pc3RyZWFtLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9taXN0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTdhZWU3Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21pc3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIG1pc3RyZWFtLmgKLS8vCi0jaWZuZGVmIE1JU1RSRUFNX0hfMTAzQUVGMUYyNjZDMDRBQTFBODE3RDM4NzA1OTgzREEKLSNkZWZpbmUgTUlTVFJFQU1fSF8xMDNBRUYxRjI2NkMwNEFBMUE4MTdEMzg3MDU5ODNEQQotCi0jaW5jbHVkZSAibWVtbGluay5oIgotI2luY2x1ZGUgInVleGNlcHRpb24uaCIKLSNpbmNsdWRlICJzdHJtc2l6ZS5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1dGY4LmgiCi0jaW5jbHVkZSAidWlvcy5oIgotI2lmZGVmIFdBTlRfU1RSRUFNX0JPVU5EU19DSEVDS0lORwotICAgICNpbmNsdWRlIDx0eXBlaW5mbz4KLSNlbmRpZgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLWNsYXNzIG9zdHJlYW07Ci1jbGFzcyBtZW1saW5rOwotY2xhc3Mgc3RyaW5nOwotCi0vLy8gXGNsYXNzIGlzdHJlYW0gbWlzdHJlYW0uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBCaW5hcnlTdHJlYW1zCi0vLy8KLS8vLyBcYnJpZWYgSGVscGVyIGNsYXNzIHRvIHJlYWQgcGFja2VkIGJpbmFyeSBzdHJlYW1zLgotLy8vIAotLy8vIFRoaXMgY2xhc3MgY29udGFpbnMgYSBzZXQgb2YgZnVuY3Rpb25zIHRvIHJlYWQgaW50ZWdyYWwgdHlwZXMgZnJvbSBhbgotLy8vIHVuc3RydWN0dXJlZCBtZW1vcnkgYmxvY2suIFVucGFja2luZyBiaW5hcnkgZmlsZSBkYXRhIGNhbiBiZSBkb25lIHRoaXMKLS8vLyB3YXksIGZvciBpbnN0YW5jZS4gYWxpZ25pbmcgdGhlIGRhdGEgaXMgeW91ciByZXNwb25zaWJpbGl0eSwgYW5kIGNhbgotLy8vIGJlIGFjY29tcGxpc2hlZCBieSBwcm9wZXIgb3JkZXJpbmcgb2YgcmVhZHMgYW5kIGJ5IGNhbGxpbmcgdGhlIGFsaWduKCkKLS8vLyBmdW5jdGlvbi4gVW5hbGlnbmVkIGFjY2VzcyBpcyB1c3VhbGx5IHNsb3dlciBieSBvcmRlcnMgb2YgbWFnbml0dWRlIGFuZCwKLS8vLyBvbiBzb21lIGFyY2hpdGVjdHVyZXMsIHN1Y2ggYXMgUG93ZXJQQywgY2FuIGNhdXNlIHlvdXIgcHJvZ3JhbSB0byBjcmFzaC4KLS8vLyBUaGVyZWZvcmUsIGFsbCByZWFkIGZ1bmN0aW9ucyBoYXZlIGFzc2VydHMgdG8gY2hlY2sgYWxpZ25tZW50LgotLy8vIE92ZXJyZWFkaW5nIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aWxsIGFsc28gY2F1c2UgYSBjcmFzaCAoYW4gYXNzZXJ0IGluCi0vLy8gZGVidWcgYnVpbGRzKS4gT2gsIGFuZCBkb24ndCBiZSBpbnRpbWlkYXRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgaW5saW5lcwotLy8vIGhlcmUuIEluIHRoZSBhc3NlbWJseSBjb2RlIHRoZSBjb21waWxlciB3aWxsIHVzdWFsbHkgY2hvcCBldmVyeXRoaW5nIGRvd24KLS8vLyB0byBmaXZlIGluc3RydWN0aW9ucyBlYWNoLgotLy8vIAotLy8vIEFsaWdubWVudCBydWxlcyBmb3IgeW91ciBvYmplY3RzOgotLy8vCS0gQXNzdW1lIHlvdXIgd3JpdGVzIHN0YXJ0IG9mZiA0LWJ5dGUgYWxpZ25lZC4KLS8vLwktIEFmdGVyIGNvbXBsZXRpb24sIFxyZWYgaXN0cmVhbTo6YWxpZ24gdGhlIHN0cmVhbSB0byBhdCBsZWFzdCA0LgotLy8vCS0gSWYgZGF0YSBwb3J0YWJpbGl0eSBiZXR3ZWVuIDMyYml0IGFuZCA2NGJpdCBwbGF0Zm9ybXMgaXMgaW1wb3J0YW50Ci0vLy8JKGl0IG9mdGVuIGlzIG5vdCwgaW4gY29uZmlnIGZpbGVzIGFuZCB0aGUgbGlrZSksIGVuc3VyZSB5b3UgYXJlIGFsd2F5cwotLy8vCXVzaW5nIGZpeGVkLXNpemUgdHlwZXMgYW5kIGFyZSBhbGlnbmluZyB0byBhIGZpeGVkIGdyYWluLiBBdm9pZCB3cml0aW5nCi0vLy8JOC1ieXRlIHR5cGVzLCBhbmQgaWYgeW91IGRvLCBtYW51YWxseSBhbGlnbiBiZWZvcmUgZG9pbmcgc28uCi0vLy8JLSBOb24tZGVmYXVsdCBhbGlnbm1lbnQgaXMgYWxsb3dlZCBpZiB5b3UgcGxhbiB0byBmcmVxdWVudGx5IHdyaXRlIHRoaXMKLS8vLwlvYmplY3QgaW4gYXJyYXkgZm9ybSBhbmQgYWxpZ25tZW50IHdvdWxkIGJlIGNvc3RseS4gRm9yIGV4YW1wbGUsIGFuCi0vLy8JYXJyYXkgb2YgdWludDE2X3Qtc2l6ZWQgb2JqZWN0cyBtYXkgbGVhdmUgdGhlIHN0cmVhbSB1aW50MTZfdCBhbGlnbmVkCi0vLy8JYXMgbG9uZyBhcyB5b3Uga25vdyBhYm91dCBpdCBhbmQgd2lsbCBkZWZhdWx0LWFsaWduIHRoZSBzdHJlYW0gYWZ0ZXIKLS8vLwl3cml0aW5nIHRoZSBhcnJheSAobm90ZTogXHJlZiB2ZWN0b3Igd2lsbCBhbHJlYWR5IGRvIHRoaXMgZm9yIHlvdSkKLS8vLyAKLS8vLyBFeGFtcGxlIGNvZGU6Ci0vLy8gXGNvZGUKLS8vLwltZW1ibG9jayBiOwotLy8vCWIucmVhZF9maWxlICgidGVzdC5maWxlIik7Ci0vLy8Jb3N0cmVhbSBpcyAoYik7Ci0vLy8JaXMgPj4gYm9vbFZhciA+PiBpb3M6OnRhbGlnbjxpbnQ+KCk7Ci0vLy8JaXMgPj4gaW50VmFyID4+IGZsb2F0VmFyOwotLy8vCWlzLnJlYWQgKGJpbmFyeURhdGEsIGJpbmFyeURhdGFTaXplKTsKLS8vLwlpcy5hbGlnbigpOwotLy8vIFxlbmRjb2RlCi0vLy8KLWNsYXNzIGlzdHJlYW0gOiBwdWJsaWMgY21lbWxpbmssIHB1YmxpYyBpb3NfYmFzZSB7Ci1wdWJsaWM6Ci0JCQlpc3RyZWFtICh2b2lkKTsKLQkJCWlzdHJlYW0gKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKTsKLSAgICBleHBsaWNpdAkJaXN0cmVhbSAoY29uc3QgY21lbWxpbmsmIHNvdXJjZSk7Ci0gICAgZXhwbGljaXQJCWlzdHJlYW0gKGNvbnN0IG9zdHJlYW0mIHNvdXJjZSk7Ci0gICAgaW5saW5lIGl0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJCQl7IHJldHVybiAoY21lbWxpbms6OmVuZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQlsaW5rIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikJeyBjbWVtbGluazo6bGluayAocCwgbik7IH0KLSAgICBpbmxpbmUgdm9pZAkJbGluayAoY29uc3QgY21lbWxpbmsmIGwpCQl7IGNtZW1saW5rOjpsaW5rIChsLmNkYXRhKCksIGwucmVhZGFibGVfc2l6ZSgpKTsgfQotICAgIGlubGluZSB2b2lkCQlsaW5rIChjb25zdCB2b2lkKiBmLCBjb25zdCB2b2lkKiBsKQl7IGNtZW1saW5rOjpsaW5rIChmLCBsKTsgfQotCQkJT1ZFUkxPQURfUE9JTlRFUl9BTkRfU0laRV9UX1YyKGxpbmssIGNvbnN0IHZvaWQqKQotICAgIGlubGluZSB2b2lkCQlyZWxpbmsgKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQl7IGNtZW1saW5rOjpyZWxpbmsgKHAsIG4pOyBtX1BvcyA9IDA7IH0KLSAgICBpbmxpbmUgdm9pZAkJcmVsaW5rIChjb25zdCBjbWVtbGluayYgbCkJCXsgcmVsaW5rIChsLmNkYXRhKCksIGwucmVhZGFibGVfc2l6ZSgpKTsgfQotICAgIHZpcnR1YWwgdm9pZAl1bmxpbmsgKHZvaWQpOwotICAgIGlubGluZSB2aXJ0dWFsIHNpemVfdHlwZQl1bmRlcmZsb3cgKHNpemVfdHlwZSA9IDEpCXsgcmV0dXJuIChyZW1haW5pbmcoKSk7IH0KLSAgICBpbmxpbmUgdW9mZl90CXBvcyAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1fUG9zKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBpcG9zICh2b2lkKSBjb25zdAl7IHJldHVybiAoYmVnaW4oKSArIHBvcygpKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJcmVtYWluaW5nICh2b2lkKSBjb25zdAl7IHJldHVybiAoc2l6ZSgpIC0gcG9zKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXNlZWsgKHVvZmZfdCBuZXdQb3MpOwotICAgIGlubGluZSB2b2lkCQlpc2VlayAoY29uc3RfaXRlcmF0b3IgbmV3UG9zKTsKLSAgICBpbmxpbmUgdm9pZAkJc2tpcCAoc2l6ZV90eXBlIG5CeXRlcyk7Ci0gICAgaW5saW5lIGJvb2wJCWFsaWduZWQgKHNpemVfdHlwZSBncmFpbiA9IGNfRGVmYXVsdEFsaWdubWVudCkgY29uc3Q7Ci0gICAgdm9pZAkJdmVyaWZ5X3JlbWFpbmluZyAoY29uc3QgY2hhciogb3AsIGNvbnN0IGNoYXIqIHR5cGUsIHNpemVfdCBuKSBjb25zdDsKLSAgICBpbmxpbmUgc2l6ZV90eXBlCWFsaWduX3NpemUgKHNpemVfdHlwZSBncmFpbiA9IGNfRGVmYXVsdEFsaWdubWVudCkgY29uc3Q7Ci0gICAgaW5saW5lIHZvaWQJCWFsaWduIChzaXplX3R5cGUgZ3JhaW4gPSBjX0RlZmF1bHRBbGlnbm1lbnQpOwotICAgIHZvaWQJCXN3YXAgKGlzdHJlYW0mIGlzKTsKLSAgICB2b2lkCQlyZWFkICh2b2lkKiBidWZmZXIsIHNpemVfdHlwZSBzaXplKTsKLSAgICBpbmxpbmUgdm9pZAkJcmVhZCAobWVtbGluayYgYnVmKQl7IHJlYWQgKGJ1Zi5iZWdpbigpLCBidWYud3JpdGFibGVfc2l6ZSgpKTsgfQotICAgIHZvaWQJCXJlYWRfc3RyeiAoc3RyaW5nJiBzdHIpOwotICAgIHNpemVfdHlwZQkJcmVhZHNvbWUgKHZvaWQqIHMsIHNpemVfdHlwZSBuKTsKLSAgICBpbmxpbmUgdm9pZAkJcmVhZCAoaXN0cmVhbSYpCQkJeyB9Ci0gICAgdm9pZAkJd3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdDsKLSAgICB2b2lkCQl0ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgaW5saW5lIHNpemVfdAlzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKHJlbWFpbmluZygpKTsgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkCQlpcmVhZCAoVCYgdik7Ci0gICAgaW5saW5lIHZvaWQJCXVuZ2V0YyAodm9pZCkJCXsgc2VlayAocG9zKCkgLSAxKTsgfQotICAgIGlubGluZSBvZmZfdAl0ZWxsZyAodm9pZCkgY29uc3QJeyByZXR1cm4gKHBvcygpKTsgfQotICAgIGlubGluZSB2b2lkCQlzZWVrZyAob2ZmX3QgcCwgc2Vla2RpciBkID0gYmVnKTsKLXByaXZhdGU6Ci0gICAgdW9mZl90CQltX1BvczsJCS8vLzwgVGhlIGN1cnJlbnQgcmVhZCBwb3NpdGlvbi4KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU3RyZWFtPgotaW5saW5lIHNpemVfdCByZXF1aXJlZF9zdHJlYW1fc2l6ZSAoVCwgY29uc3QgU3RyZWFtJikgeyByZXR1cm4gKDEpOyB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBzaXplX3QgcmVxdWlyZWRfc3RyZWFtX3NpemUgKFQgdiwgY29uc3QgaXN0cmVhbSYpIHsgcmV0dXJuIChzdHJlYW1fc2l6ZV9vZih2KSk7IH0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFN0cmVhbT4KLWlubGluZSBib29sIHN0cmVhbV9hdF9lb2YgKGNvbnN0IFN0cmVhbSYgc3RtKQl7IHJldHVybiAoc3RtLmVvZigpKTsgfQotdGVtcGxhdGUgPD4KLWlubGluZSBib29sIHN0cmVhbV9hdF9lb2YgKGNvbnN0IGlzdHJlYW0mKQl7IHJldHVybiAoZmFsc2UpOyB9Ci0KLS8vLyBcY2xhc3MgaXN0cmVhbV9pdGVyYXRvcgotLy8vIFxpbmdyb3VwIEJpbmFyeVN0cmVhbUl0ZXJhdG9ycwotLy8vCi0vLy8gXGJyaWVmIEFuIGl0ZXJhdG9yIG92ZXIgYW4gaXN0cmVhbSB0byB1c2Ugd2l0aCB1U1RMIGFsZ29yaXRobXMuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBTdHJlYW0gPSBpc3RyZWFtPgotY2xhc3MgaXN0cmVhbV9pdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBUCQkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHB0cmRpZmZfdAkJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSoJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHNpemVfdAkJc2l6ZV90eXBlOwotcHVibGljOgotCQkJCWlzdHJlYW1faXRlcmF0b3IgKHZvaWQpCQk6IG1fcGlzIChOVUxMKSwgbV92KCkge30KLSAgICBleHBsaWNpdAkJCWlzdHJlYW1faXRlcmF0b3IgKFN0cmVhbSYgaXMpCTogbV9waXMgKCZpcyksIG1fdigpIHsgUmVhZCgpOyB9Ci0gCQkJCWlzdHJlYW1faXRlcmF0b3IgKGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImIGkpCTogbV9waXMgKGkubV9waXMpLCBtX3YgKGkubV92KSB7fQotICAgIC8vLyBSZWFkcyBhbmQgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZS4KLSAgICBpbmxpbmUgY29uc3QgVCYJCW9wZXJhdG9yKiAodm9pZCkJeyByZXR1cm4gKG1fdik7IH0KLSAgICBpbmxpbmUgaXN0cmVhbV9pdGVyYXRvciYJb3BlcmF0b3IrKyAodm9pZCkJeyBSZWFkKCk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGlzdHJlYW1faXRlcmF0b3ImCW9wZXJhdG9yLS0gKHZvaWQpCXsgbV9waXMtPnNlZWsgKG1fcGlzLT5wb3MoKSAtIDIgKiBzdHJlYW1fc2l6ZV9vZihtX3YpKTsgcmV0dXJuIChvcGVyYXRvcisrKCkpOyB9Ci0gICAgaW5saW5lIGlzdHJlYW1faXRlcmF0b3IJb3BlcmF0b3IrKyAoaW50KQl7IGlzdHJlYW1faXRlcmF0b3Igb2xkICgqdGhpcyk7IG9wZXJhdG9yKysoKTsgcmV0dXJuIChvbGQpOyB9Ci0gICAgaW5saW5lIGlzdHJlYW1faXRlcmF0b3IJb3BlcmF0b3ItLSAoaW50KQl7IGlzdHJlYW1faXRlcmF0b3Igb2xkICgqdGhpcyk7IG9wZXJhdG9yLS0oKTsgcmV0dXJuIChvbGQpOyB9Ci0gICAgaW5saW5lIGlzdHJlYW1faXRlcmF0b3ImCW9wZXJhdG9yKz0gKHNpemVfdHlwZSBuKQl7IHdoaWxlIChuLS0pIG9wZXJhdG9yKysoKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgaXN0cmVhbV9pdGVyYXRvciYJb3BlcmF0b3ItPSAoc2l6ZV90eXBlIG4pCXsgbV9waXMtPnNlZWsgKG1fcGlzLT5wb3MoKSAtIChuICsgMSkgKiBzdHJlYW1fc2l6ZV9vZihtX3YpKTsgcmV0dXJuIChvcGVyYXRvcisrKCkpOyB9Ci0gICAgaW5saW5lIGlzdHJlYW1faXRlcmF0b3IJb3BlcmF0b3ItIChzaXplX3R5cGUgbikgY29uc3QJCQl7IGlzdHJlYW1faXRlcmF0b3IgcmVzdWx0ICgqdGhpcyk7IHJldHVybiAocmVzdWx0IC09IG4pOyB9Ci0gICAgaW5saW5lIGRpZmZlcmVuY2VfdHlwZQlvcGVyYXRvci0gKGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImIGkpIGNvbnN0CXsgcmV0dXJuIChkaXN0YW5jZSAoaS5tX3Bpcy0+cG9zKCksIG1fcGlzLT5wb3MoKSkgLyBzdHJlYW1fc2l6ZV9vZihtX3YpKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3QgaXN0cmVhbV9pdGVyYXRvciYgaSkgY29uc3QJeyByZXR1cm4gKCghbV9waXMgJiYgIWkubV9waXMpIHx8IChtX3BpcyAmJiBpLm1fcGlzICYmIG1fcGlzLT5wb3MoKSA9PSBpLm1fcGlzLT5wb3MoKSkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcjwgKGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImIGkpIGNvbnN0CXsgcmV0dXJuICghaS5tX3BpcyB8fCAobV9waXMgJiYgbV9waXMtPnBvcygpIDwgaS5tX3Bpcy0+cG9zKCkpKTsgfQotcHJpdmF0ZToKLSAgICB2b2lkIFJlYWQgKHZvaWQpCi0gICAgewotCWlmICghbV9waXMpCi0JICAgIHJldHVybjsKLQljb25zdCBzaXplX3QgcnMgKHJlcXVpcmVkX3N0cmVhbV9zaXplIChtX3YsICptX3BpcykpOwotCWlmIChtX3Bpcy0+cmVtYWluaW5nKCkgPCBycyAmJiBtX3Bpcy0+dW5kZXJmbG93IChycykgPCBycykgewotCSAgICBtX3BpcyA9IE5VTEw7Ci0JICAgIHJldHVybjsKLQl9Ci0JKm1fcGlzID4+IG1fdjsKLQlpZiAoc3RyZWFtX2F0X2VvZiAoKm1fcGlzKSkKLQkgICAgbV9waXMgPSBOVUxMOwotICAgIH0KLXByaXZhdGU6Ci0gICAgU3RyZWFtKgltX3BpczsJCS8vLzwgVGhlIGhvc3Qgc3RyZWFtLgotICAgIFQJCW1fdjsJCS8vLzwgTGFzdCByZWFkIHZhbHVlOyBjYWNoZWQgdG8gYmUgcmV0dXJuYWJsZSBhcyBhIGNvbnN0IHJlZmVyZW5jZS4KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gU2V0cyB0aGUgY3VycmVudCByZWFkIHBvc2l0aW9uIHRvIFxwIG5ld1BvcwotaW5saW5lIHZvaWQgaXN0cmVhbTo6c2VlayAodW9mZl90IG5ld1BvcykKLXsKLSNpZmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLSAgICBpZiAobmV3UG9zID4gc2l6ZSgpKQotCXRocm93IHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uICgic2Vla2ciLCAiYnl0ZSIsIHBvcygpLCBuZXdQb3MgLSBwb3MoKSwgc2l6ZSgpKTsKLSNlbHNlCi0gICAgYXNzZXJ0IChuZXdQb3MgPD0gc2l6ZSgpKTsKLSNlbmRpZgotICAgIG1fUG9zID0gbmV3UG9zOwotfQotCi0vLy8gU2V0cyB0aGUgY3VycmVudCByZWFkIHBvc2l0aW9uIHRvIFxwIG5ld1BvcwotaW5saW5lIHZvaWQgaXN0cmVhbTo6aXNlZWsgKGNvbnN0X2l0ZXJhdG9yIG5ld1BvcykKLXsKLSAgICBzZWVrIChkaXN0YW5jZSAoYmVnaW4oKSwgbmV3UG9zKSk7Ci19Ci0KLS8vLyBTZXRzIHRoZSBjdXJyZW50IHdyaXRlIHBvc2l0aW9uIHRvIFxwIHAgYmFzZWQgb24gXHAgZC4KLWlubGluZSB2b2lkIGlzdHJlYW06OnNlZWtnIChvZmZfdCBwLCBzZWVrZGlyIGQpCi17Ci0gICAgc3dpdGNoIChkKSB7Ci0JY2FzZSBiZWc6CXNlZWsgKHApOyBicmVhazsKLQljYXNlIGN1cjoJc2VlayAocG9zKCkgKyBwKTsgYnJlYWs7Ci0JY2FzZSBpb3NfYmFzZTo6ZW5kOglzZWVrIChzaXplKCkgLSBwKTsgYnJlYWs7Ci0gICAgfQotfQotCi0vLy8gU2tpcHMgXHAgbkJ5dGVzIHdpdGhvdXQgcmVhZGluZyB0aGVtLgotaW5saW5lIHZvaWQgaXN0cmVhbTo6c2tpcCAoc2l6ZV90eXBlIG5CeXRlcykKLXsKLSAgICBzZWVrIChwb3MoKSArIG5CeXRlcyk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCB0byBiZSBhbGlnbmVkIG9uIFxwIGdyYWluLgotaW5saW5lIGlzdHJlYW06OnNpemVfdHlwZSBpc3RyZWFtOjphbGlnbl9zaXplIChzaXplX3R5cGUgZ3JhaW4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChBbGlnbiAocG9zKCksIGdyYWluKSAtIHBvcygpKTsKLX0KLQotLy8vIFJldHVybnMgXGMgdHJ1ZSBpZiB0aGUgcmVhZCBwb3NpdGlvbiBpcyBhbGlnbmVkIG9uIFxwIGdyYWluCi1pbmxpbmUgYm9vbCBpc3RyZWFtOjphbGlnbmVkIChzaXplX3R5cGUgZ3JhaW4pIGNvbnN0Ci17Ci0gICAgYXNzZXJ0ICh1aW50cHRyX3QoYmVnaW4oKSkgJSBncmFpbiA9PSAwICYmICJTdHJlYW1zIHNob3VsZCBiZSBhdHRhY2hlZCBhbGlnbmVkIGF0IHRoZSBtYXhpbXVtIGVsZW1lbnQgZ3JhaW4gdG8gYXZvaWQgYnVzIGVycm9ycy4iKTsKLSAgICByZXR1cm4gKHBvcygpICUgZ3JhaW4gPT0gMCk7Ci19Ci0KLS8vLyBhbGlnbnMgdGhlIHJlYWQgcG9zaXRpb24gb24gXHAgZ3JhaW4KLWlubGluZSB2b2lkIGlzdHJlYW06OmFsaWduIChzaXplX3R5cGUgZ3JhaW4pCi17Ci0gICAgc2VlayAoQWxpZ24gKHBvcygpLCBncmFpbikpOwotfQotCi0vLy8gUmVhZHMgdHlwZSBUIGZyb20gdGhlIHN0cmVhbSB2aWEgYSBkaXJlY3QgcG9pbnRlciBjYXN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBpc3RyZWFtOjppcmVhZCAoVCYgdikKLXsKLSAgICBhc3NlcnQgKGFsaWduZWQgKGFsaWdub2YgKFQoKSkpKTsKLSNpZmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLSAgICB2ZXJpZnlfcmVtYWluaW5nICgicmVhZCIsIHR5cGVpZCh2KS5uYW1lKCksIHNpemVvZihUKSk7Ci0jZWxzZQotICAgIGFzc2VydCAocmVtYWluaW5nKCkgPj0gc2l6ZW9mKFQpKTsKLSNlbmRpZgotICAgIHYgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oaXBvcygpKTsKLSAgICBtX1BvcyArPSBzaXplb2YoVCk7Ci19Ci0KLSNkZWZpbmUgSVNUUkVBTV9PUEVSQVRPUih0eXBlKQlcCi1pbmxpbmUgaXN0cmVhbSYJb3BlcmF0b3I+PiAoaXN0cmVhbSYgaXMsIHR5cGUmIHYpCXsgaXMuaXJlYWQodik7IHJldHVybiAoaXMpOyB9Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotSVNUUkVBTV9PUEVSQVRPUihUKikKLUlTVFJFQU1fT1BFUkFUT1IoaW50OF90KQotSVNUUkVBTV9PUEVSQVRPUih1aW50OF90KQotSVNUUkVBTV9PUEVSQVRPUihpbnQxNl90KQotSVNUUkVBTV9PUEVSQVRPUih1aW50MTZfdCkKLUlTVFJFQU1fT1BFUkFUT1IoaW50MzJfdCkKLUlTVFJFQU1fT1BFUkFUT1IodWludDMyX3QpCi1JU1RSRUFNX09QRVJBVE9SKGZsb2F0KQotSVNUUkVBTV9PUEVSQVRPUihkb3VibGUpCi1JU1RSRUFNX09QRVJBVE9SKHdjaGFyX3QpCi0jaWYgU0laRV9PRl9CT09MID09IFNJWkVfT0ZfQ0hBUgotSVNUUkVBTV9PUEVSQVRPUihib29sKQotI2Vsc2UKLWlubGluZSBpc3RyZWFtJglvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgYm9vbCYgdikKLXsgdWludDhfdCB2ODsgaXMuaXJlYWQgKHY4KTsgdiA9IHY4OyByZXR1cm4gKGlzKTsgfQotI2VuZGlmCi0jaWYgSEFWRV9USFJFRV9DSEFSX1RZUEVTCi1JU1RSRUFNX09QRVJBVE9SKGNoYXIpCi0jZW5kaWYKLSNpZiBIQVZFX0lOVDY0X1QKLUlTVFJFQU1fT1BFUkFUT1IoaW50NjRfdCkKLUlTVFJFQU1fT1BFUkFUT1IodWludDY0X3QpCi0jZW5kaWYKLSNpZiBTSVpFX09GX0xPTkcgPT0gU0laRV9PRl9JTlQKLUlTVFJFQU1fT1BFUkFUT1IobG9uZykKLUlTVFJFQU1fT1BFUkFUT1IodW5zaWduZWQgbG9uZykKLSNlbmRpZgotI2lmIEhBVkVfTE9OR19MT05HICYmICghSEFWRV9JTlQ2NF9UIHx8IFNJWkVfT0ZfTE9OR19MT05HID4gOCkKLUlTVFJFQU1fT1BFUkFUT1IobG9uZyBsb25nKQotSVNUUkVBTV9PUEVSQVRPUih1bnNpZ25lZCBsb25nIGxvbmcpCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXR5cGVkZWYgaXN0cmVhbV9pdGVyYXRvcjx1dGY4c3ViY2hhcl90PiBpc3RyZWFtX2l0ZXJhdG9yX2Zvcl91dGY4OwotdHlwZWRlZiB1dGY4aW5faXRlcmF0b3I8aXN0cmVhbV9pdGVyYXRvcl9mb3JfdXRmOD4gdXRmOGlzdHJlYW1faXRlcmF0b3I7Ci0KLS8vLyBSZXR1cm5zIGEgVVRGLTggYWRhcHRvciByZWFkaW5nIGZyb20gXHAgaXMuCi1pbmxpbmUgdXRmOGlzdHJlYW1faXRlcmF0b3IgdXRmOGluIChpc3RyZWFtJiBpcykKLXsKLSAgICBpc3RyZWFtX2l0ZXJhdG9yX2Zvcl91dGY4IHNpIChpcyk7Ci0gICAgcmV0dXJuICh1dGY4aXN0cmVhbV9pdGVyYXRvciAoc2kpKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21vc3RyZWFtLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tb3N0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjA0MTk2Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21vc3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjAgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIG1vc3RyZWFtLmgKLQotI2lmbmRlZiBNT1NUUkVBTV9IXzI0QThDNTM5N0UwODQ4MjE2NTczRTU2NzA5MzBGQzlBCi0jZGVmaW5lIE1PU1RSRUFNX0hfMjRBOEM1Mzk3RTA4NDgyMTY1NzNFNTY3MDkzMEZDOUEKLQotI2luY2x1ZGUgIm1lbWxpbmsuaCIKLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidWV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgInV0ZjguaCIKLSNpbmNsdWRlICJ1aW9zLmgiCi0jaW5jbHVkZSA8dHlwZWluZm8+Ci0KLW5hbWVzcGFjZSB1c3RsIHsKLQotY2xhc3MgaXN0cmVhbTsKLWNsYXNzIHN0cmluZzsKLQotLy8vIFxjbGFzcyBvc3RyZWFtIG1vc3RyZWFtLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgQmluYXJ5U3RyZWFtcwotLy8vCi0vLy8gXGJyaWVmIEhlbHBlciBjbGFzcyB0byB3cml0ZSBwYWNrZWQgYmluYXJ5IHN0cmVhbXMuCi0vLy8KLS8vLyBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgc2V0IG9mIGZ1bmN0aW9ucyB0byB3cml0ZSBpbnRlZ3JhbCB0eXBlcyBpbnRvIGFuCi0vLy8gdW5zdHJ1Y3R1cmVkIG1lbW9yeSBibG9jay4gUGFja2luZyBiaW5hcnkgZmlsZSBkYXRhIGNhbiBiZSBkb25lIHRoaXMKLS8vLyB3YXksIGZvciBpbnN0YW5jZS4gYWxpZ25pbmcgdGhlIGRhdGEgaXMgeW91ciByZXNwb25zaWJpbGl0eSwgYW5kIGNhbgotLy8vIGJlIGFjY29tcGxpc2hlZCBieSBwcm9wZXIgb3JkZXJpbmcgb2Ygd3JpdGVzIGFuZCBieSBjYWxsaW5nIFxyZWYgb3N0cmVhbTo6YWxpZ24uCi0vLy8gVW5hbGlnbmVkIGFjY2VzcyBpcyB1c3VhbGx5IHNsb3dlciBieSBvcmRlcnMgb2YgbWFnbml0dWRlIGFuZCwKLS8vLyBvbiBzb21lIGFyY2hpdGVjdHVyZXMsIHN1Y2ggYXMgUG93ZXJQQywgY2FuIGNhdXNlIHlvdXIgcHJvZ3JhbSB0byBjcmFzaC4KLS8vLyBUaGVyZWZvcmUsIGFsbCB3cml0ZSBmdW5jdGlvbnMgaGF2ZSBhc3NlcnRzIHRvIGNoZWNrIGFsaWdubWVudC4KLS8vLyBTZWUgXHJlZiBpc3RyZWFtIGRvY3VtZW50YXRpb24gZm9yIHJ1bGVzIG9uIGRlc2lnbmluZyB5b3VyIGRhdGEgZm9ybWF0LgotLy8vIE92ZXJ3cml0aW5nIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aWxsIGFsc28gY2F1c2UgYSBjcmFzaCAoYW4gYXNzZXJ0IGluCi0vLy8gZGVidWcgYnVpbGRzKS4gT2gsIGFuZCBkb24ndCBiZSBpbnRpbWlkYXRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgaW5saW5lcwotLy8vIGhlcmUuIEluIHRoZSBhc3NlbWJseSBjb2RlIHRoZSBjb21waWxlciB3aWxsIHVzdWFsbHkgY2hvcCBldmVyeXRoaW5nIGRvd24KLS8vLyB0byBmaXZlIGluc3RydWN0aW9ucyBlYWNoLgotLy8vCi0vLy8gRXhhbXBsZSBjb2RlOgotLy8vIFxjb2RlCi0vLy8gICAgIG1lbWJsb2NrIGI7Ci0vLy8gICAgIG9zdHJlYW0gb3MgKGIpOwotLy8vICAgICBvcyA8PCBib29sVmFyIDw8IGlvczo6dGFsaWduPGludD4oKTsKLS8vLyAgICAgb3MgPDwgaW50VmFyIDw8IGZsb2F0VmFyOwotLy8vICAgICBvcy53cml0ZSAoYmluYXJ5RGF0YSwgYmluYXJ5RGF0YVNpemUpOwotLy8vICAgICBvcy5hbGlnbigpOwotLy8vICAgICBiLnJlc2l6ZSAob3MucG9zKCkpOwotLy8vCWIud3JpdGVfZmlsZSAoInRlc3QuZmlsZSIpOwotLy8vIFxlbmRjb2RlCi0vLy8KLWNsYXNzIG9zdHJlYW0gOiBwdWJsaWMgbWVtbGluaywgcHVibGljIGlvc19iYXNlIHsKLXB1YmxpYzoKLQkJCW9zdHJlYW0gKHZvaWQpOwotCQkJb3N0cmVhbSAodm9pZCogcCwgc2l6ZV90eXBlIG4pOwotICAgIGV4cGxpY2l0CQlvc3RyZWFtIChjb25zdCBtZW1saW5rJiBzb3VyY2UpOwotICAgIGlubGluZSBpdGVyYXRvcgllbmQgKHZvaWQpCQkJeyByZXR1cm4gKG1lbWxpbms6OmVuZCgpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgllbmQgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtZW1saW5rOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJc2VlayAodW9mZl90IG5ld1Bvcyk7Ci0gICAgaW5saW5lIHZvaWQJCWlzZWVrIChjb25zdF9pdGVyYXRvciBuZXdQb3MpOwotICAgIGlubGluZSB2b2lkCQlza2lwIChzaXplX3R5cGUgbkJ5dGVzKTsKLSAgICBpbmxpbmUgdW9mZl90CXBvcyAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1fUG9zKTsgfQotICAgIGlubGluZSBpdGVyYXRvcglpcG9zICh2b2lkKQkJeyByZXR1cm4gKGJlZ2luKCkgKyBwb3MoKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgaXBvcyAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJlZ2luKCkgKyBwb3MoKSk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCXJlbWFpbmluZyAodm9pZCkgY29uc3Q7Ci0gICAgaW5saW5lIGJvb2wJCWFsaWduZWQgKHNpemVfdHlwZSBncmFpbiA9IGNfRGVmYXVsdEFsaWdubWVudCkgY29uc3Q7Ci0gICAgdm9pZAkJdmVyaWZ5X3JlbWFpbmluZyAoY29uc3QgY2hhciogb3AsIGNvbnN0IGNoYXIqIHR5cGUsIHNpemVfdCBuKSBjb25zdDsKLSAgICBpbmxpbmUgc2l6ZV90eXBlCWFsaWduX3NpemUgKHNpemVfdHlwZSBncmFpbiA9IGNfRGVmYXVsdEFsaWdubWVudCkgY29uc3Q7Ci0gICAgdm9pZAkJYWxpZ24gKHNpemVfdHlwZSBncmFpbiA9IGNfRGVmYXVsdEFsaWdubWVudCk7Ci0gICAgdm9pZAkJd3JpdGUgKGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90eXBlIHNpemUpOwotICAgIGlubGluZSB2b2lkCQl3cml0ZSAoY29uc3QgY21lbWxpbmsmIGJ1Zik7Ci0gICAgdm9pZAkJd3JpdGVfc3RyeiAoY29uc3QgY2hhciogc3RyKTsKLSAgICB2b2lkCQlyZWFkIChpc3RyZWFtJiBpcyk7Ci0gICAgaW5saW5lIHZvaWQJCXdyaXRlIChvc3RyZWFtJiBvcykgY29uc3QJeyBvcy53cml0ZSAoYmVnaW4oKSwgcG9zKCkpOyB9Ci0gICAgdm9pZAkJdGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIGlubGluZSBzaXplX3QJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwb3MoKSk7IH0KLSAgICB2b2lkCQlpbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBzaXplX3R5cGUgc2l6ZSk7Ci0gICAgdm9pZAkJZXJhc2UgKGl0ZXJhdG9yIHN0YXJ0LCBzaXplX3R5cGUgc2l6ZSk7Ci0gICAgdm9pZAkJc3dhcCAob3N0cmVhbSYgb3MpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkCQlpd3JpdGUgKGNvbnN0IFQmIHYpOwotICAgIGlubGluZSB2aXJ0dWFsIHNpemVfdHlwZQlvdmVyZmxvdyAoc2l6ZV90eXBlID0gMSl7IHJldHVybiAocmVtYWluaW5nKCkpOyB9Ci0gICAgdmlydHVhbCB2b2lkCXVubGluayAodm9pZCk7Ci0gICAgaW5saW5lIHZvaWQJCWxpbmsgKHZvaWQqIHAsIHNpemVfdHlwZSBuKQl7IG1lbWxpbms6OmxpbmsgKHAsIG4pOyB9Ci0gICAgaW5saW5lIHZvaWQJCWxpbmsgKG1lbWxpbmsmIGwpCQl7IG1lbWxpbms6OmxpbmsgKGwuZGF0YSgpLCBsLndyaXRhYmxlX3NpemUoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJbGluayAodm9pZCogZiwgdm9pZCogbCkJCXsgbWVtbGluazo6bGluayAoZiwgbCk7IH0KLQkJCU9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihsaW5rLCB2b2lkKikKLSAgICBpbmxpbmUgdm9pZAkJcmVsaW5rICh2b2lkKiBwLCBzaXplX3R5cGUgbikJeyBtZW1saW5rOjpyZWxpbmsgKHAsIG4pOyBtX1BvcyA9IDA7IH0KLSAgICBpbmxpbmUgdm9pZAkJcmVsaW5rIChtZW1saW5rJiBsKQkJeyByZWxpbmsgKGwuZGF0YSgpLCBsLndyaXRhYmxlX3NpemUoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJc2Vla3AgKG9mZl90IHAsIHNlZWtkaXIgZCA9IGJlZyk7Ci0gICAgaW5saW5lIG9mZl90CXRlbGxwICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHBvcygpKTsgfQotcHJvdGVjdGVkOgotICAgIGlubGluZSB2b2lkCQlTZXRQb3MgKHVvZmZfdCBuZXdQb3MpCQl7IG1fUG9zID0gbmV3UG9zOyB9Ci1wcml2YXRlOgotICAgIHVvZmZfdAkJbV9Qb3M7CS8vLzwgQ3VycmVudCB3cml0ZSBwb3NpdGlvbi4KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGNsYXNzIG9zdHJlYW1faXRlcmF0b3IgbW9zdHJlYW0uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBCaW5hcnlTdHJlYW1JdGVyYXRvcnMKLS8vLwotLy8vIFxicmllZiBBbiBpdGVyYXRvciBvdmVyIGFuIG9zdHJlYW0gdG8gdXNlIHdpdGggdVNUTCBhbGdvcml0aG1zLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU3RyZWFtID0gb3N0cmVhbT4KLWNsYXNzIG9zdHJlYW1faXRlcmF0b3IgewotcHVibGljOgotICAgIHR5cGVkZWYgVAkJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QJCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqCQlwb2ludGVyOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYJCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIG9zdHJlYW06OnNpemVfdHlwZQlzaXplX3R5cGU7Ci1wdWJsaWM6Ci0gICAgaW5saW5lIGV4cGxpY2l0CQlvc3RyZWFtX2l0ZXJhdG9yIChTdHJlYW0mIG9zKQotCQkJCSAgICA6IG1fT3MgKG9zKSB7fQotICAgIGlubGluZQkJCW9zdHJlYW1faXRlcmF0b3IgKGNvbnN0IG9zdHJlYW1faXRlcmF0b3ImIGl0ZXIpCi0JCQkJICAgIDogbV9PcyAoaXRlci5tX09zKSB7fSAKLSAgICAvLy8gV3JpdGVzIFxwIHYgaW50byB0aGUgc3RyZWFtLgotICAgIGlubGluZSBvc3RyZWFtX2l0ZXJhdG9yJglvcGVyYXRvcj0gKGNvbnN0IFQmIHYpCi0JCQkJICAgIHsgbV9PcyA8PCB2OyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBvc3RyZWFtX2l0ZXJhdG9yJglvcGVyYXRvciogKHZvaWQpIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgb3N0cmVhbV9pdGVyYXRvciYJb3BlcmF0b3IrKyAodm9pZCkgeyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBvc3RyZWFtX2l0ZXJhdG9yCW9wZXJhdG9yKysgKGludCkgeyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBvc3RyZWFtX2l0ZXJhdG9yJglvcGVyYXRvcis9IChzaXplX3R5cGUgbikgeyBtX09zLnNraXAgKG4pOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3Qgb3N0cmVhbV9pdGVyYXRvciYgaSkgY29uc3QKLQkJCQkgICAgeyByZXR1cm4gKG1fT3MucG9zKCkgPT0gaS5tX09zLnBvcygpKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I8IChjb25zdCBvc3RyZWFtX2l0ZXJhdG9yJiBpKSBjb25zdAotCQkJCSAgICB7IHJldHVybiAobV9Pcy5wb3MoKSA8IGkubV9Pcy5wb3MoKSk7IH0KLXByaXZhdGU6Ci0gICAgU3RyZWFtJgltX09zOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXR5cGVkZWYgb3N0cmVhbV9pdGVyYXRvcjx1dGY4c3ViY2hhcl90PiBvc3RyZWFtX2l0ZXJhdG9yX2Zvcl91dGY4OwotdHlwZWRlZiB1dGY4b3V0X2l0ZXJhdG9yPG9zdHJlYW1faXRlcmF0b3JfZm9yX3V0Zjg+IHV0Zjhvc3RyZWFtX2l0ZXJhdG9yOwotCi0vLy8gUmV0dXJucyBhIFVURi04IGFkYXB0b3Igd3JpdGluZyB0byBccCBvcy4KLWlubGluZSB1dGY4b3N0cmVhbV9pdGVyYXRvciB1dGY4b3V0IChvc3RyZWFtJiBvcykKLXsKLSAgICBvc3RyZWFtX2l0ZXJhdG9yX2Zvcl91dGY4IHNpIChvcyk7Ci0gICAgcmV0dXJuICh1dGY4b3N0cmVhbV9pdGVyYXRvciAoc2kpKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBNb3ZlIHRoZSB3cml0ZSBwb2ludGVyIHRvIFxwIG5ld1BvcwotaW5saW5lIHZvaWQgb3N0cmVhbTo6c2VlayAodW9mZl90IG5ld1BvcykKLXsKLSNpZmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLSAgICBpZiAobmV3UG9zID4gc2l6ZSgpKQotCXRocm93IHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uICgic2Vla3AiLCAiYnl0ZSIsIHBvcygpLCBuZXdQb3MgLSBwb3MoKSwgc2l6ZSgpKTsKLSNlbHNlCi0gICAgYXNzZXJ0IChuZXdQb3MgPD0gc2l6ZSgpKTsKLSNlbmRpZgotICAgIFNldFBvcyAobmV3UG9zKTsKLX0KLQotLy8vIFNldHMgdGhlIGN1cnJlbnQgd3JpdGUgcG9zaXRpb24gdG8gXHAgbmV3UG9zCi1pbmxpbmUgdm9pZCBvc3RyZWFtOjppc2VlayAoY29uc3RfaXRlcmF0b3IgbmV3UG9zKQotewotICAgIHNlZWsgKGRpc3RhbmNlIChiZWdpbigpLCBjb25zdF9jYXN0PGl0ZXJhdG9yPihuZXdQb3MpKSk7Ci19Ci0KLS8vLyBTZXRzIHRoZSBjdXJyZW50IHdyaXRlIHBvc2l0aW9uIHRvIFxwIHAgYmFzZWQgb24gXHAgZC4KLWlubGluZSB2b2lkIG9zdHJlYW06OnNlZWtwIChvZmZfdCBwLCBzZWVrZGlyIGQpCi17Ci0gICAgc3dpdGNoIChkKSB7Ci0JY2FzZSBiZWc6CXNlZWsgKHApOyBicmVhazsKLQljYXNlIGN1cjoJc2VlayAocG9zKCkgKyBwKTsgYnJlYWs7Ci0JY2FzZSBpb3NfYmFzZTo6ZW5kOglzZWVrIChzaXplKCkgLSBwKTsgYnJlYWs7Ci0gICAgfQotfQotCi0vLy8gU2tpcHMgXHAgbkJ5dGVzIHdpdGhvdXQgd3JpdGluZyBhbnl0aGluZy4KLWlubGluZSB2b2lkIG9zdHJlYW06OnNraXAgKHNpemVfdHlwZSBuQnl0ZXMpCi17Ci0gICAgc2VlayAocG9zKCkgKyBuQnl0ZXMpOwotfQotCi0vLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVtYWluaW5nIGluIHRoZSB3cml0ZSBidWZmZXIuCi1pbmxpbmUgb3N0cmVhbTo6c2l6ZV90eXBlIG9zdHJlYW06OnJlbWFpbmluZyAodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gKHNpemUoKSAtIHBvcygpKTsKLX0KLQotLy8vIFJldHVybnMgXGMgdHJ1ZSBpZiB0aGUgd3JpdGUgcG9pbnRlciBpcyBhbGlnbmVkIG9uIFxwIGdyYWluCi1pbmxpbmUgYm9vbCBvc3RyZWFtOjphbGlnbmVkIChzaXplX3R5cGUgZ3JhaW4pIGNvbnN0Ci17Ci0gICAgYXNzZXJ0ICh1aW50cHRyX3QoYmVnaW4oKSkgJSBncmFpbiA9PSAwICYmICJTdHJlYW1zIHNob3VsZCBiZSBhdHRhY2hlZCBhbGlnbmVkIGF0IHRoZSBtYXhpbXVtIGVsZW1lbnQgZ3JhaW4gdG8gYXZvaWQgYnVzIGVycm9ycy4iKTsKLSAgICByZXR1cm4gKHBvcygpICUgZ3JhaW4gPT0gMCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCB0byBiZSBhbGlnbmVkIG9uIFxwIGdyYWluLgotaW5saW5lIG9zdHJlYW06OnNpemVfdHlwZSBvc3RyZWFtOjphbGlnbl9zaXplIChzaXplX3R5cGUgZ3JhaW4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChBbGlnbiAocG9zKCksIGdyYWluKSAtIHBvcygpKTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgY29udGVudHMgb2YgXHAgYnVmIGludG8gdGhlIHN0cmVhbSBhcyBhIHJhdyBkdW1wLgotaW5saW5lIHZvaWQgb3N0cmVhbTo6d3JpdGUgKGNvbnN0IGNtZW1saW5rJiBidWYpCi17Ci0gICAgd3JpdGUgKGJ1Zi5iZWdpbigpLCBidWYuc2l6ZSgpKTsKLX0KLQotLy8vIFdyaXRlcyB0eXBlIFQgaW50byB0aGUgc3RyZWFtIHZpYSBhIGRpcmVjdCBwb2ludGVyIGNhc3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIG9zdHJlYW06Oml3cml0ZSAoY29uc3QgVCYgdikKLXsKLSAgICBhc3NlcnQgKGFsaWduZWQgKGFsaWdub2YgKHYpKSk7Ci0jaWZkZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HCi0gICAgdmVyaWZ5X3JlbWFpbmluZyAoIndyaXRlIiwgdHlwZWlkKHYpLm5hbWUoKSwgc2l6ZW9mKFQpKTsKLSNlbHNlCi0gICAgYXNzZXJ0IChyZW1haW5pbmcoKSA+PSBzaXplb2YoVCkpOwotI2VuZGlmCi0gICAgKnJlaW50ZXJwcmV0X2Nhc3Q8VCo+KGlwb3MoKSkgPSB2OwotICAgIFNldFBvcyAocG9zKCkgKyBzaXplb2YoVCkpOwotfQotCi0jZGVmaW5lIE9TVFJFQU1fT1BFUkFUT1IodHlwZSkJXAotaW5saW5lIG9zdHJlYW0mCW9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zLCB0eXBlIHYpCXsgb3MuaXdyaXRlKHYpOyByZXR1cm4gKG9zKTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLU9TVFJFQU1fT1BFUkFUT1IoVCopCi1PU1RSRUFNX09QRVJBVE9SKGludDhfdCkKLU9TVFJFQU1fT1BFUkFUT1IodWludDhfdCkKLU9TVFJFQU1fT1BFUkFUT1IoaW50MTZfdCkKLU9TVFJFQU1fT1BFUkFUT1IodWludDE2X3QpCi1PU1RSRUFNX09QRVJBVE9SKGludDMyX3QpCi1PU1RSRUFNX09QRVJBVE9SKHVpbnQzMl90KQotT1NUUkVBTV9PUEVSQVRPUihmbG9hdCkKLU9TVFJFQU1fT1BFUkFUT1IoZG91YmxlKQotT1NUUkVBTV9PUEVSQVRPUih3Y2hhcl90KQotI2lmIFNJWkVfT0ZfQk9PTCA9PSBTSVpFX09GX0NIQVIKLU9TVFJFQU1fT1BFUkFUT1IoYm9vbCkKLSNlbHNlCi1pbmxpbmUgb3N0cmVhbSYJb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGJvb2wgdikKLXsgb3MuaXdyaXRlICh1aW50OF90KHYpKTsgcmV0dXJuIChvcyk7IH0KLSNlbmRpZgotI2lmIEhBVkVfVEhSRUVfQ0hBUl9UWVBFUwotT1NUUkVBTV9PUEVSQVRPUihjaGFyKQotI2VuZGlmCi0jaWYgSEFWRV9JTlQ2NF9UCi1PU1RSRUFNX09QRVJBVE9SKGludDY0X3QpCi1PU1RSRUFNX09QRVJBVE9SKHVpbnQ2NF90KQotI2VuZGlmCi0jaWYgU0laRV9PRl9MT05HID09IFNJWkVfT0ZfSU5UCi1PU1RSRUFNX09QRVJBVE9SKGxvbmcpCi1PU1RSRUFNX09QRVJBVE9SKHVuc2lnbmVkIGxvbmcpCi0jZW5kaWYKLSNpZiBIQVZFX0xPTkdfTE9ORyAmJiAoIUhBVkVfSU5UNjRfVCB8fCBTSVpFX09GX0xPTkdfTE9ORyA+IDgpCi1PU1RSRUFNX09QRVJBVE9SKGxvbmcgbG9uZykKLU9TVFJFQU1fT1BFUkFUT1IodW5zaWduZWQgbG9uZyBsb25nKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL29mc3RyZWFtLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL29mc3RyZWFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk0OGE0ZDMuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvb2ZzdHJlYW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBvZnN0cmVhbS5jYwotLy8KLQotI2luY2x1ZGUgIm9mc3RyZWFtLmgiCi0jaW5jbHVkZSAidXN0cmluZy5oIgotI2luY2x1ZGUgInVleGNlcHRpb24uaCIKLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlmc3RyZWFtIGNpbiAgKFNURElOX0ZJTEVOTyk7Ci1vZnN0cmVhbSBjb3V0IChTVERPVVRfRklMRU5PKTsKLW9mc3RyZWFtIGNlcnIgKFNUREVSUl9GSUxFTk8pOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIERlZmF1bHQgY29uc3RydWN0b3IuCi1vZnN0cmVhbTo6b2ZzdHJlYW0gKHZvaWQpCi06IG9zdHJpbmdzdHJlYW0gKCksCi0gIG1fRmlsZSAoKQotewotICAgIHJlc2VydmUgKDI1NSk7Ci19Ci0KLS8vLyBDb25zdHJ1Y3RzIGEgc3RyZWFtIGZvciB3cml0aW5nIHRvIFxwIEZkLgotb2ZzdHJlYW06Om9mc3RyZWFtIChpbnQgRmQpCi06IG9zdHJpbmdzdHJlYW0gKCksCi0gIG1fRmlsZSAoRmQpCi17Ci0gICAgY2xlYXIgKG1fRmlsZS5yZHN0YXRlKCkpOwotICAgIHJlc2VydmUgKDI1NSk7Ci19Ci0KLS8vLyBDb25zdHJ1Y3RzIGEgc3RyZWFtIGZvciB3cml0aW5nIHRvIFxwIGZpbGVuYW1lLgotb2ZzdHJlYW06Om9mc3RyZWFtIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgb3Blbm1vZGUgbW9kZSkKLTogb3N0cmluZ3N0cmVhbSAoKSwKLSAgbV9GaWxlIChmaWxlbmFtZSwgbW9kZSkKLXsKLSAgICBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7Ci19Ci0KLS8vLyBEZWZhdWx0IGRlc3RydWN0b3IuCi1vZnN0cmVhbTo6fm9mc3RyZWFtICh2b2lkKQotewotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICBmbHVzaCgpOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLSAgICB0cnkgeyBmbHVzaCgpOyB9IGNhdGNoICguLi4pIHt9Ci0jZW5kaWYKLX0KLQotLy8vIEZsdXNoZXMgdGhlIGJ1ZmZlciB0byB0aGUgZmlsZS4KLXZvaWQgb2ZzdHJlYW06OmZsdXNoICh2b2lkKQotewotICAgIHdoaWxlIChwb3MoKSAmJiBvdmVyZmxvdyAocmVtYWluaW5nKCkpKTsKLSAgICBtX0ZpbGUuc3luYygpOwotICAgIGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsKLX0KLQotLy8vIFNlZWtzIHRvIFxwIHAgYmFzZWQgb24gXHAgZC4KLXZvaWQgb2ZzdHJlYW06OnNlZWtwIChvZmZfdCBwLCBzZWVrZGlyIGQpCi17Ci0gICAgZmx1c2goKTsKLSAgICBtX0ZpbGUuc2Vla3AgKHAsIGQpOwotICAgIGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsKLX0KLQotLy8vIENhbGxlZCB3aGVuIG1vcmUgYnVmZmVyIHNwYWNlIChccCBuIGJ5dGVzKSBpcyBuZWVkZWQuCi1vZnN0cmVhbTo6c2l6ZV90eXBlIG9mc3RyZWFtOjpvdmVyZmxvdyAoc2l6ZV90eXBlIG4pCi17Ci0gICAgaWYgKGVvZigpIHx8IChuID4gcmVtYWluaW5nKCkgJiYgbiA8IGNhcGFjaXR5KCkgLSBwb3MoKSkpCi0JcmV0dXJuIChvc3RyaW5nc3RyZWFtOjpvdmVyZmxvdyAobikpOwotICAgIHNpemVfdHlwZSBidyA9IG1fRmlsZS53cml0ZSAoY2RhdGEoKSwgcG9zKCkpOwotICAgIGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsKLSAgICBlcmFzZSAoYmVnaW4oKSwgYncpOwotICAgIGlmIChyZW1haW5pbmcoKSA8IG4pCi0Jb3N0cmluZ3N0cmVhbTo6b3ZlcmZsb3cgKG4pOwotICAgIHJldHVybiAocmVtYWluaW5nKCkpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIENvbnN0cnVjdHMgYSBzdHJlYW0gdG8gcmVhZCBmcm9tIFxwIEZkLgotaWZzdHJlYW06Omlmc3RyZWFtIChpbnQgRmQpCi06IGlzdHJpbmdzdHJlYW0gKCksCi0gIG1fQnVmZmVyICgyNTUpLAotICBtX0ZpbGUgKEZkKQotewotICAgIGxpbmsgKG1fQnVmZmVyLmRhdGEoKSwgMFUpOwotfQotCi0vLy8gQ29uc3RydWN0cyBhIHN0cmVhbSB0byByZWFkIGZyb20gXHAgZmlsZW5hbWUuCi1pZnN0cmVhbTo6aWZzdHJlYW0gKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBvcGVubW9kZSBtb2RlKQotOiBpc3RyaW5nc3RyZWFtICgpLAotICBtX0J1ZmZlciAoMjU1KSwKLSAgbV9GaWxlIChmaWxlbmFtZSwgbW9kZSkKLXsKLSAgICBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7Ci0gICAgbGluayAobV9CdWZmZXIuZGF0YSgpLCAwVSk7Ci19Ci0KLS8vLyBSZWFkcyBhdCBsZWFzdCBccCBuIG1vcmUgYnl0ZXMgYW5kIHJldHVybnMgYXZhaWxhYmxlIGJ5dGVzLgotaWZzdHJlYW06OnNpemVfdHlwZSBpZnN0cmVhbTo6dW5kZXJmbG93IChzaXplX3R5cGUgbikKLXsKLSAgICBpZiAoZW9mKCkpCi0JcmV0dXJuIChpc3RyaW5nc3RyZWFtOjp1bmRlcmZsb3cgKG4pKTsKLQotICAgIGNvbnN0IHNzaXplX3QgZnJlZVNwYWNlID0gbV9CdWZmZXIuc2l6ZSgpIC0gcG9zKCk7Ci0gICAgY29uc3Qgc3NpemVfdCBuZWVkZWRGcmVlU3BhY2UgPSBtYXggKG4sIG1fQnVmZmVyLnNpemUoKSAvIDIpOwotICAgIGNvbnN0IHNpemVfdCBvdWdodFRvRXJhc2UgPSBBbGlnbiAobWF4ICgwLCBuZWVkZWRGcmVlU3BhY2UgLSBmcmVlU3BhY2UpKTsKLSAgICBjb25zdCBzaXplX3QgblRvRXJhc2UgPSBtaW4gKHBvcygpLCBvdWdodFRvRXJhc2UpOwotICAgIG1fQnVmZmVyLm1lbWxpbms6OmVyYXNlIChtX0J1ZmZlci5iZWdpbigpLCBuVG9FcmFzZSk7Ci0gICAgY29uc3QgdW9mZl90IG9sZFBvcyAocG9zKCkgLSBuVG9FcmFzZSk7Ci0KLSAgICBzaXplX3R5cGUgYnIgPSBvbGRQb3M7Ci0gICAgaWYgKG1fQnVmZmVyLnNpemUoKSAtIGJyIDwgbikgewotCW1fQnVmZmVyLnJlc2l6ZSAoYnIgKyBuZWVkZWRGcmVlU3BhY2UpOwotCWxpbmsgKG1fQnVmZmVyLmRhdGEoKSwgMFUpOwotICAgIH0KLSAgICBjb3V0LmZsdXNoKCk7Ci0KLSAgICB3aGlsZSAoYnIgLSBvbGRQb3MgPCBuICYmIG1fRmlsZS5nb29kKCkpCi0JYnIgKz0gbV9GaWxlLnJlYWRzb21lIChtX0J1ZmZlci5iZWdpbigpICsgYnIsIG1fQnVmZmVyLnNpemUoKSAtIGJyKTsKLSAgICBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7Ci0KLSAgICBtX0J1ZmZlclticl0gPSBzdHJpbmc6OmNfVGVybWluYXRvcjsKLSAgICBsaW5rIChtX0J1ZmZlci5kYXRhKCksIGJyKTsKLSAgICBzZWVrIChvbGRQb3MpOwotICAgIHJldHVybiAocmVtYWluaW5nKCkpOwotfQotCi0vLy8gRmx1c2hlcyB0aGUgaW5wdXQuCi12b2lkIGlmc3RyZWFtOjpzeW5jICh2b2lkKQotewotICAgIGlzdHJpbmdzdHJlYW06OnN5bmMoKTsKLSAgICB1bmRlcmZsb3cgKDBVKTsKLSAgICBtX0ZpbGUuc3luYygpOwotICAgIGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsKLX0KLQotLy8vIFNlZWtzIHRvIFxwIHAgYmFzZWQgb24gXHAgZC4KLXZvaWQgaWZzdHJlYW06OnNlZWtnIChvZmZfdCBwLCBzZWVrZGlyIGQpCi17Ci0gICAgbV9CdWZmZXIuY2xlYXIoKTsKLSAgICBsaW5rIChtX0J1ZmZlcik7Ci0gICAgbV9GaWxlLnNlZWtnIChwLCBkKTsKLSAgICBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL29mc3RyZWFtLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9vZnN0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzgwODMzLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL29mc3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gb2ZzdHJlYW0uaAotLy8KLQotI2lmbmRlZiBGRE9TVFJFQU1fSF81RTI3RkMzRDUzMEJGM0NBMDRENkM3M0Y1NzAwRUVDQwotI2RlZmluZSBGRE9TVFJFQU1fSF81RTI3RkMzRDUzMEJGM0NBMDRENkM3M0Y1NzAwRUVDQwotCi0jaW5jbHVkZSAic2lzdHJlYW0uaCIKLSNpbmNsdWRlICJzb3N0cmVhbS5oIgotI2luY2x1ZGUgImZzdHJlYW0uaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIG9mc3RyZWFtIGZkb3N0cmVhbS5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIERldmljZVN0cmVhbXMKLS8vLyBcYnJpZWYgQSBzdHJpbmcgc3RyZWFtIHRoYXQgd3JpdGVzIHRvIGFuIGZkLiBJbXBsZW1lbnRzIGNvdXQgYW5kIGNlcnIuCi1jbGFzcyBvZnN0cmVhbSA6IHB1YmxpYyBvc3RyaW5nc3RyZWFtIHsKLXB1YmxpYzoKLQkJCW9mc3RyZWFtICh2b2lkKTsKLSAgICBleHBsaWNpdAkJb2ZzdHJlYW0gKGludCBGZCk7Ci0gICAgZXhwbGljaXQJCW9mc3RyZWFtIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgb3Blbm1vZGUgbW9kZSA9IG91dCk7Ci0gICAgdmlydHVhbAkgICAgICAgfm9mc3RyZWFtICh2b2lkKTsKLSAgICBpbmxpbmUgdm9pZAkJb3BlbiAoY29uc3QgY2hhciogZmlsZW5hbWUsIG9wZW5tb2RlIG1vZGUgPSBvdXQpIHsgbV9GaWxlLm9wZW4gKGZpbGVuYW1lLCBtb2RlKTsgY2xlYXIgKG1fRmlsZS5yZHN0YXRlKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWNsb3NlICh2b2lkKQkJeyBtX0ZpbGUuY2xvc2UoKTsgY2xlYXIgKG1fRmlsZS5yZHN0YXRlKCkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCWlzX29wZW4gKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtX0ZpbGUuaXNfb3BlbigpKTsgfQotICAgIGlubGluZSBpb3N0YXRlCWV4Y2VwdGlvbnMgKGlvc3RhdGUgdikJeyBvc3RyaW5nc3RyZWFtOjpleGNlcHRpb25zKHYpOyByZXR1cm4gKG1fRmlsZS5leGNlcHRpb25zKHYpKTsgfQotICAgIGlubGluZSB2b2lkCQlzZXRzdGF0ZSAoaW9zdGF0ZSB2KQl7IG9zdHJpbmdzdHJlYW06OnNldHN0YXRlKHYpOyBtX0ZpbGUuc2V0c3RhdGUodik7IH0KLSAgICBpbmxpbmUgdm9pZAkJY2xlYXIgKGlvc3RhdGUgdiA9IGdvb2RiaXQpCXsgb3N0cmluZ3N0cmVhbTo6Y2xlYXIodik7IG1fRmlsZS5jbGVhcih2KTsgfQotICAgIGlubGluZSBvZmZfdAl0ZWxscCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX0ZpbGUudGVsbHAoKSArIG9zdHJpbmdzdHJlYW06OnRlbGxwKCkpOyB9Ci0gICAgaW5saW5lIGludAkJZmQgKHZvaWQpIGNvbnN0CQkJeyByZXR1cm4gKG1fRmlsZS5mZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQlzdGF0IChzdHJ1Y3Qgc3RhdCYgcnMpIGNvbnN0CXsgbV9GaWxlLnN0YXQgKHJzKTsgfQotICAgIGlubGluZSB2b2lkCQlzZXRfbm9uYmxvY2sgKGJvb2wgdiA9IHRydWUpCXsgbV9GaWxlLnNldF9ub25ibG9jayAodik7IH0KLSAgICBpbmxpbmUgaW50CQlpb2N0bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBsb25nIGFyZ3VtZW50ID0gMCkJeyByZXR1cm4gKG1fRmlsZS5pb2N0bCAocm5hbWUsIHJlcXVlc3QsIGFyZ3VtZW50KSk7IH0KLSAgICBpbmxpbmUgaW50CQlpb2N0bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBpbnQgYXJndW1lbnQpCQl7IHJldHVybiAobV9GaWxlLmlvY3RsIChybmFtZSwgcmVxdWVzdCwgYXJndW1lbnQpKTsgfQotICAgIGlubGluZSBpbnQJCWlvY3RsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIHZvaWQqIGFyZ3VtZW50KQkJeyByZXR1cm4gKG1fRmlsZS5pb2N0bCAocm5hbWUsIHJlcXVlc3QsIGFyZ3VtZW50KSk7IH0KLSAgICB2b2lkCQlzZWVrcCAob2ZmX3QgcCwgc2Vla2RpciBkID0gYmVnKTsKLSAgICB2b2lkCQlmbHVzaCAodm9pZCk7Ci0gICAgdmlydHVhbCBzaXplX3R5cGUJb3ZlcmZsb3cgKHNpemVfdHlwZSBuID0gMSk7Ci1wcml2YXRlOgotICAgIGZzdHJlYW0JCW1fRmlsZTsKLX07Ci0KLS8vLyBcY2xhc3MgaWZzdHJlYW0gZmRvc3RyZWFtLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRGV2aWNlU3RyZWFtcwotLy8vIFxicmllZiBBIHN0cmluZyBzdHJlYW0gdGhhdCByZWFkcyBmcm9tIGFuIGZkLiBJbXBsZW1lbnRzIGNpbi4KLWNsYXNzIGlmc3RyZWFtIDogcHVibGljIGlzdHJpbmdzdHJlYW0gewotcHVibGljOgotCQkJaWZzdHJlYW0gKHZvaWQpOwotICAgIGV4cGxpY2l0CQlpZnN0cmVhbSAoaW50IEZkKTsKLSAgICBleHBsaWNpdAkJaWZzdHJlYW0gKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBvcGVubW9kZSBtb2RlID0gaW4pOwotICAgIGlubGluZSB2b2lkCQlvcGVuIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgb3Blbm1vZGUgbW9kZSA9IGluKQl7IG1fRmlsZS5vcGVuIChmaWxlbmFtZSwgbW9kZSk7IGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsgfQotICAgIGlubGluZSB2b2lkCQljbG9zZSAodm9pZCkJCXsgbV9GaWxlLmNsb3NlKCk7IGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsgfQotICAgIGlubGluZSBib29sCQlpc19vcGVuICh2b2lkKSBjb25zdAl7IHJldHVybiAobV9GaWxlLmlzX29wZW4oKSk7IH0KLSAgICBpbmxpbmUgaW9zdGF0ZQlleGNlcHRpb25zIChpb3N0YXRlIHYpCXsgaXN0cmluZ3N0cmVhbTo6ZXhjZXB0aW9ucyh2KTsgcmV0dXJuIChtX0ZpbGUuZXhjZXB0aW9ucyh2KSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJc2V0c3RhdGUgKGlvc3RhdGUgdikJeyBpc3RyaW5nc3RyZWFtOjpzZXRzdGF0ZSh2KTsgbV9GaWxlLnNldHN0YXRlKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWNsZWFyIChpb3N0YXRlIHYgPSBnb29kYml0KQl7IGlzdHJpbmdzdHJlYW06OmNsZWFyKHYpOyBtX0ZpbGUuY2xlYXIodik7IH0KLSAgICBpbmxpbmUgb2ZmX3QJdGVsbGcgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9GaWxlLnRlbGxnKCkgLSByZW1haW5pbmcoKSk7IH0KLSAgICBpbmxpbmUgaW50CQlmZCAodm9pZCkgY29uc3QJCQl7IHJldHVybiAobV9GaWxlLmZkKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXN0YXQgKHN0cnVjdCBzdGF0JiBycykgY29uc3QJeyBtX0ZpbGUuc3RhdCAocnMpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXNldF9ub25ibG9jayAoYm9vbCB2ID0gdHJ1ZSkJeyBtX0ZpbGUuc2V0X25vbmJsb2NrICh2KTsgfQotICAgIGlubGluZSBpbnQJCWlvY3RsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIGxvbmcgYXJndW1lbnQgPSAwKQl7IHJldHVybiAobV9GaWxlLmlvY3RsIChybmFtZSwgcmVxdWVzdCwgYXJndW1lbnQpKTsgfQotICAgIGlubGluZSBpbnQJCWlvY3RsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIGludCBhcmd1bWVudCkJCXsgcmV0dXJuIChtX0ZpbGUuaW9jdGwgKHJuYW1lLCByZXF1ZXN0LCBhcmd1bWVudCkpOyB9Ci0gICAgaW5saW5lIGludAkJaW9jdGwgKGNvbnN0IGNoYXIqIHJuYW1lLCBpbnQgcmVxdWVzdCwgdm9pZCogYXJndW1lbnQpCQl7IHJldHVybiAobV9GaWxlLmlvY3RsIChybmFtZSwgcmVxdWVzdCwgYXJndW1lbnQpKTsgfQotICAgIHZvaWQJCXNlZWtnIChvZmZfdCBwLCBzZWVrZGlyIGQgPSBiZWcpOwotICAgIHZvaWQJCXN5bmMgKHZvaWQpOwotICAgIHZpcnR1YWwgc2l6ZV90eXBlCXVuZGVyZmxvdyAoc2l6ZV90eXBlIG4gPSAxKTsKLXByaXZhdGU6Ci0gICAgc3RyaW5nCQltX0J1ZmZlcjsKLSAgICBmc3RyZWFtCQltX0ZpbGU7Ci19OwotCi1leHRlcm4gb2ZzdHJlYW0gY291dCwgY2VycjsKLWV4dGVybiBpZnN0cmVhbSBjaW47Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3NpbWQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3NpbWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUwZWZjMi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zaW1kLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NjUgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vLyBcZmlsZSBzaW1kLmgKLS8vLyBcYnJpZWYgU0lNRC10eXBlIGFsZ29yaXRobXMsIHdpdGggaGFyZHdhcmUgYWNjZWxlcmF0aW9uLCBpZiBhdmFpbGFibGUuCi0vLy8KLS8vLyBBbGwgYWxnb3JpdGhtcyBhcmUgY29udGFpbmVyLWJhc2VkIGJlY2F1c2UgaXRlcmF0b3Igc3ludGF4IGlzIGp1c3QgdG9vCi0vLy8gZGFtbiB2ZXJib3NlIGFuZCBiZWNhdXNlIHRoZSBzcGVjaWFsaXphdGlvbnMgbmVlZCB0byBiZSBhYmxlIHRvIHRlbGwKLS8vLyBob3cgbWFueSBlbGVtZW50cyBhcmUgaW4gdGhlIGNvbnRhaW5lciBpbiBvcmRlciB0byBjaG9vc2UgcHJvcGVyIFNJTUQKLS8vLyBpbnN0cnVjdGlvbiBzZXQgKGkuZS46IDQgZmxvYXRzIHNlbGVjdCBTU0UsIHdoaWxlIDIgZmxvYXRzIHNlbGVjdCAzZE5vdyEpCi0vLy8gU3BlY2lhbGl6YXRpb25zIGFyZSBvbmx5IGZvciB0aGUgdHVwbGUgdGVtcGxhdGUgYmVjYXVzZSB0aGUgY29udGFpbmVyCi0vLy8gbXVzdCBiZSBvZiBhIGZpeGVkIGFuZCBjb21waWxlLXRpbWUta25vd24gc2l6ZSBmb3IgdGhlIGNvbXBpbGVyIHRvIGJlCi0vLy8gYWJsZSB0byBjaG9vc2UgdGhlIHNwZWNpYWxpemF0aW9uLgotLy8vCi0KLSNpZm5kZWYgU0lNRF9IXzM5QkUyRDk3MERGNEJEMDA1MDhDQ0ZGQjQ4MjQ5NkY5Ci0jZGVmaW5lIFNJTURfSF8zOUJFMkQ5NzBERjRCRDAwNTA4Q0NGRkI0ODI0OTZGOQotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVsaW1pdHMuaCIKLSNpZiBIQVZFX01BVEhfSAotICAgICNpbmNsdWRlIDxtYXRoLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSNpbmNsdWRlIDxzdGRpby5oPgotI3VuZGVmIENQVV9IQVNfTU1YCi0jZW5kaWYKLQotbmFtZXNwYWNlIHVzdGwgewotbmFtZXNwYWNlIHNpbWQgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEdlbmVyaWMgYWxnb3JpdGhtcwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBBcHBsaWVzIFxwIG9wIHRvIGVhY2ggZWxlbWVudCBpbiBccCBvcDEuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyLCB0eXBlbmFtZSBVbmFyeU9wZXJhdGlvbj4KLWlubGluZSB2b2lkIHBhY2tvcCAoQ3RyJiBvcDEsIFVuYXJ5T3BlcmF0aW9uIG9wKQotewotICAgIGZvcmVhY2ggKHR5cGVuYW1lIEN0cjo6aXRlcmF0b3IsIGksIG9wMSkKLQlvcCAoKmkpOwotfQotCi0vLy8gQXBwbGllcyBccCBvcCB0byBlYWNoIGVsZW1lbnQgaW4gXHAgb3AxIGFuZCBccCBvcDIgYW5kIHN0b3JlcyBpbiBccCBvcDIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyLCB0eXBlbmFtZSBCaW5hcnlPcGVyYXRpb24+Ci1pbmxpbmUgdm9pZCBwYWNrb3AgKGNvbnN0IEN0ciYgb3AxLCBDdHImIG9wMiwgQmluYXJ5T3BlcmF0aW9uIG9wKQotewotICAgIGFzc2VydCAob3AyLnNpemUoKSA8PSBvcDEuc2l6ZSgpKTsKLSAgICB0eXBlbmFtZSBDdHI6OmNvbnN0X2l0ZXJhdG9yIGkxIChvcDEuYmVnaW4oKSk7Ci0gICAgdHlwZW5hbWUgQ3RyOjppdGVyYXRvciBpMiAob3AyLmJlZ2luKCkpOwotICAgIGZvciAoOyBpMiAhPSBvcDIuZW5kKCk7ICsraTEsICsraTIpCi0JKmkyID0gb3AgKCppMiwgKmkxKTsKLX0KLQotLy8vIEFwcGxpZXMgXHAgb3AgdG8gY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiBccCBvcDEgYW5kIFxwIG9wMiBhbmQgc3RvcmVzIGluIFxwIHJlc3VsdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDdHIsIHR5cGVuYW1lIEJpbmFyeU9wZXJhdGlvbj4KLWlubGluZSB2b2lkIHBhY2tvcCAoY29uc3QgQ3RyJiBvcDEsIGNvbnN0IEN0ciYgb3AyLCBDdHImIHJlc3VsdCwgQmluYXJ5T3BlcmF0aW9uIG9wKQotewotICAgIGFzc2VydCAob3AxLnNpemUoKSA8PSBvcDIuc2l6ZSgpICYmIG9wMS5zaXplKCkgPD0gcmVzdWx0LnNpemUoKSk7Ci0gICAgcGFzc2lnbiAob3AxLCByZXN1bHQpOwotICAgIHBhY2tvcCAob3AyLCByZXN1bHQpOwotfQotCi0vLy8gQ29waWVzIFxwIG9wMSBpbnRvIFxwIHJlc3VsdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDdHI+Ci1pbmxpbmUgdm9pZCBwYXNzaWduIChjb25zdCBDdHImIG9wMSwgQ3RyJiByZXN1bHQpCi17Ci0gICAgYXNzZXJ0IChvcDEuc2l6ZSgpIDw9IHJlc3VsdC5zaXplKCkpOwotICAgIHR5cGVuYW1lIEN0cjo6aXRlcmF0b3IgZCAocmVzdWx0LmJlZ2luKCkpOwotICAgIGZvcmVhY2ggKHR5cGVuYW1lIEN0cjo6Y29uc3RfaXRlcmF0b3IsIHMsIG9wMSkKLQkqZCsrID0gKnM7Ci19Ci0KLS8vLyBDb3BpZXMgXHAgcmVzdWx0LnNpemUoKSBlbGVtZW50cyBmcm9tIFxwIG9wMSB0byBccCByZXN1bHQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyPgotaW5saW5lIHZvaWQgaXBhc3NpZ24gKHR5cGVuYW1lIEN0cjo6Y29uc3RfaXRlcmF0b3Igb3AxLCBDdHImIHJlc3VsdCkKLXsKLSAgICBmb3JlYWNoICh0eXBlbmFtZSBDdHI6Oml0ZXJhdG9yLCBkLCByZXN1bHQpCi0JKmQgPSAqb3AxKys7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDdHIxLCB0eXBlbmFtZSBDdHIyLCB0eXBlbmFtZSBDb252ZXJ0RnVuY3Rpb24+Ci1pbmxpbmUgdm9pZCBwY29udmVydCAoY29uc3QgQ3RyMSYgb3AxLCBDdHIyJiBvcDIsIENvbnZlcnRGdW5jdGlvbiBmKQotewotICAgIGFzc2VydCAob3AxLnNpemUoKSA8PSBvcDIuc2l6ZSgpKTsKLSAgICB0eXBlbmFtZSBDdHIxOjpjb25zdF9pdGVyYXRvciBpMSAob3AxLmJlZ2luKCkpOwotICAgIHR5cGVuYW1lIEN0cjI6Oml0ZXJhdG9yIGkyIChvcDIuYmVnaW4oKSk7Ci0gICAgZm9yICg7IGkxICE9IG9wMS5lbmQoKTsgKytpMSwgKytpMikKLQkqaTIgPSBmICgqaTEpOwotfQotCi0vLyBGdW5jdGlvbm9pZHMgZm9yIFNJTUQgb3BlcmF0aW9ucywgbGlrZSBzYXR1cmF0aW9uIGFyaXRobWV0aWMsIHNoaWZ0cywgZXRjLgotU1REX0JJTkFSWV9GVU5DVE9SIChmcGFkZHMsIFQsICgoYiA+IG51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAtIGEpID8gbnVtZXJpY19saW1pdHM8VD46Om1heCgpIDogYSArIGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChmcHN1YnMsIFQsICgoYSA8IG51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSArIGIpID8gbnVtZXJpY19saW1pdHM8VD46Om1pbigpIDogYSAtIGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChmcHNobCwgIFQsIChhIDw8IGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChmcHNociwgIFQsIChhID4+IGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChmcG1pbiwgIFQsIChtaW4gKGEsIGIpKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAoZnBtYXgsICBULCAobWF4IChhLCBiKSkpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGZwYXZnLCAgVCwgKChhICsgYiArIDEpIC8gMikpCi1TVERfQ09OVkVSU0lPTl9GVU5DVE9SIChmY2FzdCwgKEQoYSkpKQotI2lmIEhBVkVfTUFUSF9ICi1TVERfVU5BUllfRlVOQ1RPUiAoZnByZWNpcHJvY2FsLFQsICgxIC8gYSkpCi1TVERfVU5BUllfRlVOQ1RPUiAoZnBzcXJ0LAlULCAocmVzZXRfbW14KCksIFQgKHNxcnQgKGEpKSkpCi1TVERfVU5BUllfRlVOQ1RPUiAoZnByZWNpcHNxcnQsCVQsIChyZXNldF9tbXgoKSwgMSAvIFQoc3FydCAoYSkpKSkKLVNURF9VTkFSWV9GVU5DVE9SIChmc2luLAlULCAocmVzZXRfbW14KCksIFQgKHNpbiAoYSkpKSkKLVNURF9VTkFSWV9GVU5DVE9SIChmY29zLAlULCAocmVzZXRfbW14KCksIFQgKGNvcyAoYSkpKSkKLVNURF9VTkFSWV9GVU5DVE9SIChmdGFuLAlULCAocmVzZXRfbW14KCksIFQgKHRhbiAoYSkpKSkKLSNpZiBIQVZFX1JJTlRGCi1TVERfQ09OVkVSU0lPTl9GVU5DVE9SIChmcm91bmQsIChyZXNldF9tbXgoKSwgRChyaW50ZihhKSkpKQotI2Vsc2UKLVNURF9DT05WRVJTSU9OX0ZVTkNUT1IgKGZyb3VuZCwgKHJlc2V0X21teCgpLCBEKHJpbnQoYSkpKSkKLSNlbmRpZgotdGVtcGxhdGUgPD4gaW5saW5lIGludDMyX3QgZnJvdW5kPGRvdWJsZSxpbnQzMl90Pjo6b3BlcmF0b3IoKShjb25zdCBkb3VibGUmIGEpIGNvbnN0IHsgcmVzZXRfbW14KCk7IHJldHVybiAoaW50MzJfdChyaW50KGEpKSk7IH0KLSNlbmRpZgotdGVtcGxhdGUgPD4gaW5saW5lIGZsb2F0IGZwYXZnPGZsb2F0Pjo6b3BlcmF0b3IoKShjb25zdCBmbG9hdCYgYSwgY29uc3QgZmxvYXQmIGIpIGNvbnN0IHsgcmV0dXJuICgoYSArIGIpIC8gMik7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBkb3VibGUgZnBhdmc8ZG91YmxlPjo6b3BlcmF0b3IoKShjb25zdCBkb3VibGUmIGEsIGNvbnN0IGRvdWJsZSYgYikgY29uc3QgeyByZXR1cm4gKChhICsgYikgLyAyKTsgfQotCi0jZGVmaW5lIFNJTURfUEFDS0VET1AxKG5hbWUsIG9wZXJhdGlvbikJCVwKLXRlbXBsYXRlIDx0eXBlbmFtZSBDdHI+CQkJCVwKLWlubGluZSB2b2lkIG5hbWUgKEN0ciYgb3AxKQkJCVwKLXsJCQkJCQlcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBDdHI6OnZhbHVlX3R5cGUgdmFsdWVfdDsJXAotICAgIHBhY2tvcCAob3AxLCBvcGVyYXRpb248dmFsdWVfdD4oKSk7CQlcCi19Ci0jZGVmaW5lIFNJTURfUEFDS0VET1AyKG5hbWUsIG9wZXJhdGlvbikJCVwKLXRlbXBsYXRlIDx0eXBlbmFtZSBDdHI+CQkJCVwKLWlubGluZSB2b2lkIG5hbWUgKGNvbnN0IEN0ciYgb3AxLCBDdHImIG9wMikJXAotewkJCQkJCVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEN0cjo6dmFsdWVfdHlwZSB2YWx1ZV90OwlcCi0gICAgcGFja29wIChvcDEsIG9wMiwgb3BlcmF0aW9uPHZhbHVlX3Q+KCkpOwlcCi19Ci0jZGVmaW5lIFNJTURfUEFDS0VET1AzKG5hbWUsIG9wZXJhdGlvbikJCQlcCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyPgkJCQkJXAotaW5saW5lIHZvaWQgbmFtZSAoY29uc3QgQ3RyJiBvcDEsIGNvbnN0IEN0ciYgb3AyLCBDdHImIHJlc3VsdCkJXAotewkJCQkJCQlcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBDdHI6OnZhbHVlX3R5cGUgdmFsdWVfdDsJCVwKLSAgICBwYWNrb3AgKG9wMSwgb3AyLCByZXN1bHQsIG9wZXJhdGlvbjx2YWx1ZV90PigpKTsJXAotfQotI2RlZmluZSBTSU1EX1NJTkdMRU9QMShuYW1lLCBvcGVyYXRpb24pCQlcCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4JCQkJXAotaW5saW5lIFQgbmFtZSAoVCBvcCkJCQkJXAotewkJCQkJCVwKLSAgICBvcGVyYXRpb248VD4gb2JqOwkJCQlcCi0gICAgcmV0dXJuIChvYmoob3ApKTsJCQkJXAotfQotI2RlZmluZSBTSU1EX0NPTlZFUlRPUChuYW1lLCBvcGVyYXRpb24pCQlcCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyMSwgdHlwZW5hbWUgQ3RyMj4JCVwKLWlubGluZSB2b2lkIG5hbWUgKGNvbnN0IEN0cjEmIG9wMSwgQ3RyMiYgb3AyKQlcCi17CQkJCQkJXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3RyMTo6dmFsdWVfdHlwZSB2YWx1ZTFfdDsJXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3RyMjo6dmFsdWVfdHlwZSB2YWx1ZTJfdDsJXAotICAgIHBjb252ZXJ0IChvcDEsIG9wMiwgb3BlcmF0aW9uPHZhbHVlMV90LCB2YWx1ZTJfdD4oKSk7XAotfQotCi1TSU1EX1BBQ0tFRE9QMiAocGFkZCwgcGx1cykKLVNJTURfUEFDS0VET1AyIChwc3ViLCBtaW51cykKLVNJTURfUEFDS0VET1AyIChwbXVsLCBtdWx0aXBsaWVzKQotU0lNRF9QQUNLRURPUDIgKHBkaXYsIGRpdmlkZXMpCi1TSU1EX1BBQ0tFRE9QMiAocGFuZCwgYml0d2lzZV9hbmQpCi1TSU1EX1BBQ0tFRE9QMiAocG9yLCBiaXR3aXNlX29yKQotU0lNRF9QQUNLRURPUDIgKHB4b3IsIGJpdHdpc2VfeG9yKQotU0lNRF9QQUNLRURPUDIgKHBzaGwsIGZwc2hsKQotU0lNRF9QQUNLRURPUDIgKHBzaHIsIGZwc2hyKQotU0lNRF9QQUNLRURPUDIgKHBzdWJzLCBmcHN1YnMpCi1TSU1EX1BBQ0tFRE9QMiAocG1pbiwgZnBtaW4pCi1TSU1EX1BBQ0tFRE9QMiAocG1heCwgZnBtYXgpCi1TSU1EX1BBQ0tFRE9QMiAocGF2ZywgZnBhdmcpCi0KLVNJTURfUEFDS0VET1AzIChwYWRkLCBwbHVzKQotU0lNRF9QQUNLRURPUDMgKHBzdWIsIG1pbnVzKQotU0lNRF9QQUNLRURPUDMgKHBtdWwsIG11bHRpcGxpZXMpCi1TSU1EX1BBQ0tFRE9QMyAocGRpdiwgZGl2aWRlcykKLVNJTURfUEFDS0VET1AzIChwYW5kLCBiaXR3aXNlX2FuZCkKLVNJTURfUEFDS0VET1AzIChwb3IsIGJpdHdpc2Vfb3IpCi1TSU1EX1BBQ0tFRE9QMyAocHhvciwgYml0d2lzZV94b3IpCi1TSU1EX1BBQ0tFRE9QMyAocHNobCwgZnBzaGwpCi1TSU1EX1BBQ0tFRE9QMyAocHNociwgZnBzaHIpCi1TSU1EX1BBQ0tFRE9QMyAocGFkZHMsIGZwYWRkcykKLVNJTURfUEFDS0VET1AzIChwc3VicywgZnBzdWJzKQotU0lNRF9QQUNLRURPUDMgKHBtaW4sIGZwbWluKQotU0lNRF9QQUNLRURPUDMgKHBtYXgsIGZwbWF4KQotU0lNRF9QQUNLRURPUDMgKHBhdmcsIGZwYXZnKQotCi0jaWYgSEFWRV9NQVRIX0gKLVNJTURfUEFDS0VET1AxIChwcmVjaXAsIGZwcmVjaXByb2NhbCkKLVNJTURfUEFDS0VET1AxIChwc3FydCwgZnBzcXJ0KQotU0lNRF9QQUNLRURPUDEgKHByZWNpcHNxcnQsIGZwcmVjaXBzcXJ0KQotU0lNRF9QQUNLRURPUDEgKHBzaW4sIGZzaW4pCi1TSU1EX1BBQ0tFRE9QMSAocGNvcywgZmNvcykKLVNJTURfUEFDS0VET1AxIChwdGFuLCBmdGFuKQotCi1TSU1EX1NJTkdMRU9QMSAoc3JlY2lwLCBmcHJlY2lwcm9jYWwpCi1TSU1EX1NJTkdMRU9QMSAoc3NxcnQsIGZwc3FydCkKLVNJTURfU0lOR0xFT1AxIChzcmVjaXBzcXJ0LCBmcHJlY2lwc3FydCkKLVNJTURfU0lOR0xFT1AxIChzc2luLCBmc2luKQotU0lNRF9TSU5HTEVPUDEgKHNjb3MsIGZjb3MpCi1TSU1EX1NJTkdMRU9QMSAoc3RhbiwgZnRhbikKLQotU0lNRF9DT05WRVJUT1AgKHByb3VuZCwgZnJvdW5kKQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIGludDMyX3Qgc3JvdW5kIChUIG9wKSB7IGZyb3VuZDxULGludDMyX3Q+IG9iajsgcmV0dXJuIChvYmogKG9wKSk7IH0KLSNlbmRpZgotCi0jdW5kZWYgU0lNRF9TSU5HTEVPUDEKLSN1bmRlZiBTSU1EX1BBQ0tFRE9QMwotI3VuZGVmIFNJTURfUEFDS0VET1AyCi0jdW5kZWYgU0lNRF9QQUNLRURPUDEKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBWZWN0b3IgdHlwZXMgdG8gY2FzdCB0dXBsZSBkYXRhIHRvCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmIEhBVkVfVkVDVE9SX0VYVEVOU0lPTlMgJiYgX19HTlVDX18gPj0gNAotI2RlZmluZSBWRUNUT1JfQVRUUklCVVRFKG1vZGUsdnMpCV9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKHZzKSkpCi0jZWxzZQotI2RlZmluZSBWRUNUT1JfQVRUUklCVVRFKG1vZGUsdnMpCi0jZW5kaWYKLXR5cGVkZWYgdWludDhfdCB2OHFpX3QgVkVDVE9SX0FUVFJJQlVURSAoVjhRSSw4KTsKLXR5cGVkZWYgdWludDE2X3QgdjRoaV90IFZFQ1RPUl9BVFRSSUJVVEUgKFY0SEksOCk7Ci10eXBlZGVmIHVpbnQxNl90IHY4aGlfdCBWRUNUT1JfQVRUUklCVVRFIChWOEhJLDE2KTsKLXR5cGVkZWYgdWludDMyX3QgdjJzaV90IFZFQ1RPUl9BVFRSSUJVVEUgKFYyU0ksOCk7Ci10eXBlZGVmIHVpbnQzMl90IHY0c2lfdCBWRUNUT1JfQVRUUklCVVRFIChWNFNJLDE2KTsKLSNpZiBIQVZFX0lOVDY0X1QKLXR5cGVkZWYgdWludDY0X3QgdjFkaV90IFZFQ1RPUl9BVFRSSUJVVEUgKFYxREksOCk7Ci0jZW5kaWYKLXR5cGVkZWYgZmxvYXQgdjJzZl90IFZFQ1RPUl9BVFRSSUJVVEUgKFYyU0YsOCk7Ci10eXBlZGVmIGZsb2F0IHY0c2ZfdCBWRUNUT1JfQVRUUklCVVRFIChWNFNGLDE2KTsKLXR5cGVkZWYgZG91YmxlIHYyZGZfdCBWRUNUT1JfQVRUUklCVVRFIChWMkRGLDE2KTsKLSN1bmRlZiBWRUNUT1JfQVRUUklCVVRFCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gSGFyZHdhcmUgYWNjZWxlcmF0ZWQgc3BlY2lhbGl6YXRpb25zCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2RlZmluZSBTSU1EX1BLT1AyX1NQRUMobiwgdHlwZSwgb3B0eXBlKQlcCi10ZW1wbGF0ZSA8PgkJCQkJXAotaW5saW5lIHZvaWQgcGFja29wIChjb25zdCB0dXBsZTxuLHR5cGU+JiBvaW4sIHR1cGxlPG4sdHlwZT4mIG9vdXQsIG9wdHlwZTx0eXBlPikKLSNkZWZpbmUgU0lNRF9QQVNTSUdOX1NQRUMobiwgdHlwZSkJCVwKLXRlbXBsYXRlIDw+CQkJCQlcCi1pbmxpbmUgdm9pZCBwYXNzaWduIChjb25zdCB0dXBsZTxuLHR5cGU+JiBvaW4sIHR1cGxlPG4sdHlwZT4mIG9vdXQpCi0jZGVmaW5lIFNJTURfSVBBU1NJR05fU1BFQyhuLCB0eXBlKQkJXAotdGVtcGxhdGUgPD4JCQkJCVwKLWlubGluZSB2b2lkIGlwYXNzaWduICh0dXBsZTxuLHR5cGU+Ojpjb25zdF9pdGVyYXRvciBvaW4sIHR1cGxlPG4sdHlwZT4mIG9vdXQpCi0jZGVmaW5lIFNJTURfQ09OVkVSVF9TUEVDKG4sIHR5cGUxLCB0eXBlMiwgb3B0eXBlKQlcCi10ZW1wbGF0ZSA8PgkJCQkJXAotaW5saW5lIHZvaWQgcGNvbnZlcnQgKGNvbnN0IHR1cGxlPG4sdHlwZTE+JiBvaW4sIHR1cGxlPG4sdHlwZTI+JiBvb3V0LCBvcHR5cGU8dHlwZTEsdHlwZTI+KQotCi0jaWYgQ1BVX0hBU19NTVgKLSNkZWZpbmUgU1REX01NWF9BUkdTCSI9bSIob291dFswXSkgOiAibSIob2luWzBdKSA6ICJtbTAiLCAic3QiLCAibWVtb3J5IgotI2RlZmluZSBEQkxfTU1YX0FSR1MJIj1tIihvb3V0WzBdKSwgIj1tIihvb3V0WzJdKSA6ICJtIihvaW5bMF0pLCAibSIob2luWzJdKSA6ICJtbTAiLCAibW0xIiwgInN0IiwgInN0KDEpIiwgIm1lbW9yeSIKLSNkZWZpbmUgTU1YX1BLT1AyX1NQRUMobix0eXBlLG9wdHlwZSxpbnN0cnVjdGlvbikJXAotU0lNRF9QS09QMl9TUEVDKG4sdHlwZSxvcHR5cGUpCQlcCi17IGFzbSAoIm1vdnEgJTAsICUlbW0wXG5cdCIgI2luc3RydWN0aW9uICIgJTEsICUlbW0wXG5cdG1vdnEgJSVtbTAsICUwIiA6IFNURF9NTVhfQVJHUyk7IHJlc2V0X21teCgpOyB9Ci0jZGVmaW5lIE1NWF9EQkxfUEtPUDJfU1BFQyhuLHR5cGUsb3B0eXBlLGluc3RydWN0aW9uKQlcCi1TSU1EX1BLT1AyX1NQRUMobix0eXBlLG9wdHlwZSkJCVwKLXsgYXNtICgibW92cSAlMCwgJSVtbTBcblx0bW92cSAlMSwgJSVtbTFcblx0IiAjaW5zdHJ1Y3Rpb24gIiAlMiwgJSVtbTBcblx0IiAjaW5zdHJ1Y3Rpb24gIiAlMywgJSVtbTFcblx0bW92cSAlJW1tMCwgJTBcblx0bW92cSAlJW1tMSwgJTEiIDogREJMX01NWF9BUkdTKTsgcmVzZXRfbW14KCk7IH0KLSNkZWZpbmUgTU1YX1BBU1NJR05fU1BFQyhuLHR5cGUpCVwKLVNJTURfUEFTU0lHTl9TUEVDKG4sdHlwZSkJCVwKLXsgYXNtICgibW92cSAlMSwgJSVtbTBcblx0bW92cSAlJW1tMCwgJTAiIDogU1REX01NWF9BUkdTKTsgcmVzZXRfbW14KCk7IH0KLSNkZWZpbmUgTU1YX0RCTF9QQVNTSUdOX1NQRUMobix0eXBlKQlcCi1TSU1EX1BBU1NJR05fU1BFQyhuLHR5cGUpCQlcCi17IGFzbSAoIm1vdnEgJTIsICUlbW0wXG5cdG1vdnEgJTMsICUlbW0xXG5cdG1vdnEgJSVtbTAsICUwXG5cdG1vdnEgJSVtbTEsICUxIiA6IERCTF9NTVhfQVJHUyk7IHJlc2V0X21teCgpOyB9Ci0jZGVmaW5lIE1NWF9JUEFTU0lHTl9TUEVDKG4sdHlwZSkJXAotU0lNRF9JUEFTU0lHTl9TUEVDKG4sdHlwZSkJCVwKLXsgYXNtICgibW92cSAlMSwgJSVtbTBcblx0bW92cSAlJW1tMCwgJTAiIDogU1REX01NWF9BUkdTKTsgcmVzZXRfbW14KCk7IH0KLSNkZWZpbmUgTU1YX0RCTF9JUEFTU0lHTl9TUEVDKG4sdHlwZSkJXAotU0lNRF9JUEFTU0lHTl9TUEVDKG4sdHlwZSkJCVwKLXsgYXNtICgibW92cSAlMiwgJSVtbTBcblx0bW92cSAlMywgJSVtbTFcblx0bW92cSAlJW1tMCwgJTBcblx0bW92cSAlJW1tMSwgJTEiIDogREJMX01NWF9BUkdTKTsgcmVzZXRfbW14KCk7IH0KLQotTU1YX1BBU1NJR05fU1BFQyg4LHVpbnQ4X3QpCi1NTVhfUEtPUDJfU1BFQyg4LHVpbnQ4X3QscGx1cyxwYWRkYikKLU1NWF9QS09QMl9TUEVDKDgsdWludDhfdCxtaW51cyxwc3ViYikKLU1NWF9QS09QMl9TUEVDKDgsdWludDhfdCxiaXR3aXNlX2FuZCxwYW5kKQotTU1YX1BLT1AyX1NQRUMoOCx1aW50OF90LGJpdHdpc2Vfb3IscG9yKQotTU1YX1BLT1AyX1NQRUMoOCx1aW50OF90LGJpdHdpc2VfeG9yLHB4b3IpCi1NTVhfUEtPUDJfU1BFQyg4LHVpbnQ4X3QsZnBhZGRzLHBhZGR1c2IpCi1NTVhfUEtPUDJfU1BFQyg4LHVpbnQ4X3QsZnBzdWJzLHBzdWJ1c2IpCi0KLU1NWF9QQVNTSUdOX1NQRUMoOCxpbnQ4X3QpCi1NTVhfUEtPUDJfU1BFQyg4LGludDhfdCxwbHVzLHBhZGRiKQotTU1YX1BLT1AyX1NQRUMoOCxpbnQ4X3QsbWludXMscHN1YmIpCi1NTVhfUEtPUDJfU1BFQyg4LGludDhfdCxiaXR3aXNlX2FuZCxwYW5kKQotTU1YX1BLT1AyX1NQRUMoOCxpbnQ4X3QsYml0d2lzZV9vcixwb3IpCi1NTVhfUEtPUDJfU1BFQyg4LGludDhfdCxiaXR3aXNlX3hvcixweG9yKQotTU1YX1BLT1AyX1NQRUMoOCxpbnQ4X3QsZnBhZGRzLHBhZGRzYikKLU1NWF9QS09QMl9TUEVDKDgsaW50OF90LGZwc3Vicyxwc3Vic2IpCi0KLU1NWF9QQVNTSUdOX1NQRUMoNCx1aW50MTZfdCkKLU1NWF9QS09QMl9TUEVDKDQsdWludDE2X3QscGx1cyxwYWRkdykKLU1NWF9QS09QMl9TUEVDKDQsdWludDE2X3QsbWludXMscHN1YncpCi1NTVhfUEtPUDJfU1BFQyg0LHVpbnQxNl90LGJpdHdpc2VfYW5kLHBhbmQpCi1NTVhfUEtPUDJfU1BFQyg0LHVpbnQxNl90LGJpdHdpc2Vfb3IscG9yKQotTU1YX1BLT1AyX1NQRUMoNCx1aW50MTZfdCxiaXR3aXNlX3hvcixweG9yKQotLy8vIFx0b2RvIHBzbGx3IGRvZXMgbm90IHdvcmsgbGlrZSBvdGhlciBvcGVyYXRpb25zLCBpdCB1c2VzIHRoZSBmaXJzdCBlbGVtZW50IGZvciBzaGlmdCBjb3VudC4KLS8vTU1YX1BLT1AyX1NQRUMoNCx1aW50MTZfdCxmcHNobCxwc2xsdykKLS8vTU1YX1BLT1AyX1NQRUMoNCx1aW50MTZfdCxmcHNocixwc3JsdykKLU1NWF9QS09QMl9TUEVDKDQsdWludDE2X3QsZnBhZGRzLHBhZGR1c3cpCi1NTVhfUEtPUDJfU1BFQyg0LHVpbnQxNl90LGZwc3Vicyxwc3VidXN3KQotCi1NTVhfUEFTU0lHTl9TUEVDKDQsaW50MTZfdCkKLU1NWF9QS09QMl9TUEVDKDQsaW50MTZfdCxwbHVzLHBhZGR3KQotTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LG1pbnVzLHBzdWJ3KQotTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGJpdHdpc2VfYW5kLHBhbmQpCi1NTVhfUEtPUDJfU1BFQyg0LGludDE2X3QsYml0d2lzZV9vcixwb3IpCi1NTVhfUEtPUDJfU1BFQyg0LGludDE2X3QsYml0d2lzZV94b3IscHhvcikKLS8vTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGZwc2hsLHBzbGx3KQotLy9NTVhfUEtPUDJfU1BFQyg0LGludDE2X3QsZnBzaHIscHNybHcpCi1NTVhfUEtPUDJfU1BFQyg0LGludDE2X3QsZnBhZGRzLHBhZGRzdykKLU1NWF9QS09QMl9TUEVDKDQsaW50MTZfdCxmcHN1YnMscHN1YnN3KQotCi1NTVhfUEFTU0lHTl9TUEVDKDIsdWludDMyX3QpCi1NTVhfUEtPUDJfU1BFQygyLHVpbnQzMl90LHBsdXMscGFkZGQpCi1NTVhfUEtPUDJfU1BFQygyLHVpbnQzMl90LG1pbnVzLHBzdWJkKQotTU1YX1BLT1AyX1NQRUMoMix1aW50MzJfdCxiaXR3aXNlX2FuZCxwYW5kKQotTU1YX1BLT1AyX1NQRUMoMix1aW50MzJfdCxiaXR3aXNlX29yLHBvcikKLU1NWF9QS09QMl9TUEVDKDIsdWludDMyX3QsYml0d2lzZV94b3IscHhvcikKLS8vTU1YX1BLT1AyX1NQRUMoMix1aW50MzJfdCxmcHNobCxwc2xsZCkKLS8vTU1YX1BLT1AyX1NQRUMoMix1aW50MzJfdCxmcHNocixwc3JsZCkKLQotTU1YX1BBU1NJR05fU1BFQygyLGludDMyX3QpCi1NTVhfUEtPUDJfU1BFQygyLGludDMyX3QscGx1cyxwYWRkZCkKLU1NWF9QS09QMl9TUEVDKDIsaW50MzJfdCxtaW51cyxwc3ViZCkKLU1NWF9QS09QMl9TUEVDKDIsaW50MzJfdCxiaXR3aXNlX2FuZCxwYW5kKQotTU1YX1BLT1AyX1NQRUMoMixpbnQzMl90LGJpdHdpc2Vfb3IscG9yKQotTU1YX1BLT1AyX1NQRUMoMixpbnQzMl90LGJpdHdpc2VfeG9yLHB4b3IpCi0vL01NWF9QS09QMl9TUEVDKDIsaW50MzJfdCxmcHNobCxwc2xsZCkKLS8vTU1YX1BLT1AyX1NQRUMoMixpbnQzMl90LGZwc2hyLHBzcmxkKQotCi1NTVhfREJMX1BLT1AyX1NQRUMoNCx1aW50MzJfdCxwbHVzLHBhZGRkKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsdWludDMyX3QsbWludXMscHN1YmQpCi1NTVhfREJMX1BLT1AyX1NQRUMoNCx1aW50MzJfdCxiaXR3aXNlX2FuZCxwYW5kKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsdWludDMyX3QsYml0d2lzZV9vcixwb3IpCi1NTVhfREJMX1BLT1AyX1NQRUMoNCx1aW50MzJfdCxiaXR3aXNlX3hvcixweG9yKQotLy9NTVhfREJMX1BLT1AyX1NQRUMoMix1aW50MzJfdCxmcHNobCxwc2xsZCkKLS8vTU1YX0RCTF9QS09QMl9TUEVDKDIsdWludDMyX3QsZnBzaHIscHNybGQpCi0KLU1NWF9EQkxfUEtPUDJfU1BFQyg0LGludDMyX3QscGx1cyxwYWRkZCkKLU1NWF9EQkxfUEtPUDJfU1BFQyg0LGludDMyX3QsbWludXMscHN1YmQpCi1NTVhfREJMX1BLT1AyX1NQRUMoNCxpbnQzMl90LGJpdHdpc2VfYW5kLHBhbmQpCi1NTVhfREJMX1BLT1AyX1NQRUMoNCxpbnQzMl90LGJpdHdpc2Vfb3IscG9yKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsaW50MzJfdCxiaXR3aXNlX3hvcixweG9yKQotLy9NTVhfREJMX1BLT1AyX1NQRUMoMixpbnQzMl90LGZwc2hsLHBzbGxkKQotLy9NTVhfREJMX1BLT1AyX1NQRUMoMixpbnQzMl90LGZwc2hyLHBzcmxkKQotCi0jaWYgQ1BVX0hBU19TU0UgfHwgQ1BVX0hBU18zRE5PVwotTU1YX1BLT1AyX1NQRUMoOCx1aW50OF90LGZwYXZnLHBhdmdiKQotTU1YX1BLT1AyX1NQRUMoOCxpbnQ4X3QsZnBhdmcscGF2Z2IpCi1NTVhfUEtPUDJfU1BFQyg0LHVpbnQxNl90LGZwYXZnLHBhdmd3KQotTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGZwYXZnLHBhdmd3KQotTU1YX1BLT1AyX1NQRUMoOCx1aW50OF90LGZwbWluLHBtaW51YikKLU1NWF9QS09QMl9TUEVDKDgsdWludDhfdCxmcG1heCxwbWF4dWIpCi1NTVhfUEtPUDJfU1BFQyg0LGludDE2X3QsZnBtYXgscG1heHN3KQotTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGZwbWluLHBtaW5zdykKLSNlbmRpZiAvLyBDUFVfSEFTX1NTRSB8fCBDUFVfSEFTXzNETk9XCi0KLSNpZiBDUFVfSEFTXzNETk9XCi1NTVhfUEFTU0lHTl9TUEVDKDIsZmxvYXQpCi1NTVhfUEtPUDJfU1BFQygyLGZsb2F0LHBsdXMscGZhZGQpCi1NTVhfUEtPUDJfU1BFQygyLGZsb2F0LG1pbnVzLHBmc3ViKQotTU1YX1BLT1AyX1NQRUMoMixmbG9hdCxtdWx0aXBsaWVzLHBmbXVsKQotTU1YX1BLT1AyX1NQRUMoMixmbG9hdCxmcG1pbixwZm1pbikKLU1NWF9QS09QMl9TUEVDKDIsZmxvYXQsZnBtYXgscGZtYXgpCi0jaWZuZGVmIENQVV9IQVNfU1NFCi1NTVhfREJMX1BLT1AyX1NQRUMoNCxmbG9hdCxwbHVzLHBmYWRkKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsZmxvYXQsbWludXMscGZzdWIpCi1NTVhfREJMX1BLT1AyX1NQRUMoNCxmbG9hdCxtdWx0aXBsaWVzLHBmbXVsKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsZmxvYXQsZnBtaW4scGZtaW4pCi1NTVhfREJMX1BLT1AyX1NQRUMoNCxmbG9hdCxmcG1heCxwZm1heCkKLSNlbmRpZgotI2VuZGlmIC8vIENQVV9IQVNfM0ROT1cKLQotTU1YX0lQQVNTSUdOX1NQRUMoOCx1aW50OF90KQotTU1YX0lQQVNTSUdOX1NQRUMoNCx1aW50MTZfdCkKLU1NWF9JUEFTU0lHTl9TUEVDKDIsdWludDMyX3QpCi1NTVhfSVBBU1NJR05fU1BFQygyLGZsb2F0KQotCi0jaWZuZGVmIENQVV9IQVNfU1NFCi1NTVhfREJMX1BBU1NJR05fU1BFQyg0LGZsb2F0KQotTU1YX0RCTF9QQVNTSUdOX1NQRUMoNCx1aW50MzJfdCkKLU1NWF9EQkxfUEFTU0lHTl9TUEVDKDQsaW50MzJfdCkKLU1NWF9EQkxfSVBBU1NJR05fU1BFQyg0LGZsb2F0KQotTU1YX0RCTF9JUEFTU0lHTl9TUEVDKDQsdWludDMyX3QpCi1NTVhfREJMX0lQQVNTSUdOX1NQRUMoNCxpbnQzMl90KQotI2VuZGlmCi0KLSN1bmRlZiBNTVhfSVBBU1NJR05fU1BFQwotI3VuZGVmIE1NWF9QQVNTSUdOX1NQRUMKLSN1bmRlZiBNTVhfUEtPUDJfU1BFQwotI3VuZGVmIFNURF9NTVhfQVJHUwotI2VuZGlmIC8vIENQVV9IQVNfTU1YCi0KLSNpZiBDUFVfSEFTX1NTRQotI2RlZmluZSBTVERfU1NFX0FSR1MJIj1tIihvb3V0WzBdKSA6ICJtIihvaW5bMF0pIDogInhtbTAiLCAibWVtb3J5IgotI2RlZmluZSBTU0VfUEtPUDJfU1BFQyhuLHR5cGUsb3B0eXBlLGluc3RydWN0aW9uKQlcCi1TSU1EX1BLT1AyX1NQRUMobix0eXBlLG9wdHlwZSkJCVwKLXsgYXNtICgibW92dXBzICUwLCAlJXhtbTBcblx0bW92dXBzICUxLCAlJXhtbTFcblx0IiAjaW5zdHJ1Y3Rpb24gIiAlJXhtbTEsICUleG1tMFxuXHRtb3Z1cHMgJSV4bW0wLCAlMCIgOiBTVERfU1NFX0FSR1MpO30KLSNkZWZpbmUgU1NFX1BBU1NJR05fU1BFQyhuLHR5cGUpCQkJXAotU0lNRF9QQVNTSUdOX1NQRUMobix0eXBlKQkJXAoteyBhc20gKCJtb3Z1cHMgJTEsICUleG1tMFxuXHRtb3Z1cHMgJSV4bW0wLCAlMCIgOiBTVERfU1NFX0FSR1MpO30KLSNkZWZpbmUgU1NFX0lQQVNTSUdOX1NQRUMobix0eXBlKQlcCi1TSU1EX0lQQVNTSUdOX1NQRUMobix0eXBlKQkJXAoteyBhc20gKCJtb3Z1cHMgJTEsICUleG1tMFxuXHRtb3Z1cHMgJSV4bW0wLCAlMCIgOiBTVERfU1NFX0FSR1MpO30KLVNTRV9QQVNTSUdOX1NQRUMoNCxmbG9hdCkKLVNTRV9QQVNTSUdOX1NQRUMoNCxpbnQzMl90KQotU1NFX1BBU1NJR05fU1BFQyg0LHVpbnQzMl90KQotU1NFX1BLT1AyX1NQRUMoNCxmbG9hdCxwbHVzLGFkZHBzKQotU1NFX1BLT1AyX1NQRUMoNCxmbG9hdCxtaW51cyxzdWJwcykKLVNTRV9QS09QMl9TUEVDKDQsZmxvYXQsbXVsdGlwbGllcyxtdWxwcykKLVNTRV9QS09QMl9TUEVDKDQsZmxvYXQsZGl2aWRlcyxkaXZwcykKLVNTRV9QS09QMl9TUEVDKDQsZmxvYXQsYml0d2lzZV9hbmQsYW5kcHMpCi1TU0VfUEtPUDJfU1BFQyg0LGZsb2F0LGJpdHdpc2Vfb3Isb3JwcykKLVNTRV9QS09QMl9TUEVDKDQsZmxvYXQsYml0d2lzZV94b3IseG9ycHMpCi1TU0VfUEtPUDJfU1BFQyg0LGZsb2F0LGZwbWF4LG1heHBzKQotU1NFX1BLT1AyX1NQRUMoNCxmbG9hdCxmcG1pbixtaW5wcykKLQotU0lNRF9DT05WRVJUX1NQRUMoNCxmbG9hdCxpbnQzMl90LGZyb3VuZCkgewotICAgIGFzbSAoImN2dHBzMnBpICUyLCAlJW1tMFxuXHQiCi0JICJjdnRwczJwaSAlMywgJSVtbTFcblx0IgotCSAibW92cSAlJW1tMCwgJTBcblx0IgotCSAibW92cSAlJW1tMSwgJTEiCi0JIDogREJMX01NWF9BUkdTKTsKLSAgICByZXNldF9tbXgoKTsKLX0KLVNJTURfQ09OVkVSVF9TUEVDKDQsaW50MzJfdCxmbG9hdCxmcm91bmQpIHsKLSAgICBhc20gKCJjdnRwaTJwcyAlMiwgJSV4bW0wXG5cdCIKLQkgInNodWZwcyAkMHg0RSwlJXhtbTAsJSV4bW0wXG5cdCIKLQkgImN2dHBpMnBzICUxLCAlJXhtbTBcblx0IgotCSAibW92dXBzICUleG1tMCwgJTAiCi0JIDogIj1tIihvb3V0WzBdKSA6ICJtIihvaW5bMF0pLCAibSIob2luWzJdKSA6ICJ4bW0wIiwgIm1lbW9yeSIpOwotfQotdGVtcGxhdGUgPD4gaW5saW5lIGludDMyX3QgZnJvdW5kPGZsb2F0LGludDMyX3Q+OjpvcGVyYXRvcigpKGNvbnN0IGZsb2F0JiBhKSBjb25zdCB7Ci0gICAgcmVnaXN0ZXIgaW50MzJfdCBydjsKLSAgICBhc20gKCJtb3ZzcyAlMSwgJSV4bW0wXG5cdCIKLQkgImN2dHNzMnNpICUleG1tMCwgJTAiCi0JIDogIj1yIihydikgOiAibSIoYSkgOiAieG1tMCIgKTsKLSAgICByZXR1cm4gKHJ2KTsKLX0KLXRlbXBsYXRlIDw+IGlubGluZSB1aW50MzJfdCBmcm91bmQ8ZmxvYXQsdWludDMyX3Q+OjpvcGVyYXRvcigpKGNvbnN0IGZsb2F0JiBhKSBjb25zdCB7Ci0gICAgcmVnaXN0ZXIgdWludDMyX3QgcnY7Ci0gICAgYXNtICgibW92c3MgJTEsICUleG1tMFxuXHQiCi0JICJjdnRzczJzaSAlJXhtbTAsICUwIgotCSA6ICI9ciIocnYpIDogIm0iKGEpIDogInhtbTAiICk7Ci0gICAgcmV0dXJuIChydik7Ci19Ci0KLVNTRV9JUEFTU0lHTl9TUEVDKDQsZmxvYXQpCi1TU0VfSVBBU1NJR05fU1BFQyg0LGludDMyX3QpCi1TU0VfSVBBU1NJR05fU1BFQyg0LHVpbnQzMl90KQotCi0jdW5kZWYgU1NFX0lQQVNTSUdOX1NQRUMKLSN1bmRlZiBTU0VfUEFTU0lHTl9TUEVDCi0jdW5kZWYgU1NFX1BLT1AyX1NQRUMKLSN1bmRlZiBTVERfU1NFX0FSR1MKLSNlbmRpZiAvLyBDUFVfSEFTX1NTRQotCi0jdW5kZWYgU0lNRF9QQUNLRURPUF9TUEVDCi0KLX0gLy8gbmFtZXNwYWNlIHNpbWQKLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Npc3RyZWFtLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Npc3RyZWFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEyMGRkZi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zaXN0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzcgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHNpc3RyZWFtLmNjCi0vLwotCi0jaW5jbHVkZSAic2lzdHJlYW0uaCIKLSNpbmNsdWRlICJzb3N0cmVhbS5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotY29uc3QgY2hhciBpb3NfYmFzZTo6Y19EZWZhdWx0RGVsaW1pdGVycyBbaXN0cmluZ3N0cmVhbTo6Y19NYXhEZWxpbWl0ZXJzXSA9ICIgXHRcblxyOzosLj8iOwotCi0vLy8gRGVmYXVsdCBjb25zdHJ1Y3Rvci4KLWlzdHJpbmdzdHJlYW06OmlzdHJpbmdzdHJlYW0gKHZvaWQpCi06IGlzdHJlYW0gKCksCi0gIG1fQmFzZSAoMCkKLXsKLSAgICBzZXRfZGVsaW1pdGVycyAoY19EZWZhdWx0RGVsaW1pdGVycyk7Ci19Ci0KLWlzdHJpbmdzdHJlYW06OmlzdHJpbmdzdHJlYW0gKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQotOiBpc3RyZWFtICgpLAotICBtX0Jhc2UgKDApCi17Ci0gICAgbGluayAocCwgbik7Ci0gICAgc2V0X2RlbGltaXRlcnMgKGNfRGVmYXVsdERlbGltaXRlcnMpOwotfQotCi1pc3RyaW5nc3RyZWFtOjppc3RyaW5nc3RyZWFtIChjb25zdCBjbWVtbGluayYgc291cmNlKQotOiBpc3RyZWFtICgpLAotICBtX0Jhc2UgKDApCi17Ci0gICAgbGluayAoc291cmNlKTsKLSAgICBzZXRfZGVsaW1pdGVycyAoY19EZWZhdWx0RGVsaW1pdGVycyk7Ci19Ci0KLS8vLyBTZXRzIGRlbGltaXRlcnMgdG8gdGhlIGNvbnRlbnRzIG9mIFxwIGRlbGltaXRlcnMuCi12b2lkIGlzdHJpbmdzdHJlYW06OnNldF9kZWxpbWl0ZXJzIChjb25zdCBjaGFyKiBkZWxpbWl0ZXJzKQotewotICAgIGZpbGwgKFZlY3RvclJhbmdlIChtX0RlbGltaXRlcnMpLCAnXDAnKTsKLSAgICBzdHJuY3B5IChtX0RlbGltaXRlcnMsIGRlbGltaXRlcnMsIFZlY3RvclNpemUobV9EZWxpbWl0ZXJzKS0xKTsKLX0KLQotaW5saW5lIGJvb2wgaXN0cmluZ3N0cmVhbTo6aXNfZGVsaW1pdGVyIChjaGFyIGMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtZW1jaHIgKG1fRGVsaW1pdGVycywgYywgVmVjdG9yU2l6ZShtX0RlbGltaXRlcnMpLTEpKTsKLX0KLQotY2hhciBpc3RyaW5nc3RyZWFtOjpza2lwX2RlbGltaXRlcnMgKHZvaWQpCi17Ci0gICAgY2hhciBjID0gbV9EZWxpbWl0ZXJzWzBdOwotICAgIHdoaWxlIChpc19kZWxpbWl0ZXIoYykgJiYgKHJlbWFpbmluZygpIHx8IHVuZGVyZmxvdygpKSkKLQlpc3RyZWFtOjppcmVhZCAoYyk7Ci0gICAgcmV0dXJuIChjKTsKLX0KLQotdm9pZCBpc3RyaW5nc3RyZWFtOjppcmVhZCAoaW50OF90JiB2KQotewotICAgIHYgPSBza2lwX2RlbGltaXRlcnMoKTsKLX0KLQotdHlwZWRlZiBpc3RyaW5nc3RyZWFtOjppdGVyYXRvciBpc3NpdGVyX3Q7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIHN0cl90b19udW0gKGlzc2l0ZXJfdCBpLCBpc3NpdGVyX3QqIGllbmQsIHVpbnQ4X3QgYmFzZSwgVCYgdikKLSAgICB7IHYgPSBzdHJ0b2wgKGksIGNvbnN0X2Nhc3Q8Y2hhcioqPihpZW5kKSwgYmFzZSk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHN0cl90b19udW0gKGlzc2l0ZXJfdCBpLCBpc3NpdGVyX3QqIGllbmQsIHVpbnQ4X3QsIGRvdWJsZSYgdikKLSAgICB7IHYgPSBzdHJ0b2QgKGksIGNvbnN0X2Nhc3Q8Y2hhcioqPihpZW5kKSk7IH0KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgc3RyX3RvX251bSAoaXNzaXRlcl90IGksIGlzc2l0ZXJfdCogaWVuZCwgdWludDhfdCBiYXNlLCBsb25nIGxvbmcmIHYpCi0gICAgeyB2ID0gc3RydG9sbCAoaSwgY29uc3RfY2FzdDxjaGFyKio+KGllbmQpLCBiYXNlKTsgfQotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgaXN0cmluZ3N0cmVhbTo6cmVhZF9udW1iZXIgKFQmIHYpCi17Ci0gICAgdiA9IDA7Ci0gICAgaWYgKHNraXBfZGVsaW1pdGVycygpID09IG1fRGVsaW1pdGVyc1swXSkKLQlyZXR1cm47Ci0gICAgdW5nZXRjKCk7Ci0gICAgaXRlcmF0b3IgaWxhc3Q7Ci0gICAgZG8gewotCXN0cl90b19udW08VD4gKGlwb3MoKSwgJmlsYXN0LCBtX0Jhc2UsIHYpOwotICAgIH0gd2hpbGUgKGlsYXN0ID09IGVuZCgpICYmIHVuZGVyZmxvdygpKTsKLSAgICBza2lwIChkaXN0YW5jZSAoaXBvcygpLCBpbGFzdCkpOwotfQotCi12b2lkIGlzdHJpbmdzdHJlYW06OmlyZWFkIChpbnQzMl90JiB2KQkJeyByZWFkX251bWJlciAodik7IH0KLXZvaWQgaXN0cmluZ3N0cmVhbTo6aXJlYWQgKGRvdWJsZSYgdikJCXsgcmVhZF9udW1iZXIgKHYpOyB9IAotI2lmIEhBVkVfSU5UNjRfVAotdm9pZCBpc3RyaW5nc3RyZWFtOjppcmVhZCAoaW50NjRfdCYgdikJCXsgcmVhZF9udW1iZXIgKHYpOyB9Ci0jZW5kaWYKLSNpZiBIQVZFX0xPTkdfTE9ORyAmJiAoIUhBVkVfSU5UNjRfVCB8fCBTSVpFX09GX0xPTkdfTE9ORyA+IDgpCi12b2lkIGlzdHJpbmdzdHJlYW06OmlyZWFkIChsb25nIGxvbmcmIHYpCXsgcmVhZF9udW1iZXIgKHYpOyB9Ci0jZW5kaWYKLQotdm9pZCBpc3RyaW5nc3RyZWFtOjppcmVhZCAod2NoYXJfdCYgdikKLXsKLSAgICBpZiAoKHYgPSBza2lwX2RlbGltaXRlcnMoKSkgPT0gd2NoYXJfdChtX0RlbGltaXRlcnNbMF0pKQotCXJldHVybjsKLSAgICBzaXplX3QgY3MgPSBVdGY4U2VxdWVuY2VCeXRlcyAodikgLSAxOwotICAgIGlmIChyZW1haW5pbmcoKSA+PSBjcyB8fCB1bmRlcmZsb3coY3MpID49IGNzKSB7Ci0JdW5nZXRjKCk7Ci0JdiA9ICp1dGY4aW4gKGlwb3MoKSk7Ci0Jc2tpcCAoY3MgKyAxKTsKLSAgICB9Ci19Ci0KLXZvaWQgaXN0cmluZ3N0cmVhbTo6aXJlYWQgKGJvb2wmIHYpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgdGZbMl1bOF0gPSB7ICJmYWxzZSIsICJ0cnVlIiB9OwotICAgIGNoYXIgYyA9IHNraXBfZGVsaW1pdGVycygpOwotICAgIHYgPSAoYyA9PSAndCcgfHwgYyA9PSAnMScpOwotICAgIGlmIChjICE9IHRmW3ZdWzBdKQotCXJldHVybjsKLSAgICBmb3IgKGNvbnN0IGNoYXIqIHR2ID0gdGZbdl07IGMgPT0gKnR2ICYmIChyZW1haW5pbmcoKSB8fCB1bmRlcmZsb3coKSk7ICsrdHYpCi0JaXN0cmVhbTo6aXJlYWQgKGMpOwotICAgIHVuZ2V0YygpOwotfQotCi12b2lkIGlzdHJpbmdzdHJlYW06OmlyZWFkIChzdHJpbmcmIHYpCi17Ci0gICAgdi5jbGVhcigpOwotICAgIGNoYXIgcHJldmMsIHF1b3RlQ2hhciA9IDAsIGMgPSBza2lwX2RlbGltaXRlcnMoKTsKLSAgICBpZiAoYyA9PSAnXCInIHx8IGMgPT0gJ1wnJykKLQlxdW90ZUNoYXIgPSBjOwotICAgIGVsc2UKLQl2ICs9IGM7Ci0gICAgd2hpbGUgKHJlbWFpbmluZygpIHx8IHVuZGVyZmxvdygpKSB7Ci0JcHJldmMgPSBjOwotCWlzdHJlYW06OmlyZWFkIChjKTsKLQlpZiAoIXF1b3RlQ2hhciAmJiBpc19kZWxpbWl0ZXIoYykpCi0JICAgIGJyZWFrOwotCWlmIChwcmV2YyA9PSAnXFwnKSB7Ci0JICAgIHN3aXRjaCAoYykgewotCQljYXNlICd0JzoJYyA9ICdcdCc7IGJyZWFrOwotCQljYXNlICduJzoJYyA9ICdcbic7IGJyZWFrOwotCQljYXNlICdyJzoJYyA9ICdccic7IGJyZWFrOwotCQljYXNlICdiJzoJYyA9ICdcYic7IGJyZWFrOwotCQljYXNlICdFJzoJYyA9IDI3OyAgIGJyZWFrOyAvLyBFU0Mgc2VxdWVuY2UKLQkJY2FzZSAnXCInOgljID0gJ1wiJzsgYnJlYWs7Ci0JCWNhc2UgJ1wnJzoJYyA9ICdcJyc7IGJyZWFrOwotCQljYXNlICdcXCc6CWMgPSAnXFwnOyBicmVhazsKLQkgICAgfTsKLQkgICAgdi5lbmQoKVstMV0gPSBjOwotCX0gZWxzZSB7Ci0JICAgIGlmIChjID09IHF1b3RlQ2hhcikKLQkJYnJlYWs7Ci0JICAgIHYgKz0gYzsKLQl9Ci0gICAgfQotfQotCi12b2lkIGlzdHJpbmdzdHJlYW06OnJlYWQgKHZvaWQqIGJ1ZmZlciwgc2l6ZV90eXBlIHN6KQotewotICAgIGlmIChyZW1haW5pbmcoKSA8IHN6ICYmIHVuZGVyZmxvdyhzeikgPCBzeikKLSNpZmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLQl2ZXJpZnlfcmVtYWluaW5nICgicmVhZCIsICIiLCBzeik7Ci0jZWxzZQotCWFzc2VydCAocmVtYWluaW5nKCkgPj0gc2l6ZSgpKTsKLSNlbmRpZgotICAgIGlzdHJlYW06OnJlYWQgKGJ1ZmZlciwgc3opOwotfQotCi12b2lkIGlzdHJpbmdzdHJlYW06OnJlYWQgKG1lbWxpbmsmIGJ1ZikKLXsKLSAgICBpZiAocmVtYWluaW5nKCkgPCBidWYuc2l6ZSgpICYmIHVuZGVyZmxvdyhidWYuc2l6ZSgpKSA8IGJ1Zi5zaXplKCkpCi0jaWZkZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HCi0JdmVyaWZ5X3JlbWFpbmluZyAoInJlYWQiLCAiIiwgYnVmLnNpemUoKSk7Ci0jZWxzZQotCWFzc2VydCAocmVtYWluaW5nKCkgPj0gYnVmLnNpemUoKSk7Ci0jZW5kaWYKLSAgICBpc3RyZWFtOjpyZWFkIChidWYpOwotfQotCi0vLy8gUmVhZHMgb25lIGNoYXJhY3RlciBmcm9tIHRoZSBzdHJlYW0uCi1pbnQgaXN0cmluZ3N0cmVhbTo6Z2V0ICh2b2lkKQotewotICAgIGludDhfdCB2ID0gMDsKLSAgICBpZiAocmVtYWluaW5nKCkgfHwgdW5kZXJmbG93KCkpCi0JaXN0cmVhbTo6aXJlYWQgKHYpOwotICAgIHJldHVybiAodik7Ci19Ci0KLS8vLyBSZWFkcyBjaGFyYWN0ZXJzIGludG8gXHAgcyB1bnRpbCBccCBkZWxpbSBpcyBmb3VuZCAoYnV0IG5vdCBzdG9yZWQgb3IgZXh0cmFjdGVkKQotdm9pZCBpc3RyaW5nc3RyZWFtOjpnZXQgKHN0cmluZyYgcywgY2hhciBkZWxpbSkKLXsKLSAgICBnZXRsaW5lIChzLCBkZWxpbSk7Ci0gICAgaWYgKCFzLmVtcHR5KCkgJiYgcG9zKCkgPiAwICYmIGlwb3MoKVstMV0gPT0gZGVsaW0pCi0JdW5nZXRjKCk7Ci19Ci0KLS8vLyBSZWFkcyBjaGFyYWN0ZXJzIGludG8gXHAgcCxuIHVudGlsIFxwIGRlbGltIGlzIGZvdW5kIChidXQgbm90IHN0b3JlZCBvciBleHRyYWN0ZWQpCi12b2lkIGlzdHJpbmdzdHJlYW06OmdldCAoY2hhciogcCwgc2l6ZV90eXBlIG4sIGNoYXIgZGVsaW0pCi17Ci0gICAgYXNzZXJ0IChwICYmICFuICYmICJBIG5vbi1lbXB0eSBidWZmZXIgaXMgcmVxdWlyZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbiIpOwotICAgIHN0cmluZyBzOwotICAgIGdldCAocywgZGVsaW0pOwotICAgIGNvbnN0IHNpemVfdCBudGMgKG1pbiAobiAtIDEsIHMuc2l6ZSgpKSk7Ci0gICAgbWVtY3B5IChwLCBzLmRhdGEoKSwgbnRjKTsKLSAgICBwW250Y10gPSAwOwotfQotCi0vLy8gUmVhZHMgY2hhcmFjdGVycyBpbnRvIFxwIHMgdW50aWwgXHAgZGVsaW0gaXMgZXh0cmFjdGVkIChidXQgbm90IHN0b3JlZCkKLXZvaWQgaXN0cmluZ3N0cmVhbTo6Z2V0bGluZSAoc3RyaW5nJiBzLCBjaGFyIGRlbGltKQotewotICAgIGNoYXIgb2xkRGVsaW0gW1ZlY3RvclNpemUobV9EZWxpbWl0ZXJzKV07Ci0gICAgY29weSAoVmVjdG9yUmFuZ2UgKG1fRGVsaW1pdGVycyksIG9sZERlbGltKTsKLSAgICBmaWxsIChWZWN0b3JSYW5nZSAobV9EZWxpbWl0ZXJzKSwgJ1wwJyk7Ci0gICAgbV9EZWxpbWl0ZXJzWzBdID0gZGVsaW07Ci0gICAgaXJlYWQgKHMpOwotICAgIGNvcHkgKFZlY3RvclJhbmdlIChvbGREZWxpbSksIG1fRGVsaW1pdGVycyk7Ci19Ci0KLS8vLyBSZWFkcyBjaGFyYWN0ZXJzIGludG8gXHAgcCxuIHVudGlsIFxwIGRlbGltIGlzIGV4dHJhY3RlZCAoYnV0IG5vdCBzdG9yZWQpCi12b2lkIGlzdHJpbmdzdHJlYW06OmdldGxpbmUgKGNoYXIqIHAsIHNpemVfdHlwZSBuLCBjaGFyIGRlbGltKQotewotICAgIGFzc2VydCAocCAmJiAhbiAmJiAiQSBub24tZW1wdHkgYnVmZmVyIGlzIHJlcXVpcmVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24iKTsKLSAgICBzdHJpbmcgczsKLSAgICBnZXRsaW5lIChzLCBkZWxpbSk7Ci0gICAgY29uc3Qgc2l6ZV90IG50YyAobWluIChuIC0gMSwgcy5zaXplKCkpKTsKLSAgICBtZW1jcHkgKHAsIHMuZGF0YSgpLCBudGMpOwotICAgIHBbbnRjXSA9IDA7Ci19Ci0KLS8vLyBFeHRyYWN0IHVudGlsIFxwIGRlbGltIG9yIFxwIG4gY2hhcnMgaGF2ZSBiZWVuIHJlYWQuCi12b2lkIGlzdHJpbmdzdHJlYW06Omlnbm9yZSAoc2l6ZV90eXBlIG4sIGNoYXIgZGVsaW0pCi17Ci0gICAgd2hpbGUgKG4tLSAmJiAocmVtYWluaW5nKCkgfHwgdW5kZXJmbG93KCkpICYmIGdldCgpICE9IGRlbGltKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zaXN0cmVhbS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc2lzdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI0ZjQzYi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zaXN0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBzaXN0cmVhbS5oCi0vLwotCi0jaWZuZGVmIFNJU1RSRUFNX0hfMENDQTEwMjIyOUE0OUY1RDY1RUU4NTJFNjJCMjdDRTIKLSNkZWZpbmUgU0lTVFJFQU1fSF8wQ0NBMTAyMjI5QTQ5RjVENjVFRTg1MkU2MkIyN0NFMgotCi0jaW5jbHVkZSAibWlzdHJlYW0uaCIKLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidXN0cmluZy5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgaXN0cmluZ3N0cmVhbSBzaXN0cmVhbS5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIFRleHRTdHJlYW1zCi0vLy8KLS8vLyBcYnJpZWYgQSBzdHJlYW0gdGhhdCByZWFkcyB0ZXh0dWFsIGRhdGEgZnJvbSBhIG1lbW9yeSBibG9jay4KLS8vLwotY2xhc3MgaXN0cmluZ3N0cmVhbSA6IHB1YmxpYyBpc3RyZWFtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlCWNfTWF4RGVsaW1pdGVycyA9IDE2OwkvLy88IE1heGltdW0gbnVtYmVyIG9mIHdvcmQgZGVsaW1pdGVycy4KLXB1YmxpYzoKLSAgICAJCQkJaXN0cmluZ3N0cmVhbSAodm9pZCk7Ci0JCQkJaXN0cmluZ3N0cmVhbSAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pOwotICAgIGV4cGxpY2l0CQkJaXN0cmluZ3N0cmVhbSAoY29uc3QgY21lbWxpbmsmIHNvdXJjZSk7Ci0gICAgdm9pZAkJCWlyZWFkIChpbnQ4X3QmIHYpOwotICAgIHZvaWQJCQlpcmVhZCAoaW50MzJfdCYgdik7Ci0gICAgdm9pZAkJCWlyZWFkIChkb3VibGUmIHYpOwotICAgIHZvaWQJCQlpcmVhZCAoYm9vbCYgdik7Ci0gICAgdm9pZAkJCWlyZWFkICh3Y2hhcl90JiB2KTsKLSAgICB2b2lkCQkJaXJlYWQgKHN0cmluZyYgdik7Ci0jaWZkZWYgSEFWRV9JTlQ2NF9UCi0gICAgdm9pZAkJCWlyZWFkIChpbnQ2NF90JiB2KTsKLSNlbmRpZgotI2lmIEhBVkVfTE9OR19MT05HICYmICghSEFWRV9JTlQ2NF9UIHx8IFNJWkVfT0ZfTE9OR19MT05HID4gOCkKLSAgICB2b2lkCQkJaXJlYWQgKGxvbmcgbG9uZyYgdik7Ci0jZW5kaWYKLSAgICBpbmxpbmUgc3RyaW5nCQlzdHIgKHZvaWQpIGNvbnN0CXsgc3RyaW5nIHM7IHMubGluayAoKnRoaXMpOyByZXR1cm4gKHMpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlzdHIgKGNvbnN0IHN0cmluZyYgcykJeyBsaW5rIChzKTsgfQotICAgIGludAkJCQlnZXQgKHZvaWQpOwotICAgIGlubGluZSB2b2lkCQkJZ2V0IChjaGFyJiBjKQl7IGMgPSBnZXQoKTsgfQotICAgIHZvaWQJCQlnZXQgKGNoYXIqIHAsIHNpemVfdHlwZSBuLCBjaGFyIGRlbGltID0gJ1xuJyk7Ci0gICAgdm9pZAkJCWdldCAoc3RyaW5nJiBzLCBjaGFyIGRlbGltID0gJ1xuJyk7Ci0gICAgdm9pZAkJCWdldGxpbmUgKGNoYXIqIHAsIHNpemVfdHlwZSBuLCBjaGFyIGRlbGltID0gJ1xuJyk7Ci0gICAgdm9pZAkJCWdldGxpbmUgKHN0cmluZyYgcywgY2hhciBkZWxpbSA9ICdcbicpOwotICAgIHZvaWQJCQlpZ25vcmUgKHNpemVfdHlwZSBuLCBjaGFyIGRlbGltID0gJ1wwJyk7Ci0gICAgaW5saW5lIGNoYXIJCQlwZWVrICh2b2lkKQl7IGludDhfdCB2OyBpcmVhZCAodik7IHVuZ2V0YygpOyByZXR1cm4gKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwdXRiYWNrIChjaGFyKQl7IHVuZ2V0YygpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQl1bmdldCAodm9pZCkJeyB1bmdldGMoKTsgfQotICAgIHZvaWQJCQlzZXRfZGVsaW1pdGVycyAoY29uc3QgY2hhciogZGVsaW1pdGVycyk7Ci0gICAgaW5saW5lIHZvaWQJCQlzZXRfYmFzZSAoc2hvcnQgYmFzZSk7Ci0gICAgaW5saW5lIHZvaWQJCQlzZXRfZGVjaW1hbF9zZXBhcmF0b3IgKGNoYXIpCXsgfQotICAgIGlubGluZSB2b2lkCQkJc2V0X3Rob3VzYW5kX3NlcGFyYXRvciAoY2hhcikJeyB9Ci0gICAgdm9pZAkJCXJlYWQgKHZvaWQqIGJ1ZmZlciwgc2l6ZV90eXBlIHNpemUpOwotICAgIHZvaWQJCQlyZWFkIChtZW1saW5rJiBidWYpOwotICAgIGlubGluZSB2b2lkCQkJcmVhZF9zdHJ6IChzdHJpbmcmIHN0cik7Ci0gICAgaW5saW5lIHZvaWQJCQlzeW5jICh2b2lkKQl7IHNraXAgKHJlbWFpbmluZygpKTsgfQotcHJvdGVjdGVkOgotICAgIGNoYXIJCQlza2lwX2RlbGltaXRlcnMgKHZvaWQpOwotcHJpdmF0ZToKLSAgICBpbmxpbmUgYm9vbAkJCWlzX2RlbGltaXRlciAoY2hhciBjKSBjb25zdDsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZAlyZWFkX251bWJlciAoVCYgdik7Ci1wcml2YXRlOgotICAgIGNoYXIJCQltX0RlbGltaXRlcnMgW2NfTWF4RGVsaW1pdGVyc107Ci0gICAgdWludDhfdAkJCW1fQmFzZTsKLX07Ci0KLS8vLyBTZXRzIHRoZSBudW1lcmljIGJhc2UgdXNlZCB0byByZWFkIG51bWJlcnMuCi1pbmxpbmUgdm9pZCBpc3RyaW5nc3RyZWFtOjpzZXRfYmFzZSAoc2hvcnQgYmFzZSkKLXsKLSAgICBtX0Jhc2UgPSBiYXNlOwotfQotCi0vLy8gUmVhZHMgYSBudWxsLXRlcm1pbmF0ZWQgY2hhcmFjdGVyIHN0cmVhbS4gVGhpcyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNsYXNzLgotaW5saW5lIHZvaWQgaXN0cmluZ3N0cmVhbTo6cmVhZF9zdHJ6IChzdHJpbmcmKQotewotICAgIGFzc2VydCAoISJSZWFkaW5nIG51bCBjaGFyYWN0ZXJzIGlzIG5vdCBhbGxvd2VkIGZyb20gdGV4dCBzdHJlYW1zIik7Ci19Ci0KLS8vLyBSZWFkcyBvbmUgdHlwZSBhcyBhbm90aGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFJlYWxULCB0eXBlbmFtZSBDYXN0VD4KLWlubGluZSB2b2lkIF9jYXN0X3JlYWQgKGlzdHJpbmdzdHJlYW0mIGlzLCBSZWFsVCYgdikKLXsKLSAgICBDYXN0VCBjdjsKLSAgICBpcy5pcmVhZCAoY3YpOwotICAgIHYgPSBSZWFsVCAoY3YpOwotfQotCi1pbmxpbmUgaXN0cmluZ3N0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmluZ3N0cmVhbSYgaXMsIGludDhfdCYgdikJeyBpcy5pcmVhZCAodik7IHJldHVybiAoaXMpOyB9Ci1pbmxpbmUgaXN0cmluZ3N0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmluZ3N0cmVhbSYgaXMsIGludDMyX3QmIHYpeyBpcy5pcmVhZCAodik7IHJldHVybiAoaXMpOyB9Ci1pbmxpbmUgaXN0cmluZ3N0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmluZ3N0cmVhbSYgaXMsIGRvdWJsZSYgdikJeyBpcy5pcmVhZCAodik7IHJldHVybiAoaXMpOyB9Ci1pbmxpbmUgaXN0cmluZ3N0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmluZ3N0cmVhbSYgaXMsIGJvb2wmIHYpCXsgaXMuaXJlYWQgKHYpOyByZXR1cm4gKGlzKTsgfQotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCB3Y2hhcl90JiB2KXsgaXMuaXJlYWQgKHYpOyByZXR1cm4gKGlzKTsgfQotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBzdHJpbmcmIHYpCXsgaXMuaXJlYWQgKHYpOyByZXR1cm4gKGlzKTsgfQotI2lmIEhBVkVfSU5UNjRfVAotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBpbnQ2NF90JiB2KXsgaXMuaXJlYWQgKHYpOyByZXR1cm4gKGlzKTsgfQotI2VuZGlmCi0jaWYgSEFWRV9MT05HX0xPTkcgJiYgKCFIQVZFX0lOVDY0X1QgfHwgU0laRV9PRl9MT05HX0xPTkcgPiA4KQotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBsb25nIGxvbmcmIHYpIHsgaXMuaXJlYWQgKHYpOyByZXR1cm4gKGlzKTsgfQotI2VuZGlmCi0KLSNkZWZpbmUgSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SKFJlYWxULCBDYXN0VCkJCQlcCi1pbmxpbmUgaXN0cmluZ3N0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmluZ3N0cmVhbSYgaXMsIFJlYWxUJiB2KQlcCi17IF9jYXN0X3JlYWQ8UmVhbFQsQ2FzdFQ+KGlzLCB2KTsgcmV0dXJuIChpcyk7IH0KLQotSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SICh1aW50OF90LAlpbnQ4X3QpCi1JU1RSU1RSRUFNX0NBU1RfT1BFUkFUT1IgKGludDE2X3QsCWludDMyX3QpCi1JU1RSU1RSRUFNX0NBU1RfT1BFUkFUT1IgKHVpbnQxNl90LAlpbnQzMl90KQotSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SICh1aW50MzJfdCwJaW50MzJfdCkKLUlTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUiAoZmxvYXQsCWRvdWJsZSkKLSNpZiBIQVZFX1RIUkVFX0NIQVJfVFlQRVMKLUlTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUiAoY2hhciwJCWludDhfdCkKLSNlbmRpZgotI2lmIEhBVkVfSU5UNjRfVAotSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SICh1aW50NjRfdCwJaW50NjRfdCkKLSNlbmRpZgotI2lmIFNJWkVfT0ZfTE9ORyA9PSBTSVpFX09GX0lOVAotSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SIChsb25nLAkJaW50KQotSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SICh1bnNpZ25lZCBsb25nLGludCkKLSNlbmRpZgotI2lmIEhBVkVfTE9OR19MT05HICYmICghSEFWRV9JTlQ2NF9UIHx8IFNJWkVfT0ZfTE9OR19MT05HID4gOCkKLUlTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUiAodW5zaWduZWQgbG9uZyBsb25nLCBsb25nIGxvbmcpCi0jZW5kaWYKLSN1bmRlZiBJU1RSU1RSRUFNX0NBU1RfT1BFUkFUT1IKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc29zdHJlYW0uY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc29zdHJlYW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmYwOTc2Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Nvc3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gc29zdHJlYW0uaAotLy8KLQotI2luY2x1ZGUgIm1pc3RyZWFtLmgiCS8vIGZvciBpc3RyZWFtX2l0ZXJhdG9yLCByZWZlcmVuY2VkIGluIHV0ZjguaAotI2luY2x1ZGUgInNvc3RyZWFtLmgiCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVsaW1pdHMuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gQ3JlYXRlcyBhbiBvdXRwdXQgc3RyaW5nIHN0cmVhbSBsaW5rZWQgdG8gdGhlIGdpdmVuIG1lbW9yeSBhcmVhLgotb3N0cmluZ3N0cmVhbTo6b3N0cmluZ3N0cmVhbSAodm9pZCogcCwgc2l6ZV90IG4pCi06IG9zdHJlYW0gKCksCi0gIG1fQnVmZmVyICgpLAotICBtX0ZsYWdzICgwKSwKLSAgbV9XaWR0aCAoMCksCi0gIG1fQmFzZSAoMTApLAotICBtX1ByZWNpc2lvbiAoMikKLXsKLSAgICBsaW5rIChwLCBuKTsKLX0KLQotLy8vIENyZWF0ZXMgYW4gb3V0cHV0IHN0cmluZyBzdHJlYW0sIGluaXRpYWxpemluZyB0aGUgYnVmZmVyIHdpdGggdi4KLW9zdHJpbmdzdHJlYW06Om9zdHJpbmdzdHJlYW0gKGNvbnN0IHN0cmluZyYgdikKLTogb3N0cmVhbSAoKSwKLSAgbV9CdWZmZXIgKHYpLAotICBtX0ZsYWdzICgwKSwKLSAgbV9XaWR0aCAoMCksCi0gIG1fQmFzZSAoMTApLAotICBtX1ByZWNpc2lvbiAoMikKLXsKLSAgICBvc3RyZWFtOjpsaW5rIChtX0J1ZmZlcik7Ci19Ci0KLS8vLyBDb3BpZXMgXHAgcyB0byB0aGUgaW50ZXJuYWwgYnVmZmVyLgotdm9pZCBvc3RyaW5nc3RyZWFtOjpzdHIgKGNvbnN0IHN0cmluZyYgcykKLXsKLSAgICBtX0J1ZmZlciA9IHM7Ci0gICAgb3N0cmVhbTo6bGluayAobV9CdWZmZXIpOwotICAgIFNldFBvcyAobV9CdWZmZXIuc2l6ZSgpKTsKLX0KLQotLy8vIFdyaXRlcyBhIHNpbmdsZSBjaGFyYWN0ZXIgaW50byB0aGUgc3RyZWFtLgotdm9pZCBvc3RyaW5nc3RyZWFtOjppd3JpdGUgKHVpbnQ4X3QgdikKLXsKLSAgICBpZiAocmVtYWluaW5nKCkgPj0gMSB8fCBvdmVyZmxvdygpID49IDEpCi0Jb3N0cmVhbTo6aXdyaXRlICh2KTsKLX0KLQotLy8vIFdyaXRlcyBccCBidWYgb2Ygc2l6ZSBccCBidWZTaXplIHRocm91Z2ggdGhlIGludGVybmFsIGJ1ZmZlci4KLXZvaWQgb3N0cmluZ3N0cmVhbTo6d3JpdGVfYnVmZmVyIChjb25zdCBjaGFyKiBidWYsIHNpemVfdHlwZSBidWZTaXplKQotewotICAgIHNpemVfdHlwZSBidHcgPSAwLCB3cml0dGVuID0gMDsKLSAgICB3aGlsZSAoKHdyaXR0ZW4gKz0gYnR3KSA8IGJ1ZlNpemUgJiYgKHJlbWFpbmluZygpIHx8IG92ZXJmbG93KGJ1ZlNpemUgLSB3cml0dGVuKSkpCi0Jd3JpdGUgKGJ1ZiArIHdyaXR0ZW4sIGJ0dyA9IG1pbiAocmVtYWluaW5nKCksIGJ1ZlNpemUgLSB3cml0dGVuKSk7Ci19Ci0KLS8vLyBTaW1wbGUgZGVjaW1hbCBlbmNvZGluZyBvZiBccCBuIGludG8gXHAgZm10LgotaW5saW5lIGNoYXIqIG9zdHJpbmdzdHJlYW06OmVuY29kZV9kZWMgKGNoYXIqIGZtdCwgdWludDMyX3QgbikgY29uc3QKLXsKLSAgICBkbyB7Ci0JKmZtdCsrID0gJzAnICsgbiAlIDEwOwotICAgIH0gd2hpbGUgKG4gLz0gMTApOwotICAgIHJldHVybiAoZm10KTsKLX0KLQotLy8vIEdlbmVyYXRlcyBhIHNwcmludGYgZm9ybWF0IHN0cmluZyBmb3IgdGhlIGdpdmVuIHR5cGUuCi12b2lkIG9zdHJpbmdzdHJlYW06OmZtdHN0cmluZyAoY2hhciogZm10LCBjb25zdCBjaGFyKiB0eXBlc3RyLCBib29sIGJJbnRlZ2VyKSBjb25zdAotewotICAgICpmbXQrKyA9ICclJzsKLSAgICBpZiAobV9XaWR0aCkKLQlmbXQgPSBlbmNvZGVfZGVjIChmbXQsIG1fV2lkdGgpOwotICAgIGlmIChtX0ZsYWdzICYgbGVmdCkKLQkqZm10KysgPSAnLSc7Ci0gICAgaWYgKCFiSW50ZWdlcikgewotCSpmbXQrKyA9ICcuJzsKLQlmbXQgPSBlbmNvZGVfZGVjIChmbXQsIG1fUHJlY2lzaW9uKTsKLSAgICB9Ci0gICAgd2hpbGUgKCp0eXBlc3RyKQotCSpmbXQrKyA9ICp0eXBlc3RyKys7Ci0gICAgaWYgKGJJbnRlZ2VyKSB7Ci0JaWYgKG1fQmFzZSA9PSAxNikKLQkgICAgZm10Wy0xXSA9ICdYJzsKLQllbHNlIGlmIChtX0Jhc2UgPT0gOCkKLQkgICAgZm10Wy0xXSA9ICdvJzsKLSAgICB9IGVsc2UgewotCWlmIChtX0ZsYWdzICYgc2NpZW50aWZpYykKLQkgICAgZm10Wy0xXSA9ICdFJzsKLSAgICB9Ci0gICAgKmZtdCA9IDA7Ci19Ci0KLS8vLyBXcml0ZXMgXHAgdiBpbnRvIHRoZSBzdHJlYW0gYXMgdXRmOAotdm9pZCBvc3RyaW5nc3RyZWFtOjppd3JpdGUgKHdjaGFyX3QgdikKLXsKLSAgICBjaGFyIGJ1ZmZlciBbOF07Ci0gICAgKnV0ZjhvdXQoYnVmZmVyKSA9IHY7Ci0gICAgd3JpdGVfYnVmZmVyIChidWZmZXIsIFV0ZjhCeXRlcyh2KSk7Ci19Ci0KLS8vLyBXcml0ZXMgdmFsdWUgXHAgdiBpbnRvIHRoZSBzdHJlYW0gYXMgdGV4dC4KLXZvaWQgb3N0cmluZ3N0cmVhbTo6aXdyaXRlIChib29sIHYpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgdGZbMl1bOF0gPSB7ICJmYWxzZSIsICJ0cnVlIiB9OwotICAgIHdyaXRlX2J1ZmZlciAodGZbdl0sIDUgLSB2KTsKLX0KLQotLy8vIEVxdWl2YWxlbnQgdG8gYSB2c3ByaW50ZiBvbiB0aGUgc3RyaW5nLgotaW50IG9zdHJpbmdzdHJlYW06OnZmb3JtYXQgKGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcmdzKQotewotI2lmIEhBVkVfVkFfQ09QWQotICAgIHZhX2xpc3QgYXJnczI7Ci0jZWxzZQotICAgICNkZWZpbmUgYXJnczIgYXJncwotICAgICN1bmRlZiBfX3ZhX2NvcHkKLSAgICAjZGVmaW5lIF9fdmFfY29weSh4LHkpCi0jZW5kaWYKLSAgICBzaXplX3QgcnYsIHNwYWNlOwotICAgIGRvIHsKLQlzcGFjZSA9IHJlbWFpbmluZygpOwotCV9fdmFfY29weSAoYXJnczIsIGFyZ3MpOwotCXJ2ID0gdnNucHJpbnRmIChpcG9zKCksIHNwYWNlLCBmbXQsIGFyZ3MyKTsKLQlpZiAoc3NpemVfdChydikgPCAwKQotCSAgICBydiA9IHNwYWNlOwotICAgIH0gd2hpbGUgKHJ2ID49IHNwYWNlICYmIHJ2IDwgb3ZlcmZsb3cocnYgKyAxKSk7Ci0gICAgU2V0UG9zIChwb3MoKSArIG1pbiAocnYsIHNwYWNlKSk7Ci0gICAgcmV0dXJuIChydik7Ci19Ci0KLS8vLyBFcXVpdmFsZW50IHRvIGEgc3ByaW50ZiBvbiB0aGUgc3RyaW5nLgotaW50IG9zdHJpbmdzdHJlYW06OmZvcm1hdCAoY29uc3QgY2hhciogZm10LCAuLi4pCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotICAgIGNvbnN0IGludCBydiA9IHZmb3JtYXQgKGZtdCwgYXJncyk7Ci0gICAgdmFfZW5kIChhcmdzKTsKLSAgICByZXR1cm4gKHJ2KTsKLX0KLQotLy8vIExpbmtzIHRvIHN0cmluZyBccCBsIGFzIHJlc2l6YWJsZS4KLXZvaWQgb3N0cmluZ3N0cmVhbTo6bGluayAodm9pZCogcCwgc2l6ZV90IG4pCi17Ci0gICAgYXNzZXJ0ICgocCB8fCAhbikgJiYgIlRoZSBvdXRwdXQgc3RyaW5nIGJ1ZmZlciBtdXN0IG5vdCBiZSByZWFkLW9ubHkiKTsKLSAgICBvc3RyZWFtOjpsaW5rIChwLCBuKTsKLSAgICBtX0J1ZmZlci5saW5rIChwLCBuKTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgY29udGVudHMgb2YgXHAgYnVmZmVyIG9mIFxwIHNpemUgaW50byB0aGUgc3RyZWFtLgotdm9pZCBvc3RyaW5nc3RyZWFtOjp3cml0ZSAoY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3R5cGUgc3opCi17Ci0gICAgaWYgKHJlbWFpbmluZygpIDwgc3ogJiYgb3ZlcmZsb3coc3opIDwgc3opCi0JcmV0dXJuOwotICAgIG9zdHJlYW06OndyaXRlIChidWZmZXIsIHN6KTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgY29udGVudHMgb2YgXHAgYnVmIGludG8gdGhlIHN0cmVhbS4KLXZvaWQgb3N0cmluZ3N0cmVhbTo6d3JpdGUgKGNvbnN0IGNtZW1saW5rJiBidWYpCi17Ci0gICAgaWYgKHJlbWFpbmluZygpIDwgYnVmLnNpemUoKSAmJiBvdmVyZmxvdyhidWYuc2l6ZSgpKSA8IGJ1Zi5zaXplKCkpCi0JcmV0dXJuOwotICAgIG9zdHJlYW06OndyaXRlIChidWYpOwotfQotCi0vLy8gRmx1c2hlcyB0aGUgaW50ZXJuYWwgYnVmZmVyIGJ5IHRydW5jYXRpbmcgaXQgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uCi12b2lkIG9zdHJpbmdzdHJlYW06OmZsdXNoICh2b2lkKQotewotICAgIG1fQnVmZmVyLnJlc2l6ZSAocG9zKCkpOwotfQotCi0vLy8gQXR0ZW1wdHMgdG8gY3JlYXRlIG1vcmUgb3V0cHV0IHNwYWNlLiBSZXR1cm5zIHJlbWFpbmluZygpLgotb3N0cmluZ3N0cmVhbTo6c2l6ZV90eXBlIG9zdHJpbmdzdHJlYW06Om92ZXJmbG93IChzaXplX3R5cGUgbikKLXsKLSAgICBpZiAobiA+IHJlbWFpbmluZygpKSB7Ci0JY29uc3QgdW9mZl90IG9sZFBvcyAocG9zKCkpOwotCW1fQnVmZmVyLnJlc2VydmUgKG9sZFBvcyArIG4sIGZhbHNlKTsKLQltX0J1ZmZlci5yZXNpemUgKG9sZFBvcyArIG4pOwotCW9zdHJlYW06OmxpbmsgKG1fQnVmZmVyKTsKLQlTZXRQb3MgKG9sZFBvcyk7Ci0gICAgfQotICAgIHZlcmlmeV9yZW1haW5pbmcgKCJ3cml0ZSIsICJ0ZXh0Iiwgbik7Ci0gICAgcmV0dXJuIChyZW1haW5pbmcoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zb3N0cmVhbS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc29zdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFkYzMyOC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zb3N0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBzb3N0cmVhbS5oCi0vLwotCi0jaWZuZGVmIFNPU1RSRUFNX0hfNTMyM0RDOEMyNkUxODFENDMyNzhGMkY1M0ZEQ0YxOUYKLSNkZWZpbmUgU09TVFJFQU1fSF81MzIzREM4QzI2RTE4MUQ0MzI3OEYyRjUzRkRDRjE5RgotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVzdHJpbmcuaCIKLSNpbmNsdWRlICJtb3N0cmVhbS5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLWNsYXNzIHN0cmluZzsKLQotLy8vIFxjbGFzcyBvc3RyaW5nc3RyZWFtIHNvc3RyZWFtLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgVGV4dFN0cmVhbXMKLS8vLwotLy8vIFxicmllZiBUaGlzIHN0cmVhbSB3cml0ZXMgdGV4dHVhbCBkYXRhIGludG8gYSBtZW1vcnkgYmxvY2suCi0vLy8KLWNsYXNzIG9zdHJpbmdzdHJlYW0gOiBwdWJsaWMgb3N0cmVhbSB7Ci1wdWJsaWM6Ci0JCQkJb3N0cmluZ3N0cmVhbSAoY29uc3Qgc3RyaW5nJiB2ID0gc3RyaW5nOjplbXB0eV9zdHJpbmcpOwotCQkJCW9zdHJpbmdzdHJlYW0gKHZvaWQqIHAsIHNpemVfdCBuKTsKLSAgICB2b2lkCQkJaXdyaXRlICh1aW50OF90IHYpOwotICAgIHZvaWQJCQlpd3JpdGUgKHdjaGFyX3Qgdik7Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKGludCB2KQkJCXsgaWZvcm1hdCAodik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWl3cml0ZSAodW5zaWduZWQgaW50IHYpCQl7IGlmb3JtYXQgKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKGxvbmcgaW50IHYpCQl7IGlmb3JtYXQgKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKHVuc2lnbmVkIGxvbmcgaW50IHYpCXsgaWZvcm1hdCAodik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWl3cml0ZSAoZmxvYXQgdikJCXsgaWZvcm1hdCAodik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWl3cml0ZSAoZG91YmxlIHYpCQl7IGlmb3JtYXQgKHYpOyB9Ci0gICAgdm9pZAkJCWl3cml0ZSAoYm9vbCB2KTsKLSAgICBpbmxpbmUgdm9pZAkJCWl3cml0ZSAoY29uc3QgY2hhciogcykJCXsgd3JpdGVfYnVmZmVyIChzLCBzdHJsZW4ocykpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKGNvbnN0IHN0cmluZyYgdikJeyB3cml0ZV9idWZmZXIgKHYuYmVnaW4oKSwgdi5zaXplKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKGZtdGZsYWdzIGYpOwotI2lmIEhBVkVfTE9OR19MT05HCi0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKGxvbmcgbG9uZyB2KQkJeyBpZm9ybWF0ICh2KTsgfQotICAgIGlubGluZSB2b2lkCQkJaXdyaXRlICh1bnNpZ25lZCBsb25nIGxvbmcgdikJeyBpZm9ybWF0ICh2KTsgfQotI2VuZGlmCi0gICAgaW5saW5lIHNpemVfdHlwZQkJbWF4X3NpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9CdWZmZXIubWF4X3NpemUoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXB1dCAoY2hhciBjKQkJCXsgaXdyaXRlICh1aW50OF90KGMpKTsgfQotICAgIGludAkJCQl2Zm9ybWF0IChjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXJncyk7Ci0gICAgaW50CQkJCWZvcm1hdCAoY29uc3QgY2hhciogZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMiwgMykpKTsKLSAgICBpbmxpbmUgdm9pZAkJCXNldF9iYXNlICh1aW50MTZfdCBiKQkJeyBtX0Jhc2UgPSBiOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlzZXRfd2lkdGggKHVpbnQxNl90IHcpCQl7IG1fV2lkdGggPSB3OyB9Ci0gICAgaW5saW5lIHZvaWQJCQlzZXRfZGVjaW1hbF9zZXBhcmF0b3IgKGNoYXIpCXsgfQotICAgIGlubGluZSB2b2lkCQkJc2V0X3Rob3VzYW5kX3NlcGFyYXRvciAoY2hhcikJeyB9Ci0gICAgaW5saW5lIHZvaWQJCQlzZXRfcHJlY2lzaW9uICh1aW50MTZfdCB2KQl7IG1fUHJlY2lzaW9uID0gdjsgfQotICAgIHZvaWQJCQlsaW5rICh2b2lkKiBwLCBzaXplX3R5cGUgbik7Ci0gICAgaW5saW5lIHZvaWQJCQlsaW5rIChtZW1saW5rJiBsKQkJeyBsaW5rIChsLmRhdGEoKSwgbC53cml0YWJsZV9zaXplKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHN0cmluZyYJc3RyICh2b2lkKQkJCXsgZmx1c2goKTsgcmV0dXJuIChtX0J1ZmZlcik7IH0KLSAgICB2b2lkCQkJc3RyIChjb25zdCBzdHJpbmcmIHMpOwotICAgIHZvaWQJCQl3cml0ZSAoY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3R5cGUgc2l6ZSk7Ci0gICAgdm9pZAkJCXdyaXRlIChjb25zdCBjbWVtbGluayYgYnVmKTsKLSAgICBpbmxpbmUgdm9pZAkJCXdyaXRlX3N0cnogKGNvbnN0IGNoYXIqKQl7IGFzc2VydCAoISJXcml0aW5nIG51bCBjaGFyYWN0ZXJzIGludG8gYSB0ZXh0IHN0cmVhbSBpcyBub3QgYWxsb3dlZCIpOyB9Ci0gICAgdm9pZAkJCWZsdXNoICh2b2lkKTsKLSAgICB2aXJ0dWFsIHNpemVfdHlwZQkJb3ZlcmZsb3cgKHNpemVfdHlwZSBuID0gMSk7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZAkJCXdyaXRlX2J1ZmZlciAoY29uc3QgY2hhciogYnVmLCBzaXplX3R5cGUgYnVmU2l6ZSk7Ci0gICAgaW5saW5lIHZvaWQJCQlyZXNlcnZlIChzaXplX3R5cGUgbikJCXsgbV9CdWZmZXIucmVzZXJ2ZSAobiwgZmFsc2UpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJY2FwYWNpdHkgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9CdWZmZXIuY2FwYWNpdHkoKSk7IH0KLXByaXZhdGU6Ci0gICAgaW5saW5lIGNoYXIqCQllbmNvZGVfZGVjIChjaGFyKiBmbXQsIHVpbnQzMl90IG4pIGNvbnN0OwotICAgIHZvaWQJCQlmbXRzdHJpbmcgKGNoYXIqIGZtdCwgY29uc3QgY2hhciogdHlwZXN0ciwgYm9vbCBiSW50ZWdlcikgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZAkJCWlmb3JtYXQgKFQgdik7Ci1wcml2YXRlOgotICAgIHN0cmluZwkJCW1fQnVmZmVyOwkJLy8vPCBUaGUgb3V0cHV0IGJ1ZmZlci4KLSAgICB1aW50MzJfdAkJCW1fRmxhZ3M7CQkvLy88IFNlZSBpb3NfYmFzZTo6Zm10ZmxhZ3MuCi0gICAgdWludDE2X3QJCQltX1dpZHRoOwkJLy8vPCBGaWVsZCB3aWR0aC4KLSAgICB1aW50OF90CQkJbV9CYXNlOwkJCS8vLzwgTnVtZXJpYyBiYXNlIGZvciB3cml0aW5nIG51bWJlcnMuCi0gICAgdWludDhfdAkJCW1fUHJlY2lzaW9uOwkJLy8vPCBOdW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHNlcGFyYXRvci4KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBjb25zdCBjaGFyKiBwcmludGZfdHlwZXN0cmluZyAoY29uc3QgVCYpCXsgcmV0dXJuICgiIik7IH0KLSNkZWZpbmUgUFJJTlRGX1RZUEVTVFJJTkdfU1BFQyh0eXBlLHN0cikJXAotdGVtcGxhdGUgPD4gaW5saW5lIGNvbnN0IGNoYXIqIHByaW50Zl90eXBlc3RyaW5nIChjb25zdCB0eXBlJikJeyByZXR1cm4gKHN0cik7IH0KLVBSSU5URl9UWVBFU1RSSU5HX1NQRUMgKGludCwJCSJkIikKLVBSSU5URl9UWVBFU1RSSU5HX1NQRUMgKHVuc2lnbmVkIGludCwJInUiKQotUFJJTlRGX1RZUEVTVFJJTkdfU1BFQyAobG9uZywJCSJsZCIpCi1QUklOVEZfVFlQRVNUUklOR19TUEVDICh1bnNpZ25lZCBsb25nLAkibHUiKQotUFJJTlRGX1RZUEVTVFJJTkdfU1BFQyAoZmxvYXQsCQkiZiIpCi1QUklOVEZfVFlQRVNUUklOR19TUEVDIChkb3VibGUsCQkibGYiKQotI2lmIEhBVkVfTE9OR19MT05HCi1QUklOVEZfVFlQRVNUUklOR19TUEVDIChsb25nIGxvbmcsCSJsbGQiKQotUFJJTlRGX1RZUEVTVFJJTkdfU1BFQyAodW5zaWduZWQgbG9uZyBsb25nLCAibGx1IikKLSNlbmRpZgotI3VuZGVmIFBSSU5URl9UWVBFU1RSSU5HX1NQRUMKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIG9zdHJpbmdzdHJlYW06Omlmb3JtYXQgKFQgdikKLXsKLSAgICBjaGFyIGZtdCBbMTZdOwotICAgIGZtdHN0cmluZyAoZm10LCBwcmludGZfdHlwZXN0cmluZyh2KSwgbnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVnZXIpOwotICAgIGZvcm1hdCAoZm10LCB2KTsKLX0KLQotLy8vIFNldHMgdGhlIGZsYWcgXHAgZiBpbiB0aGUgc3RyZWFtLgotaW5saW5lIHZvaWQgb3N0cmluZ3N0cmVhbTo6aXdyaXRlIChmbXRmbGFncyBmKQotewotICAgIHN3aXRjaCAoZikgewotCWNhc2Ugb2N0OglzZXRfYmFzZSAoOCk7CWJyZWFrOwotCWNhc2UgZGVjOglzZXRfYmFzZSAoMTApOwlicmVhazsKLQljYXNlIGhleDoJc2V0X2Jhc2UgKDE2KTsJYnJlYWs7Ci0JY2FzZSBsZWZ0OgltX0ZsYWdzIHw9IGxlZnQ7IG1fRmxhZ3MgJj0gfnJpZ2h0OyBicmVhazsKLQljYXNlIHJpZ2h0OgltX0ZsYWdzIHw9IHJpZ2h0OyBtX0ZsYWdzICY9IH5sZWZ0OyBicmVhazsKLQlkZWZhdWx0OgltX0ZsYWdzIHw9IGY7CWJyZWFrOwotICAgIH0KLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNkZWZpbmUgT1NUUlNUUkVBTV9PUEVSQVRPUihSZWFsVCwgQ2FzdFQpCQkJXAotaW5saW5lIG9zdHJpbmdzdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJpbmdzdHJlYW0mIG9zLCBSZWFsVCB2KQlcCi17IG9zLml3cml0ZSAoKENhc3RUKSB2KTsgcmV0dXJuIChvcyk7IH0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1PU1RSU1RSRUFNX09QRVJBVE9SIChUKiwJCXVuc2lnbmVkIGxvbmcgaW50KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoY29uc3Qgdm9pZCosCXVuc2lnbmVkIGxvbmcgaW50KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAodm9pZCosCQl1bnNpZ25lZCBsb25nIGludCkKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGNvbnN0IGNoYXIqLAljb25zdCBjaGFyKikKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGNoYXIqLAkJY29uc3QgY2hhciopCi1PU1RSU1RSRUFNX09QRVJBVE9SICh1aW50OF90KiwJCWNvbnN0IGNoYXIqKQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoY29uc3QgdWludDhfdCosCWNvbnN0IGNoYXIqKQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoY29uc3Qgc3RyaW5nJiwJY29uc3Qgc3RyaW5nJikKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGlvc19iYXNlOjpmbXRmbGFncyxpb3NfYmFzZTo6Zm10ZmxhZ3MpCi1PU1RSU1RSRUFNX09QRVJBVE9SIChpbnQ4X3QsCQl1aW50OF90KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAodWludDhfdCwJCXVpbnQ4X3QpCi1PU1RSU1RSRUFNX09QRVJBVE9SIChzaG9ydCBpbnQsCQlpbnQpCi1PU1RSU1RSRUFNX09QRVJBVE9SICh1bnNpZ25lZCBzaG9ydCwJdW5zaWduZWQgaW50KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoaW50LAkJaW50KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAodW5zaWduZWQgaW50LAl1bnNpZ25lZCBpbnQpCi1PU1RSU1RSRUFNX09QRVJBVE9SIChsb25nLAkJbG9uZykKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKHVuc2lnbmVkIGxvbmcsCXVuc2lnbmVkIGxvbmcpCi1PU1RSU1RSRUFNX09QRVJBVE9SIChmbG9hdCwJCWZsb2F0KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoZG91YmxlLAkJZG91YmxlKQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoYm9vbCwJCWJvb2wpCi1PU1RSU1RSRUFNX09QRVJBVE9SICh3Y2hhcl90LAkJd2NoYXJfdCkKLSNpZiBIQVZFX1RIUkVFX0NIQVJfVFlQRVMKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGNoYXIsCQl1aW50OF90KQotI2VuZGlmCi0jaWYgSEFWRV9MT05HX0xPTkcKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGxvbmcgbG9uZywJCWxvbmcgbG9uZykKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3N0cm1zaXplLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zdHJtc2l6ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODg4ZTE1Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3N0cm1zaXplLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vLyBcZmlsZSBzdHJtc2l6ZS5oCi0vLy8gXGJyaWVmIFRoaXMgZmlsZSBjb250YWlucyBzdHJlYW1fc2l6ZV9vZiBmdW5jdGlvbnMgZm9yIGJhc2ljIHR5cGVzIGFuZCAqU1RSRUFNQUJMRSBtYWNyb3MuCi0vLy8gc3RyZWFtX3NpemVfb2YgZnVuY3Rpb25zIHJldHVybiB0aGUgc2l6ZSBvZiB0aGUgb2JqZWN0J3MgZGF0YSB0aGF0IGlzIHdyaXR0ZW4gb3IKLS8vLyByZWFkIGZyb20gYSBzdHJlYW0uCi0vLwotCi0jaWZuZGVmIFNUUk1TSVpFX0hfMDUyRkYxNkIyRDhBNjA4NzYxQkYxMDMzM0QwNjUwNzMKLSNkZWZpbmUgU1RSTVNJWkVfSF8wNTJGRjE2QjJEOEE2MDg3NjFCRjEwMzMzRDA2NTA3MwotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBnaXZlbiBvYmplY3QuIE92ZXJsb2FkcyBmb3Igc3RhbmRhcmQgdHlwZXMgYXJlIGF2YWlsYWJsZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoVCopCXsgcmV0dXJuIChzaXplb2YoVCopKTsJCX0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfSUdOT1JFX1RISVMKLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGludDhfdCkJeyByZXR1cm4gKHNpemVvZihpbnQ4X3QpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAodWludDhfdCkJeyByZXR1cm4gKHNpemVvZih1aW50OF90KSk7CX0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGludDE2X3QpCXsgcmV0dXJuIChzaXplb2YoaW50MTZfdCkpOwl9Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mICh1aW50MTZfdCkJeyByZXR1cm4gKHNpemVvZih1aW50MTZfdCkpOwl9Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChpbnQzMl90KQl7IHJldHVybiAoc2l6ZW9mKGludDMyX3QpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAodWludDMyX3QpCXsgcmV0dXJuIChzaXplb2YodWludDMyX3QpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoZmxvYXQpCXsgcmV0dXJuIChzaXplb2YoZmxvYXQpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoZG91YmxlKQl7IHJldHVybiAoc2l6ZW9mKGRvdWJsZSkpOwl9Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChib29sKQl7IHJldHVybiAoc2l6ZW9mKHVpbnQ4X3QpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAod2NoYXJfdCkJeyByZXR1cm4gKHNpemVvZih3Y2hhcl90KSk7CX0KLSNpZiBIQVZFX1RIUkVFX0NIQVJfVFlQRVMKLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGNoYXIpCXsgcmV0dXJuIChzaXplb2YoY2hhcikpOwl9Ci0jZW5kaWYKLSNpZiBIQVZFX0lOVDY0X1QKLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGludDY0X3QpCXsgcmV0dXJuIChzaXplb2YoaW50NjRfdCkpOwl9Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mICh1aW50NjRfdCkJeyByZXR1cm4gKHNpemVvZih1aW50NjRfdCkpOwl9Ci0jZW5kaWYKLSNpZiBTSVpFX09GX0xPTkcgPT0gU0laRV9PRl9JTlQKLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGxvbmcgdikJCQl7IHJldHVybiAoc2l6ZW9mICh2KSk7CX0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKHVuc2lnbmVkIGxvbmcgdikJCXsgcmV0dXJuIChzaXplb2YgKHYpKTsJfQotI2VuZGlmCi0jaWYgSEFWRV9MT05HX0xPTkcgJiYgKCFIQVZFX0lOVDY0X1QgfHwgU0laRV9PRl9MT05HX0xPTkcgPiA4KQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAobG9uZyBsb25nIHYpCQl7IHJldHVybiAoc2l6ZW9mICh2KSk7CX0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKHVuc2lnbmVkIGxvbmcgbG9uZyB2KQl7IHJldHVybiAoc2l6ZW9mICh2KSk7CX0KLSNlbmRpZgotI2VuZGlmIC8vIERPWFlHRU5fU0hPVUxEX0lHTk9SRV9USElTCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotLy8vIERlY2xhcmVzIHRoYXQgVCBpcyBub3Qgd3JpdHRlbiB0byBpc3RyZWFtL29zdHJlYW0uCi0jZGVmaW5lIE5PVF9TVFJFQU1BQkxFKFQpCVwKLSAgICBuYW1lc3BhY2UgdXN0bCB7CQlcCi0JaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCBUJikJCXsgcmV0dXJuIChpcyk7IH0JXAotCWlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgY29uc3QgVCYpCXsgcmV0dXJuIChvcyk7IH0JXAotCWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGNvbnN0IFQmKQkJCXsgcmV0dXJuICgwKTsgfQkJXAotICAgIH0KLQotLy8KLS8vIEV4dHJhIG92ZXJsb2FkcyBpbiB0aGlzIG1hY3JvIGFyZSBuZWVkZWQgYmVjYXVzZSBpdCBpcyB0aGUgb25lIHVzZWQgZm9yCi0vLyBtYXJzaGFsbGluZyBwb2ludGVycy4gUGFzc2luZyBhIHBvaW50ZXIgdG8gc3RyZWFtX3NpemVfb2YgY3JlYXRlcyBhCi0vLyBjb252ZXJzaW9uIGFtYmlndWl0eSBiZXR3ZWVuIGNvbnZlcnRpbmcgdG8gY29uc3QgcG9pbnRlciYgYW5kIGNvbnZlcnRpbmcKLS8vIHRvIGJvb2w7IHRoZSBjb21waWxlciBhbHdheXMgY2hvb3NlcyB0aGUgYm9vbCBjb252ZXJzaW9uIChiZWNhdXNlIGl0Ci0vLyByZXF1aXJlcyAxIGNvbnZlcnNpb24gaW5zdGVhZCBvZiAyIGZvciB0aGUgb3RoZXIgY2hvaWNlKS4gVGhlcmUgaXMgbGl0dGxlCi0vLyBwb2ludCBpbiBhZGRpbmcgdGhlIG92ZXJsb2FkcyB0byBvdGhlciBtYWNyb3MsIHNpbmNlIHRoZXkgYXJlIG5ldmVyIHVzZWQKLS8vIGZvciBwb2ludGVycy4KLS8vCi0vLy8gRGVjbGFyZXMgdGhhdCBUIGlzIHRvIGJlIHdyaXR0ZW4gYXMgaXMgaW50byBiaW5hcnkgc3RyZWFtcy4KLSNkZWZpbmUgSU5URUdSQUxfU1RSRUFNQUJMRShUKQlcCi0gICAgbmFtZXNwYWNlIHVzdGwgewkJXAotCWlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgVCYgdikJCXsgaXMuaXJlYWQodik7ICByZXR1cm4gKGlzKTsgfQlcCi0JaW5saW5lIG9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zLCBjb25zdCBUJiB2KQl7IG9zLml3cml0ZSh2KTsgcmV0dXJuIChvcyk7IH0JXAotCWlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgVCYgdikJCXsgb3MuaXdyaXRlKHYpOyByZXR1cm4gKG9zKTsgfQlcCi0JaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoY29uc3QgVCYgdikJCXsgcmV0dXJuIChzaXplb2YodikpOyB9CQlcCi0JaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoVCYgdikJCQl7IHJldHVybiAoc2l6ZW9mKHYpKTsgfQkJXAotICAgIH0KLQotI2lmZGVmIE5ERUJVRwotICAgICNkZWZpbmUgU1REX1NUUkVBTUFCTEVfU1pDSEtfQkVHSU4KLSAgICAjZGVmaW5lIFNURF9TVFJFQU1BQkxFX1NaQ0hLX0VORAotI2Vsc2UKLSAgICAjZGVmaW5lIFNURF9TVFJFQU1BQkxFX1NaQ0hLX0JFR0lOCQlcCi0JYXNzZXJ0IChvcy5hbGlnbmVkIChhbGlnbm9mICh2KSkpOwlcCi0JY29uc3QgdW9mZl90IHZTdGFydCAob3MucG9zKCkpCi0gICAgI2RlZmluZSBTVERfU1RSRUFNQUJMRV9TWkNIS19FTkQJCVwKLQlpZiAob3MucG9zKCkgLSB2U3RhcnQgIT0gdi5zdHJlYW1fc2l6ZSgpKSBcCi0JICAgIHRocm93IHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uICgid3JpdGUiLCB0eXBlaWQodikubmFtZSgpLCB2U3RhcnQsIG9zLnBvcygpIC0gdlN0YXJ0LCB2LnN0cmVhbV9zaXplKCkpCi0jZW5kaWYKLQotLy8vIERlY2xhcmVzIHRoYXQgVCBjb250YWlucyByZWFkLCB3cml0ZSwgYW5kIHN0cmVhbV9zaXplIG1ldGhvZHMuCi0jZGVmaW5lIFNURF9TVFJFQU1BQkxFKFQpCVwKLSAgICBuYW1lc3BhY2UgdXN0bCB7CQlcCi0JaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCBUJiB2KQkJeyBhc3NlcnQgKGlzLmFsaWduZWQgKGFsaWdub2YgKHYpKSk7IHYucmVhZCAoaXMpOyAgcmV0dXJuIChpcyk7IH0JXAotCWlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgY29uc3QgVCYgdikJeyBTVERfU1RSRUFNQUJMRV9TWkNIS19CRUdJTjsgdi53cml0ZSAob3MpOyBTVERfU1RSRUFNQUJMRV9TWkNIS19FTkQ7IHJldHVybiAob3MpOyB9CVwKLQlpbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChjb25zdCBUJiB2KQkJeyByZXR1cm4gKHYuc3RyZWFtX3NpemUoKSk7IH0JXAotICAgIH0KLQotLy8vIERlY2xhcmVzIHRoYXQgVCBpcyB0byBiZSBjYXN0IGludG8gVFNVQiBmb3Igc3RyZWFtaW5nLgotI2RlZmluZSBDQVNUX1NUUkVBTUFCTEUoVCxUU1VCKQlcCi0gICAgbmFtZXNwYWNlIHVzdGwgewkJXAotCWlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgVCYgdikJCXsgVFNVQiBzdjsgaXMgPj4gc3Y7IHYgPSAoVCkoc3YpOyByZXR1cm4gKGlzKTsgfQlcCi0JaW5saW5lIG9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zLCBjb25zdCBUJiB2KQl7IG9zIDw8IFRTVUIodik7IHJldHVybiAob3MpOyB9CQkJXAotCWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGNvbnN0IFQmIHYpCQl7IHJldHVybiAoc2l6ZW9mKFRTVUIodikpKTsgfQkJCQlcCi0gICAgfQotCi0vLy8gUGxhY2VkIGludG8gYSBjbGFzcyBpdCBkZWNsYXJlcyB0aGUgbWV0aG9kcyByZXF1aXJlZCBieSBTVERfU1RSRUFNQUJMRS4gU3ludGFjdGljIHN1Z2FyLgotI2RlZmluZSBERUNMQVJFX1NURF9TVFJFQU1BQkxFCQkJXAotICAgIHB1YmxpYzoJCQkJCVwKLQl2b2lkCXJlYWQgKGlzdHJlYW0mIGlzKTsJCVwKLQl2b2lkCXdyaXRlIChvc3RyZWFtJiBvcykgY29uc3Q7CVwKLQlzaXplX3QJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0Ci0KLS8vLyBEZWNsYXJlcyBccCBUIHRvIGJlIHdyaXRhYmxlIHRvIHRleHQgc3RyZWFtcy4gUmVhZGluZyBpcyBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSB5b3Ugc2hvdWxkIG5vdCBkbyBpdC4KLSNkZWZpbmUgVEVYVF9TVFJFQU1BQkxFKFQpCVwKLSAgICBuYW1lc3BhY2UgdXN0bCB7CQlcCi0JaW5saW5lIG9zdHJpbmdzdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJpbmdzdHJlYW0mIG9zLCBjb25zdCBUJiB2KQlcCi0JICAgIHsgdi50ZXh0X3dyaXRlIChvcyk7IHJldHVybiAob3MpOyB9CVwKLSAgICB9Ci0KLS8vLyBTcGVjaWZpZXMgdGhhdCBccCBUIGlzIHByaW50ZWQgYnkgdXNpbmcgaXQgYXMgYW4gaW5kZXggaW50byBccCBOYW1lcyBzdHJpbmcgYXJyYXkuCi0jZGVmaW5lIExPT0tVUF9URVhUX1NUUkVBTUFCTEUoVCxOYW1lcyxuTmFtZXMpCVwKLSAgICBuYW1lc3BhY2UgdXN0bCB7CQlcCi0JaW5saW5lIG9zdHJpbmdzdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJpbmdzdHJlYW0mIG9zLCBjb25zdCBUJiB2KQlcCi0JewkJCQlcCi0JICAgIGlmICh1b2ZmX3QodikgPCAobk5hbWVzKSkJXAotCQlvcyA8PCBOYW1lc1t2XTsJCVwKLQkgICAgZWxzZQkJCVwKLQkJb3MgPDwgdW9mZl90KHYpOwlcCi0JICAgIHJldHVybiAob3MpOwkJXAotCX0JCQkJXAotICAgIH0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VhbGdvLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YWxnby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2I2NmQwLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VhbGdvLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NzcgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVhbGdvLmgKLS8vCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBTVEwgYWxnb3JpdGhtcy4KLS8vCi0vLyBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUgY29waWVkCi0vLyBleGFjdGx5IGZyb20gdGhlIFNHSSB2ZXJzaW9uIG9mIFNUTCBkb2N1bWVudGF0aW9uIGFsb25nIHdpdGggY29tbWVudHMgYWJvdXQKLS8vIHRoZWlyIHVzZS4gVGhlIGNvZGUgaXMgTk9UIHRoZSBzYW1lLCB0aG91Z2ggdGhlIGZ1bmN0aW9uYWxpdHkgdXN1YWxseSBpcy4KLS8vCi0KLSNpZm5kZWYgVUFMR09fSF83MTFBQjQyMTRENDE3QTUxMTY2Njk0RDQ3QTY2MkQ2RQotI2RlZmluZSBVQUxHT19IXzcxMUFCNDIxNEQ0MTdBNTExNjY2OTRENDdBNjYyRDZFCi0KLSNpbmNsdWRlICJ1cGFpci5oIgotI2luY2x1ZGUgInVhbGdvYmFzZS5oIgotI2luY2x1ZGUgInVmdW5jdGlvbi5oIgotI2luY2x1ZGUgInVwcmVkYWxnby5oIgotI2luY2x1ZGUgInVtZW1vcnkuaCIKLSNpbmNsdWRlIDxzdGRsaWIuaD4JLy8gZm9yIHJhbmQoKQotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBTd2FwcyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIFtmaXJzdCwgbGFzdCkgYW5kIFtyZXN1bHQsKQotLy8vIFxpbmdyb3VwIFN3YXBBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IyPgotaW5saW5lIEZvcndhcmRJdGVyYXRvcjIgc3dhcF9yYW5nZXMgKEZvcndhcmRJdGVyYXRvcjEgZmlyc3QsIEZvcndhcmRJdGVyYXRvcjIgbGFzdCwgRm9yd2FyZEl0ZXJhdG9yMiByZXN1bHQpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QsICsrcmVzdWx0KQotCWl0ZXJfc3dhcCAoZmlyc3QsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZmlyc3QgaXRlcmF0b3IgaSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBzdWNoIHRoYXQKLS8vLyAqaSA9PSB2YWx1ZS4gUmV0dXJucyBsYXN0IGlmIG5vIHN1Y2ggaXRlcmF0b3IgZXhpc3RzLiAKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBFcXVhbGl0eUNvbXBhcmFibGU+Ci1pbmxpbmUgSW5wdXRJdGVyYXRvciBmaW5kIChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIGNvbnN0IEVxdWFsaXR5Q29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QgJiYgISgqZmlyc3QgPT0gdmFsdWUpKQotCSsrIGZpcnN0OwotICAgIHJldHVybiAoZmlyc3QpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZmlyc3QgaXRlcmF0b3Igc3VjaCB0aGF0ICppID09ICooaSArIDEpCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotRm9yd2FyZEl0ZXJhdG9yIGFkamFjZW50X2ZpbmQgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgaWYgKGZpcnN0ICE9IGxhc3QpCi0JZm9yIChGb3J3YXJkSXRlcmF0b3IgcHJldiA9IGZpcnN0OyArK2ZpcnN0ICE9IGxhc3Q7ICsrIHByZXYpCi0JICAgIGlmICgqcHJldiA9PSAqZmlyc3QpCi0JCXJldHVybiAocHJldik7Ci0gICAgcmV0dXJuIChsYXN0KTsKLX0KLQotLy8vIFJldHVybnMgdGhlIHBvaW50ZXIgdG8gdGhlIGZpcnN0IHBhaXIgb2YgdW5lcXVhbCBlbGVtZW50cy4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgotcGFpcjxJbnB1dEl0ZXJhdG9yLElucHV0SXRlcmF0b3I+Ci1taXNtYXRjaCAoSW5wdXRJdGVyYXRvciBmaXJzdDEsIElucHV0SXRlcmF0b3IgbGFzdDEsIElucHV0SXRlcmF0b3IgZmlyc3QyKQotewotICAgIHdoaWxlIChmaXJzdDEgIT0gbGFzdDEgJiYgKmZpcnN0MSA9PSAqZmlyc3QyKQotCSsrIGZpcnN0MSwgKysgZmlyc3QyOwotICAgIHJldHVybiAobWFrZV9wYWlyIChmaXJzdDEsIGZpcnN0MikpOwotfQotCi0vLy8gXGJyaWVmIFJldHVybnMgdHJ1ZSBpZiB0d28gcmFuZ2VzIGFyZSBlcXVhbC4KLS8vLyBUaGlzIGlzIGFuIGV4dGVuc2lvbiwgcHJlc2VudCBpbiB1U1RMIGFuZCBTR0kgU1RMLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBlcXVhbCAoSW5wdXRJdGVyYXRvciBmaXJzdDEsIElucHV0SXRlcmF0b3IgbGFzdDEsIElucHV0SXRlcmF0b3IgZmlyc3QyKQotewotICAgIHJldHVybiAobWlzbWF0Y2ggKGZpcnN0MSwgbGFzdDEsIGZpcnN0MikuZmlyc3QgPT0gbGFzdDEpOwotfQotCi0vLy8gQ291bnQgZmluZHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbZmlyc3QsIGxhc3QpIHRoYXQgYXJlIGVxdWFsCi0vLy8gdG8gdmFsdWUuIE1vcmUgcHJlY2lzZWx5LCB0aGUgZmlyc3QgdmVyc2lvbiBvZiBjb3VudCByZXR1cm5zIHRoZQotLy8vIG51bWJlciBvZiBpdGVyYXRvcnMgaSBpbiBbZmlyc3QsIGxhc3QpIHN1Y2ggdGhhdCAqaSA9PSB2YWx1ZS4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBFcXVhbGl0eUNvbXBhcmFibGU+Ci1pbmxpbmUgc2l6ZV90IGNvdW50IChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIGNvbnN0IEVxdWFsaXR5Q29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgc2l6ZV90IHRvdGFsID0gMDsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLQlpZiAoKmZpcnN0ID09IHZhbHVlKQotCSAgICArKyB0b3RhbDsKLSAgICByZXR1cm4gKHRvdGFsKTsKLX0KLQotLy8vCi0vLy8gVGhlIGZpcnN0IHZlcnNpb24gb2YgdHJhbnNmb3JtIHBlcmZvcm1zIHRoZSBvcGVyYXRpb24gb3AoKmkpIGZvciBlYWNoCi0vLy8gaXRlcmF0b3IgaSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSwgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCBvZiB0aGF0Ci0vLy8gb3BlcmF0aW9uIHRvICpvLCB3aGVyZSBvIGlzIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBpdGVyYXRvci4gVGhhdCBpcywKLS8vLyBmb3IgZWFjaCBuIHN1Y2ggdGhhdCAwIDw9IG4gPCBsYXN0IC0gZmlyc3QsIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50Ci0vLy8gKihyZXN1bHQgKyBuKSA9IG9wKCooZmlyc3QgKyBuKSkuCi0vLy8gVGhlIHJldHVybiB2YWx1ZSBpcyByZXN1bHQgKyAobGFzdCAtIGZpcnN0KS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgVW5hcnlGdW5jdGlvbj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciB0cmFuc2Zvcm0gKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBVbmFyeUZ1bmN0aW9uIG9wKQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKLQkqcmVzdWx0ID0gb3AgKCpmaXJzdCk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8KLS8vLyBUaGUgc2Vjb25kIHZlcnNpb24gb2YgdHJhbnNmb3JtIGlzIHZlcnkgc2ltaWxhciwgZXhjZXB0IHRoYXQgaXQgdXNlcyBhCi0vLy8gQmluYXJ5IEZ1bmN0aW9uIGluc3RlYWQgb2YgYSBVbmFyeSBGdW5jdGlvbjogaXQgcGVyZm9ybXMgdGhlIG9wZXJhdGlvbgotLy8vIG9wKCppMSwgKmkyKSBmb3IgZWFjaCBpdGVyYXRvciBpMSBpbiB0aGUgcmFuZ2UgW2ZpcnN0MSwgbGFzdDEpIGFuZCBhc3NpZ25zCi0vLy8gdGhlIHJlc3VsdCB0byAqbywgd2hlcmUgaTIgaXMgdGhlIGNvcnJlc3BvbmRpbmcgaXRlcmF0b3IgaW4gdGhlIHNlY29uZAotLy8vIGlucHV0IHJhbmdlIGFuZCB3aGVyZSBvIGlzIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBpdGVyYXRvci4gVGhhdCBpcywKLS8vLyBmb3IgZWFjaCBuIHN1Y2ggdGhhdCAwIDw9IG4gPCBsYXN0MSAtIGZpcnN0MSwgaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQKLS8vLyAqKHJlc3VsdCArIG4pID0gb3AoKihmaXJzdDEgKyBuKSwgKihmaXJzdDIgKyBuKS4KLS8vLyBUaGUgcmV0dXJuIHZhbHVlIGlzIHJlc3VsdCArIChsYXN0MSAtIGZpcnN0MSkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgdHJhbnNmb3JtIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgQmluYXJ5RnVuY3Rpb24gb3ApCi17Ci0gICAgZm9yICg7IGZpcnN0MSAhPSBsYXN0MTsgKytyZXN1bHQsICsrZmlyc3QxLCArK2ZpcnN0MikKLQkqcmVzdWx0ID0gb3AgKCpmaXJzdDEsICpmaXJzdDIpOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFJlcGxhY2UgcmVwbGFjZXMgZXZlcnkgZWxlbWVudCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBlcXVhbCB0bwotLy8vIG9sZF92YWx1ZSB3aXRoIG5ld192YWx1ZS4gVGhhdCBpczogZm9yIGV2ZXJ5IGl0ZXJhdG9yIGksCi0vLy8gaWYgKmkgPT0gb2xkX3ZhbHVlIHRoZW4gaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQgKmkgPSBuZXdfdmFsdWUuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCByZXBsYWNlIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBjb25zdCBUJiBvbGRfdmFsdWUsIGNvbnN0IFQmIG5ld192YWx1ZSkKLXsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLQlpZiAoKmZpcnN0ID09IG9sZF92YWx1ZSkKLQkgICAgKmZpcnN0ID0gbmV3X3ZhbHVlOwotfQotCi0vLy8gUmVwbGFjZV9jb3B5IGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIHRoZSByYW5nZQotLy8vIFtyZXN1bHQsIHJlc3VsdCArIChsYXN0LWZpcnN0KSksIGV4Y2VwdCB0aGF0IGFueSBlbGVtZW50IGVxdWFsIHRvIG9sZF92YWx1ZQotLy8vIGlzIG5vdCBjb3BpZWQ7IG5ld192YWx1ZSBpcyBjb3BpZWQgaW5zdGVhZC4gTW9yZSBwcmVjaXNlbHksIGZvciBldmVyeQotLy8vIGludGVnZXIgbiBzdWNoIHRoYXQgMCA8PSBuIDwgbGFzdC1maXJzdCwgcmVwbGFjZV9jb3B5IHBlcmZvcm1zIHRoZQotLy8vIGFzc2lnbm1lbnQgKihyZXN1bHQrbikgPSBuZXdfdmFsdWUgaWYgKihmaXJzdCtuKSA9PSBvbGRfdmFsdWUsIGFuZAotLy8vICoocmVzdWx0K24pID0gKihmaXJzdCtuKSBvdGhlcndpc2UuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZXBsYWNlX2NvcHkgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBjb25zdCBUJiBvbGRfdmFsdWUsIGNvbnN0IFQmIG5ld192YWx1ZSkKLXsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytyZXN1bHQsICsrZmlyc3QpCi0gICAgICAgICpyZXN1bHQgPSAoKmZpcnN0ID09IG9sZF92YWx1ZSkgPyBuZXdfdmFsdWUgOiAqZmlyc3Q7Ci19Ci0KLS8vLyBHZW5lcmF0ZSBhc3NpZ25zIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgZ2VuLCBhIGZ1bmN0aW9uIG9iamVjdCB0aGF0Ci0vLy8gdGFrZXMgbm8gYXJndW1lbnRzLCB0byBlYWNoIGVsZW1lbnQgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkuCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgR2VuZXJhdG9yPgotaW5saW5lIHZvaWQgZ2VuZXJhdGUgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIEdlbmVyYXRvciBnZW4pCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JKmZpcnN0ID0gZ2VuKCk7Ci19Ci0KLS8vLyBHZW5lcmF0ZV9uIGFzc2lnbnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyBnZW4sIGEgZnVuY3Rpb24gb2JqZWN0IHRoYXQKLS8vLyB0YWtlcyBubyBhcmd1bWVudHMsIHRvIGVhY2ggZWxlbWVudCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBmaXJzdCtuKS4KLS8vLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGZpcnN0ICsgbi4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIEdlbmVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBnZW5lcmF0ZV9uIChPdXRwdXRJdGVyYXRvciBmaXJzdCwgc2l6ZV90IG4sIEdlbmVyYXRvciBnZW4pCi17Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgIT0gbjsgKytpLCArK2ZpcnN0KQotCSpmaXJzdCA9IGdlbigpOwotICAgIHJldHVybiAoZmlyc3QpOwotfQotCi0vLy8gXGJyaWVmIFJldmVyc2UgcmV2ZXJzZXMgYSByYW5nZS4KLS8vLyBUaGF0IGlzOiBmb3IgZXZlcnkgaSBzdWNoIHRoYXQgMCA8PSBpIDw9IChsYXN0IC0gZmlyc3QpIC8gMiksCi0vLy8gaXQgZXhjaGFuZ2VzICooZmlyc3QgKyBpKSBhbmQgKihsYXN0IC0gKGkgKyAxKSkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci1pbmxpbmUgdm9pZCByZXZlcnNlIChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0KQotewotICAgIGZvciAoOyBkaXN0YW5jZSAoZmlyc3QsIC0tbGFzdCkgPiAwOyArK2ZpcnN0KQotCWl0ZXJfc3dhcCAoZmlyc3QsIGxhc3QpOwotfQotCi0vLy8gXGJyaWVmIFJldmVyc2VzIFtmaXJzdCxsYXN0KSBhbmQgd3JpdGVzIGl0IHRvIFxwIG91dHB1dC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmV2ZXJzZV9jb3B5IChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrcmVzdWx0KQotCSpyZXN1bHQgPSAqLS1sYXN0OwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFxicmllZiBFeGNoYW5nZXMgcmFuZ2VzIFtmaXJzdCwgbWlkZGxlKSBhbmQgW21pZGRsZSwgbGFzdCkKLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLUZvcndhcmRJdGVyYXRvciByb3RhdGUgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIG1pZGRsZSwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgaWYgKGZpcnN0ID09IG1pZGRsZSB8fCBtaWRkbGUgPT0gbGFzdCkKLQlyZXR1cm4gKGZpcnN0KTsKLSAgICByZXZlcnNlIChmaXJzdCwgbWlkZGxlKTsKLSAgICByZXZlcnNlIChtaWRkbGUsIGxhc3QpOwotICAgIGZvciAoO2ZpcnN0ICE9IG1pZGRsZSAmJiBtaWRkbGUgIT0gbGFzdDsgKytmaXJzdCkKLQlpdGVyX3N3YXAgKGZpcnN0LCAtLWxhc3QpOwotICAgIHJldmVyc2UgKGZpcnN0LCAoZmlyc3QgPT0gbWlkZGxlID8gbGFzdCA6IG1pZGRsZSkpOwotICAgIHJldHVybiAoZmlyc3QpOwotfQotCi0vLy8gU3BlY2lhbGl6YXRpb24gZm9yIHBvaW50ZXJzLCB3aGljaCBjYW4gYmUgdHJlYXRlZCBpZGVudGljYWxseS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQqIHJvdGF0ZSAoVCogZmlyc3QsIFQqIG1pZGRsZSwgVCogbGFzdCkKLXsKLSAgICByb3RhdGVfZmFzdCAoZmlyc3QsIG1pZGRsZSwgbGFzdCk7Ci0gICAgcmV0dXJuIChmaXJzdCk7Ci19Ci0gCi0KLS8vLyBcYnJpZWYgRXhjaGFuZ2VzIHJhbmdlcyBbZmlyc3QsIG1pZGRsZSkgYW5kIFttaWRkbGUsIGxhc3QpIGludG8gXHAgcmVzdWx0LgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByb3RhdGVfY29weSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbWlkZGxlLCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIHJldHVybiAoY29weSAoZmlyc3QsIG1pZGRsZSwgY29weSAobWlkZGxlLCBsYXN0LCByZXN1bHQpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgQ29tYmluZXMgdHdvIHNvcnRlZCByYW5nZXMuCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1PdXRwdXRJdGVyYXRvciBtZXJnZSAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwKLQkJICAgICAgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MiwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIGZvciAoOyBmaXJzdDEgIT0gbGFzdDEgJiYgZmlyc3QyICE9IGxhc3QyOyArK3Jlc3VsdCkgewotCWlmICgqZmlyc3QxIDwgKmZpcnN0MikKLQkgICAgKnJlc3VsdCA9ICpmaXJzdDErKzsKLQllbHNlCi0JICAgICpyZXN1bHQgPSAqZmlyc3QyKys7Ci0gICAgfQotICAgIGlmIChmaXJzdDEgPCBsYXN0MSkKLQlyZXR1cm4gKGNvcHkgKGZpcnN0MSwgbGFzdDEsIHJlc3VsdCkpOwotICAgIGVsc2UKLQlyZXR1cm4gKGNvcHkgKGZpcnN0MiwgbGFzdDIsIHJlc3VsdCkpOwotfQotCi0vLy8gQ29tYmluZXMgdHdvIHNvcnRlZCByYW5nZXMgZnJvbSB0aGUgc2FtZSBjb250YWluZXIuCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+Ci12b2lkIGlucGxhY2VfbWVyZ2UgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbWlkZGxlLCBJbnB1dEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgZm9yICg7IG1pZGRsZSAhPSBsYXN0OyArK2ZpcnN0KSB7Ci0Jd2hpbGUgKCpmaXJzdCA8ICptaWRkbGUpCi0JICAgICsrIGZpcnN0OwotCXJldmVyc2UgKGZpcnN0LCBtaWRkbGUpOwotCXJldmVyc2UgKGZpcnN0LCArK21pZGRsZSk7Ci0gICAgfQotfQotCi0vLy8gUmVtb3ZlX2NvcHkgY29waWVzIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBlcXVhbCB0byB2YWx1ZSBmcm9tIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgbGFzdCkgdG8gYSByYW5nZSBiZWdpbm5pbmcgYXQgcmVzdWx0LiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZQotLy8vIGVuZCBvZiB0aGUgcmVzdWx0aW5nIHJhbmdlLiBUaGlzIG9wZXJhdGlvbiBpcyBzdGFibGUsIG1lYW5pbmcgdGhhdCB0aGUKLS8vLyByZWxhdGl2ZSBvcmRlciBvZiB0aGUgZWxlbWVudHMgdGhhdCBhcmUgY29waWVkIGlzIHRoZSBzYW1lIGFzIGluIHRoZQotLy8vIHJhbmdlIFtmaXJzdCwgbGFzdCkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgVD4KLU91dHB1dEl0ZXJhdG9yIHJlbW92ZV9jb3B5IChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgY29uc3QgVCYgdmFsdWUpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIHsKLQlpZiAoISgqZmlyc3QgPT0gdmFsdWUpKSB7Ci0JICAgICpyZXN1bHQgPSAqZmlyc3Q7Ci0JICAgICsrIHJlc3VsdDsKLQl9Ci0gICAgfQotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFJlbW92ZV9jb3B5IGNvcGllcyBlbGVtZW50cyBwb2ludGVkIHRvIGJ5IGl0ZXJhdG9ycyBpbiBbcmZpcnN0LCBybGFzdCkKLS8vLyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIGEgcmFuZ2UgYmVnaW5uaW5nIGF0IHJlc3VsdC4gVGhlIHJldHVybgotLy8vIHZhbHVlIGlzIHRoZSBlbmQgb2YgdGhlIHJlc3VsdGluZyByYW5nZS4gVGhpcyBvcGVyYXRpb24gaXMgc3RhYmxlLCBtZWFuaW5nCi0vLy8gdGhhdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGNvcGllZCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUKLS8vLyByYW5nZSBbZmlyc3QsIGxhc3QpLiBSYW5nZSBbcmZpcnN0LCBybGFzdCkgaXMgYXNzdW1lZCB0byBiZSBzb3J0ZWQuCi0vLy8gVGhpcyBhbGdvcml0aG0gaXMgYSB1U1RMIGV4dGVuc2lvbi4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBSSW5wdXRJdGVyYXRvcj4KLU91dHB1dEl0ZXJhdG9yIHJlbW92ZV9jb3B5IChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgUklucHV0SXRlcmF0b3IgcmZpcnN0LCBSSW5wdXRJdGVyYXRvciBybGFzdCkKLXsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgewotCXdoaWxlIChyZmlyc3QgIT0gcmxhc3QgJiYgKnJmaXJzdCA8IGZpcnN0KQotCSAgICArKyByZmlyc3Q7Ci0JaWYgKHJmaXJzdCA9PSBybGFzdCB8fCBmaXJzdCAhPSAqcmZpcnN0KSB7Ci0JICAgICpyZXN1bHQgPSAqZmlyc3Q7Ci0JICAgICsrIHJlc3VsdDsKLQl9Ci0gICAgfQotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFJlbW92ZSByZW1vdmVzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvCi0vLy8gdmFsdWUuIFRoYXQgaXMsIHJlbW92ZSByZXR1cm5zIGFuIGl0ZXJhdG9yIG5ld19sYXN0IHN1Y2ggdGhhdCB0aGUgcmFuZ2UKLS8vLyBbZmlyc3QsIG5ld19sYXN0KSBjb250YWlucyBubyBlbGVtZW50cyBlcXVhbCB0byB2YWx1ZS4gWzFdIFRoZSBpdGVyYXRvcnMKLS8vLyBpbiB0aGUgcmFuZ2UgW25ld19sYXN0LCBsYXN0KSBhcmUgYWxsIHN0aWxsIGRlcmVmZXJlbmNlYWJsZSwgYnV0IHRoZQotLy8vIGVsZW1lbnRzIHRoYXQgdGhleSBwb2ludCB0byBhcmUgdW5zcGVjaWZpZWQuIFJlbW92ZSBpcyBzdGFibGUsIG1lYW5pbmcKLS8vLyB0aGF0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGFyZSBub3QgZXF1YWwgdG8gdmFsdWUgaXMKLS8vLyB1bmNoYW5nZWQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIHJlbW92ZSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChyZW1vdmVfY29weSAoZmlyc3QsIGxhc3QsIGZpcnN0LCB2YWx1ZSkpOwotfQotCi0vLy8gVW5pcXVlX2NvcHkgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gYSByYW5nZQotLy8vIGJlZ2lubmluZyB3aXRoIHJlc3VsdCwgZXhjZXB0IHRoYXQgaW4gYSBjb25zZWN1dGl2ZSBncm91cCBvZiBkdXBsaWNhdGUKLS8vLyBlbGVtZW50cyBvbmx5IHRoZSBmaXJzdCBvbmUgaXMgY29waWVkLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBlbmQgb2YKLS8vLyB0aGUgcmFuZ2UgdG8gd2hpY2ggdGhlIGVsZW1lbnRzIGFyZSBjb3BpZWQuIFRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhcgotLy8vIHRvIHRoZSBVbml4IGZpbHRlciB1bmlxLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1PdXRwdXRJdGVyYXRvciB1bmlxdWVfY29weSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgaWYgKGZpcnN0ICE9IGxhc3QpIHsKLQkqcmVzdWx0ID0gKmZpcnN0OwotCXdoaWxlICgrK2ZpcnN0ICE9IGxhc3QpCi0JICAgIGlmICghKCpmaXJzdCA9PSAqcmVzdWx0KSkKLQkJKisrcmVzdWx0ID0gKmZpcnN0OwotCSsrIHJlc3VsdDsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gRXZlcnkgdGltZSBhIGNvbnNlY3V0aXZlIGdyb3VwIG9mIGR1cGxpY2F0ZSBlbGVtZW50cyBhcHBlYXJzIGluIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgbGFzdCksIHRoZSBhbGdvcml0aG0gdW5pcXVlIHJlbW92ZXMgYWxsIGJ1dCB0aGUgZmlyc3QgZWxlbWVudC4KLS8vLyBUaGF0IGlzLCB1bmlxdWUgcmV0dXJucyBhbiBpdGVyYXRvciBuZXdfbGFzdCBzdWNoIHRoYXQgdGhlIHJhbmdlIFtmaXJzdCwKLS8vLyBuZXdfbGFzdCkgY29udGFpbnMgbm8gdHdvIGNvbnNlY3V0aXZlIGVsZW1lbnRzIHRoYXQgYXJlIGR1cGxpY2F0ZXMuCi0vLy8gVGhlIGl0ZXJhdG9ycyBpbiB0aGUgcmFuZ2UgW25ld19sYXN0LCBsYXN0KSBhcmUgYWxsIHN0aWxsIGRlcmVmZXJlbmNlYWJsZSwKLS8vLyBidXQgdGhlIGVsZW1lbnRzIHRoYXQgdGhleSBwb2ludCB0byBhcmUgdW5zcGVjaWZpZWQuIFVuaXF1ZSBpcyBzdGFibGUsCi0vLy8gbWVhbmluZyB0aGF0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGFyZSBub3QgcmVtb3ZlZCBpcwotLy8vIHVuY2hhbmdlZC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IgdW5pcXVlIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0KQotewotICAgIHJldHVybiAodW5pcXVlX2NvcHkgKGZpcnN0LCBsYXN0LCBmaXJzdCkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZnVydGhlcm1vc3QgaXRlcmF0b3IgaSBpbiBbZmlyc3QsIGxhc3QpIHN1Y2ggdGhhdCwKLS8vLyBmb3IgZXZlcnkgaXRlcmF0b3IgaiBpbiBbZmlyc3QsIGkpLCAqaiA8IHZhbHVlCi0vLy8gQXNzdW1lcyB0aGUgcmFuZ2UgaXMgc29ydGVkLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgTGVzc1RoYW5Db21wYXJhYmxlPgotRm9yd2FyZEl0ZXJhdG9yIGxvd2VyX2JvdW5kIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBjb25zdCBMZXNzVGhhbkNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIEZvcndhcmRJdGVyYXRvciBtaWQ7Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKLQltaWQgPSBhZHZhbmNlIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LGxhc3QpIC8gMik7Ci0JaWYgKCptaWQgPCB2YWx1ZSkKLQkgICAgZmlyc3QgPSBtaWQgKyAxOwotCWVsc2UKLQkgICAgbGFzdCA9IG1pZDsKLSAgICB9Ci0gICAgcmV0dXJuIChmaXJzdCk7Ci19Ci0KLS8vLyBQZXJmb3JtcyBhIGJpbmFyeSBzZWFyY2ggaW5zaWRlIHRoZSBzb3J0ZWQgcmFuZ2UuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBMZXNzVGhhbkNvbXBhcmFibGU+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIGJpbmFyeV9zZWFyY2ggKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIGNvbnN0IExlc3NUaGFuQ29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgRm9yd2FyZEl0ZXJhdG9yIGZvdW5kID0gbG93ZXJfYm91bmQgKGZpcnN0LCBsYXN0LCB2YWx1ZSk7Ci0gICAgcmV0dXJuICgoZm91bmQgPT0gbGFzdCB8fCB2YWx1ZSA8ICpmb3VuZCkgPyBsYXN0IDogZm91bmQpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZnVydGhlcm1vc3QgaXRlcmF0b3IgaSBpbiBbZmlyc3QsbGFzdCkgc3VjaCB0aGF0IGZvcgotLy8vIGV2ZXJ5IGl0ZXJhdG9yIGogaW4gW2ZpcnN0LGkpLCB2YWx1ZSA8ICpqIGlzIGZhbHNlLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgTGVzc1RoYW5Db21wYXJhYmxlPgotRm9yd2FyZEl0ZXJhdG9yIHVwcGVyX2JvdW5kIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBjb25zdCBMZXNzVGhhbkNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIEZvcndhcmRJdGVyYXRvciBtaWQ7Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKLQltaWQgPSBhZHZhbmNlIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LGxhc3QpIC8gMik7Ci0JaWYgKHZhbHVlIDwgKm1pZCkKLQkgICAgbGFzdCA9IG1pZDsKLQllbHNlCi0JICAgIGZpcnN0ID0gbWlkICsgMTsKLSAgICB9Ci0gICAgcmV0dXJuIChsYXN0KTsKLX0KLQotLy8vIFJldHVybnMgcGFpcjxsb3dlcl9ib3VuZCx1cHBlcl9ib3VuZD4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIExlc3NUaGFuQ29tcGFyYWJsZT4KLWlubGluZSBwYWlyPEZvcndhcmRJdGVyYXRvcixGb3J3YXJkSXRlcmF0b3I+IGVxdWFsX3JhbmdlIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBjb25zdCBMZXNzVGhhbkNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIHBhaXI8Rm9yd2FyZEl0ZXJhdG9yLEZvcndhcmRJdGVyYXRvcj4gcnY7Ci0gICAgcnYuc2Vjb25kID0gcnYuZmlyc3QgPSBsb3dlcl9ib3VuZCAoZmlyc3QsIGxhc3QsIHZhbHVlKTsKLSAgICB3aGlsZSAocnYuc2Vjb25kICE9IGxhc3QgJiYgISh2YWx1ZSA8ICoocnYuc2Vjb25kKSkpCi0JKysgcnYuc2Vjb25kOwotICAgIHJldHVybiAocnYpOwotfQotCi0vLy8gUmFuZG9tbHkgcGVybXV0ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGNvbnRhaW5lci4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLXZvaWQgcmFuZG9tX3NodWZmbGUgKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGZpcnN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0KQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArKyBmaXJzdCkKLQlpdGVyX3N3YXAgKGZpcnN0LCBmaXJzdCArIChyYW5kKCkgJSBkaXN0YW5jZSAoZmlyc3QsIGxhc3QpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgR2VuZXJpYyBjb21wYXJlIGZ1bmN0aW9uIGFkYXB0b3IgdG8gcGFzcyB0byBxc29ydAotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29uc3RQb2ludGVyLCB0eXBlbmFtZSBDb21wYXJlPgotaW50IHFzb3J0X2FkYXB0ZXIgKGNvbnN0IHZvaWQqIHAxLCBjb25zdCB2b2lkKiBwMikKLXsKLSAgICBDb25zdFBvaW50ZXIgaTEgPSByZWludGVycHJldF9jYXN0PENvbnN0UG9pbnRlcj4ocDEpOwotICAgIENvbnN0UG9pbnRlciBpMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q29uc3RQb2ludGVyPihwMik7Ci0gICAgQ29tcGFyZSBjb21wOwotICAgIHJldHVybiAoY29tcCAoKmkxLCAqaTIpID8gLTEgOiAoY29tcCAoKmkyLCAqaTEpID8gMSA6IDApKTsKLX0KLQotLy8vIFNvcnRzIHRoZSBjb250YWluZXIKLS8vLyBcaW5ncm91cCBTb3J0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlPgotdm9pZCBzb3J0IChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCwgQ29tcGFyZSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsKLSAgICBxc29ydCAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCwgbGFzdCksIHNpemVvZih2YWx1ZV90eXBlKSwKLQkgICAmcXNvcnRfYWRhcHRlcjxjb25zdF9wb2ludGVyLCBDb21wYXJlPik7Ci19Ci0KLS8vLyBTb3J0cyB0aGUgY29udGFpbmVyCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHZvaWQgc29ydCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgc29ydCAoZmlyc3QsIGxhc3QsIGxlc3M8dmFsdWVfdHlwZT4oKSk7Ci19Ci0KLS8vLyBTb3J0cyB0aGUgY29udGFpbmVyIHByZXNlcnZpbmcgb3JkZXIgb2YgZXF1YWwgZWxlbWVudHMuCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZT4KLXZvaWQgc3RhYmxlX3NvcnQgKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGZpcnN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0LCBDb21wYXJlIGNvbXApCi17Ci0gICAgZm9yIChSYW5kb21BY2Nlc3NJdGVyYXRvciBqLCBpID0gZmlyc3Q7ICsraSA8IGxhc3Q7KSB7IC8vIEluc2VydGlvbiBzb3J0Ci0JZm9yIChqID0gaTsgai0tID4gZmlyc3QgJiYgIWNvbXAoKmosICppKTspOwotCXJvdGF0ZSAoKytqLCBpLCBpICsgMSk7Ci0gICAgfQotfQotCi0vLy8gU29ydHMgdGhlIGNvbnRhaW5lcgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSB2b2lkIHN0YWJsZV9zb3J0IChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICBzdGFibGVfc29ydCAoZmlyc3QsIGxhc3QsIGxlc3M8dmFsdWVfdHlwZT4oKSk7Ci19Ci0KLS8vLyBcYnJpZWYgU2VhcmNoZXMgZm9yIHRoZSBmaXJzdCBzdWJzZXF1ZW5jZSBbZmlyc3QyLGxhc3QyKSBpbiBbZmlyc3QxLGxhc3QxKQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IyPgotaW5saW5lIEZvcndhcmRJdGVyYXRvcjEgc2VhcmNoIChGb3J3YXJkSXRlcmF0b3IxIGZpcnN0MSwgRm9yd2FyZEl0ZXJhdG9yMSBsYXN0MSwgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICByZXR1cm4gKHNlYXJjaCAoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgZXF1YWxfdG88dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIFNlYXJjaGVzIGZvciB0aGUgbGFzdCBzdWJzZXF1ZW5jZSBbZmlyc3QyLGxhc3QyKSBpbiBbZmlyc3QxLGxhc3QxKQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IyPgotaW5saW5lIEZvcndhcmRJdGVyYXRvcjEgZmluZF9lbmQgKEZvcndhcmRJdGVyYXRvcjEgZmlyc3QxLCBGb3J3YXJkSXRlcmF0b3IxIGxhc3QxLCBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3IxPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAoZmluZF9lbmQgKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIsIGVxdWFsX3RvPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBTZWFyY2hlcyBmb3IgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiBccCBjb3VudCBccCB2YWx1ZXMgaW4gW2ZpcnN0LCBsYXN0KQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgVD4KLWlubGluZSBJdGVyYXRvciBzZWFyY2hfbiAoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsIHNpemVfdCBjb3VudCwgY29uc3QgVCYgdmFsdWUpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChzZWFyY2hfbiAoZmlyc3QsIGxhc3QsIGNvdW50LCB2YWx1ZSwgZXF1YWxfdG88dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIFNlYXJjaGVzIFtmaXJzdDEsbGFzdDEpIGZvciB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhbiBlbGVtZW50IGZyb20gW2ZpcnN0MixsYXN0MikKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotaW5saW5lIElucHV0SXRlcmF0b3IgZmluZF9maXJzdF9vZiAoSW5wdXRJdGVyYXRvciBmaXJzdDEsIElucHV0SXRlcmF0b3IgbGFzdDEsIEZvcndhcmRJdGVyYXRvciBmaXJzdDIsIEZvcndhcmRJdGVyYXRvciBsYXN0MikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAoZmluZF9maXJzdF9vZiAoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgZXF1YWxfdG88dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIFJldHVybnMgdHJ1ZSBpZiBbZmlyc3QyLGxhc3QyKSBpcyBhIHN1YnNldCBvZiBbZmlyc3QxLGxhc3QxKQotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBTZXRBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyPgotaW5saW5lIGJvb2wgaW5jbHVkZXMgKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChpbmNsdWRlcyAoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgbGVzczx2YWx1ZV90eXBlPigpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgTWVyZ2VzIFtmaXJzdDEsbGFzdDEpIHdpdGggW2ZpcnN0MixsYXN0MikKLS8vLwotLy8vIFJlc3VsdCB3aWxsIGNvbnRhaW4gZXZlcnkgZWxlbWVudCB0aGF0IGlzIGluIGVpdGhlciBzZXQuIElmIGR1cGxpY2F0ZQotLy8vIGVsZW1lbnRzIGFyZSBwcmVzZW50LCBtYXgobixtKSBpcyBwbGFjZWQgaW4gdGhlIHJlc3VsdC4KLS8vLwotLy8vIFxpbmdyb3VwIFNldEFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHNldF91bmlvbiAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MiwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3IxPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAoc2V0X3VuaW9uIChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyLCByZXN1bHQsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIENyZWF0ZXMgYSBzZXQgY29udGFpbmluZyBlbGVtZW50cyBzaGFyZWQgYnkgdGhlIGdpdmVuIHJhbmdlcy4KLS8vLyBcaW5ncm91cCBTZXRBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBzZXRfaW50ZXJzZWN0aW9uIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChzZXRfaW50ZXJzZWN0aW9uIChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyLCByZXN1bHQsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIFJlbW92ZXMgZnJvbSBbZmlyc3QxLGxhc3QxKSBlbGVtZW50cyBwcmVzZW50IGluIFtmaXJzdDIsbGFzdDIpCi0vLy8gXGluZ3JvdXAgU2V0QWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3Igc2V0X2RpZmZlcmVuY2UgKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICByZXR1cm4gKHNldF9kaWZmZXJlbmNlIChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyLCByZXN1bHQsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIFBlcmZvcm1zIHVuaW9uIG9mIHNldHMgQS1CIGFuZCBCLUEuCi0vLy8gXGluZ3JvdXAgU2V0QWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3Igc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UgKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIsIHJlc3VsdCwgbGVzczx2YWx1ZV90eXBlPigpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiByYW5nZSBpcyBzb3J0ZWQuCi0vLy8gXGluZ3JvdXAgQ29uZGl0aW9uQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLWlubGluZSBib29sIGlzX3NvcnRlZCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChpc19zb3J0ZWQgKGZpcnN0LCBsYXN0LCBsZXNzPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBDb21wYXJlcyB0d28gZ2l2ZW4gY29udGFpbmVycyBsaWtlIHN0cmNtcCBjb21wYXJlcyBzdHJpbmdzLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjI+Ci1pbmxpbmUgYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZSAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICByZXR1cm4gKGxleGljb2dyYXBoaWNhbF9jb21wYXJlIChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyLCBsZXNzPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBDcmVhdGVzIHRoZSBuZXh0IGxleGljb2dyYXBoaWNhbCBwZXJtdXRhdGlvbiBvZiBbZmlyc3QsbGFzdCkuCi0vLy8gUmV0dXJucyBmYWxzZSBpZiBubyBmdXJ0aGVyIHBlcm11dGF0aW9ucyBjYW4gYmUgY3JlYXRlZC4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotaW5saW5lIGJvb2wgbmV4dF9wZXJtdXRhdGlvbiAoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0LCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChuZXh0X3Blcm11dGF0aW9uIChmaXJzdCwgbGFzdCwgbGVzczx2YWx1ZV90eXBlPigpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgQ3JlYXRlcyB0aGUgcHJldmlvdXMgbGV4aWNvZ3JhcGhpY2FsIHBlcm11dGF0aW9uIG9mIFtmaXJzdCxsYXN0KS4KLS8vLyBSZXR1cm5zIGZhbHNlIGlmIG5vIGZ1cnRoZXIgcGVybXV0YXRpb25zIGNhbiBiZSBjcmVhdGVkLgotLy8vIFxpbmdyb3VwIEdlbmVyYXRvckFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBwcmV2X3Blcm11dGF0aW9uIChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICByZXR1cm4gKHByZXZfcGVybXV0YXRpb24gKGZpcnN0LCBsYXN0LCBsZXNzPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIGl0ZXJhdG9yIHRvIHRoZSBtYXggZWxlbWVudCBpbiBbZmlyc3QsbGFzdCkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciBtYXhfZWxlbWVudCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChtYXhfZWxlbWVudCAoZmlyc3QsIGxhc3QsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIFJldHVybnMgaXRlcmF0b3IgdG8gdGhlIG1pbiBlbGVtZW50IGluIFtmaXJzdCxsYXN0KQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIG1pbl9lbGVtZW50IChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICByZXR1cm4gKG1pbl9lbGVtZW50IChmaXJzdCwgbGFzdCwgbGVzczx2YWx1ZV90eXBlPigpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgTWFrZXMgW2ZpcnN0LG1pZGRsZSkgYSBwYXJ0IG9mIHRoZSBzb3J0ZWQgYXJyYXkuCi0vLy8gQ29udGVudHMgb2YgW21pZGRsZSxsYXN0KSBpcyB1bmRlZmluZWQuIFRoaXMgaW1wbGVtZW50YXRpb24ganVzdCBjYWxscyBzdGFibGVfc29ydC4KLS8vLyBcaW5ncm91cCBTb3J0aW5nQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHZvaWQgcGFydGlhbF9zb3J0IChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbWlkZGxlLCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHBhcnRpYWxfc29ydCAoZmlyc3QsIG1pZGRsZSwgbGFzdCwgbGVzczx2YWx1ZV90eXBlPigpKTsKLX0KLQotLy8vIFxicmllZiBQdXRzIFxwIG50aCBlbGVtZW50IGludG8gaXRzIHNvcnRlZCBwb3NpdGlvbi4KLS8vLyBJbiB0aGlzIGltcGxlbWVudGF0aW9uLCB0aGUgZW50aXJlIGFycmF5IGlzIHNvcnRlZC4gSSBjYW4ndCB0aGluayBvZiBhbnkKLS8vLyB1c2UgZm9yIGl0IHdoZXJlIHRoZSB0aW1lIGdhaW5lZCB3b3VsZCBiZSB1c2VmdWwuCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSB2b2lkIG50aF9lbGVtZW50IChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbnRoLCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0KQotewotICAgIHBhcnRpYWxfc29ydCAoZmlyc3QsIG50aCwgbGFzdCk7Ci19Ci0KLS8vLyBcYnJpZWYgTGlrZSBwYXJ0aWFsX3NvcnQsIGJ1dCBvdXRwdXRzIHRvIFtyZXN1bHRfZmlyc3QscmVzdWx0X2xhc3QpCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBSYW5kb21BY2Nlc3NJdGVyYXRvciBwYXJ0aWFsX3NvcnRfY29weSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciByZXN1bHRfZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHJlc3VsdF9sYXN0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChwYXJ0aWFsX3NvcnRfY29weSAoZmlyc3QsIGxhc3QsIHJlc3VsdF9maXJzdCwgcmVzdWx0X2xhc3QsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YWxnb2Jhc2UuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWFsZ29iYXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc2NGNkMS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YWxnb2Jhc2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1YWxnb2Jhc2UuY2MKLS8vCi0vLyBDb3B5IGFuZCBmaWxsIG9wdGltaXphdGlvbnMgYXJlIGhlcmUuCi0vLwotCi0jaWZuZGVmIE5ERUJVRwkvLyBPcHRpbWl6ZWQgY29kZSBoZXJlLiBhc3NlcnRzIHNsb3cgaXQgZG93biwgYW5kIGFyZSBjaGVja2VkIGVsc2V3aGVyZS4KLSNkZWZpbmUgTkRFQlVHCi0jZW5kaWYKLQotI2luY2x1ZGUgInVhbGdvLmgiCi0KLSN1bmRlZiBDUFVfSEFTX01NWAotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vIEdlbmVyaWMgdmVyc2lvbiBmb3IgaW1wbGVtZW50aW5nIGZpbGxfblhfZmFzdCBvbiBub24taTM4NiBhcmNoaXRlY3R1cmVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHN0b3N2IChUKiYgcCwgc2l6ZV90IG4sIFQgdikKLSAgICB7IHdoaWxlIChuLS0pICpwKysgPSB2OyB9Ci0KLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQ29weSBmdW5jdGlvbnMKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWYgX19HTlVDX18gPj0gMwotc3RhdGljIGlubGluZSB2b2lkIG1vdnNiX2Rpcl91cCAodm9pZCkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpOwotc3RhdGljIGlubGluZSB2b2lkIG1vdnNiX2Rpcl9kb3duICh2b2lkKSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgbW92c2IgKGNvbnN0IHZvaWQqJiBzcmMsIHNpemVfdCBuQnl0ZXMsIHZvaWQqJiBkZXN0KSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgbW92c2QgKGNvbnN0IHZvaWQqJiBzcmMsIHNpemVfdCBuV29yZHMsIHZvaWQqJiBkZXN0KSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSk7Ci0jZW5kaWYKLQotc3RhdGljIGlubGluZSB2b2lkIG1vdnNiX2Rpcl91cCAodm9pZCkgeyBhc20gdm9sYXRpbGUgKCJjbGQiKTsgfQotc3RhdGljIGlubGluZSB2b2lkIG1vdnNiX2Rpcl9kb3duICh2b2lkKSB7IGFzbSB2b2xhdGlsZSAoInN0ZCIpOyB9Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBtb3ZzYiAoY29uc3Qgdm9pZComIHNyYywgc2l6ZV90IG5CeXRlcywgdm9pZComIGRlc3QpCi17Ci0gICAgYXNtIHZvbGF0aWxlICgicmVwO1xuXHRtb3ZzYiIKLQk6ICI9JlMiKHNyYyksICI9JkQiKGRlc3QpLCAiPSZjIihuQnl0ZXMpCi0JOiAiMCIoc3JjKSwgIjEiKGRlc3QpLCAiMiIobkJ5dGVzKQotCTogIm1lbW9yeSIpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgbW92c2QgKGNvbnN0IHZvaWQqJiBzcmMsIHNpemVfdCBuV29yZHMsIHZvaWQqJiBkZXN0KQotewotICAgIGFzbSB2b2xhdGlsZSAoInJlcDtcblx0bW92c2wiCi0JOiAiPSZTIihzcmMpLCAiPSZEIihkZXN0KSwgIj0mYyIobldvcmRzKQotCTogIjAiKHNyYyksICIxIihkZXN0KSwgIjIiKG5Xb3JkcykKLQk6ICJtZW1vcnkiKTsKLX0KLQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgc3Rvc3YgKHVpbnQ4X3QqJiBwLCBzaXplX3QgbiwgdWludDhfdCB2KQoteyBhc20gdm9sYXRpbGUgKCJyZXA7XG5cdHN0b3NiIiA6ICI9JkQiKHApLCAiPWMiKG4pIDogIjAiKHApLCAiMSIobiksICJhIih2KSA6ICJtZW1vcnkiKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgc3Rvc3YgKHVpbnQxNl90KiYgcCwgc2l6ZV90IG4sIHVpbnQxNl90IHYpCi17IGFzbSB2b2xhdGlsZSAoInJlcDtcblx0c3Rvc3ciIDogIj0mRCIocCksICI9YyIobikgOiAiMCIocCksICIxIihuKSwgImEiKHYpIDogIm1lbW9yeSIpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBzdG9zdiAodWludDMyX3QqJiBwLCBzaXplX3QgbiwgdWludDMyX3QgdikKLXsgYXNtIHZvbGF0aWxlICgicmVwO1xuXHRzdG9zbCIgOiAiPSZEIihwKSwgIj1jIihuKSA6ICIwIihwKSwgIjEiKG4pLCAiYSIodikgOiAibWVtb3J5Iik7IH0KLQotI2lmIENQVV9IQVNfTU1YCi0jZGVmaW5lIE1NWF9BTElHTgkxNlUJLy8gRGF0YSBtdXN0IGJlIGFsaWduZWQgb24gdGhpcyBncmFpbgotI2RlZmluZSBNTVhfQlMJCTMyVQkvLyBBc3NlbWJseSByb3V0aW5lcyBjb3B5IGRhdGEgdGhpcyBtYW55IGJ5dGVzIGF0IGEgdGltZS4KLQotc3RhdGljIGlubGluZSB2b2lkIHNpbWRfYmxvY2tfY29weSAoY29uc3Qgdm9pZCogc3JjLCB2b2lkKiBkZXN0KSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgc2ltZF9ibG9ja19zdG9yZSAodWludDhfdCogZGVzdCkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpOwotc3RhdGljIGlubGluZSB2b2lkIHNpbWRfYmxvY2tfY2xlYW51cCAodm9pZCkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpOwotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2ltZF9ibG9ja19jb3B5IChjb25zdCB2b2lkKiBzcmMsIHZvaWQqIGRlc3QpCi17Ci0gICAgY29uc3QgY2hhciogY3NyYyAoKGNvbnN0IGNoYXIqKSBzcmMpOwotICAgIGNoYXIqIGNkZXN0ICgoY2hhciopIGRlc3QpOwotICAgICNpZiBDUFVfSEFTX1NTRQotICAgIGFzbSAoCi0JIm1vdmFwc1x0JTIsICUleG1tMAlcblx0IgotCSJtb3ZhcHNcdCUzLCAlJXhtbTEJXG5cdCIKLQkibW92bnRwc1x0JSV4bW0wLCAlMAlcblx0IgotCSJtb3ZudHBzXHQlJXhtbTEsICUxIgotCTogIj1tIihjZGVzdFswXSksICI9bSIoY2Rlc3RbMTZdKQotCTogIm0iKGNzcmNbMF0pLCAibSIoY3NyY1sxNl0pCi0JOiAieG1tMCIsICJ4bW0xIik7Ci0gICAgI2Vsc2UKLSAgICBhc20gKAotCSJtb3ZxCSU0LCAlJW1tMAlcblx0IgotCSJtb3ZxCSU1LCAlJW1tMQlcblx0IgotCSJtb3ZxCSU2LCAlJW1tMglcblx0IgotCSJtb3ZxCSU3LCAlJW1tMwlcblx0IgotCSJtb3ZxCSUlbW0wLCAlMAlcblx0IgotCSJtb3ZxCSUlbW0xLCAlMQlcblx0IgotCSJtb3ZxCSUlbW0yLCAlMglcblx0IgotCSJtb3ZxCSUlbW0zLCAlMyIKLQk6ICI9bSIoY2Rlc3RbMF0pLCAiPW0iKGNkZXN0WzhdKSwgIj1tIihjZGVzdFsxNl0pLCAiPW0iKGNkZXN0WzI0XSkKLQk6ICJtIihjc3JjWzBdKSwgIm0iKGNzcmNbOF0pLCAibSIoY3NyY1sxNl0pLCAibSIoY3NyY1syNF0pCi0JOiAibW0wIiwgIm1tMSIsICJtbTIiLCAibW0zIiwgInN0IiwgInN0KDEpIiwgInN0KDIpIiwgInN0KDMpIik7Ci0gICAgI2VuZGlmCi19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzaW1kX2Jsb2NrX3N0b3JlICh1aW50OF90KiBkZXN0KQotewotICAgICNpZiBDUFVfSEFTX1NTRQotICAgIGFzbSB2b2xhdGlsZSAoCi0JIm1vdm50cSAlJW1tMCwgJTBcblx0IgotCSJtb3ZudHEgJSVtbTAsICUxXG5cdCIKLQkibW92bnRxICUlbW0wLCAlMlxuXHQiCi0JIm1vdm50cSAlJW1tMCwgJTMiCi0JOiAiPW0iKGRlc3RbMF0pLCAiPW0iKGRlc3RbOF0pLCAiPW0iKGRlc3RbMTZdKSwgIj1tIihkZXN0WzI0XSkpOwotICAgICNlbHNlCi0gICAgYXNtIHZvbGF0aWxlICgKLQkibW92cSAlJW1tMCwgJTAJXG5cdCIKLQkibW92cSAlJW1tMCwgJTEJXG5cdCIKLQkibW92cSAlJW1tMCwgJTIJXG5cdCIKLQkibW92cSAlJW1tMCwgJTMiCi0JOiAiPW0iKGRlc3RbMF0pLCAiPW0iKGRlc3RbOF0pLCAiPW0iKGRlc3RbMTZdKSwgIj1tIihkZXN0WzI0XSkpOwotICAgICNlbmRpZgotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2ltZF9ibG9ja19jbGVhbnVwICh2b2lkKQotewotICAgICNpZiAhQ1BVX0hBU19TU0UKLQlzaW1kOjpyZXNldF9tbXgoKTsKLSAgICAjZW5kaWYKLSAgICBhc20gdm9sYXRpbGUgKCJzZmVuY2UiKTsKLX0KLQotLy8vIFRoZSBmYXN0ZXN0IG9wdGltaXplZCByYXcgbWVtb3J5IGNvcHkuCi12b2lkIGNvcHlfbl9mYXN0IChjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBuQnl0ZXMsIHZvaWQqIGRlc3QpCi17Ci0gICAgbW92c2JfZGlyX3VwKCk7Ci0gICAgc2l6ZV90IG5IZWFkQnl0ZXMgPSBBbGlnbih1aW50cHRyX3Qoc3JjKSwgTU1YX0FMSUdOKSAtIHVpbnRwdHJfdChzcmMpOwotICAgIG5IZWFkQnl0ZXMgPSBtaW4gKG5IZWFkQnl0ZXMsIG5CeXRlcyk7Ci0gICAgbW92c2IgKHNyYywgbkhlYWRCeXRlcywgZGVzdCk7Ci0gICAgbkJ5dGVzIC09IG5IZWFkQnl0ZXM7Ci0gICAgaWYgKCEodWludHB0cl90KGRlc3QpICUgTU1YX0FMSUdOKSkgewotCWNvbnN0IHNpemVfdCBuTWlkZGxlQmxvY2tzID0gbkJ5dGVzIC8gTU1YX0JTOwotCWZvciAodW9mZl90IGkgPSAwOyBpIDwgbk1pZGRsZUJsb2NrczsgKysgaSkgewotCSAgICBwcmVmZXRjaCAoYWR2YW5jZSAoc3JjLCA1MTIpLCAwLCAwKTsKLQkgICAgc2ltZF9ibG9ja19jb3B5IChzcmMsIGRlc3QpOwotCSAgICBzcmMgPSBhZHZhbmNlIChzcmMsIE1NWF9CUyk7Ci0JICAgIGRlc3QgPSBhZHZhbmNlIChkZXN0LCBNTVhfQlMpOwotCX0KLQlzaW1kX2Jsb2NrX2NsZWFudXAoKTsKLQluQnl0ZXMgJT0gTU1YX0JTOwotICAgIH0KLSAgICBtb3ZzYiAoc3JjLCBuQnl0ZXMsIGRlc3QpOwotfQotI2VuZGlmIC8vIENQVV9IQVNfTU1YCi0KLS8vLyBUaGUgZmFzdGVzdCBvcHRpbWl6ZWQgYmFja3dhcmRzIHJhdyBtZW1vcnkgY29weS4KLXZvaWQgY29weV9iYWNrd2FyZF9mYXN0IChjb25zdCB2b2lkKiBmaXJzdCwgY29uc3Qgdm9pZCogbGFzdCwgdm9pZCogcmVzdWx0KQotewotICAgIHByZWZldGNoIChmaXJzdCwgMCwgMCk7Ci0gICAgcHJlZmV0Y2ggKHJlc3VsdCwgMSwgMCk7Ci0gICAgc2l6ZV90IG5CeXRlcyAoZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSk7Ci0gICAgbW92c2JfZGlyX2Rvd24oKTsKLSAgICBzaXplX3QgbkhlYWRCeXRlcyA9IHVpbnRwdHJfdChsYXN0KSAlIDQ7Ci0gICAgbGFzdCA9IGFkdmFuY2UgKGxhc3QsIC0xKTsKLSAgICByZXN1bHQgPSBhZHZhbmNlIChyZXN1bHQsIC0xKTsKLSAgICBtb3ZzYiAobGFzdCwgbkhlYWRCeXRlcywgcmVzdWx0KTsKLSAgICBuQnl0ZXMgLT0gbkhlYWRCeXRlczsKLSAgICBpZiAodWludHB0cl90KHJlc3VsdCkgJSA0ID09IDMpIHsKLQljb25zdCBzaXplX3Qgbk1pZGRsZUJsb2NrcyA9IG5CeXRlcyAvIDQ7Ci0JbGFzdCA9IGFkdmFuY2UgKGxhc3QsIC0zKTsKLQlyZXN1bHQgPSBhZHZhbmNlIChyZXN1bHQsIC0zKTsKLQltb3ZzZCAobGFzdCwgbk1pZGRsZUJsb2NrcywgcmVzdWx0KTsKLQluQnl0ZXMgJT0gNDsKLSAgICB9Ci0gICAgbW92c2IgKGxhc3QsIG5CeXRlcywgcmVzdWx0KTsKLSAgICBtb3ZzYl9kaXJfdXAoKTsKLX0KLSNlbmRpZiAvLyBfX2kzODZfXwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEZpbGwgZnVuY3Rpb25zCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmIENQVV9IQVNfTU1YCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYnVpbGRfYmxvY2sgKFQpIHt9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBidWlsZF9ibG9jayAodWludDhfdCB2KQotewotICAgIGFzbSB2b2xhdGlsZSAoCi0JIm1vdmQgJTAsICUlbW0wXG5cdHB1bnBja2xidyAlJW1tMCwgJSVtbTBcblx0cHNodWZ3ICQwLCAlJW1tMCwgJSVtbTAiCi0JOiA6ICJnIih1aW50MzJfdCh2KSkgOiAibW0wIik7Ci19Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBidWlsZF9ibG9jayAodWludDE2X3QgdikKLXsKLSAgICBhc20gdm9sYXRpbGUgKAotCSJtb3ZkICUwLCAlJW1tMFxuXHRwc2h1ZncgJDAsICUlbW0wLCAlJW1tMCIKLQk6IDogImciKHVpbnQzMl90KHYpKSA6ICJtbTAiKTsKLX0KLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIGJ1aWxkX2Jsb2NrICh1aW50MzJfdCB2KQotewotICAgIGFzbSB2b2xhdGlsZSAoCi0JIm1vdmQgJTAsICUlbW0wXG5cdHB1bnBja2xkcSAlJW1tMCwgJSVtbTAiCi0JOiA6ICJnIih1aW50MzJfdCh2KSkgOiAibW0wIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzaW1kX2Jsb2NrX2ZpbGxfbG9vcCAodWludDhfdComIGRlc3QsIHNpemVfdCBjb3VudCkKLXsKLSAgICBwcmVmZXRjaCAoYWR2YW5jZSAoZGVzdCwgNTEyKSwgMSwgMCk7Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBjb3VudDsgKysgaSwgZGVzdCArPSBNTVhfQlMpCi0Jc2ltZF9ibG9ja19zdG9yZSAoZGVzdCk7Ci0gICAgc2ltZF9ibG9ja19jbGVhbnVwKCk7Ci0gICAgc2ltZDo6cmVzZXRfbW14KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgZmlsbF9uX2Zhc3QgKFQqIGRlc3QsIHNpemVfdCBjb3VudCwgVCB2KQotewotICAgIHNpemVfdCBuSGVhZCA9IEFsaWduKHVpbnRwdHJfdChkZXN0KSwgTU1YX0FMSUdOKSAtIHVpbnRwdHJfdChkZXN0KSAvIHNpemVvZihUKTsKLSAgICBuSGVhZCA9IG1pbiAobkhlYWQsIGNvdW50KTsKLSAgICBzdG9zdiAoZGVzdCwgbkhlYWQsIHYpOwotICAgIGNvdW50IC09IG5IZWFkOwotICAgIGJ1aWxkX2Jsb2NrICh2KTsKLSAgICBzaW1kX2Jsb2NrX2ZpbGxfbG9vcCAoKHVpbnQ4X3QqJikgZGVzdCwgY291bnQgKiBzaXplb2YoVCkgLyBNTVhfQlMpOwotICAgIGNvdW50ICU9IE1NWF9CUzsKLSAgICBzdG9zdiAoZGVzdCwgY291bnQsIHYpOwotfQotCi12b2lkIGZpbGxfbjhfZmFzdCAodWludDhfdCogZGVzdCwgc2l6ZV90IGNvdW50LCB1aW50OF90IHYpCi0gICAgeyBmaWxsX25fZmFzdCAoZGVzdCwgY291bnQsIHYpOyB9Ci12b2lkIGZpbGxfbjE2X2Zhc3QgKHVpbnQxNl90KiBkZXN0LCBzaXplX3QgY291bnQsIHVpbnQxNl90IHYpCi0gICAgeyBmaWxsX25fZmFzdCAoZGVzdCwgY291bnQsIHYpOyB9Ci12b2lkIGZpbGxfbjMyX2Zhc3QgKHVpbnQzMl90KiBkZXN0LCBzaXplX3QgY291bnQsIHVpbnQzMl90IHYpCi0gICAgeyBmaWxsX25fZmFzdCAoZGVzdCwgY291bnQsIHYpOyB9Ci0jZWxzZQotdm9pZCBmaWxsX244X2Zhc3QgKHVpbnQ4X3QqIGRlc3QsIHNpemVfdCBjb3VudCwgdWludDhfdCB2KSB7IG1lbXNldCAoZGVzdCwgdiwgY291bnQpOyB9Ci12b2lkIGZpbGxfbjE2X2Zhc3QgKHVpbnQxNl90KiBkZXN0LCBzaXplX3QgY291bnQsIHVpbnQxNl90IHYpIHsgc3Rvc3YgKGRlc3QsIGNvdW50LCB2KTsgfQotdm9pZCBmaWxsX24zMl9mYXN0ICh1aW50MzJfdCogZGVzdCwgc2l6ZV90IGNvdW50LCB1aW50MzJfdCB2KSB7IHN0b3N2IChkZXN0LCBjb3VudCwgdik7IH0KLSNlbmRpZiAvLyBDUFVfSEFTX01NWAotCi0vLy8gRXhjaGFuZ2VzIHJhbmdlcyBbZmlyc3QsIG1pZGRsZSkgYW5kIFttaWRkbGUsIGxhc3QpCi12b2lkIHJvdGF0ZV9mYXN0ICh2b2lkKiBmaXJzdCwgdm9pZCogbWlkZGxlLCB2b2lkKiBsYXN0KQotewotI2lmZGVmIEhBVkVfQUxMT0NBX0gKLSAgICBjb25zdCBzaXplX3QgaGFsZjEgKGRpc3RhbmNlIChmaXJzdCwgbWlkZGxlKSksIGhhbGYyIChkaXN0YW5jZSAobWlkZGxlLCBsYXN0KSk7Ci0gICAgY29uc3Qgc2l6ZV90IGhtaW4gKG1pbiAoaGFsZjEsIGhhbGYyKSk7Ci0gIGlmICghaG1pbikgewotCXJldHVybjsKLSAgfQotICAgIHZvaWQqIGJ1ZiA9IGFsbG9jYSAoaG1pbik7Ci0gICAgaWYgKGJ1ZikgewotCWlmIChoYWxmMiA8IGhhbGYxKSB7Ci0JICAgIGNvcHlfbl9mYXN0IChtaWRkbGUsIGhhbGYyLCBidWYpOwotCSAgICBjb3B5X2JhY2t3YXJkX2Zhc3QgKGZpcnN0LCBtaWRkbGUsIGxhc3QpOwotCSAgICBjb3B5X25fZmFzdCAoYnVmLCBoYWxmMiwgZmlyc3QpOwotCX0gZWxzZSB7Ci0JICAgIGNvcHlfbl9mYXN0IChmaXJzdCwgaGFsZjEsIGJ1Zik7Ci0JICAgIGNvcHlfbl9mYXN0IChtaWRkbGUsIGhhbGYyLCBmaXJzdCk7Ci0JICAgIGNvcHlfbl9mYXN0IChidWYsIGhhbGYxLCBhZHZhbmNlIChmaXJzdCwgaGFsZjIpKTsKLQl9Ci0gICAgfSBlbHNlCi0jZWxzZQotICAgIGlmIChmaXJzdCA9PSBtaWRkbGUgfHwgbWlkZGxlID09IGxhc3QpIHsKLQlyZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgewotCWNoYXIqIGYgPSAoY2hhciopIGZpcnN0OwotCWNoYXIqIG0gPSAoY2hhciopIG1pZGRsZTsKLQljaGFyKiBsID0gKGNoYXIqKSBsYXN0OwotCXJldmVyc2UgKGYsIG0pOwotCXJldmVyc2UgKG0sIGwpOwotCXdoaWxlIChmICE9IG0gJiYgbSAhPSBsKQotCSAgICBpdGVyX3N3YXAgKGYrKywgLS1sKTsKLQlyZXZlcnNlIChmLCAoZiA9PSBtID8gbCA6IG0pKTsKLSAgICB9Ci19Ci0KLSNpZiBfX0dOVUNfXyA8IDQKLXNpemVfdCBwb3Bjb3VudCAodWludDMyX3QgdikKLXsKLSAgICBjb25zdCB1aW50MzJfdCB3ID0gdiAtICgodiA+PiAxKSAmIDB4NTU1NTU1NTUpOyAvLyBBbGdvcml0aG0gZnJvbSBBTUQgb3B0aW1pemF0aW9uIGd1aWRlCi0gICAgY29uc3QgdWludDMyX3QgeCA9ICh3ICYgMHgzMzMzMzMzMykgKyAoKHcgPj4gMikgJiAweDMzMzMzMzMzKTsKLSAgICByZXR1cm4gKCgoeCArICh4ID4+IDQpICYgMHgwRjBGMEYwRikgKiAweDAxMDEwMTAxKSA+PiAyNCk7Ci19Ci0KLSNpZiBIQVZFX0lOVDY0X1QKLS8vLyBcYnJpZWYgUmV0dXJucyB0aGUgbnVtYmVyIG9mIDFzIGluIFxwIHYgaW4gYmluYXJ5Lgotc2l6ZV90IHBvcGNvdW50ICh1aW50NjRfdCB2KQotewotICAgIHYgLT0gKHYgPj4gMSkgJiBVSU5UNjRfQygweDU1NTU1NTU1NTU1NTU1NTUpOwkJLy8gQWxnb3JpdGhtIGZyb20gV2lraXBlZGlhCi0gICAgdiA9ICh2ICYgVUlOVDY0X0MoMHgzMzMzMzMzMzMzMzMzMzMzKSkgKyAoKHYgPj4gMikgJiBVSU5UNjRfQygweDMzMzMzMzMzMzMzMzMzMzMpKTsKLSAgICB2ID0gKHYgKyAodiA+PiA0KSkgJiBVSU5UNjRfQygweDBGMEYwRjBGMEYwRjBGMEYpOwotICAgIHJldHVybiAoKHYgKiBVSU5UNjRfQygweDAxMDEwMTAxMDEwMTAxMDEpKSA+PiA1Nik7Ci19Ci0jZW5kaWYJLy8gSEFWRV9JTlQ2NF9UCi0jZW5kaWYJLy8gIV9fR05VQ19fCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWFsZ29iYXNlLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YWxnb2Jhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhjMWE3Mi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YWxnb2Jhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzNCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWFsZ29iYXNlLmgKLS8vCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBTVEwgYWxnb3JpdGhtcy4KLS8vCi0vLyBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUgY29waWVkCi0vLyBleGFjdGx5IGZyb20gdGhlIFNHSSB2ZXJzaW9uIG9mIFNUTCBkb2N1bWVudGF0aW9uIGFsb25nIHdpdGggY29tbWVudHMgYWJvdXQKLS8vIHRoZWlyIHVzZS4gVGhlIGNvZGUgaXMgTk9UIHRoZSBzYW1lLCB0aG91Z2ggdGhlIGZ1bmN0aW9uYWxpdHkgdXN1YWxseSBpcy4KLS8vCi0KLSNpZm5kZWYgVUFMR09CQVNFX0hfNjgzQTBCRTc3NTQ2MTMzQzRDRTBFMzYyMkNGQUEyRUIKLSNkZWZpbmUgVUFMR09CQVNFX0hfNjgzQTBCRTc3NTQ2MTMzQzRDRTBFMzYyMkNGQUEyRUIKLQotI2luY2x1ZGUgInV1dGlsaXR5LmgiCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLSN1bmRlZiBDUFVfSEFTX01NWAotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIEFzc2lnbnMgdGhlIGNvbnRlbnRzIG9mIGEgdG8gYiBhbmQgdGhlIGNvbnRlbnRzIG9mIGIgdG8gYS4KLS8vLyBUaGlzIGlzIHVzZWQgYXMgYSBwcmltaXRpdmUgb3BlcmF0aW9uIGJ5IG1hbnkgb3RoZXIgYWxnb3JpdGhtcy4gCi0vLy8gXGluZ3JvdXAgU3dhcEFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEFzc2lnbmFibGU+IAotaW5saW5lIHZvaWQgc3dhcCAoQXNzaWduYWJsZSYgYSwgQXNzaWduYWJsZSYgYikKLXsKLSAgICBBc3NpZ25hYmxlIHRtcCA9IGE7Ci0gICAgYSA9IGI7Ci0gICAgYiA9IHRtcDsKLX0KLQotLy8vIEVxdWl2YWxlbnQgdG8gc3dhcCAoKmEsICpiKQotLy8vIFxpbmdyb3VwIFN3YXBBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4gCi1pbmxpbmUgdm9pZCBpdGVyX3N3YXAgKEl0ZXJhdG9yIGEsIEl0ZXJhdG9yIGIpCi17Ci0gICAgc3dhcCAoKmEsICpiKTsKLX0KLQotLy8vIENvcHkgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gdGhlIHJhbmdlCi0vLy8gW3Jlc3VsdCwgcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCkpLiBUaGF0IGlzLCBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudHMKLS8vLyAqcmVzdWx0ID0gKmZpcnN0LCAqKHJlc3VsdCArIDEpID0gKihmaXJzdCArIDEpLCBhbmQgc28gb24uIFsxXSBHZW5lcmFsbHksCi0vLy8gZm9yIGV2ZXJ5IGludGVnZXIgbiBmcm9tIDAgdG8gbGFzdCAtIGZpcnN0LCBjb3B5IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50Ci0vLy8gKihyZXN1bHQgKyBuKSA9ICooZmlyc3QgKyBuKS4gQXNzaWdubWVudHMgYXJlIHBlcmZvcm1lZCBpbiBmb3J3YXJkIG9yZGVyLAotLy8vIGkuZS4gaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBuLiAKLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIGNvcHkgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKLQkqcmVzdWx0ID0gKmZpcnN0OwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIENvcHlfbiBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBmaXJzdCArIG4pIHRvIHRoZSByYW5nZQotLy8vIFtyZXN1bHQsIHJlc3VsdCArIG4pLiBUaGF0IGlzLCBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudHMKLS8vLyAqcmVzdWx0ID0gKmZpcnN0LCAqKHJlc3VsdCArIDEpID0gKihmaXJzdCArIDEpLCBhbmQgc28gb24uIEdlbmVyYWxseSwKLS8vLyBmb3IgZXZlcnkgaW50ZWdlciBpIGZyb20gMCB1cCB0byAoYnV0IG5vdCBpbmNsdWRpbmcpIG4sIGNvcHlfbiBwZXJmb3JtcwotLy8vIHRoZSBhc3NpZ25tZW50ICoocmVzdWx0ICsgaSkgPSAqKGZpcnN0ICsgaSkuIEFzc2lnbm1lbnRzIGFyZSBwZXJmb3JtZWQKLS8vLyBpbiBmb3J3YXJkIG9yZGVyLCBpLmUuIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgbi4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIGNvcHlfbiAoSW5wdXRJdGVyYXRvciBmaXJzdCwgc2l6ZV90IGNvdW50LCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgZm9yICg7IGNvdW50OyAtLWNvdW50LCArK3Jlc3VsdCwgKytmaXJzdCkKLQkqcmVzdWx0ID0gKmZpcnN0OwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFxicmllZiBDb3B5IGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSAobGFzdCwgZmlyc3RdIHRvIHJlc3VsdC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLyBDb3BpZXMgZWxlbWVudHMgc3RhcnRpbmcgYXQgbGFzdCwgZGVjcmVtZW50aW5nIGJvdGggbGFzdCBhbmQgcmVzdWx0LgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgY29weV9iYWNrd2FyZCAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpCi0JKi0tcmVzdWx0ID0gKi0tbGFzdDsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBGb3JfZWFjaCBhcHBsaWVzIHRoZSBmdW5jdGlvbiBvYmplY3QgZiB0byBlYWNoIGVsZW1lbnQgaW4gdGhlIHJhbmdlCi0vLy8gW2ZpcnN0LCBsYXN0KTsgZidzIHJldHVybiB2YWx1ZSwgaWYgYW55LCBpcyBpZ25vcmVkLiBBcHBsaWNhdGlvbnMgYXJlCi0vLy8gcGVyZm9ybWVkIGluIGZvcndhcmQgb3JkZXIsIGkuZS4gZnJvbSBmaXJzdCB0byBsYXN0LiBGb3JfZWFjaCByZXR1cm5zCi0vLy8gdGhlIGZ1bmN0aW9uIG9iamVjdCBhZnRlciBpdCBoYXMgYmVlbiBhcHBsaWVkIHRvIGVhY2ggZWxlbWVudC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIFVuYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgVW5hcnlGdW5jdGlvbiBmb3JfZWFjaCAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBVbmFyeUZ1bmN0aW9uIGYpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JZiAoKmZpcnN0KTsKLSAgICByZXR1cm4gKGYpOwotfQotCi0vLy8gRmlsbCBhc3NpZ25zIHRoZSB2YWx1ZSB2YWx1ZSB0byBldmVyeSBlbGVtZW50IGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpLgotLy8vIFRoYXQgaXMsIGZvciBldmVyeSBpdGVyYXRvciBpIGluIFtmaXJzdCwgbGFzdCksCi0vLy8gaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQgKmkgPSB2YWx1ZS4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBmaWxsIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBjb25zdCBUJiB2YWx1ZSkKLXsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLQkqZmlyc3QgPSB2YWx1ZTsKLX0KLQotLy8vIEZpbGxfbiBhc3NpZ25zIHRoZSB2YWx1ZSB2YWx1ZSB0byBldmVyeSBlbGVtZW50IGluIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgZmlyc3QrY291bnQpLiBUaGF0IGlzLCBmb3IgZXZlcnkgaXRlcmF0b3IgaSBpbiBbZmlyc3QsIGZpcnN0K2NvdW50KSwKLS8vLyBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudCAqaSA9IHZhbHVlLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGZpcnN0ICsgY291bnQuCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgZmlsbF9uIChPdXRwdXRJdGVyYXRvciBmaXJzdCwgc2l6ZV90IGNvdW50LCBjb25zdCBUJiB2YWx1ZSkKLXsKLSAgICBmb3IgKDsgY291bnQ7IC0tY291bnQsICsrZmlyc3QpCi0JKmZpcnN0ID0gdmFsdWU7Ci0gICAgcmV0dXJuIChmaXJzdCk7Ci19Ci0KLSNpZiBDUFVfSEFTX01NWAotZXh0ZXJuICJDIiB2b2lkIGNvcHlfbl9mYXN0IChjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBjb3VudCwgdm9pZCogZGVzdCk7Ci0jZWxzZQotaW5saW5lIHZvaWQgY29weV9uX2Zhc3QgKGNvbnN0IHZvaWQqIHNyYywgc2l6ZV90IGNvdW50LCB2b2lkKiBkZXN0KQoteyBtZW1jcHkgKGRlc3QsIHNyYywgY291bnQpOyB9Ci0jZW5kaWYKLSNpZiBfX2kzODZfXyB8fCBfX3g4Nl82NF9fCi1leHRlcm4gIkMiIHZvaWQgY29weV9iYWNrd2FyZF9mYXN0IChjb25zdCB2b2lkKiBmaXJzdCwgY29uc3Qgdm9pZCogbGFzdCwgdm9pZCogcmVzdWx0KTsKLSNlbHNlCi1pbmxpbmUgdm9pZCBjb3B5X2JhY2t3YXJkX2Zhc3QgKGNvbnN0IHZvaWQqIGZpcnN0LCBjb25zdCB2b2lkKiBsYXN0LCB2b2lkKiByZXN1bHQpCi17Ci0gICAgY29uc3Qgc2l6ZV90IG5CeXRlcyAoZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSk7Ci0gICAgbWVtbW92ZSAoYWR2YW5jZSAocmVzdWx0LCAtbkJ5dGVzKSwgZmlyc3QsIG5CeXRlcyk7Ci19Ci0jZW5kaWYKLWV4dGVybiAiQyIgdm9pZCBmaWxsX244X2Zhc3QgKHVpbnQ4X3QqIGRlc3QsIHNpemVfdCBjb3VudCwgdWludDhfdCB2KTsKLWV4dGVybiAiQyIgdm9pZCBmaWxsX24xNl9mYXN0ICh1aW50MTZfdCogZGVzdCwgc2l6ZV90IGNvdW50LCB1aW50MTZfdCB2KTsKLWV4dGVybiAiQyIgdm9pZCBmaWxsX24zMl9mYXN0ICh1aW50MzJfdCogZGVzdCwgc2l6ZV90IGNvdW50LCB1aW50MzJfdCB2KTsKLWV4dGVybiAiQyIgdm9pZCByb3RhdGVfZmFzdCAodm9pZCogZmlyc3QsIHZvaWQqIG1pZGRsZSwgdm9pZCogbGFzdCk7Ci0KLSNpZiBfX0dOVUNfXyA+PSA0Ci0vLy8gXGJyaWVmIENvbXB1dGVzIHRoZSBudW1iZXIgb2YgMSBiaXRzIGluIGEgbnVtYmVyLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLWlubGluZSBzaXplX3QgcG9wY291bnQgKHVpbnQzMl90IHYpCXsgcmV0dXJuIChfX2J1aWx0aW5fcG9wY291bnQgKHYpKTsgfQotI2lmIEhBVkVfSU5UNjRfVAotaW5saW5lIHNpemVfdCBwb3Bjb3VudCAodWludDY0X3QgdikJeyByZXR1cm4gKF9fYnVpbHRpbl9wb3Bjb3VudGxsICh2KSk7IH0KLSNlbmRpZgotI2Vsc2UKLXNpemVfdCBwb3Bjb3VudCAodWludDMyX3Qgdik7Ci0jaWYgSEFWRV9JTlQ2NF9UCi1zaXplX3QgcG9wY291bnQgKHVpbnQ2NF90IHYpOwotI2VuZGlmCS8vIEhBVkVfSU5UNjRfVAotI2VuZGlmCS8vIF9fR05VQ19fCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gT3B0aW1pemVkIHZlcnNpb25zIGZvciBzdGFuZGFyZCB0eXBlcwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiBXQU5UX1VOUk9MTEVEX0NPUFkKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCogdW5yb2xsZWRfY29weSAoY29uc3QgVCogZmlyc3QsIHNpemVfdCBjb3VudCwgVCogcmVzdWx0KQotewotICAgIGNvcHlfbl9mYXN0IChmaXJzdCwgY291bnQgKiBzaXplb2YoVCksIHJlc3VsdCk7Ci0gICAgcmV0dXJuIChhZHZhbmNlIChyZXN1bHQsIGNvdW50KSk7Ci19Ci0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgdWludDhfdCogY29weV9iYWNrd2FyZCAoY29uc3QgdWludDhfdCogZmlyc3QsIGNvbnN0IHVpbnQ4X3QqIGxhc3QsIHVpbnQ4X3QqIHJlc3VsdCkKLXsKLSAgICBjb3B5X2JhY2t3YXJkX2Zhc3QgKGZpcnN0LCBsYXN0LCByZXN1bHQpOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCogdW5yb2xsZWRfZmlsbCAoVCogcmVzdWx0LCBzaXplX3QgY291bnQsIFQgdmFsdWUpCi17Ci0gICAgZm9yICg7IGNvdW50OyAtLWNvdW50LCArK3Jlc3VsdCkKLQkqcmVzdWx0ID0gdmFsdWU7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotdGVtcGxhdGUgPD4gaW5saW5lIHVpbnQ4X3QqIHVucm9sbGVkX2ZpbGwgKHVpbnQ4X3QqIHJlc3VsdCwgc2l6ZV90IGNvdW50LCB1aW50OF90IHZhbHVlKQotICAgIHsgZmlsbF9uOF9mYXN0IChyZXN1bHQsIGNvdW50LCB2YWx1ZSk7IHJldHVybiAoYWR2YW5jZSAocmVzdWx0LCBjb3VudCkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdWludDE2X3QqIHVucm9sbGVkX2ZpbGwgKHVpbnQxNl90KiByZXN1bHQsIHNpemVfdCBjb3VudCwgdWludDE2X3QgdmFsdWUpCi0gICAgeyBmaWxsX24xNl9mYXN0IChyZXN1bHQsIGNvdW50LCB2YWx1ZSk7IHJldHVybiAoYWR2YW5jZSAocmVzdWx0LCBjb3VudCkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdWludDMyX3QqIHVucm9sbGVkX2ZpbGwgKHVpbnQzMl90KiByZXN1bHQsIHNpemVfdCBjb3VudCwgdWludDMyX3QgdmFsdWUpCi0gICAgeyBmaWxsX24zMl9mYXN0IChyZXN1bHQsIGNvdW50LCB2YWx1ZSk7IHJldHVybiAoYWR2YW5jZSAocmVzdWx0LCBjb3VudCkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgZmxvYXQqIHVucm9sbGVkX2ZpbGwgKGZsb2F0KiByZXN1bHQsIHNpemVfdCBjb3VudCwgZmxvYXQgdmFsdWUpCi0gICAgeyBmaWxsX24zMl9mYXN0ICgodWludDMyX3QqKSByZXN1bHQsIGNvdW50LCBub2FsaWFzKHVpbnQzMl90KCksJnZhbHVlKSk7IHJldHVybiAoYWR2YW5jZSAocmVzdWx0LCBjb3VudCkpOyB9Ci0KLSNpZiBDUFVfSEFTX01NWAotI2RlZmluZSBVTlJPTExFRF9DT1BZX1NQRUNJQUxJWkFUSU9OKHR5cGUpCQkJCQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIHR5cGUqIGNvcHkgKGNvbnN0IHR5cGUqIGZpcnN0LCBjb25zdCB0eXBlKiBsYXN0LCB0eXBlKiByZXN1bHQpCVwKLXsgcmV0dXJuICh1bnJvbGxlZF9jb3B5IChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSwgcmVzdWx0KSk7IH0JCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdHlwZSogY29weV9uIChjb25zdCB0eXBlKiBmaXJzdCwgc2l6ZV90IGNvdW50LCB0eXBlKiByZXN1bHQpCQlcCi17IHJldHVybiAodW5yb2xsZWRfY29weSAoZmlyc3QsIGNvdW50LCByZXN1bHQpKTsgfQotI2RlZmluZSBVTlJPTExFRF9GSUxMX1NQRUNJQUxJWkFUSU9OKHR5cGUpCQkJCQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgZmlsbCAodHlwZSogZmlyc3QsIHR5cGUqIGxhc3QsIGNvbnN0IHR5cGUmIHZhbHVlKQkJXAoteyB1bnJvbGxlZF9maWxsIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSwgdmFsdWUpOyB9CQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSB0eXBlKiBmaWxsX24gKHR5cGUqIGZpcnN0LCBzaXplX3QgY291bnQsIGNvbnN0IHR5cGUmIHZhbHVlKQkJXAoteyByZXR1cm4gKHVucm9sbGVkX2ZpbGwgKGZpcnN0LCBjb3VudCwgdmFsdWUpKTsgfQotVU5ST0xMRURfQ09QWV9TUEVDSUFMSVpBVElPTih1aW50OF90KQotVU5ST0xMRURfRklMTF9TUEVDSUFMSVpBVElPTih1aW50OF90KQotVU5ST0xMRURfQ09QWV9TUEVDSUFMSVpBVElPTih1aW50MTZfdCkKLVVOUk9MTEVEX0ZJTExfU1BFQ0lBTElaQVRJT04odWludDE2X3QpCi1VTlJPTExFRF9DT1BZX1NQRUNJQUxJWkFUSU9OKHVpbnQzMl90KQotVU5ST0xMRURfRklMTF9TUEVDSUFMSVpBVElPTih1aW50MzJfdCkKLVVOUk9MTEVEX0NPUFlfU1BFQ0lBTElaQVRJT04oZmxvYXQpCi1VTlJPTExFRF9GSUxMX1NQRUNJQUxJWkFUSU9OKGZsb2F0KQotI3VuZGVmIFVOUk9MTEVEX0ZJTExfU1BFQ0lBTElaQVRJT04KLSN1bmRlZiBVTlJPTExFRF9DT1BZX1NQRUNJQUxJWkFUSU9OCi0jZW5kaWYgLy8gV0FOVF9VTlJPTExFRF9DT1BZCi0jZW5kaWYgLy8gQ1BVX0hBU19NTVgKLQotLy8gU3BlY2lhbGl6YXRpb25zIGZvciB2b2lkKiBhbmQgY2hhciosIGFsaWFzaW5nIHRoZSBhYm92ZSBvcHRpbWl6ZWQgdmVyc2lvbnMuCi0vLwotLy8gQWxsIHRoZXNlIG5lZWQgZHVwbGljYXRpb24gd2l0aCBjb25zdCBhbmQgbm9uLWNvbnN0IGFyZ3VtZW50cywgc2luY2UKLS8vIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgd2lsbCBkZWZhdWx0IHRvIHRoZSB1bm9wdGltaXplZCB2ZXJzaW9uIGZvcgotLy8gcG9pbnRlcnMgbm90IGNvbnN0IGluIHRoZSBjYWxsZXIncyBjb250ZXh0LCBzdWNoIGFzIGxvY2FsIHZhcmlhYmxlcy4KLS8vIFRoZXNlIGFyZSBhbGwgaW5saW5lLCBidXQgdGhleSBzdXJlIHNsb3cgZG93biBjb21waWxhdGlvbi4uLiA6KAotLy8KLSNkZWZpbmUgQ09QWV9BTElBU19GVU5DKGN0eXBlLCB0eXBlLCBhbGlhc190eXBlKQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSB0eXBlKiBjb3B5IChjdHlwZSogZmlyc3QsIGN0eXBlKiBsYXN0LCB0eXBlKiByZXN1bHQpCVwKLXsgcmV0dXJuICgodHlwZSopIGNvcHkgKChjb25zdCBhbGlhc190eXBlKikgZmlyc3QsIChjb25zdCBhbGlhc190eXBlKikgbGFzdCwgKGFsaWFzX3R5cGUqKSByZXN1bHQpKTsgfQotI2lmIFdBTlRfVU5ST0xMRURfQ09QWQotI2lmIEhBVkVfVEhSRUVfQ0hBUl9UWVBFUwotQ09QWV9BTElBU19GVU5DKGNvbnN0IGNoYXIsIGNoYXIsIHVpbnQ4X3QpCi1DT1BZX0FMSUFTX0ZVTkMoY2hhciwgY2hhciwgdWludDhfdCkKLSNlbmRpZgotQ09QWV9BTElBU19GVU5DKGNvbnN0IGludDhfdCwgaW50OF90LCB1aW50OF90KQotQ09QWV9BTElBU19GVU5DKGludDhfdCwgaW50OF90LCB1aW50OF90KQotQ09QWV9BTElBU19GVU5DKHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QpCi1DT1BZX0FMSUFTX0ZVTkMoY29uc3QgaW50MTZfdCwgaW50MTZfdCwgdWludDE2X3QpCi1DT1BZX0FMSUFTX0ZVTkMoaW50MTZfdCwgaW50MTZfdCwgdWludDE2X3QpCi1DT1BZX0FMSUFTX0ZVTkModWludDE2X3QsIHVpbnQxNl90LCB1aW50MTZfdCkKLSNpZiBDUFVfSEFTX01NWCB8fCAoU0laRV9PRl9MT05HID4gNCkKLUNPUFlfQUxJQVNfRlVOQyhjb25zdCBpbnQzMl90LCBpbnQzMl90LCB1aW50MzJfdCkKLUNPUFlfQUxJQVNfRlVOQyhpbnQzMl90LCBpbnQzMl90LCB1aW50MzJfdCkKLUNPUFlfQUxJQVNfRlVOQyh1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90KQotI2VuZGlmCi0jZW5kaWYKLUNPUFlfQUxJQVNfRlVOQyhjb25zdCB2b2lkLCB2b2lkLCB1aW50OF90KQotQ09QWV9BTElBU19GVU5DKHZvaWQsIHZvaWQsIHVpbnQ4X3QpCi0jdW5kZWYgQ09QWV9BTElBU19GVU5DCi0jZGVmaW5lIENPUFlfQkFDS1dBUkRfQUxJQVNfRlVOQyhjdHlwZSwgdHlwZSwgYWxpYXNfdHlwZSkJCQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIHR5cGUqIGNvcHlfYmFja3dhcmQgKGN0eXBlKiBmaXJzdCwgY3R5cGUqIGxhc3QsIHR5cGUqIHJlc3VsdCkJXAoteyByZXR1cm4gKCh0eXBlKikgY29weV9iYWNrd2FyZCAoKGNvbnN0IGFsaWFzX3R5cGUqKSBmaXJzdCwgKGNvbnN0IGFsaWFzX3R5cGUqKSBsYXN0LCAoYWxpYXNfdHlwZSopIHJlc3VsdCkpOyB9Ci0jaWYgV0FOVF9VTlJPTExFRF9DT1BZCi0jaWYgSEFWRV9USFJFRV9DSEFSX1RZUEVTCi1DT1BZX0JBQ0tXQVJEX0FMSUFTX0ZVTkMoY2hhciwgY2hhciwgdWludDhfdCkKLSNlbmRpZgotQ09QWV9CQUNLV0FSRF9BTElBU19GVU5DKHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QpCi1DT1BZX0JBQ0tXQVJEX0FMSUFTX0ZVTkMoaW50OF90LCBpbnQ4X3QsIHVpbnQ4X3QpCi1DT1BZX0JBQ0tXQVJEX0FMSUFTX0ZVTkModWludDE2X3QsIHVpbnQxNl90LCB1aW50OF90KQotQ09QWV9CQUNLV0FSRF9BTElBU19GVU5DKGNvbnN0IHVpbnQxNl90LCB1aW50MTZfdCwgdWludDhfdCkKLUNPUFlfQkFDS1dBUkRfQUxJQVNfRlVOQyhpbnQxNl90LCBpbnQxNl90LCB1aW50OF90KQotQ09QWV9CQUNLV0FSRF9BTElBU19GVU5DKGNvbnN0IGludDE2X3QsIGludDE2X3QsIHVpbnQ4X3QpCi0jZW5kaWYKLUNPUFlfQkFDS1dBUkRfQUxJQVNfRlVOQyh2b2lkLCB2b2lkLCB1aW50OF90KQotQ09QWV9CQUNLV0FSRF9BTElBU19GVU5DKGNvbnN0IHZvaWQsIHZvaWQsIHVpbnQ4X3QpCi0jdW5kZWYgQ09QWV9CQUNLV0FSRF9BTElBU19GVU5DCi0jZGVmaW5lIEZJTExfQUxJQVNfRlVOQyh0eXBlLCBhbGlhc190eXBlLCB2X3R5cGUpCQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIGZpbGwgKHR5cGUqIGZpcnN0LCB0eXBlKiBsYXN0LCBjb25zdCB2X3R5cGUmIHZhbHVlKQlcCi17IGZpbGwgKChhbGlhc190eXBlKikgZmlyc3QsIChhbGlhc190eXBlKikgbGFzdCwgKGNvbnN0IGFsaWFzX3R5cGUmKSB2YWx1ZSk7IH0KLUZJTExfQUxJQVNfRlVOQyh2b2lkLCB1aW50OF90LCBjaGFyKQotRklMTF9BTElBU19GVU5DKHZvaWQsIHVpbnQ4X3QsIHVpbnQ4X3QpCi0jaWYgV0FOVF9VTlJPTExFRF9DT1BZCi0jaWYgSEFWRV9USFJFRV9DSEFSX1RZUEVTCi1GSUxMX0FMSUFTX0ZVTkMoY2hhciwgdWludDhfdCwgY2hhcikKLUZJTExfQUxJQVNfRlVOQyhjaGFyLCB1aW50OF90LCB1aW50OF90KQotI2VuZGlmCi1GSUxMX0FMSUFTX0ZVTkMoaW50OF90LCB1aW50OF90LCBpbnQ4X3QpCi1GSUxMX0FMSUFTX0ZVTkMoaW50MTZfdCwgdWludDE2X3QsIGludDE2X3QpCi0jaWYgQ1BVX0hBU19NTVggfHwgKFNJWkVfT0ZfTE9ORyA+IDQpCi1GSUxMX0FMSUFTX0ZVTkMoaW50MzJfdCwgdWludDMyX3QsIGludDMyX3QpCi0jZW5kaWYKLSNlbmRpZgotI3VuZGVmIEZJTExfQUxJQVNfRlVOQwotI2RlZmluZSBDT1BZX05fQUxJQVNfRlVOQyhjdHlwZSwgdHlwZSwgYWxpYXNfdHlwZSkJCQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSB0eXBlKiBjb3B5X24gKGN0eXBlKiBmaXJzdCwgc2l6ZV90IGNvdW50LCB0eXBlKiByZXN1bHQpCVwKLXsgcmV0dXJuICgodHlwZSopIGNvcHlfbiAoKGNvbnN0IGFsaWFzX3R5cGUqKSBmaXJzdCwgY291bnQsIChhbGlhc190eXBlKikgcmVzdWx0KSk7IH0KLUNPUFlfTl9BTElBU19GVU5DKGNvbnN0IHZvaWQsIHZvaWQsIHVpbnQ4X3QpCi1DT1BZX05fQUxJQVNfRlVOQyh2b2lkLCB2b2lkLCB1aW50OF90KQotI2lmIFdBTlRfVU5ST0xMRURfQ09QWQotI2lmIEhBVkVfVEhSRUVfQ0hBUl9UWVBFUwotQ09QWV9OX0FMSUFTX0ZVTkMoY29uc3QgY2hhciwgY2hhciwgdWludDhfdCkKLUNPUFlfTl9BTElBU19GVU5DKGNoYXIsIGNoYXIsIHVpbnQ4X3QpCi0jZW5kaWYKLUNPUFlfTl9BTElBU19GVU5DKGludDhfdCwgaW50OF90LCB1aW50OF90KQotQ09QWV9OX0FMSUFTX0ZVTkModWludDhfdCwgdWludDhfdCwgdWludDhfdCkKLUNPUFlfTl9BTElBU19GVU5DKGNvbnN0IGludDhfdCwgaW50OF90LCB1aW50OF90KQotQ09QWV9OX0FMSUFTX0ZVTkMoaW50MTZfdCwgaW50MTZfdCwgdWludDE2X3QpCi1DT1BZX05fQUxJQVNfRlVOQyh1aW50MTZfdCwgdWludDE2X3QsIHVpbnQxNl90KQotQ09QWV9OX0FMSUFTX0ZVTkMoY29uc3QgaW50MTZfdCwgaW50MTZfdCwgdWludDE2X3QpCi0jaWYgQ1BVX0hBU19NTVggfHwgKFNJWkVfT0ZfTE9ORyA+IDQpCi1DT1BZX05fQUxJQVNfRlVOQyhpbnQzMl90LCBpbnQzMl90LCB1aW50MzJfdCkKLUNPUFlfTl9BTElBU19GVU5DKHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QpCi1DT1BZX05fQUxJQVNfRlVOQyhjb25zdCBpbnQzMl90LCBpbnQzMl90LCB1aW50MzJfdCkKLSNlbmRpZgotI2VuZGlmCi0jdW5kZWYgQ09QWV9OX0FMSUFTX0ZVTkMKLSNkZWZpbmUgRklMTF9OX0FMSUFTX0ZVTkModHlwZSwgYWxpYXNfdHlwZSwgdl90eXBlKQkJCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdHlwZSogZmlsbF9uICh0eXBlKiBmaXJzdCwgc2l6ZV90IG4sIGNvbnN0IHZfdHlwZSYgdmFsdWUpCVwKLXsgcmV0dXJuICgodHlwZSopIGZpbGxfbiAoKGFsaWFzX3R5cGUqKSBmaXJzdCwgbiwgKGNvbnN0IGFsaWFzX3R5cGUmKSB2YWx1ZSkpOyB9Ci1GSUxMX05fQUxJQVNfRlVOQyh2b2lkLCB1aW50OF90LCBjaGFyKQotRklMTF9OX0FMSUFTX0ZVTkModm9pZCwgdWludDhfdCwgdWludDhfdCkKLSNpZiBXQU5UX1VOUk9MTEVEX0NPUFkKLSNpZiBIQVZFX1RIUkVFX0NIQVJfVFlQRVMKLUZJTExfTl9BTElBU19GVU5DKGNoYXIsIHVpbnQ4X3QsIGNoYXIpCi1GSUxMX05fQUxJQVNfRlVOQyhjaGFyLCB1aW50OF90LCB1aW50OF90KQotI2VuZGlmCi1GSUxMX05fQUxJQVNfRlVOQyhpbnQ4X3QsIHVpbnQ4X3QsIGludDhfdCkKLUZJTExfTl9BTElBU19GVU5DKGludDE2X3QsIHVpbnQxNl90LCBpbnQxNl90KQotI2lmIENQVV9IQVNfTU1YIHx8IChTSVpFX09GX0xPTkcgPiA0KQotRklMTF9OX0FMSUFTX0ZVTkMoaW50MzJfdCwgdWludDMyX3QsIGludDMyX3QpCi0jZW5kaWYKLSNlbmRpZgotI3VuZGVmIEZJTExfTl9BTElBU19GVU5DCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Vhc3NlcnQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Vhc3NlcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlmZGU0Ni4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YXNzZXJ0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vLyB1YXNzZXJ0LmgKLQotI2lmbmRlZiBVQVNTRVJUX0gKLSNkZWZpbmUgVUFTU0VSVF9ICi0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI3VuZGVmIGFzc2VydAotI2RlZmluZSBhc3NlcnQoeCkgX3Vhc3NlcnQoKHgpLCAjeCwgX19GSUxFX18sIF9fTElORV9fKQotCi1zdGF0aWMgdm9pZCBfdWFzc2VydChpbnQgeCwgY29uc3QgY2hhciAqeHN0ciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpIHsKLSAgaWYgKCF4KSB7Ci0gICAgcHJpbnRmKCJhc3NlcnQgJXMgZmFpbGVkIGF0ICVzOiVkXG4iLCB4c3RyLCBmaWxlLCBsaW5lKTsKLSAgfQotfQotI2Vsc2UKLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3ViaXRzZXQuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWJpdHNldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYjVhN2EuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWJpdHNldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWJpdHNldC5jYwotLy8KLQotI2luY2x1ZGUgInViaXRzZXQuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gQ29waWVzIGJpdHMgZnJvbSBccCB2IG9mIHNpemUgXHAgbiBpbnRvIFxwIGJ1ZiBhcyBNU0IgIjEwMTEwMDEuLi4iIExTQgotLy8vIElmIFxwIGJ1ZiBpcyB0b28gc21hbGwsIE1TQiBiaXRzIHdpbGwgYmUgdHJ1bmNhdGVkLgotdm9pZCBjb252ZXJ0X3RvX2JpdHN0cmluZyAoY29uc3QgYml0c2V0X3ZhbHVlX3R5cGUqIHYsIHNpemVfdCBuLCBzdHJpbmcmIGJ1ZikKLXsKLSAgICBzdHJpbmc6Oml0ZXJhdG9yIHN0cmkgPSBidWYuZW5kKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuICYmIHN0cmkgPiBidWYuYmVnaW4oKTsgKysgaSkKLQlmb3IgKGJpdHNldF92YWx1ZV90eXBlIGIgPSAxOyBiICYmIHN0cmkgPiBidWYuYmVnaW4oKTsgYiA8PD0gMSkKLQkgICAgKi0tc3RyaSA9ICh2W2ldICYgYikgPyAnMScgOiAnMCc7Ci19Ci0KLS8vLyBDb3BpZXMgYml0cyBmcm9tIFxwIGJ1ZiBhcyBNU0IgIjEwMTEwMDEuLi4iIExTQiBpbnRvIFxwIHYgb2Ygc2l6ZSBccCBuLgotdm9pZCBjb252ZXJ0X2Zyb21fYml0c3RyaW5nIChjb25zdCBzdHJpbmcmIGJ1ZiwgYml0c2V0X3ZhbHVlX3R5cGUqIHYsIHNpemVfdCBuKQotewotICAgIHN0cmluZzo6Y29uc3RfaXRlcmF0b3Igc3RyaSA9IGJ1Zi5lbmQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsrIGkpIHsKLQlmb3IgKGJpdHNldF92YWx1ZV90eXBlIGIgPSAxOyBiOyBiIDw8PSAxKSB7Ci0JICAgIGlmIChzdHJpID09IGJ1Zi5iZWdpbigpIHx8ICotLXN0cmkgPT0gJzAnKQotCQl2W2ldICY9IH5iOwotCSAgICBlbHNlCi0JCXZbaV0gfD0gYjsKLQl9Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3ViaXRzZXQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3ViaXRzZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1M2E5NS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91Yml0c2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHViaXRzZXQuaAotLy8KLSNpZm5kZWYgVUJJVFNFVF9IXzdCNjQ1MEVDMTQwMENCQTQ1RENFMDEyNzczOUY4MkVFCi0jZGVmaW5lIFVCSVRTRVRfSF83QjY0NTBFQzE0MDBDQkE0NURDRTAxMjc3MzlGODJFRQotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVzdHJpbmcuaCIKLSNpbmNsdWRlICJ1ZnVuY3Rpb24uaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi10eXBlZGVmIHVpbnQzMl90CWJpdHNldF92YWx1ZV90eXBlOwotCi12b2lkIGNvbnZlcnRfdG9fYml0c3RyaW5nIChjb25zdCBiaXRzZXRfdmFsdWVfdHlwZSogdiwgc2l6ZV90IG4sIHN0cmluZyYgYnVmKTsKLXZvaWQgY29udmVydF9mcm9tX2JpdHN0cmluZyAoY29uc3Qgc3RyaW5nJiBidWYsIGJpdHNldF92YWx1ZV90eXBlKiB2LCBzaXplX3Qgbik7Ci0KLS8vLyBcY2xhc3MgYml0c2V0IHViaXRzZXQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBTZXF1ZW5jZXMKLS8vLwotLy8vIFxicmllZiBiaXRzZXQgaXMgYSBmaXhlZC1zaXplIGJsb2NrIG9mIG1lbW9yeSB3aXRoIGFkZHJlc3NhYmxlIGJpdHMuCi0vLy8KLS8vLyBOb3JtYWxseSB1c2VkIGZvciBzdGF0ZSBmbGFnczsgYWxsb3dzIHNldHRpbmcgYW5kIHVuc2V0dGluZyBvZiBpbmRpdmlkdWFsCi0vLy8gYml0cyBhcyB3ZWxsIGFzIGJpdHdpc2Ugb3BlcmF0aW9ucyBvbiB0aGUgZW50aXJlIHNldC4gVGhlIGludGVyZmFjZSBpcwotLy8vIG1vc3QgbGlrZSB0aGF0IG9mIHVuc2lnbmVkIGludGVnZXJzLCBhbmQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBzdWNoLgotLy8vIElmIHlvdSB3ZXJlIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGZ1bmN0aW9ucyBpbiBTVEwncyBiaXRzZXQsIHlvdSB3b3VsZAotLy8vIG5vdCBiZSBhYmxlIHRvIGRvIHRoZSBzYW1lIHRoaW5nIGhlcmUsIGJlY2F1c2UgdGhvc2UgZnVuY3Rpb25zIHJldHVybgotLy8vIGhvc3QgdHlwZSBpdGVyYXRvcnMsIG5vdCBiaXRzLgotLy8vCi10ZW1wbGF0ZSA8c2l6ZV90IFNpemU+Ci1jbGFzcyBiaXRzZXQgewotcHVibGljOgotICAgIHR5cGVkZWYgYml0c2V0X3ZhbHVlX3R5cGUJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqCQlwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSoJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHBvaW50ZXIJCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3RfcG9pbnRlcgljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHNpemVfdAkJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgc2l6ZV90CQlzaXplX3R5cGU7Ci1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19Xb3JkQml0cwk9IEJpdHNJblR5cGUgKHZhbHVlX3R5cGUpOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QJc19uV29yZHMJPSBTaXplIC8gc19Xb3JkQml0cyArICgoU2l6ZSAlIHNfV29yZEJpdHMpICE9IDApOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QJc19uQml0cwkJPSBzX25Xb3JkcyAqIHNfV29yZEJpdHM7Ci1wcml2YXRlOgotICAgIGlubGluZSB2YWx1ZV90eXBlJgkJQml0UmVmICh1b2ZmX3QgbikJeyBhc3NlcnQgKG4gPCBTaXplKTsgcmV0dXJuIChtX0JpdHMgW24gLyBzX1dvcmRCaXRzXSk7IH0KLSAgICBpbmxpbmUgY29uc3QgdmFsdWVfdHlwZQlCaXRSZWYgKHVvZmZfdCBuKSBjb25zdAl7IGFzc2VydCAobiA8IFNpemUpOyByZXR1cm4gKG1fQml0cyBbbiAvIHNfV29yZEJpdHNdKTsgfQotICAgIGlubGluZSBjb25zdCB2YWx1ZV90eXBlCU1hc2sgKHVvZmZfdCBuKSBjb25zdAl7IGFzc2VydCAobiA8IFNpemUpOyByZXR1cm4gKDEgPDwgKG4gJSBzX1dvcmRCaXRzKSk7IH0KLXB1YmxpYzoKLSAgICBpbmxpbmUJCWJpdHNldCAodmFsdWVfdHlwZSB2ID0gMCkJeyBmaWxsX24gKG1fQml0cywgc19uV29yZHMsIDApOyBtX0JpdHNbMF0gPSB2OyB9Ci0gICAgaW5saW5lCQliaXRzZXQgKGNvbnN0IHN0cmluZyYgYnVmKQl7IGNvbnZlcnRfZnJvbV9iaXRzdHJpbmcgKGJ1ZiwgbV9CaXRzLCBzX25Xb3Jkcyk7IH0KLSAgICBpbmxpbmUgdm9pZAkJZmxpcCAodW9mZl90IG4pCQkJeyBCaXRSZWYobikgXj0gTWFzayhuKTsgfQotICAgIGlubGluZSB2b2lkCQlyZXNldCAodm9pZCkJCQl7IGZpbGxfbiAobV9CaXRzLCBzX25Xb3JkcywgMCk7IH0KLSAgICBpbmxpbmUgdm9pZAkJY2xlYXIgKHZvaWQpCQkJeyBmaWxsX24gKG1fQml0cywgc19uV29yZHMsIDApOyB9Ci0gICAgaW5saW5lIHZvaWQJCXNldCAodm9pZCkJCQl7IGZpbGxfbiAobV9CaXRzLCBzX25Xb3JkcywgLTEpOyB9Ci0gICAgaW5saW5lIGJpdHNldAlvcGVyYXRvcn4gKHZvaWQpIGNvbnN0CQl7IGJpdHNldCBydiAoKnRoaXMpOyBydi5mbGlwKCk7IHJldHVybiAocnYpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQlzaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKFNpemUpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQljYXBhY2l0eSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChzX25CaXRzKTsgfQotICAgIGlubGluZSBjb25zdCBib29sCXRlc3QgKHVvZmZfdCBuKSBjb25zdAkJeyByZXR1cm4gKEJpdFJlZihuKSAmIE1hc2sobikpOyB9Ci0gICAgaW5saW5lIGNvbnN0IGJvb2wJb3BlcmF0b3JbXSAodW9mZl90IG4pIGNvbnN0CXsgcmV0dXJuICh0ZXN0KG4pKTsgfQotICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJYmVnaW4gKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9CaXRzKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgliZWdpbiAodm9pZCkJCQl7IHJldHVybiAobV9CaXRzKTsgfQotICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fQml0cyArIHNfbldvcmRzKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgllbmQgKHZvaWQpCQkJeyByZXR1cm4gKG1fQml0cyArIHNfbldvcmRzKTsgfQotIAkJCS8vLyBSZXR1cm5zIHRoZSB2YWx1ZV90eXBlIHdpdGggdGhlIGVxdWl2YWxlbnQgYml0cy4gSWYgc2l6ZSgpID4gMSwgeW91J2xsIGdldCBvbmx5IHRoZSBmaXJzdCBCaXRzSW5UeXBlKHZhbHVlX3R5cGUpIGJpdHMuCi0gICAgaW5saW5lIGNvbnN0IHZhbHVlX3R5cGUJdG9fdmFsdWUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9CaXRzWzBdKTsgfQotICAgIAkJCS8vLyBGbGlwcyBhbGwgdGhlIGJpdHMgaW4gdGhlIHNldC4KLSAgICBpbmxpbmUgdm9pZAkJZmxpcCAodm9pZCkgeyB0cmFuc2Zvcm0gKGJlZ2luKCksIGVuZCgpLCBiZWdpbigpLCBiaXR3aXNlX25vdDx2YWx1ZV90eXBlPigpKTsgfQotCQkJLy8vIFNldHMgb3IgY2xlYXJzIGJpdCBccCBuLgotICAgIGlubGluZSB2b2lkCQlzZXQgKHVvZmZfdCBuLCBib29sIHZhbCA9IHRydWUpCi0JCQl7Ci0JCQkgICAgdmFsdWVfdHlwZSYgYnIgKEJpdFJlZiAobikpOwotCQkJICAgIGNvbnN0IHZhbHVlX3R5cGUgbWFzayAoTWFzayAobikpOwotCQkJICAgIGNvbnN0IHZhbHVlX3R5cGUgYk9uIChiciB8IG1hc2spLCBiT2ZmIChiciAmIH5tYXNrKTsKLQkJCSAgICBiciA9IHZhbCA/IGJPbiA6IGJPZmY7Ci0JCQl9Ci0JCQkvLyBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYml0cmFuZ2UgXHAgZmlyc3QgdGhyb3VnaCBccCBsYXN0IHRvIHRoZSBlcXVpdmFsZW50IG51bWJlciBvZiBiaXRzIGZyb20gXHAgdi4KLSAgICBpbmxpbmUgdm9pZAkJc2V0ICh1b2ZmX3QgZmlyc3QsIHVvZmZfdCBEZWJ1Z0FyZyhsYXN0KSwgdmFsdWVfdHlwZSB2KQotCQkJewotI2lmICFQTEFURk9STV9BTkRST0lECi0JCQkgICAgYXNzZXJ0IChzaXplX3QgKGRpc3RhbmNlIChmaXJzdCwgbGFzdCkpIDw9IHNfV29yZEJpdHMgJiYgIkJpdCByYW5nZXMgbXVzdCBiZSAzMiBiaXRzIG9yIHNtYWxsZXIiKTsKLQkJCSAgICBhc3NlcnQgKGZpcnN0IC8gc19Xb3JkQml0cyA9PSBsYXN0IC8gc19Xb3JkQml0cyAmJiAiQml0IHJhbmdlcyBjYW4gbm90IGNyb3NzIGR3b3JkICg0IGJ5dGUpIGJvdW5kYXJ5Iik7Ci0JCQkgICAgYXNzZXJ0ICgodiAmIEJpdE1hc2sodmFsdWVfdHlwZSxkaXN0YW5jZShmaXJzdCxsYXN0KSkpID09IHYgJiYgIlRoZSB2YWx1ZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIHRoZSBnaXZlbiBiaXQgcmFuZ2UiKTsKLSNlbmRpZgotCQkJICAgIEJpdFJlZihmaXJzdCkgfD0gdiA8PCAoZmlyc3QgJSBzX1dvcmRCaXRzKTsKLQkJCX0KLSAgICAJCQkvLy8gQ2xlYXJzIHRoZSBiaXQgXHAgbi4KLSAgICBpbmxpbmUgdm9pZAkJcmVzZXQgKHVvZmZfdCBuKQkJeyBzZXQgKG4sIGZhbHNlKTsgfQotCQkJLy8vIFJldHVybnMgYSBzdHJpbmcgd2l0aCBiaXRzIE1TQiAiMDAxMTAxMDAxLi4uIiBMU0IuCi0gICAgaW5saW5lIHN0cmluZwl0b19zdHJpbmcgKHZvaWQpIGNvbnN0Ci0JCQl7Ci0JCQkgICAgc3RyaW5nIHJ2IChTaXplLCAnMCcpOwotCQkJICAgIGNvbnZlcnRfdG9fYml0c3RyaW5nIChtX0JpdHMsIHNfbldvcmRzLCBydik7Ci0JCQkgICAgcmV0dXJuIChydik7Ci0JCQl9Ci0gICAgaW5saW5lIHZhbHVlX3R5cGUJYXQgKHVvZmZfdCBuKSBjb25zdAkJeyByZXR1cm4gKHRlc3QobikpOyB9Ci0JCQkvLy8gUmV0dXJucyB0aGUgdmFsdWUgaW4gYml0cyBccCBmaXJzdCB0aHJvdWdoIFxwIGxhc3QuCi0gICAgaW5saW5lIHZhbHVlX3R5cGUJYXQgKHVvZmZfdCBmaXJzdCwgdW9mZl90IGxhc3QpIGNvbnN0Ci0JCQl7Ci0JCQkgICAgYXNzZXJ0IChzaXplX3QgKGRpc3RhbmNlIChmaXJzdCwgbGFzdCkpIDw9IHNfV29yZEJpdHMgJiYgIkJpdCByYW5nZXMgbXVzdCBiZSAzMiBiaXRzIG9yIHNtYWxsZXIiKTsKLQkJCSAgICBhc3NlcnQgKGZpcnN0IC8gc19Xb3JkQml0cyA9PSBsYXN0IC8gc19Xb3JkQml0cyAmJiAiQml0IHJhbmdlcyBjYW4gbm90IGNyb3NzIGR3b3JkICg0IGJ5dGUpIGJvdW5kYXJ5Iik7Ci0JCQkgICAgcmV0dXJuICgoQml0UmVmKGZpcnN0KSA+PiAoZmlyc3QgJSBzX1dvcmRCaXRzKSkgJiBCaXRNYXNrKHZhbHVlX3R5cGUsZGlzdGFuY2UoZmlyc3QsIGxhc3QpKSk7Ci0JCQl9Ci0gICAgaW5saW5lIGJvb2wJCWFueSAodm9pZCkgY29uc3QJeyB2YWx1ZV90eXBlIHN1bSA9IDA7IGZvcmVhY2ggKGNvbnN0X2l0ZXJhdG9yLCBpLCAqdGhpcykgc3VtIHw9ICppOyByZXR1cm4gKHN1bSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJbm9uZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKCFhbnkoKSk7IH0KLSAgICBpbmxpbmUgc2l6ZV90CWNvdW50ICh2b2lkKSBjb25zdAl7IHNpemVfdCBzdW0gPSAwOyBmb3JlYWNoIChjb25zdF9pdGVyYXRvciwgaSwgKnRoaXMpIHN1bSArPSBwb3Bjb3VudCgqaSk7IHJldHVybiAoc3VtKTsgfQotICAgIGlubGluZSBib29sCQlvcGVyYXRvcj09IChjb25zdCBiaXRzZXQ8U2l6ZT4mIHYpIGNvbnN0Ci0JCQkgICAgeyByZXR1cm4gKHNfbldvcmRzID09IDEgPyAobV9CaXRzWzBdID09IHYubV9CaXRzWzBdKSA6IGVxdWFsIChiZWdpbigpLCBlbmQoKSwgdi5iZWdpbigpKSk7IH0KLSAgICBpbmxpbmUgY29uc3QgYml0c2V0CW9wZXJhdG9yJiAoY29uc3QgYml0c2V0PFNpemU+JiB2KQotCQkJICAgIHsgYml0c2V0PFNpemU+IHJlc3VsdDsgdHJhbnNmb3JtIChiZWdpbigpLCBlbmQoKSwgdi5iZWdpbigpLCByZXN1bHQuYmVnaW4oKSwgYml0d2lzZV9hbmQ8dmFsdWVfdHlwZT4oKSk7IHJldHVybiAocmVzdWx0KTsgfQotICAgIGlubGluZSBjb25zdCBiaXRzZXQJb3BlcmF0b3J8IChjb25zdCBiaXRzZXQ8U2l6ZT4mIHYpCi0JCQkgICAgeyBiaXRzZXQ8U2l6ZT4gcmVzdWx0OyB0cmFuc2Zvcm0gKGJlZ2luKCksIGVuZCgpLCB2LmJlZ2luKCksIHJlc3VsdC5iZWdpbigpLCBiaXR3aXNlX29yPHZhbHVlX3R5cGU+KCkpOyByZXR1cm4gKHJlc3VsdCk7IH0KLSAgICBpbmxpbmUgY29uc3QgYml0c2V0CW9wZXJhdG9yXiAoY29uc3QgYml0c2V0PFNpemU+JiB2KQotCQkJICAgIHsgYml0c2V0PFNpemU+IHJlc3VsdDsgdHJhbnNmb3JtIChiZWdpbigpLCBlbmQoKSwgdi5iZWdpbigpLCByZXN1bHQuYmVnaW4oKSwgYml0d2lzZV94b3I8dmFsdWVfdHlwZT4oKSk7IHJldHVybiAocmVzdWx0KTsgfQotICAgaW5saW5lIGNvbnN0IGJpdHNldCYJb3BlcmF0b3ImPSAoY29uc3QgYml0c2V0PFNpemU+JiB2KQotCQkJICAgIHsgdHJhbnNmb3JtIChiZWdpbigpLCBlbmQoKSwgdi5iZWdpbigpLCBiZWdpbigpLCBiaXR3aXNlX2FuZDx2YWx1ZV90eXBlPigpKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgIGlubGluZSBjb25zdCBiaXRzZXQmCW9wZXJhdG9yfD0gKGNvbnN0IGJpdHNldDxTaXplPiYgdikKLQkJCSAgICB7IHRyYW5zZm9ybSAoYmVnaW4oKSwgZW5kKCksIHYuYmVnaW4oKSwgYmVnaW4oKSwgYml0d2lzZV9vcjx2YWx1ZV90eXBlPigpKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgIGlubGluZSBjb25zdCBiaXRzZXQmCW9wZXJhdG9yXj0gKGNvbnN0IGJpdHNldDxTaXplPiYgdikKLQkJCSAgICB7IHRyYW5zZm9ybSAoYmVnaW4oKSwgZW5kKCksIHYuYmVnaW4oKSwgYmVnaW4oKSwgYml0d2lzZV94b3I8dmFsdWVfdHlwZT4oKSk7IHJldHVybiAoKnRoaXMpOyB9Ci1wcml2YXRlOgotICAgIHZhbHVlX3R5cGUJCW1fQml0cyBbc19uV29yZHNdOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWN0cmFsZ28uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VjdHJhbGdvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZjYzN2QuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWN0cmFsZ28uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MiArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gXGZpbGUgdWN0cmFsZ28uaAotLy8KLS8vIFxicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBTVEwgYWxnb3JpdGhtcyB3aXRoIGNvbnRhaW5lciBzaG9ydGN1dHMuCi0vLwotLy8gVGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlIGNvcGllZAotLy8gZXhhY3RseSBmcm9tIHRoZSBTR0kgdmVyc2lvbiBvZiBTVEwgZG9jdW1lbnRhdGlvbiBhbG9uZyB3aXRoIGNvbW1lbnRzIGFib3V0Ci0vLyB0aGVpciB1c2UuIFRoZSBjb2RlIGlzIE5PVCB0aGUgc2FtZSwgdGhvdWdoIHRoZSBmdW5jdGlvbmFsaXR5IHVzdWFsbHkgaXMuCi0vLwotCi0jaWZuZGVmIFVDVFJBTEdPX0hfMEQxQUVERkE3NEIwOTc5MTQ4OUZFMjVCMUVDNjQ0QjAKLSNkZWZpbmUgVUNUUkFMR09fSF8wRDFBRURGQTc0QjA5NzkxNDg5RkUyNUIxRUM2NDRCMAotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBDb3B5IGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIHRoZSByYW5nZQotLy8vIFtyZXN1bHQsIHJlc3VsdCArIChsYXN0IC0gZmlyc3QpKS4gVGhhdCBpcywgaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnRzCi0vLy8gKnJlc3VsdCA9ICpmaXJzdCwgKihyZXN1bHQgKyAxKSA9ICooZmlyc3QgKyAxKSwgYW5kIHNvIG9uLiBbMV0gR2VuZXJhbGx5LAotLy8vIGZvciBldmVyeSBpbnRlZ2VyIG4gZnJvbSAwIHRvIGxhc3QgLSBmaXJzdCwgY29weSBwZXJmb3JtcyB0aGUgYXNzaWdubWVudAotLy8vICoocmVzdWx0ICsgbikgPSAqKGZpcnN0ICsgbikuIEFzc2lnbm1lbnRzIGFyZSBwZXJmb3JtZWQgaW4gZm9yd2FyZCBvcmRlciwKLS8vLyBpLmUuIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgbi4gCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIGNvcHkgKGNvbnN0IENvbnRhaW5lciYgY3RyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgcmV0dXJuIChjb3B5IChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCByZXN1bHQpKTsKLX0KLQotLy8vIENvcHlfaWYgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gdGhlIHJhbmdlCi0vLy8gW3Jlc3VsdCwgcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCkpIGlmIHByZWQoKmkpIHJldHVybnMgdHJ1ZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBjb3B5X2lmIChDb250YWluZXImIGN0ciwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBQcmVkaWNhdGUgcHJlZCkKLXsKLSAgICByZXR1cm4gKGNvcHlfaWYgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHJlc3VsdCwgcHJlZCkpOwotfQotCi0vLy8gRm9yX2VhY2ggYXBwbGllcyB0aGUgZnVuY3Rpb24gb2JqZWN0IGYgdG8gZWFjaCBlbGVtZW50IGluIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgbGFzdCk7IGYncyByZXR1cm4gdmFsdWUsIGlmIGFueSwgaXMgaWdub3JlZC4gQXBwbGljYXRpb25zIGFyZQotLy8vIHBlcmZvcm1lZCBpbiBmb3J3YXJkIG9yZGVyLCBpLmUuIGZyb20gZmlyc3QgdG8gbGFzdC4gRm9yX2VhY2ggcmV0dXJucwotLy8vIHRoZSBmdW5jdGlvbiBvYmplY3QgYWZ0ZXIgaXQgaGFzIGJlZW4gYXBwbGllZCB0byBlYWNoIGVsZW1lbnQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFVuYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgVW5hcnlGdW5jdGlvbiBmb3JfZWFjaCAoQ29udGFpbmVyJiBjdHIsIFVuYXJ5RnVuY3Rpb24gZikKLXsKLSAgICByZXR1cm4gKGZvcl9lYWNoIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBmKSk7Ci19Ci0KLS8vLyBGb3JfZWFjaCBhcHBsaWVzIHRoZSBmdW5jdGlvbiBvYmplY3QgZiB0byBlYWNoIGVsZW1lbnQgaW4gdGhlIHJhbmdlCi0vLy8gW2ZpcnN0LCBsYXN0KTsgZidzIHJldHVybiB2YWx1ZSwgaWYgYW55LCBpcyBpZ25vcmVkLiBBcHBsaWNhdGlvbnMgYXJlCi0vLy8gcGVyZm9ybWVkIGluIGZvcndhcmQgb3JkZXIsIGkuZS4gZnJvbSBmaXJzdCB0byBsYXN0LiBGb3JfZWFjaCByZXR1cm5zCi0vLy8gdGhlIGZ1bmN0aW9uIG9iamVjdCBhZnRlciBpdCBoYXMgYmVlbiBhcHBsaWVkIHRvIGVhY2ggZWxlbWVudC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgVW5hcnlGdW5jdGlvbj4KLWlubGluZSBVbmFyeUZ1bmN0aW9uIGZvcl9lYWNoIChjb25zdCBDb250YWluZXImIGN0ciwgVW5hcnlGdW5jdGlvbiBmKQotewotICAgIHJldHVybiAoZm9yX2VhY2ggKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIGYpKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGZpcnN0IGl0ZXJhdG9yIGkgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgc3VjaCB0aGF0Ci0vLy8gKmkgPT0gdmFsdWUuIFJldHVybnMgbGFzdCBpZiBubyBzdWNoIGl0ZXJhdG9yIGV4aXN0cy4gCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBFcXVhbGl0eUNvbXBhcmFibGU+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBmaW5kIChjb25zdCBDb250YWluZXImIGN0ciwgY29uc3QgRXF1YWxpdHlDb21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKGZpbmQgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKSk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBFcXVhbGl0eUNvbXBhcmFibGU+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciBmaW5kIChDb250YWluZXImIGN0ciwgY29uc3QgRXF1YWxpdHlDb21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKGZpbmQgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBmaXJzdCBpdGVyYXRvciBpIGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHN1Y2ggdGhhdAotLy8vIHByZWQoKmkpIGlzIHRydWUuIFJldHVybnMgbGFzdCBpZiBubyBzdWNoIGl0ZXJhdG9yIGV4aXN0cy4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSB0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGZpbmRfaWYgKGNvbnN0IENvbnRhaW5lciYgY3RyLCBQcmVkaWNhdGUgcHJlZCkKLXsKLSAgICByZXR1cm4gKGZpbmRfaWYgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHByZWQpKTsKLX0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSB0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yIGZpbmRfaWYgKENvbnRhaW5lciYgY3RyLCBQcmVkaWNhdGUgcHJlZCkKLXsKLSAgICByZXR1cm4gKGZpbmRfaWYgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHByZWQpKTsKLX0KLQotLy8vIENvdW50IGZpbmRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW2ZpcnN0LCBsYXN0KSB0aGF0IGFyZSBlcXVhbAotLy8vIHRvIHZhbHVlLiBNb3JlIHByZWNpc2VseSwgdGhlIGZpcnN0IHZlcnNpb24gb2YgY291bnQgcmV0dXJucyB0aGUKLS8vLyBudW1iZXIgb2YgaXRlcmF0b3JzIGkgaW4gW2ZpcnN0LCBsYXN0KSBzdWNoIHRoYXQgKmkgPT0gdmFsdWUuCi0vLy8gXGluZ3JvdXAgQ29uZGl0aW9uQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBFcXVhbGl0eUNvbXBhcmFibGU+Ci1pbmxpbmUgc2l6ZV90IGNvdW50IChjb25zdCBDb250YWluZXImIGN0ciwgY29uc3QgRXF1YWxpdHlDb21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKGNvdW50IChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCB2YWx1ZSkpOwotfQotCi0vLy8gQ291bnRfaWYgZmluZHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbZmlyc3QsIGxhc3QpIHRoYXQgc2F0aXNmeSB0aGUKLS8vLyBwcmVkaWNhdGUgcHJlZC4gTW9yZSBwcmVjaXNlbHksIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIGNvdW50X2lmIHJldHVybnMgdGhlCi0vLy8gbnVtYmVyIG9mIGl0ZXJhdG9ycyBpIGluIFtmaXJzdCwgbGFzdCkgc3VjaCB0aGF0IHByZWQoKmkpIGlzIHRydWUuCi0vLy8gXGluZ3JvdXAgQ29uZGl0aW9uQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgc2l6ZV90IGNvdW50X2lmIChjb25zdCBDb250YWluZXImIGN0ciwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgcmV0dXJuIChjb3VudF9pZiAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcHJlZCkpOwotfQotCi0vLy8gVGhlIGZpcnN0IHZlcnNpb24gb2YgdHJhbnNmb3JtIHBlcmZvcm1zIHRoZSBvcGVyYXRpb24gb3AoKmkpIGZvciBlYWNoCi0vLy8gaXRlcmF0b3IgaSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSwgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCBvZiB0aGF0Ci0vLy8gb3BlcmF0aW9uIHRvICpvLCB3aGVyZSBvIGlzIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBpdGVyYXRvci4gVGhhdCBpcywKLS8vLyBmb3IgZWFjaCBuIHN1Y2ggdGhhdCAwIDw9IG4gPCBsYXN0IC0gZmlyc3QsIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50Ci0vLy8gKihyZXN1bHQgKyBuKSA9IG9wKCooZmlyc3QgKyBuKSkuCi0vLy8gVGhlIHJldHVybiB2YWx1ZSBpcyByZXN1bHQgKyAobGFzdCAtIGZpcnN0KS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgVW5hcnlGdW5jdGlvbj4KLWlubGluZSB2b2lkIHRyYW5zZm9ybSAoQ29udGFpbmVyJiBjdHIsIFVuYXJ5RnVuY3Rpb24gb3ApCi17Ci0gICAgdHJhbnNmb3JtIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBjdHIuYmVnaW4oKSwgb3ApOwotfQotCi0vLy8gVGhlIGZpcnN0IHZlcnNpb24gb2YgdHJhbnNmb3JtIHBlcmZvcm1zIHRoZSBvcGVyYXRpb24gb3AoKmkpIGZvciBlYWNoCi0vLy8gaXRlcmF0b3IgaSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSwgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCBvZiB0aGF0Ci0vLy8gb3BlcmF0aW9uIHRvICpvLCB3aGVyZSBvIGlzIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBpdGVyYXRvci4gVGhhdCBpcywKLS8vLyBmb3IgZWFjaCBuIHN1Y2ggdGhhdCAwIDw9IG4gPCBsYXN0IC0gZmlyc3QsIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50Ci0vLy8gKihyZXN1bHQgKyBuKSA9IG9wKCooZmlyc3QgKyBuKSkuCi0vLy8gVGhlIHJldHVybiB2YWx1ZSBpcyByZXN1bHQgKyAobGFzdCAtIGZpcnN0KS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFVuYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgdHJhbnNmb3JtIChDb250YWluZXImIGN0ciwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBVbmFyeUZ1bmN0aW9uIG9wKQotewotICAgIHJldHVybiAodHJhbnNmb3JtIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCByZXN1bHQsIG9wKSk7Ci19Ci0KLS8vLyBUaGUgc2Vjb25kIHZlcnNpb24gb2YgdHJhbnNmb3JtIGlzIHZlcnkgc2ltaWxhciwgZXhjZXB0IHRoYXQgaXQgdXNlcyBhCi0vLy8gQmluYXJ5IEZ1bmN0aW9uIGluc3RlYWQgb2YgYSBVbmFyeSBGdW5jdGlvbjogaXQgcGVyZm9ybXMgdGhlIG9wZXJhdGlvbgotLy8vIG9wKCppMSwgKmkyKSBmb3IgZWFjaCBpdGVyYXRvciBpMSBpbiB0aGUgcmFuZ2UgW2ZpcnN0MSwgbGFzdDEpIGFuZCBhc3NpZ25zCi0vLy8gdGhlIHJlc3VsdCB0byAqbywgd2hlcmUgaTIgaXMgdGhlIGNvcnJlc3BvbmRpbmcgaXRlcmF0b3IgaW4gdGhlIHNlY29uZAotLy8vIGlucHV0IHJhbmdlIGFuZCB3aGVyZSBvIGlzIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBpdGVyYXRvci4gVGhhdCBpcywKLS8vLyBmb3IgZWFjaCBuIHN1Y2ggdGhhdCAwIDw9IG4gPCBsYXN0MSAtIGZpcnN0MSwgaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQKLS8vLyAqKHJlc3VsdCArIG4pID0gb3AoKihmaXJzdDEgKyBuKSwgKihmaXJzdDIgKyBuKS4KLS8vLyBUaGUgcmV0dXJuIHZhbHVlIGlzIHJlc3VsdCArIChsYXN0MSAtIGZpcnN0MSkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciB0cmFuc2Zvcm0gKENvbnRhaW5lciYgY3RyLCBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIEJpbmFyeUZ1bmN0aW9uIG9wKQotewotICAgIHJldHVybiAodHJhbnNmb3JtIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBmaXJzdCwgcmVzdWx0LCBvcCkpOwotfQotCi0vLy8gUmVwbGFjZSByZXBsYWNlcyBldmVyeSBlbGVtZW50IGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGVxdWFsIHRvCi0vLy8gb2xkX3ZhbHVlIHdpdGggbmV3X3ZhbHVlLiBUaGF0IGlzOiBmb3IgZXZlcnkgaXRlcmF0b3IgaSwKLS8vLyBpZiAqaSA9PSBvbGRfdmFsdWUgdGhlbiBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudCAqaSA9IG5ld192YWx1ZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIHJlcGxhY2UgKENvbnRhaW5lciYgY3RyLCBjb25zdCBUJiBvbGRfdmFsdWUsIGNvbnN0IFQmIG5ld192YWx1ZSkKLXsKLSAgICByZXBsYWNlIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBvbGRfdmFsdWUsIG5ld192YWx1ZSk7Ci19Ci0KLS8vLyBSZXBsYWNlX2lmIHJlcGxhY2VzIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgZm9yIHdoaWNoCi0vLy8gcHJlZCByZXR1cm5zIHRydWUgd2l0aCBuZXdfdmFsdWUuIFRoYXQgaXM6IGZvciBldmVyeSBpdGVyYXRvciBpLCBpZgotLy8vIHByZWQoKmkpIGlzIHRydWUgdGhlbiBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudCAqaSA9IG5ld192YWx1ZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgUHJlZGljYXRlLCB0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgcmVwbGFjZV9pZiAoQ29udGFpbmVyJiBjdHIsIFByZWRpY2F0ZSBwcmVkLCBjb25zdCBUJiBuZXdfdmFsdWUpCi17Ci0gICAgcmVwbGFjZV9pZiAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcHJlZCwgbmV3X3ZhbHVlKTsKLX0KLQotLy8vIFJlcGxhY2VfY29weSBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSB0byB0aGUgcmFuZ2UKLS8vLyBbcmVzdWx0LCByZXN1bHQgKyAobGFzdC1maXJzdCkpLCBleGNlcHQgdGhhdCBhbnkgZWxlbWVudCBlcXVhbCB0byBvbGRfdmFsdWUKLS8vLyBpcyBub3QgY29waWVkOyBuZXdfdmFsdWUgaXMgY29waWVkIGluc3RlYWQuIE1vcmUgcHJlY2lzZWx5LCBmb3IgZXZlcnkKLS8vLyBpbnRlZ2VyIG4gc3VjaCB0aGF0IDAgPD0gbiA8IGxhc3QtZmlyc3QsIHJlcGxhY2VfY29weSBwZXJmb3JtcyB0aGUKLS8vLyBhc3NpZ25tZW50ICoocmVzdWx0K24pID0gbmV3X3ZhbHVlIGlmICooZmlyc3QrbikgPT0gb2xkX3ZhbHVlLCBhbmQKLS8vLyAqKHJlc3VsdCtuKSA9ICooZmlyc3Qrbikgb3RoZXJ3aXNlLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZXBsYWNlX2NvcHkgKGNvbnN0IENvbnRhaW5lciYgY3RyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIGNvbnN0IFQmIG9sZF92YWx1ZSwgY29uc3QgVCYgbmV3X3ZhbHVlKQotewotICAgIHJldHVybiAocmVwbGFjZV9jb3B5IChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCByZXN1bHQsIG9sZF92YWx1ZSwgbmV3X3ZhbHVlKSk7Ci19Ci0KLS8vLyBSZXBsYWNlX2NvcHlfaWYgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gdGhlIHJhbmdlCi0vLy8gW3Jlc3VsdCwgcmVzdWx0ICsgKGxhc3QtZmlyc3QpKSwgZXhjZXB0IHRoYXQgYW55IGVsZW1lbnQgZm9yIHdoaWNoIHByZWQgaXMKLS8vLyB0cnVlIGlzIG5vdCBjb3BpZWQ7IG5ld192YWx1ZSBpcyBjb3BpZWQgaW5zdGVhZC4gTW9yZSBwcmVjaXNlbHksIGZvciBldmVyeQotLy8vIGludGVnZXIgbiBzdWNoIHRoYXQgMCA8PSBuIDwgbGFzdC1maXJzdCwgcmVwbGFjZV9jb3B5X2lmIHBlcmZvcm1zIHRoZQotLy8vIGFzc2lnbm1lbnQgKihyZXN1bHQrbikgPSBuZXdfdmFsdWUgaWYgcHJlZCgqKGZpcnN0K24pKSwKLS8vLyBhbmQgKihyZXN1bHQrbikgPSAqKGZpcnN0K24pIG90aGVyd2lzZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZXBsYWNlX2NvcHlfaWYgKGNvbnN0IENvbnRhaW5lciYgY3RyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFByZWRpY2F0ZSBwcmVkLCBjb25zdCBUJiBuZXdfdmFsdWUpIAotewotICAgIHJldHVybiAocmVwbGFjZV9jb3B5X2lmIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCByZXN1bHQsIHByZWQsIG5ld192YWx1ZSkpOwotfQotCi0vLy8gRmlsbCBhc3NpZ25zIHRoZSB2YWx1ZSB2YWx1ZSB0byBldmVyeSBlbGVtZW50IGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpLgotLy8vIFRoYXQgaXMsIGZvciBldmVyeSBpdGVyYXRvciBpIGluIFtmaXJzdCwgbGFzdCksCi0vLy8gaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQgKmkgPSB2YWx1ZS4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBmaWxsIChDb250YWluZXImIGN0ciwgY29uc3QgVCYgdmFsdWUpCi17Ci0gICAgZmlsbCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgdmFsdWUpOwotfQotCi0vLy8gR2VuZXJhdGUgYXNzaWducyB0aGUgcmVzdWx0IG9mIGludm9raW5nIGdlbiwgYSBmdW5jdGlvbiBvYmplY3QgdGhhdAotLy8vIHRha2VzIG5vIGFyZ3VtZW50cywgdG8gZWFjaCBlbGVtZW50IGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpLgotLy8vIFxpbmdyb3VwIEdlbmVyYXRvckFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgR2VuZXJhdG9yPgotaW5saW5lIHZvaWQgZ2VuZXJhdGUgKENvbnRhaW5lciYgY3RyLCBHZW5lcmF0b3IgZ2VuKQotewotICAgIGdlbmVyYXRlIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBnZW4pOwotfQotCi0vLy8gUmFuZG9tbHkgcGVybXV0ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGNvbnRhaW5lci4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgdm9pZCByYW5kb21fc2h1ZmZsZSAoQ29udGFpbmVyJiBjdHIpCi17Ci0gICAgcmFuZG9tX3NodWZmbGUgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCkpOwotfQotCi0vLy8gUmVtb3ZlX2NvcHkgY29waWVzIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBlcXVhbCB0byB2YWx1ZSBmcm9tIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgbGFzdCkgdG8gYSByYW5nZSBiZWdpbm5pbmcgYXQgcmVzdWx0LiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZQotLy8vIGVuZCBvZiB0aGUgcmVzdWx0aW5nIHJhbmdlLiBUaGlzIG9wZXJhdGlvbiBpcyBzdGFibGUsIG1lYW5pbmcgdGhhdCB0aGUKLS8vLyByZWxhdGl2ZSBvcmRlciBvZiB0aGUgZWxlbWVudHMgdGhhdCBhcmUgY29waWVkIGlzIHRoZSBzYW1lIGFzIGluIHRoZQotLy8vIHJhbmdlIFtmaXJzdCwgbGFzdCkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJlbW92ZV9jb3B5IChjb25zdCBDb250YWluZXImIGN0ciwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBjb25zdCBUJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKHJlbW92ZV9jb3B5IChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCByZXN1bHQsIHZhbHVlKSk7Ci19Ci0KLS8vLyBSZW1vdmVfY29weV9pZiBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSB0byBhIHJhbmdlCi0vLy8gYmVnaW5uaW5nIGF0IHJlc3VsdCwgZXhjZXB0IHRoYXQgZWxlbWVudHMgZm9yIHdoaWNoIHByZWQgaXMgdHJ1ZSBhcmUgbm90Ci0vLy8gY29waWVkLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBlbmQgb2YgdGhlIHJlc3VsdGluZyByYW5nZS4gVGhpcyBvcGVyYXRpb24KLS8vLyBpcyBzdGFibGUsIG1lYW5pbmcgdGhhdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGNvcGllZAotLy8vIGlzIHRoZSBzYW1lIGFzIGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJlbW92ZV9jb3B5X2lmIChjb25zdCBDb250YWluZXImIGN0ciwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBQcmVkaWNhdGUgcHJlZCkKLXsKLSAgICByZXR1cm4gKHJlbW92ZV9jb3B5X2lmIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCByZXN1bHQsIHByZWQpKTsKLX0KLQotLy8vIFJlbW92ZSByZW1vdmVzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvCi0vLy8gdmFsdWUuIFRoYXQgaXMsIHJlbW92ZSByZXR1cm5zIGFuIGl0ZXJhdG9yIG5ld19sYXN0IHN1Y2ggdGhhdCB0aGUgcmFuZ2UKLS8vLyBbZmlyc3QsIG5ld19sYXN0KSBjb250YWlucyBubyBlbGVtZW50cyBlcXVhbCB0byB2YWx1ZS4gUmVtb3ZlIGlzIHN0YWJsZSwKLS8vLyBtZWFuaW5nIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBlcXVhbCB0byB2YWx1ZSBpcwotLy8vIHVuY2hhbmdlZC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIHJlbW92ZSAoQ29udGFpbmVyJiBjdHIsIGNvbnN0IFQmIHZhbHVlKQotewotICAgIGN0ci5lcmFzZSAocmVtb3ZlX2NvcHkgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIGN0ci5iZWdpbigpLCB2YWx1ZSksIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBSZW1vdmUgcmVtb3ZlcyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgYW4gaXRlcmF0b3IKLS8vLyBpbiByYW5nZSBbcmZpcnN0LCBybGFzdCkuIFRoZSByYW5nZSBpcyBhc3N1bWVkIHRvIGJlIHNvcnRlZC4gVGhhdCBpcywgcmVtb3ZlCi0vLy8gcmV0dXJucyBhbiBpdGVyYXRvciBuZXdfbGFzdCBzdWNoIHRoYXQgdGhlIHJhbmdlIFtmaXJzdCwgbmV3X2xhc3QpIGNvbnRhaW5zCi0vLy8gbm8gZWxlbWVudHMgd2hvc2UgaXRlcmF0b3JzIGFyZSBpbiBbcmZpcnN0LCBybGFzdCkuIFJlbW92ZSBpcyBzdGFibGUsCi0vLy8gbWVhbmluZyB0aGF0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGFyZSBub3QgZXF1YWwgdG8gdmFsdWUgaXMKLS8vLyB1bmNoYW5nZWQuIFRoaXMgdmVyc2lvbiBvZiB0aGUgYWxnb3JpdGhtIGlzIGEgdVNUTCBleHRlbnNpb24uCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLWlubGluZSB2b2lkIHJlbW92ZSAoQ29udGFpbmVyJiBjdHIsIEZvcndhcmRJdGVyYXRvciByZmlyc3QsIEZvcndhcmRJdGVyYXRvciBybGFzdCkKLXsKLSAgICBjdHIuZXJhc2UgKHJlbW92ZV9jb3B5IChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBjdHIuYmVnaW4oKSwgcmZpcnN0LCBybGFzdCksIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBSZW1vdmVfaWYgcmVtb3ZlcyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGV2ZXJ5IGVsZW1lbnQgeCBzdWNoIHRoYXQKLS8vLyBwcmVkKHgpIGlzIHRydWUuIFRoYXQgaXMsIHJlbW92ZV9pZiByZXR1cm5zIGFuIGl0ZXJhdG9yIG5ld19sYXN0IHN1Y2ggdGhhdAotLy8vIHRoZSByYW5nZSBbZmlyc3QsIG5ld19sYXN0KSBjb250YWlucyBubyBlbGVtZW50cyBmb3Igd2hpY2ggcHJlZCBpcyB0cnVlLgotLy8vIFRoZSBpdGVyYXRvcnMgaW4gdGhlIHJhbmdlIFtuZXdfbGFzdCwgbGFzdCkgYXJlIGFsbCBzdGlsbCBkZXJlZmVyZW5jZWFibGUsCi0vLy8gYnV0IHRoZSBlbGVtZW50cyB0aGF0IHRoZXkgcG9pbnQgdG8gYXJlIHVuc3BlY2lmaWVkLiBSZW1vdmVfaWYgaXMgc3RhYmxlLAotLy8vIG1lYW5pbmcgdGhhdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBhcmUgbm90IHJlbW92ZWQgaXMKLS8vLyB1bmNoYW5nZWQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSB2b2lkIHJlbW92ZV9pZiAoQ29udGFpbmVyJiBjdHIsIFByZWRpY2F0ZSBwcmVkKQotewotICAgIGN0ci5lcmFzZSAocmVtb3ZlX2NvcHlfaWYgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIGN0ci5iZWdpbigpLCBwcmVkKSwgY3RyLmVuZCgpKTsKLX0KLQotLy8vIFVuaXF1ZV9jb3B5IGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIGEgcmFuZ2UKLS8vLyBiZWdpbm5pbmcgd2l0aCByZXN1bHQsIGV4Y2VwdCB0aGF0IGluIGEgY29uc2VjdXRpdmUgZ3JvdXAgb2YgZHVwbGljYXRlCi0vLy8gZWxlbWVudHMgb25seSB0aGUgZmlyc3Qgb25lIGlzIGNvcGllZC4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgZW5kIG9mCi0vLy8gdGhlIHJhbmdlIHRvIHdoaWNoIHRoZSBlbGVtZW50cyBhcmUgY29waWVkLiBUaGlzIGJlaGF2aW9yIGlzIHNpbWlsYXIKLS8vLyB0byB0aGUgVW5peCBmaWx0ZXIgdW5pcS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgdW5pcXVlX2NvcHkgKGNvbnN0IENvbnRhaW5lciYgY3RyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgcmV0dXJuICh1bmlxdWVfY29weSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcmVzdWx0KSk7Ci19Ci0KLS8vLyBFdmVyeSB0aW1lIGEgY29uc2VjdXRpdmUgZ3JvdXAgb2YgZHVwbGljYXRlIGVsZW1lbnRzIGFwcGVhcnMgaW4gdGhlIHJhbmdlCi0vLy8gW2ZpcnN0LCBsYXN0KSwgdGhlIGFsZ29yaXRobSB1bmlxdWUgcmVtb3ZlcyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50LgotLy8vIFRoYXQgaXMsIHVuaXF1ZSByZXR1cm5zIGFuIGl0ZXJhdG9yIG5ld19sYXN0IHN1Y2ggdGhhdCB0aGUgcmFuZ2UgW2ZpcnN0LAotLy8vIG5ld19sYXN0KSBjb250YWlucyBubyB0d28gY29uc2VjdXRpdmUgZWxlbWVudHMgdGhhdCBhcmUgZHVwbGljYXRlcy4KLS8vLyBUaGUgaXRlcmF0b3JzIGluIHRoZSByYW5nZSBbbmV3X2xhc3QsIGxhc3QpIGFyZSBhbGwgc3RpbGwgZGVyZWZlcmVuY2VhYmxlLAotLy8vIGJ1dCB0aGUgZWxlbWVudHMgdGhhdCB0aGV5IHBvaW50IHRvIGFyZSB1bnNwZWNpZmllZC4gVW5pcXVlIGlzIHN0YWJsZSwKLS8vLyBtZWFuaW5nIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCByZW1vdmVkIGlzCi0vLy8gdW5jaGFuZ2VkLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIHZvaWQgdW5pcXVlIChDb250YWluZXImIGN0cikKLXsKLSAgICBjdHIuZXJhc2UgKHVuaXF1ZV9jb3B5IChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBjdHIuYmVnaW4oKSksIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBFdmVyeSB0aW1lIGEgY29uc2VjdXRpdmUgZ3JvdXAgb2YgZHVwbGljYXRlIGVsZW1lbnRzIGFwcGVhcnMgaW4gdGhlIHJhbmdlCi0vLy8gW2ZpcnN0LCBsYXN0KSwgdGhlIGFsZ29yaXRobSB1bmlxdWUgcmVtb3ZlcyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50LgotLy8vIFRoYXQgaXMsIHVuaXF1ZSByZXR1cm5zIGFuIGl0ZXJhdG9yIG5ld19sYXN0IHN1Y2ggdGhhdCB0aGUgcmFuZ2UgW2ZpcnN0LAotLy8vIG5ld19sYXN0KSBjb250YWlucyBubyB0d28gY29uc2VjdXRpdmUgZWxlbWVudHMgdGhhdCBhcmUgZHVwbGljYXRlcy4KLS8vLyBUaGUgaXRlcmF0b3JzIGluIHRoZSByYW5nZSBbbmV3X2xhc3QsIGxhc3QpIGFyZSBhbGwgc3RpbGwgZGVyZWZlcmVuY2VhYmxlLAotLy8vIGJ1dCB0aGUgZWxlbWVudHMgdGhhdCB0aGV5IHBvaW50IHRvIGFyZSB1bnNwZWNpZmllZC4gVW5pcXVlIGlzIHN0YWJsZSwKLS8vLyBtZWFuaW5nIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCByZW1vdmVkIGlzCi0vLy8gdW5jaGFuZ2VkLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBCaW5hcnlQcmVkaWNhdGU+Ci1pbmxpbmUgdm9pZCB1bmlxdWUgKENvbnRhaW5lciYgY3RyLCBCaW5hcnlQcmVkaWNhdGUgYmluYXJ5X3ByZWQpCi17Ci0gICAgY3RyLmVyYXNlICh1bmlxdWVfY29weSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgY3RyLmJlZ2luKCksIGJpbmFyeV9wcmVkKSwgY3RyLmVuZCgpKTsKLX0KLQotLy8vIFJldmVyc2UgcmV2ZXJzZXMgYSByYW5nZS4KLS8vLyBUaGF0IGlzOiBmb3IgZXZlcnkgaSBzdWNoIHRoYXQgMCA8PSBpIDw9IChsYXN0IC0gZmlyc3QpIC8gMiksCi0vLy8gaXQgZXhjaGFuZ2VzICooZmlyc3QgKyBpKSBhbmQgKihsYXN0IC0gKGkgKyAxKSkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgdm9pZCByZXZlcnNlIChDb250YWluZXImIGN0cikKLXsKLSAgICByZXZlcnNlIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpKTsKLX0KLQotLy8vIEV4Y2hhbmdlcyByYW5nZXMgW2ZpcnN0LCBtaWRkbGUpIGFuZCBbbWlkZGxlLCBsYXN0KQotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIHZvaWQgcm90YXRlIChDb250YWluZXImIGN0ciwgb2ZmX3Qgb2Zmc2V0KQotewotICAgIGFzc2VydCAoc2l6ZV90KG9mZnNldCA+IDAgPyBvZmZzZXQgOiAtb2Zmc2V0KSA8IGN0ci5zaXplKCkpOwotICAgIGlmIChvZmZzZXQgPiAwKQotCXJvdGF0ZSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSAtIG9mZnNldCwgY3RyLmVuZCgpKTsKLSAgICBlbHNlCi0Jcm90YXRlIChjdHIuYmVnaW4oKSwgY3RyLmJlZ2luKCkgLSBvZmZzZXQsIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBmdXJ0aGVybW9zdCBpdGVyYXRvciBpIGluIFtmaXJzdCwgbGFzdCkgc3VjaCB0aGF0LAotLy8vIGZvciBldmVyeSBpdGVyYXRvciBqIGluIFtmaXJzdCwgaSksICpqIDwgdmFsdWUKLS8vLyBBc3N1bWVzIHRoZSByYW5nZSBpcyBzb3J0ZWQuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBMZXNzVGhhbkNvbXBhcmFibGU+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBsb3dlcl9ib3VuZCAoY29uc3QgQ29udGFpbmVyJiBjdHIsIGNvbnN0IExlc3NUaGFuQ29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChsb3dlcl9ib3VuZCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgdmFsdWUpKTsKLX0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIExlc3NUaGFuQ29tcGFyYWJsZT4KLWlubGluZSB0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yIGxvd2VyX2JvdW5kIChDb250YWluZXImIGN0ciwgY29uc3QgTGVzc1RoYW5Db21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKGxvd2VyX2JvdW5kIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCB2YWx1ZSkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZnVydGhlcm1vc3QgaXRlcmF0b3IgaSBpbiBbZmlyc3QsbGFzdCkgc3VjaCB0aGF0IGZvcgotLy8vIGV2ZXJ5IGl0ZXJhdG9yIGogaW4gW2ZpcnN0LGkpLCB2YWx1ZSA8ICpqIGlzIGZhbHNlLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgTGVzc1RoYW5Db21wYXJhYmxlPgotaW5saW5lIHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgdXBwZXJfYm91bmQgKGNvbnN0IENvbnRhaW5lciYgY3RyLCBjb25zdCBMZXNzVGhhbkNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIHJldHVybiAodXBwZXJfYm91bmQgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKSk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBMZXNzVGhhbkNvbXBhcmFibGU+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciB1cHBlcl9ib3VuZCAoQ29udGFpbmVyJiBjdHIsIGNvbnN0IExlc3NUaGFuQ29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuICh1cHBlcl9ib3VuZCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgdmFsdWUpKTsKLX0KLQotLy8vIFBlcmZvcm1zIGEgYmluYXJ5IHNlYXJjaCBmb3IgXHAgdmFsdWUuCi0vLy8gQXNzdW1lcyB0aGUgcmFuZ2UgaXMgc29ydGVkLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWlubGluZSB0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGJpbmFyeV9zZWFyY2ggKGNvbnN0IENvbnRhaW5lciYgY3RyLCBjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUmIHZhbHVlKQotewotICAgIHJldHVybiAoYmluYXJ5X3NlYXJjaCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgdmFsdWUpKTsKLX0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciBiaW5hcnlfc2VhcmNoIChDb250YWluZXImIGN0ciwgY29uc3QgdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKGJpbmFyeV9zZWFyY2ggKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHBhaXI8bG93ZXJfYm91bmQsdXBwZXJfYm91bmQ+Ci0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBMZXNzVGhhbkNvbXBhcmFibGU+Ci1pbmxpbmUgcGFpcjx0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yLHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3I+IGVxdWFsX3JhbmdlIChjb25zdCBDb250YWluZXImIGN0ciwgY29uc3QgTGVzc1RoYW5Db21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKGVxdWFsX3JhbmdlIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCB2YWx1ZSkpOwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgTGVzc1RoYW5Db21wYXJhYmxlPgotaW5saW5lIHBhaXI8dHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvcix0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yPiBlcXVhbF9yYW5nZSAoQ29udGFpbmVyJiBjdHIsIGNvbnN0IExlc3NUaGFuQ29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChlcXVhbF9yYW5nZSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgdmFsdWUpKTsKLX0KLQotLy8vIFNvcnRzIHRoZSBjb250YWluZXIKLS8vLyBcaW5ncm91cCBTb3J0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIHZvaWQgc29ydCAoQ29udGFpbmVyJiBjdHIpCi17Ci0gICAgc29ydCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBTb3J0cyB0aGUgY29udGFpbmVyCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgQ29tcGFyZT4KLWlubGluZSB2b2lkIHNvcnQgKENvbnRhaW5lciYgY3RyLCBDb21wYXJlIGNvbXApCi17Ci0gICAgc29ydCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgY29tcCk7Ci19Ci0KLS8vLyBTb3J0cyB0aGUgY29udGFpbmVyCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWlubGluZSB2b2lkIHN0YWJsZV9zb3J0IChDb250YWluZXImIGN0cikKLXsKLSAgICBzdGFibGVfc29ydCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBTb3J0cyB0aGUgY29udGFpbmVyCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgQ29tcGFyZT4KLWlubGluZSB2b2lkIHN0YWJsZV9zb3J0IChDb250YWluZXImIGN0ciwgQ29tcGFyZSBjb21wKQotewotICAgIHN0YWJsZV9zb3J0IChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBjb21wKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWN0cnN0cm0uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VjdHJzdHJtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZGRjZGQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWN0cnN0cm0uaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8vIFxmaWxlIHVjdHJzdHJtLmgKLS8vLwotLy8vIFxicmllZiBTZXJpYWxpemF0aW9uIHRlbXBsYXRlcyBmb3Igc3RhbmRhcmQgY29udGFpbmVycy4KLS8vLyBCZWNhdXNlIGNvbnRhaW5lcnMgYXJlIHRlbXBsYXRlcywgYSBzaW5nbGUgb3BlcmF0b3I+PiBpcyBpbXBvc3NpYmxlLgotLy8vIE1ha2luZyB2aXJ0dWFsIHJlYWQvd3JpdGUgaXMgYWxzbyBpbXBvc3NpYmxlIGJlY2F1c2Ugbm90IGFsbCBjb250YWluZXJzCi0vLy8gY29udGFpbiBzZXJpYWxpemFibGUgZWxlbWVudHMuIFRoZXJlZm9yZSwgdXNlIHRoZSBtYWNyb3MgaW4gdGhpcyBmaWxlLgotLy8vCi0KLSNpZm5kZWYgVUNUUlNUUk1fSF83NUIyQzNFQTQ5ODBERERDNkI2REZGRjc2N0EzQjdBQwotI2RlZmluZSBVQ1RSU1RSTV9IXzc1QjJDM0VBNDk4MEREREM2QjZERkZGNzY3QTNCN0FDCi0KLSNpbmNsdWRlICJtaXN0cmVhbS5oIgotI2luY2x1ZGUgInNvc3RyZWFtLmgiCi0jaW5jbHVkZSAidWlvc2Z1bmMuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIE1hY3JvcyBmb3IgZWFzaWx5IGRlY2xhcmluZyBhIGNvbnRhaW5lciBzdHJlYW1hYmxlLgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcYnJpZWYgRGVjbGFyZXMgY29udGFpbmVyIHRlbXBsYXRlIFxwIHR5cGUgc3RyZWFtYWJsZS4KLS8vLwotLy8vIFVzZSBURU1QTEFURV9UWVBFIGFuZCBURU1QTEFURV9ERUNMIG1hY3JvcyB0byBwYXNzIGluIHRlbXBsYXRlZAotLy8vIHR5cGUgd2l0aCBjb21tYXMgYW5kIHRoZSB0ZW1wbGF0ZSBkZWNsYXJhdGlvbi4KLS8vLwotI2RlZmluZSBTVERfVEVNUExBVEVfQ1RSX1NUUkVBTUFCTEUodHlwZSwgdGVtcGxhdGVfZGVjbCkJXAotICAgIHRlbXBsYXRlX2RlY2wJCQkJCQlcCi0gICAgaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCB0eXBlJiB2KQkJXAotICAgIHsgcmV0dXJuIChjb250YWluZXJfcmVhZCAoaXMsIHYpKTsgfSAJCQlcCi0gICAgdGVtcGxhdGVfZGVjbAkJCQkJCVwKLSAgICBpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGNvbnN0IHR5cGUmIHYpCVwKLSAgICB7IHJldHVybiAoY29udGFpbmVyX3dyaXRlIChvcywgdikpOyB9IAkJCVwKLSAgICB0ZW1wbGF0ZV9kZWNsCQkJCQkJXAotICAgIGlubGluZSBvc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgdHlwZSYgdikJXAotICAgIHsgcmV0dXJuIChjb250YWluZXJfdGV4dF93cml0ZSAob3MsIHYpKTsgfQkJCVwKLSAgICB0ZW1wbGF0ZV9kZWNsCQkJCQkJXAotICAgIGlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGNvbnN0IHR5cGUmIHYpCQlcCi0gICAgeyByZXR1cm4gKGNvbnRhaW5lcl9zdHJlYW1fc2l6ZSAodikpOyB9Ci0KLS8vLyBcYnJpZWYgRGVjbGFyZXMgbm9uLXJlc2l6YWJsZSBjb250YWluZXIgdGVtcGxhdGUgXHAgdHlwZSBzdHJlYW1hYmxlLgotI2RlZmluZSBTVERfVEVNUExBVEVfTlJfQ1RSX1NUUkVBTUFCTEUodHlwZSwgdGVtcGxhdGVfZGVjbCkJXAotICAgIHRlbXBsYXRlX2RlY2wJCQkJCQlcCi0gICAgaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCB0eXBlJiB2KQkJXAotICAgIHsgcmV0dXJuIChucl9jb250YWluZXJfcmVhZCAoaXMsIHYpKTsgfSAJCQlcCi0gICAgdGVtcGxhdGVfZGVjbAkJCQkJCVwKLSAgICBpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGNvbnN0IHR5cGUmIHYpCVwKLSAgICB7IHJldHVybiAobnJfY29udGFpbmVyX3dyaXRlIChvcywgdikpOyB9IAkJCVwKLSAgICB0ZW1wbGF0ZV9kZWNsCQkJCQkJXAotICAgIGlubGluZSBvc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgdHlwZSYgdikJXAotICAgIHsgcmV0dXJuIChjb250YWluZXJfdGV4dF93cml0ZSAob3MsIHYpKTsgfQkJCVwKLSAgICB0ZW1wbGF0ZV9kZWNsCQkJCQkJXAotICAgIGlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGNvbnN0IHR5cGUmIHYpCQlcCi0gICAgeyByZXR1cm4gKG5yX2NvbnRhaW5lcl9zdHJlYW1fc2l6ZSAodikpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRml4ZWQgc2l6ZSBjb250YWluZXIgc2VyaWFsaXphdGlvbi4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gUmVhZHMgZml4ZWQgc2l6ZSBjb250YWluZXIgXHAgdiBmcm9tIHN0cmVhbSBccCBpcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgaXN0cmVhbSYgbnJfY29udGFpbmVyX3JlYWQgKGlzdHJlYW0mIGlzLCBDb250YWluZXImIHYpCi17Ci0gICAgZm9yZWFjaCAodHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciwgaSwgdikKLQlpcyA+PiAqaTsKLSAgICByZXR1cm4gKGlzKTsKLX0KLQotLy8vIFdyaXRlcyBmaXhlZCBzaXplIGNvbnRhaW5lciBccCB2IGludG8gc3RyZWFtIFxwIG9zLgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWlubGluZSBvc3RyZWFtJiBucl9jb250YWluZXJfd3JpdGUgKG9zdHJlYW0mIG9zLCBjb25zdCBDb250YWluZXImIHYpCi17Ci0gICAgZm9yZWFjaCAodHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciwgaSwgdikKLQlvcyA8PCAqaTsKLSAgICByZXR1cm4gKG9zKTsKLX0KLQotLy8vIENvbXB1dGVzIHRoZSBzdHJlYW0gc2l6ZSBvZiBhIGZpeGVkIHNpemUgc3RhbmRhcmQgY29udGFpbmVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLXNpemVfdCBucl9jb250YWluZXJfc3RyZWFtX3NpemUgKGNvbnN0IENvbnRhaW5lciYgdikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgdmNpdGVyX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8dmNpdGVyX3Q+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgc2l6ZV90IHMgPSAwOwotICAgIGlmIChudW1lcmljX2xpbWl0czx2YWx1ZV90eXBlPjo6aXNfaW50ZWdyYWwpCi0JcyArPSB2LnNpemUoKSAqIHN0cmVhbV9zaXplX29mKHZhbHVlX3R5cGUoKSk7Ci0gICAgZWxzZQotCWZvcmVhY2ggKHZjaXRlcl90LCBpLCB2KQotCSAgICBzICs9IHN0cmVhbV9zaXplX29mKCppKTsKLSAgICByZXR1cm4gKHMpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFJlc2l6YWJsZSBjb250YWluZXIgc2VyaWFsaXphdGlvbi4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gUmVhZHMgY29udGFpbmVyIFxwIHYgZnJvbSBzdHJlYW0gXHAgaXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaXN0cmVhbSYgY29udGFpbmVyX3JlYWQgKGlzdHJlYW0mIGlzLCBDb250YWluZXImIHYpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OndyaXR0ZW5fc2l6ZV90eXBlIHdyaXR0ZW5fc2l6ZV90eXBlOwotICAgIHdyaXR0ZW5fc2l6ZV90eXBlIG47Ci0gICAgaXMgPj4gbjsKLSAgICBjb25zdCBzaXplX3QgZXhwZWN0ZWRTaXplID0gbiAqIHN0cmVhbV9zaXplX29mKHZhbHVlX3R5cGUoKSk7Ci0jaWYgIVBMQVRGT1JNX0FORFJPSUQKLSAgICBpcy52ZXJpZnlfcmVtYWluaW5nICgicmVhZCIsIHR5cGVpZCh2KS5uYW1lKCksIGV4cGVjdGVkU2l6ZSk7Ci0jZW5kaWYKLSAgICBpZiAoYWxpZ25vZih2YWx1ZV90eXBlKCkpID4gYWxpZ25vZihuKSkKLQlpcyA+PiBpb3M6OnRhbGlnbjx2YWx1ZV90eXBlPigpOwotICAgIHYucmVzaXplIChuKTsKLSAgICBucl9jb250YWluZXJfcmVhZCAoaXMsIHYpOwotICAgIGlzID4+IGlvczo6dGFsaWduPHdyaXR0ZW5fc2l6ZV90eXBlPigpOwotICAgIHJldHVybiAoaXMpOwotfQotCi0vLy8gV3JpdGVzIHRoZSB2ZWN0b3IgdG8gc3RyZWFtIFxwIG9zLgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLW9zdHJlYW0mIGNvbnRhaW5lcl93cml0ZSAob3N0cmVhbSYgb3MsIGNvbnN0IENvbnRhaW5lciYgdikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjp3cml0dGVuX3NpemVfdHlwZSB3cml0dGVuX3NpemVfdHlwZTsKLSAgICBjb25zdCB3cml0dGVuX3NpemVfdHlwZSBzeiAodi5zaXplKCkpOwotICAgIG9zIDw8IHN6OwotICAgIGlmIChhbGlnbm9mKHZhbHVlX3R5cGUoKSkgPiBhbGlnbm9mKHN6KSkKLQlvcyA8PCBpb3M6OnRhbGlnbjx2YWx1ZV90eXBlPigpOwotICAgIG5yX2NvbnRhaW5lcl93cml0ZSAob3MsIHYpOwotICAgIG9zIDw8IGlvczo6dGFsaWduPHdyaXR0ZW5fc2l6ZV90eXBlPigpOwotICAgIHJldHVybiAob3MpOwotfQotCi0vLy8gQ29tcHV0ZXMgdGhlIHN0cmVhbSBzaXplIG9mIGEgc3RhbmRhcmQgY29udGFpbmVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLXNpemVfdCBjb250YWluZXJfc3RyZWFtX3NpemUgKGNvbnN0IENvbnRhaW5lciYgdikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjp3cml0dGVuX3NpemVfdHlwZSB3cml0dGVuX3NpemVfdHlwZTsKLSAgICBjb25zdCB3cml0dGVuX3NpemVfdHlwZSBzeiAodi5zaXplKCkpOwotICAgIHNpemVfdCBzaXplU2l6ZSA9IHN0cmVhbV9zaXplX29mIChzeik7Ci0gICAgaWYgKGFsaWdub2YodmFsdWVfdHlwZSgpKSA+IGFsaWdub2Yoc3opKQotCXNpemVTaXplID0gQWxpZ24gKHNpemVTaXplLCBhbGlnbm9mKHZhbHVlX3R5cGUoKSkpOwotICAgIHJldHVybiAoQWxpZ24gKHNpemVTaXplICsgbnJfY29udGFpbmVyX3N0cmVhbV9zaXplICh2KSwgYWxpZ25vZihzeikpKTsKLX0KLQotLy8vIFxicmllZiBXcml0ZXMgZWxlbWVudCBccCB2IGludG8gc3RyZWFtIFxwIG9zIGFzIHRleHQuCi0vLy8gU3BlY2lhbGl6ZSB0byBjdXN0b20gcHJpbnQgZWxlbWVudHMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBvc3RyaW5nc3RyZWFtJiBjb250YWluZXJfZWxlbWVudF90ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgVCYgdikKLXsgcmV0dXJuIChvcyA8PCB2KTsgfQotCi0vLy8gV3JpdGVzIGNvbnRhaW5lciBccCB2IGludG8gc3RyZWFtIFxwIG9zIGFzIHRleHQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotb3N0cmluZ3N0cmVhbSYgY29udGFpbmVyX3RleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zLCBjb25zdCBDb250YWluZXImIHYpCi17Ci0gICAgdHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpID0gdi5iZWdpbigpOwotICAgIG9zIDw8ICcoJzsKLSAgICB3aGlsZSAoaSA8IHYuZW5kKCkpIHsKLQljb250YWluZXJfZWxlbWVudF90ZXh0X3dyaXRlIChvcywgKmkpOwotCWlmICgrK2kgPj0gdi5lbmQoKSkgYnJlYWs7Ci0Jb3MgPDwgJywnOwotICAgIH0KLSAgICBvcyA8PCAnKSc7Ci0gICAgcmV0dXJuIChvcyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91ZXhjZXB0aW9uLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VleGNlcHRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDBmMjE5Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VleGNlcHRpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzA1ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1ZXhjZXB0aW9uLmNjCi0vLwotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVleGNlcHRpb24uaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0jaW5jbHVkZSAibWlzdHJlYW0uaCIKLSNpbmNsdWRlICJzb3N0cmVhbS5oIgotI2luY2x1ZGUgInN0cm1zaXplLmgiCi0jaW5jbHVkZSAidXNwZWNpYWwuaCIKLSNpbmNsdWRlIDxlcnJuby5oPgotI2lmIF9fR05VQ19fID49IDMgJiYgIVBMQVRGT1JNX0FORFJPSUQKLSAgICAjaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxicmllZiBSZXR1cm5zIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZS4gZm10PSIlcyIKLS8vLyBPdmVybG9hZHMgb2YgdGhpcyBmdW5jdGlvbnMgbXVzdCBzZXQgTlVMTCBhcyB0aGUgZGVmYXVsdCBmbXQKLS8vLyBhcmd1bWVudCBhbmQgaGFuZGxlIHRoYXQgY2FzZSB0byBwcm92aWRlIGEgZGVmYXVsdCBmb3JtYXQgc3RyaW5nCi0vLy8gaW4gY2FzZSB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIGEgbG9jYWxpemVkIG9uZS4gVGhlIGZvcm1hdAotLy8vIHN0cmluZyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIGRvY3VtZW50YXRpb24gdG8gbm90IHJlcXVpcmUKLS8vLyB0cmFuc2xhdG9ycyB0byBsb29rIHRocm91Z2ggY29kZS4gQWxzbywgdGhpcyBmdW5jdGlvbiBtdXN0Ci0vLy8gbm90IHRocm93IGFueXRoaW5nLCBzbyB5b3UgbXVzdCB3cmFwIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzCi0vLy8gKGxpa2Ugc3RyaW5nOjpmb3JtYXQsIGZvciBpbnN0YW5jZSkgaW4gYSB0cnl7fWNhdGNoKC4uLil7fSBibG9jay4KLS8vLwotdm9pZCBleGNlcHRpb246OmluZm8gKHN0cmluZyYgbXNnYnVmLCBjb25zdCBjaGFyKikgY29uc3QgdGhyb3coKQotewotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICBtc2didWYuZm9ybWF0ICgiJXMiLCB3aGF0KCkpOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLSAgICB0cnkgeyBtc2didWYuZm9ybWF0ICgiJXMiLCB3aGF0KCkpOyB9IGNhdGNoICguLi4pIHsgLyogSWdub3JlIGFsbCBleGNlcHRpb25zICovIH0KLSNlbmRpZgotfQotCi0vLy8gUmVhZHMgdGhlIGV4Y2VwdGlvbiBmcm9tIHN0cmVhbSBccCBpcy4KLXZvaWQgZXhjZXB0aW9uOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICB1aW50MzJfdCBzdG1TaXplOwotICAgIHhmbXRfdCBmbXQ7Ci0gICAgaXMgPj4gZm10ID4+IHN0bVNpemUgPj4gbV9CYWNrdHJhY2U7Ci0gICAgYXNzZXJ0IChmbXQgPT0gbV9Gb3JtYXQgJiYgIlRoZSBzYXZlZCBleGNlcHRpb24gaXMgb2YgYSBkaWZmZXJlbnQgdHlwZS4iKTsKLSAgICBhc3NlcnQgKHN0bVNpemUgLSBleGNlcHRpb246OnN0cmVhbV9zaXplKCkgPD0gaXMucmVtYWluaW5nKCkgJiYgIlRoZSBzYXZlZCBleGNlcHRpb24gZGF0YSBpcyBjb3JydXB0LiIpOwotICAgIG1fRm9ybWF0ID0gZm10OwotfQotCi0vLy8gV3JpdGVzIHRoZSBleGNlcHRpb24gaW50byBzdHJlYW0gXHAgb3MgYXMgYW4gSUZGIGNodW5rLgotdm9pZCBleGNlcHRpb246OndyaXRlIChvc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICBvcyA8PCBtX0Zvcm1hdCA8PCB1aW50MzJfdChzdHJlYW1fc2l6ZSgpKSA8PCBtX0JhY2t0cmFjZTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgZXhjZXB0aW9uIGFzIHRleHQgaW50byBzdHJlYW0gXHAgb3MuCi12b2lkIGV4Y2VwdGlvbjo6dGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0jaWYgIVBMQVRGT1JNX0FORFJPSUQKLSAgICB0cnkgewotI2VuZGlmCi0Jc3RyaW5nIGJ1ZjsKLQlpbmZvIChidWYpOwotCW9zIDw8IGJ1ZjsKLSNpZiAhUExBVEZPUk1fQU5EUk9JRAotICAgIH0gY2F0Y2ggKC4uLikge30KLSNlbmRpZgotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIEluaXRpYWxpemVzIHRoZSBlbXB0eSBvYmplY3QuIFxwIG5CeXRlcyBpcyB0aGUgc2l6ZSBvZiB0aGUgYXR0ZW1wdGVkIGFsbG9jYXRpb24uCi1iYWRfYWxsb2M6OmJhZF9hbGxvYyAoc2l6ZV90IG5CeXRlcykgdGhyb3coKQotOiB1c3RsOjpleGNlcHRpb24oKSwKLSAgbV9uQnl0ZXNSZXF1ZXN0ZWQgKG5CeXRlcykKLXsKLSAgICBzZXRfZm9ybWF0ICh4Zm10X0JhZEFsbG9jKTsKLX0KLQotLy8vIFJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlLiBmbXQ9ImZhaWxlZCB0byBhbGxvY2F0ZSAlZCBieXRlcyIKLXZvaWQgYmFkX2FsbG9jOjppbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciogZm10KSBjb25zdCB0aHJvdygpCi17Ci0gICAgaWYgKCFmbXQpIGZtdCA9ICJmYWlsZWQgdG8gYWxsb2NhdGUgJWQgYnl0ZXMiOwotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICBtc2didWYuZm9ybWF0IChmbXQsIG1fbkJ5dGVzUmVxdWVzdGVkKTsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0gICAgdHJ5IHsgbXNnYnVmLmZvcm1hdCAoZm10LCBtX25CeXRlc1JlcXVlc3RlZCk7IH0gY2F0Y2ggKC4uLikge30KLSNlbmRpZgotfQotCi0vLy8gUmVhZHMgdGhlIGV4Y2VwdGlvbiBmcm9tIHN0cmVhbSBccCBpcy4KLXZvaWQgYmFkX2FsbG9jOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICB1c3RsOjpleGNlcHRpb246OnJlYWQgKGlzKTsKLSAgICBpcyA+PiBtX25CeXRlc1JlcXVlc3RlZDsKLX0KLQotLy8vIFdyaXRlcyB0aGUgZXhjZXB0aW9uIGludG8gc3RyZWFtIFxwIG9zLgotdm9pZCBiYWRfYWxsb2M6OndyaXRlIChvc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICB1c3RsOjpleGNlcHRpb246OndyaXRlIChvcyk7Ci0gICAgb3MgPDwgbV9uQnl0ZXNSZXF1ZXN0ZWQ7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB3cml0dGVuIGV4Y2VwdGlvbi4KLXNpemVfdCBiYWRfYWxsb2M6OnN0cmVhbV9zaXplICh2b2lkKSBjb25zdAotewotICAgIHJldHVybiAodXN0bDo6ZXhjZXB0aW9uOjpzdHJlYW1fc2l6ZSgpICsgc3RyZWFtX3NpemVfb2YobV9uQnl0ZXNSZXF1ZXN0ZWQpKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBJbml0aWFsaXplcyB0aGUgZW1wdHkgb2JqZWN0LiBccCBvcGVyYXRpb24gaXMgdGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJuZWQgdGhlIGVycm9yIGNvZGUuCi1saWJjX2V4Y2VwdGlvbjo6bGliY19leGNlcHRpb24gKGNvbnN0IGNoYXIqIG9wZXJhdGlvbikgdGhyb3coKQotOiBleGNlcHRpb24oKSwKLSAgbV9FcnJubyAoZXJybm8pLAotICBtX09wZXJhdGlvbiAob3BlcmF0aW9uKQotewotICAgIHNldF9mb3JtYXQgKHhmbXRfTGliY0V4Y2VwdGlvbik7Ci19Ci0KLS8vLyBDb3BpZXMgb2JqZWN0IFxwIHYuCi1saWJjX2V4Y2VwdGlvbjo6bGliY19leGNlcHRpb24gKGNvbnN0IGxpYmNfZXhjZXB0aW9uJiB2KSB0aHJvdygpCi06IGV4Y2VwdGlvbiAodiksCi0gIG1fRXJybm8gKHYubV9FcnJubyksCi0gIG1fT3BlcmF0aW9uICh2Lm1fT3BlcmF0aW9uKQotewotfQotCi0vLy8gQ29waWVzIG9iamVjdCBccCB2LgotY29uc3QgbGliY19leGNlcHRpb24mIGxpYmNfZXhjZXB0aW9uOjpvcGVyYXRvcj0gKGNvbnN0IGxpYmNfZXhjZXB0aW9uJiB2KQotewotICAgIG1fRXJybm8gPSB2Lm1fRXJybm87Ci0gICAgbV9PcGVyYXRpb24gPSB2Lm1fT3BlcmF0aW9uOwotICAgIHJldHVybiAoKnRoaXMpOwotfQotCi0vLy8gUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UuIGZtdD0iJXM6ICVtIgotdm9pZCBsaWJjX2V4Y2VwdGlvbjo6aW5mbyAoc3RyaW5nJiBtc2didWYsIGNvbnN0IGNoYXIqIGZtdCkgY29uc3QgdGhyb3coKQotewotICAgIGlmICghZm10KSBmbXQgPSAiJXM6ICVtIjsKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgbXNnYnVmLmZvcm1hdCAoZm10LCBtX09wZXJhdGlvbiwgbV9FcnJubywgbV9FcnJubyk7Ci0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotICAgIHRyeSB7IG1zZ2J1Zi5mb3JtYXQgKGZtdCwgbV9PcGVyYXRpb24sIG1fRXJybm8sIG1fRXJybm8pOyB9IGNhdGNoICguLi4pIHt9Ci0jZW5kaWYKLX0KLQotLy8vIFJlYWRzIHRoZSBleGNlcHRpb24gZnJvbSBzdHJlYW0gXHAgaXMuCi12b2lkIGxpYmNfZXhjZXB0aW9uOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICBleGNlcHRpb246OnJlYWQgKGlzKTsKLSAgICBpcyA+PiBtX0Vycm5vID4+IG1fT3BlcmF0aW9uOwotfQotCi0vLy8gV3JpdGVzIHRoZSBleGNlcHRpb24gaW50byBzdHJlYW0gXHAgb3MuCi12b2lkIGxpYmNfZXhjZXB0aW9uOjp3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgZXhjZXB0aW9uOjp3cml0ZSAob3MpOwotICAgIG9zIDw8IG1fRXJybm8gPDwgbV9PcGVyYXRpb247Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB3cml0dGVuIGV4Y2VwdGlvbi4KLXNpemVfdCBsaWJjX2V4Y2VwdGlvbjo6c3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChleGNlcHRpb246OnN0cmVhbV9zaXplKCkgKwotCSAgICBzdHJlYW1fc2l6ZV9vZihtX0Vycm5vKSArCi0JICAgIHN0cmVhbV9zaXplX29mKG1fT3BlcmF0aW9uKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gSW5pdGlhbGl6ZXMgdGhlIGVtcHR5IG9iamVjdC4gXHAgb3BlcmF0aW9uIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHJldHVybmVkIHRoZSBlcnJvciBjb2RlLgotZmlsZV9leGNlcHRpb246OmZpbGVfZXhjZXB0aW9uIChjb25zdCBjaGFyKiBvcGVyYXRpb24sIGNvbnN0IGNoYXIqIGZpbGVuYW1lKSB0aHJvdygpCi06IGxpYmNfZXhjZXB0aW9uIChvcGVyYXRpb24pCi17Ci0gICAgbWVtc2V0IChtX0ZpbGVuYW1lLCAwLCBWZWN0b3JTaXplKG1fRmlsZW5hbWUpKTsKLSAgICBzZXRfZm9ybWF0ICh4Zm10X0ZpbGVFeGNlcHRpb24pOwotICAgIGlmIChmaWxlbmFtZSkgewotCXN0cm5jcHkgKG1fRmlsZW5hbWUsIGZpbGVuYW1lLCBWZWN0b3JTaXplKG1fRmlsZW5hbWUpKTsKLQltX0ZpbGVuYW1lIFtWZWN0b3JTaXplKG1fRmlsZW5hbWUpIC0gMV0gPSAwOwotICAgIH0KLX0KLQotLy8vIFJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlLiBmbXQ9IiVzICVzOiAlbSIKLXZvaWQgZmlsZV9leGNlcHRpb246OmluZm8gKHN0cmluZyYgbXNnYnVmLCBjb25zdCBjaGFyKiBmbXQpIGNvbnN0IHRocm93KCkKLXsKLSAgICBpZiAoIWZtdCkgZm10ID0gIiVzICVzOiAlbSI7Ci0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgIG1zZ2J1Zi5mb3JtYXQgKGZtdCwgbV9PcGVyYXRpb24sIG1fRmlsZW5hbWUsIG1fRXJybm8sIG1fRXJybm8pOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLSAgICB0cnkgeyBtc2didWYuZm9ybWF0IChmbXQsIG1fT3BlcmF0aW9uLCBtX0ZpbGVuYW1lLCBtX0Vycm5vLCBtX0Vycm5vKTsgfSBjYXRjaCAoLi4uKSB7fQotI2VuZGlmCi19Ci0KLS8vLyBSZWFkcyB0aGUgZXhjZXB0aW9uIGZyb20gc3RyZWFtIFxwIGlzLgotdm9pZCBmaWxlX2V4Y2VwdGlvbjo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgbGliY19leGNlcHRpb246OnJlYWQgKGlzKTsKLSAgICBzdHJpbmcgZmlsZW5hbWU7Ci0gICAgaXMgPj4gZmlsZW5hbWU7Ci0gICAgaXMuYWxpZ24gKDgpOwotICAgIGZpbGVuYW1lLmNvcHl0byAoZmlsZW5hbWUsIFZlY3RvclNpemUobV9GaWxlbmFtZSkpOwotfQotCi0vLy8gV3JpdGVzIHRoZSBleGNlcHRpb24gaW50byBzdHJlYW0gXHAgb3MuCi12b2lkIGZpbGVfZXhjZXB0aW9uOjp3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgbGliY19leGNlcHRpb246OndyaXRlIChvcyk7Ci0gICAgb3MgPDwgc3RyaW5nIChtX0ZpbGVuYW1lKTsKLSAgICBvcy5hbGlnbiAoOCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB3cml0dGVuIGV4Y2VwdGlvbi4KLXNpemVfdCBmaWxlX2V4Y2VwdGlvbjo6c3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChsaWJjX2V4Y2VwdGlvbjo6c3RyZWFtX3NpemUoKSArCi0JICAgIEFsaWduIChzdHJlYW1fc2l6ZV9vZiAoc3RyaW5nIChtX0ZpbGVuYW1lKSksIDgpKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcYnJpZWYgVXNlcyBDKysgQUJJIGNhbGwsIGlmIGF2YWlsYWJsZSB0byBkZW1hbmdsZSB0aGUgY29udGVudHMgb2YgXHAgYnVmLgotLy8vCi0vLy8gVGhlIHJlc3VsdCBpcyB3cml0dGVuIHRvIFxwIGJ1Ziwgd2l0aCB0aGUgbWF4aW11bSBzaXplIG9mIFxwIGJ1ZlNpemUsIGFuZAotLy8vIGlzIHplcm8tdGVybWluYXRlZC4gVGhlIHJldHVybiB2YWx1ZSBpcyBccCBidWYuCi0vLy8KLWNvbnN0IGNoYXIqIGRlbWFuZ2xlX3R5cGVfbmFtZSAoY2hhciogYnVmLCBzaXplX3QgYnVmU2l6ZSwgc2l6ZV90KiBwZG1TaXplKQotewotICAgIHNpemVfdCBibCA9IHN0cmxlbiAoYnVmKTsKLSNpZiBfX0dOVUNfXyA+PSAzICYmICFQTEFURk9STV9BTkRST0lECi0gICAgY2hhciBkbW5hbWUgWzI1Nl07Ci0gICAgc2l6ZV90IHN6ID0gVmVjdG9yU2l6ZShkbW5hbWUpOwotICAgIGludCBiRmFpbGVkOwotICAgIGFiaTo6X19jeGFfZGVtYW5nbGUgKGJ1ZiwgZG1uYW1lLCAmc3osICZiRmFpbGVkKTsKLSAgICBpZiAoIWJGYWlsZWQpIHsKLQlibCA9IG1pbiAoc3RybGVuIChkbW5hbWUpLCBidWZTaXplIC0gMSk7Ci0JbWVtY3B5IChidWYsIGRtbmFtZSwgYmwpOwotCWJ1ZltibF0gPSAwOwotICAgIH0KLSNlbHNlCi0gICAgYmwgPSBtaW4gKGJsLCBidWZTaXplKTsKLSNlbmRpZgotICAgIGlmIChwZG1TaXplKQotCSpwZG1TaXplID0gYmw7Ci0gICAgcmV0dXJuIChidWYpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIEluaXRpYWxpemVzIHRoZSBlbXB0eSBvYmplY3QuIFxwIG9wZXJhdGlvbiBpcyB0aGUgZnVuY3Rpb24gdGhhdCByZXR1cm5lZCB0aGUgZXJyb3IgY29kZS4KLXN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uOjpzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbiAoY29uc3QgY2hhciogb3BlcmF0aW9uLCBjb25zdCBjaGFyKiB0eXBlLCB1b2ZmX3Qgb2Zmc2V0LCBzaXplX3QgZXhwZWN0ZWQsIHNpemVfdCByZW1haW5pbmcpIHRocm93KCkKLTogbGliY19leGNlcHRpb24gKG9wZXJhdGlvbiksCi0gIG1fVHlwZU5hbWUgKHR5cGUpLAotICBtX09mZnNldCAob2Zmc2V0KSwKLSAgbV9FeHBlY3RlZCAoZXhwZWN0ZWQpLAotICBtX1JlbWFpbmluZyAocmVtYWluaW5nKQotewotICAgIHNldF9mb3JtYXQgKHhmbXRfU3RyZWFtQm91bmRzRXhjZXB0aW9uKTsKLX0KLQotLy8vIFJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlLiBmbXQ9IiVzIHN0cmVhbSAlczogQCV1OiBleHBlY3RlZCAldSwgYXZhaWxhYmxlICV1IjsKLXZvaWQgc3RyZWFtX2JvdW5kc19leGNlcHRpb246OmluZm8gKHN0cmluZyYgbXNnYnVmLCBjb25zdCBjaGFyKiBmbXQpIGNvbnN0IHRocm93KCkKLXsKLSAgICBjaGFyIHR5cGVOYW1lIFsyNTZdOwotICAgIHN0cm5jcHkgKHR5cGVOYW1lLCBtX1R5cGVOYW1lLCBWZWN0b3JTaXplKHR5cGVOYW1lKSk7Ci0gICAgdHlwZU5hbWVbVmVjdG9yU2l6ZSh0eXBlTmFtZSktMV0gPSAwOwotICAgIGlmICghZm10KSBmbXQgPSAiJXMgc3RyZWFtICVzOiBAMHglWDogbmVlZCAldSBieXRlcywgaGF2ZSAldSI7Ci0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgIG1zZ2J1Zi5mb3JtYXQgKGZtdCwgZGVtYW5nbGVfdHlwZV9uYW1lIChWZWN0b3JCbG9jayh0eXBlTmFtZSkpLCBtX09wZXJhdGlvbiwgbV9PZmZzZXQsIG1fRXhwZWN0ZWQsIG1fUmVtYWluaW5nKTsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0gICAgdHJ5IHsgbXNnYnVmLmZvcm1hdCAoZm10LCBkZW1hbmdsZV90eXBlX25hbWUgKFZlY3RvckJsb2NrKHR5cGVOYW1lKSksIG1fT3BlcmF0aW9uLCBtX09mZnNldCwgbV9FeHBlY3RlZCwgbV9SZW1haW5pbmcpOyB9IGNhdGNoICguLi4pIHt9Ci0jZW5kaWYKLX0KLQotLy8vIFJlYWRzIHRoZSBleGNlcHRpb24gZnJvbSBzdHJlYW0gXHAgaXMuCi12b2lkIHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICBsaWJjX2V4Y2VwdGlvbjo6cmVhZCAoaXMpOwotICAgIGlzID4+IG1fVHlwZU5hbWUgPj4gbV9PZmZzZXQgPj4gbV9FeHBlY3RlZCA+PiBtX1JlbWFpbmluZzsKLX0KLQotLy8vIFdyaXRlcyB0aGUgZXhjZXB0aW9uIGludG8gc3RyZWFtIFxwIG9zLgotdm9pZCBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbjo6d3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdAotewotICAgIGxpYmNfZXhjZXB0aW9uOjp3cml0ZSAob3MpOwotICAgIG9zIDw8IG1fVHlwZU5hbWUgPDwgbV9PZmZzZXQgPDwgbV9FeHBlY3RlZCA8PCBtX1JlbWFpbmluZzsKLX0KLQotLy8vIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHdyaXR0ZW4gZXhjZXB0aW9uLgotc2l6ZV90IHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uOjpzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gKGxpYmNfZXhjZXB0aW9uOjpzdHJlYW1fc2l6ZSgpICsKLQkgICAgc3RyZWFtX3NpemVfb2YobV9UeXBlTmFtZSkgKwotCSAgICBzdHJlYW1fc2l6ZV9vZihtX09mZnNldCkgKwotCSAgICBzdHJlYW1fc2l6ZV9vZihtX0V4cGVjdGVkKSArCi0JICAgIHN0cmVhbV9zaXplX29mKG1fUmVtYWluaW5nKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWV4Y2VwdGlvbi5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWV4Y2VwdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTlhMTc5Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VleGNlcHRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWV4Y2VwdGlvbi5oCi0vLwotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHN0dWZmIGZyb20gXDxleGNlcHRpb25cPi4KLS8vIFRoZSBzdGFuZGFyZCBDKysgaGVhZGVycyBhcmUgZHVwbGljYXRlZCBiZWNhdXNlIHVTVEwgaXMgaW50ZW5kZWQKLS8vIHRvIGNvbXBsZXRlbHkgcmVwbGFjZSBhbGwgQysrIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zLgotLy8KLQotI2lmbmRlZiBVRVhDRVBUSU9OX0hfMThERTNFRjU1QzRGMDA2NzMyNjhGMEQ2NjU0NkFGNUQKLSNkZWZpbmUgVUVYQ0VQVElPTl9IXzE4REUzRUY1NUM0RjAwNjczMjY4RjBENjY1NDZBRjVECi0KLSNpbmNsdWRlICJ1dHlwZXMuaCIKLSNpZm5kZWYgV0lUSE9VVF9MSUJTVERDUFAKLSAgICAjaW5jbHVkZSA8ZXhjZXB0aW9uPgotICAgICNpbmNsdWRlIDxuZXc+Ci0jZW5kaWYKLSNpbmNsdWRlICJia3RyYWNlLmgiCi0KLSNpZmRlZiBXSVRIT1VUX0xJQlNURENQUAkvLyBUaGlzIGNvZGUgaXMgY29waWVkIGZyb20gPGV4Y2VwdGlvbj4KLW5hbWVzcGFjZSBzdGQgewotLy8vIElmIHlvdSB3cml0ZSBhIHJlcGxhY2VtZW50IHRlcm1pbmF0ZSBoYW5kbGVyLCBpdCBtdXN0IGJlIG9mIHRoaXMgdHlwZS4KLXR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAodm9pZCk7Ci0vLy8gSWYgeW91IHdyaXRlIGEgcmVwbGFjZW1lbnQgdW5leHBlY3RlZCBoYW5kbGVyLCBpdCBtdXN0IGJlIG9mIHRoaXMgdHlwZS4KLXR5cGVkZWYgdm9pZCAoKnVuZXhwZWN0ZWRfaGFuZGxlcikgKHZvaWQpOwotLy8vIFRha2VzIGEgbmV3IGhhbmRsZXIgZnVuY3Rpb24gYXMgYW4gYXJndW1lbnQsIHJldHVybnMgdGhlIG9sZCBmdW5jdGlvbi4KLXRlcm1pbmF0ZV9oYW5kbGVyIHNldF90ZXJtaW5hdGUgKHRlcm1pbmF0ZV9oYW5kbGVyIHBIYW5kbGVyKSB0aHJvdygpOwotLy8vIFRoZSBydW50aW1lIHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIGlmIGV4Y2VwdGlvbiBoYW5kbGluZyBtdXN0IGJlCi0vLy8gYWJhbmRvbmVkIGZvciBhbnkgcmVhc29uLiAgSXQgY2FuIGFsc28gYmUgY2FsbGVkIGJ5IHRoZSB1c2VyLgotdm9pZCB0ZXJtaW5hdGUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKLS8vLyBUYWtlcyBhIG5ldyBoYW5kbGVyIGZ1bmN0aW9uIGFzIGFuIGFyZ3VtZW50LCByZXR1cm5zIHRoZSBvbGQgZnVuY3Rpb24uCi11bmV4cGVjdGVkX2hhbmRsZXIgc2V0X3VuZXhwZWN0ZWQgKHVuZXhwZWN0ZWRfaGFuZGxlciBwSGFuZGxlcikgdGhyb3coKTsKLS8vLyBUaGUgcnVudGltZSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIHdoaWNoCi0vLy8gdmlvbGF0ZXMgdGhlIGZ1bmN0aW9uJ3MgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24uCi12b2lkIHVuZXhwZWN0ZWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKLS8vLyBSZXR1cm5zIHRydWUgd2hlbiB0aGUgY2F1Z2h0IGV4Y2VwdGlvbiB2aW9sYXRlcyB0aGUgdGhyb3cgc3BlY2lmaWNhdGlvbi4KLWJvb2wgdW5jYXVnaHRfZXhjZXB0aW9uKCkgdGhyb3coKTsKLX0gLy8gbmFtZXNwYWNlIHN0ZAotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotY2xhc3Mgc3RyaW5nOwotCi10eXBlZGVmIHVpbnQzMl90CXhmbXRfdDsKLQotZW51bSB7Ci0gICAgeGZtdF9FeGNlcHRpb24sCi0gICAgeGZtdF9CYWRBbGxvYywKLSAgICB4Zm10X0xpYmNFeGNlcHRpb24JCT0gMTIsCi0gICAgeGZtdF9GaWxlRXhjZXB0aW9uCQk9IDEzLAotICAgIHhmbXRfU3RyZWFtQm91bmRzRXhjZXB0aW9uCT0gMTQKLX07Ci0KLS8vLyBcY2xhc3MgZXhjZXB0aW9uIHVleGNlcHRpb24uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgQmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucywgZXF1aXZhbGVudCB0byBzdGQ6OmV4Y2VwdGlvbi4KLS8vLwotI2lmZGVmIFdJVEhPVVRfTElCU1REQ1BQCi1jbGFzcyBleGNlcHRpb24gewotI2Vsc2UKLWNsYXNzIGV4Y2VwdGlvbiA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbiB7Ci0jZW5kaWYKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IENCYWNrdHJhY2UmIHJjYmt0cmFjZV90OwotcHVibGljOgotICAgIGlubGluZQkJZXhjZXB0aW9uICh2b2lkKSB0aHJvdygpIDogbV9Gb3JtYXQgKHhmbXRfRXhjZXB0aW9uKSB7fQotICAgIGlubGluZSB2aXJ0dWFsICAgICB+ZXhjZXB0aW9uICh2b2lkKSB0aHJvdygpIHt9Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoImVycm9yIik7IH0KLSAgICB2aXJ0dWFsIHZvaWQJaW5mbyAoc3RyaW5nJiBtc2didWYsIGNvbnN0IGNoYXIqIGZtdCA9IE5VTEwpIGNvbnN0IHRocm93KCk7Ci0gICAgdmlydHVhbCB2b2lkCXJlYWQgKGlzdHJlYW0mIGlzKTsKLSAgICB2aXJ0dWFsIHZvaWQJd3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdDsKLSAgICB2b2lkCQl0ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgaW5saW5lIHZpcnR1YWwgc2l6ZV90IHN0cmVhbV9zaXplICh2b2lkKSBjb25zdCB7IHJldHVybiAoc2l6ZW9mKG1fRm9ybWF0KSArIHNpemVvZih1aW50MzJfdCkgKyBtX0JhY2t0cmFjZS5zdHJlYW1fc2l6ZSgpKTsgfQotICAgIC8vLyBGb3JtYXQgb2YgdGhlIGV4Y2VwdGlvbiBpcyB1c2VkIHRvIGxvb2t1cCBleGNlcHRpb246OmluZm8gZm9ybWF0IHN0cmluZy4KLSAgICAvLy8gQW5vdGhlciBjb21tb24gdXNlIGlzIHRoZSBpbnN0YW50aWF0aW9uIG9mIHNlcmlhbGl6ZWQgZXhjZXB0aW9ucywgdXNlZAotICAgIC8vLyBieSB0aGUgZXJyb3IgaGFuZGxlciBub2RlIGNoYWluIHRvIHRyb3VibGVzaG9vdCBzcGVjaWZpYyBlcnJvcnMuCi0gICAgaW5saW5lIHhmbXRfdAlmb3JtYXQgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtX0Zvcm1hdCk7IH0KLSAgICBpbmxpbmUgcmNia3RyYWNlX3QJYmFja3RyYWNlICh2b2lkKSBjb25zdAl7IHJldHVybiAobV9CYWNrdHJhY2UpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgaW5saW5lIHZvaWQJCXNldF9mb3JtYXQgKHhmbXRfdCBmbXQpIHsgbV9Gb3JtYXQgPSBmbXQ7IH0KLXByaXZhdGU6Ci0gICAgQ0JhY2t0cmFjZQkJbV9CYWNrdHJhY2U7CS8vLzwgQmFja3RyYWNlIG9mIHRoZSB0aHJvdyBwb2ludC4KLSAgICB4Zm10X3QJCW1fRm9ybWF0OwkvLy88IEZvcm1hdCBvZiB0aGUgZXhjZXB0aW9uJ3MgZGF0YS4KLX07Ci0KLS8vLyBcY2xhc3MgYmFkX2Nhc3QgdWV4Y2VwdGlvbi5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBUaHJvd24gdG8gaW5kaWNhdGUgYSBiYWQgZHluYW1pY19jYXN0IHVzYWdlLgotLy8vCi1jbGFzcyBiYWRfY2FzdCA6IHB1YmxpYyBleGNlcHRpb24gewotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJYmFkX2Nhc3QgKHZvaWQpIHRocm93KCkgOiBleGNlcHRpb24oKSB7fQotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJiYWQgY2FzdCIpOyB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxjbGFzcyBiYWRfYWxsb2MgdWV4Y2VwdGlvbi5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBFeGNlcHRpb24gdGhyb3duIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgYnkgbWVtYmxvY2s6OnJlc2VydmUuCi0vLy8KLSNpZmRlZiBXSVRIT1VUX0xJQlNURENQUAotY2xhc3MgYmFkX2FsbG9jIDogcHVibGljIGV4Y2VwdGlvbiB7Ci0jZWxzZQotY2xhc3MgYmFkX2FsbG9jIDogcHVibGljIHN0ZDo6YmFkX2FsbG9jLCBwdWJsaWMgZXhjZXB0aW9uIHsKLSNlbmRpZgotcHVibGljOgotICAgIGV4cGxpY2l0CQliYWRfYWxsb2MgKHNpemVfdCBuQnl0ZXMgPSAwKSB0aHJvdygpOwotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiKTsgfQotICAgIHZpcnR1YWwgdm9pZAlpbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciogZm10ID0gTlVMTCkgY29uc3QgdGhyb3coKTsKLSAgICB2aXJ0dWFsIHZvaWQJcmVhZCAoaXN0cmVhbSYgaXMpOwotICAgIHZpcnR1YWwgdm9pZAl3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIHZpcnR1YWwgc2l6ZV90CXN0cmVhbV9zaXplICh2b2lkKSBjb25zdDsKLXByb3RlY3RlZDoKLSAgICBzaXplX3QJCW1fbkJ5dGVzUmVxdWVzdGVkOwkvLy88IE51bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQgYnkgdGhlIGZhaWxlZCBhbGxvY2F0aW9uLgotfTsKLQotLy8vIFxjbGFzcyBsaWJjX2V4Y2VwdGlvbiB1ZXhjZXB0aW9uLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIFRocm93biB3aGVuIGEgbGliYyBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLgotLy8vCi0vLy8gQ29udGFpbnMgYW4gZXJybm8gYW5kIGRlc2NyaXB0aW9uLiBUaGlzIGlzIGEgdVNUTCBleHRlbnNpb24uCi0vLy8KLWNsYXNzIGxpYmNfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQJCWxpYmNfZXhjZXB0aW9uIChjb25zdCBjaGFyKiBvcGVyYXRpb24pIHRocm93KCk7Ci0JCQlsaWJjX2V4Y2VwdGlvbiAoY29uc3QgbGliY19leGNlcHRpb24mIHYpIHRocm93KCk7Ci0gICAgY29uc3QgbGliY19leGNlcHRpb24mIG9wZXJhdG9yPSAoY29uc3QgbGliY19leGNlcHRpb24mIHYpOwotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJsaWJjIGZ1bmN0aW9uIGZhaWxlZCIpOyB9Ci0gICAgdmlydHVhbCB2b2lkCWluZm8gKHN0cmluZyYgbXNnYnVmLCBjb25zdCBjaGFyKiBmbXQgPSBOVUxMKSBjb25zdCB0aHJvdygpOwotICAgIHZpcnR1YWwgdm9pZAlyZWFkIChpc3RyZWFtJiBpcyk7Ci0gICAgdmlydHVhbCB2b2lkCXdyaXRlIChvc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgdmlydHVhbCBzaXplX3QJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0OwotcHJvdGVjdGVkOgotICAgIGludHB0cl90CQltX0Vycm5vOwkJLy8vPCBFcnJvciBjb2RlIHJldHVybmVkIGJ5IHRoZSBmYWlsZWQgb3BlcmF0aW9uLgotICAgIGNvbnN0IGNoYXIqCQltX09wZXJhdGlvbjsJCS8vLzwgTmFtZSBvZiB0aGUgZmFpbGVkIG9wZXJhdGlvbi4KLX07Ci0KLS8vLyBcY2xhc3MgZmlsZV9leGNlcHRpb24gdWV4Y2VwdGlvbi5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBGaWxlLXJlbGF0ZWQgZXhjZXB0aW9ucy4KLS8vLwotLy8vIENvbnRhaW5zIHRoZSBmaWxlIG5hbWUuIFRoaXMgaXMgYSB1U1RMIGV4dGVuc2lvbi4KLS8vLwotY2xhc3MgZmlsZV9leGNlcHRpb24gOiBwdWJsaWMgbGliY19leGNlcHRpb24gewotcHVibGljOgotCQkJZmlsZV9leGNlcHRpb24gKGNvbnN0IGNoYXIqIG9wZXJhdGlvbiwgY29uc3QgY2hhciogZmlsZW5hbWUpIHRocm93KCk7Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoImZpbGUgZXJyb3IiKTsgfQotICAgIHZpcnR1YWwgdm9pZAlpbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciogZm10ID0gTlVMTCkgY29uc3QgdGhyb3coKTsKLSAgICB2aXJ0dWFsIHZvaWQJcmVhZCAoaXN0cmVhbSYgaXMpOwotICAgIHZpcnR1YWwgdm9pZAl3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIHZpcnR1YWwgc2l6ZV90CXN0cmVhbV9zaXplICh2b2lkKSBjb25zdDsKLXByb3RlY3RlZDoKLSAgICBjaGFyCQltX0ZpbGVuYW1lIFtQQVRIX01BWF07CS8vLzwgTmFtZSBvZiB0aGUgZmlsZSBjYXVzaW5nIHRoZSBlcnJvci4KLX07Ci0KLS8vLyBcY2xhc3Mgc3RyZWFtX2JvdW5kc19leGNlcHRpb24gdWV4Y2VwdGlvbi5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBTdHJlYW0gYm91bmRzIGNoZWNraW5nLgotLy8vCi0vLy8gT25seSB0aHJvd24gaW4gZGVidWcgYnVpbGRzIHVubGVzcyB5b3Ugc2F5IG90aGVyd2lzZSBpbiBjb25maWcuaAotLy8vIFRoaXMgaXMgYSB1U1RMIGV4dGVuc2lvbi4KLS8vLwotY2xhc3Mgc3RyZWFtX2JvdW5kc19leGNlcHRpb24gOiBwdWJsaWMgbGliY19leGNlcHRpb24gewotcHVibGljOgotCQkJc3RyZWFtX2JvdW5kc19leGNlcHRpb24gKGNvbnN0IGNoYXIqIG9wZXJhdGlvbiwgY29uc3QgY2hhciogdHlwZSwgdW9mZl90IG9mZnNldCwgc2l6ZV90IGV4cGVjdGVkLCBzaXplX3QgcmVtYWluaW5nKSB0aHJvdygpOwotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJzdHJlYW0gYm91bmRzIGV4Y2VwdGlvbiIpOyB9Ci0gICAgdmlydHVhbCB2b2lkCWluZm8gKHN0cmluZyYgbXNnYnVmLCBjb25zdCBjaGFyKiBmbXQgPSBOVUxMKSBjb25zdCB0aHJvdygpOwotICAgIHZpcnR1YWwgdm9pZAlyZWFkIChpc3RyZWFtJiBpcyk7Ci0gICAgdmlydHVhbCB2b2lkCXdyaXRlIChvc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgdmlydHVhbCBzaXplX3QJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0OwotcHJvdGVjdGVkOgotICAgIGNvbnN0IGNoYXIqCQltX1R5cGVOYW1lOwotICAgIHVvZmZfdAkJbV9PZmZzZXQ7Ci0gICAgc2l6ZV90CQltX0V4cGVjdGVkOwotICAgIHNpemVfdAkJbV9SZW1haW5pbmc7Ci19OwotCi1jb25zdCBjaGFyKiBkZW1hbmdsZV90eXBlX25hbWUgKGNoYXIqIGJ1Ziwgc2l6ZV90IGJ1ZlNpemUsIHNpemVfdCogcGRtU2l6ZSA9IE5VTEwpOwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91ZnVuY3Rpb24uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VmdW5jdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2RjNWUyLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VmdW5jdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNDgwICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBcZmlsZSB1ZnVuY3Rpb24uaAotLy8KLS8vIFxicmllZiBJbXBsZW1lbnRzIFNUTCBzdGFuZGFyZCBmdW5jdG9ycy4KLS8vCi0vLyBTZWUgU1RMIHNwZWNpZmljYXRpb24gYW5kIGJ2dHMgZm9yIHVzYWdlIG9mIHRoZXNlLiBUaGUgb25seQotLy8gZXh0ZW5zaW9uIGlzIHRoZSBtZW1fdmFyIGZ1bmN0b3JzIGZvciBtZW1iZXIgdmFyaWFibGUgYWNjZXNzOgotLy8gXGNvZGUKLS8vCWYgPSBmaW5kX2lmIChjdHIsIG1lbV92YXJfZXF1YWxfdG8oJk15Q2xhc3M6Om1fVmFyLCBtYXRjaFZhcikpOwotLy8JZiA9IGZpbmRfaWYgKGN0ciwgbWVtX3Zhcl9sZXNzKCZNeUNsYXNzOjptX1ZhciwgbWF0Y2hWYXIpKTsKLS8vIFxlbmRjb2RlCi0vLyBUaGVyZSBhcmUgYSBjb3VwbGUgb2Ygb3RoZXJzIGJ1dCB0aGUgc3ludGF4IGlzIG11Y2ggaGFyZGVyIHRvIGdyYXNwLgotLy8gU2VlIGJ2dDEwLmNjIGZvciBtb3JlIGV4YW1wbGVzLgotLy8KLQotI2lmbmRlZiBVRlVOQ1RJT05fSF8yMjFBQkE4NTUxODAxNzk5MjYzQzkyNzIzNEMwODVGMwotI2RlZmluZSBVRlVOQ1RJT05fSF8yMjFBQkE4NTUxODAxNzk5MjYzQzkyNzIzNEMwODVGMwotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gU3RhbmRhcmQgZnVuY3RvcnMKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9uIGFic3RyYWN0IGludGVyZmFjZS4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdD4KLXN0cnVjdCB2b2lkX2Z1bmN0aW9uIHsKLSAgICB0eXBlZGVmIFJlc3VsdAlyZXN1bHRfdHlwZTsKLX07Ci0KLS8vLyBcYnJpZWYgXHAgUmVzdWx0IGYgKFxwIEFyZykgZnVuY3Rpb24gYWJzdHJhY3QgaW50ZXJmYWNlLgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnLCB0eXBlbmFtZSBSZXN1bHQ+Ci1zdHJ1Y3QgdW5hcnlfZnVuY3Rpb24gewotICAgIHR5cGVkZWYgQXJnCQlhcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgUmVzdWx0CXJlc3VsdF90eXBlOwotfTsKLQotLy8vIFxicmllZiBccCBSZXN1bHQgZiAoXHAgQXJnMSwgXHAgQXJnMikgZnVuY3Rpb24gYWJzdHJhY3QgaW50ZXJmYWNlLgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUgUmVzdWx0Pgotc3RydWN0IGJpbmFyeV9mdW5jdGlvbiB7Ci0gICAgdHlwZWRlZiBBcmcxCWZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gICAgdHlwZWRlZiBBcmcyCXNlY29uZF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgUmVzdWx0CXJlc3VsdF90eXBlOwotfTsKLQotI2lmbmRlZiBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKLQotI2RlZmluZSBTVERfQklOQVJZX0ZVTkNUT1IobmFtZSwgcnYsIGZ1bmMpCVwKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgbmFtZSA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248VCxULHJ2PiBcCi17IGlubGluZSBydiBvcGVyYXRvcigpKGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIpIGNvbnN0IHsgcmV0dXJuIGZ1bmM7IH0gfTsKLSNkZWZpbmUgU1REX1VOQVJZX0ZVTkNUT1IobmFtZSwgcnYsIGZ1bmMpCVwKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgbmFtZSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxULHJ2PiBcCi17IGlubGluZSBydiBvcGVyYXRvcigpKGNvbnN0IFQmIGEpIGNvbnN0IHsgcmV0dXJuIGZ1bmM7IH0gfTsKLSNkZWZpbmUgU1REX0NPTlZFUlNJT05fRlVOQ1RPUihuYW1lLCBmdW5jKQlcCi10ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgRD4gc3RydWN0IG5hbWUgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248UyxEPiBcCi17IGlubGluZSBEIG9wZXJhdG9yKCkoY29uc3QgUyYgYSkgY29uc3QgeyByZXR1cm4gZnVuYzsgfSB9OwotCi1TVERfQklOQVJZX0ZVTkNUT1IgKHBsdXMsCQlULAkoYSArIGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChtaW51cywJCVQsCShhIC0gYikpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGRpdmlkZXMsCQlULAkoYSAvIGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChtb2R1bHVzLAkJVCwJKGEgJSBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAobXVsdGlwbGllcywJCVQsCShhICogYikpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGxvZ2ljYWxfYW5kLAlULAkoYSAmJiBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAobG9naWNhbF9vciwJCVQsCShhIHx8IGIpKQotU1REX1VOQVJZX0ZVTkNUT1IgIChsb2dpY2FsX25vdCwJVCwJKCFhKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAoYml0d2lzZV9vciwJCVQsCShhIHwgYikpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGJpdHdpc2VfYW5kLAlULAkoYSAmIGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChiaXR3aXNlX3hvciwJVCwJKGEgXiBiKSkKLVNURF9VTkFSWV9GVU5DVE9SICAoYml0d2lzZV9ub3QsCVQsCSh+YSkpCi1TVERfVU5BUllfRlVOQ1RPUiAgKG5lZ2F0ZSwJCVQsCSgtYSkpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGVxdWFsX3RvLAkJYm9vbCwJKGEgPT0gYikpCi1TVERfQklOQVJZX0ZVTkNUT1IgKG5vdF9lcXVhbF90bywJYm9vbCwJKCEoYSA9PSBiKSkpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGdyZWF0ZXIsCQlib29sLAkoYiA8IGEpKQotU1REX0JJTkFSWV9GVU5DVE9SIChsZXNzLAkJYm9vbCwJKGEgPCBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAoZ3JlYXRlcl9lcXVhbCwJYm9vbCwJKCEoYSA8IGIpKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAobGVzc19lcXVhbCwJCWJvb2wsCSghKGIgPCBhKSkpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGNvbXBhcmUsCQlpbnQsCShhIDwgYiA/IC0xIDogKGIgPCBhKSkpCi1TVERfVU5BUllfRlVOQ1RPUiAgKGlkZW50aXR5LAkJVCwJKGEpKQotCi0jZW5kaWYgLy8gRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLS8vLyBcYnJpZWYgU2VsZWN0cyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQuCi0vLy8gXGluZ3JvdXAgRnVuY3Rvck9iamVjdHMKLXRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0cnVjdCBwcm9qZWN0MXN0CTogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxUMSxUMixUMT4gICAgeyBpbmxpbmUgY29uc3QgVDEmIG9wZXJhdG9yKCkoY29uc3QgVDEmIGEsIGNvbnN0IFQyJikgY29uc3QgeyByZXR1cm4gKGEpOyB9IH07Ci0vLy8gXGJyaWVmIFNlbGVjdHMgYW5kIHJldHVybnMgdGhlIHNlY29uZCBhcmd1bWVudC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4gc3RydWN0IHByb2plY3QybmQJOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPFQxLFQyLFQyPiAgICB7IGlubGluZSBjb25zdCBUMiYgb3BlcmF0b3IoKShjb25zdCBUMSYsIGNvbnN0IFQyJiBhKSBjb25zdCB7IHJldHVybiAoYSk7IH0gfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBHZW5lcmljIGZ1bmN0aW9uIHRvIGZ1bmN0b3IgY29udmVydGVycy4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIFdyYXBwZXIgb2JqZWN0IGZvciB1bmFyeSBmdW5jdGlvbiBwb2ludGVycy4KLS8vLyBVc2UgdGhlIFxyZWYgcHRyX2Z1biBhY2Nlc3NvciB0byBjcmVhdGUgdGhpcyBvYmplY3QuCi0vLy8gXGluZ3JvdXAgRnVuY3Rvck9iamVjdHMKLXRlbXBsYXRlIDx0eXBlbmFtZSBBcmcsIHR5cGVuYW1lIFJlc3VsdD4KLWNsYXNzIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248QXJnLFJlc3VsdD4gewotcHVibGljOgotICAgIHR5cGVkZWYgQXJnCQlhcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgUmVzdWx0CXJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgUmVzdWx0CSgqcGZ1bmNfdCkoQXJnKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBpbmxpbmUJcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbiAocGZ1bmNfdCBwZm4pIDogbV9wZm4gKHBmbikge30KLSAgICBpbmxpbmUgcmVzdWx0X3R5cGUJb3BlcmF0b3IoKSAoYXJndW1lbnRfdHlwZSB2KSBjb25zdCB7IHJldHVybiAobV9wZm4odikpOyB9Ci1wcml2YXRlOgotICAgIHBmdW5jX3QJCW1fcGZuOwkvLy88IFBvaW50ZXIgdG8gdGhlIHdyYXBwZWQgZnVuY3Rpb24uCi19OwotCi0vLy8gXGJyaWVmIFdyYXBwZXIgb2JqZWN0IGZvciBiaW5hcnkgZnVuY3Rpb24gcG9pbnRlcnMuCi0vLy8gVXNlIHRoZSBccmVmIHB0cl9mdW4gYWNjZXNzb3IgdG8gY3JlYXRlIHRoaXMgb2JqZWN0LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUgUmVzdWx0PgotY2xhc3MgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24gOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPEFyZzEsQXJnMixSZXN1bHQ+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEFyZzEJZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIEFyZzIJc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0gICAgdHlwZWRlZiBSZXN1bHQJcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBSZXN1bHQJKCpwZnVuY190KShBcmcxLCBBcmcyKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBpbmxpbmUJcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24gKHBmdW5jX3QgcGZuKSA6IG1fcGZuIChwZm4pIHt9Ci0gICAgaW5saW5lIHJlc3VsdF90eXBlCW9wZXJhdG9yKCkgKGZpcnN0X2FyZ3VtZW50X3R5cGUgdjEsIHNlY29uZF9hcmd1bWVudF90eXBlIHYyKSBjb25zdCB7IHJldHVybiAobV9wZm4odjEsIHYyKSk7IH0KLXByaXZhdGU6Ci0gICAgcGZ1bmNfdAkJbV9wZm47CS8vLzwgUG9pbnRlciB0byB0aGUgd3JhcHBlZCBmdW5jdGlvbi4KLX07Ci0KLS8vLyBwdHJfZnVuKHBmbikgd3JhcHMgZnVuY3Rpb24gcG9pbnRlciBwZm4gaW50byBhIGZ1bmN0b3IgY2xhc3MgdGhhdCBjYWxscyBpdC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yQWNjZXNzb3JzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnLCB0eXBlbmFtZSBSZXN1bHQ+Ci1pbmxpbmUgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxBcmcsUmVzdWx0PiBwdHJfZnVuIChSZXN1bHQgKCpwZm4pKEFyZykpCi17Ci0gICAgcmV0dXJuIChwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPEFyZyxSZXN1bHQ+IChwZm4pKTsKLX0KLQotLy8vIHB0cl9mdW4ocGZuKSB3cmFwcyBmdW5jdGlvbiBwb2ludGVyIHBmbiBpbnRvIGEgZnVuY3RvciBjbGFzcyB0aGF0IGNhbGxzIGl0LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JBY2Nlc3NvcnMKLXRlbXBsYXRlIDx0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB0eXBlbmFtZSBSZXN1bHQ+Ci1pbmxpbmUgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb248QXJnMSxBcmcyLFJlc3VsdD4gcHRyX2Z1biAoUmVzdWx0ICgqcGZuKShBcmcxLEFyZzIpKQotewotICAgIHJldHVybiAocG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb248QXJnMSxBcmcyLFJlc3VsdD4gKHBmbikpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIE5lZ2F0b3JzLgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcYnJpZWYgV3JhcHMgYSB1bmFyeSBmdW5jdGlvbiB0byByZXR1cm4gaXRzIGxvZ2ljYWwgbmVnYXRpdmUuCi0vLy8gVXNlIHRoZSBccmVmIHVuYXJ5X25lZ2F0b3IgYWNjZXNzb3IgdG8gY3JlYXRlIHRoaXMgb2JqZWN0LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi10ZW1wbGF0ZSA8Y2xhc3MgVW5hcnlGdW5jdGlvbj4KLWNsYXNzIHVuYXJ5X25lZ2F0ZSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBVbmFyeUZ1bmN0aW9uOjphcmd1bWVudF90eXBlLAotCQkJCQkgICB0eXBlbmFtZSBVbmFyeUZ1bmN0aW9uOjpyZXN1bHRfdHlwZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgVW5hcnlGdW5jdGlvbjo6YXJndW1lbnRfdHlwZQlhcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVW5hcnlGdW5jdGlvbjo6cmVzdWx0X3R5cGUJCXJlc3VsdF90eXBlOwotcHVibGljOgotICAgIGV4cGxpY2l0IGlubGluZSB1bmFyeV9uZWdhdGUgKFVuYXJ5RnVuY3Rpb24gcGZuKSA6IG1fcGZuIChwZm4pIHt9Ci0gICAgaW5saW5lIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkgKGFyZ3VtZW50X3R5cGUgdikgY29uc3QgeyByZXR1cm4gKCFtX3Bmbih2KSk7IH0KLXByaXZhdGU6Ci0gICAgVW5hcnlGdW5jdGlvbgltX3BmbjsKLX07Ci0KLS8vLyBSZXR1cm5zIHRoZSBmdW5jdG9yIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mICpwZm4oKS4KLS8vLyBcaW5ncm91cCBGdW5jdG9yQWNjZXNzb3JzCi10ZW1wbGF0ZSA8Y2xhc3MgVW5hcnlGdW5jdGlvbj4KLWlubGluZSB1bmFyeV9uZWdhdGU8VW5hcnlGdW5jdGlvbj4gdW5hcnlfbmVnYXRvciAoVW5hcnlGdW5jdGlvbiBwZm4pCi17Ci0gICAgcmV0dXJuICh1bmFyeV9uZWdhdGU8VW5hcnlGdW5jdGlvbj4ocGZuKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQXJndW1lbnQgYmluZGVycwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcYnJpZWYgQ29udmVydHMgYSBiaW5hcnkgZnVuY3Rpb24gdG8gYSB1bmFyeSBmdW5jdGlvbgotLy8vIGJ5IGJpbmRpbmcgYSBjb25zdGFudCB2YWx1ZSB0byB0aGUgZmlyc3QgYXJndW1lbnQuCi0vLy8gVXNlIHRoZSBccmVmIGJpbmQxc3QgYWNjZXNzb3IgdG8gY3JlYXRlIHRoaXMgb2JqZWN0LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi10ZW1wbGF0ZSA8Y2xhc3MgQmluYXJ5RnVuY3Rpb24+IAotY2xhc3MgYmluZGVyMXN0IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSwKLQkJCQkJdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OnJlc3VsdF90eXBlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZQlhcmcxX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUJYXJnMl90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OnJlc3VsdF90eXBlCQlyZXN1bHRfdDsKLXB1YmxpYzoKLSAgICBpbmxpbmUgYmluZGVyMXN0IChjb25zdCBCaW5hcnlGdW5jdGlvbiYgcGZuLCBjb25zdCBhcmcxX3QmIHYpIDogbV9wZm4gKHBmbiksIG1fVmFsdWUodikge30KLSAgICBpbmxpbmUgcmVzdWx0X3Qgb3BlcmF0b3IoKShhcmcyX3QgdjIpIGNvbnN0IHsgcmV0dXJuIChtX3BmbiAobV9WYWx1ZSwgdjIpKTsgfQotcHJvdGVjdGVkOgotICAgIEJpbmFyeUZ1bmN0aW9uCW1fcGZuOwotICAgIGFyZzFfdAkJbV9WYWx1ZTsKLX07Ci0KLS8vLyBcYnJpZWYgQ29udmVydHMgYSBiaW5hcnkgZnVuY3Rpb24gdG8gYSB1bmFyeSBmdW5jdGlvbgotLy8vIGJ5IGJpbmRpbmcgYSBjb25zdGFudCB2YWx1ZSB0byB0aGUgc2Vjb25kIGFyZ3VtZW50LgotLy8vIFVzZSB0aGUgXHJlZiBiaW5kMm5kIGFjY2Vzc29yIHRvIGNyZWF0ZSB0aGlzIG9iamVjdC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPGNsYXNzIEJpbmFyeUZ1bmN0aW9uPiAKLWNsYXNzIGJpbmRlcjJuZCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSwKLQkJCQkJdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OnJlc3VsdF90eXBlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZQlhcmcxX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUJYXJnMl90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OnJlc3VsdF90eXBlCQlyZXN1bHRfdDsKLXB1YmxpYzoKLSAgICBpbmxpbmUgYmluZGVyMm5kIChjb25zdCBCaW5hcnlGdW5jdGlvbiYgcGZuLCBjb25zdCBhcmcyX3QmIHYpIDogbV9wZm4gKHBmbiksIG1fVmFsdWUodikge30KLSAgICBpbmxpbmUgcmVzdWx0X3Qgb3BlcmF0b3IoKShhcmcxX3QgdjEpIGNvbnN0IHsgcmV0dXJuIChtX3BmbiAodjEsIG1fVmFsdWUpKTsgfQotcHJvdGVjdGVkOgotICAgIEJpbmFyeUZ1bmN0aW9uCW1fcGZuOwotICAgIGFyZzJfdAkJbV9WYWx1ZTsKLX07Ci0KLS8vLyBDb252ZXJ0cyBccCBwZm4gaW50byBhIHVuYXJ5IGZ1bmN0aW9uIGJ5IGJpbmRpbmcgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIFxwIHYuCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uPgotaW5saW5lIGJpbmRlcjFzdDxCaW5hcnlGdW5jdGlvbj4KLWJpbmQxc3QgKEJpbmFyeUZ1bmN0aW9uIHBmbiwgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgdikgCi17Ci0gICAgcmV0dXJuIChiaW5kZXIxc3Q8QmluYXJ5RnVuY3Rpb24+IChwZm4sIHYpKTsKLX0KLQotLy8vIENvbnZlcnRzIFxwIHBmbiBpbnRvIGEgdW5hcnkgZnVuY3Rpb24gYnkgYmluZGluZyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIFxwIHYuCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uPgotaW5saW5lIGJpbmRlcjJuZDxCaW5hcnlGdW5jdGlvbj4KLWJpbmQybmQgKEJpbmFyeUZ1bmN0aW9uIHBmbiwgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OnNlY29uZF9hcmd1bWVudF90eXBlIHYpIAotewotICAgIHJldHVybiAoYmluZGVyMm5kPEJpbmFyeUZ1bmN0aW9uPiAocGZuLCB2KSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQ29tcG9zaXRpb24gYWRhcHRlcnMKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIENoYWlucyB0d28gdW5hcnkgZnVuY3Rpb25zIHRvZ2V0aGVyLgotLy8vCi0vLy8gV2hlbiBmKHgpIGFuZCBnKHgpIGFyZSBjb21wb3NlZCwgdGhlIHJlc3VsdCBpcyBmdW5jdGlvbiBjKHgpPWYoZyh4KSkuCi0vLy8gVXNlIHRoZSBccmVmIGNvbXBvc2UxIGFjY2Vzc29yIHRvIGNyZWF0ZSB0aGlzIG9iamVjdC4KLS8vLyBUaGlzIHRlbXBsYXRlIGlzIGFuIGV4dGVuc2lvbiwgaW1wbGVtZW50ZWQgYnkgU0dJIFNUTCBhbmQgdVNUTC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uMSwgdHlwZW5hbWUgT3BlcmF0aW9uMj4KLWNsYXNzIHVuYXJ5X2NvbXBvc2UgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZSwKLQkJCQkJICAgIHR5cGVuYW1lIE9wZXJhdGlvbjE6OnJlc3VsdF90eXBlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb24yOjphcmd1bWVudF90eXBlCWFyZ190OwotICAgIHR5cGVkZWYgY29uc3QgYXJnX3QmCQkJcmNhcmdfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjE6OnJlc3VsdF90eXBlCXJlc3VsdF90OwotcHVibGljOgotICAgIGlubGluZSB1bmFyeV9jb21wb3NlIChjb25zdCBPcGVyYXRpb24xJiBmLCBjb25zdCBPcGVyYXRpb24yJiBnKSA6IG1fZihmKSwgbV9nKGcpIHt9Ci0gICAgaW5saW5lIHJlc3VsdF90IG9wZXJhdG9yKCkgKHJjYXJnX3QgeCkgY29uc3QgeyByZXR1cm4gbV9mKG1fZyh4KSk7IH0KLXByb3RlY3RlZDoKLSAgICBPcGVyYXRpb24xCW1fZjsJLy8vPCBmKHgpLCBpZiBjKHgpID0gZihnKHgpKQotICAgIE9wZXJhdGlvbjIJbV9nOwkvLy88IGcoeCksIGlmIGMoeCkgPSBmKGcoeCkpCi19OwotCi0vLy8gQ3JlYXRlcyBhIFxyZWYgdW5hcnlfY29tcG9zZSBvYmplY3Qgd2hvc2UgZnVuY3Rpb24gYyh4KT1mKGcoeCkpCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvbjEsIHR5cGVuYW1lIE9wZXJhdGlvbjI+Ci1pbmxpbmUgdW5hcnlfY29tcG9zZTxPcGVyYXRpb24xLCBPcGVyYXRpb24yPgotY29tcG9zZTEgKGNvbnN0IE9wZXJhdGlvbjEmIGYsIGNvbnN0IE9wZXJhdGlvbjImIGcpCi17IHJldHVybiB1bmFyeV9jb21wb3NlPE9wZXJhdGlvbjEsT3BlcmF0aW9uMj4oZiwgZyk7IH0KLQotLy8vIFxicmllZiBDaGFpbnMgdHdvIHVuYXJ5IGZ1bmN0aW9ucyB0aHJvdWdoIGEgYmluYXJ5IGZ1bmN0aW9uLgotLy8vCi0vLy8gV2hlbiBmKHgseSksIGcoeCksIGFuZCBoKHgpIGFyZSBjb21wb3NlZCwgdGhlIHJlc3VsdCBpcyBmdW5jdGlvbgotLy8vIGMoeCk9ZihnKHgpLGgoeCkpLiBVc2UgdGhlIFxyZWYgY29tcG9zZTIgYWNjZXNzb3IgdG8gY3JlYXRlIHRoaXMKLS8vLyBvYmplY3QuIFRoaXMgdGVtcGxhdGUgaXMgYW4gZXh0ZW5zaW9uLCBpbXBsZW1lbnRlZCBieSBTR0kgU1RMIGFuZCB1U1RMLgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb24xLCB0eXBlbmFtZSBPcGVyYXRpb24yLCB0eXBlbmFtZSBPcGVyYXRpb24zPgotY2xhc3MgYmluYXJ5X2NvbXBvc2UgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZSwKLQkJCQkJICAgIHR5cGVuYW1lIE9wZXJhdGlvbjE6OnJlc3VsdF90eXBlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb24yOjphcmd1bWVudF90eXBlCWFyZ190OwotICAgIHR5cGVkZWYgY29uc3QgYXJnX3QmCQkJcmNhcmdfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjE6OnJlc3VsdF90eXBlCXJlc3VsdF90OwotcHVibGljOgotICAgIGlubGluZSBiaW5hcnlfY29tcG9zZSAoY29uc3QgT3BlcmF0aW9uMSYgZiwgY29uc3QgT3BlcmF0aW9uMiYgZywgY29uc3QgT3BlcmF0aW9uMyYgaCkgOiBtX2YoZiksIG1fZyhnKSwgbV9oKGgpIHt9Ci0gICAgaW5saW5lIHJlc3VsdF90IG9wZXJhdG9yKCkgKHJjYXJnX3QgeCkgY29uc3QgeyByZXR1cm4gbV9mKG1fZyh4KSwgbV9oKHgpKTsgfQotcHJvdGVjdGVkOgotICAgIE9wZXJhdGlvbjEJbV9mOwkvLy88IGYoeCx5KSwgaWYgYyh4KSA9IGYoZyh4KSxoKHgpKQotICAgIE9wZXJhdGlvbjIJbV9nOwkvLy88IGcoeCksIGlmIGMoeCkgPSBmKGcoeCksaCh4KSkKLSAgICBPcGVyYXRpb24zCW1faDsJLy8vPCBoKHgpLCBpZiBjKHgpID0gZihnKHgpLGgoeCkpCi19OwotCi0vLy8gQ3JlYXRlcyBhIFxyZWYgYmluYXJ5X2NvbXBvc2Ugb2JqZWN0IHdob3NlIGZ1bmN0aW9uIGMoeCk9ZihnKHgpLGgoeCkpCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvbjEsIHR5cGVuYW1lIE9wZXJhdGlvbjIsIHR5cGVuYW1lIE9wZXJhdGlvbjM+Ci1pbmxpbmUgYmluYXJ5X2NvbXBvc2U8T3BlcmF0aW9uMSwgT3BlcmF0aW9uMiwgT3BlcmF0aW9uMz4KLWNvbXBvc2UyIChjb25zdCBPcGVyYXRpb24xJiBmLCBjb25zdCBPcGVyYXRpb24yJiBnLCBjb25zdCBPcGVyYXRpb24zJiBoKQoteyByZXR1cm4gYmluYXJ5X2NvbXBvc2U8T3BlcmF0aW9uMSwgT3BlcmF0aW9uMiwgT3BlcmF0aW9uMz4gKGYsIGcsIGgpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTWVtYmVyIGZ1bmN0aW9uIGFkYXB0b3JzCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKLQotI2RlZmluZSBNRU1fRlVOX1QoV3JhcHBlck5hbWUsIENsYXNzTmFtZSwgQXJnVHlwZSwgRnVuY1R5cGUsIENhbGxUeXBlKQkJCQlcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJldCwgY2xhc3MgVD4JCQkJCQkJCVwKLSAgICBjbGFzcyBDbGFzc05hbWUgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248QXJnVHlwZSxSZXQ+IHsJCQkJCVwKLSAgICBwdWJsaWM6CQkJCQkJCQkJCQlcCi0JdHlwZWRlZiBSZXQgKFQ6OipmdW5jX3QpIEZ1bmNUeXBlOwkJCQkJCQlcCi0gICAgcHVibGljOgkJCQkJCQkJCQkJXAotCWV4cGxpY2l0IGlubGluZQlDbGFzc05hbWUgKGZ1bmNfdCBwZikgOiBtX3BmIChwZikge30JCQkJCVwKLQlpbmxpbmUgUmV0CW9wZXJhdG9yKCkgKEFyZ1R5cGUgcCkgY29uc3QgeyByZXR1cm4gKChwIENhbGxUeXBlIG1fcGYpKCkpOyB9CQlcCi0gICAgcHJpdmF0ZToJCQkJCQkJCQkJCVwKLQlmdW5jX3QJbV9wZjsJCQkJCQkJCQkJXAotICAgIH07CVwKLQlcCi0gICAgdGVtcGxhdGUgPGNsYXNzIFJldCwgdHlwZW5hbWUgVD4JCVwKLSAgICBpbmxpbmUgQ2xhc3NOYW1lPFJldCxUPiBXcmFwcGVyTmFtZSAoUmV0IChUOjoqcGYpIEZ1bmNUeXBlKQlcCi0gICAgewkJCQkJCVwKLQlyZXR1cm4gKENsYXNzTmFtZTxSZXQsVD4gKHBmKSk7CQlcCi0gICAgfQotCi1NRU1fRlVOX1QobWVtX2Z1biwJbWVtX2Z1bl90LCAJCVQqLAkJKHZvaWQpLAkJLT4qKQotTUVNX0ZVTl9UKG1lbV9mdW4sCWNvbnN0X21lbV9mdW5fdCwgCWNvbnN0IFQqLAkodm9pZCkgY29uc3QsCS0+KikKLU1FTV9GVU5fVChtZW1fZnVuX3JlZiwJbWVtX2Z1bl9yZWZfdCwJCVQmLAkJKHZvaWQpLAkJLiopCi1NRU1fRlVOX1QobWVtX2Z1bl9yZWYsCWNvbnN0X21lbV9mdW5fcmVmX3QsIAljb25zdCBUJiwJKHZvaWQpIGNvbnN0LAkuKikKLQotI2RlZmluZSBFWFRfTUVNX0ZVTl9UKENsYXNzTmFtZSwgSG9zdFR5cGUsIEZ1bmNUeXBlKSBcCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFJldCwgdHlwZW5hbWUgVj4gXAotICAgIGNsYXNzIENsYXNzTmFtZSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxWLHZvaWQ+IHsgXAotICAgIHB1YmxpYzogXAotCXR5cGVkZWYgUmV0IChUOjoqZnVuY190KShWKSBGdW5jVHlwZTsgXAotICAgIHB1YmxpYzogXAotCWlubGluZQkJQ2xhc3NOYW1lIChIb3N0VHlwZSB0LCBmdW5jX3QgcGYpIDogbV90ICh0KSwgbV9wZiAocGYpIHt9IFwKLQlpbmxpbmUgUmV0CW9wZXJhdG9yKCkgKFYgdikgY29uc3QgeyByZXR1cm4gKChtX3QtPiptX3BmKSh2KSk7IH0gXAotICAgIHByaXZhdGU6IFwKLQlIb3N0VHlwZQltX3Q7IFwKLQlmdW5jX3QJCW1fcGY7IFwKLSAgICB9OwlcCi0JXAotICAgIHRlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXQsIHR5cGVuYW1lIFY+CQkJCQlcCi0gICAgaW5saW5lIENsYXNzTmFtZTxULFJldCxWPiBtZW1fZnVuIChIb3N0VHlwZSBwLCBSZXQgKFQ6OipwZikoVikgRnVuY1R5cGUpCVwKLSAgICB7CQkJCQkJCQkJCQlcCi0JcmV0dXJuIChDbGFzc05hbWU8VCxSZXQsVj4gKHAsIHBmKSk7CQkJCQkJXAotICAgIH0KLQotRVhUX01FTV9GVU5fVChleHRfbWVtX2Z1bl90LAkJVCosCQkpCi1FWFRfTUVNX0ZVTl9UKGNvbnN0X2V4dF9tZW1fZnVuX3QsCWNvbnN0IFQqLAljb25zdCkKLQotI2VuZGlmIC8vIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIE1lbWJlciB2YXJpYWJsZSBhZGFwdG9ycyAodVNUTCBleHRlbnNpb24pCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKLQotI2RlZmluZSBNRU1fVkFSX1QoRnVuY3Rvck5hbWUsIEFyZ1R5cGUsIFZhclR5cGUsIEJhc2VDbGFzcywgQ2FsbEltcGwpCQkJXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbiwgY2xhc3MgVCwgdHlwZW5hbWUgVlQ+CQkJCQlcCi0gICAgY2xhc3MgRnVuY3Rvck5hbWUjI190IDogcHVibGljIEJhc2VDbGFzcyB7CQkJCQkJXAotICAgIHB1YmxpYzoJCQkJCQkJCQkJXAotCXR5cGVkZWYgQXJnVHlwZQkJCQlhcmd1bWVudF90eXBlOwkJCQlcCi0JdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjo6cmVzdWx0X3R5cGUJcmVzdWx0X3R5cGU7CQkJCVwKLQl0eXBlZGVmIFZhclR5cGUJCQkJbWVtX3Zhcl9wdHJfdDsJCQkJXAotICAgIHB1YmxpYzoJCQkJCQkJCQkJXAotCWlubGluZSBGdW5jdG9yTmFtZSMjX3QgKG1lbV92YXJfcHRyX3QgcHYsIEZ1bmN0aW9uIHBmbikgOiBtX3B2KHB2KSwgbV9wZm4ocGZuKSB7fQlcCi0JaW5saW5lIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkgQ2FsbEltcGwJCQkJCQlcCi0gICAgcHJpdmF0ZToJCQkJCQkJCQkJXAotCW1lbV92YXJfcHRyX3QJbV9wdjsJCQkJCQkJCVwKLQlGdW5jdGlvbgltX3BmbjsJCQkJCQkJCVwKLSAgICB9OwkJCQkJCQkJCQkJXAotCQkJCQkJCQkJCQlcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uLCBjbGFzcyBULCB0eXBlbmFtZSBWVD4JCQkJCVwKLSAgICBpbmxpbmUgRnVuY3Rvck5hbWUjI190PEZ1bmN0aW9uLCBULCBWVD4JCQkJCQlcCi0gICAgRnVuY3Rvck5hbWUgKFZUIFQ6OiptdnAsIEZ1bmN0aW9uIHBmbikJCQkJCQlcCi0gICAgewkJCQkJCQkJCQkJXAotCXJldHVybiAoRnVuY3Rvck5hbWUjI190PEZ1bmN0aW9uLFQsVlQ+IChtdnAsIHBmbikpOwkJCQlcCi0gICAgfQotCi0jZGVmaW5lIEZVTkNUT1JfVU5BUllfQkFTRShBcmdUeXBlKQl1bmFyeV9mdW5jdGlvbjxBcmdUeXBlLCB0eXBlbmFtZSBGdW5jdGlvbjo6cmVzdWx0X3R5cGU+Ci0jZGVmaW5lIEZVTkNUT1JfQklOQVJZX0JBU0UoQXJnVHlwZSkJYmluYXJ5X2Z1bmN0aW9uPEFyZ1R5cGUsIEFyZ1R5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uOjpyZXN1bHRfdHlwZT4KLQotI2RlZmluZSBNRU1fVkFSX1VOQVJZX0FSR1MJCShhcmd1bWVudF90eXBlIHApIGNvbnN0IFwKLQkJCQkJeyByZXR1cm4gKG1fcGZuKHAuKm1fcHYpKTsgfQotI2RlZmluZSBNRU1fVkFSX0JJTkFSWV9BUkdTCQkoYXJndW1lbnRfdHlwZSBwMSwgYXJndW1lbnRfdHlwZSBwMikgY29uc3QgXAotCQkJCQl7IHJldHVybiAobV9wZm4ocDEuKm1fcHYsIHAyLiptX3B2KSk7IH0KLQotTUVNX1ZBUl9UKG1lbV92YXIxLAkJVCYsIFZUIFQ6OiosCQlGVU5DVE9SX1VOQVJZX0JBU0UoVCYpLCAgTUVNX1ZBUl9VTkFSWV9BUkdTKQotTUVNX1ZBUl9UKGNvbnN0X21lbV92YXIxLCBjb25zdCBUJiwgY29uc3QgVlQgVDo6KiwJRlVOQ1RPUl9VTkFSWV9CQVNFKFQmKSwgIE1FTV9WQVJfVU5BUllfQVJHUykKLU1FTV9WQVJfVChtZW1fdmFyMiwJCVQmLCBWVCBUOjoqLAkJRlVOQ1RPUl9CSU5BUllfQkFTRShUJiksIE1FTV9WQVJfQklOQVJZX0FSR1MpCi1NRU1fVkFSX1QoY29uc3RfbWVtX3ZhcjIsIGNvbnN0IFQmLCBjb25zdCBWVCBUOjoqLAlGVU5DVE9SX0JJTkFSWV9CQVNFKFQmKSwgTUVNX1ZBUl9CSU5BUllfQVJHUykKLQotI3VuZGVmIE1FTV9WQVJfVU5BUllfQVJHUwotI3VuZGVmIE1FTV9WQVJfQklOQVJZX0FSR1MKLQotI2VuZGlmIC8vIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotCi0vLy8gUmV0dXJuZWQgZnVuY3RvciBwYXNzZXMgbWVtYmVyIHZhcmlhYmxlIFxwIG12cCByZWZlcmVuY2Ugb2YgZ2l2ZW4gb2JqZWN0IHRvIGVxdWFsXDxWVFw+LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JBY2Nlc3NvcnMKLXRlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBWVD4KLWlubGluZSBjb25zdF9tZW1fdmFyMV90PGJpbmRlcjJuZDxlcXVhbF90bzxWVD4gPiwgVCwgVlQ+Ci1tZW1fdmFyX2VxdWFsX3RvIChjb25zdCBWVCBUOjoqbXZwLCBjb25zdCBWVCYgdikKLXsKLSAgICByZXR1cm4gKGNvbnN0X21lbV92YXIxX3Q8YmluZGVyMm5kPGVxdWFsX3RvPFZUPiA+LFQsVlQ+IChtdnAsIGJpbmQybmQoZXF1YWxfdG88VlQ+KCksIHYpKSk7Ci19Ci0KLS8vLyBSZXR1cm5lZCBmdW5jdG9yIHBhc3NlcyBtZW1iZXIgdmFyaWFibGUgXHAgbXZwIHJlZmVyZW5jZSBvZiBnaXZlbiBvYmplY3QgdG8gbGVzc1w8VlRcPi4KLS8vLyBcaW5ncm91cCBGdW5jdG9yQWNjZXNzb3JzCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlwZW5hbWUgVlQ+Ci1pbmxpbmUgY29uc3RfbWVtX3ZhcjFfdDxiaW5kZXIybmQ8bGVzczxWVD4gPiwgVCwgVlQ+Ci1tZW1fdmFyX2xlc3MgKGNvbnN0IFZUIFQ6OiptdnAsIGNvbnN0IFZUJiB2KQotewotICAgIHJldHVybiAoY29uc3RfbWVtX3ZhcjFfdDxiaW5kZXIybmQ8bGVzczxWVD4gPixULFZUPiAobXZwLCBiaW5kMm5kKGxlc3M8VlQ+KCksIHYpKSk7Ci19Ci0KLS8vLyBSZXR1cm5lZCBmdW5jdG9yIHBhc3NlcyBtZW1iZXIgdmFyaWFibGUgXHAgbXZwIHJlZmVyZW5jZSBvZiBnaXZlbiBvYmplY3QgdG8gZXF1YWxcPFZUXD4uCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFZUPgotaW5saW5lIGNvbnN0X21lbV92YXIyX3Q8ZXF1YWxfdG88VlQ+LCBULCBWVD4KLW1lbV92YXJfZXF1YWxfdG8gKGNvbnN0IFZUIFQ6OiptdnApCi17Ci0gICAgcmV0dXJuIChjb25zdF9tZW1fdmFyMl90PGVxdWFsX3RvPFZUPixULFZUPiAobXZwLCBlcXVhbF90bzxWVD4oKSkpOwotfQotCi0vLy8gUmV0dXJuZWQgZnVuY3RvciBwYXNzZXMgbWVtYmVyIHZhcmlhYmxlIFxwIG12cCByZWZlcmVuY2Ugb2YgZ2l2ZW4gb2JqZWN0IHRvIGxlc3NcPFZUXD4uCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFZUPgotaW5saW5lIGNvbnN0X21lbV92YXIyX3Q8bGVzczxWVD4sIFQsIFZUPgotbWVtX3Zhcl9sZXNzIChjb25zdCBWVCBUOjoqbXZwKQotewotICAgIHJldHVybiAoY29uc3RfbWVtX3ZhcjJfdDxsZXNzPFZUPixULFZUPiAobXZwLCBsZXNzPFZUPigpKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRGVyZWZlcmVuY2UgYWRhcHRvcnMgKHVTVEwgZXh0ZW5zaW9uKQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLSNkZWZpbmUgREVSRUZFUkVOQ0VSX1QoQ2xhc3NOYW1lLCBBcmdUeXBlLCBCYXNlQ2xhc3MsIENhbGxJbXBsLCBGdW5jdG9yS2V5KQlcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0aW9uPgkJCQkJXAotICAgIGNsYXNzIENsYXNzTmFtZSA6IHB1YmxpYyBCYXNlQ2xhc3MgewkJCQkJXAotICAgIHB1YmxpYzoJCQkJCQkJCQlcCi0JdHlwZWRlZiBBcmdUeXBlKgkJCWFyZ3VtZW50X3R5cGU7CQkJXAotCXR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb246OnJlc3VsdF90eXBlCXJlc3VsdF90eXBlOwkJCVwKLSAgICBwdWJsaWM6CQkJCQkJCQkJXAotCWlubGluZQkJCUNsYXNzTmFtZSAoRnVuY3Rpb24gcGZuKSA6IG1fcGZuIChwZm4pIHt9CVwKLQlpbmxpbmUgcmVzdWx0X3R5cGUJb3BlcmF0b3IoKSBDYWxsSW1wbAkJCQlcCi0gICAgcHJpdmF0ZToJCQkJCQkJCQlcCi0JRnVuY3Rpb24JCW1fcGZuOwkJCQkJCVwKLSAgICB9OwkJCQkJCQkJCQlcCi0JCQkJCQkJCQkJXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdGlvbj4JCQkJCVwKLSAgICBpbmxpbmUgQ2xhc3NOYW1lPFQsRnVuY3Rpb24+IF9kZXJlZmVyZW5jZSAoRnVuY3Rpb24gcGZuLCBGdW5jdG9yS2V5KQlcCi0gICAgewkJCQkJCQkJCQlcCi0JcmV0dXJuIChDbGFzc05hbWU8VCxGdW5jdGlvbj4gKHBmbikpOwkJCQkJXAotICAgIH0KLQotI2RlZmluZSBERVJFRl9VTkFSWV9BUkdTCQkoYXJndW1lbnRfdHlwZSBwKSBjb25zdCBcCi0JCQkJCXsgcmV0dXJuIChtX3BmbigqcCkpOyB9Ci0jZGVmaW5lIERFUkVGX0JJTkFSWV9BUkdTCQkoYXJndW1lbnRfdHlwZSBwMSwgYXJndW1lbnRfdHlwZSBwMikgY29uc3QgXAotCQkJCQl7IHJldHVybiAobV9wZm4oKnAxLCAqcDIpKTsgfQotCi1ERVJFRkVSRU5DRVJfVChkZXJlZjFfdCwJVCwgCQlGVU5DVE9SX1VOQVJZX0JBU0UoVCopLAkJREVSRUZfVU5BUllfQVJHUywJRlVOQ1RPUl9VTkFSWV9CQVNFKFQpKQotREVSRUZFUkVOQ0VSX1QoY29uc3RfZGVyZWYxX3QsCWNvbnN0IFQsIAlGVU5DVE9SX1VOQVJZX0JBU0UoY29uc3QgVCopLAlERVJFRl9VTkFSWV9BUkdTLAlGVU5DVE9SX1VOQVJZX0JBU0UoY29uc3QgVCkpCi1ERVJFRkVSRU5DRVJfVChkZXJlZjJfdCwJVCwgCQlGVU5DVE9SX0JJTkFSWV9CQVNFKFQqKSwJREVSRUZfQklOQVJZX0FSR1MsCUZVTkNUT1JfQklOQVJZX0JBU0UoVCkpCi1ERVJFRkVSRU5DRVJfVChjb25zdF9kZXJlZjJfdCwJY29uc3QgVCwgCUZVTkNUT1JfQklOQVJZX0JBU0UoY29uc3QgVCopLAlERVJFRl9CSU5BUllfQVJHUywJRlVOQ1RPUl9CSU5BUllfQkFTRShjb25zdCBUKSkKLQotI2RlZmluZSBkZXJlZmVyZW5jZShmKSBfZGVyZWZlcmVuY2UoZixmKQotCi0jdW5kZWYgREVSRUZfVU5BUllfQVJHUwotI3VuZGVmIERFUkVGX0JJTkFSWV9BUkdTCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91aGVhcC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWhlYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRmZGRhZi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91aGVhcC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1aGVhcC5oCi0vLwotLy8gSW1wbGVtZW50YXRpb24gb2YgU1RMIGhlYXAgYWxnb3JpdGhtcy4KLS8vCi0vLyBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUgY29waWVkCi0vLyBleGFjdGx5IGZyb20gdGhlIFNHSSB2ZXJzaW9uIG9mIFNUTCBkb2N1bWVudGF0aW9uIGFsb25nIHdpdGggY29tbWVudHMgYWJvdXQKLS8vIHRoZWlyIHVzZS4gVGhlIGNvZGUgaXMgTk9UIHRoZSBzYW1lLCB0aG91Z2ggdGhlIGZ1bmN0aW9uYWxpdHkgaXMuCi0vLwotCi0jaWZuZGVmIFVIRUFQX0hfNTc0QjlFQUYyNzFBMUMxMDcxOTBCNEQ1NzVBMzU2QzUKLSNkZWZpbmUgVUhFQVBfSF81NzRCOUVBRjI3MUExQzEwNzE5MEI0RDU3NUEzNTZDNQotCi0jaW5jbHVkZSAidXZlY3Rvci5oIgotI2luY2x1ZGUgInVhbGdvYmFzZS5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcYnJpZWYgUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiByYW5nZSBpcyBhIGhlYXAgdW5kZXIgXHAgY29tcC4KLS8vLyBBIGhlYXAgaXMgYSBzZXF1ZW50aWFsbHkgZW5jb2RlZCBiaW5hcnkgdHJlZSB3aGVyZSBmb3IgZXZlcnkgbm9kZQotLy8vIGNvbXAobm9kZSxjaGlsZDEpIGlzIGZhbHNlIGFuZCBjb21wKG5vZGUsY2hpbGQyKSBpcyBmYWxzZS4KLS8vLyBcaW5ncm91cCBIZWFwQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlPgotYm9vbCBpc19oZWFwIChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCwgQ29tcGFyZSBjb21wKQotewotICAgIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGlDaGlsZCAoZmlyc3QpOwotICAgIGZvciAoOyArK2lDaGlsZCA8IGxhc3Q7ICsrZmlyc3QpCi0JaWYgKGNvbXAgKCpmaXJzdCwgKmlDaGlsZCkgfHwgKCsraUNoaWxkIDwgbGFzdCAmJiBjb21wICgqZmlyc3QsICppQ2hpbGQpKSkKLQkgICAgcmV0dXJuIChmYWxzZSk7Ci0gICAgcmV0dXJuICh0cnVlKTsKLX0KLQotLy8vIFxicmllZiBtYWtlX2hlYXAgdHVybnMgdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgaW50byBhIGhlYXAKLS8vLyBBdCBjb21wbGV0aW9uLCBpc19oZWFwIChmaXJzdCwgbGFzdCwgY29tcCkgaXMgdHJ1ZS4KLS8vLyBUaGUgYWxnb3JpdGhtIGlzIGFkYXB0ZWQgZnJvbSAiQ2xhc3NpYyBEYXRhIFN0cnVjdHVyZXMgaW4gQysrIiBieSBUaW1vdGh5IEJ1ZGQuCi0vLy8gXGluZ3JvdXAgSGVhcEFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBTb3J0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Ci12b2lkIG1ha2VfaGVhcCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QsIENvbXBhcmUgY29tcCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICBjb25zdCB2YWx1ZV90eXBlIHYgKCpmaXJzdCk7Ci0gICAgdW9mZl90IGlDaGlsZCwgaUhvbGUgPSAwLCBpRW5kIChkaXN0YW5jZSAoZmlyc3QsIGxhc3QpKTsKLSAgICB3aGlsZSAoKGlDaGlsZCA9IDIgKiBpSG9sZSArIDEpIDwgaUVuZCkgewotCWlmIChpQ2hpbGQgKyAxIDwgaUVuZCkJLy8gUGljayB0aGUgZ3JlYXRlciBjaGlsZAotCSAgICBpQ2hpbGQgKz0gY29tcCAoZmlyc3RbaUNoaWxkXSwgZmlyc3RbaUNoaWxkICsgMV0pOwotCWlmIChjb21wIChmaXJzdFtpQ2hpbGRdLCB2KSkKLQkgICAgYnJlYWs7CQkvLyBEb25lIHdoZW4gcGFyZW50IGlzIGdyZWF0ZXIgdGhhbiBib3RoIGNoaWxkcmVuLgotCWZpcnN0W2lIb2xlXSA9IGZpcnN0W2lDaGlsZF07Ci0JaUhvbGUgPSBpQ2hpbGQ7Ci0gICAgfQotICAgIGlmIChpSG9sZSA8IGlFbmQpCi0JZmlyc3RbaUhvbGVdID0gdjsKLX0KLQotLy8vIFxicmllZiBJbnNlcnRzIHRoZSAqLS1sYXN0IGludG8gdGhlIHByZWNlZWRpbmcgcmFuZ2UgYXNzdW1lZCB0byBiZSBhIGhlYXAuCi0vLy8gXGluZ3JvdXAgSGVhcEFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZT4KLXZvaWQgcHVzaF9oZWFwIChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCwgQ29tcGFyZSBjb21wKQotewotICAgIGlmIChsYXN0IDw9IGZpcnN0KQotCXJldHVybjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICBjb25zdCB2YWx1ZV90eXBlIHYgKCotLWxhc3QpOwotICAgIHdoaWxlIChmaXJzdCA8IGxhc3QpIHsKLQlSYW5kb21BY2Nlc3NJdGVyYXRvciBpUGFyZW50ID0gZmlyc3QgKyAoZGlzdGFuY2UoZmlyc3QsIGxhc3QpIC0gMSkgLyAyOwotCWlmIChjb21wICh2LCAqaVBhcmVudCkpCi0JICAgIGJyZWFrOwotCSpsYXN0ID0gKmlQYXJlbnQ7Ci0JbGFzdCA9IGlQYXJlbnQ7Ci0gICAgfQotICAgICpsYXN0ID0gdjsKLX0KLQotLy8vIFJlbW92ZXMgdGhlIGxhcmdlc3QgZWxlbWVudCBmcm9tIHRoZSBoZWFwICgqZmlyc3QpIGFuZCBwbGFjZXMgaXQgYXQgKihsYXN0LTEpCi0vLy8gW2ZpcnN0LCBsYXN0LTEpIGlzIGEgaGVhcCBhZnRlciB0aGlzIG9wZXJhdGlvbi4KLS8vLyBcaW5ncm91cCBIZWFwQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlPgotdm9pZCBwb3BfaGVhcCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QsIENvbXBhcmUgY29tcCkKLXsKLSAgICBpZiAoLS1sYXN0IDw9IGZpcnN0KQotCXJldHVybjsKLSAgICBpdGVyX3N3YXAgKGZpcnN0LCBsYXN0KTsKLSAgICBtYWtlX2hlYXAgKGZpcnN0LCBsYXN0LCBjb21wKTsKLX0KLQotLy8vIFNvcnRzIGhlYXAgW2ZpcnN0LCBsYXN0KSBpbiBkZXNjZW5kaW5nIG9yZGVyIGFjY29yZGluZyB0byBjb21wLgotLy8vIFxpbmdyb3VwIEhlYXBBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZT4KLXZvaWQgc29ydF9oZWFwIChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCwgQ29tcGFyZSBjb21wKQotewotICAgIGZvciAoOyBmaXJzdCA8IGxhc3Q7IC0tbGFzdCkKLQlwb3BfaGVhcCAoZmlyc3QsIGxhc3QsIGNvbXApOwotfQotCi0jZGVmaW5lIEhFQVBfRk5fV0lUSF9MRVNTKHJ0eXBlLCBuYW1lKQlcCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+XAotaW5saW5lIHJ0eXBlIG5hbWUgKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGZpcnN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0KQkJXAotewkJCQkJCQkJCQkJXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwlcCi0gICAgcmV0dXJuIChuYW1lIChmaXJzdCwgbGFzdCwgbGVzczx2YWx1ZV90eXBlPigpKSk7CQkJCQlcCi19Ci1IRUFQX0ZOX1dJVEhfTEVTUyAoYm9vbCwgaXNfaGVhcCkKLUhFQVBfRk5fV0lUSF9MRVNTICh2b2lkLCBtYWtlX2hlYXApCi1IRUFQX0ZOX1dJVEhfTEVTUyAodm9pZCwgcHVzaF9oZWFwKQotSEVBUF9GTl9XSVRIX0xFU1MgKHZvaWQsIHBvcF9oZWFwKQotSEVBUF9GTl9XSVRIX0xFU1MgKHZvaWQsIHNvcnRfaGVhcCkKLSN1bmRlZiBIRUFQX0ZOX1dJVEhfTEVTUwotCi0vLy8gXGNsYXNzIHByaW9yaXR5X3F1ZXVlIHVoZWFwLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgU2VxdWVuY2VzCi0vLy8KLS8vLyBcYnJpZWYgU29ydGVkIHF1ZXVlIGFkYXB0ZXIgdG8gdVNUTCBjb250YWluZXJzLgotLy8vCi0vLy8gQWN0cyBqdXN0IGxpa2UgdGhlIHF1ZXVlIGFkYXB0ZXIsIGJ1dCBrZWVwcyB0aGUgZWxlbWVudHMgc29ydGVkIGJ5IHByaW9yaXR5Ci0vLy8gc3BlY2lmaWVkIGJ5IHRoZSBnaXZlbiBjb21wYXJpc29uIG9wZXJhdG9yLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ3RyID0gdmVjdG9yPFQ+LCB0eXBlbmFtZSBDb21wID0gbGVzczx0eXBlbmFtZSBDdHI6OnZhbHVlX3R5cGU+ID4KLWNsYXNzIHByaW9yaXR5X3F1ZXVlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEN0cgkJCQkJYmFzZV9jdHI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2N0cjo6dmFsdWVfdHlwZQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jdHI6OnNpemVfdHlwZQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2N0cjo6Y29uc3RfcG9pbnRlcgljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jdHI6OmNvbnN0X3JlZmVyZW5jZQlyZWZlcmVuY2U7Ci1wdWJsaWM6Ci0JCQlwcmlvcml0eV9xdWV1ZSAoY29uc3QgQ29tcCYgYyA9IENvbXAoKSkgOiBtX3YoKSwgbV9jIChjKSB7fQotCQkJcHJpb3JpdHlfcXVldWUgKGNvbnN0X3BvaW50ZXIgZiwgY29uc3RfcG9pbnRlciBsLCBjb25zdCBDb21wJiBjID0gQ29tcCgpKQotCQkJICAgIDogbV92IChmLCBsKSwgbV9jIChjKSB7IG1ha2VfaGVhcCAobV92LmJlZ2luKCksIG1fdi5lbmQoKSwgbV9jKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJc2l6ZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1fdi5zaXplKCkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCWVtcHR5ICh2b2lkKSBjb25zdAl7IHJldHVybiAobV92LmVtcHR5KCkpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQl0b3AgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtX3YuYXQoMCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXB1c2ggKHJlZmVyZW5jZSB2KQl7IG1fdi5wdXNoX2JhY2sgKHYpOyBtYWtlX2hlYXAgKG1fdi5iZWdpbigpLCBtX3YuZW5kKCksIG1fYyk7IH0KLSAgICBpbmxpbmUgdm9pZAkJcG9wICh2b2lkKQkJeyBwb3BfaGVhcCAobV92LmJlZ2luKCksIG1fdi5lbmQoKSk7IG1fdi5wb3BfYmFjaygpOyB9Ci1wcml2YXRlOgotICAgIGJhc2VfY3RyCQltX3Y7CS8vLzwgRWxlbWVudCBjb250YWluZXIuCi0gICAgQ29tcAkJbV9jOwkvLy88IENvbXBhcmlzb24gZnVuY3RvciBieSB2YWx1ZS4KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Vpb3MuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Vpb3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE1M2JlNS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91aW9zLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVpb3MuaAotLy8KLS8vIFR5cGVzIHVzZWQgYnkgdGhlIHN0cmVhbXMgZm9yIG9wdGlvbiBzZXR0aW5nLgotLy8KLQotI2lmbmRlZiBVSU9TX0hfNjMwQzE2RTMxNkY3NjUwRTNBMDJFMUM2NjExQjc4OUEKLSNkZWZpbmUgVUlPU19IXzYzMEMxNkUzMTZGNzY1MEUzQTAyRTFDNjYxMUI3ODlBCi0KLSNpbmNsdWRlICJ1dHlwZXMuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi1jbGFzcyBmaWxlX2V4Y2VwdGlvbjsKLQotY29uc3QgY2hhciBlbmRsID0gJ1xuJzsJCS8vLzwgRW5kIG9mIGxpbmUgY2hhcmFjdGVyLgotY29uc3QgY2hhciBlbmRzID0gJ1wwJzsJCS8vLzwgRW5kIG9mIHN0cmluZyBjaGFyYWN0ZXIuCi0KLS8vLyBEZWZpbmVzIHR5cGVzIGFuZCBjb25zdGFudHMgdXNlZCBieSBhbGwgc3RyZWFtIGNsYXNzZXMuCi1jbGFzcyBpb3NfYmFzZSB7Ci1wdWJsaWM6Ci0gICAgLy8vIFVzZWQgdG8gc2V0IHBhcmFtZXRlcnMgZm9yIHN0cmluZ3N0cmVhbXMKLSAgICBlbnVtIGZtdGZsYWdzIHsKLQlib29sYWxwaGEJPSAoMSA8PCAwKSwJLy8vPCBCb29sZWFuIHZhbHVlcyBwcmludGVkIGFzIHRleHQuCi0JZGVjCQk9ICgxIDw8IDEpLAkvLy88IERlY2ltYWwgbnVtYmVyIG91dHB1dC4KLQlmaXhlZAkJPSAoMSA8PCAyKSwJLy8vPCBGaXhlZC1wb2ludCBmbG9hdCBvdXRwdXQuCi0JaGV4CQk9ICgxIDw8IDMpLAkvLy88IEhleGFkZWNpbWFsIG51bWJlciBvdXRwdXQuCi0JaW50ZXJuYWwJPSAoMSA8PCA0KSwKLQlsZWZ0CQk9ICgxIDw8IDUpLAkvLy88IExlZnQgYWxpZ25tZW50LgotCW9jdAkJPSAoMSA8PCA2KSwJLy8vPCBPY3RhbCBudW1iZXIgb3V0cHV0LgotCXJpZ2h0CQk9ICgxIDw8IDcpLAkvLy88IFJpZ2h0IGFsaWdubWVudC4KLQlzY2llbnRpZmljCT0gKDEgPDwgOCksCS8vLzwgU2NpZW50aWZpYyBmbG9hdCBmb3JtYXQuCi0Jc2hvd2Jhc2UJPSAoMSA8PCA5KSwJLy8vPCBBZGQgMHggb3IgMCBwcmVmaXhlcyBvbiBoZXggYW5kIG9jdGFsIG51bWJlcnMuCi0Jc2hvd3BvaW50CT0gKDEgPDwgMTApLAkvLy88IFByaW50IGRlY2ltYWwgcG9pbnQuCi0Jc2hvd3BvcwkJPSAoMSA8PCAxMSksCi0Jc2tpcHdzCQk9ICgxIDw8IDEyKSwJLy8vPCBTa2lwIHdoaXRlc3BhY2Ugd2hlbiByZWFkaW5nLgotCXVuaXRidWYJCT0gKDEgPDwgMTMpLAotCXVwcGVyY2FzZQk9ICgxIDw8IDE0KSwKLQlhZGp1c3RmaWVsZAk9ICgxIDw8IDE1KSwKLQliYXNlZmllbGQJPSAoMSA8PCAxNiksCi0JZmxvYXRmaWVsZAk9ICgxIDw8IDE3KQotICAgIH07Ci0gICAgLy8vIEZvciBmaWxlLWJhc2VkIHN0cmVhbXMsIHNwZWNpZmllcyBmZCBtb2RlLgotICAgIGVudW0gb3Blbm1vZGVfYml0cyB7Ci0JaW4JPSAoMSA8PCAwKSwKLQlvdXQJPSAoMSA8PCAxKSwKLQlhcHAJPSAoMSA8PCAyKSwKLQlhdGUJPSAoMSA8PCAzKSwKLQliaW5hcnkJPSAoMSA8PCA0KSwKLQl0cnVuYwk9ICgxIDw8IDUpLAotCSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0Jbm9uYmxvY2s9ICgxIDw8IDYpLAotCW5vY3JlYXRlPSAoMSA8PCA3KSwKLQlub2N0dHkJPSAoMSA8PCA4KSwKLQlub21iaXRzCT0gOQotCSNlbmRpZgotICAgIH07Ci0gICAgLy8vIFNlZWsgZGlyZWN0aW9ucywgZXF1aXZhbGVudCB0byBTRUVLX1NFVCwgU0VFS19DVVIsIGFuZCBTRUVLX0VORC4KLSAgICBlbnVtIHNlZWtkaXIgewotCWJlZywKLQljdXIsCi0JZW5kCi0gICAgfTsKLSAgICAvLy8gSS9PIHN0YXRlIGJpdG1hc2tzLgotICAgIGVudW0gaW9zdGF0ZV9iaXRzIHsKLQlnb29kYml0CT0gMCwKLQliYWRiaXQJPSAoMSA8PCAwKSwKLQllb2ZiaXQJPSAoMSA8PCAxKSwKLQlmYWlsYml0CT0gKDEgPDwgMiksCi0JI2lmbmRlZiBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKLQluYmFkYml0cyA9IDMsCi0JYWxsYmFkYml0cyA9IDB4NwotCSNlbmRpZgotICAgIH07Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90CQlvcGVubW9kZTsJLy8vPCBIb2xkcyBvcGVubW9kZV9iaXRzLgotICAgIHR5cGVkZWYgdWludDMyX3QJCWlvc3RhdGU7CS8vLzwgSG9sZHMgaW9zdGF0ZV9iaXRzIGZvciBhIGZpbGUgc3RyZWFtLgotICAgIHR5cGVkZWYgZmlsZV9leGNlcHRpb24JZmFpbHVyZTsJLy8vPCBUaHJvd24gYnkgZnN0cmVhbSBvbiBlcnJvcnMuCi0KLSAgICBzdGF0aWMgY29uc3QgY2hhciBjX0RlZmF1bHREZWxpbWl0ZXJzIFsxNl07CS8vLzwgRGVmYXVsdCB3b3JkIGRlbGltaXRlcnMgZm9yIHN0cmluZ3N0cmVhbXMuCi1wdWJsaWM6Ci0gICAgaW5saW5lCQlpb3NfYmFzZSAodm9pZCkJCQk6IG1fU3RhdGUgKGdvb2RiaXQpLCBtX0V4Y2VwdGlvbnMgKGdvb2RiaXQpIHt9Ci0gICAgaW5saW5lIGlvc3RhdGUJcmRzdGF0ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX1N0YXRlKTsgfQotICAgIGlubGluZSBib29sCQliYWQgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAocmRzdGF0ZSgpICYgYmFkYml0KTsgfQotICAgIGlubGluZSBib29sCQlnb29kICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHJkc3RhdGUoKSA9PSBnb29kYml0KTsgfQotICAgIGlubGluZSBib29sCQlmYWlsICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHJkc3RhdGUoKSAmIChiYWRiaXQgfCBmYWlsYml0KSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJZW9mICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHJkc3RhdGUoKSAmIGVvZmJpdCk7IH0KLSAgICBpbmxpbmUgYm9vbAkJb3BlcmF0b3IhICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGZhaWwoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJY2xlYXIgKGlvc3RhdGUgdiA9IGdvb2RiaXQpCXsgbV9TdGF0ZSA9IHY7IH0KLSAgICBpbmxpbmUgdm9pZAkJc2V0c3RhdGUgKGlvc3RhdGUgdikJCXsgbV9TdGF0ZSB8PSB2OyB9Ci0gICAgaW5saW5lIGlvc3RhdGUJZXhjZXB0aW9ucyAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX0V4Y2VwdGlvbnMpOyB9Ci0gICAgaW5saW5lIGlvc3RhdGUJZXhjZXB0aW9ucyAoaW9zdGF0ZSB2KQkJeyByZXR1cm4gKG1fRXhjZXB0aW9ucyA9IHYpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgaW5saW5lIGJvb2wJCXNldF9hbmRfdGhyb3cgKGlvc3RhdGUgdikJeyBzZXRzdGF0ZSh2KTsgcmV0dXJuIChleGNlcHRpb25zKCkgJiB2KTsgfQotcHJpdmF0ZToKLSAgICB1aW50MTZfdAkJbV9TdGF0ZTsJLy8vPCBPcGVuIHN0YXRlLCB1c2luZyBpb3M6Omlvc3RhdGVfYml0cy4KLSAgICB1aW50MTZfdAkJbV9FeGNlcHRpb25zOwkvLy88IEV4Y2VwdGlvbiBmbGFncywgdXNpbmcgaW9zOjppb3N0YXRlX2JpdHMuCi19OwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91aW9zZnVuYy5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWlvc2Z1bmMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUyNmVkMS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91aW9zZnVuYy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1aW9zZnVuYy5oCi0vLwotCi0jaWZuZGVmIFVJT1NGVU5DX0hfNzMwQzE2RTMxNkY3NjUwRTNBMDJFMUM2NjExQjc4OUEKLSNkZWZpbmUgVUlPU0ZVTkNfSF83MzBDMTZFMzE2Rjc2NTBFM0EwMkUxQzY2MTFCNzg5QQotCi0jaW5jbHVkZSAic29zdHJlYW0uaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi1jbGFzcyBpb3MgOiBwdWJsaWMgaW9zX2Jhc2UgewotcHVibGljOgotICAgIC8vLyBcY2xhc3MgYWxpZ24gdWlvc2Z1bmMuaCB1c3RsLmgKLSAgICAvLy8gXGluZ3JvdXAgU3RyZWFtRnVuY3RvcnMKLSAgICAvLy8gXGJyaWVmIFN0cmVhbSBmdW5jdG9yIHRvIGFsbG93IGlubGluZSBhbGlnbigpIGNhbGxzLgotICAgIC8vLwotICAgIC8vLyBFeGFtcGxlOiBvcyA8PCBpb3M6OmFsaWduKHNpemVvZih1aW50MTZfdCkpOwotICAgIC8vLwotICAgIGNsYXNzIGFsaWduIHsKLSAgICBwdWJsaWM6Ci0JaW5saW5lIGV4cGxpY2l0CQlhbGlnbiAoc2l6ZV90IGdyYWluID0gY19EZWZhdWx0QWxpZ25tZW50KSA6IG1fR3JhaW4oZ3JhaW4pIHt9Ci0JaW5saW5lIGlzdHJlYW0mCQlhcHBseSAoaXN0cmVhbSYgaXMpIGNvbnN0IHsgaXMuYWxpZ24gKG1fR3JhaW4pOyByZXR1cm4gKGlzKTsgfQotCWlubGluZSBvc3RyZWFtJgkJYXBwbHkgKG9zdHJlYW0mIG9zKSBjb25zdCB7IG9zLmFsaWduIChtX0dyYWluKTsgcmV0dXJuIChvcyk7IH0KLQlpbmxpbmUgc2l6ZV90CQlzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3QgIHsgcmV0dXJuIChtX0dyYWluIC0gMSk7IH0KLSAgICBwcml2YXRlOgotCWNvbnN0IHNpemVfdAkJbV9HcmFpbjsKLSAgICB9OwotCi0gICAgLy8vIFxjbGFzcyB0YWxpZ24gdWlvc2Z1bmMuaCB1c3RsLmgKLSAgICAvLy8gXGluZ3JvdXAgU3RyZWFtRnVuY3RvcnMKLSAgICAvLy8gXGJyaWVmIFN0cmVhbSBmdW5jdG9yIHRvIGFsbG93IHR5cGUtYmFzZWQgYWxpZ25tZW50LgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIGNsYXNzIHRhbGlnbiA6IHB1YmxpYyBhbGlnbiB7Ci0gICAgcHVibGljOgotCWlubGluZSBleHBsaWNpdAkJdGFsaWduICh2b2lkKSA6IGFsaWduIChhbGlnbm9mIChUKCkpKSB7fQotICAgIH07Ci0KLSAgICAvLy8gXGNsYXNzIHNraXAgdWlvc2Z1bmMuaCB1c3RsLmgKLSAgICAvLy8gXGluZ3JvdXAgU3RyZWFtRnVuY3RvcnMKLSAgICAvLy8gXGJyaWVmIFN0cmVhbSBmdW5jdG9yIHRvIGFsbG93IGlubGluZSBza2lwKCkgY2FsbHMuCi0gICAgLy8vCi0gICAgLy8vIEV4YW1wbGU6IG9zIDw8IGlvczo6c2tpcChzaXplb2YodWludDE2X3QpKTsKLSAgICAvLy8KLSAgICBjbGFzcyBza2lwIHsKLSAgICBwdWJsaWM6Ci0JaW5saW5lIGV4cGxpY2l0IAlza2lwIChzaXplX3QgbkJ5dGVzKSA6IG1fbkJ5dGVzKG5CeXRlcykge30KLQlpbmxpbmUgaXN0cmVhbSYJCWFwcGx5IChpc3RyZWFtJiBpcykgY29uc3QgeyBpcy5za2lwIChtX25CeXRlcyk7IHJldHVybiAoaXMpOyB9Ci0JaW5saW5lIG9zdHJlYW0mCQlhcHBseSAob3N0cmVhbSYgb3MpIGNvbnN0IHsgb3Muc2tpcCAobV9uQnl0ZXMpOyByZXR1cm4gKG9zKTsgfQotCWlubGluZSBzaXplX3QJCXN0cmVhbV9zaXplICh2b2lkKSBjb25zdCAgeyByZXR1cm4gKG1fbkJ5dGVzKTsgfQotICAgIHByaXZhdGU6Ci0JY29uc3Qgc2l6ZV90CQltX25CeXRlczsKLSAgICB9OwotCi0gICAgLy8vIFxjbGFzcyB3aWR0aCB1aW9zZnVuYy5oIHVzdGwuaAotICAgIC8vLyBcaW5ncm91cCBTdHJlYW1GdW5jdG9ycwotICAgIC8vLyBcYnJpZWYgU3RyZWFtIGZ1bmN0b3IgdG8gYWxsb3cgaW5saW5lIHNldF93aWR0aCgpIGNhbGxzLgotICAgIC8vLwotICAgIC8vLyBFeGFtcGxlOiBvcyA8PCBpb3M6OndpZHRoKDE1KTsKLSAgICAvLy8KLSAgICBjbGFzcyB3aWR0aCB7Ci0gICAgcHVibGljOgotCWlubGluZSBleHBsaWNpdAkJd2lkdGggKHNpemVfdCBuQnl0ZXMpIDogbV9uQnl0ZXMobkJ5dGVzKSB7fQotCWlubGluZSBvc3RyaW5nc3RyZWFtJglhcHBseSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0IHsgb3Muc2V0X3dpZHRoIChtX25CeXRlcyk7IHJldHVybiAob3MpOyB9Ci0gICAgcHJpdmF0ZToKLQljb25zdCBzaXplX3QJCW1fbkJ5dGVzOwotICAgIH07Ci0KLSAgICAvLy8gXGNsYXNzIGJhc2UgdWlvc2Z1bmMuaCB1c3RsLmgKLSAgICAvLy8gXGluZ3JvdXAgU3RyZWFtRnVuY3RvcnMKLSAgICAvLy8gXGJyaWVmIFN0cmVhbSBmdW5jdG9yIHRvIGFsbG93IGlubGluZSBzZXRfYmFzZSgpIGNhbGxzLgotICAgIC8vLwotICAgIC8vLyBFeGFtcGxlOiBvcyA8PCBpb3M6OmJhc2UoMTUpOwotICAgIC8vLwotICAgIGNsYXNzIGJhc2UgewotICAgIHB1YmxpYzoKLQlpbmxpbmUgZXhwbGljaXQJCWJhc2UgKHNpemVfdCBuKSA6IG1fQmFzZShuKSB7fQotCWlubGluZSBvc3RyaW5nc3RyZWFtJglhcHBseSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0IHsgb3Muc2V0X2Jhc2UgKG1fQmFzZSk7IHJldHVybiAob3MpOyB9Ci0gICAgcHJpdmF0ZToKLQljb25zdCBzaXplX3QJCW1fQmFzZTsKLSAgICB9OwotfTsKLQotaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCBjb25zdCBpb3M6OnNraXAmIG9wKQl7IHJldHVybiAob3AuYXBwbHkgKGlzKSk7IH0KLWlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgY29uc3QgaW9zOjpza2lwJiBvcCkJeyByZXR1cm4gKG9wLmFwcGx5IChvcykpOyB9Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChjb25zdCBpb3M6OnNraXAmIG9wKQkJeyByZXR1cm4gKG9wLnN0cmVhbV9zaXplKCkpOyB9Ci1pbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmVhbSYgaXMsIGNvbnN0IGlvczo6YWxpZ24mIG9wKQl7IHJldHVybiAob3AuYXBwbHkgKGlzKSk7IH0KLWlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgY29uc3QgaW9zOjphbGlnbiYgb3ApCXsgcmV0dXJuIChvcC5hcHBseSAob3MpKTsgfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoY29uc3QgaW9zOjphbGlnbiYgb3ApCQl7IHJldHVybiAob3Auc3RyZWFtX3NpemUoKSk7IH0KLWlubGluZSBvc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgaW9zOjp3aWR0aCYgb3ApCXsgcmV0dXJuIChvcC5hcHBseSAob3MpKTsgfQotaW5saW5lIG9zdHJpbmdzdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJpbmdzdHJlYW0mIG9zLCBjb25zdCBpb3M6OmJhc2UmIG9wKQl7IHJldHVybiAob3AuYXBwbHkgKG9zKSk7IH0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi1DQVNUX1NUUkVBTUFCTEUodXN0bDo6aW9zOjpmbXRmbGFncywgdWludDMyX3QpCi1DQVNUX1NUUkVBTUFCTEUodXN0bDo6aW9zOjpzZWVrZGlyLCB1aW50MzJfdCkKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VpdGVyYXRvci5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWl0ZXJhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YzBkMmQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWl0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjggKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vLyBcZmlsZSB1aXRlcmF0b3IuaAotLy8vIFxicmllZiBDb250YWlucyB2YXJpb3VzIGl0ZXJhdG9yIGFkYXB0ZXJzLgotLy8KLQotI2lmbmRlZiBVSVRFUkFUT1JfSF81QkNBMTc2QzcyMTRBMzBGMjA2OUUyNjE0RDJEQzIyNgotI2RlZmluZSBVSVRFUkFUT1JfSF81QkNBMTc2QzcyMTRBMzBGMjA2OUUyNjE0RDJEQzIyNgotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInV0eXBlcy5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXHN0cnVjdCBpdGVyYXRvcl90cmFpdHMgdWl0ZXJhdG9yLmggdXN0bC5oCi0vLy8gXGJyaWVmIENvbnRhaW5zIHRoZSB0eXBlIHRyYWl0cyBvZiBccCBJdGVyYXRvcgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpwb2ludGVyICAgICAgICAgICBwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnJlZmVyZW5jZSAgICAgICAgIHJlZmVyZW5jZTsKLX07Ci0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxUKj4gewotICAgIHR5cGVkZWYgVAkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHB0cmRpZmZfdAlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdCBUKgljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgVCoJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiBUJgkJcmVmZXJlbmNlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPGNvbnN0IFQqPiB7Ci0gICAgdHlwZWRlZiBUCQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlmZl90CWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIGNvbnN0IFQqCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiBjb25zdCBUKglwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgVCYJcmVmZXJlbmNlOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHM8dm9pZCo+IHsKLSAgICB0eXBlZGVmIHVpbnQ4X3QJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHB0cmRpZmZfdAlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdCB2b2lkKgljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdm9pZCoJcG9pbnRlcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUmCXJlZmVyZW5jZTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPGNvbnN0IHZvaWQqPiB7Ci0gICAgdHlwZWRlZiB1aW50OF90CQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlmZl90CQlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdCB2b2lkKgkJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZvaWQqCQlwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYJcmVmZXJlbmNlOwotfTsKLQotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGNsYXNzIHJldmVyc2VfaXRlcmF0b3IgdWl0ZXJhdG9yLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgSXRlcmF0b3JBZGFwdG9ycwotLy8vIFxicmllZiBXcmFwcyBccCBJdGVyYXRvciB0byBiZWhhdmUgaW4gYW4gZXhhY3RseSBvcHBvc2l0ZSBtYW5uZXIuCi0vLy8KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLWNsYXNzIHJldmVyc2VfaXRlcmF0b3IgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnBvaW50ZXIJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpyZWZlcmVuY2UJcmVmZXJlbmNlOwotcHVibGljOgotICAgIAkJCQlyZXZlcnNlX2l0ZXJhdG9yICh2b2lkKSA6IG1faSgpIHt9Ci0gICAgZXhwbGljaXQJCQlyZXZlcnNlX2l0ZXJhdG9yIChJdGVyYXRvciBpdGVyKSA6IG1faSAoaXRlcikge30KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IHJldmVyc2VfaXRlcmF0b3ImIGl0ZXIpIGNvbnN0IHsgcmV0dXJuIChtX2kgPT0gaXRlci5tX2kpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcjwgKGNvbnN0IHJldmVyc2VfaXRlcmF0b3ImIGl0ZXIpIGNvbnN0IHsgcmV0dXJuIChpdGVyLm1faSA8IG1faSk7IH0KLSAgICBpbmxpbmUgSXRlcmF0b3IJCWJhc2UgKHZvaWQpIGNvbnN0IHsgcmV0dXJuIChtX2kpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJb3BlcmF0b3IqICh2b2lkKSBjb25zdCB7IEl0ZXJhdG9yIHByZXYgKG1faSk7IC0tcHJldjsgcmV0dXJuICgqcHJldik7IH0KLSAgICBpbmxpbmUgcG9pbnRlcgkJb3BlcmF0b3ItPiAodm9pZCkgY29uc3QgeyByZXR1cm4gKCYob3BlcmF0b3IqKCkpKTsgfQotICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yJglvcGVyYXRvcisrICh2b2lkKSB7IC0tIG1faTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvciYJb3BlcmF0b3ItLSAodm9pZCkgeyArKyBtX2k7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHJldmVyc2VfaXRlcmF0b3IJb3BlcmF0b3IrKyAoaW50KSB7IHJldmVyc2VfaXRlcmF0b3IgcHJldiAoKnRoaXMpOyAtLSBtX2k7IHJldHVybiAocHJldik7IH0KLSAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvcglvcGVyYXRvci0tIChpbnQpIHsgcmV2ZXJzZV9pdGVyYXRvciBwcmV2ICgqdGhpcyk7ICsrIG1faTsgcmV0dXJuIChwcmV2KTsgfQotICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yJglvcGVyYXRvcis9IChzaXplX3QgbikgeyBtX2kgLT0gbjsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvciYJb3BlcmF0b3ItPSAoc2l6ZV90IG4pIHsgbV9pICs9IG47IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHJldmVyc2VfaXRlcmF0b3IJb3BlcmF0b3IrIChzaXplX3QgbikgY29uc3QgeyByZXR1cm4gKHJldmVyc2VfaXRlcmF0b3IgKG1faSAtIG4pKTsgfQotICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yCW9wZXJhdG9yLSAoc2l6ZV90IG4pIGNvbnN0IHsgcmV0dXJuIChyZXZlcnNlX2l0ZXJhdG9yIChtX2kgKyBuKSk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCQlvcGVyYXRvcltdICh1b2ZmX3QgbikgY29uc3QgeyByZXR1cm4gKCooKnRoaXMgKyBuKSk7IH0KLSAgICBpbmxpbmUgZGlmZmVyZW5jZV90eXBlCW9wZXJhdG9yLSAoY29uc3QgcmV2ZXJzZV9pdGVyYXRvciYgaSkgY29uc3QgeyByZXR1cm4gKGRpc3RhbmNlIChtX2ksIGkubV9pKSk7IH0KLXByb3RlY3RlZDoKLSAgICBJdGVyYXRvcgkJbV9pOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcY2xhc3MgaW5zZXJ0X2l0ZXJhdG9yIHVpdGVyYXRvci5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEl0ZXJhdG9yQWRhcHRvcnMKLS8vLyBcYnJpZWYgQ2FsbHMgaW5zZXJ0IG9uIGJvdW5kIGNvbnRhaW5lciBmb3IgZWFjaCBhc3NpZ25tZW50LgotLy8vCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotY2xhc3MgaW5zZXJ0X2l0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjpkaWZmZXJlbmNlX3R5cGUJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjpwb2ludGVyCQlwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjpyZWZlcmVuY2UJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvcglpdGVyYXRvcjsKLXB1YmxpYzoKLSAgICBleHBsaWNpdAkJCWluc2VydF9pdGVyYXRvciAoQ29udGFpbmVyJiBjdHIsIGl0ZXJhdG9yIGlwKSA6IG1fckN0ciAoY3RyKSwgbV9pcCAoaXApIHt9Ci0gICAgaW5saW5lIGluc2VydF9pdGVyYXRvciYJb3BlcmF0b3I9ICh0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X3JlZmVyZW5jZSB2KQotICAgIAkJCQkgICAgeyBtX2lwID0gbV9yQ3RyLmluc2VydCAobV9pcCwgdik7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGluc2VydF9pdGVyYXRvciYJb3BlcmF0b3IqICh2b2lkKSAgeyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBpbnNlcnRfaXRlcmF0b3ImCW9wZXJhdG9yKysgKHZvaWQpIHsgKysgbV9pcDsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgaW5zZXJ0X2l0ZXJhdG9yCW9wZXJhdG9yKysgKGludCkgIHsgaW5zZXJ0X2l0ZXJhdG9yIHByZXYgKCp0aGlzKTsgKysgbV9pcDsgcmV0dXJuICgqdGhpcyk7IH0KLXByb3RlY3RlZDoKLSAgICBDb250YWluZXImCQkJbV9yQ3RyOwotICAgIGl0ZXJhdG9yCQkJbV9pcDsKLX07Ci0KLS8vLyBSZXR1cm5zIHRoZSBpbnNlcnRfaXRlcmF0b3IgZm9yIFxwIGN0ci4KLXRlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+Ci1pbmxpbmUgaW5zZXJ0X2l0ZXJhdG9yPENvbnRhaW5lcj4gaW5zZXJ0ZXIgKENvbnRhaW5lciYgY3RyLCB0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yIGlwKQotewotICAgIHJldHVybiAoaW5zZXJ0X2l0ZXJhdG9yPENvbnRhaW5lcj4gKGN0ciwgaXApKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcY2xhc3MgYmFja19pbnNlcnRfaXRlcmF0b3IgdWl0ZXJhdG9yLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgSXRlcmF0b3JBZGFwdG9ycwotLy8vIFxicmllZiBDYWxscyBwdXNoX2JhY2sgb24gYm91bmQgY29udGFpbmVyIGZvciBlYWNoIGFzc2lnbm1lbnQuCi0vLy8KLXRlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+Ci1jbGFzcyBiYWNrX2luc2VydF9pdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6ZGlmZmVyZW5jZV90eXBlCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6cG9pbnRlcgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6cmVmZXJlbmNlCXJlZmVyZW5jZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdAkJCQliYWNrX2luc2VydF9pdGVyYXRvciAoQ29udGFpbmVyJiBjdHIpIDogbV9yQ3RyIChjdHIpIHt9Ci0gICAgaW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJglvcGVyYXRvcj0gKHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfcmVmZXJlbmNlIHYpCi0gICAgCQkJCQkgICAgeyBtX3JDdHIucHVzaF9iYWNrICh2KTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgYmFja19pbnNlcnRfaXRlcmF0b3ImCW9wZXJhdG9yKiAodm9pZCkgIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgYmFja19pbnNlcnRfaXRlcmF0b3ImCW9wZXJhdG9yKysgKHZvaWQpIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgYmFja19pbnNlcnRfaXRlcmF0b3IJCW9wZXJhdG9yKysgKGludCkgIHsgcmV0dXJuICgqdGhpcyk7IH0KLXByb3RlY3RlZDoKLSAgICBDb250YWluZXImCQltX3JDdHI7Ci19OwotCi0vLy8gUmV0dXJucyB0aGUgYmFja19pbnNlcnRfaXRlcmF0b3IgZm9yIFxwIGN0ci4KLXRlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+Ci1pbmxpbmUgYmFja19pbnNlcnRfaXRlcmF0b3I8Q29udGFpbmVyPiBiYWNrX2luc2VydGVyIChDb250YWluZXImIGN0cikKLXsKLSAgICByZXR1cm4gKGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPENvbnRhaW5lcj4gKGN0cikpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxjbGFzcyBpbmRleF9pdGVyYXRlIHVpdGVyYXRvci5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEl0ZXJhdG9yQWRhcHRvcnMKLS8vLwotLy8vIFxicmllZiBBbGxvd3MgaXRlcmF0aW9uIHRocm91Z2ggYW4gaW5kZXggY29udGFpbmVyLgotLy8vCi0vLy8gQ29udmVydHMgYW4gaXRlcmF0b3IgaW50byBhIGNvbnRhaW5lciBvZiB1b2ZmX3QgaW5kZXhlcyB0byBhbgotLy8vIGl0ZXJhdG9yIG9mIGl0ZXJhdG9ycyBpbnRvIGFub3RoZXIgY29udGFpbmVyLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIEluZGV4SXRlcmF0b3I+Ci1jbGFzcyBpbmRleF9pdGVyYXRlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QJCQlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBSYW5kb21BY2Nlc3NJdGVyYXRvcioJcG9pbnRlcjsKLSAgICB0eXBlZGVmIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yCXJlZmVyZW5jZTsKLXB1YmxpYzoKLSAgICAJCQkJaW5kZXhfaXRlcmF0ZSAodm9pZCkgOiBtX0Jhc2UoKSwgbV9pKCkge30KLQkJCQlpbmRleF9pdGVyYXRlIChSYW5kb21BY2Nlc3NJdGVyYXRvciBpYmFzZSwgSW5kZXhJdGVyYXRvciBpaW5kZXgpIDogbV9CYXNlIChpYmFzZSksIG1faSAoaWluZGV4KSB7fQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3QgaW5kZXhfaXRlcmF0ZSYgaSkgY29uc3QgeyByZXR1cm4gKG1faSA9PSBpLm1faSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPCAoY29uc3QgaW5kZXhfaXRlcmF0ZSYgaSkgY29uc3QgeyByZXR1cm4gKG1faSA8IGkubV9pKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3QgUmFuZG9tQWNjZXNzSXRlcmF0b3ImIGkpIGNvbnN0IHsgcmV0dXJuIChtX0Jhc2UgPT0gaSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPCAoY29uc3QgUmFuZG9tQWNjZXNzSXRlcmF0b3ImIGkpIGNvbnN0IHsgcmV0dXJuIChtX0Jhc2UgPCBpKTsgfQotICAgIGlubGluZSBJbmRleEl0ZXJhdG9yCWJhc2UgKHZvaWQpIGNvbnN0IHsgcmV0dXJuIChtX2kpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJb3BlcmF0b3IqICh2b2lkKSBjb25zdCB7IHJldHVybiAoYWR2YW5jZShtX0Jhc2UsICptX2kpKTsgfQotICAgIGlubGluZSBwb2ludGVyCQlvcGVyYXRvci0+ICh2b2lkKSBjb25zdCB7IHJldHVybiAoJihvcGVyYXRvciooKSkpOyB9Ci0gICAgaW5saW5lIGluZGV4X2l0ZXJhdGUmCW9wZXJhdG9yKysgKHZvaWQpIHsgKysgbV9pOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBpbmRleF9pdGVyYXRlJglvcGVyYXRvci0tICh2b2lkKSB7IC0tIG1faTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgaW5kZXhfaXRlcmF0ZQlvcGVyYXRvcisrIChpbnQpIHsgaW5kZXhfaXRlcmF0ZSBwcmV2ICgqdGhpcyk7ICsrIG1faTsgcmV0dXJuIChwcmV2KTsgfQotICAgIGlubGluZSBpbmRleF9pdGVyYXRlCW9wZXJhdG9yLS0gKGludCkgeyBpbmRleF9pdGVyYXRlIHByZXYgKCp0aGlzKTsgLS0gbV9pOyByZXR1cm4gKHByZXYpOyB9Ci0gICAgaW5saW5lIGluZGV4X2l0ZXJhdGUmCW9wZXJhdG9yKz0gKHNpemVfdCBuKSB7IG1faSArPSBuOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBpbmRleF9pdGVyYXRlJglvcGVyYXRvci09IChzaXplX3QgbikgeyBtX2kgLT0gbjsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgaW5kZXhfaXRlcmF0ZQlvcGVyYXRvcisgKHNpemVfdCBuKSBjb25zdCB7IHJldHVybiAoaW5kZXhfaXRlcmF0ZSAobV9CYXNlLCBtX2kgKyBuKSk7IH0KLSAgICBpbmxpbmUgaW5kZXhfaXRlcmF0ZQlvcGVyYXRvci0gKHNpemVfdCBuKSBjb25zdCB7IHJldHVybiAoaW5kZXhfaXRlcmF0ZSAobV9CYXNlLCBtX2kgLSBuKSk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCQlvcGVyYXRvcltdICh1b2ZmX3QgbikgY29uc3QgeyByZXR1cm4gKCooKnRoaXMgKyBuKSk7IH0KLSAgICBpbmxpbmUgZGlmZmVyZW5jZV90eXBlCW9wZXJhdG9yLSAoY29uc3QgaW5kZXhfaXRlcmF0ZSYgaSkgY29uc3QgeyByZXR1cm4gKGRpc3RhbmNlIChtX2ksIGkubV9pKSk7IH0KLXByaXZhdGU6Ci0gICAgUmFuZG9tQWNjZXNzSXRlcmF0b3IJbV9CYXNlOwotICAgIEluZGV4SXRlcmF0b3IJCW1faTsKLX07Ci0KLS8vLyBSZXR1cm5zIGFuIGluZGV4X2l0ZXJhdGUgZm9yIFxwIGliYXNlIG92ZXIgXHAgaWluZGV4LgotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBJbmRleEl0ZXJhdG9yPgotaW5saW5lIGluZGV4X2l0ZXJhdGU8UmFuZG9tQWNjZXNzSXRlcmF0b3IsIEluZGV4SXRlcmF0b3I+IGluZGV4X2l0ZXJhdG9yIChSYW5kb21BY2Nlc3NJdGVyYXRvciBpYmFzZSwgSW5kZXhJdGVyYXRvciBpaW5kZXgpCi17Ci0gICAgcmV0dXJuIChpbmRleF9pdGVyYXRlPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBJbmRleEl0ZXJhdG9yPiAoaWJhc2UsIGlpbmRleCkpOwotfQotCi0vLy8gQ29udmVydHMgdGhlIGluZGV4ZXMgaW4gXHAgeGMgdG8gaXRlcmF0b3JzIGluIFxwIGljIG9mIGJhc2UgXHAgaWJhc2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5kZXhDb250YWluZXIsIHR5cGVuYW1lIEl0ZXJhdG9yQ29udGFpbmVyPgotaW5saW5lIHZvaWQgaW5kZXh2X3RvX2l0ZXJhdG9ydiAodHlwZW5hbWUgSXRlcmF0b3JDb250YWluZXI6OnZhbHVlX3R5cGUgaWJhc2UsIGNvbnN0IEluZGV4Q29udGFpbmVyJiB4YywgSXRlcmF0b3JDb250YWluZXImIGljKQotewotICAgIGljLnJlc2l6ZSAoeGMuc2l6ZSgpKTsKLSAgICBjb3B5X24gKGluZGV4X2l0ZXJhdG9yIChpYmFzZSwgeGMuYmVnaW4oKSksIHhjLnNpemUoKSwgaWMuYmVnaW4oKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gQ29udmVydHMgdGhlIGdpdmVuIGNvbnN0X2l0ZXJhdG9yIGludG8gYW4gaXRlcmF0b3IuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciB1bmNvbnN0ICh0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGksIENvbnRhaW5lciYgY3RyKQotewotICAgIGNvbnN0IENvbnRhaW5lciYgY2N0ciA9IGN0cjsKLSAgICByZXR1cm4gKGN0ci5iZWdpbigpICsgKGkgLSBjY3RyLmJlZ2luKCkpKTsKLX0KLQotI2lmbmRlZiBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKLQotI2RlZmluZSBJQllJKEl0ZXIxLCBJdGVyMiwgQ3RyMSwgQ3RyMikJXAotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcjEsIHR5cGVuYW1lIENvbnRhaW5lcjI+CVwKLWlubGluZSB0eXBlbmFtZSBDb250YWluZXIyOjpJdGVyMiBpYnlpICh0eXBlbmFtZSBDb250YWluZXIxOjpJdGVyMSBpZHgsIEN0cjEmIGN0cjEsIEN0cjImIGN0cjIpCVwKLXsJCQkJCQkJXAotICAgIGFzc2VydCAoY3RyMS5zaXplKCkgPT0gY3RyMi5zaXplKCkpOwkJXAotICAgIHJldHVybiAoY3RyMi5iZWdpbigpICsgKGlkeCAtIGN0cjEuYmVnaW4oKSkpOwlcCi19Ci0KLUlCWUkoY29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yLCBjb25zdCBDb250YWluZXIxLCBjb25zdCBDb250YWluZXIyKQotSUJZSShpdGVyYXRvciwgaXRlcmF0b3IsIENvbnRhaW5lcjEsIENvbnRhaW5lcjIpCi1JQllJKGNvbnN0X2l0ZXJhdG9yLCBpdGVyYXRvciwgY29uc3QgQ29udGFpbmVyMSwgQ29udGFpbmVyMikKLUlCWUkoaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yLCBDb250YWluZXIxLCBjb25zdCBDb250YWluZXIyKQotCi0jZWxzZSAvLyBET1hZR0VOCi0KLSNlcnJvciBUaGlzIGRlY2xhcmF0aW9uIGlzIGZvciBkb3h5Z2VuIG9ubHk7IGl0IGlzIG5vdCBjb21waWxlZC4KLQotLy8vIENvbnZlcnRzIGEgY29uc3RfaXRlcmF0b3IgaW4gb25lIGNvbnRhaW5lciBpbnRvIGEgY29uc3RfaXRlcmF0b3IgaW4gYW5vdGhlciBjb250YWluZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyMSwgdHlwZW5hbWUgQ29udGFpbmVyMj4KLWlubGluZSB0eXBlbmFtZSBDb250YWluZXIyOjppdGVyYXRvciBpYnlpICh0eXBlbmFtZSBDb250YWluZXIxOjppdGVyYXRvciBpZHgsIENvbnRhaW5lcjEmIGN0cjEsIENvbnRhaW5lcjImIGN0cjIpIHt9Ci0KLSNlbmRpZiAvLyBET1hZR0VOCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bGFhbGdvLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bGFhbGdvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZmM5NzcuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWxhYWxnby5oCisrKyAvZGV2L251bGwKQEAgLTEsMjIzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1bGFhbGdvLmgKLS8vCi0KLSNpZm5kZWYgVUxBQUxHT19IXzJFNDAzRDE4MkU4M0ZCNTk2QUZCODAwRTY4QjI1NUExCi0jZGVmaW5lIFVMQUFMR09fSF8yRTQwM0QxODJFODNGQjU5NkFGQjgwMEU2OEIyNTVBMQotCi0jaW5jbHVkZSAidW1hdHJpeC5oIgotI2luY2x1ZGUgInNpbWQuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGJyaWVmIENyZWF0ZXMgYW4gaWRlbnRpdHkgbWF0cml4IGluIFxwIG0KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotdGVtcGxhdGUgPHNpemVfdCBOWCwgc2l6ZV90IE5ZLCB0eXBlbmFtZSBUPgotdm9pZCBsb2FkX2lkZW50aXR5IChtYXRyaXg8TlgsTlksVD4mIG0pCi17Ci0gICAgZmlsbF9uIChtLmJlZ2luKCksIE5YICogTlksIDApOwotICAgIGZvciAodHlwZW5hbWUgbWF0cml4PE5YLE5ZLFQ+OjppdGVyYXRvciBpID0gbS5iZWdpbigpOyBpIDwgbS5lbmQoKTsgaSArPSBOWCArIDEpCi0JKmkgPSAxOwotfQotCi0vLy8gXGJyaWVmIE11bHRpcGxpZXMgdHdvIG1hdHJpY2VzCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLXRlbXBsYXRlIDxzaXplX3QgTlgsIHNpemVfdCBOWSwgdHlwZW5hbWUgVD4KLW1hdHJpeDxOWSxOWSxUPiBvcGVyYXRvciogKGNvbnN0IG1hdHJpeDxOWCxOWSxUPiYgbTEsIGNvbnN0IG1hdHJpeDxOWSxOWCxUPiYgbTIpCi17Ci0gICAgbWF0cml4PE5ZLE5ZLFQ+IG1yOwotICAgIGZvciAodW9mZl90IHJ5ID0gMDsgcnkgPCBOWTsgKysgcnkpIHsKLQlmb3IgKHVvZmZfdCByeCA9IDA7IHJ4IDwgTlk7ICsrIHJ4KSB7Ci0JICAgIFQgZHB2ICgwKTsKLQkgICAgZm9yICh1b2ZmX3QgeCA9IDA7IHggPCBOWDsgKysgeCkKLQkJZHB2ICs9IG0xW3J5XVt4XSAqIG0yW3hdW3J4XTsKLQkgICAgbXJbcnldW3J4XSA9IGRwdjsKLQl9Ci0gICAgfQotICAgIHJldHVybiAobXIpOwotfQotCi0vLy8gXGJyaWVmIFRyYW5zZm9ybXMgdmVjdG9yIFxwIHQgd2l0aCBtYXRyaXggXHAgbQotLy8vIFxpbmdyb3VwIE51bWVyaWNBbGdvcml0aG1zCi10ZW1wbGF0ZSA8c2l6ZV90IE5YLCBzaXplX3QgTlksIHR5cGVuYW1lIFQ+Ci10dXBsZTxOWCxUPiBvcGVyYXRvciogKGNvbnN0IHR1cGxlPE5ZLFQ+JiB0LCBjb25zdCBtYXRyaXg8TlgsTlksVD4mIG0pCi17Ci0gICAgdHVwbGU8TlgsVD4gdHI7Ci0gICAgZm9yICh1b2ZmX3QgeCA9IDA7IHggPCBOWDsgKysgeCkgewotCVQgZHB2ICgwKTsKLQlmb3IgKHVvZmZfdCB5ID0gMDsgeSA8IE5ZOyArKyB5KQotCSAgICBkcHYgKz0gdFt5XSAqIG1beV1beF07Ci0JdHJbeF0gPSBkcHY7Ci0gICAgfQotICAgIHJldHVybiAodHIpOwotfQotCi0vLy8gXGJyaWVmIFRyYW5zcG9zZXMgKGV4Y2hhbmdlcyByb3dzIGFuZCBjb2x1bW5zKSBtYXRyaXggXHAgbS4KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotdm9pZCB0cmFuc3Bvc2UgKG1hdHJpeDxOLE4sVD4mIG0pCi17Ci0gICAgZm9yICh1b2ZmX3QgeCA9IDA7IHggPCBOOyArKyB4KQotCWZvciAodW9mZl90IHkgPSB4OyB5IDwgTjsgKysgeSkKLQkgICAgc3dhcCAobVt4XVt5XSwgbVt5XVt4XSk7Ci19Ci0KLSNpZiBXQU5UX1VOUk9MTEVEX0NPUFkKLQotI2lmIENQVV9IQVNfU1NFCi0KLSNpZiBsaW51eCAvLyBOb24tbGludXggZ2NjIHZlcnNpb25zIChCU0QsIFNvbGFyaXMpIGNhbid0IGhhbmRsZSAieCIgY29uc3RyYWludCBhbmQgcHJvdmlkZSBubyBhbHRlcm5hdGl2ZS4KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgdm9pZCBsb2FkX2lkZW50aXR5IChtYXRyaXg8NCw0LGZsb2F0PiYgbSkKLXsKLSAgICBhc20gKAotCSJtb3ZhcHMgJTQsICUleG1tMQkJXG5cdCIJLy8gMSAwIDAgMAotCSJtb3Z1cHMgJTQsICUwCQkJXG5cdCIJLy8gMSAwIDAgMAotCSJzaHVmcHMgJDB4QjEsJSV4bW0xLCUleG1tMQlcblx0IgkvLyAwIDEgMCAwCi0JIm1vdnVwcyAlJXhtbTEsICUxCQlcblx0IgkvLyAwIDEgMCAwCi0JInNodWZwcyAkMHg0RiwlNCwlJXhtbTEJCVxuXHQiCS8vIDAgMCAxIDAKLQkic2h1ZnBzICQweDFCLCU0LCU0CQlcblx0IgkvLyAwIDAgMCAxCi0JIm1vdnVwcyAlJXhtbTEsICUyCQlcblx0IgkvLyAwIDAgMSAwCi0JIm1vdnVwcyAlNCwgJTMiCQkJCS8vIDAgMCAwIDEKLQk6ICI9bSIobVswXVswXSksICI9bSIobVsxXVswXSksICI9bSIobVsyXVswXSksICI9bSIobVszXVswXSkKLQk6ICJ4IigxLjBmKQotCTogInhtbTEiCi0gICAgKTsKLX0KLSNlbmRpZgotCi1pbmxpbmUgdm9pZCBfc3NlX2xvYWRfbWF0cml4IChjb25zdCBmbG9hdCogbSkKLXsKLSAgICBhc20gKAotCSJtb3Z1cHMgJTAsICUleG1tNAlcblx0IgkvLyB4bW00ID0gbVsxIDIgMyA0XQotCSJtb3Z1cHMgJTEsICUleG1tNQlcblx0IgkvLyB4bW01ID0gbVsxIDIgMyA0XQotCSJtb3Z1cHMgJTIsICUleG1tNglcblx0IgkvLyB4bW02ID0gbVsxIDIgMyA0XQotCSJtb3Z1cHMgJTMsICUleG1tNyIJCS8vIHhtbTcgPSBtWzEgMiAzIDRdCi0JOiA6ICJtIihtWzBdKSwgIm0iKG1bNF0pLCAibSIobVs4XSksICJtIihtWzEyXSkKLQk6ICJ4bW00IiwgInhtbTUiLCAieG1tNiIsICJ4bW03IgotICAgICk7Ci19Ci0KLWlubGluZSB2b2lkIF9zc2VfdHJhbnNmb3JtX3RvX3ZlY3RvciAoZmxvYXQqIHJlc3VsdCkKLXsKLSAgICBhc20gKAotCSJtb3ZhcHMgJSV4bW0wLCAlJXhtbTEJCVxuXHQiIC8vIHhtbTEgPSB0WzAgMSAyIDNdCi0JIm1vdmFwcyAlJXhtbTAsICUleG1tMgkJXG5cdCIgLy8geG1tMSA9IHRbMCAxIDIgM10KLQkibW92YXBzICUleG1tMCwgJSV4bW0zCQlcblx0IiAvLyB4bW0xID0gdFswIDEgMiAzXQotCSJzaHVmcHMgJDB4MDAsICUleG1tMCwgJSV4bW0wCVxuXHQiIC8vIHhtbTAgPSB0WzAgMCAwIDBdCi0JInNodWZwcyAkMHg2NiwgJSV4bW0xLCAlJXhtbTEJXG5cdCIgLy8geG1tMSA9IHRbMSAxIDEgMV0KLQkic2h1ZnBzICQweEFBLCAlJXhtbTIsICUleG1tMglcblx0IiAvLyB4bW0yID0gdFsyIDIgMiAyXQotCSJzaHVmcHMgJDB4RkYsICUleG1tMywgJSV4bW0zCVxuXHQiIC8vIHhtbTMgPSB0WzMgMyAzIDNdCi0JIm11bHBzICAlJXhtbTQsICUleG1tMAkJXG5cdCIgLy8geG1tMCA9IHRbMCAwIDAgMF0gKiBtWzAgMSAyIDNdCi0JIm11bHBzICAlJXhtbTUsICUleG1tMQkJXG5cdCIgLy8geG1tMSA9IHRbMSAxIDEgMV0gKiBtWzAgMSAyIDNdCi0JImFkZHBzICAlJXhtbTEsICUleG1tMAkJXG5cdCIgLy8geG1tMCA9IHhtbTAgKyB4bW0xCi0JIm11bHBzICAlJXhtbTYsICUleG1tMgkJXG5cdCIgLy8geG1tMiA9IHRbMiAyIDIgMl0gKiBtWzAgMSAyIDNdCi0JIm11bHBzICAlJXhtbTcsICUleG1tMwkJXG5cdCIgLy8geG1tMyA9IHRbMyAzIDMgM10gKiBtWzAgMSAyIDNdCi0JImFkZHBzICAlJXhtbTMsICUleG1tMgkJXG5cdCIgLy8geG1tMiA9IHhtbTIgKyB4bW0zCi0JImFkZHBzICAlJXhtbTIsICUleG1tMAkJXG5cdCIgLy8geG1tMCA9IHJlc3VsdAotCSJtb3Z1cHMgJSV4bW0wLCAlMCIKLQk6ICI9bSIocmVzdWx0WzBdKSA6Ci0JOiAieG1tMCIsICJ4bW0xIiwgInhtbTIiLCAieG1tMyIsICJ4bW00IiwgInhtbTUiLCAieG1tNiIsICJ4bW03IgotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDw+Ci10dXBsZTw0LGZsb2F0PiBvcGVyYXRvciogKGNvbnN0IHR1cGxlPDQsZmxvYXQ+JiB0LCBjb25zdCBtYXRyaXg8NCw0LGZsb2F0PiYgbSkKLXsKLSAgICB0dXBsZTw0LGZsb2F0PiByZXN1bHQ7Ci0gICAgX3NzZV9sb2FkX21hdHJpeCAobS5iZWdpbigpKTsKLSAgICBhc20gKCJtb3Z1cHMgJTAsICUleG1tMCIgOiA6ICJtIih0WzBdKSA6ICJ4bW0wIik7Ci0gICAgX3NzZV90cmFuc2Zvcm1fdG9fdmVjdG9yIChyZXN1bHQuYmVnaW4oKSk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi10ZW1wbGF0ZSA8PgotbWF0cml4PDQsNCxmbG9hdD4gb3BlcmF0b3IqIChjb25zdCBtYXRyaXg8NCw0LGZsb2F0PiYgbTEsIGNvbnN0IG1hdHJpeDw0LDQsZmxvYXQ+JiBtMikKLXsKLSAgICBtYXRyaXg8NCw0LGZsb2F0PiByZXN1bHQ7Ci0gICAgX3NzZV9sb2FkX21hdHJpeCAobTIuYmVnaW4oKSk7Ci0gICAgZm9yICh1b2ZmX3QgciA9IDA7IHIgPCA0OyArKyByKSB7IAotCWFzbSAoIm1vdnVwcyAlMCwgJSV4bW0wIiA6IDogIm0iKG0xW3JdWzBdKSA6ICJ4bW0wIik7Ci0JX3NzZV90cmFuc2Zvcm1fdG9fdmVjdG9yIChyZXN1bHRbcl0pOwotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLSNlbGlmIENQVV9IQVNfM0ROT1cKLQotLy8vIFNwZWNpYWxpemF0aW9uIGZvciA0LWNvbXBvbmVudCB2ZWN0b3IgdHJhbnNmb3JtLCB0aGUgc2xvdyBwYXJ0IG9mIDNEIGdyYXBoaWNzLgotdGVtcGxhdGUgPD4KLXR1cGxlPDQsZmxvYXQ+IG9wZXJhdG9yKiAoY29uc3QgdHVwbGU8NCxmbG9hdD4mIHQsIGNvbnN0IG1hdHJpeDw0LDQsZmxvYXQ+JiBtKQotewotICAgIHR1cGxlPDQsZmxvYXQ+IHJlc3VsdDsKLSAgICAvLyBUaGlzIGlzIHRha2VuIGZyb20gIkFNRCBBdGhsb24gQ29kZSBPcHRpbWl6YXRpb24gR3VpZGUiIGZyb20gQU1ELiAxOCBjeWNsZXMhCi0gICAgLy8gSWYgeW91IGFyZSB3cml0aW5nIGEgM0QgZW5naW5lLCB5b3UgbWF5IHdhbnQgdG8gY29weSBpdCBpbnN0ZWFkIG9mIGNhbGxpbmcgaXQKLSAgICAvLyBiZWNhdXNlIG9mIHRoZSBmZW1tcyBpbnN0cnVjdGlvbiBhdCB0aGUgZW5kLCB3aGljaCB0YWtlcyAyIGN5Y2xlcy4KLSAgICBhc20gKAotCSJtb3ZxCSAgICUyLCAlJW1tMAkJXG5cdCIJLy8gICAgICAgICAgICB5IHwgeAotCSJtb3ZxCSAgICUzLCAlJW1tMQkJXG5cdCIJLy8gICAgICAgICAgICB3IHwgegotCSJtb3ZxCSAgICUlbW0wLCAlJW1tMgkJXG5cdCIJLy8gICAgICAgICAgICB5IHwgeAotCSJtb3ZxCSAgICU0LCAlJW1tMwkJXG5cdCIJLy8gICAgICBtWzBdWzFdIHwgbVswXVswXQotCSJwdW5wY2tsZHEgICUlbW0wLCAlJW1tMAlcblx0IgkvLyAgICAgICAgICAgIHggfCB4Ci0JIm1vdnEJICAgJTYsICUlbW00CQlcblx0IgkvLyAgICAgIG1bMV1bMV0gfCBtWzFdWzBdCi0JInBmbXVsCSAgICUlbW0wLCAlJW1tMwkJXG5cdCIJLy8gICAgeCptWzBdWzFdIHwgeCptWzBdWzBdCi0JInB1bnBja2hkcSAgJSVtbTIsICUlbW0yCVxuXHQiCS8vICAgICAgICAgICAgeSB8IHkKLQkicGZtdWwJICAgJSVtbTIsICUlbW00CQlcblx0IgkvLyAgICB5Km1bMV1bMV0gfCB5Km1bMV1bMF0KLQkibW92cQkgICAlNSwgJSVtbTUJCVxuXHQiCS8vICAgICAgbVswXVszXSB8IG1bMF1bMl0KLQkibW92cQkgICAlNywgJSVtbTcJCVxuXHQiCS8vICAgICAgbVsxXVszXSB8IG1bMV1bMl0KLQkibW92cQkgICAlJW1tMSwgJSVtbTYJCVxuXHQiCS8vICAgICAgICAgICAgdyB8IHoKLQkicGZtdWwJICAgJSVtbTAsICUlbW01CQlcblx0IgkvLyAgICB4Km1bMF1bM10gfCB2MD54Km1bMF1bMl0KLQkibW92cQkgICAlOCwgJSVtbTAJCVxuXHQiCS8vICAgICAgbVsyXVsxXSB8IG1bMl1bMF0KLQkicHVucGNrbGRxICAlJW1tMSwgJSVtbTEJXG5cdCIJLy8gICAgICAgICAgICB6IHwgegotCSJwZm11bAkgICAlJW1tMiwgJSVtbTcJCVxuXHQiCS8vICAgIHkqbVsxXVszXSB8IHkqbVsxXVsyXQotCSJtb3ZxCSAgICU5LCAlJW1tMgkJXG5cdCIJLy8gICAgICBtWzJdWzNdIHwgbVsyXVsyXQotCSJwZm11bAkgICAlJW1tMSwgJSVtbTAJCVxuXHQiCS8vICAgIHoqbVsyXVsxXSB8IHoqbVsyXVswXQotCSJwZmFkZAkgICAlJW1tNCwgJSVtbTMJCVxuXHQiCS8vIHgqbVswXVsxXSt5Km1bMV1bMV0gfCB4Km1bMF1bMF0reSptWzFdWzBdCi0JIm1vdnEJICAgJTEwLCAlJW1tNAkJXG5cdCIJLy8gICAgICBtWzNdWzFdIHwgbVszXVswXQotCSJwZm11bAkgICAlJW1tMSwgJSVtbTIJCVxuXHQiCS8vICAgIHoqbVsyXVszXSB8IHoqbVsyXVsyXQotCSJwZmFkZAkgICAlJW1tNywgJSVtbTUJCVxuXHQiCS8vIHgqbVswXVszXSt5Km1bMV1bM10gfCB4Km1bMF1bMl0reSptWzFdWzJdCi0JIm1vdnEJICAgJTExLCAlJW1tMQkJXG5cdCIJLy8gICAgICBtWzNdWzNdIHwgbVszXVsyXQotCSJwdW5wY2toZHEgICUlbW02LCAlJW1tNglcblx0IgkvLyAgICAgICAgICAgIHcgfCB3Ci0JInBmYWRkCSAgICUlbW0wLCAlJW1tMwkJXG5cdCIJLy8geCptWzBdWzFdK3kqbVsxXVsxXSt6Km1bMl1bMV0gfCB4Km1bMF1bMF0reSptWzFdWzBdK3oqbVsyXVswXQotCSJwZm11bAkgICAlJW1tNiwgJSVtbTQJCVxuXHQiCS8vICAgIHcqbVszXVsxXSB8IHcqbVszXVswXQotCSJwZm11bAkgICAlJW1tNiwgJSVtbTEJCVxuXHQiCS8vICAgIHcqbVszXVszXSB8IHcqbVszXVsyXQotCSJwZmFkZAkgICAlJW1tMiwgJSVtbTUJCVxuXHQiCS8vIHgqbVswXVszXSt5Km1bMV1bM10reiptWzJdWzNdIHwgeCptWzBdWzJdK3kqbVsxXVsyXSt6Km1bMl1bMl0KLQkicGZhZGQJICAgJSVtbTQsICUlbW0zCQlcblx0IgkvLyB4Km1bMF1bMV0reSptWzFdWzFdK3oqbVsyXVsxXSt3Km1bM11bMV0gfCB4Km1bMF1bMF0reSptWzFdWzBdK3oqbVsyXVswXSt3Km1bM11bMF0KLQkibW92cQkgICAlJW1tMywgJTAJCVxuXHQiCS8vIHN0b3JlIHJlc3VsdC0+eSB8IHJlc3VsdC0+eAotCSJwZmFkZAkgICAlJW1tMSwgJSVtbTUJCVxuXHQiCS8vIHgqbVswXVszXSt5Km1bMV1bM10reiptWzJdWzNdK3cqbVszXVszXSB8IHgqbVswXVsyXSt5Km1bMV1bMl0reiptWzJdWzJdK3cqbVszXVsyXQotCSJtb3ZxCSAgICUlbW01LCAlMSIJCQkvLyBzdG9yZSByZXN1bHQtPncgfCByZXN1bHQtPnoKLQk6ICI9bSIocmVzdWx0WzBdKSwgIj1tIihyZXN1bHRbMl0pCi0JOiAibSIodFswXSksICJtIih0WzJdKSwKLQkgICJtIihtWzBdWzBdKSwgIm0iKG1bMF1bMl0pLAotCSAgIm0iKG1bMV1bMF0pLCAibSIobVsxXVsyXSksCi0JICAibSIobVsyXVswXSksICJtIihtWzJdWzJdKSwKLQkgICJtIihtWzNdWzBdKSwgIm0iKG1bM11bMl0pCi0JOiAibW0wIiwibW0xIiwibW0yIiwibW0zIiwibW00IiwibW01IiwibW02IiwibW03IgotICAgICk7Ci0gICAgc2ltZDo6cmVzZXRfbW14KCk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0jZWxzZQkvLyBJZiBubyBwcm9jZXNzb3IgZXh0ZW5zaW9ucywganVzdCB1bnJvbGwgdGhlIG11bHRpcGxpY2F0aW9uCi0KLS8vLyBTcGVjaWFsaXphdGlvbiBmb3IgNC1jb21wb25lbnQgdmVjdG9yIHRyYW5zZm9ybSwgdGhlIHNsb3cgcGFydCBvZiAzRCBncmFwaGljcy4KLXRlbXBsYXRlIDw+Ci10dXBsZTw0LGZsb2F0PiBvcGVyYXRvciogKGNvbnN0IHR1cGxlPDQsZmxvYXQ+JiB0LCBjb25zdCBtYXRyaXg8NCw0LGZsb2F0PiYgbSkKLXsKLSAgICB0dXBsZTw0LGZsb2F0PiB0cjsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IDQ7ICsrIGkpCi0JdHJbaV0gPSB0WzBdICogbVswXVtpXSArIHRbMV0gKiBtWzFdW2ldICsgdFsyXSAqIG1bMl1baV0gKyB0WzNdICogbVszXVtpXTsKLSAgICByZXR1cm4gKHRyKTsKLX0KLQotI2VuZGlmCS8vIENQVV9IQVNfM0ROT1cKLSNlbmRpZgkvLyBXQU5UX1VOUk9MTEVEX0NPUFkKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWxpbWl0cy5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWxpbWl0cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWYxZGIxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VsaW1pdHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWxpbWl0cy5oCi0vLwotCi0jaWZuZGVmIFVMSU1JVFNfSF8xQzIxOTJFQTM4MjFFMDgxMUJCQUY4NkIwRjA0ODM2NAotI2RlZmluZSBVTElNSVRTX0hfMUMyMTkyRUEzODIxRTA4MTFCQkFGODZCMEYwNDgzNjQKLQotI2luY2x1ZGUgInV0eXBlcy5oIgotI2luY2x1ZGUgPHN0ZGludC5oPgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vIEFuZHJvaWQKLSNpZm5kZWYgVUlOVFBUUl9NQVgKLSNkZWZpbmUgVUlOVFBUUl9NQVgJVUlOVDMyX01BWAotI2VuZGlmCi0KLSNpZm5kZWYgVUlOVDMyX01BWAotI2RlZmluZSBVSU5UMzJfTUFYICAgICgweGZmZmZmZmZmKQotI2VuZGlmCi0JCi0vLy8gXGNsYXNzIG51bWVyaWNfbGltaXRzIHVsaW1pdHMuaCB1c3RsLmgKLS8vLyBcYnJpZWYgRGVmaW5lcyBudW1lcmljIGxpbWl0cyBmb3IgYSB0eXBlLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgbnVtZXJpY19saW1pdHMgewotICAgIC8vLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0eXBlIFQuCi0gICAgc3RhdGljIGlubGluZSBUIG1pbiAodm9pZCkJCXsgcmV0dXJuIChUKDApKTsgfQotICAgIC8vLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0eXBlIFQuCi0gICAgc3RhdGljIGlubGluZSBUIG1heCAodm9pZCkJCXsgcmV0dXJuIChUKDApKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IGZhbHNlOwkvLy88IFRydWUgaWYgdGhlIHR5cGUgaXMgc2lnbmVkLgotICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVnZXIgPSBmYWxzZTsJLy8vPCBUcnVlIGlmIHN0b3JlcyBhbiBleGFjdCB2YWx1ZS4KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ3JhbCA9IGZhbHNlOwkvLy88IFRydWUgaWYgZml4ZWQgc2l6ZSBhbmQgY2FzdC1jb3B5YWJsZS4KLX07Ci0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IG51bWVyaWNfbGltaXRzPFQqPiB7Ci0gICAgc3RhdGljIGlubGluZSBUKiBtaW4gKHZvaWQpCXsgcmV0dXJuIChOVUxMKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgVCogbWF4ICh2b2lkKQl7IHJldHVybiAoVUlOVFBUUl9NQVgpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdyYWwgPSB0cnVlOwotfTsKLQotI2RlZmluZSBfTlVNRVJJQ19MSU1JVFModHlwZSwgbWluVmFsLCBtYXhWYWwsIGJTaWduZWQsIGJJbnRlZ2VyLCBiSW50ZWdyYWwpCVwKLXRlbXBsYXRlIDw+CQkJCQkJCVwKLXN0cnVjdCBudW1lcmljX2xpbWl0czx0eXBlPiB7CQkJCQlcCi0gICAgc3RhdGljIGlubGluZSB0eXBlIG1pbiAodm9pZCkJeyByZXR1cm4gKG1pblZhbCk7IH0JXAotICAgIHN0YXRpYyBpbmxpbmUgdHlwZSBtYXggKHZvaWQpCXsgcmV0dXJuIChtYXhWYWwpOyB9CVwKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSBiU2lnbmVkOwkJCVwKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gYkludGVnZXI7CQkJXAotICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVncmFsID0gYkludGVncmFsOwkJCVwKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8JCXR5cGUJCW1pbgkJbWF4CQlzaWduZWQJaW50ZWdlcglpbnRlZ3JhbAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotX05VTUVSSUNfTElNSVRTIChib29sLAkJZmFsc2UsCQl0cnVlLAkJZmFsc2UsCXRydWUsCXRydWUpOwotX05VTUVSSUNfTElNSVRTIChjaGFyLAkJU0NIQVJfTUlOLAlTQ0hBUl9NQVgsCXRydWUsCXRydWUsCXRydWUpOwotX05VTUVSSUNfTElNSVRTIChpbnQsCQlJTlRfTUlOLAlJTlRfTUFYLAl0cnVlLAl0cnVlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAoc2hvcnQsCQlTSFJUX01JTiwJU0hSVF9NQVgsCXRydWUsCXRydWUsCXRydWUpOwotX05VTUVSSUNfTElNSVRTIChsb25nLAkJTE9OR19NSU4sCUxPTkdfTUFYLAl0cnVlLAl0cnVlLAl0cnVlKTsKLSNpZiBIQVZFX1RIUkVFX0NIQVJfVFlQRVMKLV9OVU1FUklDX0xJTUlUUyAoc2lnbmVkIGNoYXIsCVNDSEFSX01JTiwJU0NIQVJfTUFYLAl0cnVlLAl0cnVlLAl0cnVlKTsKLSNlbmRpZgotX05VTUVSSUNfTElNSVRTICh1bnNpZ25lZCBjaGFyLAkwLAkJVUNIQVJfTUFYLAlmYWxzZSwJdHJ1ZSwJdHJ1ZSk7Ci1fTlVNRVJJQ19MSU1JVFMgKHVuc2lnbmVkIGludCwJMCwJCVVJTlRfTUFYLAlmYWxzZSwJdHJ1ZSwJdHJ1ZSk7Ci1fTlVNRVJJQ19MSU1JVFMgKHVuc2lnbmVkIHNob3J0LDAsCQlVU0hSVF9NQVgsCWZhbHNlLAl0cnVlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAodW5zaWduZWQgbG9uZywJMCwJCVVMT05HX01BWCwJZmFsc2UsCXRydWUsCXRydWUpOwotX05VTUVSSUNfTElNSVRTICh3Y2hhcl90LAkwLAkJV0NIQVJfTUFYLAlmYWxzZSwJdHJ1ZSwJdHJ1ZSk7Ci1fTlVNRVJJQ19MSU1JVFMgKGZsb2F0LAkJRkxUX01JTiwJRkxUX01BWCwJdHJ1ZSwJZmFsc2UsCXRydWUpOwotX05VTUVSSUNfTElNSVRTIChkb3VibGUsCURCTF9NSU4sCURCTF9NQVgsCXRydWUsCWZhbHNlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAobG9uZyBkb3VibGUsCUxEQkxfTUlOLAlMREJMX01BWCwJdHJ1ZSwJZmFsc2UsCXRydWUpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1fTlVNRVJJQ19MSU1JVFMgKGxvbmcgbG9uZywJTExPTkdfTUlOLAlMTE9OR19NQVgsCXRydWUsCXRydWUsCXRydWUpOwotX05VTUVSSUNfTElNSVRTICh1bnNpZ25lZCBsb25nIGxvbmcsCTAsCVVMTE9OR19NQVgsCWZhbHNlLAl0cnVlLAl0cnVlKTsKLSNlbmRpZgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jZW5kaWYgLy8gRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLS8vLyBNYWNybyBmb3IgZGVmaW5pbmcgbnVtZXJpY19saW1pdHMgc3BlY2lhbGl6YXRpb25zCi0jZGVmaW5lIE5VTUVSSUNfTElNSVRTKHR5cGUsIG1pblZhbCwgbWF4VmFsLCBiU2lnbmVkLCBiSW50ZWdlciwgYkludGVncmFsKQlcCi1uYW1lc3BhY2UgdXN0bCB7IF9OVU1FUklDX0xJTUlUUyAodHlwZSwgbWluVmFsLCBtYXhWYWwsIGJTaWduZWQsIGJJbnRlZ2VyLCBiSW50ZWdyYWwpOyB9Ci0KLS8vLyBSZXR1cm5zIHRoZSByZWNvbW1lbmRlZCBzdHJlYW0gYWxpZ25tZW50IGZvciB0eXBlIFxwIFQuIE92ZXJyaWRlIHdpdGggQUxJR05PRi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHNpemVfdCBhbGlnbm9mIChjb25zdCBUJikKLXsKLSAgICBpZiAobnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVncmFsKQotCXJldHVybiAoX19hbGlnbm9mX18oVCkpOwotICAgIHJldHVybiAoNCk7Ci19Ci0KLSNkZWZpbmUgQUxJR05PRih0eXBlLGdyYWluKQlcCi1uYW1lc3BhY2UgdXN0bCB7CQlcCi0gICAgdGVtcGxhdGUgPD4gaW5saW5lIHNpemVfdCBhbGlnbm9mIChjb25zdCB0eXBlJikgeyByZXR1cm4gKGdyYWluKTsgfSB9Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VsaXN0LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDJiYmRlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VsaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWxpc3QuaAotLy8KLQotI2lmbmRlZiBVTElTVF9IXzU0RTNCNTEwNDk4OTgyQzg3QTBBMUUxOTMyRTY3MjlECi0jZGVmaW5lIFVMSVNUX0hfNTRFM0I1MTA0OTg5ODJDODdBMEExRTE5MzJFNjcyOUQKLQotI2luY2x1ZGUgInV2ZWN0b3IuaCIKLSNpbmNsdWRlICJ1Y3RyYWxnby5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgbGlzdCB1bGlzdC5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIFNlcXVlbmNlcwotLy8vCi0vLy8gXGJyaWVmIExpbmtlZCBsaXN0LCBkZWZpbmVkIGFzIGFuIGFsaWFzIHRvIFxyZWYgdmVjdG9yLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIGxpc3QgOiBwdWJsaWMgdmVjdG9yPFQ+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjxUPjo6c2l6ZV90eXBlCXNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjxUPjo6aXRlcmF0b3IJaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I8VD46OmNvbnN0X2l0ZXJhdG9yCWNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yPFQ+OjpyZWZlcmVuY2UJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yPFQ+Ojpjb25zdF9yZWZlcmVuY2UJY29uc3RfcmVmZXJlbmNlOwotcHVibGljOgotICAgIGlubGluZQkJCWxpc3QgKHZvaWQpCQkJOiB2ZWN0b3I8VD4gKCkge30KLSAgICBpbmxpbmUgZXhwbGljaXQJCWxpc3QgKHNpemVfdHlwZSBuKQkJOiB2ZWN0b3I8VD4gKG4pIHt9Ci0gICAgaW5saW5lCQkJbGlzdCAoc2l6ZV90eXBlIG4sIGNvbnN0IFQmIHYpCTogdmVjdG9yPFQ+IChuLCB2KSB7fQotICAgIGlubGluZQkJCWxpc3QgKGNvbnN0IGxpc3Q8VD4mIHYpCQk6IHZlY3RvcjxUPiAodikge30KLSAgICBpbmxpbmUJCQlsaXN0IChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCTogdmVjdG9yPFQ+IChpMSwgaTIpIHt9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuICh2ZWN0b3I8VD46OnNpemUoKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWJlZ2luICh2b2lkKQkJCXsgcmV0dXJuICh2ZWN0b3I8VD46OmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHZlY3RvcjxUPjo6YmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVuZCAodm9pZCkJCQl7IHJldHVybiAodmVjdG9yPFQ+OjplbmQoKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHZlY3RvcjxUPjo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwdXNoX2Zyb250IChjb25zdCBUJiB2KQkJeyBpbnNlcnQgKGJlZ2luKCksIHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwb3BfZnJvbnQgKHZvaWQpCQl7IGVyYXNlIChiZWdpbigpKTsgfQotICAgIGlubGluZSBjb25zdF9yZWZlcmVuY2UJZnJvbnQgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoKmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJZnJvbnQgKHZvaWQpCQkJeyByZXR1cm4gKCpiZWdpbigpKTsgfQotICAgIGlubGluZSB2b2lkCQkJcmVtb3ZlIChjb25zdCBUJiB2KQkJeyA6OnVzdGw6OnJlbW92ZSAoKnRoaXMsIHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQl1bmlxdWUgKHZvaWQpCQkJeyA6OnVzdGw6OnVuaXF1ZSAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlzb3J0ICh2b2lkKQkJCXsgOjp1c3RsOjpzb3J0ICgqdGhpcyk7IH0KLSAgICB2b2lkCQkJbWVyZ2UgKGxpc3Q8VD4mIGwpOwotICAgIHZvaWQJCQlzcGxpY2UgKGl0ZXJhdG9yIGlwLCBsaXN0PFQ+JiBsLCBpdGVyYXRvciBmaXJzdCA9IE5VTEwsIGl0ZXJhdG9yIGxhc3QgPSBOVUxMKTsKLX07Ci0KLS8vLyBNZXJnZXMgdGhlIGNvbnRlbnRzIHdpdGggXHAgbC4gQXNzdW1lcyBib3RoIGxpc3RzIGFyZSBzb3J0ZWQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgbGlzdDxUPjo6bWVyZ2UgKGxpc3QmIGwpCi17Ci0gICAgbGlzdDxUPjo6cmVzaXplIChzaXplKCkgKyBsLnNpemUoKSk7Ci0gICAgaXRlcmF0b3IgbWUgPSBtZXJnZSAoYmVnaW4oKSwgZW5kKCksIGwuYmVnaW4oKSwgbC5lbmQoKSwgYmVnaW4oKSk7Ci0gICAgbGlzdDxUPjo6cmVzaXplIChkaXN0YW5jZSAoYmVnaW4oKSwgbWUpKTsKLX0KLQotLy8vIE1vdmVzIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGZyb20gXHAgbCB0byB0aGlzIGxpc3QgYXQgXHAgaXAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgbGlzdDxUPjo6c3BsaWNlIChpdGVyYXRvciBpcCwgbGlzdDxUPiYgbCwgaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgaWYgKCFmaXJzdCkKLQlmaXJzdCA9IGwuYmVnaW4oKTsKLSAgICBpZiAoIWxhc3QpCi0JbGFzdCA9IGwuZW5kKCk7Ci0gICAgaW5zZXJ0IChpcCwgZmlyc3QsIGxhc3QpOwotICAgIGwuZXJhc2UgKGZpcnN0LCBsYXN0KTsKLX0KLQotI2RlZmluZSBkZXF1ZSBsaXN0IC8vLzwgbGlzdCBoYXMgYWxsIHRoZSBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IGRlcXVlCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtYXAuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4YzUwNy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bWFwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVtYXAuaAotLy8KLQotI2lmbmRlZiBVTUFQX0hfNDU2NDNGNTE2RTAyQTg3QTNEQ0VBNTAyNDA1MkE2RjUKLSNkZWZpbmUgVU1BUF9IXzQ1NjQzRjUxNkUwMkE4N0EzRENFQTUwMjQwNTJBNkY1Ci0KLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidWZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAidXZlY3Rvci5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgbWFwIHVtYXAuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBBc3NvY2lhdGl2ZUNvbnRhaW5lcnMKLS8vLwotLy8vIFxicmllZiBBIHNvcnRlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgb2YgcGFpcjxLLFY+Ci0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotY2xhc3MgbWFwIDogcHVibGljIHZlY3RvcjxwYWlyPEssVj4gPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBLCQkJCQkJa2V5X3R5cGU7Ci0gICAgdHlwZWRlZiBWCQkJCQkJZGF0YV90eXBlOwotICAgIHR5cGVkZWYgY29uc3QgSyYJCQkJCWNvbnN0X2tleV9yZWY7Ci0gICAgdHlwZWRlZiBjb25zdCBWJgkJCQkJY29uc3RfZGF0YV9yZWY7Ci0gICAgdHlwZWRlZiBjb25zdCBtYXA8SyxWPiYJCQkJcmNzZWxmX3Q7Ci0gICAgdHlwZWRlZiB2ZWN0b3I8cGFpcjxLLFY+ID4JCQkJYmFzZV9jbGFzczsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnZhbHVlX3R5cGUJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpzaXplX3R5cGUJCXNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnBvaW50ZXIJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9wb2ludGVyCQljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6cmVmZXJlbmNlCQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9yZWZlcmVuY2UJY29uc3RfcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfaXRlcmF0b3IJCWNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6aXRlcmF0b3IJCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6cmV2ZXJzZV9pdGVyYXRvcglyZXZlcnNlX2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcgljb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgcGFpcjxjb25zdF9pdGVyYXRvcixjb25zdF9pdGVyYXRvcj4JCWNvbnN0X3JhbmdlX3Q7Ci0gICAgdHlwZWRlZiBwYWlyPGl0ZXJhdG9yLGl0ZXJhdG9yPgkJCXJhbmdlX3Q7Ci1wdWJsaWM6Ci0gICAgaW5saW5lCQkJbWFwICh2b2lkKQkJCTogdmVjdG9yPHBhaXI8SyxWPiA+ICgpIHt9Ci0gICAgZXhwbGljaXQgaW5saW5lCQltYXAgKHNpemVfdHlwZSBuKQkJOiB2ZWN0b3I8cGFpcjxLLFY+ID4gKG4pIHt9Ci0gICAgaW5saW5lCQkJbWFwIChyY3NlbGZfdCB2KQkJOiB2ZWN0b3I8cGFpcjxLLFY+ID4gKHYpIHt9Ci0gICAgaW5saW5lCQkJbWFwIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpIDogdmVjdG9yPHBhaXI8SyxWPiA+KCkgeyBpbnNlcnQgKGkxLCBpMik7IH0KLSAgICBpbmxpbmUgcmNzZWxmX3QJCW9wZXJhdG9yPSAocmNzZWxmX3QgdikJCXsgYmFzZV9jbGFzczo6b3BlcmF0b3I9ICh2KTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3RfZGF0YV9yZWYJb3BlcmF0b3JbXSAoY29uc3Rfa2V5X3JlZiBpKSBjb25zdDsKLSAgICBkYXRhX3R5cGUmCQkJb3BlcmF0b3JbXSAoY29uc3Rfa2V5X3JlZiBpKTsKLSAgICBpbmxpbmUgc2l6ZV90eXBlCQlzaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OnNpemUoKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWJlZ2luICh2b2lkKQkJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjpiZWdpbigpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgliZWdpbiAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjpiZWdpbigpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJZW5kICh2b2lkKQkJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVuZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCXsgY2xlYXIoKTsgaW5zZXJ0IChpMSwgaTIpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwdXNoX2JhY2sgKGNvbnN0X3JlZmVyZW5jZSB2KQkJCXsgaW5zZXJ0ICh2KTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcglmaW5kIChjb25zdF9rZXlfcmVmIGspIGNvbnN0OwotICAgIGlubGluZSBpdGVyYXRvcgkJZmluZCAoY29uc3Rfa2V5X3JlZiBrKQl7IHJldHVybiAoY29uc3RfY2FzdDxpdGVyYXRvcj4gKGNvbnN0X2Nhc3Q8cmNzZWxmX3Q+KCp0aGlzKS5maW5kIChrKSkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWZpbmRfZGF0YSAoY29uc3RfZGF0YV9yZWYgdiwgY29uc3RfaXRlcmF0b3IgZmlyc3QgPSBOVUxMLCBjb25zdF9pdGVyYXRvciBsYXN0ID0gTlVMTCkgY29uc3Q7Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQlmaW5kX2RhdGEgKGNvbnN0X2RhdGFfcmVmIHYsIGl0ZXJhdG9yIGZpcnN0ID0gTlVMTCwgaXRlcmF0b3IgbGFzdCA9IE5VTEwpOwotICAgIGl0ZXJhdG9yCQkJaW5zZXJ0IChjb25zdF9yZWZlcmVuY2Ugdik7Ci0gICAgdm9pZAkJCWluc2VydCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKTsKLSAgICBpbmxpbmUgdm9pZAkJCWVyYXNlIChjb25zdF9rZXlfcmVmIGspOwotICAgIGlubGluZSBpdGVyYXRvcgkJZXJhc2UgKGl0ZXJhdG9yIGVwKQl7IHJldHVybiAoYmFzZV9jbGFzczo6ZXJhc2UgKGVwKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVyYXNlIChpdGVyYXRvciBlcDEsIGl0ZXJhdG9yIGVwMikgeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVyYXNlIChlcDEsIGVwMikpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQljbGVhciAodm9pZCkJCXsgYmFzZV9jbGFzczo6Y2xlYXIoKTsgfQotcHJpdmF0ZToKLSAgICBjb25zdF9pdGVyYXRvcgkJbG93ZXJfYm91bmQgKGNvbnN0X2tleV9yZWYgaykgY29uc3Q7Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQlsb3dlcl9ib3VuZCAoY29uc3Rfa2V5X3JlZiBrKSB7IHJldHVybiAoY29uc3RfY2FzdDxpdGVyYXRvcj4oY29uc3RfY2FzdDxyY3NlbGZfdD4oKnRoaXMpLmxvd2VyX2JvdW5kIChrKSkpOyB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLXR5cGVuYW1lIG1hcDxLLFY+Ojpjb25zdF9pdGVyYXRvciBtYXA8SyxWPjo6bG93ZXJfYm91bmQgKGNvbnN0X2tleV9yZWYgaykgY29uc3QKLXsKLSAgICBjb25zdF9pdGVyYXRvciBmaXJzdCAoYmVnaW4oKSksIGxhc3QgKGVuZCgpKTsKLSAgICB3aGlsZSAoZmlyc3QgIT0gbGFzdCkgewotCWNvbnN0X2l0ZXJhdG9yIG1pZCA9IGFkdmFuY2UgKGZpcnN0LCBkaXN0YW5jZSAoZmlyc3QsbGFzdCkgLyAyKTsKLQlpZiAobWlkLT5maXJzdCA8IGspCi0JICAgIGZpcnN0ID0gYWR2YW5jZSAobWlkLCAxKTsKLQllbHNlCi0JICAgIGxhc3QgPSBtaWQ7Ci0gICAgfQotICAgIHJldHVybiAoZmlyc3QpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgcGFpcjxLLFY+IHdoZXJlIEsgPSBccCBrLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci1pbmxpbmUgdHlwZW5hbWUgbWFwPEssVj46OmNvbnN0X2l0ZXJhdG9yIG1hcDxLLFY+OjpmaW5kIChjb25zdF9rZXlfcmVmIGspIGNvbnN0Ci17Ci0gICAgY29uc3RfaXRlcmF0b3IgaSA9IGxvd2VyX2JvdW5kIChrKTsKLSAgICByZXR1cm4gKChpIDwgZW5kKCkgJiYgayA8IGktPmZpcnN0KSA/IGVuZCgpIDogaSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBwYWlyPEssVj4gd2hlcmUgViA9IFxwIHYsIG9jY3VyaW5nIGluIHJhbmdlIFtmaXJzdCxsYXN0KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotaW5saW5lIHR5cGVuYW1lIG1hcDxLLFY+Ojpjb25zdF9pdGVyYXRvciBtYXA8SyxWPjo6ZmluZF9kYXRhIChjb25zdF9kYXRhX3JlZiB2LCBjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCkgY29uc3QKLXsKLSAgICBpZiAoIWZpcnN0KSBmaXJzdCA9IGJlZ2luKCk7Ci0gICAgaWYgKCFsYXN0KSBsYXN0ID0gZW5kKCk7Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3QgJiYgZmlyc3QtPnNlY29uZCAhPSB2OyArK2ZpcnN0KTsKLSAgICByZXR1cm4gKGZpcnN0KTsKLX0KLQotLy8vIFJldHVybnMgdGhlIHBhaXI8SyxWPiB3aGVyZSBWID0gXHAgdiwgb2NjdXJpbmcgaW4gcmFuZ2UgW2ZpcnN0LGxhc3QpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci1pbmxpbmUgdHlwZW5hbWUgbWFwPEssVj46Oml0ZXJhdG9yIG1hcDxLLFY+OjpmaW5kX2RhdGEgKGNvbnN0X2RhdGFfcmVmIHYsIGl0ZXJhdG9yIGZpcnN0LCBpdGVyYXRvciBsYXN0KQotewotICAgIHJldHVybiAoY29uc3RfY2FzdDxpdGVyYXRvcj4gKGZpbmRfZGF0YSAodiwgY29uc3RfY2FzdDxjb25zdF9pdGVyYXRvcj4oZmlyc3QpLCBjb25zdF9jYXN0PGNvbnN0X2l0ZXJhdG9yPihsYXN0KSkpKTsKLX0KLQotLy8vIFJldHVybnMgZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5IFxwIGsuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWlubGluZSBjb25zdCB0eXBlbmFtZSBtYXA8SyxWPjo6ZGF0YV90eXBlJiBtYXA8SyxWPjo6b3BlcmF0b3JbXSAoY29uc3Rfa2V5X3JlZiBrKSBjb25zdAotewotICAgIGFzc2VydCAoZmluZChrKSAhPSBlbmQoKSAmJiAib3BlcmF0b3JbXSBjb25zdCBjYW4gbm90IGluc2VydCBub24tZXhpc3RlbnQga2V5cyIpOwotICAgIHJldHVybiAoZmluZChrKS0+c2Vjb25kKTsKLX0KLQotLy8vIFJldHVybnMgZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5IFxwIGsuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLXR5cGVuYW1lIG1hcDxLLFY+OjpkYXRhX3R5cGUmIG1hcDxLLFY+OjpvcGVyYXRvcltdIChjb25zdF9rZXlfcmVmIGspCi17Ci0gICAgaXRlcmF0b3IgaXAgPSBsb3dlcl9ib3VuZCAoayk7Ci0gICAgaWYgKGlwID09IGVuZCgpIHx8IGsgPCBpcC0+Zmlyc3QpCi0JaXAgPSBiYXNlX2NsYXNzOjppbnNlcnQgKGlwLCBtYWtlX3BhaXIgKGssIFYoKSkpOwotICAgIHJldHVybiAoaXAtPnNlY29uZCk7Ci19Ci0KLS8vLyBJbnNlcnRzIHRoZSBwYWlyIGludG8gdGhlIGNvbnRhaW5lci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotdHlwZW5hbWUgbWFwPEssVj46Oml0ZXJhdG9yIG1hcDxLLFY+OjppbnNlcnQgKGNvbnN0X3JlZmVyZW5jZSB2KQotewotICAgIGl0ZXJhdG9yIGlwID0gbG93ZXJfYm91bmQgKHYuZmlyc3QpOwotICAgIGlmIChpcCA9PSBlbmQoKSB8fCB2LmZpcnN0IDwgaXAtPmZpcnN0KQotCWlwID0gYmFzZV9jbGFzczo6aW5zZXJ0IChpcCwgdik7Ci0gICAgZWxzZQotCSppcCA9IHY7Ci0gICAgcmV0dXJuIChpcCk7Ci19Ci0KLS8vLyBJbnNlcnRzIGVsZW1lbnRzIGZyb20gcmFuZ2UgW2kxLGkyKSBpbnRvIHRoZSBjb250YWluZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLXZvaWQgbWFwPEssVj46Omluc2VydCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQotewotICAgIGFzc2VydCAoaTEgPD0gaTIpOwotICAgIHJlc2VydmUgKHNpemUoKSArIGRpc3RhbmNlIChpMSwgaTIpKTsKLSAgICBmb3IgKDsgaTEgIT0gaTI7ICsraTEpCi0JaW5zZXJ0ICgqaTEpOwotfQotCi0vLy8gRXJhc2VzIHRoZSBlbGVtZW50IHdpdGgga2V5IHZhbHVlIFxwIGsuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWlubGluZSB2b2lkIG1hcDxLLFY+OjplcmFzZSAoY29uc3Rfa2V5X3JlZiBrKQotewotICAgIGl0ZXJhdG9yIGlwID0gZmluZCAoayk7Ci0gICAgaWYgKGlwICE9IGVuZCgpKQotCWVyYXNlIChpcCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtYXRyaXguaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtYXRyaXguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY4MTBmMS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bWF0cml4LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdW1hdHJpeC5oCi0vLwotCi0jaWZuZGVmIFVNQVRSSVhfSF83NDBFQkZFRjU1NEU4MzM2NDVFMEZENzI0MTlBODE4NQotI2RlZmluZSBVTUFUUklYX0hfNzQwRUJGRUY1NTRFODMzNjQ1RTBGRDcyNDE5QTgxODUKLQotI2luY2x1ZGUgInV0dXBsZS5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgbWF0cml4IHVtYXRyaXguaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBTZXF1ZW5jZXMKLS8vLwotLy8vIFxicmllZiBBIHR3by1kaW1lbnNpb25hbCBhcnJheSBvZiBOWCpOWSBlbGVtZW50cyBvZiB0eXBlIFQuCi0vLy8KLXRlbXBsYXRlIDxzaXplX3QgTlgsIHNpemVfdCBOWSwgdHlwZW5hbWUgVD4KLWNsYXNzIG1hdHJpeCA6IHB1YmxpYyB0dXBsZTxOWCpOWSxUPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0dXBsZTxOWCxUPgkJCQkJcm93X3R5cGU7Ci0gICAgdHlwZWRlZiB0dXBsZTxOWSxUPgkJCQkJY29sdW1uX3R5cGU7Ci0gICAgdHlwZWRlZiB0dXBsZTxOWCpOWSxUPgkJCQl0dXBsZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6dmFsdWVfdHlwZQkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OnNpemVfdHlwZQkJc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6cG9pbnRlcgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OmNvbnN0X3BvaW50ZXIJCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjpyZWZlcmVuY2UJCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OmNvbnN0X3JlZmVyZW5jZQljb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjppdGVyYXRvcgkJaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjpjb25zdF9pdGVyYXRvcgkJY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjpyYW5nZV90CQlyYW5nZV90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6Y29uc3RfcmFuZ2VfdAkJY29uc3RfcmFuZ2VfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OnJldmVyc2VfaXRlcmF0b3IJcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IJY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCQltYXRyaXggKHZvaWQpCQkJeyBmaWxsX24gKG1hdHJpeDo6YmVnaW4oKSwgTlgqTlksIFQoKSk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQljb2x1bW5zICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKE5YKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJCXJvd3MgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoTlkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWF0IChzaXplX3R5cGUgaSkgY29uc3QJCXsgcmV0dXJuIChtYXRyaXg6OmJlZ2luKCkgKyBpICogTlgpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQlhdCAoc2l6ZV90eXBlIGkpCQl7IHJldHVybiAobWF0cml4OjpiZWdpbigpICsgaSAqIE5YKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcglvcGVyYXRvcltdIChzaXplX3R5cGUgaSkgY29uc3QJeyByZXR1cm4gKGF0IChpKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCW9wZXJhdG9yW10gKHNpemVfdHlwZSBpKQl7IHJldHVybiAoYXQgKGkpKTsgfQotICAgIGlubGluZSByb3dfdHlwZQkJcm93IChzaXplX3R5cGUgcikgY29uc3QJCXsgcmV0dXJuIChyb3dfdHlwZSAoYXQgKHIpKSk7IH0KLSAgICBpbmxpbmUgY29sdW1uX3R5cGUJCWNvbHVtbiAoc2l6ZV90eXBlIGMpIGNvbnN0OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KLSAgICBpbmxpbmUgY29uc3QgbWF0cml4JglvcGVyYXRvcj0gKGNvbnN0IG1hdHJpeDxOWCxOWSxUMj4mIHNyYykJeyB0dXBsZV90eXBlOjpvcGVyYXRvcj0gKHNyYyk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IG1hdHJpeCYJb3BlcmF0b3I9IChjb25zdCBtYXRyaXg8TlgsTlksVD4mIHNyYykJeyB0dXBsZV90eXBlOjpvcGVyYXRvcj0gKHNyYyk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IG1hdHJpeCYJb3BlcmF0b3IrPSAoY29uc3RfcmVmZXJlbmNlIHYpCQl7IHR1cGxlX3R5cGU6Om9wZXJhdG9yKz0gKHYpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBtYXRyaXgmCW9wZXJhdG9yLT0gKGNvbnN0X3JlZmVyZW5jZSB2KQkJeyB0dXBsZV90eXBlOjpvcGVyYXRvci09ICh2KTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3QgbWF0cml4JglvcGVyYXRvcio9IChjb25zdF9yZWZlcmVuY2UgdikJCXsgdHVwbGVfdHlwZTo6b3BlcmF0b3IqPSAodik7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IG1hdHJpeCYJb3BlcmF0b3IvPSAoY29uc3RfcmVmZXJlbmNlIHYpCQl7IHR1cGxlX3R5cGU6Om9wZXJhdG9yLz0gKHYpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBtYXRyaXgJCW9wZXJhdG9yKyAoY29uc3RfcmVmZXJlbmNlIHYpIGNvbnN0Ci0JCQkJICAgIHsgbWF0cml4IHJlc3VsdCAoKnRoaXMpOyByZXN1bHQgKz0gdjsgcmV0dXJuIChyZXN1bHQpOyB9Ci0gICAgaW5saW5lIGNvbnN0IG1hdHJpeAkJb3BlcmF0b3ItIChjb25zdF9yZWZlcmVuY2UgdikgY29uc3QKLQkJCQkgICAgeyBtYXRyaXggcmVzdWx0ICgqdGhpcyk7IHJlc3VsdCAtPSB2OyByZXR1cm4gKHJlc3VsdCk7IH0KLSAgICBpbmxpbmUgY29uc3QgbWF0cml4CQlvcGVyYXRvciogKGNvbnN0X3JlZmVyZW5jZSB2KSBjb25zdAotCQkJCSAgICB7IG1hdHJpeCByZXN1bHQgKCp0aGlzKTsgcmVzdWx0ICo9IHY7IHJldHVybiAocmVzdWx0KTsgfQotICAgIGlubGluZSBjb25zdCBtYXRyaXgJCW9wZXJhdG9yLyAoY29uc3RfcmVmZXJlbmNlIHYpIGNvbnN0Ci0JCQkJICAgIHsgbWF0cml4IHJlc3VsdCAoKnRoaXMpOyByZXN1bHQgLz0gdjsgcmV0dXJuIChyZXN1bHQpOyB9Ci19OwotCi10ZW1wbGF0ZSA8c2l6ZV90IE5YLCBzaXplX3QgTlksIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdHlwZW5hbWUgbWF0cml4PE5YLE5ZLFQ+Ojpjb2x1bW5fdHlwZSBtYXRyaXg8TlgsTlksVD46OmNvbHVtbiAoc2l6ZV90eXBlIGMpIGNvbnN0Ci17Ci0gICAgY29sdW1uX3R5cGUgcmVzdWx0OwotICAgIGNvbnN0X2l0ZXJhdG9yIHNyYyAobWF0cml4OjpiZWdpbigpICsgYyk7Ci0gICAgaXRlcmF0b3IgZGVzdCAocmVzdWx0LmJlZ2luKCkpOwotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgTlk7ICsrIGksICsrIGRlc3QsIHNyYyArPSBOWCkKLQkqZGVzdCA9ICpzcmM7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bWVtb3J5LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bWVtb3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1YTkwMDUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW1lbW9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1bWVtb3J5LmgKLS8vCi0KLSNpZm5kZWYgVU1FTU9SWV9IXzRBQjVCMERCNUJGMDkxNDA1NDE0MDlDQzQ3QkNEMTdBCi0jZGVmaW5lIFVNRU1PUllfSF80QUI1QjBEQjVCRjA5MTQwNTQxNDA5Q0M0N0JDRDE3QQotCi0jaW5jbHVkZSAidW5ldy5oIgotI2lmZGVmIEhBVkVfQUxMT0NBX0gKLSAgICAjaW5jbHVkZSA8YWxsb2NhLmg+Ci0jZWxzZQotICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZgotI2luY2x1ZGUgInVwYWlyLmgiCi0jaW5jbHVkZSAidWl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAidWxpbWl0cy5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgYXV0b19wdHIgdW1lbW9yeS5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIE1lbW9yeU1hbmFnZW1lbnQKLS8vLwotLy8vIFxicmllZiBBIHNtYXJ0IHBvaW50ZXIuCi0vLy8KLS8vLyBDYWxscyBkZWxldGUgaW4gdGhlIGRlc3RydWN0b3I7IGFzc2lnbm1lbnQgdHJhbnNmZXJzIG93bmVyc2hpcC4KLS8vLyBUaGlzIGNsYXNzIGRvZXMgbm90IHdvcmsgd2l0aCB2b2lkIHBvaW50ZXJzIGR1ZSB0byB0aGUgYWJzZW5jZQotLy8vIG9mIHRoZSByZXF1aXJlZCBkZXJlZmVyZW5jZSBvcGVyYXRvci4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBhdXRvX3B0ciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBUCQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgVCoJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiBUJgkJcmVmZXJlbmNlOwotcHVibGljOgotICAgIC8vLyBUYWtlcyBvd25lcnNoaXAgb2YgXHAgcC4KLSAgICBpbmxpbmUgZXhwbGljaXQJYXV0b19wdHIgKHBvaW50ZXIgcCA9IE5VTEwpCTogbV9wIChwKSB7fQotICAgIC8vLyBUYWtlcyBvd25lcnNoaXAgb2YgcG9pbnRlciBpbiBccCBwLiBccCBwIHJlbGlucXVpc2hlcyBvd25lcnNoaXAuCi0gICAgaW5saW5lCQlhdXRvX3B0ciAoYXV0b19wdHI8VD4mIHApCTogbV9wIChwLnJlbGVhc2UoKSkge30KLSAgICAvLy8gRGVsZXRlcyB0aGUgb3duZWQgcG9pbnRlci4KLSAgICBpbmxpbmUJICAgICAgIH5hdXRvX3B0ciAodm9pZCkJCQl7IGRlbGV0ZSBtX3A7IH0KLSAgICAvLy8gUmV0dXJucyB0aGUgcG9pbnRlciB3aXRob3V0IHJlbGlucXVpc2hpbmcgb3duZXJzaGlwLgotICAgIGlubGluZSBwb2ludGVyCWdldCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX3ApOyB9Ci0gICAgLy8vIFJldHVybnMgdGhlIHBvaW50ZXIgYW5kIGdpdmVzIHVwIG93bmVyc2hpcC4KLSAgICBpbmxpbmUgcG9pbnRlcglyZWxlYXNlICh2b2lkKQkJCXsgcG9pbnRlciBydiAobV9wKTsgbV9wID0gTlVMTDsgcmV0dXJuIChydik7IH0KLSAgICAvLy8gRGVsZXRlcyB0aGUgcG9pbnRlciBhbmQgc2V0cyBpdCBlcXVhbCB0byBccCBwLgotICAgIGlubGluZSB2b2lkCQlyZXNldCAocG9pbnRlciBwKQkJeyBpZiAocCAhPSBtX3ApIHsgZGVsZXRlIG1fcDsgbV9wID0gcDsgfSB9Ci0gICAgLy8vIFRha2VzIG93bmVyc2hpcCBvZiBccCBwLgotICAgIGlubGluZSBhdXRvX3B0cjxUPiYJb3BlcmF0b3I9IChwb2ludGVyIHApCQl7IHJlc2V0IChwKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICAvLy8gVGFrZXMgb3duZXJzaGlwIG9mIHBvaW50ZXIgaW4gXHAgcC4gXHAgcCByZWxpbnF1aXNoZXMgb3duZXJzaGlwLgotICAgIGlubGluZSBhdXRvX3B0cjxUPiYJb3BlcmF0b3I9IChhdXRvX3B0cjxUPiYgcCkJeyByZXNldCAocC5yZWxlYXNlKCkpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJb3BlcmF0b3IqICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKCptX3ApOyB9Ci0gICAgaW5saW5lIHBvaW50ZXIJb3BlcmF0b3ItPiAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX3ApOyB9Ci0gICAgaW5saW5lIGJvb2wJCW9wZXJhdG9yPT0gKGNvbnN0IHBvaW50ZXIgcCkgY29uc3QJeyByZXR1cm4gKG1fcCA9PSBwKTsgfQotICAgIGlubGluZSBib29sCQlvcGVyYXRvcj09IChjb25zdCBhdXRvX3B0cjxUPiYgcCkgY29uc3QJeyByZXR1cm4gKG1fcCA9PSBwLm1fcCk7IH0KLSAgICBpbmxpbmUgYm9vbAkJb3BlcmF0b3I8IChjb25zdCBhdXRvX3B0cjxUPiYgcCkgY29uc3QJeyByZXR1cm4gKHAubV9wIDwgbV9wKTsgfQotcHJpdmF0ZToKLSAgICBwb2ludGVyCQltX3A7Ci19OwotCi0vLy8gQ2FsbHMgdGhlIHBsYWNlbWVudCBuZXcgb24gXHAgcC4KLS8vLyBcaW5ncm91cCBSYXdTdG9yYWdlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIGNvbnN0cnVjdCAoVCogcCkKLXsKLSAgICBuZXcgKHApIFQ7Ci19Ci0KLS8vLyBDYWxscyB0aGUgcGxhY2VtZW50IG5ldyBvbiBccCBwLgotLy8vIFxpbmdyb3VwIFJhd1N0b3JhZ2VBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1pbmxpbmUgdm9pZCBjb25zdHJ1Y3QgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIGlmICghbnVtZXJpY19saW1pdHM8dmFsdWVfdHlwZT46OmlzX2ludGVncmFsKSB7Ci0Jd2hpbGUgKGZpcnN0IDwgbGFzdCkgewotCSAgICBjb25zdHJ1Y3QgKCYqZmlyc3QpOwotCSAgICArKyBmaXJzdDsKLQl9Ci0gICAgfQotfQotCi0vLy8gQ2FsbHMgdGhlIHBsYWNlbWVudCBuZXcgb24gXHAgcC4KLS8vLyBcaW5ncm91cCBSYXdTdG9yYWdlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIGNvbnN0cnVjdCAoVCogcCwgY29uc3QgVCYgdmFsdWUpCi17Ci0gICAgbmV3IChwKSBUICh2YWx1ZSk7Ci19Ci0KLS8vLyBDYWxscyB0aGUgZGVzdHJ1Y3RvciBvZiBccCBwIHdpdGhvdXQgY2FsbGluZyBkZWxldGUuCi0vLy8gXGluZ3JvdXAgUmF3U3RvcmFnZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBkZXN0cm95IChUKiBwKSB0aHJvdygpCi17Ci0gICAgcC0+flQoKTsKLX0KLQotLy8vIENhbGxzIHRoZSBkZXN0cnVjdG9yIG9uIGVsZW1lbnRzIGluIHJhbmdlIFtmaXJzdCwgbGFzdCkgd2l0aG91dCBjYWxsaW5nIGRlbGV0ZS4KLS8vLyBcaW5ncm91cCBSYXdTdG9yYWdlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotaW5saW5lIHZvaWQgZGVzdHJveSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCkgdGhyb3coKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICBpZiAoIW51bWVyaWNfbGltaXRzPHZhbHVlX3R5cGU+Ojppc19pbnRlZ3JhbCkKLQlmb3IgKDsgZmlyc3QgPCBsYXN0OyArKyBmaXJzdCkKLQkgICAgZGVzdHJveSAoJipmaXJzdCk7Ci19Ci0KLS8vLyBDYXN0cyBccCBwIHRvIHRoZSB0eXBlIG9mIHRoZSBzZWNvbmQgcG9pbnRlciBhcmd1bWVudC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogY2FzdF90b190eXBlICh2b2lkKiBwLCBjb25zdCBUKikgeyByZXR1cm4gKChUKikgcCk7IH0KLQotLy8vIFxicmllZiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGJ1ZmZlciBwYWlyIGZyb20gXHAgcCBhbmQgXHAgbgotLy8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIGFsbG9jYSB0byBjcmVhdGUgdGVtcG9yYXJ5IGJ1ZmZlcnMuCi0vLy8gVGhlIHNpemUgaW4gdGhlIHJldHVybmVkIHBhaXIgaXMgc2V0IHRvIDAgaWYgdGhlIGFsbG9jYXRpb24gaXMgdW5zdWNjZXNzZnVsLgotLy8vIFxpbmdyb3VwIFJhd1N0b3JhZ2VBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHBhaXI8VCosIHB0cmRpZmZfdD4gbWFrZV90ZW1wb3JhcnlfYnVmZmVyICh2b2lkKiBwLCBzaXplX3QgbiwgY29uc3QgVCogcHR5cGUpCi17Ci0gICAgcmV0dXJuIChtYWtlX3BhaXIgKGNhc3RfdG9fdHlwZShwLHB0eXBlKSwgcHRyZGlmZl90KHAgPyBuIDogMCkpKTsKLX0KLQotI2lmZGVmIEhBVkVfQUxMT0NBX0gKLSAgICAvLy8gXGJyaWVmIEFsbG9jYXRlcyBhIHRlbXBvcmFyeSBidWZmZXIsIGlmIHBvc3NpYmxlLgotICAgIC8vLyBcaW5ncm91cCBSYXdTdG9yYWdlQWxnb3JpdGhtcwotICAgICNkZWZpbmUgZ2V0X3RlbXBvcmFyeV9idWZmZXIoc2l6ZSwgcHR5cGUpCW1ha2VfdGVtcG9yYXJ5X2J1ZmZlciAoYWxsb2NhKHNpemVfb2ZfZWxlbWVudHMoc2l6ZSwgcHR5cGUpKSwgc2l6ZSwgcHR5cGUpCi0gICAgI2RlZmluZSByZXR1cm5fdGVtcG9yYXJ5X2J1ZmZlcihwKQotI2Vsc2UKLSAgICAjZGVmaW5lIGdldF90ZW1wb3JhcnlfYnVmZmVyKHNpemUsIHB0eXBlKQltYWtlX3RlbXBvcmFyeV9idWZmZXIgKG1hbGxvYyhzaXplX29mX2VsZW1lbnRzKHNpemUsIHB0eXBlKSksIHNpemUsIHB0eXBlKQotICAgICNkZWZpbmUgcmV0dXJuX3RlbXBvcmFyeV9idWZmZXIocCkJCWlmIChwKSBmcmVlIChwKSwgcCA9IE5VTEwKLSNlbmRpZgotCi0vLy8gQ29waWVzIFtmaXJzdCwgbGFzdCkgaW50byByZXN1bHQgYnkgY2FsbGluZyBjb3B5IGNvbnN0cnVjdG9ycyBpbiByZXN1bHQuCi0vLy8gXGluZ3JvdXAgUmF3U3RvcmFnZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLUZvcndhcmRJdGVyYXRvciB1bmluaXRpYWxpemVkX2NvcHkgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgRm9yd2FyZEl0ZXJhdG9yIHJlc3VsdCkKLXsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KSB7Ci0JY29uc3RydWN0ICgmKnJlc3VsdCwgKmZpcnN0KTsKLQkrKyByZXN1bHQ7Ci0JKysgZmlyc3Q7Ci0gICAgfQotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIENvcGllcyBbZmlyc3QsIGZpcnN0ICsgbikgaW50byByZXN1bHQgYnkgY2FsbGluZyBjb3B5IGNvbnN0cnVjdG9ycyBpbiByZXN1bHQuCi0vLy8gXGluZ3JvdXAgUmF3U3RvcmFnZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLUZvcndhcmRJdGVyYXRvciB1bmluaXRpYWxpemVkX2NvcHlfbiAoSW5wdXRJdGVyYXRvciBmaXJzdCwgc2l6ZV90IG4sIEZvcndhcmRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgd2hpbGUgKG4tLSkgewotCWNvbnN0cnVjdCAoJipyZXN1bHQsICpmaXJzdCk7Ci0JKysgcmVzdWx0OwotCSsrIGZpcnN0OwotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBDYWxscyBjb25zdHJ1Y3Qgb24gYWxsIGVsZW1lbnRzIGluIFtmaXJzdCwgbGFzdCkgd2l0aCB2YWx1ZSBccCB2LgotLy8vIFxpbmdyb3VwIFJhd1N0b3JhZ2VBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci12b2lkIHVuaW5pdGlhbGl6ZWRfZmlsbCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgdikKLXsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KSB7Ci0JY29uc3RydWN0ICgmKmZpcnN0LCB2KTsKLQkrKyBmaXJzdDsKLSAgICB9Ci19Ci0KLS8vLyBDYWxscyBjb25zdHJ1Y3Qgb24gYWxsIGVsZW1lbnRzIGluIFtmaXJzdCwgZmlyc3QgKyBuKSB3aXRoIHZhbHVlIFxwIHYuCi0vLy8gXGluZ3JvdXAgUmF3U3RvcmFnZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgVD4KLUZvcndhcmRJdGVyYXRvciB1bmluaXRpYWxpemVkX2ZpbGxfbiAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBzaXplX3QgbiwgY29uc3QgVCYgdikKLXsKLSAgICB3aGlsZSAobi0tKSB7Ci0JY29uc3RydWN0ICgmKmZpcnN0LCB2KTsKLQkrKyBmaXJzdDsKLSAgICB9Ci0gICAgcmV0dXJuIChmaXJzdCk7Ci19Ci0gICAgCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bXVsdGltYXAuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtdWx0aW1hcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDZjYTQ4Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtdWx0aW1hcC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1bXVsdGltYXAuaAotLy8KLQotI2lmbmRlZiBVTVVMVElNQVBfSF80NTc0M0Y1MTZFMDJBODdBM0ZDRUE1MDI0MDUyQTZGNQotI2RlZmluZSBVTVVMVElNQVBfSF80NTc0M0Y1MTZFMDJBODdBM0ZDRUE1MDI0MDUyQTZGNQotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVmdW5jdGlvbi5oIgotI2luY2x1ZGUgInV2ZWN0b3IuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIG11bHRpbWFwIHVtdWx0aW1hcC5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEFzc29jaWF0aXZlQ29udGFpbmVycwotLy8vCi0vLy8gXGJyaWVmIEEgc29ydGVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciB0aGF0IG1heSBjb250YWluZXIgbXVsdGlwbGUgZW50cmllcyBmb3IgZWFjaCBrZXkuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotY2xhc3MgbXVsdGltYXAgOiBwdWJsaWMgdmVjdG9yPHBhaXI8SyxWPiA+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEsJCQkJCQlrZXlfdHlwZTsKLSAgICB0eXBlZGVmIFYJCQkJCQlkYXRhX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdCBLJgkJCQkJY29uc3Rfa2V5X3JlZjsKLSAgICB0eXBlZGVmIGNvbnN0IFYmCQkJCQljb25zdF9kYXRhX3JlZjsKLSAgICB0eXBlZGVmIGNvbnN0IG11bHRpbWFwPEssVj4mCQkJcmNzZWxmX3Q7Ci0gICAgdHlwZWRlZiB2ZWN0b3I8cGFpcjxLLFY+ID4JCQkJYmFzZV9jbGFzczsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnZhbHVlX3R5cGUJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnNpemVfdHlwZQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpwb2ludGVyCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9wb2ludGVyCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpyZWZlcmVuY2UJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcmVmZXJlbmNlCWNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X2l0ZXJhdG9yCQljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6Oml0ZXJhdG9yCQlpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnJldmVyc2VfaXRlcmF0b3IJcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IJY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHBhaXI8Y29uc3RfaXRlcmF0b3IsY29uc3RfaXRlcmF0b3I+CQljb25zdF9yYW5nZV90OwotICAgIHR5cGVkZWYgcGFpcjxpdGVyYXRvcixpdGVyYXRvcj4JCQlyYW5nZV90OwotcHVibGljOgotICAgIGlubGluZQkJCW11bHRpbWFwICh2b2lkKQkJOiB2ZWN0b3I8cGFpcjxLLFY+ID4gKCkge30gCi0gICAgZXhwbGljaXQgaW5saW5lCQltdWx0aW1hcCAoc2l6ZV90eXBlIG4pCTogdmVjdG9yPHBhaXI8SyxWPiA+IChuKSB7fSAKLSAgICBpbmxpbmUJCQltdWx0aW1hcCAocmNzZWxmX3QgdikJOiB2ZWN0b3I8cGFpcjxLLFY+ID4gKHYpIHt9IAotICAgIGlubGluZQkJCW11bHRpbWFwIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCTogdmVjdG9yPHBhaXI8SyxWPiA+ICgpIHsgaW5zZXJ0IChpMSwgaTIpOyB9IAotICAgIGlubGluZSByY3NlbGZfdAkJb3BlcmF0b3I9IChyY3NlbGZfdCB2KQl7IGJhc2VfY2xhc3M6Om9wZXJhdG9yPSAodik7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJhc2VfY2xhc3M6OnNpemUoKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWJlZ2luICh2b2lkKQkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAl7IHJldHVybiAoYmFzZV9jbGFzczo6YmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVuZCAodm9pZCkJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAl7IHJldHVybiAoYmFzZV9jbGFzczo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikgeyBjbGVhcigpOyBpbnNlcnQgKGkxLCBpMik7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQljb3VudCAoY29uc3Rfa2V5X3JlZiBrKSBjb25zdAkJeyByZXR1cm4gKHVwcGVyX2JvdW5kKGspIC0gbG93ZXJfYm91bmQoaykpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwdXNoX2JhY2sgKGNvbnN0X3JlZmVyZW5jZSB2KQkJeyBpbnNlcnQgKHYpOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JhbmdlX3QJZXF1YWxfcmFuZ2UgKGNvbnN0X2tleV9yZWYgaykgY29uc3QJeyByZXR1cm4gKG1ha2VfcGFpciAobG93ZXJfYm91bmQoayksIHVwcGVyX2JvdW5kKGspKSk7IH0KLSAgICBpbmxpbmUgcmFuZ2VfdAkJZXF1YWxfcmFuZ2UgKGNvbnN0X2tleV9yZWYgaykJCXsgcmV0dXJuIChtYWtlX3BhaXIgKGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KGxvd2VyX2JvdW5kKGspKSwgY29uc3RfY2FzdDxpdGVyYXRvcj4odXBwZXJfYm91bmQoaykpKSk7IH0KLSAgICBjb25zdF9pdGVyYXRvcgkJbG93ZXJfYm91bmQgKGNvbnN0X2tleV9yZWYgaykgY29uc3Q7Ci0gICAgY29uc3RfaXRlcmF0b3IJCXVwcGVyX2JvdW5kIChjb25zdF9rZXlfcmVmIGspIGNvbnN0OwotICAgIGlubGluZSBpdGVyYXRvcgkJaW5zZXJ0IChjb25zdF9yZWZlcmVuY2Ugdik7Ci0gICAgdm9pZAkJCWluc2VydCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKTsKLSAgICBpbmxpbmUgdm9pZAkJCWVyYXNlIChjb25zdF9rZXlfcmVmIGspCQkJeyBlcmFzZSAoY29uc3RfY2FzdDxpdGVyYXRvcj4obG93ZXJfYm91bmQoaykpLCBjb25zdF9jYXN0PGl0ZXJhdG9yPih1cHBlcl9ib3VuZChrKSkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllcmFzZSAoaXRlcmF0b3IgZXApCQkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVyYXNlIChlcCkpOyB9IAotICAgIGlubGluZSBpdGVyYXRvcgkJZXJhc2UgKGl0ZXJhdG9yIGVwMSwgaXRlcmF0b3IgZXAyKQl7IHJldHVybiAoYmFzZV9jbGFzczo6ZXJhc2UgKGVwMSwgZXAyKSk7IH0gCi0gICAgaW5saW5lIHZvaWQJCQljbGVhciAodm9pZCkJCQkJeyBiYXNlX2NsYXNzOjpjbGVhcigpOyB9Ci19OwotCi0vLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgZmlyc3QgZWxlbWVudCB3aXRoIGtleSB2YWx1ZSBccCBrLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBtdWx0aW1hcDxLLFY+Ojpjb25zdF9pdGVyYXRvciBtdWx0aW1hcDxLLFY+Ojpsb3dlcl9ib3VuZCAoY29uc3Rfa2V5X3JlZiBrKSBjb25zdAotewotICAgIGNvbnN0X2l0ZXJhdG9yIGZpcnN0IChiZWdpbigpKSwgbGFzdCAoZW5kKCkpOwotICAgIHdoaWxlIChmaXJzdCAhPSBsYXN0KSB7Ci0JY29uc3RfaXRlcmF0b3IgbWlkID0gYWR2YW5jZSAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCxsYXN0KSAvIDIpOwotCWlmIChtaWQtPmZpcnN0IDwgaykKLQkgICAgZmlyc3QgPSBhZHZhbmNlIChtaWQsIDEpOwotCWVsc2UKLQkgICAgbGFzdCA9IG1pZDsKLSAgICB9Ci0gICAgcmV0dXJuIChmaXJzdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBmaXJzdCBlbGVtZW50IHdpdGgga2V5IHZhbHVlIFxwIGsuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLXR5cGVuYW1lIG11bHRpbWFwPEssVj46OmNvbnN0X2l0ZXJhdG9yIG11bHRpbWFwPEssVj46OnVwcGVyX2JvdW5kIChjb25zdF9rZXlfcmVmIGspIGNvbnN0Ci17Ci0gICAgY29uc3RfaXRlcmF0b3IgZmlyc3QgKGJlZ2luKCkpLCBsYXN0IChlbmQoKSk7Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKLQljb25zdF9pdGVyYXRvciBtaWQgPSBhZHZhbmNlIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LGxhc3QpIC8gMik7Ci0JaWYgKGsgPCBtaWQtPmZpcnN0KQotCSAgICBsYXN0ID0gbWlkOwotCWVsc2UKLQkgICAgZmlyc3QgPSBhZHZhbmNlIChtaWQsIDEpOwotICAgIH0KLSAgICByZXR1cm4gKGxhc3QpOwotfQotCi0vLy8gSW5zZXJ0cyB0aGUgcGFpciBpbnRvIHRoZSBjb250YWluZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWlubGluZSB0eXBlbmFtZSBtdWx0aW1hcDxLLFY+OjppdGVyYXRvciBtdWx0aW1hcDxLLFY+OjppbnNlcnQgKGNvbnN0X3JlZmVyZW5jZSB2KQotewotICAgIGl0ZXJhdG9yIGlwID0gY29uc3RfY2FzdDxpdGVyYXRvcj4gKHVwcGVyX2JvdW5kICh2LmZpcnN0KSk7Ci0gICAgcmV0dXJuIChiYXNlX2NsYXNzOjppbnNlcnQgKGlwLCB2KSk7Ci19Ci0KLS8vLyBJbnNlcnRzIGVsZW1lbnRzIGZyb20gcmFuZ2UgW2kxLGkyKSBpbnRvIHRoZSBjb250YWluZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLXZvaWQgbXVsdGltYXA8SyxWPjo6aW5zZXJ0IChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCi17Ci0gICAgYXNzZXJ0IChpMSA8PSBpMik7Ci0gICAgcmVzZXJ2ZSAoc2l6ZSgpICsgZGlzdGFuY2UgKGkxLCBpMikpOwotICAgIGZvciAoOyBpMSAhPSBpMjsgKytpMSkKLQlpbnNlcnQgKCppMSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtdWx0aXNldC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW11bHRpc2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNGI4NzcuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW11bHRpc2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVtdWx0aXNldC5oCi0vLwotCi0jaWZuZGVmIFVNVUxUSVNFVF9IXzQ0NkFFREJCN0Y2MUM2OTk0REMyMjhDMjVENUZBM0ExCi0jZGVmaW5lIFVNVUxUSVNFVF9IXzQ0NkFFREJCN0Y2MUM2OTk0REMyMjhDMjVENUZBM0ExCi0KLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidWFsZ28uaCIKLSNpbmNsdWRlICJ1dmVjdG9yLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBtdWx0aXNldCB1bXVsdGlzZXQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBBc3NvY2lhdGl2ZUNvbnRhaW5lcnMKLS8vLwotLy8vIFxicmllZiBNdWx0aXBsZSBzb3J0ZWQgY29udGFpbmVyLgotLy8vIFVubGlrZSBzZXQsIGl0IG1heSBjb250YWluIG11bHRpcGxlIGNvcGllcyBvZiBlYWNoIGVsZW1lbnQuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgbXVsdGlzZXQgOiBwdWJsaWMgdmVjdG9yPFQ+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IG11bHRpc2V0PFQ+JgkJCQlyY3NlbGZfdDsKLSAgICB0eXBlZGVmIHZlY3RvcjxUPgkJCQkJYmFzZV9jbGFzczsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnZhbHVlX3R5cGUJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpzaXplX3R5cGUJCXNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnBvaW50ZXIJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9wb2ludGVyCQljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6cmVmZXJlbmNlCQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9yZWZlcmVuY2UJY29uc3RfcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfaXRlcmF0b3IJCWNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6aXRlcmF0b3IJCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6cmV2ZXJzZV9pdGVyYXRvcglyZXZlcnNlX2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcgljb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotcHVibGljOgotICAgIGlubGluZQkJCW11bHRpc2V0ICh2b2lkKQkJOiB2ZWN0b3I8VD4gKCkge30KLSAgICBleHBsaWNpdCBpbmxpbmUJCW11bHRpc2V0IChzaXplX3R5cGUgbikJOiB2ZWN0b3I8VD4gKG4pIHt9Ci0gICAgaW5saW5lCQkJbXVsdGlzZXQgKHJjc2VsZl90IHYpCTogdmVjdG9yPFQ+ICh2KSB7fSAKLSAgICBpbmxpbmUJCQltdWx0aXNldCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKSA6IHZlY3RvcjxUPiAoKSB7IGluc2VydCAoaTEsIGkyKTsgfQotICAgIGlubGluZSByY3NlbGZfdAkJb3BlcmF0b3I9IChyY3NlbGZfdCB2KQl7IGJhc2VfY2xhc3M6Om9wZXJhdG9yPSAodik7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJhc2VfY2xhc3M6OnNpemUoKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWJlZ2luICh2b2lkKQkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAl7IHJldHVybiAoYmFzZV9jbGFzczo6YmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVuZCAodm9pZCkJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAl7IHJldHVybiAoYmFzZV9jbGFzczo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMik7Ci0gICAgc2l6ZV90eXBlCQkJY291bnQgKGNvbnN0X3JlZmVyZW5jZSB2KSBjb25zdDsKLSAgICBpbmxpbmUgdm9pZAkJCXB1c2hfYmFjayAoY29uc3RfcmVmZXJlbmNlIHYpCXsgaW5zZXJ0ICh2KTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJaW5zZXJ0IChjb25zdF9yZWZlcmVuY2Ugdik7Ci0gICAgdm9pZAkJCWluc2VydCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKTsKLSAgICB2b2lkCQkJZXJhc2UgKGNvbnN0X3JlZmVyZW5jZSB2KTsKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVyYXNlIChpdGVyYXRvciBlcCkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVyYXNlIChlcCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllcmFzZSAoaXRlcmF0b3IgZXAxLCBpdGVyYXRvciBlcDIpIHsgcmV0dXJuIChiYXNlX2NsYXNzOjplcmFzZSAoZXAxLCBlcDIpKTsgfQotICAgIGlubGluZSB2b2lkCQkJY2xlYXIgKHZvaWQpCQl7IGJhc2VfY2xhc3M6OmNsZWFyKCk7IH0KLX07Ci0KLS8vLyBDb3BpZXMgY29udGVudHMgb2YgcmFuZ2UgW2kxLGkyKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBtdWx0aXNldDxUPjo6YXNzaWduIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCi17Ci0gICAgYmFzZV9jbGFzczo6Y2xlYXIoKTsKLSAgICBpbnNlcnQgKGkxLCBpMik7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgdmFsdWUgXHAgdi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdHlwZW5hbWUgbXVsdGlzZXQ8VD46OnNpemVfdHlwZSBtdWx0aXNldDxUPjo6Y291bnQgKGNvbnN0X3JlZmVyZW5jZSB2KSBjb25zdAotewotICAgIGNvbnN0IHBhaXI8Y29uc3RfaXRlcmF0b3IsY29uc3RfaXRlcmF0b3I+IGZyID0gZXF1YWxfcmFuZ2UgKGJlZ2luKCksIGVuZCgpLCB2KTsKLSAgICByZXR1cm4gKGRpc3RhbmNlIChmci5maXJzdCwgZnIuc2Vjb25kKSk7Ci19Ci0KLS8vLyBJbnNlcnRzIFxwIHYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB0eXBlbmFtZSBtdWx0aXNldDxUPjo6aXRlcmF0b3IgbXVsdGlzZXQ8VD46Omluc2VydCAoY29uc3RfcmVmZXJlbmNlIHYpCi17Ci0gICAgaXRlcmF0b3IgaXAgPSB1cHBlcl9ib3VuZCAoYmVnaW4oKSwgZW5kKCksIHYpOwotICAgIHJldHVybiAoYmFzZV9jbGFzczo6aW5zZXJ0IChpcCwgdikpOwotfQotCi0vLy8gSW5zZXJ0cyBhbGwgZWxlbWVudHMgZnJvbSByYW5nZSBbaTEsaTIpLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIG11bHRpc2V0PFQ+OjppbnNlcnQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikKLXsKLSAgICBhc3NlcnQgKGkxIDw9IGkyKTsKLSAgICByZXNlcnZlIChzaXplKCkgKyBkaXN0YW5jZSAoaTEsIGkyKSk7Ci0gICAgZm9yICg7IGkxIDwgaTI7ICsraTEpCi0JcHVzaF9iYWNrICgqaTEpOwotfQotCi0vLy8gRXJhc2VzIGFsbCBlbGVtZW50cyB3aXRoIHZhbHVlIFxwIHYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgbXVsdGlzZXQ8VD46OmVyYXNlIChjb25zdF9yZWZlcmVuY2UgdikKLXsKLSAgICBwYWlyPGl0ZXJhdG9yLGl0ZXJhdG9yPiBlcHIgPSBlcXVhbF9yYW5nZSAoYmVnaW4oKSwgZW5kKCksIHYpOwotICAgIGVyYXNlIChlcHIuZmlyc3QsIGVwci5zZWNvbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bmV3LmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VuZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODRlMDUzLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VuZXcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVuZXcuY2MKLS8vCi0KLSNpbmNsdWRlICJ1bmV3LmgiCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi12b2lkKiB0aHJvd2luZ19tYWxsb2MgKHNpemVfdCBuKSB0aHJvdyAodXN0bDo6YmFkX2FsbG9jKQotewotICAgIHZvaWQqIHAgPSBtYWxsb2MgKG4pOwotICAgIGlmICghcCkKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgIHByaW50ZigiYmFkIGFsbG9jXG4iKTsKLSNlbHNlCi0JdGhyb3cgdXN0bDo6YmFkX2FsbG9jIChuKTsKLSNlbmRpZgotICAgIHJldHVybiAocCk7Ci19Ci0KLXZvaWQgZnJlZV9udWxsb2sgKHZvaWQqIHApIHRocm93KCkKLXsKLSAgICBpZiAocCkKLQlmcmVlIChwKTsKLX0KLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW5ldy5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW5ldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGZmYjYyLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VuZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLy8gXGZpbGUgdW5ldy5oCi0vLy8KLS8vLyBcYnJpZWYgU2FtZSBhcyBcPG5ld1w+LCBidXQgdGhyb3dzIHVzdGw6OiBleGNlcHRpb25zLgotLy8KLQotI2lmbmRlZiBVTkVXX0hfMTFEMjM3NTEyQjMyNEM5QzA1QTU1REFGMUJGMDg2RjEKLSNkZWZpbmUgVU5FV19IXzExRDIzNzUxMkIzMjRDOUMwNUE1NURBRjFCRjA4NkYxCi0KLSNpbmNsdWRlICJ1ZXhjZXB0aW9uLmgiCi0KLS8vLyBKdXN0IGxpa2UgbWFsbG9jLCBidXQgdGhyb3dzIG9uIGZhaWx1cmUuCi12b2lkKiB0aHJvd2luZ19tYWxsb2MgKHNpemVfdCBuKSB0aHJvdyAodXN0bDo6YmFkX2FsbG9jKTsKLS8vLyBKdXN0IGxpa2UgZnJlZSwgYnV0IGRvZXNuJ3QgY3Jhc2ggd2hlbiBnaXZlbiBhIE5VTEwuCi12b2lkIGZyZWVfbnVsbG9rICh2b2lkKiBwKSB0aHJvdygpOwotCi0jaWZkZWYgV0lUSE9VVF9MSUJTVERDUFAKLQotLy8KLS8vIFRoZXNlIGFyZSByZXBsYWNlYWJsZSBzaWduYXR1cmVzOgotLy8gIC0gbm9ybWFsIHNpbmdsZSBuZXcgYW5kIGRlbGV0ZSAobm8gYXJndW1lbnRzLCB0aHJvdyBAYyBiYWRfYWxsb2Mgb24gZXJyb3IpCi0vLyAgLSBub3JtYWwgYXJyYXkgbmV3IGFuZCBkZWxldGUgKHNhbWUpCi0vLyAgLSBAYyBub3Rocm93IHNpbmdsZSBuZXcgYW5kIGRlbGV0ZSAodGFrZSBhIEBjIG5vdGhyb3cgYXJndW1lbnQsIHJldHVybgotLy8gICAgQGMgTlVMTCBvbiBlcnJvcikKLS8vICAtIEBjIG5vdGhyb3cgYXJyYXkgbmV3IGFuZCBkZWxldGUgKHNhbWUpCi0vLwotLy8gIFBsYWNlbWVudCBuZXcgYW5kIGRlbGV0ZSBzaWduYXR1cmVzICh0YWtlIGEgbWVtb3J5IGFkZHJlc3MgYXJndW1lbnQsCi0vLyAgZG9lcyBub3RoaW5nKSBtYXkgbm90IGJlIHJlcGxhY2VkIGJ5IGEgdXNlcidzIHByb2dyYW0uCi0vLwotaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyAoc2l6ZV90IG4pIHRocm93ICh1c3RsOjpiYWRfYWxsb2MpCXsgcmV0dXJuICh0aHJvd2luZ19tYWxsb2MgKG4pKTsgfQotaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ld1tdIChzaXplX3QgbikgdGhyb3cgKHVzdGw6OmJhZF9hbGxvYykJeyByZXR1cm4gKHRocm93aW5nX21hbGxvYyAobikpOyB9Ci1pbmxpbmUgdm9pZCAgb3BlcmF0b3IgZGVsZXRlICh2b2lkKiBwKSB0aHJvdygpCQkJeyBmcmVlX251bGxvayAocCk7IH0KLWlubGluZSB2b2lkICBvcGVyYXRvciBkZWxldGVbXSAodm9pZCogcCkgdGhyb3coKQkJeyBmcmVlX251bGxvayAocCk7IH0KLQotLy8gRGVmYXVsdCBwbGFjZW1lbnQgdmVyc2lvbnMgb2Ygb3BlcmF0b3IgbmV3LgotaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyAoc2l6ZV90LCB2b2lkKiBwKSB0aHJvdygpIHsgcmV0dXJuIChwKTsgfQotaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ld1tdIChzaXplX3QsIHZvaWQqIHApIHRocm93KCkgeyByZXR1cm4gKHApOyB9Ci0KLS8vIERlZmF1bHQgcGxhY2VtZW50IHZlcnNpb25zIG9mIG9wZXJhdG9yIGRlbGV0ZS4KLWlubGluZSB2b2lkICBvcGVyYXRvciBkZWxldGUgICh2b2lkKiwgdm9pZCopIHRocm93KCkgeyB9Ci1pbmxpbmUgdm9pZCAgb3BlcmF0b3IgZGVsZXRlW10odm9pZCosIHZvaWQqKSB0aHJvdygpIHsgfQotCi0jZWxzZQotI2luY2x1ZGUgPG5ldz4KLSNlbmRpZgkvLyBXSVRIT1VUX0xJQlNURENQUAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW51bWVyaWMuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VudW1lcmljLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ODNlYjQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW51bWVyaWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdW51bWVyaWMuaAotLy8KLS8vCVRoaXMgZmlsZSBjb250YWlucyBudW1lcmljIGFsZ29yaXRobSB0ZW1wbGF0ZXMuCi0vLwotCi0jaWZuZGVmIFVOVU1FUklDX0hfNkM5OUQ2RjYzNjM4MzJDNjQ0QTZGRkYzMzZFODRFMTgKLSNkZWZpbmUgVU5VTUVSSUNfSF82Qzk5RDZGNjM2MzgzMkM2NDRBNkZGRjMzNkU4NEUxOAotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBSZXR1cm5zIHRoZSBzdW0gb2YgYWxsIGVsZW1lbnRzIGluIFtmaXJzdCwgbGFzdCkgYWRkZWQgdG8gXHAgaW5pdC4KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgVD4KLWlubGluZSBUIGFjY3VtdWxhdGUgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgVCBpbml0KQotewotICAgIHdoaWxlIChmaXJzdCA8IGxhc3QpCi0JaW5pdCArPSAqZmlyc3QrKzsKLSAgICByZXR1cm4gKGluaXQpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgc3VtIG9mIGFsbCBlbGVtZW50cyBpbiBbZmlyc3QsIGxhc3QpIHZpYSBccCBvcCwgYWRkZWQgdG8gXHAgaW5pdC4KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgVCBhY2N1bXVsYXRlIChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIFQgaW5pdCwgQmluYXJ5RnVuY3Rpb24gYmluYXJ5X29wKQotewotICAgIHdoaWxlIChmaXJzdCA8IGxhc3QpCi0JaW5pdCA9IGJpbmFyeV9vcCAoaW5pdCwgKmZpcnN0KyspOwotICAgIHJldHVybiAoaW5pdCk7Ci19Ci0KLS8vLyBBc3NpZ25zIHJhbmdlIFt2YWx1ZSwgdmFsdWUgKyAobGFzdCAtIGZpcnN0KSkgdG8gW2ZpcnN0LCBsYXN0KQotLy8vIFxpbmdyb3VwIE51bWVyaWNBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBpb3RhIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBUIHZhbHVlKQotewotICAgIHdoaWxlIChmaXJzdCA8IGxhc3QpCi0JKmZpcnN0KysgPSB2YWx1ZSsrOwotfQotCi0vLy8gUmV0dXJucyB0aGUgc3VtIG9mIHByb2R1Y3RzIG9mIHJlc3BlY3RpdmUgZWxlbWVudHMgaW4gdGhlIGdpdmVuIHJhbmdlcy4KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBUPgotaW5saW5lIFQgaW5uZXJfcHJvZHVjdCAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBUIGluaXQpCi17Ci0gICAgd2hpbGUgKGZpcnN0MSA8IGxhc3QxKQotCWluaXQgKz0gKmZpcnN0MSsrICogKmZpcnN0MisrOwotICAgIHJldHVybiAoaW5pdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBzdW0gb2YgcHJvZHVjdHMgb2YgcmVzcGVjdGl2ZSBlbGVtZW50cyBpbiB0aGUgZ2l2ZW4gcmFuZ2VzLgotLy8vIFxpbmdyb3VwIE51bWVyaWNBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIFQsCi0gICAgCSAgdHlwZW5hbWUgQmluYXJ5T3BlcmF0aW9uMSwgdHlwZW5hbWUgQmluYXJ5T3BlcmF0aW9uMj4KLWlubGluZSBUIGlubmVyX3Byb2R1Y3QKLShJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIFQgaW5pdCwKLSBCaW5hcnlPcGVyYXRpb24xIHN1bU9wLCBCaW5hcnlPcGVyYXRpb24yIHByb2R1Y3RPcCkKLXsKLSAgICB3aGlsZSAoZmlyc3QxIDwgbGFzdDEpCi0JaW5pdCA9IHN1bU9wIChpbml0LCBwcm9kdWN0T3AgKCpmaXJzdDErKywgKmZpcnN0MisrKSk7Ci0gICAgcmV0dXJuIChpbml0KTsKLX0KLQotLy8vIFdyaXRlcyByZXN1bHQgc3VjaCB0aGF0IHJlc3VsdFtpXSA9IHN1bSAoZmlyc3QuLi5maXJzdCtpKQotLy8vIFxpbmdyb3VwIE51bWVyaWNBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBwYXJ0aWFsX3N1bSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgaWYgKGZpcnN0IDwgbGFzdCkKLQkqcmVzdWx0ID0gKmZpcnN0Kys7Ci0gICAgd2hpbGUgKGZpcnN0IDwgbGFzdCkKLQkqKytyZXN1bHQgPSAqZmlyc3QrKyArICpyZXN1bHQ7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gV3JpdGVzIHJlc3VsdCBzdWNoIHRoYXQgcmVzdWx0W2ldID0gc3VtT3AgKGZpcnN0Li4uZmlyc3QraSkKLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIEJpbmFyeU9wZXJhdGlvbj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBwYXJ0aWFsX3N1bSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIEJpbmFyeU9wZXJhdGlvbiBzdW1PcCkKLXsKLSAgICBpZiAoZmlyc3QgPCBsYXN0KQotCSpyZXN1bHQgPSAqZmlyc3QrKzsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KQotCSorK3Jlc3VsdCA9IHN1bU9wICgqZmlyc3QrKywgKnJlc3VsdCk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gV3JpdGVzIHJlc3VsdCBzdWNoIHRoYXQgcmVzdWx0W2ldID0gZmlyc3RbaV0gLSBmaXJzdFtpIC0gMV0KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgYWRqYWNlbnRfZGlmZmVyZW5jZSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgaWYgKGZpcnN0IDwgbGFzdCkKLQkqcmVzdWx0KysgPSAqZmlyc3QrKzsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KQotCSpyZXN1bHQrKyA9ICpmaXJzdCAtICooZmlyc3QgLSAxKTsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBXcml0ZXMgcmVzdWx0IHN1Y2ggdGhhdCByZXN1bHRbaV0gPSBkaWZmZXJlbmNlT3AgKGZpcnN0W2ldLCBmaXJzdFtpIC0gMV0pCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBCaW5hcnlPcGVyYXRpb24+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgYWRqYWNlbnRfZGlmZmVyZW5jZSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIEJpbmFyeU9wZXJhdGlvbiBkaWZmZXJlbmNlT3ApCi17Ci0gICAgaWYgKGZpcnN0IDwgbGFzdCkKLQkqcmVzdWx0KysgPSAqZmlyc3QrKzsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KQotCSpyZXN1bHQrKyA9IGRpZmZlcmVuY2VPcCAoKmZpcnN0LCAqKGZpcnN0IC0gMSkpOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIHhebi4KLS8vLyBEb25hbGQgS251dGgncyBSdXNzaWFuIFBlYXNhbnQgYWxnb3JpdGhtLgotLy8vIFxpbmdyb3VwIE51bWVyaWNBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQgcG93ZXIgKFQgeCwgdW5zaWduZWQgbikKLXsKLSAgICBUIHJlc3VsdCAobiAlIDIgPyB4IDogMSk7Ci0gICAgd2hpbGUgKG4gLz0gMikgewotCXggKj0geDsKLQlpZiAobiAlIDIpCi0JICAgIHJlc3VsdCAqPSB4OwotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBcYnJpZWYgUmV0dXJucyB4Xm4sIHVzaW5nIFxwIG9wIGluc3RlYWQgb2YgbXVsdGlwbGljYXRpb24uCi0vLy8gRG9uYWxkIEtudXRoJ3MgUnVzc2lhbiBQZWFzYW50IGFsZ29yaXRobS4KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQmluYXJ5T3BlcmF0aW9uPgotaW5saW5lIFQgcG93ZXIgKFQgeCwgdW5zaWduZWQgbiwgQmluYXJ5T3BlcmF0aW9uIG9wKQotewotICAgIFQgcmVzdWx0IChuICUgMiA/IHggOiAxKTsKLSAgICB3aGlsZSAobiAvPSAyKSB7Ci0JeCA9IG9wICh4LCB4KTsKLQlpZiAobiAlIDIpCi0JICAgIHJlc3VsdCA9IG9wIChyZXN1bHQsIHgpOwotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VwYWlyLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cGFpci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGNjM2I3Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VwYWlyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8vIFxmaWxlIHVwYWlyLmgKLS8vLyBcYnJpZWYgUGFpci1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCi0KLSNpZm5kZWYgVVBBSVJfSF83REMwOEYxQjdGRUNGOEFFNjg1NkQ4NEMzQjYxN0E3NQotI2RlZmluZSBVUEFJUl9IXzdEQzA4RjFCN0ZFQ0Y4QUU2ODU2RDg0QzNCNjE3QTc1Ci0KLSNpbmNsdWRlICJ1dHlwZXMuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIHBhaXIgdXBhaXIuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBBc3NvY2lhdGl2ZUNvbnRhaW5lcnMKLS8vLwotLy8vIFxicmllZiBDb250YWluZXIgZm9yIHR3byB2YWx1ZXMuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1jbGFzcyBwYWlyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFQxCQlmaXJzdF90eXBlOwotICAgIHR5cGVkZWYgVDIJCXNlY29uZF90eXBlOwotcHVibGljOgotICAgIC8vLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgotICAgIGlubGluZSBwYWlyICh2b2lkKQkJCQk6IGZpcnN0IChUMSgpKSwgc2Vjb25kIChUMigpKSB7fQotICAgIC8vLyBJbml0aWFsaXplcyBtZW1iZXJzIHdpdGggXHAgYSwgYW5kIFxwIGIuCi0gICAgaW5saW5lIHBhaXIgKGNvbnN0IFQxJiBhLCBjb25zdCBUMiYgYikJOiBmaXJzdCAoYSksIHNlY29uZCAoYikge30KLSAgICBpbmxpbmUgcGFpciYJb3BlcmF0b3I9IChjb25zdCBwYWlyPFQxLCBUMj4mIHAyKSB7IGZpcnN0ID0gcDIuZmlyc3Q7IHNlY29uZCA9IHAyLnNlY29uZDsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICAgIGlubGluZSBwYWlyJglvcGVyYXRvcj0gKGNvbnN0IHBhaXI8VDMsIFQ0PiYgcDIpIHsgZmlyc3QgPSBwMi5maXJzdDsgc2Vjb25kID0gcDIuc2Vjb25kOyByZXR1cm4gKCp0aGlzKTsgfQotcHVibGljOgotICAgIGZpcnN0X3R5cGUJCWZpcnN0OwotICAgIHNlY29uZF90eXBlCQlzZWNvbmQ7Ci19OwotCi0vLy8gQ29tcGFyZXMgYm90aCB2YWx1ZXMgb2YgXHAgcDEgdG8gdGhvc2Ugb2YgXHAgcDIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGJvb2wgb3BlcmF0b3I9PSAoY29uc3QgcGFpcjxUMSxUMj4mIHAxLCBjb25zdCBwYWlyPFQxLFQyPiYgcDIpCi17Ci0gICAgcmV0dXJuIChwMS5maXJzdCA9PSBwMi5maXJzdCAmJiBwMS5zZWNvbmQgPT0gcDIuc2Vjb25kKTsKLX0KLQotLy8vIENvbXBhcmVzIGJvdGggdmFsdWVzIG9mIFxwIHAxIHRvIHRob3NlIG9mIFxwIHAyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWJvb2wgb3BlcmF0b3I8IChjb25zdCBwYWlyPFQxLFQyPiYgcDEsIGNvbnN0IHBhaXI8VDEsVDI+JiBwMikKLXsKLSAgICByZXR1cm4gKHAxLmZpcnN0IDwgcDIuZmlyc3QgfHwgKHAxLmZpcnN0ID09IHAyLmZpcnN0ICYmIHAxLnNlY29uZCA8IHAyLnNlY29uZCkpOwotfQotCi0vLy8gUmV0dXJucyBhIHBhaXIgb2JqZWN0IHdpdGggKGEsYikKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgcGFpcjxUMSxUMj4gbWFrZV9wYWlyIChjb25zdCBUMSYgYSwgY29uc3QgVDImIGIpCi17Ci0gICAgcmV0dXJuIChwYWlyPFQxLFQyPiAoYSwgYikpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cHJlZGFsZ28uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VwcmVkYWxnby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjJhM2Q2Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VwcmVkYWxnby5oCisrKyAvZGV2L251bGwKQEAgLTEsNTk3ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1YWxnby5oCi0vLwotLy8gSW1wbGVtZW50YXRpb24gb2YgU1RMIGFsZ29yaXRobXMgd2l0aCBjdXN0b20gcHJlZGljYXRlcy4KLS8vCi0vLyBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUgY29waWVkCi0vLyBleGFjdGx5IGZyb20gdGhlIFNHSSB2ZXJzaW9uIG9mIFNUTCBkb2N1bWVudGF0aW9uIGFsb25nIHdpdGggY29tbWVudHMgYWJvdXQKLS8vIHRoZWlyIHVzZS4gVGhlIGNvZGUgaXMgTk9UIHRoZSBzYW1lLCB0aG91Z2ggdGhlIGZ1bmN0aW9uYWxpdHkgdXN1YWxseSBpcy4KLS8vCi0KLSNpZm5kZWYgVVBSRURBTEdPX0hfMkNCMDU4QUUwODA3QTAxQTJGNkE1MUJBNUQ1ODIwQTUKLSNkZWZpbmUgVVBSRURBTEdPX0hfMkNCMDU4QUUwODA3QTAxQTJGNkE1MUJBNUQ1ODIwQTUKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gQ29weV9pZiBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSB0byB0aGUgcmFuZ2UKLS8vLyBbcmVzdWx0LCByZXN1bHQgKyAobGFzdCAtIGZpcnN0KSkgaWYgcHJlZCgqaSkgcmV0dXJucyB0cnVlLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgY29weV9pZiAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFByZWRpY2F0ZSBwcmVkKQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7Ci0JaWYgKHByZWQoKmZpcnN0KSkgewotCSAgICAqcmVzdWx0ID0gKmZpcnN0OwotCSAgICArKyByZXN1bHQ7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBmaXJzdCBpdGVyYXRvciBpIGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHN1Y2ggdGhhdAotLy8vIHByZWQoKmkpIGlzIHRydWUuIFJldHVybnMgbGFzdCBpZiBubyBzdWNoIGl0ZXJhdG9yIGV4aXN0cy4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5lIElucHV0SXRlcmF0b3IgZmluZF9pZiAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBQcmVkaWNhdGUgcHJlZCkKLXsKLSAgICB3aGlsZSAoZmlyc3QgIT0gbGFzdCAmJiAhcHJlZCAoKmZpcnN0KSkKLQkrKyBmaXJzdDsKLSAgICByZXR1cm4gKGZpcnN0KTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGZpcnN0IGl0ZXJhdG9yIHN1Y2ggdGhhdCBwKCppLCAqKGkgKyAxKSkgPT0gdHJ1ZS4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBCaW5hcnlQcmVkaWNhdGU+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIGFkamFjZW50X2ZpbmQgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIEJpbmFyeVByZWRpY2F0ZSBwKQotewotICAgIGlmIChmaXJzdCAhPSBsYXN0KQotCWZvciAoRm9yd2FyZEl0ZXJhdG9yIHByZXYgPSBmaXJzdDsgKytmaXJzdCAhPSBsYXN0OyArKyBwcmV2KQotCSAgICBpZiAocCAoKnByZXYsICpmaXJzdCkpCi0JCXJldHVybiAocHJldik7Ci0gICAgcmV0dXJuIChsYXN0KTsKLX0KLQotLy8vIFJldHVybnMgdGhlIHBvaW50ZXIgdG8gdGhlIGZpcnN0IHBhaXIgb2YgdW5lcXVhbCBlbGVtZW50cy4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotaW5saW5lIHBhaXI8SW5wdXRJdGVyYXRvcixJbnB1dEl0ZXJhdG9yPgotbWlzbWF0Y2ggKElucHV0SXRlcmF0b3IgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yIGxhc3QxLCBJbnB1dEl0ZXJhdG9yIGZpcnN0MiwgQmluYXJ5UHJlZGljYXRlIGNvbXApCi17Ci0gICAgd2hpbGUgKGZpcnN0MSAhPSBsYXN0MSAmJiBjb21wKCpmaXJzdDEsICpmaXJzdDIpKQotCSsrIGZpcnN0MSwgKysgZmlyc3QyOwotICAgIHJldHVybiAobWFrZV9wYWlyIChmaXJzdDEsIGZpcnN0MikpOwotfQotCi0vLy8gUmV0dXJucyB0cnVlIGlmIHR3byByYW5nZXMgYXJlIGVxdWFsLgotLy8vIFRoaXMgaXMgYW4gZXh0ZW5zaW9uLCBwcmVzZW50IGluIHVTVEwgYW5kIFNHSSBTVEwuCi0vLy8gXGluZ3JvdXAgQ29uZGl0aW9uQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLWlubGluZSBib29sIGVxdWFsIChJbnB1dEl0ZXJhdG9yIGZpcnN0MSwgSW5wdXRJdGVyYXRvciBsYXN0MSwgSW5wdXRJdGVyYXRvciBmaXJzdDIsIEJpbmFyeVByZWRpY2F0ZSBjb21wKQotewotICAgIHJldHVybiAobWlzbWF0Y2ggKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgY29tcCkuZmlyc3QgPT0gbGFzdDEpOwotfQotCi0vLy8gQ291bnRfaWYgZmluZHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbZmlyc3QsIGxhc3QpIHRoYXQgc2F0aXNmeSB0aGUKLS8vLyBwcmVkaWNhdGUgcHJlZC4gTW9yZSBwcmVjaXNlbHksIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIGNvdW50X2lmIHJldHVybnMgdGhlCi0vLy8gbnVtYmVyIG9mIGl0ZXJhdG9ycyBpIGluIFtmaXJzdCwgbGFzdCkgc3VjaCB0aGF0IHByZWQoKmkpIGlzIHRydWUuCi0vLy8gXGluZ3JvdXAgQ29uZGl0aW9uQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSBzaXplX3QgY291bnRfaWYgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgc2l6ZV90IHRvdGFsID0gMDsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLQlpZiAocHJlZCAoKmZpcnN0KSkKLQkgICAgKysgdG90YWw7Ci0gICAgcmV0dXJuICh0b3RhbCk7Ci19Ci0KLS8vLyBSZXBsYWNlX2lmIHJlcGxhY2VzIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgZm9yIHdoaWNoCi0vLy8gcHJlZCByZXR1cm5zIHRydWUgd2l0aCBuZXdfdmFsdWUuIFRoYXQgaXM6IGZvciBldmVyeSBpdGVyYXRvciBpLCBpZgotLy8vIHByZWQoKmkpIGlzIHRydWUgdGhlbiBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudCAqaSA9IG5ld192YWx1ZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIHJlcGxhY2VfaWYgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIFByZWRpY2F0ZSBwcmVkLCBjb25zdCBUJiBuZXdfdmFsdWUpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JaWYgKHByZWQgKCpmaXJzdCkpCi0JICAgICpmaXJzdCA9IG5ld192YWx1ZTsKLX0KLQotLy8vIFJlcGxhY2VfY29weV9pZiBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSB0byB0aGUgcmFuZ2UKLS8vLyBbcmVzdWx0LCByZXN1bHQgKyAobGFzdC1maXJzdCkpLCBleGNlcHQgdGhhdCBhbnkgZWxlbWVudCBmb3Igd2hpY2ggcHJlZCBpcwotLy8vIHRydWUgaXMgbm90IGNvcGllZDsgbmV3X3ZhbHVlIGlzIGNvcGllZCBpbnN0ZWFkLiBNb3JlIHByZWNpc2VseSwgZm9yIGV2ZXJ5Ci0vLy8gaW50ZWdlciBuIHN1Y2ggdGhhdCAwIDw9IG4gPCBsYXN0LWZpcnN0LCByZXBsYWNlX2NvcHlfaWYgcGVyZm9ybXMgdGhlCi0vLy8gYXNzaWdubWVudCAqKHJlc3VsdCtuKSA9IG5ld192YWx1ZSBpZiBwcmVkKCooZmlyc3QrbikpLAotLy8vIGFuZCAqKHJlc3VsdCtuKSA9ICooZmlyc3Qrbikgb3RoZXJ3aXNlLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVwbGFjZV9jb3B5X2lmIChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgUHJlZGljYXRlIHByZWQsIGNvbnN0IFQmIG5ld192YWx1ZSkgCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrcmVzdWx0LCArK2ZpcnN0KQotICAgICAgICAqcmVzdWx0ID0gcHJlZCgqZmlyc3QpID8gbmV3X3ZhbHVlIDogKmZpcnN0OwotfQotCi0vLy8gUmVtb3ZlX2NvcHlfaWYgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gYSByYW5nZQotLy8vIGJlZ2lubmluZyBhdCByZXN1bHQsIGV4Y2VwdCB0aGF0IGVsZW1lbnRzIGZvciB3aGljaCBwcmVkIGlzIHRydWUgYXJlIG5vdAotLy8vIGNvcGllZC4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgZW5kIG9mIHRoZSByZXN1bHRpbmcgcmFuZ2UuIFRoaXMgb3BlcmF0aW9uCi0vLy8gaXMgc3RhYmxlLCBtZWFuaW5nIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHRoZSBlbGVtZW50cyB0aGF0IGFyZSBjb3BpZWQKLS8vLyBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJlbW92ZV9jb3B5X2lmIChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JaWYgKHByZWQgKCpmaXJzdCkpCi0JICAgICpyZXN1bHQrKyA9ICpmaXJzdDsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBSZW1vdmVfaWYgcmVtb3ZlcyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGV2ZXJ5IGVsZW1lbnQgeCBzdWNoIHRoYXQKLS8vLyBwcmVkKHgpIGlzIHRydWUuIFRoYXQgaXMsIHJlbW92ZV9pZiByZXR1cm5zIGFuIGl0ZXJhdG9yIG5ld19sYXN0IHN1Y2ggdGhhdAotLy8vIHRoZSByYW5nZSBbZmlyc3QsIG5ld19sYXN0KSBjb250YWlucyBubyBlbGVtZW50cyBmb3Igd2hpY2ggcHJlZCBpcyB0cnVlLgotLy8vIFRoZSBpdGVyYXRvcnMgaW4gdGhlIHJhbmdlIFtuZXdfbGFzdCwgbGFzdCkgYXJlIGFsbCBzdGlsbCBkZXJlZmVyZW5jZWFibGUsCi0vLy8gYnV0IHRoZSBlbGVtZW50cyB0aGF0IHRoZXkgcG9pbnQgdG8gYXJlIHVuc3BlY2lmaWVkLiBSZW1vdmVfaWYgaXMgc3RhYmxlLAotLy8vIG1lYW5pbmcgdGhhdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBhcmUgbm90IHJlbW92ZWQgaXMKLS8vLyB1bmNoYW5nZWQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIHJlbW92ZV9pZiAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgcmV0dXJuIChyZW1vdmVfY29weV9pZiAoZmlyc3QsIGxhc3QsIGZpcnN0LCBwcmVkKSk7Ci19Ci0KLS8vLyBUaGUgcmVhc29uIHRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHZlcnNpb25zIG9mIHVuaXF1ZV9jb3B5IGlzIHRoYXQgdGhlcmUKLS8vLyBhcmUgdHdvIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiB3aGF0IGl0IG1lYW5zIGZvciBhIGNvbnNlY3V0aXZlIGdyb3VwIG9mCi0vLy8gZWxlbWVudHMgdG8gYmUgZHVwbGljYXRlcy4gSW4gdGhlIGZpcnN0IHZlcnNpb24sIHRoZSB0ZXN0IGlzIHNpbXBsZQotLy8vIGVxdWFsaXR5OiB0aGUgZWxlbWVudHMgaW4gYSByYW5nZSBbZiwgbCkgYXJlIGR1cGxpY2F0ZXMgaWYsIGZvciBldmVyeQotLy8vIGl0ZXJhdG9yIGkgaW4gdGhlIHJhbmdlLCBlaXRoZXIgaSA9PSBmIG9yIGVsc2UgKmkgPT0gKihpLTEpLiBJbiB0aGUgc2Vjb25kLAotLy8vIHRoZSB0ZXN0IGlzIGFuIGFyYml0cmFyeSBCaW5hcnkgUHJlZGljYXRlIGJpbmFyeV9wcmVkOiB0aGUgZWxlbWVudHMgaW4KLS8vLyBbZiwgbCkgYXJlIGR1cGxpY2F0ZXMgaWYsIGZvciBldmVyeSBpdGVyYXRvciBpIGluIHRoZSByYW5nZSwgZWl0aGVyCi0vLy8gaSA9PSBmIG9yIGVsc2UgYmluYXJ5X3ByZWQoKmksICooaS0xKSkgaXMgdHJ1ZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotT3V0cHV0SXRlcmF0b3IgdW5pcXVlX2NvcHkgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBCaW5hcnlQcmVkaWNhdGUgYmluYXJ5X3ByZWQpCi17Ci0gICAgaWYgKGZpcnN0ICE9IGxhc3QpIHsKLQkqcmVzdWx0ID0gKmZpcnN0OwotCXdoaWxlICgrK2ZpcnN0ICE9IGxhc3QpCi0JICAgIGlmICghYmluYXJ5X3ByZWQgKCpmaXJzdCwgKnJlc3VsdCkpCi0JCSorK3Jlc3VsdCA9ICpmaXJzdDsKLQkrKyByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIEV2ZXJ5IHRpbWUgYSBjb25zZWN1dGl2ZSBncm91cCBvZiBkdXBsaWNhdGUgZWxlbWVudHMgYXBwZWFycyBpbiB0aGUgcmFuZ2UKLS8vLyBbZmlyc3QsIGxhc3QpLCB0aGUgYWxnb3JpdGhtIHVuaXF1ZSByZW1vdmVzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQuCi0vLy8gVGhhdCBpcywgdW5pcXVlIHJldHVybnMgYW4gaXRlcmF0b3IgbmV3X2xhc3Qgc3VjaCB0aGF0IHRoZSByYW5nZSBbZmlyc3QsCi0vLy8gbmV3X2xhc3QpIGNvbnRhaW5zIG5vIHR3byBjb25zZWN1dGl2ZSBlbGVtZW50cyB0aGF0IGFyZSBkdXBsaWNhdGVzLgotLy8vIFRoZSBpdGVyYXRvcnMgaW4gdGhlIHJhbmdlIFtuZXdfbGFzdCwgbGFzdCkgYXJlIGFsbCBzdGlsbCBkZXJlZmVyZW5jZWFibGUsCi0vLy8gYnV0IHRoZSBlbGVtZW50cyB0aGF0IHRoZXkgcG9pbnQgdG8gYXJlIHVuc3BlY2lmaWVkLiBVbmlxdWUgaXMgc3RhYmxlLAotLy8vIG1lYW5pbmcgdGhhdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBhcmUgbm90IHJlbW92ZWQgaXMKLS8vLyB1bmNoYW5nZWQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBCaW5hcnlQcmVkaWNhdGU+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIHVuaXF1ZSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgQmluYXJ5UHJlZGljYXRlIGJpbmFyeV9wcmVkKQotewotICAgIHJldHVybiAodW5pcXVlX2NvcHkgKGZpcnN0LCBsYXN0LCBmaXJzdCwgYmluYXJ5X3ByZWQpKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGZ1cnRoZXJtb3N0IGl0ZXJhdG9yIGkgaW4gW2ZpcnN0LCBsYXN0KSBzdWNoIHRoYXQsCi0vLy8gZm9yIGV2ZXJ5IGl0ZXJhdG9yIGogaW4gW2ZpcnN0LCBpKSwgY29tcCgqaiwgdmFsdWUpIGlzIHRydWUuCi0vLy8gQXNzdW1lcyB0aGUgcmFuZ2UgaXMgc29ydGVkLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLUZvcndhcmRJdGVyYXRvciBsb3dlcl9ib3VuZCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgdmFsdWUsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIEZvcndhcmRJdGVyYXRvciBtaWQ7Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKLQltaWQgPSBhZHZhbmNlIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LGxhc3QpIC8gMik7Ci0JaWYgKGNvbXAgKCptaWQsIHZhbHVlKSkKLQkgICAgZmlyc3QgPSBtaWQgKyAxOwotCWVsc2UKLQkgICAgbGFzdCA9IG1pZDsKLSAgICB9Ci0gICAgcmV0dXJuIChmaXJzdCk7Ci19Ci0KLS8vLyBQZXJmb3JtcyBhIGJpbmFyeSBzZWFyY2ggaW5zaWRlIHRoZSBzb3J0ZWQgcmFuZ2UuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU3RyaWN0V2Vha09yZGVyaW5nPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciBiaW5hcnlfc2VhcmNoIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBjb25zdCBUJiB2YWx1ZSwgU3RyaWN0V2Vha09yZGVyaW5nIGNvbXApCi17Ci0gICAgRm9yd2FyZEl0ZXJhdG9yIGZvdW5kID0gbG93ZXJfYm91bmQgKGZpcnN0LCBsYXN0LCB2YWx1ZSwgY29tcCk7Ci0gICAgcmV0dXJuICgoZm91bmQgPT0gbGFzdCB8fCBjb21wKHZhbHVlLCAqZm91bmQpKSA/IGxhc3QgOiBmb3VuZCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBmdXJ0aGVybW9zdCBpdGVyYXRvciBpIGluIFtmaXJzdCxsYXN0KSBzdWNoIHRoYXQgZm9yCi0vLy8gZXZlcnkgaXRlcmF0b3IgaiBpbiBbZmlyc3QsaSksIGNvbXAodmFsdWUsKmopIGlzIGZhbHNlLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLUZvcndhcmRJdGVyYXRvciB1cHBlcl9ib3VuZCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgdmFsdWUsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIEZvcndhcmRJdGVyYXRvciBtaWQ7Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKLQltaWQgPSBhZHZhbmNlIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LGxhc3QpIC8gMik7Ci0JaWYgKGNvbXAgKHZhbHVlLCAqbWlkKSkKLQkgICAgbGFzdCA9IG1pZDsKLQllbHNlCi0JICAgIGZpcnN0ID0gbWlkICsgMTsKLSAgICB9Ci0gICAgcmV0dXJuIChsYXN0KTsKLX0KLQotLy8vIFJldHVybnMgcGFpcjxsb3dlcl9ib3VuZCx1cHBlcl9ib3VuZD4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1pbmxpbmUgcGFpcjxGb3J3YXJkSXRlcmF0b3IsRm9yd2FyZEl0ZXJhdG9yPiBlcXVhbF9yYW5nZSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgdmFsdWUsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIHBhaXI8Rm9yd2FyZEl0ZXJhdG9yLEZvcndhcmRJdGVyYXRvcj4gcnY7Ci0gICAgcnYuc2Vjb25kID0gcnYuZmlyc3QgPSBsb3dlcl9ib3VuZCAoZmlyc3QsIGxhc3QsIHZhbHVlLCBjb21wKTsKLSAgICB3aGlsZSAocnYuc2Vjb25kICE9IGxhc3QgJiYgIWNvbXAodmFsdWUsICoocnYuc2Vjb25kKSkpCi0JKysgcnYuc2Vjb25kOwotICAgIHJldHVybiAocnYpOwotfQotCi0vLy8gXGJyaWVmIFB1dHMgXHAgbnRoIGVsZW1lbnQgaW50byBpdHMgc29ydGVkIHBvc2l0aW9uLgotLy8vIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIHRoZSBlbnRpcmUgYXJyYXkgaXMgc29ydGVkLiBUaGUgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBpcwotLy8vIHNvIHNtYWxsIGFuZCB0aGUgZnVuY3Rpb24gdXNlIGlzIHNvIHJhcmUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gaGF2ZSBjb2RlIGZvciBpdC4KLS8vLyBcaW5ncm91cCBTb3J0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZT4KLWlubGluZSB2b2lkIG50aF9lbGVtZW50IChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QsIENvbXBhcmUgY29tcCkKLXsKLSAgICBzb3J0IChmaXJzdCwgbGFzdCwgY29tcCk7Ci19Ci0KLS8vLyBcYnJpZWYgU2VhcmNoZXMgZm9yIHRoZSBmaXJzdCBzdWJzZXF1ZW5jZSBbZmlyc3QyLGxhc3QyKSBpbiBbZmlyc3QxLGxhc3QxKQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMiwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotRm9yd2FyZEl0ZXJhdG9yMSBzZWFyY2ggKEZvcndhcmRJdGVyYXRvcjEgZmlyc3QxLCBGb3J3YXJkSXRlcmF0b3IxIGxhc3QxLCBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiwgQmluYXJ5UHJlZGljYXRlIGNvbXApCi17Ci0gICAgY29uc3QgRm9yd2FyZEl0ZXJhdG9yMSBzbGFzdCA9IGxhc3QxIC0gZGlzdGFuY2UoZmlyc3QyLCBsYXN0MikgKyAxOwotICAgIGZvciAoOyBmaXJzdDEgPCBzbGFzdDsgKytmaXJzdDEpIHsKLQlGb3J3YXJkSXRlcmF0b3IyIGkgPSBmaXJzdDI7Ci0JRm9yd2FyZEl0ZXJhdG9yMSBqID0gZmlyc3QxOwotCWZvciAoOyBpICE9IGxhc3QyICYmIGNvbXAoKmosICppKTsgKytpLCArK2opOwotCWlmIChpID09IGxhc3QyKQotCSAgICByZXR1cm4gKGZpcnN0MSk7Ci0gICAgfQotICAgIHJldHVybiAobGFzdDEpOwotfQotCi0vLy8gXGJyaWVmIFNlYXJjaGVzIGZvciB0aGUgbGFzdCBzdWJzZXF1ZW5jZSBbZmlyc3QyLGxhc3QyKSBpbiBbZmlyc3QxLGxhc3QxKQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMiwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotRm9yd2FyZEl0ZXJhdG9yMSBmaW5kX2VuZCAoRm9yd2FyZEl0ZXJhdG9yMSBmaXJzdDEsIEZvcndhcmRJdGVyYXRvcjEgbGFzdDEsIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyLCBCaW5hcnlQcmVkaWNhdGUgY29tcCkKLXsKLSAgICBGb3J3YXJkSXRlcmF0b3IxIHMgPSBsYXN0MSAtIGRpc3RhbmNlKGZpcnN0MiwgbGFzdDIpOwotICAgIGZvciAoOyBmaXJzdDEgPCBzOyAtLXMpIHsKLQlGb3J3YXJkSXRlcmF0b3IyIGkgPSBmaXJzdDIsIGogPSBzOwotCWZvciAoOyBpICE9IGxhc3QyICYmIGNvbXAoKmosICppKTsgKytpLCArK2opOwotCWlmIChpID09IGxhc3QyKQotCSAgICByZXR1cm4gKHMpOwotICAgIH0KLSAgICByZXR1cm4gKGxhc3QxKTsKLX0KLQotLy8vIFxicmllZiBTZWFyY2hlcyBmb3IgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiBccCBjb3VudCBccCB2YWx1ZXMgaW4gW2ZpcnN0LCBsYXN0KQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLUl0ZXJhdG9yIHNlYXJjaF9uIChJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwgc2l6ZV90IGNvdW50LCBjb25zdCBUJiB2YWx1ZSwgQmluYXJ5UHJlZGljYXRlIGNvbXApCi17Ci0gICAgc2l6ZV90IG4gPSAwOwotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7Ci0JaWYgKCFjb21wICgqZmlyc3QsIHZhbHVlKSkKLQkgICAgbiA9IDA7Ci0JZWxzZSBpZiAoKytuID09IGNvdW50KQotCSAgICByZXR1cm4gKGZpcnN0IC0gLS1uKTsKLSAgICB9Ci0gICAgcmV0dXJuIChsYXN0KTsKLX0KLQotLy8vIFxicmllZiBTZWFyY2hlcyBbZmlyc3QxLGxhc3QxKSBmb3IgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW4gZWxlbWVudCBmcm9tIFtmaXJzdDIsbGFzdDIpCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLUlucHV0SXRlcmF0b3IgZmluZF9maXJzdF9vZiAoSW5wdXRJdGVyYXRvciBmaXJzdDEsIElucHV0SXRlcmF0b3IgbGFzdDEsIEZvcndhcmRJdGVyYXRvciBmaXJzdDIsIEZvcndhcmRJdGVyYXRvciBsYXN0MiwgQmluYXJ5UHJlZGljYXRlIGNvbXApCi17Ci0gICAgZm9yICg7IGZpcnN0MSAhPSBsYXN0MTsgKytmaXJzdDEpCi0JZm9yIChGb3J3YXJkSXRlcmF0b3IgaSA9IGZpcnN0MjsgaSAhPSBsYXN0MjsgKytpKQotCSAgICBpZiAoY29tcCAoKmZpcnN0MSwgKmkpKQotCQlyZXR1cm4gKGZpcnN0MSk7Ci0gICAgcmV0dXJuIChmaXJzdDEpOwotfQotCi0vLy8gXGJyaWVmIFJldHVybnMgdHJ1ZSBpZiBbZmlyc3QyLGxhc3QyKSBpcyBhIHN1YnNldCBvZiBbZmlyc3QxLGxhc3QxKQotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBTZXRBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgU3RyaWN0V2Vha09yZGVyaW5nPgotYm9vbCBpbmNsdWRlcyAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MiwgU3RyaWN0V2Vha09yZGVyaW5nIGNvbXApCi17Ci0gICAgZm9yICg7IChmaXJzdDEgIT0gbGFzdDEpICYgKGZpcnN0MiAhPSBsYXN0Mik7ICsrZmlyc3QxKSB7Ci0JaWYgKGNvbXAgKCpmaXJzdDIsICpmaXJzdDEpKQotCSAgICByZXR1cm4gKGZhbHNlKTsKLQlmaXJzdDIgKz0gIWNvbXAgKCpmaXJzdDEsICpmaXJzdDIpOwotICAgIH0KLSAgICByZXR1cm4gKGZpcnN0MiA9PSBsYXN0Mik7Ci19Ci0KLS8vLyBcYnJpZWYgTWVyZ2VzIFtmaXJzdDEsbGFzdDEpIHdpdGggW2ZpcnN0MixsYXN0MikKLS8vLwotLy8vIFJlc3VsdCB3aWxsIGNvbnRhaW4gZXZlcnkgZWxlbWVudCB0aGF0IGlzIGluIGVpdGhlciBzZXQuIElmIGR1cGxpY2F0ZQotLy8vIGVsZW1lbnRzIGFyZSBwcmVzZW50LCBtYXgobixtKSBpcyBwbGFjZWQgaW4gdGhlIHJlc3VsdC4KLS8vLwotLy8vIFxpbmdyb3VwIFNldEFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgU3RyaWN0V2Vha09yZGVyaW5nPgotT3V0cHV0SXRlcmF0b3Igc2V0X3VuaW9uIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIGZvciAoOyAoZmlyc3QxICE9IGxhc3QxKSAmIChmaXJzdDIgIT0gbGFzdDIpOyArK3Jlc3VsdCkgewotCWlmIChjb21wICgqZmlyc3QyLCAqZmlyc3QxKSkKLQkgICAgKnJlc3VsdCA9ICpmaXJzdDIrKzsKLQllbHNlIHsKLQkgICAgZmlyc3QyICs9ICFjb21wICgqZmlyc3QxLCAqZmlyc3QyKTsKLQkgICAgKnJlc3VsdCA9ICpmaXJzdDErKzsKLQl9Ci0gICAgfQotICAgIHJldHVybiAoY29weSAoZmlyc3QyLCBsYXN0MiwgY29weSAoZmlyc3QxLCBsYXN0MSwgcmVzdWx0KSkpOwotfQotCi0vLy8gXGJyaWVmIENyZWF0ZXMgYSBzZXQgY29udGFpbmluZyBlbGVtZW50cyBzaGFyZWQgYnkgdGhlIGdpdmVuIHJhbmdlcy4KLS8vLyBcaW5ncm91cCBTZXRBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLU91dHB1dEl0ZXJhdG9yIHNldF9pbnRlcnNlY3Rpb24gKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgU3RyaWN0V2Vha09yZGVyaW5nIGNvbXApCi17Ci0gICAgd2hpbGUgKChmaXJzdDEgIT0gbGFzdDEpICYgKGZpcnN0MiAhPSBsYXN0MikpIHsKLQlib29sIGIxZ2UyID0gIWNvbXAgKCpmaXJzdDEsICpmaXJzdDIpLCBiMmdlMSA9ICFjb21wICgqZmlyc3QyLCAqZmlyc3QxKTsKLQlpZiAoYjFnZTIgJiBiMmdlMSkKLQkgICAgKnJlc3VsdCsrID0gKmZpcnN0MTsKLQlmaXJzdDEgKz0gYjJnZTE7Ci0JZmlyc3QyICs9IGIxZ2UyOwotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBcYnJpZWYgUmVtb3ZlcyBmcm9tIFtmaXJzdDEsbGFzdDEpIGVsZW1lbnRzIHByZXNlbnQgaW4gW2ZpcnN0MixsYXN0MikKLS8vLyBcaW5ncm91cCBTZXRBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLU91dHB1dEl0ZXJhdG9yIHNldF9kaWZmZXJlbmNlIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIHdoaWxlICgoZmlyc3QxICE9IGxhc3QxKSAmIChmaXJzdDIgIT0gbGFzdDIpKSB7Ci0JYm9vbCBiMWdlMiA9ICFjb21wICgqZmlyc3QxLCAqZmlyc3QyKSwgYjJnZTEgPSAhY29tcCAoKmZpcnN0MiwgKmZpcnN0MSk7Ci0JaWYgKCFiMWdlMikKLQkgICAgKnJlc3VsdCsrID0gKmZpcnN0MTsKLQlmaXJzdDEgKz0gYjJnZTE7Ci0JZmlyc3QyICs9IGIxZ2UyOwotICAgIH0KLSAgICByZXR1cm4gKGNvcHkgKGZpcnN0MSwgbGFzdDEsIHJlc3VsdCkpOwotfQotCi0vLy8gXGJyaWVmIFBlcmZvcm1zIHVuaW9uIG9mIHNldHMgQS1CIGFuZCBCLUEuCi0vLy8gXGluZ3JvdXAgU2V0QWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1PdXRwdXRJdGVyYXRvciBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UgKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgU3RyaWN0V2Vha09yZGVyaW5nIGNvbXApCi17Ci0gICAgd2hpbGUgKChmaXJzdDEgIT0gbGFzdDEpICYgKGZpcnN0MiAhPSBsYXN0MikpIHsKLQlib29sIGIxbDIgPSBjb21wICgqZmlyc3QxLCAqZmlyc3QyKSwgYjJsMSA9IGNvbXAgKCpmaXJzdDIsICpmaXJzdDEpOwotCWlmIChiMWwyKQotCSAgICAqcmVzdWx0KysgPSAqZmlyc3QxOwotCWVsc2UgaWYgKGIybDEpCi0JICAgICpyZXN1bHQrKyA9ICpmaXJzdDI7Ci0JZmlyc3QxICs9ICFiMmwxOwotCWZpcnN0MiArPSAhYjFsMjsKLSAgICB9Ci0gICAgcmV0dXJuIChjb3B5IChmaXJzdDIsIGxhc3QyLCBjb3B5IChmaXJzdDEsIGxhc3QxLCByZXN1bHQpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiByYW5nZSBpcyBzb3J0ZWQuCi0vLy8gXGluZ3JvdXAgQ29uZGl0aW9uQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLWJvb2wgaXNfc29ydGVkIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBmb3IgKEZvcndhcmRJdGVyYXRvciBpID0gZmlyc3Q7ICsraSA8IGxhc3Q7ICsrZmlyc3QpCi0JaWYgKGNvbXAgKCppLCAqZmlyc3QpKQotCSAgICByZXR1cm4gKGZhbHNlKTsKLSAgICByZXR1cm4gKHRydWUpOwotfQotCi0vLy8gXGJyaWVmIENvbXBhcmVzIHR3byBnaXZlbiBjb250YWluZXJzIGxpa2Ugc3RyY21wIGNvbXBhcmVzIHN0cmluZ3MuCi0vLy8gXGluZ3JvdXAgQ29uZGl0aW9uQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLWJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUgKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsIEJpbmFyeVByZWRpY2F0ZSBjb21wKQotewotICAgIGZvciAoOyAoZmlyc3QxICE9IGxhc3QxKSAmIChmaXJzdDIgIT0gbGFzdDIpOyArK2ZpcnN0MSwgKytmaXJzdDIpIHsKLQlpZiAoY29tcCAoKmZpcnN0MSwgKmZpcnN0MikpCi0JICAgIHJldHVybiAodHJ1ZSk7Ci0JaWYgKGNvbXAgKCpmaXJzdDIsICpmaXJzdDEpKQotCSAgICByZXR1cm4gKGZhbHNlKTsKLSAgICB9Ci0gICAgcmV0dXJuICgoZmlyc3QxID09IGxhc3QxKSAmIChmaXJzdDIgIT0gbGFzdDIpKTsKLX0KLQotLy8vIFxicmllZiBDcmVhdGVzIHRoZSBuZXh0IGxleGljb2dyYXBoaWNhbCBwZXJtdXRhdGlvbiBvZiBbZmlyc3QsbGFzdCkuCi0vLy8gUmV0dXJucyBmYWxzZSBpZiBubyBmdXJ0aGVyIHBlcm11dGF0aW9ucyBjYW4gYmUgY3JlYXRlZC4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUgU3RyaWN0V2Vha09yZGVyaW5nPgotYm9vbCBuZXh0X3Blcm11dGF0aW9uIChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBpZiAoZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSA8IDIpCi0JcmV0dXJuIChmYWxzZSk7Ci0gICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGkgPSBsYXN0OwotICAgIGZvciAoLS1pOyBpICE9IGZpcnN0OyApIHsKLQktLWk7Ci0JaWYgKGNvbXAgKGlbMF0sIGlbMV0pKSB7Ci0JICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBqID0gbGFzdDsKLQkgICAgd2hpbGUgKCFjb21wICgqaSwgKi0taikpOwotCSAgICBpdGVyX3N3YXAgKGksIGopOwotCSAgICByZXZlcnNlIChpICsgMSwgbGFzdCk7Ci0JICAgIHJldHVybiAodHJ1ZSk7Ci0JfQotICAgIH0KLSAgICByZXZlcnNlIChmaXJzdCwgbGFzdCk7Ci0gICAgcmV0dXJuIChmYWxzZSk7Ci19Ci0KLS8vLyBcYnJpZWYgQ3JlYXRlcyB0aGUgcHJldmlvdXMgbGV4aWNvZ3JhcGhpY2FsIHBlcm11dGF0aW9uIG9mIFtmaXJzdCxsYXN0KS4KLS8vLyBSZXR1cm5zIGZhbHNlIGlmIG5vIGZ1cnRoZXIgcGVybXV0YXRpb25zIGNhbiBiZSBjcmVhdGVkLgotLy8vIFxpbmdyb3VwIEdlbmVyYXRvckFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1ib29sIHByZXZfcGVybXV0YXRpb24gKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIGlmIChkaXN0YW5jZSAoZmlyc3QsIGxhc3QpIDwgMikKLQlyZXR1cm4gKGZhbHNlKTsKLSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgaSA9IGxhc3Q7Ci0gICAgZm9yICgtLWk7IGkgIT0gZmlyc3Q7ICkgewotCS0taTsKLQlpZiAoY29tcChpWzFdLCBpWzBdKSkgewotCSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgaiA9IGxhc3Q7Ci0JICAgIHdoaWxlICghY29tcCAoKi0taiwgKmkpKTsKLQkgICAgaXRlcl9zd2FwIChpLCBqKTsKLQkgICAgcmV2ZXJzZSAoaSArIDEsIGxhc3QpOwotCSAgICByZXR1cm4gKHRydWUpOwotCX0KLSAgICB9Ci0gICAgcmV2ZXJzZSAoZmlyc3QsIGxhc3QpOwotICAgIHJldHVybiAoZmFsc2UpOwotfQotCi0vLy8gXGJyaWVmIFJldHVybnMgaXRlcmF0b3IgdG8gdGhlIG1heCBlbGVtZW50IGluIFtmaXJzdCxsYXN0KQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBCaW5hcnlQcmVkaWNhdGU+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIG1heF9lbGVtZW50IChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBCaW5hcnlQcmVkaWNhdGUgY29tcCkKLXsKLSAgICBGb3J3YXJkSXRlcmF0b3IgcmVzdWx0ID0gZmlyc3Q7Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JaWYgKGNvbXAgKCpyZXN1bHQsICpmaXJzdCkpCi0JICAgIHJlc3VsdCA9IGZpcnN0OwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIGl0ZXJhdG9yIHRvIHRoZSBtaW4gZWxlbWVudCBpbiBbZmlyc3QsbGFzdCkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciBtaW5fZWxlbWVudCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgQmluYXJ5UHJlZGljYXRlIGNvbXApCi17Ci0gICAgRm9yd2FyZEl0ZXJhdG9yIHJlc3VsdCA9IGZpcnN0OwotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotCWlmIChjb21wICgqZmlyc3QsICpyZXN1bHQpKQotCSAgICByZXN1bHQgPSBmaXJzdDsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBcYnJpZWYgTWFrZXMgW2ZpcnN0LG1pZGRsZSkgYSBwYXJ0IG9mIHRoZSBzb3J0ZWQgYXJyYXkuCi0vLy8gQ29udGVudHMgb2YgW21pZGRsZSxsYXN0KSBpcyB1bmRlZmluZWQuIFRoaXMgaW1wbGVtZW50YXRpb24ganVzdCBjYWxscyBzdGFibGVfc29ydC4KLS8vLyBcaW5ncm91cCBTb3J0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgU3RyaWN0V2Vha09yZGVyaW5nPgotaW5saW5lIHZvaWQgcGFydGlhbF9zb3J0IChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIHN0YWJsZV9zb3J0IChmaXJzdCwgbGFzdCwgY29tcCk7Ci19Ci0KLS8vLyBcYnJpZWYgTGlrZSBwYXJ0aWFsX3NvcnQsIGJ1dCBvdXRwdXRzIHRvIFtyZXN1bHRfZmlyc3QscmVzdWx0X2xhc3QpCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLVJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHBhcnRpYWxfc29ydF9jb3B5IChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHJlc3VsdF9maXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgcmVzdWx0X2xhc3QsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHJlbmQgPSByZXN1bHRfZmlyc3Q7Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIHsKLQlSYW5kb21BY2Nlc3NJdGVyYXRvciBpID0gcmVzdWx0X2ZpcnN0OwotCWZvciAoOyBpICE9IHJlbmQgJiYgY29tcCAoKmksICpmaXJzdCk7ICsraSk7Ci0JaWYgKGkgPT0gcmVzdWx0X2xhc3QpCi0JICAgIGNvbnRpbnVlOwotCXJlbmQgKz0gKHJlbmQgPCByZXN1bHRfbGFzdCk7Ci0JY29weV9iYWNrd2FyZCAoaSwgcmVuZCAtIDEsIHJlbmQpOwotCSppID0gKmZpcnN0OwotICAgIH0KLSAgICByZXR1cm4gKHJlbmQpOwotfQotCi0vLy8gXGJyaWVmIExpa2UgXHJlZiBwYXJ0aXRpb24sIGJ1dCBwcmVzZXJ2ZXMgZXF1YWwgZWxlbWVudCBvcmRlci4KLS8vLyBcaW5ncm91cCBTb3J0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLUZvcndhcmRJdGVyYXRvciBzdGFibGVfcGFydGl0aW9uIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBQcmVkaWNhdGUgcHJlZCkKLXsKLSAgICBpZiAoZmlyc3QgPT0gbGFzdCkKLQlyZXR1cm4gKGZpcnN0KTsKLSAgICBGb3J3YXJkSXRlcmF0b3IgbCwgciwgbSA9IGFkdmFuY2UgKGZpcnN0LCBkaXN0YW5jZSAoZmlyc3QsIGxhc3QpIC8gMik7Ci0gICAgaWYgKGZpcnN0ID09IG0pCi0JcmV0dXJuIChwcmVkKCpmaXJzdCkgPyBsYXN0IDogZmlyc3QpOwotICAgIGwgPSBzdGFibGVfcGFydGl0aW9uIChmaXJzdCwgbSwgcHJlZCk7Ci0gICAgciA9IHN0YWJsZV9wYXJ0aXRpb24gKG0sIGxhc3QsIHByZWQpOwotICAgIHJvdGF0ZSAobCwgbSwgcik7Ci0gICAgcmV0dXJuIChhZHZhbmNlIChsLCBkaXN0YW5jZSAobSwgcikpKTsKLX0KLQotLy8vIFxicmllZiBTcGxpdHMgW2ZpcnN0LGxhc3QpIGluIHR3byBieSBccCBwcmVkLgotLy8vCi0vLy8gQ3JlYXRlcyB0d28gcmFuZ2VzIFtmaXJzdCxtaWRkbGUpIGFuZCBbbWlkZGxlLGxhc3QpLCB3aGVyZSBldmVyeSBlbGVtZW50Ci0vLy8gaW4gdGhlIGZvcm1lciBpcyBsZXNzIHRoYW4gZXZlcnkgZWxlbWVudCBpbiB0aGUgbGF0dGVyLgotLy8vIFRoZSByZXR1cm4gdmFsdWUgaXMgbWlkZGxlLgotLy8vCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIHBhcnRpdGlvbiAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgcmV0dXJuIChzdGFibGVfcGFydGl0aW9uIChmaXJzdCwgbGFzdCwgcHJlZCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cXVldWUuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VxdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWVlZjgwLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VxdWV1ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVxdWV1ZS5oCi0vLwotCi0jaWZuZGVmIFVRVUVVRV9IXzI3RjAxRkRCMEQ1OUI3NTI3N0UwRTVDNDFBQkM2QjVCCi0jZGVmaW5lIFVRVUVVRV9IXzI3RjAxRkRCMEQ1OUI3NTI3N0UwRTVDNDFBQkM2QjVCCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBxdWV1ZSB1cXVldWUuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBTZXF1ZW5jZXMKLS8vLwotLy8vIFxicmllZiBRdWV1ZSBhZGFwdGVyIHRvIHVTVEwgY29udGFpbmVycy4KLS8vLwotLy8vIFRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gdXNlIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgdG8gZmlsbCB0aGUgcXVldWUKLS8vLyBhbmQgdGhlIGNvbXBsZXRlbHkgZW1wdHkgaXQgYmVmb3JlIGZpbGxpbmcgYWdhaW4uCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBTZXF1ZW5jZT4KLWNsYXNzIHF1ZXVlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjp2YWx1ZV90eXBlCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6c2l6ZV90eXBlCXNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjpkaWZmZXJlbmNlX3R5cGUJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OnJlZmVyZW5jZQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6Y29uc3RfcmVmZXJlbmNlCWNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjpwb2ludGVyCQlwb2ludGVyOwotcHVibGljOgotICAgIGlubGluZQkJCXF1ZXVlICh2b2lkKQkJCTogbV9TdG9yYWdlICgpLCBtX0Zyb250ICgwKSB7IH0KLSAgICBleHBsaWNpdCBpbmxpbmUJCXF1ZXVlIChjb25zdCBTZXF1ZW5jZSYgcykJOiBtX1N0b3JhZ2UgKHMpLCBtX0Zyb250ICgwKSB7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQlzaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fU3RvcmFnZS5zaXplKCkgLSBtX0Zyb250KTsgfQotICAgIGlubGluZSBib29sCQkJZW1wdHkgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoIXNpemUoKSk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCQlmcm9udCAodm9pZCkJCQl7IHJldHVybiAobV9TdG9yYWdlIFttX0Zyb250XSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCWZyb250ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fU3RvcmFnZSBbbV9Gcm9udF0pOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJYmFjayAodm9pZCkJCQl7IHJldHVybiAobV9TdG9yYWdlLmJhY2soKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCWJhY2sgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9TdG9yYWdlLmJhY2soKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXB1c2ggKGNvbnN0IHZhbHVlX3R5cGUmIHYpOwotICAgIGlubGluZSB2b2lkCQkJcG9wICh2b2lkKTsKLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IHF1ZXVlJiBzKQl7IHJldHVybiAobV9TdG9yYWdlID09IHMubV9TdG9yYWdlICYmIG1fRnJvbnQgPT0gcy5tX0Zyb250KTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I8IChjb25zdCBxdWV1ZSYgcykJeyByZXR1cm4gKHNpemUoKSA8IHMuc2l6ZSgpKTsgfQotcHJpdmF0ZToKLSAgICBTZXF1ZW5jZQkJCW1fU3RvcmFnZTsJLy8vPCBXaGVyZSB0aGUgZGF0YSBhY3R1YWxseSBpcy4KLSAgICBzaXplX3R5cGUJCQltX0Zyb250OwkvLy88IEluZGV4IG9mIHRoZSBlbGVtZW50IHJldHVybmVkIGJ5IG5leHQgcG9wLgotfTsKLQotLy8vIFB1c2hlcyBccCB2IG9uIHRoZSBxdWV1ZS4KLXRlbXBsYXRlIDxjbGFzcyBTZXF1ZW5jZT4KLWlubGluZSB2b2lkIHF1ZXVlPFNlcXVlbmNlPjo6cHVzaCAoY29uc3QgdmFsdWVfdHlwZSYgdikKLXsKLSAgICBpZiAobV9Gcm9udCkgewotCW1fU3RvcmFnZS5lcmFzZSAobV9TdG9yYWdlLmJlZ2luKCksIG1fRnJvbnQpOwotCW1fRnJvbnQgPSAwOwotICAgIH0KLSAgICBtX1N0b3JhZ2UucHVzaF9iYWNrICh2KTsKLX0KLQotLy8vIFBvcHMgdGhlIHRvcG1vc3QgZWxlbWVudCBmcm9tIHRoZSBxdWV1ZS4KLXRlbXBsYXRlIDxjbGFzcyBTZXF1ZW5jZT4KLWlubGluZSB2b2lkIHF1ZXVlPFNlcXVlbmNlPjo6cG9wICh2b2lkKQotewotICAgIGlmICgrK21fRnJvbnQgPj0gbV9TdG9yYWdlLnNpemUoKSkKLQltX1N0b3JhZ2UucmVzaXplIChtX0Zyb250ID0gMCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzZXQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4ZDRiMC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdXNldC5oCi0vLwotCi0jaWZuZGVmIFVTRVRfSF80NTU0M0Y1MTZFMDJBODdBM0ZDRUE1MDI0MDUyQTZGNQotI2RlZmluZSBVU0VUX0hfNDU1NDNGNTE2RTAyQTg3QTNGQ0VBNTAyNDA1MkE2RjUKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1dmVjdG9yLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBzZXQgdXNldC5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIFNlcXVlbmNlcwotLy8vCi0vLy8gXGJyaWVmIFVuaXF1ZSBzb3J0ZWQgY29udGFpbmVyLiBTb3J0ZWQgdmVjdG9yIHdpdGggYWxsIHZhbHVlcyB1bmlxdWUuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mgc2V0IDogcHVibGljIHZlY3RvcjxUPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjb25zdCBzZXQ8VD4mCQkJcmNzZWxmX3Q7Ci0gICAgdHlwZWRlZiB2ZWN0b3I8VD4JCQkJYmFzZV9jbGFzczsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnZhbHVlX3R5cGUJCWtleV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6dmFsdWVfdHlwZQkJZGF0YV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6dmFsdWVfdHlwZQkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnNpemVfdHlwZQkJc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6cG9pbnRlcgkJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9wb2ludGVyCQljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6cmVmZXJlbmNlCQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9yZWZlcmVuY2UJCWNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X2l0ZXJhdG9yCQljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6Oml0ZXJhdG9yCQlpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnJldmVyc2VfaXRlcmF0b3IJcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IJY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCQlzZXQgKHZvaWQpCQk6IHZlY3RvcjxUPiAoKSB7IH0KLSAgICBleHBsaWNpdCBpbmxpbmUJCXNldCAoc2l6ZV90eXBlIG4pCTogdmVjdG9yPFQ+IChuKSB7IH0KLSAgICBpbmxpbmUJCQlzZXQgKHJjc2VsZl90IHYpCTogdmVjdG9yPFQ+ICh2KSB7IH0gCi0gICAgaW5saW5lCQkJc2V0IChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpIDogdmVjdG9yPFQ+ICgpIHsgaW5zZXJ0IChpMSwgaTIpOyB9Ci0gICAgaW5saW5lIHJjc2VsZl90CQlvcGVyYXRvcj0gKHJjc2VsZl90IHYpCXsgYmFzZV9jbGFzczo6b3BlcmF0b3I9ICh2KTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQlzaXplICh2b2lkKSBjb25zdAl7IHJldHVybiAoYmFzZV9jbGFzczo6c2l6ZSgpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJYmVnaW4gKHZvaWQpCQl7IHJldHVybiAoYmFzZV9jbGFzczo6YmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJYmVnaW4gKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChiYXNlX2NsYXNzOjpiZWdpbigpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJZW5kICh2b2lkKQkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVuZCgpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgllbmQgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChiYXNlX2NsYXNzOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWFzc2lnbiAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQl7IGNsZWFyKCk7IGluc2VydCAoaTEsIGkyKTsgfQotICAgIGlubGluZSB2b2lkCQkJcHVzaF9iYWNrIChjb25zdF9yZWZlcmVuY2UgdikJeyBpbnNlcnQgKHYpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWZpbmQgKGNvbnN0X3JlZmVyZW5jZSB2KSBjb25zdAl7IHJldHVybiAoYmluYXJ5X3NlYXJjaCAoYmVnaW4oKSwgZW5kKCksIHYpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJZmluZCAoY29uc3RfcmVmZXJlbmNlIHYpCXsgcmV0dXJuIChjb25zdF9jYXN0PGl0ZXJhdG9yPihjb25zdF9jYXN0PHJjc2VsZl90PigqdGhpcykuZmluZCAodikpKTsgfQotICAgIGl0ZXJhdG9yCQkJaW5zZXJ0IChjb25zdF9yZWZlcmVuY2Ugdik7Ci0gICAgaW5saW5lIHZvaWQJCQlpbnNlcnQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMik7Ci0gICAgaW5saW5lIHZvaWQJCQllcmFzZSAoY29uc3RfcmVmZXJlbmNlIHYpOwotICAgIGlubGluZSBpdGVyYXRvcgkJZXJhc2UgKGl0ZXJhdG9yIGVwKQl7IHJldHVybiAoYmFzZV9jbGFzczo6ZXJhc2UgKGVwKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVyYXNlIChpdGVyYXRvciBlcDEsIGl0ZXJhdG9yIGVwMikgeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVyYXNlIChlcDEsIGVwMikpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQljbGVhciAodm9pZCkJCXsgYmFzZV9jbGFzczo6Y2xlYXIoKTsgfQotfTsKLQotLy8vIEluc2VydHMgXHAgdiBpbnRvIHRoZSBjb250YWluZXIsIG1haW50YWluaW5nIHRoZSBzb3J0IG9yZGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSBzZXQ8VD46Oml0ZXJhdG9yIHNldDxUPjo6aW5zZXJ0IChjb25zdF9yZWZlcmVuY2UgdikKLXsKLSAgICBpdGVyYXRvciBpcCA9IGxvd2VyX2JvdW5kIChiZWdpbigpLCBlbmQoKSwgdik7Ci0gICAgaWYgKGlwID09IGVuZCgpIHx8IHYgPCAqaXApCi0JaXAgPSBiYXNlX2NsYXNzOjppbnNlcnQgKGlwLCB2KTsKLSAgICBlbHNlCi0JKmlwID0gdjsKLSAgICByZXR1cm4gKGlwKTsKLX0KLQotLy8vIEluc2VydHMgdGhlIGNvbnRlbnRzIG9mIHJhbmdlIFtpMSxpMikKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBzZXQ8VD46Omluc2VydCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQotewotICAgIGFzc2VydCAoaTEgPD0gaTIpOwotICAgIHJlc2VydmUgKHNpemUoKSArIGRpc3RhbmNlIChpMSwgaTIpKTsKLSAgICBmb3IgKDsgaTEgPCBpMjsgKytpMSkKLQlwdXNoX2JhY2sgKCppMSk7Ci19Ci0KLS8vLyBFcmFzZXMgdGhlIGVsZW1lbnQgd2l0aCB2YWx1ZSBccCB2LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBzZXQ8VD46OmVyYXNlIChjb25zdF9yZWZlcmVuY2UgdikKLXsKLSAgICBpdGVyYXRvciBpcCA9IGZpbmQgKHYpOwotICAgIGlmIChpcCAhPSBlbmQoKSkKLQllcmFzZSAoaXApOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzcGVjaWFsLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3BlY2lhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjg3YTU0Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzcGVjaWFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVzcGVjaWFsLmgKLS8vCi0vLyBUZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgZm9yIHVTVEwgY2xhc3Nlcy4KLS8vCi0KLSNpZm5kZWYgVVNQRUNJQUxfSF85NDdBRFlPVTBBUkUzWU9VMlJFQUxMWThBUkU0NENFMAotI2RlZmluZSBVU1BFQ0lBTF9IXzk0N0FEWU9VMEFSRTNZT1UyUkVBTExZOEFSRTQ0Q0UwCi0KLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidXZlY3Rvci5oIgotI2luY2x1ZGUgInVzdHJpbmcuaCIKLSNpbmNsdWRlICJ1c2V0LmgiCi0jaW5jbHVkZSAidW11bHRpc2V0LmgiCi0jaW5jbHVkZSAidWJpdHNldC5oIgotI2luY2x1ZGUgInVsYWFsZ28uaCIKLSNpbmNsdWRlICJ1Y3RyYWxnby5oIgotI2luY2x1ZGUgInVmdW5jdGlvbi5oIgotI2luY2x1ZGUgInVjdHJzdHJtLmgiCi0jaW5jbHVkZSAic2lzdHJlYW0uaCIKLSNpbmNsdWRlIDxjdHlwZS5oPgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQWxvZ3JpdGhtIHNwZWNpYWxpemF0aW9ucyBub3QgaW4gdXNlIGJ5IHRoZSBsaWJyYXJ5IGNvZGUuCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgc3dhcCAoY21lbWxpbmsmIGEsIGNtZW1saW5rJiBiKQkJCXsgYS5zd2FwIChiKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgc3dhcCAobWVtbGluayYgYSwgbWVtbGluayYgYikJCQl7IGEuc3dhcCAoYik7IH0KLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHN3YXAgKG1lbWJsb2NrJiBhLCBtZW1ibG9jayYgYikJCQl7IGEuc3dhcCAoYik7IH0KLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHN3YXAgKHN0cmluZyYgYSwgc3RyaW5nJiBiKQkJCXsgYS5zd2FwIChiKTsgfQotI2RlZmluZSBURU1QTEFURV9TV0FQX1BTUEVDKHR5cGUsIHRlbXBsYXRlX2RlY2wpCVwKLXRlbXBsYXRlX2RlY2wgaW5saW5lIHZvaWQgc3dhcCAodHlwZSYgYSwgdHlwZSYgYikgeyBhLnN3YXAgKGIpOyB9Ci1URU1QTEFURV9TV0FQX1BTUEVDIChURU1QTEFURV9UWVBFMSAodmVjdG9yLFQpLAkJVEVNUExBVEVfREVDTDEgKFQpKQotVEVNUExBVEVfU1dBUF9QU1BFQyAoVEVNUExBVEVfVFlQRTEgKHNldCxUKSwJCVRFTVBMQVRFX0RFQ0wxIChUKSkKLVRFTVBMQVRFX1NXQVBfUFNQRUMgKFRFTVBMQVRFX1RZUEUxIChtdWx0aXNldCxUKSwJVEVNUExBVEVfREVDTDEgKFQpKQotVEVNUExBVEVfU1dBUF9QU1BFQyAoVEVNUExBVEVfVFlQRTIgKHR1cGxlLE4sVCksCVRFTVBMQVRFX0ZVTExfREVDTDIgKHNpemVfdCxOLHR5cGVuYW1lLFQpKQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFN0cmVhbWFibGUgZGVmaW5pdGlvbnMuIE5vdCB1c2VkIGluIHRoZSBsaWJyYXJ5IGFuZCByZXF1aXJlIHN0cmVhbXMuCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8tLS0teyBwYWlyIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcYnJpZWYgUmVhZHMgcGFpciBccCBwIGZyb20gc3RyZWFtIFxwIGlzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCBwYWlyPFQxLFQyPiYgcCkKLXsKLSAgICBpcyA+PiBwLmZpcnN0OwotICAgIGlzLmFsaWduIChhbGlnbm9mKFQyKCkpKTsKLSAgICBpcyA+PiBwLnNlY29uZDsKLSAgICBpcy5hbGlnbiAoYWxpZ25vZihUMSgpKSk7Ci0gICAgcmV0dXJuIChpcyk7Ci19Ci0KLS8vLyBXcml0ZXMgcGFpciBccCBwIHRvIHN0cmVhbSBccCBvcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1vc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgY29uc3QgcGFpcjxUMSxUMj4mIHApCi17Ci0gICAgb3MgPDwgcC5maXJzdDsKLSAgICBvcy5hbGlnbiAoYWxpZ25vZihUMigpKSk7Ci0gICAgb3MgPDwgcC5zZWNvbmQ7Ci0gICAgb3MuYWxpZ24gKGFsaWdub2YoVDEoKSkpOwotICAgIHJldHVybiAob3MpOwotfQotCi0vLy8gV3JpdGVzIHBhaXIgXHAgcCB0byBzdHJlYW0gXHAgb3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotb3N0cmluZ3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmluZ3N0cmVhbSYgb3MsIGNvbnN0IHBhaXI8VDEsVDI+JiBwKQotewotICAgIG9zIDw8ICcoJyA8PCBwLmZpcnN0IDw8ICcsJyA8PCBwLnNlY29uZCA8PCAnKSc7Ci0gICAgcmV0dXJuIChvcyk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSB3cml0dGVuIHNpemUgb2YgdGhlIG9iamVjdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChjb25zdCBwYWlyPFQxLFQyPiYgdikKLXsKLSAgICByZXR1cm4gKEFsaWduIChzdHJlYW1fc2l6ZV9vZih2LmZpcnN0KSwgYWxpZ25vZihUMigpKSkgKwotCSAgICBBbGlnbiAoc3RyZWFtX3NpemVfb2Yodi5zZWNvbmQpLCBhbGlnbm9mKFQxKCkpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgVGFrZXMgYSBwYWlyIGFuZCByZXR1cm5zIHBhaXIuZmlyc3QKLS8vLyBUaGlzIGlzIGFuIGV4dGVuc2lvbiwgYXZhaWxhYmxlIGluIHVTVEwgYW5kIHRoZSBTR0kgU1RMLgotdGVtcGxhdGUgPHR5cGVuYW1lIFBhaXI+IHN0cnVjdCBzZWxlY3Qxc3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248UGFpcix0eXBlbmFtZSBQYWlyOjpmaXJzdF90eXBlPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBQYWlyOjpmaXJzdF90eXBlIHJlc3VsdF90eXBlOwotICAgIGlubGluZSBjb25zdCByZXN1bHRfdHlwZSYJb3BlcmF0b3IoKShjb25zdCBQYWlyJiBhKSBjb25zdCB7IHJldHVybiAoYS5maXJzdCk7IH0KLSAgICBpbmxpbmUgcmVzdWx0X3R5cGUmCQlvcGVyYXRvcigpKFBhaXImIGEpIGNvbnN0IHsgcmV0dXJuIChhLmZpcnN0KTsgfQotfTsKLQotLy8vIFxicmllZiBUYWtlcyBhIHBhaXIgYW5kIHJldHVybnMgcGFpci5zZWNvbmQKLS8vLyBUaGlzIGlzIGFuIGV4dGVuc2lvbiwgYXZhaWxhYmxlIGluIHVTVEwgYW5kIHRoZSBTR0kgU1RMLgotdGVtcGxhdGUgPHR5cGVuYW1lIFBhaXI+IHN0cnVjdCBzZWxlY3QybmQgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248UGFpcix0eXBlbmFtZSBQYWlyOjpzZWNvbmRfdHlwZT4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgUGFpcjo6c2Vjb25kX3R5cGUgcmVzdWx0X3R5cGU7Ci0gICAgaW5saW5lIGNvbnN0IHJlc3VsdF90eXBlJglvcGVyYXRvcigpKGNvbnN0IFBhaXImIGEpIGNvbnN0IHsgcmV0dXJuIChhLnNlY29uZCk7IH0KLSAgICBpbmxpbmUgcmVzdWx0X3R5cGUmCQlvcGVyYXRvcigpKFBhaXImIGEpIGNvbnN0IHsgcmV0dXJuIChhLnNlY29uZCk7IH0KLX07Ci0KLS8vLyBcYnJpZWYgQ29udmVydHMgYSBjb25zdF9pdGVyYXRvciBwYWlyIGludG8gYW4gaXRlcmF0b3IgcGFpcgotLy8vIFVzZWZ1bCBmb3IgY29udmVydGluZyBwYWlyIHJhbmdlcyByZXR1cm5lZCBieSBlcXVhbF9yYW5nZSwgZm9yIGluc3RhbmNlLgotLy8vIFRoaXMgaXMgYW4gZXh0ZW5zaW9uLCBhdmFpbGFibGUgaW4gdVNUTC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgcGFpcjx0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yPgotdW5jb25zdCAoY29uc3QgcGFpcjx0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yLCB0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yPiYgaSwgQ29udGFpbmVyJiBjdHIpCi17Ci0gICAgYXNzZXJ0IChpLmZpcnN0ID49IGN0ci5iZWdpbigpICYmIGkuZmlyc3QgPD0gY3RyLmVuZCgpICYmICJ1bmNvbnN0IGFsZ29yaXRobSBtdXN0IGJlIGdpdmVuIGl0ZXJhdG9ycyBmcm9tIHRoZSBhcmd1bWVudCBjb250YWluZXIiKTsKLSAgICBwYWlyPHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IsIHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3I+IHJlc3VsdDsKLSAgICByZXN1bHQuZmlyc3QgPSBjdHIuYmVnaW4oKSArIChpLmZpcnN0IC0gY3RyLmJlZ2luKCkpOwotICAgIHJlc3VsdC5zZWNvbmQgPSBjdHIuYmVnaW4oKSArIChpLnNlY29uZCAtIGN0ci5iZWdpbigpKTsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLS0tLXsgdmVjdG9yIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TVERfVEVNUExBVEVfQ1RSX1NUUkVBTUFCTEUgKFRFTVBMQVRFX1RZUEUxICh2ZWN0b3IsVCksIFRFTVBMQVRFX0RFQ0wxIChUKSkKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc2l6ZV90IGFsaWdub2YgKGNvbnN0IHZlY3RvcjxUPiYpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I8VD46OndyaXR0ZW5fc2l6ZV90eXBlIHdyaXR0ZW5fc2l6ZV90eXBlOwotICAgIHJldHVybiAoYWxpZ25vZiAod3JpdHRlbl9zaXplX3R5cGUoKSkpOwotfQotCi0vLy0tLS17IGJpdHNldCB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFJlYWRzIGJpdHNldCBccCB2IGZyb20gc3RyZWFtIFxwIGlzLgotdGVtcGxhdGUgPHNpemVfdCBTaXplPgotaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCBiaXRzZXQ8U2l6ZT4mIHYpCi17Ci0gICAgcmV0dXJuIChucl9jb250YWluZXJfcmVhZCAoaXMsIHYpKTsKLX0KLQotLy8vIFdyaXRlcyBiaXRzZXQgXHAgdiBpbnRvIHN0cmVhbSBccCBvcy4KLXRlbXBsYXRlIDxzaXplX3QgU2l6ZT4KLWlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgY29uc3QgYml0c2V0PFNpemU+JiB2KQotewotICAgIHJldHVybiAobnJfY29udGFpbmVyX3dyaXRlIChvcywgdikpOwotfQotCi0vLy8gV3JpdGVzIGJpdHNldCBccCB2IGludG8gc3RyZWFtIFxwIG9zLgotdGVtcGxhdGUgPHNpemVfdCBTaXplPgotaW5saW5lIG9zdHJpbmdzdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJpbmdzdHJlYW0mIG9zLCBjb25zdCBiaXRzZXQ8U2l6ZT4mIHYpCi17Ci0gICAgcmV0dXJuIChvcyA8PCB2LnRvX3N0cmluZygpKTsKLX0KLQotLy8vIFdyaXRlcyBiaXRzZXQgXHAgdiBpbnRvIHN0cmVhbSBccCBvcy4KLXRlbXBsYXRlIDxzaXplX3QgU2l6ZT4KLWlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBiaXRzZXQ8U2l6ZT4mIHYpCi17Ci0gICAgY2hhciBjOwotICAgIGZvciAoaW50IGkgPSBTaXplOyAtLWkgPj0gMCAmJiAoaXMgPj4gYykuZ29vZCgpOykKLQl2LnNldCAoaSwgYyA9PSAnMScpOwotICAgIHJldHVybiAoaXMpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG5lY2Vzc2FyeSB0byB3cml0ZSB0aGlzIG9iamVjdCB0byBhIHN0cmVhbQotdGVtcGxhdGUgPHNpemVfdCBTaXplPgotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoY29uc3QgYml0c2V0PFNpemU+JiB2KQotewotICAgIHJldHVybiAodi5jYXBhY2l0eSgpIC8gQ0hBUl9CSVQpOwotfQotCi0vLy0tLS17IHR1cGxlIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotU1REX1RFTVBMQVRFX05SX0NUUl9TVFJFQU1BQkxFICgKLSAgICBURU1QTEFURV9UWVBFMiAodHVwbGUsTixUKSwKLSAgICBURU1QTEFURV9GVUxMX0RFQ0wyIChzaXplX3QsTix0eXBlbmFtZSxUKQotKQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbnVtZXJpY19saW1pdHM8dHVwbGU8TixUPiA+IHsKLSAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPFQ+IHZhbHVlX2xpbWl0czsKLSAgICBzdGF0aWMgaW5saW5lIHR1cGxlPE4sVD4gbWluICh2b2lkKQl7IHR1cGxlPE4sVD4gdjsgZmlsbCAodiwgdmFsdWVfbGltaXRzOjptaW4oKSk7IHJldHVybiAodik7IH0KLSAgICBzdGF0aWMgaW5saW5lIHR1cGxlPE4sVD4gbWF4ICh2b2lkKQl7IHR1cGxlPE4sVD4gdjsgZmlsbCAodiwgdmFsdWVfbGltaXRzOjptYXgoKSk7IHJldHVybiAodik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSB2YWx1ZV9saW1pdHM6OmlzX3NpZ25lZDsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdmFsdWVfbGltaXRzOjppc19pbnRlZ2VyOwotICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVncmFsID0gdmFsdWVfbGltaXRzOjppc19pbnRlZ3JhbDsKLX07Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVD4KLWlubGluZSBzaXplX3QgYWxpZ25vZiAoY29uc3QgdHVwbGU8TixUPiYpIHsgcmV0dXJuIChhbGlnbm9mIChUKCkpKTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSW50VD4KLWlubGluZSBvc3RyaW5nc3RyZWFtJiBjaGFydHlwZV90ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgVCYgdikKLXsKLSAgICBpZiAoaXNwcmludCh2KSkKLQlvcyA8PCAnXCcnIDw8IHYgPDwgJ1wnJzsKLSAgICBlbHNlCi0Jb3MgPDwgKEludFQpKHYpOwotICAgIHJldHVybiAob3MpOwotfQotCi10ZW1wbGF0ZSA8PgotaW5saW5lIG9zdHJpbmdzdHJlYW0mIGNvbnRhaW5lcl9lbGVtZW50X3RleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zLCBjb25zdCB1aW50OF90JiB2KQoteyByZXR1cm4gKGNoYXJ0eXBlX3RleHRfd3JpdGU8dWludDhfdCwgdW5zaWduZWQgaW50PiAob3MsIHYpKTsgfQotdGVtcGxhdGUgPD4KLWlubGluZSBvc3RyaW5nc3RyZWFtJiBjb250YWluZXJfZWxlbWVudF90ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgaW50OF90JiB2KQoteyByZXR1cm4gKGNoYXJ0eXBlX3RleHRfd3JpdGU8aW50OF90LCBpbnQ+IChvcywgdikpOyB9Ci0KLS8vLS0tLXsgbWF0cml4IH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gV3JpdGVzIHR1cGxlIFxwIHYgaW50byBzdHJlYW0gXHAgb3MuCi10ZW1wbGF0ZSA8c2l6ZV90IE5YLCBzaXplX3QgTlksIHR5cGVuYW1lIFQ+Ci1vc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgbWF0cml4PE5YLE5ZLFQ+JiB2KQotewotICAgIG9zIDw8ICcoJzsKLSAgICBmb3IgKHVvZmZfdCByb3cgPSAwOyByb3cgPCBOWTsgKysgcm93KSB7Ci0Jb3MgPDwgJygnOwotICAgICAgICBmb3IgKHVvZmZfdCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBOWDsgKysgY29sdW1uKSB7Ci0JICAgIG9zIDw8IHZbcm93XVtjb2x1bW5dOwotCSAgICBpZiAoY29sdW1uIDwgTlggLSAxKQotCQlvcyA8PCAnLCc7Ci0JfQotCW9zIDw8ICcpJzsKLSAgICB9Ci0gICAgb3MgPDwgJyknOwotICAgIHJldHVybiAob3MpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKLSNpZm5kZWYgV0lUSE9VVF9MSUJTVERDUFAKLQotLy8vIFx0b2RvIE5lZWQgYSBiZXR0ZXIgc29sdXRpb24gdG8gZ2V0dGluZyB0aGUgaGFzaCB2YWx1ZS4KLWlubGluZSBoYXNodmFsdWVfdCBoYXNoX3ZhbHVlIChjb25zdCBzdHJpbmc6OmNvbnN0X3BvaW50ZXImIHYpCi17Ci0gICAgc3RyaW5nOjpjb25zdF9wb2ludGVyIGZpcnN0ICh2KSwgbGFzdCAodiArIHN0cmxlbih2KSk7Ci0gICAgaGFzaHZhbHVlX3QgaCA9IDA7Ci0gICAgLy8gVGhpcyBoYXMgdGhlIGJpdHMgZmxvd2luZyBpbnRvIGVhY2ggb3RoZXIgZnJvbSBib3RoIHNpZGVzIG9mIHRoZSBudW1iZXIKLSAgICBmb3IgKDsgZmlyc3QgPCBsYXN0OyArKyBmaXJzdCkKLQloID0gKmZpcnN0ICsgKChoIDw8IDcpIHwgKGggPj4gQml0c0luVHlwZShoYXNodmFsdWVfdCkgLSA3KSk7Ci0gICAgcmV0dXJuIChoKTsKLX0KLQotI2VuZGlmCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgdGhlcmUgcmVhbGx5IGlzIG5vIG90aGVyIHBsYWNlIHRvIHB1dCBpdC4KLSNpZiBTSVpFX09GX0JPT0wgIT0gU0laRV9PRl9DSEFSCi0vLyBib29sIGlzIGEgYmlnIHR5cGUgb24gc29tZSBtYWNoaW5lcyAobGlrZSBERUMgQWxwaGEpLCBzbyBpdCdzIHdyaXR0ZW4gYXMgYSBieXRlLgotQUxJR05PRihib29sLCBzaXplb2YodWludDhfdCkpCi0jZW5kaWYKLVNURF9TVFJFQU1BQkxFKGNtZW1saW5rKQotU1REX1NUUkVBTUFCTEUoaXN0cmVhbSkKLVNURF9TVFJFQU1BQkxFKG9zdHJlYW0pCi1TVERfU1RSRUFNQUJMRShzdHJpbmcpCi1TVERfU1RSRUFNQUJMRShleGNlcHRpb24pCi1TVERfU1RSRUFNQUJMRShDQmFja3RyYWNlKQotVEVYVF9TVFJFQU1BQkxFKGNtZW1saW5rKQotVEVYVF9TVFJFQU1BQkxFKGlzdHJlYW0pCi1URVhUX1NUUkVBTUFCTEUob3N0cmVhbSkKLVRFWFRfU1RSRUFNQUJMRShleGNlcHRpb24pCi1URVhUX1NUUkVBTUFCTEUoQ0JhY2t0cmFjZSkKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGFjay5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0YWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OGUzYjMuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0YWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdXN0YWNrLmgKLS8vCi0KLSNpZm5kZWYgVVNUQUNLX0hfNTI0MkY1NjM1MzIyQjJFQzQ0QTlBRUU3MzAyMkM2RTkKLSNkZWZpbmUgVVNUQUNLX0hfNTI0MkY1NjM1MzIyQjJFQzQ0QTlBRUU3MzAyMkM2RTkKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIHN0YWNrIHVzdGFjay5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIFNlcXVlbmNlcwotLy8vCi0vLy8gXGJyaWVmIFN0YWNrIGFkYXB0ZXIgdG8gdVNUTCBjb250YWluZXJzLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU2VxdWVuY2U+Ci1jbGFzcyBzdGFjayB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6dmFsdWVfdHlwZQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OnNpemVfdHlwZQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6ZGlmZmVyZW5jZV90eXBlCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjpyZWZlcmVuY2UJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OmNvbnN0X3JlZmVyZW5jZQljb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6cG9pbnRlcgkJcG9pbnRlcjsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCQlzdGFjayAodm9pZCkJCQk6IG1fU3RvcmFnZSAoKSB7IH0KLSAgICBleHBsaWNpdCBpbmxpbmUJCXN0YWNrIChjb25zdCBTZXF1ZW5jZSYgcykJOiBtX1N0b3JhZ2UgKHMpIHsgfQotICAgIGlubGluZSBib29sCQkJZW1wdHkgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9TdG9yYWdlLmVtcHR5KCkpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX1N0b3JhZ2Uuc2l6ZSgpKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCXRvcCAodm9pZCkJCQl7IHJldHVybiAobV9TdG9yYWdlLmJhY2soKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCXRvcCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX1N0b3JhZ2UuYmFjaygpKTsgfQotICAgIGlubGluZSB2b2lkCQkJcHVzaCAoY29uc3QgdmFsdWVfdHlwZSYgdikJeyBtX1N0b3JhZ2UucHVzaF9iYWNrICh2KTsgfQotICAgIGlubGluZSB2b2lkCQkJcG9wICh2b2lkKQkJCXsgbV9TdG9yYWdlLnBvcF9iYWNrKCk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IHN0YWNrJiBzKQl7IHJldHVybiAobV9TdG9yYWdlID09IHMubV9TdG9yYWdlKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I8IChjb25zdCBzdGFjayYgcykJeyByZXR1cm4gKG1fU3RvcmFnZS5zaXplKCkgPCBzLm1fU3RvcmFnZS5zaXplKCkpOyB9Ci1wcml2YXRlOgotICAgIFNlcXVlbmNlCQkJbV9TdG9yYWdlOwkvLy88IFdoZXJlIHRoZSBkYXRhIGFjdHVhbGx5IGlzLgotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0ZHhlcHQuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0ZHhlcHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTczMWY3Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGR4ZXB0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1c3RkeGVwdC5jYwotLy8KLQotI2luY2x1ZGUgInVzdGR4ZXB0LmgiCi0jaW5jbHVkZSAibWlzdHJlYW0uaCIKLSNpbmNsdWRlICJtb3N0cmVhbS5oIgotI2luY2x1ZGUgInN0cm1zaXplLmgiCi0jaW5jbHVkZSAidWlvc2Z1bmMuaCIKLSNpbmNsdWRlICJ1c3BlY2lhbC5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXHAgYXJnIGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGVycm9yLgotZXJyb3JfbWVzc2FnZTo6ZXJyb3JfbWVzc2FnZSAoY29uc3QgY2hhciogYXJnKSB0aHJvdygpCi06IG1fQXJnICgpCi17Ci0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgIG1fQXJnID0gYXJnOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLSAgICB0cnkgeyBtX0FyZyA9IGFyZzsgfSBjYXRjaCAoLi4uKSB7fQotI2VuZGlmCi0gICAgc2V0X2Zvcm1hdCAoeGZtdF9FcnJvck1lc3NhZ2UpOwotfQotCi0vLy8gVmlydHVhbCBkZXN0cnVjdG9yCi1lcnJvcl9tZXNzYWdlOjp+ZXJyb3JfbWVzc2FnZSAodm9pZCkgdGhyb3coKQotewotfQotCi0vLy8gUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UuIGZtdD0iJXM6ICVzIgotdm9pZCBlcnJvcl9tZXNzYWdlOjppbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciogZm10KSBjb25zdCB0aHJvdygpCi17Ci0gICAgaWYgKCFmbXQpIGZtdCA9ICIlczogJXMiOwotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICBtc2didWYuZm9ybWF0IChmbXQsIHdoYXQoKSwgbV9BcmcuY2RhdGEoKSk7Ci0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotICAgIHRyeSB7IG1zZ2J1Zi5mb3JtYXQgKGZtdCwgd2hhdCgpLCBtX0FyZy5jZGF0YSgpKTsgfSBjYXRjaCAoLi4uKSB7fQotI2VuZGlmCi19Ci0KLS8vLyBSZWFkcyB0aGUgb2JqZWN0IGZyb20gc3RyZWFtIFxwIGlzLgotdm9pZCBlcnJvcl9tZXNzYWdlOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICBleGNlcHRpb246OnJlYWQgKGlzKTsKLSAgICBpcyA+PiBtX0FyZyA+PiBpb3M6OmFsaWduKCk7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIG9iamVjdCB0byBzdHJlYW0gXHAgb3MuCi12b2lkIGVycm9yX21lc3NhZ2U6OndyaXRlIChvc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICBleGNlcHRpb246OndyaXRlIChvcyk7Ci0gICAgb3MgPDwgbV9BcmcgPDwgaW9zOjphbGlnbigpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgd3JpdHRlbiBvYmplY3QuCi1zaXplX3QgZXJyb3JfbWVzc2FnZTo6c3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChleGNlcHRpb246OnN0cmVhbV9zaXplKCkgKyBBbGlnbiAoc3RyZWFtX3NpemVfb2YgKG1fQXJnKSkpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGR4ZXB0LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RkeGVwdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjUwOTUzLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGR4ZXB0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVzdGR4ZXB0LmgKLS8vCi0KLSNpZm5kZWYgVVNURFhFUFRfSF80NkY3QUU5Njc3MzhCNTg4MDM4Rjk1RTQxMTU4RDdGRgotI2RlZmluZSBVU1REWEVQVF9IXzQ2RjdBRTk2NzczOEI1ODgwMzhGOTVFNDExNThEN0ZGCi0KLSNpbmNsdWRlICJ1ZXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAidXN0cmluZy5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLWVudW0geyAKLSAgICB4Zm10X0Vycm9yTWVzc2FnZSA9IDIsCi0gICAgeGZtdF9Mb2dpY0Vycm9yID0geGZtdF9FcnJvck1lc3NhZ2UsCi0gICAgeGZtdF9SdW50aW1lRXJyb3IgPSB4Zm10X0Vycm9yTWVzc2FnZQotfTsKLQotLy8vIFxjbGFzcyBsb2dpY19lcnJvciB1c3RkeGVwdC5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBMb2dpYyBlcnJvcnMgcmVwcmVzZW50IHByb2JsZW1zIGluIHRoZSBpbnRlcm5hbCBsb2dpYyBvZiB0aGUgcHJvZ3JhbS4KLS8vLwotY2xhc3MgZXJyb3JfbWVzc2FnZSA6IHB1YmxpYyBleGNlcHRpb24gewotcHVibGljOgotICAgIGV4cGxpY2l0CQllcnJvcl9tZXNzYWdlIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCk7Ci0gICAgdmlydHVhbAkgICAgICAgfmVycm9yX21lc3NhZ2UgKHZvaWQpIHRocm93KCk7Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhcioJd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoImVycm9yIik7IH0KLSAgICB2aXJ0dWFsIHZvaWQJaW5mbyAoc3RyaW5nJiBtc2didWYsIGNvbnN0IGNoYXIqIGZtdCA9IE5VTEwpIGNvbnN0IHRocm93KCk7Ci0gICAgdmlydHVhbCB2b2lkCXJlYWQgKGlzdHJlYW0mIGlzKTsKLSAgICB2aXJ0dWFsIHZvaWQJd3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdDsKLSAgICB2aXJ0dWFsIHNpemVfdAlzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RyaW5nCQltX0FyZzsKLX07Ci0KLS8vLyBcY2xhc3MgbG9naWNfZXJyb3IgdXN0ZHhlcHQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgTG9naWMgZXJyb3JzIHJlcHJlc2VudCBwcm9ibGVtcyBpbiB0aGUgaW50ZXJuYWwgbG9naWMgb2YgdGhlIHByb2dyYW0uCi0vLy8KLWNsYXNzIGxvZ2ljX2Vycm9yIDogcHVibGljIGVycm9yX21lc3NhZ2UgewotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJbG9naWNfZXJyb3IgKGNvbnN0IGNoYXIqIGFyZykgdGhyb3coKSA6IGVycm9yX21lc3NhZ2UgKGFyZykge30KLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgibG9naWMgZXJyb3IiKTsgfQotfTsKLQotLy8vIFxjbGFzcyBkb21haW5fZXJyb3IgdXN0ZHhlcHQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgUmVwb3J0cyBkb21haW4gZXJyb3JzICgiZG9tYWluIiBpcyBpbiB0aGUgbWF0aGVtYXRpY2FsIHNlbnNlKQotLy8vCi1jbGFzcyBkb21haW5fZXJyb3IgOiBwdWJsaWMgbG9naWNfZXJyb3IgewotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJZG9tYWluX2Vycm9yIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBsb2dpY19lcnJvciAoYXJnKSB7fQotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJkb21haW4gZXJyb3IiKTsgfQotfTsKLQotLy8vIFxjbGFzcyBpbnZhbGlkX2FyZ3VtZW50IHVzdGR4ZXB0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIFJlcG9ydHMgYW4gaW52YWxpZCBhcmd1bWVudCB0byBhIGZ1bmN0aW9uLgotLy8vCi1jbGFzcyBpbnZhbGlkX2FyZ3VtZW50IDogcHVibGljIGxvZ2ljX2Vycm9yIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgZXhwbGljaXQJCWludmFsaWRfYXJndW1lbnQgKGNvbnN0IGNoYXIqIGFyZykgdGhyb3coKSA6IGxvZ2ljX2Vycm9yIChhcmcpIHt9Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhcioJd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoImludmFsaWQgYXJndW1lbnQiKTsgfQotfTsKLQotLy8vIFxjbGFzcyBsZW5ndGhfZXJyb3IgdXN0ZHhlcHQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgUmVwb3J0cyB3aGVuIGFuIG9iamVjdCBleGNlZWRzIGl0cyBhbGxvd2VkIHNpemUuCi0vLy8KLWNsYXNzIGxlbmd0aF9lcnJvciA6IHB1YmxpYyBsb2dpY19lcnJvciB7Ci1wdWJsaWM6Ci0gICAgaW5saW5lIGV4cGxpY2l0CQlsZW5ndGhfZXJyb3IgKGNvbnN0IGNoYXIqIGFyZykgdGhyb3coKSA6IGxvZ2ljX2Vycm9yIChhcmcpIHt9IAotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJsZW5ndGggZXJyb3IiKTsgfQotfTsKLQotLy8vIFxjbGFzcyBvdXRfb2ZfcmFuZ2UgdXN0ZHhlcHQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgUmVwb3J0cyBhcmd1bWVudHMgd2l0aCB2YWx1ZXMgb3V0IG9mIGFsbG93ZWQgcmFuZ2UuCi0vLy8KLWNsYXNzIG91dF9vZl9yYW5nZSA6IHB1YmxpYyBsb2dpY19lcnJvciB7Ci1wdWJsaWM6Ci0gICAgaW5saW5lIGV4cGxpY2l0CQlvdXRfb2ZfcmFuZ2UgKGNvbnN0IGNoYXIqIGFyZykgdGhyb3coKSA6IGxvZ2ljX2Vycm9yIChhcmcpIHt9Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhcioJd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoIm91dCBvZiByYW5nZSIpOyB9Ci19OwotCi0vLy8gXGNsYXNzIHJ1bnRpbWVfZXJyb3IgdXN0ZHhlcHQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgUmVwb3J0cyBlcnJvcnMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZC4KLS8vLwotY2xhc3MgcnVudGltZV9lcnJvciA6IHB1YmxpYyBlcnJvcl9tZXNzYWdlIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgZXhwbGljaXQJCXJ1bnRpbWVfZXJyb3IgKGNvbnN0IGNoYXIqIGFyZykgdGhyb3coKSA6IGVycm9yX21lc3NhZ2UgKGFyZykge30KLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgicnVudGltZSBlcnJvciIpOyB9Ci19OwotCi0vLy8gXGNsYXNzIHJhbmdlX2Vycm9yIHVzdGR4ZXB0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIFJlcG9ydHMgZGF0YSB0aGF0IGRvZXMgbm90IGZhbGwgd2l0aGluIHRoZSBwZXJtaXR0ZWQgcmFuZ2UuCi0vLy8KLWNsYXNzIHJhbmdlX2Vycm9yIDogcHVibGljIHJ1bnRpbWVfZXJyb3IgewotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJcmFuZ2VfZXJyb3IgKGNvbnN0IGNoYXIqIGFyZykgdGhyb3coKSA6IHJ1bnRpbWVfZXJyb3IgKGFyZykge30KLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgicmFuZ2UgZXJyb3IiKTsgfQotfTsKLQotLy8vIFxjbGFzcyBvdmVyZmxvd19lcnJvciB1c3RkeGVwdC5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBSZXBvcnRzIGFyaXRobWV0aWMgb3ZlcmZsb3cuCi0vLy8KLWNsYXNzIG92ZXJmbG93X2Vycm9yIDogcHVibGljIHJ1bnRpbWVfZXJyb3IgewotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJb3ZlcmZsb3dfZXJyb3IgKGNvbnN0IGNoYXIqIGFyZykgdGhyb3coKSA6IHJ1bnRpbWVfZXJyb3IgKGFyZykge30KLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgib3ZlcmZsb3cgZXJyb3IiKTsgfQotfTsKLQotLy8vIFxjbGFzcyB1bmRlcmZsb3dfZXJyb3IgdXN0ZHhlcHQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgUmVwb3J0cyBhcml0aG1ldGljIHVuZGVyZmxvdy4KLS8vLwotY2xhc3MgdW5kZXJmbG93X2Vycm9yIDogcHVibGljIHJ1bnRpbWVfZXJyb3IgewotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJdW5kZXJmbG93X2Vycm9yIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBydW50aW1lX2Vycm9yIChhcmcpIHt9Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhcioJd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoInVuZGVyZmxvdyBlcnJvciIpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RsLnRiZmYgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RsLnRiZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YWQzNzQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0bC50YmZmCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotPCEtLSBBTlNJIFN0YW5kYXJkIGZpeGVkIHNpemUgdHlwZXMgLS0+Ci08dHlwZSBuYW1lPWludDhfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQ4X3QvPgotPHR5cGUgbmFtZT1pbnQxNl90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDE2X3QvPgotPHR5cGUgbmFtZT1pbnQzMl90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDMyX3QvPgotPHR5cGUgbmFtZT1pbnQ2NF90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDY0X3QvPgotPHR5cGUgbmFtZT11aW50OF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDhfdC8+Ci08dHlwZSBuYW1lPXVpbnQxNl90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDE2X3QvPgotPHR5cGUgbmFtZT11aW50MzJfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQzMl90Lz4KLTx0eXBlIG5hbWU9dWludDY0X3QgZm9ybWF0PWludGVncmFsIHNpemU9aW50NjRfdC8+Ci08dHlwZSBuYW1lPWZsb2F0IGZvcm1hdD1mbG9hdCBzaXplPWZsb2F0Lz4KLTx0eXBlIG5hbWU9ZG91YmxlIGZvcm1hdD1mbG9hdCBzaXplPWRvdWJsZS8+Ci0KLTwhLS0gU3RhbmRhcmQgdHlwZXMgb2YgdmFyaWFibGUgc2l6ZSwgdGhlc2UgYXJlIG1hY2hpbmUgc3BlY2lmaWMgLS0+Ci08dHlwZSBuYW1lPWludF9sZWFzdDhfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQ4X3QvPgotPHR5cGUgbmFtZT1pbnRfbGVhc3QxNl90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDE2X3QvPgotPHR5cGUgbmFtZT1pbnRfbGVhc3QzMl90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDMyX3QvPgotPHR5cGUgbmFtZT1pbnRfbGVhc3Q2NF90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDY0X3QvPgotPHR5cGUgbmFtZT11aW50X2xlYXN0OF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDhfdC8+Ci08dHlwZSBuYW1lPXVpbnRfbGVhc3QxNl90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDE2X3QvPgotPHR5cGUgbmFtZT11aW50X2xlYXN0MzJfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQzMl90Lz4KLTx0eXBlIG5hbWU9dWludF9sZWFzdDY0X3QgZm9ybWF0PWludGVncmFsIHNpemU9aW50NjRfdC8+Ci08dHlwZSBuYW1lPWludF9mYXN0OF90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDhfdC8+Ci08dHlwZSBuYW1lPWludF9mYXN0MTZfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQxNl90Lz4KLTx0eXBlIG5hbWU9aW50X2Zhc3QzMl90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDMyX3QvPgotPHR5cGUgbmFtZT1pbnRfZmFzdDY0X3QgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9aW50NjRfdC8+Ci08dHlwZSBuYW1lPXVpbnRfZmFzdDhfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQ4X3QvPgotPHR5cGUgbmFtZT11aW50X2Zhc3QxNl90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDE2X3QvPgotPHR5cGUgbmFtZT11aW50X2Zhc3QzMl90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDMyX3QvPgotPHR5cGUgbmFtZT11aW50X2Zhc3Q2NF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDY0X3QvPgotPHR5cGUgbmFtZT1pbnRwdHJfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnRwdHJfdC8+Ci08dHlwZSBuYW1lPXVpbnRwdHJfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnRwdHJfdC8+Ci08dHlwZSBuYW1lPWludG1heF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludG1heF90Lz4KLTx0eXBlIG5hbWU9dWludG1heF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludG1heF90Lz4KLQotPCEtLSBTdGFuZGFyZCBDKysgdmFyaWFibGUgc2l6ZSB0eXBlcywgYWxzbyBtYWNoaW5lIHNwZWNpZmljIC0tPgotPHR5cGUgbmFtZT13Y2hhcl90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPXdjaGFyX3QvPgotPHR5cGUgbmFtZT1zaXplX3QgZm9ybWF0PWludGVncmFsIHNpemU9c2l6ZV90Lz4KLTx0eXBlIG5hbWU9Y2hhciBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1jaGFyLz4KLTx0eXBlIG5hbWU9c2hvcnQgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9c2hvcnQvPgotPHR5cGUgbmFtZT1pbnQgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9aW50Lz4KLTx0eXBlIG5hbWU9bG9uZyBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1sb25nLz4KLTx0eXBlIG5hbWU9bG9uZ2xvbmcgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9bG9uZ2xvbmcvPgotPHR5cGUgbmFtZT11X2NoYXIgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9Y2hhci8+Ci08dHlwZSBuYW1lPXVfc2hvcnQgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9c2hvcnQvPgotPHR5cGUgbmFtZT11X2ludCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQvPgotPHR5cGUgbmFtZT11X2xvbmcgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9bG9uZy8+Ci08dHlwZSBuYW1lPXVfbG9uZ2xvbmcgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9bG9uZ2xvbmcvPgotCi08IS0tIGxpYmMgdHlwZXMgLS0+Ci08dHlwZSBuYW1lPXRpbWVfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT10aW1lX3QvPgotPHR5cGUgbmFtZT1vZmZfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1vZmZfdC8+Ci08dHlwZSBuYW1lPXB0cmRpZmZfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1wdHJkaWZmX3QvPgotPHR5cGUgbmFtZT1kZXZfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1kZXZfdC8+Ci08dHlwZSBuYW1lPXVpZF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPXVpZF90Lz4KLTx0eXBlIG5hbWU9Z2lkX3QgZm9ybWF0PWludGVncmFsIHNpemU9Z2lkX3QvPgotPHR5cGUgbmFtZT1tb2RlX3QgZm9ybWF0PWludGVncmFsIHNpemU9bW9kZV90Lz4KLTx0eXBlIG5hbWU9bmxpbmtfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1ubGlua190Lz4KLTx0eXBlIG5hbWU9cGlkX3QgZm9ybWF0PWludGVncmFsIHNpemU9cGlkX3QvPgotPHR5cGUgbmFtZT1mc2lkX3QgZm9ybWF0PWludGVncmFsIHNpemU9ZnNpZF90Lz4KLTx0eXBlIG5hbWU9Y2xvY2tfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1jbG9ja190Lz4KLTx0eXBlIG5hbWU9aWRfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pZF90Lz4KLTx0eXBlIG5hbWU9a2V5X3QgZm9ybWF0PWludGVncmFsIHNpemU9a2V5X3QvPgotPHR5cGUgbmFtZT1ibGtzaXplX3QgZm9ybWF0PWludGVncmFsIHNpemU9Ymxrc2l6ZV90Lz4KLQotPCEtLSBUeXBlcyB3aXRoaW4gdGhlIHVzdGwgbGlicmFyeSAtLT4KLTx0eXBlIG5hbWU9dXRmOCBmb3JtYXQ9aW50ZWdyYWwgbWluU2l6ZT0iMSIgbWF4U2l6ZT0iOCIvPgotPHR5cGUgbmFtZT1hdXRvIGZvcm1hdD11bnN0cnVjdHVyZWQgaWQ9IkFVVE8iLz4KLTxuYW1lc3BhY2UgbmFtZT11c3RsPgotICAgIDx0eXBlIG5hbWU9dW9mZl90IGV4dGVuZHM9c2l6ZV90Lz4KLSAgICA8dHlwZSBuYW1lPWNtZW1saW5rX3B0cl90IGZvcm1hdD1wb2ludGVyLz4KLSAgICA8dHlwZSBuYW1lPW1lbWxpbmtfcHRyX3QgZXh0ZW5kcz1jbWVtbGlua19wdHJfdC8+Ci0gICAgPHR5cGUgbmFtZT1tZW1ibG9ja19wdHJfdCBleHRlbmRzPW1lbWxpbmtfcHRyX3QvPgotICAgIDx0eXBlIG5hbWU9Y21lbWxpbmsgZm9ybWF0PXN0cnVjdD4KLQk8dmFyIG5hbWU9ZGF0YV9zaXplIHR5cGU9c2l6ZV90IC8+Ci0JPHZhciBuYW1lPWRhdGEgZm9ybWF0PXVuc3RydWN0dXJlZCBzaXplPWRhdGFfc2l6ZSAvPgotICAgIDwvdHlwZT4KLSAgICA8dHlwZSBuYW1lPW1lbWxpbmsgZXh0ZW5kcz1jbWVtbGluayAvPgotICAgIDx0eXBlIG5hbWU9bWVtYmxvY2sgZXh0ZW5kcz1jbWVtbGluayAvPgotICAgIDx0eXBlIG5hbWU9c3RyaW5nIGV4dGVuZHM9bWVtYmxvY2s+Ci0JPHZhciBuYW1lPWRhdGFfc2l6ZSB0eXBlPXV0ZjggLz4KLQk8dmFyIG5hbWU9ZGF0YSBmb3JtYXQ9YXJyYXkgdHlwZT11dGY4IHNpemU9ZGF0YV9zaXplIC8+Ci0gICAgPC90eXBlPgotPC9uYW1lc3BhY2U+Ci0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdHJpbmcuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0cmluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiODdkMzQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0cmluZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MjUgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVzdHJpbmcuY3BwCi0vLwotLy8JU1RMIGJhc2ljX3N0cmluZyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkuCi0vLwotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVzdHJpbmcuaCIKLSNpbmNsdWRlICJtaXN0cmVhbS5oIgotI2luY2x1ZGUgIm1vc3RyZWFtLmgiCi0jaW5jbHVkZSAidWFsZ28uaCIKLSNpbmNsdWRlIDxzdGRpby5oPgkvLyBmb3IgdnNucHJpbnRmIChpbiBzdHJpbmc6OmZvcm1hdCkKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY29uc3QgdW9mZl90IHN0cmluZzo6bnBvczsKLWNvbnN0IHN0cmluZzo6c2l6ZV90eXBlIHN0cmluZzo6c2l6ZV9UZXJtaW5hdG9yOwotY29uc3Qgc3RyaW5nOjp2YWx1ZV90eXBlIHN0cmluZzo6Y19UZXJtaW5hdG9yOwotY29uc3QgY2hhciBzdHJpbmc6OmVtcHR5X3N0cmluZ1tzdHJpbmc6OnNpemVfVGVybWluYXRvcl0gPSAiIjsKLQotdHlwZWRlZiB1dGY4aW5faXRlcmF0b3I8c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gdXRmOGljc3RyaW5nX2l0ZXJhdG9yOwotdHlwZWRlZiB1dGY4aW5faXRlcmF0b3I8c3RyaW5nOjppdGVyYXRvcj4gdXRmOGlzdHJpbmdfaXRlcmF0b3I7Ci10eXBlZGVmIHV0ZjhvdXRfaXRlcmF0b3I8c3RyaW5nOjppdGVyYXRvcj4gdXRmOG9zdHJpbmdfaXRlcmF0b3I7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gQ3JlYXRlcyBhbiBlbXB0eSBzdHJpbmcuCi1zdHJpbmc6OnN0cmluZyAodm9pZCkKLTogbWVtYmxvY2sgKCkKLXsKLSAgICBsaW5rIChlbXB0eV9zdHJpbmcsIDBVKTsKLX0KLQotLy8vIEFzc2lnbnMgaXRzZWxmIHRoZSB2YWx1ZSBvZiBzdHJpbmcgXHAgcwotc3RyaW5nOjpzdHJpbmcgKGNvbnN0IHN0cmluZyYgcykKLTogbWVtYmxvY2soKQotewotICAgIGlmIChzLmlzX2xpbmtlZCgpKQotCWxpbmsgKHMuY19zdHIoKSwgcy5zaXplKCkpOwotICAgIGVsc2UKLQlhc3NpZ24gKHMpOwotfQotCi0vLy8gTGlua3MgdG8gXHAgcwotc3RyaW5nOjpzdHJpbmcgKGNvbnN0X3BvaW50ZXIgcykKLTogbWVtYmxvY2sgKCkKLXsKLSAgICBpZiAoIXMpCi0JcyA9IGVtcHR5X3N0cmluZzsKLSAgICBsaW5rIChzLCBzdHJsZW4ocykpOwotfQotCi0vLy8gQ3JlYXRlcyBhIHN0cmluZyBvZiBsZW5ndGggXHAgbiBmaWxsZWQgd2l0aCBjaGFyYWN0ZXIgXHAgYy4KLXN0cmluZzo6c3RyaW5nIChzaXplX3R5cGUgbiwgdmFsdWVfdHlwZSBjKQotOiBtZW1ibG9jayAoKQotewotICAgIHJlc2l6ZSAobik7Ci0gICAgZmlsbF9uIChiZWdpbigpLCBuLCBjKTsKLX0KLQotLy8vIFJlc2l6ZSB0aGUgc3RyaW5nIHRvIFxwIG4gY2hhcmFjdGVycy4gTmV3IHNwYWNlIGNvbnRlbnRzIGlzIHVuZGVmaW5lZC4KLXZvaWQgc3RyaW5nOjpyZXNpemUgKHNpemVfdHlwZSBuKQotewotICAgIG1lbWJsb2NrOjpyZXNpemUgKG4pOwotICAgIGF0KG4pID0gY19UZXJtaW5hdG9yOwotfQotCi0vLy8gQXNzaWducyBpdHNlbGYgdGhlIHZhbHVlIG9mIHN0cmluZyBccCBzCi12b2lkIHN0cmluZzo6YXNzaWduIChjb25zdF9wb2ludGVyIHMpCi17Ci0gICAgaWYgKCFzKQotCXMgPSBlbXB0eV9zdHJpbmc7Ci0gICAgYXNzaWduIChzLCBzdHJsZW4gKHMpKTsKLX0KLQotLy8vIEFzc2lnbnMgaXRzZWxmIHRoZSB2YWx1ZSBvZiBzdHJpbmcgXHAgcyBvZiBsZW5ndGggXHAgbGVuLgotdm9pZCBzdHJpbmc6OmFzc2lnbiAoY29uc3RfcG9pbnRlciBzLCBzaXplX3R5cGUgbGVuKQotewotICAgIHdoaWxlIChsZW4gJiYgc1tsZW4gLSAxXSA9PSBjX1Rlcm1pbmF0b3IpCi0JLS0gbGVuOwotICAgIHJlc2l6ZSAobGVuKTsKLSAgICBjb3B5IChzLCBsZW4pOwotfQotCi0vLy8gQXBwZW5kcyB0byBpdHNlbGYgdGhlIHZhbHVlIG9mIHN0cmluZyBccCBzIG9mIGxlbmd0aCBccCBsZW4uCi12b2lkIHN0cmluZzo6YXBwZW5kIChjb25zdF9wb2ludGVyIHMpCi17Ci0gICAgaWYgKCFzKQotCXMgPSBlbXB0eV9zdHJpbmc7Ci0gICAgYXBwZW5kIChzLCBzdHJsZW4gKHMpKTsKLX0KLQotLy8vIEFwcGVuZHMgdG8gaXRzZWxmIHRoZSB2YWx1ZSBvZiBzdHJpbmcgXHAgcyBvZiBsZW5ndGggXHAgbGVuLgotdm9pZCBzdHJpbmc6OmFwcGVuZCAoY29uc3RfcG9pbnRlciBzLCBzaXplX3R5cGUgbGVuKQotewotICAgIHdoaWxlIChsZW4gJiYgc1tsZW4gLSAxXSA9PSBjX1Rlcm1pbmF0b3IpCi0JLS0gbGVuOwotICAgIHJlc2l6ZSAoc2l6ZSgpICsgbGVuKTsKLSAgICBjb3B5X24gKHMsIGxlbiwgZW5kKCkgLSBsZW4pOwotfQotCi0vLy8gQXBwZW5kcyB0byBpdHNlbGYgXHAgbiBjaGFyYWN0ZXJzIG9mIHZhbHVlIFxwIGMuCi12b2lkIHN0cmluZzo6YXBwZW5kIChzaXplX3R5cGUgbiwgdmFsdWVfdHlwZSBjKQotewotICAgIHJlc2l6ZSAoc2l6ZSgpICsgbik7Ci0gICAgZmlsbF9uIChlbmQoKSAtIG4sIG4sIGMpOwotfQotCi0vLy8gQ29waWVzIGludG8gaXRzZWxmIGF0IG9mZnNldCBccCBzdGFydCwgdGhlIHZhbHVlIG9mIHN0cmluZyBccCBwIG9mIGxlbmd0aCBccCBuLgotc3RyaW5nOjpzaXplX3R5cGUgc3RyaW5nOjpjb3B5dG8gKHBvaW50ZXIgcCwgc2l6ZV90eXBlIG4sIGNvbnN0X2l0ZXJhdG9yIHN0YXJ0KSBjb25zdAotewotICAgIGFzc2VydCAocCAmJiBuKTsKLSAgICBpZiAoIXN0YXJ0KQotCXN0YXJ0ID0gYmVnaW4oKTsKLSAgICBjb25zdCBzaXplX3R5cGUgYnRjID0gbWluKG4gLSBzaXplX1Rlcm1pbmF0b3IsIHNpemUoKSk7Ci0gICAgY29weV9uIChzdGFydCwgYnRjLCBwKTsKLSAgICBwW2J0Y10gPSBjX1Rlcm1pbmF0b3I7Ci0gICAgcmV0dXJuIChidGMgKyBzaXplX1Rlcm1pbmF0b3IpOwotfQotCi0vLy8gUmV0dXJucyBjb21wYXJpc29uIHZhbHVlIHJlZ2FyZGluZyBzdHJpbmcgXHAgcy4KLS8vLyBUaGUgcmV0dXJuIHZhbHVlIGlzOgotLy8vIFxsaSAxIGlmIHRoaXMgc3RyaW5nIGlzIGdyZWF0ZXIgKGJ5IHZhbHVlLCBub3QgbGVuZ3RoKSB0aGFuIHN0cmluZyBccCBzCi0vLy8gXGxpIDAgaWYgdGhpcyBzdHJpbmcgaXMgZXF1YWwgdG8gc3RyaW5nIFxwIHMKLS8vLyBcbGkgLTEgaWYgdGhpcyBzdHJpbmcgaXMgbGVzcyB0aGFuIHN0cmluZyBccCBzCi0vLy8KLS8qc3RhdGljKi8gaW50IHN0cmluZzo6Y29tcGFyZSAoY29uc3RfaXRlcmF0b3IgZmlyc3QxLCBjb25zdF9pdGVyYXRvciBsYXN0MSwgY29uc3RfaXRlcmF0b3IgZmlyc3QyLCBjb25zdF9pdGVyYXRvciBsYXN0MikKLXsKLSAgICBhc3NlcnQgKGZpcnN0MSA8PSBsYXN0MSAmJiAoZmlyc3QyIDw9IGxhc3QyIHx8ICFsYXN0MikgJiYgIk5lZ2F0aXZlIHJhbmdlcyByZXN1bHQgaW4gbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzLiIpOwotICAgIGNvbnN0IHNpemVfdHlwZSBsZW4xID0gZGlzdGFuY2UgKGZpcnN0MSwgbGFzdDEpLCBsZW4yID0gZGlzdGFuY2UgKGZpcnN0MiwgbGFzdDIpOwotICAgIGNvbnN0IGludCBydmJ5bGVuID0gc2lnbiAoaW50KGxlbjEgLSBsZW4yKSk7Ci0gICAgaW50IHJ2ID0gbWVtY21wIChmaXJzdDEsIGZpcnN0MiwgbWluIChsZW4xLCBsZW4yKSk7Ci0gICAgcmV0dXJuIChydiA/IHJ2IDogcnZieWxlbik7Ci19Ci0KLS8vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBzdHJpbmcgaXMgZXF1YWwgdG8gc3RyaW5nIFxwIHMuCi1ib29sIHN0cmluZzo6b3BlcmF0b3I9PSAoY29uc3RfcG9pbnRlciBzKSBjb25zdAotewotICAgIGlmICghcykKLQlzID0gZW1wdHlfc3RyaW5nOwotICAgIHJldHVybiAoc2l6ZSgpID09IHN0cmxlbihzKSAmJiAwID09IG1lbWNtcCAoY19zdHIoKSwgcywgc2l6ZSgpKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBiZWdpbm5pbmcgb2YgY2hhcmFjdGVyIFxwIGkuCi1zdHJpbmc6Oml0ZXJhdG9yIHN0cmluZzo6dXRmOF9pYXQgKHVvZmZfdCBpKQotewotICAgIHV0Zjhpc3RyaW5nX2l0ZXJhdG9yIGNmaW5kZXIgKGJlZ2luKCkpOwotICAgIGNmaW5kZXIgKz0gaTsKLSAgICByZXR1cm4gKGNmaW5kZXIuYmFzZSgpKTsKLX0KLQotLy8vIEluc2VydHMgd2lkZSBjaGFyYWN0ZXIgXHAgYyBhdCBccCBpcCBccCBuIHRpbWVzIGFzIGEgVVRGLTggc3RyaW5nLgotLy8vCi0vLy8gXHAgaXAgaXMgYSBjaGFyYWN0ZXIgcG9zaXRpb24sIG5vdCBhIGJ5dGUgcG9zaXRpb24sIGFuZCBtdXN0IGZhbGwgaW4KLS8vLyB0aGUgMCB0aHJvdWdoIGxlbmd0aCgpIHJhbmdlLgotLy8vIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBub3QgYW4gaXRlcmF0b3IgYmVjYXVzZSBpdCBpcyByYXRoZXIgZGlmZmljdWx0Ci0vLy8gdG8gZ2V0IG9uZS4gWW91J2QgaGF2ZSB0byB1c2UgKCh1dGY4YmVnaW4oKSArIG4pLmJhc2UoKSkgYXMgdGhlIGZpcnN0Ci0vLy8gYXJndW1lbnQsIHdoaWNoIGlzIHJhdGhlciB1Z2x5LiBCZXNpZGVzLCB0aGVuIHRoaXMgaW5zZXJ0IHdvdWxkIGJlCi0vLy8gYW1iaWd1b3VzIHdpdGggdGhlIHJlZ3VsYXIgY2hhcmFjdGVyIGluc2VydC4KLS8vLwotdm9pZCBzdHJpbmc6Omluc2VydCAoY29uc3QgdW9mZl90IGlwLCB3Y2hhcl90IGMsIHNpemVfdHlwZSBuKQotewotICAgIGl0ZXJhdG9yIGlwcCAodXRmOF9pYXQgKGlwKSk7Ci0gICAgaXBwID0gaXRlcmF0b3IgKG1lbWJsb2NrOjppbnNlcnQgKG1lbWJsb2NrOjppdGVyYXRvcihpcHApLCBuICogVXRmOEJ5dGVzKGMpKSk7Ci0gICAgZmlsbF9uICh1dGY4b3V0IChpcHApLCBuLCBjKTsKLSAgICAqZW5kKCkgPSBjX1Rlcm1pbmF0b3I7Ci19Ci0KLS8vLyBJbnNlcnRzIHNlcXVlbmNlIG9mIHdpZGUgY2hhcmFjdGVycyBhdCBccCBpcC4KLXZvaWQgc3RyaW5nOjppbnNlcnQgKGNvbnN0IHVvZmZfdCBpcCwgY29uc3Qgd2NoYXJfdCogZmlyc3QsIGNvbnN0IHdjaGFyX3QqIGxhc3QsIGNvbnN0IHNpemVfdHlwZSBuKQotewotICAgIGl0ZXJhdG9yIGlwcCAodXRmOF9pYXQgKGlwKSk7Ci0gICAgc2l6ZV90eXBlIG50aSA9IGRpc3RhbmNlIChmaXJzdCwgbGFzdCksIGJ0aSA9IDA7Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBudGk7ICsrIGkpCi0JYnRpICs9IFV0ZjhCeXRlcyhmaXJzdFtpXSk7Ci0gICAgaXBwID0gaXRlcmF0b3IgKG1lbWJsb2NrOjppbnNlcnQgKG1lbWJsb2NrOjppdGVyYXRvcihpcHApLCBuICogYnRpKSk7Ci0gICAgdXRmOG9zdHJpbmdfaXRlcmF0b3IgdW91dCAodXRmOG91dCAoaXBwKSk7Ci0gICAgZm9yICh1b2ZmX3QgaiA9IDA7IGogPCBuOyArKyBqKQotCWZvciAodW9mZl90IGsgPSAwOyBrIDwgbnRpOyArKyBrLCArKyB1b3V0KQotCSAgICAqdW91dCA9IGZpcnN0W2tdOwotICAgICplbmQoKSA9IGNfVGVybWluYXRvcjsKLX0KLQotLy8vIEluc2VydHMgY2hhcmFjdGVyIFxwIGMgaW50byB0aGlzIHN0cmluZyBhdCBccCBzdGFydC4KLXN0cmluZzo6aXRlcmF0b3Igc3RyaW5nOjppbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBjb25zdF9yZWZlcmVuY2UgYywgc2l6ZV90eXBlIG4pCi17Ci0gICAgc3RhcnQgPSBpdGVyYXRvciAobWVtYmxvY2s6Omluc2VydCAobWVtYmxvY2s6Oml0ZXJhdG9yKHN0YXJ0KSwgbikpOwotICAgIGZpbGxfbiAoc3RhcnQsIG4sIGMpOwotICAgICplbmQoKSA9IGNfVGVybWluYXRvcjsKLSAgICByZXR1cm4gKHN0YXJ0KTsKLX0KLQotLy8vIEluc2VydHMgXHAgY291bnQgaW5zdGFuY2VzIG9mIHN0cmluZyBccCBzIGF0IG9mZnNldCBccCBzdGFydC4KLXN0cmluZzo6aXRlcmF0b3Igc3RyaW5nOjppbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBjb25zdF9wb2ludGVyIHMsIHNpemVfdHlwZSBuKQotewotICAgIGlmICghcykKLQlzID0gZW1wdHlfc3RyaW5nOwotICAgIHJldHVybiAoaW5zZXJ0IChzdGFydCwgcywgcyArIHN0cmxlbihzKSwgbikpOwotfQotCi0vLy8gSW5zZXJ0cyBbZmlyc3QsbGFzdF0gXHAgbiB0aW1lcy4KLXN0cmluZzo6aXRlcmF0b3Igc3RyaW5nOjppbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBjb25zdF9wb2ludGVyIGZpcnN0LCBjb25zdF9wb2ludGVyIGxhc3QsIHNpemVfdHlwZSBuKQotewotICAgIGFzc2VydCAoZmlyc3QgPD0gbGFzdCk7Ci0gICAgYXNzZXJ0IChiZWdpbigpIDw9IHN0YXJ0ICYmIGVuZCgpID49IHN0YXJ0KTsKLSAgICBhc3NlcnQgKChmaXJzdCA8IGJlZ2luKCkgfHwgZmlyc3QgPj0gZW5kKCkgfHwgc2l6ZSgpICsgYWJzX2Rpc3RhbmNlKGZpcnN0LGxhc3QpIDwgY2FwYWNpdHkoKSkgJiYgIkluc2VydGlvbiBvZiBzZWxmIHdpdGggYXV0b3Jlc2l6ZSBpcyBub3Qgc3VwcG9ydGVkIik7Ci0gICAgc3RhcnQgPSBpdGVyYXRvciAobWVtYmxvY2s6Omluc2VydCAobWVtYmxvY2s6Oml0ZXJhdG9yKHN0YXJ0KSwgZGlzdGFuY2UoZmlyc3QsIGxhc3QpICogbikpOwotICAgIGZpbGwgKG1lbWJsb2NrOjppdGVyYXRvcihzdGFydCksIGZpcnN0LCBkaXN0YW5jZShmaXJzdCwgbGFzdCksIG4pOwotICAgICplbmQoKSA9IGNfVGVybWluYXRvcjsKLSAgICByZXR1cm4gKHN0YXJ0KTsKLX0KLQotLy8vIEVyYXNlcyBccCBzaXplIGJ5dGVzIGF0IFxwIHN0YXJ0Lgotc3RyaW5nOjppdGVyYXRvciBzdHJpbmc6OmVyYXNlIChpdGVyYXRvciBlcCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgc3RyaW5nOjppdGVyYXRvciBydiA9IG1lbWJsb2NrOjplcmFzZSAobWVtYmxvY2s6Oml0ZXJhdG9yKGVwKSwgbik7Ci0gICAgKmVuZCgpID0gY19UZXJtaW5hdG9yOwotICAgIHJldHVybiAocnYpOwotfQotCi0vLy8gRXJhc2VzIFxwIHNpemUgY2hhcmFjdGVycyBhdCBccCBzdGFydC4KLS8vLyBccCBzdGFydCBpcyBhIGNoYXJhY3RlciBwb3NpdGlvbiwgbm90IGEgYnl0ZSBwb3NpdGlvbiwgYW5kIG11c3QgYmUKLS8vLyBpbiB0aGUgMC4ubGVuZ3RoKCkgcmFuZ2UuCi0vLy8KLXZvaWQgc3RyaW5nOjplcmFzZSAodW9mZl90IGVwLCBzaXplX3R5cGUgbikKLXsKLSAgICBpdGVyYXRvciBmaXJzdCAodXRmOF9pYXQoZXApKTsKLSAgICBzaXplX3QgbmJ5dGVzICh1dGY4X2lhdChlcCArIG4pIC0gZmlyc3QpOwotICAgIG1lbWJsb2NrOjplcmFzZSAoZmlyc3QsIG5ieXRlcyk7Ci0gICAgKmVuZCgpID0gY19UZXJtaW5hdG9yOwotfQotCi0vLy8gUmVwbGFjZXMgcmFuZ2UgW1xwIHN0YXJ0LCBccCBzdGFydCArIFxwIGxlbl0gd2l0aCBzdHJpbmcgXHAgcy4KLXZvaWQgc3RyaW5nOjpyZXBsYWNlIChpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCwgY29uc3RfcG9pbnRlciBzKQotewotICAgIGlmICghcykKLQlzID0gZW1wdHlfc3RyaW5nOwotICAgIHJlcGxhY2UgKGZpcnN0LCBsYXN0LCBzLCBzICsgc3RybGVuKHMpKTsKLX0KLQotLy8vIFJlcGxhY2VzIHJhbmdlIFtccCBzdGFydCwgXHAgc3RhcnQgKyBccCBsZW5dIHdpdGggXHAgY291bnQgaW5zdGFuY2VzIG9mIHN0cmluZyBccCBzLgotdm9pZCBzdHJpbmc6OnJlcGxhY2UgKGl0ZXJhdG9yIGZpcnN0LCBpdGVyYXRvciBsYXN0LCBjb25zdF9wb2ludGVyIGkxLCBjb25zdF9wb2ludGVyIGkyLCBzaXplX3R5cGUgbikKLXsKLSAgICBhc3NlcnQgKGZpcnN0IDw9IGxhc3QpOwotICAgIGFzc2VydCAobiB8fCBkaXN0YW5jZShmaXJzdCwgbGFzdCkpOwotICAgIGFzc2VydCAoZmlyc3QgPj0gYmVnaW4oKSAmJiBmaXJzdCA8PSBlbmQoKSAmJiBsYXN0ID49IGZpcnN0ICYmIGxhc3QgPD0gZW5kKCkpOwotICAgIGFzc2VydCAoKGkxIDwgYmVnaW4oKSB8fCBpMSA+PSBlbmQoKSB8fCBhYnNfZGlzdGFuY2UoaTEsaTIpICogbiArIHNpemUoKSA8IGNhcGFjaXR5KCkpICYmICJSZXBsYWNlbWVudCBieSBzZWxmIGNhbiBub3QgYXV0b3Jlc2l6ZSIpOwotICAgIGNvbnN0IHNpemVfdHlwZSBidGUgPSBkaXN0YW5jZShmaXJzdCwgbGFzdCksIGJ0aSA9IGRpc3RhbmNlKGkxLCBpMikgKiBuOwotICAgIGlmIChidGkgPCBidGUpCi0JZmlyc3QgPSBpdGVyYXRvciAobWVtYmxvY2s6OmVyYXNlIChtZW1ibG9jazo6aXRlcmF0b3IoZmlyc3QpLCBidGUgLSBidGkpKTsKLSAgICBlbHNlIGlmIChidGUgPCBidGkpCi0JZmlyc3QgPSBpdGVyYXRvciAobWVtYmxvY2s6Omluc2VydCAobWVtYmxvY2s6Oml0ZXJhdG9yKGZpcnN0KSwgYnRpIC0gYnRlKSk7Ci0gICAgZmlsbCAobWVtYmxvY2s6Oml0ZXJhdG9yKGZpcnN0KSwgaTEsIGRpc3RhbmNlKGkxLCBpMiksIG4pOwotICAgICplbmQoKSA9IGNfVGVybWluYXRvcjsKLX0KLQotLy8vIFJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIFxwIGMgYWZ0ZXIgXHAgcG9zLgotdW9mZl90IHN0cmluZzo6ZmluZCAoY29uc3RfcmVmZXJlbmNlIGMsIHVvZmZfdCBwb3MpIGNvbnN0Ci17Ci0gICAgY29uc3RfaXRlcmF0b3IgZm91bmQgPSA6OnVzdGw6OmZpbmQgKGlhdChwb3MpLCBlbmQoKSwgYyk7Ci0gICAgcmV0dXJuIChmb3VuZCA8IGVuZCgpID8gZGlzdGFuY2UoYmVnaW4oKSxmb3VuZCkgOiBucG9zKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHN1YnN0cmluZyBccCBzIG9mIGxlbmd0aCBccCBuIGFmdGVyIFxwIHBvcy4KLXVvZmZfdCBzdHJpbmc6OmZpbmQgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IHBvcykgY29uc3QKLXsKLSAgICBpZiAocy5lbXB0eSgpIHx8IHMuc2l6ZSgpID4gc2l6ZSgpIC0gcG9zKQotCXJldHVybiAobnBvcyk7Ci0gICAgY29uc3QgdW9mZl90IGVuZGkgPSBzLnNpemUoKSAtIDE7Ci0gICAgY29uc3RfcmVmZXJlbmNlIGVuZGNoYXIgPSBzW2VuZGldOwotICAgIHVvZmZfdCBsYXN0UG9zID0gZW5kaTsKLSAgICB3aGlsZSAobGFzdFBvcy0tICYmIHNbbGFzdFBvc10gIT0gZW5kY2hhcik7Ci0gICAgY29uc3Qgc2l6ZV90eXBlIHNraXAgPSBlbmRpIC0gbGFzdFBvczsKLSAgICBjb25zdF9pdGVyYXRvciBpID0gaWF0KHBvcykgKyBlbmRpOwotICAgIGZvciAoOyBpIDwgZW5kKCkgJiYgKGkgPSA6OnVzdGw6OmZpbmQgKGksIGVuZCgpLCBlbmRjaGFyKSkgPCBlbmQoKTsgaSArPSBza2lwKQotCWlmIChtZW1jbXAgKGkgLSBlbmRpLCBzLmNfc3RyKCksIHMuc2l6ZSgpKSA9PSAwKQotCSAgICByZXR1cm4gKGRpc3RhbmNlIChiZWdpbigpLCBpKSAtIGVuZGkpOwotICAgIHJldHVybiAobnBvcyk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGxhc3Qgb2NjdXJlbmNlIG9mIGNoYXJhY3RlciBccCBjIGJlZm9yZSBccCBwb3MuCi11b2ZmX3Qgc3RyaW5nOjpyZmluZCAoY29uc3RfcmVmZXJlbmNlIGMsIHVvZmZfdCBwb3MpIGNvbnN0Ci17Ci0gICAgZm9yIChpbnQgaSA9IG1pbihwb3Msc2l6ZSgpLTEpOyBpID49IDA7IC0taSkKLQlpZiAoYXQoaSkgPT0gYykKLQkgICAgcmV0dXJuIChpKTsKLSAgICByZXR1cm4gKG5wb3MpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBzdWJzdHJpbmcgXHAgcyBvZiBzaXplIFxwIG4gYmVmb3JlIFxwIHBvcy4KLXVvZmZfdCBzdHJpbmc6OnJmaW5kIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBwb3MpIGNvbnN0Ci17Ci0gICAgY29uc3RfaXRlcmF0b3IgZCA9IGlhdChwb3MpIC0gMTsKLSAgICBjb25zdF9pdGVyYXRvciBzcCA9IGJlZ2luKCkgKyBzLnNpemUoKSAtIDE7Ci0gICAgY29uc3RfaXRlcmF0b3IgbSA9IHMuZW5kKCkgLSAxOwotICAgIGZvciAodW9mZl90IGkgPSAwOyBkID4gc3AgJiYgaSA8IHMuc2l6ZSgpOyAtLSBkKQotCWZvciAoaSA9IDA7IGkgPCBzLnNpemUoKTsgKysgaSkKLQkgICAgaWYgKG1bLWldICE9IGRbLWldKQotCQlicmVhazsKLSAgICByZXR1cm4gKGQgPiBzcCA/IGRpc3RhbmNlIChiZWdpbigpLCBkICsgMiAtIHMuc2l6ZSgpKSA6IG5wb3MpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2Ygb25lIG9mIGNoYXJhY3RlcnMgaW4gXHAgcyBvZiBzaXplIFxwIG4gYWZ0ZXIgXHAgcG9zLgotdW9mZl90IHN0cmluZzo6ZmluZF9maXJzdF9vZiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zKSBjb25zdAotewotICAgIGZvciAodW9mZl90IGkgPSBtaW4ocG9zLHNpemUoKSk7IGkgPCBzaXplKCk7ICsrIGkpCi0JaWYgKHMuZmluZCAoYXQoaSkpICE9IG5wb3MpCi0JICAgIHJldHVybiAoaSk7Ci0gICAgcmV0dXJuIChucG9zKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIG9uZSBvZiBjaGFyYWN0ZXJzIG5vdCBpbiBccCBzIG9mIHNpemUgXHAgbiBhZnRlciBccCBwb3MuCi11b2ZmX3Qgc3RyaW5nOjpmaW5kX2ZpcnN0X25vdF9vZiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zKSBjb25zdAotewotICAgIGZvciAodW9mZl90IGkgPSBtaW4ocG9zLHNpemUoKSk7IGkgPCBzaXplKCk7ICsrIGkpCi0JaWYgKHMuZmluZCAoYXQoaSkpID09IG5wb3MpCi0JICAgIHJldHVybiAoaSk7Ci0gICAgcmV0dXJuIChucG9zKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgbGFzdCBvY2N1cmVuY2Ugb2Ygb25lIG9mIGNoYXJhY3RlcnMgaW4gXHAgcyBvZiBzaXplIFxwIG4gYmVmb3JlIFxwIHBvcy4KLXVvZmZfdCBzdHJpbmc6OmZpbmRfbGFzdF9vZiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zKSBjb25zdAotewotICAgIGZvciAoaW50IGkgPSBtaW4ocG9zLHNpemUoKS0xKTsgaSA+PSAwOyAtLSBpKQotCWlmIChzLmZpbmQgKGF0KGkpKSAhPSBucG9zKQotCSAgICByZXR1cm4gKGkpOwotICAgIHJldHVybiAobnBvcyk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGxhc3Qgb2NjdXJlbmNlIG9mIG9uZSBvZiBjaGFyYWN0ZXJzIG5vdCBpbiBccCBzIG9mIHNpemUgXHAgbiBiZWZvcmUgXHAgcG9zLgotdW9mZl90IHN0cmluZzo6ZmluZF9sYXN0X25vdF9vZiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zKSBjb25zdAotewotICAgIGZvciAoaW50IGkgPSBtaW4ocG9zLHNpemUoKS0xKTsgaSA+PSAwOyAtLSBpKQotCWlmIChzLmZpbmQgKGF0KGkpKSA9PSBucG9zKQotCSAgICByZXR1cm4gKGkpOwotICAgIHJldHVybiAobnBvcyk7Ci19Ci0KLS8vLyBFcXVpdmFsZW50IHRvIGEgdnNwcmludGYgb24gdGhlIHN0cmluZy4KLWludCBzdHJpbmc6OnZmb3JtYXQgKGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcmdzKQotewotI2lmIEhBVkVfVkFfQ09QWQotICAgIHZhX2xpc3QgYXJnczI7Ci0jZWxzZQotICAgICNkZWZpbmUgYXJnczIgYXJncwotICAgICN1bmRlZiBfX3ZhX2NvcHkKLSAgICAjZGVmaW5lIF9fdmFfY29weSh4LHkpCi0jZW5kaWYKLSAgICBzaXplX3QgcnYgPSBzaXplKCk7Ci0gICAgZG8gewotCXJlc2VydmUgKHJ2KTsKLQlfX3ZhX2NvcHkgKGFyZ3MyLCBhcmdzKTsKLQlydiA9IHZzbnByaW50ZiAoZGF0YSgpLCBtZW1ibG9jazo6Y2FwYWNpdHkoKSwgZm10LCBhcmdzMik7Ci0JcnYgPSBtaW4gKHJ2LCBtZW1ibG9jazo6Y2FwYWNpdHkoKSk7Ci0gICAgfSB3aGlsZSAocnYgPiBjYXBhY2l0eSgpKTsKLSAgICByZXNpemUgKG1pbiAocnYsIGNhcGFjaXR5KCkpKTsKLSAgICByZXR1cm4gKHJ2KTsKLX0KLQotLy8vIEVxdWl2YWxlbnQgdG8gYSBzcHJpbnRmIG9uIHRoZSBzdHJpbmcuCi1pbnQgc3RyaW5nOjpmb3JtYXQgKGNvbnN0IGNoYXIqIGZtdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSAgICBjb25zdCBpbnQgcnYgPSB2Zm9ybWF0IChmbXQsIGFyZ3MpOwotICAgIHZhX2VuZCAoYXJncyk7Ci0gICAgcmV0dXJuIChydik7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gd3JpdGUgdGhpcyBvYmplY3QgdG8gYSBzdHJlYW0uCi1zaXplX3Qgc3RyaW5nOjpzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gKFV0ZjhCeXRlcyhzaXplKCkpICsgc2l6ZSgpKTsKLX0KLQotLy8vIFJlYWRzIHRoZSBvYmplY3QgZnJvbSBzdHJlYW0gXHAgb3MKLXZvaWQgc3RyaW5nOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICBjaGFyIHN6YnVmIFs4XTsKLSAgICBpcyA+PiBzemJ1ZlswXTsKLSAgICBzaXplX3Qgc3pzeiAoVXRmOFNlcXVlbmNlQnl0ZXMgKHN6YnVmWzBdKSAtIDEpLCBuID0gMDsKLSAgICBpcy52ZXJpZnlfcmVtYWluaW5nICgicmVhZCIsICJ1c3RsOjpzdHJpbmciLCBzenN6KTsKLSAgICBpcy5yZWFkIChzemJ1ZiArIDEsIHN6c3opOwotICAgIG4gPSAqdXRmOGluKHN6YnVmKTsKLSAgICBpcy52ZXJpZnlfcmVtYWluaW5nICgicmVhZCIsICJ1c3RsOjpzdHJpbmciLCBuKTsKLSAgICByZXNpemUgKG4pOwotICAgIGlzLnJlYWQgKGRhdGEoKSwgc2l6ZSgpKTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgb2JqZWN0IHRvIHN0cmVhbSBccCBvcwotdm9pZCBzdHJpbmc6OndyaXRlIChvc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICBjb25zdCB3cml0dGVuX3NpemVfdHlwZSBzeiAoc2l6ZSgpKTsKLSAgICBhc3NlcnQgKHN6ID09IHNpemUoKSAmJiAiTm8gc3VwcG9ydCBmb3Igd3JpdGluZyBzdHJpbmdzIGxhcmdlciB0aGFuIDRHIik7Ci0KLSAgICBjaGFyIHN6YnVmIFs4XTsKLSAgICB1dGY4b3V0X2l0ZXJhdG9yPGNoYXIqPiBzem91dCAoc3pidWYpOwotICAgICpzem91dCA9IHN6OwotICAgIHNpemVfdCBzenN6ID0gZGlzdGFuY2UgKHN6YnVmLCBzem91dC5iYXNlKCkpOwotCi0gICAgb3MudmVyaWZ5X3JlbWFpbmluZyAoIndyaXRlIiwgInVzdGw6OnN0cmluZyIsIHN6c3ogKyBzeik7Ci0gICAgb3Mud3JpdGUgKHN6YnVmLCBzenN6KTsKLSAgICBvcy53cml0ZSAoY2RhdGEoKSwgc3opOwotfQotCi0vLy8gUmV0dXJucyBhIGhhc2ggdmFsdWUgZm9yIFtmaXJzdCwgbGFzdCkKLS8qc3RhdGljKi8gaGFzaHZhbHVlX3Qgc3RyaW5nOjpoYXNoIChjb25zdCBjaGFyKiBmaXJzdCwgY29uc3QgY2hhciogbGFzdCkKLXsKLSAgICBoYXNodmFsdWVfdCBoID0gMDsKLSAgICAvLyBUaGlzIGhhcyB0aGUgYml0cyBmbG93aW5nIGludG8gZWFjaCBvdGhlciBmcm9tIGJvdGggc2lkZXMgb2YgdGhlIG51bWJlcgotICAgIGZvciAoOyBmaXJzdCA8IGxhc3Q7ICsrIGZpcnN0KQotCWggPSAqZmlyc3QgKyAoKGggPDwgNykgfCAoaCA+PiBCaXRzSW5UeXBlKGhhc2h2YWx1ZV90KSAtIDcpKTsKLSAgICByZXR1cm4gKGgpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdHJpbmcuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdHJpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVjZjZlNy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RyaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVzdHJpbmcuaAotLy8KLQotI2lmbmRlZiBVU1RSSU5HX0hfMTI0OUNCN0EwOThBOTAxMDc2M0FBQzZEMzdCMTMzQ0YKLSNkZWZpbmUgVVNUUklOR19IXzEyNDlDQjdBMDk4QTkwMTA3NjNBQUM2RDM3QjEzM0NGCi0KLSNpbmNsdWRlICJtZW1ibG9jay5oIgotI2luY2x1ZGUgInV0ZjguaCIKLSNpbmNsdWRlIDxzdGRhcmcuaD4JLy8gZm9yIHZhX2xpc3QsIHZhX3N0YXJ0LCBhbmQgdmFfZW5kIChpbiBzdHJpbmc6OmZvcm1hdCkKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIHN0cmluZyB1c3RyaW5nLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgU2VxdWVuY2VzCi0vLy8KLS8vLyBcYnJpZWYgU1RMIGJhc2ljX3N0cmluZyZsdDtjaGFyJmd0OyBlcXVpdmFsZW50LgotLy8vCi0vLy8gQW4gU1RMIGNvbnRhaW5lciBmb3IgdGV4dCBzdHJpbmcgbWFuaXB1bGF0aW9uLgotLy8vIERpZmZlcmVuY2VzIGZyb20gQysrIHN0YW5kYXJkOgotLy8vCS0gc3RyaW5nIGlzIGEgY2xhc3MsIG5vdCBhIHRlbXBsYXRlLiBXaWRlIGNoYXJhY3RlcnMgYXJlIGFzc3VtZWQgdG8gYmUKLS8vLwkJZW5jb2RlZCB3aXRoIHV0ZjggYXQgYWxsIHRpbWVzIGV4Y2VwdCB3aGVuIHJlbmRlcmluZyBvciBlZGl0aW5nLAotLy8vCQl3aGVyZSB5b3Ugd291bGQgdXNlIGEgdXRmOCBpdGVyYXRvci4KLS8vLyAJLSBmb3JtYXQgbWVtYmVyIGZ1bmN0aW9uIC0geW91IGNhbiwgb2YgY291cnNlIHVzZSBhbiBccmVmIG9zdHJpbmdzdHJlYW0sCi0vLy8JCXdoaWNoIGFsc28gaGF2ZSBmb3JtYXQgZnVuY3Rpb25zLCBidXQgbW9zdCBvZiB0aGUgdGltZSB0aGlzIHdheQotLy8vCQlpcyBtb3JlIGNvbnZlbmllbnQuIEJlY2F1c2UgdVNUTCBkb2VzIG5vdCBpbXBsZW1lbnQgbG9jYWxlcywKLS8vLwkJZm9ybWF0IGlzIHRoZSBvbmx5IHdheSB0byBjcmVhdGUgbG9jYWxpemVkIHN0cmluZ3MuCi0vLy8gCS0gY29uc3QgY2hhciogY2FzdCBvcGVyYXRvci4gSXQgaXMgbXVjaCBjbGVhcmVyIHRvIHVzZSB0aGlzIHRoYW4gaGF2aW5nCi0vLy8gCQl0byB0eXBlIC5jX3N0cigpIGV2ZXJ5IHRpbWUuCi0vLy8gCS0gbGVuZ3RoIHJldHVybnMgdGhlIG51bWJlciBvZiBfY2hhcmFjdGVyc18sIG5vdCBieXRlcy4KLS8vLwkJVGhpcyBmdW5jdGlvbiBpcyBPKE4pLCBzbyB1c2Ugd2lzZWx5LgotLy8vCi1jbGFzcyBzdHJpbmcgOiBwdWJsaWMgbWVtYmxvY2sgewotcHVibGljOgotICAgIHR5cGVkZWYgY2hhcgkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqCQlwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSoJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHdjaGFyX3QJCXd2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgd3ZhbHVlX3R5cGUqCXdwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3Qgd3ZhbHVlX3R5cGUqCWNvbnN0X3dwb2ludGVyOwotICAgIHR5cGVkZWYgcG9pbnRlcgkJaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBjb25zdF9wb2ludGVyCWNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYJCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUJCWNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIDo6dXN0bDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4JCXJldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiA6OnVzdGw6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+CWNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB1dGY4aW5faXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+CQl1dGY4X2l0ZXJhdG9yOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCB1b2ZmX3QgbnBvcyA9IHN0YXRpY19jYXN0PHVvZmZfdD4oLTEpOwkJCS8vLzwgVmFsdWUgdGhhdCBtZWFucyB0aGUgZW5kIG9mIHN0cmluZy4KLSAgICBzdGF0aWMgY29uc3QgdmFsdWVfdHlwZSBjX1Rlcm1pbmF0b3IgPSAwOwkJCQkvLy88IFN0cmluZyB0ZXJtaW5hdG9yCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSBzaXplX1Rlcm1pbmF0b3IgPSBzaXplb2YoY19UZXJtaW5hdG9yKTsJLy8vPCBNb3N0IHN5c3RlbXMgdGVybWluYXRlIHN0cmluZ3Mgd2l0aCAnXFwwJwotICAgIHN0YXRpYyBjb25zdCBjaGFyIGVtcHR5X3N0cmluZyBbc2l6ZV9UZXJtaW5hdG9yXTsJCQkvLy88IEFuIGVtcHR5IHN0cmluZy4KLXB1YmxpYzoKLQkJCQlzdHJpbmcgKHZvaWQpOwotCQkJCXN0cmluZyAoY29uc3Qgc3RyaW5nJiBzKTsKLSAgICBpbmxpbmUJCQlzdHJpbmcgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IG8sIHNpemVfdHlwZSBuKTsKLSAgICBpbmxpbmUgZXhwbGljaXQJCXN0cmluZyAoY29uc3QgY21lbWxpbmsmIGwpOwotCQkJCXN0cmluZyAoY29uc3RfcG9pbnRlciBzKTsKLSAgICBpbmxpbmUJCQlzdHJpbmcgKGNvbnN0X3BvaW50ZXIgcywgc2l6ZV90eXBlIGxlbik7Ci0gICAgaW5saW5lCQkJc3RyaW5nIChjb25zdF9wb2ludGVyIHMxLCBjb25zdF9wb2ludGVyIHMyKTsKLSAgICBleHBsaWNpdAkJCXN0cmluZyAoc2l6ZV90eXBlIG4sIHZhbHVlX3R5cGUgYyA9IGNfVGVybWluYXRvcik7Ci0gICAgaW5saW5lIHBvaW50ZXIJCWRhdGEgKHZvaWQpCQl7IHJldHVybiAoc3RyaW5nOjpwb2ludGVyIChtZW1ibG9jazo6ZGF0YSgpKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcG9pbnRlcgljX3N0ciAodm9pZCkgY29uc3QJeyByZXR1cm4gKHN0cmluZzo6Y29uc3RfcG9pbnRlciAobWVtYmxvY2s6OmNkYXRhKCkpKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJCW1heF9zaXplICh2b2lkKSBjb25zdAl7IHNpemVfdHlwZSBzIChtZW1ibG9jazo6bWF4X3NpemUoKSk7IHJldHVybiAocyAtICEhcyk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQljYXBhY2l0eSAodm9pZCkgY29uc3QJeyBzaXplX3R5cGUgYyAobWVtYmxvY2s6OmNhcGFjaXR5KCkpOyByZXR1cm4gKGMgLSAhIWMpOyB9Ci0gICAgdm9pZAkJCXJlc2l6ZSAoc2l6ZV90eXBlIG4pOwotICAgIGlubGluZSB2b2lkCQkJY2xlYXIgKHZvaWQpCQl7IHJlc2l6ZSAoMCk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJYmVnaW4gKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChjb25zdF9pdGVyYXRvciAobWVtYmxvY2s6OmJlZ2luKCkpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJYmVnaW4gKHZvaWQpCQl7IHJldHVybiAoaXRlcmF0b3IgKG1lbWJsb2NrOjpiZWdpbigpKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAl7IHJldHVybiAoY29uc3RfaXRlcmF0b3IgKG1lbWJsb2NrOjplbmQoKSkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllbmQgKHZvaWQpCQl7IHJldHVybiAoaXRlcmF0b3IgKG1lbWJsb2NrOjplbmQoKSkpOyB9Ci0gIGlubGluZSBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCXJiZWdpbiAodm9pZCkgY29uc3QJeyByZXR1cm4gKGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgKGVuZCgpKSk7IH0KLSAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvcglyYmVnaW4gKHZvaWQpCQl7IHJldHVybiAocmV2ZXJzZV9pdGVyYXRvciAoZW5kKCkpKTsgfQotICBpbmxpbmUgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcglyZW5kICh2b2lkKSBjb25zdAl7IHJldHVybiAoY29uc3RfcmV2ZXJzZV9pdGVyYXRvciAoYmVnaW4oKSkpOyB9Ci0gICAgaW5saW5lIHJldmVyc2VfaXRlcmF0b3IJcmVuZCAodm9pZCkJCXsgcmV0dXJuIChyZXZlcnNlX2l0ZXJhdG9yIChiZWdpbigpKSk7IH0KLSAgICBpbmxpbmUgdXRmOF9pdGVyYXRvcgl1dGY4X2JlZ2luICh2b2lkKSBjb25zdAl7IHJldHVybiAodXRmOF9pdGVyYXRvciAoYmVnaW4oKSkpOyB9Ci0gICAgaW5saW5lIHV0ZjhfaXRlcmF0b3IJdXRmOF9lbmQgKHZvaWQpIGNvbnN0CXsgcmV0dXJuICh1dGY4X2l0ZXJhdG9yIChlbmQoKSkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JlZmVyZW5jZQlhdCAodW9mZl90IHBvcykgY29uc3QJeyBhc3NlcnQgKHBvcyA8PSBzaXplKCkgJiYgYmVnaW4oKSk7IHJldHVybiAoYmVnaW4oKVtwb3NdKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCWF0ICh1b2ZmX3QgcG9zKQkJeyBhc3NlcnQgKHBvcyA8PSBzaXplKCkgJiYgYmVnaW4oKSk7IHJldHVybiAoYmVnaW4oKVtwb3NdKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcglpYXQgKHVvZmZfdCBwb3MpIGNvbnN0CXsgcmV0dXJuIChiZWdpbigpICsgbWluIChwb3MsIHNpemUoKSkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQlpYXQgKHVvZmZfdCBwb3MpCXsgcmV0dXJuIChiZWdpbigpICsgbWluIChwb3MsIHNpemUoKSkpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJbGVuZ3RoICh2b2lkKSBjb25zdAl7IHJldHVybiAoZGlzdGFuY2UgKHV0ZjhfYmVnaW4oKSwgdXRmOF9lbmQoKSkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhcHBlbmQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikJeyBhcHBlbmQgKGkxLCBkaXN0YW5jZSAoaTEsIGkyKSk7IH0KLSAgICB2b2lkCSAgIAkJYXBwZW5kIChjb25zdF9wb2ludGVyIHMsIHNpemVfdHlwZSBsZW4pOwotICAgIHZvaWQJICAgCQlhcHBlbmQgKGNvbnN0X3BvaW50ZXIgcyk7Ci0gICAgdm9pZAkJCWFwcGVuZCAoc2l6ZV90eXBlIG4sIGNvbnN0X3JlZmVyZW5jZSBjKTsKLSAgICBpbmxpbmUgdm9pZAkJCWFwcGVuZCAoc2l6ZV90eXBlIG4sIHd2YWx1ZV90eXBlIGMpCQl7IGluc2VydCAoc2l6ZSgpLCBjLCBuKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXBwZW5kIChjb25zdF93cG9pbnRlciBzMSwgY29uc3Rfd3BvaW50ZXIgczIpCXsgaW5zZXJ0IChzaXplKCksIHMxLCBzMik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWFwcGVuZCAoY29uc3Rfd3BvaW50ZXIgcykJCQl7IGNvbnN0X3dwb2ludGVyIHNlIChzKTsgZm9yICg7c2UmJipzZTsrK3NlKTsgYXBwZW5kIChzLCBzZSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWFwcGVuZCAoY29uc3Qgc3RyaW5nJiBzKQkJCXsgYXBwZW5kIChzLmJlZ2luKCksIHMuZW5kKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhcHBlbmQgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IG8sIHNpemVfdHlwZSBuKQl7IGFwcGVuZCAocy5pYXQobyksIHMuaWF0KG8rbikpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikJeyBhc3NpZ24gKGkxLCBkaXN0YW5jZSAoaTEsIGkyKSk7IH0KLSAgICB2b2lkCSAgICAJCWFzc2lnbiAoY29uc3RfcG9pbnRlciBzLCBzaXplX3R5cGUgbGVuKTsKLSAgICB2b2lkCSAgICAJCWFzc2lnbiAoY29uc3RfcG9pbnRlciBzKTsKLSAgICBpbmxpbmUgdm9pZAkJCWFzc2lnbiAoY29uc3Rfd3BvaW50ZXIgczEsIGNvbnN0X3dwb2ludGVyIHMyKQl7IGNsZWFyKCk7IGFwcGVuZCAoczEsIHMyKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdF93cG9pbnRlciBzMSkJCQl7IGNsZWFyKCk7IGFwcGVuZCAoczEpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKGNvbnN0IHN0cmluZyYgcykJCQl7IGFzc2lnbiAocy5iZWdpbigpLCBzLmVuZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBvLCBzaXplX3R5cGUgbikJeyBhc3NpZ24gKHMuaWF0KG8pLCBzLmlhdChvK24pKTsgfQotICAgIHNpemVfdHlwZQkJCWNvcHl0byAocG9pbnRlciBwLCBzaXplX3R5cGUgbiwgY29uc3RfaXRlcmF0b3Igc3RhcnQgPSBOVUxMKSBjb25zdDsKLSAgICBpbmxpbmUgaW50CQkJY29tcGFyZSAoY29uc3Qgc3RyaW5nJiBzKSBjb25zdAl7IHJldHVybiAoY29tcGFyZSAoYmVnaW4oKSwgZW5kKCksIHMuYmVnaW4oKSwgcy5lbmQoKSkpOyB9Ci0gICAgaW5saW5lIGludAkJCWNvbXBhcmUgKGNvbnN0X3BvaW50ZXIgcykgY29uc3QJeyByZXR1cm4gKGNvbXBhcmUgKGJlZ2luKCksIGVuZCgpLCBzLCBzICsgc3RybGVuKHMpKSk7IH0KLSAgICBzdGF0aWMgaW50CQkJY29tcGFyZSAoY29uc3RfaXRlcmF0b3IgZmlyc3QxLCBjb25zdF9pdGVyYXRvciBsYXN0MSwgY29uc3RfaXRlcmF0b3IgZmlyc3QyLCBjb25zdF9pdGVyYXRvciBsYXN0Mik7Ci0gICAgaW5saW5lCQkJb3BlcmF0b3IgY29uc3QgdmFsdWVfdHlwZSogKHZvaWQpIGNvbnN0OwotICAgIGlubGluZQkJCW9wZXJhdG9yIHZhbHVlX3R5cGUqICh2b2lkKTsKLSAgICBpbmxpbmUgY29uc3Qgc3RyaW5nJglvcGVyYXRvcj0gKGNvbnN0IHN0cmluZyYgcykJeyBhc3NpZ24gKHMuYmVnaW4oKSwgcy5lbmQoKSk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHN0cmluZyYJb3BlcmF0b3I9IChjb25zdF9yZWZlcmVuY2UgYykJeyBhc3NpZ24gKCZjLCAxKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3Qgc3RyaW5nJglvcGVyYXRvcj0gKGNvbnN0X3BvaW50ZXIgcykJeyBhc3NpZ24gKHMpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBzdHJpbmcmCW9wZXJhdG9yPSAoY29uc3Rfd3BvaW50ZXIgcykJeyBhc3NpZ24gKHMpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBzdHJpbmcmCW9wZXJhdG9yKz0gKGNvbnN0IHN0cmluZyYgcykJeyBhcHBlbmQgKHMuYmVnaW4oKSwgcy5zaXplKCkpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBzdHJpbmcmCW9wZXJhdG9yKz0gKGNvbnN0X3JlZmVyZW5jZSBjKQl7IGFwcGVuZCAoMSwgYyk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHN0cmluZyYJb3BlcmF0b3IrPSAoY29uc3RfcG9pbnRlciBzKQl7IGFwcGVuZCAocyk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHN0cmluZyYJb3BlcmF0b3IrPSAod3ZhbHVlX3R5cGUgYykJeyBhcHBlbmQgKDEsIGMpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBzdHJpbmcmCW9wZXJhdG9yKz0gKGNvbnN0X3dwb2ludGVyIHMpCXsgYXBwZW5kIChzKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgc3RyaW5nCQlvcGVyYXRvcisgKGNvbnN0IHN0cmluZyYgcykgY29uc3Q7Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcj09IChjb25zdCBzdHJpbmcmIHMpIGNvbnN0CXsgcmV0dXJuIChtZW1ibG9jazo6b3BlcmF0b3I9PSAocykpOyB9Ci0gICAgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0X3BvaW50ZXIgcykgY29uc3Q7Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcj09IChjb25zdF9yZWZlcmVuY2UgYykgY29uc3QJeyByZXR1cm4gKHNpemUoKSA9PSAxICYmIGMgPT0gYXQoMCkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvciE9IChjb25zdCBzdHJpbmcmIHMpIGNvbnN0CXsgcmV0dXJuICghb3BlcmF0b3I9PSAocykpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvciE9IChjb25zdF9wb2ludGVyIHMpIGNvbnN0CXsgcmV0dXJuICghb3BlcmF0b3I9PSAocykpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvciE9IChjb25zdF9yZWZlcmVuY2UgYykgY29uc3QJeyByZXR1cm4gKCFvcGVyYXRvcj09IChjKSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPCAoY29uc3Qgc3RyaW5nJiBzKSBjb25zdAl7IHJldHVybiAoMCA+IGNvbXBhcmUgKHMpKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I8IChjb25zdF9wb2ludGVyIHMpIGNvbnN0CXsgcmV0dXJuICgwID4gY29tcGFyZSAocykpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcjwgKGNvbnN0X3JlZmVyZW5jZSBjKSBjb25zdAl7IHJldHVybiAoMCA+IGNvbXBhcmUgKGJlZ2luKCksIGVuZCgpLCAmYywgJmMgKyAxKSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPiAoY29uc3RfcG9pbnRlciBzKSBjb25zdAl7IHJldHVybiAoMCA8IGNvbXBhcmUgKHMpKTsgfQotICAgIHZvaWQJCQlpbnNlcnQgKGNvbnN0IHVvZmZfdCBpcCwgd3ZhbHVlX3R5cGUgYywgc2l6ZV90eXBlIG4gPSAxKTsKLSAgICB2b2lkCQkJaW5zZXJ0IChjb25zdCB1b2ZmX3QgaXAsIGNvbnN0X3dwb2ludGVyIGZpcnN0LCBjb25zdF93cG9pbnRlciBsYXN0LCBjb25zdCBzaXplX3R5cGUgbiA9IDEpOwotICAgIGl0ZXJhdG9yCQkJaW5zZXJ0IChpdGVyYXRvciBzdGFydCwgY29uc3RfcmVmZXJlbmNlIGMsIHNpemVfdHlwZSBuID0gMSk7Ci0gICAgaXRlcmF0b3IJCQlpbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBjb25zdF9wb2ludGVyIHMsIHNpemVfdHlwZSBuID0gMSk7Ci0gICAgaXRlcmF0b3IJCQlpbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBjb25zdF9wb2ludGVyIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0LCBzaXplX3R5cGUgbiA9IDEpOwotICAgIGlubGluZSB2b2lkCQkJaW5zZXJ0ICh1b2ZmX3QgaXAsIGNvbnN0X3BvaW50ZXIgcywgc2l6ZV90eXBlIG5sZW4pCQl7IGluc2VydCAoaWF0KGlwKSwgcywgcyArIG5sZW4pOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpbnNlcnQgKHVvZmZfdCBpcCwgc2l6ZV90eXBlIG4sIHZhbHVlX3R5cGUgYykJCQl7IGluc2VydCAoaWF0KGlwKSwgYywgbik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWluc2VydCAodW9mZl90IGlwLCBjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBzcCwgc2l6ZV90eXBlIHNsZW4pCXsgaW5zZXJ0IChpYXQoaXApLCBzLmlhdChzcCksIHMuaWF0KHNwICsgc2xlbikpOyB9Ci0gICAgaXRlcmF0b3IJCQllcmFzZSAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBzaXplID0gMSk7Ci0gICAgdm9pZAkJCWVyYXNlICh1b2ZmX3Qgc3RhcnQsIHNpemVfdHlwZSBzaXplID0gMSk7Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllcmFzZSAoaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpCXsgcmV0dXJuIChlcmFzZSAoZmlyc3QsIHNpemVfdHlwZShkaXN0YW5jZShmaXJzdCxsYXN0KSkpKTsgfQotCQkJCU9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihlcmFzZSwgaXRlcmF0b3IpCi0gICAgaW5saW5lIHZvaWQJCQlwdXNoX2JhY2sgKGNvbnN0X3JlZmVyZW5jZSBjKQl7IGFwcGVuZCAoMSwgYyk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXB1c2hfYmFjayAod3ZhbHVlX3R5cGUgYykJeyBhcHBlbmQgKDEsIGMpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwb3BfYmFjayAodm9pZCkJCQl7IHJlc2l6ZSAoc2l6ZSgpIC0gMSk7IH0KLSAgICB2b2lkCQkJcmVwbGFjZSAoaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QsIGNvbnN0X3BvaW50ZXIgcyk7Ci0gICAgdm9pZAkJCXJlcGxhY2UgKGl0ZXJhdG9yIGZpcnN0LCBpdGVyYXRvciBsYXN0LCBjb25zdF9wb2ludGVyIGkxLCBjb25zdF9wb2ludGVyIGkyLCBzaXplX3R5cGUgbiA9IDEpOwotICAgIGlubGluZSB2b2lkCQkJcmVwbGFjZSAoaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QsIGNvbnN0IHN0cmluZyYgcykJCQl7IHJlcGxhY2UgKGZpcnN0LCBsYXN0LCBzLmJlZ2luKCksIHMuZW5kKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlyZXBsYWNlIChpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCwgY29uc3RfcG9pbnRlciBzLCBzaXplX3R5cGUgc2xlbikJeyByZXBsYWNlIChmaXJzdCwgbGFzdCwgcywgcyArIHNsZW4pOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlyZXBsYWNlIChpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCwgc2l6ZV90eXBlIG4sIHZhbHVlX3R5cGUgYykJCXsgcmVwbGFjZSAoZmlyc3QsIGxhc3QsICZjLCAmYyArIDEsIG4pOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlyZXBsYWNlICh1b2ZmX3QgcnAsIHNpemVfdHlwZSBuLCBjb25zdCBzdHJpbmcmIHMpCQkJCXsgcmVwbGFjZSAoaWF0KHJwKSwgaWF0KHJwICsgbiksIHMpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlyZXBsYWNlICh1b2ZmX3QgcnAsIHNpemVfdHlwZSBuLCBjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBzcCwgc2l6ZV90eXBlIHNsZW4pCXsgcmVwbGFjZSAoaWF0KHJwKSwgaWF0KHJwICsgbiksIHMuaWF0KHNwKSwgcy5pYXQoc3AgKyBzbGVuKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXJlcGxhY2UgKHVvZmZfdCBycCwgc2l6ZV90eXBlIG4sIGNvbnN0X3BvaW50ZXIgcywgc2l6ZV90eXBlIHNsZW4pCQl7IHJlcGxhY2UgKGlhdChycCksIGlhdChycCArIG4pLCBzLCBzICsgc2xlbik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXJlcGxhY2UgKHVvZmZfdCBycCwgc2l6ZV90eXBlIG4sIGNvbnN0X3BvaW50ZXIgcykJCQkJeyByZXBsYWNlIChpYXQocnApLCBpYXQocnAgKyBuKSwgc3RyaW5nKHMpKTsgfQotICAgIGlubGluZSB2b2lkCQkJcmVwbGFjZSAodW9mZl90IHJwLCBzaXplX3R5cGUgbiwgc2l6ZV90eXBlIGNvdW50LCB2YWx1ZV90eXBlIGMpCQkJeyByZXBsYWNlIChpYXQocnApLCBpYXQocnAgKyBuKSwgY291bnQsIGMpOyB9Ci0gICAgaW5saW5lIHN0cmluZwkJc3Vic3RyICh1b2ZmX3Qgbywgc2l6ZV90eXBlIG4pIGNvbnN0CXsgcmV0dXJuIChzdHJpbmcgKCp0aGlzLCBvLCBuKSk7IH0KLSAgICB1b2ZmX3QJCQlmaW5kIChjb25zdF9yZWZlcmVuY2UgYywgdW9mZl90IHBvcyA9IDApIGNvbnN0OwotICAgIHVvZmZfdAkJCWZpbmQgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IHBvcyA9IDApIGNvbnN0OwotICAgIHVvZmZfdAkJCXJmaW5kIChjb25zdF9yZWZlcmVuY2UgYywgdW9mZl90IHBvcyA9IG5wb3MpIGNvbnN0OwotICAgIHVvZmZfdAkJCXJmaW5kIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBwb3MgPSBucG9zKSBjb25zdDsKLSAgICB1b2ZmX3QJCQlmaW5kX2ZpcnN0X29mIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBwb3MgPSAwKSBjb25zdDsKLSAgICB1b2ZmX3QJCQlmaW5kX2ZpcnN0X25vdF9vZiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zID0gMCkgY29uc3Q7Ci0gICAgdW9mZl90CQkJZmluZF9sYXN0X29mIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBwb3MgPSBucG9zKSBjb25zdDsKLSAgICB1b2ZmX3QJCQlmaW5kX2xhc3Rfbm90X29mIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBwb3MgPSBucG9zKSBjb25zdDsKLSAgICBpbnQJCQkJdmZvcm1hdCAoY29uc3QgY2hhciogZm10LCB2YV9saXN0IGFyZ3MpOwotICAgIGludAkJCQlmb3JtYXQgKGNvbnN0IGNoYXIqIGZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0gICAgdm9pZAkJCXJlYWQgKGlzdHJlYW0mKTsKLSAgICB2b2lkCQkJd3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdDsKLSAgICBzaXplX3QJCQlzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3Q7Ci0gICAgc3RhdGljIGhhc2h2YWx1ZV90CQloYXNoIChjb25zdCBjaGFyKiBmMSwgY29uc3QgY2hhciogbDEpOwotcHJpdmF0ZToKLSAgICBETExfTE9DQUwgaXRlcmF0b3IJCXV0ZjhfaWF0ICh1b2ZmX3QgaSk7Ci1wcm90ZWN0ZWQ6Ci0gICAgaW5saW5lIHZpcnR1YWwgc2l6ZV90eXBlCW1pbmltdW1GcmVlQ2FwYWNpdHkgKHZvaWQpIGNvbnN0IHsgcmV0dXJuIChzaXplX1Rlcm1pbmF0b3IpOyB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIEFzc2lnbnMgaXRzZWxmIHRoZSB2YWx1ZSBvZiBzdHJpbmcgXHAgcwotaW5saW5lIHN0cmluZzo6c3RyaW5nIChjb25zdCBjbWVtbGluayYgcykKLTogbWVtYmxvY2sgKCkKLXsKLSAgICBhc3NpZ24gKGNvbnN0X2l0ZXJhdG9yIChzLmJlZ2luKCkpLCBzLnNpemUoKSk7Ci19Ci0KLS8vLyBBc3NpZ25zIGl0c2VsZiBhIFtvLG8rbikgc3Vic3RyaW5nIG9mIFxwIHMuCi1pbmxpbmUgc3RyaW5nOjpzdHJpbmcgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IG8sIHNpemVfdHlwZSBuKQotOiBtZW1ibG9jaygpCi17Ci0gICAgYXNzaWduIChzLCBvLCBuKTsKLX0KLQotLy8vIENvcGllcyB0aGUgdmFsdWUgb2YgXHAgcyBvZiBsZW5ndGggXHAgbGVuIGludG8gaXRzZWxmLgotaW5saW5lIHN0cmluZzo6c3RyaW5nIChjb25zdF9wb2ludGVyIHMsIHNpemVfdHlwZSBsZW4pCi06IG1lbWJsb2NrICgpCi17Ci0gICAgYXNzaWduIChzLCBsZW4pOwotfQotCi0vLy8gQ29waWVzIGludG8gaXRzZWxmIHRoZSBzdHJpbmcgZGF0YSBiZXR3ZWVuIFxwIHMxIGFuZCBccCBzMgotaW5saW5lIHN0cmluZzo6c3RyaW5nIChjb25zdF9wb2ludGVyIHMxLCBjb25zdF9wb2ludGVyIHMyKQotOiBtZW1ibG9jayAoKQotewotICAgIGFzc2VydCAoczEgPD0gczIgJiYgIk5lZ2F0aXZlIHJhbmdlcyByZXN1bHQgaW4gbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzLiIpOwotICAgIGFzc2lnbiAoczEsIHMyKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGNoYXJhY3Rlci4KLWlubGluZSBzdHJpbmc6Om9wZXJhdG9yIGNvbnN0IHN0cmluZzo6dmFsdWVfdHlwZSogKHZvaWQpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0ICgoIWVuZCgpIHx8ICplbmQoKSA9PSBjX1Rlcm1pbmF0b3IpICYmICJUaGlzIHN0cmluZyBpcyBsaW5rZWQgdG8gZGF0YSB0aGF0IGlzIG5vdCAwLXRlcm1pbmF0ZWQuIFRoaXMgbWF5IGNhdXNlIHNlcmlvdXMgc2VjdXJpdHkgcHJvYmxlbXMuIFBsZWFzZSBhc3NpZ24gdGhlIGRhdGEgaW5zdGVhZCBvZiBsaW5raW5nLiIpOwotICAgIHJldHVybiAoYmVnaW4oKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBwb2ludGVyIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIuCi1pbmxpbmUgc3RyaW5nOjpvcGVyYXRvciBzdHJpbmc6OnZhbHVlX3R5cGUqICh2b2lkKQotewotICAgIGFzc2VydCAoKGVuZCgpICYmICplbmQoKSA9PSBjX1Rlcm1pbmF0b3IpICYmICJUaGlzIHN0cmluZyBpcyBsaW5rZWQgdG8gZGF0YSB0aGF0IGlzIG5vdCAwLXRlcm1pbmF0ZWQuIFRoaXMgbWF5IGNhdXNlIHNlcmlvdXMgc2VjdXJpdHkgcHJvYmxlbXMuIFBsZWFzZSBhc3NpZ24gdGhlIGRhdGEgaW5zdGVhZCBvZiBsaW5raW5nLiIpOwotICAgIHJldHVybiAoYmVnaW4oKSk7Ci19Ci0KLS8vLyBDb25jYXRlbmF0ZXMgaXRzZWxmIHdpdGggXHAgcwotaW5saW5lIHN0cmluZyBzdHJpbmc6Om9wZXJhdG9yKyAoY29uc3Qgc3RyaW5nJiBzKSBjb25zdAotewotICAgIHN0cmluZyByZXN1bHQgKCp0aGlzKTsKLSAgICByZXN1bHQgKz0gczsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gT3BlcmF0b3JzIG5lZWRlZCB0byBhdm9pZCBjb21wYXJpbmcgcG9pbnRlciB0byBwb2ludGVyCi0KLSNkZWZpbmUgUFRSX1NUUklOR19DTVAob3AsIGltcGwpCVwKLWlubGluZSBib29sIG9wIChjb25zdCBjaGFyKiBzMSwgY29uc3Qgc3RyaW5nJiBzMikgeyByZXR1cm4gaW1wbDsgfQotUFRSX1NUUklOR19DTVAgKG9wZXJhdG9yPT0sIChzMiA9PSBzMSkpCi1QVFJfU1RSSU5HX0NNUCAob3BlcmF0b3IhPSwgKHMyICE9IHMxKSkKLVBUUl9TVFJJTkdfQ01QIChvcGVyYXRvcjwsICAoczIgPiAgczEpKQotUFRSX1NUUklOR19DTVAgKG9wZXJhdG9yPD0sIChzMiA+PSBzMSkpCi1QVFJfU1RSSU5HX0NNUCAob3BlcmF0b3I+LCAgKHMyIDwgIHMxKSkKLVBUUl9TVFJJTkdfQ01QIChvcGVyYXRvcj49LCAoczIgPD0gczEpKQotI3VuZGVmIFBUUl9TVFJJTkdfQ01QCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBoYXNodmFsdWVfdCBoYXNoX3ZhbHVlIChjb25zdCBUJiB2KQoteyByZXR1cm4gKHN0cmluZzo6aGFzaCAodi5iZWdpbigpLCB2LmVuZCgpKSk7IH0KLQotdGVtcGxhdGUgPD4KLWlubGluZSBoYXNodmFsdWVfdCBoYXNoX3ZhbHVlIChjb25zdCBzdHJpbmc6OmNvbnN0X3BvaW50ZXImIHYpCi17IHJldHVybiAoc3RyaW5nOjpoYXNoICh2LCB2ICsgc3RybGVuKHYpKSk7IH0KLQotdGVtcGxhdGUgPD4KLWlubGluZSBoYXNodmFsdWVfdCBoYXNoX3ZhbHVlIChjb25zdCBzdHJpbmc6OnBvaW50ZXImIHYpCi17IHJldHVybiAoc3RyaW5nOjpoYXNoICh2LCB2ICsgc3RybGVuKHYpKSk7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotLy8gU3BlY2lhbGl6YXRpb24gZm9yIHN0cmVhbSBhbGlnbm1lbnQKLUFMSUdOT0YgKHVzdGw6OnN0cmluZywgYWxpZ25vZiAoc3RyaW5nOjp2YWx1ZV90eXBlKCkpKQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXRmOC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXRmOC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODI5ZTdkLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V0ZjguaAorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdXRmOC5oCi0vLwotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHN0cmVhbSBpdGVyYXRvcnMgdGhhdCByZWFkIGFuZCB3cml0ZSBVVEYtOCBlbmNvZGVkCi0vLyBjaGFyYWN0ZXJzLiBUaGUgZW5jb2RpbmcgaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgotLy8KLS8vIFUtMDAwMDAwMDAgLSBVLTAwMDAwMDdGOiAweHh4eHh4eAotLy8gVS0wMDAwMDA4MCAtIFUtMDAwMDA3RkY6IDExMHh4eHh4IDEweHh4eHh4Ci0vLyBVLTAwMDAwODAwIC0gVS0wMDAwRkZGRjogMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHgKLS8vIFUtMDAwMTAwMDAgLSBVLTAwMUZGRkZGOiAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eAotLy8gVS0wMDIwMDAwMCAtIFUtMDNGRkZGRkY6IDExMTExMHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4Ci0vLyBVLTA0MDAwMDAwIC0gVS03RkZGRkZGRjogMTExMTExMHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHgKLS8vIFUtODAwMDAwMDAgLSBVLUZGRkZGRkZGOiAxMTExMTExMCAxMDAwMDB4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eAotLy8KLS8vIFRoZSBsYXN0IHJhbmdlIGluIG5vdCBpbiB0aGUgVVRGLTggc3RhbmRhcmQgYmVjYXVzZSBVbmljb2RlIGZvcmJpZHMKLS8vIGNoYXJhY3RlcnMgb2YgdGhvc2UgdmFsdWVzLiBIb3dldmVyLCBzaW5jZSB1c3RsOjpzdHJpbmcgdXNlcyB0aGlzIGNvZGUKLS8vIHRvIHdyaXRlIGl0cyBsZW5ndGgsIHRoZSBzdXBwb3J0IGlzIGhlcmUuIFRoZSByZWFzb24gaXQgd2FzIHB1dCBoZXJlCi0vLyBpbiB0aGUgZmlyc3QgcGxhY2UsIGlzIHRoYXQgZXh0cmEgY29kZSB3b3VsZCBoYXZlIGJlZW4gbmVjZXNzYXJ5IHRvCi0vLyBmbGFnIHRoYXQgcmFuZ2UgYXMgaW52YWxpZC4KLS8vCi0jaWZuZGVmIFVURjhfSF8zRDdBRUVFQjNBODg5MjhENEQyODBCNzg1Rjc4QjZGNAotI2RlZmluZSBVVEY4X0hfM0Q3QUVFRUIzQTg4OTI4RDREMjgwQjc4NUY3OEI2RjQKLQotI2luY2x1ZGUgInVpdGVyYXRvci5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10eXBlZGVmIHVpbnQ4X3QgdXRmOHN1YmNoYXJfdDsJLy8vPCBUeXBlIGZvciB0aGUgZW5jb2Rpbmcgc3ViY2hhcmFjdGVycy4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gVVRGLTggZW5jb2RlIFxwIHYuCi1pbmxpbmUgc2l6ZV90IFV0ZjhCeXRlcyAod2NoYXJfdCB2KQotewotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBjX0JvdW5kc1tdID0geyAweDAwMDAwMDdGLCAweDAwMDAwN0ZGLCAweDAwMDBGRkZGLCAweDAwMUZGRkZGLCAweDAzRkZGRkZGLCAweDdGRkZGRkZGLCAweEZGRkZGRkZGLCB9OwotICAgIHNpemVfdCBiaSA9IDA7Ci0gICAgd2hpbGUgKGNfQm91bmRzW2JpKytdIDwgdWludDMyX3QodikpOwotICAgIHJldHVybiAoYmkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIGEgVVRGLTggc2VxdWVuY2UgdGhhdCBzdGFydHMgd2l0aCBccCBjLgotaW5saW5lIHNpemVfdCBVdGY4U2VxdWVuY2VCeXRlcyAod2NoYXJfdCBjKQkvLyBhIHdjaGFyX3QgdG8ga2VlcCBjIGluIGEgZnVsbCByZWdpc3RlcgotewotICAgIC8vIENvdW50IHRoZSBsZWFkaW5nIGJpdHMuIEhlYWRlciBiaXRzIGFyZSAxICogbkJ5dGVzIGZvbGxvd2VkIGJ5IGEgMC4KLSAgICAvLwkwIC0gc2luZ2xlIGJ5dGUgY2hhcmFjdGVyLiBUYWtlIDcgYml0cyAoMHhGRiA+PiAxKQotICAgIC8vCTEgLSBlcnJvciwgaW4gdGhlIG1pZGRsZSBvZiB0aGUgY2hhcmFjdGVyLiBUYWtlIDYgYml0cyAoMHhGRiA+PiAyKQotICAgIC8vCSAgICBzbyB5b3Ugd2lsbCBrZWVwIHJlYWRpbmcgaW52YWxpZCBlbnRyaWVzIHVudGlsIHlvdSBoaXQgdGhlIG5leHQgY2hhcmFjdGVyLgotICAgIC8vCT4yIC0gbXVsdGlieXRlIGNoYXJhY3Rlci4gVGFrZSByZW1haW5pbmcgYml0cywgYW5kIGdldCB0aGUgbmV4dCBieXRlcy4KLSAgICAvLyBBbGwgZXJyb3JzIGFyZSBpZ25vcmVkLCBzaW5jZSB0aGUgdXNlciBjYW4gbm90IGNvcnJlY3QgdGhlbS4KLSAgICAvLwotICAgIHdjaGFyX3QgbWFzayA9IDB4ODA7Ci0gICAgc2l6ZV90IG5CeXRlcyA9IDA7Ci0gICAgZm9yICg7IGMgJiBtYXNrOyArK25CeXRlcykKLQltYXNrID4+PSAxOwotICAgIHJldHVybiAobkJ5dGVzID8gbkJ5dGVzIDogMSk7IC8vIEEgc2VxdWVuY2UgaXMgYWx3YXlzIGF0IGxlYXN0IDEgYnl0ZS4KLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcY2xhc3MgdXRmOGluX2l0ZXJhdG9yIHV0ZjguaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBJdGVyYXRvckFkYXB0b3JzCi0vLy8KLS8vLyBcYnJpZWYgQW4gaXRlcmF0b3IgYWRhcHRvciB0byBjaGFyYWN0ZXIgY29udGFpbmVycyBmb3IgcmVhZGluZyBVVEYtOCBlbmNvZGVkIHRleHQuCi0vLy8KLS8vLyBGb3IgZXhhbXBsZSwgeW91IGNhbiBjb3B5IGZyb20gdXN0bDo6c3RyaW5nIHRvIHVzdGw6OnZlY3Rvcjx3Y2hhcl90PiB3aXRoCi0vLy8gY29weSAodXRmOGluIChzdHIuYmVnaW4oKSksIHV0ZjhpbiAoc3RyLmVuZCgpKSwgYmFja19pbnNlcnRlcih3dmVjdCkpOwotLy8vIFRoZXJlIGlzIG5vIGVycm9yIGhhbmRsaW5nOyBpZiB0aGUgcmVhZGluZyBmcmFtZSBzbGlwcyB5b3UnbGwgZ2V0IGV4dHJhCi0vLy8gY2hhcmFjdGVycywgb25lIGZvciBldmVyeSBtaXNhbGlnbmVkIGJ5dGUuIEFsdGhvdWdoIGl0IGlzIHBvc3NpYmxlIHRvIHNraXAKLS8vLyB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY2hhcmFjdGVyLCB0aGF0IHdvdWxkIHJlc3VsdCBpbiBvbWl0dGluZyB0aGUKLS8vLyBtaXNmb3JtYXR0ZWQgY2hhcmFjdGVyIGFuZCB0aGUgb25lIGFmdGVyIGl0LCBtYWtpbmcgaXQgdmVyeSBkaWZmaWN1bHQgdG8KLS8vLyBkZXRlY3QgYnkgdGhlIHVzZXIuIEl0IGlzIGJldHRlciB0byB3cml0ZSBzb21lIHN0cmFuZ2UgY2hhcmFjdGVycyBhbmQgbGV0Ci0vLy8gdGhlIHVzZXIga25vdyBoaXMgZmlsZSBpcyBjb3JydXB0ZWQuIEFub3RoZXIgcHJvYmxlbSBpcyBvdmVyZmxvdyBvbiBiYWQKLS8vLyBlbmNvZGluZ3MgKGxpa2UgYSAweEZGIG9uIHRoZSBlbmQgb2YgYSBzdHJpbmcpLiBUaGlzIGlzIGNoZWNrZWQgdGhyb3VnaAotLy8vIHRoZSBlbmQtb2Ytc3RyaW5nIG51bCBjaGFyYWN0ZXIsIHdoaWNoIHdpbGwgYWx3YXlzIGJlIHRoZXJlIGFzIGxvbmcgYXMKLS8vLyB5b3UgYXJlIHVzaW5nIHRoZSBzdHJpbmcgY2xhc3MuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgV0NoYXIgPSB3Y2hhcl90PgotY2xhc3MgdXRmOGluX2l0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojpwb2ludGVyCQlwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlCXJlZmVyZW5jZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdAkJCXV0Zjhpbl9pdGVyYXRvciAoY29uc3QgSXRlcmF0b3ImIGlzKQkJOiBtX2kgKGlzKSwgbV92ICgwKSB7IFJlYWQoKTsgfQotCQkJCXV0Zjhpbl9pdGVyYXRvciAoY29uc3QgdXRmOGluX2l0ZXJhdG9yJiBpKQk6IG1faSAoaS5tX2kpLCBtX3YgKGkubV92KSB7fSAKLSAgICBpbmxpbmUgY29uc3QgdXRmOGluX2l0ZXJhdG9yJiBvcGVyYXRvcj0gKGNvbnN0IHV0Zjhpbl9pdGVyYXRvciYgaSkJCXsgbV9pID0gaS5tX2k7IG1fdiA9IGkubV92OyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBJdGVyYXRvcgkJYmFzZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1faSAtIChVdGY4Qnl0ZXMobV92KSAtIDEpKTsgfQotICAgIC8vLyBSZWFkcyBhbmQgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZS4KLSAgICBpbmxpbmUgV0NoYXIJCW9wZXJhdG9yKiAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1fdik7IH0KLSAgICBpbmxpbmUgdXRmOGluX2l0ZXJhdG9yJglvcGVyYXRvcisrICh2b2lkKQl7ICsrbV9pOyBSZWFkKCk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHV0Zjhpbl9pdGVyYXRvcglvcGVyYXRvcisrIChpbnQpCXsgdXRmOGluX2l0ZXJhdG9yIG9sZCAoKnRoaXMpOyBvcGVyYXRvcisrKCk7IHJldHVybiAob2xkKTsgfQotICAgIGlubGluZSB1dGY4aW5faXRlcmF0b3ImCW9wZXJhdG9yKz0gKHVvZmZfdCBuKQl7IHdoaWxlIChuLS0pIG9wZXJhdG9yKysoKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgdXRmOGluX2l0ZXJhdG9yCW9wZXJhdG9yKyAodW9mZl90IG4pCXsgdXRmOGluX2l0ZXJhdG9yIHYgKCp0aGlzKTsgcmV0dXJuICh2ICs9IG4pOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcj09IChjb25zdCB1dGY4aW5faXRlcmF0b3ImIGkpIGNvbnN0CXsgcmV0dXJuIChtX2kgPT0gaS5tX2kpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcjwgKGNvbnN0IHV0Zjhpbl9pdGVyYXRvciYgaSkgY29uc3QJeyByZXR1cm4gKG1faSA8IGkubV9pKTsgfQotICAgIGRpZmZlcmVuY2VfdHlwZQkJb3BlcmF0b3ItIChjb25zdCB1dGY4aW5faXRlcmF0b3ImIGkpIGNvbnN0OwotcHJpdmF0ZToKLSAgICB2b2lkCQkJUmVhZCAodm9pZCk7Ci1wcml2YXRlOgotICAgIEl0ZXJhdG9yCQkJbV9pOwotICAgIFdDaGFyCQkJbV92OwotfTsKLQotLy8vIFN0ZXBzIHRvIHRoZSBuZXh0IGNoYXJhY3RlciBhbmQgdXBkYXRlcyBjdXJyZW50IHJldHVybmFibGUgdmFsdWUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFdDaGFyPgotdm9pZCB1dGY4aW5faXRlcmF0b3I8SXRlcmF0b3IsV0NoYXI+OjpSZWFkICh2b2lkKQotewotICAgIGNvbnN0IHV0ZjhzdWJjaGFyX3QgYyA9ICptX2k7Ci0gICAgc2l6ZV90IG5CeXRlcyA9IFV0ZjhTZXF1ZW5jZUJ5dGVzIChjKTsKLSAgICBtX3YgPSBjICYgKDB4RkYgPj4gbkJ5dGVzKTsJLy8gRmlyc3QgYnl0ZSBjb250YWlucyBiaXRzIGFmdGVyIHRoZSBoZWFkZXIuCi0gICAgd2hpbGUgKC0tbkJ5dGVzICYmICorK21faSkJLy8gRWFjaCBzdWJzZXF1ZW50IGJ5dGUgaGFzIDYgYml0cy4KLQltX3YgPSAobV92IDw8IDYpIHwgKCptX2kgJiAweDNGKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGRpc3RhbmNlIGluIGNoYXJhY3RlcnMgKGFzIG9wcG9zZWQgdG8gdGhlIGRpc3RhbmNlIGluIGJ5dGVzKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgV0NoYXI+Ci10eXBlbmFtZSB1dGY4aW5faXRlcmF0b3I8SXRlcmF0b3IsV0NoYXI+OjpkaWZmZXJlbmNlX3R5cGUKLXV0Zjhpbl9pdGVyYXRvcjxJdGVyYXRvcixXQ2hhcj46Om9wZXJhdG9yLSAoY29uc3QgdXRmOGluX2l0ZXJhdG9yPEl0ZXJhdG9yLFdDaGFyPiYgbGFzdCkgY29uc3QKLXsKLSAgICBkaWZmZXJlbmNlX3R5cGUgZGlzdCA9IDA7Ci0gICAgZm9yIChJdGVyYXRvciBmaXJzdCAobGFzdC5tX2kpOyBmaXJzdCA8IG1faTsgKytkaXN0KQotCWZpcnN0ID0gYWR2YW5jZSAoZmlyc3QsIFV0ZjhTZXF1ZW5jZUJ5dGVzICgqZmlyc3QpKTsKLSAgICByZXR1cm4gKGRpc3QpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxjbGFzcyB1dGY4b3V0X2l0ZXJhdG9yIHV0ZjguaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBJdGVyYXRvckFkYXB0b3JzCi0vLy8KLS8vLyBcYnJpZWYgQW4gaXRlcmF0b3IgYWRhcHRvciB0byBjaGFyYWN0ZXIgY29udGFpbmVycyBmb3Igd3JpdGluZyBVVEYtOCBlbmNvZGVkIHRleHQuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgV0NoYXIgPSB3Y2hhcl90PgotY2xhc3MgdXRmOG91dF9pdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cG9pbnRlcgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnJlZmVyZW5jZQlyZWZlcmVuY2U7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQJCQl1dGY4b3V0X2l0ZXJhdG9yIChjb25zdCBJdGVyYXRvciYgb3MpIDogbV9pIChvcykge30KLQkJCQl1dGY4b3V0X2l0ZXJhdG9yIChjb25zdCB1dGY4b3V0X2l0ZXJhdG9yJiBpKSA6IG1faSAoaS5tX2kpIHt9IAotICAgIGlubGluZSBjb25zdCBJdGVyYXRvciYJYmFzZSAodm9pZCkgY29uc3QgeyByZXR1cm4gKG1faSk7IH0KLSAgICAvLy8gV3JpdGVzIFxwIHYgaW50byB0aGUgc3RyZWFtLgotICAgIHV0ZjhvdXRfaXRlcmF0b3ImCQlvcGVyYXRvcj0gKFdDaGFyIHYpOwotICAgIGlubGluZSB1dGY4b3V0X2l0ZXJhdG9yJglvcGVyYXRvciogKHZvaWQpIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgdXRmOG91dF9pdGVyYXRvciYJb3BlcmF0b3IrKyAodm9pZCkgeyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSB1dGY4b3V0X2l0ZXJhdG9yCW9wZXJhdG9yKysgKGludCkgeyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3QgdXRmOG91dF9pdGVyYXRvciYgaSkgY29uc3QgeyByZXR1cm4gKG1faSA9PSBpLm1faSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPCAoY29uc3QgdXRmOG91dF9pdGVyYXRvciYgaSkgY29uc3QgeyByZXR1cm4gKG1faSA8IGkubV9pKTsgfQotcHJpdmF0ZToKLSAgICBJdGVyYXRvcgkJCW1faTsKLX07Ci0KLS8vLyBXcml0ZXMgXHAgdiBpbnRvIHRoZSBzdHJlYW0uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFdDaGFyPgotdXRmOG91dF9pdGVyYXRvcjxJdGVyYXRvcixXQ2hhcj4mIHV0ZjhvdXRfaXRlcmF0b3I8SXRlcmF0b3IsV0NoYXI+OjpvcGVyYXRvcj0gKFdDaGFyIHYpCi17Ci0gICAgY29uc3Qgc2l6ZV90IG5CeXRlcyA9IFV0ZjhCeXRlcyAodik7Ci0gICAgaWYgKG5CeXRlcyA+IDEpIHsKLQkvLyBXcml0ZSB0aGUgYml0cyA2IGJpdHMgYXQgYSB0aW1lLCBleGNlcHQgZm9yIHRoZSBmaXJzdCBvbmUsCi0JLy8gd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiA2IGJpdHMuCi0JcmVnaXN0ZXIgd2NoYXJfdCBzaGlmdCA9IG5CeXRlcyAqIDY7Ci0JKm1faSsrID0gKCh2ID4+IChzaGlmdCAtPSA2KSkgJiAweDNGKSB8ICgweEZGIDw8ICg4IC0gbkJ5dGVzKSk7Ci0Jd2hpbGUgKHNoaWZ0KQotCSAgICAqbV9pKysgPSAoKHYgPj4gKHNoaWZ0IC09IDYpKSAmIDB4M0YpIHwgMHg4MDsKLSAgICB9IGVsc2UJLy8gSWYgb25seSBvbmUgYnl0ZSwgdGhlcmUgaXMgbm8gaGVhZGVyLgotICAgIAkqbV9pKysgPSB2OwotICAgIHJldHVybiAoKnRoaXMpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFJldHVybnMgYSBVVEYtOCBhZGFwdG9yIHdyaXRpbmcgdG8gXHAgaS4gVXNlZnVsIGluIGNvbmp1Y3Rpb24gd2l0aCBiYWNrX2luc2VydF9pdGVyYXRvci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KLWlubGluZSB1dGY4b3V0X2l0ZXJhdG9yPEl0ZXJhdG9yPiB1dGY4b3V0IChJdGVyYXRvciBpKQotewotICAgIHJldHVybiAodXRmOG91dF9pdGVyYXRvcjxJdGVyYXRvcj4gKGkpKTsKLX0KLQotLy8vIFJldHVybnMgYSBVVEYtOCBhZGFwdG9yIHJlYWRpbmcgZnJvbSBccCBpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgotaW5saW5lIHV0Zjhpbl9pdGVyYXRvcjxJdGVyYXRvcj4gdXRmOGluIChJdGVyYXRvciBpKQotewotICAgIHJldHVybiAodXRmOGluX2l0ZXJhdG9yPEl0ZXJhdG9yPiAoaSkpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXR1cGxlLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dHVwbGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEwMDNhYi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dHVwbGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdXR1cGxlLmgKLS8vCi0KLSNpZm5kZWYgVVRVUExFX0hfNzMyNEFERUM0OUIzOTdDQTc0QTU2RjYwNTBGRDVBNkIKLSNkZWZpbmUgVVRVUExFX0hfNzMyNEFERUM0OUIzOTdDQTc0QTU2RjYwNTBGRDVBNkIKLQotI2luY2x1ZGUgInVhbGdvLmgiCi0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jdW5kZWYgQ1BVX0hBU19NTVgKLSNlbmRpZgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgdHVwbGUgdXR1cGxlLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgU2VxdWVuY2VzCi0vLy8KLS8vLyBcYnJpZWYgQSBmaXhlZC1zaXplIGFycmF5IG9mIFxwIE4gXHAgVHMuCi0vLy8KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVD4KLWNsYXNzIHR1cGxlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFQJCQkJCQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgc2l6ZV90CQkJCQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKgkJCQkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqCQkJCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlJgkJCQkJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYJCQkJY29uc3RfcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgcG9pbnRlcgkJCQkJaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBjb25zdF9wb2ludGVyCQkJCWNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgOjp1c3RsOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPgkJcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIDo6dXN0bDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4JY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHBhaXI8aXRlcmF0b3IsaXRlcmF0b3I+CQkJcmFuZ2VfdDsKLSAgICB0eXBlZGVmIHBhaXI8Y29uc3RfaXRlcmF0b3IsY29uc3RfaXRlcmF0b3I+CQljb25zdF9yYW5nZV90OwotcHVibGljOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KLSAgICBpbmxpbmUJCQl0dXBsZSAoY29uc3QgdHVwbGU8TixUMj4mIHQpOwotICAgIGlubGluZQkJCXR1cGxlIChjb25zdCB0dXBsZTxOLFQ+JiB0KTsKLSAgICBpbmxpbmUJCQl0dXBsZSAoY29uc3RfcG9pbnRlciB2KTsKLSAgICBpbmxpbmUJCQl0dXBsZSAodm9pZCkJCQl7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgbV92W2ldID0gVCgpOyB9Ci0gICAgZXhwbGljaXQgaW5saW5lCQl0dXBsZSAoY29uc3RfcmVmZXJlbmNlIHYwLCBjb25zdF9yZWZlcmVuY2UgdjEgPSBUKCksIGNvbnN0X3JlZmVyZW5jZSB2MiA9IFQoKSwgY29uc3RfcmVmZXJlbmNlIHYzID0gVCgpKTsKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWJlZ2luICh2b2lkKQkJCXsgcmV0dXJuIChtX3YpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fdik7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVuZCAodm9pZCkJCQl7IHJldHVybiAoYmVnaW4oKSArIE4pOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChiZWdpbigpICsgTik7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQlzaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKE4pOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJbWF4X3NpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoTik7IH0KLSAgICBpbmxpbmUgYm9vbAkJCWVtcHR5ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKE4gPT0gMCk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCWF0IChzaXplX3R5cGUgaSkgY29uc3QJCXsgcmV0dXJuIChtX3ZbaV0pOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJYXQgKHNpemVfdHlwZSBpKQkJeyByZXR1cm4gKG1fdltpXSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCW9wZXJhdG9yW10gKHNpemVfdHlwZSBpKSBjb25zdAl7IHJldHVybiAobV92W2ldKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCW9wZXJhdG9yW10gKHNpemVfdHlwZSBpKQl7IHJldHVybiAobV92W2ldKTsgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KLSAgICBpbmxpbmUgY29uc3QgdHVwbGUmCQlvcGVyYXRvcj0gKGNvbnN0IHR1cGxlPE4sVDI+JiBzcmMpOwotICAgIGlubGluZSBjb25zdCB0dXBsZSYJCW9wZXJhdG9yPSAoY29uc3QgdHVwbGU8TixUPiYgc3JjKTsKLSAgICBpbmxpbmUgY29uc3QgdHVwbGUmCQlvcGVyYXRvcis9IChjb25zdF9yZWZlcmVuY2UgdikKLQkJCQkgICAgeyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIG1fdltpXSArPSB2OyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCB0dXBsZSYJCW9wZXJhdG9yLT0gKGNvbnN0X3JlZmVyZW5jZSB2KQotCQkJCSAgICB7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgbV92W2ldIC09IHY7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHR1cGxlJgkJb3BlcmF0b3IqPSAoY29uc3RfcmVmZXJlbmNlIHYpCi0JCQkJICAgIHsgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSBtX3ZbaV0gKj0gdjsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3QgdHVwbGUmCQlvcGVyYXRvci89IChjb25zdF9yZWZlcmVuY2UgdikKLQkJCQkgICAgeyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIG1fdltpXSAvPSB2OyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCB0dXBsZQkJb3BlcmF0b3IrIChjb25zdF9yZWZlcmVuY2UgdikgY29uc3QKLQkJCQkgICAgeyB0dXBsZSByZXN1bHQ7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgcmVzdWx0W2ldID0gbV92W2ldICsgdjsgcmV0dXJuIChyZXN1bHQpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHR1cGxlCQlvcGVyYXRvci0gKGNvbnN0X3JlZmVyZW5jZSB2KSBjb25zdAotCQkJCSAgICB7IHR1cGxlIHJlc3VsdDsgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSByZXN1bHRbaV0gPSBtX3ZbaV0gLSB2OyByZXR1cm4gKHJlc3VsdCk7IH0KLSAgICBpbmxpbmUgY29uc3QgdHVwbGUJCW9wZXJhdG9yKiAoY29uc3RfcmVmZXJlbmNlIHYpIGNvbnN0Ci0JCQkJICAgIHsgdHVwbGUgcmVzdWx0OyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHJlc3VsdFtpXSA9IG1fdltpXSAqIHY7IHJldHVybiAocmVzdWx0KTsgfQotICAgIGlubGluZSBjb25zdCB0dXBsZQkJb3BlcmF0b3IvIChjb25zdF9yZWZlcmVuY2UgdikgY29uc3QKLQkJCQkgICAgeyB0dXBsZSByZXN1bHQ7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgcmVzdWx0W2ldID0gbV92W2ldIC8gdjsgcmV0dXJuIChyZXN1bHQpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlzd2FwICh0dXBsZTxOLFQ+JiB2KQotCQkJCSAgICB7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgOjp1c3RsOjpzd2FwIChtX3ZbaV0sIHYubV92W2ldKTsgfQotcHJpdmF0ZToKLSAgICBUCQkJCW1fdiBbTl07Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNpbmNsdWRlICJzaW1kLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotdGVtcGxhdGUgPHR5cGVuYW1lIFQyPgotaW5saW5lIHR1cGxlPE4sVD46OnR1cGxlIChjb25zdCB0dXBsZTxOLFQyPiYgdCkKLXsgc2ltZDo6cGNvbnZlcnQgKHQsICp0aGlzLCBzaW1kOjpmY2FzdDxUMixUPigpKTsgfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdHVwbGU8TixUPjo6dHVwbGUgKGNvbnN0IHR1cGxlPE4sVD4mIHQpCi17IHNpbWQ6OnBhc3NpZ24gKHQsICp0aGlzKTsgfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdHVwbGU8TixUPjo6dHVwbGUgKGNvbnN0X3BvaW50ZXIgdikKLXsgc2ltZDo6aXBhc3NpZ24gKHYsICp0aGlzKTsgfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdHVwbGU8TixUPjo6dHVwbGUgKGNvbnN0X3JlZmVyZW5jZSB2MCwgY29uc3RfcmVmZXJlbmNlIHYxLCBjb25zdF9yZWZlcmVuY2UgdjIsIGNvbnN0X3JlZmVyZW5jZSB2MykKLXsKLSAgICBtX3ZbMF0gPSB2MDsKLSAgICBpZiAoTiA+IDEpIG1fdlsxXSA9IHYxOwotICAgIGlmIChOID4gMikgbV92WzJdID0gdjI7Ci0gICAgaWYgKE4gPiAzKSBtX3ZbM10gPSB2MzsKLSAgICBpZiAoTiA+IDQpIGZpbGxfbiAobV92ICsgNCwgTiAtIDQsIFQoKSk7Ci19Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVD4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KLWlubGluZSBjb25zdCB0dXBsZTxOLFQ+JiB0dXBsZTxOLFQ+OjpvcGVyYXRvcj0gKGNvbnN0IHR1cGxlPE4sVDI+JiBzcmMpCi17IHNpbWQ6OnBjb252ZXJ0IChzcmMsICp0aGlzLCBzaW1kOjpmY2FzdDxUMixUPigpKTsgcmV0dXJuICgqdGhpcyk7IH0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotaW5saW5lIGNvbnN0IHR1cGxlPE4sVD4mIHR1cGxlPE4sVD46Om9wZXJhdG9yPSAoY29uc3QgdHVwbGU8TixUPiYgc3JjKQoteyBzaW1kOjpwYXNzaWduIChzcmMsICp0aGlzKTsgcmV0dXJuICgqdGhpcyk7IH0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09IChjb25zdCB0dXBsZTxOLFQxPiYgdDEsIGNvbnN0IHR1cGxlPE4sVDI+JiB0MikKLXsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpCi0JaWYgKHQxW2ldICE9IHQyW2ldKQotCSAgICByZXR1cm4gKGZhbHNlKTsKLSAgICByZXR1cm4gKHRydWUpOwotfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBib29sIG9wZXJhdG9yPCAoY29uc3QgdHVwbGU8TixUMT4mIHQxLCBjb25zdCB0dXBsZTxOLFQyPiYgdDIpCi17Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOICYmIHQxW2ldIDw9IHQyW2ldOyArKyBpKQotCWlmICh0MVtpXSA8IHQyW2ldKQotCSAgICByZXR1cm4gKHRydWUpOwotICAgIHJldHVybiAoZmFsc2UpOwotfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBjb25zdCB0dXBsZTxOLFQxPiYgb3BlcmF0b3IrPSAodHVwbGU8TixUMT4mIHQxLCBjb25zdCB0dXBsZTxOLFQyPiYgdDIpCi0gICAgeyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHQxW2ldID0gVDEodDFbaV0gKyB0MltpXSk7IHJldHVybiAodDEpOyB9Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGNvbnN0IHR1cGxlPE4sVDE+JiBvcGVyYXRvci09ICh0dXBsZTxOLFQxPiYgdDEsIGNvbnN0IHR1cGxlPE4sVDI+JiB0MikKLSAgICB7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgdDFbaV0gPSBUMSh0MVtpXSAtIHQyW2ldKTsgcmV0dXJuICh0MSk7IH0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgY29uc3QgdHVwbGU8TixUMT4mIG9wZXJhdG9yKj0gKHR1cGxlPE4sVDE+JiB0MSwgY29uc3QgdHVwbGU8TixUMj4mIHQyKQotICAgIHsgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSB0MVtpXSA9IFQxKHQxW2ldICogdDJbaV0pOyByZXR1cm4gKHQxKTsgfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBjb25zdCB0dXBsZTxOLFQxPiYgb3BlcmF0b3IvPSAodHVwbGU8TixUMT4mIHQxLCBjb25zdCB0dXBsZTxOLFQyPiYgdDIpCi0gICAgeyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHQxW2ldID0gVDEodDFbaV0gLyB0MltpXSk7IHJldHVybiAodDEpOyB9Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGNvbnN0IHR1cGxlPE4sVDE+IG9wZXJhdG9yKyAoY29uc3QgdHVwbGU8TixUMT4mIHQxLCBjb25zdCB0dXBsZTxOLFQyPiYgdDIpCi17Ci0gICAgdHVwbGU8TixUMT4gcmVzdWx0OwotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgcmVzdWx0W2ldID0gVDEodDFbaV0gKyB0MltpXSk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBjb25zdCB0dXBsZTxOLFQxPiBvcGVyYXRvci0gKGNvbnN0IHR1cGxlPE4sVDE+JiB0MSwgY29uc3QgdHVwbGU8TixUMj4mIHQyKQotewotICAgIHR1cGxlPE4sVDE+IHJlc3VsdDsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHJlc3VsdFtpXSA9IFQxKHQxW2ldIC0gdDJbaV0pOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgY29uc3QgdHVwbGU8TixUMT4gb3BlcmF0b3IqIChjb25zdCB0dXBsZTxOLFQxPiYgdDEsIGNvbnN0IHR1cGxlPE4sVDI+JiB0MikKLXsKLSAgICB0dXBsZTxOLFQxPiByZXN1bHQ7Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSByZXN1bHRbaV0gPSBUMSh0MVtpXSAqIHQyW2ldKTsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGNvbnN0IHR1cGxlPE4sVDE+IG9wZXJhdG9yLyAoY29uc3QgdHVwbGU8TixUMT4mIHQxLCBjb25zdCB0dXBsZTxOLFQyPiYgdDIpCi17Ci0gICAgdHVwbGU8TixUMT4gcmVzdWx0OwotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgcmVzdWx0W2ldID0gVDEodDFbaV0gLyB0MltpXSk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0jaWYgQ1BVX0hBU19TU0UKLSNkZWZpbmUgU1NFX1RVUExFX1NQRUNTKG4sdHlwZSkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSB0dXBsZTxuLHR5cGU+Ojp0dXBsZSAodm9pZCkJXAoteyBhc20gKCJ4b3JwcyAlJXhtbTAsICUleG1tMFxuXHRtb3Z1cHMgJSV4bW0wLCAlMCI6OiJtIihtX3ZbMF0pOiJ4bW0wIiwibWVtb3J5Iik7IH0JXAotdGVtcGxhdGU8PiBpbmxpbmUgdm9pZCB0dXBsZTxuLHR5cGU+Ojpzd2FwICh0dXBsZTxuLHR5cGU+JiB2KQlcCi17IGFzbSAoIm1vdnVwcyAlMCwlJXhtbTBcblx0bW92dXBzICUxLCUleG1tMVxuXHRtb3Z1cHMgJSV4bW0wLCUxXG5cdG1vdnVwcyAlJXhtbTEsJTAiOjoibSIobV92WzBdKSwibSIodi5tX3ZbMF0pOiJ4bW0wIiwieG1tMSIsIm1lbW9yeSIpOyB9Ci1TU0VfVFVQTEVfU1BFQ1MoNCxmbG9hdCkKLVNTRV9UVVBMRV9TUEVDUyg0LGludDMyX3QpCi1TU0VfVFVQTEVfU1BFQ1MoNCx1aW50MzJfdCkKLSN1bmRlZiBTU0VfVFVQTEVfU1BFQ1MKLSNlbmRpZgotI2lmIENQVV9IQVNfTU1YCi0jZGVmaW5lIE1NWF9UVVBMRV9TUEVDUyhuLHR5cGUpCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdHVwbGU8bix0eXBlPjo6dHVwbGUgKHZvaWQpCVwKLXsgYXNtICgicHhvciAlJW1tMCwgJSVtbTBcblx0bW92cSAlJW1tMCwgJTAiOjoibSIobV92WzBdKToibW0wIiwibWVtb3J5Iik7IHNpbWQ6OnJlc2V0X21teCgpOyB9CVwKLXRlbXBsYXRlPD4gaW5saW5lIHZvaWQgdHVwbGU8bix0eXBlPjo6c3dhcCAodHVwbGU8bix0eXBlPiYgdikJXAoteyBhc20gKCJtb3ZxICUwLCUlbW0wXG5cdG1vdnEgJTEsJSVtbTFcblx0bW92cSAlJW1tMCwlMVxuXHRtb3ZxICUlbW0xLCUwIjo6Im0iKG1fdlswXSksIm0iKHYubV92WzBdKToibW0wIiwibW0xIiwibWVtb3J5Iik7IHNpbWQ6OnJlc2V0X21teCgpOyB9Ci1NTVhfVFVQTEVfU1BFQ1MoMixmbG9hdCkKLU1NWF9UVVBMRV9TUEVDUyg0LGludDE2X3QpCi1NTVhfVFVQTEVfU1BFQ1MoNCx1aW50MTZfdCkKLU1NWF9UVVBMRV9TUEVDUygyLGludDMyX3QpCi1NTVhfVFVQTEVfU1BFQ1MoMix1aW50MzJfdCkKLU1NWF9UVVBMRV9TUEVDUyg4LGludDhfdCkKLU1NWF9UVVBMRV9TUEVDUyg4LHVpbnQ4X3QpCi0jdW5kZWYgTU1YX1RVUExFX1NQRUNTCi0jZW5kaWYKLQotI2RlZmluZSBTSU1EX1RVUExFX1BBQ0tPUChOLFQpCVwKLXRlbXBsYXRlIDw+IGlubGluZSBjb25zdCB0dXBsZTxOLFQ+JiBvcGVyYXRvcis9ICh0dXBsZTxOLFQ+JiB0MSwgY29uc3QgdHVwbGU8TixUPiYgdDIpCVwKLSAgICB7IHNpbWQ6OnBhZGQgKHQyLCB0MSk7IHJldHVybiAodDEpOyB9CQkJCQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIGNvbnN0IHR1cGxlPE4sVD4mIG9wZXJhdG9yLT0gKHR1cGxlPE4sVD4mIHQxLCBjb25zdCB0dXBsZTxOLFQ+JiB0MikJXAotICAgIHsgc2ltZDo6cHN1YiAodDIsIHQxKTsgcmV0dXJuICh0MSk7IH0JCQkJCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgY29uc3QgdHVwbGU8TixUPiYgb3BlcmF0b3IqPSAodHVwbGU8TixUPiYgdDEsIGNvbnN0IHR1cGxlPE4sVD4mIHQyKQlcCi0gICAgeyBzaW1kOjpwbXVsICh0MiwgdDEpOyByZXR1cm4gKHQxKTsgfQkJCQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSBjb25zdCB0dXBsZTxOLFQ+JiBvcGVyYXRvci89ICh0dXBsZTxOLFQ+JiB0MSwgY29uc3QgdHVwbGU8TixUPiYgdDIpCVwKLSAgICB7IHNpbWQ6OnBkaXYgKHQyLCB0MSk7IHJldHVybiAodDEpOyB9CQkJCQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIGNvbnN0IHR1cGxlPE4sVD4gb3BlcmF0b3IrIChjb25zdCB0dXBsZTxOLFQ+JiB0MSwgY29uc3QgdHVwbGU8TixUPiYgdDIpIFwKLSAgICB7IHR1cGxlPE4sVD4gcmVzdWx0ICh0MSk7IHNpbWQ6OnBhZGQgKHQyLCByZXN1bHQpOyByZXR1cm4gKHJlc3VsdCk7IH0JCVwKLXRlbXBsYXRlIDw+IGlubGluZSBjb25zdCB0dXBsZTxOLFQ+IG9wZXJhdG9yLSAoY29uc3QgdHVwbGU8TixUPiYgdDEsIGNvbnN0IHR1cGxlPE4sVD4mIHQyKSBcCi0gICAgeyB0dXBsZTxOLFQ+IHJlc3VsdCAodDEpOyBzaW1kOjpwc3ViICh0MiwgcmVzdWx0KTsgcmV0dXJuIChyZXN1bHQpOyB9CQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgY29uc3QgdHVwbGU8TixUPiBvcGVyYXRvciogKGNvbnN0IHR1cGxlPE4sVD4mIHQxLCBjb25zdCB0dXBsZTxOLFQ+JiB0MikgXAotICAgIHsgdHVwbGU8TixUPiByZXN1bHQgKHQxKTsgc2ltZDo6cG11bCAodDIsIHJlc3VsdCk7IHJldHVybiAocmVzdWx0KTsgfQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIGNvbnN0IHR1cGxlPE4sVD4gb3BlcmF0b3IvIChjb25zdCB0dXBsZTxOLFQ+JiB0MSwgY29uc3QgdHVwbGU8TixUPiYgdDIpIFwKLSAgICB7IHR1cGxlPE4sVD4gcmVzdWx0ICh0MSk7IHNpbWQ6OnBkaXYgKHQyLCByZXN1bHQpOyByZXR1cm4gKHJlc3VsdCk7IH0KLVNJTURfVFVQTEVfUEFDS09QKDQsZmxvYXQpCi1TSU1EX1RVUExFX1BBQ0tPUCgyLGZsb2F0KQotU0lNRF9UVVBMRV9QQUNLT1AoMixkb3VibGUpCi1TSU1EX1RVUExFX1BBQ0tPUCg0LGludDMyX3QpCi1TSU1EX1RVUExFX1BBQ0tPUCg0LHVpbnQzMl90KQotU0lNRF9UVVBMRV9QQUNLT1AoNCxpbnQxNl90KQotU0lNRF9UVVBMRV9QQUNLT1AoNCx1aW50MTZfdCkKLVNJTURfVFVQTEVfUEFDS09QKDIsaW50MzJfdCkKLVNJTURfVFVQTEVfUEFDS09QKDIsdWludDMyX3QpCi1TSU1EX1RVUExFX1BBQ0tPUCg4LGludDhfdCkKLVNJTURfVFVQTEVfUEFDS09QKDgsdWludDhfdCkKLSN1bmRlZiBTSU1EX1RVUExFX1BBQ0tPUAotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dHlwZXMuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V0eXBlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGIwMjY1Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V0eXBlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHV0eXBlcy5oCi0vLwotLy8gVHlwZXMgdXNlZCBieSB0aGlzIGxpYnJhcnkuCi0vLwotCi0jaWZuZGVmIFVUWVBFU19IXzExOEJCQjNCNTBCN0RCRjIyRjU0NjBDNTJFNTE1QzgzCi0jZGVmaW5lIFVUWVBFU19IXzExOEJCQjNCNTBCN0RCRjIyRjU0NjBDNTJFNTE1QzgzCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZm5kZWYgU1REQ19IRUFERVJTCi0gICAgI2Vycm9yIFRoaXMgbGlicmFyeSByZXF1aXJlcyBzdGFuZGFyZCBDIGFuZCBDKysgaGVhZGVycyB0byBjb21waWxlLgotI2VuZGlmCi0jaWZuZGVmIFNURFVOSVhfSEVBREVSUwotICAgICNlcnJvciBUaGlzIGxpYnJhcnkgY29tcGlsZXMgb25seSBvbiBVTklYIHN5c3RlbXMuCi0jZW5kaWYKLSNkZWZpbmUgX19TVERDX0xJTUlUX01BQ1JPUwkvLyBGb3IgV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVggaW4gc3RkaW50LgotI2RlZmluZSBfX1NURENfQ09OU1RBTlRfTUFDUk9TCS8vIEZvciBVSU5UPz9fQyBtYWNyb3MgdG8gYXZvaWQgdXNpbmcgTCBhbmQgVUwgc3VmZml4ZXMgb24gY29uc3RhbnRzLgotI2lmZGVmIEhBVkVfU1RESU5UX0gKLSAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0jZWxpZiBIQVZFX0lOVFRZUEVTX0gKLSAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSNlbHNlCi0gICAgI2Vycm9yIE5lZWQgc3RhbmRhcmQgaW50ZWdlciB0eXBlcyBkZWZpbml0aW9ucywgdXN1YWxseSBpbiBzdGRpbnQuaAotI2VuZGlmCi0jaW5jbHVkZSA8c3RkZGVmLmg+CQkvLyBGb3IgcHRyZGlmZl90LCBzaXplX3QKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxmbG9hdC5oPgotI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZm5kZWYgU0laRV9NQVgKLSAgICAjZGVmaW5lIFNJWkVfTUFYCQlVSU5UX01BWAotI2VuZGlmCi0jaWYgc3VuIHx8IF9fc3VuCQkvLyBTb2xhcmlzIGRlZmluZXMgVUlOVFBUUl9NQVggYXMgZW1wdHkuCi0gICAgI3VuZGVmIFVJTlRQVFJfTUFYCi0gICAgI2RlZmluZSBVSU5UUFRSX01BWAkJVUxPTkdfTUFYCi0jZW5kaWYKLSNpZm5kZWYgV0NIQVJfTUFYCi0gICAgI2lmZGVmIF9fV0NIQVJfTUFYX18KLQkjZGVmaW5lIFdDSEFSX01BWAlfX1dDSEFSX01BWF9fCi0gICAgI2Vsc2UKLQkjZGVmaW5lIFdDSEFSX01BWAlDSEFSX01BWAotICAgICNlbmRpZgotI2VuZGlmCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAjaWZuZGVmIExMT05HX01BWAotCSNkZWZpbmUgVUxMT05HX01BWAlVSU5UNjRfQygweEZGRkZGRkZGRkZGRkZGRkYpCi0JI2RlZmluZSBMTE9OR19NQVgJSU5UNjRfQygweDdGRkZGRkZGRkZGRkZGRkYpCi0JI2RlZmluZSBMTE9OR19NSU4JVUxMT05HX01BWAotICAgICNlbmRpZgotI2VuZGlmCi0jaWYgIVBMQVRGT1JNX0FORFJPSUQKLSNpZm5kZWYgQllURV9PUkRFUgotICAgICNkZWZpbmUgTElUVExFX0VORElBTglVU1RMX0xJVFRMRV9FTkRJQU4KLSAgICAjZGVmaW5lIEJJR19FTkRJQU4JCVVTVExfQklHX0VORElBTgotICAgICNkZWZpbmUgQllURV9PUkRFUgkJVVNUTF9CWVRFX09SREVSCi0jZW5kaWYKLSNlbmRpZgotCi10eXBlZGVmIHNpemVfdAkJdW9mZl90OwkJLy8vPCBBIHR5cGUgZm9yIHN0b3Jpbmcgb2Zmc2V0cyBpbnRvIGJsb2NrcyBtZWFzdXJlZCBieSBzaXplX3QuCi10eXBlZGVmIHVpbnQzMl90CWhhc2h2YWx1ZV90OwkvLy88IFZhbHVlIHR5cGUgcmV0dXJuZWQgYnkgdGhlIGhhc2ggZnVuY3Rpb25zLgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXV0aWxpdHkuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V1dGlsaXR5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNWFlNjQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXV0aWxpdHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8vIFxmaWxlIHV1dGlsaXR5LmgKLS8vLwotLy8vIFxicmllZiBVdGlsaXR5IHRlbXBsYXRlcy4KLS8vLwotLy8vIEV2ZXJ5dGhpbmcgaW4gaGVyZSBleGNlcHQgbWluKCksIG1heCgpLCBkaXN0YW5jZSgpLCBhbmQgYWR2YW5jZSgpCi0vLy8gYXJlIHVTVEwgZXh0ZW5zaW9ucyBhbmQgYXJlIGFic2VudCBmcm9tIG90aGVyIFNUTCBpbXBsZW1lbnRhdGlvbnMuCi0vLy8KLQotI2lmbmRlZiBVVVRJTElUWV9IXzZBNThCRDI5NjI2OUE4MkE0QUFBQTRGRDE5RkRCM0FDCi0jZGVmaW5lIFVVVElMSVRZX0hfNkE1OEJEMjk2MjY5QTgyQTRBQUFBNEZEMTlGREIzQUMKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1dHlwZXMuaCIKLQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSNpbmNsdWRlIDxzdGRpby5oPgotI3VuZGVmIENQVV9IQVNfTU1YCi0jZW5kaWYKLQotbmFtZXNwYWNlIHVzdGwgewotCi0jaWZkZWYgX19HTlVDX18KLSAgICAvLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgc3RhdGljIHZlY3RvcgotICAgICNkZWZpbmUgVmVjdG9yU2l6ZSh2KQkoc2l6ZW9mKHYpIC8gc2l6ZW9mKCp2KSkKLSNlbHNlCi0gICAgLy8gT2xkIGNvbXBpbGVycyB3aWxsIG5vdCBiZSBhYmxlIHRvIGV2YWx1YXRlICp2IG9uIGFuIGVtcHR5IHZlY3Rvci4KLSAgICAvLyBUaGUgdHJhZGVvZmYgaGVyZSBpcyB0aGF0IFZlY3RvclNpemUgd2lsbCBub3QgYmUgYWJsZSB0byBtZWFzdXJlIGFycmF5cyBvZiBsb2NhbCBzdHJ1Y3RzLgotICAgICNkZWZpbmUgVmVjdG9yU2l6ZSh2KQkoc2l6ZW9mKHYpIC8gdXN0bDo6c2l6ZV9vZl9lbGVtZW50cygxLCB2KSkKLSNlbmRpZgotCi0vLy8gRXhwYW5kcyBpbnRvIGEgcHRyLHNpemUgZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIHN0YXRpYyB2ZWN0b3I7IHVzZWZ1bCBhcyBsaW5rIGFyZ3VtZW50cy4KLSNkZWZpbmUgVmVjdG9yQmxvY2sodikJKHYpKzAsIFZlY3RvclNpemUodikJLy8gKzAgbWFrZXMgaXQgd29yayB1bmRlciBnY2MgMi45NQotLy8vIEV4cGFuZHMgaW50byBhIGJlZ2luLGVuZCBleHByZXNzaW9uIGZvciB0aGUgZ2l2ZW4gc3RhdGljIHZlY3RvcjsgdXNlZnVsIGZvciBhbGdvcml0aG0gYXJndW1lbnRzLgotI2RlZmluZSBWZWN0b3JSYW5nZSh2KQlWZWN0b3JCbG9jayh2KSsodikKLQotLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBnaXZlbiB0eXBlCi0jZGVmaW5lIEJpdHNJblR5cGUodCkJKHNpemVvZih0KSAqIENIQVJfQklUKQotCi0vLy8gUmV0dXJucyB0aGUgbWFzayBvZiB0eXBlIFxwIHQgd2l0aCB0aGUgbG93ZXN0IFxwIG4gYml0cyBzZXQuCi0jZGVmaW5lIEJpdE1hc2sodCxuKQkodCh+dCgwKSkgPj4gKChzaXplb2YodCkgKiBDSEFSX0JJVCkgLSAobikpKQotCi0vLy8gQXJndW1lbnQgdGhhdCBpcyB1c2VkIG9ubHkgaW4gZGVidWcgYnVpbGRzIChhcyBpbiBhbiBhc3NlcnQpCi0jaWZuZGVmIE5ERUJVRwotICAgICNkZWZpbmUgRGVidWdBcmcoeCkJeAotI2Vsc2UKLSAgICAjZGVmaW5lIERlYnVnQXJnKHgpCi0jZW5kaWYKLQotLy8vIFNob3J0aGFuZCBmb3IgY29udGFpbmVyIGl0ZXJhdGlvbi4KLSNkZWZpbmUgZm9yZWFjaCh0eXBlLGksY3RyKQlmb3IgKHR5cGUgaSA9IChjdHIpLmJlZ2luKCk7IGkgIT0gKGN0cikuZW5kKCk7ICsrIGkpCi0vLy8gU2hvcnRoYW5kIGZvciBjb250YWluZXIgcmV2ZXJzZSBpdGVyYXRpb24uCi0jZGVmaW5lIGVhY2hmb3IodHlwZSxpLGN0cikJZm9yICh0eXBlIGkgPSAoY3RyKS5yYmVnaW4oKTsgaSAhPSAoY3RyKS5yZW5kKCk7ICsrIGkpCi0KLS8vLyBNYWNybyBmb3IgcGFzc2luZyB0ZW1wbGF0ZSB0eXBlcyBhcyBtYWNybyBhcmd1bWVudHMuCi0vLy8gXEB7Ci0jZGVmaW5lIFRFTVBMQVRFX0ZVTExfREVDTDEoZDEsdDEpCQl0ZW1wbGF0ZSA8ZDEgdDE+Ci0jZGVmaW5lIFRFTVBMQVRFX0ZVTExfREVDTDIoZDEsdDEsZDIsdDIpCXRlbXBsYXRlIDxkMSB0MSwgZDIgdDI+Ci0jZGVmaW5lIFRFTVBMQVRFX0ZVTExfREVDTDMoZDEsdDEsZDIsdDIsZDMsdDMpCXRlbXBsYXRlIDxkMSB0MSwgZDIgdDIsIGQzIHQzPgotI2RlZmluZSBURU1QTEFURV9ERUNMMSh0MSkJCVRFTVBMQVRFX0ZVTExfREVDTDEodHlwZW5hbWUsdDEpCi0jZGVmaW5lIFRFTVBMQVRFX0RFQ0wyKHQxLHQyKQkJVEVNUExBVEVfRlVMTF9ERUNMMih0eXBlbmFtZSx0MSx0eXBlbmFtZSx0MikKLSNkZWZpbmUgVEVNUExBVEVfREVDTDModDEsdDIsdDMpCVRFTVBMQVRFX0ZVTExfREVDTDModHlwZW5hbWUsdDEsdHlwZW5hbWUsdDIsdHlwZW5hbWUsdDMpCi0jZGVmaW5lIFRFTVBMQVRFX1RZUEUxKHR5cGUsYTEpCQl0eXBlPGExPgotI2RlZmluZSBURU1QTEFURV9UWVBFMih0eXBlLGExLGEyKQl0eXBlPGExLGEyPgotI2RlZmluZSBURU1QTEFURV9UWVBFMyh0eXBlLGExLGEyLGEzKQl0eXBlPGExLGEyLGEzPgotLy8vIFxAfQotCi0vLy8gUmV0dXJucyB0aGUgbWluaW11bSBvZiBccCBhIGFuZCBccCBiCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGNvbnN0IFQxIG1pbiAoY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKQotewotICAgIHJldHVybiAoYSA8IGIgPyBhIDogYik7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG9mIFxwIGEgYW5kIFxwIGIKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgY29uc3QgVDEgbWF4IChjb25zdCBUMSYgYSwgY29uc3QgVDImIGIpCi17Ci0gICAgcmV0dXJuIChiIDwgYSA/IGEgOiBiKTsKLX0KLQotLy8vIFxicmllZiBEaXZpZGVzIFxwIG4xIGJ5IFxwIG4yIGFuZCByb3VuZHMgdGhlIHJlc3VsdCB1cC4KLS8vLyBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIHJlZ3VsYXIgZGl2aXNpb24sIHdoaWNoIHJvdW5kcyBkb3duLgotLy8vIE5lZ2F0aXZlIG51bWJlcnMgYXJlIHJvdW5kZWQgZG93biBiZWNhdXNlIHRoZXkgYXJlIGFuIHVudXN1YWwgY2FzZSwgc3VwcG9ydGluZwotLy8vIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSBicmFuY2guIFNpbmNlIHRoaXMgaXMgZnJlcXVlbnRseSB1c2VkIGluIGdyYXBoaWNzLCB0aGUKLS8vLyBzcGVlZCBpcyBpbXBvcnRhbnQuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgVDEgRGl2UlUgKFQxIG4xLCBUMiBuMikKLXsKLSAgICByZXR1cm4gKG4xIC8gbjIgKyAobjEgJSBuMiA+IDApKTsKLX0KLQotLy8vIFRoZSBhbGlnbm1lbnQgcGVyZm9ybWVkIGJ5IGRlZmF1bHQuCi1jb25zdCBzaXplX3QgY19EZWZhdWx0QWxpZ25tZW50ID0gX19hbGlnbm9mX18odm9pZCopOwotCi0vLy8gXGJyaWVmIFJvdW5kcyBccCBuIHVwIHRvIGJlIGRpdmlzaWJsZSBieSBccCBncmFpbgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBBbGlnbiAoVCBuLCBzaXplX3QgZ3JhaW4gPSBjX0RlZmF1bHRBbGlnbm1lbnQpCi17Ci0gICAgVCBhLCByID0gbiAlIGdyYWluOwotICAgIGlmIChncmFpbiA9PSAyKSByZXR1cm4gKG4gKyByKTsKLSAgICBzd2l0Y2ggKGdyYWluKSB7Ci0JY2FzZSA0OiBjYXNlIDg6IGNhc2UgMTY6IGEgPSAobiAmIH4oZ3JhaW4gLSAxKSkgKyBncmFpbjsgYnJlYWs7Ci0JZGVmYXVsdDoJCSBhID0gbiArIChncmFpbiAtIHIpOwotICAgIH07Ci0gICAgcmV0dXJuIChyID8gYSA6IG4pOwotfQotCi0vLy8gT2Zmc2V0cyBhbiBpdGVyYXRvcgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBhZHZhbmNlIChUIGksIHNzaXplX3Qgb2Zmc2V0KQotewotICAgIHJldHVybiAoaSArIG9mZnNldCk7Ci19Ci0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0vLy8gT2Zmc2V0cyBhIHZvaWQgcG9pbnRlcgotdGVtcGxhdGUgPD4KLWlubGluZSBjb25zdCB2b2lkKiBhZHZhbmNlIChjb25zdCB2b2lkKiBwLCBzc2l6ZV90IG9mZnNldCkKLXsKLSAgICBhc3NlcnQgKHAgfHwgIW9mZnNldCk7Ci0gICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwKSArIG9mZnNldCk7Ci19Ci0KLS8vLyBPZmZzZXRzIGEgdm9pZCBwb2ludGVyCi10ZW1wbGF0ZSA8PgotaW5saW5lIHZvaWQqIGFkdmFuY2UgKHZvaWQqIHAsIHNzaXplX3Qgb2Zmc2V0KQotewotICAgIGFzc2VydCAocCB8fCAhb2Zmc2V0KTsKLSAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHApICsgb2Zmc2V0KTsKLX0KLSNlbmRpZgotCi0vLy8gUmV0dXJucyB0aGUgZGlmZmVyZW5jZSBccCBwMSAtIFxwIHAyCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIHB0cmRpZmZfdCBkaXN0YW5jZSAoVDEgaTEsIFQyIGkyKQotewotICAgIHJldHVybiAoaTIgLSBpMSk7Ci19Ci0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0jZGVmaW5lIFVOVk9JRF9ESVNUQU5DRShUMWNvbnN0LFQyY29uc3QpCQkJCSAgIFwKLXRlbXBsYXRlIDw+IGlubGluZSBwdHJkaWZmX3QgZGlzdGFuY2UgKFQxY29uc3Qgdm9pZCogcDEsIFQyY29uc3Qgdm9pZCogcDIpIFwKLXsgcmV0dXJuICgoVDJjb25zdCB1aW50OF90KikocDIpIC0gKFQxY29uc3QgdWludDhfdCopKHAxKSk7IH0KLVVOVk9JRF9ESVNUQU5DRSgsKQotVU5WT0lEX0RJU1RBTkNFKGNvbnN0LGNvbnN0KQotVU5WT0lEX0RJU1RBTkNFKCxjb25zdCkKLVVOVk9JRF9ESVNUQU5DRShjb25zdCwpCi0jdW5kZWYgVU5WT0lEX0RJU1RBTkNFCi0jZW5kaWYKLQotLy8vIFxicmllZiBSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBccCB2Ci0vLy8gVW5saWtlIHRoZSBzdGRsaWIgZnVuY3Rpb25zLCB0aGlzIGlzIGlubGluZSBhbmQgd29ya3Mgd2l0aCBhbGwgdHlwZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUIGFic3YgKFQgdikKLXsKLSAgICByZXR1cm4gKHYgPCAwID8gLXYgOiB2KTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIC0xIGZvciBuZWdhdGl2ZSB2YWx1ZXMsIDEgZm9yIHBvc2l0aXZlLCBhbmQgMCBmb3IgMAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBzaWduIChUIHYpCi17Ci0gICAgcmV0dXJuICgoMCA8IHYpIC0gKHYgPCAwKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZGlzdGFuY2UgaTEgYW5kIGkyCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIHNpemVfdCBhYnNfZGlzdGFuY2UgKFQxIGkxLCBUMiBpMikKLXsKLSAgICByZXR1cm4gKGFic3YgKGRpc3RhbmNlKGkxLCBpMikpKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIHNpemUgb2YgXHAgbiBlbGVtZW50cyBvZiBzaXplIFxwIFQKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHNpemVfdCBzaXplX29mX2VsZW1lbnRzIChzaXplX3QgbiwgY29uc3QgVCopCi17Ci0gICAgcmV0dXJuIChuICogc2l6ZW9mKFQpKTsKLX0KLQotLy8gRGVmaW5lZCBpbiBieXRlc3dhcC5oLCB3aGljaCBpcyB1c3VhbGx5IHVudXNhYmxlLgotI3VuZGVmIGJzd2FwXzE2Ci0jdW5kZWYgYnN3YXBfMzIKLSN1bmRlZiBic3dhcF82NAotCi0jaWYgQ1BVX0hBU19DTVBYQ0hHOAkvLyBJZiBpdCBoYXMgdGhhdCwgaXQgaGFzIGJzd2FwLgotaW5saW5lIHVpbnQxNl90IGJzd2FwXzE2ICh1aW50MTZfdCB2KQl7IGFzbSAoInJvcncgJDgsICV3MCIgOiAiPXIiKHYpIDogIjAiKHYpIDogImNjIik7IHJldHVybiAodik7IH0KLWlubGluZSB1aW50MzJfdCBic3dhcF8zMiAodWludDMyX3QgdikJeyBhc20gKCJic3dhcCAlMCIgOiAiPXIiKHYpIDogIjAiKHYpKTsgcmV0dXJuICh2KTsgfQotI2Vsc2UKLWlubGluZSB1aW50MTZfdCBic3dhcF8xNiAodWludDE2X3QgdikJeyByZXR1cm4gKHYgPDwgOCB8IHYgPj4gOCk7IH0KLWlubGluZSB1aW50MzJfdCBic3dhcF8zMiAodWludDMyX3QgdikJeyByZXR1cm4gKHYgPDwgMjQgfCAodiAmIDB4RkYwMCkgPDwgOCB8ICh2ID4+IDgpICYgMHhGRjAwIHwgdiA+PiAyNCk7IH0KLSNlbmRpZgotI2lmIEhBVkVfSU5UNjRfVAotaW5saW5lIHVpbnQ2NF90IGJzd2FwXzY0ICh1aW50NjRfdCB2KQl7IHJldHVybiAoKHVpbnQ2NF90KGJzd2FwXzMyKHYpKSA8PCAzMikgfCBic3dhcF8zMih2ID4+IDMyKSk7IH0KLSNlbmRpZgotCi0vLy8gXGJyaWVmIFN3YXBzIHRoZSBieXRlb3JkZXIgb2YgXHAgdi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQgYnN3YXAgKGNvbnN0IFQmIHYpCi17Ci0gICAgc3dpdGNoIChCaXRzSW5UeXBlKFQpKSB7Ci0JZGVmYXVsdDoJcmV0dXJuICh2KTsKLQljYXNlIDE2OglyZXR1cm4gKFQgKGJzd2FwXzE2ICh1aW50MTZfdCAodikpKSk7Ci0JY2FzZSAzMjoJcmV0dXJuIChUIChic3dhcF8zMiAodWludDMyX3QgKHYpKSkpOwotI2lmIEhBVkVfSU5UNjRfVAotCWNhc2UgNjQ6CXJldHVybiAoVCAoYnN3YXBfNjQgKHVpbnQ2NF90ICh2KSkpKTsKLSNlbmRpZgotICAgIH07Ci19Ci0KLSNpZiBVU1RMX0JZVEVfT1JERVIgPT0gVVNUTF9CSUdfRU5ESUFOCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQgbGVfdG9fbmF0aXZlIChjb25zdCBUJiB2KSB7IHJldHVybiAoYnN3YXAgKHYpKTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIGJlX3RvX25hdGl2ZSAoY29uc3QgVCYgdikgeyByZXR1cm4gKHYpOyB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQgbmF0aXZlX3RvX2xlIChjb25zdCBUJiB2KSB7IHJldHVybiAoYnN3YXAgKHYpKTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIG5hdGl2ZV90b19iZSAoY29uc3QgVCYgdikgeyByZXR1cm4gKHYpOyB9Ci0jZWxpZiBVU1RMX0JZVEVfT1JERVIgPT0gVVNUTF9MSVRUTEVfRU5ESUFOCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQgbGVfdG9fbmF0aXZlIChjb25zdCBUJiB2KSB7IHJldHVybiAodik7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCBiZV90b19uYXRpdmUgKGNvbnN0IFQmIHYpIHsgcmV0dXJuIChic3dhcCAodikpOyB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQgbmF0aXZlX3RvX2xlIChjb25zdCBUJiB2KSB7IHJldHVybiAodik7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCBuYXRpdmVfdG9fYmUgKGNvbnN0IFQmIHYpIHsgcmV0dXJuIChic3dhcCAodikpOyB9Ci0jZW5kaWYgLy8gVVNUTF9CWVRFX09SREVSCi0KLS8vLyBEZWxldGVzIFxwIHAgYW5kIHNldHMgaXQgdG8gTlVMTAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBEZWxldGUgKFQqJiBwKQotewotICAgIGRlbGV0ZSBwOwotICAgIHAgPSBOVUxMOwotfQotCi0vLy8gRGVsZXRlcyBccCBwIGFzIGFuIGFycmF5IGFuZCBzZXRzIGl0IHRvIE5VTEwKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgRGVsZXRlVmVjdG9yIChUKiYgcCkKLXsKLSAgICBkZWxldGUgW10gcDsKLSAgICBwID0gTlVMTDsKLX0KLQotLy8vIFRlbXBsYXRlIG9mIG1ha2luZyAhPSBmcm9tICEgYW5kID09Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIG9wZXJhdG9yIT0gKGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi17Ci0gICAgcmV0dXJuICghKHggPT0geSkpOwotfQotCi0vLy8gVGVtcGxhdGUgb2YgbWFraW5nID4gZnJvbSA8Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIG9wZXJhdG9yPiAoY29uc3QgVCYgeCwgY29uc3QgVCYgeSkKLXsKLSAgICByZXR1cm4gKHkgPCB4KTsKLX0KLQotLy8vIFRlbXBsYXRlIG9mIG1ha2luZyA8PSBmcm9tIDwgYW5kID09Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIG9wZXJhdG9yPD0gKGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi17Ci0gICAgcmV0dXJuICghKHkgPCB4KSk7Ci19Ci0KLS8vLyBUZW1wbGF0ZSBvZiBtYWtpbmcgPj0gZnJvbSA8IGFuZCA9PQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj49IChjb25zdCBUJiB4LCBjb25zdCBUJiB5KQotewotICAgIHJldHVybiAoISh4IDwgeSkpOwotfQotCi0vLy8gUGFja3MgXHAgcyBtdWx0aXBsZSB0aW1lcyBpbnRvIFxwIGIuIFVzZWZ1bCBmb3IgbG9vcCB1bnJvbGxpbmcuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVFNtYWxsLCB0eXBlbmFtZSBUQmlnPgotaW5saW5lIHZvaWQgcGFja190eXBlIChUU21hbGwgcywgVEJpZyYgYikKLXsKLSAgICBjb25zdCBzaXplX3QgbiA9IHNpemVvZihUQmlnKSAvIHNpemVvZihUU21hbGwpOwotICAgIGIgPSBzOwotICAgIC8vIENhbGxzIHRvIG1pbiBhcmUgaGVyZSB0byBhdm9pZCB3YXJuaW5ncyBmb3Igc2hpZnRzIGJpZ2dlciB0aGFuIHRoZSB0eXBlLiBtaW4gd2lsbCBiZSBnb25lIHdoZW4gb3B0aW1pemVkLgotICAgIGlmIChuIDwgMikgcmV0dXJuOwotICAgIGIgPSAoYiA8PCBtaW4gKEJpdHNJblR5cGUoVFNtYWxsKSwgQml0c0luVHlwZShUQmlnKSkpIHwgYjsKLSAgICBpZiAobiA8IDQpIHJldHVybjsKLSAgICBiID0gKGIgPDwgbWluIChCaXRzSW5UeXBlKFRTbWFsbCkgKiAyLCBCaXRzSW5UeXBlKFRCaWcpKSkgfCBiOwotICAgIGlmIChuIDwgOCkgcmV0dXJuOwotICAgIGIgPSAoYiA8PCBtaW4gKEJpdHNJblR5cGUoVFNtYWxsKSAqIDQsIEJpdHNJblR5cGUoVEJpZykpKSB8IGI7Ci19Ci0KLSNpZiBfX0dOVUNfXyA+PSAzCi1pbmxpbmUgYm9vbCBUZXN0QW5kU2V0IChpbnQqIHBtKSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSk7Ci0jZW5kaWYKLS8vLyBTZXRzIHRoZSBjb250ZW50cyBvZiBccCBwbSB0byAxIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIHByZXZpb3VzIHZhbHVlIHdhcyAwLgotaW5saW5lIGJvb2wgVGVzdEFuZFNldCAoaW50KiBwbSkKLXsKLSNpZiBDUFVfSEFTX0NNUFhDSEc4Ci0gICAgYm9vbCBydjsKLSAgICBpbnQgb2xkVmFsICgxKTsKLSAgICBhc20gdm9sYXRpbGUgKCAvLyBjbXB4Y2hnIGNvbXBhcmVzIHRvICVlYXggYW5kIHN3YXBzIGlmIGVxdWFsCi0JImNtcHhjaGdsICUzLCAlMVxuXHQiCi0JInNldGUgJTAiCi0JOiAiPWEiIChydiksICI9bSIgKCpwbSksICI9ciIgKG9sZFZhbCkKLQk6ICIyIiAob2xkVmFsKSwgImEiICgwKQotCTogIm1lbW9yeSIpOwotICAgIHJldHVybiAocnYpOwotI2VsaWYgX19pMzg2X18gfHwgX194ODZfNjRfXwotICAgIGludCBvbGRWYWwgKDEpOwotICAgIGFzbSB2b2xhdGlsZSAoInhjaGdsICUwLCAlMSIgOiAiPXIiKG9sZFZhbCksICI9bSIoKnBtKSA6ICIwIihvbGRWYWwpLCAibSIoKnBtKSA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gKCFvbGRWYWwpOwotI2VsaWYgX19zcGFyYzMyX18JLy8gVGhpcyBoYXMgbm90IGJlZW4gdGVzdGVkCi0gICAgaW50IHJ2OwotICAgIGFzbSB2b2xhdGlsZSAoImxkc3R1YiAlMSwgJTAiIDogIj1yIihydiksICI9bSIoKnBtKSA6ICJtIihwbSkpOwotICAgIHJldHVybiAoIXJ2KTsKLSNlbHNlCi0gICAgY29uc3QgaW50IG9sZFZhbCAoKnBtKTsKLSAgICAqcG0gPSAxOwotICAgIHJldHVybiAoIW9sZFZhbCk7Ci0jZW5kaWYKLX0KLQotLy8vIFxicmllZiBUaGlzIHRlbXBsYXRlIGlzIHRvIGJlIHVzZWQgZm9yIGRlcmVmZXJlbmNpbmcgYSB0eXBlLXB1bm5lZCBwb2ludGVyIHdpdGhvdXQgYSB3YXJuaW5nLgotLy8vCi0vLy8gV2hlbiBjYXN0aW5nIGEgbG9jYWwgdmFyaWFibGUgdG8gYW4gdW5yZWxhdGVkIHR5cGUgdGhyb3VnaCBhIHBvaW50ZXIgKGZvcgotLy8vIGV4YW1wbGUsIGNhc3RpbmcgYSBmbG9hdCB0byBhIHVpbnQzMl90IHdpdGhvdXQgY29udmVyc2lvbiksIHRoZSByZXN1bHRpbmcKLS8vLyBtZW1vcnkgbG9jYXRpb24gY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggZWl0aGVyIHBvaW50ZXIsIHdoaWNoIHZpb2xhdGVzIHRoZQotLy8vIHN0cmljdCBhbGlhc2luZyBydWxlLiBXaGlsZSAtZm5vLXN0cmljdC1hbGlhc2luZyBvcHRpb24gY2FuIGJlIGdpdmVuIHRvCi0vLy8gdGhlIGNvbXBpbGVyLCBlbGltaW5hdGluZyB0aGlzIHdhcm5pbmcsIGluZWZmaWNpZW50IGNvZGUgbWF5IHJlc3VsdCBpbgotLy8vIHNvbWUgaW5zdGFuY2VzLCBiZWNhdXNlIGFsaWFzaW5nIGluaGliaXRzIHNvbWUgb3B0aW1pemF0aW9ucy4gQnkgdXNpbmcKLS8vLyB0aGlzIHRlbXBsYXRlLCBhbmQgYnkgZW5zdXJpbmcgdGhlIG1lbW9yeSBpcyBhY2Nlc3NlZCBpbiBvbmUgd2F5IG9ubHksCi0vLy8gZWZmaWNpZW50IGNvZGUgY2FuIGJlIHByb2R1Y2VkIHdpdGhvdXQgdGhlIHdhcm5pbmcuIEZvciBnY2MgNC4xLjArLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgREVTVCwgdHlwZW5hbWUgU1JDPgotaW5saW5lIERFU1Qgbm9hbGlhcyAoREVTVCwgU1JDKiBzKQotewotICAgIHVuaW9uIFVQdW4geyBTUkMgczsgREVTVCBkOyB9OwotICAgIHJldHVybiAoKChVUHVuKikocykpLT5kKTsKLX0KLQotbmFtZXNwYWNlIHNpbWQgewotICAgIC8vLyBDYWxsIGFmdGVyIHlvdSBhcmUgZG9uZSB1c2luZyBTSU1EIGFsZ29yaXRobXMgZm9yIDY0IGJpdCB0dXBsZXMuCi0jaWYgQ1BVX0hBU19NTVgKLSAgICBpbmxpbmUgdm9pZCByZXNldF9tbXggKHZvaWQpIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKTsKLSAgICAjZGVmaW5lIEFMTF9NTVhfUkVHU19DSEFOR0VMSVNUICJtbTAiLCJtbTEiLCJtbTIiLCJtbTMiLCJtbTQiLCJtbTUiLCJtbTYiLCJtbTciLCJzdCIsInN0KDEpIiwic3QoMikiLCJzdCgzKSIsInN0KDQpIiwic3QoNSkiLCJzdCg2KSIsInN0KDcpIgotICAgICNpZiBDUFVfSEFTXzNETk9XCi0JaW5saW5lIHZvaWQgcmVzZXRfbW14ICh2b2lkKSB7IGFzbSAoImZlbW1zIjo6OkFMTF9NTVhfUkVHU19DSEFOR0VMSVNUKTsgfQotICAgICNlbHNlCi0JaW5saW5lIHZvaWQgcmVzZXRfbW14ICh2b2lkKSB7IGFzbSAoImVtbXMiOjo6QUxMX01NWF9SRUdTX0NIQU5HRUxJU1QpOyB9Ci0gICAgI2VuZGlmCi0jZWxzZQotICAgIGlubGluZSB2b2lkIHJlc2V0X21teCAodm9pZCkge30KLSNlbmRpZgotfSAvLyBuYW1lc3BhY2Ugc2ltZAotCi0vLy8gXGJyaWVmIFR5cGUgdGhhdCBpcyBub3Qgc2l6ZV90Ci0vLy8KLS8vLyBCZWNhdXNlIHNpemVfdCBtYXkgYmUgZGVjbGFyZWQgYXMgdW5zaWduZWQgbG9uZyBvciB1bnNpZ25lZCBpbnQgb24KLS8vLyBkaWZmZXJlbnQgbWFjaGluZXMsIHRoaXMgbWFjcm8gaXMgY29udmVuaWVudCB3aGVuIGRlZmluaW5nIG92ZXJsb2FkcwotLy8vIG9mIHNpemVfdCB0byB1c2Ugb3RoZXIgdHlwZXMuCi0vLy8KLSNpZiBkZWZpbmVkKFNJWkVfVF9JU19MT05HKSAmJiAhZGVmaW5lZChfX0FSTV9FQUJJX18pCi0gICAgICNkZWZpbmUgTk9UX1NJWkVfVF9JX09SX0wJdW5zaWduZWQgaW50Ci0jZWxzZQotICAgICNkZWZpbmUgTk9UX1NJWkVfVF9JX09SX0wJdW5zaWduZWQgbG9uZwotI2VuZGlmCi0KLS8vLyBcYnJpZWYgUmVxdWlyZWQgd2hlbiB5b3Ugd2FudCB0byBvdmVybG9hZCBzaXplX3QgYW5kIGEgcG9pbnRlci4KLS8vLwotLy8vIFRoZSBjb21waWxlciB3aWxsIGhhcHBpbHkgY2FzdCBhIG51bWJlciB0byBhIHBvaW50ZXIgYW5kIGRlY2xhcmUKLS8vLyB0aGF0IHRoZSBvdmVybG9hZCBpcyBhbWJpZ3VvdXMgdW5sZXNzIHlvdSBkZWZpbmUgb3ZlcmxvYWRzIGZvciBhbGwKLS8vLyBwb3NzaWJsZSBpbnRlZ3JhbCB0eXBlcyB0aGF0IGEgbnVtYmVyIG1heSByZXByZXNlbnQuIFRoaXMgYmVoYXZpb3VyLAotLy8vIGFsdGhvdWdoIGJyYWluZGVhZCwgaXMgaW4gdGhlIEFOU0kgc3RhbmRhcmQsIGFuZCB0aHVzIG5vdCBhIGJ1Zy4gSWYKLS8vLyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIHN0YW5kYXJkLCB0aGUgYmVzdCBzb2x1dGlvbiBpcyB0byBkaXNhbGxvdyBhbnkKLS8vLyBpbXBsaWNpdCBjYXN0cyB0byBwb2ludGVyIGZyb20gYW4gaW50ZWdyYWwgdHlwZS4gSXJvbmljYWxseSwgc3VjaCBhbgotLy8vIGltcGxpY2l0IGNhc3QgaXMgYWxyZWFkeSBkZXRlY3RlZCBieSBnY2MuCi0vLy8KLSNpZiBkZWZpbmVkKFVTVExfQU5EUk9JRF9YODYpCi0jZGVmaW5lIE9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihuYW1lLCBhcmcxdHlwZSkKLSNlbHNlCi0jZGVmaW5lIE9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihuYW1lLCBhcmcxdHlwZSkJCQkJCQlcCi0gICAgaW5saW5lIHZvaWQJbmFtZSAoYXJnMXR5cGUgYTEsIHNob3J0IGEyKQkJCXsgbmFtZSAoYTEsIHNpemVfdChhMikpOyB9CVwKLSAgICBpbmxpbmUgdm9pZAluYW1lIChhcmcxdHlwZSBhMSwgdW5zaWduZWQgc2hvcnQgYTIpCQl7IG5hbWUgKGExLCBzaXplX3QoYTIpKTsgfQlcCi0gICAgaW5saW5lIHZvaWQJbmFtZSAoYXJnMXR5cGUgYTEsIGludCBhMikJCQl7IG5hbWUgKGExLCBzaXplX3QoYTIpKTsgfQlcCi0gICAgaW5saW5lIHZvaWQJbmFtZSAoYXJnMXR5cGUgYTEsIGxvbmcgYTIpCQkJeyBuYW1lIChhMSwgc2l6ZV90KGEyKSk7IH0JXAotICAgIGlubGluZSB2b2lkCW5hbWUgKGFyZzF0eXBlIGExLCBOT1RfU0laRV9UX0lfT1JfTCBhMikJeyBuYW1lIChhMSwgc2l6ZV90KGEyKSk7IH0KLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dmVjdG9yLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dmVjdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYmM0NWIuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXZlY3Rvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1dmVjdG9yLmgKLS8vCi0KLSNpZm5kZWYgVVZFQ1RPUl9IXzAwQkIxM0FGMDgyQkVCNzgyOUMwMzFCMjY1NTE4MTY5Ci0jZGVmaW5lIFVWRUNUT1JfSF8wMEJCMTNBRjA4MkJFQjc4MjlDMDMxQjI2NTUxODE2OQotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgIm1lbWJsb2NrLmgiCi0jaW5jbHVkZSAidW1lbW9yeS5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgdmVjdG9yIHV2ZWN0b3IuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBTZXF1ZW5jZXMKLS8vLwotLy8vIFxicmllZiBTVEwgdmVjdG9yIGVxdWl2YWxlbnQuCi0vLy8KLS8vLyBQcm92aWRlcyBhIHR5cGVkIGFycmF5LWxpa2UgaW50ZXJmYWNlIHRvIGEgbWFuYWdlZCBtZW1vcnkgYmxvY2ssIGluY2x1ZGluZwotLy8vIGVsZW1lbnQgYWNjZXNzLCBpdGVyYXRpb24sIG1vZGlmaWNhdGlvbiwgcmVzaXppbmcsIGFuZCBzZXJpYWxpemF0aW9uLiBJbgotLy8vIHRoaXMgZGVzaWduIGVsZW1lbnRzIGZyZXF1ZW50bHkgdW5kZXJnbyBiaXR3aXNlIG1vdmUsIHNvIGRvbid0IHB1dCBpdCBpbgotLy8vIGhlcmUgaWYgaXQgZG9lc24ndCBzdXBwb3J0IGl0LiBUaGlzIG1vc3RseSBtZWFucyBoYXZpbmcgbm8gc2VsZi1wb2ludGVycy4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyB2ZWN0b3IgewotcHVibGljOgotICAgIHR5cGVkZWYgVAkJCQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSoJCQlwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSoJCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlJgkJCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmCQljb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBwb2ludGVyCQkJaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBjb25zdF9wb2ludGVyCQljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIG1lbWJsb2NrOjpzaXplX3R5cGUJCXNpemVfdHlwZTsKLSAgICB0eXBlZGVmIG1lbWJsb2NrOjp3cml0dGVuX3NpemVfdHlwZQl3cml0dGVuX3NpemVfdHlwZTsKLSAgICB0eXBlZGVmIG1lbWJsb2NrOjpkaWZmZXJlbmNlX3R5cGUJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgOjp1c3RsOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPglyZXZlcnNlX2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgOjp1c3RsOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPgljb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotcHVibGljOgotICAgIGlubGluZQkJCXZlY3RvciAodm9pZCk7Ci0gICAgaW5saW5lIGV4cGxpY2l0CQl2ZWN0b3IgKHNpemVfdHlwZSBuKTsKLQkJCQl2ZWN0b3IgKHNpemVfdHlwZSBuLCBjb25zdCBUJiB2KTsKLQkJCQl2ZWN0b3IgKGNvbnN0IHZlY3RvcjxUPiYgdik7Ci0JCQkJdmVjdG9yIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpOwotCQkJICAgICAgIH52ZWN0b3IgKHZvaWQpIHRocm93KCk7Ci0gICAgaW5saW5lIGNvbnN0IHZlY3RvcjxUPiYJb3BlcmF0b3I9IChjb25zdCB2ZWN0b3I8VD4mIHYpOwotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3QgdmVjdG9yPFQ+JiB2KQl7IHJldHVybiAobV9EYXRhID09IHYubV9EYXRhKTsgfQotICAgIGlubGluZQkJCW9wZXJhdG9yIGNtZW1saW5rICh2b2lkKSBjb25zdAl7IHJldHVybiAoY21lbWxpbmsgKG1fRGF0YSkpOyB9Ci0gICAgaW5saW5lCQkJb3BlcmF0b3IgY21lbWxpbmsgKHZvaWQpCXsgcmV0dXJuIChjbWVtbGluayAobV9EYXRhKSk7IH0KLSAgICBpbmxpbmUJCQlvcGVyYXRvciBtZW1saW5rICh2b2lkKQkJeyByZXR1cm4gKG1lbWxpbmsgKG1fRGF0YSkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlyZXNlcnZlIChzaXplX3R5cGUgbiwgYm9vbCBiRXhhY3QgPSB0cnVlKTsKLSAgICBpbmxpbmUgdm9pZAkJCXJlc2l6ZSAoc2l6ZV90eXBlIG4sIGJvb2wgYkV4YWN0ID0gdHJ1ZSk7Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJY2FwYWNpdHkgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9EYXRhLmNhcGFjaXR5KCkgLyBzaXplb2YoVCkpOwl9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX0RhdGEuc2l6ZSgpIC8gc2l6ZW9mKFQpKTsJCX0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQltYXhfc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX0RhdGEubWF4X3NpemUoKSAvIHNpemVvZihUKSk7CX0KLSAgICBpbmxpbmUgYm9vbAkJCWVtcHR5ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fRGF0YS5lbXB0eSgpKTsJCQl9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQliZWdpbiAodm9pZCkJCQl7IHJldHVybiAoaXRlcmF0b3IgKG1fRGF0YS5iZWdpbigpKSk7CQl9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGNvbnN0X2l0ZXJhdG9yIChtX0RhdGEuYmVnaW4oKSkpOwl9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllbmQgKHZvaWQpCQkJeyByZXR1cm4gKGl0ZXJhdG9yIChtX0RhdGEuZW5kKCkpKTsJCX0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGNvbnN0X2l0ZXJhdG9yIChtX0RhdGEuZW5kKCkpKTsJfQotICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yCQlyYmVnaW4gKHZvaWQpCQl7IHJldHVybiAocmV2ZXJzZV9pdGVyYXRvciAoZW5kKCkpKTsJCX0KLSAgICBpbmxpbmUgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcglyYmVnaW4gKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIChlbmQoKSkpOwl9Ci0gICAgaW5saW5lIHJldmVyc2VfaXRlcmF0b3IJCXJlbmQgKHZvaWQpCQl7IHJldHVybiAocmV2ZXJzZV9pdGVyYXRvciAoYmVnaW4oKSkpOwkJfQotICAgIGlubGluZSBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCXJlbmQgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIChiZWdpbigpKSk7CX0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWlhdCAoc2l6ZV90eXBlIGkpCQl7IGFzc2VydCAoaSA8PSBzaXplKCkpOyByZXR1cm4gKGJlZ2luKCkgKyBpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcglpYXQgKHNpemVfdHlwZSBpKSBjb25zdAkJeyBhc3NlcnQgKGkgPD0gc2l6ZSgpKTsgcmV0dXJuIChiZWdpbigpICsgaSk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCQlhdCAoc2l6ZV90eXBlIGkpCQl7IGFzc2VydCAoaSA8IHNpemUoKSk7IHJldHVybiAoYmVnaW4oKVtpXSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCWF0IChzaXplX3R5cGUgaSkgY29uc3QJCXsgYXNzZXJ0IChpIDwgc2l6ZSgpKTsgcmV0dXJuIChiZWdpbigpW2ldKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCW9wZXJhdG9yW10gKHNpemVfdHlwZSBpKQl7IHJldHVybiAoYXQgKGkpKTsgfQotICAgIGlubGluZSBjb25zdF9yZWZlcmVuY2UJb3BlcmF0b3JbXSAoc2l6ZV90eXBlIGkpIGNvbnN0CXsgcmV0dXJuIChhdCAoaSkpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJZnJvbnQgKHZvaWQpCQkJeyByZXR1cm4gKGF0KDApKTsgfQotICAgIGlubGluZSBjb25zdF9yZWZlcmVuY2UJZnJvbnQgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoYXQoMCkpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJYmFjayAodm9pZCkJCQl7IGFzc2VydCAoIWVtcHR5KCkpOyByZXR1cm4gKGVuZCgpWy0xXSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCWJhY2sgKHZvaWQpIGNvbnN0CQl7IGFzc2VydCAoIWVtcHR5KCkpOyByZXR1cm4gKGVuZCgpWy0xXSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXB1c2hfYmFjayAoY29uc3QgVCYgdiA9IFQoKSk7Ci0gICAgaW5saW5lIHZvaWQJCQlwb3BfYmFjayAodm9pZCkJCQl7IG1fRGF0YS5tZW1saW5rOjpyZXNpemUgKG1fRGF0YS5zaXplKCkgLSBzaXplb2YoVCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQljbGVhciAodm9pZCkJCQl7IG1fRGF0YS5jbGVhcigpOyB9Ci0gICAgdm9pZAkJCWRlYWxsb2NhdGUgKHZvaWQpIHRocm93KCk7Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMik7Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKHNpemVfdHlwZSBuLCBjb25zdCBUJiB2KTsKLSAgICBpbmxpbmUgdm9pZAkJCXN3YXAgKHZlY3RvcjxUPiYgdikJCXsgbV9EYXRhLnN3YXAgKHYubV9EYXRhKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJaW5zZXJ0IChpdGVyYXRvciBpcCwgY29uc3QgVCYgdiA9IFQoKSk7Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQlpbnNlcnQgKGl0ZXJhdG9yIGlwLCBzaXplX3R5cGUgbiwgY29uc3QgVCYgdik7Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQlpbnNlcnQgKGl0ZXJhdG9yIGlwLCBjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpOwotICAgIGlubGluZSBpdGVyYXRvcgkJZXJhc2UgKGl0ZXJhdG9yIGVwLCBzaXplX3R5cGUgbiA9IDEpOwotICAgIGlubGluZSBpdGVyYXRvcgkJZXJhc2UgKGl0ZXJhdG9yIGVwMSwgaXRlcmF0b3IgZXAyKTsKLSAgICBpbmxpbmUgdm9pZAkJCW1hbmFnZSAocG9pbnRlciBwLCBzaXplX3R5cGUgbikJCXsgbV9EYXRhLm1hbmFnZSAocCwgbiAqIHNpemVvZihUKSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCWlzX2xpbmtlZCAodm9pZCkgY29uc3QJCQl7IHJldHVybiAobV9EYXRhLmlzX2xpbmtlZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJdW5saW5rICh2b2lkKQkJCQl7IG1fRGF0YS51bmxpbmsoKTsgfQotICAgIGlubGluZSB2b2lkCQkJY29weV9saW5rICh2b2lkKQkJCXsgbV9EYXRhLmNvcHlfbGluaygpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlsaW5rIChjb25zdF9wb2ludGVyIHAsIHNpemVfdHlwZSBuKQl7IG1fRGF0YS5saW5rIChwLCBuICogc2l6ZW9mKFQpKTsgfQotICAgIGlubGluZSB2b2lkCQkJbGluayAocG9pbnRlciBwLCBzaXplX3R5cGUgbikJCXsgbV9EYXRhLmxpbmsgKHAsIG4gKiBzaXplb2YoVCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlsaW5rIChjb25zdCB2ZWN0b3I8VD4mIHYpCQl7IG1fRGF0YS5saW5rICh2KTsgfQotICAgIGlubGluZSB2b2lkCQkJbGluayAodmVjdG9yPFQ+JiB2KQkJCXsgbV9EYXRhLmxpbmsgKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlsaW5rIChjb25zdF9wb2ludGVyIGZpcnN0LCBjb25zdF9wb2ludGVyIGxhc3QpCXsgbV9EYXRhLmxpbmsgKGZpcnN0LCBsYXN0KTsgfQotICAgIGlubGluZSB2b2lkCQkJbGluayAocG9pbnRlciBmaXJzdCwgcG9pbnRlciBsYXN0KQkJeyBtX0RhdGEubGluayAoZmlyc3QsIGxhc3QpOyB9Ci0JCQkJT1ZFUkxPQURfUE9JTlRFUl9BTkRfU0laRV9UX1YyKGxpbmssIHBvaW50ZXIpCi0JCQkJT1ZFUkxPQURfUE9JTlRFUl9BTkRfU0laRV9UX1YyKGxpbmssIGNvbnN0X3BvaW50ZXIpCi1wcml2YXRlOgotICAgIGlubGluZSBpdGVyYXRvcgkJaW5zZXJ0X3NwYWNlIChpdGVyYXRvciBpcCwgc2l6ZV90eXBlIG4pOwotcHJpdmF0ZToKLSAgICBtZW1ibG9jawkJCW1fRGF0YTsJLy8vPCBSYXcgZWxlbWVudCBkYXRhLCBjb25zZWN1dGl2ZWx5IHN0b3JlZC4KLX07Ci0KLS8vLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIGF0IGxlYXN0IFxwIG4gZWxlbWVudHMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgdmVjdG9yPFQ+OjpyZXNlcnZlIChzaXplX3R5cGUgbiwgYm9vbCBiRXhhY3QpCi17Ci0gICAgY29uc3Qgc2l6ZV90eXBlIG9sZENhcGFjaXR5ID0gY2FwYWNpdHkoKTsKLSAgICBtX0RhdGEucmVzZXJ2ZSAobiAqIHNpemVvZihUKSwgYkV4YWN0KTsKLSAgICBpZiAoY2FwYWNpdHkoKSA+IG9sZENhcGFjaXR5KQotCWNvbnN0cnVjdCAoYmVnaW4oKSArIG9sZENhcGFjaXR5LCBiZWdpbigpICsgY2FwYWNpdHkoKSk7Ci19Ci0KLS8vLyBSZXNpemVzIHRoZSB2ZWN0b3IgdG8gY29udGFpbiBccCBuIGVsZW1lbnRzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIHZlY3RvcjxUPjo6cmVzaXplIChzaXplX3R5cGUgbiwgYm9vbCBiRXhhY3QpCi17Ci0gICAgaWYgKG1fRGF0YS5jYXBhY2l0eSgpIDwgbiAqIHNpemVvZihUKSkKLQlyZXNlcnZlIChuLCBiRXhhY3QpOwotICAgIG1fRGF0YS5tZW1saW5rOjpyZXNpemUgKG4gKiBzaXplb2YoVCkpOwotfQotCi0vLy8gQ2FsbHMgZWxlbWVudCBkZXN0cnVjdG9ycyBhbmQgZnJlZXMgc3RvcmFnZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCB2ZWN0b3I8VD46OmRlYWxsb2NhdGUgKHZvaWQpIHRocm93KCkKLXsKLSAgICBpZiAoIWlzX2xpbmtlZCgpKQotCWRlc3Ryb3kgKGJlZ2luKCksIGJlZ2luKCkgKyBjYXBhY2l0eSgpKTsKLSAgICBtX0RhdGEuZGVhbGxvY2F0ZSgpOwotfQotCi0vLy8gSW5pdGlhbGl6ZXMgZW1wdHkgdmVjdG9yLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdmVjdG9yPFQ+Ojp2ZWN0b3IgKHZvaWQpCi06IG1fRGF0YSAoKQotewotfQotCi0vLy8gSW5pdGlhbGl6ZXMgYSB2ZWN0b3Igb2Ygc2l6ZSBccCBuLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdmVjdG9yPFQ+Ojp2ZWN0b3IgKHNpemVfdHlwZSBuKQotOiBtX0RhdGEgKCkKLXsKLSAgICByZXNpemUgKG4pOwotfQotCi0vLy8gQ29waWVzIFxwIG4gZWxlbWVudHMgZnJvbSBccCB2LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12ZWN0b3I8VD46OnZlY3RvciAoc2l6ZV90eXBlIG4sIGNvbnN0IFQmIHYpCi06IG1fRGF0YSAoKQotewotICAgIHJlc2l6ZSAobik7Ci0gICAgOjp1c3RsOjpmaWxsIChiZWdpbigpLCBlbmQoKSwgdik7Ci19Ci0KLS8vLyBDb3BpZXMgXHAgdi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdmVjdG9yPFQ+Ojp2ZWN0b3IgKGNvbnN0IHZlY3RvcjxUPiYgdikKLTogbV9EYXRhICgpCi17Ci0gICAgcmVzaXplICh2LnNpemUoKSk7Ci0gICAgOjp1c3RsOjpjb3B5ICh2LmJlZ2luKCksIHYuZW5kKCksIGJlZ2luKCkpOwotfQotCi0vLy8gQ29waWVzIHJhbmdlIFtccCBpMSwgXHAgaTJdCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZlY3RvcjxUPjo6dmVjdG9yIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCi06IG1fRGF0YSAoKQotewotICAgIHJlc2l6ZSAoZGlzdGFuY2UgKGkxLCBpMikpOwotICAgIDo6dXN0bDo6Y29weSAoaTEsIGkyLCBiZWdpbigpKTsKLX0KLQotLy8vIERlc3RydWN0b3IKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZlY3RvcjxUPjo6fnZlY3RvciAodm9pZCkgdGhyb3coKQotewotICAgIGlmICghbnVtZXJpY19saW1pdHM8dmFsdWVfdHlwZT46OmlzX2ludGVncmFsKQotCWRlYWxsb2NhdGUoKTsKLX0KLQotLy8vIENvcGllcyB0aGUgcmFuZ2UgW1xwIGkxLCBccCBpMl0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgdmVjdG9yPFQ+Ojphc3NpZ24gKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikKLXsKLSAgICBhc3NlcnQgKGkxIDw9IGkyKTsKLSAgICByZXNpemUgKGRpc3RhbmNlIChpMSwgaTIpKTsKLSAgICA6OnVzdGw6OmNvcHkgKGkxLCBpMiwgYmVnaW4oKSk7Ci19Ci0KLS8vLyBDb3BpZXMgXHAgbiBlbGVtZW50cyB3aXRoIHZhbHVlIFxwIHYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIHZlY3RvcjxUPjo6YXNzaWduIChzaXplX3R5cGUgbiwgY29uc3QgVCYgdikKLXsKLSAgICByZXNpemUgKG4pOwotICAgIDo6dXN0bDo6ZmlsbCAoYmVnaW4oKSwgZW5kKCksIHYpOwotfQotCi0vLy8gQ29waWVzIGNvbnRlbnRzIG9mIFxwIHYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBjb25zdCB2ZWN0b3I8VD4mIHZlY3RvcjxUPjo6b3BlcmF0b3I9IChjb25zdCB2ZWN0b3I8VD4mIHYpCi17Ci0gICAgYXNzaWduICh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIHJldHVybiAoKnRoaXMpOwotfQotCi0vLy8gSW5zZXJ0cyBccCBuIHVuaW5pdGlhbGl6ZWQgZWxlbWVudHMgYXQgXHAgaXAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIHZlY3RvcjxUPjo6aXRlcmF0b3IgdmVjdG9yPFQ+OjppbnNlcnRfc3BhY2UgKGl0ZXJhdG9yIGlwLCBzaXplX3R5cGUgbikKLXsKLSAgICBjb25zdCB1b2ZmX3QgaXBtaSA9IGRpc3RhbmNlIChtX0RhdGEuYmVnaW4oKSwgbWVtYmxvY2s6Oml0ZXJhdG9yKGlwKSk7Ci0gICAgcmVzZXJ2ZSAoc2l6ZSgpICsgbiwgZmFsc2UpOwotICAgIHJldHVybiAoaXRlcmF0b3IgKG1fRGF0YS5pbnNlcnQgKG1fRGF0YS5pYXQoaXBtaSksIG4gKiBzaXplb2YoVCkpKSk7Ci19Ci0KLS8vLyBJbnNlcnRzIFxwIG4gZWxlbWVudHMgd2l0aCB2YWx1ZSBccCB2IGF0IG9mZnNldHMgXHAgaXAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIHZlY3RvcjxUPjo6aXRlcmF0b3IgdmVjdG9yPFQ+OjppbnNlcnQgKGl0ZXJhdG9yIGlwLCBzaXplX3R5cGUgbiwgY29uc3QgVCYgdikKLXsKLSAgICBpcCA9IGluc2VydF9zcGFjZSAoaXAsIG4pOwotICAgIDo6dXN0bDo6ZmlsbCAoaXAsIGlwICsgbiwgdik7Ci0gICAgcmV0dXJuIChpcCk7Ci19Ci0KLS8vLyBJbnNlcnRzIHZhbHVlIFxwIHYgYXQgb2Zmc2V0IFxwIGlwLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSB2ZWN0b3I8VD46Oml0ZXJhdG9yIHZlY3RvcjxUPjo6aW5zZXJ0IChpdGVyYXRvciBpcCwgY29uc3QgVCYgdikKLXsKLSAgICAqKGlwID0gaW5zZXJ0X3NwYWNlIChpcCwgMSkpID0gdjsKLSAgICByZXR1cm4gKGlwKTsKLX0KLQotLy8vIEluc2VydHMgcmFuZ2UgW1xwIGkxLCBccCBpMl0gYXQgb2Zmc2V0IFxwIGlwLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSB2ZWN0b3I8VD46Oml0ZXJhdG9yIHZlY3RvcjxUPjo6aW5zZXJ0IChpdGVyYXRvciBpcCwgY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQotewotICAgIGFzc2VydCAoaTEgPD0gaTIpOwotICAgIGlwID0gaW5zZXJ0X3NwYWNlIChpcCwgZGlzdGFuY2UgKGkxLCBpMikpOwotICAgIDo6dXN0bDo6Y29weSAoaTEsIGkyLCBpcCk7Ci0gICAgcmV0dXJuIChpcCk7Ci19Ci0KLS8vLyBSZW1vdmVzIFxwIGNvdW50IGVsZW1lbnRzIGF0IG9mZnNldCBccCBlcC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHR5cGVuYW1lIHZlY3RvcjxUPjo6aXRlcmF0b3IgdmVjdG9yPFQ+OjplcmFzZSAoaXRlcmF0b3IgZXAsIHNpemVfdHlwZSBuKQotewotICAgIHJldHVybiAoaXRlcmF0b3IgKG1fRGF0YS5lcmFzZSAobWVtYmxvY2s6Oml0ZXJhdG9yKGVwKSwgbiAqIHNpemVvZihUKSkpKTsKLX0KLQotLy8vIFJlbW92ZXMgZWxlbWVudHMgZnJvbSBccCBlcDEgdG8gXHAgZXAyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdHlwZW5hbWUgdmVjdG9yPFQ+OjppdGVyYXRvciB2ZWN0b3I8VD46OmVyYXNlIChpdGVyYXRvciBlcDEsIGl0ZXJhdG9yIGVwMikKLXsKLSAgICBhc3NlcnQgKGVwMSA8PSBlcDIpOwotICAgIHJldHVybiAoZXJhc2UgKGVwMSwgZGlzdGFuY2UoZXAxLCBlcDIpKSk7Ci19Ci0KLS8vLyBJbnNlcnRzIHZhbHVlIFxwIHYgYXQgdGhlIGVuZCBvZiB0aGUgdmVjdG9yLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIHZlY3RvcjxUPjo6cHVzaF9iYWNrIChjb25zdCBUJiB2KQotewotICAgIHJlc2l6ZSAoc2l6ZSgpICsgMSwgZmFsc2UpOwotICAgIGJhY2soKSA9IHY7Ci19Ci0KLS8vLyBVc2Ugd2l0aCB2ZWN0b3IgY2xhc3NlcyB0byBhbGxvY2F0ZSBhbmQgbGluayB0byBzdGFjayBzcGFjZS4gXHAgbiBpcyBpbiBlbGVtZW50cy4KLSNkZWZpbmUgdHlwZWRfYWxsb2NhX2xpbmsobSxULG4pCShtKS5saW5rICgoVCopIGFsbG9jYSAoKG4pICogc2l6ZW9mKFQpKSwgKG4pKQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvRG9tRXhwYXRBZ2VudC5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvRG9tRXhwYXRBZ2VudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZGU3MDYuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL0RvbUV4cGF0QWdlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpbmNsdWRlIDx1dGlsL3htbC9Eb21FeHBhdEFnZW50Lmg+Ci0jaW5jbHVkZSA8dXRpbC94bWwvWE1MRWxlbWVudEltcGwuaD4KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci0jaW5jbHVkZSA8dWlvcy5oPgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi1Eb21FeHBhdEFnZW50OjpEb21FeHBhdEFnZW50KFhNTERvY3VtZW50SW1wbCogeG1sRG9jUHRyKQotewotICAgIG1YTUxEb2N1bWVudFB0ciA9IHhtbERvY1B0cjsKLSAgICBtVG9wRWxlbWVudFB0ciA9IE5VTEw7Ci19Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi1Eb21FeHBhdEFnZW50Ojp+RG9tRXhwYXRBZ2VudCgpCi17Ci0KLX0KLQotLyoqIHNlZSBEb21FeHBhdEFnZW50LmggKi8KLWJvb2wgRG9tRXhwYXRBZ2VudDo6Z2VuZXJhdGVEb2N1bWVudEZyb21YTUwoaXN0cmluZ3N0cmVhbSAqeG1sU3RyZWFtKQotewotICAgIGNoYXIgY2g7Ci0gICAgc3RyaW5nIGNvbnRlbnQ7Ci0KLSAgICBpZiAoTlVMTCA9PSBtWE1MRG9jdW1lbnRQdHIgfHwgTlVMTCA9PSB4bWxTdHJlYW0pCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgd2hpbGUgKChjaCA9IHhtbFN0cmVhbS0+Z2V0KCkpICE9ICdcMCcpCi0gICAgewotICAgICAgICBjb250ZW50ICs9IGNoOwotICAgIH0KLQotICAgIGlmIChFeHBhdFdyYXBwZXI6OmRlY29kZShjb250ZW50LmNfc3RyKCksIGNvbnRlbnQubGVuZ3RoKCksIDEpID09IDApCi0KLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi12b2lkIERvbUV4cGF0QWdlbnQ6OnB1c2hUYWcoY29uc3QgRE9NU3RyaW5nICpuYW1lLCBjb25zdCBYTUxfQ2hhciAqKmF0dHMpCi17Ci0gICAgRWxlbWVudEltcGwgKmVsZW1lbnROb2RlID0gbVhNTERvY3VtZW50UHRyLT5jcmVhdGVFbGVtZW50KG5hbWUpOwotCi0gICAgaWYgKE5VTEwgPT0gZWxlbWVudE5vZGUpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKE5VTEwgIT0gYXR0cykKLSAgICB7Ci0gICAgICAgIHdoaWxlIChOVUxMICE9ICphdHRzKQotICAgICAgICB7Ci0gICAgICAgICAgICAvL3NldCBhdHRyaWJ1dGVzIGludG8gZWxlbWVudCBub2RlLgotICAgICAgICAgICAgRE9NU3RyaW5nIGtleShhdHRzWzBdKSwgdmFsdWUoYXR0c1sxXSk7Ci0gICAgICAgICAgICBlbGVtZW50Tm9kZS0+c2V0QXR0cmlidXRlKCZrZXksICZ2YWx1ZSk7Ci0gICAgICAgICAgICBhdHRzICs9IDI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgIGlmICghbVN0YWNrLmVtcHR5KCkpCi0gICB7Ci0gICAgICAgbVRvcEVsZW1lbnRQdHItPmFwcGVuZENoaWxkKGVsZW1lbnROb2RlKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgICBtWE1MRG9jdW1lbnRQdHItPnNldEZpcnN0Q2hpbGQoZWxlbWVudE5vZGUpOwotICAgfQotCi0gICBtVG9wRWxlbWVudFB0ciA9IChYTUxFbGVtZW50SW1wbCAqKWVsZW1lbnROb2RlOwotICAgbVN0YWNrLnB1c2hfYmFjayhlbGVtZW50Tm9kZSk7Ci19Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi12b2lkIERvbUV4cGF0QWdlbnQ6OnBvcFRhZyhjb25zdCBET01TdHJpbmcgKm5hbWUpCi17Ci0gICAgaWYgKE5VTEwgPT0gbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobVRvcEVsZW1lbnRQdHIgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIGlmICghbmFtZS0+Y29tcGFyZShtVG9wRWxlbWVudFB0ci0+Z2V0VGFnTmFtZSgpLT5jX3N0cigpKSkKLSAgICAgICAgewotICAgICAgICAgICAgbVN0YWNrLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgICBpZiAoIW1TdGFjay5lbXB0eSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1Ub3BFbGVtZW50UHRyID0oWE1MRWxlbWVudEltcGwgKikgbVN0YWNrLmJhY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtVG9wRWxlbWVudFB0ciA9IE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi12b2lkIERvbUV4cGF0QWdlbnQ6OmFwcGVuZFRleHQoY29uc3QgRE9NU3RyaW5nICp0ZXh0KQotewotICAgIGlmICgobVRvcEVsZW1lbnRQdHIgIT0gTlVMTCkgJiYgKHRleHQgIT0gTlVMTCkpCi0gICAgewotICAgICAgICBUZXh0SW1wbCAqdGV4dE5vZGUgPSBtWE1MRG9jdW1lbnRQdHItPmNyZWF0ZVRleHROb2RlKHRleHQpOwotCi0gICAgICAgIGlmIChOVUxMID09IHRleHROb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgIG1Ub3BFbGVtZW50UHRyLT5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgfQotfQotCi0vKiogc2VlIERvbUV4cGF0QWdlbnQuaCAqLwotdm9pZCBEb21FeHBhdEFnZW50OjpzdGFydEVsZW1lbnQoY29uc3QgWE1MX0NoYXIgKm5hbWUsIGNvbnN0IFhNTF9DaGFyICoqYXR0cykKLXsKLSAgICBpZiAobmFtZSkKLSAgICB7Ci0gICAgICAgIERPTVN0cmluZyB0YWdOYW1lKG5hbWUpOwotCi0gICAgICAgIHB1c2hUYWcoJnRhZ05hbWUsIGF0dHMpOwotICAgIH0KLX0KLQotLyoqIHNlZSBEb21FeHBhdEFnZW50LmggKi8KLXZvaWQgRG9tRXhwYXRBZ2VudDo6ZGF0YUhhbmRsZXIoY29uc3QgWE1MX0NoYXIgKnMsIGludCBsZW4pCi17Ci0gICAgaWYgKHMgIT0gTlVMTCAmJiBsZW4gPj0gMSAmJiAqcyAhPSAnXG4nKQotICAgIHsKLSAgICAgICAgRE9NU3RyaW5nIHRleHQ7Ci0gICAgICAgIHRleHQuYXNzaWduKChjaGFyKilzLCBsZW4pOwotICAgICAgICBhcHBlbmRUZXh0KCZ0ZXh0KTsKLSAgICB9Ci19Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi12b2lkIERvbUV4cGF0QWdlbnQ6OmVuZEVsZW1lbnQoY29uc3QgWE1MX0NoYXIgKm5hbWUpCi17Ci0gICBpZiAobmFtZSkKLSAgIHsKLSAgICAgICBET01TdHJpbmcgdGFnTmFtZShuYW1lKTsKLSAgICAgICBwb3BUYWcoJnRhZ05hbWUpOwotICAgfQotfQotCi0vKiogc2VlIERvbUV4cGF0QWdlbnQuaCAqLwotb3N0cmluZ3N0cmVhbSogRG9tRXhwYXRBZ2VudDo6Z2VuZXJhdGVYTUxGcm9tRG9jdW1lbnQoKQotewotICAgIGlmIChOVUxMID09IG1YTUxEb2N1bWVudFB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIEVsZW1lbnRJbXBsICpyb290ID0gbVhNTERvY3VtZW50UHRyLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKLQotICAgIHRyYXZlcnNlKHJvb3QpOwotCi0gICAgcmV0dXJuICZtWE1Mb3N0cmVhbTsKLX0KLQotLyoqIHNlZSBEb21FeHBhdEFnZW50LmggKi8KLXZvaWQgRG9tRXhwYXRBZ2VudDo6dHJhdmVyc2UoRWxlbWVudEltcGwgKnJvb3QpCi17Ci0gICAgaWYgKE5VTEwgPT0gcm9vdCkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtWE1Mb3N0cmVhbSA8PCAiPCIgPDwgKihyb290LT5nZXROb2RlTmFtZSgpKTsKLQotICAgIGlmIChyb290LT5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgewotICAgICAgICBtWE1Mb3N0cmVhbSA8PCBlbmRsOwotICAgICAgICBjb25zdCBET01TdHJpbmdNYXAqIGF0dHJNYXBQdHIgPSAoc3RhdGljX2Nhc3Q8WE1MRWxlbWVudEltcGwqPihyb290KSktPmdldEF0dHJpYnV0ZU1hcCgpOwotICAgICAgICBET01TdHJpbmdNYXA6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcG9zOwotCi0gICAgICAgIGZvciAocG9zPWF0dHJNYXBQdHItPnJiZWdpbigpOyBwb3MgIT0gYXR0ck1hcFB0ci0+cmVuZCgpOyBwb3MrKykKLSAgICAgICAgewotICAgICAgICAgICAgbVhNTG9zdHJlYW0gPDwgcG9zLT5maXJzdCA8PCAiPSIgPDwgIlwiIiA8PCBwb3MtPnNlY29uZCA8PCAiXCIiOwotCi0gICAgICAgICAgICBpZiAocG9zICsgMSAhPSBhdHRyTWFwUHRyLT5yZW5kKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVhNTG9zdHJlYW0gPDwgZW5kbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIG1YTUxvc3RyZWFtIDw8ICI+IiA8PCBlbmRsOwotCi0gICAgTm9kZUltcGwgKmNoaWxkID0gcm9vdC0+Z2V0Rmlyc3RDaGlsZCgpOwotCi0gICAgd2hpbGUgKGNoaWxkICE9IE5VTEwpCi0gICAgewotICAgICAgICBOb2RlVHlwZSB3aGF0ID0gY2hpbGQtPmdldE5vZGVUeXBlKCk7Ci0KLSAgICAgICAgaWYgKHdoYXQgPT0gRUxFTUVOVF9OT0RFKQotICAgICAgICB7Ci0gICAgICAgICAgICB0cmF2ZXJzZShzdGF0aWNfY2FzdDxFbGVtZW50SW1wbCo+KGNoaWxkKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAod2hhdCA9PSBURVhUX05PREUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1YTUxvc3RyZWFtIDw8ICooc3RhdGljX2Nhc3Q8VGV4dEltcGwqPihjaGlsZCktPmdldERhdGEoKSkgPDwgZW5kbDsKLSAgICAgICAgfQotCi0gICAgICAgIGNoaWxkID0gY2hpbGQtPmdldE5leHRTaWJsaW5nKCk7Ci0gICAgfQotCi0gICAgbVhNTG9zdHJlYW0gPDwgIjwvIiA8PCAqKHJvb3QtPmdldE5vZGVOYW1lKCkpIDw8ICI+IiA8PCBlbmRsOwotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL0V4cGF0V3JhcHBlci5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvRXhwYXRXcmFwcGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU5OWE4OC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvRXhwYXRXcmFwcGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpbmNsdWRlIDx1dGlsL3htbC9FeHBhdFdyYXBwZXIuaD4KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotLyoqIHNlZSBFeHBhdFdyYXBwZXIuaCAqLwotRXhwYXRXcmFwcGVyOjpFeHBhdFdyYXBwZXIoKQotewotICAgIG1QYXJzZXIgPSBYTUxfUGFyc2VyQ3JlYXRlKE5VTEwpOwotICAgIDo6WE1MX1NldFVzZXJEYXRhKG1QYXJzZXIsIHRoaXMpOwotICAgIDo6WE1MX1NldEVsZW1lbnRIYW5kbGVyKG1QYXJzZXIsIHN0YXJ0RWxlbWVudENhbGxiYWNrLCBlbmRFbGVtZW50Q2FsbGJhY2spOwotICAgIDo6WE1MX1NldENoYXJhY3RlckRhdGFIYW5kbGVyKG1QYXJzZXIsIGRhdGFIYW5kbGVyQ2FsbGJhY2spOwotCi19Ci0KLS8qKiBzZWUgRXhwYXRXcmFwcGVyLmggKi8KLUV4cGF0V3JhcHBlcjo6fkV4cGF0V3JhcHBlcigpCi17Ci0gICAgaWYgKG1QYXJzZXIpCi0gICAgewotICAgICAgICA6OlhNTF9QYXJzZXJGcmVlKG1QYXJzZXIpOwotICAgIH0KLX0KLQotLyoqIHNlZSBFeHBhdFdyYXBwZXIuaCAqLwotaW50IEV4cGF0V3JhcHBlcjo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ1ZiwgaW50IGxlbiwgaW50IGlzRmluYWwpCi17Ci0gICAgcmV0dXJuIDo6WE1MX1BhcnNlKG1QYXJzZXIsIGJ1ZiwgbGVuLCBpc0ZpbmFsKTsKLX0KLQotLyoqIHNlZSBFeHBhdFdyYXBwZXIuaCAqLwotdm9pZCBFeHBhdFdyYXBwZXI6OnN0YXJ0RWxlbWVudENhbGxiYWNrKHZvaWQgKnVzZXJEYXRhLCBjb25zdCBYTUxfQ2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqKmF0dHMpCi17Ci0gICAgKChFeHBhdFdyYXBwZXIgKil1c2VyRGF0YSktPnN0YXJ0RWxlbWVudChuYW1lLCBhdHRzKTsKLX0KLQotLyoqIHNlZSBFeHBhdFdyYXBwZXIuaCAqLwotdm9pZCBFeHBhdFdyYXBwZXI6OmVuZEVsZW1lbnRDYWxsYmFjayh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKm5hbWUpCi17Ci0gICAgKChFeHBhdFdyYXBwZXIgKil1c2VyRGF0YSktPmVuZEVsZW1lbnQobmFtZSk7Ci19Ci0KLS8qKiBzZWUgRXhwYXRXcmFwcGVyLmggKi8KLXZvaWQgRXhwYXRXcmFwcGVyOjpkYXRhSGFuZGxlckNhbGxiYWNrKHZvaWQgKnVzZXJEYXRhLCBjb25zdCBYTUxfQ2hhciAqcywgaW50IGxlbikKLXsKLSAgICAoKEV4cGF0V3JhcHBlciAqKXVzZXJEYXRhKS0+ZGF0YUhhbmRsZXIocywgbGVuKTsKLX0KLQotLyoqIHNlZSBFeHBhdFdyYXBwZXIuaCAqLwotdm9pZCBFeHBhdFdyYXBwZXI6OnN0YXJ0RWxlbWVudChjb25zdCBYTUxfQ2hhciAqbmFtZSwgY29uc3QgWE1MX0NoYXIgKiphdHRzKQotewotfQotCi0vKiogc2VlIEV4cGF0V3JhcHBlci5oICovCi12b2lkIEV4cGF0V3JhcHBlcjo6ZW5kRWxlbWVudChjb25zdCBYTUxfQ2hhciAqbmFtZSkKLXsKLX0KLQotLyoqIHNlZSBFeHBhdFdyYXBwZXIuaCAqLwotdm9pZCBFeHBhdFdyYXBwZXI6OmRhdGFIYW5kbGVyKGNvbnN0IFhNTF9DaGFyICpzLCBpbnQgbGVuKQotewotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL1hNTERvY3VtZW50SW1wbC5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvWE1MRG9jdW1lbnRJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFmYmM3OS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvWE1MRG9jdW1lbnRJbXBsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpbmNsdWRlIDx1dGlsL3htbC9YTUxEb2N1bWVudEltcGwuaD4KLSNpbmNsdWRlIDx1dGlsL3htbC9YTUxFbGVtZW50SW1wbC5oPgotCi0vKiogc2VlIFhNTERvY3VtZW50SW1wbC5oICovCi1YTUxEb2N1bWVudEltcGw6OlhNTERvY3VtZW50SW1wbCgpCi17fQotCi0vKiogc2VlIFhNTERvY3VtZW50SW1wbC5oICovCi1YTUxEb2N1bWVudEltcGw6On5YTUxEb2N1bWVudEltcGwoKQote30KLQotLyoqIHNlZSBYTUxEb2N1bWVudEltcGwuaCAqLwotRWxlbWVudEltcGwqIFhNTERvY3VtZW50SW1wbDo6Z2V0RG9jdW1lbnRFbGVtZW50KCkgY29uc3QKLXsKLSAgICBYTUxFbGVtZW50SW1wbCAqZWxlbWVudCA9IChYTUxFbGVtZW50SW1wbCAqKSh0aGlzLT5nZXRGaXJzdENoaWxkKCkpOwotICAgIHJldHVybiBlbGVtZW50OwotfQotCi0vKiogc2VlIFhNTERvY3VtZW50SW1wbC5oICovCi1FbGVtZW50SW1wbCogWE1MRG9jdW1lbnRJbXBsOjpjcmVhdGVFbGVtZW50KGNvbnN0IERPTVN0cmluZyogdGFnTmFtZSkgY29uc3QgdGhyb3cgKERPTUV4Y2VwdGlvbikKLXsKLSAgICBpZiAodGFnTmFtZSkKLSAgICB7Ci0gICAgICAgIFhNTEVsZW1lbnRJbXBsICplbGVtZW50ID0gbmV3IFhNTEVsZW1lbnRJbXBsKHRhZ05hbWUpOwotICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qKiBzZWUgWE1MRG9jdW1lbnRJbXBsLmggKi8KLVRleHRJbXBsKiBYTUxEb2N1bWVudEltcGw6OmNyZWF0ZVRleHROb2RlKGNvbnN0IERPTVN0cmluZyogZGF0YSkgY29uc3QKLXsKLSAgICBpZiAoZGF0YSkKLSAgICB7Ci0gICAgICAgIFRleHRJbXBsICp0ZXh0ID0gbmV3IFRleHRJbXBsKGRhdGEpOwotICAgICAgICByZXR1cm4gdGV4dDsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3htbC9YTUxFbGVtZW50SW1wbC5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvWE1MRWxlbWVudEltcGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDUzOTAyLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3htbC9YTUxFbGVtZW50SW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovDQotI2luY2x1ZGUgPHV0aWwveG1sL1hNTEVsZW1lbnRJbXBsLmg+Ci0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL1RleHRJbXBsLmg+Ci0KLS8qKiBzZWUgWE1MRWxlbWVudEltcGwuaCAqLwotWE1MRWxlbWVudEltcGw6OlhNTEVsZW1lbnRJbXBsKGNvbnN0IERPTVN0cmluZyAqdGFnKQotewotICAgIGlmICh0YWcpCi0gICAgewotICAgICAgICBtVGFnTmFtZSA9ICp0YWc7Ci0gICAgfQotfQotCi0vKiogc2VlIFhNTEVsZW1lbnRJbXBsLmggKi8KLVhNTEVsZW1lbnRJbXBsOjp+WE1MRWxlbWVudEltcGwoKQotewotfQotCi0vKiogc2VlIFhNTEVsZW1lbnRJbXBsLmggKi8KLWNvbnN0IERPTVN0cmluZyogWE1MRWxlbWVudEltcGw6OmdldFRhZ05hbWUoKSBjb25zdAotewotICAgIHJldHVybiAmbVRhZ05hbWU7Ci19Ci0KLS8qKiBzZWUgWE1MRWxlbWVudEltcGwuaCAqLwotdm9pZCBYTUxFbGVtZW50SW1wbDo6c2V0QXR0cmlidXRlKGNvbnN0IERPTVN0cmluZyogbmFtZSwgY29uc3QgRE9NU3RyaW5nKiB2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyAoRE9NRXhjZXB0aW9uKQotewotICAgIGlmIChuYW1lICYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgbUF0dHJpYnV0ZU1hcFsqbmFtZV0gPSAqdmFsdWU7Ci0gICAgfQotfQotCi0vKiogc2VlIFhNTEVsZW1lbnRJbXBsLmggKi8KLXZvaWQgWE1MRWxlbWVudEltcGw6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUpIHRocm93IChET01FeGNlcHRpb24pCi17Ci0gICAgaWYgKG5hbWUpCi0gICAgewotICAgICAgIG1BdHRyaWJ1dGVNYXAuZXJhc2UoKm5hbWUpOwotICAgIH0KLX0KLQotLyoqIHNlZSBYTUxFbGVtZW50SW1wbC5oICovCi1jb25zdCBET01TdHJpbmcqIFhNTEVsZW1lbnRJbXBsOjpnZXRBdHRyaWJ1dGUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSBjb25zdAotewotICAgIGlmIChuYW1lKQotICAgIHsKLSAgICAgICAgRE9NU3RyaW5nTWFwOjpjb25zdF9pdGVyYXRvciBwb3MgPSBtQXR0cmlidXRlTWFwLmZpbmQoKm5hbWUpOwotCi0gICAgICAgIGlmIChwb3MgIT0gbUF0dHJpYnV0ZU1hcC5lbmQoKSkKLSAgICAgICAgewotICAgICAgICAgICByZXR1cm4gJihwb3MtPnNlY29uZCk7Ci0gICAgICAgIH0KLQotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotLyoqIHNlZSBYTUxFbGVtZW50SW1wbC5oICovCi1ib29sIFhNTEVsZW1lbnRJbXBsOjpoYXNBdHRyaWJ1dGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1BdHRyaWJ1dGVNYXAuZW1wdHkoKTsKLX0KLQotLyoqIHNlZSBYTUxFbGVtZW50SW1wbC5oICovCi1jb25zdCBET01TdHJpbmdNYXAqIFhNTEVsZW1lbnRJbXBsOjpnZXRBdHRyaWJ1dGVNYXAoKSBjb25zdAotewotICAgIHJldHVybiAmbUF0dHJpYnV0ZU1hcDsKLX0KLQotLyoqIHNlZSBYTUxFbGVtZW50SW1wbC5oICovCi1jb25zdCBOb2RlSW1wbCogWE1MRWxlbWVudEltcGw6OmZpbmRTb2xvQ2hpbGROb2RlKGNvbnN0IGNoYXIqIHRhZykgY29uc3QKLXsKLSAgICBpZiAoTlVMTCA9PSB0YWcpCi0gICAgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBzdHJpbmcgdG9rZW47Ci0gICAgTm9kZUxpc3RJbXBsICpub2RlTGlzdCA9IE5VTEw7Ci0gICAgY29uc3QgTm9kZUltcGwgKmNoaWxkTm9kZSA9IE5VTEw7Ci0KLSAgICB0b2tlbi5hc3NpZ24odGFnKTsKLSAgICBub2RlTGlzdCA9IGdldEVsZW1lbnRzQnlUYWdOYW1lKCZ0b2tlbik7Ci0KLSAgICBpZiAobm9kZUxpc3QtPmdldExlbmd0aCgpID4gMCkKLSAgICB7Ci0gICAgICAgICBjaGlsZE5vZGUgPSBub2RlTGlzdC0+aXRlbSgwKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2hpbGROb2RlOwotfQotCi0vKiogc2VlIFhNTEVsZW1lbnRJbXBsLmggKi8KLWNvbnN0IHN0cmluZyogWE1MRWxlbWVudEltcGw6OmdldFNvbG9UZXh0KGNvbnN0IGNoYXIqIHRhZykgY29uc3QKLXsKLSAgICBjb25zdCBOb2RlSW1wbCAqdGV4dE5vZGUgPSB0aGlzLT5maW5kU29sb0NoaWxkTm9kZSh0YWcpOwotCi0gICAgaWYgKHRleHROb2RlKQotICAgIHsKLSAgICAgICAgdGV4dE5vZGUgPSB0ZXh0Tm9kZS0+Z2V0Rmlyc3RDaGlsZCgpOwotICAgICAgICBpZiAodGV4dE5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUZXh0SW1wbCo+KHRleHROb2RlKS0+Z2V0RGF0YSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qKiBzZWUgWE1MRWxlbWVudEltcGwuaCAqLwotY29uc3QgWE1MRWxlbWVudEltcGwqIFhNTEVsZW1lbnRJbXBsOjpnZXRTb2xvRWxlbWVudChjb25zdCBjaGFyKiB0YWcpIGNvbnN0Ci17Ci0gICAgY29uc3QgTm9kZUltcGwgKm5vZGUgPSBmaW5kU29sb0NoaWxkTm9kZSh0YWcpOwotICAgIGlmIChub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFhNTEVsZW1lbnRJbXBsKj4obm9kZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5VTEw7Ci19CmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0FuZHJvaWQubWsgYi9tZWRpYS9saWJlZmZlY3RzL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVmMWQ0MgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQW5kcm9pZC5tawpAQCAtMCwwICsxLDk2IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKKworIworVEVTVF9FRkZFQ1RfTElCUkFSSUVTIDo9IHRydWUKKworIyBFZmZlY3QgZmFjdG9yeSBsaWJyYXJ5CitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTOj0gXAorCUVmZmVjdHNGYWN0b3J5LmMKKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCisJbGliY3V0aWxzCisKK0xPQ0FMX01PRFVMRV9QQVRIIDo9ICQoVEFSR0VUX09VVF9TSEFSRURfTElCUkFSSUVTKQorTE9DQUxfTU9EVUxFOj0gbGliZWZmZWN0cworCitpZmVxICgkKFRBUkdFVF9PUyktJChUQVJHRVRfU0lNVUxBVE9SKSxsaW51eC10cnVlKQorTE9DQUxfTERMSUJTICs9IC1sZGwKK2VuZGlmCisKK2lmbmVxICgkKFRBUkdFVF9TSU1VTEFUT1IpLHRydWUpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTICs9IGxpYmRsCitlbmRpZgorCitMT0NBTF9DX0lOQ0xVREVTIDo9IFwKKworaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQorCisKK2lmZXEgKCQoVEVTVF9FRkZFQ1RfTElCUkFSSUVTKSx0cnVlKQorIyBUZXN0IFJldmVyYiBsaWJyYXJ5CitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTOj0gXAorCUVmZmVjdFJldmVyYi5jLmFybSBcCisJRWZmZWN0c01hdGguYy5hcm0KK0xPQ0FMX0NGTEFHUys9IC1PMgorCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKKwlsaWJjdXRpbHMKKworTE9DQUxfTU9EVUxFX1BBVEggOj0gJChUQVJHRVRfT1VUX1NIQVJFRF9MSUJSQVJJRVMpL3NvdW5kZngKK0xPQ0FMX01PRFVMRTo9IGxpYnJldmVyYgorCitpZmVxICgkKFRBUkdFVF9PUyktJChUQVJHRVRfU0lNVUxBVE9SKSxsaW51eC10cnVlKQorTE9DQUxfTERMSUJTICs9IC1sZGwKK2VuZGlmCisKK2lmbmVxICgkKFRBUkdFVF9TSU1VTEFUT1IpLHRydWUpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTICs9IGxpYmRsCitlbmRpZgorCitMT0NBTF9DX0lOQ0xVREVTIDo9IFwKKwkkKGNhbGwgaW5jbHVkZS1wYXRoLWZvciwgZ3JhcGhpY3MgY29yZWNnKQorCitMT0NBTF9QUkVMSU5LX01PRFVMRSA6PSBmYWxzZQorCitpbmNsdWRlICQoQlVJTERfU0hBUkVEX0xJQlJBUlkpCisKKyMgVGVzdCBFcXVhbGl6ZXIgbGlicmFyeQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUzo9IFwKKwlFZmZlY3RzTWF0aC5jLmFybSBcCisJRWZmZWN0RXF1YWxpemVyLmNwcCBcCisJQXVkaW9CaXF1YWRGaWx0ZXIuY3BwLmFybSBcCisJQXVkaW9Db2VmSW50ZXJwb2xhdG9yLmNwcC5hcm0gXAorCUF1ZGlvUGVha2luZ0ZpbHRlci5jcHAuYXJtIFwKKwlBdWRpb1NoZWx2aW5nRmlsdGVyLmNwcC5hcm0gXAorCUF1ZGlvRXF1YWxpemVyLmNwcC5hcm0KKworTE9DQUxfQ0ZMQUdTKz0gLU8yCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gXAorCWxpYmN1dGlscworCitMT0NBTF9NT0RVTEVfUEFUSCA6PSAkKFRBUkdFVF9PVVRfU0hBUkVEX0xJQlJBUklFUykvc291bmRmeAorTE9DQUxfTU9EVUxFOj0gbGliZXF1YWxpemVyCisKK2lmZXEgKCQoVEFSR0VUX09TKS0kKFRBUkdFVF9TSU1VTEFUT1IpLGxpbnV4LXRydWUpCitMT0NBTF9MRExJQlMgKz0gLWxkbAorZW5kaWYKKworaWZuZXEgKCQoVEFSR0VUX1NJTVVMQVRPUiksdHJ1ZSkKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgKz0gbGliZGwKK2VuZGlmCisKK0xPQ0FMX0NfSU5DTFVERVMgOj0gXAorCSQoY2FsbCBpbmNsdWRlLXBhdGgtZm9yLCBncmFwaGljcyBjb3JlY2cpCisKK0xPQ0FMX1BSRUxJTktfTU9EVUxFIDo9IGZhbHNlCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKKworZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9CaXF1YWRGaWx0ZXIuY3BwIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0JpcXVhZEZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI5MTdhMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9CaXF1YWRGaWx0ZXIuY3BwCkBAIC0wLDAgKzEsMjYwIEBACisvKiAvL2RldmljZS9zZXJ2ZXJzL0F1ZGlvRmxpbmdlci9BdWRpb0JpcXVhZEZpbHRlci5jcHAKKyoqCisqKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaW5jbHVkZSAiQXVkaW9CaXF1YWRGaWx0ZXIuaCIKKworI2RlZmluZSBMSUtFTFkoIGV4cCApICAgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCB0cnVlICApKQorI2RlZmluZSBVTkxJS0VMWSggZXhwICkgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCBmYWxzZSApKQorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NvbnN0IGF1ZGlvX2NvZWZfdCBBdWRpb0JpcXVhZEZpbHRlcjo6SURFTlRJVFlfQ09FRlNbQXVkaW9CaXF1YWRGaWx0ZXI6Ok5VTV9DT0VGU10gPSB7IEFVRElPX0NPRUZfT05FLCAwLCAwLCAwLCAwIH07CisKK0F1ZGlvQmlxdWFkRmlsdGVyOjpBdWRpb0JpcXVhZEZpbHRlcihpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSkgeworICAgIGNvbmZpZ3VyZShuQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OmNvbmZpZ3VyZShpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSkgeworICAgIGFzc2VydChuQ2hhbm5lbHMgPiAwICYmIG5DaGFubmVscyA8PSBNQVhfQ0hBTk5FTFMpOworICAgIGFzc2VydChzYW1wbGVSYXRlID4gMCk7CisgICAgbU51bUNoYW5uZWxzICA9IG5DaGFubmVsczsKKyAgICBtTWF4RGVsdGEgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihNQVhfREVMVEFfUEVSX1NFQykKKyAgICAgICAgICAgICAgICAqIEFVRElPX0NPRUZfT05FCisgICAgICAgICAgICAgICAgLyBzYW1wbGVSYXRlOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OnJlc2V0KCkgeworICAgIG1lbWNweShtQ29lZnMsIElERU5USVRZX0NPRUZTLCBzaXplb2YobUNvZWZzKSk7CisgICAgbUNvZWZEaXJ0eUJpdHMgPSAwOworICAgIHNldFN0YXRlKFNUQVRFX0JZUEFTUyk7Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OmNsZWFyKCkgeworICAgIG1lbXNldChtRGVsYXlzLCAwLCBzaXplb2YobURlbGF5cykpOworfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpzZXRDb2Vmcyhjb25zdCBhdWRpb19jb2VmX3QgY29lZnNbTlVNX0NPRUZTXSwgYm9vbCBpbW1lZGlhdGUpIHsKKyAgICBtZW1jcHkobVRhcmdldENvZWZzLCBjb2Vmcywgc2l6ZW9mKG1UYXJnZXRDb2VmcykpOworICAgIGlmIChtU3RhdGUgJiBTVEFURV9FTkFCTEVEX01BU0spIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKGltbWVkaWF0ZSkpIHsKKyAgICAgICAgICAgIG1lbWNweShtQ29lZnMsIGNvZWZzLCBzaXplb2YobUNvZWZzKSk7CisgICAgICAgICAgICBzZXRTdGF0ZShTVEFURV9OT1JNQUwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0U3RhdGUoU1RBVEVfVFJBTlNJVElPTl9UT19OT1JNQUwpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzKGNvbnN0IGF1ZGlvX3NhbXBsZV90IGluW10sIGF1ZGlvX3NhbXBsZV90IG91dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeworICAgICh0aGlzLT4qbUN1clByb2Nlc3NGdW5jKShpbiwgb3V0LCBmcmFtZUNvdW50KTsKK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6ZW5hYmxlKGJvb2wgaW1tZWRpYXRlKSB7CisgICAgaWYgKFVOTElLRUxZKGltbWVkaWF0ZSkpIHsKKyAgICAgICAgbWVtY3B5KG1Db2VmcywgbVRhcmdldENvZWZzLCBzaXplb2YobUNvZWZzKSk7CisgICAgICAgIHNldFN0YXRlKFNUQVRFX05PUk1BTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2V0U3RhdGUoU1RBVEVfVFJBTlNJVElPTl9UT19OT1JNQUwpOworICAgIH0KK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6ZGlzYWJsZShib29sIGltbWVkaWF0ZSkgeworICAgIGlmIChVTkxJS0VMWShpbW1lZGlhdGUpKSB7CisgICAgICAgIG1lbWNweShtQ29lZnMsIElERU5USVRZX0NPRUZTLCBzaXplb2YobUNvZWZzKSk7CisgICAgICAgIHNldFN0YXRlKFNUQVRFX0JZUEFTUyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2V0U3RhdGUoU1RBVEVfVFJBTlNJVElPTl9UT19CWVBBU1MpOworICAgIH0KK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6c2V0U3RhdGUoc3RhdGVfdCBzdGF0ZSkgeworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFNUQVRFX0JZUEFTUzoKKyAgICAgIG1DdXJQcm9jZXNzRnVuYyA9ICZBdWRpb0JpcXVhZEZpbHRlcjo6cHJvY2Vzc19ieXBhc3M7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNUQVRFX1RSQU5TSVRJT05fVE9fQllQQVNTOgorICAgICAgaWYgKG1OdW1DaGFubmVscyA9PSAxKSB7CisgICAgICAgIG1DdXJQcm9jZXNzRnVuYyA9ICZBdWRpb0JpcXVhZEZpbHRlcjo6cHJvY2Vzc190cmFuc2l0aW9uX2J5cGFzc19tb25vOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgbUN1clByb2Nlc3NGdW5jID0gJkF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX3RyYW5zaXRpb25fYnlwYXNzX211bHRpOworICAgICAgfQorICAgICAgbUNvZWZEaXJ0eUJpdHMgPSAoMSA8PCBOVU1fQ09FRlMpIC0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVEVfVFJBTlNJVElPTl9UT19OT1JNQUw6CisgICAgICBpZiAobU51bUNoYW5uZWxzID09IDEpIHsKKyAgICAgICAgbUN1clByb2Nlc3NGdW5jID0gJkF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX3RyYW5zaXRpb25fbm9ybWFsX21vbm87CisgICAgICB9IGVsc2UgeworICAgICAgICBtQ3VyUHJvY2Vzc0Z1bmMgPSAmQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3NfdHJhbnNpdGlvbl9ub3JtYWxfbXVsdGk7CisgICAgICB9CisgICAgICBtQ29lZkRpcnR5Qml0cyA9ICgxIDw8IE5VTV9DT0VGUykgLSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSBTVEFURV9OT1JNQUw6CisgICAgICBpZiAobU51bUNoYW5uZWxzID09IDEpIHsKKyAgICAgICAgbUN1clByb2Nlc3NGdW5jID0gJkF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX25vcm1hbF9tb25vOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgbUN1clByb2Nlc3NGdW5jID0gJkF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX25vcm1hbF9tdWx0aTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBtU3RhdGUgPSBzdGF0ZTsKK30KKworYm9vbCBBdWRpb0JpcXVhZEZpbHRlcjo6dXBkYXRlQ29lZnMoY29uc3QgYXVkaW9fY29lZl90IGNvZWZzW05VTV9DT0VGU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeworICAgIGludDY0X3QgbWF4RGVsdGEgPSBtTWF4RGVsdGEgKiBmcmFtZUNvdW50OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX0NPRUZTOyArK2kpIHsKKyAgICAgICAgaWYgKG1Db2VmRGlydHlCaXRzICYgKDE8PGkpKSB7CisgICAgICAgICAgICBhdWRpb19jb2VmX3QgZGlmZiA9IGNvZWZzW2ldIC0gbUNvZWZzW2ldOworICAgICAgICAgICAgaWYgKGRpZmYgPiBtYXhEZWx0YSkgeworICAgICAgICAgICAgICAgIG1Db2Vmc1tpXSArPSBtYXhEZWx0YTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlmZiA8IC1tYXhEZWx0YSkgeworICAgICAgICAgICAgICAgIG1Db2Vmc1tpXSAtPSBtYXhEZWx0YTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUNvZWZzW2ldID0gY29lZnNbaV07CisgICAgICAgICAgICAgICAgbUNvZWZEaXJ0eUJpdHMgXj0gKDE8PGkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtQ29lZkRpcnR5Qml0cyA9PSAwOworfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX2J5cGFzcyhjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgKiBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeworICAgIC8vIFRoZSBjb21tb24gY2FzZSBpcyBpbi1wbGFjZSBwcm9jZXNzaW5nLCBiZWNhdXNlIHRoaXMgaXMgd2hhdCB0aGUgRVEgZG9lcy4KKyAgICBpZiAoVU5MSUtFTFkoaW4gIT0gb3V0KSkgeworICAgICAgICBtZW1jcHkob3V0LCBpbiwgZnJhbWVDb3VudCAqIG1OdW1DaGFubmVscyAqIHNpemVvZihhdWRpb19zYW1wbGVfdCkpOworICAgIH0KK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6cHJvY2Vzc19ub3JtYWxfbW9ubyhjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpIHsKKyAgICBzaXplX3QgbkZyYW1lcyA9IGZyYW1lQ291bnQ7CisgICAgYXVkaW9fc2FtcGxlX3QgeDEgPSBtRGVsYXlzWzBdWzBdOworICAgIGF1ZGlvX3NhbXBsZV90IHgyID0gbURlbGF5c1swXVsxXTsKKyAgICBhdWRpb19zYW1wbGVfdCB5MSA9IG1EZWxheXNbMF1bMl07CisgICAgYXVkaW9fc2FtcGxlX3QgeTIgPSBtRGVsYXlzWzBdWzNdOworICAgIGNvbnN0IGF1ZGlvX2NvZWZfdCBiMCA9IG1Db2Vmc1swXTsKKyAgICBjb25zdCBhdWRpb19jb2VmX3QgYjEgPSBtQ29lZnNbMV07CisgICAgY29uc3QgYXVkaW9fY29lZl90IGIyID0gbUNvZWZzWzJdOworICAgIGNvbnN0IGF1ZGlvX2NvZWZfdCBhMSA9IG1Db2Vmc1szXTsKKyAgICBjb25zdCBhdWRpb19jb2VmX3QgYTIgPSBtQ29lZnNbNF07CisgICAgd2hpbGUgKG5GcmFtZXMtLSA+IDApIHsKKyAgICAgICAgYXVkaW9fc2FtcGxlX3QgeDAgPSAqKGluKyspOworICAgICAgICBhdWRpb19jb2VmX3NhbXBsZV9hY2NfdCBhY2M7CisgICAgICAgIGFjYyA9IG11bF9jb2VmX3NhbXBsZShiMCwgeDApOworICAgICAgICBhY2MgPSBtYWNfY29lZl9zYW1wbGUoYjEsIHgxLCBhY2MpOworICAgICAgICBhY2MgPSBtYWNfY29lZl9zYW1wbGUoYjIsIHgyLCBhY2MpOworICAgICAgICBhY2MgPSBtYWNfY29lZl9zYW1wbGUoYTEsIHkxLCBhY2MpOworICAgICAgICBhY2MgPSBtYWNfY29lZl9zYW1wbGUoYTIsIHkyLCBhY2MpOworICAgICAgICBhdWRpb19zYW1wbGVfdCB5MCA9IGNvZWZfc2FtcGxlX2FjY190b19zYW1wbGUoYWNjKTsKKyAgICAgICAgeTIgPSB5MTsKKyAgICAgICAgeTEgPSB5MDsKKyAgICAgICAgeDIgPSB4MTsKKyAgICAgICAgeDEgPSB4MDsKKyAgICAgICAgKCpvdXQrKykgPSB5MDsKKyAgICB9CisgICAgbURlbGF5c1swXVswXSA9IHgxOworICAgIG1EZWxheXNbMF1bMV0gPSB4MjsKKyAgICBtRGVsYXlzWzBdWzJdID0geTE7CisgICAgbURlbGF5c1swXVszXSA9IHkyOworfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX3RyYW5zaXRpb25fbm9ybWFsX21vbm8oY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeworICAgIGlmICh1cGRhdGVDb2VmcyhtVGFyZ2V0Q29lZnMsIGZyYW1lQ291bnQpKSB7CisgICAgICAgIHNldFN0YXRlKFNUQVRFX05PUk1BTCk7CisgICAgfQorICAgIHByb2Nlc3Nfbm9ybWFsX21vbm8oaW4sIG91dCwgZnJhbWVDb3VudCk7Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3NfdHJhbnNpdGlvbl9ieXBhc3NfbW9ubyhjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KSAgeworICBpZiAodXBkYXRlQ29lZnMoSURFTlRJVFlfQ09FRlMsIGZyYW1lQ291bnQpKSB7CisgICAgICBzZXRTdGF0ZShTVEFURV9OT1JNQUwpOworICB9CisgIHByb2Nlc3Nfbm9ybWFsX21vbm8oaW4sIG91dCwgZnJhbWVDb3VudCk7Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3Nfbm9ybWFsX211bHRpKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KSB7CisgICAgY29uc3QgYXVkaW9fY29lZl90IGIwID0gbUNvZWZzWzBdOworICAgIGNvbnN0IGF1ZGlvX2NvZWZfdCBiMSA9IG1Db2Vmc1sxXTsKKyAgICBjb25zdCBhdWRpb19jb2VmX3QgYjIgPSBtQ29lZnNbMl07CisgICAgY29uc3QgYXVkaW9fY29lZl90IGExID0gbUNvZWZzWzNdOworICAgIGNvbnN0IGF1ZGlvX2NvZWZfdCBhMiA9IG1Db2Vmc1s0XTsKKyAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgbU51bUNoYW5uZWxzOyArK2NoKSB7CisgICAgICAgIHNpemVfdCBuRnJhbWVzID0gZnJhbWVDb3VudDsKKyAgICAgICAgYXVkaW9fc2FtcGxlX3QgeDEgPSBtRGVsYXlzW2NoXVswXTsKKyAgICAgICAgYXVkaW9fc2FtcGxlX3QgeDIgPSBtRGVsYXlzW2NoXVsxXTsKKyAgICAgICAgYXVkaW9fc2FtcGxlX3QgeTEgPSBtRGVsYXlzW2NoXVsyXTsKKyAgICAgICAgYXVkaW9fc2FtcGxlX3QgeTIgPSBtRGVsYXlzW2NoXVszXTsKKyAgICAgICAgd2hpbGUgKG5GcmFtZXMtLSA+IDApIHsKKyAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90IHgwID0gKmluOworICAgICAgICAgICAgYXVkaW9fY29lZl9zYW1wbGVfYWNjX3QgYWNjOworICAgICAgICAgICAgYWNjID0gbXVsX2NvZWZfc2FtcGxlKGIwLCB4MCk7CisgICAgICAgICAgICBhY2MgPSBtYWNfY29lZl9zYW1wbGUoYjEsIHgxLCBhY2MpOworICAgICAgICAgICAgYWNjID0gbWFjX2NvZWZfc2FtcGxlKGIyLCB4MiwgYWNjKTsKKyAgICAgICAgICAgIGFjYyA9IG1hY19jb2VmX3NhbXBsZShhMSwgeTEsIGFjYyk7CisgICAgICAgICAgICBhY2MgPSBtYWNfY29lZl9zYW1wbGUoYTIsIHkyLCBhY2MpOworICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgeTAgPSBjb2VmX3NhbXBsZV9hY2NfdG9fc2FtcGxlKGFjYyk7CisgICAgICAgICAgICB5MiA9IHkxOworICAgICAgICAgICAgeTEgPSB5MDsKKyAgICAgICAgICAgIHgyID0geDE7CisgICAgICAgICAgICB4MSA9IHgwOworICAgICAgICAgICAgKm91dCA9IHkwOworICAgICAgICAgICAgaW4gKz0gbU51bUNoYW5uZWxzOworICAgICAgICAgICAgb3V0ICs9IG1OdW1DaGFubmVsczsKKyAgICAgICAgfQorICAgICAgICBtRGVsYXlzW2NoXVswXSA9IHgxOworICAgICAgICBtRGVsYXlzW2NoXVsxXSA9IHgyOworICAgICAgICBtRGVsYXlzW2NoXVsyXSA9IHkxOworICAgICAgICBtRGVsYXlzW2NoXVszXSA9IHkyOworICAgICAgICBpbiAtPSBmcmFtZUNvdW50ICogbU51bUNoYW5uZWxzIC0gMTsKKyAgICAgICAgb3V0IC09IGZyYW1lQ291bnQgKiBtTnVtQ2hhbm5lbHMgLSAxOworICAgIH0KK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6cHJvY2Vzc190cmFuc2l0aW9uX25vcm1hbF9tdWx0aShjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpIHsKKyAgICBpZiAodXBkYXRlQ29lZnMobVRhcmdldENvZWZzLCBmcmFtZUNvdW50KSkgeworICAgICAgICBzZXRTdGF0ZShTVEFURV9OT1JNQUwpOworICAgIH0KKyAgICBwcm9jZXNzX25vcm1hbF9tdWx0aShpbiwgb3V0LCBmcmFtZUNvdW50KTsKK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6cHJvY2Vzc190cmFuc2l0aW9uX2J5cGFzc19tdWx0aShjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpICB7CisgICAgaWYgKHVwZGF0ZUNvZWZzKElERU5USVRZX0NPRUZTLCBmcmFtZUNvdW50KSkgeworICAgICAgICBzZXRTdGF0ZShTVEFURV9OT1JNQUwpOworICAgIH0KKyAgICBwcm9jZXNzX25vcm1hbF9tdWx0aShpbiwgb3V0LCBmcmFtZUNvdW50KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0JpcXVhZEZpbHRlci5oIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0JpcXVhZEZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMGUyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQmlxdWFkRmlsdGVyLmgKQEAgLTAsMCArMSwxODAgQEAKKy8qIC8vZGV2aWNlL2luY2x1ZGUvc2VydmVyL0F1ZGlvRmxpbmdlci9BdWRpb0JpcXVhZEZpbHRlci5oCisqKgorKiogQ29weXJpZ2h0IDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyNpZm5kZWYgQU5EUk9JRF9BVURJT19CSVFVQURfRklMVEVSX0gKKyNkZWZpbmUgQU5EUk9JRF9BVURJT19CSVFVQURfRklMVEVSX0gKKworI2luY2x1ZGUgIkF1ZGlvQ29tbW9uLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKy8vIEEgYmlxdWFkIGZpbHRlci4KKy8vIEltcGxlbWVudHMgdGhlIHJlY3Vyc2lvbiB5W25dPWEwKnlbbi0xXSthMSp5W24tMl0rYjAqeFtuXStiMSp4W24tMV0rYjIqeFtuLTJdCisvLyAodGhlIGEwIGFuZCBhMSBjb2VmZmljaWVudHMgaGF2ZSBhbiBvcHBvc2l0ZSBzaWduIHRvIHRoZSBjb21tb24gY29udmVudGlvbikKKy8vIFRoZSBmaWx0ZXIgd29ya3Mgb24gZml4ZWQgc2l6ZWQgYmxvY2tzIG9mIGRhdGEgKGZyYW1lQ291bnQgbXVsdGktY2hhbm5lbAorLy8gc2FtcGxlcywgYXMgZGVmaW5lZCBkdXJpbmcgY29uc3RydWN0aW9uKS4gQW4gYXJiaXRyYXJ5IG51bWJlciBvZiBpbnRlcmxhY2VkCisvLyBjaGFubmVscyBpcyBzdXBwb3J0ZWQuCisvLyBGaWx0ZXIgY2FuIG9wZXJhdGUgaW4gYW4gZW5hYmxlZCAoYWN0aXZlKSBvciBkaXNhYmxlZCAoYnlwYXNzZWQpIHN0YXRlcy4KKy8vIEEgbWVjaGFuaXNtIGZvciBzdXBwcmVzc2lvbiBvZiBhcnRpZmFjdHMgY2F1c2VkIGJ5IGFicnVwdCBjb2VmZmljaWVudCBjaGFuZ2VzCisvLyBpcyBpbXBsZW1lbnRlZDogbm9ybWFsbHksIHdoZW4gdGhlIGVuYWJsZSgpLCBkaXNhYmxlKCkgYW5kIHNldENvZWZzKCkgbWV0aG9kcworLy8gYXJlIGNhbGxlZCB3aXRob3V0IHRoZSBpbW1lZGlhdGUgZmxhZyBzZXQsIHRoZSBmaWx0ZXIgc21vb3RobHkgdHJhbnNpdGlvbnMKKy8vIGZyb20gaXRzIGN1cnJlbnQgc3RhdGUgdG8gdGhlIGRlc2lyZWQgc3RhdGUuCitjbGFzcyBBdWRpb0JpcXVhZEZpbHRlciB7CitwdWJsaWM6CisgICAgLy8gTWF4IG51bWJlciBvZiBjaGFubmVscyAoY2FuIGJlIGNoYW5nZWQgaGVyZSwgYW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIHdvcmspLgorICAgIHN0YXRpYyBjb25zdCBpbnQgTUFYX0NIQU5ORUxTID0gMjsKKyAgICAvLyBOdW1iZXIgb2YgY29lZmZpY2llbnRzLgorICAgIHN0YXRpYyBjb25zdCBpbnQgTlVNX0NPRUZTID0gNTsKKworICAgIC8vIENvbnN0cnVjdG9yLgorICAgIC8vIG5DaGFubmVscyAgICBOdW1iZXIgb2YgaW5wdXQvb3V0cHV0IGNoYW5uZWxzLgorICAgIC8vIHNhbXBsZVJhdGUgICBTYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgQXVkaW9CaXF1YWRGaWx0ZXIoaW50IG5DaGFubmVscywgaW50IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmVjb25maWd1cmF0aW9uIG9mIHRoZSBmaWx0ZXIuIEltcGxpZXMgY2xlYXIoKS4KKyAgICAvLyBuQ2hhbm5lbHMgICAgTnVtYmVyIG9mIGlucHV0L291dHB1dCBjaGFubmVscy4KKyAgICAvLyBzYW1wbGVSYXRlICAgU2FtcGxlIHJhdGUsIGluIEh6LgorICAgIHZvaWQgY29uZmlndXJlKGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlKTsKKworICAgIC8vIFJlc2V0cyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGZpbHRlci4KKyAgICAvLyBDb2VmZmljaWVudHMgYXJlIHJlc2V0IHRvIGlkZW50aXR5LCBzdGF0ZSBiZWNvbWVzIGRpc2FibGVkLiBUaGlzIGNoYW5nZQorICAgIC8vIGhhcHBlbnMgaW1tZWRpYXRlbHkgYW5kIG1pZ2h0IGNhdXNlIGRpc2NvbnRpbnVpdGllcyBpbiB0aGUgb3V0cHV0LgorICAgIC8vIERlbGF5IGxpbmVzIGFyZSBub3QgY2xlYXJlZC4KKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAvLyBDbGVhcnMgdGhlIGRlbGF5IGxpbmVzLgorICAgIC8vIFRoaXMgY2hhbmdlIGhhcHBlbnMgaW1tZWRpYXRlbHkgYW5kIG1pZ2h0IGNhdXNlIGRpc2NvbnRpbnVpdGllcyBpbiB0aGUKKyAgICAvLyBvdXRwdXQuCisgICAgdm9pZCBjbGVhcigpOworCisgICAgLy8gU2V0cyB0aGUgY29lZmZpY2llbnRzLgorICAgIC8vIElmIGNhbGxlZCB3aGVuIGZpbHRlciBpcyBkaXNhYmxlZCwgd2lsbCBoYXZlIG5vIGltbWVkaWF0ZSBlZmZlY3QsIGJ1dCB0aGUKKyAgICAvLyBuZXcgY29lZmZpY2llbnRzIHdpbGwgYmUgc2V0IGFuZCB1c2VkIG5leHQgdGltZSB0aGUgZmlsdGVyIGlzIGVuYWJsZWQuCisgICAgLy8gY29lZnMgICAgICAgIFRoZSBuZXcgY29lZmZpY2llbnRzLgorICAgIC8vIGltbWVkaWF0ZSAgICBJZiB0cnVlLCB0cmFuc2l0aW9ucyB0byBuZXcgY29lZmZpY2llbnRzIHNtb290aGx5LCB3aXRob3V0CisgICAgLy8gICAgICAgICAgICAgIGludHJvZHVjaW5nIGRpc2NvbnRpbnVpdGllcyBpbiB0aGUgb3V0cHV0LiBPdGhlcndpc2UsCisgICAgLy8gICAgICAgICAgICAgIHRyYW5zaXRpb25zIGltbWVkaWF0ZWx5LgorICAgIHZvaWQgc2V0Q29lZnMoY29uc3QgYXVkaW9fY29lZl90IGNvZWZzW05VTV9DT0VGU10sIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworCisgICAgLy8gUHJvY2VzcyBhIGJ1ZmZlciBvZiBkYXRhLiBBbHdheXMgcHJvY2Vzc2VzIGZyYW1lQ291bnQgbXVsdGktY2hhbm5lbAorICAgIC8vIHNhbXBsZXMuIFByb2Nlc3NpbmcgY2FuIGJlIGRvbmUgaW4tcGxhY2UsIGJ5IHBhc3NpbmcgdGhlIHNhbWUgYnVmZmVyIGFzCisgICAgLy8gYm90aCBhcmd1bWVudHMuCisgICAgLy8gaW4gICAgICAgICAgIFRoZSBpbnB1dCBidWZmZXIuIFNob3VsZCBiZSBvZiBzaXplIGZyYW1lQ291bnQgKiBuQ2hhbm5lbHMuCisgICAgLy8gb3V0ICAgICAgICAgIFRoZSBvdXRwdXQgYnVmZmVyLiBTaG91bGQgYmUgb2Ygc2l6ZSBmcmFtZUNvdW50ICogbkNoYW5uZWxzLgorICAgIC8vIGZyYW1lQ291bnQgICBOdW1iZXIgb2YgbXVsdGktY2hhbm5lbCBzYW1wbGVzIHRvIHByb2Nlc3MuCisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGF1ZGlvX3NhbXBsZV90IGluW10sIGF1ZGlvX3NhbXBsZV90IG91dFtdLAorICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCk7CisKKyAgICAvLyBFbmFibGVzIChhY3RpdmF0ZXMpIHRoZSBmaWx0ZXIuCisgICAgLy8gaW1tZWRpYXRlICAgIElmIHRydWUsIHRyYW5zaXRpb25zIHRvIG5ldyBzdGF0ZSBzbW9vdGhseSwgd2l0aG91dAorICAgIC8vICAgICAgICAgICAgICBpbnRyb2R1Y2luZyBkaXNjb250aW51aXRpZXMgaW4gdGhlIG91dHB1dC4gT3RoZXJ3aXNlLAorICAgIC8vICAgICAgICAgICAgICB0cmFuc2l0aW9ucyBpbW1lZGlhdGVseS4KKyAgICB2b2lkIGVuYWJsZShib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKKworICAgIC8vIERpc2FibGVzIChieXBhc3NlcykgdGhlIGZpbHRlci4KKyAgICAvLyBpbW1lZGlhdGUgICAgSWYgdHJ1ZSwgdHJhbnNpdGlvbnMgdG8gbmV3IHN0YXRlIHNtb290aGx5LCB3aXRob3V0CisgICAgLy8gICAgICAgICAgICAgIGludHJvZHVjaW5nIGRpc2NvbnRpbnVpdGllcyBpbiB0aGUgb3V0cHV0LiBPdGhlcndpc2UsCisgICAgLy8gICAgICAgICAgICAgIHRyYW5zaXRpb25zIGltbWVkaWF0ZWx5LgorICAgIHZvaWQgZGlzYWJsZShib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKKworcHJpdmF0ZToKKyAgICAvLyBBIHByb3RvdHlwZSBvZiB0aGUgYWN0dWFsIHByb2Nlc3NpbmcgZnVuY3Rpb24uIEhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMKKyAgICAvLyB0aGUgcHJvY2VzcygpIG1ldGhvZC4KKyAgICB0eXBlZGVmIHZvaWQgKEF1ZGlvQmlxdWFkRmlsdGVyOjoqcHJvY2Vzc19mdW5jKShjb25zdCBhdWRpb19zYW1wbGVfdFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpOworCisgICAgLy8gVGhlIG1heGltdW0gcmF0ZSBvZiBjb2VmZmljaWVudCBjaGFuZ2UsIG1lYXN1cmVkIGluIGNvZWZmaWNpZW50IHVuaXRzIHBlcgorICAgIC8vIHNlY29uZC4KKyAgICBzdGF0aWMgY29uc3QgYXVkaW9fY29lZl90IE1BWF9ERUxUQV9QRVJfU0VDID0gMjAwMDsKKworICAgIC8vIENvZWZmaWNpZW50cyBvZiBpZGVudGl0eSB0cmFuc2Zvcm1hdGlvbi4KKyAgICBzdGF0aWMgY29uc3QgYXVkaW9fY29lZl90IElERU5USVRZX0NPRUZTW05VTV9DT0VGU107CisKKyAgICAvLyBGaWx0ZXIgc3RhdGUuCisgICAgZW51bSBzdGF0ZV90IHsKKyAgICAgICAgLy8gQnlwYXNzLgorICAgICAgICBTVEFURV9CWVBBU1MgPSAweDAxLAorICAgICAgICAvLyBJbiB0aGUgcHJvY2VzcyBvZiBzbW9vdGggdHJhbnNpdGlvbiB0byBieXBhc3Mgc3RhdGUuCisgICAgICAgIFNUQVRFX1RSQU5TSVRJT05fVE9fQllQQVNTID0gMHgwMiwKKyAgICAgICAgLy8gSW4gdGhlIHByb2Nlc3Mgb2Ygc21vb3RoIHRyYW5zaXRpb24gdG8gbm9ybWFsIChlbmFibGVkKSBzdGF0ZS4KKyAgICAgICAgU1RBVEVfVFJBTlNJVElPTl9UT19OT1JNQUwgPSAweDA0LAorICAgICAgICAvLyBJbiBub3JtYWwgKGVuYWJsZWQpIHN0YXRlLgorICAgICAgICBTVEFURV9OT1JNQUwgPSAweDA1LAorICAgICAgICAvLyBBIGJpdC1tYXNrIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBmaWx0ZXIgaXMgZW5hYmxlZCBvciBkaXNhYmxlZAorICAgICAgICAvLyBpbiB0aGUgZXllcyBvZiB0aGUgY2xpZW50LgorICAgICAgICBTVEFURV9FTkFCTEVEX01BU0sgPSAweDA0CisgICAgfTsKKworICAgIC8vIE51bWJlciBvZiBjaGFubmVscy4KKyAgICBpbnQgbU51bUNoYW5uZWxzOworICAgIC8vIEN1cnJlbnQgc3RhdGUuCisgICAgc3RhdGVfdCBtU3RhdGU7CisgICAgLy8gTWF4aW11bSBjb2VmZmljaWVudCBkZWx0YSBwZXIgc2FtcGxlLgorICAgIGF1ZGlvX2NvZWZfdCBtTWF4RGVsdGE7CisKKyAgICAvLyBBIGJpdC1tYXNrIGRlc2lnbmF0aW5nIGZvciB3aGljaCBjb2VmZmljaWVudHMgdGhlIGN1cnJlbnQgdmFsdWUgaXMgbm90CisgICAgLy8gbmVjZXNzYXJpbHkgaWRlbnRpY2FsIHRvIHRoZSB0YXJnZXQgdmFsdWUgKHNpbmNlIHdlJ3JlIGluIHRyYW5zaXRpb24KKyAgICAvLyBzdGF0ZSkuCisgICAgdWludDMyX3QgbUNvZWZEaXJ0eUJpdHM7CisgICAgLy8gVGhlIGN1cnJlbnQgY29lZmZpY2llbnRzLgorICAgIGF1ZGlvX2NvZWZfdCBtQ29lZnNbTlVNX0NPRUZTXTsKKyAgICAvLyBUaGUgdGFyZ2V0IGNvZWZmaWNpZW50cy4gV2lsbCBub3QgYmUgaWRlbnRpY2FsIHRvIG1Db2VmcyBpZiB3ZSBhcmUgaW4gYQorICAgIC8vIHRyYW5zaXRpb24gc3RhdGUuCisgICAgYXVkaW9fY29lZl90IG1UYXJnZXRDb2Vmc1tOVU1fQ09FRlNdOworCisgICAgLy8gVGhlIGRlbGF5IGxpbmVzLgorICAgIGF1ZGlvX3NhbXBsZV90IG1EZWxheXNbTUFYX0NIQU5ORUxTXVs0XTsKKworICAgIC8vIEN1cnJlbnQgcHJvY2Vzc2luZyBmdW5jdGlvbiAoZGV0ZXJtaW5lcyBhY2NvcmRpbmcgdG8gY3VycmVudCBzdGF0ZSBhbmQKKyAgICAvLyBudW1iZXIgb2YgY2hhbm5lbHMpLgorICAgIHByb2Nlc3NfZnVuYyBtQ3VyUHJvY2Vzc0Z1bmM7CisKKyAgICAvLyBTZXRzIGEgbmV3IHN0YXRlLiBVcGRhdGVzIHRoZSBwcm9jZXNzaW5nIGZ1bmN0aW9uIGFjY29yZGluZ2x5LCBhbmQgc2V0cworICAgIC8vIHRoZSBkaXJ0eSBiaXRzIGlmIGNoYW5naW5nIHRvIGEgdHJhbnNpdGlvbiBzdGF0ZS4KKyAgICB2b2lkIHNldFN0YXRlKHN0YXRlX3Qgc3RhdGUpOworCisgICAgLy8gSW4gYSB0cmFuc2l0aW9uIHN0YXRlLCBtb2RpZmllcyB0aGUgY3VycmVudCBjb2VmcyB0b3dhcmRzIHRoZSBwYXNzZWQKKyAgICAvLyBjb2Vmcywgd2hpbGUga2VlcGluZyBhIHNtb290aCBjaGFuZ2UgcmF0ZS4gV2hlbmV2ZXIgYSBjb2VmIHJlYWNoZXMgaXRzCisgICAgLy8gdGFyZ2V0IHZhbHVlLCB0aGUgZGlydHkgYml0IGlzIGNsZWFyZWQuIElmIGFsbCBhcmUgY2xlYXIsIHRoZSBmdW5jdGlvbgorICAgIC8vIHJldHVybnMgdHJ1ZSwgYW5kIHdlIGNhbiB0aGVuIGNoYW5nZSB0byBvdXIgdGFyZ2V0IHN0YXRlLgorICAgIGJvb2wgdXBkYXRlQ29lZnMoY29uc3QgYXVkaW9fY29lZl90IGNvZWZzW05VTV9DT0VGU10sIGludCBmcmFtZUNvdW50KTsKKworICAgIC8vIFByb2Nlc3NpbmcgZnVuY3Rpb24gd2hlbiBpbiBkaXNhYmxlZCBzdGF0ZS4KKyAgICB2b2lkIHByb2Nlc3NfYnlwYXNzKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpOworICAgIC8vIFByb2Nlc3NpbmcgZnVuY3Rpb24gd2hlbiBpbiBub3JtYWwgc3RhdGUsIG1vbm8uCisgICAgdm9pZCBwcm9jZXNzX25vcm1hbF9tb25vKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCk7CisgICAgLy8gUHJvY2Vzc2luZyBmdW5jdGlvbiB3aGVuIHRyYW5zaXRpb25pbmcgdG8gbm9ybWFsIHN0YXRlLCBtb25vLgorICAgIHZvaWQgcHJvY2Vzc190cmFuc2l0aW9uX25vcm1hbF9tb25vKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgKiBvdXQsIGludCBmcmFtZUNvdW50KTsKKyAgICAvLyBQcm9jZXNzaW5nIGZ1bmN0aW9uIHdoZW4gdHJhbnNpdGlvbmluZyB0byBieXBhc3Mgc3RhdGUsIG1vbm8uCisgICAgdm9pZCBwcm9jZXNzX3RyYW5zaXRpb25fYnlwYXNzX21vbm8oY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwgaW50IGZyYW1lQ291bnQpOworICAgIC8vIFByb2Nlc3NpbmcgZnVuY3Rpb24gd2hlbiBpbiBub3JtYWwgc3RhdGUsIG11bHRpLWNoYW5uZWwuCisgICAgdm9pZCBwcm9jZXNzX25vcm1hbF9tdWx0aShjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLCBhdWRpb19zYW1wbGVfdCAqIG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KTsKKyAgICAvLyBQcm9jZXNzaW5nIGZ1bmN0aW9uIHdoZW4gdHJhbnNpdGlvbmluZyB0byBub3JtYWwgc3RhdGUsIG11bHRpLWNoYW5uZWwuCisgICAgdm9pZCBwcm9jZXNzX3RyYW5zaXRpb25fbm9ybWFsX211bHRpKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LCBpbnQgZnJhbWVDb3VudCk7CisgICAgLy8gUHJvY2Vzc2luZyBmdW5jdGlvbiB3aGVuIHRyYW5zaXRpb25pbmcgdG8gYnlwYXNzIHN0YXRlLCBtdWx0aS1jaGFubmVsLgorICAgIHZvaWQgcHJvY2Vzc190cmFuc2l0aW9uX2J5cGFzc19tdWx0aShjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwgaW50IGZyYW1lQ291bnQpOworfTsKK30KKworI2VuZGlmIC8vIEFORFJPSURfQVVESU9fQklRVUFEX0ZJTFRFUl9ICmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQ29lZkludGVycG9sYXRvci5jcHAgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQ29lZkludGVycG9sYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM5YWI5ZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Db2VmSW50ZXJwb2xhdG9yLmNwcApAQCAtMCwwICsxLDg0IEBACisvKiAvL2RldmljZS9zZXJ2ZXJzL0F1ZGlvRmxpbmdlci9BdWRpb0NvZWZJbnRlcnBvbGF0b3IuY3BwCisgKioKKyAqKiBDb3B5cmlnaHQgMjAwOCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoqCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoqCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoqCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJBdWRpb0NvZWZJbnRlcnBvbGF0b3IuaCIKKworI2RlZmluZSBMSUtFTFkoIGV4cCApICAgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCB0cnVlICApKQorI2RlZmluZSBVTkxJS0VMWSggZXhwICkgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCBmYWxzZSApKQorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0F1ZGlvQ29lZkludGVycG9sYXRvcjo6QXVkaW9Db2VmSW50ZXJwb2xhdG9yKHNpemVfdCBuSW5EaW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGluRGltc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5PdXREaW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXVkaW9fY29lZl90ICogdGFibGUpIHsKKyAgICBtTnVtSW5EaW1zID0gbkluRGltczsKKyAgICBtZW1jcHkobUluRGltcywgaW5EaW1zLCBuSW5EaW1zICogc2l6ZW9mKHNpemVfdCkpOworICAgIG1OdW1PdXREaW1zID0gbk91dERpbXM7CisgICAgbVRhYmxlID0gdGFibGU7CisgICAgLy8gSW5pdGlhbGl6ZSBvZmZzZXRzIGFycmF5CisgICAgc2l6ZV90IGRpbSA9IG5JbkRpbXMgLSAxOworICAgIG1JbkRpbU9mZnNldHNbbkluRGltcyAtIDFdID0gbk91dERpbXM7CisgICAgd2hpbGUgKGRpbS0tID4gMCkgeworICAgICAgICBtSW5EaW1PZmZzZXRzW2RpbV0gPSBtSW5EaW1PZmZzZXRzW2RpbSArIDFdICogbUluRGltc1tkaW0gKyAxXTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9Db2VmSW50ZXJwb2xhdG9yOjpnZXRDb2VmKGNvbnN0IGludCBpbnRDb29yZFtdLCB1aW50MzJfdCBmcmFjQ29vcmRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2NvZWZfdCBvdXRbXSkgeworICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgc2l6ZV90IGRpbSA9IG1OdW1JbkRpbXM7CisgICAgd2hpbGUgKGRpbS0tID4gMCkgeworICAgICAgICBpZiAoVU5MSUtFTFkoaW50Q29vcmRbZGltXSA8IDApKSB7CisgICAgICAgICAgICBmcmFjQ29vcmRbZGltXSA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkoaW50Q29vcmRbZGltXSA+PSAoaW50KW1JbkRpbXNbZGltXSAtIDEpKSB7CisgICAgICAgICAgICBmcmFjQ29vcmRbZGltXSA9IDA7CisgICAgICAgICAgICBpbmRleCArPSBtSW5EaW1PZmZzZXRzW2RpbV0gKiAobUluRGltc1tkaW1dIC0gMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbmRleCArPSBtSW5EaW1PZmZzZXRzW2RpbV0gKiBpbnRDb29yZFtkaW1dOworICAgICAgICB9CisgICAgfQorICAgIGdldENvZWZSZWN1cnNlKGluZGV4LCBmcmFjQ29vcmQsIG91dCwgMCk7Cit9CisKK3ZvaWQgQXVkaW9Db2VmSW50ZXJwb2xhdG9yOjpnZXRDb2VmUmVjdXJzZShzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgZnJhY0Nvb3JkW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fY29lZl90IG91dFtdLCBzaXplX3QgZGltKSB7CisgICAgaWYgKGRpbSA9PSBtTnVtSW5EaW1zKSB7CisgICAgICAgIG1lbWNweShvdXQsIG1UYWJsZSArIGluZGV4LCBtTnVtT3V0RGltcyAqIHNpemVvZihhdWRpb19jb2VmX3QpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBnZXRDb2VmUmVjdXJzZShpbmRleCwgZnJhY0Nvb3JkLCBvdXQsIGRpbSArIDEpOworICAgICAgICBpZiAoTElLRUxZKGZyYWNDb29yZCAhPSAwKSkgeworICAgICAgICAgICBhdWRpb19jb2VmX3QgdGVtcENvZWZbTUFYX09VVF9ESU1TXTsKKyAgICAgICAgICAgZ2V0Q29lZlJlY3Vyc2UoaW5kZXggKyBtSW5EaW1PZmZzZXRzW2RpbV0sIGZyYWNDb29yZCwgdGVtcENvZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkaW0gKyAxKTsKKyAgICAgICAgICAgIHNpemVfdCBkID0gbU51bU91dERpbXM7CisgICAgICAgICAgICB3aGlsZSAoZC0tID4gMCkgeworICAgICAgICAgICAgICAgIG91dFtkXSA9IGludGVycChvdXRbZF0sIHRlbXBDb2VmW2RdLCBmcmFjQ29vcmRbZGltXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK2F1ZGlvX2NvZWZfdCBBdWRpb0NvZWZJbnRlcnBvbGF0b3I6OmludGVycChhdWRpb19jb2VmX3QgbG8sIGF1ZGlvX2NvZWZfdCBoaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFjKSB7CisgICAgaW50NjRfdCBkZWx0YSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KGhpLWxvKSAqIGZyYWM7CisgICAgcmV0dXJuIGxvICsgc3RhdGljX2Nhc3Q8YXVkaW9fY29lZl90PiAoZGVsdGEgPj4gMzIpOworfQorCit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQ29lZkludGVycG9sYXRvci5oIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0NvZWZJbnRlcnBvbGF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2U1Njk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0NvZWZJbnRlcnBvbGF0b3IuaApAQCAtMCwwICsxLDk4IEBACisvKiAvL2RldmljZS9pbmNsdWRlL3NlcnZlci9BdWRpb0ZsaW5nZXIvQXVkaW9Db2VmSW50ZXJwb2xhdG9yLmgKKyAqKgorICoqIENvcHlyaWdodCAyMDA3LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKioKKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKioKKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKioKKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX0FVRElPX0NPRUZfSU5URVJQT0xBVE9SX0gKKyNkZWZpbmUgQU5EUk9JRF9BVURJT19DT0VGX0lOVEVSUE9MQVRPUl9ICisKKyNpbmNsdWRlICJBdWRpb0NvbW1vbi5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIEEgaGVscGVyIGNsYXNzIGZvciBsaW5lYXIgaW50ZXJwb2xhdGlvbiBvZiBOLUQgLT4gTS1EIGNvZWZmaWNpZW50IHRhYmxlcy4KKy8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgc3VwcG9ydCBmb3Igb3V0LW9mLXJhbmdlIGluZGV4ZXMuCisvLyBEZXRhaWxzOgorLy8gVGhlIHB1cnBvc2UgaXMgZWZmaWNpZW50IGFwcHJveGltYXRpb24gb2YgYSBOLWRpbWVuc2lvbmFsIHZlY3RvciB0bworLy8gTS1kaW1lbnNpb25hbCBmdW5jdGlvbi4gVGhlIGFwcHJveGltYXRpb24gaXMgYmFzZWQgb24gYSB0YWJsZSBvZiBvdXRwdXQKKy8vIHZhbHVlcyBvbiBhIHVuaWZvcm0gZ3JpZCBvZiB0aGUgaW5wdXQgdmFsdWVzLiBWYWx1ZXMgbm90IG9uIHRoZSBncmlkIGFyZQorLy8gbGluZWFybHkgaW50ZXJwb2xhdGVkLgorLy8gQWNjZXNzIHRvIHZhbHVlcyBhcmUgZG9uZSBieSBzcGVjaWZ5aW5nIGlucHV0IHZhbHVlcyBpbiB0YWJsZSBpbmRleCB1bml0cywKKy8vIGhhdmluZyBhbiBpbnRlZ2VyIGFuZCBhIGZyYWN0aW9uYWwgcGFydCwgZS5nLiByZXRyaWV2aW5nIGEgdmFsdWUgZnJvbSBpbmRleAorLy8gMS40IHdpbGwgcmVzdWx0IGluIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gaW5kZXggMSBhbmQgaW5kZXggMi4KK2NsYXNzIEF1ZGlvQ29lZkludGVycG9sYXRvciB7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3IuCisgICAgLy8gbkluRGltcyAgICAgIE51bWJlciBvZiBpbnB1dCBkaW1lbnNpb25zIChsaW1pdGVkIHRvIE1BWF9JTl9ESU1TKS4KKyAgICAvLyBpbkRpbXMgICAgICAgQW4gYXJyYXkgb2Ygc2l6ZSBuSW5EaW1zIHdpdGggdGhlIHNpemUgb2YgdGhlIHRhYmxlIG9uIGVhY2gKKyAgICAvLyAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBkaW1lbnNpb24uCisgICAgLy8gbk91dERpbXMgICAgIE51bWJlciBvZiBvdXRwdXQgZGltZW5zaW9ucyAobGltaXRlZCB0byBNQVhfT1VUX0RJTVMpLgorICAgIC8vIHRhYmxlICAgICAgICBUaGUgY29lZmZpY2llbnQgdGFibGUuIFNob3VsZCBiZSBvZiBzaXplOgorICAgIC8vICAgICAgICAgICAgICBpbkRpbXNbMF0qaW5EaW1zWzFdKi4uLippbkRpbXNbbkluRGltcy0xXSpuT3V0RGltcywgd2hlcmUKKyAgICAvLyAgICAgICAgICAgICAgZnVuYyhbaSxqLGtdKSA9IHRhYmxlKGksaixrLDopCisgICAgQXVkaW9Db2VmSW50ZXJwb2xhdG9yKHNpemVfdCBuSW5EaW1zLCBjb25zdCBzaXplX3QgaW5EaW1zW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuT3V0RGltcywgY29uc3QgYXVkaW9fY29lZl90ICogdGFibGUpOworCisgICAgLy8gR2V0IHRoZSB2YWx1ZSBvZiB0aGUgYXBwcm94aW1hdGVkIGZ1bmN0aW9uIGF0IGEgZ2l2ZW4gcG9pbnQuCisgICAgLy8gaW50Q29vcmQgICAgIFRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIGlucHV0IHZhbHVlLiBTaG91bGQgYmUgYW4gYXJyYXkgb2YKKyAgICAvLyAgICAgICAgICAgICAgc2l6ZSBuSW5EaW1zLgorICAgIC8vIGZyYWNDb29yZCAgICBUaGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBpbnB1dCB2YWx1ZS4gU2hvdWxkIGJlIGFuIGFycmF5CisgICAgLy8gICAgICAgICAgICAgIG9mIHNpemUgbkluRGltcy4gVGhpcyB2YWx1ZSBpcyBpbiAzMi1iaXQgcHJlY2lzaW9uLgorICAgIC8vIG91dCAgICAgICAgICBBbiBhcnJheSBmb3IgdGhlIG91dHB1dCB2YWx1ZS4gU2hvdWxkIGJlIG9mIHNpemUgbk91dERpbXMuCisgICAgdm9pZCBnZXRDb2VmKGNvbnN0IGludCBpbnRDb29yZFtdLCB1aW50MzJfdCBmcmFjQ29vcmRbXSwgYXVkaW9fY29lZl90IG91dFtdKTsKKworcHJpdmF0ZToKKyAgICAvLyBNYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIGlucHV0IGRpbWVuc2lvbnMuCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBNQVhfSU5fRElNUyA9IDg7CisgICAgLy8gTWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBvdXRwdXQgZGltZW5zaW9ucy4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IE1BWF9PVVRfRElNUyA9IDg7CisKKyAgICAvLyBOdW1iZXIgb2YgaW5wdXQgZGltZW5zaW9ucy4KKyAgICBzaXplX3QgbU51bUluRGltczsKKyAgICAvLyBOdW1iZXIgb2YgaW5wdXQgZGltZW5zaW9ucy4KKyAgICBzaXplX3QgbUluRGltc1tNQVhfSU5fRElNU107CisgICAgLy8gVGhlIG9mZnNldCBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBpbmRleGVzIG9mIGVhY2ggZGltZW5zaW9uLiBUaGlzIGlzIGluCisgICAgLy8gZmFjdCBhIGN1bXVsYXRpdmUgcHJvZHVjdCBvZiBtSW5EaW1zIChkb25lIGluIHJldmVyc2UpLgorICAgIHNpemVfdCBtSW5EaW1PZmZzZXRzW01BWF9JTl9ESU1TXTsKKyAgICAvLyBOdW1iZXIgb2Ygb3V0cHV0IGRpbWVuc2lvbnMuCisgICAgc2l6ZV90IG1OdW1PdXREaW1zOworICAgIC8vIFRoZSBjb2VmZmljaWVudCB0YWJsZS4KKyAgICBjb25zdCBhdWRpb19jb2VmX3QgKiBtVGFibGU7CisKKyAgICAvLyBBIHJlY3Vyc2l2ZSBmdW5jdGlvbiBmb3IgZ2V0dGluZyBhbiBpbnRlcnBvbGF0ZWQgY29lZmZpY2llbnQgdmFsdWUuCisgICAgLy8gVGhlIHJlY3Vyc2lvbiBkZXB0aCBpcyB0aGUgbnVtYmVyIG9mIGlucHV0IGRpbWVuc2lvbnMuCisgICAgLy8gQXQgZWFjaCBzdGVwLCB3ZSBmZXRjaCB0d28gaW50ZXJwb2xhdGVkIHZhbHVlcyBvZiB0aGUgY3VycmVudCBkaW1lbnNpb24sCisgICAgLy8gYnkgdHdvIHJlY3Vyc2l2ZSBjYWxscyB0byB0aGlzIG1ldGhvZCBmb3IgdGhlIG5leHQgZGltZW5zaW9ucy4gV2UgdGhlbgorICAgIC8vIGxpbmVhcmx5IGludGVycG9sYXRlIHRoZXNlIHZhbHVlcyBvdmVyIHRoZSBjdXJyZW50IGRpbWVuc2lvbi4KKyAgICAvLyBpbmRleCAgICAgIFRoZSBsaW5lYXIgaW50ZWdlciBpbmRleCBvZiB0aGUgdmFsdWUgd2UgbmVlZCB0byBpbnRlcnBvbGF0ZS4KKyAgICAvLyBmcmFjQ29vcmQgIEEgdmVjdG9yIG9mIGZyYWN0aW9uYWwgY29vcmRpbmF0ZXMgZm9yIGVhY2ggb2YgdGhlIGlucHV0CisgICAgLy8gICAgICAgICAgICBkaW1lbnNpb25zLgorICAgIC8vIG91dCAgICAgICAgV2hlcmUgdGhlIG91dHB1dCBzaG91bGQgYmUgd3JpdHRlbi4gTmVlZHMgdG8gYmUgb2Ygc2l6ZQorICAgIC8vICAgICAgICAgICAgbU51bU91dERpbXMuCisgICAgLy8gZGltICAgICAgICBUaGUgaW5wdXQgZGltZW5zaW9ucyB3ZSBhcmUgY3VycmVudGx5IGludGVycG9sYXRpbmcuIFRoaXMKKyAgICAvLyAgICAgICAgICAgIHZhbHVlIHdpbGwgYmUgaW5jcmVhc2VkIG9uIHJlY3Vyc2l2ZSBjYWxscy4KKyAgICB2b2lkIGdldENvZWZSZWN1cnNlKHNpemVfdCBpbmRleCwgY29uc3QgdWludDMyX3QgZnJhY0Nvb3JkW10sCisgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19jb2VmX3Qgb3V0W10sIHNpemVfdCBkaW0pOworCisgICAgLy8gU2NhbGFyIGludGVycG9sYXRpb24gb2YgdHdvIGRhdGEgcG9pbnRzLgorICAgIC8vIGxvICAgICAgIFRoZSBmaXJzdCBkYXRhIHBvaW50LgorICAgIC8vIGhpICAgICAgIFRoZSBzZWNvbmQgZGF0YSBwb2ludC4KKyAgICAvLyBmcmFjICAgICBBIDMyLWJpdCBmcmFjdGlvbiBkZXNpZ25hdGluZyB0aGUgd2VpZ2h0IG9mIHRoZSBzZWNvbmQgcG9pbnQuCisgICAgc3RhdGljIGF1ZGlvX2NvZWZfdCBpbnRlcnAoYXVkaW9fY29lZl90IGxvLCBhdWRpb19jb2VmX3QgaGksIHVpbnQzMl90IGZyYWMpOworfTsKKworfQorCisjZW5kaWYgLy8gQU5EUk9JRF9BVURJT19DT0VGX0lOVEVSUE9MQVRPUl9ICmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQ29tbW9uLmggYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQ29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0ZjkzYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Db21tb24uaApAQCAtMCwwICsxLDkyIEBACisvKgorKioKKyoqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworCisjaWZuZGVmIEFORFJPSURfQVVESU9fQ09NTU9OX0gKKyNkZWZpbmUgQU5EUk9JRF9BVURJT19DT01NT05fSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gQXVkaW8gY29lZmZpY2llbnQgdHlwZS4KK3R5cGVkZWYgaW50MzJfdCBhdWRpb19jb2VmX3Q7CisvLyBBdWRpbyBzYW1wbGUgdHlwZS4KK3R5cGVkZWYgaW50MzJfdCBhdWRpb19zYW1wbGVfdDsKKy8vIEFjY3VtdWxhdG9yIHR5cGUgZm9yIGNvZWYgeCBzYW1wbGUuCit0eXBlZGVmIGludDY0X3QgYXVkaW9fY29lZl9zYW1wbGVfYWNjX3Q7CisKKy8vIE51bWJlciBvZiBmcmFjdGlvbiBiaXRzIGZvciBhdWRpbyBjb2VmZmljaWVudC4KK3N0YXRpYyBjb25zdCBpbnQgQVVESU9fQ09FRl9QUkVDSVNJT04gPSAyNDsKKy8vIEF1ZGlvIGNvZWZmaWNpZW50IHdpdGggdGhlIHZhbHVlIG9mIDEuMAorc3RhdGljIGNvbnN0IGF1ZGlvX2NvZWZfdCBBVURJT19DT0VGX09ORSA9IDEgPDwgQVVESU9fQ09FRl9QUkVDSVNJT047CisvLyBBdWRpbyBjb2VmZmljaWVudCB3aXRoIHRoZSB2YWx1ZSBvZiAwLjUKK3N0YXRpYyBjb25zdCBhdWRpb19jb2VmX3QgQVVESU9fQ09FRl9IQUxGID0gMSA8PCAoQVVESU9fQ09FRl9QUkVDSVNJT04gLSAxKTsKKy8vIE51bWJlciBvZiBmcmFjdGlvbiBiaXRzIGZvciBhdWRpbyBzYW1wbGUuCitzdGF0aWMgY29uc3QgaW50IEFVRElPX1NBTVBMRV9QUkVDSVNJT04gPSAyNDsKKy8vIEF1ZGlvIHNhbXBsZSB3aXRoIHRoZSB2YWx1ZSBvZiAxLjAKK3N0YXRpYyBjb25zdCBhdWRpb19zYW1wbGVfdCBBVURJT19TQU1QTEVfT05FID0gMSA8PCBBVURJT19TQU1QTEVfUFJFQ0lTSU9OOworCisvLyBUT0RPOiBUaGVzZSBhcmUganVzdCB0ZW1wb3JhcnkgbmFpdmUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBuZWNlc3NhcnkKKy8vIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBuZWVkZWQgZm9yIHRoZSBmaWx0ZXIuIFRoZXkgc2hvdWxkIGJlIG1vdmVkIHRvIGEgbW9yZQorLy8gZ2VuZXJpYyBsb2NhdGlvbiBhbmQgaW1wbGVtZW50ZWQgbW9yZSBlZmZpY2llbnRseS4KKworLy8gTXVsdGlwbHkgYSBzYW1wbGUgYnkgYSBjb2VmZmljaWVudCB0byByZXR1cm4gYW4gYWNjdW11bGF0b3IuCitpbmxpbmUgYXVkaW9fY29lZl9zYW1wbGVfYWNjX3QgbXVsX2NvZWZfc2FtcGxlKGF1ZGlvX2NvZWZfdCB4LCBhdWRpb19zYW1wbGVfdCB5KSB7CisgICAgcmV0dXJuICgoYXVkaW9fY29lZl9zYW1wbGVfYWNjX3QpICh4KSkgKiB5OworfQorCisvLyBNdWx0aXBseSBhbmQgYWNjdW11bGF0ZSBzYW1wbGUgYnkgYSBjb2VmZmljaWVudCB0byByZXR1cm4gYW4gYWNjdW11bGF0b3IuCitpbmxpbmUgYXVkaW9fY29lZl9zYW1wbGVfYWNjX3QgbWFjX2NvZWZfc2FtcGxlKGF1ZGlvX2NvZWZfdCB4LCBhdWRpb19zYW1wbGVfdCB5LCBhdWRpb19jb2VmX3NhbXBsZV9hY2NfdCBhY2MpIHsKKyAgICByZXR1cm4gYWNjICsgKChhdWRpb19jb2VmX3NhbXBsZV9hY2NfdCkgKHgpKSAqIHk7Cit9CisKKy8vIENvbnZlcnQgYSBzYW1wbGUtY29lZmZpY2llbnQgYWNjdW11bGF0b3IgdG8gYSBzYW1wbGUuCitpbmxpbmUgYXVkaW9fc2FtcGxlX3QgY29lZl9zYW1wbGVfYWNjX3RvX3NhbXBsZShhdWRpb19jb2VmX3NhbXBsZV9hY2NfdCBhY2MpIHsKKyAgICBpZiAoYWNjIDwgMCkgeworICAgICAgICBhY2MgKz0gQVVESU9fQ09FRl9PTkUgLSAxOworICAgIH0KKyAgICByZXR1cm4gKGF1ZGlvX3NhbXBsZV90KSAoYWNjID4+IEFVRElPX0NPRUZfUFJFQ0lTSU9OKTsKK30KKworLy8gQ29udmVydCBhIFMxNSBzYW1wbGUgdG8gYXVkaW9fc2FtcGxlX3QKK2lubGluZSBhdWRpb19zYW1wbGVfdCBzMTVfdG9fYXVkaW9fc2FtcGxlX3QoaW50MTZfdCBzMTUpIHsKKyAgICByZXR1cm4gYXVkaW9fc2FtcGxlX3QoczE1KSA8PCA5OworfQorCisvLyBDb252ZXJ0IGEgYXVkaW9fc2FtcGxlX3Qgc2FtcGxlIHRvIFMxNSAobm8gY2xpcHBpbmcpCitpbmxpbmUgaW50MTZfdCBhdWRpb19zYW1wbGVfdF90b19zMTUoYXVkaW9fc2FtcGxlX3Qgc2FtcGxlKSB7CisgICAgcmV0dXJuIGludDE2X3QoKHNhbXBsZSArICgxIDw8IDgpKSA+PiA5KTsKK30KKworLy8gQ29udmVydCBhIGF1ZGlvX3NhbXBsZV90IHNhbXBsZSB0byBTMTUgKHdpdGggY2xpcHBpbmcpCitpbmxpbmUgaW50MTZfdCBhdWRpb19zYW1wbGVfdF90b19zMTVfY2xpcChhdWRpb19zYW1wbGVfdCBzYW1wbGUpIHsKKyAgICAvLyBUT0RPOiBvcHRpbWl6ZSBmb3IgdGFyZ2V0cyBzdXBwb3J0aW5nIHRoaXMgYXMgYW4gYXRvbWljIG9wZXJhdGlvbi4KKyAgICBpZiAoX19idWlsdGluX2V4cGVjdChzYW1wbGUgPj0gKDB4N0ZGRiA8PCA5KSwgMCkpIHsKKyAgICAgICAgcmV0dXJuIDB4N0ZGRjsKKyAgICB9IGVsc2UgaWYgKF9fYnVpbHRpbl9leHBlY3Qoc2FtcGxlIDw9IC0oMHg4MDAwIDw8IDkpLCAwKSkgeworICAgICAgICByZXR1cm4gMHg4MDAwOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBhdWRpb19zYW1wbGVfdF90b19zMTUoc2FtcGxlKTsKKyAgICB9Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK30KKworI2VuZGlmIC8vIEFORFJPSURfQVVESU9fQ09NTU9OX0gKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9FcXVhbGl6ZXIuY3BwIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0VxdWFsaXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjOTQ3NgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9FcXVhbGl6ZXIuY3BwCkBAIC0wLDAgKzEsMzE1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIkF1ZGlvRXF1YWxpemVyIgorCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSAiQXVkaW9FcXVhbGl6ZXIuaCIKKyNpbmNsdWRlICJBdWRpb1BlYWtpbmdGaWx0ZXIuaCIKKyNpbmNsdWRlICJBdWRpb1NoZWx2aW5nRmlsdGVyLmgiCisjaW5jbHVkZSAiRWZmZWN0c01hdGguaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzaXplX3QgQXVkaW9FcXVhbGl6ZXI6OkdldEluc3RhbmNlU2l6ZShpbnQgbkJhbmRzKSB7CisgICAgYXNzZXJ0KG5CYW5kcyA+PSAyKTsKKyAgICByZXR1cm4gc2l6ZW9mKEF1ZGlvRXF1YWxpemVyKSArCisgICAgICAgICAgIHNpemVvZihBdWRpb1NoZWx2aW5nRmlsdGVyKSAqIDIgKworICAgICAgICAgICBzaXplb2YoQXVkaW9QZWFraW5nRmlsdGVyKSAqIChuQmFuZHMgLSAyKTsKK30KKworQXVkaW9FcXVhbGl6ZXIgKiBBdWRpb0VxdWFsaXplcjo6Q3JlYXRlSW5zdGFuY2Uodm9pZCAqIHBNZW0sIGludCBuQmFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByZXNldENvbmZpZyAqIHByZXNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgblByZXNldHMpIHsKKyAgICBMT0dWKCJBdWRpb0VxdWFsaXplcjo6Q3JlYXRlSW5zdGFuY2UocE1lbT0lcCwgbkJhbmRzPSVkLCBuQ2hhbm5lbHM9JWQsICIKKyAgICAgICAgICJzYW1wbGVSYXRlPSVkLCBuUHJlc2V0cz0lZCkiLAorICAgICAgICAgcE1lbSwgbkJhbmRzLCBuQ2hhbm5lbHMsIHNhbXBsZVJhdGUsIG5QcmVzZXRzKTsKKyAgICBhc3NlcnQobkJhbmRzID49IDIpOworICAgIGJvb2wgb3duTWVtID0gZmFsc2U7CisgICAgaWYgKHBNZW0gPT0gTlVMTCkgeworICAgICAgICBwTWVtID0gbWFsbG9jKEdldEluc3RhbmNlU2l6ZShuQmFuZHMpKTsKKyAgICAgICAgaWYgKHBNZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgb3duTWVtID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyAocE1lbSkgQXVkaW9FcXVhbGl6ZXIocE1lbSwgbkJhbmRzLCBuQ2hhbm5lbHMsIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3duTWVtLCBwcmVzZXRzLCBuUHJlc2V0cyk7Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OmNvbmZpZ3VyZShpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpjb25maWd1cmUobkNoYW5uZWxzPSVkLCBzYW1wbGVSYXRlPSVkKSIsIG5DaGFubmVscywKKyAgICAgICAgIHNhbXBsZVJhdGUpOworICAgIG1wTG93U2hlbGYtPmNvbmZpZ3VyZShuQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bVBlYWtpbmc7ICsraSkgeworICAgICAgICBtcFBlYWtpbmdGaWx0ZXJzW2ldLmNvbmZpZ3VyZShuQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIH0KKyAgICBtcEhpZ2hTaGVsZi0+Y29uZmlndXJlKG5DaGFubmVscywgc2FtcGxlUmF0ZSk7Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OmNsZWFyKCkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpjbGVhcigpIik7CisgICAgbXBMb3dTaGVsZi0+Y2xlYXIoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1QZWFraW5nOyArK2kpIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tpXS5jbGVhcigpOworICAgIH0KKyAgICBtcEhpZ2hTaGVsZi0+Y2xlYXIoKTsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6ZnJlZSgpIHsKKyAgICBMT0dWKCJBdWRpb0VxdWFsaXplcjo6ZnJlZSgpIik7CisgICAgaWYgKG1wTWVtICE9IE5VTEwpIHsKKyAgICAgICAgOjpmcmVlKG1wTWVtKTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OnJlc2V0KCkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpyZXNldCgpIik7CisgICAgY29uc3QgaW50MzJfdCBib3R0b20gPSBFZmZlY3RzX2xvZzIoa01pbkZyZXEpOworICAgIGNvbnN0IGludDMyX3QgdG9wID0gRWZmZWN0c19sb2cyKG1TYW1wbGVSYXRlICogNTAwKTsKKyAgICBjb25zdCBpbnQzMl90IGp1bXAgPSAodG9wIC0gYm90dG9tKSAvIChtTnVtUGVha2luZyArIDIpOworICAgIGludDMyX3QgY2VudGVyRnJlcSA9IGJvdHRvbSArIGp1bXAvMjsKKworICAgIG1wTG93U2hlbGYtPnJlc2V0KCk7CisgICAgbXBMb3dTaGVsZi0+c2V0RnJlcXVlbmN5KEVmZmVjdHNfZXhwMihjZW50ZXJGcmVxKSk7CisgICAgY2VudGVyRnJlcSArPSBqdW1wOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bVBlYWtpbmc7ICsraSkgeworICAgICAgICBtcFBlYWtpbmdGaWx0ZXJzW2ldLnJlc2V0KCk7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbaV0uc2V0RnJlcXVlbmN5KEVmZmVjdHNfZXhwMihjZW50ZXJGcmVxKSk7CisgICAgICAgIGNlbnRlckZyZXEgKz0ganVtcDsKKyAgICB9CisgICAgbXBIaWdoU2hlbGYtPnJlc2V0KCk7CisgICAgbXBIaWdoU2hlbGYtPnNldEZyZXF1ZW5jeShFZmZlY3RzX2V4cDIoY2VudGVyRnJlcSkpOworICAgIGNvbW1pdCh0cnVlKTsKKyAgICBtQ3VyUHJlc2V0ID0gUFJFU0VUX0NVU1RPTTsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6c2V0R2FpbihpbnQgYmFuZCwgaW50MzJfdCBtaWxsaWJlbCkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpzZXRHYWluKGJhbmQ9JWQsIG1pbGxpYmVsPSVkKSIsIGJhbmQsIG1pbGxpYmVsKTsKKyAgICBhc3NlcnQoYmFuZCA+PSAwICYmIGJhbmQgPCBtTnVtUGVha2luZyArIDIpOworICAgIGlmIChiYW5kID09IDApIHsKKyAgICAgICAgbXBMb3dTaGVsZi0+c2V0R2FpbihtaWxsaWJlbCk7CisgICAgfSBlbHNlIGlmIChiYW5kID09IG1OdW1QZWFraW5nICsgMSkgeworICAgICAgICBtcEhpZ2hTaGVsZi0+c2V0R2FpbihtaWxsaWJlbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tiYW5kIC0gMV0uc2V0R2FpbihtaWxsaWJlbCk7CisgICAgfQorICAgIG1DdXJQcmVzZXQgPSBQUkVTRVRfQ1VTVE9NOworfQorCit2b2lkIEF1ZGlvRXF1YWxpemVyOjpzZXRGcmVxdWVuY3koaW50IGJhbmQsIHVpbnQzMl90IG1pbGxpaGVydHopIHsKKyAgICBMT0dWKCJBdWRpb0VxdWFsaXplcjo6c2V0RnJlcXVlbmN5KGJhbmQ9JWQsIG1pbGxpaGVydHo9JWQpIiwgYmFuZCwKKyAgICAgICAgIG1pbGxpaGVydHopOworICAgIGFzc2VydChiYW5kID49IDAgJiYgYmFuZCA8IG1OdW1QZWFraW5nICsgMik7CisgICAgaWYgKGJhbmQgPT0gMCkgeworICAgICAgICBtcExvd1NoZWxmLT5zZXRGcmVxdWVuY3kobWlsbGloZXJ0eik7CisgICAgfSBlbHNlIGlmIChiYW5kID09IG1OdW1QZWFraW5nICsgMSkgeworICAgICAgICBtcEhpZ2hTaGVsZi0+c2V0RnJlcXVlbmN5KG1pbGxpaGVydHopOworICAgIH0gZWxzZSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbYmFuZCAtIDFdLnNldEZyZXF1ZW5jeShtaWxsaWhlcnR6KTsKKyAgICB9CisgICAgbUN1clByZXNldCA9IFBSRVNFVF9DVVNUT007Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OnNldEJhbmR3aWR0aChpbnQgYmFuZCwgdWludDMyX3QgY2VudHMpIHsKKyAgICBMT0dWKCJBdWRpb0VxdWFsaXplcjo6c2V0QmFuZHdpZHRoKGJhbmQ9JWQsIGNlbnRzPSVkKSIsIGJhbmQsIGNlbnRzKTsKKyAgICBhc3NlcnQoYmFuZCA+PSAwICYmIGJhbmQgPCBtTnVtUGVha2luZyArIDIpOworICAgIGlmIChiYW5kID4gMCAmJiBiYW5kIDwgbU51bVBlYWtpbmcgKyAxKSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbYmFuZCAtIDFdLnNldEJhbmR3aWR0aChjZW50cyk7CisgICAgICAgIG1DdXJQcmVzZXQgPSBQUkVTRVRfQ1VTVE9NOworICAgIH0KK30KKworaW50MzJfdCBBdWRpb0VxdWFsaXplcjo6Z2V0R2FpbihpbnQgYmFuZCkgY29uc3QgeworICAgIGFzc2VydChiYW5kID49IDAgJiYgYmFuZCA8IG1OdW1QZWFraW5nICsgMik7CisgICAgaWYgKGJhbmQgPT0gMCkgeworICAgICAgICByZXR1cm4gbXBMb3dTaGVsZi0+Z2V0R2FpbigpOworICAgIH0gZWxzZSBpZiAoYmFuZCA9PSBtTnVtUGVha2luZyArIDEpIHsKKyAgICAgICAgcmV0dXJuIG1wSGlnaFNoZWxmLT5nZXRHYWluKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG1wUGVha2luZ0ZpbHRlcnNbYmFuZCAtIDFdLmdldEdhaW4oKTsKKyAgICB9Cit9CisKK3VpbnQzMl90IEF1ZGlvRXF1YWxpemVyOjpnZXRGcmVxdWVuY3koaW50IGJhbmQpIGNvbnN0IHsKKyAgICBhc3NlcnQoYmFuZCA+PSAwICYmIGJhbmQgPCBtTnVtUGVha2luZyArIDIpOworICAgIGlmIChiYW5kID09IDApIHsKKyAgICAgICAgcmV0dXJuIG1wTG93U2hlbGYtPmdldEZyZXF1ZW5jeSgpOworICAgIH0gZWxzZSBpZiAoYmFuZCA9PSBtTnVtUGVha2luZyArIDEpIHsKKyAgICAgICAgcmV0dXJuIG1wSGlnaFNoZWxmLT5nZXRGcmVxdWVuY3koKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gbXBQZWFraW5nRmlsdGVyc1tiYW5kIC0gMV0uZ2V0RnJlcXVlbmN5KCk7CisgICAgfQorfQorCit1aW50MzJfdCBBdWRpb0VxdWFsaXplcjo6Z2V0QmFuZHdpZHRoKGludCBiYW5kKSBjb25zdCB7CisgICAgYXNzZXJ0KGJhbmQgPj0gMCAmJiBiYW5kIDwgbU51bVBlYWtpbmcgKyAyKTsKKyAgICBpZiAoYmFuZCA9PSAwIHx8IGJhbmQgPT0gbU51bVBlYWtpbmcgKyAxKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBtcFBlYWtpbmdGaWx0ZXJzW2JhbmQgLSAxXS5nZXRCYW5kd2lkdGgoKTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OmdldEJhbmRSYW5nZShpbnQgYmFuZCwgdWludDMyX3QgJiBsb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgJiBoaWdoKSBjb25zdCB7CisgICAgYXNzZXJ0KGJhbmQgPj0gMCAmJiBiYW5kIDwgbU51bVBlYWtpbmcgKyAyKTsKKyAgICBpZiAoYmFuZCA9PSAwKSB7CisgICAgICAgIGxvdyA9IDA7CisgICAgICAgIGhpZ2ggPSBtcExvd1NoZWxmLT5nZXRGcmVxdWVuY3koKTsKKyAgICB9IGVsc2UgaWYgKGJhbmQgPT0gbU51bVBlYWtpbmcgKyAxKSB7CisgICAgICAgIGxvdyA9IG1wSGlnaFNoZWxmLT5nZXRGcmVxdWVuY3koKTsKKyAgICAgICAgaGlnaCA9IG1TYW1wbGVSYXRlICogNTAwOworICAgIH0gZWxzZSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbYmFuZCAtIDFdLmdldEJhbmRSYW5nZShsb3csIGhpZ2gpOworICAgIH0KK30KKworY29uc3QgY2hhciAqIEF1ZGlvRXF1YWxpemVyOjpnZXRQcmVzZXROYW1lKGludCBwcmVzZXQpIGNvbnN0IHsKKyAgICBhc3NlcnQocHJlc2V0IDwgbU51bVByZXNldHMgJiYgcHJlc2V0ID49IFBSRVNFVF9DVVNUT00pOworICAgIGlmIChwcmVzZXQgPT0gUFJFU0VUX0NVU1RPTSkgeworICAgICAgICByZXR1cm4gIkN1c3RvbSI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG1wUHJlc2V0c1twcmVzZXRdLm5hbWU7CisgICAgfQorfQorCitpbnQgQXVkaW9FcXVhbGl6ZXI6OmdldE51bVByZXNldHMoKSBjb25zdCB7CisgICAgcmV0dXJuIG1OdW1QcmVzZXRzOworfQorCitpbnQgQXVkaW9FcXVhbGl6ZXI6OmdldFByZXNldCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbUN1clByZXNldDsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6c2V0UHJlc2V0KGludCBwcmVzZXQpIHsKKyAgICBMT0dWKCJBdWRpb0VxdWFsaXplcjo6c2V0UHJlc2V0KHByZXNldD0lZCkiLCBwcmVzZXQpOworICAgIGFzc2VydChwcmVzZXQgPCBtTnVtUHJlc2V0cyAmJiBwcmVzZXQgPj0gMCk7CisgICAgY29uc3QgUHJlc2V0Q29uZmlnICZwcmVzZXRDZmcgPSBtcFByZXNldHNbcHJlc2V0XTsKKyAgICBmb3IgKGludCBiYW5kID0gMDsgYmFuZCA8IChtTnVtUGVha2luZyArIDIpOyArK2JhbmQpIHsKKyAgICAgICAgY29uc3QgQmFuZENvbmZpZyAmIGJhbmRDZmcgPSBwcmVzZXRDZmcuYmFuZENvbmZpZ3NbYmFuZF07CisgICAgICAgIHNldEdhaW4oYmFuZCwgYmFuZENmZy5nYWluKTsKKyAgICAgICAgc2V0RnJlcXVlbmN5KGJhbmQsIGJhbmRDZmcuZnJlcSk7CisgICAgICAgIHNldEJhbmR3aWR0aChiYW5kLCBiYW5kQ2ZnLmJhbmR3aWR0aCk7CisgICAgfQorICAgIG1DdXJQcmVzZXQgPSBwcmVzZXQ7Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OmNvbW1pdChib29sIGltbWVkaWF0ZSkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpjb21taXQoaW1tZWRpYXRlPSVkKSIsIGltbWVkaWF0ZSk7CisgICAgbXBMb3dTaGVsZi0+Y29tbWl0KGltbWVkaWF0ZSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtUGVha2luZzsgKytpKSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbaV0uY29tbWl0KGltbWVkaWF0ZSk7CisgICAgfQorICAgIG1wSGlnaFNoZWxmLT5jb21taXQoaW1tZWRpYXRlKTsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6cHJvY2Vzcyhjb25zdCBhdWRpb19zYW1wbGVfdCAqIHBJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgKiBwT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeworLy8gICAgTE9HVigiQXVkaW9FcXVhbGl6ZXI6OnByb2Nlc3MoZnJhbWVDb3VudD0lZCkiLCBmcmFtZUNvdW50KTsKKyAgICBtcExvd1NoZWxmLT5wcm9jZXNzKHBJbiwgcE91dCwgZnJhbWVDb3VudCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtUGVha2luZzsgKytpKSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbaV0ucHJvY2VzcyhwSW4sIHBPdXQsIGZyYW1lQ291bnQpOworICAgIH0KKyAgICBtcEhpZ2hTaGVsZi0+cHJvY2VzcyhwSW4sIHBPdXQsIGZyYW1lQ291bnQpOworfQorCit2b2lkIEF1ZGlvRXF1YWxpemVyOjplbmFibGUoYm9vbCBpbW1lZGlhdGUpIHsKKyAgICBMT0dWKCJBdWRpb0VxdWFsaXplcjo6ZW5hYmxlKGltbWVkaWF0ZT0lZCkiLCBpbW1lZGlhdGUpOworICAgIG1wTG93U2hlbGYtPmVuYWJsZShpbW1lZGlhdGUpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bVBlYWtpbmc7ICsraSkgeworICAgICAgICBtcFBlYWtpbmdGaWx0ZXJzW2ldLmVuYWJsZShpbW1lZGlhdGUpOworICAgIH0KKyAgICBtcEhpZ2hTaGVsZi0+ZW5hYmxlKGltbWVkaWF0ZSk7Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OmRpc2FibGUoYm9vbCBpbW1lZGlhdGUpIHsKKyAgICBMT0dWKCJBdWRpb0VxdWFsaXplcjo6ZGlzYWJsZShpbW1lZGlhdGU9JWQpIiwgaW1tZWRpYXRlKTsKKyAgICBtcExvd1NoZWxmLT5kaXNhYmxlKGltbWVkaWF0ZSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtUGVha2luZzsgKytpKSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbaV0uZGlzYWJsZShpbW1lZGlhdGUpOworICAgIH0KKyAgICBtcEhpZ2hTaGVsZi0+ZGlzYWJsZShpbW1lZGlhdGUpOworfQorCitpbnQgQXVkaW9FcXVhbGl6ZXI6OmdldE1vc3RSZWxldmFudEJhbmQodWludDMyX3QgdGFyZ2V0RnJlcSkgY29uc3QgeworICAgIC8vIEZpcnN0LCBmaW5kIHRoZSB0d28gYmFuZHMgdGhhdCB0aGUgdGFyZ2V0IGZyZXF1ZW5jeSBpcyBiZXR3ZWVuLgorICAgIHVpbnQzMl90IGxvdyA9IG1wTG93U2hlbGYtPmdldEZyZXF1ZW5jeSgpOworICAgIGlmICh0YXJnZXRGcmVxIDw9IGxvdykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdWludDMyX3QgaGlnaCA9IG1wSGlnaFNoZWxmLT5nZXRGcmVxdWVuY3koKTsKKyAgICBpZiAodGFyZ2V0RnJlcSA+PSBoaWdoKSB7CisgICAgICAgIHJldHVybiBtTnVtUGVha2luZyArIDE7CisgICAgfQorICAgIGludCBiYW5kID0gbU51bVBlYWtpbmc7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtUGVha2luZzsgKytpKSB7CisgICAgICAgIHVpbnQzMl90IGZyZXEgPSBtcFBlYWtpbmdGaWx0ZXJzW2ldLmdldEZyZXF1ZW5jeSgpOworICAgICAgICBpZiAoZnJlcSA+PSB0YXJnZXRGcmVxKSB7CisgICAgICAgICAgICBoaWdoID0gZnJlcTsKKyAgICAgICAgICAgIGJhbmQgPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbG93ID0gZnJlcTsKKyAgICB9CisgICAgLy8gTm93LCBsb3cgaXMgcmlnaHQgYmVsb3cgdGhlIHRhcmdldCBhbmQgaGlnaCBpcyByaWdodCBhYm92ZS4gU2VlIHdoaWNoIG9uZQorICAgIC8vIGlzIGNsb3NlciBvbiBhIGxvZyBzY2FsZS4KKyAgICBsb3cgPSBFZmZlY3RzX2xvZzIobG93KTsKKyAgICBoaWdoID0gRWZmZWN0c19sb2cyKGhpZ2gpOworICAgIHRhcmdldEZyZXEgPSBFZmZlY3RzX2xvZzIodGFyZ2V0RnJlcSk7CisgICAgaWYgKGhpZ2ggLSB0YXJnZXRGcmVxIDwgdGFyZ2V0RnJlcSAtIGxvdykgeworICAgICAgICByZXR1cm4gYmFuZCArIDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGJhbmQ7CisgICAgfQorfQorCisKK0F1ZGlvRXF1YWxpemVyOjpBdWRpb0VxdWFsaXplcih2b2lkICogcE1lbSwgaW50IG5CYW5kcywgaW50IG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlUmF0ZSwgYm9vbCBvd25NZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJlc2V0Q29uZmlnICogcHJlc2V0cywgaW50IG5QcmVzZXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbVNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG1wUHJlc2V0cyhwcmVzZXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbU51bVByZXNldHMoblByZXNldHMpIHsKKyAgICBhc3NlcnQocE1lbSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoblByZXNldHMgPT0gMCB8fCBuUHJlc2V0cyA+IDAgJiYgcHJlc2V0cyAhPSBOVUxMKTsKKyAgICBtcE1lbSA9IG93bk1lbSA/IHBNZW0gOiBOVUxMOworCisgICAgcE1lbSA9IChjaGFyICopIHBNZW0gKyBzaXplb2YoQXVkaW9FcXVhbGl6ZXIpOworICAgIG1wTG93U2hlbGYgPSBuZXcgKHBNZW0pIEF1ZGlvU2hlbHZpbmdGaWx0ZXIoQXVkaW9TaGVsdmluZ0ZpbHRlcjo6a0xvd1NoZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKKyAgICBwTWVtID0gKGNoYXIgKikgcE1lbSArIHNpemVvZihBdWRpb1NoZWx2aW5nRmlsdGVyKTsKKyAgICBtcEhpZ2hTaGVsZiA9IG5ldyAocE1lbSkgQXVkaW9TaGVsdmluZ0ZpbHRlcihBdWRpb1NoZWx2aW5nRmlsdGVyOjprSGlnaFNoZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5DaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgcE1lbSA9IChjaGFyICopIHBNZW0gKyBzaXplb2YoQXVkaW9TaGVsdmluZ0ZpbHRlcik7CisgICAgbU51bVBlYWtpbmcgPSBuQmFuZHMgLSAyOworICAgIGlmIChtTnVtUGVha2luZyA+IDApIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9QZWFraW5nRmlsdGVyICo+KHBNZW0pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1QZWFraW5nOyArK2kpIHsKKyAgICAgICAgICAgIG5ldyAoJm1wUGVha2luZ0ZpbHRlcnNbaV0pIEF1ZGlvUGVha2luZ0ZpbHRlcihuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzZXQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0VxdWFsaXplci5oIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0VxdWFsaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMjg0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvRXF1YWxpemVyLmgKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQVVESU9FUVVBTElaRVJfSF8KKyNkZWZpbmUgQVVESU9FUVVBTElaRVJfSF8KKworI2luY2x1ZGUgIkF1ZGlvQ29tbW9uLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgQXVkaW9TaGVsdmluZ0ZpbHRlcjsKK2NsYXNzIEF1ZGlvUGVha2luZ0ZpbHRlcjsKKworLy8gQSBwYXJhbWV0cmljIGF1ZGlvIGVxdWFsaXplci4gU3VwcG9ydHMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBiYW5kcyBhbmQKKy8vIHByZXNldHMuCisvLyBUaGUgRVEgaXMgY29tcG9zZWQgb2YgYSBsb3ctc2hlbGYsIHplcm8gb3IgbW9yZSBwZWFraW5nIGZpbHRlcnMgYW5kIGEgaGlnaAorLy8gc2hlbGYsIHdoZXJlIGVhY2ggYmFuZCBoYXMgZnJlcXVlbmN5IGFuZCBnYWluIGNvbnRyb2xzLCBhbmQgdGhlIHBlYWtpbmcKKy8vIGZpbHRlcnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGJhbmR3aWR0aCBjb250cm9sLgorY2xhc3MgQXVkaW9FcXVhbGl6ZXIgeworcHVibGljOgorICAgIC8vIENvbmZpZ3VyYXRpb24gb2YgYSBzaW5nbGUgYmFuZC4KKyAgICBzdHJ1Y3QgQmFuZENvbmZpZyB7CisgICAgICAgIC8vIEdhaW4gaW4gbWlsbGliZWwuCisgICAgICAgIGludDMyX3QgZ2FpbjsKKyAgICAgICAgLy8gRnJlcXVlbmN5IGluIG1pbGxpaGVydHouCisgICAgICAgIHVpbnQzMl90IGZyZXE7CisgICAgICAgIC8vIEJhbmR3aWR0aCBpbiBjZW50cyAoaWdub3JlZCBvbiBzaGVsdmluZyBmaWx0ZXJzKS4KKyAgICAgICAgdWludDMyX3QgYmFuZHdpZHRoOworICAgIH07CisKKyAgICAvLyBQcmVzZXQgY29uZmlndXJhdGlvbi4KKyAgICBzdHJ1Y3QgUHJlc2V0Q29uZmlnIHsKKyAgICAgICAgLy8gSHVtYW4tcmVhZGFibGUgbmFtZS4KKyAgICAgICAgY29uc3QgY2hhciAqIG5hbWU7CisgICAgICAgIC8vIEFuIGFycmF5IG9mIHNpemUgbkJhbmRzIHdoZXJlIGVhY2ggZWxlbWVudCBpcyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRoZQorICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGJhbmQuCisgICAgICAgIGNvbnN0IEJhbmRDb25maWcgKiBiYW5kQ29uZmlnczsKKyAgICB9OworCisgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIHdoZW4gcmVxdWVzdGluZyBjdXJyZW50IHByZXNldCwgYW5kIEVRIGlzIG5vdCB1c2luZyBhCisgICAgLy8gcHJlc2V0LgorICAgIHN0YXRpYyBjb25zdCBpbnQgUFJFU0VUX0NVU1RPTSA9IC0xOworCisgICAgLy8gR2V0IHRoZSByZXF1aXJlZCBtZW1vcnkgc2l6ZSBmb3IgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KKyAgICAvLyBuQmFuZHMgICBOdW1iZXIgb2YgYmFuZHMgcmVxdWlyZWQgaW4gdGhlIGluc3RhbmNlLgorICAgIHN0YXRpYyBzaXplX3QgR2V0SW5zdGFuY2VTaXplKGludCBuQmFuZHMpOworCisgICAgLy8gQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgLy8gSWYgc3VjY2VlZHMsIGEgcmVzcGVjdGl2ZSBjYWxsIGlzIGV4cGVjdGVkIHRvIGZyZWVJbnN0YW5jZSgpLCByZWdhcmRsZXNzCisgICAgLy8gb2Ygd2hvIG93bnMgdGhlIGNvbnRleHQgbWVtb3J5LgorICAgIC8vIHBNZW0gICAgICAgICBBIG1lbW9yeSBidWZmZXIgb2YgYXQgbGVhc3QgdGhlIHNpemUgcmV0dXJuZWQgYnkKKyAgICAvLyAgICAgICAgICAgICAgR2V0SW5zdGFuY2VTaXplKCksIHdoZXJlIHRoZSBpbnN0YW5jZSBjb250ZXh0IGlzIHRvIGJlCisgICAgLy8gICAgICAgICAgICAgIHN0b3JlZC4gSWYgTlVMTCwgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlZCAodXNpbmcKKyAgICAvLyAgICAgICAgICAgICAgbWFsbG9jKS4KKyAgICAvLyBuQmFuZHMgICAgICAgTnVtYmVyIG9mIGJhbmRzLiBNdXN0IGJlID49IDIuCisgICAgLy8gbkNoYW5uZWxzICAgIE51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMgKGludGVybGFjZWQpLgorICAgIC8vIHNhbXBsZVJhdGUgICBUaGUgaW5wdXQvb3V0cHV0IHNhbXBsZSByYXRlLCBpbiBIei4KKyAgICAvLyBwcmVzZXRzICAgICAgVGhlIHByZXNldHMgY29uZmlndXJhdGlvbi4gTWF5IGJlIE5VTEwsIGJ1dCBpbiB0aGF0IGNhc2UgdGhlCisgICAgLy8gICAgICAgICAgICAgIGNsaWVudCBpcyByZXF1aXJlZCBub3QgdG8gY2FsbCBwcmVzZXQtcmVsYXRlZCBmdW5jdGlvbnMuCisgICAgLy8gICAgICAgICAgICAgIFRoaXMgYXJyYXkgaXMgb3duZWQgYnkgdGhlIGNsaWVudCBhbmQgaXMgbm90IGNvcGllZC4gSXQKKyAgICAvLyAgICAgICAgICAgICAgbXVzdCBiZSBrZXB0IHZhbGlkIGJ5IHRoZSBjbGllbnQgYXMgbG9uZyBhcyB0aGUgaW5zdGFuY2UgaXMKKyAgICAvLyAgICAgICAgICAgICAgYWxpdmUuCisgICAgLy8gblByZXNldHMgICAgIE51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcHJlc2V0cyBhcnJheS4KKyAgICAvLyByZXR1cm5zICAgICAgVGhlIGluc3RhbmNlIGlmIHN1Y2Nlc3MuIE5VTEwgaWYgcE1lbSBpcyBOVUxMIGFuZCBhbGxvY2F0aW9uCisgICAgLy8gICAgICAgICAgICAgIGZhaWxlZC4KKyAgICBzdGF0aWMgQXVkaW9FcXVhbGl6ZXIgKiBDcmVhdGVJbnN0YW5jZSh2b2lkICogcE1lbSwgaW50IG5CYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByZXNldENvbmZpZyAqIHByZXNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5QcmVzZXRzKTsKKworICAgIC8vIFJlY29uZmlndXJhdGlvbiBvZiB0aGUgZmlsdGVyLiBDaGFuZ2VzIGlucHV0L291dHB1dCBmb3JtYXQsIGJ1dCBkb2VzIG5vdAorICAgIC8vIGFsdGVyIGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlcy4gQ2F1c2VzIHJlc2V0IG9mIHRoZSBkZWxheSBsaW5lcy4KKyAgICAvLyBuQ2hhbm5lbHMgIE51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMgKGludGVybGFjZWQpLgorICAgIC8vIHNhbXBsZVJhdGUgVGhlIGlucHV0L291dHB1dCBzYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgdm9pZCBjb25maWd1cmUoaW50IG5DaGFubmVscywgaW50IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmVzZXRzIHRoZSBmaWx0ZXIgcGFyYW1ldGVycyB0byB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgICAvLyBmcmVxdWVuY3k6IDAKKyAgICAvLyBnYWluOiAwCisgICAgLy8gYmFuZHdpZHRoOiAxMjAwIGNlbnRzLgorICAgIC8vIEl0IGFsc28gZGlzYWJsZXMgdGhlIGZpbHRlci4gRG9lcyBub3QgY2xlYXIgdGhlIGRlbGF5IGxpbmVzLgorICAgIHZvaWQgcmVzZXQoKTsKKworICAgIC8vIENsZWFycyBkZWxheSBsaW5lcy4gRG9lcyBub3QgYWx0ZXIgcGFyYW1ldGVyIHZhbHVlcy4KKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICAvLyBGcmVlcyB0aGUgb2JqZWN0LiBXaWxsIGZyZWUgdGhlIG1lbW9yeSBpZiB0aGUgb2JqZWN0IG93bmVkIGl0LCBpLmUuIGlmCisgICAgLy8gYSBOVUxMIHBvaW50ZXIgd2FzIHBhc3NlZCB0byBDcmVhdGVJbnN0YW5jZSBhcyBwTWVtLgorICAgIHZvaWQgZnJlZSgpOworCisgICAgLy8gU2V0cyBnYWluIHZhbHVlLiBBY3R1YWwgY2hhbmdlIHdpbGwgb25seSB0YWtlIHBsYWNlIHVwb24gY29tbWl0KCkuCisgICAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHJlbWVtYmVyZWQgZXZlbiBpZiB0aGUgZmlsdGVyIGlzIGluIGRpc2FibGVkKCkgc3RhdGUuCisgICAgLy8gYmFuZCAgICAgVGhlIGJhbmQgdG8gc2V0IHRoZSBnYWluIGZvci4KKyAgICAvLyBtaWxsaWJlbCBHYWluIHZhbHVlIGluIG1pbGxpYmVsICgxLzEwMCBvZiBkZWNpYmVsKS4KKyAgICB2b2lkIHNldEdhaW4oaW50IGJhbmQsIGludDMyX3QgbWlsbGliZWwpOworCisgICAgLy8gR2V0cyBnYWluIG9mIGEgY2VydGFpbiBiYW5kLiBUaGlzIGlzIGFsd2F5cyB0aGUgbGFzdCB2YWx1ZSBzZXQgKG9yCisgICAgLy8gZGVmYXVsdCB2YWx1ZSBhZnRlciByZXNldCkuCisgICAgLy8gYmFuZCAgICAgVGhlIGJhbmQgdG8gZ2V0IHRoZSBnYWluIGZvci4KKyAgICAvLyByZXR1cm5zICBHYWluIHZhbHVlIGluIG1pbGxpYmVsICgxLzEwMCBvZiBkZWNpYmVsKS4KKyAgICBpbnQzMl90IGdldEdhaW4oaW50IGJhbmQpIGNvbnN0OworCisgICAgLy8gU2V0cyBjdXRvZmYgZnJlcXVlbmN5IHZhbHVlLiBBY3R1YWwgY2hhbmdlIHdpbGwgb25seSB0YWtlIHBsYWNlIHVwb24KKyAgICAvLyBjb21taXQoKS4KKyAgICAvLyBUaGlzIHZhbHVlIHdpbGwgYmUgcmVtZW1iZXJlZCBldmVuIGlmIHRoZSBmaWx0ZXIgaXMgaW4gZGlzYWJsZWQoKSBzdGF0ZS4KKyAgICAvLyBiYW5kICAgICAgIFRoZSBiYW5kIHRvIHNldCB0aGUgZnJlcXVlbmN5IGZvci4KKyAgICAvLyBtaWxsaWhlcnR6IEZyZXF1ZW5jeSB2YWx1ZSBpbiBtSHouCisgICAgdm9pZCBzZXRGcmVxdWVuY3koaW50IGJhbmQsIHVpbnQzMl90IG1pbGxpaGVydHopOworCisgICAgLy8gR2V0cyBmcmVxdWVuY3kgb2YgYSBjZXJ0YWluIGJhbmQuIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IHZhbHVlIHNldCAob3IKKyAgICAvLyBkZWZhdWx0IHZhbHVlIGFmdGVyIHJlc2V0KS4KKyAgICAvLyBiYW5kICAgICBUaGUgYmFuZCB0byBnZXQgdGhlIGZyZXF1ZW5jeSBmb3IuCisgICAgLy8gcmV0dXJucyAgRnJlcXVlbmN5IHZhbHVlIGluIG1Iei4KKyAgICB1aW50MzJfdCBnZXRGcmVxdWVuY3koaW50IGJhbmQpIGNvbnN0OworCisgICAgLy8gU2V0cyBiYW5kd2lkdGggdmFsdWUuIEFjdHVhbCBjaGFuZ2Ugd2lsbCBvbmx5IHRha2UgcGxhY2UgdXBvbiBjb21taXQoKS4KKyAgICAvLyBUaGlzIHZhbHVlIHdpbGwgYmUgcmVtZW1iZXJlZCBldmVuIGlmIHRoZSBmaWx0ZXIgaXMgaW4gZGlzYWJsZWQoKSBzdGF0ZS4KKyAgICAvLyBJZiBjYWxsZWQgb24gdGhlIGZpcnN0IG9yIGxhc3QgYmFuZCwgdGhpcyBjYWxsIGlzIGlnbm9yZWQuCisgICAgLy8gYmFuZCAgVGhlIGJhbmQgdG8gc2V0IHRoZSBmcmVxdWVuY3kgZm9yLgorICAgIC8vIGNlbnRzIEJhbmR3aWR0aCB2YWx1ZSBpbiBjZW50cyAoMS8xMjAwIG9jdGF2ZSkuCisgICAgdm9pZCBzZXRCYW5kd2lkdGgoaW50IGJhbmQsIHVpbnQzMl90IGNlbnRzKTsKKworICAgIC8vIEdldHMgYmFuZHdpZHRoIG9mIGEgY2VydGFpbiBiYW5kLiBUaGlzIGlzIGFsd2F5cyB0aGUgbGFzdCB2YWx1ZSBzZXQgKG9yCisgICAgLy8gZGVmYXVsdCB2YWx1ZSBhZnRlciByZXNldCkuIEZvciB0aGUgZmlyc3QgYW5kIGxhc3QgYmFuZHMsIDAgaXMgYWx3YXlzCisgICAgLy8gcmV0dXJuZWQuCisgICAgLy8gYmFuZCAgICAgVGhlIGJhbmQgdG8gZ2V0IHRoZSBiYW5kd2lkdGggZm9yLgorICAgIC8vIHJldHVybnMgIEJhbmR3aWR0aCB2YWx1ZSBpbiBjZW50cyAoMS8xMjAwIG9jdGF2ZSkuCisgICAgdWludDMyX3QgZ2V0QmFuZHdpZHRoKGludCBiYW5kKSBjb25zdDsKKworICAgIC8vIEdldHMgbG93ZXIgYW5kIHVwcGVyIGJvdW5kYXJpZXMgb2YgYSBiYW5kLgorICAgIC8vIEZvciB0aGUgbG93IHNoZWxmLCB0aGUgbG93IGJvdW5kIGlzIDAgYW5kIHRoZSBoaWdoIGJvdW5kIGlzIHRoZSBiYW5kCisgICAgLy8gZnJlcXVlbmN5LgorICAgIC8vIEZvciB0aGUgaGlnaCBzaGVsZiwgdGhlIGxvdyBib3VuZCBpcyB0aGUgYmFuZCBmcmVxdWVuY3kgYW5kIHRoZSBoaWdoCisgICAgLy8gYm91bmQgaXMgTnlxdWlzdC4KKyAgICAvLyBGb3IgdGhlIHBlYWtpbmcgZmlsdGVycywgdGhleSBhcmUgdGhlIGdhaW5bZEJdLzIgcG9pbnRzLgorICAgIHZvaWQgZ2V0QmFuZFJhbmdlKGludCBiYW5kLCB1aW50MzJfdCAmIGxvdywgdWludDMyX3QgJiBoaWdoKSBjb25zdDsKKworICAgIC8vIEdldHMgYSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciBhIHByZXNldCBJRC4gV2lsbCByZXR1cm4gIkN1c3RvbSIgaWYKKyAgICAvLyBQUkVTRVRfQ1VTVE9NIGlzIHBhc3NlZC4KKyAgICAvLyBwcmVzZXQgICAgICAgVGhlIHByZXNldCBJRC4gTXVzdCBiZSBsZXNzIHRoYW4gbnVtYmVyIG9mIHByZXNldHMuCisgICAgY29uc3QgY2hhciAqIGdldFByZXNldE5hbWUoaW50IHByZXNldCkgY29uc3Q7CisKKyAgICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgcHJlc2V0cy4KKyAgICBpbnQgZ2V0TnVtUHJlc2V0cygpIGNvbnN0OworCisgICAgLy8gR2V0cyB0aGUgY3VycmVudGx5IHNldCBwcmVzZXQgSUQuCisgICAgLy8gV2lsbCByZXR1cm4gUFJFU0VUX0NVU1RPTSBpbiBjYXNlIHRoZSBFUSBwYXJhbWV0ZXJzIGhhdmUgYmVlbiBtb2RpZmllZAorICAgIC8vIG1hbnVhbGx5IHNpbmNlIGEgcHJlc2V0IHdhcyBzZXQuCisgICAgaW50IGdldFByZXNldCgpIGNvbnN0OworCisgICAgLy8gU2V0cyB0aGUgY3VycmVudCBwcmVzZXQgYnkgSUQuCisgICAgLy8gQWxsIHRoZSBiYW5kIHBhcmFtZXRlcnMgd2lsbCBiZSBvdmVycmlkZGVuLgorICAgIC8vIENoYW5nZSB3aWxsIG5vdCBiZSBhcHBsaWVkIHVudGlsIGNvbW1pdCgpIGlzIGNhbGxlZC4KKyAgICAvLyBwcmVzZXQgICAgICAgVGhlIHByZXNldCBJRC4gTXVzdCBiZSBsZXNzIHRoYW4gbnVtYmVyIG9mIHByZXNldHMuCisgICAgLy8gICAgICAgICAgICAgIFBSRVNFVF9DVVNUT00gaXMgTk9UIGEgdmFsaWQgdmFsdWUgaGVyZS4KKyAgICB2b2lkIHNldFByZXNldChpbnQgcHJlc2V0KTsKKworICAgIC8vIEFwcGxpZXMgYWxsIHBhcmFtZXRlciBjaGFuZ2VzIGRvbmUgdG8gdGhpcyBwb2ludCBpbiB0aW1lLgorICAgIC8vIElmIHRoZSBmaWx0ZXIgaXMgZGlzYWJsZWQsIHRoZSBuZXcgcGFyYW1ldGVycyB3aWxsIHRha2UgcGxhY2Ugd2hlbiBpdCBpcworICAgIC8vIGVuYWJsZWQgYWdhaW4uIERvZXMgbm90IGludHJvZHVjZSBhcnRpZmFjdHMsIHVubGVzcyBpbW1lZGlhdGUgaXMgc2V0LgorICAgIC8vIGltbWVkaWF0ZSAgICBXaGV0aGVyIHRvIGFwcGx5IGNoYW5nZSBhYnJ1cHRseSAoaWdub3JlZCBpZiBmaWx0ZXIgaXMKKyAgICAvLyBkaXNhYmxlZCkuCisgICB2b2lkIGNvbW1pdChib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKKworICAgIC8vIFByb2Nlc3MgYSBidWZmZXIgb2YgaW5wdXQgZGF0YS4gVGhlIGlucHV0IGFuZCBvdXRwdXQgc2hvdWxkIGNvbnRhaW4KKyAgICAvLyBmcmFtZUNvdW50ICogbkNoYW5uZWxzIGludGVybGFjZWQgc2FtcGxlcy4gUHJvY2Vzc2luZyBjYW4gYmUgZG9uZQorICAgIC8vIGluLXBsYWNlLCBieSBwYXNzaW5nIHRoZSBzYW1lIGJ1ZmZlciBhcyBib3RoIGFyZ3VtZW50cy4KKyAgICAvLyBwSW4gICAgICAgICAgSW5wdXQgYnVmZmVyLgorICAgIC8vIHBPdXQgICAgICAgICBPdXRwdXQgYnVmZmVyLgorICAgIC8vIGZyYW1lQ291bnQgICBOdW1iZXIgb2YgZnJhbWVzIHRvIHByb2R1Y2Ugb24gZWFjaCBjYWxsIHRvIHByb2Nlc3MoKS4KKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBwSW4sIGF1ZGlvX3NhbXBsZV90ICogcE91dCwKKyAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpOworCisgICAgLy8gRW5hYmxlcyB0aGUgZmlsdGVyLCBzbyBpdCB3b3VsZCBzdGFydCBwcm9jZXNzaW5nIGlucHV0LiBEb2VzIG5vdAorICAgIC8vIGludHJvZHVjZSBhcnRpZmFjdHMsIHVubGVzcyBpbW1lZGlhdGUgaXMgc2V0LgorICAgIC8vIGltbWVkaWF0ZSAgICBXaGV0aGVyIHRvIGFwcGx5IGNoYW5nZSBhYnJ1cHRseS4KKyAgICB2b2lkIGVuYWJsZShib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKKworICAgIC8vIERpc2FibGVkIChieXBhc3NlcykgdGhlIGZpbHRlci4gRG9lcyBub3QgaW50cm9kdWNlIGFydGlmYWN0cywgdW5sZXNzCisgICAgLy8gaW1tZWRpYXRlIGlzIHNldC4KKyAgICAvLyBpbW1lZGlhdGUgICAgV2hldGhlciB0byBhcHBseSBjaGFuZ2UgYWJydXB0bHkuCisgICAgdm9pZCBkaXNhYmxlKGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworCisgICAgLy8gUmV0dXJucyB0aGUgYmFuZCB3aXRoIHRoZSBtYXhpbXVtIGluZmx1ZW5jZSBvbiBhIGdpdmVuIGZyZXF1ZW5jeS4KKyAgICAvLyBSZXN1bHQgaXMgdW5hZmZlY3RlZCBieSB3aGV0aGVyIEVRIGlzIGVuYWJsZWQgb3Igbm90LCBvciBieSB3aGV0aGVyCisgICAgLy8gY2hhbmdlcyBoYXZlIGJlZW4gY29tbWl0dGVkIG9yIG5vdC4KKyAgICAvLyB0YXJnZXRGcmVxICAgVGhlIHRhcmdldCBmcmVxdWVuY3ksIGluIG1pbGxpaGVydHouCisgICAgaW50IGdldE1vc3RSZWxldmFudEJhbmQodWludDMyX3QgdGFyZ2V0RnJlcSkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgLy8gQm90dG9tIGZyZXF1ZW5jeSwgaW4gbUh6LgorICAgIHN0YXRpYyBjb25zdCBpbnQga01pbkZyZXEgPSAyMDAwMDsKKyAgICAvLyBTYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgaW50IG1TYW1wbGVSYXRlOworICAgIC8vIE51bWJlciBvZiBwZWFraW5nIGZpbHRlcnMuIFRvdGFsIG51bWJlciBvZiBiYW5kcyBpcyArMi4KKyAgICBpbnQgbU51bVBlYWtpbmc7CisgICAgLy8gUHJlc2V0IGNvbmZpZ3VyYXRpb25zLgorICAgIGNvbnN0IFByZXNldENvbmZpZyAqIG1wUHJlc2V0czsKKyAgICAvLyBOdW1iZXIgb2YgZWxlbWVudHMgaW4gbXBQcmVzZXRzOworICAgIGludCBtTnVtUHJlc2V0czsKKyAgICAvLyBDdXJyZW50IHByZXNldC4KKyAgICBpbnQgbUN1clByZXNldDsKKworICAgIC8vIE1lbW9yeSBzcGFjZSB0byBmcmVlIHdoZW4gaW5zdGFuY2UgaXMgZGVsZXRlZCwgb3IgTlVMTCBpZiBubyBtZW1vcnkgaXMKKyAgICAvLyBvd25lZC4KKyAgICB2b2lkICogbXBNZW07CisgICAgLy8gVGhlIGxvdy1zaGVsdmluZyBmaWx0ZXIuCisgICAgQXVkaW9TaGVsdmluZ0ZpbHRlciAqIG1wTG93U2hlbGY7CisgICAgLy8gVGhlIGhpZ2gtc2hlbHZpbmcgZmlsdGVyLgorICAgIEF1ZGlvU2hlbHZpbmdGaWx0ZXIgKiBtcEhpZ2hTaGVsZjsKKyAgICAvLyBBbiBhcnJheSBvZiBzaXplIG1OdW1QZWFraW5nIG9mIHBlYWtpbmcgZmlsdGVycy4KKyAgICBBdWRpb1BlYWtpbmdGaWx0ZXIgKiBtcFBlYWtpbmdGaWx0ZXJzOworCisgICAgLy8gQ29uc3RydWN0b3IuIFJlc2V0cyB0aGUgZmlsdGVyIChzZWUgcmVzZXQoKSkuIE11c3QgY2FsbCBpbml0KCkgZG9pbmcKKyAgICAvLyBhbnl0aGluZyBlbHNlLgorICAgIC8vIHBNZW0gICAgICAgTWVtb3J5IGJ1ZmZlciBmb3IgYmFuZHMuCisgICAgLy8gbkNoYW5uZWxzICBOdW1iZXIgb2YgaW5wdXQvb3V0cHV0IGNoYW5uZWxzIChpbnRlcmxhY2VkKS4KKyAgICAvLyBzYW1wbGVSYXRlIFRoZSBpbnB1dC9vdXRwdXQgc2FtcGxlIHJhdGUsIGluIEh6LgorICAgIC8vIG93bk1lbSAgICAgV2hldGhlciBwTWVtIGlzIG93bmVkIGJ5IG1lLgorICAgIC8vIHByZXNldHMgICAgICBUaGUgcHJlc2V0cyBjb25maWd1cmF0aW9uLiBNYXkgYmUgTlVMTCwgYnV0IGluIHRoYXQgY2FzZSB0aGUKKyAgICAvLyAgICAgICAgICAgICAgY2xpZW50IGlzIHJlcXVpcmVkIG5vdCB0byBjYWxsIHByZXNldC1yZWxhdGVkIGZ1bmN0aW9ucy4KKyAgICAvLyAgICAgICAgICAgICAgVGhpcyBhcnJheSBpcyBvd25lZCBieSB0aGUgY2xpZW50IGFuZCBpcyBub3QgY29waWVkLiBJdAorICAgIC8vICAgICAgICAgICAgICBtdXN0IGJlIGtlcHQgdmFsaWQgYnkgdGhlIGNsaWVudCBhcyBsb25nIGFzIHRoZSBpbnN0YW5jZSBpcworICAgIC8vICAgICAgICAgICAgICBhbGl2ZS4KKyAgICAvLyBuUHJlc2V0cyAgICAgTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBwcmVzZXRzIGFycmF5LgorICAgIEF1ZGlvRXF1YWxpemVyKHZvaWQgKiBwTWVtLCBpbnQgbkJhbmRzLCBpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICBib29sIG93bk1lbSwgY29uc3QgUHJlc2V0Q29uZmlnICogcHJlc2V0cywgaW50IG5QcmVzZXRzKTsKK307CisKK30KKworI2VuZGlmIC8vIEFVRElPRVFVQUxJWkVSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvRm9ybWF0QWRhcHRlci5oIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0Zvcm1hdEFkYXB0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTNlYmU5Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0Zvcm1hdEFkYXB0ZXIuaApAQCAtMCwwICsxLDE4NCBAQAorLyogL2FuZHJvaWQvc3JjL2ZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvRm9ybWF0QWRhcHRlci5oCisqKgorKiogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyNpZm5kZWYgQVVESU9GT1JNQVRBREFQVEVSX0hfCisjZGVmaW5lIEFVRElPRk9STUFUQURBUFRFUl9IXworCisjaW5jbHVkZSA8bWVkaWEvRWZmZWN0QXBpLmg+CisKKworI2RlZmluZSBtaW4oeCx5KSAoKCh4KSA8ICh5KSkgPyAoeCkgOiAoeSkpCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gQW4gYWRhcHRlciBmb3IgYW4gYXVkaW8gcHJvY2Vzc29yIHdvcmtpbmcgb24gYXVkaW9fc2FtcGxlX3Qgc2FtcGxlcyB3aXRoIGEKKy8vIGJ1ZmZlciBvdmVycmlkZSBiZWhhdmlvciB0byBhcmJpdHJhcnkgc2FtcGxlIGZvcm1hdHMgYW5kIGJ1ZmZlciBiZWhhdmlvcnMuCisvLyBUaGUgYWRhcHRlciBtYXkgd29yayBvbiBhbnkgcHJvY2Vzc2luZyBjbGFzcyB3aGljaCBoYXMgYSBwcm9jZXNzaW5nIGZ1bmN0aW9uCisvLyB3aXRoIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlOgorLy8gdm9pZCBwcm9jZXNzKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogcEluLAorLy8gICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogcE91dCwKKy8vICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCk7CisvLyBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHVuZGVybHlpbmcgcHJvY2Vzc29yIHdvcmtzIGluIFM3LjI0IGZvcm1hdCBhbmQgYW4KKy8vIG92ZXJ3cml0ZSBiZWhhdmlvci4KKy8vCisvLyBVc2FnZSBpcyBzaW1wbGU6IGp1c3Qgd29yayB3aXRoIHRoZSBwcm9jZXNzb3Igbm9ybWFsbHksIGJ1dCBpbnN0ZWFkIG9mCisvLyBjYWxsaW5nIGl0cyBwcm9jZXNzKCkgZnVuY3Rpb24gZGlyZWN0bHksIHdvcmsgd2l0aCB0aGUgcHJvY2VzcygpIGZ1bmN0aW9uIG9mCisvLyB0aGUgYWRhcHRlci4KKy8vIFRoZSBhZGFwdGVyIHN1cHBvcnRzIHJlLWNvbmZpZ3VyYXRpb24gdG8gYSBkaWZmZXJlbnQgZm9ybWF0IG9uIHRoZSBmbHkuCisvLworLy8gVCAgICAgICAgVGhlIHByb2Nlc3NvciBjbGFzcy4KKy8vIGJ1ZlNpemUgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzYW1wbGVzIChzaW5nbGUgY2hhbm5lbCkgdG8gcHJvY2VzcyBvbiBhCisvLyAgICAgICAgICBzaW5nbGUgY2FsbCB0byB0aGUgdW5kZXJseWluZyBwcm9jZXNzb3IuIFNldHRpbmcgdGhpcyB0byBhIHNtYWxsCisvLyAgICAgICAgICBudW1iZXIgd2lsbCBzYXZlIGEgbGl0dGxlIG1lbW9yeSwgYnV0IHdpbGwgY29zdCBmdW5jdGlvbiBjYWxsCisvLyAgICAgICAgICBvdmVyaGVhZCwgcmVzdWx0aW5nIGZyb20gbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHVuZGVybHlpbmcgcHJvY2VzcygpCisvLyAgICAgICAgICBwZXIgYSBzaW5nbGUgY2FsbCB0byB0aGlzIGNsYXNzJ3MgcHJvY2VzcygpLgordGVtcGxhdGU8Y2xhc3MgVCwgc2l6ZV90IGJ1ZlNpemU+CitjbGFzcyBBdWRpb0Zvcm1hdEFkYXB0ZXIgeworcHVibGljOgorICAgIC8vIENvbmZpZ3VyZSB0aGUgYWRhcHRlci4KKyAgICAvLyBwcm9jZXNzb3IgICAgVGhlIHVuZGVybHlpbmcgYXVkaW8gcHJvY2Vzc29yLgorICAgIC8vIG5DaGFubmVscyAgICBOdW1iZXIgb2YgaW5wdXQgYW5kIG91dHB1dCBjaGFubmVscy4gVGhlIGFkYXB0ZXIgZG9lcyBub3QgZG8KKyAgICAvLyAgICAgICAgICAgICAgY2hhbm5lbCBjb252ZXJzaW9uIC0gdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBpbiBzeW5jIHdpdGggdGhlCisgICAgLy8gICAgICAgICAgICAgIGFjdHVhbCBwcm9jZXNzb3IuCisgICAgLy8gcGNtRm9ybWF0ICAgIFRoZSBkZXNpcmVkIGlucHV0L291dHB1dCBzYW1wbGUgZm9ybWF0LgorICAgIC8vIGJlaGF2aW9yICAgICBUaGUgZGVzaXJlZCBiZWhhdmlvciAob3ZlcndyaXRlIG9yIGFjY3VtdWxhdGUpLgorICAgIHZvaWQgY29uZmlndXJlKFQgJiBwcm9jZXNzb3IsIGludCBuQ2hhbm5lbHMsIHVpbnQ4X3QgcGNtRm9ybWF0LAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJlaGF2aW9yKSB7CisgICAgICAgIG1wUHJvY2Vzc29yID0gJnByb2Nlc3NvcjsKKyAgICAgICAgbU51bUNoYW5uZWxzID0gbkNoYW5uZWxzOworICAgICAgICBtUGNtRm9ybWF0ID0gcGNtRm9ybWF0OworICAgICAgICBtQmVoYXZpb3IgPSBiZWhhdmlvcjsKKyAgICAgICAgbU1heFNhbXBsZXNQZXJDYWxsID0gYnVmU2l6ZSAvIG5DaGFubmVsczsKKyAgICB9CisKKyAgICAvLyBQcm9jZXNzIGEgYmxvY2sgb2Ygc2FtcGxlcy4KKyAgICAvLyBwSW4gICAgICAgICAgQSBidWZmZXIgb2Ygc2FtcGxlcyB3aXRoIHRoZSBmb3JtYXQgc3BlY2lmaWVkIG9uCisgICAgLy8gICAgICAgICAgICAgIGNvbmZpZ3VyZSgpLgorICAgIC8vIHBPdXQgICAgICAgICBBIGJ1ZmZlciBvZiBzYW1wbGVzIHdpdGggdGhlIGZvcm1hdCBzcGVjaWZpZWQgb24KKyAgICAvLyAgICAgICAgICAgICAgY29uZmlndXJlKCkuIE1heSBiZSB0aGUgc2FtZSBhcyBwSW4uCisgICAgLy8gbnVtU2FtcGxlcyAgIFRoZSBudW1iZXIgb2YgbXVsdGktY2hhbm5lbCBzYW1wbGVzIHRvIHByb2Nlc3MuCisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IHZvaWQgKiBwSW4sIHZvaWQgKiBwT3V0LCB1aW50MzJfdCBudW1TYW1wbGVzKSB7CisgICAgICAgIHdoaWxlIChudW1TYW1wbGVzID4gMCkgeworICAgICAgICAgICAgdWludDMyX3QgbnVtU2FtcGxlc0l0ZXIgPSBtaW4obnVtU2FtcGxlcywgbU1heFNhbXBsZXNQZXJDYWxsKTsKKyAgICAgICAgICAgIHVpbnQzMl90IG5TYW1wbGVzQ2hhbm5lbHMgPSBudW1TYW1wbGVzSXRlciAqIG1OdW1DaGFubmVsczsKKyAgICAgICAgICAgIGlmIChtUGNtRm9ybWF0ID09IFNBTVBMRV9GT1JNQVRfUENNX1M3XzI0KSB7CisgICAgICAgICAgICAgICAgaWYgKG1CZWhhdmlvciA9PSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19XUklURSkgeworICAgICAgICAgICAgICAgICAgICBtcFByb2Nlc3Nvci0+cHJvY2VzcygKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYXVkaW9fc2FtcGxlX3QgKj4gKHBJbiksCisgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGF1ZGlvX3NhbXBsZV90ICo+IChwT3V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bVNhbXBsZXNJdGVyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1CZWhhdmlvciA9PSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19BQ0NVTVVMQVRFKSB7CisgICAgICAgICAgICAgICAgICAgIG1wUHJvY2Vzc29yLT5wcm9jZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBhdWRpb19zYW1wbGVfdCAqPiAocEluKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1CdWZmZXIsIG51bVNhbXBsZXNJdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgTWl4T3V0cHV0KHBPdXQsIG51bVNhbXBsZXNJdGVyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwSW4gPSByZWludGVycHJldF9jYXN0PGNvbnN0IGF1ZGlvX3NhbXBsZV90ICo+IChwSW4pCisgICAgICAgICAgICAgICAgICAgICAgICArIG5TYW1wbGVzQ2hhbm5lbHM7CisgICAgICAgICAgICAgICAgcE91dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8YXVkaW9fc2FtcGxlX3QgKj4gKHBPdXQpCisgICAgICAgICAgICAgICAgICAgICAgICArIG5TYW1wbGVzQ2hhbm5lbHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIENvbnZlcnRJbnB1dChwSW4sIG5TYW1wbGVzQ2hhbm5lbHMpOworICAgICAgICAgICAgICAgIG1wUHJvY2Vzc29yLT5wcm9jZXNzKG1CdWZmZXIsIG1CdWZmZXIsIG51bVNhbXBsZXNJdGVyKTsKKyAgICAgICAgICAgICAgICBDb252ZXJ0T3V0cHV0KHBPdXQsIG5TYW1wbGVzQ2hhbm5lbHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbnVtU2FtcGxlcyAtPSBudW1TYW1wbGVzSXRlcjsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBUaGUgdW5kZXJseWluZyBwcm9jZXNzb3IuCisgICAgVCAqIG1wUHJvY2Vzc29yOworICAgIC8vIFRoZSBudW1iZXIgb2YgaW5wdXQvb3V0cHV0IGNoYW5uZWxzLgorICAgIGludCBtTnVtQ2hhbm5lbHM7CisgICAgLy8gVGhlIGRlc2lyZWQgUENNIGZvcm1hdC4KKyAgICB1aW50OF90IG1QY21Gb3JtYXQ7CisgICAgLy8gVGhlIGRlc2lyZWQgYnVmZmVyIGJlaGF2aW9yLgorICAgIHVpbnQzMl90IG1CZWhhdmlvcjsKKyAgICAvLyBBbiBpbnRlcm1lZGlhdGUgYnVmZmVyIGZvciBwcm9jZXNzaW5nLgorICAgIGF1ZGlvX3NhbXBsZV90IG1CdWZmZXJbYnVmU2l6ZV07CisgICAgLy8gVGhlIGJ1ZmZlciBzaXplLCBkaXZpZGVkIGJ5IHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgLSByZXByZXNlbnRzIHRoZQorICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIG11bHRpLWNoYW5uZWwgc2FtcGxlcyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gdGhlCisgICAgLy8gaW50ZXJtZWRpYXRlIGJ1ZmZlci4KKyAgICBzaXplX3QgbU1heFNhbXBsZXNQZXJDYWxsOworCisgICAgLy8gQ29udmVydHMgYSBidWZmZXIgb2YgaW5wdXQgc2FtcGxlcyB0byBhdWRpb19zYW1wbGVfdCBmb3JtYXQuCisgICAgLy8gT3V0cHV0IGlzIHdyaXR0ZW4gdG8gdGhlIGludGVybWVkaWF0ZSBidWZmZXIuCisgICAgLy8gcEluICAgICAgICAgIFRoZSBpbnB1dCBidWZmZXIgd2l0aCB0aGUgZm9ybWF0IGRlc2lnbmF0ZWQgaW4gY29uZmlndXJlKCkuCisgICAgLy8gICAgICAgICAgICAgIFdoZW4gZnVuY3Rpb24gZXhpc3Qgd2lsbCBwb2ludCB0byB0aGUgbmV4dCB1bnJlYWQgaW5wdXQKKyAgICAvLyAgICAgICAgICAgICAgc2FtcGxlLgorICAgIC8vIG51bVNhbXBsZXMgICBUaGUgbnVtYmVyIG9mIHNpbmdsZS1jaGFubmVsIHNhbXBsZXMgdG8gcHJvY2Vzcy4KKyAgICB2b2lkIENvbnZlcnRJbnB1dChjb25zdCB2b2lkIComIHBJbiwgdWludDMyX3QgbnVtU2FtcGxlcykgeworICAgICAgICBpZiAobVBjbUZvcm1hdCA9PSBTQU1QTEVfRk9STUFUX1BDTV9TMTUpIHsKKyAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKiBwSW4xNiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MTZfdCAqPihwSW4pOworICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgKiBwT3V0ID0gbUJ1ZmZlcjsKKyAgICAgICAgICAgIHdoaWxlIChudW1TYW1wbGVzLS0gPiAwKSB7CisgICAgICAgICAgICAgICAgKihwT3V0KyspID0gczE1X3RvX2F1ZGlvX3NhbXBsZV90KCoocEluMTYrKykpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcEluID0gcEluMTY7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ29udmVydHMgYXVkaW9fc2FtcGxlX3Qgc2FtcGxlcyBmcm9tIHRoZSBpbnRlcm1lZGlhdGUgYnVmZmVyIHRvIHRoZQorICAgIC8vIG91dHB1dCBidWZmZXIsIGNvbnZlcnRpbmcgdG8gdGhlIGRlc2lyZWQgZm9ybWF0IGFuZCBidWZmZXIgYmVoYXZpb3IuCisgICAgLy8gcE91dCAgICAgICAgIFRoZSBidWZmZXIgdG8gd3JpdGUgdGhlIG91dHB1dCB0by4KKyAgICAvLyAgICAgICAgICAgICAgV2hlbiBmdW5jdGlvbiBleGlzdCB3aWxsIHBvaW50IHRvIHRoZSBuZXh0IG91dHB1dCBzYW1wbGUuCisgICAgLy8gbnVtU2FtcGxlcyAgIFRoZSBudW1iZXIgb2Ygc2luZ2xlLWNoYW5uZWwgc2FtcGxlcyB0byBwcm9jZXNzLgorICAgIHZvaWQgQ29udmVydE91dHB1dCh2b2lkIComIHBPdXQsIHVpbnQzMl90IG51bVNhbXBsZXMpIHsKKyAgICAgICAgaWYgKG1QY21Gb3JtYXQgPT0gU0FNUExFX0ZPUk1BVF9QQ01fUzE1KSB7CisgICAgICAgICAgICBjb25zdCBhdWRpb19zYW1wbGVfdCAqIHBJbiA9IG1CdWZmZXI7CisgICAgICAgICAgICBpbnQxNl90ICogcE91dDE2ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQxNl90ICo+KHBPdXQpOworICAgICAgICAgICAgaWYgKG1CZWhhdmlvciA9PSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19XUklURSkgeworICAgICAgICAgICAgICAgIHdoaWxlIChudW1TYW1wbGVzLS0gPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICoocE91dDE2KyspID0gYXVkaW9fc2FtcGxlX3RfdG9fczE1X2NsaXAoKihwSW4rKykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAobUJlaGF2aW9yID09IEVGRkVDVF9CVUZGRVJfQUNDRVNTX0FDQ1VNVUxBVEUpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAobnVtU2FtcGxlcy0tID4gMCkgeworICAgICAgICAgICAgICAgICAgICAqKHBPdXQxNisrKSArPSBhdWRpb19zYW1wbGVfdF90b19zMTVfY2xpcCgqKHBJbisrKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcE91dCA9IHBPdXQxNjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBY2N1bXVsYXRlIGRhdGEgZnJvbSB0aGUgaW50ZXJtZWRpYXRlIGJ1ZmZlciB0byB0aGUgb3V0cHV0LiBPdXRwdXQgaXMKKyAgICAvLyBhc3N1bWVkIHRvIGJlIG9mIGF1ZGlvX3NhbXBsZV90IHR5cGUuCisgICAgLy8gcE91dCAgICAgICAgIFRoZSBidWZmZXIgdG8gbWl4IHRoZSBvdXRwdXQgdG8uCisgICAgLy8gICAgICAgICAgICAgIFdoZW4gZnVuY3Rpb24gZXhpc3Qgd2lsbCBwb2ludCB0byB0aGUgbmV4dCBvdXRwdXQgc2FtcGxlLgorICAgIC8vIG51bVNhbXBsZXMgICBUaGUgbnVtYmVyIG9mIHNpbmdsZS1jaGFubmVsIHNhbXBsZXMgdG8gcHJvY2Vzcy4KKyAgICB2b2lkIE1peE91dHB1dCh2b2lkIComIHBPdXQsIHVpbnQzMl90IG51bVNhbXBsZXMpIHsKKyAgICAgICAgY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBwSW4gPSBtQnVmZmVyOworICAgICAgICBhdWRpb19zYW1wbGVfdCAqIHBPdXQyNCA9IHJlaW50ZXJwcmV0X2Nhc3Q8YXVkaW9fc2FtcGxlX3QgKj4ocE91dCk7CisgICAgICAgIG51bVNhbXBsZXMgKj0gbU51bUNoYW5uZWxzOworICAgICAgICB3aGlsZSAobnVtU2FtcGxlcy0tID4gMCkgeworICAgICAgICAgICAgKihwT3V0MjQrKykgKz0gKihwSW4rKyk7CisgICAgICAgIH0KKyAgICAgICAgcE91dCA9IHBPdXQyNDsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZiAvLyBBVURJT0ZPUk1BVEFEQVBURVJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9IaWdoU2hlbGZGaWx0ZXJDb2VmLmlubCBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9IaWdoU2hlbGZGaWx0ZXJDb2VmLmlubApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmJhMTM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0hpZ2hTaGVsZkZpbHRlckNvZWYuaW5sCkBAIC0wLDAgKzEsMjI1IEBACisxMzY3OSwKKzIxNTc1LAorODkyMSwKKzMyMzE1MDU2LAorLTE1NTgyMDE1LAorMjYxNzIsCiszNzY3OCwKKzE0Nzk3LAorMzE4OTEwOTYsCistMTUxOTI1MjcsCis1MTAyMCwKKzY0NDQ5LAorMjM5NDUsCiszMTMyMjk4OCwKKy0xNDY4NTE4NiwKKzEwMTgxNywKKzEwNjE0NCwKKzM3NzQ0LAorMzA1NjI4ODIsCistMTQwMzEzNzIsCisyMDg5OTYsCisxNjIxNjMsCis1ODUzNiwKKzI5NTQ4NTM4LAorLTEzMjAxMDE3LAorNDQyOTk2LAorMjA3NDU5LAorOTMzMDAsCisyODIwMDc5MiwKKy0xMjE2NzMzMSwKKzk3MTQyMywKKzEyODc4NiwKKzE2OTY5MCwKKzI2NDIyNzQ0LAorLTEwOTE1NDI4LAorMjIwMDQ2MSwKKy00NjU2ODYsCiszOTQ5ODYsCisyNDEwMzMxNywKKy05NDU1ODYyLAorNTExOTk5MSwKKy0yNzc3MTk5LAorMTE0NzI0NSwKKzIxMTI5NDczLAorLTc4NDIyOTQsCisxMjEyMDM3OSwKKy0xMDE5ODE2MCwKKzM2MzE1NDQsCisxNzQxMTgzNywKKy02MTg4Mzg0LAorMjg4MzQyMzQsCistMzE2NDcxMzUsCisxMTMzNzc5NSwKKzEyOTI0OTYwLAorLTQ2NzI2MzgsCis2ODAzNzc2NiwKKy04ODk3NDM4OCwKKzMzNDc3MjU1LAorNzc1MjY4MCwKKy0zNTE2MDk4LAorMTU3MzY5OTQ0LAorLTIzMjA2MzE2MCwKKzkyMjgyMTI5LAorMjExMzkyNiwKKy0yOTI1NjI0LAorMzUzNzIwMTEyLAorLTU2NzQyNzE0NCwKKzIzNzE2NDExMiwKKy0zNjU5OTkzLAorLTMwMTk4NzEsCis3NjkwOTExNTEsCistMTMwOTg3MTk0OSwKKzU3MDUzOTQzMCwKKy05MjAyMTE0LAorLTM3NzkzMDIsCis2Njc5MSwKKzEyMTcwNiwKKzU1ODg4LAorMzA1NzEyNDUsCistMTQwMzg0MTUsCisxMjA0MjYsCisyMTIxNzgsCis5NDgyMCwKKzI5NTU5Njc5LAorLTEzMjA5ODg2LAorMjE3MTMwLAorMzY1MTY1LAorMTU3NjEwLAorMjgyMTU1NTQsCistMTIxNzgyNDMsCiszOTE0ODksCis2MTcwMTYsCisyNTUwMTAsCisyNjQ0MjEzMSwKKy0xMDkyODQzMSwKKzcwNTg2MiwKKzEwMTUxNDcsCiszOTg0NTcsCisyNDEyODQzMCwKKy05NDcwNjgwLAorMTI3MjY4MiwKKzE2MDUyNTEsCis1OTYxMDIsCisyMTE2MTMzNCwKKy03ODU4MTUzLAorMjI5NDY2OCwKKzIzODY4MzMsCis4NDg1MjMsCisxNzQ1MTA3MiwKKy02MjAzODgwLAorNDEzNzMyNywKKzMxOTg3ODksCisxMTU1NTM2LAorMTI5NzEzNjIsCistNDY4NTc5OCwKKzc0NTk2NzUsCiszNDcwMjY2LAorMTU2NzIxOSwKKzc4MDQ4MTgsCistMzUyNDc2MSwKKzEzNDQ5OTI2LAorMTczODkxMSwKKzIzNDc0MDYsCisyMTY5MDg5LAorLTI5MjgxMTYsCisyNDI1MDQ1NSwKKy01MjExMjQxLAorNDM1ODk3MSwKKy0zNjA1Mjk4LAorLTMwMTU2NzEsCis0MzcyNDAwMSwKKy0yMzg0OTU3MCwKKzk4MjMzMTUsCistOTE1MTI1MywKKy0zNzY5Mjc3LAorNzg4MzUxNTAsCistNjY1NDIzNzUsCisyMzY4NjM3MywKKy0xNDE2MTE0MywKKy01MDQwNzkwLAorMTQyMTQxMTczLAorLTE1NjMyNDI2MSwKKzU2MDI0MjM0LAorLTE4NDUxMjc1LAorLTY2MTI2NTYsCisyNTYyODMwNTcsCistMzM1NjA2MzI2LAorMTI2MzQxMjQ0LAorLTIxOTcwMDA0LAorLTgyNzA3NTUsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCisxNjc3NzIxNiwKKzMzNTU0NDMyLAorMTY3NzcyMTYsCistMzM1NTQ0MzIsCistMTY3NzcyMTYsCmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvTG93U2hlbGZGaWx0ZXJDb2VmLmlubCBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Mb3dTaGVsZkZpbHRlckNvZWYuaW5sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1N2RlYjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvTG93U2hlbGZGaWx0ZXJDb2VmLmlubApAQCAtMCwwICsxLDM3NSBAQAorMTYyMTI1MDYsCistMzI0MjA1NzQsCisxNjIwODA2OCwKKzMyNDAxNDExLAorLTE1NjYyNTIxLAorMTYzNTYxMjksCistMzI3MDYyNDYsCisxNjM1MDExOCwKKzMyNjk1NTI1LAorLTE1OTM5NzUyLAorMTY0NjQzOTksCistMzI5MjA2NzAsCisxNjQ1NjI3NCwKKzMyOTE0Njg2LAorLTE2MTQ5NDQxLAorMTY1NDYxMjgsCistMzMwODEyODksCisxNjUzNTE2NSwKKzMzMDc3OTU1LAorLTE2MzA3NDExLAorMTY2MDgxMDEsCistMzMyMDE0MjIsCisxNjU5MzMyOCwKKzMzMTk5NTY5LAorLTE2NDI2MDY3LAorMTY2NTU1MzksCistMzMyOTExNzQsCisxNjYzNTY0NywKKzMzMjkwMTQ3LAorLTE2NTE0OTk3LAorMTY2OTI0NzgsCistMzMzNTgxNzEsCisxNjY2NTcxNSwKKzMzMzU3NjA4LAorLTE2NTgxNTQwLAorMTY3MjIwODksCistMzM0MDgxNDksCisxNjY4NjA5OSwKKzMzNDA3ODUwLAorLTE2NjMxMjcxLAorMTY3NDY5MzAsCistMzM0NDU0MDksCisxNjY5ODU0OSwKKzMzNDQ1MjY3LAorLTE2NjY4NDA1LAorMTY3NjkxNTYsCistMzM0NzMxNjgsCisxNjcwNDEzOCwKKzMzNDczMTMzLAorLTE2Njk2MTE0LAorMTY3OTA3MDYsCistMzM0OTM4MjcsCisxNjcwMzM0OCwKKzMzNDkzODg2LAorLTE2NzE2Nzc5LAorMTY4MTM0NjYsCistMzM1MDkxNjYsCisxNjY5NjExMSwKKzMzNTA5MzQyLAorLTE2NzMyMTg2LAorMTY4Mzk0MzcsCistMzM1MjA0OTgsCisxNjY4MTgwMiwKKzMzNTIwODUyLAorLTE2NzQzNjY5LAorMTY4NzA5MTEsCistMzM1Mjg3NjUsCisxNjY1OTE5MSwKKzMzNTI5NDI0LAorLTE2NzUyMjI2LAorMTY5MTA2ODEsCistMzM1MzQ2MDcsCisxNjYyNjMzNywKKzMzNTM1ODA3LAorLTE2NzU4NjAyLAorMTU2Njc0MDEsCistMzEzMjYyMjQsCisxNTY1ODgyNSwKKzMxMjUyMTYxLAorLTE0NjIzMDc0LAorMTU5NDU4NjUsCistMzE4ODAwMDcsCisxNTkzNDE0NiwKKzMxODM4MjA1LAorLTE1MTQ0NTk3LAorMTYxNTc1MjEsCistMzIyOTkwOTEsCisxNjE0MTU3OCwKKzMyMjc1NjA0LAorLTE1NTQ1MzY5LAorMTYzMTgyNjcsCistMzI2MTQ5MDMsCisxNjI5NjY1MSwKKzMyNjAxNzU1LAorLTE1ODUwODUwLAorMTY0NDA3MTAsCistMzI4NTIxNTcsCisxNjQxMTQ3MywKKzMyODQ0ODIwLAorLTE2MDgyMzAzLAorMTY1MzQ3NTEsCistMzMwMjk5ODUsCisxNjQ5NTI4MSwKKzMzMDI1OTEwLAorLTE2MjU2ODkxLAorMTY2MDgxNzEsCistMzMxNjMwNDMsCisxNjU1NDk1NywKKzMzMTYwODAzLAorLTE2Mzg4MTUyLAorMTY2NjcxNDUsCistMzMyNjI0NjgsCisxNjU5NTQ3NywKKzMzMjYxMjc1LAorLTE2NDg2NTk5LAorMTY3MTY2OTksCistMzMzMzY2NzEsCisxNjYyMDI1MiwKKzMzMzM2MTA1LAorLTE2NTYwMzAxLAorMTY3NjExMDAsCistMzMzOTE5NzYsCisxNjYzMTM3OSwKKzMzMzkxODM2LAorLTE2NjE1NDA0LAorMTY4MDQyMDcsCistMzM0MzMxMDMsCisxNjYyOTgwNiwKKzMzNDMzMzQxLAorLTE2NjU2NTYwLAorMTY4NDk3OTQsCistMzM0NjM1NTEsCisxNjYxNTM5OSwKKzMzNDY0MjUxLAorLTE2Njg3Mjc3LAorMTY5MDE4ODcsCistMzM0ODU4NTcsCisxNjU4NjkzMywKKzMzNDg3MjcxLAorLTE2NzEwMTg5LAorMTY5NjUxMjUsCistMzM1MDE3ODEsCisxNjU0MjAwMCwKKzMzNTA0NDE1LAorLTE2NzI3Mjc0LAorMTcwNDUxOTgsCistMzM1MTIzODQsCisxNjQ3NjgyNCwKKzMzNTE3MTgzLAorLTE2NzQwMDA4LAorMTQ2MzUyMDEsCistMjkyNTQzNzYsCisxNDYxOTE4NCwKKzI4OTc3NzExLAorLTEyNzUzODM0LAorMTUxNTc1NTYsCistMzAyOTI4MjUsCisxNTEzNTI4NSwKKzMwMTMzOTM4LAorLTEzNjc0NTEzLAorMTU1NjE1MTEsCistMzEwOTIyOTgsCisxNTUzMDgxNywKKzMxMDAxODYwLAorLTE0NDA1NTUxLAorMTU4NzIyMTEsCistMzE3MDIzNDIsCisxNTgzMDE4NywKKzMxNjUxMjE4LAorLTE0OTc2MzA2LAorMTYxMTEwOTQsCistMzIxNjQ4MzQsCisxNjA1Mzg0MywKKzMyMTM2MTAxLAorLTE1NDE2NDUzLAorMTYyOTU4NDgsCistMzI1MTM4MDIsCisxNjIxODE0MCwKKzMyNDk3NzU3LAorLTE1NzUyODE3LAorMTY0NDA4NTIsCistMzI3NzYxNzksCisxNjMzNTY2NSwKKzMyNzY3MzI2LAorLTE2MDA4MTU1LAorMTY1NTc4MDQsCistMzI5NzI5MDcsCisxNjQxNTcxNSwKKzMyOTY4MTc5LAorLTE2MjAxMDMxLAorMTY2NTY0MDMsCistMzMxMjAwNTIsCisxNjQ2NDc1OCwKKzMzMTE3ODAyLAorLTE2MzQ2MTk1LAorMTY3NDUwMDEsCistMzMyMjk4MDUsCisxNjQ4NjgxMCwKKzMzMjI5MjQ3LAorLTE2NDU1MTUzLAorMTY4MzEyNDAsCistMzMzMTEzMDYsCisxNjQ4MzY5MiwKKzMzMzEyMjUyLAorLTE2NTM2NzcxLAorMTY5MjI2ODIsCistMzMzNzEyNzgsCisxNjQ1NTE0NSwKKzMzMzc0MDcwLAorLTE2NTk3ODE5LAorMTcwMjc0NzIsCistMzM0MTQ0NjUsCisxNjM5ODgxOCwKKzMzNDIwMTEwLAorLTE2NjQzNDMwLAorMTcxNTUxMDgsCistMzM0NDM4NzUsCisxNjMxMDExMCwKKzMzNDU0Mzk4LAorLTE2Njc3NDc5LAorMTczMTczODQsCistMzM0NjA3NjAsCisxNjE4MTg4NywKKzMzNDc5OTMzLAorLTE2NzAyODgyLAorMTI3OTI3MDMsCistMjU1NTczODgsCisxMjc2NDcxNiwKKzI0NTkwNTA3LAorLTk3NDcwODUsCisxMzcwNjQ2NSwKKy0yNzM3MjYyMSwKKzEzNjY2MjE1LAorMjY3OTgyOTYsCistMTExNjk3OTAsCisxNDQzOTQyNSwKKy0yODgyMTgzMCwKKzE0MzgyNTE4LAorMjg0ODY0NjksCistMTIzODAwODgsCisxNTAxODQ1MywKKy0yOTk1NzI3MywKKzE0OTM5MDMwLAorMjk3NjQwMTgsCistMTMzNzM1MjIsCisxNTQ3MjQ2MCwKKy0zMDgzNDc1NywKKzE1MzYyNjg4LAorMzA3MjQ1NjgsCistMTQxNjgxMjAsCisxNTgyODcyNSwKKy0zMTUwNjEyMywKKzE1Njc4MTE4LAorMzE0NDM5MjgsCistMTQ3OTE4MjIsCisxNjExMTQwNiwKKy0zMjAxNTk4OCwKKzE1OTA1OTAxLAorMzE5ODEzOTEsCistMTUyNzQ2ODgsCisxNjM0MTMyOSwKKy0zMjQwMDk4NCwKKzE2MDYyMDYxLAorMzIzODIzOTgsCistMTU2NDQ3NjEsCisxNjUzNjQ4NCwKKy0zMjY5MDIzOCwKKzE2MTU4MTMzLAorMzI2ODEzNTQsCistMTU5MjYyODYsCisxNjcxMjg1MywKKy0zMjkwNjMzNywKKzE2MjAxNDMyLAorMzI5MDQxMjgsCistMTYxMzkyNzgsCisxNjg4NTQzMCwKKy0zMzA2NjMzNiwKKzE2MTk1MzA2LAorMzMwNzAwOTAsCistMTYyOTk3NjcsCisxNzA2OTM3NywKKy0zMzE4MjU5OSwKKzE2MTM5MjgyLAorMzMxOTM3MTEsCistMTY0MjAzMzIsCisxNzI4MTM3MSwKKy0zMzI2MzI5NCwKKzE2MDI5MDM5LAorMzMyODU3ODUsCistMTY1MTA3MDIsCisxNzU0MTI3MSwKKy0zMzMxMjM5MCwKKzE1ODU2MjQzLAorMzMzNTQzNTksCistMTY1NzgzMjksCisxNzg3NDMzMCwKKy0zMzMyODkwMiwKKzE1NjA4Mjg3LAorMzM0MDU0MzAsCistMTY2Mjg4NzMsCis5ODgxMjc5LAorLTE5NzE5MjY4LAorOTgzODA4NCwKKzE2NzM0MzAzLAorLTU5MjcxMTEsCisxMTI2NDg1NywKKy0yMjQ2MzQ0NywKKzExMTk4Nzg0LAorMjA1Nzc1ODQsCistNzU3MjI4OCwKKzEyNDYwNzM2LAorLTI0ODIzMDQ2LAorMTIzNjI2OTcsCisyMzY2NzM1OSwKKy05MjAxOTAzLAorMTM0NTk4MDUsCistMjY3NzY4NTEsCisxMzMxNzc5OSwKKzI2MDg1NjgzLAorLTEwNjkxNTU1LAorMTQyNzYyODcsCistMjgzNDkyNTYsCisxNDA3NDQwNiwKKzI3OTQzODk5LAorLTExOTc4ODM0LAorMTQ5MzY5NDMsCistMjk1ODgyNDgsCisxNDY1NDAxMSwKKzI5MzU0NTMzLAorLTEzMDQ3NDUzLAorMTU0NzMzMDAsCistMzA1NDkyOTksCisxNTA4MTAzNiwKKzMwNDE3MjAzLAorLTEzOTA5MjE2LAorMTU5MTcyNzEsCistMzEyODU3ODgsCisxNTM3NzgxNywKKzMxMjEzOTcyLAorLTE0NTg5Njg3LAorMTYyOTkzODQsCistMzE4NDQzMjAsCisxNTU2MjAwNiwKKzMxODA5NjgzLAorLTE1MTE4ODExLAorMTY2NDg3NzQsCistMzIyNjI5OTksCisxNTY0NTQxNCwKKzMyMjU0MzI5LAorLTE1NTI1NjQxLAorMTY5OTQyNzcsCistMzI1NzEwOTAsCisxNTYzMzYwNywKKzMyNTg1ODk1LAorLTE1ODM1ODYyLAorMTczNjYzNzQsCistMzI3ODkwMTksCisxNTUyNTgwMSwKKzMyODMzMDAzLAorLTE2MDcwOTc1LAorMTc3OTk5NTUsCistMzI5Mjc4MzQsCisxNTMxNDg5NSwKKzMzMDE3MTA3LAorLTE2MjQ4MzYxLAorMTgzMzgyMDYsCistMzI5ODczMTgsCisxNDk4NzY4NiwKKzMzMTU0MjQ2LAorLTE2MzgxNzQ3LAorMTkwMzgyNzAsCistMzI5NTE1NDUsCisxNDUyNTU5MiwKKzMzMjU2MzkyLAorLTE2NDgxODAwLApkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9BdWRpb1BlYWtpbmdGaWx0ZXIuY3BwIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb1BlYWtpbmdGaWx0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZmVmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlci5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8qIC8vZGV2aWNlL2luY2x1ZGUvc2VydmVyL0F1ZGlvRmxpbmdlci9BdWRpb1BlYWtpbmdGaWx0ZXIuY3BwCisgKioKKyAqKiBDb3B5cmlnaHQgMjAwNywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoqCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoqCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoqCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBdWRpb1BlYWtpbmdGaWx0ZXIuaCIKKyNpbmNsdWRlICJBdWRpb0NvbW1vbi5oIgorI2luY2x1ZGUgIkVmZmVjdHNNYXRoLmgiCisKKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKyNkZWZpbmUgTElLRUxZKCBleHAgKSAgICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgdHJ1ZSAgKSkKKyNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKKworbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gRm9ybWF0IG9mIHRoZSBjb2VmZmljaWVudCB0YWJsZToKKy8vIGtDb2VmVGFibGVbZnJlcV1bZ2Fpbl1bYnddW2NvZWZdCisvLyBmcmVxIC0gcGVhayBmcmVxdWVuY3ksIGluIG9jdGF2ZXMgYmVsb3cgTnlxdWlzdCxmcm9tIC05IHRvIC0xLgorLy8gZ2FpbiAtIGdhaW4sIGluIG1pbGxpYmVsLCBzdGFydGluZyBhdCAtOTYwMCwganVtcHMgb2YgMTAyNCwgdG8gNDczNiBtaWxsaWJlbC4KKy8vIGJ3ICAgLSBiYW5kd2lkdGgsIHN0YXJ0aW5nIGF0IDEgY2VudCwganVtcHMgb2YgMTAyNCwgdG8gMzA3MyBjZW50cy4KKy8vIGNvZWYgLSAwOiBiMAorLy8gICAgICAgIDE6IGIxCisvLyAgICAgICAgMjogYjIKKy8vICAgICAgICAzOiAtYTEKKy8vICAgICAgICA0OiAtYTIKK3N0YXRpYyBjb25zdCBzaXplX3Qga0luRGltc1szXSA9IHs5LCAxNSwgNH07CitzdGF0aWMgY29uc3QgYXVkaW9fY29lZl90IGtDb2VmVGFibGVbOSoxNSo0KjVdID0geworI2luY2x1ZGUgIkF1ZGlvUGVha2luZ0ZpbHRlckNvZWYuaW5sIgorfTsKKworQXVkaW9Db2VmSW50ZXJwb2xhdG9yIEF1ZGlvUGVha2luZ0ZpbHRlcjo6bUNvZWZJbnRlcnAoMywga0luRGltcywgNSwgKGNvbnN0IGF1ZGlvX2NvZWZfdCopIGtDb2VmVGFibGUpOworCitBdWRpb1BlYWtpbmdGaWx0ZXI6OkF1ZGlvUGVha2luZ0ZpbHRlcihpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSkKKyAgICAgICAgOiBtQmlxdWFkKG5DaGFubmVscywgc2FtcGxlUmF0ZSkgeworICAgIGNvbmZpZ3VyZShuQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgQXVkaW9QZWFraW5nRmlsdGVyOjpjb25maWd1cmUoaW50IG5DaGFubmVscywgaW50IHNhbXBsZVJhdGUpIHsKKyAgICBtTmlxdWlzdEZyZXEgPSBzYW1wbGVSYXRlICogNTAwOworICAgIG1GcmVxdWVuY3lGYWN0b3IgPSAoKDF1bGwpIDw8IDQyKSAvIG1OaXF1aXN0RnJlcTsKKyAgICBtQmlxdWFkLmNvbmZpZ3VyZShuQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIHNldEZyZXF1ZW5jeShtTm9taW5hbEZyZXF1ZW5jeSk7CisgICAgY29tbWl0KHRydWUpOworfQorCit2b2lkIEF1ZGlvUGVha2luZ0ZpbHRlcjo6cmVzZXQoKSB7CisgICAgc2V0R2FpbigwKTsKKyAgICBzZXRGcmVxdWVuY3koMCk7CisgICAgc2V0QmFuZHdpZHRoKDI0MDApOworICAgIGNvbW1pdCh0cnVlKTsKK30KKwordm9pZCBBdWRpb1BlYWtpbmdGaWx0ZXI6OnNldEZyZXF1ZW5jeSh1aW50MzJfdCBtaWxsaWhlcnR6KSB7CisgICAgbU5vbWluYWxGcmVxdWVuY3kgPSBtaWxsaWhlcnR6OworICAgIGlmIChVTkxJS0VMWShtaWxsaWhlcnR6ID4gbU5pcXVpc3RGcmVxIC8gMikpIHsKKyAgICAgICAgbWlsbGloZXJ0eiA9IG1OaXF1aXN0RnJlcSAvIDI7CisgICAgfQorICAgIHVpbnQzMl90IG5vcm1GcmVxID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KAorICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtaWxsaWhlcnR6KSAqIG1GcmVxdWVuY3lGYWN0b3IpID4+IDEwKTsKKyAgICBpZiAoTElLRUxZKG5vcm1GcmVxID4gKDEgPDwgMjMpKSkgeworICAgICAgICBtRnJlcXVlbmN5ID0gKEVmZmVjdHNfbG9nMihub3JtRnJlcSkgLSAoKDMyLTkpIDw8IDE1KSkgPDwgKEZSRVFfUFJFQ0lTSU9OX0JJVFMgLSAxNSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbUZyZXF1ZW5jeSA9IDA7CisgICAgfQorfQorCit2b2lkIEF1ZGlvUGVha2luZ0ZpbHRlcjo6c2V0R2FpbihpbnQzMl90IG1pbGxpYmVsKSB7CisgICAgbUdhaW4gPSBtaWxsaWJlbCArIDk2MDA7Cit9CisKK3ZvaWQgQXVkaW9QZWFraW5nRmlsdGVyOjpzZXRCYW5kd2lkdGgodWludDMyX3QgY2VudHMpIHsKKyAgICBtQmFuZHdpZHRoID0gY2VudHMgLSAxOworfQorCit2b2lkIEF1ZGlvUGVha2luZ0ZpbHRlcjo6Y29tbWl0KGJvb2wgaW1tZWRpYXRlKSB7CisgICAgYXVkaW9fY29lZl90IGNvZWZzWzVdOworICAgIGludCBpbnRDb29yZFszXSA9IHsKKyAgICAgICAgbUZyZXF1ZW5jeSA+PiBGUkVRX1BSRUNJU0lPTl9CSVRTLAorICAgICAgICBtR2FpbiA+PiBHQUlOX1BSRUNJU0lPTl9CSVRTLAorICAgICAgICBtQmFuZHdpZHRoID4+IEJBTkRXSURUSF9QUkVDSVNJT05fQklUUworICAgIH07CisgICAgdWludDMyX3QgZnJhY0Nvb3JkWzNdID0geworICAgICAgICBtRnJlcXVlbmN5IDw8ICgzMiAtIEZSRVFfUFJFQ0lTSU9OX0JJVFMpLAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4obUdhaW4pIDw8ICgzMiAtIEdBSU5fUFJFQ0lTSU9OX0JJVFMpLAorICAgICAgICBtQmFuZHdpZHRoIDw8ICgzMiAtIEJBTkRXSURUSF9QUkVDSVNJT05fQklUUykKKyAgICB9OworICAgIG1Db2VmSW50ZXJwLmdldENvZWYoaW50Q29vcmQsIGZyYWNDb29yZCwgY29lZnMpOworICAgIG1CaXF1YWQuc2V0Q29lZnMoY29lZnMsIGltbWVkaWF0ZSk7Cit9CisKK3ZvaWQgQXVkaW9QZWFraW5nRmlsdGVyOjpnZXRCYW5kUmFuZ2UodWludDMyX3QgJiBsb3csIHVpbnQzMl90ICYgaGlnaCkgY29uc3QgeworICAgIC8vIEhhbGYgYmFuZHdpZHRoLCBpbiBvY3RhdmVzLCAxNS1iaXQgcHJlY2lzaW9uCisgICAgaW50MzJfdCBoYWxmQlcgPSAoKChtQmFuZHdpZHRoICsgMSkgLyAyKSA8PCAxNSkgLyAxMjAwOworCisgICAgbG93ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KChzdGF0aWNfY2FzdDx1aW50NjRfdD4obU5vbWluYWxGcmVxdWVuY3kpICogRWZmZWN0c19leHAyKC1oYWxmQlcgKyAoMTYgPDwgMTUpKSkgPj4gMTYpOworICAgIGlmIChVTkxJS0VMWShoYWxmQlcgPj0gKDE2IDw8IDE1KSkpIHsKKyAgICAgICAgaGlnaCA9IG1OaXF1aXN0RnJlcTsKKyAgICB9IGVsc2UgeworICAgICAgICBoaWdoID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KChzdGF0aWNfY2FzdDx1aW50NjRfdD4obU5vbWluYWxGcmVxdWVuY3kpICogRWZmZWN0c19leHAyKGhhbGZCVyArICgxNiA8PCAxNSkpKSA+PiAxNik7CisgICAgICAgIGlmIChVTkxJS0VMWShoaWdoID4gbU5pcXVpc3RGcmVxKSkgeworICAgICAgICAgICAgaGlnaCA9IG1OaXF1aXN0RnJlcTsKKyAgICAgICAgfQorICAgIH0KK30KKworfQorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlci5oIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb1BlYWtpbmdGaWx0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGY0OWM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb1BlYWtpbmdGaWx0ZXIuaApAQCAtMCwwICsxLDE1MSBAQAorLyogLy9kZXZpY2UvaW5jbHVkZS9zZXJ2ZXIvQXVkaW9GbGluZ2VyL0F1ZGlvUGVha2luZ0ZpbHRlci5oCisqKgorKiogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyNpZm5kZWYgQU5EUk9JRF9BVURJT19QRUFLSU5HX0ZJTFRFUl9ICisjZGVmaW5lIEFORFJPSURfQVVESU9fUEVBS0lOR19GSUxURVJfSAorCisjaW5jbHVkZSAiQXVkaW9CaXF1YWRGaWx0ZXIuaCIKKyNpbmNsdWRlICJBdWRpb0NvZWZJbnRlcnBvbGF0b3IuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBBIHBlYWtpbmcgYXVkaW8gZmlsdGVyLCB3aXRoIHVuaXR5IHNraXJ0IGdhaW4sIGFuZCBjb250cm9sbGFibGUgcGVhaworLy8gZnJlcXVlbmN5LCBnYWluIGFuZCBiYW5kd2lkdGguCisvLyBUaGlzIGZpbHRlciBpcyBhYmxlIHRvIHN1cHByZXNzIGludHJvZHVjZSBkaXNjb250aW51aXRpZXMgYW5kIG90aGVyIGFydGlmYWN0cworLy8gaW4gdGhlIG91dHB1dCwgZXZlbiB3aGVuIGNoYW5naW5nIHBhcmFtZXRlcnMgYWJydXB0bHkuCisvLyBQYXJhbWV0ZXJzIGNhbiBiZSBzZXQgdG8gYW55IHZhbHVlIC0gdGhpcyBjbGFzcyB3aWxsIG1ha2Ugc3VyZSB0byBjbGlwIHRoZW0KKy8vIHdoZW4gdGhleSBhcmUgb3V0IG9mIHN1cHBvcnRlZCByYW5nZS4KKy8vCisvLyBJbXBsZW1lbnRhdGlvbiBub3RlczoKKy8vIFRoaXMgY2xhc3MgdXNlcyBhbiB1bmRlcmx5aW5nIGJpcXVhZCBmaWx0ZXIgd2hvc2UgcGFyYW1ldGVycyBhcmUgZGV0ZXJtaW5lZAorLy8gdXNpbmcgYSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmcm9tIGEgY29lZmZpY2llbnQgdGFibGUsIHVzaW5nIGEKKy8vIEF1ZGlvQ29lZkludGVycG9sYXRvci4KKy8vIEFsbCBpcyBsZWZ0IGZvciB0aGlzIGNsYXNzIHRvIGRvIGlzIG1hcHBpbmcgYmV0d2VlbiBoaWdoLWxldmVsIHBhcmFtZXRlcnMgdG8KKy8vIGZyYWN0aW9uYWwgaW5kaWNlcyBpbnRvIHRoZSBjb2VmZmljaWVudCB0YWJsZS4KK2NsYXNzIEF1ZGlvUGVha2luZ0ZpbHRlciB7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3IuIFJlc2V0cyB0aGUgZmlsdGVyIChzZWUgcmVzZXQoKSkuCisgICAgLy8gbkNoYW5uZWxzICBOdW1iZXIgb2YgaW5wdXQvb3V0cHV0IGNoYW5uZWxzIChpbnRlcmxhY2VkKS4KKyAgICAvLyBzYW1wbGVSYXRlIFRoZSBpbnB1dC9vdXRwdXQgc2FtcGxlIHJhdGUsIGluIEh6LgorICAgIEF1ZGlvUGVha2luZ0ZpbHRlcihpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZWNvbmZpZ3VyYXRpb24gb2YgdGhlIGZpbHRlci4gQ2hhbmdlcyBpbnB1dC9vdXRwdXQgZm9ybWF0LCBidXQgZG9lcyBub3QKKyAgICAvLyBhbHRlciBjdXJyZW50IHBhcmFtZXRlciB2YWx1ZXMuIENsZWFycyBkZWxheSBsaW5lcy4KKyAgICAvLyBuQ2hhbm5lbHMgIE51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMgKGludGVybGFjZWQpLgorICAgIC8vIHNhbXBsZVJhdGUgVGhlIGlucHV0L291dHB1dCBzYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgdm9pZCBjb25maWd1cmUoaW50IG5DaGFubmVscywgaW50IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmVzZXRzIHRoZSBmaWx0ZXIgcGFyYW1ldGVycyB0byB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgICAvLyBmcmVxdWVuY3k6IDAKKyAgICAvLyBnYWluOiAwCisgICAgLy8gYmFuZHdpZHRoOiAxMjAwIGNlbnRzLgorICAgIC8vIEl0IGFsc28gZGlzYWJsZXMgdGhlIGZpbHRlci4gRG9lcyBub3QgY2xlYXIgdGhlIGRlbGF5IGxpbmVzLgorICAgIHZvaWQgcmVzZXQoKTsKKworICAgIC8vIENsZWFycyBkZWxheSBsaW5lcy4gRG9lcyBub3QgYWx0ZXIgcGFyYW1ldGVyIHZhbHVlcy4KKyAgICB2b2lkIGNsZWFyKCkgeyBtQmlxdWFkLmNsZWFyKCk7IH0KKworICAgIC8vIFNldHMgZ2FpbiB2YWx1ZS4gQWN0dWFsIGNoYW5nZSB3aWxsIG9ubHkgdGFrZSBwbGFjZSB1cG9uIGNvbW1pdCgpLgorICAgIC8vIFRoaXMgdmFsdWUgd2lsbCBiZSByZW1lbWJlcmVkIGV2ZW4gaWYgdGhlIGZpbHRlciBpcyBpbiBkaXNhYmxlZCgpIHN0YXRlLgorICAgIC8vIG1pbGxpYmVsIEdhaW4gdmFsdWUgaW4gbWlsbGliZWwgKDEvMTAwIG9mIGRlY2liZWwpLgorICAgIHZvaWQgc2V0R2FpbihpbnQzMl90IG1pbGxpYmVsKTsKKworICAgIC8vIEdldHMgdGhlIGdhaW4sIGluIG1pbGxpYmVsLCBhcyBzZXQuCisgICAgaW50MzJfdCBnZXRHYWluKCkgY29uc3QgeyByZXR1cm4gbUdhaW4gLSA5NjAwOyB9CisKKyAgICAvLyBTZXRzIGJhbmR3aWR0aCB2YWx1ZS4gQWN0dWFsIGNoYW5nZSB3aWxsIG9ubHkgdGFrZSBwbGFjZSB1cG9uIGNvbW1pdCgpLgorICAgIC8vIFRoaXMgdmFsdWUgd2lsbCBiZSByZW1lbWJlcmVkIGV2ZW4gaWYgdGhlIGZpbHRlciBpcyBpbiBkaXNhYmxlZCgpIHN0YXRlLgorICAgIC8vIGNlbnRzIEJhbmR3aWR0aCB2YWx1ZSBpbiBjZW50cyAoMS8xMjAwIG9jdGF2ZSkuCisgICAgdm9pZCBzZXRCYW5kd2lkdGgodWludDMyX3QgY2VudHMpOworCisgICAgLy8gR2V0cyB0aGUgZ2FpbiwgaW4gY2VudHMsIGFzIHNldC4KKyAgICB1aW50MzJfdCBnZXRCYW5kd2lkdGgoKSBjb25zdCB7IHJldHVybiBtQmFuZHdpZHRoICsgMTsgfQorCisgICAgLy8gU2V0cyBmcmVxdWVuY3kgdmFsdWUuIEFjdHVhbCBjaGFuZ2Ugd2lsbCBvbmx5IHRha2UgcGxhY2UgdXBvbiBjb21taXQoKS4KKyAgICAvLyBUaGlzIHZhbHVlIHdpbGwgYmUgcmVtZW1iZXJlZCBldmVuIGlmIHRoZSBmaWx0ZXIgaXMgaW4gZGlzYWJsZWQoKSBzdGF0ZS4KKyAgICAvLyBtaWxsaWhlcnR6IEZyZXF1ZW5jeSB2YWx1ZSBpbiBtSHouCisgICAgdm9pZCBzZXRGcmVxdWVuY3kodWludDMyX3QgbWlsbGloZXJ0eik7CisKKyAgICAvLyBHZXRzIHRoZSBmcmVxdWVuY3ksIGluIG1IeiwgYXMgc2V0LgorICAgIHVpbnQzMl90IGdldEZyZXF1ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIG1Ob21pbmFsRnJlcXVlbmN5OyB9CisKKyAgICAvLyBHZXRzIGdhaW5bZEJdLzIgcG9pbnRzLgorICAgIC8vIFJlc3VsdHMgaW4gbUh6LCBhbmQgYXJlIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSBub21pbmFsIHZhbHVlcyBzZXQsIG5vdCBvbgorICAgIC8vIHBvc3NpYmx5IHJvdW5kZWQgb3IgdHJ1bmNhdGVkIGFjdHVhbCB2YWx1ZXMuCisgICAgdm9pZCBnZXRCYW5kUmFuZ2UodWludDMyX3QgJiBsb3csIHVpbnQzMl90ICYgaGlnaCkgY29uc3Q7CisKKyAgICAvLyBBcHBsaWVzIGFsbCBwYXJhbWV0ZXIgY2hhbmdlcyBkb25lIHRvIHRoaXMgcG9pbnQgaW4gdGltZS4KKyAgICAvLyBJZiB0aGUgZmlsdGVyIGlzIGRpc2FibGVkLCB0aGUgbmV3IHBhcmFtZXRlcnMgd2lsbCB0YWtlIHBsYWNlIHdoZW4gaXQgaXMKKyAgICAvLyBlbmFibGVkIGFnYWluLiBEb2VzIG5vdCBpbnRyb2R1Y2UgYXJ0aWZhY3RzLCB1bmxlc3MgaW1tZWRpYXRlIGlzIHNldC4KKyAgICAvLyBpbW1lZGlhdGUgICAgV2hldGhlciB0byBhcHBseSBjaGFuZ2UgYWJydXB0bHkgKGlnbm9yZWQgaWYgZmlsdGVyIGlzCisgICAgLy8gZGlzYWJsZWQpLgorICAgdm9pZCBjb21taXQoYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CisKKyAgICAvLyBQcm9jZXNzIGEgYnVmZmVyIG9mIGlucHV0IGRhdGEuIFRoZSBpbnB1dCBhbmQgb3V0cHV0IHNob3VsZCBjb250YWluCisgICAgLy8gZnJhbWVDb3VudCAqIG5DaGFubmVscyBpbnRlcmxhY2VkIHNhbXBsZXMuIFByb2Nlc3NpbmcgY2FuIGJlIGRvbmUKKyAgICAvLyBpbi1wbGFjZSwgYnkgcGFzc2luZyB0aGUgc2FtZSBidWZmZXIgYXMgYm90aCBhcmd1bWVudHMuCisgICAgLy8gaW4gICAgICAgICAgIElucHV0IGJ1ZmZlci4KKyAgICAvLyBvdXQgICAgICAgICAgT3V0cHV0IGJ1ZmZlci4KKyAgICAvLyBmcmFtZUNvdW50ICAgTnVtYmVyIG9mIGZyYW1lcyB0byBwcm9kdWNlLgorICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBhdWRpb19zYW1wbGVfdCBpbltdLCBhdWRpb19zYW1wbGVfdCBvdXRbXSwKKyAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpIHsgbUJpcXVhZC5wcm9jZXNzKGluLCBvdXQsIGZyYW1lQ291bnQpOyB9CisKKyAgICAvLyBFbmFibGVzIHRoZSBmaWx0ZXIsIHNvIGl0IHdvdWxkIHN0YXJ0IHByb2Nlc3NpbmcgaW5wdXQuIERvZXMgbm90CisgICAgLy8gaW50cm9kdWNlIGFydGlmYWN0cywgdW5sZXNzIGltbWVkaWF0ZSBpcyBzZXQuCisgICAgLy8gaW1tZWRpYXRlICAgIFdoZXRoZXIgdG8gYXBwbHkgY2hhbmdlIGFicnVwdGx5LgorICAgIHZvaWQgZW5hYmxlKGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpIHsgbUJpcXVhZC5lbmFibGUoaW1tZWRpYXRlKTsgfQorCisgICAgLy8gRGlzYWJsZWQgKGJ5cGFzc2VzKSB0aGUgZmlsdGVyLiBEb2VzIG5vdCBpbnRyb2R1Y2UgYXJ0aWZhY3RzLCB1bmxlc3MKKyAgICAvLyBpbW1lZGlhdGUgaXMgc2V0LgorICAgIC8vIGltbWVkaWF0ZSAgICBXaGV0aGVyIHRvIGFwcGx5IGNoYW5nZSBhYnJ1cHRseS4KKyAgICB2b2lkIGRpc2FibGUoYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSkgeyBtQmlxdWFkLmRpc2FibGUoaW1tZWRpYXRlKTsgfQorCitwcml2YXRlOgorICAgIC8vIFByZWNpc2lvbiBmb3IgdGhlIG1GcmVxdWVuY3kgbWVtYmVyLgorICAgIHN0YXRpYyBjb25zdCBpbnQgRlJFUV9QUkVDSVNJT05fQklUUyA9IDI2OworICAgIC8vIFByZWNpc2lvbiBmb3IgdGhlIG1HYWluIG1lbWJlci4KKyAgICBzdGF0aWMgY29uc3QgaW50IEdBSU5fUFJFQ0lTSU9OX0JJVFMgPSAxMDsKKyAgICAvLyBQcmVjaXNpb24gZm9yIHRoZSBtQmFuZHdpZHRoIG1lbWJlci4KKyAgICBzdGF0aWMgY29uc3QgaW50IEJBTkRXSURUSF9QUkVDSVNJT05fQklUUyA9IDEwOworCisgICAgLy8gTnlxdWlzdCwgaW4gbUh6LgorICAgIHVpbnQzMl90IG1OaXF1aXN0RnJlcTsKKyAgICAvLyBGcmFjdGlvbmFsIGluZGV4IGludG8gdGhlIGdhaW4gZGltZW5zaW9uIG9mIHRoZSBjb2VmIHRhYmxlIGluCisgICAgLy8gR0FJTl9QUkVDSVNJT05fQklUUyBwcmVjaXNpb24uCisgICAgaW50MzJfdCBtR2FpbjsKKyAgICAvLyBGcmFjdGlvbmFsIGluZGV4IGludG8gdGhlIGJhbmR3aWR0aCBkaW1lbnNpb24gb2YgdGhlIGNvZWYgdGFibGUgaW4KKyAgICAvLyBCQU5EV0lEVEhfUFJFQ0lTSU9OX0JJVFMgcHJlY2lzaW9uLgorICAgIHVpbnQzMl90IG1CYW5kd2lkdGg7CisgICAgLy8gRnJhY3Rpb25hbCBpbmRleCBpbnRvIHRoZSBmcmVxdWVuY3kgZGltZW5zaW9uIG9mIHRoZSBjb2VmIHRhYmxlIGluCisgICAgLy8gRlJFUV9QUkVDSVNJT05fQklUUyBwcmVjaXNpb24uCisgICAgdWludDMyX3QgbUZyZXF1ZW5jeTsKKyAgICAvLyBOb21pbmFsIHZhbHVlIG9mIGZyZXF1ZW5jeSwgYXMgc2V0LgorICAgIHVpbnQzMl90IG1Ob21pbmFsRnJlcXVlbmN5OworICAgIC8vIDEvTnlxdWlzdFttSHpdLCBpbiA0Mi1iaXQgcHJlY2lzaW9uICh2ZXJ5IHNtYWxsKS4KKyAgICAvLyBVc2VkIGZvciBzY2FsaW5nIHRoZSBmcmVxdWVuY3kuCisgICAgdWludDMyX3QgbUZyZXF1ZW5jeUZhY3RvcjsKKworICAgIC8vIEEgYmlxdWFkIGZpbHRlciwgdXNlZCBmb3IgdGhlIGFjdHVhbCBwcm9jZXNzaW5nLgorICAgIEF1ZGlvQmlxdWFkRmlsdGVyIG1CaXF1YWQ7CisgICAgLy8gQSBjb2VmZmljaWVudCBpbnRlcnBvbGF0b3IsIHVzZWQgZm9yIG1hcHBpbmcgdGhlIGhpZ2ggbGV2ZWwgcGFyYW1ldGVycyB0bworICAgIC8vIHRoZSBsb3ctbGV2ZWwgYmlxdWFkIGNvZWZmaWNpZW50cy4KKyAgICBzdGF0aWMgQXVkaW9Db2VmSW50ZXJwb2xhdG9yIG1Db2VmSW50ZXJwOworfTsKKworfQorCisjZW5kaWYgLy8gQU5EUk9JRF9BVURJT19QRUFLSU5HX0ZJTFRFUl9ICmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlckNvZWYuaW5sIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb1BlYWtpbmdGaWx0ZXJDb2VmLmlubApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzRjNmUxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb1BlYWtpbmdGaWx0ZXJDb2VmLmlubApAQCAtMCwwICsxLDI3MDAgQEAKKzE2NzY5NzUxLAorLTMzNTM4ODcxLAorMTY3Njk3NTEsCiszMzUzODg3MSwKKy0xNjc2MjI4NiwKKzExNDY4MDgzLAorLTIyOTM1NTY2LAorMTE0Njc5MTUsCisyMjkzNTU2NiwKKy02MTU4NzgxLAorODUzMjY3MywKKy0xNzA2NDc2MywKKzg1MzI0MTIsCisxNzA2NDc2MywKKy0yODc4NjksCis2NTY3MzY2LAorLTEzMTM0MTYwLAorNjU2NzA0MiwKKzEzMTM0MTYwLAorMzY0MjgwOCwKKzE2NzczMDc1LAorLTMzNTQ1NTE4LAorMTY3NzMwNzUsCiszMzU0NTUxOCwKKy0xNjc2ODkzNCwKKzEzMzQ5NjU4LAorLTI2Njk4NDU5LAorMTMzNDkzMDQsCisyNjY5ODQ1OSwKKy05OTIxNzQ2LAorMTA5MjM1ODEsCistMjE4NDYxNDcsCisxMDkyMjk3NywKKzIxODQ2MTQ3LAorLTUwNjkzNDIsCis5MDA5MzkwLAorLTE4MDE3NjQxLAorOTAwODU5MCwKKzE4MDE3NjQxLAorLTEyNDA3NjQsCisxNjc3NDkxOSwKKy0zMzU0OTIwNywKKzE2Nzc0OTE5LAorMzM1NDkyMDcsCistMTY3NzI2MjIsCisxNDY4NjE1MCwKKy0yOTM3MTA0NywKKzE0Njg1NDUwLAorMjkzNzEwNDcsCistMTI1OTQzODQsCisxMjkzMzczNiwKKy0yNTg2NTY5NywKKzEyOTMyNDQ4LAorMjU4NjU2OTcsCistOTA4ODk2OCwKKzExMzUwMzY0LAorLTIyNjk4NDgyLAorMTEzNDg1NDUsCisyMjY5ODQ4MiwKKy01OTIxNjkzLAorMTY3NzU5NDMsCistMzM1NTEyNTIsCisxNjc3NTk0MSwKKzMzNTUxMjUyLAorLTE2Nzc0NjY4LAorMTU1NDk3NDYsCistMzEwOTc1NjksCisxNTU0ODQwOCwKKzMxMDk3NTY5LAorLTE0MzIwOTM4LAorMTQ0MDQxNjMsCistMjg4MDUxOTcsCisxNDQwMTU3NywKKzI4ODA1MTk3LAorLTEyMDI4NTI0LAorMTMyNjE5NzgsCistMjY1MTk2MjYsCisxMzI1ODE0NywKKzI2NTE5NjI2LAorLTk3NDI5MDksCisxNjc3NjUxMSwKKy0zMzU1MjM4NywKKzE2Nzc2NTA4LAorMzM1NTIzODcsCistMTY3NzU4MDMsCisxNjA3NDM0OSwKKy0zMjE0NTYwMCwKKzE2MDcxODU2LAorMzIxNDU2MDAsCistMTUzNjg5ODksCisxNTM3NDI0NCwKKy0zMDc0MjkzMywKKzE1MzY5MjY4LAorMzA3NDI5MzMsCistMTM5NjYyOTYsCisxNDYyOTQzMSwKKy0yOTI1MDY5NSwKKzE0NjIxODE0LAorMjkyNTA2OTUsCistMTI0NzQwMzAsCisxNjc3NjgyNiwKKy0zMzU1MzAxNywKKzE2Nzc2ODIyLAorMzM1NTMwMTcsCistMTY3NzY0MzIsCisxNjM4MTU0OCwKKy0zMjc1NzkwMCwKKzE2Mzc2OTY4LAorMzI3NTc5MDAsCistMTU5ODEzMDAsCisxNTk3MjE2MSwKKy0zMTkzNDQwMiwKKzE1OTYyODQyLAorMzE5MzQ0MDIsCistMTUxNTc3ODcsCisxNTUxODg4MiwKKy0zMTAyMjYxNCwKKzE1NTA0MzE2LAorMzEwMjI2MTQsCistMTQyNDU5ODIsCisxNjc3NzAwMywKKy0zMzU1MzM2NiwKKzE2Nzc2OTk1LAorMzM1NTMzNjYsCistMTY3NzY3ODEsCisxNjU1ODMxNSwKKy0zMzEwNzY2MCwKKzE2NTQ5OTY5LAorMzMxMDc2NjAsCistMTYzMzEwNjcsCisxNjMyNjg0OCwKKy0zMjYzNTkxMCwKKzE2MzA5Njc3LAorMzI2MzU5MTAsCistMTU4NTkzMDgsCisxNjA2NDQ1NiwKKy0zMjEwMTEzMywKKzE2MDM3MjgxLAorMzIxMDExMzMsCistMTUzMjQ1MjEsCisxNjc3NzEwMywKKy0zMzU1MzU1OSwKKzE2Nzc3MDg4LAorMzM1NTM1NTksCistMTY3NzY5NzUsCisxNjY2MDMyNSwKKy0zMzMwNDg4NSwKKzE2NjQ1MTg3LAorMzMzMDQ4ODUsCistMTY1MjgyOTYsCisxNjUzNTIwMCwKKy0zMzAzODQzNiwKKzE2NTAzODU4LAorMzMwMzg0MzYsCistMTYyNjE4NDIsCisxNjM5MTQyNSwKKy0zMjczMjI3MywKKzE2MzQxNDY0LAorMzI3MzIyNzMsCistMTU5NTU2NzMsCisxNjc3NzE2MiwKKy0zMzU1MzY2NywKKzE2Nzc3MTM2LAorMzM1NTM2NjcsCistMTY3NzcwODIsCisxNjcyMTY1MSwKKy0zMzQxNTI4OCwKKzE2Njk0MjY3LAorMzM0MTUyODgsCistMTY2Mzg3MDEsCisxNjY2MTc2MSwKKy0zMzI2NTk5NywKKzE2NjA0ODYyLAorMzMyNjU5OTcsCistMTY0ODk0MDcsCisxNjU5MjQxNywKKy0zMzA5MzEzNywKKzE2NTAxMzQzLAorMzMwOTMxMzcsCistMTYzMTY1NDQsCisxNjc3NzIwMywKKy0zMzU1MzcyNiwKKzE2Nzc3MTU1LAorMzM1NTM3MjYsCistMTY3NzcxNDIsCisxNjc2MzQ2NiwKKy0zMzQ3NjgzNiwKKzE2NzE0MDAxLAorMzM0NzY4MzYsCistMTY3MDAyNTEsCisxNjc0ODU4OCwKKy0zMzM5MzU2NSwKKzE2NjQ1NjA1LAorMzMzOTM1NjUsCistMTY2MTY5NzgsCisxNjczMTI4OCwKKy0zMzI5NjczMywKKzE2NTY2MDcxLAorMzMyOTY3MzMsCistMTY1MjAxNDQsCisxNjc3NzIzOCwKKy0zMzU1Mzc1OSwKKzE2Nzc3MTUyLAorMzM1NTM3NTksCistMTY3NzcxNzUsCisxNjgwMDQ4OSwKKy0zMzUxMTA3MSwKKzE2NzExMjEyLAorMzM1MTEwNzEsCistMTY3MzQ0ODUsCisxNjgyNTcyMywKKy0zMzQ2NDc0MCwKKzE2NjM5NjQ3LAorMzM0NjQ3NDAsCistMTY2ODgxNTQsCisxNjg1NTEzNywKKy0zMzQxMDczNiwKKzE2NTU2MjI4LAorMzM0MTA3MzYsCistMTY2MzQxNDksCisxNjc3NzI4MiwKKy0zMzU1Mzc3OCwKKzE2Nzc3MTI3LAorMzM1NTM3NzgsCistMTY3NzcxOTMsCisxNjg0NTg4OSwKKy0zMzUzMDA4OCwKKzE2Njg0ODMwLAorMzM1MzAwODgsCistMTY3NTM1MDMsCisxNjkyMDQzNywKKy0zMzUwNDM0NywKKzE2NTg0NTQxLAorMzM1MDQzNDcsCistMTY3Mjc3NjIsCisxNzAwNzQ0OSwKKy0zMzQ3NDMwMiwKKzE2NDY3NDg0LAorMzM0NzQzMDIsCistMTY2OTc3MTYsCisxNjc3NzM0OSwKKy0zMzU1Mzc4OCwKKzE2Nzc3MDcwLAorMzM1NTM3ODgsCistMTY3NzcyMDMsCisxNjkxNTg4MCwKKy0zMzU0MDY0NSwKKzE2NjI1Mzk2LAorMzM1NDA2NDUsCistMTY3NjQwNjAsCisxNzA2NjUwNCwKKy0zMzUyNjM1NCwKKzE2NDYwNDgxLAorMzM1MjYzNTQsCistMTY3NDk3NjksCisxNzI0MjQ0NCwKKy0zMzUwOTY2MiwKKzE2MjY3ODQ5LAorMzM1MDk2NjIsCistMTY3MzMwNzcsCisxNjc3NzQ2NCwKKy0zMzU1Mzc5MywKKzE2Nzc2OTYxLAorMzM1NTM3OTMsCistMTY3NzcyMDksCisxNzAzNTQ4NywKKy0zMzU0NjUwMywKKzE2NTExNjQ3LAorMzM1NDY1MDMsCistMTY3Njk5MTgsCisxNzMxNjEzNywKKy0zMzUzODU3MiwKKzE2MjIzMDY3LAorMzM1Mzg1NzIsCistMTY3NjE5ODgsCisxNzY0NDA4OSwKKy0zMzUyOTMwNiwKKzE1ODg1ODQ4LAorMzM1MjkzMDYsCistMTY3NTI3MjEsCisxNjc3NzY2OCwKKy0zMzU1Mzc5NiwKKzE2Nzc2NzYwLAorMzM1NTM3OTYsCistMTY3NzcyMTIsCisxNzI0NzQ4NCwKKy0zMzU0OTc1MiwKKzE2MzAyOTAwLAorMzM1NDk3NTIsCistMTY3NzMxNjgsCisxNzc1ODYwMywKKy0zMzU0NTM1MywKKzE1Nzg3MzgxLAorMzM1NDUzNTMsCistMTY3Njg3NjgsCisxODM1NjAwNywKKy0zMzU0MDIxMSwKKzE1MTg0ODM1LAorMzM1NDAyMTEsCistMTY3NjM2MjYsCisxNjc2MjI5MywKKy0zMzUyMjA2MiwKKzE2NzYyMjkzLAorMzM1MjIwNjIsCistMTY3NDczNzAsCis4NzExNDA1LAorLTE3NDIxMjQyLAorODcxMTE0OSwKKzE3NDIxMjQyLAorLTY0NTMzOCwKKzU3MjEyNTAsCistMTE0NDEyODgsCis1NzIwOTAwLAorMTE0NDEyODgsCis1MzM1MDY2LAorNDA4MjgzNiwKKy04MTY0NjU1LAorNDA4MjQzNCwKKzgxNjQ2NTUsCis4NjExOTQ2LAorMTY3Njg5MzYsCistMzM1MzUzNDcsCisxNjc2ODkzNiwKKzMzNTM1MzQ3LAorLTE2NzYwNjU2LAorMTEwODUwNTYsCistMjIxNjc4NTYsCisxMTA4NDQ2OSwKKzIyMTY3ODU2LAorLTUzOTIzMDksCis4MDk4MjIzLAorLTE2MTk0MzMzLAorODA5NzMyOSwKKzE2MTk0MzMzLAorNTgxNjY0LAorNjE1ODMyMywKKy0xMjMxNDYyMywKKzYxNTcyMjgsCisxMjMxNDYyMywKKzQ0NjE2NjUsCisxNjc3MjYyMywKKy0zMzU0MjcxOSwKKzE2NzcyNjIyLAorMzM1NDI3MTksCistMTY3NjgwMjksCisxMzA1ODYzNCwKKy0yNjExNDA1NSwKKzEzMDU3Mzg4LAorMjYxMTQwNTUsCistOTMzODgwNiwKKzEwNTIzMjExLAorLTIxMDQyNzQyLAorMTA1MjExMTYsCisyMTA0Mjc0MiwKKy00MjY3MTEwLAorODU3NjU2MCwKKy0xNzE0OTA4MSwKKzg1NzM4MTIsCisxNzE0OTA4MSwKKy0zNzMxNTYsCisxNjc3NDY3MCwKKy0zMzU0NjgxMCwKKzE2Nzc0NjY3LAorMzM1NDY4MTAsCistMTY3NzIxMjAsCisxNDQ4OTcyNSwKKy0yODk3NDc3NiwKKzE0NDg3MjMzLAorMjg5NzQ3NzYsCistMTIxOTk3NDIsCisxMjYxOTUwOSwKKy0yNTIzMjU4NywKKzEyNjE0OTc5LAorMjUyMzI1ODcsCistODQ1NzI3MSwKKzEwOTY1MTUxLAorLTIxOTIyMzE5LAorMTA5NTg4MTgsCisyMTkyMjMxOSwKKy01MTQ2NzUzLAorMTY3NzU4MDUsCistMzM1NDkwNzksCisxNjc3NTgwMCwKKzMzNTQ5MDc5LAorLTE2Nzc0MzkwLAorMTU0MjgxMDIsCistMzA4NDkwOTUsCisxNTQyMzMxNywKKzMwODQ5MDk1LAorLTE0MDc0MjAyLAorMTQxODgxNTcsCistMjgzNjQ5OTYsCisxNDE3ODk3NSwKKzI4MzY0OTk2LAorLTExNTg5OTE2LAorMTI5Njk5MDAsCistMjU5MjQzNDYsCisxMjk1NjM5OCwKKzI1OTI0MzQ2LAorLTkxNDkwODIsCisxNjc3NjQzNywKKy0zMzU1MDMzOCwKKzE2Nzc2NDI4LAorMzM1NTAzMzgsCistMTY3NzU2NDgsCisxNjAwNDIxNiwKKy0zMTk5NzA3NCwKKzE1OTk1MjY4LAorMzE5OTcwNzQsCistMTUyMjIyNjcsCisxNTI0MTIzMywKKy0zMDQ2MjM5MywKKzE1MjIzNDU0LAorMzA0NjIzOTMsCistMTM2ODc0NzEsCisxNDQzNzA3MCwKKy0yODg0NDg4MCwKKzE0NDA5OTgyLAorMjg4NDQ4ODAsCistMTIwNjk4MzYsCisxNjc3Njc4OSwKKy0zMzU1MTAzNiwKKzE2Nzc2NzczLAorMzM1NTEwMzYsCistMTY3NzYzNDcsCisxNjM0NTE1OCwKKy0zMjY3MTM4MywKKzE2MzI4Njg1LAorMzI2NzEzODMsCistMTU4OTY2MjcsCisxNTkwMDQ2MiwKKy0zMTc2NTEwNCwKKzE1ODY3MDM0LAorMzE3NjUxMDQsCistMTQ5OTAyODAsCisxNTQxMDg0NiwKKy0zMDc2NzI3OSwKKzE1MzU4NzUwLAorMzA3NjcyNzksCistMTM5OTIzODAsCisxNjc3Njk5MCwKKy0zMzU1MTQyMywKKzE2Nzc2OTYwLAorMzM1NTE0MjMsCistMTY3NzY3MzQsCisxNjU0NTE1NiwKKy0zMzA1Nzc2OSwKKzE2NTE1MTAzLAorMzMwNTc3NjksCistMTYyODMwNDMsCisxNjMwMDUwNCwKKy0zMjUzNjgyMywKKzE2MjM4NzY5LAorMzI1MzY4MjMsCistMTU3NjIwNTgsCisxNjAyNDA3MSwKKy0zMTk0ODIwMSwKKzE1OTI2NTM3LAorMzE5NDgyMDEsCistMTUxNzMzOTEsCisxNjc3NzEwOSwKKy0zMzU1MTYzOCwKKzE2Nzc3MDU2LAorMzM1NTE2MzgsCistMTY3NzY5NDksCisxNjY2NjU0MiwKKy0zMzI3NjAzNSwKKzE2NjExOTk5LAorMzMyNzYwMzUsCistMTY1MDEzMjUsCisxNjU0ODI3MCwKKy0zMjk4MTIyNSwKKzE2NDM1NDM5LAorMzI5ODEyMjUsCistMTYyMDY0OTMsCisxNjQxMjYyMSwKKy0zMjY0MzEwMywKKzE2MjMyOTQwLAorMzI2NDMxMDMsCistMTU4NjgzNDYsCisxNjc3NzE4OSwKKy0zMzU1MTc1NywKKzE2Nzc3MDk0LAorMzM1NTE3NTcsCistMTY3NzcwNjgsCisxNjc0OTc3OCwKKy0zMzM5ODMzOCwKKzE2NjUxMDc1LAorMzMzOTgzMzgsCistMTY2MjM2MzcsCisxNjcyMDIzMywKKy0zMzIzMjk3NiwKKzE2NTE1MjQ1LAorMzMyMzI5NzYsCistMTY0NTgyNjIsCisxNjY4NjA1OSwKKy0zMzA0MTcwNiwKKzE2MzU4MTM1LAorMzMwNDE3MDYsCistMTYyNjY5NzgsCisxNjc3NzI2MSwKKy0zMzU1MTgyMywKKzE2Nzc3MDg5LAorMzM1NTE4MjMsCistMTY3NzcxMzQsCisxNjgyMzcwMywKKy0zMzQ2NjU1OSwKKzE2NjQ1Mzc2LAorMzM0NjY1NTksCistMTY2OTE4NjMsCisxNjg3Mzk3NCwKKy0zMzM3NDI2NywKKzE2NTAyODA2LAorMzMzNzQyNjcsCistMTY1OTk1NjQsCisxNjkzMjM5OCwKKy0zMzI2NzAwNiwKKzE2MzM3MTE0LAorMzMyNjcwMDYsCistMTY0OTIyOTUsCisxNjc3NzM0OCwKKy0zMzU1MTg2MCwKKzE2Nzc3MDM4LAorMzM1NTE4NjAsCistMTY3NzcxNzAsCisxNjkxNDQ2NSwKKy0zMzUwNDUxNywKKzE2NTkyNTc0LAorMzM1MDQ1MTcsCistMTY3Mjk4MjQsCisxNzA2MzIzNiwKKy0zMzQ1MzE1MCwKKzE2MzkyNDMyLAorMzM0NTMxNTAsCistMTY2Nzg0NTMsCisxNzIzNjU5NSwKKy0zMzM5MzI5MywKKzE2MTU5MjEzLAorMzMzOTMyOTMsCistMTY2MTg1OTIsCisxNjc3NzQ4MywKKy0zMzU1MTg4MCwKKzE2Nzc2OTI0LAorMzM1NTE4ODAsCistMTY3NzcxOTEsCisxNzA1NDQzNiwKKy0zMzUyNTYwNiwKKzE2NDczNjk1LAorMzM1MjU2MDYsCistMTY3NTA5MTQsCisxNzM1NTMyMSwKKy0zMzQ5NzA2MSwKKzE2MTQ0MjYyLAorMzM0OTcwNjEsCistMTY3MjIzNjcsCisxNzcwNjQ1MywKKy0zMzQ2Mzc0OSwKKzE1NzU5ODE2LAorMzM0NjM3NDksCistMTY2ODkwNTMsCisxNjc3NzcxMywKKy0zMzU1MTg5MSwKKzE2Nzc2NzA1LAorMzM1NTE4OTEsCistMTY3NzcyMDIsCisxNzI5MzY0NiwKKy0zMzUzNzMxNCwKKzE2MjQ2MTk0LAorMzM1MzczMTQsCistMTY3NjI2MjMsCisxNzg1NDU3MSwKKy0zMzUyMTQ2NSwKKzE1NjY5NDE5LAorMzM1MjE0NjUsCistMTY3NDY3NzMsCisxODUwOTcwNiwKKy0zMzUwMjk1NCwKKzE0OTk1NzcyLAorMzM1MDI5NTQsCistMTY3MjgyNjEsCisxNjc3ODEyMCwKKy0zMzU1MTg5OCwKKzE2Nzc2MzA0LAorMzM1NTE4OTgsCistMTY3NzcyMDgsCisxNzcxNzYzOSwKKy0zMzU0MzgxMSwKKzE1ODI4Njk4LAorMzM1NDM4MTEsCistMTY3NjkxMjEsCisxODczOTUwMSwKKy0zMzUzNTAxNiwKKzE0Nzk4MDQwLAorMzM1MzUwMTYsCistMTY3NjAzMjUsCisxOTkzMzUzNCwKKy0zMzUyNDczOCwKKzEzNTkzNzI5LAorMzM1MjQ3MzgsCistMTY3NTAwNDcsCisxNjc0NzM5NywKKy0zMzQ4NDcwNSwKKzE2NzQ3Mzk2LAorMzM0ODQ3MDUsCistMTY3MTc1NzcsCis1ODgzMTEyLAorLTExNzYyMzM1LAorNTg4Mjc2NywKKzExNzYyMzM1LAorNTAxMTMzNywKKzM0NDg3MDEsCistNjg5NDkwMywKKzM0NDgyNzksCis2ODk0OTAzLAorOTg4MDIzNiwKKzIzMjQyODYsCistNDY0NjcxNCwKKzIzMjM4MjgsCis0NjQ2NzE0LAorMTIxMjkxMDIsCisxNjc2MDY2NSwKKy0zMzUxMTIzMiwKKzE2NzYwNjYzLAorMzM1MTEyMzIsCistMTY3NDQxMTIsCis4Mjc2OTg0LAorLTE2NTQ4MTA2LAorODI3NjEwOCwKKzE2NTQ4MTA2LAorMjI0MTI0LAorNTMzNzQwMCwKKy0xMDY3MDQwNiwKKzUzMzYyMjEsCisxMDY3MDQwNiwKKzYxMDM1OTYsCiszNzcxNTI1LAorLTc1Mzk0MzksCiszNzcwMTg1LAorNzUzOTQzOSwKKzkyMzU1MDYsCisxNjc2ODAzMywKKy0zMzUyNTk2MywKKzE2NzY4MDMwLAorMzM1MjU5NjMsCistMTY3NTg4NDgsCisxMDY4OTU2NCwKKy0yMTM3MDY0OSwKKzEwNjg3NTI0LAorMjEzNzA2NDksCistNDU5OTg3MiwKKzc2NjYwNjgsCistMTUzMjQ0NjYsCis3NjYzMDE1LAorMTUzMjQ0NjYsCisxNDQ4MTMzLAorNTc2MTI2NiwKKy0xMTUxNTM3MSwKKzU3NTc1NzUsCisxMTUxNTM3MSwKKzUyNTgzNzYsCisxNjc3MjEyNCwKKy0zMzUzNDEzOSwKKzE2NzcyMTE4LAorMzM1MzQxMzksCistMTY3NjcwMjYsCisxMjc1MTQyMywKKy0yNTQ5MDc4MCwKKzEyNzQ3MDM2LAorMjU0OTA3ODAsCistODcyMTI0MywKKzEwMTEzOTQyLAorLTIwMjE0NTMzLAorMTAxMDY2ODIsCisyMDIxNDUzMywKKy0zNDQzNDA3LAorODE0NTAyNSwKKy0xNjI3NTc0MSwKKzgxMzU2MjAsCisxNjI3NTc0MSwKKzQ5NjU3MSwKKzE2Nzc0Mzk1LAorLTMzNTM4Njc1LAorMTY3NzQzODUsCiszMzUzODY3NSwKKy0xNjc3MTU2NCwKKzE0MjgwMTM3LAorLTI4NTQyODE5LAorMTQyNzEyODEsCisyODU0MjgxOSwKKy0xMTc3NDIwMiwKKzEyMjkyMzkxLAorLTI0NTYxNDc2LAorMTIyNzY0ODUsCisyNDU2MTQ3NiwKKy03NzkxNjYwLAorMTA1NzI5NDksCistMjExMTc1MzIsCisxMDU1MDk0NSwKKzIxMTE3NTMyLAorLTQzNDY2NzgsCisxNjc3NTY1NywKKy0zMzU0MTE5MiwKKzE2Nzc1NjM5LAorMzM1NDExOTIsCistMTY3NzQwODEsCisxNTI5OTY4MywKKy0zMDU3MzA1MSwKKzE1MjgyNTc5LAorMzA1NzMwNTEsCistMTM4MDUwNDYsCisxMzk2NDI1MSwKKy0yNzg4NzUzOSwKKzEzOTMxNjkwLAorMjc4ODc1MzksCistMTExMTg3MjQsCisxMjY3MjY4NiwKKy0yNTI5MDI0MSwKKzEyNjI1MTc0LAorMjUyOTAyNDEsCistODUyMDY0NCwKKzE2Nzc2MzYzLAorLTMzNTQyNTg4LAorMTY3NzYzMzAsCiszMzU0MjU4OCwKKy0xNjc3NTQ3NywKKzE1OTM1MTk2LAorLTMxODI4Njk5LAorMTU5MDMwOTIsCiszMTgyODY5OSwKKy0xNTA2MTA3MiwKKzE1MTEyMzU2LAorLTMwMTUyMTUzLAorMTUwNDg4ODEsCiszMDE1MjE1MywKKy0xMzM4NDAyMSwKKzE0MjUzODU3LAorLTI4NDAyOTUwLAorMTQxNTc2NDksCisyODQwMjk1MCwKKy0xMTYzNDI5MSwKKzE2Nzc2NzYzLAorLTMzNTQzMzYyLAorMTY3NzY3MDQsCiszMzU0MzM2MiwKKy0xNjc3NjI1MiwKKzE2MzE5ODMwLAorLTMyNTcwNjE1LAorMTYyNjA1OTgsCiszMjU3MDYxNSwKKy0xNTgwMzIxMiwKKzE1ODUxNzgzLAorLTMxNTc0MjA4LAorMTU3MzE5MzgsCiszMTU3NDIwOCwKKy0xNDgwNjUwNSwKKzE1MzM5NjE0LAorLTMwNDgzODcxLAorMTUxNTM0NDEsCiszMDQ4Mzg3MSwKKy0xMzcxNTgzOCwKKzE2Nzc3MDAxLAorLTMzNTQzNzkxLAorMTY3NzY4OTYsCiszMzU0Mzc5MSwKKy0xNjc3NjY4MSwKKzE2NTU3NjczLAorLTMyOTk3MjA4LAorMTY0NDk0NzYsCiszMjk5NzIwOCwKKy0xNjIyOTkzMywKKzE2MzI2OTc3LAorLTMyNDIyMjk5LAorMTYxMDUwODksCiszMjQyMjI5OSwKKy0xNTY1NDg1MSwKKzE2MDY3MjQ0LAorLTMxNzc1MDI0LAorMTU3MTczNTMsCiszMTc3NTAyNCwKKy0xNTAwNzM4MSwKKzE2Nzc3MTYzLAorLTMzNTQ0MDI5LAorMTY3NzY5NzIsCiszMzU0NDAyOSwKKy0xNjc3NjkxOSwKKzE2NzIyNTkwLAorLTMzMjM4NjYwLAorMTY1MjYwODMsCiszMzIzODY2MCwKKy0xNjQ3MTQ1OCwKKzE2NjY0MzIyLAorLTMyOTEyNjEwLAorMTYyNTgyMDMsCiszMjkxMjYxMCwKKy0xNjE0NTMxMCwKKzE2NTk3NjI5LAorLTMyNTM5NDE5LAorMTU5NTE1OTMsCiszMjUzOTQxOSwKKy0xNTc3MjAwNywKKzE2Nzc3MzA2LAorLTMzNTQ0MTYyLAorMTY3NzY5NjIsCiszMzU0NDE2MiwKKy0xNjc3NzA1MSwKKzE2ODY5OTU1LAorLTMzMzc0MTA1LAorMTY1MTQyMDUsCiszMzM3NDEwNSwKKy0xNjYwNjk0NCwKKzE2OTY5NzE0LAorLTMzMTkwOTk2LAorMTYyMzEyODIsCiszMzE5MDk5NiwKKy0xNjQyMzc4MCwKKzE3MDg0OTcyLAorLTMyOTc5NDQyLAorMTU5MDQ0MDYsCiszMjk3OTQ0MiwKKy0xNjIxMjE2MiwKKzE2Nzc3NDgwLAorLTMzNTQ0MjM1LAorMTY3NzY4NjAsCiszMzU0NDIzNSwKKy0xNjc3NzEyNSwKKzE3MDUxMzI4LAorLTMzNDQ5NzAzLAorMTY0MDg0NTIsCiszMzQ0OTcwMywKKy0xNjY4MjU2NSwKKzE3MzQ3NTgzLAorLTMzMzQ3NDM3LAorMTYwMDk5MDEsCiszMzM0NzQzNywKKy0xNjU4MDI2NywKKzE3NjkxNjY4LAorLTMzMjI4NjU5LAorMTU1NDcwMDIsCiszMzIyODY1OSwKKy0xNjQ2MTQ1NCwKKzE2Nzc3NzUwLAorLTMzNTQ0Mjc1LAorMTY3NzY2MzIsCiszMzU0NDI3NSwKKy0xNjc3NzE2NSwKKzE3MzMxMjIyLAorLTMzNDkxNzgwLAorMTYxNzA2NDgsCiszMzQ5MTc4MCwKKy0xNjcyNDY1NCwKKzE3OTMxNTUwLAorLTMzNDM0ODQwLAorMTU1MTMzNjMsCiszMzQzNDg0MCwKKy0xNjY2NzY5NywKKzE4NjMwODU1LAorLTMzMzY4NTEyLAorMTQ3NDc3MTAsCiszMzM2ODUxMiwKKy0xNjYwMTM0OSwKKzE2Nzc4MjEwLAorLTMzNTQ0Mjk4LAorMTY3NzYxOTQsCiszMzU0NDI5OCwKKy0xNjc3NzE4OCwKKzE3ODA5NjI4LAorLTMzNTE1MTYyLAorMTU3MTU2MzEsCiszMzUxNTE2MiwKKy0xNjc0ODA0MywKKzE4OTI5OTkxLAorLTMzNDgzNTE0LAorMTQ1NjM2MTEsCiszMzQ4MzUxNCwKKy0xNjcxNjM4NSwKKzIwMjM3MjEyLAorLTMzNDQ2NTg3LAorMTMyMTk0NTEsCiszMzQ0NjU4NywKKy0xNjY3OTQ0OCwKKzE2Nzc5MDI1LAorLTMzNTQ0MzEwLAorMTY3NzUzOTIsCiszMzU0NDMxMCwKKy0xNjc3NzIwMCwKKzE4NjU3NjEyLAorLTMzNTI4MTQ1LAorMTQ4ODA2MzQsCiszMzUyODE0NSwKKy0xNjc2MTAzMCwKKzIwNjk5ODQ0LAorLTMzNTEwNTcxLAorMTI4MjA4MjIsCiszMzUxMDU3MSwKKy0xNjc0MzQ1MSwKKzIzMDg0ODYzLAorLTMzNDkwMDQ3LAorMTA0MTUyNzQsCiszMzQ5MDA0NywKKy0xNjcyMjkyMSwKKzE2NzE3Njg0LAorLTMzMzk1MDkxLAorMTY3MTc2ODIsCiszMzM5NTA5MSwKKy0xNjY1ODE0OSwKKzM1NjcwMDksCistNzEyNTAwNiwKKzM1NjY1OTAsCis3MTI1MDA2LAorOTY0MzYxNywKKzE5MjE5MjYsCistMzgzODc1MSwKKzE5MjE0NTUsCiszODM4NzUxLAorMTI5MzM4MzUsCisxMjQ4NjYyLAorLTI0OTM4MjQsCisxMjQ4MTcwLAorMjQ5MzgyNCwKKzE0MjgwMzg0LAorMTY3NDQxNDcsCistMzM0NDc5NTIsCisxNjc0NDE0MywKKzMzNDQ3OTUyLAorLTE2NzExMDc0LAorNTQ5Mzc4NSwKKy0xMDk3MzE3NCwKKzU0OTI2MjIsCisxMDk3MzE3NCwKKzU3OTA4MDgsCiszMTczNjk0LAorLTYzMzgzNDIsCiszMTcyMjkyLAorNjMzODM0MiwKKzEwNDMxMjMwLAorMjEyNDc1NCwKKy00MjQyODgxLAorMjEyMzI0NCwKKzQyNDI4ODEsCisxMjUyOTIxOCwKKzE2NzU4ODYxLAorLTMzNDc3MzQyLAorMTY3NTg4NTUsCiszMzQ3NzM0MiwKKy0xNjc0MDUwMCwKKzc4NDM4ODUsCistMTU2NjU4ODQsCis3ODQwODkyLAorMTU2NjU4ODQsCisxMDkyNDM5LAorNDk2ODY0OSwKKy05OTIxMzc2LAorNDk2NDY5MiwKKzk5MjEzNzYsCis2ODQzODc1LAorMzQ3ODQzNywKKy02OTQ0MDQzLAorMzQ3Mzk4MSwKKzY5NDQwNDMsCis5ODI0Nzk4LAorMTY3NjcwMzUsCistMzM0OTM2NjUsCisxNjc2NzAyNCwKKzMzNDkzNjY1LAorLTE2NzU2ODQyLAorMTAyODQ0MjEsCistMjA1MzY5OTksCisxMDI3NzM0NiwKKzIwNTM2OTk5LAorLTM3ODQ1NTAsCis3MjQwMjU0LAorLTE0NDUyNjg2LAorNzIyOTg2MiwKKzE0NDUyNjg2LAorMjMwNzEwMCwKKzUzNzk3OTgsCistMTA3MzQyMzEsCis1MzY3Mzc5LAorMTA3MzQyMzEsCis2MDMwMDM5LAorMTY3NzE1NzUsCistMzM1MDI3MjUsCisxNjc3MTU1NSwKKzMzNTAyNzI1LAorLTE2NzY1OTEzLAorMTI0MzEwNDYsCistMjQ4MTY3NDksCisxMjQxNTYzMiwKKzI0ODE2NzQ5LAorLTgwNjk0NjIsCis5NzAyMDQ5LAorLTE5MzU1NjY0LAorOTY3Njk1NywKKzE5MzU1NjY0LAorLTI2MDE3OTAsCis3NzIyNjExLAorLTE1Mzk0NTQ0LAorNzY5MDQ5OSwKKzE1Mzk0NTQ0LAorMTM2NDEwNiwKKzE2Nzc0MDk5LAorLTMzNTA3NzUyLAorMTY3NzQwNjMsCiszMzUwNzc1MiwKKy0xNjc3MDk0NiwKKzE0MDYyNTgzLAorLTI4MDU5OTAzLAorMTQwMzExNjAsCisyODA1OTkwMywKKy0xMTMxNjUyNywKKzExOTYyOTk5LAorLTIzODQxNTE5LAorMTE5MDcyNzMsCisyMzg0MTUxOSwKKy03MDkzMDU2LAorMTAxODg5MjksCistMjAyNzcxNDIsCisxMDExMjY2NywKKzIwMjc3MTQyLAorLTM1MjQzODAsCisxNjc3NTUxMCwKKy0zMzUxMDU0MSwKKzE2Nzc1NDQ1LAorMzM1MTA1NDEsCistMTY3NzM3MzgsCisxNTE3NTEwMiwKKy0zMDI1MjYzNywKKzE1MTE0MDE5LAorMzAyNTI2MzcsCistMTM1MTE5MDUsCisxMzc1MzIwNywKKy0yNzM1ODEyMywKKzEzNjM3OTExLAorMjczNTgxMjMsCistMTA2MTM5MDEsCisxMjQwMDk3MSwKKy0yNDYwNTQxNiwKKzEyMjM0MTE5LAorMjQ2MDU0MTYsCistNzg1Nzg3NCwKKzE2Nzc2MzEwLAorLTMzNTEyMDg4LAorMTY3NzYxOTMsCiszMzUxMjA4OCwKKy0xNjc3NTI4NywKKzE1ODg4MjQyLAorLTMxNjIzMjIxLAorMTU3NzMxMTcsCiszMTYyMzIyMSwKKy0xNDg4NDE0MywKKzE1MDI4OTcyLAorLTI5Nzk1NjA4LAorMTQ4MDI1NzAsCisyOTc5NTYwOCwKKy0xMzA1NDMyNSwKKzE0MTQyMjM3LAorLTI3OTA5NTc4LAorMTM4MDEwMDAsCisyNzkwOTU3OCwKKy0xMTE2NjAyMSwKKzE2Nzc2Nzg3LAorLTMzNTEyOTQ2LAorMTY3NzY1NzUsCiszMzUxMjk0NiwKKy0xNjc3NjE0NiwKKzE2MzQ1MTcyLAorLTMyNDM4MzAyLAorMTYxMzIyNTEsCiszMjQzODMwMiwKKy0xNTcwMDIwNywKKzE1OTA1ODU2LAorLTMxMzQ0NDg0LAorMTU0NzY0MjksCiszMTM0NDQ4NCwKKy0xNDYwNTA2OSwKKzE1NDI4MzI0LAorLTMwMTU1NTE0LAorMTQ3NjM1NTgsCiszMDE1NTUxNCwKKy0xMzQxNDY2NSwKKzE2Nzc3MTEwLAorLTMzNTEzNDIyLAorMTY3NzY3MjksCiszMzUxMzQyMiwKKy0xNjc3NjYyMywKKzE2NjY4OTUwLAorLTMyOTA4NzQ0LAorMTYyNzk0ODIsCiszMjkwODc0NCwKKy0xNjE3MTIxNiwKKzE2NTU1NTk0LAorLTMyMjc1MDE1LAorMTU3NTgzNDQsCiszMjI3NTAxNSwKKy0xNTUzNjcyMiwKKzE2NDI4NDY1LAorLTMxNTY0Mjg0LAorMTUxNzM4ODYsCiszMTU2NDI4NCwKKy0xNDgyNTEzNCwKKzE2Nzc3Mzk1LAorLTMzNTEzNjg2LAorMTY3NzY3MDgsCiszMzUxMzY4NiwKKy0xNjc3Njg4NywKKzE2OTYxNzU4LAorLTMzMTc1NTk0LAorMTYyNTM4NDUsCiszMzE3NTU5NCwKKy0xNjQzODM4NywKKzE3MTU4MjEyLAorLTMyODE1MzI5LAorMTU2OTY2OTIsCiszMjgxNTMyOSwKKy0xNjA3NzY4OCwKKzE3MzgyNTc4LAorLTMyNDAzODgwLAorMTUwNjAzODEsCiszMjQwMzg4MCwKKy0xNTY2NTc0MywKKzE2Nzc3NzQ1LAorLTMzNTEzODMyLAorMTY3NzY1MDUsCiszMzUxMzgzMiwKKy0xNjc3NzAzMywKKzE3MzIzOTAzLAorLTMzMzI1NDcwLAorMTYwNDE3NTcsCiszMzMyNTQ3MCwKKy0xNjU4ODQ0NCwKKzE3OTExMzMyLAorLTMzMTIyODc0LAorMTUyNTE0ODgsCiszMzEyMjg3NCwKKy0xNjM4NTYwNCwKKzE4NTg5MjAzLAorLTMyODg5MDg2LAorMTQzMzk1NDYsCiszMjg4OTA4NiwKKy0xNjE1MTUzNCwKKzE2Nzc4MjgzLAorLTMzNTEzOTEzLAorMTY3NzYwNDgsCiszMzUxMzkxMywKKy0xNjc3NzExNSwKKzE3ODgzNTA1LAorLTMzNDA5MTgwLAorMTU1NjU5NjYsCiszMzQwOTE4MCwKKy0xNjY3MjI1NSwKKzE5MDc4NDUxLAorLTMzMjk1OTQ0LAorMTQyNTc2NDgsCiszMzI5NTk0NCwKKy0xNjU1ODg4MywKKzIwNDY1NDQwLAorLTMzMTY0NTEwLAorMTI3MzkwNjcsCiszMzE2NDUxMCwKKy0xNjQyNzI5MCwKKzE2Nzc5MjAzLAorLTMzNTEzOTU4LAorMTY3NzUxNzMsCiszMzUxMzk1OCwKKy0xNjc3NzE2MCwKKzE4ODQwMjY1LAorLTMzNDU1Nzg5LAorMTQ2NTU4NzEsCiszMzQ1NTc4OSwKKy0xNjcxODkyMSwKKzIxMDc1MTIxLAorLTMzMzkyNzE1LAorMTIzNTc4NjYsCiszMzM5MjcxNSwKKy0xNjY1NTc3MSwKKzIzNjc3NjIxLAorLTMzMzE5MjY2LAorOTY4MTgyOCwKKzMzMzE5MjY2LAorLTE2NTgyMjMzLAorMTY3ODA4MzQsCistMzM1MTM5ODMsCisxNjc3MzU2NywKKzMzNTEzOTgzLAorLTE2Nzc3MTg1LAorMjA1MzYyMjcsCistMzM0ODE2OTYsCisxMjk4NTg0OCwKKzMzNDgxNjk2LAorLTE2NzQ0ODU5LAorMjQ2MTQ4NTUsCistMzM0NDY2MzAsCis4ODcyMTEyLAorMzM0NDY2MzAsCistMTY3MDk3NTEsCisyOTM3MzA3NSwKKy0zMzQwNTcyMSwKKzQwNzI5MzQsCiszMzQwNTcyMSwKKy0xNjY2ODc5MywKKzE2NjU4NTcyLAorLTMzMTU2NzEwLAorMTY2NTg1NjgsCiszMzE1NjcxMCwKKy0xNjUzOTkyNSwKKzE5OTU2OTQsCistMzk3MTcwMiwKKzE5OTUyMjUsCiszOTcxNzAyLAorMTI3ODYyOTYsCisxMDE5MzM0LAorLTIwMjgzNTUsCisxMDE4ODM1LAorMjAyODM1NSwKKzE0NzM5MDQ3LAorNjQ4Mzk3LAorLTEyOTAwNDEsCis2NDc4ODYsCisxMjkwMDQxLAorMTU0ODA5MzMsCisxNjcxMTIwOCwKKy0zMzI2MTQ3MCwKKzE2NzExMjAxLAorMzMyNjE0NzAsCistMTY2NDUxOTIsCiszMjg0ODczLAorLTY1MzY3MjcsCiszMjgzNDgzLAorNjUzNjcyNywKKzEwMjA4ODYwLAorMTc1Mjc0NiwKKy0zNDg3MDcxLAorMTc1MTE5OCwKKzM0ODcwNzEsCisxMzI3MzI3MiwKKzExMzQyNTQsCistMjI1NTk4MSwKKzExMzI2NDIsCisyMjU1OTgxLAorMTQ1MTAzMTksCisxNjc0MDU0NiwKKy0zMzMxOTg1OSwKKzE2NzQwNTM0LAorMzMzMTk4NTksCistMTY3MDM4NjQsCis1MTE5MDE5LAorLTEwMTg0ODUzLAorNTExNTExMywKKzEwMTg0ODUzLAorNjU0MzA4MywKKzI5MTY3NjYsCistNTgwMDgyMCwKKzI5MTIxMjIsCis1ODAwODIwLAorMTA5NDgzMjksCisxOTQwOTUwLAorLTM4NTgyNjAsCisxOTM1OTc5LAorMzg1ODI2MCwKKzEyOTAwMjg4LAorMTY3NTY4NjYsCistMzMzNTIzMzIsCisxNjc1Njg0NCwKKzMzMzUyMzMyLAorLTE2NzM2NDkzLAorNzQxNjE0MSwKKy0xNDc1MDcwOSwKKzc0MDU5NDEsCisxNDc1MDcwOSwKKzE5NTUxMzQsCis0NjE4MTMyLAorLTkxNzg2MDQsCis0NjA0ODg0LAorOTE3ODYwNCwKKzc1NTQyMDAsCiszMjA1NzMxLAorLTYzNjU4NzMsCiszMTkwOTQ0LAorNjM2NTg3MywKKzEwMzgwNTQxLAorMTY3NjU5MzcsCistMzMzNzAzNjksCisxNjc2NTg5NywKKzMzMzcwMzY5LAorLTE2NzU0NjE4LAorOTg3NTcxNCwKKy0xOTYzMTk2MSwKKzk4NTEyMzgsCisxOTYzMTk2MSwKKy0yOTQ5NzM2LAorNjgyODg3NCwKKy0xMzU1Njg3MCwKKzY3OTM1OTIsCisxMzU1Njg3MCwKKzMxNTQ3NTEsCis1MDIxOTIwLAorLTk5NTM5ODcsCis0OTgwMjMwLAorOTk1Mzk4NywKKzY3NzUwNjYsCisxNjc3MDk4MywKKy0zMzM4MDM4MSwKKzE2NzcwOTExLAorMzMzODAzODEsCistMTY3NjQ2NzksCisxMjEwNzczMSwKKy0yNDA0NTA2NiwKKzEyMDUzNjc5LAorMjQwNDUwNjYsCistNzM4NDE5NCwKKzkzMDQ2OTcsCistMTg0MzM3MDQsCis5MjE4MjAwLAorMTg0MzM3MDQsCistMTc0NTY4MSwKKzczMzAxNzMsCistMTQ0ODA5MjUsCis3MjIwODE5LAorMTQ0ODA5MjUsCisyMjI2MjI0LAorMTY3NzM4MDQsCistMzMzODU5MzcsCisxNjc3MzY3NCwKKzMzMzg1OTM3LAorLTE2NzcwMjYxLAorMTM4NTcwNjcsCistMjc0Njk4ODMsCisxMzc0NTczMSwKKzI3NDY5ODgzLAorLTEwODI1NTgzLAorMTE2NjcyMzAsCistMjMwMjgyMDksCisxMTQ3MjQwMywKKzIzMDI4MjA5LAorLTYzNjI0MTcsCis5ODYxNTA5LAorLTE5MzY1NjQyLAorOTU5NzgzNSwKKzE5MzY1NjQyLAorLTI2ODIxMjgsCisxNjc3NTQwNSwKKy0zMzM4OTAxOSwKKzE2Nzc1MTcwLAorMzMzODkwMTksCistMTY3NzMzNTgsCisxNTA5NDE2NiwKKy0yOTgyNjA1NywKKzE0ODc2MjA3LAorMjk4MjYwNTcsCistMTMxOTMxNTcsCisxMzYyOTU3NSwKKy0yNjcyMjIyNSwKKzEzMjIxOTQ4LAorMjY3MjIyMjUsCistMTAwNzQzMDcsCisxMjI2MTMwNCwKKy0yMzgyMjUyMCwKKzExNjc2NDgyLAorMjM4MjI1MjAsCistNzE2MDU3MSwKKzE2Nzc2MzU4LAorLTMzMzkwNzI5LAorMTY3NzU5MzUsCiszMzM5MDcyOSwKKy0xNjc3NTA3NiwKKzE1OTM5OTczLAorLTMxMzE1ODA5LAorMTU1MjczNjAsCiszMTMxNTgwOSwKKy0xNDY5MDExNywKKzE1MTQwMjU0LAorLTI5MzMxODUwLAorMTQzMzM1MjAsCisyOTMzMTg1MCwKKy0xMjY5NjU1OCwKKzE0MzI0NTUyLAorLTI3MzA4MjQwLAorMTMxMTU4MjEsCisyNzMwODI0MCwKKy0xMDY2MzE1NywKKzE2Nzc3MDA0LAorLTMzMzkxNjc3LAorMTY3NzYyNDEsCiszMzM5MTY3NywKKy0xNjc3NjAyOSwKKzE2NTY0NTE5LAorLTMyMjA4MDUxLAorMTU3OTkzNzQsCiszMjIwODA1MSwKKy0xNTU4NjY3NiwKKzE2MzQ5NzIwLAorLTMxMDExNTM4LAorMTQ4MTE4NzAsCiszMTAxMTUzOCwKKy0xNDM4NDM3NCwKKzE2MTE3ODg0LAorLTI5NzIwMTE5LAorMTM3NDYwMzgsCisyOTcyMDExOSwKKy0xMzA4NjcwNSwKKzE2Nzc3NTc0LAorLTMzMzkyMjAzLAorMTY3NzYxOTksCiszMzM5MjIwMywKKy0xNjc3NjU1OCwKKzE3MTQyNjIzLAorLTMyNzI1MTgzLAorMTU3NDA5MDMsCiszMjcyNTE4MywKKy0xNjEwNjMxMCwKKzE3NTIzNzQ2LAorLTMyMDI4NzkzLAorMTQ2NjAwMjEsCiszMjAyODc5MywKKy0xNTQwNjU1MSwKKzE3OTQ5NDUyLAorLTMxMjUwOTQxLAorMTM0NTI2OTksCiszMTI1MDk0MSwKKy0xNDYyNDkzNSwKKzE2Nzc4MjczLAorLTMzMzkyNDk1LAorMTY3NzU3OTQsCiszMzM5MjQ5NSwKKy0xNjc3Njg1MSwKKzE3ODY0NTExLAorLTMzMDE5MjIxLAorMTUzMTQ0NzYsCiszMzAxOTIyMSwKKy0xNjQwMTc3MSwKKzE5MDE5NTgyLAorLTMyNjIyMjk0LAorMTM3NjA1NTcsCiszMjYyMjI5NCwKKy0xNjAwMjkyMywKKzIwMzM1ODg2LAorLTMyMTY5OTYxLAorMTE5ODk3MzEsCiszMjE2OTk2MSwKKy0xNTU0ODQwMSwKKzE2Nzc5MzUwLAorLTMzMzkyNjU3LAorMTY3NzQ4NzksCiszMzM5MjY1NywKKy0xNjc3NzAxNCwKKzE4OTgyOTcyLAorLTMzMTg0NTkyLAorMTQzNjIxODYsCiszMzE4NDU5MiwKKy0xNjU2Nzk0MiwKKzIxMzUwNTU0LAorLTMyOTYxMDQ2LAorMTE3Njk5NzYsCiszMjk2MTA0NiwKKy0xNjM0MzMxNCwKKzI0MDc5Njg4LAorLTMyNzAzMzYyLAorODc4MTkxMiwKKzMyNzAzMzYyLAorLTE2MDg0MzgzLAorMTY3ODExOTAsCistMzMzOTI3NDYsCisxNjc3MzEzMCwKKzMzMzkyNzQ2LAorLTE2Nzc3MTA0LAorMjA4OTYzMDMsCistMzMyNzcwMjYsCisxMjU0MTczNywKKzMzMjc3MDI2LAorLTE2NjYwODI0LAorMjUzNDMxOTksCistMzMxNTE5NzcsCis3OTY5MTg1LAorMzMxNTE5NzcsCistMTY1MzUxNjksCiszMDUwMjM4NCwKKy0zMzAwNjg5NiwKKzI2NjQyMTksCiszMzAwNjg5NiwKKy0xNjM4OTM4NywKKzE2Nzg0NDUxLAorLTMzMzkyNzk2LAorMTY3Njk5MTgsCiszMzM5Mjc5NiwKKy0xNjc3NzE1NCwKKzI0Mjg4MjU4LAorLTMzMzI4NTE2LAorOTIwMTUyMCwKKzMzMzI4NTE2LAorLTE2NzEyNTYyLAorMzI0MjMxODcsCistMzMyNTg4MjgsCis5OTY1NjcsCiszMzI1ODgyOCwKKy0xNjY0MjUzOCwKKzQxODk1MzIwLAorLTMzMTc3Njg2LAorLTg1NTcxMDEsCiszMzE3NzY4NiwKKy0xNjU2MTAwMywKKzE2NTQxNTk1LAorLTMyNDQ3NDk4LAorMTY1NDE1ODcsCiszMjQ0NzQ5OCwKKy0xNjMwNTk2NiwKKzEwNjA5MjUsCistMjA4MDU5MCwKKzEwNjA0MjYsCisyMDgwNTkwLAorMTQ2NTU4NjUsCis1MjU0NzgsCistMTAzMDI1NiwKKzUyNDk2MiwKKzEwMzAyNTYsCisxNTcyNjc3NiwKKzMzMDMyMSwKKy02NDc0MzcsCiszMjk4MDAsCis2NDc0MzcsCisxNjExNzA5NSwKKzE2NjQ1NzE3LAorLTMyNjUxNzM0LAorMTY2NDU3MDMsCiszMjY1MTczNCwKKy0xNjUxNDIwMywKKzE4MjA3ODksCistMzU3MDA5NSwKKzE4MTkyNDgsCiszNTcwMDk1LAorMTMxMzcxNzksCis5MjQ1NzUsCistMTgxMjAxOCwKKzkyMjk0MiwKKzE4MTIwMTgsCisxNDkyOTY5OSwKKzU4NjY4NCwKKy0xMTQ5MTg2LAorNTg1MDE2LAorMTE0OTE4NiwKKzE1NjA1NTE2LAorMTY3MDQwMzYsCistMzI3NjYxMjEsCisxNjcwNDAxMSwKKzMyNzY2MTIxLAorLTE2NjMwODMxLAorMzAyMDg3NSwKKy01OTIxMTM4LAorMzAxNjI2NiwKKzU5MjExMzgsCisxMDc0MDA3NiwKKzE1OTc1NzMsCistMzEyODc2NCwKKzE1OTI0ODcsCiszMTI4NzY0LAorMTM1ODcxNTYsCisxMDMwMTI0LAorLTIwMTU0ODcsCisxMDI0ODQ4LAorMjAxNTQ4NywKKzE0NzIyMjQ0LAorMTY3MzY1NjUsCistMzI4Mjk5MDksCisxNjczNjUyMSwKKzMyODI5OTA5LAorLTE2Njk1ODY5LAorNDc2MjAxMywKKy05MzI4MTg1LAorNDc0ODkyMiwKKzkzMjgxODUsCis3MjY2MjgxLAorMjY3OTU2NiwKKy01MjQxMDkxLAorMjY2NDIwNSwKKzUyNDEwOTEsCisxMTQzMzQ0NiwKKzE3NzM5MTIsCistMzQ2MzYyMCwKKzE3NTc1NjQsCiszNDYzNjIwLAorMTMyNDU3NDAsCisxNjc1NDY3MywKKy0zMjg2NTM5NSwKKzE2NzU0NTkzLAorMzI4NjUzOTUsCistMTY3MzIwNTAsCis3MDAxNzcyLAorLTEzNzAwNDY4LAorNjk2NzEwNCwKKzEzNzAwNDY4LAorMjgwODM0MCwKKzQyOTMzNjMsCistODM3ODMxMiwKKzQyNDkwODksCis4Mzc4MzEyLAorODIzNDc2NCwKKzI5NjAwNjEsCistNTc1ODMwNywKKzI5MTEwNTgsCis1NzU4MzA3LAorMTA5MDYwOTcsCisxNjc2NDc1NiwKKy0zMjg4NTExMCwKKzE2NzY0NjExLAorMzI4ODUxMTAsCistMTY3NTIxNTEsCis5NDgwMTg4LAorLTE4NTEzMjE1LAorOTM5NTcyMiwKKzE4NTEzMjE1LAorLTIwOTg2OTQsCis2NDUzNjkzLAorLTEyNTQyMTcxLAorNjMzNDE5NCwKKzEyNTQyMTcxLAorMzk4OTMzMCwKKzQ3MTA2NDEsCistOTEwMzI2NCwKKzQ1NzA5NjYsCis5MTAzMjY0LAorNzQ5NTYwOSwKKzE2NzcwMzkzLAorLTMyODk2MDU0LAorMTY3NzAxMzMsCiszMjg5NjA1NCwKKy0xNjc2MzMxMCwKKzExODE2Mjc2LAorLTIyOTkyOTQ5LAorMTE2MjcxMzEsCisyMjk5Mjk0OSwKKy02NjY2MTkxLAorODk3NTcyNiwKKy0xNzMxNDc4OSwKKzg2NzgyODAsCisxNzMxNDc4OSwKKy04NzY3OTAsCis3MDMyNDA4LAorLTEzNDMwMTY0LAorNjY2MDg2OSwKKzEzNDMwMTY0LAorMzA4Mzk0MCwKKzE2NzczNTkzLAorLTMyOTAyMTI3LAorMTY3NzMxMjQsCiszMjkwMjEyNywKKy0xNjc2OTUwMiwKKzEzNzM1NjE1LAorLTI2NTU3MDUyLAorMTMzNDE3MjAsCisyNjU1NzA1MiwKKy0xMDMwMDEyMCwKKzExNTI4MTY1LAorLTIxOTQ2NjA2LAorMTA4NDg0MDAsCisyMTk0NjYwNiwKKy01NTk5MzQ5LAorOTc1MjU2MywKKy0xODIzODExMCwKKzg4NDI4NTMsCisxODIzODExMCwKKy0xODE4MjAwLAorMTY3NzU0OTksCistMzI5MDU0OTYsCisxNjc3NDY1NCwKKzMyOTA1NDk2LAorLTE2NzcyOTM3LAorMTUyMDA1ODgsCistMjkwNTQ5NTcsCisxNDQyMzU4OSwKKzI5MDU0OTU3LAorLTEyODQ2OTYxLAorMTM4NTcwMDQsCistMjU3Njk5OTUsCisxMjQxNzg1NSwKKzI1NzY5OTk1LAorLTk0OTc2NDMsCisxMjYyNDQ1MywKKy0yMjc1NjUwMCwKKzEwNTc3ODczLAorMjI3NTY1MDAsCistNjQyNTExMSwKKzE2Nzc2NzkyLAorLTMyOTA3MzY1LAorMTY3NzUyNjcsCiszMjkwNzM2NSwKKy0xNjc3NDg0MywKKzE2MzY2MzQ0LAorLTMwNjU0MDg5LAorMTQ4ODgyOTQsCiszMDY1NDA4OSwKKy0xNDQ3NzQyMiwKKzE1OTc4NzUzLAorLTI4NTI2Mjk1LAorMTMxMDY0MDYsCisyODUyNjI5NSwKKy0xMjMwNzk0MiwKKzE1NTg4MDU3LAorLTI2MzgxNDU2LAorMTEzMTAyNDIsCisyNjM4MTQ1NiwKKy0xMDEyMTA4MywKKzE2Nzc3OTMzLAorLTMyOTA4NDAyLAorMTY3NzUxODMsCiszMjkwODQwMiwKKy0xNjc3NTkwMCwKKzE3NDkzODAyLAorLTMxNjE5Mjg3LAorMTQ3NDQ5NDMsCiszMTYxOTI4NywKKy0xNTQ2MTUyOSwKKzE4MjEyNDE0LAorLTMwMzI1MjM0LAorMTI3MDY5MjcsCiszMDMyNTIzNCwKKy0xNDE0MjEyNCwKKzE4OTgyNzI1LAorLTI4OTM4MDgxLAorMTA1MjIyODYsCisyODkzODA4MSwKKy0xMjcyNzc5NSwKKzE2Nzc5MzMwLAorLTMyOTA4OTc3LAorMTY3NzQzNzIsCiszMjkwODk3NywKKy0xNjc3NjQ4NiwKKzE4OTI4MDQxLAorLTMyMTgxMjgwLAorMTM4ODM3MDcsCiszMjE4MTI4MCwKKy0xNjAzNDUzMiwKKzIxMTYzMTE4LAorLTMxNDI0MzM0LAorMTA4NzY4NTUsCiszMTQyNDMzNCwKKy0xNTI2Mjc1NywKKzIzNjUwODcxLAorLTMwNTgxODE0LAorNzUzMDA3NiwKKzMwNTgxODE0LAorLTE0NDAzNzMxLAorMTY3ODE0ODQsCistMzI5MDkyOTYsCisxNjc3MjU0MywKKzMyOTA5Mjk2LAorLTE2Nzc2ODExLAorMjExNjE5OTYsCistMzI1MDE2NzQsCisxMTk3NjQyNCwKKzMyNTAxNjc0LAorLTE2MzYxMjA0LAorMjU4MTIwMDksCistMzIwNjg5NzUsCis2ODg1MjM0LAorMzIwNjg5NzUsCistMTU5MjAwMjcsCiszMTEwMzM4NSwKKy0zMTU3NjU5NCwKKzEwOTE4MzEsCiszMTU3NjU5NCwKKy0xNTQxODAwMCwKKzE2Nzg1MTY0LAorLTMyOTA5NDczLAorMTY3NjkwNDMsCiszMjkwOTQ3MywKKy0xNjc3Njk5MSwKKzI0OTg4MDY0LAorLTMyNjgyMTM5LAorODMzNDM1NiwKKzMyNjgyMTM5LAorLTE2NTQ1MjA0LAorMzM3OTU3OTQsCistMzI0MzgwNDMsCistNzIyMjUyLAorMzI0MzgwNDMsCistMTYyOTYzMjUsCis0Mzk0NjEyOCwKKy0zMjE1NjczOCwKKy0xMTE1OTQwMywKKzMyMTU2NzM4LAorLTE2MDA5NTEwLAorMTY3OTE2ODcsCistMzI5MDk1NzEsCisxNjc2MjYyMCwKKzMyOTA5NTcxLAorLTE2Nzc3MDkxLAorMzE3NzI1MjEsCistMzI3ODMwOTYsCisxNjUyODM0LAorMzI3ODMwOTYsCistMTY2NDgxMzksCis0Nzk2MTIyOSwKKy0zMjY0NjQyMywKKy0xNDY3NTIyNSwKKzMyNjQ2NDIzLAorLTE2NTA4Nzg4LAorNjY3NTE2ODIsCistMzI0ODc3ODUsCistMzM2Mjc0MjMsCiszMjQ4Nzc4NSwKKy0xNjM0NzA0MywKKzE2MzEyNTAwLAorLTMwMTQxNTU2LAorMTYzMTI0ODUsCiszMDE0MTU1NiwKKy0xNTg0Nzc2OSwKKzU0NzU5OCwKKy0xMDExMzU0LAorNTQ3MDg0LAorMTAxMTM1NCwKKzE1NjgyNTM0LAorMjY2NDQ4LAorLTQ5MTg0OSwKKzI2NTkyNSwKKzQ5MTg0OSwKKzE2MjQ0ODQzLAorMTY2MTExLAorLTMwNjQ0NiwKKzE2NTU4NCwKKzMwNjQ0NiwKKzE2NDQ1NTIxLAorMTY1MTYyNjIsCistMzA1MTgwNDksCisxNjUxNjIzNiwKKzMwNTE4MDQ5LAorLTE2MjU1MjgyLAorOTYyNDg3LAorLTE3NzY5MzgsCis5NjA4NTcsCisxNzc2OTM4LAorMTQ4NTM4NzIsCis0NzQ3NDIsCistODc1NjU2LAorNDczMDYyLAorODc1NjU2LAorMTU4Mjk0MTMsCisyOTc1MjAsCistNTQ4MTc2LAorMjk1ODIxLAorNTQ4MTc2LAorMTYxODM4NzUsCisxNjYzMTQ5MiwKKy0zMDczMDk0NCwKKzE2NjMxNDQzLAorMzA3MzA5NDQsCistMTY0ODU3MTksCisxNjYwMTQ2LAorLTMwNjI4NzAsCisxNjU1MDgxLAorMzA2Mjg3MCwKKzEzNDYxOTg5LAorODM4MTcyLAorLTE1NDM4MDYsCis4MzI4MzEsCisxNTQzODA2LAorMTUxMDYyMTMsCis1MzAxMzUsCistOTc0NTMyLAorNTI0NjkxLAorOTc0NTMyLAorMTU3MjIzOTAsCisxNjY5NjExMCwKKy0zMDg1MDMwNywKKzE2Njk2MDIyLAorMzA4NTAzMDcsCistMTY2MTQ5MTYsCisyNzc2NjQyLAorLTUxMTY0NzIsCisyNzYxMzg3LAorNTExNjQ3MiwKKzExMjM5MTg3LAorMTQ1Njg0NSwKKy0yNjc2NDc3LAorMTQ0MDE1MiwKKzI2NzY0NzcsCisxMzg4MDIxOSwKKzkzNjE1MSwKKy0xNzEzODM1LAorOTE4ODkxLAorMTcxMzgzNSwKKzE0OTIyMTc0LAorMTY3MzIxOTEsCistMzA5MTY5MTAsCisxNjczMjAzMSwKKzMwOTE2OTEwLAorLTE2Njg3MDA2LAorNDQzMDIxOSwKKy04MTQ1NTIzLAorNDM4NjQzMSwKKzgxNDU1MjMsCis3OTYwNTY2LAorMjQ2NzcxNSwKKy00NTEyODU3LAorMjQxNjk2NiwKKzQ1MTI4NTcsCisxMTg5MjUzNSwKKzE2MjgxMTMsCistMjk1ODcyNSwKKzE1NzQzODcsCisyOTU4NzI1LAorMTM1NzQ3MTYsCisxNjc1MjMxNCwKKy0zMDk1Mzk3MywKKzE2NzUyMDI1LAorMzA5NTM5NzMsCistMTY3MjcxMjMsCis2NjIyMTkzLAorLTEyMTI3NjE2LAorNjUwNDY0NCwKKzEyMTI3NjE2LAorMzY1MDM3OSwKKzQwMTY1NDEsCistNzI4NTEzNSwKKzM4Njg4MzEsCis3Mjg1MTM1LAorODg5MTg0MywKKzI3NjI2NzUsCistNDk1NDg4MywKKzI2MDA0NTEsCis0OTU0ODgzLAorMTE0MTQwODksCisxNjc2MzU3NSwKKy0zMDk3NDU2OCwKKzE2NzYzMDU1LAorMzA5NzQ1NjgsCistMTY3NDk0MTUsCis5MTUwNDMxLAorLTE2NjM5MTQyLAorODg1OTY0NiwKKzE2NjM5MTQyLAorLTEyMzI4NjEsCis2MTgyMTgxLAorLTExMDQ5OTc0LAorNTc3ODIyNSwKKzExMDQ5OTc0LAorNDgxNjgxMCwKKzQ1MTg2MjksCistNzkxNzUzMiwKKzQwNTEyNDcsCis3OTE3NTMyLAorODIwNzM0MSwKKzE2NzY5OTczLAorLTMwOTg2MDAyLAorMTY3NjkwMzQsCiszMDk4NjAwMiwKKy0xNjc2MTc5MSwKKzExNjc2MjY5LAorLTIwOTY0NjMwLAorMTEwMTU2ODMsCisyMDk2NDYzMCwKKy01OTE0NzM2LAorODg5MzQxOCwKKy0xNTQ4OTYzOCwKKzc4NzI0NDYsCisxNTQ4OTYzOCwKKzExMzUyLAorNzA0MTM4MywKKy0xMTg0NTkzOSwKKzU3ODA1NjgsCisxMTg0NTkzOSwKKzM5NTUyNjUsCisxNjc3Mzc4MywKKy0zMDk5MjM0NywKKzE2NzcyMDkyLAorMzA5OTIzNDcsCistMTY3Njg2NTksCisxMzk1MzI4MCwKKy0yNDQ5NjUzNCwKKzEyNTYxNTc3LAorMjQ0OTY1MzQsCistOTczNzY0MSwKKzExOTcwOTIxLAorLTE5OTMxMDI1LAorOTYwMjI2NSwKKzE5OTMxMDI1LAorLTQ3OTU5NzAsCisxMDQxMzE3MiwKKy0xNjM0MzQyMSwKKzcyNzY4MjAsCisxNjM0MzQyMSwKKy05MTI3NzUsCisxNjc3NjM2OCwKKy0zMDk5NTg2OCwKKzE2NzczMzE4LAorMzA5OTU4NjgsCistMTY3NzI0NzAsCisxNjAwNzc5MCwKKy0yNzAyMTM0MywKKzEzMjM5OTAxLAorMjcwMjEzNDMsCistMTI0NzA0NzUsCisxNTM2NTUyNywKKy0yMzcwMDAyNCwKKzEwMjg3MTk0LAorMjM3MDAwMjQsCistODg3NTUwNSwKKzE0Nzg1OTQ3LAorLTIwNzAyODU3LAorNzYyMjY2NCwKKzIwNzAyODU3LAorLTU2MzEzOTUsCisxNjc3ODY1MCwKKy0zMDk5NzgyMSwKKzE2NzczMTUwLAorMzA5OTc4MjEsCistMTY3NzQ1ODMsCisxODE1NzA1NiwKKy0yODY1OTY0OSwKKzEyODYzOTI1LAorMjg2NTk2NDksCistMTQyNDM3NjQsCisxOTQ0MzgwNiwKKy0yNjQ3Njk1MCwKKzkyMTQ2MzgsCisyNjQ3Njk1MCwKKy0xMTg4MTIyOCwKKzIwNzI4NjgxLAorLTI0Mjk3NDMzLAorNTU3MDY3MSwKKzI0Mjk3NDMzLAorLTk1MjIxMzYsCisxNjc4MTQ0NSwKKy0zMDk5ODkwNCwKKzE2NzcxNTI3LAorMzA5OTg5MDQsCistMTY3NzU3NTYsCisyMDk4ODA2MCwKKy0yOTY1NjkyMSwKKzExMTEyMzYxLAorMjk2NTY5MjEsCistMTUzMjMyMDQsCisyNTE4Nzc0MywKKy0yODMxNzE1MCwKKzU0NjI1MjAsCisyODMxNzE1MCwKKy0xMzg3MzA0NywKKzI5NjcyMTI0LAorLTI2ODg2NTU2LAorLTU3MDMyNiwKKzI2ODg2NTU2LAorLTEyMzI0NTgyLAorMTY3ODU3NTIsCistMzA5OTk1MDUsCisxNjc2Nzg3MCwKKzMwOTk5NTA1LAorLTE2Nzc2NDA2LAorMjU0NDQzMDAsCistMzAyNDA1NDUsCis3Mjg3ODMwLAorMzAyNDA1NDUsCistMTU5NTQ5MTQsCiszNDQzNDk4MCwKKy0yOTQ1MjQ3MiwKKy0yNTU1ODU0LAorMjk0NTI0NzIsCistMTUxMDE5MTAsCis0NDQ0MTI0MiwKKy0yODU3NTM3OSwKKy0xMzUxMTQ3NCwKKzI4NTc1Mzc5LAorLTE0MTUyNTUyLAorMTY3OTMxMTIsCistMzA5OTk4MzgsCisxNjc2MDg3MSwKKzMwOTk5ODM4LAorLTE2Nzc2NzY3LAorMzMwOTU1MDYsCistMzA1NzQyNTAsCistMjE3NywKKzMwNTc0MjUwLAorLTE2MzE2MTEzLAorNTA0MDgwMzQsCistMzAxMjIyOTEsCistMTc4MDM5MDIsCiszMDEyMjI5MSwKKy0xNTgyNjkxNywKKzcwMTUzNzY1LAorLTI5NjA2ODExLAorLTM4MTA3NTgzLAorMjk2MDY4MTEsCistMTUyNjg5NjYsCisxNjgwNjE1OCwKKy0zMTAwMDAyMywKKzE2NzQ4MDI1LAorMzEwMDAwMjMsCistMTY3NzY5NjcsCis0NjY3MDE1NSwKKy0zMDc2MjUyNiwKKy0xMzM3MzAzNywKKzMwNzYyNTI2LAorLTE2NTE5OTAyLAorNzg3ODk1NDQsCistMzA1MDcwOTIsCistNDU3Njg5MDUsCiszMDUwNzA5MiwKKy0xNjI0MzQyMywKKzExNTk0Mjc0NywKKy0zMDIxMTYyNywKKy04MzI0MTkxOCwKKzMwMjExNjI3LAorLTE1OTIzNjEzLAorMTU4NzI4MzUsCistMjI0NDc1NTksCisxNTg3MjgwNywKKzIyNDQ3NTU5LAorLTE0OTY4NDI2LAorMjc3NzU0LAorLTM5MjQzNCwKKzI3NzIzMSwKKzM5MjQzNCwKKzE2MjIyMjMxLAorMTMzMDYxLAorLTE4NzgwNCwKKzEzMjUzMywKKzE4NzgwNCwKKzE2NTExNjIyLAorODE3NjMsCistMTE1MjU2LAorODEyMzMsCisxMTUyNTYsCisxNjYxNDIyMCwKKzE2MjYzMzAzLAorLTIyOTk5NzQ2LAorMTYyNjMyNTAsCisyMjk5OTc0NiwKKy0xNTc0OTMzNywKKzQ5NDYwNSwKKy02OTgyOTAsCis0OTI5MjcsCis2OTgyOTAsCisxNTc4OTY4NSwKKzIzODc3NiwKKy0zMzY0NzUsCisyMzcwNzEsCiszMzY0NzUsCisxNjMwMTM2OSwKKzE0NzIyOCwKKy0yMDcwMDAsCisxNDU1MTQsCisyMDcwMDAsCisxNjQ4NDQ3MywKKzE2NDg4Mjc4LAorLTIzMzE3ODc3LAorMTY0ODgxODEsCisyMzMxNzg3NywKKy0xNjE5OTI0MiwKKzg3MjM3OCwKKy0xMjI5OTYxLAorODY3MDQ5LAorMTIyOTk2MSwKKzE1MDM3Nzg4LAorNDI2ODg5LAorLTU5OTgzOSwKKzQyMTQxMSwKKzU5OTgzOSwKKzE1OTI4OTE2LAorMjY0ODQwLAorLTM3MDYyOSwKKzI1OTMwOCwKKzM3MDYyOSwKKzE2MjUzMDY4LAorMTY2MTU3ODUsCistMjM0OTgxNDUsCisxNjYxNTYwOSwKKzIzNDk4MTQ1LAorLTE2NDU0MTc5LAorMTUxMzc1NywKKy0yMTI5MDE2LAorMTQ5NzEyNiwKKzIxMjkwMTYsCisxMzc2NjMzMywKKzc1ODI2MSwKKy0xMDYwMDAxLAorNzQwODA2LAorMTA2MDAwMSwKKzE1Mjc4MTQ5LAorNDc1NTUxLAorLTY1OTk3MSwKKzQ1Nzc4OSwKKzY1OTk3MSwKKzE1ODQzODc1LAorMTY2ODc0MDcsCistMjM1OTkzMzIsCisxNjY4NzA4OSwKKzIzNTk5MzMyLAorLTE2NTk3MjgwLAorMjU1NzExNiwKKy0zNTgwNjQ3LAorMjUwNjY4NCwKKzM1ODA2NDcsCisxMTcxMzQxNiwKKzEzMzIwMDcsCistMTg0NTAwOSwKKzEyNzcyMzAsCisxODQ1MDA5LAorMTQxNjc5NzksCis4NTEyNzIsCistMTE2Mzk0MiwKKzc5NDc5MSwKKzExNjM5NDIsCisxNTEzMTE1NCwKKzE2NzI3NDg2LAorLTIzNjU1ODMwLAorMTY3MjY5MTAsCisyMzY1NTgzMCwKKy0xNjY3NzE4MCwKKzQxNDQ3NDksCistNTc1ODE2MywKKzM5OTg1MjMsCis1NzU4MTYzLAorODYzMzk0NCwKKzIyOTc4MDMsCistMzEzMTA2OSwKKzIxMzAxOTgsCiszMTMxMDY5LAorMTIzNDkyMTYsCisxNTE2MDI1LAorLTIwMTkwNzAsCisxMzM5MzcxLAorMjAxOTA3MCwKKzEzOTIxODIwLAorMTY3NDk5NTcsCistMjM2ODcyODIsCisxNjc0ODkxOCwKKzIzNjg3MjgyLAorLTE2NzIxNjYwLAorNjM0MjgwNywKKy04Njg4Nzc0LAorNTk0NDk3NSwKKzg2ODg3NzQsCis0NDg5NDM0LAorMzg1NTcyMiwKKy01MTA0NDU0LAorMzM2MzA2NiwKKzUxMDQ0NTQsCis5NTU4NDI4LAorMjY3ODI4NiwKKy0zNDA3NTY0LAorMjE0MDczOCwKKzM0MDc1NjQsCisxMTk1ODE5MiwKKzE2NzYyNzM2LAorLTIzNzA0NzYyLAorMTY3NjA4NjEsCisyMzcwNDc2MiwKKy0xNjc0NjM4MCwKKzkwNTk5NDgsCistMTIxMDYwMTQsCis4MDYwNTQyLAorMTIxMDYwMTQsCistMzQzMjc0LAorNjIzMTk1OSwKKy03ODQ3NjY5LAorNDg2NjMyMiwKKzc4NDc2NjksCis1Njc4OTM2LAorNDY3ODU3MywKKy01NTA4NjAzLAorMzExMTc2OCwKKzU1MDg2MDMsCis4OTg2ODc1LAorMTY3NzAzNTMsCistMjM3MTQ0NjgsCisxNjc2Njk3MCwKKzIzNzE0NDY4LAorLTE2NzYwMTA3LAorMTIxMDA3NjgsCistMTU0ODM0MjcsCis5Nzk2MTA0LAorMTU0ODM0MjcsCistNTExOTY1NiwKKzk2NTk0MDEsCistMTExODAwNDcsCis2MTUxNTczLAorMTExODAwNDcsCis5NjYyNDIsCis4MDY2MDAzLAorLTgzNzEzNzYsCiszNzcyOTExLAorODM3MTM3NiwKKzQ5MzgzMDIsCisxNjc3NTUyMCwKKy0yMzcxOTg1NSwKKzE2NzY5NDIwLAorMjM3MTk4NTUsCistMTY3Njc3MjUsCisxNTQxMDY0NywKKy0xODMxNzc5NCwKKzEwNDk0NjI2LAorMTgzMTc3OTQsCistOTEyODA1NiwKKzE0NDc3NDM5LAorLTE0NjI0MjMzLAorNjIwNDM1MCwKKzE0NjI0MjMzLAorLTM5MDQ1NzMsCisxMzc1NDEyNywKKy0xMTc2MTQxOSwKKzI4NzkwMzIsCisxMTc2MTQxOSwKKzE0NDA1OCwKKzE2NzgwMDgzLAorLTIzNzIyODQ0LAorMTY3NjkwODQsCisyMzcyMjg0NCwKKy0xNjc3MTk1MSwKKzE5MzQ4OTQ3LAorLTIwMzg3NzM1LAorOTQ4MzY2NCwKKzIwMzg3NzM1LAorLTEyMDU1Mzk1LAorMjE0NjcwMzgsCistMTc2Mzc4NTUsCiszNDc2NjU2LAorMTc2Mzc4NTUsCistODE2NjQ3OCwKKzIzMzY5MzAxLAorLTE1MTY4MTgxLAorLTE5MTgyNTMsCisxNTE2ODE4MSwKKy00NjczODMyLAorMTY3ODU2NzMsCistMjM3MjQ1MDEsCisxNjc2NTgzOSwKKzIzNzI0NTAxLAorLTE2Nzc0Mjk2LAorMjQ4Njg1NDcsCistMjE3NTA5NDUsCis1ODkxOTM0LAorMjE3NTA5NDUsCistMTM5ODMyNjUsCiszMjM5MjU0MywKKy0xOTkxMzg0NywKKy00MjMwMTEwLAorMTk5MTM4NDcsCistMTEzODUyMTcsCiszOTkzODY0MSwKKy0xODA3MTM1MywKKy0xNDM4MTg4OCwKKzE4MDcxMzUzLAorLTg3Nzk1MzcsCisxNjc5NDI4OCwKKy0yMzcyNTQyMSwKKzE2NzU4NTI1LAorMjM3MjU0MjEsCistMTY3NzU1OTYsCiszMzczOTAyNSwKKy0yMjU4ODYzNiwKKy0xNzkzODcwLAorMjI1ODg2MzYsCistMTUxNjc5NDAsCis1MDcyNzM3MSwKKy0yMTQ0ODkyNiwKKy0yMDM5NDAxMCwKKzIxNDQ4OTI2LAorLTEzNTU2MTQ2LAorNjkwODIyMTgsCistMjAyMTc1NDAsCistNDA0OTAyOTgsCisyMDIxNzU0MCwKKy0xMTgxNDcwMywKKzE2ODA5MDA4LAorLTIzNzI1OTMxLAorMTY3NDQ1MjYsCisyMzcyNTkzMSwKKy0xNjc3NjMxOCwKKzQ5MDUzNTk0LAorLTIzMDgxNjY2LAorLTE2NDExMTg5LAorMjMwODE2NjYsCistMTU4NjUxODksCis4MjgyNDI5NiwKKy0yMjQwNjkwOCwKKy01MTEzNjE0MywKKzIyNDA2OTA4LAorLTE0OTEwOTM3LAorMTIxMDQ5OTE1LAorLTIxNjQzMTM4LAorLTkwNDQxODk1LAorMjE2NDMxMzgsCistMTM4MzA4MDMsCisxNjgzNTA5OSwKKy0yMzcyNjIxNCwKKzE2NzE4ODM1LAorMjM3MjYyMTQsCistMTY3NzY3MTgsCis3NjI2MTQ2OCwKKy0yMzM2NDUwNSwKKy00MzIxOTA2OCwKKzIzMzY0NTA1LAorLTE2MjY1MTg0LAorMTQwMDgwNjAzLAorLTIyOTc2MDU5LAorLTEwNzU4NzU0OSwKKzIyOTc2MDU5LAorLTE1NzE1ODM4LAorMjE0MzQ4NTU3LAorLTIyNTI0MDE0LAorLTE4MjQ5NDc5MSwKKzIyNTI0MDE0LAorLTE1MDc2NTUwLAorMTUwNjA5NzEsCiswLAorMTUwNjA5MTYsCiswLAorLTEzMzQ0NjcxLAorMTM3NzE1LAorMCwKKzEzNzE4OCwKKzAsCisxNjUwMjMxMywKKzYyNDk0LAorMCwKKzYxOTY0LAorMCwKKzE2NjUyNzU3LAorMzU0OTksCiswLAorMzQ5NjksCiswLAorMTY3MDY3NDgsCisxNTc3OTkzOSwKKzAsCisxNTc3OTgzNywKKzAsCistMTQ3ODI1NjAsCisyNDcwNTksCiswLAorMjQ1MzU2LAorMCwKKzE2Mjg0ODAxLAorMTEyNzI2LAorMCwKKzExMTAwOSwKKzAsCisxNjU1MzQ4MSwKKzY0MjgyLAorMCwKKzYyNTYwLAorMCwKKzE2NjUwMzc1LAorMTYyMDkxMjQsCiswLAorMTYyMDg5MzQsCiswLAorLTE1NjQwODQyLAorNDQxNDgzLAorMCwKKzQzNjAxMCwKKzAsCisxNTg5OTcyMywKKzIwMzQwMSwKKzAsCisxOTc4NDgsCiswLAorMTYzNzU5NjcsCisxMTY3OTQsCiswLAorMTExMjEyLAorMCwKKzE2NTQ5MjExLAorMTY0NTc0MzMsCiswLAorMTY0NTcwODUsCiswLAorLTE2MTM3MzAyLAorNzgzNTEwLAorMCwKKzc2NjA4MywKKzAsCisxNTIyNzYyMywKKzM2NzIyOSwKKzAsCiszNDkzNDksCiswLAorMTYwNjA2MzgsCisyMTM0NTcsCiswLAorMTk1NDA5LAorMCwKKzE2MzY4MzQ5LAorMTY1OTg1NTYsCiswLAorMTY1OTc5MjMsCiswLAorLTE2NDE5MjYzLAorMTM3NDMzMiwKKzAsCisxMzE5NzA1LAorMCwKKzE0MDgzMTc5LAorNjYzNjgzLAorMCwKKzYwNjUzNiwKKzAsCisxNTUwNjk5NiwKKzM5NDA3NywKKzAsCiszMzU5NzQsCiswLAorMTYwNDcxNjYsCisxNjY3ODA1MSwKKzAsCisxNjY3NjkwMywKKzAsCistMTY1Nzc3MzgsCisyMzY1MDEwLAorMCwKKzIxOTgxODMsCiswLAorMTIyMTQwMjMsCisxMjAxNDc5LAorMCwKKzEwMjExODMsCiswLAorMTQ1NTQ1NTQsCis3Mzk2NjYsCiswLAorNTU0MDI1LAorMCwKKzE1NDgzNTI1LAorMTY3MjI3ODksCiswLAorMTY3MjA3MTQsCiswLAorLTE2NjY2Mjg3LAorMzk1MzIxNCwKKzAsCiszNDY0Mjc1LAorMCwKKzkzNTk3MjgsCisyMTgwODA3LAorMCwKKzE2MjQyOTEsCiswLAorMTI5NzIxMTgsCisxNDIzOTM2LAorMCwKKzgzODU2NCwKKzAsCisxNDUxNDcxNiwKKzE2NzQ4MjgyLAorMCwKKzE2NzQ0NTM1LAorMCwKKy0xNjcxNTYwMSwKKzYzNTM3ODYsCiswLAorNTAwMzkyNiwKKzAsCis1NDE5NTA0LAorMzk3MzEwOCwKKzAsCisyMzE0OTQ0LAorMCwKKzEwNDg5MTY1LAorMjgzNzUxMSwKKzAsCisxMDMyMjg0LAorMCwKKzEyOTA3NDIxLAorMTY3NjM0OTYsCiswLAorMTY3NTY3MzUsCiswLAorLTE2NzQzMDE1LAorOTc3NTk3OCwKKzAsCis2MzI1NjAyLAorMCwKKzY3NTYzNiwKKzcyNjk5NTksCiswLAorMjU4NDU1OCwKKzAsCis2OTIyNjk4LAorNTg3ODUyMCwKKzAsCis1MDczODQsCiswLAorMTAzOTEzMTMsCisxNjc3MzgyNiwKKzAsCisxNjc2MTYyOSwKKzAsCistMTY3NTgyMzksCisxNDUyNjQ2MiwKKzAsCis2NDI5NzIzLAorMCwKKy00MTc4OTY4LAorMTMzNTEwODYsCiswLAorMTAyNjExNywKKzAsCisyNDAwMDEyLAorMTI1NjY4NDYsCiswLAorLTI1NzkzMDYsCiswLAorNjc4OTY3NiwKKzE2NzgyOTUwLAorMCwKKzE2NzYwOTU0LAorMCwKKy0xNjc2NjY4OCwKKzIxMzQ2OTk2LAorMCwKKzM4MTcxMDIsCiswLAorLTgzODY4ODEsCisyNDU0ODI1NywKKzAsCistNTI2MTgyOCwKKzAsCistMjUwOTIxMiwKKzI3MTM2NzQ2LAorMCwKKy0xMjYwMjkwOCwKKzAsCisyMjQzMzc4LAorMTY3OTQxMjksCiswLAorMTY3NTQ0NjMsCiswLAorLTE2NzcxMzc2LAorMzE5NDI3NTYsCiswLAorLTM2MjUwMTEsCiswLAorLTExNTQwNTI5LAorNDUwNDg2NzMsCiswLAorLTIxMjU2NDIzLAorMCwKKy03MDE1MDM0LAorNTc2NDYxNDAsCiswLAorLTM4MjAzODE3LAorMCwKKy0yNjY1MTA3LAorMTY4MTEzNTgsCiswLAorMTY3Mzk4MzUsCiswLAorLTE2NzczOTc3LAorNDk2NzY0MTUsCiswLAorLTE5MjQzMzQyLAorMCwKKy0xMzY1NTg1NywKKzgyMzM5OTg0LAorMCwKKy01NTAwNTkxNSwKKzAsCistMTA1NTY4NTMsCisxMTgyODc0OTYsCiswLAorLTk0MzYzOTk5LAorMCwKKy03MTQ2MjgxLAorMTY4NDA3OTksCiswLAorMTY3MTE4MzcsCiswLAorLTE2Nzc1NDE5LAorODA2OTEzODMsCiswLAorLTQ4OTQyOTYxLAorMCwKKy0xNDk3MTIwNiwKKzE0OTg1ODUwNSwKKzAsCistMTIwMDY0NTI0LAorMCwKKy0xMzAxNjc2NSwKKzIzMzUyMDY1MiwKKzAsCistMjA2MDkwNjk1LAorMCwKKy0xMDY1Mjc0MSwKKzE2ODkyOTgxLAorMCwKKzE2NjYwNDU1LAorMCwKKy0xNjc3NjIyMCwKKzEzNjAwMDg2OCwKKzAsCistMTAzNDcyNjk2LAorMCwKKy0xNTc1MDk1NiwKKzI3MTgwMTQ2OSwKKzAsCistMjQwNDQyMjUwLAorMCwKKy0xNDU4MjAwMywKKzQ0NjMwOTYwMSwKKzAsCistNDE2NDUyNTI0LAorMCwKKy0xMzA3OTg2MiwKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9TaGVsdmluZ0ZpbHRlci5jcHAgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvU2hlbHZpbmdGaWx0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NjUwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvU2hlbHZpbmdGaWx0ZXIuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKiAvYW5kcm9pZC9zcmMvZnJhbWV3b3Jrcy9iYXNlL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvU2hlbHZpbmdGaWx0ZXIuY3BwCisqKgorKiogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyNpbmNsdWRlICJBdWRpb1NoZWx2aW5nRmlsdGVyLmgiCisjaW5jbHVkZSAiQXVkaW9Db21tb24uaCIKKyNpbmNsdWRlICJFZmZlY3RzTWF0aC5oIgorCisjaW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjZGVmaW5lIExJS0VMWSggZXhwICkgICAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIHRydWUgICkpCisjZGVmaW5lIFVOTElLRUxZKCBleHAgKSAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIGZhbHNlICkpCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKy8vIEZvcm1hdCBvZiB0aGUgY29lZmZpY2llbnQgdGFibGVzOgorLy8ga0NvZWZUYWJsZVtmcmVxXVtnYWluXVtjb2VmXQorLy8gZnJlcSAgLSBjdXRvZmYgZnJlcXVlbmN5LCBpbiBvY3RhdmVzIGJlbG93IE55cXVpc3QsZnJvbSAtMTAgdG8gLTYgaW4gbG93CisvLyAgICAgICAgIHNoZWxmLCAtMiB0byAwIGluIGhpZ2ggc2hlbGYuCisvLyBnYWluICAtIGdhaW4sIGluIG1pbGxpYmVsLCBzdGFydGluZyBhdCAtOTYwMCwganVtcHMgb2YgMTAyNCwgdG8gNDczNiBtaWxsaWJlbC4KKy8vIGNvZWYgLSAwOiBiMAorLy8gICAgICAgIDE6IGIxCisvLyAgICAgICAgMjogYjIKKy8vICAgICAgICAzOiAtYTEKKy8vICAgICAgICA0OiAtYTIKK3N0YXRpYyBjb25zdCBzaXplX3Qga0hpSW5EaW1zWzJdID0gezMsIDE1fTsKK3N0YXRpYyBjb25zdCBhdWRpb19jb2VmX3Qga0hpQ29lZlRhYmxlWzMqMTUqNV0gPSB7CisjaW5jbHVkZSAiQXVkaW9IaWdoU2hlbGZGaWx0ZXJDb2VmLmlubCIKK307CitzdGF0aWMgY29uc3Qgc2l6ZV90IGtMb0luRGltc1syXSA9IHs1LCAxNX07CitzdGF0aWMgY29uc3QgYXVkaW9fY29lZl90IGtMb0NvZWZUYWJsZVs1KjE1KjVdID0geworI2luY2x1ZGUgIkF1ZGlvTG93U2hlbGZGaWx0ZXJDb2VmLmlubCIKK307CisKK0F1ZGlvQ29lZkludGVycG9sYXRvciBBdWRpb1NoZWx2aW5nRmlsdGVyOjptSGlDb2VmSW50ZXJwKDIsIGtIaUluRGltcywgNSwgKGNvbnN0IGF1ZGlvX2NvZWZfdCopIGtIaUNvZWZUYWJsZSk7CitBdWRpb0NvZWZJbnRlcnBvbGF0b3IgQXVkaW9TaGVsdmluZ0ZpbHRlcjo6bUxvQ29lZkludGVycCgyLCBrTG9JbkRpbXMsIDUsIChjb25zdCBhdWRpb19jb2VmX3QqKSBrTG9Db2VmVGFibGUpOworCitBdWRpb1NoZWx2aW5nRmlsdGVyOjpBdWRpb1NoZWx2aW5nRmlsdGVyKFNoZWxmVHlwZSB0eXBlLCBpbnQgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlUmF0ZSkKKyAgICAgICAgOiBtVHlwZSh0eXBlKSwKKyAgICAgICAgICBtQmlxdWFkKG5DaGFubmVscywgc2FtcGxlUmF0ZSkgIHsKKyAgICBjb25maWd1cmUobkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKK30KKwordm9pZCBBdWRpb1NoZWx2aW5nRmlsdGVyOjpjb25maWd1cmUoaW50IG5DaGFubmVscywgaW50IHNhbXBsZVJhdGUpIHsKKyAgICBtTmlxdWlzdEZyZXEgPSBzYW1wbGVSYXRlICogNTAwOworICAgIG1GcmVxdWVuY3lGYWN0b3IgPSAoKDF1bGwpIDw8IDQyKSAvIG1OaXF1aXN0RnJlcTsKKyAgICBtQmlxdWFkLmNvbmZpZ3VyZShuQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIHNldEZyZXF1ZW5jeShtTm9taW5hbEZyZXF1ZW5jeSk7CisgICAgY29tbWl0KHRydWUpOworfQorCit2b2lkIEF1ZGlvU2hlbHZpbmdGaWx0ZXI6OnJlc2V0KCkgeworICAgIHNldEdhaW4oMCk7CisgICAgc2V0RnJlcXVlbmN5KG1UeXBlID09IGtMb3dTaGVsZiA/IDAgOiBtTmlxdWlzdEZyZXEpOworICAgIGNvbW1pdCh0cnVlKTsKK30KKwordm9pZCBBdWRpb1NoZWx2aW5nRmlsdGVyOjpzZXRGcmVxdWVuY3kodWludDMyX3QgbWlsbGloZXJ0eikgeworICAgIG1Ob21pbmFsRnJlcXVlbmN5ID0gbWlsbGloZXJ0ejsKKyAgICBpZiAoVU5MSUtFTFkobWlsbGloZXJ0eiA+IG1OaXF1aXN0RnJlcSAvIDIpKSB7CisgICAgICAgIG1pbGxpaGVydHogPSBtTmlxdWlzdEZyZXEgLyAyOworICAgIH0KKyAgICB1aW50MzJfdCBub3JtRnJlcSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50NjRfdD4obWlsbGloZXJ0eikgKiBtRnJlcXVlbmN5RmFjdG9yKSA+PiAxMCk7CisgICAgdWludDMyX3QgbG9nMm1pbkZyZXEgPSAobVR5cGUgPT0ga0xvd1NoZWxmID8gKDMyLTEwKSA6ICgzMi0yKSk7CisgICAgaWYgKExJS0VMWShub3JtRnJlcSA+ICgxVSA8PCBsb2cybWluRnJlcSkpKSB7CisgICAgICAgIG1GcmVxdWVuY3kgPSAoRWZmZWN0c19sb2cyKG5vcm1GcmVxKSAtIChsb2cybWluRnJlcSA8PCAxNSkpIDw8IChGUkVRX1BSRUNJU0lPTl9CSVRTIC0gMTUpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1GcmVxdWVuY3kgPSAwOworICAgIH0KK30KKwordm9pZCBBdWRpb1NoZWx2aW5nRmlsdGVyOjpzZXRHYWluKGludDMyX3QgbWlsbGliZWwpIHsKKyAgICBtR2FpbiA9IG1pbGxpYmVsICsgOTYwMDsKK30KKwordm9pZCBBdWRpb1NoZWx2aW5nRmlsdGVyOjpjb21taXQoYm9vbCBpbW1lZGlhdGUpIHsKKyAgICBhdWRpb19jb2VmX3QgY29lZnNbNV07CisgICAgaW50IGludENvb3JkWzJdID0geworICAgICAgICBtRnJlcXVlbmN5ID4+IEZSRVFfUFJFQ0lTSU9OX0JJVFMsCisgICAgICAgIG1HYWluID4+IEdBSU5fUFJFQ0lTSU9OX0JJVFMKKyAgICB9OworICAgIHVpbnQzMl90IGZyYWNDb29yZFsyXSA9IHsKKyAgICAgICAgbUZyZXF1ZW5jeSA8PCAoMzIgLSBGUkVRX1BSRUNJU0lPTl9CSVRTKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1HYWluKSA8PCAoMzIgLSBHQUlOX1BSRUNJU0lPTl9CSVRTKQorICAgIH07CisgICAgaWYgKG1UeXBlID09IGtIaWdoU2hlbGYpIHsKKyAgICAgICAgbUhpQ29lZkludGVycC5nZXRDb2VmKGludENvb3JkLCBmcmFjQ29vcmQsIGNvZWZzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtTG9Db2VmSW50ZXJwLmdldENvZWYoaW50Q29vcmQsIGZyYWNDb29yZCwgY29lZnMpOworICAgIH0KKyAgICBtQmlxdWFkLnNldENvZWZzKGNvZWZzLCBpbW1lZGlhdGUpOworfQorCit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvU2hlbHZpbmdGaWx0ZXIuaCBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9TaGVsdmluZ0ZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MmQ3OTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvU2hlbHZpbmdGaWx0ZXIuaApAQCAtMCwwICsxLDE0NiBAQAorLyogL2FuZHJvaWQvc3JjL2ZyYW1ld29ya3MvYmFzZS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb1NoZWx2aW5nRmlsdGVyLmgKKyoqCisqKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworI2lmbmRlZiBBVURJT19TSEVMVklOR19GSUxURVJfSAorI2RlZmluZSBBVURJT19TSEVMVklOR19GSUxURVJfSAorCisjaW5jbHVkZSAiQXVkaW9CaXF1YWRGaWx0ZXIuaCIKKyNpbmNsdWRlICJBdWRpb0NvZWZJbnRlcnBvbGF0b3IuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBBIHNoZWx2aW5nIGF1ZGlvIGZpbHRlciwgd2l0aCB1bml0eSBza2lydCBnYWluLCBhbmQgY29udHJvbGxhYmxlIGN1dG9mZgorLy8gZnJlcXVlbmN5IGFuZCBnYWluLgorLy8gVGhpcyBmaWx0ZXIgaXMgYWJsZSB0byBzdXBwcmVzcyBpbnRyb2R1Y2UgZGlzY29udGludWl0aWVzIGFuZCBvdGhlciBhcnRpZmFjdHMKKy8vIGluIHRoZSBvdXRwdXQsIGV2ZW4gd2hlbiBjaGFuZ2luZyBwYXJhbWV0ZXJzIGFicnVwdGx5LgorLy8gUGFyYW1ldGVycyBjYW4gYmUgc2V0IHRvIGFueSB2YWx1ZSAtIHRoaXMgY2xhc3Mgd2lsbCBtYWtlIHN1cmUgdG8gY2xpcCB0aGVtCisvLyB3aGVuIHRoZXkgYXJlIG91dCBvZiBzdXBwb3J0ZWQgcmFuZ2UuCisvLworLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6CisvLyBUaGlzIGNsYXNzIHVzZXMgYW4gdW5kZXJseWluZyBiaXF1YWQgZmlsdGVyIHdob3NlIHBhcmFtZXRlcnMgYXJlIGRldGVybWluZWQKKy8vIHVzaW5nIGEgbGluZWFyIGludGVycG9sYXRpb24gZnJvbSBhIGNvZWZmaWNpZW50IHRhYmxlLCB1c2luZyBhCisvLyBBdWRpb0NvZWZJbnRlcnBvbGF0b3IuCisvLyBBbGwgaXMgbGVmdCBmb3IgdGhpcyBjbGFzcyB0byBkbyBpcyBtYXBwaW5nIGJldHdlZW4gaGlnaC1sZXZlbCBwYXJhbWV0ZXJzIHRvCisvLyBmcmFjdGlvbmFsIGluZGljZXMgaW50byB0aGUgY29lZmZpY2llbnQgdGFibGUuCitjbGFzcyBBdWRpb1NoZWx2aW5nRmlsdGVyIHsKK3B1YmxpYzoKKyAgICAvLyBTaGVsZiB0eXBlCisgICAgZW51bSBTaGVsZlR5cGUgeworICAgICAgICBrTG93U2hlbGYsCisgICAgICAgIGtIaWdoU2hlbGYKKyAgICB9OworCisgICAgLy8gQ29uc3RydWN0b3IuIFJlc2V0cyB0aGUgZmlsdGVyIChzZWUgcmVzZXQoKSkuCisgICAgLy8gdHlwZSAgICAgICBUeXBlIG9mIHRoZSBmaWx0ZXIgKGhpZ2ggc2hlbGYgb3IgbG93IHNoZWxmKS4KKyAgICAvLyBuQ2hhbm5lbHMgIE51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMgKGludGVybGFjZWQpLgorICAgIC8vIHNhbXBsZVJhdGUgVGhlIGlucHV0L291dHB1dCBzYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgQXVkaW9TaGVsdmluZ0ZpbHRlcihTaGVsZlR5cGUgdHlwZSwgaW50IG5DaGFubmVscywgaW50IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmVjb25maWd1cmF0aW9uIG9mIHRoZSBmaWx0ZXIuIENoYW5nZXMgaW5wdXQvb3V0cHV0IGZvcm1hdCwgYnV0IGRvZXMgbm90CisgICAgLy8gYWx0ZXIgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWVzLiBDbGVhcnMgZGVsYXkgbGluZXMuCisgICAgLy8gbkNoYW5uZWxzICBOdW1iZXIgb2YgaW5wdXQvb3V0cHV0IGNoYW5uZWxzIChpbnRlcmxhY2VkKS4KKyAgICAvLyBzYW1wbGVSYXRlIFRoZSBpbnB1dC9vdXRwdXQgc2FtcGxlIHJhdGUsIGluIEh6LgorICAgIHZvaWQgY29uZmlndXJlKGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlKTsKKworICAgIC8vIFJlc2V0cyB0aGUgZmlsdGVyIHBhcmFtZXRlcnMgdG8gdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICAgLy8gZnJlcXVlbmN5OiAwCisgICAgLy8gZ2FpbjogMAorICAgIC8vIEl0IGFsc28gZGlzYWJsZXMgdGhlIGZpbHRlci4gRG9lcyBub3QgY2xlYXIgdGhlIGRlbGF5IGxpbmVzLgorICAgIHZvaWQgcmVzZXQoKTsKKworICAgIC8vIENsZWFycyBkZWxheSBsaW5lcy4gRG9lcyBub3QgYWx0ZXIgcGFyYW1ldGVyIHZhbHVlcy4KKyAgICB2b2lkIGNsZWFyKCkgeyBtQmlxdWFkLmNsZWFyKCk7IH0KKworICAgIC8vIFNldHMgZ2FpbiB2YWx1ZS4gQWN0dWFsIGNoYW5nZSB3aWxsIG9ubHkgdGFrZSBwbGFjZSB1cG9uIGNvbW1pdCgpLgorICAgIC8vIFRoaXMgdmFsdWUgd2lsbCBiZSByZW1lbWJlcmVkIGV2ZW4gaWYgdGhlIGZpbHRlciBpcyBpbiBkaXNhYmxlZCgpIHN0YXRlLgorICAgIC8vIG1pbGxpYmVsIEdhaW4gdmFsdWUgaW4gbWlsbGliZWwgKDEvMTAwIG9mIGRlY2liZWwpLgorICAgIHZvaWQgc2V0R2FpbihpbnQzMl90IG1pbGxpYmVsKTsKKworICAgIC8vIEdldHMgdGhlIGdhaW4sIGluIG1pbGxpYmVsLCBhcyBzZXQuCisgICAgaW50MzJfdCBnZXRHYWluKCkgY29uc3QgeyByZXR1cm4gbUdhaW4gLSA5NjAwOyB9CisKKyAgICAvLyBTZXRzIGN1dG9mZiBmcmVxdWVuY3kgdmFsdWUuIEFjdHVhbCBjaGFuZ2Ugd2lsbCBvbmx5IHRha2UgcGxhY2UgdXBvbgorICAgIC8vIGNvbW1pdCgpLgorICAgIC8vIFRoaXMgdmFsdWUgd2lsbCBiZSByZW1lbWJlcmVkIGV2ZW4gaWYgdGhlIGZpbHRlciBpcyBpbiBkaXNhYmxlZCgpIHN0YXRlLgorICAgIC8vIG1pbGxpaGVydHogRnJlcXVlbmN5IHZhbHVlIGluIG1Iei4KKyAgICB2b2lkIHNldEZyZXF1ZW5jeSh1aW50MzJfdCBtaWxsaWhlcnR6KTsKKworICAgIC8vIEdldHMgdGhlIGZyZXF1ZW5jeSwgaW4gbUh6LCBhcyBzZXQuCisgICAgdWludDMyX3QgZ2V0RnJlcXVlbmN5KCkgY29uc3QgeyByZXR1cm4gbU5vbWluYWxGcmVxdWVuY3k7IH0KKworICAgIC8vIEFwcGxpZXMgYWxsIHBhcmFtZXRlciBjaGFuZ2VzIGRvbmUgdG8gdGhpcyBwb2ludCBpbiB0aW1lLgorICAgIC8vIElmIHRoZSBmaWx0ZXIgaXMgZGlzYWJsZWQsIHRoZSBuZXcgcGFyYW1ldGVycyB3aWxsIHRha2UgcGxhY2Ugd2hlbiBpdCBpcworICAgIC8vIGVuYWJsZWQgYWdhaW4uIERvZXMgbm90IGludHJvZHVjZSBhcnRpZmFjdHMsIHVubGVzcyBpbW1lZGlhdGUgaXMgc2V0LgorICAgIC8vIGltbWVkaWF0ZSAgICBXaGV0aGVyIHRvIGFwcGx5IGNoYW5nZSBhYnJ1cHRseSAoaWdub3JlZCBpZiBmaWx0ZXIgaXMKKyAgICAvLyBkaXNhYmxlZCkuCisgICB2b2lkIGNvbW1pdChib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKKworICAgIC8vIFByb2Nlc3MgYSBidWZmZXIgb2YgaW5wdXQgZGF0YS4gVGhlIGlucHV0IGFuZCBvdXRwdXQgc2hvdWxkIGNvbnRhaW4KKyAgICAvLyBmcmFtZUNvdW50ICogbkNoYW5uZWxzIGludGVybGFjZWQgc2FtcGxlcy4gUHJvY2Vzc2luZyBjYW4gYmUgZG9uZQorICAgIC8vIGluLXBsYWNlLCBieSBwYXNzaW5nIHRoZSBzYW1lIGJ1ZmZlciBhcyBib3RoIGFyZ3VtZW50cy4KKyAgICAvLyBpbiAgIElucHV0IGJ1ZmZlci4KKyAgICAvLyBvdXQgIE91dHB1dCBidWZmZXIuCisgICAvLyBmcmFtZUNvdW50ICAgTnVtYmVyIG9mIGZyYW1lcyB0byBwcm9kdWNlLgorICAgdm9pZCBwcm9jZXNzKGNvbnN0IGF1ZGlvX3NhbXBsZV90IGluW10sIGF1ZGlvX3NhbXBsZV90IG91dFtdLAorICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeyBtQmlxdWFkLnByb2Nlc3MoaW4sIG91dCwgZnJhbWVDb3VudCk7IH0KKworICAgIC8vIEVuYWJsZXMgdGhlIGZpbHRlciwgc28gaXQgd291bGQgc3RhcnQgcHJvY2Vzc2luZyBpbnB1dC4gRG9lcyBub3QKKyAgICAvLyBpbnRyb2R1Y2UgYXJ0aWZhY3RzLCB1bmxlc3MgaW1tZWRpYXRlIGlzIHNldC4KKyAgICAvLyBpbW1lZGlhdGUgICAgV2hldGhlciB0byBhcHBseSBjaGFuZ2UgYWJydXB0bHkuCisgICAgdm9pZCBlbmFibGUoYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSkgeyBtQmlxdWFkLmVuYWJsZShpbW1lZGlhdGUpOyB9CisKKyAgICAvLyBEaXNhYmxlZCAoYnlwYXNzZXMpIHRoZSBmaWx0ZXIuIERvZXMgbm90IGludHJvZHVjZSBhcnRpZmFjdHMsIHVubGVzcworICAgIC8vIGltbWVkaWF0ZSBpcyBzZXQuCisgICAgLy8gaW1tZWRpYXRlICAgIFdoZXRoZXIgdG8gYXBwbHkgY2hhbmdlIGFicnVwdGx5LgorICAgIHZvaWQgZGlzYWJsZShib29sIGltbWVkaWF0ZSA9IGZhbHNlKSB7IG1CaXF1YWQuZGlzYWJsZShpbW1lZGlhdGUpOyB9CisKK3ByaXZhdGU6CisgICAgLy8gUHJlY2lzaW9uIGZvciB0aGUgbUZyZXF1ZW5jeSBtZW1iZXIuCisgICAgc3RhdGljIGNvbnN0IGludCBGUkVRX1BSRUNJU0lPTl9CSVRTID0gMjY7CisgICAgLy8gUHJlY2lzaW9uIGZvciB0aGUgbUdhaW4gbWVtYmVyLgorICAgIHN0YXRpYyBjb25zdCBpbnQgR0FJTl9QUkVDSVNJT05fQklUUyA9IDEwOworCisgICAgLy8gU2hlbGYgdHlwZS4KKyAgICBTaGVsZlR5cGUgbVR5cGU7CisgICAgLy8gTnlxdWlzdCwgaW4gbUh6LgorICAgIHVpbnQzMl90IG1OaXF1aXN0RnJlcTsKKyAgICAvLyBGcmFjdGlvbmFsIGluZGV4IGludG8gdGhlIGdhaW4gZGltZW5zaW9uIG9mIHRoZSBjb2VmIHRhYmxlIGluCisgICAgLy8gR0FJTl9QUkVDSVNJT05fQklUUyBwcmVjaXNpb24uCisgICAgaW50MzJfdCBtR2FpbjsKKyAgICAvLyBGcmFjdGlvbmFsIGluZGV4IGludG8gdGhlIGZyZXF1ZW5jeSBkaW1lbnNpb24gb2YgdGhlIGNvZWYgdGFibGUgaW4KKyAgICAvLyBGUkVRX1BSRUNJU0lPTl9CSVRTIHByZWNpc2lvbi4KKyAgICB1aW50MzJfdCBtRnJlcXVlbmN5OworICAgIC8vIE5vbWluYWwgdmFsdWUgb2YgZnJlcXVlbmN5LCBhcyBzZXQuCisgICAgdWludDMyX3QgbU5vbWluYWxGcmVxdWVuY3k7CisgICAvLyAxL055cXVpc3RbbUh6XSwgaW4gNDItYml0IHByZWNpc2lvbiAodmVyeSBzbWFsbCkuCisgICAgLy8gVXNlZCBmb3Igc2NhbGluZyB0aGUgZnJlcXVlbmN5LgorICAgIHVpbnQzMl90IG1GcmVxdWVuY3lGYWN0b3I7CisKKyAgICAvLyBBIGJpcXVhZCBmaWx0ZXIsIHVzZWQgZm9yIHRoZSBhY3R1YWwgcHJvY2Vzc2luZy4KKyAgICBBdWRpb0JpcXVhZEZpbHRlciBtQmlxdWFkOworICAgIC8vIEEgY29lZmZpY2llbnQgaW50ZXJwb2xhdG9yLCB1c2VkIGZvciBtYXBwaW5nIHRoZSBoaWdoIGxldmVsIHBhcmFtZXRlcnMgdG8KKyAgICAvLyB0aGUgbG93LWxldmVsIGJpcXVhZCBjb2VmZmljaWVudHMuIFRoaXMgb25lIGlzIHVzZWQgZm9yIHRoZSBoaWdoIHNoZWxmLgorICAgIHN0YXRpYyBBdWRpb0NvZWZJbnRlcnBvbGF0b3IgbUhpQ29lZkludGVycDsKKyAgICAvLyBBIGNvZWZmaWNpZW50IGludGVycG9sYXRvciwgdXNlZCBmb3IgbWFwcGluZyB0aGUgaGlnaCBsZXZlbCBwYXJhbWV0ZXJzIHRvCisgICAgLy8gdGhlIGxvdy1sZXZlbCBiaXF1YWQgY29lZmZpY2llbnRzLiBUaGlzIG9uZSBpcyB1c2VkIGZvciB0aGUgbG93IHNoZWxmLgorICAgIHN0YXRpYyBBdWRpb0NvZWZJbnRlcnBvbGF0b3IgbUxvQ29lZkludGVycDsKK307CisKK30KKworCisjZW5kaWYgLy8gQVVESU9fU0hFTFZJTkdfRklMVEVSX0gKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvRWZmZWN0RXF1YWxpemVyLmNwcCBiL21lZGlhL2xpYmVmZmVjdHMvRWZmZWN0RXF1YWxpemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTljNmI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RFcXVhbGl6ZXIuY3BwCkBAIC0wLDAgKzEsNjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJFcXVhbGl6ZXIiCisjZGVmaW5lIEFSUkFZX1NJWkUoYXJyYXkpIChzaXplb2YgYXJyYXkgLyBzaXplb2YgYXJyYXlbMF0pCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPG5ldz4KKyNpbmNsdWRlICJBdWRpb0VxdWFsaXplci5oIgorI2luY2x1ZGUgIkF1ZGlvQmlxdWFkRmlsdGVyLmgiCisjaW5jbHVkZSAiQXVkaW9Gb3JtYXRBZGFwdGVyLmgiCisjaW5jbHVkZSA8bWVkaWEvRWZmZWN0RXF1YWxpemVyQXBpLmg+CisKKy8vIGVmZmVjdF9pbnRlcmZhY2VfdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gZm9yIGVxdWFsaXplciBlZmZlY3QKK2V4dGVybiAiQyIgY29uc3Qgc3RydWN0IGVmZmVjdF9pbnRlcmZhY2VfcyBnRXF1YWxpemVySW50ZXJmYWNlOworCituYW1lc3BhY2UgYW5kcm9pZCB7CituYW1lc3BhY2UgeworCisvLyBHb29nbGUgR3JhcGhpYyBFcXVhbGl6ZXIgVVVJRDogZTI1YWE4NDAtNTQzYi0xMWRmLTk4YTUtMDAwMmE1ZDVjNTFiCitjb25zdCBlZmZlY3RfZGVzY3JpcHRvcl90IGdFcXVhbGl6ZXJEZXNjcmlwdG9yID0geworICAgICAgICB7MHgwYmVkNDMwMCwgMHhkZGQ2LCAweDExZGIsIDB4OGYzNCwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwgLy8gdHlwZQorICAgICAgICB7MHhlMjVhYTg0MCwgMHg1NDNiLCAweDExZGYsIDB4OThhNSwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwgLy8gdXVpZAorICAgICAgICBFRkZFQ1RfQVBJX1ZFUlNJT04sCisgICAgICAgIChFRkZFQ1RfRkxBR19UWVBFX0lOU0VSVCB8IEVGRkVDVF9GTEFHX0lOU0VSVF9MQVNUKSwKKyAgICAgICAgMCwgLy8gVE9ETworICAgICAgICAxLAorICAgICAgICAiR3JhcGhpYyBFcXVhbGl6ZXIiLAorICAgICAgICAiR29vZ2xlIEluYy4iLAorfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLyBCRUdJTiBFUSBQUkVTRVRTIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2NvbnN0IGludCBrTnVtQmFuZHMgPSA1OworY29uc3QgdWludDMyX3QgZ0ZyZXFzW2tOdW1CYW5kc10gPSAgICAgIHsgNTAwMDAsIDEyNTAwMCwgOTAwMDAwLCAzMjAwMDAwLCA2MzAwMDAwIH07Citjb25zdCB1aW50MzJfdCBnQmFuZHdpZHRoc1trTnVtQmFuZHNdID0geyAwLCAgICAgMzYwMCwgICAzNjAwLCAgIDI0MDAsICAgIDAgICAgICAgfTsKKworY29uc3QgQXVkaW9FcXVhbGl6ZXI6OkJhbmRDb25maWcgZ0JhbmRzQ2xhc3NpY1trTnVtQmFuZHNdID0geworICAgIHsgMzAwLCAgZ0ZyZXFzWzBdLCBnQmFuZHdpZHRoc1swXSB9LAorICAgIHsgNDAwLCAgZ0ZyZXFzWzFdLCBnQmFuZHdpZHRoc1sxXSB9LAorICAgIHsgMCwgICAgZ0ZyZXFzWzJdLCBnQmFuZHdpZHRoc1syXSB9LAorICAgIHsgMjAwLCAgZ0ZyZXFzWzNdLCBnQmFuZHdpZHRoc1szXSB9LAorICAgIHsgLTMwMCwgZ0ZyZXFzWzRdLCBnQmFuZHdpZHRoc1s0XSB9Cit9OworCitjb25zdCBBdWRpb0VxdWFsaXplcjo6QmFuZENvbmZpZyBnQmFuZHNKYXp6W2tOdW1CYW5kc10gPSB7CisgICAgeyAtNjAwLCBnRnJlcXNbMF0sIGdCYW5kd2lkdGhzWzBdIH0sCisgICAgeyAyMDAsICBnRnJlcXNbMV0sIGdCYW5kd2lkdGhzWzFdIH0sCisgICAgeyA0MDAsICBnRnJlcXNbMl0sIGdCYW5kd2lkdGhzWzJdIH0sCisgICAgeyAtNDAwLCBnRnJlcXNbM10sIGdCYW5kd2lkdGhzWzNdIH0sCisgICAgeyAtNjAwLCBnRnJlcXNbNF0sIGdCYW5kd2lkdGhzWzRdIH0KK307CisKK2NvbnN0IEF1ZGlvRXF1YWxpemVyOjpCYW5kQ29uZmlnIGdCYW5kc1BvcFtrTnVtQmFuZHNdID0geworICAgIHsgNDAwLCAgZ0ZyZXFzWzBdLCBnQmFuZHdpZHRoc1swXSB9LAorICAgIHsgLTQwMCwgZ0ZyZXFzWzFdLCBnQmFuZHdpZHRoc1sxXSB9LAorICAgIHsgMzAwLCAgZ0ZyZXFzWzJdLCBnQmFuZHdpZHRoc1syXSB9LAorICAgIHsgLTQwMCwgZ0ZyZXFzWzNdLCBnQmFuZHdpZHRoc1szXSB9LAorICAgIHsgNjAwLCAgZ0ZyZXFzWzRdLCBnQmFuZHdpZHRoc1s0XSB9Cit9OworCitjb25zdCBBdWRpb0VxdWFsaXplcjo6QmFuZENvbmZpZyBnQmFuZHNSb2NrW2tOdW1CYW5kc10gPSB7CisgICAgeyA3MDAsICBnRnJlcXNbMF0sIGdCYW5kd2lkdGhzWzBdIH0sCisgICAgeyA0MDAsICBnRnJlcXNbMV0sIGdCYW5kd2lkdGhzWzFdIH0sCisgICAgeyAtNDAwLCBnRnJlcXNbMl0sIGdCYW5kd2lkdGhzWzJdIH0sCisgICAgeyA0MDAsICBnRnJlcXNbM10sIGdCYW5kd2lkdGhzWzNdIH0sCisgICAgeyAyMDAsICBnRnJlcXNbNF0sIGdCYW5kd2lkdGhzWzRdIH0KK307CisKK2NvbnN0IEF1ZGlvRXF1YWxpemVyOjpQcmVzZXRDb25maWcgZ0VxdWFsaXplclByZXNldHNbXSA9IHsKKyAgICB7ICJDbGFzc2ljIiwgZ0JhbmRzQ2xhc3NpYyB9LAorICAgIHsgIkphenoiLCAgICBnQmFuZHNKYXp6ICAgIH0sCisgICAgeyAiUG9wIiwgICAgIGdCYW5kc1BvcCAgICAgfSwKKyAgICB7ICJSb2NrIiwgICAgZ0JhbmRzUm9jayAgICB9Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vIEVORCBFUSBQUkVTRVRTIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWZmZXJTaXplID0gMzI7CisKK3R5cGVkZWYgQXVkaW9Gb3JtYXRBZGFwdGVyPEF1ZGlvRXF1YWxpemVyLCBrQnVmZmVyU2l6ZT4gRm9ybWF0QWRhcHRlcjsKKworc3RydWN0IEVxdWFsaXplckNvbnRleHQgeworICAgIGNvbnN0IHN0cnVjdCBlZmZlY3RfaW50ZXJmYWNlX3MgKml0ZmU7CisgICAgZWZmZWN0X2NvbmZpZ190IGNvbmZpZzsKKyAgICBGb3JtYXRBZGFwdGVyIGFkYXB0ZXI7CisgICAgQXVkaW9FcXVhbGl6ZXIgKiBwRXF1YWxpemVyOworfTsKKworLy8tLS0gbG9jYWwgZnVuY3Rpb24gcHJvdG90eXBlcworCitpbnQgRXF1YWxpemVyX2luaXQoRXF1YWxpemVyQ29udGV4dCAqcENvbnRleHQpOworaW50IEVxdWFsaXplcl9jb25maWd1cmUoRXF1YWxpemVyQ29udGV4dCAqcENvbnRleHQsIGVmZmVjdF9jb25maWdfdCAqcENvbmZpZyk7CitpbnQgRXF1YWxpemVyX2dldFBhcmFtZXRlcihBdWRpb0VxdWFsaXplciAqIHBFcXVhbGl6ZXIsIGludDMyX3QgKnBQYXJhbSwgc2l6ZV90ICpwVmFsdWVTaXplLCB2b2lkICpwVmFsdWUpOworaW50IEVxdWFsaXplcl9zZXRQYXJhbWV0ZXIoQXVkaW9FcXVhbGl6ZXIgKiBwRXF1YWxpemVyLCBpbnQzMl90ICpwUGFyYW0sIHZvaWQgKnBWYWx1ZSk7CisKKworLy8KKy8vLS0tIEVmZmVjdCBMaWJyYXJ5IEludGVyZmFjZSBJbXBsZW1lbnRhdGlvbgorLy8KKworZXh0ZXJuICJDIiBpbnQgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpwTnVtRWZmZWN0cykgeworICAgICpwTnVtRWZmZWN0cyA9IDE7CisgICAgcmV0dXJuIDA7Cit9IC8qIGVuZCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHMgKi8KKworZXh0ZXJuICJDIiBpbnQgRWZmZWN0UXVlcnlFZmZlY3QodWludDMyX3QgaW5kZXgsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjcmlwdG9yKSB7CisgICAgaWYgKHBEZXNjcmlwdG9yID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIGlmIChpbmRleCA+IDApIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIG1lbWNweShwRGVzY3JpcHRvciwgJmdFcXVhbGl6ZXJEZXNjcmlwdG9yLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgIHJldHVybiAwOworfSAvKiBlbmQgRWZmZWN0UXVlcnlOZXh0ICovCisKK2V4dGVybiAiQyIgaW50IEVmZmVjdENyZWF0ZShlZmZlY3RfdXVpZF90ICp1dWlkLAorICAgICAgICBpbnQzMl90IHNlc3Npb25JZCwKKyAgICAgICAgaW50MzJfdCBpb0lkLAorICAgICAgICBlZmZlY3RfaW50ZXJmYWNlX3QgKnBJbnRlcmZhY2UpIHsKKyAgICBpbnQgcmV0OworICAgIGludCBpOworCisgICAgTE9HVigiRWZmZWN0TGliQ3JlYXRlRWZmZWN0IHN0YXJ0Iik7CisKKyAgICBpZiAocEludGVyZmFjZSA9PSBOVUxMIHx8IHV1aWQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKHV1aWQsICZnRXF1YWxpemVyRGVzY3JpcHRvci51dWlkLCBzaXplb2YoZWZmZWN0X3V1aWRfdCkpICE9IDApIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgRXF1YWxpemVyQ29udGV4dCAqcENvbnRleHQgPSBuZXcgRXF1YWxpemVyQ29udGV4dDsKKworICAgIHBDb250ZXh0LT5pdGZlID0gJmdFcXVhbGl6ZXJJbnRlcmZhY2U7CisgICAgcENvbnRleHQtPnBFcXVhbGl6ZXIgPSBOVUxMOworCisgICAgcmV0ID0gRXF1YWxpemVyX2luaXQocENvbnRleHQpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIExPR1coIkVmZmVjdExpYkNyZWF0ZUVmZmVjdCgpIGluaXQgZmFpbGVkIik7CisgICAgICAgIGRlbGV0ZSBwQ29udGV4dDsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICAqcEludGVyZmFjZSA9IChlZmZlY3RfaW50ZXJmYWNlX3QpcENvbnRleHQ7CisKKyAgICBMT0dWKCJFZmZlY3RMaWJDcmVhdGVFZmZlY3QgJXAsIHNpemUgJWQiLCBwQ29udGV4dCwgQXVkaW9FcXVhbGl6ZXI6OkdldEluc3RhbmNlU2l6ZShrTnVtQmFuZHMpK3NpemVvZihFcXVhbGl6ZXJDb250ZXh0KSk7CisKKyAgICByZXR1cm4gMDsKKworfSAvKiBlbmQgRWZmZWN0Q3JlYXRlICovCisKK2V4dGVybiAiQyIgaW50IEVmZmVjdFJlbGVhc2UoZWZmZWN0X2ludGVyZmFjZV90IGludGVyZmFjZSkgeworICAgIEVxdWFsaXplckNvbnRleHQgKiBwQ29udGV4dCA9IChFcXVhbGl6ZXJDb250ZXh0ICopaW50ZXJmYWNlOworCisgICAgTE9HVigiRWZmZWN0TGliUmVsZWFzZUVmZmVjdCAlcCIsIGludGVyZmFjZSk7CisgICAgaWYgKHBDb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcENvbnRleHQtPnBFcXVhbGl6ZXItPmZyZWUoKTsKKyAgICBkZWxldGUgcENvbnRleHQ7CisKKyAgICByZXR1cm4gMDsKK30gLyogZW5kIEVmZmVjdFJlbGVhc2UgKi8KKworCisvLworLy8tLS0gbG9jYWwgZnVuY3Rpb25zCisvLworCisjZGVmaW5lIENIRUNLX0FSRyhjb25kKSB7ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghKGNvbmQpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTE9HVigiSW52YWxpZCBhcmd1bWVudDogIiNjb25kKTsgICAgICBcCisgICAgICAgIHJldHVybiAtRUlOVkFMOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBFcXVhbGl6ZXJfY29uZmlndXJlKCkKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUHVycG9zZTogU2V0IGlucHV0IGFuZCBvdXRwdXQgYXVkaW8gY29uZmlndXJhdGlvbi4KKy8vCisvLyBJbnB1dHM6CisvLyAgcENvbnRleHQ6ICAgZWZmZWN0IGVuZ2luZSBjb250ZXh0CisvLyAgcENvbmZpZzogICAgcG9pbnRlciB0byBlZmZlY3RfY29uZmlnX3Qgc3RydWN0dXJlIGhvbGRpbmcgaW5wdXQgYW5kIG91dHB1dAorLy8gICAgICBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMKKy8vCisvLyBPdXRwdXRzOgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgRXF1YWxpemVyX2NvbmZpZ3VyZShFcXVhbGl6ZXJDb250ZXh0ICpwQ29udGV4dCwgZWZmZWN0X2NvbmZpZ190ICpwQ29uZmlnKQoreworICAgIExPR1YoIkVxdWFsaXplcl9jb25maWd1cmUgc3RhcnQiKTsKKworICAgIENIRUNLX0FSRyhwQ29udGV4dCAhPSBOVUxMKTsKKyAgICBDSEVDS19BUkcocENvbmZpZyAhPSBOVUxMKTsKKworICAgIENIRUNLX0FSRyhwQ29uZmlnLT5pbnB1dENmZy5zYW1wbGluZ1JhdGUgPT0gcENvbmZpZy0+b3V0cHV0Q2ZnLnNhbXBsaW5nUmF0ZSk7CisgICAgQ0hFQ0tfQVJHKHBDb25maWctPmlucHV0Q2ZnLmNoYW5uZWxzID09IHBDb25maWctPm91dHB1dENmZy5jaGFubmVscyk7CisgICAgQ0hFQ0tfQVJHKHBDb25maWctPmlucHV0Q2ZnLmZvcm1hdCA9PSBwQ29uZmlnLT5vdXRwdXRDZmcuZm9ybWF0KTsKKyAgICBDSEVDS19BUkcoKHBDb25maWctPmlucHV0Q2ZnLmNoYW5uZWxzID09IENIQU5ORUxfTU9OTykgfHwgKHBDb25maWctPmlucHV0Q2ZnLmNoYW5uZWxzID09IENIQU5ORUxfU1RFUkVPKSk7CisgICAgQ0hFQ0tfQVJHKHBDb25maWctPm91dHB1dENmZy5hY2Nlc3NNb2RlID09IEVGRkVDVF9CVUZGRVJfQUNDRVNTX1dSSVRFCisgICAgICAgICAgICAgIHx8IHBDb25maWctPm91dHB1dENmZy5hY2Nlc3NNb2RlID09IEVGRkVDVF9CVUZGRVJfQUNDRVNTX0FDQ1VNVUxBVEUpOworICAgIENIRUNLX0FSRyhwQ29uZmlnLT5pbnB1dENmZy5mb3JtYXQgPT0gU0FNUExFX0ZPUk1BVF9QQ01fUzdfMjQKKyAgICAgICAgICAgICAgfHwgcENvbmZpZy0+aW5wdXRDZmcuZm9ybWF0ID09IFNBTVBMRV9GT1JNQVRfUENNX1MxNSk7CisKKyAgICBpbnQgY2hhbm5lbENvdW50OworICAgIGlmIChwQ29uZmlnLT5pbnB1dENmZy5jaGFubmVscyA9PSBDSEFOTkVMX01PTk8pIHsKKyAgICAgICAgY2hhbm5lbENvdW50ID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGFubmVsQ291bnQgPSAyOworICAgIH0KKyAgICBDSEVDS19BUkcoY2hhbm5lbENvdW50IDw9IEF1ZGlvQmlxdWFkRmlsdGVyOjpNQVhfQ0hBTk5FTFMpOworCisgICAgbWVtY3B5KCZwQ29udGV4dC0+Y29uZmlnLCBwQ29uZmlnLCBzaXplb2YoZWZmZWN0X2NvbmZpZ190KSk7CisKKyAgICBwQ29udGV4dC0+cEVxdWFsaXplci0+Y29uZmlndXJlKGNoYW5uZWxDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcENvbmZpZy0+aW5wdXRDZmcuc2FtcGxpbmdSYXRlKTsKKworICAgIHBDb250ZXh0LT5hZGFwdGVyLmNvbmZpZ3VyZSgqcENvbnRleHQtPnBFcXVhbGl6ZXIsIGNoYW5uZWxDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBDb25maWctPmlucHV0Q2ZnLmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBDb25maWctPm91dHB1dENmZy5hY2Nlc3NNb2RlKTsKKworICAgIHJldHVybiAwOworfSAgIC8vIGVuZCBFcXVhbGl6ZXJfY29uZmlndXJlCisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBFcXVhbGl6ZXJfaW5pdCgpCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFB1cnBvc2U6IEluaXRpYWxpemUgZW5naW5lIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uIGFuZCBjcmVhdGVzCisvLyAgICAgQXVkaW9FcXVhbGl6ZXIgaW5zdGFuY2UuCisvLworLy8gSW5wdXRzOgorLy8gIHBDb250ZXh0OiAgIGVmZmVjdCBlbmdpbmUgY29udGV4dAorLy8KKy8vIE91dHB1dHM6CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2ludCBFcXVhbGl6ZXJfaW5pdChFcXVhbGl6ZXJDb250ZXh0ICpwQ29udGV4dCkKK3sKKyAgICBpbnQgc3RhdHVzOworCisgICAgTE9HVigiRXF1YWxpemVyX2luaXQgc3RhcnQiKTsKKworICAgIENIRUNLX0FSRyhwQ29udGV4dCAhPSBOVUxMKTsKKworICAgIGlmIChwQ29udGV4dC0+cEVxdWFsaXplciAhPSBOVUxMKSB7CisgICAgICAgIHBDb250ZXh0LT5wRXF1YWxpemVyLT5mcmVlKCk7CisgICAgfQorCisgICAgcENvbnRleHQtPmNvbmZpZy5pbnB1dENmZy5hY2Nlc3NNb2RlID0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfUkVBRDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLmlucHV0Q2ZnLmNoYW5uZWxzID0gQ0hBTk5FTF9TVEVSRU87CisgICAgcENvbnRleHQtPmNvbmZpZy5pbnB1dENmZy5mb3JtYXQgPSBTQU1QTEVfRk9STUFUX1BDTV9TMTU7CisgICAgcENvbnRleHQtPmNvbmZpZy5pbnB1dENmZy5zYW1wbGluZ1JhdGUgPSA0NDEwMDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmdldEJ1ZmZlciA9IE5VTEw7CisgICAgcENvbnRleHQtPmNvbmZpZy5pbnB1dENmZy5idWZmZXJQcm92aWRlci5yZWxlYXNlQnVmZmVyID0gTlVMTDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmNvb2tpZSA9IE5VTEw7CisgICAgcENvbnRleHQtPmNvbmZpZy5pbnB1dENmZy5tYXNrID0gRUZGRUNUX0NPTkZJR19BTEw7CisgICAgcENvbnRleHQtPmNvbmZpZy5vdXRwdXRDZmcuYWNjZXNzTW9kZSA9IEVGRkVDVF9CVUZGRVJfQUNDRVNTX0FDQ1VNVUxBVEU7CisgICAgcENvbnRleHQtPmNvbmZpZy5vdXRwdXRDZmcuY2hhbm5lbHMgPSBDSEFOTkVMX1NURVJFTzsKKyAgICBwQ29udGV4dC0+Y29uZmlnLm91dHB1dENmZy5mb3JtYXQgPSBTQU1QTEVfRk9STUFUX1BDTV9TMTU7CisgICAgcENvbnRleHQtPmNvbmZpZy5vdXRwdXRDZmcuc2FtcGxpbmdSYXRlID0gNDQxMDA7CisgICAgcENvbnRleHQtPmNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyUHJvdmlkZXIuZ2V0QnVmZmVyID0gTlVMTDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLm91dHB1dENmZy5idWZmZXJQcm92aWRlci5yZWxlYXNlQnVmZmVyID0gTlVMTDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLm91dHB1dENmZy5idWZmZXJQcm92aWRlci5jb29raWUgPSBOVUxMOworICAgIHBDb250ZXh0LT5jb25maWcub3V0cHV0Q2ZnLm1hc2sgPSBFRkZFQ1RfQ09ORklHX0FMTDsKKworICAgIHBDb250ZXh0LT5wRXF1YWxpemVyID0gQXVkaW9FcXVhbGl6ZXI6OkNyZWF0ZUluc3RhbmNlKAorICAgICAgICBOVUxMLAorICAgICAgICBrTnVtQmFuZHMsCisgICAgICAgIEF1ZGlvQmlxdWFkRmlsdGVyOjpNQVhfQ0hBTk5FTFMsCisgICAgICAgIDQ0MTAwLAorICAgICAgICBnRXF1YWxpemVyUHJlc2V0cywKKyAgICAgICAgQVJSQVlfU0laRShnRXF1YWxpemVyUHJlc2V0cykpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrTnVtQmFuZHM7ICsraSkgeworICAgICAgICBwQ29udGV4dC0+cEVxdWFsaXplci0+c2V0RnJlcXVlbmN5KGksIGdGcmVxc1tpXSk7CisgICAgICAgIHBDb250ZXh0LT5wRXF1YWxpemVyLT5zZXRCYW5kd2lkdGgoaSwgZ0JhbmR3aWR0aHNbaV0pOworICAgIH0KKworICAgIHBDb250ZXh0LT5wRXF1YWxpemVyLT5lbmFibGUodHJ1ZSk7CisKKyAgICBFcXVhbGl6ZXJfY29uZmlndXJlKHBDb250ZXh0LCAmcENvbnRleHQtPmNvbmZpZyk7CisKKyAgICByZXR1cm4gMDsKK30gICAvLyBlbmQgRXF1YWxpemVyX2luaXQKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoKQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBQdXJwb3NlOgorLy8gR2V0IGEgRXF1YWxpemVyIHBhcmFtZXRlcgorLy8KKy8vIElucHV0czoKKy8vICBwRXF1YWxpemVyICAgICAgIC0gaGFuZGxlIHRvIGluc3RhbmNlIGRhdGEKKy8vICBwUGFyYW0gICAgICAgICAgIC0gcG9pbnRlciB0byBwYXJhbWV0ZXIKKy8vICBwVmFsdWUgICAgICAgICAgIC0gcG9pbnRlciB0byB2YXJpYWJsZSB0byBob2xkIHJldHJpZXZlZCB2YWx1ZQorLy8gIHBWYWx1ZVNpemUgICAgICAgLSBwb2ludGVyIHRvIHZhbHVlIHNpemU6IG1heGltdW0gc2l6ZSBhcyBpbnB1dAorLy8KKy8vIE91dHB1dHM6CisvLyAgKnBWYWx1ZSB1cGRhdGVkIHdpdGggcGFyYW1ldGVyIHZhbHVlCisvLyAgKnBWYWx1ZVNpemUgdXBkYXRlZCB3aXRoIGFjdHVhbCB2YWx1ZSBzaXplCisvLworLy8KKy8vIFNpZGUgRWZmZWN0czoKKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IEVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoQXVkaW9FcXVhbGl6ZXIgKiBwRXF1YWxpemVyLCBpbnQzMl90ICpwUGFyYW0sIHNpemVfdCAqcFZhbHVlU2l6ZSwgdm9pZCAqcFZhbHVlKQoreworICAgIGludCBzdGF0dXMgPSAwOworICAgIGludDMyX3QgcGFyYW0gPSAqcFBhcmFtKys7CisgICAgaW50MzJfdCBwYXJhbTI7CisgICAgY2hhciAqbmFtZTsKKworICAgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIEVRX1BBUkFNX05VTV9CQU5EUzoKKyAgICBjYXNlIEVRX1BBUkFNX0NVUl9QUkVTRVQ6CisgICAgY2FzZSBFUV9QQVJBTV9HRVRfTlVNX09GX1BSRVNFVFM6CisgICAgICAgIGlmICgqcFZhbHVlU2l6ZSA8IHNpemVvZihpbnQxNl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgKnBWYWx1ZVNpemUgPSBzaXplb2YoaW50MTZfdCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFUV9QQVJBTV9MRVZFTF9SQU5HRToKKyAgICBjYXNlIEVRX1BBUkFNX0JBTkRfRlJFUV9SQU5HRToKKyAgICAgICAgaWYgKCpwVmFsdWVTaXplIDwgMiAqIHNpemVvZihpbnQzMl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgKnBWYWx1ZVNpemUgPSAyICogc2l6ZW9mKGludDMyX3QpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVRX1BBUkFNX0JBTkRfTEVWRUw6CisgICAgY2FzZSBFUV9QQVJBTV9HRVRfQkFORDoKKyAgICBjYXNlIEVRX1BBUkFNX0NFTlRFUl9GUkVROgorICAgICAgICBpZiAoKnBWYWx1ZVNpemUgPCBzaXplb2YoaW50MzJfdCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgICpwVmFsdWVTaXplID0gc2l6ZW9mKGludDMyX3QpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVFfUEFSQU1fR0VUX1BSRVNFVF9OQU1FOgorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIEVRX1BBUkFNX05VTV9CQU5EUzoKKyAgICAgICAgKihpbnQxNl90ICopcFZhbHVlID0ga051bUJhbmRzOworICAgICAgICBMT0dWKCJFcXVhbGl6ZXJfZ2V0UGFyYW1ldGVyKCkgRVFfUEFSQU1fTlVNX0JBTkRTICVkIiwgKihpbnQxNl90ICopcFZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVRX1BBUkFNX0xFVkVMX1JBTkdFOgorICAgICAgICAqKGludDMyX3QgKilwVmFsdWUgPSAtOTYwMDsKKyAgICAgICAgKigoaW50MzJfdCAqKXBWYWx1ZSArIDEpID0gNDgwMDsKKyAgICAgICAgTE9HVigiRXF1YWxpemVyX2dldFBhcmFtZXRlcigpIEVRX1BBUkFNX0xFVkVMX1JBTkdFIG1pbiAlZCwgbWF4ICVkIiwgKihpbnQzMl90ICopcFZhbHVlLCAqKChpbnQzMl90ICopcFZhbHVlICsgMSkpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVFfUEFSQU1fQkFORF9MRVZFTDoKKyAgICAgICAgcGFyYW0yID0gKnBQYXJhbTsKKyAgICAgICAgaWYgKHBhcmFtMiA+PSBrTnVtQmFuZHMpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAqKGludDMyX3QgKilwVmFsdWUgPSBwRXF1YWxpemVyLT5nZXRHYWluKHBhcmFtMik7CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoKSBFUV9QQVJBTV9CQU5EX0xFVkVMIGJhbmQgJWQsIGxldmVsICVkIiwgcGFyYW0yLCAqKGludDMyX3QgKilwVmFsdWUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVFfUEFSQU1fQ0VOVEVSX0ZSRVE6CisgICAgICAgIHBhcmFtMiA9ICpwUGFyYW07CisgICAgICAgIGlmIChwYXJhbTIgPj0ga051bUJhbmRzKSB7CisgICAgICAgICAgICBzdGF0dXMgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgKihpbnQzMl90ICopcFZhbHVlID0gcEVxdWFsaXplci0+Z2V0RnJlcXVlbmN5KHBhcmFtMik7CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoKSBFUV9QQVJBTV9DRU5URVJfRlJFUSBiYW5kICVkLCBmcmVxdWVuY3kgJWQiLCBwYXJhbTIsICooaW50MzJfdCAqKXBWYWx1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFUV9QQVJBTV9CQU5EX0ZSRVFfUkFOR0U6CisgICAgICAgIHBhcmFtMiA9ICpwUGFyYW07CisgICAgICAgIGlmIChwYXJhbTIgPj0ga051bUJhbmRzKSB7CisgICAgICAgICAgICBzdGF0dXMgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcEVxdWFsaXplci0+Z2V0QmFuZFJhbmdlKHBhcmFtMiwgKih1aW50MzJfdCAqKXBWYWx1ZSwgKigodWludDMyX3QgKilwVmFsdWUgKyAxKSk7CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoKSBFUV9QQVJBTV9CQU5EX0ZSRVFfUkFOR0UgYmFuZCAlZCwgbWluICVkLCBtYXggJWQiLCBwYXJhbTIsICooaW50MzJfdCAqKXBWYWx1ZSwgKigoaW50MzJfdCAqKXBWYWx1ZSArIDEpKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVRX1BBUkFNX0dFVF9CQU5EOgorICAgICAgICBwYXJhbTIgPSAqcFBhcmFtOworICAgICAgICAqKGludDMyX3QgKilwVmFsdWUgPSBwRXF1YWxpemVyLT5nZXRNb3N0UmVsZXZhbnRCYW5kKHBhcmFtMik7CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoKSBFUV9QQVJBTV9HRVRfQkFORCBmcmVxdWVuY3kgJWQsIGJhbmQgJWQiLCBwYXJhbTIsICooaW50MzJfdCAqKXBWYWx1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFUV9QQVJBTV9DVVJfUFJFU0VUOgorICAgICAgICAqKGludDE2X3QgKilwVmFsdWUgPSBwRXF1YWxpemVyLT5nZXRQcmVzZXQoKTsKKyAgICAgICAgTE9HVigiRXF1YWxpemVyX2dldFBhcmFtZXRlcigpIEVRX1BBUkFNX0NVUl9QUkVTRVQgJWQiLCAqKGludDMyX3QgKilwVmFsdWUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVFfUEFSQU1fR0VUX05VTV9PRl9QUkVTRVRTOgorICAgICAgICAqKGludDE2X3QgKilwVmFsdWUgPSBwRXF1YWxpemVyLT5nZXROdW1QcmVzZXRzKCk7CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoKSBFUV9QQVJBTV9HRVRfTlVNX09GX1BSRVNFVFMgJWQiLCAqKGludDE2X3QgKilwVmFsdWUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVFfUEFSQU1fR0VUX1BSRVNFVF9OQU1FOgorICAgICAgICBwYXJhbTIgPSAqcFBhcmFtOworICAgICAgICBpZiAocGFyYW0yID49IHBFcXVhbGl6ZXItPmdldE51bVByZXNldHMoKSkgeworICAgICAgICAgICAgc3RhdHVzID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIG5hbWUgPSAoY2hhciAqKXBWYWx1ZTsKKyAgICAgICAgc3RybmNweShuYW1lLCBwRXF1YWxpemVyLT5nZXRQcmVzZXROYW1lKHBhcmFtMiksICpwVmFsdWVTaXplIC0gMSk7CisgICAgICAgIG5hbWVbKnBWYWx1ZVNpemUgLSAxXSA9IDA7CisgICAgICAgICpwVmFsdWVTaXplID0gc3RybGVuKG5hbWUpICsgMTsKKyAgICAgICAgTE9HVigiRXF1YWxpemVyX2dldFBhcmFtZXRlcigpIEVRX1BBUkFNX0dFVF9QUkVTRVRfTkFNRSBwcmVzZXQgJWQsIG5hbWUgJXMgbGVuICVkIiwgcGFyYW0yLCBnRXF1YWxpemVyUHJlc2V0c1twYXJhbTJdLm5hbWUsICpwVmFsdWVTaXplKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBMT0dWKCJFcXVhbGl6ZXJfZ2V0UGFyYW1ldGVyKCkgaW52YWxpZCBwYXJhbSAlZCIsIHBhcmFtKTsKKyAgICAgICAgc3RhdHVzID0gLUVJTlZBTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30gLy8gZW5kIEVxdWFsaXplcl9nZXRQYXJhbWV0ZXIKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEVxdWFsaXplcl9zZXRQYXJhbWV0ZXIoKQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBQdXJwb3NlOgorLy8gU2V0IGEgRXF1YWxpemVyIHBhcmFtZXRlcgorLy8KKy8vIElucHV0czoKKy8vICBwRXF1YWxpemVyICAgICAgIC0gaGFuZGxlIHRvIGluc3RhbmNlIGRhdGEKKy8vICBwUGFyYW0gICAgICAgICAgIC0gcG9pbnRlciB0byBwYXJhbWV0ZXIKKy8vICBwVmFsdWUgICAgICAgICAgIC0gcG9pbnRlciB0byB2YWx1ZQorLy8KKy8vIE91dHB1dHM6CisvLworLy8KKy8vIFNpZGUgRWZmZWN0czoKKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IEVxdWFsaXplcl9zZXRQYXJhbWV0ZXIgKEF1ZGlvRXF1YWxpemVyICogcEVxdWFsaXplciwgaW50MzJfdCAqcFBhcmFtLCB2b2lkICpwVmFsdWUpCit7CisgICAgaW50IHN0YXR1cyA9IDA7CisgICAgaW50MzJfdCBwcmVzZXQ7CisgICAgaW50MzJfdCBiYW5kOworICAgIGludDMyX3QgbGV2ZWw7CisgICAgaW50MzJfdCBwYXJhbSA9ICpwUGFyYW0rKzsKKworCisgICAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgRVFfUEFSQU1fQ1VSX1BSRVNFVDoKKyAgICAgICAgcHJlc2V0ID0gKihpbnQxNl90ICopcFZhbHVlOworCisgICAgICAgIExPR1YoInNldFBhcmFtZXRlcigpIEVRX1BBUkFNX0NVUl9QUkVTRVQgJWQiLCBwcmVzZXQpOworICAgICAgICBpZiAocHJlc2V0ID49IHBFcXVhbGl6ZXItPmdldE51bVByZXNldHMoKSkgeworICAgICAgICAgICAgc3RhdHVzID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHBFcXVhbGl6ZXItPnNldFByZXNldChwcmVzZXQpOworICAgICAgICBwRXF1YWxpemVyLT5jb21taXQodHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVFfUEFSQU1fQkFORF9MRVZFTDoKKyAgICAgICAgYmFuZCA9ICAqcFBhcmFtOworICAgICAgICBsZXZlbCA9ICooaW50MzJfdCAqKXBWYWx1ZTsKKyAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKCkgRVFfUEFSQU1fQkFORF9MRVZFTCBiYW5kICVkLCBsZXZlbCAlZCIsIGJhbmQsIGxldmVsKTsKKyAgICAgICAgaWYgKGJhbmQgPj0ga051bUJhbmRzKSB7CisgICAgICAgICAgICBzdGF0dXMgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcEVxdWFsaXplci0+c2V0R2FpbihiYW5kLCBsZXZlbCk7CisgICAgICAgIHBFcXVhbGl6ZXItPmNvbW1pdCh0cnVlKTsKKyAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBMT0dWKCJzZXRQYXJhbWV0ZXIoKSBpbnZhbGlkIHBhcmFtICVkIiwgcGFyYW0pOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfSAvLyBlbmQgRXF1YWxpemVyX3NldFBhcmFtZXRlcgorCit9IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UKKworCisvLworLy8tLS0gRWZmZWN0IENvbnRyb2wgSW50ZXJmYWNlIEltcGxlbWVudGF0aW9uCisvLworCitleHRlcm4gIkMiIGludCBFcXVhbGl6ZXJfcHJvY2VzcyhlZmZlY3RfaW50ZXJmYWNlX3Qgc2VsZiwgYXVkaW9fYnVmZmVyX3QgKmluQnVmZmVyLCBhdWRpb19idWZmZXJfdCAqb3V0QnVmZmVyKQoreworICAgIGFuZHJvaWQ6OkVxdWFsaXplckNvbnRleHQgKiBwQ29udGV4dCA9IChhbmRyb2lkOjpFcXVhbGl6ZXJDb250ZXh0ICopIHNlbGY7CisKKyAgICBpZiAocENvbnRleHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgaWYgKGluQnVmZmVyID09IE5VTEwgfHwgaW5CdWZmZXItPnJhdyA9PSBOVUxMIHx8CisgICAgICAgIG91dEJ1ZmZlciA9PSBOVUxMIHx8IG91dEJ1ZmZlci0+cmF3ID09IE5VTEwgfHwKKyAgICAgICAgaW5CdWZmZXItPmZyYW1lQ291bnQgIT0gb3V0QnVmZmVyLT5mcmFtZUNvdW50KSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHBDb250ZXh0LT5hZGFwdGVyLnByb2Nlc3MoaW5CdWZmZXItPnJhdywgb3V0QnVmZmVyLT5yYXcsIG91dEJ1ZmZlci0+ZnJhbWVDb3VudCk7CisKKyAgICByZXR1cm4gMDsKK30gICAvLyBlbmQgRXF1YWxpemVyX3Byb2Nlc3MKKworZXh0ZXJuICJDIiBpbnQgRXF1YWxpemVyX2NvbW1hbmQoZWZmZWN0X2ludGVyZmFjZV90IHNlbGYsIGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwKKyAgICAgICAgdm9pZCAqcENtZERhdGEsIGludCAqcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKSB7CisKKyAgICBhbmRyb2lkOjpFcXVhbGl6ZXJDb250ZXh0ICogcENvbnRleHQgPSAoYW5kcm9pZDo6RXF1YWxpemVyQ29udGV4dCAqKSBzZWxmOworICAgIGludCByZXRzaXplOworCisgICAgaWYgKHBDb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgYW5kcm9pZDo6QXVkaW9FcXVhbGl6ZXIgKiBwRXF1YWxpemVyID0gcENvbnRleHQtPnBFcXVhbGl6ZXI7CisKKyAgICBMT0dWKCJFcXVhbGl6ZXJfY29tbWFuZCBjb21tYW5kICVkIGNtZFNpemUgJWQiLGNtZENvZGUsIGNtZFNpemUpOworCisgICAgc3dpdGNoIChjbWRDb2RlKSB7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0lOSVQ6CisgICAgICAgIGlmIChwUmVwbHlEYXRhID09IE5VTEwgfHwgKnJlcGx5U2l6ZSAhPSBzaXplb2YoaW50KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgKihpbnQgKikgcFJlcGx5RGF0YSA9IEVxdWFsaXplcl9pbml0KHBDb250ZXh0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0NPTkZJR1VSRToKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwgfHwgY21kU2l6ZSAhPSBzaXplb2YoZWZmZWN0X2NvbmZpZ190KQorICAgICAgICAgICAgICAgIHx8IHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICAqKGludCAqKSBwUmVwbHlEYXRhID0gRXF1YWxpemVyX2NvbmZpZ3VyZShwQ29udGV4dCwKKyAgICAgICAgICAgICAgICAoZWZmZWN0X2NvbmZpZ190ICopIHBDbWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX1JFU0VUOgorICAgICAgICBFcXVhbGl6ZXJfY29uZmlndXJlKHBDb250ZXh0LCAmcENvbnRleHQtPmNvbmZpZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRUZGRUNUX0NNRF9HRVRfUEFSQU06IHsKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwgfHwgY21kU2l6ZSA8IChpbnQpKHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBzaXplb2YoaW50MzJfdCkpIHx8CisgICAgICAgICAgICBwUmVwbHlEYXRhID09IE5VTEwgfHwgKnJlcGx5U2l6ZSA8IChpbnQpIChzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZW9mKGludDMyX3QpKSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgZWZmZWN0X3BhcmFtX3QgKnAgPSAoZWZmZWN0X3BhcmFtX3QgKilwQ21kRGF0YTsKKyAgICAgICAgbWVtY3B5KHBSZXBseURhdGEsIHBDbWREYXRhLCBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgcC0+cHNpemUpOworICAgICAgICBwID0gKGVmZmVjdF9wYXJhbV90ICopcFJlcGx5RGF0YTsKKyAgICAgICAgaW50IHZvZmZzZXQgPSAoKHAtPnBzaXplIC0gMSkgLyBzaXplb2YoaW50MzJfdCkgKyAxKSAqIHNpemVvZihpbnQzMl90KTsKKyAgICAgICAgcC0+c3RhdHVzID0gYW5kcm9pZDo6RXF1YWxpemVyX2dldFBhcmFtZXRlcihwRXF1YWxpemVyLCAoaW50MzJfdCAqKXAtPmRhdGEsICZwLT52c2l6ZSwKKyAgICAgICAgICAgICAgICBwLT5kYXRhICsgdm9mZnNldCk7CisgICAgICAgICpyZXBseVNpemUgPSBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgdm9mZnNldCArIHAtPnZzaXplOworICAgICAgICBMT0dWKCJFcXVhbGl6ZXJfY29tbWFuZCBFRkZFQ1RfQ01EX0dFVF9QQVJBTSAqcENtZERhdGEgJWQsICpyZXBseVNpemUgJWQsICpwUmVwbHlEYXRhICUwOHggJTA4eCIsCisgICAgICAgICAgICAgICAgKihpbnQzMl90ICopKChjaGFyICopcENtZERhdGEgKyBzaXplb2YoZWZmZWN0X3BhcmFtX3QpKSwgKnJlcGx5U2l6ZSwKKyAgICAgICAgICAgICAgICAqKGludDMyX3QgKikoKGNoYXIgKilwUmVwbHlEYXRhICsgc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHZvZmZzZXQpLAorICAgICAgICAgICAgICAgICooaW50MzJfdCAqKSgoY2hhciAqKXBSZXBseURhdGEgKyBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgdm9mZnNldCArIHNpemVvZihpbnQzMl90KSkpOworCisgICAgICAgIH0gYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX1NFVF9QQVJBTTogeworICAgICAgICBMT0dWKCJFcXVhbGl6ZXJfY29tbWFuZCBFRkZFQ1RfQ01EX1NFVF9QQVJBTSBjbWRTaXplICVkIHBDbWREYXRhICVwLCAqcmVwbHlTaXplICVkLCBwUmVwbHlEYXRhICVwIiwgY21kU2l6ZSwgcENtZERhdGEsICpyZXBseVNpemUsIHBSZXBseURhdGEpOworICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCBjbWRTaXplIDwgKGludCkoc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemVvZihpbnQzMl90KSkgfHwKKyAgICAgICAgICAgIHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQzMl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgZWZmZWN0X3BhcmFtX3QgKnAgPSAoZWZmZWN0X3BhcmFtX3QgKikgcENtZERhdGE7CisgICAgICAgICooaW50ICopcFJlcGx5RGF0YSA9IGFuZHJvaWQ6OkVxdWFsaXplcl9zZXRQYXJhbWV0ZXIocEVxdWFsaXplciwgKGludDMyX3QgKilwLT5kYXRhLAorICAgICAgICAgICAgICAgIHAtPmRhdGEgKyBwLT5wc2l6ZSk7CisgICAgICAgIH0gYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0VOQUJMRToKKyAgICBjYXNlIEVGRkVDVF9DTURfRElTQUJMRToKKyAgICAgICAgaWYgKHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICAqKGludCAqKXBSZXBseURhdGEgPSAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX0RFVklDRToKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX1ZPTFVNRToKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX0FVRElPX01PREU6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIExPR1coIkVxdWFsaXplcl9jb21tYW5kIGludmFsaWQgY29tbWFuZCAlZCIsY21kQ29kZSk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvLyBlZmZlY3RfaW50ZXJmYWNlX3QgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGZvciBlcXVhbGl6ZXIgZWZmZWN0Citjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIGdFcXVhbGl6ZXJJbnRlcmZhY2UgPSB7CisgICAgICAgIEVxdWFsaXplcl9wcm9jZXNzLAorICAgICAgICBFcXVhbGl6ZXJfY29tbWFuZAorfTsKKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdFJldmVyYi5jIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RSZXZlcmIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGEyNTJjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RSZXZlcmIuYwpAQCAtMCwwICsxLDIwODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIkVmZmVjdFJldmVyYiIKKy8vCisjZGVmaW5lIExPR19OREVCVUcgMAorI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSAiRWZmZWN0UmV2ZXJiLmgiCisjaW5jbHVkZSAiRWZmZWN0c01hdGguaCIKKworLy8gZWZmZWN0X2ludGVyZmFjZV90IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiBmb3IgcmV2ZXJiIGVmZmVjdAorY29uc3Qgc3RydWN0IGVmZmVjdF9pbnRlcmZhY2VfcyBnUmV2ZXJiSW50ZXJmYWNlID0geworICAgICAgICBSZXZlcmJfUHJvY2VzcywKKyAgICAgICAgUmV2ZXJiX0NvbW1hbmQKK307CisKKy8vIEdvb2dsZSBhdXhpbGlhcnkgZW52aXJvbm1lbnRhbCByZXZlcmIgVVVJRDogMWYwYWUyZTAtNGVmNy0xMWRmLWJjMDktMDAwMmE1ZDVjNTFiCitzdGF0aWMgY29uc3QgZWZmZWN0X2Rlc2NyaXB0b3JfdCBnQXV4RW52UmV2ZXJiRGVzY3JpcHRvciA9IHsKKyAgICAgICAgezB4YzJlNWQ1ZjAsIDB4OTRiZCwgMHg0NzYzLCAweDljYWMsIHsweDRlLCAweDIzLCAweDRkLCAweDA2LCAweDgzLCAweDllfX0sCisgICAgICAgIHsweDFmMGFlMmUwLCAweDRlZjcsIDB4MTFkZiwgMHhiYzA5LCB7MHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYn19LAorICAgICAgICBFRkZFQ1RfQVBJX1ZFUlNJT04sCisgICAgICAgIC8vIGZsYWdzIG90aGVyIHRoYW4gRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkgc2V0IGZvciB0ZXN0IHB1cnBvc2UKKyAgICAgICAgRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkgfCBFRkZFQ1RfRkxBR19ERVZJQ0VfSU5EIHwgRUZGRUNUX0ZMQUdfQVVESU9fTU9ERV9JTkQsCisgICAgICAgIDAsIC8vIFRPRE8KKyAgICAgICAgMzMsCisgICAgICAgICJBdXggRW52aXJvbm1lbnRhbCBSZXZlcmIiLAorICAgICAgICAiR29vZ2xlIEluYy4iCit9OworCisvLyBHb29nbGUgaW5zZXJ0IGVudmlyb25tZW50YWwgcmV2ZXJiIFVVSUQ6IGFhNDc2MDQwLTYzNDItMTFkZi05MWE0LTAwMDJhNWQ1YzUxYgorc3RhdGljIGNvbnN0IGVmZmVjdF9kZXNjcmlwdG9yX3QgZ0luc2VydEVudlJldmVyYkRlc2NyaXB0b3IgPSB7CisgICAgICAgIHsweGMyZTVkNWYwLCAweDk0YmQsIDB4NDc2MywgMHg5Y2FjLCB7MHg0ZSwgMHgyMywgMHg0ZCwgMHgwNiwgMHg4MywgMHg5ZX19LAorICAgICAgICB7MHhhYTQ3NjA0MCwgMHg2MzQyLCAweDExZGYsIDB4OTFhNCwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwKKyAgICAgICAgRUZGRUNUX0FQSV9WRVJTSU9OLAorICAgICAgICBFRkZFQ1RfRkxBR19UWVBFX0lOU0VSVCB8IEVGRkVDVF9GTEFHX0lOU0VSVF9GSVJTVCwKKyAgICAgICAgMCwgLy8gVE9ETworICAgICAgICAzMywKKyAgICAgICAgIkluc2VydCBFbnZpcm9ubWVudGFsIHJldmVyYiIsCisgICAgICAgICJHb29nbGUgSW5jLiIKK307CisKKy8vIEdvb2dsZSBhdXhpbGlhcnkgcHJlc2V0IHJldmVyYiBVVUlEOiA2MzkwOTMyMC01M2E2LTExZGYtYmRiZC0wMDAyYTVkNWM1MWIKK3N0YXRpYyBjb25zdCBlZmZlY3RfZGVzY3JpcHRvcl90IGdBdXhQcmVzZXRSZXZlcmJEZXNjcmlwdG9yID0geworICAgICAgICB7MHg0NzM4MmQ2MCwgMHhkZGQ4LCAweDQ3NjMsIDB4MTFkYiwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwKKyAgICAgICAgezB4NjM5MDkzMjAsIDB4NTNhNiwgMHgxMWRmLCAweGJkYmQsIHsweDAwLCAweDAyLCAweGE1LCAweGQ1LCAweGM1LCAweDFifX0sCisgICAgICAgIEVGRkVDVF9BUElfVkVSU0lPTiwKKyAgICAgICAgRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlksCisgICAgICAgIDAsIC8vIFRPRE8KKyAgICAgICAgMzMsCisgICAgICAgICJBdXggUHJlc2V0IFJldmVyYiIsCisgICAgICAgICJHb29nbGUgSW5jLiIKK307CisKKy8vIEdvb2dsZSBpbnNlcnQgcHJlc2V0IHJldmVyYiBVVUlEOiBkOTNkYzZhMC02MzQyLTExZGYtYjEyOC0wMDAyYTVkNWM1MWIKK3N0YXRpYyBjb25zdCBlZmZlY3RfZGVzY3JpcHRvcl90IGdJbnNlcnRQcmVzZXRSZXZlcmJEZXNjcmlwdG9yID0geworICAgICAgICB7MHg0NzM4MmQ2MCwgMHhkZGQ4LCAweDQ3NjMsIDB4MTFkYiwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwKKyAgICAgICAgezB4ZDkzZGM2YTAsIDB4NjM0MiwgMHgxMWRmLCAweGIxMjgsIHsweDAwLCAweDAyLCAweGE1LCAweGQ1LCAweGM1LCAweDFifX0sCisgICAgICAgIEVGRkVDVF9BUElfVkVSU0lPTiwKKyAgICAgICAgRUZGRUNUX0ZMQUdfVFlQRV9JTlNFUlQgfCBFRkZFQ1RfRkxBR19JTlNFUlRfRklSU1QsCisgICAgICAgIDAsIC8vIFRPRE8KKyAgICAgICAgMzMsCisgICAgICAgICJJbnNlcnQgUHJlc2V0IFJldmVyYiIsCisgICAgICAgICJHb29nbGUgSW5jLiIKK307CisKKy8vIGdEZXNjcmlwdG9ycyBjb250YWlucyBwb2ludGVycyB0byBhbGwgZGVmaW5lZCBlZmZlY3QgZGVzY3JpcHRvciBpbiB0aGlzIGxpYnJhcnkKK3N0YXRpYyBjb25zdCBlZmZlY3RfZGVzY3JpcHRvcl90ICogY29uc3QgZ0Rlc2NyaXB0b3JzW10gPSB7CisgICAgICAgICZnQXV4RW52UmV2ZXJiRGVzY3JpcHRvciwKKyAgICAgICAgJmdJbnNlcnRFbnZSZXZlcmJEZXNjcmlwdG9yLAorICAgICAgICAmZ0F1eFByZXNldFJldmVyYkRlc2NyaXB0b3IsCisgICAgICAgICZnSW5zZXJ0UHJlc2V0UmV2ZXJiRGVzY3JpcHRvcgorfTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFZmZlY3QgQVBJIGltcGxlbWVudGF0aW9uCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyotLS0gRWZmZWN0IExpYnJhcnkgSW50ZXJmYWNlIEltcGxlbWVudGF0aW9uIC0tLSovCisKK2ludCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHModWludDMyX3QgKnBOdW1FZmZlY3RzKSB7CisgICAgKnBOdW1FZmZlY3RzID0gc2l6ZW9mKGdEZXNjcmlwdG9ycykgLyBzaXplb2YoY29uc3QgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IEVmZmVjdFF1ZXJ5RWZmZWN0KHVpbnQzMl90IGluZGV4LCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikgeworICAgIGlmIChwRGVzY3JpcHRvciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICBpZiAoaW5kZXggPj0gc2l6ZW9mKGdEZXNjcmlwdG9ycykgLyBzaXplb2YoY29uc3QgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqKSkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgbWVtY3B5KHBEZXNjcmlwdG9yLCBnRGVzY3JpcHRvcnNbaW5kZXhdLAorICAgICAgICAgICAgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IEVmZmVjdENyZWF0ZShlZmZlY3RfdXVpZF90ICp1dWlkLAorICAgICAgICBpbnQzMl90IHNlc3Npb25JZCwKKyAgICAgICAgaW50MzJfdCBpb0lkLAorICAgICAgICBlZmZlY3RfaW50ZXJmYWNlX3QgKnBJbnRlcmZhY2UpIHsKKyAgICBpbnQgcmV0OworICAgIGludCBpOworICAgIHJldmVyYl9tb2R1bGVfdCAqbW9kdWxlOworICAgIGNvbnN0IGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2M7CisgICAgaW50IGF1eCA9IDA7CisgICAgaW50IHByZXNldCA9IDA7CisKKyAgICBMT0dWKCJFZmZlY3RMaWJDcmVhdGVFZmZlY3Qgc3RhcnQiKTsKKworICAgIGlmIChwSW50ZXJmYWNlID09IE5VTEwgfHwgdXVpZCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGdEZXNjcmlwdG9yc1tpXSAhPSBOVUxMOyBpKyspIHsKKyAgICAgICAgZGVzYyA9IGdEZXNjcmlwdG9yc1tpXTsKKyAgICAgICAgaWYgKG1lbWNtcCh1dWlkLCAmZGVzYy0+dXVpZCwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKQorICAgICAgICAgICAgICAgID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdEZXNjcmlwdG9yc1tpXSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRU5PRU5UOworICAgIH0KKworICAgIG1vZHVsZSA9IG1hbGxvYyhzaXplb2YocmV2ZXJiX21vZHVsZV90KSk7CisKKyAgICBtb2R1bGUtPml0ZmUgPSAmZ1JldmVyYkludGVyZmFjZTsKKworICAgIGlmIChtZW1jbXAoJmRlc2MtPnR5cGUsIFNMX0lJRF9QUkVTRVRSRVZFUkIsIHNpemVvZihlZmZlY3RfdXVpZF90KSkgPT0gMCkgeworICAgICAgICBwcmVzZXQgPSAxOworICAgIH0KKyAgICBpZiAoKGRlc2MtPmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICBhdXggPSAxOworICAgIH0KKyAgICByZXQgPSBSZXZlcmJfSW5pdChtb2R1bGUsIGF1eCwgcHJlc2V0KTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBMT0dXKCJFZmZlY3RMaWJDcmVhdGVFZmZlY3QoKSBpbml0IGZhaWxlZCIpOworICAgICAgICBmcmVlKG1vZHVsZSk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgKnBJbnRlcmZhY2UgPSAoZWZmZWN0X2ludGVyZmFjZV90KSBtb2R1bGU7CisKKyAgICBMT0dWKCJFZmZlY3RMaWJDcmVhdGVFZmZlY3QgJXAgLHNpemUgJWQiLCBtb2R1bGUsIHNpemVvZihyZXZlcmJfbW9kdWxlX3QpKTsKKworICAgIHJldHVybiAwOworfQorCitpbnQgRWZmZWN0UmVsZWFzZShlZmZlY3RfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKSB7CisgICAgcmV2ZXJiX21vZHVsZV90ICpwUnZiTW9kdWxlID0gKHJldmVyYl9tb2R1bGVfdCAqKWludGVyZmFjZTsKKworICAgIExPR1YoIkVmZmVjdExpYlJlbGVhc2VFZmZlY3QgJXAiLCBpbnRlcmZhY2UpOworICAgIGlmIChpbnRlcmZhY2UgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBmcmVlKHBSdmJNb2R1bGUpOworICAgIHJldHVybiAwOworfQorCisKKy8qLS0tIEVmZmVjdCBDb250cm9sIEludGVyZmFjZSBJbXBsZW1lbnRhdGlvbiAtLS0qLworCitzdGF0aWMgaW50IFJldmVyYl9Qcm9jZXNzKGVmZmVjdF9pbnRlcmZhY2VfdCBzZWxmLCBhdWRpb19idWZmZXJfdCAqaW5CdWZmZXIsIGF1ZGlvX2J1ZmZlcl90ICpvdXRCdWZmZXIpIHsKKyAgICByZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmI7CisgICAgaW50MTZfdCAqcFNyYywgKnBEc3Q7CisgICAgcmV2ZXJiX21vZHVsZV90ICpwUnZiTW9kdWxlID0gKHJldmVyYl9tb2R1bGVfdCAqKXNlbGY7CisKKyAgICBpZiAocFJ2Yk1vZHVsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmIChpbkJ1ZmZlciA9PSBOVUxMIHx8IGluQnVmZmVyLT5yYXcgPT0gTlVMTCB8fAorICAgICAgICBvdXRCdWZmZXIgPT0gTlVMTCB8fCBvdXRCdWZmZXItPnJhdyA9PSBOVUxMIHx8CisgICAgICAgIGluQnVmZmVyLT5mcmFtZUNvdW50ICE9IG91dEJ1ZmZlci0+ZnJhbWVDb3VudCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBwUmV2ZXJiID0gKHJldmVyYl9vYmplY3RfdCopICZwUnZiTW9kdWxlLT5jb250ZXh0OworCisgICAgLy9pZiBieXBhc3NlZCBvciB0aGUgcHJlc2V0IGZvcmNlcyB0aGUgc2lnbmFsIHRvIGJlIGNvbXBsZXRlbHkgZHJ5CisgICAgaWYgKHBSZXZlcmItPm1fYkJ5cGFzcykgeworICAgICAgICBpZiAoaW5CdWZmZXItPnJhdyAhPSBvdXRCdWZmZXItPnJhdykgeworICAgICAgICAgICAgaW50MTZfdCBzbXA7CisgICAgICAgICAgICBwU3JjID0gaW5CdWZmZXItPnMxNjsKKyAgICAgICAgICAgIHBEc3QgPSBvdXRCdWZmZXItPnMxNjsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IGluQnVmZmVyLT5mcmFtZUNvdW50OworICAgICAgICAgICAgaWYgKHBSdmJNb2R1bGUtPmNvbmZpZy5pbnB1dENmZy5jaGFubmVscyA9PSBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLmNoYW5uZWxzKSB7CisgICAgICAgICAgICAgICAgY291bnQgKj0gMjsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgICAgICAgICAqcERzdCsrID0gKnBTcmMrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgICAgICAgICAgICAgIHNtcCA9ICpwU3JjKys7CisgICAgICAgICAgICAgICAgICAgICpwRHN0KysgPSBzbXA7CisgICAgICAgICAgICAgICAgICAgICpwRHN0KysgPSBzbXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChwUmV2ZXJiLT5tX25OZXh0Um9vbSAhPSBwUmV2ZXJiLT5tX25DdXJyZW50Um9vbSkgeworICAgICAgICBSZXZlcmJVcGRhdGVSb29tKHBSZXZlcmIsIHRydWUpOworICAgIH0KKworICAgIHBTcmMgPSBpbkJ1ZmZlci0+czE2OworICAgIHBEc3QgPSBvdXRCdWZmZXItPnMxNjsKKyAgICBzaXplX3QgbnVtU2FtcGxlcyA9IG91dEJ1ZmZlci0+ZnJhbWVDb3VudDsKKyAgICB3aGlsZSAobnVtU2FtcGxlcykgeworICAgICAgICB1aW50MzJfdCBwcm9jZXNzZWRTYW1wbGVzOworICAgICAgICBpZiAobnVtU2FtcGxlcyA+ICh1aW50MzJfdCkgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5TYW1wbGVzKSB7CisgICAgICAgICAgICBwcm9jZXNzZWRTYW1wbGVzID0gKHVpbnQzMl90KSBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJblNhbXBsZXM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcm9jZXNzZWRTYW1wbGVzID0gbnVtU2FtcGxlczsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGluY3JlbWVudCB1cGRhdGUgY291bnRlciAqLworICAgICAgICBwUmV2ZXJiLT5tX25VcGRhdGVDb3VudGVyICs9IChpbnQxNl90KSBwcm9jZXNzZWRTYW1wbGVzOworICAgICAgICAvKiBjaGVjayBpZiB1cGRhdGUgY291bnRlciBuZWVkcyB0byBiZSByZXNldCAqLworICAgICAgICBpZiAocFJldmVyYi0+bV9uVXBkYXRlQ291bnRlciA+PSBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJblNhbXBsZXMpIHsKKyAgICAgICAgICAgIC8qIHVwZGF0ZSBpbnRlcnZhbCBoYXMgZWxhcHNlZCwgc28gcmVzZXQgY291bnRlciAqLworICAgICAgICAgICAgcFJldmVyYi0+bV9uVXBkYXRlQ291bnRlciAtPSBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJblNhbXBsZXM7CisgICAgICAgICAgICBSZXZlcmJVcGRhdGVYZmFkZShwUmV2ZXJiLCBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJblNhbXBsZXMpOworCisgICAgICAgIH0gLyogZW5kIGlmIG1fblVwZGF0ZUNvdW50ZXIgPj0gdXBkYXRlIGludGVydmFsICovCisKKyAgICAgICAgUmV2ZXJiKHBSZXZlcmIsIHByb2Nlc3NlZFNhbXBsZXMsIHBEc3QsIHBTcmMpOworCisgICAgICAgIG51bVNhbXBsZXMgLT0gcHJvY2Vzc2VkU2FtcGxlczsKKyAgICAgICAgaWYgKHBSZXZlcmItPm1fQXV4KSB7CisgICAgICAgICAgICBwU3JjICs9IHByb2Nlc3NlZFNhbXBsZXM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwU3JjICs9IHByb2Nlc3NlZFNhbXBsZXMgKiBOVU1fT1VUUFVUX0NIQU5ORUxTOworICAgICAgICB9CisgICAgICAgIHBEc3QgKz0gcHJvY2Vzc2VkU2FtcGxlcyAqIE5VTV9PVVRQVVRfQ0hBTk5FTFM7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgUmV2ZXJiX0NvbW1hbmQoZWZmZWN0X2ludGVyZmFjZV90IHNlbGYsIGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwKKyAgICAgICAgdm9pZCAqcENtZERhdGEsIGludCAqcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKSB7CisgICAgcmV2ZXJiX21vZHVsZV90ICpwUnZiTW9kdWxlID0gKHJldmVyYl9tb2R1bGVfdCAqKSBzZWxmOworICAgIHJldmVyYl9vYmplY3RfdCAqcFJldmVyYjsKKyAgICBpbnQgcmV0c2l6ZTsKKworICAgIGlmIChwUnZiTW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcFJldmVyYiA9IChyZXZlcmJfb2JqZWN0X3QqKSAmcFJ2Yk1vZHVsZS0+Y29udGV4dDsKKworICAgIExPR1YoIlJldmVyYl9Db21tYW5kIGNvbW1hbmQgJWQgY21kU2l6ZSAlZCIsY21kQ29kZSwgY21kU2l6ZSk7CisKKyAgICBzd2l0Y2ggKGNtZENvZGUpIHsKKyAgICBjYXNlIEVGRkVDVF9DTURfSU5JVDoKKyAgICAgICAgaWYgKHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICAqKGludCAqKSBwUmVwbHlEYXRhID0gUmV2ZXJiX0luaXQocFJ2Yk1vZHVsZSwgcFJldmVyYi0+bV9BdXgsIHBSZXZlcmItPm1fUHJlc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0NPTkZJR1VSRToKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwgfHwgY21kU2l6ZSAhPSBzaXplb2YoZWZmZWN0X2NvbmZpZ190KQorICAgICAgICAgICAgICAgIHx8IHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICAqKGludCAqKSBwUmVwbHlEYXRhID0gUmV2ZXJiX0NvbmZpZ3VyZShwUnZiTW9kdWxlLAorICAgICAgICAgICAgICAgIChlZmZlY3RfY29uZmlnX3QgKilwQ21kRGF0YSwgZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfUkVTRVQ6CisgICAgICAgIFJldmVyYl9SZXNldChwUmV2ZXJiLCBmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRUZGRUNUX0NNRF9HRVRfUEFSQU06CisgICAgICAgIExPR1YoIlJldmVyYl9Db21tYW5kIEVGRkVDVF9DTURfR0VUX1BBUkFNIHBDbWREYXRhICVwLCAqcmVwbHlTaXplICVkLCBwUmVwbHlEYXRhOiAlcCIscENtZERhdGEsICpyZXBseVNpemUsIHBSZXBseURhdGEpOworCisgICAgICAgIGlmIChwQ21kRGF0YSA9PSBOVUxMIHx8IGNtZFNpemUgPCAoaW50KShzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZW9mKGludDMyX3QpKSB8fAorICAgICAgICAgICAgcFJlcGx5RGF0YSA9PSBOVUxMIHx8ICpyZXBseVNpemUgPCAoaW50KSBzaXplb2YoZWZmZWN0X3BhcmFtX3QpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBlZmZlY3RfcGFyYW1fdCAqcmVwID0gKGVmZmVjdF9wYXJhbV90ICopIHBSZXBseURhdGE7CisgICAgICAgIG1lbWNweShwUmVwbHlEYXRhLCBwQ21kRGF0YSwgc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIExPR1YoIlJldmVyYl9Db21tYW5kIEVGRkVDVF9DTURfR0VUX1BBUkFNIHBhcmFtICVkLCByZXBseVNpemUgJWQiLCooaW50MzJfdCAqKXJlcC0+ZGF0YSwgcmVwLT52c2l6ZSk7CisgICAgICAgIHJlcC0+c3RhdHVzID0gUmV2ZXJiX2dldFBhcmFtZXRlcihwUmV2ZXJiLCAqKGludDMyX3QgKilyZXAtPmRhdGEsICZyZXAtPnZzaXplLAorICAgICAgICAgICAgICAgIHJlcC0+ZGF0YSArIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgICpyZXBseVNpemUgPSBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZW9mKGludDMyX3QpICsgcmVwLT52c2l6ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX1NFVF9QQVJBTToKKyAgICAgICAgTE9HVigiUmV2ZXJiX0NvbW1hbmQgRUZGRUNUX0NNRF9TRVRfUEFSQU0gY21kU2l6ZSAlZCBwQ21kRGF0YSAlcCwgKnJlcGx5U2l6ZSAlZCwgcFJlcGx5RGF0YSAlcCIsCisgICAgICAgICAgICAgICAgY21kU2l6ZSwgcENtZERhdGEsICpyZXBseVNpemUsIHBSZXBseURhdGEpOworICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCAoY21kU2l6ZSA8IChpbnQpKHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBzaXplb2YoaW50MzJfdCkpKQorICAgICAgICAgICAgICAgIHx8IHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IChpbnQpc2l6ZW9mKGludDMyX3QpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBlZmZlY3RfcGFyYW1fdCAqY21kID0gKGVmZmVjdF9wYXJhbV90ICopIHBDbWREYXRhOworICAgICAgICAqKGludCAqKXBSZXBseURhdGEgPSBSZXZlcmJfc2V0UGFyYW1ldGVyKHBSZXZlcmIsICooaW50MzJfdCAqKWNtZC0+ZGF0YSwKKyAgICAgICAgICAgICAgICBjbWQtPnZzaXplLCBjbWQtPmRhdGEgKyBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfRU5BQkxFOgorICAgIGNhc2UgRUZGRUNUX0NNRF9ESVNBQkxFOgorICAgICAgICBpZiAocFJlcGx5RGF0YSA9PSBOVUxMIHx8ICpyZXBseVNpemUgIT0gc2l6ZW9mKGludCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgICooaW50ICopcFJlcGx5RGF0YSA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRUZGRUNUX0NNRF9TRVRfREVWSUNFOgorICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCBjbWRTaXplICE9IChpbnQpc2l6ZW9mKHVpbnQzMl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgTE9HVigiUmV2ZXJiX0NvbW1hbmQgRUZGRUNUX0NNRF9TRVRfREVWSUNFOiAweCUwOHgiLCAqKHVpbnQzMl90ICopcENtZERhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX1ZPTFVNRTogeworICAgICAgICAvLyBhdWRpbyBvdXRwdXQgaXMgYWx3YXlzIHN0ZXJlbyA9PiAyIGNoYW5uZWwgdm9sdW1lcworICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCBjbWRTaXplICE9IChpbnQpc2l6ZW9mKHVpbnQzMl90KSAqIDIpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgIGZsb2F0IGxlZnQgPSAoZmxvYXQpKCoodWludDMyX3QgKilwQ21kRGF0YSkgLyAoMSA8PCAyNCk7CisgICAgICAgIGZsb2F0IHJpZ2h0ID0gKGZsb2F0KSgqKCh1aW50MzJfdCAqKXBDbWREYXRhICsgMSkpIC8gKDEgPDwgMjQpOworICAgICAgICBMT0dWKCJSZXZlcmJfQ29tbWFuZCBFRkZFQ1RfQ01EX1NFVF9WT0xVTUU6IGxlZnQgJWYsIHJpZ2h0ICVmICIsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX0FVRElPX01PREU6CisgICAgICAgIGlmIChwQ21kRGF0YSA9PSBOVUxMIHx8IGNtZFNpemUgIT0gKGludClzaXplb2YodWludDMyX3QpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBMT0dWKCJSZXZlcmJfQ29tbWFuZCBFRkZFQ1RfQ01EX1NFVF9BVURJT19NT0RFOiAlZCIsICoodWludDMyX3QgKilwQ21kRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIExPR1coIlJldmVyYl9Db21tYW5kIGludmFsaWQgY29tbWFuZCAlZCIsY21kQ29kZSk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiIGludGVybmFsIGZ1bmN0aW9ucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiX0luaXQoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogSW5pdGlhbGl6ZSByZXZlcmIgY29udGV4dCBhbmQgYXBwbHkgZGVmYXVsdCBwYXJhbWV0ZXJzCisgKgorICogSW5wdXRzOgorICogIHBSdmJNb2R1bGUgICAgLSBwb2ludGVyIHRvIHJldmVyYiBlZmZlY3QgbW9kdWxlCisgKiAgYXV4ICAgICAgICAgICAtIGluZGljYXRlcyBpZiB0aGUgcmV2ZXJiIGlzIHVzZWQgYXMgYXV4aWxpYXJ5ICgxKSBvciBpbnNlcnQgKDApCisgKiAgcHJlc2V0ICAgICAgICAtIGluZGljYXRlcyBpZiB0aGUgcmV2ZXJiIGlzIHVzZWQgaW4gcHJlc2V0ICgxKSBvciBlbnZpcm9ubWVudGFsICgwKSBtb2RlCisgKgorICogT3V0cHV0czoKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworaW50IFJldmVyYl9Jbml0KHJldmVyYl9tb2R1bGVfdCAqcFJ2Yk1vZHVsZSwgaW50IGF1eCwgaW50IHByZXNldCkgeworICAgIGludCByZXQ7CisKKyAgICBMT0dWKCJSZXZlcmJfSW5pdCBtb2R1bGUgJXAsIGF1eDogJWQsIHByZXNldDogJWQiLCBwUnZiTW9kdWxlLGF1eCwgcHJlc2V0KTsKKworICAgIG1lbXNldCgmcFJ2Yk1vZHVsZS0+Y29udGV4dCwgMCwgc2l6ZW9mKHJldmVyYl9vYmplY3RfdCkpOworCisgICAgcFJ2Yk1vZHVsZS0+Y29udGV4dC5tX0F1eCA9ICh1aW50MTZfdClhdXg7CisgICAgcFJ2Yk1vZHVsZS0+Y29udGV4dC5tX1ByZXNldCA9ICh1aW50MTZfdClwcmVzZXQ7CisKKyAgICBwUnZiTW9kdWxlLT5jb25maWcuaW5wdXRDZmcuc2FtcGxpbmdSYXRlID0gNDQxMDA7CisgICAgaWYgKGF1eCkgeworICAgICAgICBwUnZiTW9kdWxlLT5jb25maWcuaW5wdXRDZmcuY2hhbm5lbHMgPSBDSEFOTkVMX01PTk87CisgICAgfSBlbHNlIHsKKyAgICAgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLmlucHV0Q2ZnLmNoYW5uZWxzID0gQ0hBTk5FTF9TVEVSRU87CisgICAgfQorICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5pbnB1dENmZy5mb3JtYXQgPSBTQU1QTEVfRk9STUFUX1BDTV9TMTU7CisgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmdldEJ1ZmZlciA9IE5VTEw7CisgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLnJlbGVhc2VCdWZmZXIgPSBOVUxMOworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5pbnB1dENmZy5idWZmZXJQcm92aWRlci5jb29raWUgPSBOVUxMOworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5pbnB1dENmZy5hY2Nlc3NNb2RlID0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfUkVBRDsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcuaW5wdXRDZmcubWFzayA9IEVGRkVDVF9DT05GSUdfQUxMOworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5vdXRwdXRDZmcuc2FtcGxpbmdSYXRlID0gNDQxMDA7CisgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLm91dHB1dENmZy5jaGFubmVscyA9IENIQU5ORUxfU1RFUkVPOworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5vdXRwdXRDZmcuZm9ybWF0ID0gU0FNUExFX0ZPUk1BVF9QQ01fUzE1OworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyUHJvdmlkZXIuZ2V0QnVmZmVyID0gTlVMTDsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLnJlbGVhc2VCdWZmZXIgPSBOVUxMOworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyUHJvdmlkZXIuY29va2llID0gTlVMTDsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLmFjY2Vzc01vZGUgPSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19BQ0NVTVVMQVRFOworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5vdXRwdXRDZmcubWFzayA9IEVGRkVDVF9DT05GSUdfQUxMOworCisgICAgcmV0ID0gUmV2ZXJiX0NvbmZpZ3VyZShwUnZiTW9kdWxlLCAmcFJ2Yk1vZHVsZS0+Y29uZmlnLCB0cnVlKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBMT0dWKCJSZXZlcmJfSW5pdCBlcnJvciAlZCBvbiBtb2R1bGUgJXAiLCByZXQsIHBSdmJNb2R1bGUpOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiX0luaXQoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogIFNldCBpbnB1dCBhbmQgb3V0cHV0IGF1ZGlvIGNvbmZpZ3VyYXRpb24uCisgKgorICogSW5wdXRzOgorICogIHBSdmJNb2R1bGUgICAgLSBwb2ludGVyIHRvIHJldmVyYiBlZmZlY3QgbW9kdWxlCisgKiAgcENvbmZpZyAgICAgICAtIHBvaW50ZXIgdG8gZWZmZWN0X2NvbmZpZ190IHN0cnVjdHVyZSBjb250YWluaW5nIGlucHV0CisgKiAgICAgICAgICAgICAgYW5kIG91dHB1dCBhdWRpbyBwYXJhbWV0ZXJzIGNvbmZpZ3VyYXRpb24KKyAqICBpbml0ICAgICAgICAgIC0gdHJ1ZSBpZiBjYWxsZWQgZnJvbSBpbml0IGZ1bmN0aW9uCisgKiBPdXRwdXRzOgorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitpbnQgUmV2ZXJiX0NvbmZpZ3VyZShyZXZlcmJfbW9kdWxlX3QgKnBSdmJNb2R1bGUsIGVmZmVjdF9jb25maWdfdCAqcENvbmZpZywKKyAgICAgICAgYm9vbCBpbml0KSB7CisgICAgcmV2ZXJiX29iamVjdF90ICpwUmV2ZXJiID0gJnBSdmJNb2R1bGUtPmNvbnRleHQ7CisgICAgaW50IGJ1ZmZlclNpemVJblNhbXBsZXM7CisgICAgaW50IHVwZGF0ZVBlcmlvZEluU2FtcGxlczsKKyAgICBpbnQgeGZhZGVQZXJpb2RJblNhbXBsZXM7CisKKyAgICAvLyBDaGVjayBjb25maWd1cmF0aW9uIGNvbXBhdGliaWxpdHkgd2l0aCBidWlsZCBvcHRpb25zCisgICAgaWYgKHBDb25maWctPmlucHV0Q2ZnLnNhbXBsaW5nUmF0ZQorICAgICAgICAhPSBwQ29uZmlnLT5vdXRwdXRDZmcuc2FtcGxpbmdSYXRlCisgICAgICAgIHx8IHBDb25maWctPm91dHB1dENmZy5jaGFubmVscyAhPSBPVVRQVVRfQ0hBTk5FTFMKKyAgICAgICAgfHwgcENvbmZpZy0+aW5wdXRDZmcuZm9ybWF0ICE9IFNBTVBMRV9GT1JNQVRfUENNX1MxNQorICAgICAgICB8fCBwQ29uZmlnLT5vdXRwdXRDZmcuZm9ybWF0ICE9IFNBTVBMRV9GT1JNQVRfUENNX1MxNSkgeworICAgICAgICBMT0dWKCJSZXZlcmJfQ29uZmlndXJlIGludmFsaWQgY29uZmlnIik7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICBpZiAoKHBSZXZlcmItPm1fQXV4ICYmIChwQ29uZmlnLT5pbnB1dENmZy5jaGFubmVscyAhPSBDSEFOTkVMX01PTk8pKSB8fAorICAgICAgICAoIXBSZXZlcmItPm1fQXV4ICYmIChwQ29uZmlnLT5pbnB1dENmZy5jaGFubmVscyAhPSBDSEFOTkVMX1NURVJFTykpKSB7CisgICAgICAgIExPR1YoIlJldmVyYl9Db25maWd1cmUgaW52YWxpZCBjb25maWciKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgbWVtY3B5KCZwUnZiTW9kdWxlLT5jb25maWcsIHBDb25maWcsIHNpemVvZihlZmZlY3RfY29uZmlnX3QpKTsKKworICAgIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSA9IHBSdmJNb2R1bGUtPmNvbmZpZy5vdXRwdXRDZmcuc2FtcGxpbmdSYXRlOworCisgICAgc3dpdGNoIChwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpIHsKKyAgICBjYXNlIDgwMDA6CisgICAgICAgIHBSZXZlcmItPm1fblVwZGF0ZVBlcmlvZEluQml0cyA9IDU7CisgICAgICAgIGJ1ZmZlclNpemVJblNhbXBsZXMgPSA0MDk2OworICAgICAgICBwUmV2ZXJiLT5tX25Db3NXVF81S0h6ID0gLTIzMTcwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE2MDAwOgorICAgICAgICBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJbkJpdHMgPSA2OworICAgICAgICBidWZmZXJTaXplSW5TYW1wbGVzID0gODE5MjsKKyAgICAgICAgcFJldmVyYi0+bV9uQ29zV1RfNUtIeiA9IC0xMjU0MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyMjA1MDoKKyAgICAgICAgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5CaXRzID0gNzsKKyAgICAgICAgYnVmZmVyU2l6ZUluU2FtcGxlcyA9IDgxOTI7CisgICAgICAgIHBSZXZlcmItPm1fbkNvc1dUXzVLSHogPSA0NzY4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDMyMDAwOgorICAgICAgICBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJbkJpdHMgPSA3OworICAgICAgICBidWZmZXJTaXplSW5TYW1wbGVzID0gMTYzODQ7CisgICAgICAgIHBSZXZlcmItPm1fbkNvc1dUXzVLSHogPSAxODIwNTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0NDEwMDoKKyAgICAgICAgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5CaXRzID0gODsKKyAgICAgICAgYnVmZmVyU2l6ZUluU2FtcGxlcyA9IDE2Mzg0OworICAgICAgICBwUmV2ZXJiLT5tX25Db3NXVF81S0h6ID0gMjQ3OTk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDgwMDA6CisgICAgICAgIHBSZXZlcmItPm1fblVwZGF0ZVBlcmlvZEluQml0cyA9IDg7CisgICAgICAgIGJ1ZmZlclNpemVJblNhbXBsZXMgPSAxNjM4NDsKKyAgICAgICAgcFJldmVyYi0+bV9uQ29zV1RfNUtIeiA9IDI1OTk3OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBMT0dWKCJSZXZlcmJfQ29uZmlndXJlIGludmFsaWQgc2FtcGxpbmcgcmF0ZSAlZCIsIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIC8vIERlZmluZSBhIG1hc2sgZm9yIGNpcmN1bGFyIGFkZHJlc3NpbmcsIHNvIHRoYXQgYXJyYXkgaW5kZXgKKyAgICAvLyBjYW4gd3JhcGFyb3VuZCBhbmQgc3RheSBpbiBhcnJheSBib3VuZGFyeSBvZiAwLCAxLCAuLi4sIChidWZmZXIgc2l6ZSAtMSkKKyAgICAvLyBUaGUgYnVmZmVyIHNpemUgTVVTVCBiZSBhIHBvd2VyIG9mIHR3bworICAgIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2sgPSAoaW50MzJfdCkgKGJ1ZmZlclNpemVJblNhbXBsZXMgLSAxKTsKKyAgICAvKiByZXZlcmIgcGFyYW1ldGVycyBhcmUgdXBkYXRlZCBldmVyeSAyXihwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJbkJpdHMpIHNhbXBsZXMgKi8KKyAgICB1cGRhdGVQZXJpb2RJblNhbXBsZXMgPSAoaW50MzJfdCkgKDB4MUwgPDwgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5CaXRzKTsKKyAgICAvKgorICAgICBjYWxjdWxhdGUgdGhlIHVwZGF0ZSBjb3VudGVyIGJ5IGJpdHdpc2UgQU5ESU5HIHdpdGggdGhpcyB2YWx1ZSB0bworICAgICBnZW5lcmF0ZSBhIDJebiBtb2R1bG8gdmFsdWUKKyAgICAgKi8KKyAgICBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJblNhbXBsZXMgPSAoaW50MzJfdCkgdXBkYXRlUGVyaW9kSW5TYW1wbGVzOworCisgICAgeGZhZGVQZXJpb2RJblNhbXBsZXMgPSAoaW50MzJfdCkgKFJFVkVSQl9YRkFERV9QRVJJT0RfSU5fU0VDT05EUworICAgICAgICAgICAgKiAoZG91YmxlKSBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpOworCisgICAgLy8gc2V0IHhmYWRlIHBhcmFtZXRlcnMKKyAgICBwUmV2ZXJiLT5tX25QaGFzZUluY3JlbWVudAorICAgICAgICAgICAgPSAoaW50MTZfdCkgKDY1NTM2IC8gKChpbnQxNl90KSB4ZmFkZVBlcmlvZEluU2FtcGxlcworICAgICAgICAgICAgICAgICAgICAvIChpbnQxNl90KSB1cGRhdGVQZXJpb2RJblNhbXBsZXMpKTsKKworICAgIGlmIChpbml0KSB7CisgICAgICAgIFJldmVyYlJlYWRJblByZXNldHMocFJldmVyYik7CisKKyAgICAgICAgLy8gZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgYWxsb3cgbm9pc2UgZ2VuZXJhdG9yCisgICAgICAgIHBSZXZlcmItPm1fYlVzZU5vaXNlID0gdHJ1ZTsKKworICAgICAgICAvLyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBhbGxvdyBieXBhc3MKKyAgICAgICAgcFJldmVyYi0+bV9iQnlwYXNzID0gZmFsc2U7CisKKyAgICAgICAgcFJldmVyYi0+bV9uTmV4dFJvb20gPSAxOworCisgICAgICAgIHBSZXZlcmItPm1fbk5vaXNlID0gKGludDE2X3QpIDB4QUJDRDsKKyAgICB9CisKKyAgICBSZXZlcmJfUmVzZXQocFJldmVyYiwgaW5pdCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJfUmVzZXQoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogIFJlc2V0IGludGVybmFsIHN0YXRlcyBhbmQgY2xlYXIgZGVsYXkgbGluZXMuCisgKgorICogSW5wdXRzOgorICogIHBSZXZlcmIgICAgLSBwb2ludGVyIHRvIHJldmVyYiBjb250ZXh0CisgKiAgaW5pdCAgICAgICAtIHRydWUgaWYgY2FsbGVkIGZyb20gaW5pdCBmdW5jdGlvbgorICoKKyAqIE91dHB1dHM6CisgKgorICogU2lkZSBFZmZlY3RzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK3ZvaWQgUmV2ZXJiX1Jlc2V0KHJldmVyYl9vYmplY3RfdCAqcFJldmVyYiwgYm9vbCBpbml0KSB7CisgICAgaW50IGJ1ZmZlclNpemVJblNhbXBsZXMgPSAoaW50MzJfdCkgKHBSZXZlcmItPm1fbkJ1ZmZlck1hc2sgKyAxKTsKKyAgICBpbnQgbWF4QXBTYW1wbGVzOworICAgIGludCBtYXhEZWxheVNhbXBsZXM7CisgICAgaW50IG1heEVhcmx5U2FtcGxlczsKKyAgICBpbnQgYXAxSW47CisgICAgaW50IGRlbGF5MEluOworICAgIGludCBkZWxheTFJbjsKKyAgICBpbnQzMl90IGk7CisgICAgdWludDE2X3Qgbk9mZnNldDsKKworICAgIG1heEFwU2FtcGxlcyA9ICgoaW50MzJfdCkgKE1BWF9BUF9USU1FICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNik7CisgICAgbWF4RGVsYXlTYW1wbGVzID0gKChpbnQzMl90KSAoTUFYX0RFTEFZX1RJTUUgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpCisgICAgICAgICAgICA+PiAxNik7CisgICAgbWF4RWFybHlTYW1wbGVzID0gKChpbnQzMl90KSAoTUFYX0VBUkxZX1RJTUUgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpCisgICAgICAgICAgICA+PiAxNik7CisKKyAgICBhcDFJbiA9IChBUDBfSU4gKyBtYXhBcFNhbXBsZXMgKyBHVUFSRCk7CisgICAgZGVsYXkwSW4gPSAoYXAxSW4gKyBtYXhBcFNhbXBsZXMgKyBHVUFSRCk7CisgICAgZGVsYXkxSW4gPSAoZGVsYXkwSW4gKyBtYXhEZWxheVNhbXBsZXMgKyBHVUFSRCk7CisgICAgLy8gRGVmaW5lIHRoZSBtYXggb2Zmc2V0cyBmb3IgdGhlIGVuZCBwb2ludHMgb2YgZWFjaCBzZWN0aW9uCisgICAgLy8gaS5lLiwgd2UgZG9uJ3QgZXhwZWN0IGEgZ2l2ZW4gc2VjdGlvbidzIHRhcHMgdG8gZ28gYmV5b25kCisgICAgLy8gdGhlIGZvbGxvd2luZyBsaW1pdHMKKworICAgIHBSZXZlcmItPm1fbkVhcmx5MGluID0gKGRlbGF5MUluICsgbWF4RGVsYXlTYW1wbGVzICsgR1VBUkQpOworICAgIHBSZXZlcmItPm1fbkVhcmx5MWluID0gKHBSZXZlcmItPm1fbkVhcmx5MGluICsgbWF4RWFybHlTYW1wbGVzICsgR1VBUkQpOworCisgICAgcFJldmVyYi0+bV9zQXAwLm1fekFwSW4gPSBBUDBfSU47CisKKyAgICBwUmV2ZXJiLT5tX3pEMEluID0gZGVsYXkwSW47CisKKyAgICBwUmV2ZXJiLT5tX3NBcDEubV96QXBJbiA9IGFwMUluOworCisgICAgcFJldmVyYi0+bV96RDFJbiA9IGRlbGF5MUluOworCisgICAgcFJldmVyYi0+bV96T3V0THBmTCA9IDA7CisgICAgcFJldmVyYi0+bV96T3V0THBmUiA9IDA7CisKKyAgICBwUmV2ZXJiLT5tX25SZXZGYmtSID0gMDsKKyAgICBwUmV2ZXJiLT5tX25SZXZGYmtMID0gMDsKKworICAgIC8vIHNldCBiYXNlIGluZGV4IGludG8gY2lyY3VsYXIgYnVmZmVyCisgICAgcFJldmVyYi0+bV9uQmFzZUluZGV4ID0gMDsKKworICAgIC8vIGNsZWFyIHRoZSByZXZlcmIgZGVsYXkgbGluZQorICAgIGZvciAoaSA9IDA7IGkgPCBidWZmZXJTaXplSW5TYW1wbGVzOyBpKyspIHsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXlMaW5lW2ldID0gMDsKKyAgICB9CisKKyAgICBSZXZlcmJVcGRhdGVSb29tKHBSZXZlcmIsIGluaXQpOworCisgICAgcFJldmVyYi0+bV9uVXBkYXRlQ291bnRlciA9IDA7CisKKyAgICBwUmV2ZXJiLT5tX25QaGFzZSA9IC0zMjc2ODsKKworICAgIHBSZXZlcmItPm1fblNpbiA9IDA7CisgICAgcFJldmVyYi0+bV9uQ29zID0gMDsKKyAgICBwUmV2ZXJiLT5tX25TaW5JbmNyZW1lbnQgPSAwOworICAgIHBSZXZlcmItPm1fbkNvc0luY3JlbWVudCA9IDA7CisKKyAgICAvLyBzZXQgZGVsYXkgdGFwIGxlbmd0aHMKKyAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICBwUmV2ZXJiLT5tX3pEMUNyb3NzID0gcFJldmVyYi0+bV9uRGVsYXkxT3V0IC0gcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uCisgICAgICAgICAgICArIG5PZmZzZXQ7CisKKyAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICBwUmV2ZXJiLT5tX3pEMENyb3NzID0gcFJldmVyYi0+bV9uRGVsYXkwT3V0IC0gcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uCisgICAgICAgICAgICAtIG5PZmZzZXQ7CisKKyAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICBwUmV2ZXJiLT5tX3pEMFNlbGYgPSBwUmV2ZXJiLT5tX25EZWxheTBPdXQgLSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb24KKyAgICAgICAgICAgIC0gbk9mZnNldDsKKworICAgIG5PZmZzZXQgPSBSZXZlcmJDYWxjdWxhdGVOb2lzZShwUmV2ZXJiKTsKKworICAgIHBSZXZlcmItPm1fekQxU2VsZiA9IHBSZXZlcmItPm1fbkRlbGF5MU91dCAtIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbgorICAgICAgICAgICAgKyBuT2Zmc2V0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYl9nZXRQYXJhbWV0ZXIoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogR2V0IGEgUmV2ZXJiIHBhcmFtZXRlcgorICoKKyAqIElucHV0czoKKyAqICBwUmV2ZXJiICAgICAgIC0gaGFuZGxlIHRvIGluc3RhbmNlIGRhdGEKKyAqICBwYXJhbSAgICAgICAgIC0gcGFyYW1ldGVyCisgKiAgcFZhbHVlICAgICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgdG8gaG9sZCByZXRyaWV2ZWQgdmFsdWUKKyAqICBwU2l6ZSAgICAgICAgIC0gcG9pbnRlciB0byB2YWx1ZSBzaXplOiBtYXhpbXVtIHNpemUgYXMgaW5wdXQKKyAqCisgKiBPdXRwdXRzOgorICogICpwVmFsdWUgdXBkYXRlZCB3aXRoIHBhcmFtZXRlciB2YWx1ZQorICogICpwU2l6ZSB1cGRhdGVkIHdpdGggYWN0dWFsIHZhbHVlIHNpemUKKyAqCisgKgorICogU2lkZSBFZmZlY3RzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQgUmV2ZXJiX2dldFBhcmFtZXRlcihyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmIsIGludDMyX3QgcGFyYW0sIHNpemVfdCAqcFNpemUsCisgICAgICAgIHZvaWQgKnBWYWx1ZSkgeworICAgIGludDMyX3QgKnBWYWx1ZTMyOworICAgIGludDE2X3QgKnBWYWx1ZTE2OworICAgIHRfcmV2ZXJiX3Byb3BlcnRpZXMgKnBQcm9wZXJ0aWVzOworICAgIGludDMyX3QgaTsKKyAgICBpbnQzMl90IHRlbXA7CisgICAgaW50MzJfdCB0ZW1wMjsKKyAgICBzaXplX3Qgc2l6ZTsKKworICAgIGlmIChwUmV2ZXJiLT5tX1ByZXNldCAmJiBwYXJhbSAhPSBSRVZFUkJfUEFSQU1fUFJFU0VUKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICBpZiAoIXBSZXZlcmItPm1fUHJlc2V0ICYmIHBhcmFtID09IFJFVkVSQl9QQVJBTV9QUkVTRVQpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JPT01fTEVWRUw6CisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTDoKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTzoKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19MRVZFTDoKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRVZFUkJfTEVWRUw6CisgICAgY2FzZSBSRVZFUkJfUEFSQU1fRElGRlVTSU9OOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RFTlNJVFk6CisgICAgICAgIHNpemUgPSBzaXplb2YoaW50MTZfdCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fQllQQVNTOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX1BSRVNFVDoKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERUNBWV9USU1FOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0RFTEFZOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFVkVSQl9ERUxBWToKKyAgICAgICAgc2l6ZSA9IHNpemVvZihpbnQzMl90KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9QUk9QRVJUSUVTOgorICAgICAgICBzaXplID0gc2l6ZW9mKHRfcmV2ZXJiX3Byb3BlcnRpZXMpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmICgqcFNpemUgPCBzaXplKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICAqcFNpemUgPSBzaXplOworICAgIHBWYWx1ZTMyID0gKGludDMyX3QgKikgcFZhbHVlOworICAgIHBWYWx1ZTE2ID0gKGludDE2X3QgKikgcFZhbHVlOworICAgIHBQcm9wZXJ0aWVzID0gKHRfcmV2ZXJiX3Byb3BlcnRpZXMgKikgcFZhbHVlOworCisgICAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgUkVWRVJCX1BBUkFNX0JZUEFTUzoKKyAgICAgICAgKihpbnQzMl90ICopIHBWYWx1ZSA9IChpbnQzMl90KSBwUmV2ZXJiLT5tX2JCeXBhc3M7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUkVWRVJCX1BBUkFNX1BSRVNFVDoKKyAgICAgICAgKihpbnQzMl90ICopIHBWYWx1ZSA9IChpbnQ4X3QpIHBSZXZlcmItPm1fbkN1cnJlbnRSb29tOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUkVWRVJCX1BBUkFNX1BST1BFUlRJRVM6CisgICAgICAgIHBWYWx1ZTE2ID0gJnBQcm9wZXJ0aWVzLT5yb29tTGV2ZWw7CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUk9PTV9MRVZFTDoKKyAgICAgICAgLy8gQ29udmVydCBtX25Sb29tTHBmRndkIHRvIG1pbGxpYmVscworICAgICAgICB0ZW1wID0gKHBSZXZlcmItPm1fblJvb21McGZGd2QgPDwgMTUpCisgICAgICAgICAgICAgICAgLyAoMzI3NjcgLSBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrKTsKKyAgICAgICAgKnBWYWx1ZTE2ID0gRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHRlbXApOworCisgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fUk9PTV9MRVZFTCAlZCwgZ2FpbiAlZCwgbV9uUm9vbUxwZkZ3ZCAlZCwgbV9uUm9vbUxwZkZiayAlZCIsICpwVmFsdWUxNiwgdGVtcCwgcFJldmVyYi0+bV9uUm9vbUxwZkZ3ZCwgcFJldmVyYi0+bV9uUm9vbUxwZkZiayk7CisKKyAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9ST09NX0xFVkVMKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBwVmFsdWUxNiA9ICZwUHJvcGVydGllcy0+cm9vbUhGTGV2ZWw7CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTDoKKyAgICAgICAgLy8gVGhlIHJhdGlvIGJldHdlZW4gbGluZWFyIGdhaW4gYXQgMEh6IGFuZCBhdCA1MDAwSHogZm9yIHRoZSByb29tIGxvdyBwYXNzIGlzOgorICAgICAgICAvLyAoMSArIGExKSAvIHNxcnQoYTFeMiArIDIqQyphMSArIDEpIHdoZXJlOgorICAgICAgICAvLyAtIGExIGlzIG1pbnVzIHRoZSBMUCBmZWVkYmFjayBnYWluOiAtcFJldmVyYi0+bV9uUm9vbUxwZkZiaworICAgICAgICAvLyAtIEMgaXMgY29zKDJwaVdUKSBAIDUwMDBIejogcFJldmVyYi0+bV9uQ29zV1RfNUtIegorCisgICAgICAgIHRlbXAgPSBNVUxUX0VHMV9FRzEocFJldmVyYi0+bV9uUm9vbUxwZkZiaywgcFJldmVyYi0+bV9uUm9vbUxwZkZiayk7CisgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgYTFeMiAlZCIsIHRlbXApOworICAgICAgICB0ZW1wMiA9IE1VTFRfRUcxX0VHMShwUmV2ZXJiLT5tX25Sb29tTHBmRmJrLCBwUmV2ZXJiLT5tX25Db3NXVF81S0h6KQorICAgICAgICAgICAgICAgIDw8IDE7CisgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgMiBDb3MgYTEgJWQiLCB0ZW1wMik7CisgICAgICAgIHRlbXAgPSAzMjc2NyArIHRlbXAgLSB0ZW1wMjsKKyAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMLCBhMV4yICsgMiBDb3MgYTEgKyAxICVkIiwgdGVtcCk7CisgICAgICAgIHRlbXAgPSBFZmZlY3RzX1NxcnQodGVtcCkgKiAxODE7CisgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgU1FSVChhMV4yICsgMiBDb3MgYTEgKyAxKSAlZCIsIHRlbXApOworICAgICAgICB0ZW1wID0gKCgzMjc2NyAtIHBSZXZlcmItPm1fblJvb21McGZGYmspIDw8IDE1KSAvIHRlbXA7CisKKyAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMLCBnYWluICVkLCBtX25Sb29tTHBmRndkICVkLCBtX25Sb29tTHBmRmJrICVkIiwgdGVtcCwgcFJldmVyYi0+bV9uUm9vbUxwZkZ3ZCwgcFJldmVyYi0+bV9uUm9vbUxwZkZiayk7CisKKyAgICAgICAgKnBWYWx1ZTE2ID0gRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHRlbXApOworCisgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcFZhbHVlMzIgPSAmcFByb3BlcnRpZXMtPmRlY2F5VGltZTsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERUNBWV9USU1FOgorICAgICAgICAvLyBDYWxjdWxhdGUgcmV2ZXJiIGZlZWRiYWNrIHBhdGggZ2FpbgorICAgICAgICB0ZW1wID0gKHBSZXZlcmItPm1fblJ2YkxwZkZ3ZCA8PCAxNSkgLyAoMzI3NjcgLSBwUmV2ZXJiLT5tX25SdmJMcGZGYmspOworICAgICAgICB0ZW1wID0gRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHRlbXApOworCisgICAgICAgIC8vIENhbGN1bGF0ZSBkZWNheSB0aW1lOiBnID0gLTYwMDAgZC9EVCAsIGcgZ2FpbiBpbiBtaWxsaWJlbHMsIGQgcmV2ZXJiIGRlbGF5LCBEVCBkZWNheSB0aW1lCisgICAgICAgIHRlbXAgPSAoLTYwMDAgKiBwUmV2ZXJiLT5tX25MYXRlRGVsYXkpIC8gdGVtcDsKKworICAgICAgICAvLyBDb252ZXJ0IHNhbXBsZXMgdG8gbXMKKyAgICAgICAgKnBWYWx1ZTMyID0gKHRlbXAgKiAxMDAwKSAvIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZTsKKworICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX0RFQ0FZX1RJTUUsIHNhbXBsZXMgJWQsIG1zICVkIiwgdGVtcCwgKnBWYWx1ZTMyKTsKKworICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX0RFQ0FZX1RJTUUpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHBWYWx1ZTE2ID0gJnBQcm9wZXJ0aWVzLT5kZWNheUhGUmF0aW87CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU86CisgICAgICAgIC8vIElmIHIgaXMgdGhlIGRlY2F5IEhGIHJhdGlvICAociA9IFJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTy8xMDAwKSB3ZSBoYXZlOgorICAgICAgICAvLyAgICAgICBEVF81MDAwSHogPSBEVF8wSHogKiByCisgICAgICAgIC8vICBhbmQgIEdfNTAwMEh6ID0gLTYwMDAgKiBkIC8gRFRfNTAwMEh6IGFuZCBHXzBIeiA9IC02MDAwICogZCAvIERUXzBIeiBpbiBtaWxsaWJlbHMgc28gOgorICAgICAgICAvLyByID0gR18wSHovR181MDAwSHogaW4gbWlsbGliZWxzCisgICAgICAgIC8vIFRoZSBsaW5lYXIgZ2FpbiBhdCA1MDAwSHogaXMgYjAgLyBzcXJ0KGExXjIgKyAyKkMqYTEgKyAxKSB3aGVyZToKKyAgICAgICAgLy8gLSBhMSBpcyBtaW51cyB0aGUgTFAgZmVlZGJhY2sgZ2FpbjogLXBSZXZlcmItPm1fblJ2YkxwZkZiaworICAgICAgICAvLyAtIGIwIGlzIHRoZSBMUCBmb3J3YXJkIGdhaW46IHBSZXZlcmItPm1fblJ2YkxwZkZ3ZAorICAgICAgICAvLyAtIEMgaXMgY29zKDJwaVdUKSBAIDUwMDBIejogcFJldmVyYi0+bV9uQ29zV1RfNUtIegorICAgICAgICBpZiAocFJldmVyYi0+bV9uUnZiTHBmRmJrID09IDApIHsKKyAgICAgICAgICAgICpwVmFsdWUxNiA9IDEwMDA7CisgICAgICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPLCBwUmV2ZXJiLT5tX25SdmJMcGZGYmsgPT0gMCwgcmF0aW8gJWQiLCAqcFZhbHVlMTYpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVtcCA9IE1VTFRfRUcxX0VHMShwUmV2ZXJiLT5tX25SdmJMcGZGYmssIHBSZXZlcmItPm1fblJ2YkxwZkZiayk7CisgICAgICAgICAgICB0ZW1wMiA9IE1VTFRfRUcxX0VHMShwUmV2ZXJiLT5tX25SdmJMcGZGYmssIHBSZXZlcmItPm1fbkNvc1dUXzVLSHopCisgICAgICAgICAgICAgICAgICAgIDw8IDE7CisgICAgICAgICAgICB0ZW1wID0gMzI3NjcgKyB0ZW1wIC0gdGVtcDI7CisgICAgICAgICAgICB0ZW1wID0gRWZmZWN0c19TcXJ0KHRlbXApICogMTgxOworICAgICAgICAgICAgdGVtcCA9IChwUmV2ZXJiLT5tX25SdmJMcGZGd2QgPDwgMTUpIC8gdGVtcDsKKyAgICAgICAgICAgIC8vIFRoZSBsaW5lYXIgZ2FpbiBhdCAwSHogaXMgYjAgLyAoYTEgKyAxKQorICAgICAgICAgICAgdGVtcDIgPSAocFJldmVyYi0+bV9uUnZiTHBmRndkIDw8IDE1KSAvICgzMjc2NworICAgICAgICAgICAgICAgICAgICAtIHBSZXZlcmItPm1fblJ2YkxwZkZiayk7CisKKyAgICAgICAgICAgIHRlbXAgPSBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHModGVtcCk7CisgICAgICAgICAgICB0ZW1wMiA9IEVmZmVjdHNfTGluZWFyMTZUb01pbGxpYmVscyh0ZW1wMik7CisgICAgICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPLCBnYWluIDVLSHogJWQgbUIsIGdhaW4gREMgJWQgbUIiLCB0ZW1wLCB0ZW1wMik7CisKKyAgICAgICAgICAgIGlmICh0ZW1wID09IDApCisgICAgICAgICAgICAgICAgdGVtcCA9IDE7CisgICAgICAgICAgICB0ZW1wID0gKGludDE2X3QpICgoMTAwMCAqIHRlbXAyKSAvIHRlbXApOworICAgICAgICAgICAgaWYgKHRlbXAgPiAxMDAwKQorICAgICAgICAgICAgICAgIHRlbXAgPSAxMDAwOworCisgICAgICAgICAgICAqcFZhbHVlMTYgPSB0ZW1wOworICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTywgcmF0aW8gJWQiLCAqcFZhbHVlMTYpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcFZhbHVlMTYgPSAmcFByb3BlcnRpZXMtPnJlZmxlY3Rpb25zTGV2ZWw7CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfTEVWRUw6CisgICAgICAgICpwVmFsdWUxNiA9IEVmZmVjdHNfTGluZWFyMTZUb01pbGxpYmVscyhwUmV2ZXJiLT5tX25FYXJseUdhaW4pOworCisgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfTEVWRUwsICVkIiwgKnBWYWx1ZTE2KTsKKyAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19MRVZFTCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcFZhbHVlMzIgPSAmcFByb3BlcnRpZXMtPnJlZmxlY3Rpb25zRGVsYXk7CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfREVMQVk6CisgICAgICAgIC8vIGNvbnZlcnQgc2FtcGxlcyB0byBtcworICAgICAgICAqcFZhbHVlMzIgPSAocFJldmVyYi0+bV9uRWFybHlEZWxheSAqIDEwMDApIC8gcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlOworCisgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfREVMQVksIHNhbXBsZXMgJWQsIG1zICVkIiwgcFJldmVyYi0+bV9uRWFybHlEZWxheSwgKnBWYWx1ZTMyKTsKKworICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0RFTEFZKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBwVmFsdWUxNiA9ICZwUHJvcGVydGllcy0+cmV2ZXJiTGV2ZWw7CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVWRVJCX0xFVkVMOgorICAgICAgICAvLyBDb252ZXJ0IGxpbmVhciBnYWluIHRvIG1pbGxpYmVscworICAgICAgICAqcFZhbHVlMTYgPSBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHMocFJldmVyYi0+bV9uTGF0ZUdhaW4gPDwgMik7CisKKyAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9SRVZFUkJfTEVWRUwgJWQiLCAqcFZhbHVlMTYpOworCisgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUkVWRVJCX0xFVkVMKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBwVmFsdWUzMiA9ICZwUHJvcGVydGllcy0+cmV2ZXJiRGVsYXk7CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVWRVJCX0RFTEFZOgorICAgICAgICAvLyBjb252ZXJ0IHNhbXBsZXMgdG8gbXMKKyAgICAgICAgKnBWYWx1ZTMyID0gKHBSZXZlcmItPm1fbkxhdGVEZWxheSAqIDEwMDApIC8gcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlOworCisgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fUkVWRVJCX0RFTEFZLCBzYW1wbGVzICVkLCBtcyAlZCIsIHBSZXZlcmItPm1fbkxhdGVEZWxheSwgKnBWYWx1ZTMyKTsKKworICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX1JFVkVSQl9ERUxBWSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcFZhbHVlMTYgPSAmcFByb3BlcnRpZXMtPmRpZmZ1c2lvbjsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ESUZGVVNJT046CisgICAgICAgIHRlbXAgPSAoaW50MTZfdCkgKCgxMDAwICogKHBSZXZlcmItPm1fc0FwMC5tX25BcEdhaW4gLSBBUDBfR0FJTl9CQVNFKSkKKyAgICAgICAgICAgICAgICAvIEFQMF9HQUlOX1JBTkdFKTsKKworICAgICAgICBpZiAodGVtcCA8IDApCisgICAgICAgICAgICB0ZW1wID0gMDsKKyAgICAgICAgaWYgKHRlbXAgPiAxMDAwKQorICAgICAgICAgICAgdGVtcCA9IDEwMDA7CisKKyAgICAgICAgKnBWYWx1ZTE2ID0gdGVtcDsKKyAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ESUZGVVNJT04sICVkLCBBUDAgZ2FpbiAlZCIsICpwVmFsdWUxNiwgcFJldmVyYi0+bV9zQXAwLm1fbkFwR2Fpbik7CisKKyAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9ESUZGVVNJT04pIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHBWYWx1ZTE2ID0gJnBQcm9wZXJ0aWVzLT5kZW5zaXR5OworICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RFTlNJVFk6CisgICAgICAgIC8vIENhbGN1bGF0ZSBBUCBkZWxheSBpbiB0aW1lIHVuaXRzCisgICAgICAgIHRlbXAgPSAoKHBSZXZlcmItPm1fc0FwMC5tX3pBcE91dCAtIHBSZXZlcmItPm1fc0FwMC5tX3pBcEluKSA8PCAxNikKKyAgICAgICAgICAgICAgICAvIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZTsKKworICAgICAgICB0ZW1wID0gKGludDE2X3QpICgoMTAwMCAqICh0ZW1wIC0gQVAwX1RJTUVfQkFTRSkpIC8gQVAwX1RJTUVfUkFOR0UpOworCisgICAgICAgIGlmICh0ZW1wIDwgMCkKKyAgICAgICAgICAgIHRlbXAgPSAwOworICAgICAgICBpZiAodGVtcCA+IDEwMDApCisgICAgICAgICAgICB0ZW1wID0gMTAwMDsKKworICAgICAgICAqcFZhbHVlMTYgPSB0ZW1wOworCisgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fREVOU0lUWSwgJWQsIEFQMCBkZWxheSBzbXBzICVkIiwgKnBWYWx1ZTE2LCBwUmV2ZXJiLT5tX3NBcDAubV96QXBPdXQgLSBwUmV2ZXJiLT5tX3NBcDAubV96QXBJbik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgTE9HVigiUmV2ZXJiX2dldFBhcmFtZXRlciwgY29udGV4dCAlcCwgcGFyYW0gJWQsIHZhbHVlICVkIiwKKyAgICAgICAgICAgIHBSZXZlcmIsIHBhcmFtLCAqKGludCAqKXBWYWx1ZSk7CisKKyAgICByZXR1cm4gMDsKK30gLyogZW5kIFJldmVyYl9nZXRQYXJhbWV0ZXIgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJfc2V0UGFyYW1ldGVyKCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIFNldCBhIFJldmVyYiBwYXJhbWV0ZXIKKyAqCisgKiBJbnB1dHM6CisgKiAgcFJldmVyYiAgICAgICAtIGhhbmRsZSB0byBpbnN0YW5jZSBkYXRhCisgKiAgcGFyYW0gICAgICAgICAtIHBhcmFtZXRlcgorICogIHBWYWx1ZSAgICAgICAgLSBwb2ludGVyIHRvIHBhcmFtZXRlciB2YWx1ZQorICogIHNpemUgICAgICAgICAgLSB2YWx1ZSBzaXplCisgKgorICogT3V0cHV0czoKKyAqCisgKgorICogU2lkZSBFZmZlY3RzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQgUmV2ZXJiX3NldFBhcmFtZXRlcihyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmIsIGludDMyX3QgcGFyYW0sIHNpemVfdCBzaXplLAorICAgICAgICB2b2lkICpwVmFsdWUpIHsKKyAgICBpbnQzMl90IHZhbHVlMzI7CisgICAgaW50MTZfdCB2YWx1ZTE2OworICAgIHRfcmV2ZXJiX3Byb3BlcnRpZXMgKnBQcm9wZXJ0aWVzOworICAgIGludDMyX3QgaTsKKyAgICBpbnQzMl90IHRlbXA7CisgICAgaW50MzJfdCB0ZW1wMjsKKyAgICByZXZlcmJfcHJlc2V0X3QgKnBQcmVzZXQ7CisgICAgaW50IG1heFNhbXBsZXM7CisgICAgaW50MzJfdCBhdmVyYWdlRGVsYXk7CisgICAgc2l6ZV90IHBhcmFtU2l6ZTsKKworICAgIExPR1YoIlJldmVyYl9zZXRQYXJhbWV0ZXIsIGNvbnRleHQgJXAsIHBhcmFtICVkLCB2YWx1ZTE2ICVkLCB2YWx1ZTMyICVkIiwKKyAgICAgICAgICAgIHBSZXZlcmIsIHBhcmFtLCAqKGludDE2X3QgKilwVmFsdWUsICooaW50MzJfdCAqKXBWYWx1ZSk7CisKKyAgICBpZiAocFJldmVyYi0+bV9QcmVzZXQgJiYgcGFyYW0gIT0gUkVWRVJCX1BBUkFNX1BSRVNFVCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgaWYgKCFwUmV2ZXJiLT5tX1ByZXNldCAmJiBwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUFJFU0VUKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ST09NX0xFVkVMOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUw6CisgICAgY2FzZSBSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU86CisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfTEVWRUw6CisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVWRVJCX0xFVkVMOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RJRkZVU0lPTjoKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERU5TSVRZOgorICAgICAgICBwYXJhbVNpemUgPSBzaXplb2YoaW50MTZfdCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fQllQQVNTOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX1BSRVNFVDoKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERUNBWV9USU1FOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0RFTEFZOgorICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFVkVSQl9ERUxBWToKKyAgICAgICAgcGFyYW1TaXplID0gc2l6ZW9mKGludDMyX3QpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUkVWRVJCX1BBUkFNX1BST1BFUlRJRVM6CisgICAgICAgIHBhcmFtU2l6ZSA9IHNpemVvZih0X3JldmVyYl9wcm9wZXJ0aWVzKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSAhPSBwYXJhbVNpemUpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgaWYgKHBhcmFtU2l6ZSA9PSBzaXplb2YoaW50MTZfdCkpIHsKKyAgICAgICAgdmFsdWUxNiA9ICooaW50MTZfdCAqKSBwVmFsdWU7CisgICAgfSBlbHNlIGlmIChwYXJhbVNpemUgPT0gc2l6ZW9mKGludDMyX3QpKSB7CisgICAgICAgIHZhbHVlMzIgPSAqKGludDMyX3QgKikgcFZhbHVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHBQcm9wZXJ0aWVzID0gKHRfcmV2ZXJiX3Byb3BlcnRpZXMgKikgcFZhbHVlOworICAgIH0KKworICAgIHBQcmVzZXQgPSAmcFJldmVyYi0+bV9zUHJlc2V0Lm1fc1ByZXNldFtwUmV2ZXJiLT5tX25DdXJyZW50Um9vbV07CisKKyAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSBSRVZFUkJfUEFSQU1fQllQQVNTOgorICAgICAgICBwUmV2ZXJiLT5tX2JCeXBhc3MgPSAodWludDE2X3QpdmFsdWUzMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUFJFU0VUOgorICAgICAgICBpZiAodmFsdWUzMiAhPSBSRVZFUkJfUFJFU0VUX0xBUkdFX0hBTEwgJiYgdmFsdWUzMgorICAgICAgICAgICAgICAgICE9IFJFVkVSQl9QUkVTRVRfSEFMTCAmJiB2YWx1ZTMyICE9IFJFVkVSQl9QUkVTRVRfQ0hBTUJFUgorICAgICAgICAgICAgICAgICYmIHZhbHVlMzIgIT0gUkVWRVJCX1BSRVNFVF9ST09NKQorICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIHBSZXZlcmItPm1fbk5leHRSb29tID0gKGludDE2X3QpIHZhbHVlMzI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUFJPUEVSVElFUzoKKyAgICAgICAgdmFsdWUxNiA9IHBQcm9wZXJ0aWVzLT5yb29tTGV2ZWw7CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fUk9PTV9MRVZFTDoKKyAgICAgICAgLy8gQ29udmVydCBtaWxsaWJlbHMgdG8gbGluZWFyIDE2IGJpdCBzaWduZWQgPT4gbV9uUm9vbUxwZkZ3ZAorICAgICAgICBpZiAodmFsdWUxNiA+IDApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICB0ZW1wID0gRWZmZWN0c19NaWxsaWJlbHNUb0xpbmVhcjE2KHZhbHVlMTYpOworCisgICAgICAgIHBSZXZlcmItPm1fblJvb21McGZGd2QKKyAgICAgICAgICAgICAgICA9IE1VTFRfRUcxX0VHMSh0ZW1wLCAoMzI3NjcgLSBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrKSk7CisKKyAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JPT01fTEVWRUwsIGdhaW4gJWQsIG5ldyBtX25Sb29tTHBmRndkICVkLCBtX25Sb29tTHBmRmJrICVkIiwgdGVtcCwgcFJldmVyYi0+bV9uUm9vbUxwZkZ3ZCwgcFJldmVyYi0+bV9uUm9vbUxwZkZiayk7CisgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUk9PTV9MRVZFTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB2YWx1ZTE2ID0gcFByb3BlcnRpZXMtPnJvb21IRkxldmVsOworICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUw6CisKKyAgICAgICAgLy8gTGltaXQgdG8gMCAsIC00MGRCIHJhbmdlIGJlY2F1c2Ugb2YgbG93IHBhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaWYgKHZhbHVlMTYgPiAwIHx8IHZhbHVlMTYgPCAtNDAwMCkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAvLyBDb252ZXJ0IGF0dGVudWF0aW9uIEAgNTAwMEggZXhwcmVzc2VkIGluIG1pbGxpYmVscyB0byA9PiBtX25Sb29tTHBmRmJrCisgICAgICAgIC8vIG1fblJvb21McGZGYmsgaXMgLWExIHdoZXJlIGExIGlzIHRoZSBzb2x1dGlvbiBvZjoKKyAgICAgICAgLy8gYTFeMiArIDIqKEMtZEdeMikvKDEtZEdeMikqYTEgKyAxID0gMCB3aGVyZToKKyAgICAgICAgLy8gLSBDIGlzIGNvcygyKnBpKjUwMDAvRnMpIChwUmV2ZXJiLT5tX25Db3NXVF81S0h6KQorICAgICAgICAvLyAtIGRHIGlzIEcwL0dmIChHMCBpcyB0aGUgbGluZWFyIGdhaW4gYXQgREMgYW5kIEdmIGlzIHRoZSB3YW50ZWQgZ2FpbiBhdCA1MDAwSHopCisKKyAgICAgICAgLy8gU2F2ZSBjdXJyZW50IERDIGdhaW4gbV9uUm9vbUxwZkZ3ZCAvICgzMjc2NyAtIG1fblJvb21McGZGYmspIHRvIGtlZXAgaXQgdW5jaGFuZ2VkCisgICAgICAgIC8vIHdoaWxlIGNoYW5naW5nIEhGIGxldmVsCisgICAgICAgIHRlbXAyID0gKHBSZXZlcmItPm1fblJvb21McGZGd2QgPDwgMTUpIC8gKDMyNzY3CisgICAgICAgICAgICAgICAgLSBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrKTsKKyAgICAgICAgaWYgKHZhbHVlMTYgPT0gMCkgeworICAgICAgICAgICAgcFJldmVyYi0+bV9uUm9vbUxwZkZiayA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQzMl90IGRHMiwgYiwgZGVsdGE7CisKKyAgICAgICAgICAgIC8vIGRHXjIKKyAgICAgICAgICAgIHRlbXAgPSBFZmZlY3RzX01pbGxpYmVsc1RvTGluZWFyMTYodmFsdWUxNik7CisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgSEYgZ2FpbiAlZCIsIHRlbXApOworICAgICAgICAgICAgdGVtcCA9ICgxIDw8IDMwKSAvIHRlbXA7CisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgMS8gSEYgZ2FpbiAlZCIsIHRlbXApOworICAgICAgICAgICAgZEcyID0gKGludDMyX3QpICgoKGludDY0X3QpIHRlbXAgKiAoaW50NjRfdCkgdGVtcCkgPj4gMTUpOworICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUwsIDEvIEhGIGdhaW4gXiAyICVkIiwgZEcyKTsKKyAgICAgICAgICAgIC8vIGIgPSAyKihDLWRHXjIpLygxLWRHXjIpCisgICAgICAgICAgICBiID0gKGludDMyX3QpICgoKChpbnQ2NF90KSAxIDw8ICgxNSArIDEpKQorICAgICAgICAgICAgICAgICAgICAqICgoaW50NjRfdCkgcFJldmVyYi0+bV9uQ29zV1RfNUtIeiAtIChpbnQ2NF90KSBkRzIpKQorICAgICAgICAgICAgICAgICAgICAvICgoaW50NjRfdCkgMzI3NjcgLSAoaW50NjRfdCkgZEcyKSk7CisKKyAgICAgICAgICAgIC8vIGRlbHRhID0gYl4yIC0gNAorICAgICAgICAgICAgZGVsdGEgPSAoaW50MzJfdCkgKCgoKGludDY0X3QpIGIgKiAoaW50NjRfdCkgYikgPj4gMTUpIC0gKDEgPDwgKDE1CisgICAgICAgICAgICAgICAgICAgICsgMikpKTsKKworICAgICAgICAgICAgTE9HVl9JRihkZWx0YSA+ICgxPDwzMCksICIgZGVsdGEgb3ZlcmZsb3cgJWQiLCBkZWx0YSk7CisKKyAgICAgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMLCBkRzIgJWQsIGIgJWQsIGRlbHRhICVkLCBtX25Db3NXVF81S0h6ICVkIiwgZEcyLCBiLCBkZWx0YSwgcFJldmVyYi0+bV9uQ29zV1RfNUtIeik7CisgICAgICAgICAgICAvLyBtX25Sb29tTHBmRmJrID0gLWExID0gLSAoLSBiICsgc3FydChkZWx0YSkpIC8gMgorICAgICAgICAgICAgcFJldmVyYi0+bV9uUm9vbUxwZkZiayA9IChiIC0gRWZmZWN0c19TcXJ0KGRlbHRhKSAqIDE4MSkgPj4gMTsKKyAgICAgICAgfQorICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgb2xnIERDIGdhaW4gJWQgbmV3IG1fblJvb21McGZGYmsgJWQsIG9sZCBtX25Sb29tTHBmRndkICVkIiwKKyAgICAgICAgICAgICAgICB0ZW1wMiwgcFJldmVyYi0+bV9uUm9vbUxwZkZiaywgcFJldmVyYi0+bV9uUm9vbUxwZkZ3ZCk7CisKKyAgICAgICAgcFJldmVyYi0+bV9uUm9vbUxwZkZ3ZAorICAgICAgICAgICAgICAgID0gTVVMVF9FRzFfRUcxKHRlbXAyLCAoMzI3NjcgLSBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrKSk7CisgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMLCBuZXcgbV9uUm9vbUxwZkZ3ZCAlZCIsIHBSZXZlcmItPm1fblJvb21McGZGd2QpOworCisgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB2YWx1ZTMyID0gcFByb3BlcnRpZXMtPmRlY2F5VGltZTsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERUNBWV9USU1FOgorCisgICAgICAgIC8vIENvbnZlcnQgbWlsbGlzZWNvbmRzIHRvID0+IG1fblJ2YkxwZkZ3ZCAoZnVuY3Rpb24gb2YgbV9uUnZiTHBmRmJrKQorICAgICAgICAvLyBjb252ZXJ0IG1zIHRvIHNhbXBsZXMKKyAgICAgICAgdmFsdWUzMiA9ICh2YWx1ZTMyICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSAvIDEwMDA7CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIHZhbGlkIGRlY2F5IHRpbWUgcmFuZ2UgYXMgYSBmdW5jdGlvbiBvZiBjdXJyZW50IHJldmVyYiBkZWxheSBhbmQKKyAgICAgICAgLy8gbWF4IGZlZWQgYmFjayBnYWluLiBNaW4gdmFsdWUgPD0+IC00MGRCIGluIG9uZSBwYXNzLCBNYXggdmFsdWUgPD0+IGZlZWRiYWNrIGdhaW4gPSAtMSBkQgorICAgICAgICAvLyBDYWxjdWxhdGUgYXR0ZW51YXRpb24gZm9yIGVhY2ggcm91bmQgaW4gbGF0ZSByZXZlcmIgZ2l2ZW4gYSB0b3RhbCBhdHRlbnVhdGlvbiBvZiAtNjAwMCBtaWxsaWJlbHMuCisgICAgICAgIC8vIGcgPSAtNjAwMCBkL0RUICwgZyBnYWluIGluIG1pbGxpYmVscywgZCByZXZlcmIgZGVsYXksIERUIGRlY2F5IHRpbWUKKyAgICAgICAgYXZlcmFnZURlbGF5ID0gcFJldmVyYi0+bV9uTGF0ZURlbGF5IC0gcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uOworICAgICAgICBhdmVyYWdlRGVsYXkgKz0gKChwUmV2ZXJiLT5tX3NBcDAubV96QXBPdXQgLSBwUmV2ZXJiLT5tX3NBcDAubV96QXBJbikKKyAgICAgICAgICAgICAgICArIChwUmV2ZXJiLT5tX3NBcDEubV96QXBPdXQgLSBwUmV2ZXJiLT5tX3NBcDEubV96QXBJbikpID4+IDE7CisKKyAgICAgICAgdGVtcCA9ICgtNjAwMCAqIGF2ZXJhZ2VEZWxheSkgLyB2YWx1ZTMyOworICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fREVDQVlfVElNRSwgZGVsYXkgc21wcyAlZCwgRFQgc21wcyAlZCwgZ2FpbiBtQiAlZCIsYXZlcmFnZURlbGF5LCB2YWx1ZTMyLCB0ZW1wKTsKKyAgICAgICAgaWYgKHRlbXAgPCAtNDAwMCB8fCB0ZW1wID4gLTEwMCkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBsb3cgcGFzcyBnYWluIGJ5IGFkZGluZyByZXZlcmIgaW5wdXQgYXR0ZW51YXRpb24gKHBSZXZlcmItPm1fbkxhdGVHYWluKSBhbmQgc3Vic3RyYXRpbmcgb3V0cHV0CisgICAgICAgIC8vIHhmYWRlIGFuZCBzdW0gZ2FpbiAobWF4ICs5ZEIpCisgICAgICAgIHRlbXAgLT0gRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHBSZXZlcmItPm1fbkxhdGVHYWluKSArIDkwMDsKKyAgICAgICAgdGVtcCA9IEVmZmVjdHNfTWlsbGliZWxzVG9MaW5lYXIxNih0ZW1wKTsKKworICAgICAgICAvLyBEQyBnYWluICh0ZW1wKSA9IGIwIC8gKDEgKyBhMSkgPSBwUmV2ZXJiLT5tX25SdmJMcGZGd2QgLyAoMzI3NjcgLSBwUmV2ZXJiLT5tX25SdmJMcGZGYmspCisgICAgICAgIHBSZXZlcmItPm1fblJ2YkxwZkZ3ZAorICAgICAgICAgICAgICAgID0gTVVMVF9FRzFfRUcxKHRlbXAsICgzMjc2NyAtIHBSZXZlcmItPm1fblJ2YkxwZkZiaykpOworCisgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ERUNBWV9USU1FLCBnYWluICVkLCBuZXcgbV9uUnZiTHBmRndkICVkLCBvbGQgbV9uUnZiTHBmRmJrICVkLCByZXZlcmIgZ2FpbiAlZCIsIHRlbXAsIHBSZXZlcmItPm1fblJ2YkxwZkZ3ZCwgcFJldmVyYi0+bV9uUnZiTHBmRmJrLCBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHMocFJldmVyYi0+bV9uTGF0ZUdhaW4pKTsKKworICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX0RFQ0FZX1RJTUUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdmFsdWUxNiA9IHBQcm9wZXJ0aWVzLT5kZWNheUhGUmF0aW87CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU86CisKKyAgICAgICAgLy8gV2UgbGltaXQgbWF4IHZhbHVlIHRvIDEwMDAgYmVjYXVzZSByZXZlcmIgZmlsdGVyIGlzIGxvd3Bhc3Mgb25seQorICAgICAgICBpZiAodmFsdWUxNiA8IDEwMCB8fCB2YWx1ZTE2ID4gMTAwMCkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAvLyBDb252ZXJ0IHBlciBtaWxsZSB0byA9PiBtX25McGZGd2QsIG1fbkxwZkZiaworCisgICAgICAgIC8vIFNhdmUgY3VycmVudCBEQyBnYWluIG1fblJvb21McGZGd2QgLyAoMzI3NjcgLSBtX25Sb29tTHBmRmJrKSB0byBrZWVwIGl0IHVuY2hhbmdlZAorICAgICAgICAvLyB3aGlsZSBjaGFuZ2luZyBIRiBsZXZlbAorICAgICAgICB0ZW1wMiA9IChwUmV2ZXJiLT5tX25SdmJMcGZGd2QgPDwgMTUpIC8gKDMyNzY3IC0gcFJldmVyYi0+bV9uUnZiTHBmRmJrKTsKKworICAgICAgICBpZiAodmFsdWUxNiA9PSAxMDAwKSB7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX25SdmJMcGZGYmsgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50MzJfdCBkRzIsIGIsIGRlbHRhOworCisgICAgICAgICAgICB0ZW1wID0gRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHRlbXAyKTsKKyAgICAgICAgICAgIC8vIEdfNTAwMEh6ID0gR19EQyAqICgxMDAwL1JFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTykgaW4gbWlsbGliZWxzCisKKyAgICAgICAgICAgIHZhbHVlMzIgPSAoKGludDMyX3QpIDEwMDAgPDwgMTUpIC8gKGludDMyX3QpIHZhbHVlMTY7CisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU8sIERDIGdhaW4gJWQsIERDIGdhaW4gbUIgJWQsIDEwMDAvUiAlZCIsIHRlbXAyLCB0ZW1wLCB2YWx1ZTMyKTsKKworICAgICAgICAgICAgdGVtcCA9IChpbnQzMl90KSAoKChpbnQ2NF90KSB0ZW1wICogKGludDY0X3QpIHZhbHVlMzIpID4+IDE1KTsKKworICAgICAgICAgICAgaWYgKHRlbXAgPCAtNDAwMCkgeworICAgICAgICAgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTyBIRiBnYWluIG92ZXJmbG93ICVkIG1CIiwgdGVtcCk7CisgICAgICAgICAgICAgICAgdGVtcCA9IC00MDAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZW1wID0gRWZmZWN0c19NaWxsaWJlbHNUb0xpbmVhcjE2KHRlbXApOworICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPLCBIRiBnYWluICVkIiwgdGVtcCk7CisgICAgICAgICAgICAvLyBkR14yCisgICAgICAgICAgICB0ZW1wID0gKHRlbXAyIDw8IDE1KSAvIHRlbXA7CisgICAgICAgICAgICBkRzIgPSAoaW50MzJfdCkgKCgoaW50NjRfdCkgdGVtcCAqIChpbnQ2NF90KSB0ZW1wKSA+PiAxNSk7CisKKyAgICAgICAgICAgIC8vIGIgPSAyKihDLWRHXjIpLygxLWRHXjIpCisgICAgICAgICAgICBiID0gKGludDMyX3QpICgoKChpbnQ2NF90KSAxIDw8ICgxNSArIDEpKQorICAgICAgICAgICAgICAgICAgICAqICgoaW50NjRfdCkgcFJldmVyYi0+bV9uQ29zV1RfNUtIeiAtIChpbnQ2NF90KSBkRzIpKQorICAgICAgICAgICAgICAgICAgICAvICgoaW50NjRfdCkgMzI3NjcgLSAoaW50NjRfdCkgZEcyKSk7CisKKyAgICAgICAgICAgIC8vIGRlbHRhID0gYl4yIC0gNAorICAgICAgICAgICAgZGVsdGEgPSAoaW50MzJfdCkgKCgoKGludDY0X3QpIGIgKiAoaW50NjRfdCkgYikgPj4gMTUpIC0gKDEgPDwgKDE1CisgICAgICAgICAgICAgICAgICAgICsgMikpKTsKKworICAgICAgICAgICAgLy8gbV9uUm9vbUxwZkZiayA9IC1hMSA9IC0gKC0gYiArIHNxcnQoZGVsdGEpKSAvIDIKKyAgICAgICAgICAgIHBSZXZlcmItPm1fblJ2YkxwZkZiayA9IChiIC0gRWZmZWN0c19TcXJ0KGRlbHRhKSAqIDE4MSkgPj4gMTsKKworICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPLCBkRzIgJWQsIGIgJWQsIGRlbHRhICVkIiwgZEcyLCBiLCBkZWx0YSk7CisKKyAgICAgICAgfQorCisgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTywgZ2FpbiAlZCwgbV9uUnZiTHBmRmJrICVkLCBtX25SdmJMcGZGd2QgJWQiLCB0ZW1wMiwgcFJldmVyYi0+bV9uUnZiTHBmRmJrLCBwUmV2ZXJiLT5tX25SdmJMcGZGd2QpOworCisgICAgICAgIHBSZXZlcmItPm1fblJ2YkxwZkZ3ZAorICAgICAgICAgICAgICAgID0gTVVMVF9FRzFfRUcxKHRlbXAyLCAoMzI3NjcgLSBwUmV2ZXJiLT5tX25SdmJMcGZGYmspKTsKKworICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHZhbHVlMTYgPSBwUHJvcGVydGllcy0+cmVmbGVjdGlvbnNMZXZlbDsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19MRVZFTDoKKyAgICAgICAgLy8gV2UgbGltaXQgbWF4IHZhbHVlIHRvIDAgYmVjYXVzZSBnYWluIGlzIGxpbWl0ZWQgdG8gMGRCCisgICAgICAgIGlmICh2YWx1ZTE2ID4gMCB8fCB2YWx1ZTE2IDwgLTYwMDApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICAvLyBDb252ZXJ0IG1pbGxpYmVscyB0byBsaW5lYXIgMTYgYml0IHNpZ25lZCBhbmQgcmVjb21wdXRlIG1fc0Vhcmx5TC5tX25HYWluW2ldIGFuZCBtX3NFYXJseVIubV9uR2FpbltpXS4KKyAgICAgICAgdmFsdWUxNiA9IEVmZmVjdHNfTWlsbGliZWxzVG9MaW5lYXIxNih2YWx1ZTE2KTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFJFVkVSQl9NQVhfTlVNX1JFRkxFQ1RJT05TOyBpKyspIHsKKyAgICAgICAgICAgIHBSZXZlcmItPm1fc0Vhcmx5TC5tX25HYWluW2ldCisgICAgICAgICAgICAgICAgICAgID0gTVVMVF9FRzFfRUcxKHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluW2ldLHZhbHVlMTYpOworICAgICAgICAgICAgcFJldmVyYi0+bV9zRWFybHlSLm1fbkdhaW5baV0KKyAgICAgICAgICAgICAgICAgICAgPSBNVUxUX0VHMV9FRzEocFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5baV0sdmFsdWUxNik7CisgICAgICAgIH0KKyAgICAgICAgcFJldmVyYi0+bV9uRWFybHlHYWluID0gdmFsdWUxNjsKKyAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0xFVkVMLCBtX25FYXJseUdhaW4gJWQiLCBwUmV2ZXJiLT5tX25FYXJseUdhaW4pOworCisgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfTEVWRUwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdmFsdWUzMiA9IHBQcm9wZXJ0aWVzLT5yZWZsZWN0aW9uc0RlbGF5OworICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0RFTEFZOgorICAgICAgICAvLyBXZSBsaW1pdCBtYXggdmFsdWUgTUFYX0VBUkxZX1RJTUUKKyAgICAgICAgLy8gY29udmVydCBtcyB0byB0aW1lIHVuaXRzCisgICAgICAgIHRlbXAgPSAodmFsdWUzMiAqIDY1NTM2KSAvIDEwMDA7CisgICAgICAgIGlmICh0ZW1wIDwgMCB8fCB0ZW1wID4gTUFYX0VBUkxZX1RJTUUpCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICBtYXhTYW1wbGVzID0gKGludDMyX3QpIChNQVhfRUFSTFlfVElNRSAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkKKyAgICAgICAgICAgICAgICA+PiAxNjsKKyAgICAgICAgdGVtcCA9ICh0ZW1wICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFJFVkVSQl9NQVhfTlVNX1JFRkxFQ1RJT05TOyBpKyspIHsKKyAgICAgICAgICAgIHRlbXAyID0gdGVtcCArICgoKGludDMyX3QpIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVtpXQorICAgICAgICAgICAgICAgICAgICAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkgPj4gMTYpOworICAgICAgICAgICAgaWYgKHRlbXAyID4gbWF4U2FtcGxlcykKKyAgICAgICAgICAgICAgICB0ZW1wMiA9IG1heFNhbXBsZXM7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX3NFYXJseUwubV96RGVsYXlbaV0gPSBwUmV2ZXJiLT5tX25FYXJseTBpbiArIHRlbXAyOworICAgICAgICAgICAgdGVtcDIgPSB0ZW1wICsgKCgoaW50MzJfdCkgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5W2ldCisgICAgICAgICAgICAgICAgICAgICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNik7CisgICAgICAgICAgICBpZiAodGVtcDIgPiBtYXhTYW1wbGVzKQorICAgICAgICAgICAgICAgIHRlbXAyID0gbWF4U2FtcGxlczsKKyAgICAgICAgICAgIHBSZXZlcmItPm1fc0Vhcmx5Ui5tX3pEZWxheVtpXSA9IHBSZXZlcmItPm1fbkVhcmx5MWluICsgdGVtcDI7CisgICAgICAgIH0KKyAgICAgICAgcFJldmVyYi0+bV9uRWFybHlEZWxheSA9IHRlbXA7CisKKyAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0RFTEFZLCBtX25FYXJseURlbGF5IHNtcHMgJWQgbWF4IHNtcCBkZWxheSAlZCIsIHBSZXZlcmItPm1fbkVhcmx5RGVsYXksIG1heFNhbXBsZXMpOworCisgICAgICAgIC8vIENvbnZlcnQgbWlsbGlzZWNvbmRzIHRvIHNhbXBsZSBjb3VudCA9PiBtX25FYXJseURlbGF5CisgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfREVMQVkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdmFsdWUxNiA9IHBQcm9wZXJ0aWVzLT5yZXZlcmJMZXZlbDsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRVZFUkJfTEVWRUw6CisgICAgICAgIC8vIFdlIGxpbWl0IG1heCB2YWx1ZSB0byAwIGJlY2F1c2UgZ2FpbiBpcyBsaW1pdGVkIHRvIDBkQgorICAgICAgICBpZiAodmFsdWUxNiA+IDAgfHwgdmFsdWUxNiA8IC02MDAwKQorICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIC8vIENvbnZlcnQgbWlsbGliZWxzIHRvIGxpbmVhciAxNiBiaXRzIChnYW5nZSAwIC0gODE5MSkgPT4gbV9uTGF0ZUdhaW4uCisgICAgICAgIHBSZXZlcmItPm1fbkxhdGVHYWluID0gRWZmZWN0c19NaWxsaWJlbHNUb0xpbmVhcjE2KHZhbHVlMTYpID4+IDI7CisKKyAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JFVkVSQl9MRVZFTCwgbV9uTGF0ZUdhaW4gJWQiLCBwUmV2ZXJiLT5tX25MYXRlR2Fpbik7CisKKyAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9SRVZFUkJfTEVWRUwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdmFsdWUzMiA9IHBQcm9wZXJ0aWVzLT5yZXZlcmJEZWxheTsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRVZFUkJfREVMQVk6CisgICAgICAgIC8vIFdlIGxpbWl0IG1heCB2YWx1ZSB0byBNQVhfREVMQVlfVElNRQorICAgICAgICAvLyBjb252ZXJ0IG1zIHRvIHRpbWUgdW5pdHMKKyAgICAgICAgdGVtcCA9ICh2YWx1ZTMyICogNjU1MzYpIC8gMTAwMDsKKyAgICAgICAgaWYgKHRlbXAgPCAwIHx8IHRlbXAgPiBNQVhfREVMQVlfVElNRSkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgIG1heFNhbXBsZXMgPSAoaW50MzJfdCkgKE1BWF9ERUxBWV9USU1FICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKQorICAgICAgICAgICAgICAgID4+IDE2OworICAgICAgICB0ZW1wID0gKHRlbXAgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpID4+IDE2OworICAgICAgICBpZiAoKHRlbXAgKyBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb24pID4gbWF4U2FtcGxlcykgeworICAgICAgICAgICAgdGVtcCA9IG1heFNhbXBsZXMgLSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb247CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXAgPCBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb24pIHsKKyAgICAgICAgICAgIHRlbXAgPSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb247CisgICAgICAgIH0KKworICAgICAgICB0ZW1wIC09IHBSZXZlcmItPm1fbkxhdGVEZWxheTsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXkwT3V0ICs9IHRlbXA7CisgICAgICAgIHBSZXZlcmItPm1fbkRlbGF5MU91dCArPSB0ZW1wOworICAgICAgICBwUmV2ZXJiLT5tX25MYXRlRGVsYXkgKz0gdGVtcDsKKworICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUkVWRVJCX0RFTEFZLCBtX25MYXRlRGVsYXkgc21wcyAlZCBtYXggc21wIGRlbGF5ICVkIiwgcFJldmVyYi0+bV9uTGF0ZURlbGF5LCBtYXhTYW1wbGVzKTsKKworICAgICAgICAvLyBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byBzYW1wbGUgY291bnQgPT4gbV9uRGVsYXkxT3V0ICsgbV9uTWF4RXhjdXJzaW9uCisgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUkVWRVJCX0RFTEFZKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdmFsdWUxNiA9IHBQcm9wZXJ0aWVzLT5kaWZmdXNpb247CisgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgY2FzZSBSRVZFUkJfUEFSQU1fRElGRlVTSU9OOgorICAgICAgICBpZiAodmFsdWUxNiA8IDAgfHwgdmFsdWUxNiA+IDEwMDApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICAvLyBDb252ZXJ0IHBlciBtaWxsZSB0byBtX3NBcDAubV9uQXBHYWluLCBtX3NBcDEubV9uQXBHYWluCisgICAgICAgIHBSZXZlcmItPm1fc0FwMC5tX25BcEdhaW4gPSBBUDBfR0FJTl9CQVNFICsgKChpbnQzMl90KSB2YWx1ZTE2CisgICAgICAgICAgICAgICAgKiBBUDBfR0FJTl9SQU5HRSkgLyAxMDAwOworICAgICAgICBwUmV2ZXJiLT5tX3NBcDEubV9uQXBHYWluID0gQVAxX0dBSU5fQkFTRSArICgoaW50MzJfdCkgdmFsdWUxNgorICAgICAgICAgICAgICAgICogQVAxX0dBSU5fUkFOR0UpIC8gMTAwMDsKKworICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fRElGRlVTSU9OLCBtX3NBcDAubV9uQXBHYWluICVkIG1fc0FwMS5tX25BcEdhaW4gJWQiLCBwUmV2ZXJiLT5tX3NBcDAubV9uQXBHYWluLCBwUmV2ZXJiLT5tX3NBcDEubV9uQXBHYWluKTsKKworICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX0RJRkZVU0lPTikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHZhbHVlMTYgPSBwUHJvcGVydGllcy0+ZGVuc2l0eTsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERU5TSVRZOgorICAgICAgICBpZiAodmFsdWUxNiA8IDAgfHwgdmFsdWUxNiA+IDEwMDApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICAvLyBDb252ZXJ0IHBlciBtaWxsZSB0byBtX3NBcDAubV96QXBPdXQsIG1fc0FwMS5tX3pBcE91dAorICAgICAgICBtYXhTYW1wbGVzID0gKGludDMyX3QpIChNQVhfQVBfVElNRSAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkgPj4gMTY7CisKKyAgICAgICAgdGVtcCA9IEFQMF9USU1FX0JBU0UgKyAoKGludDMyX3QpIHZhbHVlMTYgKiBBUDBfVElNRV9SQU5HRSkgLyAxMDAwOworICAgICAgICAvKmxpbnQgLWV7NzAyfSBzaGlmdCBmb3IgcGVyZm9ybWFuY2UgKi8KKyAgICAgICAgdGVtcCA9ICh0ZW1wICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKyAgICAgICAgaWYgKHRlbXAgPiBtYXhTYW1wbGVzKQorICAgICAgICAgICAgdGVtcCA9IG1heFNhbXBsZXM7CisgICAgICAgIHBSZXZlcmItPm1fc0FwMC5tX3pBcE91dCA9ICh1aW50MTZfdCkgKHBSZXZlcmItPm1fc0FwMC5tX3pBcEluICsgdGVtcCk7CisKKyAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX0RFTlNJVFksIEFwMCBkZWxheSBzbXBzICVkIiwgdGVtcCk7CisKKyAgICAgICAgdGVtcCA9IEFQMV9USU1FX0JBU0UgKyAoKGludDMyX3QpIHZhbHVlMTYgKiBBUDFfVElNRV9SQU5HRSkgLyAxMDAwOworICAgICAgICAvKmxpbnQgLWV7NzAyfSBzaGlmdCBmb3IgcGVyZm9ybWFuY2UgKi8KKyAgICAgICAgdGVtcCA9ICh0ZW1wICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKyAgICAgICAgaWYgKHRlbXAgPiBtYXhTYW1wbGVzKQorICAgICAgICAgICAgdGVtcCA9IG1heFNhbXBsZXM7CisgICAgICAgIHBSZXZlcmItPm1fc0FwMS5tX3pBcE91dCA9ICh1aW50MTZfdCkgKHBSZXZlcmItPm1fc0FwMS5tX3pBcEluICsgdGVtcCk7CisKKyAgICAgICAgTE9HVigiQXAxIGRlbGF5IHNtcHMgJWQiLCB0ZW1wKTsKKworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30gLyogZW5kIFJldmVyYl9zZXRQYXJhbWV0ZXIgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJVcGRhdGVYZmFkZQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogVXBkYXRlIHRoZSB4ZmFkZSBwYXJhbWV0ZXJzIGFzIHJlcXVpcmVkCisgKgorICogSW5wdXRzOgorICogbk51bVNhbXBsZXNUb0FkZCAtIG51bWJlciBvZiBzYW1wbGVzIHRvIHdyaXRlIHRvIGJ1ZmZlcgorICoKKyAqIE91dHB1dHM6CisgKgorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqIC0geGZhZGUgcGFyYW1ldGVycyB3aWxsIGJlIGNoYW5nZWQKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIGludCBSZXZlcmJVcGRhdGVYZmFkZShyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmIsIGludCBuTnVtU2FtcGxlc1RvQWRkKSB7CisgICAgdWludDE2X3Qgbk9mZnNldDsKKyAgICBpbnQxNl90IHRlbXBDb3M7CisgICAgaW50MTZfdCB0ZW1wU2luOworCisgICAgaWYgKHBSZXZlcmItPm1fblhmYWRlQ291bnRlciA+PSBwUmV2ZXJiLT5tX25YZmFkZUludGVydmFsKSB7CisgICAgICAgIC8qIHVwZGF0ZSBpbnRlcnZhbCBoYXMgZWxhcHNlZCwgc28gcmVzZXQgY291bnRlciAqLworICAgICAgICBwUmV2ZXJiLT5tX25YZmFkZUNvdW50ZXIgPSAwOworCisgICAgICAgIC8vIFBpbiB0aGUgc2luLGNvcyB2YWx1ZXMgdG8gbWluIC8gbWF4IHZhbHVlcyB0byBlbnN1cmUgdGhhdCB0aGUKKyAgICAgICAgLy8gbW9kdWxhdGVkIHRhcHMnIGNvZWZzIGFyZSB6ZXJvICh0aHVzIG5vIGNsaWNrcykKKyAgICAgICAgaWYgKHBSZXZlcmItPm1fblBoYXNlSW5jcmVtZW50ID4gMCkgeworICAgICAgICAgICAgLy8gaWYgcGhhc2UgaW5jcmVtZW50ID4gMCwgdGhlbiBzaW4gLT4gMSwgY29zIC0+IDAKKyAgICAgICAgICAgIHBSZXZlcmItPm1fblNpbiA9IDMyNzY3OworICAgICAgICAgICAgcFJldmVyYi0+bV9uQ29zID0gMDsKKworICAgICAgICAgICAgLy8gcmVzZXQgdGhlIHBoYXNlIHRvIG1hdGNoIHRoZSBzaW4sIGNvcyB2YWx1ZXMKKyAgICAgICAgICAgIHBSZXZlcmItPm1fblBoYXNlID0gMzI3Njc7CisKKyAgICAgICAgICAgIC8vIG1vZHVsYXRlIHRoZSBjcm9zcyB0YXBzIGJlY2F1c2UgdGhlaXIgdGFwIGNvZWZzIGFyZSB6ZXJvCisgICAgICAgICAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICAgICAgICAgIHBSZXZlcmItPm1fekQxQ3Jvc3MgPSBwUmV2ZXJiLT5tX25EZWxheTFPdXQKKyAgICAgICAgICAgICAgICAgICAgLSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb24gKyBuT2Zmc2V0OworCisgICAgICAgICAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICAgICAgICAgIHBSZXZlcmItPm1fekQwQ3Jvc3MgPSBwUmV2ZXJiLT5tX25EZWxheTBPdXQKKyAgICAgICAgICAgICAgICAgICAgLSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb24gLSBuT2Zmc2V0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gaWYgcGhhc2UgaW5jcmVtZW50IDwgMCwgdGhlbiBzaW4gLT4gMCwgY29zIC0+IDEKKyAgICAgICAgICAgIHBSZXZlcmItPm1fblNpbiA9IDA7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX25Db3MgPSAzMjc2NzsKKworICAgICAgICAgICAgLy8gcmVzZXQgdGhlIHBoYXNlIHRvIG1hdGNoIHRoZSBzaW4sIGNvcyB2YWx1ZXMKKyAgICAgICAgICAgIHBSZXZlcmItPm1fblBoYXNlID0gLTMyNzY4OworCisgICAgICAgICAgICAvLyBtb2R1bGF0ZSB0aGUgc2VsZiB0YXBzIGJlY2F1c2UgdGhlaXIgdGFwIGNvZWZzIGFyZSB6ZXJvCisgICAgICAgICAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICAgICAgICAgIHBSZXZlcmItPm1fekQwU2VsZiA9IHBSZXZlcmItPm1fbkRlbGF5ME91dAorICAgICAgICAgICAgICAgICAgICAtIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbiAtIG5PZmZzZXQ7CisKKyAgICAgICAgICAgIG5PZmZzZXQgPSBSZXZlcmJDYWxjdWxhdGVOb2lzZShwUmV2ZXJiKTsKKworICAgICAgICAgICAgcFJldmVyYi0+bV96RDFTZWxmID0gcFJldmVyYi0+bV9uRGVsYXkxT3V0CisgICAgICAgICAgICAgICAgICAgIC0gcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uICsgbk9mZnNldDsKKworICAgICAgICB9IC8vIGVuZCBpZi1lbHNlIChwUmV2ZXJiLT5tX25QaGFzZUluY3JlbWVudCA+IDApCisKKyAgICAgICAgLy8gUmV2ZXJzZSB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzaW4sY29zIHNvIHRoYXQgdGhlCisgICAgICAgIC8vIHRhcCB3aG9zZSBjb2VmIHdhcyBwcmV2aW91c2x5IGluY3JlYXNpbmcgbm93IGRlY3JlYXNlcworICAgICAgICAvLyBhbmQgdmljZSB2ZXJzYQorICAgICAgICBwUmV2ZXJiLT5tX25QaGFzZUluY3JlbWVudCA9IC1wUmV2ZXJiLT5tX25QaGFzZUluY3JlbWVudDsKKworICAgIH0gLy8gZW5kIGlmIGNvdW50ZXIgPj0gdXBkYXRlIGludGVydmFsCisKKyAgICAvL2NvbXB1dGUgd2hhdCBwaGFzZSB3aWxsIGJlIG5leHQgdGltZQorICAgIHBSZXZlcmItPm1fblBoYXNlICs9IHBSZXZlcmItPm1fblBoYXNlSW5jcmVtZW50OworCisgICAgLy9jYWxjdWxhdGUgd2hhdCB0aGUgbmV3IHNpbiBhbmQgY29zIG5lZWQgdG8gcmVhY2ggYnkgdGhlIG5leHQgdXBkYXRlCisgICAgUmV2ZXJiQ2FsY3VsYXRlU2luQ29zKHBSZXZlcmItPm1fblBoYXNlLCAmdGVtcFNpbiwgJnRlbXBDb3MpOworCisgICAgLy9jYWxjdWxhdGUgdGhlIHBlci1zYW1wbGUgaW5jcmVtZW50IHJlcXVpcmVkIHRvIGdldCB0aGVyZSBieSB0aGUgbmV4dCB1cGRhdGUKKyAgICAvKmxpbnQgLWV7NzAyfSBzaGlmdCBmb3IgcGVyZm9ybWFuY2UgKi8KKyAgICBwUmV2ZXJiLT5tX25TaW5JbmNyZW1lbnQgPSAodGVtcFNpbiAtIHBSZXZlcmItPm1fblNpbikKKyAgICAgICAgICAgID4+IHBSZXZlcmItPm1fblVwZGF0ZVBlcmlvZEluQml0czsKKworICAgIC8qbGludCAtZXs3MDJ9IHNoaWZ0IGZvciBwZXJmb3JtYW5jZSAqLworICAgIHBSZXZlcmItPm1fbkNvc0luY3JlbWVudCA9ICh0ZW1wQ29zIC0gcFJldmVyYi0+bV9uQ29zKQorICAgICAgICAgICAgPj4gcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5CaXRzOworCisgICAgLyogaW5jcmVtZW50IHVwZGF0ZSBjb3VudGVyICovCisgICAgcFJldmVyYi0+bV9uWGZhZGVDb3VudGVyICs9ICh1aW50MTZfdCkgbk51bVNhbXBsZXNUb0FkZDsKKworICAgIHJldHVybiAwOworCit9IC8qIGVuZCBSZXZlcmJVcGRhdGVYZmFkZSAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYkNhbGN1bGF0ZU5vaXNlCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBDYWxjdWxhdGUgYSBub2lzZSBzYW1wbGUgYW5kIGxpbWl0IGl0cyB2YWx1ZQorICoKKyAqIElucHV0czoKKyAqIG5NYXhFeGN1cnNpb24gLSBub2lzZSB2YWx1ZSBpcyBsaW1pdGVkIHRvIHRoaXMgdmFsdWUKKyAqIHBuTm9pc2UgLSByZXR1cm4gbmV3IG5vaXNlIHNhbXBsZSBpbiB0aGlzIChub3QgbGltaXRlZCkKKyAqCisgKiBPdXRwdXRzOgorICogbmV3IGxpbWl0ZWQgbm9pc2UgdmFsdWUKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKiAtICpwbk5vaXNlIG5vaXNlIHZhbHVlIGlzIHVwZGF0ZWQKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHVpbnQxNl90IFJldmVyYkNhbGN1bGF0ZU5vaXNlKHJldmVyYl9vYmplY3RfdCAqcFJldmVyYikgeworICAgIGludDE2X3Qgbk5vaXNlID0gcFJldmVyYi0+bV9uTm9pc2U7CisKKyAgICAvLyBjYWxjdWxhdGUgbmV3IG5vaXNlIHZhbHVlCisgICAgaWYgKHBSZXZlcmItPm1fYlVzZU5vaXNlKSB7CisgICAgICAgIG5Ob2lzZSA9IChpbnQxNl90KSAobk5vaXNlICogNSArIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5Ob2lzZSA9IDA7CisgICAgfQorCisgICAgcFJldmVyYi0+bV9uTm9pc2UgPSBuTm9pc2U7CisgICAgLy8gcmV0dXJuIHRoZSBsaW1pdGVkIG5vaXNlIHZhbHVlCisgICAgcmV0dXJuIChwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb24gJiBuTm9pc2UpOworCit9IC8qIGVuZCBSZXZlcmJDYWxjdWxhdGVOb2lzZSAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYkNhbGN1bGF0ZVNpbkNvcworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogQ2FsY3VsYXRlIGEgbmV3IHNpbiBhbmQgY29zaW5lIHZhbHVlIGJhc2VkIG9uIHRoZSBnaXZlbiBwaGFzZQorICoKKyAqIElucHV0czoKKyAqIG5QaGFzZSAgIC0gcGhhc2UgYW5nbGUKKyAqIHBuU2luICAgIC0gaW5wdXQgb2xkIHZhbHVlLCBvdXRwdXQgbmV3IHZhbHVlCisgKiBwbkNvcyAgICAtIGlucHV0IG9sZCB2YWx1ZSwgb3V0cHV0IG5ldyB2YWx1ZQorICoKKyAqIE91dHB1dHM6CisgKgorICogU2lkZSBFZmZlY3RzOgorICogLSAqcG5TaW4sICpwbkNvcyBhcmUgdXBkYXRlZAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW50IFJldmVyYkNhbGN1bGF0ZVNpbkNvcyhpbnQxNl90IG5QaGFzZSwgaW50MTZfdCAqcG5TaW4sIGludDE2X3QgKnBuQ29zKSB7CisgICAgaW50MzJfdCBuVGVtcDsKKyAgICBpbnQzMl90IG5OZXRBbmdsZTsKKworICAgIC8vICAtMSA8PSAgblBoYXNlICA8IDEKKyAgICAvLyBIb3dldmVyLCBmb3IgdGhlIGNhbGN1bGF0aW9uLCB3ZSBuZWVkIGEgdmFsdWUKKyAgICAvLyB0aGF0IHJhbmdlcyBmcm9tIC0xLzIgdG8gKzEvMiwgc28gZGl2aWRlIHRoZSBwaGFzZSBieSAyCisgICAgLypsaW50IC1lezcwMn0gc2hpZnQgZm9yIHBlcmZvcm1hbmNlICovCisgICAgbk5ldEFuZ2xlID0gblBoYXNlID4+IDE7CisKKyAgICAvKgorICAgICBJbXBsZW1lbnQgdGhlIGZvbGxvd2luZworICAgICBzaW4oeCkgPSAoMi00KmMpKnheMiArIGMgKyB4CisgICAgIGNvcyh4KSA9ICgyLTQqYykqeF4yICsgYyAtIHgKKworICAgICB3aGVyZSAgYyA9IDEvc3FydCgyKQorICAgICB1c2luZyB0aGUgYTAgKyB4KihhMSArIHgqYTIpIGFwcHJvYWNoCisgICAgICovCisKKyAgICAvKiBsaW1pdCB0aGUgaW5wdXQgImFuZ2xlIiB0byBiZSBiZXR3ZWVuIC0wLjUgYW5kICswLjUgKi8KKyAgICBpZiAobk5ldEFuZ2xlID4gRUcxX0hBTEYpIHsKKyAgICAgICAgbk5ldEFuZ2xlID0gRUcxX0hBTEY7CisgICAgfSBlbHNlIGlmIChuTmV0QW5nbGUgPCBFRzFfTUlOVVNfSEFMRikgeworICAgICAgICBuTmV0QW5nbGUgPSBFRzFfTUlOVVNfSEFMRjsKKyAgICB9CisKKyAgICAvKiBjYWxjdWxhdGUgc2luICovCisgICAgblRlbXAgPSBFRzFfT05FICsgTVVMVF9FRzFfRUcxKFJFVkVSQl9QQU5fRzIsIG5OZXRBbmdsZSk7CisgICAgblRlbXAgPSBSRVZFUkJfUEFOX0cwICsgTVVMVF9FRzFfRUcxKG5UZW1wLCBuTmV0QW5nbGUpOworICAgICpwblNpbiA9IChpbnQxNl90KSBTQVRVUkFURV9FRzEoblRlbXApOworCisgICAgLyogY2FsY3VsYXRlIGNvcyAqLworICAgIG5UZW1wID0gLUVHMV9PTkUgKyBNVUxUX0VHMV9FRzEoUkVWRVJCX1BBTl9HMiwgbk5ldEFuZ2xlKTsKKyAgICBuVGVtcCA9IFJFVkVSQl9QQU5fRzAgKyBNVUxUX0VHMV9FRzEoblRlbXAsIG5OZXRBbmdsZSk7CisgICAgKnBuQ29zID0gKGludDE2X3QpIFNBVFVSQVRFX0VHMShuVGVtcCk7CisKKyAgICByZXR1cm4gMDsKK30gLyogZW5kIFJldmVyYkNhbGN1bGF0ZVNpbkNvcyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogYXBwbHkgcmV2ZXJiIHRvIHRoZSBnaXZlbiBzaWduYWwKKyAqCisgKiBJbnB1dHM6CisgKiBuTnUKKyAqIHBuU2luICAgIC0gaW5wdXQgb2xkIHZhbHVlLCBvdXRwdXQgbmV3IHZhbHVlCisgKiBwbkNvcyAgICAtIGlucHV0IG9sZCB2YWx1ZSwgb3V0cHV0IG5ldyB2YWx1ZQorICoKKyAqIE91dHB1dHM6CisgKiBudW1iZXIgb2Ygc2FtcGxlcyBhY3R1YWxseSByZXZlcmJlcmF0ZWQKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyBpbnQgUmV2ZXJiKHJldmVyYl9vYmplY3RfdCAqcFJldmVyYiwgaW50IG5OdW1TYW1wbGVzVG9BZGQsCisgICAgICAgIHNob3J0ICpwT3V0cHV0QnVmZmVyLCBzaG9ydCAqcElucHV0QnVmZmVyKSB7CisgICAgaW50MzJfdCBpOworICAgIGludDMyX3QgbkRlbGF5T3V0MDsKKyAgICBpbnQzMl90IG5EZWxheU91dDE7CisgICAgdWludDE2X3QgbkJhc2U7CisKKyAgICB1aW50MzJfdCBuQWRkcjsKKyAgICBpbnQzMl90IG5UZW1wMTsKKyAgICBpbnQzMl90IG5UZW1wMjsKKyAgICBpbnQzMl90IG5BcEluOworICAgIGludDMyX3QgbkFwT3V0OworCisgICAgaW50MzJfdCBqOworICAgIGludDMyX3QgbkVhcmx5T3V0OworCisgICAgaW50MzJfdCB0ZW1wVmFsdWU7CisKKyAgICAvLyBnZXQgdGhlIGJhc2UgYWRkcmVzcworICAgIG5CYXNlID0gcFJldmVyYi0+bV9uQmFzZUluZGV4OworCisgICAgZm9yIChpID0gMDsgaSA8IG5OdW1TYW1wbGVzVG9BZGQ7IGkrKykgeworICAgICAgICAvLyAqKioqKioqKioqIExlZnQgQWxscGFzcyAtIHN0YXJ0CisgICAgICAgIG5BcEluID0gKnBJbnB1dEJ1ZmZlcjsKKyAgICAgICAgaWYgKCFwUmV2ZXJiLT5tX0F1eCkgeworICAgICAgICAgICAgcElucHV0QnVmZmVyKys7CisgICAgICAgIH0KKyAgICAgICAgLy8gc3RvcmUgdG8gZWFybHkgZGVsYXkgbGluZQorICAgICAgICBuQWRkciA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX25FYXJseTBpbiwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl0gPSAoc2hvcnQpIG5BcEluOworCisgICAgICAgIC8vIGxlZnQgaW5wdXQgPSAobGVmdCBkcnkgKiBtX25MYXRlR2FpbikgKyByaWdodCBmZWVkYmFjayBmcm9tIHByZXZpb3VzIHBlcmlvZAorCisgICAgICAgIG5BcEluID0gU0FUVVJBVEUobkFwSW4gKyBwUmV2ZXJiLT5tX25SZXZGYmtSKTsKKyAgICAgICAgbkFwSW4gPSBNVUxUX0VHMV9FRzEobkFwSW4sIHBSZXZlcmItPm1fbkxhdGVHYWluKTsKKworICAgICAgICAvLyBmZXRjaCBhbGxwYXNzIGRlbGF5IGxpbmUgb3V0CisgICAgICAgIC8vbkFkZHIgPSBDSVJDVUxBUihuQmFzZSwgcHNBcDAtPm1fekFwT3V0LCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgbkFkZHIKKyAgICAgICAgICAgICAgICA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX3NBcDAubV96QXBPdXQsIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICBuRGVsYXlPdXQwID0gcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXTsKKworICAgICAgICAvLyBjYWxjdWxhdGUgYWxscGFzcyBmZWVkZm9yd2FyZDsgc3VidHJhY3QgdGhlIGZlZWRmb3J3YXJkIHJlc3VsdAorICAgICAgICBuVGVtcDEgPSBNVUxUX0VHMV9FRzEobkFwSW4sIHBSZXZlcmItPm1fc0FwMC5tX25BcEdhaW4pOworICAgICAgICBuQXBPdXQgPSBTQVRVUkFURShuRGVsYXlPdXQwIC0gblRlbXAxKTsgLy8gYWxscGFzcyBvdXRwdXQKKworICAgICAgICAvLyBjYWxjdWxhdGUgYWxscGFzcyBmZWVkYmFjazsgYWRkIHRoZSBmZWVkYmFjayByZXN1bHQKKyAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5BcE91dCwgcFJldmVyYi0+bV9zQXAwLm1fbkFwR2Fpbik7CisgICAgICAgIG5UZW1wMSA9IFNBVFVSQVRFKG5BcEluICsgblRlbXAxKTsKKworICAgICAgICAvLyBpbmplY3QgaW50byBhbGxwYXNzIGRlbGF5CisgICAgICAgIG5BZGRyCisgICAgICAgICAgICAgICAgPSBDSVJDVUxBUihuQmFzZSwgcFJldmVyYi0+bV9zQXAwLm1fekFwSW4sIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdID0gKHNob3J0KSBuVGVtcDE7CisKKyAgICAgICAgLy8gaW5qZWN0IGFsbHBhc3Mgb3V0cHV0IGludG8gZGVsYXkgbGluZQorICAgICAgICBuQWRkciA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX3pEMEluLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXSA9IChzaG9ydCkgbkFwT3V0OworCisgICAgICAgIC8vICoqKioqKioqKiogTGVmdCBBbGxwYXNzIC0gZW5kCisKKyAgICAgICAgLy8gKioqKioqKioqKiBSaWdodCBBbGxwYXNzIC0gc3RhcnQKKyAgICAgICAgbkFwSW4gPSAoKnBJbnB1dEJ1ZmZlcisrKTsKKyAgICAgICAgLy8gc3RvcmUgdG8gZWFybHkgZGVsYXkgbGluZQorICAgICAgICBuQWRkciA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX25FYXJseTFpbiwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl0gPSAoc2hvcnQpIG5BcEluOworCisgICAgICAgIC8vIHJpZ2h0IGlucHV0ID0gKHJpZ2h0IGRyeSAqIG1fbkxhdGVHYWluKSArIGxlZnQgZmVlZGJhY2sgZnJvbSBwcmV2aW91cyBwZXJpb2QKKyAgICAgICAgLypsaW50IC1lezcwMn0gdXNlIHNoaWZ0IGZvciBwZXJmb3JtYW5jZSAqLworICAgICAgICBuQXBJbiA9IFNBVFVSQVRFKG5BcEluICsgcFJldmVyYi0+bV9uUmV2RmJrTCk7CisgICAgICAgIG5BcEluID0gTVVMVF9FRzFfRUcxKG5BcEluLCBwUmV2ZXJiLT5tX25MYXRlR2Fpbik7CisKKyAgICAgICAgLy8gZmV0Y2ggYWxscGFzcyBkZWxheSBsaW5lIG91dAorICAgICAgICBuQWRkcgorICAgICAgICAgICAgICAgID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fc0FwMS5tX3pBcE91dCwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIG5EZWxheU91dDEgPSBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBhbGxwYXNzIGZlZWRmb3J3YXJkOyBzdWJ0cmFjdCB0aGUgZmVlZGZvcndhcmQgcmVzdWx0CisgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuQXBJbiwgcFJldmVyYi0+bV9zQXAxLm1fbkFwR2Fpbik7CisgICAgICAgIG5BcE91dCA9IFNBVFVSQVRFKG5EZWxheU91dDEgLSBuVGVtcDEpOyAvLyBhbGxwYXNzIG91dHB1dAorCisgICAgICAgIC8vIGNhbGN1bGF0ZSBhbGxwYXNzIGZlZWRiYWNrOyBhZGQgdGhlIGZlZWRiYWNrIHJlc3VsdAorICAgICAgICBuVGVtcDEgPSBNVUxUX0VHMV9FRzEobkFwT3V0LCBwUmV2ZXJiLT5tX3NBcDEubV9uQXBHYWluKTsKKyAgICAgICAgblRlbXAxID0gU0FUVVJBVEUobkFwSW4gKyBuVGVtcDEpOworCisgICAgICAgIC8vIGluamVjdCBpbnRvIGFsbHBhc3MgZGVsYXkKKyAgICAgICAgbkFkZHIKKyAgICAgICAgICAgICAgICA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX3NBcDEubV96QXBJbiwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl0gPSAoc2hvcnQpIG5UZW1wMTsKKworICAgICAgICAvLyBpbmplY3QgYWxscGFzcyBvdXRwdXQgaW50byBkZWxheSBsaW5lCisgICAgICAgIG5BZGRyID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fekQxSW4sIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdID0gKHNob3J0KSBuQXBPdXQ7CisKKyAgICAgICAgLy8gKioqKioqKioqKiBSaWdodCBBbGxwYXNzIC0gZW5kCisKKyAgICAgICAgLy8gKioqKioqKioqKiBEMCBvdXRwdXQgLSBzdGFydAorICAgICAgICAvLyBmZXRjaCBkZWxheSBsaW5lIHNlbGYgb3V0CisgICAgICAgIG5BZGRyID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fekQwU2VsZiwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIG5EZWxheU91dDAgPSBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBkZWxheSBsaW5lIHNlbGYgb3V0CisgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuRGVsYXlPdXQwLCBwUmV2ZXJiLT5tX25TaW4pOworCisgICAgICAgIC8vIGZldGNoIGRlbGF5IGxpbmUgY3Jvc3Mgb3V0CisgICAgICAgIG5BZGRyID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fekQxQ3Jvc3MsIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICBuRGVsYXlPdXQwID0gcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXTsKKworICAgICAgICAvLyBjYWxjdWxhdGUgZGVsYXkgbGluZSBzZWxmIG91dAorICAgICAgICBuVGVtcDIgPSBNVUxUX0VHMV9FRzEobkRlbGF5T3V0MCwgcFJldmVyYi0+bV9uQ29zKTsKKworICAgICAgICAvLyBjYWxjdWxhdGUgdW5maWx0ZXJlZCBkZWxheSBvdXQKKyAgICAgICAgbkRlbGF5T3V0MCA9IFNBVFVSQVRFKG5UZW1wMSArIG5UZW1wMik7CisKKyAgICAgICAgLy8gKioqKioqKioqKiBEMCBvdXRwdXQgLSBlbmQKKworICAgICAgICAvLyAqKioqKioqKioqIEQxIG91dHB1dCAtIHN0YXJ0CisgICAgICAgIC8vIGZldGNoIGRlbGF5IGxpbmUgc2VsZiBvdXQKKyAgICAgICAgbkFkZHIgPSBDSVJDVUxBUihuQmFzZSwgcFJldmVyYi0+bV96RDFTZWxmLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgbkRlbGF5T3V0MSA9IHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl07CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGRlbGF5IGxpbmUgc2VsZiBvdXQKKyAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5EZWxheU91dDEsIHBSZXZlcmItPm1fblNpbik7CisKKyAgICAgICAgLy8gZmV0Y2ggZGVsYXkgbGluZSBjcm9zcyBvdXQKKyAgICAgICAgbkFkZHIgPSBDSVJDVUxBUihuQmFzZSwgcFJldmVyYi0+bV96RDBDcm9zcywgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIG5EZWxheU91dDEgPSBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBkZWxheSBsaW5lIHNlbGYgb3V0CisgICAgICAgIG5UZW1wMiA9IE1VTFRfRUcxX0VHMShuRGVsYXlPdXQxLCBwUmV2ZXJiLT5tX25Db3MpOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSB1bmZpbHRlcmVkIGRlbGF5IG91dAorICAgICAgICBuRGVsYXlPdXQxID0gU0FUVVJBVEUoblRlbXAxICsgblRlbXAyKTsKKworICAgICAgICAvLyAqKioqKioqKioqIEQxIG91dHB1dCAtIGVuZAorCisgICAgICAgIC8vICoqKioqKioqKiogbWl4ZXIgYW5kIGZlZWRiYWNrIC0gc3RhcnQKKyAgICAgICAgLy8gc3VtIGlzIGZlZGJhY2sgdG8gcmlnaHQgaW5wdXQgKFIgKyBMKQorICAgICAgICBuRGVsYXlPdXQwID0gKHNob3J0KSBTQVRVUkFURShuRGVsYXlPdXQwICsgbkRlbGF5T3V0MSk7CisKKyAgICAgICAgLy8gZGlmZmVyZW5jZSBpcyBmZWVkYmFjayB0byBsZWZ0IGlucHV0IChSIC0gTCkKKyAgICAgICAgLypsaW50IC1lezY4NX0gbGludCBjb21wbGFpbnMgdGhhdCBpdCBjYW4ndCBzYXR1cmF0ZSBuZWdhdGl2ZSAqLworICAgICAgICBuRGVsYXlPdXQxID0gKHNob3J0KSBTQVRVUkFURShuRGVsYXlPdXQxIC0gbkRlbGF5T3V0MCk7CisKKyAgICAgICAgLy8gKioqKioqKioqKiBtaXhlciBhbmQgZmVlZGJhY2sgLSBlbmQKKworICAgICAgICAvLyBjYWxjdWxhdGUgbG93cGFzcyBmaWx0ZXIgKG1peGVyIHNjYWxlIGZhY3RvciBpbmNsdWRlZCBpbiBMUEYgZmVlZGZvcndhcmQpCisgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuRGVsYXlPdXQwLCBwUmV2ZXJiLT5tX25SdmJMcGZGd2QpOworCisgICAgICAgIG5UZW1wMiA9IE1VTFRfRUcxX0VHMShwUmV2ZXJiLT5tX25SZXZGYmtMLCBwUmV2ZXJiLT5tX25SdmJMcGZGYmspOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBmaWx0ZXJlZCBkZWxheSBvdXQgYW5kIHNpbXVsdGFuZW91c2x5IHVwZGF0ZSBMUEYgc3RhdGUgdmFyaWFibGUKKyAgICAgICAgLy8gZmlsdGVyZWQgZGVsYXkgb3V0cHV0IGlzIHN0b3JlZCBpbiBtX25SZXZGYmtMCisgICAgICAgIHBSZXZlcmItPm1fblJldkZia0wgPSAoc2hvcnQpIFNBVFVSQVRFKG5UZW1wMSArIG5UZW1wMik7CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGxvd3Bhc3MgZmlsdGVyIChtaXhlciBzY2FsZSBmYWN0b3IgaW5jbHVkZWQgaW4gTFBGIGZlZWRmb3J3YXJkKQorICAgICAgICBuVGVtcDEgPSBNVUxUX0VHMV9FRzEobkRlbGF5T3V0MSwgcFJldmVyYi0+bV9uUnZiTHBmRndkKTsKKworICAgICAgICBuVGVtcDIgPSBNVUxUX0VHMV9FRzEocFJldmVyYi0+bV9uUmV2RmJrUiwgcFJldmVyYi0+bV9uUnZiTHBmRmJrKTsKKworICAgICAgICAvLyBjYWxjdWxhdGUgZmlsdGVyZWQgZGVsYXkgb3V0IGFuZCBzaW11bHRhbmVvdXNseSB1cGRhdGUgTFBGIHN0YXRlIHZhcmlhYmxlCisgICAgICAgIC8vIGZpbHRlcmVkIGRlbGF5IG91dHB1dCBpcyBzdG9yZWQgaW4gbV9uUmV2RmJrUgorICAgICAgICBwUmV2ZXJiLT5tX25SZXZGYmtSID0gKHNob3J0KSBTQVRVUkFURShuVGVtcDEgKyBuVGVtcDIpOworCisgICAgICAgIC8vICoqKioqKioqKiogc3RhcnQgZWFybHkgcmVmbGVjdGlvbiBnZW5lcmF0b3IsIGxlZnQKKyAgICAgICAgLy9wc0Vhcmx5ID0gJihwUmV2ZXJiLT5tX3NFYXJseUwpOworCisKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IFJFVkVSQl9NQVhfTlVNX1JFRkxFQ1RJT05TOyBqKyspIHsKKyAgICAgICAgICAgIC8vIGZldGNoIGRlbGF5IGxpbmUgb3V0CisgICAgICAgICAgICAvL25BZGRyID0gQ0lSQ1VMQVIobkJhc2UsIHBzRWFybHktPm1fekRlbGF5W2pdLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgICAgIG5BZGRyCisgICAgICAgICAgICAgICAgICAgID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fc0Vhcmx5TC5tX3pEZWxheVtqXSwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisKKyAgICAgICAgICAgIG5UZW1wMSA9IHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl07CisKKyAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSByZWZsZWN0aW9uCisgICAgICAgICAgICAvL25UZW1wMSA9IE1VTFRfRUcxX0VHMShuRGVsYXlPdXQwLCBwc0Vhcmx5LT5tX25HYWluW2pdKTsKKyAgICAgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuVGVtcDEsIHBSZXZlcmItPm1fc0Vhcmx5TC5tX25HYWluW2pdKTsKKworICAgICAgICAgICAgbkRlbGF5T3V0MCA9IFNBVFVSQVRFKG5EZWxheU91dDAgKyBuVGVtcDEpOworCisgICAgICAgIH0gLy8gZW5kIGZvciAoaj0wOyBqIDwgUkVWRVJCX01BWF9OVU1fUkVGTEVDVElPTlM7IGorKykKKworICAgICAgICAvLyBhcHBseSBsb3dwYXNzIHRvIGVhcmx5IHJlZmxlY3Rpb25zIGFuZCByZXZlcmIgb3V0cHV0CisgICAgICAgIC8vblRlbXAxID0gTVVMVF9FRzFfRUcxKG5FYXJseU91dCwgcHNFYXJseS0+bV9uUnZiTHBmRndkKTsKKyAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5EZWxheU91dDAsIHBSZXZlcmItPm1fblJvb21McGZGd2QpOworCisgICAgICAgIC8vblRlbXAyID0gTVVMVF9FRzFfRUcxKHBzRWFybHktPm1fekxwZiwgcHNFYXJseS0+bV9uTHBmRmJrKTsKKyAgICAgICAgblRlbXAyID0gTVVMVF9FRzFfRUcxKHBSZXZlcmItPm1fek91dExwZkwsIHBSZXZlcmItPm1fblJvb21McGZGYmspOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBmaWx0ZXJlZCBvdXQgYW5kIHNpbXVsdGFuZW91c2x5IHVwZGF0ZSBMUEYgc3RhdGUgdmFyaWFibGUKKyAgICAgICAgLy8gZmlsdGVyZWQgb3V0cHV0IGlzIHN0b3JlZCBpbiBtX3pPdXRMcGZMCisgICAgICAgIHBSZXZlcmItPm1fek91dExwZkwgPSAoc2hvcnQpIFNBVFVSQVRFKG5UZW1wMSArIG5UZW1wMik7CisKKyAgICAgICAgLy9zdW0gd2l0aCBvdXRwdXQgYnVmZmVyCisgICAgICAgIHRlbXBWYWx1ZSA9ICpwT3V0cHV0QnVmZmVyOworICAgICAgICAqcE91dHB1dEJ1ZmZlcisrID0gKHNob3J0KSBTQVRVUkFURSh0ZW1wVmFsdWUrcFJldmVyYi0+bV96T3V0THBmTCk7CisKKyAgICAgICAgLy8gKioqKioqKioqKiBlbmQgZWFybHkgcmVmbGVjdGlvbiBnZW5lcmF0b3IsIGxlZnQKKworICAgICAgICAvLyAqKioqKioqKioqIHN0YXJ0IGVhcmx5IHJlZmxlY3Rpb24gZ2VuZXJhdG9yLCByaWdodAorICAgICAgICAvL3BzRWFybHkgPSAmKHBSZXZlcmItPm1fc0Vhcmx5Uik7CisKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IFJFVkVSQl9NQVhfTlVNX1JFRkxFQ1RJT05TOyBqKyspIHsKKyAgICAgICAgICAgIC8vIGZldGNoIGRlbGF5IGxpbmUgb3V0CisgICAgICAgICAgICBuQWRkcgorICAgICAgICAgICAgICAgICAgICA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX3NFYXJseVIubV96RGVsYXlbal0sIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICAgICAgblRlbXAxID0gcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXTsKKworICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHJlZmxlY3Rpb24KKyAgICAgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuVGVtcDEsIHBSZXZlcmItPm1fc0Vhcmx5Ui5tX25HYWluW2pdKTsKKworICAgICAgICAgICAgbkRlbGF5T3V0MSA9IFNBVFVSQVRFKG5EZWxheU91dDEgKyBuVGVtcDEpOworCisgICAgICAgIH0gLy8gZW5kIGZvciAoaj0wOyBqIDwgUkVWRVJCX01BWF9OVU1fUkVGTEVDVElPTlM7IGorKykKKworICAgICAgICAvLyBhcHBseSBsb3dwYXNzIHRvIGVhcmx5IHJlZmxlY3Rpb25zCisgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuRGVsYXlPdXQxLCBwUmV2ZXJiLT5tX25Sb29tTHBmRndkKTsKKworICAgICAgICBuVGVtcDIgPSBNVUxUX0VHMV9FRzEocFJldmVyYi0+bV96T3V0THBmUiwgcFJldmVyYi0+bV9uUm9vbUxwZkZiayk7CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGZpbHRlcmVkIG91dCBhbmQgc2ltdWx0YW5lb3VzbHkgdXBkYXRlIExQRiBzdGF0ZSB2YXJpYWJsZQorICAgICAgICAvLyBmaWx0ZXJlZCBvdXRwdXQgaXMgc3RvcmVkIGluIG1fek91dExwZlIKKyAgICAgICAgcFJldmVyYi0+bV96T3V0THBmUiA9IChzaG9ydCkgU0FUVVJBVEUoblRlbXAxICsgblRlbXAyKTsKKworICAgICAgICAvL3N1bSB3aXRoIG91dHB1dCBidWZmZXIKKyAgICAgICAgdGVtcFZhbHVlID0gKnBPdXRwdXRCdWZmZXI7CisgICAgICAgICpwT3V0cHV0QnVmZmVyKysgPSAoc2hvcnQpIFNBVFVSQVRFKHRlbXBWYWx1ZSArIHBSZXZlcmItPm1fek91dExwZlIpOworCisgICAgICAgIC8vICoqKioqKioqKiogZW5kIGVhcmx5IHJlZmxlY3Rpb24gZ2VuZXJhdG9yLCByaWdodAorCisgICAgICAgIC8vIGRlY3JlbWVudCBiYXNlIGFkZHIgZm9yIG5leHQgc2FtcGxlIHBlcmlvZAorICAgICAgICBuQmFzZS0tOworCisgICAgICAgIHBSZXZlcmItPm1fblNpbiArPSBwUmV2ZXJiLT5tX25TaW5JbmNyZW1lbnQ7CisgICAgICAgIHBSZXZlcmItPm1fbkNvcyArPSBwUmV2ZXJiLT5tX25Db3NJbmNyZW1lbnQ7CisKKyAgICB9IC8vIGVuZCBmb3IgKGk9MDsgaSA8IG5OdW1TYW1wbGVzVG9BZGQ7IGkrKykKKworICAgIC8vIHN0b3JlIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbgorICAgIHBSZXZlcmItPm1fbkJhc2VJbmRleCA9IG5CYXNlOworCisgICAgcmV0dXJuIDA7Cit9IC8qIGVuZCBSZXZlcmIgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJVcGRhdGVSb29tCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBVcGRhdGUgdGhlIHJvb20ncyBwcmVzZXQgcGFyYW1ldGVycyBhcyByZXF1aXJlZAorICoKKyAqIElucHV0czoKKyAqCisgKiBPdXRwdXRzOgorICoKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKiAtIHJldmVyYiBwYXJhbXRlcnMgKGZiaywgZndkLCBldGMpIHdpbGwgYmUgY2hhbmdlZAorICogLSBtX25DdXJyZW50Um9vbSA6PSBtX25OZXh0Um9vbQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyBpbnQgUmV2ZXJiVXBkYXRlUm9vbShyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmIsIGJvb2wgZnVsbFVwZGF0ZSkgeworICAgIGludCB0ZW1wOworICAgIGludCBpOworICAgIGludCBtYXhTYW1wbGVzOworICAgIGludCBlYXJseURlbGF5OworICAgIGludCBlYXJseUdhaW47CisKKyAgICByZXZlcmJfcHJlc2V0X3QgKnBQcmVzZXQgPQorICAgICAgICAgICAgJnBSZXZlcmItPm1fc1ByZXNldC5tX3NQcmVzZXRbcFJldmVyYi0+bV9uTmV4dFJvb21dOworCisgICAgaWYgKGZ1bGxVcGRhdGUpIHsKKyAgICAgICAgcFJldmVyYi0+bV9uUnZiTHBmRndkID0gcFByZXNldC0+bV9uUnZiTHBmRndkOworICAgICAgICBwUmV2ZXJiLT5tX25SdmJMcGZGYmsgPSBwUHJlc2V0LT5tX25SdmJMcGZGYms7CisKKyAgICAgICAgcFJldmVyYi0+bV9uRWFybHlHYWluID0gcFByZXNldC0+bV9uRWFybHlHYWluOworICAgICAgICAvL3N0b3JlZCBhcyB0aW1lIGJhc2VkLCBjb252ZXJ0IHRvIHNhbXBsZSBiYXNlZAorICAgICAgICBwUmV2ZXJiLT5tX25MYXRlR2FpbiA9IHBQcmVzZXQtPm1fbkxhdGVHYWluOworICAgICAgICBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrID0gcFByZXNldC0+bV9uUm9vbUxwZkZiazsKKyAgICAgICAgcFJldmVyYi0+bV9uUm9vbUxwZkZ3ZCA9IHBQcmVzZXQtPm1fblJvb21McGZGd2Q7CisKKyAgICAgICAgLy8gc2V0IHRoZSBlYXJseSByZWZsZWN0aW9ucyBnYWlucworICAgICAgICBlYXJseUdhaW4gPSBwUHJlc2V0LT5tX25FYXJseUdhaW47CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSRVZFUkJfTUFYX05VTV9SRUZMRUNUSU9OUzsgaSsrKSB7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX3NFYXJseUwubV9uR2FpbltpXQorICAgICAgICAgICAgICAgICAgICA9IE1VTFRfRUcxX0VHMShwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpbltpXSxlYXJseUdhaW4pOworICAgICAgICAgICAgcFJldmVyYi0+bV9zRWFybHlSLm1fbkdhaW5baV0KKyAgICAgICAgICAgICAgICAgICAgPSBNVUxUX0VHMV9FRzEocFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5baV0sZWFybHlHYWluKTsKKyAgICAgICAgfQorCisgICAgICAgIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbiA9IHBQcmVzZXQtPm1fbk1heEV4Y3Vyc2lvbjsKKworICAgICAgICBwUmV2ZXJiLT5tX3NBcDAubV9uQXBHYWluID0gcFByZXNldC0+bV9uQXAwX0FwR2FpbjsKKyAgICAgICAgcFJldmVyYi0+bV9zQXAxLm1fbkFwR2FpbiA9IHBQcmVzZXQtPm1fbkFwMV9BcEdhaW47CisKKyAgICAgICAgLy8gc2V0IHRoZSBlYXJseSByZWZsZWN0aW9ucyBkZWxheQorICAgICAgICBlYXJseURlbGF5ID0gKChpbnQpIHBQcmVzZXQtPm1fbkVhcmx5RGVsYXkgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpCisgICAgICAgICAgICAgICAgPj4gMTY7CisgICAgICAgIHBSZXZlcmItPm1fbkVhcmx5RGVsYXkgPSBlYXJseURlbGF5OworICAgICAgICBtYXhTYW1wbGVzID0gKGludDMyX3QpIChNQVhfRUFSTFlfVElNRSAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkKKyAgICAgICAgICAgICAgICA+PiAxNjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFJFVkVSQl9NQVhfTlVNX1JFRkxFQ1RJT05TOyBpKyspIHsKKyAgICAgICAgICAgIC8vc3RvcmVkIGFzIHRpbWUgYmFzZWQsIGNvbnZlcnQgdG8gc2FtcGxlIGJhc2VkCisgICAgICAgICAgICB0ZW1wID0gZWFybHlEZWxheSArICgoKGludCkgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5W2ldCisgICAgICAgICAgICAgICAgICAgICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNik7CisgICAgICAgICAgICBpZiAodGVtcCA+IG1heFNhbXBsZXMpCisgICAgICAgICAgICAgICAgdGVtcCA9IG1heFNhbXBsZXM7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX3NFYXJseUwubV96RGVsYXlbaV0gPSBwUmV2ZXJiLT5tX25FYXJseTBpbiArIHRlbXA7CisgICAgICAgICAgICAvL3N0b3JlZCBhcyB0aW1lIGJhc2VkLCBjb252ZXJ0IHRvIHNhbXBsZSBiYXNlZAorICAgICAgICAgICAgdGVtcCA9IGVhcmx5RGVsYXkgKyAoKChpbnQpIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVtpXQorICAgICAgICAgICAgICAgICAgICAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkgPj4gMTYpOworICAgICAgICAgICAgaWYgKHRlbXAgPiBtYXhTYW1wbGVzKQorICAgICAgICAgICAgICAgIHRlbXAgPSBtYXhTYW1wbGVzOworICAgICAgICAgICAgcFJldmVyYi0+bV9zRWFybHlSLm1fekRlbGF5W2ldID0gcFJldmVyYi0+bV9uRWFybHkxaW4gKyB0ZW1wOworICAgICAgICB9CisKKyAgICAgICAgbWF4U2FtcGxlcyA9IChpbnQzMl90KSAoTUFYX0RFTEFZX1RJTUUgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpCisgICAgICAgICAgICAgICAgPj4gMTY7CisgICAgICAgIC8vc3RvcmVkIGFzIHRpbWUgYmFzZWQsIGNvbnZlcnQgdG8gc2FtcGxlIGJhc2VkCisgICAgICAgIC8qbGludCAtZXs3MDJ9IHNoaWZ0IGZvciBwZXJmb3JtYW5jZSAqLworICAgICAgICB0ZW1wID0gKHBQcmVzZXQtPm1fbkxhdGVEZWxheSAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkgPj4gMTY7CisgICAgICAgIGlmICgodGVtcCArIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbikgPiBtYXhTYW1wbGVzKSB7CisgICAgICAgICAgICB0ZW1wID0gbWF4U2FtcGxlcyAtIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbjsKKyAgICAgICAgfQorICAgICAgICB0ZW1wIC09IHBSZXZlcmItPm1fbkxhdGVEZWxheTsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXkwT3V0ICs9IHRlbXA7CisgICAgICAgIHBSZXZlcmItPm1fbkRlbGF5MU91dCArPSB0ZW1wOworICAgICAgICBwUmV2ZXJiLT5tX25MYXRlRGVsYXkgKz0gdGVtcDsKKworICAgICAgICBtYXhTYW1wbGVzID0gKGludDMyX3QpIChNQVhfQVBfVElNRSAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkgPj4gMTY7CisgICAgICAgIC8vc3RvcmVkIGFzIHRpbWUgYmFzZWQsIGNvbnZlcnQgdG8gYWJzb2x1dGUgc2FtcGxlIHZhbHVlCisgICAgICAgIHRlbXAgPSBwUHJlc2V0LT5tX25BcDBfQXBPdXQ7CisgICAgICAgIC8qbGludCAtZXs3MDJ9IHNoaWZ0IGZvciBwZXJmb3JtYW5jZSAqLworICAgICAgICB0ZW1wID0gKHRlbXAgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpID4+IDE2OworICAgICAgICBpZiAodGVtcCA+IG1heFNhbXBsZXMpCisgICAgICAgICAgICB0ZW1wID0gbWF4U2FtcGxlczsKKyAgICAgICAgcFJldmVyYi0+bV9zQXAwLm1fekFwT3V0ID0gKHVpbnQxNl90KSAocFJldmVyYi0+bV9zQXAwLm1fekFwSW4gKyB0ZW1wKTsKKworICAgICAgICAvL3N0b3JlZCBhcyB0aW1lIGJhc2VkLCBjb252ZXJ0IHRvIGFic29sdXRlIHNhbXBsZSB2YWx1ZQorICAgICAgICB0ZW1wID0gcFByZXNldC0+bV9uQXAxX0FwT3V0OworICAgICAgICAvKmxpbnQgLWV7NzAyfSBzaGlmdCBmb3IgcGVyZm9ybWFuY2UgKi8KKyAgICAgICAgdGVtcCA9ICh0ZW1wICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKyAgICAgICAgaWYgKHRlbXAgPiBtYXhTYW1wbGVzKQorICAgICAgICAgICAgdGVtcCA9IG1heFNhbXBsZXM7CisgICAgICAgIHBSZXZlcmItPm1fc0FwMS5tX3pBcE91dCA9ICh1aW50MTZfdCkgKHBSZXZlcmItPm1fc0FwMS5tX3pBcEluICsgdGVtcCk7CisgICAgICAgIC8vZ3BzUmV2ZXJiT2JqZWN0LT5tX3NBcDEubV96QXBPdXQgPSBwUHJlc2V0LT5tX25BcDFfQXBPdXQ7CisgICAgfQorCisgICAgLy9zdG9yZWQgYXMgdGltZSBiYXNlZCwgY29udmVydCB0byBzYW1wbGUgYmFzZWQKKyAgICB0ZW1wID0gcFByZXNldC0+bV9uWGZhZGVJbnRlcnZhbDsKKyAgICAvKmxpbnQgLWV7NzAyfSBzaGlmdCBmb3IgcGVyZm9ybWFuY2UgKi8KKyAgICB0ZW1wID0gKHRlbXAgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpID4+IDE2OworICAgIHBSZXZlcmItPm1fblhmYWRlSW50ZXJ2YWwgPSAodWludDE2X3QpIHRlbXA7CisgICAgLy9nc1JldmVyYk9iamVjdC5tX25YZmFkZUludGVydmFsID0gcFByZXNldC0+bV9uWGZhZGVJbnRlcnZhbDsKKyAgICBwUmV2ZXJiLT5tX25YZmFkZUNvdW50ZXIgPSBwUmV2ZXJiLT5tX25YZmFkZUludGVydmFsICsgMTsgLy8gZm9yY2UgdXBkYXRlIG9uIGZpcnN0IGl0ZXJhdGlvbgorCisgICAgcFJldmVyYi0+bV9uQ3VycmVudFJvb20gPSBwUmV2ZXJiLT5tX25OZXh0Um9vbTsKKworICAgIHJldHVybiAwOworCit9IC8qIGVuZCBSZXZlcmJVcGRhdGVSb29tICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiUmVhZEluUHJlc2V0cygpCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6IHNldHMgZ2xvYmFsIHJldmVyYiBwcmVzZXQgYmFuayB0byBkZWZhdWx0cworICoKKyAqIElucHV0czoKKyAqCisgKiBPdXRwdXRzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW50IFJldmVyYlJlYWRJblByZXNldHMocmV2ZXJiX29iamVjdF90ICpwUmV2ZXJiKSB7CisKKyAgICBpbnQgcHJlc2V0ID0gMDsKKyAgICBpbnQgZGVmYXVsdFByZXNldCA9IDA7CisKKyAgICAvL25vdyBpbml0IGFueSByZW1haW5pbmcgcHJlc2V0cyB0byBkZWZhdWx0cworICAgIGZvciAoZGVmYXVsdFByZXNldCA9IHByZXNldDsgZGVmYXVsdFByZXNldCA8IFJFVkVSQl9NQVhfUk9PTV9UWVBFOyBkZWZhdWx0UHJlc2V0KyspIHsKKyAgICAgICAgcmV2ZXJiX3ByZXNldF90ICpwUHJlc2V0ID0gJnBSZXZlcmItPm1fc1ByZXNldC5tX3NQcmVzZXRbZGVmYXVsdFByZXNldF07CisgICAgICAgIGlmIChkZWZhdWx0UHJlc2V0ID09IDAgfHwgZGVmYXVsdFByZXNldCA+IFJFVkVSQl9NQVhfUk9PTV9UWVBFIC0gMSkgeworICAgICAgICAgICAgcFByZXNldC0+bV9uUnZiTHBmRmJrID0gODMwNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJ2YkxwZkZ3ZCA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9uRWFybHlHYWluID0gMjc2OTA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25FYXJseURlbGF5ID0gMTMxMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkxhdGVHYWluID0gODE5MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkxhdGVEZWxheSA9IDM5MzI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25Sb29tTHBmRmJrID0gMzY5MjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJvb21McGZGd2QgPSAyNDU2OTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVswXSA9IDEzNzY7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblswXSA9IDIyMTUyOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzFdID0gMjE2MzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzFdID0gMTc1Mzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbMl0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bMl0gPSAxNDc2ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVszXSA9IDE4MzU7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblszXSA9IDE0MzA3OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzRdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzRdID0gMTMzODQ7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMF0gPSA3MjE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblswXSA9IDIwMzA2OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzFdID0gMjYyMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzFdID0gMTc1Mzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMl0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bMl0gPSAxNDc2ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVszXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblszXSA9IDE2MTUzOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzRdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzRdID0gMTMzODQ7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25NYXhFeGN1cnNpb24gPSAxMjc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25YZmFkZUludGVydmFsID0gNjM4ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMF9BcEdhaW4gPSAxNTY5MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMF9BcE91dCA9IDcxMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMV9BcEdhaW4gPSAxNjMxNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMV9BcE91dCA9IDEwMjk7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTQgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU1ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NiA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTcgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU4ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1OSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTEwID0gMDsKKyAgICAgICAgfSBlbHNlIGlmIChkZWZhdWx0UHJlc2V0ID09IDEpIHsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJ2YkxwZkZiayA9IDY0NjE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25SdmJMcGZGd2QgPSAxNDMwNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkVhcmx5R2FpbiA9IDI3NjkwOworICAgICAgICAgICAgcFByZXNldC0+bV9uRWFybHlEZWxheSA9IDEzMTE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25MYXRlR2FpbiA9IDgxOTE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25MYXRlRGVsYXkgPSAzOTMyOworICAgICAgICAgICAgcFByZXNldC0+bV9uUm9vbUxwZkZiayA9IDM2OTI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25Sb29tTHBmRndkID0gMjQ1Njk7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbMF0gPSAxMzc2OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bMF0gPSAyMjE1MjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVsxXSA9IDE0NjI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblsxXSA9IDE3NTM3OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzJdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzJdID0gMTQ3Njg7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbM10gPSAxODM1OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bM10gPSAxNDMwNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVs0XSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2Fpbls0XSA9IDEzMzg0OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzBdID0gNzIxOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bMF0gPSAyMDMwNjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVsxXSA9IDI2MjE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblsxXSA9IDE3NTM3OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzJdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzJdID0gMTQ3Njg7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbM10gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bM10gPSAxNjE1MzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVs0XSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2Fpbls0XSA9IDEzMzg0OworICAgICAgICAgICAgcFByZXNldC0+bV9uTWF4RXhjdXJzaW9uID0gMTI3OworICAgICAgICAgICAgcFByZXNldC0+bV9uWGZhZGVJbnRlcnZhbCA9IDYzOTE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25BcDBfQXBHYWluID0gMTUyMzA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25BcDBfQXBPdXQgPSA3MDg7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25BcDFfQXBHYWluID0gMTU1NDc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25BcDFfQXBPdXQgPSAxMDIzOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU0ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTYgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU3ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1OCA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTkgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnUxMCA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoZGVmYXVsdFByZXNldCA9PSAyKSB7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25SdmJMcGZGYmsgPSA1MDc3OworICAgICAgICAgICAgcFByZXNldC0+bV9uUnZiTHBmRndkID0gMTI5MjI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25FYXJseUdhaW4gPSAyNzY5MDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkVhcmx5RGVsYXkgPSAxMzExOworICAgICAgICAgICAgcFByZXNldC0+bV9uTGF0ZUdhaW4gPSA4MTkxOworICAgICAgICAgICAgcFByZXNldC0+bV9uTGF0ZURlbGF5ID0gMzkzMjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJvb21McGZGYmsgPSAzNjkyOworICAgICAgICAgICAgcFByZXNldC0+bV9uUm9vbUxwZkZ3ZCA9IDIxNzAzOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzBdID0gMTM3NjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzBdID0gMjIxNTI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbMV0gPSAxNDYyOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bMV0gPSAxNzUzNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVsyXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblsyXSA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzNdID0gMTgzNTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzNdID0gMTQzMDc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbNF0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bNF0gPSAxMzM4NDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVswXSA9IDcyMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzBdID0gMjAzMDY7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMV0gPSAyNjIxOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bMV0gPSAxNzUzNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVsyXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblsyXSA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzNdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzNdID0gMTYxNTM7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbNF0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bNF0gPSAxMzM4NDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbk1heEV4Y3Vyc2lvbiA9IDEyNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblhmYWRlSW50ZXJ2YWwgPSA2NDQ5OworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAwX0FwR2FpbiA9IDE1NjkxOworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAwX0FwT3V0ID0gNzc0OworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAxX0FwR2FpbiA9IDE2MzE3OworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAxX0FwT3V0ID0gMTE1NTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NCA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTUgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU2ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NyA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTggPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU5ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1MTAgPSAwOworICAgICAgICB9IGVsc2UgaWYgKGRlZmF1bHRQcmVzZXQgPT0gMykgeworICAgICAgICAgICAgcFByZXNldC0+bV9uUnZiTHBmRmJrID0gNTA3NzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJ2YkxwZkZ3ZCA9IDExMDc2OworICAgICAgICAgICAgcFByZXNldC0+bV9uRWFybHlHYWluID0gMjc2OTA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25FYXJseURlbGF5ID0gMTMxMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkxhdGVHYWluID0gODE5MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkxhdGVEZWxheSA9IDM5MzI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25Sb29tTHBmRmJrID0gMzY5MjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJvb21McGZGd2QgPSAyMDQ3NDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVswXSA9IDEzNzY7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblswXSA9IDIyMTUyOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzFdID0gMTQ2MjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzFdID0gMTc1Mzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbMl0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bMl0gPSAxNDc2ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVszXSA9IDE4MzU7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblszXSA9IDE0MzA3OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzRdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzRdID0gMTMzODQ7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMF0gPSA3MjE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblswXSA9IDIwMzA2OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzFdID0gMjYyMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzFdID0gMTc1Mzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMl0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bMl0gPSAxNDc2ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVszXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblszXSA9IDE2MTUzOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzRdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzRdID0gMTMzODQ7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25NYXhFeGN1cnNpb24gPSAxMjc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25YZmFkZUludGVydmFsID0gNjQ3MDsgLy82NDgzOworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAwX0FwR2FpbiA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAwX0FwT3V0ID0gNzkyOworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAxX0FwR2FpbiA9IDE0Nzc3OworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAxX0FwT3V0ID0gMTE5MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NCA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTUgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU2ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NyA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTggPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU5ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1MTAgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdFJldmVyYi5oIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RSZXZlcmIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWFhZGZhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RSZXZlcmIuaApAQCAtMCwwICsxLDQyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9FRkZFQ1RSRVZFUkJfSF8KKyNkZWZpbmUgQU5EUk9JRF9FRkZFQ1RSRVZFUkJfSF8KKworI2luY2x1ZGUgPG1lZGlhL0VmZmVjdFJldmVyYkFwaS5oPgorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkZWZpbmVzCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworLyoKK0NJUkNVTEFSKCkgY2FsY3VsYXRlcyB0aGUgYXJyYXkgaW5kZXggdXNpbmcgbW9kdWxvIGFyaXRobWV0aWMuCitUaGUgInRyaWNrIiBpcyB0aGF0IG1vZHVsbyBhcml0aG1ldGljIGlzIHNpbXBsaWZpZWQgYnkgbWFza2luZwordGhlIGVmZmVjdGl2ZSBhZGRyZXNzIHdoZXJlIHRoZSBtYXNrIGlzICgyXm4pLTEuIFRoaXMgb25seSB3b3JrcworaWYgdGhlIGJ1ZmZlciBzaXplIGlzIGEgcG93ZXIgb2YgdHdvLgorKi8KKyNkZWZpbmUgQ0lSQ1VMQVIoYmFzZSxvZmZzZXQsc2l6ZSkgKHVpbnQzMl90KSggICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShiYXNlKSkgKyAoKGludDMyX3QpKG9mZnNldCkpICAgICBcCisgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAmIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworI2RlZmluZSBOVU1fT1VUUFVUX0NIQU5ORUxTIDIKKyNkZWZpbmUgT1VUUFVUX0NIQU5ORUxTIENIQU5ORUxfU1RFUkVPCisKKyNkZWZpbmUgUkVWRVJCX0JVRkZFUl9TSVpFX0lOX1NBTVBMRVNfTUFYICAgMTYzODQKKworI2RlZmluZSBSRVZFUkJfTUFYX1JPT01fVFlQRSAgICAgICAgICAgIDQgICAvLyBhbnkgcm9vbSBudW1iZXJzIGxhcmdlciB0aGFuIHRoaXMgYXJlIGludmFsaWQKKyNkZWZpbmUgUkVWRVJCX01BWF9OVU1fUkVGTEVDVElPTlMgICAgICA1ICAgLy8gbWF4IG51bSByZWZsZWN0aW9ucyBwZXIgY2hhbm5lbAorCisKKy8vIHhmYWRlIHBhcmFtZXRlcnMKKyNkZWZpbmUgUkVWRVJCX1hGQURFX1BFUklPRF9JTl9TRUNPTkRTICAgICAgKGRvdWJsZSkgKDEwMC4wIC8gMTAwMC4wKSAgICAgICAgLy8geGZhZGUgb25jZSBldmVyeSB0aGlzIG1hbnkgc2Vjb25kcworCisKKy8qKioqKioqKioqLworLyogdGhlIGVudGlyZSBzeW50aCB1c2VzIHZhcmlvdXMgZmxhZ3MgaW4gYSBiaXQgZmllbGQgKi8KKworLyogaWYgZmxhZyBpcyBzZXQsIHN5bnRoIHJlc2V0IGhhcyBiZWVuIHJlcXVlc3RlZCAqLworI2RlZmluZSBSRVZFUkJfRkxBR19SRVNFVF9JU19SRVFVRVNURUQgICAgICAgICAgMHgwMSAgICAvKiBiaXQgMCAqLworI2RlZmluZSBNQVNLX1JFVkVSQl9SRVNFVF9JU19SRVFVRVNURUQgICAgICAgICAgMHgwMQorI2RlZmluZSBNQVNLX1JFVkVSQl9SRVNFVF9JU19OT1RfUkVRVUVTVEVEICAgICAgKHVpbnQzMl90KSh+TUFTS19SRVZFUkJfUkVTRVRfSVNfUkVRVUVTVEVEKQorCisvKgorYnkgZGVmYXVsdCwgd2UgYWx3YXlzIHdhbnQgdG8gdXBkYXRlIEFMTCBjaGFubmVsIHBhcmFtZXRlcnMKK3doZW4gd2UgcmVzZXQgdGhlIHN5bnRoIChlLmcuLCBkdXJpbmcgR00gT04pCisqLworI2RlZmluZSBERUZBVUxUX1JFVkVSQl9GTEFHUyAgICAgICAgICAgICAgICAgICAgMHgwCisKKy8qIGNvZWZmaWNpZW50cyBmb3IgZ2VuZXJhdGluZyBzaW4sIGNvcyAqLworI2RlZmluZSBSRVZFUkJfUEFOX0cyICAgNDI5NDk0MDE1MSAgICAgICAgICAvKiAtMC44Mjg0MjcxMjQ3NDYxOSA9IDIgLSA0L3NxcnQoMikgKi8KKy8qCitpbnQzMl90IG5QYW5HMSA9ICsxLjAgZm9yIHNpbgoraW50MzJfdCBuUGFuRzEgPSAtMS4wIGZvciBjb3MKKyovCisjZGVmaW5lIFJFVkVSQl9QQU5fRzAgICAyMzE3MCAgICAgICAgICAgICAgIC8qIDAuNzA3MTA2NzgxMTg2NTQ3ID0gMS9zcXJ0KDIpICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gZGVmaW5lIHRoZSBpbnB1dCBpbmplY3Rpb24gcG9pbnRzCisjZGVmaW5lIEdVQVJEICAgICAgICAgICAgICAgNSAgICAgICAgICAgICAgICAgICAgICAgLy8gc2FmZXR5IGd1YXJkIG9mIHRoaXMgbWFueSBzYW1wbGVzCisKKyNkZWZpbmUgTUFYX0FQX1RJTUUgICAgICAgICAoaW50KSAoKDIwKjY1NTM2KS8xMDAwKSAgLy8gZGVsYXkgdGltZSBpbiB0aW1lIHVuaXRzICg2NTUzNnRoIG9mIHNlYykKKyNkZWZpbmUgTUFYX0RFTEFZX1RJTUUgICAgICAoaW50KSAoKDY1KjY1NTM2KS8xMDAwKSAgLy8gZGVsYXkgdGltZSBpbiB0aW1lIHVuaXRzCisjZGVmaW5lIE1BWF9FQVJMWV9USU1FICAgICAgKGludCkgKCg2NSo2NTUzNikvMTAwMCkgIC8vIGRlbGF5IHRpbWUgaW4gdGltZSB1bml0cworCisjZGVmaW5lIEFQMF9JTiAgICAgICAgICAgICAgMAorCisKKyNkZWZpbmUgUkVWRVJCX0RFRkFVTFRfUk9PTV9OVU1CRVIgICAgICAxICAgICAgIC8vIGRlZmF1bHQgcHJlc2V0IG51bWJlcgorI2RlZmluZSBERUZBVUxUX0FQMF9HQUlOICAgICAgICAgICAgICAgIDE5NDAwCisjZGVmaW5lIERFRkFVTFRfQVAxX0dBSU4gICAgICAgICAgICAgICAgLTE5NDAwCisKKyNkZWZpbmUgUkVWRVJCX0RFRkFVTFRfV0VUICAgICAgICAgICAgICAzMjc2NworI2RlZmluZSBSRVZFUkJfREVGQVVMVF9EUlkgICAgICAgICAgICAgIDAKKworI2RlZmluZSBSRVZFUkJfV0VUX01BWCAgICAgICAgICAgICAgMzI3NjcKKyNkZWZpbmUgUkVWRVJCX1dFVF9NSU4gICAgICAgICAgICAgIDAKKyNkZWZpbmUgUkVWRVJCX0RSWV9NQVggICAgICAgICAgICAgIDMyNzY3CisjZGVmaW5lIFJFVkVSQl9EUllfTUlOICAgICAgICAgICAgICAwCisKKy8vIGNvbnN0YW50cyBmb3IgcmV2ZXJiIGRlbnNpdHkKKy8vIFRoZSBkZW5zaXR5IGV4cHJlc3NlZCBpbiBwZXJtaWxsZXMgY2hhbmdlcyB0aGUgQWxscGFzcyBkZWxheSBpbiBhIGxpbmVhciBtYW5uZXIgaW4gdGhlIHJhbmdlIGRlZmluZWQgYnkKKy8vIEFQMF9USU1FX0JBU0UgdG8gQVAwX1RJTUVfQkFTRSArIEFQMF9USU1FX1JBTkdFCisjZGVmaW5lIEFQMF9USU1FX0JBU0UgKGludCkoKDkqNjU1MzYpLzEwMDApCisjZGVmaW5lIEFQMF9USU1FX1JBTkdFIChpbnQpKCg0KjY1NTM2KS8xMDAwKQorI2RlZmluZSBBUDFfVElNRV9CQVNFIChpbnQpKCgxMio2NTUzNikvMTAwMCkKKyNkZWZpbmUgQVAxX1RJTUVfUkFOR0UgKGludCkoKDgqNjU1MzYpLzEwMDApCisKKy8vIGNvbnN0YW50cyBmb3IgcmV2ZXJiIGRpZmZ1c2lvbgorLy8gVGhlIGRpZmZ1c2lvbiBleHByZXNzZWQgaW4gcGVybWlsbGVzIGNoYW5nZXMgdGhlIEFsbHBhc3MgZ2FpbiBpbiBhIGxpbmVhciBtYW5uZXIgaW4gdGhlIHJhbmdlIGRlZmluZWQgYnkKKy8vIEFQMF9HQUlOX0JBU0UgdG8gQVAwX0dBSU5fQkFTRSArIEFQMF9HQUlOX1JBTkdFCisjZGVmaW5lIEFQMF9HQUlOX0JBU0UgKGludCkoOTgzMCkKKyNkZWZpbmUgQVAwX0dBSU5fUkFOR0UgKGludCkoMTk2NjAtOTgzMCkKKyNkZWZpbmUgQVAxX0dBSU5fQkFTRSAoaW50KSg2NTUzKQorI2RlZmluZSBBUDFfR0FJTl9SQU5HRSAoaW50KSgyMjkzNi02NTUzKQorCisKKy8qIHBhcmFtZXRlcnMgZm9yIGVhY2ggYWxscGFzcyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICB1aW50MTZfdCAgICAgICAgICAgICBtX3pBcE91dDsgICAgICAgLy8gZGVsYXkgb2Zmc2V0IGZvciBhcCBvdXQKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uQXBHYWluOyAgICAgIC8vIGdhaW4gZm9yIGFwCisKKyAgICB1aW50MTZfdCAgICAgICAgICAgICBtX3pBcEluOyAgICAgICAgLy8gZGVsYXkgb2Zmc2V0IGZvciBhcCBpbgorCit9IGFsbHBhc3Nfb2JqZWN0X3Q7CisKKworLyogcGFyYW1ldGVycyBmb3IgZWFybHkgcmVmbGVjdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgdWludDE2X3QgICAgICAgICAgICBtX3pEZWxheVtSRVZFUkJfTUFYX05VTV9SRUZMRUNUSU9OU107ICAgLy8gZGVsYXkgb2Zmc2V0IGZvciBhcCBvdXQKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uR2FpbltSRVZFUkJfTUFYX05VTV9SRUZMRUNUSU9OU107ICAgIC8vIGdhaW4gZm9yIGFwCisKK30gZWFybHlfcmVmbGVjdGlvbl9vYmplY3RfdDsKKworLy9kZW1vCit0eXBlZGVmIHN0cnVjdAoreworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uUnZiTHBmRmJrOworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uUnZiTHBmRndkOworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uUm9vbUxwZkZiazsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblJvb21McGZGd2Q7CisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkVhcmx5R2FpbjsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkVhcmx5RGVsYXk7CisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25MYXRlR2FpbjsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkxhdGVEZWxheTsKKworICAgIGVhcmx5X3JlZmxlY3Rpb25fb2JqZWN0X3QgbV9zRWFybHlMOworICAgIGVhcmx5X3JlZmxlY3Rpb25fb2JqZWN0X3QgbV9zRWFybHlSOworCisgICAgdWludDE2X3QgICAgICAgICAgICBtX25NYXhFeGN1cnNpb247IC8vMjgKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblhmYWRlSW50ZXJ2YWw7CisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkFwMF9BcEdhaW47IC8vMzAKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkFwMF9BcE91dDsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkFwMV9BcEdhaW47CisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25BcDFfQXBPdXQ7CisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25EaWZmdXNpb247CisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fcmZ1NDsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fcmZ1NTsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fcmZ1NjsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fcmZ1NzsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fcmZ1ODsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fcmZ1OTsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fcmZ1MTA7IC8vNDMKKworfSByZXZlcmJfcHJlc2V0X3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgcmV2ZXJiX3ByZXNldF90ICAgICBtX3NQcmVzZXRbUkVWRVJCX01BWF9ST09NX1RZUEVdOyAgICAvL2FycmF5IG9mIHByZXNldHMKKworfSByZXZlcmJfcHJlc2V0X2JhbmtfdDsKKworCisvKiBwYXJhbWV0ZXJzIGZvciBlYWNoIHJldmVyYiAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICAvKiB1cGRhdGUgY291bnRlciBrZWVwcyB0cmFjayBvZiB3aGVuIHN5bnRoIHBhcmFtcyBuZWVkIHVwZGF0aW5nICovCisgICAgLyogb25seSBuZWVkcyB0byBiZSBhcyBsYXJnZSBhcyBSRVZFUkJfVVBEQVRFX1BFUklPRF9JTl9TQU1QTEVTICovCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25VcGRhdGVDb3VudGVyOworCisgICAgdWludDE2X3QgICAgICAgICAgICAgbV9uQmFzZUluZGV4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFzZSBpbmRleCBmb3IgY2lyY3VsYXIgYnVmZmVyCisKKyAgICAvLyByZXZlcmIgZGVsYXkgbGluZSBvZmZzZXRzLCBhbGxwYXNzIHBhcmFtZXRlcnMsIGV0YzoKKworICAgIHNob3J0ICAgICAgICAgICAgIG1fblJldkZia1I7ICAgICAgICAgICAgICAvLyBjb21iaW5lIGZlZWRiYWNrIHJldmVyYiByaWdodCBvdXQgd2l0aCBkcnkgbGVmdCBpbgorICAgIHNob3J0ICAgICAgICAgICAgIG1fek91dExwZkw7ICAgICAgICAgICAgICAvLyBsZWZ0IHJldmVyYiBvdXRwdXQKKworICAgIGFsbHBhc3Nfb2JqZWN0X3QgICAgbV9zQXAwOyAgICAgICAgICAgICAgICAgICAgIC8vIGFsbHBhc3MgMCAobGVmdCBjaGFubmVsKQorCisgICAgdWludDE2X3QgICAgICAgICAgICAgbV96RDBJbjsgICAgICAgICAgICAgICAgICAgIC8vIGRlbGF5IG9mZnNldCBmb3IgZGVsYXkgbGluZSBEMCBpbgorCisgICAgc2hvcnQgICAgICAgICAgICAgbV9uUmV2RmJrTDsgICAgICAgICAgICAgIC8vIGNvbWJpbmUgZmVlZGJhY2sgcmV2ZXJiIGxlZnQgb3V0IHdpdGggZHJ5IHJpZ2h0IGluCisgICAgc2hvcnQgICAgICAgICAgICAgbV96T3V0THBmUjsgICAgICAgICAgICAgIC8vIHJpZ2h0IHJldmVyYiBvdXRwdXQKKworICAgIGFsbHBhc3Nfb2JqZWN0X3QgICAgbV9zQXAxOyAgICAgICAgICAgICAgICAgICAgIC8vIGFsbHBhc3MgMSAocmlnaHQgY2hhbm5lbCkKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgIG1fekQxSW47ICAgICAgICAgICAgICAgICAgICAvLyBkZWxheSBvZmZzZXQgZm9yIGRlbGF5IGxpbmUgRDEgaW4KKworICAgIC8vIGRlbGF5IG91dHB1dCB0YXBzLCBub3RpY2UgY3Jpc3MgY3Jvc3Mgb3JkZXIKKyAgICB1aW50MTZfdCAgICAgICAgICAgICBtX3pEMFNlbGY7ICAgICAgICAgICAgICAgICAgLy8gc2VsZiBmZWVkcyBmb3J3YXJkIGQwIC0tPiBkMAorCisgICAgdWludDE2X3QgICAgICAgICAgICAgbV96RDFDcm9zczsgICAgICAgICAgICAgICAgIC8vIGNyb3NzIGZlZWRzIGFjcm9zcyBkMSAtLT4gZDAKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgIG1fekQxU2VsZjsgICAgICAgICAgICAgICAgICAvLyBzZWxmIGZlZWRzIGZvcndhcmQgZDEgLS0+IGQxCisKKyAgICB1aW50MTZfdCAgICAgICAgICAgICBtX3pEMENyb3NzOyAgICAgICAgICAgICAgICAgLy8gY3Jvc3MgZmVlZHMgYWNyb3NzIGQwIC0tPiBkMQorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25TaW47ICAgICAgICAgICAgICAgICAgICAgLy8gZ2FpbiBmb3Igc2VsZiB0YXBzCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkNvczsgICAgICAgICAgICAgICAgICAgICAvLyBnYWluIGZvciBjcm9zcyB0YXBzCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblNpbkluY3JlbWVudDsgICAgICAgICAgICAvLyBpbmNyZW1lbnQgZm9yIGdhaW4KKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uQ29zSW5jcmVtZW50OyAgICAgICAgICAgIC8vIGluY3JlbWVudCBmb3IgZ2FpbgorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25SdmJMcGZGd2Q7ICAgICAgICAgICAgICAgICAgLy8gcmV2ZXJiIGZlZWRiYWNrIGxwZiBmb3J3YXJkIGdhaW4gKGluY2x1ZGVzIHNjYWxpbmcgZm9yIG1peGVyKQorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25SdmJMcGZGYms7ICAgICAgICAgICAgICAgICAgLy8gcmV2ZXJiIGZlZWRiYWNrIGxwZiBmZWVkYmFjayBnYWluCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblJvb21McGZGd2Q7ICAgICAgICAgICAgICAgICAgLy8gcm9vbSBscGYgZm9yd2FyZCBnYWluIChpbmNsdWRlcyBzY2FsaW5nIGZvciBtaXhlcikKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uUm9vbUxwZkZiazsgICAgICAgICAgICAgICAgICAvLyByb29tIGxwZiBmZWVkYmFjayBnYWluCisKKyAgICB1aW50MTZfdCAgICAgICAgICAgIG1fblhmYWRlSW50ZXJ2YWw7ICAgICAgICAgICAvLyB1cGRhdGUveGZhZGUgYWZ0ZXIgdGhpcyBtYW55IHNhbXBsZXMKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgbV9uWGZhZGVDb3VudGVyOyAgICAgICAgICAgIC8vIGtlZXAgdHJhY2sgb2Ygd2hlbiB0byB4ZmFkZQorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25QaGFzZTsgICAgICAgICAgICAgICAgICAgLy8gLTEgPD0gbV9uUGhhc2UgPCAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGR1cmluZyBzaW4sY29zIGNhbGN1bGF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBtX25QaGFzZS8yCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblBoYXNlSW5jcmVtZW50OyAgICAgICAgICAvLyBhZGQgdGhpcyB0byBtX25QaGFzZSBlYWNoIGZyYW1lCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbk5vaXNlOyAgICAgICAgICAgICAgICAgICAvLyByYW5kb20gbm9pc2Ugc2FtcGxlCisKKyAgICB1aW50MTZfdCAgICAgICAgICAgIG1fbk1heEV4Y3Vyc2lvbjsgICAgICAgICAgICAvLyB0aGUgdGFwcyBjYW4gZXhjdXJzZSArLy0gdGhpcyBhbW91bnQKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgbV9iVXNlTm9pc2U7ICAgICAgICAgICAgICAgIC8vIGlmIFRSVUUsIHVzZSBub2lzZSBhcyBpbnB1dCBzaWduYWwKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgbV9iQnlwYXNzOyAgICAgICAgICAgICAgICAgIC8vIGlmIFRSVUUsIHRoZW4gYnlwYXNzIHJldmVyYiBhbmQgY29weSBpbnB1dCB0byBvdXRwdXQKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uQ3VycmVudFJvb207ICAgICAgICAgICAgIC8vIHByZXNldCBudW1iZXIgZm9yIGN1cnJlbnQgcm9vbQorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25OZXh0Um9vbTsgICAgICAgICAgICAgICAgLy8gcHJlc2V0IG51bWJlciBmb3IgbmV4dCByb29tCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkVhcmx5R2FpbjsgICAgICAgICAgICAgICAvLyBnYWluIGZvciBlYXJseSAod2lkZW4pIHNpZ25hbAorICAgIGludDE2X3QgICAgICAgICAgICAgbV9uRWFybHlEZWxheTsgICAgICAgICAgICAgIC8vIGluaXRpYWwgZGVhbHkgZm9yIGVhcmx5ICh3aWRlbikgc2lnbmFsCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25FYXJseTBpbjsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkVhcmx5MWluOworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uTGF0ZUdhaW47ICAgICAgICAgICAgICAgLy8gZ2FpbiBmb3IgbGF0ZSByZXZlcmIKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkxhdGVEZWxheTsKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uRGlmZnVzaW9uOworCisgICAgZWFybHlfcmVmbGVjdGlvbl9vYmplY3RfdCAgIG1fc0Vhcmx5TDsgICAgICAgICAgLy8gbGVmdCBjaGFubmVsIGVhcmx5IHJlZmxlY3Rpb25zCisgICAgZWFybHlfcmVmbGVjdGlvbl9vYmplY3RfdCAgIG1fc0Vhcmx5UjsgICAgICAgICAgLy8gcmlnaHQgY2hhbm5lbCBlYXJseSByZWZsZWN0aW9ucworCisgICAgc2hvcnQgICAgICAgICAgICAgbV9uRGVsYXlMaW5lW1JFVkVSQl9CVUZGRVJfU0laRV9JTl9TQU1QTEVTX01BWF07ICAgIC8vIG9uZSBsYXJnZSBkZWxheSBsaW5lIGZvciBhbGwgcmV2ZXJiIGVsZW1lbnRzCisKKyAgICByZXZlcmJfcHJlc2V0X3QgICAgIHBQcmVzZXQ7CisKKyAgICByZXZlcmJfcHJlc2V0X2JhbmtfdCAgbV9zUHJlc2V0OworCisgICAgLy9pbnQ4X3QgICAgICAgICAgICBwcmVzZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICBtX25TYW1wbGluZ1JhdGU7CisgICAgaW50MzJfdCAgICAgICAgICAgICBtX25VcGRhdGVQZXJpb2RJbkJpdHM7CisgICAgaW50MzJfdCAgICAgICAgICAgICBtX25CdWZmZXJNYXNrOworICAgIGludDMyX3QgICAgICAgICAgICAgbV9uVXBkYXRlUGVyaW9kSW5TYW1wbGVzOworICAgIGludDMyX3QgICAgICAgICAgICAgbV9uRGVsYXkwT3V0OworICAgIGludDMyX3QgICAgICAgICAgICAgbV9uRGVsYXkxT3V0OworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uQ29zV1RfNUtIejsKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgbV9BdXg7ICAgICAgICAgICAgICAgIC8vIGlmIFRSVUUsIGlzIGNvbm5lY3RlZCBhcyBhdXhpbGlhcnkgZWZmZWN0CisgICAgdWludDE2X3QgICAgICAgICAgICBtX1ByZXNldDsgICAgICAgICAgICAgLy8gaWYgVFJVRSwgZXhwb3NlIHByZXNldCByZXZlcnQgaW50ZXJmYWNlCisKK30gcmV2ZXJiX29iamVjdF90OworCisKKwordHlwZWRlZiBzdHJ1Y3QgcmV2ZXJiX21vZHVsZV9zIHsKKyAgICBjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zICppdGZlOworICAgIGVmZmVjdF9jb25maWdfdCBjb25maWc7CisgICAgcmV2ZXJiX29iamVjdF90IGNvbnRleHQ7Cit9IHJldmVyYl9tb2R1bGVfdDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEVmZmVjdCBBUEkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworaW50IEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cyh1aW50MzJfdCAqcE51bUVmZmVjdHMpOworaW50IEVmZmVjdFF1ZXJ5RWZmZWN0KHVpbnQzMl90IGluZGV4LCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcik7CitpbnQgRWZmZWN0Q3JlYXRlKGVmZmVjdF91dWlkX3QgKmVmZmVjdFVJRCwgaW50MzJfdCBzZXNzaW9uSWQsIGludDMyX3QgaW9JZCwgZWZmZWN0X2ludGVyZmFjZV90ICpwSW50ZXJmYWNlKTsKK2ludCBFZmZlY3RSZWxlYXNlKGVmZmVjdF9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpOworCitzdGF0aWMgaW50IFJldmVyYl9Qcm9jZXNzKGVmZmVjdF9pbnRlcmZhY2VfdCBzZWxmLCBhdWRpb19idWZmZXJfdCAqaW5CdWZmZXIsIGF1ZGlvX2J1ZmZlcl90ICpvdXRCdWZmZXIpOworc3RhdGljIGludCBSZXZlcmJfQ29tbWFuZChlZmZlY3RfaW50ZXJmYWNlX3Qgc2VsZiwgaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50ICpyZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBpbnRlcm5hbCBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCitpbnQgUmV2ZXJiX0luaXQocmV2ZXJiX21vZHVsZV90ICpwUnZiTW9kdWxlLCBpbnQgYXV4LCBpbnQgcHJlc2V0KTsKK2ludCBSZXZlcmJfQ29uZmlndXJlKHJldmVyYl9tb2R1bGVfdCAqcFJ2Yk1vZHVsZSwgZWZmZWN0X2NvbmZpZ190ICpwQ29uZmlnLCBib29sIGluaXQpOwordm9pZCBSZXZlcmJfUmVzZXQocmV2ZXJiX29iamVjdF90ICpwUmV2ZXJiLCBib29sIGluaXQpOworCitpbnQgUmV2ZXJiX3NldFBhcmFtZXRlciAocmV2ZXJiX29iamVjdF90ICpwUmV2ZXJiLCBpbnQzMl90IHBhcmFtLCBzaXplX3Qgc2l6ZSwgdm9pZCAqcFZhbHVlKTsKK2ludCBSZXZlcmJfZ2V0UGFyYW1ldGVyKHJldmVyYl9vYmplY3RfdCAqcFJldmVyYiwgaW50MzJfdCBwYXJhbSwgc2l6ZV90ICpwU2l6ZSwgdm9pZCAqcFZhbHVlKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJVcGRhdGVYZmFkZQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogVXBkYXRlIHRoZSB4ZmFkZSBwYXJhbWV0ZXJzIGFzIHJlcXVpcmVkCisgKgorICogSW5wdXRzOgorICogbk51bVNhbXBsZXNUb0FkZCAtIG51bWJlciBvZiBzYW1wbGVzIHRvIHdyaXRlIHRvIGJ1ZmZlcgorICoKKyAqIE91dHB1dHM6CisgKgorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqIC0geGZhZGUgcGFyYW1ldGVycyB3aWxsIGJlIGNoYW5nZWQKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCitzdGF0aWMgaW50IFJldmVyYlVwZGF0ZVhmYWRlKHJldmVyYl9vYmplY3RfdCogcFJldmVyYkRhdGEsIGludCBuTnVtU2FtcGxlc1RvQWRkKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJDYWxjdWxhdGVOb2lzZQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogQ2FsY3VsYXRlIGEgbm9pc2Ugc2FtcGxlIGFuZCBsaW1pdCBpdHMgdmFsdWUKKyAqCisgKiBJbnB1dHM6CisgKiBQb2ludGVyIHRvIHJldmVyYiBjb250ZXh0CisgKgorICogT3V0cHV0czoKKyAqIG5ldyBsaW1pdGVkIG5vaXNlIHZhbHVlCisgKgorICogU2lkZSBFZmZlY3RzOgorICogLSBwUmV2ZXJiRGF0YS0+bV9uTm9pc2UgdmFsdWUgaXMgdXBkYXRlZAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KK3N0YXRpYyB1aW50MTZfdCBSZXZlcmJDYWxjdWxhdGVOb2lzZShyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmJEYXRhKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJDYWxjdWxhdGVTaW5Db3MKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIENhbGN1bGF0ZSBhIG5ldyBzaW4gYW5kIGNvc2luZSB2YWx1ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGhhc2UKKyAqCisgKiBJbnB1dHM6CisgKiBuUGhhc2UgICAtIHBoYXNlIGFuZ2xlCisgKiBwblNpbiAgICAtIGlucHV0IG9sZCB2YWx1ZSwgb3V0cHV0IG5ldyB2YWx1ZQorICogcG5Db3MgICAgLSBpbnB1dCBvbGQgdmFsdWUsIG91dHB1dCBuZXcgdmFsdWUKKyAqCisgKiBPdXRwdXRzOgorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqIC0gKnBuU2luLCAqcG5Db3MgYXJlIHVwZGF0ZWQKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCitzdGF0aWMgaW50IFJldmVyYkNhbGN1bGF0ZVNpbkNvcyhpbnQxNl90IG5QaGFzZSwgaW50MTZfdCAqcG5TaW4sIGludDE2X3QgKnBuQ29zKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmIKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIGFwcGx5IHJldmVyYiB0byB0aGUgZ2l2ZW4gc2lnbmFsCisgKgorICogSW5wdXRzOgorICogbk51CisgKiBwblNpbiAgICAtIGlucHV0IG9sZCB2YWx1ZSwgb3V0cHV0IG5ldyB2YWx1ZQorICogcG5Db3MgICAgLSBpbnB1dCBvbGQgdmFsdWUsIG91dHB1dCBuZXcgdmFsdWUKKyAqCisgKiBPdXRwdXRzOgorICogbnVtYmVyIG9mIHNhbXBsZXMgYWN0dWFsbHkgcmV2ZXJiZXJhdGVkCisgKgorICogU2lkZSBFZmZlY3RzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KK3N0YXRpYyBpbnQgUmV2ZXJiKHJldmVyYl9vYmplY3RfdCogcFJldmVyYkRhdGEsIGludCBuTnVtU2FtcGxlc1RvQWRkLCBzaG9ydCAqcE91dHB1dEJ1ZmZlciwgc2hvcnQgKnBJbnB1dEJ1ZmZlcik7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiUmVhZEluUHJlc2V0cygpCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6IHNldHMgZ2xvYmFsIHJldmVyYiBwcmVzZXQgYmFuayB0byBkZWZhdWx0cworICoKKyAqIElucHV0czoKKyAqCisgKiBPdXRwdXRzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KK3N0YXRpYyBpbnQgUmV2ZXJiUmVhZEluUHJlc2V0cyhyZXZlcmJfb2JqZWN0X3QqIHBSZXZlcmJEYXRhKTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYlVwZGF0ZVJvb20KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIFVwZGF0ZSB0aGUgcm9vbSdzIHByZXNldCBwYXJhbWV0ZXJzIGFzIHJlcXVpcmVkCisgKgorICogSW5wdXRzOgorICoKKyAqIE91dHB1dHM6CisgKgorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqIC0gcmV2ZXJiIHBhcmFtdGVycyAoZmJrLCBmd2QsIGV0Yykgd2lsbCBiZSBjaGFuZ2VkCisgKiAtIG1fbkN1cnJlbnRSb29tIDo9IG1fbk5leHRSb29tCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCitzdGF0aWMgaW50IFJldmVyYlVwZGF0ZVJvb20ocmV2ZXJiX29iamVjdF90KiBwUmV2ZXJiRGF0YSwgYm9vbCBmdWxsVXBkYXRlKTsKKworCitzdGF0aWMgaW50IFJldmVyYkNvbXB1dGVDb25zdGFudHMocmV2ZXJiX29iamVjdF90ICpwUmV2ZXJiRGF0YSwgdWludDMyX3Qgc2FtcGxpbmdSYXRlKTsKKworI2VuZGlmIC8qQU5EUk9JRF9FRkZFQ1RSRVZFUkJfSF8qLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzRmFjdG9yeS5jIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzRmFjdG9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZDYxODQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNGYWN0b3J5LmMKQEAgLTAsMCArMSw2NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIkVmZmVjdHNGYWN0b3J5IgorLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisjaW5jbHVkZSAiRWZmZWN0c0ZhY3RvcnkuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxkbGZjbi5oPgorCisKK3N0YXRpYyBsaXN0X2VsZW1fdCAqZ0VmZmVjdExpc3Q7IC8vIGxpc3Qgb2YgZWZmZWN0X2VudHJ5X3Q6IGFsbCBjdXJyZW50bHkgY3JlYXRlZCBlZmZlY3RzCitzdGF0aWMgbGlzdF9lbGVtX3QgKmdMaWJyYXJ5TGlzdDsgLy8gbGlzdCBvZiBsaWJfZW50cnlfdDogYWxsIGN1cnJlbnRseSBsb2FkZWQgbGlicmFyaWVzCitzdGF0aWMgcHRocmVhZF9tdXRleF90IGdMaWJMb2NrID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsgLy8gY29udHJvbHMgYWNjZXNzIHRvIGdMaWJyYXJ5TGlzdAorc3RhdGljIHVpbnQzMl90IGdOdW1FZmZlY3RzOyAgICAgICAgIC8vIHRvdGFsIG51bWJlciBudW1iZXIgb2YgZWZmZWN0cworc3RhdGljIGxpc3RfZWxlbV90ICpnQ3VyTGliOyAgICAvLyBjdXJyZW50IGxpYnJhcnkgaW4gZW51bWVyYXRpb24gcHJvY2Vzcworc3RhdGljIGxpc3RfZWxlbV90ICpnQ3VyRWZmZWN0OyAvLyBjdXJyZW50IGVmZmVjdCBpbiBlbnVtZXJhdGlvbiBwcm9jZXNzCitzdGF0aWMgdWludDMyX3QgZ0N1ckVmZmVjdElkeDsgICAgICAgLy8gY3VycmVudCBlZmZlY3QgaW5kZXggaW4gZW51bWVyYXRpb24gcHJvY2VzcworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdFZmZlY3RMaWJQYXRoID0gIi9zeXN0ZW0vbGliL3NvdW5kZngiOyAvLyBwYXRoIHRvIGJ1aWx0LWluIGVmZmVjdCBsaWJyYXJpZXMKK3N0YXRpYyBpbnQgZ0luaXREb25lOyAvLyB0cnVlIGlzIGdsb2JhbCBpbml0aWFsaXphdGlvbiBoYXMgYmVlbiBwcmVmb3JtZWQKK3N0YXRpYyBpbnQgZ05leHRMaWJJZDsgLy8gdXNlZCBieSBsb2FkTGlicmFyeSgpIHRvIGFsbG9jYXRlIHVuaXF1ZSBsaWJyYXJ5IGhhbmRsZXMKK3N0YXRpYyBpbnQgZ0NhblF1ZXJ5RWZmZWN0OyAvLyBpbmRpY2F0ZXMgdGhhdCBjYWxsIHRvIEVmZmVjdFF1ZXJ5RWZmZWN0KCkgaXMgdmFsaWQsIGkuZS4gdGhhdCB0aGUgbGlzdCBvZiBlZmZlY3RzCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcyBub3QgbW9kaWZpZWQgc2luY2UgbGFzdCBjYWxsIHRvIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygpCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgTG9jYWwgZnVuY3Rpb25zIHByb3RvdHlwZXMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworc3RhdGljIGludCBpbml0KCk7CitzdGF0aWMgaW50IGxvYWRMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKTsKK3N0YXRpYyBpbnQgdW5sb2FkTGlicmFyeShpbnQgaGFuZGxlKTsKK3N0YXRpYyB2b2lkIHJlc2V0RWZmZWN0RW51bWVyYXRpb24oKTsKK3N0YXRpYyB1aW50MzJfdCB1cGRhdGVOdW1FZmZlY3RzKCk7CitzdGF0aWMgaW50IGZpbmRFZmZlY3QoZWZmZWN0X3V1aWRfdCAqdXVpZCwgbGliX2VudHJ5X3QgKipsaWIsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKipkZXNjKTsKK3N0YXRpYyB2b2lkIGR1bXBFZmZlY3REZXNjcmlwdG9yKGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MsIGNoYXIgKnN0ciwgc2l6ZV90IGxlbik7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgRWZmZWN0IENvbnRyb2wgSW50ZXJmYWNlIGZ1bmN0aW9ucworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbnQgRWZmZWN0X1Byb2Nlc3MoZWZmZWN0X2ludGVyZmFjZV90IHNlbGYsIGF1ZGlvX2J1ZmZlcl90ICppbkJ1ZmZlciwgYXVkaW9fYnVmZmVyX3QgKm91dEJ1ZmZlcikKK3sKKyAgICBpbnQgcmV0ID0gaW5pdCgpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGVmZmVjdF9lbnRyeV90ICpmeCA9IChlZmZlY3RfZW50cnlfdCAqKXNlbGY7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZnTGliTG9jayk7CisgICAgaWYgKGZ4LT5saWIgPT0gTlVMTCkgeworICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZ0xpYkxvY2spOworICAgICAgICByZXR1cm4gLUVQSVBFOworICAgIH0KKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmZ4LT5saWItPmxvY2spOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnTGliTG9jayk7CisKKyAgICByZXQgPSAoKmZ4LT5zdWJJdGZlKS0+cHJvY2VzcyhmeC0+c3ViSXRmZSwgaW5CdWZmZXIsIG91dEJ1ZmZlcik7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmZ4LT5saWItPmxvY2spOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBFZmZlY3RfQ29tbWFuZChlZmZlY3RfaW50ZXJmYWNlX3Qgc2VsZiwgaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50ICpyZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpCit7CisgICAgaW50IHJldCA9IGluaXQoKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgICBlZmZlY3RfZW50cnlfdCAqZnggPSAoZWZmZWN0X2VudHJ5X3QgKilzZWxmOworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ0xpYkxvY2spOworICAgIGlmIChmeC0+bGliID09IE5VTEwpIHsKKyAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdMaWJMb2NrKTsKKyAgICAgICAgcmV0dXJuIC1FUElQRTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZmeC0+bGliLT5sb2NrKTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZ0xpYkxvY2spOworCisgICAgcmV0ID0gKCpmeC0+c3ViSXRmZSktPmNvbW1hbmQoZngtPnN1Ykl0ZmUsIGNtZENvZGUsIGNtZFNpemUsIHBDbWREYXRhLCByZXBseVNpemUsIHBSZXBseURhdGEpOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmeC0+bGliLT5sb2NrKTsKKyAgICByZXR1cm4gcmV0OworfQorCitjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIGdJbnRlcmZhY2UgPSB7CisgICAgICAgIEVmZmVjdF9Qcm9jZXNzLAorICAgICAgICBFZmZlY3RfQ29tbWFuZAorfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICBFZmZlY3QgRmFjdG9yeSBJbnRlcmZhY2UgZnVuY3Rpb25zCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ludCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHModWludDMyX3QgKnBOdW1FZmZlY3RzKQoreworICAgIGludCByZXQgPSBpbml0KCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgaWYgKHBOdW1FZmZlY3RzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZnTGliTG9jayk7CisgICAgKnBOdW1FZmZlY3RzID0gZ051bUVmZmVjdHM7CisgICAgZ0NhblF1ZXJ5RWZmZWN0ID0gMTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZ0xpYkxvY2spOworICAgIExPR1YoIkVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygpOiAlZCIsICpwTnVtRWZmZWN0cyk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IEVmZmVjdFF1ZXJ5RWZmZWN0KHVpbnQzMl90IGluZGV4LCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikKK3sKKyAgICBpbnQgcmV0ID0gaW5pdCgpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGlmIChwRGVzY3JpcHRvciA9PSBOVUxMIHx8CisgICAgICAgIGluZGV4ID49IGdOdW1FZmZlY3RzKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICBpZiAoZ0NhblF1ZXJ5RWZmZWN0ID09IDApIHsKKyAgICAgICAgcmV0dXJuIC1FTk9TWVM7CisgICAgfQorCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZnTGliTG9jayk7CisgICAgcmV0ID0gLUVOT0VOVDsKKyAgICBpZiAoaW5kZXggPCBnQ3VyRWZmZWN0SWR4KSB7CisgICAgICAgIHJlc2V0RWZmZWN0RW51bWVyYXRpb24oKTsKKyAgICB9CisgICAgd2hpbGUgKGdDdXJMaWIpIHsKKyAgICAgICAgaWYgKGdDdXJFZmZlY3QpIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBnQ3VyRWZmZWN0SWR4KSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KHBEZXNjcmlwdG9yLCBnQ3VyRWZmZWN0LT5vYmplY3QsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgICAgICAgICAgcmV0ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ0N1ckVmZmVjdCA9IGdDdXJFZmZlY3QtPm5leHQ7CisgICAgICAgICAgICAgICAgZ0N1ckVmZmVjdElkeCsrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ0N1ckxpYiA9IGdDdXJMaWItPm5leHQ7CisgICAgICAgICAgICBnQ3VyRWZmZWN0ID0gKChsaWJfZW50cnlfdCAqKWdDdXJMaWItPm9iamVjdCktPmVmZmVjdHM7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiAoTE9HX05ERUJVRyA9PSAwKQorICAgIGNoYXIgc3RyWzI1Nl07CisgICAgZHVtcEVmZmVjdERlc2NyaXB0b3IocERlc2NyaXB0b3IsIHN0ciwgMjU2KTsKKyAgICBMT0dWKCJFZmZlY3RRdWVyeUVmZmVjdCgpIGRlc2M6JXMiLCBzdHIpOworI2VuZGlmCisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdMaWJMb2NrKTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgRWZmZWN0R2V0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICp1dWlkLCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikKK3sKKyAgICBsaWJfZW50cnlfdCAqbCA9IE5VTEw7CisgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZCA9IE5VTEw7CisKKyAgICBpbnQgcmV0ID0gaW5pdCgpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGlmIChwRGVzY3JpcHRvciA9PSBOVUxMIHx8IHV1aWQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZnTGliTG9jayk7CisgICAgcmV0ID0gZmluZEVmZmVjdCh1dWlkLCAmbCwgJmQpOworICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICBtZW1jcHkocERlc2NyaXB0b3IsIGQsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnTGliTG9jayk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IEVmZmVjdENyZWF0ZShlZmZlY3RfdXVpZF90ICp1dWlkLCBpbnQzMl90IHNlc3Npb25JZCwgaW50MzJfdCBpb0lkLCBlZmZlY3RfaW50ZXJmYWNlX3QgKnBJbnRlcmZhY2UpCit7CisgICAgbGlzdF9lbGVtX3QgKmUgPSBnTGlicmFyeUxpc3Q7CisgICAgbGliX2VudHJ5X3QgKmwgPSBOVUxMOworICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgKmQgPSBOVUxMOworICAgIGVmZmVjdF9pbnRlcmZhY2VfdCBpdGZlOworICAgIGVmZmVjdF9lbnRyeV90ICpmeDsKKyAgICBpbnQgZm91bmQgPSAwOworICAgIGludCByZXQ7CisKKyAgICBpZiAodXVpZCA9PSBOVUxMIHx8IHBJbnRlcmZhY2UgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBMT0dWKCJFZmZlY3RDcmVhdGUoKSBVVUlEOiAlMDhYLSUwNFgtJTA0WC0lMDRYLSUwMlglMDJYJTAyWCUwMlglMDJYJTAyWFxuIiwKKyAgICAgICAgICAgIHV1aWQtPnRpbWVMb3csIHV1aWQtPnRpbWVNaWQsIHV1aWQtPnRpbWVIaUFuZFZlcnNpb24sCisgICAgICAgICAgICB1dWlkLT5jbG9ja1NlcSwgdXVpZC0+bm9kZVswXSwgdXVpZC0+bm9kZVsxXSx1dWlkLT5ub2RlWzJdLAorICAgICAgICAgICAgdXVpZC0+bm9kZVszXSx1dWlkLT5ub2RlWzRdLHV1aWQtPm5vZGVbNV0pOworCisgICAgcmV0ID0gaW5pdCgpOworCisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgTE9HVygiRWZmZWN0Q3JlYXRlKCkgaW5pdCBlcnJvcjogJWQiLCByZXQpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ0xpYkxvY2spOworCisgICAgcmV0ID0gZmluZEVmZmVjdCh1dWlkLCAmbCwgJmQpOworICAgIGlmIChyZXQgPCAwKXsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIC8vIGNyZWF0ZSBlZmZlY3QgaW4gbGlicmFyeQorICAgIHJldCA9IGwtPmNyZWF0ZUZ4KHV1aWQsIHNlc3Npb25JZCwgaW9JZCwgJml0ZmUpOworICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICBMT0dXKCJFZmZlY3RDcmVhdGUoKSBsaWJyYXJ5ICVzOiBjb3VsZCBub3QgY3JlYXRlIGZ4ICVzLCBlcnJvciAlZCIsIGwtPnBhdGgsIGQtPm5hbWUsIHJldCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICAvLyBhZGQgZW50cnkgdG8gZWZmZWN0IGxpc3QKKyAgICBmeCA9IChlZmZlY3RfZW50cnlfdCAqKW1hbGxvYyhzaXplb2YoZWZmZWN0X2VudHJ5X3QpKTsKKyAgICBmeC0+c3ViSXRmZSA9IGl0ZmU7CisgICAgZngtPml0ZmUgPSAoc3RydWN0IGVmZmVjdF9pbnRlcmZhY2VfcyAqKSZnSW50ZXJmYWNlOworICAgIGZ4LT5saWIgPSBsOworCisgICAgZSA9IChsaXN0X2VsZW1fdCAqKW1hbGxvYyhzaXplb2YobGlzdF9lbGVtX3QpKTsKKyAgICBlLT5vYmplY3QgPSBmeDsKKyAgICBlLT5uZXh0ID0gZ0VmZmVjdExpc3Q7CisgICAgZ0VmZmVjdExpc3QgPSBlOworCisgICAgKnBJbnRlcmZhY2UgPSAoZWZmZWN0X2ludGVyZmFjZV90KWZ4OworCisgICAgTE9HVigiRWZmZWN0Q3JlYXRlKCkgY3JlYXRlZCBlbnRyeSAlcCB3aXRoIHN1YiBpdGZlICVwIGluIGxpYnJhcnkgJXMiLCAqcEludGVyZmFjZSwgaXRmZSwgbC0+cGF0aCk7CisKK2V4aXQ6CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdMaWJMb2NrKTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgRWZmZWN0UmVsZWFzZShlZmZlY3RfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQoreworICAgIGVmZmVjdF9lbnRyeV90ICpmeDsKKyAgICBsaXN0X2VsZW1fdCAqZTE7CisgICAgbGlzdF9lbGVtX3QgKmUyOworCisgICAgaW50IHJldCA9IGluaXQoKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIC8vIHJlbW92ZSBlZmZlY3QgZnJvbSBlZmZlY3QgbGlzdAorICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ0xpYkxvY2spOworICAgIGUxID0gZ0VmZmVjdExpc3Q7CisgICAgZTIgPSBOVUxMOworICAgIHdoaWxlIChlMSkgeworICAgICAgICBpZiAoZTEtPm9iamVjdCA9PSBpbnRlcmZhY2UpIHsKKyAgICAgICAgICAgIGlmIChlMikgeworICAgICAgICAgICAgICAgIGUyLT5uZXh0ID0gZTEtPm5leHQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGdFZmZlY3RMaXN0ID0gZTEtPm5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmeCA9IChlZmZlY3RfZW50cnlfdCAqKWUxLT5vYmplY3Q7CisgICAgICAgICAgICBmcmVlKGUxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGUyID0gZTE7CisgICAgICAgIGUxID0gZTEtPm5leHQ7CisgICAgfQorICAgIGlmIChlMSA9PSBOVUxMKSB7CisgICAgICAgIHJldCA9IC1FTk9FTlQ7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICAvLyByZWxlYXNlIGVmZmVjdCBpbiBsaWJyYXJ5CisgICAgaWYgKGZ4LT5saWIgPT0gTlVMTCkgeworICAgICAgICBMT0dXKCJFZmZlY3RSZWxlYXNlKCkgZnggJXAgbGlicmFyeSBhbHJlYWR5IHVubG9hZGVkIiwgaW50ZXJmYWNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmZ4LT5saWItPmxvY2spOworICAgICAgICBmeC0+bGliLT5yZWxlYXNlRngoZngtPnN1Ykl0ZmUpOworICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZngtPmxpYi0+bG9jayk7CisgICAgfQorICAgIGZyZWUoZngpOworCitleGl0OgorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnTGliTG9jayk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IEVmZmVjdExvYWRMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKQoreworICAgIGludCByZXQgPSBpbml0KCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgaWYgKGxpYlBhdGggPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICByZXQgPSBsb2FkTGlicmFyeShsaWJQYXRoLCBoYW5kbGUpOworICAgIHVwZGF0ZU51bUVmZmVjdHMoKTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgRWZmZWN0VW5sb2FkTGlicmFyeShpbnQgaGFuZGxlKQoreworICAgIGludCByZXQgPSBpbml0KCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXQgPSB1bmxvYWRMaWJyYXJ5KGhhbmRsZSk7CisgICAgdXBkYXRlTnVtRWZmZWN0cygpOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBFZmZlY3RJc051bGxVdWlkKGVmZmVjdF91dWlkX3QgKnV1aWQpCit7CisgICAgaWYgKG1lbWNtcCh1dWlkLCBFRkZFQ1RfVVVJRF9OVUxMLCBzaXplb2YoZWZmZWN0X3V1aWRfdCkpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICBMb2NhbCBmdW5jdGlvbnMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW50IGluaXQoKSB7CisgICAgc3RydWN0IGRpcmVudCAqZW50OworICAgIERJUiAqZGlyID0gTlVMTDsKKyAgICBjaGFyIGxpYnBhdGhbUEFUSF9NQVhdOworICAgIGludCBoZGw7CisKKyAgICBpZiAoZ0luaXREb25lKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmZ0xpYkxvY2ssIE5VTEwpOworCisgICAgLy8gbG9hZCBidWlsdC1pbiBsaWJyYXJpZXMKKyAgICBkaXIgPSBvcGVuZGlyKGdFZmZlY3RMaWJQYXRoKTsKKyAgICBpZiAoZGlyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgfQorICAgIHdoaWxlICgoZW50ID0gcmVhZGRpcihkaXIpKSAhPSBOVUxMKSB7CisgICAgICAgIExPR1YoImluaXQoKSByZWFkaW5nIGZpbGUgJXMiLCBlbnQtPmRfbmFtZSk7CisgICAgICAgIGlmICgoc3RybGVuKGVudC0+ZF9uYW1lKSA8IDMpIHx8CisgICAgICAgICAgICBzdHJuY21wKGVudC0+ZF9uYW1lLCAibGliIiwgMykgIT0gMCB8fAorICAgICAgICAgICAgc3RybmNtcChlbnQtPmRfbmFtZSArIHN0cmxlbihlbnQtPmRfbmFtZSkgLSAzLCAiLnNvIiwgMykgIT0gMCkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgc3RyY3B5KGxpYnBhdGgsIGdFZmZlY3RMaWJQYXRoKTsKKyAgICAgICAgc3RyY2F0KGxpYnBhdGgsICIvIik7CisgICAgICAgIHN0cmNhdChsaWJwYXRoLCBlbnQtPmRfbmFtZSk7CisgICAgICAgIGlmIChsb2FkTGlicmFyeShsaWJwYXRoLCAmaGRsKSA8IDApIHsKKyAgICAgICAgICAgIExPR1coImluaXQoKSBmYWlsZWQgdG8gbG9hZCBsaWJyYXJ5ICVzIixsaWJwYXRoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZWRpcihkaXIpOworICAgIHVwZGF0ZU51bUVmZmVjdHMoKTsKKyAgICBnSW5pdERvbmUgPSAxOworICAgIExPR1YoImluaXQoKSBkb25lIik7CisgICAgcmV0dXJuIDA7Cit9CisKKworaW50IGxvYWRMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKQoreworICAgIHZvaWQgKmhkbDsKKyAgICBlZmZlY3RfUXVlcnlOdW1iZXJFZmZlY3RzX3QgcXVlcnlOdW1GeDsKKyAgICBlZmZlY3RfUXVlcnlFZmZlY3RfdCBxdWVyeUZ4OworICAgIGVmZmVjdF9DcmVhdGVFZmZlY3RfdCBjcmVhdGVGeDsKKyAgICBlZmZlY3RfUmVsZWFzZUVmZmVjdF90IHJlbGVhc2VGeDsKKyAgICB1aW50MzJfdCBudW1GeDsKKyAgICB1aW50MzJfdCBmeDsKKyAgICBpbnQgcmV0OworICAgIGxpc3RfZWxlbV90ICplLCAqZGVzY0hlYWQgPSBOVUxMOworICAgIGxpYl9lbnRyeV90ICpsOworCisgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgICpoYW5kbGUgPSAwOworCisgICAgaGRsID0gZGxvcGVuKGxpYlBhdGgsIFJUTERfTk9XKTsKKyAgICBpZiAoaGRsID09IDApIHsKKyAgICAgICAgTE9HVygiY291bGQgb3BlbiBsaWIgJXMiLCBsaWJQYXRoKTsKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgfQorCisgICAgLy8gQ2hlY2sgZnVuY3Rpb25zIGF2YWlsYWJpbGl0eQorICAgIHF1ZXJ5TnVtRnggPSAoZWZmZWN0X1F1ZXJ5TnVtYmVyRWZmZWN0c190KWRsc3ltKGhkbCwgIkVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cyIpOworICAgIGlmIChxdWVyeU51bUZ4ID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiY291bGQgbm90IGdldCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHMgZnJvbSBsaWIgJXMiLCBsaWJQYXRoKTsKKyAgICAgICAgcmV0ID0gLUVOT0RFVjsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcXVlcnlGeCA9IChlZmZlY3RfUXVlcnlFZmZlY3RfdClkbHN5bShoZGwsICJFZmZlY3RRdWVyeUVmZmVjdCIpOworICAgIGlmIChxdWVyeUZ4ID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiY291bGQgbm90IGdldCBFZmZlY3RRdWVyeUVmZmVjdCBmcm9tIGxpYiAlcyIsIGxpYlBhdGgpOworICAgICAgICByZXQgPSAtRU5PREVWOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBjcmVhdGVGeCA9IChlZmZlY3RfQ3JlYXRlRWZmZWN0X3QpZGxzeW0oaGRsLCAiRWZmZWN0Q3JlYXRlIik7CisgICAgaWYgKGNyZWF0ZUZ4ID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiY291bGQgbm90IGdldCBFZmZlY3RDcmVhdGUgZnJvbSBsaWIgJXMiLCBsaWJQYXRoKTsKKyAgICAgICAgcmV0ID0gLUVOT0RFVjsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcmVsZWFzZUZ4ID0gKGVmZmVjdF9SZWxlYXNlRWZmZWN0X3QpZGxzeW0oaGRsLCAiRWZmZWN0UmVsZWFzZSIpOworICAgIGlmIChyZWxlYXNlRnggPT0gTlVMTCkgeworICAgICAgICBMT0dXKCJjb3VsZCBub3QgZ2V0IEVmZmVjdFJlbGVhc2UgZnJvbSBsaWIgJXMiLCBsaWJQYXRoKTsKKyAgICAgICAgcmV0ID0gLUVOT0RFVjsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvLyBsb2FkIGVmZmVjdCBkZXNjcmlwdG9ycworICAgIHJldCA9IHF1ZXJ5TnVtRngoJm51bUZ4KTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZm9yIChmeCA9IDA7IGZ4IDwgbnVtRng7IGZ4KyspIHsKKyAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZCA9IG1hbGxvYyhzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICBpZiAoZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXQgPSAtRU5PTUVNOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICByZXQgPSBxdWVyeUZ4KGZ4LCBkKTsKKyAgICAgICAgaWYgKHJldCA9PSAwKSB7CisjaWYgKExPR19OREVCVUc9PTApCisgICAgICAgICAgICBjaGFyIHNbMjU2XTsKKyAgICAgICAgICAgIGR1bXBFZmZlY3REZXNjcmlwdG9yKGQsIHMsIDI1Nik7CisgICAgICAgICAgICBMT0dWKCJsb2FkTGlicmFyeSgpIHJlYWQgZGVzY3JpcHRvciAlcDolcyIsZCwgcyk7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChkLT5hcGlWZXJzaW9uICE9IEVGRkVDVF9BUElfVkVSU0lPTikgeworICAgICAgICAgICAgICAgIExPR1coIkJhZCBBUEkgdmVyc2lvbiAlMDR4IG9uIGxpYiAlcyIsIGQtPmFwaVZlcnNpb24sIGxpYlBhdGgpOworICAgICAgICAgICAgICAgIGZyZWUoZCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlID0gbWFsbG9jKHNpemVvZihsaXN0X2VsZW1fdCkpOworICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZyZWUoZCk7CisgICAgICAgICAgICAgICAgcmV0ID0gLUVOT01FTTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZS0+b2JqZWN0ID0gZDsKKyAgICAgICAgICAgIGUtPm5leHQgPSBkZXNjSGVhZDsKKyAgICAgICAgICAgIGRlc2NIZWFkID0gZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExPR1coIkVycm9yIHF1ZXJ5aW5nIGVmZmVjdCAjICVkIG9uIGxpYiAlcyIsIGZ4LCBsaWJQYXRoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ0xpYkxvY2spOworCisgICAgLy8gYWRkIGVudHJ5IGZvciBsaWJyYXJ5IGluIGdMaWJyYXJ5TGlzdAorICAgIGwgPSBtYWxsb2Moc2l6ZW9mKGxpYl9lbnRyeV90KSk7CisgICAgbC0+aWQgPSArK2dOZXh0TGliSWQ7CisgICAgbC0+aGFuZGxlID0gaGRsOworICAgIHN0cm5jcHkobC0+cGF0aCwgbGliUGF0aCwgUEFUSF9NQVgpOworICAgIGwtPmNyZWF0ZUZ4ID0gY3JlYXRlRng7CisgICAgbC0+cmVsZWFzZUZ4ID0gcmVsZWFzZUZ4OworICAgIGwtPmVmZmVjdHMgPSBkZXNjSGVhZDsKKyAgICBwdGhyZWFkX211dGV4X2luaXQoJmwtPmxvY2ssIE5VTEwpOworCisgICAgZSA9IG1hbGxvYyhzaXplb2YobGlzdF9lbGVtX3QpKTsKKyAgICBlLT5uZXh0ID0gZ0xpYnJhcnlMaXN0OworICAgIGUtPm9iamVjdCA9IGw7CisgICAgZ0xpYnJhcnlMaXN0ID0gZTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZ0xpYkxvY2spOworICAgIExPR1YoImxvYWRMaWJyYXJ5KCkgbGlua2VkIGxpYnJhcnkgJXAiLCBsKTsKKworICAgICpoYW5kbGUgPSBsLT5pZDsKKworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBMT0dXKCJsb2FkTGlicmFyeSgpIGVycm9yOiAlZCBvbiBsaWI6ICVzIiwgcmV0LCBsaWJQYXRoKTsKKyAgICB3aGlsZSAoZGVzY0hlYWQpIHsKKyAgICAgICAgZnJlZShkZXNjSGVhZC0+b2JqZWN0KTsKKyAgICAgICAgZSA9IGRlc2NIZWFkLT5uZXh0OworICAgICAgICBmcmVlKGRlc2NIZWFkKTsKKyAgICAgICAgZGVzY0hlYWQgPSBlOzsKKyAgICB9CisgICAgZGxjbG9zZShoZGwpOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCB1bmxvYWRMaWJyYXJ5KGludCBoYW5kbGUpCit7CisgICAgdm9pZCAqaGRsOworICAgIGludCByZXQ7CisgICAgbGlzdF9lbGVtX3QgKmVsMSwgKmVsMjsKKyAgICBsaWJfZW50cnlfdCAqbDsKKyAgICBlZmZlY3RfZW50cnlfdCAqZng7CisKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmdMaWJMb2NrKTsKKyAgICBlbDEgPSBnTGlicmFyeUxpc3Q7CisgICAgZWwyID0gTlVMTDsKKyAgICB3aGlsZSAoZWwxKSB7CisgICAgICAgIGwgPSAobGliX2VudHJ5X3QgKillbDEtPm9iamVjdDsKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBsLT5pZCkgeworICAgICAgICAgICAgaWYgKGVsMikgeworICAgICAgICAgICAgICAgIGVsMi0+bmV4dCA9IGVsMS0+bmV4dDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ0xpYnJhcnlMaXN0ID0gZWwxLT5uZXh0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZShlbDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWwyID0gZWwxOworICAgICAgICBlbDEgPSBlbDEtPm5leHQ7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnTGliTG9jayk7CisgICAgaWYgKGVsMSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRU5PRU5UOworICAgIH0KKworICAgIC8vIGNsZWFyIGVmZmVjdCBkZXNjcmlwdG9yIGxpc3QKKyAgICBlbDEgPSBsLT5lZmZlY3RzOworICAgIHdoaWxlIChlbDEpIHsKKyAgICAgICAgZnJlZShlbDEtPm9iamVjdCk7CisgICAgICAgIGVsMiA9IGVsMS0+bmV4dDsKKyAgICAgICAgZnJlZShlbDEpOworICAgICAgICBlbDEgPSBlbDI7CisgICAgfQorCisgICAgLy8gZGlzYWJsZSBhbGwgZWZmZWN0cyBmcm9tIHRoaXMgbGlicmFyeQorICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbC0+bG9jayk7CisKKyAgICBlbDEgPSBnRWZmZWN0TGlzdDsKKyAgICB3aGlsZSAoZWwxKSB7CisgICAgICAgIGZ4ID0gKGVmZmVjdF9lbnRyeV90ICopZWwxLT5vYmplY3Q7CisgICAgICAgIGlmIChmeC0+bGliID09IGwpIHsKKyAgICAgICAgICAgIGZ4LT5saWIgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsMSA9IGVsMS0+bmV4dDsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmwtPmxvY2spOworCisgICAgZGxjbG9zZShsLT5oYW5kbGUpOworICAgIGZyZWUobCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgcmVzZXRFZmZlY3RFbnVtZXJhdGlvbigpCit7CisgICAgZ0N1ckxpYiA9IGdMaWJyYXJ5TGlzdDsKKyAgICBnQ3VyRWZmZWN0ID0gTlVMTDsKKyAgICBpZiAoZ0N1ckxpYikgeworICAgICAgICBnQ3VyRWZmZWN0ID0gKChsaWJfZW50cnlfdCAqKWdDdXJMaWItPm9iamVjdCktPmVmZmVjdHM7CisgICAgfQorICAgIGdDdXJFZmZlY3RJZHggPSAwOworfQorCit1aW50MzJfdCB1cGRhdGVOdW1FZmZlY3RzKCkgeworICAgIGxpc3RfZWxlbV90ICplOworICAgIHVpbnQzMl90IGNudCA9IDA7CisKKyAgICByZXNldEVmZmVjdEVudW1lcmF0aW9uKCk7CisKKyAgICBlID0gZ0xpYnJhcnlMaXN0OworICAgIHdoaWxlIChlKSB7CisgICAgICAgIGxpYl9lbnRyeV90ICpsID0gKGxpYl9lbnRyeV90ICopZS0+b2JqZWN0OworICAgICAgICBsaXN0X2VsZW1fdCAqZWZ4ID0gbC0+ZWZmZWN0czsKKyAgICAgICAgd2hpbGUgKGVmeCkgeworICAgICAgICAgICAgY250Kys7CisgICAgICAgICAgICBlZnggPSBlZngtPm5leHQ7CisgICAgICAgIH0KKyAgICAgICAgZSA9IGUtPm5leHQ7CisgICAgfQorICAgIGdOdW1FZmZlY3RzID0gY250OworICAgIGdDYW5RdWVyeUVmZmVjdCA9IDA7CisgICAgcmV0dXJuIGNudDsKK30KKworaW50IGZpbmRFZmZlY3QoZWZmZWN0X3V1aWRfdCAqdXVpZCwgbGliX2VudHJ5X3QgKipsaWIsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKipkZXNjKQoreworICAgIGxpc3RfZWxlbV90ICplID0gZ0xpYnJhcnlMaXN0OworICAgIGxpYl9lbnRyeV90ICpsID0gTlVMTDsKKyAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICpkID0gTlVMTDsKKyAgICBpbnQgZm91bmQgPSAwOworICAgIGludCByZXQgPSAwOworCisgICAgd2hpbGUgKGUgJiYgIWZvdW5kKSB7CisgICAgICAgIGwgPSAobGliX2VudHJ5X3QgKillLT5vYmplY3Q7CisgICAgICAgIGxpc3RfZWxlbV90ICplZnggPSBsLT5lZmZlY3RzOworICAgICAgICB3aGlsZSAoZWZ4KSB7CisgICAgICAgICAgICBkID0gKGVmZmVjdF9kZXNjcmlwdG9yX3QgKillZngtPm9iamVjdDsKKyAgICAgICAgICAgIGlmIChtZW1jbXAoJmQtPnV1aWQsIHV1aWQsIHNpemVvZihlZmZlY3RfdXVpZF90KSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGZvdW5kID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVmeCA9IGVmeC0+bmV4dDsKKyAgICAgICAgfQorICAgICAgICBlID0gZS0+bmV4dDsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgeworICAgICAgICBMT0dWKCJmaW5kRWZmZWN0KCkgZWZmZWN0IG5vdCBmb3VuZCIpOworICAgICAgICByZXQgPSAtRU5PRU5UOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR1YoImZpbmRFZmZlY3QoKSBmb3VuZCBlZmZlY3Q6ICVzIGluIGxpYiAlcyIsIGQtPm5hbWUsIGwtPnBhdGgpOworICAgICAgICAqbGliID0gbDsKKyAgICAgICAgKmRlc2MgPSBkOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgZHVtcEVmZmVjdERlc2NyaXB0b3IoZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzYywgY2hhciAqc3RyLCBzaXplX3QgbGVuKSB7CisgICAgY2hhciBzWzI1Nl07CisKKyAgICBzbnByaW50ZihzdHIsIGxlbiwgIlxuRWZmZWN0IERlc2NyaXB0b3IgJXA6XG4iLCBkZXNjKTsKKyAgICBzcHJpbnRmKHMsICItIFVVSUQ6ICUwOFgtJTA0WC0lMDRYLSUwNFgtJTAyWCUwMlglMDJYJTAyWCUwMlglMDJYXG4iLAorICAgICAgICAgICAgZGVzYy0+dXVpZC50aW1lTG93LCBkZXNjLT51dWlkLnRpbWVNaWQsIGRlc2MtPnV1aWQudGltZUhpQW5kVmVyc2lvbiwKKyAgICAgICAgICAgIGRlc2MtPnV1aWQuY2xvY2tTZXEsIGRlc2MtPnV1aWQubm9kZVswXSwgZGVzYy0+dXVpZC5ub2RlWzFdLGRlc2MtPnV1aWQubm9kZVsyXSwKKyAgICAgICAgICAgIGRlc2MtPnV1aWQubm9kZVszXSxkZXNjLT51dWlkLm5vZGVbNF0sZGVzYy0+dXVpZC5ub2RlWzVdKTsKKyAgICBzdHJuY2F0KHN0ciwgcywgbGVuKTsKKyAgICBzcHJpbnRmKHMsICItIFRZUEU6ICUwOFgtJTA0WC0lMDRYLSUwNFgtJTAyWCUwMlglMDJYJTAyWCUwMlglMDJYXG4iLAorICAgICAgICAgICAgICAgIGRlc2MtPnR5cGUudGltZUxvdywgZGVzYy0+dHlwZS50aW1lTWlkLCBkZXNjLT50eXBlLnRpbWVIaUFuZFZlcnNpb24sCisgICAgICAgICAgICAgICAgZGVzYy0+dHlwZS5jbG9ja1NlcSwgZGVzYy0+dHlwZS5ub2RlWzBdLCBkZXNjLT50eXBlLm5vZGVbMV0sZGVzYy0+dHlwZS5ub2RlWzJdLAorICAgICAgICAgICAgICAgIGRlc2MtPnR5cGUubm9kZVszXSxkZXNjLT50eXBlLm5vZGVbNF0sZGVzYy0+dHlwZS5ub2RlWzVdKTsKKyAgICBzdHJuY2F0KHN0ciwgcywgbGVuKTsKKyAgICBzcHJpbnRmKHMsICItIGFwaVZlcnNpb246ICUwNFhcbi0gZmxhZ3M6ICUwOFhcbiIsCisgICAgICAgICAgICBkZXNjLT5hcGlWZXJzaW9uLCBkZXNjLT5mbGFncyk7CisgICAgc3RybmNhdChzdHIsIHMsIGxlbik7CisgICAgc3ByaW50ZihzLCAiLSBuYW1lOiAlc1xuIiwgZGVzYy0+bmFtZSk7CisgICAgc3RybmNhdChzdHIsIHMsIGxlbik7CisgICAgc3ByaW50ZihzLCAiLSBpbXBsZW1lbnRvcjogJXNcbiIsIGRlc2MtPmltcGxlbWVudG9yKTsKKyAgICBzdHJuY2F0KHN0ciwgcywgbGVuKTsKK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzRmFjdG9yeS5oIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNTQzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNGYWN0b3J5LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9FRkZFQ1RTRkFDVE9SWV9IXworI2RlZmluZSBBTkRST0lEX0VGRkVDVFNGQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxjdXRpbHMvbG9nLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPG1lZGlhL0VmZmVjdHNGYWN0b3J5QXBpLmg+CisKKworI2lmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBsaXN0X2VsZW1fcyB7CisgICAgdm9pZCAqb2JqZWN0OworICAgIHN0cnVjdCBsaXN0X2VsZW1fcyAqbmV4dDsKK30gbGlzdF9lbGVtX3Q7CisKK3R5cGVkZWYgc3RydWN0IGxpYl9lbnRyeV9zIHsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIHZvaWQgKmhhbmRsZTsKKyAgICBpbnQgaWQ7CisgICAgZWZmZWN0X0NyZWF0ZUVmZmVjdF90IGNyZWF0ZUZ4OworICAgIGVmZmVjdF9SZWxlYXNlRWZmZWN0X3QgcmVsZWFzZUZ4OworICAgIGxpc3RfZWxlbV90ICplZmZlY3RzOyAvL2xpc3Qgb2YgZWZmZWN0X2Rlc2NyaXB0b3JfdAorICAgIHB0aHJlYWRfbXV0ZXhfdCBsb2NrOworfSBsaWJfZW50cnlfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZWZmZWN0X2VudHJ5X3MgeworICAgIHN0cnVjdCBlZmZlY3RfaW50ZXJmYWNlX3MgKml0ZmU7CisgICAgZWZmZWN0X2ludGVyZmFjZV90IHN1Ykl0ZmU7CisgICAgbGliX2VudHJ5X3QgKmxpYjsKK30gZWZmZWN0X2VudHJ5X3Q7CisKKyNpZiBfX2NwbHVzcGx1cworfSAgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKworI2VuZGlmIC8qQU5EUk9JRF9FRkZFQ1RTRkFDVE9SWV9IXyovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNNYXRoLmMgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNNYXRoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlYzY2MgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvRWZmZWN0c01hdGguYwpAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisjZGVmaW5lIExPR19UQUcgIkVGRkVDVFNNQVRIIgorLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2luY2x1ZGUgIkVmZmVjdHNNYXRoLmgiCisKKy8vIGdMb2dUYWIgY29udGFpbnMgcHJlLWNhbGN1bGF0ZWQgdmFsdWVzIG9mIGxvZzIoMSArIGFpNSoyXi0xICsgYWk0KjJeLTIgKyBhaTMqMl4tMyArIGFpMioyXi00ICsgYWkxKjJeLTUgKyBhaTAqMl4tNikKKy8vIGZvciBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCB0byA2MyAoaSA9IGFpNSoyXjUgKyBhaTQqMl40ICsgYWkzKjJeMyArIGFpMioyXjIgKyBhaTEqMl4xICsgYWkwKjJeMCkKKy8vIEl0IGlzIHVzZWQgZm9yIGEgYmV0dGVyIHRoYW4gcGllY2Ugd2lzZSBhcHByb3hpbWF0aW9uIG9mIGxpbiB0byBsb2cyIGNvbnZlcnNpb24KKworc3RhdGljIGNvbnN0IHVpbnQxNl90IGdMb2dUYWJbXSA9Cit7CisgICAgMCwgNzMzLCAxNDU1LCAyMTY2LAorICAgIDI4NjYsIDM1NTYsIDQyMzYsIDQ5MDcsCisgICAgNTU2OCwgNjIyMCwgNjg2MywgNzQ5OCwKKyAgICA4MTI0LCA4NzQyLCA5MzUyLCA5OTU0LAorICAgIDEwNTQ5LCAxMTEzNiwgMTE3MTYsIDEyMjg5LAorICAgIDEyODU1LCAxMzQxNSwgMTM5NjgsIDE0NTE0LAorICAgIDE1MDU1LCAxNTU4OSwgMTYxMTcsIDE2NjM5LAorICAgIDE3MTU2LCAxNzY2NywgMTgxNzMsIDE4NjczLAorICAgIDE5MTY4LCAxOTY1OCwgMjAxNDMsIDIwNjIzLAorICAgIDIxMDk4LCAyMTU2OCwgMjIwMzQsIDIyNDk1LAorICAgIDIyOTUyLCAyMzQwNCwgMjM4NTIsIDI0Mjk2LAorICAgIDI0NzM2LCAyNTE3MiwgMjU2MDQsIDI2MDMxLAorICAgIDI2NDU1LCAyNjg3NiwgMjcyOTIsIDI3NzA1LAorICAgIDI4MTE0LCAyODUyMCwgMjg5MjIsIDI5MzIxLAorICAgIDI5NzE3LCAzMDEwOSwgMzA0OTgsIDMwODg0LAorICAgIDMxMjY3LCAzMTY0NywgMzIwMjQsIDMyMzk3LAorICAgIDMyNzY4Cit9OworCitpbnQzMl90IEVmZmVjdHNfbG9nMih1aW50MzJfdCB4KSB7CisgICAgaW50MzJfdCBleHAgPSAzMSAtIF9fYnVpbHRpbl9jbHooeCk7CisgICAgdWludDMyX3Qgc2VnU3RhcnQgPSB4ID4+IChleHAgLSA2KTsKKyAgICB1aW50MzJfdCBpID0gc2VnU3RhcnQgJiAweDNGOworICAgIGludDMyX3QgbG9nID0gKGludDMyX3QpZ0xvZ1RhYltpXTsKKyAgICBpbnQzMl90IGxvZ0VuZCA9IChpbnQzMl90KWdMb2dUYWJbaSsxXTsKKyAgICBzZWdTdGFydCA8PD0gZXhwIC0gNjsKKworICAgIHJldHVybiAoZXhwIDw8IDE1KSArIGxvZyArICgoKHggLSBzZWdTdGFydCkgKiAobG9nRW5kIC0gbG9nKSkgPj4gKGV4cCAtIDYpKTsKK30KKworLy8gZ0V4cFRhYltpXSA9ICgyXihpPj42KSkgPDwgMjIKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBnRXhwVGFiW10gPSB7CisgICAgICAgICAgICA0MTk0MzA0LCA0MjM5OTc3LCA0Mjg2MTQ3LCA0MzMyODIwLAorICAgICAgICAgICAgNDM4MDAwMiwgNDQyNzY5NywgNDQ3NTkxMSwgNDUyNDY1MSwKKyAgICAgICAgICAgIDQ1NzM5MjEsIDQ2MjM3MjgsIDQ2NzQwNzcsIDQ3MjQ5NzQsCisgICAgICAgICAgICA0Nzc2NDI2LCA0ODI4NDM4LCA0ODgxMDE2LCA0OTM0MTY3LAorICAgICAgICAgICAgNDk4Nzg5NiwgNTA0MjIxMSwgNTA5NzExNywgNTE1MjYyMSwKKyAgICAgICAgICAgIDUyMDg3MjksIDUyNjU0NDksIDUzMjI3ODYsIDUzODA3NDcsCisgICAgICAgICAgICA1NDM5MzM5LCA1NDk4NTcwLCA1NTU4NDQ1LCA1NjE4OTczLAorICAgICAgICAgICAgNTY4MDE1OSwgNTc0MjAxMiwgNTgwNDUzOSwgNTg2Nzc0NiwKKyAgICAgICAgICAgIDU5MzE2NDIsIDU5OTYyMzMsIDYwNjE1MjgsIDYxMjc1MzMsCisgICAgICAgICAgICA2MTk0MjU4LCA2MjYxNzA5LCA2MzI5ODk0LCA2Mzk4ODIyLAorICAgICAgICAgICAgNjQ2ODUwMSwgNjUzODkzOCwgNjYxMDE0MywgNjY4MjEyMiwKKyAgICAgICAgICAgIDY3NTQ4ODYsIDY4Mjg0NDIsIDY5MDI3OTksIDY5Nzc5NjUsCisgICAgICAgICAgICA3MDUzOTUwLCA3MTMwNzYzLCA3MjA4NDEyLCA3Mjg2OTA2LAorICAgICAgICAgICAgNzM2NjI1NSwgNzQ0NjQ2OSwgNzUyNzU1NSwgNzYwOTUyNSwKKyAgICAgICAgICAgIDc2OTIzODcsIDc3NzYxNTIsIDc4NjA4MjksIDc5NDY0MjgsCisgICAgICAgICAgICA4MDMyOTU5LCA4MTIwNDMyLCA4MjA4ODU3LCA4Mjk4MjQ2LAorICAgICAgICAgICAgODM4ODYwOAorfTsKKworCit1aW50MzJfdCBFZmZlY3RzX2V4cDIoaW50MzJfdCB4KSB7CisgICAgaW50MzJfdCBpID0geCA+PiAxNTsKKyAgICBhc3NlcnQoaSA8IDMyKTsKKyAgICB4ICY9ICgxIDw8IDE1KSAtIDE7CisgICAgaW50MzJfdCBqID0geCA+PiA5OworICAgIHggJj0gKDEgPDwgOSkgLSAxOworICAgIHVpbnQzMl90IGV4cCA9IGdFeHBUYWJbal07CisgICAgdWludDMyX3QgZXhwRW5kID0gZ0V4cFRhYltqKzFdOworCisgICAgcmV0dXJuICgoZXhwIDw8IDkpICsgKGV4cEVuZCAtIGV4cCkgKiB4KSA+PiAoMzEgLSBpKTsKK30KKworCitpbnQxNl90IEVmZmVjdHNfTWlsbGliZWxzVG9MaW5lYXIxNiAoaW50MzJfdCBuR2FpbikKK3sKKyAgICBuR2FpbiA9ICgobkdhaW4gKyBNQl9UT19MSU5fSzEpIDw8IDE1ICkgLyBNQl9UT19MSU5fSzI7CisgICAgdWludDMyX3QgZXhwMiA9IEVmZmVjdHNfZXhwMihuR2Fpbik7CisKKyAgICBpZiAoZXhwMiA+IDMyNzY3KSBleHAyID0gMzI3Njc7CisKKyAgICByZXR1cm4gKGludDE2X3QpZXhwMjsKK30KKworCitpbnQxNl90IEVmZmVjdHNfTGluZWFyMTZUb01pbGxpYmVscyAoaW50MzJfdCBuR2FpbikKK3sKKyAgICByZXR1cm4gKGludDE2X3QpKCgoTUJfVE9fTElOX0syKkVmZmVjdHNfbG9nMihuR2FpbikpPj4xNSktTUJfVE9fTElOX0sxKTsKK30KKworCitpbnQzMl90IEVmZmVjdHNfU3FydChpbnQzMl90IGluKQoreworICAgIGludDMyX3QgdG1wOworICAgIGludDMyX3Qgb3V0ID0gMDsKKyAgICBpbnQzMl90IGk7CisgICAgaW50MzJfdCBqOworCisKKyAgICBpZiAoaW4gPT0gMCkgcmV0dXJuIDA7CisKKyAgICBpZiAoaW4gPj0gMHgxMDAwMDAwMCkKKyAgICB7CisgICAgICAgIG91dCA9IDB4NDAwMDsKKyAgICAgICAgaW4gLT0gMHgxMDAwMDAwMDsKKyAgICB9CisKKyAgICBqID0gMzIgLSBfX2J1aWx0aW5fY2x6KGluKTsKKworICAgIGlmIChqICYgMSkgaisrOworICAgIGogPj49IDE7CisKKyAgICBmb3IgKGkgPSBqOyBpID4gMDsgaS0tKSB7CisgICAgICAgIHRtcCA9IChvdXQgPDwgaSkgKyAoMSA8PCAoKGkgLSAxKSoyKSk7CisgICAgICAgIGlmIChpbiA+PSB0bXApCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCArPSAxIDw8IChpLTEpOworICAgICAgICAgICAgaW4gLT0gdG1wOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG91dDsKK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzTWF0aC5oIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzTWF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNDQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNNYXRoLmgKQEAgLTAsMCArMSw0MjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfRUZGRUNUU01BVEhfSF8KKyNkZWZpbmUgQU5EUk9JRF9FRkZFQ1RTTUFUSF9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIGNvZWZzIGZvciBwYW4sIGdlbmVyYXRlcyBzaW4sIGNvcyAqLworI2RlZmluZSBDT0VGRl9QQU5fRzIgICAgLTI3MTQ2ICAgIC8qIC0wLjgyODQyNzEyNDc0NjE5ID0gMiAtIDQvc3FydCgyKSAqLworI2RlZmluZSBDT0VGRl9QQU5fRzAgICAgMjMxNzAgICAgIC8qIDAuNzA3MTA2NzgxMTg2NTQ3ID0gMS9zcXJ0KDIpICovCisKKy8qCitjb2VmZmljaWVudHMgZm9yIGFwcHJveGltYXRpbmcKKzJeeCA9IGduMnRvWDAgKyBnbjJ0b1gxKnggKyBnbjJ0b1gyKnheMiArIGduMnRvWDMqeF4zCit3aGVyZSB4IGlzIGEgaW50LmZyYWMgbnVtYmVyIHJlcHJlc2VudGluZyBudW1iZXIgb2Ygb2N0YXZlcy4KK0FjdHVhbGx5LCB3ZSBhcHByb3hpbWF0ZSBvbmx5IHRoZSAyXihmcmFjKSB1c2luZyB0aGUgcG93ZXIgc2VyaWVzCithbmQgaW1wbGVtZW50IHRoZSAyXihpbnQpIGFzIGEgc2hpZnQsIHNvIHRoYXQKKzJeeCA9PSAyXihpbnQuZnJhYykgPT0gMl4oaW50KSAqIDJeKGZyYWN0KQorICAgID09IChnbjJ0b1gwICsgZ24ydG9YMSp4ICsgZ24ydG9YMip4XjIgKyBnbjJ0b1gzKnheMykgPDwgKGludCkKKworVGhlIGduMnRvWC4uIHdlcmUgZ2VuZXJhdGVkIHVzaW5nIGEgYmVzdCBmaXQgZm9yIGEgM3JkCitvcmRlciBwb2x5bm9taWFsLCBpbnN0ZWFkIG9mIHRha2luZyB0aGUgY29lZmZpY2llbnRzIGZyb20KK2EgdHJ1bmNhdGVkIFRheWxvciAob3IgTWFjbGF1cmluPykgc2VyaWVzLgorKi8KKworI2RlZmluZSBHTjJfVE9fWDAgICAgMzI3NjggICAgLyogICAgMSAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR04yX1RPX1gxICAgIDIyODMzICAgIC8qICAgIDAuNjk2ODA3ODYxMzI4MTI1ICAgICovCisjZGVmaW5lIEdOMl9UT19YMiAgICA3MzQ0ICAgIC8qICAgIDAuMjI0MTIxMDkzNzUgICAgICAgICovCisjZGVmaW5lIEdOMl9UT19YMyAgICAyNTg4ICAgIC8qICAgIDAuMDc4OTc5NDkyMTg3NSAgICAgICAgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBGaXhlZCBQb2ludCBNYXRoCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBmb3IgZml4ZWQgcG9pbnQgbXVsdGlwbGllcy4gSWYgdGhlIHByb2Nlc3NvcgorICogc3VwcG9ydHMgZml4ZWQgcG9pbnQgbXVsdGlwbGllcywgcmVwbGFjZSB0aGVzZSBtYWNyb3Mgd2l0aCBpbmxpbmUKKyAqIGFzc2VtYmx5IGNvZGUgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworLyogRml4ZWQgcG9pbnQgbXVsdGlwbHkgMC4xNSB4IDAuMTUgPSAwLjE1IHJldHVybmVkIGFzIDMyLWJpdHMgKi8KKyNkZWZpbmUgRk1VTF8xNXgxNShhLGIpIFwKKyAgICAvKmxpbnQgLWUoNzA0KSA8YXZvaWQgbXVsdGlwbHkgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAoKChpbnQzMl90KShhKSAqIChpbnQzMl90KShiKSkgPj4gMTUpCisKKy8qIEZpeGVkIHBvaW50IG11bHRpcGx5IDAuNyB4IDAuNyA9IDAuMTUgcmV0dXJuZWQgYXMgMzItYml0cyAqLworI2RlZmluZSBGTVVMXzd4NyhhLGIpIFwKKyAgICAvKmxpbnQgLWUoNzA0KSA8YXZvaWQgbXVsdGlwbHkgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAoKChpbnQzMl90KShhKSAqIChpbnQzMl90KShiKSApIDw8IDEpCisKKy8qIEZpeGVkIHBvaW50IG11bHRpcGx5IDAuOCB4IDAuOCA9IDAuMTUgcmV0dXJuZWQgYXMgMzItYml0cyAqLworI2RlZmluZSBGTVVMXzh4OChhLGIpIFwKKyAgICAvKmxpbnQgLWUoNzA0KSA8YXZvaWQgbXVsdGlwbHkgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAoKChpbnQzMl90KShhKSAqIChpbnQzMl90KShiKSApID4+IDEpCisKKy8qIEZpeGVkIHBvaW50IG11bHRpcGx5IDAuOCB4IDEuMTUgPSAwLjE1IHJldHVybmVkIGFzIDMyLWJpdHMgKi8KKyNkZWZpbmUgRk1VTF84eDE1KGEsYikgXAorICAgIC8qbGludCAtZSg3MDQpIDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAoKChpbnQzMl90KSgoYSkgPDwgNykgKiAoaW50MzJfdCkoYikpID4+IDE1KQorCisvKiBtYWNyb3MgZm9yIGZyYWN0aW9uYWwgcGhhc2UgYWNjdW11bGF0b3IgKi8KKy8qCitOb3RlOiBjaGFuZ2VkIHRoZSBfVTMyIHRvIF9JMzIgb24gMDMvMTQvMDIuIFRoaXMgc2hvdWxkIG5vdAorYWZmZWN0IHRoZSBwaGFzZSBjYWxjdWxhdGlvbnMsIGFuZCBzaG91bGQgYWxsb3cgdXMgdG8gcmV1c2UgdGhlc2UKK21hY3JvcyBmb3Igb3RoZXIgYXVkaW8gc2FtcGxlIHJlbGF0ZWQgbWF0aC4KKyovCisjZGVmaW5lIEhBUkRXQVJFX0JJVF9XSURUSCAgICAgICAgMzIKKworI2RlZmluZSBOVU1fUEhBU0VfSU5UX0JJVFMgICAgICAgIDEKKyNkZWZpbmUgTlVNX1BIQVNFX0ZSQUNfQklUUyAgICAgICAxNQorCisjZGVmaW5lIFBIQVNFX0ZSQUNfTUFTSyAgICAgICAgICAgKHVpbnQzMl90KSAoKDB4MUwgPDwgTlVNX1BIQVNFX0ZSQUNfQklUUykgLTEpCisKKyNkZWZpbmUgR0VUX1BIQVNFX0lOVF9QQVJUKHgpICAgICAodWludDMyX3QpKCh1aW50MzJfdCkoeCkgPj4gTlVNX1BIQVNFX0ZSQUNfQklUUykKKyNkZWZpbmUgR0VUX1BIQVNFX0ZSQUNfUEFSVCh4KSAgICAodWludDMyX3QpKCh1aW50MzJfdCkoeCkgJiBQSEFTRV9GUkFDX01BU0spCisKKyNkZWZpbmUgREVGQVVMVF9QSEFTRV9GUkFDICAgICAgICAwCisjZGVmaW5lIERFRkFVTFRfUEhBU0VfSU5UICAgICAgICAgMAorCisvKgorTGluZWFyIGludGVycG9sYXRpb24gY2FsY3VsYXRlczoKK291dHB1dCA9ICgxLWZyYWMpICogc2FtcGxlW25dICsgKGZyYWMpICogc2FtcGxlW24rMV0KKword2hlcmUgY29uY2VwdHVhbGx5ICAgIDAgPD0gZnJhYyA8IDEKKworRm9yIGEgZml4ZWQgcG9pbnQgaW1wbGVtZW50YXRpb24sIGZyYWMgaXMgYWN0dWFsbHkgYW4gaW50ZWdlciB2YWx1ZQord2l0aCBhbiBpbXBsaWVkIGJpbmFyeSBwb2ludCBvbmUgcG9zaXRpb24gdG8gdGhlIGxlZnQuIFRoZSB2YWx1ZSBvZgorb25lICh1bml0eSkgaXMgZ2l2ZW4gYnkgUEhBU0VfT05FCitvbmUgaGFsZiBhbmQgb25lIHF1YXJ0ZXIgYXJlIHVzZWZ1bCBmb3IgNC1wb2ludCBsaW5lYXIgaW50ZXJwLgorKi8KKyNkZWZpbmUgUEhBU0VfT05FICAgICAgICAgICAgICAgIChpbnQzMl90KSAoMHgxTCA8PCBOVU1fUEhBU0VfRlJBQ19CSVRTKQorCisvKgorIE11bHRpcGx5IHRoZSBzaWduZWQgYXVkaW8gc2FtcGxlIGJ5IHRoZSB1bnNpZ25lZCBmcmFjdGlvbi4KKy0gIGEgaXMgdGhlIHNpZ25lZCBhdWRpbyBzYW1wbGUKKy0gIGIgaXMgdGhlIHVuc2lnbmVkIGZyYWN0aW9uIChjYXN0IHRvIHNpZ25lZCBpbnQgYXMgbG9uZyBhcyBjb2VmCisgICAgdXNlcyAobi0xKSBvciBsZXNzIGJpdHMsIHdoZXJlIG4gPT0gaGFyZHdhcmUgYml0IHdpZHRoKQorKi8KKyNkZWZpbmUgTVVMVF9BVURJT19DT0VGKGF1ZGlvLGNvZWYpICAgICAgICAgLypsaW50IC1lNzA0IDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAgICAgICAgIChpbnQzMl90KSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShhdWRpbykpICogKChpbnQzMl90KShjb2VmKSkgICAgXAorICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgPj4gTlVNX1BIQVNFX0ZSQUNfQklUUyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaW50ICs3MDQgPHJlc3RvcmUgY2hlY2tpbmc+Ki8KKworLyogd2V0IC8gZHJ5IGNhbGN1bGF0aW9uIG1hY3JvcyAqLworI2RlZmluZSBOVU1fV0VUX0RSWV9GUkFDX0JJVFMgICAgICAgNyAgICAvLyAxNQorI2RlZmluZSBOVU1fV0VUX0RSWV9JTlRfQklUUyAgICAgICAgOSAgICAvLyAxCisKKy8qIGRlZmluZSBhIDEuMCAqLworI2RlZmluZSBXRVRfRFJZX09ORSAgICAgICAgICAgICAgICAgKGludDMyX3QpICgoMHgxTCA8PCBOVU1fV0VUX0RSWV9GUkFDX0JJVFMpKQorI2RlZmluZSBXRVRfRFJZX01JTlVTX09ORSAgICAgICAgICAgKGludDMyX3QpICh+V0VUX0RSWV9PTkUpCisjZGVmaW5lIFdFVF9EUllfRlVMTF9TQ0FMRSAgICAgICAgICAoaW50MzJfdCkgKFdFVF9EUllfT05FIC0gMSkKKworI2RlZmluZSBNVUxUX0FVRElPX1dFVF9EUllfQ09FRihhdWRpbyxjb2VmKSAvKmxpbnQgLWUoNzAyKSA8YXZvaWQgZGl2aWRlIGZvciBwZXJmb3JtYW5jZT4qLyBcCisgICAgICAgICAgICAoaW50MzJfdCkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShhdWRpbykpICogKChpbnQzMl90KShjb2VmKSkgICAgICAgIFwKKyAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICA+PiBOVU1fV0VUX0RSWV9GUkFDX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworLyogRW52ZWxvcGUgMSAoRUcxKSBjYWxjdWxhdGlvbiBtYWNyb3MgKi8KKyNkZWZpbmUgICAgTlVNX0VHMV9JTlRfQklUUyAgICAgICAgICAxCisjZGVmaW5lIE5VTV9FRzFfRlJBQ19CSVRTICAgICAgICAgICAgMTUKKworLyogdGhlIG1heCBwb3NpdGl2ZSBnYWluIHVzZWQgaW4gdGhlIHN5bnRoIGZvciBFRzEgKi8KKy8qIFNZTlRIX0ZVTExfU0NBTEVfRUcxX0dBSU4gbXVzdCBtYXRjaCB0aGUgdmFsdWUgaW4gdGhlIGRsczJlYXMKK2NvbnZlcnRlciwgb3RoZXJ3aXNlLCB0aGUgdmFsdWVzIHdlIHJlYWQgZnJvbSB0aGUgLmVhcyBmaWxlIGFyZSBib2d1cy4gKi8KKyNkZWZpbmUgU1lOVEhfRlVMTF9TQ0FMRV9FRzFfR0FJTiAgICAoaW50MzJfdCkgKCgweDFMIDw8IE5VTV9FRzFfRlJBQ19CSVRTKSAtMSkKKworLyogZGVmaW5lIGEgMS4wICovCisjZGVmaW5lIEVHMV9PTkUgICAgICAgICAgICAgICAgICAgICAgKGludDMyX3QpICgoMHgxTCA8PCBOVU1fRUcxX0ZSQUNfQklUUykpCisjZGVmaW5lIEVHMV9NSU5VU19PTkUgICAgICAgICAgICAgICAgKGludDMyX3QpICh+U1lOVEhfRlVMTF9TQ0FMRV9FRzFfR0FJTikKKworI2RlZmluZSBFRzFfSEFMRiAgICAgICAgICAgICAgICAgICAgIChpbnQzMl90KSAoRUcxX09ORS8yKQorI2RlZmluZSBFRzFfTUlOVVNfSEFMRiAgICAgICAgICAgICAgIChpbnQzMl90KSAoRUcxX01JTlVTX09ORS8yKQorCisvKgorV2UgaW1wbGVtZW50IHRoZSBFRzEgdXNpbmcgYSBsaW5lYXIgZ2FpbiB2YWx1ZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUKK2F0dGFjayBzZWdtZW50IGlzIGhhbmRsZWQgYnkgaW5jcmVtZW50aW5nIChhZGRpbmcpIHRoZSBsaW5lYXIgZ2Fpbi4KK0hvd2V2ZXIsIEVHMSB0cmVhdHMgdGhlIERlY2F5LCBTdXN0YWluLCBhbmQgUmVsZWFzZSBkaWZmZXJlbnRseSB0aGFuCit0aGUgQXR0YWNrIHBvcnRpb24uIEZvciBEZWNheSwgU3VzdGFpbiwgYW5kIFJlbGVhc2UsIHRoZSBnYWluIGlzCitsaW5lYXIgb24gZEIgc2NhbGUsIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gZXhwb25lbnRpYWwgZGFtcGluZyBvbgorYSBsaW5lYXIgc2NhbGUuIEJlY2F1c2Ugd2UgdXNlIGEgbGluZWFyIGdhaW4gZm9yIEVHMSwgd2UgaW1wbGVtZW50Cit0aGUgRGVjYXkgYW5kIFJlbGVhc2UgYXMgbXVsdGlwbGljYXRpb24gKGluc3RlYWQgb2YgaW5jcmVtZW50aW5nCithcyB3ZSBkaWQgZm9yIHRoZSBhdHRhY2sgc2VnbWVudCkuCitUaGVyZWZvcmUsIHdlIG5lZWQgdGhlIGZvbGxvd2luZyBtYWNybyB0byBpbXBsZW1lbnQgdGhlIG11bHRpcGxpY2F0aW9uCisoaS5lLiwgZXhwb25lbnRpYWwgZGFtcGluZykgZHVyaW5nIHRoZSBEZWNheSBhbmQgUmVsZWFzZSBzZWdtZW50cyBvZgordGhlIEVHMQorKi8KKyNkZWZpbmUgTVVMVF9FRzFfRUcxKGdhaW4sZGFtcGluZykgICAgICAgIC8qbGludCAtZSg3MDQpIDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAgICAgICAgIChpbnQzMl90KSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoKGludDMyX3QpKGdhaW4pKSAqICgoaW50MzJfdCkoZGFtcGluZykpICAgIFwKKyAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICA+PiBOVU1fRUcxX0ZSQUNfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisvLyBVc2UgdGhlIGZvbGxvd2luZyBtYWNybyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBmaWx0ZXIsIHdoZW4gbXVsdGlwbHlpbmcKKy8vIHRoZSBiMSBjb2VmZmljaWVudC4gVGhlIDAgPD0gfGIxfCA8IDIsIHdoaWNoIHRoZXJlZm9yZSBtaWdodCBvdmVyZmxvdworLy8gaW4gY2VydGFpbiBjb25kaXRpb25zIGJlY2F1c2Ugd2Ugc3RvcmUgYjEgYXMgYSAxLjE1IHZhbHVlLgorLy8gSW5zdGVhZCwgd2UgY291bGQgc3RvcmUgYjEgYXMgYjFwIChiMScgPT0gYjEgInByaW1lIikgd2hlcmUKKy8vIGIxcCA9PSBiMS8yLCB0aHVzIGVuc3VyaW5nIG5vIHBvdGVudGlhbCBvdmVyZmxvdyBmb3IgYjFwIGJlY2F1c2UKKy8vIDAgPD0gfGIxcHwgPCAxCisvLyBIb3dldmVyLCBkdXJpbmcgdGhlIGZpbHRlciBjYWxjdWxhdGlvbiwgd2UgbXVzdCBhY2NvdW50IGZvciB0aGUgZmFjdAorLy8gdGhhdCB3ZSBhcmUgdXNpbmcgYjFwIGluc3RlYWQgb2YgYjEsIGFuZCB0aGVyZWJ5IG11bHRpcGx5IGJ5CisvLyBhbiBleHRyYSBmYWN0b3Igb2YgMi4gUmF0aGVyIHRoYW4gbXVsdGlwbHkgYnkgYW4gZXh0cmEgZmFjdG9yIG9mIDIsCisvLyB3ZSBjYW4gaW5zdGVhZCBzaGlmdCB0aGUgcmVzdWx0IHJpZ2h0IGJ5IG9uZSBsZXNzLCBoZW5jZSB0aGUKKy8vIG1vZGlmaWVkIHNoaWZ0IHJpZ2h0IHZhbHVlIG9mIChOVU1fRUcxX0ZSQUNfQklUUyAtMSkKKyNkZWZpbmUgTVVMVF9FRzFfRUcxX1gyKGdhaW4sZGFtcGluZykgICAgICAgICAvKmxpbnQgLWUoNzAyKSA8YXZvaWQgZGl2aWRlIGZvciBwZXJmb3JtYW5jZT4qLyBcCisgICAgICAgICAgICAoaW50MzJfdCkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShnYWluKSkgKiAoKGludDMyX3QpKGRhbXBpbmcpKSAgICBcCisgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgPj4gKE5VTV9FRzFfRlJBQ19CSVRTIC0xKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyNkZWZpbmUgU0FUVVJBVEVfRUcxKHgpICAgICAgICAvKmxpbnQgLWV7NzM0fSBzYXR1cmF0aW9uIG9wZXJhdGlvbiAqLyAgICAgICAgICAgICAgICBcCisgICAgKChpbnQzMl90KSh4KSA+IFNZTlRIX0ZVTExfU0NBTEVfRUcxX0dBSU4pICAgID8gKFNZTlRIX0ZVTExfU0NBTEVfRUcxX0dBSU4pIDogICAgXAorICAgICgoaW50MzJfdCkoeCkgPCBFRzFfTUlOVVNfT05FKSAgICAgICAgICAgICAgICA/IChFRzFfTUlOVVNfT05FKSA6ICAgICh4KTsKKworCisvKiB1c2UgImRpZ2l0YWwgY2VudHMiID09ICJkZW50cyIgaW5zdGVhZCBvZiBjZW50cyAqLworLyogd2UgY291ZGwgcmUtdXNlIHRoZSBwaGFzZSBmcmFjIG1hY3JvcywgYnV0IGlmIHdlIGRvLAord2UgbXVzdCBjaGFuZ2UgdGhlIHBoYXNlIG1hY3JvcyB0byBjYXN0IHRvIF9JMzIgaW5zdGVhZCBvZiBfVTMyLAorYmVjYXVzZSB1c2luZyBhIF9VMzIgY2FzdCBjYXVzZXMgcHJvYmxlbXMgd2hlbiBzaGlmdGluZyB0aGUgZXhwb25lbnQKK2ZvciB0aGUgMl54IGNhbGN1bGF0aW9uLCBiZWNhdXNlIHJpZ2h0IHNoaWZ0IGEgbmVnYXRpdmUgdmFsdWVzIE1VU1QKK2JlIHNpZ24gZXh0ZW5kZWQsIG9yIGVsc2UgdGhlIDJeeCBjYWxjdWxhdGlvbiBpcyB3cm9uZyAqLworCisvKiB1c2UgImRpZ2l0YWwgY2VudHMiID09ICJkZW50cyIgaW5zdGVhZCBvZiBjZW50cyAqLworI2RlZmluZSBOVU1fREVOVFNfRlJBQ19CSVRTICAgICAgICAxMgorI2RlZmluZSBOVU1fREVOVFNfSU5UX0JJVFMgICAgICAgICAoSEFSRFdBUkVfQklUX1dJRFRIIC0gTlVNX0RFTlRTX0ZSQUNfQklUUykKKworI2RlZmluZSBERU5UU19GUkFDX01BU0sgICAgICAgICAgICAoaW50MzJfdCkgKCgweDFMIDw8IE5VTV9ERU5UU19GUkFDX0JJVFMpIC0xKQorCisjZGVmaW5lIEdFVF9ERU5UU19JTlRfUEFSVCh4KSAgICAgICAgLypsaW50IC1lKDcwNCkgPGF2b2lkIGRpdmlkZSBmb3IgcGVyZm9ybWFuY2U+Ki8gICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQzMl90KSgoaW50MzJfdCkoeCkgPj4gTlVNX0RFTlRTX0ZSQUNfQklUUykKKworI2RlZmluZSBHRVRfREVOVFNfRlJBQ19QQVJUKHgpICAgICAoaW50MzJfdCkoKGludDMyX3QpKHgpICYgREVOVFNfRlJBQ19NQVNLKQorCisjZGVmaW5lIERFTlRTX09ORSAgICAgICAgICAgICAgICAgIChpbnQzMl90KSAoMHgxTCA8PCBOVU1fREVOVFNfRlJBQ19CSVRTKQorCisvKiB1c2UgQ0VOVFNfVE9fREVOVFMgdG8gY29udmVydCBhIHZhbHVlIGluIGNlbnRzIHRvIGRlbnRzICovCisjZGVmaW5lIENFTlRTX1RPX0RFTlRTIChpbnQzMl90KSAoREVOVFNfT05FICogKDB4MUwgPDwgTlVNX0VHMV9GUkFDX0JJVFMpIC8gMTIwMEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworCisvKgorRm9yIGdhaW4sIHRoZSBMRk8gZ2VuZXJhdGVzIGEgdmFsdWUgdGhhdCBtb2R1bGF0ZXMgaW4gdGVybXMKK29mIGRCLiBIb3dldmVyLCB3ZSB1c2UgYSBsaW5lYXIgZ2FpbiB2YWx1ZSwgc28gd2UgbXVzdCBjb252ZXJ0Cit0aGUgTEZPIHZhbHVlIGluIGRCIHRvIGEgbGluZWFyIGdhaW4uIE5vcm1hbGx5LCB3ZSB3b3VsZCB1c2UKK2xpbmVhciBnYWluID0gMTBeeCwgd2hlcmUgeCA9IExGTyB2YWx1ZSBpbiBkQiAvIDIwLgorSW5zdGVhZCwgd2UgaW1wbGVtZW50IDEwXnggdXNpbmcgb3VyIDJeeCBhcHByb3hpbWF0aW9uLgorYmVjYXVzZQorCisgIDEwXnggPSAyXihsb2cyKDEwXngpKSA9IDJeKHggKiBsb2cyKDEwKSkKKworc28gd2UgbmVlZCB0byBtdWx0aXBseSBieSBsb2cyKDEwKSB3aGljaCBpcyBqdXN0IGEgY29uc3RhbnQuCitBaCwgYnV0IGp1c3Qgd2FpdCAtLSBvdXIgMl54IGFjdHVhbGx5IGRvZXNuJ3QgZXhhY3RseSBpbXBsZW1lbnQKKzJeeCwgYnV0IGl0IGFjdHVhbGx5IGFzc3VtZXMgdGhhdCB0aGUgaW5wdXQgaXMgaW4gY2VudHMsIGFuZCB3aXRoaW4KK3RoZSAyXnggYXBwcm94aW1hdGlvbiBjb252ZXJ0cyBpdHMgaW5wdXQgZnJvbSBjZW50cyB0byBvY3RhdmVzCitieSBkaXZpZGluZyBpdHMgaW5wdXQgYnkgMTIwMC4KKworU28sIGluIG9yZGVyIHRvIGNvbnZlcnQgdGhlIExGTyBnYWluIHZhbHVlIGluIGRCIHRvIHNvbWV0aGluZwordGhhdCBvdXIgZXhpc3RpbmcgMl54IGFwcHJveGltYXRpb24gY2FuIHVzZSwgbXVsdGlwbHkgdGhlIExGTyBnYWluCitieSBsb2cyKDEwKSAqIDEyMDAgLyAyMAorCitUaGUgZGl2aWRlIGJ5IDIwIGhlbHBzIGNvbnZlcnQgZEIgdG8gbGluZWFyIGdhaW4sIGFuZCB3ZSBtaWdodAorYXMgd2VsbCBpbmNvcnBvcmF0ZSB0aGF0IG9wZXJhdGlvbiBpbnRvIHRoaXMgY29udmVyc2lvbi4KK09mIGNvdXJzZSwgd2UgbmVlZCB0byBrZWVwIHNvbWUgZnJhY3Rpb25hbCBiaXRzLCBzbyBtdWx0aXBseQordGhlIGNvbnN0YW50IGJ5IE5VTV9FRzFfRlJBQ19CSVRTCisqLworCisvKiB1c2UgTEZPX0dBSU5fVE9fQ0VOVFMgdG8gY29udmVydCB0aGUgTEZPIGdhaW4gdmFsdWUgdG8gY2VudHMgKi8KKyNpZiAwCisjZGVmaW5lICAgIERPVUJMRV9MT0cyXzEwICAgIChkb3VibGUpICgzLjMyMTkyODA5NDg4NzM2KSAgICAvKiBsb2cyKDEwKSAqLworCisjZGVmaW5lICAgIERPVUJMRV9MRk9fR0FJTl9UT19DRU5UUyAgICAoZG91YmxlKSAgICAgICAgICAgICAgICBcCisgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIChET1VCTEVfTE9HMl8xMCkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgMTIwMC4wICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgMjAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorCisjZGVmaW5lICAgIExGT19HQUlOX1RPX0NFTlRTICAgIChpbnQzMl90KSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgRE9VQkxFX0xGT19HQUlOX1RPX0NFTlRTICogICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoMHgxTCA8PCBOVU1fRUcxX0ZSQUNfQklUUykgICAgICAgICAgICAgICAgICAgIFwKKyAgICApCisjZW5kaWYKKworI2RlZmluZSBMRk9fR0FJTl9UT19DRU5UUyAoaW50MzJfdCkgKDE2NzE5ODExNTZMID4+ICgyMyAtIE5VTV9FRzFfRlJBQ19CSVRTKSkKKworCisjZGVmaW5lIE1VTFRfREVOVFNfQ09FRihkZW50cyxjb2VmKSAgICAgLypsaW50IC1lNzA0IDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovICAgIFwKKyAgICAgICAgICAgIChpbnQzMl90KSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShkZW50cykpICogKChpbnQzMl90KShjb2VmKSkgICAgXAorICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgPj4gTlVNX0RFTlRTX0ZSQUNfQklUUyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaW50ICtlNzA0IDxyZXN0b3JlIGNoZWNraW5nPiovCisKKworLyogd2UgdXNlIDE2LWJpdHMgaW4gdGhlIFBDIHBlciBhdWRpbyBzYW1wbGUgKi8KKyNkZWZpbmUgQklUU19QRVJfQVVESU9fU0FNUExFICAgIDE2CisKKy8qIHdlIGRlZmluZSAxIGFzIDEuMCAtIDEgTFNiaXQgKi8KKyNkZWZpbmUgRElTVE9SVElPTl9PTkUgICAgICAgICAgIChpbnQzMl90KSgoMHgxTCA8PCAoQklUU19QRVJfQVVESU9fU0FNUExFLTEpKSAtMSkKKyNkZWZpbmUgRElTVE9SVElPTl9NSU5VU19PTkUgICAgIChpbnQzMl90KSh+RElTVE9SVElPTl9PTkUpCisKKy8qIGRyaXZlIGNvZWYgaXMgZ2l2ZW4gYXMgaW50LmZyYWMgKi8KKyNkZWZpbmUgTlVNX0RSSVZFX0NPRUZfSU5UX0JJVFMgIDEKKyNkZWZpbmUgTlVNX0RSSVZFX0NPRUZfRlJBQ19CSVRTIDQKKworI2RlZmluZSBNVUxUX0FVRElPX0RSSVZFKGF1ZGlvLGRyaXZlKSAgICAgICAgIC8qbGludCAtZSg3MDIpIDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAgICAgICAgIChpbnQzMl90KSAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShhdWRpbykpICogKChpbnQzMl90KShkcml2ZSkpICAgIFwKKyAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgID4+IE5VTV9EUklWRV9DT0VGX0ZSQUNfQklUUyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisjZGVmaW5lIE1VTFRfQVVESU9fQVVESU8oYXVkaW8xLGF1ZGlvMikgICAgICAgICAvKmxpbnQgLWUoNzAyKSA8YXZvaWQgZGl2aWRlIGZvciBwZXJmb3JtYW5jZT4qLyBcCisgICAgICAgICAgICAoaW50MzJfdCkgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShhdWRpbzEpKSAqICgoaW50MzJfdCkoYXVkaW8yKSkgICAgXAorICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgID4+IChCSVRTX1BFUl9BVURJT19TQU1QTEUtMSkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyNkZWZpbmUgU0FUVVJBVEUoeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoKGludDMyX3QpKHgpKSA+IERJU1RPUlRJT05fT05FKSAgICAgICAgPyAoRElTVE9SVElPTl9PTkUpIDogICAgICAgICAgICBcCisgICAgKCgoaW50MzJfdCkoeCkpIDwgRElTVE9SVElPTl9NSU5VU19PTkUpICAgID8gKERJU1RPUlRJT05fTUlOVVNfT05FKSA6ICAgICgoaW50MzJfdCkoeCkpKTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEVmZmVjdHNfbG9nMigpCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBGaXhlZC1wb2ludCBsb2cyIGZ1bmN0aW9uLgorICoKKyAqIElucHV0czoKKyAqIElucHV0IGlzIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgKHNob3VsZCBub3QgYmUgMCkuCisgKgorICogT3V0cHV0czoKKyAqIE91dHB1dCBpcyBpbiAxNS1iaXQgcHJlY2lzaW9uLgorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCitpbnQzMl90IEVmZmVjdHNfbG9nMih1aW50MzJfdCB4KTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFZmZlY3RzX2V4cDIoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogRml4ZWQtcG9pbnQgcmFkaXgtMiBleHBvbmVudC4KKyAqCisgKiBJbnB1dHM6CisgKiBJbnB1dCBpcyBpbiAxNS1iaXQgcHJlY2lzaW9uLiBNdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgbGVzcyB0aGFuIDMyLgorICoKKyAqIE91dHB1dHM6CisgKiBPdXRwdXQgaXMgYW4gaW50ZWdlci4KKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLwordWludDMyX3QgRWZmZWN0c19leHAyKGludDMyX3QgeCk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRWZmZWN0c19NaWxsaWJlbHNUb0xpbmVhcjE2KCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIFRyYW5zZm9ybSBnYWluIGluIG1pbGxpYmVscyB0byBsaW5lYXIgZ2FpbiBtdWx0aXBsaWVyOgorICoKKyAqIG1CID0gMjAwMCpsb2cobGluLzMyNzY3KQorICogICAgPT4gbGluID0gMl4oKG1CKzIwMDAqbG9nKDMyNzY3KSkvMjAwMCpsb2coMikpCisgKiAgICA9PiBsaW4gPSBFZmZlY3RzX2V4cDIoKChtQiArIEsxKSA8PCAxNSkgLyBLMikKKyAqIHdpdGg6CisgKiAgICBLMSA9IDIwMDAqbG9nKDMyNzY3KSBhbmQgSzIgPSAyMDAwKmxvZygyKQorICoKKyAqIElucHV0czoKKyAqIG5HYWluIC0gbG9nIHNjYWxlIHZhbHVlIGluIG1pbGxpYmVscy4KKyAqCisgKiBPdXRwdXRzOgorICogUmV0dXJucyBhIDE2LWJpdCBsaW5lYXIgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byAyXihuR2Fpbi8xMDI0KQorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisjZGVmaW5lIE1CX1RPX0xJTl9LMSA5MDMxCisjZGVmaW5lIE1CX1RPX0xJTl9LMiA2MDIKK2ludDE2X3QgRWZmZWN0c19NaWxsaWJlbHNUb0xpbmVhcjE2IChpbnQzMl90IG5HYWluKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHMoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogVHJhbnNmb3JtIGxpbmVhciBnYWluIG11bHRpcGxpZXIgdG8gbWlsbGliZWxzCisgKiAgbUIgPSAyMDAwKmxvZyhsaW4vMzI3NjcpCisgKiAgICAgPSAyMDAwKmxvZygyKSpsb2cyKGxpbiktMjAwMCpsb2coMzI3NjcpCisgKiAgICA9PiBtQiA9IEsxKkVmZmVjdHNfbG9nMihsaW4pICsgSzIKKyAqIHdpdGg6CisgKiAgICBLMSA9IDIwMDAqbG9nKDIpIGFuZCBLMiA9IC0yMDAwKmxvZygzMjc2NykKKyAqCisgKiBJbnB1dHM6CisgKiBuR2FpbiAtIGxpbmVhciBtdWx0aXBsaWVyIHJhbmdpbmcgZm9ybSAwIHRvIDMyNzY3IChjb3JyZXNwb25kaW5nIHRvIFswIDFdIGdhaW4gcmFuZ2UpLgorICoKKyAqIE91dHB1dHM6CisgKiBSZXR1cm5zIGEgMTYtYml0IGxvZyB2YWx1ZSBleHByZXNzZWQgaW4gbWlsbGxpYmVscy4KKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworaW50MTZfdCBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHMgKGludDMyX3QgbkdhaW4pOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEVmZmVjdHNfU3FydCgpCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBSZXR1cm5zIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgYXJndW1lbnQgZ2l2ZW4uCisgKgorICogSW5wdXRzOgorICogaW4gLSBwb3NpdGl2ZSBudW1iZXIgaW4gdGhlIHJhbmdlIDAgLSAyXjI4CisgKgorICogT3V0cHV0czoKKyAqIFJldHVybmVkIHZhbHVlOiBzcXVhcmUgcm9vdCBvZiBpbi4KKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworaW50MzJfdCBFZmZlY3RzX1NxcnQoaW50MzJfdCBpbik7CisKKyNpZiBfX2NwbHVzcGx1cworfSAgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNUU01BVEhfSF8qLworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9BbmRyb2lkLm1rIGIvbWVkaWEvbGlibWVkaWEvQW5kcm9pZC5tawppbmRleCAzYWRhYmNjLi5kZTllNTFkIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9BbmRyb2lkLm1rCisrKyBiL21lZGlhL2xpYm1lZGlhL0FuZHJvaWQubWsKQEAgLTEyLDYgKzEyLDcgQEAKICAgICBtZWRpYXBsYXllci5jcHAgXAogICAgIElNZWRpYVBsYXllclNlcnZpY2UuY3BwIFwKICAgICBJTWVkaWFQbGF5ZXJDbGllbnQuY3BwIFwKKyAgICBJTWVkaWFSZWNvcmRlckNsaWVudC5jcHAgXAogICAgIElNZWRpYVBsYXllci5jcHAgXAogICAgIElNZWRpYVJlY29yZGVyLmNwcCBcCiAgICAgTWV0YWRhdGEuY3BwIFwKQEAgLTI2LDcgKzI3LDEwIEBACiAgICAgTWVkaWFTY2FubmVyQ2xpZW50LmNwcCBcCiAgICAgYXV0b2RldGVjdC5jcHAgXAogICAgIElNZWRpYURlYXRoTm90aWZpZXIuY3BwIFwKLSAgICBNZWRpYVByb2ZpbGVzLmNwcAorICAgIE1lZGlhUHJvZmlsZXMuY3BwIFwKKyAgICBJRWZmZWN0LmNwcCBcCisgICAgSUVmZmVjdENsaWVudC5jcHAgXAorICAgIEF1ZGlvRWZmZWN0LmNwcAogCiBMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKIAlsaWJ1aSBsaWJjdXRpbHMgbGlidXRpbHMgbGliYmluZGVyIGxpYnNvbml2b3ggbGliaWN1dWMgbGliZXhwYXQgbGlic3VyZmFjZWZsaW5nZXJfY2xpZW50IGxpYmNhbWVyYV9jbGllbnQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0F1ZGlvRWZmZWN0LmNwcCBiL21lZGlhL2xpYm1lZGlhL0F1ZGlvRWZmZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWZhMmRjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlibWVkaWEvQXVkaW9FZmZlY3QuY3BwCkBAIC0wLDAgKzEsNDYyIEBACisvKgorKioKKyoqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiQXVkaW9FZmZlY3QiCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworI2luY2x1ZGUgPHByaXZhdGUvbWVkaWEvQXVkaW9FZmZlY3RTaGFyZWQuaD4KKyNpbmNsdWRlIDxtZWRpYS9BdWRpb0VmZmVjdC5oPgorCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8Y3V0aWxzL2F0b21pYy5oPgorI2luY2x1ZGUgPGJpbmRlci9JUENUaHJlYWRTdGF0ZS5oPgorCisKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXVkaW9FZmZlY3Q6OkF1ZGlvRWZmZWN0KCkKKyAgICA6IG1TdGF0dXMoTk9fSU5JVCkKK3sKK30KKworCitBdWRpb0VmZmVjdDo6QXVkaW9FZmZlY3QoY29uc3QgZWZmZWN0X3V1aWRfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICBjb25zdCBlZmZlY3RfdXVpZF90ICp1dWlkLAorICAgICAgICAgICAgICAgIGludDMyX3QgcHJpb3JpdHksCisgICAgICAgICAgICAgICAgZWZmZWN0X2NhbGxiYWNrX3QgY2JmLAorICAgICAgICAgICAgICAgIHZvaWQqIHVzZXIsCisgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCwKKyAgICAgICAgICAgICAgICBhdWRpb19pb19oYW5kbGVfdCBvdXRwdXQKKyAgICAgICAgICAgICAgICApCisgICAgOiBtU3RhdHVzKE5PX0lOSVQpCit7CisgICAgbVN0YXR1cyA9IHNldCh0eXBlLCB1dWlkLCBwcmlvcml0eSwgY2JmLCB1c2VyLCBvdXRwdXQsIHNlc3Npb25JZCk7Cit9CisKK0F1ZGlvRWZmZWN0OjpBdWRpb0VmZmVjdChjb25zdCBjaGFyICp0eXBlU3RyLAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnV1aWRTdHIsCisgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICBlZmZlY3RfY2FsbGJhY2tfdCBjYmYsCisgICAgICAgICAgICAgICAgdm9pZCogdXNlciwKKyAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkLAorICAgICAgICAgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90IG91dHB1dAorICAgICAgICAgICAgICAgICkKKyAgICA6IG1TdGF0dXMoTk9fSU5JVCkKK3sKKyAgICBlZmZlY3RfdXVpZF90IHR5cGU7CisgICAgZWZmZWN0X3V1aWRfdCAqcFR5cGUgPSBOVUxMOworICAgIGVmZmVjdF91dWlkX3QgdXVpZDsKKyAgICBlZmZlY3RfdXVpZF90ICpwVXVpZCA9IE5VTEw7CisKKyAgICBMT0dWKCJDb25zdHJ1Y3RvciBzdHJpbmdcbiAtIHR5cGU6ICVzXG4gLSB1dWlkOiAlcyIsIHR5cGVTdHIsIHV1aWRTdHIpOworCisgICAgaWYgKHR5cGVTdHIgIT0gTlVMTCkgeworICAgICAgICBpZiAoc3RyaW5nVG9HdWlkKHR5cGVTdHIsICZ0eXBlKSA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgcFR5cGUgPSAmdHlwZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh1dWlkU3RyICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHN0cmluZ1RvR3VpZCh1dWlkU3RyLCAmdXVpZCkgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIHBVdWlkID0gJnV1aWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtU3RhdHVzID0gc2V0KHBUeXBlLCBwVXVpZCwgcHJpb3JpdHksIGNiZiwgdXNlciwgb3V0cHV0LCBzZXNzaW9uSWQpOworfQorCitzdGF0dXNfdCBBdWRpb0VmZmVjdDo6c2V0KGNvbnN0IGVmZmVjdF91dWlkX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgY29uc3QgZWZmZWN0X3V1aWRfdCAqdXVpZCwKKyAgICAgICAgICAgICAgICBpbnQzMl90IHByaW9yaXR5LAorICAgICAgICAgICAgICAgIGVmZmVjdF9jYWxsYmFja190IGNiZiwKKyAgICAgICAgICAgICAgICB2b2lkKiB1c2VyLAorICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQsCisgICAgICAgICAgICAgICAgYXVkaW9faW9faGFuZGxlX3Qgb3V0cHV0KQoreworICAgIHNwPElFZmZlY3Q+IGlFZmZlY3Q7CisgICAgc3A8SU1lbW9yeT4gY2JsazsKKyAgICBpbnQgZW5hYmxlZDsKKworICAgIExPR1YoInNldCAlcCBtVXNlckRhdGE6ICVwIiwgdGhpcywgdXNlcik7CisKKyAgICBpZiAobUlFZmZlY3QgIT0gMCkgeworICAgICAgICBMT0dXKCJFZmZlY3QgYWxyZWFkeSBpbiB1c2UiKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGNvbnN0IHNwPElBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIgPSBBdWRpb1N5c3RlbTo6Z2V0X2F1ZGlvX2ZsaW5nZXIoKTsKKyAgICBpZiAoYXVkaW9GbGluZ2VyID09IDApIHsKKyAgICAgICAgTE9HRSgic2V0KCk6IENvdWxkIG5vdCBnZXQgYXVkaW9mbGluZ2VyIik7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKworICAgIGlmICh0eXBlID09IE5VTEwgJiYgdXVpZCA9PSBOVUxMKSB7CisgICAgICAgIExPR1coIk11c3Qgc3BlY2lmeSBhdCBsZWFzdCB0eXBlIG9yIHV1aWQiKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBtUHJpb3JpdHkgPSBwcmlvcml0eTsKKyAgICBtQ2JmID0gY2JmOworICAgIG1Vc2VyRGF0YSA9IHVzZXI7CisgICAgbVNlc3Npb25JZCA9IHNlc3Npb25JZDsKKworICAgIG1lbXNldCgmbURlc2NyaXB0b3IsIDAsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgbWVtY3B5KCZtRGVzY3JpcHRvci50eXBlLCBFRkZFQ1RfVVVJRF9OVUxMLCBzaXplb2YoZWZmZWN0X3V1aWRfdCkpOworICAgIG1lbWNweSgmbURlc2NyaXB0b3IudXVpZCwgRUZGRUNUX1VVSURfTlVMTCwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKTsKKworICAgIGlmICh0eXBlICE9IE5VTEwpIHsKKyAgICAgICAgbWVtY3B5KCZtRGVzY3JpcHRvci50eXBlLCB0eXBlLCBzaXplb2YoZWZmZWN0X3V1aWRfdCkpOworICAgIH0KKyAgICBpZiAodXVpZCAhPSBOVUxMKSB7CisgICAgICAgIG1lbWNweSgmbURlc2NyaXB0b3IudXVpZCwgdXVpZCwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKTsKKyAgICB9CisKKyAgICBtSUVmZmVjdENsaWVudCA9IG5ldyBFZmZlY3RDbGllbnQodGhpcyk7CisKKyAgICBpRWZmZWN0ID0gYXVkaW9GbGluZ2VyLT5jcmVhdGVFZmZlY3QoZ2V0cGlkKCksIChlZmZlY3RfZGVzY3JpcHRvcl90ICopJm1EZXNjcmlwdG9yLAorICAgICAgICAgICAgbUlFZmZlY3RDbGllbnQsIHByaW9yaXR5LCBvdXRwdXQsIG1TZXNzaW9uSWQsICZtU3RhdHVzLCAmbUlkLCAmZW5hYmxlZCk7CisKKyAgICBpZiAoaUVmZmVjdCA9PSAwIHx8IChtU3RhdHVzICE9IE5PX0VSUk9SICYmIG1TdGF0dXMgIT0gQUxSRUFEWV9FWElTVFMpKSB7CisgICAgICAgIExPR0UoInNldCgpOiBBdWRpb0ZsaW5nZXIgY291bGQgbm90IGNyZWF0ZSBlZmZlY3QsIHN0YXR1czogJWQiLCBtU3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIG1TdGF0dXM7CisgICAgfQorCisgICAgbUVuYWJsZWQgPSAodm9sYXRpbGUgaW50MzJfdCllbmFibGVkOworCisgICAgbUlFZmZlY3QgPSBpRWZmZWN0OworICAgIGNibGsgPSBpRWZmZWN0LT5nZXRDYmxrKCk7CisgICAgaWYgKGNibGsgPT0gMCkgeworICAgICAgICBtU3RhdHVzID0gTk9fSU5JVDsKKyAgICAgICAgTE9HRSgiQ291bGQgbm90IGdldCBjb250cm9sIGJsb2NrIik7CisgICAgICAgIHJldHVybiBtU3RhdHVzOworICAgIH0KKworICAgIG1JRWZmZWN0ID0gaUVmZmVjdDsKKyAgICBtQ2Jsa01lbW9yeSA9IGNibGs7CisgICAgbUNibGsgPSBzdGF0aWNfY2FzdDxlZmZlY3RfcGFyYW1fY2Jsa190Kj4oY2Jsay0+cG9pbnRlcigpKTsKKyAgICBpbnQgYnVmT2Zmc2V0ID0gKChzaXplb2YoZWZmZWN0X3BhcmFtX2NibGtfdCkgLSAxKSAvIHNpemVvZihpbnQpICsgMSkgKiBzaXplb2YoaW50KTsKKyAgICBtQ2Jsay0+YnVmZmVyID0gKHVpbnQ4X3QgKiltQ2JsayArIGJ1Zk9mZnNldDsKKworICAgIGlFZmZlY3QtPmFzQmluZGVyKCktPmxpbmtUb0RlYXRoKG1JRWZmZWN0Q2xpZW50KTsKKyAgICBMT0dWKCJzZXQoKSAlcCBPSyBlZmZlY3Q6ICVzIGlkOiAlZCBzdGF0dXMgJWQgZW5hYmxlZCAlZCwgIiwgdGhpcywgbURlc2NyaXB0b3IubmFtZSwgbUlkLCBtU3RhdHVzLCBtRW5hYmxlZCk7CisKKyAgICByZXR1cm4gbVN0YXR1czsKK30KKworCitBdWRpb0VmZmVjdDo6fkF1ZGlvRWZmZWN0KCkKK3sKKyAgICBMT0dWKCJEZXN0cnVjdG9yICVwIiwgdGhpcyk7CisKKyAgICBpZiAobVN0YXR1cyA9PSBOT19FUlJPUiB8fCBtU3RhdHVzID09IEFMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgIGRpc2FibGUoKTsKKyAgICAgICAgaWYgKG1JRWZmZWN0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1JRWZmZWN0LT5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICBtSUVmZmVjdC0+YXNCaW5kZXIoKS0+dW5saW5rVG9EZWF0aChtSUVmZmVjdENsaWVudCk7CisgICAgICAgIH0KKyAgICAgICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmZsdXNoQ29tbWFuZHMoKTsKKyAgICB9CisgICAgbUlFZmZlY3QuY2xlYXIoKTsKKyAgICBtSUVmZmVjdENsaWVudC5jbGVhcigpOworICAgIG1DYmxrTWVtb3J5LmNsZWFyKCk7Cit9CisKKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OmluaXRDaGVjaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0dXM7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZWZmZWN0X2Rlc2NyaXB0b3JfdCBBdWRpb0VmZmVjdDo6ZGVzY3JpcHRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZXNjcmlwdG9yOworfQorCitib29sIEF1ZGlvRWZmZWN0Ojppc0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiAobUVuYWJsZWQgIT0gMCk7Cit9CisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjplbmFibGUoKQoreworICAgIGlmIChtU3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisgICAgTE9HVigiZW5hYmxlICVwIiwgdGhpcyk7CisKKyAgICBpZiAoYW5kcm9pZF9hdG9taWNfb3IoMSwgJm1FbmFibGVkKSA9PSAwKSB7CisgICAgICAgcmV0dXJuIG1JRWZmZWN0LT5lbmFibGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047Cit9CisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpkaXNhYmxlKCkKK3sKKyAgICBpZiAobVN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorICAgIExPR1YoImRpc2FibGUgJXAiLCB0aGlzKTsKKworICAgIGlmIChhbmRyb2lkX2F0b21pY19hbmQofjEsICZtRW5hYmxlZCkgPT0gMSkgeworICAgICAgIHJldHVybiBtSUVmZmVjdC0+ZGlzYWJsZSgpOworICAgIH0KKworICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OmNvbW1hbmQoaW50MzJfdCBjbWRDb2RlLCBpbnQzMl90IGNtZFNpemUsIHZvaWQgKmNtZERhdGEsIGludDMyX3QgKnJlcGx5U2l6ZSwgdm9pZCAqcmVwbHlEYXRhKQoreworICAgIGlmIChtU3RhdHVzICE9IE5PX0VSUk9SICYmIG1TdGF0dXMgIT0gQUxSRUFEWV9FWElTVFMpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIHJldHVybiBtSUVmZmVjdC0+Y29tbWFuZChjbWRDb2RlLCBjbWRTaXplLCBjbWREYXRhLCByZXBseVNpemUsIHJlcGx5RGF0YSk7Cit9CisKKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OnNldFBhcmFtZXRlcihlZmZlY3RfcGFyYW1fdCAqcGFyYW0pCit7CisgICAgaWYgKG1TdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmIChwYXJhbSA9PSBOVUxMIHx8IHBhcmFtLT5wc2l6ZSA9PSAwIHx8IHBhcmFtLT52c2l6ZSA9PSAwKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgaW50IHNpemUgPSBzaXplb2YoaW50KTsKKyAgICBpbnQgcHNpemUgPSAoKHBhcmFtLT5wc2l6ZSAtIDEpIC8gc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpICsgcGFyYW0tPnZzaXplOworCisgICAgTE9HVigic2V0UGFyYW1ldGVyOiBwYXJhbTogJWQsIHBhcmFtMjogJWQiLCAqKGludCAqKXBhcmFtLT5kYXRhLCAocGFyYW0tPnBzaXplID09IDgpID8gKigoaW50ICopcGFyYW0tPmRhdGEgKyAxKTogLTEpOworCisgICAgcmV0dXJuIG1JRWZmZWN0LT5jb21tYW5kKEVGRkVDVF9DTURfU0VUX1BBUkFNLCBzaXplb2YgKGVmZmVjdF9wYXJhbV90KSArIHBzaXplLCBwYXJhbSwgJnNpemUsICZwYXJhbS0+c3RhdHVzKTsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OnNldFBhcmFtZXRlckRlZmVycmVkKGVmZmVjdF9wYXJhbV90ICpwYXJhbSkKK3sKKyAgICBpZiAobVN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorCisgICAgaWYgKHBhcmFtID09IE5VTEwgfHwgcGFyYW0tPnBzaXplID09IDAgfHwgcGFyYW0tPnZzaXplID09IDApIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUNibGstPmxvY2spOworCisgICAgaW50IHBzaXplID0gKChwYXJhbS0+cHNpemUgLSAxKSAvIHNpemVvZihpbnQpICsgMSkgKiBzaXplb2YoaW50KSArIHBhcmFtLT52c2l6ZTsKKyAgICBpbnQgc2l6ZSA9ICgoc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHBzaXplIC0gMSkgLyBzaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCk7CisKKyAgICBpZiAobUNibGstPmNsaWVudEluZGV4ICsgc2l6ZSA+IEVGRkVDVF9QQVJBTV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXR1cm4gTk9fTUVNT1JZOworICAgIH0KKyAgICBpbnQgKnAgPSAoaW50ICopKG1DYmxrLT5idWZmZXIgKyBtQ2Jsay0+Y2xpZW50SW5kZXgpOworICAgICpwKysgPSBzaXplOworICAgIG1lbWNweShwLCBwYXJhbSwgc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHBzaXplKTsKKyAgICBtQ2Jsay0+Y2xpZW50SW5kZXggKz0gc2l6ZTsKKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OnNldFBhcmFtZXRlckNvbW1pdCgpCit7CisgICAgaWYgKG1TdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIE11dGV4OjpBdXRvbG9jayBfbChtQ2Jsay0+bG9jayk7CisgICAgaWYgKG1DYmxrLT5jbGllbnRJbmRleCA9PSAwKSB7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisgICAgaW50IHNpemUgPSAwOworICAgIHJldHVybiBtSUVmZmVjdC0+Y29tbWFuZChFRkZFQ1RfQ01EX1NFVF9QQVJBTV9DT01NSVQsIDAsIE5VTEwsICZzaXplLCBOVUxMKTsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OmdldFBhcmFtZXRlcihlZmZlY3RfcGFyYW1fdCAqcGFyYW0pCit7CisgICAgaWYgKG1TdGF0dXMgIT0gTk9fRVJST1IgJiYgbVN0YXR1cyAhPSBBTFJFQURZX0VYSVNUUykgeworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorCisgICAgaWYgKHBhcmFtID09IE5VTEwgfHwgcGFyYW0tPnBzaXplID09IDAgfHwgcGFyYW0tPnZzaXplID09IDApIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBMT0dWKCJnZXRQYXJhbWV0ZXI6IHBhcmFtOiAlZCwgcGFyYW0yOiAlZCIsICooaW50ICopcGFyYW0tPmRhdGEsIChwYXJhbS0+cHNpemUgPT0gOCkgPyAqKChpbnQgKilwYXJhbS0+ZGF0YSArIDEpOiAtMSk7CisKKyAgICBpbnQgcHNpemUgPSBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgKChwYXJhbS0+cHNpemUgLSAxKSAvIHNpemVvZihpbnQpICsgMSkgKiBzaXplb2YoaW50KSArIHBhcmFtLT52c2l6ZTsKKworICAgIHJldHVybiBtSUVmZmVjdC0+Y29tbWFuZChFRkZFQ1RfQ01EX0dFVF9QQVJBTSwgc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHBhcmFtLT5wc2l6ZSwgcGFyYW0sICZwc2l6ZSwgcGFyYW0pOworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBBdWRpb0VmZmVjdDo6YmluZGVyRGllZCgpCit7CisgICAgTE9HVygiSUVmZmVjdCBkaWVkIik7CisgICAgbVN0YXR1cyA9IE5PX0lOSVQ7CisgICAgaWYgKG1DYmYpIHsKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gREVBRF9PQkpFQ1Q7CisgICAgICAgIG1DYmYoRVZFTlRfRVJST1IsIG1Vc2VyRGF0YSwgJnN0YXR1cyk7CisgICAgfQorICAgIG1JRWZmZWN0LmNsZWFyKCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBBdWRpb0VmZmVjdDo6Y29udHJvbFN0YXR1c0NoYW5nZWQoYm9vbCBjb250cm9sR3JhbnRlZCkKK3sKKyAgICBMT0dWKCJjb250cm9sU3RhdHVzQ2hhbmdlZCAlcCBjb250cm9sICVkIGNhbGxiYWNrICVwIG1Vc2VyRGF0YSAlcCIsIHRoaXMsIGNvbnRyb2xHcmFudGVkLCBtQ2JmLCBtVXNlckRhdGEpOworICAgIGlmIChjb250cm9sR3JhbnRlZCkgeworICAgICAgICBpZiAobVN0YXR1cyA9PSBBTFJFQURZX0VYSVNUUykgeworICAgICAgICAgICAgbVN0YXR1cyA9IE5PX0VSUk9SOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1TdGF0dXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIG1TdGF0dXMgPSBBTFJFQURZX0VYSVNUUzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobUNiZikgeworICAgICAgICBtQ2JmKEVWRU5UX0NPTlRST0xfU1RBVFVTX0NIQU5HRUQsIG1Vc2VyRGF0YSwgJmNvbnRyb2xHcmFudGVkKTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9FZmZlY3Q6OmVuYWJsZVN0YXR1c0NoYW5nZWQoYm9vbCBlbmFibGVkKQoreworICAgIExPR1YoImVuYWJsZVN0YXR1c0NoYW5nZWQgJXAgZW5hYmxlZCAlZCIsIHRoaXMsIGVuYWJsZWQpOworICAgIGlmIChtU3RhdHVzID09IEFMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgIG1FbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgaWYgKG1DYmYpIHsKKyAgICAgICAgICAgIG1DYmYoRVZFTlRfRU5BQkxFX1NUQVRVU19DSEFOR0VELCBtVXNlckRhdGEsICZlbmFibGVkKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBdWRpb0VmZmVjdDo6Y29tbWFuZEV4ZWN1dGVkKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwgdm9pZCAqY21kRGF0YSwgaW50IHJlcGx5U2l6ZSwgdm9pZCAqcmVwbHlEYXRhKQoreworICAgIGlmIChjbWREYXRhID09IE5VTEwgfHwgcmVwbHlEYXRhID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtQ2JmICYmIGNtZENvZGUgPT0gRUZGRUNUX0NNRF9TRVRfUEFSQU0pIHsKKyAgICAgICAgZWZmZWN0X3BhcmFtX3QgKmNtZCA9IChlZmZlY3RfcGFyYW1fdCAqKWNtZERhdGE7CisgICAgICAgIGNtZC0+c3RhdHVzID0gKihpbnQzMl90ICopcmVwbHlEYXRhOworICAgICAgICBtQ2JmKEVWRU5UX1BBUkFNRVRFUl9DSEFOR0VELCBtVXNlckRhdGEsIGNtZCk7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXR1c190IEF1ZGlvRWZmZWN0Ojpsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSkKK3sKKyAgICBjb25zdCBzcDxJQXVkaW9GbGluZ2VyPiYgYWYgPSBBdWRpb1N5c3RlbTo6Z2V0X2F1ZGlvX2ZsaW5nZXIoKTsKKyAgICBpZiAoYWYgPT0gMCkgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOworICAgIHJldHVybiBhZi0+bG9hZEVmZmVjdExpYnJhcnkobGliUGF0aCwgaGFuZGxlKTsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OnVubG9hZEVmZmVjdExpYnJhcnkoaW50IGhhbmRsZSkKK3sKKyAgICBjb25zdCBzcDxJQXVkaW9GbGluZ2VyPiYgYWYgPSBBdWRpb1N5c3RlbTo6Z2V0X2F1ZGlvX2ZsaW5nZXIoKTsKKyAgICBpZiAoYWYgPT0gMCkgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOworICAgIHJldHVybiBhZi0+dW5sb2FkRWZmZWN0TGlicmFyeShoYW5kbGUpOworfQorCitzdGF0dXNfdCBBdWRpb0VmZmVjdDo6cXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpudW1FZmZlY3RzKQoreworICAgIGNvbnN0IHNwPElBdWRpb0ZsaW5nZXI+JiBhZiA9IEF1ZGlvU3lzdGVtOjpnZXRfYXVkaW9fZmxpbmdlcigpOworICAgIGlmIChhZiA9PSAwKSByZXR1cm4gUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgcmV0dXJuIGFmLT5xdWVyeU51bWJlckVmZmVjdHMobnVtRWZmZWN0cyk7Cit9CisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpxdWVyeUVmZmVjdCh1aW50MzJfdCBpbmRleCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcikKK3sKKyAgICBjb25zdCBzcDxJQXVkaW9GbGluZ2VyPiYgYWYgPSBBdWRpb1N5c3RlbTo6Z2V0X2F1ZGlvX2ZsaW5nZXIoKTsKKyAgICBpZiAoYWYgPT0gMCkgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOworICAgIHJldHVybiBhZi0+cXVlcnlFZmZlY3QoaW5kZXgsIGRlc2NyaXB0b3IpOworfQorCitzdGF0dXNfdCBBdWRpb0VmZmVjdDo6Z2V0RWZmZWN0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICp1dWlkLCBlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjcmlwdG9yKQoreworICAgIGNvbnN0IHNwPElBdWRpb0ZsaW5nZXI+JiBhZiA9IEF1ZGlvU3lzdGVtOjpnZXRfYXVkaW9fZmxpbmdlcigpOworICAgIGlmIChhZiA9PSAwKSByZXR1cm4gUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgcmV0dXJuIGFmLT5nZXRFZmZlY3REZXNjcmlwdG9yKHV1aWQsIGRlc2NyaXB0b3IpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpzdHJpbmdUb0d1aWQoY29uc3QgY2hhciAqc3RyLCBlZmZlY3RfdXVpZF90ICpndWlkKQoreworICAgIGlmIChzdHIgPT0gTlVMTCB8fCBndWlkID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBpbnQgdG1wWzEwXTsKKworICAgIGlmIChzc2NhbmYoc3RyLCAiJTA4eC0lMDR4LSUwNHgtJTA0eC0lMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorICAgICAgICAgICAgdG1wLCB0bXArMSwgdG1wKzIsIHRtcCszLCB0bXArNCwgdG1wKzUsIHRtcCs2LCB0bXArNywgdG1wKzgsIHRtcCs5KSA8IDEwKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIGd1aWQtPnRpbWVMb3cgPSAodWludDMyX3QpdG1wWzBdOworICAgIGd1aWQtPnRpbWVNaWQgPSAodWludDE2X3QpdG1wWzFdOworICAgIGd1aWQtPnRpbWVIaUFuZFZlcnNpb24gPSAodWludDE2X3QpdG1wWzJdOworICAgIGd1aWQtPmNsb2NrU2VxID0gKHVpbnQxNl90KXRtcFszXTsKKyAgICBndWlkLT5ub2RlWzBdID0gKHVpbnQ4X3QpdG1wWzRdOworICAgIGd1aWQtPm5vZGVbMV0gPSAodWludDhfdCl0bXBbNV07CisgICAgZ3VpZC0+bm9kZVsyXSA9ICh1aW50OF90KXRtcFs2XTsKKyAgICBndWlkLT5ub2RlWzNdID0gKHVpbnQ4X3QpdG1wWzddOworICAgIGd1aWQtPm5vZGVbNF0gPSAodWludDhfdCl0bXBbOF07CisgICAgZ3VpZC0+bm9kZVs1XSA9ICh1aW50OF90KXRtcFs5XTsKKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6Omd1aWRUb1N0cmluZyhjb25zdCBlZmZlY3RfdXVpZF90ICpndWlkLCBjaGFyICpzdHIsIHNpemVfdCBtYXhMZW4pCit7CisgICAgaWYgKGd1aWQgPT0gTlVMTCB8fCBzdHIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIHNucHJpbnRmKHN0ciwgbWF4TGVuLCAiJTA4eC0lMDR4LSUwNHgtJTA0eC0lMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorICAgICAgICAgICAgZ3VpZC0+dGltZUxvdywKKyAgICAgICAgICAgIGd1aWQtPnRpbWVNaWQsCisgICAgICAgICAgICBndWlkLT50aW1lSGlBbmRWZXJzaW9uLAorICAgICAgICAgICAgZ3VpZC0+Y2xvY2tTZXEsCisgICAgICAgICAgICBndWlkLT5ub2RlWzBdLAorICAgICAgICAgICAgZ3VpZC0+bm9kZVsxXSwKKyAgICAgICAgICAgIGd1aWQtPm5vZGVbMl0sCisgICAgICAgICAgICBndWlkLT5ub2RlWzNdLAorICAgICAgICAgICAgZ3VpZC0+bm9kZVs0XSwKKyAgICAgICAgICAgIGd1aWQtPm5vZGVbNV0pOworCisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0F1ZGlvUmVjb3JkLmNwcCBiL21lZGlhL2xpYm1lZGlhL0F1ZGlvUmVjb3JkLmNwcAppbmRleCBhZDAzN2Q2Li5hNmM1MTVjIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9BdWRpb1JlY29yZC5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWEvQXVkaW9SZWNvcmQuY3BwCkBAIC00MSwxMSArNDEsNDMgQEAKICNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKIAogbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIHN0YXRpYworc3RhdHVzX3QgQXVkaW9SZWNvcmQ6OmdldE1pbkZyYW1lQ291bnQoCisgICAgICAgIGludCogZnJhbWVDb3VudCwKKyAgICAgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSwKKyAgICAgICAgaW50IGZvcm1hdCwKKyAgICAgICAgaW50IGNoYW5uZWxDb3VudCkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRJbnB1dEJ1ZmZlclNpemUoc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsICZzaXplKQorICAgICAgICAgICAgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgTE9HRSgiQXVkaW9TeXN0ZW0gY291bGQgbm90IHF1ZXJ5IHRoZSBpbnB1dCBidWZmZXIgc2l6ZS4iKTsKKyAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBMT0dFKCJVbnN1cHBvcnRlZCBjb25maWd1cmF0aW9uOiBzYW1wbGVSYXRlICVkLCBmb3JtYXQgJWQsIGNoYW5uZWxDb3VudCAlZCIsCisgICAgICAgICAgICBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgLy8gV2UgZG91YmxlIHRoZSBzaXplIG9mIGlucHV0IGJ1ZmZlciBmb3IgcGluZyBwb25nIHVzZSBvZiByZWNvcmQgYnVmZmVyLgorICAgIHNpemUgPDw9IDE7CisKKyAgICBpZiAoQXVkaW9TeXN0ZW06OmlzTGluZWFyUENNKGZvcm1hdCkpIHsKKyAgICAgICAgc2l6ZSAvPSBjaGFubmVsQ291bnQgKiAoZm9ybWF0ID09IEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklUID8gMiA6IDEpOworICAgIH0KKworICAgICpmcmFtZUNvdW50ID0gc2l6ZTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBBdWRpb1JlY29yZDo6QXVkaW9SZWNvcmQoKQotICAgIDogbVN0YXR1cyhOT19JTklUKQorICAgIDogbVN0YXR1cyhOT19JTklUKSwgbVNlc3Npb25JZCgwKQogewogfQogCkBAIC01OCwxMSArOTAsMTIgQEAKICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIGNhbGxiYWNrX3QgY2JmLAogICAgICAgICB2b2lkKiB1c2VyLAotICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzKQotICAgIDogbVN0YXR1cyhOT19JTklUKQorICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQorICAgIDogbVN0YXR1cyhOT19JTklUKSwgbVNlc3Npb25JZCgwKQogewogICAgIG1TdGF0dXMgPSBzZXQoaW5wdXRTb3VyY2UsIHNhbXBsZVJhdGUsIGZvcm1hdCwgY2hhbm5lbHMsCi0gICAgICAgICAgICBmcmFtZUNvdW50LCBmbGFncywgY2JmLCB1c2VyLCBub3RpZmljYXRpb25GcmFtZXMpOworICAgICAgICAgICAgZnJhbWVDb3VudCwgZmxhZ3MsIGNiZiwgdXNlciwgbm90aWZpY2F0aW9uRnJhbWVzLCBzZXNzaW9uSWQpOwogfQogCiBBdWRpb1JlY29yZDo6fkF1ZGlvUmVjb3JkKCkKQEAgLTkxLDcgKzEyNCw4IEBACiAgICAgICAgIGNhbGxiYWNrX3QgY2JmLAogICAgICAgICB2b2lkKiB1c2VyLAogICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAotICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhKQorICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQogewogCiAgICAgTE9HVigic2V0KCk6IHNhbXBsZVJhdGUgJWQsIGNoYW5uZWxzICVkLCBmcmFtZUNvdW50ICVkIixzYW1wbGVSYXRlLCBjaGFubmVscywgZnJhbWVDb3VudCk7CkBAIC0xMTksNiArMTUzLDcgQEAKICAgICBpZiAoIUF1ZGlvU3lzdGVtOjppc0lucHV0Q2hhbm5lbChjaGFubmVscykpIHsKICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKICAgICB9CisKICAgICBpbnQgY2hhbm5lbENvdW50ID0gQXVkaW9TeXN0ZW06OnBvcENvdW50KGNoYW5uZWxzKTsKIAogICAgIGF1ZGlvX2lvX2hhbmRsZV90IGlucHV0ID0gQXVkaW9TeXN0ZW06OmdldElucHV0KGlucHV0U291cmNlLApAQCAtMTI5LDI5ICsxNjQsMTEgQEAKICAgICB9CiAKICAgICAvLyB2YWxpZGF0ZSBmcmFtZWNvdW50Ci0gICAgc2l6ZV90IGlucHV0QnVmZlNpemVJbkJ5dGVzID0gLTE7Ci0gICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRJbnB1dEJ1ZmZlclNpemUoc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsICZpbnB1dEJ1ZmZTaXplSW5CeXRlcykKLSAgICAgICAgICAgICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoIkF1ZGlvU3lzdGVtIGNvdWxkIG5vdCBxdWVyeSB0aGUgaW5wdXQgYnVmZmVyIHNpemUuIik7Ci0gICAgICAgIHJldHVybiBOT19JTklUOworICAgIGludCBtaW5GcmFtZUNvdW50ID0gMDsKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBnZXRNaW5GcmFtZUNvdW50KCZtaW5GcmFtZUNvdW50LCBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCk7CisgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0KLQotICAgIGlmIChpbnB1dEJ1ZmZTaXplSW5CeXRlcyA9PSAwKSB7Ci0gICAgICAgIExPR0UoIlJlY29yZGluZyBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkOiBzYW1wbGVSYXRlICVkLCBjaGFubmVsQ291bnQgJWQsIGZvcm1hdCAlZCIsCi0gICAgICAgICAgICBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIGZvcm1hdCk7Ci0gICAgICAgIHJldHVybiBCQURfVkFMVUU7Ci0gICAgfQotCi0gICAgaW50IGZyYW1lU2l6ZUluQnl0ZXMgPSBjaGFubmVsQ291bnQgKiAoZm9ybWF0ID09IEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklUID8gMiA6IDEpOwotICAgIGlmIChBdWRpb1N5c3RlbTo6aXNMaW5lYXJQQ00oZm9ybWF0KSkgewotICAgICAgICBmcmFtZVNpemVJbkJ5dGVzID0gY2hhbm5lbENvdW50ICogKGZvcm1hdCA9PSBBdWRpb1N5c3RlbTo6UENNXzE2X0JJVCA/IHNpemVvZihpbnQxNl90KSA6IHNpemVvZihpbnQ4X3QpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmcmFtZVNpemVJbkJ5dGVzID0gc2l6ZW9mKGludDhfdCk7Ci0gICAgfQotCi0KLSAgICAvLyBXZSB1c2UgMiogc2l6ZSBvZiBpbnB1dCBidWZmZXIgZm9yIHBpbmcgcG9uZyB1c2Ugb2YgcmVjb3JkIGJ1ZmZlci4KLSAgICBpbnQgbWluRnJhbWVDb3VudCA9IDIgKiBpbnB1dEJ1ZmZTaXplSW5CeXRlcyAvIGZyYW1lU2l6ZUluQnl0ZXM7CiAgICAgTE9HVigiQXVkaW9SZWNvcmQ6OnNldCgpIG1pbkZyYW1lQ291bnQgPSAlZCIsIG1pbkZyYW1lQ291bnQpOwogCiAgICAgaWYgKGZyYW1lQ291bnQgPT0gMCkgewpAQCAtMTY0LDEwICsxODEsMTEgQEAKICAgICAgICAgbm90aWZpY2F0aW9uRnJhbWVzID0gZnJhbWVDb3VudC8yOwogICAgIH0KIAotICAgIC8vIGNyZWF0ZSB0aGUgSUF1ZGlvUmVjb3JkCi0gICAgc3RhdHVzX3Qgc3RhdHVzID0gb3BlblJlY29yZChzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lQ291bnQsIGZsYWdzLCBpbnB1dCk7CisgICAgbVNlc3Npb25JZCA9IHNlc3Npb25JZDsKIAorICAgIC8vIGNyZWF0ZSB0aGUgSUF1ZGlvUmVjb3JkCisgICAgc3RhdHVzID0gb3BlblJlY29yZChzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lQ291bnQsIGZsYWdzLCBpbnB1dCk7CiAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgewogICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0KQEAgLTQxNCw2ICs0MzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpZmxhZ3MpIDw8IDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtU2Vzc2lvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0dXMpOwogICAgIGlmIChyZWNvcmQgPT0gMCkgewogICAgICAgICBMT0dFKCJBdWRpb0ZsaW5nZXIgY291bGQgbm90IGNyZWF0ZSByZWNvcmQgdHJhY2ssIHN0YXR1czogJWQiLCBzdGF0dXMpOwpAQCAtNDMwLDcgKzQ0OSw3IEBACiAgICAgbUNibGtNZW1vcnkgPSBjYmxrOwogICAgIG1DYmxrID0gc3RhdGljX2Nhc3Q8YXVkaW9fdHJhY2tfY2Jsa190Kj4oY2Jsay0+cG9pbnRlcigpKTsKICAgICBtQ2Jsay0+YnVmZmVycyA9IChjaGFyKiltQ2JsayArIHNpemVvZihhdWRpb190cmFja19jYmxrX3QpOwotICAgIG1DYmxrLT5vdXQgPSAwOworICAgIG1DYmxrLT5mbGFncyAmPSB+Q0JMS19ESVJFQ1RJT05fTVNLOwogICAgIG1DYmxrLT5idWZmZXJUaW1lb3V0TXMgPSBNQVhfUlVOX1RJTUVPVVRfTVM7CiAgICAgbUNibGstPndhaXRUaW1lTXMgPSAwOwogICAgIHJldHVybiBOT19FUlJPUjsKQEAgLTUzMiw2ICs1NTEsMTEgQEAKICAgICByZXR1cm4gbUlucHV0OwogfQogCitpbnQgQXVkaW9SZWNvcmQ6OmdldFNlc3Npb25JZCgpCit7CisgICAgcmV0dXJuIG1TZXNzaW9uSWQ7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3NpemVfdCBBdWRpb1JlY29yZDo6cmVhZCh2b2lkKiBidWZmZXIsIHNpemVfdCB1c2VyU2l6ZSkKQEAgLTY0NCwxMCArNjY4LDEwIEBACiAKICAgICAvLyBNYW5hZ2Ugb3ZlcnJ1biBjYWxsYmFjawogICAgIGlmIChtQWN0aXZlICYmIChtQ2Jsay0+ZnJhbWVzQXZhaWxhYmxlX2woKSA9PSAwKSkgewotICAgICAgICBMT0dWKCJPdmVycnVuIHVzZXI6ICV4LCBzZXJ2ZXI6ICV4LCBmbG93Q29udHJvbEZsYWcgJWQiLCBtQ2Jsay0+dXNlciwgbUNibGstPnNlcnZlciwgbUNibGstPmZsb3dDb250cm9sRmxhZyk7Ci0gICAgICAgIGlmIChtQ2Jsay0+Zmxvd0NvbnRyb2xGbGFnID09IDApIHsKKyAgICAgICAgTE9HVigiT3ZlcnJ1biB1c2VyOiAleCwgc2VydmVyOiAleCwgZmxhZ3MgJTA0eCIsIG1DYmxrLT51c2VyLCBtQ2Jsay0+c2VydmVyLCBtQ2Jsay0+ZmxhZ3MpOworICAgICAgICBpZiAoKG1DYmxrLT5mbGFncyAmIENCTEtfVU5ERVJSVU5fTVNLKSA9PSBDQkxLX1VOREVSUlVOX09GRikgewogICAgICAgICAgICAgbUNiZihFVkVOVF9PVkVSUlVOLCBtVXNlckRhdGEsIDApOwotICAgICAgICAgICAgbUNibGstPmZsb3dDb250cm9sRmxhZyA9IDE7CisgICAgICAgICAgICBtQ2Jsay0+ZmxhZ3MgfD0gQ0JMS19VTkRFUlJVTl9PTjsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvQXVkaW9TeXN0ZW0uY3BwIGIvbWVkaWEvbGlibWVkaWEvQXVkaW9TeXN0ZW0uY3BwCmluZGV4IDVlNmNlNDIuLmM3N2Y1NTEgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL0F1ZGlvU3lzdGVtLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9BdWRpb1N5c3RlbS5jcHAKQEAgLTM2NCw2ICszNjQsMTIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitpbnQgQXVkaW9TeXN0ZW06Om5ld0F1ZGlvU2Vzc2lvbklkKCkgeworICAgIGNvbnN0IHNwPElBdWRpb0ZsaW5nZXI+JiBhZiA9IEF1ZGlvU3lzdGVtOjpnZXRfYXVkaW9fZmxpbmdlcigpOworICAgIGlmIChhZiA9PSAwKSByZXR1cm4gMDsKKyAgICByZXR1cm4gYWYtPm5ld0F1ZGlvU2Vzc2lvbklkKCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEF1ZGlvU3lzdGVtOjpBdWRpb0ZsaW5nZXJDbGllbnQ6OmJpbmRlckRpZWQoY29uc3Qgd3A8SUJpbmRlcj4mIHdobykgewpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvQXVkaW9UcmFjay5jcHAgYi9tZWRpYS9saWJtZWRpYS9BdWRpb1RyYWNrLmNwcAppbmRleCBjZDdiY2Q1Li4wZjIwOTNhIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9BdWRpb1RyYWNrLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9BdWRpb1RyYWNrLmNwcApAQCAtNDEsNiArNDEsMzUgQEAKICNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKIAogbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIHN0YXRpYworc3RhdHVzX3QgQXVkaW9UcmFjazo6Z2V0TWluRnJhbWVDb3VudCgKKyAgICAgICAgaW50KiBmcmFtZUNvdW50LAorICAgICAgICBpbnQgc3RyZWFtVHlwZSwKKyAgICAgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSkKK3sKKyAgICBpbnQgYWZTYW1wbGVSYXRlOworICAgIGlmIChBdWRpb1N5c3RlbTo6Z2V0T3V0cHV0U2FtcGxpbmdSYXRlKCZhZlNhbXBsZVJhdGUsIHN0cmVhbVR5cGUpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKyAgICBpbnQgYWZGcmFtZUNvdW50OworICAgIGlmIChBdWRpb1N5c3RlbTo6Z2V0T3V0cHV0RnJhbWVDb3VudCgmYWZGcmFtZUNvdW50LCBzdHJlYW1UeXBlKSAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisgICAgdWludDMyX3QgYWZMYXRlbmN5OworICAgIGlmIChBdWRpb1N5c3RlbTo6Z2V0T3V0cHV0TGF0ZW5jeSgmYWZMYXRlbmN5LCBzdHJlYW1UeXBlKSAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCBidWZmZXIgZGVwdGggY292ZXJzIGF0IGxlYXN0IGF1ZGlvIGhhcmR3YXJlIGxhdGVuY3kKKyAgICB1aW50MzJfdCBtaW5CdWZDb3VudCA9IGFmTGF0ZW5jeSAvICgoMTAwMCAqIGFmRnJhbWVDb3VudCkgLyBhZlNhbXBsZVJhdGUpOworICAgIGlmIChtaW5CdWZDb3VudCA8IDIpIG1pbkJ1ZkNvdW50ID0gMjsKKworICAgICpmcmFtZUNvdW50ID0gKHNhbXBsZVJhdGUgPT0gMCkgPyBhZkZyYW1lQ291bnQgKiBtaW5CdWZDb3VudCA6CisgICAgICAgICAgICAgIGFmRnJhbWVDb3VudCAqIG1pbkJ1ZkNvdW50ICogc2FtcGxlUmF0ZSAvIGFmU2FtcGxlUmF0ZTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC01OCwxMSArODcsMTMgQEAKICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIGNhbGxiYWNrX3QgY2JmLAogICAgICAgICB2b2lkKiB1c2VyLAotICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzKQorICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQogICAgIDogbVN0YXR1cyhOT19JTklUKQogewogICAgIG1TdGF0dXMgPSBzZXQoc3RyZWFtVHlwZSwgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVscywKLSAgICAgICAgICAgIGZyYW1lQ291bnQsIGZsYWdzLCBjYmYsIHVzZXIsIG5vdGlmaWNhdGlvbkZyYW1lcywgMCk7CisgICAgICAgICAgICBmcmFtZUNvdW50LCBmbGFncywgY2JmLCB1c2VyLCBub3RpZmljYXRpb25GcmFtZXMsCisgICAgICAgICAgICAwLCBmYWxzZSwgc2Vzc2lvbklkKTsKIH0KIAogQXVkaW9UcmFjazo6QXVkaW9UcmFjaygKQEAgLTc0LDExICsxMDUsMTMgQEAKICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIGNhbGxiYWNrX3QgY2JmLAogICAgICAgICB2b2lkKiB1c2VyLAotICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzKQorICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQogICAgIDogbVN0YXR1cyhOT19JTklUKQogewogICAgIG1TdGF0dXMgPSBzZXQoc3RyZWFtVHlwZSwgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVscywKLSAgICAgICAgICAgIDAsIGZsYWdzLCBjYmYsIHVzZXIsIG5vdGlmaWNhdGlvbkZyYW1lcywgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgICAgIDAsIGZsYWdzLCBjYmYsIHVzZXIsIG5vdGlmaWNhdGlvbkZyYW1lcywKKyAgICAgICAgICAgIHNoYXJlZEJ1ZmZlciwgZmFsc2UsIHNlc3Npb25JZCk7CiB9CiAKIEF1ZGlvVHJhY2s6On5BdWRpb1RyYWNrKCkKQEAgLTExMCw3ICsxNDMsOCBAQAogICAgICAgICB2b2lkKiB1c2VyLAogICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAogICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAotICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhKQorICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQogewogCiAgICAgTE9HVl9JRihzaGFyZWRCdWZmZXIgIT0gMCwgInNoYXJlZEJ1ZmZlcjogJXAsIHNpemU6ICVkIiwgc2hhcmVkQnVmZmVyLT5wb2ludGVyKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTEyNCwxMCArMTU4LDYgQEAKICAgICBpZiAoQXVkaW9TeXN0ZW06OmdldE91dHB1dFNhbXBsaW5nUmF0ZSgmYWZTYW1wbGVSYXRlLCBzdHJlYW1UeXBlKSAhPSBOT19FUlJPUikgewogICAgICAgICByZXR1cm4gTk9fSU5JVDsKICAgICB9Ci0gICAgaW50IGFmRnJhbWVDb3VudDsKLSAgICBpZiAoQXVkaW9TeXN0ZW06OmdldE91dHB1dEZyYW1lQ291bnQoJmFmRnJhbWVDb3VudCwgc3RyZWFtVHlwZSkgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgcmV0dXJuIE5PX0lOSVQ7Ci0gICAgfQogICAgIHVpbnQzMl90IGFmTGF0ZW5jeTsKICAgICBpZiAoQXVkaW9TeXN0ZW06OmdldE91dHB1dExhdGVuY3koJmFmTGF0ZW5jeSwgc3RyZWFtVHlwZSkgIT0gTk9fRVJST1IpIHsKICAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CkBAIC0xNzMsNDggKzIwMywxNiBAQAogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIH0KIAotICAgIGlmICghQXVkaW9TeXN0ZW06OmlzTGluZWFyUENNKGZvcm1hdCkpIHsKLSAgICAgICAgaWYgKHNoYXJlZEJ1ZmZlciAhPSAwKSB7Ci0gICAgICAgICAgICBmcmFtZUNvdW50ID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBFbnN1cmUgdGhhdCBidWZmZXIgZGVwdGggY292ZXJzIGF0IGxlYXN0IGF1ZGlvIGhhcmR3YXJlIGxhdGVuY3kKLSAgICAgICAgdWludDMyX3QgbWluQnVmQ291bnQgPSBhZkxhdGVuY3kgLyAoKDEwMDAgKiBhZkZyYW1lQ291bnQpL2FmU2FtcGxlUmF0ZSk7Ci0gICAgICAgIGlmIChtaW5CdWZDb3VudCA8IDIpIG1pbkJ1ZkNvdW50ID0gMjsKLQotICAgICAgICBpbnQgbWluRnJhbWVDb3VudCA9IChhZkZyYW1lQ291bnQqc2FtcGxlUmF0ZSptaW5CdWZDb3VudCkvYWZTYW1wbGVSYXRlOwotCi0gICAgICAgIGlmIChzaGFyZWRCdWZmZXIgPT0gMCkgewotICAgICAgICAgICAgaWYgKGZyYW1lQ291bnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGZyYW1lQ291bnQgPSBtaW5GcmFtZUNvdW50OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbkZyYW1lcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uRnJhbWVzID0gZnJhbWVDb3VudC8yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYXBwbGljYXRpb24gaXMgbm90aWZpZWQgd2l0aCBzdWZmaWNpZW50IG1hcmdpbgotICAgICAgICAgICAgLy8gYmVmb3JlIHVuZGVycnVuCi0gICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uRnJhbWVzID4gZnJhbWVDb3VudC8yKSB7Ci0gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uRnJhbWVzID0gZnJhbWVDb3VudC8yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZyYW1lQ291bnQgPCBtaW5GcmFtZUNvdW50KSB7Ci0gICAgICAgICAgICAgIExPR0UoIkludmFsaWQgYnVmZmVyIHNpemU6IG1pbkZyYW1lQ291bnQgJWQsIGZyYW1lQ291bnQgJWQiLCBtaW5GcmFtZUNvdW50LCBmcmFtZUNvdW50KTsKLSAgICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IGJ1ZmZlciBhbGlnbm1lbnQgbWF0Y2hlcyBjaGFubmVsY291bnQKLSAgICAgICAgICAgIGlmICgoKHVpbnQzMl90KXNoYXJlZEJ1ZmZlci0+cG9pbnRlcigpICYgKGNoYW5uZWxDb3VudCB8IDEpKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBidWZmZXIgYWxpZ25lbWVudDogYWRkcmVzcyAlcCwgY2hhbm5lbENvdW50ICVkIiwgc2hhcmVkQnVmZmVyLT5wb2ludGVyKCksIGNoYW5uZWxDb3VudCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYW1lQ291bnQgPSBzaGFyZWRCdWZmZXItPnNpemUoKS9jaGFubmVsQ291bnQvc2l6ZW9mKGludDE2X3QpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgbVZvbHVtZVtMRUZUXSA9IDEuMGY7CiAgICAgbVZvbHVtZVtSSUdIVF0gPSAxLjBmOworICAgIG1TZW5kTGV2ZWwgPSAwOworICAgIG1GcmFtZUNvdW50ID0gZnJhbWVDb3VudDsKKyAgICBtTm90aWZpY2F0aW9uRnJhbWVzUmVxID0gbm90aWZpY2F0aW9uRnJhbWVzOworICAgIG1TZXNzaW9uSWQgPSBzZXNzaW9uSWQ7CisKICAgICAvLyBjcmVhdGUgdGhlIElBdWRpb1RyYWNrCiAgICAgc3RhdHVzX3Qgc3RhdHVzID0gY3JlYXRlVHJhY2soc3RyZWFtVHlwZSwgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVDb3VudCwgZmxhZ3MsIHNoYXJlZEJ1ZmZlciwgb3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZUNvdW50LCBmbGFncywgc2hhcmVkQnVmZmVyLCBvdXRwdXQsIHRydWUpOwogCiAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgewogICAgICAgICByZXR1cm4gc3RhdHVzOwpAQCAtMjM4LDEwICsyMzYsNyBAQAogICAgIG1NdXRlZCA9IGZhbHNlOwogICAgIG1BY3RpdmUgPSAwOwogICAgIG1DYmYgPSBjYmY7Ci0gICAgbU5vdGlmaWNhdGlvbkZyYW1lcyA9IG5vdGlmaWNhdGlvbkZyYW1lczsKLSAgICBtUmVtYWluaW5nRnJhbWVzID0gbm90aWZpY2F0aW9uRnJhbWVzOwogICAgIG1Vc2VyRGF0YSA9IHVzZXI7Ci0gICAgbUxhdGVuY3kgPSBhZkxhdGVuY3kgKyAoMTAwMCptRnJhbWVDb3VudCkgLyBzYW1wbGVSYXRlOwogICAgIG1Mb29wQ291bnQgPSAwOwogICAgIG1NYXJrZXJQb3NpdGlvbiA9IDA7CiAgICAgbU1hcmtlclJlYWNoZWQgPSBmYWxzZTsKQEAgLTI4MSw3ICsyNzYsNyBAQAogCiB1aW50MzJfdCBBdWRpb1RyYWNrOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUZyYW1lQ291bnQ7CisgICAgcmV0dXJuIG1DYmxrLT5mcmFtZUNvdW50OwogfQogCiBpbnQgQXVkaW9UcmFjazo6ZnJhbWVTaXplKCkgY29uc3QKQEAgLTMwMyw2ICsyOTgsNyBAQAogdm9pZCBBdWRpb1RyYWNrOjpzdGFydCgpCiB7CiAgICAgc3A8QXVkaW9UcmFja1RocmVhZD4gdCA9IG1BdWRpb1RyYWNrVGhyZWFkOworICAgIHN0YXR1c190IHN0YXR1czsKIAogICAgIExPR1YoInN0YXJ0ICVwIiwgdGhpcyk7CiAgICAgaWYgKHQgIT0gMCkgewpAQCAtMzI1LDExICszMjEsMTggQEAKICAgICAgICAgICAgIHNldHByaW9yaXR5KFBSSU9fUFJPQ0VTUywgMCwgVEhSRUFEX1BSSU9SSVRZX0FVRElPX0NMSUVOVCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSBtQXVkaW9UcmFjay0+c3RhcnQoKTsKKyAgICAgICAgaWYgKG1DYmxrLT5mbGFncyAmIENCTEtfSU5WQUxJRF9NU0spIHsKKyAgICAgICAgICAgIExPR1coInN0YXJ0KCkgdHJhY2sgJXAgaW52YWxpZGF0ZWQsIGNyZWF0aW5nIGEgbmV3IG9uZSIsIHRoaXMpOworICAgICAgICAgICAgLy8gbm8gbmVlZCB0byBjbGVhciB0aGUgaW52YWxpZCBmbGFnIGFzIHRoaXMgY2JsayB3aWxsIG5vdCBiZSB1c2VkIGFueW1vcmUKKyAgICAgICAgICAgIC8vIGZvcmNlIG5ldyB0cmFjayBjcmVhdGlvbgorICAgICAgICAgICAgc3RhdHVzID0gREVBRF9PQkpFQ1Q7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGF0dXMgPSBtQXVkaW9UcmFjay0+c3RhcnQoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoc3RhdHVzID09IERFQURfT0JKRUNUKSB7CiAgICAgICAgICAgICBMT0dWKCJzdGFydCgpIGRlYWQgSUF1ZGlvVHJhY2s6IGNyZWF0aW5nIGEgbmV3IG9uZSIpOwogICAgICAgICAgICAgc3RhdHVzID0gY3JlYXRlVHJhY2sobVN0cmVhbVR5cGUsIG1DYmxrLT5zYW1wbGVSYXRlLCBtRm9ybWF0LCBtQ2hhbm5lbENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZyYW1lQ291bnQsIG1GbGFncywgbVNoYXJlZEJ1ZmZlciwgZ2V0T3V0cHV0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZyYW1lQ291bnQsIG1GbGFncywgbVNoYXJlZEJ1ZmZlciwgZ2V0T3V0cHV0KCksIGZhbHNlKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gTk9fRVJST1IpIHsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBtQXVkaW9UcmFjay0+c3RhcnQoKTsKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IE5PX0VSUk9SKSB7CkBAIC00MzAsMTkgKzQzMyw0OSBAQAogICAgIHJldHVybiBtTXV0ZWQ7CiB9CiAKLXZvaWQgQXVkaW9UcmFjazo6c2V0Vm9sdW1lKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0KQorc3RhdHVzX3QgQXVkaW9UcmFjazo6c2V0Vm9sdW1lKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0KQogeworICAgIGlmIChsZWZ0ID4gMS4wZiB8fCByaWdodCA+IDEuMGYpIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKICAgICBtVm9sdW1lW0xFRlRdID0gbGVmdDsKICAgICBtVm9sdW1lW1JJR0hUXSA9IHJpZ2h0OwogCiAgICAgLy8gd3JpdGUgbXVzdCBiZSBhdG9taWMKLSAgICBtQ2Jsay0+dm9sdW1lTFIgPSAoaW50MzJfdChpbnQxNl90KGxlZnQgKiAweDEwMDApKSA8PCAxNikgfCBpbnQxNl90KHJpZ2h0ICogMHgxMDAwKTsKKyAgICBtQ2Jsay0+dm9sdW1lTFIgPSAodWludDMyX3QodWludDE2X3QocmlnaHQgKiAweDEwMDApKSA8PCAxNikgfCB1aW50MTZfdChsZWZ0ICogMHgxMDAwKTsKKworICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogdm9pZCBBdWRpb1RyYWNrOjpnZXRWb2x1bWUoZmxvYXQqIGxlZnQsIGZsb2F0KiByaWdodCkKIHsKLSAgICAqbGVmdCAgPSBtVm9sdW1lW0xFRlRdOwotICAgICpyaWdodCA9IG1Wb2x1bWVbUklHSFRdOworICAgIGlmIChsZWZ0ICE9IE5VTEwpIHsKKyAgICAgICAgKmxlZnQgID0gbVZvbHVtZVtMRUZUXTsKKyAgICB9CisgICAgaWYgKHJpZ2h0ICE9IE5VTEwpIHsKKyAgICAgICAgKnJpZ2h0ID0gbVZvbHVtZVtSSUdIVF07CisgICAgfQorfQorCitzdGF0dXNfdCBBdWRpb1RyYWNrOjpzZXRTZW5kTGV2ZWwoZmxvYXQgbGV2ZWwpCit7CisgICAgaWYgKGxldmVsID4gMS4wZikgeworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIG1TZW5kTGV2ZWwgPSBsZXZlbDsKKworICAgIG1DYmxrLT5zZW5kTGV2ZWwgPSB1aW50MTZfdChsZXZlbCAqIDB4MTAwMCk7CisKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6Z2V0U2VuZExldmVsKGZsb2F0KiBsZXZlbCkKK3sKKyAgICBpZiAobGV2ZWwgIT0gTlVMTCkgeworICAgICAgICAqbGV2ZWwgID0gbVNlbmRMZXZlbDsKKyAgICB9CiB9CiAKIHN0YXR1c190IEF1ZGlvVHJhY2s6OnNldFNhbXBsZVJhdGUoaW50IHJhdGUpCkBAIC00NzksMTQgKzUxMiwxNCBAQAogICAgIH0KIAogICAgIGlmIChsb29wU3RhcnQgPj0gbG9vcEVuZCB8fAotICAgICAgICBsb29wRW5kIC0gbG9vcFN0YXJ0ID4gbUZyYW1lQ291bnQpIHsKLSAgICAgICAgTE9HRSgic2V0TG9vcCBpbnZhbGlkIHZhbHVlOiBsb29wU3RhcnQgJWQsIGxvb3BFbmQgJWQsIGxvb3BDb3VudCAlZCwgZnJhbWVjb3VudCAlZCwgdXNlciAlZCIsIGxvb3BTdGFydCwgbG9vcEVuZCwgbG9vcENvdW50LCBtRnJhbWVDb3VudCwgY2Jsay0+dXNlcik7CisgICAgICAgIGxvb3BFbmQgLSBsb29wU3RhcnQgPiBjYmxrLT5mcmFtZUNvdW50KSB7CisgICAgICAgIExPR0UoInNldExvb3AgaW52YWxpZCB2YWx1ZTogbG9vcFN0YXJ0ICVkLCBsb29wRW5kICVkLCBsb29wQ291bnQgJWQsIGZyYW1lY291bnQgJWQsIHVzZXIgJWQiLCBsb29wU3RhcnQsIGxvb3BFbmQsIGxvb3BDb3VudCwgY2Jsay0+ZnJhbWVDb3VudCwgY2Jsay0+dXNlcik7CiAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CiAgICAgfQogCi0gICAgaWYgKChtU2hhcmVkQnVmZmVyICE9IDApICYmIChsb29wRW5kICAgPiBtRnJhbWVDb3VudCkpIHsKKyAgICBpZiAoKG1TaGFyZWRCdWZmZXIgIT0gMCkgJiYgKGxvb3BFbmQgICA+IGNibGstPmZyYW1lQ291bnQpKSB7CiAgICAgICAgIExPR0UoInNldExvb3AgaW52YWxpZCB2YWx1ZTogbG9vcCBtYXJrZXJzIGJleW9uZCBkYXRhOiBsb29wU3RhcnQgJWQsIGxvb3BFbmQgJWQsIGZyYW1lY291bnQgJWQiLAotICAgICAgICAgICAgbG9vcFN0YXJ0LCBsb29wRW5kLCBtRnJhbWVDb3VudCk7CisgICAgICAgICAgICBsb29wU3RhcnQsIGxvb3BFbmQsIGNibGstPmZyYW1lQ291bnQpOwogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIH0KIApAQCAtNTY2LDcgKzU5OSw3IEBACiAgICAgaWYgKHBvc2l0aW9uID4gbUNibGstPnVzZXIpIHJldHVybiBCQURfVkFMVUU7CiAKICAgICBtQ2Jsay0+c2VydmVyID0gcG9zaXRpb247Ci0gICAgbUNibGstPmZvcmNlUmVhZHkgPSAxOworICAgIG1DYmxrLT5mbGFncyB8PSBDQkxLX0ZPUkNFUkVBRFlfT047CiAKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CkBAIC01ODYsNyArNjE5LDcgQEAKIAogICAgIGZsdXNoKCk7CiAKLSAgICBtQ2Jsay0+c3RlcFVzZXIobUZyYW1lQ291bnQpOworICAgIG1DYmxrLT5zdGVwVXNlcihtQ2Jsay0+ZnJhbWVDb3VudCk7CiAKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CkBAIC01OTcsNiArNjMwLDE2IEBACiAgICAgICAgICAgICBtQ2Jsay0+c2FtcGxlUmF0ZSwgbUZvcm1hdCwgbUNoYW5uZWxzLCAoQXVkaW9TeXN0ZW06Om91dHB1dF9mbGFncyltRmxhZ3MpOwogfQogCitpbnQgQXVkaW9UcmFjazo6Z2V0U2Vzc2lvbklkKCkKK3sKKyAgICByZXR1cm4gbVNlc3Npb25JZDsKK30KKworc3RhdHVzX3QgQXVkaW9UcmFjazo6YXR0YWNoQXV4RWZmZWN0KGludCBlZmZlY3RJZCkKK3sKKyAgICByZXR1cm4gbUF1ZGlvVHJhY2stPmF0dGFjaEF1eEVmZmVjdChlZmZlY3RJZCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdHVzX3QgQXVkaW9UcmFjazo6Y3JlYXRlVHJhY2soCkBAIC02MDcsNyArNjUwLDggQEAKICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgIHVpbnQzMl90IGZsYWdzLAogICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAotICAgICAgICBhdWRpb19pb19oYW5kbGVfdCBvdXRwdXQpCisgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90IG91dHB1dCwKKyAgICAgICAgYm9vbCBlbmZvcmNlRnJhbWVDb3VudCkKIHsKICAgICBzdGF0dXNfdCBzdGF0dXM7CiAgICAgY29uc3Qgc3A8SUF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciA9IEF1ZGlvU3lzdGVtOjpnZXRfYXVkaW9fZmxpbmdlcigpOwpAQCAtNjE2LDYgKzY2MCw2MSBAQAogICAgICAgIHJldHVybiBOT19JTklUOwogICAgIH0KIAorICAgIGludCBhZlNhbXBsZVJhdGU7CisgICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRPdXRwdXRTYW1wbGluZ1JhdGUoJmFmU2FtcGxlUmF0ZSwgc3RyZWFtVHlwZSkgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CisgICAgfQorICAgIGludCBhZkZyYW1lQ291bnQ7CisgICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRPdXRwdXRGcmFtZUNvdW50KCZhZkZyYW1lQ291bnQsIHN0cmVhbVR5cGUpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKyAgICB1aW50MzJfdCBhZkxhdGVuY3k7CisgICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRPdXRwdXRMYXRlbmN5KCZhZkxhdGVuY3ksIHN0cmVhbVR5cGUpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKworICAgIG1Ob3RpZmljYXRpb25GcmFtZXNBY3QgPSBtTm90aWZpY2F0aW9uRnJhbWVzUmVxOworICAgIGlmICghQXVkaW9TeXN0ZW06OmlzTGluZWFyUENNKGZvcm1hdCkpIHsKKyAgICAgICAgaWYgKHNoYXJlZEJ1ZmZlciAhPSAwKSB7CisgICAgICAgICAgICBmcmFtZUNvdW50ID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBFbnN1cmUgdGhhdCBidWZmZXIgZGVwdGggY292ZXJzIGF0IGxlYXN0IGF1ZGlvIGhhcmR3YXJlIGxhdGVuY3kKKyAgICAgICAgdWludDMyX3QgbWluQnVmQ291bnQgPSBhZkxhdGVuY3kgLyAoKDEwMDAgKiBhZkZyYW1lQ291bnQpL2FmU2FtcGxlUmF0ZSk7CisgICAgICAgIGlmIChtaW5CdWZDb3VudCA8IDIpIG1pbkJ1ZkNvdW50ID0gMjsKKworICAgICAgICBpbnQgbWluRnJhbWVDb3VudCA9IChhZkZyYW1lQ291bnQqc2FtcGxlUmF0ZSptaW5CdWZDb3VudCkvYWZTYW1wbGVSYXRlOworCisgICAgICAgIGlmIChzaGFyZWRCdWZmZXIgPT0gMCkgeworICAgICAgICAgICAgaWYgKGZyYW1lQ291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgIGZyYW1lQ291bnQgPSBtaW5GcmFtZUNvdW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1Ob3RpZmljYXRpb25GcmFtZXNBY3QgPT0gMCkgeworICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25GcmFtZXNBY3QgPSBmcmFtZUNvdW50LzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhcHBsaWNhdGlvbiBpcyBub3RpZmllZCB3aXRoIHN1ZmZpY2llbnQgbWFyZ2luCisgICAgICAgICAgICAvLyBiZWZvcmUgdW5kZXJydW4KKyAgICAgICAgICAgIGlmIChtTm90aWZpY2F0aW9uRnJhbWVzQWN0ID4gKHVpbnQzMl90KWZyYW1lQ291bnQvMikgeworICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25GcmFtZXNBY3QgPSBmcmFtZUNvdW50LzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZnJhbWVDb3VudCA8IG1pbkZyYW1lQ291bnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW5mb3JjZUZyYW1lQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBidWZmZXIgc2l6ZTogbWluRnJhbWVDb3VudCAlZCwgZnJhbWVDb3VudCAlZCIsIG1pbkZyYW1lQ291bnQsIGZyYW1lQ291bnQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lQ291bnQgPSBtaW5GcmFtZUNvdW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IGJ1ZmZlciBhbGlnbm1lbnQgbWF0Y2hlcyBjaGFubmVsY291bnQKKyAgICAgICAgICAgIGlmICgoKHVpbnQzMl90KXNoYXJlZEJ1ZmZlci0+cG9pbnRlcigpICYgKGNoYW5uZWxDb3VudCB8IDEpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBidWZmZXIgYWxpZ25lbWVudDogYWRkcmVzcyAlcCwgY2hhbm5lbENvdW50ICVkIiwgc2hhcmVkQnVmZmVyLT5wb2ludGVyKCksIGNoYW5uZWxDb3VudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyYW1lQ291bnQgPSBzaGFyZWRCdWZmZXItPnNpemUoKS9jaGFubmVsQ291bnQvc2l6ZW9mKGludDE2X3QpOworICAgICAgICB9CisgICAgfQorCiAgICAgc3A8SUF1ZGlvVHJhY2s+IHRyYWNrID0gYXVkaW9GbGluZ2VyLT5jcmVhdGVUcmFjayhnZXRwaWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLApAQCAtNjI1LDYgKzcyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KWZsYWdzKSA8PCAxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtU2Vzc2lvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXR1cyk7CiAKICAgICBpZiAodHJhY2sgPT0gMCkgewpAQCAtNjQxLDIwICs3NDEsMjEgQEAKICAgICBtQ2Jsa01lbW9yeS5jbGVhcigpOwogICAgIG1DYmxrTWVtb3J5ID0gY2JsazsKICAgICBtQ2JsayA9IHN0YXRpY19jYXN0PGF1ZGlvX3RyYWNrX2NibGtfdCo+KGNibGstPnBvaW50ZXIoKSk7Ci0gICAgbUNibGstPm91dCA9IDE7Ci0gICAgLy8gVXBkYXRlIGJ1ZmZlciBzaXplIGluIGNhc2UgaXQgaGFzIGJlZW4gbGltaXRlZCBieSBBdWRpb0ZsaW5nZXIgZHVyaW5nIHRyYWNrIGNyZWF0aW9uCi0gICAgbUZyYW1lQ291bnQgPSBtQ2Jsay0+ZnJhbWVDb3VudDsKKyAgICBtQ2Jsay0+ZmxhZ3MgfD0gQ0JMS19ESVJFQ1RJT05fT1VUOwogICAgIGlmIChzaGFyZWRCdWZmZXIgPT0gMCkgewogICAgICAgICBtQ2Jsay0+YnVmZmVycyA9IChjaGFyKiltQ2JsayArIHNpemVvZihhdWRpb190cmFja19jYmxrX3QpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1DYmxrLT5idWZmZXJzID0gc2hhcmVkQnVmZmVyLT5wb2ludGVyKCk7CiAgICAgICAgICAvLyBGb3JjZSBidWZmZXIgZnVsbCBjb25kaXRpb24gYXMgZGF0YSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gc2hhcmVkIG1lbW9yeQotICAgICAgICBtQ2Jsay0+c3RlcFVzZXIobUZyYW1lQ291bnQpOworICAgICAgICBtQ2Jsay0+c3RlcFVzZXIobUNibGstPmZyYW1lQ291bnQpOwogICAgIH0KIAotICAgIG1DYmxrLT52b2x1bWVMUiA9IChpbnQzMl90KGludDE2X3QobVZvbHVtZVtMRUZUXSAqIDB4MTAwMCkpIDw8IDE2KSB8IGludDE2X3QobVZvbHVtZVtSSUdIVF0gKiAweDEwMDApOworICAgIG1DYmxrLT52b2x1bWVMUiA9ICh1aW50MzJfdCh1aW50MTZfdChtVm9sdW1lW1JJR0hUXSAqIDB4MTAwMCkpIDw8IDE2KSB8IHVpbnQxNl90KG1Wb2x1bWVbTEVGVF0gKiAweDEwMDApOworICAgIG1DYmxrLT5zZW5kTGV2ZWwgPSB1aW50MTZfdChtU2VuZExldmVsICogMHgxMDAwKTsKICAgICBtQ2Jsay0+YnVmZmVyVGltZW91dE1zID0gTUFYX1NUQVJUVVBfVElNRU9VVF9NUzsKICAgICBtQ2Jsay0+d2FpdFRpbWVNcyA9IDA7CisgICAgbVJlbWFpbmluZ0ZyYW1lcyA9IG1Ob3RpZmljYXRpb25GcmFtZXNBY3Q7CisgICAgbUxhdGVuY3kgPSBhZkxhdGVuY3kgKyAoMTAwMCptQ2Jsay0+ZnJhbWVDb3VudCkgLyBzYW1wbGVSYXRlOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIApAQCAtNjg1LDggKzc4NiwxNSBAQAogICAgICAgICAgICAgICAgIGNibGstPmxvY2sudW5sb2NrKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdPVUxEX0JMT0NLOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXN1bHQgPSBjYmxrLT5jdi53YWl0UmVsYXRpdmUoY2Jsay0+bG9jaywgbWlsbGlzZWNvbmRzKHdhaXRUaW1lTXMpKTsKKyAgICAgICAgICAgIGlmICghKGNibGstPmZsYWdzICYgQ0JMS19JTlZBTElEX01TSykpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjYmxrLT5jdi53YWl0UmVsYXRpdmUoY2Jsay0+bG9jaywgbWlsbGlzZWNvbmRzKHdhaXRUaW1lTXMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjYmxrLT5mbGFncyAmIENCTEtfSU5WQUxJRF9NU0spIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJvYnRhaW5CdWZmZXIoKSB0cmFjayAlcCBpbnZhbGlkYXRlZCwgY3JlYXRpbmcgYSBuZXcgb25lIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgLy8gbm8gbmVlZCB0byBjbGVhciB0aGUgaW52YWxpZCBmbGFnIGFzIHRoaXMgY2JsayB3aWxsIG5vdCBiZSB1c2VkIGFueW1vcmUKKyAgICAgICAgICAgICAgICBjYmxrLT5sb2NrLnVubG9jaygpOworICAgICAgICAgICAgICAgIGdvdG8gY3JlYXRlX25ld190cmFjazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KHJlc3VsdCE9Tk9fRVJST1IsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgIGNibGstPndhaXRUaW1lTXMgKz0gd2FpdFRpbWVNczsKICAgICAgICAgICAgICAgICBpZiAoY2Jsay0+d2FpdFRpbWVNcyA+PSBjYmxrLT5idWZmZXJUaW1lb3V0TXMpIHsKQEAgLTcwMCw4ICs4MDgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbUF1ZGlvVHJhY2stPnN0YXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IERFQURfT0JKRUNUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HVygib2J0YWluQnVmZmVyKCkgZGVhZCBJQXVkaW9UcmFjazogY3JlYXRpbmcgYSBuZXcgb25lIik7CitjcmVhdGVfbmV3X3RyYWNrOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZVRyYWNrKG1TdHJlYW1UeXBlLCBjYmxrLT5zYW1wbGVSYXRlLCBtRm9ybWF0LCBtQ2hhbm5lbENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1GcmFtZUNvdW50LCBtRmxhZ3MsIG1TaGFyZWRCdWZmZXIsIGdldE91dHB1dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRnJhbWVDb3VudCwgbUZsYWdzLCBtU2hhcmVkQnVmZmVyLCBnZXRPdXRwdXQoKSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTk9fRVJST1IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JsayA9IG1DYmxrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5idWZmZXJUaW1lb3V0TXMgPSBNQVhfUlVOX1RJTUVPVVRfTVM7CkBAIC04MjYsMTMgKzkzNSwxMyBAQAogCiAgICAgLy8gTWFuYWdlIHVuZGVycnVuIGNhbGxiYWNrCiAgICAgaWYgKG1BY3RpdmUgJiYgKG1DYmxrLT5mcmFtZXNSZWFkeSgpID09IDApKSB7Ci0gICAgICAgIExPR1YoIlVuZGVycnVuIHVzZXI6ICV4LCBzZXJ2ZXI6ICV4LCBmbG93Q29udHJvbEZsYWcgJWQiLCBtQ2Jsay0+dXNlciwgbUNibGstPnNlcnZlciwgbUNibGstPmZsb3dDb250cm9sRmxhZyk7Ci0gICAgICAgIGlmIChtQ2Jsay0+Zmxvd0NvbnRyb2xGbGFnID09IDApIHsKKyAgICAgICAgTE9HVigiVW5kZXJydW4gdXNlcjogJXgsIHNlcnZlcjogJXgsIGZsYWdzICUwNHgiLCBtQ2Jsay0+dXNlciwgbUNibGstPnNlcnZlciwgbUNibGstPmZsYWdzKTsKKyAgICAgICAgaWYgKChtQ2Jsay0+ZmxhZ3MgJiBDQkxLX1VOREVSUlVOX01TSykgPT0gQ0JMS19VTkRFUlJVTl9PRkYpIHsKICAgICAgICAgICAgIG1DYmYoRVZFTlRfVU5ERVJSVU4sIG1Vc2VyRGF0YSwgMCk7CiAgICAgICAgICAgICBpZiAobUNibGstPnNlcnZlciA9PSBtQ2Jsay0+ZnJhbWVDb3VudCkgewogICAgICAgICAgICAgICAgIG1DYmYoRVZFTlRfQlVGRkVSX0VORCwgbVVzZXJEYXRhLCAwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1DYmxrLT5mbG93Q29udHJvbEZsYWcgPSAxOworICAgICAgICAgICAgbUNibGstPmZsYWdzIHw9IENCTEtfVU5ERVJSVU5fT047CiAgICAgICAgICAgICBpZiAobVNoYXJlZEJ1ZmZlciAhPSAwKSByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC05MzIsNyArMTA0MSw3IEBACiAgICAgd2hpbGUgKGZyYW1lcyk7CiAKICAgICBpZiAoZnJhbWVzID09IDApIHsKLSAgICAgICAgbVJlbWFpbmluZ0ZyYW1lcyA9IG1Ob3RpZmljYXRpb25GcmFtZXM7CisgICAgICAgIG1SZW1haW5pbmdGcmFtZXMgPSBtTm90aWZpY2F0aW9uRnJhbWVzQWN0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1SZW1haW5pbmdGcmFtZXMgPSBmcmFtZXM7CiAgICAgfQpAQCAtOTQ5LDcgKzEwNTgsNyBAQAogICAgIHJlc3VsdC5hcHBlbmQoIiBBdWRpb1RyYWNrOjpkdW1wXG4iKTsKICAgICBzbnByaW50ZihidWZmZXIsIDI1NSwgIiAgc3RyZWFtIHR5cGUoJWQpLCBsZWZ0IC0gcmlnaHQgdm9sdW1lKCVmLCAlZilcbiIsIG1TdHJlYW1UeXBlLCBtVm9sdW1lWzBdLCBtVm9sdW1lWzFdKTsKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgc25wcmludGYoYnVmZmVyLCAyNTUsICIgIGZvcm1hdCglZCksIGNoYW5uZWwgY291bnQoJWQpLCBmcmFtZSBjb3VudCglZClcbiIsIG1Gb3JtYXQsIG1DaGFubmVsQ291bnQsIG1GcmFtZUNvdW50KTsKKyAgICBzbnByaW50ZihidWZmZXIsIDI1NSwgIiAgZm9ybWF0KCVkKSwgY2hhbm5lbCBjb3VudCglZCksIGZyYW1lIGNvdW50KCVkKVxuIiwgbUZvcm1hdCwgbUNoYW5uZWxDb3VudCwgbUNibGstPmZyYW1lQ291bnQpOwogICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKICAgICBzbnByaW50ZihidWZmZXIsIDI1NSwgIiAgc2FtcGxlIHJhdGUoJWQpLCBzdGF0dXMoJWQpLCBtdXRlZCglZClcbiIsIChtQ2JsayA9PSAwKSA/IDAgOiBtQ2Jsay0+c2FtcGxlUmF0ZSwgbVN0YXR1cywgbU11dGVkKTsKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CkBAIC05ODYsNyArMTA5NSw3IEBACiAgICAgOiBsb2NrKE11dGV4OjpTSEFSRUQpLCBjdihDb25kaXRpb246OlNIQVJFRCksIHVzZXIoMCksIHNlcnZlcigwKSwKICAgICB1c2VyQmFzZSgwKSwgc2VydmVyQmFzZSgwKSwgYnVmZmVycygwKSwgZnJhbWVDb3VudCgwKSwKICAgICBsb29wU3RhcnQoVUlOVF9NQVgpLCBsb29wRW5kKFVJTlRfTUFYKSwgbG9vcENvdW50KDApLCB2b2x1bWVMUigwKSwKLSAgICBmbG93Q29udHJvbEZsYWcoMSksIGZvcmNlUmVhZHkoMCkKKyAgICBmbGFncygwKSwgc2VuZExldmVsKDApCiB7CiB9CiAKQEAgLTk5Niw3ICsxMTA1LDcgQEAKIAogICAgIHUgKz0gZnJhbWVDb3VudDsKICAgICAvLyBFbnN1cmUgdGhhdCB1c2VyIGlzIG5ldmVyIGFoZWFkIG9mIHNlcnZlciBmb3IgQXVkaW9SZWNvcmQKLSAgICBpZiAob3V0KSB7CisgICAgaWYgKGZsYWdzICYgQ0JMS19ESVJFQ1RJT05fTVNLKSB7CiAgICAgICAgIC8vIElmIHN0ZXBTZXJ2ZXIoKSBoYXMgYmVlbiBjYWxsZWQgb25jZSwgc3dpdGNoIHRvIG5vcm1hbCBvYnRhaW5CdWZmZXIoKSB0aW1lb3V0IHBlcmlvZAogICAgICAgICBpZiAoYnVmZmVyVGltZW91dE1zID09IE1BWF9TVEFSVFVQX1RJTUVPVVRfTVMtMSkgewogICAgICAgICAgICAgYnVmZmVyVGltZW91dE1zID0gTUFYX1JVTl9USU1FT1VUX01TOwpAQCAtMTAxMyw3ICsxMTIyLDcgQEAKICAgICB0aGlzLT51c2VyID0gdTsKIAogICAgIC8vIENsZWFyIGZsb3cgY29udHJvbCBlcnJvciBjb25kaXRpb24gYXMgbmV3IGRhdGEgaGFzIGJlZW4gd3JpdHRlbi9yZWFkIHRvL2Zyb20gYnVmZmVyLgotICAgIGZsb3dDb250cm9sRmxhZyA9IDA7CisgICAgZmxhZ3MgJj0gfkNCTEtfVU5ERVJSVU5fTVNLOwogCiAgICAgcmV0dXJuIHU7CiB9CkBAIC0xMDM4LDcgKzExNDcsNyBAQAogICAgIHVpbnQzMl90IHMgPSB0aGlzLT5zZXJ2ZXI7CiAKICAgICBzICs9IGZyYW1lQ291bnQ7Ci0gICAgaWYgKG91dCkgeworICAgIGlmIChmbGFncyAmIENCTEtfRElSRUNUSU9OX01TSykgewogICAgICAgICAvLyBNYXJrIHRoYXQgd2UgaGF2ZSByZWFkIHRoZSBmaXJzdCBidWZmZXIgc28gdGhhdCBuZXh0IHRpbWUgc3RlcFVzZXIoKSBpcyBjYWxsZWQKICAgICAgICAgLy8gd2Ugc3dpdGNoIHRvIG5vcm1hbCBvYnRhaW5CdWZmZXIoKSB0aW1lb3V0IHBlcmlvZAogICAgICAgICBpZiAoYnVmZmVyVGltZW91dE1zID09IE1BWF9TVEFSVFVQX1RJTUVPVVRfTVMpIHsKQEAgLTEwODksNyArMTE5OCw3IEBACiAgICAgdWludDMyX3QgdSA9IHRoaXMtPnVzZXI7CiAgICAgdWludDMyX3QgcyA9IHRoaXMtPnNlcnZlcjsKIAotICAgIGlmIChvdXQpIHsKKyAgICBpZiAoZmxhZ3MgJiBDQkxLX0RJUkVDVElPTl9NU0spIHsKICAgICAgICAgdWludDMyX3QgbGltaXQgPSAocyA8IGxvb3BTdGFydCkgPyBzIDogbG9vcFN0YXJ0OwogICAgICAgICByZXR1cm4gbGltaXQgKyBmcmFtZUNvdW50IC0gdTsKICAgICB9IGVsc2UgewpAQCAtMTEwMiw3ICsxMjExLDcgQEAKICAgICB1aW50MzJfdCB1ID0gdGhpcy0+dXNlcjsKICAgICB1aW50MzJfdCBzID0gdGhpcy0+c2VydmVyOwogCi0gICAgaWYgKG91dCkgeworICAgIGlmIChmbGFncyAmIENCTEtfRElSRUNUSU9OX01TSykgewogICAgICAgICBpZiAodSA8IGxvb3BFbmQpIHsKICAgICAgICAgICAgIHJldHVybiB1IC0gczsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0lBdWRpb0ZsaW5nZXIuY3BwIGIvbWVkaWEvbGlibWVkaWEvSUF1ZGlvRmxpbmdlci5jcHAKaW5kZXggNDdiY2MxMi4uN2Q2YTVkMyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWEvSUF1ZGlvRmxpbmdlci5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWEvSUF1ZGlvRmxpbmdlci5jcHAKQEAgLTYyLDcgKzYyLDE0IEBACiAgICAgU0VUX1NUUkVBTV9PVVRQVVQsCiAgICAgU0VUX1ZPSUNFX1ZPTFVNRSwKICAgICBHRVRfUkVOREVSX1BPU0lUSU9OLAotICAgIEdFVF9JTlBVVF9GUkFNRVNfTE9TVAorICAgIEdFVF9JTlBVVF9GUkFNRVNfTE9TVCwKKyAgICBORVdfQVVESU9fU0VTU0lPTl9JRCwKKyAgICBMT0FEX0VGRkVDVF9MSUJSQVJZLAorICAgIFVOTE9BRF9FRkZFQ1RfTElCUkFSWSwKKyAgICBRVUVSWV9OVU1fRUZGRUNUUywKKyAgICBRVUVSWV9FRkZFQ1QsCisgICAgR0VUX0VGRkVDVF9ERVNDUklQVE9SLAorICAgIENSRUFURV9FRkZFQ1QKIH07CiAKIGNsYXNzIEJwQXVkaW9GbGluZ2VyIDogcHVibGljIEJwSW50ZXJmYWNlPElBdWRpb0ZsaW5nZXI+CkBAIC04Myw2ICs5MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cykKICAgICB7CiAgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKQEAgLTk3LDEwICsxMDUsMTkgQEAKICAgICAgICAgZGF0YS53cml0ZUludDMyKGZsYWdzKTsKICAgICAgICAgZGF0YS53cml0ZVN0cm9uZ0JpbmRlcihzaGFyZWRCdWZmZXItPmFzQmluZGVyKCkpOwogICAgICAgICBkYXRhLndyaXRlSW50MzIob3V0cHV0KTsKKyAgICAgICAgaW50IGxTZXNzaW9uSWQgPSAwOworICAgICAgICBpZiAoc2Vzc2lvbklkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGxTZXNzaW9uSWQgPSAqc2Vzc2lvbklkOworICAgICAgICB9CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihsU2Vzc2lvbklkKTsKICAgICAgICAgc3RhdHVzX3QgbFN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChDUkVBVEVfVFJBQ0ssIGRhdGEsICZyZXBseSk7CiAgICAgICAgIGlmIChsU3RhdHVzICE9IE5PX0VSUk9SKSB7CiAgICAgICAgICAgICBMT0dFKCJjcmVhdGVUcmFjayBlcnJvcjogJXMiLCBzdHJlcnJvcigtbFN0YXR1cykpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbFNlc3Npb25JZCA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICAgICAgaWYgKHNlc3Npb25JZCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKnNlc3Npb25JZCA9IGxTZXNzaW9uSWQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBsU3RhdHVzID0gcmVwbHkucmVhZEludDMyKCk7CiAgICAgICAgICAgICB0cmFjayA9IGludGVyZmFjZV9jYXN0PElBdWRpb1RyYWNrPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwogICAgICAgICB9CkBAIC0xMTgsNiArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cykKICAgICB7CiAgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKQEAgLTEzMCwxMCArMTQ4LDE5IEBACiAgICAgICAgIGRhdGEud3JpdGVJbnQzMihjaGFubmVsQ291bnQpOwogICAgICAgICBkYXRhLndyaXRlSW50MzIoZnJhbWVDb3VudCk7CiAgICAgICAgIGRhdGEud3JpdGVJbnQzMihmbGFncyk7CisgICAgICAgIGludCBsU2Vzc2lvbklkID0gMDsKKyAgICAgICAgaWYgKHNlc3Npb25JZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBsU2Vzc2lvbklkID0gKnNlc3Npb25JZDsKKyAgICAgICAgfQorICAgICAgICBkYXRhLndyaXRlSW50MzIobFNlc3Npb25JZCk7CiAgICAgICAgIHN0YXR1c190IGxTdGF0dXMgPSByZW1vdGUoKS0+dHJhbnNhY3QoT1BFTl9SRUNPUkQsIGRhdGEsICZyZXBseSk7CiAgICAgICAgIGlmIChsU3RhdHVzICE9IE5PX0VSUk9SKSB7CiAgICAgICAgICAgICBMT0dFKCJvcGVuUmVjb3JkIGVycm9yOiAlcyIsIHN0cmVycm9yKC1sU3RhdHVzKSk7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsU2Vzc2lvbklkID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbklkICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqc2Vzc2lvbklkID0gbFNlc3Npb25JZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxTdGF0dXMgPSByZXBseS5yZWFkSW50MzIoKTsKICAgICAgICAgICAgIHJlY29yZCA9IGludGVyZmFjZV9jYXN0PElBdWRpb1JlY29yZD4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKICAgICAgICAgfQpAQCAtNDk3LDYgKzUyNCwxNTggQEAKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KEdFVF9JTlBVVF9GUkFNRVNfTE9TVCwgZGF0YSwgJnJlcGx5KTsKICAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOwogICAgIH0KKworICAgIHZpcnR1YWwgaW50IG5ld0F1ZGlvU2Vzc2lvbklkKCkKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBdWRpb0ZsaW5nZXI6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChORVdfQVVESU9fU0VTU0lPTl9JRCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaW50IGlkID0gMDsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgaWQgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSkKKyAgICB7CisgICAgICAgIGlmIChsaWJQYXRoID09IE5VTEwgfHwgaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgKmhhbmRsZSA9IDA7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBdWRpb0ZsaW5nZXI6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVDU3RyaW5nKGxpYlBhdGgpOworICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSByZW1vdGUoKS0+dHJhbnNhY3QoTE9BRF9FRkZFQ1RfTElCUkFSWSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgc3RhdHVzID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgICAgICBpZiAoc3RhdHVzID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgKmhhbmRsZSA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCB1bmxvYWRFZmZlY3RMaWJyYXJ5KGludCBoYW5kbGUpCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQXVkaW9GbGluZ2VyOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoaGFuZGxlKTsKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gcmVtb3RlKCktPnRyYW5zYWN0KFVOTE9BRF9FRkZFQ1RfTElCUkFSWSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgc3RhdHVzID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHF1ZXJ5TnVtYmVyRWZmZWN0cyh1aW50MzJfdCAqbnVtRWZmZWN0cykKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBdWRpb0ZsaW5nZXI6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChRVUVSWV9OVU1fRUZGRUNUUywgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBpZiAobnVtRWZmZWN0cykgeworICAgICAgICAgICAgKm51bUVmZmVjdHMgPSAodWludDMyX3QpcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgIH0KKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcXVlcnlFZmZlY3QodWludDMyX3QgaW5kZXgsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjcmlwdG9yKQorICAgIHsKKyAgICAgICAgaWYgKHBEZXNjcmlwdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUF1ZGlvRmxpbmdlcjo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGluZGV4KTsKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gcmVtb3RlKCktPnRyYW5zYWN0KFFVRVJZX0VGRkVDVCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICByZXBseS5yZWFkKHBEZXNjcmlwdG9yLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRFZmZlY3REZXNjcmlwdG9yKGVmZmVjdF91dWlkX3QgKnBVdWlkLCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIGlmIChwVXVpZCA9PSBOVUxMIHx8IHBEZXNjcmlwdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUF1ZGlvRmxpbmdlcjo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZShwVXVpZCwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKTsKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gcmVtb3RlKCktPnRyYW5zYWN0KEdFVF9FRkZFQ1RfREVTQ1JJUFRPUiwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICByZXBseS5yZWFkKHBEZXNjcmlwdG9yLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVhbCBzcDxJRWZmZWN0PiBjcmVhdGVFZmZlY3QocGlkX3QgcGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJRWZmZWN0Q2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmVuYWJsZWQpCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIHNwPElFZmZlY3Q+IGVmZmVjdDsKKworICAgICAgICBpZiAocERlc2MgPT0gTlVMTCkgeworICAgICAgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgICAgICAqc3RhdHVzID0gQkFEX1ZBTFVFOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUF1ZGlvRmxpbmdlcjo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKHBpZCk7CisgICAgICAgIGRhdGEud3JpdGUocERlc2MsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgIGRhdGEud3JpdGVTdHJvbmdCaW5kZXIoY2xpZW50LT5hc0JpbmRlcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKHByaW9yaXR5KTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKG91dHB1dCk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihzZXNzaW9uSWQpOworCisgICAgICAgIHN0YXR1c190IGxTdGF0dXMgPSByZW1vdGUoKS0+dHJhbnNhY3QoQ1JFQVRFX0VGRkVDVCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKGxTdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIExPR0UoImNyZWF0ZUVmZmVjdCBlcnJvcjogJXMiLCBzdHJlcnJvcigtbFN0YXR1cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbFN0YXR1cyA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICAgICAgaW50IHRtcCA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICAgICAgaWYgKGlkKSB7CisgICAgICAgICAgICAgICAgKmlkID0gdG1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdG1wID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgICAgICBpZiAoZW5hYmxlZCkgeworICAgICAgICAgICAgICAgICplbmFibGVkID0gdG1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWZmZWN0ID0gaW50ZXJmYWNlX2Nhc3Q8SUVmZmVjdD4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKKyAgICAgICAgICAgIHJlcGx5LnJlYWQocERlc2MsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgKnN0YXR1cyA9IGxTdGF0dXM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KIH07CiAKIElNUExFTUVOVF9NRVRBX0lOVEVSRkFDRShBdWRpb0ZsaW5nZXIsICJhbmRyb2lkLm1lZGlhLklBdWRpb0ZsaW5nZXIiKTsKQEAgLTUxOCwxMCArNjk3LDEyIEBACiAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IGRhdGEucmVhZEludDMyKCk7CiAgICAgICAgICAgICBzcDxJTWVtb3J5PiBidWZmZXIgPSBpbnRlcmZhY2VfY2FzdDxJTWVtb3J5PihkYXRhLnJlYWRTdHJvbmdCaW5kZXIoKSk7CiAgICAgICAgICAgICBpbnQgb3V0cHV0ID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSBkYXRhLnJlYWRJbnQzMigpOwogICAgICAgICAgICAgc3RhdHVzX3Qgc3RhdHVzOwogICAgICAgICAgICAgc3A8SUF1ZGlvVHJhY2s+IHRyYWNrID0gY3JlYXRlVHJhY2socGlkLAogICAgICAgICAgICAgICAgICAgICBzdHJlYW1UeXBlLCBzYW1wbGVSYXRlLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwgYnVmZmVyQ291bnQsIGZsYWdzLCBidWZmZXIsIG91dHB1dCwgJnN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwgYnVmZmVyQ291bnQsIGZsYWdzLCBidWZmZXIsIG91dHB1dCwgJnNlc3Npb25JZCwgJnN0YXR1cyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzZXNzaW9uSWQpOwogICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoc3RhdHVzKTsKICAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcih0cmFjay0+YXNCaW5kZXIoKSk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CkBAIC01MzUsOSArNzE2LDExIEBACiAgICAgICAgICAgICBpbnQgY2hhbm5lbENvdW50ID0gZGF0YS5yZWFkSW50MzIoKTsKICAgICAgICAgICAgIHNpemVfdCBidWZmZXJDb3VudCA9IGRhdGEucmVhZEludDMyKCk7CiAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBpbnQgc2Vzc2lvbklkID0gZGF0YS5yZWFkSW50MzIoKTsKICAgICAgICAgICAgIHN0YXR1c190IHN0YXR1czsKICAgICAgICAgICAgIHNwPElBdWRpb1JlY29yZD4gcmVjb3JkID0gb3BlblJlY29yZChwaWQsIGlucHV0LAotICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwgYnVmZmVyQ291bnQsIGZsYWdzLCAmc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsIGJ1ZmZlckNvdW50LCBmbGFncywgJnNlc3Npb25JZCwgJnN0YXR1cyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzZXNzaW9uSWQpOwogICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoc3RhdHVzKTsKICAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihyZWNvcmQtPmFzQmluZGVyKCkpOwogICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwpAQCAtNzY4LDcgKzk1MSw3OSBAQAogICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoZ2V0SW5wdXRGcmFtZXNMb3N0KGlvSGFuZGxlKSk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGNhc2UgTkVXX0FVRElPX1NFU1NJT05fSUQ6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQXVkaW9GbGluZ2VyLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihuZXdBdWRpb1Nlc3Npb25JZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgY2FzZSBMT0FEX0VGRkVDVF9MSUJSQVJZOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUF1ZGlvRmxpbmdlciwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgaW50IGhhbmRsZTsKKyAgICAgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGxvYWRFZmZlY3RMaWJyYXJ5KGRhdGEucmVhZENTdHJpbmcoKSwgJmhhbmRsZSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKGhhbmRsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBVTkxPQURfRUZGRUNUX0xJQlJBUlk6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQXVkaW9GbGluZ2VyLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMih1bmxvYWRFZmZlY3RMaWJyYXJ5KGRhdGEucmVhZEludDMyKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFFVRVJZX05VTV9FRkZFQ1RTOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUF1ZGlvRmxpbmdlciwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgdWludDMyX3QgbnVtRWZmZWN0czsKKyAgICAgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHF1ZXJ5TnVtYmVyRWZmZWN0cygmbnVtRWZmZWN0cyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKChpbnQzMl90KW51bUVmZmVjdHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGNhc2UgUVVFUllfRUZGRUNUOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUF1ZGlvRmxpbmdlciwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkZXNjOworICAgICAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gcXVlcnlFZmZlY3QoZGF0YS5yZWFkSW50MzIoKSwgJmRlc2MpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICByZXBseS0+d3JpdGUoJmRlc2MsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHRVRfRUZGRUNUX0RFU0NSSVBUT1I6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQXVkaW9GbGluZ2VyLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBlZmZlY3RfdXVpZF90IHV1aWQ7CisgICAgICAgICAgICBkYXRhLnJlYWQoJnV1aWQsIHNpemVvZihlZmZlY3RfdXVpZF90KSk7CisgICAgICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90IGRlc2M7CisgICAgICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSBnZXRFZmZlY3REZXNjcmlwdG9yKCZ1dWlkLCAmZGVzYyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIHJlcGx5LT53cml0ZSgmZGVzYywgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENSRUFURV9FRkZFQ1Q6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQXVkaW9GbGluZ2VyLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBwaWRfdCBwaWQgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkZXNjOworICAgICAgICAgICAgZGF0YS5yZWFkKCZkZXNjLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICAgICAgc3A8SUVmZmVjdENsaWVudD4gY2xpZW50ID0gaW50ZXJmYWNlX2Nhc3Q8SUVmZmVjdENsaWVudD4oZGF0YS5yZWFkU3Ryb25nQmluZGVyKCkpOworICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBpbnQgb3V0cHV0ID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgc3RhdHVzX3Qgc3RhdHVzOworICAgICAgICAgICAgaW50IGlkOworICAgICAgICAgICAgaW50IGVuYWJsZWQ7CiAKKyAgICAgICAgICAgIHNwPElFZmZlY3Q+IGVmZmVjdCA9IGNyZWF0ZUVmZmVjdChwaWQsICZkZXNjLCBjbGllbnQsIHByaW9yaXR5LCBvdXRwdXQsIHNlc3Npb25JZCwgJnN0YXR1cywgJmlkLCAmZW5hYmxlZCk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoaWQpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoZW5hYmxlZCk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIoZWZmZWN0LT5hc0JpbmRlcigpKTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZSgmZGVzYywgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBCQmluZGVyOjpvblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvSUF1ZGlvVHJhY2suY3BwIGIvbWVkaWEvbGlibWVkaWEvSUF1ZGlvVHJhY2suY3BwCmluZGV4IDAxZmZkNzUuLmJjOGZmMzQgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL0lBdWRpb1RyYWNrLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9JQXVkaW9UcmFjay5jcHAKQEAgLTM0LDcgKzM0LDggQEAKICAgICBTVE9QLAogICAgIEZMVVNILAogICAgIE1VVEUsCi0gICAgUEFVU0UKKyAgICBQQVVTRSwKKyAgICBBVFRBQ0hfQVVYX0VGRkVDVAogfTsKIAogY2xhc3MgQnBBdWRpb1RyYWNrIDogcHVibGljIEJwSW50ZXJmYWNlPElBdWRpb1RyYWNrPgpAQCAtOTcsNyArOTgsMjEgQEAKICAgICAgICAgICAgIGNibGsgPSBpbnRlcmZhY2VfY2FzdDxJTWVtb3J5PihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjYmxrOwotICAgIH0gICAgCisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBhdHRhY2hBdXhFZmZlY3QoaW50IGVmZmVjdElkKQorICAgIHsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUF1ZGlvVHJhY2s6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihlZmZlY3RJZCk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChBVFRBQ0hfQVVYX0VGRkVDVCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgc3RhdHVzID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMT0dXKCJhdHRhY2hBdXhFZmZlY3QoKSBlcnJvcjogJXMiLCBzdHJlcnJvcigtc3RhdHVzKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CiB9OwogCiBJTVBMRU1FTlRfTUVUQV9JTlRFUkZBQ0UoQXVkaW9UcmFjaywgImFuZHJvaWQubWVkaWEuSUF1ZGlvVHJhY2siKTsKQEAgLTEzOCw2ICsxNTMsMTEgQEAKICAgICAgICAgICAgIHBhdXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBVFRBQ0hfQVVYX0VGRkVDVDogeworICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElBdWRpb1RyYWNrLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihhdHRhY2hBdXhFZmZlY3QoZGF0YS5yZWFkSW50MzIoKSkpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEJCaW5kZXI6Om9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKICAgICB9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9JRWZmZWN0LmNwcCBiL21lZGlhL2xpYm1lZGlhL0lFZmZlY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlM2FjNzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJtZWRpYS9JRWZmZWN0LmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2RlZmluZSBMT0dfVEFHICJJRWZmZWN0IgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KKyNpbmNsdWRlIDxtZWRpYS9JRWZmZWN0Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworZW51bSB7CisgICAgRU5BQkxFID0gSUJpbmRlcjo6RklSU1RfQ0FMTF9UUkFOU0FDVElPTiwKKyAgICBESVNBQkxFLAorICAgIENPTU1BTkQsCisgICAgRElTQ09OTkVDVCwKKyAgICBHRVRfQ0JMSworfTsKKworY2xhc3MgQnBFZmZlY3Q6IHB1YmxpYyBCcEludGVyZmFjZTxJRWZmZWN0PgoreworcHVibGljOgorICAgIEJwRWZmZWN0KGNvbnN0IHNwPElCaW5kZXI+JiBpbXBsKQorICAgICAgICA6IEJwSW50ZXJmYWNlPElFZmZlY3Q+KGltcGwpCisgICAgeworICAgIH0KKworICAgIHN0YXR1c190IGVuYWJsZSgpCisgICAgeworICAgICAgICBMT0dWKCJlbmFibGUiKTsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUVmZmVjdDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KEVOQUJMRSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOworICAgIH0KKworICAgIHN0YXR1c190IGRpc2FibGUoKQorICAgIHsKKyAgICAgICAgTE9HVigiZGlzYWJsZSIpOworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJRWZmZWN0OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoRElTQUJMRSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOworICAgIH0KKworICAgIHN0YXR1c190IGNvbW1hbmQoaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50ICpwUmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKQorICAgIHsKKyAgICAgICAgTE9HVigiY29tbWFuZCIpOworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJRWZmZWN0OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoY21kQ29kZSk7CisgICAgICAgIGludCBzaXplID0gY21kU2l6ZTsKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNpemUgPSAwOworICAgICAgICB9CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihzaXplKTsKKyAgICAgICAgaWYgKHNpemUpIHsKKyAgICAgICAgICAgIGRhdGEud3JpdGUocENtZERhdGEsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGlmIChwUmVwbHlTaXplID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNpemUgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZSA9ICpwUmVwbHlTaXplOworICAgICAgICB9CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihzaXplKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KENPTU1BTkQsIGRhdGEsICZyZXBseSk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICBzaXplID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIGlmIChzaXplICE9IDAgJiYgcFJlcGx5RGF0YSAhPSBOVUxMICYmIHBSZXBseVNpemUgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVwbHkucmVhZChwUmVwbHlEYXRhLCBzaXplKTsKKyAgICAgICAgICAgICpwUmVwbHlTaXplID0gc2l6ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIHZvaWQgZGlzY29ubmVjdCgpCisgICAgeworICAgICAgICBMT0dWKCJkaXNjb25uZWN0Iik7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElFZmZlY3Q6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChESVNDT05ORUNULCBkYXRhLCAmcmVwbHkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmlydHVhbCBzcDxJTWVtb3J5PiBnZXRDYmxrKCkgY29uc3QKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgc3A8SU1lbW9yeT4gY2JsazsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElFZmZlY3Q6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChHRVRfQ0JMSywgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgY2JsayA9IGludGVyZmFjZV9jYXN0PElNZW1vcnk+KHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNibGs7CisgICAgfQorIH07CisKK0lNUExFTUVOVF9NRVRBX0lOVEVSRkFDRShFZmZlY3QsICJhbmRyb2lkLm1lZGlhLklFZmZlY3QiKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0dXNfdCBCbkVmZmVjdDo6b25UcmFuc2FjdCgKKyAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKQoreworICAgIHN3aXRjaChjb2RlKSB7CisgICAgICAgIGNhc2UgRU5BQkxFOiB7CisgICAgICAgICAgICBMT0dWKCJFTkFCTEUiKTsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJRWZmZWN0LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihlbmFibGUoKSk7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisKKyAgICAgICAgY2FzZSBESVNBQkxFOiB7CisgICAgICAgICAgICBMT0dWKCJESVNBQkxFIik7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUVmZmVjdCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoZGlzYWJsZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKworICAgICAgICBjYXNlIENPTU1BTkQ6IHsKKyAgICAgICAgICAgIExPR1YoIkNPTU1BTkQiKTsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJRWZmZWN0LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBpbnQgY21kQ29kZSA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBpbnQgY21kU2l6ZSA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBjaGFyICpjbWQgPSBOVUxMOworICAgICAgICAgICAgaWYgKGNtZFNpemUpIHsKKyAgICAgICAgICAgICAgICBjbWQgPSAoY2hhciAqKW1hbGxvYyhjbWRTaXplKTsKKyAgICAgICAgICAgICAgICBkYXRhLnJlYWQoY21kLCBjbWRTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCByZXBseVNpemUgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgaW50IHJlcGx5U3ogPSByZXBseVNpemU7CisgICAgICAgICAgICBjaGFyICpyZXNwID0gTlVMTDsKKyAgICAgICAgICAgIGlmIChyZXBseVNpemUpIHsKKyAgICAgICAgICAgICAgICByZXNwID0gKGNoYXIgKiltYWxsb2MocmVwbHlTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGNvbW1hbmQoY21kQ29kZSwgY21kU2l6ZSwgY21kLCAmcmVwbHlTeiwgcmVzcCk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgaWYgKHJlcGx5U3ogPCByZXBseVNpemUpIHsKKyAgICAgICAgICAgICAgICByZXBseVNpemUgPSByZXBseVN6OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIocmVwbHlTaXplKTsKKyAgICAgICAgICAgIGlmIChyZXBseVNpemUpIHsKKyAgICAgICAgICAgICAgICByZXBseS0+d3JpdGUocmVzcCwgcmVwbHlTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbWQpIHsKKyAgICAgICAgICAgICAgICBmcmVlKGNtZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzcCkgeworICAgICAgICAgICAgICAgIGZyZWUocmVzcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisKKyAgICAgICAgY2FzZSBESVNDT05ORUNUOiB7CisgICAgICAgICAgICBMT0dWKCJESVNDT05ORUNUIik7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUVmZmVjdCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgZGlzY29ubmVjdCgpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOworCisgICAgICAgIGNhc2UgR0VUX0NCTEs6IHsKKyAgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUVmZmVjdCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihnZXRDYmxrKCktPmFzQmluZGVyKCkpOworICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgIH0gYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBCQmluZGVyOjpvblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0lFZmZlY3RDbGllbnQuY3BwIGIvbWVkaWEvbGlibWVkaWEvSUVmZmVjdENsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc2NTlhZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYm1lZGlhL0lFZmZlY3RDbGllbnQuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorKioKKyoqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIklFZmZlY3RDbGllbnQiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8bWVkaWEvSUVmZmVjdENsaWVudC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2VudW0geworICAgIENPTlRST0xfU1RBVFVTX0NIQU5HRUQgPSBJQmluZGVyOjpGSVJTVF9DQUxMX1RSQU5TQUNUSU9OLAorICAgIEVOQUJMRV9TVEFUVVNfQ0hBTkdFRCwKKyAgICBDT01NQU5EX0VYRUNVVEVECit9OworCitjbGFzcyBCcEVmZmVjdENsaWVudDogcHVibGljIEJwSW50ZXJmYWNlPElFZmZlY3RDbGllbnQ+Cit7CitwdWJsaWM6CisgICAgQnBFZmZlY3RDbGllbnQoY29uc3Qgc3A8SUJpbmRlcj4mIGltcGwpCisgICAgICAgIDogQnBJbnRlcmZhY2U8SUVmZmVjdENsaWVudD4oaW1wbCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBjb250cm9sU3RhdHVzQ2hhbmdlZChib29sIGNvbnRyb2xHcmFudGVkKQorICAgIHsKKyAgICAgICAgTE9HVigiY29udHJvbFN0YXR1c0NoYW5nZWQiKTsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUVmZmVjdENsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKCh1aW50MzJfdCljb250cm9sR3JhbnRlZCk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChDT05UUk9MX1NUQVRVU19DSEFOR0VELCBkYXRhLCAmcmVwbHksIElCaW5kZXI6OkZMQUdfT05FV0FZKTsKKyAgICB9CisKKyAgICB2b2lkIGVuYWJsZVN0YXR1c0NoYW5nZWQoYm9vbCBlbmFibGVkKQorICAgIHsKKyAgICAgICAgTE9HVigiZW5hYmxlU3RhdHVzQ2hhbmdlZCIpOworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJRWZmZWN0Q2xpZW50OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoKHVpbnQzMl90KWVuYWJsZWQpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoRU5BQkxFX1NUQVRVU19DSEFOR0VELCBkYXRhLCAmcmVwbHksIElCaW5kZXI6OkZMQUdfT05FV0FZKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbW1hbmRFeGVjdXRlZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKQorICAgIHsKKyAgICAgICAgTE9HVigiY29tbWFuZEV4ZWN1dGVkIik7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElFZmZlY3RDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihjbWRDb2RlKTsKKyAgICAgICAgaW50IHNpemUgPSBjbWRTaXplOworICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS53cml0ZUludDMyKHNpemUpOworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAgICAgZGF0YS53cml0ZShwQ21kRGF0YSwgc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSA9IHJlcGx5U2l6ZTsKKyAgICAgICAgaWYgKHBSZXBseURhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS53cml0ZUludDMyKHNpemUpOworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAgICAgZGF0YS53cml0ZShwUmVwbHlEYXRhLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoQ09NTUFORF9FWEVDVVRFRCwgZGF0YSwgJnJlcGx5LCBJQmluZGVyOjpGTEFHX09ORVdBWSk7CisgICAgfQorCit9OworCitJTVBMRU1FTlRfTUVUQV9JTlRFUkZBQ0UoRWZmZWN0Q2xpZW50LCAiYW5kcm9pZC5tZWRpYS5JRWZmZWN0Q2xpZW50Iik7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdHVzX3QgQm5FZmZlY3RDbGllbnQ6Om9uVHJhbnNhY3QoCisgICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncykKK3sKKyAgICBzd2l0Y2goY29kZSkgeworICAgICAgICBjYXNlIENPTlRST0xfU1RBVFVTX0NIQU5HRUQ6IHsKKyAgICAgICAgICAgIExPR1YoIkNPTlRST0xfU1RBVFVTX0NIQU5HRUQiKTsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJRWZmZWN0Q2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBib29sIGhhc0NvbnRyb2wgPSAoYm9vbClkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgY29udHJvbFN0YXR1c0NoYW5nZWQoaGFzQ29udHJvbCk7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGNhc2UgRU5BQkxFX1NUQVRVU19DSEFOR0VEOiB7CisgICAgICAgICAgICBMT0dWKCJFTkFCTEVfU1RBVFVTX0NIQU5HRUQiKTsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJRWZmZWN0Q2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBib29sIGVuYWJsZWQgPSAoYm9vbClkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgZW5hYmxlU3RhdHVzQ2hhbmdlZChlbmFibGVkKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgY2FzZSBDT01NQU5EX0VYRUNVVEVEOiB7CisgICAgICAgICAgICBMT0dWKCJDT01NQU5EX0VYRUNVVEVEIik7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUVmZmVjdENsaWVudCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgaW50IGNtZENvZGUgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgaW50IGNtZFNpemUgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgY2hhciAqY21kID0gTlVMTDsKKyAgICAgICAgICAgIGlmIChjbWRTaXplKSB7CisgICAgICAgICAgICAgICAgY21kID0gKGNoYXIgKiltYWxsb2MoY21kU2l6ZSk7CisgICAgICAgICAgICAgICAgZGF0YS5yZWFkKGNtZCwgY21kU2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgcmVwbHlTaXplID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGNoYXIgKnJlc3AgPSBOVUxMOworICAgICAgICAgICAgaWYgKHJlcGx5U2l6ZSkgeworICAgICAgICAgICAgICAgIHJlc3AgPSAoY2hhciAqKW1hbGxvYyhyZXBseVNpemUpOworICAgICAgICAgICAgICAgIGRhdGEucmVhZChyZXNwLCByZXBseVNpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tbWFuZEV4ZWN1dGVkKGNtZENvZGUsIGNtZFNpemUsIGNtZCwgcmVwbHlTaXplLCByZXNwKTsKKyAgICAgICAgICAgIGlmIChjbWQpIHsKKyAgICAgICAgICAgICAgICBmcmVlKGNtZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzcCkgeworICAgICAgICAgICAgICAgIGZyZWUocmVzcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQkJpbmRlcjo6b25UcmFuc2FjdChjb2RlLCBkYXRhLCByZXBseSwgZmxhZ3MpOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9JTWVkaWFQbGF5ZXJTZXJ2aWNlLmNwcCBiL21lZGlhL2xpYm1lZGlhL0lNZWRpYVBsYXllclNlcnZpY2UuY3BwCmluZGV4IDcxYzVmODYuLjFhZTIyMmUgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL0lNZWRpYVBsYXllclNlcnZpY2UuY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhL0lNZWRpYVBsYXllclNlcnZpY2UuY3BwCkBAIC01OCw3ICs1OCw3IEBACiAKICAgICB2aXJ0dWFsIHNwPElNZWRpYVBsYXllcj4gY3JlYXRlKAogICAgICAgICAgICAgcGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsCi0gICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwsIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwsIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzLCBpbnQgYXVkaW9TZXNzaW9uSWQpIHsKICAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OwogICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSU1lZGlhUGxheWVyU2VydmljZTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKICAgICAgICAgZGF0YS53cml0ZUludDMyKHBpZCk7CkBAIC03NSw4ICs3NSwxMCBAQAogICAgICAgICAgICAgICAgIGRhdGEud3JpdGVTdHJpbmc4KGhlYWRlcnMtPnZhbHVlQXQoaSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihhdWRpb1Nlc3Npb25JZCk7CiAKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KENSRUFURV9VUkwsIGRhdGEsICZyZXBseSk7CisKICAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZWRpYVBsYXllcj4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKICAgICB9CiAKQEAgLTg5LDcgKzkxLDggQEAKICAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZWRpYVJlY29yZGVyPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiBjcmVhdGUocGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKQorICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiBjcmVhdGUocGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGludCBmZCwKKyAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCwgaW50IGF1ZGlvU2Vzc2lvbklkKQogICAgIHsKICAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OwogICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSU1lZGlhUGxheWVyU2VydmljZTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKQEAgLTk4LDggKzEwMSwxMSBAQAogICAgICAgICBkYXRhLndyaXRlRmlsZURlc2NyaXB0b3IoZmQpOwogICAgICAgICBkYXRhLndyaXRlSW50NjQob2Zmc2V0KTsKICAgICAgICAgZGF0YS53cml0ZUludDY0KGxlbmd0aCk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihhdWRpb1Nlc3Npb25JZCk7CisKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KENSRUFURV9GRCwgZGF0YSwgJnJlcGx5KTsKLSAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZWRpYVBsYXllcj4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKKworICAgICAgICByZXR1cm4gaW50ZXJmYWNlX2Nhc3Q8SU1lZGlhUGxheWVyPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOzsKICAgICB9CiAKICAgICB2aXJ0dWFsIHNwPElNZW1vcnk+IGRlY29kZShjb25zdCBjaGFyKiB1cmwsIHVpbnQzMl90ICpwU2FtcGxlUmF0ZSwgaW50KiBwTnVtQ2hhbm5lbHMsIGludCogcEZvcm1hdCkKQEAgLTE2Niw5ICsxNzIsMTAgQEAKICAgICAgICAgICAgICAgICBTdHJpbmc4IHZhbHVlID0gZGF0YS5yZWFkU3RyaW5nOCgpOwogICAgICAgICAgICAgICAgIGhlYWRlcnMuYWRkKGtleSwgdmFsdWUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGF1ZGlvU2Vzc2lvbklkID0gZGF0YS5yZWFkSW50MzIoKTsKIAogICAgICAgICAgICAgc3A8SU1lZGlhUGxheWVyPiBwbGF5ZXIgPSBjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIHBpZCwgY2xpZW50LCB1cmwsIG51bUhlYWRlcnMgPiAwID8gJmhlYWRlcnMgOiBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBjbGllbnQsIHVybCwgbnVtSGVhZGVycyA+IDAgPyAmaGVhZGVycyA6IE5VTEwsIGF1ZGlvU2Vzc2lvbklkKTsKIAogICAgICAgICAgICAgcmVwbHktPndyaXRlU3Ryb25nQmluZGVyKHBsYXllci0+YXNCaW5kZXIoKSk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CkBAIC0xODAsNyArMTg3LDkgQEAKICAgICAgICAgICAgIGludCBmZCA9IGR1cChkYXRhLnJlYWRGaWxlRGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gZGF0YS5yZWFkSW50NjQoKTsKICAgICAgICAgICAgIGludDY0X3QgbGVuZ3RoID0gZGF0YS5yZWFkSW50NjQoKTsKLSAgICAgICAgICAgIHNwPElNZWRpYVBsYXllcj4gcGxheWVyID0gY3JlYXRlKHBpZCwgY2xpZW50LCBmZCwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICAgICAgaW50IGF1ZGlvU2Vzc2lvbklkID0gZGF0YS5yZWFkSW50MzIoKTsKKworICAgICAgICAgICAgc3A8SU1lZGlhUGxheWVyPiBwbGF5ZXIgPSBjcmVhdGUocGlkLCBjbGllbnQsIGZkLCBvZmZzZXQsIGxlbmd0aCwgYXVkaW9TZXNzaW9uSWQpOwogICAgICAgICAgICAgcmVwbHktPndyaXRlU3Ryb25nQmluZGVyKHBsYXllci0+YXNCaW5kZXIoKSk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgICAgIH0gYnJlYWs7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9JTWVkaWFSZWNvcmRlci5jcHAgYi9tZWRpYS9saWJtZWRpYS9JTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMmJjMmE3ZS4uOWZlMjA3YyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWEvSU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhL0lNZWRpYVJlY29yZGVyLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgogI2luY2x1ZGUgPGNhbWVyYS9JQ2FtZXJhLmg+Ci0jaW5jbHVkZSA8bWVkaWEvSU1lZGlhUGxheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8bWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxtZWRpYS9JTWVkaWFSZWNvcmRlci5oPgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CkBAIC0xODksNyArMTg5LDcgQEAKICAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOwogICAgIH0KIAotICAgIHN0YXR1c190IHNldExpc3RlbmVyKGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGxpc3RlbmVyKQorICAgIHN0YXR1c190IHNldExpc3RlbmVyKGNvbnN0IHNwPElNZWRpYVJlY29yZGVyQ2xpZW50PiYgbGlzdGVuZXIpCiAgICAgewogICAgICAgICBMT0dWKCJzZXRMaXN0ZW5lciglcCkiLCBsaXN0ZW5lci5nZXQoKSk7CiAgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKQEAgLTM5OSw4ICszOTksOCBAQAogICAgICAgICBjYXNlIFNFVF9MSVNURU5FUjogewogICAgICAgICAgICAgTE9HVigiU0VUX0xJU1RFTkVSIik7CiAgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSU1lZGlhUmVjb3JkZXIsIGRhdGEsIHJlcGx5KTsKLSAgICAgICAgICAgIHNwPElNZWRpYVBsYXllckNsaWVudD4gbGlzdGVuZXIgPQotICAgICAgICAgICAgICAgIGludGVyZmFjZV9jYXN0PElNZWRpYVBsYXllckNsaWVudD4oZGF0YS5yZWFkU3Ryb25nQmluZGVyKCkpOworICAgICAgICAgICAgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+IGxpc3RlbmVyID0KKyAgICAgICAgICAgICAgICBpbnRlcmZhY2VfY2FzdDxJTWVkaWFSZWNvcmRlckNsaWVudD4oZGF0YS5yZWFkU3Ryb25nQmluZGVyKCkpOwogICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoc2V0TGlzdGVuZXIobGlzdGVuZXIpKTsKICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKICAgICAgICAgfSBicmVhazsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0lNZWRpYVJlY29yZGVyQ2xpZW50LmNwcCBiL21lZGlhL2xpYm1lZGlhL0lNZWRpYVJlY29yZGVyQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjIzNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlibWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8YmluZGVyL0lJbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxiaW5kZXIvUGFyY2VsLmg+CisKKyNpbmNsdWRlIDxtZWRpYS9JTWVkaWFSZWNvcmRlckNsaWVudC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2VudW0geworICAgIE5PVElGWSA9IElCaW5kZXI6OkZJUlNUX0NBTExfVFJBTlNBQ1RJT04sCit9OworCitjbGFzcyBCcE1lZGlhUmVjb3JkZXJDbGllbnQ6IHB1YmxpYyBCcEludGVyZmFjZTxJTWVkaWFSZWNvcmRlckNsaWVudD4KK3sKK3B1YmxpYzoKKyAgICBCcE1lZGlhUmVjb3JkZXJDbGllbnQoY29uc3Qgc3A8SUJpbmRlcj4mIGltcGwpCisgICAgICAgIDogQnBJbnRlcmZhY2U8SU1lZGlhUmVjb3JkZXJDbGllbnQ+KGltcGwpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBub3RpZnkoaW50IG1zZywgaW50IGV4dDEsIGludCBleHQyKQorICAgIHsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSU1lZGlhUmVjb3JkZXJDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihtc2cpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoZXh0MSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihleHQyKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KE5PVElGWSwgZGF0YSwgJnJlcGx5LCBJQmluZGVyOjpGTEFHX09ORVdBWSk7CisgICAgfQorfTsKKworSU1QTEVNRU5UX01FVEFfSU5URVJGQUNFKE1lZGlhUmVjb3JkZXJDbGllbnQsICJhbmRyb2lkLm1lZGlhLklNZWRpYVJlY29yZGVyQ2xpZW50Iik7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdHVzX3QgQm5NZWRpYVJlY29yZGVyQ2xpZW50OjpvblRyYW5zYWN0KAorICAgIHVpbnQzMl90IGNvZGUsIGNvbnN0IFBhcmNlbCYgZGF0YSwgUGFyY2VsKiByZXBseSwgdWludDMyX3QgZmxhZ3MpCit7CisgICAgc3dpdGNoKGNvZGUpIHsKKyAgICAgICAgY2FzZSBOT1RJRlk6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJTWVkaWFSZWNvcmRlckNsaWVudCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgaW50IG1zZyA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBpbnQgZXh0MSA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBpbnQgZXh0MiA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBub3RpZnkobXNnLCBleHQxLCBleHQyKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBCQmluZGVyOjpvblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7CisgICAgfQorfQorCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvSU9NWC5jcHAgYi9tZWRpYS9saWJtZWRpYS9JT01YLmNwcAppbmRleCAwMWI2NzM3Li5mMzgwNGI4IDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9JT01YLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9JT01YLmNwcApAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBqZmllbGRJRCBzdXJmYWNlSUQgPSBlbnYtPkdldEZpZWxkSUQoc3VyZmFjZUNsYXNzLCAibVN1cmZhY2UiLCAiSSIpOworICAgIGpmaWVsZElEIHN1cmZhY2VJRCA9IGVudi0+R2V0RmllbGRJRChzdXJmYWNlQ2xhc3MsIEFORFJPSURfVklFV19TVVJGQUNFX0pOSV9JRCwgIkkiKTsKICAgICBpZiAoc3VyZmFjZUlEID09IE5VTEwpIHsKICAgICAgICAgTE9HRSgiQ2FuJ3QgZmluZCBTdXJmYWNlLm1TdXJmYWNlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvTWVkaWFQcm9maWxlcy5jcHAgYi9tZWRpYS9saWJtZWRpYS9NZWRpYVByb2ZpbGVzLmNwcAppbmRleCAxMjYzMzczLi4zODY5Mzg5IDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9NZWRpYVByb2ZpbGVzLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9NZWRpYVByb2ZpbGVzLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBACiB9CiAKIC8qc3RhdGljKi8gTWVkaWFQcm9maWxlczo6Q2FtY29yZGVyUHJvZmlsZSoKLU1lZGlhUHJvZmlsZXM6OmNyZWF0ZUNhbWNvcmRlclByb2ZpbGUoY29uc3QgY2hhciAqKmF0dHMpCitNZWRpYVByb2ZpbGVzOjpjcmVhdGVDYW1jb3JkZXJQcm9maWxlKGludCBjYW1lcmFJZCwgY29uc3QgY2hhciAqKmF0dHMpCiB7CiAgICAgQ0hFQ0soIXN0cmNtcCgicXVhbGl0eSIsICAgIGF0dHNbMF0pICYmCiAgICAgICAgICAgIXN0cmNtcCgiZmlsZUZvcm1hdCIsIGF0dHNbMl0pICYmCkBAIC0yODcsMTYgKzI4Nyw0NyBAQAogICAgIENIRUNLKGZpbGVGb3JtYXQgIT0gLTEpOwogCiAgICAgTWVkaWFQcm9maWxlczo6Q2FtY29yZGVyUHJvZmlsZSAqcHJvZmlsZSA9IG5ldyBNZWRpYVByb2ZpbGVzOjpDYW1jb3JkZXJQcm9maWxlOworICAgIHByb2ZpbGUtPm1DYW1lcmFJZCA9IGNhbWVyYUlkOwogICAgIHByb2ZpbGUtPm1GaWxlRm9ybWF0ID0gc3RhdGljX2Nhc3Q8b3V0cHV0X2Zvcm1hdD4oZmlsZUZvcm1hdCk7CiAgICAgcHJvZmlsZS0+bVF1YWxpdHkgPSBzdGF0aWNfY2FzdDxjYW1jb3JkZXJfcXVhbGl0eT4ocXVhbGl0eSk7CiAgICAgcHJvZmlsZS0+bUR1cmF0aW9uID0gYXRvaShhdHRzWzVdKTsKICAgICByZXR1cm4gcHJvZmlsZTsKIH0KIAotLypzdGF0aWMqLyBpbnQKLU1lZGlhUHJvZmlsZXM6OmdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWwoY29uc3QgY2hhcioqIGF0dHMpCitNZWRpYVByb2ZpbGVzOjpJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyoKK01lZGlhUHJvZmlsZXM6OmZpbmRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyhpbnQgY2FtZXJhSWQpIGNvbnN0Cit7CisgICAgaW50IG4gPSBtSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMuc2l6ZSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzICpsZXZlbHMgPSBtSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHNbaV07CisgICAgICAgIGlmIChsZXZlbHMtPm1DYW1lcmFJZCA9PSBjYW1lcmFJZCkgeworICAgICAgICAgICAgcmV0dXJuIGxldmVsczsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwordm9pZCBNZWRpYVByb2ZpbGVzOjphZGRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVsKGludCBjYW1lcmFJZCwgY29uc3QgY2hhcioqIGF0dHMpCiB7CiAgICAgQ0hFQ0soIXN0cmNtcCgicXVhbGl0eSIsIGF0dHNbMF0pKTsKKyAgICBpbnQgcXVhbGl0eSA9IGF0b2koYXR0c1sxXSk7CisgICAgTE9HVigiJXM6IGNhbWVyYUlkPSVkLCBxdWFsaXR5PSVkXG4iLCBfX2Z1bmNfXywgY2FtZXJhSWQsIHF1YWxpdHkpOworICAgIEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzICpsZXZlbHMgPSBmaW5kSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoY2FtZXJhSWQpOworCisgICAgaWYgKGxldmVscyA9PSBOVUxMKSB7CisgICAgICAgIGxldmVscyA9IG5ldyBJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscygpOworICAgICAgICBsZXZlbHMtPm1DYW1lcmFJZCA9IGNhbWVyYUlkOworICAgICAgICBtSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMuYWRkKGxldmVscyk7CisgICAgfQorCisgICAgbGV2ZWxzLT5tTGV2ZWxzLmFkZChxdWFsaXR5KTsKK30KKworLypzdGF0aWMqLyBpbnQKK01lZGlhUHJvZmlsZXM6OmdldENhbWVyYUlkKGNvbnN0IGNoYXIqKiBhdHRzKQoreworICAgIGlmICghYXR0c1swXSkgcmV0dXJuIDA7ICAvLyBkZWZhdWx0IGNhbWVyYUlkID0gMAorICAgIENIRUNLKCFzdHJjbXAoImNhbWVyYUlkIiwgYXR0c1swXSkpOwogICAgIHJldHVybiBhdG9pKGF0dHNbMV0pOwogfQogCkBAIC0zMjIsMTAgKzM1MywxMyBAQAogICAgICAgICBwcm9maWxlcy0+bUF1ZGlvRGVjb2RlcnMuYWRkKGNyZWF0ZUF1ZGlvRGVjb2RlckNhcChhdHRzKSk7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAoIkVuY29kZXJPdXRwdXRGaWxlRm9ybWF0IiwgbmFtZSkgPT0gMCkgewogICAgICAgICBwcm9maWxlcy0+bUVuY29kZXJPdXRwdXRGaWxlRm9ybWF0cy5hZGQoY3JlYXRlRW5jb2Rlck91dHB1dEZpbGVGb3JtYXQoYXR0cykpOworICAgIH0gZWxzZSBpZiAoc3RyY21wKCJDYW1jb3JkZXJQcm9maWxlcyIsIG5hbWUpID09IDApIHsKKyAgICAgICAgcHJvZmlsZXMtPm1DdXJyZW50Q2FtZXJhSWQgPSBnZXRDYW1lcmFJZChhdHRzKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcCgiRW5jb2RlclByb2ZpbGUiLCBuYW1lKSA9PSAwKSB7Ci0gICAgICAgIHByb2ZpbGVzLT5tQ2FtY29yZGVyUHJvZmlsZXMuYWRkKGNyZWF0ZUNhbWNvcmRlclByb2ZpbGUoYXR0cykpOworICAgICAgICBwcm9maWxlcy0+bUNhbWNvcmRlclByb2ZpbGVzLmFkZCgKKyAgICAgICAgICAgIGNyZWF0ZUNhbWNvcmRlclByb2ZpbGUocHJvZmlsZXMtPm1DdXJyZW50Q2FtZXJhSWQsIGF0dHMpKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcCgiSW1hZ2VFbmNvZGluZyIsIG5hbWUpID09IDApIHsKLSAgICAgICAgcHJvZmlsZXMtPm1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscy5hZGQoZ2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbChhdHRzKSk7CisgICAgICAgIHByb2ZpbGVzLT5hZGRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVsKHByb2ZpbGVzLT5tQ3VycmVudENhbWVyYUlkLCBhdHRzKTsKICAgICB9CiB9CiAKQEAgLTM4Myw3ICs0MTcsOCBAQAogICAgICAgICBuZXcgTWVkaWFQcm9maWxlczo6VmlkZW9Db2RlYyhWSURFT19FTkNPREVSX0gyNjMsIDM2MDAwMCwgMzUyLCAyODgsIDIwKTsKIAogICAgIEF1ZGlvQ29kZWMgKmF1ZGlvQ29kZWMgPSBuZXcgQXVkaW9Db2RlYyhBVURJT19FTkNPREVSX0FNUl9OQiwgMTIyMDAsIDgwMDAsIDEpOwotICAgIENhbWNvcmRlclByb2ZpbGUgKnByb2ZpbGUgPSBuZXcgQ2FtY29yZGVyUHJvZmlsZTsKKyAgICBDYW1jb3JkZXJQcm9maWxlICpwcm9maWxlID0gbmV3IE1lZGlhUHJvZmlsZXM6OkNhbWNvcmRlclByb2ZpbGU7CisgICAgcHJvZmlsZS0+bUNhbWVyYUlkID0gMDsKICAgICBwcm9maWxlLT5tRmlsZUZvcm1hdCA9IE9VVFBVVF9GT1JNQVRfVEhSRUVfR1BQOwogICAgIHByb2ZpbGUtPm1RdWFsaXR5ID0gQ0FNQ09SREVSX1FVQUxJVFlfSElHSDsKICAgICBwcm9maWxlLT5tRHVyYXRpb24gPSA2MDsKQEAgLTQwMiw2ICs0MzcsNyBAQAogICAgICAgICBuZXcgTWVkaWFQcm9maWxlczo6QXVkaW9Db2RlYyhBVURJT19FTkNPREVSX0FNUl9OQiwgMTIyMDAsIDgwMDAsIDEpOwogCiAgICAgTWVkaWFQcm9maWxlczo6Q2FtY29yZGVyUHJvZmlsZSAqcHJvZmlsZSA9IG5ldyBNZWRpYVByb2ZpbGVzOjpDYW1jb3JkZXJQcm9maWxlOworICAgIHByb2ZpbGUtPm1DYW1lcmFJZCA9IDA7CiAgICAgcHJvZmlsZS0+bUZpbGVGb3JtYXQgPSBPVVRQVVRfRk9STUFUX1RIUkVFX0dQUDsKICAgICBwcm9maWxlLT5tUXVhbGl0eSA9IENBTUNPUkRFUl9RVUFMSVRZX0xPVzsKICAgICBwcm9maWxlLT5tRHVyYXRpb24gPSAzMDsKQEAgLTQ1OCw5ICs0OTQsMTIgQEAKIC8qc3RhdGljKi8gdm9pZAogTWVkaWFQcm9maWxlczo6Y3JlYXRlRGVmYXVsdEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKE1lZGlhUHJvZmlsZXMgKnByb2ZpbGVzKQogewotICAgIHByb2ZpbGVzLT5tSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMuYWRkKDcwKTsKLSAgICBwcm9maWxlcy0+bUltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzLmFkZCg4MCk7Ci0gICAgcHJvZmlsZXMtPm1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscy5hZGQoOTApOworICAgIEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzICpsZXZlbHMgPSBuZXcgSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoKTsKKyAgICBsZXZlbHMtPm1DYW1lcmFJZCA9IDA7CisgICAgbGV2ZWxzLT5tTGV2ZWxzLmFkZCg3MCk7CisgICAgbGV2ZWxzLT5tTGV2ZWxzLmFkZCg4MCk7CisgICAgbGV2ZWxzLT5tTGV2ZWxzLmFkZCg5MCk7CisgICAgcHJvZmlsZXMtPm1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscy5hZGQobGV2ZWxzKTsKIH0KIAogLypzdGF0aWMqLyBNZWRpYVByb2ZpbGVzKgpAQCAtNjI5LDE5ICs2NjgsMjQgQEAKICAgICByZXR1cm4gZGVjb2RlcnM7ICAvLyBjb3B5IG91dAogfQogCi1pbnQgTWVkaWFQcm9maWxlczo6Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKGNvbnN0IGNoYXIgKm5hbWUsIGNhbWNvcmRlcl9xdWFsaXR5IHF1YWxpdHkpIGNvbnN0CitpbnQgTWVkaWFQcm9maWxlczo6Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjYW1lcmFJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtY29yZGVyX3F1YWxpdHkgcXVhbGl0eSkgY29uc3QKIHsKLSAgICBMT0dWKCJnZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWU6ICVzIGZvciBxdWFsaXR5ICVkIiwgbmFtZSwgcXVhbGl0eSk7CisgICAgTE9HVigiZ2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lOiAlcyBmb3IgY2FtZXJhICVkLCBxdWFsaXR5ICVkIiwKKyAgICAgICAgIG5hbWUsIGNhbWVyYUlkLCBxdWFsaXR5KTsKIAogICAgIGludCBpbmRleCA9IC0xOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBuID0gbUNhbWNvcmRlclByb2ZpbGVzLnNpemUoKTsgaSA8IG47ICsraSkgewotICAgICAgICBpZiAobUNhbWNvcmRlclByb2ZpbGVzW2ldLT5tUXVhbGl0eSA9PSBxdWFsaXR5KSB7CisgICAgICAgIGlmIChtQ2FtY29yZGVyUHJvZmlsZXNbaV0tPm1DYW1lcmFJZCA9PSBjYW1lcmFJZCAmJgorICAgICAgICAgICAgbUNhbWNvcmRlclByb2ZpbGVzW2ldLT5tUXVhbGl0eSA9PSBxdWFsaXR5KSB7CiAgICAgICAgICAgICBpbmRleCA9IGk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoaW5kZXggPT0gLTEpIHsKLSAgICAgICAgTE9HRSgiVGhlIGdpdmVuIGNhbWNvcmRlciBwcm9maWxlIHF1YWxpdHkgJWQgaXMgbm90IGZvdW5kIiwgcXVhbGl0eSk7CisgICAgICAgIExPR0UoIlRoZSBnaXZlbiBjYW1jb3JkZXIgcHJvZmlsZSBjYW1lcmEgJWQgcXVhbGl0eSAlZCBpcyBub3QgZm91bmQiLAorICAgICAgICAgICAgIGNhbWVyYUlkLCBxdWFsaXR5KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtNjU3LDEzICs3MDEsMTggQEAKICAgICBpZiAoIXN0cmNtcCgiYXVkLmNoIiwgbmFtZSkpIHJldHVybiBtQ2FtY29yZGVyUHJvZmlsZXNbaW5kZXhdLT5tQXVkaW9Db2RlYy0+bUNoYW5uZWxzOwogICAgIGlmICghc3RyY21wKCJhdWQuaHoiLCBuYW1lKSkgcmV0dXJuIG1DYW1jb3JkZXJQcm9maWxlc1tpbmRleF0tPm1BdWRpb0NvZGVjLT5tU2FtcGxlUmF0ZTsKIAotICAgIExPR0UoIlRoZSBnaXZlbiBjYW1jb3JkZXIgcHJvZmlsZSBwYXJhbSBuYW1lICVzIGlzIG5vdCBmb3VuZCIsIG5hbWUpOworICAgIExPR0UoIlRoZSBnaXZlbiBjYW1jb3JkZXIgcHJvZmlsZSBwYXJhbSBpZCAlZCBuYW1lICVzIGlzIG5vdCBmb3VuZCIsIGNhbWVyYUlkLCBuYW1lKTsKICAgICByZXR1cm4gLTE7CiB9CiAKLVZlY3RvcjxpbnQ+IE1lZGlhUHJvZmlsZXM6OmdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKCkgY29uc3QKK1ZlY3RvcjxpbnQ+IE1lZGlhUHJvZmlsZXM6OmdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGludCBjYW1lcmFJZCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzOyAgLy8gY29weSBvdXQKKyAgICBWZWN0b3I8aW50PiByZXN1bHQ7CisgICAgSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMgKmxldmVscyA9IGZpbmRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyhjYW1lcmFJZCk7CisgICAgaWYgKGxldmVscyAhPSBOVUxMKSB7CisgICAgICAgIHJlc3VsdCA9IGxldmVscy0+bUxldmVsczsgIC8vIGNvcHkgb3V0CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIE1lZGlhUHJvZmlsZXM6On5NZWRpYVByb2ZpbGVzKCkKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL01lZGlhU2Nhbm5lci5jcHAgYi9tZWRpYS9saWJtZWRpYS9NZWRpYVNjYW5uZXIuY3BwCmluZGV4IDg0M2E4ZmQuLjZmNTgxZDMgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL01lZGlhU2Nhbm5lci5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWEvTWVkaWFTY2FubmVyLmNwcApAQCAtMTQsNiArMTQsMTAgQEAKICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogICovCiAKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiTWVkaWFTY2FubmVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCiAjaW5jbHVkZSA8bWVkaWEvbWVkaWFzY2FubmVyLmg+CiAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvbWVkaWFwbGF5ZXIuY3BwIGIvbWVkaWEvbGlibWVkaWEvbWVkaWFwbGF5ZXIuY3BwCmluZGV4IGM2YmJiY2MuLmQ1YTNjMTMgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL21lZGlhcGxheWVyLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9tZWRpYXBsYXllci5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICAgICBtTGVmdFZvbHVtZSA9IG1SaWdodFZvbHVtZSA9IDEuMDsKICAgICBtVmlkZW9XaWR0aCA9IG1WaWRlb0hlaWdodCA9IDA7CiAgICAgbUxvY2tUaHJlYWRJZCA9IDA7CisgICAgbUF1ZGlvU2Vzc2lvbklkID0gQXVkaW9TeXN0ZW06Om5ld0F1ZGlvU2Vzc2lvbklkKCk7CiB9CiAKIE1lZGlhUGxheWVyOjp+TWVkaWFQbGF5ZXIoKQpAQCAtMTM3LDcgKzEzOCw3IEBACiAgICAgICAgIGNvbnN0IHNwPElNZWRpYVBsYXllclNlcnZpY2U+JiBzZXJ2aWNlKGdldE1lZGlhUGxheWVyU2VydmljZSgpKTsKICAgICAgICAgaWYgKHNlcnZpY2UgIT0gMCkgewogICAgICAgICAgICAgc3A8SU1lZGlhUGxheWVyPiBwbGF5ZXIoCi0gICAgICAgICAgICAgICAgICAgIHNlcnZpY2UtPmNyZWF0ZShnZXRwaWQoKSwgdGhpcywgdXJsLCBoZWFkZXJzKSk7CisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UtPmNyZWF0ZShnZXRwaWQoKSwgdGhpcywgdXJsLCBoZWFkZXJzLCBtQXVkaW9TZXNzaW9uSWQpKTsKICAgICAgICAgICAgIGVyciA9IHNldERhdGFTb3VyY2UocGxheWVyKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1MCw3ICsxNTEsNyBAQAogICAgIHN0YXR1c190IGVyciA9IFVOS05PV05fRVJST1I7CiAgICAgY29uc3Qgc3A8SU1lZGlhUGxheWVyU2VydmljZT4mIHNlcnZpY2UoZ2V0TWVkaWFQbGF5ZXJTZXJ2aWNlKCkpOwogICAgIGlmIChzZXJ2aWNlICE9IDApIHsKLSAgICAgICAgc3A8SU1lZGlhUGxheWVyPiBwbGF5ZXIoc2VydmljZS0+Y3JlYXRlKGdldHBpZCgpLCB0aGlzLCBmZCwgb2Zmc2V0LCBsZW5ndGgpKTsKKyAgICAgICAgc3A8SU1lZGlhUGxheWVyPiBwbGF5ZXIoc2VydmljZS0+Y3JlYXRlKGdldHBpZCgpLCB0aGlzLCBmZCwgb2Zmc2V0LCBsZW5ndGgsIG1BdWRpb1Nlc3Npb25JZCkpOwogICAgICAgICBlcnIgPSBzZXREYXRhU291cmNlKHBsYXllcik7CiAgICAgfQogICAgIHJldHVybiBlcnI7CkBAIC01MDEsNiArNTAyLDI3IEBACiAgICAgcmV0dXJuIE9LOwogfQogCitzdGF0dXNfdCBNZWRpYVBsYXllcjo6c2V0QXVkaW9TZXNzaW9uSWQoaW50IHNlc3Npb25JZCkKK3sKKyAgICBMT0dWKCJNZWRpYVBsYXllcjo6c2V0QXVkaW9TZXNzaW9uSWQoJWQpIiwgc2Vzc2lvbklkKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIGlmICghKG1DdXJyZW50U3RhdGUgJiBNRURJQV9QTEFZRVJfSURMRSkpIHsKKyAgICAgICAgTE9HRSgic2V0QXVkaW9TZXNzaW9uSWQgY2FsbGVkIGluIHN0YXRlICVkIiwgbUN1cnJlbnRTdGF0ZSk7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisgICAgaWYgKHNlc3Npb25JZCA8IDApIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisgICAgbUF1ZGlvU2Vzc2lvbklkID0gc2Vzc2lvbklkOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworaW50IE1lZGlhUGxheWVyOjpnZXRBdWRpb1Nlc3Npb25JZCgpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICByZXR1cm4gbUF1ZGlvU2Vzc2lvbklkOworfQorCiB2b2lkIE1lZGlhUGxheWVyOjpub3RpZnkoaW50IG1zZywgaW50IGV4dDEsIGludCBleHQyKQogewogICAgIExPR1YoIm1lc3NhZ2UgcmVjZWl2ZWQgbXNnPSVkLCBleHQxPSVkLCBleHQyPSVkIiwgbXNnLCBleHQxLCBleHQyKTsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9BbmRyb2lkLm1rIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKaW5kZXggY2Y5N2IyMy4uOGYwMTBjOSAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKQEAgLTExLDIxICsxMSwxMSBAQAogICAgIE1lZGlhUGxheWVyU2VydmljZS5jcHAgICAgICBcCiAgICAgTWV0YWRhdGFSZXRyaWV2ZXJDbGllbnQuY3BwIFwKICAgICBUZXN0UGxheWVyU3R1Yi5jcHAgICAgICAgICAgXAotICAgIFZvcmJpc1BsYXllci5jcHAgICAgICAgICAgICBcCi0gICAgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuY3BwIFwKLSAgICBNaWRpTWV0YWRhdGFSZXRyaWV2ZXIuY3BwIAlcCi0gICAgTWlkaUZpbGUuY3BwCi0KLWlmZXEgKCQoQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUKSx0cnVlKQotCi1MT0NBTF9TUkNfRklMRVMgKz0gICAgICAgICAgICAgICAgICAgICAgXAotICAgIFN0YWdlZnJpZ2h0UGxheWVyLmNwcCAgICAgICAgICAgICAgIFwKKyAgICBNaWRpTWV0YWRhdGFSZXRyaWV2ZXIuY3BwICAgXAorICAgIE1pZGlGaWxlLmNwcCAgICAgICAgICAgICAgICBcCisgICAgU3RhZ2VmcmlnaHRQbGF5ZXIuY3BwICAgICAgIFwKICAgICBTdGFnZWZyaWdodFJlY29yZGVyLmNwcAogCi1MT0NBTF9DRkxBR1MgKz0gLURCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQ9MQotCi1lbmRpZgotCiBpZmVxICgkKFRBUkdFVF9PUyktJChUQVJHRVRfU0lNVUxBVE9SKSxsaW51eC10cnVlKQogTE9DQUxfTERMSUJTICs9IC1sZGwgLWxwdGhyZWFkCiBlbmRpZgpAQCAtMzcsNiArMjcsNyBAQAogCWxpYnZvcmJpc2lkZWMgICAgICAgICAJCQlcCiAJbGlic29uaXZveCAgICAgICAgICAgIAkJCVwKIAlsaWJtZWRpYSAgICAgICAgICAgICAgCQkJXAorCWxpYmNhbWVyYV9jbGllbnQgICAgICAJCQlcCiAJbGliYW5kcm9pZF9ydW50aW1lICAgIAkJCVwKIAlsaWJzdGFnZWZyaWdodCAgICAgICAgCQkJXAogCWxpYnN0YWdlZnJpZ2h0X29teCAgICAJCQlcCmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFQbGF5ZXJTZXJ2aWNlLmNwcCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVBsYXllclNlcnZpY2UuY3BwCmluZGV4IDNlMWY0YTUuLjgyZDVjMTQgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVBsYXllclNlcnZpY2UuY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVBsYXllclNlcnZpY2UuY3BwCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiTWV0YWRhdGFSZXRyaWV2ZXJDbGllbnQuaCIKIAogI2luY2x1ZGUgIk1pZGlGaWxlLmgiCi0jaW5jbHVkZSAiVm9yYmlzUGxheWVyLmgiCiAjaW5jbHVkZSA8bWVkaWEvUFZQbGF5ZXIuaD4KICNpbmNsdWRlICJUZXN0UGxheWVyU3R1Yi5oIgogI2luY2x1ZGUgIlN0YWdlZnJpZ2h0UGxheWVyLmgiCkBAIC0xOTcsOCArMTk2LDYgQEAKICAgICAgICAgeyIucnR0dGwiLCBTT05JVk9YX1BMQVlFUn0sCiAgICAgICAgIHsiLnJ0eCIsIFNPTklWT1hfUExBWUVSfSwKICAgICAgICAgeyIub3RhIiwgU09OSVZPWF9QTEFZRVJ9LAotICAgICAgICB7Ii5vZ2ciLCBWT1JCSVNfUExBWUVSfSwKLSAgICAgICAgeyIub2dhIiwgVk9SQklTX1BMQVlFUn0sCiAjaWZuZGVmIE5PX09QRU5DT1JFCiAgICAgICAgIHsiLndtYSIsIFBWX1BMQVlFUn0sCiAgICAgICAgIHsiLndtdiIsIFBWX1BMQVlFUn0sCkBAIC0yMjgsMTQgKzIyNSwxMCBAQAogCiBzcDxJTWVkaWFSZWNvcmRlcj4gTWVkaWFQbGF5ZXJTZXJ2aWNlOjpjcmVhdGVNZWRpYVJlY29yZGVyKHBpZF90IHBpZCkKIHsKLSNpZm5kZWYgTk9fT1BFTkNPUkUKICAgICBzcDxNZWRpYVJlY29yZGVyQ2xpZW50PiByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyQ2xpZW50KHRoaXMsIHBpZCk7CiAgICAgd3A8TWVkaWFSZWNvcmRlckNsaWVudD4gdyA9IHJlY29yZGVyOwogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKICAgICBtTWVkaWFSZWNvcmRlckNsaWVudHMuYWRkKHcpOwotI2Vsc2UKLSAgICBzcDxNZWRpYVJlY29yZGVyQ2xpZW50PiByZWNvcmRlciA9IE5VTEw7Ci0jZW5kaWYKICAgICBMT0dWKCJDcmVhdGUgbmV3IG1lZGlhIHJlY29yZGVyIGNsaWVudCBmcm9tIHBpZCAlZCIsIHBpZCk7CiAgICAgcmV0dXJuIHJlY29yZGVyOwogfQpAQCAtMjU2LDExICsyNDksMTIgQEAKIAogc3A8SU1lZGlhUGxheWVyPiBNZWRpYVBsYXllclNlcnZpY2U6OmNyZWF0ZSgKICAgICAgICAgcGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMpCisgICAgICAgIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzLCBpbnQgYXVkaW9TZXNzaW9uSWQpCiB7CiAgICAgaW50MzJfdCBjb25uSWQgPSBhbmRyb2lkX2F0b21pY19pbmMoJm1OZXh0Q29ubklkKTsKLSAgICBzcDxDbGllbnQ+IGMgPSBuZXcgQ2xpZW50KHRoaXMsIHBpZCwgY29ubklkLCBjbGllbnQpOwotICAgIExPR1YoIkNyZWF0ZSBuZXcgY2xpZW50KCVkKSBmcm9tIHBpZCAlZCwgdXJsPSVzLCBjb25uSWQ9JWQiLCBjb25uSWQsIHBpZCwgdXJsLCBjb25uSWQpOworICAgIHNwPENsaWVudD4gYyA9IG5ldyBDbGllbnQodGhpcywgcGlkLCBjb25uSWQsIGNsaWVudCwgYXVkaW9TZXNzaW9uSWQpOworICAgIExPR1YoIkNyZWF0ZSBuZXcgY2xpZW50KCVkKSBmcm9tIHBpZCAlZCwgdXJsPSVzLCBjb25uSWQ9JWQsIGF1ZGlvU2Vzc2lvbklkPSVkIiwKKyAgICAgICAgICAgIGNvbm5JZCwgcGlkLCB1cmwsIGNvbm5JZCwgYXVkaW9TZXNzaW9uSWQpOwogICAgIGlmIChOT19FUlJPUiAhPSBjLT5zZXREYXRhU291cmNlKHVybCwgaGVhZGVycykpCiAgICAgewogICAgICAgICBjLmNsZWFyKCk7CkBAIC0yNzMsMTIgKzI2NywxMiBAQAogfQogCiBzcDxJTWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVyU2VydmljZTo6Y3JlYXRlKHBpZF90IHBpZCwgY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgY2xpZW50LAotICAgICAgICBpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCkKKyAgICAgICAgaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgsIGludCBhdWRpb1Nlc3Npb25JZCkKIHsKICAgICBpbnQzMl90IGNvbm5JZCA9IGFuZHJvaWRfYXRvbWljX2luYygmbU5leHRDb25uSWQpOwotICAgIHNwPENsaWVudD4gYyA9IG5ldyBDbGllbnQodGhpcywgcGlkLCBjb25uSWQsIGNsaWVudCk7Ci0gICAgTE9HVigiQ3JlYXRlIG5ldyBjbGllbnQoJWQpIGZyb20gcGlkICVkLCBmZD0lZCwgb2Zmc2V0PSVsbGQsIGxlbmd0aD0lbGxkIiwKLSAgICAgICAgICAgIGNvbm5JZCwgcGlkLCBmZCwgb2Zmc2V0LCBsZW5ndGgpOworICAgIHNwPENsaWVudD4gYyA9IG5ldyBDbGllbnQodGhpcywgcGlkLCBjb25uSWQsIGNsaWVudCwgYXVkaW9TZXNzaW9uSWQpOworICAgIExPR1YoIkNyZWF0ZSBuZXcgY2xpZW50KCVkKSBmcm9tIHBpZCAlZCwgZmQ9JWQsIG9mZnNldD0lbGxkLCBsZW5ndGg9JWxsZCwgYXVkaW9TZXNzaW9uSWQ9JWQiLAorICAgICAgICAgICAgY29ubklkLCBwaWQsIGZkLCBvZmZzZXQsIGxlbmd0aCwgYXVkaW9TZXNzaW9uSWQpOwogICAgIGlmIChOT19FUlJPUiAhPSBjLT5zZXREYXRhU291cmNlKGZkLCBvZmZzZXQsIGxlbmd0aCkpIHsKICAgICAgICAgYy5jbGVhcigpOwogICAgIH0gZWxzZSB7CkBAIC02MTMsNyArNjA3LDcgQEAKIH0KIAogTWVkaWFQbGF5ZXJTZXJ2aWNlOjpDbGllbnQ6OkNsaWVudChjb25zdCBzcDxNZWRpYVBsYXllclNlcnZpY2U+JiBzZXJ2aWNlLCBwaWRfdCBwaWQsCi0gICAgICAgIGludDMyX3QgY29ubklkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQpCisgICAgICAgIGludDMyX3QgY29ubklkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGludCBhdWRpb1Nlc3Npb25JZCkKIHsKICAgICBMT0dWKCJDbGllbnQoJWQpIGNvbnN0cnVjdG9yIiwgY29ubklkKTsKICAgICBtUGlkID0gcGlkOwpAQCAtNjIyLDYgKzYxNiw4IEBACiAgICAgbUNsaWVudCA9IGNsaWVudDsKICAgICBtTG9vcCA9IGZhbHNlOwogICAgIG1TdGF0dXMgPSBOT19JTklUOworICAgIG1BdWRpb1Nlc3Npb25JZCA9IGF1ZGlvU2Vzc2lvbklkOworCiAjaWYgQ0FMTEJBQ0tfQU5UQUdPTklaRVIKICAgICBMT0dEKCJjcmVhdGUgQW50YWdvbml6ZXIiKTsKICAgICBtQW50YWdvbml6ZXIgPSBuZXcgQW50YWdvbml6ZXIobm90aWZ5LCB0aGlzKTsKQEAgLTY2NywzNyArNjYzLDkgQEAKIH0KIAogc3RhdGljIHBsYXllcl90eXBlIGdldERlZmF1bHRQbGF5ZXJUeXBlKCkgewotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAotICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKLSAgICBpZiAocHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5lbmFibGUtcGxheWVyIiwgdmFsdWUsIE5VTEwpCi0gICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgewotICAgICAgICByZXR1cm4gU1RBR0VGUklHSFRfUExBWUVSOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFBWX1BMQVlFUjsKKyAgICByZXR1cm4gU1RBR0VGUklHSFRfUExBWUVSOwogfQogCi0vLyBCeSBkZWZhdWx0IHdlIHVzZSB0aGUgVk9SQklTX1BMQVlFUiBmb3Igdm9yYmlzIHBsYXliYWNrIChkdWghKSwKLS8vIGJ1dCBpZiB0aGUgbWFnaWMgcHJvcGVydHkgaXMgc2V0IHdlIHdpbGwgdXNlIG91ciBuZXcgZXhwZXJpbWVudGFsCi0vLyBzdGFnZWZyaWdodCBjb2RlIGluc3RlYWQuCi1zdGF0aWMgcGxheWVyX3R5cGUgT3ZlcnJpZGVTdGFnZWZyaWdodEZvclZvcmJpcyhwbGF5ZXJfdHlwZSBwbGF5ZXIpIHsKLSAgICBpZiAocGxheWVyICE9IFZPUkJJU19QTEFZRVIpIHsKLSAgICAgICAgcmV0dXJuIHBsYXllcjsKLSAgICB9Ci0KLSNpZiBCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQKLSAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07Ci0gICAgaWYgKHByb3BlcnR5X2dldCgibWVkaWEuc3RhZ2VmcmlnaHQuZW5hYmxlLXZvcmJpcyIsIHZhbHVlLCBOVUxMKQotICAgICAgICAmJiAoIXN0cmNtcCh2YWx1ZSwgIjEiKSB8fCAhc3RyY21wKHZhbHVlLCAidHJ1ZSIpKSkgewotICAgICAgICByZXR1cm4gU1RBR0VGUklHSFRfUExBWUVSOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFZPUkJJU19QTEFZRVI7Ci19Ci0KLQogcGxheWVyX3R5cGUgZ2V0UGxheWVyVHlwZShpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBjaGFyIGJ1ZlsyMF07CkBAIC03MDksNyArNjc3LDcgQEAKIAogICAgIC8vIE9nZyB2b3JiaXM/CiAgICAgaWYgKGlkZW50ID09IDB4NTM2NzY3NGYpIC8vICdPZ2dTJwotICAgICAgICByZXR1cm4gT3ZlcnJpZGVTdGFnZWZyaWdodEZvclZvcmJpcyhWT1JCSVNfUExBWUVSKTsKKyAgICAgICAgcmV0dXJuIFNUQUdFRlJJR0hUX1BMQVlFUjsKIAogI2lmbmRlZiBOT19PUEVOQ09SRQogICAgIGlmIChpZGVudCA9PSAweDc1YjIyNjMwKSB7CkBAIC03NDUsNDEgKzcxMywyOCBAQAogICAgICAgICByZXR1cm4gVEVTVF9QTEFZRVI7CiAgICAgfQogCi0gICAgYm9vbCB1c2VTdGFnZWZyaWdodEZvckhUVFAgPSBmYWxzZTsKLSAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07Ci0gICAgaWYgKHByb3BlcnR5X2dldCgibWVkaWEuc3RhZ2VmcmlnaHQuZW5hYmxlLWh0dHAiLCB2YWx1ZSwgTlVMTCkKLSAgICAgICAgJiYgKCFzdHJjbXAodmFsdWUsICIxIikgfHwgIXN0cmNhc2VjbXAodmFsdWUsICJ0cnVlIikpKSB7Ci0gICAgICAgIHVzZVN0YWdlZnJpZ2h0Rm9ySFRUUCA9IHRydWU7Ci0gICAgfQotCiAgICAgLy8gdXNlIE1pZGlGaWxlIGZvciBNSURJIGV4dGVuc2lvbnMKICAgICBpbnQgbGVuVVJMID0gc3RybGVuKHVybCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORUxFTShGSUxFX0VYVFMpOyArK2kpIHsKICAgICAgICAgaW50IGxlbiA9IHN0cmxlbihGSUxFX0VYVFNbaV0uZXh0ZW5zaW9uKTsKICAgICAgICAgaW50IHN0YXJ0ID0gbGVuVVJMIC0gbGVuOwogICAgICAgICBpZiAoc3RhcnQgPiAwKSB7Ci0gICAgICAgICAgICBpZiAoIXN0cm5jbXAodXJsICsgc3RhcnQsIEZJTEVfRVhUU1tpXS5leHRlbnNpb24sIGxlbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoRklMRV9FWFRTW2ldLnBsYXllcnR5cGUgPT0gVk9SQklTX1BMQVlFUgotICAgICAgICAgICAgICAgICAgICAmJiAhc3RybmNhc2VjbXAodXJsLCAiaHR0cDovLyIsIDcpCi0gICAgICAgICAgICAgICAgICAgICYmIHVzZVN0YWdlZnJpZ2h0Rm9ySFRUUCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBR0VGUklHSFRfUExBWUVSOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gT3ZlcnJpZGVTdGFnZWZyaWdodEZvclZvcmJpcyhGSUxFX0VYVFNbaV0ucGxheWVydHlwZSk7CisgICAgICAgICAgICBpZiAoIXN0cm5jYXNlY21wKHVybCArIHN0YXJ0LCBGSUxFX0VYVFNbaV0uZXh0ZW5zaW9uLCBsZW4pKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfRVhUU1tpXS5wbGF5ZXJ0eXBlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFzdHJuY2FzZWNtcCh1cmwsICJodHRwOi8vIiwgNykpIHsKLSAgICAgICAgaWYgKCF1c2VTdGFnZWZyaWdodEZvckhUVFApIHsKKyAgICBpZiAoIXN0cm5jYXNlY21wKHVybCwgInJ0c3A6Ly8iLCA3KSkgeworICAgICAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07CisgICAgICAgIGlmICghcHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5lbmFibGUtcnRzcCIsIHZhbHVlLCBOVUxMKQorICAgICAgICAgICAgfHwgKHN0cmNtcCh2YWx1ZSwgIjEiKSAmJiBzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgeworICAgICAgICAgICAgLy8gRm9yIG5vdywgd2UncmUgZ29pbmcgdG8gdXNlIFBWIGZvciBydHNwLWJhc2VkIHBsYXliYWNrCisgICAgICAgICAgICAvLyBieSBkZWZhdWx0IHVudGlsIHdlIGNhbiBjbGVhciB1cCBhIGZldyBtb3JlIGlzc3Vlcy4KICAgICAgICAgICAgIHJldHVybiBQVl9QTEFZRVI7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBVc2UgUFZfUExBWUVSIGZvciBydHNwIGZvciBub3cKLSAgICBpZiAoIXN0cm5jYXNlY21wKHVybCwgInJ0c3A6Ly8iLCA3KSkgewotICAgICAgICByZXR1cm4gUFZfUExBWUVSOwotICAgIH0KLQogICAgIHJldHVybiBnZXREZWZhdWx0UGxheWVyVHlwZSgpOwogfQogCkBAIC03OTgsMTYgKzc1MywxMCBAQAogICAgICAgICAgICAgTE9HVigiIGNyZWF0ZSBNaWRpRmlsZSIpOwogICAgICAgICAgICAgcCA9IG5ldyBNaWRpRmlsZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVk9SQklTX1BMQVlFUjoKLSAgICAgICAgICAgIExPR1YoIiBjcmVhdGUgVm9yYmlzUGxheWVyIik7Ci0gICAgICAgICAgICBwID0gbmV3IFZvcmJpc1BsYXllcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0jaWYgQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUCiAgICAgICAgIGNhc2UgU1RBR0VGUklHSFRfUExBWUVSOgogICAgICAgICAgICAgTE9HVigiIGNyZWF0ZSBTdGFnZWZyaWdodFBsYXllciIpOwogICAgICAgICAgICAgcCA9IG5ldyBTdGFnZWZyaWdodFBsYXllcjsKICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgICAgIGNhc2UgVEVTVF9QTEFZRVI6CiAgICAgICAgICAgICBMT0dWKCJDcmVhdGUgVGVzdCBQbGF5ZXIgc3R1YiIpOwogICAgICAgICAgICAgcCA9IG5ldyBUZXN0UGxheWVyU3R1YigpOwpAQCAtODcwLDcgKzgxOSw3IEBACiAgICAgICAgIGlmIChwID09IE5VTEwpIHJldHVybiBOT19JTklUOwogCiAgICAgICAgIGlmICghcC0+aGFyZHdhcmVPdXRwdXQoKSkgewotICAgICAgICAgICAgbUF1ZGlvT3V0cHV0ID0gbmV3IEF1ZGlvT3V0cHV0KCk7CisgICAgICAgICAgICBtQXVkaW9PdXRwdXQgPSBuZXcgQXVkaW9PdXRwdXQobUF1ZGlvU2Vzc2lvbklkKTsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lZGlhUGxheWVySW50ZXJmYWNlKj4ocC5nZXQoKSktPnNldEF1ZGlvU2luayhtQXVkaW9PdXRwdXQpOwogICAgICAgICB9CiAKQEAgLTkyMCw3ICs4NjksNyBAQAogICAgIGlmIChwID09IE5VTEwpIHJldHVybiBOT19JTklUOwogCiAgICAgaWYgKCFwLT5oYXJkd2FyZU91dHB1dCgpKSB7Ci0gICAgICAgIG1BdWRpb091dHB1dCA9IG5ldyBBdWRpb091dHB1dCgpOworICAgICAgICBtQXVkaW9PdXRwdXQgPSBuZXcgQXVkaW9PdXRwdXQobUF1ZGlvU2Vzc2lvbklkKTsKICAgICAgICAgc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJJbnRlcmZhY2UqPihwLmdldCgpKS0+c2V0QXVkaW9TaW5rKG1BdWRpb091dHB1dCk7CiAgICAgfQogCkBAIC0xNDExLDkgKzEzNjAsMTEgQEAKIAogI3VuZGVmIExPR19UQUcKICNkZWZpbmUgTE9HX1RBRyAiQXVkaW9TaW5rIgotTWVkaWFQbGF5ZXJTZXJ2aWNlOjpBdWRpb091dHB1dDo6QXVkaW9PdXRwdXQoKQorTWVkaWFQbGF5ZXJTZXJ2aWNlOjpBdWRpb091dHB1dDo6QXVkaW9PdXRwdXQoaW50IHNlc3Npb25JZCkKICAgICA6IG1DYWxsYmFjayhOVUxMKSwKLSAgICAgIG1DYWxsYmFja0Nvb2tpZShOVUxMKSB7CisgICAgICBtQ2FsbGJhY2tDb29raWUoTlVMTCksCisgICAgICBtU2Vzc2lvbklkKHNlc3Npb25JZCkgeworICAgIExPR1YoIkF1ZGlvT3V0cHV0KCVkKSIsIHNlc3Npb25JZCk7CiAgICAgbVRyYWNrID0gMDsKICAgICBtU3RyZWFtVHlwZSA9IEF1ZGlvU3lzdGVtOjpNVVNJQzsKICAgICBtTGVmdFZvbHVtZSA9IDEuMDsKQEAgLTE1MDMsNyArMTQ1NCw3IEBACiAgICAgICAgIGJ1ZmZlckNvdW50ID0gbU1pbkJ1ZmZlckNvdW50OwogCiAgICAgfQotICAgIExPR1YoIm9wZW4oJXUsICVkLCAlZCwgJWQpIiwgc2FtcGxlUmF0ZSwgY2hhbm5lbENvdW50LCBmb3JtYXQsIGJ1ZmZlckNvdW50KTsKKyAgICBMT0dWKCJvcGVuKCV1LCAlZCwgJWQsICVkLCAlZCkiLCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIGZvcm1hdCwgYnVmZmVyQ291bnQsbVNlc3Npb25JZCk7CiAgICAgaWYgKG1UcmFjaykgY2xvc2UoKTsKICAgICBpbnQgYWZTYW1wbGVSYXRlOwogICAgIGludCBhZkZyYW1lQ291bnQ7CkBAIC0xNTI4LDE0ICsxNDc5LDIxIEBACiAgICAgICAgICAgICAgICAgZnJhbWVDb3VudCwKICAgICAgICAgICAgICAgICAwIC8qIGZsYWdzICovLAogICAgICAgICAgICAgICAgIENhbGxiYWNrV3JhcHBlciwKLSAgICAgICAgICAgICAgICB0aGlzKTsKKyAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgbVNlc3Npb25JZCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdCA9IG5ldyBBdWRpb1RyYWNrKAogICAgICAgICAgICAgICAgIG1TdHJlYW1UeXBlLAogICAgICAgICAgICAgICAgIHNhbXBsZVJhdGUsCiAgICAgICAgICAgICAgICAgZm9ybWF0LAogICAgICAgICAgICAgICAgIChjaGFubmVsQ291bnQgPT0gMikgPyBBdWRpb1N5c3RlbTo6Q0hBTk5FTF9PVVRfU1RFUkVPIDogQXVkaW9TeXN0ZW06OkNIQU5ORUxfT1VUX01PTk8sCi0gICAgICAgICAgICAgICAgZnJhbWVDb3VudCk7CisgICAgICAgICAgICAgICAgZnJhbWVDb3VudCwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIG1TZXNzaW9uSWQpOwogICAgIH0KIAogICAgIGlmICgodCA9PSAwKSB8fCAodC0+aW5pdENoZWNrKCkgIT0gTk9fRVJST1IpKSB7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFQbGF5ZXJTZXJ2aWNlLmggYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFQbGF5ZXJTZXJ2aWNlLmgKaW5kZXggMjQwOGM2Mi4uNjBiOTFjNiAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01lZGlhUGxheWVyU2VydmljZS5oCisrKyBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVBsYXllclNlcnZpY2UuaApAQCAtNjUsNyArNjUsNyBAQAogICAgIGNsYXNzIEF1ZGlvT3V0cHV0IDogcHVibGljIE1lZGlhUGxheWVyQmFzZTo6QXVkaW9TaW5rCiAgICAgewogICAgIHB1YmxpYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9PdXRwdXQoaW50IHNlc3Npb25JZCk7CiAgICAgICAgIHZpcnR1YWwgICAgICAgICAgICAgICAgIH5BdWRpb091dHB1dCgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCAgICAgICAgICAgIHJlYWR5KCkgY29uc3QgeyByZXR1cm4gbVRyYWNrICE9IE5VTEw7IH0KQEAgLTEwOCw2ICsxMDgsNyBAQAogICAgICAgICBmbG9hdCAgICAgICAgICAgICAgICAgICBtUmlnaHRWb2x1bWU7CiAgICAgICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgIG1Nc2Vjc1BlckZyYW1lOwogICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtTGF0ZW5jeTsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbVNlc3Npb25JZDsKIAogICAgICAgICBzdGF0aWMgYm9vbCAgICAgICAgICAgICBtSXNPbkVtdWxhdG9yOwogICAgICAgICBzdGF0aWMgaW50ICAgICAgICAgICAgICBtTWluQnVmZmVyQ291bnQ7ICAvLyAxMiBmb3IgZW11bGF0b3I7IG90aGVyd2lzZSA0CkBAIC0xODUsOSArMTg2LDkgQEAKICAgICAvLyBIb3VzZSBrZWVwaW5nIGZvciBtZWRpYSBwbGF5ZXIgY2xpZW50cwogICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiAgICBjcmVhdGUoCiAgICAgICAgICAgICBwaWRfdCBwaWQsIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCwgY29uc3QgY2hhciogdXJsLAotICAgICAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMpOworICAgICAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMsIGludCBhdWRpb1Nlc3Npb25JZCk7CiAKLSAgICB2aXJ0dWFsIHNwPElNZWRpYVBsYXllcj4gICAgY3JlYXRlKHBpZF90IHBpZCwgY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgY2xpZW50LCBpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCk7CisgICAgdmlydHVhbCBzcDxJTWVkaWFQbGF5ZXI+ICAgIGNyZWF0ZShwaWRfdCBwaWQsIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCwgaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgsIGludCBhdWRpb1Nlc3Npb25JZCk7CiAgICAgdmlydHVhbCBzcDxJTWVtb3J5PiAgICAgICAgIGRlY29kZShjb25zdCBjaGFyKiB1cmwsIHVpbnQzMl90ICpwU2FtcGxlUmF0ZSwgaW50KiBwTnVtQ2hhbm5lbHMsIGludCogcEZvcm1hdCk7CiAgICAgdmlydHVhbCBzcDxJTWVtb3J5PiAgICAgICAgIGRlY29kZShpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCwgdWludDMyX3QgKnBTYW1wbGVSYXRlLCBpbnQqIHBOdW1DaGFubmVscywgaW50KiBwRm9ybWF0KTsKICAgICB2aXJ0dWFsIHNwPElNZW1vcnk+ICAgICAgICAgc25vb3AoKTsKQEAgLTIzNywxMiArMjM4LDE1IEBACiAgICAgICAgICAgICAgICAgcGlkX3QgICAgICAgICAgIHBpZCgpIGNvbnN0IHsgcmV0dXJuIG1QaWQ7IH0KICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICAgICAgZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpIGNvbnN0OwogCisgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGdldEF1ZGlvU2Vzc2lvbklkKCkgeyByZXR1cm4gbUF1ZGlvU2Vzc2lvbklkOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJTZXJ2aWNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGllbnQoIGNvbnN0IHNwPE1lZGlhUGxheWVyU2VydmljZT4mIHNlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgcGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY29ubklkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhdWRpb1Nlc3Npb25JZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudCgpOwogICAgICAgICB2aXJ0dWFsICAgICAgICAgICAgICAgICB+Q2xpZW50KCk7CiAKQEAgLTI3MSw2ICsyNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICAgICAgbVN0YXR1czsKICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIG1Mb29wOwogICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgbUNvbm5JZDsKKyAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1BdWRpb1Nlc3Npb25JZDsKIAogICAgICAgICAvLyBNZXRhZGF0YSBmaWx0ZXJzLgogICAgICAgICBtZWRpYTo6TWV0YWRhdGE6OkZpbHRlciBtTWV0YWRhdGFBbGxvdzsgIC8vIHByb3RlY3RlZCBieSBtTG9jawpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01lZGlhUmVjb3JkZXJDbGllbnQuY3BwIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01lZGlhUmVjb3JkZXJDbGllbnQuY3BwCmluZGV4IGM1MDc2NjkuLjgwYjFjZmQgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVJlY29yZGVyQ2xpZW50LmNwcAorKysgYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFSZWNvcmRlckNsaWVudC5jcHAKQEAgLTI5NCwxMyArMjk0LDExIEBACiAgICAgTE9HVigiQ2xpZW50IGNvbnN0cnVjdG9yIik7CiAgICAgbVBpZCA9IHBpZDsKIAotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAogICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKICAgICBpZiAocHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5lbmFibGUtcmVjb3JkIiwgdmFsdWUsIE5VTEwpCiAgICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgewogICAgICAgICBtUmVjb3JkZXIgPSBuZXcgU3RhZ2VmcmlnaHRSZWNvcmRlcjsKICAgICB9IGVsc2UKLSNlbmRpZgogI2lmbmRlZiBOT19PUEVOQ09SRQogICAgIHsKICAgICAgICAgbVJlY29yZGVyID0gbmV3IFBWTWVkaWFSZWNvcmRlcigpOwpAQCAtMzIwLDcgKzMxOCw3IEBACiAgICAgcmVsZWFzZSgpOwogfQogCi1zdGF0dXNfdCBNZWRpYVJlY29yZGVyQ2xpZW50OjpzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBsaXN0ZW5lcikKK3N0YXR1c190IE1lZGlhUmVjb3JkZXJDbGllbnQ6OnNldExpc3RlbmVyKGNvbnN0IHNwPElNZWRpYVJlY29yZGVyQ2xpZW50PiYgbGlzdGVuZXIpCiB7CiAgICAgTE9HVigic2V0TGlzdGVuZXIiKTsKICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFSZWNvcmRlckNsaWVudC5oIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01lZGlhUmVjb3JkZXJDbGllbnQuaAppbmRleCBlMDczMDZiLi5iNTNkOTUwIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFSZWNvcmRlckNsaWVudC5oCisrKyBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVJlY29yZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgc2V0VmlkZW9TaXplKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgIHNldFZpZGVvRnJhbWVSYXRlKGludCBmcmFtZXNfcGVyX3NlY29uZCk7CiAgICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgIHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYgcGFyYW1zKTsKLSAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgbGlzdGVuZXIpOworICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4mIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgcHJlcGFyZSgpOwogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICBnZXRNYXhBbXBsaXR1ZGUoaW50KiBtYXgpOwogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICBzdGFydCgpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01ldGFkYXRhUmV0cmlldmVyQ2xpZW50LmNwcCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZXRhZGF0YVJldHJpZXZlckNsaWVudC5jcHAKaW5kZXggNTUwYjg0ZGYuLmNhMjI5ZmEgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZXRhZGF0YVJldHJpZXZlckNsaWVudC5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01ldGFkYXRhUmV0cmlldmVyQ2xpZW50LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgPG1lZGlhL01lZGlhUGxheWVySW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvUFZNZXRhZGF0YVJldHJpZXZlci5oPgogI2luY2x1ZGUgPHByaXZhdGUvbWVkaWEvVmlkZW9GcmFtZS5oPgotI2luY2x1ZGUgIlZvcmJpc01ldGFkYXRhUmV0cmlldmVyLmgiCiAjaW5jbHVkZSAiTWlkaU1ldGFkYXRhUmV0cmlldmVyLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFSZXRyaWV2ZXJDbGllbnQuaCIKICNpbmNsdWRlICJTdGFnZWZyaWdodE1ldGFkYXRhUmV0cmlldmVyLmgiCkBAIC0xMDMsMzAgKzEwMiwxNyBAQAogewogICAgIHNwPE1lZGlhTWV0YWRhdGFSZXRyaWV2ZXJCYXNlPiBwOwogICAgIHN3aXRjaCAocGxheWVyVHlwZSkgewotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAogICAgICAgICBjYXNlIFNUQUdFRlJJR0hUX1BMQVlFUjoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciB2YWx1ZVtQUk9QRVJUWV9WQUxVRV9NQVhdOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5X2dldCgibWVkaWEuc3RhZ2VmcmlnaHQuZW5hYmxlLW1ldGEiLCB2YWx1ZSwgTlVMTCkKLSAgICAgICAgICAgICAgICAmJiAoIXN0cmNtcCh2YWx1ZSwgIjEiKSB8fCAhc3RyY2FzZWNtcCh2YWx1ZSwgInRydWUiKSkpIHsKLSAgICAgICAgICAgICAgICBMT0dWKCJjcmVhdGUgU3RhZ2VmcmlnaHRNZXRhZGF0YVJldHJpZXZlciIpOwotICAgICAgICAgICAgICAgIHAgPSBuZXcgU3RhZ2VmcmlnaHRNZXRhZGF0YVJldHJpZXZlcjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCisgICAgICAgICAgICBwID0gbmV3IFN0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXI7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotI2VuZGlmCiAjaWZuZGVmIE5PX09QRU5DT1JFCiAgICAgICAgIGNhc2UgUFZfUExBWUVSOgogICAgICAgICAgICAgTE9HVigiY3JlYXRlIHB2IG1ldGFkYXRhIHJldHJpZXZlciIpOwogICAgICAgICAgICAgcCA9IG5ldyBQVk1ldGFkYXRhUmV0cmlldmVyKCk7CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgotICAgICAgICBjYXNlIFZPUkJJU19QTEFZRVI6Ci0gICAgICAgICAgICBMT0dWKCJjcmVhdGUgdm9yYmlzIG1ldGFkYXRhIHJldHJpZXZlciIpOwotICAgICAgICAgICAgcCA9IG5ldyBWb3JiaXNNZXRhZGF0YVJldHJpZXZlcigpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU09OSVZPWF9QTEFZRVI6CiAgICAgICAgICAgICBMT0dWKCJjcmVhdGUgbWlkaSBtZXRhZGF0YSByZXRyaWV2ZXIiKTsKICAgICAgICAgICAgIHAgPSBuZXcgTWlkaU1ldGFkYXRhUmV0cmlldmVyKCk7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvU3RhZ2VmcmlnaHRSZWNvcmRlci5jcHAgYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvU3RhZ2VmcmlnaHRSZWNvcmRlci5jcHAKaW5kZXggNTMxZmQxMS4uNTBmNzRmMiAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1N0YWdlZnJpZ2h0UmVjb3JkZXIuY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9TdGFnZWZyaWdodFJlY29yZGVyLmNwcApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAiU3RhZ2VmcmlnaHRSZWNvcmRlci5oIgogCisjaW5jbHVkZSA8YmluZGVyL0lQQ1RocmVhZFN0YXRlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9BTVJXcml0ZXIuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9DYW1lcmFTb3VyY2UuaD4KQEAgLTI5LDE3ICszMCwyOCBAQAogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvT01YQ2xpZW50Lmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvT01YQ29kZWMuaD4KKyNpbmNsdWRlIDxtZWRpYS9NZWRpYVByb2ZpbGVzLmg+CiAjaW5jbHVkZSA8Y2FtZXJhL0lDYW1lcmEuaD4KKyNpbmNsdWRlIDxjYW1lcmEvQ2FtZXJhLmg+CisjaW5jbHVkZSA8Y2FtZXJhL0NhbWVyYVBhcmFtZXRlcnMuaD4KICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgogI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAotU3RhZ2VmcmlnaHRSZWNvcmRlcjo6U3RhZ2VmcmlnaHRSZWNvcmRlcigpIHsKK1N0YWdlZnJpZ2h0UmVjb3JkZXI6OlN0YWdlZnJpZ2h0UmVjb3JkZXIoKQorICAgIDogbVdyaXRlcihOVUxMKSwKKyAgICAgIG1PdXRwdXRGZCgtMSkgeworCisgICAgTE9HVigiQ29uc3RydWN0b3IiKTsKICAgICByZXNldCgpOwogfQogCiBTdGFnZWZyaWdodFJlY29yZGVyOjp+U3RhZ2VmcmlnaHRSZWNvcmRlcigpIHsKKyAgICBMT0dWKCJEZXN0cnVjdG9yIik7CiAgICAgc3RvcCgpOwogCiAgICAgaWYgKG1PdXRwdXRGZCA+PSAwKSB7CkBAIC00OSw0MCArNjEsMTAzIEBACiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OmluaXQoKSB7CisgICAgTE9HVigiaW5pdCIpOwogICAgIHJldHVybiBPSzsKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0QXVkaW9Tb3VyY2UoYXVkaW9fc291cmNlIGFzKSB7Ci0gICAgbUF1ZGlvU291cmNlID0gYXM7CisgICAgTE9HVigic2V0QXVkaW9Tb3VyY2U6ICVkIiwgYXMpOworICAgIGlmIChhcyA8IEFVRElPX1NPVVJDRV9ERUZBVUxUIHx8CisgICAgICAgIGFzID49IEFVRElPX1NPVVJDRV9MSVNUX0VORCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIGF1ZGlvIHNvdXJjZTogJWQiLCBhcyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgaWYgKGFzID09IEFVRElPX1NPVVJDRV9ERUZBVUxUKSB7CisgICAgICAgIG1BdWRpb1NvdXJjZSA9IEFVRElPX1NPVVJDRV9NSUM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbUF1ZGlvU291cmNlID0gYXM7CisgICAgfQogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRWaWRlb1NvdXJjZSh2aWRlb19zb3VyY2UgdnMpIHsKLSAgICBtVmlkZW9Tb3VyY2UgPSB2czsKKyAgICBMT0dWKCJzZXRWaWRlb1NvdXJjZTogJWQiLCB2cyk7CisgICAgaWYgKHZzIDwgVklERU9fU09VUkNFX0RFRkFVTFQgfHwKKyAgICAgICAgdnMgPj0gVklERU9fU09VUkNFX0xJU1RfRU5EKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgdmlkZW8gc291cmNlOiAlZCIsIHZzKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBpZiAodnMgPT0gVklERU9fU09VUkNFX0RFRkFVTFQpIHsKKyAgICAgICAgbVZpZGVvU291cmNlID0gVklERU9fU09VUkNFX0NBTUVSQTsKKyAgICB9IGVsc2UgeworICAgICAgICBtVmlkZW9Tb3VyY2UgPSB2czsKKyAgICB9CiAKICAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldE91dHB1dEZvcm1hdChvdXRwdXRfZm9ybWF0IG9mKSB7Ci0gICAgbU91dHB1dEZvcm1hdCA9IG9mOworICAgIExPR1YoInNldE91dHB1dEZvcm1hdDogJWQiLCBvZik7CisgICAgaWYgKG9mIDwgT1VUUFVUX0ZPUk1BVF9ERUZBVUxUIHx8CisgICAgICAgIG9mID49IE9VVFBVVF9GT1JNQVRfTElTVF9FTkQpIHsKKyAgICAgICAgTE9HRSgiSW52YWxpZCBvdXRwdXQgZm9ybWF0OiAlZCIsIG9mKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBpZiAob2YgPT0gT1VUUFVUX0ZPUk1BVF9ERUZBVUxUKSB7CisgICAgICAgIG1PdXRwdXRGb3JtYXQgPSBPVVRQVVRfRk9STUFUX1RIUkVFX0dQUDsKKyAgICB9IGVsc2UgeworICAgICAgICBtT3V0cHV0Rm9ybWF0ID0gb2Y7CisgICAgfQogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRBdWRpb0VuY29kZXIoYXVkaW9fZW5jb2RlciBhZSkgewotICAgIG1BdWRpb0VuY29kZXIgPSBhZTsKKyAgICBMT0dWKCJzZXRBdWRpb0VuY29kZXI6ICVkIiwgYWUpOworICAgIGlmIChhZSA8IEFVRElPX0VOQ09ERVJfREVGQVVMVCB8fAorICAgICAgICBhZSA+PSBBVURJT19FTkNPREVSX0xJU1RfRU5EKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgYXVkaW8gZW5jb2RlcjogJWQiLCBhZSk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgaWYgKGFlID09IEFVRElPX0VOQ09ERVJfREVGQVVMVCkgeworICAgICAgICBtQXVkaW9FbmNvZGVyID0gQVVESU9fRU5DT0RFUl9BTVJfTkI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbUF1ZGlvRW5jb2RlciA9IGFlOworICAgIH0KIAogICAgIHJldHVybiBPSzsKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0VmlkZW9FbmNvZGVyKHZpZGVvX2VuY29kZXIgdmUpIHsKLSAgICBtVmlkZW9FbmNvZGVyID0gdmU7CisgICAgTE9HVigic2V0VmlkZW9FbmNvZGVyOiAlZCIsIHZlKTsKKyAgICBpZiAodmUgPCBWSURFT19FTkNPREVSX0RFRkFVTFQgfHwKKyAgICAgICAgdmUgPj0gVklERU9fRU5DT0RFUl9MSVNUX0VORCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIHZpZGVvIGVuY29kZXI6ICVkIiwgdmUpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIGlmICh2ZSA9PSBWSURFT19FTkNPREVSX0RFRkFVTFQpIHsKKyAgICAgICAgbVZpZGVvRW5jb2RlciA9IFZJREVPX0VOQ09ERVJfSDI2MzsKKyAgICB9IGVsc2UgeworICAgICAgICBtVmlkZW9FbmNvZGVyID0gdmU7CisgICAgfQogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRWaWRlb1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisgICAgTE9HVigic2V0VmlkZW9TaXplOiAlZHglZCIsIHdpZHRoLCBoZWlnaHQpOworICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgdmlkZW8gc2l6ZTogJWR4JWQiLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIG9uIHRoZSBkaW1lbnNpb24gd2lsbCBiZSBwZXJmb3JtZWQgbGF0ZXIKICAgICBtVmlkZW9XaWR0aCA9IHdpZHRoOwogICAgIG1WaWRlb0hlaWdodCA9IGhlaWdodDsKIApAQCAtOTAsMzUgKzE2NSw3MCBAQAogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRWaWRlb0ZyYW1lUmF0ZShpbnQgZnJhbWVzX3Blcl9zZWNvbmQpIHsKKyAgICBMT0dWKCJzZXRWaWRlb0ZyYW1lUmF0ZTogJWQiLCBmcmFtZXNfcGVyX3NlY29uZCk7CisgICAgaWYgKGZyYW1lc19wZXJfc2Vjb25kIDw9IDAgfHwgZnJhbWVzX3Blcl9zZWNvbmQgPiAzMCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIHZpZGVvIGZyYW1lIHJhdGU6ICVkIiwgZnJhbWVzX3Blcl9zZWNvbmQpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIC8vIEFkZGl0aW9uYWwgY2hlY2sgb24gdGhlIGZyYW1lIHJhdGUgd2lsbCBiZSBwZXJmb3JtZWQgbGF0ZXIKICAgICBtRnJhbWVSYXRlID0gZnJhbWVzX3Blcl9zZWNvbmQ7CiAKICAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldENhbWVyYShjb25zdCBzcDxJQ2FtZXJhPiAmY2FtZXJhKSB7Ci0gICAgbUNhbWVyYSA9IGNhbWVyYTsKKyAgICBMT0dWKCJzZXRDYW1lcmEiKTsKKyAgICBpZiAoY2FtZXJhID09IDApIHsKKyAgICAgICAgTE9HRSgiY2FtZXJhIGlzIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICBtRmxhZ3MgJj0gfkZMQUdTX0hPVF9DQU1FUkE7CisgICAgbUNhbWVyYSA9IENhbWVyYTo6Y3JlYXRlKGNhbWVyYSk7CisgICAgaWYgKG1DYW1lcmEgPT0gMCkgeworICAgICAgICBMT0dFKCJVbmFibGUgdG8gY29ubmVjdCB0byBjYW1lcmEiKTsKKyAgICAgICAgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+cmVzdG9yZUNhbGxpbmdJZGVudGl0eSh0b2tlbik7CisgICAgICAgIHJldHVybiAtRUJVU1k7CisgICAgfQorCisgICAgTE9HVigiQ29ubmVjdGVkIHRvIGNhbWVyYSIpOworICAgIGlmIChtQ2FtZXJhLT5wcmV2aWV3RW5hYmxlZCgpKSB7CisgICAgICAgIExPR1YoImNhbWVyYSBpcyBob3QiKTsKKyAgICAgICAgbUZsYWdzIHw9IEZMQUdTX0hPVF9DQU1FUkE7CisgICAgfQorICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOwogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQcmV2aWV3U3VyZmFjZShjb25zdCBzcDxJU3VyZmFjZT4gJnN1cmZhY2UpIHsKKyAgICBMT0dWKCJzZXRQcmV2aWV3U3VyZmFjZTogJXAiLCBzdXJmYWNlLmdldCgpKTsKICAgICBtUHJldmlld1N1cmZhY2UgPSBzdXJmYWNlOwogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRPdXRwdXRGaWxlKGNvbnN0IGNoYXIgKnBhdGgpIHsKKyAgICBMT0dFKCJzZXRPdXRwdXRGaWxlKGNvbnN0IGNoYXIqKSBtdXN0IG5vdCBiZSBjYWxsZWQiKTsKICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBzdXBwb3J0IHRoaXMgYXQgYWxsLCBhcyB0aGUgbWVkaWFfc2VydmVyIHByb2Nlc3MKICAgICAvLyBubyBsb25nZXIgaGFzIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBmaWxlcy4KIAotICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIHJldHVybiAtRVBFUk07CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldE91dHB1dEZpbGUoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpIHsKKyAgICBMT0dWKCJzZXRPdXRwdXRGaWxlOiAlZCwgJWxsZCwgJWxsZCIsIGZkLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgLy8gVGhlc2UgZG9uJ3QgbWFrZSBhbnkgc2Vuc2UsIGRvIHRoZXk/CiAgICAgQ0hFQ0tfRVEob2Zmc2V0LCAwKTsKICAgICBDSEVDS19FUShsZW5ndGgsIDApOwogCisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIGZpbGUgZGVzY3JpcHRvcjogJWQiLCBmZCk7CisgICAgICAgIHJldHVybiAtRUJBREY7CisgICAgfQorCiAgICAgaWYgKG1PdXRwdXRGZCA+PSAwKSB7CiAgICAgICAgIDo6Y2xvc2UobU91dHB1dEZkKTsKICAgICB9CkBAIC0xMjcsMTMgKzIzNywzMjggQEAKICAgICByZXR1cm4gT0s7CiB9CiAKLXN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCAmcGFyYW1zKSB7Ci0gICAgbVBhcmFtcyA9IHBhcmFtczsKKy8vIEF0dGVtcHQgdG8gcGFyc2UgYW4gaW50NjQgbGl0ZXJhbCBvcHRpb25hbGx5IHN1cnJvdW5kZWQgYnkgd2hpdGVzcGFjZSwKKy8vIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UuCitzdGF0aWMgYm9vbCBzYWZlX3N0cnRvaTY0KGNvbnN0IGNoYXIgKnMsIGludDY0X3QgKnZhbCkgeworICAgIGNoYXIgKmVuZDsKKyAgICAqdmFsID0gc3RydG9sbChzLCAmZW5kLCAxMCk7CiAKKyAgICBpZiAoZW5kID09IHMgfHwgZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBTa2lwIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAgICB3aGlsZSAoaXNzcGFjZSgqZW5kKSkgeworICAgICAgICArK2VuZDsKKyAgICB9CisKKyAgICAvLyBGb3IgYSBzdWNjZXNzZnVsIHJldHVybiwgdGhlIHN0cmluZyBtdXN0IGNvbnRhaW4gbm90aGluZyBidXQgYSB2YWxpZAorICAgIC8vIGludDY0IGxpdGVyYWwgb3B0aW9uYWxseSBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UuCisKKyAgICByZXR1cm4gKmVuZCA9PSAnXDAnOworfQorCisvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgaW4gWzAsIDB4MDA3RkZGRkZGRl0KK3N0YXRpYyBib29sIHNhZmVfc3RydG9pMzIoY29uc3QgY2hhciAqcywgaW50MzJfdCAqdmFsKSB7CisgICAgaW50NjRfdCB0ZW1wOworICAgIGlmIChzYWZlX3N0cnRvaTY0KHMsICZ0ZW1wKSkgeworICAgICAgICBpZiAodGVtcCA+PSAwICYmIHRlbXAgPD0gMHgwMDdGRkZGRkZGKSB7CisgICAgICAgICAgICAqdmFsID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odGVtcCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIFRyaW0gYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGdpdmVuIHN0cmluZy4KK3N0YXRpYyB2b2lkIFRyaW1TdHJpbmcoU3RyaW5nOCAqcykgeworICAgIHNpemVfdCBudW1fYnl0ZXMgPSBzLT5ieXRlcygpOworICAgIGNvbnN0IGNoYXIgKmRhdGEgPSBzLT5zdHJpbmcoKTsKKworICAgIHNpemVfdCBsZWFkaW5nX3NwYWNlID0gMDsKKyAgICB3aGlsZSAobGVhZGluZ19zcGFjZSA8IG51bV9ieXRlcyAmJiBpc3NwYWNlKGRhdGFbbGVhZGluZ19zcGFjZV0pKSB7CisgICAgICAgICsrbGVhZGluZ19zcGFjZTsKKyAgICB9CisKKyAgICBzaXplX3QgaSA9IG51bV9ieXRlczsKKyAgICB3aGlsZSAoaSA+IGxlYWRpbmdfc3BhY2UgJiYgaXNzcGFjZShkYXRhW2kgLSAxXSkpIHsKKyAgICAgICAgLS1pOworICAgIH0KKworICAgIHMtPnNldFRvKFN0cmluZzgoJmRhdGFbbGVhZGluZ19zcGFjZV0sIGkgLSBsZWFkaW5nX3NwYWNlKSk7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtQXVkaW9TYW1wbGluZ1JhdGUoaW50MzJfdCBzYW1wbGVSYXRlKSB7CisgICAgTE9HVigic2V0UGFyYW1BdWRpb1NhbXBsaW5nUmF0ZTogJWQiLCBzYW1wbGVSYXRlKTsKKyAgICBpZiAoc2FtcGxlUmF0ZSA8PSAwKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgYXVkaW8gc2FtcGxpbmcgcmF0ZTogJWQiLCBzYW1wbGVSYXRlKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIG9uIHRoZSBzYW1wbGUgcmF0ZSB3aWxsIGJlIHBlcmZvcm1lZCBsYXRlci4KKyAgICBtU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CiAgICAgcmV0dXJuIE9LOwogfQogCi1zdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+ICZsaXN0ZW5lcikgeworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1BdWRpb051bWJlck9mQ2hhbm5lbHMoaW50MzJfdCBjaGFubmVscykgeworICAgIExPR1YoInNldFBhcmFtQXVkaW9OdW1iZXJPZkNoYW5uZWxzOiAlZCIsIGNoYW5uZWxzKTsKKyAgICBpZiAoY2hhbm5lbHMgPD0gMCB8fCBjaGFubmVscyA+PSAzKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgbnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzOiAlZCIsIGNoYW5uZWxzKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIG9uIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgd2lsbCBiZSBwZXJmb3JtZWQgbGF0ZXIuCisgICAgbUF1ZGlvQ2hhbm5lbHMgPSBjaGFubmVsczsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtQXVkaW9FbmNvZGluZ0JpdFJhdGUoaW50MzJfdCBiaXRSYXRlKSB7CisgICAgTE9HVigic2V0UGFyYW1BdWRpb0VuY29kaW5nQml0UmF0ZTogJWQiLCBiaXRSYXRlKTsKKyAgICBpZiAoYml0UmF0ZSA8PSAwKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgYXVkaW8gZW5jb2RpbmcgYml0IHJhdGU6ICVkIiwgYml0UmF0ZSk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgLy8gVGhlIHRhcmdldCBiaXQgcmF0ZSBtYXkgbm90IGJlIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIHJlcXVlc3RlZC4KKyAgICAvLyBJdCBkZXBlbmRzIG9uIG1hbnkgZmFjdG9ycywgc3VjaCBhcyByYXRlIGNvbnRyb2wsIGFuZCB0aGUgYml0IHJhdGUKKyAgICAvLyByYW5nZSB0aGF0IGEgc3BlY2lmaWMgZW5jb2RlciBzdXBwb3J0cy4gVGhlIG1pc21hdGNoIGJldHdlZW4gdGhlCisgICAgLy8gdGhlIHRhcmdldCBhbmQgcmVxdWVzdGVkIGJpdCByYXRlIHdpbGwgTk9UIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuCisgICAgbUF1ZGlvQml0UmF0ZSA9IGJpdFJhdGU7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbVZpZGVvRW5jb2RpbmdCaXRSYXRlKGludDMyX3QgYml0UmF0ZSkgeworICAgIExPR1YoInNldFBhcmFtVmlkZW9FbmNvZGluZ0JpdFJhdGU6ICVkIiwgYml0UmF0ZSk7CisgICAgaWYgKGJpdFJhdGUgPD0gMCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIHZpZGVvIGVuY29kaW5nIGJpdCByYXRlOiAlZCIsIGJpdFJhdGUpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIC8vIFRoZSB0YXJnZXQgYml0IHJhdGUgbWF5IG5vdCBiZSBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSByZXF1ZXN0ZWQuCisgICAgLy8gSXQgZGVwZW5kcyBvbiBtYW55IGZhY3RvcnMsIHN1Y2ggYXMgcmF0ZSBjb250cm9sLCBhbmQgdGhlIGJpdCByYXRlCisgICAgLy8gcmFuZ2UgdGhhdCBhIHNwZWNpZmljIGVuY29kZXIgc3VwcG9ydHMuIFRoZSBtaXNtYXRjaCBiZXR3ZWVuIHRoZQorICAgIC8vIHRoZSB0YXJnZXQgYW5kIHJlcXVlc3RlZCBiaXQgcmF0ZSB3aWxsIE5PVCBiZSB0cmVhdGVkIGFzIGFuIGVycm9yLgorICAgIG1WaWRlb0JpdFJhdGUgPSBiaXRSYXRlOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1NYXhGaWxlRHVyYXRpb25VcyhpbnQ2NF90IHRpbWVVcykgeworICAgIExPR1YoInNldFBhcmFtTWF4RmlsZUR1cmF0aW9uVXM6ICVsbGQgdXMiLCB0aW1lVXMpOworICAgIGlmICh0aW1lVXMgPD0gMTAwMDAwMExMKSB7ICAvLyBYWFg6IDEgc2Vjb25kCisgICAgICAgIExPR0UoIk1heCBmaWxlIGR1cmF0aW9uIGlzIHRvbyBzaG9ydDogJWxsZCB1cyIsIHRpbWVVcyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIG1NYXhGaWxlRHVyYXRpb25VcyA9IHRpbWVVczsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtTWF4RmlsZVNpemVCeXRlcyhpbnQ2NF90IGJ5dGVzKSB7CisgICAgTE9HVigic2V0UGFyYW1NYXhGaWxlU2l6ZUJ5dGVzOiAlbGxkIGJ5dGVzIiwgYnl0ZXMpOworICAgIGlmIChieXRlcyA8PSAxMDI0KSB7ICAvLyBYWFg6IDEga0IKKyAgICAgICAgTE9HRSgiTWF4IGZpbGUgc2l6ZSBpcyB0b28gc21hbGw6ICVsbGQgYnl0ZXMiLCBieXRlcyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIG1NYXhGaWxlU2l6ZUJ5dGVzID0gYnl0ZXM7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbUludGVybGVhdmVEdXJhdGlvbihpbnQzMl90IGR1cmF0aW9uVXMpIHsKKyAgICBMT0dWKCJzZXRQYXJhbUludGVybGVhdmVEdXJhdGlvbjogJWQiLCBkdXJhdGlvblVzKTsKKyAgICBpZiAoZHVyYXRpb25VcyA8PSA1MDAwMDApIHsgICAgICAgICAgIC8vICA1MDAgbXMKKyAgICAgICAgLy8gSWYgaW50ZXJsZWF2ZSBkdXJhdGlvbiBpcyB0b28gc21hbGwsIGl0IGlzIHZlcnkgaW5lZmZpY2llbnQgdG8gZG8KKyAgICAgICAgLy8gaW50ZXJsZWF2aW5nIHNpbmNlIHRoZSBtZXRhZGF0YSBvdmVyaGVhZCB3aWxsIGNvdW50IGZvciBhIHNpZ25pZmljYW50CisgICAgICAgIC8vIHBvcnRpb24gb2YgdGhlIHNhdmVkIGNvbnRlbnRzCisgICAgICAgIExPR0UoIkF1ZGlvL3ZpZGVvIGludGVybGVhdmUgZHVyYXRpb24gaXMgdG9vIHNtYWxsOiAlZCB1cyIsIGR1cmF0aW9uVXMpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0gZWxzZSBpZiAoZHVyYXRpb25VcyA+PSAxMDAwMDAwMCkgeyAgLy8gMTAgc2Vjb25kcworICAgICAgICAvLyBJZiBpbnRlcmxlYXZpbmcgZHVyYXRpb24gaXMgdG9vIGxhcmdlLCBpdCBjYW4gY2F1c2UgdGhlIHJlY29yZGluZworICAgICAgICAvLyBzZXNzaW9uIHRvIHVzZSB0b28gbXVjaCBtZW1vcnkgc2luY2Ugd2UgaGF2ZSB0byBzYXZlIHRoZSBvdXRwdXQKKyAgICAgICAgLy8gZGF0YSBiZWZvcmUgd2Ugd3JpdGUgdGhlbSBvdXQKKyAgICAgICAgTE9HRSgiQXVkaW8vdmlkZW8gaW50ZXJsZWF2ZSBkdXJhdGlvbiBpcyB0b28gbGFyZ2U6ICVkIHVzIiwgZHVyYXRpb25Vcyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIG1JbnRlcmxlYXZlRHVyYXRpb25VcyA9IGR1cmF0aW9uVXM7CisgICAgcmV0dXJuIE9LOworfQorCisvLyBJZiBpbnRlcnZhbCA8ICAwLCBvbmx5IHRoZSBmaXJzdCBmcmFtZSBpcyBJIGZyYW1lLCBhbmQgcmVzdCBhcmUgYWxsIFAgZnJhbWVzCisvLyBJZiBpbnRlcnZhbCA9PSAwLCBhbGwgZnJhbWVzIGFyZSBlbmNvZGVkIGFzIEkgZnJhbWVzLiBObyBQIGZyYW1lcworLy8gSWYgaW50ZXJ2YWwgPiAgMCwgaXQgaXMgdGhlIHRpbWUgc3BhY2luZyAoc2Vjb25kcykgYmV0d2VlbiAyIG5laWdoYm9yaW5nIEkgZnJhbWVzCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbVZpZGVvSUZyYW1lc0ludGVydmFsKGludDMyX3QgaW50ZXJ2YWwpIHsKKyAgICBMT0dWKCJzZXRQYXJhbVZpZGVvSUZyYW1lc0ludGVydmFsOiAlZCBzZWNvbmRzIiwgaW50ZXJ2YWwpOworICAgIG1JRnJhbWVzSW50ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtNjRCaXRGaWxlT2Zmc2V0KGJvb2wgdXNlNjRCaXQpIHsKKyAgICBMT0dWKCJzZXRQYXJhbTY0Qml0RmlsZU9mZnNldDogJXMiLAorICAgICAgICB1c2U2NEJpdD8gInVzZSA2NCBiaXQgZmlsZSBvZmZzZXQiOiAidXNlIDMyIGJpdCBmaWxlIG9mZnNldCIpOworICAgIG1Vc2U2NEJpdEZpbGVPZmZzZXQgPSB1c2U2NEJpdDsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtVmlkZW9DYW1lcmFJZChpbnQzMl90IGNhbWVyYUlkKSB7CisgICAgTE9HVigic2V0UGFyYW1WaWRlb0NhbWVyYUlkOiAlZCIsIGNhbWVyYUlkKTsKKyAgICBpZiAoY2FtZXJhSWQgPCAwKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIG1DYW1lcmFJZCA9IGNhbWVyYUlkOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1UcmFja0ZyYW1lU3RhdHVzKGludDMyX3QgbkZyYW1lcykgeworICAgIExPR1YoInNldFBhcmFtVHJhY2tGcmFtZVN0YXR1czogJWQiLCBuRnJhbWVzKTsKKyAgICBpZiAobkZyYW1lcyA8PSAwKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgbnVtYmVyIG9mIGZyYW1lcyB0byB0cmFjazogJWQiLCBuRnJhbWVzKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisgICAgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lcyA9IG5GcmFtZXM7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbVRyYWNrVGltZVN0YXR1cyhpbnQ2NF90IHRpbWVEdXJhdGlvblVzKSB7CisgICAgTE9HVigic2V0UGFyYW1UcmFja1RpbWVTdGF0dXM6ICVsbGQiLCB0aW1lRHVyYXRpb25Vcyk7CisgICAgaWYgKHRpbWVEdXJhdGlvblVzIDwgMjAwMDApIHsgIC8vIEluZmVhc2libGUgaWYgc2hvcnRlciB0aGFuIDIwIG1zPworICAgICAgICBMT0dFKCJUcmFja2luZyB0aW1lIGR1cmF0aW9uIHRvbyBzaG9ydDogJWxsZCB1cyIsIHRpbWVEdXJhdGlvblVzKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisgICAgbVRyYWNrRXZlcnlUaW1lRHVyYXRpb25VcyA9IHRpbWVEdXJhdGlvblVzOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1WaWRlb0VuY29kZXJQcm9maWxlKGludDMyX3QgcHJvZmlsZSkgeworICAgIExPR1YoInNldFBhcmFtVmlkZW9FbmNvZGVyUHJvZmlsZTogJWQiLCBwcm9maWxlKTsKKworICAgIC8vIEFkZGl0aW9uYWwgY2hlY2sgd2lsbCBiZSBkb25lIGxhdGVyIHdoZW4gd2UgbG9hZCB0aGUgZW5jb2Rlci4KKyAgICAvLyBGb3Igbm93LCB3ZSBhcmUgYWNjZXB0aW5nIHZhbHVlcyBkZWZpbmVkIGluIE9wZW5NQVggSUwuCisgICAgbVZpZGVvRW5jb2RlclByb2ZpbGUgPSBwcm9maWxlOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1WaWRlb0VuY29kZXJMZXZlbChpbnQzMl90IGxldmVsKSB7CisgICAgTE9HVigic2V0UGFyYW1WaWRlb0VuY29kZXJMZXZlbDogJWQiLCBsZXZlbCk7CisKKyAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIHdpbGwgYmUgZG9uZSBsYXRlciB3aGVuIHdlIGxvYWQgdGhlIGVuY29kZXIuCisgICAgLy8gRm9yIG5vdywgd2UgYXJlIGFjY2VwdGluZyB2YWx1ZXMgZGVmaW5lZCBpbiBPcGVuTUFYIElMLgorICAgIG1WaWRlb0VuY29kZXJMZXZlbCA9IGxldmVsOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1ldGVyKAorICAgICAgICBjb25zdCBTdHJpbmc4ICZrZXksIGNvbnN0IFN0cmluZzggJnZhbHVlKSB7CisgICAgTE9HVigic2V0UGFyYW1ldGVyOiBrZXkgKCVzKSA9PiB2YWx1ZSAoJXMpIiwga2V5LnN0cmluZygpLCB2YWx1ZS5zdHJpbmcoKSk7CisgICAgaWYgKGtleSA9PSAibWF4LWR1cmF0aW9uIikgeworICAgICAgICBpbnQ2NF90IG1heF9kdXJhdGlvbl9tczsKKyAgICAgICAgaWYgKHNhZmVfc3RydG9pNjQodmFsdWUuc3RyaW5nKCksICZtYXhfZHVyYXRpb25fbXMpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1NYXhGaWxlRHVyYXRpb25VcygxMDAwTEwgKiBtYXhfZHVyYXRpb25fbXMpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gIm1heC1maWxlc2l6ZSIpIHsKKyAgICAgICAgaW50NjRfdCBtYXhfZmlsZXNpemVfYnl0ZXM7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTY0KHZhbHVlLnN0cmluZygpLCAmbWF4X2ZpbGVzaXplX2J5dGVzKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtTWF4RmlsZVNpemVCeXRlcyhtYXhfZmlsZXNpemVfYnl0ZXMpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gImludGVybGVhdmUtZHVyYXRpb24tdXMiKSB7CisgICAgICAgIGludDMyX3QgZHVyYXRpb25VczsKKyAgICAgICAgaWYgKHNhZmVfc3RydG9pMzIodmFsdWUuc3RyaW5nKCksICZkdXJhdGlvblVzKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtSW50ZXJsZWF2ZUR1cmF0aW9uKGR1cmF0aW9uVXMpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gInBhcmFtLXVzZS02NGJpdC1vZmZzZXQiKSB7CisgICAgICAgIGludDMyX3QgdXNlNjRCaXRPZmZzZXQ7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmdXNlNjRCaXRPZmZzZXQpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW02NEJpdEZpbGVPZmZzZXQodXNlNjRCaXRPZmZzZXQgIT0gMCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAicGFyYW0tdHJhY2stZnJhbWUtc3RhdHVzIikgeworICAgICAgICBpbnQzMl90IG5GcmFtZXM7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmbkZyYW1lcykpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRQYXJhbVRyYWNrRnJhbWVTdGF0dXMobkZyYW1lcyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAicGFyYW0tdHJhY2stdGltZS1zdGF0dXMiKSB7CisgICAgICAgIGludDY0X3QgdGltZUR1cmF0aW9uVXM7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTY0KHZhbHVlLnN0cmluZygpLCAmdGltZUR1cmF0aW9uVXMpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1UcmFja1RpbWVTdGF0dXModGltZUR1cmF0aW9uVXMpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gImF1ZGlvLXBhcmFtLXNhbXBsaW5nLXJhdGUiKSB7CisgICAgICAgIGludDMyX3Qgc2FtcGxpbmdfcmF0ZTsKKyAgICAgICAgaWYgKHNhZmVfc3RydG9pMzIodmFsdWUuc3RyaW5nKCksICZzYW1wbGluZ19yYXRlKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtQXVkaW9TYW1wbGluZ1JhdGUoc2FtcGxpbmdfcmF0ZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAiYXVkaW8tcGFyYW0tbnVtYmVyLW9mLWNoYW5uZWxzIikgeworICAgICAgICBpbnQzMl90IG51bWJlcl9vZl9jaGFubmVsczsKKyAgICAgICAgaWYgKHNhZmVfc3RydG9pMzIodmFsdWUuc3RyaW5nKCksICZudW1iZXJfb2ZfY2hhbm5lbHMpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1BdWRpb051bWJlck9mQ2hhbm5lbHMobnVtYmVyX29mX2NoYW5uZWxzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa2V5ID09ICJhdWRpby1wYXJhbS1lbmNvZGluZy1iaXRyYXRlIikgeworICAgICAgICBpbnQzMl90IGF1ZGlvX2JpdHJhdGU7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmYXVkaW9fYml0cmF0ZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRQYXJhbUF1ZGlvRW5jb2RpbmdCaXRSYXRlKGF1ZGlvX2JpdHJhdGUpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gInZpZGVvLXBhcmFtLWVuY29kaW5nLWJpdHJhdGUiKSB7CisgICAgICAgIGludDMyX3QgdmlkZW9fYml0cmF0ZTsKKyAgICAgICAgaWYgKHNhZmVfc3RydG9pMzIodmFsdWUuc3RyaW5nKCksICZ2aWRlb19iaXRyYXRlKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtVmlkZW9FbmNvZGluZ0JpdFJhdGUodmlkZW9fYml0cmF0ZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAidmlkZW8tcGFyYW0taS1mcmFtZXMtaW50ZXJ2YWwiKSB7CisgICAgICAgIGludDMyX3QgaW50ZXJ2YWw7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmaW50ZXJ2YWwpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1WaWRlb0lGcmFtZXNJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAidmlkZW8tcGFyYW0tZW5jb2Rlci1wcm9maWxlIikgeworICAgICAgICBpbnQzMl90IHByb2ZpbGU7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmcHJvZmlsZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRQYXJhbVZpZGVvRW5jb2RlclByb2ZpbGUocHJvZmlsZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAidmlkZW8tcGFyYW0tZW5jb2Rlci1sZXZlbCIpIHsKKyAgICAgICAgaW50MzJfdCBsZXZlbDsKKyAgICAgICAgaWYgKHNhZmVfc3RydG9pMzIodmFsdWUuc3RyaW5nKCksICZsZXZlbCkpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRQYXJhbVZpZGVvRW5jb2RlckxldmVsKGxldmVsKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa2V5ID09ICJ2aWRlby1wYXJhbS1jYW1lcmEtaWQiKSB7CisgICAgICAgIGludDMyX3QgY2FtZXJhSWQ7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmY2FtZXJhSWQpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1WaWRlb0NhbWVyYUlkKGNhbWVyYUlkKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIExPR0UoInNldFBhcmFtZXRlcjogZmFpbGVkIHRvIGZpbmQga2V5ICVzIiwga2V5LnN0cmluZygpKTsKKyAgICB9CisgICAgcmV0dXJuIEJBRF9WQUxVRTsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1ldGVycyhjb25zdCBTdHJpbmc4ICZwYXJhbXMpIHsKKyAgICBMT0dWKCJzZXRQYXJhbWV0ZXJzOiAlcyIsIHBhcmFtcy5zdHJpbmcoKSk7CisgICAgY29uc3QgY2hhciAqY3BhcmFtcyA9IHBhcmFtcy5zdHJpbmcoKTsKKyAgICBjb25zdCBjaGFyICprZXlfc3RhcnQgPSBjcGFyYW1zOworICAgIGZvciAoOzspIHsKKyAgICAgICAgY29uc3QgY2hhciAqZXF1YWxfcG9zID0gc3RyY2hyKGtleV9zdGFydCwgJz0nKTsKKyAgICAgICAgaWYgKGVxdWFsX3BvcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dFKCJQYXJhbWV0ZXJzICVzIG1pc3MgYSB2YWx1ZSIsIGNwYXJhbXMpOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmc4IGtleShrZXlfc3RhcnQsIGVxdWFsX3BvcyAtIGtleV9zdGFydCk7CisgICAgICAgIFRyaW1TdHJpbmcoJmtleSk7CisgICAgICAgIGlmIChrZXkubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgTE9HRSgiUGFyYW1ldGVycyAlcyBjb250YWlucyBhbiBlbXB0eSBrZXkiLCBjcGFyYW1zKTsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgY2hhciAqdmFsdWVfc3RhcnQgPSBlcXVhbF9wb3MgKyAxOworICAgICAgICBjb25zdCBjaGFyICpzZW1pY29sb25fcG9zID0gc3RyY2hyKHZhbHVlX3N0YXJ0LCAnOycpOworICAgICAgICBTdHJpbmc4IHZhbHVlOworICAgICAgICBpZiAoc2VtaWNvbG9uX3BvcyA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZS5zZXRUbyh2YWx1ZV9zdGFydCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZS5zZXRUbyh2YWx1ZV9zdGFydCwgc2VtaWNvbG9uX3BvcyAtIHZhbHVlX3N0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2V0UGFyYW1ldGVyKGtleSwgdmFsdWUpICE9IE9LKSB7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGlmIChzZW1pY29sb25fcG9zID09IE5VTEwpIHsKKyAgICAgICAgICAgIGJyZWFrOyAgLy8gUmVhY2hlcyB0aGUgZW5kCisgICAgICAgIH0KKyAgICAgICAga2V5X3N0YXJ0ID0gc2VtaWNvbG9uX3BvcyArIDE7CisgICAgfQorICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+ICZsaXN0ZW5lcikgewogICAgIG1MaXN0ZW5lciA9IGxpc3RlbmVyOwogCiAgICAgcmV0dXJuIE9LOwpAQCAtMTQ0LDcgKzU2OSwxMCBAQAogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzdGFydCgpIHsKKyAgICBDSEVDSyhtT3V0cHV0RmQgPj0gMCk7CisKICAgICBpZiAobVdyaXRlciAhPSBOVUxMKSB7CisgICAgICAgIExPR0UoIkZpbGUgd3JpdGVyIGlzIG5vdCBhdmFpYWxibGUiKTsKICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgfQogCkBAIC0xNTgsNDAgKzU4Niw1NyBAQAogICAgICAgICBjYXNlIE9VVFBVVF9GT1JNQVRfQU1SX1dCOgogICAgICAgICAgICAgcmV0dXJuIHN0YXJ0QU1SUmVjb3JkaW5nKCk7CiAKKyAgICAgICAgY2FzZSBPVVRQVVRfRk9STUFUX0FBQ19BRElGOgorICAgICAgICBjYXNlIE9VVFBVVF9GT1JNQVRfQUFDX0FEVFM6CisgICAgICAgICAgICByZXR1cm4gc3RhcnRBQUNSZWNvcmRpbmcoKTsKKwogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HRSgiVW5zdXBwb3J0ZWQgb3V0cHV0IGZpbGUgZm9ybWF0OiAlZCIsIG1PdXRwdXRGb3JtYXQpOwogICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgfQogfQogCi1zcDxNZWRpYVNvdXJjZT4gU3RhZ2VmcmlnaHRSZWNvcmRlcjo6Y3JlYXRlQU1SQXVkaW9Tb3VyY2UoKSB7Ci0gICAgdWludDMyX3Qgc2FtcGxlUmF0ZSA9Ci0gICAgICAgIG1BdWRpb0VuY29kZXIgPT0gQVVESU9fRU5DT0RFUl9BTVJfTkIgPyA4MDAwIDogMTYwMDA7Ci0KK3NwPE1lZGlhU291cmNlPiBTdGFnZWZyaWdodFJlY29yZGVyOjpjcmVhdGVBdWRpb1NvdXJjZSgpIHsKICAgICBzcDxBdWRpb1NvdXJjZT4gYXVkaW9Tb3VyY2UgPQogICAgICAgICBuZXcgQXVkaW9Tb3VyY2UoCiAgICAgICAgICAgICAgICAgbUF1ZGlvU291cmNlLAotICAgICAgICAgICAgICAgIHNhbXBsZVJhdGUsCi0gICAgICAgICAgICAgICAgQXVkaW9TeXN0ZW06OkNIQU5ORUxfSU5fTU9OTyk7CisgICAgICAgICAgICAgICAgbVNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgbUF1ZGlvQ2hhbm5lbHMpOwogCiAgICAgc3RhdHVzX3QgZXJyID0gYXVkaW9Tb3VyY2UtPmluaXRDaGVjaygpOwogCiAgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICBMT0dFKCJhdWRpbyBzb3VyY2UgaXMgbm90IGluaXRpYWxpemVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHNwPE1ldGFEYXRhPiBlbmNNZXRhID0gbmV3IE1ldGFEYXRhOwotICAgIGVuY01ldGEtPnNldENTdHJpbmcoCi0gICAgICAgICAgICBrS2V5TUlNRVR5cGUsCi0gICAgICAgICAgICBtQXVkaW9FbmNvZGVyID09IEFVRElPX0VOQ09ERVJfQU1SX05CCi0gICAgICAgICAgICAgICAgPyBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfTkIgOiBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfV0IpOworICAgIGNvbnN0IGNoYXIgKm1pbWU7CisgICAgc3dpdGNoIChtQXVkaW9FbmNvZGVyKSB7CisgICAgICAgIGNhc2UgQVVESU9fRU5DT0RFUl9BTVJfTkI6CisgICAgICAgIGNhc2UgQVVESU9fRU5DT0RFUl9ERUZBVUxUOgorICAgICAgICAgICAgbWltZSA9IE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9OQjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFVRElPX0VOQ09ERVJfQU1SX1dCOgorICAgICAgICAgICAgbWltZSA9IE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9XQjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFVRElPX0VOQ09ERVJfQUFDOgorICAgICAgICAgICAgbWltZSA9IE1FRElBX01JTUVUWVBFX0FVRElPX0FBQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HRSgiVW5rbm93biBhdWRpbyBlbmNvZGVyOiAlZCIsIG1BdWRpb0VuY29kZXIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVuY01ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBtaW1lKTsKIAogICAgIGludDMyX3QgbWF4SW5wdXRTaXplOwogICAgIENIRUNLKGF1ZGlvU291cmNlLT5nZXRGb3JtYXQoKS0+ZmluZEludDMyKAogICAgICAgICAgICAgICAgIGtLZXlNYXhJbnB1dFNpemUsICZtYXhJbnB1dFNpemUpKTsKIAogICAgIGVuY01ldGEtPnNldEludDMyKGtLZXlNYXhJbnB1dFNpemUsIG1heElucHV0U2l6ZSk7Ci0gICAgZW5jTWV0YS0+c2V0SW50MzIoa0tleUNoYW5uZWxDb3VudCwgMSk7Ci0gICAgZW5jTWV0YS0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOworICAgIGVuY01ldGEtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIG1BdWRpb0NoYW5uZWxzKTsKKyAgICBlbmNNZXRhLT5zZXRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgbVNhbXBsZVJhdGUpOworICAgIGVuY01ldGEtPnNldEludDMyKGtLZXlCaXRSYXRlLCBtQXVkaW9CaXRSYXRlKTsKIAogICAgIE9NWENsaWVudCBjbGllbnQ7CiAgICAgQ0hFQ0tfRVEoY2xpZW50LmNvbm5lY3QoKSwgT0spOwpAQCAtMTk5LDE0MiArNjQ0LDQxNSBAQAogICAgIHNwPE1lZGlhU291cmNlPiBhdWRpb0VuY29kZXIgPQogICAgICAgICBPTVhDb2RlYzo6Q3JlYXRlKGNsaWVudC5pbnRlcmZhY2UoKSwgZW5jTWV0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlIC8qIGNyZWF0ZUVuY29kZXIgKi8sIGF1ZGlvU291cmNlKTsKKyAgICBtQXVkaW9Tb3VyY2VOb2RlID0gYXVkaW9Tb3VyY2U7CiAKICAgICByZXR1cm4gYXVkaW9FbmNvZGVyOwogfQogCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzdGFydEFBQ1JlY29yZGluZygpIHsKKyAgICBDSEVDSyhtT3V0cHV0Rm9ybWF0ID09IE9VVFBVVF9GT1JNQVRfQUFDX0FESUYgfHwKKyAgICAgICAgICBtT3V0cHV0Rm9ybWF0ID09IE9VVFBVVF9GT1JNQVRfQUFDX0FEVFMpOworCisgICAgQ0hFQ0sobUF1ZGlvRW5jb2RlciA9PSBBVURJT19FTkNPREVSX0FBQyk7CisgICAgQ0hFQ0sobUF1ZGlvU291cmNlICE9IEFVRElPX1NPVVJDRV9MSVNUX0VORCk7CisKKyAgICBDSEVDSygwID09ICJBQUNXcml0ZXIgaXMgbm90IGltcGxlbWVudGVkIHlldCIpOworCisgICAgcmV0dXJuIE9LOworfQorCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzdGFydEFNUlJlY29yZGluZygpIHsKLSAgICBpZiAobUF1ZGlvU291cmNlID09IEFVRElPX1NPVVJDRV9MSVNUX0VORAotICAgICAgICB8fCBtVmlkZW9Tb3VyY2UgIT0gVklERU9fU09VUkNFX0xJU1RfRU5EKSB7Ci0gICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIENIRUNLKG1PdXRwdXRGb3JtYXQgPT0gT1VUUFVUX0ZPUk1BVF9BTVJfTkIgfHwKKyAgICAgICAgICBtT3V0cHV0Rm9ybWF0ID09IE9VVFBVVF9GT1JNQVRfQU1SX1dCKTsKKworICAgIGlmIChtT3V0cHV0Rm9ybWF0ID09IE9VVFBVVF9GT1JNQVRfQU1SX05CKSB7CisgICAgICAgIGlmIChtQXVkaW9FbmNvZGVyICE9IEFVRElPX0VOQ09ERVJfREVGQVVMVCAmJgorICAgICAgICAgICAgbUF1ZGlvRW5jb2RlciAhPSBBVURJT19FTkNPREVSX0FNUl9OQikgeworICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBlbmNvZGVyICVkIHVzZWQgZm9yIEFNUk5CIHJlY29yZGluZyIsCisgICAgICAgICAgICAgICAgICAgIG1BdWRpb0VuY29kZXIpOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBpZiAobVNhbXBsZVJhdGUgIT0gODAwMCkgeworICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBzYW1wbGluZyByYXRlICVkIHVzZWQgZm9yIEFNUk5CIHJlY29yZGluZyIsCisgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVSYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeyAgLy8gbU91dHB1dEZvcm1hdCBtdXN0IGJlIE9VVFBVVF9GT1JNQVRfQU1SX1dCCisgICAgICAgIGlmIChtQXVkaW9FbmNvZGVyICE9IEFVRElPX0VOQ09ERVJfQU1SX1dCKSB7CisgICAgICAgICAgICBMT0dFKCJJbnZsYWlkIGVuY29kZXIgJWQgdXNlZCBmb3IgQU1SV0IgcmVjb3JkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgbUF1ZGlvRW5jb2Rlcik7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGlmIChtU2FtcGxlUmF0ZSAhPSAxNjAwMCkgeworICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBzYW1wbGUgcmF0ZSAlZCB1c2VkIGZvciBBTVJXQiByZWNvcmRpbmciLAorICAgICAgICAgICAgICAgICAgICBtU2FtcGxlUmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgfQorICAgIGlmIChtQXVkaW9DaGFubmVscyAhPSAxKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgbnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzICVkIHVzZWQgZm9yIGFtciByZWNvcmRpbmciLAorICAgICAgICAgICAgICAgIG1BdWRpb0NoYW5uZWxzKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKICAgICB9CiAKLSAgICBpZiAobU91dHB1dEZvcm1hdCA9PSBPVVRQVVRfRk9STUFUX0FNUl9OQgotICAgICAgICAgICAgJiYgbUF1ZGlvRW5jb2RlciAhPSBBVURJT19FTkNPREVSX0RFRkFVTFQKLSAgICAgICAgICAgICYmIG1BdWRpb0VuY29kZXIgIT0gQVVESU9fRU5DT0RFUl9BTVJfTkIpIHsKLSAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7Ci0gICAgfSBlbHNlIGlmIChtT3V0cHV0Rm9ybWF0ID09IE9VVFBVVF9GT1JNQVRfQU1SX1dCCi0gICAgICAgICAgICAmJiBtQXVkaW9FbmNvZGVyICE9IEFVRElPX0VOQ09ERVJfQU1SX1dCKSB7Ci0gICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIGlmIChtQXVkaW9Tb3VyY2UgPj0gQVVESU9fU09VUkNFX0xJU1RfRU5EKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgYXVkaW8gc291cmNlOiAlZCIsIG1BdWRpb1NvdXJjZSk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CiAgICAgfQogCi0gICAgc3A8TWVkaWFTb3VyY2U+IGF1ZGlvRW5jb2RlciA9IGNyZWF0ZUFNUkF1ZGlvU291cmNlKCk7CisgICAgc3A8TWVkaWFTb3VyY2U+IGF1ZGlvRW5jb2RlciA9IGNyZWF0ZUF1ZGlvU291cmNlKCk7CiAKICAgICBpZiAoYXVkaW9FbmNvZGVyID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgfQogCi0gICAgQ0hFQ0sobU91dHB1dEZkID49IDApOwogICAgIG1Xcml0ZXIgPSBuZXcgQU1SV3JpdGVyKGR1cChtT3V0cHV0RmQpKTsKICAgICBtV3JpdGVyLT5hZGRTb3VyY2UoYXVkaW9FbmNvZGVyKTsKKworICAgIGlmIChtTWF4RmlsZUR1cmF0aW9uVXMgIT0gMCkgeworICAgICAgICBtV3JpdGVyLT5zZXRNYXhGaWxlRHVyYXRpb24obU1heEZpbGVEdXJhdGlvblVzKTsKKyAgICB9CisgICAgaWYgKG1NYXhGaWxlU2l6ZUJ5dGVzICE9IDApIHsKKyAgICAgICAgbVdyaXRlci0+c2V0TWF4RmlsZVNpemUobU1heEZpbGVTaXplQnl0ZXMpOworICAgIH0KKyAgICBtV3JpdGVyLT5zZXRMaXN0ZW5lcihtTGlzdGVuZXIpOwogICAgIG1Xcml0ZXItPnN0YXJ0KCk7CiAKICAgICByZXR1cm4gT0s7CiB9CiAKK3ZvaWQgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6Y2xpcFZpZGVvRnJhbWVSYXRlKCkgeworICAgIExPR1YoImNsaXBWaWRlb0ZyYW1lUmF0ZTogZW5jb2RlciAlZCIsIG1WaWRlb0VuY29kZXIpOworICAgIGludCBtaW5GcmFtZVJhdGUgPSBtRW5jb2RlclByb2ZpbGVzLT5nZXRWaWRlb0VuY29kZXJQYXJhbUJ5TmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbmMudmlkLmZwcy5taW4iLCBtVmlkZW9FbmNvZGVyKTsKKyAgICBpbnQgbWF4RnJhbWVSYXRlID0gbUVuY29kZXJQcm9maWxlcy0+Z2V0VmlkZW9FbmNvZGVyUGFyYW1CeU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5jLnZpZC5mcHMubWF4IiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaWYgKG1GcmFtZVJhdGUgPCBtaW5GcmFtZVJhdGUpIHsKKyAgICAgICAgTE9HVygiSW50ZW5kZWQgdmlkZW8gZW5jb2RpbmcgZnJhbWUgcmF0ZSAoJWQgZnBzKSBpcyB0b28gc21hbGwiCisgICAgICAgICAgICAgIiBhbmQgd2lsbCBiZSBzZXQgdG8gKCVkIGZwcykiLCBtRnJhbWVSYXRlLCBtaW5GcmFtZVJhdGUpOworICAgICAgICBtRnJhbWVSYXRlID0gbWluRnJhbWVSYXRlOworICAgIH0gZWxzZSBpZiAobUZyYW1lUmF0ZSA+IG1heEZyYW1lUmF0ZSkgeworICAgICAgICBMT0dXKCJJbnRlbmRlZCB2aWRlbyBlbmNvZGluZyBmcmFtZSByYXRlICglZCBmcHMpIGlzIHRvbyBsYXJnZSIKKyAgICAgICAgICAgICAiIGFuZCB3aWxsIGJlIHNldCB0byAoJWQgZnBzKSIsIG1GcmFtZVJhdGUsIG1heEZyYW1lUmF0ZSk7CisgICAgICAgIG1GcmFtZVJhdGUgPSBtYXhGcmFtZVJhdGU7CisgICAgfQorfQorCit2b2lkIFN0YWdlZnJpZ2h0UmVjb3JkZXI6OmNsaXBWaWRlb0JpdFJhdGUoKSB7CisgICAgTE9HVigiY2xpcFZpZGVvQml0UmF0ZTogZW5jb2RlciAlZCIsIG1WaWRlb0VuY29kZXIpOworICAgIGludCBtaW5CaXRSYXRlID0gbUVuY29kZXJQcm9maWxlcy0+Z2V0VmlkZW9FbmNvZGVyUGFyYW1CeU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5jLnZpZC5icHMubWluIiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaW50IG1heEJpdFJhdGUgPSBtRW5jb2RlclByb2ZpbGVzLT5nZXRWaWRlb0VuY29kZXJQYXJhbUJ5TmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbmMudmlkLmJwcy5tYXgiLCBtVmlkZW9FbmNvZGVyKTsKKyAgICBpZiAobVZpZGVvQml0UmF0ZSA8IG1pbkJpdFJhdGUpIHsKKyAgICAgICAgTE9HVygiSW50ZW5kZWQgdmlkZW8gZW5jb2RpbmcgYml0IHJhdGUgKCVkIGJwcykgaXMgdG9vIHNtYWxsIgorICAgICAgICAgICAgICIgYW5kIHdpbGwgYmUgc2V0IHRvICglZCBicHMpIiwgbVZpZGVvQml0UmF0ZSwgbWluQml0UmF0ZSk7CisgICAgICAgIG1WaWRlb0JpdFJhdGUgPSBtaW5CaXRSYXRlOworICAgIH0gZWxzZSBpZiAobVZpZGVvQml0UmF0ZSA+IG1heEJpdFJhdGUpIHsKKyAgICAgICAgTE9HVygiSW50ZW5kZWQgdmlkZW8gZW5jb2RpbmcgYml0IHJhdGUgKCVkIGJwcykgaXMgdG9vIGxhcmdlIgorICAgICAgICAgICAgICIgYW5kIHdpbGwgYmUgc2V0IHRvICglZCBicHMpIiwgbVZpZGVvQml0UmF0ZSwgbWF4Qml0UmF0ZSk7CisgICAgICAgIG1WaWRlb0JpdFJhdGUgPSBtYXhCaXRSYXRlOworICAgIH0KK30KKwordm9pZCBTdGFnZWZyaWdodFJlY29yZGVyOjpjbGlwVmlkZW9GcmFtZVdpZHRoKCkgeworICAgIExPR1YoImNsaXBWaWRlb0ZyYW1lV2lkdGg6IGVuY29kZXIgJWQiLCBtVmlkZW9FbmNvZGVyKTsKKyAgICBpbnQgbWluRnJhbWVXaWR0aCA9IG1FbmNvZGVyUHJvZmlsZXMtPmdldFZpZGVvRW5jb2RlclBhcmFtQnlOYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgImVuYy52aWQud2lkdGgubWluIiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaW50IG1heEZyYW1lV2lkdGggPSBtRW5jb2RlclByb2ZpbGVzLT5nZXRWaWRlb0VuY29kZXJQYXJhbUJ5TmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbmMudmlkLndpZHRoLm1heCIsIG1WaWRlb0VuY29kZXIpOworICAgIGlmIChtVmlkZW9XaWR0aCA8IG1pbkZyYW1lV2lkdGgpIHsKKyAgICAgICAgTE9HVygiSW50ZW5kZWQgdmlkZW8gZW5jb2RpbmcgZnJhbWUgd2lkdGggKCVkKSBpcyB0b28gc21hbGwiCisgICAgICAgICAgICAgIiBhbmQgd2lsbCBiZSBzZXQgdG8gKCVkKSIsIG1WaWRlb1dpZHRoLCBtaW5GcmFtZVdpZHRoKTsKKyAgICAgICAgbVZpZGVvV2lkdGggPSBtaW5GcmFtZVdpZHRoOworICAgIH0gZWxzZSBpZiAobVZpZGVvV2lkdGggPiBtYXhGcmFtZVdpZHRoKSB7CisgICAgICAgIExPR1coIkludGVuZGVkIHZpZGVvIGVuY29kaW5nIGZyYW1lIHdpZHRoICglZCkgaXMgdG9vIGxhcmdlIgorICAgICAgICAgICAgICIgYW5kIHdpbGwgYmUgc2V0IHRvICglZCkiLCBtVmlkZW9XaWR0aCwgbWF4RnJhbWVXaWR0aCk7CisgICAgICAgIG1WaWRlb1dpZHRoID0gbWF4RnJhbWVXaWR0aDsKKyAgICB9Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldHVwQ2FtZXJhU291cmNlKCkgeworICAgIGNsaXBWaWRlb0JpdFJhdGUoKTsKKyAgICBjbGlwVmlkZW9GcmFtZVJhdGUoKTsKKyAgICBjbGlwVmlkZW9GcmFtZVdpZHRoKCk7CisgICAgY2xpcFZpZGVvRnJhbWVIZWlnaHQoKTsKKworICAgIGludDY0X3QgdG9rZW4gPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5jbGVhckNhbGxpbmdJZGVudGl0eSgpOworICAgIGlmIChtQ2FtZXJhID09IDApIHsKKyAgICAgICAgbUNhbWVyYSA9IENhbWVyYTo6Y29ubmVjdChtQ2FtZXJhSWQpOworICAgICAgICBpZiAobUNhbWVyYSA9PSAwKSB7CisgICAgICAgICAgICBMT0dFKCJDYW1lcmEgY29ubmVjdGlvbiBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQuIik7CisgICAgICAgICAgICByZXR1cm4gLUVCVVNZOworICAgICAgICB9CisgICAgICAgIG1GbGFncyAmPSB+RkxBR1NfSE9UX0NBTUVSQTsKKyAgICAgICAgbUNhbWVyYS0+bG9jaygpOworICAgIH0KKworICAgIC8vIFNldCB0aGUgYWN0dWFsIHZpZGVvIHJlY29yZGluZyBmcmFtZSBzaXplCisgICAgQ2FtZXJhUGFyYW1ldGVycyBwYXJhbXMobUNhbWVyYS0+Z2V0UGFyYW1ldGVycygpKTsKKyAgICBwYXJhbXMuc2V0UHJldmlld1NpemUobVZpZGVvV2lkdGgsIG1WaWRlb0hlaWdodCk7CisgICAgcGFyYW1zLnNldFByZXZpZXdGcmFtZVJhdGUobUZyYW1lUmF0ZSk7CisgICAgU3RyaW5nOCBzID0gcGFyYW1zLmZsYXR0ZW4oKTsKKyAgICBDSEVDS19FUShPSywgbUNhbWVyYS0+c2V0UGFyYW1ldGVycyhzKSk7CisgICAgQ2FtZXJhUGFyYW1ldGVycyBuZXdDYW1lcmFQYXJhbXMobUNhbWVyYS0+Z2V0UGFyYW1ldGVycygpKTsKKworICAgIC8vIENoZWNrIG9uIHZpZGVvIGZyYW1lIHNpemUKKyAgICBpbnQgZnJhbWVXaWR0aCA9IDAsIGZyYW1lSGVpZ2h0ID0gMDsKKyAgICBuZXdDYW1lcmFQYXJhbXMuZ2V0UHJldmlld1NpemUoJmZyYW1lV2lkdGgsICZmcmFtZUhlaWdodCk7CisgICAgaWYgKGZyYW1lV2lkdGggIDwgMCB8fCBmcmFtZVdpZHRoICAhPSBtVmlkZW9XaWR0aCB8fAorICAgICAgICBmcmFtZUhlaWdodCA8IDAgfHwgZnJhbWVIZWlnaHQgIT0gbVZpZGVvSGVpZ2h0KSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBzZXQgdGhlIHZpZGVvIGZyYW1lIHNpemUgdG8gJWR4JWQiLAorICAgICAgICAgICAgICAgIG1WaWRlb1dpZHRoLCBtVmlkZW9IZWlnaHQpOworICAgICAgICBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KHRva2VuKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgLy8gQ2hlY2sgb24gdmlkZW8gZnJhbWUgcmF0ZQorICAgIGludCBmcmFtZVJhdGUgPSBuZXdDYW1lcmFQYXJhbXMuZ2V0UHJldmlld0ZyYW1lUmF0ZSgpOworICAgIGlmIChmcmFtZVJhdGUgPCAwIHx8IChmcmFtZVJhdGUgLSBtRnJhbWVSYXRlKSAhPSAwKSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBzZXQgZnJhbWUgcmF0ZSB0byAlZCBmcHMuIFRoZSBhY3R1YWwgIgorICAgICAgICAgICAgICJmcmFtZSByYXRlIGlzICVkIiwgbUZyYW1lUmF0ZSwgZnJhbWVSYXRlKTsKKyAgICB9CisKKyAgICBDSEVDS19FUShPSywgbUNhbWVyYS0+c2V0UHJldmlld0Rpc3BsYXkobVByZXZpZXdTdXJmYWNlKSk7CisgICAgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+cmVzdG9yZUNhbGxpbmdJZGVudGl0eSh0b2tlbik7CisgICAgcmV0dXJuIE9LOworfQorCit2b2lkIFN0YWdlZnJpZ2h0UmVjb3JkZXI6OmNsaXBWaWRlb0ZyYW1lSGVpZ2h0KCkgeworICAgIExPR1YoImNsaXBWaWRlb0ZyYW1lSGVpZ2h0OiBlbmNvZGVyICVkIiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaW50IG1pbkZyYW1lSGVpZ2h0ID0gbUVuY29kZXJQcm9maWxlcy0+Z2V0VmlkZW9FbmNvZGVyUGFyYW1CeU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5jLnZpZC5oZWlnaHQubWluIiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaW50IG1heEZyYW1lSGVpZ2h0ID0gbUVuY29kZXJQcm9maWxlcy0+Z2V0VmlkZW9FbmNvZGVyUGFyYW1CeU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5jLnZpZC5oZWlnaHQubWF4IiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaWYgKG1WaWRlb0hlaWdodCA8IG1pbkZyYW1lSGVpZ2h0KSB7CisgICAgICAgIExPR1coIkludGVuZGVkIHZpZGVvIGVuY29kaW5nIGZyYW1lIGhlaWdodCAoJWQpIGlzIHRvbyBzbWFsbCIKKyAgICAgICAgICAgICAiIGFuZCB3aWxsIGJlIHNldCB0byAoJWQpIiwgbVZpZGVvSGVpZ2h0LCBtaW5GcmFtZUhlaWdodCk7CisgICAgICAgIG1WaWRlb0hlaWdodCA9IG1pbkZyYW1lSGVpZ2h0OworICAgIH0gZWxzZSBpZiAobVZpZGVvSGVpZ2h0ID4gbWF4RnJhbWVIZWlnaHQpIHsKKyAgICAgICAgTE9HVygiSW50ZW5kZWQgdmlkZW8gZW5jb2RpbmcgZnJhbWUgaGVpZ2h0ICglZCkgaXMgdG9vIGxhcmdlIgorICAgICAgICAgICAgICIgYW5kIHdpbGwgYmUgc2V0IHRvICglZCkiLCBtVmlkZW9IZWlnaHQsIG1heEZyYW1lSGVpZ2h0KTsKKyAgICAgICAgbVZpZGVvSGVpZ2h0ID0gbWF4RnJhbWVIZWlnaHQ7CisgICAgfQorfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXR1cFZpZGVvRW5jb2Rlcihjb25zdCBzcDxNZWRpYVdyaXRlcj4mIHdyaXRlcikgeworICAgIHN0YXR1c190IGVyciA9IHNldHVwQ2FtZXJhU291cmNlKCk7CisgICAgaWYgKGVyciAhPSBPSykgcmV0dXJuIGVycjsKKworICAgIHNwPENhbWVyYVNvdXJjZT4gY2FtZXJhU291cmNlID0gQ2FtZXJhU291cmNlOjpDcmVhdGVGcm9tQ2FtZXJhKG1DYW1lcmEpOworICAgIENIRUNLKGNhbWVyYVNvdXJjZSAhPSBOVUxMKTsKKworICAgIHNwPE1ldGFEYXRhPiBlbmNfbWV0YSA9IG5ldyBNZXRhRGF0YTsKKyAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleUJpdFJhdGUsIG1WaWRlb0JpdFJhdGUpOworICAgIGVuY19tZXRhLT5zZXRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgbUZyYW1lUmF0ZSk7CisKKyAgICBzd2l0Y2ggKG1WaWRlb0VuY29kZXIpIHsKKyAgICAgICAgY2FzZSBWSURFT19FTkNPREVSX0gyNjM6CisgICAgICAgICAgICBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0gyNjMpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBWSURFT19FTkNPREVSX01QRUdfNF9TUDoKKyAgICAgICAgICAgIGVuY19tZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBWSURFT19FTkNPREVSX0gyNjQ6CisgICAgICAgICAgICBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQ0hFQ0soISJTaG91bGQgbm90IGJlIGhlcmUsIHVuc3VwcG9ydGVkIHZpZGVvIGVuY29kaW5nLiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBjYW1lcmFTb3VyY2UtPmdldEZvcm1hdCgpOworCisgICAgaW50MzJfdCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUsIHNsaWNlSGVpZ2h0OworICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5V2lkdGgsICZ3aWR0aCkpOworICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5SGVpZ2h0LCAmaGVpZ2h0KSk7CisgICAgQ0hFQ0sobWV0YS0+ZmluZEludDMyKGtLZXlTdHJpZGUsICZzdHJpZGUpKTsKKyAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoa0tleVNsaWNlSGVpZ2h0LCAmc2xpY2VIZWlnaHQpKTsKKworICAgIGVuY19tZXRhLT5zZXRJbnQzMihrS2V5V2lkdGgsIHdpZHRoKTsKKyAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleUhlaWdodCwgaGVpZ2h0KTsKKyAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleUlGcmFtZXNJbnRlcnZhbCwgbUlGcmFtZXNJbnRlcnZhbCk7CisgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlTdHJpZGUsIHN0cmlkZSk7CisgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlTbGljZUhlaWdodCwgc2xpY2VIZWlnaHQpOworICAgIGlmIChtVmlkZW9FbmNvZGVyUHJvZmlsZSAhPSAtMSkgeworICAgICAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleVZpZGVvUHJvZmlsZSwgbVZpZGVvRW5jb2RlclByb2ZpbGUpOworICAgIH0KKyAgICBpZiAobVZpZGVvRW5jb2RlckxldmVsICE9IC0xKSB7CisgICAgICAgIGVuY19tZXRhLT5zZXRJbnQzMihrS2V5VmlkZW9MZXZlbCwgbVZpZGVvRW5jb2RlckxldmVsKTsKKyAgICB9CisKKyAgICBPTVhDbGllbnQgY2xpZW50OworICAgIENIRUNLX0VRKGNsaWVudC5jb25uZWN0KCksIE9LKTsKKworICAgIHNwPE1lZGlhU291cmNlPiBlbmNvZGVyID0gT01YQ29kZWM6OkNyZWF0ZSgKKyAgICAgICAgICAgIGNsaWVudC5pbnRlcmZhY2UoKSwgZW5jX21ldGEsCisgICAgICAgICAgICB0cnVlIC8qIGNyZWF0ZUVuY29kZXIgKi8sIGNhbWVyYVNvdXJjZSk7CisgICAgaWYgKGVuY29kZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICB3cml0ZXItPmFkZFNvdXJjZShlbmNvZGVyKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldHVwQXVkaW9FbmNvZGVyKGNvbnN0IHNwPE1lZGlhV3JpdGVyPiYgd3JpdGVyKSB7CisgICAgc3A8TWVkaWFTb3VyY2U+IGF1ZGlvRW5jb2RlcjsKKyAgICBzd2l0Y2gobUF1ZGlvRW5jb2RlcikgeworICAgICAgICBjYXNlIEFVRElPX0VOQ09ERVJfQU1SX05COgorICAgICAgICBjYXNlIEFVRElPX0VOQ09ERVJfQU1SX1dCOgorICAgICAgICBjYXNlIEFVRElPX0VOQ09ERVJfQUFDOgorICAgICAgICAgICAgYXVkaW9FbmNvZGVyID0gY3JlYXRlQXVkaW9Tb3VyY2UoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HRSgiVW5zdXBwb3J0ZWQgYXVkaW8gZW5jb2RlcjogJWQiLCBtQXVkaW9FbmNvZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIGlmIChhdWRpb0VuY29kZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisgICAgd3JpdGVyLT5hZGRTb3VyY2UoYXVkaW9FbmNvZGVyKTsKKyAgICByZXR1cm4gT0s7Cit9CisKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnN0YXJ0TVBFRzRSZWNvcmRpbmcoKSB7Ci0gICAgbVdyaXRlciA9IG5ldyBNUEVHNFdyaXRlcihkdXAobU91dHB1dEZkKSk7CisgICAgaW50MzJfdCB0b3RhbEJpdFJhdGUgPSAwOworICAgIHN0YXR1c190IGVyciA9IE9LOworICAgIHNwPE1lZGlhV3JpdGVyPiB3cml0ZXIgPSBuZXcgTVBFRzRXcml0ZXIoZHVwKG1PdXRwdXRGZCkpOwogCisgICAgLy8gQWRkIGF1ZGlvIHNvdXJjZSBmaXJzdCBpZiBpdCBleGlzdHMKKyAgICBpZiAobUF1ZGlvU291cmNlICE9IEFVRElPX1NPVVJDRV9MSVNUX0VORCkgeworICAgICAgICBlcnIgPSBzZXR1cEF1ZGlvRW5jb2Rlcih3cml0ZXIpOworICAgICAgICBpZiAoZXJyICE9IE9LKSByZXR1cm4gZXJyOworICAgICAgICB0b3RhbEJpdFJhdGUgKz0gbUF1ZGlvQml0UmF0ZTsKKyAgICB9CiAgICAgaWYgKG1WaWRlb1NvdXJjZSA9PSBWSURFT19TT1VSQ0VfREVGQVVMVAogICAgICAgICAgICAgfHwgbVZpZGVvU291cmNlID09IFZJREVPX1NPVVJDRV9DQU1FUkEpIHsKLSAgICAgICAgQ0hFQ0sobUNhbWVyYSAhPSBOVUxMKTsKLQotICAgICAgICBzcDxDYW1lcmFTb3VyY2U+IGNhbWVyYVNvdXJjZSA9Ci0gICAgICAgICAgICBDYW1lcmFTb3VyY2U6OkNyZWF0ZUZyb21JQ2FtZXJhKG1DYW1lcmEpOwotCi0gICAgICAgIENIRUNLKGNhbWVyYVNvdXJjZSAhPSBOVUxMKTsKLQotICAgICAgICBjYW1lcmFTb3VyY2UtPnNldFByZXZpZXdTdXJmYWNlKG1QcmV2aWV3U3VyZmFjZSk7Ci0KLSAgICAgICAgc3A8TWV0YURhdGE+IGVuY19tZXRhID0gbmV3IE1ldGFEYXRhOwotICAgICAgICBzd2l0Y2ggKG1WaWRlb0VuY29kZXIpIHsKLSAgICAgICAgICAgIGNhc2UgVklERU9fRU5DT0RFUl9IMjYzOgotICAgICAgICAgICAgICAgIGVuY19tZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2Myk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgVklERU9fRU5DT0RFUl9NUEVHXzRfU1A6Ci0gICAgICAgICAgICAgICAgZW5jX21ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgVklERU9fRU5DT0RFUl9IMjY0OgotICAgICAgICAgICAgICAgIGVuY19tZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBDSEVDSyghIlNob3VsZCBub3QgYmUgaGVyZSwgdW5zdXBwb3J0ZWQgdmlkZW8gZW5jb2RpbmcuIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBzcDxNZXRhRGF0YT4gbWV0YSA9IGNhbWVyYVNvdXJjZS0+Z2V0Rm9ybWF0KCk7Ci0KLSAgICAgICAgaW50MzJfdCB3aWR0aCwgaGVpZ2h0OwotICAgICAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoa0tleVdpZHRoLCAmd2lkdGgpKTsKLSAgICAgICAgQ0hFQ0sobWV0YS0+ZmluZEludDMyKGtLZXlIZWlnaHQsICZoZWlnaHQpKTsKLQotICAgICAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleVdpZHRoLCB3aWR0aCk7Ci0gICAgICAgIGVuY19tZXRhLT5zZXRJbnQzMihrS2V5SGVpZ2h0LCBoZWlnaHQpOwotCi0gICAgICAgIE9NWENsaWVudCBjbGllbnQ7Ci0gICAgICAgIENIRUNLX0VRKGNsaWVudC5jb25uZWN0KCksIE9LKTsKLQotICAgICAgICBzcDxNZWRpYVNvdXJjZT4gZW5jb2RlciA9Ci0gICAgICAgICAgICBPTVhDb2RlYzo6Q3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBjbGllbnQuaW50ZXJmYWNlKCksIGVuY19tZXRhLAotICAgICAgICAgICAgICAgICAgICB0cnVlIC8qIGNyZWF0ZUVuY29kZXIgKi8sIGNhbWVyYVNvdXJjZSk7Ci0KLSAgICAgICAgQ0hFQ0sobU91dHB1dEZkID49IDApOwotICAgICAgICBtV3JpdGVyLT5hZGRTb3VyY2UoZW5jb2Rlcik7CisgICAgICAgIGVyciA9IHNldHVwVmlkZW9FbmNvZGVyKHdyaXRlcik7CisgICAgICAgIGlmIChlcnIgIT0gT0spIHJldHVybiBlcnI7CisgICAgICAgIHRvdGFsQml0UmF0ZSArPSBtVmlkZW9CaXRSYXRlOwogICAgIH0KIAotICAgIGlmIChtQXVkaW9Tb3VyY2UgIT0gQVVESU9fU09VUkNFX0xJU1RfRU5EKSB7Ci0gICAgICAgIHNwPE1lZGlhU291cmNlPiBhdWRpb0VuY29kZXIgPSBjcmVhdGVBTVJBdWRpb1NvdXJjZSgpOworICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TVBFRzRXcml0ZXIgKj4od3JpdGVyLmdldCgpKS0+CisgICAgICAgIHNldEludGVybGVhdmVEdXJhdGlvbihtSW50ZXJsZWF2ZUR1cmF0aW9uVXMpOwogCi0gICAgICAgIGlmIChhdWRpb0VuY29kZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7Ci0gICAgICAgIH0KLQotICAgICAgICBtV3JpdGVyLT5hZGRTb3VyY2UoYXVkaW9FbmNvZGVyKTsKKyAgICBpZiAobU1heEZpbGVEdXJhdGlvblVzICE9IDApIHsKKyAgICAgICAgd3JpdGVyLT5zZXRNYXhGaWxlRHVyYXRpb24obU1heEZpbGVEdXJhdGlvblVzKTsKICAgICB9CisgICAgaWYgKG1NYXhGaWxlU2l6ZUJ5dGVzICE9IDApIHsKKyAgICAgICAgd3JpdGVyLT5zZXRNYXhGaWxlU2l6ZShtTWF4RmlsZVNpemVCeXRlcyk7CisgICAgfQorICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbmV3IE1ldGFEYXRhOworICAgIG1ldGEtPnNldEludDY0KGtLZXlUaW1lLCBzeXN0ZW1UaW1lKCkgLyAxMDAwKTsKKyAgICBtZXRhLT5zZXRJbnQzMihrS2V5RmlsZVR5cGUsIG1PdXRwdXRGb3JtYXQpOworICAgIG1ldGEtPnNldEludDMyKGtLZXlCaXRSYXRlLCB0b3RhbEJpdFJhdGUpOworICAgIG1ldGEtPnNldEludDMyKGtLZXk2NEJpdEZpbGVPZmZzZXQsIG1Vc2U2NEJpdEZpbGVPZmZzZXQpOworICAgIGlmIChtVHJhY2tFdmVyeU51bWJlck9mRnJhbWVzID4gMCkgeworICAgICAgICBtZXRhLT5zZXRJbnQzMihrS2V5VHJhY2tGcmFtZVN0YXR1cywgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lcyk7CisgICAgfQorICAgIGlmIChtVHJhY2tFdmVyeVRpbWVEdXJhdGlvblVzID4gMCkgeworICAgICAgICBtZXRhLT5zZXRJbnQ2NChrS2V5VHJhY2tUaW1lU3RhdHVzLCBtVHJhY2tFdmVyeVRpbWVEdXJhdGlvblVzKTsKKyAgICB9CisgICAgd3JpdGVyLT5zZXRMaXN0ZW5lcihtTGlzdGVuZXIpOworICAgIG1Xcml0ZXIgPSB3cml0ZXI7CisgICAgcmV0dXJuIG1Xcml0ZXItPnN0YXJ0KG1ldGEuZ2V0KCkpOworfQogCi0gICAgbVdyaXRlci0+c3RhcnQoKTsKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnBhdXNlKCkgeworICAgIExPR1YoInBhdXNlIik7CisgICAgaWYgKG1Xcml0ZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisgICAgbVdyaXRlci0+cGF1c2UoKTsKICAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnN0b3AoKSB7Ci0gICAgaWYgKG1Xcml0ZXIgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICBMT0dWKCJzdG9wIik7CisgICAgaWYgKG1Xcml0ZXIgIT0gTlVMTCkgeworICAgICAgICBtV3JpdGVyLT5zdG9wKCk7CisgICAgICAgIG1Xcml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICBtV3JpdGVyLT5zdG9wKCk7Ci0gICAgbVdyaXRlciA9IE5VTEw7CisgICAgaWYgKG1DYW1lcmEgIT0gMCkgeworICAgICAgICBMT0dWKCJEaXNjb25uZWN0IGNhbWVyYSIpOworICAgICAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICAgICAgaWYgKChtRmxhZ3MgJiBGTEFHU19IT1RfQ0FNRVJBKSA9PSAwKSB7CisgICAgICAgICAgICBMT0dWKCJDYW1lcmEgd2FzIGNvbGQgd2hlbiB3ZSBzdGFydGVkLCBzdG9wcGluZyBwcmV2aWV3Iik7CisgICAgICAgICAgICBtQ2FtZXJhLT5zdG9wUHJldmlldygpOworICAgICAgICB9CisgICAgICAgIG1DYW1lcmEtPnVubG9jaygpOworICAgICAgICBtQ2FtZXJhLmNsZWFyKCk7CisgICAgICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOworICAgICAgICBtRmxhZ3MgPSAwOworICAgIH0KIAogICAgIHJldHVybiBPSzsKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6Y2xvc2UoKSB7CisgICAgTE9HVigiY2xvc2UiKTsKICAgICBzdG9wKCk7CiAKICAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnJlc2V0KCkgeworICAgIExPR1YoInJlc2V0Iik7CiAgICAgc3RvcCgpOwogCisgICAgLy8gTm8gYXVkaW8gb3IgdmlkZW8gc291cmNlIGJ5IGRlZmF1bHQKICAgICBtQXVkaW9Tb3VyY2UgPSBBVURJT19TT1VSQ0VfTElTVF9FTkQ7CiAgICAgbVZpZGVvU291cmNlID0gVklERU9fU09VUkNFX0xJU1RfRU5EOwotICAgIG1PdXRwdXRGb3JtYXQgPSBPVVRQVVRfRk9STUFUX0xJU1RfRU5EOwotICAgIG1BdWRpb0VuY29kZXIgPSBBVURJT19FTkNPREVSX0xJU1RfRU5EOwotICAgIG1WaWRlb0VuY29kZXIgPSBWSURFT19FTkNPREVSX0xJU1RfRU5EOwotICAgIG1WaWRlb1dpZHRoID0gLTE7Ci0gICAgbVZpZGVvSGVpZ2h0ID0gLTE7Ci0gICAgbUZyYW1lUmF0ZSA9IC0xOworCisgICAgLy8gRGVmYXVsdCBwYXJhbWV0ZXJzCisgICAgbU91dHB1dEZvcm1hdCAgPSBPVVRQVVRfRk9STUFUX1RIUkVFX0dQUDsKKyAgICBtQXVkaW9FbmNvZGVyICA9IEFVRElPX0VOQ09ERVJfQU1SX05COworICAgIG1WaWRlb0VuY29kZXIgID0gVklERU9fRU5DT0RFUl9IMjYzOworICAgIG1WaWRlb1dpZHRoICAgID0gMTc2OworICAgIG1WaWRlb0hlaWdodCAgID0gMTQ0OworICAgIG1GcmFtZVJhdGUgICAgID0gMjA7CisgICAgbVZpZGVvQml0UmF0ZSAgPSAxOTIwMDA7CisgICAgbVNhbXBsZVJhdGUgICAgPSA4MDAwOworICAgIG1BdWRpb0NoYW5uZWxzID0gMTsKKyAgICBtQXVkaW9CaXRSYXRlICA9IDEyMjAwOworICAgIG1JbnRlcmxlYXZlRHVyYXRpb25VcyA9IDA7CisgICAgbUlGcmFtZXNJbnRlcnZhbCA9IDE7CisgICAgbUF1ZGlvU291cmNlTm9kZSA9IDA7CisgICAgbVVzZTY0Qml0RmlsZU9mZnNldCA9IGZhbHNlOworICAgIG1DYW1lcmFJZCAgICAgICAgPSAwOworICAgIG1WaWRlb0VuY29kZXJQcm9maWxlID0gLTE7CisgICAgbVZpZGVvRW5jb2RlckxldmVsICAgPSAtMTsKKyAgICBtTWF4RmlsZUR1cmF0aW9uVXMgPSAwOworICAgIG1NYXhGaWxlU2l6ZUJ5dGVzID0gMDsKKyAgICBtVHJhY2tFdmVyeU51bWJlck9mRnJhbWVzID0gMDsKKyAgICBtVHJhY2tFdmVyeVRpbWVEdXJhdGlvblVzID0gMDsKKyAgICBtRW5jb2RlclByb2ZpbGVzID0gTWVkaWFQcm9maWxlczo6Z2V0SW5zdGFuY2UoKTsKKwogICAgIG1PdXRwdXRGZCA9IC0xOworICAgIG1GbGFncyA9IDA7CiAKICAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OmdldE1heEFtcGxpdHVkZShpbnQgKm1heCkgewotICAgICptYXggPSAwOworICAgIExPR1YoImdldE1heEFtcGxpdHVkZSIpOworCisgICAgaWYgKG1heCA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIk51bGwgcG9pbnRlciBhcmd1bWVudCIpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIGlmIChtQXVkaW9Tb3VyY2VOb2RlICE9IDApIHsKKyAgICAgICAgKm1heCA9IG1BdWRpb1NvdXJjZU5vZGUtPmdldE1heEFtcGxpdHVkZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgICptYXggPSAwOworICAgIH0KIAogICAgIHJldHVybiBPSzsKIH0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9TdGFnZWZyaWdodFJlY29yZGVyLmggYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvU3RhZ2VmcmlnaHRSZWNvcmRlci5oCmluZGV4IDdlYzQxMmQuLjg1ZDI1NTcgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9TdGFnZWZyaWdodFJlY29yZGVyLmgKKysrIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1N0YWdlZnJpZ2h0UmVjb3JkZXIuaApAQCAtMjMsOCArMjMsMTEgQEAKIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCitjbGFzcyBDYW1lcmE7CiBzdHJ1Y3QgTWVkaWFTb3VyY2U7CiBzdHJ1Y3QgTWVkaWFXcml0ZXI7CitzdHJ1Y3QgQXVkaW9Tb3VyY2U7CitjbGFzcyBNZWRpYVByb2ZpbGVzOwogCiBzdHJ1Y3QgU3RhZ2VmcmlnaHRSZWNvcmRlciA6IHB1YmxpYyBNZWRpYVJlY29yZGVyQmFzZSB7CiAgICAgU3RhZ2VmcmlnaHRSZWNvcmRlcigpOwpAQCAtNDMsMzMgKzQ2LDgzIEBACiAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRPdXRwdXRGaWxlKGNvbnN0IGNoYXIgKnBhdGgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0T3V0cHV0RmlsZShpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIHBhcmFtcyk7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBsaXN0ZW5lcik7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4mIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHByZXBhcmUoKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBwYXVzZSgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3QgY2xvc2UoKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHJlc2V0KCk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRNYXhBbXBsaXR1ZGUoaW50ICptYXgpOwogCiBwcml2YXRlOgotICAgIHNwPElDYW1lcmE+IG1DYW1lcmE7CisgICAgZW51bSBDYW1lcmFGbGFncyB7CisgICAgICAgIEZMQUdTX1NFVF9DQU1FUkEgPSAxTCA8PCAwLAorICAgICAgICBGTEFHU19IT1RfQ0FNRVJBID0gMUwgPDwgMSwKKyAgICB9OworCisgICAgc3A8Q2FtZXJhPiBtQ2FtZXJhOwogICAgIHNwPElTdXJmYWNlPiBtUHJldmlld1N1cmZhY2U7Ci0gICAgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiBtTGlzdGVuZXI7CisgICAgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+IG1MaXN0ZW5lcjsKICAgICBzcDxNZWRpYVdyaXRlcj4gbVdyaXRlcjsKKyAgICBzcDxBdWRpb1NvdXJjZT4gbUF1ZGlvU291cmNlTm9kZTsKIAogICAgIGF1ZGlvX3NvdXJjZSBtQXVkaW9Tb3VyY2U7CiAgICAgdmlkZW9fc291cmNlIG1WaWRlb1NvdXJjZTsKICAgICBvdXRwdXRfZm9ybWF0IG1PdXRwdXRGb3JtYXQ7CiAgICAgYXVkaW9fZW5jb2RlciBtQXVkaW9FbmNvZGVyOwogICAgIHZpZGVvX2VuY29kZXIgbVZpZGVvRW5jb2RlcjsKLSAgICBpbnQgbVZpZGVvV2lkdGgsIG1WaWRlb0hlaWdodDsKLSAgICBpbnQgbUZyYW1lUmF0ZTsKKyAgICBib29sIG1Vc2U2NEJpdEZpbGVPZmZzZXQ7CisgICAgaW50MzJfdCBtVmlkZW9XaWR0aCwgbVZpZGVvSGVpZ2h0OworICAgIGludDMyX3QgbUZyYW1lUmF0ZTsKKyAgICBpbnQzMl90IG1WaWRlb0JpdFJhdGU7CisgICAgaW50MzJfdCBtQXVkaW9CaXRSYXRlOworICAgIGludDMyX3QgbUF1ZGlvQ2hhbm5lbHM7CisgICAgaW50MzJfdCBtU2FtcGxlUmF0ZTsKKyAgICBpbnQzMl90IG1JbnRlcmxlYXZlRHVyYXRpb25VczsKKyAgICBpbnQzMl90IG1JRnJhbWVzSW50ZXJ2YWw7CisgICAgaW50MzJfdCBtQ2FtZXJhSWQ7CisgICAgaW50MzJfdCBtVmlkZW9FbmNvZGVyUHJvZmlsZTsKKyAgICBpbnQzMl90IG1WaWRlb0VuY29kZXJMZXZlbDsKKyAgICBpbnQ2NF90IG1NYXhGaWxlU2l6ZUJ5dGVzOworICAgIGludDY0X3QgbU1heEZpbGVEdXJhdGlvblVzOworICAgIGludDMyX3QgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lczsKKyAgICBpbnQ2NF90IG1UcmFja0V2ZXJ5VGltZUR1cmF0aW9uVXM7CisKICAgICBTdHJpbmc4IG1QYXJhbXM7CiAgICAgaW50IG1PdXRwdXRGZDsKKyAgICBpbnQzMl90IG1GbGFnczsKKworICAgIE1lZGlhUHJvZmlsZXMgKm1FbmNvZGVyUHJvZmlsZXM7CiAKICAgICBzdGF0dXNfdCBzdGFydE1QRUc0UmVjb3JkaW5nKCk7CiAgICAgc3RhdHVzX3Qgc3RhcnRBTVJSZWNvcmRpbmcoKTsKLSAgICBzcDxNZWRpYVNvdXJjZT4gY3JlYXRlQU1SQXVkaW9Tb3VyY2UoKTsKKyAgICBzdGF0dXNfdCBzdGFydEFBQ1JlY29yZGluZygpOworICAgIHNwPE1lZGlhU291cmNlPiBjcmVhdGVBdWRpb1NvdXJjZSgpOworICAgIHN0YXR1c190IHNldHVwQ2FtZXJhU291cmNlKCk7CisgICAgc3RhdHVzX3Qgc2V0dXBBdWRpb0VuY29kZXIoY29uc3Qgc3A8TWVkaWFXcml0ZXI+JiB3cml0ZXIpOworICAgIHN0YXR1c190IHNldHVwVmlkZW9FbmNvZGVyKGNvbnN0IHNwPE1lZGlhV3JpdGVyPiYgd3JpdGVyKTsKKworICAgIC8vIEVuY29kaW5nIHBhcmFtZXRlciBoYW5kbGluZyB1dGlsaXRpZXMKKyAgICBzdGF0dXNfdCBzZXRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nOCAma2V5LCBjb25zdCBTdHJpbmc4ICZ2YWx1ZSk7CisgICAgc3RhdHVzX3Qgc2V0UGFyYW1BdWRpb0VuY29kaW5nQml0UmF0ZShpbnQzMl90IGJpdFJhdGUpOworICAgIHN0YXR1c190IHNldFBhcmFtQXVkaW9OdW1iZXJPZkNoYW5uZWxzKGludDMyX3QgY2hhbm5sZXMpOworICAgIHN0YXR1c190IHNldFBhcmFtQXVkaW9TYW1wbGluZ1JhdGUoaW50MzJfdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVZpZGVvRW5jb2RpbmdCaXRSYXRlKGludDMyX3QgYml0UmF0ZSk7CisgICAgc3RhdHVzX3Qgc2V0UGFyYW1WaWRlb0lGcmFtZXNJbnRlcnZhbChpbnQzMl90IGludGVydmFsKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVZpZGVvRW5jb2RlclByb2ZpbGUoaW50MzJfdCBwcm9maWxlKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVZpZGVvRW5jb2RlckxldmVsKGludDMyX3QgbGV2ZWwpOworICAgIHN0YXR1c190IHNldFBhcmFtVmlkZW9DYW1lcmFJZChpbnQzMl90IGNhbWVyYUlkKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVRyYWNrVGltZVN0YXR1cyhpbnQ2NF90IHRpbWVEdXJhdGlvblVzKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVRyYWNrRnJhbWVTdGF0dXMoaW50MzJfdCBuRnJhbWVzKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbUludGVybGVhdmVEdXJhdGlvbihpbnQzMl90IGR1cmF0aW9uVXMpOworICAgIHN0YXR1c190IHNldFBhcmFtNjRCaXRGaWxlT2Zmc2V0KGJvb2wgdXNlNjRCaXRGaWxlT2Zmc2V0KTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbU1heEZpbGVEdXJhdGlvblVzKGludDY0X3QgdGltZVVzKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbU1heEZpbGVTaXplQnl0ZXMoaW50NjRfdCBieXRlcyk7CisgICAgdm9pZCBjbGlwVmlkZW9CaXRSYXRlKCk7CisgICAgdm9pZCBjbGlwVmlkZW9GcmFtZVJhdGUoKTsKKyAgICB2b2lkIGNsaXBWaWRlb0ZyYW1lV2lkdGgoKTsKKyAgICB2b2lkIGNsaXBWaWRlb0ZyYW1lSGVpZ2h0KCk7CiAKICAgICBTdGFnZWZyaWdodFJlY29yZGVyKGNvbnN0IFN0YWdlZnJpZ2h0UmVjb3JkZXIgJik7CiAgICAgU3RhZ2VmcmlnaHRSZWNvcmRlciAmb3BlcmF0b3I9KGNvbnN0IFN0YWdlZnJpZ2h0UmVjb3JkZXIgJik7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuY3BwIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1ZvcmJpc01ldGFkYXRhUmV0cmlldmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFjNzRmYy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSoqCi0qKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotKioKLSoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0qKgotKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotKioKLSoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0qKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotKi8KLQotLy8jZGVmaW5lIExPR19OREVCVUcgMAotI2RlZmluZSBMT0dfVEFHICJWb3JiaXNNZXRhZGF0YVJldHJpZXZlciIKLSNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KLQotI2luY2x1ZGUgIlZvcmJpc01ldGFkYXRhUmV0cmlldmVyLmgiCi0jaW5jbHVkZSA8bWVkaWEvbWVkaWFtZXRhZGF0YXJldHJpZXZlci5oPgotIwotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLXZvaWQgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXI6OmNsZWFyTWV0YWRhdGFWYWx1ZXMoKQotewotICAgIExPR1YoImNsZWVhck1ldGFkYXRhVmFsdWVzIik7Ci0gICAgbU1ldGFkYXRhVmFsdWVzWzBdWzBdID0gJ1wwJzsKLX0KLQotc3RhdHVzX3QgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXI6OnNldERhdGFTb3VyY2UoY29uc3QgY2hhciAqdXJsKQotewotICAgIExPR1YoInNldERhdGFTb3VyY2U6IHVybCglcykiLCB1cmw/IHVybDogIk5VTEwgcG9pbnRlciIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBjbGVhck1ldGFkYXRhVmFsdWVzKCk7Ci0gICAgaWYgKG1Wb3JiaXNQbGF5ZXIgPT0gMCkgewotICAgICAgICBtVm9yYmlzUGxheWVyID0gbmV3IFZvcmJpc1BsYXllcigpOwotICAgIH0KLSAgICAvLyBUT0RPOiBzdXBwb3J0IGhlYWRlcnMgaW4gTWV0YWRhdGFSZXRyaWV2ZXIgaW50ZXJmYWNlIQotICAgIHJldHVybiBtVm9yYmlzUGxheWVyLT5zZXREYXRhU291cmNlKHVybCwgTlVMTCAvKiBoZWFkZXJzICovKTsKLX0KLQotc3RhdHVzX3QgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXI6OnNldERhdGFTb3VyY2UoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpCi17Ci0gICAgTE9HVigic2V0RGF0YVNvdXJjZTogZmQoJWQpLCBvZmZzZXQoJWxsZCksIGFuZCBsZW5ndGgoJWxsZCkiLCBmZCwgb2Zmc2V0LCBsZW5ndGgpOwotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBjbGVhck1ldGFkYXRhVmFsdWVzKCk7Ci0gICAgaWYgKG1Wb3JiaXNQbGF5ZXIgPT0gMCkgewotICAgICAgICBtVm9yYmlzUGxheWVyID0gbmV3IFZvcmJpc1BsYXllcigpOwotICAgIH0KLSAgICByZXR1cm4gbVZvcmJpc1BsYXllci0+c2V0RGF0YVNvdXJjZShmZCwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCi1jb25zdCBjaGFyKiBWb3JiaXNNZXRhZGF0YVJldHJpZXZlcjo6ZXh0cmFjdE1ldGFkYXRhKGludCBrZXlDb2RlKQotewotICAgIExPR1YoImV4dHJhY3RNZXRhZGF0YToga2V5KCVkKSIsIGtleUNvZGUpOwotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBpZiAobVZvcmJpc1BsYXllciA9PSAwIHx8IG1Wb3JiaXNQbGF5ZXItPmluaXRDaGVjaygpICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoIm5vIHZvcmJpcyBwbGF5ZXIgaXMgaW5pdGlhbGl6ZWQgeWV0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzd2l0Y2ggKGtleUNvZGUpIHsKLSAgICBjYXNlIE1FVEFEQVRBX0tFWV9EVVJBVElPTjoKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1NZXRhZGF0YVZhbHVlc1swXVswXSA9PSAnXDAnKSB7Ci0gICAgICAgICAgICAgICAgaW50IGR1cmF0aW9uID0gLTE7Ci0gICAgICAgICAgICAgICAgaWYgKG1Wb3JiaXNQbGF5ZXItPmdldER1cmF0aW9uKCZkdXJhdGlvbikgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HRSgiZmFpbGVkIHRvIGdldCBkdXJhdGlvbiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc25wcmludGYobU1ldGFkYXRhVmFsdWVzWzBdLCBNQVhfTUVUQURBVEFfU1RSSU5HX0xFTkdUSCwgIiVkIiwgZHVyYXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgTE9HVigiZHVyYXRpb246ICVzIG1zIiwgbU1ldGFkYXRhVmFsdWVzWzBdKTsKLSAgICAgICAgICAgIHJldHVybiBtTWV0YWRhdGFWYWx1ZXNbMF07Ci0gICAgICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBMT0dFKCJVbnN1cHBvcnRlZCBrZXkgY29kZSAoJWQpIiwga2V5Q29kZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotfTsKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1ZvcmJpc01ldGFkYXRhUmV0cmlldmVyLmggYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1N2ZlMy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0qKgotKiogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSoqCi0qKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotKioKLSoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSoqCi0qKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0qKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0qKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0qKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSovCi0KLSNpZm5kZWYgQU5EUk9JRF9WT1JCSVNNRVRBREFUQVJFVFJJRVZFUl9ICi0jZGVmaW5lIEFORFJPSURfVk9SQklTTUVUQURBVEFSRVRSSUVWRVJfSAotCi0jaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgotI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgotI2luY2x1ZGUgPG1lZGlhL01lZGlhTWV0YWRhdGFSZXRyaWV2ZXJJbnRlcmZhY2UuaD4KLQotI2luY2x1ZGUgIlZvcmJpc1BsYXllci5oIgotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLWNsYXNzIFZvcmJpc01ldGFkYXRhUmV0cmlldmVyIDogcHVibGljIE1lZGlhTWV0YWRhdGFSZXRyaWV2ZXJJbnRlcmZhY2UgewotcHVibGljOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3JiaXNNZXRhZGF0YVJldHJpZXZlcigpIHt9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5Wb3JiaXNNZXRhZGF0YVJldHJpZXZlcigpIHt9Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICAgICAgICAgIHNldERhdGFTb3VyY2UoY29uc3QgY2hhciAqdXJsKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICAgICAgICAgIHNldERhdGFTb3VyY2UoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpOwotICAgIHZpcnR1YWwgY29uc3QgY2hhciogICAgICAgICAgICAgZXh0cmFjdE1ldGFkYXRhKGludCBrZXlDb2RlKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTUFYX01FVEFEQVRBX1NUUklOR19MRU5HVEggPSAxMjg7Ci0gICAgdm9pZCBjbGVhck1ldGFkYXRhVmFsdWVzKCk7Ci0KLSAgICBNdXRleCAgICAgICAgICAgICAgIG1Mb2NrOwotICAgIHNwPFZvcmJpc1BsYXllcj4gICAgbVZvcmJpc1BsYXllcjsKLSAgICBjaGFyICAgICAgICAgICAgICAgIG1NZXRhZGF0YVZhbHVlc1sxXVtNQVhfTUVUQURBVEFfU1RSSU5HX0xFTkdUSF07Ci19OwotCi19OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCi0jZW5kaWYgLy8gQU5EUk9JRF9WT1JCSVNNRVRBREFUQVJFVFJJRVZFUl9ICmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzUGxheWVyLmNwcCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9Wb3JiaXNQbGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTgxOTk5Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9Wb3JiaXNQbGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTI5ICswLDAgQEAKLS8qCi0qKiBDb3B5cmlnaHQgMjAwNywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotKioKLSoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0qKgotKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotKioKLSoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0qKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotKi8KLQotLy8jZGVmaW5lIExPR19OREVCVUcgMAotI2RlZmluZSBMT0dfVEFHICJWb3JiaXNQbGF5ZXIiCi0jaW5jbHVkZSAidXRpbHMvTG9nLmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c2NoZWQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotCi0KLSNpbmNsdWRlICJWb3JiaXNQbGF5ZXIuaCIKLQotI2lmZGVmIEhBVkVfR0VUVElECi1zdGF0aWMgcGlkX3QgbXlUaWQoKSB7IHJldHVybiBnZXR0aWQoKTsgfQotI2Vsc2UKLXN0YXRpYyBwaWRfdCBteVRpZCgpIHsgcmV0dXJuIGdldHBpZCgpOyB9Ci0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gVE9ETzogRGV0ZXJtaW5lIGFwcHJvcHJpYXRlIHJldHVybiBjb2Rlcwotc3RhdGljIHN0YXR1c190IEVSUk9SX05PVF9PUEVOID0gLTE7Ci1zdGF0aWMgc3RhdHVzX3QgRVJST1JfT1BFTl9GQUlMRUQgPSAtMjsKLXN0YXRpYyBzdGF0dXNfdCBFUlJPUl9BTExPQ0FURV9GQUlMRUQgPSAtNDsKLXN0YXRpYyBzdGF0dXNfdCBFUlJPUl9OT1RfU1VQUE9SVEVEID0gLTg7Ci1zdGF0aWMgc3RhdHVzX3QgRVJST1JfTk9UX1JFQURZID0gLTE2Owotc3RhdGljIHN0YXR1c190IFNUQVRFX0lOSVQgPSAwOwotc3RhdGljIHN0YXR1c190IFNUQVRFX0VSUk9SID0gMTsKLXN0YXRpYyBzdGF0dXNfdCBTVEFURV9PUEVOID0gMjsKLQotCi1Wb3JiaXNQbGF5ZXI6OlZvcmJpc1BsYXllcigpIDoKLSAgICBtQXVkaW9CdWZmZXIoTlVMTCksIG1QbGF5VGltZSgtMSksIG1EdXJhdGlvbigtMSksIG1TdGF0ZShTVEFURV9FUlJPUiksCi0gICAgbVN0cmVhbVR5cGUoQXVkaW9TeXN0ZW06Ok1VU0lDKSwgbUxvb3AoZmFsc2UpLCBtQW5kcm9pZExvb3AoZmFsc2UpLAotICAgIG1FeGl0KGZhbHNlKSwgbVBhdXNlZChmYWxzZSksIG1SZW5kZXIoZmFsc2UpLCBtUmVuZGVyVGlkKC0xKQotewotICAgIExPR1YoImNvbnN0cnVjdG9yXG4iKTsKLSAgICBtZW1zZXQoJm1Wb3JiaXNGaWxlLCAwLCBzaXplb2YgbVZvcmJpc0ZpbGUpOwotfQotCi12b2lkIFZvcmJpc1BsYXllcjo6b25GaXJzdFJlZigpCi17Ci0gICAgTE9HVigib25GaXJzdFJlZiIpOwotICAgIC8vIGNyZWF0ZSBwbGF5YmFjayB0aHJlYWQKLSAgICBNdXRleDo6QXV0b2xvY2sgbChtTXV0ZXgpOwotICAgIGNyZWF0ZVRocmVhZEV0YyhyZW5kZXJUaHJlYWQsIHRoaXMsICJ2b3JiaXMgZGVjb2RlciIsIEFORFJPSURfUFJJT1JJVFlfQVVESU8pOwotICAgIG1Db25kaXRpb24ud2FpdChtTXV0ZXgpOwotICAgIGlmIChtUmVuZGVyVGlkID4gMCkgewotICAgICAgICBMT0dWKCJyZW5kZXIgdGhyZWFkKCVkKSBzdGFydGVkIiwgbVJlbmRlclRpZCk7Ci0gICAgICAgIG1TdGF0ZSA9IFNUQVRFX0lOSVQ7Ci0gICAgfQotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OmluaXRDaGVjaygpCi17Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9FUlJPUikgcmV0dXJuIE5PX0VSUk9SOwotICAgIHJldHVybiBFUlJPUl9OT1RfUkVBRFk7Ci19Ci0KLVZvcmJpc1BsYXllcjo6flZvcmJpc1BsYXllcigpIHsKLSAgICBMT0dWKCJWb3JiaXNQbGF5ZXIgZGVzdHJ1Y3RvclxuIik7Ci0gICAgcmVsZWFzZSgpOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OnNldERhdGFTb3VyY2UoCi0gICAgICAgIGNvbnN0IGNoYXIgKnVyaSwgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMpIHsKLSAgICByZXR1cm4gc2V0ZGF0YXNvdXJjZSh1cmksIC0xLCAwLCAweDdmZmZmZmZmZmZmZmZmZkxMKTsgLy8gaW50ZW50aW9uYWxseSBsZXNzIHRoYW4gTE9OR19NQVgKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpzZXREYXRhU291cmNlKGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKQotewotICAgIHJldHVybiBzZXRkYXRhc291cmNlKE5VTEwsIGZkLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLXNpemVfdCBWb3JiaXNQbGF5ZXI6OnZwX2ZyZWFkKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqbWUpIHsKLSAgICBWb3JiaXNQbGF5ZXIgKnNlbGYgPSAoVm9yYmlzUGxheWVyKikgbWU7Ci0KLSAgICBsb25nIGN1cnBvcyA9IHZwX2Z0ZWxsKG1lKTsKLSAgICB3aGlsZSAobm1lbWIgIT0gMCAmJiAoY3VycG9zICsgc2l6ZSAqIG5tZW1iKSA+IHNlbGYtPm1MZW5ndGgpIHsKLSAgICAgICAgbm1lbWItLTsKLSAgICB9Ci0gICAgcmV0dXJuIGZyZWFkKGJ1Ziwgc2l6ZSwgbm1lbWIsIHNlbGYtPm1GaWxlKTsKLX0KLQotaW50IFZvcmJpc1BsYXllcjo6dnBfZnNlZWsodm9pZCAqbWUsIG9nZ19pbnQ2NF90IG9mZiwgaW50IHdoZW5jZSkgewotICAgIFZvcmJpc1BsYXllciAqc2VsZiA9IChWb3JiaXNQbGF5ZXIqKSBtZTsKLSAgICBpZiAod2hlbmNlID09IFNFRUtfU0VUKQotICAgICAgICByZXR1cm4gZnNlZWsoc2VsZi0+bUZpbGUsIG9mZiArIHNlbGYtPm1PZmZzZXQsIHdoZW5jZSk7Ci0gICAgZWxzZSBpZiAod2hlbmNlID09IFNFRUtfQ1VSKQotICAgICAgICByZXR1cm4gZnNlZWsoc2VsZi0+bUZpbGUsIG9mZiwgd2hlbmNlKTsKLSAgICBlbHNlIGlmICh3aGVuY2UgPT0gU0VFS19FTkQpCi0gICAgICAgIHJldHVybiBmc2VlayhzZWxmLT5tRmlsZSwgc2VsZi0+bU9mZnNldCArIHNlbGYtPm1MZW5ndGggKyBvZmYsIFNFRUtfU0VUKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWludCBWb3JiaXNQbGF5ZXI6OnZwX2ZjbG9zZSh2b2lkICptZSkgewotICAgIExPR1YoInZwX2ZjbG9zZSIpOwotICAgIFZvcmJpc1BsYXllciAqc2VsZiA9IChWb3JiaXNQbGF5ZXIqKSBtZTsKLSAgICBpbnQgcmV0ID0gZmNsb3NlIChzZWxmLT5tRmlsZSk7Ci0gICAgc2VsZi0+bUZpbGUgPSBOVUxMOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLWxvbmcgVm9yYmlzUGxheWVyOjp2cF9mdGVsbCh2b2lkICptZSkgewotICAgIFZvcmJpc1BsYXllciAqc2VsZiA9IChWb3JiaXNQbGF5ZXIqKSBtZTsKLSAgICByZXR1cm4gZnRlbGwoc2VsZi0+bUZpbGUpIC0gc2VsZi0+bU9mZnNldDsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpzZXRkYXRhc291cmNlKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKQotewotICAgIExPR1YoInNldERhdGFTb3VyY2UgdXJsPSVzLCBmZD0lZFxuIiwgcGF0aCwgZmQpOwotCi0gICAgLy8gZmlsZSBzdGlsbCBvcGVuPwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSA9PSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJlc2V0X25vc3luYygpOwotICAgIH0KLQotICAgIC8vIG9wZW4gZmlsZSBhbmQgc2V0IHBhdXNlZCBzdGF0ZQotICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIG1GaWxlID0gZm9wZW4ocGF0aCwgInIiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtRmlsZSA9IGZkb3BlbihkdXAoZmQpLCAiciIpOwotICAgIH0KLSAgICBpZiAobUZpbGUgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gRVJST1JfT1BFTl9GQUlMRUQ7Ci0gICAgfQotCi0gICAgc3RydWN0IHN0YXQgc2I7Ci0gICAgaW50IHJldDsKLSAgICBpZiAocGF0aCkgewotICAgICAgICByZXQgPSBzdGF0KHBhdGgsICZzYik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0ID0gZnN0YXQoZmQsICZzYik7Ci0gICAgfQotICAgIGlmIChyZXQgIT0gMCkgewotICAgICAgICBtU3RhdGUgPSBTVEFURV9FUlJPUjsKLSAgICAgICAgZmNsb3NlKG1GaWxlKTsKLSAgICAgICAgcmV0dXJuIEVSUk9SX09QRU5fRkFJTEVEOwotICAgIH0KLSAgICBpZiAoc2Iuc3Rfc2l6ZSA+IChsZW5ndGggKyBvZmZzZXQpKSB7Ci0gICAgICAgIG1MZW5ndGggPSBsZW5ndGg7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbUxlbmd0aCA9IHNiLnN0X3NpemUgLSBvZmZzZXQ7Ci0gICAgfQotCi0gICAgb3ZfY2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKLSAgICAgICAgKHNpemVfdCAoKikodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgdm9pZCAqKSkgIHZwX2ZyZWFkLAotICAgICAgICAoaW50ICgqKSh2b2lkICosIG9nZ19pbnQ2NF90LCBpbnQpKSAgICAgICAgICAgdnBfZnNlZWssCi0gICAgICAgIChpbnQgKCopKHZvaWQgKikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cF9mY2xvc2UsCi0gICAgICAgIChsb25nICgqKSh2b2lkICopKSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cF9mdGVsbAotICAgIH07Ci0KLSAgICBtT2Zmc2V0ID0gb2Zmc2V0OwotICAgIGZzZWVrKG1GaWxlLCBvZmZzZXQsIFNFRUtfU0VUKTsKLQotICAgIGludCByZXN1bHQgPSBvdl9vcGVuX2NhbGxiYWNrcyh0aGlzLCAmbVZvcmJpc0ZpbGUsIE5VTEwsIDAsIGNhbGxiYWNrcyk7Ci0gICAgaWYgKHJlc3VsdCA8IDApIHsKLSAgICAgICAgTE9HRSgib3Zfb3BlbigpIGZhaWxlZDogWyVkXVxuIiwgKGludClyZXN1bHQpOwotICAgICAgICBtU3RhdGUgPSBTVEFURV9FUlJPUjsKLSAgICAgICAgZmNsb3NlKG1GaWxlKTsKLSAgICAgICAgcmV0dXJuIEVSUk9SX09QRU5fRkFJTEVEOwotICAgIH0KLQotICAgIC8vIGxvb2sgZm9yIHRoZSBhbmRyb2lkIGxvb3AgdGFnICAoZm9yIHJpbmd0b25lcykKLSAgICBjaGFyICoqcHRyID0gb3ZfY29tbWVudCgmbVZvcmJpc0ZpbGUsLTEpLT51c2VyX2NvbW1lbnRzOwotICAgIHdoaWxlKCpwdHIpIHsKLSAgICAgICAgLy8gZG9lcyB0aGUgY29tbWVudCBzdGFydCB3aXRoIEFORFJPSURfTE9PUF9UQUcKLSAgICAgICAgaWYoc3RybmNtcCgqcHRyLCBBTkRST0lEX0xPT1BfVEFHLCBzdHJsZW4oQU5EUk9JRF9MT09QX1RBRykpID09IDApIHsKLSAgICAgICAgICAgIC8vIHJlYWQgdGhlIHZhbHVlIG9mIHRoZSB0YWcKLSAgICAgICAgICAgIGNoYXIgKnZhbCA9ICpwdHIgKyBzdHJsZW4oQU5EUk9JRF9MT09QX1RBRykgKyAxOwotICAgICAgICAgICAgbUFuZHJvaWRMb29wID0gKHN0cm5jbXAodmFsLCAidHJ1ZSIsIDQpID09IDApOwotICAgICAgICB9Ci0gICAgICAgIC8vIHdlIGtlZXAgcGFyc2luZyBldmVuIGFmdGVyIGZpbmRpbmcgb25lIG9jY3VyZW5jZSBvZiBBTkRST0lEX0xPT1BfVEFHLAotICAgICAgICAvLyBhcyB3ZSBjb3VsZCBmaW5kIGFub3RoZXIgb25lICAodGhlIHRhZyBtaWdodCBoYXZlIGJlZW4gYXBwZW5kZWQgbW9yZSB0aGFuIG9uY2UpLgotICAgICAgICArK3B0cjsKLSAgICB9Ci0gICAgTE9HVl9JRihtQW5kcm9pZExvb3AsICJsb29wZWQgc291bmQiKTsKLQotICAgIG1TdGF0ZSA9IFNUQVRFX09QRU47Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OnByZXBhcmUoKQotewotICAgIExPR1YoInByZXBhcmVcbiIpOwotICAgIGlmIChtU3RhdGUgIT0gU1RBVEVfT1BFTiApIHsKLSAgICAgICAgcmV0dXJuIEVSUk9SX05PVF9PUEVOOwotICAgIH0KLSAgICByZXR1cm4gTk9fRVJST1I7Ci19Ci0KLXN0YXR1c190IFZvcmJpc1BsYXllcjo6cHJlcGFyZUFzeW5jKCkgewotICAgIExPR1YoInByZXBhcmVBc3luY1xuIik7Ci0gICAgLy8gY2FuJ3QgaG9sZCB0aGUgbG9jayBoZXJlIGJlY2F1c2Ugb2YgdGhlIGNhbGxiYWNrCi0gICAgLy8gaXQncyBzYWZlIGJlY2F1c2Ugd2UgZG9uJ3QgY2hhbmdlIHN0YXRlCi0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOICkgewotICAgICAgICBzZW5kRXZlbnQoTUVESUFfRVJST1IpOwotICAgICAgICByZXR1cm4gTk9fRVJST1I7Ci0gICAgfQotICAgIHNlbmRFdmVudChNRURJQV9QUkVQQVJFRCk7Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OnN0YXJ0KCkKLXsKLSAgICBMT0dWKCJzdGFydFxuIik7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGwobU11dGV4KTsKLSAgICBpZiAobVN0YXRlICE9IFNUQVRFX09QRU4pIHsKLSAgICAgICAgcmV0dXJuIEVSUk9SX05PVF9PUEVOOwotICAgIH0KLQotICAgIG1QYXVzZWQgPSBmYWxzZTsKLSAgICBtUmVuZGVyID0gdHJ1ZTsKLQotICAgIC8vIHdha2UgdXAgcmVuZGVyIHRocmVhZAotICAgIExPR1YoIiAgd2FrZXVwIHJlbmRlciB0aHJlYWRcbiIpOwotICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OnN0b3AoKQotewotICAgIExPR1YoInN0b3BcbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9OT1RfT1BFTjsKLSAgICB9Ci0gICAgbVBhdXNlZCA9IHRydWU7Ci0gICAgbVJlbmRlciA9IGZhbHNlOwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpzZWVrVG8oaW50IHBvc2l0aW9uKQotewotICAgIExPR1YoInNlZWtUbyAlZFxuIiwgcG9zaXRpb24pOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9OT1RfT1BFTjsKLSAgICB9Ci0KLSAgICBpbnQgcmVzdWx0ID0gb3ZfdGltZV9zZWVrKCZtVm9yYmlzRmlsZSwgcG9zaXRpb24pOwotICAgIGlmIChyZXN1bHQgIT0gMCkgewotICAgICAgICBMT0dFKCJvdl90aW1lX3NlZWsoKSByZXR1cm5lZCAlZFxuIiwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgc2VuZEV2ZW50KE1FRElBX1NFRUtfQ09NUExFVEUpOwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpwYXVzZSgpCi17Ci0gICAgTE9HVigicGF1c2VcbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9OT1RfT1BFTjsKLSAgICB9Ci0gICAgbVBhdXNlZCA9IHRydWU7Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1ib29sIFZvcmJpc1BsYXllcjo6aXNQbGF5aW5nKCkKLXsKLSAgICBMT0dWKCJpc1BsYXlpbmdcbiIpOwotICAgIGlmIChtU3RhdGUgPT0gU1RBVEVfT1BFTikgewotICAgICAgICByZXR1cm4gbVJlbmRlcjsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OmdldEN1cnJlbnRQb3NpdGlvbihpbnQqIHBvc2l0aW9uKQotewotICAgIExPR1YoImdldEN1cnJlbnRQb3NpdGlvblxuIik7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGwobU11dGV4KTsKLSAgICBpZiAobVN0YXRlICE9IFNUQVRFX09QRU4pIHsKLSAgICAgICAgTE9HRSgiZ2V0Q3VycmVudFBvc2l0aW9uKCk6IGZpbGUgbm90IG9wZW4iKTsKLSAgICAgICAgcmV0dXJuIEVSUk9SX05PVF9PUEVOOwotICAgIH0KLSAgICAqcG9zaXRpb24gPSBvdl90aW1lX3RlbGwoJm1Wb3JiaXNGaWxlKTsKLSAgICBpZiAoKnBvc2l0aW9uIDwgMCkgewotICAgICAgICBMT0dFKCJnZXRDdXJyZW50UG9zaXRpb24oKTogb3ZfdGltZV90ZWxsIHJldHVybmVkICVkIiwgKnBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuICpwb3NpdGlvbjsKLSAgICB9Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OmdldER1cmF0aW9uKGludCogZHVyYXRpb24pCi17Ci0gICAgTE9HVigiZ2V0RHVyYXRpb25cbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9OT1RfT1BFTjsKLSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gb3ZfdGltZV90b3RhbCgmbVZvcmJpc0ZpbGUsIC0xKTsKLSAgICBpZiAocmV0ID09IE9WX0VJTlZBTCkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgKmR1cmF0aW9uID0gcmV0OwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpyZWxlYXNlKCkKLXsKLSAgICBMT0dWKCJyZWxlYXNlXG4iKTsKLSAgICBNdXRleDo6QXV0b2xvY2sgbChtTXV0ZXgpOwotICAgIHJlc2V0X25vc3luYygpOwotCi0gICAgLy8gVE9ETzogdGltZW91dCB3aGVuIHRocmVhZCB3b24ndCBleGl0Ci0gICAgLy8gd2FpdCBmb3IgcmVuZGVyIHRocmVhZCB0byBleGl0Ci0gICAgaWYgKG1SZW5kZXJUaWQgPiAwKSB7Ci0gICAgICAgIG1FeGl0ID0gdHJ1ZTsKLSAgICAgICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKLSAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1NdXRleCk7Ci0gICAgfQotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpyZXNldCgpCi17Ci0gICAgTE9HVigicmVzZXRcbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgcmV0dXJuIHJlc2V0X25vc3luYygpOwotfQotCi0vLyBhbHdheXMgY2FsbCB3aXRoIGxvY2sgaGVsZAotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpyZXNldF9ub3N5bmMoKQotewotICAgIC8vIGNsb3NlIGZpbGUKLSAgICBpZiAobUZpbGUgIT0gTlVMTCkgewotICAgICAgICBvdl9jbGVhcigmbVZvcmJpc0ZpbGUpOyAvLyB0aGlzIGFsc28gY2xvc2VzIHRoZSBGSUxFCi0gICAgICAgIGlmIChtRmlsZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBMT0dWKCJPT1BTISBWb3JiaXMgZGlkbid0IGNsb3NlIHRoZSBmaWxlIik7Ci0gICAgICAgICAgICBmY2xvc2UobUZpbGUpOwotICAgICAgICAgICAgbUZpbGUgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIG1TdGF0ZSA9IFNUQVRFX0VSUk9SOwotCi0gICAgbVBsYXlUaW1lID0gLTE7Ci0gICAgbUR1cmF0aW9uID0gLTE7Ci0gICAgbUxvb3AgPSBmYWxzZTsKLSAgICBtQW5kcm9pZExvb3AgPSBmYWxzZTsKLSAgICBtUGF1c2VkID0gZmFsc2U7Ci0gICAgbVJlbmRlciA9IGZhbHNlOwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpzZXRMb29waW5nKGludCBsb29wKQotewotICAgIExPR1YoInNldExvb3BpbmdcbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgbUxvb3AgPSAobG9vcCAhPSAwKTsKLSAgICByZXR1cm4gTk9fRVJST1I7Ci19Ci0KLXN0YXR1c190IFZvcmJpc1BsYXllcjo6Y3JlYXRlT3V0cHV0VHJhY2soKSB7Ci0gICAgLy8gb3BlbiBhdWRpbyB0cmFjawotICAgIHZvcmJpc19pbmZvICp2aSA9IG92X2luZm8oJm1Wb3JiaXNGaWxlLCAtMSk7Ci0KLSAgICBMT0dWKCJDcmVhdGUgQXVkaW9UcmFjayBvYmplY3Q6IHJhdGU9JWxkLCBjaGFubmVscz0lZFxuIiwKLSAgICAgICAgICAgIHZpLT5yYXRlLCB2aS0+Y2hhbm5lbHMpOwotICAgIGlmIChtQXVkaW9TaW5rLT5vcGVuKHZpLT5yYXRlLCB2aS0+Y2hhbm5lbHMsIEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklULCBERUZBVUxUX0FVRElPU0lOS19CVUZGRVJDT1VOVCkgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgTE9HRSgibUF1ZGlvU2luayBvcGVuIGZhaWxlZCIpOwotICAgICAgICByZXR1cm4gRVJST1JfT1BFTl9GQUlMRUQ7Ci0gICAgfQotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotaW50IFZvcmJpc1BsYXllcjo6cmVuZGVyVGhyZWFkKHZvaWQqIHApIHsKLSAgICByZXR1cm4gKChWb3JiaXNQbGF5ZXIqKXApLT5yZW5kZXIoKTsKLX0KLQotI2RlZmluZSBBVURJT0JVRkZFUl9TSVpFIDQwOTYKLQotaW50IFZvcmJpc1BsYXllcjo6cmVuZGVyKCkgewotICAgIGludCByZXN1bHQgPSAtMTsKLSAgICBpbnQgdGVtcDsKLSAgICBpbnQgY3VycmVudF9zZWN0aW9uID0gMDsKLSAgICBib29sIGF1ZGlvU3RhcnRlZCA9IGZhbHNlOwotCi0gICAgTE9HVigicmVuZGVyXG4iKTsKLQotICAgIC8vIGFsbG9jYXRlIHJlbmRlciBidWZmZXIKLSAgICBtQXVkaW9CdWZmZXIgPSBuZXcgY2hhcltBVURJT0JVRkZFUl9TSVpFXTsKLSAgICBpZiAoIW1BdWRpb0J1ZmZlcikgewotICAgICAgICBMT0dFKCJtQXVkaW9CdWZmZXIgYWxsb2NhdGUgZmFpbGVkXG4iKTsKLSAgICAgICAgZ290byB0aHJlYWRFeGl0OwotICAgIH0KLQotICAgIC8vIGxldCBtYWluIHRocmVhZCBrbm93IHdlJ3JlIHJlYWR5Ci0gICAgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgbChtTXV0ZXgpOwotICAgICAgICBtUmVuZGVyVGlkID0gbXlUaWQoKTsKLSAgICAgICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAgICBsb25nIG51bXJlYWQgPSAwOwotICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleDo6QXV0b2xvY2sgbChtTXV0ZXgpOwotCi0gICAgICAgICAgICAvLyBwYXVzaW5nPwotICAgICAgICAgICAgaWYgKG1QYXVzZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAobUF1ZGlvU2luay0+cmVhZHkoKSkgbUF1ZGlvU2luay0+cGF1c2UoKTsKLSAgICAgICAgICAgICAgICBtUmVuZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYXVkaW9TdGFydGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gcmVuZGVyLCB3YWl0IGZvciBjbGllbnQgdGhyZWFkIHRvIHdha2UgdXMgdXAKLSAgICAgICAgICAgIGlmICghbUV4aXQgJiYgIW1SZW5kZXIpIHsKLSAgICAgICAgICAgICAgICBMT0dWKCJyZW5kZXIgLSBzaWduYWwgd2FpdFxuIik7Ci0gICAgICAgICAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1NdXRleCk7Ci0gICAgICAgICAgICAgICAgTE9HVigicmVuZGVyIC0gc2lnbmFsIHJ4J2RcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1FeGl0KSBicmVhazsKLQotICAgICAgICAgICAgLy8gV2UgY291bGQgZW5kIHVwIGhlcmUgaWYgc3RhcnQoKSBpcyBjYWxsZWQsIGFuZCBiZWZvcmUgd2UgZ2V0IGEKLSAgICAgICAgICAgIC8vIGNoYW5jZSB0byBydW4sIHRoZSBhcHAgY2FsbHMgc3RvcCgpIG9yIHJlc2V0KCkuIFJlLWNoZWNrIHJlbmRlcgotICAgICAgICAgICAgLy8gZmxhZyBzbyB3ZSBkb24ndCB0cnkgdG8gcmVuZGVyIGluIHN0b3Agb3IgcmVzZXQgc3RhdGUuCi0gICAgICAgICAgICBpZiAoIW1SZW5kZXIpIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAvLyByZW5kZXIgdm9yYmlzIGRhdGEgaW50byB0aGUgaW5wdXQgYnVmZmVyCi0gICAgICAgICAgICBudW1yZWFkID0gb3ZfcmVhZCgmbVZvcmJpc0ZpbGUsIG1BdWRpb0J1ZmZlciwgQVVESU9CVUZGRVJfU0laRSwgJmN1cnJlbnRfc2VjdGlvbik7Ci0gICAgICAgICAgICBpZiAobnVtcmVhZCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gZW5kIG9mIGZpbGUsIGRvIHdlIG5lZWQgdG8gbG9vcD8KLSAgICAgICAgICAgICAgICAvLyAuLi4KLSAgICAgICAgICAgICAgICBpZiAobUxvb3AgfHwgbUFuZHJvaWRMb29wKSB7Ci0gICAgICAgICAgICAgICAgICAgIG92X3RpbWVfc2VlaygmbVZvcmJpc0ZpbGUsIDApOwotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSAwOwotICAgICAgICAgICAgICAgICAgICBudW1yZWFkID0gb3ZfcmVhZCgmbVZvcmJpc0ZpbGUsIG1BdWRpb0J1ZmZlciwgQVVESU9CVUZGRVJfU0laRSwgJmN1cnJlbnRfc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbUF1ZGlvU2luay0+c3RvcCgpOwotICAgICAgICAgICAgICAgICAgICBhdWRpb1N0YXJ0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgbVJlbmRlciA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBtUGF1c2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGVuZHBvcyA9IG92X3RpbWVfdGVsbCgmbVZvcmJpc0ZpbGUpOwotCi0gICAgICAgICAgICAgICAgICAgIExPR1YoInNlbmQgTUVESUFfUExBWUJBQ0tfQ09NUExFVEUiKTsKLSAgICAgICAgICAgICAgICAgICAgc2VuZEV2ZW50KE1FRElBX1BMQVlCQUNLX0NPTVBMRVRFKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyB3YWl0IHVudGlsIHdlJ3JlIHN0YXJ0ZWQgYWdhaW4KLSAgICAgICAgICAgICAgICAgICAgTE9HVigicGxheWJhY2sgY29tcGxldGUgLSB3YWl0IGZvciBzaWduYWwiKTsKLSAgICAgICAgICAgICAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1NdXRleCk7Ci0gICAgICAgICAgICAgICAgICAgIExPR1YoInBsYXliYWNrIGNvbXBsZXRlIC0gc2lnbmFsIHJ4J2QiKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1FeGl0KSBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSdyZSBzdGlsbCBhdCB0aGUgZW5kLCByZXN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZwotICAgICAgICAgICAgICAgICAgICBpZiAobVN0YXRlID09IFNUQVRFX09QRU4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdXJwb3MgPSBvdl90aW1lX3RlbGwoJm1Wb3JiaXNGaWxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJwb3MgPT0gZW5kcG9zKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZfdGltZV9zZWVrKCZtVm9yYmlzRmlsZSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbnVtcmVhZCA9IG92X3JlYWQoJm1Wb3JiaXNGaWxlLCBtQXVkaW9CdWZmZXIsIEFVRElPQlVGRkVSX1NJWkUsICZjdXJyZW50X3NlY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gY29kZWMgcmV0dXJucyBuZWdhdGl2ZSBudW1iZXIgb24gZXJyb3IKLSAgICAgICAgaWYgKG51bXJlYWQgPCAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJFcnJvciBpbiBWb3JiaXMgZGVjb2RlciIpOwotICAgICAgICAgICAgc2VuZEV2ZW50KE1FRElBX0VSUk9SKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gY3JlYXRlIGF1ZGlvIG91dHB1dCB0cmFjayBpZiBuZWNlc3NhcnkKLSAgICAgICAgaWYgKCFtQXVkaW9TaW5rLT5yZWFkeSgpKSB7Ci0gICAgICAgICAgICBMT0dWKCJyZW5kZXIgLSBjcmVhdGUgb3V0cHV0IHRyYWNrXG4iKTsKLSAgICAgICAgICAgIGlmIChjcmVhdGVPdXRwdXRUcmFjaygpICE9IE5PX0VSUk9SKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV3JpdGUgZGF0YSB0byB0aGUgYXVkaW8gaGFyZHdhcmUKLSAgICAgICAgaWYgKCh0ZW1wID0gbUF1ZGlvU2luay0+d3JpdGUobUF1ZGlvQnVmZmVyLCBudW1yZWFkKSkgPCAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJFcnJvciBpbiB3cml0aW5nOiVkIix0ZW1wKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHN0YXJ0IGF1ZGlvIG91dHB1dCBpZiBuZWNlc3NhcnkKLSAgICAgICAgaWYgKCFhdWRpb1N0YXJ0ZWQgJiYgIW1QYXVzZWQgJiYgIW1FeGl0KSB7Ci0gICAgICAgICAgICBMT0dWKCJyZW5kZXIgLSBzdGFydGluZyBhdWRpb1xuIik7Ci0gICAgICAgICAgICBtQXVkaW9TaW5rLT5zdGFydCgpOwotICAgICAgICAgICAgYXVkaW9TdGFydGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotdGhyZWFkRXhpdDoKLSAgICBtQXVkaW9TaW5rLmNsZWFyKCk7Ci0gICAgaWYgKG1BdWRpb0J1ZmZlcikgewotICAgICAgICBkZWxldGUgW10gbUF1ZGlvQnVmZmVyOwotICAgICAgICBtQXVkaW9CdWZmZXIgPSBOVUxMOwotICAgIH0KLQotICAgIC8vIHRlbGwgbWFpbiB0aHJlYWQgZ29vZGJ5ZQotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgbVJlbmRlclRpZCA9IC0xOwotICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBlbmQgbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9Wb3JiaXNQbGF5ZXIuaCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9Wb3JiaXNQbGF5ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE1MDgzNS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzUGxheWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotKioKLSoqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0qKgotKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0qKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0qKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSoqCi0qKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0qKgotKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0qLwotCi0jaWZuZGVmIEFORFJPSURfVk9SQklTUExBWUVSX0gKLSNkZWZpbmUgQU5EUk9JRF9WT1JCSVNQTEFZRVJfSAotCi0jaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgotCi0jaW5jbHVkZSA8bWVkaWEvTWVkaWFQbGF5ZXJJbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxtZWRpYS9BdWRpb1RyYWNrLmg+Ci0KLSNpbmNsdWRlICJpdm9yYmlzY29kZWMuaCIKLSNpbmNsdWRlICJpdm9yYmlzZmlsZS5oIgotCi0jZGVmaW5lIEFORFJPSURfTE9PUF9UQUcgIkFORFJPSURfTE9PUCIKLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1jbGFzcyBWb3JiaXNQbGF5ZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJJbnRlcmZhY2UgewotcHVibGljOgotICAgICAgICAgICAgICAgICAgICAgICAgVm9yYmlzUGxheWVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB+Vm9yYmlzUGxheWVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIG9uRmlyc3RSZWYoKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIGluaXRDaGVjaygpOwotCi0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBzZXREYXRhU291cmNlKAotICAgICAgICAgICAgY29uc3QgY2hhciAqdXJpLCBjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycyk7Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHNldERhdGFTb3VyY2UoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0VmlkZW9TdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyZmFjZSkgeyByZXR1cm4gVU5LTk9XTl9FUlJPUjsgfQotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgcHJlcGFyZSgpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgcHJlcGFyZUFzeW5jKCk7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBzdGFydCgpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc3RvcCgpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2Vla1RvKGludCBtc2VjKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHBhdXNlKCk7Ci0gICAgdmlydHVhbCBib29sICAgICAgICBpc1BsYXlpbmcoKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIGdldEN1cnJlbnRQb3NpdGlvbihpbnQqIG1zZWMpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgZ2V0RHVyYXRpb24oaW50KiBtc2VjKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHJlbGVhc2UoKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHJlc2V0KCk7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBzZXRMb29waW5nKGludCBsb29wKTsKLSAgICB2aXJ0dWFsIHBsYXllcl90eXBlIHBsYXllclR5cGUoKSB7IHJldHVybiBWT1JCSVNfUExBWUVSOyB9Ci0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBpbnZva2UoY29uc3QgUGFyY2VsJiByZXF1ZXN0LCBQYXJjZWwgKnJlcGx5KSB7cmV0dXJuIElOVkFMSURfT1BFUkFUSU9OO30KLQotcHJpdmF0ZToKLSAgICAgICAgICAgIHN0YXR1c190ICAgIHNldGRhdGFzb3VyY2UoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpOwotICAgICAgICAgICAgc3RhdHVzX3QgICAgcmVzZXRfbm9zeW5jKCk7Ci0gICAgICAgICAgICBzdGF0dXNfdCAgICBjcmVhdGVPdXRwdXRUcmFjaygpOwotICAgIHN0YXRpYyAgaW50ICAgICAgICAgcmVuZGVyVGhyZWFkKHZvaWQqKTsKLSAgICAgICAgICAgIGludCAgICAgICAgIHJlbmRlcigpOwotCi0gICAgc3RhdGljICBzaXplX3QgICAgICB2cF9mcmVhZCh2b2lkICosIHNpemVfdCwgc2l6ZV90LCB2b2lkICopOwotICAgIHN0YXRpYyAgaW50ICAgICAgICAgdnBfZnNlZWsodm9pZCAqLCBvZ2dfaW50NjRfdCwgaW50KTsKLSAgICBzdGF0aWMgIGludCAgICAgICAgIHZwX2ZjbG9zZSh2b2lkICopOwotICAgIHN0YXRpYyAgbG9uZyAgICAgICAgdnBfZnRlbGwodm9pZCAqKTsKLQotICAgIE11dGV4ICAgICAgICAgICAgICAgbU11dGV4OwotICAgIENvbmRpdGlvbiAgICAgICAgICAgbUNvbmRpdGlvbjsKLSAgICBGSUxFKiAgICAgICAgICAgICAgIG1GaWxlOwotICAgIGludDY0X3QgICAgICAgICAgICAgbU9mZnNldDsKLSAgICBpbnQ2NF90ICAgICAgICAgICAgIG1MZW5ndGg7Ci0gICAgT2dnVm9yYmlzX0ZpbGUgICAgICBtVm9yYmlzRmlsZTsKLSAgICBjaGFyKiAgICAgICAgICAgICAgIG1BdWRpb0J1ZmZlcjsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG1QbGF5VGltZTsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG1EdXJhdGlvbjsKLSAgICBzdGF0dXNfdCAgICAgICAgICAgIG1TdGF0ZTsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG1TdHJlYW1UeXBlOwotICAgIGJvb2wgICAgICAgICAgICAgICAgbUxvb3A7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICBtQW5kcm9pZExvb3A7Ci0gICAgdm9sYXRpbGUgYm9vbCAgICAgICBtRXhpdDsKLSAgICBib29sICAgICAgICAgICAgICAgIG1QYXVzZWQ7Ci0gICAgdm9sYXRpbGUgYm9vbCAgICAgICBtUmVuZGVyOwotICAgIHBpZF90ICAgICAgICAgICAgICAgbVJlbmRlclRpZDsKLX07Ci0KLX07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KLSNlbmRpZiAvLyBBTkRST0lEX1ZPUkJJU1BMQVlFUl9ICmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9BTVJXcml0ZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQU1SV3JpdGVyLmNwcAppbmRleCBiZjQ0MjRiLi5jNzE3NDNlIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9BTVJXcml0ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0FNUldyaXRlci5jcHAKQEAgLTIyLDE5ICsyMiwyNCBAQAogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorI2luY2x1ZGUgPG1lZGlhL21lZGlhcmVjb3JkZXIuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiBBTVJXcml0ZXI6OkFNUldyaXRlcihjb25zdCBjaGFyICpmaWxlbmFtZSkKICAgICA6IG1GaWxlKGZvcGVuKGZpbGVuYW1lLCAid2IiKSksCiAgICAgICBtSW5pdENoZWNrKG1GaWxlICE9IE5VTEwgPyBPSyA6IE5PX0lOSVQpLAotICAgICAgbVN0YXJ0ZWQoZmFsc2UpIHsKKyAgICAgIG1TdGFydGVkKGZhbHNlKSwKKyAgICAgIG1QYXVzZWQoZmFsc2UpLAorICAgICAgbVJlc3VtZWQoZmFsc2UpIHsKIH0KIAogQU1SV3JpdGVyOjpBTVJXcml0ZXIoaW50IGZkKQogICAgIDogbUZpbGUoZmRvcGVuKGZkLCAid2IiKSksCiAgICAgICBtSW5pdENoZWNrKG1GaWxlICE9IE5VTEwgPyBPSyA6IE5PX0lOSVQpLAotICAgICAgbVN0YXJ0ZWQoZmFsc2UpIHsKKyAgICAgIG1TdGFydGVkKGZhbHNlKSwKKyAgICAgIG1QYXVzZWQoZmFsc2UpLAorICAgICAgbVJlc3VtZWQoZmFsc2UpIHsKIH0KIAogQU1SV3JpdGVyOjp+QU1SV3JpdGVyKCkgewpAQCAtNTMsOCArNTgsNiBAQAogfQogCiBzdGF0dXNfdCBBTVJXcml0ZXI6OmFkZFNvdXJjZShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSkgewotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0KICAgICBpZiAobUluaXRDaGVjayAhPSBPSykgewogICAgICAgICByZXR1cm4gbUluaXRDaGVjazsKICAgICB9CkBAIC05NCwxNyArOTcsMjQgQEAKICAgICByZXR1cm4gT0s7CiB9CiAKLXN0YXR1c190IEFNUldyaXRlcjo6c3RhcnQoKSB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQorc3RhdHVzX3QgQU1SV3JpdGVyOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CiAgICAgaWYgKG1Jbml0Q2hlY2sgIT0gT0spIHsKICAgICAgICAgcmV0dXJuIG1Jbml0Q2hlY2s7CiAgICAgfQogCi0gICAgaWYgKG1TdGFydGVkIHx8IG1Tb3VyY2UgPT0gTlVMTCkgeworICAgIGlmIChtU291cmNlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgfQogCisgICAgaWYgKG1TdGFydGVkICYmIG1QYXVzZWQpIHsKKyAgICAgICAgbVBhdXNlZCA9IGZhbHNlOworICAgICAgICBtUmVzdW1lZCA9IHRydWU7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9IGVsc2UgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIC8vIEFscmVhZHkgc3RhcnRlZCwgZG9lcyBub3RoaW5nCisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKICAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5zdGFydCgpOwogCiAgICAgaWYgKGVyciAhPSBPSykgewpAQCAtMTI2LDE2ICsxMzYsMTkgQEAKICAgICByZXR1cm4gT0s7CiB9CiAKLXZvaWQgQU1SV3JpdGVyOjpzdG9wKCkgewotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgICAgICBpZiAoIW1TdGFydGVkKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtRG9uZSA9IHRydWU7Cit2b2lkIEFNUldyaXRlcjo6cGF1c2UoKSB7CisgICAgaWYgKCFtU3RhcnRlZCkgeworICAgICAgICByZXR1cm47CiAgICAgfQorICAgIG1QYXVzZWQgPSB0cnVlOworfQorCit2b2lkIEFNUldyaXRlcjo6c3RvcCgpIHsKKyAgICBpZiAoIW1TdGFydGVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtRG9uZSA9IHRydWU7CiAKICAgICB2b2lkICpkdW1teTsKICAgICBwdGhyZWFkX2pvaW4obVRocmVhZCwgJmR1bW15KTsKQEAgLTE0NSw2ICsxNTgsMjAgQEAKICAgICBtU3RhcnRlZCA9IGZhbHNlOwogfQogCitib29sIEFNUldyaXRlcjo6ZXhjZWVkc0ZpbGVTaXplTGltaXQoKSB7CisgICAgaWYgKG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXMgPT0gMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBtRXN0aW1hdGVkU2l6ZUJ5dGVzID49IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXM7Cit9CisKK2Jvb2wgQU1SV3JpdGVyOjpleGNlZWRzRmlsZUR1cmF0aW9uTGltaXQoKSB7CisgICAgaWYgKG1NYXhGaWxlRHVyYXRpb25MaW1pdFVzID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gbUVzdGltYXRlZER1cmF0aW9uVXMgPj0gbU1heEZpbGVEdXJhdGlvbkxpbWl0VXM7Cit9CisKIC8vIHN0YXRpYwogdm9pZCAqQU1SV3JpdGVyOjpUaHJlYWRXcmFwcGVyKHZvaWQgKm1lKSB7CiAgICAgc3RhdGljX2Nhc3Q8QU1SV3JpdGVyICo+KG1lKS0+dGhyZWFkRnVuYygpOwpAQCAtMTUzLDEzICsxODAsMTMgQEAKIH0KIAogdm9pZCBBTVJXcml0ZXI6OnRocmVhZEZ1bmMoKSB7Ci0gICAgZm9yICg7OykgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIG1Fc3RpbWF0ZWREdXJhdGlvblVzID0gMDsKKyAgICBtRXN0aW1hdGVkU2l6ZUJ5dGVzID0gMDsKKyAgICBib29sIHN0b3BwZWRQcmVtYXR1cmVseSA9IHRydWU7CisgICAgaW50NjRfdCBwcmV2aW91c1BhdXNlZER1cmF0aW9uVXMgPSAwOworICAgIGludDY0X3QgbWF4VGltZXN0YW1wVXMgPSAwOwogCi0gICAgICAgIGlmIChtRG9uZSkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQorICAgIHdoaWxlICghbURvbmUpIHsKICAgICAgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlcjsKICAgICAgICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+cmVhZCgmYnVmZmVyKTsKIApAQCAtMTY3LDYgKzE5NCw0MiBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobVBhdXNlZCkgeworICAgICAgICAgICAgYnVmZmVyLT5yZWxlYXNlKCk7CisgICAgICAgICAgICBidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBtRXN0aW1hdGVkU2l6ZUJ5dGVzICs9IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CisgICAgICAgIGlmIChleGNlZWRzRmlsZVNpemVMaW1pdCgpKSB7CisgICAgICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBub3RpZnkoTUVESUFfUkVDT1JERVJfRVZFTlRfSU5GTywgTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRklMRVNJWkVfUkVBQ0hFRCwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGludDY0X3QgdGltZXN0YW1wVXM7CisgICAgICAgIENIRUNLKGJ1ZmZlci0+bWV0YV9kYXRhKCktPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVzdGFtcFVzKSk7CisgICAgICAgIGlmICh0aW1lc3RhbXBVcyA+IG1Fc3RpbWF0ZWREdXJhdGlvblVzKSB7CisgICAgICAgICAgICBtRXN0aW1hdGVkRHVyYXRpb25VcyA9IHRpbWVzdGFtcFVzOworICAgICAgICB9CisgICAgICAgIGlmIChtUmVzdW1lZCkgeworICAgICAgICAgICAgcHJldmlvdXNQYXVzZWREdXJhdGlvblVzICs9ICh0aW1lc3RhbXBVcyAtIG1heFRpbWVzdGFtcFVzIC0gMjAwMDApOworICAgICAgICAgICAgbVJlc3VtZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0aW1lc3RhbXBVcyAtPSBwcmV2aW91c1BhdXNlZER1cmF0aW9uVXM7CisgICAgICAgIExPR1YoInRpbWUgc3RhbXA6ICVsbGQsIHByZXZpb3VzIHBhdXNlZCBkdXJhdGlvbjogJWxsZCIsCisgICAgICAgICAgICAgICAgdGltZXN0YW1wVXMsIHByZXZpb3VzUGF1c2VkRHVyYXRpb25Vcyk7CisgICAgICAgIGlmICh0aW1lc3RhbXBVcyA+IG1heFRpbWVzdGFtcFVzKSB7CisgICAgICAgICAgICBtYXhUaW1lc3RhbXBVcyA9IHRpbWVzdGFtcFVzOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV4Y2VlZHNGaWxlRHVyYXRpb25MaW1pdCgpKSB7CisgICAgICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBub3RpZnkoTUVESUFfUkVDT1JERVJfRVZFTlRfSU5GTywgTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRFVSQVRJT05fUkVBQ0hFRCwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBzc2l6ZV90IG4gPSBmd3JpdGUoCiAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgMSwKQEAgLTE4MCwxNiArMjQzLDI2IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIC8vIFhYWDogSG93IHRvIHRlbGwgaXQgaXMgc3RvcHBlZCBwcmVtYXR1cmVseT8KKyAgICAgICAgaWYgKHN0b3BwZWRQcmVtYXR1cmVseSkgeworICAgICAgICAgICAgc3RvcHBlZFByZW1hdHVyZWx5ID0gZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKICAgICAgICAgYnVmZmVyID0gTlVMTDsKICAgICB9CiAKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIGlmIChzdG9wcGVkUHJlbWF0dXJlbHkpIHsKKyAgICAgICAgbm90aWZ5KE1FRElBX1JFQ09SREVSX0VWRU5UX0lORk8sIE1FRElBX1JFQ09SREVSX0lORk9fQ09NUExFVElPTl9TVEFUVVMsIFVOS05PV05fRVJST1IpOworICAgIH0KKworICAgIGZmbHVzaChtRmlsZSk7CisgICAgZmNsb3NlKG1GaWxlKTsKKyAgICBtRmlsZSA9IE5VTEw7CiAgICAgbVJlYWNoZWRFT1MgPSB0cnVlOwogfQogCiBib29sIEFNUldyaXRlcjo6cmVhY2hlZEVPUygpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwogICAgIHJldHVybiBtUmVhY2hlZEVPUzsKIH0KIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0FuZHJvaWQubWsKaW5kZXggODFmOTk1Yi4uNjBkMDIzMyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9BbmRyb2lkLm1rCkBAIC0xLDUxICsxLDQ2IEBACiBMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKIGluY2x1ZGUgJChDTEVBUl9WQVJTKQogCi1MT0NBTF9TUkNfRklMRVM6PSAgICAgICAgICAgICAgICAgXAotICAgICAgICBFU0RTLmNwcCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTWVkaWFCdWZmZXIuY3BwICAgICAgICAgICBcCi0gICAgICAgIE1lZGlhQnVmZmVyR3JvdXAuY3BwICAgICAgXAotICAgICAgICBNZWRpYURlZnMuY3BwICAgICAgICAgICAgIFwKLSAgICAgICAgTWVkaWFTb3VyY2UuY3BwICAgICAgICAgICBcCi0gICAgICAgIE1ldGFEYXRhLmNwcCAgICAgICAgICAgICAgXAotICAgICAgICBPTVhDb2RlYy5jcHAgICAgICAgICAgICAgIFwKLSAgICAgICAgVXRpbHMuY3BwICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9NWENsaWVudC5jcHAKK2luY2x1ZGUgZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vQ29uZmlnLm1rCiAKLWlmZXEgKCQoQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUKSx0cnVlKQotCi1MT0NBTF9TUkNfRklMRVMgKz0gICAgICAgICAgICAgICAgXAotICAgICAgICBBTVJFeHRyYWN0b3IuY3BwICAgICAgICAgIFwKLSAgICAgICAgQU1SV3JpdGVyLmNwcCAgICAgICAgICAgICBcCi0gICAgICAgIEF1ZGlvUGxheWVyLmNwcCAgICAgICAgICAgXAotICAgICAgICBBdWRpb1NvdXJjZS5jcHAgICAgICAgICAgIFwKLSAgICAgICAgQXdlc29tZVBsYXllci5jcHAgICAgICAgICBcCi0gICAgICAgIENhY2hpbmdEYXRhU291cmNlLmNwcCAgICAgXAotICAgICAgICBDYW1lcmFTb3VyY2UuY3BwICAgICAgICAgIFwKLSAgICAgICAgRGF0YVNvdXJjZS5jcHAgICAgICAgICAgICBcCi0gICAgICAgIEZpbGVTb3VyY2UuY3BwICAgICAgICAgICAgXAotICAgICAgICBIVFRQRGF0YVNvdXJjZS5jcHAgICAgICAgIFwKLSAgICAgICAgSFRUUFN0cmVhbS5jcHAgICAgICAgICAgICBcCi0gICAgICAgIEpQRUdTb3VyY2UuY3BwICAgICAgICAgICAgXAotICAgICAgICBNUDNFeHRyYWN0b3IuY3BwICAgICAgICAgIFwKLSAgICAgICAgTVBFRzRFeHRyYWN0b3IuY3BwICAgICAgICBcCi0gICAgICAgIE1QRUc0V3JpdGVyLmNwcCAgICAgICAgICAgXAotICAgICAgICBNZWRpYUV4dHJhY3Rvci5jcHAgICAgICAgIFwKLSAgICAgICAgT2dnRXh0cmFjdG9yLmNwcCAgICAgICAgICBcCi0gICAgICAgIFByZWZldGNoZXIuY3BwICAgICAgICAgICAgXAotICAgICAgICBTYW1wbGVJdGVyYXRvci5jcHAgICAgICAgIFwKLSAgICAgICAgU2FtcGxlVGFibGUuY3BwICAgICAgICAgICBcCi0gICAgICAgIFNob3V0Y2FzdFNvdXJjZS5jcHAgICAgICAgXAotICAgICAgICBTdGFnZWZyaWdodE1lZGlhU2Nhbm5lci5jcHAgXAotICAgICAgICBTdGFnZWZyaWdodE1ldGFkYXRhUmV0cmlldmVyLmNwcCBcCi0gICAgICAgIFRpbWVTb3VyY2UuY3BwICAgICAgICAgICAgXAotICAgICAgICBUaW1lZEV2ZW50UXVldWUuY3BwICAgICAgIFwKLSAgICAgICAgV0FWRXh0cmFjdG9yLmNwcCAgICAgICAgICBcCitMT0NBTF9TUkNfRklMRVM6PSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEFNUkV4dHJhY3Rvci5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEFNUldyaXRlci5jcHAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEF1ZGlvUGxheWVyLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEF1ZGlvU291cmNlLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEF3ZXNvbWVQbGF5ZXIuY3BwICAgICAgICAgICAgICAgICBcCisgICAgICAgIENhbWVyYVNvdXJjZS5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIERhdGFTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVTRFMuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEZpbGVTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEhUVFBTdHJlYW0uY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpQRUdTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1QM0V4dHJhY3Rvci5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1QRUc0RXh0cmFjdG9yLmNwcCAgICAgICAgICAgICAgICBcCisgICAgICAgIE1QRUc0V3JpdGVyLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhQnVmZmVyLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhQnVmZmVyR3JvdXAuY3BwICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhRGVmcy5jcHAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhRXh0cmFjdG9yLmNwcCAgICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhU291cmNlLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1ldGFEYXRhLmNwcCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE51Q2FjaGVkU291cmNlMi5jcHAgICAgICAgICAgICAgICBcCisgICAgICAgIE51SFRUUERhdGFTb3VyY2UuY3BwICAgICAgICAgICAgICBcCisgICAgICAgIE9NWENsaWVudC5jcHAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9NWENvZGVjLmNwcCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9nZ0V4dHJhY3Rvci5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFNhbXBsZUl0ZXJhdG9yLmNwcCAgICAgICAgICAgICAgICBcCisgICAgICAgIFNhbXBsZVRhYmxlLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFNob3V0Y2FzdFNvdXJjZS5jcHAgICAgICAgICAgICAgICBcCisgICAgICAgIFN0YWdlZnJpZ2h0TWVkaWFTY2FubmVyLmNwcCAgICAgICBcCisgICAgICAgIFN0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXIuY3BwICBcCisgICAgICAgIFRocm90dGxlZFNvdXJjZS5jcHAgICAgICAgICAgICAgICBcCisgICAgICAgIFRpbWVTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFRpbWVkRXZlbnRRdWV1ZS5jcHAgICAgICAgICAgICAgICBcCisgICAgICAgIFV0aWxzLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFdBVkV4dHJhY3Rvci5jcHAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHN0cmluZy5jcHAKIAotTE9DQUxfQ0ZMQUdTICs9IC1EQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUCi1lbmRpZgotCiBMT0NBTF9DX0lOQ0xVREVTOj0gXAogCSQoSk5JX0hfSU5DTFVERSkgXAogICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXApAQCAtNjUsMjQgKzYwLDI4IEBACiAKIExPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gXAogICAgICAgICBsaWJzdGFnZWZyaWdodF9hYWNkZWMgXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9hYWNlbmMgXAogICAgICAgICBsaWJzdGFnZWZyaWdodF9hbXJuYmRlYyBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2Ftcm5iZW5jIFwKICAgICAgICAgbGlic3RhZ2VmcmlnaHRfYW1yd2JkZWMgXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9hbXJ3YmVuYyBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2F2Y2RlYyBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X200dmgyNjNkZWMgXAogICAgICAgICBsaWJzdGFnZWZyaWdodF9tcDNkZWMgXAotICAgICAgICBsaWJzdGFnZWZyaWdodF92b3JiaXNkZWMKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfdm9yYmlzZGVjIFwKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfbWF0cm9za2EgXAorICAgICAgICBsaWJzdGFnZWZyaWdodF92cHhkZWMgXAorICAgICAgICBsaWJ2cHggXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9tcGVnMnRzIFwKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfaHR0cGxpdmUgXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9ydHNwIFwKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfaWQzIFwKIAogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2Ftcm5iX2NvbW1vbiBcCi0gICAgICAgIGxpYnN0YWdlZnJpZ2h0X2F2Y19jb21tb24KLQotaWZlcSAoJChCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQpLHRydWUpCi0KLUxPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgKz0gXAotICAgICAgICBsaWJzdGFnZWZyaWdodF9pZDMKLQotTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBcCisgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2VuY19jb21tb24gXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9hdmNfY29tbW9uIFwKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfZm91bmRhdGlvbiBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2NvbG9yX2NvbnZlcnNpb24KIAogaWZlcSAoJChUQVJHRVRfT1MpLSQoVEFSR0VUX1NJTVVMQVRPUiksbGludXgtdHJ1ZSkKQEAgLTk1LDggKzk0LDYgQEAKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgKz0gbGliZGwKIGVuZGlmCiAKLWVuZGlmCi0KIGlmZXEgKCQoVEFSR0VUX09TKS0kKFRBUkdFVF9TSU1VTEFUT1IpLGxpbnV4LXRydWUpCiAgICAgICAgIExPQ0FMX0xETElCUyArPSAtbHB0aHJlYWQKIGVuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9BdWRpb1BsYXllci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9BdWRpb1BsYXllci5jcHAKaW5kZXggYmNmMjQ2My4uYjc5YmExMyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQXVkaW9QbGF5ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F1ZGlvUGxheWVyLmNwcApAQCAtODcsNyArODcsOSBAQAogICAgICAgICAgICAgICAgIERFRkFVTFRfQVVESU9TSU5LX0JVRkZFUkNPVU5ULAogICAgICAgICAgICAgICAgICZBdWRpb1BsYXllcjo6QXVkaW9TaW5rQ2FsbGJhY2ssIHRoaXMpOwogICAgICAgICBpZiAoZXJyICE9IE9LKSB7Ci0gICAgICAgICAgICBtU291cmNlLT5zdG9wKCk7CisgICAgICAgICAgICBpZiAoIXNvdXJjZUFscmVhZHlTdGFydGVkKSB7CisgICAgICAgICAgICAgICAgbVNvdXJjZS0+c3RvcCgpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CkBAIC0xMDgsNyArMTEwLDkgQEAKICAgICAgICAgICAgIGRlbGV0ZSBtQXVkaW9UcmFjazsKICAgICAgICAgICAgIG1BdWRpb1RyYWNrID0gTlVMTDsKIAotICAgICAgICAgICAgbVNvdXJjZS0+c3RvcCgpOworICAgICAgICAgICAgaWYgKCFzb3VyY2VBbHJlYWR5U3RhcnRlZCkgeworICAgICAgICAgICAgICAgIG1Tb3VyY2UtPnN0b3AoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmV0dXJuIGVycjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuY3BwCmluZGV4IGVkYWJhZjkuLjYwMzE3OTcgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F1ZGlvU291cmNlLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9BdWRpb1NvdXJjZS5jcHAKQEAgLTE0LDYgKzE0LDEwIEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkF1ZGlvU291cmNlIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuaD4KIAogI2luY2x1ZGUgPG1lZGlhL0F1ZGlvUmVjb3JkLmg+CkBAIC0yMSwxNiArMjUsMzMgQEAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKyNpbmNsdWRlIDxjdXRpbHMvcHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dGltZS5oPgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKIEF1ZGlvU291cmNlOjpBdWRpb1NvdXJjZSgKICAgICAgICAgaW50IGlucHV0U291cmNlLCB1aW50MzJfdCBzYW1wbGVSYXRlLCB1aW50MzJfdCBjaGFubmVscykKLSAgICA6IG1SZWNvcmQobmV3IEF1ZGlvUmVjb3JkKAotICAgICAgICAgICAgICAgIGlucHV0U291cmNlLCBzYW1wbGVSYXRlLCBBdWRpb1N5c3RlbTo6UENNXzE2X0JJVCwgY2hhbm5lbHMpKSwKLSAgICAgIG1Jbml0Q2hlY2sobVJlY29yZC0+aW5pdENoZWNrKCkpLAotICAgICAgbVN0YXJ0ZWQoZmFsc2UpLAorICAgIDogbVN0YXJ0ZWQoZmFsc2UpLAorICAgICAgbUNvbGxlY3RTdGF0cyhmYWxzZSksCisgICAgICBtVG90YWxSZWFkVGltZVVzKDApLAorICAgICAgbVRvdGFsUmVhZEJ5dGVzKDApLAorICAgICAgbVRvdGFsUmVhZHMoMCksCiAgICAgICBtR3JvdXAoTlVMTCkgeworCisgICAgTE9HVigic2FtcGxlUmF0ZTogJWQsIGNoYW5uZWxzOiAlZCIsIHNhbXBsZVJhdGUsIGNoYW5uZWxzKTsKKyAgICB1aW50MzJfdCBmbGFncyA9IEF1ZGlvUmVjb3JkOjpSRUNPUkRfQUdDX0VOQUJMRSB8CisgICAgICAgICAgICAgICAgICAgICBBdWRpb1JlY29yZDo6UkVDT1JEX05TX0VOQUJMRSAgfAorICAgICAgICAgICAgICAgICAgICAgQXVkaW9SZWNvcmQ6OlJFQ09SRF9JSVJfRU5BQkxFOworCisgICAgbVJlY29yZCA9IG5ldyBBdWRpb1JlY29yZCgKKyAgICAgICAgICAgICAgICBpbnB1dFNvdXJjZSwgc2FtcGxlUmF0ZSwgQXVkaW9TeXN0ZW06OlBDTV8xNl9CSVQsCisgICAgICAgICAgICAgICAgY2hhbm5lbHMgPiAxPyBBdWRpb1N5c3RlbTo6Q0hBTk5FTF9JTl9TVEVSRU86IEF1ZGlvU3lzdGVtOjpDSEFOTkVMX0lOX01PTk8sCisgICAgICAgICAgICAgICAgNCAqIGtNYXhCdWZmZXJTaXplIC8gc2l6ZW9mKGludDE2X3QpLCAvKiBFbmFibGUgcGluZy1wb25nIGJ1ZmZlcnMgKi8KKyAgICAgICAgICAgICAgICBmbGFncyk7CisKKyAgICBtSW5pdENoZWNrID0gbVJlY29yZC0+aW5pdENoZWNrKCk7CiB9CiAKIEF1ZGlvU291cmNlOjp+QXVkaW9Tb3VyY2UoKSB7CkBAIC01MSw2ICs3MiwxOSBAQAogICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKICAgICB9CiAKKyAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07CisgICAgaWYgKHByb3BlcnR5X2dldCgibWVkaWEuc3RhZ2VmcmlnaHQucmVjb3JkLXN0YXRzIiwgdmFsdWUsIE5VTEwpCisgICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgeworICAgICAgICBtQ29sbGVjdFN0YXRzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBtVHJhY2tNYXhBbXBsaXR1ZGUgPSBmYWxzZTsKKyAgICBtTWF4QW1wbGl0dWRlID0gMDsKKyAgICBtU3RhcnRUaW1lVXMgPSAwOworICAgIGludDY0X3Qgc3RhcnRUaW1lVXM7CisgICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMtPmZpbmRJbnQ2NChrS2V5VGltZSwgJnN0YXJ0VGltZVVzKSkgeworICAgICAgICBtU3RhcnRUaW1lVXMgPSBzdGFydFRpbWVVczsKKyAgICB9CiAgICAgc3RhdHVzX3QgZXJyID0gbVJlY29yZC0+c3RhcnQoKTsKIAogICAgIGlmIChlcnIgPT0gT0spIHsKQEAgLTc1LDYgKzEwOSwxMyBAQAogCiAgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKIAorICAgIGlmIChtQ29sbGVjdFN0YXRzKSB7CisgICAgICAgIExPR0koIiVsbGQgcmVhZHM6ICUuMmYgYnBzIGluICVsbGQgdXMiLAorICAgICAgICAgICAgICAgIG1Ub3RhbFJlYWRzLAorICAgICAgICAgICAgICAgIChtVG90YWxSZWFkQnl0ZXMgKiA4MDAwMDAwLjApIC8gbVRvdGFsUmVhZFRpbWVVcywKKyAgICAgICAgICAgICAgICBtVG90YWxSZWFkVGltZVVzKTsKKyAgICB9CisKICAgICByZXR1cm4gT0s7CiB9CiAKQEAgLTkxLDE5ICsxMzIsMzYgQEAKIHN0YXR1c190IEF1ZGlvU291cmNlOjpyZWFkKAogICAgICAgICBNZWRpYUJ1ZmZlciAqKm91dCwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKICAgICAqb3V0ID0gTlVMTDsKKyAgICArK21Ub3RhbFJlYWRzOwogCiAgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlcjsKICAgICBDSEVDS19FUShtR3JvdXAtPmFjcXVpcmVfYnVmZmVyKCZidWZmZXIpLCBPSyk7CiAKICAgICB1aW50MzJfdCBudW1GcmFtZXNSZWNvcmRlZDsKICAgICBtUmVjb3JkLT5nZXRQb3NpdGlvbigmbnVtRnJhbWVzUmVjb3JkZWQpOworICAgIGludDY0X3QgbGF0ZW5jeSA9IG1SZWNvcmQtPmxhdGVuY3koKSAqIDEwMDA7CiAKLSAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NCgKLSAgICAgICAgICAgIGtLZXlUaW1lLAotICAgICAgICAgICAgKDEwMDAwMDBsbCAqIG51bUZyYW1lc1JlY29yZGVkKSAvIG1SZWNvcmQtPmdldFNhbXBsZVJhdGUoKQotICAgICAgICAgICAgLSBtUmVjb3JkLT5sYXRlbmN5KCkgKiAxMDAwKTsKKyAgICBpbnQ2NF90IHJlYWRUaW1lID0gc3lzdGVtVGltZSgpIC8gMTAwMDsKKyAgICBpZiAobnVtRnJhbWVzUmVjb3JkZWQgPT0gMCkgeworICAgICAgICAvLyBJbml0aWFsIGRlbGF5CisgICAgICAgIGlmIChtU3RhcnRUaW1lVXMgPiAwKSB7CisgICAgICAgICAgICBtU3RhcnRUaW1lVXMgPSByZWFkVGltZSAtIG1TdGFydFRpbWVVczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TdGFydFRpbWVVcyArPSBsYXRlbmN5OworICAgICAgICB9CisgICAgfQogCi0gICAgc3NpemVfdCBuID0gbVJlY29yZC0+cmVhZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIHNzaXplX3QgbiA9IDA7CisgICAgaWYgKG1Db2xsZWN0U3RhdHMpIHsKKyAgICAgICAgbiA9IG1SZWNvcmQtPnJlYWQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgaW50NjRfdCBlbmRUaW1lID0gc3lzdGVtVGltZSgpIC8gMTAwMDsKKyAgICAgICAgbVRvdGFsUmVhZFRpbWVVcyArPSAoZW5kVGltZSAtIHJlYWRUaW1lKTsKKyAgICAgICAgaWYgKG4gPj0gMCkgeworICAgICAgICAgICAgbVRvdGFsUmVhZEJ5dGVzICs9IG47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBuID0gbVJlY29yZC0+cmVhZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIH0KIAogICAgIGlmIChuIDwgMCkgewogICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKQEAgLTExMiw2ICsxNzAsMTYgQEAKICAgICAgICAgcmV0dXJuIChzdGF0dXNfdCluOwogICAgIH0KIAorICAgIGlmIChtVHJhY2tNYXhBbXBsaXR1ZGUpIHsKKyAgICAgICAgdHJhY2tNYXhBbXBsaXR1ZGUoKGludDE2X3QgKikgYnVmZmVyLT5kYXRhKCksIG4gPj4gMSk7CisgICAgfQorCisgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSA9IG1SZWNvcmQtPmdldFNhbXBsZVJhdGUoKTsKKyAgICBpbnQ2NF90IHRpbWVzdGFtcFVzID0gKDEwMDAwMDBMTCAqIG51bUZyYW1lc1JlY29yZGVkKSAvIHNhbXBsZVJhdGUgKyBtU3RhcnRUaW1lVXM7CisgICAgYnVmZmVyLT5tZXRhX2RhdGEoKS0+c2V0SW50NjQoa0tleVRpbWUsIHRpbWVzdGFtcFVzKTsKKyAgICBMT0dWKCJpbml0aWFsIGRlbGF5OiAlbGxkLCBzYW1wbGUgcmF0ZTogJWQsIHRpbWVzdGFtcDogJWxsZCIsCisgICAgICAgICAgICBtU3RhcnRUaW1lVXMsIHNhbXBsZVJhdGUsIHRpbWVzdGFtcFVzKTsKKwogICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDAsIG4pOwogCiAgICAgKm91dCA9IGJ1ZmZlcjsKQEAgLTExOSw0ICsxODcsMjcgQEAKICAgICByZXR1cm4gT0s7CiB9CiAKK3ZvaWQgQXVkaW9Tb3VyY2U6OnRyYWNrTWF4QW1wbGl0dWRlKGludDE2X3QgKmRhdGEsIGludCBuU2FtcGxlcykgeworICAgIGZvciAoaW50IGkgPSBuU2FtcGxlczsgaSA+IDA7IC0taSkgeworICAgICAgICBpbnQxNl90IHZhbHVlID0gKmRhdGErKzsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAgICAgdmFsdWUgPSAtdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1NYXhBbXBsaXR1ZGUgPCB2YWx1ZSkgeworICAgICAgICAgICAgbU1heEFtcGxpdHVkZSA9IHZhbHVlOworICAgICAgICB9CisgICAgfQorfQorCitpbnQxNl90IEF1ZGlvU291cmNlOjpnZXRNYXhBbXBsaXR1ZGUoKSB7CisgICAgLy8gRmlyc3QgY2FsbCBhY3RpdmF0ZXMgdGhlIHRyYWNraW5nLgorICAgIGlmICghbVRyYWNrTWF4QW1wbGl0dWRlKSB7CisgICAgICAgIG1UcmFja01heEFtcGxpdHVkZSA9IHRydWU7CisgICAgfQorICAgIGludDE2X3QgdmFsdWUgPSBtTWF4QW1wbGl0dWRlOworICAgIG1NYXhBbXBsaXR1ZGUgPSAwOworICAgIExPR1YoIm1heCBhbXBsaXR1ZGUgc2luY2UgbGFzdCBjYWxsOiAlZCIsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9Bd2Vzb21lUGxheWVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F3ZXNvbWVQbGF5ZXIuY3BwCmluZGV4IDI3NGRhZDkuLmZmZWQ3NGYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F3ZXNvbWVQbGF5ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F3ZXNvbWVQbGF5ZXIuY3BwCkBAIC0yMCwxMyArMjAsMTUgQEAKIAogI2luY2x1ZGUgPGRsZmNuLmg+CiAKKyNpbmNsdWRlICJpbmNsdWRlL0FSVFNQQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImluY2x1ZGUvQXdlc29tZVBsYXllci5oIgotI2luY2x1ZGUgImluY2x1ZGUvUHJlZmV0Y2hlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTGl2ZVNvdXJjZS5oIgogI2luY2x1ZGUgImluY2x1ZGUvU29mdHdhcmVSZW5kZXJlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTnVDYWNoZWRTb3VyY2UyLmgiCisjaW5jbHVkZSAiaW5jbHVkZS9UaHJvdHRsZWRTb3VyY2UuaCIKIAogI2luY2x1ZGUgPGJpbmRlci9JUENUaHJlYWRTdGF0ZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0F1ZGlvUGxheWVyLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQ2FjaGluZ0RhdGFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRmlsZVNvdXJjZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyLmg+CkBAIC0zOSw2ICs0MSw4IEBACiAKICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgogCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyLmg+CisKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogc3RydWN0IEF3ZXNvbWVFdmVudCA6IHB1YmxpYyBUaW1lZEV2ZW50UXVldWU6OkV2ZW50IHsKQEAgLTI2MSw2ICsyNjUsMTYgQEAKIAogc3RhdHVzX3QgQXdlc29tZVBsYXllcjo6c2V0RGF0YVNvdXJjZSgKICAgICAgICAgaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpIHsKKyNpZiAwCisgICAgLy8gcmV0dXJuIHNldERhdGFTb3VyY2UoImh0dHBsaXZlOi8vaXBob25lZDUuYWthbWFpLmNvbS5lZGdlc3VpdGUubmV0L21oYmFycm9uL25hc2F0di9uYXNhdHZfOTYubTN1OCIpOworICAgIC8vIHJldHVybiBzZXREYXRhU291cmNlKCJodHRwbGl2ZTovL2lwaG9uZWQ1LmFrYW1haS5jb20uZWRnZXN1aXRlLm5ldC9taGJhcnJvbi9uYXNhdHYvbmFzYXR2XzE1MDAubTN1OCIpOworICAgIHJldHVybiBzZXREYXRhU291cmNlKCJodHRwbGl2ZTovL2lwaG9uZS52aWRlby5oc24uY29tL2lQaG9uZV9oaWdoLm0zdTgiKTsKKyAgICAvLyByZXR1cm4gc2V0RGF0YVNvdXJjZSgiaHR0cGxpdmU6Ly9pcGhvbmVkNS5ha2FtYWkuY29tLmVkZ2VzdWl0ZS5uZXQvbWhiYXJyb24vaXBob25ld2ViY2FzdC93ZWJjYXN0MDkwMjA5X2FsbC93ZWJjYXN0MDkwMjA5X2FsbC5tM3U4Iik7CisgICAgLy8gcmV0dXJuIHNldERhdGFTb3VyY2UoImh0dHBsaXZlOi8vcXRodHRwLmFrYW1haS5jb20uZWRnZXN1aXRlLm5ldC9pcGhvbmVfZGVtby9WaWRlb19Db250ZW50L3VzYXQvdHRfMDYyMjA5X2lwaG9uZS9oaS9wcm9nX2luZGV4Lm0zdTgiKTsKKyAgICAvLyByZXR1cm4gc2V0RGF0YVNvdXJjZSgiaHR0cGxpdmU6Ly9xdGh0dHAuYWthbWFpLmNvbS5lZGdlc3VpdGUubmV0L2lwaG9uZV9kZW1vL1ZpZGVvX0NvbnRlbnQvdXNhdC90dF9nb29nbWFwcy9oaS9wcm9nX2luZGV4Lm0zdTgiKTsKKyAgICAvLyByZXR1cm4gc2V0RGF0YVNvdXJjZSgiaHR0cGxpdmU6Ly9xdGh0dHAuYWthbWFpLmNvbS5lZGdlc3VpdGUubmV0L2lwaG9uZV9kZW1vL1ZpZGVvX0NvbnRlbnQvbXR2L25pX3Nwb18yNWFfcnQ3NDEzN19jbGlwX3N5bi9oaS9wcm9nX2luZGV4Lm0zdTgiKTsKKyNlbmRpZgorCiAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKIAogICAgIHJlc2V0X2woKTsKQEAgLTM0MCwxMSArMzU0LDcgQEAKIAogICAgIGNhbmNlbFBsYXllckV2ZW50cygpOwogCi0gICAgaWYgKG1QcmVmZXRjaGVyICE9IE5VTEwpIHsKLSAgICAgICAgQ0hFQ0tfRVEobVByZWZldGNoZXItPmdldFN0cm9uZ0NvdW50KCksIDEpOwotICAgIH0KLSAgICBtUHJlZmV0Y2hlci5jbGVhcigpOwotCisgICAgbUNhY2hlZFNvdXJjZS5jbGVhcigpOwogICAgIG1BdWRpb1RyYWNrLmNsZWFyKCk7CiAgICAgbVZpZGVvVHJhY2suY2xlYXIoKTsKIApAQCAtMzYxLDkgKzM3MSw2IEBACiAgICAgfQogICAgIG1BdWRpb1NvdXJjZS5jbGVhcigpOwogCi0gICAgaWYgKG1UaW1lU291cmNlICE9IG1BdWRpb1BsYXllcikgewotICAgICAgICBkZWxldGUgbVRpbWVTb3VyY2U7Ci0gICAgfQogICAgIG1UaW1lU291cmNlID0gTlVMTDsKIAogICAgIGRlbGV0ZSBtQXVkaW9QbGF5ZXI7CkBAIC0zODEsNiArMzg4LDggQEAKICAgICAgICAgbVZpZGVvQnVmZmVyID0gTlVMTDsKICAgICB9CiAKKyAgICBtUlRTUENvbnRyb2xsZXIuY2xlYXIoKTsKKwogICAgIGlmIChtVmlkZW9Tb3VyY2UgIT0gTlVMTCkgewogICAgICAgICBtVmlkZW9Tb3VyY2UtPnN0b3AoKTsKIApAQCAtNDMyLDI5ICs0NDEsNDUgQEAKICAgICB9CiAgICAgbUJ1ZmZlcmluZ0V2ZW50UGVuZGluZyA9IGZhbHNlOwogCi0gICAgaW50NjRfdCBkdXJhdGlvblVzOwotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1NaXNjU3RhdGVMb2NrKTsKLSAgICAgICAgZHVyYXRpb25VcyA9IG1EdXJhdGlvblVzOworICAgIGlmIChtQ2FjaGVkU291cmNlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChkdXJhdGlvblVzID49IDApIHsKLSAgICAgICAgaW50NjRfdCBjYWNoZWREdXJhdGlvblVzID0gbVByZWZldGNoZXItPmdldENhY2hlZER1cmF0aW9uVXMoKTsKKyAgICBzaXplX3QgbG93V2F0ZXJtYXJrID0gNDAwMDAwOworICAgIHNpemVfdCBoaWdoV2F0ZXJtYXJrID0gMTAwMDAwMDsKIAotICAgICAgICBMT0dWKCJjYWNoZSBob2xkcyAlLjJmIHNlY3Mgd29ydGggb2YgZGF0YS4iLCBjYWNoZWREdXJhdGlvblVzIC8gMUU2KTsKKyAgICBvZmZfdCBzaXplOworICAgIGlmIChtRHVyYXRpb25VcyA+PSAwICYmIG1DYWNoZWRTb3VyY2UtPmdldFNpemUoJnNpemUpID09IE9LKSB7CisgICAgICAgIGludDY0X3QgYml0cmF0ZSA9IHNpemUgKiA4MDAwMDAwbGwgLyBtRHVyYXRpb25VczsgIC8vIGluIGJpdHMvc2VjCiAKLSAgICAgICAgaW50NjRfdCBwb3NpdGlvblVzOwotICAgICAgICBnZXRQb3NpdGlvbigmcG9zaXRpb25Vcyk7CisgICAgICAgIHNpemVfdCBjYWNoZWRTaXplID0gbUNhY2hlZFNvdXJjZS0+Y2FjaGVkU2l6ZSgpOworICAgICAgICBpbnQ2NF90IGNhY2hlZER1cmF0aW9uVXMgPSBjYWNoZWRTaXplICogODAwMDAwMGxsIC8gYml0cmF0ZTsKIAotICAgICAgICBjYWNoZWREdXJhdGlvblVzICs9IHBvc2l0aW9uVXM7CisgICAgICAgIGRvdWJsZSBwZXJjZW50YWdlID0gKGRvdWJsZSljYWNoZWREdXJhdGlvblVzIC8gbUR1cmF0aW9uVXM7CiAKLSAgICAgICAgZG91YmxlIHBlcmNlbnRhZ2UgPSAoZG91YmxlKWNhY2hlZER1cmF0aW9uVXMgLyBkdXJhdGlvblVzOwogICAgICAgICBub3RpZnlMaXN0ZW5lcl9sKE1FRElBX0JVRkZFUklOR19VUERBVEUsIHBlcmNlbnRhZ2UgKiAxMDAuMCk7CiAKLSAgICAgICAgcG9zdEJ1ZmZlcmluZ0V2ZW50X2woKTsKLSAgICB9IGVsc2UgewotICAgICAgICBMT0dFKCJOb3Qgc2VuZGluZyBidWZmZXJpbmcgc3RhdHVzIGJlY2F1c2UgZHVyYXRpb24gaXMgdW5rbm93bi4iKTsKKyAgICAgICAgbG93V2F0ZXJtYXJrID0gMiAqIGJpdHJhdGUgLyA4OyAgLy8gMiBzZWNzCisgICAgICAgIGhpZ2hXYXRlcm1hcmsgPSAxMCAqIGJpdHJhdGUgLyA4OyAgLy8gMTAgc2VjcwogICAgIH0KKworICAgIGJvb2wgZW9zOworICAgIHNpemVfdCBjYWNoZWREYXRhUmVtYWluaW5nID0gbUNhY2hlZFNvdXJjZS0+YXBwcm94RGF0YVJlbWFpbmluZygmZW9zKTsKKworICAgIGlmICgobUZsYWdzICYgUExBWUlORykgJiYgIWVvcyAmJiAoY2FjaGVkRGF0YVJlbWFpbmluZyA8IGxvd1dhdGVybWFyaykpIHsKKyAgICAgICAgTE9HSSgiY2FjaGUgaXMgcnVubmluZyBsb3cgKDwgJWQpICwgcGF1c2luZy4iLCBsb3dXYXRlcm1hcmspOworICAgICAgICBtRmxhZ3MgfD0gQ0FDSEVfVU5ERVJSVU47CisgICAgICAgIHBhdXNlX2woKTsKKyAgICAgICAgbm90aWZ5TGlzdGVuZXJfbChNRURJQV9JTkZPLCBNRURJQV9JTkZPX0JVRkZFUklOR19TVEFSVCk7CisgICAgfSBlbHNlIGlmICgobUZsYWdzICYgQ0FDSEVfVU5ERVJSVU4pCisgICAgICAgICAgICAmJiAoZW9zIHx8IGNhY2hlZERhdGFSZW1haW5pbmcgPiBoaWdoV2F0ZXJtYXJrKSkgeworICAgICAgICBMT0dJKCJjYWNoZSBoYXMgZmlsbGVkIHVwICg+ICVkKSwgcmVzdW1pbmcuIiwgaGlnaFdhdGVybWFyayk7CisgICAgICAgIG1GbGFncyAmPSB+Q0FDSEVfVU5ERVJSVU47CisgICAgICAgIHBsYXlfbCgpOworICAgICAgICBub3RpZnlMaXN0ZW5lcl9sKE1FRElBX0lORk8sIE1FRElBX0lORk9fQlVGRkVSSU5HX0VORCk7CisgICAgfQorCisgICAgcG9zdEJ1ZmZlcmluZ0V2ZW50X2woKTsKIH0KIAogdm9pZCBBd2Vzb21lUGxheWVyOjpvblN0cmVhbURvbmUoKSB7CkBAIC00NjYsMjIgKzQ5MSwzNSBAQAogICAgIH0KICAgICBtU3RyZWFtRG9uZUV2ZW50UGVuZGluZyA9IGZhbHNlOwogCi0gICAgaWYgKG1TdHJlYW1Eb25lU3RhdHVzID09IEVSUk9SX0VORF9PRl9TVFJFQU0gJiYgKG1GbGFncyAmIExPT1BJTkcpKSB7CisgICAgaWYgKG1TdHJlYW1Eb25lU3RhdHVzICE9IEVSUk9SX0VORF9PRl9TVFJFQU0pIHsKKyAgICAgICAgTE9HVigiTUVESUFfRVJST1IgJWQiLCBtU3RyZWFtRG9uZVN0YXR1cyk7CisKKyAgICAgICAgbm90aWZ5TGlzdGVuZXJfbCgKKyAgICAgICAgICAgICAgICBNRURJQV9FUlJPUiwgTUVESUFfRVJST1JfVU5LTk9XTiwgbVN0cmVhbURvbmVTdGF0dXMpOworCisgICAgICAgIHBhdXNlX2woKTsKKworICAgICAgICBtRmxhZ3MgfD0gQVRfRU9TOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgYm9vbCBhbGxEb25lID0KKyAgICAgICAgKG1WaWRlb1NvdXJjZSA9PSBOVUxMIHx8IChtRmxhZ3MgJiBWSURFT19BVF9FT1MpKQorICAgICAgICAgICAgJiYgKG1BdWRpb1NvdXJjZSA9PSBOVUxMIHx8IChtRmxhZ3MgJiBBVURJT19BVF9FT1MpKTsKKworICAgIGlmICghYWxsRG9uZSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1GbGFncyAmIExPT1BJTkcpIHsKICAgICAgICAgc2Vla1RvX2woMCk7CiAKICAgICAgICAgaWYgKG1WaWRlb1NvdXJjZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBwb3N0VmlkZW9FdmVudF9sKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAobVN0cmVhbURvbmVTdGF0dXMgPT0gRVJST1JfRU5EX09GX1NUUkVBTSkgewotICAgICAgICAgICAgTE9HVigiTUVESUFfUExBWUJBQ0tfQ09NUExFVEUiKTsKLSAgICAgICAgICAgIG5vdGlmeUxpc3RlbmVyX2woTUVESUFfUExBWUJBQ0tfQ09NUExFVEUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTE9HVigiTUVESUFfRVJST1IgJWQiLCBtU3RyZWFtRG9uZVN0YXR1cyk7Ci0KLSAgICAgICAgICAgIG5vdGlmeUxpc3RlbmVyX2woCi0gICAgICAgICAgICAgICAgICAgIE1FRElBX0VSUk9SLCBNRURJQV9FUlJPUl9VTktOT1dOLCBtU3RyZWFtRG9uZVN0YXR1cyk7Ci0gICAgICAgIH0KKyAgICAgICAgTE9HVigiTUVESUFfUExBWUJBQ0tfQ09NUExFVEUiKTsKKyAgICAgICAgbm90aWZ5TGlzdGVuZXJfbChNRURJQV9QTEFZQkFDS19DT01QTEVURSk7CiAKICAgICAgICAgcGF1c2VfbCgpOwogCkBAIC00OTEsNiArNTI5LDkgQEAKIAogc3RhdHVzX3QgQXdlc29tZVBsYXllcjo6cGxheSgpIHsKICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgbUZsYWdzICY9IH5DQUNIRV9VTkRFUlJVTjsKKwogICAgIHJldHVybiBwbGF5X2woKTsKIH0KIApAQCAtNTMyLDcgKzU3Myw2IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZGVsZXRlIG1UaW1lU291cmNlOwogICAgICAgICAgICAgICAgIG1UaW1lU291cmNlID0gbUF1ZGlvUGxheWVyOwogCiAgICAgICAgICAgICAgICAgZGVmZXJyZWRBdWRpb1NlZWsgPSB0cnVlOwpAQCAtNTQ4LDcgKzU4OCw3IEBACiAgICAgfQogCiAgICAgaWYgKG1UaW1lU291cmNlID09IE5VTEwgJiYgbUF1ZGlvUGxheWVyID09IE5VTEwpIHsKLSAgICAgICAgbVRpbWVTb3VyY2UgPSBuZXcgU3lzdGVtVGltZVNvdXJjZTsKKyAgICAgICAgbVRpbWVTb3VyY2UgPSAmbVN5c3RlbVRpbWVTb3VyY2U7CiAgICAgfQogCiAgICAgaWYgKG1WaWRlb1NvdXJjZSAhPSBOVUxMKSB7CkBAIC02MTUsNiArNjU1LDkgQEAKIAogc3RhdHVzX3QgQXdlc29tZVBsYXllcjo6cGF1c2UoKSB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIG1GbGFncyAmPSB+Q0FDSEVfVU5ERVJSVU47CisKICAgICByZXR1cm4gcGF1c2VfbCgpOwogfQogCkBAIC02MzUsNyArNjc4LDcgQEAKIH0KIAogYm9vbCBBd2Vzb21lUGxheWVyOjppc1BsYXlpbmcoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1GbGFncyAmIFBMQVlJTkc7CisgICAgcmV0dXJuIChtRmxhZ3MgJiBQTEFZSU5HKSB8fCAobUZsYWdzICYgQ0FDSEVfVU5ERVJSVU4pOwogfQogCiB2b2lkIEF3ZXNvbWVQbGF5ZXI6OnNldElTdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiAmaXN1cmZhY2UpIHsKQEAgLTcwMiwxMCArNzQ1LDE1IEBACiB9CiAKIHN0YXR1c190IEF3ZXNvbWVQbGF5ZXI6OnNlZWtUb19sKGludDY0X3QgdGltZVVzKSB7CisgICAgaWYgKG1GbGFncyAmIENBQ0hFX1VOREVSUlVOKSB7CisgICAgICAgIG1GbGFncyAmPSB+Q0FDSEVfVU5ERVJSVU47CisgICAgICAgIHBsYXlfbCgpOworICAgIH0KKwogICAgIG1TZWVraW5nID0gdHJ1ZTsKICAgICBtU2Vla05vdGlmaWNhdGlvblNlbnQgPSBmYWxzZTsKICAgICBtU2Vla1RpbWVVcyA9IHRpbWVVczsKLSAgICBtRmxhZ3MgJj0gfkFUX0VPUzsKKyAgICBtRmxhZ3MgJj0gfihBVF9FT1MgfCBBVURJT19BVF9FT1MgfCBWSURFT19BVF9FT1MpOwogCiAgICAgc2Vla0F1ZGlvSWZOZWNlc3NhcnlfbCgpOwogCkBAIC03NDcsMTAgKzc5NSw2IEBACiB2b2lkIEF3ZXNvbWVQbGF5ZXI6OnNldEF1ZGlvU291cmNlKHNwPE1lZGlhU291cmNlPiBzb3VyY2UpIHsKICAgICBDSEVDSyhzb3VyY2UgIT0gTlVMTCk7CiAKLSAgICBpZiAobVByZWZldGNoZXIgIT0gTlVMTCkgewotICAgICAgICBzb3VyY2UgPSBtUHJlZmV0Y2hlci0+YWRkU291cmNlKHNvdXJjZSk7Ci0gICAgfQotCiAgICAgbUF1ZGlvVHJhY2sgPSBzb3VyY2U7CiB9CiAKQEAgLTc5NywxMCArODQxLDYgQEAKIHZvaWQgQXdlc29tZVBsYXllcjo6c2V0VmlkZW9Tb3VyY2Uoc3A8TWVkaWFTb3VyY2U+IHNvdXJjZSkgewogICAgIENIRUNLKHNvdXJjZSAhPSBOVUxMKTsKIAotICAgIGlmIChtUHJlZmV0Y2hlciAhPSBOVUxMKSB7Ci0gICAgICAgIHNvdXJjZSA9IG1QcmVmZXRjaGVyLT5hZGRTb3VyY2Uoc291cmNlKTsKLSAgICB9Ci0KICAgICBtVmlkZW9UcmFjayA9IHNvdXJjZTsKIH0KIApAQCAtODUyLDYgKzg5MiwyMSBAQAogICAgICAgICAgICAgbVZpZGVvQnVmZmVyLT5yZWxlYXNlKCk7CiAgICAgICAgICAgICBtVmlkZW9CdWZmZXIgPSBOVUxMOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1DYWNoZWRTb3VyY2UgIT0gTlVMTCAmJiBtQXVkaW9Tb3VyY2UgIT0gTlVMTCkgeworICAgICAgICAgICAgLy8gV2UncmUgZ29pbmcgdG8gc2VlayB0aGUgdmlkZW8gc291cmNlIGZpcnN0LCBmb2xsb3dlZCBieQorICAgICAgICAgICAgLy8gdGhlIGF1ZGlvIHNvdXJjZS4KKyAgICAgICAgICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIGp1bXBzIGluIHRoZSBEYXRhU291cmNlIG9mZnNldCBjYXVzZWQgYnkKKyAgICAgICAgICAgIC8vIHRoZSBhdWRpbyBjb2RlYyBwcmVmZXRjaGluZyBkYXRhIGZyb20gdGhlIG9sZCBsb2NhdGlvbnMKKyAgICAgICAgICAgIC8vIHdoaWxlIHRoZSB2aWRlbyBjb2RlYyBpcyBhbHJlYWR5IHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBuZXcKKyAgICAgICAgICAgIC8vIGxvY2F0aW9ucywgd2UnbGwgInBhdXNlIiB0aGUgYXVkaW8gc291cmNlLCBjYXVzaW5nIGl0IHRvCisgICAgICAgICAgICAvLyBzdG9wIHJlYWRpbmcgaW5wdXQgZGF0YSB1bnRpbCBhIHN1YnNlcXVlbnQgc2Vlay4KKworICAgICAgICAgICAgaWYgKG1BdWRpb1BsYXllciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbUF1ZGlvUGxheWVyLT5wYXVzZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbUF1ZGlvU291cmNlLT5wYXVzZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFtVmlkZW9CdWZmZXIpIHsKQEAgLTg3OCw2ICs5MzMsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBtRmxhZ3MgfD0gVklERU9fQVRfRU9TOwogICAgICAgICAgICAgICAgIHBvc3RTdHJlYW1Eb25lRXZlbnRfbChlcnIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTkwOCw2ICs5NjQsNyBAQAogICAgICAgICAgICAgTE9HVigic2Vla2luZyBhdWRpbyB0byAlbGxkIHVzICglLjJmIHNlY3MpLiIsIHRpbWVVcywgdGltZVVzIC8gMUU2KTsKIAogICAgICAgICAgICAgbUF1ZGlvUGxheWVyLT5zZWVrVG8odGltZVVzKTsKKyAgICAgICAgICAgIG1BdWRpb1BsYXllci0+cmVzdW1lKCk7CiAgICAgICAgICAgICBtV2F0Y2hGb3JBdWRpb1NlZWtDb21wbGV0ZSA9IHRydWU7CiAgICAgICAgICAgICBtV2F0Y2hGb3JBdWRpb0VPUyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoIW1TZWVrTm90aWZpY2F0aW9uU2VudCkgewpAQCAtOTIxLDE5ICs5NzgsMjEgQEAKICAgICAgICAgbVNlZWtOb3RpZmljYXRpb25TZW50ID0gZmFsc2U7CiAgICAgfQogCisgICAgVGltZVNvdXJjZSAqdHMgPSAobUZsYWdzICYgQVVESU9fQVRfRU9TKSA/ICZtU3lzdGVtVGltZVNvdXJjZSA6IG1UaW1lU291cmNlOworCiAgICAgaWYgKG1GbGFncyAmIEZJUlNUX0ZSQU1FKSB7CiAgICAgICAgIG1GbGFncyAmPSB+RklSU1RfRlJBTUU7CiAKLSAgICAgICAgbVRpbWVTb3VyY2VEZWx0YVVzID0gbVRpbWVTb3VyY2UtPmdldFJlYWxUaW1lVXMoKSAtIHRpbWVVczsKKyAgICAgICAgbVRpbWVTb3VyY2VEZWx0YVVzID0gdHMtPmdldFJlYWxUaW1lVXMoKSAtIHRpbWVVczsKICAgICB9CiAKICAgICBpbnQ2NF90IHJlYWxUaW1lVXMsIG1lZGlhVGltZVVzOwotICAgIGlmIChtQXVkaW9QbGF5ZXIgIT0gTlVMTAorICAgIGlmICghKG1GbGFncyAmIEFVRElPX0FUX0VPUykgJiYgbUF1ZGlvUGxheWVyICE9IE5VTEwKICAgICAgICAgJiYgbUF1ZGlvUGxheWVyLT5nZXRNZWRpYVRpbWVNYXBwaW5nKCZyZWFsVGltZVVzLCAmbWVkaWFUaW1lVXMpKSB7CiAgICAgICAgIG1UaW1lU291cmNlRGVsdGFVcyA9IHJlYWxUaW1lVXMgLSBtZWRpYVRpbWVVczsKICAgICB9CiAKLSAgICBpbnQ2NF90IG5vd1VzID0gbVRpbWVTb3VyY2UtPmdldFJlYWxUaW1lVXMoKSAtIG1UaW1lU291cmNlRGVsdGFVczsKKyAgICBpbnQ2NF90IG5vd1VzID0gdHMtPmdldFJlYWxUaW1lVXMoKSAtIG1UaW1lU291cmNlRGVsdGFVczsKIAogICAgIGludDY0X3QgbGF0ZW5lc3NVcyA9IG5vd1VzIC0gdGltZVVzOwogCkBAIC05OTUsMTAgKzEwNTQsNiBAQAogfQogCiB2b2lkIEF3ZXNvbWVQbGF5ZXI6OnBvc3RCdWZmZXJpbmdFdmVudF9sKCkgewotICAgIGlmIChtUHJlZmV0Y2hlciA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAobUJ1ZmZlcmluZ0V2ZW50UGVuZGluZykgewogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAzOCw2ICsxMDkzLDggQEAKICAgICBzdGF0dXNfdCBmaW5hbFN0YXR1czsKICAgICBpZiAobVdhdGNoRm9yQXVkaW9FT1MgJiYgbUF1ZGlvUGxheWVyLT5yZWFjaGVkRU9TKCZmaW5hbFN0YXR1cykpIHsKICAgICAgICAgbVdhdGNoRm9yQXVkaW9FT1MgPSBmYWxzZTsKKyAgICAgICAgbUZsYWdzIHw9IEFVRElPX0FUX0VPUzsKKyAgICAgICAgbUZsYWdzIHw9IEZJUlNUX0ZSQU1FOwogICAgICAgICBwb3N0U3RyZWFtRG9uZUV2ZW50X2woZmluYWxTdGF0dXMpOwogICAgIH0KIApAQCAtMTEwNiwxMCArMTE2MywxMCBAQAogICAgIHNwPERhdGFTb3VyY2U+IGRhdGFTb3VyY2U7CiAKICAgICBpZiAoIXN0cm5jYXNlY21wKCJodHRwOi8vIiwgbVVyaS5zdHJpbmcoKSwgNykpIHsKLSAgICAgICAgbUNvbm5lY3RpbmdEYXRhU291cmNlID0gbmV3IEhUVFBEYXRhU291cmNlKG1VcmksICZtVXJpSGVhZGVycyk7CisgICAgICAgIG1Db25uZWN0aW5nRGF0YVNvdXJjZSA9IG5ldyBOdUhUVFBEYXRhU291cmNlOwogCiAgICAgICAgIG1Mb2NrLnVubG9jaygpOwotICAgICAgICBzdGF0dXNfdCBlcnIgPSBtQ29ubmVjdGluZ0RhdGFTb3VyY2UtPmNvbm5lY3QoKTsKKyAgICAgICAgc3RhdHVzX3QgZXJyID0gbUNvbm5lY3RpbmdEYXRhU291cmNlLT5jb25uZWN0KG1VcmksICZtVXJpSGVhZGVycyk7CiAgICAgICAgIG1Mb2NrLmxvY2soKTsKIAogICAgICAgICBpZiAoZXJyICE9IE9LKSB7CkBAIC0xMTE5LDEwICsxMTc2LDQ2IEBACiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAKLSAgICAgICAgZGF0YVNvdXJjZSA9IG5ldyBDYWNoaW5nRGF0YVNvdXJjZSgKLSAgICAgICAgICAgICAgICBtQ29ubmVjdGluZ0RhdGFTb3VyY2UsIDY0ICogMTAyNCwgMTApOwotCisjaWYgMAorICAgICAgICBtQ2FjaGVkU291cmNlID0gbmV3IE51Q2FjaGVkU291cmNlMigKKyAgICAgICAgICAgICAgICBuZXcgVGhyb3R0bGVkU291cmNlKAorICAgICAgICAgICAgICAgICAgICBtQ29ubmVjdGluZ0RhdGFTb3VyY2UsIDUwICogMTAyNCAvKiBieXRlcy9zZWMgKi8pKTsKKyNlbHNlCisgICAgICAgIG1DYWNoZWRTb3VyY2UgPSBuZXcgTnVDYWNoZWRTb3VyY2UyKG1Db25uZWN0aW5nRGF0YVNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgbUNvbm5lY3RpbmdEYXRhU291cmNlLmNsZWFyKCk7CisKKyAgICAgICAgZGF0YVNvdXJjZSA9IG1DYWNoZWRTb3VyY2U7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAobVVyaS5zdHJpbmcoKSwgImh0dHBsaXZlOi8vIiwgMTEpKSB7CisgICAgICAgIFN0cmluZzggdXJpKCJodHRwOi8vIik7CisgICAgICAgIHVyaS5hcHBlbmQobVVyaS5zdHJpbmcoKSArIDExKTsKKworICAgICAgICBkYXRhU291cmNlID0gbmV3IExpdmVTb3VyY2UodXJpLnN0cmluZygpKTsKKworICAgICAgICBtQ2FjaGVkU291cmNlID0gbmV3IE51Q2FjaGVkU291cmNlMihkYXRhU291cmNlKTsKKyAgICAgICAgZGF0YVNvdXJjZSA9IG1DYWNoZWRTb3VyY2U7CisKKyAgICAgICAgc3A8TWVkaWFFeHRyYWN0b3I+IGV4dHJhY3RvciA9CisgICAgICAgICAgICBNZWRpYUV4dHJhY3Rvcjo6Q3JlYXRlKGRhdGFTb3VyY2UsIE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHMlRTKTsKKworICAgICAgICByZXR1cm4gc2V0RGF0YVNvdXJjZV9sKGV4dHJhY3Rvcik7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoInJ0c3A6Ly8iLCBtVXJpLnN0cmluZygpLCA3KSkgeworICAgICAgICBpZiAobUxvb3BlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBtTG9vcGVyID0gbmV3IEFMb29wZXI7CisgICAgICAgICAgICBtTG9vcGVyLT5zdGFydCgpOworICAgICAgICB9CisgICAgICAgIG1SVFNQQ29udHJvbGxlciA9IG5ldyBBUlRTUENvbnRyb2xsZXIobUxvb3Blcik7CisgICAgICAgIHN0YXR1c190IGVyciA9IG1SVFNQQ29udHJvbGxlci0+Y29ubmVjdChtVXJpLnN0cmluZygpKTsKKworICAgICAgICBMT0dJKCJBUlRTUENvbnRyb2xsZXI6OmNvbm5lY3QgcmV0dXJuZWQgJWQiLCBlcnIpOworCisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIG1SVFNQQ29udHJvbGxlci5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQorCisgICAgICAgIHNwPE1lZGlhRXh0cmFjdG9yPiBleHRyYWN0b3IgPSBtUlRTUENvbnRyb2xsZXIuZ2V0KCk7CisgICAgICAgIHJldHVybiBzZXREYXRhU291cmNlX2woZXh0cmFjdG9yKTsKICAgICB9IGVsc2UgewogICAgICAgICBkYXRhU291cmNlID0gRGF0YVNvdXJjZTo6Q3JlYXRlRnJvbVVSSShtVXJpLnN0cmluZygpLCAmbVVyaUhlYWRlcnMpOwogICAgIH0KQEAgLTExMzcsMTAgKzEyMzAsNiBAQAogICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKICAgICB9CiAKLSAgICBpZiAoZGF0YVNvdXJjZS0+ZmxhZ3MoKSAmIERhdGFTb3VyY2U6OmtXYW50c1ByZWZldGNoaW5nKSB7Ci0gICAgICAgIG1QcmVmZXRjaGVyID0gbmV3IFByZWZldGNoZXI7Ci0gICAgfQotCiAgICAgcmV0dXJuIHNldERhdGFTb3VyY2VfbChleHRyYWN0b3IpOwogfQogCkBAIC0xMTY1LDggKzEyNTQsNiBAQAogfQogCiB2b2lkIEF3ZXNvbWVQbGF5ZXI6Om9uUHJlcGFyZUFzeW5jRXZlbnQoKSB7Ci0gICAgc3A8UHJlZmV0Y2hlcj4gcHJlZmV0Y2hlcjsKLQogICAgIHsKICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKIApAQCAtMTIwMiwzOSArMTI4OSw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgcHJlZmV0Y2hlciA9IG1QcmVmZXRjaGVyOwotICAgIH0KLQotICAgIGlmIChwcmVmZXRjaGVyICE9IE5VTEwpIHsKLSAgICAgICAgewotICAgICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLSAgICAgICAgICAgIGlmIChtRmxhZ3MgJiBQUkVQQVJFX0NBTkNFTExFRCkgewotICAgICAgICAgICAgICAgIExPR0koInByZXBhcmUgd2FzIGNhbmNlbGxlZCBiZWZvcmUgcHJlcGFyaW5nIHRoZSBwcmVmZXRjaGVyIik7Ci0KLSAgICAgICAgICAgICAgICBwcmVmZXRjaGVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgYWJvcnRQcmVwYXJlKFVOS05PV05fRVJST1IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIExPR0koImNhbGxpbmcgcHJlZmV0Y2hlci0+cHJlcGFyZSgpIik7Ci0gICAgICAgIHN0YXR1c190IHJlc3VsdCA9Ci0gICAgICAgICAgICBwcmVmZXRjaGVyLT5wcmVwYXJlKCZBd2Vzb21lUGxheWVyOjpDb250aW51ZVByZXBhcmF0aW9uLCB0aGlzKTsKLQotICAgICAgICBwcmVmZXRjaGVyLmNsZWFyKCk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgewotICAgICAgICAgICAgTE9HSSgicHJlZmV0Y2hlciBpcyBkb25lIHByZXBhcmluZyIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgICAgICAgICAgQ0hFQ0tfRVEocmVzdWx0LCAtRUlOVFIpOwotCi0gICAgICAgICAgICBMT0dJKCJwcmVmZXRjaGVyLT5wcmVwYXJlKCkgd2FzIGNhbmNlbGxlZCBlYXJseS4iKTsKLSAgICAgICAgICAgIGFib3J0UHJlcGFyZShVTktOT1dOX0VSUk9SKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYTQ2M2UuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQ2FjaGluZ0RhdGFTb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1DYWNoaW5nRGF0YVNvdXJjZTo6Q2FjaGluZ0RhdGFTb3VyY2UoCi0gICAgICAgIGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UsIHNpemVfdCBwYWdlU2l6ZSwgaW50IG51bVBhZ2VzKQotICAgIDogbVNvdXJjZShzb3VyY2UpLAotICAgICAgbURhdGEobWFsbG9jKHBhZ2VTaXplICogbnVtUGFnZXMpKSwKLSAgICAgIG1QYWdlU2l6ZShwYWdlU2l6ZSksCi0gICAgICBtRmlyc3QoTlVMTCksCi0gICAgICBtTGFzdChOVUxMKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYWdlczsgKytpKSB7Ci0gICAgICAgIFBhZ2UgKnBhZ2UgPSBuZXcgUGFnZTsKLSAgICAgICAgcGFnZS0+bVByZXYgPSBtTGFzdDsKLSAgICAgICAgcGFnZS0+bU5leHQgPSBOVUxMOwotCi0gICAgICAgIGlmIChtTGFzdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBtRmlyc3QgPSBwYWdlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbUxhc3QtPm1OZXh0ID0gcGFnZTsKLSAgICAgICAgfQotCi0gICAgICAgIG1MYXN0ID0gcGFnZTsKLQotICAgICAgICBwYWdlLT5tT2Zmc2V0ID0gLTE7Ci0gICAgICAgIHBhZ2UtPm1MZW5ndGggPSAwOwotICAgICAgICBwYWdlLT5tRGF0YSA9IChjaGFyICopbURhdGEgKyBtUGFnZVNpemUgKiBpOwotICAgIH0KLX0KLQotQ2FjaGluZ0RhdGFTb3VyY2U6On5DYWNoaW5nRGF0YVNvdXJjZSgpIHsKLSAgICBQYWdlICpwYWdlID0gbUZpcnN0OwotICAgIHdoaWxlIChwYWdlICE9IE5VTEwpIHsKLSAgICAgICAgUGFnZSAqbmV4dCA9IHBhZ2UtPm1OZXh0OwotICAgICAgICBkZWxldGUgcGFnZTsKLSAgICAgICAgcGFnZSA9IG5leHQ7Ci0gICAgfQotICAgIG1GaXJzdCA9IG1MYXN0ID0gTlVMTDsKLQotICAgIGZyZWUobURhdGEpOwotICAgIG1EYXRhID0gTlVMTDsKLX0KLQotc3RhdHVzX3QgQ2FjaGluZ0RhdGFTb3VyY2U6OmluaXRDaGVjaygpIGNvbnN0IHsKLSAgICByZXR1cm4gbVNvdXJjZS0+aW5pdENoZWNrKCk7Ci19Ci0KLXN0YXR1c190IENhY2hpbmdEYXRhU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7Ci0gICAgcmV0dXJuIG1Tb3VyY2UtPmdldFNpemUoc2l6ZSk7Ci19Ci0KLXVpbnQzMl90IENhY2hpbmdEYXRhU291cmNlOjpmbGFncygpIHsKLSAgICByZXR1cm4gbVNvdXJjZS0+ZmxhZ3MoKTsKLX0KLQotc3NpemVfdCBDYWNoaW5nRGF0YVNvdXJjZTo6cmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotCi0gICAgc2l6ZV90IHRvdGFsID0gMDsKLSAgICB3aGlsZSAoc2l6ZSA+IDApIHsKLSAgICAgICAgUGFnZSAqcGFnZSA9IG1GaXJzdDsKLSAgICAgICAgd2hpbGUgKHBhZ2UgIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKHBhZ2UtPm1PZmZzZXQgPj0gMCAmJiBvZmZzZXQgPj0gcGFnZS0+bU9mZnNldAotICAgICAgICAgICAgICAgICYmIG9mZnNldCA8IHBhZ2UtPm1PZmZzZXQgKyAob2ZmX3QpcGFnZS0+bUxlbmd0aCkgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcGFnZSA9IHBhZ2UtPm1OZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBhZ2UgPT0gTlVMTCkgewotICAgICAgICAgICAgcGFnZSA9IGFsbG9jYXRlX3BhZ2UoKTsKLSAgICAgICAgICAgIHBhZ2UtPm1PZmZzZXQgPSBvZmZzZXQgLSBvZmZzZXQgJSBtUGFnZVNpemU7Ci0gICAgICAgICAgICBzc2l6ZV90IG4gPSBtU291cmNlLT5yZWFkQXQocGFnZS0+bU9mZnNldCwgcGFnZS0+bURhdGEsIG1QYWdlU2l6ZSk7Ci0gICAgICAgICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgICAgICAgICBwYWdlLT5tTGVuZ3RoID0gMDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFnZS0+bUxlbmd0aCA9IChzaXplX3QpbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1GaXJzdC0+bVByZXYgPSBwYWdlOwotICAgICAgICAgICAgcGFnZS0+bU5leHQgPSBtRmlyc3Q7Ci0gICAgICAgICAgICBwYWdlLT5tUHJldiA9IE5VTEw7Ci0gICAgICAgICAgICBtRmlyc3QgPSBwYWdlOwotCi0gICAgICAgICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG9mZnNldCA+PSBwYWdlLT5tT2Zmc2V0ICsgKG9mZl90KXBhZ2UtPm1MZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE1vdmUgInBhZ2UiIHRvIHRoZSBmcm9udCBpbiBMUlUgb3JkZXIuCi0gICAgICAgICAgICBpZiAocGFnZS0+bU5leHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHBhZ2UtPm1OZXh0LT5tUHJldiA9IHBhZ2UtPm1QcmV2OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtTGFzdCA9IHBhZ2UtPm1QcmV2OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocGFnZS0+bVByZXYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHBhZ2UtPm1QcmV2LT5tTmV4dCA9IHBhZ2UtPm1OZXh0OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtRmlyc3QgPSBwYWdlLT5tTmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbUZpcnN0LT5tUHJldiA9IHBhZ2U7Ci0gICAgICAgICAgICBwYWdlLT5tTmV4dCA9IG1GaXJzdDsKLSAgICAgICAgICAgIHBhZ2UtPm1QcmV2ID0gTlVMTDsKLSAgICAgICAgICAgIG1GaXJzdCA9IHBhZ2U7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3QgY29weSA9IHBhZ2UtPm1MZW5ndGggLSAob2Zmc2V0IC0gcGFnZS0+bU9mZnNldCk7Ci0gICAgICAgIGlmIChjb3B5ID4gc2l6ZSkgewotICAgICAgICAgICAgY29weSA9IHNpemU7Ci0gICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGRhdGEsKGNvbnN0IGNoYXIgKilwYWdlLT5tRGF0YSArIChvZmZzZXQgLSBwYWdlLT5tT2Zmc2V0KSwKLSAgICAgICAgICAgICAgIGNvcHkpOwotCi0gICAgICAgIHRvdGFsICs9IGNvcHk7Ci0KLSAgICAgICAgaWYgKHBhZ2UtPm1MZW5ndGggPCBtUGFnZVNpemUpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgd2FzIHRoZSBmaW5hbCBwYWdlLiBUaGVyZSBpcyBubyBtb3JlIGRhdGEgYmV5b25kIGl0LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBvZmZzZXQgKz0gY29weTsKLSAgICAgICAgc2l6ZSAtPSBjb3B5OwotICAgICAgICBkYXRhID0gKGNoYXIgKilkYXRhICsgY29weTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdG90YWw7Ci19Ci0KLUNhY2hpbmdEYXRhU291cmNlOjpQYWdlICpDYWNoaW5nRGF0YVNvdXJjZTo6YWxsb2NhdGVfcGFnZSgpIHsKLSAgICAvLyBUaGUgbGFzdCBwYWdlIGlzIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkLCBpLmUuIG9sZGVzdC4KLQotICAgIFBhZ2UgKnBhZ2UgPSBtTGFzdDsKLQotICAgIHBhZ2UtPm1QcmV2LT5tTmV4dCA9IE5VTEw7Ci0gICAgbUxhc3QgPSBwYWdlLT5tUHJldjsKLSAgICBwYWdlLT5tUHJldiA9IE5VTEw7Ci0KLSAgICByZXR1cm4gcGFnZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0NhbWVyYVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9DYW1lcmFTb3VyY2UuY3BwCmluZGV4IDA3NWIxZTMuLjZmNGM5ODAgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0NhbWVyYVNvdXJjZS5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQ2FtZXJhU291cmNlLmNwcApAQCAtMTQsMTIgKzE0LDEyIEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiQ2FtZXJhU291cmNlIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgogCiAjaW5jbHVkZSA8T01YX0NvbXBvbmVudC5oPgotCi0jaW5jbHVkZSA8YmluZGVyL0lTZXJ2aWNlTWFuYWdlci5oPgotI2luY2x1ZGUgPGN1dGlscy9wcm9wZXJ0aWVzLmg+IC8vIGZvciBwcm9wZXJ0eV9nZXQKKyNpbmNsdWRlIDxiaW5kZXIvSVBDVGhyZWFkU3RhdGUuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9DYW1lcmFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CkBAIC0yNyw0NiArMjcsMTEgQEAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgogI2luY2x1ZGUgPGNhbWVyYS9DYW1lcmEuaD4KICNpbmNsdWRlIDxjYW1lcmEvQ2FtZXJhUGFyYW1ldGVycy5oPgotI2luY2x1ZGUgPHVpL0dyYXBoaWNCdWZmZXIuaD4KLSNpbmNsdWRlIDx1aS9PdmVybGF5Lmg+Ci0jaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KICNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CisjaW5jbHVkZSA8Y3V0aWxzL3Byb3BlcnRpZXMuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCi1zdGF0aWMgaW50NjRfdCBnZXROb3dVcygpIHsKLSAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKLQotICAgIHJldHVybiAoaW50NjRfdCl0di50dl91c2VjICsgdHYudHZfc2VjICogMTAwMDAwMDsKLX0KLQotc3RydWN0IER1bW15U3VyZmFjZSA6IHB1YmxpYyBCblN1cmZhY2UgewotICAgIER1bW15U3VyZmFjZSgpIHt9Ci0KLSAgICB2aXJ0dWFsIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwgaW50IHVzYWdlKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVnaXN0ZXJCdWZmZXJzKGNvbnN0IEJ1ZmZlckhlYXAgJmJ1ZmZlcnMpIHsKLSAgICAgICAgcmV0dXJuIE9LOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0QnVmZmVyKHNzaXplX3Qgb2Zmc2V0KSB7fQotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQnVmZmVycygpIHt9Ci0KLSAgICB2aXJ0dWFsIHNwPE92ZXJsYXlSZWY+IGNyZWF0ZU92ZXJsYXkoCi0gICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBvcmllbnRhdGlvbikgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5EdW1teVN1cmZhY2UoKSB7fQotCi0gICAgRHVtbXlTdXJmYWNlKGNvbnN0IER1bW15U3VyZmFjZSAmKTsKLSAgICBEdW1teVN1cmZhY2UgJm9wZXJhdG9yPShjb25zdCBEdW1teVN1cmZhY2UgJik7Ci19OwotCiBzdHJ1Y3QgQ2FtZXJhU291cmNlTGlzdGVuZXIgOiBwdWJsaWMgQ2FtZXJhTGlzdGVuZXIgewogICAgIENhbWVyYVNvdXJjZUxpc3RlbmVyKGNvbnN0IHNwPENhbWVyYVNvdXJjZT4gJnNvdXJjZSk7CiAKQEAgLTEwMCwyMiArNjUsNDAgQEAKIHZvaWQgQ2FtZXJhU291cmNlTGlzdGVuZXI6OnBvc3REYXRhKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4gJmRhdGFQdHIpIHsKICAgICBMT0dWKCJwb3N0RGF0YSglZCwgcHRyOiVwLCBzaXplOiVkKSIsCiAgICAgICAgICBtc2dUeXBlLCBkYXRhUHRyLT5wb2ludGVyKCksIGRhdGFQdHItPnNpemUoKSk7Ci0KLSAgICBzcDxDYW1lcmFTb3VyY2U+IHNvdXJjZSA9IG1Tb3VyY2UucHJvbW90ZSgpOwotICAgIGlmIChzb3VyY2UuZ2V0KCkgIT0gTlVMTCkgewotICAgICAgICBzb3VyY2UtPmRhdGFDYWxsYmFjayhtc2dUeXBlLCBkYXRhUHRyKTsKLSAgICB9CiB9CiAKIHZvaWQgQ2FtZXJhU291cmNlTGlzdGVuZXI6OnBvc3REYXRhVGltZXN0YW1wKAogICAgICAgICBuc2Vjc190IHRpbWVzdGFtcCwgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0cikgewotICAgIExPR1YoInBvc3REYXRhVGltZXN0YW1wKCVsbGQsICVkLCBwdHI6JXAsIHNpemU6JWQpIiwKLSAgICAgICAgIHRpbWVzdGFtcCwgbXNnVHlwZSwgZGF0YVB0ci0+cG9pbnRlcigpLCBkYXRhUHRyLT5zaXplKCkpOworCisgICAgc3A8Q2FtZXJhU291cmNlPiBzb3VyY2UgPSBtU291cmNlLnByb21vdGUoKTsKKyAgICBpZiAoc291cmNlLmdldCgpICE9IE5VTEwpIHsKKyAgICAgICAgc291cmNlLT5kYXRhQ2FsbGJhY2tUaW1lc3RhbXAodGltZXN0YW1wLzEwMDAsIG1zZ1R5cGUsIGRhdGFQdHIpOworICAgIH0KK30KKworc3RhdGljIGludDMyX3QgZ2V0Q29sb3JGb3JtYXQoY29uc3QgY2hhciogY29sb3JGb3JtYXQpIHsKKyAgICBpZiAoIXN0cmNtcChjb2xvckZvcm1hdCwgQ2FtZXJhUGFyYW1ldGVyczo6UElYRUxfRk9STUFUX1lVVjQyMlNQKSkgeworICAgICAgIHJldHVybiBPTVhfQ09MT1JfRm9ybWF0WVVWNDIyU2VtaVBsYW5hcjsKKyAgICB9CisKKyAgICBpZiAoIXN0cmNtcChjb2xvckZvcm1hdCwgQ2FtZXJhUGFyYW1ldGVyczo6UElYRUxfRk9STUFUX1lVVjQyMFNQKSkgeworICAgICAgICByZXR1cm4gT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFNlbWlQbGFuYXI7CisgICAgfQorCisgICAgaWYgKCFzdHJjbXAoY29sb3JGb3JtYXQsIENhbWVyYVBhcmFtZXRlcnM6OlBJWEVMX0ZPUk1BVF9ZVVY0MjJJKSkgeworICAgICAgICByZXR1cm4gT01YX0NPTE9SX0Zvcm1hdFlDYllDcjsKKyAgICB9CisKKyAgICBpZiAoIXN0cmNtcChjb2xvckZvcm1hdCwgQ2FtZXJhUGFyYW1ldGVyczo6UElYRUxfRk9STUFUX1JHQjU2NSkpIHsKKyAgICAgICByZXR1cm4gT01YX0NPTE9SX0Zvcm1hdDE2Yml0UkdCNTY1OworICAgIH0KKworICAgIENIRUNLX0VRKDAsICJVbmtub3duIGNvbG9yIGZvcm1hdCIpOwogfQogCiAvLyBzdGF0aWMKIENhbWVyYVNvdXJjZSAqQ2FtZXJhU291cmNlOjpDcmVhdGUoKSB7Ci0gICAgc3A8Q2FtZXJhPiBjYW1lcmEgPSBDYW1lcmE6OmNvbm5lY3QoKTsKKyAgICBzcDxDYW1lcmE+IGNhbWVyYSA9IENhbWVyYTo6Y29ubmVjdCgwKTsKIAogICAgIGlmIChjYW1lcmEuZ2V0KCkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyNSw5ICsxMDgsNyBAQAogfQogCiAvLyBzdGF0aWMKLUNhbWVyYVNvdXJjZSAqQ2FtZXJhU291cmNlOjpDcmVhdGVGcm9tSUNhbWVyYShjb25zdCBzcDxJQ2FtZXJhPiAmaWNhbWVyYSkgewotICAgIHNwPENhbWVyYT4gY2FtZXJhID0gQ2FtZXJhOjpjcmVhdGUoaWNhbWVyYSk7Ci0KK0NhbWVyYVNvdXJjZSAqQ2FtZXJhU291cmNlOjpDcmVhdGVGcm9tQ2FtZXJhKGNvbnN0IHNwPENhbWVyYT4gJmNhbWVyYSkgewogICAgIGlmIChjYW1lcmEuZ2V0KCkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMzcsMjMgKzExOCw1MCBAQAogCiBDYW1lcmFTb3VyY2U6OkNhbWVyYVNvdXJjZShjb25zdCBzcDxDYW1lcmE+ICZjYW1lcmEpCiAgICAgOiBtQ2FtZXJhKGNhbWVyYSksCi0gICAgICBtV2lkdGgoMCksCi0gICAgICBtSGVpZ2h0KDApLAogICAgICAgbUZpcnN0RnJhbWVUaW1lVXMoMCksCi0gICAgICBtTnVtRnJhbWVzKDApLAorICAgICAgbUxhc3RGcmFtZVRpbWVzdGFtcFVzKDApLAorICAgICAgbU51bUZyYW1lc1JlY2VpdmVkKDApLAorICAgICAgbU51bUZyYW1lc0VuY29kZWQoMCksCisgICAgICBtTnVtRnJhbWVzRHJvcHBlZCgwKSwKKyAgICAgIG1OdW1HbGl0Y2hlcygwKSwKKyAgICAgIG1HbGl0Y2hEdXJhdGlvblRocmVzaG9sZFVzKDIwMDAwMCksCisgICAgICBtQ29sbGVjdFN0YXRzKGZhbHNlKSwKICAgICAgIG1TdGFydGVkKGZhbHNlKSB7Ci0gICAgY2hhciB2YWx1ZVtQUk9QRVJUWV9WQUxVRV9NQVhdOwotICAgIGlmIChwcm9wZXJ0eV9nZXQoInJvLmhhcmR3YXJlIiwgdmFsdWUsIE5VTEwpICYmICFzdHJjbXAodmFsdWUsICJzaG9sZXMiKSkgewotICAgICAgICAvLyBUaGUgaGFyZHdhcmUgZW5jb2RlcihzKSBkbyBub3Qgc3VwcG9ydCB5dXY0MjAsIGJ1dCBvbmx5IFlDYllDciwKLSAgICAgICAgLy8gZm9ydHVuYXRlbHkgdGhlIGNhbWVyYSBhbHNvIHN1cHBvcnRzIHRoaXMsIHNvIHdlIG5lZWRuJ3QgdHJhbnNjb2RlLgotICAgICAgICBtQ2FtZXJhLT5zZXRQYXJhbWV0ZXJzKFN0cmluZzgoInByZXZpZXctZm9ybWF0PXl1djQyMmkteXV5diIpKTsKLSAgICB9CiAKKyAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICBTdHJpbmc4IHMgPSBtQ2FtZXJhLT5nZXRQYXJhbWV0ZXJzKCk7CisgICAgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+cmVzdG9yZUNhbGxpbmdJZGVudGl0eSh0b2tlbik7CisKICAgICBwcmludGYoInBhcmFtczogXCIlc1wiXG4iLCBzLnN0cmluZygpKTsKIAorICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodCwgc3RyaWRlLCBzbGljZUhlaWdodDsKICAgICBDYW1lcmFQYXJhbWV0ZXJzIHBhcmFtcyhzKTsKLSAgICBwYXJhbXMuZ2V0UHJldmlld1NpemUoJm1XaWR0aCwgJm1IZWlnaHQpOworICAgIHBhcmFtcy5nZXRQcmV2aWV3U2l6ZSgmd2lkdGgsICZoZWlnaHQpOworCisgICAgLy8gQ2FsY3VsYXRlIGdsaXRjaCBkdXJhdG9uIHRocmVzaG9sZCBiYXNlZCBvbiBmcmFtZSByYXRlCisgICAgaW50MzJfdCBmcmFtZVJhdGUgPSBwYXJhbXMuZ2V0UHJldmlld0ZyYW1lUmF0ZSgpOworICAgIGludDY0X3QgZ2xpdGNoRHVyYXRpb25VcyA9ICgxMDAwMDAwTEwgLyBmcmFtZVJhdGUpOworICAgIGlmIChnbGl0Y2hEdXJhdGlvblVzID4gbUdsaXRjaER1cmF0aW9uVGhyZXNob2xkVXMpIHsKKyAgICAgICAgbUdsaXRjaER1cmF0aW9uVGhyZXNob2xkVXMgPSBnbGl0Y2hEdXJhdGlvblVzOworICAgIH0KKworICAgIGNvbnN0IGNoYXIgKmNvbG9yRm9ybWF0U3RyID0gcGFyYW1zLmdldChDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfVklERU9fRlJBTUVfRk9STUFUKTsKKyAgICBDSEVDSyhjb2xvckZvcm1hdFN0ciAhPSBOVUxMKTsKKyAgICBpbnQzMl90IGNvbG9yRm9ybWF0ID0gZ2V0Q29sb3JGb3JtYXQoY29sb3JGb3JtYXRTdHIpOworCisgICAgLy8gWFhYOiBxdWVyeSBjYW1lcmEgZm9yIHRoZSBzdHJpZGUgYW5kIHNsaWNlIGhlaWdodAorICAgIC8vIHdoZW4gdGhlIGNhcGFiaWxpdHkgYmVjb21lcyBhdmFpbGFibGUuCisgICAgc3RyaWRlID0gd2lkdGg7CisgICAgc2xpY2VIZWlnaHQgPSBoZWlnaHQ7CisKKyAgICBtTWV0YSA9IG5ldyBNZXRhRGF0YTsKKyAgICBtTWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX1JBVyk7CisgICAgbU1ldGEtPnNldEludDMyKGtLZXlDb2xvckZvcm1hdCwgY29sb3JGb3JtYXQpOworICAgIG1NZXRhLT5zZXRJbnQzMihrS2V5V2lkdGgsIHdpZHRoKTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleUhlaWdodCwgaGVpZ2h0KTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleVN0cmlkZSwgc3RyaWRlKTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleVNsaWNlSGVpZ2h0LCBzbGljZUhlaWdodCk7CisKIH0KIAogQ2FtZXJhU291cmNlOjp+Q2FtZXJhU291cmNlKCkgewpAQCAtMTYyLDU1ICsxNzAsOTkgQEAKICAgICB9CiB9CiAKLXZvaWQgQ2FtZXJhU291cmNlOjpzZXRQcmV2aWV3U3VyZmFjZShjb25zdCBzcDxJU3VyZmFjZT4gJnN1cmZhY2UpIHsKLSAgICBtUHJldmlld1N1cmZhY2UgPSBzdXJmYWNlOwotfQotCi1zdGF0dXNfdCBDYW1lcmFTb3VyY2U6OnN0YXJ0KE1ldGFEYXRhICopIHsKK3N0YXR1c190IENhbWVyYVNvdXJjZTo6c3RhcnQoTWV0YURhdGEgKm1ldGEpIHsKICAgICBDSEVDSyghbVN0YXJ0ZWQpOwogCisgICAgY2hhciB2YWx1ZVtQUk9QRVJUWV9WQUxVRV9NQVhdOworICAgIGlmIChwcm9wZXJ0eV9nZXQoIm1lZGlhLnN0YWdlZnJpZ2h0LnJlY29yZC1zdGF0cyIsIHZhbHVlLCBOVUxMKQorICAgICAgICAmJiAoIXN0cmNtcCh2YWx1ZSwgIjEiKSB8fCAhc3RyY2FzZWNtcCh2YWx1ZSwgInRydWUiKSkpIHsKKyAgICAgICAgbUNvbGxlY3RTdGF0cyA9IHRydWU7CisgICAgfQorCisgICAgbVN0YXJ0VGltZVVzID0gMDsKKyAgICBpbnQ2NF90IHN0YXJ0VGltZVVzOworICAgIGlmIChtZXRhICYmIG1ldGEtPmZpbmRJbnQ2NChrS2V5VGltZSwgJnN0YXJ0VGltZVVzKSkgeworICAgICAgICBtU3RhcnRUaW1lVXMgPSBzdGFydFRpbWVVczsKKyAgICB9CisKKyAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICBtQ2FtZXJhLT5zZXRMaXN0ZW5lcihuZXcgQ2FtZXJhU291cmNlTGlzdGVuZXIodGhpcykpOwotCi0gICAgc3RhdHVzX3QgZXJyID0KLSAgICAgICAgbUNhbWVyYS0+c2V0UHJldmlld0Rpc3BsYXkoCi0gICAgICAgICAgICAgICAgbVByZXZpZXdTdXJmYWNlICE9IE5VTEwgPyBtUHJldmlld1N1cmZhY2UgOiBuZXcgRHVtbXlTdXJmYWNlKTsKLSAgICBDSEVDS19FUShlcnIsIE9LKTsKLQotICAgIG1DYW1lcmEtPnNldFByZXZpZXdDYWxsYmFja0ZsYWdzKAotICAgICAgICAgICAgRlJBTUVfQ0FMTEJBQ0tfRkxBR19FTkFCTEVfTUFTSwotICAgICAgICAgICAgfCBGUkFNRV9DQUxMQkFDS19GTEFHX0NPUFlfT1VUX01BU0spOwotCi0gICAgZXJyID0gbUNhbWVyYS0+c3RhcnRQcmV2aWV3KCk7Ci0gICAgQ0hFQ0tfRVEoZXJyLCBPSyk7CisgICAgQ0hFQ0tfRVEoT0ssIG1DYW1lcmEtPnN0YXJ0UmVjb3JkaW5nKCkpOworICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOwogCiAgICAgbVN0YXJ0ZWQgPSB0cnVlOwotCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBDYW1lcmFTb3VyY2U6OnN0b3AoKSB7Ci0gICAgQ0hFQ0sobVN0YXJ0ZWQpOwotCi0gICAgbUNhbWVyYS0+c3RvcFByZXZpZXcoKTsKLQorICAgIExPR1YoInN0b3AiKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwogICAgIG1TdGFydGVkID0gZmFsc2U7CisgICAgbUZyYW1lQXZhaWxhYmxlQ29uZGl0aW9uLnNpZ25hbCgpOwogCisgICAgaW50NjRfdCB0b2tlbiA9IElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisgICAgbUNhbWVyYS0+c2V0TGlzdGVuZXIoTlVMTCk7CisgICAgbUNhbWVyYS0+c3RvcFJlY29yZGluZygpOworICAgIHJlbGVhc2VRdWV1ZWRGcmFtZXMoKTsKKyAgICB3aGlsZSAoIW1GcmFtZXNCZWluZ0VuY29kZWQuZW1wdHkoKSkgeworICAgICAgICBMT0dJKCJXYWl0aW5nIGZvciBvdXRzdGFuZGluZyBmcmFtZXMgYmVpbmcgZW5jb2RlZDogJWQiLAorICAgICAgICAgICAgICAgIG1GcmFtZXNCZWluZ0VuY29kZWQuc2l6ZSgpKTsKKyAgICAgICAgbUZyYW1lQ29tcGxldGVDb25kaXRpb24ud2FpdChtTG9jayk7CisgICAgfQorICAgIG1DYW1lcmEgPSBOVUxMOworICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOworCisgICAgaWYgKG1Db2xsZWN0U3RhdHMpIHsKKyAgICAgICAgTE9HSSgiRnJhbWVzIHJlY2VpdmVkL2VuY29kZWQvZHJvcHBlZDogJWQvJWQvJWQgaW4gJWxsZCB1cyIsCisgICAgICAgICAgICAgICAgbU51bUZyYW1lc1JlY2VpdmVkLCBtTnVtRnJhbWVzRW5jb2RlZCwgbU51bUZyYW1lc0Ryb3BwZWQsCisgICAgICAgICAgICAgICAgbUxhc3RGcmFtZVRpbWVzdGFtcFVzIC0gbUZpcnN0RnJhbWVUaW1lVXMpOworICAgIH0KKworICAgIENIRUNLX0VRKG1OdW1GcmFtZXNSZWNlaXZlZCwgbU51bUZyYW1lc0VuY29kZWQgKyBtTnVtRnJhbWVzRHJvcHBlZCk7CiAgICAgcmV0dXJuIE9LOwogfQogCi1zcDxNZXRhRGF0YT4gQ2FtZXJhU291cmNlOjpnZXRGb3JtYXQoKSB7Ci0gICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7Ci0gICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX1JBVyk7Ci0gICAgbWV0YS0+c2V0SW50MzIoa0tleUNvbG9yRm9ybWF0LCBPTVhfQ09MT1JfRm9ybWF0WVVWNDIwU2VtaVBsYW5hcik7Ci0gICAgbWV0YS0+c2V0SW50MzIoa0tleVdpZHRoLCBtV2lkdGgpOwotICAgIG1ldGEtPnNldEludDMyKGtLZXlIZWlnaHQsIG1IZWlnaHQpOwordm9pZCBDYW1lcmFTb3VyY2U6OnJlbGVhc2VRdWV1ZWRGcmFtZXMoKSB7CisgICAgTGlzdDxzcDxJTWVtb3J5PiA+OjppdGVyYXRvciBpdDsKKyAgICB3aGlsZSAoIW1GcmFtZXNSZWNlaXZlZC5lbXB0eSgpKSB7CisgICAgICAgIGl0ID0gbUZyYW1lc1JlY2VpdmVkLmJlZ2luKCk7CisgICAgICAgIG1DYW1lcmEtPnJlbGVhc2VSZWNvcmRpbmdGcmFtZSgqaXQpOworICAgICAgICBtRnJhbWVzUmVjZWl2ZWQuZXJhc2UoaXQpOworICAgICAgICArK21OdW1GcmFtZXNEcm9wcGVkOworICAgIH0KK30KIAotICAgIHJldHVybiBtZXRhOworc3A8TWV0YURhdGE+IENhbWVyYVNvdXJjZTo6Z2V0Rm9ybWF0KCkgeworICAgIHJldHVybiBtTWV0YTsKK30KKwordm9pZCBDYW1lcmFTb3VyY2U6OnJlbGVhc2VPbmVSZWNvcmRpbmdGcmFtZShjb25zdCBzcDxJTWVtb3J5PiYgZnJhbWUpIHsKKyAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICBtQ2FtZXJhLT5yZWxlYXNlUmVjb3JkaW5nRnJhbWUoZnJhbWUpOworICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOworfQorCit2b2lkIENhbWVyYVNvdXJjZTo6c2lnbmFsQnVmZmVyUmV0dXJuZWQoTWVkaWFCdWZmZXIgKmJ1ZmZlcikgeworICAgIExPR1YoInNpZ25hbEJ1ZmZlclJldHVybmVkOiAlcCIsIGJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBmb3IgKExpc3Q8c3A8SU1lbW9yeT4gPjo6aXRlcmF0b3IgaXQgPSBtRnJhbWVzQmVpbmdFbmNvZGVkLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBtRnJhbWVzQmVpbmdFbmNvZGVkLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+cG9pbnRlcigpID09ICBidWZmZXItPmRhdGEoKSkgeworCisgICAgICAgICAgICByZWxlYXNlT25lUmVjb3JkaW5nRnJhbWUoKCppdCkpOworICAgICAgICAgICAgbUZyYW1lc0JlaW5nRW5jb2RlZC5lcmFzZShpdCk7CisgICAgICAgICAgICArK21OdW1GcmFtZXNFbmNvZGVkOworICAgICAgICAgICAgYnVmZmVyLT5zZXRPYnNlcnZlcigwKTsKKyAgICAgICAgICAgIGJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbUZyYW1lQ29tcGxldGVDb25kaXRpb24uc2lnbmFsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgQ0hFQ0tfRVEoMCwgInNpZ25hbEJ1ZmZlclJldHVybmVkOiBib2d1cyBidWZmZXIiKTsKIH0KIAogc3RhdHVzX3QgQ2FtZXJhU291cmNlOjpyZWFkKAogICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKLSAgICBDSEVDSyhtU3RhcnRlZCk7CisgICAgTE9HVigicmVhZCIpOwogCiAgICAgKmJ1ZmZlciA9IE5VTEw7CiAKQEAgLTIyNCwzOCArMjc2LDY3IEBACiAKICAgICB7CiAgICAgICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0gICAgICAgIHdoaWxlIChtRnJhbWVzLmVtcHR5KCkpIHsKKyAgICAgICAgd2hpbGUgKG1TdGFydGVkICYmIG1GcmFtZXNSZWNlaXZlZC5lbXB0eSgpKSB7CiAgICAgICAgICAgICBtRnJhbWVBdmFpbGFibGVDb25kaXRpb24ud2FpdChtTG9jayk7CiAgICAgICAgIH0KLQotICAgICAgICBmcmFtZSA9ICptRnJhbWVzLmJlZ2luKCk7Ci0gICAgICAgIG1GcmFtZXMuZXJhc2UobUZyYW1lcy5iZWdpbigpKTsKKyAgICAgICAgaWYgKCFtU3RhcnRlZCkgeworICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICB9CisgICAgICAgIGZyYW1lID0gKm1GcmFtZXNSZWNlaXZlZC5iZWdpbigpOworICAgICAgICBtRnJhbWVzUmVjZWl2ZWQuZXJhc2UobUZyYW1lc1JlY2VpdmVkLmJlZ2luKCkpOwogCiAgICAgICAgIGZyYW1lVGltZSA9ICptRnJhbWVUaW1lcy5iZWdpbigpOwogICAgICAgICBtRnJhbWVUaW1lcy5lcmFzZShtRnJhbWVUaW1lcy5iZWdpbigpKTsKKworICAgICAgICBtRnJhbWVzQmVpbmdFbmNvZGVkLnB1c2hfYmFjayhmcmFtZSk7CisgICAgICAgICpidWZmZXIgPSBuZXcgTWVkaWFCdWZmZXIoZnJhbWUtPnBvaW50ZXIoKSwgZnJhbWUtPnNpemUoKSk7CisgICAgICAgICgqYnVmZmVyKS0+c2V0T2JzZXJ2ZXIodGhpcyk7CisgICAgICAgICgqYnVmZmVyKS0+YWRkX3JlZigpOworICAgICAgICAoKmJ1ZmZlciktPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgZnJhbWVUaW1lKTsKICAgICB9Ci0KLSAgICAqYnVmZmVyID0gbmV3IE1lZGlhQnVmZmVyKGZyYW1lLT5zaXplKCkpOwotICAgIG1lbWNweSgoKmJ1ZmZlciktPmRhdGEoKSwgZnJhbWUtPnBvaW50ZXIoKSwgZnJhbWUtPnNpemUoKSk7Ci0gICAgKCpidWZmZXIpLT5zZXRfcmFuZ2UoMCwgZnJhbWUtPnNpemUoKSk7Ci0KLSAgICAoKmJ1ZmZlciktPm1ldGFfZGF0YSgpLT5jbGVhcigpOwotICAgICgqYnVmZmVyKS0+bWV0YV9kYXRhKCktPnNldEludDY0KGtLZXlUaW1lLCBmcmFtZVRpbWUpOwotCiAgICAgcmV0dXJuIE9LOwogfQogCi12b2lkIENhbWVyYVNvdXJjZTo6ZGF0YUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4gJmRhdGEpIHsKK3ZvaWQgQ2FtZXJhU291cmNlOjpkYXRhQ2FsbGJhY2tUaW1lc3RhbXAoaW50NjRfdCB0aW1lc3RhbXBVcywKKyAgICAgICAgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiAmZGF0YSkgeworICAgIExPR1YoImRhdGFDYWxsYmFja1RpbWVzdGFtcDogdGltZXN0YW1wICVsbGQgdXMiLCB0aW1lc3RhbXBVcyk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgIGludDY0X3Qgbm93VXMgPSBnZXROb3dVcygpOwotICAgIGlmIChtTnVtRnJhbWVzID09IDApIHsKLSAgICAgICAgbUZpcnN0RnJhbWVUaW1lVXMgPSBub3dVczsKKyAgICBpZiAoIW1TdGFydGVkKSB7CisgICAgICAgIHJlbGVhc2VPbmVSZWNvcmRpbmdGcmFtZShkYXRhKTsKKyAgICAgICAgKyttTnVtRnJhbWVzUmVjZWl2ZWQ7CisgICAgICAgICsrbU51bUZyYW1lc0Ryb3BwZWQ7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgKyttTnVtRnJhbWVzOwogCi0gICAgbUZyYW1lcy5wdXNoX2JhY2soZGF0YSk7Ci0gICAgbUZyYW1lVGltZXMucHVzaF9iYWNrKG5vd1VzIC0gbUZpcnN0RnJhbWVUaW1lVXMpOworICAgIGlmIChtTnVtRnJhbWVzUmVjZWl2ZWQgPiAwICYmCisgICAgICAgIHRpbWVzdGFtcFVzIC0gbUxhc3RGcmFtZVRpbWVzdGFtcFVzID4gbUdsaXRjaER1cmF0aW9uVGhyZXNob2xkVXMpIHsKKyAgICAgICAgaWYgKG1OdW1HbGl0Y2hlcyAlIDEwID09IDApIHsgIC8vIERvbid0IHNwYW0gdGhlIGxvZworICAgICAgICAgICAgTE9HVygiTG9uZyBkZWxheSBkZXRlY3RlZCBpbiB2aWRlbyByZWNvcmRpbmciKTsKKyAgICAgICAgfQorICAgICAgICArK21OdW1HbGl0Y2hlczsKKyAgICB9CisKKyAgICBtTGFzdEZyYW1lVGltZXN0YW1wVXMgPSB0aW1lc3RhbXBVczsKKyAgICBpZiAobU51bUZyYW1lc1JlY2VpdmVkID09IDApIHsKKyAgICAgICAgbUZpcnN0RnJhbWVUaW1lVXMgPSB0aW1lc3RhbXBVczsKKyAgICAgICAgLy8gSW5pdGlhbCBkZWxheQorICAgICAgICBpZiAobVN0YXJ0VGltZVVzID4gMCkgeworICAgICAgICAgICAgaWYgKHRpbWVzdGFtcFVzIDwgbVN0YXJ0VGltZVVzKSB7CisgICAgICAgICAgICAgICAgLy8gRnJhbWUgd2FzIGNhcHR1cmVkIGJlZm9yZSByZWNvcmRpbmcgd2FzIHN0YXJ0ZWQKKyAgICAgICAgICAgICAgICAvLyBEcm9wIGl0IHdpdGhvdXQgdXBkYXRpbmcgdGhlIHN0YXRpc3RpY2FsIGRhdGEuCisgICAgICAgICAgICAgICAgcmVsZWFzZU9uZVJlY29yZGluZ0ZyYW1lKGRhdGEpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1TdGFydFRpbWVVcyA9IHRpbWVzdGFtcFVzIC0gbVN0YXJ0VGltZVVzOworICAgICAgICB9CisgICAgfQorICAgICsrbU51bUZyYW1lc1JlY2VpdmVkOworCisgICAgbUZyYW1lc1JlY2VpdmVkLnB1c2hfYmFjayhkYXRhKTsKKyAgICBpbnQ2NF90IHRpbWVVcyA9IG1TdGFydFRpbWVVcyArICh0aW1lc3RhbXBVcyAtIG1GaXJzdEZyYW1lVGltZVVzKTsKKyAgICBtRnJhbWVUaW1lcy5wdXNoX2JhY2sodGltZVVzKTsKKyAgICBMT0dWKCJpbml0aWFsIGRlbGF5OiAlbGxkLCBjdXJyZW50IHRpbWUgc3RhbXA6ICVsbGQiLAorICAgICAgICBtU3RhcnRUaW1lVXMsIHRpbWVVcyk7CiAgICAgbUZyYW1lQXZhaWxhYmxlQ29uZGl0aW9uLnNpZ25hbCgpOwogfQogCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9EYXRhU291cmNlLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuY3BwCmluZGV4IGE2NmY4NmIuLjkwYTU5NmMgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuY3BwCkBAIC0xOSwxMSArMTksMTQgQEAKICNpbmNsdWRlICJpbmNsdWRlL01QRUc0RXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9XQVZFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJpbmNsdWRlL09nZ0V4dHJhY3Rvci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTVBFRzJUU0V4dHJhY3Rvci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTnVDYWNoZWRTb3VyY2UyLmgiCisjaW5jbHVkZSAiaW5jbHVkZS9OdUhUVFBEYXRhU291cmNlLmgiCiAKLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5oPgorI2luY2x1ZGUgIm1hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmgiCisKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRmlsZVNvdXJjZS5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KICNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CiAKQEAgLTk0LDYgKzk3LDggQEAKICAgICBSZWdpc3RlclNuaWZmZXIoU25pZmZBTVIpOwogICAgIFJlZ2lzdGVyU25pZmZlcihTbmlmZldBVik7CiAgICAgUmVnaXN0ZXJTbmlmZmVyKFNuaWZmT2dnKTsKKyAgICBSZWdpc3RlclNuaWZmZXIoU25pZmZNYXRyb3NrYSk7CisgICAgUmVnaXN0ZXJTbmlmZmVyKFNuaWZmTVBFRzJUUyk7CiB9CiAKIC8vIHN0YXRpYwpAQCAtMTAzLDExICsxMDgsMTEgQEAKICAgICBpZiAoIXN0cm5jYXNlY21wKCJmaWxlOi8vIiwgdXJpLCA3KSkgewogICAgICAgICBzb3VyY2UgPSBuZXcgRmlsZVNvdXJjZSh1cmkgKyA3KTsKICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcCgiaHR0cDovLyIsIHVyaSwgNykpIHsKLSAgICAgICAgc3A8SFRUUERhdGFTb3VyY2U+IGh0dHBTb3VyY2UgPSBuZXcgSFRUUERhdGFTb3VyY2UodXJpLCBoZWFkZXJzKTsKLSAgICAgICAgaWYgKGh0dHBTb3VyY2UtPmNvbm5lY3QoKSAhPSBPSykgeworICAgICAgICBzcDxOdUhUVFBEYXRhU291cmNlPiBodHRwU291cmNlID0gbmV3IE51SFRUUERhdGFTb3VyY2U7CisgICAgICAgIGlmIChodHRwU291cmNlLT5jb25uZWN0KHVyaSwgaGVhZGVycykgIT0gT0spIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHNvdXJjZSA9IG5ldyBDYWNoaW5nRGF0YVNvdXJjZShodHRwU291cmNlLCA2NCAqIDEwMjQsIDEwKTsKKyAgICAgICAgc291cmNlID0gbmV3IE51Q2FjaGVkU291cmNlMihodHRwU291cmNlKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBBc3N1bWUgaXQncyBhIGZpbGVuYW1lLgogICAgICAgICBzb3VyY2UgPSBuZXcgRmlsZVNvdXJjZSh1cmkpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvRmlsZVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9GaWxlU291cmNlLmNwcAppbmRleCBiNmYxYWYyLi5kZDI1NzliIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9GaWxlU291cmNlLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9GaWxlU291cmNlLmNwcApAQCAtNDUsNiArNDUsMTAgQEAKIH0KIAogc3NpemVfdCBGaWxlU291cmNlOjpyZWFkQXQob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIGlmIChtRmlsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKwogICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CiAKICAgICBpZiAobUxlbmd0aCA+PSAwKSB7CkBAIC02Nyw2ICs3MSwxMCBAQAogfQogCiBzdGF0dXNfdCBGaWxlU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7CisgICAgaWYgKG1GaWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CisgICAgfQorCiAgICAgaWYgKG1MZW5ndGggPj0gMCkgewogICAgICAgICAqc2l6ZSA9IG1MZW5ndGg7CiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcyYTZjYy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9IVFRQRGF0YVNvdXJjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLS8vI2RlZmluZSBMT0dfTkRFQlVHIDAKLSNkZWZpbmUgTE9HX1RBRyAiSFRUUERhdGFTb3VyY2UiCi0jaW5jbHVkZSA8dXRpbHMvTG9nLmg+Ci0KLSNpbmNsdWRlICJpbmNsdWRlL3N0YWdlZnJpZ2h0X3N0cmluZy5oIgotI2luY2x1ZGUgImluY2x1ZGUvSFRUUFN0cmVhbS5oIgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpbmNsdWRlIDxjdXRpbHMvcHJvcGVydGllcy5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWJ1Zy5oPgotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLXN0YXR1c190IEhUVFBEYXRhU291cmNlOjpjb25uZWN0V2l0aFJlZGlyZWN0c0FuZFJhbmdlKG9mZl90IHJhbmdlU3RhcnQpIHsKLSAgICBzdHJpbmcgaG9zdCA9IG1TdGFydGluZ0hvc3Quc3RyaW5nKCk7Ci0gICAgc3RyaW5nIHBhdGggPSBtU3RhcnRpbmdQYXRoLnN0cmluZygpOwotICAgIGludCBwb3J0ID0gbVN0YXJ0aW5nUG9ydDsKLQotICAgIExPR1YoIkNvbm5lY3RpbmcgdG8gaG9zdCAnJXMnLCBwb3J0ICVkLCBwYXRoICclcyciLAotICAgICAgICAgaG9zdC5jX3N0cigpLCBwb3J0LCBwYXRoLmNfc3RyKCkpOwotCi0gICAgaW50IG51bVJlZGlyZWN0c1JlbWFpbmluZyA9IDU7Ci0gICAgd2hpbGUgKG51bVJlZGlyZWN0c1JlbWFpbmluZy0tID4gMCkgewotICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobVN0YXRlTG9jayk7Ci0gICAgICAgICAgICBpZiAobVN0YXRlID09IERJU0NPTk5FQ1RFRCkgewotICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdHVzX3QgZXJyID0gbUh0dHAtPmNvbm5lY3QoaG9zdC5jX3N0cigpLCBwb3J0KTsKLQotICAgICAgICBpZiAoZXJyICE9IE9LKSB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5nOCByZXF1ZXN0OwotICAgICAgICByZXF1ZXN0LmFwcGVuZCgiR0VUICIpOwotICAgICAgICByZXF1ZXN0LmFwcGVuZChwYXRoLmNfc3RyKCkpOwotICAgICAgICByZXF1ZXN0LmFwcGVuZCgiIEhUVFAvMS4xXHJcbiIpOwotICAgICAgICByZXF1ZXN0LmFwcGVuZChtSGVhZGVycyk7Ci0gICAgICAgIHJlcXVlc3QuYXBwZW5kKCJIb3N0OiAiKTsKLSAgICAgICAgcmVxdWVzdC5hcHBlbmQoaG9zdC5jX3N0cigpKTsKLSAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKLQotICAgICAgICBpZiAocmFuZ2VTdGFydCA+IDApIHsKLSAgICAgICAgICAgIGNoYXIgcmFuZ2VbMTI4XTsKLSAgICAgICAgICAgIHNwcmludGYocmFuZ2UsICJSYW5nZTogYnl0ZXM9JWxkLVxyXG4iLCByYW5nZVN0YXJ0KTsKLQotICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQocmFuZ2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKLQotICAgICAgICBlcnIgPSBtSHR0cC0+c2VuZChyZXF1ZXN0LnN0cmluZygpKTsKLQotICAgICAgICBpZiAoZXJyICE9IE9LKSB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGh0dHBTdGF0dXM7Ci0gICAgICAgIGVyciA9IG1IdHRwLT5yZWNlaXZlX2hlYWRlcigmaHR0cFN0YXR1cyk7Ci0KLSAgICAgICAgaWYgKGVyciAhPSBPSykgewotICAgICAgICAgICAgcmV0dXJuIGVycjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChodHRwU3RhdHVzID49IDIwMCAmJiBodHRwU3RhdHVzIDwgMzAwKSB7Ci0gICAgICAgICAgICBhcHBseVRpbWVvdXRSZXNwb25zZSgpOwotICAgICAgICAgICAgcmV0dXJuIE9LOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGh0dHBTdGF0dXMgIT0gMzAxICYmIGh0dHBTdGF0dXMgIT0gMzAyKSB7Ci0gICAgICAgICAgICBMT0dFKCJIVFRQIHJlcXVlc3QgZmFpbGVkIHcvIGh0dHAgc3RhdHVzICVkIiwgaHR0cFN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gRVJST1JfSU87Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJpbmcgbG9jYXRpb247Ci0gICAgICAgIENIRUNLKG1IdHRwLT5maW5kX2hlYWRlcl92YWx1ZSgiTG9jYXRpb24iLCAmbG9jYXRpb24pKTsKLQotICAgICAgICBDSEVDSyhzdHJpbmcobG9jYXRpb24sIDAsIDcpID09ICJodHRwOi8vIik7Ci0gICAgICAgIGxvY2F0aW9uLmVyYXNlKDAsIDcpOwotICAgICAgICBzdHJpbmc6OnNpemVfdHlwZSBzbGFzaFBvcyA9IGxvY2F0aW9uLmZpbmQoJy8nKTsKLSAgICAgICAgaWYgKHNsYXNoUG9zID09IHN0cmluZzo6bnBvcykgewotICAgICAgICAgICAgc2xhc2hQb3MgPSBsb2NhdGlvbi5zaXplKCk7Ci0gICAgICAgICAgICBsb2NhdGlvbiArPSAnLyc7Ci0gICAgICAgIH0KLQotICAgICAgICBtSHR0cC0+ZGlzY29ubmVjdCgpOwotCi0gICAgICAgIExPR1YoIlJlZGlyZWN0aW5nIHRvICVzXG4iLCBsb2NhdGlvbi5jX3N0cigpKTsKLQotICAgICAgICBob3N0ID0gc3RyaW5nKGxvY2F0aW9uLCAwLCBzbGFzaFBvcyk7Ci0KLSAgICAgICAgc3RyaW5nOjpzaXplX3R5cGUgY29sb25Qb3MgPSBob3N0LmZpbmQoJzonKTsKLSAgICAgICAgaWYgKGNvbG9uUG9zICE9IHN0cmluZzo6bnBvcykgewotICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSBob3N0LmNfc3RyKCkgKyBjb2xvblBvcyArIDE7Ci0gICAgICAgICAgICBjaGFyICplbmQ7Ci0gICAgICAgICAgICBsb25nIHRtcCA9IHN0cnRvbChzdGFydCwgJmVuZCwgMTApOwotICAgICAgICAgICAgQ0hFQ0soZW5kID4gc3RhcnQgJiYgKCplbmQgPT0gJ1wwJykpOwotCi0gICAgICAgICAgICBwb3J0ID0gKHRtcCA+PSAwICYmIHRtcCA8IDY1NTM2KSA/IChpbnQpdG1wIDogODA7Ci0KLSAgICAgICAgICAgIGhvc3QuZXJhc2UoY29sb25Qb3MsIGhvc3Quc2l6ZSgpIC0gY29sb25Qb3MpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9ydCA9IDgwOwotICAgICAgICB9Ci0KLSAgICAgICAgcGF0aCA9IHN0cmluZyhsb2NhdGlvbiwgc2xhc2hQb3MpOwotCi0gICAgICAgIG1TdGFydGluZ0hvc3QgPSBob3N0LmNfc3RyKCk7Ci0gICAgICAgIG1TdGFydGluZ1BhdGggPSBwYXRoLmNfc3RyKCk7Ci0gICAgICAgIG1TdGFydGluZ1BvcnQgPSBwb3J0OwotICAgIH0KLQotICAgIHJldHVybiBFUlJPUl9JTzsKLX0KLQotdm9pZCBIVFRQRGF0YVNvdXJjZTo6YXBwbHlUaW1lb3V0UmVzcG9uc2UoKSB7Ci0gICAgc3RyaW5nIHRpbWVvdXQ7Ci0gICAgaWYgKG1IdHRwLT5maW5kX2hlYWRlcl92YWx1ZSgiWC1Tb2NrZXRUaW1lb3V0IiwgJnRpbWVvdXQpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSB0aW1lb3V0LmNfc3RyKCk7Ci0gICAgICAgIGNoYXIgKmVuZDsKLSAgICAgICAgbG9uZyB0bXAgPSBzdHJ0b2wocywgJmVuZCwgMTApOwotICAgICAgICBpZiAoZW5kID09IHMgfHwgKmVuZCAhPSAnXDAnKSB7Ci0gICAgICAgICAgICBMT0dXKCJJbGxlZ2FsIFgtU29ja2V0VGltZW91dCB2YWx1ZSBnaXZlbi4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIExPR0koIm92ZXJyaWRpbmcgZGVmYXVsdCB0aW1lb3V0LCBuZXcgdGltZW91dCBpcyAlbGQgc2Vjb25kcyIsIHRtcCk7Ci0gICAgICAgIG1IdHRwLT5zZXRSZWNlaXZlVGltZW91dCh0bXApOwotICAgIH0KLX0KLQotSFRUUERhdGFTb3VyY2U6OkhUVFBEYXRhU291cmNlKAotICAgICAgICBjb25zdCBjaGFyICp1cmksIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzKSB7Ci0gICAgQ0hFQ0soIXN0cm5jYXNlY21wKCJodHRwOi8vIiwgdXJpLCA3KSk7Ci0KLSAgICBzdHJpbmcgaG9zdDsKLSAgICBzdHJpbmcgcGF0aDsKLSAgICBpbnQgcG9ydDsKLQotICAgIGNoYXIgKnNsYXNoID0gc3RyY2hyKHVyaSArIDcsICcvJyk7Ci0gICAgaWYgKHNsYXNoID09IE5VTEwpIHsKLSAgICAgICAgaG9zdCA9IHVyaSArIDc7Ci0gICAgICAgIHBhdGggPSAiLyI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaG9zdCA9IHN0cmluZyh1cmkgKyA3LCBzbGFzaCAtICh1cmkgKyA3KSk7Ci0gICAgICAgIHBhdGggPSBzbGFzaDsKLSAgICB9Ci0KLSAgICBjaGFyICpjb2xvbiA9IHN0cmNocihob3N0LmNfc3RyKCksICc6Jyk7Ci0gICAgaWYgKGNvbG9uID09IE5VTEwpIHsKLSAgICAgICAgcG9ydCA9IDgwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNoYXIgKmVuZDsKLSAgICAgICAgbG9uZyB0bXAgPSBzdHJ0b2woY29sb24gKyAxLCAmZW5kLCAxMCk7Ci0gICAgICAgIENIRUNLKGVuZCA+IGNvbG9uICsgMSk7Ci0gICAgICAgIENIRUNLKHRtcCA+IDAgJiYgdG1wIDwgNjU1MzYpOwotICAgICAgICBwb3J0ID0gdG1wOwotCi0gICAgICAgIGhvc3QgPSBzdHJpbmcoaG9zdCwgMCwgY29sb24gLSBob3N0LmNfc3RyKCkpOwotICAgIH0KLQotICAgIG1TdGFydGluZ0hvc3QgPSBob3N0LmNfc3RyKCk7Ci0gICAgbVN0YXJ0aW5nUGF0aCA9IHBhdGguY19zdHIoKTsKLSAgICBtU3RhcnRpbmdQb3J0ID0gcG9ydDsKLQotICAgIGluaXQoaGVhZGVycyk7Ci19Ci0KLUhUVFBEYXRhU291cmNlOjpIVFRQRGF0YVNvdXJjZSgKLSAgICAgICAgY29uc3QgY2hhciAqX2hvc3QsIGludCBwb3J0LCBjb25zdCBjaGFyICpfcGF0aCwKLSAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMpIHsKLSAgICBtU3RhcnRpbmdIb3N0ID0gX2hvc3Q7Ci0gICAgbVN0YXJ0aW5nUGF0aCA9IF9wYXRoOwotICAgIG1TdGFydGluZ1BvcnQgPSBwb3J0OwotCi0gICAgaW5pdChoZWFkZXJzKTsKLX0KLQotdm9pZCBIVFRQRGF0YVNvdXJjZTo6aW5pdChjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycykgewotICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKLSAgICBtSHR0cCA9IG5ldyBIVFRQU3RyZWFtOwotCi0gICAgaW5pdEhlYWRlcnMoaGVhZGVycyk7Ci0KLSAgICBtQnVmZmVyID0gbWFsbG9jKGtCdWZmZXJTaXplKTsKLQotICAgIG1OdW1SZXRyaWVzTGVmdCA9IGtNYXhOdW1SZXRyaWVzOwotfQotCi1zdGF0dXNfdCBIVFRQRGF0YVNvdXJjZTo6Y29ubmVjdCgpIHsKLSAgICB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtU3RhdGVMb2NrKTsKLQotICAgICAgICBpZiAobVN0YXRlICE9IERJU0NPTk5FQ1RFRCkgewotICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0FMUkVBRFlfQ09OTkVDVEVEOwotICAgICAgICB9Ci0KLSAgICAgICAgbVN0YXRlID0gQ09OTkVDVElORzsKLSAgICB9Ci0KLSAgICBtQnVmZmVyTGVuZ3RoID0gMDsKLSAgICBtQnVmZmVyT2Zmc2V0ID0gMDsKLSAgICBtQ29udGVudExlbmd0aFZhbGlkID0gZmFsc2U7Ci0KLSAgICBzdGF0dXNfdCBlcnIgPSBjb25uZWN0V2l0aFJlZGlyZWN0c0FuZFJhbmdlKDApOwotCi0gICAgaWYgKGVyciAhPSBPSykgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobVN0YXRlTG9jayk7Ci0KLSAgICAgICAgaWYgKG1TdGF0ZSAhPSBDT05ORUNUSU5HKSB7Ci0gICAgICAgICAgICBMT0dWKCJjb25uZWN0KCkgY2FuY2VsbGVkIik7Ci0gICAgICAgIH0KLSAgICAgICAgbVN0YXRlID0gRElTQ09OTkVDVEVEOwotCi0gICAgICAgIHJldHVybiBlcnI7Ci0gICAgfQotCi0gICAgc3RyaW5nIHZhbHVlOwotICAgIGlmIChtSHR0cC0+ZmluZF9oZWFkZXJfdmFsdWUoIkNvbnRlbnQtTGVuZ3RoIiwgJnZhbHVlKSkgewotICAgICAgICBjaGFyICplbmQ7Ci0gICAgICAgIG1Db250ZW50TGVuZ3RoID0gc3RydG91bGwodmFsdWUuY19zdHIoKSwgJmVuZCwgMTApOwotICAgICAgICBtQ29udGVudExlbmd0aFZhbGlkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobVN0YXRlTG9jayk7Ci0KLSAgICBpZiAobVN0YXRlICE9IENPTk5FQ1RJTkcpIHsKLSAgICAgICAgLy8gZGlzY29ubmVjdCB3YXMgY2FsbGVkIHdoZW4gd2UgaGFkIGp1c3Qgc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZC4KLSAgICAgICAgTE9HVigiY29ubmVjdCgpIGNhbmNlbGxlZCAod2UgaGFkIGp1c3Qgc3VjY2VlZGVkIGNvbm5lY3RpbmcpIik7Ci0KLSAgICAgICAgbUh0dHAtPmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7Ci0gICAgfQotCi0gICAgbVN0YXRlID0gQ09OTkVDVEVEOwotCi0gICAgcmV0dXJuIE9LOwotfQotCi12b2lkIEhUVFBEYXRhU291cmNlOjpkaXNjb25uZWN0KCkgewotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtU3RhdGVMb2NrKTsKLQotICAgIGlmIChtU3RhdGUgPT0gQ09OTkVDVElORyB8fCBtU3RhdGUgPT0gQ09OTkVDVEVEKSB7Ci0gICAgICAgIG1IdHRwLT5kaXNjb25uZWN0KCk7Ci0gICAgICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKLSAgICB9Ci19Ci0KLXN0YXR1c190IEhUVFBEYXRhU291cmNlOjppbml0Q2hlY2soKSBjb25zdCB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1TdGF0ZUxvY2spOwotCi0gICAgcmV0dXJuIChtU3RhdGUgPT0gQ09OTkVDVEVEKSA/IChzdGF0dXNfdClPSyA6IEVSUk9SX05PVF9DT05ORUNURUQ7Ci19Ci0KLXN0YXR1c190IEhUVFBEYXRhU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7Ci0gICAgKnNpemUgPSAwOwotCi0gICAgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobVN0YXRlTG9jayk7Ci0gICAgICAgIGlmIChtU3RhdGUgIT0gQ09OTkVDVEVEKSB7Ci0gICAgICAgICAgICByZXR1cm4gRVJST1JfTk9UX0NPTk5FQ1RFRDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghbUNvbnRlbnRMZW5ndGhWYWxpZCkgewotICAgICAgICByZXR1cm4gRVJST1JfVU5TVVBQT1JURUQ7Ci0gICAgfQotCi0gICAgKnNpemUgPSBtQ29udGVudExlbmd0aDsKLQotICAgIHJldHVybiBPSzsKLX0KLQotSFRUUERhdGFTb3VyY2U6On5IVFRQRGF0YVNvdXJjZSgpIHsKLSAgICBkaXNjb25uZWN0KCk7Ci0KLSAgICBkZWxldGUgbUh0dHA7Ci0gICAgbUh0dHAgPSBOVUxMOwotCi0gICAgZnJlZShtQnVmZmVyKTsKLSAgICBtQnVmZmVyID0gTlVMTDsKLX0KLQotc3NpemVfdCBIVFRQRGF0YVNvdXJjZTo6c2VuZFJhbmdlUmVxdWVzdChzaXplX3Qgb2Zmc2V0KSB7Ci0gICAgc3RhdHVzX3QgZXJyID0gY29ubmVjdFdpdGhSZWRpcmVjdHNBbmRSYW5nZShvZmZzZXQpOwotCi0gICAgaWYgKGVyciAhPSBPSykgewotICAgICAgICByZXR1cm4gZXJyOwotICAgIH0KLQotICAgIHN0cmluZyB2YWx1ZTsKLSAgICBpZiAoIW1IdHRwLT5maW5kX2hlYWRlcl92YWx1ZSgiQ29udGVudC1MZW5ndGgiLCAmdmFsdWUpKSB7Ci0gICAgICAgIHJldHVybiBrQnVmZmVyU2l6ZTsKLSAgICB9Ci0KLSAgICBjaGFyICplbmQ7Ci0gICAgdW5zaWduZWQgbG9uZyBjb250ZW50TGVuZ3RoID0gc3RydG91bCh2YWx1ZS5jX3N0cigpLCAmZW5kLCAxMCk7Ci0KLSAgICByZXR1cm4gY29udGVudExlbmd0aDsKLX0KLQotc3NpemVfdCBIVFRQRGF0YVNvdXJjZTo6cmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICBMT0dWKCJyZWFkQXQgJWxkLCBzaXplICVkIiwgb2Zmc2V0LCBzaXplKTsKLQotcmluc2VfcmVwZWF0OgotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1TdGF0ZUxvY2spOwotICAgICAgICBpZiAobVN0YXRlICE9IENPTk5FQ1RFRCkgewotICAgICAgICAgICAgcmV0dXJuIEVSUk9SX05PVF9DT05ORUNURUQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob2Zmc2V0ID49IG1CdWZmZXJPZmZzZXQKLSAgICAgICAgICAgICYmIG9mZnNldCA8IChvZmZfdCkobUJ1ZmZlck9mZnNldCArIG1CdWZmZXJMZW5ndGgpKSB7Ci0gICAgICAgIHNpemVfdCBudW1fYnl0ZXNfYXZhaWxhYmxlID0gbUJ1ZmZlckxlbmd0aCAtIChvZmZzZXQgLSBtQnVmZmVyT2Zmc2V0KTsKLQotICAgICAgICBzaXplX3QgY29weSA9IG51bV9ieXRlc19hdmFpbGFibGU7Ci0gICAgICAgIGlmIChjb3B5ID4gc2l6ZSkgewotICAgICAgICAgICAgY29weSA9IHNpemU7Ci0gICAgICAgIH0KLQotICAgICAgICBtZW1jcHkoZGF0YSwgKGNvbnN0IGNoYXIgKiltQnVmZmVyICsgKG9mZnNldCAtIG1CdWZmZXJPZmZzZXQpLCBjb3B5KTsKLQotICAgICAgICBpZiAoY29weSA8IHNpemUpIHsKLSAgICAgICAgICAgIExPR1YoInNob3J0IHJlYWQgKDEpLCByZXR1cm5pbmcgJWQgdnMuICVkIHJlcXVlc3RlZCIsIGNvcHksIHNpemUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNvcHk7Ci0gICAgfQotCi0gICAgc3NpemVfdCBjb250ZW50TGVuZ3RoID0gMDsKLSAgICBpZiAob2Zmc2V0ICE9IChvZmZfdCkobUJ1ZmZlck9mZnNldCArIG1CdWZmZXJMZW5ndGgpKSB7Ci0gICAgICAgIExPR1YoIm5ldyByYW5nZSBvZmZzZXQ9JWxkIChvbGQ9JWxkKSIsCi0gICAgICAgICAgICAgb2Zmc2V0LCBtQnVmZmVyT2Zmc2V0ICsgbUJ1ZmZlckxlbmd0aCk7Ci0KLSAgICAgICAgbUh0dHAtPmRpc2Nvbm5lY3QoKTsKLQotICAgICAgICBjb250ZW50TGVuZ3RoID0gc2VuZFJhbmdlUmVxdWVzdChvZmZzZXQpOwotCi0gICAgICAgIGlmIChjb250ZW50TGVuZ3RoID4ga0J1ZmZlclNpemUpIHsKLSAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSBrQnVmZmVyU2l6ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnRlbnRMZW5ndGggPSBrQnVmZmVyU2l6ZTsKLSAgICB9Ci0KLSAgICBtQnVmZmVyT2Zmc2V0ID0gb2Zmc2V0OwotCi0gICAgaWYgKG1Db250ZW50TGVuZ3RoVmFsaWQKLSAgICAgICAgICAgICYmIG1CdWZmZXJPZmZzZXQgKyBjb250ZW50TGVuZ3RoID49IChvZmZfdCltQ29udGVudExlbmd0aCkgewotICAgICAgICAvLyBJZiB3ZSBuZXZlciB0cmlnZ2VyZWQgYSByYW5nZSByZXF1ZXN0IGJ1dCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCwKLSAgICAgICAgLy8gbWFrZSBzdXJlIHRvIG5vdCByZWFkIG1vcmUgZGF0YSB0aGFuIHRoZXJlIGNvdWxkIGJlLCBvdGhlcndpc2UKLSAgICAgICAgLy8gd2UnZCBibG9jayBpbmRlZmluaXRlbHkgaWYgdGhlIHNlcnZlciBkb2Vzbid0IGNsb3NlIHRoZSBjb25uZWN0aW9uLgotCi0gICAgICAgIGNvbnRlbnRMZW5ndGggPSBtQ29udGVudExlbmd0aCAtIG1CdWZmZXJPZmZzZXQ7Ci0gICAgfQotCi0gICAgaWYgKGNvbnRlbnRMZW5ndGggPD0gMCkgewotICAgICAgICByZXR1cm4gY29udGVudExlbmd0aDsKLSAgICB9Ci0KLSAgICBzc2l6ZV90IG51bV9ieXRlc19yZWNlaXZlZCA9IG1IdHRwLT5yZWNlaXZlKG1CdWZmZXIsIGNvbnRlbnRMZW5ndGgpOwotCi0gICAgaWYgKG51bV9ieXRlc19yZWNlaXZlZCA8IDAKLSAgICAgICAgICAgIHx8IChtQ29udGVudExlbmd0aFZhbGlkICYmIG51bV9ieXRlc19yZWNlaXZlZCA8IGNvbnRlbnRMZW5ndGgpKSB7Ci0gICAgICAgIGlmIChtTnVtUmV0cmllc0xlZnQtLSA+IDApIHsKLSAgICAgICAgICAgIG1IdHRwLT5kaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICBtQnVmZmVyTGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG51bV9ieXRlc19yZWNlaXZlZCA9IGNvbm5lY3RXaXRoUmVkaXJlY3RzQW5kUmFuZ2UobUJ1ZmZlck9mZnNldCk7Ci0gICAgICAgICAgICBpZiAobnVtX2J5dGVzX3JlY2VpdmVkID09IE9LKSB7Ci0gICAgICAgICAgICAgICAgTE9HSSgicmV0cnlpbmcgY29ubmVjdGlvbiBzdWNjZWVkZWQuIik7Ci0gICAgICAgICAgICAgICAgZ290byByaW5zZV9yZXBlYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBMT0dFKCJyZXRyeWluZyBjb25uZWN0aW9uIGZhaWxlZCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgbUJ1ZmZlckxlbmd0aCA9IDA7Ci0KLSAgICAgICAgcmV0dXJuIG51bV9ieXRlc19yZWNlaXZlZDsKLSAgICB9Ci0KLSAgICBtQnVmZmVyTGVuZ3RoID0gKHNpemVfdCludW1fYnl0ZXNfcmVjZWl2ZWQ7Ci0KLSAgICBzaXplX3QgY29weSA9IG1CdWZmZXJMZW5ndGg7Ci0gICAgaWYgKGNvcHkgPiBzaXplKSB7Ci0gICAgICAgIGNvcHkgPSBzaXplOwotICAgIH0KLQotICAgIG1lbWNweShkYXRhLCBtQnVmZmVyLCBjb3B5KTsKLQotICAgIHJldHVybiBjb3B5OwotfQotCi12b2lkIEhUVFBEYXRhU291cmNlOjppbml0SGVhZGVycygKLSAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKm92ZXJyaWRlcykgewotICAgIG1IZWFkZXJzID0gU3RyaW5nOCgpOwotCi0gICAgbUhlYWRlcnMuYXBwZW5kKCJVc2VyLUFnZW50OiBzdGFnZWZyaWdodC8xLjAgKExpbnV4O0FuZHJvaWQgIik7Ci0KLSNpZiAoUFJPUEVSVFlfVkFMVUVfTUFYIDwgOCkKLSNlcnJvciAiUFJPUEVSVFlfVkFMVUVfTUFYIG11c3QgYmUgYXQgbGVhc3QgOCIKLSNlbmRpZgotCi0gICAgY2hhciB2YWx1ZVtQUk9QRVJUWV9WQUxVRV9NQVhdOwotICAgIHByb3BlcnR5X2dldCgicm8uYnVpbGQudmVyc2lvbi5yZWxlYXNlIiwgdmFsdWUsICJVbmtub3duIik7Ci0gICAgbUhlYWRlcnMuYXBwZW5kKHZhbHVlKTsKLSAgICBtSGVhZGVycy5hcHBlbmQoIilcclxuIik7Ci0KLSAgICBpZiAob3ZlcnJpZGVzID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3ZlcnJpZGVzLT5zaXplKCk7ICsraSkgewotICAgICAgICBTdHJpbmc4IGxpbmU7Ci0gICAgICAgIGxpbmUuYXBwZW5kKG92ZXJyaWRlcy0+a2V5QXQoaSkpOwotICAgICAgICBsaW5lLmFwcGVuZCgiOiAiKTsKLSAgICAgICAgbGluZS5hcHBlbmQob3ZlcnJpZGVzLT52YWx1ZUF0KGkpKTsKLSAgICAgICAgbGluZS5hcHBlbmQoIlxyXG4iKTsKLQotICAgICAgICBtSGVhZGVycy5hcHBlbmQobGluZSk7Ci0gICAgfQotfQotCi11aW50MzJfdCBIVFRQRGF0YVNvdXJjZTo6ZmxhZ3MoKSB7Ci0gICAgdWludDMyX3QgZiA9IGtXYW50c1ByZWZldGNoaW5nOwotCi0gICAgaWYgKCFzdHJjYXNlY21wKG1TdGFydGluZ0hvc3Quc3RyaW5nKCksICJsb2NhbGhvc3QiKQotICAgICAgICAgICAgfHwgIXN0cmNtcChtU3RhcnRpbmdIb3N0LnN0cmluZygpLCAiMTI3LjAuMC4xIikpIHsKLSAgICAgICAgZiB8PSBrU3RyZWFtZWRGcm9tTG9jYWxIb3N0OwotICAgIH0KLQotICAgIHJldHVybiBmOwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9NUDNFeHRyYWN0b3IuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVAzRXh0cmFjdG9yLmNwcAppbmRleCBmOTI1MWUxLi42OWMzYTcyIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9NUDNFeHRyYWN0b3IuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01QM0V4dHJhY3Rvci5jcHAKQEAgLTYzNCw2ICs2MzQsNyBAQAogICAgIH0KIAogICAgIHNpemVfdCBmcmFtZV9zaXplOworICAgIGludCBiaXRyYXRlOwogICAgIGZvciAoOzspIHsKICAgICAgICAgc3NpemVfdCBuID0gbURhdGFTb3VyY2UtPnJlYWRBdChtQ3VycmVudFBvcywgYnVmZmVyLT5kYXRhKCksIDQpOwogICAgICAgICBpZiAobiA8IDQpIHsKQEAgLTY0Niw3ICs2NDcsNyBAQAogICAgICAgICB1aW50MzJfdCBoZWFkZXIgPSBVMzJfQVQoKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSk7CiAKICAgICAgICAgaWYgKChoZWFkZXIgJiBrTWFzaykgPT0gKG1GaXhlZEhlYWRlciAmIGtNYXNrKQotICAgICAgICAgICAgJiYgZ2V0X21wM19mcmFtZV9zaXplKGhlYWRlciwgJmZyYW1lX3NpemUpKSB7CisgICAgICAgICAgICAmJiBnZXRfbXAzX2ZyYW1lX3NpemUoaGVhZGVyLCAmZnJhbWVfc2l6ZSwgTlVMTCwgTlVMTCwgJmJpdHJhdGUpKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC02ODMsNyArNjg0LDcgQEAKICAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgbUN1cnJlbnRUaW1lVXMpOwogCiAgICAgbUN1cnJlbnRQb3MgKz0gZnJhbWVfc2l6ZTsKLSAgICBtQ3VycmVudFRpbWVVcyArPSAxMTUyICogMTAwMDAwMCAvIDQ0MTAwOworICAgIG1DdXJyZW50VGltZVVzICs9IGZyYW1lX3NpemUgKiA4MDAwbGwgLyBiaXRyYXRlOwogCiAgICAgKm91dCA9IGJ1ZmZlcjsKIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRFeHRyYWN0b3IuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRFeHRyYWN0b3IuY3BwCmluZGV4IGE0MWIyZjQuLjBjMmYxZTYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01QRUc0RXh0cmFjdG9yLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NUEVHNEV4dHJhY3Rvci5jcHAKQEAgLTQyOCw2ICs0MjgsMTQgQEAKICAgICAgICAgfQogICAgICAgICBjaHVua19zaXplID0gbnRvaDY0KGNodW5rX3NpemUpOwogICAgICAgICBkYXRhX29mZnNldCArPSA4OworCisgICAgICAgIGlmIChjaHVua19zaXplIDwgMTYpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzbWFsbGVzdCB2YWxpZCBjaHVuayBpcyAxNiBieXRlcyBsb25nIGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGNodW5rX3NpemUgPCA4KSB7CisgICAgICAgIC8vIFRoZSBzbWFsbGVzdCB2YWxpZCBjaHVuayBpcyA4IGJ5dGVzIGxvbmcuCisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CiAgICAgfQogCiAgICAgY2hhciBjaHVua1s1XTsKQEAgLTE2MzMsNyArMTY0MSw3IEBACiAgICAgfQogfQogCi1ib29sIFNuaWZmTVBFRzQoCitzdGF0aWMgYm9vbCBMZWdhY3lTbmlmZk1QRUc0KAogICAgICAgICBjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlLCBTdHJpbmc4ICptaW1lVHlwZSwgZmxvYXQgKmNvbmZpZGVuY2UpIHsKICAgICB1aW50OF90IGhlYWRlcls4XTsKIApAQCAtMTY1Nyw1ICsxNjY1LDgzIEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBpc0NvbXBhdGlibGVCcmFuZCh1aW50MzJfdCBmb3VyY2MpIHsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qga0NvbXBhdGlibGVCcmFuZHNbXSA9IHsKKyAgICAgICAgRk9VUkNDKCdpJywgJ3MnLCAnbycsICdtJyksCisgICAgICAgIEZPVVJDQygnaScsICdzJywgJ28nLCAnMicpLAorICAgICAgICBGT1VSQ0MoJ2EnLCAndicsICdjJywgJzEnKSwKKyAgICAgICAgRk9VUkNDKCczJywgJ2cnLCAncCcsICc0JyksCisgICAgICAgIEZPVVJDQygnbScsICdwJywgJzQnLCAnMScpLAorICAgICAgICBGT1VSQ0MoJ20nLCAncCcsICc0JywgJzInKSwKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7CisgICAgICAgICBpIDwgc2l6ZW9mKGtDb21wYXRpYmxlQnJhbmRzKSAvIHNpemVvZihrQ29tcGF0aWJsZUJyYW5kc1swXSk7CisgICAgICAgICArK2kpIHsKKyAgICAgICAgaWYgKGtDb21wYXRpYmxlQnJhbmRzW2ldID09IGZvdXJjYykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIEF0dGVtcHQgdG8gYWN0dWFsbHkgcGFyc2UgdGhlICdmdHlwJyBhdG9tIGFuZCBkZXRlcm1pbmUgaWYgYSBzdWl0YWJsZQorLy8gY29tcGF0aWJsZSBicmFuZCBpcyBwcmVzZW50Lgorc3RhdGljIGJvb2wgQmV0dGVyU25pZmZNUEVHNCgKKyAgICAgICAgY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSwgU3RyaW5nOCAqbWltZVR5cGUsIGZsb2F0ICpjb25maWRlbmNlKSB7CisgICAgdWludDhfdCBoZWFkZXJbMTJdOworICAgIGlmIChzb3VyY2UtPnJlYWRBdCgwLCBoZWFkZXIsIDEyKSAhPSAxMgorICAgICAgICAgICAgfHwgbWVtY21wKCJmdHlwIiwgJmhlYWRlcls0XSwgNCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemVfdCBhdG9tU2l6ZSA9IFUzMl9BVCgmaGVhZGVyWzBdKTsKKyAgICBpZiAoYXRvbVNpemUgPCAxNiB8fCAoYXRvbVNpemUgJSA0KSAhPSAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoaXNDb21wYXRpYmxlQnJhbmQoVTMyX0FUKCZoZWFkZXJbOF0pKSkgeworICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaXplX3QgbnVtQ29tcGF0aWJsZUJyYW5kcyA9IChhdG9tU2l6ZSAtIDE2KSAvIDQ7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ29tcGF0aWJsZUJyYW5kczsgKytpKSB7CisgICAgICAgICAgICB1aW50OF90IHRtcFs0XTsKKyAgICAgICAgICAgIGlmIChzb3VyY2UtPnJlYWRBdCgxNiArIGkgKiA0LCB0bXAsIDQpICE9IDQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0NvbXBhdGlibGVCcmFuZChVMzJfQVQoJnRtcFswXSkpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICptaW1lVHlwZSA9IE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHNDsKKyAgICAqY29uZmlkZW5jZSA9IDAuM2Y7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTbmlmZk1QRUc0KAorICAgICAgICBjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlLCBTdHJpbmc4ICptaW1lVHlwZSwgZmxvYXQgKmNvbmZpZGVuY2UpIHsKKyAgICBpZiAoQmV0dGVyU25pZmZNUEVHNChzb3VyY2UsIG1pbWVUeXBlLCBjb25maWRlbmNlKSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5U25pZmZNUEVHNChzb3VyY2UsIG1pbWVUeXBlLCBjb25maWRlbmNlKSkgeworICAgICAgICBMT0dXKCJJZGVudGlmaWVkIHN1cHBvcnRlZCBtcGVnNCB0aHJvdWdoIExlZ2FjeVNuaWZmTVBFRzQuIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRXcml0ZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRXcml0ZXIuY3BwCmluZGV4IDJjZjBkZGYuLjZhNGExMzEgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01QRUc0V3JpdGVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NUEVHNFdyaXRlci5jcHAKQEAgLTE0LDYgKzE0LDEwIEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIk1QRUc0V3JpdGVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAKICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMjQsOCArMjgsMTMgQEAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvVXRpbHMuaD4KKyNpbmNsdWRlIDxtZWRpYS9tZWRpYXJlY29yZGVyLmg+CisjaW5jbHVkZSA8Y3V0aWxzL3Byb3BlcnRpZXMuaD4KKworI2luY2x1ZGUgImluY2x1ZGUvRVNEUy5oIgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKQEAgLTM0LDUyICs0MywxMjAgQEAKICAgICBUcmFjayhNUEVHNFdyaXRlciAqb3duZXIsIGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKTsKICAgICB+VHJhY2soKTsKIAotICAgIHN0YXR1c190IHN0YXJ0KCk7CisgICAgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtcyk7CiAgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCBwYXVzZSgpOwogICAgIGJvb2wgcmVhY2hlZEVPUygpOwogCiAgICAgaW50NjRfdCBnZXREdXJhdGlvblVzKCkgY29uc3Q7Ci0gICAgdm9pZCB3cml0ZVRyYWNrSGVhZGVyKGludDMyX3QgdHJhY2tJRCk7CisgICAgaW50NjRfdCBnZXRFc3RpbWF0ZWRUcmFja1NpemVCeXRlcygpIGNvbnN0OworICAgIHZvaWQgd3JpdGVUcmFja0hlYWRlcihpbnQzMl90IHRyYWNrSUQsIGJvb2wgdXNlMzJCaXRPZmZzZXQgPSB0cnVlKTsKIAogcHJpdmF0ZToKICAgICBNUEVHNFdyaXRlciAqbU93bmVyOwogICAgIHNwPE1ldGFEYXRhPiBtTWV0YTsKICAgICBzcDxNZWRpYVNvdXJjZT4gbVNvdXJjZTsKICAgICB2b2xhdGlsZSBib29sIG1Eb25lOworICAgIHZvbGF0aWxlIGJvb2wgbVBhdXNlZDsKKyAgICB2b2xhdGlsZSBib29sIG1SZXN1bWVkOwogICAgIGludDY0X3QgbU1heFRpbWVTdGFtcFVzOworICAgIGludDY0X3QgbUVzdGltYXRlZFRyYWNrU2l6ZUJ5dGVzOwogCiAgICAgcHRocmVhZF90IG1UaHJlYWQ7CiAKICAgICBzdHJ1Y3QgU2FtcGxlSW5mbyB7CiAgICAgICAgIHNpemVfdCBzaXplOwotICAgICAgICBvZmZfdCBvZmZzZXQ7CiAgICAgICAgIGludDY0X3QgdGltZXN0YW1wOwogICAgIH07Ci0gICAgTGlzdDxTYW1wbGVJbmZvPiBtU2FtcGxlSW5mb3M7CisgICAgTGlzdDxTYW1wbGVJbmZvPiAgICBtU2FtcGxlSW5mb3M7CisgICAgYm9vbCAgICAgICAgICAgICAgICBtU2FtcGxlc0hhdmVTYW1lU2l6ZTsKKworICAgIExpc3Q8TWVkaWFCdWZmZXIgKj4gbUNodW5rU2FtcGxlczsKKyAgICBMaXN0PG9mZl90PiAgICAgICAgIG1DaHVua09mZnNldHM7CisKKyAgICBzdHJ1Y3QgU3RzY1RhYmxlRW50cnkgeworCisgICAgICAgIFN0c2NUYWJsZUVudHJ5KHVpbnQzMl90IGNodW5rLCB1aW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpZCkKKyAgICAgICAgICAgIDogZmlyc3RDaHVuayhjaHVuayksCisgICAgICAgICAgICAgIHNhbXBsZXNQZXJDaHVuayhzYW1wbGVzKSwKKyAgICAgICAgICAgICAgc2FtcGxlRGVzY3JpcHRpb25JZChpZCkge30KKworICAgICAgICB1aW50MzJfdCBmaXJzdENodW5rOworICAgICAgICB1aW50MzJfdCBzYW1wbGVzUGVyQ2h1bms7CisgICAgICAgIHVpbnQzMl90IHNhbXBsZURlc2NyaXB0aW9uSWQ7CisgICAgfTsKKyAgICBMaXN0PFN0c2NUYWJsZUVudHJ5PiBtU3RzY1RhYmxlRW50cmllczsKKworICAgIExpc3Q8aW50MzJfdD4gbVN0c3NUYWJsZUVudHJpZXM7CisgICAgTGlzdDxpbnQ2NF90PiBtQ2h1bmtEdXJhdGlvbnM7CisKKyAgICBzdHJ1Y3QgU3R0c1RhYmxlRW50cnkgeworCisgICAgICAgIFN0dHNUYWJsZUVudHJ5KHVpbnQzMl90IGNvdW50LCB1aW50MzJfdCBkdXJhdGlvbikKKyAgICAgICAgICAgIDogc2FtcGxlQ291bnQoY291bnQpLCBzYW1wbGVEdXJhdGlvbihkdXJhdGlvbikge30KKworICAgICAgICB1aW50MzJfdCBzYW1wbGVDb3VudDsKKyAgICAgICAgdWludDMyX3Qgc2FtcGxlRHVyYXRpb247CisgICAgfTsKKyAgICBMaXN0PFN0dHNUYWJsZUVudHJ5PiBtU3R0c1RhYmxlRW50cmllczsKIAogICAgIHZvaWQgKm1Db2RlY1NwZWNpZmljRGF0YTsKICAgICBzaXplX3QgbUNvZGVjU3BlY2lmaWNEYXRhU2l6ZTsKKyAgICBib29sIG1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YTsKKyAgICBib29sIG1UcmFja2luZ1Byb2dyZXNzU3RhdHVzOwogCiAgICAgYm9vbCBtUmVhY2hlZEVPUzsKKyAgICBpbnQ2NF90IG1TdGFydFRpbWVzdGFtcFVzOworICAgIGludDY0X3QgbVByZXZpb3VzVHJhY2tUaW1lVXM7CisgICAgaW50NjRfdCBtVHJhY2tFdmVyeVRpbWVEdXJhdGlvblVzOworICAgIGludDMyX3QgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lczsKIAogICAgIHN0YXRpYyB2b2lkICpUaHJlYWRXcmFwcGVyKHZvaWQgKm1lKTsKICAgICB2b2lkIHRocmVhZEVudHJ5KCk7CiAKKyAgICBzdGF0dXNfdCBtYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoCisgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisgICAgdm9pZCB3cml0ZU9uZUNodW5rKGJvb2wgaXNBdmMpOworCisgICAgLy8gVHJhY2sgYXV0aG9yaW5nIHByb2dyZXNzIHN0YXR1cworICAgIHZvaWQgdHJhY2tQcm9ncmVzc1N0YXR1cyhpbnQzMl90IG5GcmFtZXMsIGludDY0X3QgdGltZVVzKTsKKyAgICB2b2lkIGluaXRUcmFja2luZ1Byb2dyZXNzU3RhdHVzKE1ldGFEYXRhICpwYXJhbXMpOworCisgICAgLy8gVXRpbGl0aWVzIGZvciBjb2xsZWN0aW5nIHN0YXRpc3RpY2FsIGRhdGEKKyAgICB2b2lkIGxvZ1N0YXRpc3RpY2FsRGF0YShib29sIGlzQXVkaW8pOworICAgIHZvaWQgZmluZE1pbkF2Z01heFNhbXBsZUR1cmF0aW9uTXMoCisgICAgICAgICAgICBpbnQzMl90ICptaW4sIGludDMyX3QgKmF2ZywgaW50MzJfdCAqbWF4KTsKKyAgICB2b2lkIGZpbmRNaW5NYXhDaHVua0R1cmF0aW9ucyhpbnQ2NF90ICptaW4sIGludDY0X3QgKm1heCk7CisKKyAgICB2b2lkIGdldENvZGVjU3BlY2lmaWNEYXRhRnJvbUlucHV0Rm9ybWF0SWZQb3NzaWJsZSgpOworCiAgICAgVHJhY2soY29uc3QgVHJhY2sgJik7CiAgICAgVHJhY2sgJm9wZXJhdG9yPShjb25zdCBUcmFjayAmKTsKIH07CiAKKyNkZWZpbmUgVVNFX05BTExFTl9GT1VSICAgICAgICAgMQorCiBNUEVHNFdyaXRlcjo6TVBFRzRXcml0ZXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAgICAgOiBtRmlsZShmb3BlbihmaWxlbmFtZSwgIndiIikpLAorICAgICAgbVVzZTMyQml0T2Zmc2V0KHRydWUpLAorICAgICAgbVBhdXNlZChmYWxzZSksCisgICAgICBtU3RhcnRlZChmYWxzZSksCiAgICAgICBtT2Zmc2V0KDApLAotICAgICAgbU1kYXRPZmZzZXQoMCkgeworICAgICAgbU1kYXRPZmZzZXQoMCksCisgICAgICBtRXN0aW1hdGVkTW9vdkJveFNpemUoMCksCisgICAgICBtSW50ZXJsZWF2ZUR1cmF0aW9uVXMoNTAwMDAwKSB7CiAgICAgQ0hFQ0sobUZpbGUgIT0gTlVMTCk7CiB9CiAKIE1QRUc0V3JpdGVyOjpNUEVHNFdyaXRlcihpbnQgZmQpCiAgICAgOiBtRmlsZShmZG9wZW4oZmQsICJ3YiIpKSwKKyAgICAgIG1Vc2UzMkJpdE9mZnNldCh0cnVlKSwKKyAgICAgIG1QYXVzZWQoZmFsc2UpLAorICAgICAgbVN0YXJ0ZWQoZmFsc2UpLAogICAgICAgbU9mZnNldCgwKSwKLSAgICAgIG1NZGF0T2Zmc2V0KDApIHsKKyAgICAgIG1NZGF0T2Zmc2V0KDApLAorICAgICAgbUVzdGltYXRlZE1vb3ZCb3hTaXplKDApLAorICAgICAgbUludGVybGVhdmVEdXJhdGlvblVzKDUwMDAwMCkgewogICAgIENIRUNLKG1GaWxlICE9IE5VTEwpOwogfQogCkBAIC0xMDAsMjMgKzE3NywxMCBAQAogICAgIHJldHVybiBPSzsKIH0KIAotc3RhdHVzX3QgTVBFRzRXcml0ZXI6OnN0YXJ0KCkgewotICAgIGlmIChtRmlsZSA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgIH0KLQotICAgIGJlZ2luQm94KCJmdHlwIik7Ci0gICAgICB3cml0ZUZvdXJjYygiaXNvbSIpOwotICAgICAgd3JpdGVJbnQzMigwKTsKLSAgICAgIHdyaXRlRm91cmNjKCJpc29tIik7Ci0gICAgZW5kQm94KCk7Ci0KLSAgICBtTWRhdE9mZnNldCA9IG1PZmZzZXQ7Ci0gICAgd3JpdGUoIlx4MDBceDAwXHgwMFx4MDFtZGF0Pz8/Pz8/Pz8iLCAxNik7Ci0KK3N0YXR1c190IE1QRUc0V3JpdGVyOjpzdGFydFRyYWNrcyhNZXRhRGF0YSAqcGFyYW1zKSB7CiAgICAgZm9yIChMaXN0PFRyYWNrICo+OjppdGVyYXRvciBpdCA9IG1UcmFja3MuYmVnaW4oKTsKICAgICAgICAgIGl0ICE9IG1UcmFja3MuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgc3RhdHVzX3QgZXJyID0gKCppdCktPnN0YXJ0KCk7CisgICAgICAgIHN0YXR1c190IGVyciA9ICgqaXQpLT5zdGFydChwYXJhbXMpOwogCiAgICAgICAgIGlmIChlcnIgIT0gT0spIHsKICAgICAgICAgICAgIGZvciAoTGlzdDxUcmFjayAqPjo6aXRlcmF0b3IgaXQyID0gbVRyYWNrcy5iZWdpbigpOwpAQCAtMTI3LDEwICsxOTEsMTQ2IEBACiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJuIE9LOwogfQogCitpbnQ2NF90IE1QRUc0V3JpdGVyOjplc3RpbWF0ZU1vb3ZCb3hTaXplKGludDMyX3QgYml0UmF0ZSkgeworICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgaGlnaGx5IGV4cGVyaW1lbnRhbC9oZXVyaXNpdGljLgorICAgIC8vCisgICAgLy8gU3RhdGlzdGljYWwgYW5hbHlzaXMgc2hvd3MgdGhhdCBtZXRhZGF0YSB1c3VhbGx5IGFjY291bnRzCisgICAgLy8gZm9yIGEgc21hbGwgcG9ydGlvbiBvZiB0aGUgdG90YWwgZmlsZSBzaXplLCB1c3VhbGx5IDwgMC42JS4KKyAgICAvLyBDdXJyZW50bHksIGxldHMgc2V0IHRvIDAuNCUgZm9yIG5vdy4KKworICAgIC8vIFRoZSBkZWZhdWx0IE1JTl9NT09WX0JPWF9TSVpFIGlzIHNldCB0byAwLjQlIHggMU1CLAorICAgIC8vIHdoZXJlIDFNQiBpcyB0aGUgY29tbW9uIGZpbGUgc2l6ZSBsaW1pdCBmb3IgTU1TIGFwcGxpY2F0aW9uLgorICAgIC8vIFRoZSBkZWZhdWx0IE1BWCBfTU9PVl9CT1hfU0laRSB2YWx1ZSBpcyBiYXNlZCBvbiBhYm91dCA0CisgICAgLy8gbWludXRlIHZpZGVvIHJlY29yZGluZyB3aXRoIGEgYml0IHJhdGUgYWJvdXQgMyBNYnBzLCBiZWNhdXNlCisgICAgLy8gc3RhdGlzdGljcyBhbHNvIHNob3cgdGhhdCBtb3N0IG9mIHRoZSB2aWRlbyBjYXB0dXJlZCBhcmUgZ29pbmcKKyAgICAvLyB0byBiZSBsZXNzIHRoYW4gMyBtaW51dGVzLgorCisgICAgLy8gSWYgdGhlIGVzdGltYXRpb24gaXMgd3JvbmcsIHdlIHdpbGwgcGF5IHRoZSBwcmljZSBvZiB3YXN0aW5nCisgICAgLy8gc29tZSByZXNlcnZlZCBzcGFjZS4gVGhpcyBzaG91bGQgbm90IGhhcHBlbiBzbyBvZnRlbiBzdGF0aXN0aWNhbGx5LgorICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IGZhY3RvciA9IG1Vc2UzMkJpdE9mZnNldD8gMTogMjsKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBNSU5fTU9PVl9CT1hfU0laRSA9IDQgKiAxMDI0OyAgLy8gNCBLQgorICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IE1BWF9NT09WX0JPWF9TSVpFID0gKDE4MCAqIDMwMDAwMDAgKiA2TEwgLyA4MDAwKTsKKyAgICBpbnQ2NF90IHNpemUgPSBNSU5fTU9PVl9CT1hfU0laRTsKKworICAgIGlmIChtTWF4RmlsZVNpemVMaW1pdEJ5dGVzICE9IDApIHsKKyAgICAgICAgc2l6ZSA9IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXMgKiA0IC8gMTAwMDsKKyAgICB9IGVsc2UgaWYgKG1NYXhGaWxlRHVyYXRpb25MaW1pdFVzICE9IDApIHsKKyAgICAgICAgaWYgKGJpdFJhdGUgPD0gMCkgeworICAgICAgICAgICAgLy8gV2UgY291bGQgbm90IGVzdGltYXRlIHRoZSBmaWxlIHNpemUgc2luY2UgYml0UmF0ZSBpcyBub3Qgc2V0LgorICAgICAgICAgICAgc2l6ZSA9IE1JTl9NT09WX0JPWF9TSVpFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZSA9ICgobU1heEZpbGVEdXJhdGlvbkxpbWl0VXMgKiBiaXRSYXRlICogNCkgLyAxMDAwIC8gODAwMDAwMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHNpemUgPCBNSU5fTU9PVl9CT1hfU0laRSkgeworICAgICAgICBzaXplID0gTUlOX01PT1ZfQk9YX1NJWkU7CisgICAgfQorCisgICAgLy8gQW55IGxvbmcgZHVyYXRpb24gcmVjb3JkaW5nIHdpbGwgYmUgcHJvYmFibHkgZW5kIHVwIHdpdGgKKyAgICAvLyBub24tc3RyZWFtYWJsZSBtcDQgZmlsZS4KKyAgICBpZiAoc2l6ZSA+IE1BWF9NT09WX0JPWF9TSVpFKSB7CisgICAgICAgIHNpemUgPSBNQVhfTU9PVl9CT1hfU0laRTsKKyAgICB9CisKKyAgICBMT0dJKCJsaW1pdHM6ICVsbGQvJWxsZCBieXRlcy91cywgYml0IHJhdGU6ICVkIGJwcyBhbmQgdGhlIGVzdGltYXRlZCIKKyAgICAgICAgICIgbW9vdiBzaXplICVsbGQgYnl0ZXMiLAorICAgICAgICAgbU1heEZpbGVTaXplTGltaXRCeXRlcywgbU1heEZpbGVEdXJhdGlvbkxpbWl0VXMsIGJpdFJhdGUsIHNpemUpOworICAgIHJldHVybiBmYWN0b3IgKiBzaXplOworfQorCitzdGF0dXNfdCBNUEVHNFdyaXRlcjo6c3RhcnQoTWV0YURhdGEgKnBhcmFtKSB7CisgICAgaWYgKG1GaWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgaW50MzJfdCB1c2U2NEJpdE9mZnNldDsKKyAgICBpZiAocGFyYW0gJiYKKyAgICAgICAgcGFyYW0tPmZpbmRJbnQzMihrS2V5NjRCaXRGaWxlT2Zmc2V0LCAmdXNlNjRCaXRPZmZzZXQpICYmCisgICAgICAgIHVzZTY0Qml0T2Zmc2V0KSB7CisgICAgICAgIG1Vc2UzMkJpdE9mZnNldCA9IGZhbHNlOworICAgIH0KKworICAgIC8vIFN5c3RlbSBwcm9wZXJ0eSBjYW4gb3ZlcndyaXRlIHRoZSBmaWxlIG9mZnNldCBiaXRzIHBhcmFtZXRlcgorICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKKyAgICBpZiAocHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5yZWNvcmQtNjRiaXRzIiwgdmFsdWUsIE5VTEwpCisgICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgeworICAgICAgICBtVXNlMzJCaXRPZmZzZXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBtU3RhcnRUaW1lc3RhbXBVcyA9IC0xOworCisgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIGlmIChtUGF1c2VkKSB7CisgICAgICAgICAgICBtUGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gc3RhcnRUcmFja3MocGFyYW0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBtU3RyZWFtYWJsZUZpbGUgPSB0cnVlOworICAgIG1Xcml0ZU1vb3ZCb3hUb01lbW9yeSA9IGZhbHNlOworICAgIG1Nb292Qm94QnVmZmVyID0gTlVMTDsKKyAgICBtTW9vdkJveEJ1ZmZlck9mZnNldCA9IDA7CisKKyAgICBiZWdpbkJveCgiZnR5cCIpOworICAgICAgeworICAgICAgICBpbnQzMl90IGZpbGVUeXBlOworICAgICAgICBpZiAocGFyYW0gJiYgcGFyYW0tPmZpbmRJbnQzMihrS2V5RmlsZVR5cGUsICZmaWxlVHlwZSkgJiYKKyAgICAgICAgICAgIGZpbGVUeXBlICE9IE9VVFBVVF9GT1JNQVRfTVBFR180KSB7CisgICAgICAgICAgICB3cml0ZUZvdXJjYygiM2dwNCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3JpdGVGb3VyY2MoImlzb20iKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgd3JpdGVJbnQzMigwKTsKKyAgICAgIHdyaXRlRm91cmNjKCJpc29tIik7CisgICAgICB3cml0ZUZvdXJjYygiM2dwNCIpOworICAgIGVuZEJveCgpOworCisgICAgbUZyZWVCb3hPZmZzZXQgPSBtT2Zmc2V0OworCisgICAgaWYgKG1Fc3RpbWF0ZWRNb292Qm94U2l6ZSA9PSAwKSB7CisgICAgICAgIGludDMyX3QgYml0UmF0ZSA9IC0xOworICAgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgICAgIHBhcmFtLT5maW5kSW50MzIoa0tleUJpdFJhdGUsICZiaXRSYXRlKTsKKyAgICAgICAgfQorICAgICAgICBtRXN0aW1hdGVkTW9vdkJveFNpemUgPSBlc3RpbWF0ZU1vb3ZCb3hTaXplKGJpdFJhdGUpOworICAgIH0KKyAgICBDSEVDSyhtRXN0aW1hdGVkTW9vdkJveFNpemUgPj0gOCk7CisgICAgZnNlZWtvKG1GaWxlLCBtRnJlZUJveE9mZnNldCwgU0VFS19TRVQpOworICAgIHdyaXRlSW50MzIobUVzdGltYXRlZE1vb3ZCb3hTaXplKTsKKyAgICB3cml0ZSgiZnJlZSIsIDQpOworCisgICAgbU1kYXRPZmZzZXQgPSBtRnJlZUJveE9mZnNldCArIG1Fc3RpbWF0ZWRNb292Qm94U2l6ZTsKKyAgICBtT2Zmc2V0ID0gbU1kYXRPZmZzZXQ7CisgICAgZnNlZWtvKG1GaWxlLCBtTWRhdE9mZnNldCwgU0VFS19TRVQpOworICAgIGlmIChtVXNlMzJCaXRPZmZzZXQpIHsKKyAgICAgICAgd3JpdGUoIj8/Pz9tZGF0IiwgOCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd3JpdGUoIlx4MDBceDAwXHgwMFx4MDFtZGF0Pz8/Pz8/Pz8iLCAxNik7CisgICAgfQorICAgIHN0YXR1c190IGVyciA9IHN0YXJ0VHJhY2tzKHBhcmFtKTsKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorICAgIG1TdGFydGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgTVBFRzRXcml0ZXI6OnBhdXNlKCkgeworICAgIGlmIChtRmlsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbVBhdXNlZCA9IHRydWU7CisgICAgZm9yIChMaXN0PFRyYWNrICo+OjppdGVyYXRvciBpdCA9IG1UcmFja3MuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1UcmFja3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgKCppdCktPnBhdXNlKCk7CisgICAgfQorfQorCiB2b2lkIE1QRUc0V3JpdGVyOjpzdG9wKCkgewogICAgIGlmIChtRmlsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybjsKQEAgLTE0NywxNCArMzQ3LDI4IEBACiAgICAgICAgIH0KICAgICB9CiAKKwogICAgIC8vIEZpeCB1cCB0aGUgc2l6ZSBvZiB0aGUgJ21kYXQnIGNodW5rLgotICAgIGZzZWVrKG1GaWxlLCBtTWRhdE9mZnNldCArIDgsIFNFRUtfU0VUKTsKLSAgICBpbnQ2NF90IHNpemUgPSBtT2Zmc2V0IC0gbU1kYXRPZmZzZXQ7Ci0gICAgc2l6ZSA9IGh0b242NChzaXplKTsKLSAgICBmd3JpdGUoJnNpemUsIDEsIDgsIG1GaWxlKTsKLSAgICBmc2VlayhtRmlsZSwgbU9mZnNldCwgU0VFS19TRVQpOworICAgIGlmIChtVXNlMzJCaXRPZmZzZXQpIHsKKyAgICAgICAgZnNlZWtvKG1GaWxlLCBtTWRhdE9mZnNldCwgU0VFS19TRVQpOworICAgICAgICBpbnQzMl90IHNpemUgPSBodG9ubChzdGF0aWNfY2FzdDxpbnQzMl90PihtT2Zmc2V0IC0gbU1kYXRPZmZzZXQpKTsKKyAgICAgICAgZndyaXRlKCZzaXplLCAxLCA0LCBtRmlsZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnNlZWtvKG1GaWxlLCBtTWRhdE9mZnNldCArIDgsIFNFRUtfU0VUKTsKKyAgICAgICAgaW50NjRfdCBzaXplID0gbU9mZnNldCAtIG1NZGF0T2Zmc2V0OworICAgICAgICBzaXplID0gaHRvbjY0KHNpemUpOworICAgICAgICBmd3JpdGUoJnNpemUsIDEsIDgsIG1GaWxlKTsKKyAgICB9CisgICAgZnNlZWtvKG1GaWxlLCBtT2Zmc2V0LCBTRUVLX1NFVCk7CiAKICAgICB0aW1lX3Qgbm93ID0gdGltZShOVUxMKTsKKyAgICBjb25zdCBvZmZfdCBtb292T2Zmc2V0ID0gbU9mZnNldDsKKyAgICBtV3JpdGVNb292Qm94VG9NZW1vcnkgPSB0cnVlOworICAgIG1Nb292Qm94QnVmZmVyID0gKHVpbnQ4X3QgKikgbWFsbG9jKG1Fc3RpbWF0ZWRNb292Qm94U2l6ZSk7CisgICAgbU1vb3ZCb3hCdWZmZXJPZmZzZXQgPSAwOworICAgIENIRUNLKG1Nb292Qm94QnVmZmVyICE9IE5VTEwpOworICAgIGludDMyX3QgdGltZVNjYWxlID0gMTAwMDsKKyAgICBpbnQzMl90IGR1cmF0aW9uID0gbWF4X2R1cmF0aW9uIC8gdGltZVNjYWxlOwogCiAgICAgYmVnaW5Cb3goIm1vb3YiKTsKIApAQCAtMTYyLDkgKzM3Niw5IEBACiAgICAgICAgIHdyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9MAogICAgICAgICB3cml0ZUludDMyKG5vdyk7ICAgICAgICAgICAvLyBjcmVhdGlvbiB0aW1lCiAgICAgICAgIHdyaXRlSW50MzIobm93KTsgICAgICAgICAgIC8vIG1vZGlmaWNhdGlvbiB0aW1lCi0gICAgICAgIHdyaXRlSW50MzIoMTAwMCk7ICAgICAgICAgIC8vIHRpbWVzY2FsZQotICAgICAgICB3cml0ZUludDMyKG1heF9kdXJhdGlvbiAvIDEwMDApOwotICAgICAgICB3cml0ZUludDMyKDB4MTAwMDApOyAgICAgICAvLyByYXRlCisgICAgICAgIHdyaXRlSW50MzIodGltZVNjYWxlKTsgICAgICAgICAgLy8gdGltZXNjYWxlCisgICAgICAgIHdyaXRlSW50MzIoZHVyYXRpb24pOworICAgICAgICB3cml0ZUludDMyKDB4MTAwMDApOyAgICAgICAvLyByYXRlOiAxLjAKICAgICAgICAgd3JpdGVJbnQxNigweDEwMCk7ICAgICAgICAgLy8gdm9sdW1lCiAgICAgICAgIHdyaXRlSW50MTYoMCk7ICAgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgIHdyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHJlc2VydmVkCkBAIC0xOTAsMTkgKzQwNCw1NCBAQAogICAgICAgaW50MzJfdCBpZCA9IDE7CiAgICAgICBmb3IgKExpc3Q8VHJhY2sgKj46Oml0ZXJhdG9yIGl0ID0gbVRyYWNrcy5iZWdpbigpOwogICAgICAgICAgICBpdCAhPSBtVHJhY2tzLmVuZCgpOyArK2l0LCArK2lkKSB7Ci0gICAgICAgICAgKCppdCktPndyaXRlVHJhY2tIZWFkZXIoaWQpOworICAgICAgICAgICgqaXQpLT53cml0ZVRyYWNrSGVhZGVyKGlkLCBtVXNlMzJCaXRPZmZzZXQpOwogICAgICAgfQogICAgIGVuZEJveCgpOyAgLy8gbW9vdgogCisgICAgbVdyaXRlTW9vdkJveFRvTWVtb3J5ID0gZmFsc2U7CisgICAgaWYgKG1TdHJlYW1hYmxlRmlsZSkgeworICAgICAgICBDSEVDSyhtTW9vdkJveEJ1ZmZlck9mZnNldCArIDggPD0gbUVzdGltYXRlZE1vb3ZCb3hTaXplKTsKKworICAgICAgICAvLyBNb292IGJveAorICAgICAgICBmc2Vla28obUZpbGUsIG1GcmVlQm94T2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgICAgIG1PZmZzZXQgPSBtRnJlZUJveE9mZnNldDsKKyAgICAgICAgd3JpdGUobU1vb3ZCb3hCdWZmZXIsIDEsIG1Nb292Qm94QnVmZmVyT2Zmc2V0LCBtRmlsZSk7CisKKyAgICAgICAgLy8gRnJlZSBib3gKKyAgICAgICAgZnNlZWtvKG1GaWxlLCBtT2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgICAgIHdyaXRlSW50MzIobUVzdGltYXRlZE1vb3ZCb3hTaXplIC0gbU1vb3ZCb3hCdWZmZXJPZmZzZXQpOworICAgICAgICB3cml0ZSgiZnJlZSIsIDQpOworCisgICAgICAgIC8vIEZyZWUgdGVtcCBtZW1vcnkKKyAgICAgICAgZnJlZShtTW9vdkJveEJ1ZmZlcik7CisgICAgICAgIG1Nb292Qm94QnVmZmVyID0gTlVMTDsKKyAgICAgICAgbU1vb3ZCb3hCdWZmZXJPZmZzZXQgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR0koIlRoZSBtcDQgZmlsZSB3aWxsIG5vdCBiZSBzdHJlYW1hYmxlLiIpOworICAgIH0KKwogICAgIENIRUNLKG1Cb3hlcy5lbXB0eSgpKTsKIAorICAgIGZmbHVzaChtRmlsZSk7CiAgICAgZmNsb3NlKG1GaWxlKTsKICAgICBtRmlsZSA9IE5VTEw7CisgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKIH0KIAotb2ZmX3QgTVBFRzRXcml0ZXI6OmFkZFNhbXBsZShNZWRpYUJ1ZmZlciAqYnVmZmVyKSB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKK3N0YXR1c190IE1QRUc0V3JpdGVyOjpzZXRJbnRlcmxlYXZlRHVyYXRpb24odWludDMyX3QgZHVyYXRpb25VcykgeworICAgIG1JbnRlcmxlYXZlRHVyYXRpb25VcyA9IGR1cmF0aW9uVXM7CisgICAgcmV0dXJuIE9LOworfQogCit2b2lkIE1QRUc0V3JpdGVyOjpsb2NrKCkgeworICAgIG1Mb2NrLmxvY2soKTsKK30KKwordm9pZCBNUEVHNFdyaXRlcjo6dW5sb2NrKCkgeworICAgIG1Mb2NrLnVubG9jaygpOworfQorCitvZmZfdCBNUEVHNFdyaXRlcjo6YWRkU2FtcGxlX2woTWVkaWFCdWZmZXIgKmJ1ZmZlcikgewogICAgIG9mZl90IG9sZF9vZmZzZXQgPSBtT2Zmc2V0OwogCiAgICAgZndyaXRlKChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLApAQCAtMjEzLDMxICs0NjIsOTEgQEAKICAgICByZXR1cm4gb2xkX29mZnNldDsKIH0KIAotb2ZmX3QgTVBFRzRXcml0ZXI6OmFkZExlbmd0aFByZWZpeGVkU2FtcGxlKE1lZGlhQnVmZmVyICpidWZmZXIpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworc3RhdGljIHZvaWQgU3RyaXBTdGFydGNvZGUoTWVkaWFCdWZmZXIgKmJ1ZmZlcikgeworICAgIGlmIChidWZmZXItPnJhbmdlX2xlbmd0aCgpIDwgNCkgeworICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgY29uc3QgdWludDhfdCAqcHRyID0KKyAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CisKKyAgICBpZiAoIW1lbWNtcChwdHIsICJceDAwXHgwMFx4MDBceDAxIiwgNCkpIHsKKyAgICAgICAgYnVmZmVyLT5zZXRfcmFuZ2UoCisgICAgICAgICAgICAgICAgYnVmZmVyLT5yYW5nZV9vZmZzZXQoKSArIDQsIGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgLSA0KTsKKyAgICB9Cit9CisKK29mZl90IE1QRUc0V3JpdGVyOjphZGRMZW5ndGhQcmVmaXhlZFNhbXBsZV9sKE1lZGlhQnVmZmVyICpidWZmZXIpIHsKICAgICBvZmZfdCBvbGRfb2Zmc2V0ID0gbU9mZnNldDsKIAogICAgIHNpemVfdCBsZW5ndGggPSBidWZmZXItPnJhbmdlX2xlbmd0aCgpOworCisjaWYgVVNFX05BTExFTl9GT1VSCisgICAgdWludDhfdCB4ID0gbGVuZ3RoID4+IDI0OworICAgIGZ3cml0ZSgmeCwgMSwgMSwgbUZpbGUpOworICAgIHggPSAobGVuZ3RoID4+IDE2KSAmIDB4ZmY7CisgICAgZndyaXRlKCZ4LCAxLCAxLCBtRmlsZSk7CisgICAgeCA9IChsZW5ndGggPj4gOCkgJiAweGZmOworICAgIGZ3cml0ZSgmeCwgMSwgMSwgbUZpbGUpOworICAgIHggPSBsZW5ndGggJiAweGZmOworICAgIGZ3cml0ZSgmeCwgMSwgMSwgbUZpbGUpOworI2Vsc2UKICAgICBDSEVDSyhsZW5ndGggPCA2NTUzNik7CiAKICAgICB1aW50OF90IHggPSBsZW5ndGggPj4gODsKICAgICBmd3JpdGUoJngsIDEsIDEsIG1GaWxlKTsKICAgICB4ID0gbGVuZ3RoICYgMHhmZjsKICAgICBmd3JpdGUoJngsIDEsIDEsIG1GaWxlKTsKKyNlbmRpZgogCiAgICAgZndyaXRlKChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAogICAgICAgICAgICAxLCBsZW5ndGgsIG1GaWxlKTsKIAorI2lmIFVTRV9OQUxMRU5fRk9VUgorICAgIG1PZmZzZXQgKz0gbGVuZ3RoICsgNDsKKyNlbHNlCiAgICAgbU9mZnNldCArPSBsZW5ndGggKyAyOworI2VuZGlmCiAKICAgICByZXR1cm4gb2xkX29mZnNldDsKIH0KIAorc2l6ZV90IE1QRUc0V3JpdGVyOjp3cml0ZSgKKyAgICAgICAgY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCBGSUxFICpzdHJlYW0pIHsKKworICAgIGNvbnN0IHNpemVfdCBieXRlcyA9IHNpemUgKiBubWVtYjsKKyAgICBpZiAobVdyaXRlTW9vdkJveFRvTWVtb3J5KSB7CisgICAgICAgIG9mZl90IG1vb3ZCb3hTaXplID0gOCArIG1Nb292Qm94QnVmZmVyT2Zmc2V0ICsgYnl0ZXM7CisgICAgICAgIGlmIChtb292Qm94U2l6ZSA+IG1Fc3RpbWF0ZWRNb292Qm94U2l6ZSkgeworICAgICAgICAgICAgZm9yIChMaXN0PG9mZl90Pjo6aXRlcmF0b3IgaXQgPSBtQm94ZXMuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgaXQgIT0gbUJveGVzLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICAgICAgKCppdCkgKz0gbU9mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZzZWVrbyhtRmlsZSwgbU9mZnNldCwgU0VFS19TRVQpOworICAgICAgICAgICAgZndyaXRlKG1Nb292Qm94QnVmZmVyLCAxLCBtTW9vdkJveEJ1ZmZlck9mZnNldCwgc3RyZWFtKTsKKyAgICAgICAgICAgIGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCBzdHJlYW0pOworICAgICAgICAgICAgbU9mZnNldCArPSAoYnl0ZXMgKyBtTW9vdkJveEJ1ZmZlck9mZnNldCk7CisgICAgICAgICAgICBmcmVlKG1Nb292Qm94QnVmZmVyKTsKKyAgICAgICAgICAgIG1Nb292Qm94QnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIG1Nb292Qm94QnVmZmVyT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIG1Xcml0ZU1vb3ZCb3hUb01lbW9yeSA9IGZhbHNlOworICAgICAgICAgICAgbVN0cmVhbWFibGVGaWxlID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkobU1vb3ZCb3hCdWZmZXIgKyBtTW9vdkJveEJ1ZmZlck9mZnNldCwgcHRyLCBieXRlcyk7CisgICAgICAgICAgICBtTW9vdkJveEJ1ZmZlck9mZnNldCArPSBieXRlczsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCBzdHJlYW0pOworICAgICAgICBtT2Zmc2V0ICs9IGJ5dGVzOworICAgIH0KKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKIHZvaWQgTVBFRzRXcml0ZXI6OmJlZ2luQm94KGNvbnN0IGNoYXIgKmZvdXJjYykgewogICAgIENIRUNLX0VRKHN0cmxlbihmb3VyY2MpLCA0KTsKIAotICAgIG1Cb3hlcy5wdXNoX2JhY2sobU9mZnNldCk7CisgICAgbUJveGVzLnB1c2hfYmFjayhtV3JpdGVNb292Qm94VG9NZW1vcnk/CisgICAgICAgICAgICBtTW9vdkJveEJ1ZmZlck9mZnNldDogbU9mZnNldCk7CiAKICAgICB3cml0ZUludDMyKDApOwogICAgIHdyaXRlRm91cmNjKGZvdXJjYyk7CkBAIC0yNDksNTEgKzU1OCw3NyBAQAogICAgIG9mZl90IG9mZnNldCA9ICotLW1Cb3hlcy5lbmQoKTsKICAgICBtQm94ZXMuZXJhc2UoLS1tQm94ZXMuZW5kKCkpOwogCi0gICAgZnNlZWsobUZpbGUsIG9mZnNldCwgU0VFS19TRVQpOwotICAgIHdyaXRlSW50MzIobU9mZnNldCAtIG9mZnNldCk7Ci0gICAgbU9mZnNldCAtPSA0OwotICAgIGZzZWVrKG1GaWxlLCBtT2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgaWYgKG1Xcml0ZU1vb3ZCb3hUb01lbW9yeSkgeworICAgICAgIGludDMyX3QgeCA9IGh0b25sKG1Nb292Qm94QnVmZmVyT2Zmc2V0IC0gb2Zmc2V0KTsKKyAgICAgICBtZW1jcHkobU1vb3ZCb3hCdWZmZXIgKyBvZmZzZXQsICZ4LCA0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmc2Vla28obUZpbGUsIG9mZnNldCwgU0VFS19TRVQpOworICAgICAgICB3cml0ZUludDMyKG1PZmZzZXQgLSBvZmZzZXQpOworICAgICAgICBtT2Zmc2V0IC09IDQ7CisgICAgICAgIGZzZWVrbyhtRmlsZSwgbU9mZnNldCwgU0VFS19TRVQpOworICAgIH0KIH0KIAogdm9pZCBNUEVHNFdyaXRlcjo6d3JpdGVJbnQ4KGludDhfdCB4KSB7Ci0gICAgZndyaXRlKCZ4LCAxLCAxLCBtRmlsZSk7Ci0gICAgKyttT2Zmc2V0OworICAgIHdyaXRlKCZ4LCAxLCAxLCBtRmlsZSk7CiB9CiAKIHZvaWQgTVBFRzRXcml0ZXI6OndyaXRlSW50MTYoaW50MTZfdCB4KSB7CiAgICAgeCA9IGh0b25zKHgpOwotICAgIGZ3cml0ZSgmeCwgMSwgMiwgbUZpbGUpOwotICAgIG1PZmZzZXQgKz0gMjsKKyAgICB3cml0ZSgmeCwgMSwgMiwgbUZpbGUpOwogfQogCiB2b2lkIE1QRUc0V3JpdGVyOjp3cml0ZUludDMyKGludDMyX3QgeCkgewogICAgIHggPSBodG9ubCh4KTsKLSAgICBmd3JpdGUoJngsIDEsIDQsIG1GaWxlKTsKLSAgICBtT2Zmc2V0ICs9IDQ7CisgICAgd3JpdGUoJngsIDEsIDQsIG1GaWxlKTsKIH0KIAogdm9pZCBNUEVHNFdyaXRlcjo6d3JpdGVJbnQ2NChpbnQ2NF90IHgpIHsKICAgICB4ID0gaHRvbjY0KHgpOwotICAgIGZ3cml0ZSgmeCwgMSwgOCwgbUZpbGUpOwotICAgIG1PZmZzZXQgKz0gODsKKyAgICB3cml0ZSgmeCwgMSwgOCwgbUZpbGUpOwogfQogCiB2b2lkIE1QRUc0V3JpdGVyOjp3cml0ZUNTdHJpbmcoY29uc3QgY2hhciAqcykgewogICAgIHNpemVfdCBuID0gc3RybGVuKHMpOwotCi0gICAgZndyaXRlKHMsIDEsIG4gKyAxLCBtRmlsZSk7Ci0gICAgbU9mZnNldCArPSBuICsgMTsKKyAgICB3cml0ZShzLCAxLCBuICsgMSwgbUZpbGUpOwogfQogCiB2b2lkIE1QRUc0V3JpdGVyOjp3cml0ZUZvdXJjYyhjb25zdCBjaGFyICpzKSB7CiAgICAgQ0hFQ0tfRVEoc3RybGVuKHMpLCA0KTsKLSAgICBmd3JpdGUocywgMSwgNCwgbUZpbGUpOwotICAgIG1PZmZzZXQgKz0gNDsKKyAgICB3cml0ZShzLCAxLCA0LCBtRmlsZSk7CiB9CiAKIHZvaWQgTVBFRzRXcml0ZXI6OndyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgZndyaXRlKGRhdGEsIDEsIHNpemUsIG1GaWxlKTsKLSAgICBtT2Zmc2V0ICs9IHNpemU7CisgICAgd3JpdGUoZGF0YSwgMSwgc2l6ZSwgbUZpbGUpOworfQorCitib29sIE1QRUc0V3JpdGVyOjpleGNlZWRzRmlsZVNpemVMaW1pdCgpIHsKKyAgICAvLyBObyBsaW1pdAorICAgIGlmIChtTWF4RmlsZVNpemVMaW1pdEJ5dGVzID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGludDY0X3QgblRvdGFsQnl0ZXNFc3RpbWF0ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG1Fc3RpbWF0ZWRNb292Qm94U2l6ZSk7CisgICAgZm9yIChMaXN0PFRyYWNrICo+OjppdGVyYXRvciBpdCA9IG1UcmFja3MuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1UcmFja3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgblRvdGFsQnl0ZXNFc3RpbWF0ZSArPSAoKml0KS0+Z2V0RXN0aW1hdGVkVHJhY2tTaXplQnl0ZXMoKTsKKyAgICB9CisgICAgcmV0dXJuIChuVG90YWxCeXRlc0VzdGltYXRlID49IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXMpOworfQorCitib29sIE1QRUc0V3JpdGVyOjpleGNlZWRzRmlsZUR1cmF0aW9uTGltaXQoKSB7CisgICAgLy8gTm8gbGltaXQKKyAgICBpZiAobU1heEZpbGVEdXJhdGlvbkxpbWl0VXMgPT0gMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChMaXN0PFRyYWNrICo+OjppdGVyYXRvciBpdCA9IG1UcmFja3MuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1UcmFja3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5nZXREdXJhdGlvblVzKCkgPj0gbU1heEZpbGVEdXJhdGlvbkxpbWl0VXMpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBNUEVHNFdyaXRlcjo6cmVhY2hlZEVPUygpIHsKQEAgLTMwOSw2ICs2NDQsMjcgQEAKICAgICByZXR1cm4gYWxsRG9uZTsKIH0KIAordm9pZCBNUEVHNFdyaXRlcjo6c2V0U3RhcnRUaW1lc3RhbXBVcyhpbnQ2NF90IHRpbWVVcykgeworICAgIExPR0koInNldFN0YXJ0VGltZXN0YW1wVXM6ICVsbGQiLCB0aW1lVXMpOworICAgIENIRUNLKHRpbWVVcyA+PSAwKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIGlmIChtU3RhcnRUaW1lc3RhbXBVcyA8IDAgfHwgbVN0YXJ0VGltZXN0YW1wVXMgPiB0aW1lVXMpIHsKKyAgICAgICAgbVN0YXJ0VGltZXN0YW1wVXMgPSB0aW1lVXM7CisgICAgICAgIExPR0koIkVhcmxpZXN0IHRyYWNrIHN0YXJ0aW5nIHRpbWU6ICVsbGQiLCBtU3RhcnRUaW1lc3RhbXBVcyk7CisgICAgfQorfQorCitpbnQ2NF90IE1QRUc0V3JpdGVyOjpnZXRTdGFydFRpbWVzdGFtcFVzKCkgeworICAgIExPR0koImdldFN0YXJ0VGltZXN0YW1wVXM6ICVsbGQiLCBtU3RhcnRUaW1lc3RhbXBVcyk7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICByZXR1cm4gbVN0YXJ0VGltZXN0YW1wVXM7Cit9CisKK3NpemVfdCBNUEVHNFdyaXRlcjo6bnVtVHJhY2tzKCkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvbG9jayhtTG9jayk7CisgICAgcmV0dXJuIG1UcmFja3Muc2l6ZSgpOworfQorCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBNUEVHNFdyaXRlcjo6VHJhY2s6OlRyYWNrKApAQCAtMzE3LDEwICs2NzMsNDcgQEAKICAgICAgIG1NZXRhKHNvdXJjZS0+Z2V0Rm9ybWF0KCkpLAogICAgICAgbVNvdXJjZShzb3VyY2UpLAogICAgICAgbURvbmUoZmFsc2UpLAorICAgICAgbVBhdXNlZChmYWxzZSksCisgICAgICBtUmVzdW1lZChmYWxzZSksCiAgICAgICBtTWF4VGltZVN0YW1wVXMoMCksCisgICAgICBtRXN0aW1hdGVkVHJhY2tTaXplQnl0ZXMoMCksCisgICAgICBtU2FtcGxlc0hhdmVTYW1lU2l6ZSh0cnVlKSwKICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YShOVUxMKSwKICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUoMCksCisgICAgICBtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEoZmFsc2UpLAogICAgICAgbVJlYWNoZWRFT1MoZmFsc2UpIHsKKyAgICBnZXRDb2RlY1NwZWNpZmljRGF0YUZyb21JbnB1dEZvcm1hdElmUG9zc2libGUoKTsKK30KKwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OmdldENvZGVjU3BlY2lmaWNEYXRhRnJvbUlucHV0Rm9ybWF0SWZQb3NzaWJsZSgpIHsKKyAgICBjb25zdCBjaGFyICptaW1lOworICAgIENIRUNLKG1NZXRhLT5maW5kQ1N0cmluZyhrS2V5TUlNRVR5cGUsICZtaW1lKSk7CisKKyAgICBpZiAoIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKSkgeworICAgICAgICB1aW50MzJfdCB0eXBlOworICAgICAgICBjb25zdCB2b2lkICpkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICAgICAgaWYgKG1NZXRhLT5maW5kRGF0YShrS2V5QVZDQywgJnR5cGUsICZkYXRhLCAmc2l6ZSkpIHsKKyAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YSA9IG1hbGxvYyhzaXplKTsKKyAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUgPSBzaXplOworICAgICAgICAgICAgbWVtY3B5KG1Db2RlY1NwZWNpZmljRGF0YSwgZGF0YSwgc2l6ZSk7CisgICAgICAgICAgICBtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICghc3RyY2FzZWNtcChtaW1lLCBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCkKKyAgICAgICAgICAgIHx8ICFzdHJjYXNlY21wKG1pbWUsIE1FRElBX01JTUVUWVBFX0FVRElPX0FBQykpIHsKKyAgICAgICAgdWludDMyX3QgdHlwZTsKKyAgICAgICAgY29uc3Qgdm9pZCAqZGF0YTsKKyAgICAgICAgc2l6ZV90IHNpemU7CisgICAgICAgIGlmIChtTWV0YS0+ZmluZERhdGEoa0tleUVTRFMsICZ0eXBlLCAmZGF0YSwgJnNpemUpKSB7CisgICAgICAgICAgICBFU0RTIGVzZHMoZGF0YSwgc2l6ZSk7CisgICAgICAgICAgICBpZiAoZXNkcy5nZXRDb2RlY1NwZWNpZmljSW5mbygmZGF0YSwgJnNpemUpID09IE9LKSB7CisgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhID0gbWFsbG9jKHNpemUpOworICAgICAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUgPSBzaXplOworICAgICAgICAgICAgICAgIG1lbWNweShtQ29kZWNTcGVjaWZpY0RhdGEsIGRhdGEsIHNpemUpOworICAgICAgICAgICAgICAgIG1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiB9CiAKIE1QRUc0V3JpdGVyOjpUcmFjazo6flRyYWNrKCkgewpAQCAtMzMyLDkgKzcyNSw0NyBAQAogICAgIH0KIH0KIAotc3RhdHVzX3QgTVBFRzRXcml0ZXI6OlRyYWNrOjpzdGFydCgpIHsKLSAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5zdGFydCgpOwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OmluaXRUcmFja2luZ1Byb2dyZXNzU3RhdHVzKE1ldGFEYXRhICpwYXJhbXMpIHsKKyAgICBMT0dWKCJpbml0VHJhY2tpbmdQcm9ncmVzc1N0YXR1cyIpOworICAgIG1QcmV2aW91c1RyYWNrVGltZVVzID0gLTE7CisgICAgbVRyYWNraW5nUHJvZ3Jlc3NTdGF0dXMgPSBmYWxzZTsKKyAgICBtVHJhY2tFdmVyeVRpbWVEdXJhdGlvblVzID0gMDsKKyAgICBtVHJhY2tFdmVyeU51bWJlck9mRnJhbWVzID0gMDsKKyAgICB7CisgICAgICAgIGludDY0X3QgdGltZVVzOworICAgICAgICBpZiAocGFyYW1zICYmIHBhcmFtcy0+ZmluZEludDY0KGtLZXlUcmFja1RpbWVTdGF0dXMsICZ0aW1lVXMpKSB7CisgICAgICAgICAgICBMT0dWKCJSZWNlaXZlIHJlcXVlc3QgdG8gdHJhY2sgcHJvZ3Jlc3Mgc3RhdHVzIGZvciBldmVyeSAlbGxkIHVzIiwgdGltZVVzKTsKKyAgICAgICAgICAgIG1UcmFja0V2ZXJ5VGltZUR1cmF0aW9uVXMgPSB0aW1lVXM7CisgICAgICAgICAgICBtVHJhY2tpbmdQcm9ncmVzc1N0YXR1cyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgeworICAgICAgICBpbnQzMl90IG5GcmFtZXM7CisgICAgICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zLT5maW5kSW50MzIoa0tleVRyYWNrRnJhbWVTdGF0dXMsICZuRnJhbWVzKSkgeworICAgICAgICAgICAgTE9HVigiUmVjZWl2ZSByZXF1ZXN0IHRvIHRyYWNrIHByb2dyZXNzIHN0YXR1cyBmb3IgZXZlcnkgJWQgZnJhbWVzIiwgbkZyYW1lcyk7CisgICAgICAgICAgICBtVHJhY2tFdmVyeU51bWJlck9mRnJhbWVzID0gbkZyYW1lczsKKyAgICAgICAgICAgIG1UcmFja2luZ1Byb2dyZXNzU3RhdHVzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK30KIAorc3RhdHVzX3QgTVBFRzRXcml0ZXI6OlRyYWNrOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CisgICAgaWYgKCFtRG9uZSAmJiBtUGF1c2VkKSB7CisgICAgICAgIG1QYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgbVJlc3VtZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgaW50NjRfdCBzdGFydFRpbWVVczsKKyAgICBpZiAocGFyYW1zID09IE5VTEwgfHwgIXBhcmFtcy0+ZmluZEludDY0KGtLZXlUaW1lLCAmc3RhcnRUaW1lVXMpKSB7CisgICAgICAgIHN0YXJ0VGltZVVzID0gMDsKKyAgICB9CisKKyAgICBpbml0VHJhY2tpbmdQcm9ncmVzc1N0YXR1cyhwYXJhbXMpOworCisgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7CisgICAgbWV0YS0+c2V0SW50NjQoa0tleVRpbWUsIHN0YXJ0VGltZVVzKTsKKyAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5zdGFydChtZXRhLmdldCgpKTsKICAgICBpZiAoZXJyICE9IE9LKSB7CiAgICAgICAgIG1Eb25lID0gbVJlYWNoZWRFT1MgPSB0cnVlOwogICAgICAgICByZXR1cm4gZXJyOwpAQCAtMzQ3LDYgKzc3OCw3IEBACiAgICAgbURvbmUgPSBmYWxzZTsKICAgICBtTWF4VGltZVN0YW1wVXMgPSAwOwogICAgIG1SZWFjaGVkRU9TID0gZmFsc2U7CisgICAgbUVzdGltYXRlZFRyYWNrU2l6ZUJ5dGVzID0gMDsKIAogICAgIHB0aHJlYWRfY3JlYXRlKCZtVGhyZWFkLCAmYXR0ciwgVGhyZWFkV3JhcHBlciwgdGhpcyk7CiAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpOwpAQCAtMzU0LDYgKzc4NiwxMCBAQAogICAgIHJldHVybiBPSzsKIH0KIAordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OnBhdXNlKCkgeworICAgIG1QYXVzZWQgPSB0cnVlOworfQorCiB2b2lkIE1QRUc0V3JpdGVyOjpUcmFjazo6c3RvcCgpIHsKICAgICBpZiAobURvbmUpIHsKICAgICAgICAgcmV0dXJuOwpAQCAtMzgwLDczICs4MTYsMTc1IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpbmNsdWRlIDxjdHlwZS5oPgorc3RhdGljIHZvaWQgaGV4ZHVtcChjb25zdCB2b2lkICpfZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gKGNvbnN0IHVpbnQ4X3QgKilfZGF0YTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAob2Zmc2V0IDwgc2l6ZSkgeworICAgICAgICBwcmludGYoIjB4JTA0eCAgIiwgb2Zmc2V0KTsKKworICAgICAgICBzaXplX3QgbiA9IHNpemUgLSBvZmZzZXQ7CisgICAgICAgIGlmIChuID4gMTYpIHsKKyAgICAgICAgICAgIG4gPSAxNjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPT0gOCkgeworICAgICAgICAgICAgICAgIHByaW50ZigiICIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAob2Zmc2V0ICsgaSA8IHNpemUpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiUwMnggIiwgZGF0YVtvZmZzZXQgKyBpXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50ZigiICAgIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcmludGYoIiAiKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKGlzcHJpbnQoZGF0YVtvZmZzZXQgKyBpXSkpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiVjIiwgZGF0YVtvZmZzZXQgKyBpXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50ZigiLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpbnRmKCJcbiIpOworCisgICAgICAgIG9mZnNldCArPSAxNjsKKyAgICB9Cit9CisKKworc3RhdHVzX3QgTVBFRzRXcml0ZXI6OlRyYWNrOjptYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoCisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgLy8gaGV4ZHVtcChkYXRhLCBzaXplKTsKKworICAgIGlmIChtQ29kZWNTcGVjaWZpY0RhdGEgIT0gTlVMTCkgeworICAgICAgICBMT0dFKCJBbHJlYWR5IGhhdmUgY29kZWMgc3BlY2lmaWMgZGF0YSIpOworICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgIH0KKworICAgIGlmIChzaXplIDwgNCB8fCBtZW1jbXAoIlx4MDBceDAwXHgwMFx4MDEiLCBkYXRhLCA0KSkgeworICAgICAgICBMT0dFKCJNdXN0IHN0YXJ0IHdpdGggYSBzdGFydCBjb2RlIik7CisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgfQorCisgICAgc2l6ZV90IHBpY1BhcmFtT2Zmc2V0ID0gNDsKKyAgICB3aGlsZSAocGljUGFyYW1PZmZzZXQgKyAzIDwgc2l6ZQorICAgICAgICAgICAgJiYgbWVtY21wKCJceDAwXHgwMFx4MDBceDAxIiwgJmRhdGFbcGljUGFyYW1PZmZzZXRdLCA0KSkgeworICAgICAgICArK3BpY1BhcmFtT2Zmc2V0OworICAgIH0KKworICAgIGlmIChwaWNQYXJhbU9mZnNldCArIDMgPj0gc2l6ZSkgeworICAgICAgICBMT0dFKCJDb3VsZCBub3QgZmluZCBzdGFydC1jb2RlIGZvciBwaWN0dXJlUGFyYW1ldGVyU2V0Iik7CisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgfQorCisgICAgc2l6ZV90IHNlcVBhcmFtU2V0TGVuZ3RoID0gcGljUGFyYW1PZmZzZXQgLSA0OworICAgIHNpemVfdCBwaWNQYXJhbVNldExlbmd0aCA9IHNpemUgLSBwaWNQYXJhbU9mZnNldCAtIDQ7CisKKyAgICBtQ29kZWNTcGVjaWZpY0RhdGFTaXplID0KKyAgICAgICAgNiArIDEgKyBzZXFQYXJhbVNldExlbmd0aCArIDIgKyBwaWNQYXJhbVNldExlbmd0aCArIDI7CisKKyAgICBtQ29kZWNTcGVjaWZpY0RhdGEgPSBtYWxsb2MobUNvZGVjU3BlY2lmaWNEYXRhU2l6ZSk7CisgICAgdWludDhfdCAqaGVhZGVyID0gKHVpbnQ4X3QgKiltQ29kZWNTcGVjaWZpY0RhdGE7CisgICAgaGVhZGVyWzBdID0gMTsKKyAgICBoZWFkZXJbMV0gPSAweDQyOyAgLy8gcHJvZmlsZQorICAgIGhlYWRlclsyXSA9IDB4ODA7CisgICAgaGVhZGVyWzNdID0gMHgxZTsgIC8vIGxldmVsCisKKyNpZiBVU0VfTkFMTEVOX0ZPVVIKKyAgICBoZWFkZXJbNF0gPSAweGZjIHwgMzsgIC8vIGxlbmd0aCBzaXplID09IDQgYnl0ZXMKKyNlbHNlCisgICAgaGVhZGVyWzRdID0gMHhmYyB8IDE7ICAvLyBsZW5ndGggc2l6ZSA9PSAyIGJ5dGVzCisjZW5kaWYKKworICAgIGhlYWRlcls1XSA9IDB4ZTAgfCAxOworICAgIGhlYWRlcls2XSA9IHNlcVBhcmFtU2V0TGVuZ3RoID4+IDg7CisgICAgaGVhZGVyWzddID0gc2VxUGFyYW1TZXRMZW5ndGggJiAweGZmOworICAgIG1lbWNweSgmaGVhZGVyWzhdLCAmZGF0YVs0XSwgc2VxUGFyYW1TZXRMZW5ndGgpOworICAgIGhlYWRlciArPSA4ICsgc2VxUGFyYW1TZXRMZW5ndGg7CisgICAgaGVhZGVyWzBdID0gMTsKKyAgICBoZWFkZXJbMV0gPSBwaWNQYXJhbVNldExlbmd0aCA+PiA4OworICAgIGhlYWRlclsyXSA9IHBpY1BhcmFtU2V0TGVuZ3RoICYgMHhmZjsKKyAgICBtZW1jcHkoJmhlYWRlclszXSwgJmRhdGFbcGljUGFyYW1PZmZzZXQgKyA0XSwgcGljUGFyYW1TZXRMZW5ndGgpOworCisgICAgcmV0dXJuIE9LOworfQorCiB2b2lkIE1QRUc0V3JpdGVyOjpUcmFjazo6dGhyZWFkRW50cnkoKSB7CiAgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBtU291cmNlLT5nZXRGb3JtYXQoKTsKICAgICBjb25zdCBjaGFyICptaW1lOwogICAgIG1ldGEtPmZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJm1pbWUpOwotICAgIGJvb2wgaXNfbXBlZzQgPSAhc3RyY2FzZWNtcChtaW1lLCBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCk7CisgICAgYm9vbCBpc19tcGVnNCA9ICFzdHJjYXNlY21wKG1pbWUsIE1FRElBX01JTUVUWVBFX1ZJREVPX01QRUc0KSB8fAorICAgICAgICAgICAgICAgICAgICAhc3RyY2FzZWNtcChtaW1lLCBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMpOwogICAgIGJvb2wgaXNfYXZjID0gIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKTsKKyAgICBib29sIGlzX2F1ZGlvID0gIXN0cm5jYXNlY21wKG1pbWUsICJhdWRpby8iLCA2KTsKICAgICBpbnQzMl90IGNvdW50ID0gMDsKKyAgICBjb25zdCBpbnQ2NF90IGludGVybGVhdmVEdXJhdGlvblVzID0gbU93bmVyLT5pbnRlcmxlYXZlRHVyYXRpb24oKTsKKyAgICBpbnQ2NF90IGNodW5rVGltZXN0YW1wVXMgPSAwOworICAgIGludDMyX3QgbkNodW5rcyA9IDA7CisgICAgaW50MzJfdCBuWmVyb0xlbmd0aEZyYW1lcyA9IDA7CisgICAgaW50NjRfdCBsYXN0VGltZXN0YW1wID0gMDsgIC8vIFRpbWVzdGFtcCBvZiB0aGUgcHJldmlvdXMgc2FtcGxlCisgICAgaW50NjRfdCBsYXN0RHVyYXRpb24gPSAwOyAgIC8vIFRpbWUgc3BhY2luZyBiZXR3ZWVuIHRoZSBwcmV2aW91cyB0d28gc2FtcGxlcworICAgIGludDMyX3Qgc2FtcGxlQ291bnQgPSAxOyAgICAvLyBTYW1wbGUgY291bnQgaW4gdGhlIGN1cnJlbnQgc3R0cyB0YWJsZSBlbnRyeQorICAgIHVpbnQzMl90IHByZXZpb3VzU2FtcGxlU2l6ZSA9IDA7ICAvLyBTaXplIG9mIHRoZSBwcmV2aW91cyBzYW1wbGUKKyAgICBpbnQ2NF90IHByZXZpb3VzUGF1c2VkRHVyYXRpb25VcyA9IDA7CisgICAgc3A8TWV0YURhdGE+IG1ldGFfZGF0YTsKIAorICAgIHN0YXR1c190IGVyciA9IE9LOwogICAgIE1lZGlhQnVmZmVyICpidWZmZXI7Ci0gICAgd2hpbGUgKCFtRG9uZSAmJiBtU291cmNlLT5yZWFkKCZidWZmZXIpID09IE9LKSB7CisgICAgd2hpbGUgKCFtRG9uZSAmJiAoZXJyID0gbVNvdXJjZS0+cmVhZCgmYnVmZmVyKSkgPT0gT0spIHsKICAgICAgICAgaWYgKGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgPT0gMCkgewogICAgICAgICAgICAgYnVmZmVyLT5yZWxlYXNlKCk7CiAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgKytuWmVyb0xlbmd0aEZyYW1lczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKKyAgICAgICAgLy8gSWYgdGhlIGNvZGVjIHNwZWNpZmljIGRhdGEgaGFzIG5vdCBiZWVuIHJlY2VpdmVkIHlldCwgZGVsYXkgcGF1c2UuCisgICAgICAgIC8vIEFmdGVyIHRoZSBjb2RlYyBzcGVjaWZpYyBkYXRhIGlzIHJlY2VpdmVkLCBkaXNjYXJkIHdoYXQgd2UgcmVjZWl2ZWQKKyAgICAgICAgLy8gd2hlbiB0aGUgdHJhY2sgaXMgdG8gYmUgcGF1c2VkLgorICAgICAgICBpZiAobVBhdXNlZCAmJiAhbVJlc3VtZWQpIHsKKyAgICAgICAgICAgIGJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgYnVmZmVyID0gTlVMTDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgKytjb3VudDsKIAotICAgICAgICBpZiAoaXNfYXZjICYmIGNvdW50IDwgMykgewotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnJhbmdlX2xlbmd0aCgpOworICAgICAgICBpbnQzMl90IGlzQ29kZWNDb25maWc7CisgICAgICAgIGlmIChidWZmZXItPm1ldGFfZGF0YSgpLT5maW5kSW50MzIoa0tleUlzQ29kZWNDb25maWcsICZpc0NvZGVjQ29uZmlnKQorICAgICAgICAgICAgICAgICYmIGlzQ29kZWNDb25maWcpIHsKKyAgICAgICAgICAgIENIRUNLKCFtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEpOwogCi0gICAgICAgICAgICBzd2l0Y2ggKGNvdW50KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobUNvZGVjU3BlY2lmaWNEYXRhLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhID0gbWFsbG9jKHNpemUgKyA4KTsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqaGVhZGVyID0gKHVpbnQ4X3QgKiltQ29kZWNTcGVjaWZpY0RhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlclswXSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlclsxXSA9IDB4NDI7ICAvLyBwcm9maWxlCi0gICAgICAgICAgICAgICAgICAgIGhlYWRlclsyXSA9IDB4ODA7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlclszXSA9IDB4MWU7ICAvLyBsZXZlbAotICAgICAgICAgICAgICAgICAgICBoZWFkZXJbNF0gPSAweGZjIHwgMzsKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVyWzVdID0gMHhlMCB8IDE7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlcls2XSA9IHNpemUgPj4gODsKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVyWzddID0gc2l6ZSAmIDB4ZmY7Ci0gICAgICAgICAgICAgICAgICAgIG1lbWNweSgmaGVhZGVyWzhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUpOwotCi0gICAgICAgICAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUgPSBzaXplICsgODsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1Db2RlY1NwZWNpZmljRGF0YVNpemU7Ci0gICAgICAgICAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUgKz0gc2l6ZSArIDM7Ci0gICAgICAgICAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YSA9IHJlYWxsb2MobUNvZGVjU3BlY2lmaWNEYXRhLCBtQ29kZWNTcGVjaWZpY0RhdGFTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqaGVhZGVyID0gKHVpbnQ4X3QgKiltQ29kZWNTcGVjaWZpY0RhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlcltvZmZzZXRdID0gMTsKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVyW29mZnNldCArIDFdID0gc2l6ZSA+PiA4OwotICAgICAgICAgICAgICAgICAgICBoZWFkZXJbb2Zmc2V0ICsgMl0gPSBzaXplICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZoZWFkZXJbb2Zmc2V0ICsgM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc19hdmMpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBtYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoCisgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKWJ1ZmZlci0+ZGF0YSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoT0ssIGVycik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzX21wZWc0KSB7CisgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhU2l6ZSA9IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhID0gbWFsbG9jKG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworICAgICAgICAgICAgICAgIG1lbWNweShtQ29kZWNTcGVjaWZpY0RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKWJ1ZmZlci0+ZGF0YSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICBidWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnVmZmVyLT5yZWxlYXNlKCk7CiAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOwogCisgICAgICAgICAgICBtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEgPSB0cnVlOwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghbUdvdEFsbENvZGVjU3BlY2lmaWNEYXRhICYmCisgICAgICAgICAgICAgICAgY291bnQgPT0gMSAmJiBpc19tcGVnNCAmJiBtQ29kZWNTcGVjaWZpY0RhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgLy8gVGhlIFRJIG1wZWc0IGVuY29kZXIgZG9lcyBub3QgcHJvcGVybHkgc2V0IHRoZQorICAgICAgICAgICAgLy8gY29kZWMtc3BlY2lmaWMtZGF0YSBmbGFnLgogCi0gICAgICAgIGlmIChtQ29kZWNTcGVjaWZpY0RhdGEgPT0gTlVMTCAmJiBpc19tcGVnNCkgewogICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSA9CiAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CiAKQEAgLTQ3NCw1NiArMTAxMiwzODAgQEAKICAgICAgICAgICAgIG1lbWNweShtQ29kZWNTcGVjaWZpY0RhdGEsIGRhdGEsIG9mZnNldCk7CiAKICAgICAgICAgICAgIGJ1ZmZlci0+c2V0X3JhbmdlKGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCkgKyBvZmZzZXQsIHNpemUgLSBvZmZzZXQpOworCisgICAgICAgICAgICBpZiAoc2l6ZSA9PSBvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOworCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YSA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoIW1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YSAmJiBpc19hdmMgJiYgY291bnQgPCAzKSB7CisgICAgICAgICAgICAvLyBUaGUgVEkgdmlkZW8gZW5jb2RlciBkb2VzIG5vdCBmbGFnIGNvZGVjIHNwZWNpZmljIGRhdGEKKyAgICAgICAgICAgIC8vIGFzIHN1Y2ggYW5kIGFsc28gc3BsaXRzIHVwIFNQUyBhbmQgUFBTIGFjcm9zcyB0d28gYnVmZmVycy4KKworICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSA9CisgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CisKKyAgICAgICAgICAgIHNpemVfdCBzaXplID0gYnVmZmVyLT5yYW5nZV9sZW5ndGgoKTsKKworICAgICAgICAgICAgQ0hFQ0soY291bnQgPT0gMiB8fCBtQ29kZWNTcGVjaWZpY0RhdGEgPT0gTlVMTCk7CisKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtQ29kZWNTcGVjaWZpY0RhdGFTaXplOworICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhU2l6ZSArPSBzaXplICsgNDsKKyAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YSA9CisgICAgICAgICAgICAgICAgcmVhbGxvYyhtQ29kZWNTcGVjaWZpY0RhdGEsIG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworCisgICAgICAgICAgICBtZW1jcHkoKHVpbnQ4X3QgKiltQ29kZWNTcGVjaWZpY0RhdGEgKyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIlx4MDBceDAwXHgwMFx4MDEiLCA0KTsKKworICAgICAgICAgICAgbWVtY3B5KCh1aW50OF90ICopbUNvZGVjU3BlY2lmaWNEYXRhICsgb2Zmc2V0ICsgNCwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgICAgIGJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgYnVmZmVyID0gTlVMTDsKKworICAgICAgICAgICAgaWYgKGNvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAgICB2b2lkICp0bXAgPSBtQ29kZWNTcGVjaWZpY0RhdGE7CisgICAgICAgICAgICAgICAgc2l6ZSA9IG1Db2RlY1NwZWNpZmljRGF0YVNpemU7CisgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICBtQ29kZWNTcGVjaWZpY0RhdGFTaXplID0gMDsKKworICAgICAgICAgICAgICAgIHN0YXR1c190IGVyciA9IG1ha2VBVkNDb2RlY1NwZWNpZmljRGF0YSgKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopdG1wLCBzaXplKTsKKyAgICAgICAgICAgICAgICBmcmVlKHRtcCk7CisgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShPSywgZXJyKTsKKworICAgICAgICAgICAgICAgIG1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgb2ZmX3Qgb2Zmc2V0ID0gaXNfYXZjID8gbU93bmVyLT5hZGRMZW5ndGhQcmVmaXhlZFNhbXBsZShidWZmZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1Pd25lci0+YWRkU2FtcGxlKGJ1ZmZlcik7CisgICAgICAgIGlmICghbUdvdEFsbENvZGVjU3BlY2lmaWNEYXRhKSB7CisgICAgICAgICAgICBtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBhIGRlZXAgY29weSBvZiB0aGUgTWVkaWFCdWZmZXIgYW5kIE1ldGFkYXRhIGFuZCByZWxlYXNlCisgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBhcyBzb29uIGFzIHdlIGNhbgorICAgICAgICBNZWRpYUJ1ZmZlciAqY29weSA9IG5ldyBNZWRpYUJ1ZmZlcihidWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KGNvcHktPmRhdGEoKSwgKHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCisgICAgICAgICAgICAgICAgYnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7CisgICAgICAgIGNvcHktPnNldF9yYW5nZSgwLCBidWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKKyAgICAgICAgbWV0YV9kYXRhID0gbmV3IE1ldGFEYXRhKCpidWZmZXItPm1ldGFfZGF0YSgpLmdldCgpKTsKKyAgICAgICAgYnVmZmVyLT5yZWxlYXNlKCk7CisgICAgICAgIGJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKGlzX2F2YykgU3RyaXBTdGFydGNvZGUoY29weSk7CiAKICAgICAgICAgU2FtcGxlSW5mbyBpbmZvOwotICAgICAgICBpbmZvLnNpemUgPSBpc19hdmMgPyBidWZmZXItPnJhbmdlX2xlbmd0aCgpICsgMiA6IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7Ci0gICAgICAgIGluZm8ub2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBpbmZvLnNpemUgPSBpc19hdmMKKyNpZiBVU0VfTkFMTEVOX0ZPVVIKKyAgICAgICAgICAgICAgICA/IGNvcHktPnJhbmdlX2xlbmd0aCgpICsgNAorI2Vsc2UKKyAgICAgICAgICAgICAgICA/IGNvcHktPnJhbmdlX2xlbmd0aCgpICsgMgorI2VuZGlmCisgICAgICAgICAgICAgICAgOiBjb3B5LT5yYW5nZV9sZW5ndGgoKTsKKworICAgICAgICAvLyBNYXggZmlsZSBzaXplIG9yIGR1cmF0aW9uIGhhbmRsaW5nCisgICAgICAgIG1Fc3RpbWF0ZWRUcmFja1NpemVCeXRlcyArPSBpbmZvLnNpemU7CisgICAgICAgIGlmIChtT3duZXItPmV4Y2VlZHNGaWxlU2l6ZUxpbWl0KCkpIHsKKyAgICAgICAgICAgIG1Pd25lci0+bm90aWZ5KE1FRElBX1JFQ09SREVSX0VWRU5UX0lORk8sIE1FRElBX1JFQ09SREVSX0lORk9fTUFYX0ZJTEVTSVpFX1JFQUNIRUQsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Pd25lci0+ZXhjZWVkc0ZpbGVEdXJhdGlvbkxpbWl0KCkpIHsKKyAgICAgICAgICAgIG1Pd25lci0+bm90aWZ5KE1FRElBX1JFQ09SREVSX0VWRU5UX0lORk8sIE1FRElBX1JFQ09SREVSX0lORk9fTUFYX0RVUkFUSU9OX1JFQUNIRUQsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGludDMyX3QgaXNTeW5jID0gZmFsc2U7CisgICAgICAgIG1ldGFfZGF0YS0+ZmluZEludDMyKGtLZXlJc1N5bmNGcmFtZSwgJmlzU3luYyk7CiAKICAgICAgICAgaW50NjRfdCB0aW1lc3RhbXBVczsKLSAgICAgICAgQ0hFQ0soYnVmZmVyLT5tZXRhX2RhdGEoKS0+ZmluZEludDY0KGtLZXlUaW1lLCAmdGltZXN0YW1wVXMpKTsKKyAgICAgICAgQ0hFQ0sobWV0YV9kYXRhLT5maW5kSW50NjQoa0tleVRpbWUsICZ0aW1lc3RhbXBVcykpOwogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICBpZiAobVNhbXBsZUluZm9zLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1TdGFydFRpbWVzdGFtcFVzID0gdGltZXN0YW1wVXM7CisgICAgICAgICAgICBtT3duZXItPnNldFN0YXJ0VGltZXN0YW1wVXMobVN0YXJ0VGltZXN0YW1wVXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1SZXN1bWVkKSB7CisgICAgICAgICAgICBwcmV2aW91c1BhdXNlZER1cmF0aW9uVXMgKz0gKHRpbWVzdGFtcFVzIC0gbU1heFRpbWVTdGFtcFVzIC0gMTAwMCAqIGxhc3REdXJhdGlvbik7CisgICAgICAgICAgICBtUmVzdW1lZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdGltZXN0YW1wVXMgLT0gcHJldmlvdXNQYXVzZWREdXJhdGlvblVzOworICAgICAgICBMT0dWKCJ0aW1lIHN0YW1wOiAlbGxkIGFuZCBwcmV2aW91cyBwYXVzZWQgZHVyYXRpb24gJWxsZCIsCisgICAgICAgICAgICAgICAgdGltZXN0YW1wVXMsIHByZXZpb3VzUGF1c2VkRHVyYXRpb25Vcyk7CiAgICAgICAgIGlmICh0aW1lc3RhbXBVcyA+IG1NYXhUaW1lU3RhbXBVcykgewogICAgICAgICAgICAgbU1heFRpbWVTdGFtcFVzID0gdGltZXN0YW1wVXM7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdXIgdGltZXN0YW1wIGlzIGluIG1zLgogICAgICAgICBpbmZvLnRpbWVzdGFtcCA9ICh0aW1lc3RhbXBVcyArIDUwMCkgLyAxMDAwOwotCiAgICAgICAgIG1TYW1wbGVJbmZvcy5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgIGlmIChtU2FtcGxlSW5mb3Muc2l6ZSgpID4gMikgeworICAgICAgICAgICAgaWYgKGxhc3REdXJhdGlvbiAhPSBpbmZvLnRpbWVzdGFtcCAtIGxhc3RUaW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICBTdHRzVGFibGVFbnRyeSBzdHRzRW50cnkoc2FtcGxlQ291bnQsIGxhc3REdXJhdGlvbik7CisgICAgICAgICAgICAgICAgbVN0dHNUYWJsZUVudHJpZXMucHVzaF9iYWNrKHN0dHNFbnRyeSk7CisgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQgPSAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICArK3NhbXBsZUNvdW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChtU2FtcGxlc0hhdmVTYW1lU2l6ZSkgeworICAgICAgICAgICAgaWYgKG1TYW1wbGVJbmZvcy5zaXplKCkgPj0gMiAmJiBwcmV2aW91c1NhbXBsZVNpemUgIT0gaW5mby5zaXplKSB7CisgICAgICAgICAgICAgICAgbVNhbXBsZXNIYXZlU2FtZVNpemUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzU2FtcGxlU2l6ZSA9IGluZm8uc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBsYXN0RHVyYXRpb24gPSBpbmZvLnRpbWVzdGFtcCAtIGxhc3RUaW1lc3RhbXA7CisgICAgICAgIGxhc3RUaW1lc3RhbXAgPSBpbmZvLnRpbWVzdGFtcDsKIAotICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKLSAgICAgICAgYnVmZmVyID0gTlVMTDsKKyAgICAgICAgaWYgKGlzU3luYyAhPSAwKSB7CisgICAgICAgICAgICBtU3Rzc1RhYmxlRW50cmllcy5wdXNoX2JhY2sobVNhbXBsZUluZm9zLnNpemUoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVRyYWNraW5nUHJvZ3Jlc3NTdGF0dXMpIHsKKyAgICAgICAgICAgIGlmIChtUHJldmlvdXNUcmFja1RpbWVVcyA8PSAwKSB7CisgICAgICAgICAgICAgICAgbVByZXZpb3VzVHJhY2tUaW1lVXMgPSBtU3RhcnRUaW1lc3RhbXBVczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyYWNrUHJvZ3Jlc3NTdGF0dXMobVNhbXBsZUluZm9zLnNpemUoKSwgdGltZXN0YW1wVXMpOworICAgICAgICB9CisgICAgICAgIGlmIChtT3duZXItPm51bVRyYWNrcygpID09IDEpIHsKKyAgICAgICAgICAgIG9mZl90IG9mZnNldCA9IGlzX2F2Yz8gbU93bmVyLT5hZGRMZW5ndGhQcmVmaXhlZFNhbXBsZV9sKGNvcHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1Pd25lci0+YWRkU2FtcGxlX2woY29weSk7CisgICAgICAgICAgICBpZiAobUNodW5rT2Zmc2V0cy5lbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgbUNodW5rT2Zmc2V0cy5wdXNoX2JhY2sob2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvcHktPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGNvcHkgPSBOVUxMOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBtQ2h1bmtTYW1wbGVzLnB1c2hfYmFjayhjb3B5KTsKKyAgICAgICAgaWYgKGludGVybGVhdmVEdXJhdGlvblVzID09IDApIHsKKyAgICAgICAgICAgIFN0c2NUYWJsZUVudHJ5IHN0c2NFbnRyeSgrK25DaHVua3MsIDEsIDEpOworICAgICAgICAgICAgbVN0c2NUYWJsZUVudHJpZXMucHVzaF9iYWNrKHN0c2NFbnRyeSk7CisgICAgICAgICAgICB3cml0ZU9uZUNodW5rKGlzX2F2Yyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2h1bmtUaW1lc3RhbXBVcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgY2h1bmtUaW1lc3RhbXBVcyA9IHRpbWVzdGFtcFVzOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGltZXN0YW1wVXMgLSBjaHVua1RpbWVzdGFtcFVzID4gaW50ZXJsZWF2ZUR1cmF0aW9uVXMpIHsKKyAgICAgICAgICAgICAgICAgICAgKytuQ2h1bmtzOworICAgICAgICAgICAgICAgICAgICBtQ2h1bmtEdXJhdGlvbnMucHVzaF9iYWNrKHRpbWVzdGFtcFVzIC0gY2h1bmtUaW1lc3RhbXBVcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChuQ2h1bmtzID09IDEgfHwgIC8vIEZpcnN0IGNodW5rCisgICAgICAgICAgICAgICAgICAgICAgICAoLS0obVN0c2NUYWJsZUVudHJpZXMuZW5kKCkpKS0+c2FtcGxlc1BlckNodW5rICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgbUNodW5rU2FtcGxlcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0c2NUYWJsZUVudHJ5IHN0c2NFbnRyeShuQ2h1bmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2h1bmtTYW1wbGVzLnNpemUoKSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RzY1RhYmxlRW50cmllcy5wdXNoX2JhY2soc3RzY0VudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3cml0ZU9uZUNodW5rKGlzX2F2Yyk7CisgICAgICAgICAgICAgICAgICAgIGNodW5rVGltZXN0YW1wVXMgPSB0aW1lc3RhbXBVczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgIH0KIAorICAgIGlmIChtU2FtcGxlSW5mb3MuZW1wdHkoKSkgeworICAgICAgICBlcnIgPSBVTktOT1dOX0VSUk9SOworICAgIH0KKyAgICBtT3duZXItPm5vdGlmeShNRURJQV9SRUNPUkRFUl9FVkVOVF9JTkZPLCBNRURJQV9SRUNPUkRFUl9JTkZPX0NPTVBMRVRJT05fU1RBVFVTLCBlcnIpOworCisgICAgLy8gTGFzdCBjaHVuaworICAgIGlmIChtT3duZXItPm51bVRyYWNrcygpID09IDEpIHsKKyAgICAgICAgU3RzY1RhYmxlRW50cnkgc3RzY0VudHJ5KDEsIG1TYW1wbGVJbmZvcy5zaXplKCksIDEpOworICAgICAgICBtU3RzY1RhYmxlRW50cmllcy5wdXNoX2JhY2soc3RzY0VudHJ5KTsKKyAgICB9IGVsc2UgaWYgKCFtQ2h1bmtTYW1wbGVzLmVtcHR5KCkpIHsKKyAgICAgICAgKytuQ2h1bmtzOworICAgICAgICBTdHNjVGFibGVFbnRyeSBzdHNjRW50cnkobkNodW5rcywgbUNodW5rU2FtcGxlcy5zaXplKCksIDEpOworICAgICAgICBtU3RzY1RhYmxlRW50cmllcy5wdXNoX2JhY2soc3RzY0VudHJ5KTsKKyAgICAgICAgd3JpdGVPbmVDaHVuayhpc19hdmMpOworICAgIH0KKworICAgIC8vIFdlIGRvbid0IHJlYWxseSBrbm93IGhvdyBsb25nIHRoZSBsYXN0IGZyYW1lIGxhc3RzLCBzaW5jZQorICAgIC8vIHRoZXJlIGlzIG5vIGZyYW1lIHRpbWUgYWZ0ZXIgaXQsIGp1c3QgcmVwZWF0IHRoZSBwcmV2aW91cworICAgIC8vIGZyYW1lJ3MgZHVyYXRpb24uCisgICAgaWYgKG1TYW1wbGVJbmZvcy5zaXplKCkgPT0gMSkgeworICAgICAgICBsYXN0RHVyYXRpb24gPSAwOyAgLy8gQSBzaW5nbGUgc2FtcGxlJ3MgZHVyYXRpb24KKyAgICB9IGVsc2UgeworICAgICAgICArK3NhbXBsZUNvdW50OyAgLy8gQ291bnQgZm9yIHRoZSBsYXN0IHNhbXBsZQorICAgIH0KKyAgICBTdHRzVGFibGVFbnRyeSBzdHRzRW50cnkoc2FtcGxlQ291bnQsIGxhc3REdXJhdGlvbik7CisgICAgbVN0dHNUYWJsZUVudHJpZXMucHVzaF9iYWNrKHN0dHNFbnRyeSk7CiAgICAgbVJlYWNoZWRFT1MgPSB0cnVlOworICAgIExPR0koIlJlY2VpdmVkIHRvdGFsLzAtbGVuZ3RoICglZC8lZCkgYnVmZmVycyBhbmQgZW5jb2RlZCAlZCBmcmFtZXMgLSAlcyIsCisgICAgICAgICAgICBjb3VudCwgblplcm9MZW5ndGhGcmFtZXMsIG1TYW1wbGVJbmZvcy5zaXplKCksIGlzX2F1ZGlvPyAiYXVkaW8iOiAidmlkZW8iKTsKKworICAgIGxvZ1N0YXRpc3RpY2FsRGF0YShpc19hdWRpbyk7Cit9CisKK3ZvaWQgTVBFRzRXcml0ZXI6OlRyYWNrOjp0cmFja1Byb2dyZXNzU3RhdHVzKGludDMyX3QgbkZyYW1lcywgaW50NjRfdCB0aW1lVXMpIHsKKyAgICBMT0dWKCJ0cmFja1Byb2dyZXNzU3RhdHVzOiAlZCBmcmFtZXMgYW5kICVsbGQgdXMiLCBuRnJhbWVzLCB0aW1lVXMpOworICAgIGlmIChtVHJhY2tFdmVyeU51bWJlck9mRnJhbWVzID4gMCAmJgorICAgICAgICBuRnJhbWVzICUgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lcyA9PSAwKSB7CisgICAgICAgIExPR1YoIkZpcmUgZnJhbWUgdHJhY2tpbmcgcHJvZ3Jlc3Mgc3RhdHVzIGF0IGZyYW1lICVkIiwgbkZyYW1lcyk7CisgICAgICAgIG1Pd25lci0+bm90aWZ5KE1FRElBX1JFQ09SREVSX0VWRU5UX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX1JFQ09SREVSX0lORk9fUFJPR1JFU1NfRlJBTUVfU1RBVFVTLAorICAgICAgICAgICAgICAgICAgICAgICBuRnJhbWVzKTsKKyAgICB9CisKKyAgICBpZiAobVRyYWNrRXZlcnlUaW1lRHVyYXRpb25VcyA+IDAgJiYKKyAgICAgICAgdGltZVVzIC0gbVByZXZpb3VzVHJhY2tUaW1lVXMgPj0gbVRyYWNrRXZlcnlUaW1lRHVyYXRpb25VcykgeworICAgICAgICBMT0dWKCJGaXJlIHRpbWUgdHJhY2tpbmcgcHJvZ3Jlc3Mgc3RhdHVzIGF0ICVsbGQgdXMiLCB0aW1lVXMpOworICAgICAgICBtT3duZXItPm5vdGlmeShNRURJQV9SRUNPUkRFUl9FVkVOVF9JTkZPLAorICAgICAgICAgICAgICAgICAgICAgICBNRURJQV9SRUNPUkRFUl9JTkZPX1BST0dSRVNTX1RJTUVfU1RBVFVTLAorICAgICAgICAgICAgICAgICAgICAgICB0aW1lVXMgLyAxMDAwKTsKKyAgICAgICAgbVByZXZpb3VzVHJhY2tUaW1lVXMgPSB0aW1lVXM7CisgICAgfQorfQorCit2b2lkIE1QRUc0V3JpdGVyOjpUcmFjazo6ZmluZE1pbkF2Z01heFNhbXBsZUR1cmF0aW9uTXMoCisgICAgICAgIGludDMyX3QgKm1pbiwgaW50MzJfdCAqYXZnLCBpbnQzMl90ICptYXgpIHsKKyAgICBDSEVDSyghbVNhbXBsZUluZm9zLmVtcHR5KCkpOworICAgIGludDMyX3QgYXZnU2FtcGxlRHVyYXRpb25NcyA9IG1NYXhUaW1lU3RhbXBVcyAvIDEwMDAvIG1TYW1wbGVJbmZvcy5zaXplKCk7CisgICAgaW50MzJfdCBtaW5TYW1wbGVEdXJhdGlvbk1zID0gMHg3RkZGRkZGRjsKKyAgICBpbnQzMl90IG1heFNhbXBsZUR1cmF0aW9uTXMgPSAwOworICAgIGZvciAoTGlzdDxTdHRzVGFibGVFbnRyeT46Oml0ZXJhdG9yIGl0ID0gbVN0dHNUYWJsZUVudHJpZXMuYmVnaW4oKTsKKyAgICAgICAgaXQgIT0gbVN0dHNUYWJsZUVudHJpZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaW50MzJfdCBzYW1wbGVEdXJhdGlvbk1zID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaXQtPnNhbXBsZUR1cmF0aW9uKTsKKyAgICAgICAgaWYgKHNhbXBsZUR1cmF0aW9uTXMgPiBtYXhTYW1wbGVEdXJhdGlvbk1zKSB7CisgICAgICAgICAgICBtYXhTYW1wbGVEdXJhdGlvbk1zID0gc2FtcGxlRHVyYXRpb25NczsKKyAgICAgICAgfSBlbHNlIGlmIChzYW1wbGVEdXJhdGlvbk1zIDwgbWluU2FtcGxlRHVyYXRpb25NcykgeworICAgICAgICAgICAgbWluU2FtcGxlRHVyYXRpb25NcyA9IHNhbXBsZUR1cmF0aW9uTXM7CisgICAgICAgIH0KKyAgICAgICAgTE9HSSgic2FtcGxlIGR1cmF0aW9uOiAlZCBtcyIsIHNhbXBsZUR1cmF0aW9uTXMpOworICAgIH0KKyAgICBDSEVDSyhtaW5TYW1wbGVEdXJhdGlvbk1zICE9IDApOworICAgIENIRUNLKGF2Z1NhbXBsZUR1cmF0aW9uTXMgIT0gMCk7CisgICAgQ0hFQ0sobWF4U2FtcGxlRHVyYXRpb25NcyAhPSAwKTsKKyAgICAqbWluID0gbWluU2FtcGxlRHVyYXRpb25NczsKKyAgICAqYXZnID0gYXZnU2FtcGxlRHVyYXRpb25NczsKKyAgICAqbWF4ID0gbWF4U2FtcGxlRHVyYXRpb25NczsKK30KKworLy8gRG9uJ3QgY291bnQgdGhlIGxhc3QgZHVyYXRpb24KK3ZvaWQgTVBFRzRXcml0ZXI6OlRyYWNrOjpmaW5kTWluTWF4Q2h1bmtEdXJhdGlvbnMoaW50NjRfdCAqbWluLCBpbnQ2NF90ICptYXgpIHsKKyAgICBpbnQ2NF90IGR1cmF0aW9uID0gbU93bmVyLT5pbnRlcmxlYXZlRHVyYXRpb24oKTsKKyAgICBpbnQ2NF90IG1pbkNodW5rRHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBpbnQ2NF90IG1heENodW5rRHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBpZiAobUNodW5rRHVyYXRpb25zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgZm9yIChMaXN0PGludDY0X3Q+OjppdGVyYXRvciBpdCA9IG1DaHVua0R1cmF0aW9ucy5iZWdpbigpOworICAgICAgICAgICAgaXQgIT0gLS1tQ2h1bmtEdXJhdGlvbnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChtaW5DaHVua0R1cmF0aW9uID4gKCppdCkpIHsKKyAgICAgICAgICAgICAgICBtaW5DaHVua0R1cmF0aW9uID0gKCppdCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1heENodW5rRHVyYXRpb24gPCAoKml0KSkgeworICAgICAgICAgICAgICAgIG1heENodW5rRHVyYXRpb24gPSAoKml0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAqbWluID0gbWluQ2h1bmtEdXJhdGlvbjsKKyAgICAqbWF4ID0gbWF4Q2h1bmtEdXJhdGlvbjsKK30KKwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OmxvZ1N0YXRpc3RpY2FsRGF0YShib29sIGlzQXVkaW8pIHsKKyAgICBpZiAobU1heFRpbWVTdGFtcFVzIDw9IDAgfHwgbVNhbXBsZUluZm9zLmVtcHR5KCkpIHsKKyAgICAgICAgTE9HSSgibm90aGluZyBpcyByZWNvcmRlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBjb2xsZWN0U3RhdHMgPSBmYWxzZTsKKyAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07CisgICAgaWYgKHByb3BlcnR5X2dldCgibWVkaWEuc3RhZ2VmcmlnaHQucmVjb3JkLXN0YXRzIiwgdmFsdWUsIE5VTEwpCisgICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgeworICAgICAgICBjb2xsZWN0U3RhdHMgPSB0cnVlOworICAgIH0KKworICAgIGlmIChjb2xsZWN0U3RhdHMpIHsKKyAgICAgICAgTE9HSSgiJXMgdHJhY2sgLSBkdXJhdGlvbiAlbGxkIHVzLCB0b3RhbCAlZCBmcmFtZXMiLAorICAgICAgICAgICAgICAgIGlzQXVkaW8/ICJhdWRpbyI6ICJ2aWRlbyIsIG1NYXhUaW1lU3RhbXBVcywKKyAgICAgICAgICAgICAgICBtU2FtcGxlSW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgaW50MzJfdCBtaW4sIGF2ZywgbWF4OworICAgICAgICBmaW5kTWluQXZnTWF4U2FtcGxlRHVyYXRpb25NcygmbWluLCAmYXZnLCAmbWF4KTsKKyAgICAgICAgTE9HSSgibWluL2F2Zy9tYXggc2FtcGxlIGR1cmF0aW9uIChtcyk6ICVkLyVkLyVkIiwgbWluLCBhdmcsIG1heCk7CisgICAgICAgIGlmICghaXNBdWRpbykgeworICAgICAgICAgICAgZmxvYXQgYXZnRnBzID0gMTAwMC4wIC8gYXZnOworICAgICAgICAgICAgZmxvYXQgbWluRnBzID0gMTAwMC4wIC8gbWF4OworICAgICAgICAgICAgZmxvYXQgbWF4RnBzID0gMTAwMC4wIC8gbWluOworICAgICAgICAgICAgTE9HSSgibWluL2F2Zy9tYXggZnJhbWUgcmF0ZSAoZnBzKTogJS4yZi8lLjJmLyUuMmYiLAorICAgICAgICAgICAgICAgIG1pbkZwcywgYXZnRnBzLCBtYXhGcHMpOworICAgICAgICB9CisKKyAgICAgICAgaW50NjRfdCB0b3RhbEJ5dGVzID0gMDsKKyAgICAgICAgZm9yIChMaXN0PFNhbXBsZUluZm8+OjppdGVyYXRvciBpdCA9IG1TYW1wbGVJbmZvcy5iZWdpbigpOworICAgICAgICAgICAgaXQgIT0gbVNhbXBsZUluZm9zLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICB0b3RhbEJ5dGVzICs9IGl0LT5zaXplOworICAgICAgICB9CisgICAgICAgIGZsb2F0IGJpdFJhdGUgPSAodG90YWxCeXRlcyAqIDgwMDAwMDAuMCkgLyBtTWF4VGltZVN0YW1wVXM7CisgICAgICAgIExPR0koImF2ZyBiaXQgcmF0ZSAoYnBzKTogJS4yZiIsIGJpdFJhdGUpOworCisgICAgICAgIGludDY0X3QgZHVyYXRpb24gPSBtT3duZXItPmludGVybGVhdmVEdXJhdGlvbigpOworICAgICAgICBpZiAoZHVyYXRpb24gIT0gMCkgeyAgLy8gSWYgaW50ZXJsZWF2aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgICAgIGludDY0X3QgbWluQ2h1bmssIG1heENodW5rOworICAgICAgICAgICAgZmluZE1pbk1heENodW5rRHVyYXRpb25zKCZtaW5DaHVuaywgJm1heENodW5rKTsKKyAgICAgICAgICAgIExPR0koIm1pbi9hdmcvbWF4IGNodW5rIGR1cmF0aW9uIChtcyk6ICVsbGQvJWxsZC8lbGxkIiwKKyAgICAgICAgICAgICAgICBtaW5DaHVuaywgZHVyYXRpb24sIG1heENodW5rKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OndyaXRlT25lQ2h1bmsoYm9vbCBpc0F2YykgeworICAgIG1Pd25lci0+bG9jaygpOworICAgIGZvciAoTGlzdDxNZWRpYUJ1ZmZlciAqPjo6aXRlcmF0b3IgaXQgPSBtQ2h1bmtTYW1wbGVzLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBtQ2h1bmtTYW1wbGVzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIG9mZl90IG9mZnNldCA9IGlzQXZjPyBtT3duZXItPmFkZExlbmd0aFByZWZpeGVkU2FtcGxlX2woKml0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbU93bmVyLT5hZGRTYW1wbGVfbCgqaXQpOworICAgICAgICBpZiAoaXQgPT0gbUNodW5rU2FtcGxlcy5iZWdpbigpKSB7CisgICAgICAgICAgICBtQ2h1bmtPZmZzZXRzLnB1c2hfYmFjayhvZmZzZXQpOworICAgICAgICB9CisgICAgfQorICAgIG1Pd25lci0+dW5sb2NrKCk7CisgICAgd2hpbGUgKCFtQ2h1bmtTYW1wbGVzLmVtcHR5KCkpIHsKKyAgICAgICAgTGlzdDxNZWRpYUJ1ZmZlciAqPjo6aXRlcmF0b3IgaXQgPSBtQ2h1bmtTYW1wbGVzLmJlZ2luKCk7CisgICAgICAgICgqaXQpLT5yZWxlYXNlKCk7CisgICAgICAgICgqaXQpID0gTlVMTDsKKyAgICAgICAgbUNodW5rU2FtcGxlcy5lcmFzZShpdCk7CisgICAgfQorICAgIG1DaHVua1NhbXBsZXMuY2xlYXIoKTsKIH0KIAogaW50NjRfdCBNUEVHNFdyaXRlcjo6VHJhY2s6OmdldER1cmF0aW9uVXMoKSBjb25zdCB7CiAgICAgcmV0dXJuIG1NYXhUaW1lU3RhbXBVczsKIH0KIAotdm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OndyaXRlVHJhY2tIZWFkZXIoaW50MzJfdCB0cmFja0lEKSB7CitpbnQ2NF90IE1QRUc0V3JpdGVyOjpUcmFjazo6Z2V0RXN0aW1hdGVkVHJhY2tTaXplQnl0ZXMoKSBjb25zdCB7CisgICAgcmV0dXJuIG1Fc3RpbWF0ZWRUcmFja1NpemVCeXRlczsKK30KKwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OndyaXRlVHJhY2tIZWFkZXIoCisgICAgICAgIGludDMyX3QgdHJhY2tJRCwgYm9vbCB1c2UzMkJpdE9mZnNldCkgewogICAgIGNvbnN0IGNoYXIgKm1pbWU7CiAgICAgYm9vbCBzdWNjZXNzID0gbU1ldGEtPmZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJm1pbWUpOwogICAgIENIRUNLKHN1Y2Nlc3MpOwogCiAgICAgYm9vbCBpc19hdWRpbyA9ICFzdHJuY2FzZWNtcChtaW1lLCAiYXVkaW8vIiwgNik7CisgICAgaW50MzJfdCB0aW1lU2NhbGUgPSAxMDAwOworICAgIGludDMyX3QgZHVyYXRpb24gPSBnZXREdXJhdGlvblVzKCkgLyB0aW1lU2NhbGU7CiAKICAgICB0aW1lX3Qgbm93ID0gdGltZShOVUxMKTsKIAogICAgIG1Pd25lci0+YmVnaW5Cb3goInRyYWsiKTsKIAogICAgICAgbU93bmVyLT5iZWdpbkJveCgidGtoZCIpOwotICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9MAorICAgICAgICAvLyBGbGFncyA9IDcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdHJhY2sgaXMgZW5hYmxlZCwgYW5kCisgICAgICAgIC8vIHBhcnQgb2YgdGhlIHByZXNlbnRhdGlvbgorICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMHgwNyk7ICAgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9NwogICAgICAgICBtT3duZXItPndyaXRlSW50MzIobm93KTsgICAgICAgICAgIC8vIGNyZWF0aW9uIHRpbWUKICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKG5vdyk7ICAgICAgICAgICAvLyBtb2RpZmljYXRpb24gdGltZQogICAgICAgICBtT3duZXItPndyaXRlSW50MzIodHJhY2tJRCk7CiAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgICAgICAgICAgICAgLy8gcmVzZXJ2ZWQKLSAgICAgICAgbU93bmVyLT53cml0ZUludDMyKGdldER1cmF0aW9uVXMoKSAvIDEwMDApOworICAgICAgICBtT3duZXItPndyaXRlSW50MzIoZHVyYXRpb24pOwogICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgICAgICAgICAgICAgLy8gcmVzZXJ2ZWQKICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOyAgICAgICAgICAgICAvLyBsYXllcgpAQCAtNTUwLDQ1ICsxNDEyLDU4IEBACiAgICAgICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBtTWV0YS0+ZmluZEludDMyKGtLZXlIZWlnaHQsICZoZWlnaHQpOwogICAgICAgICAgICAgQ0hFQ0soc3VjY2Vzcyk7CiAKLSAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMih3aWR0aCk7Ci0gICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoaGVpZ2h0KTsKKyAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMih3aWR0aCA8PCAxNik7ICAgLy8gMzItYml0IGZpeGVkLXBvaW50IHZhbHVlCisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoaGVpZ2h0IDw8IDE2KTsgIC8vIDMyLWJpdCBmaXhlZC1wb2ludCB2YWx1ZQogICAgICAgICB9CiAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gdGtoZAogCisgICAgICBpbnQ2NF90IG1vb3ZTdGFydFRpbWVVcyA9IG1Pd25lci0+Z2V0U3RhcnRUaW1lc3RhbXBVcygpOworICAgICAgaWYgKG1TdGFydFRpbWVzdGFtcFVzICE9IG1vb3ZTdGFydFRpbWVVcykgeworICAgICAgICBtT3duZXItPmJlZ2luQm94KCJlZHRzIik7CisgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgiZWxzdCIpOworICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgLy8gdmVyc2lvbj0wLCBmbGFncz0wOiAzMi1iaXQgdGltZQorICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDIpOyAgICAgICAgICAgLy8gbmV2ZXIgZW5kcyB3aXRoIGFuIGVtcHR5IGxpc3QKKyAgICAgICAgICAgIGludDY0X3QgZHVyYXRpb25NcyA9CisgICAgICAgICAgICAgICAgKG1TdGFydFRpbWVzdGFtcFVzIC0gbW9vdlN0YXJ0VGltZVVzKSAvIDEwMDA7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoZHVyYXRpb25Ncyk7ICAvLyBlZGl0IGR1cmF0aW9uCisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoLTEpOyAgICAgICAgICAvLyBlbXB0eSBlZGl0IGJveCB0byBzaWduYWwgc3RhcnRpbmcgdGltZSBvZmZzZXQKKyAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxIDw8IDE2KTsgICAgIC8vIHgxIHJhdGUKKyAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihkdXJhdGlvbik7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMSA8PCAxNik7CisgICAgICAgICAgbU93bmVyLT5lbmRCb3goKTsKKyAgICAgICAgbU93bmVyLT5lbmRCb3goKTsKKyAgICAgIH0KKwogICAgICAgbU93bmVyLT5iZWdpbkJveCgibWRpYSIpOwogCiAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goIm1kaGQiKTsKICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9MAogICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihub3cpOyAgICAgICAgICAgLy8gY3JlYXRpb24gdGltZQogICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihub3cpOyAgICAgICAgICAgLy8gbW9kaWZpY2F0aW9uIHRpbWUKLSAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMTAwMCk7ICAgICAgICAgIC8vIHRpbWVzY2FsZQotICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihnZXREdXJhdGlvblVzKCkgLyAxMDAwKTsKLSAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAgIC8vIGxhbmd1YWdlIGNvZGUgWFhYCisgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKHRpbWVTY2FsZSk7ICAgICAvLyB0aW1lc2NhbGUKKyAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoZHVyYXRpb24pOyAgICAgIC8vIGR1cmF0aW9uCisgICAgICAgICAgLy8gTGFuZ3VhZ2UgZm9sbG93cyB0aGUgdGhyZWUgbGV0dGVyIHN0YW5kYXJkIElTTy02MzktMi9UCisgICAgICAgICAgLy8gJ2UnLCAnbicsICdnJyBmb3IgIkVuZ2xpc2giLCBmb3IgaW5zdGFuY2UuCisgICAgICAgICAgLy8gRWFjaCBjaGFyYWN0ZXIgaXMgcGFja2VkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gaXRzIEFTQ0lJIHZhbHVlIGFuZCAweDYwLgorICAgICAgICAgIC8vIEZvciAiRW5nbGlzaCIsIHRoZXNlIGFyZSAwMDEwMSwgMDExMTAsIDAwMTExLgorICAgICAgICAgIC8vIFhYWDogV2hlcmUgaXMgdGhlIHBhZGRpbmcgYml0IGxvY2F0ZWQ6IDB4MTVDNz8KKyAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAgIC8vIGxhbmd1YWdlIGNvZGUKICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAgIC8vIHByZWRlZmluZWQKICAgICAgICAgbU93bmVyLT5lbmRCb3goKTsKIAogICAgICAgICBtT3duZXItPmJlZ2luQm94KCJoZGxyIik7CiAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKLSAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHByZWRlZmluZWQKLSAgICAgICAgICBtT3duZXItPndyaXRlRm91cmNjKGlzX2F1ZGlvID8gInNvdW4iIDogInZpZGUiKTsKKyAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIGNvbXBvbmVudCB0eXBlOiBzaG91bGQgYmUgbWhscgorICAgICAgICAgIG1Pd25lci0+d3JpdGVGb3VyY2MoaXNfYXVkaW8gPyAic291biIgOiAidmlkZSIpOyAgLy8gY29tcG9uZW50IHN1YnR5cGUKICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgICAvLyByZXNlcnZlZAogICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgICAgICAgICAgICAgLy8gcmVzZXJ2ZWQKLSAgICAgICAgICBtT3duZXItPndyaXRlQ1N0cmluZygiIik7ICAgICAgICAgIC8vIG5hbWUKKyAgICAgICAgICAvLyBSZW1vdmluZyAiciIgZm9yIHRoZSBuYW1lIHN0cmluZyBqdXN0IG1ha2VzIHRoZSBzdHJpbmcgNCBieXRlIGFsaWduZWQKKyAgICAgICAgICBtT3duZXItPndyaXRlQ1N0cmluZyhpc19hdWRpbyA/ICJTb3VuZEhhbmRsZSI6ICJWaWRlb0hhbmRsZSIpOyAgLy8gbmFtZQogICAgICAgICBtT3duZXItPmVuZEJveCgpOwogCiAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goIm1pbmYiKTsKLQotICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goImRpbmYiKTsKLSAgICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goImRyZWYiKTsKLSAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgLy8gdmVyc2lvbj0wLCBmbGFncz0wCi0gICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxKTsKLSAgICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgidXJsICIpOwotICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxKTsgIC8vIHZlcnNpb249MCwgZmxhZ3M9MQotICAgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gdXJsCi0gICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gZHJlZgotICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBkaW5mCi0KICAgICAgICAgICBpZiAoaXNfYXVkaW8pIHsKICAgICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgic21oZCIpOwogICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKQEAgLTU5NywxNCArMTQ3MiwyNSBAQAogICAgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOwogICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goInZtaGQiKTsKLSAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDB4MDAwMDAwMDEpOyAgLy8gdmVyc2lvbj0wLCBmbGFncz0xCisgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigweDAxKTsgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9MQogICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAvLyBncmFwaGljcyBtb2RlCiAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigwKTsgICAgICAgICAgIC8vIG9wY29sb3IKICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOwogICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7CiAgICAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7CiAgICAgICAgICAgfQotICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gbWluZgorCisgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgiZGluZiIpOworICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgiZHJlZiIpOworICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKKyAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDEpOyAgLy8gZW50cnkgY291bnQgKGVpdGhlciB1cmwgb3IgdXJuKQorICAgICAgICAgICAgICAvLyBUaGUgdGFibGUgaW5kZXggaGVyZSByZWZlcnMgdG8gdGhlIHNhbXBsZSBkZXNjcmlwdGlvbiBpbmRleAorICAgICAgICAgICAgICAvLyBpbiB0aGUgc2FtcGxlIHRhYmxlIGVudHJpZXMuCisgICAgICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goInVybCAiKTsKKyAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMSk7ICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTEgKHNlbGYtY29udGFpbmVkKQorICAgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gdXJsCisgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gZHJlZgorICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBkaW5mCiAKICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgic3RibCIpOwogCkBAIC02MTcsNiArMTUwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgIGZvdXJjYyA9ICJzYW1yIjsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjYXNlY21wKE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9XQiwgbWltZSkpIHsKICAgICAgICAgICAgICAgICAgICAgZm91cmNjID0gInNhd2IiOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAoTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDLCBtaW1lKSkgeworICAgICAgICAgICAgICAgICAgICBmb3VyY2MgPSAibXA0YSI7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgTE9HRSgiVW5rbm93biBtaW1lIHR5cGUgJyVzJy4iLCBtaW1lKTsKICAgICAgICAgICAgICAgICAgICAgQ0hFQ0soISJzaG91bGQgbm90IGJlIGhlcmUsIHVua25vd24gbWltZSB0eXBlLiIpOwpAQCAtNjI1LDEwICsxNTEzLDEyIEBACiAgICAgICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveChmb3VyY2MpOyAgICAgICAgICAvLyBhdWRpbyBmb3JtYXQKICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAvLyByZXNlcnZlZAotICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOyAgICAgICAgICAgLy8gZGF0YSByZWYgaW5kZXgKKyAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigweDEpOyAgICAgICAgIC8vIGRhdGEgcmVmIGluZGV4CiAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAvLyByZXNlcnZlZAogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgLy8gcmVzZXJ2ZWQKLSAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigyKTsgICAgICAgICAgIC8vIGNoYW5uZWwgY291bnQKKyAgICAgICAgICAgICAgICAgIGludDMyX3QgbkNoYW5uZWxzOworICAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodHJ1ZSwgbU1ldGEtPmZpbmRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCAmbkNoYW5uZWxzKSk7CisgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYobkNoYW5uZWxzKTsgICAvLyBjaGFubmVsIGNvdW50CiAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMTYpOyAgICAgICAgICAvLyBzYW1wbGUgc2l6ZQogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOyAgICAgICAgICAgLy8gcHJlZGVmaW5lZAogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOyAgICAgICAgICAgLy8gcmVzZXJ2ZWQKQEAgLTYzOCw2ICsxNTI4LDM4IEBACiAgICAgICAgICAgICAgICAgICBDSEVDSyhzdWNjZXNzKTsKIAogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKHNhbXBsZXJhdGUgPDwgMTYpOworICAgICAgICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKE1FRElBX01JTUVUWVBFX0FVRElPX0FBQywgbWltZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgiZXNkcyIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MDMpOyAgIC8vIEVTX0Rlc2NyVGFnCisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OCgyMyArIG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDB4MDAwMCk7Ly8gRVNfSUQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MDApOworCisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OCgweDA0KTsgICAvLyBEZWNvZGVyQ29uZmlnRGVzY3JUYWcKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDE1ICsgbUNvZGVjU3BlY2lmaWNEYXRhU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OCgweDQwKTsgICAvLyBvYmplY3RUeXBlSW5kaWNhdGlvbiBJU08vSUVDIDE0NDkyLTIKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MTUpOyAgIC8vIHN0cmVhbVR5cGUgQXVkaW9TdHJlYW0KKworICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDB4MDMpOyAgLy8gWFhYCisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OCgweDAwKTsgICAvLyBidWZmZXIgc2l6ZSAyNC1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMig5NjAwMCk7IC8vIG1heCBiaXQgcmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDk2MDAwKTsgLy8gYXZnIGJpdCByYXRlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MDUpOyAgIC8vIERlY29kZXJTcGVjaWZpY0luZm9UYWcKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZShtQ29kZWNTcGVjaWZpY0RhdGEsIG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgdWludDhfdCBrRGF0YTJbXSA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAgLy8gU0xDb25maWdEZXNjcmlwdG9yVGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyCisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZShrRGF0YTIsIHNpemVvZihrRGF0YTIpKTsKKworICAgICAgICAgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gZXNkcworICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmICghc3RyY2FzZWNtcChNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgbWltZSkpIHsKQEAgLTY1Myw3ICsxNTc1LDcgQEAKIAogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgLy8gcmVzZXJ2ZWQKICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigwKTsgICAgICAgICAgIC8vIHJlc2VydmVkCi0gICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAvLyBkYXRhIHJlZiBpbmRleAorICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDEpOyAgICAgICAgICAgLy8gZGF0YSByZWYgaW5kZXgKICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigwKTsgICAgICAgICAgIC8vIHByZWRlZmluZWQKICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigwKTsgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAvLyBwcmVkZWZpbmVkCkBAIC02OTgsNyArMTYyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMywgMHhlOCwgMHgwMAogICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGUoa0RhdGEsIHNpemVvZihrRGF0YSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MDUpOyAgLy8gRGVjb2RlclNwZWNpZmljSW5mb1RhZwogCiAgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OChtQ29kZWNTcGVjaWZpY0RhdGFTaXplKTsKQEAgLTcyNyw1OSArMTY0OSw3OCBAQAogICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBhdmNDCiAgICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goInBhc3AiKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIHBpeGVsIGlzIG5vdCBzcXVhcmUKKyAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDEgPDwgMTYpOyAgLy8gaHNwYWNpbmcKKyAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDEgPDwgMTYpOyAgLy8gdnNwYWNpbmcKKyAgICAgICAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBwYXNwCiAgICAgICAgICAgICAgICAgbU93bmVyLT5lbmRCb3goKTsgIC8vIG1wNHYsIHMyNjMgb3IgYXZjMQogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHNkCiAKICAgICAgICAgICBtT3duZXItPmJlZ2luQm94KCJzdHRzIik7CiAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKLSAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihtU2FtcGxlSW5mb3Muc2l6ZSgpIC0gMSk7Ci0KLSAgICAgICAgICAgIExpc3Q8U2FtcGxlSW5mbz46Oml0ZXJhdG9yIGl0ID0gbVNhbXBsZUluZm9zLmJlZ2luKCk7Ci0gICAgICAgICAgICBpbnQ2NF90IGxhc3QgPSAoKml0KS50aW1lc3RhbXA7Ci0gICAgICAgICAgICArK2l0OwotICAgICAgICAgICAgd2hpbGUgKGl0ICE9IG1TYW1wbGVJbmZvcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxKTsKLSAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoKCppdCkudGltZXN0YW1wIC0gbGFzdCk7Ci0KLSAgICAgICAgICAgICAgICBsYXN0ID0gKCppdCkudGltZXN0YW1wOwotCi0gICAgICAgICAgICAgICAgKytpdDsKKyAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihtU3R0c1RhYmxlRW50cmllcy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChMaXN0PFN0dHNUYWJsZUVudHJ5Pjo6aXRlcmF0b3IgaXQgPSBtU3R0c1RhYmxlRW50cmllcy5iZWdpbigpOworICAgICAgICAgICAgICAgICBpdCAhPSBtU3R0c1RhYmxlRW50cmllcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihpdC0+c2FtcGxlQ291bnQpOworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihpdC0+c2FtcGxlRHVyYXRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHRzCiAKKyAgICAgICAgICBpZiAoIWlzX2F1ZGlvKSB7CisgICAgICAgICAgICBtT3duZXItPmJlZ2luQm94KCJzdHNzIik7CisgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgIC8vIHZlcnNpb249MCwgZmxhZ3M9MAorICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIobVN0c3NUYWJsZUVudHJpZXMuc2l6ZSgpKTsgIC8vIG51bWJlciBvZiBzeW5jIGZyYW1lcworICAgICAgICAgICAgICBmb3IgKExpc3Q8aW50MzJfdD46Oml0ZXJhdG9yIGl0ID0gbVN0c3NUYWJsZUVudHJpZXMuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgICBpdCAhPSBtU3Rzc1RhYmxlRW50cmllcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKCppdCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHNzCisgICAgICAgICAgfQorCiAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgic3RzeiIpOwogICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgLy8gdmVyc2lvbj0wLCBmbGFncz0wCi0gICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAvLyBkZWZhdWx0IHNhbXBsZSBzaXplCisgICAgICAgICAgICBpZiAobVNhbXBsZXNIYXZlU2FtZVNpemUpIHsKKyAgICAgICAgICAgICAgICBMaXN0PFNhbXBsZUluZm8+OjppdGVyYXRvciBpdCA9IG1TYW1wbGVJbmZvcy5iZWdpbigpOworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihpdC0+c2l6ZSk7ICAvLyBkZWZhdWx0IHNhbXBsZSBzaXplCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihtU2FtcGxlSW5mb3Muc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvciAoTGlzdDxTYW1wbGVJbmZvPjo6aXRlcmF0b3IgaXQgPSBtU2FtcGxlSW5mb3MuYmVnaW4oKTsKLSAgICAgICAgICAgICAgICAgaXQgIT0gbVNhbXBsZUluZm9zLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKCgqaXQpLnNpemUpOworICAgICAgICAgICAgaWYgKCFtU2FtcGxlc0hhdmVTYW1lU2l6ZSkgeworICAgICAgICAgICAgICAgIGZvciAoTGlzdDxTYW1wbGVJbmZvPjo6aXRlcmF0b3IgaXQgPSBtU2FtcGxlSW5mb3MuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgICAgIGl0ICE9IG1TYW1wbGVJbmZvcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoKCppdCkuc2l6ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHN6CiAKICAgICAgICAgICBtT3duZXItPmJlZ2luQm94KCJzdHNjIik7CiAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKLSAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihtU2FtcGxlSW5mb3Muc2l6ZSgpKTsKLSAgICAgICAgICAgIGludDMyX3QgbiA9IDE7Ci0gICAgICAgICAgICBmb3IgKExpc3Q8U2FtcGxlSW5mbz46Oml0ZXJhdG9yIGl0ID0gbVNhbXBsZUluZm9zLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgIGl0ICE9IG1TYW1wbGVJbmZvcy5lbmQoKTsgKytpdCwgKytuKSB7Ci0gICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKG4pOwotICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxKTsKLSAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMSk7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIobVN0c2NUYWJsZUVudHJpZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTGlzdDxTdHNjVGFibGVFbnRyeT46Oml0ZXJhdG9yIGl0ID0gbVN0c2NUYWJsZUVudHJpZXMuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgaXQgIT0gbVN0c2NUYWJsZUVudHJpZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoaXQtPmZpcnN0Q2h1bmspOworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihpdC0+c2FtcGxlc1BlckNodW5rKTsKKyAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoaXQtPnNhbXBsZURlc2NyaXB0aW9uSWQpOwogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHNjCi0KLSAgICAgICAgICBtT3duZXItPmJlZ2luQm94KCJjbzY0Iik7CisgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCh1c2UzMkJpdE9mZnNldD8gInN0Y28iOiAiY282NCIpOwogICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgLy8gdmVyc2lvbj0wLCBmbGFncz0wCi0gICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIobVNhbXBsZUluZm9zLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKExpc3Q8U2FtcGxlSW5mbz46Oml0ZXJhdG9yIGl0ID0gbVNhbXBsZUluZm9zLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgIGl0ICE9IG1TYW1wbGVJbmZvcy5lbmQoKTsgKytpdCwgKytuKSB7Ci0gICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDY0KCgqaXQpLm9mZnNldCk7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIobUNodW5rT2Zmc2V0cy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChMaXN0PG9mZl90Pjo6aXRlcmF0b3IgaXQgPSBtQ2h1bmtPZmZzZXRzLmJlZ2luKCk7CisgICAgICAgICAgICAgICAgIGl0ICE9IG1DaHVua09mZnNldHMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICBpZiAodXNlMzJCaXRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKHN0YXRpY19jYXN0PGludDMyX3Q+KCppdCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ2NCgoKml0KSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBjbzY0CiAKICAgICAgICAgbU93bmVyLT5lbmRCb3goKTsgIC8vIHN0YmwKKyAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gbWluZgogICAgICAgbU93bmVyLT5lbmRCb3goKTsgIC8vIG1kaWEKICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gdHJhawogfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01lZGlhRGVmcy5jcHAKaW5kZXggNGIzODEzYi4uMzlkMjY0YyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NZWRpYURlZnMuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAKIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0lNQUdFX0pQRUcgPSAiaW1hZ2UvanBlZyI7CiAKK2NvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX1ZJREVPX1ZQWCA9ICJ2aWRlby94LXZuZC5vbjIudnA4IjsKIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX1ZJREVPX0FWQyA9ICJ2aWRlby9hdmMiOwogY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQgPSAidmlkZW8vbXA0di1lcyI7CiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzID0gInZpZGVvLzNncHAiOwpAQCAtMzYsNSArMzcsNyBAQAogY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX01QRUc0ID0gInZpZGVvL21wZWc0IjsKIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9XQVYgPSAiYXVkaW8vd2F2IjsKIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9PR0cgPSAiYXBwbGljYXRpb24vb2dnIjsKK2NvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NQVRST1NLQSA9ICJ2aWRlby94LW1hdHJvc2thIjsKK2NvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHMlRTID0gInZpZGVvL21wMnRzIjsKIAogfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01lZGlhRXh0cmFjdG9yLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01lZGlhRXh0cmFjdG9yLmNwcAppbmRleCA1MTNmNDljLi41NmU2MTM2IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9NZWRpYUV4dHJhY3Rvci5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTWVkaWFFeHRyYWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw5IEBACiAjaW5jbHVkZSAiaW5jbHVkZS9NUEVHNEV4dHJhY3Rvci5oIgogI2luY2x1ZGUgImluY2x1ZGUvV0FWRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9PZ2dFeHRyYWN0b3IuaCIKKyNpbmNsdWRlICJpbmNsdWRlL01QRUcyVFNFeHRyYWN0b3IuaCIKKworI2luY2x1ZGUgIm1hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmgiCiAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CkBAIC02OSw2ICs3MiwxMCBAQAogICAgICAgICByZXR1cm4gbmV3IFdBVkV4dHJhY3Rvcihzb3VyY2UpOwogICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX09HRykpIHsKICAgICAgICAgcmV0dXJuIG5ldyBPZ2dFeHRyYWN0b3Ioc291cmNlKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjYXNlY21wKG1pbWUsIE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NQVRST1NLQSkpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBNYXRyb3NrYUV4dHJhY3Rvcihzb3VyY2UpOworICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX01QRUcyVFMpKSB7CisgICAgICAgIHJldHVybiBuZXcgTVBFRzJUU0V4dHJhY3Rvcihzb3VyY2UpOwogICAgIH0KIAogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTnVDYWNoZWRTb3VyY2UyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L051Q2FjaGVkU291cmNlMi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAyYjdmMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L051Q2FjaGVkU291cmNlMi5jcHAKQEAgLTAsMCArMSw0NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIk51Q2FjaGVkU291cmNlMiIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgImluY2x1ZGUvTnVDYWNoZWRTb3VyY2UyLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBQYWdlQ2FjaGUgeworICAgIFBhZ2VDYWNoZShzaXplX3QgcGFnZVNpemUpOworICAgIH5QYWdlQ2FjaGUoKTsKKworICAgIHN0cnVjdCBQYWdlIHsKKyAgICAgICAgdm9pZCAqbURhdGE7CisgICAgICAgIHNpemVfdCBtU2l6ZTsKKyAgICB9OworCisgICAgUGFnZSAqYWNxdWlyZVBhZ2UoKTsKKyAgICB2b2lkIHJlbGVhc2VQYWdlKFBhZ2UgKnBhZ2UpOworCisgICAgdm9pZCBhcHBlbmRQYWdlKFBhZ2UgKnBhZ2UpOworICAgIHNpemVfdCByZWxlYXNlRnJvbVN0YXJ0KHNpemVfdCBtYXhCeXRlcyk7CisKKyAgICBzaXplX3QgdG90YWxTaXplKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbVRvdGFsU2l6ZTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHkoc2l6ZV90IGZyb20sIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbVBhZ2VTaXplOworICAgIHNpemVfdCBtVG90YWxTaXplOworCisgICAgTGlzdDxQYWdlICo+IG1BY3RpdmVQYWdlczsKKyAgICBMaXN0PFBhZ2UgKj4gbUZyZWVQYWdlczsKKworICAgIHZvaWQgZnJlZVBhZ2VzKExpc3Q8UGFnZSAqPiAqbGlzdCk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhQYWdlQ2FjaGUpOworfTsKKworUGFnZUNhY2hlOjpQYWdlQ2FjaGUoc2l6ZV90IHBhZ2VTaXplKQorICAgIDogbVBhZ2VTaXplKHBhZ2VTaXplKSwKKyAgICAgIG1Ub3RhbFNpemUoMCkgeworfQorCitQYWdlQ2FjaGU6On5QYWdlQ2FjaGUoKSB7CisgICAgZnJlZVBhZ2VzKCZtQWN0aXZlUGFnZXMpOworICAgIGZyZWVQYWdlcygmbUZyZWVQYWdlcyk7Cit9CisKK3ZvaWQgUGFnZUNhY2hlOjpmcmVlUGFnZXMoTGlzdDxQYWdlICo+ICpsaXN0KSB7CisgICAgTGlzdDxQYWdlICo+OjppdGVyYXRvciBpdCA9IGxpc3QtPmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IGxpc3QtPmVuZCgpKSB7CisgICAgICAgIFBhZ2UgKnBhZ2UgPSAqaXQ7CisKKyAgICAgICAgZnJlZShwYWdlLT5tRGF0YSk7CisgICAgICAgIGRlbGV0ZSBwYWdlOworICAgICAgICBwYWdlID0gTlVMTDsKKworICAgICAgICArK2l0OworICAgIH0KK30KKworUGFnZUNhY2hlOjpQYWdlICpQYWdlQ2FjaGU6OmFjcXVpcmVQYWdlKCkgeworICAgIGlmICghbUZyZWVQYWdlcy5lbXB0eSgpKSB7CisgICAgICAgIExpc3Q8UGFnZSAqPjo6aXRlcmF0b3IgaXQgPSBtRnJlZVBhZ2VzLmJlZ2luKCk7CisgICAgICAgIFBhZ2UgKnBhZ2UgPSAqaXQ7CisgICAgICAgIG1GcmVlUGFnZXMuZXJhc2UoaXQpOworCisgICAgICAgIHJldHVybiBwYWdlOworICAgIH0KKworICAgIFBhZ2UgKnBhZ2UgPSBuZXcgUGFnZTsKKyAgICBwYWdlLT5tRGF0YSA9IG1hbGxvYyhtUGFnZVNpemUpOworICAgIHBhZ2UtPm1TaXplID0gMDsKKworICAgIHJldHVybiBwYWdlOworfQorCit2b2lkIFBhZ2VDYWNoZTo6cmVsZWFzZVBhZ2UoUGFnZSAqcGFnZSkgeworICAgIHBhZ2UtPm1TaXplID0gMDsKKyAgICBtRnJlZVBhZ2VzLnB1c2hfYmFjayhwYWdlKTsKK30KKwordm9pZCBQYWdlQ2FjaGU6OmFwcGVuZFBhZ2UoUGFnZSAqcGFnZSkgeworICAgIG1Ub3RhbFNpemUgKz0gcGFnZS0+bVNpemU7CisgICAgbUFjdGl2ZVBhZ2VzLnB1c2hfYmFjayhwYWdlKTsKK30KKworc2l6ZV90IFBhZ2VDYWNoZTo6cmVsZWFzZUZyb21TdGFydChzaXplX3QgbWF4Qnl0ZXMpIHsKKyAgICBzaXplX3QgYnl0ZXNSZWxlYXNlZCA9IDA7CisKKyAgICB3aGlsZSAobWF4Qnl0ZXMgPiAwICYmICFtQWN0aXZlUGFnZXMuZW1wdHkoKSkgeworICAgICAgICBMaXN0PFBhZ2UgKj46Oml0ZXJhdG9yIGl0ID0gbUFjdGl2ZVBhZ2VzLmJlZ2luKCk7CisKKyAgICAgICAgUGFnZSAqcGFnZSA9ICppdDsKKworICAgICAgICBpZiAobWF4Qnl0ZXMgPCBwYWdlLT5tU2l6ZSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtQWN0aXZlUGFnZXMuZXJhc2UoaXQpOworCisgICAgICAgIG1heEJ5dGVzIC09IHBhZ2UtPm1TaXplOworICAgICAgICBieXRlc1JlbGVhc2VkICs9IHBhZ2UtPm1TaXplOworCisgICAgICAgIHJlbGVhc2VQYWdlKHBhZ2UpOworICAgIH0KKworICAgIG1Ub3RhbFNpemUgLT0gYnl0ZXNSZWxlYXNlZDsKKyAgICByZXR1cm4gYnl0ZXNSZWxlYXNlZDsKK30KKwordm9pZCBQYWdlQ2FjaGU6OmNvcHkoc2l6ZV90IGZyb20sIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJjb3B5IGZyb20gIiA8PCBmcm9tIDw8ICIgc2l6ZSAiIDw8IHNpemU7CisKKyAgICBDSEVDS19MRShmcm9tICsgc2l6ZSwgbVRvdGFsU2l6ZSk7CisKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBMaXN0PFBhZ2UgKj46Oml0ZXJhdG9yIGl0ID0gbUFjdGl2ZVBhZ2VzLmJlZ2luKCk7CisgICAgd2hpbGUgKGZyb20gPj0gb2Zmc2V0ICsgKCppdCktPm1TaXplKSB7CisgICAgICAgIG9mZnNldCArPSAoKml0KS0+bVNpemU7CisgICAgICAgICsraXQ7CisgICAgfQorCisgICAgc2l6ZV90IGRlbHRhID0gZnJvbSAtIG9mZnNldDsKKyAgICBzaXplX3QgYXZhaWwgPSAoKml0KS0+bVNpemUgLSBkZWx0YTsKKworICAgIGlmIChhdmFpbCA+PSBzaXplKSB7CisgICAgICAgIG1lbWNweShkYXRhLCAoY29uc3QgdWludDhfdCAqKSgqaXQpLT5tRGF0YSArIGRlbHRhLCBzaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1lbWNweShkYXRhLCAoY29uc3QgdWludDhfdCAqKSgqaXQpLT5tRGF0YSArIGRlbHRhLCBhdmFpbCk7CisgICAgKytpdDsKKyAgICBkYXRhID0gKHVpbnQ4X3QgKilkYXRhICsgYXZhaWw7CisgICAgc2l6ZSAtPSBhdmFpbDsKKworICAgIHdoaWxlIChzaXplID4gMCkgeworICAgICAgICBzaXplX3QgY29weSA9ICgqaXQpLT5tU2l6ZTsKKyAgICAgICAgaWYgKGNvcHkgPiBzaXplKSB7CisgICAgICAgICAgICBjb3B5ID0gc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoZGF0YSwgKCppdCktPm1EYXRhLCBjb3B5KTsKKyAgICAgICAgZGF0YSA9ICh1aW50OF90ICopZGF0YSArIGNvcHk7CisgICAgICAgIHNpemUgLT0gY29weTsKKyAgICAgICAgKytpdDsKKyAgICB9Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK051Q2FjaGVkU291cmNlMjo6TnVDYWNoZWRTb3VyY2UyKGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UpCisgICAgOiBtU291cmNlKHNvdXJjZSksCisgICAgICBtUmVmbGVjdG9yKG5ldyBBSGFuZGxlclJlZmxlY3RvcjxOdUNhY2hlZFNvdXJjZTI+KHRoaXMpKSwKKyAgICAgIG1Mb29wZXIobmV3IEFMb29wZXIpLAorICAgICAgbUNhY2hlKG5ldyBQYWdlQ2FjaGUoa1BhZ2VTaXplKSksCisgICAgICBtQ2FjaGVPZmZzZXQoMCksCisgICAgICBtRmluYWxTdGF0dXMoT0spLAorICAgICAgbUxhc3RBY2Nlc3NQb3MoMCksCisgICAgICBtRmV0Y2hpbmcodHJ1ZSksCisgICAgICBtTGFzdEZldGNoVGltZVVzKC0xKSB7CisgICAgbUxvb3Blci0+cmVnaXN0ZXJIYW5kbGVyKG1SZWZsZWN0b3IpOworICAgIG1Mb29wZXItPnN0YXJ0KCk7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIChuZXcgQU1lc3NhZ2Uoa1doYXRGZXRjaE1vcmUsIG1SZWZsZWN0b3ItPmlkKCkpKS0+cG9zdCgpOworfQorCitOdUNhY2hlZFNvdXJjZTI6On5OdUNhY2hlZFNvdXJjZTIoKSB7CisgICAgbUxvb3Blci0+c3RvcCgpOworICAgIG1Mb29wZXItPnVucmVnaXN0ZXJIYW5kbGVyKG1SZWZsZWN0b3ItPmlkKCkpOworCisgICAgZGVsZXRlIG1DYWNoZTsKKyAgICBtQ2FjaGUgPSBOVUxMOworfQorCitzdGF0dXNfdCBOdUNhY2hlZFNvdXJjZTI6OmluaXRDaGVjaygpIGNvbnN0IHsKKyAgICByZXR1cm4gbVNvdXJjZS0+aW5pdENoZWNrKCk7Cit9CisKK3N0YXR1c190IE51Q2FjaGVkU291cmNlMjo6Z2V0U2l6ZShvZmZfdCAqc2l6ZSkgeworICAgIHJldHVybiBtU291cmNlLT5nZXRTaXplKHNpemUpOworfQorCit1aW50MzJfdCBOdUNhY2hlZFNvdXJjZTI6OmZsYWdzKCkgeworICAgIHJldHVybiBtU291cmNlLT5mbGFncygpOworfQorCit2b2lkIE51Q2FjaGVkU291cmNlMjo6b25NZXNzYWdlUmVjZWl2ZWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBzd2l0Y2ggKG1zZy0+d2hhdCgpKSB7CisgICAgICAgIGNhc2Uga1doYXRGZXRjaE1vcmU6CisgICAgICAgIHsKKyAgICAgICAgICAgIG9uRmV0Y2goKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBrV2hhdFJlYWQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG9uUmVhZChtc2cpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICB9Cit9CisKK3ZvaWQgTnVDYWNoZWRTb3VyY2UyOjpmZXRjaEludGVybmFsKCkgeworICAgIExPRyhWRVJCT1NFKSA8PCAiZmV0Y2hJbnRlcm5hbCI7CisKKyAgICBDSEVDS19FUShtRmluYWxTdGF0dXMsIChzdGF0dXNfdClPSyk7CisKKyAgICBQYWdlQ2FjaGU6OlBhZ2UgKnBhZ2UgPSBtQ2FjaGUtPmFjcXVpcmVQYWdlKCk7CisKKyAgICBzc2l6ZV90IG4gPSBtU291cmNlLT5yZWFkQXQoCisgICAgICAgICAgICBtQ2FjaGVPZmZzZXQgKyBtQ2FjaGUtPnRvdGFsU2l6ZSgpLCBwYWdlLT5tRGF0YSwga1BhZ2VTaXplKTsKKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAic291cmNlIHJldHVybmVkIGVycm9yICIgPDwgbjsKKyAgICAgICAgbUZpbmFsU3RhdHVzID0gbjsKKyAgICAgICAgbUNhY2hlLT5yZWxlYXNlUGFnZShwYWdlKTsKKyAgICB9IGVsc2UgaWYgKG4gPT0gMCkgeworICAgICAgICBMT0coSU5GTykgPDwgIkVSUk9SX0VORF9PRl9TVFJFQU0iOworICAgICAgICBtRmluYWxTdGF0dXMgPSBFUlJPUl9FTkRfT0ZfU1RSRUFNOworICAgICAgICBtQ2FjaGUtPnJlbGVhc2VQYWdlKHBhZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHBhZ2UtPm1TaXplID0gbjsKKyAgICAgICAgbUNhY2hlLT5hcHBlbmRQYWdlKHBhZ2UpOworICAgIH0KK30KKwordm9pZCBOdUNhY2hlZFNvdXJjZTI6Om9uRmV0Y2goKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJvbkZldGNoIjsKKworICAgIGlmIChtRmluYWxTdGF0dXMgIT0gT0spIHsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJFT1MgcmVhY2hlZCwgZG9uZSBwcmVmZXRjaGluZyBmb3Igbm93IjsKKyAgICAgICAgbUZldGNoaW5nID0gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBrZWVwQWxpdmUgPQorICAgICAgICAhbUZldGNoaW5nCisgICAgICAgICAgICAmJiBtRmluYWxTdGF0dXMgPT0gT0sKKyAgICAgICAgICAgICYmIEFMb29wZXI6OkdldE5vd1VzKCkgPj0gbUxhc3RGZXRjaFRpbWVVcyArIGtLZWVwQWxpdmVJbnRlcnZhbFVzOworCisgICAgaWYgKG1GZXRjaGluZyB8fCBrZWVwQWxpdmUpIHsKKyAgICAgICAgaWYgKGtlZXBBbGl2ZSkgeworICAgICAgICAgICAgTE9HKElORk8pIDw8ICJLZWVwIGFsaXZlIjsKKyAgICAgICAgfQorCisgICAgICAgIGZldGNoSW50ZXJuYWwoKTsKKworICAgICAgICBtTGFzdEZldGNoVGltZVVzID0gQUxvb3Blcjo6R2V0Tm93VXMoKTsKKworICAgICAgICBpZiAobUZldGNoaW5nICYmIG1DYWNoZS0+dG90YWxTaXplKCkgPj0ga0hpZ2hXYXRlclRocmVzaG9sZCkgeworICAgICAgICAgICAgTE9HKElORk8pIDw8ICJDYWNoZSBmdWxsLCBkb25lIHByZWZldGNoaW5nIGZvciBub3ciOworICAgICAgICAgICAgbUZldGNoaW5nID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgICAgICByZXN0YXJ0UHJlZmV0Y2hlcklmTmVjZXNzYXJ5X2woKTsKKyAgICB9CisKKyAgICAobmV3IEFNZXNzYWdlKGtXaGF0RmV0Y2hNb3JlLCBtUmVmbGVjdG9yLT5pZCgpKSktPnBvc3QoCisgICAgICAgICAgICBtRmV0Y2hpbmcgPyAwIDogMTAwMDAwbGwpOworfQorCit2b2lkIE51Q2FjaGVkU291cmNlMjo6b25SZWFkKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJvblJlYWQiOworCisgICAgaW50NjRfdCBvZmZzZXQ7CisgICAgQ0hFQ0sobXNnLT5maW5kSW50NjQoIm9mZnNldCIsICZvZmZzZXQpKTsKKworICAgIHZvaWQgKmRhdGE7CisgICAgQ0hFQ0sobXNnLT5maW5kUG9pbnRlcigiZGF0YSIsICZkYXRhKSk7CisKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBDSEVDSyhtc2ctPmZpbmRTaXplKCJzaXplIiwgJnNpemUpKTsKKworICAgIHNzaXplX3QgcmVzdWx0ID0gcmVhZEludGVybmFsKG9mZnNldCwgZGF0YSwgc2l6ZSk7CisKKyAgICBpZiAocmVzdWx0ID09IC1FQUdBSU4pIHsKKyAgICAgICAgbXNnLT5wb3N0KDUwMDAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBDSEVDSyhtQXN5bmNSZXN1bHQgPT0gTlVMTCk7CisKKyAgICBtQXN5bmNSZXN1bHQgPSBuZXcgQU1lc3NhZ2U7CisgICAgbUFzeW5jUmVzdWx0LT5zZXRJbnQzMigicmVzdWx0IiwgcmVzdWx0KTsKKworICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Cit9CisKK3ZvaWQgTnVDYWNoZWRTb3VyY2UyOjpyZXN0YXJ0UHJlZmV0Y2hlcklmTmVjZXNzYXJ5X2woKSB7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrR3JheUFyZWEgPSAyNTYgKiAxMDI0OworCisgICAgaWYgKG1GZXRjaGluZyB8fCBtRmluYWxTdGF0dXMgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtQ2FjaGVPZmZzZXQgKyBtQ2FjaGUtPnRvdGFsU2l6ZSgpIC0gbUxhc3RBY2Nlc3NQb3MKKyAgICAgICAgICAgID49IGtMb3dXYXRlclRocmVzaG9sZCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2l6ZV90IG1heEJ5dGVzID0gbUxhc3RBY2Nlc3NQb3MgLSBtQ2FjaGVPZmZzZXQ7CisgICAgaWYgKG1heEJ5dGVzIDwga0dyYXlBcmVhKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYXhCeXRlcyAtPSBrR3JheUFyZWE7CisKKyAgICBzaXplX3QgYWN0dWFsQnl0ZXMgPSBtQ2FjaGUtPnJlbGVhc2VGcm9tU3RhcnQobWF4Qnl0ZXMpOworICAgIG1DYWNoZU9mZnNldCArPSBhY3R1YWxCeXRlczsKKworICAgIExPRyhJTkZPKSA8PCAicmVzdGFydGluZyBwcmVmZXRjaGVyLCB0b3RhbFNpemUgPSAiIDw8IG1DYWNoZS0+dG90YWxTaXplKCk7CisgICAgbUZldGNoaW5nID0gdHJ1ZTsKK30KKworc3NpemVfdCBOdUNhY2hlZFNvdXJjZTI6OnJlYWRBdChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9TZXJpYWxpemVyKG1TZXJpYWxpemVyKTsKKworICAgIExPRyhWRVJCT1NFKSA8PCAicmVhZEF0IG9mZnNldCAiIDw8IG9mZnNldCA8PCAiIHNpemUgIiA8PCBzaXplOworCisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIC8vIElmIHRoZSByZXF1ZXN0IGNhbiBiZSBjb21wbGV0ZWx5IHNhdGlzZmllZCBmcm9tIHRoZSBjYWNoZSwgZG8gc28uCisKKyAgICBpZiAob2Zmc2V0ID49IG1DYWNoZU9mZnNldAorICAgICAgICAgICAgJiYgb2Zmc2V0ICsgc2l6ZSA8PSBtQ2FjaGVPZmZzZXQgKyBtQ2FjaGUtPnRvdGFsU2l6ZSgpKSB7CisgICAgICAgIHNpemVfdCBkZWx0YSA9IG9mZnNldCAtIG1DYWNoZU9mZnNldDsKKyAgICAgICAgbUNhY2hlLT5jb3B5KGRlbHRhLCBkYXRhLCBzaXplKTsKKworICAgICAgICBtTGFzdEFjY2Vzc1BvcyA9IG9mZnNldCArIHNpemU7CisKKyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgfQorCisgICAgc3A8QU1lc3NhZ2U+IG1zZyA9IG5ldyBBTWVzc2FnZShrV2hhdFJlYWQsIG1SZWZsZWN0b3ItPmlkKCkpOworICAgIG1zZy0+c2V0SW50NjQoIm9mZnNldCIsIG9mZnNldCk7CisgICAgbXNnLT5zZXRQb2ludGVyKCJkYXRhIiwgZGF0YSk7CisgICAgbXNnLT5zZXRTaXplKCJzaXplIiwgc2l6ZSk7CisKKyAgICBDSEVDSyhtQXN5bmNSZXN1bHQgPT0gTlVMTCk7CisgICAgbXNnLT5wb3N0KCk7CisKKyAgICB3aGlsZSAobUFzeW5jUmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1Mb2NrKTsKKyAgICB9CisKKyAgICBpbnQzMl90IHJlc3VsdDsKKyAgICBDSEVDSyhtQXN5bmNSZXN1bHQtPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgbUFzeW5jUmVzdWx0LmNsZWFyKCk7CisKKyAgICBpZiAocmVzdWx0ID4gMCkgeworICAgICAgICBtTGFzdEFjY2Vzc1BvcyA9IG9mZnNldCArIHJlc3VsdDsKKyAgICB9CisKKyAgICByZXR1cm4gKHNzaXplX3QpcmVzdWx0OworfQorCitzaXplX3QgTnVDYWNoZWRTb3VyY2UyOjpjYWNoZWRTaXplKCkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisgICAgcmV0dXJuIG1DYWNoZU9mZnNldCArIG1DYWNoZS0+dG90YWxTaXplKCk7Cit9CisKK3NpemVfdCBOdUNhY2hlZFNvdXJjZTI6OmFwcHJveERhdGFSZW1haW5pbmcoYm9vbCAqZW9zKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICByZXR1cm4gYXBwcm94RGF0YVJlbWFpbmluZ19sKGVvcyk7Cit9CisKK3NpemVfdCBOdUNhY2hlZFNvdXJjZTI6OmFwcHJveERhdGFSZW1haW5pbmdfbChib29sICplb3MpIHsKKyAgICAqZW9zID0gKG1GaW5hbFN0YXR1cyAhPSBPSyk7CisgICAgb2ZmX3QgbGFzdEJ5dGVQb3NDYWNoZWQgPSBtQ2FjaGVPZmZzZXQgKyBtQ2FjaGUtPnRvdGFsU2l6ZSgpOworICAgIGlmIChtTGFzdEFjY2Vzc1BvcyA8IGxhc3RCeXRlUG9zQ2FjaGVkKSB7CisgICAgICAgIHJldHVybiBsYXN0Qnl0ZVBvc0NhY2hlZCAtIG1MYXN0QWNjZXNzUG9zOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3NpemVfdCBOdUNhY2hlZFNvdXJjZTI6OnJlYWRJbnRlcm5hbChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJyZWFkSW50ZXJuYWwgb2Zmc2V0ICIgPDwgb2Zmc2V0IDw8ICIgc2l6ZSAiIDw8IHNpemU7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgaWYgKG9mZnNldCA8IG1DYWNoZU9mZnNldAorICAgICAgICAgICAgfHwgb2Zmc2V0ID49IChvZmZfdCkobUNhY2hlT2Zmc2V0ICsgbUNhY2hlLT50b3RhbFNpemUoKSkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IG9mZl90IGtQYWRkaW5nID0gMzI3Njg7CisKKyAgICAgICAgLy8gSW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIGRlY29kZWQgc3RyZWFtcywgb25jZSBvZiB0aGVtIHdpbGwKKyAgICAgICAgLy8gdHJpZ2dlciB0aGlzIHNlZWsgcmVxdWVzdCwgdGhlIG90aGVyIG9uZSB3aWxsIHJlcXVlc3QgZGF0YSAibmVhcmJ5IgorICAgICAgICAvLyBzb29uLCBhZGp1c3QgdGhlIHNlZWsgcG9zaXRpb24gc28gdGhhdCB0aGF0IHN1YnNlcXVlbnQgcmVxdWVzdAorICAgICAgICAvLyBkb2VzIG5vdCB0cmlnZ2VyIGFub3RoZXIgc2Vlay4KKyAgICAgICAgb2ZmX3Qgc2Vla09mZnNldCA9IChvZmZzZXQgPiBrUGFkZGluZykgPyBvZmZzZXQgLSBrUGFkZGluZyA6IDA7CisKKyAgICAgICAgc2Vla0ludGVybmFsX2woc2Vla09mZnNldCk7CisgICAgfQorCisgICAgc2l6ZV90IGRlbHRhID0gb2Zmc2V0IC0gbUNhY2hlT2Zmc2V0OworCisgICAgaWYgKG1GaW5hbFN0YXR1cyAhPSBPSykgeworICAgICAgICBpZiAoZGVsdGEgPj0gbUNhY2hlLT50b3RhbFNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIG1GaW5hbFN0YXR1czsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBhdmFpbCA9IG1DYWNoZS0+dG90YWxTaXplKCkgLSBkZWx0YTsKKyAgICAgICAgbUNhY2hlLT5jb3B5KGRlbHRhLCBkYXRhLCBhdmFpbCk7CisKKyAgICAgICAgcmV0dXJuIGF2YWlsOworICAgIH0KKworICAgIGlmIChvZmZzZXQgKyBzaXplIDw9IG1DYWNoZU9mZnNldCArIG1DYWNoZS0+dG90YWxTaXplKCkpIHsKKyAgICAgICAgbUNhY2hlLT5jb3B5KGRlbHRhLCBkYXRhLCBzaXplKTsKKworICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9CisKKyAgICBMT0coVkVSQk9TRSkgPDwgImRlZmVycmluZyByZWFkIjsKKworICAgIHJldHVybiAtRUFHQUlOOworfQorCitzdGF0dXNfdCBOdUNhY2hlZFNvdXJjZTI6OnNlZWtJbnRlcm5hbF9sKG9mZl90IG9mZnNldCkgeworICAgIG1MYXN0QWNjZXNzUG9zID0gb2Zmc2V0OworCisgICAgaWYgKG9mZnNldCA+PSBtQ2FjaGVPZmZzZXQKKyAgICAgICAgICAgICYmIG9mZnNldCA8PSAob2ZmX3QpKG1DYWNoZU9mZnNldCArIG1DYWNoZS0+dG90YWxTaXplKCkpKSB7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBMT0coSU5GTykgPDwgIm5ldyByYW5nZTogb2Zmc2V0PSAiIDw8IG9mZnNldDsKKworICAgIG1DYWNoZU9mZnNldCA9IG9mZnNldDsKKworICAgIHNpemVfdCB0b3RhbFNpemUgPSBtQ2FjaGUtPnRvdGFsU2l6ZSgpOworICAgIENIRUNLX0VRKG1DYWNoZS0+cmVsZWFzZUZyb21TdGFydCh0b3RhbFNpemUpLCB0b3RhbFNpemUpOworCisgICAgbUZpbmFsU3RhdHVzID0gT0s7CisgICAgbUZldGNoaW5nID0gdHJ1ZTsKKworICAgIHJldHVybiBPSzsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTnVIVFRQRGF0YVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9OdUhUVFBEYXRhU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjkyODVkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTnVIVFRQRGF0YVNvdXJjZS5jcHAKQEAgLTAsMCArMSwzMzggQEAKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiTnVIVFRQRGF0YVNvdXJjZSIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgImluY2x1ZGUvTnVIVFRQRGF0YVNvdXJjZS5oIgorCisjaW5jbHVkZSA8Y3V0aWxzL3Byb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdGF0aWMgYm9vbCBQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZygKKyAgICAgICAgY29uc3QgY2hhciAqZnJvbSwgdW5zaWduZWQgbG9uZyAqeCkgeworICAgIGNoYXIgKmVuZDsKKyAgICAqeCA9IHN0cnRvdWwoZnJvbSwgJmVuZCwgMTApOworCisgICAgaWYgKGVuZCA9PSBmcm9tIHx8ICplbmQgIT0gJ1wwJykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIFBhcnNlVVJMKAorICAgICAgICBjb25zdCBjaGFyICp1cmwsIFN0cmluZzggKmhvc3QsIHVuc2lnbmVkICpwb3J0LCBTdHJpbmc4ICpwYXRoKSB7CisgICAgaG9zdC0+c2V0VG8oIiIpOworICAgICpwb3J0ID0gMDsKKyAgICBwYXRoLT5zZXRUbygiIik7CisKKyAgICBpZiAoc3RybmNhc2VjbXAoImh0dHA6Ly8iLCB1cmwsIDcpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICpzbGFzaFBvcyA9IHN0cmNocigmdXJsWzddLCAnLycpOworCisgICAgaWYgKHNsYXNoUG9zID09IE5VTEwpIHsKKyAgICAgICAgaG9zdC0+c2V0VG8oJnVybFs3XSk7CisgICAgICAgIHBhdGgtPnNldFRvKCIvIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaG9zdC0+c2V0VG8oJnVybFs3XSwgc2xhc2hQb3MgLSAmdXJsWzddKTsKKyAgICAgICAgcGF0aC0+c2V0VG8oc2xhc2hQb3MpOworICAgIH0KKworICAgIGNoYXIgKmNvbG9uUG9zID0gc3RyY2hyKGhvc3QtPnN0cmluZygpLCAnOicpOworCisgICAgaWYgKGNvbG9uUG9zICE9IE5VTEwpIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyB4OworICAgICAgICBpZiAoIVBhcnNlU2luZ2xlVW5zaWduZWRMb25nKGNvbG9uUG9zICsgMSwgJngpIHx8IHggPj0gNjU1MzYpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgICpwb3J0ID0geDsKKworICAgICAgICBzaXplX3QgY29sb25PZmZzZXQgPSBjb2xvblBvcyAtIGhvc3QtPnN0cmluZygpOworICAgICAgICBTdHJpbmc4IHRtcChob3N0LT5zdHJpbmcoKSwgY29sb25PZmZzZXQpOworICAgICAgICAqaG9zdCA9IHRtcDsKKyAgICB9IGVsc2UgeworICAgICAgICAqcG9ydCA9IDgwOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitOdUhUVFBEYXRhU291cmNlOjpOdUhUVFBEYXRhU291cmNlKCkKKyAgICA6IG1TdGF0ZShESVNDT05ORUNURUQpLAorICAgICAgbVBvcnQoMCksCisgICAgICBtT2Zmc2V0KDApLAorICAgICAgbUNvbnRlbnRMZW5ndGgoMCksCisgICAgICBtQ29udGVudExlbmd0aFZhbGlkKGZhbHNlKSB7Cit9CisKK051SFRUUERhdGFTb3VyY2U6On5OdUhUVFBEYXRhU291cmNlKCkgeworfQorCitzdGF0dXNfdCBOdUhUVFBEYXRhU291cmNlOjpjb25uZWN0KAorICAgICAgICBjb25zdCBjaGFyICp1cmksCisgICAgICAgIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpvdmVycmlkZXMsCisgICAgICAgIG9mZl90IG9mZnNldCkgeworICAgIFN0cmluZzggaGVhZGVyczsKKyAgICBNYWtlRnVsbEhlYWRlcnMob3ZlcnJpZGVzLCAmaGVhZGVycyk7CisKKyAgICByZXR1cm4gY29ubmVjdCh1cmksIGhlYWRlcnMsIG9mZnNldCk7Cit9CisKK3N0YXR1c190IE51SFRUUERhdGFTb3VyY2U6OmNvbm5lY3QoCisgICAgICAgIGNvbnN0IGNoYXIgKnVyaSwKKyAgICAgICAgY29uc3QgU3RyaW5nOCAmaGVhZGVycywKKyAgICAgICAgb2ZmX3Qgb2Zmc2V0KSB7CisgICAgU3RyaW5nOCBob3N0LCBwYXRoOworICAgIHVuc2lnbmVkIHBvcnQ7CisgICAgaWYgKCFQYXJzZVVSTCh1cmksICZob3N0LCAmcG9ydCwgJnBhdGgpKSB7CisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvbm5lY3QoaG9zdCwgcG9ydCwgcGF0aCwgaGVhZGVycywgb2Zmc2V0KTsKK30KKworc3RhdHVzX3QgTnVIVFRQRGF0YVNvdXJjZTo6Y29ubmVjdCgKKyAgICAgICAgY29uc3QgY2hhciAqaG9zdCwgdW5zaWduZWQgcG9ydCwgY29uc3QgY2hhciAqcGF0aCwKKyAgICAgICAgY29uc3QgU3RyaW5nOCAmaGVhZGVycywKKyAgICAgICAgb2ZmX3Qgb2Zmc2V0KSB7CisgICAgTE9HSSgiY29ubmVjdCB0byAlczoldSVzIEAlbGQiLCBob3N0LCBwb3J0LCBwYXRoLCBvZmZzZXQpOworCisgICAgYm9vbCBuZWVkc1RvUmVjb25uZWN0ID0gdHJ1ZTsKKworICAgIGlmIChtU3RhdGUgPT0gQ09OTkVDVEVEICYmIGhvc3QgPT0gbUhvc3QgJiYgcG9ydCA9PSBtUG9ydAorICAgICAgICAgICAgJiYgb2Zmc2V0ID09IG1PZmZzZXQpIHsKKyAgICAgICAgaWYgKG1Db250ZW50TGVuZ3RoVmFsaWQgJiYgbU9mZnNldCA9PSBtQ29udGVudExlbmd0aCkgeworICAgICAgICAgICAgTE9HSSgiRGlkbid0IGhhdmUgdG8gcmVjb25uZWN0LCBvbGQgb25lJ3Mgc3RpbGwgZ29vZC4iKTsKKyAgICAgICAgICAgIG5lZWRzVG9SZWNvbm5lY3QgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1Ib3N0ID0gaG9zdDsKKyAgICBtUG9ydCA9IHBvcnQ7CisgICAgbVBhdGggPSBwYXRoOworICAgIG1IZWFkZXJzID0gaGVhZGVyczsKKworICAgIHN0YXR1c190IGVyciA9IE9LOworCisgICAgbVN0YXRlID0gQ09OTkVDVElORzsKKworICAgIGlmIChuZWVkc1RvUmVjb25uZWN0KSB7CisgICAgICAgIG1IVFRQLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZXJyID0gbUhUVFAuY29ubmVjdChob3N0LCBwb3J0KTsKKyAgICB9CisKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKKyAgICB9IGVsc2UgaWYgKG1TdGF0ZSAhPSBDT05ORUNUSU5HKSB7CisgICAgICAgIGVyciA9IFVOS05PV05fRVJST1I7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbVN0YXRlID0gQ09OTkVDVEVEOworCisgICAgICAgIG1PZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIG1Db250ZW50TGVuZ3RoID0gMDsKKyAgICAgICAgbUNvbnRlbnRMZW5ndGhWYWxpZCA9IGZhbHNlOworCisgICAgICAgIFN0cmluZzggcmVxdWVzdCgiR0VUICIpOworICAgICAgICByZXF1ZXN0LmFwcGVuZChtUGF0aCk7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgSFRUUC8xLjFcclxuIik7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJIb3N0OiAiKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQobUhvc3QpOworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgIGlmIChvZmZzZXQgIT0gMCkgeworICAgICAgICAgICAgY2hhciByYW5nZUhlYWRlclsxMjhdOworICAgICAgICAgICAgc3ByaW50ZihyYW5nZUhlYWRlciwgIlJhbmdlOiBieXRlcz0lbGQtXHJcbiIsIG9mZnNldCk7CisgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChyYW5nZUhlYWRlcik7CisgICAgICAgIH0KKworICAgICAgICByZXF1ZXN0LmFwcGVuZChtSGVhZGVycyk7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgaW50IGh0dHBTdGF0dXM7CisgICAgICAgIGlmICgoZXJyID0gbUhUVFAuc2VuZChyZXF1ZXN0LnN0cmluZygpLCByZXF1ZXN0LnNpemUoKSkpICE9IE9LCisgICAgICAgICAgICAgICAgfHwgKGVyciA9IG1IVFRQLnJlY2VpdmVfaGVhZGVyKCZodHRwU3RhdHVzKSkgIT0gT0spIHsKKyAgICAgICAgICAgIG1IVFRQLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaHR0cFN0YXR1cyA9PSAzMDIpIHsKKyAgICAgICAgICAgIHN0cmluZyB2YWx1ZTsKKyAgICAgICAgICAgIENIRUNLKG1IVFRQLmZpbmRfaGVhZGVyX3ZhbHVlKCJMb2NhdGlvbiIsICZ2YWx1ZSkpOworCisgICAgICAgICAgICBtU3RhdGUgPSBESVNDT05ORUNURUQ7CisKKyAgICAgICAgICAgIG1IVFRQLmRpc2Nvbm5lY3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3QodmFsdWUuY19zdHIoKSwgaGVhZGVycywgb2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChodHRwU3RhdHVzIDwgMjAwIHx8IGh0dHBTdGF0dXMgPj0gMzAwKSB7CisgICAgICAgICAgICBtU3RhdGUgPSBESVNDT05ORUNURUQ7CisgICAgICAgICAgICBtSFRUUC5kaXNjb25uZWN0KCk7CisKKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9JTzsKKyAgICAgICAgfQorCisgICAgICAgIGFwcGx5VGltZW91dFJlc3BvbnNlKCk7CisKKyAgICAgICAgaWYgKG9mZnNldCA9PSAwKSB7CisgICAgICAgICAgICBzdHJpbmcgdmFsdWU7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHg7CisgICAgICAgICAgICBpZiAobUhUVFAuZmluZF9oZWFkZXJfdmFsdWUoc3RyaW5nKCJDb250ZW50LUxlbmd0aCIpLCAmdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICYmIFBhcnNlU2luZ2xlVW5zaWduZWRMb25nKHZhbHVlLmNfc3RyKCksICZ4KSkgeworICAgICAgICAgICAgICAgIG1Db250ZW50TGVuZ3RoID0gKG9mZl90KXg7CisgICAgICAgICAgICAgICAgbUNvbnRlbnRMZW5ndGhWYWxpZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdHJpbmcgdmFsdWU7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHg7CisgICAgICAgICAgICBpZiAobUhUVFAuZmluZF9oZWFkZXJfdmFsdWUoc3RyaW5nKCJDb250ZW50LVJhbmdlIiksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzbGFzaFBvcyA9IHN0cmNocih2YWx1ZS5jX3N0cigpLCAnLycpOworICAgICAgICAgICAgICAgIGlmIChzbGFzaFBvcyAhPSBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZyhzbGFzaFBvcyArIDEsICZ4KSkgeworICAgICAgICAgICAgICAgICAgICBtQ29udGVudExlbmd0aCA9IHg7CisgICAgICAgICAgICAgICAgICAgIG1Db250ZW50TGVuZ3RoVmFsaWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlcnI7Cit9CisKK3ZvaWQgTnVIVFRQRGF0YVNvdXJjZTo6ZGlzY29ubmVjdCgpIHsKKyAgICBpZiAobVN0YXRlID09IENPTk5FQ1RJTkcgfHwgbVN0YXRlID09IENPTk5FQ1RFRCkgeworICAgICAgICBtSFRUUC5kaXNjb25uZWN0KCk7CisgICAgfQorICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKK30KKworc3RhdHVzX3QgTnVIVFRQRGF0YVNvdXJjZTo6aW5pdENoZWNrKCkgY29uc3QgeworICAgIHJldHVybiBtU3RhdGUgPT0gQ09OTkVDVEVEID8gT0sgOiBOT19JTklUOworfQorCitzc2l6ZV90IE51SFRUUERhdGFTb3VyY2U6OnJlYWRBdChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTE9HVigicmVhZEF0IG9mZnNldCAlbGQsIHNpemUgJWQiLCBvZmZzZXQsIHNpemUpOworCisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIGlmIChvZmZzZXQgIT0gbU9mZnNldCkgeworICAgICAgICBTdHJpbmc4IGhvc3QgPSBtSG9zdDsKKyAgICAgICAgU3RyaW5nOCBwYXRoID0gbVBhdGg7CisgICAgICAgIFN0cmluZzggaGVhZGVycyA9IG1IZWFkZXJzOworICAgICAgICBzdGF0dXNfdCBlcnIgPSBjb25uZWN0KGhvc3QsIG1Qb3J0LCBwYXRoLCBoZWFkZXJzLCBvZmZzZXQpOworCisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobUNvbnRlbnRMZW5ndGhWYWxpZCkgeworICAgICAgICBzaXplX3QgYXZhaWwgPQorICAgICAgICAgICAgKG9mZnNldCA+PSBtQ29udGVudExlbmd0aCkgPyAwIDogbUNvbnRlbnRMZW5ndGggLSBvZmZzZXQ7CisKKyAgICAgICAgaWYgKHNpemUgPiBhdmFpbCkgeworICAgICAgICAgICAgc2l6ZSA9IGF2YWlsOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZV90IG51bUJ5dGVzUmVhZCA9IDA7CisgICAgd2hpbGUgKG51bUJ5dGVzUmVhZCA8IHNpemUpIHsKKyAgICAgICAgc3NpemVfdCBuID0KKyAgICAgICAgICAgIG1IVFRQLnJlY2VpdmUoKHVpbnQ4X3QgKilkYXRhICsgbnVtQnl0ZXNSZWFkLCBzaXplIC0gbnVtQnl0ZXNSZWFkKTsKKworICAgICAgICBpZiAobiA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICB9CisKKyAgICAgICAgbnVtQnl0ZXNSZWFkICs9IChzaXplX3QpbjsKKworICAgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgICAgICBpZiAobUNvbnRlbnRMZW5ndGhWYWxpZCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGFuZCBtYWRlIHN1cmUgbm90IHRvIHJlYWQgYmV5b25kCisgICAgICAgICAgICAgICAgLy8gaXQgYW5kIHlldCB0aGUgc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiBvbiB1cy4KKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfSU87CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbU9mZnNldCArPSBudW1CeXRlc1JlYWQ7CisKKyAgICByZXR1cm4gbnVtQnl0ZXNSZWFkOworfQorCitzdGF0dXNfdCBOdUhUVFBEYXRhU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7CisgICAgKnNpemUgPSAwOworCisgICAgaWYgKG1TdGF0ZSAhPSBDT05ORUNURUQpIHsKKyAgICAgICAgcmV0dXJuIEVSUk9SX0lPOworICAgIH0KKworICAgIGlmIChtQ29udGVudExlbmd0aFZhbGlkKSB7CisgICAgICAgICpzaXplID0gbUNvbnRlbnRMZW5ndGg7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICByZXR1cm4gRVJST1JfVU5TVVBQT1JURUQ7Cit9CisKK3VpbnQzMl90IE51SFRUUERhdGFTb3VyY2U6OmZsYWdzKCkgeworICAgIHJldHVybiBrV2FudHNQcmVmZXRjaGluZzsKK30KKworLy8gc3RhdGljCit2b2lkIE51SFRUUERhdGFTb3VyY2U6Ok1ha2VGdWxsSGVhZGVycygKKyAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKm92ZXJyaWRlcywgU3RyaW5nOCAqaGVhZGVycykgeworICAgIGhlYWRlcnMtPnNldFRvKCIiKTsKKworICAgIGhlYWRlcnMtPmFwcGVuZCgiVXNlci1BZ2VudDogc3RhZ2VmcmlnaHQvMS4xIChMaW51eDtBbmRyb2lkICIpOworCisjaWYgKFBST1BFUlRZX1ZBTFVFX01BWCA8IDgpCisjZXJyb3IgIlBST1BFUlRZX1ZBTFVFX01BWCBtdXN0IGJlIGF0IGxlYXN0IDgiCisjZW5kaWYKKworICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKKyAgICBwcm9wZXJ0eV9nZXQoInJvLmJ1aWxkLnZlcnNpb24ucmVsZWFzZSIsIHZhbHVlLCAiVW5rbm93biIpOworICAgIGhlYWRlcnMtPmFwcGVuZCh2YWx1ZSk7CisgICAgaGVhZGVycy0+YXBwZW5kKCIpXHJcbiIpOworCisgICAgaWYgKG92ZXJyaWRlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG92ZXJyaWRlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5nOCBsaW5lOworICAgICAgICBsaW5lLmFwcGVuZChvdmVycmlkZXMtPmtleUF0KGkpKTsKKyAgICAgICAgbGluZS5hcHBlbmQoIjogIik7CisgICAgICAgIGxpbmUuYXBwZW5kKG92ZXJyaWRlcy0+dmFsdWVBdChpKSk7CisgICAgICAgIGxpbmUuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgaGVhZGVycy0+YXBwZW5kKGxpbmUpOworICAgIH0KK30KKwordm9pZCBOdUhUVFBEYXRhU291cmNlOjphcHBseVRpbWVvdXRSZXNwb25zZSgpIHsKKyAgICBzdHJpbmcgdGltZW91dDsKKyAgICBpZiAobUhUVFAuZmluZF9oZWFkZXJfdmFsdWUoIlgtU29ja2V0VGltZW91dCIsICZ0aW1lb3V0KSkgeworICAgICAgICBjb25zdCBjaGFyICpzID0gdGltZW91dC5jX3N0cigpOworICAgICAgICBjaGFyICplbmQ7CisgICAgICAgIGxvbmcgdG1wID0gc3RydG9sKHMsICZlbmQsIDEwKTsKKyAgICAgICAgaWYgKGVuZCA9PSBzIHx8ICplbmQgIT0gJ1wwJykgeworICAgICAgICAgICAgTE9HVygiSWxsZWdhbCBYLVNvY2tldFRpbWVvdXQgdmFsdWUgZ2l2ZW4uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMT0dJKCJvdmVycmlkaW5nIGRlZmF1bHQgdGltZW91dCwgbmV3IHRpbWVvdXQgaXMgJWxkIHNlY29uZHMiLCB0bXApOworICAgICAgICBtSFRUUC5zZXRSZWNlaXZlVGltZW91dCh0bXApOworICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L09NWENvZGVjLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L09NWENvZGVjLmNwcAppbmRleCA2OWRhN2VmLi44M2Y3MDQwIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9PTVhDb2RlYy5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvT01YQ29kZWMuY3BwCkBAIC0xOSwxMyArMTksMTYgQEAKICNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KIAogI2luY2x1ZGUgImluY2x1ZGUvQUFDRGVjb2Rlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvQUFDRW5jb2Rlci5oIgogI2luY2x1ZGUgImluY2x1ZGUvQU1STkJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9BTVJOQkVuY29kZXIuaCIKICNpbmNsdWRlICJpbmNsdWRlL0FNUldCRGVjb2Rlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvQU1SV0JFbmNvZGVyLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9BVkNEZWNvZGVyLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9NNHZIMjYzRGVjb2Rlci5oIgogI2luY2x1ZGUgImluY2x1ZGUvTVAzRGVjb2Rlci5oIgogI2luY2x1ZGUgImluY2x1ZGUvVm9yYmlzRGVjb2Rlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvVlBYRGVjb2Rlci5oIgogCiAjaW5jbHVkZSAiaW5jbHVkZS9FU0RTLmgiCiAKQEAgLTYwLDYgKzYzLDExIEBACiAgICAgcmV0dXJuIG5ldyBuYW1lKHNvdXJjZSk7IFwKIH0KIAorI2RlZmluZSBGQUNUT1JZX0NSRUFURV9FTkNPREVSKG5hbWUpIFwKK3N0YXRpYyBzcDxNZWRpYVNvdXJjZT4gTWFrZSMjbmFtZShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSwgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKSB7IFwKKyAgICByZXR1cm4gbmV3IG5hbWUoc291cmNlLCBtZXRhKTsgXAorfQorCiAjZGVmaW5lIEZBQ1RPUllfUkVGKG5hbWUpIHsgI25hbWUsIE1ha2UjI25hbWUgfSwKIAogRkFDVE9SWV9DUkVBVEUoTVAzRGVjb2RlcikKQEAgLTY5LDcgKzc3LDMzIEBACiBGQUNUT1JZX0NSRUFURShBVkNEZWNvZGVyKQogRkFDVE9SWV9DUkVBVEUoTTR2SDI2M0RlY29kZXIpCiBGQUNUT1JZX0NSRUFURShWb3JiaXNEZWNvZGVyKQotRkFDVE9SWV9DUkVBVEUoQU1STkJFbmNvZGVyKQorRkFDVE9SWV9DUkVBVEUoVlBYRGVjb2RlcikKK0ZBQ1RPUllfQ1JFQVRFX0VOQ09ERVIoQU1STkJFbmNvZGVyKQorRkFDVE9SWV9DUkVBVEVfRU5DT0RFUihBTVJXQkVuY29kZXIpCitGQUNUT1JZX0NSRUFURV9FTkNPREVSKEFBQ0VuY29kZXIpCisKK3N0YXRpYyBzcDxNZWRpYVNvdXJjZT4gSW5zdGFudGlhdGVTb2Z0d2FyZUVuY29kZXIoCisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlLAorICAgICAgICBjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEpIHsKKyAgICBzdHJ1Y3QgRmFjdG9yeUluZm8geworICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgICBzcDxNZWRpYVNvdXJjZT4gKCpDcmVhdGVGdW5jKShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJiwgY29uc3Qgc3A8TWV0YURhdGE+ICYpOworICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgRmFjdG9yeUluZm8ga0ZhY3RvcnlJbmZvW10gPSB7CisgICAgICAgIEZBQ1RPUllfUkVGKEFNUk5CRW5jb2RlcikKKyAgICAgICAgRkFDVE9SWV9SRUYoQU1SV0JFbmNvZGVyKQorICAgICAgICBGQUNUT1JZX1JFRihBQUNFbmNvZGVyKQorICAgIH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7CisgICAgICAgICBpIDwgc2l6ZW9mKGtGYWN0b3J5SW5mbykgLyBzaXplb2Yoa0ZhY3RvcnlJbmZvWzBdKTsgKytpKSB7CisgICAgICAgIGlmICghc3RyY21wKG5hbWUsIGtGYWN0b3J5SW5mb1tpXS5uYW1lKSkgeworICAgICAgICAgICAgcmV0dXJuICgqa0ZhY3RvcnlJbmZvW2ldLkNyZWF0ZUZ1bmMpKHNvdXJjZSwgbWV0YSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KIAogc3RhdGljIHNwPE1lZGlhU291cmNlPiBJbnN0YW50aWF0ZVNvZnR3YXJlQ29kZWMoCiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKSB7CkBAIC04Niw3ICsxMjAsNyBAQAogICAgICAgICBGQUNUT1JZX1JFRihBVkNEZWNvZGVyKQogICAgICAgICBGQUNUT1JZX1JFRihNNHZIMjYzRGVjb2RlcikKICAgICAgICAgRkFDVE9SWV9SRUYoVm9yYmlzRGVjb2RlcikKLSAgICAgICAgRkFDVE9SWV9SRUYoQU1STkJFbmNvZGVyKQorICAgICAgICBGQUNUT1JZX1JFRihWUFhEZWNvZGVyKQogICAgIH07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7CiAgICAgICAgICBpIDwgc2l6ZW9mKGtGYWN0b3J5SW5mbykgLyBzaXplb2Yoa0ZhY3RvcnlJbmZvWzBdKTsgKytpKSB7CkBAIC0xMTUsMzQgKzE0OSw0NCBAQAogICAgIHsgTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDLCAiT01YLlRJLkFBQy5kZWNvZGUiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJBQUNEZWNvZGVyIiB9LAogLy8gICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJPTVguUFYuYWFjZGVjIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJPTVgucWNvbS43eDMwLnZpZGVvLmRlY29kZXIubXBlZzQiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgIk9NWC5xY29tLnZpZGVvLmRlY29kZXIubXBlZzQiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgIk9NWC5USS5WaWRlby5EZWNvZGVyIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJNNHZIMjYzRGVjb2RlciIgfSwKIC8vICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJPTVguUFYubXBlZzRkZWMiIH0sCisgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzLCAiT01YLnFjb20uN3gzMC52aWRlby5kZWNvZGVyLmgyNjMiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzLCAiT01YLnFjb20udmlkZW8uZGVjb2Rlci5oMjYzIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MywgIk00dkgyNjNEZWNvZGVyIiB9LAogLy8gICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzLCAiT01YLlBWLmgyNjNkZWMiIH0sCisgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsICJPTVgucWNvbS43eDMwLnZpZGVvLmRlY29kZXIuYXZjIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDLCAiT01YLnFjb20udmlkZW8uZGVjb2Rlci5hdmMiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsICJPTVguVEkuVmlkZW8uRGVjb2RlciIgfSwKICAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQywgIkFWQ0RlY29kZXIiIH0sCiAvLyAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQywgIk9NWC5QVi5hdmNkZWMiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19WT1JCSVMsICJWb3JiaXNEZWNvZGVyIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fVlBYLCAiVlBYRGVjb2RlciIgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBDb2RlY0luZm8ga0VuY29kZXJJbmZvW10gPSB7CiAgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfTkIsICJPTVguVEkuQU1SLmVuY29kZSIgfSwKICAgICB7IE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9OQiwgIkFNUk5CRW5jb2RlciIgfSwKICAgICB7IE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9XQiwgIk9NWC5USS5XQkFNUi5lbmNvZGUiIH0sCisgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfV0IsICJBTVJXQkVuY29kZXIiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJPTVguVEkuQUFDLmVuY29kZSIgfSwKLSAgICB7IE1FRElBX01JTUVUWVBFX0FVRElPX0FBQywgIk9NWC5QVi5hYWNlbmMiIH0sCisgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJBQUNFbmNvZGVyIiB9LAorLy8gICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJPTVguUFYuYWFjZW5jIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJPTVgucWNvbS43eDMwLnZpZGVvLmVuY29kZXIubXBlZzQiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgIk9NWC5xY29tLnZpZGVvLmVuY29kZXIubXBlZzQiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgIk9NWC5USS5WaWRlby5lbmNvZGVyIiB9LAotICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJPTVguUFYubXBlZzRlbmMiIH0sCisvLyAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX01QRUc0LCAiT01YLlBWLm1wZWc0ZW5jIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MywgIk9NWC5xY29tLjd4MzAudmlkZW8uZW5jb2Rlci5oMjYzIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MywgIk9NWC5xY29tLnZpZGVvLmVuY29kZXIuaDI2MyIgfSwKICAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0gyNjMsICJPTVguVEkuVmlkZW8uZW5jb2RlciIgfSwKLSAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0gyNjMsICJPTVguUFYuaDI2M2VuYyIgfSwKKy8vICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MywgIk9NWC5QVi5oMjYzZW5jIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDLCAiT01YLnFjb20uN3gzMC52aWRlby5lbmNvZGVyLmF2YyIgfSwKKyAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQywgIk9NWC5xY29tLnZpZGVvLmVuY29kZXIuYXZjIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDLCAiT01YLlRJLlZpZGVvLmVuY29kZXIiIH0sCi0gICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsICJPTVguUFYuYXZjZW5jIiB9LAorLy8gICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsICJPTVguUFYuYXZjZW5jIiB9LAogfTsKIAogI3VuZGVmIE9QVElPTkFMCkBAIC0yOTYsMTAgKzM0MCwxNyBAQAogICAgICAgICBxdWlya3MgfD0ga1JlcXVpcmVzQWxsb2NhdGVCdWZmZXJPbklucHV0UG9ydHM7CiAgICAgICAgIHF1aXJrcyB8PSBrUmVxdWlyZXNBbGxvY2F0ZUJ1ZmZlck9uT3V0cHV0UG9ydHM7CiAgICAgfQorICAgIGlmICghc3RybmNtcChjb21wb25lbnROYW1lLCAiT01YLnFjb20uN3gzMC52aWRlby5lbmNvZGVyLiIsIDI4KSkgeworICAgIH0KICAgICBpZiAoIXN0cm5jbXAoY29tcG9uZW50TmFtZSwgIk9NWC5xY29tLnZpZGVvLmRlY29kZXIuIiwgMjMpKSB7CiAgICAgICAgIHF1aXJrcyB8PSBrUmVxdWlyZXNBbGxvY2F0ZUJ1ZmZlck9uT3V0cHV0UG9ydHM7CiAgICAgICAgIHF1aXJrcyB8PSBrRGVmZXJzT3V0cHV0QnVmZmVyQWxsb2NhdGlvbjsKICAgICB9CisgICAgaWYgKCFzdHJuY21wKGNvbXBvbmVudE5hbWUsICJPTVgucWNvbS43eDMwLnZpZGVvLmRlY29kZXIuIiwgMjgpKSB7CisgICAgICAgIHF1aXJrcyB8PSBrUmVxdWlyZXNBbGxvY2F0ZUJ1ZmZlck9uSW5wdXRQb3J0czsKKyAgICAgICAgcXVpcmtzIHw9IGtSZXF1aXJlc0FsbG9jYXRlQnVmZmVyT25PdXRwdXRQb3J0czsKKyAgICAgICAgcXVpcmtzIHw9IGtEZWZlcnNPdXRwdXRCdWZmZXJBbGxvY2F0aW9uOworICAgIH0KIAogICAgIGlmICghc3RybmNtcChjb21wb25lbnROYW1lLCAiT01YLlRJLiIsIDcpKSB7CiAgICAgICAgIC8vIEFwcGFyZW50bHkgSSBtdXN0IG5vdCB1c2UgT01YX1VzZUJ1ZmZlciBvbiBlaXRoZXIgaW5wdXQgb3IKQEAgLTMwOSw2ICszNjAsOSBAQAogCiAgICAgICAgIHF1aXJrcyB8PSBrUmVxdWlyZXNBbGxvY2F0ZUJ1ZmZlck9uSW5wdXRQb3J0czsKICAgICAgICAgcXVpcmtzIHw9IGtSZXF1aXJlc0FsbG9jYXRlQnVmZmVyT25PdXRwdXRQb3J0czsKKyAgICAgICAgaWYgKCFzdHJuY21wKGNvbXBvbmVudE5hbWUsICJPTVguVEkuVmlkZW8uZW5jb2RlciIsIDIwKSkgeworICAgICAgICAgICAgcXVpcmtzIHw9IGtBdm9pZE1lbWNvcHlJbnB1dFJlY29yZGluZ0ZyYW1lczsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghc3RyY21wKGNvbXBvbmVudE5hbWUsICJPTVguVEkuVmlkZW8uRGVjb2RlciIpKSB7CkBAIC0zODQsOCArNDM4LDggQEAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoaW5nQ29kZWNzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbXBvbmVudE5hbWUgPSBtYXRjaGluZ0NvZGVjc1tpXS5zdHJpbmcoKTsKIAotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAotICAgICAgICBzcDxNZWRpYVNvdXJjZT4gc29mdHdhcmVDb2RlYyA9CisgICAgICAgIHNwPE1lZGlhU291cmNlPiBzb2Z0d2FyZUNvZGVjID0gY3JlYXRlRW5jb2Rlcj8KKyAgICAgICAgICAgIEluc3RhbnRpYXRlU29mdHdhcmVFbmNvZGVyKGNvbXBvbmVudE5hbWUsIHNvdXJjZSwgbWV0YSk6CiAgICAgICAgICAgICBJbnN0YW50aWF0ZVNvZnR3YXJlQ29kZWMoY29tcG9uZW50TmFtZSwgc291cmNlKTsKIAogICAgICAgICBpZiAoc29mdHdhcmVDb2RlYyAhPSBOVUxMKSB7CkBAIC0zOTMsNyArNDQ3LDYgQEAKIAogICAgICAgICAgICAgcmV0dXJuIHNvZnR3YXJlQ29kZWM7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIExPR1YoIkF0dGVtcHRpbmcgdG8gYWxsb2NhdGUgT01YIG5vZGUgJyVzJyIsIGNvbXBvbmVudE5hbWUpOwogCkBAIC00OTYsMTEgKzU0OSwxMiBAQAogICAgICAgICAgICAgc2l6ZSAtPSBsZW5ndGg7CiAgICAgICAgIH0KIAotICAgICAgICBMT0dWKCJBVkMgcHJvZmlsZSA9ICVkICglcyksIGxldmVsID0gJWQiLAotICAgICAgICAgICAgIChpbnQpcHJvZmlsZSwgQVZDUHJvZmlsZVRvU3RyaW5nKHByb2ZpbGUpLCAoaW50KWxldmVsIC8gMTApOworICAgICAgICBDT0RFQ19MT0dWKAorICAgICAgICAgICAgICAgICJBVkMgcHJvZmlsZSA9ICVkICglcyksIGxldmVsID0gJWQiLAorICAgICAgICAgICAgICAgIChpbnQpcHJvZmlsZSwgQVZDUHJvZmlsZVRvU3RyaW5nKHByb2ZpbGUpLCBsZXZlbCk7CiAKICAgICAgICAgaWYgKCFzdHJjbXAobUNvbXBvbmVudE5hbWUsICJPTVguVEkuVmlkZW8uRGVjb2RlciIpCi0gICAgICAgICAgICAmJiAocHJvZmlsZSAhPSBrQVZDUHJvZmlsZUJhc2VsaW5lIHx8IGxldmVsID4gMzkpKSB7CisgICAgICAgICAgICAmJiAocHJvZmlsZSAhPSBrQVZDUHJvZmlsZUJhc2VsaW5lIHx8IGxldmVsID4gMzApKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHN0cmVhbSBleGNlZWRzIHRoZSBkZWNvZGVyJ3MgY2FwYWJpbGl0aWVzLiBUaGUgZGVjb2RlcgogICAgICAgICAgICAgLy8gZG9lcyBub3QgaGFuZGxlIHRoaXMgZ3JhY2VmdWxseSBhbmQgd291bGQgY2xvYmJlciB0aGUgaGVhcAogICAgICAgICAgICAgLy8gYW5kIHdyZWFrIGhhdm9jIGluc3RlYWQuLi4KQEAgLTUxMCwyOCArNTY0LDMzIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpbnQzMl90IGJpdFJhdGUgPSAwOworICAgIGlmIChtSXNFbmNvZGVyKSB7CisgICAgICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5Qml0UmF0ZSwgJmJpdFJhdGUpKTsKKyAgICB9CiAgICAgaWYgKCFzdHJjYXNlY21wKE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9OQiwgbU1JTUUpKSB7Ci0gICAgICAgIHNldEFNUkZvcm1hdChmYWxzZSAvKiBpc1dBTVIgKi8pOworICAgICAgICBzZXRBTVJGb3JtYXQoZmFsc2UgLyogaXNXQU1SICovLCBiaXRSYXRlKTsKICAgICB9CiAgICAgaWYgKCFzdHJjYXNlY21wKE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9XQiwgbU1JTUUpKSB7Ci0gICAgICAgIHNldEFNUkZvcm1hdCh0cnVlIC8qIGlzV0FNUiAqLyk7CisgICAgICAgIHNldEFNUkZvcm1hdCh0cnVlIC8qIGlzV0FNUiAqLywgYml0UmF0ZSk7CiAgICAgfQogICAgIGlmICghc3RyY2FzZWNtcChNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsIG1NSU1FKSkgewogICAgICAgICBpbnQzMl90IG51bUNoYW5uZWxzLCBzYW1wbGVSYXRlOwogICAgICAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoa0tleUNoYW5uZWxDb3VudCwgJm51bUNoYW5uZWxzKSk7CiAgICAgICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJnNhbXBsZVJhdGUpKTsKIAotICAgICAgICBzZXRBQUNGb3JtYXQobnVtQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgICAgICBzZXRBQUNGb3JtYXQobnVtQ2hhbm5lbHMsIHNhbXBsZVJhdGUsIGJpdFJhdGUpOwogICAgIH0KKwogICAgIGlmICghc3RybmNhc2VjbXAobU1JTUUsICJ2aWRlby8iLCA2KSkgewotICAgICAgICBpbnQzMl90IHdpZHRoLCBoZWlnaHQ7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IG1ldGEtPmZpbmRJbnQzMihrS2V5V2lkdGgsICZ3aWR0aCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5SGVpZ2h0LCAmaGVpZ2h0KTsKLSAgICAgICAgQ0hFQ0soc3VjY2Vzcyk7CiAKICAgICAgICAgaWYgKG1Jc0VuY29kZXIpIHsKLSAgICAgICAgICAgIHNldFZpZGVvSW5wdXRGb3JtYXQobU1JTUUsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgc2V0VmlkZW9JbnB1dEZvcm1hdChtTUlNRSwgbWV0YSk7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQzMl90IHdpZHRoLCBoZWlnaHQ7CisgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBtZXRhLT5maW5kSW50MzIoa0tleVdpZHRoLCAmd2lkdGgpOworICAgICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlIZWlnaHQsICZoZWlnaHQpOworICAgICAgICAgICAgQ0hFQ0soc3VjY2Vzcyk7CiAgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBzZXRWaWRlb091dHB1dEZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgbU1JTUUsIHdpZHRoLCBoZWlnaHQpOwogCkBAIC01NzAsNyArNjI5LDggQEAKICAgICB9CiAKICAgICBpZiAoIXN0cmNtcChtQ29tcG9uZW50TmFtZSwgIk9NWC5USS5BTVIuZW5jb2RlIikKLSAgICAgICAgfHwgIXN0cmNtcChtQ29tcG9uZW50TmFtZSwgIk9NWC5USS5XQkFNUi5lbmNvZGUiKSkgeworICAgICAgICB8fCAhc3RyY21wKG1Db21wb25lbnROYW1lLCAiT01YLlRJLldCQU1SLmVuY29kZSIpCisgICAgICAgIHx8ICFzdHJjbXAobUNvbXBvbmVudE5hbWUsICJPTVguVEkuQUFDLmVuY29kZSIpKSB7CiAgICAgICAgIHNldE1pbkJ1ZmZlclNpemUoa1BvcnRJbmRleE91dHB1dCwgODE5Mik7ICAvLyBYWFgKICAgICB9CiAKQEAgLTY4Myw2ICs3NDMsNyBAQAogICAgICAgICBjYXNlIE9NWF9DT0xPUl9Gb3JtYXRDYllDclk6CiAgICAgICAgICAgICByZXR1cm4gd2lkdGggKiBoZWlnaHQgKiAyOwogCisgICAgICAgIGNhc2UgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFBsYW5hcjoKICAgICAgICAgY2FzZSBPTVhfQ09MT1JfRm9ybWF0WVVWNDIwU2VtaVBsYW5hcjoKICAgICAgICAgICAgIHJldHVybiAod2lkdGggKiBoZWlnaHQgKiAzKSAvIDI7CiAKQEAgLTY5Myw4ICs3NTQsMTcgQEAKIH0KIAogdm9pZCBPTVhDb2RlYzo6c2V0VmlkZW9JbnB1dEZvcm1hdCgKLSAgICAgICAgY29uc3QgY2hhciAqbWltZSwgT01YX1UzMiB3aWR0aCwgT01YX1UzMiBoZWlnaHQpIHsKLSAgICBDT0RFQ19MT0dWKCJzZXRWaWRlb0lucHV0Rm9ybWF0IHdpZHRoPSVsZCwgaGVpZ2h0PSVsZCIsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjb25zdCBjaGFyICptaW1lLCBjb25zdCBzcDxNZXRhRGF0YT4mIG1ldGEpIHsKKworICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlLCBiaXRSYXRlLCBzdHJpZGUsIHNsaWNlSGVpZ2h0OworICAgIGJvb2wgc3VjY2VzcyA9IG1ldGEtPmZpbmRJbnQzMihrS2V5V2lkdGgsICZ3aWR0aCk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlIZWlnaHQsICZoZWlnaHQpOworICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJmZyYW1lUmF0ZSk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlCaXRSYXRlLCAmYml0UmF0ZSk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlTdHJpZGUsICZzdHJpZGUpOworICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5U2xpY2VIZWlnaHQsICZzbGljZUhlaWdodCk7CisgICAgQ0hFQ0soc3VjY2Vzcyk7CisgICAgQ0hFQ0soc3RyaWRlICE9IDApOwogCiAgICAgT01YX1ZJREVPX0NPRElOR1RZUEUgY29tcHJlc3Npb25Gb3JtYXQgPSBPTVhfVklERU9fQ29kaW5nVW51c2VkOwogICAgIGlmICghc3RyY2FzZWNtcChNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsIG1pbWUpKSB7CkBAIC03MTMsMzggKzc4MywxNSBAQAogICAgICAgICBjb2xvckZvcm1hdCA9IE9NWF9DT0xPUl9Gb3JtYXRZQ2JZQ3I7CiAgICAgfQogCisgICAgc3RhdHVzX3QgZXJyOworICAgIE9NWF9QQVJBTV9QT1JUREVGSU5JVElPTlRZUEUgZGVmOworICAgIE9NWF9WSURFT19QT1JUREVGSU5JVElPTlRZUEUgKnZpZGVvX2RlZiA9ICZkZWYuZm9ybWF0LnZpZGVvOworCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIElucHV0IHBvcnQgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIENIRUNLX0VRKHNldFZpZGVvUG9ydEZvcm1hdFR5cGUoCiAgICAgICAgICAgICBrUG9ydEluZGV4SW5wdXQsIE9NWF9WSURFT19Db2RpbmdVbnVzZWQsCiAgICAgICAgICAgICBjb2xvckZvcm1hdCksIE9LKTsKIAotICAgIENIRUNLX0VRKHNldFZpZGVvUG9ydEZvcm1hdFR5cGUoCi0gICAgICAgICAgICBrUG9ydEluZGV4T3V0cHV0LCBjb21wcmVzc2lvbkZvcm1hdCwgT01YX0NPTE9SX0Zvcm1hdFVudXNlZCksCi0gICAgICAgICAgICBPSyk7Ci0KLSAgICBPTVhfUEFSQU1fUE9SVERFRklOSVRJT05UWVBFIGRlZjsKLSAgICBJbml0T01YUGFyYW1zKCZkZWYpOwotICAgIGRlZi5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKLQotICAgIE9NWF9WSURFT19QT1JUREVGSU5JVElPTlRZUEUgKnZpZGVvX2RlZiA9ICZkZWYuZm9ybWF0LnZpZGVvOwotCi0gICAgc3RhdHVzX3QgZXJyID0gbU9NWC0+Z2V0UGFyYW1ldGVyKAotICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtUG9ydERlZmluaXRpb24sICZkZWYsIHNpemVvZihkZWYpKTsKLQotICAgIENIRUNLX0VRKGVyciwgT0spOwotICAgIENIRUNLX0VRKGRlZi5lRG9tYWluLCBPTVhfUG9ydERvbWFpblZpZGVvKTsKLQotICAgIHZpZGVvX2RlZi0+bkZyYW1lV2lkdGggPSB3aWR0aDsKLSAgICB2aWRlb19kZWYtPm5GcmFtZUhlaWdodCA9IGhlaWdodDsKLQotICAgIHZpZGVvX2RlZi0+ZUNvbXByZXNzaW9uRm9ybWF0ID0gY29tcHJlc3Npb25Gb3JtYXQ7Ci0gICAgdmlkZW9fZGVmLT5lQ29sb3JGb3JtYXQgPSBPTVhfQ09MT1JfRm9ybWF0VW51c2VkOwotCi0gICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAotICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtUG9ydERlZmluaXRpb24sICZkZWYsIHNpemVvZihkZWYpKTsKLSAgICBDSEVDS19FUShlcnIsIE9LKTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQogICAgIEluaXRPTVhQYXJhbXMoJmRlZik7CiAgICAgZGVmLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4SW5wdXQ7CiAKQEAgLTc1MiwzNSArNzk5LDYyIEBACiAgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwgJmRlZiwgc2l6ZW9mKGRlZikpOwogICAgIENIRUNLX0VRKGVyciwgT0spOwogCi0gICAgZGVmLm5CdWZmZXJTaXplID0gZ2V0RnJhbWVTaXplKGNvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBDT0RFQ19MT0dWKCJTZXR0aW5nIG5CdWZmZXJTaXplID0gJWxkIiwgZGVmLm5CdWZmZXJTaXplKTsKKyAgICBkZWYubkJ1ZmZlclNpemUgPSBnZXRGcmFtZVNpemUoY29sb3JGb3JtYXQsCisgICAgICAgICAgICBzdHJpZGUgPiAwPyBzdHJpZGU6IC1zdHJpZGUsIHNsaWNlSGVpZ2h0KTsKIAogICAgIENIRUNLX0VRKGRlZi5lRG9tYWluLCBPTVhfUG9ydERvbWFpblZpZGVvKTsKIAogICAgIHZpZGVvX2RlZi0+bkZyYW1lV2lkdGggPSB3aWR0aDsKICAgICB2aWRlb19kZWYtPm5GcmFtZUhlaWdodCA9IGhlaWdodDsKKyAgICB2aWRlb19kZWYtPm5TdHJpZGUgPSBzdHJpZGU7CisgICAgdmlkZW9fZGVmLT5uU2xpY2VIZWlnaHQgPSBzbGljZUhlaWdodDsKKyAgICB2aWRlb19kZWYtPnhGcmFtZXJhdGUgPSAoZnJhbWVSYXRlIDw8IDE2KTsgIC8vIFExNiBmb3JtYXQKICAgICB2aWRlb19kZWYtPmVDb21wcmVzc2lvbkZvcm1hdCA9IE9NWF9WSURFT19Db2RpbmdVbnVzZWQ7CiAgICAgdmlkZW9fZGVmLT5lQ29sb3JGb3JtYXQgPSBjb2xvckZvcm1hdDsKIAotICAgIHZpZGVvX2RlZi0+eEZyYW1lcmF0ZSA9IDI0IDw8IDE2OyAgLy8gWFhYIGNydWNpYWwhCi0KICAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIoCiAgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwgJmRlZiwgc2l6ZW9mKGRlZikpOwogICAgIENIRUNLX0VRKGVyciwgT0spOwogCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIE91dHB1dCBwb3J0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICBDSEVDS19FUShzZXRWaWRlb1BvcnRGb3JtYXRUeXBlKAorICAgICAgICAgICAga1BvcnRJbmRleE91dHB1dCwgY29tcHJlc3Npb25Gb3JtYXQsIE9NWF9DT0xPUl9Gb3JtYXRVbnVzZWQpLAorICAgICAgICAgICAgT0spOworICAgIEluaXRPTVhQYXJhbXMoJmRlZik7CisgICAgZGVmLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4T3V0cHV0OworCisgICAgZXJyID0gbU9NWC0+Z2V0UGFyYW1ldGVyKAorICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtUG9ydERlZmluaXRpb24sICZkZWYsIHNpemVvZihkZWYpKTsKKworICAgIENIRUNLX0VRKGVyciwgT0spOworICAgIENIRUNLX0VRKGRlZi5lRG9tYWluLCBPTVhfUG9ydERvbWFpblZpZGVvKTsKKworICAgIHZpZGVvX2RlZi0+bkZyYW1lV2lkdGggPSB3aWR0aDsKKyAgICB2aWRlb19kZWYtPm5GcmFtZUhlaWdodCA9IGhlaWdodDsKKyAgICB2aWRlb19kZWYtPnhGcmFtZXJhdGUgPSAwOyAgICAgIC8vIE5vIG5lZWQgZm9yIG91dHB1dCBwb3J0CisgICAgdmlkZW9fZGVmLT5uQml0cmF0ZSA9IGJpdFJhdGU7ICAvLyBRMTYgZm9ybWF0CisgICAgdmlkZW9fZGVmLT5lQ29tcHJlc3Npb25Gb3JtYXQgPSBjb21wcmVzc2lvbkZvcm1hdDsKKyAgICB2aWRlb19kZWYtPmVDb2xvckZvcm1hdCA9IE9NWF9DT0xPUl9Gb3JtYXRVbnVzZWQ7CisKKyAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwgJmRlZiwgc2l6ZW9mKGRlZikpOworICAgIENIRUNLX0VRKGVyciwgT0spOworCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLyBDb2RlYy1zcGVjaWZpYyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICBzd2l0Y2ggKGNvbXByZXNzaW9uRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgT01YX1ZJREVPX0NvZGluZ01QRUc0OgogICAgICAgICB7Ci0gICAgICAgICAgICBDSEVDS19FUShzZXR1cE1QRUc0RW5jb2RlclBhcmFtZXRlcnMoKSwgT0spOworICAgICAgICAgICAgQ0hFQ0tfRVEoc2V0dXBNUEVHNEVuY29kZXJQYXJhbWV0ZXJzKG1ldGEpLCBPSyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgT01YX1ZJREVPX0NvZGluZ0gyNjM6CisgICAgICAgICAgICBDSEVDS19FUShzZXR1cEgyNjNFbmNvZGVyUGFyYW1ldGVycyhtZXRhKSwgT0spOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBPTVhfVklERU9fQ29kaW5nQVZDOgogICAgICAgICB7Ci0gICAgICAgICAgICBDSEVDS19FUShzZXR1cEFWQ0VuY29kZXJQYXJhbWV0ZXJzKCksIE9LKTsKKyAgICAgICAgICAgIENIRUNLX0VRKHNldHVwQVZDRW5jb2RlclBhcmFtZXRlcnMobWV0YSksIE9LKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTc5MCw3ICs4NjQsMTU5IEBACiAgICAgfQogfQogCi1zdGF0dXNfdCBPTVhDb2RlYzo6c2V0dXBNUEVHNEVuY29kZXJQYXJhbWV0ZXJzKCkgeworc3RhdGljIE9NWF9VMzIgc2V0UEZyYW1lc1NwYWNpbmcoaW50MzJfdCBpRnJhbWVzSW50ZXJ2YWwsIGludDMyX3QgZnJhbWVSYXRlKSB7CisgICAgaWYgKGlGcmFtZXNJbnRlcnZhbCA8IDApIHsKKyAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgfSBlbHNlIGlmIChpRnJhbWVzSW50ZXJ2YWwgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgT01YX1UzMiByZXQgPSBmcmFtZVJhdGUgKiBpRnJhbWVzSW50ZXJ2YWw7CisgICAgQ0hFQ0socmV0ID4gMSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdHVzX3QgT01YQ29kZWM6OnNldHVwRXJyb3JDb3JyZWN0aW9uUGFyYW1ldGVycygpIHsKKyAgICBPTVhfVklERU9fUEFSQU1fRVJST1JDT1JSRUNUSU9OVFlQRSBlcnJvckNvcnJlY3Rpb25UeXBlOworICAgIEluaXRPTVhQYXJhbXMoJmVycm9yQ29ycmVjdGlvblR5cGUpOworICAgIGVycm9yQ29ycmVjdGlvblR5cGUublBvcnRJbmRleCA9IGtQb3J0SW5kZXhPdXRwdXQ7CisKKyAgICBzdGF0dXNfdCBlcnIgPSBtT01YLT5nZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0Vycm9yQ29ycmVjdGlvbiwKKyAgICAgICAgICAgICZlcnJvckNvcnJlY3Rpb25UeXBlLCBzaXplb2YoZXJyb3JDb3JyZWN0aW9uVHlwZSkpOworICAgIENIRUNLX0VRKGVyciwgT0spOworCisgICAgZXJyb3JDb3JyZWN0aW9uVHlwZS5iRW5hYmxlSEVDID0gT01YX0ZBTFNFOworICAgIGVycm9yQ29ycmVjdGlvblR5cGUuYkVuYWJsZVJlc3luYyA9IE9NWF9UUlVFOworICAgIGVycm9yQ29ycmVjdGlvblR5cGUublJlc3luY2hNYXJrZXJTcGFjaW5nID0gMjU2OworICAgIGVycm9yQ29ycmVjdGlvblR5cGUuYkVuYWJsZURhdGFQYXJ0aXRpb25pbmcgPSBPTVhfRkFMU0U7CisgICAgZXJyb3JDb3JyZWN0aW9uVHlwZS5iRW5hYmxlUlZMQyA9IE9NWF9GQUxTRTsKKworICAgIGVyciA9IG1PTVgtPnNldFBhcmFtZXRlcigKKyAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvRXJyb3JDb3JyZWN0aW9uLAorICAgICAgICAgICAgJmVycm9yQ29ycmVjdGlvblR5cGUsIHNpemVvZihlcnJvckNvcnJlY3Rpb25UeXBlKSk7CisgICAgQ0hFQ0tfRVEoZXJyLCBPSyk7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBPTVhDb2RlYzo6c2V0dXBCaXRSYXRlKGludDMyX3QgYml0UmF0ZSkgeworICAgIE9NWF9WSURFT19QQVJBTV9CSVRSQVRFVFlQRSBiaXRyYXRlVHlwZTsKKyAgICBJbml0T01YUGFyYW1zKCZiaXRyYXRlVHlwZSk7CisgICAgYml0cmF0ZVR5cGUublBvcnRJbmRleCA9IGtQb3J0SW5kZXhPdXRwdXQ7CisKKyAgICBzdGF0dXNfdCBlcnIgPSBtT01YLT5nZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0JpdHJhdGUsCisgICAgICAgICAgICAmYml0cmF0ZVR5cGUsIHNpemVvZihiaXRyYXRlVHlwZSkpOworICAgIENIRUNLX0VRKGVyciwgT0spOworCisgICAgYml0cmF0ZVR5cGUuZUNvbnRyb2xSYXRlID0gT01YX1ZpZGVvX0NvbnRyb2xSYXRlVmFyaWFibGU7CisgICAgYml0cmF0ZVR5cGUublRhcmdldEJpdHJhdGUgPSBiaXRSYXRlOworCisgICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAorICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9CaXRyYXRlLAorICAgICAgICAgICAgJmJpdHJhdGVUeXBlLCBzaXplb2YoYml0cmF0ZVR5cGUpKTsKKyAgICBDSEVDS19FUShlcnIsIE9LKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IE9NWENvZGVjOjpnZXRWaWRlb1Byb2ZpbGVMZXZlbCgKKyAgICAgICAgY29uc3Qgc3A8TWV0YURhdGE+JiBtZXRhLAorICAgICAgICBjb25zdCBDb2RlY1Byb2ZpbGVMZXZlbCYgZGVmYXVsdFByb2ZpbGVMZXZlbCwKKyAgICAgICAgQ29kZWNQcm9maWxlTGV2ZWwgJnByb2ZpbGVMZXZlbCkgeworICAgIENPREVDX0xPR1YoIkRlZmF1bHQgcHJvZmlsZTogJWxkLCBsZXZlbCAlbGQiLAorICAgICAgICAgICAgZGVmYXVsdFByb2ZpbGVMZXZlbC5tUHJvZmlsZSwgZGVmYXVsdFByb2ZpbGVMZXZlbC5tTGV2ZWwpOworCisgICAgLy8gQXJlIHRoZSBkZWZhdWx0IHByb2ZpbGUgYW5kIGxldmVsIG92ZXJ3cml0ZW4/CisgICAgaW50MzJfdCBwcm9maWxlLCBsZXZlbDsKKyAgICBpZiAoIW1ldGEtPmZpbmRJbnQzMihrS2V5VmlkZW9Qcm9maWxlLCAmcHJvZmlsZSkpIHsKKyAgICAgICAgcHJvZmlsZSA9IGRlZmF1bHRQcm9maWxlTGV2ZWwubVByb2ZpbGU7CisgICAgfQorICAgIGlmICghbWV0YS0+ZmluZEludDMyKGtLZXlWaWRlb0xldmVsLCAmbGV2ZWwpKSB7CisgICAgICAgIGxldmVsID0gZGVmYXVsdFByb2ZpbGVMZXZlbC5tTGV2ZWw7CisgICAgfQorICAgIENPREVDX0xPR1YoIlRhcmdldCBwcm9maWxlOiAlZCwgbGV2ZWw6ICVkIiwgcHJvZmlsZSwgbGV2ZWwpOworCisgICAgLy8gQXJlIHRoZSB0YXJnZXQgcHJvZmlsZSBhbmQgbGV2ZWwgc3VwcG9ydGVkIGJ5IHRoZSBlbmNvZGVyPworICAgIE9NWF9WSURFT19QQVJBTV9QUk9GSUxFTEVWRUxUWVBFIHBhcmFtOworICAgIEluaXRPTVhQYXJhbXMoJnBhcmFtKTsKKyAgICBwYXJhbS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKKyAgICBmb3IgKHBhcmFtLm5Qcm9maWxlSW5kZXggPSAwOzsgKytwYXJhbS5uUHJvZmlsZUluZGV4KSB7CisgICAgICAgIHN0YXR1c190IGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKKyAgICAgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb1Byb2ZpbGVMZXZlbFF1ZXJ5U3VwcG9ydGVkLAorICAgICAgICAgICAgICAgICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CisKKyAgICAgICAgaWYgKGVyciAhPSBPSykgcmV0dXJuIGVycjsKKworICAgICAgICBpbnQzMl90IHN1cHBvcnRlZFByb2ZpbGUgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihwYXJhbS5lUHJvZmlsZSk7CisgICAgICAgIGludDMyX3Qgc3VwcG9ydGVkTGV2ZWwgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihwYXJhbS5lTGV2ZWwpOworICAgICAgICBDT0RFQ19MT0dWKCJTdXBwb3J0ZWQgcHJvZmlsZTogJWxkLCBsZXZlbCAlbGQiLAorICAgICAgICAgICAgc3VwcG9ydGVkUHJvZmlsZSwgc3VwcG9ydGVkTGV2ZWwpOworCisgICAgICAgIGlmIChwcm9maWxlID09IHN1cHBvcnRlZFByb2ZpbGUgJiYKKyAgICAgICAgICAgIGxldmVsID09IHN1cHBvcnRlZExldmVsKSB7CisgICAgICAgICAgICBwcm9maWxlTGV2ZWwubVByb2ZpbGUgPSBwcm9maWxlOworICAgICAgICAgICAgcHJvZmlsZUxldmVsLm1MZXZlbCA9IGxldmVsOworICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICB9CisgICAgfQorCisgICAgQ09ERUNfTE9HRSgiVGFyZ2V0IHByb2ZpbGUgKCVkKSBhbmQgbGV2ZWwgKCVkKSBpcyBub3Qgc3VwcG9ydGVkIiwKKyAgICAgICAgICAgIHByb2ZpbGUsIGxldmVsKTsKKyAgICByZXR1cm4gQkFEX1ZBTFVFOworfQorCitzdGF0dXNfdCBPTVhDb2RlYzo6c2V0dXBIMjYzRW5jb2RlclBhcmFtZXRlcnMoY29uc3Qgc3A8TWV0YURhdGE+JiBtZXRhKSB7CisgICAgaW50MzJfdCBpRnJhbWVzSW50ZXJ2YWwsIGZyYW1lUmF0ZSwgYml0UmF0ZTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtZXRhLT5maW5kSW50MzIoa0tleUJpdFJhdGUsICZiaXRSYXRlKTsKKyAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBtZXRhLT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZmcmFtZVJhdGUpOworICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5SUZyYW1lc0ludGVydmFsLCAmaUZyYW1lc0ludGVydmFsKTsKKyAgICBDSEVDSyhzdWNjZXNzKTsKKyAgICBPTVhfVklERU9fUEFSQU1fSDI2M1RZUEUgaDI2M3R5cGU7CisgICAgSW5pdE9NWFBhcmFtcygmaDI2M3R5cGUpOworICAgIGgyNjN0eXBlLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4T3V0cHV0OworCisgICAgc3RhdHVzX3QgZXJyID0gbU9NWC0+Z2V0UGFyYW1ldGVyKAorICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9IMjYzLCAmaDI2M3R5cGUsIHNpemVvZihoMjYzdHlwZSkpOworICAgIENIRUNLX0VRKGVyciwgT0spOworCisgICAgaDI2M3R5cGUubkFsbG93ZWRQaWN0dXJlVHlwZXMgPQorICAgICAgICBPTVhfVklERU9fUGljdHVyZVR5cGVJIHwgT01YX1ZJREVPX1BpY3R1cmVUeXBlUDsKKworICAgIGgyNjN0eXBlLm5QRnJhbWVzID0gc2V0UEZyYW1lc1NwYWNpbmcoaUZyYW1lc0ludGVydmFsLCBmcmFtZVJhdGUpOworICAgIGlmIChoMjYzdHlwZS5uUEZyYW1lcyA9PSAwKSB7CisgICAgICAgIGgyNjN0eXBlLm5BbGxvd2VkUGljdHVyZVR5cGVzID0gT01YX1ZJREVPX1BpY3R1cmVUeXBlSTsKKyAgICB9CisgICAgaDI2M3R5cGUubkJGcmFtZXMgPSAwOworCisgICAgLy8gQ2hlY2sgcHJvZmlsZSBhbmQgbGV2ZWwgcGFyYW1ldGVycworICAgIENvZGVjUHJvZmlsZUxldmVsIGRlZmF1bHRQcm9maWxlTGV2ZWwsIHByb2ZpbGVMZXZlbDsKKyAgICBkZWZhdWx0UHJvZmlsZUxldmVsLm1Qcm9maWxlID0gT01YX1ZJREVPX0gyNjNQcm9maWxlQmFzZWxpbmU7CisgICAgZGVmYXVsdFByb2ZpbGVMZXZlbC5tTGV2ZWwgPSBPTVhfVklERU9fSDI2M0xldmVsNDU7CisgICAgZXJyID0gZ2V0VmlkZW9Qcm9maWxlTGV2ZWwobWV0YSwgZGVmYXVsdFByb2ZpbGVMZXZlbCwgcHJvZmlsZUxldmVsKTsKKyAgICBpZiAoZXJyICE9IE9LKSByZXR1cm4gZXJyOworICAgIGgyNjN0eXBlLmVQcm9maWxlID0gc3RhdGljX2Nhc3Q8T01YX1ZJREVPX0gyNjNQUk9GSUxFVFlQRT4ocHJvZmlsZUxldmVsLm1Qcm9maWxlKTsKKyAgICBoMjYzdHlwZS5lTGV2ZWwgPSBzdGF0aWNfY2FzdDxPTVhfVklERU9fSDI2M0xFVkVMVFlQRT4ocHJvZmlsZUxldmVsLm1MZXZlbCk7CisKKyAgICBoMjYzdHlwZS5iUExVU1BUWVBFQWxsb3dlZCA9IE9NWF9GQUxTRTsKKyAgICBoMjYzdHlwZS5iRm9yY2VSb3VuZGluZ1R5cGVUb1plcm8gPSBPTVhfRkFMU0U7CisgICAgaDI2M3R5cGUublBpY3R1cmVIZWFkZXJSZXBldGl0aW9uID0gMDsKKyAgICBoMjYzdHlwZS5uR09CSGVhZGVySW50ZXJ2YWwgPSAwOworCisgICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAorICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9IMjYzLCAmaDI2M3R5cGUsIHNpemVvZihoMjYzdHlwZSkpOworICAgIENIRUNLX0VRKGVyciwgT0spOworCisgICAgQ0hFQ0tfRVEoc2V0dXBCaXRSYXRlKGJpdFJhdGUpLCBPSyk7CisgICAgQ0hFQ0tfRVEoc2V0dXBFcnJvckNvcnJlY3Rpb25QYXJhbWV0ZXJzKCksIE9LKTsKKworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgT01YQ29kZWM6OnNldHVwTVBFRzRFbmNvZGVyUGFyYW1ldGVycyhjb25zdCBzcDxNZXRhRGF0YT4mIG1ldGEpIHsKKyAgICBpbnQzMl90IGlGcmFtZXNJbnRlcnZhbCwgZnJhbWVSYXRlLCBiaXRSYXRlOworICAgIGJvb2wgc3VjY2VzcyA9IG1ldGEtPmZpbmRJbnQzMihrS2V5Qml0UmF0ZSwgJmJpdFJhdGUpOworICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJmZyYW1lUmF0ZSk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlJRnJhbWVzSW50ZXJ2YWwsICZpRnJhbWVzSW50ZXJ2YWwpOworICAgIENIRUNLKHN1Y2Nlc3MpOwogICAgIE9NWF9WSURFT19QQVJBTV9NUEVHNFRZUEUgbXBlZzR0eXBlOwogICAgIEluaXRPTVhQYXJhbXMoJm1wZWc0dHlwZSk7CiAgICAgbXBlZzR0eXBlLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4T3V0cHV0OwpAQCAtODA2LDkgKzEwMzIsMTEgQEAKICAgICBtcGVnNHR5cGUubkFsbG93ZWRQaWN0dXJlVHlwZXMgPQogICAgICAgICBPTVhfVklERU9fUGljdHVyZVR5cGVJIHwgT01YX1ZJREVPX1BpY3R1cmVUeXBlUDsKIAotICAgIG1wZWc0dHlwZS5uUEZyYW1lcyA9IDIzOworICAgIG1wZWc0dHlwZS5uUEZyYW1lcyA9IHNldFBGcmFtZXNTcGFjaW5nKGlGcmFtZXNJbnRlcnZhbCwgZnJhbWVSYXRlKTsKKyAgICBpZiAobXBlZzR0eXBlLm5QRnJhbWVzID09IDApIHsKKyAgICAgICAgbXBlZzR0eXBlLm5BbGxvd2VkUGljdHVyZVR5cGVzID0gT01YX1ZJREVPX1BpY3R1cmVUeXBlSTsKKyAgICB9CiAgICAgbXBlZzR0eXBlLm5CRnJhbWVzID0gMDsKLQogICAgIG1wZWc0dHlwZS5uSURDVkxDVGhyZXNob2xkID0gMDsKICAgICBtcGVnNHR5cGUuYkFDUHJlZCA9IE9NWF9UUlVFOwogICAgIG1wZWc0dHlwZS5uTWF4UGFja2V0U2l6ZSA9IDI1NjsKQEAgLTgxNiw1OCArMTA0NCwzMiBAQAogICAgIG1wZWc0dHlwZS5uSGVhZGVyRXh0ZW5zaW9uID0gMDsKICAgICBtcGVnNHR5cGUuYlJldmVyc2libGVWTEMgPSBPTVhfRkFMU0U7CiAKLSAgICBtcGVnNHR5cGUuZVByb2ZpbGUgPSBPTVhfVklERU9fTVBFRzRQcm9maWxlQ29yZTsKLSAgICBtcGVnNHR5cGUuZUxldmVsID0gT01YX1ZJREVPX01QRUc0TGV2ZWwyOworICAgIC8vIENoZWNrIHByb2ZpbGUgYW5kIGxldmVsIHBhcmFtZXRlcnMKKyAgICBDb2RlY1Byb2ZpbGVMZXZlbCBkZWZhdWx0UHJvZmlsZUxldmVsLCBwcm9maWxlTGV2ZWw7CisgICAgZGVmYXVsdFByb2ZpbGVMZXZlbC5tUHJvZmlsZSA9IE9NWF9WSURFT19NUEVHNFByb2ZpbGVTaW1wbGU7CisgICAgZGVmYXVsdFByb2ZpbGVMZXZlbC5tTGV2ZWwgPSBPTVhfVklERU9fTVBFRzRMZXZlbDI7CisgICAgZXJyID0gZ2V0VmlkZW9Qcm9maWxlTGV2ZWwobWV0YSwgZGVmYXVsdFByb2ZpbGVMZXZlbCwgcHJvZmlsZUxldmVsKTsKKyAgICBpZiAoZXJyICE9IE9LKSByZXR1cm4gZXJyOworICAgIG1wZWc0dHlwZS5lUHJvZmlsZSA9IHN0YXRpY19jYXN0PE9NWF9WSURFT19NUEVHNFBST0ZJTEVUWVBFPihwcm9maWxlTGV2ZWwubVByb2ZpbGUpOworICAgIG1wZWc0dHlwZS5lTGV2ZWwgPSBzdGF0aWNfY2FzdDxPTVhfVklERU9fTVBFRzRMRVZFTFRZUEU+KHByb2ZpbGVMZXZlbC5tTGV2ZWwpOwogCiAgICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAogICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9NcGVnNCwgJm1wZWc0dHlwZSwgc2l6ZW9mKG1wZWc0dHlwZSkpOwogICAgIENIRUNLX0VRKGVyciwgT0spOwogCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgT01YX1ZJREVPX1BBUkFNX0JJVFJBVEVUWVBFIGJpdHJhdGVUeXBlOwotICAgIEluaXRPTVhQYXJhbXMoJmJpdHJhdGVUeXBlKTsKLSAgICBiaXRyYXRlVHlwZS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKLQotICAgIGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKLSAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvQml0cmF0ZSwKLSAgICAgICAgICAgICZiaXRyYXRlVHlwZSwgc2l6ZW9mKGJpdHJhdGVUeXBlKSk7Ci0gICAgQ0hFQ0tfRVEoZXJyLCBPSyk7Ci0KLSAgICBiaXRyYXRlVHlwZS5lQ29udHJvbFJhdGUgPSBPTVhfVmlkZW9fQ29udHJvbFJhdGVWYXJpYWJsZTsKLSAgICBiaXRyYXRlVHlwZS5uVGFyZ2V0Qml0cmF0ZSA9IDEwMDAwMDA7Ci0KLSAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIoCi0gICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0JpdHJhdGUsCi0gICAgICAgICAgICAmYml0cmF0ZVR5cGUsIHNpemVvZihiaXRyYXRlVHlwZSkpOwotICAgIENIRUNLX0VRKGVyciwgT0spOwotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgT01YX1ZJREVPX1BBUkFNX0VSUk9SQ09SUkVDVElPTlRZUEUgZXJyb3JDb3JyZWN0aW9uVHlwZTsKLSAgICBJbml0T01YUGFyYW1zKCZlcnJvckNvcnJlY3Rpb25UeXBlKTsKLSAgICBlcnJvckNvcnJlY3Rpb25UeXBlLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4T3V0cHV0OwotCi0gICAgZXJyID0gbU9NWC0+Z2V0UGFyYW1ldGVyKAotICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9FcnJvckNvcnJlY3Rpb24sCi0gICAgICAgICAgICAmZXJyb3JDb3JyZWN0aW9uVHlwZSwgc2l6ZW9mKGVycm9yQ29ycmVjdGlvblR5cGUpKTsKLSAgICBDSEVDS19FUShlcnIsIE9LKTsKLQotICAgIGVycm9yQ29ycmVjdGlvblR5cGUuYkVuYWJsZUhFQyA9IE9NWF9GQUxTRTsKLSAgICBlcnJvckNvcnJlY3Rpb25UeXBlLmJFbmFibGVSZXN5bmMgPSBPTVhfVFJVRTsKLSAgICBlcnJvckNvcnJlY3Rpb25UeXBlLm5SZXN5bmNoTWFya2VyU3BhY2luZyA9IDI1NjsKLSAgICBlcnJvckNvcnJlY3Rpb25UeXBlLmJFbmFibGVEYXRhUGFydGl0aW9uaW5nID0gT01YX0ZBTFNFOwotICAgIGVycm9yQ29ycmVjdGlvblR5cGUuYkVuYWJsZVJWTEMgPSBPTVhfRkFMU0U7Ci0KLSAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIoCi0gICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0Vycm9yQ29ycmVjdGlvbiwKLSAgICAgICAgICAgICZlcnJvckNvcnJlY3Rpb25UeXBlLCBzaXplb2YoZXJyb3JDb3JyZWN0aW9uVHlwZSkpOwotICAgIENIRUNLX0VRKGVyciwgT0spOworICAgIENIRUNLX0VRKHNldHVwQml0UmF0ZShiaXRSYXRlKSwgT0spOworICAgIENIRUNLX0VRKHNldHVwRXJyb3JDb3JyZWN0aW9uUGFyYW1ldGVycygpLCBPSyk7CiAKICAgICByZXR1cm4gT0s7CiB9CiAKLXN0YXR1c190IE9NWENvZGVjOjpzZXR1cEFWQ0VuY29kZXJQYXJhbWV0ZXJzKCkgeworc3RhdHVzX3QgT01YQ29kZWM6OnNldHVwQVZDRW5jb2RlclBhcmFtZXRlcnMoY29uc3Qgc3A8TWV0YURhdGE+JiBtZXRhKSB7CisgICAgaW50MzJfdCBpRnJhbWVzSW50ZXJ2YWwsIGZyYW1lUmF0ZSwgYml0UmF0ZTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtZXRhLT5maW5kSW50MzIoa0tleUJpdFJhdGUsICZiaXRSYXRlKTsKKyAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBtZXRhLT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZmcmFtZVJhdGUpOworICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5SUZyYW1lc0ludGVydmFsLCAmaUZyYW1lc0ludGVydmFsKTsKKyAgICBDSEVDSyhzdWNjZXNzKTsKKwogICAgIE9NWF9WSURFT19QQVJBTV9BVkNUWVBFIGgyNjR0eXBlOwogICAgIEluaXRPTVhQYXJhbXMoJmgyNjR0eXBlKTsKICAgICBoMjY0dHlwZS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKQEAgLTg4MCw0NyArMTA4Miw1MSBAQAogICAgICAgICBPTVhfVklERU9fUGljdHVyZVR5cGVJIHwgT01YX1ZJREVPX1BpY3R1cmVUeXBlUDsKIAogICAgIGgyNjR0eXBlLm5TbGljZUhlYWRlclNwYWNpbmcgPSAwOwotICAgIGgyNjR0eXBlLm5CRnJhbWVzID0gMDsKLSAgICBoMjY0dHlwZS5iVXNlSGFkYW1hcmQgPSBPTVhfVFJVRTsKLSAgICBoMjY0dHlwZS5uUmVmRnJhbWVzID0gMTsKLSAgICBoMjY0dHlwZS5uUmVmSWR4MTBBY3RpdmVNaW51czEgPSAwOwotICAgIGgyNjR0eXBlLm5SZWZJZHgxMUFjdGl2ZU1pbnVzMSA9IDA7CisgICAgaDI2NHR5cGUubkJGcmFtZXMgPSAwOyAgIC8vIE5vIEIgZnJhbWVzIHN1cHBvcnQgeWV0CisgICAgaDI2NHR5cGUublBGcmFtZXMgPSBzZXRQRnJhbWVzU3BhY2luZyhpRnJhbWVzSW50ZXJ2YWwsIGZyYW1lUmF0ZSk7CisgICAgaWYgKGgyNjR0eXBlLm5QRnJhbWVzID09IDApIHsKKyAgICAgICAgaDI2NHR5cGUubkFsbG93ZWRQaWN0dXJlVHlwZXMgPSBPTVhfVklERU9fUGljdHVyZVR5cGVJOworICAgIH0KKworICAgIC8vIENoZWNrIHByb2ZpbGUgYW5kIGxldmVsIHBhcmFtZXRlcnMKKyAgICBDb2RlY1Byb2ZpbGVMZXZlbCBkZWZhdWx0UHJvZmlsZUxldmVsLCBwcm9maWxlTGV2ZWw7CisgICAgZGVmYXVsdFByb2ZpbGVMZXZlbC5tUHJvZmlsZSA9IGgyNjR0eXBlLmVQcm9maWxlOworICAgIGRlZmF1bHRQcm9maWxlTGV2ZWwubUxldmVsID0gaDI2NHR5cGUuZUxldmVsOworICAgIGVyciA9IGdldFZpZGVvUHJvZmlsZUxldmVsKG1ldGEsIGRlZmF1bHRQcm9maWxlTGV2ZWwsIHByb2ZpbGVMZXZlbCk7CisgICAgaWYgKGVyciAhPSBPSykgcmV0dXJuIGVycjsKKyAgICBoMjY0dHlwZS5lUHJvZmlsZSA9IHN0YXRpY19jYXN0PE9NWF9WSURFT19BVkNQUk9GSUxFVFlQRT4ocHJvZmlsZUxldmVsLm1Qcm9maWxlKTsKKyAgICBoMjY0dHlwZS5lTGV2ZWwgPSBzdGF0aWNfY2FzdDxPTVhfVklERU9fQVZDTEVWRUxUWVBFPihwcm9maWxlTGV2ZWwubUxldmVsKTsKKworICAgIGlmIChoMjY0dHlwZS5lUHJvZmlsZSA9PSBPTVhfVklERU9fQVZDUHJvZmlsZUJhc2VsaW5lKSB7CisgICAgICAgIGgyNjR0eXBlLmJVc2VIYWRhbWFyZCA9IE9NWF9UUlVFOworICAgICAgICBoMjY0dHlwZS5uUmVmRnJhbWVzID0gMTsKKyAgICAgICAgaDI2NHR5cGUublJlZklkeDEwQWN0aXZlTWludXMxID0gMDsKKyAgICAgICAgaDI2NHR5cGUublJlZklkeDExQWN0aXZlTWludXMxID0gMDsKKyAgICAgICAgaDI2NHR5cGUuYkVudHJvcHlDb2RpbmdDQUJBQyA9IE9NWF9GQUxTRTsKKyAgICAgICAgaDI2NHR5cGUuYldlaWdodGVkUFByZWRpY3Rpb24gPSBPTVhfRkFMU0U7CisgICAgICAgIGgyNjR0eXBlLmJjb25zdElwcmVkID0gT01YX0ZBTFNFOworICAgICAgICBoMjY0dHlwZS5iRGlyZWN0OHg4SW5mZXJlbmNlID0gT01YX0ZBTFNFOworICAgICAgICBoMjY0dHlwZS5iRGlyZWN0U3BhdGlhbFRlbXBvcmFsID0gT01YX0ZBTFNFOworICAgICAgICBoMjY0dHlwZS5uQ2FiYWNJbml0SWRjID0gMDsKKyAgICB9CisKKyAgICBpZiAoaDI2NHR5cGUubkJGcmFtZXMgIT0gMCkgeworICAgICAgICBoMjY0dHlwZS5uQWxsb3dlZFBpY3R1cmVUeXBlcyB8PSBPTVhfVklERU9fUGljdHVyZVR5cGVCOworICAgIH0KKwogICAgIGgyNjR0eXBlLmJFbmFibGVVRVAgPSBPTVhfRkFMU0U7CiAgICAgaDI2NHR5cGUuYkVuYWJsZUZNTyA9IE9NWF9GQUxTRTsKICAgICBoMjY0dHlwZS5iRW5hYmxlQVNPID0gT01YX0ZBTFNFOwogICAgIGgyNjR0eXBlLmJFbmFibGVSUyA9IE9NWF9GQUxTRTsKLSAgICBoMjY0dHlwZS5lUHJvZmlsZSA9IE9NWF9WSURFT19BVkNQcm9maWxlQmFzZWxpbmU7Ci0gICAgaDI2NHR5cGUuZUxldmVsID0gT01YX1ZJREVPX0FWQ0xldmVsMWI7CiAgICAgaDI2NHR5cGUuYkZyYW1lTUJzT25seSA9IE9NWF9UUlVFOwogICAgIGgyNjR0eXBlLmJNQkFGRiA9IE9NWF9GQUxTRTsKLSAgICBoMjY0dHlwZS5iRW50cm9weUNvZGluZ0NBQkFDID0gT01YX0ZBTFNFOwotICAgIGgyNjR0eXBlLmJXZWlnaHRlZFBQcmVkaWN0aW9uID0gT01YX0ZBTFNFOwotICAgIGgyNjR0eXBlLmJjb25zdElwcmVkID0gT01YX0ZBTFNFOwotICAgIGgyNjR0eXBlLmJEaXJlY3Q4eDhJbmZlcmVuY2UgPSBPTVhfRkFMU0U7Ci0gICAgaDI2NHR5cGUuYkRpcmVjdFNwYXRpYWxUZW1wb3JhbCA9IE9NWF9GQUxTRTsKLSAgICBoMjY0dHlwZS5uQ2FiYWNJbml0SWRjID0gMDsKICAgICBoMjY0dHlwZS5lTG9vcEZpbHRlck1vZGUgPSBPTVhfVklERU9fQVZDTG9vcEZpbHRlckVuYWJsZTsKIAogICAgIGVyciA9IG1PTVgtPnNldFBhcmFtZXRlcigKICAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvQXZjLCAmaDI2NHR5cGUsIHNpemVvZihoMjY0dHlwZSkpOwogICAgIENIRUNLX0VRKGVyciwgT0spOwogCi0gICAgT01YX1ZJREVPX1BBUkFNX0JJVFJBVEVUWVBFIGJpdHJhdGVUeXBlOwotICAgIEluaXRPTVhQYXJhbXMoJmJpdHJhdGVUeXBlKTsKLSAgICBiaXRyYXRlVHlwZS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKLQotICAgIGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKLSAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvQml0cmF0ZSwKLSAgICAgICAgICAgICZiaXRyYXRlVHlwZSwgc2l6ZW9mKGJpdHJhdGVUeXBlKSk7Ci0gICAgQ0hFQ0tfRVEoZXJyLCBPSyk7Ci0KLSAgICBiaXRyYXRlVHlwZS5lQ29udHJvbFJhdGUgPSBPTVhfVmlkZW9fQ29udHJvbFJhdGVWYXJpYWJsZTsKLSAgICBiaXRyYXRlVHlwZS5uVGFyZ2V0Qml0cmF0ZSA9IDEwMDAwMDA7Ci0KLSAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIoCi0gICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0JpdHJhdGUsCi0gICAgICAgICAgICAmYml0cmF0ZVR5cGUsIHNpemVvZihiaXRyYXRlVHlwZSkpOwotICAgIENIRUNLX0VRKGVyciwgT0spOworICAgIENIRUNLX0VRKHNldHVwQml0UmF0ZShiaXRSYXRlKSwgT0spOwogCiAgICAgcmV0dXJuIE9LOwogfQpAQCAtMTA1Nyw3ICsxMjYzLDggQEAKICAgICAgIG1Ob01vcmVPdXRwdXREYXRhKGZhbHNlKSwKICAgICAgIG1PdXRwdXRQb3J0U2V0dGluZ3NIYXZlQ2hhbmdlZChmYWxzZSksCiAgICAgICBtU2Vla1RpbWVVcygtMSksCi0gICAgICBtTGVmdE92ZXJCdWZmZXIoTlVMTCkgeworICAgICAgbUxlZnRPdmVyQnVmZmVyKE5VTEwpLAorICAgICAgbVBhdXNlZChmYWxzZSkgewogICAgIG1Qb3J0U3RhdHVzW2tQb3J0SW5kZXhJbnB1dF0gPSBFTkFCTEVEOwogICAgIG1Qb3J0U3RhdHVzW2tQb3J0SW5kZXhPdXRwdXRdID0gRU5BQkxFRDsKIApAQCAtMTY0Nyw2ICsxODU0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgQ09ERUNfTE9HVigiRmluaXNoZWQgZmx1c2hpbmcgYm90aCBwb3J0cywgbm93IGNvbnRpbnVpbmcgZnJvbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNlZWstdGltZS4iKTsKIAorICAgICAgICAgICAgICAgICAgICAvLyBXZSBpbXBsaWNpdGx5IHJlc3VtZSBwdWxsaW5nIG9uIG91ciB1cHN0cmVhbSBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIG1QYXVzZWQgPSBmYWxzZTsKKwogICAgICAgICAgICAgICAgICAgICBkcmFpbklucHV0QnVmZmVycygpOwogICAgICAgICAgICAgICAgICAgICBmaWxsT3V0cHV0QnVmZmVycygpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE5NDYsNiArMjE1NiwxMCBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1QYXVzZWQpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHN0YXR1c190IGVycjsKIAogICAgIGJvb2wgc2lnbmFsRU9TID0gZmFsc2U7CkBAIC0yMDA0LDkgKzIyMTgsMTUgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgbWVtY3B5KCh1aW50OF90ICopaW5mby0+bURhdGEgKyBvZmZzZXQsCi0gICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKXNyY0J1ZmZlci0+ZGF0YSgpICsgc3JjQnVmZmVyLT5yYW5nZV9vZmZzZXQoKSwKLSAgICAgICAgICAgICAgIHNyY0J1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpOworICAgICAgICBpZiAobUlzRW5jb2RlciAmJiAobVF1aXJrcyAmIGtBdm9pZE1lbWNvcHlJbnB1dFJlY29yZGluZ0ZyYW1lcykpIHsKKyAgICAgICAgICAgIENIRUNLKG1PTVhMaXZlc0xvY2FsbHkgJiYgb2Zmc2V0ID09IDApOworICAgICAgICAgICAgT01YX0JVRkZFUkhFQURFUlRZUEUgKmhlYWRlciA9IChPTVhfQlVGRkVSSEVBREVSVFlQRSAqKSBpbmZvLT5tQnVmZmVyOworICAgICAgICAgICAgaGVhZGVyLT5wQnVmZmVyID0gKE9NWF9VOCAqKSBzcmNCdWZmZXItPmRhdGEoKSArIHNyY0J1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkoKHVpbnQ4X3QgKilpbmZvLT5tRGF0YSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilzcmNCdWZmZXItPmRhdGEoKSArIHNyY0J1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIHNyY0J1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpOworICAgICAgICB9CiAKICAgICAgICAgaW50NjRfdCBsYXN0QnVmZmVyVGltZVVzOwogICAgICAgICBDSEVDSyhzcmNCdWZmZXItPm1ldGFfZGF0YSgpLT5maW5kSW50NjQoa0tleVRpbWUsICZsYXN0QnVmZmVyVGltZVVzKSk7CkBAIC0yMTI4LDExICsyMzQ4LDI0IEBACiAKIHZvaWQgT01YQ29kZWM6OnNldFJhd0F1ZGlvRm9ybWF0KAogICAgICAgICBPTVhfVTMyIHBvcnRJbmRleCwgaW50MzJfdCBzYW1wbGVSYXRlLCBpbnQzMl90IG51bUNoYW5uZWxzKSB7CisKKyAgICAvLyBwb3J0IGRlZmluaXRpb24KKyAgICBPTVhfUEFSQU1fUE9SVERFRklOSVRJT05UWVBFIGRlZjsKKyAgICBJbml0T01YUGFyYW1zKCZkZWYpOworICAgIGRlZi5uUG9ydEluZGV4ID0gcG9ydEluZGV4OworICAgIHN0YXR1c190IGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKKyAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVBvcnREZWZpbml0aW9uLCAmZGVmLCBzaXplb2YoZGVmKSk7CisgICAgQ0hFQ0tfRVEoZXJyLCBPSyk7CisgICAgZGVmLmZvcm1hdC5hdWRpby5lRW5jb2RpbmcgPSBPTVhfQVVESU9fQ29kaW5nUENNOworICAgIENIRUNLX0VRKG1PTVgtPnNldFBhcmFtZXRlcihtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwKKyAgICAgICAgICAgICZkZWYsIHNpemVvZihkZWYpKSwgT0spOworCisgICAgLy8gcGNtIHBhcmFtCiAgICAgT01YX0FVRElPX1BBUkFNX1BDTU1PREVUWVBFIHBjbVBhcmFtczsKICAgICBJbml0T01YUGFyYW1zKCZwY21QYXJhbXMpOwogICAgIHBjbVBhcmFtcy5uUG9ydEluZGV4ID0gcG9ydEluZGV4OwogCi0gICAgc3RhdHVzX3QgZXJyID0gbU9NWC0+Z2V0UGFyYW1ldGVyKAorICAgIGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKICAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbUF1ZGlvUGNtLCAmcGNtUGFyYW1zLCBzaXplb2YocGNtUGFyYW1zKSk7CiAKICAgICBDSEVDS19FUShlcnIsIE9LKTsKQEAgLTIxNTksNyArMjM5Miw1MSBAQAogICAgIENIRUNLX0VRKGVyciwgT0spOwogfQogCi12b2lkIE9NWENvZGVjOjpzZXRBTVJGb3JtYXQoYm9vbCBpc1dBTVIpIHsKK3N0YXRpYyBPTVhfQVVESU9fQU1SQkFORE1PREVUWVBFIHBpY2tNb2RlRnJvbUJpdFJhdGUoYm9vbCBpc0FNUldCLCBpbnQzMl90IGJwcykgeworICAgIGlmIChpc0FNUldCKSB7CisgICAgICAgIGlmIChicHMgPD0gNjYwMCkgeworICAgICAgICAgICAgcmV0dXJuIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCMDsKKyAgICAgICAgfSBlbHNlIGlmIChicHMgPD0gODg1MCkgeworICAgICAgICAgICAgcmV0dXJuIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCMTsKKyAgICAgICAgfSBlbHNlIGlmIChicHMgPD0gMTI2NTApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVXQjI7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDE0MjUwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlV0IzOworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSAxNTg1MCkgeworICAgICAgICAgICAgcmV0dXJuIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCNDsKKyAgICAgICAgfSBlbHNlIGlmIChicHMgPD0gMTgyNTApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVXQjU7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDE5ODUwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlV0I2OworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSAyMzA1MCkgeworICAgICAgICAgICAgcmV0dXJuIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCNzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDIzODUwIGJwcworICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlV0I4OworICAgIH0gZWxzZSB7ICAvLyBBTVJOQgorICAgICAgICBpZiAoYnBzIDw9IDQ3NTApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjA7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDUxNTApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjE7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDU5MDApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjI7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDY3MDApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjM7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDc0MDApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjQ7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDc5NTApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjU7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDEwMjAwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlTkI2OworICAgICAgICB9CisKKyAgICAgICAgLy8gMTIyMDAgYnBzCisgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjc7CisgICAgfQorfQorCit2b2lkIE9NWENvZGVjOjpzZXRBTVJGb3JtYXQoYm9vbCBpc1dBTVIsIGludDMyX3QgYml0UmF0ZSkgewogICAgIE9NWF9VMzIgcG9ydEluZGV4ID0gbUlzRW5jb2RlciA/IGtQb3J0SW5kZXhPdXRwdXQgOiBrUG9ydEluZGV4SW5wdXQ7CiAKICAgICBPTVhfQVVESU9fUEFSQU1fQU1SVFlQRSBkZWY7CkBAIC0yMTcyLDkgKzI0NDksOCBAQAogICAgIENIRUNLX0VRKGVyciwgT0spOwogCiAgICAgZGVmLmVBTVJGcmFtZUZvcm1hdCA9IE9NWF9BVURJT19BTVJGcmFtZUZvcm1hdEZTRjsKLSAgICBkZWYuZUFNUkJhbmRNb2RlID0KLSAgICAgICAgaXNXQU1SID8gT01YX0FVRElPX0FNUkJhbmRNb2RlV0IwIDogT01YX0FVRElPX0FNUkJhbmRNb2RlTkIwOwogCisgICAgZGVmLmVBTVJCYW5kTW9kZSA9IHBpY2tNb2RlRnJvbUJpdFJhdGUoaXNXQU1SLCBiaXRSYXRlKTsKICAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIobU5vZGUsIE9NWF9JbmRleFBhcmFtQXVkaW9BbXIsICZkZWYsIHNpemVvZihkZWYpKTsKICAgICBDSEVDS19FUShlcnIsIE9LKTsKIApAQCAtMjE5MSw5ICsyNDY3LDYxIEBACiAgICAgfQogfQogCi12b2lkIE9NWENvZGVjOjpzZXRBQUNGb3JtYXQoaW50MzJfdCBudW1DaGFubmVscywgaW50MzJfdCBzYW1wbGVSYXRlKSB7Cit2b2lkIE9NWENvZGVjOjpzZXRBQUNGb3JtYXQoaW50MzJfdCBudW1DaGFubmVscywgaW50MzJfdCBzYW1wbGVSYXRlLCBpbnQzMl90IGJpdFJhdGUpIHsKKyAgICBDSEVDSyhudW1DaGFubmVscyA9PSAxIHx8IG51bUNoYW5uZWxzID09IDIpOwogICAgIGlmIChtSXNFbmNvZGVyKSB7CisgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8gaW5wdXQgcG9ydCAvLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgICAgICBzZXRSYXdBdWRpb0Zvcm1hdChrUG9ydEluZGV4SW5wdXQsIHNhbXBsZVJhdGUsIG51bUNoYW5uZWxzKTsKKworICAgICAgICAvLy8vLy8vLy8vLy8vLy8vIG91dHB1dCBwb3J0IC8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAgIC8vIGZvcm1hdAorICAgICAgICBPTVhfQVVESU9fUEFSQU1fUE9SVEZPUk1BVFRZUEUgZm9ybWF0OworICAgICAgICBmb3JtYXQublBvcnRJbmRleCA9IGtQb3J0SW5kZXhPdXRwdXQ7CisgICAgICAgIGZvcm1hdC5uSW5kZXggPSAwOworICAgICAgICBzdGF0dXNfdCBlcnIgPSBPTVhfRXJyb3JOb25lOworICAgICAgICB3aGlsZSAoT01YX0Vycm9yTm9uZSA9PSBlcnIpIHsKKyAgICAgICAgICAgIENIRUNLX0VRKG1PTVgtPmdldFBhcmFtZXRlcihtTm9kZSwgT01YX0luZGV4UGFyYW1BdWRpb1BvcnRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsIHNpemVvZihmb3JtYXQpKSwgT0spOworICAgICAgICAgICAgaWYgKGZvcm1hdC5lRW5jb2RpbmcgPT0gT01YX0FVRElPX0NvZGluZ0FBQykgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9ybWF0Lm5JbmRleCsrOworICAgICAgICB9CisgICAgICAgIENIRUNLX0VRKE9LLCBlcnIpOworICAgICAgICBDSEVDS19FUShtT01YLT5zZXRQYXJhbWV0ZXIobU5vZGUsIE9NWF9JbmRleFBhcmFtQXVkaW9Qb3J0Rm9ybWF0LAorICAgICAgICAgICAgICAgICZmb3JtYXQsIHNpemVvZihmb3JtYXQpKSwgT0spOworCisgICAgICAgIC8vIHBvcnQgZGVmaW5pdGlvbgorICAgICAgICBPTVhfUEFSQU1fUE9SVERFRklOSVRJT05UWVBFIGRlZjsKKyAgICAgICAgSW5pdE9NWFBhcmFtcygmZGVmKTsKKyAgICAgICAgZGVmLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4T3V0cHV0OworICAgICAgICBDSEVDS19FUShtT01YLT5nZXRQYXJhbWV0ZXIobU5vZGUsIE9NWF9JbmRleFBhcmFtUG9ydERlZmluaXRpb24sCisgICAgICAgICAgICAgICAgJmRlZiwgc2l6ZW9mKGRlZikpLCBPSyk7CisgICAgICAgIGRlZi5mb3JtYXQuYXVkaW8uYkZsYWdFcnJvckNvbmNlYWxtZW50ID0gT01YX1RSVUU7CisgICAgICAgIGRlZi5mb3JtYXQuYXVkaW8uZUVuY29kaW5nID0gT01YX0FVRElPX0NvZGluZ0FBQzsKKyAgICAgICAgQ0hFQ0tfRVEobU9NWC0+c2V0UGFyYW1ldGVyKG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVBvcnREZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICZkZWYsIHNpemVvZihkZWYpKSwgT0spOworCisgICAgICAgIC8vIHByb2ZpbGUKKyAgICAgICAgT01YX0FVRElPX1BBUkFNX0FBQ1BST0ZJTEVUWVBFIHByb2ZpbGU7CisgICAgICAgIEluaXRPTVhQYXJhbXMoJnByb2ZpbGUpOworICAgICAgICBwcm9maWxlLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4T3V0cHV0OworICAgICAgICBDSEVDS19FUShtT01YLT5nZXRQYXJhbWV0ZXIobU5vZGUsIE9NWF9JbmRleFBhcmFtQXVkaW9BYWMsCisgICAgICAgICAgICAgICAgJnByb2ZpbGUsIHNpemVvZihwcm9maWxlKSksIE9LKTsKKyAgICAgICAgcHJvZmlsZS5uQ2hhbm5lbHMgPSBudW1DaGFubmVsczsKKyAgICAgICAgcHJvZmlsZS5lQ2hhbm5lbE1vZGUgPSAobnVtQ2hhbm5lbHMgPT0gMT8KKyAgICAgICAgICAgICAgICBPTVhfQVVESU9fQ2hhbm5lbE1vZGVNb25vOiBPTVhfQVVESU9fQ2hhbm5lbE1vZGVTdGVyZW8pOworICAgICAgICBwcm9maWxlLm5TYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKKyAgICAgICAgcHJvZmlsZS5uQml0UmF0ZSA9IGJpdFJhdGU7CisgICAgICAgIHByb2ZpbGUubkF1ZGlvQmFuZFdpZHRoID0gMDsKKyAgICAgICAgcHJvZmlsZS5uRnJhbWVMZW5ndGggPSAwOworICAgICAgICBwcm9maWxlLm5BQUN0b29scyA9IE9NWF9BVURJT19BQUNUb29sQWxsOworICAgICAgICBwcm9maWxlLm5BQUNFUnRvb2xzID0gT01YX0FVRElPX0FBQ0VSTm9uZTsKKyAgICAgICAgcHJvZmlsZS5lQUFDUHJvZmlsZSA9IE9NWF9BVURJT19BQUNPYmplY3RMQzsKKyAgICAgICAgcHJvZmlsZS5lQUFDU3RyZWFtRm9ybWF0ID0gT01YX0FVRElPX0FBQ1N0cmVhbUZvcm1hdE1QNEZGOworICAgICAgICBDSEVDS19FUShtT01YLT5zZXRQYXJhbWV0ZXIobU5vZGUsIE9NWF9JbmRleFBhcmFtQXVkaW9BYWMsCisgICAgICAgICAgICAgICAgJnByb2ZpbGUsIHNpemVvZihwcm9maWxlKSksIE9LKTsKKwogICAgIH0gZWxzZSB7CiAgICAgICAgIE9NWF9BVURJT19QQVJBTV9BQUNQUk9GSUxFVFlQRSBwcm9maWxlOwogICAgICAgICBJbml0T01YUGFyYW1zKCZwcm9maWxlKTsKQEAgLTIzMjgsNyArMjY1Niw3IEBACiAgICAgbUNvZGVjU3BlY2lmaWNEYXRhSW5kZXggPSAwOwogfQogCi1zdGF0dXNfdCBPTVhDb2RlYzo6c3RhcnQoTWV0YURhdGEgKikgeworc3RhdHVzX3QgT01YQ29kZWM6OnN0YXJ0KE1ldGFEYXRhICptZXRhKSB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKIAogICAgIGlmIChtU3RhdGUgIT0gTE9BREVEKSB7CkBAIC0yMzM5LDYgKzI2NjcsMTQgQEAKICAgICBpZiAobVF1aXJrcyAmIGtXYW50c05BTEZyYWdtZW50cykgewogICAgICAgICBwYXJhbXMtPnNldEludDMyKGtLZXlXYW50c05BTEZyYWdtZW50cywgdHJ1ZSk7CiAgICAgfQorICAgIGlmIChtZXRhKSB7CisgICAgICAgIGludDY0X3Qgc3RhcnRUaW1lVXMgPSAwOworICAgICAgICBpbnQ2NF90IHRpbWVVczsKKyAgICAgICAgaWYgKG1ldGEtPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVVcykpIHsKKyAgICAgICAgICAgIHN0YXJ0VGltZVVzID0gdGltZVVzOworICAgICAgICB9CisgICAgICAgIHBhcmFtcy0+c2V0SW50NjQoa0tleVRpbWUsIHN0YXJ0VGltZVVzKTsKKyAgICB9CiAgICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+c3RhcnQocGFyYW1zLmdldCgpKTsKIAogICAgIGlmIChlcnIgIT0gT0spIHsKQEAgLTIzNTIsNiArMjY4OCw3IEBACiAgICAgbU91dHB1dFBvcnRTZXR0aW5nc0hhdmVDaGFuZ2VkID0gZmFsc2U7CiAgICAgbVNlZWtUaW1lVXMgPSAtMTsKICAgICBtRmlsbGVkQnVmZmVycy5jbGVhcigpOworICAgIG1QYXVzZWQgPSBmYWxzZTsKIAogICAgIHJldHVybiBpbml0KCk7CiB9CkBAIC0yNDU4LDYgKzI3OTUsNyBAQAogICAgICAgICAgICAgLy8gVGhlcmUncyBubyByZWFzb24gdG8gdHJpZ2dlciB0aGUgY29kZSBiZWxvdywgdGhlcmUncwogICAgICAgICAgICAgLy8gbm90aGluZyB0byBmbHVzaCB5ZXQuCiAgICAgICAgICAgICBzZWVraW5nID0gZmFsc2U7CisgICAgICAgICAgICBtUGF1c2VkID0gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBkcmFpbklucHV0QnVmZmVycygpOwpAQCAtMjk2Miw2ICszMzAwLDEzIEBACiAgICAgICAgICAgICB9IGVsc2UgaWYgKGF1ZGlvX2RlZi0+ZUVuY29kaW5nID09IE9NWF9BVURJT19Db2RpbmdBQUMpIHsKICAgICAgICAgICAgICAgICBtT3V0cHV0Rm9ybWF0LT5zZXRDU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAga0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMpOworICAgICAgICAgICAgICAgIGludDMyX3QgbnVtQ2hhbm5lbHMsIHNhbXBsZVJhdGUsIGJpdFJhdGU7CisgICAgICAgICAgICAgICAgaW5wdXRGb3JtYXQtPmZpbmRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCAmbnVtQ2hhbm5lbHMpOworICAgICAgICAgICAgICAgIGlucHV0Rm9ybWF0LT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZzYW1wbGVSYXRlKTsKKyAgICAgICAgICAgICAgICBpbnB1dEZvcm1hdC0+ZmluZEludDMyKGtLZXlCaXRSYXRlLCAmYml0UmF0ZSk7CisgICAgICAgICAgICAgICAgbU91dHB1dEZvcm1hdC0+c2V0SW50MzIoa0tleUNoYW5uZWxDb3VudCwgbnVtQ2hhbm5lbHMpOworICAgICAgICAgICAgICAgIG1PdXRwdXRGb3JtYXQtPnNldEludDMyKGtLZXlTYW1wbGVSYXRlLCBzYW1wbGVSYXRlKTsKKyAgICAgICAgICAgICAgICBtT3V0cHV0Rm9ybWF0LT5zZXRJbnQzMihrS2V5Qml0UmF0ZSwgYml0UmF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENIRUNLKCEiU2hvdWxkIG5vdCBiZSBoZXJlLiBVbmtub3duIGF1ZGlvIGVuY29kaW5nLiIpOwogICAgICAgICAgICAgfQpAQCAtMzAxMSw2ICszMzU2LDE0IEBACiAgICAgfQogfQogCitzdGF0dXNfdCBPTVhDb2RlYzo6cGF1c2UoKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIG1QYXVzZWQgPSB0cnVlOworCisgICAgcmV0dXJuIE9LOworfQorCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBzdGF0dXNfdCBRdWVyeUNvZGVjcygKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L09nZ0V4dHJhY3Rvci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9PZ2dFeHRyYWN0b3IuY3BwCmluZGV4IGQwZDFiMTQuLjYwMTNiNmYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L09nZ0V4dHJhY3Rvci5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvT2dnRXh0cmFjdG9yLmNwcApAQCAtNzYsNyArNzYsOSBAQAogICAgIHN0YXR1c190IHNlZWtUb09mZnNldChvZmZfdCBvZmZzZXQpOwogICAgIHN0YXR1c190IHJlYWROZXh0UGFja2V0KE1lZGlhQnVmZmVyICoqYnVmZmVyKTsKIAotICAgIHZvaWQgaW5pdCgpOworICAgIHN0YXR1c190IGluaXQoKTsKKworICAgIHNwPE1ldGFEYXRhPiBnZXRGaWxlTWV0YURhdGEoKSB7IHJldHVybiBtRmlsZU1ldGE7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGFnZSB7CkBAIC0xMDAsMTMgKzEwMiwxNyBAQAogICAgIHZvcmJpc19jb21tZW50IG1WYzsKIAogICAgIHNwPE1ldGFEYXRhPiBtTWV0YTsKKyAgICBzcDxNZXRhRGF0YT4gbUZpbGVNZXRhOwogCiAgICAgc3NpemVfdCByZWFkUGFnZShvZmZfdCBvZmZzZXQsIFBhZ2UgKnBhZ2UpOwogICAgIHN0YXR1c190IGZpbmROZXh0UGFnZShvZmZfdCBzdGFydE9mZnNldCwgb2ZmX3QgKnBhZ2VPZmZzZXQpOwogCi0gICAgdm9pZCB2ZXJpZnlIZWFkZXIoCisgICAgc3RhdHVzX3QgdmVyaWZ5SGVhZGVyKAogICAgICAgICAgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlciwgdWludDhfdCB0eXBlKTsKIAorICAgIHZvaWQgcGFyc2VGaWxlTWV0YURhdGEoKTsKKyAgICB2b2lkIGV4dHJhY3RBbGJ1bUFydChjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKICAgICBNeVZvcmJpc0V4dHJhY3Rvcihjb25zdCBNeVZvcmJpc0V4dHJhY3RvciAmKTsKICAgICBNeVZvcmJpc0V4dHJhY3RvciAmb3BlcmF0b3I9KGNvbnN0IE15Vm9yYmlzRXh0cmFjdG9yICYpOwogfTsKQEAgLTE4OCw5ICsxOTQsMTQgQEAKICAgICAgIG1OZXh0TGFjZUluZGV4KDApLAogICAgICAgbUZpcnN0RGF0YU9mZnNldCgtMSkgewogICAgIG1DdXJyZW50UGFnZS5tTnVtU2VnbWVudHMgPSAwOworCisgICAgdm9yYmlzX2luZm9faW5pdCgmbVZpKTsKKyAgICB2b3JiaXNfY29tbWVudF9pbml0KCZtVmMpOwogfQogCiBNeVZvcmJpc0V4dHJhY3Rvcjo6fk15Vm9yYmlzRXh0cmFjdG9yKCkgeworICAgIHZvcmJpc19jb21tZW50X2NsZWFyKCZtVmMpOworICAgIHZvcmJpc19pbmZvX2NsZWFyKCZtVmkpOwogfQogCiBzcDxNZXRhRGF0YT4gTXlWb3JiaXNFeHRyYWN0b3I6OmdldEZvcm1hdCgpIGNvbnN0IHsKQEAgLTI5Nyw2ICszMDgsNyBAQAogICAgICAgICB0b3RhbFNpemUgKz0gcGFnZS0+bUxhY2VbaV07CiAgICAgfQogCisjaWYgMAogICAgIFN0cmluZzggdG1wOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFnZS0+bU51bVNlZ21lbnRzOyArK2kpIHsKICAgICAgICAgY2hhciB4WzMyXTsKQEAgLTMwNiw2ICszMTgsNyBAQAogICAgIH0KIAogICAgIExPR1YoIiVjICVzIiwgcGFnZS0+bUZsYWdzICYgMSA/ICcrJyA6ICcgJywgdG1wLnN0cmluZygpKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIHNpemVvZihoZWFkZXIpICsgcGFnZS0+bU51bVNlZ21lbnRzICsgdG90YWxTaXplOwogfQpAQCAtNDIxLDQ3ICs0MzQsNjAgQEAKICAgICB9CiB9CiAKLXZvaWQgTXlWb3JiaXNFeHRyYWN0b3I6OmluaXQoKSB7Ci0gICAgdm9yYmlzX2luZm9faW5pdCgmbVZpKTsKLQotICAgIHZvcmJpc19jb21tZW50IG1WYzsKLQorc3RhdHVzX3QgTXlWb3JiaXNFeHRyYWN0b3I6OmluaXQoKSB7CiAgICAgbU1ldGEgPSBuZXcgTWV0YURhdGE7CiAgICAgbU1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19WT1JCSVMpOwogCiAgICAgTWVkaWFCdWZmZXIgKnBhY2tldDsKLSAgICBDSEVDS19FUShyZWFkTmV4dFBhY2tldCgmcGFja2V0KSwgT0spOworICAgIHN0YXR1c190IGVycjsKKyAgICBpZiAoKGVyciA9IHJlYWROZXh0UGFja2V0KCZwYWNrZXQpKSAhPSBPSykgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KICAgICBMT0dWKCJyZWFkIHBhY2tldCBvZiBzaXplICVkXG4iLCBwYWNrZXQtPnJhbmdlX2xlbmd0aCgpKTsKLSAgICB2ZXJpZnlIZWFkZXIocGFja2V0LCAxKTsKKyAgICBlcnIgPSB2ZXJpZnlIZWFkZXIocGFja2V0LCAxKTsKICAgICBwYWNrZXQtPnJlbGVhc2UoKTsKICAgICBwYWNrZXQgPSBOVUxMOworICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CiAKLSAgICBDSEVDS19FUShyZWFkTmV4dFBhY2tldCgmcGFja2V0KSwgT0spOworICAgIGlmICgoZXJyID0gcmVhZE5leHRQYWNrZXQoJnBhY2tldCkpICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQogICAgIExPR1YoInJlYWQgcGFja2V0IG9mIHNpemUgJWRcbiIsIHBhY2tldC0+cmFuZ2VfbGVuZ3RoKCkpOwotICAgIHZlcmlmeUhlYWRlcihwYWNrZXQsIDMpOworICAgIGVyciA9IHZlcmlmeUhlYWRlcihwYWNrZXQsIDMpOwogICAgIHBhY2tldC0+cmVsZWFzZSgpOwogICAgIHBhY2tldCA9IE5VTEw7CisgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KIAotICAgIENIRUNLX0VRKHJlYWROZXh0UGFja2V0KCZwYWNrZXQpLCBPSyk7CisgICAgaWYgKChlcnIgPSByZWFkTmV4dFBhY2tldCgmcGFja2V0KSkgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CiAgICAgTE9HVigicmVhZCBwYWNrZXQgb2Ygc2l6ZSAlZFxuIiwgcGFja2V0LT5yYW5nZV9sZW5ndGgoKSk7Ci0gICAgdmVyaWZ5SGVhZGVyKHBhY2tldCwgNSk7CisgICAgZXJyID0gdmVyaWZ5SGVhZGVyKHBhY2tldCwgNSk7CiAgICAgcGFja2V0LT5yZWxlYXNlKCk7CiAgICAgcGFja2V0ID0gTlVMTDsKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQogCiAgICAgbUZpcnN0RGF0YU9mZnNldCA9IG1PZmZzZXQgKyBtQ3VycmVudFBhZ2VTaXplOworCisgICAgcmV0dXJuIE9LOwogfQogCi12b2lkIE15Vm9yYmlzRXh0cmFjdG9yOjp2ZXJpZnlIZWFkZXIoCitzdGF0dXNfdCBNeVZvcmJpc0V4dHJhY3Rvcjo6dmVyaWZ5SGVhZGVyKAogICAgICAgICBNZWRpYUJ1ZmZlciAqYnVmZmVyLCB1aW50OF90IHR5cGUpIHsKICAgICBjb25zdCB1aW50OF90ICpkYXRhID0KICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CiAKLSAgICBDSEVDSyhzaXplID49IDcpOwotCi0gICAgQ0hFQ0tfRVEoZGF0YVswXSwgdHlwZSk7Ci0gICAgQ0hFQ0soIW1lbWNtcCgmZGF0YVsxXSwgInZvcmJpcyIsIDYpKTsKKyAgICBpZiAoc2l6ZSA8IDcgfHwgZGF0YVswXSAhPSB0eXBlIHx8IG1lbWNtcCgmZGF0YVsxXSwgInZvcmJpcyIsIDYpKSB7CisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgfQogCiAgICAgb2dnX2J1ZmZlciBidWY7CiAgICAgYnVmLmRhdGEgPSAodWludDhfdCAqKWRhdGE7CkBAIC01MDgsMTggKzUzNCwyNiBAQAogCiAgICAgICAgIGNhc2UgMzoKICAgICAgICAgewotICAgICAgICAgICAgQ0hFQ0tfRVEoMCwgX3ZvcmJpc191bnBhY2tfY29tbWVudCgmbVZjLCAmYml0cykpOworICAgICAgICAgICAgaWYgKDAgIT0gX3ZvcmJpc191bnBhY2tfY29tbWVudCgmbVZjLCAmYml0cykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwYXJzZUZpbGVNZXRhRGF0YSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIDU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIENIRUNLX0VRKDAsIF92b3JiaXNfdW5wYWNrX2Jvb2tzKCZtVmksICZiaXRzKSk7CisgICAgICAgICAgICBpZiAoMCAhPSBfdm9yYmlzX3VucGFja19ib29rcygmbVZpLCAmYml0cykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtTWV0YS0+c2V0RGF0YShrS2V5Vm9yYmlzQm9va3MsIDAsIGRhdGEsIHNpemUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gT0s7CiB9CiAKIHVpbnQ2NF90IE15Vm9yYmlzRXh0cmFjdG9yOjphcHByb3hCaXRyYXRlKCkgewpAQCAtNTMwLDYgKzU2NCwxOTIgQEAKICAgICByZXR1cm4gKG1WaS5iaXRyYXRlX2xvd2VyICsgbVZpLmJpdHJhdGVfdXBwZXIpIC8gMjsKIH0KIAordm9pZCBNeVZvcmJpc0V4dHJhY3Rvcjo6cGFyc2VGaWxlTWV0YURhdGEoKSB7CisgICAgbUZpbGVNZXRhID0gbmV3IE1ldGFEYXRhOworICAgIG1GaWxlTWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9PR0cpOworCisgICAgc3RydWN0IHsKKyAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbVRhZzsKKyAgICAgICAgdWludDMyX3QgbUtleTsKKyAgICB9IGtNYXBbXSA9IHsKKyAgICAgICAgeyAiVElUTEUiLCBrS2V5VGl0bGUgfSwKKyAgICAgICAgeyAiQVJUSVNUIiwga0tleUFydGlzdCB9LAorICAgICAgICB7ICJBTEJVTSIsIGtLZXlBbGJ1bSB9LAorICAgICAgICB7ICJDT01QT1NFUiIsIGtLZXlDb21wb3NlciB9LAorICAgICAgICB7ICJHRU5SRSIsIGtLZXlHZW5yZSB9LAorICAgICAgICB7ICJBVVRIT1IiLCBrS2V5QXV0aG9yIH0sCisgICAgICAgIHsgIlRSQUNLTlVNQkVSIiwga0tleUNEVHJhY2tOdW1iZXIgfSwKKyAgICAgICAgeyAiRElTQ05VTUJFUiIsIGtLZXlEaXNjTnVtYmVyIH0sCisgICAgICAgIHsgIkRBVEUiLCBrS2V5RGF0ZSB9LAorICAgICAgICB7ICJMWVJJQ0lTVCIsIGtLZXlXcml0ZXIgfSwKKyAgICAgICAgeyAiTUVUQURBVEFfQkxPQ0tfUElDVFVSRSIsIGtLZXlBbGJ1bUFydCB9LAorICAgIH07CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1WYy5jb21tZW50czsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQgPSBtVmMudXNlcl9jb21tZW50c1tpXTsKKworICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHNpemVvZihrTWFwKSAvIHNpemVvZihrTWFwWzBdKTsgKytqKSB7CisgICAgICAgICAgICBzaXplX3QgdGFnTGVuID0gc3RybGVuKGtNYXBbal0ubVRhZyk7CisgICAgICAgICAgICBpZiAoIXN0cm5jYXNlY21wKGtNYXBbal0ubVRhZywgY29tbWVudCwgdGFnTGVuKQorICAgICAgICAgICAgICAgICAgICAmJiBjb21tZW50W3RhZ0xlbl0gPT0gJz0nKSB7CisgICAgICAgICAgICAgICAgaWYgKGtNYXBbal0ubUtleSA9PSBrS2V5QWxidW1BcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFjdEFsYnVtQXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21tZW50W3RhZ0xlbiArIDFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1WYy5jb21tZW50X2xlbmd0aHNbaV0gLSB0YWdMZW4gLSAxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtRmlsZU1ldGEtPnNldENTdHJpbmcoa01hcFtqXS5tS2V5LCAmY29tbWVudFt0YWdMZW4gKyAxXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisKKyNpZiAwCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtVmMuY29tbWVudHM7ICsraSkgeworICAgICAgICBMT0dJKCJjb21tZW50ICMlZDogJyVzJyIsIGkgKyAxLCBtVmMudXNlcl9jb21tZW50c1tpXSk7CisgICAgfQorI2VuZGlmCit9CisKKy8vIFRoZSByZXR1cm5lZCBidWZmZXIgc2hvdWxkIGJlIGZyZWUoKWQuCitzdGF0aWMgdWludDhfdCAqRGVjb2RlQmFzZTY0KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzaXplLCBzaXplX3QgKm91dFNpemUpIHsKKyAgICAqb3V0U2l6ZSA9IDA7CisKKyAgICBpZiAoKHNpemUgJSA0KSAhPSAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNpemVfdCBuID0gc2l6ZTsKKyAgICBzaXplX3QgcGFkZGluZyA9IDA7CisgICAgaWYgKG4gPj0gMSAmJiBzW24gLSAxXSA9PSAnPScpIHsKKyAgICAgICAgcGFkZGluZyA9IDE7CisKKyAgICAgICAgaWYgKG4gPj0gMiAmJiBzW24gLSAyXSA9PSAnPScpIHsKKyAgICAgICAgICAgIHBhZGRpbmcgPSAyOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZV90IG91dExlbiA9IDMgKiBzaXplIC8gNCAtIHBhZGRpbmc7CisKKyAgICAqb3V0U2l6ZSA9IG91dExlbjsKKworICAgIHZvaWQgKmJ1ZmZlciA9IG1hbGxvYyhvdXRMZW4pOworCisgICAgdWludDhfdCAqb3V0ID0gKHVpbnQ4X3QgKilidWZmZXI7CisgICAgc2l6ZV90IGogPSAwOworICAgIHVpbnQzMl90IGFjY3VtID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBjaGFyIGMgPSBzW2ldOworICAgICAgICB1bnNpZ25lZCB2YWx1ZTsKKyAgICAgICAgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGMgLSAnQSc7CisgICAgICAgIH0gZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAneicpIHsKKyAgICAgICAgICAgIHZhbHVlID0gMjYgKyBjIC0gJ2EnOworICAgICAgICB9IGVsc2UgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICB2YWx1ZSA9IDUyICsgYyAtICcwJzsKKyAgICAgICAgfSBlbHNlIGlmIChjID09ICcrJykgeworICAgICAgICAgICAgdmFsdWUgPSA2MjsKKyAgICAgICAgfSBlbHNlIGlmIChjID09ICcvJykgeworICAgICAgICAgICAgdmFsdWUgPSA2MzsKKyAgICAgICAgfSBlbHNlIGlmIChjICE9ICc9JykgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaSA8IG4gLSBwYWRkaW5nKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGFjY3VtID0gKGFjY3VtIDw8IDYpIHwgdmFsdWU7CisKKyAgICAgICAgaWYgKCgoaSArIDEpICUgNCkgPT0gMCkgeworICAgICAgICAgICAgb3V0W2orK10gPSAoYWNjdW0gPj4gMTYpOworCisgICAgICAgICAgICBpZiAoaiA8IG91dExlbikgeyBvdXRbaisrXSA9IChhY2N1bSA+PiA4KSAmIDB4ZmY7IH0KKyAgICAgICAgICAgIGlmIChqIDwgb3V0TGVuKSB7IG91dFtqKytdID0gYWNjdW0gJiAweGZmOyB9CisKKyAgICAgICAgICAgIGFjY3VtID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAodWludDhfdCAqKWJ1ZmZlcjsKK30KKwordm9pZCBNeVZvcmJpc0V4dHJhY3Rvcjo6ZXh0cmFjdEFsYnVtQXJ0KGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTE9HVigiZXh0cmFjdEFsYnVtQXJ0IGZyb20gJyVzJyIsIChjb25zdCBjaGFyICopZGF0YSk7CisKKyAgICBzaXplX3QgZmxhY1NpemU7CisgICAgdWludDhfdCAqZmxhYyA9IERlY29kZUJhc2U2NCgoY29uc3QgY2hhciAqKWRhdGEsIHNpemUsICZmbGFjU2l6ZSk7CisKKyAgICBpZiAoZmxhYyA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIm1hbGZvcm1lZCBiYXNlNjQgZW5jb2RlZCBkYXRhLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTE9HVigiZ290IGZsYWMgb2Ygc2l6ZSAlZCIsIGZsYWNTaXplKTsKKworICAgIHVpbnQzMl90IHBpY1R5cGU7CisgICAgdWludDMyX3QgdHlwZUxlbjsKKyAgICB1aW50MzJfdCBkZXNjTGVuOworICAgIHVpbnQzMl90IGRhdGFMZW47CisgICAgY2hhciB0eXBlWzEyOF07CisKKyAgICBpZiAoZmxhY1NpemUgPCA4KSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBwaWNUeXBlID0gVTMyX0FUKGZsYWMpOworCisgICAgaWYgKHBpY1R5cGUgIT0gMykgeworICAgICAgICAvLyBUaGlzIGlzIG5vdCBhIGZyb250IGNvdmVyLgorICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgdHlwZUxlbiA9IFUzMl9BVCgmZmxhY1s0XSk7CisgICAgaWYgKHR5cGVMZW4gKyAxID4gc2l6ZW9mKHR5cGUpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBpZiAoZmxhY1NpemUgPCA4ICsgdHlwZUxlbikgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgbWVtY3B5KHR5cGUsICZmbGFjWzhdLCB0eXBlTGVuKTsKKyAgICB0eXBlW3R5cGVMZW5dID0gJ1wwJzsKKworICAgIExPR1YoInBpY1R5cGUgPSAlZCwgdHlwZSA9ICclcyciLCBwaWNUeXBlLCB0eXBlKTsKKworICAgIGlmICghc3RyY21wKHR5cGUsICItLT4iKSkgeworICAgICAgICAvLyBUaGlzIGlzIG5vdCBpbmxpbmUgY292ZXIgYXJ0LCBidXQgYW4gZXh0ZXJuYWwgdXJsIGluc3RlYWQuCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBkZXNjTGVuID0gVTMyX0FUKCZmbGFjWzggKyB0eXBlTGVuXSk7CisKKyAgICBpZiAoZmxhY1NpemUgPCAzMiArIHR5cGVMZW4gKyBkZXNjTGVuKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBkYXRhTGVuID0gVTMyX0FUKCZmbGFjWzggKyB0eXBlTGVuICsgNCArIGRlc2NMZW4gKyAxNl0pOworCisgICAgaWYgKGZsYWNTaXplIDwgMzIgKyB0eXBlTGVuICsgZGVzY0xlbiArIGRhdGFMZW4pIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIExPR1YoImdvdCBpbWFnZSBkYXRhLCAlZCB0cmFpbGluZyBieXRlcyIsCisgICAgICAgICBmbGFjU2l6ZSAtIDMyIC0gdHlwZUxlbiAtIGRlc2NMZW4gLSBkYXRhTGVuKTsKKworICAgIG1GaWxlTWV0YS0+c2V0RGF0YSgKKyAgICAgICAgICAgIGtLZXlBbGJ1bUFydCwgMCwgJmZsYWNbOCArIHR5cGVMZW4gKyA0ICsgZGVzY0xlbiArIDIwXSwgZGF0YUxlbik7CisKKyAgICBtRmlsZU1ldGEtPnNldENTdHJpbmcoa0tleUFsYnVtQXJ0TUlNRSwgdHlwZSk7CisKK2V4aXQ6CisgICAgZnJlZShmbGFjKTsKKyAgICBmbGFjID0gTlVMTDsKK30KKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogT2dnRXh0cmFjdG9yOjpPZ2dFeHRyYWN0b3IoY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSkKQEAgLTUzNywxMCArNzU3LDExIEBACiAgICAgICBtSW5pdENoZWNrKE5PX0lOSVQpLAogICAgICAgbUltcGwoTlVMTCkgewogICAgIG1JbXBsID0gbmV3IE15Vm9yYmlzRXh0cmFjdG9yKG1EYXRhU291cmNlKTsKLSAgICBDSEVDS19FUShtSW1wbC0+c2Vla1RvT2Zmc2V0KDApLCBPSyk7Ci0gICAgbUltcGwtPmluaXQoKTsKKyAgICBtSW5pdENoZWNrID0gbUltcGwtPnNlZWtUb09mZnNldCgwKTsKIAotICAgIG1Jbml0Q2hlY2sgPSBPSzsKKyAgICBpZiAobUluaXRDaGVjayA9PSBPSykgeworICAgICAgICBtSW5pdENoZWNrID0gbUltcGwtPmluaXQoKTsKKyAgICB9CiB9CiAKIE9nZ0V4dHJhY3Rvcjo6fk9nZ0V4dHJhY3RvcigpIHsKQEAgLTU3MCwxNSArNzkxLDcgQEAKIH0KIAogc3A8TWV0YURhdGE+IE9nZ0V4dHJhY3Rvcjo6Z2V0TWV0YURhdGEoKSB7Ci0gICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7Ci0KLSAgICBpZiAobUluaXRDaGVjayAhPSBPSykgewotICAgICAgICByZXR1cm4gbWV0YTsKLSAgICB9Ci0KLSAgICBtZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX09HRyk7Ci0KLSAgICByZXR1cm4gbWV0YTsKKyAgICByZXR1cm4gbUltcGwtPmdldEZpbGVNZXRhRGF0YSgpOwogfQogCiBib29sIFNuaWZmT2dnKApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvUHJlZmV0Y2hlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9QcmVmZXRjaGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUwYTlmOS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9QcmVmZXRjaGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2RlZmluZSBMT0dfVEFHICJQcmVmZXRjaGVyIgotLy8jZGVmaW5lIExPR19OREVCVUcgMAotI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgotCi0jaW5jbHVkZSAiaW5jbHVkZS9QcmVmZXRjaGVyLmgiCi0KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUJ1ZmZlci5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KLSNpbmNsdWRlIDx1dGlscy9MaXN0Lmg+Ci0KLW5hbWVzcGFjZSBhbmRyb2lkIHsKLQotc3RydWN0IFByZWZldGNoZWRTb3VyY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2UgewotICAgIFByZWZldGNoZWRTb3VyY2UoCi0gICAgICAgICAgICBzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICBjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSk7Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpOwotICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOwotCi0gICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAotICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zKTsKLQotICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldEZvcm1hdCgpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UHJlZmV0Y2hlZFNvdXJjZSgpOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBzdHJ1Y3QgUHJlZmV0Y2hlcjsKLQotICAgIE11dGV4IG1Mb2NrOwotICAgIENvbmRpdGlvbiBtQ29uZGl0aW9uOwotCi0gICAgc3A8TWVkaWFTb3VyY2U+IG1Tb3VyY2U7Ci0gICAgc2l6ZV90IG1JbmRleDsKLSAgICBib29sIG1TdGFydGVkOwotICAgIGJvb2wgbVJlYWNoZWRFT1M7Ci0gICAgc3RhdHVzX3QgbUZpbmFsU3RhdHVzOwotICAgIGludDY0X3QgbVNlZWtUaW1lVXM7Ci0gICAgaW50NjRfdCBtQ2FjaGVEdXJhdGlvblVzOwotICAgIHNpemVfdCBtQ2FjaGVTaXplQnl0ZXM7Ci0gICAgYm9vbCBtUHJlZmV0Y2hlclN0b3BwZWQ7Ci0gICAgYm9vbCBtQ3VycmVudGx5UHJlZmV0Y2hpbmc7Ci0KLSAgICBMaXN0PE1lZGlhQnVmZmVyICo+IG1DYWNoZWRCdWZmZXJzOwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmZiBzb3VyY2UgaXMgY3VycmVudGx5IGNhY2hpbmcuCi0gICAgYm9vbCBnZXRDYWNoZUR1cmF0aW9uVXMoaW50NjRfdCAqZHVyYXRpb25Vcywgc2l6ZV90ICp0b3RhbFNpemUgPSBOVUxMKTsKLQotICAgIHZvaWQgdXBkYXRlQ2FjaGVEdXJhdGlvbl9sKCk7Ci0gICAgdm9pZCBjbGVhckNhY2hlX2woKTsKLQotICAgIHZvaWQgY2FjaGVNb3JlKCk7Ci0gICAgdm9pZCBvblByZWZldGNoZXJTdG9wcGVkKCk7Ci0KLSAgICBQcmVmZXRjaGVkU291cmNlKGNvbnN0IFByZWZldGNoZWRTb3VyY2UgJik7Ci0gICAgUHJlZmV0Y2hlZFNvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IFByZWZldGNoZWRTb3VyY2UgJik7Ci19OwotCi1QcmVmZXRjaGVyOjpQcmVmZXRjaGVyKCkKLSAgICA6IG1Eb25lKGZhbHNlKSwKLSAgICAgIG1UaHJlYWRFeGl0ZWQoZmFsc2UpIHsKLSAgICBzdGFydFRocmVhZCgpOwotfQotCi1QcmVmZXRjaGVyOjp+UHJlZmV0Y2hlcigpIHsKLSAgICBzdG9wVGhyZWFkKCk7Ci19Ci0KLXNwPE1lZGlhU291cmNlPiBQcmVmZXRjaGVyOjphZGRTb3VyY2UoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotCi0gICAgc3A8UHJlZmV0Y2hlZFNvdXJjZT4gcHNvdXJjZSA9Ci0gICAgICAgIG5ldyBQcmVmZXRjaGVkU291cmNlKG1Tb3VyY2VzLnNpemUoKSwgc291cmNlKTsKLQotICAgIG1Tb3VyY2VzLmFkZChwc291cmNlKTsKLQotICAgIHJldHVybiBwc291cmNlOwotfQotCi12b2lkIFByZWZldGNoZXI6OnN0YXJ0VGhyZWFkKCkgewotICAgIG1UaHJlYWRFeGl0ZWQgPSBmYWxzZTsKLSAgICBtRG9uZSA9IGZhbHNlOwotCi0gICAgaW50IHJlcyA9IGFuZHJvaWRDcmVhdGVUaHJlYWRFdGMoCi0gICAgICAgICAgICBUaHJlYWRXcmFwcGVyLCB0aGlzLCAiUHJlZmV0Y2hlciIsCi0gICAgICAgICAgICBBTkRST0lEX1BSSU9SSVRZX0RFRkFVTFQsIDAsICZtVGhyZWFkKTsKLQotICAgIENIRUNLX0VRKHJlcywgMSk7Ci19Ci0KLXZvaWQgUHJlZmV0Y2hlcjo6c3RvcFRocmVhZCgpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotCi0gICAgd2hpbGUgKCFtVGhyZWFkRXhpdGVkKSB7Ci0gICAgICAgIG1Eb25lID0gdHJ1ZTsKLSAgICAgICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKLSAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1Mb2NrKTsKLSAgICB9Ci19Ci0KLS8vIHN0YXRpYwotaW50IFByZWZldGNoZXI6OlRocmVhZFdyYXBwZXIodm9pZCAqbWUpIHsKLSAgICBzdGF0aWNfY2FzdDxQcmVmZXRjaGVyICo+KG1lKS0+dGhyZWFkRnVuYygpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8vIENhY2hlIGF0IG1vc3QgMSBtaW4gZm9yIGVhY2ggc291cmNlLgotc3RhdGljIGludDY0X3Qga01heENhY2hlRHVyYXRpb25VcyA9IDYwICogMTAwMDAwMGxsOwotCi0vLyBBdCB0aGUgc2FtZSB0aW1lIGNhY2hlIGF0IG1vc3QgNU1CIHBlciBzb3VyY2UuCi1zdGF0aWMgc2l6ZV90IGtNYXhDYWNoZVNpemVCeXRlcyA9IDUgKiAxMDI0ICogMTAyNDsKLQotLy8gSWYgdGhlIGFtb3VudCBvZiBjYWNoZWQgZGF0YSBkcm9wcyBiZWxvdyB0aGlzLAotLy8gZmlsbCB0aGUgY2FjaGUgdXAgdG8gdGhlIG1heCBkdXJhdGlvbiBhZ2Fpbi4KLXN0YXRpYyBpbnQ2NF90IGtMb3dXYXRlckR1cmF0aW9uVXMgPSA1MDAwMDAwbGw7Ci0KLXZvaWQgUHJlZmV0Y2hlcjo6dGhyZWFkRnVuYygpIHsKLSAgICBib29sIGZpbGxpbmdDYWNoZSA9IGZhbHNlOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBzcDxQcmVmZXRjaGVkU291cmNlPiBtaW5Tb3VyY2U7Ci0gICAgICAgIGludDY0X3QgbWluQ2FjaGVEdXJhdGlvblVzID0gLTE7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLSAgICAgICAgICAgIGlmIChtRG9uZSkgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtQ29uZGl0aW9uLndhaXRSZWxhdGl2ZSgKLSAgICAgICAgICAgICAgICAgICAgbUxvY2ssIGZpbGxpbmdDYWNoZSA/IDFsbCA6IDEwMDAwMDAwMDBsbCk7Ci0KLQotICAgICAgICAgICAgc3NpemVfdCBtaW5JbmRleCA9IC0xOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtU291cmNlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIHNwPFByZWZldGNoZWRTb3VyY2U+IHNvdXJjZSA9IG1Tb3VyY2VzW2ldLnByb21vdGUoKTsKLQotICAgICAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpbnQ2NF90IGNhY2hlRHVyYXRpb25VczsKLSAgICAgICAgICAgICAgICBzaXplX3QgY2FjaGVTaXplQnl0ZXM7Ci0gICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UtPmdldENhY2hlRHVyYXRpb25VcygmY2FjaGVEdXJhdGlvblVzLCAmY2FjaGVTaXplQnl0ZXMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChjYWNoZVNpemVCeXRlcyA+IGtNYXhDYWNoZVNpemVCeXRlcykgewotICAgICAgICAgICAgICAgICAgICBMT0dJKCJtYXggY2FjaGUgc2l6ZSByZWFjaGVkIik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChtU291cmNlcy5zaXplKCkgPiAxICYmIGNhY2hlRHVyYXRpb25VcyA+PSBrTWF4Q2FjaGVEdXJhdGlvblVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIExPR0koIm1heCBkdXJhdGlvbiByZWFjaGVkLCBzaXplID0gJWQgYnl0ZXMiLCBjYWNoZVNpemVCeXRlcyk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChtaW5JbmRleCA8IDAgfHwgY2FjaGVEdXJhdGlvblVzIDwgbWluQ2FjaGVEdXJhdGlvblVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1pbkNhY2hlRHVyYXRpb25VcyA9IGNhY2hlRHVyYXRpb25VczsKLSAgICAgICAgICAgICAgICAgICAgbWluSW5kZXggPSBpOwotICAgICAgICAgICAgICAgICAgICBtaW5Tb3VyY2UgPSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobWluSW5kZXggPCAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZpbGxpbmdDYWNoZSkgewotICAgICAgICAgICAgICAgICAgICBMT0dWKCJbJXBdIGRvbmUgZmlsbGluZyB0aGUgY2FjaGUsIGFib3ZlIGhpZ2ggd2F0ZXIgbWFyay4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpOwotICAgICAgICAgICAgICAgICAgICBmaWxsaW5nQ2FjaGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWZpbGxpbmdDYWNoZSAmJiBtaW5DYWNoZUR1cmF0aW9uVXMgPCBrTG93V2F0ZXJEdXJhdGlvblVzKSB7Ci0gICAgICAgICAgICBMT0dJKCJbJXBdIGNhY2hlIGJlbG93IGxvdyB3YXRlciBtYXJrLCBmaWxsaW5nIGNhY2hlLiIsIHRoaXMpOwotICAgICAgICAgICAgZmlsbGluZ0NhY2hlID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmaWxsaW5nQ2FjaGUpIHsKLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBub3QgdG8gaG9sZCB0aGUgbG9jayB3aGlsZSBjYWxsaW5nIGludG8gdGhlIHNvdXJjZS4KLSAgICAgICAgICAgIC8vIFRoZSBsb2NrIGd1YXJkcyB0aGUgbGlzdCBvZiBzb3VyY2VzLCBub3QgdGhlIGluZGl2aWR1YWwgc291cmNlcwotICAgICAgICAgICAgLy8gdGhlbXNlbHZlcy4KLSAgICAgICAgICAgIG1pblNvdXJjZS0+Y2FjaGVNb3JlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3A8UHJlZmV0Y2hlZFNvdXJjZT4gc291cmNlID0gbVNvdXJjZXNbaV0ucHJvbW90ZSgpOwotCi0gICAgICAgIGlmIChzb3VyY2UgPT0gTlVMTCkgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBzb3VyY2UtPm9uUHJlZmV0Y2hlclN0b3BwZWQoKTsKLSAgICB9Ci0KLSAgICBtVGhyZWFkRXhpdGVkID0gdHJ1ZTsKLSAgICBtQ29uZGl0aW9uLnNpZ25hbCgpOwotfQotCi1pbnQ2NF90IFByZWZldGNoZXI6OmdldENhY2hlZER1cmF0aW9uVXMoYm9vbCAqbm9Nb3JlRGF0YSkgewotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0KLSAgICBpbnQ2NF90IG1pbkNhY2hlRHVyYXRpb25VcyA9IC0xOwotICAgIHNzaXplX3QgbWluSW5kZXggPSAtMTsKLSAgICBib29sIGFueVNvdXJjZUFjdGl2ZSA9IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaW50NjRfdCBjYWNoZUR1cmF0aW9uVXM7Ci0gICAgICAgIHNwPFByZWZldGNoZWRTb3VyY2U+IHNvdXJjZSA9IG1Tb3VyY2VzW2ldLnByb21vdGUoKTsKLSAgICAgICAgaWYgKHNvdXJjZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzb3VyY2UtPmdldENhY2hlRHVyYXRpb25VcygmY2FjaGVEdXJhdGlvblVzKSkgewotICAgICAgICAgICAgYW55U291cmNlQWN0aXZlID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtaW5JbmRleCA8IDAgfHwgY2FjaGVEdXJhdGlvblVzIDwgbWluQ2FjaGVEdXJhdGlvblVzKSB7Ci0gICAgICAgICAgICBtaW5DYWNoZUR1cmF0aW9uVXMgPSBjYWNoZUR1cmF0aW9uVXM7Ci0gICAgICAgICAgICBtaW5JbmRleCA9IGk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobm9Nb3JlRGF0YSkgewotICAgICAgICAqbm9Nb3JlRGF0YSA9ICFhbnlTb3VyY2VBY3RpdmU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1pbkNhY2hlRHVyYXRpb25VcyA8IDAgPyAwIDogbWluQ2FjaGVEdXJhdGlvblVzOwotfQotCi1zdGF0dXNfdCBQcmVmZXRjaGVyOjpwcmVwYXJlKAotICAgICAgICBib29sICgqY29udGludWVGdW5jKSh2b2lkICpjb29raWUpLCB2b2lkICpjb29raWUpIHsKLSAgICAvLyBGaWxsIHRoZSBjYWNoZS4KLQotICAgIGludDY0X3QgZHVyYXRpb247Ci0gICAgYm9vbCBub01vcmVEYXRhOwotICAgIGRvIHsKLSAgICAgICAgdXNsZWVwKDEwMDAwMCk7Ci0KLSAgICAgICAgaWYgKGNvbnRpbnVlRnVuYyAmJiAhKCpjb250aW51ZUZ1bmMpKGNvb2tpZSkpIHsKLSAgICAgICAgICAgIHJldHVybiAtRUlOVFI7Ci0gICAgICAgIH0KLQotICAgICAgICBkdXJhdGlvbiA9IGdldENhY2hlZER1cmF0aW9uVXMoJm5vTW9yZURhdGEpOwotICAgIH0gd2hpbGUgKCFub01vcmVEYXRhICYmIGR1cmF0aW9uIDwgMjAwMDAwMGxsKTsKLQotICAgIHJldHVybiBPSzsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotUHJlZmV0Y2hlZFNvdXJjZTo6UHJlZmV0Y2hlZFNvdXJjZSgKLSAgICAgICAgc2l6ZV90IGluZGV4LAotICAgICAgICBjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSkKLSAgICA6IG1Tb3VyY2Uoc291cmNlKSwKLSAgICAgIG1JbmRleChpbmRleCksCi0gICAgICBtU3RhcnRlZChmYWxzZSksCi0gICAgICBtUmVhY2hlZEVPUyhmYWxzZSksCi0gICAgICBtU2Vla1RpbWVVcygwKSwKLSAgICAgIG1DYWNoZUR1cmF0aW9uVXMoMCksCi0gICAgICBtQ2FjaGVTaXplQnl0ZXMoMCksCi0gICAgICBtUHJlZmV0Y2hlclN0b3BwZWQoZmFsc2UpLAotICAgICAgbUN1cnJlbnRseVByZWZldGNoaW5nKGZhbHNlKSB7Ci19Ci0KLVByZWZldGNoZWRTb3VyY2U6On5QcmVmZXRjaGVkU291cmNlKCkgewotICAgIGlmIChtU3RhcnRlZCkgewotICAgICAgICBzdG9wKCk7Ci0gICAgfQotfQotCi1zdGF0dXNfdCBQcmVmZXRjaGVkU291cmNlOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7Ci0gICAgQ0hFQ0soIW1TdGFydGVkKTsKLQotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0KLSAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5zdGFydChwYXJhbXMpOwotCi0gICAgaWYgKGVyciAhPSBPSykgewotICAgICAgICByZXR1cm4gZXJyOwotICAgIH0KLQotICAgIG1TdGFydGVkID0gdHJ1ZTsKLQotICAgIHJldHVybiBPSzsKLX0KLQotc3RhdHVzX3QgUHJlZmV0Y2hlZFNvdXJjZTo6c3RvcCgpIHsKLSAgICBDSEVDSyhtU3RhcnRlZCk7Ci0KLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotCi0gICAgd2hpbGUgKG1DdXJyZW50bHlQcmVmZXRjaGluZykgewotICAgICAgICBtQ29uZGl0aW9uLndhaXQobUxvY2spOwotICAgIH0KLQotICAgIGNsZWFyQ2FjaGVfbCgpOwotCi0gICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+c3RvcCgpOwotCi0gICAgbVN0YXJ0ZWQgPSBmYWxzZTsKLQotICAgIHJldHVybiBlcnI7Ci19Ci0KLXN0YXR1c190IFByZWZldGNoZWRTb3VyY2U6OnJlYWQoCi0gICAgICAgIE1lZGlhQnVmZmVyICoqb3V0LCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucykgewotICAgICpvdXQgPSBOVUxMOwotCi0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgIENIRUNLKG1TdGFydGVkKTsKLQotICAgIGludDY0X3Qgc2Vla1RpbWVVczsKLSAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLT5nZXRTZWVrVG8oJnNlZWtUaW1lVXMpKSB7Ci0gICAgICAgIENIRUNLKHNlZWtUaW1lVXMgPj0gMCk7Ci0KLSAgICAgICAgY2xlYXJDYWNoZV9sKCk7Ci0KLSAgICAgICAgbVJlYWNoZWRFT1MgPSBmYWxzZTsKLSAgICAgICAgbVNlZWtUaW1lVXMgPSBzZWVrVGltZVVzOwotICAgIH0KLQotICAgIHdoaWxlICghbVByZWZldGNoZXJTdG9wcGVkICYmICFtUmVhY2hlZEVPUyAmJiBtQ2FjaGVkQnVmZmVycy5lbXB0eSgpKSB7Ci0gICAgICAgIG1Db25kaXRpb24ud2FpdChtTG9jayk7Ci0gICAgfQotCi0gICAgaWYgKG1DYWNoZWRCdWZmZXJzLmVtcHR5KCkpIHsKLSAgICAgICAgcmV0dXJuIG1SZWFjaGVkRU9TID8gbUZpbmFsU3RhdHVzIDogRVJST1JfRU5EX09GX1NUUkVBTTsKLSAgICB9Ci0KLSAgICAqb3V0ID0gKm1DYWNoZWRCdWZmZXJzLmJlZ2luKCk7Ci0gICAgbUNhY2hlZEJ1ZmZlcnMuZXJhc2UobUNhY2hlZEJ1ZmZlcnMuYmVnaW4oKSk7Ci0gICAgdXBkYXRlQ2FjaGVEdXJhdGlvbl9sKCk7Ci0gICAgbUNhY2hlU2l6ZUJ5dGVzIC09ICgqb3V0KS0+c2l6ZSgpOwotCi0gICAgcmV0dXJuIE9LOwotfQotCi1zcDxNZXRhRGF0YT4gUHJlZmV0Y2hlZFNvdXJjZTo6Z2V0Rm9ybWF0KCkgewotICAgIHJldHVybiBtU291cmNlLT5nZXRGb3JtYXQoKTsKLX0KLQotYm9vbCBQcmVmZXRjaGVkU291cmNlOjpnZXRDYWNoZUR1cmF0aW9uVXMoCi0gICAgICAgIGludDY0X3QgKmR1cmF0aW9uVXMsIHNpemVfdCAqdG90YWxTaXplKSB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgICpkdXJhdGlvblVzID0gbUNhY2hlRHVyYXRpb25VczsKLSAgICBpZiAodG90YWxTaXplICE9IE5VTEwpIHsKLSAgICAgICAgKnRvdGFsU2l6ZSA9IG1DYWNoZVNpemVCeXRlczsKLSAgICB9Ci0KLSAgICBpZiAoIW1TdGFydGVkIHx8IG1SZWFjaGVkRU9TKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBQcmVmZXRjaGVkU291cmNlOjpjYWNoZU1vcmUoKSB7Ci0gICAgTWVkaWFTb3VyY2U6OlJlYWRPcHRpb25zIG9wdGlvbnM7Ci0KLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotCi0gICAgaWYgKCFtU3RhcnRlZCkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbUN1cnJlbnRseVByZWZldGNoaW5nID0gdHJ1ZTsKLQotICAgIGlmIChtU2Vla1RpbWVVcyA+PSAwKSB7Ci0gICAgICAgIG9wdGlvbnMuc2V0U2Vla1RvKG1TZWVrVGltZVVzKTsKLSAgICAgICAgbVNlZWtUaW1lVXMgPSAtMTsKLSAgICB9Ci0KLSAgICAvLyBFbnN1cmUgb3VyIG9iamVjdCBkb2VzIG5vdCBnbyBhd2F5IHdoaWxlIHdlJ3JlIG5vdCBob2xkaW5nCi0gICAgLy8gdGhlIGxvY2suCi0gICAgc3A8UHJlZmV0Y2hlZFNvdXJjZT4gbWUgPSB0aGlzOwotCi0gICAgbUxvY2sudW5sb2NrKCk7Ci0gICAgTWVkaWFCdWZmZXIgKmJ1ZmZlcjsKLSAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5yZWFkKCZidWZmZXIsICZvcHRpb25zKTsKLSAgICBtTG9jay5sb2NrKCk7Ci0KLSAgICBpZiAoZXJyICE9IE9LKSB7Ci0gICAgICAgIG1DdXJyZW50bHlQcmVmZXRjaGluZyA9IGZhbHNlOwotICAgICAgICBtUmVhY2hlZEVPUyA9IHRydWU7Ci0gICAgICAgIG1GaW5hbFN0YXR1cyA9IGVycjsKLSAgICAgICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0hFQ0soYnVmZmVyICE9IE5VTEwpOwotCi0gICAgTWVkaWFCdWZmZXIgKmNvcHkgPSBuZXcgTWVkaWFCdWZmZXIoYnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7Ci0gICAgbWVtY3B5KGNvcHktPmRhdGEoKSwKLSAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCi0gICAgICAgICAgIGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpOwotCi0gICAgc3A8TWV0YURhdGE+IGZyb20gPSBidWZmZXItPm1ldGFfZGF0YSgpOwotICAgIHNwPE1ldGFEYXRhPiB0byA9IGNvcHktPm1ldGFfZGF0YSgpOwotCi0gICAgaW50NjRfdCB0aW1lVXM7Ci0gICAgaWYgKGZyb20tPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVVcykpIHsKLSAgICAgICAgdG8tPnNldEludDY0KGtLZXlUaW1lLCB0aW1lVXMpOwotICAgIH0KLQotICAgIGJ1ZmZlci0+cmVsZWFzZSgpOwotICAgIGJ1ZmZlciA9IE5VTEw7Ci0KLSAgICBtQ2FjaGVkQnVmZmVycy5wdXNoX2JhY2soY29weSk7Ci0gICAgdXBkYXRlQ2FjaGVEdXJhdGlvbl9sKCk7Ci0gICAgbUNhY2hlU2l6ZUJ5dGVzICs9IGNvcHktPnNpemUoKTsKLQotICAgIG1DdXJyZW50bHlQcmVmZXRjaGluZyA9IGZhbHNlOwotICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Ci19Ci0KLXZvaWQgUHJlZmV0Y2hlZFNvdXJjZTo6dXBkYXRlQ2FjaGVEdXJhdGlvbl9sKCkgewotICAgIGlmIChtQ2FjaGVkQnVmZmVycy5zaXplKCkgPCAyKSB7Ci0gICAgICAgIG1DYWNoZUR1cmF0aW9uVXMgPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGludDY0X3QgZmlyc3RUaW1lVXMsIGxhc3RUaW1lVXM7Ci0gICAgICAgIENIRUNLKCgqbUNhY2hlZEJ1ZmZlcnMuYmVnaW4oKSktPm1ldGFfZGF0YSgpLT5maW5kSW50NjQoCi0gICAgICAgICAgICAgICAgICAgIGtLZXlUaW1lLCAmZmlyc3RUaW1lVXMpKTsKLSAgICAgICAgQ0hFQ0soKCotLW1DYWNoZWRCdWZmZXJzLmVuZCgpKS0+bWV0YV9kYXRhKCktPmZpbmRJbnQ2NCgKLSAgICAgICAgICAgICAgICAgICAga0tleVRpbWUsICZsYXN0VGltZVVzKSk7Ci0KLSAgICAgICAgbUNhY2hlRHVyYXRpb25VcyA9IGxhc3RUaW1lVXMgLSBmaXJzdFRpbWVVczsKLSAgICB9Ci19Ci0KLXZvaWQgUHJlZmV0Y2hlZFNvdXJjZTo6Y2xlYXJDYWNoZV9sKCkgewotICAgIExpc3Q8TWVkaWFCdWZmZXIgKj46Oml0ZXJhdG9yIGl0ID0gbUNhY2hlZEJ1ZmZlcnMuYmVnaW4oKTsKLSAgICB3aGlsZSAoaXQgIT0gbUNhY2hlZEJ1ZmZlcnMuZW5kKCkpIHsKLSAgICAgICAgKCppdCktPnJlbGVhc2UoKTsKLQotICAgICAgICBpdCA9IG1DYWNoZWRCdWZmZXJzLmVyYXNlKGl0KTsKLSAgICB9Ci0KLSAgICB1cGRhdGVDYWNoZUR1cmF0aW9uX2woKTsKLSAgICBtQ2FjaGVTaXplQnl0ZXMgPSAwOwotfQotCi12b2lkIFByZWZldGNoZWRTb3VyY2U6Om9uUHJlZmV0Y2hlclN0b3BwZWQoKSB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLSAgICBtUHJlZmV0Y2hlclN0b3BwZWQgPSB0cnVlOwotICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9TdGFnZWZyaWdodE1lZGlhU2Nhbm5lci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9TdGFnZWZyaWdodE1lZGlhU2Nhbm5lci5jcHAKaW5kZXggMDMyODdkZDEuLjE2MjllOWYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L1N0YWdlZnJpZ2h0TWVkaWFTY2FubmVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9TdGFnZWZyaWdodE1lZGlhU2Nhbm5lci5jcHAKQEAgLTI2LDEwICsyNiw2IEBACiAvLyBTb25pdm94IGluY2x1ZGVzCiAjaW5jbHVkZSA8bGlic29uaXZveC9lYXMuaD4KIAotLy8gT2dnIFZvcmJpcyBpbmNsdWRlcwotI2luY2x1ZGUgPFRyZW1vbG8vaXZvcmJpc2NvZGVjLmg+Ci0jaW5jbHVkZSA8VHJlbW9sby9pdm9yYmlzZmlsZS5oPgotCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKIFN0YWdlZnJpZ2h0TWVkaWFTY2FubmVyOjpTdGFnZWZyaWdodE1lZGlhU2Nhbm5lcigpCkBAIC00Miw3ICszOCw4IEBACiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKmtWYWxpZEV4dGVuc2lvbnNbXSA9IHsKICAgICAgICAgIi5tcDMiLCAiLm1wNCIsICIubTRhIiwgIi4zZ3AiLCAiLjNncHAiLCAiLjNnMiIsICIuM2dwcDIiLAogICAgICAgICAiLm1wZWciLCAiLm9nZyIsICIubWlkIiwgIi5zbWYiLCAiLmlteSIsICIud21hIiwgIi5hYWMiLAotICAgICAgICAiLndhdiIsICIuYW1yIiwgIi5taWRpIiwgIi54bWYiLCAiLnJ0dHRsIiwgIi5ydHgiLCAiLm90YSIKKyAgICAgICAgIi53YXYiLCAiLmFtciIsICIubWlkaSIsICIueG1mIiwgIi5ydHR0bCIsICIucnR4IiwgIi5vdGEiLAorICAgICAgICAiLm1rdiIsICIubWthIiwgIi53ZWJtIiwgIi50cyIKICAgICB9OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga051bVZhbGlkRXh0ZW5zaW9ucyA9CiAgICAgICAgIHNpemVvZihrVmFsaWRFeHRlbnNpb25zKSAvIHNpemVvZihrVmFsaWRFeHRlbnNpb25zWzBdKTsKQEAgLTEwMiw0OCArOTksNiBAQAogICAgIHJldHVybiBPSzsKIH0KIAotc3RhdGljIHN0YXR1c190IEhhbmRsZU9HRygKLSAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIE1lZGlhU2Nhbm5lckNsaWVudCAqY2xpZW50KSB7Ci0gICAgaW50IGR1cmF0aW9uOwotCi0gICAgRklMRSAqZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCJyIik7Ci0gICAgaWYgKCFmaWxlKQotICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKLQotICAgIE9nZ1ZvcmJpc19GaWxlIHZmOwotICAgIGlmIChvdl9vcGVuKGZpbGUsICZ2ZiwgTlVMTCwgMCkgPCAwKSB7Ci0gICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgIH0KLQotICAgIGNoYXIgKipwdHI9b3ZfY29tbWVudCgmdmYsLTEpLT51c2VyX2NvbW1lbnRzOwotICAgIHdoaWxlKCpwdHIpewotICAgICAgICBjaGFyICp2YWwgPSBzdHJzdHIoKnB0ciwgIj0iKTsKLSAgICAgICAgaWYgKHZhbCkgewotICAgICAgICAgICAgaW50IGtleWxlbiA9IHZhbCsrIC0gKnB0cjsKLSAgICAgICAgICAgIGNoYXIga2V5W2tleWxlbiArIDFdOwotICAgICAgICAgICAgc3RybmNweShrZXksICpwdHIsIGtleWxlbik7Ci0gICAgICAgICAgICBrZXlba2V5bGVuXSA9IDA7Ci0gICAgICAgICAgICBpZiAoIWNsaWVudC0+YWRkU3RyaW5nVGFnKGtleSwgdmFsKSkgZ290byBmYWlsdXJlOwotICAgICAgICB9Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIC8vIER1cmF0aW9uCi0gICAgZHVyYXRpb24gPSBvdl90aW1lX3RvdGFsKCZ2ZiwgLTEpOwotICAgIGlmIChkdXJhdGlvbiA+IDApIHsKLSAgICAgICAgY2hhciBidWZmZXJbMjBdOwotICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVkIiwgZHVyYXRpb24pOwotICAgICAgICBpZiAoIWNsaWVudC0+YWRkU3RyaW5nVGFnKCJkdXJhdGlvbiIsIGJ1ZmZlcikpIGdvdG8gZmFpbHVyZTsKLSAgICB9Ci0KLSAgICBvdl9jbGVhcigmdmYpOyAvLyB0aGlzIGFsc28gY2xvc2VzIHRoZSBGSUxFCi0gICAgcmV0dXJuIE9LOwotCi1mYWlsdXJlOgotICAgIG92X2NsZWFyKCZ2Zik7IC8vIHRoaXMgYWxzbyBjbG9zZXMgdGhlIEZJTEUKLSAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKLX0KLQogc3RhdHVzX3QgU3RhZ2VmcmlnaHRNZWRpYVNjYW5uZXI6OnByb2Nlc3NGaWxlKAogICAgICAgICBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptaW1lVHlwZSwKICAgICAgICAgTWVkaWFTY2FubmVyQ2xpZW50ICZjbGllbnQpIHsKQEAgLTE3NSwxMCArMTMwLDYgQEAKICAgICAgICAgcmV0dXJuIEhhbmRsZU1JREkocGF0aCwgJmNsaWVudCk7CiAgICAgfQogCi0gICAgaWYgKCFzdHJjYXNlY21wKGV4dGVuc2lvbiwgIi5vZ2ciKSkgewotICAgICAgICByZXR1cm4gSGFuZGxlT0dHKHBhdGgsICZjbGllbnQpOwotICAgIH0KLQogICAgIGlmIChtUmV0cmlldmVyLT5zZXREYXRhU291cmNlKHBhdGgpID09IE9LCiAgICAgICAgICAgICAmJiBtUmV0cmlldmVyLT5zZXRNb2RlKAogICAgICAgICAgICAgICAgIE1FVEFEQVRBX01PREVfTUVUQURBVEFfUkVUUklFVkFMX09OTFkpID09IE9LKSB7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9TdGFnZWZyaWdodE1ldGFkYXRhUmV0cmlldmVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L1N0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXIuY3BwCmluZGV4IDI1OGJlNzQuLjlkODljMjAgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L1N0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L1N0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXIuY3BwCkBAIC0zNzgsNiArMzc4LDI0IEBACiAgICAgLy8gVGhlIGR1cmF0aW9uIHZhbHVlIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZHVyYXRpb24gaW4gbXMuCiAgICAgc3ByaW50Zih0bXAsICIlbGxkIiwgKG1heER1cmF0aW9uVXMgKyA1MDApIC8gMTAwMCk7CiAgICAgbU1ldGFEYXRhLmFkZChNRVRBREFUQV9LRVlfRFVSQVRJT04sIFN0cmluZzgodG1wKSk7CisKKyAgICBpZiAobnVtVHJhY2tzID09IDEpIHsKKyAgICAgICAgY29uc3QgY2hhciAqZmlsZU1JTUU7CisgICAgICAgIENIRUNLKG1ldGEtPmZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJmZpbGVNSU1FKSk7CisKKyAgICAgICAgaWYgKCFzdHJjYXNlY21wKGZpbGVNSU1FLCAidmlkZW8veC1tYXRyb3NrYSIpKSB7CisgICAgICAgICAgICBzcDxNZXRhRGF0YT4gdHJhY2tNZXRhID0gbUV4dHJhY3Rvci0+Z2V0VHJhY2tNZXRhRGF0YSgwKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRyYWNrTUlNRTsKKyAgICAgICAgICAgIENIRUNLKHRyYWNrTWV0YS0+ZmluZENTdHJpbmcoa0tleU1JTUVUeXBlLCAmdHJhY2tNSU1FKSk7CisKKyAgICAgICAgICAgIGlmICghc3RybmNhc2VjbXAoImF1ZGlvLyIsIHRyYWNrTUlNRSwgNikpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgbWF0cm9za2EgZmlsZSBvbmx5IGNvbnRhaW5zIGEgc2luZ2xlIGF1ZGlvIHRyYWNrLAorICAgICAgICAgICAgICAgIC8vIHJld3JpdGUgaXRzIG1pbWUgdHlwZS4KKyAgICAgICAgICAgICAgICBtTWV0YURhdGEuYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUQURBVEFfS0VZX01JTUVUWVBFLCBTdHJpbmc4KCJhdWRpby94LW1hdHJvc2thIikpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogfQogCiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L1Rocm90dGxlZFNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9UaHJvdHRsZWRTb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MTFmN2M2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvVGhyb3R0bGVkU291cmNlLmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgImluY2x1ZGUvVGhyb3R0bGVkU291cmNlLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RhdGljIGludDY0X3QgZ2V0Tm93VXMoKSB7CisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CisKKyAgICByZXR1cm4gKGludDY0X3QpdHYudHZfdXNlYyArIHR2LnR2X3NlYyAqIDEwMDAwMDBsbDsKK30KKworVGhyb3R0bGVkU291cmNlOjpUaHJvdHRsZWRTb3VyY2UoCisgICAgICAgIGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UsCisgICAgICAgIGludDMyX3QgYmFuZHdpZHRoTGltaXRCeXRlc1BlclNlY29uZCkKKyAgICA6IG1Tb3VyY2Uoc291cmNlKSwKKyAgICAgIG1CYW5kd2lkdGhMaW1pdEJ5dGVzUGVyU2Vjb25kKGJhbmR3aWR0aExpbWl0Qnl0ZXNQZXJTZWNvbmQpLAorICAgICAgbVN0YXJ0VGltZVVzKC0xKSwKKyAgICAgIG1Ub3RhbFRyYW5zZmVycmVkKDApIHsKKyAgICBDSEVDSyhtQmFuZHdpZHRoTGltaXRCeXRlc1BlclNlY29uZCA+IDApOworfQorCitzdGF0dXNfdCBUaHJvdHRsZWRTb3VyY2U6OmluaXRDaGVjaygpIGNvbnN0IHsKKyAgICByZXR1cm4gbVNvdXJjZS0+aW5pdENoZWNrKCk7Cit9CisKK3NzaXplX3QgVGhyb3R0bGVkU291cmNlOjpyZWFkQXQob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBzc2l6ZV90IG4gPSBtU291cmNlLT5yZWFkQXQob2Zmc2V0LCBkYXRhLCBzaXplKTsKKworICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorCisgICAgbVRvdGFsVHJhbnNmZXJyZWQgKz0gbjsKKworICAgIGludDY0X3Qgbm93VXMgPSBnZXROb3dVcygpOworCisgICAgaWYgKG1TdGFydFRpbWVVcyA8IDApIHsKKyAgICAgICAgbVN0YXJ0VGltZVVzID0gbm93VXM7CisgICAgfQorCisgICAgLy8gSG93IGxvbmcgd291bGQgaXQgaGF2ZSB0YWtlbiB0byB0cmFuc2ZlciBldmVyeXRoaW5nIHdlIGV2ZXIKKyAgICAvLyB0cmFuc2ZlcnJlZCBnaXZlbiB0aGUgbGltaXRlZCBiYW5kd2lkdGguCisgICAgaW50NjRfdCBkdXJhdGlvblVzID0KKyAgICAgICAgbVRvdGFsVHJhbnNmZXJyZWQgKiAxMDAwMDAwbGwgLyBtQmFuZHdpZHRoTGltaXRCeXRlc1BlclNlY29uZDsKKworICAgIGludDY0X3Qgd2hlblVzID0gbVN0YXJ0VGltZVVzICsgZHVyYXRpb25VczsKKworICAgIGlmICh3aGVuVXMgPiBub3dVcykgeworICAgICAgICB1c2xlZXAod2hlblVzIC0gbm93VXMpOworICAgIH0KKworICAgIHJldHVybiBuOworfQorCitzdGF0dXNfdCBUaHJvdHRsZWRTb3VyY2U6OmdldFNpemUob2ZmX3QgKnNpemUpIHsKKyAgICByZXR1cm4gbVNvdXJjZS0+Z2V0U2l6ZShzaXplKTsKK30KKwordWludDMyX3QgVGhyb3R0bGVkU291cmNlOjpmbGFncygpIHsKKyAgICByZXR1cm4gbVNvdXJjZS0+ZmxhZ3MoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9BQUNFbmNvZGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvQUFDRW5jb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMxN2RlNgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvQUFDRW5jb2Rlci5jcHAKQEAgLTAsMCArMSwyOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkFBQ0VuY29kZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlICJBQUNFbmNvZGVyLmgiCisjaW5jbHVkZSAidm9BQUMuaCIKKyNpbmNsdWRlICJjbW5NZW1vcnkuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyR3JvdXAuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0FBQ0VuY29kZXI6OkFBQ0VuY29kZXIoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UsIGNvbnN0IHNwPE1ldGFEYXRhPiAmbWV0YSkKKyAgICA6IG1Tb3VyY2Uoc291cmNlKSwKKyAgICAgIG1NZXRhKG1ldGEpLAorICAgICAgbVN0YXJ0ZWQoZmFsc2UpLAorICAgICAgbUJ1ZmZlckdyb3VwKE5VTEwpLAorICAgICAgbUlucHV0QnVmZmVyKE5VTEwpLAorICAgICAgbUVuY29kZXJIYW5kbGUoTlVMTCksCisgICAgICBtQXBpSGFuZGxlKE5VTEwpLAorICAgICAgbU1lbU9wZXJhdG9yKE5VTEwpIHsKK30KKworc3RhdHVzX3QgQUFDRW5jb2Rlcjo6aW5pdENoZWNrKCkgeworICAgIENIRUNLKG1BcGlIYW5kbGUgPT0gTlVMTCAmJiBtRW5jb2RlckhhbmRsZSA9PSBOVUxMKTsKKyAgICBDSEVDSyhtTWV0YS0+ZmluZEludDMyKGtLZXlTYW1wbGVSYXRlLCAmbVNhbXBsZVJhdGUpKTsKKyAgICBDSEVDSyhtTWV0YS0+ZmluZEludDMyKGtLZXlDaGFubmVsQ291bnQsICZtQ2hhbm5lbHMpKTsKKyAgICBDSEVDSyhtTWV0YS0+ZmluZEludDMyKGtLZXlCaXRSYXRlLCAmbUJpdFJhdGUpKTsKKworICAgIG1BcGlIYW5kbGUgPSBuZXcgVk9fQVVESU9fQ09ERUNBUEk7CisgICAgQ0hFQ0sobUFwaUhhbmRsZSk7CisKKyAgICBpZiAoVk9fRVJSX05PTkUgIT0gdm9HZXRBQUNFbmNBUEkobUFwaUhhbmRsZSkpIHsKKyAgICAgICAgTE9HRSgiRmFpbGVkIHRvIGdldCBhcGkgaGFuZGxlIik7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIG1NZW1PcGVyYXRvciA9IG5ldyBWT19NRU1fT1BFUkFUT1I7CisgICAgQ0hFQ0sobU1lbU9wZXJhdG9yICE9IE5VTEwpOworICAgIG1NZW1PcGVyYXRvci0+QWxsb2MgPSBjbW5NZW1BbGxvYzsKKyAgICBtTWVtT3BlcmF0b3ItPkNvcHkgPSBjbW5NZW1Db3B5OworICAgIG1NZW1PcGVyYXRvci0+RnJlZSA9IGNtbk1lbUZyZWU7CisgICAgbU1lbU9wZXJhdG9yLT5TZXQgPSBjbW5NZW1TZXQ7CisgICAgbU1lbU9wZXJhdG9yLT5DaGVjayA9IGNtbk1lbUNoZWNrOworCisgICAgVk9fQ09ERUNfSU5JVF9VU0VSREFUQSB1c2VyRGF0YTsKKyAgICBtZW1zZXQoJnVzZXJEYXRhLCAwLCBzaXplb2YodXNlckRhdGEpKTsKKyAgICB1c2VyRGF0YS5tZW1mbGFnID0gVk9fSU1GX1VTRVJNRU1PUEVSQVRPUjsKKyAgICB1c2VyRGF0YS5tZW1EYXRhID0gKFZPX1BUUikgbU1lbU9wZXJhdG9yOworICAgIGlmIChWT19FUlJfTk9ORSAhPSBtQXBpSGFuZGxlLT5Jbml0KCZtRW5jb2RlckhhbmRsZSwgVk9fQVVESU9fQ29kaW5nQUFDLCAmdXNlckRhdGEpKSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBpbml0IEFBQyBlbmNvZGVyIik7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKyAgICBpZiAoT0sgIT0gc2V0QXVkaW9TcGVjaWZpY0NvbmZpZ0RhdGEoKSkgeworICAgICAgICBMT0dFKCJGYWlsZWQgdG8gY29uZmlndXJlIEFBQyBlbmNvZGVyIik7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIC8vIENvbmZpZ3VyZSBBQUMgZW5jb2RlciQKKyAgICBBQUNFTkNfUEFSQU0gcGFyYW1zOworICAgIG1lbXNldCgmcGFyYW1zLCAwLCBzaXplb2YocGFyYW1zKSk7CisgICAgcGFyYW1zLnNhbXBsZVJhdGUgPSBtU2FtcGxlUmF0ZTsKKyAgICBwYXJhbXMuYml0UmF0ZSA9IG1CaXRSYXRlOworICAgIHBhcmFtcy5uQ2hhbm5lbHMgPSBtQ2hhbm5lbHM7CisgICAgcGFyYW1zLmFkdHNVc2VkID0gMDsgIC8vIEZvciBNUDQgZmlsZSwgZG9uJ3QgdXNlIGFkdHMgZm9ybWF0JAorICAgIGlmIChWT19FUlJfTk9ORSAhPSBtQXBpSGFuZGxlLT5TZXRQYXJhbShtRW5jb2RlckhhbmRsZSwgVk9fUElEX0FBQ19FTkNQQVJBTSwgICZwYXJhbXMpKSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBzZXQgQUFDIGVuY29kZXIgcGFyYW1ldGVycyIpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXRpYyBzdGF0dXNfdCBnZXRTYW1wbGVSYXRlVGFibGVJbmRleChpbnQzMl90IHNhbXBsZVJhdGUsIGludDMyX3QgJmluZGV4KSB7CisgICAgc3RhdGljIGNvbnN0IGludDMyX3Qga1NhbXBsZVJhdGVUYWJsZVtdID0geworICAgICAgICA5NjAwMCwgODgyMDAsIDY0MDAwLCA0ODAwMCwgNDQxMDAsIDMyMDAwLAorICAgICAgICAyNDAwMCwgMjIwNTAsIDE2MDAwLCAxMjAwMCwgMTEwMjUsIDgwMDAKKyAgICB9OworICAgIGNvbnN0IGludDMyX3QgdGFibGVTaXplID0gc2l6ZW9mKGtTYW1wbGVSYXRlVGFibGUpIC8gc2l6ZW9mKGtTYW1wbGVSYXRlVGFibGVbMF0pOworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IHRhYmxlU2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChzYW1wbGVSYXRlID09IGtTYW1wbGVSYXRlVGFibGVbaV0pIHsKKyAgICAgICAgICAgIGluZGV4ID0gaTsKKyAgICAgICAgICAgIHJldHVybiBPSzsKKyAgICAgICAgfQorICAgIH0KKworICAgIExPR0UoIlNhbXBsaW5nIHJhdGUgJWQgYnBzIGlzIG5vdCBzdXBwb3J0ZWQiLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKK30KKworc3RhdHVzX3QgQUFDRW5jb2Rlcjo6c2V0QXVkaW9TcGVjaWZpY0NvbmZpZ0RhdGEoKSB7CisgICAgTE9HVigic2V0QXVkaW9TcGVjaWZpY0NvbmZpZ0RhdGE6ICVkIGh6LCAlZCBicHMsIGFuZCAlZCBjaGFubmVscyIsCisgICAgICAgICBtU2FtcGxlUmF0ZSwgbUJpdFJhdGUsIG1DaGFubmVscyk7CisKKyAgICBpbnQzMl90IGluZGV4OworICAgIENIRUNLX0VRKE9LLCBnZXRTYW1wbGVSYXRlVGFibGVJbmRleChtU2FtcGxlUmF0ZSwgaW5kZXgpKTsKKyAgICBpZiAobUNoYW5uZWxzID4gMiB8fCBtQ2hhbm5lbHMgPD0gMCkgeworICAgICAgICBMT0dFKCJVbnN1cHBvcnRlZCBudW1iZXIgb2YgY2hhbm5lbHMoJWQpIiwgbUNoYW5uZWxzKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgLy8gT01YX0FVRElPX0FBQ09iamVjdExDCisgICAgbUF1ZGlvU3BlY2lmaWNDb25maWdEYXRhWzBdID0gKCgweDAyIDw8IDMpIHwgKGluZGV4ID4+IDEpKTsKKyAgICBtQXVkaW9TcGVjaWZpY0NvbmZpZ0RhdGFbMV0gPSAoKGluZGV4ICYgMHgwMSkgPDwgNykgfCAobUNoYW5uZWxzIDw8IDMpOworICAgIHJldHVybiBPSzsKK30KKworQUFDRW5jb2Rlcjo6fkFBQ0VuY29kZXIoKSB7CisgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIHN0b3AoKTsKKyAgICB9Cit9CisKK3N0YXR1c190IEFBQ0VuY29kZXI6OnN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpIHsKKyAgICBpZiAobVN0YXJ0ZWQpIHsKKyAgICAgICAgTE9HVygiQ2FsbCBzdGFydCgpIHdoZW4gZW5jb2RlciBhbHJlYWR5IHN0YXJ0ZWQiKTsKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0KKworICAgIG1CdWZmZXJHcm91cCA9IG5ldyBNZWRpYUJ1ZmZlckdyb3VwOworICAgIG1CdWZmZXJHcm91cC0+YWRkX2J1ZmZlcihuZXcgTWVkaWFCdWZmZXIoMjA0OCkpOworCisgICAgQ0hFQ0tfRVEoT0ssIGluaXRDaGVjaygpKTsKKworICAgIG1OdW1JbnB1dFNhbXBsZXMgPSAwOworICAgIG1BbmNob3JUaW1lVXMgPSAwOworICAgIG1GcmFtZUNvdW50ID0gMDsKKyAgICBtU291cmNlLT5zdGFydChwYXJhbXMpOworCisgICAgbVN0YXJ0ZWQgPSB0cnVlOworCisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBBQUNFbmNvZGVyOjpzdG9wKCkgeworICAgIGlmICghbVN0YXJ0ZWQpIHsKKyAgICAgICAgTE9HVygiQ2FsbCBzdG9wKCkgd2hlbiBlbmNvZGVyIGhhcyBub3Qgc3RhcnRlZCIpOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgaWYgKG1JbnB1dEJ1ZmZlcikgeworICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICBkZWxldGUgbUJ1ZmZlckdyb3VwOworICAgIG1CdWZmZXJHcm91cCA9IE5VTEw7CisKKyAgICBtU291cmNlLT5zdG9wKCk7CisKKyAgICBpZiAobUVuY29kZXJIYW5kbGUpIHsKKyAgICAgICAgQ0hFQ0tfRVEoVk9fRVJSX05PTkUsIG1BcGlIYW5kbGUtPlVuaW5pdChtRW5jb2RlckhhbmRsZSkpOworICAgICAgICBtRW5jb2RlckhhbmRsZSA9IE5VTEw7CisgICAgfQorICAgIGRlbGV0ZSBtQXBpSGFuZGxlOworICAgIG1BcGlIYW5kbGUgPSBOVUxMOworCisgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKKworICAgIHJldHVybiBPSzsKK30KKworc3A8TWV0YURhdGE+IEFBQ0VuY29kZXI6OmdldEZvcm1hdCgpIHsKKyAgICBzcDxNZXRhRGF0YT4gc3JjRm9ybWF0ID0gbVNvdXJjZS0+Z2V0Rm9ybWF0KCk7CisKKyAgICBtTWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0FVRElPX0FBQyk7CisKKyAgICBpbnQ2NF90IGR1cmF0aW9uVXM7CisgICAgaWYgKHNyY0Zvcm1hdC0+ZmluZEludDY0KGtLZXlEdXJhdGlvbiwgJmR1cmF0aW9uVXMpKSB7CisgICAgICAgIG1NZXRhLT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIGR1cmF0aW9uVXMpOworICAgIH0KKworICAgIG1NZXRhLT5zZXRDU3RyaW5nKGtLZXlEZWNvZGVyQ29tcG9uZW50LCAiQUFDRW5jb2RlciIpOworCisgICAgcmV0dXJuIG1NZXRhOworfQorCitzdGF0dXNfdCBBQUNFbmNvZGVyOjpyZWFkKAorICAgICAgICBNZWRpYUJ1ZmZlciAqKm91dCwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKKyAgICBzdGF0dXNfdCBlcnI7CisKKyAgICAqb3V0ID0gTlVMTDsKKworICAgIGludDY0X3Qgc2Vla1RpbWVVczsKKyAgICBDSEVDSyhvcHRpb25zID09IE5VTEwgfHwgIW9wdGlvbnMtPmdldFNlZWtUbygmc2Vla1RpbWVVcykpOworCisgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlcjsKKyAgICBDSEVDS19FUShtQnVmZmVyR3JvdXAtPmFjcXVpcmVfYnVmZmVyKCZidWZmZXIpLCBPSyk7CisgICAgdWludDhfdCAqb3V0UHRyID0gKHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKTsKKworICAgIGlmIChtRnJhbWVDb3VudCA9PSAwKSB7CisgICAgICAgIG1lbWNweShvdXRQdHIsIG1BdWRpb1NwZWNpZmljQ29uZmlnRGF0YSwgMik7CisgICAgICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDAsIDIpOworICAgICAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQzMihrS2V5SXNDb2RlY0NvbmZpZywgdHJ1ZSk7CisgICAgICAgICpvdXQgPSBidWZmZXI7CisgICAgICAgICsrbUZyYW1lQ291bnQ7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9IGVsc2UgaWYgKG1GcmFtZUNvdW50ID09IDEpIHsKKyAgICAgICAgYnVmZmVyLT5tZXRhX2RhdGEoKS0+c2V0SW50MzIoa0tleUlzQ29kZWNDb25maWcsIGZhbHNlKTsKKyAgICB9CisKKyAgICB3aGlsZSAobU51bUlucHV0U2FtcGxlcyA8IGtOdW1TYW1wbGVzUGVyRnJhbWUpIHsKKyAgICAgICAgaWYgKG1JbnB1dEJ1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAobVNvdXJjZS0+cmVhZCgmbUlucHV0QnVmZmVyLCBvcHRpb25zKSAhPSBPSykgeworICAgICAgICAgICAgICAgIGlmIChtTnVtSW5wdXRTYW1wbGVzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0VORF9PRl9TVFJFQU07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1lbXNldCgmbUlucHV0RnJhbWVbbU51bUlucHV0U2FtcGxlc10sCisgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbnQxNl90KSAqIChrTnVtU2FtcGxlc1BlckZyYW1lIC0gbU51bUlucHV0U2FtcGxlcykpOworICAgICAgICAgICAgICAgIG1OdW1JbnB1dFNhbXBsZXMgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaXplX3QgYWxpZ24gPSBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpICUgc2l6ZW9mKGludDE2X3QpOworICAgICAgICAgICAgQ0hFQ0tfRVEoYWxpZ24sIDApOworCisgICAgICAgICAgICBpbnQ2NF90IHRpbWVVczsKKyAgICAgICAgICAgIGlmIChtSW5wdXRCdWZmZXItPm1ldGFfZGF0YSgpLT5maW5kSW50NjQoa0tleVRpbWUsICZ0aW1lVXMpKSB7CisgICAgICAgICAgICAgICAgbUFuY2hvclRpbWVVcyA9IHRpbWVVczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzaXplX3QgY29weSA9CisgICAgICAgICAgICAoa051bVNhbXBsZXNQZXJGcmFtZSAtIG1OdW1JbnB1dFNhbXBsZXMpICogc2l6ZW9mKGludDE2X3QpOworCisgICAgICAgIGlmIChjb3B5ID4gbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSkgeworICAgICAgICAgICAgY29weSA9IG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkoJm1JbnB1dEZyYW1lW21OdW1JbnB1dFNhbXBsZXNdLAorICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKikgbUlucHV0QnVmZmVyLT5kYXRhKCkKKyAgICAgICAgICAgICAgICAgICAgKyBtSW5wdXRCdWZmZXItPnJhbmdlX29mZnNldCgpLAorICAgICAgICAgICAgICAgY29weSk7CisKKyAgICAgICAgbUlucHV0QnVmZmVyLT5zZXRfcmFuZ2UoCisgICAgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJhbmdlX29mZnNldCgpICsgY29weSwKKyAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgLSBjb3B5KTsKKworICAgICAgICBpZiAobUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbU51bUlucHV0U2FtcGxlcyArPSBjb3B5IC8gc2l6ZW9mKGludDE2X3QpOworICAgICAgICBpZiAobU51bUlucHV0U2FtcGxlcyA+PSBrTnVtU2FtcGxlc1BlckZyYW1lKSB7CisgICAgICAgICAgICBtTnVtSW5wdXRTYW1wbGVzICU9IGtOdW1TYW1wbGVzUGVyRnJhbWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZPX0NPREVDQlVGRkVSIGlucHV0RGF0YTsKKyAgICBtZW1zZXQoJmlucHV0RGF0YSwgMCwgc2l6ZW9mKGlucHV0RGF0YSkpOworICAgIGlucHV0RGF0YS5CdWZmZXIgPSAodW5zaWduZWQgY2hhciopIG1JbnB1dEZyYW1lOworICAgIGlucHV0RGF0YS5MZW5ndGggPSBrTnVtU2FtcGxlc1BlckZyYW1lICogc2l6ZW9mKGludDE2X3QpOworICAgIENIRUNLKFZPX0VSUl9OT05FID09IG1BcGlIYW5kbGUtPlNldElucHV0RGF0YShtRW5jb2RlckhhbmRsZSwmaW5wdXREYXRhKSk7CisKKyAgICBWT19DT0RFQ0JVRkZFUiBvdXRwdXREYXRhOworICAgIG1lbXNldCgmb3V0cHV0RGF0YSwgMCwgc2l6ZW9mKG91dHB1dERhdGEpKTsKKyAgICBWT19BVURJT19PVVRQVVRJTkZPIG91dHB1dEluZm87CisgICAgbWVtc2V0KCZvdXRwdXRJbmZvLCAwLCBzaXplb2Yob3V0cHV0SW5mbykpOworCisgICAgVk9fVTMyIHJldCA9IFZPX0VSUl9OT05FOworICAgIG91dHB1dERhdGEuQnVmZmVyID0gb3V0UHRyOworICAgIG91dHB1dERhdGEuTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CisgICAgcmV0ID0gbUFwaUhhbmRsZS0+R2V0T3V0cHV0RGF0YShtRW5jb2RlckhhbmRsZSwgJm91dHB1dERhdGEsICZvdXRwdXRJbmZvKTsKKyAgICBDSEVDSyhyZXQgPT0gVk9fRVJSX05PTkUgfHwgcmV0ID09IFZPX0VSUl9JTlBVVF9CVUZGRVJfU01BTEwpOworICAgIENIRUNLKG91dHB1dERhdGEuTGVuZ3RoICE9IDApOworICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDAsIG91dHB1dERhdGEuTGVuZ3RoKTsKKworICAgIGludDY0X3QgdGltZXN0YW1wVXMgPSAoKG1GcmFtZUNvdW50IC0gMSkgKiAxMDAwMDAwTEwgKiBrTnVtU2FtcGxlc1BlckZyYW1lKSAvIG1TYW1wbGVSYXRlOworICAgICsrbUZyYW1lQ291bnQ7CisgICAgYnVmZmVyLT5tZXRhX2RhdGEoKS0+c2V0SW50NjQoa0tleVRpbWUsIHRpbWVzdGFtcFVzKTsKKworICAgICpvdXQgPSBidWZmZXI7CisgICAgcmV0dXJuIE9LOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYTRmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL0FuZHJvaWQubWsKQEAgLTAsMCArMSw4NyBAQAorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCitpbmNsdWRlIGZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL0NvbmZpZy5taworCitMT0NBTF9QUkVMSU5LX01PRFVMRSA6PSBmYWxzZQorCitMT0NBTF9TUkNfRklMRVMgOj0gYmFzaWNfb3AvYmFzaWNvcDIuYyBiYXNpY19vcC9vcGVyXzMyYi5jCisKK0xPQ0FMX1NSQ19GSUxFUyArPSBcCisJQUFDRW5jb2Rlci5jcHAgXAorCXNyYy9hYWNfcm9tLmMgXAorCXNyYy9hYWNlbmMuYyBcCisJc3JjL2FhY2VuY19jb3JlLmMgXAorCXNyYy9hZGpfdGhyLmMgXAorCXNyYy9iYW5kX25yZy5jIFwKKwlzcmMvYml0X2NudC5jIFwKKwlzcmMvYml0YnVmZmVyLmMgXAorCXNyYy9iaXRlbmMuYyBcCisJc3JjL2Jsb2NrX3N3aXRjaC5jIFwKKwlzcmMvY2hhbm5lbF9tYXAuYyBcCisJc3JjL2R5bl9iaXRzLmMgXAorCXNyYy9ncnBfZGF0YS5jIFwKKwlzcmMvaW50ZXJmYWNlLmMgXAorCXNyYy9saW5lX3BlLmMgXAorCXNyYy9tc19zdGVyZW8uYyBcCisJc3JjL3ByZV9lY2hvX2NvbnRyb2wuYyBcCisJc3JjL3BzeV9jb25maWd1cmF0aW9uLmMgXAorCXNyYy9wc3lfbWFpbi5jIFwKKwlzcmMvcWNfbWFpbi5jIFwKKwlzcmMvcXVhbnRpemUuYyBcCisJc3JjL3NmX2VzdGltLmMgXAorCXNyYy9zcHJlYWRpbmcuYyBcCisJc3JjL3N0YXRfYml0cy5jIFwKKwlzcmMvdG5zLmMgXAorCXNyYy90cmFuc2Zvcm0uYyBcCisJc3JjL21lbWFsaWduLmMKKworaWZlcSAoJChWT1RUKSwgdjUpCitMT0NBTF9TUkNfRklMRVMgKz0gXAorCXNyYy9hc20vQVJNVjVFL0F1dG9Db3JyZWxhdGlvbl92NS5zIFwKKwlzcmMvYXNtL0FSTVY1RS9iYW5kX25yZ192NS5zIFwKKwlzcmMvYXNtL0FSTVY1RS9DYWxjV2luZG93RW5lcmd5X3Y1LnMgXAorCXNyYy9hc20vQVJNVjVFL1ByZVBvc3RNRENUX3Y1LnMgXAorCXNyYy9hc20vQVJNVjVFL1I0UjhGaXJzdF92NS5zIFwKKwlzcmMvYXNtL0FSTVY1RS9SYWRpeDRGRlRfdjUucworZW5kaWYKKworaWZlcSAoJChWT1RUKSwgdjcpCitMT0NBTF9TUkNfRklMRVMgKz0gXAorCXNyYy9hc20vQVJNVjVFL0F1dG9Db3JyZWxhdGlvbl92NS5zIFwKKwlzcmMvYXNtL0FSTVY1RS9iYW5kX25yZ192NS5zIFwKKwlzcmMvYXNtL0FSTVY1RS9DYWxjV2luZG93RW5lcmd5X3Y1LnMgXAorCXNyYy9hc20vQVJNVjcvUHJlUG9zdE1EQ1RfdjcucyBcCisJc3JjL2FzbS9BUk1WNy9SNFI4Rmlyc3RfdjcucyBcCisJc3JjL2FzbS9BUk1WNy9SYWRpeDRGRlRfdjcucworZW5kaWYKKworTE9DQUxfTU9EVUxFIDo9IGxpYnN0YWdlZnJpZ2h0X2FhY2VuYworCitMT0NBTF9BUk1fTU9ERSA6PSBhcm0KKworTE9DQUxfU1RBVElDX0xJQlJBUklFUyA6PSAKKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PQorCitMT0NBTF9DX0lOQ0xVREVTIDo9IFwKKwlmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZSBcCisJZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZSBcCisJZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUgXAorCSQoTE9DQUxfUEFUSCkvc3JjIFwKKwkkKExPQ0FMX1BBVEgpL2luYyBcCisJJChMT0NBTF9QQVRIKS9iYXNpY19vcAorCitMT0NBTF9DRkxBR1MgOj0gJChWT19DRkxBR1MpCisKK2lmZXEgKCQoVk9UVCksIHY1KQorTE9DQUxfQ0ZMQUdTICs9IC1EQVJNVjVFIC1EQVJNX0lOQVNNIC1EQVJNVjVfSU5BU00KK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChMT0NBTF9QQVRIKS9zcmMvYXNtL0FSTVY1RQorZW5kaWYKKworaWZlcSAoJChWT1RUKSwgdjcpCitMT0NBTF9DRkxBR1MgKz0gLURBUk1WNUUgLURBUk1WN05lb24gLURBUk1fSU5BU00gLURBUk1WNV9JTkFTTQorTE9DQUxfQ19JTkNMVURFUyArPSAkKExPQ0FMX1BBVEgpL3NyYy9hc20vQVJNVjVFCitMT0NBTF9DX0lOQ0xVREVTICs9ICQoTE9DQUxfUEFUSCkvc3JjL2FzbS9BUk1WNworZW5kaWYKKworaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL0FBQ19FX1NBTVBMRVMuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvU2FtcGxlQ29kZS9BQUNfRV9TQU1QTEVTLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRkMDEyZAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvU2FtcGxlQ29kZS9BQUNfRV9TQU1QTEVTLmMKQEAgLTAsMCArMSwyODMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCUFBQ19FX1NBTVBMRVMuaA0KKw0KKwlDb250ZW50OglzYW1wbGUgY29kZSBmb3IgQUFDIGVuY29kZXINCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlCQk8ZGxmY24uaD4NCisjaW5jbHVkZQkJPHN0ZGlvLmg+DQorI2luY2x1ZGUJCTxzdGRsaWIuaD4NCisjaW5jbHVkZQkJPHN0cmluZy5oPg0KKyNpbmNsdWRlCQk8dGltZS5oPg0KKyNpbmNsdWRlCQkidm9BQUMuaCINCisjaW5jbHVkZQkJImNtbk1lbW9yeS5oIg0KKw0KKyNkZWZpbmUgIFZPX0FBQ19FX09VVFBVVAkgIDENCisjZGVmaW5lIFJFQURfU0laRQkoMTAyNCo4KQkNCit1bnNpZ25lZCBjaGFyIG91dEJ1ZlsxMDI0KjhdOw0KK3Vuc2lnbmVkIGNoYXIgaW5CdWZbUkVBRF9TSVpFXTsNCisNCitjb25zdCBjaGFyKiBIZWxwU3RyaW5nID0gDQorIlZpc3VhbE9uIEFBQyBlbmNvZGVyIFVzYWdlOlxuIg0KKyJ2b0FBQ0VuY1Rlc3QgLWlmIDxpbnB1dGZpbGUucGNtPiAtb2YgPG91dHB1dGZpbGUuYWFjPiAtc3IgPHNhbXBsZXJhdGU+IC1jaCA8Y2hhbm5lbD4gLWJyIDxiaXRyYXRlPiAtYWR0cyA8YWR0cz4gXG4iDQorIi1pZiBpbnB1dCBmaWxlIG5hbWUgXG4iDQorIi1vZiBvdXRwdXQgZmlsZSBuYW1lIFxuIg0KKyItc3IgaW5wdXQgcGNtIHNhbXBsZXJhdGUsIGRlZmF1bHQgNDQxMDAgXG4iDQorIi1jaCBpbnB1dCBwY20gY2hhbm5lbCwgZGVmYXVsdCAyIGNoYW5uZWwgXG4iDQorIi1iciBlbmNvZGVkIGFhYyBiaXRyYXRlLCBkZWZhdWx0IDY0MDAwICogKHNhbXBsZXJhdGUvMTAwKSpjaGFubmVsLzQ0MSg0ODApXG4iDQorIi1hZHRzIGFkZCBvciBubyBhZHRzIGhlYWRlciwgZGVmYXVsdCBhZGQgYWR0cyBoZWFkZXJcbiINCisiRm9yIGV4YW1wbGU6IFxuIg0KKyIuL3ZvQUFDRW5jVGVzdCAtaWYgcmF3LnBjbSAtb2YgcmF3LmFhYyAtc3IgNDQxMDAgLWNoIDIgLWJyIDEyODAwMFxuIjsNCisNCitzdGF0aWMgaW50IHBhcnNlY21kbGluZShpbnQgYXJnYywgY2hhciAqKmFyZ3YsY2hhciAgKippbnB1dF9maWxlbmFtZSwgY2hhciAgKipvdXRwdXRfZmlsZW5hbWUsIEFBQ0VOQ19QQVJBTSAqcGFyYW0pDQorew0KKwkvLyBub3RpY2UgdGhhdDoNCisJLy8gYml0UmF0ZS9uQ2hhbm5lbHMgPiA4MDAwDQorCS8vIGJpdFJhdGUvbkNoYW5uZWxzIDwgMTYwMDAwIA0KKwkvLyBiaXRSYXRlL25DaGFubmVscyA8IHNhbXBsZVJhdGUqNg0KKwlwYXJhbS0+YWR0c1VzZWQgPSAxOw0KKwlwYXJhbS0+Yml0UmF0ZSA9IDA7DQorCXBhcmFtLT5uQ2hhbm5lbHMgPSAyOw0KKwlwYXJhbS0+c2FtcGxlUmF0ZSA9IDQ0MTAwOw0KKw0KKwlpZihhcmdjIDwgNSB8fCBhcmdjID4gMTMpDQorCXsNCisJCXJldHVybiAtMTsNCisJfQ0KKw0KKwlhcmdjLS07DQorCWFyZ3YrKzsNCisJd2hpbGUgKGFyZ2MgPiAwKQ0KKwl7DQorCQlpZiAoIXN0cmNtcCgqYXJndiwgIi1pZiIpKQ0KKwkJew0KKwkJCWFyZ3YrKzsNCisJCQlhcmdjLS07DQorCQkJKmlucHV0X2ZpbGVuYW1lID0gKmFyZ3Y7IA0KKwkJfQ0KKwkJZWxzZSBpZiAoIXN0cmNtcCgqYXJndiwgIi1vZiIpKQ0KKwkJew0KKwkJCWFyZ3YrKzsNCisJCQlhcmdjLS07DQorCQkJKm91dHB1dF9maWxlbmFtZSA9ICphcmd2Ow0KKwkJfQ0KKwkJZWxzZSBpZiAoIXN0cmNtcCgqYXJndiwgIi1zciIpKQ0KKwkJew0KKwkJCWFyZ3YrKzsNCisJCQlhcmdjLS07DQorCQkJcGFyYW0tPnNhbXBsZVJhdGUgPSBhdG9pKCphcmd2KTsNCisJCX0NCisJCWVsc2UgaWYgKCFzdHJjbXAoKmFyZ3YsICItY2giKSkNCisJCXsNCisJCQlhcmd2Kys7DQorCQkJYXJnYy0tOw0KKwkJCXBhcmFtLT5uQ2hhbm5lbHMgPSBhdG9pKCphcmd2KTsNCisJCX0NCisJCWVsc2UgaWYgKCFzdHJjbXAoKmFyZ3YsICItYnIiKSkNCisJCXsNCisJCQlhcmd2Kys7DQorCQkJYXJnYy0tOw0KKwkJCXBhcmFtLT5iaXRSYXRlID0gYXRvaSgqYXJndik7DQorCQl9DQorCQllbHNlIGlmKCFzdHJjbXAoKmFyZ3YsICItYWR0cyIpKQ0KKwkJew0KKwkJCWFyZ3YrKzsNCisJCQlhcmdjLS07DQorCQkJcGFyYW0tPmFkdHNVc2VkID0gYXRvaSgqYXJndik7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJcmV0dXJuIC0xOw0KKwkJfQ0KKw0KKwkJYXJndisrOw0KKwkJYXJnYy0tOw0KKwl9DQorDQorCWlmKHBhcmFtLT5iaXRSYXRlID09IDApDQorCXsNCisJCWludCBzY2FsZSA9IDQ0MTsNCisJCWlmKHBhcmFtLT5zYW1wbGVSYXRlJTgwMDAgPT0gMCkNCisJCQlzY2FsZSA9IDQ4MDsNCisJCXBhcmFtLT5iaXRSYXRlID0gNjQwKnBhcmFtLT5uQ2hhbm5lbHMqcGFyYW0tPnNhbXBsZVJhdGUvc2NhbGU7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBSZWFkRmlsZTJCdWYoRklMRSogaW5maWxlLHVuc2lnbmVkIGNoYXIqIGRlc3QsaW50IHJlYWRTaXplKQ0KK3sNCisJaW50IHJlYWRCeXRlcyA9IDA7DQorCXJlYWRCeXRlcyA9IGZyZWFkKGRlc3QsIDEsIHJlYWRTaXplLCBpbmZpbGUpOw0KKwlyZXR1cm4gcmVhZEJ5dGVzOw0KK30NCisNCit0eXBlZGVmIGludCAoVk9fQVBJICogVk9HRVRBVURJT0RFQ0FQSSkgKFZPX0FVRElPX0NPREVDQVBJICogcERlY0hhbmRsZSk7DQorDQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KK3sNCisJRklMRQkJCQkJCSppbmZpbGUsICpvdXRmaWxlOw0KKwlpbnQJCQkJCQkJdDEsIHQyOw0KKwlWT19BVURJT19DT0RFQ0FQSQkJCUF1ZGlvQVBJOw0KKwlWT19NRU1fT1BFUkFUT1IJCQkJbW9wZXI7DQorCVZPX0NPREVDX0lOSVRfVVNFUkRBVEEJCXVzZURhdGE7DQorCVZPX0hBTkRMRQkJCQkJaENvZGVjOw0KKwlWT19DT0RFQ0JVRkZFUgkJCQlpbkRhdGE7DQorCVZPX0NPREVDQlVGRkVSCQkJCW91dERhdGE7DQorCVZPX0FVRElPX09VVFBVVElORk8JCQlvdXRJbmZvOw0KKyAgICBpbnQJCQkJCQkJZmlyc3RXcml0ZSA9IDE7DQorCWludAkJCQkJCQllb2ZGaWxlID0gMDsNCisJaW50CQkJCQkJCSppbmZvPShpbnQqKWluQnVmOw0KKwlpbnQJCQkJCQkJYnl0ZXNMZWZ0LCBuUmVhZDsNCisJaW50CQkJCQkJCUVuY29kZXJkRnJhbWUgPSAwOw0KKwlpbnQJCQkJCQkJdG90YWwgPSAwOw0KKwlpbnQJCQkJCQkJaXNPdXRwdXQgPSAxOw0KKwlpbnQJCQkJCQkJcmV0dXJuQ29kZTsNCisJQUFDRU5DX1BBUkFNCQkJCWFhY3BhcmE7DQorCXZvaWQJCQkJCQkqaGFuZGxlOw0KKwl2b2lkCQkJCQkJKnBmdW5jOw0KKwlWT0dFVEFVRElPREVDQVBJCQkJcEdldEFQSTsNCisJY29uc3QgY2hhcgkJCQkJKmluZmlsZU5hbWUgPSBOVUxMOw0KKyAgICBjb25zdCBjaGFyCQkJCQkqb3V0ZmlsZU5hbWUgPSBOVUxMOw0KKw0KKwlyZXR1cm5Db2RlID0gcGFyc2VjbWRsaW5lKGFyZ2MsYXJndiwgJmluZmlsZU5hbWUsICZvdXRmaWxlTmFtZSwgJmFhY3BhcmEpOw0KKwlpZihyZXR1cm5Db2RlKQ0KKwl7DQorCQlwcmludGYoIiVzIiwgSGVscFN0cmluZyk7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwkvKiBvcGVuIGlucHV0IGZpbGUgKi8NCisJaW5maWxlID0gZm9wZW4oaW5maWxlTmFtZSwgInJiIik7DQorCWlmICghaW5maWxlKSB7DQorCQlwcmludGYoIk9wZW4gaW5wdXQgZmlsZSBmYWlsLi4uIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisNCisJLyogb3BlbiBvdXRwdXQgZmlsZSAqLw0KKwlpZihpc091dHB1dCkNCisJew0KKwkJb3V0ZmlsZSA9IGZvcGVuKG91dGZpbGVOYW1lLCAid2IiKTsgDQorCQlpZiAoIW91dGZpbGUpIHsNCisJCQlwcmludGYoIk9wZW4gb3V0cHV0IGZpbGUgZmFpbC4uLiIpOw0KKwkJCXJldHVybiAtMTsNCisJCX0NCisJfQ0KKwkvLyBzZXQgbWVtb3J5IG9wZXJhdG9yczsNCisJbW9wZXIuQWxsb2MgPSBjbW5NZW1BbGxvYzsNCisJbW9wZXIuQ29weSA9IGNtbk1lbUNvcHk7DQorCW1vcGVyLkZyZWUgPSBjbW5NZW1GcmVlOw0KKwltb3Blci5TZXQgPSBjbW5NZW1TZXQ7DQorCW1vcGVyLkNoZWNrID0gY21uTWVtQ2hlY2s7DQorCXVzZURhdGEubWVtZmxhZyA9IFZPX0lNRl9VU0VSTUVNT1BFUkFUT1I7DQorCXVzZURhdGEubWVtRGF0YSA9IChWT19QVFIpKCZtb3Blcik7DQorCS8vIG9wZW4gZW5jb2RlciBkbGw7DQorCWhhbmRsZSA9IGRsb3BlbigiL2RhdGEvbG9jYWwvdG1wL2xpYnZvQUFDRW5jdjcuc28iLCBSVExEX05PVyk7DQorCWlmKGhhbmRsZSA9PSAwKQ0KKwl7DQorCQlwcmludGYoIm9wZW4gZGxsIGVycm9yLi4uLi4uIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisJLy8gR2V0IEFQSTsNCisJcGZ1bmMgPSBkbHN5bShoYW5kbGUsICJ2b0dldEFBQ0VuY0FQSSIpOwkNCisJaWYocGZ1bmMgPT0gMCkNCisJew0KKwkJcHJpbnRmKCJvcGVuIGZ1bmN0aW9uIGVycm9yLi4uLi4uIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisJcEdldEFQSSA9IChWT0dFVEFVRElPREVDQVBJKXBmdW5jOw0KKwlyZXR1cm5Db2RlICA9IHBHZXRBUEkoJkF1ZGlvQVBJKTsNCisJaWYocmV0dXJuQ29kZSkNCisJCXJldHVybiAtMTsNCisNCisNCisvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgIEluaXQgRW5jb2RpbmcgU2VjdGlvbiAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorCXJldHVybkNvZGUgPSBBdWRpb0FQSS5Jbml0KCZoQ29kZWMsIFZPX0FVRElPX0NvZGluZ0FBQywgJnVzZURhdGEpOw0KKwlpZihyZXR1cm5Db2RlIDwgMCkNCisJew0KKwkJcHJpbnRmKCIjIyMjIFZPSV9FcnJvcjI6ZmFpbCB0byBpbml0aWFsaXplIHRoZSBFbmNvZGVyciMjI1xuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisNCisJcmV0dXJuQ29kZSA9IEF1ZGlvQVBJLlNldFBhcmFtKGhDb2RlYywgVk9fUElEX0FBQ19FTkNQQVJBTSwgJmFhY3BhcmEpOwkNCisJDQorCWluRGF0YS5CdWZmZXIgPSBpbkJ1ZjsNCisJYnl0ZXNMZWZ0ID0gUmVhZEZpbGUyQnVmKGluZmlsZSxpbkRhdGEuQnVmZmVyLFJFQURfU0laRSk7DQorDQorLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICAgRW5jb2RpbmcgU2VjdGlvbiAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorCQ0KKwlkbyB7DQorDQorCQlpbkRhdGEuTGVuZ3RoICAgID0gYnl0ZXNMZWZ0Ow0KKwkJb3V0RGF0YS5CdWZmZXIgICA9IG91dEJ1ZjsNCisJCW91dERhdGEuTGVuZ3RoID0gMTAyNCo4Ow0KKw0KKwkJdDEgPSBjbG9jaygpOw0KKwkJDQorCQlyZXR1cm5Db2RlID0gQXVkaW9BUEkuU2V0SW5wdXREYXRhKGhDb2RlYywmaW5EYXRhKTsNCisJCQ0KKwkJZG8gew0KKwkJCW91dERhdGEuQnVmZmVyICAgPSBvdXRCdWY7DQorCQkJb3V0RGF0YS5MZW5ndGggPSAxMDI0Kjg7DQorDQorCQkJcmV0dXJuQ29kZSA9IEF1ZGlvQVBJLkdldE91dHB1dERhdGEoaENvZGVjLCZvdXREYXRhLCAmb3V0SW5mbyk7DQorDQorCQkJaWYocmV0dXJuQ29kZSA9PSAwKQ0KKwkJCQlFbmNvZGVyZEZyYW1lKys7DQorCQkJaWYocmV0dXJuQ29kZSA9PSBWT19FUlJfTElDRU5TRV9FUlJPUikNCisJCQkJYnJlYWs7DQorDQorI2lmIFZPX0FBQ19FX09VVFBVVA0KKwkJCWlmIChpc091dHB1dCAmJiByZXR1cm5Db2RlID09IDApDQorCQkJew0KKwkJCQlmd3JpdGUob3V0RGF0YS5CdWZmZXIsIDEsIG91dERhdGEuTGVuZ3RoLCBvdXRmaWxlKTsNCisJCQl9DQorI2VuZGlmDQorCQl9IHdoaWxlKHJldHVybkNvZGUgIT0gKFZPX0VSUl9JTlBVVF9CVUZGRVJfU01BTEwpKTsNCisNCisJCWlmKHJldHVybkNvZGUgPT0gVk9fRVJSX0xJQ0VOU0VfRVJST1IpDQorCQkJYnJlYWs7DQorDQorCQl0MiA9IGNsb2NrKCk7DQorCQl0b3RhbCArPSB0MiAtIHQxOw0KKw0KKwkJaWYgKCFlb2ZGaWxlKSB7DQorCQkJblJlYWQgPSBSZWFkRmlsZTJCdWYoaW5maWxlLCBpbkJ1ZixSRUFEX1NJWkUpOw0KKwkJCWJ5dGVzTGVmdCA9IG5SZWFkOw0KKwkJCWluRGF0YS5CdWZmZXIgPSBpbkJ1ZjsNCisJCQlpZiAoZmVvZihpbmZpbGUpKQ0KKwkJCQllb2ZGaWxlID0gMTsNCisJCX0NCisNCisJfSB3aGlsZSAoIWVvZkZpbGUgJiYgcmV0dXJuQ29kZSk7DQorDQorDQorLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIEVuZCBFbmNvZGluZyBTZWN0aW9uICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorCXJldHVybkNvZGUgPSBBdWRpb0FQSS5VbmluaXQoaENvZGVjKTsNCisNCisJZmNsb3NlKGluZmlsZSk7DQorCWlmIChvdXRmaWxlKQ0KKyAgICB7DQorICAgICAgICBmY2xvc2Uob3V0ZmlsZSk7DQorICAgIH0NCisJZGxjbG9zZShoYW5kbGUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1NhbXBsZUNvZGUvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmM5YzA3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL0FuZHJvaWQubWsKQEAgLTAsMCArMSwyNCBAQAorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAJQUFDX0VfU0FNUExFUy5jCisJCitMT0NBTF9TUkNfRklMRVMgKz0gCVwKKwkuLi8uLi8uLi9Db21tb24vY21uTWVtb3J5LmMgCisKK0xPQ0FMX01PRFVMRSA6PSBUZXN0dm9BQUNFbmMKKworTE9DQUxfQVJNX01PREUgOj0gYXJtCisKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gbGlidm9BQUNFbmMKKworTE9DQUxfQ19JTkNMVURFUyA6PSBcCisJJChMT0NBTF9QQVRIKS8gXAorCSQoTE9DQUxfUEFUSCkvLi4vLi4vLi4vQ29tbW9uIFwKKwkkKExPQ0FMX1BBVEgpLy4uLy4uLy4uL0luY2x1ZGUgXAorCitMT0NBTF9DRkxBR1MgOj0gJChWT19DRkxBR1MpCisJCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvU2FtcGxlQ29kZS9lY2xhaXIvTWFrZWZpbGUgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1NhbXBsZUNvZGUvZWNsYWlyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYzVkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1NhbXBsZUNvZGUvZWNsYWlyL01ha2VmaWxlCkBAIC0wLDAgKzEsNTUgQEAKKyMvKg0KKyMqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyMqKg0KKyMqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyMqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjKioNCisjKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMqKg0KKyMqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorIyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyMqLw0KKw0KKyMgdGFyZ2V0Ng0KKyMgYXZhaWxhYmxlOiBwYywgdjQoYXJtdjQpLCB2NShhcm12NSksIHY1eChhcm12NSB4c2NhbGUpLCB2Nihhcm12NiksIHY3KGNvcnRleC1hOCBuZW9uKQ0KK1ZPVFQ6PSB2Nw0KKw0KKw0KKyMgbW9kdWxlIHR5cGUNCisjIHBsZWFzZSBzcGVjaWZ5IHRoZSB0eXBlIG9mIHlvdXIgbW9kdWxlOiBsaWIgb3IgZXhlDQorVk9NVDo9IGV4ZQ0KKw0KKw0KKyMgbW9kdWxlIG1hY3Jvcw0KKyMgcGxlYXNlIGFwcGVuZCB0aGUgYWRkaXRpb25hbCBtYWNybyBkZWZpbml0aW9ucyBoZXJlIGZvciB5b3VyIG1vZHVsZSBpZiBuZWNlc3NhcnkuIA0KKyMgZS5nLiAtRFZJU1VBTE9OLCBtYWNybyBWSVNVQUxPTiBkZWZpbmVkIGZvciB5b3VyIG1vZHVsZSANCitWT01NOj0gI0FSTVY1RQ0KKw0KKw0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIG5hbWUgb2YgeW91ciBtb2R1bGUNCitWT1RBUkdFVDo9IHZvQUFDRW5jVGVzdHY3DQorDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGcxLm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi9Ub29scy9lY2xhaXIubWsgDQorDQorIyBkZXBlbmRlbnQgbGlicmFyaWVzLg0KK1ZPREVQTElCUzo9LWxkbA0KKw0KKyMgbW9kdWxlIHNvdXJjZQ0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBtcy5tayB3aGljaCBzcGVjaWZpZXMgYWxsIHNvdXJjZSBpbmZvIG9mIHlvdXIgbW9kdWxlDQoraW5jbHVkZSAuLi9tcy5taw0KKw0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgd2hlcmUgaXMgdGhlIHZvUmVsZWFzZSBvbiB5b3VyIFBDLCByZWxhdGl2ZSBwYXRoIGlzIHN1Z2dlc3RlZA0KK1ZPUkVMRElSOj0uLi8uLi8uLi8uLi8uLi9SZWxlYXNlLw0KKw0KKw0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBkb2l0Lm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi9Ub29scy9kb2l0Lm1rIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvU2FtcGxlQ29kZS9tcy5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvU2FtcGxlQ29kZS9tcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzFhNTY5Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL21zLm1rCkBAIC0wLDAgKzEsMjMgQEAKKyMvKg0KKyMqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyMqKg0KKyMqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyMqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjKioNCisjKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMqKg0KKyMqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorIyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyMqLw0KKw0KKyMgcGxlYXNlIGxpc3QgYWxsIG9iamVjdHMgbmVlZGVkIGJ5IHlvdXIgdGFyZ2V0IGhlcmUNCitPQkpTOj1BQUNfRV9TQU1QTEVTLm8JY21uTWVtb3J5Lm8NCisJCQkNCisjIHBsZWFzZSBsaXN0IGFsbCBkaXJlY3RvcmllcyB0aGF0IGFsbCBzb3VyY2UgZmlsZXMgcmVsYXRpdmUgd2l0aCB5b3VyIG1vZHVsZSguaCAuYyAuY3BwKSBsb2NhdGUgDQorVk9TUkNESVI6PS4uLyAuLi8uLi8uLi8uLi9pbmNsdWRlICAuLi8uLi8uLi8uLi9Db21tb24NCisJCQkJCQ0KKwkJCQkNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1Rvb2xzL2RvaXQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1Rvb2xzL2RvaXQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhMGIwYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvVG9vbHMvZG9pdC5tawpAQCAtMCwwICsxLDEzMyBAQAorIy8qCisjICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCisjICoqCisjICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIyAqKgorIyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICoqCisjICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjICovCisKK1ZFUkJPU0U6PUAKKworCitWT01UID89IGxpYgorCitpZmVxICgkKFZPTVQpLCBsaWIpCitMSUJfU1RBVElDPSQoVk9UQVJHRVQpLmEKK0xJQl9EWU5BTUlDPSQoVk9UQVJHRVQpLnNvCitlbmRpZgorCitpZmVxICgkKFZPTVQpLCBleGUpCitUQVJHRVQ9JChWT1RBUkdFVCkKK2VuZGlmCisKK0NGTEFHUz0kKFZPQ0ZMQUdTKSAkKGFkZHByZWZpeCAtSSwgJChWT1NSQ0RJUikpIAorQ1BQRkxBR1M9JChWT0NQUEZMQUdTKSAkKGFkZHByZWZpeCAtSSwgJChWT1NSQ0RJUikpIAoraWZuZXEgKCQoVk9UVCksIHBjKQorQVNGTEFHUz0kKFZPQVNGTEFHUykgJChhZGRwcmVmaXggLUksICQoVk9TUkNESVIpKSAKK2VuZGlmCisKK0xERkxBR1M6PSQoVk9MREZMQUdTKQorVk9URURFUFMrPSQoVk9ERVBMSUJTKQorVk9UTERFUFMrPSQoVk9ERVBMSUJTKQorVk9TVENMSUJTID89CisKK3ZwYXRoICUuYyAkKFZPU1JDRElSKQordnBhdGggJS5jcHAgJChWT1NSQ0RJUikKK2lmbmVxICgkKFZPVFQpLCBwYykKK3ZwYXRoICUucyAkKFZPU1JDRElSKQorZW5kaWYKKworaWZlcSAoJChWT1RUKSwgcGMpCitCTFRESVJTPSQoVk9SRUxESVIpL0xpbnV4L3N0YXRpYworQkxURElSRD0kKFZPUkVMRElSKS9MaW51eC9zaGFyZWQKK2Vsc2UKK0JMVERJUlM9JChWT1JFTERJUikvR29vZ2xlLyQoVk9OSikvbGliLyQoVk9UVCkKK0JMVERJUkQ9JChWT1JFTERJUikvR29vZ2xlLyQoVk9OSikvc28vJChWT1RUKQorZW5kaWYKKworCisuUFJFQ0lPVVM6ICQoT0JKRElSKS8lLm8KKworaWZlcSAoJChWT01UKSwgbGliKQorYWxsOiBta2RpcnMgJChMSUJfU1RBVElDKSAkKExJQl9EWU5BTUlDKQorbWtkaXJzOiAkKE9CSkRJUikgJChCTFRESVJTKSAkKEJMVERJUkQpCitlbHNlCithbGw6IG1rZGlycyAkKFRBUkdFVCkKK21rZGlyczogJChPQkpESVIpCitlbmRpZgorCiskKE9CSkRJUik6CisJQGlmIHRlc3QgISAtZCAkQDsgdGhlbiBcCisJCW1rZGlyIC1wICRAOyBcCisJZmk7CisKK2lmZXEgKCQoVk9NVCksIGxpYikKKyQoQkxURElSUyk6CisJQGlmIHRlc3QgISAtZCAkQDsgdGhlbiBcCisJCW1rZGlyIC1wICRAOyBcCisJZmk7CiskKEJMVERJUkQpOgorCUBpZiB0ZXN0ICEgLWQgJEA7IHRoZW4gXAorCQlta2RpciAtcCAkQDsgXAorCWZpOworZW5kaWYKKworCitpZmVxICgkKFZPTVQpLCBsaWIpCiskKExJQl9TVEFUSUMpOiQoT0JKUykKKwkkKEFSKSBjciAkQCAkKE9CSkRJUikvKi5vICQoVk9TVENMSUJTKQorCSQoUkFOTElCKSAkQAoraWZuZXEgKCQoVk9EQkcpLCB5ZXMpCisJIyQoU1RSSVApICRACitlbmRpZgorCiskKExJQl9EWU5BTUlDKTokKE9CSlMpCisJJChHRykgJChMREZMQUdTKSAtbyAkQCAkKE9CSkRJUikvKi5vIC1XbCwtLXdob2xlLWFyY2hpdmUgJChWT1NUQ0xJQlMpIC1XbCwtLW5vLXdob2xlLWFyY2hpdmUgJChWT1RMREVQUykgCitpZm5lcSAoJChWT0RCRyksIHllcykKKwkJJChTVFJJUCkgJEAKK2VuZGlmCisKK2Vsc2UKKworJChUQVJHRVQpOiQoT0JKUykKKwkkKEdHKSAkKExERkxBR1MpIC1vICRAICQoT0JKRElSKS8qLm8gLVdsLC0td2hvbGUtYXJjaGl2ZSAkKFZPU1RDTElCUykgLVdsLC0tbm8td2hvbGUtYXJjaGl2ZSAkKFZPVEVERVBTKQoraWZuZXEgKCQoVk9EQkcpLCB5ZXMpCisJJChTVFJJUCkgJEAKK2VuZGlmCisKK2VuZGlmCisKKworLlNVRkZJWEVTOiAuYyAuY3BwIC5zIC5vCisuYy5vOgorCSQoVkVSQk9TRSkgJChDQykgJChDRkxBR1MpIC1vICQoT0JKRElSKS8kQCAtYyAkPAorIyUuYzokKE9CSkRJUikvJS5vCisjCSQoVkVSQk9TRSkgJChDQykgJChDRkxBR1MpIC1vICRAIC1jICQ8CisuY3BwLm86CisJJChWRVJCT1NFKSAkKEdHKSAkKENQUEZMQUdTKSAtbyAkKE9CSkRJUikvJEAgLWMgJDwKK2lmbmVxICgkKFZPVFQpLCBwYykKKy5zLm86CisJJChWRVJCT1NFKSAkKEFTKSAkKEFTRkxBR1MpIC1vICQoT0JKRElSKS8kQCAkPAorZW5kaWYKKworCisuUEhPTlk6IGNsZWFuIGRldmVsCitjbGVhbjoKK2lmZXEgKCQoVk9NVCksIGxpYikKKwktcm0gLWZyICQoT0JKRElSKSAuKi5zdyogJChWT1RBUkdFVCkuKgorZWxzZQorCS1ybSAtZnIgJChPQkpESVIpIC4qLnN3KiAkKFZPVEFSR0VUKQorZW5kaWYKKworZGV2ZWw6CisJY3AgLWEgJChMSUJfU1RBVElDKSAkKEJMVERJUlMpCisJY3AgLWEgJChMSUJfRFlOQU1JQykgJChCTFRESVJEKQorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1Rvb2xzL2VjbGFpci5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvVG9vbHMvZWNsYWlyLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ODgzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1Rvb2xzL2VjbGFpci5tawpAQCAtMCwwICsxLDE3MiBAQAorIy8qCisjICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCisjICoqCisjICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIyAqKgorIyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICoqCisjICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjICovCisKKyMgc3BlY2lhbCBtYWNybyBkZWZpbml0aW9ucyBmb3IgYnVpbGRpbmcgCitWT1BSRURFRj0tRExJTlVYIC1EX0xJTlVYIAorCitWT1BSSiA/PSAKK1ZPTkogPz0gZWNsYWlyCitWT1RUID89IHY2CisjIGNvbnRyb2wgdGhlIHZlcnNpb24gdG8gcmVsZWFzZSBvdXQKKyMgYXZhaWxhYmxlOiBldmEoZXZhbHVhdGlvbiksIHJlbChyZWxlYXNlKQorVk9WRVI9CitpZmVxICgkKFZPVkVSKSwgZXZhKQorVk9QUkVERUYrPS1EX19WT1ZFUl9FVkFfXworZW5kaWYKKworIyBmb3IgZGVidWcgb3Igbm90OiB5ZXMgZm9yIGRlYnVnLCBhbnkgb3RoZXIgZm9yIHJlbGVhc2UKK1ZPREJHPz15ZQorCisjIGZvciBkZXRlY3RpbmcgbWVtb3J5IGxlYWsKK1ZPRE1MPQoraWZlcSAoJChWT0RNTCksIHllcykKK1ZPUFJFREVGKz0tRERNRU1MRUFLCitlbmRpZgorCitWT1BSRURFRis9LURfX1ZPVFRfQVJNX18gLURfX1ZPTkpfRUNMQUlSX18KK1RDUk9PVFBBVEg6PS9vcHQvZWNsYWlyCitHQ0NWRVI6PTQuNC4wCitUQ1BBVEg6PSQoVENST09UUEFUSCkvcHJlYnVpbHQvbGludXgteDg2L3Rvb2xjaGFpbi9hcm0tZWFiaS0kKEdDQ1ZFUikKK0NDVFBSRTo9JChUQ1BBVEgpL2Jpbi9hcm0tZWFiaS0KK0FTOj0kKENDVFBSRSlhcworQVI6PSQoQ0NUUFJFKWFyCitOTTo9JChDQ1RQUkUpbm0KK0NDOj0kKENDVFBSRSlnY2MKK0dHOj0kKENDVFBSRSlnKysKK0xEOj0kKENDVFBSRSlsZAorU0laRTo9JChDQ1RQUkUpc2l6ZQorU1RSSVA6PSQoQ0NUUFJFKXN0cmlwCitSQU5MSUI6PSQoQ0NUUFJFKXJhbmxpYgorT0JKQ09QWTo9JChDQ1RQUkUpb2JqY29weQorT0JKRFVNUDo9JChDQ1RQUkUpb2JqZHVtcAorUkVBREVMRjo9JChDQ1RQUkUpcmVhZGVsZgorU1RSSU5HUzo9JChDQ1RQUkUpc3RyaW5ncworCisjIHRhcmdldCBwcm9kdWN0IGRlcGVuZGN5CisjIGF2YWlsYWJsZTogZHJlYW0sIGdlbmVyaWMKK1ZPVFA6PXNhcHBoaXJlLW9wZW4KK0NDVExJQjo9JChUQ1JPT1RQQVRIKS9vdXQvdGFyZ2V0L3Byb2R1Y3QvJChWT1RQKS9vYmovbGliCitDQ1RJTkM6PS1JJChUQ1JPT1RQQVRIKS9zeXN0ZW0vY29yZS9pbmNsdWRlIFwKKwktSSQoVENST09UUEFUSCkvaGFyZHdhcmUvbGliaGFyZHdhcmUvaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL2hhcmR3YXJlL3JpbC9pbmNsdWRlIFwKKwktSSQoVENST09UUEFUSCkvaGFyZHdhcmUvbGliaGFyZHdhcmVfbGVnYWN5L2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9kYWx2aWsvbGlibmF0aXZlaGVscGVyL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9kYWx2aWsvbGlibmF0aXZlaGVscGVyL2luY2x1ZGUvbmF0aXZlaGVscGVyIFwKKwktSSQoVENST09UUEFUSCkvZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9mcmFtZXdvcmtzL2Jhc2UvY29yZS9qbmkgXAorCS1JJChUQ1JPT1RQQVRIKS9mcmFtZXdvcmtzL2Jhc2UvbGlicy9hdWRpb2ZsaW5nZXIgXAorCS1JJChUQ1JPT1RQQVRIKS9leHRlcm5hbC9za2lhL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9vdXQvdGFyZ2V0L3Byb2R1Y3QvJChWT1RQKS9vYmovaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL2Jpb25pYy9saWJjL2FyY2gtYXJtL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9iaW9uaWMvbGliYy9pbmNsdWRlIFwKKwktSSQoVENST09UUEFUSCkvYmlvbmljL2xpYnN0ZGMrKy9pbmNsdWRlIFwKKwktSSQoVENST09UUEFUSCkvYmlvbmljL2xpYmMva2VybmVsL2NvbW1vbiBcCisJLUkkKFRDUk9PVFBBVEgpL2Jpb25pYy9saWJjL2tlcm5lbC9hcmNoLWFybSBcCisJLUkkKFRDUk9PVFBBVEgpL2Jpb25pYy9saWJtL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9iaW9uaWMvbGlibS9pbmNsdWRlL2FybSBcCisJLUkkKFRDUk9PVFBBVEgpL2Jpb25pYy9saWJ0aHJlYWRfZGIvaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL2Jpb25pYy9saWJtL2FybSBcCisJLUkkKFRDUk9PVFBBVEgpL2Jpb25pYy9saWJtIFwKKwktSSQoVENST09UUEFUSCkvZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvYW5kcm9pZF9ydW50aW1lIAorCSMtSSQoVENST09UUEFUSCkvb3V0L3RhcmdldC9wcm9kdWN0LyQoVk9UUCkvb2JqL1NIQVJFRF9MSUJSQVJJRVMvbGlibV9pbnRlcm1lZGlhdGVzCisKK0NDVENGTEFHUzo9LW1zb2Z0LWZsb2F0IC1tdGh1bWItaW50ZXJ3b3JrIC1mbm8tZXhjZXB0aW9ucyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mdW53aW5kLXRhYmxlcyAtZnN0YWNrLXByb3RlY3RvciAtZm5vLXNob3J0LWVudW1zIC1mbWVzc2FnZS1sZW5ndGg9MCAtZmlubGluZS1mdW5jdGlvbnMgLWZpbmxpbmUtbGltaXQ9NjAwIC1mbm8taW5saW5lLWZ1bmN0aW9ucy1jYWxsZWQtb25jZSAtZmdjc2UtYWZ0ZXItcmVsb2FkIC1mcmVydW4tY3NlLWFmdGVyLWxvb3AgLWZyZW5hbWUtcmVnaXN0ZXJzIC1mc3RyaWN0LWFsaWFzaW5nIC1mdW5zd2l0Y2gtbG9vcHMKKyMtZndpZGUtZXhlYy1jaGFyc2V0PWNoYXJzZXQ9VVRGLTMyIAorCisjIGZvciB0YXJnZXQgZXhlCitURUxERkxBR1M6PS1ub3N0ZGxpYiAtQmR5bmFtaWMgLVdsLC1ULCQoVENST09UUEFUSCkvYnVpbGQvY29yZS9hcm1lbGYueCAtV2wsLWR5bmFtaWMtbGlua2VyLC9zeXN0ZW0vYmluL2xpbmtlciAtV2wsLS1nYy1zZWN0aW9ucyAtV2wsLXosbm9jb3B5cmVsb2MgLVdsLC0tbm8tdW5kZWZpbmVkIC1XbCwtcnBhdGgtbGluaz0kKENDVExJQikgLUwkKENDVExJQikgCisKK1ZPVEVERVBTOj0kKENDVExJQikvY3J0YmVnaW5fZHluYW1pYy5vICQoQ0NUTElCKS9jcnRlbmRfYW5kcm9pZC5vICQoVENQQVRIKS9saWIvZ2NjL2FybS1lYWJpLyQoR0NDVkVSKS9pbnRlcndvcmsvbGliZ2NjLmEgLWxjIC1sbQorCisjIGZvciB0YXJnZXQgbGliCitUTExERkxBR1M6PS1ub3N0ZGxpYiAtV2wsLVQsJChUQ1JPT1RQQVRIKS9idWlsZC9jb3JlL2FybWVsZi54c2MgLVdsLC0tZ2Mtc2VjdGlvbnMgLVdsLC1zaGFyZWQsLUJzeW1ib2xpYyAtTCQoQ0NUTElCKSAtV2wsLS1uby13aG9sZS1hcmNoaXZlIC1XbCwtLW5vLXVuZGVmaW5lZCAkKFRDUEFUSCkvbGliL2djYy9hcm0tZWFiaS8kKEdDQ1ZFUikvaW50ZXJ3b3JrL2xpYmdjYy5hIAorCitWT1RMREVQUzo9LWxtIC1sYworCisKK2lmZXEgKCQoVk9UVCksIHY0KQorVk9DRkxBR1M6PS1tdHVuZT1hcm05dGRtaSAtbWFyY2g9YXJtdjR0CitWT0FTRkxBR1M6PS1tYXJjaD1hcm12NHQgLW1mcHU9c29mdGZwYQorZW5kaWYKKworaWZlcSAoJChWT1RUKSwgdjUpCitWT0NGTEFHUzo9LW1hcmNoPWFybXY1dGUKK1ZPQVNGTEFHUzo9LW1hcmNoPWFybXY1dGUgLW1mcHU9dmZwCitlbmRpZgorCitpZmVxICgkKFZPVFQpLCB2NXgpCitWT0NGTEFHUzo9LW1hcmNoPWFybXY1dGUgLW10dW5lPXhzY2FsZQorVk9BU0ZMQUdTOj0tbWFyY2g9YXJtdjV0ZSAtbWZwdT12ZnAKK2VuZGlmCisKK2lmZXEgKCQoVk9UVCksIHY2KQorI1ZPQ0ZMQUdTOj0tbWFyY2g9YXJtdjYgLW10dW5lPWFybTExMzZqZi1zIAorI1ZPQVNGTEFHUzo9LW1hcmNoPWFybXY2CitWT0NGTEFHUzo9LW1hcmNoPWFybXY2aiAtbXR1bmU9YXJtMTEzNmpmLXMgLW1mcHU9dmZwIC1tZmxvYXQtYWJpPXNvZnRmcCAtbWFwY3MgLW10cGNzLWxlYWYtZnJhbWUgLW1sb25nLWNhbGxzCitWT0FTRkxBR1M6PS1tYXJjaD1hcm12NmogLW1jcHU9YXJtMTEzNmpmLXMgLW1mcHU9YXJtMTEzNmpmLXMgLW1mbG9hdC1hYmk9c29mdGZwIC1tYXBjcy1mbG9hdCAtbWFwY3MtcmVlbnRyYW50CitlbmRpZgorCisjCisjIGdsb2JhbCBsaW5rIG9wdGlvbnMKK1ZPTERGTEFHUzo9LVdsLC14LC1YLC0tYXMtbmVlZGVkCisKKworaWZlcSAoJChWT1RUKSwgdjcpCitWT0NGTEFHUys9LW1hcmNoPWFybXY3LWEgLW10dW5lPWNvcnRleC1hOCAtbWZwdT1uZW9uIC1tZmxvYXQtYWJpPXNvZnRmcAorVk9BU0ZMQUdTKz0tbWFyY2g9YXJtdjctYSAtbWNwdT1jb3J0ZXgtYTggLW1mcHU9bmVvbiAtbWZsb2F0LWFiaT1zb2Z0ZnAKK1ZPTERGTEFHUys9LVdsLC0tZml4LWNvcnRleC1hOAorZW5kaWYKKworI2dsb2JhbCBjb21waWxpbmcgb3B0aW9ucyBmb3IgQVJNIHRhcmdldAoraWZuZXEgKCQoVk9UVCksIHBjKQorVk9BU0ZMQUdTKz0tLXN0cmlwLWxvY2FsLWFic29sdXRlIC1SCitlbmRpZiAKKworCitpZmVxICgkKFZPREJHKSwgeWVzKQorVk9DRkxBR1MrPS1EX0RFQlVHIC1nCitlbHNlCitWT0NGTEFHUys9LUROREVCVUcgLU8zCitlbmRpZgorCitWT0NGTEFHUys9JChWT1BSRURFRikgJChWT01NKSAtV2FsbCAtZnNpZ25lZC1jaGFyIC1mb21pdC1mcmFtZS1wb2ludGVyIC1mbm8tbGVhZGluZy11bmRlcnNjb3JlIC1mcGljIC1mUElDIC1waXBlIC1mdHJhY2VyIC1mZm9yY2UtYWRkciAtZm5vLWJvdW5kcy1jaGVjayAjLWZ2aXNpYmlsaXR5PWhpZGRlbiAjLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuICMjLWZ0cmVlLWxvb3AtbGluZWFyICAtbXRodW1iIC1ub3N0ZGluYyAgLWREIC1mcHJlZmV0Y2gtbG9vcC1hcnJheXMKKworCitpZm5lcSAoJChWT1RUKSwgcGMpCitWT0NGTEFHUys9JChDQ1RDRkxBR1MpICQoQ0NUSU5DKQorVk9DUFBGTEFHUzo9LWZuby1ydHRpICQoVk9DRkxBR1MpCisKK2lmZXEgKCQoVk9NVCksIGV4ZSkKK1ZPTERGTEFHUys9JChURUxERkxBR1MpCitlbmRpZgorCitpZmVxICgkKFZPTVQpLCBsaWIpCitWT0xERkxBR1MrPSQoVExMREZMQUdTKQorZW5kaWYKK2Vsc2UKK1ZPQ1BQRkxBR1M6PSQoVk9DRkxBR1MpCitpZmVxICgkKFZPTVQpLCBsaWIpCitWT0xERkxBR1MrPS1zaGFyZWQKK2VuZGlmCitlbmRpZgorCitpZmVxICgkKFZPREJHKSwgeWVzKQorI1ZPTERGTEFHUzo9CitlbmRpZgorCisjIHdoZXJlIHRvIHBsYWNlIG9iamVjdCBmaWxlcyAKK09CSkRJUj1vYmoKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC9iYXNpY19vcC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC9iYXNpY19vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NTdmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL2Jhc2ljX29wLmgKQEAgLTAsMCArMSwxMTY2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQliYXNpY29wMi5oDQorDQorCUNvbnRlbnQ6CUNvbnN0YW50cyAsIEdsb2JhbHMgYW5kIEJhc2ljIGFyaXRobWV0aWMgb3BlcmF0b3JzLg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19CQVNJQ19PUF9ICisjZGVmaW5lIF9fQkFTSUNfT1BfSA0KKworI2luY2x1ZGUgInR5cGVkZWYuaCIKKworI2RlZmluZSBNQVhfMzIgKFdvcmQzMikweDdmZmZmZmZmTAorI2RlZmluZSBNSU5fMzIgKFdvcmQzMikweDgwMDAwMDAwTAorCisjZGVmaW5lIE1BWF8xNiAoV29yZDE2KTB4N2ZmZgorI2RlZmluZSBNSU5fMTYgKFdvcmQxNikweDgwMDAKKyNkZWZpbmUgQUJTKGEpCSgoYSkgPj0gMCkgPyAoYSkgOiAoLShhKSkNCisNCisvKiBTaG9ydCBhYnMsICAgICAgICAgICAxICAgKi8NCisjZGVmaW5lIGFic19zKHgpICAgICAgICgoV29yZDE2KSgoKHgpICE9IE1JTl8xNikgPyAoKCh4KSA+PSAwKSA/ICh4KSA6ICgtKHgpKSkgOiBNQVhfMTYpKQ0KKw0KKy8qIDE2IGJpdCB2YXIxIC0+IE1TQiwgICAgIDIgKi8NCisjZGVmaW5lIExfZGVwb3NpdF9oKHgpICgoKFdvcmQzMikoeCkpIDw8IDE2KQ0KKw0KKw0KKy8qIDE2IGJpdCB2YXIxIC0+IExTQiwgICAgIDIgKi8NCisjZGVmaW5lIExfZGVwb3NpdF9sKHgpICgoV29yZDMyKSh4KSkNCisNCisNCisvKiBMb25nIGFicywgICAgICAgICAgICAgIDMgICovDQorI2RlZmluZSBMX2Ficyh4KSAoKCh4KSAhPSBNSU5fMzIpID8gKCgoeCkgPj0gMCkgPyAoeCkgOiAoLSh4KSkpIDogTUFYXzMyKQ0KKw0KKw0KKy8qIFNob3J0IG5lZ2F0ZSwgICAgICAgIDEgICAqLw0KKyNkZWZpbmUgbmVnYXRlKHZhcjEpICgoV29yZDE2KSgoKHZhcjEpID09IE1JTl8xNikgPyBNQVhfMTYgOiAoLSh2YXIxKSkpKQ0KKw0KKw0KKy8qIExvbmcgbmVnYXRlLCAgICAgMiAqLw0KKyNkZWZpbmUgTF9uZWdhdGUoTF92YXIxKSAoKChMX3ZhcjEpID09IChNSU5fMzIpKSA/IChNQVhfMzIpIDogKC0oTF92YXIxKSkpDQorDQorDQorI2RlZmluZSBNVUxISUdIKEEsQikgKGludCkoKChXb3JkNjQpKEEpKihXb3JkNjQpKEIpKSA+PiAzMikNCisjZGVmaW5lIGZpeG11bChhLCBiKSAoaW50KSgoKChXb3JkNjQpKGEpKihXb3JkNjQpKGIpKSA+PiAzMikgPDwgMSkNCisNCisNCisjaWYgIChTQVRSVUFURV9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IHNhdHVyYXRlKFdvcmQzMiBMX3ZhcjEpOw0KKyNlbHNlDQorV29yZDE2IHNhdHVyYXRlKFdvcmQzMiBMX3ZhcjEpOw0KKyNlbmRpZg0KKw0KKy8qIFNob3J0IHNoaWZ0IGxlZnQsICAgIDEgICAqLw0KKyNpZiAoU0hMX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgc2hsIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDE2IHNobCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBTaG9ydCBzaGlmdCByaWdodCwgICAxICAgKi8NCisjaWYgKFNIUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IHNociAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQxNiBzaHIgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorI2lmIChMX01VTFRfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX211bHQoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQzMiBMX211bHQoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBNc3UsICAxICAqLw0KKyNpZiAoTF9NU1VfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX21zdSAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQzMiBMX21zdSAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisgICAgDQorLyogTG9uZyBzdWIsICAgICAgICAyICovDQorI2lmIChMX1NVQl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfc3ViKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpOw0KKyNlbHNlDQorV29yZDMyIExfc3ViKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpOw0KKyNlbmRpZg0KKw0KKy8qIExvbmcgc2hpZnQgbGVmdCwgMiAqLw0KKyNpZiAoTF9TSExfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX3NobCAoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDMyIExfc2hsIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorLyogTG9uZyBzaGlmdCByaWdodCwgMiovDQorI2lmIChMX1NIUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfc2hyIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMzIgTF9zaHIgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBTaG9ydCBhZGQsICAgICAgICAgICAxICAgKi8NCisjaWYgKEFERF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IGFkZCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQxNiBhZGQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorICAgIA0KKy8qIFNob3J0IHN1YiwgICAgICAgICAgIDEgICAqLw0KKyNpZiAoU1VCX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgc3ViKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMTYgc3ViKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorLyogU2hvcnQgZGl2aXNpb24sICAgICAgIDE4ICAqLw0KKyNpZiAoRElWX1NfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBkaXZfcyAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQxNiBkaXZfcyAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBTaG9ydCBtdWx0LCAgICAgICAgICAxICAgKi8NCisjaWYgKE1VTFRfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBtdWx0IChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDE2IG11bHQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorLyogU2hvcnQgbm9ybSwgICAgICAgICAgIDE1ICAqLw0KKyNpZiAoTk9STV9TX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgbm9ybV9zIChXb3JkMTYgdmFyMSk7DQorI2Vsc2UNCitXb3JkMTYgbm9ybV9zIChXb3JkMTYgdmFyMSk7DQorI2VuZGlmDQorDQorLyogTG9uZyBub3JtLCAgICAgICAgICAgIDMwICAqLw0KKyNpZiAoTk9STV9MX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgbm9ybV9sIChXb3JkMzIgTF92YXIxKTsNCisjZWxzZQ0KK1dvcmQxNiBub3JtX2wgKFdvcmQzMiBMX3ZhcjEpOw0KKyNlbmRpZg0KKw0KKy8qIFJvdW5kLCAgICAgICAgICAgICAgIDEgICAqLw0KKyNpZiAoUk9VTkRfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiByb3VuZDE2KFdvcmQzMiBMX3ZhcjEpOw0KKyNlbHNlDQorV29yZDE2IHJvdW5kMTYoV29yZDMyIExfdmFyMSk7DQorI2VuZGlmDQorDQorLyogTWFjLCAgMSAgKi8NCisjaWYgKExfTUFDX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9tYWMgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMzIgTF9tYWMgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorI2lmIChMX0FERF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfYWRkIChXb3JkMzIgTF92YXIxLCBXb3JkMzIgTF92YXIyKTsNCisjZWxzZQ0KK1dvcmQzMiBMX2FkZCAoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMik7DQorI2VuZGlmDQorDQorLyogRXh0cmFjdCBoaWdoLCAgICAgICAgMSAgICovDQorI2lmIChFWFRSQUNUX0hfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBleHRyYWN0X2ggKFdvcmQzMiBMX3ZhcjEpOw0KKyNlbHNlDQorV29yZDE2IGV4dHJhY3RfaCAoV29yZDMyIExfdmFyMSk7DQorI2VuZGlmDQorDQorLyogRXh0cmFjdCBsb3csICAgICAgICAgMSAgICovDQorI2lmIChFWFRSQUNUX0xfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBleHRyYWN0X2woV29yZDMyIExfdmFyMSk7DQorI2Vsc2UNCitXb3JkMTYgZXh0cmFjdF9sKFdvcmQzMiBMX3ZhcjEpOw0KKyNlbmRpZg0KKw0KKy8qIE11bHQgd2l0aCByb3VuZCwgMiAqLw0KKyNpZiAoTVVMVF9SX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgbXVsdF9yKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMTYgbXVsdF9yKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorLyogU2hpZnQgcmlnaHQgd2l0aCByb3VuZCwgMiAgICAgICAgICAgKi8NCisjaWYgKFNIUl9SX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgc2hyX3IgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMTYgc2hyX3IgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorLyogTWFjIHdpdGggcm91bmRpbmcsMiAqLw0KKyNpZiAoTUFDX1JfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBtYWNfciAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQxNiBtYWNfciAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBNc3Ugd2l0aCByb3VuZGluZywyICovDQorI2lmIChNU1VfUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IG1zdV9yIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDE2IG1zdV9yIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbmRpZg0KKw0KKy8qIExvbmcgc2hpZnQgcmlnaHQgd2l0aCByb3VuZCwgIDMgICAgICAgICAgICAgKi8NCisjaWYgKExfU0hSX1JfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX3Nocl9yIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMzIgTF9zaHJfciAoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbmRpZg0KKw0KKyNpZiBBUk1WNF9JTkFTTQ0KK19faW5saW5lIFdvcmQzMiBBU01fTF9zaHIoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKwlXb3JkMzIgcmVzdWx0OyANCisJYXNtIHZvbGF0aWxlKCANCisJCSJNT1YgJVtyZXN1bHRdLCAlW0xfdmFyMV0sIEFTUiAlW3ZhcjJdIFxuIiANCisJCTpbcmVzdWx0XSI9ciIocmVzdWx0KQ0KKwkJOltMX3ZhcjFdInIiKExfdmFyMSksIFt2YXIyXSJyIih2YXIyKQ0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7CQ0KK30NCisgDQorX19pbmxpbmUgV29yZDMyIEFTTV9MX3NobChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIk1PVglyMiwgJVtMX3ZhcjFdIFxuIg0KKwkJIk1PVglyMywgIzB4N2ZmZmZmZmZcbiINCisJCSJNT1YJJVtyZXN1bHRdLCAlW0xfdmFyMV0sIEFTTCAlW3ZhcjJdIFxuIiANCisJCSJURVEJcjIsICVbcmVzdWx0XSwgQVNSICVbdmFyMl1cbiINCisJCSJFT1JORSAgJVtyZXN1bHRdLHIzLHIyLEFTUiMzMVxuIg0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W0xfdmFyMV0iciIoTF92YXIxKSwgW3ZhcjJdInIiKHZhcjIpDQorCQk6InIyIiwgInIzIg0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7CQ0KK30NCisNCitfX2lubGluZSBXb3JkMzIgQVNNX3NocihXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIkNNUAklW3ZhcjJdLCAjMTVcbiINCisJCSJNT1ZHRSAgJVt2YXIyXSwgIzE1XG4iDQorCQkiTU9WCSVbcmVzdWx0XSwgJVtMX3ZhcjFdLCBBU1IgJVt2YXIyXVxuIg0KKwkJOltyZXN1bHRdIj1yIihyZXN1bHQpDQorCQk6W0xfdmFyMV0iciIoTF92YXIxKSwgW3ZhcjJdInIiKHZhcjIpIA0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7CQ0KK30gDQorDQorX19pbmxpbmUgV29yZDMyIEFTTV9zaGwoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKwlXb3JkMzIgcmVzdWx0OyANCisJYXNtIHZvbGF0aWxlKCANCisJCSJDTVAJJVt2YXIyXSwgIzE2XG4iDQorCQkiTU9WR0UgICVbdmFyMl0sICMxNlxuIg0KKwkJIk1PViAgICAlW3Jlc3VsdF0sICVbTF92YXIxXSwgQVNMICVbdmFyMl1cbiINCisJCSJNT1YgICAgcjMsICMxXG4iDQorICAgICAgICAiTU9WICAgIHIyLCAlW3Jlc3VsdF0sIEFTUiAjMTVcbiINCisgICAgICAgICJSU0IgICAgcjMscjMscjMsTFNMICMxNSBcbiINCisgICAgICAgICJURVEgICAgcjIsICVbcmVzdWx0XSwgQVNSICMzMSBcbiINCisgICAgICAgICJFT1JORSAgJVtyZXN1bHRdLCByMywgJVtyZXN1bHRdLEFTUiAjMzEiDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbTF92YXIxXSJyIihMX3ZhcjEpLCBbdmFyMl0iciIodmFyMikNCisJCToicjIiLCAicjMiDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsJDQorfSANCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgZGVmaW5pdGlvbnMgZm9yIGlubGluZSBiYXNpYyBhcml0aG1ldGljIG9wZXJhdG9ycyAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmIChTQVRSVUFURV9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IHNhdHVyYXRlKFdvcmQzMiBMX3ZhcjEpDQorew0KKyNpZiBBUk1WNVRFX1NBVA0KKwlXb3JkMTYgcmVzdWx0Ow0KKwlhc20gdm9sYXRpbGUgKA0KKwkJIk1PVgklW3Jlc3VsdF0sICVbTF92YXIxXVxuIg0KKwkJIk1PVglyMywgIzFcbiINCisJCSJNT1YJcjIsJVtMX3ZhcjFdLEFTUiMxNVxuIg0KKwkJIlJTQglyMywgcjMsIHIzLCBMU0wgIzE1XG4iDQorCQkiVEVRCXIyLCVbTF92YXIxXSxBU1IjMzFcbiIJDQorCQkiRU9STkUJJVtyZXN1bHRdLHIzLCVbTF92YXIxXSxBU1IjMzFcbiINCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOltMX3ZhcjFdInIiKExfdmFyMSkNCisJCToicjIiLCAicjMiCQkJDQorCSk7DQorDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIA0KKyAgICAvL3Zhcl9vdXQgPSAoTF92YXIxID4gKFdvcmQzMikwWDAwMDA3ZmZmTCkgPyAoTUFYXzE2KSA6ICgoTF92YXIxIDwgKFdvcmQzMikweGZmZmY4MDAwTCkgPyAoTUlOXzE2KSA6ICgoV29yZDE2KUxfdmFyMSkpOw0KKw0KKyAgICBpZiAoTF92YXIxID4gMFgwMDAwN2ZmZkwpDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBNQVhfMTY7DQorICAgIH0NCisgICAgZWxzZSBpZiAoTF92YXIxIDwgKFdvcmQzMikgMHhmZmZmODAwMEwpDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBNSU5fMTY7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICB2YXJfb3V0ID0gZXh0cmFjdF9sKExfdmFyMSk7DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorLyogU2hvcnQgc2hpZnQgbGVmdCwgICAgMSAgICovDQorI2lmIChTSExfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBzaGwgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorI2lmIEFSTVY1VEVfU0hMDQorCWlmKHZhcjI+PTApDQorCXsNCisJCXJldHVybiBBU01fc2hsKCB2YXIxLCB2YXIyKTsNCisJfQ0KKwllbHNlDQorCXsNCisJCXJldHVybiBBU01fc2hyKCB2YXIxLCAtdmFyMik7DQorCX0NCisjZWxzZQ0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIHJlc3VsdDsNCisNCisgICAgaWYgKHZhcjIgPCAwKQ0KKyAgICB7DQorICAgICAgICB2YXJfb3V0ID0gc2hyICh2YXIxLCAoV29yZDE2KS12YXIyKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIHJlc3VsdCA9IChXb3JkMzIpIHZhcjEgKigoV29yZDMyKSAxIDw8IHZhcjIpOw0KKw0KKyAgICAgICAgaWYgKCh2YXIyID4gMTUgJiYgdmFyMSAhPSAwKSB8fCAocmVzdWx0ICE9IChXb3JkMzIpICgoV29yZDE2KSByZXN1bHQpKSkNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXJfb3V0ID0gKFdvcmQxNikoKHZhcjEgPiAwKSA/IE1BWF8xNiA6IE1JTl8xNik7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgdmFyX291dCA9IGV4dHJhY3RfbChyZXN1bHQpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAodmFyX291dCk7DQorI2VuZGlmDQorfQ0KKyNlbmRpZg0KKw0KKy8qIFNob3J0IHNoaWZ0IHJpZ2h0LCAgIDEgICAqLw0KKyNpZiAoU0hSX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgc2hyIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyNpZiBBUk1WNVRFX1NIUg0KKwlpZih2YXIyPj0wKQ0KKwl7DQorCQlyZXR1cm4gIEFTTV9zaHIoIHZhcjEsIHZhcjIpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJcmV0dXJuICBBU01fc2hsKCB2YXIxLCAtdmFyMik7DQorCX0NCisjZWxzZQ0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgaWYgKHZhcjIgPCAwKQ0KKyAgICB7DQorICAgICAgICB2YXJfb3V0ID0gc2hsICh2YXIxLCAoV29yZDE2KS12YXIyKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGlmICh2YXIyID49IDE1KQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHZhcl9vdXQgPSAoV29yZDE2KSgodmFyMSA8IDApID8gLTEgOiAwKTsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAodmFyMSA8IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXJfb3V0ID0gKFdvcmQxNikofigofnZhcjEpID4+IHZhcjIpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdmFyX291dCA9IChXb3JkMTYpKHZhcjEgPj4gdmFyMik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorI2VuZGlmDQorfQ0KKyNlbmRpZg0KKw0KKw0KKyNpZiAoTF9NVUxUX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9tdWx0KFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorI2lmIEFSTVY1VEVfTF9NVUxUDQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIlNNVUxCQiAlW3Jlc3VsdF0sICVbdmFyMV0sICVbdmFyMl0gXG4iIA0KKwkJIlFBREQgJVtyZXN1bHRdLCAlW3Jlc3VsdF0sICVbcmVzdWx0XSBcbiIgDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbdmFyMV0iciIodmFyMSksIFt2YXIyXSJyIih2YXIyKQ0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UNCisgICAgV29yZDMyIExfdmFyX291dDsNCisNCisgICAgTF92YXJfb3V0ID0gKFdvcmQzMikgdmFyMSAqKFdvcmQzMikgdmFyMjsNCisNCisgICAgaWYgKExfdmFyX291dCAhPSAoV29yZDMyKSAweDQwMDAwMDAwTCkNCisgICAgew0KKyAgICAgICAgTF92YXJfb3V0IDw8PSAxOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgTF92YXJfb3V0ID0gTUFYXzMyOw0KKyAgICB9DQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorI2lmIChMX01TVV9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfbXN1IChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyNpZiBBUk1WNVRFX0xfTVNVDQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIlNNVUxCQiAlW3Jlc3VsdF0sICVbdmFyMV0sICVbdmFyMl0gXG4iIA0KKwkJIlFBREQgJVtyZXN1bHRdLCAlW3Jlc3VsdF0sICVbcmVzdWx0XSBcbiINCisJCSJRU1VCICVbcmVzdWx0XSwgJVtMX3ZhcjNdLCAlW3Jlc3VsdF1cbiINCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOltMX3ZhcjNdInIiKExfdmFyMyksIFt2YXIxXSJyIih2YXIxKSwgW3ZhcjJdInIiKHZhcjIpDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKyAgICBXb3JkMzIgTF9wcm9kdWN0Ow0KKw0KKyAgICBMX3Byb2R1Y3QgPSBMX211bHQodmFyMSwgdmFyMik7DQorICAgIExfdmFyX291dCA9IExfc3ViKExfdmFyMywgTF9wcm9kdWN0KTsNCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisjaWYgKExfU1VCX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9zdWIoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMikNCit7DQorI2lmIEFSTVY1VEVfTF9TVUINCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiUVNVQiAlW3Jlc3VsdF0sICVbTF92YXIxXSwgJVtMX3ZhcjJdXG4iDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbTF92YXIxXSJyIihMX3ZhcjEpLCBbTF92YXIyXSJyIihMX3ZhcjIpDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKw0KKyAgICBMX3Zhcl9vdXQgPSBMX3ZhcjEgLSBMX3ZhcjI7DQorDQorICAgIGlmICgoKExfdmFyMSBeIExfdmFyMikgJiBNSU5fMzIpICE9IDApDQorICAgIHsNCisgICAgICAgIGlmICgoTF92YXJfb3V0IF4gTF92YXIxKSAmIE1JTl8zMikNCisgICAgICAgIHsNCisgICAgICAgICAgICBMX3Zhcl9vdXQgPSAoTF92YXIxIDwgMEwpID8gTUlOXzMyIDogTUFYXzMyOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorI2lmIChMX1NITF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfc2hsKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9MX1NITA0KKyAgICBpZih2YXIyPj0wKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gIEFTTV9MX3NobCggTF92YXIxLCB2YXIyKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIHJldHVybiAgQVNNX0xfc2hyKCBMX3ZhcjEsIC12YXIyKTsNCisgICAgfQ0KKyNlbHNlDQorICAgIFdvcmQzMiBMX3Zhcl9vdXQgPSAwTDsNCisNCisgICAgaWYgKHZhcjIgPD0gMCkNCisgICAgew0KKyAgICAgICAgTF92YXIxID0gTF9zaHIoTF92YXIxLCAoV29yZDE2KS12YXIyKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGZvciAoOyB2YXIyID4gMDsgdmFyMi0tKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmIChMX3ZhcjEgPiAoV29yZDMyKSAwWDNmZmZmZmZmTCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHJldHVybiBNQVhfMzI7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGlmIChMX3ZhcjEgPCAoV29yZDMyKSAweGMwMDAwMDAwTCkNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1JTl8zMjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBMX3ZhcjEgPDw9IDE7DQorICAgICAgICAgICAgTF92YXJfb3V0ID0gTF92YXIxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAoTF92YXIxKTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorI2lmIChMX1NIUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfc2hyIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorI2lmIEFSTVY1VEVfTF9TSFINCisJaWYodmFyMj49MCkNCisJew0KKwkJcmV0dXJuIEFTTV9MX3NociggTF92YXIxLCB2YXIyKTsNCisJfQ0KKwllbHNlDQorCXsNCisJCXJldHVybiBBU01fTF9zaGwoIExfdmFyMSwgLXZhcjIpOw0KKwl9DQorI2Vsc2UNCisgICAgV29yZDMyIExfdmFyX291dDsNCisNCisgICAgaWYgKHZhcjIgPCAwKQ0KKyAgICB7DQorICAgICAgICBMX3Zhcl9vdXQgPSBMX3NobCAoTF92YXIxLCAoV29yZDE2KS12YXIyKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGlmICh2YXIyID49IDMxKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIExfdmFyX291dCA9IChMX3ZhcjEgPCAwTCkgPyAtMSA6IDA7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKExfdmFyMSA8IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBMX3Zhcl9vdXQgPSB+KCh+TF92YXIxKSA+PiB2YXIyKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgTF92YXJfb3V0ID0gTF92YXIxID4+IHZhcjI7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorLyogU2hvcnQgYWRkLCAgICAgICAgICAgMSAgICovDQorI2lmIChBRERfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBhZGQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorI2lmIEFSTVY1VEVfQUREDQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIkFERCAgJVtyZXN1bHRdLCAlW3ZhcjFdLCAlW3ZhcjJdIFxuIiANCisJCSJNT1YgIHIzLCAjMHgxXG4iDQorCQkiTU9WICByMiwgJVtyZXN1bHRdLCBBU1IgIzE1XG4iDQorCQkiUlNCICByMywgcjMsIHIzLCBMU0wsICMxNVxuIg0KKwkJIlRFUSAgcjIsICVbcmVzdWx0XSwgQVNSICMzMVxuIg0KKwkJIkVPUk5FICVbcmVzdWx0XSwgcjMsICVbcmVzdWx0XSwgQVNSICMzMSINCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOlt2YXIxXSJyIih2YXIxKSwgW3ZhcjJdInIiKHZhcjIpDQorCQk6InIyIiwgInIzIg0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIFdvcmQzMiBMX3N1bTsNCisNCisgICAgTF9zdW0gPSAoV29yZDMyKSB2YXIxICsgdmFyMjsNCisgICAgdmFyX291dCA9IHNhdHVyYXRlKExfc3VtKTsNCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorLyogU2hvcnQgc3ViLCAgICAgICAgICAgMSAgICovDQorI2lmIChTVUJfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBzdWIoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9TVUINCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiTU9WICAgcjMsICMxXG4iDQorCQkiU1VCICAgJVtyZXN1bHRdLCAlW3ZhcjFdLCAlW3ZhcjJdIFxuIgkJDQorCQkiUlNCICAgcjMscjMscjMsTFNMIzE1XG4iDQorCQkiTU9WICAgcjIsICVbdmFyMV0sIEFTUiAjMTUgXG4iIA0KKwkJIlRFUSAgIHIyLCAlW3ZhcjFdLCBBU1IgIzMxIFxuIg0KKwkJIkVPUk5FICVbcmVzdWx0XSwgcjMsICVbcmVzdWx0XSwgQVNSICMzMSBcbiINCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOlt2YXIxXSJyIih2YXIxKSwgW3ZhcjJdInIiKHZhcjIpDQorCQk6InIyIiwgInIzIg0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIFdvcmQzMiBMX2RpZmY7DQorDQorICAgIExfZGlmZiA9IChXb3JkMzIpIHZhcjEgLSB2YXIyOw0KKyAgICB2YXJfb3V0ID0gc2F0dXJhdGUoTF9kaWZmKTsNCisgICANCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorLyogU2hvcnQgZGl2aXNpb24sICAgICAgIDE4ICAqLw0KKyNpZiAoRElWX1NfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBkaXZfcyAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQgPSAwOw0KKyAgICBXb3JkMTYgaXRlcmF0aW9uOw0KKyAgICBXb3JkMzIgTF9udW07DQorICAgIFdvcmQzMiBMX2Rlbm9tOw0KKw0KKyAgICB2YXJfb3V0ID0gTUFYXzE2Ow0KKyAgICBpZiAodmFyMSE9IHZhcjIpLy92YXIxIT0gdmFyMg0KKyAgICB7DQorICAgIAl2YXJfb3V0ID0gMDsNCisgICAgCUxfbnVtID0gKFdvcmQzMikgdmFyMTsNCisgICAgDQorICAgIAlMX2Rlbm9tID0gKFdvcmQzMikgdmFyMjsNCisgICAgCQ0KKwkJLy9yZXR1cm4gKExfbnVtPDwxNSkvdmFyMjsNCisNCisgICAgCWZvciAoaXRlcmF0aW9uID0gMDsgaXRlcmF0aW9uIDwgMTU7IGl0ZXJhdGlvbisrKQ0KKyAgICAJew0KKyAgICAJCXZhcl9vdXQgPDw9IDE7DQorICAgIAkJTF9udW0gPDw9IDE7DQorICAgIAkJDQorICAgIAkJaWYgKExfbnVtID49IExfZGVub20pDQorICAgIAkJew0KKyAgICAJCQlMX251bSAtPSBMX2Rlbm9tOw0KKyAgICAJCQl2YXJfb3V0Kys7DQorICAgIAkJfQ0KKyAgICAJfQ0KKyAgICB9DQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qIFNob3J0IG11bHQsICAgICAgICAgIDEgICAqLw0KKyNpZiAoTVVMVF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IG11bHQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorI2lmIEFSTVY1VEVfTVVMVA0KKwlXb3JkMzIgcmVzdWx0OyANCisJYXNtIHZvbGF0aWxlKCANCisJCSJTTVVMQkIgcjIsICVbdmFyMV0sICVbdmFyMl0gXG4iDQorCQkiTU9WCXIzLCAjMVxuIg0KKwkJIk1PVgklW3Jlc3VsdF0sIHIyLCBBU1IgIzE1XG4iDQorCQkiUlNCCXIzLCByMywgcjMsIExTTCAjMTVcbiINCisJCSJNT1YJcjIsICVbcmVzdWx0XSwgQVNSICMxNVxuIg0KKwkJIlRFUQlyMiwgJVtyZXN1bHRdLCBBU1IgIzMxXG4iDQorCQkiRU9STkUgICVbcmVzdWx0XSwgcjMsICVbcmVzdWx0XSwgQVNSICMzMSBcbiINCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOlt2YXIxXSJyIih2YXIxKSwgW3ZhcjJdInIiKHZhcjIpDQorCQk6InIyIiwgInIzIg0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIFdvcmQzMiBMX3Byb2R1Y3Q7DQorDQorICAgIExfcHJvZHVjdCA9IChXb3JkMzIpIHZhcjEgKihXb3JkMzIpIHZhcjI7DQorICAgIExfcHJvZHVjdCA9IChMX3Byb2R1Y3QgJiAoV29yZDMyKSAweGZmZmY4MDAwTCkgPj4gMTU7DQorICAgIGlmIChMX3Byb2R1Y3QgJiAoV29yZDMyKSAweDAwMDEwMDAwTCkNCisgICAgICAgIExfcHJvZHVjdCA9IExfcHJvZHVjdCB8IChXb3JkMzIpIDB4ZmZmZjAwMDBMOw0KKyAgICB2YXJfb3V0ID0gc2F0dXJhdGUoTF9wcm9kdWN0KTsNCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorDQorLyogU2hvcnQgbm9ybSwgICAgICAgICAgIDE1ICAqLw0KKyNpZiAoTk9STV9TX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgbm9ybV9zIChXb3JkMTYgdmFyMSkNCit7DQorI2lmIEFSTVY1VEVfTk9STV9TDQorCVdvcmQxNiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIk1PViAgIHIyLCVbdmFyMV0gXG4iDQorCQkiQ01QICAgcjIsICMwXG4iDQorCQkiUlNCTFQgJVt2YXIxXSwgJVt2YXIxXSwgIzAgXG4iDQorCQkiQ0xaTkUgJVtyZXN1bHRdLCAlW3ZhcjFdXG4iDQorCQkiU1VCTkUgJVtyZXN1bHRdLCAlW3Jlc3VsdF0sICMxN1xuIg0KKwkJIk1PVkVRICVbcmVzdWx0XSwgIzBcbiINCisJCSJDTVAgICByMiwgIy0xXG4iDQorCQkiTU9WRVEgJVtyZXN1bHRdLCAjMTVcbiIgDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbdmFyMV0iciIodmFyMSkNCisJCToicjIiDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgaWYgKHZhcjEgPT0gMCkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IDA7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBpZiAodmFyMSA9PSAtMSkNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXJfb3V0ID0gMTU7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKHZhcjEgPCAwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdmFyMSA9IChXb3JkMTYpfnZhcjE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvciAodmFyX291dCA9IDA7IHZhcjEgPCAweDQwMDA7IHZhcl9vdXQrKykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhcjEgPDw9IDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAodmFyX291dCk7DQorI2VuZGlmDQorfQ0KKyNlbmRpZg0KKw0KKy8qIExvbmcgbm9ybSwgICAgICAgICAgICAzMCAgKi8NCisjaWYgKE5PUk1fTF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IG5vcm1fbCAoV29yZDMyIExfdmFyMSkNCit7DQorI2lmIEFSTVY1VEVfTk9STV9MDQorCVdvcmQxNiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIkNNUCAgICAlW0xfdmFyMV0sICMwXG4iDQorCQkiQ0xaTkUgICVbcmVzdWx0XSwgJVtMX3ZhcjFdXG4iDQorCQkiU1VCTkUgICVbcmVzdWx0XSwgJVtyZXN1bHRdLCAjMVxuIiANCisJCSJNT1ZFUSAgJVtyZXN1bHRdLCAjMFxuIg0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W0xfdmFyMV0iciIoTF92YXIxKQ0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UNCisgICAgLy9Xb3JkMTYgdmFyX291dDsNCisNCisgICAgLy9pZiAoTF92YXIxID09IDApDQorICAgIC8vew0KKyAgICAvLyAgICB2YXJfb3V0ID0gMDsNCisgICAgLy99DQorICAgIC8vZWxzZQ0KKyAgICAvL3sNCisgICAgLy8gICAgaWYgKExfdmFyMSA9PSAoV29yZDMyKSAweGZmZmZmZmZmTCkNCisgICAgLy8gICAgew0KKyAgICAvLyAgICAgICAgdmFyX291dCA9IDMxOw0KKyAgICAvLyAgICB9DQorICAgIC8vICAgIGVsc2UNCisgICAgLy8gICAgew0KKyAgICAvLyAgICAgICAgaWYgKExfdmFyMSA8IDApDQorICAgIC8vICAgICAgICB7DQorICAgIC8vICAgICAgICAgICAgTF92YXIxID0gfkxfdmFyMTsNCisgICAgLy8gICAgICAgIH0NCisgICAgLy8gICAgICAgIGZvciAodmFyX291dCA9IDA7IExfdmFyMSA8IChXb3JkMzIpIDB4NDAwMDAwMDBMOyB2YXJfb3V0KyspDQorICAgIC8vICAgICAgICB7DQorICAgIC8vICAgICAgICAgICAgTF92YXIxIDw8PSAxOw0KKyAgICAvLyAgICAgICAgfQ0KKyAgICAvLyAgICB9DQorICAgIC8vfQ0KKyAgICAvL3JldHVybiAodmFyX291dCk7DQorICBXb3JkMTYgYTE2Ow0KKyAgV29yZDE2IHIgPSAwIDsgICAgICAgDQorDQorICAgDQorICBpZiAoIExfdmFyMSA8IDAgKSB7DQorICAgIExfdmFyMSA9IH5MX3ZhcjE7IA0KKyAgfQ0KKw0KKyAgaWYgKDAgPT0gKExfdmFyMSAmIDB4N2ZmZjgwMDApKSB7DQorICAgIGExNiA9IGV4dHJhY3RfbChMX3ZhcjEpOw0KKyAgICByICs9IDE2Ow0KKyAgICAgICANCisgICAgaWYgKDAgPT0gKGExNiAmIDB4N2Y4MCkpIHsNCisgICAgICByICs9IDg7DQorICAgICAgICAgDQorICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDA3OCkpIHsNCisgICAgICAgIHIgKz0gNDsNCisgICAgICAgICAgIA0KKyAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDAwNikpIHsNCisgICAgICAgICAgciArPSAyOw0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDAwMSkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDAwNCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgICAgZWxzZSB7DQorICAgICAgICAgICANCisgICAgICAgIGlmICgwID09IChhMTYgJiAweDAwNjApKSB7DQorICAgICAgICAgIHIgKz0gMjsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDAwMTApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDAwNDApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9IA0KKyAgICBlbHNlIHsgDQorICAgICAgICAgDQorICAgICAgaWYgKDAgPT0gKGExNiAmIDB4NzgwMCkpIHsNCisgICAgICAgIHIgKz0gNDsNCisgICAgICAgICAgIA0KKyAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDYwMCkpIHsNCisgICAgICAgICAgciArPSAyOw0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDEwMCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDQwMCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgICAgZWxzZSB7DQorICAgICAgICAgICANCisgICAgICAgIGlmICgwID09IChhMTYgJiAweDYwMDApKSB7DQorICAgICAgICAgIHIgKz0gMjsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDEwMDApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDQwMDApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9DQorICB9DQorICBlbHNlIHsNCisgICAgYTE2ID0gZXh0cmFjdF9oKExfdmFyMSk7DQorICAgICAgIA0KKyAgICBpZiAoMCA9PSAoYTE2ICYgMHg3ZjgwKSkgew0KKyAgICAgIHIgKz0gODsNCisgICAgICAgICANCisgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMDc4KSkgew0KKyAgICAgICAgciArPSA0IDsNCisgICAgICAgICAgIA0KKyAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDAwNikpIHsNCisgICAgICAgICAgciArPSAyOw0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDAwMSkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDAwNCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgICAgZWxzZSB7DQorICAgICAgICAgICANCisgICAgICAgIGlmICgwID09IChhMTYgJiAweDAwNjApKSB7DQorICAgICAgICAgIHIgKz0gMjsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDAwMTApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDAwNDApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9DQorICAgIGVsc2Ugew0KKyAgICAgICAgIA0KKyAgICAgIGlmICgwID09IChhMTYgJiAweDc4MDApKSB7DQorICAgICAgICByICs9IDQ7DQorICAgICAgICAgICANCisgICAgICAgIGlmICgwID09IChhMTYgJiAweDA2MDApKSB7DQorICAgICAgICAgIHIgKz0gMjsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDAxMDApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDA0MDApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgDQorICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHg2MDAwKSkgew0KKyAgICAgICAgICByICs9IDI7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgxMDAwKSkgew0KKyAgICAgICAgICAgIHIgKz0gMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHg0MDAwKSkgew0KKyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9DQorICB9DQorICANCisgIHJldHVybiByIDsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorLyogUm91bmQsICAgICAgICAgICAgICAgMSAgICovDQorI2lmIChST1VORF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IHJvdW5kMTYoV29yZDMyIExfdmFyMSkNCit7DQorI2lmIEFSTVY1VEVfUk9VTkQNCisJV29yZDE2IHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiTU9WICAgcjEsIzB4MDAwMDgwMDBcbiINCisJCSJRQUREICAlW3Jlc3VsdF0sICVbTF92YXIxXSwgcjFcbiINCisJCSJNT1YgICAlW3Jlc3VsdF0sICVbcmVzdWx0XSwgQVNSICMxNiBcbiIgDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbTF92YXIxXSJyIihMX3ZhcjEpDQorCQk6InIxIg0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UgICANCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIFdvcmQzMiBMX3JvdW5kZWQ7DQorDQorICAgIExfcm91bmRlZCA9IExfYWRkIChMX3ZhcjEsIChXb3JkMzIpIDB4MDAwMDgwMDBMKTsNCisgICAgdmFyX291dCA9IGV4dHJhY3RfaCAoTF9yb3VuZGVkKTsNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorLyogTWFjLCAgMSAgKi8NCisjaWYgKExfTUFDX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9tYWMgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorI2lmIEFSTVY1VEVfTF9NQUMNCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiU01VTEJCICVbcmVzdWx0XSwgJVt2YXIxXSwgJVt2YXIyXVxuIg0KKwkJIlFBREQJJVtyZXN1bHRdLCAlW3Jlc3VsdF0sICVbcmVzdWx0XVxuIg0KKwkJIlFBREQgICAlW3Jlc3VsdF0sICVbcmVzdWx0XSwgJVtMX3ZhcjNdXG4iDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTogW0xfdmFyM10iciIoTF92YXIzKSwgW3ZhcjFdInIiKHZhcjEpLCBbdmFyMl0iciIodmFyMikNCisJCSk7IA0KKwlyZXR1cm4gcmVzdWx0Ow0KKyNlbHNlDQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorICAgIFdvcmQzMiBMX3Byb2R1Y3Q7DQorDQorICAgIExfcHJvZHVjdCA9IExfbXVsdCh2YXIxLCB2YXIyKTsNCisgICAgTF92YXJfb3V0ID0gTF9hZGQgKExfdmFyMywgTF9wcm9kdWN0KTsNCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisjaWYgKExfQUREX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9hZGQgKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpDQorew0KKyNpZiBBUk1WNVRFX0xfQUREDQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIlFBREQgJVtyZXN1bHRdLCAlW0xfdmFyMV0sICVbTF92YXIyXVxuIg0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W0xfdmFyMV0iciIoTF92YXIxKSwgW0xfdmFyMl0iciIoTF92YXIyKQ0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UNCisgICAgV29yZDMyIExfdmFyX291dDsNCisNCisgICAgTF92YXJfb3V0ID0gTF92YXIxICsgTF92YXIyOw0KKyAgICBpZiAoKChMX3ZhcjEgXiBMX3ZhcjIpICYgTUlOXzMyKSA9PSAwKQ0KKyAgICB7DQorICAgICAgICBpZiAoKExfdmFyX291dCBeIExfdmFyMSkgJiBNSU5fMzIpDQorICAgICAgICB7DQorICAgICAgICAgICAgTF92YXJfb3V0ID0gKExfdmFyMSA8IDApID8gTUlOXzMyIDogTUFYXzMyOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorDQorDQorI2lmIChNVUxUX1JfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBtdWx0X3IgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKyAgICBXb3JkMzIgTF9wcm9kdWN0X2FycjsNCisNCisgICAgTF9wcm9kdWN0X2FyciA9IChXb3JkMzIpdmFyMSAqKFdvcmQzMil2YXIyOyAgICAgICAvKiBwcm9kdWN0ICovDQorICAgIExfcHJvZHVjdF9hcnIgKz0gKFdvcmQzMikweDAwMDA0MDAwTDsgICAgICAvKiByb3VuZCAqLw0KKyAgICBMX3Byb2R1Y3RfYXJyID4+PSAxNTsgICAgICAgLyogc2hpZnQgKi8NCisNCisgICAgdmFyX291dCA9IHNhdHVyYXRlKExfcHJvZHVjdF9hcnIpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisjaWYgKFNIUl9SX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgc2hyX3IgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBpZiAodmFyMiA+IDE1KQ0KKyAgICB7DQorICAgICAgICB2YXJfb3V0ID0gMDsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBzaHIodmFyMSwgdmFyMik7DQorDQorICAgICAgICBpZiAodmFyMiA+IDApDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKCh2YXIxICYgKChXb3JkMTYpIDEgPDwgKHZhcjIgLSAxKSkpICE9IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXJfb3V0Kys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKyNpZiAoTUFDX1JfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBtYWNfciAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIExfdmFyMyA9IExfbWFjIChMX3ZhcjMsIHZhcjEsIHZhcjIpOw0KKyAgICB2YXJfb3V0ID0gKFdvcmQxNikoKExfdmFyMyArIDB4ODAwMEwpID4+IDE2KTsNCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorI2lmIChNU1VfUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IG1zdV9yIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgTF92YXIzID0gTF9tc3UgKExfdmFyMywgdmFyMSwgdmFyMik7DQorICAgIHZhcl9vdXQgPSAoV29yZDE2KSgoTF92YXIzICsgMHg4MDAwTCkgPj4gMTYpOw0KKyAgICANCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorI2lmIChMX1NIUl9SX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9zaHJfciAoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKw0KKyAgICBpZiAodmFyMiA+IDMxKQ0KKyAgICB7DQorICAgICAgICBMX3Zhcl9vdXQgPSAwOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgTF92YXJfb3V0ID0gTF9zaHIoTF92YXIxLCB2YXIyKTsNCisNCisgICAgICAgIGlmICh2YXIyID4gMCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoKExfdmFyMSAmICgoV29yZDMyKSAxIDw8ICh2YXIyIC0gMSkpKSAhPSAwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgTF92YXJfb3V0Kys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorI2lmIChFWFRSQUNUX0hfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBleHRyYWN0X2ggKFdvcmQzMiBMX3ZhcjEpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgdmFyX291dCA9IChXb3JkMTYpIChMX3ZhcjEgPj4gMTYpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisjaWYgKEVYVFJBQ1RfTF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IGV4dHJhY3RfbChXb3JkMzIgTF92YXIxKQ0KK3sNCisJcmV0dXJuIChXb3JkMTYpIExfdmFyMTsNCit9DQorI2VuZGlmDQorDQorI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL2Jhc2ljb3AyLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL2Jhc2ljb3AyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBkNWRiYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3AvYmFzaWNvcDIuYwpAQCAtMCwwICsxLDE2MjQgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJhc2ljb3AyLmMNCisNCisJQ29udGVudDoJQmFzaWMgYXJpdGhtZXRpYyBvcGVyYXRvcnMuIA0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBzYXR1cmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMaW1pdCB0aGUgMzIgYml0IGlucHV0IHRvIHRoZSByYW5nZSBvZiBhIDE2IGJpdCB3b3JkLiAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIVNBVFJVQVRFX0lTX0lOTElORSkNCitXb3JkMTYgc2F0dXJhdGUoV29yZDMyIExfdmFyMSkNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBpZiAoTF92YXIxID4gMFgwMDAwN2ZmZkwpDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBNQVhfMTY7DQorICAgIH0NCisgICAgZWxzZSBpZiAoTF92YXIxIDwgKFdvcmQzMikgMHhmZmZmODAwMEwpDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBNSU5fMTY7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICB2YXJfb3V0ID0gZXh0cmFjdF9sKExfdmFyMSk7DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBhZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBQZXJmb3JtcyB0aGUgYWRkaXRpb24gKHZhcjErdmFyMikgd2l0aCBvdmVyZmxvdyBjb250cm9sIGFuZCBzYXR1cmF0aW9uO3wNCisgfCAgICB0aGUgMTYgYml0IHJlc3VsdCBpcyBzZXQgYXQgKzMyNzY3IHdoZW4gb3ZlcmZsb3cgb2NjdXJzIG9yIGF0IC0zMjc2OCAgIHwNCisgfCAgICB3aGVuIHVuZGVyZmxvdyBvY2N1cnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIUFERF9JU19JTkxJTkUpDQorV29yZDE2IGFkZCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIFdvcmQzMiBMX3N1bTsNCisNCisgICAgTF9zdW0gPSAoV29yZDMyKXZhcjEgKyAoV29yZDMyKXZhcjI7DQorICAgIHZhcl9vdXQgPSBzYXR1cmF0ZShMX3N1bSk7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgUGVyZm9ybXMgdGhlIHN1YnRyYWN0aW9uICh2YXIxK3ZhcjIpIHdpdGggb3ZlcmZsb3cgY29udHJvbCBhbmQgc2F0dS0gICB8DQorIHwgICAgcmF0aW9uOyB0aGUgMTYgYml0IHJlc3VsdCBpcyBzZXQgYXQgKzMyNzY3IHdoZW4gb3ZlcmZsb3cgb2NjdXJzIG9yIGF0ICB8DQorIHwgICAgLTMyNzY4IHdoZW4gdW5kZXJmbG93IG9jY3Vycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisjaWYgKCFTVUJfSVNfSU5MSU5FKQ0KK1dvcmQxNiBzdWIoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIFdvcmQzMiBMX2RpZmY7DQorDQorICAgIExfZGlmZiA9IChXb3JkMzIpIHZhcjEgLSB2YXIyOw0KKyAgICB2YXJfb3V0ID0gc2F0dXJhdGUoTF9kaWZmKTsNCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBhYnNfcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBBYnNvbHV0ZSB2YWx1ZSBvZiB2YXIxOyBhYnNfcygtMzI3NjgpID0gMzI3NjcuICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKy8vV29yZDE2IGFic19zIChXb3JkMTYgdmFyMSkNCisvL3sNCisvLyAgICBXb3JkMTYgdmFyX291dDsNCisvLw0KKy8vICAgIGlmICh2YXIxID09IE1JTl8xNikNCisvLyAgICB7DQorLy8gICAgICAgIHZhcl9vdXQgPSBNQVhfMTY7DQorLy8gICAgfQ0KKy8vICAgIGVsc2UNCisvLyAgICB7DQorLy8gICAgICAgIGlmICh2YXIxIDwgMCkNCisvLyAgICAgICAgew0KKy8vICAgICAgICAgICAgdmFyX291dCA9IChXb3JkMTYpLXZhcjE7DQorLy8gICAgICAgIH0NCisvLyAgICAgICAgZWxzZQ0KKy8vICAgICAgICB7DQorLy8gICAgICAgICAgICB2YXJfb3V0ID0gdmFyMTsNCisvLyAgICAgICAgfQ0KKy8vICAgIH0NCisvLw0KKy8vICAgIHJldHVybiAodmFyX291dCk7DQorLy99DQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBzaGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEFyaXRobWV0aWNhbGx5IHNoaWZ0IHRoZSAxNiBiaXQgaW5wdXQgdmFyMSBsZWZ0IHZhcjIgcG9zaXRpb25zLlplcm8gZmlsbHwNCisgfCAgIHRoZSB2YXIyIExTQiBvZiB0aGUgcmVzdWx0LiBJZiB2YXIyIGlzIG5lZ2F0aXZlLCBhcml0aG1ldGljYWxseSBzaGlmdCAgIHwNCisgfCAgIHZhcjEgcmlnaHQgYnkgLXZhcjIgd2l0aCBzaWduIGV4dGVuc2lvbi4gU2F0dXJhdGUgdGhlIHJlc3VsdCBpbiBjYXNlIG9mIHwNCisgfCAgIHVuZGVyZmxvd3Mgb3Igb3ZlcmZsb3dzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIVNITF9JU19JTkxJTkUpDQorV29yZDE2IHNobCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIFdvcmQzMiByZXN1bHQ7DQorDQorICAgIGlmICh2YXIyIDwgMCkNCisgICAgew0KKyAgICAgICAgaWYgKHZhcjIgPCAtMTYpDQorICAgICAgICAgICAgdmFyMiA9IC0xNjsNCisgICAgICAgIHZhcl9vdXQgPSBzaHIgKHZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgcmVzdWx0ID0gKFdvcmQzMikgdmFyMSAqKChXb3JkMzIpIDEgPDwgdmFyMik7DQorDQorICAgICAgICBpZiAoKHZhcjIgPiAxNSAmJiB2YXIxICE9IDApIHx8IChyZXN1bHQgIT0gKFdvcmQzMikgKChXb3JkMTYpIHJlc3VsdCkpKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIC8vT3ZlcmZsb3cgPSAxOw0KKyAgICAgICAgICAgIHZhcl9vdXQgPSAoV29yZDE2KSgodmFyMSA+IDApID8gTUFYXzE2IDogTUlOXzE2KTsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXJfb3V0ID0gZXh0cmFjdF9sKHJlc3VsdCk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorLy8gZW5kDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBzaHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEFyaXRobWV0aWNhbGx5IHNoaWZ0IHRoZSAxNiBiaXQgaW5wdXQgdmFyMSByaWdodCB2YXIyIHBvc2l0aW9ucyB3aXRoICAgIHwNCisgfCAgIHNpZ24gZXh0ZW5zaW9uLiBJZiB2YXIyIGlzIG5lZ2F0aXZlLCBhcml0aG1ldGljYWxseSBzaGlmdCB2YXIxIGxlZnQgYnkgIHwNCisgfCAgIC12YXIyIHdpdGggc2lnbiBleHRlbnNpb24uIFNhdHVyYXRlIHRoZSByZXN1bHQgaW4gY2FzZSBvZiB1bmRlcmZsb3dzIG9yIHwNCisgfCAgIG92ZXJmbG93cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIVNIUl9JU19JTkxJTkUpDQorV29yZDE2IHNociAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIGlmICh2YXIyIDwgMCkNCisgICAgew0KKyAgICAgICAgaWYgKHZhcjIgPCAtMTYpDQorICAgICAgICAgICAgdmFyMiA9IC0xNjsNCisgICAgICAgIHZhcl9vdXQgPSBzaGwgKHZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgaWYgKHZhcjIgPj0gMTUpDQorICAgICAgICB7DQorICAgICAgICAgICAgdmFyX291dCA9IChXb3JkMTYpKCh2YXIxIDwgMCkgPyAtMSA6IDApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICh2YXIxIDwgMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhcl9vdXQgPSAoV29yZDE2KSh+KCh+dmFyMSkgPj4gdmFyMikpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXJfb3V0ID0gKFdvcmQxNikodmFyMSA+PiB2YXIyKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBtdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBQZXJmb3JtcyB0aGUgbXVsdGlwbGljYXRpb24gb2YgdmFyMSBieSB2YXIyIGFuZCBnaXZlcyBhIDE2IGJpdCByZXN1bHQgIHwNCisgfCAgICB3aGljaCBpcyBzY2FsZWQgaS5lLjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICBtdWx0KHZhcjEsdmFyMikgPSBleHRyYWN0X2woTF9zaHIoKHZhcjEgdGltZXMgdmFyMiksMTUpKSBhbmQgIHwNCisgfCAgICAgICAgICAgICBtdWx0KC0zMjc2OCwtMzI3NjgpID0gMzI3NjcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpZiAoIU1VTFRfSVNfSU5MSU5FKQ0KK1dvcmQxNiBtdWx0IChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfcHJvZHVjdDsNCisNCisgICAgTF9wcm9kdWN0ID0gKFdvcmQzMikgdmFyMSAqKFdvcmQzMikgdmFyMjsNCisNCisgICAgTF9wcm9kdWN0ID0gKExfcHJvZHVjdCAmIChXb3JkMzIpIDB4ZmZmZjgwMDBMKSA+PiAxNTsNCisNCisgICAgaWYgKExfcHJvZHVjdCAmIChXb3JkMzIpIDB4MDAwMTAwMDBMKQ0KKyAgICAgICAgTF9wcm9kdWN0ID0gTF9wcm9kdWN0IHwgKFdvcmQzMikgMHhmZmZmMDAwMEw7DQorDQorICAgIHZhcl9vdXQgPSBzYXR1cmF0ZShMX3Byb2R1Y3QpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IExfbXVsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgTF9tdWx0IGlzIHRoZSAzMiBiaXQgcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiB2YXIxIHRpbWVzIHZhcjIgICAgfA0KKyB8ICAgd2l0aCBvbmUgc2hpZnQgbGVmdCBpLmUuOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICBMX211bHQodmFyMSx2YXIyKSA9IExfc2hsKCh2YXIxIHRpbWVzIHZhcjIpLDEpIGFuZCAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICBMX211bHQoLTMyNzY4LC0zMjc2OCkgPSAyMTQ3NDgzNjQ3LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghTF9NVUxUX0lTX0lOTElORSkNCitXb3JkMzIgTF9tdWx0KFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorDQorICAgIExfdmFyX291dCA9IChXb3JkMzIpIHZhcjEgKihXb3JkMzIpIHZhcjI7DQorDQorICAgIGlmIChMX3Zhcl9vdXQgIT0gKFdvcmQzMikgMHg0MDAwMDAwMEwpDQorICAgIHsNCisgICAgICAgIExfdmFyX291dCA8PD0gMTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIExfdmFyX291dCA9IE1BWF8zMjsNCisgICAgfQ0KKyAgICAgICAgDQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCit9DQorI2VuZGlmDQorLy8gZW5kDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBuZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE5lZ2F0ZSB2YXIxIHdpdGggc2F0dXJhdGlvbiwgc2F0dXJhdGUgaW4gdGhlIGNhc2Ugd2hlcmUgaW5wdXQgaXMgLTMyNzY4OnwNCisgfCAgICAgICAgICAgICAgICBuZWdhdGUodmFyMSkgPSBzdWIoMCx2YXIxKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKy8vV29yZDE2IG5lZ2F0ZSAoV29yZDE2IHZhcjEpDQorLy97DQorLy8gICAgV29yZDE2IHZhcl9vdXQ7DQorLy8NCisvLyAgICB2YXJfb3V0ID0gKFdvcmQxNikoKHZhcjEgPT0gTUlOXzE2KSA/IE1BWF8xNiA6IC12YXIxKTsNCisvLw0KKy8vICAgIHJldHVybiAodmFyX291dCk7DQorLy99DQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBleHRyYWN0X2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiB0aGUgMTYgTVNCIG9mIExfdmFyMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyICkgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpZiAoIUVYVFJBQ1RfSF9JU19JTkxJTkUpDQorV29yZDE2IGV4dHJhY3RfaCAoV29yZDMyIExfdmFyMSkNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICB2YXJfb3V0ID0gKFdvcmQxNikgKExfdmFyMSA+PiAxNik7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogZXh0cmFjdF9sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gdGhlIDE2IExTQiBvZiBMX3ZhcjEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMiApIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjEgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisjaWYgKCFFWFRSQUNUX0xfSVNfSU5MSU5FKQ0KK1dvcmQxNiBleHRyYWN0X2woV29yZDMyIExfdmFyMSkNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICB2YXJfb3V0ID0gKFdvcmQxNikgTF92YXIxOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IHJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUm91bmQgdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIDMyIGJpdCBpbnB1dCBudW1iZXIgaW50byB0aGUgTVMgMTYgYml0cyAgfA0KKyB8ICAgd2l0aCBzYXR1cmF0aW9uLiBTaGlmdCB0aGUgcmVzdWx0aW5nIGJpdHMgcmlnaHQgYnkgMTYgYW5kIHJldHVybiB0aGUgMTYgfA0KKyB8ICAgYml0IG51bWJlcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgcm91bmQoTF92YXIxKSA9IGV4dHJhY3RfaChMX2FkZChMX3ZhcjEsMzI3NjgpKSAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIgKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIxIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghUk9VTkRfSVNfSU5MSU5FKQ0KK1dvcmQxNiByb3VuZDE2KFdvcmQzMiBMX3ZhcjEpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfcm91bmRlZDsNCisNCisgICAgTF9yb3VuZGVkID0gTF9hZGQgKExfdmFyMSwgKFdvcmQzMikgMHgwMDAwODAwMEwpOw0KKyAgICB2YXJfb3V0ID0gZXh0cmFjdF9oIChMX3JvdW5kZWQpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisvLyBlbmQNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IExfbWFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgTXVsdGlwbHkgdmFyMSBieSB2YXIyIGFuZCBzaGlmdCB0aGUgcmVzdWx0IGxlZnQgYnkgMS4gQWRkIHRoZSAzMiBiaXQgICAgfA0KKyB8ICAgcmVzdWx0IHRvIExfdmFyMyB3aXRoIHNhdHVyYXRpb24sIHJldHVybiBhIDMyIGJpdCByZXN1bHQ6ICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICBMX21hYyhMX3ZhcjMsdmFyMSx2YXIyKSA9IExfYWRkKExfdmFyMyxMX211bHQodmFyMSx2YXIyKSkuICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMyAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghTF9NU1VfSVNfSU5MSU5FKQ0KK1dvcmQzMiBMX21hYyAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDMyIExfdmFyX291dDsNCisgICAgV29yZDMyIExfcHJvZHVjdDsNCisNCisgICAgTF9wcm9kdWN0ID0gTF9tdWx0KHZhcjEsIHZhcjIpOw0KKyAgICBMX3Zhcl9vdXQgPSBMX2FkZCAoTF92YXIzLCBMX3Byb2R1Y3QpOw0KKw0KKyAgICByZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9tc3UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBNdWx0aXBseSB2YXIxIGJ5IHZhcjIgYW5kIHNoaWZ0IHRoZSByZXN1bHQgbGVmdCBieSAxLiBTdWJ0cmFjdCB0aGUgMzIgICB8DQorIHwgICBiaXQgcmVzdWx0IHRvIExfdmFyMyB3aXRoIHNhdHVyYXRpb24sIHJldHVybiBhIDMyIGJpdCByZXN1bHQ6ICAgICAgICAgICB8DQorIHwgICAgICAgIExfbXN1KExfdmFyMyx2YXIxLHZhcjIpID0gTF9zdWIoTF92YXIzLExfbXVsdCh2YXIxLHZhcjIpKS4gICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIzICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCisjaWYgKCFMX01TVV9JU19JTkxJTkUpDQorV29yZDMyIExfbXN1IChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKyAgICBXb3JkMzIgTF9wcm9kdWN0Ow0KKw0KKyAgICBMX3Byb2R1Y3QgPSBMX211bHQodmFyMSwgdmFyMik7DQorICAgIExfdmFyX291dCA9IExfc3ViIChMX3ZhcjMsIExfcHJvZHVjdCk7DQorDQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX2FkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIDMyIGJpdHMgYWRkaXRpb24gb2YgdGhlIHR3byAzMiBiaXRzIHZhcmlhYmxlcyAoTF92YXIxK0xfdmFyMikgd2l0aCAgICAgIHwNCisgfCAgIG92ZXJmbG93IGNvbnRyb2wgYW5kIHNhdHVyYXRpb247IHRoZSByZXN1bHQgaXMgc2V0IGF0ICsyMTQ3NDgzNjQ3IHdoZW4gIHwNCisgfCAgIG92ZXJmbG93IG9jY3VycyBvciBhdCAtMjE0NzQ4MzY0OCB3aGVuIHVuZGVyZmxvdyBvY2N1cnMuICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjIgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpZiAoIUxfQUREX0lTX0lOTElORSkNCitXb3JkMzIgTF9hZGQgKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpDQorew0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKw0KKyAgICBMX3Zhcl9vdXQgPSBMX3ZhcjEgKyBMX3ZhcjI7DQorDQorICAgIGlmICgoKExfdmFyMSBeIExfdmFyMikgJiBNSU5fMzIpID09IDApDQorICAgIHsNCisgICAgICAgIGlmICgoTF92YXJfb3V0IF4gTF92YXIxKSAmIE1JTl8zMikNCisgICAgICAgIHsNCisgICAgICAgICAgICBMX3Zhcl9vdXQgPSAoTF92YXIxIDwgMCkgPyBNSU5fMzIgOiBNQVhfMzI7DQorICAgICAgICAgICAgLy9PdmVyZmxvdyA9IDE7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IExfc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgMzIgYml0cyBzdWJ0cmFjdGlvbiBvZiB0aGUgdHdvIDMyIGJpdHMgdmFyaWFibGVzIChMX3ZhcjEtTF92YXIyKSB3aXRoICAgfA0KKyB8ICAgb3ZlcmZsb3cgY29udHJvbCBhbmQgc2F0dXJhdGlvbjsgdGhlIHJlc3VsdCBpcyBzZXQgYXQgKzIxNDc0ODM2NDcgd2hlbiAgfA0KKyB8ICAgb3ZlcmZsb3cgb2NjdXJzIG9yIGF0IC0yMTQ3NDgzNjQ4IHdoZW4gdW5kZXJmbG93IG9jY3Vycy4gICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMiAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghTF9TVUJfSVNfSU5MSU5FKQ0KK1dvcmQzMiBMX3N1YihXb3JkMzIgTF92YXIxLCBXb3JkMzIgTF92YXIyKQ0KK3sNCisgICAgV29yZDMyIExfdmFyX291dDsNCisNCisgICAgTF92YXJfb3V0ID0gTF92YXIxIC0gTF92YXIyOw0KKw0KKyAgICBpZiAoKChMX3ZhcjEgXiBMX3ZhcjIpICYgTUlOXzMyKSAhPSAwKQ0KKyAgICB7DQorICAgICAgICBpZiAoKExfdmFyX291dCBeIExfdmFyMSkgJiBNSU5fMzIpDQorICAgICAgICB7DQorICAgICAgICAgICAgTF92YXJfb3V0ID0gKExfdmFyMSA8IDBMKSA/IE1JTl8zMiA6IE1BWF8zMjsNCisgICAgICAgICAgICAvL092ZXJmbG93ID0gMTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9uZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBOZWdhdGUgdGhlIDMyIGJpdCB2YXJpYWJsZSBMX3ZhcjEgd2l0aCBzYXR1cmF0aW9uOyBzYXR1cmF0ZSBpbiB0aGUgY2FzZSB8DQorIHwgICB3aGVyZSBpbnB1dCBpcyAtMjE0NzQ4MzY0OCAoMHg4MDAwIDAwMDApLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIxICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisvL1dvcmQzMiBMX25lZ2F0ZSAoV29yZDMyIExfdmFyMSkNCisvL3sNCisvLyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKy8vDQorLy8gICAgTF92YXJfb3V0ID0gKExfdmFyMSA9PSBNSU5fMzIpID8gTUFYXzMyIDogLUxfdmFyMTsNCisvLw0KKy8vICAgIHJldHVybiAoTF92YXJfb3V0KTsNCisvL30NCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IG11bHRfciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgU2FtZSBhcyBtdWx0IHdpdGggcm91bmRpbmcsIGkuZS46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICBtdWx0X3IodmFyMSx2YXIyKSA9IGV4dHJhY3RfbChMX3NocigoKHZhcjEgKiB2YXIyKSArIDE2Mzg0KSwxNSkpIGFuZCAgfA0KKyB8ICAgICBtdWx0X3IoLTMyNzY4LC0zMjc2OCkgPSAzMjc2Ny4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghTVVMVF9SX0lTX0lOTElORSkNCitXb3JkMTYgbXVsdF9yIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfcHJvZHVjdF9hcnI7DQorDQorICAgIExfcHJvZHVjdF9hcnIgPSAoV29yZDMyKSB2YXIxICooV29yZDMyKSB2YXIyOyAgICAgICAvKiBwcm9kdWN0ICovDQorICAgIExfcHJvZHVjdF9hcnIgKz0gKFdvcmQzMikgMHgwMDAwNDAwMEw7ICAgICAgLyogcm91bmQgKi8NCisgICAgTF9wcm9kdWN0X2FyciAmPSAoV29yZDMyKSAweGZmZmY4MDAwTDsNCisgICAgTF9wcm9kdWN0X2FyciA+Pj0gMTU7ICAgICAgIC8qIHNoaWZ0ICovDQorDQorICAgIGlmIChMX3Byb2R1Y3RfYXJyICYgKFdvcmQzMikgMHgwMDAxMDAwMEwpICAgLyogc2lnbiBleHRlbmQgd2hlbiBuZWNlc3NhcnkgKi8NCisgICAgew0KKyAgICAgICAgTF9wcm9kdWN0X2FyciB8PSAoV29yZDMyKSAweGZmZmYwMDAwTDsNCisgICAgfQ0KKyAgICB2YXJfb3V0ID0gc2F0dXJhdGUoTF9wcm9kdWN0X2Fycik7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9zaGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBBcml0aG1ldGljYWxseSBzaGlmdCB0aGUgMzIgYml0IGlucHV0IExfdmFyMSBsZWZ0IHZhcjIgcG9zaXRpb25zLiBaZXJvICB8DQorIHwgICBmaWxsIHRoZSB2YXIyIExTQiBvZiB0aGUgcmVzdWx0LiBJZiB2YXIyIGlzIG5lZ2F0aXZlLCBhcml0aG1ldGljYWxseSAgICB8DQorIHwgICBzaGlmdCBMX3ZhcjEgcmlnaHQgYnkgLXZhcjIgd2l0aCBzaWduIGV4dGVuc2lvbi4gU2F0dXJhdGUgdGhlIHJlc3VsdCBpbiB8DQorIHwgICBjYXNlIG9mIHVuZGVyZmxvd3Mgb3Igb3ZlcmZsb3dzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIxICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCisjaWYgKCFMX1NITF9JU19JTkxJTkUpDQorV29yZDMyIExfc2hsIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQzMiBMX3Zhcl9vdXQgPSAwTDsNCisNCisgICAgaWYgKHZhcjIgPD0gMCkNCisgICAgew0KKyAgICAgICAgTF92YXIxID0gTF9zaHIoTF92YXIxLCAoV29yZDE2KS12YXIyKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGZvciAoOyB2YXIyID4gMDsgdmFyMi0tKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmIChMX3ZhcjEgPiAoV29yZDMyKSAwWDNmZmZmZmZmTCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHJldHVybiBNQVhfMzI7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGlmIChMX3ZhcjEgPCAoV29yZDMyKSAweGMwMDAwMDAwTCkNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1JTl8zMjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBMX3ZhcjEgPDw9IDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIChMX3ZhcjEpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IExfc2hyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQXJpdGhtZXRpY2FsbHkgc2hpZnQgdGhlIDMyIGJpdCBpbnB1dCBMX3ZhcjEgcmlnaHQgdmFyMiBwb3NpdGlvbnMgd2l0aCAgfA0KKyB8ICAgc2lnbiBleHRlbnNpb24uIElmIHZhcjIgaXMgbmVnYXRpdmUsIGFyaXRobWV0aWNhbGx5IHNoaWZ0IExfdmFyMSBsZWZ0ICAgfA0KKyB8ICAgYnkgLXZhcjIgYW5kIHplcm8gZmlsbCB0aGUgLXZhcjIgTFNCIG9mIHRoZSByZXN1bHQuIFNhdHVyYXRlIHRoZSByZXN1bHQgfA0KKyB8ICAgaW4gY2FzZSBvZiB1bmRlcmZsb3dzIG9yIG92ZXJmbG93cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghTF9TSFJfSVNfSU5MSU5FKQ0KK1dvcmQzMiBMX3NociAoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKw0KKyAgICBpZiAodmFyMiA8IDApDQorICAgIHsNCisgICAgICAgIExfdmFyX291dCA9IExfc2hsIChMX3ZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgaWYgKHZhcjIgPj0gMzEpDQorICAgICAgICB7DQorICAgICAgICAgICAgTF92YXJfb3V0ID0gKExfdmFyMSA8IDBMKSA/IC0xIDogMDsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoTF92YXIxIDwgMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIExfdmFyX291dCA9IH4oKH5MX3ZhcjEpID4+IHZhcjIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBMX3Zhcl9vdXQgPSBMX3ZhcjEgPj4gdmFyMjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IHNocl9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgU2FtZSBhcyBzaHIodmFyMSx2YXIyKSBidXQgd2l0aCByb3VuZGluZy4gU2F0dXJhdGUgdGhlIHJlc3VsdCBpbiBjYXNlIG9mfA0KKyB8ICAgdW5kZXJmbG93cyBvciBvdmVyZmxvd3MgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIC0gSWYgdmFyMiBpcyBncmVhdGVyIHRoYW4gemVybyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgIGlmIChzdWIoc2hsKHNocih2YXIxLHZhcjIpLDEpLHNocih2YXIxLHN1Yih2YXIyLDEpKSkpICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgIGlzIGVxdWFsIHRvIHplcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgc2hyX3IodmFyMSx2YXIyKSA9IHNocih2YXIxLHZhcjIpICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgc2hyX3IodmFyMSx2YXIyKSA9IGFkZChzaHIodmFyMSx2YXIyKSwxKSAgICAgICAgICAgICAgfA0KKyB8ICAgIC0gSWYgdmFyMiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgc2hyX3IodmFyMSx2YXIyKSA9IHNocih2YXIxLHZhcjIpLiAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghU0hSX1JfSVNfSU5MSU5FKQ0KK1dvcmQxNiBzaHJfciAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIGlmICh2YXIyID4gMTUpDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSAwOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IHNociAodmFyMSwgdmFyMik7DQorDQorICAgICAgICBpZiAodmFyMiA+IDApDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKCh2YXIxICYgKChXb3JkMTYpIDEgPDwgKHZhcjIgLSAxKSkpICE9IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXJfb3V0Kys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogbWFjX3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBNdWx0aXBseSB2YXIxIGJ5IHZhcjIgYW5kIHNoaWZ0IHRoZSByZXN1bHQgbGVmdCBieSAxLiBBZGQgdGhlIDMyIGJpdCAgICB8DQorIHwgICByZXN1bHQgdG8gTF92YXIzIHdpdGggc2F0dXJhdGlvbi4gUm91bmQgdGhlIExTIDE2IGJpdHMgb2YgdGhlIHJlc3VsdCAgICB8DQorIHwgICBpbnRvIHRoZSBNUyAxNiBiaXRzIHdpdGggc2F0dXJhdGlvbiBhbmQgc2hpZnQgdGhlIHJlc3VsdCByaWdodCBieSAxNi4gICB8DQorIHwgICBSZXR1cm4gYSAxNiBiaXQgcmVzdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICBtYWNfcihMX3ZhcjMsdmFyMSx2YXIyKSA9IHJvdW5kKExfbWFjKExfdmFyMyx2YXIxLHZhcjIpKSAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIzICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgODAwMCA8PSBMX3Zhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisjaWYgKCFNQUNfUl9JU19JTkxJTkUpDQorV29yZDE2IG1hY19yIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgTF92YXIzID0gTF9tYWMgKExfdmFyMywgdmFyMSwgdmFyMik7DQorICAgIExfdmFyMyA9IExfYWRkIChMX3ZhcjMsIChXb3JkMzIpIDB4MDAwMDgwMDBMKTsNCisgICAgdmFyX291dCA9IGV4dHJhY3RfaCAoTF92YXIzKTsNCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBtc3VfciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE11bHRpcGx5IHZhcjEgYnkgdmFyMiBhbmQgc2hpZnQgdGhlIHJlc3VsdCBsZWZ0IGJ5IDEuIFN1YnRyYWN0IHRoZSAzMiAgIHwNCisgfCAgIGJpdCByZXN1bHQgdG8gTF92YXIzIHdpdGggc2F0dXJhdGlvbi4gUm91bmQgdGhlIExTIDE2IGJpdHMgb2YgdGhlIHJlcy0gIHwNCisgfCAgIHVsdCBpbnRvIHRoZSBNUyAxNiBiaXRzIHdpdGggc2F0dXJhdGlvbiBhbmQgc2hpZnQgdGhlIHJlc3VsdCByaWdodCBieSAgIHwNCisgfCAgIDE2LiBSZXR1cm4gYSAxNiBiaXQgcmVzdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgIG1zdV9yKExfdmFyMyx2YXIxLHZhcjIpID0gcm91bmQoTF9tc3UoTF92YXIzLHZhcjEsdmFyMikpICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjMgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCA4MDAwIDw9IExfdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpZiAoIU1TVV9SX0lTX0lOTElORSkNCitXb3JkMTYgbXN1X3IgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBMX3ZhcjMgPSBMX21zdSAoTF92YXIzLCB2YXIxLCB2YXIyKTsNCisgICAgTF92YXIzID0gTF9hZGQgKExfdmFyMywgKFdvcmQzMikgMHgwMDAwODAwMEwpOw0KKyAgICB2YXJfb3V0ID0gZXh0cmFjdF9oIChMX3ZhcjMpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IExfZGVwb3NpdF9oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRGVwb3NpdCB0aGUgMTYgYml0IHZhcjEgaW50byB0aGUgMTYgTVMgYml0cyBvZiB0aGUgMzIgYml0IG91dHB1dC4gVGhlICAgfA0KKyB8ICAgMTYgTFMgYml0cyBvZiB0aGUgb3V0cHV0IGFyZSB6ZXJvZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDdmZmYgMDAwMC4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorLy9Xb3JkMzIgTF9kZXBvc2l0X2ggKFdvcmQxNiB2YXIxKQ0KKy8vew0KKy8vICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorLy8NCisvLyAgICBMX3Zhcl9vdXQgPSAoV29yZDMyKSB2YXIxIDw8IDE2Ow0KKy8vDQorLy8gICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KKy8vfQ0KKw0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9kZXBvc2l0X2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBEZXBvc2l0IHRoZSAxNiBiaXQgdmFyMSBpbnRvIHRoZSAxNiBMUyBiaXRzIG9mIHRoZSAzMiBiaXQgb3V0cHV0LiBUaGUgICB8DQorIHwgICAxNiBNUyBiaXRzIG9mIHRoZSBvdXRwdXQgYXJlIHNpZ24gZXh0ZW5kZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweEZGRkYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisvL1dvcmQzMiBMX2RlcG9zaXRfbCAoV29yZDE2IHZhcjEpDQorLy97DQorLy8gICAgV29yZDMyIExfdmFyX291dDsNCisvLw0KKy8vICAgIExfdmFyX291dCA9IChXb3JkMzIpIHZhcjE7DQorLy8NCisvLyAgICByZXR1cm4gKExfdmFyX291dCk7DQorLy99DQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX3Nocl9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFNhbWUgYXMgTF9zaHIoTF92YXIxLHZhcjIpIGJ1dCB3aXRoIHJvdW5kaW5nLiBTYXR1cmF0ZSB0aGUgcmVzdWx0IGluICAgIHwNCisgfCAgIGNhc2Ugb2YgdW5kZXJmbG93cyBvciBvdmVyZmxvd3MgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAtIElmIHZhcjIgaXMgZ3JlYXRlciB0aGFuIHplcm8gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICBpZiAoTF9zdWIoTF9zaGwoTF9zaHIoTF92YXIxLHZhcjIpLDEpLExfc2hyKExfdmFyMSxzdWIodmFyMiwxKSkpKXwNCisgfCAgICAgICAgICBpcyBlcXVhbCB0byB6ZXJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgIHRoZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgIExfc2hyX3IoTF92YXIxLHZhcjIpID0gTF9zaHIoTF92YXIxLHZhcjIpICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgIExfc2hyX3IoTF92YXIxLHZhcjIpID0gTF9hZGQoTF9zaHIoTF92YXIxLHZhcjIpLDEpICAgIHwNCisgfCAgICAtIElmIHZhcjIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgIExfc2hyX3IoTF92YXIxLHZhcjIpID0gTF9zaHIoTF92YXIxLHZhcjIpLiAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IHZhcjEgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IHZhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpZiAoIUxfU0hSX1JfSVNfSU5MSU5FKQ0KK1dvcmQzMiBMX3Nocl9yIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorDQorICAgIGlmICh2YXIyID4gMzEpDQorICAgIHsNCisgICAgICAgIExfdmFyX291dCA9IDA7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBMX3Zhcl9vdXQgPSBMX3NociAoTF92YXIxLCB2YXIyKTsNCisNCisgICAgICAgIGlmICh2YXIyID4gMCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoKExfdmFyMSAmICgoV29yZDMyKSAxIDw8ICh2YXIyIC0gMSkpKSAhPSAwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgTF92YXJfb3V0Kys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX2FicyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBBYnNvbHV0ZSB2YWx1ZSBvZiBMX3ZhcjE7IFNhdHVyYXRlIGluIGNhc2Ugd2hlcmUgdGhlIGlucHV0IGlzICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0yMTQ3ODM2NDggIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IHZhcjEgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IHZhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKy8vV29yZDMyIExfYWJzIChXb3JkMzIgTF92YXIxKQ0KKy8vew0KKy8vICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorLy8NCisvLyAgICBpZiAoTF92YXIxID09IE1JTl8zMikNCisvLyAgICB7DQorLy8gICAgICAgIExfdmFyX291dCA9IE1BWF8zMjsNCisvLyAgICB9DQorLy8gICAgZWxzZQ0KKy8vICAgIHsNCisvLyAgICAgICAgaWYgKExfdmFyMSA8IDApDQorLy8gICAgICAgIHsNCisvLyAgICAgICAgICAgIExfdmFyX291dCA9IC1MX3ZhcjE7DQorLy8gICAgICAgIH0NCisvLyAgICAgICAgZWxzZQ0KKy8vICAgICAgICB7DQorLy8gICAgICAgICAgICBMX3Zhcl9vdXQgPSBMX3ZhcjE7DQorLy8gICAgICAgIH0NCisvLyAgICB9DQorLy8NCisvLyAgICByZXR1cm4gKExfdmFyX291dCk7DQorLy99DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBub3JtX3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFByb2R1Y2VzIHRoZSBudW1iZXIgb2YgbGVmdCBzaGlmdCBuZWVkZWQgdG8gbm9ybWFsaXplIHRoZSAxNiBiaXQgdmFyaWEtIHwNCisgfCAgIGJsZSB2YXIxIGZvciBwb3NpdGl2ZSB2YWx1ZXMgb24gdGhlIGludGVydmFsIHdpdGggbWluaW11bSBvZiAxNjM4NCBhbmQgIHwNCisgfCAgIG1heGltdW0gb2YgMzI3NjcsIGFuZCBmb3IgbmVnYXRpdmUgdmFsdWVzIG9uIHRoZSBpbnRlcnZhbCB3aXRoIG1pbmltdW0gIHwNCisgfCAgIG9mIC0zMjc2OCBhbmQgbWF4aW11bSBvZiAtMTYzODQ7IGluIG9yZGVyIHRvIG5vcm1hbGl6ZSB0aGUgcmVzdWx0LCB0aGUgIHwNCisgfCAgIGZvbGxvd2luZyBvcGVyYXRpb24gbXVzdCBiZSBkb25lIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgbm9ybV92YXIxID0gc2hsKHZhcjEsbm9ybV9zKHZhcjEpKS4gICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDAwMGYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIU5PUk1fU19JU19JTkxJTkUpDQorV29yZDE2IG5vcm1fcyAoV29yZDE2IHZhcjEpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgaWYgKHZhcjEgPT0gMCkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IDA7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBpZiAodmFyMSA9PSAtMSkNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXJfb3V0ID0gMTU7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKHZhcjEgPCAwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdmFyMSA9IChXb3JkMTYpfnZhcjE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvciAodmFyX291dCA9IDA7IHZhcjEgPCAweDQwMDA7IHZhcl9vdXQrKykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhcjEgPDw9IDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogZGl2X3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQcm9kdWNlcyBhIHJlc3VsdCB3aGljaCBpcyB0aGUgZnJhY3Rpb25hbCBpbnRlZ2VyIGRpdmlzaW9uIG9mIHZhcjEgIGJ5ICB8DQorIHwgICB2YXIyOyB2YXIxIGFuZCB2YXIyIG11c3QgYmUgcG9zaXRpdmUgYW5kIHZhcjIgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsICB8DQorIHwgICB0byB2YXIxOyB0aGUgcmVzdWx0IGlzIHBvc2l0aXZlIChsZWFkaW5nIGJpdCBlcXVhbCB0byAwKSBhbmQgdHJ1bmNhdGVkICB8DQorIHwgICB0byAxNiBiaXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJZiB2YXIxID0gdmFyMiB0aGVuIGRpdih2YXIxLHZhcjIpID0gMzI3NjcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8PSB2YXIxIDw9IHZhcjIgYW5kIHZhcjIgIT0gMC4gICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiB2YXIxIDw9IHZhcjIgPD0gMHgwMDAwIDdmZmYgYW5kIHZhcjIgIT0gMC4gICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgSXQncyBhIFExNSB2YWx1ZSAocG9pbnQgYmV0d2VlbiBiMTUgYW5kIGIxNCkuICAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCisjaWYgKCFESVZfU19JU19JTkxJTkUpDQorV29yZDE2IGRpdl9zIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dCA9IDA7DQorICAgIFdvcmQxNiBpdGVyYXRpb247DQorICAgIFdvcmQzMiBMX251bTsNCisgICAgV29yZDMyIExfZGVub207DQorDQorICAgIGlmICh2YXIxID09IDApDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSAwOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgaWYgKHZhcjEgPT0gdmFyMikNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXJfb3V0ID0gTUFYXzE2Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIExfbnVtID0gTF9kZXBvc2l0X2wgKHZhcjEpOw0KKyAgICAgICAgICAgIExfZGVub20gPSBMX2RlcG9zaXRfbCAodmFyMik7DQorDQorICAgICAgICAgICAgZm9yIChpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCAxNTsgaXRlcmF0aW9uKyspDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXJfb3V0IDw8PSAxOw0KKyAgICAgICAgICAgICAgICBMX251bSA8PD0gMTsNCisNCisgICAgICAgICAgICAgICAgaWYgKExfbnVtID49IExfZGVub20pDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAgIExfbnVtID0gTF9zdWIoTF9udW0sIExfZGVub20pOw0KKyAgICAgICAgICAgICAgICAgICAgdmFyX291dCA9IGFkZCAodmFyX291dCwgMSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBub3JtX2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFByb2R1Y2VzIHRoZSBudW1iZXIgb2YgbGVmdCBzaGlmdHMgbmVlZGVkIHRvIG5vcm1hbGl6ZSB0aGUgMzIgYml0IHZhcmlhLXwNCisgfCAgIGJsZSBMX3ZhcjEgZm9yIHBvc2l0aXZlIHZhbHVlcyBvbiB0aGUgaW50ZXJ2YWwgd2l0aCBtaW5pbXVtIG9mICAgICAgICAgIHwNCisgfCAgIDEwNzM3NDE4MjQgYW5kIG1heGltdW0gb2YgMjE0NzQ4MzY0NywgYW5kIGZvciBuZWdhdGl2ZSB2YWx1ZXMgb24gdGhlIGluLXwNCisgfCAgIHRlcnZhbCB3aXRoIG1pbmltdW0gb2YgLTIxNDc0ODM2NDggYW5kIG1heGltdW0gb2YgLTEwNzM3NDE4MjQ7IGluIG9yZGVyIHwNCisgfCAgIHRvIG5vcm1hbGl6ZSB0aGUgcmVzdWx0LCB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbiBtdXN0IGJlIGRvbmUgOiAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICBub3JtX0xfdmFyMSA9IExfc2hsKExfdmFyMSxub3JtX2woTF92YXIxKSkuICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IHZhcjEgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDAwMWYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIU5PUk1fTF9JU19JTkxJTkUpDQorV29yZDE2IG5vcm1fbCAoV29yZDMyIExfdmFyMSkNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBpZiAoTF92YXIxID09IDApDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSAwOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgaWYgKExfdmFyMSA9PSAoV29yZDMyKSAweGZmZmZmZmZmTCkNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXJfb3V0ID0gMzE7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKExfdmFyMSA8IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBMX3ZhcjEgPSB+TF92YXIxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKHZhcl9vdXQgPSAwOyBMX3ZhcjEgPCAoV29yZDMyKSAweDQwMDAwMDAwTDsgdmFyX291dCsrKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgTF92YXIxIDw8PSAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3Avb3Blcl8zMmIuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3Avb3Blcl8zMmIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDZhOWRmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC9vcGVyXzMyYi5jCkBAIC0wLDAgKzEsMzYxIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlvcGVyXzMyYi5jDQorDQorCUNvbnRlbnQ6CSAgVGhpcyBmaWxlIGNvbnRhaW5zIG9wZXJhdGlvbnMgaW4gZG91YmxlIHByZWNpc2lvbi4KKyANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAidHlwZWRlZi5oIgorI2luY2x1ZGUgImJhc2ljX29wLmgiCisjaW5jbHVkZSAib3Blcl8zMmIuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBGdW5jdGlvbiBMX0V4dHJhY3QoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgRXh0cmFjdCBmcm9tIGEgMzIgYml0IGludGVnZXIgdHdvIDE2IGJpdCBEUEYuICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIEFyZ3VtZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgTF8zMiAgICAgIDogMzIgYml0IGludGVnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAweDgwMDAgMDAwMCA8PSBMXzMyIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIGhpICAgICAgICA6IGIxNiB0byBiMzEgb2YgTF8zMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgbG8gICAgICAgIDogKExfMzIgLSBoaTw8MTYpPj4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCit2b2lkIExfRXh0cmFjdCAoV29yZDMyIExfMzIsIFdvcmQxNiAqaGksIFdvcmQxNiAqbG8pCit7CisgICAgKmhpID0gZXh0cmFjdF9oIChMXzMyKTsKKyAgICAqbG8gPSBleHRyYWN0X2wgKExfbXN1IChMX3NociAoTF8zMiwgMSksICpoaSwgMTYzODQpKTsKKyAgICByZXR1cm47Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgRnVuY3Rpb24gTF9Db21wKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIENvbXBvc2UgZnJvbSB0d28gMTYgYml0IERQRiBhIDMyIGJpdCBpbnRlZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBMXzMyID0gaGk8PDE2ICsgbG88PDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQXJndW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBoaSAgICAgICAgbXNiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIGxvICAgICAgICBsc2YgKHdpdGggc2lnbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgKgorICogICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMXzMyIDw9IDB4N2ZmZiBmZmYwLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworV29yZDMyIExfQ29tcCAoV29yZDE2IGhpLCBXb3JkMTYgbG8pCit7CisgICAgV29yZDMyIExfMzI7CisKKyAgICBMXzMyID0gTF9kZXBvc2l0X2ggKGhpKTsKKyAgICByZXR1cm4gKExfbWFjIChMXzMyLCBsbywgMSkpOyAgICAgICAvKiA9IGhpPDwxNiArIGxvPDwxICovCit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRnVuY3Rpb24gTXB5XzMyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgTXVsdGlwbHkgdHdvIDMyIGJpdCBpbnRlZ2VycyAoRFBGKS4gVGhlIHJlc3VsdCBpcyBkaXZpZGVkIGJ5IDIqKjMxICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIExfMzIgPSAoaGkxKmhpMik8PDEgKyAoIChoaTEqbG8yKT4+MTUgKyAobG8xKmhpMik+PjE1ICk8PDEgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBUaGlzIG9wZXJhdGlvbiBjYW4gYWxzbyBiZSB2aWV3ZWQgYXMgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHR3byBRMzEgICAgICAqCisgKiAgIG51bWJlciBhbmQgdGhlIHJlc3VsdCBpcyBhbHNvIGluIFEzMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogQXJndW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBoaTEgICAgICAgICBoaSBwYXJ0IG9mIGZpcnN0IG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIGxvMSAgICAgICAgIGxvIHBhcnQgb2YgZmlyc3QgbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgaGkyICAgICAgICAgaGkgcGFydCBvZiBzZWNvbmQgbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBsbzIgICAgICAgICBsbyBwYXJ0IG9mIHNlY29uZCBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK1dvcmQzMiBNcHlfMzIgKFdvcmQxNiBoaTEsIFdvcmQxNiBsbzEsIFdvcmQxNiBoaTIsIFdvcmQxNiBsbzIpCit7CisgICAgV29yZDMyIExfMzI7CisKKyAgICBMXzMyID0gTF9tdWx0IChoaTEsIGhpMik7CisgICAgTF8zMiA9IExfbWFjIChMXzMyLCBtdWx0IChoaTEsIGxvMiksIDEpOworICAgIExfMzIgPSBMX21hYyAoTF8zMiwgbXVsdCAobG8xLCBoaTIpLCAxKTsKKworICAgIHJldHVybiAoTF8zMik7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRnVuY3Rpb24gTXB5XzMyXzE2KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgTXVsdGlwbHkgYSAxNiBiaXQgaW50ZWdlciBieSBhIDMyIGJpdCAoRFBGKS4gVGhlIHJlc3VsdCBpcyBkaXZpZGVkICAgICAgKgorICogICBieSAyKioxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBMXzMyID0gKGhpMSpsbzIpPDwxICsgKChsbzEqbG8yKT4+MTUpPDwxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEFyZ3VtZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgaGkgICAgICAgICAgaGkgcGFydCBvZiAzMiBiaXQgbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBsbyAgICAgICAgICBsbyBwYXJ0IG9mIDMyIGJpdCBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIG4gICAgICAgICAgIDE2IGJpdCBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworV29yZDMyIE1weV8zMl8xNiAoV29yZDE2IGhpLCBXb3JkMTYgbG8sIFdvcmQxNiBuKQoreworICAgIFdvcmQzMiBMXzMyOworCisgICAgTF8zMiA9IExfbXVsdCAoaGksIG4pOworICAgIExfMzIgPSBMX21hYyAoTF8zMiwgbXVsdCAobG8sIG4pLCAxKTsKKworICAgIHJldHVybiAoTF8zMik7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIEZ1bmN0aW9uIE5hbWUgOiBEaXZfMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICBGcmFjdGlvbmFsIGludGVnZXIgZGl2aXNpb24gb2YgdHdvIDMyIGJpdCBudW1iZXJzLiAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIExfbnVtIC8gTF9kZW5vbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgTF9udW0gYW5kIExfZGVub20gbXVzdCBiZSBwb3NpdGl2ZSBhbmQgTF9udW0gPCBMX2Rlbm9tLiAgICAgICAqCisgKiAgICAgICAgICAgICBMX2Rlbm9tID0gZGVub21faGk8PDE2ICsgZGVub21fbG88PDEgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIGRlbm9tX2hpIGlzIGEgbm9ybWFsaXplIG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgTF9udW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgICoKKyAqICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDAwMDAgPCBMX251bSA8IExfZGVub20gICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICBMX2Rlbm9tID0gZGVub21faGk8PDE2ICsgZGVub21fbG88PDEgICAgICAoRFBGKSAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgZGVub21faGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAxNiBiaXQgcG9zaXRpdmUgbm9ybWFsaXplZCBpbnRlZ2VyIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgICoKKyAqICAgICAgICAgICAgIHJhbmdlIDogMHg0MDAwIDwgaGkgPCAweDdmZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgZGVub21fbG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAxNiBiaXQgcG9zaXRpdmUgaW50ZWdlciB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIHJhbmdlIDogMCA8IGxvIDwgMHg3ZmZmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgTF9kaXYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgICoKKyAqICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDAwMDAgPD0gTF9kaXYgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQWxnb3JpdGhtOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIC0gZmluZCA9IDEvTF9kZW5vbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgIEZpcnN0IGFwcHJveGltYXRpb246IGFwcHJveCA9IDEgLyBkZW5vbV9oaSAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgMS9MX2Rlbm9tID0gYXBwcm94ICogKDIuMCAtIExfZGVub20gKiBhcHByb3ggKSAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgLSAgcmVzdWx0ID0gTF9udW0gKiAoMS9MX2Rlbm9tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworV29yZDMyIERpdl8zMiAoV29yZDMyIExfbnVtLCBXb3JkMzIgZGVub20pCit7CisgICAgV29yZDE2IGFwcHJveDsKKyAgICBXb3JkMzIgTF8zMjsKKyAgICAvKiBGaXJzdCBhcHByb3hpbWF0aW9uOiAxIC8gTF9kZW5vbSA9IDEvZGVub21faGkgKi8KKworICAgIGFwcHJveCA9IGRpdl9zICgoV29yZDE2KSAweDNmZmYsIGRlbm9tID4+IDE2KTsKKworICAgIC8qIDEvTF9kZW5vbSA9IGFwcHJveCAqICgyLjAgLSBMX2Rlbm9tICogYXBwcm94KSAqLworCisgICAgTF8zMiA9IExfbXB5X2xzIChkZW5vbSwgYXBwcm94KTsKKworICAgIExfMzIgPSBMX3N1YiAoKFdvcmQzMikgMHg3ZmZmZmZmZkwsIExfMzIpOworCisJTF8zMiA9IExfbXB5X2xzIChMXzMyLCBhcHByb3gpOworICAgIC8qIExfbnVtICogKDEvTF9kZW5vbSkgKi8KKworCUxfMzIgPSBNVUxISUdIKExfMzIsIExfbnVtKTsKKyAgICBMXzMyID0gTF9zaGwgKExfMzIsIDMpOworCisgICAgcmV0dXJuIChMXzMyKTsKK30KKw0KKy8qIQ0KKyANCisgIFxicmllZiAgY2FsY3VsYXRlcyB0aGUgbG9nIGR1YWxpcyB0aW1lcyA0IG9mIGFyZ3VtZW50IA0KKyAgICAgICAgICBpTG9nNCh4KSA9IChXb3JkMzIpKDQgKiBsb2codmFsdWUpL2xvZygyLjApKQ0KKw0KKyAgXHJldHVybiBpbG9nNCB2YWx1ZQ0KKyANCisqLw0KK1dvcmQxNiBpTG9nNChXb3JkMzIgdmFsdWUpDQorew0KKyAgV29yZDE2IGlMb2c0Ow0KKw0KKyAgaWYodmFsdWUgIT0gMCl7DQorICAgIFdvcmQzMiB0bXA7DQorICAgIFdvcmQxNiB0bXAxNjsNCisgICAgaUxvZzQgPSBub3JtX2wodmFsdWUpOw0KKyAgICB0bXAgPSAodmFsdWUgPDwgaUxvZzQpOw0KKyAgICB0bXAxNiA9IHJvdW5kMTYodG1wKTsNCisgICAgdG1wID0gTF9tdWx0KHRtcDE2LCB0bXAxNik7DQorICAgIHRtcDE2ID0gcm91bmQxNih0bXApOw0KKyAgICB0bXAgPSBMX211bHQodG1wMTYsIHRtcDE2KTsNCisgICAgdG1wMTYgPSByb3VuZDE2KHRtcCk7DQorDQorICAgIGlMb2c0ID0gKC0oaUxvZzQgPDwgMikgLSBub3JtX3ModG1wMTYpKSAtIDE7DQorICB9DQorICBlbHNlIHsNCisgICAgaUxvZzQgPSAtMTI4OyAvKiAtKElOVF9CSVRTKjQpOyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgfQ0KKw0KKyAgcmV0dXJuIGlMb2c0Ow0KK30NCisNCisjZGVmaW5lIHN0ZXAoc2hpZnQpIFwNCisgICAgaWYgKCgweDQwMDAwMDAwbCA+PiBzaGlmdCkgKyByb290IDw9IHZhbHVlKSAgICAgICBcDQorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgdmFsdWUgLT0gKDB4NDAwMDAwMDBsID4+IHNoaWZ0KSArIHJvb3Q7ICAgICAgIFwNCisgICAgICAgIHJvb3QgPSAocm9vdCA+PiAxKSB8ICgweDQwMDAwMDAwbCA+PiBzaGlmdCk7ICBcDQorICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgcm9vdCA9IHJvb3QgPj4gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgfQ0KKw0KK1dvcmQzMiByc3FydChXb3JkMzIgdmFsdWUsICAgICAvKiE8IE9wZXJhbmQgdG8gc3F1YXJlIHJvb3QgKDAuMCAuLi4gMSkgKi8NCisgICAgICAgICAgICAgV29yZDMyIGFjY3VyYWN5KSAgLyohPCBOdW1iZXIgb2YgdmFsaWQgYml0cyB0aGF0IHdpbGwgYmUgY2FsY3VsYXRlZCAqLw0KK3sNCisgICAgV29yZDMyIHJvb3QgPSAwOw0KKwlXb3JkMzIgc2NhbGU7DQorDQorCWlmKHZhbHVlIDwgMCkNCisJCXJldHVybiAwOw0KKw0KKwlzY2FsZSA9IG5vcm1fbCh2YWx1ZSk7DQorCWlmKHNjYWxlICYgMSkgc2NhbGUtLTsNCisNCisJdmFsdWUgPDw9IHNjYWxlOw0KKw0KKwlzdGVwKCAwKTsgc3RlcCggMik7IHN0ZXAoIDQpOyBzdGVwKCA2KTsNCisgICAgc3RlcCggOCk7IHN0ZXAoMTApOyBzdGVwKDEyKTsgc3RlcCgxNCk7DQorICAgIHN0ZXAoMTYpOyBzdGVwKDE4KTsgc3RlcCgyMCk7IHN0ZXAoMjIpOw0KKyAgICBzdGVwKDI0KTsgc3RlcCgyNik7IHN0ZXAoMjgpOyBzdGVwKDMwKTsNCisNCisgICAgc2NhbGUgPj49IDE7DQorCWlmIChyb290IDwgdmFsdWUpDQorICAgICAgICArK3Jvb3Q7DQorDQorCXJvb3QgPj49IHNjYWxlOw0KKyAgICByZXR1cm4gcm9vdCogNDYzMzQ7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBXb3JkMzIgcG93MlRhYmxlW1BPVzJfVEFCTEVfU0laRV0gPSB7DQorMHg3ZmZmZmZmZiwgMHg3ZmE3NjVhZCwgMHg3ZjRmMDhhZSwgMHg3ZWY2ZThkYSwgDQorMHg3ZTlmMDYwNiwgMHg3ZTQ3NjAwOSwgMHg3ZGVmZjZiNiwgMHg3ZDk4YzllNiwgDQorMHg3ZDQxZDk2ZSwgMHg3Y2ViMjUyMywgMHg3Yzk0YWNkZSwgMHg3YzNlNzA3MywgDQorMHg3YmU4NmZiOSwgMHg3YjkyYWE4OCwgMHg3YjNkMjBiNiwgMHg3YWU3ZDIxYSwgDQorMHg3YTkyYmU4YiwgMHg3YTNkZTVkZiwgMHg3OWU5NDdlZiwgMHg3OTk0ZTQ5MiwgDQorMHg3OTQwYmI5ZSwgMHg3OGVjY2NlYywgMHg3ODk5MTg1NCwgMHg3ODQ1OWRhYywgDQorMHg3N2YyNWNjZSwgMHg3NzlmNTU5MSwgMHg3NzRjODdjYywgMHg3NmY5ZjM1OSwgDQorMHg3NmE3OTgwZiwgMHg3NjU1NzVjOCwgMHg3NjAzOGM1YiwgMHg3NWIxZGJhMiwgDQorMHg3NTYwNjM3NCwgMHg3NTBmMjNhYiwgMHg3NGJlMWMyMCwgMHg3NDZkNGNhYywgDQorMHg3NDFjYjUyOCwgMHg3M2NjNTU2ZCwgMHg3MzdjMmQ1NSwgMHg3MzJjM2NiYSwgDQorMHg3MmRjODM3NCwgMHg3MjhkMDE1ZCwgMHg3MjNkYjY1MCwgMHg3MWVlYTIyNiwgDQorMHg3MTlmYzRiOSwgMHg3MTUxMWRlNCwgMHg3MTAyYWQ4MCwgMHg3MGI0NzM2OCwgDQorMHg3MDY2NmY3NiwgMHg3MDE4YTE4NSwgMHg2ZmNiMDk2ZiwgMHg2ZjdkYTcxMCwgDQorMHg2ZjMwN2E0MSwgMHg2ZWUzODJkZSwgMHg2ZTk2YzBjMywgMHg2ZTRhMzNjOSwgDQorMHg2ZGZkZGJjYywgMHg2ZGIxYjhhOCwgMHg2ZDY1Y2EzOCwgMHg2ZDFhMTA1NywgDQorMHg2Y2NlOGFlMSwgMHg2YzgzMzliMiwgMHg2YzM4MWNhNiwgMHg2YmVkMzM5OCwgDQorMHg2YmEyN2U2NiwgMHg2YjU3ZmNlOSwgMHg2YjBkYWVmZiwgMHg2YWMzOTQ4NSwgDQorMHg2YTc5YWQ1NiwgMHg2YTJmZjk0ZiwgMHg2OWU2Nzg0ZCwgMHg2OTlkMmEyYywgDQorMHg2OTU0MGVjOSwgMHg2OTBiMjYwMSwgMHg2OGMyNmZiMSwgMHg2ODc5ZWJiNiwgDQorMHg2ODMxOTllZCwgMHg2N2U5N2EzNCwgMHg2N2ExOGM2OCwgMHg2NzU5ZDA2NSwgDQorMHg2NzEyNDYwYiwgMHg2NmNhZWQzNSwgMHg2NjgzYzVjMywgMHg2NjNjY2Y5MiwgDQorMHg2NWY2MGE4MCwgMHg2NWFmNzY2YSwgMHg2NTY5MTMyZiwgMHg2NTIyZTBhZCwgDQorMHg2NGRjZGVjMywgMHg2NDk3MGQ0ZiwgMHg2NDUxNmMyZSwgMHg2NDBiZmI0MSwgDQorMHg2M2M2YmE2NCwgMHg2MzgxYTk3OCwgMHg2MzNjYzg1YiwgMHg2MmY4MTZlYiwgDQorMHg2MmIzOTUwOSwgMHg2MjZmNDI5MiwgMHg2MjJiMWY2NiwgMHg2MWU3MmI2NSwgDQorMHg2MWEzNjY2ZCwgMHg2MTVmZDA1ZiwgMHg2MTFjNjkxOSwgMHg2MGQ5MzA3YiwgDQorMHg2MDk2MjY2NSwgMHg2MDUzNGFiNywgMHg2MDEwOWQ1MSwgMHg1ZmNlMWUxMiwgDQorMHg1ZjhiY2NkYiwgMHg1ZjQ5YTk4YywgMHg1ZjA3YjQwNSwgMHg1ZWM1ZWMyNiwgDQorMHg1ZTg0NTFkMCwgMHg1ZTQyZTRlMywgMHg1ZTAxYTU0MCwgMHg1ZGMwOTJjNywgDQorMHg1ZDdmYWQ1OSwgMHg1ZDNlZjRkNywgMHg1Y2ZlNjkyMywgMHg1Y2JlMGExYywgDQorMHg1YzdkZDdhNCwgMHg1YzNkZDE5YywgMHg1YmZkZjdlNSwgMHg1YmJlNGE2MSwgDQorMHg1YjdlYzhmMiwgMHg1YjNmNzM3NywgMHg1YjAwNDlkNCwgMHg1YWMxNGJlYSwgDQorMHg1YTgyNzk5YSwgMHg1YTQzZDJjNiwgMHg1YTA1NTc1MSwgMHg1OWM3MDcxYywgDQorMHg1OTg4ZTIwOSwgMHg1OTRhZTdmYiwgMHg1OTBkMThkMywgMHg1OGNmNzQ3NCwgDQorMHg1ODkxZmFjMSwgMHg1ODU0YWI5YiwgMHg1ODE3ODZlNiwgMHg1N2RhOGM4MywgDQorMHg1NzlkYmM1NywgMHg1NzYxMTY0MiwgMHg1NzI0OWEyOSwgMHg1NmU4NDdlZiwgDQorMHg1NmFjMWY3NSwgMHg1NjcwMjBhMCwgMHg1NjM0NGI1MiwgMHg1NWY4OWY3MCwgDQorMHg1NWJkMWNkYiwgMHg1NTgxYzM3OCwgMHg1NTQ2OTMyOSwgMHg1NTBiOGJkNCwgDQorMHg1NGQwYWQ1YiwgMHg1NDk1ZjdhMSwgMHg1NDViNmE4YiwgMHg1NDIxMDVmZCwgDQorMHg1M2U2YzlkYiwgMHg1M2FjYjYwNywgMHg1MzcyY2E2OCwgMHg1MzM5MDZlMCwgDQorMHg1MmZmNmI1NSwgMHg1MmM1ZjdhYSwgMHg1MjhjYWJjMywgMHg1MjUzODc4NiwgDQorMHg1MjFhOGFkNywgMHg1MWUxYjU5YSwgMHg1MWE5MDdiNCwgMHg1MTcwODEwYiwgDQorMHg1MTM4MjE4MiwgMHg1MGZmZThmZSwgMHg1MGM3ZDc2NSwgMHg1MDhmZWM5YywgDQorMHg1MDU4Mjg4OCwgMHg1MDIwOGIwZSwgMHg0ZmU5MTQxMywgMHg0ZmIxYzM3YywgDQorMHg0ZjdhOTkzMCwgMHg0ZjQzOTUxNCwgMHg0ZjBjYjcwYywgMHg0ZWQ1ZmYwMCwgDQorMHg0ZTlmNmNkNCwgMHg0ZTY5MDA2ZSwgMHg0ZTMyYjliNCwgMHg0ZGZjOTg4YywgDQorMHg0ZGM2OWNkZCwgMHg0ZDkwYzY4YiwgMHg0ZDViMTU3ZSwgMHg0ZDI1ODk5YywgDQorMHg0Y2YwMjJjYSwgMHg0Y2JhZTBlZiwgMHg0Yzg1YzNmMSwgMHg0YzUwY2JiOCwgDQorMHg0YzFiZjgyOSwgMHg0YmU3NDkyYiwgMHg0YmIyYmVhNSwgMHg0YjdlNTg3ZCwgDQorMHg0YjRhMTY5YywgMHg0YjE1ZjhlNiwgMHg0YWUxZmY0MywgMHg0YWFlMjk5YiwgDQorMHg0YTdhNzdkNSwgMHg0YTQ2ZTlkNiwgMHg0YTEzN2Y4OCwgMHg0OWUwMzhkMCwgDQorMHg0OWFkMTU5OCwgMHg0OTdhMTVjNCwgMHg0OTQ3MzkzZiwgMHg0OTE0N2ZlZSwgDQorMHg0OGUxZTliYSwgMHg0OGFmNzY4YSwgMHg0ODdkMjY0NiwgMHg0ODRhZjhkNiwgDQorMHg0ODE4ZWUyMiwgMHg0N2U3MDYxMSwgMHg0N2I1NDA4YywgMHg0NzgzOWQ3YiwgDQorMHg0NzUyMWNjNiwgMHg0NzIwYmU1NSwgMHg0NmVmODIxMCwgMHg0NmJlNjdlMCwgDQorMHg0NjhkNmZhZSwgMHg0NjVjOTk2MSwgMHg0NjJiZTRlMiwgMHg0NWZiNTIxYSwgDQorMHg0NWNhZTBmMiwgMHg0NTlhOTE1MiwgMHg0NTZhNjMyMywgMHg0NTNhNTY0ZCwgDQorMHg0NTBhNmFiYiwgMHg0NGRhYTA1NCwgMHg0NGFhZjcwMiwgMHg0NDdiNmVhZCwgDQorMHg0NDRjMDc0MCwgMHg0NDFjYzBhMywgMHg0M2VkOWFjMCwgMHg0M2JlOTU4MCwgDQorMHg0MzhmYjBjYiwgMHg0MzYwZWM4ZCwgMHg0MzMyNDhhZSwgMHg0MzAzYzUxNywgDQorMHg0MmQ1NjFiNCwgMHg0MmE3MWU2YywgMHg0Mjc4ZmIyYiwgMHg0MjRhZjdkYSwgDQorMHg0MjFkMTQ2MiwgMHg0MWVmNTBhZSwgMHg0MWMxYWNhOCwgMHg0MTk0MjgzOSwgDQorMHg0MTY2YzM0YywgMHg0MTM5N2RjYywgMHg0MTBjNTdhMiwgMHg0MGRmNTBiOCwgDQorMHg0MGIyNjhmYSwgMHg0MDg1YTA1MSwgMHg0MDU4ZjZhOCwgMHg0MDJjNmJlOSANCit9Ow0KKw0KKy8qIQ0KKyANCisgIFxicmllZiBjYWxjdWxhdGVzIDIgXiAoeC95KSBmb3IgeDw9MCwgeSA+IDAsIHggPD0gMzI3NjggKiB5IA0KKyAgDQorICBhdm9pZHMgaW50ZWdlciBkaXZpc2lvbg0KKyAgDQorICBccmV0dXJuIA0KKyovDQorV29yZDMyIHBvdzJfeHkoV29yZDMyIHgsIFdvcmQzMiB5KQ0KK3sNCisgIFdvcmQzMiBpUGFydDsNCisgIFdvcmQzMiBmUGFydDsNCisgIFdvcmQzMiByZXM7DQorICBXb3JkMzIgdG1wLCB0bXAyOw0KKyAgV29yZDMyIHNoaWZ0LCBzaGlmdDI7DQorDQorICB0bXAyID0gLXg7DQorICBpUGFydCA9IHRtcDIgLyB5Ow0KKyAgZlBhcnQgPSB0bXAyIC0gaVBhcnQqeTsNCisgIGlQYXJ0ID0gbWluKGlQYXJ0LElOVF9CSVRTLTEpOw0KKw0KKyAgcmVzID0gcG93MlRhYmxlWyhQT1cyX1RBQkxFX1NJWkUqZlBhcnQpL3ldID4+IGlQYXJ0OyANCisgDQorICByZXR1cm4ocmVzKTsNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC9vcGVyXzMyYi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC9vcGVyXzMyYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMTliYzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL29wZXJfMzJiLmgKQEAgLTAsMCArMSw4OSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJb3Blcl8zMmIuaA0KKw0KKwlDb250ZW50OglEb3VibGUgcHJlY2lzaW9uIG9wZXJhdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fT1BFUl8zMmJfSAorI2RlZmluZSBfX09QRVJfMzJiX0gKKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisNCisjZGVmaW5lIFBPVzJfVEFCTEVfQklUUyA4DQorI2RlZmluZSBQT1cyX1RBQkxFX1NJWkUgKDE8PFBPVzJfVEFCTEVfQklUUykNCisKK3ZvaWQgTF9FeHRyYWN0IChXb3JkMzIgTF8zMiwgV29yZDE2ICpoaSwgV29yZDE2ICpsbyk7CitXb3JkMzIgTF9Db21wIChXb3JkMTYgaGksIFdvcmQxNiBsbyk7CitXb3JkMzIgTXB5XzMyIChXb3JkMTYgaGkxLCBXb3JkMTYgbG8xLCBXb3JkMTYgaGkyLCBXb3JkMTYgbG8yKTsKK1dvcmQzMiBNcHlfMzJfMTYgKFdvcmQxNiBoaSwgV29yZDE2IGxvLCBXb3JkMTYgbik7CitXb3JkMzIgRGl2XzMyIChXb3JkMzIgTF9udW0sIFdvcmQzMiBkZW5vbSk7CitXb3JkMTYgaUxvZzQoV29yZDMyIHZhbHVlKTsNCitXb3JkMzIgcnNxcnQoV29yZDMyIHZhbHVlLCAgV29yZDMyIGFjY3VyYWN5KTsNCitXb3JkMzIgcG93Ml94eShXb3JkMzIgeCwgV29yZDMyIHkpOw0KKw0KK19faW5saW5lIFdvcmQzMiBMX21weV9scyhXb3JkMzIgTF92YXIyLCBXb3JkMTYgdmFyMSkNCit7DQorICAgIHVuc2lnbmVkIHNob3J0IHN3TG93MTsNCisgICAgV29yZDE2IHN3SGlnaDE7DQorICAgIFdvcmQzMiBsX3Zhcl9vdXQ7DQorDQorICAgIHN3TG93MSA9ICh1bnNpZ25lZCBzaG9ydCkoTF92YXIyKTsNCisgICAgc3dIaWdoMSA9IChXb3JkMTYpKExfdmFyMiA+PiAxNik7DQorDQorICAgIGxfdmFyX291dCA9IChsb25nKXN3TG93MSAqIChsb25nKXZhcjEgPj4gMTU7DQorICAgIA0KKyAgICBsX3Zhcl9vdXQgKz0gc3dIaWdoMSAqIHZhcjEgPDwgMTsNCisgICAgDQorICAgIHJldHVybihsX3Zhcl9vdXQpOw0KK30NCisNCitfX2lubGluZSBXb3JkMzIgTF9tcHlfd3goV29yZDMyIExfdmFyMiwgV29yZDE2IHZhcjEpDQorew0KKyNpZiBBUk1WNVRFX0xfTVBZX0xTDQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIlNNVUxXQiAgJVtyZXN1bHRdLCAlW0xfdmFyMl0sICVbdmFyMV0gXG4iIA0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W0xfdmFyMl0iciIoTF92YXIyKSwgW3ZhcjFdInIiKHZhcjEpDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICB1bnNpZ25lZCBzaG9ydCBzd0xvdzE7DQorICAgIFdvcmQxNiBzd0hpZ2gxOw0KKyAgICBXb3JkMzIgbF92YXJfb3V0Ow0KKw0KKyAgICBzd0xvdzEgPSAodW5zaWduZWQgc2hvcnQpKExfdmFyMik7DQorICAgIHN3SGlnaDEgPSAoV29yZDE2KShMX3ZhcjIgPj4gMTYpOw0KKw0KKyAgICBsX3Zhcl9vdXQgPSAobG9uZylzd0xvdzEgKiAobG9uZyl2YXIxID4+IDE2OyAgICANCisgICAgbF92YXJfb3V0ICs9IHN3SGlnaDEgKiB2YXIxOw0KKyAgICANCisgICAgcmV0dXJuKGxfdmFyX291dCk7DQorI2VuZGlmDQorfQ0KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL3R5cGVkZWYuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3AvdHlwZWRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYTYyNmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL3R5cGVkZWYuaApAQCAtMCwwICsxLDYzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl0eXBlZGVmLmgNCisNCisJQ29udGVudDoJdHlwZSBkZWZpbmVkIGZvciBkZWZmZXJlbnQgcGFsdGZvcm0NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIHR5cGVkZWZfaAorI2RlZmluZSB0eXBlZGVmX2ggIiRJZCAkIgorCisjdW5kZWYgT1JJR0lOQUxfVFlQRURFRl9IIC8qIGRlZmluZSB0byBnZXQgIm9yaWdpbmFsIiBFVFNJIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdHlwZWRlZi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmZGVmIE9SSUdJTkFMX1RZUEVERUZfSAorLyoKKyAqIHRoaXMgaXMgdGhlIG9yaWdpbmFsIGNvZGUgZnJvbSB0aGUgRVRTSSBmaWxlIHR5cGVkZWYuaAorICovCisgICAKKyNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1pUQ19fKQordHlwZWRlZiBzaWduZWQgY2hhciBXb3JkODsKK3R5cGVkZWYgc2hvcnQgV29yZDE2OwordHlwZWRlZiBsb25nIFdvcmQzMjsKK3R5cGVkZWYgaW50IEZsYWc7CisKKyNlbGlmIGRlZmluZWQoX19zdW4pCit0eXBlZGVmIHNpZ25lZCBjaGFyIFdvcmQ4OwordHlwZWRlZiBzaG9ydCBXb3JkMTY7Cit0eXBlZGVmIGxvbmcgV29yZDMyOwordHlwZWRlZiBpbnQgRmxhZzsKKworI2VsaWYgZGVmaW5lZChfX3VuaXhfXykgfHwgZGVmaW5lZChfX3VuaXgpCit0eXBlZGVmIHNpZ25lZCBjaGFyIFdvcmQ4OwordHlwZWRlZiBzaG9ydCBXb3JkMTY7Cit0eXBlZGVmIGludCBXb3JkMzI7Cit0eXBlZGVmIGludCBGbGFnOworCisjZW5kaWYKKyNlbHNlIC8qIG5vdCBvcmlnaW5hbCB0eXBlZGVmLmggKi8KKworLyoKKyAqIHVzZSAoaW1wcm92ZWQpIHR5cGUgZGVmaW5pdGlvbiBmaWxlIHR5cGRlZnMuaCBhbmQgYWRkIGEgIkZsYWciIHR5cGUKKyAqLw0KKyNpbmNsdWRlICJ0eXBlZGVmcy5oIgordHlwZWRlZiBpbnQgRmxhZzsKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC90eXBlZGVmcy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC90eXBlZGVmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMTZmY2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL3R5cGVkZWZzLmgKQEAgLTAsMCArMSwxNzkgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXR5cGVkZWZzLmgNCisNCisJQ29udGVudDoJdHlwZSBkZWZpbmVkIG9yIGNvbnN0IGRlZmluZWQNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIHR5cGVkZWZzX2gKKyNkZWZpbmUgdHlwZWRlZnNfaCAiJElkICQiCisKKyNpZm5kZWYgQ0hBUl9CSVQNCisjZGVmaW5lIENIQVJfQklUICAgICAgOCAgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIGluIGEgY2hhciAqLw0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgVk9BQUNfU0hSVF9NQVgNCisjZGVmaW5lIFZPQUFDX1NIUlRfTUFYICAgICgzMjc2NykgICAgICAgIC8qIG1heGltdW0gKHNpZ25lZCkgc2hvcnQgdmFsdWUgKi8NCisjZW5kaWYNCisKKyNpZm5kZWYgVk9BQUNfU0hSVF9NSU4NCisjZGVmaW5lIFZPQUFDX1NIUlRfTUlOICAgICgtMzI3NjgpICAgICAgICAvKiBtaW5pbXVtIChzaWduZWQpIHNob3J0IHZhbHVlICovDQorI2VuZGlmDQorCisvKiBEZWZpbmUgTlVMTCBwb2ludGVyIHZhbHVlICovDQorI2lmbmRlZiBOVUxMDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorI2RlZmluZSBOVUxMICAgIDANCisjZWxzZQ0KKyNkZWZpbmUgTlVMTCAgICAoKHZvaWQgKikwKQ0KKyNlbmRpZg0KKyNlbmRpZgorCisjaWZuZGVmIGFzc2VydAorI2RlZmluZSBhc3NlcnQoX0V4cHJlc3Npb24pICAgICAoKHZvaWQpMCkKKyNlbmRpZgorDQorI2lmZGVmIExJTlVYDQorI2RlZmluZSBfX2lubGluZSBzdGF0aWMgX19pbmxpbmVfXw0KKyNlbmRpZg0KKworI2RlZmluZSBJTlRfQklUUyAgIDMyCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICAgICAgICAgICAgREVGSU5JVElPTiBPRiBDT05TVEFOVFMgCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8qCisgKioqKioqKioqIGRlZmluZSBjaGFyIHR5cGUKKyAqLwordHlwZWRlZiBjaGFyIENoYXI7CisKKy8qCisgKioqKioqKioqIGRlZmluZSA4IGJpdCBzaWduZWQvdW5zaWduZWQgdHlwZXMgJiBjb25zdGFudHMKKyAqLwordHlwZWRlZiBzaWduZWQgY2hhciBXb3JkODsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBVV29yZDg7CisvKgorICoqKioqKioqKiBkZWZpbmUgMTYgYml0IHNpZ25lZC91bnNpZ25lZCB0eXBlcyAmIGNvbnN0YW50cworICovCit0eXBlZGVmIHNob3J0IFdvcmQxNjsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgVVdvcmQxNjsKKworLyoKKyAqKioqKioqKiogZGVmaW5lIDMyIGJpdCBzaWduZWQvdW5zaWduZWQgdHlwZXMgJiBjb25zdGFudHMKKyAqLwordHlwZWRlZiBsb25nIFdvcmQzMjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBVV29yZDMyOworCisNCisNCisjaWZkZWYgTElOVVgKK3R5cGVkZWYgbG9uZyBsb25nIFdvcmQ2NDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFVXb3JkNjQ7CisjZWxzZQordHlwZWRlZiBfX2ludDY0IFdvcmQ2NDsNCit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgVVdvcmQ2NDsKKyNlbmRpZgorCisjaWZuZGVmIG1pbg0KKyNkZWZpbmUgbWluKGEsYikgKCBhIDwgYiA/IGEgOiBiKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgbWF4DQorI2RlZmluZSBtYXgoYSxiKSAoIGEgPiBiID8gYSA6IGIpDQorI2VuZGlmDQorDQorI2lmZGVmIEFSTV9JTkFTTQ0KKyNpZmRlZiBBUk1WNV9JTkFTTQ0KKyNkZWZpbmUgQVJNVjVFX0lOQVNNCTENCisjZW5kaWYNCisjZGVmaW5lIEFSTVY0X0lOQVNNCQkxDQorI2VuZGlmDQorCisjaWYgQVJNVjRfSU5BU00NCisJI2RlZmluZSBBUk1WNVRFX1NBVCAgICAgICAgICAgMQ0KKyAgICAjZGVmaW5lIEFSTVY1VEVfQUREICAgICAgICAgICAxDQorICAgICNkZWZpbmUgQVJNVjVURV9TVUIgICAgICAgICAgIDENCisJI2RlZmluZSBBUk1WNVRFX1NITCAgICAgICAgICAgMQ0KKyAgICAjZGVmaW5lIEFSTVY1VEVfU0hSICAgICAgICAgICAxDQorCSNkZWZpbmUgQVJNVjVURV9MX1NITCAgICAgICAgIDENCisgICAgI2RlZmluZSBBUk1WNVRFX0xfU0hSICAgICAgICAgMQ0KKyNlbmRpZi8vQVJNVjQNCisjaWYgQVJNVjVFX0lOQVNNDQorICAgICNkZWZpbmUgQVJNVjVURV9MX0FERCAgICAgICAgIDENCisgICAgI2RlZmluZSBBUk1WNVRFX0xfU1VCICAgICAgICAgMQ0KKyAgICAjZGVmaW5lIEFSTVY1VEVfTF9NVUxUICAgICAgICAxDQorICAgICNkZWZpbmUgQVJNVjVURV9MX01BQyAgICAgICAgIDENCisgICAgI2RlZmluZSBBUk1WNVRFX0xfTVNVICAgICAgICAgMQ0KKyAgIA0KKyAgICANCisgICAgI2RlZmluZSBBUk1WNVRFX0RJVl9TICAgICAgICAgMQ0KKyAgICAjZGVmaW5lIEFSTVY1VEVfUk9VTkQgICAgICAgICAxDQorICAgICNkZWZpbmUgQVJNVjVURV9NVUxUICAgICAgICAgIDENCisgICAgDQorICAgICNkZWZpbmUgQVJNVjVURV9OT1JNX1MgICAgICAgIDENCisgICAgI2RlZmluZSBBUk1WNVRFX05PUk1fTCAgICAgICAgMQ0KKwkjZGVmaW5lIEFSTVY1VEVfTF9NUFlfTFMJICAxDQorI2VuZGlmCisNCisvL2Jhc2ljIG9wZXJhdGlvbiBmdW5jdGlvbnMgb3B0aW1pemF0aW9uIGZsYWdzDQorI2RlZmluZSBTQVRSVUFURV9JU19JTkxJTkUgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBzYXR1cmF0ZSBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIFNITF9JU19JTkxJTkUgICAgICAgICAgICAgICAgICAgMSAgLy9kZWZpbmUgc2hsIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgU0hSX0lTX0lOTElORSAgICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgc2hyIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTF9NVUxUX0lTX0lOTElORSAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgTF9tdWx0IGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTF9NU1VfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgTF9tc3UgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBMX1NVQl9JU19JTkxJTkUgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBMX3N1YiBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIExfU0hMX0lTX0lOTElORSAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIExfc2hsIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTF9TSFJfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgTF9zaHIgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBBRERfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBhZGQgYXMgaW5saW5lIGZ1bmN0aW9uIC8vYWRkLCBpbmxpbmUgaXMgdGhlIGJlc3QNCisjZGVmaW5lIFNVQl9JU19JTkxJTkUgICAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIHN1YiBhcyBpbmxpbmUgZnVuY3Rpb24gLy9zdWIsIGlubGluZSBpcyB0aGUgYmVzdA0KKyNkZWZpbmUgRElWX1NfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgZGl2X3MgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBNVUxUX0lTX0lOTElORSAgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBtdWx0IGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTk9STV9TX0lTX0lOTElORSAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgbm9ybV9zIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTk9STV9MX0lTX0lOTElORSAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgbm9ybV9sIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgUk9VTkRfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgcm91bmQgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBMX01BQ19JU19JTkxJTkUgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBMX21hYyBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIExfQUREX0lTX0lOTElORSAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIExfYWRkIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgRVhUUkFDVF9IX0lTX0lOTElORSAgICAgICAgICAgICAxICAgLy9kZWZpbmUgZXh0cmFjdF9oIGFzIGlubGluZSBmdW5jdGlvbiANCisjZGVmaW5lIEVYVFJBQ1RfTF9JU19JTkxJTkUgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIGV4dHJhY3RfbCBhcyBpbmxpbmUgZnVuY3Rpb24gICAgICAgIC8vPz8/DQorI2RlZmluZSBNVUxUX1JfSVNfSU5MSU5FICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBtdWx0X3IgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBTSFJfUl9JU19JTkxJTkUgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBzaHJfciBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIE1BQ19SX0lTX0lOTElORSAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIG1hY19yIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTVNVX1JfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgbXN1X3IgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBMX1NIUl9SX0lTX0lOTElORSAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBMX3Nocl9yIGFzIGlubGluZSBmdW5jdGlvbg0KKw0KKyNkZWZpbmUgUFJFRklYCQkJCXZvQUFDRW5jDQorI2RlZmluZSBMSU5LMCh4LCB5LCB6KQkJTElOSzEoeCx5LHopDQorI2RlZmluZSBMSU5LMSh4LHkseikJCXgjI3kjI3oNCisjZGVmaW5lIEFERF9QUkVGSVgoZnVuYykJTElOSzAoUFJFRklYLCBfLCBmdW5jKQ0KKw0KKyNkZWZpbmUgIExfRXh0cmFjdAkJQUREX1BSRUZJWChMX0V4dHJhY3QpDQorI2RlZmluZSAgTF9Db21wCQkJQUREX1BSRUZJWChMX0NvbXApDQorI2RlZmluZSAgTXB5XzMyCQkJQUREX1BSRUZJWChNcHlfMzIpDQorI2RlZmluZSAgTXB5XzMyXzE2CQlBRERfUFJFRklYKE1weV8zMl8xNikNCisjZGVmaW5lICBEaXZfMzIJCQlBRERfUFJFRklYKERpdl8zMikNCisjZGVmaW5lICBpTG9nNAkJCUFERF9QUkVGSVgoaUxvZzQpDQorI2RlZmluZSAgcnNxcnQJCQlBRERfUFJFRklYKHJzcXJ0KQ0KKyNkZWZpbmUgIHBvdzJfeHkJCUFERF9QUkVGSVgocG93Ml94eSkNCisjZGVmaW5lICBMX21weV9scwkJQUREX1BSRUZJWChMX21weV9scykNCisjZGVmaW5lICBMX21weV93eAkJQUREX1BSRUZJWChMX21weV93eCkNCisNCisjZGVmaW5lIG1lbV9tYWxsb2MJCUFERF9QUkVGSVgobWVtX21hbGxvYykNCisjZGVmaW5lIG1lbV9mcmVlCQlBRERfUFJFRklYKG1lbV9mcmVlKQ0KKw0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9lY2xhaXIvQVJNVjVFL01ha2VmaWxlIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9lY2xhaXIvQVJNVjVFL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZjYzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2J1aWxkL2VjbGFpci9BUk1WNUUvTWFrZWZpbGUKQEAgLTAsMCArMSw1NSBAQAorIy8qDQorIyoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorIyoqDQorIyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMqKg0KKyMqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyoqDQorIyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyovDQorDQorIyB0YXJnZXQ2DQorIyBhdmFpbGFibGU6IHBjLCB2NChhcm12NCksIHY1KGFybXY1KSwgdjV4KGFybXY1IHhzY2FsZSksIHY2KGFybXY2KSwgdjcoY29ydGV4LWE4IG5lb24pDQorVk9UVDo9IHY1DQorDQorDQorIyBtb2R1bGUgdHlwZQ0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgeW91ciBtb2R1bGU6IGxpYiBvciBleGUNCitWT01UOj0gbGliDQorDQorDQorIyBtb2R1bGUgbWFjcm9zDQorIyBwbGVhc2UgYXBwZW5kIHRoZSBhZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zIGhlcmUgZm9yIHlvdXIgbW9kdWxlIGlmIG5lY2Vzc2FyeS4gDQorIyBlLmcuIC1EVklTVUFMT04sIG1hY3JvIFZJU1VBTE9OIGRlZmluZWQgZm9yIHlvdXIgbW9kdWxlIA0KK1ZPTU06PSAtREFSTVY1RSAtREFSTV9JTkFTTSAtREFSTVY1X0lOQVNNIA0KKw0KKw0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIG5hbWUgb2YgeW91ciBtb2R1bGUNCitWT1RBUkdFVDo9bGlidm9BQUNFbmN2NQ0KKw0KKw0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBnMS5taw0KK2luY2x1ZGUgLi4vLi4vLi4vLi4vLi4vVG9vbHMvZWNsYWlyLm1rIA0KKw0KKyMgZGVwZW5kZW50IGxpYnJhcmllcy4NCitWT0RFUExJQlM6PSMtbGRsIC1sc3RkYysrIA0KKw0KKyMgbW9kdWxlIHNvdXJjZQ0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBtcy5tayB3aGljaCBzcGVjaWZpZXMgYWxsIHNvdXJjZSBpbmZvIG9mIHlvdXIgbW9kdWxlDQoraW5jbHVkZSAuLi8uLi9tcy5taw0KKw0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgd2hlcmUgaXMgdGhlIHZvUmVsZWFzZSBvbiB5b3VyIFBDLCByZWxhdGl2ZSBwYXRoIGlzIHN1Z2dlc3RlZA0KK1ZPUkVMRElSOj0uLi8uLi8uLi8uLi8uLi8uLi9SZWxlYXNlDQorDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGRvaXQubWsNCitpbmNsdWRlIC4uLy4uLy4uLy4uLy4uL1Rvb2xzL2RvaXQubWsgDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9lY2xhaXIvQVJNVjcvTWFrZWZpbGUgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2J1aWxkL2VjbGFpci9BUk1WNy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGNlMmMxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9lY2xhaXIvQVJNVjcvTWFrZWZpbGUKQEAgLTAsMCArMSw1NSBAQAorIy8qDQorIyoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorIyoqDQorIyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMqKg0KKyMqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyoqDQorIyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyovDQorDQorIyB0YXJnZXQ2DQorIyBhdmFpbGFibGU6IHBjLCB2NChhcm12NCksIHY1KGFybXY1KSwgdjV4KGFybXY1IHhzY2FsZSksIHY2KGFybXY2KSwgdjcoY29ydGV4LWE4IG5lb24pDQorVk9UVDo9IHY3DQorDQorDQorIyBtb2R1bGUgdHlwZQ0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgeW91ciBtb2R1bGU6IGxpYiBvciBleGUNCitWT01UOj0gbGliDQorDQorDQorIyBtb2R1bGUgbWFjcm9zDQorIyBwbGVhc2UgYXBwZW5kIHRoZSBhZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zIGhlcmUgZm9yIHlvdXIgbW9kdWxlIGlmIG5lY2Vzc2FyeS4gDQorIyBlLmcuIC1EVklTVUFMT04sIG1hY3JvIFZJU1VBTE9OIGRlZmluZWQgZm9yIHlvdXIgbW9kdWxlIA0KK1ZPTU06PSAtREFSTVY1RSAtREFSTVY3TmVvbiAtREFSTV9JTkFTTSAtREFSTVY1X0lOQVNNIA0KKw0KKw0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIG5hbWUgb2YgeW91ciBtb2R1bGUNCitWT1RBUkdFVDo9bGlidm9BQUNFbmN2Nw0KKw0KKw0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBnMS5taw0KK2luY2x1ZGUgLi4vLi4vLi4vLi4vLi4vVG9vbHMvZWNsYWlyLm1rIA0KKw0KKyMgZGVwZW5kZW50IGxpYnJhcmllcy4NCitWT0RFUExJQlM6PSMtbGRsIC1sc3RkYysrIA0KKw0KKyMgbW9kdWxlIHNvdXJjZQ0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBtcy5tayB3aGljaCBzcGVjaWZpZXMgYWxsIHNvdXJjZSBpbmZvIG9mIHlvdXIgbW9kdWxlDQoraW5jbHVkZSAuLi8uLi9tcy5taw0KKw0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgd2hlcmUgaXMgdGhlIHZvUmVsZWFzZSBvbiB5b3VyIFBDLCByZWxhdGl2ZSBwYXRoIGlzIHN1Z2dlc3RlZA0KK1ZPUkVMRElSOj0uLi8uLi8uLi8uLi8uLi8uLi9SZWxlYXNlDQorDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGRvaXQubWsNCitpbmNsdWRlIC4uLy4uLy4uLy4uLy4uL1Rvb2xzL2RvaXQubWsgIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYnVpbGQvZWNsYWlyL21ha2VmaWxlIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9lY2xhaXIvbWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiM2MxMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYnVpbGQvZWNsYWlyL21ha2VmaWxlCkBAIC0wLDAgKzEsNDAgQEAKKyMvKgorIyoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCisjKioKKyMqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjKioKKyMqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjKioKKyMqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjKi8KKworIyBKdXN0IGFjdGluZyBhcyBGYXRoZXIgTWFrZWZpbGUgb2YgTW9kdWxlcworIyBwbGVhc2Uga2VlcCB0aGUgbmFtZSAnbWFrZWZpbGUnIHVuY2hhbmdlZAorIAorIyBNb2R1bGUgU3ViZGlycworVk9NU0Q6PSQoZGlyICQoc2hlbGwgZmluZCAuIC1uYW1lICdNYWtlZmlsZScpKQorCithbGw6CisJZm9yIGRpciBpbiAkKFZPTVNEKTsgXAorCQlkbyBcCisJCQkkKE1BS0UpIC1DICQkZGlyOyBcCisJCWRvbmUKKworLlBIT05ZOmNsZWFuIGRldmVsCitjbGVhbjoKKwlmb3IgZGlyIGluICQoVk9NU0QpOyBcCisJCWRvIFwKKwkJCSQoTUFLRSkgLUMgJCRkaXIgY2xlYW47IFwKKwkJZG9uZQorCitkZXZlbDoKKwlmb3IgZGlyIGluICQoVk9NU0QpOyBcCisJCWRvIFwKKwkJCSQoTUFLRSkgLUMgJCRkaXIgZGV2ZWw7IFwKKwkJZG9uZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9tcy5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYnVpbGQvbXMubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY3ZWZiYwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYnVpbGQvbXMubWsKQEAgLTAsMCArMSw0MiBAQAorIy8qDQorIyoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorIyoqDQorIyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMqKg0KKyMqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyoqDQorIyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyovDQorDQorDQorIyBwbGVhc2UgbGlzdCBhbGwgb2JqZWN0cyBuZWVkZWQgYnkgeW91ciB0YXJnZXQgaGVyZQ0KK09CSlM6PWJhc2ljb3AyLm8gb3Blcl8zMmIubyBhYWNfcm9tLm8gYWFjZW5jLm8gYWFjZW5jX2NvcmUubyBhZGpfdGhyLm8gXA0KKwkJCWJhbmRfbnJnLm8gYml0X2NudC5vIGJpdGJ1ZmZlci5vIGJpdGVuYy5vIGJsb2NrX3N3aXRjaC5vIGNoYW5uZWxfbWFwLm8gXA0KKwkJCWR5bl9iaXRzLm8gZ3JwX2RhdGEubyBpbnRlcmZhY2UubyBsaW5lX3BlLm8gbWVtYWxpZ24ubyBtc19zdGVyZW8ubyBcDQorCQkJcHJlX2VjaG9fY29udHJvbC5vIHBzeV9jb25maWd1cmF0aW9uLm8gcHN5X21haW4ubyBxY19tYWluLm8gcXVhbnRpemUubyBzZl9lc3RpbS5vIFwNCisJCQlzcHJlYWRpbmcubyBzdGF0X2JpdHMubyB0bnMubyB0cmFuc2Zvcm0ubw0KKwkJCQ0KKyMgcGxlYXNlIGxpc3QgYWxsIGRpcmVjdG9yaWVzIHRoYXQgYWxsIHNvdXJjZSBmaWxlcyByZWxhdGl2ZSB3aXRoIHlvdXIgbW9kdWxlKC5oIC5jIC5jcHApIGxvY2F0ZSANCitWT1NSQ0RJUjo9Li4vLi4vLi4vc3JjIFwNCisJCQkJCS4uLy4uLy4uL2luYyBcDQorCQkJCQkuLi8uLi8uLi9iYXNpY19vcFwNCisJCQkJCS4uLy4uLy4uLy4uLy4uL0luY2x1ZGUgDQorCQkJCQkNCitpZmVxICgkKFZPVFQpLCB2NSkNCitPQkpTKz0gQXV0b0NvcnJlbGF0aW9uX3Y1Lm8gYmFuZF9ucmdfdjUubyBDYWxjV2luZG93RW5lcmd5X3Y1Lm8gXA0KKwkJCQlQcmVQb3N0TURDVF92NS5vIFI0UjhGaXJzdF92NS5vIFJhZGl4NEZGVF92NS5vDQorVk9TUkNESVIrPSAuLi8uLi8uLi9zcmMvYXNtL0FSTVY1RS8NCitlbmRpZgkNCisNCitpZmVxICgkKFZPVFQpLCB2NykNCitPQkpTKz0gQXV0b0NvcnJlbGF0aW9uX3Y1Lm8gYmFuZF9ucmdfdjUubyBDYWxjV2luZG93RW5lcmd5X3Y1Lm8gXA0KKwkJCSBQcmVQb3N0TURDVF92Ny5vIFI0UjhGaXJzdF92Ny5vIFJhZGl4NEZGVF92Ny5vDQorVk9TUkNESVIrPSAuLi8uLi8uLi9zcmMvYXNtL0FSTVY1RS8NCitWT1NSQ0RJUis9IC4uLy4uLy4uL3NyYy9hc20vQVJNVjcvDQorZW5kaWYJCQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvZG9jL3ZvQUFDRW5jb2RlclNESy5wZGYgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2RvYy92b0FBQ0VuY29kZXJTREsucGRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NGQwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2RvYy92b0FBQ0VuY29kZXJTREsucGRmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2FhY19yb20uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2FhY19yb20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDQyOWZjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWFjX3JvbS5oCkBAIC0wLDAgKzEsMTE3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlhYWNfcm9tLmgNCisNCisJQ29udGVudDoJY29uc3RhbnQgdGFibGVzIA0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgUk9NX0gKKyNkZWZpbmUgUk9NX0gKKw0KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJ0bnNfcGFyYW0uaCIKKworLyoKKyAgbWRjdAorKi8KK2V4dGVybiBjb25zdCBpbnQgU2hvcnRXaW5kb3dTaW5lW0ZSQU1FX0xFTl9TSE9SVC8yXTsKK2V4dGVybiBjb25zdCBpbnQgTG9uZ1dpbmRvd0tCRFtGUkFNRV9MRU5fTE9ORy8yXTsNCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBiaXRyZXZUYWJbMTcgKyAxMjldOw0KK2V4dGVybiBjb25zdCBpbnQgY29zc2ludGFiWzEyOCArIDEwMjRdOw0KKw0KKyNpZiBkZWZpbmVkIChBUk1WNUUpICYmICFkZWZpbmVkIChBUk1WN05lb24pDQorZXh0ZXJuIGNvbnN0IGludCB0d2lkVGFiNjRbKDQqNiArIDE2KjYpLzJdOw0KK2V4dGVybiBjb25zdCBpbnQgdHdpZFRhYjUxMlsoOCo2ICsgMzIqNiArIDEyOCo2KS8yXTsNCisjZWxzZQ0KK2V4dGVybiBjb25zdCBpbnQgdHdpZFRhYjY0WzQqNiArIDE2KjZdOw0KK2V4dGVybiBjb25zdCBpbnQgdHdpZFRhYjUxMls4KjYgKyAzMio2ICsgMTI4KjZdOworI2VuZGlmCisKKy8qCisgIGZvcm0gZmFjdG9yCisqLworZXh0ZXJuIGNvbnN0IFdvcmQzMiBmb3JtZmFjX3NxcnR0YWJsZVs5Nl07CisKKy8qCisgIHF1YW50aXplcgorKi8KK2V4dGVybiBjb25zdCBXb3JkMzIgbVRhYl8zXzRbNTEyXTsKK2V4dGVybiBjb25zdCBXb3JkMzIgbVRhYl80XzNbNTEyXTsKKy8qISAkMl57LVxmcmFje259ezE2fX0kIHRhYmxlICovCitleHRlcm4gY29uc3QgV29yZDE2IHBvdzJ0b21pbnVzTm92ZXIxNlsxN10gOworCitleHRlcm4gV29yZDMyIHNwZWNFeHBNYW50VGFibGVDb21iX2VuY1s0XVsxNF07CitleHRlcm4gY29uc3QgVVdvcmQ4IHNwZWNFeHBUYWJsZUNvbWJfZW5jWzRdWzE0XTsKKworZXh0ZXJuIGNvbnN0IFdvcmQxNiBxdWFudEJvcmRlcnNbNF1bNF07CisvL2V4dGVybiBjb25zdCBXb3JkMTYgcXVhbnRSZWNvblszXVs0XTsNCitleHRlcm4gY29uc3QgV29yZDE2IHF1YW50UmVjb25bNF1bM107CisKKy8qCisgIGh1ZmZtYW4KKyovCitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2x0YWIxXzJbM11bM11bM11bM107CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2x0YWIzXzRbM11bM11bM11bM107CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2x0YWI1XzZbOV1bOV07CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2x0YWI3XzhbOF1bOF07CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2x0YWI5XzEwWzEzXVsxM107CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2x0YWIxMVsxN11bMTddOworZXh0ZXJuIGNvbnN0IFVXb3JkMTYgaHVmZl9sdGFic2NmWzEyMV07CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2N0YWIxWzNdWzNdWzNdWzNdOworZXh0ZXJuIGNvbnN0IFVXb3JkMTYgaHVmZl9jdGFiMlszXVszXVszXVszXTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjNbM11bM11bM11bM107CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2N0YWI0WzNdWzNdWzNdWzNdOworZXh0ZXJuIGNvbnN0IFVXb3JkMTYgaHVmZl9jdGFiNVs5XVs5XTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjZbOV1bOV07CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2N0YWI3WzhdWzhdOworZXh0ZXJuIGNvbnN0IFVXb3JkMTYgaHVmZl9jdGFiOFs4XVs4XTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjlbMTNdWzEzXTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjEwWzEzXVsxM107CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2N0YWIxMVsxN11bMTddOworZXh0ZXJuIGNvbnN0IFVXb3JkMzIgaHVmZl9jdGFic2NmWzEyMV07CisKKworCisvKgorICBtaXNjCisqLworZXh0ZXJuIGNvbnN0IGludCBzYW1wUmF0ZVRhYltOVU1fU0FNUExFX1JBVEVTXTsNCitleHRlcm4gY29uc3QgaW50IEJhbmR3aXRoQ29lZlRhYls4XVtOVU1fU0FNUExFX1JBVEVTXTsNCitleHRlcm4gY29uc3QgaW50IHJhdGVzWzhdOw0KK2V4dGVybiBjb25zdCBVV29yZDggc2ZCYW5kVG90YWxTaG9ydFtOVU1fU0FNUExFX1JBVEVTXTsNCitleHRlcm4gY29uc3QgVVdvcmQ4IHNmQmFuZFRvdGFsTG9uZ1tOVU1fU0FNUExFX1JBVEVTXTsNCitleHRlcm4gY29uc3QgaW50IHNmQmFuZFRhYlNob3J0T2Zmc2V0W05VTV9TQU1QTEVfUkFURVNdOw0KK2V4dGVybiBjb25zdCBzaG9ydCBzZkJhbmRUYWJTaG9ydFs3Nl07DQorZXh0ZXJuIGNvbnN0IGludCBzZkJhbmRUYWJMb25nT2Zmc2V0W05VTV9TQU1QTEVfUkFURVNdOw0KK2V4dGVybiBjb25zdCBzaG9ydCBzZkJhbmRUYWJMb25nWzMyNV07DQorCitleHRlcm4gY29uc3QgV29yZDMyIG1fbG9nMl90YWJsZVtJTlRfQklUU107CisKKy8qCisgIFROUworKi8KK2V4dGVybiBjb25zdCBXb3JkMzIgdG5zQ29lZmYzWzhdOw0KK2V4dGVybiBjb25zdCBXb3JkMzIgdG5zQ29lZmYzQm9yZGVyc1s4XTsNCitleHRlcm4gY29uc3QgV29yZDMyIHRuc0NvZWZmNFsxNl07DQorZXh0ZXJuIGNvbnN0IFdvcmQzMiB0bnNDb2VmZjRCb3JkZXJzWzE2XTsNCitleHRlcm4gY29uc3QgV29yZDMyIGludlNCRlsyNF07DQorZXh0ZXJuIGNvbnN0IFdvcmQxNiBzaWRlSW5mb1RhYkxvbmdbTUFYX1NGQl9MT05HICsgMV07DQorZXh0ZXJuIGNvbnN0IFdvcmQxNiBzaWRlSW5mb1RhYlNob3J0W01BWF9TRkJfU0hPUlQgKyAxXTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWFjZW5jX2NvcmUuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2FhY2VuY19jb3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFhMWQyMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2FhY2VuY19jb3JlLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWFhY2VuY19jb3JlLmgNCisNCisJQ29udGVudDoJYWFjIGVuY29kZXIgaW50ZXJmYWNlIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX2FhY2VuY19jb3JlX2hfCisjZGVmaW5lIF9hYWNlbmNfY29yZV9oXworCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIgorI2luY2x1ZGUgImNvbmZpZy5oIg0KKyNpbmNsdWRlICJiaXRlbmMuaCINCisNCisjaW5jbHVkZSAicHN5X2NvbmZpZ3VyYXRpb24uaCINCisjaW5jbHVkZSAicHN5X21haW4uaCINCisjaW5jbHVkZSAicWNfbWFpbi5oIg0KKyNpbmNsdWRlICJwc3lfbWFpbi5oIg0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZGVmaW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgIHN0cnVjdCB7CisgIFdvcmQzMiAgIHNhbXBsZVJhdGU7ICAgICAgICAgICAgLyogYXVkaW8gZmlsZSBzYW1wbGUgcmF0ZSAqLworICBXb3JkMzIgICBiaXRSYXRlOyAgICAgICAgICAgICAgIC8qIGVuY29kZXIgYml0IHJhdGUgaW4gYml0cy9zZWMgKi8KKyAgV29yZDE2ICAgbkNoYW5uZWxzSW47ICAgICAgICAgICAvKiBudW1iZXIgb2YgY2hhbm5lbHMgb24gaW5wdXQgKDEsMikgKi8KKyAgV29yZDE2ICAgbkNoYW5uZWxzT3V0OyAgICAgICAgICAvKiBudW1iZXIgb2YgY2hhbm5lbHMgb24gb3V0cHV0ICgxLDIpICovCisgIFdvcmQxNiAgIGJhbmRXaWR0aDsgICAgICAgICAgICAgLyogdGFyZ2V0ZWQgYXVkaW8gYmFuZHdpZHRoIGluIEh6ICovDQorICBXb3JkMTYgICBhZHRzVXNlZDsJCQkgIC8qIHdoZXRoZXIgd3JpdGUgYWR0cyBoZWFkZXIgKi8KK30gQUFDRU5DX0NPTkZJRzsKKw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisJDQorICBBQUNFTkNfQ09ORklHIGNvbmZpZzsgICAgIC8qIFdvcmQxNiBzaXplOiA4ICovDQorDQorICBFTEVNRU5UX0lORk8gZWxJbmZvOyAgICAgIC8qIFdvcmQxNiBzaXplOiA0ICovDQorDQorICBRQ19TVEFURSBxY0tlcm5lbDsgICAgICAgIC8qIFdvcmQxNiBzaXplOiA2ICsgNShQQURESU5HKSArIDcoRUxFTUVOVF9CSVRTKSArIDU0KEFESl9USFJfU1RBVEUpID0gNzIgKi8NCisgIFFDX09VVCAgIHFjT3V0OyAgICAgICAgICAgLyogV29yZDE2IHNpemU6IE1BWF9DSEFOTkVMUyo5MjAoUUNfT1VUX0NIQU5ORUwpICsgNShRQ19PVVRfRUxFTUVOVCkgKyA3ID0gOTMyIC8gMTg1MiAqLw0KKw0KKyAgUFNZX09VVCAgICBwc3lPdXQ7ICAgICAgICAvKiBXb3JkMTYgc2l6ZTogTUFYX0NIQU5ORUxTKjE4NiArIDIgPSAxODggLyAzNzQgKi8NCisgIFBTWV9LRVJORUwgcHN5S2VybmVsOyAgICAgLyogV29yZDE2IHNpemU6ICAyNTg3IC8gNDQ5MSAqLw0KKw0KKyAgc3RydWN0IEJJVFNUUkVBTUVOQ09ERVJfSU5JVCBic2VJbml0OyAvKiBXb3JkMTYgc2l6ZTogNiAqLw0KKyAgc3RydWN0IEJJVF9CVUYgIGJpdFN0cmVhbTsgICAgICAgICAgICAvKiBXb3JkMTYgc2l6ZTogOCAqLw0KKyAgSEFORExFX0JJVF9CVUYgIGhCaXRTdHJlYW07DQorICBpbnQJCQkgIGluaXRPSzsNCisNCisgIHNob3J0CQkJKmludGJ1ZjsNCisgIHNob3J0CQkJKmVuY2J1ZjsNCisgIHNob3J0CQkJKmluYnVmOw0KKyAgaW50CQkJZW5jbGVuOw0KKyAgaW50CQkJaW5sZW47DQorICBpbnQJCQlpbnRsZW47DQorICBpbnQJCQl1c2VsZW5ndGg7DQorDQorICB2b2lkCQkJKmhDaGVjazsNCisgIFZPX01FTV9PUEVSQVRPUiAqdm9NZW1vcDsNCisgIFZPX01FTV9PUEVSQVRPUiB2b01lbW9wcmF0b3I7DQorDQorfUFBQ19FTkNPREVSOyAvKiBXb3JkMTYgc2l6ZTogMzgwOSAvIDY4NTEgKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Z1bmN0aW9ubmFtZTogQWFjSW5pdERlZmF1bHRDb25maWcKK2Rlc2NyaXB0aW9uOiAgZ2l2ZXMgcmVhc29uYWJsZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KK3JldHVybnM6ICAgICAgLS0tCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkIEFhY0luaXREZWZhdWx0Q29uZmlnKEFBQ0VOQ19DT05GSUcgKmNvbmZpZyk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Z1bmN0aW9ubmFtZTpBYWNFbmNPcGVuCitkZXNjcmlwdGlvbjogYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgZW5jb2RlciBpbnN0YW5jZQorcmV0dXJuczogICAgIEFBQ0VOQ19PSyBpZiBzdWNjZXNzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK1dvcmQxNiAgQWFjRW5jT3BlbiAoQUFDX0VOQ09ERVIJCQkJKmhBYWNFbmMsICAgICAgIC8qIHBvaW50ZXIgdG8gYW4gZW5jb2RlciBoYW5kbGUsIGluaXRpYWxpemVkIG9uIHJldHVybiAqLworICAgICAgICAgICAgICAgICAgICBjb25zdCAgQUFDRU5DX0NPTkZJRyAgICAgY29uZmlnKTsgICAgICAgIC8qIHByZS1pbml0aWFsaXplZCBjb25maWcgc3RydWN0ICovCisKK1dvcmQxNiBBYWNFbmNFbmNvZGUoQUFDX0VOQ09ERVIJCSAgICpoQWFjRW5jLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgICAgKnRpbWVTaWduYWwsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVXb3JkOCAgICAgICAqYW5jQnl0ZXMsICAgICAgLyohPCBwb2ludGVyIHRvIGFuY2lsbGFyeSBkYXRhIGJ5dGVzICovCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgICAqbnVtQW5jQnl0ZXMsICAgLyohPCBudW1iZXIgb2YgYW5jaWxsYXJ5IERhdGEgQnl0ZXMsIHNlbmQgYXMgZmlsbCBlbGVtZW50ICAqLworICAgICAgICAgICAgICAgICAgICBVV29yZDggICAgICAgICAgICAgKm91dEJ5dGVzLCAgICAgIC8qITwgcG9pbnRlciB0byBvdXRwdXQgYnVmZmVyICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAgICAgICpudW1PdXRCeXRlcyAgICAvKiE8IG51bWJlciBvZiBieXRlcyBpbiBvdXRwdXQgYnVmZmVyICovCisgICAgICAgICAgICAgICAgICAgICk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Z1bmN0aW9ubmFtZTpBYWNFbmNDbG9zZQorZGVzY3JpcHRpb246IGRlYWxsb2NhdGUgYW4gZW5jb2RlciBpbnN0YW5jZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCit2b2lkIEFhY0VuY0Nsb3NlIChBQUNfRU5DT0RFUiogaEFhY0VuYywgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOyAvKiBhbiBlbmNvZGVyIGhhbmRsZSAqLworCisjZW5kaWYgLyogX2FhY2VuY19oXyAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWRqX3Roci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWRqX3Roci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNTdjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9hZGpfdGhyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYWRqX3Roci5oDQorDQorCUNvbnRlbnQ6CVRocmVzaG9sZCBjb21wZW5zYXRpb24gZnVuY3Rpb24gDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0FESl9USFJfSAorI2RlZmluZSBfX0FESl9USFJfSAorCisjaW5jbHVkZSAiYWRqX3Rocl9kYXRhLmgiCisjaW5jbHVkZSAicWNfZGF0YS5oIgorI2luY2x1ZGUgImludGVyZmFjZS5oIgorCitXb3JkMTYgYml0czJwZShjb25zdCBXb3JkMTYgYml0cyk7CisKK1dvcmQzMiBBZGpUaHJOZXcoQURKX1RIUl9TVEFURSoqIHBoQWRqVGhyLAorICAgICAgICAgICAgICAgICBXb3JkMzIgbkVsZW1lbnRzKTsKKwordm9pZCBBZGpUaHJEZWxldGUoQURKX1RIUl9TVEFURSAqaEFkalRocik7CisKK3ZvaWQgQWRqVGhySW5pdChBREpfVEhSX1NUQVRFICpoQWRqVGhyLAorICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiBwZU1lYW4sCisgICAgICAgICAgICAgICAgV29yZDMyIGNoQml0cmF0ZSk7CisKK3ZvaWQgQWRqdXN0VGhyZXNob2xkcyhBREpfVEhSX1NUQVRFICphZGpUaHJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBBVFNfRUxFTUVOVCogQWRqVGhyU3RhdGVFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9FTEVNRU5UICpwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqY2hCaXREaXN0cmlidXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGxvZ1NmYkVuZXJneVtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYk5SZWxldmFudExpbmVzW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgUUNfT1VUX0VMRU1FTlQqIHFjT0UsCisJCQkJCSAgRUxFTUVOVF9CSVRTKiBlbEJpdHMsCisJCQkJCSAgY29uc3QgV29yZDE2IG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbWF4Qml0RmFjKTsKKwordm9pZCBBZGpUaHJVcGRhdGUoQVRTX0VMRU1FTlQgKkFkalRoclN0YXRlRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBkeW5CaXRzVXNlZCk7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9hZGpfdGhyX2RhdGEuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2Fkal90aHJfZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZGQ0MzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9hZGpfdGhyX2RhdGEuaApAQCAtMCwwICsxLDY5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlhZGpfdGhyX2RhdGEuaA0KKw0KKwlDb250ZW50OglUaHJlc2hvbGQgY29tcGVuc2F0aW9uIHBhcmFtZXRlciANCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fQURKX1RIUl9EQVRBX0gKKyNkZWZpbmUgX19BREpfVEhSX0RBVEFfSAorCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJsaW5lX3BlLmgiCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIFdvcmQxNiBjbGlwU2F2ZUxvdywgY2xpcFNhdmVIaWdoOworICAgV29yZDE2IG1pbkJpdFNhdmUsIG1heEJpdFNhdmU7CisgICBXb3JkMTYgY2xpcFNwZW5kTG93LCBjbGlwU3BlbmRIaWdoOworICAgV29yZDE2IG1pbkJpdFNwZW5kLCBtYXhCaXRTcGVuZDsKK30gQlJFU19QQVJBTTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgVVdvcmQ4IG1vZGlmeU1pblNucjsKKyAgIFdvcmQxNiBzdGFydFNmYkwsIHN0YXJ0U2ZiUzsKK30gQUhfUEFSQU07CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgV29yZDMyIG1heFJlZDsKKyAgV29yZDMyIHN0YXJ0UmF0aW8sIG1heFJhdGlvOworICBXb3JkMzIgcmVkUmF0aW9GYWM7CisgIFdvcmQzMiByZWRPZmZzOworfSBNSU5TTlJfQURBUFRfUEFSQU07CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgLyogcGFyYW1ldGVycyBmb3IgYml0cmVzZXJ2b2lyIGNvbnRyb2wgKi8KKyAgV29yZDE2IHBlTWluLCBwZU1heDsKKyAgLyogY29uc3RhbnQgb2Zmc2V0IHRvIHBlICAgICAgICAgICAgICAgKi8KKyAgV29yZDE2ICBwZU9mZnNldDsKKyAgLyogYXZvaWQgaG9sZSBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgKi8KKyAgQUhfUEFSQU0gYWhQYXJhbTsKKyAgLyogcGFyYW10ZXJzIGZvciBhZGFwdGF0aW9uIG9mIG1pblNuciAqLworICBNSU5TTlJfQURBUFRfUEFSQU0gbWluU25yQWRhcHRQYXJhbTsKKyAgLyogdmFsdWVzIGZvciBjb3JyZWN0aW9uIG9mIHBlICovCisgIFdvcmQxNiBwZUxhc3Q7CisgIFdvcmQxNiBkeW5CaXRzTGFzdDsKKyAgV29yZDE2IHBlQ29ycmVjdGlvbkZhY3RvcjsKK30gQVRTX0VMRU1FTlQ7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgQlJFU19QQVJBTSAgIGJyZXNQYXJhbUxvbmcsIGJyZXNQYXJhbVNob3J0OyAvKiBXb3JkMTYgc2l6ZTogMio4ICovCisgIEFUU19FTEVNRU5UICBhZGpUaHJTdGF0ZUVsZW07ICAgICAgICAgICAgICAgLyogV29yZDE2IHNpemU6IDE5ICovCit9IEFESl9USFJfU1RBVEU7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYmFuZF9ucmcuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JhbmRfbnJnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg1MDlkYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JhbmRfbnJnLmgKQEAgLTAsMCArMSw0NiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYmFuZF9ucmcuaA0KKw0KKwlDb250ZW50OglCYW5kL0xpbmUgZW5lcmd5IGNhbGN1bGF0aW9ucyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX0JBTkRfTlJHX0gKKyNkZWZpbmUgX0JBTkRfTlJHX0gKKworI2luY2x1ZGUgInR5cGVkZWYuaCIKKworCit2b2lkIENhbGNCYW5kRW5lcmd5KGNvbnN0IFdvcmQzMiAqbWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKmJhbmRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgbnVtQmFuZHMsCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqYmFuZEVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5U3VtKTsKKworCit2b2lkIENhbGNCYW5kRW5lcmd5TVMoY29uc3QgV29yZDMyICptZGN0U3BlY3RydW1MZWZ0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAqbWRjdFNwZWN0cnVtUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpiYW5kT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgbnVtQmFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5TWlkLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqYmFuZEVuZXJneU1pZFN1bSwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKmJhbmRFbmVyZ3lTaWRlLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqYmFuZEVuZXJneVNpZGVTdW0pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JpdF9jbnQuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JpdF9jbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDgzMTllCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYml0X2NudC5oCkBAIC0wLDAgKzEsMTA2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQliaXRfY250LmgNCisNCisJQ29udGVudDoJSHVmZm1hbiBCaXRjb3VudGVyICYgY29kZXIgc3RydWN0dXJlIGFuZCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fQklUQ09VTlRfSAorI2RlZmluZSBfX0JJVENPVU5UX0gKKworI2luY2x1ZGUgImJpdGJ1ZmZlci5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIgorI2RlZmluZSBJTlZBTElEX0JJVENPVU5UIChNQVhfMTYvNCkKKworLyoKKyAgY29kZSBib29rIG51bWJlciB0YWJsZQorKi8KKworZW51bSBjb2RlQm9va05veworICBDT0RFX0JPT0tfWkVST19OTz0gICAgICAgICAgICAgICAwLAorICBDT0RFX0JPT0tfMV9OTz0gICAgICAgICAgICAgICAgICAxLAorICBDT0RFX0JPT0tfMl9OTz0gICAgICAgICAgICAgICAgICAyLAorICBDT0RFX0JPT0tfM19OTz0gICAgICAgICAgICAgICAgICAzLAorICBDT0RFX0JPT0tfNF9OTz0gICAgICAgICAgICAgICAgICA0LAorICBDT0RFX0JPT0tfNV9OTz0gICAgICAgICAgICAgICAgICA1LAorICBDT0RFX0JPT0tfNl9OTz0gICAgICAgICAgICAgICAgICA2LAorICBDT0RFX0JPT0tfN19OTz0gICAgICAgICAgICAgICAgICA3LAorICBDT0RFX0JPT0tfOF9OTz0gICAgICAgICAgICAgICAgICA4LAorICBDT0RFX0JPT0tfOV9OTz0gICAgICAgICAgICAgICAgICA5LAorICBDT0RFX0JPT0tfMTBfTk89ICAgICAgICAgICAgICAgIDEwLAorICBDT0RFX0JPT0tfRVNDX05PPSAgICAgICAgICAgICAgIDExLAorICBDT0RFX0JPT0tfUkVTX05PPSAgICAgICAgICAgICAgIDEyLAorICBDT0RFX0JPT0tfUE5TX05PPSAgICAgICAgICAgICAgIDEzCit9OworCisvKgorICBjb2RlIGJvb2sgaW5kZXggdGFibGUKKyovCisKK2VudW0gY29kZUJvb2tOZHh7CisgIENPREVfQk9PS19aRVJPX05EWD0wLAorICBDT0RFX0JPT0tfMV9ORFgsCisgIENPREVfQk9PS18yX05EWCwKKyAgQ09ERV9CT09LXzNfTkRYLAorICBDT0RFX0JPT0tfNF9ORFgsCisgIENPREVfQk9PS181X05EWCwKKyAgQ09ERV9CT09LXzZfTkRYLAorICBDT0RFX0JPT0tfN19ORFgsCisgIENPREVfQk9PS184X05EWCwKKyAgQ09ERV9CT09LXzlfTkRYLAorICBDT0RFX0JPT0tfMTBfTkRYLAorICBDT0RFX0JPT0tfRVNDX05EWCwKKyAgQ09ERV9CT09LX1JFU19ORFgsCisgIENPREVfQk9PS19QTlNfTkRYLAorICBOVU1CRVJfT0ZfQ09ERV9CT09LUworfTsKKworLyoKKyAgY29kZSBib29rIGxhdiB0YWJsZQorKi8KKworZW51bSBjb2RlQm9va0xhdnsKKyAgQ09ERV9CT09LX1pFUk9fTEFWPTAsCisgIENPREVfQk9PS18xX0xBVj0xLAorICBDT0RFX0JPT0tfMl9MQVY9MSwKKyAgQ09ERV9CT09LXzNfTEFWPTIsCisgIENPREVfQk9PS180X0xBVj0yLAorICBDT0RFX0JPT0tfNV9MQVY9NCwKKyAgQ09ERV9CT09LXzZfTEFWPTQsCisgIENPREVfQk9PS183X0xBVj03LAorICBDT0RFX0JPT0tfOF9MQVY9NywKKyAgQ09ERV9CT09LXzlfTEFWPTEyLAorICBDT0RFX0JPT0tfMTBfTEFWPTEyLAorICBDT0RFX0JPT0tfRVNDX0xBVj0xNiwKKyAgQ09ERV9CT09LX1NDRl9MQVY9NjAsCisgIENPREVfQk9PS19QTlNfTEFWPTYwCit9OworCitXb3JkMTYgYml0Q291bnQoY29uc3QgV29yZDE2ICphUXVhbnRTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIG5vT2ZTcGVjTGluZXMsCisgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICBtYXhWYWwsCisgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICpiaXRDb3VudEx1dCk7CisKK1dvcmQxNiBjb2RlVmFsdWVzKFdvcmQxNiAqdmFsdWVzLCBXb3JkMTYgd2lkdGgsIFdvcmQxNiBjb2RlQm9vaywgSEFORExFX0JJVF9CVUYgaEJpdHN0cmVhbSk7CisKK1dvcmQxNiBiaXRDb3VudFNjYWxlZmFjdG9yRGVsdGEoV29yZDE2IGRlbHRhKTsKK1dvcmQxNiBjb2RlU2NhbGVmYWN0b3JEZWx0YShXb3JkMTYgc2NhbGVmYWN0b3IsIEhBTkRMRV9CSVRfQlVGIGhCaXRzdHJlYW0pOworCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9iaXRidWZmZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JpdGJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiODUwYzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9iaXRidWZmZXIuaApAQCAtMCwwICsxLDg5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQliaXRidWZmZXIuaA0KKw0KKwlDb250ZW50OglCaXQgQnVmZmVyIE1hbmFnZW1lbnQgc3RydWN0dXJlIGFuZCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIEJJVEJVRkZFUl9ICisjZGVmaW5lIEJJVEJVRkZFUl9ICisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiCisKKworZW51bSBkaXJlY3Rpb24KK3sKKyAgZm9yd2FyZERpcmVjdGlvbiwKKyAgYmFja3dhcmREaXJlY3Rpb24KK307CisKKworLyohCisgICBUaGUgcG9pbnRlciAncFJlYWROZXh0JyBwb2ludHMgdG8gdGhlIG5leHQgYXZhaWxhYmxlIHdvcmQsIHdoZXJlIGJpdHMgY2FuIGJlIHJlYWQgZnJvbS4gVGhlIHBvaW50ZXIKKyAgICdwV3JpdGVOZXh0JyBwb2ludHMgdG8gdGhlIG5leHQgYXZhaWxhYmxlIHdvcmQsIHdoZXJlIGJpdHMgY2FuIGJlIHdyaXR0ZW4gdG8uIFRoZSBwb2ludGVyIHBCaXRCdWZCYXNlCisgICBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBiaXRzdHJlYW0gYnVmZmVyIGFuZCB0aGUgcG9pbnRlciBwQml0QnVmRW5kIHBvaW50cyB0byB0aGUgZW5kIG9mIHRoZSBiaXRzdHJlYW0KKyAgIGJ1ZmZlci4gVGhlIHR3byBwb2ludGVycyBhcmUgdXNlZCBhcyBsb3dlci1ib3VuZCByZXNwZWN0aXZlbHkgdXBwZXItYm91bmQgYWRkcmVzcyBmb3IgdGhlIG1vZHVsbyBhZGRyZXNzaW5nCisgICBtb2RlLgorCisgICBUaGUgZWxlbWVudCBjbnRCaXRzIGNvbnRhaW5zIHRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIGJpdHMgaW4gdGhlIGJpdCBidWZmZXIuIEl0IHdpbGwgYmUgaW5jcmVtZW50ZWQgd2hlbgorICAgYml0cyBhcmUgd3JpdHRlbiB0byB0aGUgYml0c3RyZWFtIGJ1ZmZlciBhbmQgZGVjcmVtZW50ZWQgd2hlbiBiaXRzIGFyZSByZWFkIGZyb20gdGhlIGJpdHN0cmVhbSBidWZmZXIuCisqLworc3RydWN0IEJJVF9CVUYKK3sKKyAgVVdvcmQ4ICpwQml0QnVmQmFzZTsgICAgICAgICAgLyohPCBwb2ludGVyIHBvaW50cyB0byBmaXJzdCBwb3NpdGlvbiBpbiBiaXRzdHJlYW0gYnVmZmVyICovCisgIFVXb3JkOCAqcEJpdEJ1ZkVuZDsgICAgICAgICAgIC8qITwgcG9pbnRlciBwb2ludHMgdG8gbGFzdCBwb3NpdGlvbiBpbiBiaXRzdHJlYW0gYnVmZmVyICovCisKKyAgVVdvcmQ4ICpwV3JpdGVOZXh0OyAgICAgICAgICAgLyohPCBwb2ludGVyIHBvaW50cyB0byBuZXh0IGF2YWlsYWJsZSB3b3JkIGluIGJpdHN0cmVhbSBidWZmZXIgdG8gd3JpdGUgKi8KKworICBVV29yZDMyIGNhY2hlOworCisgIFdvcmQxNiAgd0JpdFBvczsgICAgICAgICAgICAgIC8qITwgMzE8PXdCaXRQb3M8PTAqLworICBXb3JkMTYgIGNudEJpdHM7ICAgICAgICAgICAgICAvKiE8IG51bWJlciBvZiBhdmFpbGFibGUgYml0cyBpbiB0aGUgYml0c3RyZWFtIGJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGJpdHMgdG8gYml0c3RyZWFtIGJ1ZmZlciAgPT4gaW5jcmVtZW50IGNudEJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkIGJpdHMgZnJvbSBiaXRzdHJlYW0gYnVmZmVyID0+IGRlY3JlbWVudCBjbnRCaXRzICovCisgIFdvcmQxNiAgc2l6ZTsgICAgICAgICAgICAgICAgIC8qITwgc2l6ZSBvZiBiaXRidWZmZXIgaW4gYml0cyAqLworICBXb3JkMTYgIGlzVmFsaWQ7ICAgICAgICAgICAgICAvKiE8IGluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBpbml0aWFsaXplZCAqLworfTsgLyogc2l6ZSBXb3JkMTY6IDggKi8KKworLyohIERlZmluZSBwb2ludGVyIHRvIGJpdCBidWZmZXIgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdCBCSVRfQlVGICpIQU5ETEVfQklUX0JVRjsKKworCitIQU5ETEVfQklUX0JVRiBDcmVhdGVCaXRCdWZmZXIoSEFORExFX0JJVF9CVUYgaEJpdEJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVV29yZDggKnBCaXRCdWZCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgYml0QnVmU2l6ZSk7CisKKwordm9pZCBEZWxldGVCaXRCdWZmZXIoSEFORExFX0JJVF9CVUYgKmhCaXRCdWYpOworCisKK1dvcmQxNiBHZXRCaXRzQXZhaWwoSEFORExFX0JJVF9CVUYgaEJpdEJ1Zik7CisKKworV29yZDE2IFdyaXRlQml0cyhIQU5ETEVfQklUX0JVRiBoQml0QnVmLAorICAgICAgICAgICAgICAgICBXb3JkMzIgd3JpdGVWYWx1ZSwKKyAgICAgICAgICAgICAgICAgV29yZDE2IG5vQml0c1RvV3JpdGUpOworCit2b2lkIFJlc2V0Qml0QnVmKEhBTkRMRV9CSVRfQlVGIGhCaXRCdWYsCisgICAgICAgICAgICAgICAgIFVXb3JkOCAqcEJpdEJ1ZkJhc2UsCisgICAgICAgICAgICAgICAgIFdvcmQxNiAgYml0QnVmU2l6ZSk7CisKKyNkZWZpbmUgR2V0TnJCaXRzQXZhaWxhYmxlKGhCaXRCdWYpICggKGhCaXRCdWYpLT5jbnRCaXRzKQorI2RlZmluZSBHZXROckJpdHNSZWFkKGhCaXRCdWYpICAgICAgICgoaEJpdEJ1ZiktPnNpemUtKGhCaXRCdWYpLT5jbnRCaXRzKQorCisjZW5kaWYgLyogQklUQlVGRkVSX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JpdGVuYy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYml0ZW5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE1MTA1NwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JpdGVuYy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJpdGVuYy5oDQorDQorCUNvbnRlbnQ6CUJpdHN0cmVhbSBlbmNvZGVyIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfQklURU5DX0gKKyNkZWZpbmUgX0JJVEVOQ19ICisKKyNpbmNsdWRlICJxY19kYXRhLmgiCisjaW5jbHVkZSAidG5zLmgiCisjaW5jbHVkZSAiY2hhbm5lbF9tYXAuaCIKKyNpbmNsdWRlICJpbnRlcmZhY2UuaCIgIAorCitzdHJ1Y3QgQklUU1RSRUFNRU5DT0RFUl9JTklUCit7CisgIFdvcmQxNiBuQ2hhbm5lbHM7CisgIFdvcmQzMiBiaXRyYXRlOworICBXb3JkMzIgc2FtcGxlUmF0ZTsKKyAgV29yZDE2IHByb2ZpbGU7Cit9OworCisKKworV29yZDE2IFdyaXRlQml0c3RyZWFtIChIQU5ETEVfQklUX0JVRiBoQml0c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICBFTEVNRU5UX0lORk8gZWxJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICBRQ19PVVQgKnFjT3V0LAorICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUICpwc3lPdXQsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqZ2xvYlVzZWRCaXRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVVdvcmQ4ICphbmNCeXRlcywNCisJCQkJCSAgIFdvcmQxNiBzYW1wbGVyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyNlbmRpZiAvKiBfQklURU5DX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2Jsb2NrX3N3aXRjaC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYmxvY2tfc3dpdGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UzNTgxOQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2Jsb2NrX3N3aXRjaC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJsb2NrX3N3aXRjaC5oDQorDQorCUNvbnRlbnQ6CUJsb2NrIHN3aXRjaGluZyBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0JMT0NLX1NXSVRDSF9ICisjZGVmaW5lIF9CTE9DS19TV0lUQ0hfSAorCisjaW5jbHVkZSAidHlwZWRlZi5oIgorCisKKy8qKioqKioqKioqKioqKioqKiogRGVmaW5lcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEJMT0NLX1NXSVRDSElOR19JSVJfTEVOIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVuZ3RoIG9mIEhpZ2hQYXNzLUZJUi1GaWx0ZXIgZm9yIEF0dGFjay1EZXRlY3Rpb24gKi8KKyNkZWZpbmUgQkxPQ0tfU1dJVENIX1dJTkRPV1MgVFJBTlNfRkFDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2Ygd2luZG93cyBmb3IgZW5lcmd5IGNhbGN1bGF0aW9uICovCisjZGVmaW5lIEJMT0NLX1NXSVRDSF9XSU5ET1dfTEVOIEZSQU1FX0xFTl9TSE9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWluaW1hbCBncmFudWxhcml0eSBvZiBlbmVyZ3kgY2FsY3VsYXRpb24gKi8KKworCisKKy8qKioqKioqKioqKioqKioqKiogU3RydWN0dXJlcyAqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdHsKKyAgV29yZDMyIGludkF0dGFja1JhdGlvOworICBXb3JkMTYgd2luZG93U2VxdWVuY2U7CisgIFdvcmQxNiBuZXh0d2luZG93U2VxdWVuY2U7CisgIEZsYWcgYXR0YWNrOworICBGbGFnIGxhc3RhdHRhY2s7CisgIFdvcmQxNiBhdHRhY2tJbmRleDsKKyAgV29yZDE2IGxhc3RBdHRhY2tJbmRleDsKKyAgV29yZDE2IG5vT2ZHcm91cHM7CisgIFdvcmQxNiBncm91cExlbltUUkFOU19GQUNdOworICBXb3JkMzIgd2luZG93TnJnWzJdW0JMT0NLX1NXSVRDSF9XSU5ET1dTXTsgICAgIC8qIHRpbWUgc2lnbmFsIGVuZXJneSBpbiBTdWJ3aW5kb3dzIChsYXN0IGFuZCBjdXJyZW50KSAqLworICBXb3JkMzIgd2luZG93TnJnRlsyXVtCTE9DS19TV0lUQ0hfV0lORE9XU107ICAgIC8qIGZpbHRlcmVkIHRpbWUgc2lnbmFsIGVuZXJneSBpbiBzZWdtZW50cyAobGFzdCBhbmQgY3VycmVudCkgKi8KKyAgV29yZDMyIGlpclN0YXRlc1tCTE9DS19TV0lUQ0hJTkdfSUlSX0xFTl07ICAgICAvKiBmaWx0ZXIgZGVsYXktbGluZSAqLworICBXb3JkMzIgbWF4V2luZG93TnJnOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1heCBlbmVyZ3kgaW4gc3Vid2luZG93cyAqLworICBXb3JkMzIgYWNjV2luZG93TnJnOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlY3Vyc2l2ZWx5IGFjY3VtdWxhdGVkIHdpbmRvd05yZ0YgKi8KK31CTE9DS19TV0lUQ0hJTkdfQ09OVFJPTDsKKworCisKKworCitXb3JkMTYgSW5pdEJsb2NrU3dpdGNoaW5nKEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiBiaXRSYXRlLCBjb25zdCBXb3JkMTYgbkNoYW5uZWxzKTsKKworV29yZDE2IEJsb2NrU3dpdGNoaW5nKEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICp0aW1lU2lnbmFsLAorCQkJCQkgIFdvcmQzMiAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hJbmNyZW1lbnQpOworCitXb3JkMTYgU3luY0Jsb2NrU3dpdGNoaW5nKEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBCTE9DS19TV0lUQ0hJTkdfQ09OVFJPTCAqYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBub09mQ2hhbm5lbHMpOworCisKKworI2VuZGlmICAvKiAjaWZuZGVmIF9CTE9DS19TV0lUQ0hfSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvY2hhbm5lbF9tYXAuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2NoYW5uZWxfbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNhYThkYwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2NoYW5uZWxfbWFwLmgKQEAgLTAsMCArMSwzNyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJY2hhbm5lbF9tYXAuaA0KKw0KKwlDb250ZW50OgljaGFubmVsIG1hcHBpbmcgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfQ0hBTk5FTF9NQVBfSAorI2RlZmluZSBfQ0hBTk5FTF9NQVBfSAorCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAicWNfZGF0YS5oIgorCitXb3JkMTYgSW5pdEVsZW1lbnRJbmZvIChXb3JkMTYgbkNoYW5uZWxzLCBFTEVNRU5UX0lORk8qIGVsSW5mbyk7CisKK1dvcmQxNiBJbml0RWxlbWVudEJpdHMoRUxFTUVOVF9CSVRTICplbGVtZW50Qml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgRUxFTUVOVF9JTkZPIGVsSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIGJpdHJhdGVUb3QsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBhdmVyYWdlQml0c1RvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHN0YXRpY0JpdHNUb3QpOworCisjZW5kaWYgLyogQ0hBTk5FTF9NQVBfSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvY29uZmlnLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjExYzhmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvY29uZmlnLmgKQEAgLTAsMCArMSwzNiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJY29uZmlnLmgNCisNCisJQ29udGVudDoJYWFjIGVuY29kZXIgcGFyYW1ldGVyDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9BQUNFTkNfQ09ORklHX0hfDQorI2RlZmluZSBfQUFDRU5DX0NPTkZJR19IXw0KKw0KKyNkZWZpbmUgTUFYX0NIQU5ORUxTICAgICAgICAyDQorDQorI2RlZmluZSBBQUNFTkNfQkxPQ0tTSVpFICAgIDEwMjQgICAvKiEgZW5jb2RlciBvbmx5IHRha2VzIEJMT0NLU0laRSBzYW1wbGVzIGF0IGEgdGltZSAqLw0KKyNkZWZpbmUgQUFDRU5DX1RSQU5TX0ZBQyAgICA4ICAgICAgLyohIGVuY29kZXIgc2hvcnQgbG9uZyByYXRpbyAqLw0KKw0KKw0KKyNkZWZpbmUgTUFYQklUU19DT0VGCQk2MTQ0CisjZGVmaW5lIE1JTkJJVFNfQ09FRgkJNzQ0DQorDQorDQorI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvZHluX2JpdHMuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2R5bl9iaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ2OGZhMgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2R5bl9iaXRzLmgKQEAgLTAsMCArMSw4MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJZHluX2JpdHMuaA0KKw0KKwlDb250ZW50OglOb2lzZWxlc3MgY29kZXIgbW9kdWxlIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0RZTl9CSVRTX0gKKyNkZWZpbmUgX19EWU5fQklUU19ICisKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJ0bnMuaCIKKyNpbmNsdWRlICJiaXRfY250LmgiCisKKworCisjZGVmaW5lIE1BWF9TRUNUSU9OUyAgICAgICAgICBNQVhfR1JPVVBFRF9TRkIKKyNkZWZpbmUgU0VDVF9FU0NfVkFMX0xPTkcgICAgMzEKKyNkZWZpbmUgU0VDVF9FU0NfVkFMX1NIT1JUICAgIDcKKyNkZWZpbmUgQ09ERV9CT09LX0JJVFMgICAgICAgIDQKKyNkZWZpbmUgU0VDVF9CSVRTX0xPTkcgICAgICAgIDUKKyNkZWZpbmUgU0VDVF9CSVRTX1NIT1JUICAgICAgIDMKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgV29yZDE2IGNvZGVCb29rOworICBXb3JkMTYgc2ZiU3RhcnQ7CisgIFdvcmQxNiBzZmJDbnQ7CisgIFdvcmQxNiBzZWN0aW9uQml0czsKK30KK1NFQ1RJT05fSU5GTzsKKworCisKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgV29yZDE2IGJsb2NrVHlwZTsKKyAgV29yZDE2IG5vT2ZHcm91cHM7CisgIFdvcmQxNiBzZmJDbnQ7CisgIFdvcmQxNiBtYXhTZmJQZXJHcm91cDsKKyAgV29yZDE2IHNmYlBlckdyb3VwOworICBXb3JkMTYgbm9PZlNlY3Rpb25zOworICBTRUNUSU9OX0lORk8gc2VjdGlvbkluZm9bTUFYX1NFQ1RJT05TXTsKKyAgV29yZDE2IHNpZGVJbmZvQml0czsgICAgICAgICAgICAgLyogc2VjdGlvbmluZyBiaXRzICAgICAgICovCisgIFdvcmQxNiBodWZmbWFuQml0czsgICAgICAgICAgICAgIC8qIGh1ZmZtYW4gICAgY29kZWQgYml0cyAqLworICBXb3JkMTYgc2NhbGVmYWNCaXRzOyAgICAgICAgICAgICAvKiBzY2FsZWZhYyAgIGNvZGVkIGJpdHMgKi8KKyAgV29yZDE2IGZpcnN0U2NmOyAgICAgICAgICAgICAgICAgLyogZmlyc3Qgc2NmIHRvIGJlIGNvZGVkICovCisgIFdvcmQxNiBiaXRMb29rVXBbTUFYX1NGQl9MT05HKihDT0RFX0JPT0tfRVNDX05EWCsxKV07CisgIFdvcmQxNiBtZXJnZUdhaW5Mb29rVXBbTUFYX1NGQl9MT05HXTsKK30KK1NFQ1RJT05fREFUQTsgLyogIFdvcmQxNiBzaXplOiAxMCArIDYwKE1BWF9TRUNUSU9OUykqNChTRUNUSU9OX0lORk8pICsgNTEoTUFYX1NGQl9MT05HKSoxMihDT0RFX0JPT0tfRVNDX05EWCsxKSArIDUxKE1BWF9TRkJfTE9ORykgPSA5MTMgKi8KKworCitXb3JkMTYgQkNJbml0KHZvaWQpOworCitXb3JkMTYgZHluQml0Q291bnQoY29uc3QgV29yZDE2ICpxdWFudFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFVXb3JkMTYgKm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpzY2FsZWZhYywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgYmxvY2tUeXBlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBzZmJDbnQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBzZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICBTRUNUSU9OX0RBVEEgKnNlY3Rpb25EYXRhKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9ncnBfZGF0YS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvZ3JwX2RhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjY2NTc3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvZ3JwX2RhdGEuaApAQCAtMCwwICsxLDQ0IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlncnBfZGF0YS5oDQorDQorCUNvbnRlbnQ6CVNob3J0IGJsb2NrIGdyb3VwaW5nIGZ1bmN0aW9uDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0dSUF9EQVRBX0hfXworI2RlZmluZSBfX0dSUF9EQVRBX0hfXworI2luY2x1ZGUgInBzeV9kYXRhLmgiCisjaW5jbHVkZSAidHlwZWRlZnMuaCIKKwordm9pZAorZ3JvdXBTaG9ydERhdGEoV29yZDMyICAgICAgICAqbWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAqdG1wU3BlY3RydW0sCisgICAgICAgICAgICAgICBTRkJfVEhSRVNIT0xEICpzZmJUaHJlc2hvbGQsCisgICAgICAgICAgICAgICBTRkJfRU5FUkdZICAgICpzZmJFbmVyZ3ksCisgICAgICAgICAgICAgICBTRkJfRU5FUkdZICAgICpzZmJFbmVyZ3lNUywKKyAgICAgICAgICAgICAgIFNGQl9FTkVSR1kgICAgKnNmYlNwcmVhZGVkRW5lcmd5LAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgc2ZiQ250LAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAqc2ZiTWluU25yLAorICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAqZ3JvdXBlZFNmYk9mZnNldCwKKyAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgKm1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAqZ3JvdXBlZFNmYk1pblNuciwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIG5vT2ZHcm91cHMsCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICpncm91cExlbik7CisKKyNlbmRpZiAvKiBfSU5URVJGQUNFX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2ludGVyZmFjZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvaW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg0MzM0YQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsMTA2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlpbnRlcmZhY2UuaA0KKw0KKwlDb250ZW50Oglwc3ljaG9hY2NvdXN0aWMvcXVhbnRpemVyIHN0cnVjdHVyZXMgYW5kIGludGVyZmFjZQ0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0lOVEVSRkFDRV9ICisjZGVmaW5lIF9JTlRFUkZBQ0VfSAorCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgInBzeV9kYXRhLmgiCisjaW5jbHVkZSAidHlwZWRlZnMuaCIKKworCitlbnVtCit7CisgIE1TX05PTkUgPSAwLAorICBNU19TT01FID0gMSwKKyAgTVNfQUxMICA9IDIKK307CisKK2VudW0KK3sKKyAgTVNfT04gPSAxCit9OworCitzdHJ1Y3QgVE9PTFNJTkZPIHsKKyAgV29yZDE2IG1zRGlnZXN0OworICBXb3JkMTYgbXNNYXNrW01BWF9HUk9VUEVEX1NGQl07Cit9OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgV29yZDE2ICBzZmJDbnQ7CisgIFdvcmQxNiAgc2ZiUGVyR3JvdXA7CisgIFdvcmQxNiAgbWF4U2ZiUGVyR3JvdXA7CisgIFdvcmQxNiAgd2luZG93U2VxdWVuY2U7CisgIFdvcmQxNiAgd2luZG93U2hhcGU7CisgIFdvcmQxNiAgZ3JvdXBpbmdNYXNrOworICBXb3JkMTYgIHNmYk9mZnNldHNbTUFYX0dST1VQRURfU0ZCKzFdOworICBXb3JkMTYgIG1kY3RTY2FsZTsgCisgIFdvcmQzMiAqc2ZiRW5lcmd5OyAKKyAgV29yZDMyICpzZmJTcHJlYWRlZEVuZXJneTsKKyAgV29yZDMyICpzZmJUaHJlc2hvbGQ7ICAgICAgIAorICBXb3JkMzIgKm1kY3RTcGVjdHJ1bTsgICAgICAgIAorICBXb3JkMzIgIHNmYkVuU3VtTFI7CisgIFdvcmQzMiAgc2ZiRW5TdW1NUzsKKyAgV29yZDMyIHNmYkRpc3RbTUFYX0dST1VQRURfU0ZCXTsKKyAgV29yZDMyIHNmYkRpc3ROZXdbTUFYX0dST1VQRURfU0ZCXTsKKyAgV29yZDE2ICBzZmJNaW5TbnJbTUFYX0dST1VQRURfU0ZCXTsKKyAgV29yZDE2IG1pblNmTWF4UXVhbnRbTUFYX0dST1VQRURfU0ZCXTsKKyAgV29yZDE2IG1pblNjZkNhbGN1bGF0ZWRbTUFYX0dST1VQRURfU0ZCXTsKKyAgV29yZDE2IHByZXZTY2ZMYXN0W01BWF9HUk9VUEVEX1NGQl07CisgIFdvcmQxNiBwcmV2U2NmTmV4dFtNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMTYgZGVsdGFQZUxhc3RbTUFYX0dST1VQRURfU0ZCXTsKKyAgVE5TX0lORk8gdG5zSW5mbzsKK30gUFNZX09VVF9DSEFOTkVMOyAvKiBXb3JkMTYgc2l6ZTogMTQgKyA2MChNQVhfR1JPVVBFRF9TRkIpICsgMTEyKFROU19JTkZPKSA9IDE4NiAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgIHN0cnVjdCBUT09MU0lORk8gdG9vbHNJbmZvOworICBXb3JkMTYgZ3JvdXBlZFNmYk9mZnNldFtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQisxXTsgIC8qIHBsdXMgb25lIGZvciBsYXN0IGR1bW15IG9mZnNldCAhICovCisgIFdvcmQxNiBncm91cGVkU2ZiTWluU25yW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXTsKK30gUFNZX09VVF9FTEVNRU5UOworCit0eXBlZGVmIHN0cnVjdCB7CisgIC8qIGluZm9ybWF0aW9uIHNoYXJlZCBieSBib3RoIGNoYW5uZWxzICAqLworICBQU1lfT1VUX0VMRU1FTlQgIHBzeU91dEVsZW1lbnQ7CisgIC8qIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIGVhY2ggY2hhbm5lbCAqLworICBQU1lfT1VUX0NIQU5ORUwgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXTsKK31QU1lfT1VUOworCit2b2lkIEJ1aWxkSW50ZXJmYWNlKFdvcmQzMiAgICAgICAgICAgICAgICAgKm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgbWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICBTRkJfVEhSRVNIT0xEICAgICAgICAgICpzZmJUaHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgIFNGQl9FTkVSR1kgICAgICAgICAgICAgKnNmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgU0ZCX0VORVJHWSAgICAgICAgICAgICAqc2ZiU3ByZWFkZWRFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNGQl9FTkVSR1lfU1VNICAgIHNmYkVuZXJneVN1bUxSLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBTRkJfRU5FUkdZX1NVTSAgICBzZmJFbmVyZ3lTdW1NUywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgd2luZG93U2VxdWVuY2UsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgIHdpbmRvd1NoYXBlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICBzZmJDbnQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgKnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgKmdyb3VwZWRTZmJNaW5TbnIsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgIG5vT2ZHcm91cHMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgKmdyb3VwTGVuLAorICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgICAgICAgICpwc3lPdXRDaCk7CisKKyNlbmRpZiAvKiBfSU5URVJGQUNFX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2xpbmVfcGUuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2xpbmVfcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWQ5MzhiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvbGluZV9wZS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWxpbmVfcGUuaA0KKw0KKwlDb250ZW50OglQZXJjZXB0dWFsIGVudHJvcGllIG1vZHVsZSBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19MSU5FX1BFX0gKKyNkZWZpbmUgX19MSU5FX1BFX0gKKworCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiIAorI2luY2x1ZGUgImludGVyZmFjZS5oIiAKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICBXb3JkMTYgc2ZiTGRFbmVyZ3lbTUFYX0dST1VQRURfU0ZCXTsgICAgIC8qIDQqbG9nKHNmYkVuZXJneSkvbG9nKDIpICovCisgICBXb3JkMTYgc2ZiTkxpbmVzNFtNQVhfR1JPVVBFRF9TRkJdOyAgICAgIC8qIDQqbnVtYmVyIG9mIHJlbGV2YW50IGxpbmVzIGluIHNmYiAqLworICAgV29yZDE2IHNmYlBlW01BWF9HUk9VUEVEX1NGQl07ICAgICAgICAgICAvKiBwZSBmb3IgZWFjaCBzZmIgKi8KKyAgIFdvcmQxNiBzZmJDb25zdFBhcnRbTUFYX0dST1VQRURfU0ZCXTsgICAgLyogY29uc3RhbnQgcGFydCBmb3IgZWFjaCBzZmIgKi8KKyAgIFdvcmQxNiBzZmJOQWN0aXZlTGluZXNbTUFYX0dST1VQRURfU0ZCXTsgLyogbnVtYmVyIG9mIGFjdGl2ZSBsaW5lcyBpbiBzZmIgKi8KKyAgIFdvcmQxNiBwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3VtIG9mIHNmYlBlICovCisgICBXb3JkMTYgY29uc3RQYXJ0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN1bSBvZiBzZmJDb25zdFBhcnQgKi8KKyAgIFdvcmQxNiBuQWN0aXZlTGluZXM7ICAgICAgICAgICAgICAgICAgICAgLyogc3VtIG9mIHNmYk5BY3RpdmVMaW5lcyAqLworfSBQRV9DSEFOTkVMX0RBVEE7IC8qIHNpemUgV29yZDE2OiAzMDMgKi8KKworCit0eXBlZGVmIHN0cnVjdCB7CisgICBQRV9DSEFOTkVMX0RBVEEgcGVDaGFubmVsRGF0YVtNQVhfQ0hBTk5FTFNdOworICAgV29yZDE2IHBlOworICAgV29yZDE2IGNvbnN0UGFydDsKKyAgIFdvcmQxNiBuQWN0aXZlTGluZXM7CisgICBXb3JkMTYgb2Zmc2V0OworICAgV29yZDE2IGFoRmxhZ1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl07CisgICBXb3JkMzIgdGhyRXhwW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXTsKKyAgIFdvcmQzMiBzZmJQZUZhY3RvcnNbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdOworfSBQRV9EQVRBOyAvKiBzaXplIFdvcmQxNjogMzAzICsgNCArIDEyMCArIDI0MCA9IDY2NyAqLworCisKKworCit2b2lkIHByZXBhcmVTZmJQZShQRV9EQVRBICpwZURhdGEsCisgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgIFdvcmQxNiBsb2dTZmJFbmVyZ3lbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYk5SZWxldmFudExpbmVzW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgcGVPZmZzZXQpOworCisKKworCisKK3ZvaWQgY2FsY1NmYlBlKFBFX0RBVEEgKnBlRGF0YSwKKyAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbkNoYW5uZWxzKTsKKworCisKKworI2VuZGlmIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvbWVtYWxpZ24uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL21lbWFsaWduLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IzMDJhNwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL21lbWFsaWduLmgKQEAgLTAsMCArMSwzNSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJbWVtYWxpZ24uaA0KKw0KKwlDb250ZW50OglNZW1vcnkgYWxsb2MgYWxpZ25tZW50cyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX19WT19BQUNFTkNfTUVNX0FMSUdOX0hfXw0KKyNkZWZpbmUgX19WT19BQUNFTkNfTUVNX0FMSUdOX0hfXw0KKw0KKyNpbmNsdWRlICJ2b01lbS5oIg0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorDQorZXh0ZXJuIHZvaWQgKm1lbV9tYWxsb2MoVk9fTUVNX09QRVJBVE9SICpwTWVtb3AsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBjaGFyIGFsaWdubWVudCwgdW5zaWduZWQgaW50IENvZGVjSUQpOw0KK2V4dGVybiB2b2lkIG1lbV9mcmVlKFZPX01FTV9PUEVSQVRPUiAqcE1lbW9wLCB2b2lkICptZW1fcHRyLCB1bnNpZ25lZCBpbnQgQ29kZWNJRCk7DQorDQorI2VuZGlmCS8qIF9fVk9fTUVNX0FMSUdOX0hfXyAqLw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL21zX3N0ZXJlby5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvbXNfc3RlcmVvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0M2RlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9tc19zdGVyZW8uaApAQCAtMCwwICsxLDQ1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQltc19zdGVyZW8uaA0KKw0KKwlDb250ZW50OglEZWNsYXJhdGlvbiBNUyBzdGVyZW8gcHJvY2Vzc2luZyBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19NU19TVEVSRU9fSF9fCisjZGVmaW5lIF9fTVNfU1RFUkVPX0hfXworI2luY2x1ZGUgInR5cGVkZWYuaCIKKwordm9pZCBNc1N0ZXJlb1Byb2Nlc3NpbmcoV29yZDMyICAgICAgICpzZmJFbmVyZ3lMZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpzZmJFbmVyZ3lSaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAqc2ZiRW5lcmd5TWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyICpzZmJFbmVyZ3lTaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICptZGN0U3BlY3RydW1MZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICptZGN0U3BlY3RydW1SaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqc2ZiVGhyZXNob2xkTGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqc2ZiVGhyZXNob2xkUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKnNmYlNwcmVhZGVkRW5MZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpzZmJTcHJlYWRlZEVuUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKm1zRGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICptc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgc2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpzZmJPZmZzZXQpOworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHJlX2VjaG9fY29udHJvbC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHJlX2VjaG9fY29udHJvbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZjM2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wcmVfZWNob19jb250cm9sLmgKQEAgLTAsMCArMSw0MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcHJlX2VjaG9fY29udHJvbC5oDQorDQorCUNvbnRlbnQ6CVByZSBlY2hvIGNvbnRyb2wgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX1BSRV9FQ0hPX0NPTlRST0xfSAorI2RlZmluZSBfX1BSRV9FQ0hPX0NPTlRST0xfSAorCisjaW5jbHVkZSAidHlwZWRlZnMuaCIKKwordm9pZCBJbml0UHJlRWNob0NvbnRyb2woV29yZDMyICpwYlRocmVzaG9sZG5tMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgbnVtUGIsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnBiVGhyZXNob2xkUXVpZXQpOworCisKK3ZvaWQgUHJlRWNob0NvbnRyb2woV29yZDMyICpwYlRocmVzaG9sZE5tMSwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBudW1QYiwKKyAgICAgICAgICAgICAgICAgICAgV29yZDMyICBtYXhBbGxvd2VkSW5jcmVhc2VGYWN0b3IsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnBiVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgIG1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBtZGN0U2NhbGVubTEpOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X2NvbmZpZ3VyYXRpb24uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3BzeV9jb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNjZjI1YgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3BzeV9jb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXBzeV9jb25maWd1cmF0aW9uLmgNCisNCisJQ29udGVudDoJUHN5Y2hvYWNjb3VzdGljIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGFuZCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9QU1lfQ09ORklHVVJBVElPTl9ICisjZGVmaW5lIF9QU1lfQ09ORklHVVJBVElPTl9ICisNCisjaW5jbHVkZSAidHlwZWRlZnMuaCIKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJ0bnMuaCIKKwordHlwZWRlZiBzdHJ1Y3R7CisKKyAgV29yZDE2IHNmYkNudDsKKyAgV29yZDE2IHNmYkFjdGl2ZTsgICAvKiBudW1iZXIgb2Ygc2YgYmFuZHMgY29udGFpbmluZyBlbmVyZ3kgYWZ0ZXIgbG93cGFzcyAqLworICBXb3JkMTYgKnNmYk9mZnNldDsKKworICBXb3JkMzIgc2ZiVGhyZXNob2xkUXVpZXRbTUFYX1NGQl9MT05HXTsKKworICBXb3JkMTYgbWF4QWxsb3dlZEluY3JlYXNlRmFjdG9yOyAgIC8qIHByZWVjaG8gY29udHJvbCAqLworICBXb3JkMTYgbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yOworCisgIFdvcmQxNiBsb3dwYXNzTGluZTsNCisgIFdvcmQxNiBzYW1wUmF0ZUlkeDsKKyAgV29yZDMyIGNsaXBFbmVyZ3k7ICAgICAgICAgICAgICAgICAvKiBmb3IgbGV2ZWwgZGVwZW5kZW5kIHRtbiAqLworCisgIFdvcmQxNiByYXRpbzsKKyAgV29yZDE2IHNmYk1hc2tMb3dGYWN0b3JbTUFYX1NGQl9MT05HXTsKKyAgV29yZDE2IHNmYk1hc2tIaWdoRmFjdG9yW01BWF9TRkJfTE9OR107CisKKyAgV29yZDE2IHNmYk1hc2tMb3dGYWN0b3JTcHJFbltNQVhfU0ZCX0xPTkddOworICBXb3JkMTYgc2ZiTWFza0hpZ2hGYWN0b3JTcHJFbltNQVhfU0ZCX0xPTkddOworCisKKyAgV29yZDE2IHNmYk1pblNucltNQVhfU0ZCX0xPTkddOyAgICAgICAvKiBtaW5pbXVtIHNuciAoZm9ybWVybHkga25vd24gYXMgYm1heCkgKi8KKworICBUTlNfQ09ORklHIHRuc0NvbmY7CisKK31QU1lfQ09ORklHVVJBVElPTl9MT05HOyAvKldvcmQxNiBzaXplOiA4ICsgNTIgKyAxMDIgKyA1MSArIDUxICsgNTEgKyA1MSArIDQ3ID0gNTE1ICovCisKKwordHlwZWRlZiBzdHJ1Y3R7CisKKyAgV29yZDE2IHNmYkNudDsKKyAgV29yZDE2IHNmYkFjdGl2ZTsgICAvKiBudW1iZXIgb2Ygc2YgYmFuZHMgY29udGFpbmluZyBlbmVyZ3kgYWZ0ZXIgbG93cGFzcyAqLworICBXb3JkMTYgKnNmYk9mZnNldDsKKworICBXb3JkMzIgc2ZiVGhyZXNob2xkUXVpZXRbTUFYX1NGQl9TSE9SVF07CisKKyAgV29yZDE2IG1heEFsbG93ZWRJbmNyZWFzZUZhY3RvcjsgICAvKiBwcmVlY2hvIGNvbnRyb2wgKi8KKyAgV29yZDE2IG1pblJlbWFpbmluZ1RocmVzaG9sZEZhY3RvcjsKKworICBXb3JkMTYgbG93cGFzc0xpbmU7DQorICBXb3JkMTYgc2FtcFJhdGVJZHg7CisgIFdvcmQzMiBjbGlwRW5lcmd5OyAgICAgICAgICAgICAgICAgLyogZm9yIGxldmVsIGRlcGVuZGVuZCB0bW4gKi8KKworICBXb3JkMTYgcmF0aW87CisgIFdvcmQxNiBzZmJNYXNrTG93RmFjdG9yW01BWF9TRkJfU0hPUlRdOworICBXb3JkMTYgc2ZiTWFza0hpZ2hGYWN0b3JbTUFYX1NGQl9TSE9SVF07CisKKyAgV29yZDE2IHNmYk1hc2tMb3dGYWN0b3JTcHJFbltNQVhfU0ZCX1NIT1JUXTsKKyAgV29yZDE2IHNmYk1hc2tIaWdoRmFjdG9yU3ByRW5bTUFYX1NGQl9TSE9SVF07CisKKworICBXb3JkMTYgc2ZiTWluU25yW01BWF9TRkJfU0hPUlRdOyAgICAgICAvKiBtaW5pbXVtIHNuciAoZm9ybWVybHkga25vd24gYXMgYm1heCkgKi8KKworICBUTlNfQ09ORklHIHRuc0NvbmY7CisKK31QU1lfQ09ORklHVVJBVElPTl9TSE9SVDsgLypXb3JkMTYgc2l6ZTogOCArIDE2ICsgMTYgKyAxNiArIDE2ICsgMTYgKyAxNiArIDE2ICsgNDcgPSAxNjcgKi8KKw0KKw0KKy8qIFJldHVybnMgdGhlIHNhbXBsZSByYXRlIGluZGV4ICovDQorV29yZDMyIEdldFNSSW5kZXgoV29yZDMyIHNhbXBsZVJhdGUpOw0KKworCitXb3JkMTYgSW5pdFBzeUNvbmZpZ3VyYXRpb25Mb25nKFdvcmQzMiBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgc2FtcGxlcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGJhbmR3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX0NPTkZJR1VSQVRJT05fTE9ORyAqcHN5Q29uZik7CisKK1dvcmQxNiBJbml0UHN5Q29uZmlndXJhdGlvblNob3J0KFdvcmQzMiBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZXJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYmFuZHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX0NPTkZJR1VSQVRJT05fU0hPUlQgKnBzeUNvbmYpOworCisjZW5kaWYgLyogX1BTWV9DT05GSUdVUkFUSU9OX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3BzeV9jb25zdC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X2NvbnN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ1NWFiMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3BzeV9jb25zdC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXBzeV9jb25zdC5oDQorDQorCUNvbnRlbnQ6CUdsb2JhbCBwc3ljaG9hY291c3RpYyBjb25zdGFudHMgc3RydWN0dXJlcw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1BTWUNPTlNUX0gKKyNkZWZpbmUgX1BTWUNPTlNUX0gKKworI2luY2x1ZGUgImNvbmZpZy5oIg0KKworI2RlZmluZSBUUlVFICAxCisjZGVmaW5lIEZBTFNFIDAKKworI2RlZmluZSBGUkFNRV9MRU5fTE9ORyAgICBBQUNFTkNfQkxPQ0tTSVpFCisjZGVmaW5lIFRSQU5TX0ZBQyAgICAgICAgIDgKKyNkZWZpbmUgRlJBTUVfTEVOX1NIT1JUICAgKEZSQU1FX0xFTl9MT05HL1RSQU5TX0ZBQykNCisNCisKKworLyogQmxvY2sgdHlwZXMgKi8KK2VudW0KK3sKKyAgTE9OR19XSU5ET1cgPSAwLAorICBTVEFSVF9XSU5ET1csCisgIFNIT1JUX1dJTkRPVywKKyAgU1RPUF9XSU5ET1cKK307CisKKy8qIFdpbmRvdyBzaGFwZXMgKi8KK2VudW0KK3sKKyAgU0lORV9XSU5ET1cgPSAwLAorICBLQkRfV0lORE9XICA9IDEKK307CisKKy8qCisgIE1TIHN0dWZmCisqLworZW51bQoreworICBTSV9NU19NQVNLX05PTkUgPSAwLAorICBTSV9NU19NQVNLX1NPTUUgPSAxLAorICBTSV9NU19NQVNLX0FMTCAgPSAyCit9OworCisjZGVmaW5lIE1BWF9OT19PRl9HUk9VUFMgNAorI2RlZmluZSBNQVhfU0ZCX1NIT1JUICAgMTUgIC8qIDE1IGZvciBhIG1lbW9yeSBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24sIG1heWJlIDE2IGZvciBjb252ZW5pZW50IGRlYnVnZ2luZyAqLworI2RlZmluZSBNQVhfU0ZCX0xPTkcgICAgNTEgIC8qIDUxIGZvciBhIG1lbW9yeSBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24sIG1heWJlIDY0IGZvciBjb252ZW5pZW50IGRlYnVnZ2luZyAqLworI2RlZmluZSBNQVhfU0ZCICAgICAgICAgKE1BWF9TRkJfU0hPUlQgPiBNQVhfU0ZCX0xPTkcgPyBNQVhfU0ZCX1NIT1JUIDogTUFYX1NGQl9MT05HKSAgIC8qID0gTUFYX1NGQl9MT05HICovCisjZGVmaW5lIE1BWF9HUk9VUEVEX1NGQiAoTUFYX05PX09GX0dST1VQUypNQVhfU0ZCX1NIT1JUID4gTUFYX1NGQl9MT05HID8gXAorICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9OT19PRl9HUk9VUFMqTUFYX1NGQl9TSE9SVCA6IE1BWF9TRkJfTE9ORykKKworI2RlZmluZSBCTE9DS19TV0lUQ0hJTkdfT0ZGU0VUCQkgICAoMSoxMDI0KzMqMTI4KzY0KzEyOCkKKyNkZWZpbmUgQkxPQ0tfU1dJVENISU5HX0RBVEFfU0laRSAgICAgICAgICBGUkFNRV9MRU5fTE9ORworCQkJCQkJCQkJCSAgICAKKyNkZWZpbmUgVFJBTlNGT1JNX09GRlNFVF9MT05HICAgIDAKKyNkZWZpbmUgVFJBTlNGT1JNX09GRlNFVF9TSE9SVCAgIDQ0OAorCisjZGVmaW5lIExPR19OT1JNX1BDTSAgICAgICAgICAtMTUKKw0KKyNkZWZpbmUgTlVNX1NBTVBMRV9SQVRFUwkxMgorCisjZW5kaWYgLyogX1BTWUNPTlNUX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3BzeV9kYXRhLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wc3lfZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MTJkNTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wc3lfZGF0YS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXBzeV9kYXRhLmgNCisNCisJQ29udGVudDoJUHN5Y2hvYWNvdXN0aWMgZGF0YSBhbmQgc3RydWN0dXJlcw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1BTWV9EQVRBX0gKKyNkZWZpbmUgX1BTWV9EQVRBX0gKKworI2luY2x1ZGUgImJsb2NrX3N3aXRjaC5oIgorI2luY2x1ZGUgInRucy5oIgorCisvKgorICB0aGUgc3RydWN0cyBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgdW5pb25zCisqLworCit0eXBlZGVmIHN0cnVjdHsKKyAgV29yZDMyIHNmYkxvbmdbTUFYX0dST1VQRURfU0ZCXTsKKyAgV29yZDMyIHNmYlNob3J0W1RSQU5TX0ZBQ11bTUFYX1NGQl9TSE9SVF07Cit9U0ZCX1RIUkVTSE9MRDsgLyogV29yZDE2IHNpemU6IDI2MCAqLworCit0eXBlZGVmIHN0cnVjdHsKKyAgV29yZDMyIHNmYkxvbmdbTUFYX0dST1VQRURfU0ZCXTsKKyAgV29yZDMyIHNmYlNob3J0W1RSQU5TX0ZBQ11bTUFYX1NGQl9TSE9SVF07Cit9U0ZCX0VORVJHWTsgLyogV29yZDE2IHNpemU6IDI2MCAqLworCit0eXBlZGVmIHN0cnVjdHsKKyAgV29yZDMyIHNmYkxvbmc7CisgIFdvcmQzMiBzZmJTaG9ydFtUUkFOU19GQUNdOworfVNGQl9FTkVSR1lfU1VNOyAvKiBXb3JkMTYgc2l6ZTogMTggKi8KKworCit0eXBlZGVmIHN0cnVjdHsKKyAgQkxPQ0tfU1dJVENISU5HX0NPTlRST0wgICBibG9ja1N3aXRjaGluZ0NvbnRyb2w7ICAgICAgICAgIC8qIGJsb2NrIHN3aXRjaGluZyAqLworICBXb3JkMTYgICAgICAgICAgICAgICAgICAgICptZGN0RGVsYXlCdWZmZXI7ICAgICAgICAgICAgICAgLyogbWRjdCBkZWxheSBidWZmZXIgW0JMT0NLX1NXSVRDSElOR19PRkZTRVRdKi8KKyAgV29yZDMyICAgICAgICAgICAgICAgICAgICBzZmJUaHJlc2hvbGRubTFbTUFYX1NGQl07ICAgICAgIC8qIFByZUVjaG9Db250cm9sICovCisgIFdvcmQxNiAgICAgICAgICAgICAgICAgICAgbWRjdFNjYWxlbm0xOyAgICAgICAgICAgICAgICAgICAvKiBzY2FsZSBvZiBsYXN0IGJsb2NrJ3MgbWRjdCAoUHJlRWNob0NvbnRyb2wpICovCisKKyAgU0ZCX1RIUkVTSE9MRCAgICAgICAgICAgICBzZmJUaHJlc2hvbGQ7ICAgICAgICAgICAgICAgICAgIC8qIGFkYXB0ICAgICAgICAgICAqLworICBTRkJfRU5FUkdZICAgICAgICAgICAgICAgIHNmYkVuZXJneTsgICAgICAgICAgICAgICAgICAgICAgLyogc2ZiIEVuZXJneSAgICAgICovCisgIFNGQl9FTkVSR1kgICAgICAgICAgICAgICAgc2ZiRW5lcmd5TVM7CisgIFNGQl9FTkVSR1lfU1VNICAgICAgICAgICAgc2ZiRW5lcmd5U3VtOworICBTRkJfRU5FUkdZX1NVTSAgICAgICAgICAgIHNmYkVuZXJneVN1bU1TOworICBTRkJfRU5FUkdZICAgICAgICAgICAgICAgIHNmYlNwcmVhZGVkRW5lcmd5OworCisgIFdvcmQzMiAgICAgICAgICAgICAgICAgICAgKm1kY3RTcGVjdHJ1bTsgICAgICAgICAgICAgICAgICAvKiBtZGN0IHNwZWN0cnVtIFtGUkFNRV9MRU5fTE9OR10gKi8KKyAgV29yZDE2ICAgICAgICAgICAgICAgICAgICBtZGN0U2NhbGU7ICAgICAgICAgICAgICAgICAgICAgIC8qIHNjYWxlIG9mIG1kY3QgICAqLworfVBTWV9EQVRBOyAvKiBXb3JkMTYgc2l6ZTogNCArIDg3ICsgMTAyICsgMzYwICsgMzYwICsgMzYwICsgMTggKyAxOCArIDM2MCA9IDE2NjkgKi8KKworI2VuZGlmIC8qIF9QU1lfREFUQV9IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wc3lfbWFpbi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjBiOGIxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X21haW4uaApAQCAtMCwwICsxLDY5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlwc3lfbWFpbi5oDQorDQorCUNvbnRlbnQ6CVBzeWNob2Fjb3VzdGljIG1ham9yIGZ1bmN0aW9uIGJsb2NrDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfUFNZTUFJTl9ICisjZGVmaW5lIF9QU1lNQUlOX0gKKworI2luY2x1ZGUgInBzeV9jb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAicWNfZGF0YS5oIgorI2luY2x1ZGUgIm1lbWFsaWduLmgiCisKKy8qCisgIHBzeSBrZXJuZWwKKyovCit0eXBlZGVmIHN0cnVjdCAgeworICBQU1lfQ09ORklHVVJBVElPTl9MT05HICBwc3lDb25mTG9uZzsgICAgICAgICAgIC8qIFdvcmQxNiBzaXplOiA1MTUgKi8KKyAgUFNZX0NPTkZJR1VSQVRJT05fU0hPUlQgcHN5Q29uZlNob3J0OyAgICAgICAgICAvKiBXb3JkMTYgc2l6ZTogMTY3ICovCisgIFBTWV9EQVRBICAgICAgICAgICAgICAgIHBzeURhdGFbTUFYX0NIQU5ORUxTXTsgLyogV29yZDE2IHNpemU6IE1BWF9DSEFOTkVMUyoxNjY5Ki8KKyAgVE5TX0RBVEEgICAgICAgICAgICAgICAgdG5zRGF0YVtNQVhfQ0hBTk5FTFNdOyAvKiBXb3JkMTYgc2l6ZTogTUFYX0NIQU5ORUxTKjIzNSAqLworICBXb3JkMzIqICAgICAgICAgICAgICAgICBwU2NyYXRjaFRuczsNCisgIFdvcmQxNgkJCQkgIHNhbXBsZVJhdGVJZHg7Cit9UFNZX0tFUk5FTDsgLyogV29yZDE2IHNpemU6IDI1ODcgLyA0NDkxICovCisKKworV29yZDE2IFBzeU5ldyggUFNZX0tFUk5FTCAgKmhQc3ksIFdvcmQzMiBuQ2hhbiwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOworV29yZDE2IFBzeURlbGV0ZSggUFNZX0tFUk5FTCAgKmhQc3ksIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKTsKKworV29yZDE2IFBzeU91dE5ldyggUFNZX09VVCAqaFBzeU91dCwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOworV29yZDE2IFBzeU91dERlbGV0ZSggUFNZX09VVCAqaFBzeU91dCwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOworCitXb3JkMTYgcHN5TWFpbkluaXQoIFBTWV9LRVJORUwgKmhQc3ksCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICBXb3JkMzIgYml0UmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgdG5zTWFzaywKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2IGJhbmR3aWR0aCk7CisKKworV29yZDE2IHBzeU1haW4oV29yZDE2ICAgICAgICAgICAgICAgICAgIG5DaGFubmVscywgICAvKiE8IHRvdGFsIG51bWJlciBvZiBjaGFubmVscyAqLyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICBFTEVNRU5UX0lORk8gICAgICAgICAgICAgKmVsZW1JbmZvLAorICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICAgICAgICAgICp0aW1lU2lnbmFsLCAvKiE8IGludGVybGVhdmVkIHRpbWUgc2lnbmFsICovIAorICAgICAgICAgICAgICAgUFNZX0RBVEEgICAgICAgICAgICAgICAgIHBzeURhdGFbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIFROU19EQVRBICAgICAgICAgICAgICAgICB0bnNEYXRhW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9MT05HKiAgcHN5Q29uZkxvbmcsCisgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9TSE9SVCogcHN5Q29uZlNob3J0LAorICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMICAgICAgICAgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIFBTWV9PVVRfRUxFTUVOVCAgICAgICAgICAqcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAgICAgICAgICAgICAqcFNjcmF0Y2hUbnMsCisJCQkgICBXb3JkMzIJCQkJCXNhbXBsZVJhdGUpOworCisjZW5kaWYgLyogX1BTWU1BSU5fSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcWNfZGF0YS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcWNfZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZDQwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9xY19kYXRhLmgKQEAgLTAsMCArMSwxNDMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXFjX2RhdGEuaA0KKw0KKwlDb250ZW50OglRdWFudGl6aW5nICYgY29kaW5nIHN0cnVjdHVyZXMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9RQ19EQVRBX0gKKyNkZWZpbmUgX1FDX0RBVEFfSAorCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAiZHluX2JpdHMuaCIKKyNpbmNsdWRlICJhZGpfdGhyX2RhdGEuaCIKKworCisjZGVmaW5lIE1BWF9NT0RFUyAxMAorCit0eXBlZGVmIGVudW0geworICBNT0RFX0lOVkFMSUQgPSAwLAorICBNT0RFXzEsICAgICAgICAvKiBtb25vICAgICAgKi8KKyAgTU9ERV8xXzEsICAgICAgLyogZHVhbCBtb25vICovCisgIE1PREVfMiAgICAgICAgIC8qIHN0ZXJlbyAgICAqLworfSBFTkNPREVSX01PREU7CisKK3R5cGVkZWYgZW51bSB7CisgIElEX1NDRT0wLCAgICAgLyogU2luZ2xlIENoYW5uZWwgRWxlbWVudCAgICovCisgIElEX0NQRT0xLCAgICAgLyogQ2hhbm5lbCBQYWlyIEVsZW1lbnQgICAgICovCisgIElEX0NDRT0yLCAgICAgLyogQ291cGxpbmcgQ2hhbm5lbCBFbGVtZW50ICovCisgIElEX0xGRT0zLCAgICAgLyogTEZFIENoYW5uZWwgRWxlbWVudCAgICAgICovCisgIElEX0RTRT00LCAgICAgLyogY3VycmVudCBvbmUgRFNFIGVsZW1lbnQgZm9yIGFuY2lsbGFyeSBpcyBzdXBwb3J0ZWQgKi8KKyAgSURfUENFPTUsCisgIElEX0ZJTD02LAorICBJRF9FTkQ9NworfUVMRU1FTlRfVFlQRTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBFTEVNRU5UX1RZUEUgZWxUeXBlOworICBXb3JkMTYgaW5zdGFuY2VUYWc7CisgIFdvcmQxNiBuQ2hhbm5lbHNJbkVsOworICBXb3JkMTYgQ2hhbm5lbEluZGV4W01BWF9DSEFOTkVMU107Cit9IEVMRU1FTlRfSU5GTzsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBXb3JkMzIgcGFkZGluZ1Jlc3Q7Cit9IFBBRERJTkc7CisKKworLyogUXVhbnRpemluZyAmIGNvZGluZyBzdGFnZSAqLworCitzdHJ1Y3QgUUNfSU5JVHsKKyAgRUxFTUVOVF9JTkZPICplbEluZm87CisgIFdvcmQxNiBtYXhCaXRzOyAgICAgLyogbWF4aW11bSBudW1iZXIgb2YgYml0cyBpbiByZXNlcnZvaXIgICovCisgIFdvcmQxNiBhdmVyYWdlQml0czsgLyogYXZlcmFnZSBudW1iZXIgb2YgYml0cyB3ZSBzaG91bGQgdXNlICovCisgIFdvcmQxNiBiaXRSZXM7CisgIFdvcmQxNiBtZWFuUGU7CisgIFdvcmQzMiBjaEJpdHJhdGU7CisgIFdvcmQxNiBtYXhCaXRGYWM7CisgIFdvcmQzMiBiaXRyYXRlOworCisgIFBBRERJTkcgcGFkZGluZzsKK307CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIFdvcmQxNiAgICAgICAgICAqcXVhbnRTcGVjOyAgICAgICAvKiBbRlJBTUVfTEVOX0xPTkddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVV29yZDE2ICAgICAgICAgKm1heFZhbHVlSW5TZmI7ICAgLyogW01BWF9HUk9VUEVEX1NGQl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgV29yZDE2ICAgICAgICAgICpzY2Y7ICAgICAgICAgICAgIC8qIFtNQVhfR1JPVVBFRF9TRkJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFdvcmQxNiAgICAgICAgICBnbG9iYWxHYWluOworICBXb3JkMTYgICAgICAgICAgbWRjdFNjYWxlOworICBXb3JkMTYgICAgICAgICAgZ3JvdXBpbmdNYXNrOworICBTRUNUSU9OX0RBVEEgICAgc2VjdGlvbkRhdGE7CisgIFdvcmQxNiAgICAgICAgICB3aW5kb3dTaGFwZTsKK30gUUNfT1VUX0NIQU5ORUw7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIFdvcmQxNgkJICBhZHRzVXNlZDsNCisgIFdvcmQxNiAgICAgICAgICBzdGF0aWNCaXRzVXNlZDsgLyogZm9yIHZlcmlmaWNhdGlvbiBwdXJwb3NlcyAqLworICBXb3JkMTYgICAgICAgICAgZHluQml0c1VzZWQ7ICAgIC8qIGZvciB2ZXJpZmljYXRpb24gcHVycG9zZXMgKi8KKyAgV29yZDE2ICAgICAgICAgIHBlOworICBXb3JkMTYgICAgICAgICAgYW5jQml0c1VzZWQ7CisgIFdvcmQxNiAgICAgICAgICBmaWxsQml0czsKK30gUUNfT1VUX0VMRU1FTlQ7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIFFDX09VVF9DSEFOTkVMICBxY0NoYW5uZWxbTUFYX0NIQU5ORUxTXTsKKyAgUUNfT1VUX0VMRU1FTlQgIHFjRWxlbWVudDsKKyAgV29yZDE2ICAgICAgICAgIHRvdFN0YXRpY0JpdHNVc2VkOyAvKiBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzICovCisgIFdvcmQxNiAgICAgICAgICB0b3REeW5CaXRzVXNlZDsgICAgLyogZm9yIHZlcmlmaWNhdGlvbiBwdXJwb3NlcyAqLworICBXb3JkMTYgICAgICAgICAgdG90QW5jQml0c1VzZWQ7ICAgIC8qIGZvciB2ZXJpZmljYXRpb24gcHVycG9zZXMgKi8KKyAgV29yZDE2ICAgICAgICAgIHRvdEZpbGxCaXRzOworICBXb3JkMTYgICAgICAgICAgYWxpZ25CaXRzOworICBXb3JkMTYgICAgICAgICAgYml0UmVzVG90OworICBXb3JkMTYgICAgICAgICAgYXZlcmFnZUJpdHNUb3Q7Cit9IFFDX09VVDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBXb3JkMzIgY2hCaXRyYXRlOworICBXb3JkMTYgYXZlcmFnZUJpdHM7ICAgICAgICAgICAgICAgLyogYnJ1dHRvIC0+IGxvb2sgYW5jaWxsYXJ5LmggKi8KKyAgV29yZDE2IG1heEJpdHM7CisgIFdvcmQxNiBiaXRSZXNMZXZlbDsKKyAgV29yZDE2IG1heEJpdFJlc0JpdHM7CisgIFdvcmQxNiByZWxhdGl2ZUJpdHM7ICAgICAgICAgICAgLyogQml0cyByZWxhdGl2ZSB0byB0b3RhbCBCaXRzIHNjYWxlZCBkb3duIGJ5IDIgKi8KK30gRUxFTUVOVF9CSVRTOworCit0eXBlZGVmIHN0cnVjdAoreworICAvKiB0aGlzIGlzIGJhc2ljYWxseSBzdHJ1Y3QgUUNfSU5JVCAqLworICBXb3JkMTYgYXZlcmFnZUJpdHNUb3Q7CisgIFdvcmQxNiBtYXhCaXRzVG90OworICBXb3JkMTYgZ2xvYlN0YXRCaXRzOworICBXb3JkMTYgbkNoYW5uZWxzOworICBXb3JkMTYgYml0UmVzVG90OworCisgIFdvcmQxNiBtYXhCaXRGYWM7CisKKyAgUEFERElORyAgIHBhZGRpbmc7CisKKyAgRUxFTUVOVF9CSVRTICBlbGVtZW50Qml0czsKKyAgQURKX1RIUl9TVEFURSBhZGpUaHI7CisKKyAgV29yZDE2IGxvZ1NmYkZvcm1GYWN0b3JbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMTYgc2ZiTlJlbGV2YW50TGluZXNbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMTYgbG9nU2ZiRW5lcmd5W01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXTsKK30gUUNfU1RBVEU7CisKKyNlbmRpZiAvKiBfUUNfREFUQV9IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9xY19tYWluLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9xY19tYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExMzhiMgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3FjX21haW4uaApAQCAtMCwwICsxLDY0IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlxY19tYWluLmgNCisNCisJQ29udGVudDoJUXVhbnRpemluZyAmIGNvZGluZyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9RQ19NQUlOX0gKKyNkZWZpbmUgX1FDX01BSU5fSAorCisjaW5jbHVkZSAicWNfZGF0YS5oIgorI2luY2x1ZGUgImludGVyZmFjZS5oIgorI2luY2x1ZGUgIm1lbWFsaWduLmgiCisKKy8qIFF1YW50aXppbmcgJiBjb2Rpbmcgc3RhZ2UgKi8KKworV29yZDE2IFFDT3V0TmV3KFFDX09VVCAqaFFDLCBXb3JkMTYgbkNoYW5uZWxzLCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCk7CisKK3ZvaWQgUUNPdXREZWxldGUoUUNfT1VUICpoUUMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKTsKKworV29yZDE2IFFDTmV3KFFDX1NUQVRFICpoUUMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKTsKKworV29yZDE2IFFDSW5pdChRQ19TVEFURSAqaFFDLCAKKyAgICAgICAgICAgICAgc3RydWN0IFFDX0lOSVQgKmluaXQpOworCit2b2lkIFFDRGVsZXRlKFFDX1NUQVRFICpoUUMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKTsKKworCitXb3JkMTYgUUNNYWluKFFDX1NUQVRFICpoUUMsCisgICAgICAgICAgICAgIEVMRU1FTlRfQklUUyogZWxCaXRzLAorICAgICAgICAgICAgICBBVFNfRUxFTUVOVCogYWRqVGhyU3RhdGVFbGVtZW50LAorICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLCAvKiBtYXkgYmUgbW9kaWZpZWQgaW4tcGxhY2UgKi8KKyAgICAgICAgICAgICAgUFNZX09VVF9FTEVNRU5UKiBwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICBRQ19PVVRfQ0hBTk5FTCAgcWNPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sICAgLyogb3V0ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgIFFDX09VVF9FTEVNRU5UKiBxY091dEVsZW1lbnQsCisgICAgICAgICAgICAgIFdvcmQxNiBuQ2hhbm5lbHMsCisJCQkgIFdvcmQxNiBhbmNpbGxhcnlEYXRhQnl0ZXMpOyAgICAgLyogcmV0dXJucyBlcnJvciBjb2RlICAgICAgICovCisKK3ZvaWQgdXBkYXRlQml0cmVzKFFDX1NUQVRFKiBxY0tlcm5lbCwKKyAgICAgICAgICAgICAgICAgIFFDX09VVCogcWNPdXQpOworCitXb3JkMTYgRmluYWxpemVCaXRDb25zdW1wdGlvbihRQ19TVEFURSAqaFFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNfT1VUKiBxY091dCk7CisKK1dvcmQxNiBBZGp1c3RCaXRyYXRlKFFDX1NUQVRFICpoUUMsCisgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgYml0UmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVSYXRlKTsKKworI2VuZGlmIC8qIF9RQ19NQUlOX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3F1YW50aXplLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9xdWFudGl6ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YTk1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9xdWFudGl6ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXF1YW50aXplLmgNCisNCisJQ29udGVudDoJUXVhbnRpemF0aW9uIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1FVQU5USVpFX0hfCisjZGVmaW5lIF9RVUFOVElaRV9IXworI2luY2x1ZGUgInR5cGVkZWZzLmgiCisKKy8qIHF1YW50aXppbmcgKi8KKworI2RlZmluZSBNQVhfUVVBTlQgODE5MQorCit2b2lkIFF1YW50aXplU3BlY3RydW0oV29yZDE2IHNmYkNudCwgCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNmYk9mZnNldCwgV29yZDMyICptZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGdsb2JhbEdhaW4sIFdvcmQxNiAqc2NhbGVmYWN0b3JzLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqcXVhbnRpemVkU3BlY3RydW0pOworCitXb3JkMzIgY2FsY1NmYkRpc3QoY29uc3QgV29yZDMyICpzcGVjLAorICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgc2ZiV2lkdGgsCisgICAgICAgICAgICAgICAgICAgV29yZDE2ICBnYWluKTsKKworI2VuZGlmIC8qIF9RVUFOVElaRV9IXyAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvc2ZfZXN0aW0uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3NmX2VzdGltLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI1ZWMzYwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3NmX2VzdGltLmgKQEAgLTAsMCArMSw0NiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJc2ZfZXN0aW0uaA0KKw0KKwlDb250ZW50OglTY2FsZSBmYWN0b3IgZXN0aW1hdGlvbiBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fU0ZfRVNUSU1fSF9fCisjZGVmaW5lIF9fU0ZfRVNUSU1fSF9fCisvKgorICAgU2NhbGUgZmFjdG9yIGVzdGltYXRpb24gCisgKi8KKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJxY19kYXRhLmgiCisKK3ZvaWQKK0NhbGNGb3JtRmFjdG9yKFdvcmQxNiAgICAgICAgICBsb2dTZmJGb3JtRmFjdG9yW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICBzZmJOUmVsZXZhbnRMaW5lc1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgbG9nU2ZiRW5lcmd5W01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgbkNoYW5uZWxzKTsKKwordm9pZAorRXN0aW1hdGVTY2FsZUZhY3RvcnMoUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgIFFDX09VVF9DSEFOTkVMICBxY091dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICBsb2dTZmJFbmVyZ3lbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgIGxvZ1NmYkZvcm1GYWN0b3JbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgIHNmYk5SZWxldmFudExpbmVzW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICBuQ2hhbm5lbHMpOworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvc3ByZWFkaW5nLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9zcHJlYWRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWNmNjNkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvc3ByZWFkaW5nLmgKQEAgLTAsMCArMSwzMyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJc3ByZWFkaW5nLmgNCisNCisJQ29udGVudDoJU3ByZWFkaW5nIG9mIGVuZXJneSBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9TUFJFQURJTkdfSAorI2RlZmluZSBfU1BSRUFESU5HX0gKKyNpbmNsdWRlICJ0eXBlZGVmcy5oIgorDQorCit2b2lkIFNwcmVhZGluZ01heChjb25zdCBXb3JkMTYgcGJDbnQsCisgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKm1hc2tMb3dGYWN0b3IsCisgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKm1hc2tIaWdoRmFjdG9yLAorICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpwYlNwcmVhZGVkRW5lcmd5KTsKKworI2VuZGlmIC8qICNpZm5kZWYgX1NQUkVBRElOR19IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9zdGF0X2JpdHMuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3N0YXRfYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlOTBiOWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9zdGF0X2JpdHMuaApAQCAtMCwwICsxLDM0IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlzdGF0X2JpdHMuaA0KKw0KKwlDb250ZW50OglTdGF0aWMgYml0IGNvdW50ZXIgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX1NUQVRfQklUU19ICisjZGVmaW5lIF9fU1RBVF9CSVRTX0gKKworI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgImludGVyZmFjZS5oIgorCitXb3JkMTYgY291bnRTdGF0aWNCaXRkZW1hbmQoUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQgKnBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG5DaGFubmVscywgDQorCQkJCQkJCVdvcmQxNiBhZHRzVXNlZCk7CisKKyNlbmRpZiAvKiBfX1NUQVRfQklUU19IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90bnMuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3Rucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZmNjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90bnMuaApAQCAtMCwwICsxLDEwOCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJdG5zLmgNCisNCisJQ29udGVudDoJVE5TIHN0cnVjdHVyZXMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9UTlNfSAorI2RlZmluZSBfVE5TX0gKKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisKKworCisjZGVmaW5lIFROU19NQVhfT1JERVIgMTIKKyNkZWZpbmUgVE5TX01BWF9PUkRFUl9TSE9SVCA1CisKKyNkZWZpbmUgRklMVEVSX0RJUkVDVElPTiAgICAwCisKK3R5cGVkZWYgc3RydWN0eyAvKnN0dWZmIHRoYXQgaXMgdGFidWxhdGVkIGRlcGVuZGVudCBvbiBiaXRyYXRlIGV0Yy4gKi8KKyAgV29yZDE2ICAgICB0aHJlc2hPbjsgICAgICAgICAgICAgICAgLyogbWluLiBwcmVkaWN0aW9uIGdhaW4gZm9yIHVzaW5nIHRucyBUQUJVTCAqIDEwMCovCisgIFdvcmQzMiAgICAgbHBjU3RhcnRGcmVxOyAgICAgICAgICAgIC8qIGxvd2VzdCBmcmVxIGZvciBscGMgVEFCVUwqLworICBXb3JkMzIgICAgIGxwY1N0b3BGcmVxOyAgICAgICAgICAgICAvKiBUQUJVTCAqLworICBXb3JkMzIgICAgIHRuc1RpbWVSZXNvbHV0aW9uOworfVROU19DT05GSUdfVEFCVUxBVEVEOworCisKK3R5cGVkZWYgc3RydWN0IHsgICAvKmFzc2lnbmVkIGF0IEluaXRUaW1lKi8KKyAgV29yZDE2IHRuc0FjdGl2ZTsKKyAgV29yZDE2IHRuc01heFNmYjsKKworICBXb3JkMTYgbWF4T3JkZXI7ICAgICAgICAgICAgICAgIC8qIG1heC4gb3JkZXIgb2YgdG5zIGZpbHRlciAqLworICBXb3JkMTYgdG5zU3RhcnRGcmVxOyAgICAgICAgICAgIC8qIGxvd2VzdCBmcmVxLiBmb3IgdG5zIGZpbHRlcmluZyAqLworICBXb3JkMTYgY29lZlJlczsKKworICBUTlNfQ09ORklHX1RBQlVMQVRFRCBjb25mVGFiOworCisgIFdvcmQzMiBhY2ZXaW5kb3dbVE5TX01BWF9PUkRFUisxXTsKKworICBXb3JkMTYgdG5zU3RhcnRCYW5kOworICBXb3JkMTYgdG5zU3RhcnRMaW5lOworCisgIFdvcmQxNiB0bnNTdG9wQmFuZDsKKyAgV29yZDE2IHRuc1N0b3BMaW5lOworCisgIFdvcmQxNiBscGNTdGFydEJhbmQ7CisgIFdvcmQxNiBscGNTdGFydExpbmU7CisKKyAgV29yZDE2IGxwY1N0b3BCYW5kOworICBXb3JkMTYgbHBjU3RvcExpbmU7CisKKyAgV29yZDE2IHRuc1JhdGlvUGF0Y2hMb3dlc3RDYjsKKyAgV29yZDE2IHRuc01vZGlmeUJlZ2luQ2I7CisKKyAgV29yZDE2IHRocmVzaG9sZDsgLyogbWluLiBwcmVkaWN0aW9uIGdhaW4gZm9yIHVzaW5nIHRucyBUQUJVTCAqIDEwMCAqLworCit9VE5TX0NPTkZJRzsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgIFdvcmQxNiB0bnNBY3RpdmU7CisgIFdvcmQzMiBwYXJjb3JbVE5TX01BWF9PUkRFUl07CisgIFdvcmQxNiBwcmVkaWN0aW9uR2FpbjsKK30gVE5TX1NVQkJMT0NLX0lORk87IC8qIFdvcmQxNiBzaXplOiAyNiAqLworCit0eXBlZGVmIHN0cnVjdHsKKyAgVE5TX1NVQkJMT0NLX0lORk8gc3ViQmxvY2tJbmZvW1RSQU5TX0ZBQ107Cit9IFROU19EQVRBX1NIT1JUOworCit0eXBlZGVmIHN0cnVjdHsKKyAgVE5TX1NVQkJMT0NLX0lORk8gc3ViQmxvY2tJbmZvOworfSBUTlNfREFUQV9MT05HOworCit0eXBlZGVmIHN0cnVjdHsKKyAgVE5TX0RBVEFfTE9ORyB0bnNMb25nOworICBUTlNfREFUQV9TSE9SVCB0bnNTaG9ydDsKK31UTlNfREFUQV9SQVc7CisKK3R5cGVkZWYgc3RydWN0eworICBXb3JkMTYgbnVtT2ZTdWJibG9ja3M7CisgIFROU19EQVRBX1JBVyBkYXRhUmF3OworfVROU19EQVRBOyAvKiBXb3JkMTYgc2l6ZTogMSArIDgqMjYgKyAyNiA9IDIzNSAqLworCit0eXBlZGVmIHN0cnVjdHsKKyAgV29yZDE2IHRuc0FjdGl2ZVtUUkFOU19GQUNdOworICBXb3JkMTYgY29lZlJlc1tUUkFOU19GQUNdOworICBXb3JkMTYgbGVuZ3RoW1RSQU5TX0ZBQ107CisgIFdvcmQxNiBvcmRlcltUUkFOU19GQUNdOworICBXb3JkMTYgY29lZltUUkFOU19GQUMqVE5TX01BWF9PUkRFUl9TSE9SVF07Cit9VE5TX0lORk87IC8qIFdvcmQxNiBzaXplOiA3MiAqLworCisjZW5kaWYgLyogX1ROU19IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90bnNfZnVuYy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvdG5zX2Z1bmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGI3NWI2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvdG5zX2Z1bmMuaApAQCAtMCwwICsxLDc1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl0bnNfZnVuYy5oDQorDQorCUNvbnRlbnQ6CVROUyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICAgVGVtcG9yYWwgbm9pc2Ugc2hhcGluZworICovCisjaWZuZGVmIF9UTlNfRlVOQ19ICisjZGVmaW5lIF9UTlNfRlVOQ19IDQorI2luY2x1ZGUgInR5cGVkZWYuaCIKKyNpbmNsdWRlICJwc3lfY29uZmlndXJhdGlvbi5oIgorCitXb3JkMTYgSW5pdFRuc0NvbmZpZ3VyYXRpb25Mb25nKFdvcmQzMiBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgc2FtcGxlcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfQ09ORklHICp0bnNDb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX0xPTkcgKnBzeUNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGFjdGl2ZSk7CisKK1dvcmQxNiBJbml0VG5zQ29uZmlndXJhdGlvblNob3J0KFdvcmQzMiBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZXJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfQ09ORklHICp0bnNDb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9TSE9SVCAqcHN5Q29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGFjdGl2ZSk7CisKK1dvcmQzMiBUbnNEZXRlY3QoVE5TX0RBVEEqIHRuc0RhdGEsCisgICAgICAgICAgICAgICAgIFROU19DT05GSUcgdEMsCisgICAgICAgICAgICAgICAgIFdvcmQzMiogcFNjcmF0Y2hUbnMsCisgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBzZmJPZmZzZXRbXSwKKyAgICAgICAgICAgICAgICAgV29yZDMyKiBzcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgV29yZDE2IHN1YkJsb2NrTnVtYmVyLAorICAgICAgICAgICAgICAgICBXb3JkMTYgYmxvY2tUeXBlLAorICAgICAgICAgICAgICAgICBXb3JkMzIgKiBzZmJFbmVyZ3kpOworCit2b2lkIFRuc1N5bmMoVE5TX0RBVEEgKnRuc0RhdGFEZXN0LAorICAgICAgICAgICAgIGNvbnN0IFROU19EQVRBICp0bnNEYXRhU3JjLAorICAgICAgICAgICAgIGNvbnN0IFROU19DT05GSUcgdEMsCisgICAgICAgICAgICAgY29uc3QgV29yZDE2IHN1YkJsb2NrTnVtYmVyLAorICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBibG9ja1R5cGUpOworCitXb3JkMTYgVG5zRW5jb2RlKFROU19JTkZPKiB0bnNJbmZvLAorICAgICAgICAgICAgICAgICBUTlNfREFUQSogdG5zRGF0YSwKKyAgICAgICAgICAgICAgICAgV29yZDE2IG51bU9mU2ZiLAorICAgICAgICAgICAgICAgICBUTlNfQ09ORklHIHRDLAorICAgICAgICAgICAgICAgICBXb3JkMTYgbG93UGFzc0xpbmUsCisgICAgICAgICAgICAgICAgIFdvcmQzMiogc3BlY3RydW0sCisgICAgICAgICAgICAgICAgIFdvcmQxNiBzdWJCbG9ja051bWJlciwKKyAgICAgICAgICAgICAgICAgV29yZDE2IGJsb2NrVHlwZSk7CisKK3ZvaWQgQXBwbHlUbnNNdWx0VGFibGVUb1JhdGlvcyhXb3JkMTYgc3RhcnRDYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc3RvcENiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFROU19TVUJCTE9DS19JTkZPIHN1YkluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICp0aHJlc2hvbGRzKTsKKworCisjZW5kaWYgLyogX1ROU19GVU5DX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3Ruc19wYXJhbS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvdG5zX3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYyNjZhYwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3Ruc19wYXJhbS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXRuc19wYXJhbS5oDQorDQorCUNvbnRlbnQ6CVROUyBwYXJhbWV0ZXJzDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAgIFROUyBwYXJhbWV0ZXJzCisgKi8KKyNpZm5kZWYgX1ROU19QQVJBTV9ICisjZGVmaW5lIF9UTlNfUEFSQU1fSAorCisjaW5jbHVkZSAidG5zLmgiCisKK3R5cGVkZWYgc3RydWN0eworICBXb3JkMzIgc2FtcGxpbmdSYXRlOworICBXb3JkMTYgbWF4QmFuZExvbmc7CisgIFdvcmQxNiBtYXhCYW5kU2hvcnQ7Cit9VE5TX01BWF9UQUJfRU5UUlk7CisKK3R5cGVkZWYgc3RydWN0eworICAgIFdvcmQzMiBiaXRSYXRlRnJvbTsKKyAgICBXb3JkMzIgYml0UmF0ZVRvOworICAgIGNvbnN0IFROU19DT05GSUdfVEFCVUxBVEVEICpwYXJhbU1vbm9fTG9uZzsgIC8qIGNvbnRhaW5zIFROUyBwYXJhbWV0ZXJzICovCisgICAgY29uc3QgVE5TX0NPTkZJR19UQUJVTEFURUQgKnBhcmFtTW9ub19TaG9ydDsKKyAgICBjb25zdCBUTlNfQ09ORklHX1RBQlVMQVRFRCAqcGFyYW1TdGVyZW9fTG9uZzsKKyAgICBjb25zdCBUTlNfQ09ORklHX1RBQlVMQVRFRCAqcGFyYW1TdGVyZW9fU2hvcnQ7Cit9VE5TX0lORk9fVEFCOworCisKK3ZvaWQgR2V0VG5zUGFyYW0oVE5TX0NPTkZJR19UQUJVTEFURUQgKnRuc0NvbmZpZ1RhYiwgCisgICAgICAgICAgICAgICAgIFdvcmQzMiBiaXRSYXRlLCBXb3JkMTYgY2hhbm5lbHMsIFdvcmQxNiBibG9ja1R5cGUpOworCit2b2lkIEdldFRuc01heEJhbmRzKFdvcmQzMiBzYW1wbGluZ1JhdGUsIFdvcmQxNiBibG9ja1R5cGUsIFdvcmQxNiogdG5zTWF4U2ZiKTsKKworI2VuZGlmIC8qIF9UTlNfUEFSQU1fSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvdHJhbnNmb3JtLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90cmFuc2Zvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjY2OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvdHJhbnNmb3JtLmgKQEAgLTAsMCArMSwzNiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJdHJhbnNmb3JtLmgNCisNCisJQ29udGVudDoJTURDVCBUcmFuc2Zvcm0gZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiAgX19UUkFOU0ZPUk1fSF9fCisjZGVmaW5lIF9fVFJBTlNGT1JNX0hfXworCisjaW5jbHVkZSAidHlwZWRlZi5oIgorICAgICAgICAgICAgICAgICAgCit2b2lkIFRyYW5zZm9ybV9SZWFsKFdvcmQxNiAqbWRjdERlbGF5QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnRpbWVTaWduYWwsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBjaEluY3JlbWVudCwgICAgIC8qISBjaGFubmVsIGluY3JlbWVudCAqLworICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnJlYWxPdXQsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqbWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgd2luZG93U2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgKTsKKworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9wYXRlbnRfZGlzY2xhaW1lci50eHQgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3BhdGVudF9kaXNjbGFpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGJmMTFkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9wYXRlbnRfZGlzY2xhaW1lci50eHQKQEAgLTAsMCArMSw5IEBACisKK1RISVMgSVMgTk9UIEEgR1JBTlQgT0YgUEFURU5UIFJJR0hUUy4KKworR29vZ2xlIG1ha2VzIG5vIHJlcHJlc2VudGF0aW9uIG9yIHdhcnJhbnR5IHRoYXQgdGhlIGNvZGVjcyBmb3Igd2hpY2gKK3NvdXJjZSBjb2RlIGlzIG1hZGUgYXZhaWxhYmxlIGhlcmV1bmRlciBhcmUgdW5lbmN1bWJlcmVkIGJ5Cit0aGlyZC1wYXJ0eSBwYXRlbnRzLiAgVGhvc2UgaW50ZW5kaW5nIHRvIHVzZSB0aGlzIHNvdXJjZSBjb2RlIGluCitoYXJkd2FyZSBvciBzb2Z0d2FyZSBwcm9kdWN0cyBhcmUgYWR2aXNlZCB0aGF0IGltcGxlbWVudGF0aW9ucyBvZgordGhlc2UgY29kZWNzLCBpbmNsdWRpbmcgaW4gb3BlbiBzb3VyY2Ugc29mdHdhcmUgb3Igc2hhcmV3YXJlLCBtYXkKK3JlcXVpcmUgcGF0ZW50IGxpY2Vuc2VzIGZyb20gdGhlIHJlbGV2YW50IHBhdGVudCBob2xkZXJzLgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYWFjX3JvbS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYWFjX3JvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZTAzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hYWNfcm9tLmMKQEAgLTAsMCArMSwyMzYzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlhYWNfcm9tLmMNCisNCisJQ29udGVudDoJY29uc3RhbnQgdGFibGVzDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImFhY19yb20uaCINCisNCisjaWYgZGVmaW5lZCAoQVJNVjVFKSAmJiAhZGVmaW5lZCAoQVJNVjdOZW9uKQ0KKw0KKy8qIA0KKyAqICBRMzAgZm9yIDEyOCBhbmQgMTAyNCANCisgKg0KKyAqIGZvciAoaSA9IDA7IGkgPCBudW0vNDsgaSsrKSB7DQorICogICBhbmdsZSA9IChpICsgMC4xMjUpICogTV9QSSAvIG51bTsNCisgKiAgIHggPSBjb3MoYW5nbGUpICogKDEgPDwgMzApOw0KKyAqICAgeCA9IHNpbihhbmdsZSkgKiAoMSA8PCAzMCk7DQorICogDQorICogICBhbmdsZSA9IChudW0vMiAtIDEgLSBpICsgMC4xMjUpICogTV9QSSAvIG51bTsNCisgKiAgIHggPSBjb3MoYW5nbGUpICogKDEgPDwgMzApOw0KKyAqICAgeCA9IHNpbihhbmdsZSkgKiAoMSA8PCAzMCk7DQorICogfQ0KKyAqLw0KK2NvbnN0IGludCBjb3NzaW50YWJbMTI4ICsgMTAyNF0gPSB7DQorCS8qIDEyOCAqLw0KKwkweDNmZmZlYzQzLCAweDAwMzI0M2YxLCAweDAxNWZkNGQyLCAweDNmZmMzOGQxLCAweDNmZjljMTNhLCAweDAxYzQ1NGY1LCAweDAyZjFiNzU1LCAweDNmZWVhNzc2LCANCisJMHgzZmU5YjhhOSwgMHgwMzU2MjAzOCwgMHgwNDgzMjU5ZCwgMHgzZmQ3M2E0YSwgMHgzZmNmZDUwYiwgMHgwNGU3NjdjNSwgMHgwNjEzZTFjNSwgMHgzZmI1ZjRlYSwgDQorCTB4M2ZhYzFhNWIsIDB4MDY3N2VkYmIsIDB4MDdhM2FkZmYsIDB4M2Y4YWRjNzcsIDB4M2Y3ZThlMWUsIDB4MDgwNzc0NTcsIDB4MDkzMjRjYTcsIDB4M2Y1NWY3OTYsIA0KKwkweDNmNDczNzU5LCAweDA5OTViZGZkLCAweDBhYmY4MDQzLCAweDNmMTc0ZTcwLCAweDNmMDYxZTk1LCAweDBiMjI4ZDQyLCAweDBjNGIwYjk0LCAweDNlY2VlYWFkLCANCisJMHgzZWJiNGRkYiwgMHgwY2FkYTRmNSwgMHgwZGQ0YjE5YSwgMHgzZTdjZDc3OCwgMHgzZTY2ZDBiNCwgMHgwZTM2YzgyYSwgMHgwZjVjMzVhMywgMHgzZTIxMjE3OSwgDQorCTB4M2UwOGI0MmEsIDB4MGZiZGJhNDAsIDB4MTBlMTViNGUsIDB4M2RiYmQ2ZDQsIDB4M2RhMTA2YmQsIDB4MTE0MjNlZjAsIDB4MTI2M2U2OTksIDB4M2Q0ZDA3MjgsIA0KKwkweDNkMmZkODZjLCAweDEyYzQxYTRmLCAweDEzZTM5YmU5LCAweDNjZDRjMzhiLCAweDNjYjUzYWFhLCAweDE0NDMxMGRkLCAweDE1NjA0MDEzLCAweDNjNTMxZTg4LCANCisJMHgzYzMxNDA2MCwgMHgxNWJlZTc4YywgMHgxNmQ5OTg2NCwgMHgzYmM4MmMxZiwgMHgzYmEzZmRlNywgMHgxNzM3NjNjOSwgMHgxODRmNmFhYiwgMHgzYjM0MDFiYiwgDQorCTB4M2IwZDg5MDksIDB4MThhYzRiODcsIDB4MTljMTdkNDQsIDB4M2E5NmI2MzYsIDB4M2E2ZGY4ZjgsIDB4MWExZDY1NDQsIDB4MWIyZjk3MWUsIDB4MzlmMDYxZDIsIA0KKwkweDM5YzU2NjRmLCAweDFiOGE3ODE1LCAweDFjOTk3ZmM0LCAweDM5NDExZTMzLCAweDM5MTNlYjBlLCAweDFjZjM0YmFmLCAweDFkZmVmZjY3LCAweDM4ODkwNjYzLCANCisJMHgzODU5YTI5MiwgMHgxZTU3YTg2ZCwgMHgxZjVmZGVlNiwgMHgzN2M4MzZjMiwgMHgzNzk2YTk5NiwgMHgxZmI3NTc1YywgMHgyMGJiZTdkOCwgMHgzNmZlY2QwZSwgDQorCTB4MzZjYjFlMmEsIDB4MjExMjIyNDAsIDB4MjIxMmU0OTIsIDB4MzYyY2U4NTUsIDB4MzVmNzFmYjEsIDB4MjI2N2QzYTAsIDB4MjM2NGEwMmUsIDB4MzU1MmE4ZjQsIA0KKwkweDM1MWFjZWRkLCAweDIzYjgzNmNhLCAweDI0YjBlNjk5LCAweDM0NzAzMDk1LCAweDM0MzY0ZGE2LCAweDI1MDMxN2RmLCAweDI1Zjc4NDk3LCAweDMzODVhMjIyLCANCisJMHgzMzQ5YmY0OCwgMHgyNjQ4NDNkOSwgMHgyNzM4NDdjOCwgMHgzMjkzMjFjNywgMHgzMjU1NDg0MCwgMHgyNzg3ODg5MywgMHgyODcyZmViNiwgMHgzMTk4ZDRlYSwgDQorCTB4MzE1OTBlM2UsIDB4MjhjMGI0ZDIsIDB4MjlhNzc4ZGIsIDB4MzA5NmUyMjMsIDB4MzA1NTM4MjgsIDB4MjlmMzk4NGMsIDB4MmFkNTg2YTMsIDB4MmY4ZDcxM2EsIA0KKwkweDJmNDllZTBmLCAweDJiMjAwM2FjLCAweDJiZmNmOTdjLCAweDJlN2NhYjFjLCAweDJlMzc1OTJjLCAweDJjNDVjOGEwLCAweDJkMWRhM2Q1LCAweDJkNjRiOWRhLCANCisJLyogMTAyNCAqLw0KKwkweDNmZmZmZmIxLCAweDAwMDY0ODdmLCAweDAwMmJmYjc0LCAweDNmZmZmMGUzLCAweDNmZmZlNzA1LCAweDAwMzg4YzZlLCAweDAwNWUzZjRjLCAweDNmZmZiYTliLCANCisJMHgzZmZmYTZkZSwgMHgwMDZhZDAzYiwgMHgwMDkwODJlYSwgMHgzZmZmNWNkOCwgMHgzZmZmM2YzYywgMHgwMDlkMTNjNSwgMHgwMGMyYzYyZiwgMHgzZmZlZDc5YiwgDQorCTB4M2ZmZWIwMjEsIDB4MDBjZjU2ZWYsIDB4MDBmNTA4ZmMsIDB4M2ZmZTJhZTUsIDB4M2ZmZGY5OGMsIDB4MDEwMTk5OTgsIDB4MDEyNzRiMzEsIDB4M2ZmZDU2YjUsIA0KKwkweDNmZmQxYjdlLCAweDAxMzNkYmEzLCAweDAxNTk4Y2IxLCAweDNmZmM1YjBjLCAweDNmZmMxNWY3LCAweDAxNjYxY2YwLCAweDAxOGJjZDViLCAweDNmZmIzN2VjLCANCisJMHgzZmZhZThmOSwgMHgwMTk4NWQ2MCwgMHgwMWJlMGQxMSwgMHgzZmY5ZWQ1MywgMHgzZmY5OTQ4MywgMHgwMWNhOWNkNCwgMHgwMWYwNGJiNCwgMHgzZmY4N2I0NCwgDQorCTB4M2ZmODE4OTYsIDB4MDFmY2RiMmUsIDB4MDIyMjg5MjQsIDB4M2ZmNmUxYmYsIDB4M2ZmNjc1MzQsIDB4MDIyZjE4NGQsIDB4MDI1NGM1NDQsIDB4M2ZmNTIwYzUsIA0KKwkweDNmZjRhYTVkLCAweDAyNjE1NDE0LCAweDAyODZmZmYzLCAweDNmZjMzODU4LCAweDNmZjJiODEzLCAweDAyOTM4ZTYyLCAweDAyYjkzOTE0LCAweDNmZjEyODc4LCANCisJMHgzZmYwOWU1NiwgMHgwMmM1YzcxYSwgMHgwMmViNzA4NiwgMHgzZmVlZjEyNiwgMHgzZmVlNWQyOCwgMHgwMmY3ZmUxYywgMHgwMzFkYTYyYiwgMHgzZmVjOTI2NSwgDQorCTB4M2ZlYmY0OGIsIDB4MDMyYTMzNDksIDB4MDM0ZmQ5ZTUsIDB4M2ZlYTBjMzUsIDB4M2ZlOTY0ODAsIDB4MDM1YzY2ODIsIDB4MDM4MjBiOTMsIDB4M2ZlNzVlOTgsIA0KKwkweDNmZTZhZDA4LCAweDAzOGU5N2E5LCAweDAzYjQzYjE3LCAweDNmZTQ4OTkwLCAweDNmZTNjZTI2LCAweDAzYzBjNjllLCAweDAzZTY2ODUyLCAweDNmZTE4ZDFmLCANCisJMHgzZmUwYzdkYSwgMHgwM2YyZjM0MiwgMHgwNDE4OTMyNiwgMHgzZmRlNjk0NSwgMHgzZmRkOWEyNywgMHgwNDI1MWQ3NywgMHgwNDRhYmI3MywgMHgzZmRiMWUwNiwgDQorCTB4M2ZkYTQ1MGYsIDB4MDQ1NzQ1MWQsIDB4MDQ3Y2UxMWEsIDB4M2ZkN2FiNjQsIDB4M2ZkNmM4OTQsIDB4MDQ4OTZhMTYsIDB4MDRhZjAzZmMsIDB4M2ZkNDExNWYsIA0KKwkweDNmZDMyNGI3LCAweDA0YmI4YzQyLCAweDA0ZTEyM2ZhLCAweDNmZDA0ZmZjLCAweDNmY2Y1OTdjLCAweDA0ZWRhYjgzLCAweDA1MTM0MGY2LCAweDNmY2M2NzNiLCANCisJMHgzZmNiNjZlNCwgMHgwNTFmYzdiOSwgMHgwNTQ1NWFkMSwgMHgzZmM4NTcxZiwgMHgzZmM3NGNmMywgMHgwNTUxZTBjNywgMHgwNTc3NzE2YiwgMHgzZmM0MWZhYywgDQorCTB4M2ZjMzBiYWEsIDB4MDU4M2Y2OGMsIDB4MDVhOTg0YTYsIDB4M2ZiZmMwZTMsIDB4M2ZiZWEzMGMsIDB4MDViNjA4ZWIsIDB4MDVkYjk0NjMsIDB4M2ZiYjNhYzcsIA0KKwkweDNmYmExMzFiLCAweDA1ZTgxN2MzLCAweDA2MGRhMDgzLCAweDNmYjY4ZDViLCAweDNmYjU1YmRjLCAweDA2MWEyMmY3LCAweDA2M2ZhOGU3LCAweDNmYjFiOGEyLCANCisJMHgzZmIwN2Q1MCwgMHgwNjRjMmE2NywgMHgwNjcxYWQ3MSwgMHgzZmFjYmM5ZiwgMHgzZmFiNzc3YiwgMHgwNjdlMmRmNSwgMHgwNmEzYWUwMCwgMHgzZmE3OTk1NCwgDQorCTB4M2ZhNjRhNWYsIDB4MDZiMDJkODEsIDB4MDZkNWFhNzcsIDB4M2ZhMjRlYzYsIDB4M2ZhMGY2MDAsIDB4MDZlMjI4ZWUsIDB4MDcwN2EyYjcsIDB4M2Y5Y2RjZjcsIA0KKwkweDNmOWI3YTYyLCAweDA3MTQyMDFiLCAweDA3Mzk5NmExLCAweDNmOTc0M2ViLCAweDNmOTVkNzg3LCAweDA3NDYxMmViLCAweDA3NmI4NjE2LCAweDNmOTE4M2E1LCANCisJMHgzZjkwMGQ3MiwgMHgwNzc4MDEzZCwgMHgwNzlkNzBmNywgMHgzZjhiOWMyOCwgMHgzZjhhMWMyOSwgMHgwN2E5ZWFmNSwgMHgwN2NmNTcyNiwgMHgzZjg1OGQ3OSwgDQorCTB4M2Y4NDAzYWUsIDB4MDdkYmNmZjIsIDB4MDgwMTM4ODMsIDB4M2Y3ZjU3OWIsIDB4M2Y3ZGM0MDUsIDB4MDgwZGIwMTYsIDB4MDgzMzE0ZjEsIDB4M2Y3OGZhOTIsIA0KKwkweDNmNzc1ZDMxLCAweDA4M2Y4YjQzLCAweDA4NjRlYzRmLCAweDNmNzI3NjYxLCAweDNmNzBjZjM4LCAweDA4NzE2MTU5LCAweDA4OTZiZTgwLCAweDNmNmJjYjBlLCANCisJMHgzZjZhMWExYywgMHgwOGEzMzIzYSwgMHgwOGM4OGI2NSwgMHgzZjY0Zjg5YiwgMHgzZjYzM2RlMiwgMHgwOGQ0ZmRjNiwgMHgwOGZhNTJkZSwgMHgzZjVkZmYwZSwgDQorCTB4M2Y1YzNhOGYsIDB4MDkwNmMzZTAsIDB4MDkyYzE0Y2UsIDB4M2Y1NmRlNmEsIDB4M2Y1NTEwMjYsIDB4MDkzODg0NjksIDB4MDk1ZGQxMTYsIDB4M2Y0Zjk2YjQsIA0KKwkweDNmNGRiZWFjLCAweDA5NmEzZjQyLCAweDA5OGY4Nzk2LCAweDNmNDgyN2YwLCAweDNmNDY0NjI2LCAweDA5OWJmNDRjLCAweDA5YzEzODMxLCAweDNmNDA5MjIzLCANCisJMHgzZjNlYTY5NywgMHgwOWNkYTM2OCwgMHgwOWYyZTJjNywgMHgzZjM4ZDU1MiwgMHgzZjM2ZTAwNiwgMHgwOWZmNGM3OCwgMHgwYTI0ODczYSwgMHgzZjMwZjE4MSwgDQorCTB4M2YyZWYyNzYsIDB4MGEzMGVmNWUsIDB4MGE1NjI1NmMsIDB4M2YyOGU2YjYsIDB4M2YyNmRkZWMsIDB4MGE2MjhiZmEsIDB4MGE4N2JkM2QsIDB4M2YyMGI0ZjUsIA0KKwkweDNmMWVhMjZlLCAweDBhOTQyMjJmLCAweDBhYjk0ZThmLCAweDNmMTg1YzQzLCAweDNmMTY0MDAxLCAweDBhYzViMWRjLCAweDBhZWFkOTQ0LCAweDNmMGZkY2E1LCANCisJMHgzZjBkYjZhOSwgMHgwYWY3M2FlNSwgMHgwYjFjNWQzZCwgMHgzZjA3MzYyMSwgMHgzZjA1MDY2ZCwgMHgwYjI4YmQyYSwgMHgwYjRkZGE1YywgMHgzZWZlNjhiYywgDQorCTB4M2VmYzJmNTAsIDB4MGI1YTM4OGQsIDB4MGI3ZjUwODEsIDB4M2VmNTc0N2IsIDB4M2VmMzMxNWEsIDB4MGI4YmFjZjAsIDB4MGJiMGJmOGYsIDB4M2VlYzU5NjUsIA0KKwkweDNlZWEwYzhlLCAweDBiYmQxYTMzLCAweDBiZTIyNzY2LCAweDNlZTMxNzdlLCAweDNlZTBjMGY0LCAweDBiZWU4MDM4LCAweDBjMTM4N2U5LCAweDNlZDlhZWNjLCANCisJMHgzZWQ3NGU5MSwgMHgwYzFmZGVlMSwgMHgwYzQ0ZTBmOSwgMHgzZWQwMWY1NSwgMHgzZWNkYjU2YSwgMHgwYzUxMzYxMCwgMHgwYzc2MzI3OCwgMHgzZWM2NjkyMCwgDQorCTB4M2VjM2Y1ODUsIDB4MGM4Mjg1YTUsIDB4MGNhNzdjNDcsIDB4M2ViYzhjMzEsIDB4M2ViYTBlZTksIDB4MGNiM2NkODQsIDB4MGNkOGJlNDcsIDB4M2ViMjg4OGYsIA0KKwkweDNlYjAwMTljLCAweDBjZTUwZDhjLCAweDBkMDlmODViLCAweDNlYTg1ZTQxLCAweDNlYTVjZGEzLCAweDBkMTY0NWEwLCAweDBkM2IyYTY0LCAweDNlOWUwZDRjLCANCisJMHgzZTliNzMwNiwgMHgwZDQ3NzVhMSwgMHgwZDZjNTQ0MywgMHgzZTkzOTViNywgMHgzZTkwZjFjYSwgMHgwZDc4OWQ3MSwgMHgwZDlkNzVkYiwgMHgzZTg4Zjc4OCwgDQorCTB4M2U4NjQ5ZjUsIDB4MGRhOWJjZjIsIDB4MGRjZThmMGQsIDB4M2U3ZTMyYzYsIDB4M2U3YjdiOTAsIDB4MGRkYWQ0MDYsIDB4MGRmZjlmYmEsIDB4M2U3MzQ3NzgsIA0KKwkweDNlNzA4NjlmLCAweDBlMGJlMjhlLCAweDBlMzBhN2M1LCAweDNlNjgzNWE0LCAweDNlNjU2YjJiLCAweDBlM2NlODZiLCAweDBlNjFhNzBmLCAweDNlNWNmZDUxLCANCisJMHgzZTVhMjkzOSwgMHgwZTZkZTU4MCwgMHgwZTkyOWQ3YSwgMHgzZTUxOWU4NiwgMHgzZTRlYzBkMSwgMHgwZTllZDlhZiwgMHgwZWMzOGFlOCwgMHgzZTQ2MTk0YSwgDQorCTB4M2U0MzMxZmEsIDB4MGVjZmM0ZDksIDB4MGVmNDZmM2IsIDB4M2UzYTZkYTQsIDB4M2UzNzdjYmIsIDB4MGYwMGE2ZGYsIDB4MGYyNTRhNTMsIDB4M2UyZTliOWMsIA0KKwkweDNlMmJhMTFiLCAweDBmMzE3ZmE1LCAweDBmNTYxYzE1LCAweDNlMjJhMzM4LCAweDNlMWY5ZjIxLCAweDBmNjI0ZjBjLCAweDBmODZlNDYwLCAweDNlMTY4NDgwLCANCisJMHgzZTEzNzZkNSwgMHgwZjkzMTRmNSwgMHgwZmI3YTMxNywgMHgzZTBhM2Y3YiwgMHgzZTA3MjgzZiwgMHgwZmMzZDE0MywgMHgwZmU4NTgxZCwgMHgzZGZkZDQzMiwgDQorCTB4M2RmYWIzNjUsIDB4MGZmNDgzZDcsIDB4MTAxOTAzNTIsIDB4M2RmMTQyYWIsIDB4M2RlZTE4NTEsIDB4MTAyNTJjOTQsIDB4MTA0OWE0OWEsIDB4M2RlNDhhZWYsIA0KKwkweDNkZTE1NzA4LCAweDEwNTVjYjViLCAweDEwN2EzYmQ1LCAweDNkZDdhZDA1LCAweDNkZDQ2Zjk0LCAweDEwODY2MDBlLCAweDEwYWFjOGU2LCAweDNkY2FhOGY1LCANCisJMHgzZGM3NjFmYywgMHgxMGI2ZWE5MCwgMHgxMGRiNGJhZiwgMHgzZGJkN2VjNywgMHgzZGJhMmU0OCwgMHgxMGU3NmFjMywgMHgxMTBiYzQxMywgMHgzZGIwMmU4NCwgDQorCTB4M2RhY2Q0ODEsIDB4MTExN2UwODgsIDB4MTEzYzMxZjMsIDB4M2RhMmI4MzQsIDB4M2Q5ZjU0YWYsIDB4MTE0ODRiYzIsIDB4MTE2Yzk1MzEsIDB4M2Q5NTFiZGUsIA0KKwkweDNkOTFhZWQ5LCAweDExNzhhYzUzLCAweDExOWNlZGFmLCAweDNkODc1OThjLCAweDNkODNlMzA5LCAweDExYTkwMjFkLCAweDExY2QzYjUwLCAweDNkNzk3MTQ1LCANCisJMHgzZDc1ZjE0NywgMHgxMWQ5NGQwMiwgMHgxMWZkN2RmNiwgMHgzZDZiNjMxMywgMHgzZDY3ZDk5YiwgMHgxMjA5OGNlNSwgMHgxMjJkYjU4MywgMHgzZDVkMmVmZSwgDQorCTB4M2Q1OTljMGUsIDB4MTIzOWMxYTcsIDB4MTI1ZGUxZGEsIDB4M2Q0ZWQ1MGYsIDB4M2Q0YjM4YWEsIDB4MTI2OWViMmIsIDB4MTI4ZTAyZGMsIDB4M2Q0MDU1NGUsIA0KKwkweDNkM2NhZjc2LCAweDEyOWEwOTU0LCAweDEyYmUxODZjLCAweDNkMzFhZmM1LCAweDNkMmUwMDdjLCAweDEyY2ExYzAzLCAweDEyZWUyMjZjLCAweDNkMjJlNDdjLCANCisJMHgzZDFmMmJjNSwgMHgxMmZhMjMxYiwgMHgxMzFlMjBjMCwgMHgzZDEzZjM3ZSwgMHgzZDEwMzE1YSwgMHgxMzJhMWU3ZSwgMHgxMzRlMTM0OCwgMHgzZDA0ZGNkMiwgDQorCTB4M2QwMTExNDUsIDB4MTM1YTBlMGUsIDB4MTM3ZGY5ZTcsIDB4M2NmNWEwODIsIDB4M2NmMWNiOGUsIDB4MTM4OWYxYWYsIDB4MTNhZGQ0ODEsIDB4M2NlNjNlOTgsIA0KKwkweDNjZTI2MDNmLCAweDEzYjljOTQzLCAweDEzZGRhMmY3LCAweDNjZDZiNzFlLCAweDNjZDJjZjYyLCAweDEzZTk5NGFiLCAweDE0MGQ2NTJjLCAweDNjYzcwYTFjLCANCisJMHgzY2MzMThmZiwgMHgxNDE5NTNjYiwgMHgxNDNkMWIwMiwgMHgzY2I3Mzc5YywgMHgzY2IzM2QyMiwgMHgxNDQ5MDY4NSwgMHgxNDZjYzQ1YywgMHgzY2E3M2ZhOSwgDQorCTB4M2NhMzNiZDMsIDB4MTQ3OGFjYmMsIDB4MTQ5YzYxMWQsIDB4M2M5NzIyNGMsIDB4M2M5MzE1MWQsIDB4MTRhODQ2NTIsIDB4MTRjYmYxMjcsIDB4M2M4NmRmOGUsIA0KKwkweDNjODJjOTA5LCAweDE0ZDdkMzJhLCAweDE0ZmI3NDVlLCAweDNjNzY3NzdiLCAweDNjNzI1N2EyLCAweDE1MDc1MzI3LCAweDE1MmFlYWEzLCAweDNjNjVlYTFjLCANCisJMHgzYzYxYzBmMSwgMHgxNTM2YzYyYiwgMHgxNTVhNTNkOSwgMHgzYzU1Mzc3YiwgMHgzYzUxMDUwMSwgMHgxNTY2MmMxOCwgMHgxNTg5YWZlMywgMHgzYzQ0NWZhMiwgDQorCTB4M2M0MDIzZGQsIDB4MTU5NTg0ZDMsIDB4MTViOGZlYTQsIDB4M2MzMzYyOWQsIDB4M2MyZjFkOGUsIDB4MTVjNGQwM2UsIDB4MTVlODNmZmYsIDB4M2MyMjQwNzUsIA0KKwkweDNjMWRmMjFmLCAweDE1ZjQwZTNhLCAweDE2MTc3M2Q2LCAweDNjMTBmOTM1LCAweDNjMGNhMTliLCAweDE2MjMzZWFjLCAweDE2NDY5YTBkLCAweDNiZmY4Y2U4LCANCisJMHgzYmZiMmMwYywgMHgxNjUyNjE3NiwgMHgxNjc1YjI4NiwgMHgzYmVkZmI5OSwgMHgzYmU5OTE3ZSwgMHgxNjgxNzY3YywgMHgxNmE0YmQyNSwgMHgzYmRjNDU1MiwgDQorCTB4M2JkN2QxZmEsIDB4MTZiMDdkOWYsIDB4MTZkM2I5Y2MsIDB4M2JjYTZhMWQsIDB4M2JjNWVkOGQsIDB4MTZkZjc2YzMsIDB4MTcwMmE4NWUsIDB4M2JiODZhMDgsIA0KKwkweDNiYjNlNDQwLCAweDE3MGU2MWNjLCAweDE3MzE4OGJlLCAweDNiYTY0NTFiLCAweDNiYTFiNjIwLCAweDE3M2QzZTliLCAweDE3NjA1YWQwLCAweDNiOTNmYjYzLCANCisJMHgzYjhmNjMzNywgMHgxNzZjMGQxNSwgMHgxNzhmMWU3NiwgMHgzYjgxOGNlYiwgMHgzYjdjZWI5MCwgMHgxNzlhY2QxYywgMHgxN2JkZDM5NCwgMHgzYjZlZjliZSwgDQorCTB4M2I2YTRmMzgsIDB4MTdjOTdlOTMsIDB4MTdlYzdhMGQsIDB4M2I1YzQxZTgsIDB4M2I1NzhlMzksIDB4MTdmODIxNWUsIDB4MTgxYjExYzQsIDB4M2I0OTY1NzQsIA0KKwkweDNiNDRhOGEwLCAweDE4MjZiNTYxLCAweDE4NDk5YTlkLCAweDNiMzY2NDZlLCAweDNiMzE5ZTc3LCAweDE4NTUzYTdkLCAweDE4NzgxNDdhLCAweDNiMjMzZWUxLCANCisJMHgzYjFlNmZjYSwgMHgxODgzYjA5NywgMHgxOGE2N2YzZiwgMHgzYjBmZjRkOSwgMHgzYjBiMWNhNiwgMHgxOGIyMTc5MSwgMHgxOGQ0ZGFkMCwgMHgzYWZjODY2MywgDQorCTB4M2FmN2E1MTYsIDB4MThlMDZmNTAsIDB4MTkwMzI3MGYsIDB4M2FlOGYzOGIsIDB4M2FlNDA5MjYsIDB4MTkwZWI3YjcsIDB4MTkzMTYzZTEsIDB4M2FkNTNjNWIsIA0KKwkweDNhZDA0OGUzLCAweDE5M2NmMGE5LCAweDE5NWY5MTI4LCAweDNhYzE2MGUxLCAweDNhYmM2NDU4LCAweDE5NmIxYTA5LCAweDE5OGRhZWM4LCAweDNhYWQ2MTI5LCANCisJMHgzYWE4NWI5MiwgMHgxOTk5MzNiYiwgMHgxOWJiYmNhNiwgMHgzYTk5M2QzZSwgMHgzYTk0MmU5ZCwgMHgxOWM3M2RhMywgMHgxOWU5YmFhMywgMHgzYTg0ZjUyZiwgDQorCTB4M2E3ZmRkODYsIDB4MTlmNTM3YTQsIDB4MWExN2E4YTUsIDB4M2E3MDg5MDYsIDB4M2E2YjY4NTksIDB4MWEyMzIxYTIsIDB4MWE0NTg2OGUsIDB4M2E1YmY4ZDEsIA0KKwkweDNhNTZjZjIzLCAweDFhNTBmYjgxLCAweDFhNzM1NDQyLCAweDNhNDc0NDljLCAweDNhNDIxMWYwLCAweDFhN2VjNTI0LCAweDFhYTExMWE2LCAweDNhMzI2Yzc0LCANCisJMHgzYTJkMzBjZCwgMHgxYWFjN2U2ZiwgMHgxYWNlYmU5ZCwgMHgzYTFkNzA2NiwgMHgzYTE4MmJjOCwgMHgxYWRhMjc0NiwgMHgxYWZjNWIwYSwgMHgzYTA4NTA3ZiwgDQorCTB4M2EwMzAyZWQsIDB4MWIwN2JmOGMsIDB4MWIyOWU2ZDIsIDB4MzlmMzBjY2MsIDB4MzllZGI2NDksIDB4MWIzNTQ3MjcsIDB4MWI1NzYxZDgsIDB4MzlkZGE1NWEsIA0KKwkweDM5ZDg0NWU5LCAweDFiNjJiZGY4LCAweDFiODRjYzAxLCAweDM5YzgxYTM2LCAweDM5YzJiMWRhLCAweDFiOTAyM2U1LCAweDFiYjIyNTMwLCAweDM5YjI2YjZkLCANCisJMHgzOWFjZmEyYiwgMHgxYmJkNzhkMiwgMHgxYmRmNmQ0YSwgMHgzOTljOTkwZCwgMHgzOTk3MWVlNywgMHgxYmVhYmNhMSwgMHgxYzBjYTQzMiwgMHgzOTg2YTMyNCwgDQorCTB4Mzk4MTIwMWUsIDB4MWMxN2VmMzksIDB4MWMzOWM5Y2QsIDB4Mzk3MDg5YmYsIDB4Mzk2YWZkZGMsIDB4MWM0NTEwN2MsIDB4MWM2NmRkZmUsIDB4Mzk1YTRjZWIsIA0KKwkweDM5NTRiODJlLCAweDFjNzIyMDRmLCAweDFjOTNlMGFiLCAweDM5NDNlY2I2LCAweDM5M2U0ZjIzLCAweDFjOWYxZTk2LCAweDFjYzBkMWI2LCAweDM5MmQ2OTJmLCANCisJMHgzOTI3YzJjOSwgMHgxY2NjMGIzNSwgMHgxY2VkYjEwNiwgMHgzOTE2YzI2MiwgMHgzOTExMTMyZCwgMHgxY2Y4ZTYxMSwgMHgxZDFhN2U3ZCwgMHgzOGZmZjg1ZSwgDQorCTB4MzhmYTQwNWUsIDB4MWQyNWFmMGQsIDB4MWQ0NzNhMDAsIDB4MzhlOTBiMzEsIDB4MzhlMzRhNjksIDB4MWQ1MjY2MGYsIDB4MWQ3M2UzNzQsIDB4MzhkMWZhZTksIA0KKwkweDM4Y2MzMTVkLCAweDFkN2YwYWZiLCAweDFkYTA3YWJjLCAweDM4YmFjNzk1LCAweDM4YjRmNTQ3LCAweDFkYWI5ZGI1LCAweDFkY2NmZmJmLCAweDM4YTM3MTQyLCANCisJMHgzODlkOTYzNywgMHgxZGQ4MWUyMSwgMHgxZGY5NzI1ZiwgMHgzODhiZjdmZiwgMHgzODg2MTQzYiwgMHgxZTA0OGMyNCwgMHgxZTI1ZDI4MiwgMHgzODc0NWJkYiwgDQorCTB4Mzg2ZTZmNjAsIDB4MWUzMGU3YTQsIDB4MWU1MjIwMGMsIDB4Mzg1YzljZTMsIDB4Mzg1NmE3YjYsIDB4MWU1ZDMwODQsIDB4MWU3ZTVhZTIsIDB4Mzg0NGJiMjgsIA0KKwkweDM4M2ViZDRjLCAweDFlODk2NmE4LCAweDFlYWE4MmU5LCAweDM4MmNiNmI3LCAweDM4MjZiMDMwLCAweDFlYjU4OWY3LCAweDFlZDY5ODA1LCAweDM4MTQ4ZjlmLCANCisJMHgzODBlODA3MSwgMHgxZWUxOWE1NCwgMHgxZjAyOWExYywgMHgzN2ZjNDVlZiwgMHgzN2Y2MmUxZCwgMHgxZjBkOTdhNSwgMHgxZjJlODkxMSwgMHgzN2UzZDliNywgDQorCTB4MzdkZGI5NDUsIDB4MWYzOTgxY2UsIDB4MWY1YTY0Y2IsIDB4MzdjYjRiMDQsIDB4MzdjNTIxZjYsIDB4MWY2NTU4YjUsIDB4MWY4NjJkMmQsIDB4MzdiMjk5ZTcsIA0KKwkweDM3YWM2ODQxLCAweDFmOTExYzNkLCAweDFmYjFlMjFkLCAweDM3OTljNjZmLCAweDM3OTM4YzM0LCAweDFmYmNjYzRkLCAweDFmZGQ4MzgxLCAweDM3ODBkMGFhLCANCisJMHgzNzdhOGRkZiwgMHgxZmU4NjhjOCwgMHgyMDA5MTEzYywgMHgzNzY3YjhhOSwgMHgzNzYxNmQ1MSwgMHgyMDEzZjE5NiwgMHgyMDM0OGIzNSwgMHgzNzRlN2U3YiwgDQorCTB4Mzc0ODJhOWEsIDB4MjAzZjY2OTksIDB4MjA1ZmYxNGYsIDB4MzczNTIyMmYsIDB4MzcyZWM1YzksIDB4MjA2YWM3YjgsIDB4MjA4YjQzNzIsIDB4MzcxYmEzZDQsIA0KKwkweDM3MTUzZWVlLCAweDIwOTYxNGQ5LCAweDIwYjY4MTgxLCAweDM3MDIwMzdjLCAweDM2ZmI5NjE4LCAweDIwYzE0ZGRmLCAweDIwZTFhYjYzLCAweDM2ZTg0MTM1LCANCisJMHgzNmUxY2I1OCwgMHgyMGVjNzJiMSwgMHgyMTBjYzBmYywgMHgzNmNlNWQxMCwgMHgzNmM3ZGViZCwgMHgyMTE3ODMzNCwgMHgyMTM3YzIzMiwgMHgzNmI0NTcxYiwgDQorCTB4MzZhZGQwNTgsIDB4MjE0MjdmNGQsIDB4MjE2MmFlZWEsIDB4MzY5YTJmNjksIDB4MzY5M2EwMzgsIDB4MjE2ZDY2ZTIsIDB4MjE4ZDg3MGIsIDB4MzY3ZmU2MDgsIA0KKwkweDM2Nzk0ZTZlLCAweDIxOTgzOWQ4LCAweDIxYjg0YTc5LCAweDM2NjU3YjA4LCAweDM2NWVkYjA5LCAweDIxYzJmODE1LCAweDIxZTJmOTFhLCAweDM2NGFlZTdiLCANCisJMHgzNjQ0NDYxYiwgMHgyMWVkYTE3ZiwgMHgyMjBkOTJkNCwgMHgzNjMwNDA3MCwgMHgzNjI5OGZiNCwgMHgyMjE4MzVmYiwgMHgyMjM4MTc4ZCwgMHgzNjE1NzBmOCwgDQorCTB4MzYwZWI3ZTMsIDB4MjI0MmI1NmYsIDB4MjI2Mjg3MjksIDB4MzVmYTgwMjMsIDB4MzVmM2JlYmEsIDB4MjI2ZDFmYzEsIDB4MjI4Y2UxOTEsIDB4MzVkZjZlMDMsIA0KKwkweDM1ZDhhNDQ5LCAweDIyOTc3NGQ3LCAweDIyYjcyNmE4LCAweDM1YzQzYWE3LCAweDM1YmQ2OGExLCAweDIyYzFiNDk2LCAweDIyZTE1NjU1LCAweDM1YThlNjIxLCANCisJMHgzNWEyMGJkMywgMHgyMmViZGVlNSwgMHgyMzBiNzA3ZSwgMHgzNThkNzA4MSwgMHgzNTg2OGRlZiwgMHgyMzE1ZjNhOCwgMHgyMzM1NzUwOSwgMHgzNTcxZDlkOSwgDQorCTB4MzU2YWVmMDgsIDB4MjMzZmYyYzgsIDB4MjM1ZjYzZGMsIDB4MzU1NjIyMzksIDB4MzU0ZjJmMmMsIDB4MjM2OWRjMjksIDB4MjM4OTNjZGQsIDB4MzUzYTQ5YjIsIA0KKwkweDM1MzM0ZTZmLCAweDIzOTNhZmIyLCAweDIzYjJmZmYzLCAweDM1MWU1MDU2LCAweDM1MTc0Y2UwLCAweDIzYmQ2ZDQ4LCAweDIzZGNhZDAzLCAweDM1MDIzNjM2LCANCisJMHgzNGZiMmE5MiwgMHgyM2U3MTRkMywgMHgyNDA2NDNmNCwgMHgzNGU1ZmI2MywgMHgzNGRlZTc5NSwgMHgyNDEwYTYzOSwgMHgyNDJmYzRhZCwgMHgzNGM5OWZlZiwgDQorCTB4MzRjMjgzZmIsIDB4MjQzYTIxNWYsIDB4MjQ1OTJmMTMsIDB4MzRhZDIzZWIsIDB4MzRhNWZmZDUsIDB4MjQ2Mzg2MmMsIDB4MjQ4MjgzMGQsIDB4MzQ5MDg3NjgsIA0KKwkweDM0ODk1YjM2LCAweDI0OGNkNDg3LCAweDI0YWJjMDgyLCAweDM0NzNjYTc5LCAweDM0NmM5NjJmLCAweDI0YjYwYzU3LCAweDI0ZDRlNzU3LCAweDM0NTZlZDJmLCANCisJMHgzNDRmYjBkMSwgMHgyNGRmMmQ4MSwgMHgyNGZkZjc3NSwgMHgzNDM5ZWY5YywgMHgzNDMyYWIyZSwgMHgyNTA4MzdlZCwgMHgyNTI2ZjBjMSwgMHgzNDFjZDFkMiwgDQorCTB4MzQxNTg1NTksIDB4MjUzMTJiODEsIDB4MjU0ZmQzMjMsIDB4MzNmZjkzZTIsIDB4MzNmODNmNjIsIDB4MjU1YTA4MjMsIDB4MjU3ODllODAsIDB4MzNlMjM1ZGYsIA0KKwkweDMzZGFkOTVlLCAweDI1ODJjZGJjLCAweDI1YTE1MmMwLCAweDMzYzRiN2RiLCAweDMzYmQ1MzVjLCAweDI1YWI3YzMwLCAweDI1YzllZmNhLCAweDMzYTcxOWU4LCANCisJMHgzMzlmYWQ3MCwgMHgyNWQ0MTM2OSwgMHgyNWYyNzU4NCwgMHgzMzg5NWMxOCwgMHgzMzgxZTdhYywgMHgyNWZjOTM0YiwgMHgyNjFhZTNkNiwgMHgzMzZiN2U3ZSwgDQorCTB4MzM2NDAyMjMsIDB4MjYyNGZiYmYsIDB4MjY0MzNhYTcsIDB4MzM0ZDgxMmQsIDB4MzM0NWZjZTYsIDB4MjY0ZDRjYWMsIDB4MjY2Yjc5ZGQsIDB4MzMyZjY0MzUsIA0KKwkweDMzMjdkODA4LCAweDI2NzU4NWY4LCAweDI2OTNhMTYxLCAweDMzMTEyN2FiLCAweDMzMDk5MzljLCAweDI2OWRhNzhiLCAweDI2YmJiMTE5LCAweDMyZjJjYmExLCANCisJMHgzMmViMmZiNSwgMHgyNmM1YjE0YywgMHgyNmUzYThlYywgMHgzMmQ0NTAyOSwgMHgzMmNjYWM2NCwgMHgyNmVkYTMyMiwgMHgyNzBiODhjMiwgMHgzMmI1YjU1NywgDQorCTB4MzJhZTA5YmUsIDB4MjcxNTdjZjUsIDB4MjczMzUwODIsIDB4MzI5NmZiM2QsIDB4MzI4ZjQ3ZDUsIDB4MjczZDNlYWMsIDB4Mjc1YjAwMTQsIDB4MzI3ODIxZWUsIA0KKwkweDMyNzA2NmJjLCAweDI3NjRlODJmLCAweDI3ODI5NzYwLCAweDMyNTkyOTdkLCAweDMyNTE2Njg2LCAweDI3OGM3OTY1LCAweDI3YWExNjRjLCAweDMyM2ExMWZlLCANCisJMHgzMjMyNDc0NiwgMHgyN2IzZjIzNSwgMHgyN2QxN2NjMSwgMHgzMjFhZGI4MywgMHgzMjEzMDkwZiwgMHgyN2RiNTI4OCwgMHgyN2Y4Y2FhNSwgMHgzMWZiODYyMCwgDQorCTB4MzFmM2FiZjUsIDB4MjgwMjlhNDUsIDB4MjgxZmZmZTIsIDB4MzFkYzExZTgsIDB4MzFkNDMwMGIsIDB4MjgyOWM5NTQsIDB4Mjg0NzFjNWUsIDB4MzFiYzdlZWUsIA0KKwkweDMxYjQ5NTY0LCAweDI4NTBkZjlkLCAweDI4NmUyMDAyLCAweDMxOWNjZDQ2LCAweDMxOTRkYzE0LCAweDI4NzdkZDA3LCAweDI4OTUwYWI2LCAweDMxN2NmZDA0LCANCisJMHgzMTc1MDQyZSwgMHgyODllYzE3YSwgMHgyOGJiZGM2MSwgMHgzMTVkMGUzYiwgMHgzMTU1MGRjNiwgMHgyOGM1OGNkZiwgMHgyOGUyOTRlYiwgMHgzMTNkMDBmZiwgDQorCTB4MzEzNGY4ZjEsIDB4MjhlYzNmMWUsIDB4MjkwOTM0M2UsIDB4MzExY2Q1NjQsIDB4MzExNGM1YzAsIDB4MjkxMmQ4MWYsIDB4MjkyZmJhNDAsIDB4MzBmYzhiN2QsIA0KKwkweDMwZjQ3NDQ5LCAweDI5Mzk1N2M5LCAweDI5NTYyNmRhLCAweDMwZGMyMzVlLCAweDMwZDQwNGEwLCAweDI5NWZiZTA2LCAweDI5N2M3OWY1LCAweDMwYmI5ZDFjLCANCisJMHgzMGIzNzZkOCwgMHgyOTg2MGFiZCwgMHgyOWEyYjM3OCwgMHgzMDlhZjhjYSwgMHgzMDkyY2IwNSwgMHgyOWFjM2RkNywgMHgyOWM4ZDM0ZCwgMHgzMDdhMzY3YywgDQorCTB4MzA3MjAxM2MsIDB4MjlkMjU3M2MsIDB4MjllZWQ5NWIsIDB4MzA1OTU2NDgsIDB4MzA1MTE5OTEsIDB4MjlmODU2ZDUsIDB4MmExNGM1OGIsIDB4MzAzODU4NDAsIA0KKwkweDMwMzAxNDE4LCAweDJhMWUzYzhhLCAweDJhM2E5N2M3LCAweDMwMTczYzdhLCAweDMwMGVmMGU1LCAweDJhNDQwODQ0LCAweDJhNjA0ZmY1LCAweDJmZjYwMzBhLCANCisJMHgyZmVkYjAwZCwgMHgyYTY5YjllYywgMHgyYTg1ZWUwMCwgMHgyZmQ0YWMwNCwgMHgyZmNjNTFhNSwgMHgyYThmNTE2YiwgMHgyYWFiNzFkMCwgMHgyZmIzMzc3YywgDQorCTB4MmZhYWQ1YzEsIDB4MmFiNGNlYTksIDB4MmFkMGRiNGUsIDB4MmY5MWE1ODksIDB4MmY4OTNjNzUsIDB4MmFkYTMxOGUsIDB4MmFmNjJhNjMsIDB4MmY2ZmY2M2QsIA0KKwkweDJmNjc4NWQ3LCAweDJhZmY3YTA1LCAweDJiMWI1ZWY4LCAweDJmNGUyOWFmLCAweDJmNDViMWZiLCAweDJiMjRhN2Y2LCAweDJiNDA3OGY1LCAweDJmMmMzZmYyLCANCisJMHgyZjIzYzBmNiwgMHgyYjQ5YmI0YSwgMHgyYjY1Nzg0NCwgMHgyZjBhMzkxZCwgMHgyZjAxYjJkZSwgMHgyYjZlYjNlYSwgMHgyYjhhNWNjZSwgMHgyZWU4MTU0MywgDQorCTB4MmVkZjg3YzYsIDB4MmI5MzkxYzAsIDB4MmJhZjI2N2QsIDB4MmVjNWQ0NzksIDB4MmViZDNmYzQsIDB4MmJiODU0YjQsIDB4MmJkM2Q1M2EsIDB4MmVhMzc2ZDYsIA0KKwkweDJlOWFkYWVlLCAweDJiZGNmY2IwLCAweDJiZjg2OGVkLCAweDJlODBmYzZlLCAweDJlNzg1OTU4LCAweDJjMDE4OTllLCAweDJjMWNlMTgxLCAweDJlNWU2NTU2LCANCisJMHgyZTU1YmIxNywgMHgyYzI1ZmI2NiwgMHgyYzQxM2VkZiwgMHgyZTNiYjFhNCwgMHgyZTMzMDA0MiwgMHgyYzRhNTFmMywgMHgyYzY1ODBmMSwgMHgyZTE4ZTE2ZCwgDQorCTB4MmUxMDI4ZWQsIDB4MmM2ZThkMmUsIDB4MmM4OWE3OWYsIDB4MmRmNWY0YzcsIDB4MmRlZDM1MmYsIDB4MmM5MmFkMDEsIDB4MmNhZGIyZDUsIDB4MmRkMmViYzcsIA0KKwkweDJkY2EyNTFjLCAweDJjYjZiMTU1LCAweDJjZDFhMjdiLCAweDJkYWZjNjgzLCAweDJkYTZmOGNhLCAweDJjZGE5YTE0LCAweDJjZjU3NjdjLCAweDJkOGM4NTEwLCANCisJMHgyZDgzYjA0ZiwgMHgyY2ZlNjcyOCwgMHgyZDE5MmVjMSwgMHgyZDY5Mjc4NCwgMHgyZDYwNGJjMCwgMHgyZDIyMTg3YSwgMHgyZDNjY2IzNCwgMHgyZDQ1YWRmNg0KK307DQorDQorDQorY29uc3QgaW50IHR3aWRUYWI1MTJbKDgqNiArIDMyKjYgKyAxMjgqNikvMl0gPSB7DQorCTB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4M2IyMDE4N2QsIA0KKwkweDNlYzUwYzdjLCAweDM1MzYyMzhlLCAweDJkNDEyZDQxLCAweDNiMjAxODdkLCANCisJMHgxODdkM2IyMCwgMHgxODdkM2IyMCwgMHgzNTM2MjM4ZSwgMHhmMzg0M2VjNSwgDQorCTB4MDAwMDQwMDAsIDB4MmQ0MTJkNDEsIDB4ZDJiZjJkNDEsIDB4ZTc4MzNiMjAsIA0KKwkweDIzOGUzNTM2LCAweGMxM2IwYzdjLCAweGQyYmYyZDQxLCAweDE4N2QzYjIwLCANCisJMHhjNGUwZTc4MywgMHhjNGUwMTg3ZCwgMHgwYzdjM2VjNSwgMHhkYzcyY2FjYSwgDQorDQorCTB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4M2ZiMTA2NDUsIA0KKwkweDNmZWMwMzIzLCAweDNmNGUwOTY0LCAweDNlYzUwYzdjLCAweDNmYjEwNjQ1LCANCisJMHgzZDNlMTI5NCwgMHgzZDNlMTI5NCwgMHgzZjRlMDk2NCwgMHgzOWRhMWI1ZCwgDQorCTB4M2IyMDE4N2QsIDB4M2VjNTBjN2MsIDB4MzUzNjIzOGUsIDB4Mzg3MTFlMmIsIA0KKwkweDNlMTQwZjhjLCAweDJmNmIyYWZhLCAweDM1MzYyMzhlLCAweDNkM2UxMjk0LCANCisJMHgyODk5MzE3OSwgMHgzMTc5Mjg5OSwgMHgzYzQyMTU4ZiwgMHgyMGU3MzZlNSwgDQorCTB4MmQ0MTJkNDEsIDB4M2IyMDE4N2QsIDB4MTg3ZDNiMjAsIDB4Mjg5OTMxNzksIA0KKwkweDM5ZGExYjVkLCAweDBmOGMzZTE0LCAweDIzOGUzNTM2LCAweDM4NzExZTJiLCANCisJMHgwNjQ1M2ZiMSwgMHgxZTJiMzg3MSwgMHgzNmU1MjBlNywgMHhmY2RkM2ZlYywgDQorCTB4MTg3ZDNiMjAsIDB4MzUzNjIzOGUsIDB4ZjM4NDNlYzUsIDB4MTI5NDNkM2UsIA0KKwkweDMzNjcyNjFmLCAweGVhNzEzYzQyLCAweDBjN2MzZWM1LCAweDMxNzkyODk5LCANCisJMHhlMWQ1Mzg3MSwgMHgwNjQ1M2ZiMSwgMHgyZjZiMmFmYSwgMHhkOWUxMzM2NywgDQorCTB4MDAwMDQwMDAsIDB4MmQ0MTJkNDEsIDB4ZDJiZjJkNDEsIDB4ZjliYjNmYjEsIA0KKwkweDJhZmEyZjZiLCAweGNjOTkyNjFmLCAweGYzODQzZWM1LCAweDI4OTkzMTc5LCANCisJMHhjNzhmMWUyYiwgMHhlZDZjM2QzZSwgMHgyNjFmMzM2NywgMHhjM2JlMTU4ZiwgDQorCTB4ZTc4MzNiMjAsIDB4MjM4ZTM1MzYsIDB4YzEzYjBjN2MsIDB4ZTFkNTM4NzEsIA0KKwkweDIwZTczNmU1LCAweGMwMTQwMzIzLCAweGRjNzIzNTM2LCAweDFlMmIzODcxLCANCisJMHhjMDRmZjliYiwgMHhkNzY3MzE3OSwgMHgxYjVkMzlkYSwgMHhjMWVjZjA3NCwgDQorCTB4ZDJiZjJkNDEsIDB4MTg3ZDNiMjAsIDB4YzRlMGU3ODMsIDB4Y2U4NzI4OTksIA0KKwkweDE1OGYzYzQyLCAweGM5MWJkZjE5LCAweGNhY2EyMzhlLCAweDEyOTQzZDNlLCANCisJMHhjZTg3ZDc2NywgMHhjNzhmMWUyYiwgMHgwZjhjM2UxNCwgMHhkNTA2ZDA5NSwgDQorCTB4YzRlMDE4N2QsIDB4MGM3YzNlYzUsIDB4ZGM3MmNhY2EsIDB4YzJjMjEyOTQsIA0KKwkweDA5NjQzZjRlLCAweGU0YTNjNjI2LCAweGMxM2IwYzdjLCAweDA2NDUzZmIxLCANCisJMHhlZDZjYzJjMiwgMHhjMDRmMDY0NSwgMHgwMzIzM2ZlYywgMHhmNjljYzBiMiwgDQorDQorCTB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4M2ZmYjAxOTIsIA0KKwkweDNmZmUwMGM5LCAweDNmZjQwMjViLCAweDNmZWMwMzIzLCAweDNmZmIwMTkyLCANCisJMHgzZmQzMDRiNSwgMHgzZmQzMDRiNSwgMHgzZmY0MDI1YiwgMHgzZjljMDcwZCwgDQorCTB4M2ZiMTA2NDUsIDB4M2ZlYzAzMjMsIDB4M2Y0ZTA5NjQsIDB4M2Y4NDA3ZDUsIA0KKwkweDNmZTEwM2VjLCAweDNlZWIwYmI2LCAweDNmNGUwOTY0LCAweDNmZDMwNGI1LCANCisJMHgzZTcxMGUwNSwgMHgzZjBlMGFmMSwgMHgzZmMzMDU3ZCwgMHgzZGUyMTA0ZiwgDQorCTB4M2VjNTBjN2MsIDB4M2ZiMTA2NDUsIDB4M2QzZTEyOTQsIDB4M2U3MTBlMDUsIA0KKwkweDNmOWMwNzBkLCAweDNjODQxNGQxLCAweDNlMTQwZjhjLCAweDNmODQwN2Q1LCANCisJMHgzYmI2MTcwOCwgMHgzZGFlMTExMSwgMHgzZjZhMDg5YywgMHgzYWQyMTkzNywgDQorCTB4M2QzZTEyOTQsIDB4M2Y0ZTA5NjQsIDB4MzlkYTFiNWQsIDB4M2NjNTE0MTMsIA0KKwkweDNmMmYwYTJhLCAweDM4Y2YxZDc5LCAweDNjNDIxNThmLCAweDNmMGUwYWYxLCANCisJMHgzN2FmMWY4YiwgMHgzYmI2MTcwOCwgMHgzZWViMGJiNiwgMHgzNjdjMjE5MiwgDQorCTB4M2IyMDE4N2QsIDB4M2VjNTBjN2MsIDB4MzUzNjIzOGUsIDB4M2E4MjE5ZWYsIA0KKwkweDNlOWMwZDQxLCAweDMzZGUyNTdkLCAweDM5ZGExYjVkLCAweDNlNzEwZTA1LCANCisJMHgzMjc0Mjc1ZiwgMHgzOTJhMWNjNiwgMHgzZTQ0MGVjOSwgMHgzMGY4MjkzNCwgDQorCTB4Mzg3MTFlMmIsIDB4M2UxNDBmOGMsIDB4MmY2YjJhZmEsIDB4MzdhZjFmOGIsIA0KKwkweDNkZTIxMDRmLCAweDJkY2UyY2IyLCAweDM2ZTUyMGU3LCAweDNkYWUxMTExLCANCisJMHgyYzIxMmU1YSwgMHgzNjEyMjIzZCwgMHgzZDc3MTFkMywgMHgyYTY1MmZmMSwgDQorCTB4MzUzNjIzOGUsIDB4M2QzZTEyOTQsIDB4Mjg5OTMxNzksIDB4MzQ1MzI0ZGEsIA0KKwkweDNkMDIxMzU0LCAweDI2YzAzMmVlLCAweDMzNjcyNjFmLCAweDNjYzUxNDEzLCANCisJMHgyNGRhMzQ1MywgMHgzMjc0Mjc1ZiwgMHgzYzg0MTRkMSwgMHgyMmU2MzVhNSwgDQorCTB4MzE3OTI4OTksIDB4M2M0MjE1OGYsIDB4MjBlNzM2ZTUsIDB4MzA3NjI5Y2QsIA0KKwkweDNiZmQxNjRjLCAweDFlZGMzODExLCAweDJmNmIyYWZhLCAweDNiYjYxNzA4LCANCisJMHgxY2M2MzkyYSwgMHgyZTVhMmMyMSwgMHgzYjZjMTdjMywgMHgxYWE2M2EyZiwgDQorCTB4MmQ0MTJkNDEsIDB4M2IyMDE4N2QsIDB4MTg3ZDNiMjAsIDB4MmMyMTJlNWEsIA0KKwkweDNhZDIxOTM3LCAweDE2NGMzYmZkLCAweDJhZmEyZjZiLCAweDNhODIxOWVmLCANCisJMHgxNDEzM2NjNSwgMHgyOWNkMzA3NiwgMHgzYTJmMWFhNiwgMHgxMWQzM2Q3NywgDQorCTB4Mjg5OTMxNzksIDB4MzlkYTFiNWQsIDB4MGY4YzNlMTQsIDB4Mjc1ZjMyNzQsIA0KKwkweDM5ODMxYzEyLCAweDBkNDEzZTljLCAweDI2MWYzMzY3LCAweDM5MmExY2M2LCANCisJMHgwYWYxM2YwZSwgMHgyNGRhMzQ1MywgMHgzOGNmMWQ3OSwgMHgwODljM2Y2YSwgDQorCTB4MjM4ZTM1MzYsIDB4Mzg3MTFlMmIsIDB4MDY0NTNmYjEsIDB4MjIzZDM2MTIsIA0KKwkweDM4MTExZWRjLCAweDAzZWMzZmUxLCAweDIwZTczNmU1LCAweDM3YWYxZjhiLCANCisJMHgwMTkyM2ZmYiwgMHgxZjhiMzdhZiwgMHgzNzRiMjAzOSwgMHhmZjM3M2ZmZSwgDQorCTB4MWUyYjM4NzEsIDB4MzZlNTIwZTcsIDB4ZmNkZDNmZWMsIDB4MWNjNjM5MmEsIA0KKwkweDM2N2MyMTkyLCAweGZhODMzZmMzLCAweDFiNWQzOWRhLCAweDM2MTIyMjNkLCANCisJMHhmODJiM2Y4NCwgMHgxOWVmM2E4MiwgMHgzNWE1MjJlNiwgMHhmNWQ2M2YyZiwgDQorCTB4MTg3ZDNiMjAsIDB4MzUzNjIzOGUsIDB4ZjM4NDNlYzUsIDB4MTcwODNiYjYsIA0KKwkweDM0YzYyNDM0LCAweGYxMzczZTQ0LCAweDE1OGYzYzQyLCAweDM0NTMyNGRhLCANCisJMHhlZWVmM2RhZSwgMHgxNDEzM2NjNSwgMHgzM2RlMjU3ZCwgMHhlY2FjM2QwMiwgDQorCTB4MTI5NDNkM2UsIDB4MzM2NzI2MWYsIDB4ZWE3MTNjNDIsIDB4MTExMTNkYWUsIA0KKwkweDMyZWUyNmMwLCAweGU4M2QzYjZjLCAweDBmOGMzZTE0LCAweDMyNzQyNzVmLCANCisJMHhlNjExM2E4MiwgMHgwZTA1M2U3MSwgMHgzMWY3MjdmZCwgMHhlM2VlMzk4MywgDQorCTB4MGM3YzNlYzUsIDB4MzE3OTI4OTksIDB4ZTFkNTM4NzEsIDB4MGFmMTNmMGUsIA0KKwkweDMwZjgyOTM0LCAweGRmYzczNzRiLCAweDA5NjQzZjRlLCAweDMwNzYyOWNkLCANCisJMHhkZGMzMzYxMiwgMHgwN2Q1M2Y4NCwgMHgyZmYxMmE2NSwgMHhkYmNjMzRjNiwgDQorCTB4MDY0NTNmYjEsIDB4MmY2YjJhZmEsIDB4ZDllMTMzNjcsIDB4MDRiNTNmZDMsIA0KKwkweDJlZTMyYjhlLCAweGQ4MDMzMWY3LCAweDAzMjMzZmVjLCAweDJlNWEyYzIxLCANCisJMHhkNjMzMzA3NiwgMHgwMTkyM2ZmYiwgMHgyZGNlMmNiMiwgMHhkNDcyMmVlMywgDQorCTB4MDAwMDQwMDAsIDB4MmQ0MTJkNDEsIDB4ZDJiZjJkNDEsIDB4ZmU2ZTNmZmIsIA0KKwkweDJjYjIyZGNlLCAweGQxMWQyYjhlLCAweGZjZGQzZmVjLCAweDJjMjEyZTVhLCANCisJMHhjZjhhMjljZCwgMHhmYjRiM2ZkMywgMHgyYjhlMmVlMywgMHhjZTA5MjdmZCwgDQorCTB4ZjliYjNmYjEsIDB4MmFmYTJmNmIsIDB4Y2M5OTI2MWYsIDB4ZjgyYjNmODQsIA0KKwkweDJhNjUyZmYxLCAweGNiM2EyNDM0LCAweGY2OWMzZjRlLCAweDI5Y2QzMDc2LCANCisJMHhjOWVlMjIzZCwgMHhmNTBmM2YwZSwgMHgyOTM0MzBmOCwgMHhjOGI1MjAzOSwgDQorCTB4ZjM4NDNlYzUsIDB4Mjg5OTMxNzksIDB4Yzc4ZjFlMmIsIDB4ZjFmYjNlNzEsIA0KKwkweDI3ZmQzMWY3LCAweGM2N2QxYzEyLCAweGYwNzQzZTE0LCAweDI3NWYzMjc0LCANCisJMHhjNTdlMTllZiwgMHhlZWVmM2RhZSwgMHgyNmMwMzJlZSwgMHhjNDk0MTdjMywgDQorCTB4ZWQ2YzNkM2UsIDB4MjYxZjMzNjcsIDB4YzNiZTE1OGYsIDB4ZWJlZDNjYzUsIA0KKwkweDI1N2QzM2RlLCAweGMyZmUxMzU0LCAweGVhNzEzYzQyLCAweDI0ZGEzNDUzLCANCisJMHhjMjUyMTExMSwgMHhlOGY4M2JiNiwgMHgyNDM0MzRjNiwgMHhjMWJjMGVjOSwgDQorCTB4ZTc4MzNiMjAsIDB4MjM4ZTM1MzYsIDB4YzEzYjBjN2MsIDB4ZTYxMTNhODIsIA0KKwkweDIyZTYzNWE1LCAweGMwZDEwYTJhLCAweGU0YTMzOWRhLCAweDIyM2QzNjEyLCANCisJMHhjMDdjMDdkNSwgMHhlMzNhMzkyYSwgMHgyMTkyMzY3YywgMHhjMDNkMDU3ZCwgDQorCTB4ZTFkNTM4NzEsIDB4MjBlNzM2ZTUsIDB4YzAxNDAzMjMsIDB4ZTA3NTM3YWYsIA0KKwkweDIwMzkzNzRiLCAweGMwMDIwMGM5LCAweGRmMTkzNmU1LCAweDFmOGIzN2FmLCANCisJMHhjMDA1ZmU2ZSwgMHhkZGMzMzYxMiwgMHgxZWRjMzgxMSwgMHhjMDFmZmMxNCwgDQorCTB4ZGM3MjM1MzYsIDB4MWUyYjM4NzEsIDB4YzA0ZmY5YmIsIDB4ZGIyNjM0NTMsIA0KKwkweDFkNzkzOGNmLCAweGMwOTZmNzY0LCAweGQ5ZTEzMzY3LCAweDFjYzYzOTJhLCANCisJMHhjMGYyZjUwZiwgMHhkOGExMzI3NCwgMHgxYzEyMzk4MywgMHhjMTY0ZjJiZiwgDQorCTB4ZDc2NzMxNzksIDB4MWI1ZDM5ZGEsIDB4YzFlY2YwNzQsIDB4ZDYzMzMwNzYsIA0KKwkweDFhYTYzYTJmLCAweGMyODllZTJkLCAweGQ1MDYyZjZiLCAweDE5ZWYzYTgyLCANCisJMHhjMzNiZWJlZCwgMHhkM2RmMmU1YSwgMHgxOTM3M2FkMiwgMHhjNDAzZTliNCwgDQorCTB4ZDJiZjJkNDEsIDB4MTg3ZDNiMjAsIDB4YzRlMGU3ODMsIDB4ZDFhNjJjMjEsIA0KKwkweDE3YzMzYjZjLCAweGM1ZDFlNTVhLCAweGQwOTUyYWZhLCAweDE3MDgzYmI2LCANCisJMHhjNmQ2ZTMzYSwgMHhjZjhhMjljZCwgMHgxNjRjM2JmZCwgMHhjN2VmZTEyNCwgDQorCTB4Y2U4NzI4OTksIDB4MTU4ZjNjNDIsIDB4YzkxYmRmMTksIDB4Y2Q4YzI3NWYsIA0KKwkweDE0ZDEzYzg0LCAweGNhNWJkZDFhLCAweGNjOTkyNjFmLCAweDE0MTMzY2M1LCANCisJMHhjYmFkZGIyNiwgMHhjYmFkMjRkYSwgMHgxMzU0M2QwMiwgMHhjZDEyZDk0MCwgDQorCTB4Y2FjYTIzOGUsIDB4MTI5NDNkM2UsIDB4Y2U4N2Q3NjcsIDB4YzllZTIyM2QsIA0KKwkweDExZDMzZDc3LCAweGQwMGZkNTliLCAweGM5MWIyMGU3LCAweDExMTEzZGFlLCANCisJMHhkMWE2ZDNkZiwgMHhjODUxMWY4YiwgMHgxMDRmM2RlMiwgMHhkMzRlZDIzMiwgDQorCTB4Yzc4ZjFlMmIsIDB4MGY4YzNlMTQsIDB4ZDUwNmQwOTUsIDB4YzZkNjFjYzYsIA0KKwkweDBlYzkzZTQ0LCAweGQ2Y2NjZjA4LCAweGM2MjYxYjVkLCAweDBlMDUzZTcxLCANCisJMHhkOGExY2Q4YywgMHhjNTdlMTllZiwgMHgwZDQxM2U5YywgMHhkYTgzY2MyMiwgDQorCTB4YzRlMDE4N2QsIDB4MGM3YzNlYzUsIDB4ZGM3MmNhY2EsIDB4YzQ0YTE3MDgsIA0KKwkweDBiYjYzZWViLCAweGRlNmVjOTg0LCAweGMzYmUxNThmLCAweDBhZjEzZjBlLCANCisJMHhlMDc1Yzg1MSwgMHhjMzNiMTQxMywgMHgwYTJhM2YyZiwgMHhlMjg3YzczMSwgDQorCTB4YzJjMjEyOTQsIDB4MDk2NDNmNGUsIDB4ZTRhM2M2MjYsIDB4YzI1MjExMTEsIA0KKwkweDA4OWMzZjZhLCAweGU2YzljNTJlLCAweGMxZWMwZjhjLCAweDA3ZDUzZjg0LCANCisJMHhlOGY4YzQ0YSwgMHhjMThmMGUwNSwgMHgwNzBkM2Y5YywgMHhlYjJmYzM3YywgDQorCTB4YzEzYjBjN2MsIDB4MDY0NTNmYjEsIDB4ZWQ2Y2MyYzIsIDB4YzBmMjBhZjEsIA0KKwkweDA1N2QzZmMzLCAweGVmYjFjMjFlLCAweGMwYjIwOTY0LCAweDA0YjUzZmQzLCANCisJMHhmMWZiYzE4ZiwgMHhjMDdjMDdkNSwgMHgwM2VjM2ZlMSwgMHhmNDRhYzExNSwgDQorCTB4YzA0ZjA2NDUsIDB4MDMyMzNmZWMsIDB4ZjY5Y2MwYjIsIDB4YzAyZDA0YjUsIA0KKwkweDAyNWIzZmY0LCAweGY4ZjNjMDY0LCAweGMwMTQwMzIzLCAweDAxOTIzZmZiLCANCisJMHhmYjRiYzAyZCwgMHhjMDA1MDE5MiwgMHgwMGM5M2ZmZSwgMHhmZGE1YzAwYwkNCit9Ow0KKw0KK2NvbnN0IGludCB0d2lkVGFiNjRbKDQqNiArIDE2KjYpLzJdID0gew0KKwkweDQwMDAwMDAwLCAweDQwMDAwMDAwLCAweDQwMDAwMDAwLCAweDJkNDEyZDQxLCANCisJMHgzYjIwMTg3ZCwgMHgxODdkM2IyMCwgMHgwMDAwNDAwMCwgMHgyZDQxMmQ0MSwgDQorCTB4ZDJiZjJkNDEsIDB4ZDJiZjJkNDEsIDB4MTg3ZDNiMjAsIDB4YzRlMGU3ODMsIA0KKw0KKwkweDQwMDAwMDAwLCAweDQwMDAwMDAwLCAweDQwMDAwMDAwLCAweDNlYzUwYzdjLCANCisJMHgzZmIxMDY0NSwgMHgzZDNlMTI5NCwgMHgzYjIwMTg3ZCwgMHgzZWM1MGM3YywgDQorCTB4MzUzNjIzOGUsIDB4MzUzNjIzOGUsIDB4M2QzZTEyOTQsIDB4Mjg5OTMxNzksIA0KKwkweDJkNDEyZDQxLCAweDNiMjAxODdkLCAweDE4N2QzYjIwLCAweDIzOGUzNTM2LCANCisJMHgzODcxMWUyYiwgMHgwNjQ1M2ZiMSwgMHgxODdkM2IyMCwgMHgzNTM2MjM4ZSwgDQorCTB4ZjM4NDNlYzUsIDB4MGM3YzNlYzUsIDB4MzE3OTI4OTksIDB4ZTFkNTM4NzEsIA0KKwkweDAwMDA0MDAwLCAweDJkNDEyZDQxLCAweGQyYmYyZDQxLCAweGYzODQzZWM1LCANCisJMHgyODk5MzE3OSwgMHhjNzhmMWUyYiwgMHhlNzgzM2IyMCwgMHgyMzhlMzUzNiwgDQorCTB4YzEzYjBjN2MsIDB4ZGM3MjM1MzYsIDB4MWUyYjM4NzEsIDB4YzA0ZmY5YmIsIA0KKwkweGQyYmYyZDQxLCAweDE4N2QzYjIwLCAweGM0ZTBlNzgzLCAweGNhY2EyMzhlLCANCisJMHgxMjk0M2QzZSwgMHhjZTg3ZDc2NywgMHhjNGUwMTg3ZCwgMHgwYzdjM2VjNSwgDQorCTB4ZGM3MmNhY2EsIDB4YzEzYjBjN2MsIDB4MDY0NTNmYjEsIDB4ZWQ2Y2MyYzIgDQorfTsNCisNCisjZWxpZiBkZWZpbmVkIEFSTVY3TmVvbg0KKy8qIA0KKyAqICBRMjkgZm9yIDEyOCBhbmQgMTAyNCANCisgKg0KKyAqIGZvciAoaSA9IDA7IGkgPCBudW0vNDsgaSsrKSB7DQorICogICBhbmdsZSA9IChpICsgMC4xMjUpICogTV9QSSAvIG51bTsNCisgKiAgIHggPSBjb3MoYW5nbGUpICogKDEgPDwgMjkpOw0KKyAqICAgeCA9IHNpbihhbmdsZSkgKiAoMSA8PCAyOSk7DQorICogDQorICogICBhbmdsZSA9IChudW0vMiAtIDEgLSBpICsgMC4xMjUpICogTV9QSSAvIG51bTsNCisgKiAgIHggPSBjb3MoYW5nbGUpICogKDEgPDwgMjkpOw0KKyAqICAgeCA9IHNpbihhbmdsZSkgKiAoMSA8PCAyOSk7DQorICogfQ0KKyAqLw0KK2NvbnN0IGludCBjb3NzaW50YWJbMTI4ICsgMTAyNF0gPSB7DQorCS8qIDEyOCAqLw0KKwkweDFmZmZmNjIxLCAweDAwMTkyMWY5LCAweDAwYWZlYTY5LCAweDFmZmUxYzY4LCAweDFmZmNlMDlkLCAweDAwZTIyYTdhLCAweDAxNzhkYmFhLCAweDFmZjc1M2JiLCAKKwkweDFmZjRkYzU1LCAweDAxYWIxMDFjLCAweDAyNDE5MmNmLCAweDFmZWI5ZDI1LCAweDFmZTdlYTg1LCAweDAyNzNiM2UyLCAweDAzMDlmMGUyLCAweDFmZGFmYTc1LCAKKwkweDFmZDYwZDJlLCAweDAzM2JmNmRkLCAweDAzZDFkNzAwLCAweDFmYzU2ZTNiLCAweDFmYmY0NzBmLCAweDA0MDNiYTJiLCAweDA0OTkyNjUzLCAweDFmYWFmYmNiLCAKKwkweDFmYTM5YmFjLCAweDA0Y2FkZWZlLCAweDA1NWZjMDIyLCAweDFmOGJhNzM4LCAweDFmODMwZjRhLCAweDA1OTE0NmExLCAweDA2MjU4NWNhLCAweDFmNjc3NTU3LCAKKwkweDFmNWRhNmVkLCAweDA2NTZkMjdhLCAweDA2ZWE1OGNkLCAweDFmM2U2YmJjLCAweDFmMzM2ODVhLCAweDA3MWI2NDE1LCAweDA3YWUxYWQyLCAweDFmMTA5MGJkLCAKKwkweDFmMDQ1YTE1LCAweDA3ZGVkZDIwLCAweDA4NzBhZGE3LCAweDFlZGRlYjZhLCAweDFlZDA4MzVmLCAweDA4YTExZjc4LCAweDA5MzFmMzRkLCAweDFlYTY4Mzk0LCAKKwkweDFlOTdlYzM2LCAweDA5NjIwZDI3LCAweDA5ZjFjZGY1LCAweDFlNmE2MWM1LCAweDFlNWE5ZDU1LCAweDBhMjE4ODZlLCAweDBhYjAyMDA5LCAweDFlMjk4ZjQ0LCAKKwkweDFlMThhMDMwLCAweDBhZGY3M2M2LCAweDBiNmNjYzMyLCAweDFkZTQxNjBmLCAweDFkZDFmZWY0LCAweDBiOWJiMWU1LCAweDBjMjdiNTU1LCAweDFkOWEwMGRlLCAKKwkweDFkODZjNDg0LCAweDBjNTYyNWMzLCAweDBjZTBiZWEyLCAweDFkNGI1YjFiLCAweDFkMzZmYzdjLCAweDBkMGViMmEyLCAweDBkOTdjYjhmLCAweDFjZjgzMGU5LCAKKwkweDFjZTJiMzI4LCAweDBkYzUzYzBhLCAweDBlNGNiZmUyLCAweDFjYTA4ZjFhLCAweDFjODlmNTg3LCAweDBlNzlhNWQ3LCAweDBlZmY3ZmIzLCAweDFjNDQ4MzMxLCAKKwkweDFjMmNkMTQ5LCAweDBmMmJkNDM3LCAweDBmYWZlZjczLCAweDFiZTQxYjYxLCAweDFiY2I1NGNiLCAweDBmZGJhYmFlLCAweDEwNWRmM2VjLCAweDFiN2Y2Njg3LCAKKwkweDFiNjU4ZjE1LCAweDEwODkxMTIwLCAweDExMDk3MjQ5LCAweDFiMTY3NDJhLCAweDFhZmI4ZmQ5LCAweDExMzNlOWQwLCAweDExYjI1MDE3LCAweDFhYTk1NDdhLCAKKwkweDFhOGQ2NzZlLCAweDExZGMxYjY1LCAweDEyNTg3MzRkLCAweDFhMzgxODRhLCAweDFhMWIyNmQzLCAweDEyODE4YmVmLCAweDEyZmJjMjRiLCAweDE5YzJkMTExLCAKKwkweDE5YTRkZmE0LCAweDEzMjQyMWVjLCAweDEzOWMyM2U0LCAweDE5NDk5MGU0LCAweDE5MmFhNDIwLCAweDEzYzNjNDRhLCAweDE0Mzk3ZjViLCAweDE4Y2M2YTc1LCAKKwkweDE4YWM4NzFmLCAweDE0NjA1YTY5LCAweDE0ZDNiYzZkLCAweDE4NGI3MTEyLCAweDE4MmE5YzE0LCAweDE0ZjljYzI2LCAweDE1NmFjMzUyLCAweDE3YzZiODlkLCAKKwkweDE3YTRmNzA4LCAweDE1OTAwMWQ2LCAweDE1ZmU3Y2JlLCAweDE3M2U1NThlLCAweDE3MWJhYzk2LCAweDE2MjJlNDUwLCAweDE2OGVkMWViLCAweDE2YjI1Y2VkLA0KKwkvKiAxMDI0ICovDQorCTB4MWZmZmZmZDksIDB4MDAwMzI0M2YsIDB4MDAxNWZkYmEsIDB4MWZmZmY4NzIsIDB4MWZmZmYzODIsIDB4MDAxYzQ2MzcsIDB4MDAyZjFmYTYsIDB4MWZmZmRkNGQsIA0KKwkweDFmZmZkMzZmLCAweDAwMzU2ODFkLCAweDAwNDg0MTc1LCAweDFmZmZhZTZjLCAweDFmZmY5ZjllLCAweDAwNGU4OWUzLCAweDAwNjE2MzE4LCAweDFmZmY2YmNlLCANCisJMHgxZmZmNTgxMSwgMHgwMDY3YWI3NywgMHgwMDdhODQ3ZSwgMHgxZmZmMTU3MiwgMHgxZmZlZmNjNiwgMHgwMDgwY2NjYywgMHgwMDkzYTU5OSwgMHgxZmZlYWI1YiwgDQorCTB4MWZmZThkYmYsIDB4MDA5OWVkZDIsIDB4MDBhY2M2NTgsIDB4MWZmZTJkODYsIDB4MWZmZTBhZmMsIDB4MDBiMzBlNzgsIDB4MDBjNWU2YWQsIDB4MWZmZDliZjYsIA0KKwkweDFmZmQ3NDdjLCAweDAwY2MyZWIwLCAweDAwZGYwNjg4LCAweDFmZmNmNmFhLCAweDFmZmNjYTQxLCAweDAwZTU0ZTZhLCAweDAwZjgyNWRhLCAweDFmZmMzZGEyLCANCisJMHgxZmZjMGM0YiwgMHgwMGZlNmQ5NywgMHgwMTExNDQ5MiwgMHgxZmZiNzBlMCwgMHgxZmZiM2E5YSwgMHgwMTE3OGMyNywgMHgwMTJhNjJhMiwgMHgxZmZhOTA2MywgDQorCTB4MWZmYTU1MmUsIDB4MDEzMGFhMGEsIDB4MDE0MzdmZmEsIDB4MWZmOTljMmMsIDB4MWZmOTVjMDksIDB4MDE0OWM3MzEsIDB4MDE1YzljOGEsIDB4MWZmODk0M2MsIA0KKwkweDFmZjg0ZjJiLCAweDAxNjJlMzhkLCAweDAxNzViODQzLCAweDFmZjc3ODkzLCAweDFmZjcyZTk0LCAweDAxN2JmZjBlLCAweDAxOGVkMzE2LCAweDFmZjY0OTMyLCANCisJMHgxZmY1ZmE0NiwgMHgwMTk1MTlhNSwgMHgwMWE3ZWNmMiwgMHgxZmY1MDYxYiwgMHgxZmY0YjI0MCwgMHgwMWFlMzM0MSwgMHgwMWMxMDVjOSwgMHgxZmYzYWY0YywgDQorCTB4MWZmMzU2ODQsIDB4MDFjNzRiZDUsIDB4MDFkYTFkOGMsIDB4MWZmMjQ0YzgsIDB4MWZmMWU3MTMsIDB4MDFlMDYzNGYsIDB4MDFmMzM0MjksIDB4MWZmMGM2OGYsIA0KKwkweDFmZjA2M2VkLCAweDAxZjk3OWExLCAweDAyMGM0OTkzLCAweDFmZWYzNGEzLCAweDFmZWVjZDE0LCAweDAyMTI4ZWJiLCAweDAyMjU1ZGI5LCAweDFmZWQ4ZjAzLCANCisJMHgxZmVkMjI4NywgMHgwMjJiYTI4ZiwgMHgwMjNlNzA4ZCwgMHgxZmViZDViMiwgMHgxZmViNjQ0YSwgMHgwMjQ0YjUwYiwgMHgwMjU3ODFmZSwgMHgxZmVhMDhiMCwgDQorCTB4MWZlOTkyNWMsIDB4MDI1ZGM2MjEsIDB4MDI3MDkxZmQsIDB4MWZlODI3ZmUsIDB4MWZlN2FjYmUsIDB4MDI3NmQ1YzEsIDB4MDI4OWEwN2IsIDB4MWZlNjMzOWQsIA0KKwkweDFmZTViMzcyLCAweDAyOGZlM2RkLCAweDAyYTJhZDY5LCAweDFmZTQyYjkwLCAweDFmZTNhNjc5LCAweDAyYThmMDYzLCAweDAyYmJiOGI2LCAweDFmZTIwZmQ2LCANCisJMHgxZmUxODVkNSwgMHgwMmMxZmI0NiwgMHgwMmQ0YzI1MywgMHgxZmRmZTA3MSwgMHgxZmRmNTE4NiwgMHgwMmRiMDQ3NSwgMHgwMmVkY2EzMiwgMHgxZmRkOWQ2NCwgDQorCTB4MWZkZDA5OGUsIDB4MDJmNDBiZTIsIDB4MDMwNmQwNDIsIDB4MWZkYjQ2YWUsIDB4MWZkYWFkZWUsIDB4MDMwZDExN2MsIDB4MDMxZmQ0NzQsIDB4MWZkOGRjNTEsIA0KKwkweDFmZDgzZWE4LCAweDAzMjYxNTM0LCAweDAzMzhkNmI4LCAweDFmZDY1ZTRmLCAweDFmZDViYmJkLCAweDAzM2YxNmZiLCAweDAzNTFkNzAwLCAweDFmZDNjY2FhLCANCisJMHgxZmQzMjUzMCwgMHgwMzU4MTZjMSwgMHgwMzZhZDUzYywgMHgxZmQxMjc2MywgMHgxZmQwN2IwMCwgMHgwMzcxMTQ3NywgMHgwMzgzZDE1YywgMHgxZmNlNmU3YywgDQorCTB4MWZjZGJkMzEsIDB4MDM4YTEwMGUsIDB4MDM5Y2NiNTEsIDB4MWZjYmExZjUsIDB4MWZjYWViYzMsIDB4MDNhMzA5NzUsIDB4MDNiNWMzMGIsIDB4MWZjOGMxZDIsIA0KKwkweDFmYzgwNmI5LCAweDAzYmMwMDlmLCAweDAzY2ViODdjLCAweDFmYzVjZTE0LCAweDFmYzUwZTE0LCAweDAzZDRmNTdhLCAweDAzZTdhYjkzLCAweDFmYzJjNmJkLCANCisJMHgxZmMyMDFkNywgMHgwM2VkZTdmOSwgMHgwNDAwOWM0MiwgMHgxZmJmYWJjZCwgMHgxZmJlZTIwMiwgMHgwNDA2ZDgwYiwgMHgwNDE5OGE3OCwgMHgxZmJjN2Q0OSwgDQorCTB4MWZiYmFlOTksIDB4MDQxZmM1YTEsIDB4MDQzMjc2MjgsIDB4MWZiOTNiMzEsIDB4MWZiODY3OWMsIDB4MDQzOGIwYWMsIDB4MDQ0YjVmNDAsIDB4MWZiNWU1ODcsIA0KKwkweDFmYjUwZDBlLCAweDA0NTE5OTFkLCAweDA0NjQ0NWIyLCAweDFmYjI3YzRlLCAweDFmYjE5ZWYxLCAweDA0NmE3ZWUzLCAweDA0N2QyOTZmLCAweDFmYWVmZjg3LCANCisJMHgxZmFlMWQ0NywgMHgwNDgzNjFmMCwgMHgwNDk2MGE2NywgMHgxZmFiNmYzNSwgMHgxZmFhODgxMywgMHgwNDljNDIzNSwgMHgwNGFlZTg4YiwgMHgxZmE3Y2I1YSwgDQorCTB4MWZhNmRmNTYsIDB4MDRiNTFmYTEsIDB4MDRjN2MzY2IsIDB4MWZhNDEzZjgsIDB4MWZhMzIzMTMsIDB4MDRjZGZhMjYsIDB4MDRlMDljMTgsIDB4MWZhMDQ5MTIsIA0KKwkweDFmOWY1MzRjLCAweDA0ZTZkMWI0LCAweDA0Zjk3MTYzLCAweDFmOWM2YWE5LCAweDFmOWI3MDAzLCAweDA0ZmZhNjNjLCAweDA1MTI0MzlkLCAweDFmOTg3OGMxLCANCisJMHgxZjk3NzkzYiwgMHgwNTE4NzdhZiwgMHgwNTJiMTJiNiwgMHgxZjk0NzM1YiwgMHgxZjkzNmVmNiwgMHgwNTMxNDVmZCwgMHgwNTQzZGU5ZSwgMHgxZjkwNWE3YSwgDQorCTB4MWY4ZjUxMzcsIDB4MDU0YTExMTcsIDB4MDU1Y2E3NDgsIDB4MWY4YzJlMjEsIDB4MWY4YjIwMDAsIDB4MDU2MmQ4ZWUsIDB4MDU3NTZjYTIsIDB4MWY4N2VlNTIsIA0KKwkweDFmODZkYjU1LCAweDA1N2I5ZDczLCAweDA1OGUyZTlmLCAweDFmODM5YjEwLCAweDFmODI4MzM2LCAweDA1OTQ1ZTk1LCAweDA1YTZlZDJlLCAweDFmN2YzNDVlLCANCisJMHgxZjdlMTdhOCwgMHgwNWFkMWM0NywgMHgwNWJmYTg0MCwgMHgxZjdhYmEzZSwgMHgxZjc5OThhZCwgMHgwNWM1ZDY3OCwgMHgwNWQ4NWZjNywgMHgxZjc2MmNiMiwgDQorCTB4MWY3NTA2NDcsIDB4MDVkZThkMTksIDB4MDVmMTEzYjMsIDB4MWY3MThiYmYsIDB4MWY3MDYwN2EsIDB4MDVmNzQwMWMsIDB4MDYwOWMzZjUsIDB4MWY2Y2Q3NjYsIA0KKwkweDFmNmJhNzQ4LCAweDA2MGZlZjcxLCAweDA2MjI3MDdkLCAweDFmNjgwZmFiLCAweDFmNjZkYWI1LCAweDA2Mjg5YjA4LCAweDA2M2IxOTNjLCAweDFmNjMzNDkwLCANCisJMHgxZjYxZmFjMywgMHgwNjQxNDJkMywgMHgwNjUzYmUyMywgMHgxZjVlNDYxOSwgMHgxZjVkMDc3NSwgMHgwNjU5ZTZjMiwgMHgwNjZjNWYyNCwgMHgxZjU5NDQ0OCwgDQorCTB4MWY1ODAwY2UsIDB4MDY3Mjg2YzYsIDB4MDY4NGZjMmUsIDB4MWY1NDJmMjEsIDB4MWY1MmU2ZDIsIDB4MDY4YjIyZDAsIDB4MDY5ZDk1MzIsIDB4MWY0ZjA2YTYsIA0KKwkweDFmNGRiOTgzLCAweDA2YTNiYWQwLCAweDA2YjYyYTIyLCAweDFmNDljYWRjLCAweDFmNDg3OGU1LCAweDA2YmM0ZWI5LCAweDA2Y2ViYWVlLCAweDFmNDQ3YmM0LCANCisJMHgxZjQzMjRmYiwgMHgwNmQ0ZGU3OSwgMHgwNmU3NDc4NiwgMHgxZjNmMTk2MywgMHgxZjNkYmRjOCwgMHgwNmVkNmEwMywgMHgwNmZmY2ZkZCwgMHgxZjM5YTNiYywgDQorCTB4MWYzODQzNTAsIDB4MDcwNWYxNDcsIDB4MDcxODUzZTMsIDB4MWYzNDFhZDIsIDB4MWYzMmI1OTUsIDB4MDcxZTc0MzYsIDB4MDczMGQzODgsIDB4MWYyZTdlYTksIA0KKwkweDFmMmQxNDlkLCAweDA3MzZmMmMwLCAweDA3NDk0ZWJkLCAweDFmMjhjZjQzLCAweDFmMjc2MDY5LCAweDA3NGY2Y2Q3LCAweDA3NjFjNTc0LCAweDFmMjMwY2E1LCANCisJMHgxZjIxOThmZCwgMHgwNzY3ZTI2YywgMHgwNzdhMzc5ZCwgMHgxZjFkMzZkMiwgMHgxZjFiYmU1ZCwgMHgwNzgwNTM3MCwgMHgwNzkyYTUyYSwgMHgxZjE3NGRjZSwgDQorCTB4MWYxNWQwOGQsIDB4MDc5OGJmZDMsIDB4MDdhYjBlMGEsIDB4MWYxMTUxOWMsIDB4MWYwZmNmOTEsIDB4MDdiMTI3ODYsIDB4MDdjMzcyMzAsIDB4MWYwYjQyNDAsIA0KKwkweDFmMDliYjZiLCAweDA3Yzk4YTdhLCAweDA3ZGJkMThjLCAweDFmMDUxZmJlLCAweDFmMDM5NDFmLCAweDA3ZTFlOGExLCAweDA3ZjQyYzBlLCAweDFlZmVlYTE5LCANCisJMHgxZWZkNTliMywgMHgwN2ZhNDFlYiwgMHgwODBjODFhOSwgMHgxZWY4YTE1NSwgMHgxZWY3MGMyOCwgMHgwODEyOTY0YSwgMHgwODI0ZDI0ZCwgMHgxZWYyNDU3NywgDQorCTB4MWVmMGFiODQsIDB4MDgyYWU1YWQsIDB4MDgzZDFkZWEsIDB4MWVlYmQ2ODIsIDB4MWVlYTM3Y2EsIDB4MDg0MzMwMDcsIDB4MDg1NTY0NzMsIDB4MWVlNTU0N2EsIA0KKwkweDFlZTNiMGZlLCAweDA4NWI3NTQ4LCAweDA4NmRhNWQ4LCAweDFlZGViZjY0LCAweDFlZGQxNzI0LCAweDA4NzNiNTYyLCAweDA4ODVlMjA5LCAweDFlZDgxNzQyLCANCisJMHgxZWQ2NmE0MSwgMHgwODhiZjA0NCwgMHgwODllMThmOSwgMHgxZWQxNWMxYSwgMHgxZWNmYWE1NywgMHgwOGE0MjVlMSwgMHgwOGI2NGE5OCwgMHgxZWNhOGRlZiwgDQorCTB4MWVjOGQ3NmMsIDB4MDhiYzU2MmEsIDB4MDhjZTc2ZDgsIDB4MWVjM2FjYzYsIDB4MWVjMWYxODQsIDB4MDhkNDgxMGYsIDB4MDhlNjlkYTgsIDB4MWViY2I4YTMsIA0KKwkweDFlYmFmOGEzLCAweDA4ZWNhNjgxLCAweDA4ZmViZWZiLCAweDFlYjViMThhLCAweDFlYjNlY2NkLCAweDA5MDRjNjczLCAweDA5MTZkYWMyLCAweDFlYWU5NzdmLCANCisJMHgxZWFjY2UwNywgMHgwOTFjZTBkNCwgMHgwOTJlZjBlZCwgMHgxZWE3NmE4NywgMHgxZWE1OWM1NSwgMHgwOTM0ZjU5NiwgMHgwOTQ3MDE2ZSwgMHgxZWEwMmFhNywgDQorCTB4MWU5ZTU3YmIsIDB4MDk0ZDA0YWEsIDB4MDk1ZjBjMzYsIDB4MWU5OGQ3ZTIsIDB4MWU5NzAwM2UsIDB4MDk2NTBlMDEsIDB4MDk3NzExMzYsIDB4MWU5MTcyM2UsIA0KKwkweDFlOGY5NWUzLCAweDA5N2QxMThkLCAweDA5OGYxMDYwLCAweDFlODlmOWJmLCAweDFlODgxOGFkLCAweDA5OTUwZjNmLCAweDA5YTcwOWE0LCAweDFlODI2ZTY5LCANCisJMHgxZTgwODhhMiwgMHgwOWFkMDcwNywgMHgwOWJlZmNmNCwgMHgxZTdhZDA0MSwgMHgxZTc4ZTVjNywgMHgwOWM0ZjhkOCwgMHgwOWQ2ZWE0MCwgMHgxZTczMWY0YywgDQorCTB4MWU3MTMwMWYsIDB4MDlkY2U0YTEsIDB4MDllZWQxN2IsIDB4MWU2YjViOGYsIDB4MWU2OTY3YjEsIDB4MDlmNGNhNTYsIDB4MGEwNmIyOTYsIDB4MWU2Mzg1MGUsIA0KKwkweDFlNjE4YzgwLCAweDBhMGNhOWU2LCAweDBhMWU4ZDgxLCAweDFlNWI5YmNlLCAweDFlNTk5ZTkxLCAweDBhMjQ4MzQzLCAweDBhMzY2MjJlLCAweDFlNTM5ZmQ0LCANCisJMHgxZTUxOWRlYSwgMHgwYTNjNTY1ZSwgMHgwYTRlMzA4ZiwgMHgxZTRiOTEyNiwgMHgxZTQ5OGE4ZSwgMHgwYTU0MjMyOSwgMHgwYTY1Zjg5NCwgMHgxZTQzNmZjNywgDQorCTB4MWU0MTY0ODUsIDB4MGE2YmU5OTUsIDB4MGE3ZGJhMmYsIDB4MWUzYjNiYmQsIDB4MWUzOTJiZDEsIDB4MGE4M2E5OTMsIDB4MGE5NTc1NTEsIDB4MWUzMmY1MGUsIA0KKwkweDFlMzBlMDc5LCAweDBhOWI2MzE1LCAweDBhYWQyOWVjLCAweDFlMmE5YmJkLCAweDFlMjg4MjgxLCAweDBhYjMxNjBjLCAweDBhYzRkN2YxLCAweDFlMjIyZmQxLCANCisJMHgxZTIwMTFlZSwgMHgwYWNhYzI2YSwgMHgwYWRjN2Y1MiwgMHgxZTE5YjE0ZiwgMHgxZTE3OGVjNywgMHgwYWUyNjgxZiwgMHgwYWY0MWZmZiwgMHgxZTExMjAzYiwgDQorCTB4MWUwZWY5MTAsIDB4MGFmYTA3MWQsIDB4MGIwYmI5ZWIsIDB4MWUwODdjOWIsIDB4MWUwNjUwY2UsIDB4MGIxMTlmNTYsIDB4MGIyMzRkMDcsIDB4MWRmZmM2NzQsIA0KKwkweDFkZmQ5NjA2LCAweDBiMjkzMGJiLCAweDBiM2FkOTQzLCAweDFkZjZmZGNjLCAweDFkZjRjOGJmLCAweDBiNDBiYjNlLCAweDBiNTI1ZTkyLCAweDFkZWUyMmE5LCANCisJMHgxZGViZThmZCwgMHgwYjU4M2VjZiwgMHgwYjY5ZGNlNiwgMHgxZGU1MzUwZiwgMHgxZGUyZjZjNiwgMHgwYjZmYmI2MiwgMHgwYjgxNTQyZiwgMHgxZGRjMzUwNCwgDQorCTB4MWRkOWYyMjAsIDB4MGI4NzMwZTYsIDB4MGI5OGM0NWYsIDB4MWRkMzIyOGUsIDB4MWRkMGRiMTAsIDB4MGI5ZTlmNGQsIDB4MGJiMDJkNjgsIDB4MWRjOWZkYjIsIA0KKwkweDFkYzdiMTliLCAweDBiYjYwNjhhLCAweDBiYzc4ZjNiLCAweDFkYzBjNjc2LCAweDFkYmU3NWM4LCAweDBiY2Q2NjhlLCAweDBiZGVlOWNhLCAweDFkYjc3Y2RmLCANCisJMHgxZGI1Mjc5YywgMHgwYmU0YmY0YSwgMHgwYmY2M2QwNywgMHgxZGFlMjBmNCwgMHgxZGFiYzcxZCwgMHgwYmZjMTBhZiwgMHgwYzBkODhlMiwgMHgxZGE0YjJiYSwgDQorCTB4MWRhMjU0NTAsIDB4MGMxMzVhYjAsIDB4MGMyNGNkNGUsIDB4MWQ5YjMyMzcsIDB4MWQ5OGNmM2IsIDB4MGMyYTlkM2UsIDB4MGMzYzBhM2QsIDB4MWQ5MTlmNzAsIA0KKwkweDFkOGYzN2U1LCAweDBjNDFkODRiLCAweDBjNTMzZmEwLCAweDFkODdmYTZkLCAweDFkODU4ZTUzLCAweDBjNTkwYmM5LCAweDBjNmE2ZDY4LCAweDFkN2U0MzMyLCANCisJMHgxZDdiZDI4YiwgMHgwYzcwMzdhOCwgMHgwYzgxOTM4OCwgMHgxZDc0NzljNSwgMHgxZDcyMDQ5MywgMHgwYzg3NWJkYiwgMHgwYzk4YjFmMCwgMHgxZDZhOWUyZSwgDQorCTB4MWQ2ODI0NzIsIDB4MGM5ZTc4NTQsIDB4MGNhZmM4OTQsIDB4MWQ2MGIwNzAsIDB4MWQ1ZTMyMmMsIDB4MGNiNThkMDQsIDB4MGNjNmQ3NjQsIDB4MWQ1NmIwOTQsIA0KKwkweDFkNTQyZGM5LCAweDBjY2M5OWRlLCAweDBjZGRkZTUzLCAweDFkNGM5ZTlmLCAweDFkNGExNzRmLCAweDBjZTM5ZWQyLCAweDBjZjRkZDUyLCAweDFkNDI3YTk3LCANCisJMHgxZDNmZWVjMywgMHgwY2ZhOWJkMiwgMHgwZDBiZDQ1MiwgMHgxZDM4NDQ4MywgMHgxZDM1YjQyZCwgMHgwZDExOTBkMSwgMHgwZDIyYzM0NywgMHgxZDJkZmM2OCwgDQorCTB4MWQyYjY3OTEsIDB4MGQyODdkYzEsIDB4MGQzOWFhMjEsIDB4MWQyM2EyNGUsIDB4MWQyMTA4ZjgsIDB4MGQzZjYyOTIsIDB4MGQ1MDg4ZDMsIDB4MWQxOTM2M2EsIA0KKwkweDFkMTY5ODY3LCAweDBkNTYzZjM4LCAweDBkNjc1ZjRlLCAweDFkMGViODMzLCAweDFkMGMxNWU0LCAweDBkNmQxM2EzLCAweDBkN2UyZDg1LCAweDFkMDQyODNmLCANCisJMHgxZDAxODE3NiwgMHgwZDgzZGZjNiwgMHgwZDk0ZjM2OSwgMHgxY2Y5ODY2NiwgMHgxY2Y2ZGIyNCwgMHgwZDlhYTM5MywgMHgwZGFiYjBlYywgMHgxY2VlZDJhZCwgDQorCTB4MWNlYzIyZjQsIDB4MGRiMTVlZmMsIDB4MGRjMjY2MDAsIDB4MWNlNDBkMWIsIDB4MWNlMTU4ZWQsIDB4MGRjODExZjMsIDB4MGRkOTEyOTgsIDB4MWNkOTM1YjcsIA0KKwkweDFjZDY3ZDE1LCAweDBkZGViYzY5LCAweDBkZWZiNmE1LCAweDFjY2U0Yzg3LCAweDFjY2I4Zjc0LCAweDBkZjU1ZTUxLCAweDBlMDY1MjE5LCAweDFjYzM1MTkyLCANCisJMHgxY2MwOTAwZiwgMHgwZTBiZjc5YywgMHgwZTFjZTRlNiwgMHgxY2I4NDRkZiwgMHgxY2I1N2VlZSwgMHgwZTIyODgzZSwgMHgwZTMzNmVmZiwgMHgxY2FkMjY3NSwgDQorCTB4MWNhYTVjMTcsIDB4MGUzOTEwMjcsIDB4MGU0OWYwNTUsIDB4MWNhMWY2NWIsIDB4MWM5ZjI3OTIsIDB4MGU0ZjhmNGIsIDB4MGU2MDY4ZGIsIDB4MWM5NmI0OTcsIA0KKwkweDFjOTNlMTY1LCAweDBlNjYwNTlhLCAweDBlNzZkODgzLCAweDFjOGI2MTMxLCAweDFjODg4OTk3LCAweDBlN2M3MzA4LCAweDBlOGQzZjNlLCAweDFjN2ZmYzJmLCANCisJMHgxYzdkMjAyZiwgMHgwZTkyZDc4NywgMHgwZWEzOWQwMCwgMHgxYzc0ODU5OSwgMHgxYzcxYTUzNSwgMHgwZWE5MzMwOCwgMHgwZWI5ZjFiYSwgMHgxYzY4ZmQ3NSwgDQorCTB4MWM2NjE4YWUsIDB4MGViZjg1N2QsIDB4MGVkMDNkNWUsIDB4MWM1ZDYzY2EsIDB4MWM1YTdhYTQsIDB4MGVkNWNlZGEsIDB4MGVlNjdmZGYsIDB4MWM1MWI4YTEsIA0KKwkweDFjNGVjYjFjLCAweDBlZWMwZjEwLCAweDBlZmNiOTJmLCAweDFjNDVmYzAwLCAweDFjNDMwYTFkLCAweDBmMDI0NjEyLCAweDBmMTJlOTQxLCAweDFjM2EyZGVkLCANCisJMHgxYzM3MzdiMCwgMHgwZjE4NzNkMiwgMHgwZjI5MTAwNiwgMHgxYzJlNGU3MiwgMHgxYzJiNTNkYiwgMHgwZjJlOTg0MiwgMHgwZjNmMmQ3MSwgMHgxYzIyNWQ5NCwgDQorCTB4MWMxZjVlYTYsIDB4MGY0NGIzNTQsIDB4MGY1NTQxNzUsIDB4MWMxNjViNWIsIDB4MWMxMzU4MTgsIDB4MGY1YWM0ZmMsIDB4MGY2YjRjMDMsIDB4MWMwYTQ3Y2YsIA0KKwkweDFjMDc0MDM4LCAweDBmNzBjZDJhLCAweDBmODE0ZDBlLCAweDFiZmUyMmY4LCAweDFiZmIxNzBmLCAweDBmODZjYmQzLCAweDBmOTc0NDg5LCAweDFiZjFlY2RiLCANCisJMHgxYmVlZGNhMiwgMHgwZjljYzBlNywgMHgwZmFkMzI2NSwgMHgxYmU1YTU4MiwgMHgxYmUyOTBmYiwgMHgwZmIyYWM1YSwgMHgwZmMzMTY5NywgMHgxYmQ5NGNmNCwgDQorCTB4MWJkNjM0MjEsIDB4MGZjODhlMWUsIDB4MGZkOGYxMGYsIDB4MWJjY2UzMzcsIDB4MWJjOWM2MWEsIDB4MGZkZTY2MjYsIDB4MGZlZWMxYzAsIDB4MWJjMDY4NTUsIA0KKwkweDFiYmQ0NmYwLCAweDBmZjQzNDY0LCAweDEwMDQ4ODllLCAweDFiYjNkYzU1LCAweDFiYjBiNmE5LCAweDEwMDlmOGNiLCAweDEwMWE0NTlhLCAweDFiYTczZjNkLCANCisJMHgxYmE0MTU0ZCwgMHgxMDFmYjM0ZCwgMHgxMDJmZjhhOCwgMHgxYjlhOTExNywgMHgxYjk3NjJlNCwgMHgxMDM1NjNkYywgMHgxMDQ1YTFiOSwgMHgxYjhkZDFlYSwgDQorCTB4MWI4YTlmNzcsIDB4MTA0YjBhNmMsIDB4MTA1YjQwYzEsIDB4MWI4MTAxYmUsIDB4MWI3ZGNiMGMsIDB4MTA2MGE2ZWYsIDB4MTA3MGQ1YjEsIDB4MWI3NDIwOWIsIA0KKwkweDFiNzBlNWFjLCAweDEwNzYzOTU4LCAweDEwODY2MDdlLCAweDFiNjcyZTg4LCAweDFiNjNlZjVmLCAweDEwOGJjMTlhLCAweDEwOWJlMTE5LCAweDFiNWEyYjhlLCANCisJMHgxYjU2ZTgyYywgMHgxMGExM2ZhNiwgMHgxMGIxNTc3NSwgMHgxYjRkMTdiNCwgMHgxYjQ5ZDAxYywgMHgxMGI2YjM3MSwgMHgxMGM2YzM4NSwgMHgxYjNmZjMwNCwgDQorCTB4MWIzY2E3MzcsIDB4MTBjYzFjZWMsIDB4MTBkYzI1M2MsIDB4MWIzMmJkODQsIDB4MWIyZjZkODUsIDB4MTBlMTdjMGIsIDB4MTBmMTdjOGQsIDB4MWIyNTc3M2QsIA0KKwkweDFiMjIyMzBlLCAweDEwZjZkMGMwLCAweDExMDZjOTZhLCAweDFiMTgyMDM4LCAweDFiMTRjN2RhLCAweDExMGMxYWZlLCAweDExMWMwYmM2LCAweDFiMGFiODdjLCANCisJMHgxYjA3NWJmMSwgMHgxMTIxNWFiOCwgMHgxMTMxNDM5NSwgMHgxYWZkNDAxMiwgMHgxYWY5ZGY1ZCwgMHgxMTM2OGZlMSwgMHgxMTQ2NzBjOCwgMHgxYWVmYjcwMiwgDQorCTB4MWFlYzUyMjUsIDB4MTE0YmJhNmIsIDB4MTE1YjkzNTQsIDB4MWFlMjFkNTQsIDB4MWFkZWI0NTEsIDB4MTE2MGRhNGIsIDB4MTE3MGFiMmEsIDB4MWFkNDczMTEsIA0KKwkweDFhZDEwNWU5LCAweDExNzVlZjcyLCAweDExODViODNmLCAweDFhYzZiODQxLCAweDFhYzM0NmY4LCAweDExOGFmOWQ0LCAweDExOWFiYTg0LCAweDFhYjhlY2VjLCANCisJMHgxYWI1Nzc4NCwgMHgxMTlmZjk2NCwgMHgxMWFmYjFlZSwgMHgxYWFiMTExYywgMHgxYWE3OTc5NiwgMHgxMWI0ZWUxNCwgMHgxMWM0OWU2ZiwgMHgxYTlkMjRkOSwgDQorCTB4MWE5OWE3MzcsIDB4MTFjOWQ3ZDksIDB4MTFkOTdmZjksIDB4MWE4ZjI4MmIsIDB4MWE4YmE2NzAsIDB4MTFkZWI2YTQsIDB4MTFlZTU2ODIsIDB4MWE4MTFiMWIsIA0KKwkweDFhN2Q5NTQ5LCAweDExZjM4YTZhLCAweDEyMDMyMWZhLCAweDFhNzJmZGIyLCAweDFhNmY3M2NhLCAweDEyMDg1MzFjLCAweDEyMTdlMjU2LCAweDFhNjRjZmY4LCANCisJMHgxYTYxNDFmZCwgMHgxMjFkMTBhZiwgMHgxMjJjOTc4OSwgMHgxYTU2OTFmNSwgMHgxYTUyZmZlYiwgMHgxMjMxYzMxNiwgMHgxMjQxNDE4NiwgMHgxYTQ4NDNiNCwgDQorCTB4MWE0NGFkOWIsIDB4MTI0NjZhNDQsIDB4MTI1NWUwNDEsIDB4MWEzOWU1M2QsIDB4MWEzNjRiMTcsIDB4MTI1YjA2MmIsIDB4MTI2YTczYWMsIDB4MWEyYjc2OTgsIA0KKwkweDFhMjdkODY4LCAweDEyNmY5NmMxLCAweDEyN2VmYmJiLCAweDFhMWNmN2NlLCAweDFhMTk1NTk3LCAweDEyODQxYmY2LCAweDEyOTM3ODYxLCAweDFhMGU2OGU5LCANCisJMHgxYTBhYzJhYywgMHgxMjk4OTVjMCwgMHgxMmE3ZTk5MSwgMHgxOWZmYzlmMSwgMHgxOWZjMWZiMSwgMHgxMmFkMDQxMiwgMHgxMmJjNGY0MCwgMHgxOWYxMWFmMCwgDQorCTB4MTllZDZjYWYsIDB4MTJjMTY2ZGUsIDB4MTJkMGE5NjAsIDB4MTllMjViZWUsIDB4MTlkZWE5YWUsIDB4MTJkNWJlMTgsIDB4MTJlNGY3ZTUsIDB4MTlkMzhjZjQsIA0KKwkweDE5Y2ZkNmI4LCAweDEyZWEwOWI0LCAweDEyZjkzYWMyLCAweDE5YzRhZTBjLCAweDE5YzBmM2Q2LCAweDEyZmU0OWE2LCAweDEzMGQ3MWViLCAweDE5YjViZjNmLCANCisJMHgxOWIyMDExMSwgMHgxMzEyN2RlMCwgMHgxMzIxOWQ1MywgMHgxOWE2YzA5NiwgMHgxOWEyZmU3MywgMHgxMzI2YTY1NiwgMHgxMzM1YmNlZiwgMHgxOTk3YjIxYiwgDQorCTB4MTk5M2VjMDQsIDB4MTMzYWMyZmMsIDB4MTM0OWQwYjAsIDB4MTk4ODkzZDYsIDB4MTk4NGM5Y2UsIDB4MTM0ZWQzYzUsIDB4MTM1ZGQ4OGMsIDB4MTk3OTY1ZDAsIA0KKwkweDE5NzU5N2RhLCAweDEzNjJkOGE2LCAweDEzNzFkNDc2LCAweDE5NmEyODE1LCAweDE5NjY1NjMyLCAweDEzNzZkMTkxLCAweDEzODVjNDYxLCAweDE5NWFkYWFiLCANCisJMHgxOTU3MDRkZiwgMHgxMzhhYmU3YiwgMHgxMzk5YTg0MSwgMHgxOTRiN2Q5ZSwgMHgxOTQ3YTNlYiwgMHgxMzllOWY1NiwgMHgxM2FkODAwYSwgMHgxOTNjMTBmNywgDQorCTB4MTkzODMzNWUsIDB4MTNiMjc0MTcsIDB4MTNjMTRiYjAsIDB4MTkyYzk0YmYsIDB4MTkyOGIzNDMsIDB4MTNjNjNjYjIsIDB4MTNkNTBiMjYsIDB4MTkxZDA4ZmYsIA0KKwkweDE5MTkyM2EzLCAweDEzZDlmOTFiLCAweDEzZThiZTYwLCAweDE5MGQ2ZGMxLCAweDE5MDk4NDg4LCAweDEzZWRhOTQ0LCAweDEzZmM2NTUzLCAweDE4ZmRjMzEwLCANCisJMHgxOGY5ZDVmYSwgMHgxNDAxNGQyMywgMHgxNDBmZmZmMSwgMHgxOGVlMDhmNCwgMHgxOGVhMTgwNSwgMHgxNDE0ZTRhYSwgMHgxNDIzOGUyZiwgMHgxOGRlM2Y3NywgDQorCTB4MThkYTRhYjIsIDB4MTQyODZmY2UsIDB4MTQzNzEwMDEsIDB4MThjZTY2YTMsIDB4MThjYTZlMGEsIDB4MTQzYmVlODMsIDB4MTQ0YTg1NWIsIDB4MThiZTdlODIsIA0KKwkweDE4YmE4MjE3LCAweDE0NGY2MGJkLCAweDE0NWRlZTMwLCAweDE4YWU4NzFlLCAweDE4YWE4NmUzLCAweDE0NjJjNjcwLCAweDE0NzE0YTc2LCAweDE4OWU4MDgwLCANCisJMHgxODlhN2M3OCwgMHgxNDc2MWY4ZiwgMHgxNDg0OWExZiwgMHgxODhlNmFiMiwgMHgxODhhNjJlMCwgMHgxNDg5NmMwZiwgMHgxNDk3ZGQyMCwgMHgxODdlNDViZSwgDQorCTB4MTg3YTNhMjUsIDB4MTQ5Y2FiZTQsIDB4MTRhYjEzNmQsIDB4MTg2ZTExYWYsIDB4MTg2YTAyNTAsIDB4MTRhZmRmMDMsIDB4MTRiZTNjZmEsIDB4MTg1ZGNlOGUsIA0KKwkweDE4NTliYjZjLCAweDE0YzMwNTVlLCAweDE0ZDE1OWJjLCAweDE4NGQ3YzY1LCAweDE4NDk2NTgzLCAweDE0ZDYxZWViLCAweDE0ZTQ2OWE2LCAweDE4M2QxYjNlLCANCisJMHgxODM5MDA5ZSwgMHgxNGU5MmI5ZSwgMHgxNGY3NmNhZCwgMHgxODJjYWIyNCwgMHgxODI4OGNjOCwgMHgxNGZjMmI2YSwgMHgxNTBhNjJjNiwgMHgxODFjMmMyMCwgDQorCTB4MTgxODBhMGMsIDB4MTUwZjFlNDUsIDB4MTUxZDRiZTMsIDB4MTgwYjllM2QsIDB4MTgwNzc4NzMsIDB4MTUyMjA0MjIsIDB4MTUzMDI3ZmIsIDB4MTdmYjAxODUsIA0KKwkweDE3ZjZkODA3LCAweDE1MzRkY2Y2LCAweDE1NDJmNzAwLCAweDE3ZWE1NjAyLCAweDE3ZTYyOGQzLCAweDE1NDdhOGI1LCAweDE1NTViOGU4LCAweDE3ZDk5YmJlLCANCisJMHgxN2Q1NmFlMCwgMHgxNTVhNjc1NCwgMHgxNTY4NmRhNywgMHgxN2M4ZDJjNCwgMHgxN2M0OWUzYiwgMHgxNTZkMThjNywgMHgxNTdiMTUzMiwgMHgxN2I3ZmIxZiwgDQorCTB4MTdiM2MyZWMsIDB4MTU3ZmJkMDMsIDB4MTU4ZGFmN2MsIDB4MTdhNzE0ZDcsIDB4MTdhMmQ4ZmUsIDB4MTU5MjUzZmIsIDB4MTVhMDNjN2EsIDB4MTc5NjFmZjksIA0KKwkweDE3OTFlMDdiLCAweDE1YTRkZGE1LCAweDE1YjJiYzIyLCAweDE3ODUxYzhlLCAweDE3ODBkOTZmLCAweDE1Yjc1OWY1LCAweDE1YzUyZTY3LCAweDE3NzQwYWExLCANCisJMHgxNzZmYzNlMywgMHgxNWM5YzhlMCwgMHgxNWQ3OTMzZiwgMHgxNzYyZWEzZCwgMHgxNzVlOWZlMiwgMHgxNWRjMmE1YSwgMHgxNWU5ZWE5ZCwgMHgxNzUxYmI2YiwgDQorCTB4MTc0ZDZkNzcsIDB4MTVlZTdlNTgsIDB4MTVmYzM0NzcsIDB4MTc0MDdlMzcsIDB4MTczYzJjYWMsIDB4MTYwMGM0Y2YsIDB4MTYwZTcwYzEsIDB4MTcyZjMyYWIsIA0KKwkweDE3MmFkZDhjLCAweDE2MTJmZGIzLCAweDE2MjA5ZjcwLCAweDE3MWRkOGQyLCAweDE3MTk4MDIxLCAweDE2MjUyOGZhLCAweDE2MzJjMDc4LCAweDE3MGM3MGI3LCANCisJMHgxNzA4MTQ3NywgMHgxNjM3NDY5NywgMHgxNjQ0ZDNkMCwgMHgxNmZhZmE2NCwgMHgxNmY2OWE5NywgMHgxNjQ5NTY4MCwgMHgxNjU2ZDk2YSwgMHgxNmU5NzVlNCwgDQorCTB4MTZlNTEyOGUsIDB4MTY1YjU4YWEsIDB4MTY2OGQxM2UsIDB4MTZkN2UzNDEsIDB4MTZkMzdjNjUsIDB4MTY2ZDRkMGEsIDB4MTY3YWJiM2UsIDB4MTZjNjQyODgsIA0KKwkweDE2YzFkODI3LCAweDE2N2YzMzk0LCAweDE2OGM5NzYwLCAweDE2YjQ5M2MyLCAweDE2YjAyNWUwLCAweDE2OTEwYzNkLCAweDE2OWU2NTlhLCAweDE2YTJkNmZiDQorfTsNCisNCitjb25zdCBpbnQgdHdpZFRhYjUxMls4KjYgKyAzMio2ICsgMTI4KjZdID0gew0KKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFkOTA2YmNmLCAweDBjM2VmMTUzLCAweDE2YTA5ZTY2LCAweDE2YTA5ZTY2LCAweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFmNjI5N2QwLCAweDA2M2UyZTBmLCAweDFkOTA2YmNmLCAweDBjM2VmMTUzLCAweDFhOWI2NjI5LCAweDExYzczYjNhLCAKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFhOWI2NjI5LCAweDExYzczYjNhLCAweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweGY5YzFkMWYxLCAweDFmNjI5N2QwLCAKKwkweDAwMDAwMDAwLCAweDIwMDAwMDAwLCAweGYzYzEwZWFkLCAweDFkOTA2YmNmLCAweGU5NWY2MTlhLCAweDE2YTA5ZTY2LCAweGUyNmY5NDMxLCAweDBjM2VmMTUzLCAKKwkweDE2YTA5ZTY2LCAweDE2YTA5ZTY2LCAweDExYzczYjNhLCAweDFhOWI2NjI5LCAweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweDA2M2UyZTBmLCAweDFmNjI5N2QwLCAKKwkweGU5NWY2MTlhLCAweDE2YTA5ZTY2LCAweGUwOWQ2ODMwLCAweDA2M2UyZTBmLCAweGUyNmY5NDMxLCAweGYzYzEwZWFkLCAweGVlMzhjNGM2LCAweGU1NjQ5OWQ3LCAKKworCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWZkODhkYTQsIDB4MDMyMmY0ZDgsIDB4MWY2Mjk3ZDAsIDB4MDYzZTJlMGYsIDB4MWU5ZjQxNTcsIDB4MDk0YTAzMTcsIAorCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWZmNjIxZTMsIDB4MDE5MWY2NWYsIDB4MWZkODhkYTQsIDB4MDMyMmY0ZDgsIDB4MWZhNzU1N2YsIDB4MDRiMjA0MWMsIAorCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWZhNzU1N2YsIDB4MDRiMjA0MWMsIDB4MWU5ZjQxNTcsIDB4MDk0YTAzMTcsIDB4MWNlZDdhZjQsIDB4MGRhZTg4MDUsIAorCTB4MWQ5MDZiY2YsIDB4MGMzZWYxNTMsIDB4MWMzOGIyZjIsIDB4MGYxNWFlOWMsIDB4MWE5YjY2MjksIDB4MTFjNzNiM2EsIDB4MThiYzgwNmIsIDB4MTQ0Y2YzMjUsIAorCTB4MWY2Mjk3ZDAsIDB4MDYzZTJlMGYsIDB4MWYwYTdlZmMsIDB4MDdjNjdlNWYsIDB4MWU5ZjQxNTcsIDB4MDk0YTAzMTcsIDB4MWUyMTIxMDUsIDB4MGFjN2NkM2IsIAorCTB4MWE5YjY2MjksIDB4MTFjNzNiM2EsIDB4MTdiNWRmMjIsIDB4MTU3ZDY5MzUsIDB4MTQ0Y2YzMjUsIDB4MThiYzgwNmIsIDB4MTA3Mzg3OTksIDB4MWI3MjgzNDUsIAorCTB4MTZhMDllNjYsIDB4MTZhMDllNjYsIDB4MTQ0Y2YzMjUsIDB4MThiYzgwNmIsIDB4MTFjNzNiM2EsIDB4MWE5YjY2MjksIDB4MGYxNWFlOWMsIDB4MWMzOGIyZjIsIAorCTB4MWQ5MDZiY2YsIDB4MGMzZWYxNTMsIDB4MWNlZDdhZjQsIDB4MGRhZTg4MDUsIDB4MWMzOGIyZjIsIDB4MGYxNWFlOWMsIDB4MWI3MjgzNDUsIDB4MTA3Mzg3OTksIAorCTB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIDB4MDdjNjdlNWYsIDB4MWYwYTdlZmMsIDB4MDMyMmY0ZDgsIDB4MWZkODhkYTQsIDB4ZmU2ZTA5YTEsIDB4MWZmNjIxZTMsIAorCTB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIDB4MDk0YTAzMTcsIDB4MWU5ZjQxNTcsIDB4MDYzZTJlMGYsIDB4MWY2Mjk3ZDAsIDB4MDMyMmY0ZDgsIDB4MWZkODhkYTQsIAorCTB4MWE5YjY2MjksIDB4MTFjNzNiM2EsIDB4MTliM2UwNDgsIDB4MTMwZmY3ZmQsIDB4MThiYzgwNmIsIDB4MTQ0Y2YzMjUsIDB4MTdiNWRmMjIsIDB4MTU3ZDY5MzUsIAorCTB4ZjljMWQxZjEsIDB4MWY2Mjk3ZDAsIDB4ZjUzODMyYzUsIDB4MWUyMTIxMDUsIDB4ZjBlYTUxNjQsIDB4MWMzOGIyZjIsIDB4ZWNmMDA4MDMsIDB4MTliM2UwNDgsIAorCTB4MDAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4ZmNkZDBiMjgsIDB4MWZkODhkYTQsIDB4ZjljMWQxZjEsIDB4MWY2Mjk3ZDAsIDB4ZjZiNWZjZTksIDB4MWU5ZjQxNTcsIAorCTB4MTZhMDllNjYsIDB4MTZhMDllNjYsIDB4MTU3ZDY5MzUsIDB4MTdiNWRmMjIsIDB4MTQ0Y2YzMjUsIDB4MThiYzgwNmIsIDB4MTMwZmY3ZmQsIDB4MTliM2UwNDgsIAorCTB4ZTk1ZjYxOWEsIDB4MTZhMDllNjYsIDB4ZTY0YzFmYjgsIDB4MTMwZmY3ZmQsIDB4ZTNjNzRkMGUsIDB4MGYxNWFlOWMsIDB4ZTFkZWRlZmIsIDB4MGFjN2NkM2IsIAorCTB4ZjNjMTBlYWQsIDB4MWQ5MDZiY2YsIDB4ZjBlYTUxNjQsIDB4MWMzOGIyZjIsIDB4ZWUzOGM0YzYsIDB4MWE5YjY2MjksIDB4ZWJiMzBjZGIsIDB4MThiYzgwNmIsIAorCTB4MTFjNzNiM2EsIDB4MWE5YjY2MjksIDB4MTA3Mzg3OTksIDB4MWI3MjgzNDUsIDB4MGYxNWFlOWMsIDB4MWMzOGIyZjIsIDB4MGRhZTg4MDUsIDB4MWNlZDdhZjQsIAorCTB4ZTA5ZDY4MzAsIDB4MDYzZTJlMGYsIDB4ZTAwOWRlMWQsIDB4MDE5MWY2NWYsIDB4ZTAyNzcyNWMsIDB4ZmNkZDBiMjgsIDB4ZTBmNTgxMDQsIDB4ZjgzOTgxYTEsIAorCTB4ZTk1ZjYxOWEsIDB4MTZhMDllNjYsIDB4ZTc0MzdmOTUsIDB4MTQ0Y2YzMjUsIDB4ZTU2NDk5ZDcsIDB4MTFjNzNiM2EsIDB4ZTNjNzRkMGUsIDB4MGYxNWFlOWMsIAorCTB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIDB4MGFjN2NkM2IsIDB4MWUyMTIxMDUsIDB4MDk0YTAzMTcsIDB4MWU5ZjQxNTcsIDB4MDdjNjdlNWYsIDB4MWYwYTdlZmMsIAorCTB4ZTI2Zjk0MzEsIDB4ZjNjMTBlYWQsIDB4ZTQ4ZDdjYmIsIDB4ZWY4Yzc4NjcsIDB4ZTc0MzdmOTUsIDB4ZWJiMzBjZGIsIDB4ZWE4Mjk2Y2IsIDB4ZTg0YTIwZGUsIAorCTB4ZTI2Zjk0MzEsIDB4MGMzZWYxNTMsIDB4ZTE2MGJlYTksIDB4MDk0YTAzMTcsIDB4ZTA5ZDY4MzAsIDB4MDYzZTJlMGYsIDB4ZTAyNzcyNWMsIDB4MDMyMmY0ZDgsIAorCTB4MDYzZTJlMGYsIDB4MWY2Mjk3ZDAsIDB4MDRiMjA0MWMsIDB4MWZhNzU1N2YsIDB4MDMyMmY0ZDgsIDB4MWZkODhkYTQsIDB4MDE5MWY2NWYsIDB4MWZmNjIxZTMsIAorCTB4ZWUzOGM0YzYsIDB4ZTU2NDk5ZDcsIDB4ZjI1MTc3ZmIsIDB4ZTMxMjg1MGMsIDB4ZjZiNWZjZTksIDB4ZTE2MGJlYTksIDB4ZmI0ZGZiZTQsIDB4ZTA1OGFhODEsIAorCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxZmZkODg2MSwgMHgwMGM5MGFiMCwgMHgxZmY2MjFlMywgMHgwMTkxZjY1ZiwgMHgxZmU5Y2RhZCwgMHgwMjVhYTQxMiwgCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxZmZmNjIxNywgMHgwMDY0ODc0OCwgMHgxZmZkODg2MSwgMHgwMGM5MGFiMCwgMHgxZmZhNzJmMCwgMHgwMTJkODY1NywgCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxZmZhNzJmMCwgMHgwMTJkODY1NywgMHgxZmU5Y2RhZCwgMHgwMjVhYTQxMiwgMHgxZmNlMTVmZCwgMHgwMzg2ZjBiOSwgCisJMHgxZmQ4OGRhNCwgMHgwMzIyZjRkOCwgMHgxZmMyNjQ3MSwgMHgwM2VhYzljYiwgMHgxZmE3NTU3ZiwgMHgwNGIyMDQxYywgMHgxZjg3NjRmYSwgMHgwNTc4ODUxMSwgCisJMHgxZmY2MjFlMywgMHgwMTkxZjY1ZiwgMHgxZmYwOTU2NiwgMHgwMWY2NTZlOCwgMHgxZmU5Y2RhZCwgMHgwMjVhYTQxMiwgMHgxZmUxY2FmZCwgMHgwMmJlZGEwMSwgCisJMHgxZmE3NTU3ZiwgMHgwNGIyMDQxYywgMHgxZjc1OTlhNCwgMHgwNWRiNzY3OCwgMHgxZjM4ZjNhYywgMHgwNzAyZTA5YiwgMHgxZWYxNzhhNCwgMHgwODI3ZGMwNywgCisJMHgxZjYyOTdkMCwgMHgwNjNlMmUwZiwgMHgxZjM4ZjNhYywgMHgwNzAyZTA5YiwgMHgxZjBhN2VmYywgMHgwN2M2N2U1ZiwgMHgxZWQ3NDBlNywgMHgwODg4ZTkzMSwgCisJMHgxZmQ4OGRhNCwgMHgwMzIyZjRkOCwgMHgxZmNlMTVmZCwgMHgwMzg2ZjBiOSwgMHgxZmMyNjQ3MSwgMHgwM2VhYzljYiwgMHgxZmI1Nzk3MiwgMHgwNDRlN2MzNCwgCisJMHgxZTlmNDE1NywgMHgwOTRhMDMxNywgMHgxZTQyNmE0YiwgMHgwYTY4ZjEyMSwgMHgxZGRiMTNiNywgMHgwYjg0NDI5OCwgMHgxZDY5NjE3NCwgMHgwYzliOTUzMiwgCisJMHgxZTlmNDE1NywgMHgwOTRhMDMxNywgMHgxZTYyODhlYywgMHgwYTA5YWU0YSwgMHgxZTIxMjEwNSwgMHgwYWM3Y2QzYiwgMHgxZGRiMTNiNywgMHgwYjg0NDI5OCwgCisJMHgxZmE3NTU3ZiwgMHgwNGIyMDQxYywgMHgxZjk3ZjkyNSwgMHgwNTE1NWRhYywgMHgxZjg3NjRmYSwgMHgwNTc4ODUxMSwgMHgxZjc1OTlhNCwgMHgwNWRiNzY3OCwgCisJMHgxY2VkN2FmNCwgMHgwZGFlODgwNSwgMHgxYzY3OGIzNSwgMHgwZWJjYmJhZSwgMHgxYmQ3YzBhYywgMHgwZmM1ZDI2ZSwgMHgxYjNlNGQzZiwgMHgxMGM5NzA0ZCwgCisJMHgxZDkwNmJjZiwgMHgwYzNlZjE1MywgMHgxZDQxMzRkMSwgMHgwY2Y3YmNhMiwgMHgxY2VkN2FmNCwgMHgwZGFlODgwNSwgMHgxYzk1NGIyMSwgMHgwZTYzMzc0ZCwgCisJMHgxZjYyOTdkMCwgMHgwNjNlMmUwZiwgMHgxZjRlNjAzYiwgMHgwNmEwYTgwOSwgMHgxZjM4ZjNhYywgMHgwNzAyZTA5YiwgMHgxZjIyNTJmNywgMHgwNzY0ZDNmOSwgCisJMHgxYTliNjYyOSwgMHgxMWM3M2IzYSwgMHgxOWVmNDNlZiwgMHgxMmJlZGIyNiwgMHgxOTNhMjI0YSwgMHgxM2FmZmEyOSwgMHgxODdjNDAxMCwgMHgxNDlhNDQ5YywgCisJMHgxYzM4YjJmMiwgMHgwZjE1YWU5YywgMHgxYmQ3YzBhYywgMHgwZmM1ZDI2ZSwgMHgxYjcyODM0NSwgMHgxMDczODc5OSwgMHgxYjA5MGE1OCwgMHgxMTFlYjM1NCwgCisJMHgxZjBhN2VmYywgMHgwN2M2N2U1ZiwgMHgxZWYxNzhhNCwgMHgwODI3ZGMwNywgMHgxZWQ3NDBlNywgMHgwODg4ZTkzMSwgMHgxZWJiZDhjOSwgMHgwOGU5YTIyMCwgCisJMHgxN2I1ZGYyMiwgMHgxNTdkNjkzNSwgMHgxNmU3NDQ1NSwgMHgxNjU5MTkyNiwgMHgxNjEwYjc1NSwgMHgxNzJkMDgzOCwgMHgxNTMyODI5MywgMHgxN2Y4ZWNlMywgCisJMHgxYTliNjYyOSwgMHgxMWM3M2IzYSwgMHgxYTI5YTdhMCwgMHgxMjZkMDU0ZCwgMHgxOWIzZTA0OCwgMHgxMzBmZjdmZCwgMHgxOTNhMjI0YSwgMHgxM2FmZmEyOSwgCisJMHgxZTlmNDE1NywgMHgwOTRhMDMxNywgMHgxZTgxN2JhYiwgMHgwOWFhMDg2MSwgMHgxZTYyODhlYywgMHgwYTA5YWU0YSwgMHgxZTQyNmE0YiwgMHgwYTY4ZjEyMSwgCisJMHgxNDRjZjMyNSwgMHgxOGJjODA2YiwgMHgxMzYwNThiMSwgMHgxOTc3N2VmNSwgMHgxMjZkMDU0ZCwgMHgxYTI5YTdhMCwgMHgxMTczNGQ2NCwgMHgxYWQyYmM5ZSwgCisJMHgxOGJjODA2YiwgMHgxNDRjZjMyNSwgMHgxODNiMGUwYywgMHgxNGU2Y2FiYywgMHgxN2I1ZGYyMiwgMHgxNTdkNjkzNSwgMHgxNzJkMDgzOCwgMHgxNjEwYjc1NSwgCisJMHgxZTIxMjEwNSwgMHgwYWM3Y2QzYiwgMHgxZGZlYWU2MiwgMHgwYjI2M2VlZiwgMHgxZGRiMTNiNywgMHgwYjg0NDI5OCwgMHgxZGI2NTI2MiwgMHgwYmUxZDQ5OSwgCisJMHgxMDczODc5OSwgMHgxYjcyODM0NSwgMHgwZjZlMGNhOSwgMHgxYzA4YzQyNiwgMHgwZTYzMzc0ZCwgMHgxYzk1NGIyMSwgMHgwZDUzNjQxNiwgMHgxZDE3ZTc3NCwgCisJMHgxNmEwOWU2NiwgMHgxNmEwOWU2NiwgMHgxNjEwYjc1NSwgMHgxNzJkMDgzOCwgMHgxNTdkNjkzNSwgMHgxN2I1ZGYyMiwgMHgxNGU2Y2FiYywgMHgxODNiMGUwYywgCisJMHgxZDkwNmJjZiwgMHgwYzNlZjE1MywgMHgxZDY5NjE3NCwgMHgwYzliOTUzMiwgMHgxZDQxMzRkMSwgMHgwY2Y3YmNhMiwgMHgxZDE3ZTc3NCwgMHgwZDUzNjQxNiwgCisJMHgwYzNlZjE1MywgMHgxZDkwNmJjZiwgMHgwYjI2M2VlZiwgMHgxZGZlYWU2MiwgMHgwYTA5YWU0YSwgMHgxZTYyODhlYywgMHgwOGU5YTIyMCwgMHgxZWJiZDhjOSwgCisJMHgxNDRjZjMyNSwgMHgxOGJjODA2YiwgMHgxM2FmZmEyOSwgMHgxOTNhMjI0YSwgMHgxMzBmZjdmZCwgMHgxOWIzZTA0OCwgMHgxMjZkMDU0ZCwgMHgxYTI5YTdhMCwgCisJMHgxY2VkN2FmNCwgMHgwZGFlODgwNSwgMHgxY2MxZjBmNCwgMHgwZTA5MjRlYywgMHgxYzk1NGIyMSwgMHgwZTYzMzc0ZCwgMHgxYzY3OGIzNSwgMHgwZWJjYmJhZSwgCisJMHgwN2M2N2U1ZiwgMHgxZjBhN2VmYywgMHgwNmEwYTgwOSwgMHgxZjRlNjAzYiwgMHgwNTc4ODUxMSwgMHgxZjg3NjRmYSwgMHgwNDRlN2MzNCwgMHgxZmI1Nzk3MiwgCisJMHgxMWM3M2IzYSwgMHgxYTliNjYyOSwgMHgxMTFlYjM1NCwgMHgxYjA5MGE1OCwgMHgxMDczODc5OSwgMHgxYjcyODM0NSwgMHgwZmM1ZDI2ZSwgMHgxYmQ3YzBhYywgCisJMHgxYzM4YjJmMiwgMHgwZjE1YWU5YywgMHgxYzA4YzQyNiwgMHgwZjZlMGNhOSwgMHgxYmQ3YzBhYywgMHgwZmM1ZDI2ZSwgMHgxYmE1YWE2NywgMHgxMDFjZmM4NywgCisJMHgwMzIyZjRkOCwgMHgxZmQ4OGRhNCwgMHgwMWY2NTZlOCwgMHgxZmYwOTU2NiwgMHgwMGM5MGFiMCwgMHgxZmZkODg2MSwgMHhmZjliNzhiOCwgMHgxZmZmNjIxNywgCisJMHgwZjE1YWU5YywgMHgxYzM4YjJmMiwgMHgwZTYzMzc0ZCwgMHgxYzk1NGIyMSwgMHgwZGFlODgwNSwgMHgxY2VkN2FmNCwgMHgwY2Y3YmNhMiwgMHgxZDQxMzRkMSwgCisJMHgxYjcyODM0NSwgMHgxMDczODc5OSwgMHgxYjNlNGQzZiwgMHgxMGM5NzA0ZCwgMHgxYjA5MGE1OCwgMHgxMTFlYjM1NCwgMHgxYWQyYmM5ZSwgMHgxMTczNGQ2NCwgCisJMHhmZTZlMDlhMSwgMHgxZmY2MjFlMywgMHhmZDQxMjVmZiwgMHgxZmUxY2FmZCwgMHhmYzE1MzYzNSwgMHgxZmMyNjQ3MSwgMHhmYWVhYTI1NCwgMHgxZjk3ZjkyNSwgCisJMHgwYzNlZjE1MywgMHgxZDkwNmJjZiwgMHgwYjg0NDI5OCwgMHgxZGRiMTNiNywgMHgwYWM3Y2QzYiwgMHgxZTIxMjEwNSwgMHgwYTA5YWU0YSwgMHgxZTYyODhlYywgCisJMHgxYTliNjYyOSwgMHgxMWM3M2IzYSwgMHgxYTYzMDkxYiwgMHgxMjFhNzk5OSwgMHgxYTI5YTdhMCwgMHgxMjZkMDU0ZCwgMHgxOWVmNDNlZiwgMHgxMmJlZGIyNiwgCisJMHhmOWMxZDFmMSwgMHgxZjYyOTdkMCwgMHhmODliMmMwNywgMHgxZjIyNTJmNywgMHhmNzc3MTZjZiwgMHgxZWQ3NDBlNywgMHhmNjU1Zjc5ZiwgMHgxZTgxN2JhYiwgCisJMHgwOTRhMDMxNywgMHgxZTlmNDE1NywgMHgwODg4ZTkzMSwgMHgxZWQ3NDBlNywgMHgwN2M2N2U1ZiwgMHgxZjBhN2VmYywgMHgwNzAyZTA5YiwgMHgxZjM4ZjNhYywgCisJMHgxOWIzZTA0OCwgMHgxMzBmZjdmZCwgMHgxOTc3N2VmNSwgMHgxMzYwNThiMSwgMHgxOTNhMjI0YSwgMHgxM2FmZmEyOSwgMHgxOGZiY2NhNCwgMHgxM2ZlZDk1MywgCisJMHhmNTM4MzJjNSwgMHgxZTIxMjEwNSwgMHhmNDFlMmI2NywgMHgxZGI2NTI2MiwgMHhmMzA4NDM1ZSwgMHgxZDQxMzRkMSwgMHhmMWY2ZGIxNCwgMHgxY2MxZjBmNCwgCisJMHgwNjNlMmUwZiwgMHgxZjYyOTdkMCwgMHgwNTc4ODUxMSwgMHgxZjg3NjRmYSwgMHgwNGIyMDQxYywgMHgxZmE3NTU3ZiwgMHgwM2VhYzljYiwgMHgxZmMyNjQ3MSwgCisJMHgxOGJjODA2YiwgMHgxNDRjZjMyNSwgMHgxODdjNDAxMCwgMHgxNDlhNDQ5YywgMHgxODNiMGUwYywgMHgxNGU2Y2FiYywgMHgxN2Y4ZWNlMywgMHgxNTMyODI5MywgCisJMHhmMGVhNTE2NCwgMHgxYzM4YjJmMiwgMHhlZmUzMDM3OSwgMHgxYmE1YWE2NywgMHhlZWUxNGNhYywgMHgxYjA5MGE1OCwgMHhlZGU1ODY2NywgMHgxYTYzMDkxYiwgCisJMHgwMzIyZjRkOCwgMHgxZmQ4OGRhNCwgMHgwMjVhYTQxMiwgMHgxZmU5Y2RhZCwgMHgwMTkxZjY1ZiwgMHgxZmY2MjFlMywgMHgwMGM5MGFiMCwgMHgxZmZkODg2MSwgCisJMHgxN2I1ZGYyMiwgMHgxNTdkNjkzNSwgMHgxNzcxZTc1ZiwgMHgxNWM3N2JiZSwgMHgxNzJkMDgzOCwgMHgxNjEwYjc1NSwgMHgxNmU3NDQ1NSwgMHgxNjU5MTkyNiwgCisJMHhlY2YwMDgwMywgMHgxOWIzZTA0OCwgMHhlYzAxMjZhZCwgMHgxOGZiY2NhNCwgMHhlYjE5MzU0NCwgMHgxODNiMGUwYywgMHhlYTM4ODQ0MiwgMHgxNzcxZTc1ZiwgCisJMHgwMDAwMDAwMCwgMHgyMDAwMDAwMCwgMHhmZjM2ZjU1MCwgMHgxZmZkODg2MSwgMHhmZTZlMDlhMSwgMHgxZmY2MjFlMywgMHhmZGE1NWJlZSwgMHgxZmU5Y2RhZCwgCisJMHgxNmEwOWU2NiwgMHgxNmEwOWU2NiwgMHgxNjU5MTkyNiwgMHgxNmU3NDQ1NSwgMHgxNjEwYjc1NSwgMHgxNzJkMDgzOCwgMHgxNWM3N2JiZSwgMHgxNzcxZTc1ZiwgCisJMHhlOTVmNjE5YSwgMHgxNmEwOWU2NiwgMHhlODhlMThhMSwgMHgxNWM3N2JiZSwgMHhlN2M0ZjFmNCwgMHgxNGU2Y2FiYywgMHhlNzA0MzM1YywgMHgxM2ZlZDk1MywgCisJMHhmY2RkMGIyOCwgMHgxZmQ4OGRhNCwgMHhmYzE1MzYzNSwgMHgxZmMyNjQ3MSwgMHhmYjRkZmJlNCwgMHgxZmE3NTU3ZiwgMHhmYTg3N2FlZiwgMHgxZjg3NjRmYSwgCisJMHgxNTdkNjkzNSwgMHgxN2I1ZGYyMiwgMHgxNTMyODI5MywgMHgxN2Y4ZWNlMywgMHgxNGU2Y2FiYywgMHgxODNiMGUwYywgMHgxNDlhNDQ5YywgMHgxODdjNDAxMCwgCisJMHhlNjRjMWZiOCwgMHgxMzBmZjdmZCwgMHhlNTljZjZlNSwgMHgxMjFhNzk5OSwgMHhlNGY2ZjVhOCwgMHgxMTFlYjM1NCwgMHhlNDVhNTU5OSwgMHgxMDFjZmM4NywgCisJMHhmOWMxZDFmMSwgMHgxZjYyOTdkMCwgMHhmOGZkMWY2NSwgMHgxZjM4ZjNhYywgMHhmODM5ODFhMSwgMHgxZjBhN2VmYywgMHhmNzc3MTZjZiwgMHgxZWQ3NDBlNywgCisJMHgxNDRjZjMyNSwgMHgxOGJjODA2YiwgMHgxM2ZlZDk1MywgMHgxOGZiY2NhNCwgMHgxM2FmZmEyOSwgMHgxOTNhMjI0YSwgMHgxMzYwNThiMSwgMHgxOTc3N2VmNSwgCisJMHhlM2M3NGQwZSwgMHgwZjE1YWU5YywgMHhlMzNlMGYwYywgMHgwZTA5MjRlYywgMHhlMmJlY2IyZiwgMHgwY2Y3YmNhMiwgMHhlMjQ5YWQ5ZSwgMHgwYmUxZDQ5OSwgCisJMHhmNmI1ZmNlOSwgMHgxZTlmNDE1NywgMHhmNWY2NTFiNiwgMHgxZTYyODhlYywgMHhmNTM4MzJjNSwgMHgxZTIxMjEwNSwgMHhmNDdiYmQ2OCwgMHgxZGRiMTNiNywgCisJMHgxMzBmZjdmZCwgMHgxOWIzZTA0OCwgMHgxMmJlZGIyNiwgMHgxOWVmNDNlZiwgMHgxMjZkMDU0ZCwgMHgxYTI5YTdhMCwgMHgxMjFhNzk5OSwgMHgxYTYzMDkxYiwgCisJMHhlMWRlZGVmYiwgMHgwYWM3Y2QzYiwgMHhlMTdlODQ1NSwgMHgwOWFhMDg2MSwgMHhlMTI4YmYxOSwgMHgwODg4ZTkzMSwgMHhlMGRkYWQwOSwgMHgwNzY0ZDNmOSwgCisJMHhmM2MxMGVhZCwgMHgxZDkwNmJjZiwgMHhmMzA4NDM1ZSwgMHgxZDQxMzRkMSwgMHhmMjUxNzdmYiwgMHgxY2VkN2FmNCwgMHhmMTljYzhiMywgMHgxYzk1NGIyMSwgCisJMHgxMWM3M2IzYSwgMHgxYTliNjYyOSwgMHgxMTczNGQ2NCwgMHgxYWQyYmM5ZSwgMHgxMTFlYjM1NCwgMHgxYjA5MGE1OCwgMHgxMGM5NzA0ZCwgMHgxYjNlNGQzZiwgCisJMHhlMDlkNjgzMCwgMHgwNjNlMmUwZiwgMHhlMDY4MDZkYiwgMHgwNTE1NWRhYywgMHhlMDNkOWI4ZiwgMHgwM2VhYzljYiwgMHhlMDFlMzUwMywgMHgwMmJlZGEwMSwgCisJMHhmMGVhNTE2NCwgMHgxYzM4YjJmMiwgMHhmMDNhMmQ5MiwgMHgxYmQ3YzBhYywgMHhlZjhjNzg2NywgMHgxYjcyODM0NSwgMHhlZWUxNGNhYywgMHgxYjA5MGE1OCwgCisJMHgxMDczODc5OSwgMHgxYjcyODM0NSwgMHgxMDFjZmM4NywgMHgxYmE1YWE2NywgMHgwZmM1ZDI2ZSwgMHgxYmQ3YzBhYywgMHgwZjZlMGNhOSwgMHgxYzA4YzQyNiwgCisJMHhlMDA5ZGUxZCwgMHgwMTkxZjY1ZiwgMHhlMDAwOWRlOSwgMHgwMDY0ODc0OCwgMHhlMDAyNzc5ZiwgMHhmZjM2ZjU1MCwgMHhlMDBmNmE5YSwgMHhmZTA5YTkxOCwgCisJMHhlZTM4YzRjNiwgMHgxYTliNjYyOSwgMHhlZDkyZmFiMywgMHgxYTI5YTdhMCwgMHhlY2YwMDgwMywgMHgxOWIzZTA0OCwgMHhlYzUwMDVkNywgMHgxOTNhMjI0YSwgCisJMHgwZjE1YWU5YywgMHgxYzM4YjJmMiwgMHgwZWJjYmJhZSwgMHgxYzY3OGIzNSwgMHgwZTYzMzc0ZCwgMHgxYzk1NGIyMSwgMHgwZTA5MjRlYywgMHgxY2MxZjBmNCwgCisJMHhlMDI3NzI1YywgMHhmY2RkMGIyOCwgMHhlMDRhODY4ZSwgMHhmYmIxODNjYywgMHhlMDc4OWIwNiwgMHhmYTg3N2FlZiwgMHhlMGIxOWZjNSwgMHhmOTVmNTdmNywgCisJMHhlYmIzMGNkYiwgMHgxOGJjODA2YiwgMHhlYjE5MzU0NCwgMHgxODNiMGUwYywgMHhlYTgyOTZjYiwgMHgxN2I1ZGYyMiwgMHhlOWVmNDhhYiwgMHgxNzJkMDgzOCwgCisJMHgwZGFlODgwNSwgMHgxY2VkN2FmNCwgMHgwZDUzNjQxNiwgMHgxZDE3ZTc3NCwgMHgwY2Y3YmNhMiwgMHgxZDQxMzRkMSwgMHgwYzliOTUzMiwgMHgxZDY5NjE3NCwgCisJMHhlMGY1ODEwNCwgMHhmODM5ODFhMSwgMHhlMTQ0MjczNywgMHhmNzE2NWRlMCwgMHhlMTlkNzcxNCwgMHhmNWY2NTFiNiwgMHhlMjAxNTE5ZSwgMHhmNGQ5YzExMSwgCisJMHhlOTVmNjE5YSwgMHgxNmEwOWU2NiwgMHhlOGQyZjdjOCwgMHgxNjEwYjc1NSwgMHhlODRhMjBkZSwgMHgxNTdkNjkzNSwgMHhlN2M0ZjFmNCwgMHgxNGU2Y2FiYywgCisJMHgwYzNlZjE1MywgMHgxZDkwNmJjZiwgMHgwYmUxZDQ5OSwgMHgxZGI2NTI2MiwgMHgwYjg0NDI5OCwgMHgxZGRiMTNiNywgMHgwYjI2M2VlZiwgMHgxZGZlYWU2MiwgCisJMHhlMjZmOTQzMSwgMHhmM2MxMGVhZCwgMHhlMmU4MTg4YywgMHhmMmFjOWJlYSwgMHhlMzZhYjRkZiwgMHhmMTljYzhiMywgMHhlM2Y3M2JkYSwgMHhmMDkxZjM1NywgCisJMHhlNzQzN2Y5NSwgMHgxNDRjZjMyNSwgMHhlNmM1ZGRiNiwgMHgxM2FmZmEyOSwgMHhlNjRjMWZiOCwgMHgxMzBmZjdmZCwgMHhlNWQ2NTg2MCwgMHgxMjZkMDU0ZCwgCisJMHgwYWM3Y2QzYiwgMHgxZTIxMjEwNSwgMHgwYTY4ZjEyMSwgMHgxZTQyNmE0YiwgMHgwYTA5YWU0YSwgMHgxZTYyODhlYywgMHgwOWFhMDg2MSwgMHgxZTgxN2JhYiwgCisJMHhlNDhkN2NiYiwgMHhlZjhjNzg2NywgMHhlNTJkNDM2MiwgMHhlZThjYjI5YywgMHhlNWQ2NTg2MCwgMHhlZDkyZmFiMywgMHhlNjg4ODEwYiwgMHhlYzlmYTc0ZiwgCisJMHhlNTY0OTlkNywgMHgxMWM3M2IzYSwgMHhlNGY2ZjVhOCwgMHgxMTFlYjM1NCwgMHhlNDhkN2NiYiwgMHgxMDczODc5OSwgMHhlNDI4M2Y1NCwgMHgwZmM1ZDI2ZSwgCisJMHgwOTRhMDMxNywgMHgxZTlmNDE1NywgMHgwOGU5YTIyMCwgMHgxZWJiZDhjOSwgMHgwODg4ZTkzMSwgMHgxZWQ3NDBlNywgMHgwODI3ZGMwNywgMHgxZWYxNzhhNCwgCisJMHhlNzQzN2Y5NSwgMHhlYmIzMGNkYiwgMHhlODA3MTMxZCwgMHhlYWNkN2Q2ZCwgMHhlOGQyZjdjOCwgMHhlOWVmNDhhYiwgMHhlOWE2ZTZkYSwgMHhlOTE4YmJhYiwgCisJMHhlM2M3NGQwZSwgMHgwZjE1YWU5YywgMHhlMzZhYjRkZiwgMHgwZTYzMzc0ZCwgMHhlMzEyODUwYywgMHgwZGFlODgwNSwgMHhlMmJlY2IyZiwgMHgwY2Y3YmNhMiwgCisJMHgwN2M2N2U1ZiwgMHgxZjBhN2VmYywgMHgwNzY0ZDNmOSwgMHgxZjIyNTJmNywgMHgwNzAyZTA5YiwgMHgxZjM4ZjNhYywgMHgwNmEwYTgwOSwgMHgxZjRlNjAzYiwgCisJMHhlYTgyOTZjYiwgMHhlODRhMjBkZSwgMHhlYjY1YmI2NCwgMHhlNzgzYmZmMCwgMHhlYzUwMDVkNywgMHhlNmM1ZGRiNiwgMHhlZDQxMjRkYSwgMHhlNjEwYmMxMSwgCisJMHhlMjZmOTQzMSwgMHgwYzNlZjE1MywgMHhlMjI0ZWM0OSwgMHgwYjg0NDI5OCwgMHhlMWRlZGVmYiwgMHgwYWM3Y2QzYiwgMHhlMTlkNzcxNCwgMHgwYTA5YWU0YSwgCisJMHgwNjNlMmUwZiwgMHgxZjYyOTdkMCwgMHgwNWRiNzY3OCwgMHgxZjc1OTlhNCwgMHgwNTc4ODUxMSwgMHgxZjg3NjRmYSwgMHgwNTE1NWRhYywgMHgxZjk3ZjkyNSwgCisJMHhlZTM4YzRjNiwgMHhlNTY0OTlkNywgMHhlZjM2OGZiMywgMHhlNGMxYjJjMSwgMHhmMDNhMmQ5MiwgMHhlNDI4M2Y1NCwgMHhmMTQzNDQ1MiwgMHhlMzk4NzRjYiwgCisJMHhlMTYwYmVhOSwgMHgwOTRhMDMxNywgMHhlMTI4YmYxOSwgMHgwODg4ZTkzMSwgMHhlMGY1ODEwNCwgMHgwN2M2N2U1ZiwgMHhlMGM3MGM1NCwgMHgwNzAyZTA5YiwgCisJMHgwNGIyMDQxYywgMHgxZmE3NTU3ZiwgMHgwNDRlN2MzNCwgMHgxZmI1Nzk3MiwgMHgwM2VhYzljYiwgMHgxZmMyNjQ3MSwgMHgwMzg2ZjBiOSwgMHgxZmNlMTVmZCwgCisJMHhmMjUxNzdmYiwgMHhlMzEyODUwYywgMHhmMzY0NmFjZSwgMHhlMjk2OWU4YywgMHhmNDdiYmQ2OCwgMHhlMjI0ZWM0OSwgMHhmNTk3MGVkZiwgMHhlMWJkOTViNSwgCisJMHhlMDlkNjgzMCwgMHgwNjNlMmUwZiwgMHhlMDc4OWIwNiwgMHgwNTc4ODUxMSwgMHhlMDU4YWE4MSwgMHgwNGIyMDQxYywgMHhlMDNkOWI4ZiwgMHgwM2VhYzljYiwgCisJMHgwMzIyZjRkOCwgMHgxZmQ4OGRhNCwgMHgwMmJlZGEwMSwgMHgxZmUxY2FmZCwgMHgwMjVhYTQxMiwgMHgxZmU5Y2RhZCwgMHgwMWY2NTZlOCwgMHgxZmYwOTU2NiwgCisJMHhmNmI1ZmNlOSwgMHhlMTYwYmVhOSwgMHhmN2Q4MjNmOSwgMHhlMTBlODc1YywgMHhmOGZkMWY2NSwgMHhlMGM3MGM1NCwgMHhmYTI0ODk4OCwgMHhlMDhhNjY1YywgCisJMHhlMDI3NzI1YywgMHgwMzIyZjRkOCwgMHhlMDE2MzI1MywgMHgwMjVhYTQxMiwgMHhlMDA5ZGUxZCwgMHgwMTkxZjY1ZiwgMHhlMDAyNzc5ZiwgMHgwMGM5MGFiMCwgCisJMHgwMTkxZjY1ZiwgMHgxZmY2MjFlMywgMHgwMTJkODY1NywgMHgxZmZhNzJmMCwgMHgwMGM5MGFiMCwgMHgxZmZkODg2MSwgMHgwMDY0ODc0OCwgMHgxZmZmNjIxNywgCisJMHhmYjRkZmJlNCwgMHhlMDU4YWE4MSwgMHhmYzc5MGY0NywgMHhlMDMxZWEwMywgMHhmZGE1NWJlZSwgMHhlMDE2MzI1MywgMHhmZWQyNzlhOSwgMHhlMDA1OGQxMA0KK307DQorDQorY29uc3QgaW50IHR3aWRUYWI2NFs0KjYgKyAxNio2XSA9IHsNCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxNmEwOWU2NiwgMHgxNmEwOWU2NiwgMHgwMDAwMDAwMCwgMHgyMDAwMDAwMCwgMHhlOTVmNjE5YSwgMHgxNmEwOWU2NiwgCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxZDkwNmJjZiwgMHgwYzNlZjE1MywgMHgxNmEwOWU2NiwgMHgxNmEwOWU2NiwgMHgwYzNlZjE1MywgMHgxZDkwNmJjZiwgCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwYzNlZjE1MywgMHgxZDkwNmJjZiwgMHhlOTVmNjE5YSwgMHgxNmEwOWU2NiwgMHhlMjZmOTQzMSwgMHhmM2MxMGVhZCwgCisKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFmNjI5N2QwLCAweDA2M2UyZTBmLCAweDFkOTA2YmNmLCAweDBjM2VmMTUzLCAweDFhOWI2NjI5LCAweDExYzczYjNhLCAKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFmZDg4ZGE0LCAweDAzMjJmNGQ4LCAweDFmNjI5N2QwLCAweDA2M2UyZTBmLCAweDFlOWY0MTU3LCAweDA5NGEwMzE3LCAKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFlOWY0MTU3LCAweDA5NGEwMzE3LCAweDFhOWI2NjI5LCAweDExYzczYjNhLCAweDE0NGNmMzI1LCAweDE4YmM4MDZiLCAKKwkweDE2YTA5ZTY2LCAweDE2YTA5ZTY2LCAweDExYzczYjNhLCAweDFhOWI2NjI5LCAweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweDA2M2UyZTBmLCAweDFmNjI5N2QwLCAKKwkweDFkOTA2YmNmLCAweDBjM2VmMTUzLCAweDFjMzhiMmYyLCAweDBmMTVhZTljLCAweDFhOWI2NjI5LCAweDExYzczYjNhLCAweDE4YmM4MDZiLCAweDE0NGNmMzI1LCAKKwkweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweDAzMjJmNGQ4LCAweDFmZDg4ZGE0LCAweGY5YzFkMWYxLCAweDFmNjI5N2QwLCAweGYwZWE1MTY0LCAweDFjMzhiMmYyLCAKKwkweDAwMDAwMDAwLCAweDIwMDAwMDAwLCAweGY5YzFkMWYxLCAweDFmNjI5N2QwLCAweGYzYzEwZWFkLCAweDFkOTA2YmNmLCAweGVlMzhjNGM2LCAweDFhOWI2NjI5LCAKKwkweDE2YTA5ZTY2LCAweDE2YTA5ZTY2LCAweDE0NGNmMzI1LCAweDE4YmM4MDZiLCAweDExYzczYjNhLCAweDFhOWI2NjI5LCAweDBmMTVhZTljLCAweDFjMzhiMmYyLCAKKwkweGU5NWY2MTlhLCAweDE2YTA5ZTY2LCAweGUzYzc0ZDBlLCAweDBmMTVhZTljLCAweGUwOWQ2ODMwLCAweDA2M2UyZTBmLCAweGUwMjc3MjVjLCAweGZjZGQwYjI4LCAKKwkweGU5NWY2MTlhLCAweDE2YTA5ZTY2LCAweGU1NjQ5OWQ3LCAweDExYzczYjNhLCAweGUyNmY5NDMxLCAweDBjM2VmMTUzLCAweGUwOWQ2ODMwLCAweDA2M2UyZTBmLCAKKwkweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweDA5NGEwMzE3LCAweDFlOWY0MTU3LCAweDA2M2UyZTBmLCAweDFmNjI5N2QwLCAweDAzMjJmNGQ4LCAweDFmZDg4ZGE0LCAKKwkweGUyNmY5NDMxLCAweGYzYzEwZWFkLCAweGU3NDM3Zjk1LCAweGViYjMwY2RiLCAweGVlMzhjNGM2LCAweGU1NjQ5OWQ3LCAweGY2YjVmY2U5LCAweGUxNjBiZWE5DQorfTsNCisNCisjZWxzZQorCisvKiANCisgKiAgUTMwIGZvciAxMjggYW5kIDEwMjQgDQorICoNCisgKiBmb3IgKGkgPSAwOyBpIDwgbnVtLzQ7IGkrKykgew0KKyAqICAgYW5nbGUgPSAoaSArIDAuMTI1KSAqIE1fUEkgLyBudW07DQorICogICB4ID0gY29zKGFuZ2xlKSAqICgxIDw8IDMwKTsNCisgKiAgIHggPSBzaW4oYW5nbGUpICogKDEgPDwgMzApOw0KKyAqIA0KKyAqICAgYW5nbGUgPSAobnVtLzIgLSAxIC0gaSArIDAuMTI1KSAqIE1fUEkgLyBudW07DQorICogICB4ID0gY29zKGFuZ2xlKSAqICgxIDw8IDMwKTsNCisgKiAgIHggPSBzaW4oYW5nbGUpICogKDEgPDwgMzApOw0KKyAqIH0NCisgKi8NCitjb25zdCBpbnQgY29zc2ludGFiWzEyOCArIDEwMjRdID0gew0KKwkvKiAxMjggKi8NCisJMHgzZmZmZWM0MywgMHgwMDMyNDNmMSwgMHgwMTVmZDRkMiwgMHgzZmZjMzhkMSwgMHgzZmY5YzEzYSwgMHgwMWM0NTRmNSwgMHgwMmYxYjc1NSwgMHgzZmVlYTc3NiwgDQorCTB4M2ZlOWI4YTksIDB4MDM1NjIwMzgsIDB4MDQ4MzI1OWQsIDB4M2ZkNzNhNGEsIDB4M2ZjZmQ1MGIsIDB4MDRlNzY3YzUsIDB4MDYxM2UxYzUsIDB4M2ZiNWY0ZWEsIA0KKwkweDNmYWMxYTViLCAweDA2NzdlZGJiLCAweDA3YTNhZGZmLCAweDNmOGFkYzc3LCAweDNmN2U4ZTFlLCAweDA4MDc3NDU3LCAweDA5MzI0Y2E3LCAweDNmNTVmNzk2LCANCisJMHgzZjQ3Mzc1OSwgMHgwOTk1YmRmZCwgMHgwYWJmODA0MywgMHgzZjE3NGU3MCwgMHgzZjA2MWU5NSwgMHgwYjIyOGQ0MiwgMHgwYzRiMGI5NCwgMHgzZWNlZWFhZCwgDQorCTB4M2ViYjRkZGIsIDB4MGNhZGE0ZjUsIDB4MGRkNGIxOWEsIDB4M2U3Y2Q3NzgsIDB4M2U2NmQwYjQsIDB4MGUzNmM4MmEsIDB4MGY1YzM1YTMsIDB4M2UyMTIxNzksIA0KKwkweDNlMDhiNDJhLCAweDBmYmRiYTQwLCAweDEwZTE1YjRlLCAweDNkYmJkNmQ0LCAweDNkYTEwNmJkLCAweDExNDIzZWYwLCAweDEyNjNlNjk5LCAweDNkNGQwNzI4LCANCisJMHgzZDJmZDg2YywgMHgxMmM0MWE0ZiwgMHgxM2UzOWJlOSwgMHgzY2Q0YzM4YiwgMHgzY2I1M2FhYSwgMHgxNDQzMTBkZCwgMHgxNTYwNDAxMywgMHgzYzUzMWU4OCwgDQorCTB4M2MzMTQwNjAsIDB4MTViZWU3OGMsIDB4MTZkOTk4NjQsIDB4M2JjODJjMWYsIDB4M2JhM2ZkZTcsIDB4MTczNzYzYzksIDB4MTg0ZjZhYWIsIDB4M2IzNDAxYmIsIA0KKwkweDNiMGQ4OTA5LCAweDE4YWM0Yjg3LCAweDE5YzE3ZDQ0LCAweDNhOTZiNjM2LCAweDNhNmRmOGY4LCAweDFhMWQ2NTQ0LCAweDFiMmY5NzFlLCAweDM5ZjA2MWQyLCANCisJMHgzOWM1NjY0ZiwgMHgxYjhhNzgxNSwgMHgxYzk5N2ZjNCwgMHgzOTQxMWUzMywgMHgzOTEzZWIwZSwgMHgxY2YzNGJhZiwgMHgxZGZlZmY2NywgMHgzODg5MDY2MywgDQorCTB4Mzg1OWEyOTIsIDB4MWU1N2E4NmQsIDB4MWY1ZmRlZTYsIDB4MzdjODM2YzIsIDB4Mzc5NmE5OTYsIDB4MWZiNzU3NWMsIDB4MjBiYmU3ZDgsIDB4MzZmZWNkMGUsIA0KKwkweDM2Y2IxZTJhLCAweDIxMTIyMjQwLCAweDIyMTJlNDkyLCAweDM2MmNlODU1LCAweDM1ZjcxZmIxLCAweDIyNjdkM2EwLCAweDIzNjRhMDJlLCAweDM1NTJhOGY0LCANCisJMHgzNTFhY2VkZCwgMHgyM2I4MzZjYSwgMHgyNGIwZTY5OSwgMHgzNDcwMzA5NSwgMHgzNDM2NGRhNiwgMHgyNTAzMTdkZiwgMHgyNWY3ODQ5NywgMHgzMzg1YTIyMiwgDQorCTB4MzM0OWJmNDgsIDB4MjY0ODQzZDksIDB4MjczODQ3YzgsIDB4MzI5MzIxYzcsIDB4MzI1NTQ4NDAsIDB4Mjc4Nzg4OTMsIDB4Mjg3MmZlYjYsIDB4MzE5OGQ0ZWEsIA0KKwkweDMxNTkwZTNlLCAweDI4YzBiNGQyLCAweDI5YTc3OGRiLCAweDMwOTZlMjIzLCAweDMwNTUzODI4LCAweDI5ZjM5ODRjLCAweDJhZDU4NmEzLCAweDJmOGQ3MTNhLCANCisJMHgyZjQ5ZWUwZiwgMHgyYjIwMDNhYywgMHgyYmZjZjk3YywgMHgyZTdjYWIxYywgMHgyZTM3NTkyYywgMHgyYzQ1YzhhMCwgMHgyZDFkYTNkNSwgMHgyZDY0YjlkYSwgDQorCS8qIDEwMjQgKi8NCisJMHgzZmZmZmZiMSwgMHgwMDA2NDg3ZiwgMHgwMDJiZmI3NCwgMHgzZmZmZjBlMywgMHgzZmZmZTcwNSwgMHgwMDM4OGM2ZSwgMHgwMDVlM2Y0YywgMHgzZmZmYmE5YiwgDQorCTB4M2ZmZmE2ZGUsIDB4MDA2YWQwM2IsIDB4MDA5MDgyZWEsIDB4M2ZmZjVjZDgsIDB4M2ZmZjNmM2MsIDB4MDA5ZDEzYzUsIDB4MDBjMmM2MmYsIDB4M2ZmZWQ3OWIsIA0KKwkweDNmZmViMDIxLCAweDAwY2Y1NmVmLCAweDAwZjUwOGZjLCAweDNmZmUyYWU1LCAweDNmZmRmOThjLCAweDAxMDE5OTk4LCAweDAxMjc0YjMxLCAweDNmZmQ1NmI1LCANCisJMHgzZmZkMWI3ZSwgMHgwMTMzZGJhMywgMHgwMTU5OGNiMSwgMHgzZmZjNWIwYywgMHgzZmZjMTVmNywgMHgwMTY2MWNmMCwgMHgwMThiY2Q1YiwgMHgzZmZiMzdlYywgDQorCTB4M2ZmYWU4ZjksIDB4MDE5ODVkNjAsIDB4MDFiZTBkMTEsIDB4M2ZmOWVkNTMsIDB4M2ZmOTk0ODMsIDB4MDFjYTljZDQsIDB4MDFmMDRiYjQsIDB4M2ZmODdiNDQsIA0KKwkweDNmZjgxODk2LCAweDAxZmNkYjJlLCAweDAyMjI4OTI0LCAweDNmZjZlMWJmLCAweDNmZjY3NTM0LCAweDAyMmYxODRkLCAweDAyNTRjNTQ0LCAweDNmZjUyMGM1LCANCisJMHgzZmY0YWE1ZCwgMHgwMjYxNTQxNCwgMHgwMjg2ZmZmMywgMHgzZmYzMzg1OCwgMHgzZmYyYjgxMywgMHgwMjkzOGU2MiwgMHgwMmI5MzkxNCwgMHgzZmYxMjg3OCwgDQorCTB4M2ZmMDllNTYsIDB4MDJjNWM3MWEsIDB4MDJlYjcwODYsIDB4M2ZlZWYxMjYsIDB4M2ZlZTVkMjgsIDB4MDJmN2ZlMWMsIDB4MDMxZGE2MmIsIDB4M2ZlYzkyNjUsIA0KKwkweDNmZWJmNDhiLCAweDAzMmEzMzQ5LCAweDAzNGZkOWU1LCAweDNmZWEwYzM1LCAweDNmZTk2NDgwLCAweDAzNWM2NjgyLCAweDAzODIwYjkzLCAweDNmZTc1ZTk4LCANCisJMHgzZmU2YWQwOCwgMHgwMzhlOTdhOSwgMHgwM2I0M2IxNywgMHgzZmU0ODk5MCwgMHgzZmUzY2UyNiwgMHgwM2MwYzY5ZSwgMHgwM2U2Njg1MiwgMHgzZmUxOGQxZiwgDQorCTB4M2ZlMGM3ZGEsIDB4MDNmMmYzNDIsIDB4MDQxODkzMjYsIDB4M2ZkZTY5NDUsIDB4M2ZkZDlhMjcsIDB4MDQyNTFkNzcsIDB4MDQ0YWJiNzMsIDB4M2ZkYjFlMDYsIA0KKwkweDNmZGE0NTBmLCAweDA0NTc0NTFkLCAweDA0N2NlMTFhLCAweDNmZDdhYjY0LCAweDNmZDZjODk0LCAweDA0ODk2YTE2LCAweDA0YWYwM2ZjLCAweDNmZDQxMTVmLCANCisJMHgzZmQzMjRiNywgMHgwNGJiOGM0MiwgMHgwNGUxMjNmYSwgMHgzZmQwNGZmYywgMHgzZmNmNTk3YywgMHgwNGVkYWI4MywgMHgwNTEzNDBmNiwgMHgzZmNjNjczYiwgDQorCTB4M2ZjYjY2ZTQsIDB4MDUxZmM3YjksIDB4MDU0NTVhZDEsIDB4M2ZjODU3MWYsIDB4M2ZjNzRjZjMsIDB4MDU1MWUwYzcsIDB4MDU3NzcxNmIsIDB4M2ZjNDFmYWMsIA0KKwkweDNmYzMwYmFhLCAweDA1ODNmNjhjLCAweDA1YTk4NGE2LCAweDNmYmZjMGUzLCAweDNmYmVhMzBjLCAweDA1YjYwOGViLCAweDA1ZGI5NDYzLCAweDNmYmIzYWM3LCANCisJMHgzZmJhMTMxYiwgMHgwNWU4MTdjMywgMHgwNjBkYTA4MywgMHgzZmI2OGQ1YiwgMHgzZmI1NWJkYywgMHgwNjFhMjJmNywgMHgwNjNmYThlNywgMHgzZmIxYjhhMiwgDQorCTB4M2ZiMDdkNTAsIDB4MDY0YzJhNjcsIDB4MDY3MWFkNzEsIDB4M2ZhY2JjOWYsIDB4M2ZhYjc3N2IsIDB4MDY3ZTJkZjUsIDB4MDZhM2FlMDAsIDB4M2ZhNzk5NTQsIA0KKwkweDNmYTY0YTVmLCAweDA2YjAyZDgxLCAweDA2ZDVhYTc3LCAweDNmYTI0ZWM2LCAweDNmYTBmNjAwLCAweDA2ZTIyOGVlLCAweDA3MDdhMmI3LCAweDNmOWNkY2Y3LCANCisJMHgzZjliN2E2MiwgMHgwNzE0MjAxYiwgMHgwNzM5OTZhMSwgMHgzZjk3NDNlYiwgMHgzZjk1ZDc4NywgMHgwNzQ2MTJlYiwgMHgwNzZiODYxNiwgMHgzZjkxODNhNSwgDQorCTB4M2Y5MDBkNzIsIDB4MDc3ODAxM2QsIDB4MDc5ZDcwZjcsIDB4M2Y4YjljMjgsIDB4M2Y4YTFjMjksIDB4MDdhOWVhZjUsIDB4MDdjZjU3MjYsIDB4M2Y4NThkNzksIA0KKwkweDNmODQwM2FlLCAweDA3ZGJjZmYyLCAweDA4MDEzODgzLCAweDNmN2Y1NzliLCAweDNmN2RjNDA1LCAweDA4MGRiMDE2LCAweDA4MzMxNGYxLCAweDNmNzhmYTkyLCANCisJMHgzZjc3NWQzMSwgMHgwODNmOGI0MywgMHgwODY0ZWM0ZiwgMHgzZjcyNzY2MSwgMHgzZjcwY2YzOCwgMHgwODcxNjE1OSwgMHgwODk2YmU4MCwgMHgzZjZiY2IwZSwgDQorCTB4M2Y2YTFhMWMsIDB4MDhhMzMyM2EsIDB4MDhjODhiNjUsIDB4M2Y2NGY4OWIsIDB4M2Y2MzNkZTIsIDB4MDhkNGZkYzYsIDB4MDhmYTUyZGUsIDB4M2Y1ZGZmMGUsIA0KKwkweDNmNWMzYThmLCAweDA5MDZjM2UwLCAweDA5MmMxNGNlLCAweDNmNTZkZTZhLCAweDNmNTUxMDI2LCAweDA5Mzg4NDY5LCAweDA5NWRkMTE2LCAweDNmNGY5NmI0LCANCisJMHgzZjRkYmVhYywgMHgwOTZhM2Y0MiwgMHgwOThmODc5NiwgMHgzZjQ4MjdmMCwgMHgzZjQ2NDYyNiwgMHgwOTliZjQ0YywgMHgwOWMxMzgzMSwgMHgzZjQwOTIyMywgDQorCTB4M2YzZWE2OTcsIDB4MDljZGEzNjgsIDB4MDlmMmUyYzcsIDB4M2YzOGQ1NTIsIDB4M2YzNmUwMDYsIDB4MDlmZjRjNzgsIDB4MGEyNDg3M2EsIDB4M2YzMGYxODEsIA0KKwkweDNmMmVmMjc2LCAweDBhMzBlZjVlLCAweDBhNTYyNTZjLCAweDNmMjhlNmI2LCAweDNmMjZkZGVjLCAweDBhNjI4YmZhLCAweDBhODdiZDNkLCAweDNmMjBiNGY1LCANCisJMHgzZjFlYTI2ZSwgMHgwYTk0MjIyZiwgMHgwYWI5NGU4ZiwgMHgzZjE4NWM0MywgMHgzZjE2NDAwMSwgMHgwYWM1YjFkYywgMHgwYWVhZDk0NCwgMHgzZjBmZGNhNSwgDQorCTB4M2YwZGI2YTksIDB4MGFmNzNhZTUsIDB4MGIxYzVkM2QsIDB4M2YwNzM2MjEsIDB4M2YwNTA2NmQsIDB4MGIyOGJkMmEsIDB4MGI0ZGRhNWMsIDB4M2VmZTY4YmMsIA0KKwkweDNlZmMyZjUwLCAweDBiNWEzODhkLCAweDBiN2Y1MDgxLCAweDNlZjU3NDdiLCAweDNlZjMzMTVhLCAweDBiOGJhY2YwLCAweDBiYjBiZjhmLCAweDNlZWM1OTY1LCANCisJMHgzZWVhMGM4ZSwgMHgwYmJkMWEzMywgMHgwYmUyMjc2NiwgMHgzZWUzMTc3ZSwgMHgzZWUwYzBmNCwgMHgwYmVlODAzOCwgMHgwYzEzODdlOSwgMHgzZWQ5YWVjYywgDQorCTB4M2VkNzRlOTEsIDB4MGMxZmRlZTEsIDB4MGM0NGUwZjksIDB4M2VkMDFmNTUsIDB4M2VjZGI1NmEsIDB4MGM1MTM2MTAsIDB4MGM3NjMyNzgsIDB4M2VjNjY5MjAsIA0KKwkweDNlYzNmNTg1LCAweDBjODI4NWE1LCAweDBjYTc3YzQ3LCAweDNlYmM4YzMxLCAweDNlYmEwZWU5LCAweDBjYjNjZDg0LCAweDBjZDhiZTQ3LCAweDNlYjI4ODhmLCANCisJMHgzZWIwMDE5YywgMHgwY2U1MGQ4YywgMHgwZDA5Zjg1YiwgMHgzZWE4NWU0MSwgMHgzZWE1Y2RhMywgMHgwZDE2NDVhMCwgMHgwZDNiMmE2NCwgMHgzZTllMGQ0YywgDQorCTB4M2U5YjczMDYsIDB4MGQ0Nzc1YTEsIDB4MGQ2YzU0NDMsIDB4M2U5Mzk1YjcsIDB4M2U5MGYxY2EsIDB4MGQ3ODlkNzEsIDB4MGQ5ZDc1ZGIsIDB4M2U4OGY3ODgsIA0KKwkweDNlODY0OWY1LCAweDBkYTliY2YyLCAweDBkY2U4ZjBkLCAweDNlN2UzMmM2LCAweDNlN2I3YjkwLCAweDBkZGFkNDA2LCAweDBkZmY5ZmJhLCAweDNlNzM0Nzc4LCANCisJMHgzZTcwODY5ZiwgMHgwZTBiZTI4ZSwgMHgwZTMwYTdjNSwgMHgzZTY4MzVhNCwgMHgzZTY1NmIyYiwgMHgwZTNjZTg2YiwgMHgwZTYxYTcwZiwgMHgzZTVjZmQ1MSwgDQorCTB4M2U1YTI5MzksIDB4MGU2ZGU1ODAsIDB4MGU5MjlkN2EsIDB4M2U1MTllODYsIDB4M2U0ZWMwZDEsIDB4MGU5ZWQ5YWYsIDB4MGVjMzhhZTgsIDB4M2U0NjE5NGEsIA0KKwkweDNlNDMzMWZhLCAweDBlY2ZjNGQ5LCAweDBlZjQ2ZjNiLCAweDNlM2E2ZGE0LCAweDNlMzc3Y2JiLCAweDBmMDBhNmRmLCAweDBmMjU0YTUzLCAweDNlMmU5YjljLCANCisJMHgzZTJiYTExYiwgMHgwZjMxN2ZhNSwgMHgwZjU2MWMxNSwgMHgzZTIyYTMzOCwgMHgzZTFmOWYyMSwgMHgwZjYyNGYwYywgMHgwZjg2ZTQ2MCwgMHgzZTE2ODQ4MCwgDQorCTB4M2UxMzc2ZDUsIDB4MGY5MzE0ZjUsIDB4MGZiN2EzMTcsIDB4M2UwYTNmN2IsIDB4M2UwNzI4M2YsIDB4MGZjM2QxNDMsIDB4MGZlODU4MWQsIDB4M2RmZGQ0MzIsIA0KKwkweDNkZmFiMzY1LCAweDBmZjQ4M2Q3LCAweDEwMTkwMzUyLCAweDNkZjE0MmFiLCAweDNkZWUxODUxLCAweDEwMjUyYzk0LCAweDEwNDlhNDlhLCAweDNkZTQ4YWVmLCANCisJMHgzZGUxNTcwOCwgMHgxMDU1Y2I1YiwgMHgxMDdhM2JkNSwgMHgzZGQ3YWQwNSwgMHgzZGQ0NmY5NCwgMHgxMDg2NjAwZSwgMHgxMGFhYzhlNiwgMHgzZGNhYThmNSwgDQorCTB4M2RjNzYxZmMsIDB4MTBiNmVhOTAsIDB4MTBkYjRiYWYsIDB4M2RiZDdlYzcsIDB4M2RiYTJlNDgsIDB4MTBlNzZhYzMsIDB4MTEwYmM0MTMsIDB4M2RiMDJlODQsIA0KKwkweDNkYWNkNDgxLCAweDExMTdlMDg4LCAweDExM2MzMWYzLCAweDNkYTJiODM0LCAweDNkOWY1NGFmLCAweDExNDg0YmMyLCAweDExNmM5NTMxLCAweDNkOTUxYmRlLCANCisJMHgzZDkxYWVkOSwgMHgxMTc4YWM1MywgMHgxMTljZWRhZiwgMHgzZDg3NTk4YywgMHgzZDgzZTMwOSwgMHgxMWE5MDIxZCwgMHgxMWNkM2I1MCwgMHgzZDc5NzE0NSwgDQorCTB4M2Q3NWYxNDcsIDB4MTFkOTRkMDIsIDB4MTFmZDdkZjYsIDB4M2Q2YjYzMTMsIDB4M2Q2N2Q5OWIsIDB4MTIwOThjZTUsIDB4MTIyZGI1ODMsIDB4M2Q1ZDJlZmUsIA0KKwkweDNkNTk5YzBlLCAweDEyMzljMWE3LCAweDEyNWRlMWRhLCAweDNkNGVkNTBmLCAweDNkNGIzOGFhLCAweDEyNjllYjJiLCAweDEyOGUwMmRjLCAweDNkNDA1NTRlLCANCisJMHgzZDNjYWY3NiwgMHgxMjlhMDk1NCwgMHgxMmJlMTg2YywgMHgzZDMxYWZjNSwgMHgzZDJlMDA3YywgMHgxMmNhMWMwMywgMHgxMmVlMjI2YywgMHgzZDIyZTQ3YywgDQorCTB4M2QxZjJiYzUsIDB4MTJmYTIzMWIsIDB4MTMxZTIwYzAsIDB4M2QxM2YzN2UsIDB4M2QxMDMxNWEsIDB4MTMyYTFlN2UsIDB4MTM0ZTEzNDgsIDB4M2QwNGRjZDIsIA0KKwkweDNkMDExMTQ1LCAweDEzNWEwZTBlLCAweDEzN2RmOWU3LCAweDNjZjVhMDgyLCAweDNjZjFjYjhlLCAweDEzODlmMWFmLCAweDEzYWRkNDgxLCAweDNjZTYzZTk4LCANCisJMHgzY2UyNjAzZiwgMHgxM2I5Yzk0MywgMHgxM2RkYTJmNywgMHgzY2Q2YjcxZSwgMHgzY2QyY2Y2MiwgMHgxM2U5OTRhYiwgMHgxNDBkNjUyYywgMHgzY2M3MGExYywgDQorCTB4M2NjMzE4ZmYsIDB4MTQxOTUzY2IsIDB4MTQzZDFiMDIsIDB4M2NiNzM3OWMsIDB4M2NiMzNkMjIsIDB4MTQ0OTA2ODUsIDB4MTQ2Y2M0NWMsIDB4M2NhNzNmYTksIA0KKwkweDNjYTMzYmQzLCAweDE0NzhhY2JjLCAweDE0OWM2MTFkLCAweDNjOTcyMjRjLCAweDNjOTMxNTFkLCAweDE0YTg0NjUyLCAweDE0Y2JmMTI3LCAweDNjODZkZjhlLCANCisJMHgzYzgyYzkwOSwgMHgxNGQ3ZDMyYSwgMHgxNGZiNzQ1ZSwgMHgzYzc2Nzc3YiwgMHgzYzcyNTdhMiwgMHgxNTA3NTMyNywgMHgxNTJhZWFhMywgMHgzYzY1ZWExYywgDQorCTB4M2M2MWMwZjEsIDB4MTUzNmM2MmIsIDB4MTU1YTUzZDksIDB4M2M1NTM3N2IsIDB4M2M1MTA1MDEsIDB4MTU2NjJjMTgsIDB4MTU4OWFmZTMsIDB4M2M0NDVmYTIsIA0KKwkweDNjNDAyM2RkLCAweDE1OTU4NGQzLCAweDE1YjhmZWE0LCAweDNjMzM2MjlkLCAweDNjMmYxZDhlLCAweDE1YzRkMDNlLCAweDE1ZTgzZmZmLCAweDNjMjI0MDc1LCANCisJMHgzYzFkZjIxZiwgMHgxNWY0MGUzYSwgMHgxNjE3NzNkNiwgMHgzYzEwZjkzNSwgMHgzYzBjYTE5YiwgMHgxNjIzM2VhYywgMHgxNjQ2OWEwZCwgMHgzYmZmOGNlOCwgDQorCTB4M2JmYjJjMGMsIDB4MTY1MjYxNzYsIDB4MTY3NWIyODYsIDB4M2JlZGZiOTksIDB4M2JlOTkxN2UsIDB4MTY4MTc2N2MsIDB4MTZhNGJkMjUsIDB4M2JkYzQ1NTIsIA0KKwkweDNiZDdkMWZhLCAweDE2YjA3ZDlmLCAweDE2ZDNiOWNjLCAweDNiY2E2YTFkLCAweDNiYzVlZDhkLCAweDE2ZGY3NmMzLCAweDE3MDJhODVlLCAweDNiYjg2YTA4LCANCisJMHgzYmIzZTQ0MCwgMHgxNzBlNjFjYywgMHgxNzMxODhiZSwgMHgzYmE2NDUxYiwgMHgzYmExYjYyMCwgMHgxNzNkM2U5YiwgMHgxNzYwNWFkMCwgMHgzYjkzZmI2MywgDQorCTB4M2I4ZjYzMzcsIDB4MTc2YzBkMTUsIDB4MTc4ZjFlNzYsIDB4M2I4MThjZWIsIDB4M2I3Y2ViOTAsIDB4MTc5YWNkMWMsIDB4MTdiZGQzOTQsIDB4M2I2ZWY5YmUsIA0KKwkweDNiNmE0ZjM4LCAweDE3Yzk3ZTkzLCAweDE3ZWM3YTBkLCAweDNiNWM0MWU4LCAweDNiNTc4ZTM5LCAweDE3ZjgyMTVlLCAweDE4MWIxMWM0LCAweDNiNDk2NTc0LCANCisJMHgzYjQ0YThhMCwgMHgxODI2YjU2MSwgMHgxODQ5OWE5ZCwgMHgzYjM2NjQ2ZSwgMHgzYjMxOWU3NywgMHgxODU1M2E3ZCwgMHgxODc4MTQ3YSwgMHgzYjIzM2VlMSwgDQorCTB4M2IxZTZmY2EsIDB4MTg4M2IwOTcsIDB4MThhNjdmM2YsIDB4M2IwZmY0ZDksIDB4M2IwYjFjYTYsIDB4MThiMjE3OTEsIDB4MThkNGRhZDAsIDB4M2FmYzg2NjMsIA0KKwkweDNhZjdhNTE2LCAweDE4ZTA2ZjUwLCAweDE5MDMyNzBmLCAweDNhZThmMzhiLCAweDNhZTQwOTI2LCAweDE5MGViN2I3LCAweDE5MzE2M2UxLCAweDNhZDUzYzViLCANCisJMHgzYWQwNDhlMywgMHgxOTNjZjBhOSwgMHgxOTVmOTEyOCwgMHgzYWMxNjBlMSwgMHgzYWJjNjQ1OCwgMHgxOTZiMWEwOSwgMHgxOThkYWVjOCwgMHgzYWFkNjEyOSwgDQorCTB4M2FhODViOTIsIDB4MTk5OTMzYmIsIDB4MTliYmJjYTYsIDB4M2E5OTNkM2UsIDB4M2E5NDJlOWQsIDB4MTljNzNkYTMsIDB4MTllOWJhYTMsIDB4M2E4NGY1MmYsIA0KKwkweDNhN2ZkZDg2LCAweDE5ZjUzN2E0LCAweDFhMTdhOGE1LCAweDNhNzA4OTA2LCAweDNhNmI2ODU5LCAweDFhMjMyMWEyLCAweDFhNDU4NjhlLCAweDNhNWJmOGQxLCANCisJMHgzYTU2Y2YyMywgMHgxYTUwZmI4MSwgMHgxYTczNTQ0MiwgMHgzYTQ3NDQ5YywgMHgzYTQyMTFmMCwgMHgxYTdlYzUyNCwgMHgxYWExMTFhNiwgMHgzYTMyNmM3NCwgDQorCTB4M2EyZDMwY2QsIDB4MWFhYzdlNmYsIDB4MWFjZWJlOWQsIDB4M2ExZDcwNjYsIDB4M2ExODJiYzgsIDB4MWFkYTI3NDYsIDB4MWFmYzViMGEsIDB4M2EwODUwN2YsIA0KKwkweDNhMDMwMmVkLCAweDFiMDdiZjhjLCAweDFiMjllNmQyLCAweDM5ZjMwY2NjLCAweDM5ZWRiNjQ5LCAweDFiMzU0NzI3LCAweDFiNTc2MWQ4LCAweDM5ZGRhNTVhLCANCisJMHgzOWQ4NDVlOSwgMHgxYjYyYmRmOCwgMHgxYjg0Y2MwMSwgMHgzOWM4MWEzNiwgMHgzOWMyYjFkYSwgMHgxYjkwMjNlNSwgMHgxYmIyMjUzMCwgMHgzOWIyNmI2ZCwgDQorCTB4MzlhY2ZhMmIsIDB4MWJiZDc4ZDIsIDB4MWJkZjZkNGEsIDB4Mzk5Yzk5MGQsIDB4Mzk5NzFlZTcsIDB4MWJlYWJjYTEsIDB4MWMwY2E0MzIsIDB4Mzk4NmEzMjQsIA0KKwkweDM5ODEyMDFlLCAweDFjMTdlZjM5LCAweDFjMzljOWNkLCAweDM5NzA4OWJmLCAweDM5NmFmZGRjLCAweDFjNDUxMDdjLCAweDFjNjZkZGZlLCAweDM5NWE0Y2ViLCANCisJMHgzOTU0YjgyZSwgMHgxYzcyMjA0ZiwgMHgxYzkzZTBhYiwgMHgzOTQzZWNiNiwgMHgzOTNlNGYyMywgMHgxYzlmMWU5NiwgMHgxY2MwZDFiNiwgMHgzOTJkNjkyZiwgDQorCTB4MzkyN2MyYzksIDB4MWNjYzBiMzUsIDB4MWNlZGIxMDYsIDB4MzkxNmMyNjIsIDB4MzkxMTEzMmQsIDB4MWNmOGU2MTEsIDB4MWQxYTdlN2QsIDB4MzhmZmY4NWUsIA0KKwkweDM4ZmE0MDVlLCAweDFkMjVhZjBkLCAweDFkNDczYTAwLCAweDM4ZTkwYjMxLCAweDM4ZTM0YTY5LCAweDFkNTI2NjBmLCAweDFkNzNlMzc0LCAweDM4ZDFmYWU5LCANCisJMHgzOGNjMzE1ZCwgMHgxZDdmMGFmYiwgMHgxZGEwN2FiYywgMHgzOGJhYzc5NSwgMHgzOGI0ZjU0NywgMHgxZGFiOWRiNSwgMHgxZGNjZmZiZiwgMHgzOGEzNzE0MiwgDQorCTB4Mzg5ZDk2MzcsIDB4MWRkODFlMjEsIDB4MWRmOTcyNWYsIDB4Mzg4YmY3ZmYsIDB4Mzg4NjE0M2IsIDB4MWUwNDhjMjQsIDB4MWUyNWQyODIsIDB4Mzg3NDViZGIsIA0KKwkweDM4NmU2ZjYwLCAweDFlMzBlN2E0LCAweDFlNTIyMDBjLCAweDM4NWM5Y2UzLCAweDM4NTZhN2I2LCAweDFlNWQzMDg0LCAweDFlN2U1YWUyLCAweDM4NDRiYjI4LCANCisJMHgzODNlYmQ0YywgMHgxZTg5NjZhOCwgMHgxZWFhODJlOSwgMHgzODJjYjZiNywgMHgzODI2YjAzMCwgMHgxZWI1ODlmNywgMHgxZWQ2OTgwNSwgMHgzODE0OGY5ZiwgDQorCTB4MzgwZTgwNzEsIDB4MWVlMTlhNTQsIDB4MWYwMjlhMWMsIDB4MzdmYzQ1ZWYsIDB4MzdmNjJlMWQsIDB4MWYwZDk3YTUsIDB4MWYyZTg5MTEsIDB4MzdlM2Q5YjcsIA0KKwkweDM3ZGRiOTQ1LCAweDFmMzk4MWNlLCAweDFmNWE2NGNiLCAweDM3Y2I0YjA0LCAweDM3YzUyMWY2LCAweDFmNjU1OGI1LCAweDFmODYyZDJkLCAweDM3YjI5OWU3LCANCisJMHgzN2FjNjg0MSwgMHgxZjkxMWMzZCwgMHgxZmIxZTIxZCwgMHgzNzk5YzY2ZiwgMHgzNzkzOGMzNCwgMHgxZmJjY2M0ZCwgMHgxZmRkODM4MSwgMHgzNzgwZDBhYSwgDQorCTB4Mzc3YThkZGYsIDB4MWZlODY4YzgsIDB4MjAwOTExM2MsIDB4Mzc2N2I4YTksIDB4Mzc2MTZkNTEsIDB4MjAxM2YxOTYsIDB4MjAzNDhiMzUsIDB4Mzc0ZTdlN2IsIA0KKwkweDM3NDgyYTlhLCAweDIwM2Y2Njk5LCAweDIwNWZmMTRmLCAweDM3MzUyMjJmLCAweDM3MmVjNWM5LCAweDIwNmFjN2I4LCAweDIwOGI0MzcyLCAweDM3MWJhM2Q0LCANCisJMHgzNzE1M2VlZSwgMHgyMDk2MTRkOSwgMHgyMGI2ODE4MSwgMHgzNzAyMDM3YywgMHgzNmZiOTYxOCwgMHgyMGMxNGRkZiwgMHgyMGUxYWI2MywgMHgzNmU4NDEzNSwgDQorCTB4MzZlMWNiNTgsIDB4MjBlYzcyYjEsIDB4MjEwY2MwZmMsIDB4MzZjZTVkMTAsIDB4MzZjN2RlYmQsIDB4MjExNzgzMzQsIDB4MjEzN2MyMzIsIDB4MzZiNDU3MWIsIA0KKwkweDM2YWRkMDU4LCAweDIxNDI3ZjRkLCAweDIxNjJhZWVhLCAweDM2OWEyZjY5LCAweDM2OTNhMDM4LCAweDIxNmQ2NmUyLCAweDIxOGQ4NzBiLCAweDM2N2ZlNjA4LCANCisJMHgzNjc5NGU2ZSwgMHgyMTk4MzlkOCwgMHgyMWI4NGE3OSwgMHgzNjY1N2IwOCwgMHgzNjVlZGIwOSwgMHgyMWMyZjgxNSwgMHgyMWUyZjkxYSwgMHgzNjRhZWU3YiwgDQorCTB4MzY0NDQ2MWIsIDB4MjFlZGExN2YsIDB4MjIwZDkyZDQsIDB4MzYzMDQwNzAsIDB4MzYyOThmYjQsIDB4MjIxODM1ZmIsIDB4MjIzODE3OGQsIDB4MzYxNTcwZjgsIA0KKwkweDM2MGViN2UzLCAweDIyNDJiNTZmLCAweDIyNjI4NzI5LCAweDM1ZmE4MDIzLCAweDM1ZjNiZWJhLCAweDIyNmQxZmMxLCAweDIyOGNlMTkxLCAweDM1ZGY2ZTAzLCANCisJMHgzNWQ4YTQ0OSwgMHgyMjk3NzRkNywgMHgyMmI3MjZhOCwgMHgzNWM0M2FhNywgMHgzNWJkNjhhMSwgMHgyMmMxYjQ5NiwgMHgyMmUxNTY1NSwgMHgzNWE4ZTYyMSwgDQorCTB4MzVhMjBiZDMsIDB4MjJlYmRlZTUsIDB4MjMwYjcwN2UsIDB4MzU4ZDcwODEsIDB4MzU4NjhkZWYsIDB4MjMxNWYzYTgsIDB4MjMzNTc1MDksIDB4MzU3MWQ5ZDksIA0KKwkweDM1NmFlZjA4LCAweDIzM2ZmMmM4LCAweDIzNWY2M2RjLCAweDM1NTYyMjM5LCAweDM1NGYyZjJjLCAweDIzNjlkYzI5LCAweDIzODkzY2RkLCAweDM1M2E0OWIyLCANCisJMHgzNTMzNGU2ZiwgMHgyMzkzYWZiMiwgMHgyM2IyZmZmMywgMHgzNTFlNTA1NiwgMHgzNTE3NGNlMCwgMHgyM2JkNmQ0OCwgMHgyM2RjYWQwMywgMHgzNTAyMzYzNiwgDQorCTB4MzRmYjJhOTIsIDB4MjNlNzE0ZDMsIDB4MjQwNjQzZjQsIDB4MzRlNWZiNjMsIDB4MzRkZWU3OTUsIDB4MjQxMGE2MzksIDB4MjQyZmM0YWQsIDB4MzRjOTlmZWYsIA0KKwkweDM0YzI4M2ZiLCAweDI0M2EyMTVmLCAweDI0NTkyZjEzLCAweDM0YWQyM2ViLCAweDM0YTVmZmQ1LCAweDI0NjM4NjJjLCAweDI0ODI4MzBkLCAweDM0OTA4NzY4LCANCisJMHgzNDg5NWIzNiwgMHgyNDhjZDQ4NywgMHgyNGFiYzA4MiwgMHgzNDczY2E3OSwgMHgzNDZjOTYyZiwgMHgyNGI2MGM1NywgMHgyNGQ0ZTc1NywgMHgzNDU2ZWQyZiwgDQorCTB4MzQ0ZmIwZDEsIDB4MjRkZjJkODEsIDB4MjRmZGY3NzUsIDB4MzQzOWVmOWMsIDB4MzQzMmFiMmUsIDB4MjUwODM3ZWQsIDB4MjUyNmYwYzEsIDB4MzQxY2QxZDIsIA0KKwkweDM0MTU4NTU5LCAweDI1MzEyYjgxLCAweDI1NGZkMzIzLCAweDMzZmY5M2UyLCAweDMzZjgzZjYyLCAweDI1NWEwODIzLCAweDI1Nzg5ZTgwLCAweDMzZTIzNWRmLCANCisJMHgzM2RhZDk1ZSwgMHgyNTgyY2RiYywgMHgyNWExNTJjMCwgMHgzM2M0YjdkYiwgMHgzM2JkNTM1YywgMHgyNWFiN2MzMCwgMHgyNWM5ZWZjYSwgMHgzM2E3MTllOCwgDQorCTB4MzM5ZmFkNzAsIDB4MjVkNDEzNjksIDB4MjVmMjc1ODQsIDB4MzM4OTVjMTgsIDB4MzM4MWU3YWMsIDB4MjVmYzkzNGIsIDB4MjYxYWUzZDYsIDB4MzM2YjdlN2UsIA0KKwkweDMzNjQwMjIzLCAweDI2MjRmYmJmLCAweDI2NDMzYWE3LCAweDMzNGQ4MTJkLCAweDMzNDVmY2U2LCAweDI2NGQ0Y2FjLCAweDI2NmI3OWRkLCAweDMzMmY2NDM1LCANCisJMHgzMzI3ZDgwOCwgMHgyNjc1ODVmOCwgMHgyNjkzYTE2MSwgMHgzMzExMjdhYiwgMHgzMzA5OTM5YywgMHgyNjlkYTc4YiwgMHgyNmJiYjExOSwgMHgzMmYyY2JhMSwgDQorCTB4MzJlYjJmYjUsIDB4MjZjNWIxNGMsIDB4MjZlM2E4ZWMsIDB4MzJkNDUwMjksIDB4MzJjY2FjNjQsIDB4MjZlZGEzMjIsIDB4MjcwYjg4YzIsIDB4MzJiNWI1NTcsIA0KKwkweDMyYWUwOWJlLCAweDI3MTU3Y2Y1LCAweDI3MzM1MDgyLCAweDMyOTZmYjNkLCAweDMyOGY0N2Q1LCAweDI3M2QzZWFjLCAweDI3NWIwMDE0LCAweDMyNzgyMWVlLCANCisJMHgzMjcwNjZiYywgMHgyNzY0ZTgyZiwgMHgyNzgyOTc2MCwgMHgzMjU5Mjk3ZCwgMHgzMjUxNjY4NiwgMHgyNzhjNzk2NSwgMHgyN2FhMTY0YywgMHgzMjNhMTFmZSwgDQorCTB4MzIzMjQ3NDYsIDB4MjdiM2YyMzUsIDB4MjdkMTdjYzEsIDB4MzIxYWRiODMsIDB4MzIxMzA5MGYsIDB4MjdkYjUyODgsIDB4MjdmOGNhYTUsIDB4MzFmYjg2MjAsIA0KKwkweDMxZjNhYmY1LCAweDI4MDI5YTQ1LCAweDI4MWZmZmUyLCAweDMxZGMxMWU4LCAweDMxZDQzMDBiLCAweDI4MjljOTU0LCAweDI4NDcxYzVlLCAweDMxYmM3ZWVlLCANCisJMHgzMWI0OTU2NCwgMHgyODUwZGY5ZCwgMHgyODZlMjAwMiwgMHgzMTljY2Q0NiwgMHgzMTk0ZGMxNCwgMHgyODc3ZGQwNywgMHgyODk1MGFiNiwgMHgzMTdjZmQwNCwgDQorCTB4MzE3NTA0MmUsIDB4Mjg5ZWMxN2EsIDB4MjhiYmRjNjEsIDB4MzE1ZDBlM2IsIDB4MzE1NTBkYzYsIDB4MjhjNThjZGYsIDB4MjhlMjk0ZWIsIDB4MzEzZDAwZmYsIA0KKwkweDMxMzRmOGYxLCAweDI4ZWMzZjFlLCAweDI5MDkzNDNlLCAweDMxMWNkNTY0LCAweDMxMTRjNWMwLCAweDI5MTJkODFmLCAweDI5MmZiYTQwLCAweDMwZmM4YjdkLCANCisJMHgzMGY0NzQ0OSwgMHgyOTM5NTdjOSwgMHgyOTU2MjZkYSwgMHgzMGRjMjM1ZSwgMHgzMGQ0MDRhMCwgMHgyOTVmYmUwNiwgMHgyOTdjNzlmNSwgMHgzMGJiOWQxYywgDQorCTB4MzBiMzc2ZDgsIDB4Mjk4NjBhYmQsIDB4MjlhMmIzNzgsIDB4MzA5YWY4Y2EsIDB4MzA5MmNiMDUsIDB4MjlhYzNkZDcsIDB4MjljOGQzNGQsIDB4MzA3YTM2N2MsIA0KKwkweDMwNzIwMTNjLCAweDI5ZDI1NzNjLCAweDI5ZWVkOTViLCAweDMwNTk1NjQ4LCAweDMwNTExOTkxLCAweDI5Zjg1NmQ1LCAweDJhMTRjNThiLCAweDMwMzg1ODQwLCANCisJMHgzMDMwMTQxOCwgMHgyYTFlM2M4YSwgMHgyYTNhOTdjNywgMHgzMDE3M2M3YSwgMHgzMDBlZjBlNSwgMHgyYTQ0MDg0NCwgMHgyYTYwNGZmNSwgMHgyZmY2MDMwYSwgDQorCTB4MmZlZGIwMGQsIDB4MmE2OWI5ZWMsIDB4MmE4NWVlMDAsIDB4MmZkNGFjMDQsIDB4MmZjYzUxYTUsIDB4MmE4ZjUxNmIsIDB4MmFhYjcxZDAsIDB4MmZiMzM3N2MsIA0KKwkweDJmYWFkNWMxLCAweDJhYjRjZWE5LCAweDJhZDBkYjRlLCAweDJmOTFhNTg5LCAweDJmODkzYzc1LCAweDJhZGEzMThlLCAweDJhZjYyYTYzLCAweDJmNmZmNjNkLCANCisJMHgyZjY3ODVkNywgMHgyYWZmN2EwNSwgMHgyYjFiNWVmOCwgMHgyZjRlMjlhZiwgMHgyZjQ1YjFmYiwgMHgyYjI0YTdmNiwgMHgyYjQwNzhmNSwgMHgyZjJjM2ZmMiwgDQorCTB4MmYyM2MwZjYsIDB4MmI0OWJiNGEsIDB4MmI2NTc4NDQsIDB4MmYwYTM5MWQsIDB4MmYwMWIyZGUsIDB4MmI2ZWIzZWEsIDB4MmI4YTVjY2UsIDB4MmVlODE1NDMsIA0KKwkweDJlZGY4N2M2LCAweDJiOTM5MWMwLCAweDJiYWYyNjdkLCAweDJlYzVkNDc5LCAweDJlYmQzZmM0LCAweDJiYjg1NGI0LCAweDJiZDNkNTNhLCAweDJlYTM3NmQ2LCANCisJMHgyZTlhZGFlZSwgMHgyYmRjZmNiMCwgMHgyYmY4NjhlZCwgMHgyZTgwZmM2ZSwgMHgyZTc4NTk1OCwgMHgyYzAxODk5ZSwgMHgyYzFjZTE4MSwgMHgyZTVlNjU1NiwgDQorCTB4MmU1NWJiMTcsIDB4MmMyNWZiNjYsIDB4MmM0MTNlZGYsIDB4MmUzYmIxYTQsIDB4MmUzMzAwNDIsIDB4MmM0YTUxZjMsIDB4MmM2NTgwZjEsIDB4MmUxOGUxNmQsIA0KKwkweDJlMTAyOGVkLCAweDJjNmU4ZDJlLCAweDJjODlhNzlmLCAweDJkZjVmNGM3LCAweDJkZWQzNTJmLCAweDJjOTJhZDAxLCAweDJjYWRiMmQ1LCAweDJkZDJlYmM3LCANCisJMHgyZGNhMjUxYywgMHgyY2I2YjE1NSwgMHgyY2QxYTI3YiwgMHgyZGFmYzY4MywgMHgyZGE2ZjhjYSwgMHgyY2RhOWExNCwgMHgyY2Y1NzY3YywgMHgyZDhjODUxMCwgDQorCTB4MmQ4M2IwNGYsIDB4MmNmZTY3MjgsIDB4MmQxOTJlYzEsIDB4MmQ2OTI3ODQsIDB4MmQ2MDRiYzAsIDB4MmQyMjE4N2EsIDB4MmQzY2NiMzQsIDB4MmQ0NWFkZjYNCit9OworCitjb25zdCBpbnQgdHdpZFRhYjUxMls4KjYgKyAzMio2ICsgMTI4KjZdID0gew0KKwkweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDNiMjBkNzllLCAweDE4N2RlMmE2LCANCisJMHgzZWM1MmY5ZiwgMHgwYzdjNWMxZSwgMHgzNTM2Y2M1MiwgMHgyMzhlNzY3MywgMHgyZDQxM2NjYywgMHgyZDQxM2NjYywgMHgzYjIwZDc5ZSwgMHgxODdkZTJhNiwgDQorCTB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4MzUzNmNjNTIsIDB4MjM4ZTc2NzMsIDB4ZjM4M2EzZTIsIDB4M2VjNTJmOWYsIA0KKwkweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDJkNDEzY2NjLCAweDJkNDEzY2NjLCAweGQyYmVjMzM0LCAweDJkNDEzY2NjLCAweGU3ODIxZDVhLCAweDNiMjBkNzllLCANCisJMHgyMzhlNzY3MywgMHgzNTM2Y2M1MiwgMHhjMTNhZDA2MSwgMHgwYzdjNWMxZSwgMHhkMmJlYzMzNCwgMHgyZDQxM2NjYywgMHgxODdkZTJhNiwgMHgzYjIwZDc5ZSwgDQorCTB4YzRkZjI4NjIsIDB4ZTc4MjFkNWEsIDB4YzRkZjI4NjIsIDB4MTg3ZGUyYTYsIDB4MGM3YzVjMWUsIDB4M2VjNTJmOWYsIDB4ZGM3MTg5OGQsIDB4Y2FjOTMzYWUsIA0KKw0KKwkweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDNmYjExYjQ3LCAweDA2NDVlOWFmLCANCisJMHgzZmVjNDNjNiwgMHgwMzIzZWNiZSwgMHgzZjRlYWFmZSwgMHgwOTY0MDgzNywgMHgzZWM1MmY5ZiwgMHgwYzdjNWMxZSwgMHgzZmIxMWI0NywgMHgwNjQ1ZTlhZiwgDQorCTB4M2QzZTgyYWQsIDB4MTI5NDA2MmUsIDB4M2QzZTgyYWQsIDB4MTI5NDA2MmUsIDB4M2Y0ZWFhZmUsIDB4MDk2NDA4MzcsIDB4MzlkYWY1ZTgsIDB4MWI1ZDEwMDksIA0KKwkweDNiMjBkNzllLCAweDE4N2RlMmE2LCAweDNlYzUyZjlmLCAweDBjN2M1YzFlLCAweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweDM4NzE2NWUzLCAweDFlMmI1ZDM4LCANCisJMHgzZTE0ZmRmNywgMHgwZjhjZmNiZCwgMHgyZjZiYmU0NCwgMHgyYWZhZDI2OSwgMHgzNTM2Y2M1MiwgMHgyMzhlNzY3MywgMHgzZDNlODJhZCwgMHgxMjk0MDYyZSwgDQorCTB4Mjg5OWU2NGEsIDB4MzE3OTAwZDYsIDB4MzE3OTAwZDYsIDB4Mjg5OWU2NGEsIDB4M2M0MjQyMDksIDB4MTU4ZjlhNzUsIDB4MjBlNzBmMzIsIDB4MzZlNTA2OGEsIA0KKwkweDJkNDEzY2NjLCAweDJkNDEzY2NjLCAweDNiMjBkNzllLCAweDE4N2RlMmE2LCAweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweDI4OTllNjRhLCAweDMxNzkwMGQ2LCANCisJMHgzOWRhZjVlOCwgMHgxYjVkMTAwOSwgMHgwZjhjZmNiZCwgMHgzZTE0ZmRmNywgMHgyMzhlNzY3MywgMHgzNTM2Y2M1MiwgMHgzODcxNjVlMywgMHgxZTJiNWQzOCwgDQorCTB4MDY0NWU5YWYsIDB4M2ZiMTFiNDcsIDB4MWUyYjVkMzgsIDB4Mzg3MTY1ZTMsIDB4MzZlNTA2OGEsIDB4MjBlNzBmMzIsIDB4ZmNkYzEzNDIsIDB4M2ZlYzQzYzYsIA0KKwkweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweGYzODNhM2UyLCAweDNlYzUyZjlmLCAweDEyOTQwNjJlLCAweDNkM2U4MmFkLCANCisJMHgzMzY3YzA4ZiwgMHgyNjFmZWZmOSwgMHhlYTcwNjU4YiwgMHgzYzQyNDIwOSwgMHgwYzdjNWMxZSwgMHgzZWM1MmY5ZiwgMHgzMTc5MDBkNiwgMHgyODk5ZTY0YSwgDQorCTB4ZTFkNGEyYzgsIDB4Mzg3MTY1ZTMsIDB4MDY0NWU5YWYsIDB4M2ZiMTFiNDcsIDB4MmY2YmJlNDQsIDB4MmFmYWQyNjksIDB4ZDllMDEwMDcsIDB4MzM2N2MwOGYsIA0KKwkweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDJkNDEzY2NjLCAweDJkNDEzY2NjLCAweGQyYmVjMzM0LCAweDJkNDEzY2NjLCAweGY5YmExNjUxLCAweDNmYjExYjQ3LCANCisJMHgyYWZhZDI2OSwgMHgyZjZiYmU0NCwgMHhjYzk4M2Y3MSwgMHgyNjFmZWZmOSwgMHhmMzgzYTNlMiwgMHgzZWM1MmY5ZiwgMHgyODk5ZTY0YSwgMHgzMTc5MDBkNiwgDQorCTB4Yzc4ZTlhMWQsIDB4MWUyYjVkMzgsIDB4ZWQ2YmY5ZDIsIDB4M2QzZTgyYWQsIDB4MjYxZmVmZjksIDB4MzM2N2MwOGYsIDB4YzNiZGJkZjcsIDB4MTU4ZjlhNzUsIA0KKwkweGU3ODIxZDVhLCAweDNiMjBkNzllLCAweDIzOGU3NjczLCAweDM1MzZjYzUyLCAweGMxM2FkMDYxLCAweDBjN2M1YzFlLCAweGUxZDRhMmM4LCAweDM4NzE2NWUzLCANCisJMHgyMGU3MGYzMiwgMHgzNmU1MDY4YSwgMHhjMDEzYmMzYSwgMHgwMzIzZWNiZSwgMHhkYzcxODk4ZCwgMHgzNTM2Y2M1MiwgMHgxZTJiNWQzOCwgMHgzODcxNjVlMywgDQorCTB4YzA0ZWU0YjksIDB4ZjliYTE2NTEsIDB4ZDc2NjE5YjYsIDB4MzE3OTAwZDYsIDB4MWI1ZDEwMDksIDB4MzlkYWY1ZTgsIDB4YzFlYjAyMDksIDB4ZjA3MzAzNDMsIA0KKwkweGQyYmVjMzM0LCAweDJkNDEzY2NjLCAweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweGM0ZGYyODYyLCAweGU3ODIxZDVhLCAweGNlODZmZjJhLCAweDI4OTllNjRhLCANCisJMHgxNThmOWE3NSwgMHgzYzQyNDIwOSwgMHhjOTFhZjk3NiwgMHhkZjE4ZjBjZSwgMHhjYWM5MzNhZSwgMHgyMzhlNzY3MywgMHgxMjk0MDYyZSwgMHgzZDNlODJhZCwgDQorCTB4Y2U4NmZmMmEsIDB4ZDc2NjE5YjYsIDB4Yzc4ZTlhMWQsIDB4MWUyYjVkMzgsIDB4MGY4Y2ZjYmQsIDB4M2UxNGZkZjcsIDB4ZDUwNTJkOTcsIDB4ZDA5NDQxYmMsIA0KKwkweGM0ZGYyODYyLCAweDE4N2RlMmE2LCAweDBjN2M1YzFlLCAweDNlYzUyZjlmLCAweGRjNzE4OThkLCAweGNhYzkzM2FlLCAweGMyYzE3ZDUzLCAweDEyOTQwNjJlLCANCisJMHgwOTY0MDgzNywgMHgzZjRlYWFmZSwgMHhlNGEyZWZmNywgMHhjNjI1MGExOCwgMHhjMTNhZDA2MSwgMHgwYzdjNWMxZSwgMHgwNjQ1ZTlhZiwgMHgzZmIxMWI0NywgDQorCTB4ZWQ2YmY5ZDIsIDB4YzJjMTdkNTMsIDB4YzA0ZWU0YjksIDB4MDY0NWU5YWYsIDB4MDMyM2VjYmUsIDB4M2ZlYzQzYzYsIDB4ZjY5YmY3YzksIDB4YzBiMTU1MDIsIA0KKw0KKwkweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDAwMDAwMDAwLCAweDNmZmIxMGMxLCAweDAxOTIxNTVmLCANCisJMHgzZmZlYzQyZCwgMHgwMGM5MGU4ZiwgMHgzZmY0ZTVkZiwgMHgwMjViMGNhZSwgMHgzZmVjNDNjNiwgMHgwMzIzZWNiZSwgMHgzZmZiMTBjMSwgMHgwMTkyMTU1ZiwgDQorCTB4M2ZkMzliNWEsIDB4MDRiNTQ4MjQsIDB4M2ZkMzliNWEsIDB4MDRiNTQ4MjQsIDB4M2ZmNGU1ZGYsIDB4MDI1YjBjYWUsIDB4M2Y5YzJiZmEsIDB4MDcwZGUxNzEsIA0KKwkweDNmYjExYjQ3LCAweDA2NDVlOWFmLCAweDNmZWM0M2M2LCAweDAzMjNlY2JlLCAweDNmNGVhYWZlLCAweDA5NjQwODM3LCAweDNmODRjOGUxLCAweDA3ZDU5Mzk1LCANCisJMHgzZmUxMmFjYiwgMHgwM2VjYWRjZiwgMHgzZWViMzM0NywgMHgwYmI2ZWNlZiwgMHgzZjRlYWFmZSwgMHgwOTY0MDgzNywgMHgzZmQzOWI1YSwgMHgwNGI1NDgyNCwgDQorCTB4M2U3MWU3NTgsIDB4MGUwNWMxMzUsIDB4M2YwZWM5ZjQsIDB4MGFmMTBhMjIsIDB4M2ZjMzk1ZjksIDB4MDU3ZGI0MDIsIDB4M2RlMmYxNDcsIDB4MTA0ZmI4MGUsIA0KKwkweDNlYzUyZjlmLCAweDBjN2M1YzFlLCAweDNmYjExYjQ3LCAweDA2NDVlOWFmLCAweDNkM2U4MmFkLCAweDEyOTQwNjJlLCAweDNlNzFlNzU4LCAweDBlMDVjMTM1LCANCisJMHgzZjljMmJmYSwgMHgwNzBkZTE3MSwgMHgzYzg0ZDQ5NiwgMHgxNGQxZTI0MiwgMHgzZTE0ZmRmNywgMHgwZjhjZmNiZCwgMHgzZjg0YzhlMSwgMHgwN2Q1OTM5NSwgDQorCTB4M2JiNjI3NmQsIDB4MTcwODg1MzAsIDB4M2RhZTgxY2UsIDB4MTExMWQyNjIsIDB4M2Y2YWYyZTMsIDB4MDg5Y2Y4NjcsIDB4M2FkMmMyZTcsIDB4MTkzNzJhNjMsIA0KKwkweDNkM2U4MmFkLCAweDEyOTQwNjJlLCAweDNmNGVhYWZlLCAweDA5NjQwODM3LCAweDM5ZGFmNWU4LCAweDFiNWQxMDA5LCAweDNjYzUxMWQ4LCAweDE0MTM1Yzk0LCANCisJMHgzZjJmZjI0OSwgMHgwYTJhYmI1OCwgMHgzOGNmMTY2OSwgMHgxZDc5Nzc1YiwgMHgzYzQyNDIwOSwgMHgxNThmOWE3NSwgMHgzZjBlYzlmNCwgMHgwYWYxMGEyMiwgDQorCTB4MzdhZjgxNTgsIDB4MWY4YmE0ZGIsIDB4M2JiNjI3NmQsIDB4MTcwODg1MzAsIDB4M2VlYjMzNDcsIDB4MGJiNmVjZWYsIDB4MzY3YzlhN2QsIDB4MjE5MmUwOWEsIA0KKwkweDNiMjBkNzllLCAweDE4N2RlMmE2LCAweDNlYzUyZjlmLCAweDBjN2M1YzFlLCAweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweDNhODI2OWEyLCAweDE5ZWY3OTQzLCANCisJMHgzZTljYzA3NiwgMHgwZDQxNTAxMiwgMHgzM2RlODdkZSwgMHgyNTdkYjY0YiwgMHgzOWRhZjVlOCwgMHgxYjVkMTAwOSwgMHgzZTcxZTc1OCwgMHgwZTA1YzEzNSwgDQorCTB4MzI3NDQ0OTMsIDB4Mjc1ZmY0NTIsIDB4MzkyYTk2NDIsIDB4MWNjNjZlOTksIDB4M2U0NGE1ZWUsIDB4MGVjOWE3ZjIsIDB4MzBmODgwMWYsIDB4MjkzNDg5MzcsIA0KKwkweDM4NzE2NWUzLCAweDFlMmI1ZDM4LCAweDNlMTRmZGY3LCAweDBmOGNmY2JkLCAweDJmNmJiZTQ0LCAweDJhZmFkMjY5LCAweDM3YWY4MTU4LCAweDFmOGJhNGRiLCANCisJMHgzZGUyZjE0NywgMHgxMDRmYjgwZSwgMHgyZGNlODhhOSwgMHgyY2IyMzI0YiwgMHgzNmU1MDY4YSwgMHgyMGU3MGYzMiwgMHgzZGFlODFjZSwgMHgxMTExZDI2MiwgDQorCTB4MmMyMTZlYWEsIDB4MmU1YTEwNmYsIDB4MzYxMjE0YjAsIDB4MjIzZDY2YTgsIDB4M2Q3N2IxOTEsIDB4MTFkMzQ0M2YsIDB4MmE2NTA1MjUsIDB4MmZmMWQ5YzYsIA0KKwkweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweDNkM2U4MmFkLCAweDEyOTQwNjJlLCAweDI4OTllNjRhLCAweDMxNzkwMGQ2LCAweDM0NTM0ZjQwLCAweDI0ZGEwYTk5LCANCisJMHgzZDAyZjc1NiwgMHgxMzU0MTBjMiwgMHgyNmMwYjE2MiwgMHgzMmVlZmRlOSwgMHgzMzY3YzA4ZiwgMHgyNjFmZWZmOSwgMHgzY2M1MTFkOCwgMHgxNDEzNWM5NCwgDQorCTB4MjRkYTBhOTksIDB4MzQ1MzRmNDAsIDB4MzI3NDQ0OTMsIDB4Mjc1ZmY0NTIsIDB4M2M4NGQ0OTYsIDB4MTRkMWUyNDIsIDB4MjJlNjlhYzcsIDB4MzVhNTc5M2MsIA0KKwkweDMxNzkwMGQ2LCAweDI4OTllNjRhLCAweDNjNDI0MjA5LCAweDE1OGY5YTc1LCAweDIwZTcwZjMyLCAweDM2ZTUwNjhhLCAweDMwNzYxYzE3LCAweDI5Y2Q5NTc3LCANCisJMHgzYmZkNWNjNCwgMHgxNjRjN2RkZCwgMHgxZWRjMTk1MiwgMHgzODExODg0YywgMHgyZjZiYmU0NCwgMHgyYWZhZDI2OSwgMHgzYmI2Mjc2ZCwgMHgxNzA4ODUzMCwgDQorCTB4MWNjNjZlOTksIDB4MzkyYTk2NDIsIDB4MmU1YTEwNmYsIDB4MmMyMTZlYWEsIDB4M2I2Y2E0YzQsIDB4MTdjM2E5MzEsIDB4MWFhNmM4MmIsIDB4M2EyZmNlZTgsIA0KKwkweDJkNDEzY2NjLCAweDJkNDEzY2NjLCAweDNiMjBkNzllLCAweDE4N2RlMmE2LCAweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweDJjMjE2ZWFhLCAweDJlNWExMDZmLCANCisJMHgzYWQyYzJlNywgMHgxOTM3MmE2MywgMHgxNjRjN2RkZCwgMHgzYmZkNWNjNCwgMHgyYWZhZDI2OSwgMHgyZjZiYmU0NCwgMHgzYTgyNjlhMiwgMHgxOWVmNzk0MywgDQorCTB4MTQxMzVjOTQsIDB4M2NjNTExZDgsIDB4MjljZDk1NzcsIDB4MzA3NjFjMTcsIDB4M2EyZmNlZTgsIDB4MWFhNmM4MmIsIDB4MTFkMzQ0M2YsIDB4M2Q3N2IxOTEsIA0KKwkweDI4OTllNjRhLCAweDMxNzkwMGQ2LCAweDM5ZGFmNWU4LCAweDFiNWQxMDA5LCAweDBmOGNmY2JkLCAweDNlMTRmZGY3LCAweDI3NWZmNDUyLCAweDMyNzQ0NDkzLCANCisJMHgzOTgzZTFlNywgMHgxYzEyNDlkOCwgMHgwZDQxNTAxMiwgMHgzZTljYzA3NiwgMHgyNjFmZWZmOSwgMHgzMzY3YzA4ZiwgMHgzOTJhOTY0MiwgMHgxY2M2NmU5OSwgDQorCTB4MGFmMTBhMjIsIDB4M2YwZWM5ZjQsIDB4MjRkYTBhOTksIDB4MzQ1MzRmNDAsIDB4MzhjZjE2NjksIDB4MWQ3OTc3NWIsIDB4MDg5Y2Y4NjcsIDB4M2Y2YWYyZTMsIA0KKwkweDIzOGU3NjczLCAweDM1MzZjYzUyLCAweDM4NzE2NWUzLCAweDFlMmI1ZDM4LCAweDA2NDVlOWFmLCAweDNmYjExYjQ3LCAweDIyM2Q2NmE4LCAweDM2MTIxNGIwLCANCisJMHgzODExODg0YywgMHgxZWRjMTk1MiwgMHgwM2VjYWRjZiwgMHgzZmUxMmFjYiwgMHgyMGU3MGYzMiwgMHgzNmU1MDY4YSwgMHgzN2FmODE1OCwgMHgxZjhiYTRkYiwgDQorCTB4MDE5MjE1NWYsIDB4M2ZmYjEwYzEsIDB4MWY4YmE0ZGIsIDB4MzdhZjgxNTgsIDB4Mzc0YjU0Y2UsIDB4MjAzOWY5MGUsIDB4ZmYzNmYxNzEsIDB4M2ZmZWM0MmQsIA0KKwkweDFlMmI1ZDM4LCAweDM4NzE2NWUzLCAweDM2ZTUwNjhhLCAweDIwZTcwZjMyLCAweGZjZGMxMzQyLCAweDNmZWM0M2M2LCAweDFjYzY2ZTk5LCAweDM5MmE5NjQyLCANCisJMHgzNjdjOWE3ZCwgMHgyMTkyZTA5YSwgMHhmYTgyNGJmZSwgMHgzZmMzOTVmOSwgMHgxYjVkMTAwOSwgMHgzOWRhZjVlOCwgMHgzNjEyMTRiMCwgMHgyMjNkNjZhOCwgDQorCTB4ZjgyYTZjNmIsIDB4M2Y4NGM4ZTEsIDB4MTllZjc5NDMsIDB4M2E4MjY5YTIsIDB4MzVhNTc5M2MsIDB4MjJlNjlhYzcsIDB4ZjVkNTQ0YTgsIDB4M2YyZmYyNDksIA0KKwkweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweGYzODNhM2UyLCAweDNlYzUyZjlmLCAweDE3MDg4NTMwLCAweDNiYjYyNzZkLCANCisJMHgzNGM2MTIzNiwgMHgyNDM0ZjMzMiwgMHhmMTM2NTgwZSwgMHgzZTQ0YTVlZSwgMHgxNThmOWE3NSwgMHgzYzQyNDIwOSwgMHgzNDUzNGY0MCwgMHgyNGRhMGE5OSwgDQorCTB4ZWVlZTJkOWUsIDB4M2RhZTgxY2UsIDB4MTQxMzVjOTQsIDB4M2NjNTExZDgsIDB4MzNkZTg3ZGUsIDB4MjU3ZGI2NGIsIDB4ZWNhYmVmM2UsIDB4M2QwMmY3NTYsIA0KKwkweDEyOTQwNjJlLCAweDNkM2U4MmFkLCAweDMzNjdjMDhmLCAweDI2MWZlZmY5LCAweGVhNzA2NThiLCAweDNjNDI0MjA5LCAweDExMTFkMjYyLCAweDNkYWU4MWNlLCANCisJMHgzMmVlZmRlOSwgMHgyNmMwYjE2MiwgMHhlODNjNTZjZiwgMHgzYjZjYTRjNCwgMHgwZjhjZmNiZCwgMHgzZTE0ZmRmNywgMHgzMjc0NDQ5MywgMHgyNzVmZjQ1MiwgDQorCTB4ZTYxMDg2YmQsIDB4M2E4MjY5YTIsIDB4MGUwNWMxMzUsIDB4M2U3MWU3NTgsIDB4MzFmNzk5NDcsIDB4MjdmZGIyYTYsIDB4ZTNlZGI2MjgsIDB4Mzk4M2UxZTcsIA0KKwkweDBjN2M1YzFlLCAweDNlYzUyZjlmLCAweDMxNzkwMGQ2LCAweDI4OTllNjRhLCAweGUxZDRhMmM4LCAweDM4NzE2NWUzLCAweDBhZjEwYTIyLCAweDNmMGVjOWY0LCANCisJMHgzMGY4ODAxZiwgMHgyOTM0ODkzNywgMHhkZmM2MDZmMiwgMHgzNzRiNTRjZSwgMHgwOTY0MDgzNywgMHgzZjRlYWFmZSwgMHgzMDc2MWMxNywgMHgyOWNkOTU3NywgDQorCTB4ZGRjMjk5NTgsIDB4MzYxMjE0YjAsIDB4MDdkNTkzOTUsIDB4M2Y4NGM4ZTEsIDB4MmZmMWQ5YzYsIDB4MmE2NTA1MjUsIDB4ZGJjYjBjY2UsIDB4MzRjNjEyMzYsIA0KKwkweDA2NDVlOWFmLCAweDNmYjExYjQ3LCAweDJmNmJiZTQ0LCAweDJhZmFkMjY5LCAweGQ5ZTAxMDA3LCAweDMzNjdjMDhmLCAweDA0YjU0ODI0LCAweDNmZDM5YjVhLCANCisJMHgyZWUzY2ViZSwgMHgyYjhlZjc3YywgMHhkODAyNGQ1YSwgMHgzMWY3OTk0NywgMHgwMzIzZWNiZSwgMHgzZmVjNDNjNiwgMHgyZTVhMTA2ZiwgMHgyYzIxNmVhYSwgDQorCTB4ZDYzMjZhODksIDB4MzA3NjFjMTcsIDB4MDE5MjE1NWYsIDB4M2ZmYjEwYzEsIDB4MmRjZTg4YTksIDB4MmNiMjMyNGIsIDB4ZDQ3MTA4ODQsIDB4MmVlM2NlYmUsIA0KKwkweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDJkNDEzY2NjLCAweDJkNDEzY2NjLCAweGQyYmVjMzM0LCAweDJkNDEzY2NjLCAweGZlNmRlYWExLCAweDNmZmIxMGMxLCANCisJMHgyY2IyMzI0YiwgMHgyZGNlODhhOSwgMHhkMTFjMzE0MiwgMHgyYjhlZjc3YywgMHhmY2RjMTM0MiwgMHgzZmVjNDNjNiwgMHgyYzIxNmVhYSwgMHgyZTVhMTA2ZiwgDQorCTB4Y2Y4OWUzZTksIDB4MjljZDk1NzcsIDB4ZmI0YWI3ZGMsIDB4M2ZkMzliNWEsIDB4MmI4ZWY3N2MsIDB4MmVlM2NlYmUsIDB4Y2UwODY2YjksIDB4MjdmZGIyYTYsIA0KKwkweGY5YmExNjUxLCAweDNmYjExYjQ3LCAweDJhZmFkMjY5LCAweDJmNmJiZTQ0LCAweGNjOTgzZjcxLCAweDI2MWZlZmY5LCAweGY4MmE2YzZiLCAweDNmODRjOGUxLCANCisJMHgyYTY1MDUyNSwgMHgyZmYxZDljNiwgMHhjYjM5ZWRjYSwgMHgyNDM0ZjMzMiwgMHhmNjliZjdjOSwgMHgzZjRlYWFmZSwgMHgyOWNkOTU3NywgMHgzMDc2MWMxNywgDQorCTB4YzllZGViNTAsIDB4MjIzZDY2YTgsIDB4ZjUwZWY1ZGUsIDB4M2YwZWM5ZjQsIDB4MjkzNDg5MzcsIDB4MzBmODgwMWYsIDB4YzhiNGFiMzIsIDB4MjAzOWY5MGUsIA0KKwkweGYzODNhM2UyLCAweDNlYzUyZjlmLCAweDI4OTllNjRhLCAweDMxNzkwMGQ2LCAweGM3OGU5YTFkLCAweDFlMmI1ZDM4LCAweGYxZmEzZWNiLCAweDNlNzFlNzU4LCANCisJMHgyN2ZkYjJhNiwgMHgzMWY3OTk0NywgMHhjNjdjMWUxOSwgMHgxYzEyNDlkOCwgMHhmMDczMDM0MywgMHgzZTE0ZmRmNywgMHgyNzVmZjQ1MiwgMHgzMjc0NDQ5MywgDQorCTB4YzU3ZDk2NWUsIDB4MTllZjc5NDMsIDB4ZWVlZTJkOWUsIDB4M2RhZTgxY2UsIDB4MjZjMGIxNjIsIDB4MzJlZWZkZTksIDB4YzQ5MzViM2MsIDB4MTdjM2E5MzEsIA0KKwkweGVkNmJmOWQyLCAweDNkM2U4MmFkLCAweDI2MWZlZmY5LCAweDMzNjdjMDhmLCAweGMzYmRiZGY3LCAweDE1OGY5YTc1LCAweGViZWNhMzZjLCAweDNjYzUxMWQ4LCANCisJMHgyNTdkYjY0YiwgMHgzM2RlODdkZSwgMHhjMmZkMDhhYSwgMHgxMzU0MTBjMiwgMHhlYTcwNjU4YiwgMHgzYzQyNDIwOSwgMHgyNGRhMGE5OSwgMHgzNDUzNGY0MCwgDQorCTB4YzI1MTdlMzIsIDB4MTExMWQyNjIsIDB4ZThmNzdhZDAsIDB4M2JiNjI3NmQsIDB4MjQzNGYzMzIsIDB4MzRjNjEyMzYsIDB4YzFiYjVhMTIsIDB4MGVjOWE3ZjIsIA0KKwkweGU3ODIxZDVhLCAweDNiMjBkNzllLCAweDIzOGU3NjczLCAweDM1MzZjYzUyLCAweGMxM2FkMDYxLCAweDBjN2M1YzFlLCAweGU2MTA4NmJkLCAweDNhODI2OWEyLCANCisJMHgyMmU2OWFjNywgMHgzNWE1NzkzYywgMHhjMGQwMGRiNywgMHgwYTJhYmI1OCwgMHhlNGEyZWZmNywgMHgzOWRhZjVlOCwgMHgyMjNkNjZhOCwgMHgzNjEyMTRiMCwgDQorCTB4YzA3YjM3MWYsIDB4MDdkNTkzOTUsIDB4ZTMzOTkxNjcsIDB4MzkyYTk2NDIsIDB4MjE5MmUwOWEsIDB4MzY3YzlhN2QsIDB4YzAzYzZhMDcsIDB4MDU3ZGI0MDIsIA0KKwkweGUxZDRhMmM4LCAweDM4NzE2NWUzLCAweDIwZTcwZjMyLCAweDM2ZTUwNjhhLCAweGMwMTNiYzNhLCAweDAzMjNlY2JlLCAweGUwNzQ1YjI1LCAweDM3YWY4MTU4LCANCisJMHgyMDM5ZjkwZSwgMHgzNzRiNTRjZSwgMHhjMDAxM2JkMywgMHgwMGM5MGU4ZiwgMHhkZjE4ZjBjZSwgMHgzNmU1MDY4YSwgMHgxZjhiYTRkYiwgMHgzN2FmODE1OCwgDQorCTB4YzAwNGVmM2YsIDB4ZmU2ZGVhYTEsIDB4ZGRjMjk5NTgsIDB4MzYxMjE0YjAsIDB4MWVkYzE5NTIsIDB4MzgxMTg4NGMsIDB4YzAxZWQ1MzUsIDB4ZmMxMzUyMzEsIA0KKwkweGRjNzE4OThkLCAweDM1MzZjYzUyLCAweDFlMmI1ZDM4LCAweDM4NzE2NWUzLCAweGMwNGVlNGI5LCAweGY5YmExNjUxLCAweGRiMjVmNTY3LCAweDM0NTM0ZjQwLCANCisJMHgxZDc5Nzc1YiwgMHgzOGNmMTY2OSwgMHhjMDk1MGQxZCwgMHhmNzYzMDc5OSwgMHhkOWUwMTAwNywgMHgzMzY3YzA4ZiwgMHgxY2M2NmU5OSwgMHgzOTJhOTY0MiwgDQorCTB4YzBmMTM2MGMsIDB4ZjUwZWY1ZGUsIDB4ZDhhMDBiYWUsIDB4MzI3NDQ0OTMsIDB4MWMxMjQ5ZDgsIDB4Mzk4M2UxZTcsIDB4YzE2MzNmOGEsIDB4ZjJiZWFmZWUsIA0KKwkweGQ3NjYxOWI2LCAweDMxNzkwMGQ2LCAweDFiNWQxMDA5LCAweDM5ZGFmNWU4LCAweGMxZWIwMjA5LCAweGYwNzMwMzQzLCAweGQ2MzI2YTg5LCAweDMwNzYxYzE3LCANCisJMHgxYWE2YzgyYiwgMHgzYTJmY2VlOCwgMHhjMjg4NGU2ZiwgMHhlZTJjYmJjMSwgMHhkNTA1MmQ5NywgMHgyZjZiYmU0NCwgMHgxOWVmNzk0MywgMHgzYTgyNjlhMiwgDQorCTB4YzMzYWVlMjgsIDB4ZWJlY2EzNmMsIDB4ZDNkZTkxNTYsIDB4MmU1YTEwNmYsIDB4MTkzNzJhNjMsIDB4M2FkMmMyZTcsIDB4YzQwMmEzM2MsIDB4ZTliMzgyMjMsIA0KKwkweGQyYmVjMzM0LCAweDJkNDEzY2NjLCAweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweGM0ZGYyODYyLCAweGU3ODIxZDVhLCAweGQxYTVlZjkxLCAweDJjMjE2ZWFhLCANCisJMHgxN2MzYTkzMSwgMHgzYjZjYTRjNCwgMHhjNWQwMzExOCwgMHhlNTU5MzdkNSwgMHhkMDk0NDFiYywgMHgyYWZhZDI2OSwgMHgxNzA4ODUzMCwgMHgzYmI2Mjc2ZCwgDQorCTB4YzZkNTY5YmUsIDB4ZTMzOTkxNjcsIDB4Y2Y4OWUzZTksIDB4MjljZDk1NzcsIDB4MTY0YzdkZGQsIDB4M2JmZDVjYzQsIDB4YzdlZTc3YjQsIDB4ZTEyM2U2YWUsIA0KKwkweGNlODZmZjJhLCAweDI4OTllNjRhLCAweDE1OGY5YTc1LCAweDNjNDI0MjA5LCAweGM5MWFmOTc2LCAweGRmMThmMGNlLCAweGNkOGJiYjZkLCAweDI3NWZmNDUyLCANCisJMHgxNGQxZTI0MiwgMHgzYzg0ZDQ5NiwgMHhjYTVhODZjNCwgMHhkZDE5NjUzOSwgMHhjYzk4M2Y3MSwgMHgyNjFmZWZmOSwgMHgxNDEzNWM5NCwgMHgzY2M1MTFkOCwgDQorCTB4Y2JhY2IwYzAsIDB4ZGIyNWY1NjcsIDB4Y2JhY2IwYzAsIDB4MjRkYTBhOTksIDB4MTM1NDEwYzIsIDB4M2QwMmY3NTYsIDB4Y2QxMTAyMTcsIDB4ZDkzZjRlOWUsIA0KKwkweGNhYzkzM2FlLCAweDIzOGU3NjczLCAweDEyOTQwNjJlLCAweDNkM2U4MmFkLCAweGNlODZmZjJhLCAweGQ3NjYxOWI2LCAweGM5ZWRlYjUwLCAweDIyM2Q2NmE4LCANCisJMHgxMWQzNDQzZiwgMHgzZDc3YjE5MSwgMHhkMDBlMjYzYSwgMHhkNTlhZmFkYiwgMHhjOTFhZjk3NiwgMHgyMGU3MGYzMiwgMHgxMTExZDI2MiwgMHgzZGFlODFjZSwgDQorCTB4ZDFhNWVmOTEsIDB4ZDNkZTkxNTYsIDB4Yzg1MDdlYTgsIDB4MWY4YmE0ZGIsIDB4MTA0ZmI4MGUsIDB4M2RlMmYxNDcsIDB4ZDM0ZGNkYjUsIDB4ZDIzMTc3NTcsIA0KKwkweGM3OGU5YTFkLCAweDFlMmI1ZDM4LCAweDBmOGNmY2JkLCAweDNlMTRmZGY3LCAweGQ1MDUyZDk3LCAweGQwOTQ0MWJjLCAweGM2ZDU2OWJlLCAweDFjYzY2ZTk5LCANCisJMHgwZWM5YTdmMiwgMHgzZTQ0YTVlZSwgMHhkNmNiNzZjOSwgMHhjZjA3N2ZlMSwgMHhjNjI1MGExOCwgMHgxYjVkMTAwOSwgMHgwZTA1YzEzNSwgMHgzZTcxZTc1OCwgDQorCTB4ZDhhMDBiYWUsIDB4Y2Q4YmJiNmQsIDB4YzU3ZDk2NWUsIDB4MTllZjc5NDMsIDB4MGQ0MTUwMTIsIDB4M2U5Y2MwNzYsIDB4ZGE4MjQ5YjUsIDB4Y2MyMTc4MjIsIA0KKwkweGM0ZGYyODYyLCAweDE4N2RlMmE2LCAweDBjN2M1YzFlLCAweDNlYzUyZjlmLCAweGRjNzE4OThkLCAweGNhYzkzM2FlLCAweGM0NDlkODkzLCAweDE3MDg4NTMwLCANCisJMHgwYmI2ZWNlZiwgMHgzZWViMzM0NywgMHhkZTZkMWY2NiwgMHhjOTgzNjU4MywgMHhjM2JkYmRmNywgMHgxNThmOWE3NSwgMHgwYWYxMGEyMiwgMHgzZjBlYzlmNCwgDQorCTB4ZTA3NDViMjUsIDB4Yzg1MDdlYTgsIDB4YzMzYWVlMjgsIDB4MTQxMzVjOTQsIDB4MGEyYWJiNTgsIDB4M2YyZmYyNDksIDB4ZTI4Njg4YTUsIDB4YzczMGU5OTcsIA0KKwkweGMyYzE3ZDUzLCAweDEyOTQwNjJlLCAweDA5NjQwODM3LCAweDNmNGVhYWZlLCAweGU0YTJlZmY3LCAweGM2MjUwYTE4LCAweGMyNTE3ZTMyLCAweDExMTFkMjYyLCANCisJMHgwODljZjg2NywgMHgzZjZhZjJlMywgMHhlNmM4ZDU5ZCwgMHhjNTJkM2QxOSwgMHhjMWViMDIwOSwgMHgwZjhjZmNiZCwgMHgwN2Q1OTM5NSwgMHgzZjg0YzhlMSwgDQorCTB4ZThmNzdhZDAsIDB4YzQ0OWQ4OTMsIDB4YzE4ZTE4YTgsIDB4MGUwNWMxMzUsIDB4MDcwZGUxNzEsIDB4M2Y5YzJiZmEsIDB4ZWIyZTFkYmUsIDB4YzM3YjJiNmEsIA0KKwkweGMxM2FkMDYxLCAweDBjN2M1YzFlLCAweDA2NDVlOWFmLCAweDNmYjExYjQ3LCAweGVkNmJmOWQyLCAweGMyYzE3ZDUzLCAweGMwZjEzNjBjLCAweDBhZjEwYTIyLCANCisJMHgwNTdkYjQwMiwgMHgzZmMzOTVmOSwgMHhlZmIwNDdmMiwgMHhjMjFkMGViOSwgMHhjMGIxNTUwMiwgMHgwOTY0MDgzNywgMHgwNGI1NDgyNCwgMHgzZmQzOWI1YSwgDQorCTB4ZjFmYTNlY2IsIDB4YzE4ZTE4YTgsIDB4YzA3YjM3MWYsIDB4MDdkNTkzOTUsIDB4MDNlY2FkY2YsIDB4M2ZlMTJhY2IsIDB4ZjQ0OTEzMTEsIDB4YzExNGNjYjksIA0KKwkweGMwNGVlNGI5LCAweDA2NDVlOWFmLCAweDAzMjNlY2JlLCAweDNmZWM0M2M2LCAweGY2OWJmN2M5LCAweGMwYjE1NTAyLCAweGMwMmM2NGE2LCAweDA0YjU0ODI0LCANCisJMHgwMjViMGNhZSwgMHgzZmY0ZTVkZiwgMHhmOGYyMWU4ZiwgMHhjMDYzZDQwNiwgMHhjMDEzYmMzYSwgMHgwMzIzZWNiZSwgMHgwMTkyMTU1ZiwgMHgzZmZiMTBjMSwgDQorCTB4ZmI0YWI3ZGMsIDB4YzAyYzY0YTYsIDB4YzAwNGVmM2YsIDB4MDE5MjE1NWYsIDB4MDBjOTBlOGYsIDB4M2ZmZWM0MmQsIDB4ZmRhNGYzNTIsIDB4YzAwYjFhMjENCit9Ow0KKw0KK2NvbnN0IGludCB0d2lkVGFiNjRbNCo2ICsgMTYqNl0gPSB7DQorCTB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIA0KKwkweDNiMjBkNzllLCAweDE4N2RlMmE2LCAweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweDAwMDAwMDAwLCAweDQwMDAwMDAwLCAweDJkNDEzY2NjLCAweDJkNDEzY2NjLCANCisJMHhkMmJlYzMzNCwgMHgyZDQxM2NjYywgMHhkMmJlYzMzNCwgMHgyZDQxM2NjYywgMHgxODdkZTJhNiwgMHgzYjIwZDc5ZSwgMHhjNGRmMjg2MiwgMHhlNzgyMWQ1YSwgDQorDQorCTB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4M2VjNTJmOWYsIDB4MGM3YzVjMWUsIA0KKwkweDNmYjExYjQ3LCAweDA2NDVlOWFmLCAweDNkM2U4MmFkLCAweDEyOTQwNjJlLCAweDNiMjBkNzllLCAweDE4N2RlMmE2LCAweDNlYzUyZjlmLCAweDBjN2M1YzFlLCANCisJMHgzNTM2Y2M1MiwgMHgyMzhlNzY3MywgMHgzNTM2Y2M1MiwgMHgyMzhlNzY3MywgMHgzZDNlODJhZCwgMHgxMjk0MDYyZSwgMHgyODk5ZTY0YSwgMHgzMTc5MDBkNiwgDQorCTB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIDB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4MjM4ZTc2NzMsIDB4MzUzNmNjNTIsIA0KKwkweDM4NzE2NWUzLCAweDFlMmI1ZDM4LCAweDA2NDVlOWFmLCAweDNmYjExYjQ3LCAweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweDM1MzZjYzUyLCAweDIzOGU3NjczLCANCisJMHhmMzgzYTNlMiwgMHgzZWM1MmY5ZiwgMHgwYzdjNWMxZSwgMHgzZWM1MmY5ZiwgMHgzMTc5MDBkNiwgMHgyODk5ZTY0YSwgMHhlMWQ0YTJjOCwgMHgzODcxNjVlMywgDQorCTB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIDB4ZDJiZWMzMzQsIDB4MmQ0MTNjY2MsIDB4ZjM4M2EzZTIsIDB4M2VjNTJmOWYsIA0KKwkweDI4OTllNjRhLCAweDMxNzkwMGQ2LCAweGM3OGU5YTFkLCAweDFlMmI1ZDM4LCAweGU3ODIxZDVhLCAweDNiMjBkNzllLCAweDIzOGU3NjczLCAweDM1MzZjYzUyLCANCisJMHhjMTNhZDA2MSwgMHgwYzdjNWMxZSwgMHhkYzcxODk4ZCwgMHgzNTM2Y2M1MiwgMHgxZTJiNWQzOCwgMHgzODcxNjVlMywgMHhjMDRlZTRiOSwgMHhmOWJhMTY1MSwgDQorCTB4ZDJiZWMzMzQsIDB4MmQ0MTNjY2MsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4YzRkZjI4NjIsIDB4ZTc4MjFkNWEsIDB4Y2FjOTMzYWUsIDB4MjM4ZTc2NzMsIA0KKwkweDEyOTQwNjJlLCAweDNkM2U4MmFkLCAweGNlODZmZjJhLCAweGQ3NjYxOWI2LCAweGM0ZGYyODYyLCAweDE4N2RlMmE2LCAweDBjN2M1YzFlLCAweDNlYzUyZjlmLCANCisJMHhkYzcxODk4ZCwgMHhjYWM5MzNhZSwgMHhjMTNhZDA2MSwgMHgwYzdjNWMxZSwgMHgwNjQ1ZTlhZiwgMHgzZmIxMWI0NywgMHhlZDZiZjlkMiwgMHhjMmMxN2Q1MyANCit9Ow0KKyNlbmRpZiAgLy9BUk1WNUUNCisNCitjb25zdCBpbnQgU2hvcnRXaW5kb3dTaW5lW0ZSQU1FX0xFTl9TSE9SVC8yXSA9eyAgDQorCTB4MDBjOTdmZmYsIDB4MDI1YjdmZmEsIDB4MDNlZDdmZjEsIDB4MDU3ZjdmZTIsIDB4MDcxMTdmY2UsIDB4MDhhMjdmYjUsIDB4MGEzMzdmOTgsIDB4MGJjNDdmNzUsIA0KKwkweDBkNTQ3ZjRlLCAweDBlZTQ3ZjIyLCAweDEwNzM3ZWYwLCAweDEyMDE3ZWJhLCAweDEzOGY3ZTdmLCAweDE1MWM3ZTNmLCAweDE2YTg3ZGZiLCAweDE4MzM3ZGIxLCANCisJMHgxOWJlN2Q2MywgMHgxYjQ3N2QwZiwgMHgxY2QwN2NiNywgMHgxZTU3N2M1YSwgMHgxZmRkN2JmOSwgMHgyMTYyN2I5MiwgMHgyMmU1N2IyNywgMHgyNDY3N2FiNywgDQorCTB4MjVlODdhNDIsIDB4Mjc2ODc5YzksIDB4MjhlNTc5NGEsIDB4MmE2Mjc4YzgsIDB4MmJkYzc4NDAsIDB4MmQ1NTc3YjQsIDB4MmVjYzc3MjMsIDB4MzA0Mjc2OGUsIA0KKwkweDMxYjU3NWY0LCAweDMzMjc3NTU2LCAweDM0OTc3NGIzLCAweDM2MDQ3NDBiLCAweDM3NzA3MzVmLCAweDM4ZDk3MmFmLCAweDNhNDA3MWZhLCAweDNiYTU3MTQxLCANCisJMHgzZDA4NzA4MywgMHgzZTY4NmZjMiwgMHgzZmM2NmVmYiwgMHg0MTIxNmUzMSwgMHg0MjdhNmQ2MiwgMHg0M2QxNmM4ZiwgMHg0NTI0NmJiOCwgMHg0Njc1NmFkZCwgDQorCTB4NDdjNDY5ZmQsIDB4NDkwZjY5MWEsIDB4NGE1ODY4MzIsIDB4NGI5ZTY3NDcsIDB4NGNlMTY2NTcsIDB4NGUyMTY1NjQsIDB4NGY1ZTY0NmMsIDB4NTA5ODYzNzEsIA0KKwkweDUxY2Y2MjcyLCAweDUzMDM2MTZmLCAweDU0MzM2MDY4LCAweDU1NjA1ZjVlLCAweDU2OGE1ZTUwLCAweDU3YjE1ZDNlLCAweDU4ZDQ1YzI5LCAweDU5ZjQ1YjEwDQorfTsKKworY29uc3QgaW50IExvbmdXaW5kb3dLQkRbRlJBTUVfTEVOX0xPTkcvMl09eyAgCisJMHgwMDBhN2ZmZiwgMHgwMDBlN2ZmZiwgMHgwMDEyN2ZmZiwgMHgwMDE1N2ZmZiwgMHgwMDE5N2ZmZiwgMHgwMDFjN2ZmZiwgMHgwMDIwN2ZmZiwgMHgwMDIzN2ZmZiwgDQorCTB4MDAyNjdmZmYsIDB4MDAyYTdmZmYsIDB4MDAyZDdmZmYsIDB4MDAzMDdmZmYsIDB4MDAzNDdmZmYsIDB4MDAzODdmZmYsIDB4MDAzYjdmZmYsIDB4MDAzZjdmZmYsIA0KKwkweDAwNDM3ZmZmLCAweDAwNDc3ZmZmLCAweDAwNGI3ZmZmLCAweDAwNGY3ZmZmLCAweDAwNTM3ZmZmLCAweDAwNTc3ZmZmLCAweDAwNWI3ZmZmLCAweDAwNjA3ZmZmLCANCisJMHgwMDY0N2ZmZiwgMHgwMDY5N2ZmZiwgMHgwMDZkN2ZmZiwgMHgwMDcyN2ZmZiwgMHgwMDc3N2ZmZiwgMHgwMDdjN2ZmZiwgMHgwMDgxN2ZmZiwgMHgwMDg2N2ZmZiwgDQorCTB4MDA4YjdmZmYsIDB4MDA5MTdmZmYsIDB4MDA5NjdmZmYsIDB4MDA5YzdmZmYsIDB4MDBhMTdmZmYsIDB4MDBhNzdmZmYsIDB4MDBhZDdmZmYsIDB4MDBiMzdmZmYsIA0KKwkweDAwYjk3ZmZmLCAweDAwYmY3ZmZmLCAweDAwYzY3ZmZmLCAweDAwY2M3ZmZmLCAweDAwZDM3ZmZmLCAweDAwZGE3ZmZmLCAweDAwZTA3ZmZmLCAweDAwZTc3ZmZmLCANCisJMHgwMGVlN2ZmZiwgMHgwMGY1N2ZmZiwgMHgwMGZkN2ZmZiwgMHgwMTA0N2ZmZiwgMHgwMTBjN2ZmZiwgMHgwMTEzN2ZmZiwgMHgwMTFiN2ZmZiwgMHgwMTIzN2ZmZiwgDQorCTB4MDEyYjdmZmYsIDB4MDEzMzdmZmYsIDB4MDEzYzdmZmUsIDB4MDE0NDdmZmUsIDB4MDE0ZDdmZmUsIDB4MDE1NjdmZmUsIDB4MDE1ZjdmZmUsIDB4MDE2ODdmZmUsIA0KKwkweDAxNzE3ZmZlLCAweDAxN2E3ZmZlLCAweDAxODM3ZmZlLCAweDAxOGQ3ZmZlLCAweDAxOTc3ZmZkLCAweDAxYTE3ZmZkLCAweDAxYWI3ZmZkLCAweDAxYjU3ZmZkLCANCisJMHgwMWJmN2ZmZCwgMHgwMWNhN2ZmZCwgMHgwMWQ0N2ZmZCwgMHgwMWRmN2ZmYywgMHgwMWVhN2ZmYywgMHgwMWY1N2ZmYywgMHgwMjAwN2ZmYywgMHgwMjBjN2ZmYywgDQorCTB4MDIxNzdmZmMsIDB4MDIyMzdmZmIsIDB4MDIyZjdmZmIsIDB4MDIzYjdmZmIsIDB4MDI0NzdmZmIsIDB4MDI1MzdmZmIsIDB4MDI2MDdmZmEsIDB4MDI2ZDdmZmEsIA0KKwkweDAyN2E3ZmZhLCAweDAyODc3ZmZhLCAweDAyOTQ3ZmY5LCAweDAyYTE3ZmY5LCAweDAyYWY3ZmY5LCAweDAyYmM3ZmY5LCAweDAyY2E3ZmY4LCAweDAyZDg3ZmY4LCANCisJMHgwMmU3N2ZmOCwgMHgwMmY1N2ZmNywgMHgwMzA0N2ZmNywgMHgwMzEyN2ZmNywgMHgwMzIxN2ZmNiwgMHgwMzMxN2ZmNiwgMHgwMzQwN2ZmNSwgMHgwMzRmN2ZmNSwgDQorCTB4MDM1ZjdmZjUsIDB4MDM2ZjdmZjQsIDB4MDM3ZjdmZjQsIDB4MDM4ZjdmZjMsIDB4MDNhMDdmZjMsIDB4MDNiMDdmZjIsIDB4MDNjMTdmZjIsIDB4MDNkMjdmZjEsIA0KKwkweDAzZTM3ZmYxLCAweDAzZjU3ZmYwLCAweDA0MDY3ZmYwLCAweDA0MTg3ZmVmLCAweDA0MmE3ZmVmLCAweDA0M2M3ZmVlLCAweDA0NGY3ZmVkLCAweDA0NjE3ZmVkLCANCisJMHgwNDc0N2ZlYywgMHgwNDg3N2ZlYiwgMHgwNDlhN2ZlYiwgMHgwNGFlN2ZlYSwgMHgwNGMxN2ZlOSwgMHgwNGQ1N2ZlOSwgMHgwNGU5N2ZlOCwgMHgwNGZkN2ZlNywgDQorCTB4MDUxMjdmZTYsIDB4MDUyNzdmZTUsIDB4MDUzYjdmZTUsIDB4MDU1MDdmZTQsIDB4MDU2NjdmZTMsIDB4MDU3YjdmZTIsIDB4MDU5MTdmZTEsIDB4MDVhNzdmZTAsIA0KKwkweDA1YmQ3ZmRmLCAweDA1ZDM3ZmRlLCAweDA1ZWE3ZmRkLCAweDA2MDE3ZmRjLCAweDA2MTg3ZmRiLCAweDA2MmY3ZmRhLCAweDA2NDY3ZmQ5LCAweDA2NWU3ZmQ3LCANCisJMHgwNjc2N2ZkNiwgMHgwNjhlN2ZkNSwgMHgwNmE2N2ZkNCwgMHgwNmJmN2ZkMiwgMHgwNmQ4N2ZkMSwgMHgwNmYxN2ZkMCwgMHgwNzBhN2ZjZSwgMHgwNzIzN2ZjZCwgDQorCTB4MDczZDdmY2MsIDB4MDc1NzdmY2EsIDB4MDc3MTdmYzksIDB4MDc4YzdmYzcsIDB4MDdhNjdmYzUsIDB4MDdjMTdmYzQsIDB4MDdkYzdmYzIsIDB4MDdmNzdmYzAsIA0KKwkweDA4MTM3ZmJmLCAweDA4MmY3ZmJkLCAweDA4NGI3ZmJiLCAweDA4Njc3ZmI5LCAweDA4ODQ3ZmI3LCAweDA4YTA3ZmI2LCAweDA4YmQ3ZmI0LCAweDA4ZGE3ZmIyLCANCisJMHgwOGY4N2ZhZiwgMHgwOTE2N2ZhZCwgMHgwOTM0N2ZhYiwgMHgwOTUyN2ZhOSwgMHgwOTcwN2ZhNywgMHgwOThmN2ZhNSwgMHgwOWFlN2ZhMiwgMHgwOWNkN2ZhMCwgDQorCTB4MDllYzdmOWQsIDB4MGEwYzdmOWIsIDB4MGEyYzdmOTgsIDB4MGE0YzdmOTYsIDB4MGE2YzdmOTMsIDB4MGE4ZDdmOTEsIDB4MGFhZTdmOGUsIDB4MGFjZjdmOGIsIA0KKwkweDBhZjA3Zjg4LCAweDBiMTI3Zjg1LCAweDBiMzM3ZjgyLCAweDBiNTU3ZjdmLCAweDBiNzg3ZjdjLCAweDBiOWE3Zjc5LCAweDBiYmQ3Zjc2LCAweDBiZTA3ZjczLCANCisJMHgwYzA0N2Y2ZiwgMHgwYzI3N2Y2YywgMHgwYzRiN2Y2OSwgMHgwYzZmN2Y2NSwgMHgwYzkzN2Y2MSwgMHgwY2I4N2Y1ZSwgMHgwY2RkN2Y1YSwgMHgwZDAyN2Y1NiwgDQorCTB4MGQyNzdmNTMsIDB4MGQ0ZDdmNGYsIDB4MGQ3MzdmNGIsIDB4MGQ5OTdmNDcsIDB4MGRiZjdmNDMsIDB4MGRlNjdmM2UsIDB4MGUwYzdmM2EsIDB4MGUzNDdmMzYsIA0KKwkweDBlNWI3ZjMxLCAweDBlODM3ZjJkLCAweDBlYWE3ZjI4LCAweDBlZDM3ZjI0LCAweDBlZmI3ZjFmLCAweDBmMjM3ZjFhLCAweDBmNGM3ZjE1LCAweDBmNzU3ZjEwLCANCisJMHgwZjlmN2YwYiwgMHgwZmM4N2YwNiwgMHgwZmYyN2YwMSwgMHgxMDFjN2VmYiwgMHgxMDQ3N2VmNiwgMHgxMDcxN2VmMCwgMHgxMDljN2VlYiwgMHgxMGM4N2VlNSwgDQorCTB4MTBmMzdlZGYsIDB4MTExZjdlZGEsIDB4MTE0YTdlZDQsIDB4MTE3NzdlY2UsIDB4MTFhMzdlYzcsIDB4MTFkMDdlYzEsIDB4MTFmZDdlYmIsIDB4MTIyYTdlYjQsIA0KKwkweDEyNTc3ZWFlLCAweDEyODU3ZWE3LCAweDEyYjM3ZWEwLCAweDEyZTE3ZTlhLCAweDEzMGY3ZTkzLCAweDEzM2U3ZThjLCAweDEzNmQ3ZTg0LCAweDEzOWM3ZTdkLCANCisJMHgxM2NjN2U3NiwgMHgxM2ZiN2U2ZSwgMHgxNDJiN2U2NywgMHgxNDViN2U1ZiwgMHgxNDhjN2U1NywgMHgxNGJjN2U0ZiwgMHgxNGVkN2U0NywgMHgxNTFlN2UzZiwgDQorCTB4MTU1MDdlMzcsIDB4MTU4MTdlMmUsIDB4MTViMzdlMjYsIDB4MTVlNTdlMWQsIDB4MTYxODdlMTQsIDB4MTY0YTdlMGIsIDB4MTY3ZDdlMDIsIDB4MTZiMDdkZjksIA0KKwkweDE2ZTQ3ZGYwLCAweDE3MTc3ZGU2LCAweDE3NGI3ZGRkLCAweDE3N2Y3ZGQzLCAweDE3YjM3ZGM5LCAweDE3ZTg3ZGJmLCAweDE4MWQ3ZGI1LCAweDE4NTI3ZGFiLCANCisJMHgxODg3N2RhMSwgMHgxOGJjN2Q5NiwgMHgxOGYyN2Q4YywgMHgxOTI4N2Q4MSwgMHgxOTVlN2Q3NiwgMHgxOTk1N2Q2YiwgMHgxOWNiN2Q2MCwgMHgxYTAyN2Q1NCwgDQorCTB4MWEzOTdkNDksIDB4MWE3MTdkM2QsIDB4MWFhODdkMzEsIDB4MWFlMDdkMjYsIDB4MWIxODdkMTksIDB4MWI1MDdkMGQsIDB4MWI4OTdkMDEsIDB4MWJjMjdjZjQsIA0KKwkweDFiZmI3Y2U4LCAweDFjMzQ3Y2RiLCAweDFjNmQ3Y2NlLCAweDFjYTc3Y2MxLCAweDFjZTE3Y2IzLCAweDFkMWI3Y2E2LCAweDFkNTU3Yzk4LCAweDFkOGY3YzhhLCANCisJMHgxZGNhN2M3YywgMHgxZTA1N2M2ZSwgMHgxZTQwN2M2MCwgMHgxZTdiN2M1MSwgMHgxZWI3N2M0MywgMHgxZWYzN2MzNCwgMHgxZjJmN2MyNSwgMHgxZjZiN2MxNiwgDQorCTB4MWZhNzdjMDYsIDB4MWZlNDdiZjcsIDB4MjAyMTdiZTcsIDB4MjA1ZTdiZDcsIDB4MjA5YjdiYzcsIDB4MjBkODdiYjcsIDB4MjExNjdiYTYsIDB4MjE1NDdiOTYsIA0KKwkweDIxOTI3Yjg1LCAweDIxZDA3Yjc0LCAweDIyMGU3YjYzLCAweDIyNGQ3YjUyLCAweDIyOGM3YjQwLCAweDIyY2I3YjJlLCAweDIzMGE3YjFjLCAweDIzNDk3YjBhLCANCisJMHgyMzg5N2FmOCwgMHgyM2M4N2FlNiwgMHgyNDA4N2FkMywgMHgyNDQ4N2FjMCwgMHgyNDg5N2FhZCwgMHgyNGM5N2E5YSwgMHgyNTBhN2E4NiwgMHgyNTRiN2E3MywgDQorCTB4MjU4YzdhNWYsIDB4MjVjZDdhNGIsIDB4MjYwZTdhMzYsIDB4MjY1MDdhMjIsIDB4MjY5MTdhMGQsIDB4MjZkMzc5ZjgsIDB4MjcxNTc5ZTMsIDB4Mjc1Nzc5Y2UsIA0KKwkweDI3OWE3OWI4LCAweDI3ZGM3OWEzLCAweDI4MWY3OThkLCAweDI4NjI3OTc3LCAweDI4YTU3OTYwLCAweDI4ZTg3OTRhLCAweDI5MmI3OTMzLCAweDI5NmY3OTFjLCANCisJMHgyOWIyNzkwNSwgMHgyOWY2NzhlZCwgMHgyYTNhNzhkNiwgMHgyYTdlNzhiZSwgMHgyYWMyNzhhNiwgMHgyYjA3Nzg4ZCwgMHgyYjRiNzg3NSwgMHgyYjkwNzg1YywgDQorCTB4MmJkNDc4NDMsIDB4MmMxOTc4MmEsIDB4MmM1ZTc4MTAsIDB4MmNhNDc3ZjcsIDB4MmNlOTc3ZGQsIDB4MmQyZTc3YzMsIDB4MmQ3NDc3YTgsIDB4MmRiYTc3OGUsIA0KKwkweDJkZmY3NzczLCAweDJlNDU3NzU4LCAweDJlOGI3NzNkLCAweDJlZDI3NzIxLCAweDJmMTg3NzA2LCAweDJmNWU3NmVhLCAweDJmYTU3NmNkLCAweDJmZWM3NmIxLCANCisJMHgzMDMyNzY5NCwgMHgzMDc5NzY3NywgMHgzMGMwNzY1YSwgMHgzMTA3NzYzZCwgMHgzMTRlNzYxZiwgMHgzMTk2NzYwMSwgMHgzMWRkNzVlMywgMHgzMjI1NzVjNSwgDQorCTB4MzI2Yzc1YTYsIDB4MzJiNDc1ODgsIDB4MzJmYzc1NjksIDB4MzM0NDc1NDksIDB4MzM4Yzc1MmEsIDB4MzNkNDc1MGEsIDB4MzQxYzc0ZWEsIDB4MzQ2NDc0Y2EsIA0KKwkweDM0YWM3NGE5LCAweDM0ZjU3NDg4LCAweDM1M2Q3NDY3LCAweDM1ODU3NDQ2LCAweDM1Y2U3NDI0LCAweDM2MTc3NDAzLCAweDM2NWY3M2UxLCAweDM2YTg3M2JlLCANCisJMHgzNmYxNzM5YywgMHgzNzNhNzM3OSwgMHgzNzgzNzM1NiwgMHgzN2NjNzMzMywgMHgzODE1NzMwZiwgMHgzODVlNzJlYywgMHgzOGE3NzJjOCwgMHgzOGYxNzJhMywgDQorCTB4MzkzYTcyN2YsIDB4Mzk4MzcyNWEsIDB4MzljZDcyMzUsIDB4M2ExNjcyMTAsIDB4M2E2MDcxZWEsIDB4M2FhOTcxYzQsIDB4M2FmMzcxOWUsIDB4M2IzYzcxNzgsIA0KKwkweDNiODY3MTUxLCAweDNiZDA3MTJiLCAweDNjMTk3MTA0LCAweDNjNjM3MGRjLCAweDNjYWQ3MGI1LCAweDNjZjc3MDhkLCAweDNkNDA3MDY1LCAweDNkOGE3MDNjLCANCisJMHgzZGQ0NzAxNCwgMHgzZTFlNmZlYiwgMHgzZTY4NmZjMiwgMHgzZWIxNmY5OCwgMHgzZWZiNmY2ZiwgMHgzZjQ1NmY0NSwgMHgzZjhmNmYxYiwgMHgzZmQ5NmVmMCwgDQorCTB4NDAyMzZlYzYsIDB4NDA2ZDZlOWIsIDB4NDBiNjZlNzAsIDB4NDEwMDZlNDQsIDB4NDE0YTZlMTksIDB4NDE5NDZkZWQsIDB4NDFkZTZkYzEsIDB4NDIyODZkOTQsIA0KKwkweDQyNzE2ZDY4LCAweDQyYmI2ZDNiLCAweDQzMDU2ZDBkLCAweDQzNGY2Y2UwLCAweDQzOTg2Y2IyLCAweDQzZTI2Yzg0LCAweDQ0MmM2YzU2LCAweDQ0NzU2YzI4LCANCisJMHg0NGJmNmJmOSwgMHg0NTA4NmJjYSwgMHg0NTUyNmI5YiwgMHg0NTliNmI2YiwgMHg0NWU1NmIzYywgMHg0NjJlNmIwYywgMHg0Njc4NmFkYiwgMHg0NmMxNmFhYiwgDQorCTB4NDcwYTZhN2EsIDB4NDc1MzZhNDksIDB4NDc5YzZhMTgsIDB4NDdlNTY5ZTcsIDB4NDgyZTY5YjUsIDB4NDg3NzY5ODMsIDB4NDhjMDY5NTEsIDB4NDkwOTY5MWUsIA0KKwkweDQ5NTI2OGVjLCAweDQ5OWI2OGI5LCAweDQ5ZTM2ODg1LCAweDRhMmM2ODUyLCAweDRhNzQ2ODFlLCAweDRhYmQ2N2VhLCAweDRiMDU2N2I2LCAweDRiNGQ2NzgyLCANCisJMHg0Yjk1Njc0ZCwgMHg0YmRlNjcxOCwgMHg0YzI2NjZlMywgMHg0YzZkNjZhZSwgMHg0Y2I1NjY3OCwgMHg0Y2ZkNjY0MiwgMHg0ZDQ1NjYwYywgMHg0ZDhjNjVkNiwgDQorCTB4NGRkNDY1OWYsIDB4NGUxYjY1NjgsIDB4NGU2MjY1MzEsIDB4NGVhOTY0ZmEsIDB4NGVmMDY0YzMsIDB4NGYzNzY0OGIsIDB4NGY3ZTY0NTMsIDB4NGZjNTY0MWIsIA0KKwkweDUwMGI2M2UyLCAweDUwNTI2M2FhLCAweDUwOTg2MzcxLCAweDUwZGY2MzM4LCAweDUxMjU2MmZlLCAweDUxNmI2MmM1LCAweDUxYjE2MjhiLCAweDUxZjY2MjUxLCANCisJMHg1MjNjNjIxNywgMHg1MjgxNjFkYywgMHg1MmM3NjFhMiwgMHg1MzBjNjE2NywgMHg1MzUxNjEyYywgMHg1Mzk2NjBmMSwgMHg1M2RiNjBiNSwgMHg1NDIwNjA3OSwgDQorCTB4NTQ2NDYwM2QsIDB4NTRhOTYwMDEsIDB4NTRlZDVmYzUsIDB4NTUzMTVmODgsIDB4NTU3NTVmNGIsIDB4NTViOTVmMGUsIDB4NTVmYzVlZDEsIDB4NTY0MDVlOTQsIA0KKwkweDU2ODM1ZTU2LCAweDU2Yzc1ZTE4LCAweDU3MGE1ZGRhLCAweDU3NGQ1ZDljLCAweDU3OGY1ZDVlLCAweDU3ZDI1ZDFmLCAweDU4MTQ1Y2UwLCAweDU4NTY1Y2ExLCANCisJMHg1ODk5NWM2MiwgMHg1OGRhNWMyMywgMHg1OTFjNWJlMywgMHg1OTVlNWJhNCwgMHg1OTlmNWI2NCwgMHg1OWUwNWIyNCwgMHg1YTIxNWFlMywgMHg1YTYyNWFhMworfTsKKworCisvKgorICBmb3JtIGZhY3RvcgorKi8KKy8qIHNxcnQoKChpKygxPDwoRkZfU1FSVF9CSVRTLTIpKzAuNSkvMl4zMSkgKi8KK2NvbnN0IFdvcmQzMiBmb3JtZmFjX3NxcnR0YWJsZVs5Nl0gPSB7CisgIDB4MDAwNDA3ZjgsIDB4MDAwNDE3YjksIDB4MDAwNDI3M2YsIDB4MDAwNDM2OGMsIDB4MDAwNDQ1YTEsIDB4MDAwNDU0ODMsIDB4MDAwNDYzMzIsIDB4MDAwNDcxYjAsCisgIDB4MDAwNDgwMDAsIDB4MDAwNDhlMjIsIDB4MDAwNDljMWEsIDB4MDAwNGE5ZTcsIDB4MDAwNGI3OGMsIDB4MDAwNGM1MGEsIDB4MDAwNGQyNjMsIDB4MDAwNGRmOTYsCisgIDB4MDAwNGVjYTcsIDB4MDAwNGY5OTUsIDB4MDAwNTA2NjIsIDB4MDAwNTEzMGUsIDB4MDAwNTFmOWMsIDB4MDAwNTJjMGEsIDB4MDAwNTM4NWIsIDB4MDAwNTQ0OTAsCisgIDB4MDAwNTUwYTgsIDB4MDAwNTVjYTUsIDB4MDAwNTY4ODgsIDB4MDAwNTc0NTAsIDB4MDAwNTgwMDAsIDB4MDAwNThiOTYsIDB4MDAwNTk3MTUsIDB4MDAwNWEyN2MsCisgIDB4MDAwNWFkY2MsIDB4MDAwNWI5MDYsIDB4MDAwNWM0MmIsIDB4MDAwNWNmMzksIDB4MDAwNWRhMzMsIDB4MDAwNWU1MTksIDB4MDAwNWVmZWEsIDB4MDAwNWZhYTgsCisgIDB4MDAwNjA1NTIsIDB4MDAwNjBmZWEsIDB4MDAwNjFhNzAsIDB4MDAwNjI0ZTMsIDB4MDAwNjJmNDUsIDB4MDAwNjM5OTYsIDB4MDAwNjQzZDUsIDB4MDAwNjRlMDQsCisgIDB4MDAwNjU4MjMsIDB4MDAwNjYyMzEsIDB4MDAwNjZjMzAsIDB4MDAwNjc2MWYsIDB4MDAwNjgwMDAsIDB4MDAwNjg5ZDEsIDB4MDAwNjkzOTMsIDB4MDAwNjlkNDcsCisgIDB4MDAwNmE2ZWQsIDB4MDAwNmIwODUsIDB4MDAwNmJhMTAsIDB4MDAwNmMzOGQsIDB4MDAwNmNjZmMsIDB4MDAwNmQ2NWYsIDB4MDAwNmRmYjUsIDB4MDAwNmU4ZmUsCisgIDB4MDAwNmYyM2IsIDB4MDAwNmZiNmMsIDB4MDAwNzA0OTAsIDB4MDAwNzBkYTksIDB4MDAwNzE2YjYsIDB4MDAwNzFmYjgsIDB4MDAwNzI4YWUsIDB4MDAwNzMxOTksCisgIDB4MDAwNzNhNzksIDB4MDAwNzQzNGUsIDB4MDAwNzRjMTksIDB4MDAwNzU0ZDksIDB4MDAwNzVkOGUsIDB4MDAwNzY2M2EsIDB4MDAwNzZlZGIsIDB4MDAwNzc3NzIsCisgIDB4MDAwNzgwMDAsIDB4MDAwNzg4ODMsIDB4MDAwNzkwZmQsIDB4MDAwNzk5NmUsIDB4MDAwN2ExZDUsIDB4MDAwN2FhMzMsIDB4MDAwN2IyODgsIDB4MDAwN2JhZDQsCisgIDB4MDAwN2MzMTgsIDB4MDAwN2NiNTIsIDB4MDAwN2QzODQsIDB4MDAwN2RiYWQsIDB4MDAwN2UzY2UsIDB4MDAwN2ViZTYsIDB4MDAwN2YzZjYsIDB4MDAwN2ZiZmUKK307CisKKworCisvKiEKKyAgXG5hbWUgICAgcXVhbnRpemVyIGFuZCBpbnZlcnNlIHF1YW50aXplciB0YWJsZXMKKworICBcYnJpZWYgICB0aGVzZSB0YWJsZXMgYXJlIHVzZWQgZm9yIHRoZSBub24KKyAgICAgICAgICAgbGluZWFyIHF1YW50aXplciBhbmQgaW52ZXJzZSBxdWFudGl6ZXIKKyAgICAgICAgICAgCisqLworY29uc3QgV29yZDMyIG1UYWJfM180WzUxMl0gPSB7CisJMHg0YzFiZjgyOSwgMHg0YzM4ODBkZSwgMHg0YzU1MDYwMywgMHg0YzcxODc5YywgCisJMHg0YzhlMDVhYSwgMHg0Y2FhODAzMCwgMHg0Y2M2ZjcyZiwgMHg0Y2UzNmFhYiwgCisJMHg0Y2ZmZGFhNCwgMHg0ZDFjNDcxZCwgMHg0ZDM4YjAxOSwgMHg0ZDU1MTU5YSwgCisJMHg0ZDcxNzdhMSwgMHg0ZDhkZDYzMSwgMHg0ZGFhMzE0YiwgMHg0ZGM2ODhmMywgCisJMHg0ZGUyZGQyYSwgMHg0ZGZmMmRmMiwgMHg0ZTFiN2I0ZCwgMHg0ZTM3YzUzZCwgCisJMHg0ZTU0MGJjNSwgMHg0ZTcwNGVlNiwgMHg0ZThjOGVhMywgMHg0ZWE4Y2FmZCwgCisJMHg0ZWM1MDNmNywgMHg0ZWUxMzk5MiwgMHg0ZWZkNmJkMCwgMHg0ZjE5OWFiNCwgCisJMHg0ZjM1YzY0MCwgMHg0ZjUxZWU3NSwgMHg0ZjZlMTM1NiwgMHg0ZjhhMzRlNCwgCisJMHg0ZmE2NTMyMSwgMHg0ZmMyNmUxMCwgMHg0ZmRlODViMiwgMHg0ZmZhOWEwYSwgCisJMHg1MDE2YWIxOCwgMHg1MDMyYjhlMCwgMHg1MDRlYzM2MiwgMHg1MDZhY2FhMSwgCisJMHg1MDg2Y2VhMCwgMHg1MGEyY2Y1ZSwgMHg1MGJlY2NlMCwgMHg1MGRhYzcyNSwgCisJMHg1MGY2YmUzMSwgMHg1MTEyYjIwNSwgMHg1MTJlYTJhMywgMHg1MTRhOTAwZCwgCisJMHg1MTY2N2E0NSwgMHg1MTgyNjE0YywgMHg1MTllNDUyNCwgMHg1MWJhMjVjZiwgCisJMHg1MWQ2MDM1MCwgMHg1MWYxZGRhNywgMHg1MjBkYjRkNiwgMHg1MjI5ODhlMCwgCisJMHg1MjQ1NTljNiwgMHg1MjYxMjc4OSwgMHg1MjdjZjIyZCwgMHg1Mjk4YjliMSwgCisJMHg1MmI0N2UxOSwgMHg1MmQwM2Y2NSwgMHg1MmViZmQ5OCwgMHg1MzA3YjhiNCwgCisJMHg1MzIzNzBiOSwgMHg1MzNmMjVhYSwgMHg1MzVhZDc4OSwgMHg1Mzc2ODY1NiwgCisJMHg1MzkyMzIxNSwgMHg1M2FkZGFjNiwgMHg1M2M5ODA2YiwgMHg1M2U1MjMwNiwgCisJMHg1NDAwYzI5OCwgMHg1NDFjNWYyNCwgMHg1NDM3ZjhhYiwgMHg1NDUzOGYyZSwgCisJMHg1NDZmMjJhZiwgMHg1NDhhYjMzMCwgMHg1NGE2NDBiMywgMHg1NGMxY2IzOCwgCisJMHg1NGRkNTJjMiwgMHg1NGY4ZDc1MywgMHg1NTE0NThlYiwgMHg1NTJmZDc4ZCwgCisJMHg1NTRiNTMzOSwgMHg1NTY2Y2JmMywgMHg1NTgyNDFiYiwgMHg1NTlkYjQ5MiwgCisJMHg1NWI5MjQ3YiwgMHg1NWQ0OTE3NywgMHg1NWVmZmI4NywgMHg1NjBiNjJhZCwgCisJMHg1NjI2YzZlYiwgMHg1NjQyMjg0MiwgMHg1NjVkODZiNCwgMHg1Njc4ZTI0MiwgCisJMHg1Njk0M2FlZSwgMHg1NmFmOTBiOSwgMHg1NmNhZTNhNCwgMHg1NmU2MzNiMiwgCisJMHg1NzAxODBlNCwgMHg1NzFjY2IzYiwgMHg1NzM4MTJiOCwgMHg1NzUzNTc1ZSwgCisJMHg1NzZlOTkyZSwgMHg1Nzg5ZDgyOSwgMHg1N2E1MTQ1MCwgMHg1N2MwNGRhNiwgCisJMHg1N2RiODQyYiwgMHg1N2Y2YjdlMSwgMHg1ODExZThjOSwgMHg1ODJkMTZlNiwgCisJMHg1ODQ4NDIzOCwgMHg1ODYzNmFjMCwgMHg1ODdlOTA4MSwgMHg1ODk5YjM3YywgCisJMHg1OGI0ZDNiMSwgMHg1OGNmZjEyMywgMHg1OGViMGJkMywgMHg1OTA2MjNjMiwgCisJMHg1OTIxMzhmMiwgMHg1OTNjNGI2MywgMHg1OTU3NWIxOSwgMHg1OTcyNjgxMiwgCisJMHg1OThkNzI1MywgMHg1OWE4NzlkYSwgMHg1OWMzN2VhYiwgMHg1OWRlODBjNiwgCisJMHg1OWY5ODAyZCwgMHg1YTE0N2NlMCwgMHg1YTJmNzZlMiwgMHg1YTRhNmUzNCwgCisJMHg1YTY1NjJkNiwgMHg1YTgwNTRjYiwgMHg1YTliNDQxNCwgMHg1YWI2MzBiMiwgCisJMHg1YWQxMWFhNiwgMHg1YWVjMDFmMSwgMHg1YjA2ZTY5NiwgMHg1YjIxYzg5NSwgCisJMHg1YjNjYTdlZiwgMHg1YjU3ODRhNiwgMHg1YjcyNWViYywgMHg1YjhkMzYzMSwgCisJMHg1YmE4MGIwNiwgMHg1YmMyZGQzZSwgMHg1YmRkYWNkOSwgMHg1YmY4NzlkOCwgCisJMHg1YzEzNDQzZCwgMHg1YzJlMGMwOSwgMHg1YzQ4ZDEzZSwgMHg1YzYzOTNkYywgCisJMHg1YzdlNTNlNSwgMHg1Yzk5MTE1YSwgMHg1Y2IzY2MzYywgMHg1Y2NlODQ4ZCwgCisJMHg1Y2U5M2E0ZSwgMHg1ZDAzZWQ4MCwgMHg1ZDFlOWUyNCwgMHg1ZDM5NGMzYiwgCisJMHg1ZDUzZjdjNywgMHg1ZDZlYTBjOSwgMHg1ZDg5NDc0MiwgMHg1ZGEzZWIzMywgCisJMHg1ZGJlOGM5ZSwgMHg1ZGQ5MmI4NCwgMHg1ZGYzYzdlNSwgMHg1ZTBlNjFjMywgCisJMHg1ZTI4ZjkyMCwgMHg1ZTQzOGRmYywgMHg1ZTVlMjA1OSwgMHg1ZTc4YjAzNywgCisJMHg1ZTkzM2Q5OSwgMHg1ZWFkYzg3ZSwgMHg1ZWM4NTBlOSwgMHg1ZWUyZDZkYSwgCisJMHg1ZWZkNWE1MywgMHg1ZjE3ZGI1NCwgMHg1ZjMyNTllMCwgMHg1ZjRjZDVmNiwgCisJMHg1ZjY3NGY5OSwgMHg1ZjgxYzZjOCwgMHg1ZjljM2I4NywgMHg1ZmI2YWRkNCwgCisJMHg1ZmQxMWRiMywgMHg1ZmViOGIyMywgMHg2MDA1ZjYyNiwgMHg2MDIwNWViZCwgCisJMHg2MDNhYzRlOSwgMHg2MDU1MjhhYywgMHg2MDZmOGEwNSwgMHg2MDg5ZThmNywgCisJMHg2MGE0NDU4MywgMHg2MGJlOWZhOSwgMHg2MGQ4Zjc2YiwgMHg2MGYzNGNjYSwgCisJMHg2MTBkOWZjNywgMHg2MTI3ZjA2MiwgMHg2MTQyM2U5ZSwgMHg2MTVjOGE3YSwgCisJMHg2MTc2ZDNmOSwgMHg2MTkxMWIxYiwgMHg2MWFiNWZlMSwgMHg2MWM1YTI0ZCwgCisJMHg2MWRmZTI1ZiwgMHg2MWZhMjAxOCwgMHg2MjE0NWI3YSwgMHg2MjJlOTQ4NSwgCisJMHg2MjQ4Y2IzYiwgMHg2MjYyZmY5ZCwgMHg2MjdkMzFhYiwgMHg2Mjk3NjE2NywgCisJMHg2MmIxOGVkMSwgMHg2MmNiYjllYiwgMHg2MmU1ZTJiNiwgMHg2MzAwMDkzMywgCisJMHg2MzFhMmQ2MiwgMHg2MzM0NGY0NSwgMHg2MzRlNmVkZCwgMHg2MzY4OGMyYiwgCisJMHg2MzgyYTczMCwgMHg2MzljYmZlYywgMHg2M2I2ZDY2MSwgMHg2M2QwZWE5MCwgCisJMHg2M2VhZmM3YSwgMHg2NDA1MGMxZiwgMHg2NDFmMTk4MiwgMHg2NDM5MjRhMiwgCisJMHg2NDUzMmQ4MCwgMHg2NDZkMzQxZiwgMHg2NDg3Mzg3ZSwgMHg2NGExM2E5ZSwgCisJMHg2NGJiM2E4MSwgMHg2NGQ1MzgyOCwgMHg2NGVmMzM5MywgMHg2NTA5MmNjNCwgCisJMHg2NTIzMjNiYiwgMHg2NTNkMTg3OSwgMHg2NTU3MGIwMCwgMHg2NTcwZmI1MCwgCisJMHg2NThhZTk2YiwgMHg2NWE0ZDU1MCwgMHg2NWJlYmYwMSwgMHg2NWQ4YTY4MCwgCisJMHg2NWYyOGJjYywgMHg2NjBjNmVlOCwgMHg2NjI2NGZkMywgMHg2NjQwMmU4ZiwgCisJMHg2NjVhMGIxYywgMHg2NjczZTU3ZCwgMHg2NjhkYmRiMCwgMHg2NmE3OTNiOCwgCisJMHg2NmMxNjc5NSwgMHg2NmRiMzk0OSwgMHg2NmY1MDhkNCwgMHg2NzBlZDYzNiwgCisJMHg2NzI4YTE3MiwgMHg2NzQyNmE4NywgMHg2NzVjMzE3NywgMHg2Nzc1ZjY0MywgCisJMHg2NzhmYjhlYiwgMHg2N2E5Nzk3MSwgMHg2N2MzMzdkNSwgMHg2N2RjZjQxOCwgCisJMHg2N2Y2YWUzYiwgMHg2ODEwNjYzZiwgMHg2ODJhMWMyNSwgMHg2ODQzY2ZlZCwgCisJMHg2ODVkODE5OSwgMHg2ODc3MzEyOSwgMHg2ODkwZGU5ZiwgMHg2OGFhODlmYSwgCisJMHg2OGM0MzMzZCwgMHg2OGRkZGE2NywgMHg2OGY3N2Y3YSwgMHg2OTExMjI3NywgCisJMHg2OTJhYzM1ZSwgMHg2OTQ0NjIzMCwgMHg2OTVkZmVlZSwgMHg2OTc3OTk5YSwgCisJMHg2OTkxMzIzMiwgMHg2OWFhYzhiYSwgMHg2OWM0NWQzMSwgMHg2OWRkZWY5OCwgCisJMHg2OWY3N2ZmMCwgMHg2YTExMGUzYSwgMHg2YTJhOWE3NywgMHg2YTQ0MjRhOCwgCisJMHg2YTVkYWNjYywgMHg2YTc3MzJlNiwgMHg2YTkwYjZmNiwgMHg2YWFhMzhmZCwgCisJMHg2YWMzYjhmYiwgMHg2YWRkMzZmMiwgMHg2YWY2YjJlMiwgMHg2YjEwMmNjZCwgCisJMHg2YjI5YTRiMiwgMHg2YjQzMWE5MiwgMHg2YjVjOGU2ZiwgMHg2Yjc2MDA0YSwgCisJMHg2YjhmNzAyMiwgMHg2YmE4ZGRmOSwgMHg2YmMyNDlkMCwgMHg2YmRiYjNhNywgCisJMHg2YmY1MWI4MCwgMHg2YzBlODE1YSwgMHg2YzI3ZTUzNywgMHg2YzQxNDcxOCwgCisJMHg2YzVhYTZmZCwgMHg2Yzc0MDRlNywgMHg2YzhkNjBkNywgMHg2Y2E2YmFjZSwgCisJMHg2Y2MwMTJjYywgMHg2Y2Q5NjhkMiwgMHg2Y2YyYmNlMSwgMHg2ZDBjMGVmOSwgCisJMHg2ZDI1NWYxZCwgMHg2ZDNlYWQ0YiwgMHg2ZDU3Zjk4NSwgMHg2ZDcxNDNjYywgCisJMHg2ZDhhOGMyMSwgMHg2ZGEzZDI4MywgMHg2ZGJkMTZmNSwgMHg2ZGQ2NTk3NiwgCisJMHg2ZGVmOWEwOCwgMHg2ZTA4ZDhhYiwgMHg2ZTIyMTU2MCwgMHg2ZTNiNTAyNywgCisJMHg2ZTU0ODkwMiwgMHg2ZTZkYmZmMSwgMHg2ZTg2ZjRmNSwgMHg2ZWEwMjgwZSwgCisJMHg2ZWI5NTkzZSwgMHg2ZWQyODg4NSwgMHg2ZWViYjVlMywgMHg2ZjA0ZTE1YSwgCisJMHg2ZjFlMGFlYSwgMHg2ZjM3MzI5NCwgMHg2ZjUwNTg1OSwgMHg2ZjY5N2MzOSwgCisJMHg2ZjgyOWUzNSwgMHg2ZjliYmU0ZSwgMHg2ZmI0ZGM4NSwgMHg2ZmNkZjhkOSwgCisJMHg2ZmU3MTM0ZCwgMHg3MDAwMmJlMCwgMHg3MDE5NDI5MywgMHg3MDMyNTc2NywgCisJMHg3MDRiNmE1ZCwgMHg3MDY0N2I3NiwgMHg3MDdkOGFiMSwgMHg3MDk2OTgxMSwgCisJMHg3MGFmYTM5NCwgMHg3MGM4YWQzZCwgMHg3MGUxYjUwYywgMHg3MGZhYmIwMSwgCisJMHg3MTEzYmYxZCwgMHg3MTJjYzE2MSwgMHg3MTQ1YzFjZSwgMHg3MTVlYzA2NCwgCisJMHg3MTc3YmQyNCwgMHg3MTkwYjgwZiwgMHg3MWE5YjEyNCwgMHg3MWMyYTg2NiwgCisJMHg3MWRiOWRkNCwgMHg3MWY0OTE3MCwgMHg3MjBkODMzOSwgMHg3MjI2NzMzMSwgCisJMHg3MjNmNjE1OSwgMHg3MjU4NGRiMCwgMHg3MjcxMzgzOCwgMHg3MjhhMjBmMSwgCisJMHg3MmEzMDdkYiwgMHg3MmJiZWNmOSwgMHg3MmQ0ZDA0OSwgMHg3MmVkYjFjZSwgCisJMHg3MzA2OTE4NywgMHg3MzFmNmY3NSwgMHg3MzM4NGI5OCwgMHg3MzUxMjVmMywgCisJMHg3MzY5ZmU4NCwgMHg3MzgyZDU0ZCwgMHg3MzliYWE0ZSwgMHg3M2I0N2Q4OSwgCisJMHg3M2NkNGVmZCwgMHg3M2U2MWVhYiwgMHg3M2ZlZWM5NCwgMHg3NDE3YjhiOCwgCisJMHg3NDMwODMxOSwgMHg3NDQ5NGJiNiwgMHg3NDYyMTI5MSwgMHg3NDdhZDdhYSwgCisJMHg3NDkzOWIwMiwgMHg3NGFjNWM5OCwgMHg3NGM1MWM2ZiwgMHg3NGRkZGE4NiwgCisJMHg3NGY2OTZkZSwgMHg3NTBmNTE3OCwgMHg3NTI4MGE1NCwgMHg3NTQwYzE3NCwgCisJMHg3NTU5NzZkNywgMHg3NTcyMmE3ZSwgMHg3NThhZGM2OSwgMHg3NWEzOGM5YiwgCisJMHg3NWJjM2IxMiwgMHg3NWQ0ZTdjZiwgMHg3NWVkOTJkNCwgMHg3NjA2M2MyMSwgCisJMHg3NjFlZTNiNiwgMHg3NjM3ODk5NCwgMHg3NjUwMmRiYywgMHg3NjY4ZDAyZSwgCisJMHg3NjgxNzBlYiwgMHg3NjlhMGZmMywgMHg3NmIyYWQ0NywgMHg3NmNiNDhlNywgCisJMHg3NmUzZTJkNSwgMHg3NmZjN2IxMCwgMHg3NzE1MTE5YSwgMHg3NzJkYTY3MywgCisJMHg3NzQ2Mzk5YiwgMHg3NzVlY2IxMywgMHg3Nzc3NWFkYywgMHg3NzhmZThmNiwgCisJMHg3N2E4NzU2MSwgMHg3N2MxMDAxZiwgMHg3N2Q5ODkzMCwgMHg3N2YyMTA5NSwgCisJMHg3ODBhOTY0ZCwgMHg3ODIzMWE1YiwgMHg3ODNiOWNiZCwgMHg3ODU0MWQ3NSwgCisJMHg3ODZjOWM4NCwgMHg3ODg1MTllOSwgMHg3ODlkOTVhNiwgMHg3OGI2MGZiYiwgCisJMHg3OGNlODgyOCwgMHg3OGU2ZmVlZiwgMHg3OGZmNzQwZiwgMHg3OTE3ZTc4YSwgCisJMHg3OTMwNTk1ZiwgMHg3OTQ4Yzk5MCwgMHg3OTYxMzgxZCwgMHg3OTc5YTUwNiwgCisJMHg3OTkyMTA0YywgMHg3OWFhNzlmMCwgMHg3OWMyZTFmMSwgMHg3OWRiNDg1MiwgCisJMHg3OWYzYWQxMSwgMHg3YTBjMTAzMSwgMHg3YTI0NzFiMCwgMHg3YTNjZDE5MSwgCisJMHg3YTU1MmZkMywgMHg3YTZkOGM3NiwgMHg3YTg1ZTc3ZCwgMHg3YTllNDBlNiwgCisJMHg3YWI2OThiMiwgMHg3YWNlZWVlMywgMHg3YWU3NDM3OCwgMHg3YWZmOTY3MywgCisJMHg3YjE3ZTdkMiwgMHg3YjMwMzc5OSwgMHg3YjQ4ODVjNSwgMHg3YjYwZDI1OSwgCisJMHg3Yjc5MWQ1NSwgMHg3YjkxNjZiOSwgMHg3YmE5YWU4NiwgMHg3YmMxZjRiYywgCisJMHg3YmRhMzk1YywgMHg3YmYyN2M2NiwgMHg3YzBhYmRkYiwgMHg3YzIyZmRiYiwgCisJMHg3YzNiM2MwNywgMHg3YzUzNzhjMCwgMHg3YzZiYjNlNSwgMHg3YzgzZWQ3OCwgCisJMHg3YzljMjU3OSwgMHg3Y2I0NWJlOSwgMHg3Y2NjOTBjNywgMHg3Y2U0YzQxNCwgCisJMHg3Y2ZjZjVkMiwgMHg3ZDE1MjYwMCwgMHg3ZDJkNTQ5ZiwgMHg3ZDQ1ODFiMCwgCisJMHg3ZDVkYWQzMiwgMHg3ZDc1ZDcyNywgMHg3ZDhkZmY4ZiwgMHg3ZGE2MjY2YSwgCisJMHg3ZGJlNGJiYSwgMHg3ZGQ2NmY3ZCwgMHg3ZGVlOTFiNiwgMHg3ZTA2YjI2NCwgCisJMHg3ZTFlZDE4OCwgMHg3ZTM2ZWYyMiwgMHg3ZTRmMGIzNCwgMHg3ZTY3MjViZCwgCisJMHg3ZTdmM2ViZCwgMHg3ZTk3NTYzNiwgMHg3ZWFmNmMyOCwgMHg3ZWM3ODA5MywgCisJMHg3ZWRmOTM3OCwgMHg3ZWY3YTRkNywgMHg3ZjBmYjRiMSwgMHg3ZjI3YzMwNywgCisJMHg3ZjNmY2ZkOCwgMHg3ZjU3ZGIyNSwgMHg3ZjZmZTRlZiwgMHg3Zjg3ZWQzNiwgCisJMHg3ZjlmZjNmYiwgMHg3ZmI3ZjkzZSwgMHg3ZmNmZmNmZiwgMHg3ZmU3ZmY0MAorfTsKKworY29uc3QgV29yZDMyIG1UYWJfNF8zWzUxMl09eworCTB4MzJjYmZkNGEsIDB4MzJlZGRkNzAsIDB4MzMwZmMzMzksIDB4MzMzMWFlYTMsIAorCTB4MzM1MzlmYWMsIDB4MzM3NTk2NTIsIDB4MzM5NzkyOTQsIDB4MzNiOTk0NzAsIAorCTB4MzNkYjliZTQsIDB4MzNmZGE4ZWQsIDB4MzQxZmJiOGIsIDB4MzQ0MWQzYmIsIAorCTB4MzQ2M2YxN2MsIDB4MzQ4NjE0Y2MsIDB4MzRhODNkYTgsIDB4MzRjYTZjMTAsIAorCTB4MzRlY2EwMDEsIDB4MzUwZWQ5NzksIDB4MzUzMTE4NzcsIDB4MzU1MzVjZmEsIAorCTB4MzU3NWE2ZmUsIDB4MzU5N2Y2ODMsIDB4MzViYTRiODcsIDB4MzVkY2E2MDcsIAorCTB4MzVmZjA2MDMsIDB4MzYyMTZiNzgsIDB4MzY0M2Q2NjUsIDB4MzY2NjQ2YzcsIAorCTB4MzY4OGJjOWUsIDB4MzZhYjM3ZTgsIDB4MzZjZGI4YTIsIDB4MzZmMDNlY2IsIAorCTB4MzcxMmNhNjIsIDB4MzczNTViNjQsIDB4Mzc1N2YxZDEsIDB4Mzc3YThkYTUsIAorCTB4Mzc5ZDJlZTAsIDB4MzdiZmQ1ODAsIDB4MzdlMjgxODQsIDB4MzgwNTMyZTgsIAorCTB4MzgyN2U5YWQsIDB4Mzg0YWE1ZDAsIDB4Mzg2ZDY3NGYsIDB4Mzg5MDJlMmEsIAorCTB4MzhiMmZhNWQsIDB4MzhkNWNiZTksIDB4MzhmOGEyY2EsIDB4MzkxYjdlZmYsIAorCTB4MzkzZTYwODgsIDB4Mzk2MTQ3NjEsIDB4Mzk4NDMzOGEsIDB4MzlhNzI1MDEsIAorCTB4MzljYTFiYzQsIDB4MzllZDE3ZDEsIDB4M2ExMDE5MjgsIDB4M2EzMzFmYzYsIAorCTB4M2E1NjJiYWEsIDB4M2E3OTNjZDIsIDB4M2E5YzUzM2QsIDB4M2FiZjZlZTksIAorCTB4M2FlMjhmZDUsIDB4M2IwNWI1ZmYsIDB4M2IyOGUxNjUsIDB4M2I0YzEyMDYsIAorCTB4M2I2ZjQ3ZTAsIDB4M2I5MjgyZjIsIDB4M2JiNWMzM2EsIDB4M2JkOTA4YjcsIAorCTB4M2JmYzUzNjgsIDB4M2MxZmEzNDksIDB4M2M0MmY4NWIsIDB4M2M2NjUyOWMsIAorCTB4M2M4OWIyMDksIDB4M2NhZDE2YTIsIDB4M2NkMDgwNjUsIDB4M2NmM2VmNTEsIAorCTB4M2QxNzYzNjQsIDB4M2QzYWRjOWMsIDB4M2Q1ZTVhZjgsIDB4M2Q4MWRlNzcsIAorCTB4M2RhNTY3MTcsIDB4M2RjOGY0ZDYsIDB4M2RlYzg3YjQsIDB4M2UxMDFmYWUsIAorCTB4M2UzM2JjYzMsIDB4M2U1NzVlZjIsIDB4M2U3YjA2M2EsIDB4M2U5ZWIyOTgsIAorCTB4M2VjMjY0MGMsIDB4M2VlNjFhOTMsIDB4M2YwOWQ2MmQsIDB4M2YyZDk2ZDgsIAorCTB4M2Y1MTVjOTMsIDB4M2Y3NTI3NWIsIDB4M2Y5OGY3MzEsIDB4M2ZiY2NjMTEsIAorCTB4M2ZlMGE1ZmMsIDB4NDAwNDg0ZWYsIDB4NDAyODY4ZWEsIDB4NDA0YzUxZTksIAorCTB4NDA3MDNmZWUsIDB4NDA5NDMyZjUsIDB4NDBiODJhZmQsIDB4NDBkYzI4MDYsIAorCTB4NDEwMDJhMGQsIDB4NDEyNDMxMTEsIDB4NDE0ODNkMTIsIDB4NDE2YzRlMGQsIAorCTB4NDE5MDY0MDEsIDB4NDFiNDdlZWQsIDB4NDFkODllY2YsIDB4NDFmY2MzYTcsIAorCTB4NDIyMGVkNzIsIDB4NDI0NTFjMzAsIDB4NDI2OTRmZGUsIDB4NDI4ZDg4N2QsIAorCTB4NDJiMWM2MDksIDB4NDJkNjA4ODMsIDB4NDJmYTRmZTgsIDB4NDMxZTljMzcsIAorCTB4NDM0MmVkNzAsIDB4NDM2NzQzOTAsIDB4NDM4YjllOTYsIDB4NDNhZmZlODIsIAorCTB4NDNkNDYzNTEsIDB4NDNmOGNkMDMsIDB4NDQxZDNiOTUsIDB4NDQ0MWFmMDgsIAorCTB4NDQ2NjI3NTgsIDB4NDQ4YWE0ODcsIDB4NDRhZjI2OTAsIDB4NDRkM2FkNzUsIAorCTB4NDRmODM5MzMsIDB4NDUxY2M5YzgsIDB4NDU0MTVmMzUsIDB4NDU2NWY5NzcsIAorCTB4NDU4YTk4OGQsIDB4NDVhZjNjNzYsIDB4NDVkM2U1MzEsIDB4NDVmODkyYmMsIAorCTB4NDYxZDQ1MTYsIDB4NDY0MWZjM2UsIDB4NDY2NmI4MzIsIDB4NDY4Yjc4ZjIsIAorCTB4NDZiMDNlN2MsIDB4NDZkNTA4Y2YsIDB4NDZmOWQ3ZTksIDB4NDcxZWFiY2EsIAorCTB4NDc0Mzg0NzAsIDB4NDc2ODYxZDksIDB4NDc4ZDQ0MDYsIDB4NDdiMjJhZjMsIAorCTB4NDdkNzE2YTEsIDB4NDdmYzA3MGUsIDB4NDgyMGZjMzksIDB4NDg0NWY2MjAsIAorCTB4NDg2YWY0YzMsIDB4NDg4ZmY4MjAsIDB4NDhiNTAwMzUsIDB4NDhkYTBkMDMsIAorCTB4NDhmZjFlODcsIDB4NDkyNDM0YzAsIDB4NDk0OTRmYWQsIDB4NDk2ZTZmNGQsIAorCTB4NDk5MzkzOWYsIDB4NDliOGJjYTIsIDB4NDlkZGVhNTQsIDB4NGEwMzFjYjQsIAorCTB4NGEyODUzYzEsIDB4NGE0ZDhmN2EsIDB4NGE3MmNmZGUsIDB4NGE5ODE0ZWIsIAorCTB4NGFiZDVlYTEsIDB4NGFlMmFjZmQsIDB4NGIwODAwMDAsIDB4NGIyZDU3YTgsIAorCTB4NGI1MmIzZjMsIDB4NGI3ODE0ZTEsIDB4NGI5ZDdhNzAsIDB4NGJjMmU0OWYsIAorCTB4NGJlODUzNmUsIDB4NGMwZGM2ZGIsIDB4NGMzMzNlZTQsIDB4NGM1OGJiODksIAorCTB4NGM3ZTNjYzksIDB4NGNhM2MyYTIsIDB4NGNjOTRkMTQsIDB4NGNlZWRjMWMsIAorCTB4NGQxNDZmYmIsIDB4NGQzYTA3ZWYsIDB4NGQ1ZmE0YjYsIDB4NGQ4NTQ2MTEsIAorCTB4NGRhYWViZmQsIDB4NGRkMDk2NzksIDB4NGRmNjQ1ODUsIDB4NGUxYmY5MWYsIAorCTB4NGU0MWIxNDYsIDB4NGU2NzZkZmEsIDB4NGU4ZDJmMzgsIDB4NGViMmY1MDEsIAorCTB4NGVkOGJmNTIsIDB4NGVmZThlMmIsIDB4NGYyNDYxOGEsIDB4NGY0YTM5NzAsIAorCTB4NGY3MDE1ZDksIDB4NGY5NWY2YzYsIDB4NGZiYmRjMzYsIDB4NGZlMWM2MjYsIAorCTB4NTAwN2I0OTcsIDB4NTAyZGE3ODcsIDB4NTA1MzllZjUsIDB4NTA3OTlhZTEsIAorCTB4NTA5ZjliNDgsIDB4NTBjNWEwMmEsIDB4NTBlYmE5ODUsIDB4NTExMWI3NWEsIAorCTB4NTEzN2M5YTYsIDB4NTE1ZGUwNjksIDB4NTE4M2ZiYTIsIDB4NTFhYTFiNGYsIAorCTB4NTFkMDNmNzAsIDB4NTFmNjY4MDMsIDB4NTIxYzk1MDgsIDB4NTI0MmM2N2QsIAorCTB4NTI2OGZjNjIsIDB4NTI4ZjM2YjUsIDB4NTJiNTc1NzUsIDB4NTJkYmI4YTIsIAorCTB4NTMwMjAwM2EsIDB4NTMyODRjM2MsIDB4NTM0ZTljYTgsIDB4NTM3NGYxN2MsIAorCTB4NTM5YjRhYjcsIDB4NTNjMWE4NTgsIDB4NTNlODBhNWYsIDB4NTQwZTcwY2EsIAorCTB4NTQzNGRiOTgsIDB4NTQ1YjRhYzgsIDB4NTQ4MWJlNWEsIDB4NTRhODM2NGIsIAorCTB4NTRjZWIyOWMsIDB4NTRmNTMzNGMsIDB4NTUxYmI4NTgsIDB4NTU0MjQxYzEsIAorCTB4NTU2OGNmODUsIDB4NTU4ZjYxYTMsIDB4NTViNWY4MWIsIDB4NTVkYzkyZWIsIAorCTB4NTYwMzMyMTIsIDB4NTYyOWQ1OTAsIDB4NTY1MDdkNjMsIDB4NTY3NzI5OGEsIAorCTB4NTY5ZGRhMDUsIDB4NTZjNDhlZDMsIDB4NTZlYjQ3ZjIsIDB4NTcxMjA1NjIsIAorCTB4NTczOGM3MjEsIDB4NTc1ZjhkMmYsIDB4NTc4NjU3OGEsIDB4NTdhZDI2MzMsIAorCTB4NTdkM2Y5MjcsIDB4NTdmYWQwNjYsIDB4NTgyMWFiZWYsIDB4NTg0ODhiYzAsIAorCTB4NTg2ZjZmZGEsIDB4NTg5NjU4M2IsIDB4NThiZDQ0ZTIsIDB4NThlNDM1Y2UsIAorCTB4NTkwYjJhZmYsIDB4NTkzMjI0NzMsIDB4NTk1OTIyMjksIDB4NTk4MDI0MjAsIAorCTB4NTlhNzJhNTksIDB4NTljZTM0ZDAsIDB4NTlmNTQzODcsIDB4NWExYzU2N2IsIAorCTB4NWE0MzZkYWMsIDB4NWE2YTg5MTksIDB4NWE5MWE4YzEsIDB4NWFiOGNjYTMsIAorCTB4NWFkZmY0YmUsIDB4NWIwNzIxMTEsIDB4NWIyZTUxOWMsIDB4NWI1NTg2NWUsIAorCTB4NWI3Y2JmNTQsIDB4NWJhM2ZjODAsIDB4NWJjYjNkZGYsIDB4NWJmMjgzNzEsIAorCTB4NWMxOWNkMzUsIDB4NWM0MTFiMmEsIDB4NWM2ODZkNGYsIDB4NWM4ZmMzYTQsIAorCTB4NWNiNzFlMjcsIDB4NWNkZTdjZDcsIDB4NWQwNWRmYjQsIDB4NWQyZDQ2YmQsIAorCTB4NWQ1NGIxZjAsIDB4NWQ3YzIxNGUsIDB4NWRhMzk0ZDQsIDB4NWRjYjBjODMsIAorCTB4NWRmMjg4NTksIDB4NWUxYTA4NTYsIDB4NWU0MThjNzgsIDB4NWU2OTE0YmUsIAorCTB4NWU5MGExMjksIDB4NWViODMxYjcsIDB4NWVkZmM2NjcsIDB4NWYwNzVmMzgsIAorCTB4NWYyZWZjMjksIDB4NWY1NjlkM2EsIDB4NWY3ZTQyNmEsIDB4NWZhNWViYjcsIAorCTB4NWZjZDk5MjEsIDB4NWZmNTRhYTgsIDB4NjAxZDAwNGEsIDB4NjA0NGJhMDYsIAorCTB4NjA2Yzc3ZGMsIDB4NjA5NDM5Y2EsIDB4NjBiYmZmZDAsIDB4NjBlM2M5ZWUsIAorCTB4NjEwYjk4MjEsIDB4NjEzMzZhNmEsIDB4NjE1YjQwYzgsIDB4NjE4MzFiMzksIAorCTB4NjFhYWY5YmQsIDB4NjFkMmRjNTMsIDB4NjFmYWMyZmEsIDB4NjIyMmFkYjIsIAorCTB4NjI0YTljNzksIDB4NjI3MjhmNGYsIDB4NjI5YTg2MzMsIDB4NjJjMjgxMjMsIAorCTB4NjJlYTgwMjAsIDB4NjMxMjgzMjksIDB4NjMzYThhM2MsIDB4NjM2Mjk1NTksIAorCTB4NjM4YWE0N2YsIDB4NjNiMmI3YWQsIDB4NjNkYWNlZTIsIDB4NjQwMmVhMWUsIAorCTB4NjQyYjA5NjAsIDB4NjQ1MzJjYTYsIDB4NjQ3YjUzZjEsIDB4NjRhMzdmM2YsIAorCTB4NjRjYmFlOGYsIDB4NjRmM2UxZTIsIDB4NjUxYzE5MzUsIDB4NjU0NDU0ODgsIAorCTB4NjU2YzkzZGIsIDB4NjU5NGQ3MmMsIDB4NjViZDFlN2IsIDB4NjVlNTY5YzcsIAorCTB4NjYwZGI5MGYsIDB4NjYzNjBjNTMsIDB4NjY1ZTYzOTEsIDB4NjY4NmJlYzksIAorCTB4NjZhZjFkZmEsIDB4NjZkNzgxMjMsIDB4NjZmZmU4NDQsIDB4NjcyODUzNWIsIAorCTB4Njc1MGMyNjgsIDB4Njc3OTM1NmIsIDB4NjdhMWFjNjIsIDB4NjdjYTI3NGMsIAorCTB4NjdmMmE2MjksIDB4NjgxYjI4ZjksIDB4Njg0M2FmYjksIDB4Njg2YzNhNmEsIAorCTB4Njg5NGM5MGIsIDB4NjhiZDViOWIsIDB4NjhlNWYyMTksIDB4NjkwZThjODQsIAorCTB4NjkzNzJhZGQsIDB4Njk1ZmNkMjEsIDB4Njk4ODczNTAsIDB4NjliMTFkNmEsIAorCTB4NjlkOWNiNmQsIDB4NmEwMjdkNWEsIDB4NmEyYjMzMmYsIDB4NmE1M2VjZWIsIAorCTB4NmE3Y2FhOGQsIDB4NmFhNTZjMTYsIDB4NmFjZTMxODQsIDB4NmFmNmZhZDYsIAorCTB4NmIxZmM4MGMsIDB4NmI0ODk5MjUsIDB4NmI3MTZlMjAsIDB4NmI5YTQ2ZmQsIAorCTB4NmJjMzIzYmIsIDB4NmJlYzA0NTgsIDB4NmMxNGU4ZDUsIDB4NmMzZGQxMzAsIAorCTB4NmM2NmJkNjksIDB4NmM4ZmFkODAsIDB4NmNiOGExNzIsIDB4NmNlMTk5NDAsIAorCTB4NmQwYTk0ZTksIDB4NmQzMzk0NmQsIDB4NmQ1Yzk3Y2EsIDB4NmQ4NTllZmYsIAorCTB4NmRhZWFhMGQsIDB4NmRkN2I4ZjEsIDB4NmUwMGNiYWQsIDB4NmUyOWUyM2UsIAorCTB4NmU1MmZjYTQsIDB4NmU3YzFhZGYsIDB4NmVhNTNjZWUsIDB4NmVjZTYyY2YsIAorCTB4NmVmNzhjODMsIDB4NmYyMGJhMDksIDB4NmY0OWViNWYsIDB4NmY3MzIwODUsIAorCTB4NmY5YzU5N2IsIDB4NmZjNTk2NDAsIDB4NmZlZWQ2ZDMsIDB4NzAxODFiMzMsIAorCTB4NzA0MTYzNjAsIDB4NzA2YWFmNTksIDB4NzA5M2ZmMWQsIDB4NzBiZDUyYWIsIAorCTB4NzBlNmFhMDQsIDB4NzExMDA1MjUsIDB4NzEzOTY0MGYsIDB4NzE2MmM2YzEsIAorCTB4NzE4YzJkM2EsIDB4NzFiNTk3N2EsIDB4NzFkZjA1N2YsIDB4NzIwODc3NDksIAorCTB4NzIzMWVjZDgsIDB4NzI1YjY2MmEsIDB4NzI4NGUzM2YsIDB4NzJhZTY0MTcsIAorCTB4NzJkN2U4YjAsIDB4NzMwMTcxMGEsIDB4NzMyYWZkMjQsIDB4NzM1NDhjZmUsIAorCTB4NzM3ZTIwOTcsIDB4NzNhN2I3ZWUsIDB4NzNkMTUzMDMsIDB4NzNmYWYxZDUsIAorCTB4NzQyNDk0NjIsIDB4NzQ0ZTNhYWMsIDB4NzQ3N2U0YjAsIDB4NzRhMTkyNmUsIAorCTB4NzRjYjQzZTYsIDB4NzRmNGY5MTcsIDB4NzUxZWIyMDEsIDB4NzU0ODZlYTEsIAorCTB4NzU3MjJlZjksIDB4NzU5YmYzMDcsIDB4NzVjNWJhY2EsIDB4NzVlZjg2NDIsIAorCTB4NzYxOTU1NmYsIDB4NzY0MzI4NGYsIDB4NzY2Y2ZlZTIsIDB4NzY5NmQ5MjgsIAorCTB4NzZjMGI3MWYsIDB4NzZlYTk4YzcsIDB4NzcxNDdlMjAsIDB4NzczZTY3MjgsIAorCTB4Nzc2ODUzZGYsIDB4Nzc5MjQ0NDUsIDB4NzdiYzM4NTgsIDB4NzdlNjMwMTksIAorCTB4NzgxMDJiODUsIDB4NzgzYTJhOWUsIDB4Nzg2NDJkNjIsIDB4Nzg4ZTMzZDEsIAorCTB4NzhiODNkZTksIDB4NzhlMjRiYWIsIDB4NzkwYzVkMTUsIDB4NzkzNjcyMjgsIAorCTB4Nzk2MDhhZTEsIDB4Nzk4YWE3NDIsIDB4NzliNGM3NDgsIDB4NzlkZWVhZjQsIAorCTB4N2EwOTEyNDUsIDB4N2EzMzNkM2EsIDB4N2E1ZDZiZDIsIDB4N2E4NzllMGUsIAorCTB4N2FiMWQzZWMsIDB4N2FkYzBkNmIsIDB4N2IwNjRhOGMsIDB4N2IzMDhiNGQsIAorCTB4N2I1YWNmYWUsIDB4N2I4NTE3YWUsIDB4N2JhZjYzNGMsIDB4N2JkOWIyODksIAorCTB4N2MwNDA1NjMsIDB4N2MyZTViZGEsIDB4N2M1OGI1ZWMsIDB4N2M4MzEzOWIsIAorCTB4N2NhZDc0ZTQsIDB4N2NkN2Q5YzcsIDB4N2QwMjQyNDQsIDB4N2QyY2FlNWEsIAorCTB4N2Q1NzFlMDksIDB4N2Q4MTkxNGYsIDB4N2RhYzA4MmQsIDB4N2RkNjgyYTEsIAorCTB4N2UwMTAwYWMsIDB4N2UyYjgyNGIsIDB4N2U1NjA3ODAsIDB4N2U4MDkwNDgsIAorCTB4N2VhYjFjYTUsIDB4N2VkNWFjOTQsIDB4N2YwMDQwMTUsIDB4N2YyYWQ3MjksIAorCTB4N2Y1NTcxY2QsIDB4N2Y4MDEwMDMsIDB4N2ZhYWIxYzgsIDB4N2ZkNTU3MWQKK307CisKKw0KK2NvbnN0IFdvcmQzMiBpbnZTQkZbMjRdID0gew0KKyAgMHgzRkZEMzRGQywgMHgyRDNGODAwMCwgMHgyNEYxOEM3RSwgMHgxRkZFOUE3RSwgDQorICAweDFDOURGMTBDLCAweDFBMUY4NTFBLCAweDE4MkZFOTk0LCAweDE2OUZDMDAwLCANCisgIDB4MTU1NDJBQUEsIDB4MTQzQzMxQzIsIDB4MTM0QjFCNkMsIDB4MTI3OTIwQkUsIA0KKyAgMHgxMUJGMkZDQywgMHgxMTFBNzQ5RSwgMHgxMDg1RkM0MiwgMHgwRkZGQTdCRSwgDQorICAweDBGODU1ODE4LCAweDBGMTRFRTU2LCAweDBFQUU2QTc4LCAweDBFNEVGODg2LCANCisgIDB4MERGNjk4ODAsIDB4MERBNDk1NjgsIDB4MEQ1Nzg1NDIsIDB4MEQxMDFEMEMNCit9Ow0KKworY29uc3QgV29yZDE2IHBvdzJ0b21pbnVzTm92ZXIxNlsxN10gPSB7CisgIDB4N2ZmZiwgMHg3YTkzLCAweDc1NjAsIDB4NzA2NiwKKyAgMHg2YmEyLCAweDY3MTIsIDB4NjJiNCwgMHg1ZTg0LAorICAweDVhODIsIDB4NTZhYywgMHg1MmZmLCAweDRmN2IsCisgIDB4NGMxYywgMHg0OGUyLCAweDQ1Y2IsIDB4NDJkNSwKKyAgMHg0MDAwCit9Ow0KKw0KK2NvbnN0IFdvcmQxNiBzaWRlSW5mb1RhYkxvbmdbTUFYX1NGQl9MT05HICsgMV0gPSB7DQorICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCANCisgIDksIDksIDksIDksIDksIDksIDksIDksIDksIA0KKyAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgDQorICA5LCA5LCA5LCA5LCAxNCwgMTQsIDE0LCAxNCwgDQorICAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgDQorICAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgDQorICAxNCwgMTQsIDE0DQorfTsNCisNCitjb25zdCBXb3JkMTYgc2lkZUluZm9UYWJTaG9ydFtNQVhfU0ZCX1NIT1JUICsgMV0gPSB7DQorICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAxMCwgMTAsIA0KKyAgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMywgMTMNCit9OworCitXb3JkMzIgc3BlY0V4cE1hbnRUYWJsZUNvbWJfZW5jWzRdWzE0XSA9Cit7CisgIHsweDQwMDAwMDAwLCAgMHg1MGEyOGJlNiwgIDB4NjU5N2ZhOTUsICAweDQwMDAwMDAwLCAKKyAgIDB4NTBhMjhiZTYsICAweDY1OTdmYTk1LCAgMHg0MDAwMDAwMCwgIDB4NTBhMjhiZTYsIAorICAgMHg2NTk3ZmE5NSwgIDB4NDAwMDAwMDAsICAweDUwYTI4YmU2LCAgMHg2NTk3ZmE5NSwgCisgICAweDQwMDAwMDAwLCAgMHg1MGEyOGJlNn0sIAorCisgIHsweDRjMWJmODI5LCAgMHg1ZmU0NDM1ZSwgIDB4NzhkMGRmOWMsICAweDRjMWJmODI5LCAKKyAgIDB4NWZlNDQzNWUsICAweDc4ZDBkZjljLCAgMHg0YzFiZjgyOSwgIDB4NWZlNDQzNWUsIAorICAgMHg3OGQwZGY5YywgIDB4NGMxYmY4MjksICAweDVmZTQ0MzVlLCAgMHg3OGQwZGY5YywgCisgICAweDRjMWJmODI5LCAgMHg1ZmU0NDM1ZX0sIAorCisgIHsweDVhODI3OTlhLCAgMHg3MjA4ZjgxZCwgIDB4NDdkNjZiMGYsICAweDVhODI3OTlhLCAKKyAgIDB4NzIwOGY4MWQsICAweDQ3ZDY2YjBmLCAgMHg1YTgyNzk5YSwgIDB4NzIwOGY4MWQsIAorICAgMHg0N2Q2NmIwZiwgIDB4NWE4Mjc5OWEsICAweDcyMDhmODFkLCAgMHg0N2Q2NmIwZiwgCisgICAweDVhODI3OTlhLCAgMHg3MjA4ZjgxZH0sIAorCisgIHsweDZiYTI3ZTY1LCAgMHg0M2NlM2U0YiwgIDB4NTU2ZTA0MjQsICAweDZiYTI3ZTY1LCAKKyAgIDB4NDNjZTNlNGIsICAweDU1NmUwNDI0LCAgMHg2YmEyN2U2NSwgIDB4NDNjZTNlNGIsIAorICAgMHg1NTZlMDQyNCwgIDB4NmJhMjdlNjUsICAweDQzY2UzZTRiLCAgMHg1NTZlMDQyNCwgCisgICAweDZiYTI3ZTY1LCAgMHg0M2NlM2U0Yn0KK307CisKK2NvbnN0ICBVV29yZDggc3BlY0V4cFRhYmxlQ29tYl9lbmNbNF1bMTRdID0KK3sKKyAgezEsIDIsIDMsIDUsIDYsIDcsIDksIDEwLCAxMSwgMTMsIDE0LCAxNSwgMTcsIDE4fSwKKyAgezEsIDIsIDMsIDUsIDYsIDcsIDksIDEwLCAxMSwgMTMsIDE0LCAxNSwgMTcsIDE4fSwKKyAgezEsIDIsIDQsIDUsIDYsIDgsIDksIDEwLCAxMiwgMTMsIDE0LCAxNiwgMTcsIDE4fSwKKyAgezEsIDMsIDQsIDUsIDcsIDgsIDksIDExLCAxMiwgMTMsIDE1LCAxNiwgMTcsIDE5fQorfTsKKworY29uc3QgV29yZDE2IHF1YW50Qm9yZGVyc1s0XVs0XSA9IHsNCisgIC8qIHBvdygxLjAtMC40MDU0LCA0LzMpLzE2ICogcG93KDIsICgwLi4zKS80KSAqLw0KKyAgezB4MDQwMCwgMHgwZWU3LCAweDFjODYsIDB4MmMwZH0sDQorICAvKiBwb3coMi4wLTAuNDA1NCwgNC8zKS8xNiAqIHBvdygyLCAoMC4uMykvNCkgKi8NCisgIHsweDA0YzIsIDB4MTFiOSwgMHgyMWViLCAweDM0NjN9LA0KKyAgLyogcG93KDMuMC0wLjQwNTQsIDQvMykvMTYgKiBwb3coMiwgKDAuLjMpLzQpICovDQorICB7MHgwNWE4LCAweDE1MTQsIDB4Mjg1NiwgMHgzZTRjfSwNCisgIC8qIHBvdyg0LjAtMC40MDU0LCA0LzMpLzE2ICogcG93KDIsICgwLi4zKS80KSAqLw0KKyAgezB4MDZiYSwgMHgxOTExLCAweDJmZjgsIDB4NGExNn0sDQorfTsNCisKK2NvbnN0IFdvcmQxNiBxdWFudFJlY29uWzRdWzNdID0gew0KKyAgezB4MDgwMCwgMHgxNDI5LCAweDIyOWR9LA0KKyAgezB4MDk4MywgMHgxN2Y5LCAweDI5MmF9LA0KKyAgezB4MGI1MCwgMHgxYzgyLCAweDMwZjR9LA0KKyAgezB4MGQ3NCwgMHgyMWU3LCAweDNhMzd9LA0KK307CisKK2NvbnN0IGludCBzYW1wUmF0ZVRhYltOVU1fU0FNUExFX1JBVEVTXSA9IHsNCisgICAgOTYwMDAsIDg4MjAwLCA2NDAwMCwgNDgwMDAsIDQ0MTAwLCAzMjAwMCwgDQorCTI0MDAwLCAyMjA1MCwgMTYwMDAsIDEyMDAwLCAxMTAyNSwgIDgwMDANCit9OworCisKK2NvbnN0IGludAlyYXRlc1s4XSA9IHsJCQ0KKwkxNjAsIDI0MCwgMzIwLCA0MDAsIDQ4MCwgNTYwLCA2NDAsIDANCit9Ow0KKworY29uc3QgaW50IEJhbmR3aXRoQ29lZlRhYls4XVtOVU1fU0FNUExFX1JBVEVTXSA9IHsKKwl7IDcwMDAsICA3MDAwLCAgNDY2NiwgIDM1MDAsICAzNTAwLCAgMjgwMCwgIDI4MDAsICAyODAwLCAgMjgwMCwgIDIwMDAsICAyMDAwLCAgMjAwMH0sCisJezEyMDAwLCAxMjAwMCwgIDgwMDAsICA2MDAwLCAgNjAwMCwgIDYwMDAsICA0MDAwLCAgNDAwMCwgIDQwMDAsICAzMDAwLCAgMzAwMCwgIDMwMDB9LAorCXsxODAwMCwgMTgwMDAsIDEyMDAwLCAgOTAwMCwgIDkwMDAsICA5MDAwLCAgNzAwMCwgIDcwMDAsICA3MDAwLCAgNTAwMCwgIDUwMDAsICA1MDAwfSwKKwl7MjAwMDAsIDIwMDAwLCAxNjAwMCwgMTIwMDAsIDEyMDAwLCAxMjAwMCwgIDkwMDAsICA5MDAwLCAgOTAwMCwgIDYwMDAsICA2MDAwLCAgNjAwMH0sCisJezIwMDAwLCAyMDAwMCwgMTg2NjYsIDE0MDAwLCAxNDAwMCwgMTQwMDAsIDEwMDAwLCAxMDAwMCwgMTAwMDAsICA3MDAwLCAgNzAwMCwgIDcwMDB9LAorCXsyMDAwMCwgMjAwMDAsIDIwMDAwLCAxNjAwMCwgMTYwMDAsIDE2MDAwLCAxMjAwMCwgMTIwMDAsIDEyMDAwLCAgODAwMCwgIDgwMDAsICA4MDAwfSwKKwl7MjAwMDAsIDIwMDAwLCAyMDAwMCwgMjAwMDAsIDIwMDAwLCAyMDAwMCwgMTUwMDAsIDE1MDAwLCAxNTAwMCwgMTAwMDAsIDEwMDAwLCAxMDAwMH0sCisJezIwMDAwLCAyMDAwMCwgMjAwMDAsIDIwMDAwLCAyMDAwMCwgMjAwMDAsIDIwMDAwLCAyMDAwMCwgMjAwMDAsIDIwMDAwLCAyMDAwMCwgMjAwMDB9Cit9OworCisKKy8qIHRvdGFsIG51bWJlciBvZiBzY2FsZSBmYWN0b3IgYmFuZHMgaW4gb25lIHdpbmRvdyAqLw0KK2NvbnN0IFVXb3JkOCBzZkJhbmRUb3RhbFNob3J0W05VTV9TQU1QTEVfUkFURVNdID0gew0KKyAgICAxMiwgMTIsIDEyLCAxNCwgMTQsIDE0LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1DQorfTsNCisNCitjb25zdCBVV29yZDggc2ZCYW5kVG90YWxMb25nW05VTV9TQU1QTEVfUkFURVNdID0gew0KKyAgICA0MSwgNDEsIDQ3LCA0OSwgNDksIDUxLCA0NywgNDcsIDQzLCA0MywgNDMsIDQwDQorfTsNCisNCisvKiBzY2FsZSBmYWN0b3IgYmFuZCB0YWJsZXMgKi8NCitjb25zdCBpbnQgc2ZCYW5kVGFiU2hvcnRPZmZzZXRbTlVNX1NBTVBMRV9SQVRFU10gPSB7MCwgMCwgMCwgMTMsIDEzLCAxMywgMjgsIDI4LCA0NCwgNDQsIDQ0LCA2MH07DQorDQorY29uc3Qgc2hvcnQgc2ZCYW5kVGFiU2hvcnRbNzZdID0gew0KKwkvKiBzaG9ydCBibG9jayA2NCwgODgsIDk2IGtIeiBbMTNdICAqLw0KKwkwLCAgIDQsICAgOCwgIDEyLCAgMTYsICAyMCwgIDI0LCAgMzIsICA0MCwgIDQ4LCAgNjQsICA5MiwgMTI4LA0KKw0KKwkvKiBzaG9ydCBibG9jayAzMiwgNDQsIDQ4IGtIeiBbMTVdICAqLw0KKwkwLCAgIDQsICAgOCwgIDEyLCAgMTYsICAyMCwgIDI4LCAgMzYsICA0NCwgIDU2LCAgNjgsICA4MCwgIDk2LCAxMTIsIDEyOCwNCisNCisJLyogc2hvcnQgYmxvY2sgMjIsIDI0IGtIeiBbMTZdICAqLw0KKwkwLCAgIDQsICAgOCwgIDEyLCAgMTYsICAyMCwgIDI0LCAgMjgsICAzNiwgIDQ0LCAgNTIsICA2NCwgIDc2LCAgOTIsIDEwOCwgMTI4LA0KKw0KKwkvKiBzaG9ydCBibG9jayAxMSwgMTIsIDE2IGtIeiBbMTZdICovDQorCTAsICAgNCwgICA4LCAgMTIsICAxNiwgIDIwLCAgMjQsICAyOCwgIDMyLCAgNDAsICA0OCwgIDYwLCAgNzIsICA4OCwgMTA4LCAxMjgsDQorDQorCS8qIHNob3J0IGJsb2NrIDgga0h6IFsxNl0gKi8NCisJMCwgICA0LCAgIDgsICAxMiwgIDE2LCAgMjAsICAyNCwgIDI4LCAgMzYsICA0NCwgIDUyLCAgNjAsICA3MiwgIDg4LCAxMDgsIDEyOA0KK307DQorDQorY29uc3QgaW50IHNmQmFuZFRhYkxvbmdPZmZzZXRbTlVNX1NBTVBMRV9SQVRFU10gPSB7MCwgMCwgNDIsIDkwLCA5MCwgMTQwLCAxOTIsIDE5MiwgMjQwLCAyNDAsIDI0MCwgMjg0fTsNCisNCitjb25zdCBzaG9ydCBzZkJhbmRUYWJMb25nWzMyNV0gPSB7DQorCS8qIGxvbmcgYmxvY2sgODgsIDk2IGtIeiBbNDJdICAqLw0KKwkgIDAsICAgNCwgICA4LCAgMTIsICAxNiwgIDIwLCAgMjQsICAyOCwgIDMyLCAgMzYsICA0MCwgIDQ0LCAgNDgsICAgNTIsDQorCSA1NiwgIDY0LCAgNzIsICA4MCwgIDg4LCAgOTYsIDEwOCwgMTIwLCAxMzIsIDE0NCwgMTU2LCAxNzIsIDE4OCwgIDIxMiwNCisJMjQwLCAyNzYsIDMyMCwgMzg0LCA0NDgsIDUxMiwgNTc2LCA2NDAsIDcwNCwgNzY4LCA4MzIsIDg5NiwgOTYwLCAxMDI0LA0KKw0KKwkvKiBsb25nIGJsb2NrIDY0IGtIeiBbNDhdICAqLw0KKwkgIDAsICAgNCwgICA4LCAgMTIsICAxNiwgIDIwLCAgMjQsICAyOCwgIDMyLCAgMzYsICA0MCwgIDQ0LCAgNDgsICA1MiwgIDU2LCAgIDY0LA0KKwkgNzIsICA4MCwgIDg4LCAxMDAsIDExMiwgMTI0LCAxNDAsIDE1NiwgMTcyLCAxOTIsIDIxNiwgMjQwLCAyNjgsIDMwNCwgMzQ0LCAgMzg0LA0KKwk0MjQsIDQ2NCwgNTA0LCA1NDQsIDU4NCwgNjI0LCA2NjQsIDcwNCwgNzQ0LCA3ODQsIDgyNCwgODY0LCA5MDQsIDk0NCwgOTg0LCAxMDI0LA0KKw0KKwkvKiBsb25nIGJsb2NrIDQ0LCA0OCBrSHogWzUwXSAqLw0KKwkgIDAsICAgNCwgICA4LCAgMTIsICAxNiwgIDIwLCAgMjQsICAyOCwgIDMyLCAgMzYsICA0MCwgIDQ4LCAgNTYsICA2NCwgIDcyLCAgIDgwLCAgODgsDQorCSA5NiwgMTA4LCAxMjAsIDEzMiwgMTQ0LCAxNjAsIDE3NiwgMTk2LCAyMTYsIDI0MCwgMjY0LCAyOTIsIDMyMCwgMzUyLCAzODQsICA0MTYsIDQ0OCwNCisJNDgwLCA1MTIsIDU0NCwgNTc2LCA2MDgsIDY0MCwgNjcyLCA3MDQsIDczNiwgNzY4LCA4MDAsIDgzMiwgODY0LCA4OTYsIDkyOCwgMTAyNCwNCisNCisJLyogbG9uZyBibG9jayAzMiBrSHogWzUyXSAqLw0KKwkgIDAsICAgNCwgICA4LCAgMTIsICAxNiwgIDIwLCAgMjQsICAyOCwgIDMyLCAgMzYsICA0MCwgIDQ4LCAgNTYsICA2NCwgIDcyLCAgIDgwLCAgODgsICA5NiwNCisJMTA4LCAxMjAsIDEzMiwgMTQ0LCAxNjAsIDE3NiwgMTk2LCAyMTYsIDI0MCwgMjY0LCAyOTIsIDMyMCwgMzUyLCAzODQsIDQxNiwgIDQ0OCwgNDgwLCA1MTIsDQorCTU0NCwgNTc2LCA2MDgsIDY0MCwgNjcyLCA3MDQsIDczNiwgNzY4LCA4MDAsIDgzMiwgODY0LCA4OTYsIDkyOCwgOTYwLCA5OTIsIDEwMjQsDQorDQorCS8qIGxvbmcgYmxvY2sgMjIsIDI0IGtIeiBbNDhdICovDQorCSAgMCwgICA0LCAgIDgsICAxMiwgIDE2LCAgMjAsICAyNCwgIDI4LCAgMzIsICAzNiwgIDQwLCAgNDQsICA1MiwgIDYwLCAgNjgsICAgNzYsDQorCSA4NCwgIDkyLCAxMDAsIDEwOCwgMTE2LCAxMjQsIDEzNiwgMTQ4LCAxNjAsIDE3MiwgMTg4LCAyMDQsIDIyMCwgMjQwLCAyNjAsICAyODQsDQorCTMwOCwgMzM2LCAzNjQsIDM5NiwgNDMyLCA0NjgsIDUwOCwgNTUyLCA2MDAsIDY1MiwgNzA0LCA3NjgsIDgzMiwgODk2LCA5NjAsIDEwMjQsDQorDQorCS8qIGxvbmcgYmxvY2sgMTEsIDEyLCAxNiBrSHogWzQ0XSAqLw0KKwkgIDAsICAgOCwgIDE2LCAgMjQsICAzMiwgIDQwLCAgNDgsICA1NiwgIDY0LCAgNzIsICA4MCwgIDg4LCAxMDAsICAxMTIsIDEyNCwNCisJMTM2LCAxNDgsIDE2MCwgMTcyLCAxODQsIDE5NiwgMjEyLCAyMjgsIDI0NCwgMjYwLCAyODAsIDMwMCwgMzIwLCAgMzQ0LCAzNjgsDQorCTM5NiwgNDI0LCA0NTYsIDQ5MiwgNTMyLCA1NzIsIDYxNiwgNjY0LCA3MTYsIDc3MiwgODMyLCA4OTYsIDk2MCwgMTAyNCwNCisNCisJLyogbG9uZyBibG9jayA4IGtIeiBbNDFdICAqLw0KKwkgIDAsICAxMiwgIDI0LCAgMzYsICA0OCwgIDYwLCAgNzIsICA4NCwgIDk2LCAxMDgsIDEyMCwgMTMyLCAgMTQ0LCAxNTYsDQorCTE3MiwgMTg4LCAyMDQsIDIyMCwgMjM2LCAyNTIsIDI2OCwgMjg4LCAzMDgsIDMyOCwgMzQ4LCAzNzIsICAzOTYsIDQyMCwNCisJNDQ4LCA0NzYsIDUwOCwgNTQ0LCA1ODAsIDYyMCwgNjY0LCA3MTIsIDc2NCwgODIwLCA4ODAsIDk0NCwgMTAyNA0KK307DQorCisvKgorICB0aGVzZSB0YWJsZXMgYXJlIHVzZWQgb25seSBmb3IgY291bnRpbmcgYW5kIAorICBhcmUgc3RvcmVkIGluIHBhY2tlZCBmb3JtYXQKKyovCitjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjFfMlszXVszXVszXVszXT0KK3sKKyAgeworICAgIHsKKyAgICAgIHsweDBiMDksMHgwOTA3LDB4MGIwOX0sCisgICAgICB7MHgwYTA4LDB4MDcwNiwweDBhMDh9LAorICAgICAgezB4MGIwOSwweDA5MDgsMHgwYjA5fQorICAgIH0sCisgICAgeworICAgICAgezB4MGEwOCwweDA3MDYsMHgwYTA3fSwKKyAgICAgIHsweDA3MDYsMHgwNTA1LDB4MDcwNn0sCisgICAgICB7MHgwOTA3LDB4MDcwNiwweDBhMDh9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwYjA5LDB4MDkwNywweDBiMDh9LAorICAgICAgezB4MDkwOCwweDA3MDYsMHgwOTA4fSwKKyAgICAgIHsweDBiMDksMHgwOTA3LDB4MGIwOX0KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwOTA4LDB4MDcwNiwweDA5MDd9LAorICAgICAgezB4MDcwNiwweDA1MDUsMHgwNzA2fSwKKyAgICAgIHsweDA5MDcsMHgwNzA2LDB4MDkwOH0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDA3MDYsMHgwNTA1LDB4MDcwNn0sCisgICAgICB7MHgwNTA1LDB4MDEwMywweDA1MDV9LAorICAgICAgezB4MDcwNiwweDA1MDUsMHgwNzA2fQorICAgIH0sCisgICAgeworICAgICAgezB4MDkwOCwweDA3MDYsMHgwOTA3fSwKKyAgICAgIHsweDA3MDYsMHgwNTA1LDB4MDcwNn0sCisgICAgICB7MHgwOTA4LDB4MDcwNiwweDA5MDh9CisgICAgfQorICB9LAorICB7CisgICAgeworICAgICAgezB4MGIwOSwweDA5MDcsMHgwYjA5fSwKKyAgICAgIHsweDA5MDgsMHgwNzA2LDB4MDkwOH0sCisgICAgICB7MHgwYjA4LDB4MDkwNywweDBiMDl9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwYTA4LDB4MDcwNiwweDA5MDd9LAorICAgICAgezB4MDcwNiwweDA1MDQsMHgwNzA2fSwKKyAgICAgIHsweDA5MDgsMHgwNzA2LDB4MGEwN30KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDBiMDksMHgwOTA3LDB4MGIwOX0sCisgICAgICB7MHgwYTA3LDB4MDcwNiwweDA5MDh9LAorICAgICAgezB4MGIwOSwweDA5MDcsMHgwYjA5fQorICAgIH0KKyAgfQorfTsKKworCitjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjNfNFszXVszXVszXVszXT0KK3sKKyAgeworICAgIHsKKyAgICAgIHsweDAxMDQsMHgwNDA1LDB4MDgwOH0sCisgICAgICB7MHgwNDA1LDB4MDUwNCwweDA4MDh9LAorICAgICAgezB4MDkwOSwweDA5MDgsMHgwYTBifQorICAgIH0sCisgICAgeworICAgICAgezB4MDQwNSwweDA2MDUsMHgwOTA4fSwKKyAgICAgIHsweDA2MDUsMHgwNjA0LDB4MDkwOH0sCisgICAgICB7MHgwOTA4LDB4MDkwNywweDBhMGF9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwOTA5LDB4MGEwOCwweDBkMGJ9LAorICAgICAgezB4MDkwOCwweDA5MDgsMHgwYjBhfSwKKyAgICAgIHsweDBiMGIsMHgwYTBhLDB4MGMwYn0KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwNDA0LDB4MDYwNSwweDBhMDh9LAorICAgICAgezB4MDYwNCwweDA3MDQsMHgwYTA4fSwKKyAgICAgIHsweDBhMDgsMHgwYTA4LDB4MGMwYX0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDA1MDQsMHgwNzA0LDB4MGIwOH0sCisgICAgICB7MHgwNjA0LDB4MDcwNCwweDBhMDd9LAorICAgICAgezB4MDkwOCwweDA5MDcsMHgwYjA5fQorICAgIH0sCisgICAgeworICAgICAgezB4MDkwOCwweDBhMDgsMHgwZDBhfSwKKyAgICAgIHsweDA4MDcsMHgwOTA3LDB4MGMwOX0sCisgICAgICB7MHgwYTBhLDB4MGIwOSwweDBjMGF9CisgICAgfQorICB9LAorICB7CisgICAgeworICAgICAgezB4MDgwOCwweDBhMDgsMHgwZjBifSwKKyAgICAgIHsweDA5MDgsMHgwYjA3LDB4MGYwYX0sCisgICAgICB7MHgwZDBiLDB4MGUwYSwweDEwMGN9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwODA4LDB4MGEwNywweDBlMGF9LAorICAgICAgezB4MDkwNywweDBhMDcsMHgwZTA5fSwKKyAgICAgIHsweDBjMGEsMHgwYzA5LDB4MGYwYn0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDBiMGIsMHgwYzBhLDB4MTAwY30sCisgICAgICB7MHgwYTBhLDB4MGIwOSwweDBmMGJ9LAorICAgICAgezB4MGMwYiwweDBjMGEsMHgwZjBifQorICAgIH0KKyAgfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2x0YWI1XzZbOV1bOV09Cit7CisgIHsweDBkMGIsMHgwYzBhLDB4MGIwOSwweDBiMDksMHgwYTA5LDB4MGIwOSwweDBiMDksMHgwYzBhLDB4MGQwYn0sCisgIHsweDBjMGEsMHgwYjA5LDB4MGEwOCwweDA5MDcsMHgwODA3LDB4MDkwNywweDBhMDgsMHgwYjA5LDB4MGMwYX0sCisgIHsweDBjMDksMHgwYTA4LDB4MDkwNiwweDA4MDYsMHgwNzA2LDB4MDgwNiwweDA5MDYsMHgwYTA4LDB4MGIwOX0sCisgIHsweDBiMDksMHgwOTA3LDB4MDgwNiwweDA1MDQsMHgwNDA0LDB4MDUwNCwweDA4MDYsMHgwOTA3LDB4MGIwOX0sCisgIHsweDBhMDksMHgwODA3LDB4MDcwNiwweDA0MDQsMHgwMTA0LDB4MDQwNCwweDA3MDYsMHgwODA3LDB4MGIwOX0sCisgIHsweDBiMDksMHgwOTA3LDB4MDgwNiwweDA1MDQsMHgwNDA0LDB4MDUwNCwweDA4MDYsMHgwOTA3LDB4MGIwOX0sCisgIHsweDBiMDksMHgwYTA4LDB4MDkwNiwweDA4MDYsMHgwNzA2LDB4MDgwNiwweDA5MDYsMHgwYTA4LDB4MGIwOX0sCisgIHsweDBjMGEsMHgwYjA5LDB4MGEwOCwweDA5MDcsMHgwODA3LDB4MDkwNywweDBhMDcsMHgwYjA4LDB4MGMwYX0sCisgIHsweDBkMGIsMHgwYzBhLDB4MGMwOSwweDBiMDksMHgwYTA5LDB4MGEwOSwweDBiMDksMHgwYzBhLDB4MGQwYn0KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9sdGFiN184WzhdWzhdPQoreworICB7MHgwMTA1LDB4MDMwNCwweDA2MDUsMHgwNzA2LDB4MDgwNywweDA5MDgsMHgwYTA5LDB4MGIwYX0sCisgIHsweDAzMDQsMHgwNDAzLDB4MDYwNCwweDA3MDUsMHgwODA2LDB4MDgwNywweDA5MDcsMHgwOTA4fSwKKyAgezB4MDYwNSwweDA2MDQsMHgwNzA0LDB4MDgwNSwweDA4MDYsMHgwOTA3LDB4MDkwNywweDBhMDh9LAorICB7MHgwNzA2LDB4MDcwNSwweDA4MDUsMHgwODA2LDB4MDkwNiwweDA5MDcsMHgwYTA4LDB4MGEwOH0sCisgIHsweDA4MDcsMHgwODA2LDB4MDkwNiwweDA5MDYsMHgwYTA3LDB4MGEwNywweDBhMDgsMHgwYjA5fSwKKyAgezB4MDkwOCwweDA4MDcsMHgwOTA2LDB4MDkwNywweDBhMDcsMHgwYTA4LDB4MGIwOCwweDBiMGF9LAorICB7MHgwYTA5LDB4MDkwNywweDA5MDcsMHgwYTA4LDB4MGEwOCwweDBiMDgsMHgwYzA5LDB4MGMwOX0sCisgIHsweDBiMGEsMHgwYTA4LDB4MGEwOCwweDBhMDgsMHgwYjA5LDB4MGIwOSwweDBjMDksMHgwYzBhfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2x0YWI5XzEwWzEzXVsxM109Cit7CisgIHsweDAxMDYsMHgwMzA1LDB4MDYwNiwweDA4MDYsMHgwOTA3LDB4MGEwOCwweDBhMDksMHgwYjBhLDB4MGIwYSwweDBjMGEsMHgwYzBiLDB4MGQwYiwweDBkMGN9LAorICB7MHgwMzA1LDB4MDQwNCwweDA2MDQsMHgwNzA1LDB4MDgwNiwweDA4MDcsMHgwOTA3LDB4MGEwOCwweDBhMDgsMHgwYTA5LDB4MGIwYSwweDBjMGEsMHgwYzBifSwKKyAgezB4MDYwNiwweDA2MDQsMHgwNzA1LDB4MDgwNSwweDA4MDYsMHgwOTA2LDB4MGEwNywweDBhMDgsMHgwYTA4LDB4MGIwOSwweDBjMDksMHgwYzBhLDB4MGMwYX0sCisgIHsweDA4MDYsMHgwNzA1LDB4MDgwNSwweDA5MDUsMHgwOTA2LDB4MGEwNywweDBhMDcsMHgwYjA4LDB4MGIwOCwweDBiMDksMHgwYzA5LDB4MGMwYSwweDBkMGF9LAorICB7MHgwOTA3LDB4MDgwNiwweDA5MDYsMHgwOTA2LDB4MGEwNiwweDBhMDcsMHgwYjA3LDB4MGIwOCwweDBiMDgsMHgwYzA5LDB4MGMwOSwweDBjMGEsMHgwZDBhfSwKKyAgezB4MGEwOCwweDA5MDcsMHgwOTA2LDB4MGEwNywweDBiMDcsMHgwYjA3LDB4MGIwOCwweDBjMDgsMHgwYjA4LDB4MGMwOSwweDBjMGEsMHgwZDBhLDB4MGQwYn0sCisgIHsweDBiMDksMHgwOTA3LDB4MGEwNywweDBiMDcsMHgwYjA3LDB4MGIwOCwweDBjMDgsMHgwYzA5LDB4MGMwOSwweDBjMDksMHgwZDBhLDB4MGQwYSwweDBkMGJ9LAorICB7MHgwYjA5LDB4MGEwOCwweDBhMDgsMHgwYjA4LDB4MGIwOCwweDBjMDgsMHgwYzA5LDB4MGQwOSwweDBkMDksMHgwZDBhLDB4MGQwYSwweDBkMGIsMHgwZDBifSwKKyAgezB4MGIwOSwweDBhMDgsMHgwYTA4LDB4MGIwOCwweDBiMDgsMHgwYjA4LDB4MGMwOSwweDBjMDksMHgwZDBhLDB4MGQwYSwweDBlMGEsMHgwZDBiLDB4MGUwYn0sCisgIHsweDBiMGEsMHgwYTA5LDB4MGIwOSwweDBiMDksMHgwYzA5LDB4MGMwOSwweDBjMDksMHgwYzBhLDB4MGQwYSwweDBkMGEsMHgwZTBiLDB4MGUwYiwweDBlMGN9LAorICB7MHgwYzBhLDB4MGIwOSwweDBiMDksMHgwYzA5LDB4MGMwOSwweDBjMGEsMHgwZDBhLDB4MGQwYSwweDBkMGEsMHgwZTBiLDB4MGUwYiwweDBlMGIsMHgwZjBjfSwKKyAgezB4MGMwYiwweDBiMGEsMHgwYzA5LDB4MGMwYSwweDBjMGEsMHgwZDBhLDB4MGQwYSwweDBkMGEsMHgwZDBiLDB4MGUwYiwweDBlMGIsMHgwZjBiLDB4MGYwY30sCisgIHsweDBkMGIsMHgwYzBhLDB4MGMwYSwweDBjMGEsMHgwZDBhLDB4MGQwYSwweDBkMGEsMHgwZDBiLDB4MGUwYiwweDBlMGMsMHgwZTBjLDB4MGUwYywweDBmMGN9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjExWzE3XVsxN109Cit7CisgIHsweDAwMDQsMHgwMDA1LDB4MDAwNiwweDAwMDcsMHgwMDA4LDB4MDAwOCwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBiLDB4MDAwYiwweDAwMGMsMHgwMDBiLDB4MDAwYywweDAwMGMsMHgwMDBhfSwKKyAgezB4MDAwNSwweDAwMDQsMHgwMDA1LDB4MDAwNiwweDAwMDcsMHgwMDA3LDB4MDAwOCwweDAwMDgsMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYiwweDAwMDh9LAorICB7MHgwMDA2LDB4MDAwNSwweDAwMDUsMHgwMDA2LDB4MDAwNywweDAwMDcsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwOH0sCisgIHsweDAwMDcsMHgwMDA2LDB4MDAwNiwweDAwMDYsMHgwMDA3LDB4MDAwNywweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDA4fSwKKyAgezB4MDAwOCwweDAwMDcsMHgwMDA3LDB4MDAwNywweDAwMDcsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMDh9LAorICB7MHgwMDA4LDB4MDAwNywweDAwMDcsMHgwMDA3LDB4MDAwNywweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwOH0sCisgIHsweDAwMDksMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDA4fSwKKyAgezB4MDAwOSwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMDh9LAorICB7MHgwMDBhLDB4MDAwOSwweDAwMDgsMHgwMDA4LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBiLDB4MDAwOH0sCisgIHsweDAwMGEsMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYiwweDAwMGIsMHgwMDA4fSwKKyAgezB4MDAwYiwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYiwweDAwMGEsMHgwMDBiLDB4MDAwYiwweDAwMDh9LAorICB7MHgwMDBiLDB4MDAwYSwweDAwMDksMHgwMDA5LDB4MDAwYSwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwOH0sCisgIHsweDAwMGIsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDA5fSwKKyAgezB4MDAwYiwweDAwMGEsMHgwMDA5LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMDl9LAorICB7MHgwMDBiLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwOX0sCisgIHsweDAwMGMsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYywweDAwMGMsMHgwMDA5fSwKKyAgezB4MDAwOSwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOSwweDAwMDV9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfbHRhYnNjZlsxMjFdPQoreworICAweDAwMTIsCisgIDB4MDAxMiwKKyAgMHgwMDEyLAorICAweDAwMTIsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMiwKKyAgMHgwMDEzLAorICAweDAwMTIsCisgIDB4MDAxMSwKKyAgMHgwMDExLAorICAweDAwMTAsCisgIDB4MDAxMSwKKyAgMHgwMDEwLAorICAweDAwMTAsCisgIDB4MDAxMCwKKyAgMHgwMDEwLAorICAweDAwMGYsCisgIDB4MDAwZiwKKyAgMHgwMDBlLAorICAweDAwMGUsCisgIDB4MDAwZSwKKyAgMHgwMDBlLAorICAweDAwMGUsCisgIDB4MDAwZSwKKyAgMHgwMDBkLAorICAweDAwMGQsCisgIDB4MDAwYywKKyAgMHgwMDBjLAorICAweDAwMGMsCisgIDB4MDAwYiwKKyAgMHgwMDBjLAorICAweDAwMGIsCisgIDB4MDAwYSwKKyAgMHgwMDBhLAorICAweDAwMGEsCisgIDB4MDAwOSwKKyAgMHgwMDA5LAorICAweDAwMDgsCisgIDB4MDAwOCwKKyAgMHgwMDA4LAorICAweDAwMDcsCisgIDB4MDAwNiwKKyAgMHgwMDA2LAorICAweDAwMDUsCisgIDB4MDAwNCwKKyAgMHgwMDAzLAorICAweDAwMDEsCisgIDB4MDAwNCwKKyAgMHgwMDA0LAorICAweDAwMDUsCisgIDB4MDAwNiwKKyAgMHgwMDA2LAorICAweDAwMDcsCisgIDB4MDAwNywKKyAgMHgwMDA4LAorICAweDAwMDgsCisgIDB4MDAwOSwKKyAgMHgwMDA5LAorICAweDAwMGEsCisgIDB4MDAwYSwKKyAgMHgwMDBhLAorICAweDAwMGIsCisgIDB4MDAwYiwKKyAgMHgwMDBiLAorICAweDAwMGIsCisgIDB4MDAwYywKKyAgMHgwMDBjLAorICAweDAwMGQsCisgIDB4MDAwZCwKKyAgMHgwMDBkLAorICAweDAwMGUsCisgIDB4MDAwZSwKKyAgMHgwMDEwLAorICAweDAwMGYsCisgIDB4MDAxMCwKKyAgMHgwMDBmLAorICAweDAwMTIsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMKK307CisKKworY29uc3QgVVdvcmQxNiBodWZmX2N0YWIxWzNdWzNdWzNdWzNdPQoreworICB7CisgICAgeworICAgICAgezB4MDdmOCwweDAxZjEsMHgwN2ZkfSwKKyAgICAgIHsweDAzZjUsMHgwMDY4LDB4MDNmMH0sCisgICAgICB7MHgwN2Y3LDB4MDFlYywweDA3ZjV9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwM2YxLDB4MDA3MiwweDAzZjR9LAorICAgICAgezB4MDA3NCwweDAwMTEsMHgwMDc2fSwKKyAgICAgIHsweDAxZWIsMHgwMDZjLDB4MDNmNn0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDA3ZmMsMHgwMWUxLDB4MDdmMX0sCisgICAgICB7MHgwMWYwLDB4MDA2MSwweDAxZjZ9LAorICAgICAgezB4MDdmMiwweDAxZWEsMHgwN2ZifQorICAgIH0KKyAgfSwKKyAgeworICAgIHsKKyAgICAgIHsweDAxZjIsMHgwMDY5LDB4MDFlZH0sCisgICAgICB7MHgwMDc3LDB4MDAxNywweDAwNmZ9LAorICAgICAgezB4MDFlNiwweDAwNjQsMHgwMWU1fQorICAgIH0sCisgICAgeworICAgICAgezB4MDA2NywweDAwMTUsMHgwMDYyfSwKKyAgICAgIHsweDAwMTIsMHgwMDAwLDB4MDAxNH0sCisgICAgICB7MHgwMDY1LDB4MDAxNiwweDAwNmR9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMWU5LDB4MDA2MywweDAxZTR9LAorICAgICAgezB4MDA2YiwweDAwMTMsMHgwMDcxfSwKKyAgICAgIHsweDAxZTMsMHgwMDcwLDB4MDFmM30KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwN2ZlLDB4MDFlNywweDA3ZjN9LAorICAgICAgezB4MDFlZiwweDAwNjAsMHgwMWVlfSwKKyAgICAgIHsweDA3ZjAsMHgwMWUyLDB4MDdmYX0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAzZjMsMHgwMDZhLDB4MDFlOH0sCisgICAgICB7MHgwMDc1LDB4MDAxMCwweDAwNzN9LAorICAgICAgezB4MDFmNCwweDAwNmUsMHgwM2Y3fQorICAgIH0sCisgICAgeworICAgICAgezB4MDdmNiwweDAxZTAsMHgwN2Y5fSwKKyAgICAgIHsweDAzZjIsMHgwMDY2LDB4MDFmNX0sCisgICAgICB7MHgwN2ZmLDB4MDFmNywweDA3ZjR9CisgICAgfQorICB9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjJbM11bM11bM11bM109Cit7CisgIHsKKyAgICB7CisgICAgICB7MHgwMWYzLDB4MDA2ZiwweDAxZmR9LAorICAgICAgezB4MDBlYiwweDAwMjMsMHgwMGVhfSwKKyAgICAgIHsweDAxZjcsMHgwMGU4LDB4MDFmYX0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAwZjIsMHgwMDJkLDB4MDA3MH0sCisgICAgICB7MHgwMDIwLDB4MDAwNiwweDAwMmJ9LAorICAgICAgezB4MDA2ZSwweDAwMjgsMHgwMGU5fQorICAgIH0sCisgICAgeworICAgICAgezB4MDFmOSwweDAwNjYsMHgwMGY4fSwKKyAgICAgIHsweDAwZTcsMHgwMDFiLDB4MDBmMX0sCisgICAgICB7MHgwMWY0LDB4MDA2YiwweDAxZjV9CisgICAgfQorICB9LAorICB7CisgICAgeworICAgICAgezB4MDBlYywweDAwMmEsMHgwMDZjfSwKKyAgICAgIHsweDAwMmMsMHgwMDBhLDB4MDAyN30sCisgICAgICB7MHgwMDY3LDB4MDAxYSwweDAwZjV9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMDI0LDB4MDAwOCwweDAwMWZ9LAorICAgICAgezB4MDAwOSwweDAwMDAsMHgwMDA3fSwKKyAgICAgIHsweDAwMWQsMHgwMDBiLDB4MDAzMH0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAwZWYsMHgwMDFjLDB4MDA2NH0sCisgICAgICB7MHgwMDFlLDB4MDAwYywweDAwMjl9LAorICAgICAgezB4MDBmMywweDAwMmYsMHgwMGYwfQorICAgIH0KKyAgfSwKKyAgeworICAgIHsKKyAgICAgIHsweDAxZmMsMHgwMDcxLDB4MDFmMn0sCisgICAgICB7MHgwMGY0LDB4MDAyMSwweDAwZTZ9LAorICAgICAgezB4MDBmNywweDAwNjgsMHgwMWY4fQorICAgIH0sCisgICAgeworICAgICAgezB4MDBlZSwweDAwMjIsMHgwMDY1fSwKKyAgICAgIHsweDAwMzEsMHgwMDAyLDB4MDAyNn0sCisgICAgICB7MHgwMGVkLDB4MDAyNSwweDAwNmF9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMWZiLDB4MDA3MiwweDAxZmV9LAorICAgICAgezB4MDA2OSwweDAwMmUsMHgwMGY2fSwKKyAgICAgIHsweDAxZmYsMHgwMDZkLDB4MDFmNn0KKyAgICB9CisgIH0KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9jdGFiM1szXVszXVszXVszXT0KK3sKKyAgeworICAgIHsKKyAgICAgIHsweDAwMDAsMHgwMDA5LDB4MDBlZn0sCisgICAgICB7MHgwMDBiLDB4MDAxOSwweDAwZjB9LAorICAgICAgezB4MDFlYiwweDAxZTYsMHgwM2YyfQorICAgIH0sCisgICAgeworICAgICAgezB4MDAwYSwweDAwMzUsMHgwMWVmfSwKKyAgICAgIHsweDAwMzQsMHgwMDM3LDB4MDFlOX0sCisgICAgICB7MHgwMWVkLDB4MDFlNywweDAzZjN9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMWVlLDB4MDNlZCwweDFmZmF9LAorICAgICAgezB4MDFlYywweDAxZjIsMHgwN2Y5fSwKKyAgICAgIHsweDA3ZjgsMHgwM2Y4LDB4MGZmOH0KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwMDA4LDB4MDAzOCwweDAzZjZ9LAorICAgICAgezB4MDAzNiwweDAwNzUsMHgwM2YxfSwKKyAgICAgIHsweDAzZWIsMHgwM2VjLDB4MGZmNH0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAwMTgsMHgwMDc2LDB4MDdmNH0sCisgICAgICB7MHgwMDM5LDB4MDA3NCwweDAzZWZ9LAorICAgICAgezB4MDFmMywweDAxZjQsMHgwN2Y2fQorICAgIH0sCisgICAgeworICAgICAgezB4MDFlOCwweDAzZWEsMHgxZmZjfSwKKyAgICAgIHsweDAwZjIsMHgwMWYxLDB4MGZmYn0sCisgICAgICB7MHgwM2Y1LDB4MDdmMywweDBmZmN9CisgICAgfQorICB9LAorICB7CisgICAgeworICAgICAgezB4MDBlZSwweDAzZjcsMHg3ZmZlfSwKKyAgICAgIHsweDAxZjAsMHgwN2Y1LDB4N2ZmZH0sCisgICAgICB7MHgxZmZiLDB4M2ZmYSwweGZmZmZ9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMGYxLDB4MDNmMCwweDNmZmN9LAorICAgICAgezB4MDFlYSwweDAzZWUsMHgzZmZifSwKKyAgICAgIHsweDBmZjYsMHgwZmZhLDB4N2ZmY30KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDA3ZjIsMHgwZmY1LDB4ZmZmZX0sCisgICAgICB7MHgwM2Y0LDB4MDdmNywweDdmZmJ9LAorICAgICAgezB4MGZmNywweDBmZjksMHg3ZmZhfQorICAgIH0KKyAgfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2N0YWI0WzNdWzNdWzNdWzNdPQoreworICB7CisgICAgeworICAgICAgezB4MDAwNywweDAwMTYsMHgwMGY2fSwKKyAgICAgIHsweDAwMTgsMHgwMDA4LDB4MDBlZn0sCisgICAgICB7MHgwMWVmLDB4MDBmMywweDA3Zjh9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMDE5LDB4MDAxNywweDAwZWR9LAorICAgICAgezB4MDAxNSwweDAwMDEsMHgwMGUyfSwKKyAgICAgIHsweDAwZjAsMHgwMDcwLDB4MDNmMH0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAxZWUsMHgwMGYxLDB4MDdmYX0sCisgICAgICB7MHgwMGVlLDB4MDBlNCwweDAzZjJ9LAorICAgICAgezB4MDdmNiwweDAzZWYsMHgwN2ZkfQorICAgIH0KKyAgfSwKKyAgeworICAgIHsKKyAgICAgIHsweDAwMDUsMHgwMDE0LDB4MDBmMn0sCisgICAgICB7MHgwMDA5LDB4MDAwNCwweDAwZTV9LAorICAgICAgezB4MDBmNCwweDAwZTgsMHgwM2Y0fQorICAgIH0sCisgICAgeworICAgICAgezB4MDAwNiwweDAwMDIsMHgwMGU3fSwKKyAgICAgIHsweDAwMDMsMHgwMDAwLDB4MDA2Yn0sCisgICAgICB7MHgwMGUzLDB4MDA2OSwweDAxZjN9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMGViLDB4MDBlNiwweDAzZjZ9LAorICAgICAgezB4MDA2ZSwweDAwNmEsMHgwMWY0fSwKKyAgICAgIHsweDAzZWMsMHgwMWYwLDB4MDNmOX0KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwMGY1LDB4MDBlYywweDA3ZmJ9LAorICAgICAgezB4MDBlYSwweDAwNmYsMHgwM2Y3fSwKKyAgICAgIHsweDA3ZjksMHgwM2YzLDB4MGZmZn0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAwZTksMHgwMDZkLDB4MDNmOH0sCisgICAgICB7MHgwMDZjLDB4MDA2OCwweDAxZjV9LAorICAgICAgezB4MDNlZSwweDAxZjIsMHgwN2Y0fQorICAgIH0sCisgICAgeworICAgICAgezB4MDdmNywweDAzZjEsMHgwZmZlfSwKKyAgICAgIHsweDAzZWQsMHgwMWYxLDB4MDdmNX0sCisgICAgICB7MHgwN2ZlLDB4MDNmNSwweDA3ZmN9CisgICAgfQorICB9Cit9OworY29uc3QgVVdvcmQxNiBodWZmX2N0YWI1WzldWzldPQoreworICB7MHgxZmZmLDB4MGZmNywweDA3ZjQsMHgwN2U4LDB4MDNmMSwweDA3ZWUsMHgwN2Y5LDB4MGZmOCwweDFmZmR9LAorICB7MHgwZmZkLDB4MDdmMSwweDAzZTgsMHgwMWU4LDB4MDBmMCwweDAxZWMsMHgwM2VlLDB4MDdmMiwweDBmZmF9LAorICB7MHgwZmY0LDB4MDNlZiwweDAxZjIsMHgwMGU4LDB4MDA3MCwweDAwZWMsMHgwMWYwLDB4MDNlYSwweDA3ZjN9LAorICB7MHgwN2ViLDB4MDFlYiwweDAwZWEsMHgwMDFhLDB4MDAwOCwweDAwMTksMHgwMGVlLDB4MDFlZiwweDA3ZWR9LAorICB7MHgwM2YwLDB4MDBmMiwweDAwNzMsMHgwMDBiLDB4MDAwMCwweDAwMGEsMHgwMDcxLDB4MDBmMywweDA3ZTl9LAorICB7MHgwN2VmLDB4MDFlZSwweDAwZWYsMHgwMDE4LDB4MDAwOSwweDAwMWIsMHgwMGViLDB4MDFlOSwweDA3ZWN9LAorICB7MHgwN2Y2LDB4MDNlYiwweDAxZjMsMHgwMGVkLDB4MDA3MiwweDAwZTksMHgwMWYxLDB4MDNlZCwweDA3Zjd9LAorICB7MHgwZmY2LDB4MDdmMCwweDAzZTksMHgwMWVkLDB4MDBmMSwweDAxZWEsMHgwM2VjLDB4MDdmOCwweDBmZjl9LAorICB7MHgxZmZjLDB4MGZmYywweDBmZjUsMHgwN2VhLDB4MDNmMywweDAzZjIsMHgwN2Y1LDB4MGZmYiwweDFmZmV9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjZbOV1bOV09Cit7CisgIHsweDA3ZmUsMHgwM2ZkLDB4MDFmMSwweDAxZWIsMHgwMWY0LDB4MDFlYSwweDAxZjAsMHgwM2ZjLDB4MDdmZH0sCisgIHsweDAzZjYsMHgwMWU1LDB4MDBlYSwweDAwNmMsMHgwMDcxLDB4MDA2OCwweDAwZjAsMHgwMWU2LDB4MDNmN30sCisgIHsweDAxZjMsMHgwMGVmLDB4MDAzMiwweDAwMjcsMHgwMDI4LDB4MDAyNiwweDAwMzEsMHgwMGViLDB4MDFmN30sCisgIHsweDAxZTgsMHgwMDZmLDB4MDAyZSwweDAwMDgsMHgwMDA0LDB4MDAwNiwweDAwMjksMHgwMDZiLDB4MDFlZX0sCisgIHsweDAxZWYsMHgwMDcyLDB4MDAyZCwweDAwMDIsMHgwMDAwLDB4MDAwMywweDAwMmYsMHgwMDczLDB4MDFmYX0sCisgIHsweDAxZTcsMHgwMDZlLDB4MDAyYiwweDAwMDcsMHgwMDAxLDB4MDAwNSwweDAwMmMsMHgwMDZkLDB4MDFlY30sCisgIHsweDAxZjksMHgwMGVlLDB4MDAzMCwweDAwMjQsMHgwMDJhLDB4MDAyNSwweDAwMzMsMHgwMGVjLDB4MDFmMn0sCisgIHsweDAzZjgsMHgwMWU0LDB4MDBlZCwweDAwNmEsMHgwMDcwLDB4MDA2OSwweDAwNzQsMHgwMGYxLDB4MDNmYX0sCisgIHsweDA3ZmYsMHgwM2Y5LDB4MDFmNiwweDAxZWQsMHgwMWY4LDB4MDFlOSwweDAxZjUsMHgwM2ZiLDB4MDdmY30KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9jdGFiN1s4XVs4XT0KK3sKKyAgezB4MDAwMCwweDAwMDUsMHgwMDM3LDB4MDA3NCwweDAwZjIsMHgwMWViLDB4MDNlZCwweDA3Zjd9LAorICB7MHgwMDA0LDB4MDAwYywweDAwMzUsMHgwMDcxLDB4MDBlYywweDAwZWUsMHgwMWVlLDB4MDFmNX0sCisgIHsweDAwMzYsMHgwMDM0LDB4MDA3MiwweDAwZWEsMHgwMGYxLDB4MDFlOSwweDAxZjMsMHgwM2Y1fSwKKyAgezB4MDA3MywweDAwNzAsMHgwMGViLDB4MDBmMCwweDAxZjEsMHgwMWYwLDB4MDNlYywweDAzZmF9LAorICB7MHgwMGYzLDB4MDBlZCwweDAxZTgsMHgwMWVmLDB4MDNlZiwweDAzZjEsMHgwM2Y5LDB4MDdmYn0sCisgIHsweDAxZWQsMHgwMGVmLDB4MDFlYSwweDAxZjIsMHgwM2YzLDB4MDNmOCwweDA3ZjksMHgwN2ZjfSwKKyAgezB4MDNlZSwweDAxZWMsMHgwMWY0LDB4MDNmNCwweDAzZjcsMHgwN2Y4LDB4MGZmZCwweDBmZmV9LAorICB7MHgwN2Y2LDB4MDNmMCwweDAzZjIsMHgwM2Y2LDB4MDdmYSwweDA3ZmQsMHgwZmZjLDB4MGZmZn0KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9jdGFiOFs4XVs4XT0KK3sKKyAgezB4MDAwZSwweDAwMDUsMHgwMDEwLDB4MDAzMCwweDAwNmYsMHgwMGYxLDB4MDFmYSwweDAzZmV9LAorICB7MHgwMDAzLDB4MDAwMCwweDAwMDQsMHgwMDEyLDB4MDAyYywweDAwNmEsMHgwMDc1LDB4MDBmOH0sCisgIHsweDAwMGYsMHgwMDAyLDB4MDAwNiwweDAwMTQsMHgwMDJlLDB4MDA2OSwweDAwNzIsMHgwMGY1fSwKKyAgezB4MDAyZiwweDAwMTEsMHgwMDEzLDB4MDAyYSwweDAwMzIsMHgwMDZjLDB4MDBlYywweDAwZmF9LAorICB7MHgwMDcxLDB4MDAyYiwweDAwMmQsMHgwMDMxLDB4MDA2ZCwweDAwNzAsMHgwMGYyLDB4MDFmOX0sCisgIHsweDAwZWYsMHgwMDY4LDB4MDAzMywweDAwNmIsMHgwMDZlLDB4MDBlZSwweDAwZjksMHgwM2ZjfSwKKyAgezB4MDFmOCwweDAwNzQsMHgwMDczLDB4MDBlZCwweDAwZjAsMHgwMGY2LDB4MDFmNiwweDAxZmR9LAorICB7MHgwM2ZkLDB4MDBmMywweDAwZjQsMHgwMGY3LDB4MDFmNywweDAxZmIsMHgwMWZjLDB4MDNmZn0KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9jdGFiOVsxM11bMTNdPQoreworICB7MHgwMDAwLDB4MDAwNSwweDAwMzcsMHgwMGU3LDB4MDFkZSwweDAzY2UsMHgwM2Q5LDB4MDdjOCwweDA3Y2QsMHgwZmM4LDB4MGZkZCwweDFmZTQsMHgxZmVjfSwKKyAgezB4MDAwNCwweDAwMGMsMHgwMDM1LDB4MDA3MiwweDAwZWEsMHgwMGVkLDB4MDFlMiwweDAzZDEsMHgwM2QzLDB4MDNlMCwweDA3ZDgsMHgwZmNmLDB4MGZkNX0sCisgIHsweDAwMzYsMHgwMDM0LDB4MDA3MSwweDAwZTgsMHgwMGVjLDB4MDFlMSwweDAzY2YsMHgwM2RkLDB4MDNkYiwweDA3ZDAsMHgwZmM3LDB4MGZkNCwweDBmZTR9LAorICB7MHgwMGU2LDB4MDA3MCwweDAwZTksMHgwMWRkLDB4MDFlMywweDAzZDIsMHgwM2RjLDB4MDdjYywweDA3Y2EsMHgwN2RlLDB4MGZkOCwweDBmZWEsMHgxZmRifSwKKyAgezB4MDFkZiwweDAwZWIsMHgwMWRjLDB4MDFlNiwweDAzZDUsMHgwM2RlLDB4MDdjYiwweDA3ZGQsMHgwN2RjLDB4MGZjZCwweDBmZTIsMHgwZmU3LDB4MWZlMX0sCisgIHsweDAzZDAsMHgwMWUwLDB4MDFlNCwweDAzZDYsMHgwN2M1LDB4MDdkMSwweDA3ZGIsMHgwZmQyLDB4MDdlMCwweDBmZDksMHgwZmViLDB4MWZlMywweDFmZTl9LAorICB7MHgwN2M0LDB4MDFlNSwweDAzZDcsMHgwN2M2LDB4MDdjZiwweDA3ZGEsMHgwZmNiLDB4MGZkYSwweDBmZTMsMHgwZmU5LDB4MWZlNiwweDFmZjMsMHgxZmY3fSwKKyAgezB4MDdkMywweDAzZDgsMHgwM2UxLDB4MDdkNCwweDA3ZDksMHgwZmQzLDB4MGZkZSwweDFmZGQsMHgxZmQ5LDB4MWZlMiwweDFmZWEsMHgxZmYxLDB4MWZmNn0sCisgIHsweDA3ZDIsMHgwM2Q0LDB4MDNkYSwweDA3YzcsMHgwN2Q3LDB4MDdlMiwweDBmY2UsMHgwZmRiLDB4MWZkOCwweDFmZWUsMHgzZmYwLDB4MWZmNCwweDNmZjJ9LAorICB7MHgwN2UxLDB4MDNkZiwweDA3YzksMHgwN2Q2LDB4MGZjYSwweDBmZDAsMHgwZmU1LDB4MGZlNiwweDFmZWIsMHgxZmVmLDB4M2ZmMywweDNmZjQsMHgzZmY1fSwKKyAgezB4MGZlMCwweDA3Y2UsMHgwN2Q1LDB4MGZjNiwweDBmZDEsMHgwZmUxLDB4MWZlMCwweDFmZTgsMHgxZmYwLDB4M2ZmMSwweDNmZjgsMHgzZmY2LDB4N2ZmY30sCisgIHsweDBmZTgsMHgwN2RmLDB4MGZjOSwweDBmZDcsMHgwZmRjLDB4MWZkYywweDFmZGYsMHgxZmVkLDB4MWZmNSwweDNmZjksMHgzZmZiLDB4N2ZmZCwweDdmZmV9LAorICB7MHgxZmU3LDB4MGZjYywweDBmZDYsMHgwZmRmLDB4MWZkZSwweDFmZGEsMHgxZmU1LDB4MWZmMiwweDNmZmEsMHgzZmY3LDB4M2ZmYywweDNmZmQsMHg3ZmZmfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2N0YWIxMFsxM11bMTNdPQoreworICB7MHgwMDIyLDB4MDAwOCwweDAwMWQsMHgwMDI2LDB4MDA1ZiwweDAwZDMsMHgwMWNmLDB4MDNkMCwweDAzZDcsMHgwM2VkLDB4MDdmMCwweDA3ZjYsMHgwZmZkfSwKKyAgezB4MDAwNywweDAwMDAsMHgwMDAxLDB4MDAwOSwweDAwMjAsMHgwMDU0LDB4MDA2MCwweDAwZDUsMHgwMGRjLDB4MDFkNCwweDAzY2QsMHgwM2RlLDB4MDdlN30sCisgIHsweDAwMWMsMHgwMDAyLDB4MDAwNiwweDAwMGMsMHgwMDFlLDB4MDAyOCwweDAwNWIsMHgwMGNkLDB4MDBkOSwweDAxY2UsMHgwMWRjLDB4MDNkOSwweDAzZjF9LAorICB7MHgwMDI1LDB4MDAwYiwweDAwMGEsMHgwMDBkLDB4MDAyNCwweDAwNTcsMHgwMDYxLDB4MDBjYywweDAwZGQsMHgwMWNjLDB4MDFkZSwweDAzZDMsMHgwM2U3fSwKKyAgezB4MDA1ZCwweDAwMjEsMHgwMDFmLDB4MDAyMywweDAwMjcsMHgwMDU5LDB4MDA2NCwweDAwZDgsMHgwMGRmLDB4MDFkMiwweDAxZTIsMHgwM2RkLDB4MDNlZX0sCisgIHsweDAwZDEsMHgwMDU1LDB4MDAyOSwweDAwNTYsMHgwMDU4LDB4MDA2MiwweDAwY2UsMHgwMGUwLDB4MDBlMiwweDAxZGEsMHgwM2Q0LDB4MDNlMywweDA3ZWJ9LAorICB7MHgwMWM5LDB4MDA1ZSwweDAwNWEsMHgwMDVjLDB4MDA2MywweDAwY2EsMHgwMGRhLDB4MDFjNywweDAxY2EsMHgwMWUwLDB4MDNkYiwweDAzZTgsMHgwN2VjfSwKKyAgezB4MDFlMywweDAwZDIsMHgwMGNiLDB4MDBkMCwweDAwZDcsMHgwMGRiLDB4MDFjNiwweDAxZDUsMHgwMWQ4LDB4MDNjYSwweDAzZGEsMHgwN2VhLDB4MDdmMX0sCisgIHsweDAxZTEsMHgwMGQ0LDB4MDBjZiwweDAwZDYsMHgwMGRlLDB4MDBlMSwweDAxZDAsMHgwMWQ2LDB4MDNkMSwweDAzZDUsMHgwM2YyLDB4MDdlZSwweDA3ZmJ9LAorICB7MHgwM2U5LDB4MDFjZCwweDAxYzgsMHgwMWNiLDB4MDFkMSwweDAxZDcsMHgwMWRmLDB4MDNjZiwweDAzZTAsMHgwM2VmLDB4MDdlNiwweDA3ZjgsMHgwZmZhfSwKKyAgezB4MDNlYiwweDAxZGQsMHgwMWQzLDB4MDFkOSwweDAxZGIsMHgwM2QyLDB4MDNjYywweDAzZGMsMHgwM2VhLDB4MDdlZCwweDA3ZjMsMHgwN2Y5LDB4MGZmOX0sCisgIHsweDA3ZjIsMHgwM2NlLDB4MDFlNCwweDAzY2IsMHgwM2Q4LDB4MDNkNiwweDAzZTIsMHgwM2U1LDB4MDdlOCwweDA3ZjQsMHgwN2Y1LDB4MDdmNywweDBmZmJ9LAorICB7MHgwN2ZhLDB4MDNlYywweDAzZGYsMHgwM2UxLDB4MDNlNCwweDAzZTYsMHgwM2YwLDB4MDdlOSwweDA3ZWYsMHgwZmY4LDB4MGZmZSwweDBmZmMsMHgwZmZmfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2N0YWIxMVsxN11bMTddPQoreworICB7MHgwMDAwLDB4MDAwNiwweDAwMTksMHgwMDNkLDB4MDA5YywweDAwYzYsMHgwMWE3LDB4MDM5MCwweDAzYzIsMHgwM2RmLDB4MDdlNiwweDA3ZjMsMHgwZmZiLDB4MDdlYywweDBmZmEsMHgwZmZlLDB4MDM4ZX0sCisgIHsweDAwMDUsMHgwMDAxLDB4MDAwOCwweDAwMTQsMHgwMDM3LDB4MDA0MiwweDAwOTIsMHgwMGFmLDB4MDE5MSwweDAxYTUsMHgwMWI1LDB4MDM5ZSwweDAzYzAsMHgwM2EyLDB4MDNjZCwweDA3ZDYsMHgwMGFlfSwKKyAgezB4MDAxNywweDAwMDcsMHgwMDA5LDB4MDAxOCwweDAwMzksMHgwMDQwLDB4MDA4ZSwweDAwYTMsMHgwMGI4LDB4MDE5OSwweDAxYWMsMHgwMWMxLDB4MDNiMSwweDAzOTYsMHgwM2JlLDB4MDNjYSwweDAwOWR9LAorICB7MHgwMDNjLDB4MDAxNSwweDAwMTYsMHgwMDFhLDB4MDAzYiwweDAwNDQsMHgwMDkxLDB4MDBhNSwweDAwYmUsMHgwMTk2LDB4MDFhZSwweDAxYjksMHgwM2ExLDB4MDM5MSwweDAzYTUsMHgwM2Q1LDB4MDA5NH0sCisgIHsweDAwOWEsMHgwMDM2LDB4MDAzOCwweDAwM2EsMHgwMDQxLDB4MDA4YywweDAwOWIsMHgwMGIwLDB4MDBjMywweDAxOWUsMHgwMWFiLDB4MDFiYywweDAzOWYsMHgwMzhmLDB4MDNhOSwweDAzY2YsMHgwMDkzfSwKKyAgezB4MDBiZiwweDAwM2UsMHgwMDNmLDB4MDA0MywweDAwNDUsMHgwMDllLDB4MDBhNywweDAwYjksMHgwMTk0LDB4MDFhMiwweDAxYmEsMHgwMWMzLDB4MDNhNiwweDAzYTcsMHgwM2JiLDB4MDNkNCwweDAwOWZ9LAorICB7MHgwMWEwLDB4MDA4ZiwweDAwOGQsMHgwMDkwLDB4MDA5OCwweDAwYTYsMHgwMGI2LDB4MDBjNCwweDAxOWYsMHgwMWFmLDB4MDFiZiwweDAzOTksMHgwM2JmLDB4MDNiNCwweDAzYzksMHgwM2U3LDB4MDBhOH0sCisgIHsweDAxYjYsMHgwMGFiLDB4MDBhNCwweDAwYWEsMHgwMGIyLDB4MDBjMiwweDAwYzUsMHgwMTk4LDB4MDFhNCwweDAxYjgsMHgwMzhjLDB4MDNhNCwweDAzYzQsMHgwM2M2LDB4MDNkZCwweDAzZTgsMHgwMGFkfSwKKyAgezB4MDNhZiwweDAxOTIsMHgwMGJkLDB4MDBiYywweDAxOGUsMHgwMTk3LDB4MDE5YSwweDAxYTMsMHgwMWIxLDB4MDM4ZCwweDAzOTgsMHgwM2I3LDB4MDNkMywweDAzZDEsMHgwM2RiLDB4MDdkZCwweDAwYjR9LAorICB7MHgwM2RlLDB4MDFhOSwweDAxOWIsMHgwMTljLDB4MDFhMSwweDAxYWEsMHgwMWFkLDB4MDFiMywweDAzOGIsMHgwM2IyLDB4MDNiOCwweDAzY2UsMHgwM2UxLDB4MDNlMCwweDA3ZDIsMHgwN2U1LDB4MDBiN30sCisgIHsweDA3ZTMsMHgwMWJiLDB4MDFhOCwweDAxYTYsMHgwMWIwLDB4MDFiMiwweDAxYjcsMHgwMzliLDB4MDM5YSwweDAzYmEsMHgwM2I1LDB4MDNkNiwweDA3ZDcsMHgwM2U0LDB4MDdkOCwweDA3ZWEsMHgwMGJhfSwKKyAgezB4MDdlOCwweDAzYTAsMHgwMWJkLDB4MDFiNCwweDAzOGEsMHgwMWM0LDB4MDM5MiwweDAzYWEsMHgwM2IwLDB4MDNiYywweDAzZDcsMHgwN2Q0LDB4MDdkYywweDA3ZGIsMHgwN2Q1LDB4MDdmMCwweDAwYzF9LAorICB7MHgwN2ZiLDB4MDNjOCwweDAzYTMsMHgwMzk1LDB4MDM5ZCwweDAzYWMsMHgwM2FlLDB4MDNjNSwweDAzZDgsMHgwM2UyLDB4MDNlNiwweDA3ZTQsMHgwN2U3LDB4MDdlMCwweDA3ZTksMHgwN2Y3LDB4MDE5MH0sCisgIHsweDA3ZjIsMHgwMzkzLDB4MDFiZSwweDAxYzAsMHgwMzk0LDB4MDM5NywweDAzYWQsMHgwM2MzLDB4MDNjMSwweDAzZDIsMHgwN2RhLDB4MDdkOSwweDA3ZGYsMHgwN2ViLDB4MDdmNCwweDA3ZmEsMHgwMTk1fSwKKyAgezB4MDdmOCwweDAzYmQsMHgwMzljLDB4MDNhYiwweDAzYTgsMHgwM2IzLDB4MDNiOSwweDAzZDAsMHgwM2UzLDB4MDNlNSwweDA3ZTIsMHgwN2RlLDB4MDdlZCwweDA3ZjEsMHgwN2Y5LDB4MDdmYywweDAxOTN9LAorICB7MHgwZmZkLDB4MDNkYywweDAzYjYsMHgwM2M3LDB4MDNjYywweDAzY2IsMHgwM2Q5LDB4MDNkYSwweDA3ZDMsMHgwN2UxLDB4MDdlZSwweDA3ZWYsMHgwN2Y1LDB4MDdmNiwweDBmZmMsMHgwZmZmLDB4MDE5ZH0sCisgIHsweDAxYzIsMHgwMGI1LDB4MDBhMSwweDAwOTYsMHgwMDk3LDB4MDA5NSwweDAwOTksMHgwMGEwLDB4MDBhMiwweDAwYWMsMHgwMGE5LDB4MDBiMSwweDAwYjMsMHgwMGJiLDB4MDBjMCwweDAxOGYsMHgwMDA0fQorfTsKKworY29uc3QgVVdvcmQzMiBodWZmX2N0YWJzY2ZbMTIxXT0KK3sKKyAgMHgwMDAzZmZlOCwKKyAgMHgwMDAzZmZlNiwKKyAgMHgwMDAzZmZlNywKKyAgMHgwMDAzZmZlNSwKKyAgMHgwMDA3ZmZmNSwKKyAgMHgwMDA3ZmZmMSwKKyAgMHgwMDA3ZmZlZCwKKyAgMHgwMDA3ZmZmNiwKKyAgMHgwMDA3ZmZlZSwKKyAgMHgwMDA3ZmZlZiwKKyAgMHgwMDA3ZmZmMCwKKyAgMHgwMDA3ZmZmYywKKyAgMHgwMDA3ZmZmZCwKKyAgMHgwMDA3ZmZmZiwKKyAgMHgwMDA3ZmZmZSwKKyAgMHgwMDA3ZmZmNywKKyAgMHgwMDA3ZmZmOCwKKyAgMHgwMDA3ZmZmYiwKKyAgMHgwMDA3ZmZmOSwKKyAgMHgwMDAzZmZlNCwKKyAgMHgwMDA3ZmZmYSwKKyAgMHgwMDAzZmZlMywKKyAgMHgwMDAxZmZlZiwKKyAgMHgwMDAxZmZmMCwKKyAgMHgwMDAwZmZmNSwKKyAgMHgwMDAxZmZlZSwKKyAgMHgwMDAwZmZmMiwKKyAgMHgwMDAwZmZmMywKKyAgMHgwMDAwZmZmNCwKKyAgMHgwMDAwZmZmMSwKKyAgMHgwMDAwN2ZmNiwKKyAgMHgwMDAwN2ZmNywKKyAgMHgwMDAwM2ZmOSwKKyAgMHgwMDAwM2ZmNSwKKyAgMHgwMDAwM2ZmNywKKyAgMHgwMDAwM2ZmMywKKyAgMHgwMDAwM2ZmNiwKKyAgMHgwMDAwM2ZmMiwKKyAgMHgwMDAwMWZmNywKKyAgMHgwMDAwMWZmNSwKKyAgMHgwMDAwMGZmOSwKKyAgMHgwMDAwMGZmNywKKyAgMHgwMDAwMGZmNiwKKyAgMHgwMDAwMDdmOSwKKyAgMHgwMDAwMGZmNCwKKyAgMHgwMDAwMDdmOCwKKyAgMHgwMDAwMDNmOSwKKyAgMHgwMDAwMDNmNywKKyAgMHgwMDAwMDNmNSwKKyAgMHgwMDAwMDFmOCwKKyAgMHgwMDAwMDFmNywKKyAgMHgwMDAwMDBmYSwKKyAgMHgwMDAwMDBmOCwKKyAgMHgwMDAwMDBmNiwKKyAgMHgwMDAwMDA3OSwKKyAgMHgwMDAwMDAzYSwKKyAgMHgwMDAwMDAzOCwKKyAgMHgwMDAwMDAxYSwKKyAgMHgwMDAwMDAwYiwKKyAgMHgwMDAwMDAwNCwKKyAgMHgwMDAwMDAwMCwKKyAgMHgwMDAwMDAwYSwKKyAgMHgwMDAwMDAwYywKKyAgMHgwMDAwMDAxYiwKKyAgMHgwMDAwMDAzOSwKKyAgMHgwMDAwMDAzYiwKKyAgMHgwMDAwMDA3OCwKKyAgMHgwMDAwMDA3YSwKKyAgMHgwMDAwMDBmNywKKyAgMHgwMDAwMDBmOSwKKyAgMHgwMDAwMDFmNiwKKyAgMHgwMDAwMDFmOSwKKyAgMHgwMDAwMDNmNCwKKyAgMHgwMDAwMDNmNiwKKyAgMHgwMDAwMDNmOCwKKyAgMHgwMDAwMDdmNSwKKyAgMHgwMDAwMDdmNCwKKyAgMHgwMDAwMDdmNiwKKyAgMHgwMDAwMDdmNywKKyAgMHgwMDAwMGZmNSwKKyAgMHgwMDAwMGZmOCwKKyAgMHgwMDAwMWZmNCwKKyAgMHgwMDAwMWZmNiwKKyAgMHgwMDAwMWZmOCwKKyAgMHgwMDAwM2ZmOCwKKyAgMHgwMDAwM2ZmNCwKKyAgMHgwMDAwZmZmMCwKKyAgMHgwMDAwN2ZmNCwKKyAgMHgwMDAwZmZmNiwKKyAgMHgwMDAwN2ZmNSwKKyAgMHgwMDAzZmZlMiwKKyAgMHgwMDA3ZmZkOSwKKyAgMHgwMDA3ZmZkYSwKKyAgMHgwMDA3ZmZkYiwKKyAgMHgwMDA3ZmZkYywKKyAgMHgwMDA3ZmZkZCwKKyAgMHgwMDA3ZmZkZSwKKyAgMHgwMDA3ZmZkOCwKKyAgMHgwMDA3ZmZkMiwKKyAgMHgwMDA3ZmZkMywKKyAgMHgwMDA3ZmZkNCwKKyAgMHgwMDA3ZmZkNSwKKyAgMHgwMDA3ZmZkNiwKKyAgMHgwMDA3ZmZmMiwKKyAgMHgwMDA3ZmZkZiwKKyAgMHgwMDA3ZmZlNywKKyAgMHgwMDA3ZmZlOCwKKyAgMHgwMDA3ZmZlOSwKKyAgMHgwMDA3ZmZlYSwKKyAgMHgwMDA3ZmZlYiwKKyAgMHgwMDA3ZmZlNiwKKyAgMHgwMDA3ZmZlMCwKKyAgMHgwMDA3ZmZlMSwKKyAgMHgwMDA3ZmZlMiwKKyAgMHgwMDA3ZmZlMywKKyAgMHgwMDA3ZmZlNCwKKyAgMHgwMDA3ZmZlNSwKKyAgMHgwMDA3ZmZkNywKKyAgMHgwMDA3ZmZlYywKKyAgMHgwMDA3ZmZmNCwKKyAgMHgwMDA3ZmZmMworfTsKKworY29uc3QgV29yZDMyIG1fbG9nMl90YWJsZVtJTlRfQklUU10gPSB7CisgIDB4MDAwMDAwMDAsMHg0YWUwMGQwMCwweDI5MzRmMDgwLDB4MTVjMDFhM2YsIAorICAweDBiMzFmYjgwLDB4MDVhZWI0ZTAsMHgwMmRjZjJkMCwweDAxNmZlNTBjLCAKKyAgMHgwMGI4NGUyMywweDAwNWMzZTEwLDB4MDAyZTI0Y2EsMHgwMDE3MTNkNiwKKyAgMHgwMDBiOGE0NywweDAwMDVjNTNiLDB4MDAwMmUyYTMsMHgwMDAxNzE1MywKKyAgMHgwMDAwYjhhYSwweDAwMDA1YzU1LDB4MDAwMDJlMmIsMHgwMDAwMTcxNSwKKyAgMHgwMDAwMGI4YiwweDAwMDAwNWM1LDB4MDAwMDAyZTMsMHgwMDAwMDE3MSwgCisgIDB4MDAwMDAwYjksMHgwMDAwMDA1YywweDAwMDAwMDJlLDB4MDAwMDAwMTcsCisgIDB4MDAwMDAwMGMsMHgwMDAwMDAwNiwweDAwMDAwMDAzLDB4MDAwMDAwMDEKK307CisKKworLyoKKyAgMyBiaXQgcmVzb2x1dGlvbgorKi8KK2NvbnN0IFdvcmQzMiB0bnNDb2VmZjNbOF0gPQoreworICAweDgxZjFkMWQ0LAorICAweDkxMjYxNDdjLAorICAweGFkYjkyMmY3LAorICAweGQ0MzhhZjA5LAorICAweDAwMDAwMDAwLAorICAweDM3ODk4MDg3LAorICAweDY0MTMwZGZhLAorICAweDdjY2E2ZmZiLAorfTsKKworY29uc3QgV29yZDMyIHRuc0NvZWZmM0JvcmRlcnNbOF0gPQoreworICAweDgwMDAwMDAwLCAgLyogLTQgKi8KKyAgMHg4N2I4MjZkZSwgIC8qIC0zICovCisgIDB4OWRmMjQxNTMsICAvKiAtMiAqLworICAweGJmZmZmZmU1LCAgLyogLTEgKi8KKyAgMHhlOWM1ZTU3OCwgIC8qICAwICovCisgIDB4MWM3YjkwZjAsICAvKiAgMSAqLworICAweDRmY2U4M2FhLCAgLyogIDIgKi8KKyAgMHg3MzUyZjJjNCwgIC8qICAzICovCit9OworCisKKy8qCisgIDQgYml0IHJlc29sdXRpb24KKyovCisKK2NvbnN0IFdvcmQzMiB0bnNDb2VmZjRbMTZdID0KK3sKKyAgMHg4MDhiYzg0YiwKKyAgMHg4NGUyZTU3ZCwKKyAgMHg4ZDZiNDlmYiwKKyAgMHg5OWRhOTIwNywKKyAgMHhhOWM0NTcwNywKKyAgMHhiYzlkZGU3OCwKKyAgMHhkMWMyZDRmYywKKyAgMHhlODdhZTUzOSwKKyAgMHgwMDAwMDAwMCwKKyAgMHgxYTljZDljMCwKKyAgMHgzNDBmZjIzYiwKKyAgMHg0YjNjOGJmNywKKyAgMHg1ZjFmNWU4MCwKKyAgMHg2ZWQ5ZWI4NCwKKyAgMHg3OWJjMzg4MCwKKyAgMHg3ZjRjN2U4OQorfTsKKworY29uc3QgV29yZDMyIHRuc0NvZWZmNEJvcmRlcnNbMTZdPQoreworICAweDgwMDAwMDAwLCAgLyogLTggKi8KKyAgMHg4MjJkZWZlZiwgIC8qIC03ICovCisgIDB4ODhhNGJmZTUsICAvKiAtNiAqLworICAweDkzMmMxNTljLCAgLyogLTUgKi8KKyAgMHhhMTY4MjdjMSwgIC8qIC00ICovCisgIDB4YjJkY2RlMjYsICAvKiAtMyAqLworICAweGM2ZjIwYjkxLCAgLyogLTIgKi8KKyAgMHhkY2Y4OWM2NCwgIC8qIC0xICovCisgIDB4ZjQzMDhjZTEsICAvKiAgMCAqLworICAweDBkNjEzMDU0LCAgLyogIDEgKi8KKyAgMHgyNzhkZGU4MCwgIC8qICAyICovCisgIDB4NDAwMDAwMWIsICAvKiAgMyAqLworICAweDU1YTYxMjdjLCAgLyogIDQgKi8KKyAgMHg2NzhkZGU4ZiwgIC8qICA1ICovCisgIDB4NzRlZjBlZDgsICAvKiAgNiAqLworICAweDdkMzNmMGRiICAgLyogIDcgKi8KK307CisKKworY29uc3QgdW5zaWduZWQgY2hhciBiaXRyZXZUYWJbMTcgKyAxMjldID0gDQorew0KKy8qIDY0ICovDQorMHgwMSwgMHgwOCwgMHgwMiwgMHgwNCwgMHgwMywgMHgwYywgMHgwNSwgMHgwYSwgMHgwNywgMHgwZSwgMHgwYiwgMHgwZCwgMHgwMCwgMHgwNiwgMHgwOSwgMHgwZiwNCisweDAwLA0KKw0KKy8qIDUxMiAqLw0KKzB4MDEsIDB4NDAsIDB4MDIsIDB4MjAsIDB4MDMsIDB4NjAsIDB4MDQsIDB4MTAsIDB4MDUsIDB4NTAsIDB4MDYsIDB4MzAsIDB4MDcsIDB4NzAsIDB4MDksIDB4NDgsDQorMHgwYSwgMHgyOCwgMHgwYiwgMHg2OCwgMHgwYywgMHgxOCwgMHgwZCwgMHg1OCwgMHgwZSwgMHgzOCwgMHgwZiwgMHg3OCwgMHgxMSwgMHg0NCwgMHgxMiwgMHgyNCwNCisweDEzLCAweDY0LCAweDE1LCAweDU0LCAweDE2LCAweDM0LCAweDE3LCAweDc0LCAweDE5LCAweDRjLCAweDFhLCAweDJjLCAweDFiLCAweDZjLCAweDFkLCAweDVjLA0KKzB4MWUsIDB4M2MsIDB4MWYsIDB4N2MsIDB4MjEsIDB4NDIsIDB4MjMsIDB4NjIsIDB4MjUsIDB4NTIsIDB4MjYsIDB4MzIsIDB4MjcsIDB4NzIsIDB4MjksIDB4NGEsDQorMHgyYiwgMHg2YSwgMHgyZCwgMHg1YSwgMHgyZSwgMHgzYSwgMHgyZiwgMHg3YSwgMHgzMSwgMHg0NiwgMHgzMywgMHg2NiwgMHgzNSwgMHg1NiwgMHgzNywgMHg3NiwNCisweDM5LCAweDRlLCAweDNiLCAweDZlLCAweDNkLCAweDVlLCAweDNmLCAweDdlLCAweDQzLCAweDYxLCAweDQ1LCAweDUxLCAweDQ3LCAweDcxLCAweDRiLCAweDY5LA0KKzB4NGQsIDB4NTksIDB4NGYsIDB4NzksIDB4NTMsIDB4NjUsIDB4NTcsIDB4NzUsIDB4NWIsIDB4NmQsIDB4NWYsIDB4N2QsIDB4NjcsIDB4NzMsIDB4NmYsIDB4N2IsDQorMHgwMCwgMHgwOCwgMHgxNCwgMHgxYywgMHgyMiwgMHgyYSwgMHgzNiwgMHgzZSwgMHg0MSwgMHg0OSwgMHg1NSwgMHg1ZCwgMHg2MywgMHg2YiwgMHg3NywgMHg3ZiwNCisweDAwLA0KK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYWFjZW5jLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hYWNlbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTJhZTQxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYWFjZW5jLmMKQEAgLTAsMCArMSw0OTUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWFhY2VuYy5jDQorDQorCUNvbnRlbnQ6CWFhYyBlbmNvZGVyIGludGVyZmFjZSBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ2b0FBQy5oIg0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImFhY2VuY19jb3JlLmgiDQorI2luY2x1ZGUgImFhY19yb20uaCINCisjaW5jbHVkZSAiY21uTWVtb3J5LmgiDQorI2luY2x1ZGUgIm1lbWFsaWduLmgiDQorDQorLyoqDQorKiBJbml0IHRoZSBhdWRpbyBjb2RlYyBtb2R1bGUgYW5kIHJldHVybiBjb2RlYyBoYW5kbGUNCisqIFxwYXJhbSBwaENvZGVjIFtPVVRdIFJldHVybiB0aGUgdmlkZW8gY29kZWMgaGFuZGxlDQorKiBccGFyYW0gdlR5cGUJW0lOXSBUaGUgY29kZWMgdHlwZSBpZiB0aGUgbW9kdWxlIHN1cHBvcnQgbXVsdGkgY29kZWMuDQorKiBccGFyYW0gcFVzZXJEYXRhCVtJTl0gVGhlIGluaXQgcGFyYW0uIEl0IGlzIG1lbW9yeSBvcGVyYXRvciBvciBhbGxvY2VkIG1lbW9yeQ0KKyogXHJldHZhbCBWT19FUlJfTk9ORSBTdWNjZWVkZWQuDQorKi8NCitWT19VMzIgVk9fQVBJIHZvQUFDRW5jSW5pdChWT19IQU5ETEUgKiBwaENvZGVjLFZPX0FVRElPX0NPRElOR1RZUEUgdlR5cGUsIFZPX0NPREVDX0lOSVRfVVNFUkRBVEEgKnBVc2VyRGF0YSkNCit7DQorCUFBQ19FTkNPREVSKmhBYWNFbmM7DQorCUFBQ0VOQ19DT05GSUcgY29uZmlnOw0KKwlpbnQgZXJyb3I7DQorDQorI2lmZGVmIFVTRV9ERUFVTFRfTUVNDQorCVZPX01FTV9PUEVSQVRPUiB2b01lbW9wcmF0b3I7DQorI2VuZGlmDQorCVZPX01FTV9PUEVSQVRPUiAqcE1lbU9QOw0KKwlpbnQgaW50ZXJNZW07DQorDQorCWludGVyTWVtID0gMDsNCisJZXJyb3IgPSAwOw0KKwkNCisJLyogaW5pdCB0aGUgbWVtb3J5IG9wZXJhdG9yICovDQorCWlmKHBVc2VyRGF0YSA9PSBOVUxMIHx8IHBVc2VyRGF0YS0+bWVtZmxhZyAhPSBWT19JTUZfVVNFUk1FTU9QRVJBVE9SIHx8IHBVc2VyRGF0YS0+bWVtRGF0YSA9PSBOVUxMICkNCisJew0KKyNpZmRlZiBVU0VfREVBVUxUX01FTQ0KKwkJdm9NZW1vcHJhdG9yLkFsbG9jID0gY21uTWVtQWxsb2M7DQorCQl2b01lbW9wcmF0b3IuQ29weSA9IGNtbk1lbUNvcHk7DQorCQl2b01lbW9wcmF0b3IuRnJlZSA9IGNtbk1lbUZyZWU7DQorCQl2b01lbW9wcmF0b3IuU2V0ID0gY21uTWVtU2V0Ow0KKwkJdm9NZW1vcHJhdG9yLkNoZWNrID0gY21uTWVtQ2hlY2s7DQorDQorCQlpbnRlck1lbSA9IDE7DQorDQorCQlwTWVtT1AgPSAmdm9NZW1vcHJhdG9yOw0KKyNlbHNlDQorCQkqcGhDb2RlYyA9IE5VTEw7DQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKyNlbmRpZg0KKwl9DQorCWVsc2UNCisJew0KKwkJcE1lbU9QID0gKFZPX01FTV9PUEVSQVRPUiAqKXBVc2VyRGF0YS0+bWVtRGF0YTsNCisJfQ0KKw0KKwkvKiBpbml0IHRoZSBhYWMgZW5jb2RlciBoYW5kbGUgKi8NCisJaEFhY0VuYyA9IChBQUNfRU5DT0RFUiopbWVtX21hbGxvYyhwTWVtT1AsIHNpemVvZihBQUNfRU5DT0RFUiksIDMyLCBWT19JTkRFWF9FTkNfQUFDKTsNCisJaWYoTlVMTCA9PSBoQWFjRW5jKQ0KKwl7DQorCQllcnJvciA9IDE7DQorCX0NCisNCisJaWYoIWVycm9yKQ0KKwl7DQorCQkvKiBpbml0IHRoZSBhYWMgZW5jb2RlciBpbnRyYSBtZW1vcnkgKi8NCisJCWhBYWNFbmMtPmludGJ1ZiA9IChzaG9ydCAqKW1lbV9tYWxsb2MocE1lbU9QLCBBQUNFTkNfQkxPQ0tTSVpFKk1BWF9DSEFOTkVMUypzaXplb2Yoc2hvcnQpLCAzMiwgVk9fSU5ERVhfRU5DX0FBQyk7DQorCQlpZihOVUxMID09IGhBYWNFbmMtPmludGJ1ZikNCisJCXsNCisJCQllcnJvciA9IDE7DQorCQl9DQorCX0NCisNCisJaWYgKCFlcnJvcikgeworCQkvKiBpbml0IHRoZSBhYWMgZW5jb2RlciBwc3ljaG9hY291c3RpYyAqLworCQllcnJvciA9IChQc3lOZXcoJmhBYWNFbmMtPnBzeUtlcm5lbCwgTUFYX0NIQU5ORUxTLCBwTWVtT1ApIHx8CisJCQlQc3lPdXROZXcoJmhBYWNFbmMtPnBzeU91dCwgcE1lbU9QKSk7CisJfQ0KKw0KKwlpZiAoIWVycm9yKSB7CisJCS8qIGluaXQgdGhlIGFhYyBlbmNvZGVyIHF1YW50aXphdGlvbiBlbGVtZW50cyAqLworCQllcnJvciA9IFFDT3V0TmV3KCZoQWFjRW5jLT5xY091dCxNQVhfQ0hBTk5FTFMsIHBNZW1PUCk7CisJfQ0KKw0KKwlpZiAoIWVycm9yKSB7CisJCS8qIGluaXQgdGhlIGFhYyBlbmNvZGVyIHF1YW50aXphdGlvbiBzdGF0ZSAqLworCQllcnJvciA9IFFDTmV3KCZoQWFjRW5jLT5xY0tlcm5lbCwgcE1lbU9QKTsKKwl9CisKKwkvKiB1bmluaXQgdGhlIGFhYyBlbmNvZGVyIGlmIGVycm9yIGlzIG5vemVybyAqLworCWlmKGVycm9yKQorCXsKKwkJQWFjRW5jQ2xvc2UoaEFhY0VuYywgcE1lbU9QKTsKKwkJaWYoaEFhY0VuYykKKwkJeworCQkJbWVtX2ZyZWUocE1lbU9QLCBoQWFjRW5jLCBWT19JTkRFWF9FTkNfQUFDKTsKKwkJCWhBYWNFbmMgPSBOVUxMOworCQl9CQkKKwkJKnBoQ29kZWMgPSBOVUxMOworCQlyZXR1cm4gVk9fRVJSX09VVE9GX01FTU9SWTsKKwl9DQorDQorCS8qIGluaXQgdGhlIGFhYyBlbmNvZGVyIG1lbW9yeSBvcGVyYXRvciAgKi8NCisjaWZkZWYgVVNFX0RFQVVMVF9NRU0NCisJaWYoaW50ZXJNZW0pDQorCXsNCisJCWhBYWNFbmMtPnZvTWVtb3ByYXRvci5BbGxvYyA9IGNtbk1lbUFsbG9jOw0KKwkJaEFhY0VuYy0+dm9NZW1vcHJhdG9yLkNvcHkgPSBjbW5NZW1Db3B5Ow0KKwkJaEFhY0VuYy0+dm9NZW1vcHJhdG9yLkZyZWUgPSBjbW5NZW1GcmVlOw0KKwkJaEFhY0VuYy0+dm9NZW1vcHJhdG9yLlNldCA9IGNtbk1lbVNldDsNCisJCWhBYWNFbmMtPnZvTWVtb3ByYXRvci5DaGVjayA9IGNtbk1lbUNoZWNrOw0KKw0KKwkJcE1lbU9QID0gJmhBYWNFbmMtPnZvTWVtb3ByYXRvcjsNCisJfQ0KKyNlbmRpZg0KKwkvKiBpbml0IHRoZSBhYWMgZW5jb2RlciBkZWZhdWx0IHBhcmFtZXRlciAgKi8NCisJaWYoaEFhY0VuYy0+aW5pdE9LID09IDApDQorCXsNCisJCSBBQUNFTkNfQ09ORklHIGNvbmZpZzsNCisJCSBjb25maWcuYWR0c1VzZWQgPSAxOw0KKwkJIGNvbmZpZy5iaXRSYXRlID0gMTI4MDAwOw0KKwkJIGNvbmZpZy5uQ2hhbm5lbHNJbiA9IDI7DQorCQkgY29uZmlnLm5DaGFubmVsc091dCA9IDI7DQorCQkgY29uZmlnLnNhbXBsZVJhdGUgPSA0NDEwMDsNCisJCSBjb25maWcuYmFuZFdpZHRoID0gMjAwMDA7DQorDQorCQkgQWFjRW5jT3BlbihoQWFjRW5jLCBjb25maWcpOw0KKwl9DQorDQorCWhBYWNFbmMtPnZvTWVtb3AgPSBwTWVtT1A7DQorDQorCSpwaENvZGVjID0gaEFhY0VuYzsNCisNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioNCisqIFNldCBpbnB1dCBhdWRpbyBkYXRhLg0KKyogXHBhcmFtIGhDb2RlYyBbSU5dXSBUaGUgQ29kZWMgSGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24uDQorKiBccGFyYW0gcElucHV0IFtJTl0gVGhlIGlucHV0IGJ1ZmZlciBwYXJhbS4NCisqIFxwYXJhbSBwT3V0QnVmZmVyIFtPVVRdIFRoZSBvdXRwdXQgYnVmZmVyIGluZm8uDQorKiBccmV0dmFsIFZPX0VSUl9OT05FIFN1Y2NlZWRlZC4NCisqLw0KK1ZPX1UzMiBWT19BUEkgdm9BQUNFbmNTZXRJbnB1dERhdGEoVk9fSEFORExFIGhDb2RlYywgVk9fQ09ERUNCVUZGRVIgKiBwSW5wdXQpDQorew0KKwlBQUNfRU5DT0RFUiAqaEFhY0VuYzsNCisJaW50ICBsZW5ndGg7DQorDQorCWlmKE5VTEwgPT0gaENvZGVjIHx8IE5VTEwgPT0gcElucHV0IHx8IE5VTEwgPT0gcElucHV0LT5CdWZmZXIpDQorCXsNCisJCXJldHVybiBWT19FUlJfSU5WQUxJRF9BUkc7DQorCX0NCisJDQorCWhBYWNFbmMgPSAoQUFDX0VOQ09ERVIgKiloQ29kZWM7DQorCQ0KKwkvKiBpbml0IGlucHV0IHBjbSBidWZmZXIgYW5kIGxlbmd0aCovDQorCWhBYWNFbmMtPmluYnVmID0gKHNob3J0ICopcElucHV0LT5CdWZmZXI7DQorCWhBYWNFbmMtPmlubGVuID0gcElucHV0LT5MZW5ndGggLyBzaXplb2Yoc2hvcnQpOw0KKwloQWFjRW5jLT51c2VsZW5ndGggPSAwOw0KKw0KKwloQWFjRW5jLT5lbmNidWYgPSBoQWFjRW5jLT5pbmJ1ZjsNCisJaEFhY0VuYy0+ZW5jbGVuID0gaEFhY0VuYy0+aW5sZW47DQorCQ0KKwkvKiByZWJ1aWxkIGludHJhIHBjbSBidWZmZXIgYW5kIGxlbmd0aCovDQorCWlmKGhBYWNFbmMtPmludGxlbikNCisJew0KKwkJbGVuZ3RoID0gbWluKGhBYWNFbmMtPmNvbmZpZy5uQ2hhbm5lbHNJbipBQUNFTkNfQkxPQ0tTSVpFIC0gaEFhY0VuYy0+aW50bGVuLCBoQWFjRW5jLT5pbmxlbik7DQorCQloQWFjRW5jLT52b01lbW9wLT5Db3B5KFZPX0lOREVYX0VOQ19BQUMsIGhBYWNFbmMtPmludGJ1ZiArIGhBYWNFbmMtPmludGxlbiwgDQorCQkJaEFhY0VuYy0+aW5idWYsIGxlbmd0aCpzaXplb2Yoc2hvcnQpKTsNCisNCisJCWhBYWNFbmMtPmVuY2J1ZiA9IGhBYWNFbmMtPmludGJ1ZjsNCisJCWhBYWNFbmMtPmVuY2xlbiA9IGhBYWNFbmMtPmludGxlbiArIGxlbmd0aDsNCisNCisJCWhBYWNFbmMtPmluYnVmICs9IGxlbmd0aDsNCisJCWhBYWNFbmMtPmlubGVuIC09IGxlbmd0aDsNCisJfQ0KKwkNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioNCisqIEdldCB0aGUgb3V0dXQgYXVkaW8gZGF0YQ0KKyogXHBhcmFtIGhDb2RlYyBbSU5dXSBUaGUgQ29kZWMgSGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24uDQorKiBccGFyYW0gcE91dEJ1ZmZlciBbT1VUXSBUaGUgb3V0cHV0IGF1ZGlvIGRhdGENCisqIFxwYXJhbSBwT3V0SW5mbyBbT1VUXSBUaGUgZGVjIG1vZHVsZSBmaWxsZWQgYXVkaW8gZm9ybWF0IGFuZCB1c2VkIHRoZSBpbnB1dCBzaXplLg0KKyoJCQkJCQkgcE91dEluZm8tPklucHV0VXNlZCBpcyB0b3RhbCB1c2VkIHRoZSBpbnB1dCBzaXplLg0KKyogXHJldHZhbCAgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKyoJCQlWT19FUlJfSU5QVVRfQlVGRkVSX1NNQUxMLiBUaGUgaW5wdXQgd2FzIGZpbmlzaGVkIG9yIHRoZSBpbnB1dCBkYXRhIHdhcyBub3QgZW5vdWdodC4NCisqLw0KK1ZPX1UzMiBWT19BUEkgdm9BQUNFbmNHZXRPdXRwdXREYXRhKFZPX0hBTkRMRSBoQ29kZWMsIFZPX0NPREVDQlVGRkVSICogcE91dHB1dCwgVk9fQVVESU9fT1VUUFVUSU5GTyAqIHBPdXRJbmZvKQ0KK3sNCisJQUFDX0VOQ09ERVIqIGhBYWNFbmMgPSAoQUFDX0VOQ09ERVIqKWhDb2RlYzsNCisJV29yZDE2IG51bUFuY0RhdGFCeXRlcz0wOw0KKwlXb3JkMzIgIGluYnVmbGVuOw0KKwlpbnQgcmV0LCBsZW5ndGg7DQorCWlmKE5VTEwgPT0gaEFhY0VuYykNCisJCXJldHVybiBWT19FUlJfSU5WQUxJRF9BUkc7DQorDQorCSBpbmJ1ZmxlbiA9IEFBQ0VOQ19CTE9DS1NJWkUqaEFhY0VuYy0+Y29uZmlnLm5DaGFubmVsc0luOw0KKw0KKwkgLyogY2hlY2sgdGhlIGlucHV0IHBjbSBidWZmZXIgYW5kIGxlbmd0aCovDQorCSBpZihOVUxMID09IGhBYWNFbmMtPmVuY2J1ZiB8fCBoQWFjRW5jLT5lbmNsZW4gPCBpbmJ1ZmxlbikNCisJIHsNCisJCWxlbmd0aCA9IGhBYWNFbmMtPmVuY2xlbjsJCQ0KKwkJaWYoaEFhY0VuYy0+aW50bGVuID09IDApDQorCQl7CQ0KKwkJCWhBYWNFbmMtPnZvTWVtb3AtPkNvcHkoVk9fSU5ERVhfRU5DX0FBQywgaEFhY0VuYy0+aW50YnVmLCANCisJCQkJaEFhY0VuYy0+ZW5jYnVmLCBsZW5ndGgqc2l6ZW9mKHNob3J0KSk7CQkNCisJCQloQWFjRW5jLT51c2VsZW5ndGggKz0gbGVuZ3RoKnNpemVvZihzaG9ydCk7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJaEFhY0VuYy0+dXNlbGVuZ3RoICs9IChsZW5ndGggLSBoQWFjRW5jLT5pbnRsZW4pKnNpemVvZihzaG9ydCk7DQorCQl9DQorDQorCQloQWFjRW5jLT5pbnRsZW4gPSBsZW5ndGg7DQorDQorCQlwT3V0cHV0LT5MZW5ndGggPSAwOw0KKwkJaWYocE91dEluZm8pDQorCQkJcE91dEluZm8tPklucHV0VXNlZCA9IGhBYWNFbmMtPnVzZWxlbmd0aDsNCisJCXJldHVybiBWT19FUlJfSU5QVVRfQlVGRkVSX1NNQUxMOwkNCisJIH0NCisNCisJIC8qIGNoZWNrIHRoZSBvdXRwdXQgYWFjIGJ1ZmZlciBhbmQgbGVuZ3RoKi8NCisJIGlmKE5VTEwgPT0gcE91dHB1dCB8fCBOVUxMID09IHBPdXRwdXQtPkJ1ZmZlciB8fCBwT3V0cHV0LT5MZW5ndGggPCAoNjE0NC84KSpoQWFjRW5jLT5jb25maWcubkNoYW5uZWxzT3V0LyhzaXplb2YoV29yZDMyKSkpDQorCQkgcmV0dXJuIFZPX0VSUl9PVVRQVVRfQlVGRkVSX1NNQUxMOw0KKw0KKwkgLyogYWFjIGVuY29kZXIgY29yZSBmdW5jdGlvbiAqLw0KKwkgQWFjRW5jRW5jb2RlKCBoQWFjRW5jLA0KKwkJCShXb3JkMTYqKWhBYWNFbmMtPmVuY2J1ZiwNCisJCQlOVUxMLA0KKwkJCSZudW1BbmNEYXRhQnl0ZXMsDQorCQkJcE91dHB1dC0+QnVmZmVyLA0KKwkJCSZwT3V0cHV0LT5MZW5ndGgpOw0KKw0KKwkgLyogdXBkYXRlIHRoZSBpbnB1dCBwY20gYnVmZmVyIGFuZCBsZW5ndGgqLw0KKwkgaWYoaEFhY0VuYy0+aW50bGVuKQ0KKwkgew0KKwkJbGVuZ3RoID0gaW5idWZsZW4gLSBoQWFjRW5jLT5pbnRsZW47CQkNCisJCWhBYWNFbmMtPmVuY2J1ZiA9IGhBYWNFbmMtPmluYnVmOw0KKwkJaEFhY0VuYy0+ZW5jbGVuID0gaEFhY0VuYy0+aW5sZW47DQorCQloQWFjRW5jLT51c2VsZW5ndGggKz0gbGVuZ3RoKnNpemVvZihzaG9ydCk7DQorCQloQWFjRW5jLT5pbnRsZW4gPSAwOw0KKwkgfQ0KKwkgZWxzZQ0KKwkgew0KKwkJIGhBYWNFbmMtPmVuY2J1ZiA9IGhBYWNFbmMtPmVuY2J1ZiArIGluYnVmbGVuOw0KKwkJIGhBYWNFbmMtPmVuY2xlbiA9IGhBYWNFbmMtPmVuY2xlbiAtIGluYnVmbGVuOw0KKwkJIGhBYWNFbmMtPnVzZWxlbmd0aCArPSBpbmJ1ZmxlbipzaXplb2Yoc2hvcnQpOw0KKwkgfQkgDQorDQorCSAvKiB1cGRhdGUgdGhlIG91dHB1dCBhYWMgaW5mb3JtYXRpb24gKi8NCisJaWYocE91dEluZm8pDQorCXsNCisJCXBPdXRJbmZvLT5Gb3JtYXQuQ2hhbm5lbHMgPSBoQWFjRW5jLT5jb25maWcubkNoYW5uZWxzT3V0Ow0KKwkJcE91dEluZm8tPkZvcm1hdC5TYW1wbGVSYXRlID0gaEFhY0VuYy0+Y29uZmlnLnNhbXBsZVJhdGU7DQorCQlwT3V0SW5mby0+Rm9ybWF0LlNhbXBsZUJpdHMgPSAxNjsNCisJCXBPdXRJbmZvLT5JbnB1dFVzZWQgPSBoQWFjRW5jLT51c2VsZW5ndGg7DQorCX0NCisNCisJIHJldHVybiBWT19FUlJfTk9ORTsNCit9DQorDQorLyoqDQorKiBVbmluaXQgdGhlIENvZGVjLg0KKyogXHBhcmFtIGhDb2RlYyBbSU5dXSBUaGUgQ29kZWMgSGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24uDQorKiBccmV0dmFsIFZPX0VSUl9OT05FIFN1Y2NlZWRlZC4NCisqLw0KK1ZPX1UzMiBWT19BUEkgdm9BQUNFbmNVbmluaXQoVk9fSEFORExFIGhDb2RlYykNCit7DQorCUFBQ19FTkNPREVSKiBoQWFjRW5jID0gKEFBQ19FTkNPREVSKiloQ29kZWM7DQorCQ0KKwlpZihOVUxMICE9IGhBYWNFbmMpDQorCXsNCisJCS8qIGNsb3NlIHRoZSBhYWMgZW5jb2RlciAqLw0KKwkJQWFjRW5jQ2xvc2UoaEFhY0VuYywgaEFhY0VuYy0+dm9NZW1vcCk7DQorDQorCQkvKiBmcmVlIHRoZSBhYWMgZW5jb2RlciBoYW5kbGUqLw0KKwkJbWVtX2ZyZWUoaEFhY0VuYy0+dm9NZW1vcCwgaEFhY0VuYywgVk9fSU5ERVhfRU5DX0FBQyk7DQorCQloQWFjRW5jID0gTlVMTDsNCisJfQkNCisNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioNCisqIFNldCB0aGUgcGFyYW0gZm9yIHNwZWNpYWwgdGFyZ2V0Lg0KKyogXHBhcmFtIGhDb2RlYyBbSU5dXSBUaGUgQ29kZWMgSGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24uDQorKiBccGFyYW0gdVBhcmFtSUQgW0lOXSBUaGUgcGFyYW0gSUQuDQorKiBccGFyYW0gcERhdGEgW0lOXSBUaGUgcGFyYW0gdmFsdWUgZGVwZW5kIG9uIHRoZSBJRD4NCisqIFxyZXR2YWwgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKyovDQorVk9fVTMyIFZPX0FQSSB2b0FBQ0VuY1NldFBhcmFtKFZPX0hBTkRMRSBoQ29kZWMsIFZPX1MzMiB1UGFyYW1JRCwgVk9fUFRSIHBEYXRhKQ0KK3sNCisJQUFDRU5DX0NPTkZJRyBjb25maWc7DQorCUFBQ0VOQ19QQVJBTSogcEFBQ19wYXJhbTsNCisJVk9fQVVESU9fRk9STUFUICpwV0FWX0Zvcm1hdDsNCisJQUFDX0VOQ09ERVIqIGhBYWNFbmMgPSAoQUFDX0VOQ09ERVIqKWhDb2RlYzsNCisJaW50IHJldCwgaSwgYml0cmF0ZSwgdG1wOw0KKwlpbnQgU2FtcGxlUmF0ZUlkeDsNCisNCisJaWYoTlVMTCA9PSBoQWFjRW5jKQ0KKwkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisJDQorCXN3aXRjaCh1UGFyYW1JRCkNCisJew0KKwljYXNlIFZPX1BJRF9BQUNfRU5DUEFSQU06ICAvKiBpbml0IGFhYyBlbmNvZGVyIHBhcmFtZXRlciovDQorCQlBYWNJbml0RGVmYXVsdENvbmZpZygmY29uZmlnKTsNCisJCWlmKHBEYXRhID09IE5VTEwpDQorCQkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisJCXBBQUNfcGFyYW0gPSAoQUFDRU5DX1BBUkFNKilwRGF0YTsNCisJCWNvbmZpZy5hZHRzVXNlZCA9IHBBQUNfcGFyYW0tPmFkdHNVc2VkOw0KKwkJY29uZmlnLmJpdFJhdGUgPSBwQUFDX3BhcmFtLT5iaXRSYXRlOw0KKwkJY29uZmlnLm5DaGFubmVsc0luID0gcEFBQ19wYXJhbS0+bkNoYW5uZWxzOw0KKwkJY29uZmlnLm5DaGFubmVsc091dCA9IHBBQUNfcGFyYW0tPm5DaGFubmVsczsNCisJCWNvbmZpZy5zYW1wbGVSYXRlID0gcEFBQ19wYXJhbS0+c2FtcGxlUmF0ZTsNCisNCisJCS8qIGNoZWNrIHRoZSBjaGFubmVsICovDQorCQlpZihjb25maWcubkNoYW5uZWxzSW48IDEgIHx8IGNvbmZpZy5uQ2hhbm5lbHNJbiA+IE1BWF9DSEFOTkVMUyAgfHwNCisgICAgICAgICAgICAgY29uZmlnLm5DaGFubmVsc091dCA8IDEgfHwgY29uZmlnLm5DaGFubmVsc091dCA+IE1BWF9DSEFOTkVMUyB8fCBjb25maWcubkNoYW5uZWxzSW4gPCBjb25maWcubkNoYW5uZWxzT3V0KQ0KKwkJCSByZXR1cm4gVk9fRVJSX0FVRElPX1VOU0NIQU5ORUw7DQorDQorCQkvKiBjaGVjayB0aGUgc2FtcGxlcmF0ZSAqLw0KKwkJcmV0ID0gLTE7DQorCQlmb3IoaSA9IDA7IGkgPCBOVU1fU0FNUExFX1JBVEVTOyBpKyspDQorCQl7DQorCQkJaWYoY29uZmlnLnNhbXBsZVJhdGUgPT0gc2FtcFJhdGVUYWJbaV0pDQorCQkJew0KKwkJCQlyZXQgPSAwOw0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorCQlpZihyZXQgPCAwKQ0KKwkJCXJldHVybiBWT19FUlJfQVVESU9fVU5TU0FNUExFUkFURTsNCisNCisJCVNhbXBsZVJhdGVJZHggPSBpOw0KKw0KKwkJdG1wID0gNDQxOw0KKwkJaWYoY29uZmlnLnNhbXBsZVJhdGUlODAwMCA9PSAwKSANCisJCQl0bXAgPTQ4MDsNCisJCS8qIGNoZWNrIHRoZSBiaXRyYXRlICovDQorCQlpZihjb25maWcuYml0UmF0ZSE9MCAmJiAoY29uZmlnLmJpdFJhdGUvY29uZmlnLm5DaGFubmVsc091dCA8IDQwMDApIHx8DQorICAgICAgICAgICAoY29uZmlnLmJpdFJhdGUvY29uZmlnLm5DaGFubmVsc091dCA+IDE2MDAwMCkgfHwgDQorCQkgICAoY29uZmlnLmJpdFJhdGUgPiBjb25maWcuc2FtcGxlUmF0ZSo2KmNvbmZpZy5uQ2hhbm5lbHNPdXQpKQ0KKwkJew0KKwkJCWNvbmZpZy5iaXRSYXRlID0gNjQwKmNvbmZpZy5zYW1wbGVSYXRlL3RtcCpjb25maWcubkNoYW5uZWxzT3V0Ow0KKw0KKwkJCWlmKGNvbmZpZy5iaXRSYXRlL2NvbmZpZy5uQ2hhbm5lbHNPdXQgPCA0MDAwKQ0KKwkJCQljb25maWcuYml0UmF0ZSA9IDQwMDAgKiBjb25maWcubkNoYW5uZWxzT3V0Ow0KKwkJCWVsc2UgaWYoY29uZmlnLmJpdFJhdGUgPiBjb25maWcuc2FtcGxlUmF0ZSo2KmNvbmZpZy5uQ2hhbm5lbHNPdXQpDQorCQkJCWNvbmZpZy5iaXRSYXRlID0gY29uZmlnLnNhbXBsZVJhdGUqNipjb25maWcubkNoYW5uZWxzT3V0Ow0KKwkJCWVsc2UgaWYoY29uZmlnLmJpdFJhdGUvY29uZmlnLm5DaGFubmVsc091dCA+IDE2MDAwMCkNCisJCQkJY29uZmlnLmJpdFJhdGUgPSBjb25maWcubkNoYW5uZWxzT3V0KjE2MDAwMDsNCisJCX0NCisNCisJCS8qIGNoZWNrIHRoZSBiYW5kd2lkdGggKi8NCisJCWJpdHJhdGUgPSBjb25maWcuYml0UmF0ZSAvIGNvbmZpZy5uQ2hhbm5lbHNPdXQ7DQorCQliaXRyYXRlID0gYml0cmF0ZSAqIHRtcCAvIGNvbmZpZy5zYW1wbGVSYXRlOw0KKw0KKwkJZm9yIChpID0gMDsgcmF0ZXNbaV07IGkrKykNCisJCXsNCisJCQlpZiAocmF0ZXNbaV0gPj0gYml0cmF0ZSkNCisJCQkJYnJlYWs7DQorCQl9DQorDQorCQljb25maWcuYmFuZFdpZHRoID0gQmFuZHdpdGhDb2VmVGFiW2ldW1NhbXBsZVJhdGVJZHhdOw0KKw0KKwkJLyogaW5pdCBhYWMgZW5jb2RlciBjb3JlICovDQorCQlyZXQgPSBBYWNFbmNPcGVuKGhBYWNFbmMsIGNvbmZpZyk7DQorCQlpZihyZXQpIA0KKwkJCXJldHVybiBWT19FUlJfQVVESU9fVU5TRkVBVFVSRTsNCisJCWJyZWFrOw0KKwljYXNlIFZPX1BJRF9BVURJT19GT1JNQVQ6CS8qIGluaXQgcGNtIGNoYW5uZWwgYW5kIHNhbXBsZXJhdGUqLw0KKwkJQWFjSW5pdERlZmF1bHRDb25maWcoJmNvbmZpZyk7DQorCQlpZihwRGF0YSA9PSBOVUxMKQ0KKwkJCXJldHVybiBWT19FUlJfSU5WQUxJRF9BUkc7DQorCQlwV0FWX0Zvcm1hdCA9IChWT19BVURJT19GT1JNQVQqKXBEYXRhOw0KKwkJY29uZmlnLmFkdHNVc2VkID0gMTsNCisJCWNvbmZpZy5uQ2hhbm5lbHNJbiA9IHBXQVZfRm9ybWF0LT5DaGFubmVsczsNCisJCWNvbmZpZy5uQ2hhbm5lbHNPdXQgPSBwV0FWX0Zvcm1hdC0+Q2hhbm5lbHM7DQorCQljb25maWcuc2FtcGxlUmF0ZSA9IHBXQVZfRm9ybWF0LT5TYW1wbGVSYXRlOw0KKw0KKwkJLyogY2hlY2sgdGhlIGNoYW5uZWwgKi8NCisJCWlmKGNvbmZpZy5uQ2hhbm5lbHNJbjwgMSAgfHwgY29uZmlnLm5DaGFubmVsc0luID4gTUFYX0NIQU5ORUxTICB8fA0KKyAgICAgICAgICAgICBjb25maWcubkNoYW5uZWxzT3V0IDwgMSB8fCBjb25maWcubkNoYW5uZWxzT3V0ID4gTUFYX0NIQU5ORUxTIHx8IGNvbmZpZy5uQ2hhbm5lbHNJbiA8IGNvbmZpZy5uQ2hhbm5lbHNPdXQpDQorCQkJIHJldHVybiBWT19FUlJfQVVESU9fVU5TQ0hBTk5FTDsNCisNCisJCS8qIGNoZWNrIHRoZSBzYW1wbGViaXRzICovDQorCQlpZihwV0FWX0Zvcm1hdC0+U2FtcGxlQml0cyAhPSAxNikNCisJCXsNCisJCQlyZXR1cm4gVk9fRVJSX0FVRElPX1VOU0ZFQVRVUkU7DQorCQl9DQorDQorCQkvKiBjaGVjayB0aGUgc2FtcGxlcmF0ZSAqLw0KKwkJcmV0ID0gLTE7DQorCQlmb3IoaSA9IDA7IGkgPCBOVU1fU0FNUExFX1JBVEVTOyBpKyspDQorCQl7DQorCQkJaWYoY29uZmlnLnNhbXBsZVJhdGUgPT0gc2FtcFJhdGVUYWJbaV0pDQorCQkJew0KKwkJCQlyZXQgPSAwOw0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorCQlpZihyZXQgPCAwKQ0KKwkJCXJldHVybiBWT19FUlJfQVVESU9fVU5TU0FNUExFUkFURTsNCisNCisJCVNhbXBsZVJhdGVJZHggPSBpOw0KKw0KKwkJLyogdXBkYXRlIHRoZSBiaXRyYXRlcyAqLw0KKwkJdG1wID0gNDQxOw0KKwkJaWYoY29uZmlnLnNhbXBsZVJhdGUlODAwMCA9PSAwKSANCisJCQl0bXAgPTQ4MDsNCisNCisJCWNvbmZpZy5iaXRSYXRlID0gNjQwKmNvbmZpZy5zYW1wbGVSYXRlL3RtcCpjb25maWcubkNoYW5uZWxzT3V0Ow0KKw0KKwkJaWYoY29uZmlnLmJpdFJhdGUvY29uZmlnLm5DaGFubmVsc091dCA8IDQwMDApDQorCQkJY29uZmlnLmJpdFJhdGUgPSA0MDAwICogY29uZmlnLm5DaGFubmVsc091dDsNCisJCWVsc2UgaWYoY29uZmlnLmJpdFJhdGUgPiBjb25maWcuc2FtcGxlUmF0ZSo2KmNvbmZpZy5uQ2hhbm5lbHNPdXQpDQorCQkJY29uZmlnLmJpdFJhdGUgPSBjb25maWcuc2FtcGxlUmF0ZSo2KmNvbmZpZy5uQ2hhbm5lbHNPdXQ7DQorCQllbHNlIGlmKGNvbmZpZy5iaXRSYXRlL2NvbmZpZy5uQ2hhbm5lbHNPdXQgPiAxNjAwMDApDQorCQkJY29uZmlnLmJpdFJhdGUgPSBjb25maWcubkNoYW5uZWxzT3V0KjE2MDAwMDsNCisNCisJCS8qIGNoZWNrIHRoZSBiYW5kd2lkdGggKi8NCisJCWJpdHJhdGUgPSBjb25maWcuYml0UmF0ZSAvIGNvbmZpZy5uQ2hhbm5lbHNPdXQ7DQorCQliaXRyYXRlID0gYml0cmF0ZSAqIHRtcCAvIGNvbmZpZy5zYW1wbGVSYXRlOw0KKw0KKwkJZm9yIChpID0gMDsgcmF0ZXNbaV07IGkrKykNCisJCXsNCisJCQlpZiAocmF0ZXNbaV0gPj0gYml0cmF0ZSkNCisJCQkJYnJlYWs7DQorCQl9DQorDQorCQljb25maWcuYmFuZFdpZHRoID0gQmFuZHdpdGhDb2VmVGFiW2ldW1NhbXBsZVJhdGVJZHhdOw0KKwkJDQorCQkvKiBpbml0IGFhYyBlbmNvZGVyIGNvcmUgKi8NCisJCXJldCA9IEFhY0VuY09wZW4oaEFhY0VuYywgY29uZmlnKTsNCisJCWlmKHJldCkgDQorCQkJcmV0dXJuIFZPX0VSUl9BVURJT19VTlNGRUFUVVJFOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlyZXR1cm4gVk9fRVJSX1dST05HX1BBUkFNX0lEOw0KKwl9DQorDQorCXJldHVybiBWT19FUlJfTk9ORTsNCit9DQorDQorLyoqDQorKiBHZXQgdGhlIHBhcmFtIGZvciBzcGVjaWFsIHRhcmdldC4NCisqIFxwYXJhbSBoQ29kZWMgW0lOXV0gVGhlIENvZGVjIEhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uLg0KKyogXHBhcmFtIHVQYXJhbUlEIFtJTl0gVGhlIHBhcmFtIElELg0KKyogXHBhcmFtIHBEYXRhIFtJTl0gVGhlIHBhcmFtIHZhbHVlIGRlcGVuZCBvbiB0aGUgSUQ+DQorKiBccmV0dmFsIFZPX0VSUl9OT05FIFN1Y2NlZWRlZC4NCisqLw0KK1ZPX1UzMiBWT19BUEkgdm9BQUNFbmNHZXRQYXJhbShWT19IQU5ETEUgaENvZGVjLCBWT19TMzIgdVBhcmFtSUQsIFZPX1BUUiBwRGF0YSkNCit7DQorCXJldHVybiBWT19FUlJfTk9ORTsNCit9DQorDQorLyoqDQorICogR2V0IGF1ZGlvIGNvZGVjIEFQSSBpbnRlcmZhY2UNCisgKiBccGFyYW0gcEVuY0hhbmRsZSBbb3V0XSBSZXR1cm4gdGhlIEFBQyBFbmNvZGVyIGhhbmRsZS4NCisgKiBccmV0dmFsIFZPX0VSUl9PSyBTdWNjZWVkZWQuDQorICovDQorVk9fUzMyIFZPX0FQSSB2b0dldEFBQ0VuY0FQSShWT19BVURJT19DT0RFQ0FQSSAqIHBEZWNIYW5kbGUpDQorew0KKwlpZihwRGVjSGFuZGxlID09IE5VTEwpDQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKwkJDQorCXBEZWNIYW5kbGUtPkluaXQgPSB2b0FBQ0VuY0luaXQ7DQorCXBEZWNIYW5kbGUtPlNldElucHV0RGF0YSA9IHZvQUFDRW5jU2V0SW5wdXREYXRhOw0KKwlwRGVjSGFuZGxlLT5HZXRPdXRwdXREYXRhID0gdm9BQUNFbmNHZXRPdXRwdXREYXRhOw0KKwlwRGVjSGFuZGxlLT5TZXRQYXJhbSA9IHZvQUFDRW5jU2V0UGFyYW07DQorCXBEZWNIYW5kbGUtPkdldFBhcmFtID0gdm9BQUNFbmNHZXRQYXJhbTsNCisJcERlY0hhbmRsZS0+VW5pbml0ID0gdm9BQUNFbmNVbmluaXQ7DQorDQorCXJldHVybiBWT19FUlJfTk9ORTsNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYWFjZW5jX2NvcmUuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FhY2VuY19jb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE2NDc1YwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FhY2VuY19jb3JlLmMKQEAgLTAsMCArMSwyMzkgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWFhY2VuY19jb3JlLmMNCisNCisJQ29udGVudDoJYWFjIGVuY29kZXIgY29yZSBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAidHlwZWRlZi5oIgorI2luY2x1ZGUgImFhY2VuY19jb3JlLmgiCisjaW5jbHVkZSAiYml0ZW5jLmgiCisKKyNpbmNsdWRlICJwc3lfY29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgInBzeV9tYWluLmgiCisjaW5jbHVkZSAicWNfbWFpbi5oIgorI2luY2x1ZGUgInBzeV9tYWluLmgiCisjaW5jbHVkZSAiY2hhbm5lbF9tYXAuaCIKKyNpbmNsdWRlICJhYWNfcm9tLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBBYWNJbml0RGVmYXVsdENvbmZpZworKiBkZXNjcmlwdGlvbjogIGdpdmVzIHJlYXNvbmFibGUgZGVmYXVsdCBjb25maWd1cmF0aW9uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBBYWNJbml0RGVmYXVsdENvbmZpZyhBQUNFTkNfQ09ORklHICpjb25maWcpCit7CisgIC8qIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgKi8KKyAgY29uZmlnLT5hZHRzVXNlZCAgICAgICAgPSAxOworICBjb25maWctPm5DaGFubmVsc0luICAgICA9IDI7CisgIGNvbmZpZy0+bkNoYW5uZWxzT3V0ICAgID0gMjsKKyAgY29uZmlnLT5iaXRSYXRlICAgICAgICAgPSAxMjgwMDA7ICAgICAgICAgICAgICAgICAgICAgIAorICBjb25maWctPmJhbmRXaWR0aCAgICAgICA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBBYWNFbmNPcGVuCisqIGRlc2NyaXB0aW9uOiAgYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgZW5jb2RlciBpbnN0YW5jZQorKiByZXR1cm5zOiAgICAgIDAgaWYgc3VjY2VzcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiAgQWFjRW5jT3BlbiggIEFBQ19FTkNPREVSKiAgICAgIGhBYWNFbmMsICAgICAgICAvKiBwb2ludGVyIHRvIGFuIGVuY29kZXIgaGFuZGxlLCBpbml0aWFsaXplZCBvbiByZXR1cm4gKi8KKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0ICBBQUNFTkNfQ09ORklHICAgICBjb25maWcgICAvKiBwcmUtaW5pdGlhbGl6ZWQgY29uZmlnIHN0cnVjdCAqLworICAgICAgICAgICAgICAgICAgICAgKQoreworICBXb3JkMzIgaTsNCisgIFdvcmQzMiBlcnJvciA9IDA7CisgIFdvcmQxNiBwcm9maWxlID0gMTsNCisKKyAgRUxFTUVOVF9JTkZPICplbEluZm8gPSBOVUxMOworICAgCisgIGlmIChoQWFjRW5jPT0wKSB7CisgICAgZXJyb3I9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKyAgIAorICBpZiAoIWVycm9yKSB7CisgICAgaEFhY0VuYy0+Y29uZmlnID0gY29uZmlnOworICB9CisKKyAgaWYgKCFlcnJvcikgeworICAgIGVycm9yID0gSW5pdEVsZW1lbnRJbmZvIChjb25maWcubkNoYW5uZWxzT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaEFhY0VuYy0+ZWxJbmZvKTsKKyAgfQorDQorICBpZiAoIWVycm9yKSB7CisgICAgZWxJbmZvID0gJmhBYWNFbmMtPmVsSW5mbzsKKyAgfQorCisgIGlmICghZXJyb3IpIHsKKyAgICAvKiB1c2Ugb3Igbm90IHRucyB0b29sIGZvciBsb25nIGFuZCBzaG9ydCBibG9jayAqLworCSBXb3JkMTYgdG5zTWFzaz0zOyAgICAgIAorCisJLyogaW5pdCBlbmNvZGVyIHBzeWNob2Fjb3VzdGljICovCisgICAgZXJyb3IgPSBwc3lNYWluSW5pdCgmaEFhY0VuYy0+cHN5S2VybmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuYml0UmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsSW5mby0+bkNoYW5uZWxzSW5FbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRuc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICBoQWFjRW5jLT5jb25maWcuYmFuZFdpZHRoKTsKKyAgfQorCisgLyogdXNlIG9yIG5vdCBhZHRzIGhlYWRlciAqLworICBpZighZXJyb3IpIHsNCisJICBoQWFjRW5jLT5xY091dC5xY0VsZW1lbnQuYWR0c1VzZWQgPSBjb25maWcuYWR0c1VzZWQ7DQorICB9CisKKyAgLyogaW5pdCBlbmNvZGVyIHF1YW50aXphdGlvbiAqLworICBpZiAoIWVycm9yKSB7CisgICAgc3RydWN0IFFDX0lOSVQgcWNJbml0OworCisgICAgLypxY0luaXQuY2hhbm5lbE1hcHBpbmcgPSAmaEFhY0VuYy0+Y2hhbm5lbE1hcHBpbmc7Ki8KKyAgICBxY0luaXQuZWxJbmZvID0gJmhBYWNFbmMtPmVsSW5mbzsKKworICAgIHFjSW5pdC5tYXhCaXRzID0gKFdvcmQxNikgKE1BWEJJVFNfQ09FRiplbEluZm8tPm5DaGFubmVsc0luRWwpOworICAgIHFjSW5pdC5iaXRSZXMgPSBxY0luaXQubWF4Qml0czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHFjSW5pdC5hdmVyYWdlQml0cyA9IChXb3JkMTYpICgoY29uZmlnLmJpdFJhdGUgKiBGUkFNRV9MRU5fTE9ORykgLyBjb25maWcuc2FtcGxlUmF0ZSk7CisKKyAgICBxY0luaXQucGFkZGluZy5wYWRkaW5nUmVzdCA9IGNvbmZpZy5zYW1wbGVSYXRlOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICBxY0luaXQubWVhblBlID0gKFdvcmQxNikgKCgxMCAqIEZSQU1FX0xFTl9MT05HICogaEFhY0VuYy0+Y29uZmlnLmJhbmRXaWR0aCkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25maWcuc2FtcGxlUmF0ZT4+MSkpOworCisgICAgcWNJbml0Lm1heEJpdEZhYyA9IChXb3JkMTYpICgoMTAwICogKE1BWEJJVFNfQ09FRi1NSU5CSVRTX0NPRUYpKiBlbEluZm8tPm5DaGFubmVsc0luRWwpLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChxY0luaXQuYXZlcmFnZUJpdHM/cWNJbml0LmF2ZXJhZ2VCaXRzOjEpKTsKKworICAgIHFjSW5pdC5iaXRyYXRlID0gY29uZmlnLmJpdFJhdGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgZXJyb3IgPSBRQ0luaXQoJmhBYWNFbmMtPnFjS2VybmVsLCAmcWNJbml0KTsKKyAgfQorCisgIC8qIGluaXQgYml0c3RyZWFtIGVuY29kZXIgKi8KKyAgaWYgKCFlcnJvcikgeworICAgIGhBYWNFbmMtPmJzZUluaXQubkNoYW5uZWxzICAgPSBlbEluZm8tPm5DaGFubmVsc0luRWw7ICAgICAgICAgICAgICAgIAorICAgIGhBYWNFbmMtPmJzZUluaXQuYml0cmF0ZSAgICAgPSBjb25maWcuYml0UmF0ZTsgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGhBYWNFbmMtPmJzZUluaXQuc2FtcGxlUmF0ZSAgPSBjb25maWcuc2FtcGxlUmF0ZTsgICAgICAgICAgICAgICAgICAgIAorICAgIGhBYWNFbmMtPmJzZUluaXQucHJvZmlsZSAgICAgPSBwcm9maWxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgcmV0dXJuIGVycm9yOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQWFjRW5jRW5jb2RlCisqIGRlc2NyaXB0aW9uOiAgZW5jb2RlIHBjbSB0byBhYWMgZGF0YSBjb3JlIGZ1bmN0aW9uCisqIHJldHVybnM6ICAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IEFhY0VuY0VuY29kZShBQUNfRU5DT0RFUiAqYWFjRW5jLAkJLyohPCBhbiBlbmNvZGVyIGhhbmRsZSAqLworICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnRpbWVTaWduYWwsICAgICAgICAgLyohPCBCTE9DS1NJWkUqbkNoYW5uZWxzIGF1ZGlvIHNhbXBsZXMsIGludGVybGVhdmVkICovCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVXb3JkOCAqYW5jQnl0ZXMsICAgICAvKiE8IHBvaW50ZXIgdG8gYW5jaWxsYXJ5IGRhdGEgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpudW1BbmNCeXRlcywJCS8qITwgbnVtYmVyIG9mIGFuY2lsbGFyeSBEYXRhIEJ5dGVzICovCisgICAgICAgICAgICAgICAgICAgIFVXb3JkOCAqb3V0Qnl0ZXMsICAgICAgICAgICAvKiE8IHBvaW50ZXIgdG8gb3V0cHV0IGJ1ZmZlciAobXVzdCBiZSBsYXJnZSBNSU5CSVRTX0NPRUYvOCpNQVhfQ0hBTk5FTFMgYnl0ZXMpICovCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqbnVtT3V0Qnl0ZXMgICAgICAgICAvKiE8IG51bWJlciBvZiBieXRlcyBpbiBvdXRwdXQgYnVmZmVyIGFmdGVyIHByb2Nlc3NpbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgKQoreworICBFTEVNRU5UX0lORk8gKmVsSW5mbyA9ICZhYWNFbmMtPmVsSW5mbzsKKyAgV29yZDE2IGdsb2JVc2VkQml0czsKKyAgV29yZDE2IGFuY0RhdGFCeXRlcywgYW5jRGF0YUJ5dGVzTGVmdDsKKyAgCisgIGFuY0RhdGFCeXRlcyA9IGFuY0RhdGFCeXRlc0xlZnQgPSAqbnVtQW5jQnl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAvKiBpbml0IG91dHB1dCBhYWMgZGF0YSBidWZmZXIgYW5kIGxlbmd0aCAqLworICBhYWNFbmMtPmhCaXRTdHJlYW0gPSBDcmVhdGVCaXRCdWZmZXIoJmFhY0VuYy0+Yml0U3RyZWFtLCBvdXRCeXRlcywgKm51bU91dEJ5dGVzKTsKKworICAvKiBwc3ljaG9hY291c3RpYyBwcm9jZXNzICovCisgIHBzeU1haW4oYWFjRW5jLT5jb25maWcubkNoYW5uZWxzT3V0LCAgICAKKyAgICAgICAgICBlbEluZm8sCisgICAgICAgICAgdGltZVNpZ25hbCwKKyAgICAgICAgICAmYWFjRW5jLT5wc3lLZXJuZWwucHN5RGF0YVtlbEluZm8tPkNoYW5uZWxJbmRleFswXV0sCisgICAgICAgICAgJmFhY0VuYy0+cHN5S2VybmVsLnRuc0RhdGFbZWxJbmZvLT5DaGFubmVsSW5kZXhbMF1dLAorICAgICAgICAgICZhYWNFbmMtPnBzeUtlcm5lbC5wc3lDb25mTG9uZywKKyAgICAgICAgICAmYWFjRW5jLT5wc3lLZXJuZWwucHN5Q29uZlNob3J0LAorICAgICAgICAgICZhYWNFbmMtPnBzeU91dC5wc3lPdXRDaGFubmVsW2VsSW5mby0+Q2hhbm5lbEluZGV4WzBdXSwKKyAgICAgICAgICAmYWFjRW5jLT5wc3lPdXQucHN5T3V0RWxlbWVudCwKKyAgICAgICAgICBhYWNFbmMtPnBzeUtlcm5lbC5wU2NyYXRjaFRucywKKwkJICBhYWNFbmMtPmNvbmZpZy5zYW1wbGVSYXRlKTsKKworICAvKiBhZGp1c3QgYml0cmF0ZSBhbmQgZnJhbWUgbGVuZ3RoICovCisgIEFkanVzdEJpdHJhdGUoJmFhY0VuYy0+cWNLZXJuZWwsCisgICAgICAgICAgICAgICAgYWFjRW5jLT5jb25maWcuYml0UmF0ZSwKKyAgICAgICAgICAgICAgICBhYWNFbmMtPmNvbmZpZy5zYW1wbGVSYXRlKTsKKyAgICAKKyAgLyogcXVhbnRpemF0aW9uIGFuZCBjb2RpbmcgcHJvY2VzcyAqLworICBRQ01haW4oJmFhY0VuYy0+cWNLZXJuZWwsICAgICAgICAgCisgICAgICAgICAmYWFjRW5jLT5xY0tlcm5lbC5lbGVtZW50Qml0cywKKyAgICAgICAgICZhYWNFbmMtPnFjS2VybmVsLmFkalRoci5hZGpUaHJTdGF0ZUVsZW0sCisgICAgICAgICAmYWFjRW5jLT5wc3lPdXQucHN5T3V0Q2hhbm5lbFtlbEluZm8tPkNoYW5uZWxJbmRleFswXV0sCisgICAgICAgICAmYWFjRW5jLT5wc3lPdXQucHN5T3V0RWxlbWVudCwKKyAgICAgICAgICZhYWNFbmMtPnFjT3V0LnFjQ2hhbm5lbFtlbEluZm8tPkNoYW5uZWxJbmRleFswXV0sCisgICAgICAgICAmYWFjRW5jLT5xY091dC5xY0VsZW1lbnQsCisgICAgICAgICBlbEluZm8tPm5DaGFubmVsc0luRWwsCisJCSBtaW4oYW5jRGF0YUJ5dGVzTGVmdCxhbmNEYXRhQnl0ZXMpKTsKKworICBhbmNEYXRhQnl0ZXNMZWZ0ID0gYW5jRGF0YUJ5dGVzTGVmdCAtIGFuY0RhdGFCeXRlczsKKworICBnbG9iVXNlZEJpdHMgPSBGaW5hbGl6ZUJpdENvbnN1bXB0aW9uKCZhYWNFbmMtPnFjS2VybmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICZhYWNFbmMtPnFjT3V0KTsKKworICAvKiB3cml0ZSBiaXRzdHJlYW0gcHJvY2VzcyAqLworICBXcml0ZUJpdHN0cmVhbShhYWNFbmMtPmhCaXRTdHJlYW0sCQkJCSAKKyAgICAgICAgICAgICAgICAgKmVsSW5mbywKKyAgICAgICAgICAgICAgICAgJmFhY0VuYy0+cWNPdXQsCisgICAgICAgICAgICAgICAgICZhYWNFbmMtPnBzeU91dCwKKyAgICAgICAgICAgICAgICAgJmdsb2JVc2VkQml0cywJCQkJIAorICAgICAgICAgICAgICAgICBhbmNCeXRlcywNCisJCQkJIGFhY0VuYy0+cHN5S2VybmVsLnNhbXBsZVJhdGVJZHgpOworCisgIHVwZGF0ZUJpdHJlcygmYWFjRW5jLT5xY0tlcm5lbCwKKyAgICAgICAgICAgICAgICZhYWNFbmMtPnFjT3V0KTsKKworICAvKiB3cml0ZSBvdXQgdGhlIGJpdHN0cmVhbSAqLworICAqbnVtT3V0Qnl0ZXMgPSBHZXRCaXRzQXZhaWwoYWFjRW5jLT5oQml0U3RyZWFtKSA+PiAzOw0KKworICByZXR1cm4gMDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpBYWNFbmNDbG9zZQorKiBkZXNjcmlwdGlvbjogZGVhbGxvY2F0ZSBhbiBlbmNvZGVyIGluc3RhbmNlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBBYWNFbmNDbG9zZSAoQUFDX0VOQ09ERVIqIGhBYWNFbmMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworICBpZiAoaEFhY0VuYykgeyAgCisgICAgUUNEZWxldGUoJmhBYWNFbmMtPnFjS2VybmVsLCBwTWVtT1ApOworCisgICAgUUNPdXREZWxldGUoJmhBYWNFbmMtPnFjT3V0LCBwTWVtT1ApOworCisgICAgUHN5RGVsZXRlKCZoQWFjRW5jLT5wc3lLZXJuZWwsIHBNZW1PUCk7CisKKyAgICBQc3lPdXREZWxldGUoJmhBYWNFbmMtPnBzeU91dCwgcE1lbU9QKTsKKworICAgIERlbGV0ZUJpdEJ1ZmZlcigmaEFhY0VuYy0+aEJpdFN0cmVhbSk7CisKKwlpZihoQWFjRW5jLT5pbnRidWYpCisJeworCQltZW1fZnJlZShwTWVtT1AsIGhBYWNFbmMtPmludGJ1ZiwgVk9fSU5ERVhfRU5DX0FBQyk7CisJCWhBYWNFbmMtPmludGJ1ZiA9IE5VTEw7CisJfQorICB9Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hZGpfdGhyLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hZGpfdGhyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRiZDIxNgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2Fkal90aHIuYwpAQCAtMCwwICsxLDEyMjMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWFkal90aHIuYw0KKw0KKwlDb250ZW50OglUaHJlc2hvbGQgY29tcGVuc2F0aW9uIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIgorI2luY2x1ZGUgImFkal90aHJfZGF0YS5oIgorI2luY2x1ZGUgImFkal90aHIuaCIKKyNpbmNsdWRlICJxY19kYXRhLmgiCisjaW5jbHVkZSAibGluZV9wZS5oIgorCisKKyNkZWZpbmUgIG1pblNuckxpbWl0ICAgIDB4NjY2NiAvKiAxIGRCICovCisjZGVmaW5lICBQRUJJVFNfQ09FRgkweDE3MGEgLyogMC4xOCooMSA8PCAxNSkqLw0KKw0KKyNkZWZpbmUgIEhPTEVfVEhSX0xPTkcJMHgyODczCS8qIDAuMzE2KigxIDw8IDE1KSAqLw0KKyNkZWZpbmUgIEhPTEVfVEhSX1NIT1JUIDB4NDAwMCAgLyogMC41ICAqKDEgPDwgMTUpICovDQorDQorI2RlZmluZSAgTVNfVEhSU1BSRUFEX0NPRUYgMHg3MzMzICAvKiAwLjkgKiAoMSA8PCAxNSkgKi8NCisNCisjZGVmaW5lCSBNSU5fU05SX0NPRUYJICAgMHg2NTFmICAvKiAzLjE2KiAoMSA8PCAoMTUgLSAyKSkgKi8NCisKKy8qIHZhbHVlcyBmb3IgYXZvaWQgaG9sZSBmbGFnICovCitlbnVtIF9hdm9pZF9ob2xlX3N0YXRlIHsKKyAgTk9fQUggICAgICAgICAgICAgID0wLAorICBBSF9JTkFDVElWRSAgICAgICAgPTEsCisgIEFIX0FDVElWRSAgICAgICAgICA9MgorfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6Yml0czJwZQorKiBkZXNjcmlwdGlvbjogY29udmVydCBmcm9tIGJpdHMgdG8gcGUKKyoJCQkgICBwZSA9IDEuMTgqZGVzaXJlZEJpdHMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgYml0czJwZShjb25zdCBXb3JkMTYgYml0cykgeworICByZXR1cm4gKGJpdHMgKyAoKFBFQklUU19DT0VGICogYml0cykgPj4gMTUpKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6Y2FsY1RocmVzaEV4cAorKiBkZXNjcmlwdGlvbjogbG91ZG5lc3MgY2FsY3VsYXRpb24gKHRocmVzaG9sZCB0byB0aGUgcG93ZXIgb2YgcmVkRXhwKQorKgkJCSAgIHRocihuKV4wLjI1CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgY2FsY1RocmVzaEV4cChXb3JkMzIgdGhyRXhwW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG5DaGFubmVscykKK3sKKyAgV29yZDE2IGNoLCBzZmIsIHNmYkdycDsNCisgIFdvcmQzMiAqcHRockV4cCwgKnBzZmJUaHJlOworICBmb3IgKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgIFBTWV9PVVRfQ0hBTk5FTCAqcHN5T3V0Q2hhbiA9ICZwc3lPdXRDaGFubmVsW2NoXTsNCisJIGZvcihzZmJHcnAgPSAwOyBzZmJHcnAgPCBwc3lPdXRDaGFuLT5zZmJDbnQ7IHNmYkdycCs9IHBzeU91dENoYW4tPnNmYlBlckdyb3VwKQkgDQorCSAgcHRockV4cCA9ICYodGhyRXhwW2NoXVtzZmJHcnBdKTsNCisJICBwc2ZiVGhyZSA9IHBzeU91dENoYW4tPnNmYlRocmVzaG9sZCArIHNmYkdycDsNCisJICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisJCSpwdGhyRXhwID0gcnNxcnQocnNxcnQoKnBzZmJUaHJlLElOVF9CSVRTKSxJTlRfQklUUyk7DQorCQlwdGhyRXhwKys7IHBzZmJUaHJlKys7CisgICAgICB9CisgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6YWRhcHRNaW5TbnIKKyogZGVzY3JpcHRpb246IHJlZHVjZSBtaW5TbnIgcmVxdWlyZW1lbnRzIGZvciBiYW5kcyB3aXRoIHJlbGF0aXZlIGxvdyBlbmVyZ2llcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGFkYXB0TWluU25yKFBTWV9PVVRfQ0hBTk5FTCAgICAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICAgICBsb2dTZmJFbmVyZ3lbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgICAgTUlOU05SX0FEQVBUX1BBUkFNICptc2FQYXJhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgbkNoYW5uZWxzKQoreworICBXb3JkMTYgY2gsIHNmYiwgc2ZiT2Zmcywgc2hpZnQ7CisgIFdvcmQzMiBuU2ZiLCBhdmdFbjsKKyAgV29yZDE2IGxvZ19hdmdFbiA9IDA7CisgIFdvcmQzMiBzdGFydFJhdGlvX3hfYXZnRW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yIChjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBQU1lfT1VUX0NIQU5ORUwqIHBzeU91dENoYW4gPSAmcHN5T3V0Q2hhbm5lbFtjaF07CisKKyAgICAvKiBjYWxjIGF2ZXJhZ2UgZW5lcmd5IHBlciBzY2FsZWZhY3RvciBiYW5kICovCisgICAgYXZnRW4gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgblNmYiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZm9yIChzZmJPZmZzPTA7IHNmYk9mZnM8cHN5T3V0Q2hhbi0+c2ZiQ250OyBzZmJPZmZzKz1wc3lPdXRDaGFuLT5zZmJQZXJHcm91cCkgeworICAgICAgZm9yIChzZmI9MDsgc2ZiPHBzeU91dENoYW4tPm1heFNmYlBlckdyb3VwOyBzZmIrKykgeworICAgICAgICBhdmdFbiA9IExfYWRkKGF2Z0VuLCBwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiT2ZmcytzZmJdKTsKKyAgICAgICAgblNmYiA9IG5TZmIgKyAxOworICAgICAgfQorICAgIH0KKyAgICAgCisgICAgaWYgKG5TZmIgPiAwKSB7CisJICBhdmdFbiA9IGF2Z0VuIC8gblNmYjsNCisKKyAgICAgIGxvZ19hdmdFbiA9IGlMb2c0KGF2Z0VuKTsKKyAgICAgIHN0YXJ0UmF0aW9feF9hdmdFbiA9IGZpeG11bChtc2FQYXJhbS0+c3RhcnRSYXRpbywgYXZnRW4pOworICAgIH0KKworICAgIAorICAgIC8qIHJlZHVjZSBtaW5TbnIgcmVxdWlyZW1lbnQgYnkgbWluU25yXm1pblNuclJlZCBkZXBlbmRlbnQgb24gYXZnRW4vc2ZiRW4gKi8KKyAgICBmb3IgKHNmYk9mZnM9MDsgc2ZiT2Zmczxwc3lPdXRDaGFuLT5zZmJDbnQ7IHNmYk9mZnMrPXBzeU91dENoYW4tPnNmYlBlckdyb3VwKSB7CisgICAgICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisgICAgICAgIGlmIChwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiT2ZmcytzZmJdIDwgc3RhcnRSYXRpb194X2F2Z0VuKSB7CisgICAgICAgICAgV29yZDE2IGRiUmF0aW8sIG1pblNuclJlZDsKKyAgICAgICAgICBXb3JkMzIgc25yUmVkOworICAgICAgICAgIFdvcmQxNiBuZXdNaW5TbnI7CisgICAgICAgICAgCisgICAgICAgICAgZGJSYXRpbyA9IGxvZ19hdmdFbiAtIGxvZ1NmYkVuZXJneVtjaF1bc2ZiT2ZmcytzZmJdOworICAgICAgICAgIGRiUmF0aW8gPSBkYlJhdGlvICsgKGRiUmF0aW8gPDwgMSk7CisKKyAgICAgICAgICBtaW5TbnJSZWQgPSAxMTAgLSAoKGRiUmF0aW8gKyAoZGJSYXRpbyA8PCAxKSkgPj4gMik7CisgICAgICAgICAgbWluU25yUmVkID0gbWF4KG1pblNuclJlZCwgMjApOyAvKiAxMTA6ICgwLjM3NShyZWRPZmZzKSsxKSo4MCwgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOiAwLjAwMzc1KHJlZFJhdGlvRmFjKSo4MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDogMC4yNShtYXhSZWQpICogODAgKi8KKworICAgICAgICAgIHNuclJlZCA9IG1pblNuclJlZCAqIGlMb2c0KChwc3lPdXRDaGFuLT5zZmJNaW5TbnJbc2ZiT2ZmcytzZmJdIDw8IDE2KSk7IAorICAgICAgICAgIC8qIAorICAgICAgICAgICAgIHNuclJlZEkgc2kgbm93IHNjYWxlZCBieSA4MCAobWluU25yUmVkKSBhbmQgNCAoZmZyX2lMb2c0KQorICAgICAgICAgICovCisgICAgICAgIAorICAgICAgICAgIG5ld01pblNuciA9IHJvdW5kMTYocG93Ml94eShzbnJSZWQsODAqNCkpOworICAgICAgICAgCisgICAgICAgICAgcHN5T3V0Q2hhbi0+c2ZiTWluU25yW3NmYk9mZnMrc2ZiXSA9IG1pbihuZXdNaW5TbnIsIG1pblNuckxpbWl0KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6aW5pdEF2b2lkSG9sZUZsYWcKKyogZGVzY3JpcHRpb246IGRldGVybWluZSBiYW5kcyB3aGVyZSBhdm9pZCBob2xlIGlzIG5vdCBuZWNlc3NhcnkgcmVzcC4gcG9zc2libGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBpbml0QXZvaWRIb2xlRmxhZyhXb3JkMTYgYWhGbGFnW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9FTEVNRU5UKiBwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFIX1BBUkFNICphaFBhcmFtKQoreworICBXb3JkMTYgY2gsIHNmYiwgc2ZiR3JwLCBzaGlmdDsKKyAgV29yZDMyIHRocmVzaG9sZDsKKyAgV29yZDMyKiBwc2ZiU3ByZWFkRW47CisKKyAgZm9yIChjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4gPSAmcHN5T3V0Q2hhbm5lbFtjaF07CisgICAgIAorICAgIGlmIChwc3lPdXRDaGFuLT53aW5kb3dTZXF1ZW5jZSAhPSBTSE9SVF9XSU5ET1cpIHsKKyAgICAgIGZvcihzZmJHcnAgPSAwO3NmYkdycCA8IHBzeU91dENoYW4tPnNmYkNudDtzZmJHcnArPSBwc3lPdXRDaGFuLT5zZmJQZXJHcm91cCl7CisgICAgICAgICBwc2ZiU3ByZWFkRW4gPSBwc3lPdXRDaGFuLT5zZmJTcHJlYWRlZEVuZXJneSArIHNmYkdycDsNCisJCSBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisJCQkqcHNmYlNwcmVhZEVuID0gKnBzZmJTcHJlYWRFbiA+PiAxOyAgLyogMC41ICovDQorCQkJKytwc2ZiU3ByZWFkRW47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBmb3Ioc2ZiR3JwID0gMDtzZmJHcnAgPCBwc3lPdXRDaGFuLT5zZmJDbnQ7c2ZiR3JwKz0gcHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApew0KKwkJcHNmYlNwcmVhZEVuID0gcHN5T3V0Q2hhbi0+c2ZiU3ByZWFkZWRFbmVyZ3kgKyBzZmJHcnA7CisgICAgICAgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgICAqcHNmYlNwcmVhZEVuID0gKCpwc2ZiU3ByZWFkRW4gPj4gMSkgKyAoKnBzZmJTcHJlYWRFbiA+PiAzKTsgIC8qIDAuNjMgKi8NCisJCSAgKytwc2ZiU3ByZWFkRW47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvKiBpbmNyZWFzZSBtaW5TbnIgZm9yIGxvY2FsIHBlYWtzLCBkZWNyZWFzZSBpdCBmb3IgdmFsbGV5cyAqLworICBpZiAoYWhQYXJhbS0+bW9kaWZ5TWluU25yKSB7CisgICAgZm9yKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgICAgICAgCisgICAgICBpZiAocHN5T3V0Q2hhbi0+d2luZG93U2VxdWVuY2UgIT0gU0hPUlRfV0lORE9XKQorICAgICAgICB0aHJlc2hvbGQgPSBIT0xFX1RIUl9MT05HOworICAgICAgZWxzZQorICAgICAgICB0aHJlc2hvbGQgPSBIT0xFX1RIUl9TSE9SVDsKKworICAgICAgZm9yKHNmYkdycCA9IDA7c2ZiR3JwIDwgcHN5T3V0Q2hhbi0+c2ZiQ250O3NmYkdycCs9IHBzeU91dENoYW4tPnNmYlBlckdyb3VwKXsKKyAgICAgICAgV29yZDE2ICpwc2ZiTWluU25yID0gcHN5T3V0Q2hhbi0+c2ZiTWluU25yICsgc2ZiR3JwOw0KKwkJZm9yIChzZmI9MDsgc2ZiPHBzeU91dENoYW4tPm1heFNmYlBlckdyb3VwOyBzZmIrKykgeworICAgICAgICAgIFdvcmQzMiBzZmJFbiwgc2ZiRW5tMSwgc2ZiRW5wMSwgYXZnRW47CisgICAgICAgICAgICAgCisgICAgICAgICAgaWYgKHNmYiA+IDApCisgICAgICAgICAgICBzZmJFbm0xID0gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYkdycCtzZmItMV07CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgc2ZiRW5tMSA9IHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJHcnBdOworICAgICAgICAgICAgIAorICAgICAgICAgIGlmIChzZmIgPCAocHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXAtMSkpCisgICAgICAgICAgICBzZmJFbnAxID0gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYkdycCtzZmIrMV07CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgc2ZiRW5wMSA9IHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJHcnArc2ZiXTsKKyAgICAgICAgICBhdmdFbiA9IChzZmJFbm0xICsgc2ZiRW5wMSkgPj4gMTsKKyAgICAgICAgICBzZmJFbiA9IHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJHcnArc2ZiXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgIAorICAgICAgICAgIGlmIChzZmJFbiA+IGF2Z0VuICYmIGF2Z0VuID4gMCkgeworICAgICAgICAgICAgV29yZDMyIHRtcE1pblNucjsKKyAgICAgICAgICAgIHNoaWZ0ID0gbm9ybV9sKHNmYkVuKTsNCisJCQl0bXBNaW5TbnIgPSBEaXZfMzIoTF9tcHlfbHMoYXZnRW4sIG1pblNuckxpbWl0KSA8PCBzaGlmdCwgc2ZiRW4gPDwgc2hpZnQgKTsKKyAgICAgICAgICAgIHRtcE1pblNuciA9IG1heCh0bXBNaW5TbnIsIEhPTEVfVEhSX0xPTkcpOyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdG1wTWluU25yID0gbWF4KHRtcE1pblNuciwgdGhyZXNob2xkKTsKKyAgICAgICAgICAgICpwc2ZiTWluU25yID0gbWluKCpwc2ZiTWluU25yLCB0bXBNaW5TbnIpOworICAgICAgICAgIH0KKyAgICAgICAgICAvKiB2YWxsZXkgPyAqLworICAgICAgICAgICAgIAorICAgICAgICAgIGlmICgoc2ZiRW4gPCAoYXZnRW4gPj4gMSkpICYmIChzZmJFbiA+IDApKSB7CisgICAgICAgICAgICBXb3JkMzIgdG1wTWluU25yOworICAgICAgICAgICAgV29yZDMyIG1pblNuckVuID0gTF9tcHlfd3goYXZnRW4sICpwc2ZiTWluU25yKTsgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYobWluU25yRW4gPCBzZmJFbikgew0KKwkJCSAgc2hpZnQgPSBub3JtX2woc2ZiRW4pOworICAgICAgICAgICAgICB0bXBNaW5TbnIgPSBEaXZfMzIoIG1pblNuckVuIDw8IHNoaWZ0LCBzZmJFbjw8c2hpZnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHRtcE1pblNuciA9IE1BWF8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRtcE1pblNuciA9IG1pbihtaW5TbnJMaW1pdCwgdG1wTWluU25yKTsKKworICAgICAgICAgICAgKnBzZmJNaW5TbnIgPQorICAgICAgICAgICAgICAobWluKCh0bXBNaW5TbnIgPj4gIDIpLCBtdWx0KCpwc2ZiTWluU25yLCBNSU5fU05SX0NPRUYpKSA8PCAyKTsKKyAgICAgICAgICB9DQorCQkgIHBzZmJNaW5TbnIrKzsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qIHN0ZXJlbzogYWRhcHQgdGhlIG1pbmltdW0gcmVxdWlyZW1lbnRzIHNmYk1pblNuciBvZiBtaWQgYW5kCisgICAgIHNpZGUgY2hhbm5lbHMgKi8KKyAgIAorICBpZiAobkNoYW5uZWxzID09IDIpIHsKKyAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW5NID0gJnBzeU91dENoYW5uZWxbMF07CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuUyA9ICZwc3lPdXRDaGFubmVsWzFdOworICAgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuTS0+c2ZiQ250OyBzZmIrKykgeworICAgICAgaWYgKHBzeU91dEVsZW1lbnQtPnRvb2xzSW5mby5tc01hc2tbc2ZiXSkgeworICAgICAgICBXb3JkMzIgc2ZiRW5NID0gcHN5T3V0Q2hhbk0tPnNmYkVuZXJneVtzZmJdOworICAgICAgICBXb3JkMzIgc2ZiRW5TID0gcHN5T3V0Q2hhblMtPnNmYkVuZXJneVtzZmJdOworICAgICAgICBXb3JkMzIgbWF4U2ZiRW4gPSBtYXgoc2ZiRW5NLCBzZmJFblMpOworICAgICAgICBXb3JkMzIgbWF4VGhyID0gTF9tcHlfd3gobWF4U2ZiRW4sIHBzeU91dENoYW5NLT5zZmJNaW5TbnJbc2ZiXSkgPj4gMTsgICAgICAgIAorICAgICAgICAgCisgICAgICAgIGlmKG1heFRociA+PSBzZmJFbk0pIHsKKyAgICAgICAgICBwc3lPdXRDaGFuTS0+c2ZiTWluU25yW3NmYl0gPSBNQVhfMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgc2hpZnQgPSBub3JtX2woc2ZiRW5NKTsgDQorCQkgIHBzeU91dENoYW5NLT5zZmJNaW5TbnJbc2ZiXSA9IG1pbihtYXgocHN5T3V0Q2hhbk0tPnNmYk1pblNucltzZmJdLCANCisJCQkgIHJvdW5kMTYoRGl2XzMyKG1heFRocjw8c2hpZnQsIHNmYkVuTSA8PCBzaGlmdCkpKSwgbWluU25yTGltaXQpOworICAgICAgICB9CisgICAgICAgICAKKyAgICAgICAgaWYobWF4VGhyID49IHNmYkVuUykgeworICAgICAgICAgIHBzeU91dENoYW5TLT5zZmJNaW5TbnJbc2ZiXSA9IE1BWF8xNjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsNCisJCSAgc2hpZnQgPSBub3JtX2woc2ZiRW5TKTsKKyAgICAgICAgICBwc3lPdXRDaGFuUy0+c2ZiTWluU25yW3NmYl0gPSBtaW4obWF4KHBzeU91dENoYW5TLT5zZmJNaW5TbnJbc2ZiXSwgDQorCQkJICByb3VuZDE2KERpdl8zMihtYXhUaHIgPDwgc2hpZnQsIHNmYkVuUyA8PCBzaGlmdCkpKSwgbWluU25yTGltaXQpOworICAgICAgICB9CisKKyAgICAgICAgIAorICAgICAgICBpZiAoc2ZiRW5NID4gcHN5T3V0Q2hhbk0tPnNmYlNwcmVhZGVkRW5lcmd5W3NmYl0pCisgICAgICAgICAgcHN5T3V0Q2hhblMtPnNmYlNwcmVhZGVkRW5lcmd5W3NmYl0gPSBMX21weV9scyhzZmJFblMsIE1TX1RIUlNQUkVBRF9DT0VGKTsKKyAgICAgICAgIAorICAgICAgICBpZiAoc2ZiRW5TID4gcHN5T3V0Q2hhblMtPnNmYlNwcmVhZGVkRW5lcmd5W3NmYl0pCisgICAgICAgICAgcHN5T3V0Q2hhbk0tPnNmYlNwcmVhZGVkRW5lcmd5W3NmYl0gPSBMX21weV9scyhzZmJFbk0sIE1TX1RIUlNQUkVBRF9DT0VGKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisgIC8qIGluaXQgYWhGbGFnICgwOiBubyBhaCBuZWNlc3NhcnksIDE6IGFoIHBvc3NpYmxlLCAyOiBhaCBhY3RpdmUgKi8KKyAgZm9yKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgIFBTWV9PVVRfQ0hBTk5FTCAqcHN5T3V0Q2hhbiA9ICZwc3lPdXRDaGFubmVsW2NoXTsKKyAgICBmb3Ioc2ZiR3JwID0gMDtzZmJHcnAgPCBwc3lPdXRDaGFuLT5zZmJDbnQ7c2ZiR3JwKz0gcHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApeworICAgICAgV29yZDE2ICpwYWhGbGFnID0gYWhGbGFnW2NoXSArIHNmYkdycDsNCisJICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKChwc3lPdXRDaGFuLT5zZmJTcHJlYWRlZEVuZXJneVtzZmJHcnArc2ZiXSA+IHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJHcnArc2ZiXSkgfHwKKyAgICAgICAgICAgIChwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiR3JwK3NmYl0gPD0gcHN5T3V0Q2hhbi0+c2ZiVGhyZXNob2xkW3NmYkdycCtzZmJdKSB8fAorICAgICAgICAgICAgKHBzeU91dENoYW4tPnNmYk1pblNucltzZmJHcnArc2ZiXSA9PSBNQVhfMTYpKSB7CisgICAgICAgICAgKnBhaEZsYWcrKyA9IE5PX0FIOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICpwYWhGbGFnKysgPSBBSF9JTkFDVElWRTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZm9yIChzZmI9cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYjxwc3lPdXRDaGFuLT5zZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgKnBhaEZsYWcrKyA9IE5PX0FIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6Y2FsY1BlTm9BSAorKiBkZXNjcmlwdGlvbjogc3VtIHRoZSBwZSBkYXRhIG9ubHkgZm9yIGJhbmRzIHdoZXJlIGF2b2lkIGhvbGUgaXMgaW5hY3RpdmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBjYWxjUGVOb0FIKFdvcmQxNiAgICAgICAgICAqcGUsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAqY29uc3RQYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgKm5BY3RpdmVMaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgUEVfREFUQSAgICAgICAgICpwZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgYWhGbGFnW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgbkNoYW5uZWxzKQoreworICBXb3JkMTYgY2gsIHNmYiwgc2ZiR3JwOw0KKyAgaW50IGlwZSwgaWNvbnN0UGFydCwgaW5BY3RpdmVMaW5lczsKKworICBpcGUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaWNvbnN0UGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGluQWN0aXZlTGluZXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgIFBFX0NIQU5ORUxfREFUQSAqcGVDaGFuRGF0YSA9ICZwZURhdGEtPnBlQ2hhbm5lbERhdGFbY2hdOworICAgIGZvcihzZmJHcnAgPSAwO3NmYkdycCA8IHBzeU91dENoYW4tPnNmYkNudDtzZmJHcnArPSBwc3lPdXRDaGFuLT5zZmJQZXJHcm91cCl7CisgICAgICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisgICAgICAgICAKKyAgICAgICAgaWYgKGFoRmxhZ1tjaF1bc2ZiR3JwK3NmYl0gPCBBSF9BQ1RJVkUpIHsKKyAgICAgICAgICBpcGUgPSBpcGUgKyBwZUNoYW5EYXRhLT5zZmJQZVtzZmJHcnArc2ZiXTsKKyAgICAgICAgICBpY29uc3RQYXJ0ID0gaWNvbnN0UGFydCArIHBlQ2hhbkRhdGEtPnNmYkNvbnN0UGFydFtzZmJHcnArc2ZiXTsKKyAgICAgICAgICBpbkFjdGl2ZUxpbmVzID0gaW5BY3RpdmVMaW5lcyArIHBlQ2hhbkRhdGEtPnNmYk5BY3RpdmVMaW5lc1tzZmJHcnArc2ZiXTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQ0KKworICAqcGUgPSBzYXR1cmF0ZShpcGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgKmNvbnN0UGFydCA9IHNhdHVyYXRlKGljb25zdFBhcnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAqbkFjdGl2ZUxpbmVzID0gc2F0dXJhdGUoaW5BY3RpdmVMaW5lcyk7ICAKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6cmVkdWNlVGhyZXNob2xkcworKiBkZXNjcmlwdGlvbjogYXBwbHkgcmVkdWN0aW9uIGZvcm11bGEKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCByZWR1Y2VUaHJlc2hvbGRzKFBTWV9PVVRfQ0hBTk5FTCAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgIGFoRmxhZ1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAgICAgdGhyRXhwW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAgICAgcmVkVmFsKQoreworICBXb3JkMzIgc2ZiVGhyUmVkdWNlZDsKKyAgV29yZDMyICpwc2ZiRW4sICpwc2ZiVGhyOyAgICAgDQorICBXb3JkMTYgY2gsIHNmYiwgc2ZiR3JwOw0KKworICBmb3IoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgIGZvcihzZmJHcnA9MDsgc2ZiR3JwPHBzeU91dENoYW4tPnNmYkNudDsgc2ZiR3JwKz1wc3lPdXRDaGFuLT5zZmJQZXJHcm91cCkgeworIAkgIHBzZmJFbiAgPSBwc3lPdXRDaGFuLT5zZmJFbmVyZ3kgKyBzZmJHcnA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICBwc2ZiVGhyID0gcHN5T3V0Q2hhbi0+c2ZiVGhyZXNob2xkICsgc2ZiR3JwOw0KKwkgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgIAorICAgICAgICBpZiAoKnBzZmJFbiA+ICpwc2ZiVGhyKSB7CisgICAgICAgICAgLyogdGhyZXNob2xkIHJlZHVjdGlvbiBmb3JtdWxhICovCisgICAgICAgICAgV29yZDMyIHRtcCA9IHRockV4cFtjaF1bc2ZiR3JwK3NmYl0gKyByZWRWYWw7CisgICAgICAgICAgdG1wID0gZml4bXVsKHRtcCwgdG1wKTsKKyAgICAgICAgICBzZmJUaHJSZWR1Y2VkID0gZml4bXVsKHRtcCwgdG1wKTsKKyAgICAgICAgICAvKiBhdm9pZCBob2xlcyAqLworICAgICAgICAgIHRtcCA9IExfbXB5X2xzKCpwc2ZiRW4sIHBzeU91dENoYW4tPnNmYk1pblNucltzZmJHcnArc2ZiXSk7CisgICAgICAgICAgICAgCisgICAgICAgICAgaWYgKChzZmJUaHJSZWR1Y2VkID4gdG1wKSAmJiAKKyAgICAgICAgICAgICAgKGFoRmxhZ1tjaF1bc2ZiR3JwK3NmYl0gIT0gTk9fQUgpKXsKKyAgICAgICAgICAgIHNmYlRoclJlZHVjZWQgPSBtYXgodG1wLCAqcHNmYlRocik7CisgICAgICAgICAgICBhaEZsYWdbY2hdW3NmYkdycCtzZmJdID0gQUhfQUNUSVZFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgIH0KKwkJICAqcHNmYlRociA9IHNmYlRoclJlZHVjZWQ7CisgICAgICAgIH0NCisNCisJCXBzZmJFbisrOyAgcHNmYlRocisrOworICAgICAgfQorICAgIH0KKyAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOmNvcnJlY3RUaHJlc2gKKyogZGVzY3JpcHRpb246IGlmIHBlIGRpZmZlcmVuY2UgZGVsdGFQZSBiZXR3ZWVuIGRlc2lyZWQgcGUgYW5kIHJlYWwgcGUgaXMgc21hbGwgZW5vdWdoLAorKiAgICAgICAgICAgICB0aGUgZGlmZmVyZW5jZSBjYW4gYmUgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIHNjYWxlIGZhY3RvciBiYW5kcy4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBjb3JyZWN0VGhyZXNoKFBTWV9PVVRfQ0hBTk5FTCAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgIGFoRmxhZ1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBFX0RBVEEgICAgICAgICAgKnBlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAgICB0aHJFeHBbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgICAgIHJlZFZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAgICAgZGVsdGFQZSkKK3sKKyAgV29yZDE2IGNoLCBzZmIsIHNmYkdycCxzaGlmdDsKKyAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuOworICBQRV9DSEFOTkVMX0RBVEEgKnBlQ2hhbkRhdGE7CisgIFdvcmQzMiBkZWx0YVNmYlBlOworICBXb3JkMzIgbm9ybUZhY3RvcjsNCisgIFdvcmQzMiAqcHNmYlBlRmFjdG9yczsNCisgIFdvcmQxNiAqcHNmYk5BY3RpdmVMaW5lcywgKnBhaEZsYWc7CisgIFdvcmQzMiBzZmJFbiwgc2ZiVGhyOworICBXb3JkMzIgc2ZiVGhyUmVkdWNlZDsKKworICAvKiBmb3IgZWFjaCBzZmIgY2FsYyByZWxhdGl2ZSBmYWN0b3JzIGZvciBwZSBjaGFuZ2VzICovCisgIG5vcm1GYWN0b3IgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgcHN5T3V0Q2hhbiA9ICZwc3lPdXRDaGFubmVsW2NoXTsKKyAgICBwZUNoYW5EYXRhID0gJnBlRGF0YS0+cGVDaGFubmVsRGF0YVtjaF07CisgICAgZm9yKHNmYkdycCA9IDA7c2ZiR3JwIDwgcHN5T3V0Q2hhbi0+c2ZiQ250O3NmYkdycCs9IHBzeU91dENoYW4tPnNmYlBlckdyb3VwKXsKKyAgICAgIHBzZmJQZUZhY3RvcnMgPSBwZURhdGEtPnNmYlBlRmFjdG9yc1tjaF0gKyBzZmJHcnA7DQorCSAgcHNmYk5BY3RpdmVMaW5lcyA9IHBlQ2hhbkRhdGEtPnNmYk5BY3RpdmVMaW5lcyArIHNmYkdycDsNCisJICBwYWhGbGFnID0gYWhGbGFnW2NoXSArIHNmYkdycDsNCisJICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisgICAgICAgIFdvcmQzMiByZWRUaHJFeHAgPSB0aHJFeHBbY2hdW3NmYkdycCtzZmJdICsgcmVkVmFsOworICAgICAgICAgICAgIAorICAgICAgICBpZiAoKCgqcGFoRmxhZyA8IEFIX0FDVElWRSkgfHwgKGRlbHRhUGUgPiAwKSkgJiYgKHJlZFRockV4cCA+IDApICkgeworICAgICAgICAgICAgCisgICAgICAgICAgKnBzZmJQZUZhY3RvcnMgPSAoKnBzZmJOQWN0aXZlTGluZXMpICogKDB4N2ZmZmZmZmYgLyByZWRUaHJFeHApOworICAgICAgICAgIG5vcm1GYWN0b3IgPSBMX2FkZChub3JtRmFjdG9yLCAqcHNmYlBlRmFjdG9ycyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgKnBzZmJQZUZhY3RvcnMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQ0KKwkJcHNmYlBlRmFjdG9ycysrOyANCisJCXBhaEZsYWcrKzsgcHNmYk5BY3RpdmVMaW5lcysrOworICAgICAgfQorICAgIH0KKyAgfQorCisgCisgIC8qIGNhbGN1bGF0ZSBuZXcgdGhyZXNob2xkcyAqLworICBmb3IoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgcHN5T3V0Q2hhbiA9ICZwc3lPdXRDaGFubmVsW2NoXTsKKyAgICBwZUNoYW5EYXRhID0gJnBlRGF0YS0+cGVDaGFubmVsRGF0YVtjaF07CisgICAgZm9yKHNmYkdycCA9IDA7c2ZiR3JwIDwgcHN5T3V0Q2hhbi0+c2ZiQ250O3NmYkdycCs9IHBzeU91dENoYW4tPnNmYlBlckdyb3VwKXsKKyAgICAgIHBzZmJQZUZhY3RvcnMgPSBwZURhdGEtPnNmYlBlRmFjdG9yc1tjaF0gKyBzZmJHcnA7DQorCSAgcHNmYk5BY3RpdmVMaW5lcyA9IHBlQ2hhbkRhdGEtPnNmYk5BY3RpdmVMaW5lcyArIHNmYkdycDsNCisJICBwYWhGbGFnID0gYWhGbGFnW2NoXSArIHNmYkdycDsNCisJICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisgICAgICAgIC8qIHBlIGRpZmZlcmVuY2UgZm9yIHRoaXMgc2ZiICovCisgICAgICAgIGRlbHRhU2ZiUGUgPSAqcHNmYlBlRmFjdG9ycyAqIGRlbHRhUGU7CisKKwkJLyogdGhyMyhuKSA9IHRocjIobikqMl5kZWx0YVNmYlBlL2IobikgKi8gICAgICAgICAKKyAgICAgICAgaWYgKCpwc2ZiTkFjdGl2ZUxpbmVzID4gMCkgeworICAgICAgICAgIC8qIG5ldyB0aHJlc2hvbGQgKi8KKyAgICAgICAgICBXb3JkMzIgdGhyRmFjdG9yOworICAgICAgICAgIHNmYkVuICA9IHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJHcnArc2ZiXTsKKyAgICAgICAgICBzZmJUaHIgPSBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGRbc2ZiR3JwK3NmYl07CisKKyAgICAgICAgICAgaWYoZGVsdGFTZmJQZSA+PSAwKXsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgIHJlZHVjZSB0aHJlc2hvbGQKKyAgICAgICAgICAgICovCisgICAgICAgICAgICB0aHJGYWN0b3IgPSBwb3cyX3h5KExfbmVnYXRlKGRlbHRhU2ZiUGUpLCAobm9ybUZhY3RvciogKCpwc2ZiTkFjdGl2ZUxpbmVzKSkpOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHNmYlRoclJlZHVjZWQgPSBMX21weV9scyhzZmJUaHIsIHJvdW5kMTYodGhyRmFjdG9yKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgaW5jcmVhc2UgdGhyZXNob2xkCisgICAgICAgICAgICAqLworICAgICAgICAgICAgdGhyRmFjdG9yID0gcG93Ml94eShkZWx0YVNmYlBlLCAobm9ybUZhY3RvciAqICgqcHNmYk5BY3RpdmVMaW5lcykpKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgCisgICAgICAgICAgICBpZih0aHJGYWN0b3IgPiBzZmJUaHIpIHsKKyAgICAgICAgICAgICAgc2hpZnQgPSBub3JtX2wodGhyRmFjdG9yKTsNCisJCQkgIHNmYlRoclJlZHVjZWQgPSBEaXZfMzIoIHNmYlRociA8PCBzaGlmdCwgdGhyRmFjdG9yPDxzaGlmdCApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHNmYlRoclJlZHVjZWQgPSBNQVhfMzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorCisgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgLyogYXZvaWQgaG9sZSAqLworICAgICAgICAgIHNmYkVuID0gTF9tcHlfbHMoc2ZiRW4sIHBzeU91dENoYW4tPnNmYk1pblNucltzZmJHcnArc2ZiXSk7CisgICAgICAgICAgICAgCisgICAgICAgICAgaWYgKChzZmJUaHJSZWR1Y2VkID4gc2ZiRW4pICYmCisgICAgICAgICAgICAgICgqcGFoRmxhZyA9PSBBSF9JTkFDVElWRSkpIHsKKyAgICAgICAgICAgIHNmYlRoclJlZHVjZWQgPSBtYXgoc2ZiRW4sIHNmYlRocik7CisgICAgICAgICAgICAqcGFoRmxhZyA9IEFIX0FDVElWRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICB9CisKKyAgICAgICAgICBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGRbc2ZiR3JwK3NmYl0gPSBzZmJUaHJSZWR1Y2VkOyAgCisgICAgICAgIH0NCisNCisJCXBhaEZsYWcrKzsgcHNmYk5BY3RpdmVMaW5lcysrOyBwc2ZiUGVGYWN0b3JzKys7CisgICAgICB9CisgICAgfQorICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6cmVkdWNlTWluU25yCisqIGRlc2NyaXB0aW9uOiBpZiB0aGUgZGVzaXJlZCBwZSBjYW4gbm90IGJlIHJlYWNoZWQsIHJlZHVjZSBwZSBieSByZWR1Y2luZyBtaW5TbnIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCByZWR1Y2VNaW5TbnIoUFNZX09VVF9DSEFOTkVMICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sIAorICAgICAgICAgICAgICAgICAgICAgICAgIFBFX0RBVEEgICAgICAgICAqcGVEYXRhLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgIGFoRmxhZ1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICBkZXNpcmVkUGUpCit7CisgIFdvcmQxNiBjaCwgc2ZiLCBzZmJTdWJXaW47CisgIFdvcmQxNiBkZWx0YVBlOworCisgIC8qIHN0YXJ0IGF0IGhpZ2hlc3QgZnJlcSBkb3duIHRvIDAgKi8KKyAgc2ZiU3ViV2luID0gcHN5T3V0Q2hhbm5lbFswXS5tYXhTZmJQZXJHcm91cDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHdoaWxlIChwZURhdGEtPnBlID4gZGVzaXJlZFBlICYmIHNmYlN1YldpbiA+IDApIHsKKyAgICAgICAKKyAgICBzZmJTdWJXaW4gPSBzZmJTdWJXaW4gLSAxOworICAgIC8qIGxvb3Agb3ZlciBhbGwgc3Vid2luZG93cyAqLworICAgIGZvciAoc2ZiPXNmYlN1Yldpbjsgc2ZiPHBzeU91dENoYW5uZWxbMF0uc2ZiQ250OworICAgICAgICBzZmIrPXBzeU91dENoYW5uZWxbMF0uc2ZiUGVyR3JvdXApIHsKKyAgICAgIC8qIGxvb3Agb3ZlciBhbGwgY2hhbm5lbHMgKi8KKwkJUEVfQ0hBTk5FTF9EQVRBKiBwZUNoYW4gPSBwZURhdGEtPnBlQ2hhbm5lbERhdGE7DQorCQlQU1lfT1VUX0NIQU5ORUwqIHBzeU91dENoID0gcHN5T3V0Q2hhbm5lbDsNCisJCWZvciAoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7ICAgICAgICAgICAKKyAgICAgICAgaWYgKGFoRmxhZ1tjaF1bc2ZiXSAhPSBOT19BSCAmJgorICAgICAgICAgICAgcHN5T3V0Q2gtPnNmYk1pblNucltzZmJdIDwgbWluU25yTGltaXQpIHsKKyAgICAgICAgICBwc3lPdXRDaC0+c2ZiTWluU25yW3NmYl0gPSBtaW5TbnJMaW1pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgIHBzeU91dENoLT5zZmJUaHJlc2hvbGRbc2ZiXSA9CisgICAgICAgICAgICBMX21weV9scyhwc3lPdXRDaC0+c2ZiRW5lcmd5W3NmYl0sIHBzeU91dENoLT5zZmJNaW5TbnJbc2ZiXSk7CisKKyAgICAgICAgICAvKiBjYWxjIG5ldyBwZSAqLworICAgICAgICAgIGRlbHRhUGUgPSAoKHBlQ2hhbi0+c2ZiTkxpbmVzNFtzZmJdICsgKHBlQ2hhbi0+c2ZiTkxpbmVzNFtzZmJdID4+IDEpKSA+PiAyKSAtCisgICAgICAgICAgICAgIHBlQ2hhbi0+c2ZiUGVbc2ZiXTsKKyAgICAgICAgICBwZURhdGEtPnBlID0gcGVEYXRhLT5wZSArIGRlbHRhUGU7CisgICAgICAgICAgcGVDaGFuLT5wZSA9IHBlQ2hhbi0+cGUgKyBkZWx0YVBlOwkJICAKKyAgICAgICAgfQ0KKwkJcGVDaGFuICs9IDE7IHBzeU91dENoICs9IDE7CisgICAgICB9CisgICAgICAvKiBzdG9wIGlmIGVub3VnaCBoYXMgYmVlbiBzYXZlZCAqLworICAgICAgIAorICAgICAgaWYgKHBlRGF0YS0+cGUgPD0gZGVzaXJlZFBlKQorICAgICAgICBicmVhazsKKyAgICB9CisgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6YWxsb3dNb3JlSG9sZXMKKyogZGVzY3JpcHRpb246IGlmIHRoZSBkZXNpcmVkIHBlIGNhbiBub3QgYmUgcmVhY2hlZCwgc29tZSBtb3JlIHNjYWxlZmFjdG9yIGJhbmRzICAKKyogICAgICAgICAgICAgIGhhdmUgdG8gYmUgcXVhbnRpemVkIHRvIHplcm8KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBhbGxvd01vcmVIb2xlcyhQU1lfT1VUX0NIQU5ORUwgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQgKnBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQRV9EQVRBICAgICAgICAgKnBlRGF0YSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgIGFoRmxhZ1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBSF9QQVJBTSAgKmFoUGFyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgIG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgZGVzaXJlZFBlKQoreworICBXb3JkMTYgY2gsIHNmYjsKKyAgV29yZDE2IGFjdFBlLCBzaGlmdDsKKworICBhY3RQZSA9IHBlRGF0YS0+cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAvKiBmb3IgTVMgYWxsb3cgaG9sZSBpbiB0aGUgY2hhbm5lbCB3aXRoIGxlc3MgZW5lcmd5ICovCisgICAgIAorICBpZiAobkNoYW5uZWxzPT0yICYmCisgICAgICBwc3lPdXRDaGFubmVsWzBdLndpbmRvd1NlcXVlbmNlPT1wc3lPdXRDaGFubmVsWzFdLndpbmRvd1NlcXVlbmNlKSB7CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuTCA9ICZwc3lPdXRDaGFubmVsWzBdOworICAgIFBTWV9PVVRfQ0hBTk5FTCAqcHN5T3V0Q2hhblIgPSAmcHN5T3V0Q2hhbm5lbFsxXTsKKyAgICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbkwtPnNmYkNudDsgc2ZiKyspIHsKKyAgICAgIFdvcmQzMiBtaW5FbjsKKyAgICAgICAKKyAgICAgIGlmIChwc3lPdXRFbGVtZW50LT50b29sc0luZm8ubXNNYXNrW3NmYl0pIHsKKyAgICAgICAgLyogYWxsb3cgaG9sZSBpbiBzaWRlIGNoYW5uZWwgPyAqLworICAgICAgICBtaW5FbiA9IExfbXB5X2xzKHBzeU91dENoYW5MLT5zZmJFbmVyZ3lbc2ZiXSwgKG1pblNuckxpbWl0ICogcHN5T3V0Q2hhbkwtPnNmYk1pblNucltzZmJdKSA+PiAxNik7CisgICAgICAgICAgIAorICAgICAgICBpZiAoYWhGbGFnWzFdW3NmYl0gIT0gTk9fQUggJiYKKyAgICAgICAgICAgIG1pbkVuID4gcHN5T3V0Q2hhblItPnNmYkVuZXJneVtzZmJdKSB7CisgICAgICAgICAgYWhGbGFnWzFdW3NmYl0gPSBOT19BSDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgcHN5T3V0Q2hhblItPnNmYlRocmVzaG9sZFtzZmJdID0gTF9hZGQocHN5T3V0Q2hhblItPnNmYkVuZXJneVtzZmJdLCBwc3lPdXRDaGFuUi0+c2ZiRW5lcmd5W3NmYl0pOworICAgICAgICAgIGFjdFBlID0gYWN0UGUgLSBwZURhdGEtPnBlQ2hhbm5lbERhdGFbMV0uc2ZiUGVbc2ZiXTsKKyAgICAgICAgfQorICAgICAgICAvKiBhbGxvdyBob2xlIGluIG1pZCBjaGFubmVsID8gKi8KKyAgICAgICAgZWxzZSB7CisgICAgICAgIG1pbkVuID0gTF9tcHlfbHMocHN5T3V0Q2hhblItPnNmYkVuZXJneVtzZmJdLCAobWluU25yTGltaXQgKiBwc3lPdXRDaGFuUi0+c2ZiTWluU25yW3NmYl0pID4+IDE2KTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICBpZiAoYWhGbGFnWzBdW3NmYl0hPSBOT19BSCAmJgorICAgICAgICAgICAgICBtaW5FbiA+IHBzeU91dENoYW5MLT5zZmJFbmVyZ3lbc2ZiXSkgeworICAgICAgICAgICAgYWhGbGFnWzBdW3NmYl0gPSBOT19BSDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcHN5T3V0Q2hhbkwtPnNmYlRocmVzaG9sZFtzZmJdID0gTF9hZGQocHN5T3V0Q2hhbkwtPnNmYkVuZXJneVtzZmJdLCBwc3lPdXRDaGFuTC0+c2ZiRW5lcmd5W3NmYl0pOworICAgICAgICAgICAgYWN0UGUgPSBhY3RQZSAtIHBlRGF0YS0+cGVDaGFubmVsRGF0YVswXS5zZmJQZVtzZmJdOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAgCisgICAgICAgIGlmIChhY3RQZSA8IGRlc2lyZWRQZSkKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvKiBzdWJzZXF1ZW50bHkgZXJhc2UgYmFuZHMgKi8gICAKKyAgaWYgKGFjdFBlID4gZGVzaXJlZFBlKSB7CisgICAgV29yZDE2IHN0YXJ0U2ZiWzJdOworICAgIFdvcmQzMiBhdmdFbiwgbWluRW47CisgICAgV29yZDE2IGFoQ250OworICAgIFdvcmQxNiBlbklkeDsKKyAgICBXb3JkMTYgZW5EaWZmOworICAgIFdvcmQzMiBlbls0XTsKKyAgICBXb3JkMTYgbWluU2ZiLCBtYXhTZmI7CisgICAgRmxhZyAgIGRvbmU7CisKKyAgICAvKiBkbyBub3QgZ28gYmVsb3cgc3RhcnRTZmIgKi8KKyAgICBmb3IgKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgICAgICAgCisgICAgICBpZiAocHN5T3V0Q2hhbm5lbFtjaF0ud2luZG93U2VxdWVuY2UgIT0gU0hPUlRfV0lORE9XKQorICAgICAgICBzdGFydFNmYltjaF0gPSBhaFBhcmFtLT5zdGFydFNmYkw7CisgICAgICBlbHNlCisgICAgICAgIHN0YXJ0U2ZiW2NoXSA9IGFoUGFyYW0tPnN0YXJ0U2ZiUzsKKyAgICB9CisKKyAgICBhdmdFbiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBtaW5FbiA9IE1BWF8zMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBhaENudCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmb3IgKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgICAgZm9yIChzZmI9c3RhcnRTZmJbY2hdOyBzZmI8cHN5T3V0Q2hhbi0+c2ZiQ250OyBzZmIrKykgeworICAgICAgICAgICAKKyAgICAgICAgaWYgKChhaEZsYWdbY2hdW3NmYl0gIT0gTk9fQUgpICYmCisgICAgICAgICAgICAocHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYl0gPiBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGRbc2ZiXSkpIHsKKyAgICAgICAgICBtaW5FbiA9IG1pbihtaW5FbiwgcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYl0pOworICAgICAgICAgIGF2Z0VuID0gTF9hZGQoYXZnRW4sIHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJdKTsKKyAgICAgICAgICBhaENudCsrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgICAKKyAgICBpZihhaENudCkgeworICAgICAgV29yZDMyIGlhaENudDsKKyAgICAgIHNoaWZ0ID0gbm9ybV9sKGFoQ250KTsNCisJICBpYWhDbnQgPSBEaXZfMzIoIDEgPDwgc2hpZnQsIGFoQ250IDw8IHNoaWZ0ICk7CisgICAgICBhdmdFbiA9IGZpeG11bChhdmdFbiwgaWFoQ250KTsKKyAgICB9CisKKyAgICBlbkRpZmYgPSBpTG9nNChhdmdFbikgLSBpTG9nNChtaW5Fbik7CisgICAgLyogY2FsYyBzb21lIGVuZXJneSBib3JkZXJzIGJldHdlZW4gbWluRW4gYW5kIGF2Z0VuICovCisgICAgZm9yIChlbklkeD0wOyBlbklkeDw0OyBlbklkeCsrKSB7CisgICAgICBXb3JkMzIgZW5GYWM7CisgICAgICBlbkZhYyA9ICgoNi0oZW5JZHggPDwgMSkpICogZW5EaWZmKTsKKyAgICAgIGVuW2VuSWR4XSA9IGZpeG11bChhdmdFbiwgcG93Ml94eShMX25lZ2F0ZShlbkZhYyksNyo0KSk7CisgICAgfQorCisgICAgLyogc3RhcnQgd2l0aCBsb3dlc3QgZW5lcmd5IGJvcmRlciBhdCBoaWdoZXN0IHNmYiAqLworICAgIG1heFNmYiA9IHBzeU91dENoYW5uZWxbMF0uc2ZiQ250IC0gMTsKKyAgICBtaW5TZmIgPSBzdGFydFNmYlswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgIAorICAgIGlmIChuQ2hhbm5lbHMgPT0gMikgeworICAgICAgbWF4U2ZiID0gbWF4KG1heFNmYiwgKHBzeU91dENoYW5uZWxbMV0uc2ZiQ250IC0gMSkpOworICAgICAgbWluU2ZiID0gbWluKG1pblNmYiwgc3RhcnRTZmJbMV0pOworICAgIH0KKworICAgIHNmYiA9IG1heFNmYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBlbklkeCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZG9uZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHdoaWxlICghZG9uZSkgeworICAgICAgIAorICAgICAgZm9yIChjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICAgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgICAgICAgICAKKyAgICAgICAgaWYgKHNmYj49c3RhcnRTZmJbY2hdICYmIHNmYjxwc3lPdXRDaGFuLT5zZmJDbnQpIHsKKyAgICAgICAgICAvKiBzZmIgZW5lcmd5IGJlbG93IGJvcmRlciA/ICovCisgICAgICAgICAgICAgCisgICAgICAgICAgaWYgKGFoRmxhZ1tjaF1bc2ZiXSAhPSBOT19BSCAmJiBwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiXSA8IGVuW2VuSWR4XSl7CisgICAgICAgICAgICAvKiBhbGxvdyBob2xlICovCisgICAgICAgICAgICBhaEZsYWdbY2hdW3NmYl0gPSBOT19BSDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcHN5T3V0Q2hhbi0+c2ZiVGhyZXNob2xkW3NmYl0gPSBMX2FkZChwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiXSwgcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYl0pOworICAgICAgICAgICAgYWN0UGUgPSBhY3RQZSAtIHBlRGF0YS0+cGVDaGFubmVsRGF0YVtjaF0uc2ZiUGVbc2ZiXTsKKyAgICAgICAgICB9CisgICAgICAgICAgIAorICAgICAgICAgIGlmIChhY3RQZSA8IGRlc2lyZWRQZSkgeworICAgICAgICAgICAgZG9uZSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgc2ZiID0gc2ZiIC0gMTsKKyAgICAgICAKKyAgICAgIGlmIChzZmIgPCBtaW5TZmIpIHsKKyAgICAgICAgLyogcmVzdGFydCB3aXRoIG5leHQgZW5lcmd5IGJvcmRlciAqLworICAgICAgICBzZmIgPSBtYXhTZmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZW5JZHggPSBlbklkeCArIDE7CisgICAgICAgICAKKyAgICAgICAgaWYgKGVuSWR4IC0gNCA+PSAwKQorICAgICAgICAgIGRvbmUgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6YWRhcHRUaHJlc2hvbGRzVG9QZQorKiBkZXNjcmlwdGlvbjogdHdvIGd1ZXNzZXMgZm9yIHRoZSByZWR1Y3Rpb24gdmFsdWUgYW5kIG9uZSBmaW5hbCBjb3JyZWN0aW9uIG9mIHRoZQorKiAgICAgICAgICAgICAgdGhyZXNob2xkcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGFkYXB0VGhyZXNob2xkc1RvUGUoUFNZX09VVF9DSEFOTkVMICAgICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfRUxFTUVOVCAgICAqcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICAgICBsb2dTZmJFbmVyZ3lbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRV9EQVRBICAgICAgICAgICAgKnBlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgZGVzaXJlZFBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBSF9QQVJBTSAgICAgICAgICAgKmFoUGFyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTlNOUl9BREFQVF9QQVJBTSAqbXNhUGFyYW0pCit7CisgIFdvcmQxNiBub1JlZFBlLCByZWRQZSwgcmVkUGVOb0FIOworICBXb3JkMTYgY29uc3RQYXJ0LCBjb25zdFBhcnROb0FIOworICBXb3JkMTYgbkFjdGl2ZUxpbmVzLCBuQWN0aXZlTGluZXNOb0FIOworICBXb3JkMTYgZGVzaXJlZFBlTm9BSDsKKyAgV29yZDMyIHJlZFZhbCwgYXZnVGhyRXhwOworICBXb3JkMzIgaXRlcjsKKworICBjYWxjVGhyZXNoRXhwKHBlRGF0YS0+dGhyRXhwLCBwc3lPdXRDaGFubmVsLCBuQ2hhbm5lbHMpOworCisgIGFkYXB0TWluU25yKHBzeU91dENoYW5uZWwsIGxvZ1NmYkVuZXJneSwgbXNhUGFyYW0sIG5DaGFubmVscyk7CisKKyAgaW5pdEF2b2lkSG9sZUZsYWcocGVEYXRhLT5haEZsYWcsIHBzeU91dENoYW5uZWwsIHBzeU91dEVsZW1lbnQsIG5DaGFubmVscywgYWhQYXJhbSk7CisKKyAgbm9SZWRQZSA9IHBlRGF0YS0+cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBjb25zdFBhcnQgPSBwZURhdGEtPmNvbnN0UGFydDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIG5BY3RpdmVMaW5lcyA9IHBlRGF0YS0+bkFjdGl2ZUxpbmVzOyAgICAgICAKKworICAvKiBmaXJzdCBndWVzcyBvZiByZWR1Y3Rpb24gdmFsdWUgdF4wLjI1ID0gMl4oKGEtcGVuKS80KmIpICovCisgIGF2Z1RockV4cCA9IHBvdzJfeHkoKGNvbnN0UGFydCAtIG5vUmVkUGUpLCAobkFjdGl2ZUxpbmVzIDw8IDIpKTsKKyAgCisgIC8qIHIxID0gMl4oKGEtcGVyKS80KmIpIC0gdF4wLjI1ICovCisgIHJlZFZhbCA9IHBvdzJfeHkoKGNvbnN0UGFydCAtIGRlc2lyZWRQZSksIChuQWN0aXZlTGluZXMgPDwgMikpIC0gYXZnVGhyRXhwOworCisgIC8qIHJlZHVjZSB0aHJlc2hvbGRzICovCisgIHJlZHVjZVRocmVzaG9sZHMocHN5T3V0Q2hhbm5lbCwgcGVEYXRhLT5haEZsYWcsIHBlRGF0YS0+dGhyRXhwLCBuQ2hhbm5lbHMsIHJlZFZhbCk7CisKKyAgLyogcGUgYWZ0ZXIgZmlyc3QgZ3Vlc3MgKi8KKyAgY2FsY1NmYlBlKHBlRGF0YSwgcHN5T3V0Q2hhbm5lbCwgbkNoYW5uZWxzKTsKKyAgcmVkUGUgPSBwZURhdGEtPnBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGl0ZXIgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZG8geworICAgIC8qIHBlIGZvciBiYW5kcyB3aGVyZSBhdm9pZCBob2xlIGlzIGluYWN0aXZlICovCisgICAgY2FsY1BlTm9BSCgmcmVkUGVOb0FILCAmY29uc3RQYXJ0Tm9BSCwgJm5BY3RpdmVMaW5lc05vQUgsCisgICAgICAgICAgICAgICBwZURhdGEsIHBlRGF0YS0+YWhGbGFnLCBwc3lPdXRDaGFubmVsLCBuQ2hhbm5lbHMpOworCisgICAgZGVzaXJlZFBlTm9BSCA9IGRlc2lyZWRQZSAtKHJlZFBlIC0gcmVkUGVOb0FIKTsKKyAgICAgCisgICAgaWYgKGRlc2lyZWRQZU5vQUggPCAwKSB7CisgICAgICBkZXNpcmVkUGVOb0FIID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisKKyAgICAvKiBzZWNvbmQgZ3Vlc3MgKi8KKyAgICAgCisgICAgaWYgKG5BY3RpdmVMaW5lc05vQUggPiAwKSB7CisJCQorCQlhdmdUaHJFeHAgPSBwb3cyX3h5KChjb25zdFBhcnROb0FIIC0gcmVkUGVOb0FIKSwgKG5BY3RpdmVMaW5lc05vQUggPDwgMikpOworCQkKKwkJcmVkVmFsID0gKHJlZFZhbCArIHBvdzJfeHkoKGNvbnN0UGFydE5vQUggLSBkZXNpcmVkUGVOb0FIKSwgKG5BY3RpdmVMaW5lc05vQUggPDwgMikpKSAtIGF2Z1RockV4cDsKKwkJCisJCS8qIHJlZHVjZSB0aHJlc2hvbGRzICovCisJCXJlZHVjZVRocmVzaG9sZHMocHN5T3V0Q2hhbm5lbCwgcGVEYXRhLT5haEZsYWcsIHBlRGF0YS0+dGhyRXhwLCBuQ2hhbm5lbHMsIHJlZFZhbCk7CisgICAgfQorCisgICAgY2FsY1NmYlBlKHBlRGF0YSwgcHN5T3V0Q2hhbm5lbCwgbkNoYW5uZWxzKTsKKyAgICByZWRQZSA9IHBlRGF0YS0+cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgaXRlciA9IGl0ZXIrMTsKKyAgICAgICAKKyAgfSB3aGlsZSAoKDIwICogYWJzX3MocmVkUGUgLSBkZXNpcmVkUGUpID4gZGVzaXJlZFBlKSAmJiAoaXRlciA8IDIpKTsKKworICAgCisgIGlmICgoMTAwICogcmVkUGUgPCAxMTUgKiBkZXNpcmVkUGUpKSB7CisgICAgY29ycmVjdFRocmVzaChwc3lPdXRDaGFubmVsLCBwZURhdGEtPmFoRmxhZywgcGVEYXRhLCBwZURhdGEtPnRockV4cCwgcmVkVmFsLAorICAgICAgICAgICAgICAgICAgbkNoYW5uZWxzLCBkZXNpcmVkUGUgLSByZWRQZSk7CisgIH0KKyAgZWxzZSB7CisgICAgV29yZDE2IGRlc2lyZWRQZTEwNSA9ICgxMDUgKiBkZXNpcmVkUGUpIC8gMTAwOworICAgIHJlZHVjZU1pblNucihwc3lPdXRDaGFubmVsLCBwZURhdGEsIHBlRGF0YS0+YWhGbGFnLAorICAgICAgICAgICAgICAgICBuQ2hhbm5lbHMsIGRlc2lyZWRQZTEwNSk7CisgICAgYWxsb3dNb3JlSG9sZXMocHN5T3V0Q2hhbm5lbCwgcHN5T3V0RWxlbWVudCwgcGVEYXRhLCBwZURhdGEtPmFoRmxhZywKKyAgICAgICAgICAgICAgICAgICBhaFBhcmFtLCBuQ2hhbm5lbHMsIGRlc2lyZWRQZTEwNSk7CisgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY2FsY0JpdFNhdmUKKyogZGVzY3JpcHRpb246ICBDYWxjdWxhdGVzIHBlcmNlbnRhZ2Ugb2YgYml0IHNhdmUsIHNlZSBmaWd1cmUgYmVsb3cKKyogcmV0dXJuczoKKyogaW5wdXQ6ICAgICAgICBwYXJhbWV0ZXJzIGFuZCBiaXRyZXMtZnVsbG5lc3MKKyogb3V0cHV0OiAgICAgICBwZXJjZW50YWdlIG9mIGJpdCBzYXZlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgY2FsY0JpdFNhdmUoV29yZDE2IGZpbGxMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IGNsaXBMb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBjbGlwSGlnaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG1pbkJpdFNhdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBtYXhCaXRTYXZlKQoreworICBXb3JkMTYgYml0c2F2ZSA9IDA7CisKKyAgZmlsbExldmVsID0gbWF4KGZpbGxMZXZlbCwgY2xpcExvdyk7CisgIGZpbGxMZXZlbCA9IG1pbihmaWxsTGV2ZWwsIGNsaXBIaWdoKTsKKworICBpZihjbGlwSGlnaC1jbGlwTG93KQ0KKyAgYml0c2F2ZSA9IChtYXhCaXRTYXZlIC0gKCgobWF4Qml0U2F2ZS1taW5CaXRTYXZlKSooZmlsbExldmVsLWNsaXBMb3cpKS8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlwSGlnaC1jbGlwTG93KSkpOworCisgIHJldHVybiAoYml0c2F2ZSk7Cit9CisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY2FsY0JpdFNwZW5kCisqIGRlc2NyaXB0aW9uOiAgQ2FsY3VsYXRlcyBwZXJjZW50YWdlIG9mIGJpdCBzcGVuZCwgc2VlIGZpZ3VyZSBiZWxvdworKiByZXR1cm5zOgorKiBpbnB1dDogICAgICAgIHBhcmFtZXRlcnMgYW5kIGJpdHJlcy1mdWxsbmVzcworKiBvdXRwdXQ6ICAgICAgIHBlcmNlbnRhZ2Ugb2YgYml0IHNwZW5kCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgY2FsY0JpdFNwZW5kKFdvcmQxNiBmaWxsTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgY2xpcExvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBjbGlwSGlnaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBtaW5CaXRTcGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBtYXhCaXRTcGVuZCkKK3sKKyAgV29yZDE2IGJpdHNwZW5kID0gMTsKKworICBmaWxsTGV2ZWwgPSBtYXgoZmlsbExldmVsLCBjbGlwTG93KTsKKyAgZmlsbExldmVsID0gbWluKGZpbGxMZXZlbCwgY2xpcEhpZ2gpOworCisgIGlmKGNsaXBIaWdoLWNsaXBMb3cpDQorICBiaXRzcGVuZCA9IChtaW5CaXRTcGVuZCArICgobWF4Qml0U3BlbmQgLSBtaW5CaXRTcGVuZCkqKGZpbGxMZXZlbCAtIGNsaXBMb3cpIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaXBIaWdoLWNsaXBMb3cpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHJldHVybiAoYml0c3BlbmQpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBhZGp1c3RQZU1pbk1heCgpCisqIGRlc2NyaXB0aW9uOiAgYWRqdXN0cyBwZU1pbiBhbmQgcGVNYXggcGFyYW1ldGVycyBvdmVyIHRpbWUKKyogcmV0dXJuczoKKyogaW5wdXQ6ICAgICAgICBjdXJyZW50IHBlLCBwZU1pbiwgcGVNYXgKKyogb3V0cHV0OiAgICAgICBhZGp1c3RlZCBwZU1pbi9wZU1heAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBhZGp1c3RQZU1pbk1heChjb25zdCBXb3JkMTYgY3VyclBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgKnBlTWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgKnBlTWF4KQoreworICBXb3JkMTYgbWluRmFjSGksIG1heEZhY0hpLCBtaW5GYWNMbywgbWF4RmFjTG87CisgIFdvcmQxNiBkaWZmOworICBXb3JkMTYgbWluRGlmZiA9IGV4dHJhY3RfbChjdXJyUGUgLyA2KTsKKyAgbWluRmFjSGkgPSAzMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgbWF4RmFjSGkgPSAxMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgbWluRmFjTG8gPSAxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgbWF4RmFjTG8gPSA3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBkaWZmID0gY3VyclBlIC0gKnBlTWF4IDsKKyAgIAorICBpZiAoZGlmZiA+IDApIHsKKyAgICAqcGVNaW4gPSAqcGVNaW4gKyAoKGRpZmYgKiBtaW5GYWNIaSkgLyAxMDApOworICAgICpwZU1heCA9ICpwZU1heCArICgoZGlmZiAqIG1heEZhY0hpKSAvIDEwMCk7CisgIH0gZWxzZSB7CisgICAgZGlmZiA9ICpwZU1pbiAtIGN1cnJQZTsKKyAgICAgCisgICAgaWYgKGRpZmYgPiAwKSB7CisgICAgICAqcGVNaW4gPSAqcGVNaW4gLSAoKGRpZmYgKiBtaW5GYWNMbykgLyAxMDApOworICAgICAgKnBlTWF4ID0gKnBlTWF4IC0gKChkaWZmICogbWF4RmFjTG8pIC8gMTAwKTsKKyAgICB9IGVsc2UgeworICAgICAgKnBlTWluID0gKnBlTWluICsgKChjdXJyUGUgLSAqcGVNaW4pICogbWluRmFjSGkgLyAxMDApOworICAgICAgKnBlTWF4ID0gKnBlTWF4IC0gKCgqcGVNYXggLSBjdXJyUGUpICogbWF4RmFjTG8gLyAxMDApOworICAgIH0KKyAgfQorCisgICAKKyAgaWYgKCgqcGVNYXggLSAqcGVNaW4pIDwgbWluRGlmZikgeworICAgIFdvcmQxNiBwYXJ0TG8sIHBhcnRIaTsKKworICAgIHBhcnRMbyA9IG1heCgwLCAoY3VyclBlIC0gKnBlTWluKSk7CisgICAgcGFydEhpID0gbWF4KDAsICgqcGVNYXggLSBjdXJyUGUpKTsKKworICAgICpwZU1heCA9IGN1cnJQZSArICgocGFydEhpICogbWluRGlmZikgLyAocGFydExvICsgcGFydEhpKSk7CisgICAgKnBlTWluID0gY3VyclBlIC0gKChwYXJ0TG8gKiBtaW5EaWZmKSAvIChwYXJ0TG8gKyBwYXJ0SGkpKTsKKyAgICAqcGVNaW4gPSBtYXgoMCwgKnBlTWluKTsKKyAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBCaXRyZXNDYWxjQml0RmFjCisqIGRlc2NyaXB0aW9uOiAgY2FsY3VsYXRlcyBmYWN0b3Igb2Ygc3BlbmRpbmcgYml0cyBmb3Igb25lIGZyYW1lCisqICAgICAgICAgICAgICAgIDEuMCA6IHRha2UgYWxsIGZyYW1lIGR5bnBhcnQgYml0cworKiAgICAgICAgICAgICAgICA+MS4wIDogdGFrZSBhbGwgZnJhbWUgZHlucGFydCBiaXRzICsgYml0cmVzCisqICAgICAgICAgICAgICAgIDwxLjAgOiBwdXQgYml0cyBpbiBiaXRyZXNlcnZvaXIKKyogIHJldHVybnM6ICAgICAgQml0RmFjKjEwMAorKiAgaW5wdXQ6ICAgICAgICBiaXRyZXMtZnVsbG5lc3MsIHBlLCBibG9ja1R5cGUsIHBhcmFtZXRlci1zZXR0aW5ncworKiAgb3V0cHV0OgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGJpdHJlc0NhbGNCaXRGYWMoIGNvbnN0IFdvcmQxNiAgIGJpdHJlc0JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIG1heEJpdHJlc0JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIHBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICB3aW5kb3dTZXF1ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgYXZnQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgbWF4Qml0RmFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpfVEhSX1NUQVRFICpBZGpUaHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUU19FTEVNRU5UICAgKmFkalRockNoYW4pCit7CisgIEJSRVNfUEFSQU0gKmJyZXNQYXJhbTsKKyAgV29yZDE2IHBleDsKKyAgV29yZDE2IGZpbGxMZXZlbDsKKyAgV29yZDE2IGJpdFNhdmUsIGJpdFNwZW5kLCBiaXRyZXNGYWM7CisKKyAgZmlsbExldmVsID0gZXh0cmFjdF9sKCgxMDAqIGJpdHJlc0JpdHMpIC8gbWF4Qml0cmVzQml0cyk7CisKKyAgaWYgKHdpbmRvd1NlcXVlbmNlICE9IFNIT1JUX1dJTkRPVykKKyAgICBicmVzUGFyYW0gPSAmKEFkalRoci0+YnJlc1BhcmFtTG9uZyk7CisgIGVsc2UKKyAgICBicmVzUGFyYW0gPSAmKEFkalRoci0+YnJlc1BhcmFtU2hvcnQpOworCisgIHBleCA9IG1heChwZSwgYWRqVGhyQ2hhbi0+cGVNaW4pOworICBwZXggPSBtaW4ocGV4LGFkalRockNoYW4tPnBlTWF4KTsKKworICBiaXRTYXZlID0gY2FsY0JpdFNhdmUoZmlsbExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgYnJlc1BhcmFtLT5jbGlwU2F2ZUxvdywgYnJlc1BhcmFtLT5jbGlwU2F2ZUhpZ2gsCisgICAgICAgICAgICAgICAgICAgICAgICBicmVzUGFyYW0tPm1pbkJpdFNhdmUsIGJyZXNQYXJhbS0+bWF4Qml0U2F2ZSk7CisKKyAgYml0U3BlbmQgPSBjYWxjQml0U3BlbmQoZmlsbExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBicmVzUGFyYW0tPmNsaXBTcGVuZExvdywgYnJlc1BhcmFtLT5jbGlwU3BlbmRIaWdoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBicmVzUGFyYW0tPm1pbkJpdFNwZW5kLCBicmVzUGFyYW0tPm1heEJpdFNwZW5kKTsKKworICBpZihhZGpUaHJDaGFuLT5wZU1heCAhPSBhZGpUaHJDaGFuLT5wZU1pbikNCisJYml0cmVzRmFjID0gKDEwMCAtIGJpdFNhdmUpICsgZXh0cmFjdF9sKCgoYml0U3BlbmQgKyBiaXRTYXZlKSAqIChwZXggLSBhZGpUaHJDaGFuLT5wZU1pbikpIC8KKyAgICAgICAgICAgICAgICAgICAgKGFkalRockNoYW4tPnBlTWF4IC0gYWRqVGhyQ2hhbi0+cGVNaW4pKTsKKyAgZWxzZQorCWJpdHJlc0ZhYyA9IDB4N2ZmZjsKKyAgICAgICAgICAgICAgIAorICBiaXRyZXNGYWMgPSBtaW4oYml0cmVzRmFjLAorICAgICAgICAgICAgICAgICAgICAoMTAwLTMwICsgZXh0cmFjdF9sKCgxMDAgKiBiaXRyZXNCaXRzKSAvIGF2Z0JpdHMpKSk7CisKKyAgYml0cmVzRmFjID0gbWluKGJpdHJlc0ZhYywgbWF4Qml0RmFjKTsKKworICBhZGp1c3RQZU1pbk1heChwZSwgJmFkalRockNoYW4tPnBlTWluLCAmYWRqVGhyQ2hhbi0+cGVNYXgpOworCisgIHJldHVybiBiaXRyZXNGYWM7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBBZGpUaHJJbml0CisqIGRlc2NyaXB0aW9uOiAgaW5pdCB0aHJlc2hvbGRzIHBhcmFtZXRlcgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIEFkalRockluaXQoQURKX1RIUl9TVEFURSAqaEFkalRociwKKyAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgICBtZWFuUGUsCisgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAgY2hCaXRyYXRlKQoreworICBBVFNfRUxFTUVOVCogYXRzRWxlbSA9ICZoQWRqVGhyLT5hZGpUaHJTdGF0ZUVsZW07CisgIE1JTlNOUl9BREFQVF9QQVJBTSAqbXNhUGFyYW0gPSAmYXRzRWxlbS0+bWluU25yQWRhcHRQYXJhbTsKKworICAvKiBjb21tb24gZm9yIGFsbCBlbGVtZW50czogKi8KKyAgLyogcGFyYW1ldGVycyBmb3IgYml0cmVzIGNvbnRyb2wgKi8KKyAgaEFkalRoci0+YnJlc1BhcmFtTG9uZy5jbGlwU2F2ZUxvdyAgID0gIDIwOyAgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbUxvbmcuY2xpcFNhdmVIaWdoICA9ICA5NTsgICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1Mb25nLm1pbkJpdFNhdmUgICAgPSAgLTU7ICAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtTG9uZy5tYXhCaXRTYXZlICAgID0gIDMwOyAgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbUxvbmcuY2xpcFNwZW5kTG93ICA9ICAyMDsgICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1Mb25nLmNsaXBTcGVuZEhpZ2ggPSAgOTU7ICAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtTG9uZy5taW5CaXRTcGVuZCAgID0gLTEwOyAgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbUxvbmcubWF4Qml0U3BlbmQgICA9ICA0MDsgICAgICAgICAgICAgICAgICAgIAorCisgIGhBZGpUaHItPmJyZXNQYXJhbVNob3J0LmNsaXBTYXZlTG93ICAgPSAgMjA7ICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1TaG9ydC5jbGlwU2F2ZUhpZ2ggID0gIDc1OyAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtU2hvcnQubWluQml0U2F2ZSAgICA9ICAgMDsgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbVNob3J0Lm1heEJpdFNhdmUgICAgPSAgMjA7ICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1TaG9ydC5jbGlwU3BlbmRMb3cgID0gIDIwOyAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtU2hvcnQuY2xpcFNwZW5kSGlnaCA9ICA3NTsgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbVNob3J0Lm1pbkJpdFNwZW5kICAgPSAtNTsgICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1TaG9ydC5tYXhCaXRTcGVuZCAgID0gIDUwOyAgICAgICAgICAgICAgICAgICAKKworICAvKiBzcGVjaWZpYyBmb3IgZWFjaCBlbGVtZW50OiAqLworCisgIC8qIHBhcmFtZXRlcnMgZm9yIGJpdHJlcyBjb250cm9sICovCisgIGF0c0VsZW0tPnBlTWluID0gZXh0cmFjdF9sKCgoODAqbWVhblBlKSAvIDEwMCkpOworICBhdHNFbGVtLT5wZU1heCA9IGV4dHJhY3RfbCgoKDEyMCptZWFuUGUpIC8gMTAwKSk7CisKKyAgLyogYWRkaXRpb25hbCBwZSBvZmZzZXQgdG8gY29ycmVjdCBwZTJiaXRzIGZvciBsb3cgYml0cmF0ZXMgKi8KKyAgYXRzRWxlbS0+cGVPZmZzZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlmIChjaEJpdHJhdGUgPCAzMjAwMCkgeworICAgIGF0c0VsZW0tPnBlT2Zmc2V0ID0gbWF4KDUwLCAoMTAwIC0gZXh0cmFjdF9sKCgxMDAgKiBjaEJpdHJhdGUpIC8gMzIwMDApKSk7CisgIH0KKworICAvKiBhdm9pZCBob2xlIHBhcmFtZXRlcnMgKi8KKyAgaWYgKGNoQml0cmF0ZSA+IDIwMDAwKSB7CisgICAgYXRzRWxlbS0+YWhQYXJhbS5tb2RpZnlNaW5TbnIgPSBUUlVFOworICAgIGF0c0VsZW0tPmFoUGFyYW0uc3RhcnRTZmJMID0gMTU7CisgICAgYXRzRWxlbS0+YWhQYXJhbS5zdGFydFNmYlMgPSAzOworICB9CisgIGVsc2UgeworICAgIGF0c0VsZW0tPmFoUGFyYW0ubW9kaWZ5TWluU25yID0gRkFMU0U7CisgICAgYXRzRWxlbS0+YWhQYXJhbS5zdGFydFNmYkwgPSAwOworICAgIGF0c0VsZW0tPmFoUGFyYW0uc3RhcnRTZmJTID0gMDsKKyAgfQorCisgIC8qIG1pblNuciBhZGFwdGF0aW9uICovCisgIC8qIG1heGltdW0gcmVkdWN0aW9uIG9mIG1pblNuciBnb2VzIGRvd24gdG8gbWluU25yXm1heFJlZCAqLworICBtc2FQYXJhbS0+bWF4UmVkID0gMHgyMDAwMDAwMDsgICAgIC8qICowLjI1ZiAvICAgICAgICAgICAgICAgICAgICAgICAgCisgIC8qIHN0YXJ0IGFkYXB0YXRpb24gb2YgbWluU25yIGZvciBhdmdFbi9zZmJFbiA+IHN0YXJ0UmF0aW8gKi8KKyAgbXNhUGFyYW0tPnN0YXJ0UmF0aW8gPSAweDBjY2NjY2NkOyAvKiAxMCAqLyAgICAgICAgICAgICAgICAgICAgICAgIAorICAvKiBtYXhpbXVtIG1pblNuciByZWR1Y3Rpb24gdG8gbWluU25yXm1heFJlZCBpcyByZWFjaGVkIGZvcgorICAgICBhdmdFbi9zZmJFbiA+PSBtYXhSYXRpbyAqLworICBtc2FQYXJhbS0+bWF4UmF0aW8gPSAgMHgwMDIwYzQ5YzsgLyogMTAwMCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLyogaGVscGVyIHZhcmlhYmxlcyB0byBpbnRlcnBvbGF0ZSBtaW5TbnIgcmVkdWN0aW9uIGZvcgorICAgICBhdmdFbi9zZmJFbiBiZXR3ZWVuIHN0YXJ0UmF0aW8gYW5kIG1heFJhdGlvICovCisKKyAgbXNhUGFyYW0tPnJlZFJhdGlvRmFjID0gMHhmYjMzMzMzMzsgLyogLTAuNzUvMjAgKi8gICAgICAgICAKKworICBtc2FQYXJhbS0+cmVkT2ZmcyA9IDB4MzAwMDAwMDA7ICAvKiBtc2FQYXJhbS0+cmVkUmF0aW9GYWMgKiAxMCpsb2cxMChtc2FQYXJhbS0+c3RhcnRSYXRpbykgKi8gIAorCisgICAgICAgCisgIC8qIHBlIGNvcnJlY3Rpb24gKi8KKyAgYXRzRWxlbS0+cGVMYXN0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGF0c0VsZW0tPmR5bkJpdHNMYXN0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBhdHNFbGVtLT5wZUNvcnJlY3Rpb25GYWN0b3IgPSAxMDA7IC8qIDEuMCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAKKworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY2FsY1BlQ29ycmVjdGlvbgorKiBkZXNjcmlwdGlvbjogIGNhbGN1bGF0ZXMgdGhlIGRlc2lyZWQgcGVyY2VwdHVhbCBlbnRyb3B5IGZhY3RvcgorKgkJCQlJdCBpcyBiZXR3ZWVuIDAuODUgYW5kIDEuMTUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgY2FsY1BlQ29ycmVjdGlvbihXb3JkMTYgKmNvcnJlY3Rpb25GYWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBwZUFjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IHBlTGFzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBiaXRzTGFzdCkgCit7CisgIFdvcmQzMiBwZUFjdDEwMCA9IDEwMCAqIHBlQWN0OworICBXb3JkMzIgcGVMYXN0MTAwID0gMTAwICogcGVMYXN0OworICBXb3JkMTYgcGVCaXRzTGFzdCA9IGJpdHMycGUoYml0c0xhc3QpOworICAgICAgICAgICAKKyAgaWYgKChiaXRzTGFzdCA+IDApICYmCisgICAgICAocGVBY3QxMDAgPCAoMTUwICogcGVMYXN0KSkgJiYgIChwZUFjdDEwMCA+ICg3MCAqIHBlTGFzdCkpICYmCisgICAgICAoKDEyMCAqIHBlQml0c0xhc3QpID4gcGVMYXN0MTAwICkgJiYgKCggNjUgKiBwZUJpdHNMYXN0KSA8IHBlTGFzdDEwMCkpCisgICAgeworICAgICAgV29yZDE2IG5ld0ZhYyA9ICgxMDAgKiBwZUxhc3QpIC8gcGVCaXRzTGFzdDsKKyAgICAgIC8qIGRlYWQgem9uZSAqLworICAgICAgIAorICAgICAgaWYgKG5ld0ZhYyA8IDEwMCkgeworICAgICAgICBuZXdGYWMgPSBtaW4oKCgxMTAgKiBuZXdGYWMpIC8gMTAwKSwgMTAwKTsKKyAgICAgICAgbmV3RmFjID0gbWF4KG5ld0ZhYywgODUpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIG5ld0ZhYyA9IG1heCgoKDkwICogbmV3RmFjKSAvIDEwMCksIDEwMCk7CisgICAgICAgIG5ld0ZhYyA9IG1pbihuZXdGYWMsIDExNSk7CisgICAgICB9CisgICAgICAgICAKKyAgICAgIGlmICgobmV3RmFjID4gMTAwICYmICpjb3JyZWN0aW9uRmFjIDwgMTAwKSB8fAorICAgICAgICAgIChuZXdGYWMgPCAxMDAgJiYgKmNvcnJlY3Rpb25GYWMgPiAxMDApKSB7CisgICAgICAgICpjb3JyZWN0aW9uRmFjID0gMTAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICAgIC8qIGZhc3RlciBhZGFwdGF0aW9uIHRvd2FyZHMgMS4wLCBzbG93ZXIgaW4gdGhlIG90aGVyIGRpcmVjdGlvbiAqLworICAgICAgICAgICAgIAorICAgICAgaWYgKCgqY29ycmVjdGlvbkZhYyA8IDEwMCAmJiBuZXdGYWMgPCAqY29ycmVjdGlvbkZhYykgfHwKKyAgICAgICAgICAoKmNvcnJlY3Rpb25GYWMgPiAxMDAgJiYgbmV3RmFjID4gKmNvcnJlY3Rpb25GYWMpKQorICAgICAgICAqY29ycmVjdGlvbkZhYyA9ICg4NSAqICpjb3JyZWN0aW9uRmFjICsgMTUgKiBuZXdGYWMpIC8gMTAwOworICAgICAgZWxzZQorICAgICAgICAqY29ycmVjdGlvbkZhYyA9ICg3MCAqICpjb3JyZWN0aW9uRmFjICsgMzAgKiBuZXdGYWMpIC8gMTAwOworICAgICAgKmNvcnJlY3Rpb25GYWMgPSBtaW4oKmNvcnJlY3Rpb25GYWMsIDExNSk7CisgICAgICAqY29ycmVjdGlvbkZhYyA9IG1heCgqY29ycmVjdGlvbkZhYywgODUpOworICAgIH0KKyAgZWxzZSB7CisgICAgKmNvcnJlY3Rpb25GYWMgPSAxMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQWRqdXN0VGhyZXNob2xkcworKiBkZXNjcmlwdGlvbjogIEFkanVzdCB0aHJlc2hvbGRzIHRvIHRoZSBkZXNpcmVkIGJpdHJhdGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIEFkanVzdFRocmVzaG9sZHMoQURKX1RIUl9TVEFURSAgICphZGpUaHJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBBVFNfRUxFTUVOVCAgICAgKkFkalRoclN0YXRlRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQgKnBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICpjaEJpdERpc3RyaWJ1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgIGxvZ1NmYkVuZXJneVtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICBzZmJOUmVsZXZhbnRMaW5lc1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgIFFDX09VVF9FTEVNRU5UICAqcWNPRSwKKwkJCQkJICBFTEVNRU5UX0JJVFMJICAqZWxCaXRzLAorCQkJCQkgIGNvbnN0IFdvcmQxNiAgICAgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgbWF4Qml0RmFjKQoreworICBQRV9EQVRBIHBlRGF0YTsgIAorICBXb3JkMTYgbm9SZWRQZSwgZ3JhbnRlZFBlLCBncmFudGVkUGVDb3JyOworICBXb3JkMTYgY3VyV2luZG93U2VxdWVuY2U7CisgIFdvcmQxNiBiaXRGYWN0b3I7CisgIFdvcmQxNiBhdmdCaXRzID0gKGVsQml0cy0+YXZlcmFnZUJpdHMgLSAocWNPRS0+c3RhdGljQml0c1VzZWQgKyBxY09FLT5hbmNCaXRzVXNlZCkpOworICBXb3JkMTYgYml0cmVzQml0cyA9IGVsQml0cy0+Yml0UmVzTGV2ZWw7IAorICBXb3JkMTYgbWF4Qml0cmVzQml0cyA9IGVsQml0cy0+bWF4Qml0czsKKyAgV29yZDE2IHNpZGVJbmZvQml0cyA9IChxY09FLT5zdGF0aWNCaXRzVXNlZCArIHFjT0UtPmFuY0JpdHNVc2VkKTsKKyAgV29yZDE2IGNoOworICAgCisgIHByZXBhcmVTZmJQZSgmcGVEYXRhLCBwc3lPdXRDaGFubmVsLCBsb2dTZmJFbmVyZ3ksIHNmYk5SZWxldmFudExpbmVzLCBuQ2hhbm5lbHMsIEFkalRoclN0YXRlRWxlbWVudC0+cGVPZmZzZXQpOworICAgCisgIC8qIHBlIHdpdGhvdXQgcmVkdWN0aW9uICovCisgIGNhbGNTZmJQZSgmcGVEYXRhLCBwc3lPdXRDaGFubmVsLCBuQ2hhbm5lbHMpOworICBub1JlZFBlID0gcGVEYXRhLnBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisKKyAgY3VyV2luZG93U2VxdWVuY2UgPSBMT05HX1dJTkRPVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgIAorICBpZiAobkNoYW5uZWxzID09IDIpIHsKKyAgICAgICAKKyAgICBpZiAoKHBzeU91dENoYW5uZWxbMF0ud2luZG93U2VxdWVuY2UgPT0gU0hPUlRfV0lORE9XKSB8fAorICAgICAgICAocHN5T3V0Q2hhbm5lbFsxXS53aW5kb3dTZXF1ZW5jZSA9PSBTSE9SVF9XSU5ET1cpKSB7CisgICAgICBjdXJXaW5kb3dTZXF1ZW5jZSA9IFNIT1JUX1dJTkRPVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisgIGVsc2UgeworICAgIGN1cldpbmRvd1NlcXVlbmNlID0gcHN5T3V0Q2hhbm5lbFswXS53aW5kb3dTZXF1ZW5jZTsgICAgICAgICAgICAgICAgIAorICB9CisKKworICAvKiBiaXQgZmFjdG9yICovCisgIGJpdEZhY3RvciA9IGJpdHJlc0NhbGNCaXRGYWMoYml0cmVzQml0cywgbWF4Qml0cmVzQml0cywgbm9SZWRQZSs1KnNpZGVJbmZvQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJXaW5kb3dTZXF1ZW5jZSwgYXZnQml0cywgbWF4Qml0RmFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkalRoclN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkalRoclN0YXRlRWxlbWVudCk7CisKKyAgLyogZGVzaXJlZCBwZSAqLworICBncmFudGVkUGUgPSAoKGJpdEZhY3RvciAqIGJpdHMycGUoYXZnQml0cykpIC8gMTAwKTsKKworICAvKiBjb3JyZWN0aW9uIG9mIHBlIHZhbHVlICovCisgIGNhbGNQZUNvcnJlY3Rpb24oJihBZGpUaHJTdGF0ZUVsZW1lbnQtPnBlQ29ycmVjdGlvbkZhY3RvciksIAorICAgICAgICAgICAgICAgICAgIG1pbihncmFudGVkUGUsIG5vUmVkUGUpLAorICAgICAgICAgICAgICAgICAgIEFkalRoclN0YXRlRWxlbWVudC0+cGVMYXN0LCAKKyAgICAgICAgICAgICAgICAgICBBZGpUaHJTdGF0ZUVsZW1lbnQtPmR5bkJpdHNMYXN0KTsKKyAgZ3JhbnRlZFBlQ29yciA9IChncmFudGVkUGUgKiBBZGpUaHJTdGF0ZUVsZW1lbnQtPnBlQ29ycmVjdGlvbkZhY3RvcikgLyAxMDA7CisKKyAgICAgCisgIGlmIChncmFudGVkUGVDb3JyIDwgbm9SZWRQZSAmJiBub1JlZFBlID4gcGVEYXRhLm9mZnNldCkgeworICAgIC8qIGNhbGMgdGhyZXNob2xkIG5lY2Vzc2FyeSBmb3IgZGVzaXJlZCBwZSAqLworICAgIGFkYXB0VGhyZXNob2xkc1RvUGUocHN5T3V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBsb2dTZmJFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgICAgICAmcGVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRlZFBlQ29yciwKKyAgICAgICAgICAgICAgICAgICAgICAgICZBZGpUaHJTdGF0ZUVsZW1lbnQtPmFoUGFyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAmQWRqVGhyU3RhdGVFbGVtZW50LT5taW5TbnJBZGFwdFBhcmFtKTsKKyAgfQorCisgIC8qIGNhbGN1bGF0ZSByZWxhdGl2ZSBkaXN0cmlidXRpb24gKi8KKyAgZm9yIChjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBXb3JkMTYgcGVPZmZzRGlmZiA9IHBlRGF0YS5wZSAtIHBlRGF0YS5vZmZzZXQ7CisgICAgY2hCaXREaXN0cmlidXRpb25bY2hdID0gMjAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgCisgICAgaWYgKHBlT2Zmc0RpZmYgPiAwKSB7CisgICAgICBXb3JkMzIgdGVtcCA9IDEwMDAgLSAobkNoYW5uZWxzICogMjAwKTsKKyAgICAgIGNoQml0RGlzdHJpYnV0aW9uW2NoXSA9IGNoQml0RGlzdHJpYnV0aW9uW2NoXSArDQorCQkgICh0ZW1wICogcGVEYXRhLnBlQ2hhbm5lbERhdGFbY2hdLnBlKSAvIHBlT2Zmc0RpZmY7CisgICAgfQorICB9CisKKyAgLyogc3RvcmUgcGUgKi8KKyAgcWNPRS0+cGUgPSBub1JlZFBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIC8qIHVwZGF0ZSBsYXN0IHBlICovCisgIEFkalRoclN0YXRlRWxlbWVudC0+cGVMYXN0ID0gZ3JhbnRlZFBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEFkalRoclVwZGF0ZQorKiBkZXNjcmlwdGlvbjogIHNhdmUgZHluQml0c1VzZWQgZm9yIGNvcnJlY3Rpb24gb2YgYml0czJwZSByZWxhdGlvbgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgQWRqVGhyVXBkYXRlKEFUU19FTEVNRU5UICpBZGpUaHJTdGF0ZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgZHluQml0c1VzZWQpCit7CisgIEFkalRoclN0YXRlRWxlbWVudC0+ZHluQml0c0xhc3QgPSBkeW5CaXRzVXNlZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30KKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL0F1dG9Db3JyZWxhdGlvbl92NS5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9BdXRvQ29ycmVsYXRpb25fdjUucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGVkZDRmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9BdXRvQ29ycmVsYXRpb25fdjUucwpAQCAtMCwwICsxLDE2NyBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorQAlGaWxlOgkJQXV0b0NvcnJlbGF0aW9uX3Y1LnMNCitADQorQAlDb250ZW50OglBdXRvQ29ycmVsYXRpb24gZnVuY3Rpb24gYXJtdjUgYXNzZW1ibGUNCitADQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCisNCisNCisJLnNlY3Rpb24gLnRleHQJDQorCS5nbG9iYWwJQXV0b0NvcnJlbGF0aW9uDQorDQorQXV0b0NvcnJlbGF0aW9uOg0KKwlzdG1kYiAgICAgc3AhLCB7cjQgLSByMTEsIGxyfQ0KKw0KKyAgc3ViICAgICByMTMsIHIxMywgIzIwICAgICAgICAgICAgICAgICAgICAgDQorDQorICBtb3YgICAgIHI1LCByMCAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjcsIHIxICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByOSwgcjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHIyLCByMiwgbHNsICMxNiAgICAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjAsICMwICAgICAgICAgIA0KKyAgbW92ICAgICByNCwgcjIsIGFzciAjMTYgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHI4LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGNtcCAgICAgcjQsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmxlICAgICBMMTM2ICAgICAgICANCisJDQorCWNtcCAgICAgcjQsICM4IA0KKwltb3YJCSAgcjIsICMwIA0KKyAgYmx0ICAgICBMMTMzICAgDQorDQorCXN1YiAgICAgcjEyLCByNCwgIzggICAgICAgICAgICAgICAgDQorTDEzMjogIA0KKyAgbGRyICAgICByNiwgW3I1LCByMl0gIA0KKwlhZGQJCSAgcjIsIHIyLCAjNA0KKwlzbXVsYmIgIHIzLCByNiwgcjYNCisJbGRyICAgICByMSwgW3I1LCByMl0gDQorCXNtdWx0dAlyMTAsIHI2LCByNg0KKwltb3YJCSAgcjMsIHIzLCBhc3IgIzkNCisJc211bGJiCXI2LCByMSwgcjENCisJbW92CQkgIHIxMCwgcjEwLCBhc3IgIzkNCisJcWFkZAkgIHIwLCByMCwgcjMNCisJc211bHR0CXIxMSwgcjEsIHIxDQorCWFkZCAgICAgcjIsIHIyLCAjNA0KKwlxYWRkCSAgcjAsIHIwLCByMTANCisJbW92CQkgIHI2LCByNiwgYXNyICM5DQorCW1vdgkJICByMTEsIHIxMSwgYXNyICM5DQorCWxkcgkJICByMSwgW3I1LCByMl0NCisJcWFkZAkgIHIwLCByMCwgcjYNCisJc211bGJiCXIxMCwgcjEsIHIxDQorCXNtdWx0dAlyNiwgcjEsIHIxDQorCXFhZGQJICByMCwgcjAsIHIxMQ0KKwltb3YJCSAgcjEwLCByMTAsIGFzciAjOQ0KKwltb3YJCSAgcjYsIHI2LCBhc3IgIzkNCisJcWFkZAkgIHIwLCByMCwgcjEwDQorCWFkZCAgICAgcjIsIHIyLCAjNA0KKwlhZGQgICAgIHI4LCByOCwgIzYNCisNCisJcWFkZAkgIHIwLCByMCwgcjYNCisJY21wICAgICByOCwgcjEyICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmx0ICAgICBMMTMyCSAgICAgICAgICAgICAgICAgIA0KK0wxMzM6ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbGRyc2ggICByNiwgW3I1LCByMl0gICAgICAgICAgICAgICAgICAgICAgDQorICBtdWwgICAgIHIxMCwgcjYsIHI2ICAgDQorCWFkZCAgICAgcjIsIHIyLCAjMiAgICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByMSwgcjEwLCBhc3IgIzkgICAgICAgICAgICAgICAgICAgIA0KKyAgcWFkZCAgICByMCwgcjAsIHIxDQorTDEzNDogICAgICAgICAgICAgICAgICAgICAgICAgDQorICBhZGQgICAgIHI4LCByOCwgIzEgICAgICAgICAgICAgICAgICAgICAgICANCisgIGNtcCAgICAgcjgsIHI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmx0ICAgICBMMTMzICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzU6ICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzNjogICAgICAgICAgICAgICAgICAgICAgICAgDQorICBzdHIgICAgIHIwLCBbcjcsICMwXSAgICAgICAgICAgICAgICAgICAgICANCisgIGNtcCAgICAgcjAsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmVxICAgICBMMTMyMCAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzc6ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByMiwgcjksIGxzbCAjMTYgICAgICAgICAgICAgICAgICAgDQorCW1vdiAgICAgcjgsICMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjIsIHIyLCBhc3IgIzE2ICAgICAgICAgICAgICAgICAgIA0KKyAgY21wICAgICByMiwgIzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBibGUgICAgIEwxMzE5ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzODogICAgICAgICAgICAgICAgICAgICAgICANCitMMTM5OiAgICAgICAgICAgICAgICAgICAgICAgICANCisgIHN1YiAgICAgcjQsIHI0LCAjMSAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByMTQsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHIzLCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGNtcCAgICAgcjQsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmxlICAgICBMMTMxNyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzEwOiAgICAgICAgICAgICAgICAgICAgICAgDQorICBjbXAgICAgIHI0LCAjNiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGFkZGx0ICAgcjYsIHI1LCByOCwgbHNsICMxICAgICAgICAgICAgICAgIA0KKyAgYmx0ICAgICBMMTMxNCAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzExOiAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYWRkICAgICByNiwgcjUsIHI4LCBsc2wgIzEgICAgICAgICAgICAgICAgDQorICBzdWIgICAgIHIxMiwgcjQsICM2ICAgICAgICAgICAgICAgICAgICAgICANCisgIHN0ciAgICAgcjgsIFtyMTMsICM4XSAgICAgICAgICAgICAgICAgICAgIA0KKyAgc3RyICAgICByNywgW3IxMywgIzRdICAgICAgICAgICAgICAgICAgICAgDQorTDEzMTI6ICAgICAgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHIxLCByMywgbHNsICMxICAgICAgICAgICAgICAgICAgICANCisgIGxkcnNoICAgcjcsIFtyNiwgcjFdICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbGRyc2ggICByMTAsIFtyNSwgcjFdICANCisgIGFkZCAgICAgcjgsIHIxLCByNiANCisJYWRkICAgICByOSwgcjUsIHIxICAgICAgICAgICAgICAgICAgICAgICANCisJbXVsICAgICByNywgcjEwLCByNw0KKyAgbGRyc2ggICByMSwgW3I4LCAjMl0gDQorCWxkcnNoICAgcjEwLCBbcjgsICM0XSAgIA0KKyAgYWRkICAgICByNywgcjE0LCByNywgYXNyICM5ICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBsZHJzaCAgIHIwLCBbcjksICMyXSAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBsZHJzaCAgIHIxMSwgW3I5LCAjNF0gICAgICAgICAgICAgICAgICAgDQorICBtdWwgICAgIHIxLCByMCwgcjEgICAgICAgICAgICAgICAgICAgICAgICANCisgIGxkcnNoICAgcjE0LCBbcjgsICM2XSAgICAgICAgICAgICAgICAgICAgIA0KKyAgbXVsICAgICByMTAsIHIxMSwgcjEwICAgICAgICAgIA0KKwlhZGQgICAgIHI3LCByNywgcjEsIGFzciAjOSAgICAgICAgICAgIA0KKyAgbGRyc2ggICByOCwgW3I4LCAjOF0gDQorCWFkZCAgICAgcjMsIHIzLCAjNQ0KKwlsZHJzaCAgIHIxMSwgW3I5LCAjNl0gICAgICAgICAgICAgICAgICANCisgIGxkcnNoICAgcjEsIFtyOSwgIzhdICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbXVsICAgICByMTQsIHIxMSwgcjE0ICAgICAgICAgICAgICAgICAgICAgDQorICBhZGQgICAgIHI3LCByNywgcjEwLCBhc3IgIzkgICAgICAgDQorICBtdWwgICAgIHIxLCByMSwgcjggICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYWRkICAgICByMTQsIHI3LCByMTQsIGFzciAjOSAgICAgICAgICAgICAgDQorCWNtcCAgICAgcjMsIHIxMiANCisgIGFkZCAgICAgcjE0LCByMTQsIHIxLCBhc3IgIzkgICAgICAgICAgICAgIA0KKyAgYmxlICAgICBMMTMxMiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzEzOiAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbGRyICAgICByOCwgW3IxMywgIzhdICAgICAgICAgICAgICAgICAgICAgDQorICBsZHIgICAgIHI3LCBbcjEzLCAjNF0gICAgICAgICAgICAgICAgICAgICANCitMMTMxNDogICAgICAgICAgICAgICAgICAgICAgICANCitMMTMxNTogICAgICAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjEyLCByMywgbHNsICMxICAgICAgICAgICAgICAgICAgIA0KKyAgbGRyc2ggICByOSwgW3I2LCByMTJdICAgICAgICAgICAgICAgICAgICAgDQorICBsZHJzaCAgIHIxMiwgW3I1LCByMTJdICAgICAgICAgICAgICAgICAgICANCisgIGFkZCAgICAgcjMsIHIzLCAjMSAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgY21wICAgICByMywgcjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBtdWwgICAgIHIxMiwgcjEyLCByOSAgICAgICAgICAgICAgICAgICAgICANCisgIGFkZCAgICAgcjE0LCByMTQsIHIxMiwgYXNyICM5ICAgICAgICAgICAgIA0KKyAgYmx0ICAgICBMMTMxNSAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzE2OiAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzE3OiAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgc3RyICAgICByMTQsIFtyNywgK3I4LCBsc2wgIzJdICAgICAgICAgICAgDQorICBhZGQgICAgIHI4LCByOCwgIzEgICAgICAgICAgICAgICAgICAgICAgICANCisgIGNtcCAgICAgcjgsIHIyICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmx0ICAgICBMMTM5ICAgDQorCSAgICAgICAgICAgICAgICAgICAgICAgICANCitMMTMxOToNCitMMTMyMDoNCisJYWRkICAgICByMTMsIHIxMywgIzIwICAgICAgICAgICAgICAgICAgICANCisJbGRtaWEgICBzcCEsIHtyNCAtIHIxMSwgcGN9DQorDQorCUBFTkRQICBAIHxBdXRvQ29ycmVsYXRpb258DQorCS5lbmQNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL0NhbGNXaW5kb3dFbmVyZ3lfdjUucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvQ2FsY1dpbmRvd0VuZXJneV92NS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5OTdlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL0NhbGNXaW5kb3dFbmVyZ3lfdjUucwpAQCAtMCwwICsxLDExMiBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorQAlGaWxlOgkJQ2FsY1dpbmRvd0VuZXJneV92NS5zDQorQA0KK0AJQ29udGVudDoJQ2FsY1dpbmRvd0VuZXJneSBmdW5jdGlvbiBhcm12NSBhc3NlbWJsZQ0KK0ANCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KKw0KKwkuc2VjdGlvbiAudGV4dA0KKwkNCisJLmdsb2JhbAlDYWxjV2luZG93RW5lcmd5DQorDQorQ2FsY1dpbmRvd0VuZXJneToNCisJc3RtZGIgICBzcCEsIHtyNCAtIHIxMSwgbHJ9DQorCXN1YiAgICAgcjEzLCByMTMsICMyMCANCisNCisgIG1vdiAgICAgcjMsIHIzLCBsc2wgIzE2ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlsZHIgICAgIHIxMCwgW3IwLCAjMTY4XSAgICAgICAgICAgICAgICAgICAgQCBzdGF0ZXMwID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5paXJTdGF0ZXNbMF07DQorICBtb3YgICAgIHIzLCByMywgYXNyICMxNiANCisJbGRyICAgICByMTEsIFtyMCwgIzE3Ml0gICAgICAgICAgICAgICAgICAgIEAgc3RhdGVzMSA9IGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+aWlyU3RhdGVzWzFdOw0KKw0KKwltb3YgICAgIHIyLCByMiwgbHNsICMxNg0KKwlsZHIgICAgIHIxMiwgaGlQYXNzQ29lZmYgICAgICAgICAgICAgICAgICAgQCBDb2VmZjAgPSBoaVBhc3NDb2VmZlswXTsgICAgICANCisgIG1vdiAgICAgcjIsIHIyLCBhc3IgIzE2DQorCWxkciAgICAgcjE0LCBoaVBhc3NDb2VmZiArIDQJCQkgICAgICAgICBAIENvZWZmMSA9IGhpUGFzc0NvZWZmWzFdOw0KKwkNCisJbW92CQkJcjgsICMwCQkJCQkJCSAgICAgICAgICAgICAgIEAgdz0wDQorCW1vdgkJCXI1LCAjMAkJCQkJCQkgICAgICAgICAgICAgICBAIHdPZmZzZXQgPSAwOw0KKwkNCitCTE9DS19CRUdJTjoNCisJbW92CQkJcjYsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIGFjY3VVRSA9IDA7IA0KKwltb3YJCQlyNywgIzAJCQkJCQkJCSAgICAgICAgICAgICBAIGFjY3VGRSA9IDA7IA0KKwltb3YJCQlyNCwgIzAJCQkJCQkJICAgICAgICAgICAgICAgQCBpPTANCisJCSAgICAgICAgICAgICAgICAgICANCisJc3RyCQkJcjgsIFtyMTMsICM0XQkNCisJc3RyCQkJcjAsIFtyMTMsICM4XQkNCisJc3RyCQkJcjMsIFtyMTMsICMxMl0NCisJDQorRU5FUkdZX0JFRzoJDQorCW1vdiAgICAgcjksIHI1LCBsc2wgIzEgIA0KKwlsZHJzaCAgIHI5LCBbcjEsIHI5XQkJCQkJCQkJCQkJQCB0ZW1wVW5maWx0ZXJlZCA9IHRpbWVTaWduYWxbdGlkeF07DQorDQorCWFkZAkJCXI1LCByNSwgcjIJCQkJCQkJCQkJCQlAIHRpZHggPSB0aWR4ICsgY2hJbmNyZW1lbnQ7DQorCQ0KKwlzbXVsd2IJcjMsIHIxNCwgcjkJCQkJCQkJCQkJCQlAIGFjY3UxID0gTF9tcHlfbHMoQ29lZmYxLCB0ZW1wVW5maWx0ZXJlZCk7CQ0KKwlzbXVsbAkJcjAsIHI4LCByMTIsIHIxMQkJCQkJCQkJCUAgYWNjdTIgPSBmaXhtdWwoIENvZWZmMCwgc3RhdGVzMSApOw0KKwkNCisJbW92CQkJcjMsIHIzLCBsc2wgIzENCisJbW92CQkJcjgsIHI4LCBsc2wgIzENCisNCisJc3ViCQkJcjAsIHIzLCByMTAJCQkJCQkJCQkJCQlAIGFjY3UzID0gYWNjdTEgLSBzdGF0ZXMwOwkNCisJc3ViCQkJcjgsCXIwLCByOAkJCQkJCQkJCQkJCUAgb3V0ID0gYWNjdTMgLSBhY2N1MjsNCisNCisJbW92CQkgIHIxMCwgcjMJCQkJCQkJCQkJCQkJCUAgc3RhdGVzMCA9IGFjY3UxOw0KKwltb3YJCSAgcjExLCByOAkJCQkJCQkJCQkJCQkJQCBzdGF0ZXMxID0gb3V0OyAgDQorCQ0KKwltdWwJCSAgcjMsIHI5LCByOQkNCisJbW92ICAgICByOCwgcjgsIGFzciAjMTYNCisJDQorCWFkZAkJICByNCwgcjQsICMxDQorCWFkZCAgICAgcjYsIHI2LCByMywgYXNyICM3DQorDQorCW11bAkJICByOSwgcjgsIHI4CQ0KKwlsZHIJCSAgcjMsIFtyMTMsICMxMl0NCisNCisJYWRkCQkgIHI3LCByNywgcjksIGFzciAjNw0KKwkJDQorCWNtcCAgICAgcjQsIHIzICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmx0ICAgICBFTkVSR1lfQkVHICAgICAgIA0KKwkNCisJbGRyCQkgIHIwLCBbcjEzLCAjOF0NCisJbGRyCQkgIHI4LCBbcjEzLCAjNF0NCisJDQorRU5FUkdZX0VORDoNCisJYWRkCQkgIHI0LCByMCwgcjgsIGxzbCAjMg0KKw0KKwlzdHIgICAgIHI2LCBbcjQsICM3Ml0gICAgICAgICANCisJYWRkCQkgIHI4LCByOCwgIzEJICAgICAgICAgICANCisgIHN0ciAgICAgcjcsIFtyNCwgIzEzNl0gICAgICAgICAgICAgICAgICAgDQorDQorCWNtcAkJICByOCwgIzgNCisJYmx0CQkgIEJMT0NLX0JFR0lOICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KK0JMT0NLX0VORDoNCisJc3RyICAgICByMTAsIFtyMCwgIzE2OF0gICAgICAgICAgICAgICAgICAgIA0KKyAgc3RyICAgICByMTEsIFtyMCwgIzE3Ml0gICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByMCwgIzEgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgIA0KKyAgYWRkICAgICByMTMsIHIxMywgIzIwICAgDQorCWxkbWlhICAgc3AhLCB7cjQgLSByMTEsIHBjfSAgICAgICAgICAgICAgICAgIA0KKw0KK2hpUGFzc0NvZWZmOg0KKwkud29yZCAweGJlYzhiNDM5DQorCS53b3JkCTB4NjA5ZDQ5NTINCisJCQ0KKwlARU5EUA0KKwkuZW5kDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9QcmVQb3N0TURDVF92NS5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9QcmVQb3N0TURDVF92NS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZDNlZGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL1ByZVBvc3RNRENUX3Y1LnMKQEAgLTAsMCArMSwxMzEgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorDQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KK0AJRmlsZToJCVByZVBvc3RNRENUX3Y1LnMNCitADQorQAlDb250ZW50OglwcmVtZGN0IGFuZCBwb3N0bWRjdCBmdW5jdGlvbiBhcm12NSBhc3NlbWJsZQ0KK0ANCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KKw0KKwkuc2VjdGlvbiAudGV4dA0KKwkuZ2xvYmFsCVByZU1EQ1QNCisNCitQcmVNRENUOg0KKwlzdG1kYiAgICAgICBzcCEsIHtyNCAtIHIxMSwgbHJ9DQorCQ0KKwlhZGQgICAgICAgICByOSwgcjAsIHIxLCBsc2wgIzINCisJc3ViICAgICAgICAgcjMsIHI5LCAjOA0KKw0KKwltb3ZzICAgICAgICByMSwgcjEsIGFzciAjMg0KKwliZXEgICAgICAgICBQcmVNRENUX0VORA0KKwkNCitQcmVNRENUX0xPT1A6DQorCWxkcgkJCQkJcjgsIFtyMl0sICM0DQorCWxkcgkJCQkJcjksIFtyMl0sICM0DQorCQ0KKwlsZHJkCQkJCXI0LCBbcjBdDQorCWxkcmQJCQkJcjYsIFtyM10NCisJDQorCXNtdWxsCQkJCXIxNCwgcjExLCByNCwgcjgJCQkJCUAgTVVMSElHSCh0cjEsIGNvc2EpDQorCXNtdWxsICAgIAkJCXIxMCwgcjEyLCByNywgcjgJCQkJCUAgTVVMSElHSCh0aTEsIGNvc2EpDQorCQkNCisJc211bGwJCQkJcjE0LCByOCwgcjcsIHI5CQkJCQkJQCBNVUxISUdIKHRpMSwgc2luYSkNCisJc211bGwJCQkJcjcsIHIxMCwgcjQsIHI5CQkJCQkJQCBNVUxISUdIKHRyMSwgc2luYSkJDQorCQkNCisJYWRkCQkJCQlyMTEsIHIxMSwgcjgJCQkJCQlAIE1VTEhJR0goY29zYSwgdHIxKSArIE1VTEhJR0goc2luYSwgdGkxKUAJDQorCXN1YgkJCQkJcjcsIHIxMiwgcjEwCQkJCQkJQCBNVUxISUdIKHRpMSwgY29zYSkgLSBNVUxISUdIKHRyMSwgc2luYSkNCisJDQorCWxkcgkJCQkJcjgsIFtyMl0sICM0DQorCWxkcgkJCQkJcjksIFtyMl0sICM0DQorCQ0KKwlzbXVsbAkJCQlyMTQsIHI0LCByNiwgcjgJCQkJCQlAIE1VTEhJR0godHIyLCBjb3NhKQ0KKwlzbXVsbCAgICAJCQlyMTAsIHIxMiwgcjUsIHI4CQkJCQlAIE1VTEhJR0godGkyLCBjb3NhKQ0KKwkJDQorCXNtdWxsCQkJCXIxNCwgcjgsIHI1LCByOQkJCQkJCUAgTVVMSElHSCh0aTIsIHNpbmEpDQorCXNtdWxsCQkJCXI1LCByMTAsIHI2LCByOQkJCQkJCUAgTVVMSElHSCh0cjIsIHNpbmEpDQorCQ0KKwlhZGQJCQkJCXI4LCByOCwgcjQNCisJc3ViCQkJCQlyOSwgcjEyLCByMTANCisJDQorCW1vdgkJCQkJcjYsIHIxMQkJDQorDQorCXN0cmQJCQkJcjYsIFtyMF0JDQorCXN0cmQJCQkJcjgsIFtyM10NCisJDQorCXN1YnMJCQkJcjEsIHIxLCAjMQ0KKwlzdWIJCQkJCXIzLCByMywgIzgNCisJYWRkIAkJCQlyMCwgcjAsICM4DQorCWJuZQkJCQkJUHJlTURDVF9MT09QDQorDQorUHJlTURDVF9FTkQ6DQorCWxkbWlhICAgICAgIHNwISwge3I0IC0gcjExLCBwY30NCisJQEVORFAgIEAgfFByZU1EQ1R8DQorCQ0KKwkuc2VjdGlvbiAudGV4dA0KKwkuZ2xvYmFsCVBvc3RNRENUDQorDQorUG9zdE1EQ1Q6DQorCXN0bWRiICAgICAgIHNwISwge3I0IC0gcjExLCBscn0NCisJDQorCWFkZCAgICAgICAgIHI5LCByMCwgcjEsIGxzbCAjMg0KKwlzdWIgICAgICAgICByMywgcjksICM4DQorDQorCW1vdnMgICAgICAgIHIxLCByMSwgYXNyICMyDQorCWJlcSAgICAgICAgIFBvc3RNRENUX0VORA0KKwkNCitQb3N0TURDVF9MT09QOg0KKwlsZHIJCQkJCXI4LCBbcjJdLCAjNAkJCQkJDQorCWxkcgkJCQkJcjksIFtyMl0sICM0DQorCQ0KKwlsZHJkCQkJCXI0LCBbcjBdDQorCWxkcmQJCQkJcjYsIFtyM10NCisJDQorCXNtdWxsCQkJCXIxNCwgcjExLCByNCwgcjgJCQkJCUAgTVVMSElHSCh0cjEsIGNvc2EpDQorCXNtdWxsICAgIAkJCXIxMCwgcjEyLCByNSwgcjgJCQkJCUAgTVVMSElHSCh0aTEsIGNvc2EpDQorCQkNCisJc211bGwJCQkJcjE0LCByOCwgcjUsIHI5CQkJCQkJQCBNVUxISUdIKHRpMSwgc2luYSkNCisJc211bGwJCQkJcjUsIHIxMCwgcjQsIHI5CQkJCQkJQCBNVUxISUdIKHRyMSwgc2luYSkJDQorCQkNCisJYWRkCQkJCQlyNCwgcjExLCByOAkJCQkJCQlAIE1VTEhJR0goY29zYSwgdHIxKSArIE1VTEhJR0goc2luYSwgdGkxKUAJDQorCXN1YgkJCQkJcjExLCByMTAsIHIxMgkJCQkJCUAgTVVMSElHSCh0aTEsIGNvc2EpIC0gTVVMSElHSCh0cjEsIHNpbmEpQA0KKwkNCisJbGRyCQkJCQlyOCwgW3IyXSwgIzQJCQkJCQlADQorCWxkcgkJCQkJcjksIFtyMl0sICM0DQorCQ0KKwlzbXVsbAkJCQlyMTQsIHI1LCByNiwgcjgJCQkJCQlAIE1VTEhJR0godHIyLCBjb3NhKQ0KKwlzbXVsbCAgICAJCQlyMTAsIHIxMiwgcjcsIHI4CQkJCQlAIE1VTEhJR0godGkyLCBjb3NhKQ0KKwkJDQorCXNtdWxsCQkJCXIxNCwgcjgsIHI3LCByOQkJCQkJCUAgTVVMSElHSCh0aTIsIHNpbmEpDQorCXNtdWxsCQkJCXI3LCByMTAsIHI2LCByOQkJCQkJCUAgTVVMSElHSCh0cjIsIHNpbmEpDQorCQ0KKwlhZGQJCQkJCXI2LCByOCwgcjUJCQkJCQkJQCBNVUxISUdIKGNvc2IsIHRyMikgKyBNVUxISUdIKHNpbmIsIHRpMilADQorCXN1YgkJCQkJcjUsIHIxMCwgcjEyCQkJCQkJQCBNVUxISUdIKHNpbmIsIHRyMikgLSBNVUxISUdIKGNvc2IsIHRpMilADQorCQ0KKwltb3YJCQkJCXI3LCByMTEJCQkJDQorDQorCXN0cmQJCQkJcjQsIFtyMF0NCisJc3RyZAkJCQlyNiwgW3IzXQ0KKwkNCisJc3VicwkJCQlyMSwgcjEsICMxDQorCXN1YgkJCQkJcjMsIHIzLCAjOA0KKwlhZGQgCQkJCXIwLCByMCwgIzgNCisJYm5lCQkJCQlQb3N0TURDVF9MT09QDQorDQorUG9zdE1EQ1RfRU5EOg0KKwlsZG1pYSAgICAgICBzcCEsIHtyNCAtIHIxMSwgcGN9DQorCUBFTkRQICBAIHxQb3N0TURDVHwNCisJLmVuZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvUjRSOEZpcnN0X3Y1LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL1I0UjhGaXJzdF92NS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MGRhZjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL1I0UjhGaXJzdF92NS5zCkBAIC0wLDAgKzEsMjUyIEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KKw0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCitACUZpbGU6CQlSNFI4Rmlyc3RfdjUucw0KK0ANCitACUNvbnRlbnQ6CVJhZGl4OEZpcnN0IGFuZCBSYWRpeDRGaXJzdCBmdW5jdGlvbiBhcm12NSBhc3NlbWJsZQ0KK0ANCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KKw0KKwkuc2VjdGlvbiAudGV4dA0KKwkuZ2xvYmFsCVJhZGl4NEZpcnN0DQorDQorUmFkaXg0Rmlyc3Q6DQorCXN0bWRiICAgICAgIHNwISwge3I0IC0gcjExLCBscn0NCisJDQorCW1vdnMJCQkJcjEwLCByMQ0KKwltb3YJCQkJCXIxMSwgcjANCisJYmVxCQkJCQlSYWRpeDRGaXJzdF9FTkQNCisJCQ0KK1JhZGl4NEZpcnN0X0xPT1A6DQorCWxkcmQJCQkJcjAsIFtyMTFdDQorCWxkcmQJCQkJcjIsIFtyMTEsICM4XQ0KKwlsZHJkCQkJCXI0LCBbcjExLCAjMTZdDQorCWxkcmQJCQkJcjYsIFtyMTEsICMyNF0NCisJDQorCWFkZAkJCQkJcjgsIHIwLCByMg0KKwlhZGQJCQkJCXI5LCByMSwgcjMNCisJDQorCXN1YgkJCQkJcjAsIHIwLCByMg0KKwlzdWIJCQkJCXIxLCByMSwgcjMNCisJDQorCWFkZAkJCQkJcjIsIHI0LCByNg0KKwlhZGQJCQkJCXIzLCByNSwgcjcNCisJDQorCXN1YgkJCQkJcjQsIHI0LCByNg0KKwlzdWIJCQkJCXI1LCByNSwgcjcNCisJDQorCWFkZAkJCQkJcjYsIHI4LCByMg0KKwlhZGQJCQkJCXI3LCByOSwgcjMNCisJDQorCXN1YgkJCQkJcjgsIHI4LCByMg0KKwlzdWIJCQkJCXI5LCByOSwgcjMNCisJDQorCWFkZAkJCQkJcjIsIHIwLCByNQ0KKwlzdWIJCQkJCXIzLCByMSwgcjQNCisJDQorCXN1YgkJCQkJcjAsIHIwLCByNQ0KKwlhZGQJCQkJCXIxLCByMSwgcjQNCisJDQorCXN0cmQJCQkJcjYsIFtyMTFdDQorCXN0cmQJCQkJcjIsIFtyMTEsICM4XQ0KKwlzdHJkCQkJCXI4LCBbcjExLCAjMTZdDQorCXN0cmQJCQkJcjAsIFtyMTEsICMyNF0NCisJDQorCXN1YnMJCQkJcjEwLCByMTAsICMxDQorCWFkZAkJCQkJcjExLCByMTEsICMzMg0KKwlibmUJCQkJCVJhZGl4NEZpcnN0X0xPT1ANCisNCitSYWRpeDRGaXJzdF9FTkQ6DQorCWxkbWlhICAgICAgIHNwISwge3I0IC0gcjExLCBwY30NCisJQEVORFAgIEAgfFJhZGl4NEZpcnN0fA0KKwkNCisJLnNlY3Rpb24gLnRleHQNCisJLmdsb2JhbAlSYWRpeDhGaXJzdA0KKw0KK1JhZGl4OEZpcnN0Og0KKwlzdG1kYiAgICAgICBzcCEsIHtyNCAtIHIxMSwgbHJ9DQorCXN1YiAgICAgICAgIHNwLCBzcCwgIzB4MjQNCisJDQorCW1vdgkJCQkgIHIxMiwgcjENCisJbW92CQkJCQlyMTQsIHIwDQorCWNtcAkJCQkJcjEyLCAjMA0KKwliZXEJCQkJCVJhZGl4OEZpcnN0X0VORA0KKwkNCitSYWRpeDhGaXJzdF9MT09QOg0KKwlsZHJkCQkJCXIwLCBbcjE0XQkJDQorCWxkcmQJCQkJcjIsIFtyMTQsICM4XQ0KKwlsZHJkCQkJCXI0LCBbcjE0LCAjMTZdDQorCWxkcmQJCQkJcjYsIFtyMTQsICMyNF0NCisJDQorCWFkZAkJCQkJcjgsIHIwLCByMgkJCQkJQCByMCA9IGJ1ZlswXSArIGJ1ZlsyXUANCisJYWRkCQkJCQlyOSwgcjEsIHIzCQkJCQlAIGkwID0gYnVmWzFdICsgYnVmWzNdQA0KKwkNCisJc3ViCQkJCQlyMCwgcjAsIHIyCQkJCQlAIHIxID0gYnVmWzBdIC0gYnVmWzJdQA0KKwlzdWIJCQkJCXIxLCByMSwgcjMJCQkJCUAgaTEgPSBidWZbMV0gLSBidWZbM11ADQorCQ0KKwlhZGQJCQkJCXIyLCByNCwgcjYJCQkJCUAJcjIgPSBidWZbNF0gKyBidWZbNl1ADQorCWFkZAkJCQkJcjMsIHI1LCByNwkJCQkJQCBpMiA9IGJ1Zls1XSArIGJ1Zls3XUANCisJDQorCXN1YgkJCQkJcjQsIHI0LCByNgkJCQkJQAlyMyA9IGJ1Zls0XSAtIGJ1Zls2XUANCisJc3ViCQkJCQlyNSwgcjUsIHI3CQkJCQlAIGkzID0gYnVmWzVdIC0gYnVmWzddQA0KKwkNCisJYWRkCQkJCQlyNiwgcjgsIHIyCQkJCQlAIHI0ID0gKHIwICsgcjIpID4+IDFADQorCWFkZAkJCQkJcjcsIHI5LCByMwkJCQkJQCBpNCA9IChpMCArIGkyKSA+PiAxQA0KKwkNCisJc3ViCQkJCQlyOCwgcjgsIHIyCQkJCQlACXI1ID0gKHIwIC0gcjIpID4+IDFADQorCXN1YgkJCQkJcjksIHI5LCByMwkJCQkJQCBpNSA9IChpMCAtIGkyKSA+PiAxQA0KKwkNCisJc3ViCQkJCQlyMiwgcjAsIHI1CQkJCQlAIHI2ID0gKHIxIC0gaTMpID4+IDFADQorCWFkZAkJCQkJcjMsIHIxLCByNAkJCQkJQCBpNiA9IChpMSArIHIzKSA+PiAxQA0KKwkNCisJYWRkCQkJCQlyMCwgcjAsIHI1CQkJCQlAIHI3ID0gKHIxICsgaTMpID4+IDFADQorCXN1YgkJCQkJcjEsIHIxLCByNAkJCQkJQCBpNyA9IChpMSAtIHIzKSA+PiAxQA0KKwkNCisJbW92CQkJCQlyNiwgcjYsIGFzciAjMQkJCUANCisJbW92CQkJCQlyNywgcjcsIGFzciAjMQkJCUANCisJDQorCW1vdgkJCQkJcjgsIHI4LCBhc3IgIzENCisJbW92CQkJCQlyOSwgcjksIGFzciAjMQ0KKwkNCisJbW92CQkJCQlyMiwgcjIsIGFzciAjMQ0KKwltb3YJCQkJCXIzLCByMywgYXNyICMxDQorCQ0KKwltb3YJCQkJCXIwLCByMCwgYXNyICMxDQorCW1vdgkJCQkJcjEsIHIxLCBhc3IgIzEJDQorCQ0KKwlzdHIJCQkJCXI2LCBbc3BdDQorCXN0cgkJCQkJcjcsIFtzcCwgIzRdDQorCQ0KKwlzdHIJCQkJCXI4LCBbc3AsICM4XQ0KKwlzdHIJCQkJCXI5LCBbc3AsICMxMl0NCisJDQorCXN0cgkJCQkJcjIsIFtzcCwgIzE2XQ0KKwlzdHIJCQkJCXIzLCBbc3AsICMyMF0JDQorCQ0KKwlzdHIJCQkJCXIwLCBbc3AsICMyNF0NCisJc3RyCQkJCQlyMSwgW3NwLCAjMjhdCQ0KKwkNCisJbGRyZAkJCQlyMiwgW3IxNCwgIzMyXQkJDQorCWxkcmQJCQkJcjQsIFtyMTQsICM0MF0NCisJbGRyZAkJCQlyNiwgW3IxNCwgIzQ4XQ0KKwlsZHJkCQkJCXI4LCBbcjE0LCAjNTZdDQorCQ0KKwlhZGQJCQkJCXIwLCByMiwgcjQJCQkJCUAgcjAgPSBidWZbIDhdICsgYnVmWzEwXUANCisJYWRkCQkJCQlyMSwgcjMsIHI1CQkJCQlAIGkwID0gYnVmWyA5XSArIGJ1ZlsxMV1ADQorCQ0KKwlzdWIJCQkJCXIyLCByMiwgcjQJCQkJCUAgcjEgPSBidWZbIDhdIC0gYnVmWzEwXUANCisJc3ViCQkJCQlyMywgcjMsIHI1CQkJCQlAIGkxID0gYnVmWyA5XSAtIGJ1ZlsxMV1ADQorCQ0KKwlhZGQJCQkJCXI0LCByNiwgcjgJCQkJCUAgcjIgPSBidWZbMTJdICsgYnVmWzE0XUANCisJYWRkCQkJCQlyNSwgcjcsIHI5CQkJCQlAIGkyID0gYnVmWzEzXSArIGJ1ZlsxNV1ADQorCQ0KKwlzdWIJCQkJCXI2LCByNiwgcjgJCQkJCUAgcjMgPSBidWZbMTJdIC0gYnVmWzE0XUANCisJc3ViCQkJCQlyNywgcjcsIHI5CQkJCQlACWkzID0gYnVmWzEzXSAtIGJ1ZlsxNV1ADQorCQ0KKwlhZGQJCQkJCXI4LCByMCwgcjQJCQkJCUAgdDAgPSAocjAgKyByMikNCisJYWRkCQkJCQlyOSwgcjEsIHI1CQkJCQlAIHQxID0gKGkwICsgaTIpDQorCQ0KKwlzdWIJCQkJCXIwLCByMCwgcjQJCQkJCUAgdDIgPSAocjAgLSByMikNCisJc3ViCQkJCQlyMSwgcjEsIHI1CQkJCQlAIHQzID0gKGkwIC0gaTIpDQorCQ0KKwltb3YJCQkJCXI4LCByOCwgYXNyICMxDQorCWxkcgkJCQkJcjQsIFtzcF0NCisJDQorCW1vdgkJCQkJcjksIHI5LCBhc3IgIzENCisJbGRyCQkJCQlyNSwgW3NwLCAjNF0NCisJDQorCW1vdgkJCQkJcjAsIHIwLCBhc3IgIzEJCQ0KKwltb3YJCQkJCXIxLCByMSwgYXNyICMxDQorCQ0KKwlhZGQJCQkJCXIxMCwgcjQsIHI4CQkJCQlAIGJ1ZlsgMF0gPSByNCArIHQwQA0KKwlhZGQJCQkJCXIxMSwgcjUsIHI5CQkJCQlAIGJ1ZlsgMV0gPSBpNCArIHQxQA0KKwkNCisJc3ViCQkJCQlyNCwgIHI0LCByOAkJCQkJQCBidWZbIDhdID0gcjQgLSB0MEANCisJc3ViCQkJCQlyNSwgIHI1LCByOQkJCQkJQAlidWZbIDldID0gaTQgLSB0MUANCisJDQorIAlzdHJkCQkJCXIxMCwgW3IxNF0NCisgCXN0cmQJCQkJcjQsICBbcjE0LCAjMzJdDQorIAkNCisgCWxkcgkJCQkJcjEwLCBbc3AsICM4XQ0KKyAJbGRyCQkJCQlyMTEsIFtzcCwgIzEyXQ0KKyAJDQorIAlhZGQJCQkJCXI0LCByMTAsIHIxCQkJCQlAIGJ1ZlsgNF0gPSByNSArIHQzQA0KKyAJc3ViCQkJCQlyNSwgcjExLCByMAkJCQkJQAlidWZbIDVdID0gaTUgLSB0MkANCisgCQ0KKyAJc3ViCQkJCQlyMTAsIHIxMCwgcjEJCQkJQCBidWZbMTJdID0gcjUgLSB0M0ANCisgCWFkZAkJCQkJcjExLCByMTEsIHIwCQkJCUAgYnVmWzEzXSA9IGk1ICsgdDJADQorIAkNCisgCXN0cmQJCQkJcjQsICBbcjE0LCAjMTZdDQorIAlzdHJkCQkJCXIxMCwgW3IxNCwgIzQ4XQ0KKyAJDQorIAlzdWIJCQkJCXIwLCByMiwgcjcJCQkJCUAgcjAgPSByMSAtIGkzQA0KKyAJYWRkCQkJCQlyMSwgcjMsIHI2CQkJCQlAIGkwID0gaTEgKyByM0ANCisgDQorICBsZHIJCQkJCXIxMSwgREFUQVRhYg0KKyAJDQorIAlhZGQJCQkJCXIyLCByMiwgcjcJCQkJCUAgcjIgPSByMSArIGkzQA0KKyAJc3ViCQkJCQlyMywgcjMsIHI2CQkJCQlAIGkyID0gaTEgLSByM0ANCisgCQ0KKwlzdWIJCQkJCXI0LCByMCwgcjEJCQkJCUAgcjAgLSBpMA0KKwlhZGQJCQkJCXI1LCByMCwgcjEJCQkJCUAgcjAgKyBpMA0KKwkNCisJc3ViCQkJCQlyMCwgcjIsIHIzCQkJCQlAIHIyIC0gaTINCisJYWRkCQkJCQlyMSwgcjIsIHIzCQkJCQlAIHIyICsgaTINCisJDQorCXNtdWxsCQkJCXI4LCByNiwgcjQsIHIxMQkJCQkJCQkJDQorCXNtdWxsCQkJCXI5LCByNywgcjUsIHIxMQkJCQkJCQkJDQorCQ0KKwlsZHIJCQkJCXIyLCBbc3AsICMxNl0NCisJbGRyCQkJCQlyMywgW3NwLCAjMjBdDQorCQ0KKwlzbXVsbAkJCQlyOCwgcjQsIHIwLCByMTEJCQkJCQkJCQ0KKwlzbXVsbAkJCQlyOSwgcjUsIHIxLCByMTEJCQkJCQkJCQ0KKwkNCisJbGRyCQkJCQlyMTAsIFtzcCwgIzI0XQ0KKwlsZHIJCQkJCXIxMSwgW3NwLCAjMjhdDQorCQ0KKwlzdWIJCQkJCXI4LCByMiwgcjYNCisJc3ViCQkJCQlyOSwgcjMsIHI3DQorCQ0KKwlhZGQJCQkJCXIyLCByMiwgcjYNCisJYWRkCQkJCQlyMywgcjMsIHI3DQorCQ0KKwlhZGQJCQkJCXI2LCByMTAsIHI1DQorCXN1YgkJCQkJcjcsIHIxMSwgcjQNCisJDQorCXN1YgkJCQkJcjAsIHIxMCwgcjUNCisJYWRkCQkJCQlyMSwgcjExLCByNA0KKwkNCisJc3RyZAkJCQlyNiwgW3IxNCwgIzhdDQorCXN0cmQJCQkJcjgsIFtyMTQsICMyNF0NCisJc3RyZAkJCQlyMCwgW3IxNCwgIzQwXQ0KKwlzdHJkCQkJCXIyLCBbcjE0LCAjNTZdDQorCQ0KKwlzdWJzCQkJCXIxMiwgcjEyLCAjMQ0KKwlhZGQJCQkJCXIxNCwgcjE0LCAjNjQNCisJDQorCWJuZQkJCQkJUmFkaXg4Rmlyc3RfTE9PUA0KKwkNCitSYWRpeDhGaXJzdF9FTkQ6DQorCWFkZCAgICAgICAgIHNwLCBzcCwgIzB4MjQNCisJbGRtaWEgICAgICAgc3AhLCB7cjQgLSByMTEsIHBjfQ0KKwkNCitEQVRBVGFiOg0KKwkud29yZCAgICAgICAweDVhODI3OTlhDQorCQ0KKwlARU5EUCAgQCB8UmFkaXg4Rmlyc3R8DQorCS5lbmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL1JhZGl4NEZGVF92NS5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9SYWRpeDRGRlRfdjUucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjhlNWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9SYWRpeDRGRlRfdjUucwpAQCAtMCwwICsxLDE2OSBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorQAlGaWxlOgkJUmFkaXg0RkZUX3Y1LnMNCitADQorQAlDb250ZW50OglSYWRpeDRGRlQgYXJtdjUgYXNzZW1ibGUNCitADQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCisJLnNlY3Rpb24gLnRleHQNCisJLmdsb2JhbAlSYWRpeDRGRlQNCisNCitSYWRpeDRGRlQ6DQorCXN0bWRiICAgICBzcCEsIHtyNCAtIHIxMSwgbHJ9DQorCXN1YiAgICAgICBzcCwgc3AsICMzMiAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwltb3YJCQlyMSwgcjEsIGFzciAjMg0KKwljbXAgICAgIHIxLCAjMCAgICAgICANCisJYmVxICAgICBSYWRpeDRGRlRfRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgDQorUmFkaXg0RkZUX0xPT1AxOiAgICAgICAgICANCisJbW92ICAgICByMTQsIHIwICAgICAgICAgIAkJCQkJCQlAIHhwdHIgPSBidWZAICAgICAgICAgIA0KKwltb3YJCXIxMCwgcjEgCQkJCQkJCQkJCQkJQCBpID0gbnVtQA0KKwltb3YgICAgIHI5LCByMiwgbHNsICMzICAJCQkJCQkJQCBzdGVwID0gMipiZ25ADQorCWNtcCAgICAgcjEwLCAjMCAgDQorCXN0cgkJcjAsIFtzcF0gDQorCXN0cgkJcjEsIFtzcCwgIzRdICAgICAgDQorCXN0cgkJcjIsIFtzcCwgIzhdDQorCXN0cgkJcjMsIFtzcCwgIzEyXSAgDQorCWJlcSAgICAgUmFkaXg0RkZUX0xPT1AxX0VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIA0KKyAgICAgDQorUmFkaXg0RkZUX0xPT1AyOiAgICAgICAgICAgICAgICAgICAgICAgDQorCW1vdiAgICAgcjEyLCByMwkJCQkgICAgICAgIAkJCQlAIGNzcHRyID0gdHdpZFRhYkANCisJbW92CQlyMTEsIHIyCQkJCQkJCQkJCQkJQCBqID0gYmduDQorCWNtcCAgICAgcjExLCAjMCAgICAgICAgDQorCXN0cgkJcjEwLCBbc3AsICMxNl0NCisJYmVxICAgICBSYWRpeDRGRlRfTE9PUDJfRU5EICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkgDQorUmFkaXg0RkZUX0xPT1AzOiAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXN0cgkJCXIxMSwgW3NwLCAjMjBdCSANCisJDQorCWxkcmQJCXIwLCBbcjE0LCAjMF0JCQkJCQkJCQlAIHIwID0geHB0clswXUAgcjEgPSB4cHRyWzFdQA0KKwlhZGQJCQlyMTQsIHIxNCwgcjkgCSAJCQkJCQkJCUAgeHB0ciArPSBzdGVwQA0KKwkNCisJbGRyZAkJcjEwLAlbcjE0LCAjMF0gIAkJCQkJIAkJCUAgcjIgPSB4cHRyWzBdQCByMyA9IHhwdHJbMV1ACQ0KKwlsZHIJCQlyOCwgW3IxMl0sICM0CQkJCQkJCQkJQCBjb3N4c2lueCA9IGNzcHRyWzBdQA0KKwkNCisJc211bHd0CXI0LCByMTAsIHI4CQkJCQkJCQkJCUAgTF9tcHlfd3goY29zeCwgdDApDQorCXNtdWx3dAlyMywgcjExLCByOAkJCQkJCQkJCQlAIExfbXB5X3d4KGNvc3gsIHQxKQ0KKwkNCisJc21sYXdiCXIyLCByMTEsIHI4LCByNAkJCQkJCQkJQCByMiA9IExfbXB5X3d4KGNvc3gsIHQwKSArIExfbXB5X3d4KHNpbngsIHQxKUANCisJc211bHdiCXI1LCByMTAsIHI4CQkJCQkJCQkJCUAgTF9tcHlfd3goc2lueCwgdDApDQorCQ0KKwltb3YJCQlyMTAsIHIwLCBhc3IgIzIJCQkJCQkJCUAgdDAgPSByMCA+PiAyQA0KKwltb3YJCQlyMTEsIHIxLCBhc3IgIzIJCQkJCQkJCUAJdDEgPSByMSA+PiAyQA0KKwkJDQorCXN1YgkJCXIzLCByMywgcjUJCQkJCQkJCQkJQCByMyA9IExfbXB5X3d4KGNvc3gsIHQxKSAtIExfbXB5X3d4KHNpbngsIHQwKUANCisJYWRkICAgICByMTQsIHIxNCwgcjkgCSAJCQkJCQkJCUAgeHB0ciArPSBzdGVwQA0KKwkNCisJc3ViCQkJcjAsIHIxMCwgcjIJCQkJCQkJCQkJQCByMCA9IHQwIC0gcjJADQorCXN1YgkJCXIxLCByMTEsIHIzCQkJCQkJCQkJICBAIHIxID0gdDEgLSByM0ANCisJDQorCWFkZAkJCXIyLCByMTAsIHIyCQkJCQkJCQkJCUAgcjIgPSB0MCArIHIyQA0KKwlhZGQJCQlyMywgcjExLCByMwkJCQkJCQkJCQlAIHIzID0gdDEgKyByM0ANCisJDQorCXN0cgkJCXIyLCBbc3AsICMyNF0NCisJc3RyCQkJcjMsIFtzcCwgIzI4XQ0KKwkNCisJbGRyZAkJcjEwLCBbcjE0LCAjMF0JCQkJCQkJCUAgcjQgPSB4cHRyWzBdQCByNSA9IHhwdHJbMV1ADQorCWxkcgkJCXI4LCBbcjEyXSwgIzQJCQkJCQkJCQlAIGNvc3hzaW54ID0gY3NwdHJbMV1ADQorCQ0KKwlzbXVsd3QJcjYsIHIxMCwgcjgJCQkJCQkJCQkJQCBMX21weV93eChjb3N4LCB0MCkNCisJc211bHd0CXI1LCByMTEsIHI4CQkJCQkJCQkJCUAgTF9tcHlfd3goY29zeCwgdDEpDQorCQ0KKwlzbWxhd2IJcjQsIHIxMSwgcjgsIHI2CQkJCQkJCQlAIHI0ID0gTF9tcHlfd3goY29zeCwgdDApICsgTF9tcHlfd3goc2lueCwgdDEpQA0KKwlzbXVsd2IJcjcsIHIxMCwgcjgJCQkJCQkJCQkJQCBMX21weV93eChzaW54LCB0MCkNCisJDQorCWFkZAkJCXIxNCwgcjE0LCByOQkJCQkJCQkJCUAgeHB0ciArPSBzdGVwQA0KKwlzdWIJCQlyNSwgcjUsIHI3CQkJCQkJCQkJCUAgcjUgPSBMX21weV93eChjb3N4LCB0MSkgLSBMX21weV93eChzaW54LCB0MClADQorCQkNCisJbGRyZAkJcjEwLCBbcjE0XQkJCQkJCQkJCQlAIHI2ID0geHB0clswXUAgcjcgPSB4cHRyWzFdQA0KKwlsZHIJCQlyOCwgW3IxMl0sICM0CQkJCQkJCQkJQCBjb3N4c2lueCA9IGNzcHRyWzFdQA0KKwkNCisJc211bHd0CXIyLCByMTAsIHI4CQkJCQkJCQkJCUAgTF9tcHlfd3goY29zeCwgdDApDQorCXNtdWx3dAlyNywgcjExLCByOAkJCQkJCQkJCQlAIExfbXB5X3d4KGNvc3gsIHQxKQ0KKwkNCisJc21sYXdiCXI2LCByMTEsIHI4LCByMgkJCQkJCQkJQCByNCA9IExfbXB5X3d4KGNvc3gsIHQwKSArIExfbXB5X3d4KHNpbngsIHQxKUANCisJc211bHdiCXIzLCByMTAsIHI4CQkJCQkJCQkJCUAgTF9tcHlfd3goc2lueCwgdDApDQorCQ0KKwltb3YJCQlyMTAsIHI0CQkJCQkJCQkJCQkJQCB0MCA9IHI0QA0KKwltb3YJCQlyMTEsIHI1CQkJCQkJCQkJCQkJQCB0MSA9IHI1QAkNCisJDQorCXN1YgkJCXI3LCByNywgcjMJCQkJCQkJCQkJQCByNSA9IExfbXB5X3d4KGNvc3gsIHQxKSAtIExfbXB5X3d4KHNpbngsIHQwKUANCisJDQorDQorCWFkZAkJCXI0LCAgcjEwLCByNgkJCQkJCQkJCUAJcjQgPSB0MCArIHI2QAkNCisJc3ViCQkJcjUsIHI3LCByMTEJCQkJCQkJCQkJQCByNSA9IHI3IC0gdDFADQorCQ0KKwlzdWIJCQlyNiwgcjEwLCByNgkJCQkJCQkJCQlAIHI2ID0gdDAgLSByNkANCisJYWRkCQkJcjcsIHI3LCByMTEJCQkJCQkJCQkJQCByNyA9IHI3ICsgdDFADQorCQ0KKwlsZHIJCQlyMiwgW3NwLCAjMjRdDQorCWxkcgkJCXIzLCBbc3AsICMyOF0NCisJDQorCWFkZAkJCXIxMCwgcjAsIHI1CQkJCQkJCQkJCUAgeHB0clswXSA9IHIwICsgcjVADQorCWFkZAkJCXIxMSwgcjEsIHI2CQkJCQkJCQkJCUAgeHB0clswXSA9IHIxICsgcjYNCisJDQorCXN0cmQJCXIxMCwgW3IxNF0JCQkJCQkJCQkJDQorCXN1YgkJCXIxNCwgcjE0LCByOQkJCQkJCQkJCUAgeHB0ciAtPSBzdGVwQA0KKwkNCisJc3ViCQkJcjEwLCByMiwgcjQJCQkJCQkJCQkJQAl4cHRyWzBdID0gcjIgLSByNEANCisJc3ViCQkJcjExLCByMywgcjcJCQkJCQkJCQkJQCB4cHRyWzFdID0gcjMgLSByN0ANCisJDQorCXN0cmQJCXIxMCwgW3IxNF0JCQkJDQorCXN1YgkJCXIxNCwgcjE0LCByOQkJCQkJCQkJCUAgeHB0ciAtPSBzdGVwQA0KKwkNCisJc3ViCQkJcjEwLCByMCwgcjUJCQkJCQkJCQkJQCB4cHRyWzBdID0gcjAgLSByNUANCisJc3ViCQkJcjExLCByMSwgcjYJCQkJCQkJCQkJQCB4cHRyWzBdID0gcjEgLSByNg0KKwkNCisJc3RyZAkJcjEwLCBbcjE0XQkJCQkJCQkJCQkNCisJc3ViCQkJcjE0LCByMTQsIHI5CQkJCQkJCQkJQCB4cHRyIC09IHN0ZXBADQorCQ0KKwlhZGQJCQlyMTAsIHIyLCByNAkJCQkJCQkJCQlACXhwdHJbMF0gPSByMiAtIHI0QA0KKwlhZGQJCQlyMTEsIHIzLCByNwkJCQkJCQkJCQlAIHhwdHJbMV0gPSByMyAtIHI3QA0KKwkNCisJc3RyZAkJcjEwLCBbcjE0XQkJCQkNCisJYWRkCQkJcjE0LCByMTQsICM4CQkJCQkJCQkJQCB4cHRyICs9IDJADQorCQ0KKwlsZHIJCQlyMTEsIFtzcCwgIzIwXQ0KKwlzdWJzCQlyMTEsIHIxMSwgIzENCisJYm5lCQkJUmFkaXg0RkZUX0xPT1AzCQ0KKwkgDQorUmFkaXg0RkZUX0xPT1AyX0VORDogICAgICAgICAgIA0KKwlsZHIJCQlyMTAsIFtzcCwgIzE2XQ0KKwlsZHIJCQlyMywgW3NwLCAjMTJdDQorCWxkcgkJCXIyLCBbc3AsICM4XQ0KKwlyc2IJCQlyOCwgcjksIHI5LCBsc2wgIzIgICANCisJc3ViCQkJcjEwLCByMTAsICMxDQorCWFkZAkJCXIxNCwgcjE0LCByOAkJICAgICAgDQorCWNtcAkJCXIxMCwgIzAgIA0KKwliaGkgICAgIFJhZGl4NEZGVF9MT09QMiAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgDQorUmFkaXg0RkZUX0xPT1AxX0VORDogICAgICAgICAgICAgICANCisJbGRyICAgICByMCwgW3NwXSAgICANCisJbGRyCQlyMSwgW3NwLCAjNF0NCisJYWRkICAgICByMywgcjMsIHI4LCBhc3IgIzENCisJbW92ICAgICByMiwgcjIsIGxzbCAjMiANCisJbW92cyAgICByMSwgcjEsIGFzciAjMiANCisJYm5lICAgICBSYWRpeDRGRlRfTE9PUDEgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgDQorUmFkaXg0RkZUX0VORDogICAgICAgICAgICAgICAgICAgICAgICANCisJYWRkICAgICBzcCwgc3AsICMzMiAgICAgICAgICAgICAgICAgIA0KKwlsZG1pYSAgIHNwISwge3I0IC0gcjExLCBwY30NCisJCQ0KKwlARU5EUCAgQCB8UmFkaXg0RkZUfA0KKwkuZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9iYW5kX25yZ192NS5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9iYW5kX25yZ192NS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NjNkZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL2JhbmRfbnJnX3Y1LnMKQEAgLTAsMCArMSwyMDQgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorDQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KK0AJRmlsZToJCWJhbmRfbnJnX3Y1LnMNCitADQorQAlDb250ZW50OglDYWxjQmFuZEVuZXJneSBhbmQgQ2FsY0JhbmRFbmVyZ3lNUyBmdW5jdGlvbiBhcm12NSBhc3NlbWJsZQ0KK0ANCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KKw0KKwkuc2VjdGlvbiAudGV4dA0KKw0KKwkuZ2xvYmFsCUNhbGNCYW5kRW5lcmd5DQorDQorQ2FsY0JhbmRFbmVyZ3k6DQorCXN0bWRiICAgc3AhLCB7cjQgLSByMTEsIGxyfQkNCisgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHIyLCByMiwgbHNsICMxNiAgICAgICAgICAgICAgICAgICANCisJbGRyICAgICByMTIsIFtyMTMsICMzNl0NCisJbW92CQkJcjksICMwDQorICBtb3YgICAgIHI1LCByMiwgYXNyICMxNiAgICANCisJbW92CQkJcjQsICMwICAgICAgICAgICAgICAgDQorICBjbXAgICAgIHI1LCAjMAkNCisJYmxlICAgICBMMjEyIA0KKw0KK0wyMjoNCisgIG1vdiAgICAgcjIsIHI0LCBsc2wgIzEgICAgICAgICAgICAgICAgICAgIA0KKyAgbGRyc2ggICByMTAsIFtyMSwgcjJdICAgICAgICAgICAgICAgICAgICAgDQorICBhZGQgICAgIHIxMSwgcjEsIHIyICAgICAgICAgICAgICAgICAgICAgICANCisgIGxkcnNoICAgcjIsIFtyMTEsICMyXSAgICANCisJbW92ICAgICByMTQsICMwICAgICAgICAgICAgICAgICANCisgIGNtcCAgICAgcjEwLCByMiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmdlICAgICBMMjggDQorCQ0KK0wyMzoNCisJbGRyICAgICByMTEsIFtyMCwgK3IxMCwgbHNsICMyXQkNCisgIGFkZCAgICAgcjEwLCByMTAsICMxICAgIA0KKwlsZHIgICAgIHI2LCBbcjAsICtyMTAsIGxzbCAjMl0JDQorCXNtdWxsICAgcjExLCByNywgcjExLCByMTENCisJYWRkICAgICByMTAsIHIxMCwgIzEgDQorCXNtdWxsCSAgcjYsIHI4LCByNiwgcjYNCisJbGRyICAgICByMTEsIFtyMCwgK3IxMCwgbHNsICMyXQ0KKwlxYWRkCSAgcjE0LCByMTQsIHI3DQorCWFkZCAgICAgcjEwLCByMTAsICMxDQorCXNtdWxsCSAgcjExLCByNywgcjExLCByMTENCisJbGRyICAgICByNiwgW3IwLCArcjEwLCBsc2wgIzJdDQorCXFhZGQJICByMTQsIHIxNCwgcjgNCisJc211bGwJICByNiwgcjgsIHI2LCByNg0KKyAgYWRkICAgICByMTAsIHIxMCwgIzEgDQorCXFhZGQJICByMTQsIHIxNCwgcjcNCisJY21wICAgICByMTAsIHIyDQorCXFhZGQJICByMTQsIHIxNCwgcjgNCisJYmx0ICAgICBMMjMgICANCisNCitMMjg6CQ0KKwlxYWRkCSAgcjE0LCByMTQsIHIxNA0KKwlzdHIgICAgIHIxNCwgW3IzLCArcjQsIGxzbCAjMl0NCisJYWRkICAgICByNCwgcjQsICMxIA0KKwlxYWRkCSAgcjksIHI5LCByMTQNCisJY21wICAgICByNCwgcjUgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKyAgYmx0ICAgICBMMjIgICAgICAgCQ0KKw0KK0wyMTI6CQ0KKwlzdHIgICAgIHI5LCBbcjEyLCAjMF0gICAgICAgICAgICAgICAgICAgICANCisJbGRtaWEgICBzcCEsIHtyNCAtIHIxMSwgcGN9DQorCQ0KKwlARU5EUCAgOyB8Q2FsY0JhbmRFbmVyZ3l8DQorCQ0KKwkuZ2xvYmFsCUNhbGNCYW5kRW5lcmd5TVMNCisNCitDYWxjQmFuZEVuZXJneU1TOg0KKwlzdG1kYiAgIHNwISwge3I0IC0gcjExLCBscn0NCisJc3ViICAgICByMTMsIHIxMywgIzI0DQorCQ0KKwltb3YgICAgIHIxMiwgIzAgDQorICBtb3YgICAgIHIzLCByMywgbHNsICMxNiAgDQorICBtb3YgICAgIHIxNCwgIzAgDQorCW1vdiAgICAgcjMsIHIzLCBhc3IgIzE2ICAgICAgDQorCWNtcCAgICAgcjMsICMwICAgICAgICAgIA0KKwltb3YJCSAgcjQsICMwICAgICAgICAgICAgICAgICAgDQorICBibGUgICAgIEwzMTUgICAgDQorCQ0KK0wzMjoJDQorCW1vdgkJICByNSwgcjQsIGxzbCAjMQ0KKwltb3YJCSAgcjYsICMwDQorCWxkcnNoICAgcjEwLCBbcjIsIHI1XQ0KKwlhZGQgICAgIHI1LCByMiwgcjUNCisJbW92CQkgIHI3LCAjMA0KKwlsZHJzaAkgIHIxMSwgW3I1LCAjMl0gICAgICAgICAgICAgICAgICAgICAgICANCisJY21wICAgICByMTAsIHIxMSAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBiZ2UgICAgIEwzOSAgICANCisNCisJc3RyCQkgIHIzLCBbcjEzLCAjNF0NCisJc3RyCQkgIHI0LCBbcjEzLCAjOF0NCisJc3RyCQkgIHIxMiwgW3IxMywgIzEyXQ0KKwlzdHIJCSAgcjE0LCBbcjEzLCAjMTZdDQorDQorTDMzOgkNCisJbGRyICAgICByOCwgW3IwLCArcjEwLCBsc2wgIzJdICAgICAgICAgICAgICAgICAgICANCisJbGRyICAgICByOSwgW3IxLCArcjEwLCBsc2wgIzJdDQorCW1vdgkJICByOCwgcjgsIGFzciAjMQ0KKwlhZGQJCSAgcjEwLCByMTAsICMxDQorCW1vdgkJICByOSwgcjksIGFzciAjMQ0KKw0KKwlsZHIgICAgIHIxMiwgW3IwLCArcjEwLCBsc2wgIzJdICAgICAgICAgIA0KKwlhZGQJCSAgcjUsIHI4LCByOQkgICAgICAgICAgDQorCWxkciAgICAgcjE0LCBbcjEsICtyMTAsIGxzbCAjMl0NCisJc3ViCQkgIHI4LCByOCwgcjkNCisNCisJc211bGwgICByNSwgcjMsIHI1LCByNSANCisJbW92CQkgIHIxMiwgcjEyLCBhc3IgIzENCisJc211bGwgICByOCwgcjQsIHI4LCByOCANCisJbW92CQkgIHIxNCwgcjE0LCBhc3IgIzENCisNCisJcWFkZAkgIHI2LCByNiwgcjMNCisJYWRkCQkgIHI1LCByMTIsIHIxNA0KKwlxYWRkCSAgcjcsIHI3LCByNA0KKwlzdWIJCSAgcjgsIHIxMiwgcjE0DQorDQorCXNtdWxsICAgcjUsIHIzLCByNSwgcjUgDQorCWFkZAkJICByMTAsIHIxMCwgIzENCisJc211bGwgICByOCwgcjQsIHI4LCByOCANCisJCQ0KKwlxYWRkCSAgcjYsIHI2LCByMw0KKwlxYWRkCSAgcjcsIHI3LCByNA0KKw0KKwlsZHIgICAgIHI4LCBbcjAsICtyMTAsIGxzbCAjMl0gICAgICAgICAgICAgICAgICAgIA0KKwlsZHIgICAgIHI5LCBbcjEsICtyMTAsIGxzbCAjMl0NCisJbW92CQkgIHI4LCByOCwgYXNyICMxDQorCWFkZAkJICByMTAsIHIxMCwgIzENCisJbW92CQkgIHI5LCByOSwgYXNyICMxDQorDQorCWxkciAgICAgcjEyLCBbcjAsICtyMTAsIGxzbCAjMl0gICAgICAgICAgDQorCWFkZAkJICByNSwgcjgsIHI5CSAgICAgICAgICANCisJbGRyICAgICByMTQsIFtyMSwgK3IxMCwgbHNsICMyXQ0KKwlzdWIJCSAgcjgsIHI4LCByOQ0KKw0KKwlzbXVsbCAgIHI1LCByMywgcjUsIHI1IA0KKwltb3YJCSAgcjEyLCByMTIsIGFzciAjMQ0KKwlzbXVsbCAgIHI4LCByNCwgcjgsIHI4IA0KKwltb3YJCSAgcjE0LCByMTQsIGFzciAjMQ0KKw0KKwlxYWRkCSAgcjYsIHI2LCByMw0KKwlhZGQJCSAgcjUsIHIxMiwgcjE0DQorCXFhZGQJICByNywgcjcsIHI0DQorCXN1YgkJICByOCwgcjEyLCByMTQNCisNCisJc211bGwgICByNSwgcjMsIHI1LCByNSANCisJYWRkCQkgIHIxMCwgcjEwLCAjMQ0KKwlzbXVsbCAgIHI4LCByNCwgcjgsIHI4IA0KKwkJDQorCXFhZGQJICByNiwgcjYsIHIzDQorCXFhZGQJICByNywgcjcsIHI0DQorDQorCWNtcCAgICAgcjEwLCByMTENCisJDQorCWJsdAkJICBMMzMNCisNCisJbGRyCQkgIHIzLCBbcjEzLCAjNF0NCisJbGRyCQkgIHI0LCBbcjEzLCAjOF0JDQorCWxkcgkJICByMTIsIFtyMTMsICMxMl0NCisJbGRyCQkgIHIxNCwgW3IxMywgIzE2XQ0KK0wzOToJDQorCXFhZGQJICByNiwgcjYsIHI2DQorCXFhZGQJICByNywgcjcsIHI3CQ0KKwkNCisJbGRyCQkgIHI4LCBbcjEzLCAjNjBdDQorCWxkcgkJICByOSwgW3IxMywgIzY4XQ0KKw0KKwlxYWRkCSAgcjEyLCByMTIsIHI2DQorCXFhZGQJICByMTQsIHIxNCwgcjcNCisJDQorCXN0cgkJICByNiwgW3I4LCArcjQsIGxzbCAjMl0gICAgICAgDQorCXN0ciAgICAgcjcsIFtyOSwgK3I0LCBsc2wgIzJdICAgIA0KKwkNCisJYWRkCQkgIHI0LCByNCwgIzENCisJY21wCQkgIHI0LCByMw0KKwlibHQgICAgIEwzMiAgICAgICAgICAgIA0KKw0KK0wzMTU6DQorCWxkcgkJICByOCwgW3IxMywgIzY0XQ0KKwlsZHIJCSAgcjksIFtyMTMsICM3Ml0NCisJc3RyCQkgIHIxMiwgW3I4LCAjMF0NCisJc3RyCQkgIHIxNCwgW3I5LCAjMF0NCisNCisJYWRkICAgICByMTMsIHIxMywgIzI0DQorCWxkbWlhICAgc3AhLCB7cjQgLSByMTEsIHBjfQ0KKwlARU5EUCAgOyB8Q2FsY0JhbmRFbmVyZ3lNU3wNCisNCisJLmVuZA0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNy9QcmVQb3N0TURDVF92Ny5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY3L1ByZVBvc3RNRENUX3Y3LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY3ZGNiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjcvUHJlUG9zdE1EQ1RfdjcucwpAQCAtMCwwICsxLDEzNSBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorQAlGaWxlOgkJUHJlUG9zdE1EQ1Rfdjcucw0KK0ANCitACUNvbnRlbnQ6CXByZW1kY3QgYW5kIHBvc3RtZGN0IGZ1bmN0aW9uIGFybXY3IGFzc2VtYmxlDQorQA0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorDQorCS5zZWN0aW9uIC50ZXh0DQorCS5nbG9iYWwJUHJlTURDVA0KKw0KK1ByZU1EQ1Q6DQorCXN0bWRiICAgICBzcCEsIHtyNCAtIHIxMSwgbHJ9DQorCQ0KKwlhZGQgICAgICAgICByOSwgcjAsIHIxLCBsc2wgIzINCisJc3ViICAgICAgICAgcjMsIHI5LCAjMzINCisNCisJbW92cyAgICAgICAgcjEsIHIxLCBhc3IgIzINCisJYmVxICAgICAgICAgUHJlTURDVF9FTkQJDQorCQ0KK1ByZU1EQ1RfTE9PUDoNCisJVkxENC5JMzIJCQl7ZDAsIGQyLCBkNCwgZDZ9LCBbcjJdIQkJCQlAIGNvc2EgPSAqY3NwdHIrK0Agc2luYSA9ICpjc3B0cisrQA0KKwlWTEQ0LkkzMgkJCXtkMSwgZDMsIGQ1LCBkN30sIFtyMl0hCQkJCUAgY29zYiA9ICpjc3B0cisrQCBzaW5iID0gKmNzcHRyKytADQorCVZMRDIuSTMyCQkJe2Q4LCBkOSwgZDEwLCBkMTF9LCBbcjBdCQkJQCB0cjEgPSAqKGJ1ZjAgKyAwKUAgdGkyID0gKihidWYwICsgMSlADQorCVZMRDIuSTMyCQkJe2QxMywgZDE1fSwgW3IzXSEJCQkJCUAgdHIyID0gKihidWYxIC0gMSlAIHRpMSA9ICooYnVmMSArIDApQA0KKwlWTEQyLkkzMgkJCXtkMTIsIGQxNH0sIFtyM10hCQkJCQlAIHRyMiA9ICooYnVmMSAtIDEpQCB0aTEgPSAqKGJ1ZjEgKyAwKUANCisJCQ0KKwlWUkVWNjQuMzIJCQlROCwgUTcJDQorCVZSRVY2NC4zMgkJCVE5LCBRNg0KKw0KKwkNCisJVlFETVVMSC5TMzIJCVExMCwgUTAsIFE0CQkJCQkJCQlAIE1VTEhJR0goY29zYSwgdHIxKQ0KKwlWUURNVUxILlMzMgkJUTExLCBRMSwgUTgJCQkJCQkJCUAgTVVMSElHSChzaW5hLCB0aTEpDQorCVZRRE1VTEguUzMyCQlRMTIsIFEwLCBROAkJCQkJCQkJQCBNVUxISUdIKGNvc2EsIHRpMSkNCisJVlFETVVMSC5TMzIJCVExMywgUTEsIFE0CQkJCQkJCQlAIE1VTEhJR0goc2luYSwgdHIxKQ0KKwkJDQorCVZBREQuUzMyCQkJUTAsIFExMCwgUTExCQkJCQkJQCAqYnVmMCsrID0gTVVMSElHSChjb3NhLCB0cjEpICsgTVVMSElHSChzaW5hLCB0aTEpQA0KKwlWU1VCLlMzMgkJCVExLCBRMTIsIFExMwkJCQkJCUAgKmJ1ZjArKyA9IE1VTEhJR0goY29zYSwgdGkxKSAtIE1VTEhJR0goc2luYSwgdHIxKUANCisJDQorCVZTVDIuSTMyCQkJe2QwLCBkMSwgZDIsIGQzfSwgW3IwXSENCisJc3ViCQkJCQkJcjMsIHIzLCAjMzINCisJDQorCVZRRE1VTEguUzMyCQlRMTAsIFEyLCBROQkJCQkJCQkJCQlAIE1VTEhJR0goY29zYiwgdHIyKQ0KKwlWUURNVUxILlMzMgkJUTExLCBRMywgUTUJCQkJCQkJCQkJQCBNVUxISUdIKHNpbmIsIHRpMikNCisJVlFETVVMSC5TMzIJCVExMiwgUTIsIFE1CQkJCQkJCQkJCUAgTVVMSElHSChjb3NiLCB0aTIpDQorCVZRRE1VTEguUzMyCQlRMTMsIFEzLCBROQkJCQkJCQkJCQlAIE1VTEhJR0goc2luYiwgdHIyKQ0KKwkJDQorCVZBREQuUzMyCQkJUTAsIFExMCwgUTExCQkJCQkJCQkJQCBNVUxISUdIKGNvc2EsIHRyMikgKyBNVUxISUdIKHNpbmEsIHRpMilADQorCVZTVUIuUzMyCQkJUTEsIFExMiwgUTEzCQkJCQkJCQkJQCBNVUxISUdIKGNvc2EsIHRpMikgLSBNVUxISUdIKHNpbmEsIHRyMilADQorCQ0KKwlWUkVWNjQuMzIJCQlRMywgUTENCisJVlJFVjY0LjMyCQkJUTIsIFEwDQorCQkNCisJVlNUMi5JMzIJCXtkNSwgZDd9LCBbcjNdIQkNCisJVlNUMi5JMzIJCXtkNCwgZDZ9LCBbcjNdISANCisJDQorCXN1YnMgICAgIAkJcjEsIHIxLCAjNA0KKwlzdWIJCSAgCQlyMywgcjMsICM2NAkNCisJYm5lICAgICAgIAlQcmVNRENUX0xPT1ANCisJDQorUHJlTURDVF9FTkQ6DQorCWxkbWlhICAgICBzcCEsIHtyNCAtIHIxMSwgcGN9DQorCUBFTkRQICBAIHxQcmVNRENUfA0KKw0KKwkuc2VjdGlvbiAudGV4dA0KKwkuZ2xvYmFsCVBvc3RNRENUDQorDQorUG9zdE1EQ1Q6DQorCXN0bWRiICAgICBzcCEsIHtyNCAtIHIxMSwgbHJ9DQorCQ0KKwlhZGQgICAgICAgICByOSwgcjAsIHIxLCBsc2wgIzINCisJc3ViICAgICAgICAgcjMsIHI5LCAjMzINCisNCisJbW92cyAgICAgICAgcjEsIHIxLCBhc3IgIzINCisJYmVxICAgICAgICAgUG9zdE1EQ1RfRU5EDQorCQ0KK1Bvc3RNRENUX0xPT1A6DQorCVZMRDQuSTMyCQkJe2QwLCBkMiwgZDQsIGQ2fSwgW3IyXSEJCQkJQCBjb3NhID0gKmNzcHRyKytAIHNpbmEgPSAqY3NwdHIrK0ANCisJVkxENC5JMzIJCQl7ZDEsIGQzLCBkNSwgZDd9LCBbcjJdIQkJCQlAIGNvc2IgPSAqY3NwdHIrK0Agc2luYiA9ICpjc3B0cisrQA0KKwlWTEQyLkkzMgkJCXtkOCwgZDksIGQxMCwgZDExfSwgW3IwXQkJCUAgdHIxID0gKih6YnVmMSArIDApQCB0aTEgPSAqKHpidWYxICsgMSlADQorCVZMRDIuSTMyCQkJe2QxMywgZDE1fSwgW3IzXSEJCQkJCQkJQCB0cjIgPSAqKHpidWYyIC0gMSlAIHRpMiA9ICooemJ1ZjIgKyAwKUANCisJVkxEMi5JMzIJCQl7ZDEyLCBkMTR9LCBbcjNdIQkJCQkJCQlAIHRyMiA9ICooemJ1ZjIgLSAxKUAgdGkyID0gKih6YnVmMiArIDApQAkNCisNCisJVlJFVjY0LjMyCQkJUTgsIFE2CQ0KKwlWUkVWNjQuMzIJCQlROSwgUTcJCQkNCisJDQorCVZRRE1VTEguUzMyCQlRMTAsIFEwLCBRNAkJCQkJCQkJCQlAIE1VTEhJR0goY29zYSwgdHIxKQ0KKwlWUURNVUxILlMzMgkJUTExLCBRMSwgUTUJCQkJCQkJCQkJQCBNVUxISUdIKHNpbmEsIHRpMSkNCisJVlFETVVMSC5TMzIJCVExMiwgUTAsIFE1CQkJCQkJCQkJCUAgTVVMSElHSChjb3NhLCB0aTEpDQorCVZRRE1VTEguUzMyCQlRMTMsIFExLCBRNAkJCQkJCQkJCQlAIE1VTEhJR0goc2luYSwgdHIxKQ0KKwkJDQorCVZBREQuUzMyCQkJUTAsIFExMCwgUTExCQkJCQkJCQkJQCAqYnVmMCsrID0gTVVMSElHSChjb3NhLCB0cjEpICsgTVVMSElHSChzaW5hLCB0aTEpQA0KKwlWU1VCLlMzMgkJCVE1LCBRMTMsIFExMgkJCQkJCQkJCUAgKmJ1ZjEtLSA9IE1VTEhJR0goc2luYSwgdHIxKSAtIE1VTEhJR0goY29zYSwgdGkxKUANCisJDQorCVZRRE1VTEguUzMyCQlRMTAsIFEyLCBROAkJCQkJCQkJCQlAIE1VTEhJR0goY29zYiwgdHIyKQ0KKwlWUURNVUxILlMzMgkJUTExLCBRMywgUTkJCQkJCQkJCQkJQCBNVUxISUdIKHNpbmIsIHRpMikNCisJVlFETVVMSC5TMzIJCVExMiwgUTIsIFE5CQkJCQkJCQkJCUAgTVVMSElHSChjb3NiLCB0aTIpDQorCVZRRE1VTEguUzMyCQlRMTMsIFEzLCBROAkJCQkJCQkJCQlAIE1VTEhJR0goc2luYiwgdHIyKQ0KKwkJDQorCVZBREQuUzMyCQkJUTQsIFExMCwgUTExCQkJCQkJCQkJQCAqYnVmMS0tID0gTVVMSElHSChjb3NhLCB0cjIpICsgTVVMSElHSChzaW5hLCB0aTIpQA0KKwlWU1VCLlMzMgkJCVExLCBRMTMsIFExMgkJCQkJCQkJCUAgKmJ1ZjArKyA9IE1VTEhJR0goc2luYSwgdHIyKSAtIE1VTEhJR0goY29zYSwgdGkyKUAJDQorCQ0KKwlWUkVWNjQuMzIJCQlRMiwgUTQNCisJVlJFVjY0LjMyCQkJUTMsIFE1CQ0KKwkNCisJc3ViCQkJCQkJcjMsIHIzLCAjMzIJDQorCVZTVDIuSTMyCQkJe2QwLCBkMSwgZDIsIGQzfSwgW3IwXSENCisJCQ0KKwlWU1QyLkkzMgkJCXtkNSwgZDd9LCBbcjNdIQkNCisJVlNUMi5JMzIJCQl7ZDQsIGQ2fSwgW3IzXSEgDQorCQ0KKwlzdWJzICAgICAJCQlyMSwgcjEsICM0DQorCXN1YgkJICAJCQlyMywgcjMsICM2NAkJDQorCWJuZSAgICAgICAJUG9zdE1EQ1RfTE9PUA0KKw0KK1Bvc3RNRENUX0VORDoNCisJbGRtaWEgICAgIHNwISwge3I0IC0gcjExLCBwY30NCisNCisJQEVORFAgIAkJQCB8UG9zdE1EQ1R8DQorCS5lbmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjcvUjRSOEZpcnN0X3Y3LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjcvUjRSOEZpcnN0X3Y3LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTllZTY4YgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNy9SNFI4Rmlyc3RfdjcucwpAQCAtMCwwICsxLDE0NiBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorQAlGaWxlOgkJUjRSOEZpcnN0X3Y3LnMNCitADQorQAlDb250ZW50OglSYWRpeDhGaXJzdCBhbmQgUmFkaXg0Rmlyc3QgZnVuY3Rpb24gYXJtdjcgYXNzZW1ibGUNCitADQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCisNCisJLnNlY3Rpb24gLnRleHQNCisJLmdsb2JhbAlSYWRpeDhGaXJzdA0KKw0KK1JhZGl4OEZpcnN0Og0KKwlzdG1kYiAgICAgCQlzcCEsIHtyNCAtIHIxMSwgbHJ9DQorDQorCWxkciAgICAgICAJCXIzLCBTUVJUMV8yDQorCWNtcCAgICAgICAJCXIxLCAjMA0KKwkNCisJVkRVUC5JMzIgIAkJUTE1LCByMwkNCisJYmVxICAgICAgIAkJUmFkaXg4Rmlyc3RfRU5EDQorCQ0KK1JhZGl4OEZpcnN0X0xPT1A6DQorCVZMRDEuSTMyCQkJe2QwLCBkMSwgZDIsIGQzfSwJW3IwXSENCisJVkxEMS5JMzIJCQl7ZDgsIGQ5LCBkMTAsIGQxMX0sCVtyMF0hDQorCQkNCisJVkFERC5TMzIJCQlkNCwgZDAsIGQxCQlAIHIwID0gYnVmWzBdICsgYnVmWzJdQGkwID0gYnVmWzFdICsgYnVmWzNdQA0KKwlWU1VCLlMzMgkJCWQ1LCBkMCwgZDEJCUAgcjEgPSBidWZbMF0gLSBidWZbMl1AaTEgPSBidWZbMV0gLSBidWZbM11ACQ0KKwlWU1VCLlMzMgkJCWQ3LCBkMiwgZDMJCUAgcjIgPSBidWZbNF0gLSBidWZbNl1AaTIgPSBidWZbNV0gLSBidWZbN11ACQ0KKwlWQURELlMzMgkJCWQ2LCBkMiwgZDMJCUAgcjMgPSBidWZbNF0gKyBidWZbNl1AaTMgPSBidWZbNV0gKyBidWZbN11ADQorCVZSRVY2NC5JMzIJCQlkNywgZDcJDQorCQ0KKwlWQURELlMzMgkJCVEwLCBRMiwgUTMJCUAgcjQgPSAocjAgKyByMilAaTQgPSAoaTAgKyBpMilAaTYgPSAoaTEgKyByMylAcjcgPSAocjEgKyBpMykNCisJVlNVQi5TMzIJCQlRMSwgUTIsIFEzCQlAIHI1ID0gKHIwIC0gcjIpQGk1ID0gKGkwIC0gaTIpQHI2ID0gKHIxIC0gaTMpQGk3ID0gKGkxIC0gcjMpQA0KKw0KKwlWUkVWNjQuSTMyCQkJZDMsIGQzCQ0KKw0KKwlWQURELlMzMgkJCWQ0LCBkOCwgZDkJCUAgcjAgPSBidWZbIDhdICsgYnVmWzEwXUBpMCA9IGJ1ZlsgOV0gKyBidWZbMTFdQA0KKwlWU1VCLlMzMgkJCWQ3LCBkMTAsIGQxMQlAIHIxID0gYnVmWzEyXSAtIGJ1ZlsxNF1AaTEgPSBidWZbMTNdIC0gYnVmWzE1XUAJDQorCVZBREQuUzMyCQkJZDYsIGQxMCwgZDExCUAgcjIgPSBidWZbMTJdICsgYnVmWzE0XUBpMiA9IGJ1ZlsxM10gKyBidWZbMTVdQA0KKwlWUkVWNjQuSTMyCQkJZDcsIGQ3CQ0KKwlWU1VCLlMzMgkJCWQ1LCBkOCwgZDkJCUAgcjMgPSBidWZbIDhdIC0gYnVmWzEwXUBpMyA9IGJ1ZlsgOV0gLSBidWZbMTFdQA0KKwkNCisJVlRSTi4zMgkJCQlkMSwgZDMJDQorCQ0KKwlWQURELlMzMgkJCVE0LCBRMiwgUTMJCUAgdDAgPSAocjAgKyByMikgPj4gMUB0MSA9IChpMCArIGkyKSA+PiAxQGkwID0gaTEgKyByM0ByMiA9IHIxICsgaTNADQorCVZTVUIuUzMyCQkJUTUsIFEyLCBRMwkJQCB0MiA9IChyMCAtIHIyKSA+PiAxQHQzID0gKGkwIC0gaTIpID4+IDFAcjAgPSByMSAtIGkzQGkyID0gaTEgLSByM0ANCisJDQorCVZSRVY2NC5JMzIJCQlkMywgZDMNCisJDQorCVZTSFIuUzMyCQkJZDgsIGQ4LCAjMQkJIA0KKwlWU0hSLlMzMgkJCVEwLCBRMCwgIzENCisJVlJFVjY0LkkzMgkJCWQxMCwgZDEwDQorCVZUUk4uMzIJCQkJZDExLCBkOQ0KKwlWU0hSLlMzMgkJCVExLCBRMSwgIzENCisJVlNIUi5TMzIJCQlkMTAsIGQxMCwgIzENCisJVlJFVjY0LkkzMgkJCWQ5LCBkOQ0KKwkNCisJc3ViICAgICAgIAkJCXIwLCByMCwgIzB4NDANCisJDQorCVZBREQuUzMyCQkJZDEyLCBkMCwgZDgNCisJVlNVQi5TMzIJCQlkMTYsIGQwLCBkOAkNCisJVkFERC5TMzIJCQlkMTQsIGQyLCBkMTANCisJVlNVQi5TMzIJCQlkMTgsIGQyLCBkMTANCisJDQorCVZTVUIuUzMyCQkJZDQsIGQxMSwgZDkNCisJVkFERC5TMzIJCQlkNSwgZDExLCBkOQ0KKwkNCisJVlJFVjY0LkkzMgkJCWQxOCwgZDE4DQorCQ0KKwlWUURNVUxILlMzMgkJCVEzLCBRMiwgUTE1DQorCVZUUk4uMzIJCQkJZDE0LCBkMTgNCisJVlRSTi4zMgkJCQlkNiwgZDcNCisJVlJFVjY0LkkzMgkJCWQxOCwgZDE4CQ0KKwkNCisJVlNVQi5TMzIJCQlkMTUsIGQzLCBkNg0KKwlWUkVWNjQuSTMyCQkJZDcsIGQ3DQorCVZBREQuUzMyCQkJZDE5LCBkMywgZDYNCisJVkFERC5TMzIJCQlkMTMsIGQxLCBkNw0KKwlWU1VCLlMzMgkJCWQxNywgZDEsIGQ3DQorCQ0KKwlWUkVWNjQuSTMyCQkJZDE3LCBkMTcNCisJVlRSTi4zMgkJCQlkMTMsIGQxNw0KKwlWUkVWNjQuSTMyCQkJZDE3LCBkMTcNCisJDQorCXN1YnMgICAgICAgCQkJcjEsIHIxLCAjMQkNCisJDQorCVZTVDEuSTMyCQkJe2QxMiwgZDEzLCBkMTQsIGQxNX0sIFtyMF0hDQorCVZTVDEuSTMyCQkJe2QxNiwgZDE3LCBkMTgsIGQxOX0sIFtyMF0hCQ0KKwlibmUgICAgICAgCQkJUmFkaXg4Rmlyc3RfTE9PUA0KKwkNCitSYWRpeDhGaXJzdF9FTkQ6DQorCWxkbWlhICAgICBzcCEsIHtyNCAtIHIxMSwgcGN9CQ0KK1NRUlQxXzI6DQorCS53b3JkICAgICAgMHgyZDQxM2NjZA0KKwkNCisJQEVORFAgIEAgfFJhZGl4OEZpcnN0fA0KKwkNCisJLnNlY3Rpb24gLnRleHQNCisJLmdsb2JhbAlSYWRpeDRGaXJzdA0KKw0KK1JhZGl4NEZpcnN0Og0KKwlzdG1kYiAgICAgCXNwISwge3I0IC0gcjExLCBscn0NCisNCisJY21wICAgICAgIAlyMSwgIzANCisJYmVxICAgICAgIAlSYWRpeDRGaXJzdF9FTkQNCisJDQorUmFkaXg0Rmlyc3RfTE9PUDoNCisJVkxEMS5JMzIJCQl7ZDAsIGQxLCBkMiwgZDN9LCBbcjBdCQkJCQkNCisJDQorCVZBREQuUzMyCQkJZDQsIGQwLCBkMQkJCQkJCQlAIHIwID0gYnVmWzBdICsgYnVmWzJdQCByMSA9IGJ1ZlsxXSArIGJ1ZlszXUAJCQ0KKwlWU1VCLlMzMgkJCWQ1LCBkMCwgZDEJCQkJCQkJQCByMiA9IGJ1ZlswXSAtIGJ1ZlsyXUAgcjMgPSBidWZbMV0gLSBidWZbM11ADQorCVZTVUIuUzMyCQkJZDcsIGQyLCBkMwkJCQkJCQlAIHI0ID0gYnVmWzRdICsgYnVmWzZdQCByNSA9IGJ1Zls1XSArIGJ1Zls3XUANCisJVkFERC5TMzIJCQlkNiwgZDIsIGQzCQkJCQkJCUAgcjYgPSBidWZbNF0gLSBidWZbNl1AIHI3ID0gYnVmWzVdIC0gYnVmWzddQA0KKwkNCisJVlJFVjY0LkkzMgkJZDcsIGQ3CQkJCQkJCQkJQCANCisJDQorCVZBREQuUzMyCQkJUTQsIFEyLCBRMw0KKwlWU1VCLlMzMgkJCVE1LCBRMiwgUTMNCisJDQorCVZSRVY2NC5JMzIJCWQxMSwgZDExDQorCVZUUk4uMzIJCQkJZDksIGQxMQ0KKwlzdWJzICAgICAgIAkJcjEsIHIxLCAjMQkNCisJVlJFVjY0LkkzMgkJZDExLCBkMTENCisJVlNUMS5JMzIJCQl7ZDgsIGQ5LCBkMTAsIGQxMX0sIFtyMF0hDQorDQorCWJuZSAgICAgICAJCVJhZGl4NEZpcnN0X0xPT1ANCisJDQorUmFkaXg0Rmlyc3RfRU5EOg0KKwlsZG1pYSAgICAJCXNwISwge3I0IC0gcjExLCBwY30NCisNCisJQEVORFAgIEAgfFJhZGl4NEZpcnN0fA0KKwkuZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY3L1JhZGl4NEZGVF92Ny5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY3L1JhZGl4NEZGVF92Ny5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYTg0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjcvUmFkaXg0RkZUX3Y3LnMKQEAgLTAsMCArMSwxNDMgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorDQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KK0AJRmlsZToJCVJhZGl4NEZGVF92Ny5zDQorQA0KK0AJQ29udGVudDoJUmFkaXg0RkZUIGFybXY3IGFzc2VtYmxlDQorQA0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorDQorCS5zZWN0aW9uIC50ZXh0DQorCS5nbG9iYWwJUmFkaXg0RkZUDQorDQorUmFkaXg0RkZUOg0KKwlzdG1kYiAgICBzcCEsIHtyNCAtIHIxMSwgbHJ9DQorDQorCW1vdgkJCXIxLCByMSwgYXNyICMyDQorCWNtcCAgICAgCXIxLCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJYmVxICAgICAJUmFkaXg0RkZUX0VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICANCitSYWRpeDRGRlRfTE9PUDE6ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwltb3YgICAgIAlyNSwgcjIsIGxzbCAjMSAgDQorCW1vdiAgICAgCXI4LCByMCAgICAgICAgICANCisJbW92ICAgICAJcjcsIHIxICANCisJbW92ICAgICAJcjUsIHI1LCBsc2wgIzIgICANCisJY21wICAgICAJcjEsICMwICAgICAgICAgIA0KKwlyc2JlcSAgIAlyMTIsIHI1LCByNSwgbHNsICMyIA0KKwliZXEgICAgIAlSYWRpeDRGRlRfTE9PUDFfRU5EICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXJzYiAgICAgCXIxMiwgcjUsIHI1LCBsc2wgIzIgICANCisJIA0KK1JhZGl4NEZGVF9MT09QMjogICAgICAgICAgICAgICAgICAgICAgICANCisJbW92ICAgICAJcjYsIHIzIA0KKwltb3YgICAgIAlyNCwgcjIgIA0KKwljbXAgICAgIAlyMiwgIzAgICAgICAgIA0KKwliZXEgICAgIAlSYWRpeDRGRlRfTE9PUDJfRU5EICAgICAgICAgDQorICANCitSYWRpeDRGRlRfTE9PUDM6ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJQHIwID0geHB0clswXUANCisJQHIxID0geHB0clsxXUANCisJVkxEMi5JMzIJCQl7RDAsIEQxLCBEMiwgRDN9LCBbcjhdCQkJCQ0KKwlWTEQyLkkzMgkJCXtEMjgsIEQyOSwgRDMwLCBEMzF9LCBbcjZdIQkJQCBjb3N4ID0gY3NwdHJbMF1AIHNpbnggPSBjc3B0clsxXUANCisJDQorCWFkZAkJCQkJcjgsIHI4LCByNQkJCQkJCQkJCQlAIHhwdHIgKz0gc3RlcEAJDQorCVZMRDIuSTMyCQkJe0Q0LCBENSwgRDYsRDd9LCBbcjhdCQkJCQlAIHIyID0geHB0clswXUAgcjMgPSB4cHRyWzFdQA0KKwkNCisJVlFETVVMSC5TMzIJCVExMCwgUTIsIFExNAkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MCkNCisJVlFETVVMSC5TMzIJCVExMSwgUTMsIFExNQkJCQkJCQkJCUAgTVVMSElHSChzaW54LCB0MSkNCisJVlFETVVMSC5TMzIJCVExMiwgUTMsIFExNAkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MSkNCisJVlFETVVMSC5TMzIJCVExMywgUTIsIFExNQkJCQkJCQkJCUAgTVVMSElHSChzaW54LCB0MCkNCisJCQ0KKwlWQURELlMzMgkJCVEyLCBRMTAsIFExMQkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MCkgKyBNVUxISUdIKHNpbngsIHQxKQ0KKwlWU1VCLlMzMgkJCVEzLCBRMTIsIFExMwkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MSkgLSBNVUxISUdIKHNpbngsIHQwKQ0KKwkNCisJYWRkCQkJCQlyOCwgcjgsIHI1CQkJCQkJCQkJCUAgeHB0ciArPSBzdGVwQA0KKwlWU0hSLlMzMgkJCVExMCwgUTAsICMyCQkJCQkJCQkJCUAgdDAgPSByMCA+PiAyQA0KKwlWU0hSLlMzMgkJCVExMSwgUTEsICMyCQkJCQkJCQkJCUAgdDEgPSByMSA+PiAyQA0KKwkNCisJVlNVQi5TMzIJCQlRMCwJUTEwLCBRMgkJCQkJCQkJCQlAIHIwID0gdDAgLSByMkANCisJVlNVQi5TMzIJCQlRMSwJUTExLCBRMwkJCQkJCQkJCQlAIHIxID0gdDEgLSByM0ANCisJVkFERC5TMzIJCQlRMiwgUTEwLCBRMgkJCQkJCQkJCQlAIHIyID0gdDAgKyByMkANCisJVkFERC5TMzIJCQlRMywgUTExLCBRMwkJCQkJCQkJCQlAIHIzID0gdDEgKyByM0ANCisJCQ0KKwlWTEQyLkkzMgkJCXtEOCwgRDksIEQxMCwgRDExfSwgW3I4XQkNCisJVkxEMi5JMzIJCQl7RDI4LCBEMjksIEQzMCwgRDMxfSwgW3I2XSEJDQorCWFkZAkJCQkJCXI4LCByOCwgcjUNCisNCisJVlFETVVMSC5TMzIJCVExMCwgUTQsIFExNAkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MCkNCisJVlFETVVMSC5TMzIJCVExMSwgUTUsIFExNQkJCQkJCQkJCUAgTVVMSElHSChzaW54LCB0MSkNCisJVlFETVVMSC5TMzIJCVExMiwgUTUsIFExNAkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MSkNCisJVlFETVVMSC5TMzIJCVExMywgUTQsIFExNQkJCQkJCQkJCUAgTVVMSElHSChzaW54LCB0MCkNCisJCQ0KKwlWQURELlMzMgkJCVE4LCBRMTAsIFExMQkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MCkgKyBNVUxISUdIKHNpbngsIHQxKQ0KKwlWU1VCLlMzMgkJCVE5LCBRMTIsIFExMwkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MSkgLSBNVUxISUdIKHNpbngsIHQwKQkNCisJDQorCVZMRDIuSTMyCQl7RDEyLCBEMTMsIEQxNCwgRDE1fSwgW3I4XQkNCisJVkxEMi5JMzIJCXtEMjgsIEQyOSwgRDMwLCBEMzF9LCBbcjZdIQ0KKwkNCisJVlFETVVMSC5TMzIJCVExMCwgUTYsIFExNAkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MCkNCisJVlFETVVMSC5TMzIJCVExMSwgUTcsIFExNQkJCQkJCQkJCUAgTVVMSElHSChzaW54LCB0MSkNCisJVlFETVVMSC5TMzIJCVExMiwgUTcsIFExNAkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MSkNCisJVlFETVVMSC5TMzIJCVExMywgUTYsIFExNQkJCQkJCQkJCUAgTVVMSElHSChzaW54LCB0MCkNCisJCQ0KKwlWQURELlMzMgkJCVE2LCBRMTAsIFExMQkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MCkgKyBNVUxISUdIKHNpbngsIHQxKQ0KKwlWU1VCLlMzMgkJCVE3LCBRMTIsIFExMwkJCQkJCQkJCUAgTVVMSElHSChjb3N4LCB0MSkgLSBNVUxISUdIKHNpbngsIHQwKQkJDQorCQ0KKwlWQURELlMzMgkJCVE0LCBROCwgUTYJCQkJCQkJCQkJQCByNCA9IHQwICsgcjZADQorCVZTVUIuUzMyCQkJUTUsIFE3LCBROQkJCQkJCQkJCQlAIHI1ID0gcjcgLSB0MUANCisJVlNVQi5TMzIJCQlRNiwgUTgsIFE2CQkJCQkJCQkJCUAgcjYgPSB0MCAtIHI2QA0KKwlWQURELlMzMgkJCVE3LCBRNywgUTkJCQkJCQkJCQkJQCByNyA9IHI3ICsgdDFADQorCQ0KKwlWQURELlMzMgkJCVE4LCBRMCwgUTUJCQkJCQkJCQkJQCB4cHRyWzBdID0gcjAgKyByNUANCisJVkFERC5TMzIJCQlROSwgUTEsIFE2CQkJCQkJCQkJCUAgeHB0clsxXSA9IHIxICsgcjZADQorCVZTVDIuSTMyCQkJe0QxNiwgRDE3LCBEMTgsIEQxOX0sIFtyOF0NCisJDQorCVZTVUIuUzMyCQkJUTEwLCBRMiwgUTQJCQkJCQkJCQkJQCB4cHRyWzBdID0gcjIgLSByNEANCisJc3ViCQkJCQlyOCwgcjgsIHI1CQkJCQkJCQkJCUAgeHB0ciAtPSBzdGVwQA0KKwlWU1VCLlMzMgkJCVExMSwgUTMsIFE3CQkJCQkJCQkJCUAgeHB0clsxXSA9IHIzIC0gcjdADQorCVZTVDIuSTMyCQkJe0QyMCwgRDIxLCBEMjIsIEQyM30sIFtyOF0NCisJCQ0KKwlWU1VCLlMzMgkJCVE4LCBRMCwgUTUJCQkJCQkJCQkJQCB4cHRyWzBdID0gcjAgLSByNUANCisJc3ViCQkJCQlyOCwgcjgsIHI1CQkJCQkJCQkJCUAgeHB0ciAtPSBzdGVwQA0KKwlWU1VCLlMzMgkJCVE5LCBRMSwgUTYJCQkJCQkJCQkJQCB4cHRyWzFdID0gcjEgLSByNkANCisJVlNUMi5JMzIJCQl7RDE2LCBEMTcsIEQxOCwgRDE5fSwgW3I4XQ0KKwkJDQorCVZBREQuUzMyCQkJUTEwLCBRMiwgUTQJCQkJCQkJCQkJQCB4cHRyWzBdID0gcjIgKyByNEANCisJc3ViCQkJCQlyOCwgcjgsIHI1CQkJCQkJCQkJCUAgeHB0ciAtPSBzdGVwQA0KKwlWQURELlMzMgkJCVExMSwgUTMsIFE3CQkJCQkJCQkJCUAgeHB0clsxXSA9IHIzICsgcjdADQorCVZTVDIuSTMyCQkJe0QyMCwgRDIxLCBEMjIsIEQyM30sIFtyOF0hDQorCQkNCisJc3VicyAgICAJCQlyNCwgcjQsICM0IA0KKwlibmUgICAgIAkJCVJhZGl4NEZGVF9MT09QMyANCisJICAgICAgICAgICAgICAgICAgICAgICAgIA0KK1JhZGl4NEZGVF9MT09QMl9FTkQ6ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlhZGQgICAgIAkJCXI4LCByOCwgcjEyICAgIA0KKwlzdWIgICAgCQkJCXI3LCByNywgIzEgICAgIA0KKwljbXAJCQkJCXI3LCAjMA0KKwliaGkgICAgIAkJCVJhZGl4NEZGVF9MT09QMiAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgDQorUmFkaXg0RkZUX0xPT1AxX0VORDogICAgICAgICAgICAgICAgICAgICAgICANCisJYWRkICAgICAJCQlyMywgcjEyLCByMyAgICANCisJbW92ICAgICAJCQlyMiwgcjIsIGxzbCAjMiANCisJbW92cyAgICAJCQlyMSwgcjEsIGFzciAjMiANCisJYm5lICAgICAJCQlSYWRpeDRGRlRfTE9PUDEgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgDQorUmFkaXg0RkZUX0VORDogICAgICAgIA0KKwlsZG1pYSAgIAkJCXNwISwge3I0IC0gcjExLCBwY30NCisJCQ0KKwlARU5EUCAgQCB8UmFkaXg0RkZUfA0KKwkuZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYmFuZF9ucmcuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2JhbmRfbnJnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY2YzRjYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2JhbmRfbnJnLmMKQEAgLTAsMCArMSwxMDIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJhbmRfbnJnLmMNCisNCisJQ29udGVudDoJQmFuZC9MaW5lIGVuZXJneSBjYWxjdWxhdGlvbnMgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImJhbmRfbnJnLmgiCisKKyNpZm5kZWYgQVJNVjVFDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IENhbGNCYW5kRW5lcmd5CisqIGRlc2NyaXB0aW9uOiAgIENhbGMgc2ZiLWJhbmR3aXNlIG1kY3QtZW5lcmdpZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWwKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQordm9pZCBDYWxjQmFuZEVuZXJneShjb25zdCBXb3JkMzIgKm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpiYW5kT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIG51bUJhbmRzLAorICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKmJhbmRFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqYmFuZEVuZXJneVN1bSkKK3sKKyAgV29yZDMyIGksIGo7CisgIFdvcmQzMiBhY2N1U3VtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvciAoaT0wOyBpPG51bUJhbmRzOyBpKyspIHsKKyAgICBXb3JkMzIgYWNjdSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZm9yIChqPWJhbmRPZmZzZXRbaV07IGo8YmFuZE9mZnNldFtpKzFdOyBqKyspCisgICAgICBhY2N1ID0gTF9hZGQoYWNjdSwgTVVMSElHSChtZGN0U3BlY3RydW1bal0sIG1kY3RTcGVjdHJ1bVtqXSkpOw0KKw0KKwlhY2N1ID0gTF9hZGQoYWNjdSwgYWNjdSk7CisgICAgYWNjdVN1bSA9IExfYWRkKGFjY3VTdW0sIGFjY3UpOworICAgIGJhbmRFbmVyZ3lbaV0gPSBhY2N1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorICAqYmFuZEVuZXJneVN1bSA9IGFjY3VTdW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IENhbGNCYW5kRW5lcmd5TVMKKyogZGVzY3JpcHRpb246ICAgQ2FsYyBzZmItYmFuZHdpc2UgbWRjdC1lbmVyZ2llcyBmb3IgbGVmdCBhZGQgb3IgbWludXMgcmlnaHQgY2hhbm5lbAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgQ2FsY0JhbmRFbmVyZ3lNUyhjb25zdCBXb3JkMzIgKm1kY3RTcGVjdHJ1bUxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyICptZGN0U3BlY3RydW1SaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKmJhbmRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICBudW1CYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKmJhbmRFbmVyZ3lNaWQsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5TWlkU3VtLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqYmFuZEVuZXJneVNpZGUsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5U2lkZVN1bSkKK3sKKworICBXb3JkMzIgaSwgajsKKyAgV29yZDMyIGFjY3VNaWRTdW0gPSAwOyAgICAgICAgCisgIFdvcmQzMiBhY2N1U2lkZVN1bSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgCisKKyAgZm9yKGk9MDsgaTxudW1CYW5kczsgaSsrKSB7CisgICAgV29yZDMyIGFjY3VNaWQgPSAwOworICAgIFdvcmQzMiBhY2N1U2lkZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGZvciAoaj1iYW5kT2Zmc2V0W2ldOyBqPGJhbmRPZmZzZXRbaSsxXTsgaisrKSB7CisgICAgICBXb3JkMzIgc3BlY20sIHNwZWNzOyAKKyAgICAgIFdvcmQzMiBsLCByOworCisgICAgICBsID0gbWRjdFNwZWN0cnVtTGVmdFtqXSA+PiAxOworICAgICAgciA9IG1kY3RTcGVjdHJ1bVJpZ2h0W2pdID4+IDE7CisgICAgICBzcGVjbSA9IGwgKyByOworICAgICAgc3BlY3MgPSBsIC0gcjsKKyAgICAgIGFjY3VNaWQgPSBMX2FkZChhY2N1TWlkLCBNVUxISUdIKHNwZWNtLCBzcGVjbSkpOworICAgICAgYWNjdVNpZGUgPSBMX2FkZChhY2N1U2lkZSwgTVVMSElHSChzcGVjcywgc3BlY3MpKTsKKyAgICB9CisgICAgDQorCWFjY3VNaWQgPSBMX2FkZChhY2N1TWlkLCBhY2N1TWlkKTsNCisJYWNjdVNpZGUgPSBMX2FkZChhY2N1U2lkZSwgYWNjdVNpZGUpOw0KKwliYW5kRW5lcmd5TWlkW2ldID0gYWNjdU1pZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYWNjdU1pZFN1bSA9IExfYWRkKGFjY3VNaWRTdW0sIGFjY3VNaWQpOworICAgIGJhbmRFbmVyZ3lTaWRlW2ldID0gYWNjdVNpZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBhY2N1U2lkZVN1bSA9IExfYWRkKGFjY3VTaWRlU3VtLCBhY2N1U2lkZSk7CisgICAgCisgIH0KKyAgKmJhbmRFbmVyZ3lNaWRTdW0gPSBhY2N1TWlkU3VtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICpiYW5kRW5lcmd5U2lkZVN1bSA9IGFjY3VTaWRlU3VtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfQorCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9iaXRfY250LmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9iaXRfY250LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ4MzdlOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2JpdF9jbnQuYwpAQCAtMCwwICsxLDg4NSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYml0X2NudC5jDQorDQorCUNvbnRlbnQ6CUh1ZmZtYW4gQml0Y291bnRlciAmIGNvZGVyIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJiaXRfY250LmgiCisjaW5jbHVkZSAiYWFjX3JvbS5oIgorCisjZGVmaW5lIEhJX0xUQUIoYSkgKGE+PjgpCisjZGVmaW5lIExPX0xUQUIoYSkgKGEgJiAweGZmKQorCisjZGVmaW5lIEVYUEFORChhKSAgKCgoKFdvcmQzMikoYSYweGZmMDApKSA8PCA4KXwoV29yZDMyKShhJjB4ZmYpKSAKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnQxXzJfM180XzVfNl83XzhfOV8xMF8xMQorKiBkZXNjcmlwdGlvbjogIGNvdW50cyB0YWJsZXMgMS0xMSAKKyogcmV0dXJuczogICAgICAKKyogaW5wdXQ6ICAgICAgICBxdWFudGl6ZWQgc3BlY3RydW0KKyogb3V0cHV0OiAgICAgICBiaXRDb3VudCBmb3IgdGFibGVzIDEtMTEKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgdm9pZCBjb3VudDFfMl8zXzRfNV82XzdfOF85XzEwXzExKGNvbnN0IFdvcmQxNiAqdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKmJpdENvdW50KQoreworICBXb3JkMzIgdDAsdDEsdDIsdDMsaTsKKyAgV29yZDMyIGJjMV8yLGJjM180LGJjNV82LGJjN184LGJjOV8xMDsKKyAgV29yZDE2IGJjMTEsc2M7DQorICAKKyAgYmMxXzI9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjM180PTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzVfNj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYmM3Xzg9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjOV8xMD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzExPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgc2M9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yKGk9MDtpPHdpZHRoO2krPTQpeworICAgIAorICAgIHQwPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAKKyAgICB0MT0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgCisgICAgdDI9IHZhbHVlc1tpKzJdOyAgICAgICAgICAgICAgICAgICAgIAorICAgIHQzPSB2YWx1ZXNbaSszXTsgICAgICAgICAgICAgICAgICAgICAKKyAgCisgICAgLyogMSwyICovCisKKyAgICBiYzFfMiA9IGJjMV8yICsgRVhQQU5EKGh1ZmZfbHRhYjFfMlt0MCsxXVt0MSsxXVt0MisxXVt0MysxXSk7ICAgICAgICAgICAgICAKKworICAgIC8qIDUsNiAqLworICAgIGJjNV82ID0gYmM1XzYgKyBFWFBBTkQoaHVmZl9sdGFiNV82W3QwKzRdW3QxKzRdKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGJjNV82ID0gYmM1XzYgKyBFWFBBTkQoaHVmZl9sdGFiNV82W3QyKzRdW3QzKzRdKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgdDA9QUJTKHQwKTsKKyAgICB0MT1BQlModDEpOworICAgIHQyPUFCUyh0Mik7CisgICAgdDM9QUJTKHQzKTsKKworICAgIAorICAgIGJjM180ID0gYmMzXzQgKyBFWFBBTkQoaHVmZl9sdGFiM180W3QwXVt0MV1bdDJdW3QzXSk7ICAgICAgICAgICAgICAgICAgICAgIAorICAgIAorICAgIGJjN184ID0gYmM3XzggKyBFWFBBTkQoaHVmZl9sdGFiN184W3QwXVt0MV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGJjN184ID0gYmM3XzggKyBFWFBBTkQoaHVmZl9sdGFiN184W3QyXVt0M10pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAorICAgIGJjOV8xMCA9IGJjOV8xMCArIEVYUEFORChodWZmX2x0YWI5XzEwW3QwXVt0MV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGJjOV8xMCA9IGJjOV8xMCArIEVYUEFORChodWZmX2x0YWI5XzEwW3QyXVt0M10pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAorICAgIGJjMTEgPSBiYzExICsgaHVmZl9sdGFiMTFbdDBdW3QxXTsKKyAgICBiYzExID0gYmMxMSArIGh1ZmZfbHRhYjExW3QyXVt0M107CisgICAKKyAgICAgICAgICAgCisgICAgc2MgPSBzYyArICh0MD4wKSArICh0MT4wKSArICh0Mj4wKSArICh0Mz4wKTsKKyAgfQorICAKKyAgYml0Q291bnRbMV09ZXh0cmFjdF9oKGJjMV8yKTsKKyAgYml0Q291bnRbMl09ZXh0cmFjdF9sKGJjMV8yKTsKKyAgYml0Q291bnRbM109ZXh0cmFjdF9oKGJjM180KSArIHNjOworICBiaXRDb3VudFs0XT1leHRyYWN0X2woYmMzXzQpICsgc2M7CisgIGJpdENvdW50WzVdPWV4dHJhY3RfaChiYzVfNik7CisgIGJpdENvdW50WzZdPWV4dHJhY3RfbChiYzVfNik7CisgIGJpdENvdW50WzddPWV4dHJhY3RfaChiYzdfOCkgKyBzYzsKKyAgYml0Q291bnRbOF09ZXh0cmFjdF9sKGJjN184KSArIHNjOworICBiaXRDb3VudFs5XT1leHRyYWN0X2goYmM5XzEwKSArIHNjOworICBiaXRDb3VudFsxMF09ZXh0cmFjdF9sKGJjOV8xMCkgKyBzYzsKKyAgYml0Q291bnRbMTFdPWJjMTEgKyBzYzsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnQzXzRfNV82XzdfOF85XzEwXzExCisqIGRlc2NyaXB0aW9uOiAgY291bnRzIHRhYmxlcyAzLTExIAorKiByZXR1cm5zOiAgICAgIAorKiBpbnB1dDogICAgICAgIHF1YW50aXplZCBzcGVjdHJ1bQorKiBvdXRwdXQ6ICAgICAgIGJpdENvdW50IGZvciB0YWJsZXMgMy0xMQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB2b2lkIGNvdW50M180XzVfNl83XzhfOV8xMF8xMShjb25zdCBXb3JkMTYgKnZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqYml0Q291bnQpCit7CisgIFdvcmQzMiB0MCx0MSx0Mix0MywgaTsKKyAgV29yZDMyIGJjM180LGJjNV82LGJjN184LGJjOV8xMDsKKyAgV29yZDE2IGJjMTEsc2M7CisgICAgCisgIGJjM180PTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzVfNj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYmM3Xzg9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjOV8xMD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzExPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgc2M9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yKGk9MDtpPHdpZHRoO2krPTQpeworCisgICAgdDA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgIAorICAgIHQxPSB2YWx1ZXNbaSsxXTsgICAgICAgICAgICAgICAgICAgICAKKyAgICB0Mj0gdmFsdWVzW2krMl07ICAgICAgICAgICAgICAgICAgICAgCisgICAgdDM9IHZhbHVlc1tpKzNdOyAgICAgICAgICAgICAgICAgICAgIAorICAgIAorICAgIC8qCisgICAgICA1LDYKKyAgICAqLworICAgIGJjNV82ID0gYmM1XzYgKyBFWFBBTkQoaHVmZl9sdGFiNV82W3QwKzRdW3QxKzRdKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGJjNV82ID0gYmM1XzYgKyBFWFBBTkQoaHVmZl9sdGFiNV82W3QyKzRdW3QzKzRdKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgdDA9QUJTKHQwKTsKKyAgICB0MT1BQlModDEpOworICAgIHQyPUFCUyh0Mik7CisgICAgdDM9QUJTKHQzKTsKKworCisgICAgYmMzXzQgPSBiYzNfNCArIEVYUEFORChodWZmX2x0YWIzXzRbdDBdW3QxXVt0Ml1bdDNdKTsgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmM3XzggPSBiYzdfOCArIEVYUEFORChodWZmX2x0YWI3XzhbdDBdW3QxXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmM3XzggPSBiYzdfOCArIEVYUEFORChodWZmX2x0YWI3XzhbdDJdW3QzXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgCisgICAgYmM5XzEwID0gYmM5XzEwICsgRVhQQU5EKGh1ZmZfbHRhYjlfMTBbdDBdW3QxXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmM5XzEwID0gYmM5XzEwICsgRVhQQU5EKGh1ZmZfbHRhYjlfMTBbdDJdW3QzXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmMxMSA9IGJjMTEgKyBodWZmX2x0YWIxMVt0MF1bdDFdOworICAgIGJjMTEgPSBiYzExICsgaHVmZl9sdGFiMTFbdDJdW3QzXTsKKworICAgICAgICAgICAKKyAgICBzYyA9IHNjICsgKHQwPjApICsgKHQxPjApICsgKHQyPjApICsgKHQzPjApOyAgIAorICB9DQorICAKKyAgYml0Q291bnRbMV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFsyXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJpdENvdW50WzNdPWV4dHJhY3RfaChiYzNfNCkgKyBzYzsKKyAgYml0Q291bnRbNF09ZXh0cmFjdF9sKGJjM180KSArIHNjOworICBiaXRDb3VudFs1XT1leHRyYWN0X2goYmM1XzYpOworICBiaXRDb3VudFs2XT1leHRyYWN0X2woYmM1XzYpOworICBiaXRDb3VudFs3XT1leHRyYWN0X2goYmM3XzgpICsgc2M7CisgIGJpdENvdW50WzhdPWV4dHJhY3RfbChiYzdfOCkgKyBzYzsKKyAgYml0Q291bnRbOV09ZXh0cmFjdF9oKGJjOV8xMCkgKyBzYzsKKyAgYml0Q291bnRbMTBdPWV4dHJhY3RfbChiYzlfMTApICsgc2M7CisgIGJpdENvdW50WzExXT1iYzExICsgc2M7CisgIAorfQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50NV82XzdfOF85XzEwXzExCisqIGRlc2NyaXB0aW9uOiAgY291bnRzIHRhYmxlcyA1LTExIAorKiByZXR1cm5zOiAgICAgIAorKiBpbnB1dDogICAgICAgIHF1YW50aXplZCBzcGVjdHJ1bQorKiBvdXRwdXQ6ICAgICAgIGJpdENvdW50IGZvciB0YWJsZXMgNS0xMQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBjb3VudDVfNl83XzhfOV8xMF8xMShjb25zdCBXb3JkMTYgKnZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKmJpdENvdW50KQoreworCisgIFdvcmQzMiB0MCx0MSxpOworICBXb3JkMzIgYmM1XzYsYmM3XzgsYmM5XzEwOworICBXb3JkMTYgYmMxMSxzYzsNCisKKyAgYmM1XzY9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjN184PTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzlfMTA9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYmMxMT0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHNjPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvcihpPTA7aTx3aWR0aDtpKz0yKXsKKworICAgIHQwID0gdmFsdWVzW2krMF07ICAgICAgICAgICAgICAgICAgICAKKyAgICB0MSA9IHZhbHVlc1tpKzFdOyAgICAgICAgICAgICAgICAgICAgCisKKyAgICBiYzVfNiA9IGJjNV82ICsgRVhQQU5EKGh1ZmZfbHRhYjVfNlt0MCs0XVt0MSs0XSk7ICAgICAgICAgICAgICAgICAgCisKKyAgICB0MD1BQlModDApOworICAgIHQxPUFCUyh0MSk7CisgICAgIAorICAgIGJjN184ID0gYmM3XzggKyBFWFBBTkQoaHVmZl9sdGFiN184W3QwXVt0MV0pOyAgICAgICAgICAgICAgICAgICAgICAKKyAgICBiYzlfMTAgPSBiYzlfMTAgKyBFWFBBTkQoaHVmZl9sdGFiOV8xMFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgCisgICAgYmMxMSA9IGJjMTEgKyBodWZmX2x0YWIxMVt0MF1bdDFdOworICAgIAorICAgICAgIAorICAgIHNjID0gc2MgKyAodDA+MCkgKyAodDE+MCk7CisgIH0KKyAgYml0Q291bnRbMV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFsyXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJpdENvdW50WzNdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbNF09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFs1XT1leHRyYWN0X2goYmM1XzYpOworICBiaXRDb3VudFs2XT1leHRyYWN0X2woYmM1XzYpOworICBiaXRDb3VudFs3XT1leHRyYWN0X2goYmM3XzgpICsgc2M7CisgIGJpdENvdW50WzhdPWV4dHJhY3RfbChiYzdfOCkgKyBzYzsKKyAgYml0Q291bnRbOV09ZXh0cmFjdF9oKGJjOV8xMCkgKyBzYzsKKyAgYml0Q291bnRbMTBdPWV4dHJhY3RfbChiYzlfMTApICsgc2M7CisgIGJpdENvdW50WzExXT1iYzExICsgc2M7CisgIAorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjb3VudDdfOF85XzEwXzExCisqIGRlc2NyaXB0aW9uOiAgY291bnRzIHRhYmxlcyA3LTExIAorKiByZXR1cm5zOiAgICAgIAorKiBpbnB1dDogICAgICAgIHF1YW50aXplZCBzcGVjdHJ1bQorKiBvdXRwdXQ6ICAgICAgIGJpdENvdW50IGZvciB0YWJsZXMgNy0xMQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB2b2lkIGNvdW50N184XzlfMTBfMTEoY29uc3QgV29yZDE2ICp2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqYml0Q291bnQpCit7CisgIFdvcmQzMiB0MCx0MSwgaTsKKyAgV29yZDMyIGJjN184LGJjOV8xMDsKKyAgV29yZDE2IGJjMTEsc2M7CisgICAgCisgIGJjN184PTA7ICAgICAgICAgICAgICAgICAgICAgICAKKyAgYmM5XzEwPTA7ICAgICAgICAgICAgICAgICAgICAgIAorICBiYzExPTA7ICAgICAgICAgICAgICAgICAgICAgICAgCisgIHNjPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IoaT0wO2k8d2lkdGg7aSs9Mil7CisKKyAgICB0MD1BQlModmFsdWVzW2krMF0pOworICAgIHQxPUFCUyh2YWx1ZXNbaSsxXSk7CisKKyAgICBiYzdfOCA9IGJjN184ICsgRVhQQU5EKGh1ZmZfbHRhYjdfOFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmM5XzEwID0gYmM5XzEwICsgRVhQQU5EKGh1ZmZfbHRhYjlfMTBbdDBdW3QxXSk7ICAgICAgICAgICAgICAgICAgIAorICAgIGJjMTEgPSBiYzExICsgaHVmZl9sdGFiMTFbdDBdW3QxXTsKKyAgIAorICAgICAgIAorICAgIHNjID0gc2MgKyAodDA+MCkgKyAodDE+MCk7CisgIH0KKyAgYml0Q291bnRbMV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbMl09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbM109SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbNF09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbNV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbNl09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbN109ZXh0cmFjdF9oKGJjN184KSArIHNjOworICBiaXRDb3VudFs4XT1leHRyYWN0X2woYmM3XzgpICsgc2M7CisgIGJpdENvdW50WzldPWV4dHJhY3RfaChiYzlfMTApICsgc2M7CisgIGJpdENvdW50WzEwXT1leHRyYWN0X2woYmM5XzEwKSArIHNjOworICBiaXRDb3VudFsxMV09YmMxMSArIHNjOworICAKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50OV8xMF8xMQorKiBkZXNjcmlwdGlvbjogIGNvdW50cyB0YWJsZXMgOS0xMSAKKyogcmV0dXJuczogICAgICAKKyogaW5wdXQ6ICAgICAgICBxdWFudGl6ZWQgc3BlY3RydW0KKyogb3V0cHV0OiAgICAgICBiaXRDb3VudCBmb3IgdGFibGVzIDktMTEKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgY291bnQ5XzEwXzExKGNvbnN0IFdvcmQxNiAqdmFsdWVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKmJpdENvdW50KQ0KK3sNCisNCisgIFdvcmQzMiB0MCx0MSxpOyAgDQorICBXb3JkMzIgYmM5XzEwOw0KKyAgV29yZDE2IGJjMTEsc2M7DQorDQorICBiYzlfMTA9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGJjMTE9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgc2M9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorICBmb3IoaT0wO2k8d2lkdGg7aSs9Mil7DQorDQorICAgIHQwPUFCUyh2YWx1ZXNbaSswXSk7DQorICAgIHQxPUFCUyh2YWx1ZXNbaSsxXSk7DQorICAgIA0KKw0KKyAgICBiYzlfMTAgKz0gRVhQQU5EKGh1ZmZfbHRhYjlfMTBbdDBdW3QxXSk7ICAgICAgICAgICANCisgICAgYmMxMSA9IGJjMTEgKyBodWZmX2x0YWIxMVt0MF1bdDFdOw0KKw0KKyAgICAgICANCisgICAgc2MgPSBzYyArICh0MD4wKSArICh0MT4wKTsNCisgIH0NCisgIGJpdENvdW50WzFdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbMl09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFszXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzRdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbNV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFs2XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzddPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbOF09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFs5XT1leHRyYWN0X2goYmM5XzEwKSArIHNjOw0KKyAgYml0Q291bnRbMTBdPWV4dHJhY3RfbChiYzlfMTApICsgc2M7DQorICBiaXRDb3VudFsxMV09YmMxMSArIHNjOw0KKyAgDQorfQorIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50MTEKKyogZGVzY3JpcHRpb246ICBjb3VudHMgdGFibGUgMTEgCisqIHJldHVybnM6ICAgICAgCisqIGlucHV0OiAgICAgICAgcXVhbnRpemVkIHNwZWN0cnVtCisqIG91dHB1dDogICAgICAgYml0Q291bnQgZm9yIHRhYmxlIDExCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyBzdGF0aWMgdm9pZCBjb3VudDExKGNvbnN0IFdvcmQxNiAqdmFsdWVzLA0KKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgKmJpdENvdW50KQ0KK3sNCisgIFdvcmQzMiB0MCx0MSxpOw0KKyAgV29yZDE2IGJjMTEsc2M7ICANCisNCisgIGJjMTE9MDsgICAgICAgICAgICAgICAgICAgICAgICANCisgIHNjPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGZvcihpPTA7aTx3aWR0aDtpKz0yKXsNCisgICAgdDA9QUJTKHZhbHVlc1tpKzBdKTsNCisgICAgdDE9QUJTKHZhbHVlc1tpKzFdKTsNCisgICAgYmMxMSA9IGJjMTEgKyBodWZmX2x0YWIxMVt0MF1bdDFdOw0KKw0KKyAgICAgICANCisgICAgc2MgPSBzYyArICh0MD4wKSArICh0MT4wKTsNCisgIH0NCisNCisgIGJpdENvdW50WzFdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgDQorICBiaXRDb3VudFsyXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIA0KKyAgYml0Q291bnRbM109SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICANCisgIGJpdENvdW50WzRdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgDQorICBiaXRDb3VudFs1XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIA0KKyAgYml0Q291bnRbNl09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICANCisgIGJpdENvdW50WzddPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgDQorICBiaXRDb3VudFs4XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIA0KKyAgYml0Q291bnRbOV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICANCisgIGJpdENvdW50WzEwXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgDQorICBiaXRDb3VudFsxMV09YmMxMSArIHNjOw0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50RXNjCisqIGRlc2NyaXB0aW9uOiAgY291bnRzIHRhYmxlIDExICh3aXRoIEVzYykgCisqIHJldHVybnM6ICAgICAgCisqIGlucHV0OiAgICAgICAgcXVhbnRpemVkIHNwZWN0cnVtCisqIG91dHB1dDogICAgICAgYml0Q291bnQgZm9yIHRhYmxlcyAxMSAod2l0aCBFc2MpCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIHZvaWQgY291bnRFc2MoY29uc3QgV29yZDE2ICp2YWx1ZXMsDQorICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKmJpdENvdW50KQ0KK3sNCisgIFdvcmQzMiB0MCx0MSx0MDAsdDAxLGk7DQorICBXb3JkMTYgYmMxMSxlYyxzYzsgIA0KKw0KKyAgYmMxMT0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBzYz0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGVjPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgZm9yKGk9MDtpPHdpZHRoO2krPTIpew0KKyAgICB0MD1BQlModmFsdWVzW2krMF0pOw0KKyAgICB0MT1BQlModmFsdWVzW2krMV0pOw0KKyAgICANCisgICAgICAgDQorICAgIHNjID0gc2MgKyAodDA+MCkgKyAodDE+MCk7DQorDQorICAgIHQwMCA9IG1pbih0MCwxNik7DQorICAgIHQwMSA9IG1pbih0MSwxNik7DQorICAgIGJjMTEgPSBiYzExICsgaHVmZl9sdGFiMTFbdDAwXVt0MDFdOw0KKyAgICANCisgICAgIA0KKyAgICBpZih0MCA+PSAxNil7DQorICAgICAgZWMgPSBlYyArIDU7DQorICAgICAgd2hpbGUoc3ViKHQwPSh0MCA+PiAxKSwgMTYpID49IDApIHsNCisgICAgICAgIGVjID0gZWMgKyAyOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgICANCisgICAgIA0KKyAgICBpZih0MSA+PSAxNil7DQorICAgICAgZWMgPSBlYyArIDU7DQorICAgICAgd2hpbGUoc3ViKHQxPSh0MSA+PiAxKSwgMTYpID49IDApIHsNCisgICAgICAgIGVjID0gZWMgKyAyOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKyAgYml0Q291bnRbMV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFsyXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzNdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbNF09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFs1XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzZdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbN109SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFs4XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzldPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbMTBdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgDQorICBiaXRDb3VudFsxMV09YmMxMSArIHNjICsgZWM7DQorfQorCisKK3R5cGVkZWYgdm9pZCAoKkNPVU5UX0ZVTkNUSU9OKShjb25zdCBXb3JkMTYgKnZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqYml0Q291bnQpOworCitzdGF0aWMgQ09VTlRfRlVOQ1RJT04gY291bnRGdW5jVGFibGVbQ09ERV9CT09LX0VTQ19MQVYrMV0gPQorICB7CisKKyAgICBjb3VudDFfMl8zXzRfNV82XzdfOF85XzEwXzExLCAgLyogMCAgKi8KKyAgICBjb3VudDFfMl8zXzRfNV82XzdfOF85XzEwXzExLCAgLyogMSAgKi8KKyAgICBjb3VudDNfNF81XzZfN184XzlfMTBfMTEsICAgICAgLyogMiAgKi8KKyAgICBjb3VudDVfNl83XzhfOV8xMF8xMSwgICAgICAgICAgLyogMyAgKi8KKyAgICBjb3VudDVfNl83XzhfOV8xMF8xMSwgICAgICAgICAgLyogNCAgKi8KKyAgICBjb3VudDdfOF85XzEwXzExLCAgICAgICAgICAgICAgLyogNSAgKi8KKyAgICBjb3VudDdfOF85XzEwXzExLCAgICAgICAgICAgICAgLyogNiAgKi8KKyAgICBjb3VudDdfOF85XzEwXzExLCAgICAgICAgICAgICAgLyogNyAgKi8KKyAgICBjb3VudDlfMTBfMTEsICAgICAgICAgICAgICAgICAgLyogOCAgKi8KKyAgICBjb3VudDlfMTBfMTEsICAgICAgICAgICAgICAgICAgLyogOSAgKi8KKyAgICBjb3VudDlfMTBfMTEsICAgICAgICAgICAgICAgICAgLyogMTAgKi8KKyAgICBjb3VudDlfMTBfMTEsICAgICAgICAgICAgICAgICAgLyogMTEgKi8KKyAgICBjb3VudDlfMTBfMTEsICAgICAgICAgICAgICAgICAgLyogMTIgKi8KKyAgICBjb3VudDExLCAgICAgICAgICAgICAgICAgICAgICAgLyogMTMgKi8KKyAgICBjb3VudDExLCAgICAgICAgICAgICAgICAgICAgICAgLyogMTQgKi8KKyAgICBjb3VudDExLCAgICAgICAgICAgICAgICAgICAgICAgLyogMTUgKi8KKyAgICBjb3VudEVzYyAgICAgICAgICAgICAgICAgICAgICAgLyogMTYgKi8KKyAgfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGJpdENvdW50CisqIGRlc2NyaXB0aW9uOiAgY291bnQgYml0cyAKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IGJpdENvdW50KGNvbnN0IFdvcmQxNiAqdmFsdWVzLAorICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgd2lkdGgsCisgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICBtYXhWYWwsCisgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICpiaXRDb3VudCkKK3sKKyAgLyoKKyAgICBjaGVjayBpZiB3ZSBjYW4gdXNlIGNvZGVib29rIDAKKyAgKi8KKyAgICAgCisgIGlmKG1heFZhbCA9PSAwKQorICAgIGJpdENvdW50WzBdID0gMDsKKyAgZWxzZQorICAgIGJpdENvdW50WzBdID0gSU5WQUxJRF9CSVRDT1VOVDsKKworICBtYXhWYWwgPSBtaW4obWF4VmFsLCBDT0RFX0JPT0tfRVNDX0xBVik7CisgIGNvdW50RnVuY1RhYmxlW21heFZhbF0odmFsdWVzLHdpZHRoLGJpdENvdW50KTsKKworICByZXR1cm4oMCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjb2RlVmFsdWVzCisqIGRlc2NyaXB0aW9uOiAgd3JpdGUgaHVmZnVtIGJpdHMgCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBjb2RlVmFsdWVzKFdvcmQxNiAqdmFsdWVzLCBXb3JkMTYgd2lkdGgsIFdvcmQxNiBjb2RlQm9vaywgSEFORExFX0JJVF9CVUYgaEJpdHN0cmVhbSkNCit7DQorDQorICBXb3JkMzIgaSwgdDAsIHQxLCB0MiwgdDMsIHQwMCwgdDAxOw0KKyAgV29yZDE2IGNvZGVXb3JkLCBjb2RlTGVuZ3RoOw0KKyAgV29yZDE2IHNpZ24sIHNpZ25MZW5ndGg7DQorDQorICAgDQorICBzd2l0Y2ggKGNvZGVCb29rKSB7DQorICAgIGNhc2UgQ09ERV9CT09LX1pFUk9fTk86DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgQ09ERV9CT09LXzFfTk86DQorICAgICAgZm9yKGk9MDsgaTx3aWR0aDsgaSs9NCkgew0KKyAgICAgICAgdDAgICAgICAgICA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQxICAgICAgICAgPSB2YWx1ZXNbaSsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MiAgICAgICAgID0gdmFsdWVzW2krMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDMgICAgICAgICA9IHZhbHVlc1tpKzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVXb3JkICAgPSBodWZmX2N0YWIxW3QwKzFdW3QxKzFdW3QyKzFdW3QzKzFdOyAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlTGVuZ3RoID0gSElfTFRBQihodWZmX2x0YWIxXzJbdDArMV1bdDErMV1bdDIrMV1bdDMrMV0pOyAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sIGNvZGVXb3JkLCBjb2RlTGVuZ3RoKTsgICAgICAgIA0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBDT0RFX0JPT0tfMl9OTzoNCisgICAgICBmb3IoaT0wOyBpPHdpZHRoOyBpKz00KSB7DQorICAgICAgICB0MCAgICAgICAgID0gdmFsdWVzW2krMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDEgICAgICAgICA9IHZhbHVlc1tpKzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQyICAgICAgICAgPSB2YWx1ZXNbaSsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MyAgICAgICAgID0gdmFsdWVzW2krM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZVdvcmQgICA9IGh1ZmZfY3RhYjJbdDArMV1bdDErMV1bdDIrMV1bdDMrMV07ICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVMZW5ndGggPSBMT19MVEFCKGh1ZmZfbHRhYjFfMlt0MCsxXVt0MSsxXVt0MisxXVt0MysxXSk7ICAgICAgDQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxjb2RlV29yZCxjb2RlTGVuZ3RoKTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgQ09ERV9CT09LXzNfTk86DQorICAgICAgZm9yKGk9MDsgaTx3aWR0aDsgaSs9NCkgew0KKyAgICAgICAgc2lnbj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHNpZ25MZW5ndGg9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MCA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDAgIT0gMCl7DQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsNCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgDQorICAgICAgICAgICANCisgICAgICAgICAgaWYodDAgPCAwKXsNCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDA9LXQwOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICB0MSA9IHZhbHVlc1tpKzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDEgIT0gMCl7DQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsNCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgDQorICAgICAgICAgICANCisgICAgICAgICAgaWYodDEgPCAwKXsNCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDE9LXQxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICB0MiA9IHZhbHVlc1tpKzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDIgIT0gMCl7DQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsNCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgDQorICAgICAgICAgICANCisgICAgICAgICAgaWYodDIgPCAwKXsNCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDI9LXQyOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICB0MyA9IHZhbHVlc1tpKzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgaWYodDMgIT0gMCl7DQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsNCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgDQorICAgICAgICAgICANCisgICAgICAgICAgaWYodDMgPCAwKXsNCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDM9LXQzOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorDQorICAgICAgICBjb2RlV29yZCAgID0gaHVmZl9jdGFiM1t0MF1bdDFdW3QyXVt0M107ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZUxlbmd0aCA9IEhJX0xUQUIoaHVmZl9sdGFiM180W3QwXVt0MV1bdDJdW3QzXSk7ICAgICAgICAgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOw0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sc2lnbixzaWduTGVuZ3RoKTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgQ09ERV9CT09LXzRfTk86DQorICAgICAgZm9yKGk9MDsgaTx3aWR0aDsgaSs9NCkgew0KKyAgICAgICAgc2lnbj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHNpZ25MZW5ndGg9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MCA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDAgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7DQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7IA0KKyAgICAgICAgICBpZih0MCA8IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MD0tdDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICB9DQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MSA9IHZhbHVlc1tpKzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDEgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7DQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7IA0KKyAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQxIDwgMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQxPS10MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MiA9IHZhbHVlc1tpKzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDIgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7DQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7IA0KKyAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQyIDwgMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQyPS10MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MyA9IHZhbHVlc1tpKzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDMgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7DQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7IA0KKyAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQzIDwgMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQzPS10MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlV29yZCAgID0gaHVmZl9jdGFiNFt0MF1bdDFdW3QyXVt0M107ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZUxlbmd0aCA9IExPX0xUQUIoaHVmZl9sdGFiM180W3QwXVt0MV1bdDJdW3QzXSk7ICAgICAgICAgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOyAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLHNpZ24sc2lnbkxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgY2FzZSBDT0RFX0JPT0tfNV9OTzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICBmb3IoaT0wOyBpPHdpZHRoOyBpKz0yKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQwICAgICAgICAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDEgICAgICAgICA9IHZhbHVlc1tpKzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVXb3JkICAgPSBodWZmX2N0YWI1W3QwKzRdW3QxKzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlTGVuZ3RoID0gSElfTFRBQihodWZmX2x0YWI1XzZbdDArNF1bdDErNF0pOyAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sY29kZVdvcmQsY29kZUxlbmd0aCk7DQorICAgICAgfQ0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIENPREVfQk9PS182X05POg0KKyAgICAgIGZvcihpPTA7IGk8d2lkdGg7IGkrPTIpIHsNCisgICAgICAgIHQwICAgICAgICAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MSAgICAgICAgID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZVdvcmQgICA9IGh1ZmZfY3RhYjZbdDArNF1bdDErNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVMZW5ndGggPSBMT19MVEFCKGh1ZmZfbHRhYjVfNlt0MCs0XVt0MSs0XSk7ICAgICAgICAgICAgICAgICAgDQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxjb2RlV29yZCxjb2RlTGVuZ3RoKTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgQ09ERV9CT09LXzdfTk86DQorICAgICAgZm9yKGk9MDsgaTx3aWR0aDsgaSs9Mil7DQorICAgICAgICBzaWduPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgc2lnbkxlbmd0aD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQwID0gdmFsdWVzW2krMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MCAhPSAwKXsNCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOw0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyANCisgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MCA8IDApew0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MD0tdDA7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisNCisgICAgICAgIHQxID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MSAhPSAwKXsNCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOw0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyANCisgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MSA8IDApew0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MT0tdDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGNvZGVXb3JkICAgPSBodWZmX2N0YWI3W3QwXVt0MV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlTGVuZ3RoID0gSElfTFRBQihodWZmX2x0YWI3XzhbdDBdW3QxXSk7ICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sY29kZVdvcmQsY29kZUxlbmd0aCk7DQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxzaWduLHNpZ25MZW5ndGgpOw0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBDT0RFX0JPT0tfOF9OTzoNCisgICAgICBmb3IoaT0wOyBpPHdpZHRoOyBpKz0yKSB7DQorICAgICAgICBzaWduPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgc2lnbkxlbmd0aD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQwID0gdmFsdWVzW2krMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBpZih0MCAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgaWYodDAgPCAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDA9LXQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MSA9IHZhbHVlc1tpKzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgaWYodDEgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQxIDwgMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQxPS10MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZVdvcmQgICA9IGh1ZmZfY3RhYjhbdDBdW3QxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVMZW5ndGggPSBMT19MVEFCKGh1ZmZfbHRhYjdfOFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxjb2RlV29yZCxjb2RlTGVuZ3RoKTsNCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLHNpZ24sc2lnbkxlbmd0aCk7DQorICAgICAgfQ0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIENPREVfQk9PS185X05POg0KKyAgICAgIGZvcihpPTA7IGk8d2lkdGg7IGkrPTIpIHsNCisgICAgICAgIHNpZ249MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBzaWduTGVuZ3RoPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGlmKHQwICE9IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MCA8IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MD0tdDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQxID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBpZih0MSAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgaWYodDEgPCAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDE9LXQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlV29yZCAgID0gaHVmZl9jdGFiOVt0MF1bdDFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZUxlbmd0aCA9IEhJX0xUQUIoaHVmZl9sdGFiOV8xMFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOw0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sc2lnbixzaWduTGVuZ3RoKTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgQ09ERV9CT09LXzEwX05POg0KKyAgICAgIGZvcihpPTA7IGk8d2lkdGg7IGkrPTIpIHsNCisgICAgICAgIHNpZ249MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBzaWduTGVuZ3RoPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGlmKHQwICE9IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MCA8IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MD0tdDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQxID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBpZih0MSAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgaWYodDEgPCAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDE9LXQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlV29yZCAgID0gaHVmZl9jdGFiMTBbdDBdW3QxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZUxlbmd0aCA9IExPX0xUQUIoaHVmZl9sdGFiOV8xMFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOw0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sc2lnbixzaWduTGVuZ3RoKTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgQ09ERV9CT09LX0VTQ19OTzoNCisgICAgICBmb3IoaT0wOyBpPHdpZHRoOyBpKz0yKSB7DQorICAgICAgICBzaWduPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHNpZ25MZW5ndGg9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgaWYodDAgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MCA8IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQwPS10MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQxID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGlmKHQxICE9IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgaWYodDEgPCAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MT0tdDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQwMCA9IG1pbih0MCwxNik7DQorICAgICAgICB0MDEgPSBtaW4odDEsMTYpOw0KKw0KKyAgICAgICAgY29kZVdvcmQgICA9IGh1ZmZfY3RhYjExW3QwMF1bdDAxXTsgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlTGVuZ3RoID0gaHVmZl9sdGFiMTFbdDAwXVt0MDFdOyAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOw0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sc2lnbixzaWduTGVuZ3RoKTsNCisgICAgICAgICANCisgICAgICAgIGlmKHQwID49IDE2KXsNCisgICAgICAgICAgV29yZDE2IG4sIHA7DQorICAgICAgICAgIG49MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgcD10MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICB3aGlsZShzdWIocD0ocCA+PiAxKSwgMTYpID49IDApew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSwxLDEpOw0KKyAgICAgICAgICAgIG4gPSBuICsgMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSwwLDEpOw0KKyAgICAgICAgICBuID0gbiArIDQ7DQorICAgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLCh0MCAtICgxIDw8IG4pKSxuKTsNCisgICAgICAgIH0NCisgICAgICAgICANCisgICAgICAgIGlmKHQxID49IDE2KXsNCisgICAgICAgICAgV29yZDE2IG4sIHA7DQorICAgICAgICAgIG49MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgcD10MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICB3aGlsZShzdWIocD0ocCA+PiAxKSwgMTYpID49IDApew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSwxLDEpOw0KKyAgICAgICAgICAgIG4gPSBuICsgMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSwwLDEpOw0KKyAgICAgICAgICBuID0gbiArIDQ7DQorICAgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLCh0MSAtICgxIDw8IG4pKSxuKTsNCisgICAgICAgIH0NCisgICAgICB9DQorICAgICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgYnJlYWs7DQorICB9DQorICByZXR1cm4oMCk7DQorfQorCitXb3JkMTYgYml0Q291bnRTY2FsZWZhY3RvckRlbHRhKFdvcmQxNiBkZWx0YSkKK3sKKyAgcmV0dXJuKGh1ZmZfbHRhYnNjZltkZWx0YStDT0RFX0JPT0tfU0NGX0xBVl0pOworfQorCitXb3JkMTYgY29kZVNjYWxlZmFjdG9yRGVsdGEoV29yZDE2IGRlbHRhLCBIQU5ETEVfQklUX0JVRiBoQml0c3RyZWFtKQoreworICBXb3JkMzIgY29kZVdvcmQ7IAorICBXb3JkMTYgY29kZUxlbmd0aDsKKyAgCisgICAKKyAgaWYoZGVsdGEgPiBDT0RFX0JPT0tfU0NGX0xBViB8fCBkZWx0YSA8IC1DT0RFX0JPT0tfU0NGX0xBVikKKyAgICByZXR1cm4oMSk7CisgIAorICBjb2RlV29yZCAgID0gaHVmZl9jdGFic2NmW2RlbHRhICsgQ09ERV9CT09LX1NDRl9MQVZdOyAgICAgICAgICAgIAorICBjb2RlTGVuZ3RoID0gaHVmZl9sdGFic2NmW2RlbHRhICsgQ09ERV9CT09LX1NDRl9MQVZdOyAgICAgICAgICAgIAorICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxjb2RlV29yZCxjb2RlTGVuZ3RoKTsKKyAgcmV0dXJuKDApOworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYml0YnVmZmVyLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9iaXRidWZmZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjQ4ZjBiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYml0YnVmZmVyLmMKQEAgLTAsMCArMSwxNzIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJpdGJ1ZmZlci5jDQorDQorCUNvbnRlbnQ6CUJpdCBCdWZmZXIgTWFuYWdlbWVudCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYml0YnVmZmVyLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiB1cGRhdGVCaXRCdWZXb3JkUHRyCisqIGRlc2NyaXB0aW9uOiAgdXBkYXRlIEJpdCBCdWZmZXIgcG9pbnRlcgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCB1cGRhdGVCaXRCdWZXb3JkUHRyKEhBTkRMRV9CSVRfQlVGIGhCaXRCdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVXb3JkOCAqKnBCaXRCdWZXb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICBjbnQpCit7CisgICpwQml0QnVmV29yZCArPSBjbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaWYoKnBCaXRCdWZXb3JkID4gaEJpdEJ1Zi0+cEJpdEJ1ZkVuZCkgeworICAgICpwQml0QnVmV29yZCAtPSAoaEJpdEJ1Zi0+cEJpdEJ1ZkVuZCAtIGhCaXRCdWYtPnBCaXRCdWZCYXNlICsgMSk7ICAgICAgICAgICAgICAgICAgIAorICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlmKCpwQml0QnVmV29yZCA8IGhCaXRCdWYtPnBCaXRCdWZCYXNlKSB7CisgICAgKnBCaXRCdWZXb3JkICs9IChoQml0QnVmLT5wQml0QnVmRW5kIC0gaEJpdEJ1Zi0+cEJpdEJ1ZkJhc2UgKyAxKTsgICAgICAgICAgICAgICAgICAgCisgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQ3JlYXRlQml0QnVmZmVyCisqIGRlc2NyaXB0aW9uOiAgY3JlYXRlIGFuZCBpbml0IEJpdCBCdWZmZXIgTWFuYWdlbWVudAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitIQU5ETEVfQklUX0JVRiBDcmVhdGVCaXRCdWZmZXIoSEFORExFX0JJVF9CVUYgaEJpdEJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVV29yZDggKnBCaXRCdWZCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgYml0QnVmU2l6ZSkKK3sKKyAgYXNzZXJ0KGJpdEJ1ZlNpemUqOCA8PSAzMjc2OCk7CisKKyAgaEJpdEJ1Zi0+cEJpdEJ1ZkJhc2UgPSBwQml0QnVmQmFzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGhCaXRCdWYtPnBCaXRCdWZFbmQgID0gcEJpdEJ1ZkJhc2UgKyBiaXRCdWZTaXplIC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgaEJpdEJ1Zi0+cFdyaXRlTmV4dCAgPSBwQml0QnVmQmFzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgaEJpdEJ1Zi0+Y2FjaGUgICAgICAgPSAwOworICAKKyAgaEJpdEJ1Zi0+d0JpdFBvcyAgICAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGhCaXRCdWYtPmNudEJpdHMgICAgID0gMDsgICAKKyAgCisgIGhCaXRCdWYtPnNpemUgICAgICAgID0gKGJpdEJ1ZlNpemUgPDwgMyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGhCaXRCdWYtPmlzVmFsaWQgICAgID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHJldHVybiBoQml0QnVmOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogRGVsZXRlQml0QnVmZmVyCisqIGRlc2NyaXB0aW9uOiAgdW5pbml0IEJpdCBCdWZmZXIgTWFuYWdlbWVudAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIERlbGV0ZUJpdEJ1ZmZlcihIQU5ETEVfQklUX0JVRiAqaEJpdEJ1ZikKK3sKKyAgaWYoKmhCaXRCdWYpDQorCSgqaEJpdEJ1ZiktPmlzVmFsaWQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAqaEJpdEJ1ZiA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFJlc2V0Qml0QnVmCisqIGRlc2NyaXB0aW9uOiAgcmVzZXQgQml0IEJ1ZmZlciBNYW5hZ2VtZW50CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgUmVzZXRCaXRCdWYoSEFORExFX0JJVF9CVUYgaEJpdEJ1ZiwKKyAgICAgICAgICAgICAgICAgVVdvcmQ4ICpwQml0QnVmQmFzZSwKKyAgICAgICAgICAgICAgICAgV29yZDE2ICBiaXRCdWZTaXplKQoreworICBoQml0QnVmLT5wQml0QnVmQmFzZSA9IHBCaXRCdWZCYXNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaEJpdEJ1Zi0+cEJpdEJ1ZkVuZCAgPSBwQml0QnVmQmFzZSArIGJpdEJ1ZlNpemUgLSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBoQml0QnVmLT5wV3JpdGVOZXh0ICA9IHBCaXRCdWZCYXNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBoQml0QnVmLT53Qml0UG9zICAgICA9IDA7ICAgIAorICBoQml0QnVmLT5jbnRCaXRzICAgICA9IDA7ICAgIAorICAKKyAgaEJpdEJ1Zi0+Y2FjaGUJICAgPSAwOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQ29weUJpdEJ1ZgorKiBkZXNjcmlwdGlvbjogIGNvcHkgQml0IEJ1ZmZlciBNYW5hZ2VtZW50CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgQ29weUJpdEJ1ZihIQU5ETEVfQklUX0JVRiBoQml0QnVmU3JjLAorICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGIGhCaXRCdWZEc3QpCit7CisgICpoQml0QnVmRHN0ID0gKmhCaXRCdWZTcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogR2V0Qml0c0F2YWlsCisqIGRlc2NyaXB0aW9uOiAgZ2V0IGF2YWlsYWJsZSBiaXRzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBHZXRCaXRzQXZhaWwoSEFORExFX0JJVF9CVUYgaEJpdEJ1ZikKK3sKKyAgcmV0dXJuIGhCaXRCdWYtPmNudEJpdHM7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBXcml0ZUJpdHMKKyogZGVzY3JpcHRpb246ICB3cml0ZSBiaXRzIHRvIHRoZSBidWZmZXIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IFdyaXRlQml0cyhIQU5ETEVfQklUX0JVRiBoQml0QnVmLAorICAgICAgICAgICAgICAgICBXb3JkMzIgd3JpdGVWYWx1ZSwKKyAgICAgICAgICAgICAgICAgV29yZDE2IG5vQml0c1RvV3JpdGUpCit7CisgIFdvcmQxNiB3Qml0UG9zOworCisgIGFzc2VydChub0JpdHNUb1dyaXRlIDw9IChXb3JkMTYpc2l6ZW9mKFdvcmQzMikqOCk7CisKKyAgaWYobm9CaXRzVG9Xcml0ZSA9PSAwKQorCSAgcmV0dXJuIG5vQml0c1RvV3JpdGU7CisKKyAgaEJpdEJ1Zi0+Y250Qml0cyArPSBub0JpdHNUb1dyaXRlOyAgIAorCisgIHdCaXRQb3MgPSBoQml0QnVmLT53Qml0UG9zOworICB3Qml0UG9zICs9IG5vQml0c1RvV3JpdGU7CisgIHdyaXRlVmFsdWUgPDw9IDMyIC0gd0JpdFBvczsJCisgIHdyaXRlVmFsdWUgfD0gaEJpdEJ1Zi0+Y2FjaGU7CisgIAorICB3aGlsZSAod0JpdFBvcyA+PSA4KSAKKyAgeworCSAgVVdvcmQ4IHRtcDsKKwkgIHRtcCA9IChVV29yZDgpKCh3cml0ZVZhbHVlID4+IDI0KSAmIDB4RkYpOworCSAgCisJICAqaEJpdEJ1Zi0+cFdyaXRlTmV4dCsrID0gdG1wOwkJCisJICB3cml0ZVZhbHVlIDw8PSA4OworCSAgd0JpdFBvcyAtPSA4OworICB9CisgIAorICBoQml0QnVmLT53Qml0UG9zID0gd0JpdFBvczsKKyAgaEJpdEJ1Zi0+Y2FjaGUgPSB3cml0ZVZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICByZXR1cm4gbm9CaXRzVG9Xcml0ZTsKK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2JpdGVuYy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYml0ZW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg4YzJkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9iaXRlbmMuYwpAQCAtMCwwICsxLDY5MCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYml0ZW5jLmMNCisNCisJQ29udGVudDoJQml0c3RyZWFtIGVuY29kZXIgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJpdGVuYy5oIgorI2luY2x1ZGUgImJpdF9jbnQuaCIKKyNpbmNsdWRlICJkeW5fYml0cy5oIgorI2luY2x1ZGUgInFjX2RhdGEuaCIKKyNpbmNsdWRlICJpbnRlcmZhY2UuaCIKKworCitzdGF0aWMgY29uc3QgIFdvcmQxNiBnbG9iYWxHYWluT2Zmc2V0ID0gMTAwOworc3RhdGljIGNvbnN0ICBXb3JkMTYgaWNzUmVzZXJ2ZWRCaXQgICA9IDA7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGVuY29kZVNwZWN0cmFsRGF0YQorKiBkZXNjcmlwdGlvbjogIGVuY29kZSBzcGVjdHJhbCBkYXRhCisqIHJldHVybnM6ICAgICAgc3BlY3RyYWwgYml0cyB1c2VkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMzIgZW5jb2RlU3BlY3RyYWxEYXRhKFdvcmQxNiAgICAgICAgICAgICAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVElPTl9EQVRBICAgICAgICpzZWN0aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgICAqcXVhbnRTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGICAgICAgaEJpdFN0cmVhbSkKK3sKKyAgV29yZDE2IGksc2ZiOworICBXb3JkMTYgZGJnVmFsOworICBTRUNUSU9OX0lORk8qIHBzZWN0aW9uaW5mbzsKKyAgZGJnVmFsID0gR2V0Qml0c0F2YWlsKGhCaXRTdHJlYW0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IoaT0wOyBpPHNlY3Rpb25EYXRhLT5ub09mU2VjdGlvbnM7IGkrKykgeworICAgIHBzZWN0aW9uaW5mbyA9ICYoc2VjdGlvbkRhdGEtPnNlY3Rpb25JbmZvW2ldKTsNCisJLyoKKyAgICAgICBodWZmZW5jb2RlIHNwZWN0cmFsIGRhdGEgZm9yIHRoaXMgc2VjdGlvbgorICAgICovCisgICAgZm9yKHNmYj1wc2VjdGlvbmluZm8tPnNmYlN0YXJ0OworICAgICAgICBzZmI8cHNlY3Rpb25pbmZvLT5zZmJTdGFydCtwc2VjdGlvbmluZm8tPnNmYkNudDsKKyAgICAgICAgc2ZiKyspIHsKKyAgICAgIGNvZGVWYWx1ZXMocXVhbnRTcGVjdHJ1bStzZmJPZmZzZXRbc2ZiXSwKKyAgICAgICAgICAgICAgICAgc2ZiT2Zmc2V0W3NmYisxXSAtIHNmYk9mZnNldFtzZmJdLAorICAgICAgICAgICAgICAgICBwc2VjdGlvbmluZm8tPmNvZGVCb29rLAorICAgICAgICAgICAgICAgICBoQml0U3RyZWFtKTsKKyAgICB9CisgIH0KKworICByZXR1cm4oR2V0Qml0c0F2YWlsKGhCaXRTdHJlYW0pLWRiZ1ZhbCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOmVuY29kZUdsb2JhbEdhaW4KKyogZGVzY3JpcHRpb246IGVuY29kZXMgR2xvYmFsIEdhaW4gKGNvbW1vbiBzY2FsZSBmYWN0b3IpCisqIHJldHVybnM6ICAgICBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGVuY29kZUdsb2JhbEdhaW4oV29yZDE2IGdsb2JhbEdhaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBsb2dOb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc2NhbGVmYWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGIGhCaXRTdHJlYW0pCit7CisgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAoKGdsb2JhbEdhaW4gLSBzY2FsZWZhYykgKyBnbG9iYWxHYWluT2Zmc2V0LShsb2dOb3JtIDw8IDIpKSwgOCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6ZW5jb2RlSWNzSW5mbworKiBkZXNjcmlwdGlvbjogZW5jb2RlcyBJY3MgSW5mbworKiByZXR1cm5zOiAgICAgbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB2b2lkIGVuY29kZUljc0luZm8oV29yZDE2IGJsb2NrVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHdpbmRvd1NoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgZ3JvdXBpbmdNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUSU9OX0RBVEEgKnNlY3Rpb25EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfQklUX0JVRiAgaEJpdFN0cmVhbSkKK3sKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0saWNzUmVzZXJ2ZWRCaXQsMSk7CisgIFdyaXRlQml0cyhoQml0U3RyZWFtLGJsb2NrVHlwZSwyKTsKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sd2luZG93U2hhcGUsMSk7CisKKyAgIAorICBzd2l0Y2goYmxvY2tUeXBlKXsKKyAgICBjYXNlIExPTkdfV0lORE9XOgorICAgIGNhc2UgU1RBUlRfV0lORE9XOgorICAgIGNhc2UgU1RPUF9XSU5ET1c6CisgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxzZWN0aW9uRGF0YS0+bWF4U2ZiUGVyR3JvdXAsNik7CisKKyAgICAgIC8qIE5vIHByZWRpY3RvciBkYXRhIHByZXNlbnQgKi8KKyAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAwLCAxKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTSE9SVF9XSU5ET1c6CisgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxzZWN0aW9uRGF0YS0+bWF4U2ZiUGVyR3JvdXAsNCk7CisKKyAgICAgIC8qCisgICAgICBXcml0ZSBncm91cGluZyBiaXRzCisgICAgICAqLworICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sZ3JvdXBpbmdNYXNrLFRSQU5TX0ZBQy0xKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBlbmNvZGVTZWN0aW9uRGF0YQorKiBkZXNjcmlwdGlvbjogIGVuY29kZSBzZWN0aW9uIGRhdGEgKGNvbW1vbiBIdWZmbWFuIGNvZGVib29rcyBmb3IgYWRqYWNlbnQKKyogICAgICAgICAgICAgICBTRkIncykKKyogcmV0dXJuczogICAgICBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMzIgZW5jb2RlU2VjdGlvbkRhdGEoU0VDVElPTl9EQVRBICpzZWN0aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX0JJVF9CVUYgaEJpdFN0cmVhbSkKK3sKKyAgV29yZDE2IHNlY3RFc2NhcGVWYWw9MCxzZWN0TGVuQml0cz0wOworICBXb3JkMTYgc2VjdExlbjsKKyAgV29yZDE2IGk7CisgIFdvcmQxNiBkYmdWYWw9R2V0Qml0c0F2YWlsKGhCaXRTdHJlYW0pOworICAgICAgIAorCisgICAKKyAgc3dpdGNoKHNlY3Rpb25EYXRhLT5ibG9ja1R5cGUpCisgIHsKKyAgICBjYXNlIExPTkdfV0lORE9XOgorICAgIGNhc2UgU1RBUlRfV0lORE9XOgorICAgIGNhc2UgU1RPUF9XSU5ET1c6CisgICAgICBzZWN0RXNjYXBlVmFsID0gU0VDVF9FU0NfVkFMX0xPTkc7ICAgICAgICAgICAgICAgICAKKyAgICAgIHNlY3RMZW5CaXRzICAgPSBTRUNUX0JJVFNfTE9ORzsgICAgICAgICAgICAgICAgICAgIAorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNIT1JUX1dJTkRPVzoKKyAgICAgIHNlY3RFc2NhcGVWYWwgPSBTRUNUX0VTQ19WQUxfU0hPUlQ7ICAgICAgICAgICAgICAgIAorICAgICAgc2VjdExlbkJpdHMgICA9IFNFQ1RfQklUU19TSE9SVDsgICAgICAgICAgICAgICAgICAgCisgICAgICBicmVhazsKKyAgfQorCisgIGZvcihpPTA7aTxzZWN0aW9uRGF0YS0+bm9PZlNlY3Rpb25zO2krKykgeworICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLHNlY3Rpb25EYXRhLT5zZWN0aW9uSW5mb1tpXS5jb2RlQm9vayw0KTsKKyAgICBzZWN0TGVuID0gc2VjdGlvbkRhdGEtPnNlY3Rpb25JbmZvW2ldLnNmYkNudDsgICAgICAgIAorCisgICAgd2hpbGUoc2VjdExlbiA+PSBzZWN0RXNjYXBlVmFsKSB7CisgICAgICAgCisgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxzZWN0RXNjYXBlVmFsLHNlY3RMZW5CaXRzKTsKKyAgICAgIHNlY3RMZW4gPSBzZWN0TGVuIC0gc2VjdEVzY2FwZVZhbDsKKyAgICB9CisgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sc2VjdExlbixzZWN0TGVuQml0cyk7CisgIH0KKyAgcmV0dXJuKEdldEJpdHNBdmFpbChoQml0U3RyZWFtKS1kYmdWYWwpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogZW5jb2RlU2NhbGVGYWN0b3JEYXRhCisqIGRlc2NyaXB0aW9uOiAgZW5jb2RlIERQQ00gY29kZWQgc2NhbGUgZmFjdG9ycworKiByZXR1cm5zOiAgICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQzMiBlbmNvZGVTY2FsZUZhY3RvckRhdGEoVVdvcmQxNiAgICAgICAgKm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUSU9OX0RBVEEgICAqc2VjdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAqc2NhbGVmYWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfQklUX0JVRiAgaEJpdFN0cmVhbSkKK3sKKyAgV29yZDE2IGksaixsYXN0VmFsU2NmLGRlbHRhU2NmOworICBXb3JkMTYgZGJnVmFsID0gR2V0Qml0c0F2YWlsKGhCaXRTdHJlYW0pOworICBTRUNUSU9OX0lORk8qIHBzZWN0aW9uaW5mbzsgCisKKyAgbGFzdFZhbFNjZj1zY2FsZWZhY1tzZWN0aW9uRGF0YS0+Zmlyc3RTY2ZdOyAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yKGk9MDtpPHNlY3Rpb25EYXRhLT5ub09mU2VjdGlvbnM7aSsrKXsKKyAgICBwc2VjdGlvbmluZm8gPSAmKHNlY3Rpb25EYXRhLT5zZWN0aW9uSW5mb1tpXSk7IAorICAgIGlmIChwc2VjdGlvbmluZm8tPmNvZGVCb29rICE9IENPREVfQk9PS19aRVJPX05PKXsKKyAgICAgIGZvciAoaj1wc2VjdGlvbmluZm8tPnNmYlN0YXJ0OworICAgICAgICAgICBqPHBzZWN0aW9uaW5mby0+c2ZiU3RhcnQrcHNlY3Rpb25pbmZvLT5zZmJDbnQ7IGorKyl7CisgICAgICAgICAKKyAgICAgICAgaWYobWF4VmFsdWVJblNmYltqXSA9PSAwKSB7CisgICAgICAgICAgZGVsdGFTY2YgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGRlbHRhU2NmID0gbGFzdFZhbFNjZiAtIHNjYWxlZmFjW2pdOworICAgICAgICAgIGxhc3RWYWxTY2YgPSBzY2FsZWZhY1tqXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAgCisgICAgICAgIGlmKGNvZGVTY2FsZWZhY3RvckRlbHRhKGRlbHRhU2NmLGhCaXRTdHJlYW0pKXsKKyAgICAgICAgICByZXR1cm4oMSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgfQorICByZXR1cm4oR2V0Qml0c0F2YWlsKGhCaXRTdHJlYW0pLWRiZ1ZhbCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOmVuY29kZU1zSW5mbworKiBkZXNjcmlwdGlvbjogZW5jb2RlcyBNUy1TdGVyZW8gSW5mbworKiByZXR1cm5zOiAgICAgbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBlbmNvZGVNU0luZm8oV29yZDE2ICAgICAgICAgIHNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgZ3JwU2ZiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICBtYXhTZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgIG1zRGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICpqc0ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGICBoQml0U3RyZWFtKQoreworICBXb3JkMTYgc2ZiLCBzZmJPZmY7CisKKyAgIAorICBzd2l0Y2gobXNEaWdlc3QpCisgIHsKKyAgICBjYXNlIE1TX05PTkU6CisgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxTSV9NU19NQVNLX05PTkUsMik7CisgICAgICBicmVhazsKKworICAgIGNhc2UgTVNfQUxMOgorICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sU0lfTVNfTUFTS19BTEwsMik7CisgICAgICBicmVhazsKKworICAgIGNhc2UgTVNfU09NRToKKyAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLFNJX01TX01BU0tfU09NRSwyKTsKKyAgICAgIGZvcihzZmJPZmYgPSAwOyBzZmJPZmYgPCBzZmJDbnQ7IHNmYk9mZis9Z3JwU2ZiKSB7CisgICAgICAgIGZvcihzZmI9MDsgc2ZiPG1heFNmYjsgc2ZiKyspIHsKKyAgICAgICAgICAgICAKKyAgICAgICAgICBpZihqc0ZsYWdzW3NmYk9mZitzZmJdICYgTVNfT04pIHsKKyAgICAgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLDEsMSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwwLDEpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgIH0KKworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogZW5jb2RlVG5zRGF0YQorKiBkZXNjcmlwdGlvbjogIGVuY29kZSBUTlMgZGF0YSAoZmlsdGVyIG9yZGVyLCBjb2VmZnMsIC4uKQorKiByZXR1cm5zOiAgICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgZW5jb2RlVG5zRGF0YShUTlNfSU5GTyB0bnNJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYmxvY2tUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfQklUX0JVRiBoQml0U3RyZWFtKSB7CisgIFdvcmQxNiBpLGs7CisgIEZsYWcgdG5zUHJlc2VudDsKKyAgV29yZDE2IG51bU9mV2luZG93czsKKyAgV29yZDE2IGNvZWZCaXRzOworICBGbGFnIGlzU2hvcnQ7CisKKyAgICAgICAKKyAgaWYgKGJsb2NrVHlwZT09MikgeworICAgIGlzU2hvcnQgPSAxOworICAgIG51bU9mV2luZG93cyA9IFRSQU5TX0ZBQzsKKyAgfQorICBlbHNlIHsKKyAgICBpc1Nob3J0ID0gMDsKKyAgICBudW1PZldpbmRvd3MgPSAxOworICB9CisKKyAgdG5zUHJlc2VudD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGZvciAoaT0wOyBpPG51bU9mV2luZG93czsgaSsrKSB7CisgICAgIAorICAgIGlmICh0bnNJbmZvLnRuc0FjdGl2ZVtpXSkgeworICAgICAgdG5zUHJlc2VudD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgIAorICBpZiAodG5zUHJlc2VudD09MCkgeworICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLDAsMSk7CisgIH0KKyAgZWxzZXsgLyogdGhlcmUgaXMgZGF0YSB0byBiZSB3cml0dGVuKi8KKyAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwxLDEpOyAvKmRhdGFfcHJlc2VudCAqLworICAgIGZvciAoaT0wOyBpPG51bU9mV2luZG93czsgaSsrKSB7CisgICAgICAgCisgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSx0bnNJbmZvLnRuc0FjdGl2ZVtpXSwoaXNTaG9ydD8xOjIpKTsKKyAgICAgICAKKyAgICAgIGlmICh0bnNJbmZvLnRuc0FjdGl2ZVtpXSkgeworICAgICAgICAgCisgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLCgodG5zSW5mby5jb2VmUmVzW2ldIC0gNCk9PTA/MTowKSwxKTsKKyAgICAgICAgIAorICAgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSx0bnNJbmZvLmxlbmd0aFtpXSwoaXNTaG9ydD80OjYpKTsKKyAgICAgICAgIAorICAgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSx0bnNJbmZvLm9yZGVyW2ldLChpc1Nob3J0PzM6NSkpOworICAgICAgICAgCisgICAgICAgIGlmICh0bnNJbmZvLm9yZGVyW2ldKXsKKyAgICAgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgRklMVEVSX0RJUkVDVElPTiwgMSk7CisgICAgICAgICAgIAorICAgICAgICAgIGlmKHRuc0luZm8uY29lZlJlc1tpXSA9PSA0KSB7CisgICAgICAgICAgICBjb2VmQml0cyA9IDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBmb3Ioaz0wOyBrPHRuc0luZm8ub3JkZXJbaV07IGsrKykgeworICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgaWYgKHRuc0luZm8uY29lZltpKlROU19NQVhfT1JERVJfU0hPUlQra10gPiAzIHx8CisgICAgICAgICAgICAgICAgICB0bnNJbmZvLmNvZWZbaSpUTlNfTUFYX09SREVSX1NIT1JUK2tdIDwgLTQpIHsKKyAgICAgICAgICAgICAgICBjb2VmQml0cyA9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvZWZCaXRzID0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvcihrPTA7IGs8dG5zSW5mby5vcmRlcltpXTsgaysrKSB7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBpZiAodG5zSW5mby5jb2VmW2kqVE5TX01BWF9PUkRFUl9TSE9SVCtrXSA+IDEgfHwKKyAgICAgICAgICAgICAgICAgIHRuc0luZm8uY29lZltpKlROU19NQVhfT1JERVJfU0hPUlQra10gPCAtMikgeworICAgICAgICAgICAgICAgIGNvZWZCaXRzID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLCB0bnNJbmZvLmNvZWZSZXNbaV0gLSBjb2VmQml0cywgMSk7IC8qY29lZl9jb21wcmVzKi8KKyAgICAgICAgICBmb3IgKGs9MDsgazx0bnNJbmZvLm9yZGVyW2ldOyBrKysgKSB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgV29yZDE2IHJtYXNrW10gPSB7MCwxLDMsNywxNX07CisgICAgICAgICAgICAgCisgICAgICAgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSx0bnNJbmZvLmNvZWZbaSpUTlNfTUFYX09SREVSX1NIT1JUK2tdICYgcm1hc2tbY29lZkJpdHNdLGNvZWZCaXRzKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogZW5jb2RlR2FpbkNvbnRyb2xEYXRhCisqIGRlc2NyaXB0aW9uOiAgdW5zdXBwb3J0ZWQKKyogcmV0dXJuczogICAgICBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGVuY29kZUdhaW5Db250cm9sRGF0YShIQU5ETEVfQklUX0JVRiBoQml0U3RyZWFtKQoreworICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwwLDEpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogZW5jb2RlUHVsc2VEYXRhCisqIGRlc2NyaXB0aW9uOiAgbm90IHN1cHBvcnRlZCB5ZXQgKGR1bW15KQorKiByZXR1cm5zOiAgICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgZW5jb2RlUHVsc2VEYXRhKEhBTkRMRV9CSVRfQlVGIGhCaXRTdHJlYW0pCit7CisgIFdyaXRlQml0cyhoQml0U3RyZWFtLDAsMSk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFdyaXRlSW5kaXZpZHVhbENoYW5uZWxTdHJlYW0KKyogZGVzY3JpcHRpb246ICBtYW5hZ2VtZW50IG9mIHdyaXRlIHByb2Nlc3Mgb2YgaW5kaXZpZHVhbCBjaGFubmVsIHN0cmVhbQorKiByZXR1cm5zOiAgICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQKK3dyaXRlSW5kaXZpZHVhbENoYW5uZWxTdHJlYW0oRmxhZyAgIGNvbW1vbldpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHdpbmRvd1NoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgZ3JvdXBpbmdNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHNjZltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVV29yZDE2ICptYXhWYWx1ZUluU2ZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgZ2xvYmFsR2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHF1YW50U3BlY1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUSU9OX0RBVEEgKnNlY3Rpb25EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfQklUX0JVRiBoQml0U3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfSU5GTyB0bnNJbmZvKQoreworICBXb3JkMTYgbG9nTm9ybTsKKworICBsb2dOb3JtID0gTE9HX05PUk1fUENNIC0gKG1kY3RTY2FsZSArIDEpOworCisgIGVuY29kZUdsb2JhbEdhaW4oZ2xvYmFsR2FpbiwgbG9nTm9ybSxzY2Zbc2VjdGlvbkRhdGEtPmZpcnN0U2NmXSwgaEJpdFN0cmVhbSk7CisKKyAgIAorICBpZighY29tbW9uV2luZG93KSB7CisgICAgZW5jb2RlSWNzSW5mbyhzZWN0aW9uRGF0YS0+YmxvY2tUeXBlLCB3aW5kb3dTaGFwZSwgZ3JvdXBpbmdNYXNrLCBzZWN0aW9uRGF0YSwgaEJpdFN0cmVhbSk7CisgIH0KKworICBlbmNvZGVTZWN0aW9uRGF0YShzZWN0aW9uRGF0YSwgaEJpdFN0cmVhbSk7CisKKyAgZW5jb2RlU2NhbGVGYWN0b3JEYXRhKG1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0pOworCisgIGVuY29kZVB1bHNlRGF0YShoQml0U3RyZWFtKTsKKworICBlbmNvZGVUbnNEYXRhKHRuc0luZm8sIHNlY3Rpb25EYXRhLT5ibG9ja1R5cGUsIGhCaXRTdHJlYW0pOworCisgIGVuY29kZUdhaW5Db250cm9sRGF0YShoQml0U3RyZWFtKTsKKworICBlbmNvZGVTcGVjdHJhbERhdGEoc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgICAgICBxdWFudFNwZWMsCisgICAgICAgICAgICAgICAgICAgICBoQml0U3RyZWFtKTsKKworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogd3JpdGVTaW5nbGVDaGFubmVsRWxlbWVudAorKiBkZXNjcmlwdGlvbjogIHdyaXRlIHNpbmdsZSBjaGFubmVsIGVsZW1lbnQgdG8gYml0c3RyZWFtCisqIHJldHVybnM6ICAgICAgbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IHdyaXRlU2luZ2xlQ2hhbm5lbEVsZW1lbnQoV29yZDE2IGluc3RhbmNlVGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDX09VVF9DSEFOTkVMKiBxY091dENoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX0JJVF9CVUYgaEJpdFN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfSU5GTyB0bnNJbmZvKQoreworICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxJRF9TQ0UsMyk7CisgIFdyaXRlQml0cyhoQml0U3RyZWFtLGluc3RhbmNlVGFnLDQpOworICB3cml0ZUluZGl2aWR1YWxDaGFubmVsU3RyZWFtKDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsLT5tZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsLT53aW5kb3dTaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWwtPmdyb3VwaW5nTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsLT5zY2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsLT5tYXhWYWx1ZUluU2ZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbC0+Z2xvYmFsR2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWwtPnF1YW50U3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHFjT3V0Q2hhbm5lbC0+c2VjdGlvbkRhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5zSW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgIHJldHVybigwKTsKK30KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiB3cml0ZUNoYW5uZWxQYWlyRWxlbWVudAorKiBkZXNjcmlwdGlvbjoKKyogcmV0dXJuczogICAgICBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgd3JpdGVDaGFubmVsUGFpckVsZW1lbnQoV29yZDE2IGluc3RhbmNlVGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbXNEaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBtc0ZsYWdzW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiT2Zmc2V0WzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ19PVVRfQ0hBTk5FTCBxY091dENoYW5uZWxbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGIGhCaXRTdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFROU19JTkZPIHRuc0luZm9bMl0pCit7CisgIFdyaXRlQml0cyhoQml0U3RyZWFtLElEX0NQRSwzKTsKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0saW5zdGFuY2VUYWcsNCk7CisgIFdyaXRlQml0cyhoQml0U3RyZWFtLDEsMSk7IC8qIGNvbW1vbiB3aW5kb3cgKi8KKworICBlbmNvZGVJY3NJbmZvKHFjT3V0Q2hhbm5lbFswXS5zZWN0aW9uRGF0YS5ibG9ja1R5cGUsCisgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLndpbmRvd1NoYXBlLAorICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFswXS5ncm91cGluZ01hc2ssCisgICAgICAgICAgICAgICAgJihxY091dENoYW5uZWxbMF0uc2VjdGlvbkRhdGEpLAorICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0pOworCisgIGVuY29kZU1TSW5mbyhxY091dENoYW5uZWxbMF0uc2VjdGlvbkRhdGEuc2ZiQ250LAorICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLnNlY3Rpb25EYXRhLnNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLnNlY3Rpb25EYXRhLm1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgbXNEaWdlc3QsCisgICAgICAgICAgICAgICBtc0ZsYWdzLAorICAgICAgICAgICAgICAgaEJpdFN0cmVhbSk7CisKKyAgd3JpdGVJbmRpdmlkdWFsQ2hhbm5lbFN0cmVhbSgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFswXS5tZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLndpbmRvd1NoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFswXS5ncm91cGluZ01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZiT2Zmc2V0WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFswXS5zY2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLmdsb2JhbEdhaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLnF1YW50U3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHFjT3V0Q2hhbm5lbFswXS5zZWN0aW9uRGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaEJpdFN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bnNJbmZvWzBdKTsKKworICB3cml0ZUluZGl2aWR1YWxDaGFubmVsU3RyZWFtKDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzFdLm1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMV0ud2luZG93U2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzFdLmdyb3VwaW5nTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZmJPZmZzZXRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzFdLnNjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMV0ubWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMV0uZ2xvYmFsR2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMV0ucXVhbnRTcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYocWNPdXRDaGFubmVsWzFdLnNlY3Rpb25EYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoQml0U3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuc0luZm9bMV0pOworCisgIHJldHVybigwKTsKK30KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiB3cml0ZUZpbGxFbGVtZW50CisqIGRlc2NyaXB0aW9uOiAgd3JpdGUgZmlsbCBlbGVtZW50cyB0byBiaXRzdHJlYW0KKyogcmV0dXJuczogICAgICBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIHdyaXRlRmlsbEVsZW1lbnQoIGNvbnN0IFVXb3JkOCAqYW5jQnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgdG90RmlsbEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfQklUX0JVRiBoQml0U3RyZWFtKQoreworICBXb3JkMTYgaTsKKyAgV29yZDE2IGNudCxlc2NfY291bnQ7CisKKyAgLyoKKyAgICBXcml0ZSBmaWxsIEVsZW1lbnQocyk6CisgICAgYW1vdW50IG9mIGEgZmlsbCBlbGVtZW50IGNhbiBiZSA3K1gqOCBCaXRzLCBYIGVsZW1lbnQgb2YgWzAuLjI3MF0KKyAgKi8KKyAgICAKKyAgd2hpbGUodG90RmlsbEJpdHMgPj0gKDMrNCkpIHsKKyAgICBjbnQgPSBtaW4oKCh0b3RGaWxsQml0cyAtICgzKzQpKSA+PiAzKSwgKCgxPDw0KS0xKSk7CisKKyAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxJRF9GSUwsMyk7CisgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sY250LDQpOworCisgICAgdG90RmlsbEJpdHMgPSB0b3RGaWxsQml0cyAtICgzKzQpOworCisgICAgIAorICAgIGlmICgoY250ID09ICgxPDw0KS0xKSkgeworCisgICAgICBlc2NfY291bnQgPSBtaW4oICgodG90RmlsbEJpdHMgPj4gMykgLSAoKDE8PDQpLTEpKSwgKDE8PDgpLTEpOworICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sZXNjX2NvdW50LDgpOworICAgICAgdG90RmlsbEJpdHMgPSAodG90RmlsbEJpdHMgLSA4KTsKKyAgICAgIGNudCA9IGNudCArIChlc2NfY291bnQgLSAxKTsKKyAgICB9CisKKyAgICBmb3IoaT0wO2k8Y250O2krKykgeworICAgICAgIAorICAgICAgaWYoYW5jQnl0ZXMpCisgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAqYW5jQnl0ZXMrKyw4KTsKKyAgICAgIGVsc2UKKyAgICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sMCw4KTsKKyAgICAgIHRvdEZpbGxCaXRzID0gdG90RmlsbEJpdHMgLSA4OworICAgIH0KKyAgfQorfQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFdyaXRlQml0U3RyZWFtCisqIGRlc2NyaXB0aW9uOiAgbWFpbiBmdW5jdGlvbiBvZiB3cml0ZSBiaXRzdGVhbSBwcm9jZXNzCisqIHJldHVybnM6ICAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBXcml0ZUJpdHN0cmVhbSAoSEFORExFX0JJVF9CVUYgaEJpdFN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgRUxFTUVOVF9JTkZPIGVsSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgUUNfT1VUICpxY091dCwKKyAgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVCAqcHN5T3V0LAorICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKmdsb2JVc2VkQml0cywJCQkJCSAgIAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVV29yZDggKmFuY0J5dGVzLA0KKwkJCQkJICAgV29yZDE2IHNhbXBpbmRleAorICAgICAgICAgICAgICAgICAgICAgICApIC8qIHJldHVybnMgZXJyb3IgY29kZSAqLworeworICBXb3JkMTYgYml0TWFya1VwOworICBXb3JkMTYgZWxlbWVudFVzZWRCaXRzOworICBXb3JkMTYgZnJhbWVCaXRzPTA7DQorDQorICAvKiAgIHN0cnVjdCBiaXRidWZmZXIgYnNXcml0ZUNvcHk7ICovDQorICBiaXRNYXJrVXAgPSBHZXRCaXRzQXZhaWwoaEJpdFN0cmVhbSk7IA0KKyAgaWYocWNPdXQtPnFjRWxlbWVudC5hZHRzVXNlZCkgIC8qICB3cml0ZSBhZHRzIGhlYWRlciovDQorICB7DQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDB4RkZGLCAxMik7IC8qIDEyIGJpdCBTeW5jd29yZCAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAxLCAxKTsgLyogSUQgPT0gMCBmb3IgTVBFRzQgQUFDLCAxIGZvciBNUEVHMiBBQUMgKi8NCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgMCwgMik7IC8qIGxheWVyID09IDAgKi8NCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgMSwgMSk7IC8qIHByb3RlY3Rpb24gYWJzZW50ICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDEsIDIpOyAvKiBwcm9maWxlICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIHNhbXBpbmRleCwgNCk7IC8qIHNhbXBsaW5nIHJhdGUgKi8NCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgMCwgMSk7IC8qIHByaXZhdGUgYml0ICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIGVsSW5mby5uQ2hhbm5lbHNJbkVsLCAzKTsgLyogY2guIGNvbmZpZyAobXVzdCBiZSA+IDApICovDQorCQkJCQkJCQkgICAvKiBzaW1wbHkgdXNpbmcgbnVtQ2hhbm5lbHMgb25seSB3b3JrcyBmb3INCisJCQkJCQkJCQk2IGNoYW5uZWxzIG9yIGxlc3MsIGVsc2UgYSBjaGFubmVsDQorCQkJCQkJCQkJY29uZmlndXJhdGlvbiBzaG91bGQgYmUgd3JpdHRlbiAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAwLCAxKTsgLyogb3JpZ2luYWwvY29weSAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAwLCAxKTsgLyogaG9tZSAqLwkgIA0KKwkgIA0KKwkgIC8qIFZhcmlhYmxlIEFEVFMgaGVhZGVyICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDAsIDEpOyAvKiBjb3B5ci4gaWQuIGJpdCAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAwLCAxKTsgLyogY29weXIuIGlkLiBzdGFydCAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAqZ2xvYlVzZWRCaXRzID4+IDMsIDEzKTsNCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgMHg3RkYsIDExKTsgLyogYnVmZmVyIGZ1bGxuZXNzICgweDdGRiBmb3IgVkJSKSAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAwLCAyKTsgLyogcmF3IGRhdGEgYmxvY2tzICgwKzE9MSkgKi8gIA0KKyAgfQ0KKworICAqZ2xvYlVzZWRCaXRzPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICB7CisKKyAgICBXb3JkMTYgKnNmYk9mZnNldFsyXTsKKyAgICBUTlNfSU5GTyB0bnNJbmZvWzJdOworICAgIGVsZW1lbnRVc2VkQml0cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgIHN3aXRjaCAoZWxJbmZvLmVsVHlwZSkgeworCisgICAgICBjYXNlIElEX1NDRTogICAgICAvKiBzaW5nbGUgY2hhbm5lbCAqLworICAgICAgICBzZmJPZmZzZXRbMF0gPSBwc3lPdXQtPnBzeU91dENoYW5uZWxbZWxJbmZvLkNoYW5uZWxJbmRleFswXV0uc2ZiT2Zmc2V0czsKKyAgICAgICAgdG5zSW5mb1swXSA9IHBzeU91dC0+cHN5T3V0Q2hhbm5lbFtlbEluZm8uQ2hhbm5lbEluZGV4WzBdXS50bnNJbmZvOworCisgICAgICAgIHdyaXRlU2luZ2xlQ2hhbm5lbEVsZW1lbnQoZWxJbmZvLmluc3RhbmNlVGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmYk9mZnNldFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcWNPdXQtPnFjQ2hhbm5lbFtlbEluZm8uQ2hhbm5lbEluZGV4WzBdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoQml0U3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuc0luZm9bMF0pOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBJRF9DUEU6ICAgICAvKiBjaGFubmVsIHBhaXIgKi8KKyAgICAgICAgeworICAgICAgICAgIFdvcmQxNiBtc0RpZ2VzdDsKKyAgICAgICAgICBXb3JkMTYgKm1zRmxhZ3MgPSBwc3lPdXQtPnBzeU91dEVsZW1lbnQudG9vbHNJbmZvLm1zTWFzazsKKyAgICAgICAgICBtc0RpZ2VzdCA9IHBzeU91dC0+cHN5T3V0RWxlbWVudC50b29sc0luZm8ubXNEaWdlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgc2ZiT2Zmc2V0WzBdID0KKyAgICAgICAgICAgIHBzeU91dC0+cHN5T3V0Q2hhbm5lbFtlbEluZm8uQ2hhbm5lbEluZGV4WzBdXS5zZmJPZmZzZXRzOworICAgICAgICAgIHNmYk9mZnNldFsxXSA9CisgICAgICAgICAgICBwc3lPdXQtPnBzeU91dENoYW5uZWxbZWxJbmZvLkNoYW5uZWxJbmRleFsxXV0uc2ZiT2Zmc2V0czsKKworICAgICAgICAgIHRuc0luZm9bMF09CisgICAgICAgICAgICBwc3lPdXQtPnBzeU91dENoYW5uZWxbZWxJbmZvLkNoYW5uZWxJbmRleFswXV0udG5zSW5mbzsKKyAgICAgICAgICB0bnNJbmZvWzFdPQorICAgICAgICAgICAgcHN5T3V0LT5wc3lPdXRDaGFubmVsW2VsSW5mby5DaGFubmVsSW5kZXhbMV1dLnRuc0luZm87CisgICAgICAgICAgd3JpdGVDaGFubmVsUGFpckVsZW1lbnQoZWxJbmZvLmluc3RhbmNlVGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zRGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zRmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxY091dC0+cWNDaGFubmVsW2VsSW5mby5DaGFubmVsSW5kZXhbMF1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5zSW5mbyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybigxKTsKKworICAgICAgfSAgIC8qIHN3aXRjaCAqLworCisgICAgZWxlbWVudFVzZWRCaXRzID0gZWxlbWVudFVzZWRCaXRzIC0gYml0TWFya1VwOworICAgIGJpdE1hcmtVcCA9IEdldEJpdHNBdmFpbChoQml0U3RyZWFtKTsKKyAgICBmcmFtZUJpdHMgPSBmcmFtZUJpdHMgKyBlbGVtZW50VXNlZEJpdHMgKyBiaXRNYXJrVXA7CisKKyAgfQorCisgIHdyaXRlRmlsbEVsZW1lbnQoTlVMTCwKKyAgICAgICAgICAgICAgICAgICBxY091dC0+dG90RmlsbEJpdHMsIAorICAgICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0pOworCisgIFdyaXRlQml0cyhoQml0U3RyZWFtLElEX0VORCwzKTsKKworICAvKiBieXRlIGFsaWduZW1lbnQgKi8KKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sMCwgKDggLSAoaEJpdFN0cmVhbS0+Y250Qml0cyAmIDcpKSAmIDcpOyAgICAgICAgICAKKyAgCisgICpnbG9iVXNlZEJpdHMgPSAqZ2xvYlVzZWRCaXRzLSBiaXRNYXJrVXA7CisgIGJpdE1hcmtVcCA9IEdldEJpdHNBdmFpbChoQml0U3RyZWFtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICpnbG9iVXNlZEJpdHMgPSAqZ2xvYlVzZWRCaXRzICsgYml0TWFya1VwOworICBmcmFtZUJpdHMgPSBmcmFtZUJpdHMgKyAqZ2xvYlVzZWRCaXRzOworCisgICAKKyAgaWYgKGZyYW1lQml0cyAhPSAgKHFjT3V0LT50b3RTdGF0aWNCaXRzVXNlZCtxY091dC0+dG90RHluQml0c1VzZWQgKyBxY091dC0+dG90QW5jQml0c1VzZWQgKworICAgICAgICAgICAgICAgICAgICAgcWNPdXQtPnRvdEZpbGxCaXRzICsgcWNPdXQtPmFsaWduQml0cykpIHsKKyAgICByZXR1cm4oLTEpOworICB9CisgIHJldHVybigwKTsKK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2Jsb2NrX3N3aXRjaC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYmxvY2tfc3dpdGNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAwNTRmNwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2Jsb2NrX3N3aXRjaC5jCkBAIC0wLDAgKzEsNDMxIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlibG9ja19zd2l0Y2guYw0KKw0KKwlDb250ZW50OglCbG9jayBzd2l0Y2hpbmcgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCIKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJibG9ja19zd2l0Y2guaCIKKworCisjZGVmaW5lIEVORVJHWV9TSElGVCAoOCAtIDEpCisKKy8qKioqKioqKioqKioqKioqIGludGVybmFsIGZ1bmN0aW9uIHByb3RvdHlwZXMgKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2CitJSVJGaWx0ZXIoY29uc3QgV29yZDE2IGluLCBjb25zdCBXb3JkMzIgY29lZmZbXSwgV29yZDMyIHN0YXRlc1tdKTsKKworc3RhdGljIFdvcmQzMgorU3JjaE1heFdpdGhJbmRleChjb25zdCBXb3JkMzIgKmluLCBXb3JkMTYgKmluZGV4LCBXb3JkMTYgbik7CisKKworV29yZDMyCitDYWxjV2luZG93RW5lcmd5KEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2wsCisgICAgICAgICAgICAgICAgIFdvcmQxNiAqdGltZVNpZ25hbCwKKyAgICAgICAgICAgICAgICAgV29yZDE2IGNoSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICBXb3JkMTYgd2luZG93TGVuKTsKKworCisKKy8qKioqKioqKioqKioqKioqKiogQ29uc3RhbnRzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qCisgIElJUiBoaWdoIHBhc3MgY29lZmZzCisqLworV29yZDMyIGhpUGFzc0NvZWZmW0JMT0NLX1NXSVRDSElOR19JSVJfTEVOXSA9IHsKKyAgMHhiZWM4YjQzOSwgMHg2MDlkNDk1MiAgLyogLTAuNTA5NWYsIDAuNzU0OGYgKi8gCit9OworCitzdGF0aWMgY29uc3QgV29yZDMyIGFjY1dpbmRvd05yZ0ZhYyA9IDB4MjY2NjY2NjY7ICAgICAgICAgICAgICAgICAgIC8qIGZhY3RvciBmb3IgYWNjdW11bGF0aW5nIGZpbHRlcmVkIHdpbmRvdyBlbmVyZ2llcyAwLjMgKi8KK3N0YXRpYyBjb25zdCBXb3JkMzIgb25lTWludXNBY2NXaW5kb3dOcmdGYWMgPSAweDU5OTk5OTlhOwkJCS8qIDAuNyAqLworc3RhdGljIGNvbnN0IFdvcmQzMiBpbnZBdHRhY2tSYXRpb0hpZ2hCciA9IDB4MGNjY2NjY2Q7ICAgICAgICAgICAgICAvKiBpbnZlcnRlZCBsb3dlciByYXRpbyBsaW1pdCBmb3IgYXR0YWNrcyAwLjEqLworc3RhdGljIGNvbnN0IFdvcmQzMiBpbnZBdHRhY2tSYXRpb0xvd0JyID0gIDB4MDcyYjAyMGM7ICAgICAgICAgICAgICAvKiAwLjA1NiAqLworc3RhdGljIGNvbnN0IFdvcmQzMiBtaW5BdHRhY2tOcmcgPSAweDAwMDAxZTg0OyAgICAgICAgICAgICAgICAgICAgICAvKiBtaW5pbXVtIGVuZXJneSBmb3IgYXR0YWNrcyAxZSs2ICovCisKKworLyoqKioqKioqKioqKioqKioqKiBSb3V0aW5lcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBJbml0QmxvY2tTd2l0Y2hpbmcKKyogZGVzY3JpcHRpb246ICBpbml0IEJsb2NrIFN3aXRjaGluZyBwYXJhbWV0ZXIuCisqIHJldHVybnM6ICAgICAgVFJVRSBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IEluaXRCbG9ja1N3aXRjaGluZyhCTE9DS19TV0lUQ0hJTkdfQ09OVFJPTCAqYmxvY2tTd2l0Y2hpbmdDb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgYml0UmF0ZSwgY29uc3QgV29yZDE2IG5DaGFubmVscykKK3sKKyAgLyogc2VsZWN0IGF0dGFja1JhdGlvICovCisgICAgICAgICAgIAorICBpZiAoKHN1YihuQ2hhbm5lbHMsMSk9PTAgJiYgTF9zdWIoYml0UmF0ZSwgMjQwMDApID4gMCkgfHwgCisgICAgICAoc3ViKG5DaGFubmVscywxKT4wICYmIGJpdFJhdGUgPiAobkNoYW5uZWxzICogMTYwMDApKSkgeworICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+aW52QXR0YWNrUmF0aW8gPSBpbnZBdHRhY2tSYXRpb0hpZ2hCcjsKKyAgfQorICBlbHNlICB7CisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5pbnZBdHRhY2tSYXRpbyA9IGludkF0dGFja1JhdGlvTG93QnI7CisgIH0KKworICByZXR1cm4oVFJVRSk7Cit9CisKK3N0YXRpYyBXb3JkMTYgc3VnZ2VzdGVkR3JvdXBpbmdUYWJsZVtUUkFOU19GQUNdW01BWF9OT19PRl9HUk9VUFNdID0geworICAvKiBBdHRhY2sgaW4gV2luZG93IDAgKi8gezEsICAzLCAgMywgIDF9LAorICAvKiBBdHRhY2sgaW4gV2luZG93IDEgKi8gezEsICAxLCAgMywgIDN9LAorICAvKiBBdHRhY2sgaW4gV2luZG93IDIgKi8gezIsICAxLCAgMywgIDJ9LAorICAvKiBBdHRhY2sgaW4gV2luZG93IDMgKi8gezMsICAxLCAgMywgIDF9LAorICAvKiBBdHRhY2sgaW4gV2luZG93IDQgKi8gezMsICAxLCAgMSwgIDN9LAorICAvKiBBdHRhY2sgaW4gV2luZG93IDUgKi8gezMsICAyLCAgMSwgIDJ9LAorICAvKiBBdHRhY2sgaW4gV2luZG93IDYgKi8gezMsICAzLCAgMSwgIDF9LAorICAvKiBBdHRhY2sgaW4gV2luZG93IDcgKi8gezMsICAzLCAgMSwgIDF9Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQmxvY2tTd2l0Y2hpbmcKKyogZGVzY3JpcHRpb246ICBkZXRlY3QgdGhpcyBmcmFtZSB3aGV0aGVyIHRoZXJlIGlzIGFuIGF0dGFjaworKiByZXR1cm5zOiAgICAgIFRSVUUgaWYgc3VjY2VzcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBCbG9ja1N3aXRjaGluZyhCTE9DS19TV0lUQ0hJTkdfQ09OVFJPTCAqYmxvY2tTd2l0Y2hpbmdDb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqdGltZVNpZ25hbCwKKwkJCQkJICBXb3JkMzIgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hJbmNyZW1lbnQpCit7CisgIFdvcmQzMiBpLCB3OworICBXb3JkMzIgZW5NMSwgZW5NYXg7CisKKyAgLyogUmVzZXQgZ3JvdXBpbmcgaW5mbyAqLworICBmb3IgKGk9MDsgaTxUUkFOU19GQUM7IGkrKykgeworICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+Z3JvdXBMZW5baV0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworCisgIC8qIFNlYXJjaCBmb3IgcG9zaXRpb24gYW5kIGFtcGxpdHVkZSBvZiBhdHRhY2sgaW4gbGFzdCBmcmFtZSAoMSB3aW5kb3dzIGRlbGF5KSAqLworICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPm1heFdpbmRvd05yZyA9IFNyY2hNYXhXaXRoSW5kZXgoICZibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd05yZ1swXVtCTE9DS19TV0lUQ0hfV0lORE9XUy0xXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hdHRhY2tJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCTE9DS19TV0lUQ0hfV0lORE9XUyk7CisKKyAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hdHRhY2tJbmRleCA9IGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bGFzdEF0dGFja0luZGV4OyAgIAorCisgIC8qIFNldCBncm91cGluZyBpbmZvICovCisgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bm9PZkdyb3VwcyA9IE1BWF9OT19PRl9HUk9VUFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IgKGk9MDsgaTxNQVhfTk9fT0ZfR1JPVVBTOyBpKyspIHsKKyAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmdyb3VwTGVuW2ldID0gc3VnZ2VzdGVkR3JvdXBpbmdUYWJsZVtibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFja0luZGV4XVtpXTsgIAorICB9DQorCQorICAvKiBpZiB0aGUgc2FtcGxlcmF0ZSBpcyBsZXNzIHRoYW4gMTYwMDAsIGl0IHNob3VsZCBiZSBhbGwgdGhlIHNob3J0IGJsb2NrLCBhdm9pZCBwcmUmcG9zdCBlY2hvICovCisgIGlmKHNhbXBsZVJhdGUgPj0gMTYwMDApIHsKKwkgIC8qIFNhdmUgY3VycmVudCB3aW5kb3cgZW5lcmd5IGFzIGxhc3Qgd2luZG93IGVuZXJneSAqLworCSAgZm9yICh3PTA7IHc8QkxPQ0tfU1dJVENIX1dJTkRPV1M7IHcrKykgeworCQkgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93TnJnWzBdW3ddID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dOcmdbMV1bd107ICAgICAgICAgICAgIAorCQkgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93TnJnRlswXVt3XSA9IGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93TnJnRlsxXVt3XTsgICAgICAgICAgIAorCSAgfQorCisKKwkgIC8qIENhbGN1bGF0ZSB1bmZpbHRlcmVkIGFuZCBmaWx0ZXJlZCBlbmVyZ2llcyBpbiBzdWJ3aW5kb3dzIGFuZCBjb21iaW5lIHRvIHNlZ21lbnRzICovCisJICBDYWxjV2luZG93RW5lcmd5KGJsb2NrU3dpdGNoaW5nQ29udHJvbCwgdGltZVNpZ25hbCwgY2hJbmNyZW1lbnQsIEJMT0NLX1NXSVRDSF9XSU5ET1dfTEVOKTsKKworCSAgLyogcmVzZXQgYXR0YWNrICovCisJICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFjayA9IEZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKwkgIGVuTWF4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkgIGVuTTEgPSBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd05yZ0ZbMF1bQkxPQ0tfU1dJVENIX1dJTkRPV1MtMV07ICAgICAgICAgICAKKworCSAgZm9yICh3PTA7IHc8QkxPQ0tfU1dJVENIX1dJTkRPV1M7IHcrKykgeworCQkgIFdvcmQzMiBlbk0xX1RtcCwgYWNjV2luZG93TnJnX1RtcCwgd2luZG93TnJnRl9UbXA7CisJCSAgV29yZDE2IGVuTTFfU2hmLCBhY2NXaW5kb3dOcmdfU2hmLCB3aW5kb3dOcmdGX1NoZjsKKworCQkgIGFjY1dpbmRvd05yZ19TaGYgPSBub3JtX2woYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hY2NXaW5kb3dOcmcpOworCQkgIGVuTTFfU2hmID0gbm9ybV9sKGVuTTEpOworCQkgIHdpbmRvd05yZ0ZfU2hmID0gbm9ybV9sKGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93TnJnRlsxXVt3XSk7CisKKwkJICBhY2NXaW5kb3dOcmdfVG1wID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hY2NXaW5kb3dOcmcgPDwgYWNjV2luZG93TnJnX1NoZjsKKwkJICBlbk0xX1RtcCA9IGVuTTEgPDwgZW5NMV9TaGY7CisJCSAgd2luZG93TnJnRl9UbXAgPSBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd05yZ0ZbMV1bd10gPDwgd2luZG93TnJnRl9TaGY7CisKKwkJICAvKiBhIHNsaWRpbmcgYXZlcmFnZSBvZiB0aGUgcHJldmlvdXMgZW5lcmdpZXMgKi8KKwkJICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmFjY1dpbmRvd05yZyA9IChmaXhtdWwob25lTWludXNBY2NXaW5kb3dOcmdGYWMsIGFjY1dpbmRvd05yZ19UbXApID4+IGFjY1dpbmRvd05yZ19TaGYpICsKKwkJCSAgKGZpeG11bChhY2NXaW5kb3dOcmdGYWMsIGVuTTFfVG1wKSA+PiBlbk0xX1NoZik7CisKKworCQkgIC8qIGlmIHRoZSBlbmVyZ3kgd2l0aCB0aGUgcmF0aW8gaXMgYmlnZ2VyIHRoYW4gdGhlIGF2ZXJhZ2UsIGFuZCB0aGUgYXR0YWNrIGFuZCBzaG9ydCBibG9jayAgKi8KKwkJICBpZiAoKGZpeG11bCh3aW5kb3dOcmdGX1RtcCwgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5pbnZBdHRhY2tSYXRpbykgPj4gd2luZG93TnJnRl9TaGYpID4KKwkJCSAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hY2NXaW5kb3dOcmcgKSB7CisJCQkJICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFjayA9IFRSVUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bGFzdEF0dGFja0luZGV4ID0gdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkgIH0KKwkJICBlbk0xID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dOcmdGWzFdW3ddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkgIGVuTWF4ID0gbWF4KGVuTWF4LCBlbk0xKTsKKwkgIH0KKworCSAgaWYgKGVuTWF4IDwgbWluQXR0YWNrTnJnKSB7CisJCSAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hdHRhY2sgPSBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkgIH0KKyAgfQorICBlbHNlCisgIHsKKwkgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+YXR0YWNrID0gVFJVRTsKKyAgfQorCisgIC8qIENoZWNrIGlmIGF0dGFjayBzcHJlYWRzIG92ZXIgZnJhbWUgYm9yZGVyICovICAgICAKKyAgaWYgKCghYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hdHRhY2spICYmIChibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmxhc3RhdHRhY2spKSB7CisgICAgIAorICAgIGlmIChibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFja0luZGV4ID09IFRSQU5TX0ZBQy0xKSB7CisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFjayA9IFRSVUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisKKyAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmxhc3RhdHRhY2sgPSBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisgIGVsc2UgeworICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bGFzdGF0dGFjayA9IGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+YXR0YWNrOyAgICAgICAgICAgCisgIH0KKworICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd1NlcXVlbmNlID0gIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bmV4dHdpbmRvd1NlcXVlbmNlOyAgICAKKworICAgICAKKyAgaWYgKGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+YXR0YWNrKSB7CisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5uZXh0d2luZG93U2VxdWVuY2UgPSBTSE9SVF9XSU5ET1c7CisgIH0KKyAgZWxzZSB7CisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5uZXh0d2luZG93U2VxdWVuY2UgPSBMT05HX1dJTkRPVzsKKyAgfQorCisgIC8qIHVwZGF0ZSBzaG9ydCBibG9jayBncm91cCAqLyAKKyAgaWYgKGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bmV4dHdpbmRvd1NlcXVlbmNlID09IFNIT1JUX1dJTkRPVykgeworICAgICAKKyAgICBpZiAoYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dTZXF1ZW5jZT09IExPTkdfV0lORE9XKSB7CisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd1NlcXVlbmNlID0gU1RBUlRfV0lORE9XOyAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgIAorICAgIGlmIChibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd1NlcXVlbmNlID09IFNUT1BfV0lORE9XKSB7CisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd1NlcXVlbmNlID0gU0hPUlRfV0lORE9XOyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bm9PZkdyb3VwcyA9IDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5ncm91cExlblswXSA9IDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmdyb3VwTGVuWzFdID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+Z3JvdXBMZW5bMl0gPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgfQorCisgIC8qIHVwZGF0ZSBibG9jayB0eXBlICovICAKKyAgaWYgKGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bmV4dHdpbmRvd1NlcXVlbmNlID09IExPTkdfV0lORE9XKSB7CisgICAgIAorICAgIGlmIChibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd1NlcXVlbmNlID09IFNIT1JUX1dJTkRPVykgeworICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5uZXh0d2luZG93U2VxdWVuY2UgPSBTVE9QX1dJTkRPVzsgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisKKyAgcmV0dXJuKFRSVUUpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBTcmNoTWF4V2l0aEluZGV4CisqIGRlc2NyaXB0aW9uOiAgc2VhcmNoIGZvciB0aGUgYmlnZ2VzdCB2YWx1ZSBpbiBhbiBhcnJheQorKiByZXR1cm5zOiAgICAgIHRoZSBtYXggdmFsdWUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDMyIFNyY2hNYXhXaXRoSW5kZXgoY29uc3QgV29yZDMyIGluW10sIFdvcmQxNiAqaW5kZXgsIFdvcmQxNiBuKQoreworICBXb3JkMzIgbWF4OworICBXb3JkMzIgaSwgaWR4OworCisgIC8qIFNlYXJjaCBtYXhpbXVtIHZhbHVlIGluIGFycmF5IGFuZCByZXR1cm4gaW5kZXggYW5kIHZhbHVlICovCisgIG1heCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpZHggPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgIAorICAgIGlmIChpbltpKzFdICA+IG1heCkgeworICAgICAgbWF4ID0gaW5baSsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGlkeCA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisgICppbmRleCA9IGlkeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHJldHVybihtYXgpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQ2FsY1dpbmRvd0VuZXJneQorKiBkZXNjcmlwdGlvbjogIGNhbGN1bGF0ZSB0aGUgZW5lcmd5IGJlZm9yZSBpaXItZmlsdGVyIGFuZCBhZnRlciBpcnItZmlsdGVyCisqIHJldHVybnM6ICAgICAgVFJVRSBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRlZiBBUk1WNUUNCitXb3JkMzIgQ2FsY1dpbmRvd0VuZXJneShCTE9DS19TV0lUQ0hJTkdfQ09OVFJPTCAqYmxvY2tTd2l0Y2hpbmdDb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICp0aW1lU2lnbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNoSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHdpbmRvd0xlbikKK3sKKyAgV29yZDMyIHcsIGksIHdPZmZzZXQsIHRpZHgsIGNoOworICBXb3JkMzIgYWNjdVVFLCBhY2N1RkU7CisgIFdvcmQzMiB0ZW1wVW5maWx0ZXJlZDsKKyAgV29yZDMyIHRlbXBGaWx0ZXJlZDsNCisgIFdvcmQzMiBzdGF0ZXMwLCBzdGF0ZXMxOw0KKyAgV29yZDMyIENvZWZmMCwgQ29lZmYxOw0KKw0KKworICBzdGF0ZXMwID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5paXJTdGF0ZXNbMF07DQorICBzdGF0ZXMxID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5paXJTdGF0ZXNbMV07DQorICBDb2VmZjAgPSBoaVBhc3NDb2VmZlswXTsNCisgIENvZWZmMSA9IGhpUGFzc0NvZWZmWzFdOworICB0aWR4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yICh3PTA7IHcgPCBCTE9DS19TV0lUQ0hfV0lORE9XUzsgdysrKSB7CisKKyAgICBhY2N1VUUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYWNjdUZFID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgZm9yKGk9MDsgaTx3aW5kb3dMZW47IGkrKykgeworCSAgV29yZDMyIGFjY3UxLCBhY2N1MiwgYWNjdTM7DQorCSAgV29yZDMyIG91dDsNCisJICB0ZW1wVW5maWx0ZXJlZCA9IHRpbWVTaWduYWxbdGlkeF07CisgICAgICB0aWR4ID0gdGlkeCArIGNoSW5jcmVtZW50OworDQorCSAgYWNjdTEgPSBMX21weV9scyhDb2VmZjEsIHRlbXBVbmZpbHRlcmVkKTsNCisJICBhY2N1MiA9IGZpeG11bCggQ29lZmYwLCBzdGF0ZXMxICk7DQorCSAgYWNjdTMgPSBhY2N1MSAtIHN0YXRlczA7DQorCSAgb3V0ID0gYWNjdTMgLSBhY2N1MjsNCisNCisJICBzdGF0ZXMwID0gYWNjdTE7ICAgICAgICAgICAgIA0KKwkgIHN0YXRlczEgPSBvdXQ7ICAgICAgICAgICAgICAgDQorDQorICAgICAgdGVtcEZpbHRlcmVkID0gZXh0cmFjdF9oKG91dCk7CSAgCisgICAgICBhY2N1VUUgKz0gKHRlbXBVbmZpbHRlcmVkICogdGVtcFVuZmlsdGVyZWQpID4+IEVORVJHWV9TSElGVDsKKyAgICAgIGFjY3VGRSArPSAodGVtcEZpbHRlcmVkICogdGVtcEZpbHRlcmVkKSA+PiBFTkVSR1lfU0hJRlQ7CisgICAgfQorCisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dOcmdbMV1bd10gPSBhY2N1VUU7ICAgICAgICAgICAgIAorICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93TnJnRlsxXVt3XSA9IGFjY3VGRTsgICAgICAgICAgICAKKworICB9DQorDQorICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmlpclN0YXRlc1swXSA9IHN0YXRlczA7DQorICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmlpclN0YXRlc1sxXSA9IHN0YXRlczE7CisKKyAgcmV0dXJuKFRSVUUpOworfQorI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBJSVJGaWx0ZXIKKyogZGVzY3JpcHRpb246ICBjYWxjdWxhdGUgdGhlIGlpci1maWx0ZXIgZm9yIGFuIGFycmF5CisqIHJldHVybnM6ICAgICAgdGhlIHJlc3VsdCBhZnRlciBpaXItZmlsdGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBJSVJGaWx0ZXIoY29uc3QgV29yZDE2IGluLCBjb25zdCBXb3JkMzIgY29lZmZbXSwgV29yZDMyIHN0YXRlc1tdKQoreworICBXb3JkMzIgYWNjdTEsIGFjY3UyLCBhY2N1MzsKKyAgV29yZDMyIG91dDsKKworICBhY2N1MSA9IExfbXB5X2xzKGNvZWZmWzFdLCBpbik7CisgIGFjY3UzID0gYWNjdTEgLSBzdGF0ZXNbMF07CisgIGFjY3UyID0gZml4bXVsKCBjb2VmZlswXSwgc3RhdGVzWzFdICk7CisgIG91dCA9IGFjY3UzIC0gYWNjdTI7CisKKyAgc3RhdGVzWzBdID0gYWNjdTE7ICAgICAgICAgICAgIAorICBzdGF0ZXNbMV0gPSBvdXQ7ICAgICAgICAgICAgICAgCisKKyAgcmV0dXJuIHJvdW5kMTYob3V0KTsKK30KKworCitzdGF0aWMgV29yZDE2IHN5bmNocm9uaXplZEJsb2NrVHlwZVRhYmxlWzRdWzRdID0geworICAvKiAgICAgICAgICAgICAgICAgTE9OR19XSU5ET1cgICBTVEFSVF9XSU5ET1cgIFNIT1JUX1dJTkRPVyAgU1RPUF9XSU5ET1cgKi8KKyAgLyogTE9OR19XSU5ET1cgICove0xPTkdfV0lORE9XLCAgU1RBUlRfV0lORE9XLCBTSE9SVF9XSU5ET1csIFNUT1BfV0lORE9XfSwKKyAgLyogU1RBUlRfV0lORE9XICove1NUQVJUX1dJTkRPVywgU1RBUlRfV0lORE9XLCBTSE9SVF9XSU5ET1csIFNIT1JUX1dJTkRPV30sCisgIC8qIFNIT1JUX1dJTkRPVyAqL3tTSE9SVF9XSU5ET1csIFNIT1JUX1dJTkRPVywgU0hPUlRfV0lORE9XLCBTSE9SVF9XSU5ET1d9LAorICAvKiBTVE9QX1dJTkRPVyAgKi97U1RPUF9XSU5ET1csICBTSE9SVF9XSU5ET1csIFNIT1JUX1dJTkRPVywgU1RPUF9XSU5ET1d9Cit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBTeW5jQmxvY2tTd2l0Y2hpbmcKKyogZGVzY3JpcHRpb246ICB1cGRhdGUgYmxvY2sgdHlwZSBhbmQgZ3JvdXAgdmFsdWUKKyogcmV0dXJuczogICAgICBUUlVFIGlmIHN1Y2Nlc3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgU3luY0Jsb2NrU3dpdGNoaW5nKEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBCTE9DS19TV0lUQ0hJTkdfQ09OVFJPTCAqYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBuQ2hhbm5lbHMpCit7CisgIFdvcmQxNiBpOworICBXb3JkMTYgcGF0Y2hUeXBlID0gTE9OR19XSU5ET1c7ICAgICAgICAgICAgICAgIAorCisgICAKKyAgaWYgKG5DaGFubmVscyA9PSAxKSB7IC8qIE1vbm8gKi8KKyAgICBpZiAoYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+d2luZG93U2VxdWVuY2UgIT0gU0hPUlRfV0lORE9XKSB7CisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ub09mR3JvdXBzID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ncm91cExlblswXSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIGZvciAoaT0xOyBpPFRSQU5TX0ZBQzsgaSsrKSB7CisgICAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbExlZnQtPmdyb3VwTGVuW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB9CisgICAgfQorICB9CisgIGVsc2UgeyAvKiBTdGVyZW8gY29tbW9uIFdpbmRvdyAqLworICAgIHBhdGNoVHlwZSA9IHN5bmNocm9uaXplZEJsb2NrVHlwZVRhYmxlW3BhdGNoVHlwZV1bYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+d2luZG93U2VxdWVuY2VdOyAgICAgICAgCisgICAgcGF0Y2hUeXBlID0gc3luY2hyb25pemVkQmxvY2tUeXBlVGFibGVbcGF0Y2hUeXBlXVtibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodC0+d2luZG93U2VxdWVuY2VdOyAgICAgICAKKworICAgIC8qIFNldCBzeW5jaHJvbml6ZWQgQmxvY2t0eXBlICovCisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+d2luZG93U2VxdWVuY2UgPSBwYXRjaFR5cGU7ICAgICAgICAgICAgICAgCisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQtPndpbmRvd1NlcXVlbmNlID0gcGF0Y2hUeXBlOyAgICAgICAgICAgICAgCisKKyAgICAvKiBTeW5jaHJvbml6ZSBncm91cGluZyBpbmZvICovICAgICAKKyAgICBpZihwYXRjaFR5cGUgIT0gU0hPUlRfV0lORE9XKSB7IC8qIExvbmcgQmxvY2tzICovCisgICAgICAvKiBTZXQgZ3JvdXBpbmcgaW5mbyAqLworICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+bm9PZkdyb3VwcyA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQtPm5vT2ZHcm91cHMgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+Z3JvdXBMZW5bMF0gPSAxOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQtPmdyb3VwTGVuWzBdID0gMTsgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICBmb3IgKGk9MTsgaTxUUkFOU19GQUM7IGkrKykgeworICAgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ncm91cExlbltpXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodC0+Z3JvdXBMZW5baV0gPSAwOyAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAKKyAgICAgIGlmIChibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5tYXhXaW5kb3dOcmcgPiBibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodC0+bWF4V2luZG93TnJnKSB7CisgICAgICAgIC8qIExlZnQgQ2hhbm5lbCB3aW5zICovCisgICAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbFJpZ2h0LT5ub09mR3JvdXBzID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+bm9PZkdyb3VwczsgICAgICAgICAgCisgICAgICAgIGZvciAoaT0wOyBpPFRSQU5TX0ZBQzsgaSsrKSB7CisgICAgICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQtPmdyb3VwTGVuW2ldID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+Z3JvdXBMZW5baV07ICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICAvKiBSaWdodCBDaGFubmVsIHdpbnMgKi8KKyAgICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+bm9PZkdyb3VwcyA9IGJsb2NrU3dpdGNoaW5nQ29udHJvbFJpZ2h0LT5ub09mR3JvdXBzOyAgICAgICAgICAKKyAgICAgICAgZm9yIChpPTA7IGk8VFJBTlNfRkFDOyBpKyspIHsKKyAgICAgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ncm91cExlbltpXSA9IGJsb2NrU3dpdGNoaW5nQ29udHJvbFJpZ2h0LT5ncm91cExlbltpXTsgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfSAvKmVuZGlmIE1vbm8gb3IgU3RlcmVvICovCisKKyAgcmV0dXJuKFRSVUUpOworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvY2hhbm5lbF9tYXAuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2NoYW5uZWxfbWFwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3MjkzYgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2NoYW5uZWxfbWFwLmMKQEAgLTAsMCArMSwxMjMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWNoYW5uZWxfbWFwLmMNCisNCisJQ29udGVudDoJY2hhbm5lbCBtYXBwaW5nIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjaGFubmVsX21hcC5oIgorI2luY2x1ZGUgImJpdGVuYy5oIgorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgInFjX2RhdGEuaCIKKworc3RhdGljIGNvbnN0IFdvcmQxNiBtYXhDaGFubmVsQml0cyA9IE1BWEJJVFNfQ09FRjsKKworc3RhdGljIFdvcmQxNiBpbml0RWxlbWVudChFTEVNRU5UX0lORk8qIGVsSW5mbywgRUxFTUVOVF9UWVBFIGVsVHlwZSkKK3sKKyAgV29yZDE2IGVycm9yPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZWxJbmZvLT5lbFR5cGU9ZWxUeXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgc3dpdGNoKGVsSW5mby0+ZWxUeXBlKSB7CisKKyAgICBjYXNlIElEX1NDRToKKyAgICAgIGVsSW5mby0+bkNoYW5uZWxzSW5FbD0xOyAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIGVsSW5mby0+Q2hhbm5lbEluZGV4WzBdPTA7ICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIGVsSW5mby0+aW5zdGFuY2VUYWc9MDsgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBicmVhazsKKworICAgIGNhc2UgSURfQ1BFOgorCisgICAgICBlbEluZm8tPm5DaGFubmVsc0luRWw9MjsgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgZWxJbmZvLT5DaGFubmVsSW5kZXhbMF09MDsgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBlbEluZm8tPkNoYW5uZWxJbmRleFsxXT0xOyAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgZWxJbmZvLT5pbnN0YW5jZVRhZz0wOyAgICAgICAgICAgICAgICAgICAgCisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBlcnJvcj0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIHJldHVybiBlcnJvcjsKK30KKworCitXb3JkMTYgSW5pdEVsZW1lbnRJbmZvIChXb3JkMTYgbkNoYW5uZWxzLCBFTEVNRU5UX0lORk8qIGVsSW5mbykKK3sKKyAgV29yZDE2IGVycm9yOworICBlcnJvciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHN3aXRjaChuQ2hhbm5lbHMpIHsKKworICAgIGNhc2UgMTogCisgICAgICBpbml0RWxlbWVudChlbEluZm8sIElEX1NDRSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgMjoKKyAgICAgIGluaXRFbGVtZW50KGVsSW5mbywgSURfQ1BFKTsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGVycm9yPTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIHJldHVybiBlcnJvcjsKK30KKworCitXb3JkMTYgSW5pdEVsZW1lbnRCaXRzKEVMRU1FTlRfQklUUyAqZWxlbWVudEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgIEVMRU1FTlRfSU5GTyBlbEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBiaXRyYXRlVG90LAorICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYXZlcmFnZUJpdHNUb3QsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzdGF0aWNCaXRzVG90KQoreworICBXb3JkMTYgZXJyb3I7CisgIGVycm9yID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgc3dpdGNoKGVsSW5mby5uQ2hhbm5lbHNJbkVsKSB7CisgICAgY2FzZSAxOgorICAgICAgZWxlbWVudEJpdHMtPmNoQml0cmF0ZSA9IGJpdHJhdGVUb3Q7ICAgICAgICAgICAgICAgICAgICAgCisgICAgICBlbGVtZW50Qml0cy0+YXZlcmFnZUJpdHMgPSBhdmVyYWdlQml0c1RvdCAtIHN0YXRpY0JpdHNUb3Q7CisgICAgICBlbGVtZW50Qml0cy0+bWF4Qml0cyA9IG1heENoYW5uZWxCaXRzOyAgICAgICAgICAgICAgICAgICAKKworICAgICAgZWxlbWVudEJpdHMtPm1heEJpdFJlc0JpdHMgPSBtYXhDaGFubmVsQml0cyAtIGF2ZXJhZ2VCaXRzVG90OworICAgICAgZWxlbWVudEJpdHMtPm1heEJpdFJlc0JpdHMgPSBlbGVtZW50Qml0cy0+bWF4Qml0UmVzQml0cyAtIChlbGVtZW50Qml0cy0+bWF4Qml0UmVzQml0cyAmIDcpOyAKKyAgICAgIGVsZW1lbnRCaXRzLT5iaXRSZXNMZXZlbCA9IGVsZW1lbnRCaXRzLT5tYXhCaXRSZXNCaXRzOyAgIAorICAgICAgZWxlbWVudEJpdHMtPnJlbGF0aXZlQml0cyAgPSAweDQwMDA7IC8qIDEuMGYvMiAqLyAgICAgICAgCisgICAgICBicmVhazsKKworICAgIGNhc2UgMjoKKyAgICAgIGVsZW1lbnRCaXRzLT5jaEJpdHJhdGUgICA9IGJpdHJhdGVUb3QgPj4gMTsKKyAgICAgIGVsZW1lbnRCaXRzLT5hdmVyYWdlQml0cyA9IGF2ZXJhZ2VCaXRzVG90IC0gc3RhdGljQml0c1RvdDsKKyAgICAgIGVsZW1lbnRCaXRzLT5tYXhCaXRzICAgICA9IG1heENoYW5uZWxCaXRzIDw8IDE7CisKKyAgICAgIGVsZW1lbnRCaXRzLT5tYXhCaXRSZXNCaXRzID0gKG1heENoYW5uZWxCaXRzIDw8IDEpIC0gYXZlcmFnZUJpdHNUb3Q7CisgICAgICBlbGVtZW50Qml0cy0+bWF4Qml0UmVzQml0cyA9IGVsZW1lbnRCaXRzLT5tYXhCaXRSZXNCaXRzIC0gKGVsZW1lbnRCaXRzLT5tYXhCaXRSZXNCaXRzICYgNyk7ICAgCisgICAgICBlbGVtZW50Qml0cy0+Yml0UmVzTGV2ZWwgPSBlbGVtZW50Qml0cy0+bWF4Qml0UmVzQml0czsgICAgIAorICAgICAgZWxlbWVudEJpdHMtPnJlbGF0aXZlQml0cyA9IDB4NDAwMDsgLyogMS4wZi8yICovICAgICAgICAgICAKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGVycm9yID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKyAgcmV0dXJuIGVycm9yOworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvZHluX2JpdHMuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2R5bl9iaXRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RlYWNjYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2R5bl9iaXRzLmMKQEAgLTAsMCArMSw1NDUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWR5bl9iaXRzLmMNCisNCisJQ29udGVudDoJTm9pc2VsZXNzIGNvZGVyIG1vZHVsZSBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYWFjX3JvbS5oIgorI2luY2x1ZGUgImR5bl9iaXRzLmgiCisjaW5jbHVkZSAiYml0X2NudC5oIgorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBidWlsZEJpdExvb2tVcAorKiBkZXNjcmlwdGlvbjogIGNvdW50IGJpdHMgdXNpbmcgYWxsIHBvc3NpYmxlIHRhYmxlcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZAorYnVpbGRCaXRMb29rVXAoY29uc3QgV29yZDE2ICpxdWFudFNwZWN0cnVtLAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG1heFNmYiwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgY29uc3QgVVdvcmQxNiAqc2ZiTWF4LAorICAgICAgICAgICAgICAgV29yZDE2IGJpdExvb2tVcFtNQVhfU0ZCX0xPTkddW0NPREVfQk9PS19FU0NfTkRYICsgMV0sCisgICAgICAgICAgICAgICBTRUNUSU9OX0lORk8gKiBzZWN0aW9uSW5mbykKK3sKKyAgV29yZDMyIGk7CisKKyAgZm9yIChpPTA7IGk8bWF4U2ZiOyBpKyspIHsKKyAgICBXb3JkMTYgc2ZiV2lkdGgsIG1heFZhbDsKKworICAgIHNlY3Rpb25JbmZvW2ldLnNmYkNudCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBzZWN0aW9uSW5mb1tpXS5zZmJTdGFydCA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgc2VjdGlvbkluZm9baV0uc2VjdGlvbkJpdHMgPSBJTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgIAorICAgIHNlY3Rpb25JbmZvW2ldLmNvZGVCb29rID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBzZmJXaWR0aCA9IHNmYk9mZnNldFtpICsgMV0gLSBzZmJPZmZzZXRbaV07ICAgICAgICAgICAgICAKKyAgICBtYXhWYWwgPSBzZmJNYXhbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYml0Q291bnQocXVhbnRTcGVjdHJ1bSArIHNmYk9mZnNldFtpXSwgc2ZiV2lkdGgsIG1heFZhbCwgYml0TG9va1VwW2ldKTsKKyAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBmaW5kQmVzdEJvb2sKKyogZGVzY3JpcHRpb246ICBlc3NlbnRpYWwgaGVscGVyIGZ1bmN0aW9ucworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2CitmaW5kQmVzdEJvb2soY29uc3QgV29yZDE2ICpiYywgV29yZDE2ICpib29rKQoreworICBXb3JkMzIgbWluQml0cywgajsKKyAgbWluQml0cyA9IElOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yIChqPTA7IGo8PUNPREVfQk9PS19FU0NfTkRYOyBqKyspIHsKKyAgICAgCisgICAgaWYgKGJjW2pdIDwgbWluQml0cykgeworICAgICAgbWluQml0cyA9IGJjW2pdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICpib29rID0gajsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisgIHJldHVybiBleHRyYWN0X2wobWluQml0cyk7Cit9CisKK3N0YXRpYyBXb3JkMTYKK2ZpbmRNaW5NZXJnZUJpdHMoY29uc3QgV29yZDE2ICpiYzEsIGNvbnN0IFdvcmQxNiAqYmMyKQoreworICBXb3JkMzIgbWluQml0cywgaiwgc3VtOworICBtaW5CaXRzID0gSU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IgKGo9MDsgajw9Q09ERV9CT09LX0VTQ19ORFg7IGorKykgeworICAgIHN1bSA9IGJjMVtqXSArIGJjMltqXTsKKyAgICBpZiAoc3VtIDwgbWluQml0cykgeworICAgICAgbWluQml0cyA9IHN1bTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgcmV0dXJuIGV4dHJhY3RfbChtaW5CaXRzKTsKK30KKworc3RhdGljIHZvaWQKK21lcmdlQml0TG9va1VwKFdvcmQxNiAqYmMxLCBjb25zdCBXb3JkMTYgKmJjMikKK3sKKyAgV29yZDMyIGo7CisKKyAgZm9yIChqPTA7IGo8PUNPREVfQk9PS19FU0NfTkRYOyBqKyspIHsKKyAgICBiYzFbal0gPSBtaW4oYmMxW2pdICsgYmMyW2pdLCBJTlZBTElEX0JJVENPVU5UKTsKKyAgfQorfQorCitzdGF0aWMgV29yZDE2CitmaW5kTWF4TWVyZ2UoY29uc3QgV29yZDE2IG1lcmdlR2Fpbkxvb2tVcFtNQVhfU0ZCX0xPTkddLAorICAgICAgICAgICAgIGNvbnN0IFNFQ1RJT05fSU5GTyAqc2VjdGlvbkluZm8sCisgICAgICAgICAgICAgY29uc3QgV29yZDE2IG1heFNmYiwgV29yZDE2ICptYXhOZHgpCit7CisgIFdvcmQzMiBpLCBtYXhNZXJnZUdhaW47CisgIG1heE1lcmdlR2FpbiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvciAoaT0wOyBpK3NlY3Rpb25JbmZvW2ldLnNmYkNudCA8IG1heFNmYjsgaSArPSBzZWN0aW9uSW5mb1tpXS5zZmJDbnQpIHsKKyAgICAgCisgICAgaWYgKG1lcmdlR2Fpbkxvb2tVcFtpXSA+IG1heE1lcmdlR2FpbikgeworICAgICAgbWF4TWVyZ2VHYWluID0gbWVyZ2VHYWluTG9va1VwW2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICptYXhOZHggPSBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisgIHJldHVybiBleHRyYWN0X2wobWF4TWVyZ2VHYWluKTsKK30KKworCisKK3N0YXRpYyBXb3JkMTYKK0NhbGNNZXJnZUdhaW4oY29uc3QgU0VDVElPTl9JTkZPICpzZWN0aW9uSW5mbywKKyAgICAgICAgICAgICAgV29yZDE2IGJpdExvb2tVcFtNQVhfU0ZCX0xPTkddW0NPREVfQk9PS19FU0NfTkRYICsgMV0sCisgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqc2lkZUluZm9UYWIsCisgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBuZHgxLAorICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbmR4MikKK3sKKyAgV29yZDMyIFNwbGl0Qml0czsKKyAgV29yZDMyIE1lcmdlQml0czsKKyAgV29yZDMyIE1lcmdlR2FpbjsKKworICAvKgorICAgIEJpdCBhbW91bnQgZm9yIHNwbGl0dGVkIHNlY3Rpb25zCisgICovCisgIFNwbGl0Qml0cyA9IHNlY3Rpb25JbmZvW25keDFdLnNlY3Rpb25CaXRzICsgc2VjdGlvbkluZm9bbmR4Ml0uc2VjdGlvbkJpdHM7CisKKyAgTWVyZ2VCaXRzID0gc2lkZUluZm9UYWJbc2VjdGlvbkluZm9bbmR4MV0uc2ZiQ250ICsgc2VjdGlvbkluZm9bbmR4Ml0uc2ZiQ250XSArCisgICAgICAgICAgICAgICAgICBmaW5kTWluTWVyZ2VCaXRzKGJpdExvb2tVcFtuZHgxXSwgYml0TG9va1VwW25keDJdKTsKKyAgTWVyZ2VHYWluID0gKFNwbGl0Qml0cyAtIE1lcmdlQml0cyk7CisKKyAgcmV0dXJuIGV4dHJhY3RfbChNZXJnZUdhaW4pOworfQorCisvKgorICBzZWN0aW9uaW5nIFN0YWdlIDA6ZmluZCBtaW5pbXVtIGNvZGJvb2tzCisqLworCitzdGF0aWMgdm9pZAorZ21TdGFnZTAoU0VDVElPTl9JTkZPICogc2VjdGlvbkluZm8sCisgICAgICAgICBXb3JkMTYgYml0TG9va1VwW01BWF9TRkJfTE9OR11bQ09ERV9CT09LX0VTQ19ORFggKyAxXSwKKyAgICAgICAgIGNvbnN0IFdvcmQxNiBtYXhTZmIpCit7CisgIFdvcmQzMiBpOworCisgIGZvciAoaT0wOyBpPG1heFNmYjsgaSsrKSB7CisgICAgLyogU2lkZS1JbmZvIGJpdHMgd2lsbCBiZSBjYWxjdWxhdGVkIGluIFN0YWdlIDEhICAqLworICAgICAKKyAgICBpZiAoc2VjdGlvbkluZm9baV0uc2VjdGlvbkJpdHMgPT0gSU5WQUxJRF9CSVRDT1VOVCkgeworICAgICAgc2VjdGlvbkluZm9baV0uc2VjdGlvbkJpdHMgPSBmaW5kQmVzdEJvb2soYml0TG9va1VwW2ldLCAmKHNlY3Rpb25JbmZvW2ldLmNvZGVCb29rKSk7CisgICAgfQorICB9Cit9CisKKy8qCisgIHNlY3Rpb25pbmcgU3RhZ2UgMTptZXJnZSBhbGwgY29ubmVjdGVkIHJlZ2lvbnMgd2l0aCB0aGUgc2FtZSBjb2RlIGJvb2sgYW5kCisgIGNhbGN1bGF0ZSBzaWRlIGluZm8KKyovCisKK3N0YXRpYyB2b2lkCitnbVN0YWdlMShTRUNUSU9OX0lORk8gKiBzZWN0aW9uSW5mbywKKyAgICAgICAgIFdvcmQxNiBiaXRMb29rVXBbTUFYX1NGQl9MT05HXVtDT0RFX0JPT0tfRVNDX05EWCArIDFdLAorICAgICAgICAgY29uc3QgV29yZDE2IG1heFNmYiwKKyAgICAgICAgIGNvbnN0IFdvcmQxNiAqc2lkZUluZm9UYWIpCit7CisgIFNFQ1RJT05fSU5GTyAqIHNlY3Rpb25JbmZvX3M7DQorICBTRUNUSU9OX0lORk8gKiBzZWN0aW9uSW5mb19lOw0KKyAgV29yZDMyIG1lcmdlU3RhcnQsIG1lcmdlRW5kOworICBtZXJnZVN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGRvIHsKKworICAgIHNlY3Rpb25JbmZvX3MgPSBzZWN0aW9uSW5mbyArIG1lcmdlU3RhcnQ7DQorCWZvciAobWVyZ2VFbmQ9bWVyZ2VTdGFydCsxOyBtZXJnZUVuZDxtYXhTZmI7IG1lcmdlRW5kKyspIHsKKyAgICAgIHNlY3Rpb25JbmZvX2UgPSBzZWN0aW9uSW5mbyArIG1lcmdlRW5kOyAKKyAgICAgIGlmIChzZWN0aW9uSW5mb19zLT5jb2RlQm9vayAhPSBzZWN0aW9uSW5mb19lLT5jb2RlQm9vaykKKyAgICAgICAgYnJlYWs7CisgICAgICBzZWN0aW9uSW5mb19zLT5zZmJDbnQgKz0gMTsKKyAgICAgIHNlY3Rpb25JbmZvX3MtPnNlY3Rpb25CaXRzICs9IHNlY3Rpb25JbmZvX2UtPnNlY3Rpb25CaXRzOworCisgICAgICBtZXJnZUJpdExvb2tVcChiaXRMb29rVXBbbWVyZ2VTdGFydF0sIGJpdExvb2tVcFttZXJnZUVuZF0pOworICAgIH0KKworICAgIHNlY3Rpb25JbmZvX3MtPnNlY3Rpb25CaXRzICs9IHNpZGVJbmZvVGFiW3NlY3Rpb25JbmZvX3MtPnNmYkNudF07CisgICAgc2VjdGlvbkluZm9bbWVyZ2VFbmQgLSAxXS5zZmJTdGFydCA9IHNlY3Rpb25JbmZvX3MtPnNmYlN0YXJ0OyAgICAgIC8qIHNwZWVkIHVwIHByZXYgc2VhcmNoICovICAKKworICAgIG1lcmdlU3RhcnQgPSBtZXJnZUVuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgIAorICB9IHdoaWxlIChtZXJnZVN0YXJ0IC0gbWF4U2ZiIDwgMCk7Cit9CisKKy8qCisgIHNlY3Rpb25pbmcgU3RhZ2UgMjpncmVlZHkgbWVyZ2UgYWxnb3JpdGhtLCBtZXJnZSBjb25uZWN0ZWQgc2VjdGlvbnMgd2l0aAorICBtYXhpbXVtIGJpdCBnYWluIHVudGlsIG5vIG1vcmUgZ2FpbiBpcyBwb3NzaWJsZQorKi8KK3N0YXRpYyB2b2lkCitnbVN0YWdlMihTRUNUSU9OX0lORk8gKnNlY3Rpb25JbmZvLAorICAgICAgICAgV29yZDE2IG1lcmdlR2Fpbkxvb2tVcFtNQVhfU0ZCX0xPTkddLAorICAgICAgICAgV29yZDE2IGJpdExvb2tVcFtNQVhfU0ZCX0xPTkddW0NPREVfQk9PS19FU0NfTkRYICsgMV0sCisgICAgICAgICBjb25zdCBXb3JkMTYgbWF4U2ZiLAorICAgICAgICAgY29uc3QgV29yZDE2ICpzaWRlSW5mb1RhYikKK3sKKyAgV29yZDE2IGk7CisKKyAgZm9yIChpPTA7IGkrc2VjdGlvbkluZm9baV0uc2ZiQ250PG1heFNmYjsgaSs9c2VjdGlvbkluZm9baV0uc2ZiQ250KSB7CisgICAgbWVyZ2VHYWluTG9va1VwW2ldID0gQ2FsY01lcmdlR2FpbihzZWN0aW9uSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdExvb2tVcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVJbmZvVGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpICsgc2VjdGlvbkluZm9baV0uc2ZiQ250KSk7CisgIH0KKworICB3aGlsZSAoVFJVRSkgeworICAgIFdvcmQxNiBtYXhNZXJnZUdhaW4sIG1heE5keCwgbWF4TmR4TmV4dCwgbWF4TmR4TGFzdDsKKworICAgIG1heE1lcmdlR2FpbiA9IGZpbmRNYXhNZXJnZShtZXJnZUdhaW5Mb29rVXAsIHNlY3Rpb25JbmZvLCBtYXhTZmIsICZtYXhOZHgpOworCisgICAgIAorICAgIGlmIChtYXhNZXJnZUdhaW4gPD0gMCkKKyAgICAgIGJyZWFrOworCisKKyAgICBtYXhOZHhOZXh0ID0gbWF4TmR4ICsgc2VjdGlvbkluZm9bbWF4TmR4XS5zZmJDbnQ7CisKKyAgICBzZWN0aW9uSW5mb1ttYXhOZHhdLnNmYkNudCA9IHNlY3Rpb25JbmZvW21heE5keF0uc2ZiQ250ICsgc2VjdGlvbkluZm9bbWF4TmR4TmV4dF0uc2ZiQ250OworICAgIHNlY3Rpb25JbmZvW21heE5keF0uc2VjdGlvbkJpdHMgPSBzZWN0aW9uSW5mb1ttYXhOZHhdLnNlY3Rpb25CaXRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWN0aW9uSW5mb1ttYXhOZHhOZXh0XS5zZWN0aW9uQml0cyAtIG1heE1lcmdlR2Fpbik7CisKKworICAgIG1lcmdlQml0TG9va1VwKGJpdExvb2tVcFttYXhOZHhdLCBiaXRMb29rVXBbbWF4TmR4TmV4dF0pOworCisgICAgIAorICAgIGlmIChtYXhOZHggIT0gMCkgeworICAgICAgbWF4TmR4TGFzdCA9IHNlY3Rpb25JbmZvW21heE5keCAtIDFdLnNmYlN0YXJ0OworICAgICAgbWVyZ2VHYWluTG9va1VwW21heE5keExhc3RdID0gQ2FsY01lcmdlR2FpbihzZWN0aW9uSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0TG9va1VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlSW5mb1RhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TmR4TGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TmR4KTsKKyAgICB9CisgICAgbWF4TmR4TmV4dCA9IG1heE5keCArIHNlY3Rpb25JbmZvW21heE5keF0uc2ZiQ250OworCisgICAgc2VjdGlvbkluZm9bbWF4TmR4TmV4dCAtIDFdLnNmYlN0YXJ0ID0gc2VjdGlvbkluZm9bbWF4TmR4XS5zZmJTdGFydDsgICAgICAgICAgICAgCisKKyAgICAgCisgICAgaWYgKG1heE5keE5leHQgLSBtYXhTZmIgPCAwKSB7CisgICAgICBtZXJnZUdhaW5Mb29rVXBbbWF4TmR4XSA9IENhbGNNZXJnZUdhaW4oc2VjdGlvbkluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0TG9va1VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVJbmZvVGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heE5keCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOZHhOZXh0KTsKKyAgICB9CisgIH0KK30KKworLyoKKyAgY291bnQgYml0cyB1c2VkIGJ5IHRoZSBub2lzZWxlc3MgY29kZXIKKyovCitzdGF0aWMgdm9pZAorbm9pc2VsZXNzQ291bnRlcihTRUNUSU9OX0RBVEEgKnNlY3Rpb25EYXRhLAorICAgICAgICAgICAgICAgICBXb3JkMTYgbWVyZ2VHYWluTG9va1VwW01BWF9TRkJfTE9OR10sCisgICAgICAgICAgICAgICAgIFdvcmQxNiBiaXRMb29rVXBbTUFYX1NGQl9MT05HXVtDT0RFX0JPT0tfRVNDX05EWCArIDFdLAorICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKnF1YW50U3BlY3RydW0sCisgICAgICAgICAgICAgICAgIGNvbnN0IFVXb3JkMTYgKm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgYmxvY2tUeXBlKQoreworICBXb3JkMzIgZ3JwTmR4LCBpOworICBXb3JkMTYgKnNpZGVJbmZvVGFiID0gTlVMTDsKKyAgU0VDVElPTl9JTkZPICpzZWN0aW9uSW5mbzsKKworICAvKgorICAgIHVzZSBhcHByb3ByaWF0ZSBzaWRlIGluZm8gdGFibGUKKyAgKi8gICAKKyAgc3dpdGNoIChibG9ja1R5cGUpCisgIHsKKyAgICBjYXNlIExPTkdfV0lORE9XOgorICAgIGNhc2UgU1RBUlRfV0lORE9XOgorICAgIGNhc2UgU1RPUF9XSU5ET1c6CisgICAgICBzaWRlSW5mb1RhYiA9IHNpZGVJbmZvVGFiTG9uZzsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU0hPUlRfV0lORE9XOgorICAgICAgc2lkZUluZm9UYWIgPSBzaWRlSW5mb1RhYlNob3J0OworICAgICAgYnJlYWs7CisgIH0KKworCisgIHNlY3Rpb25EYXRhLT5ub09mU2VjdGlvbnMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHNlY3Rpb25EYXRhLT5odWZmbWFuQml0cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHNlY3Rpb25EYXRhLT5zaWRlSW5mb0JpdHMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgIAorICBpZiAoc2VjdGlvbkRhdGEtPm1heFNmYlBlckdyb3VwID09IDApCisgICAgcmV0dXJuOworCisgIC8qCisgICAgbG9vcCB0cm91Z2ggZ3JvdXBzCisgICovCisgIGZvciAoZ3JwTmR4PTA7IGdycE5keDxzZWN0aW9uRGF0YS0+c2ZiQ250OyBncnBOZHgrPXNlY3Rpb25EYXRhLT5zZmJQZXJHcm91cCkgeworCisgICAgc2VjdGlvbkluZm8gPSBzZWN0aW9uRGF0YS0+c2VjdGlvbkluZm8gKyBzZWN0aW9uRGF0YS0+bm9PZlNlY3Rpb25zOworCisgICAgYnVpbGRCaXRMb29rVXAocXVhbnRTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICBzZWN0aW9uRGF0YS0+bWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgc2ZiT2Zmc2V0ICsgZ3JwTmR4LAorICAgICAgICAgICAgICAgICAgIG1heFZhbHVlSW5TZmIgKyBncnBOZHgsCisgICAgICAgICAgICAgICAgICAgYml0TG9va1VwLAorICAgICAgICAgICAgICAgICAgIHNlY3Rpb25JbmZvKTsKKworICAgIC8qCisgICAgICAgMC5TdGFnZQorICAgICovCisgICAgZ21TdGFnZTAoc2VjdGlvbkluZm8sIGJpdExvb2tVcCwgc2VjdGlvbkRhdGEtPm1heFNmYlBlckdyb3VwKTsKKworICAgIC8qCisgICAgICAgMS5TdGFnZQorICAgICovCisgICAgZ21TdGFnZTEoc2VjdGlvbkluZm8sIGJpdExvb2tVcCwgc2VjdGlvbkRhdGEtPm1heFNmYlBlckdyb3VwLCBzaWRlSW5mb1RhYik7CisKKworICAgIC8qCisgICAgICAgMi5TdGFnZQorICAgICovCisgICAgZ21TdGFnZTIoc2VjdGlvbkluZm8sCisgICAgICAgICAgICAgbWVyZ2VHYWluTG9va1VwLAorICAgICAgICAgICAgIGJpdExvb2tVcCwKKyAgICAgICAgICAgICBzZWN0aW9uRGF0YS0+bWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgc2lkZUluZm9UYWIpOworCisKKyAgICAvKgorICAgICAgIGNvbXByZXNzIG91dHB1dCwgY2FsY3VsYXRlIHRvdGFsIGh1ZmYgYW5kIHNpZGUgYml0cworICAgICovCisgICAgZm9yIChpPTA7IGk8c2VjdGlvbkRhdGEtPm1heFNmYlBlckdyb3VwOyBpKz1zZWN0aW9uSW5mb1tpXS5zZmJDbnQpIHsKKyAgICAgIGZpbmRCZXN0Qm9vayhiaXRMb29rVXBbaV0sICYoc2VjdGlvbkluZm9baV0uY29kZUJvb2spKTsKKyAgICAgIHNlY3Rpb25JbmZvW2ldLnNmYlN0YXJ0ID0gc2VjdGlvbkluZm9baV0uc2ZiU3RhcnQgKyBncnBOZHg7CisKKyAgICAgIHNlY3Rpb25EYXRhLT5odWZmbWFuQml0cyA9IChzZWN0aW9uRGF0YS0+aHVmZm1hbkJpdHMgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWN0aW9uSW5mb1tpXS5zZWN0aW9uQml0cyAtIHNpZGVJbmZvVGFiW3NlY3Rpb25JbmZvW2ldLnNmYkNudF0pKTsKKyAgICAgIHNlY3Rpb25EYXRhLT5zaWRlSW5mb0JpdHMgPSAoc2VjdGlvbkRhdGEtPnNpZGVJbmZvQml0cyArIHNpZGVJbmZvVGFiW3NlY3Rpb25JbmZvW2ldLnNmYkNudF0pOworICAgICAgc2VjdGlvbkRhdGEtPnNlY3Rpb25JbmZvW3NlY3Rpb25EYXRhLT5ub09mU2VjdGlvbnNdID0gc2VjdGlvbkluZm9baV07ICAgICAgICAgICAgIAorICAgICAgc2VjdGlvbkRhdGEtPm5vT2ZTZWN0aW9ucyA9IHNlY3Rpb25EYXRhLT5ub09mU2VjdGlvbnMgKyAxOworICAgIH0KKyAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9ubmFtZTogc2NmQ291bnQKKyogcmV0dXJucyAgICAgOiAtLS0KKyogZGVzY3JpcHRpb24gOiBjb3VudCBiaXRzIHVzZWQgYnkgc2NhbGVmYWN0b3JzLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBzY2ZDb3VudChjb25zdCBXb3JkMTYgKnNjYWxlZmFjR2FpbiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVXb3JkMTYgKm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgICBTRUNUSU9OX0RBVEEgKiBzZWN0aW9uRGF0YSkKKworeworICBTRUNUSU9OX0lORk8gKnBzZWN0aW9uSW5mbzsNCisgIFNFQ1RJT05fSU5GTyAqcHNlY3Rpb25JbmZvbTsNCisNCisgIC8qIGNvdW50ZXIgKi8KKyAgV29yZDMyIGkgPSAwOyAvKiBzZWN0aW9uIGNvdW50ZXIgKi8KKyAgV29yZDMyIGogPSAwOyAvKiBzZmIgY291bnRlciAqLworICBXb3JkMzIgayA9IDA7IC8qIGN1cnJlbnQgc2VjdGlvbiBhdXhpbGlhcnkgY291bnRlciAqLworICBXb3JkMzIgbSA9IDA7IC8qIG90aGVyIHNlY3Rpb24gYXV4aWxpYXJ5IGNvdW50ZXIgKi8KKyAgV29yZDMyIG4gPSAwOyAvKiBvdGhlciBzZmIgYXV4aWxpYXJ5IGNvdW50ZXIgKi8KKworICAvKiBmdXJ0aGVyIHZhcmlhYmxlcyAqLworICBXb3JkMzIgbGFzdFZhbFNjZiAgICAgPSAwOworICBXb3JkMzIgZGVsdGFTY2YgICAgICAgPSAwOworICBGbGFnIGZvdW5kICAgICAgICAgICAgPSAwOworICBXb3JkMzIgc2NmU2tpcENvdW50ZXIgPSAwOyAgICAgICAgICAgCisgICAgICAgICAKKworICBzZWN0aW9uRGF0YS0+c2NhbGVmYWNCaXRzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgCisgIGlmIChzY2FsZWZhY0dhaW4gPT0gTlVMTCkgeworICAgIHJldHVybjsKKyAgfQorCisgIGxhc3RWYWxTY2YgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBzZWN0aW9uRGF0YS0+Zmlyc3RTY2YgPSAwOyAgICAgICAgDQorICAKKyAgcHNlY3Rpb25JbmZvID0gc2VjdGlvbkRhdGEtPnNlY3Rpb25JbmZvOworICBmb3IgKGk9MDsgaTxzZWN0aW9uRGF0YS0+bm9PZlNlY3Rpb25zOyBpKyspIHsKKyAgICAgCisgICAgaWYgKHBzZWN0aW9uSW5mby0+Y29kZUJvb2sgIT0gQ09ERV9CT09LX1pFUk9fTk8pIHsKKyAgICAgIHNlY3Rpb25EYXRhLT5maXJzdFNjZiA9IHBzZWN0aW9uSW5mby0+c2ZiU3RhcnQ7ICAgICAgCisgICAgICBsYXN0VmFsU2NmID0gc2NhbGVmYWNHYWluW3NlY3Rpb25EYXRhLT5maXJzdFNjZl07ICAgICAgICAgICAgICAgICAgCisgICAgICBicmVhazsKKyAgICB9DQorCXBzZWN0aW9uSW5mbyArPSAxOworICB9DQorCisgIHBzZWN0aW9uSW5mbyA9IHNlY3Rpb25EYXRhLT5zZWN0aW9uSW5mbzsKKyAgZm9yIChpPTA7IGk8c2VjdGlvbkRhdGEtPm5vT2ZTZWN0aW9uczsgaSsrLCBwc2VjdGlvbkluZm8gKz0gMSkgeworICAgICAgIAorICAgIGlmIChwc2VjdGlvbkluZm8tPmNvZGVCb29rICE9IENPREVfQk9PS19aRVJPX05PCisgICAgICAgICYmIHBzZWN0aW9uSW5mby0+Y29kZUJvb2sgIT0gQ09ERV9CT09LX1BOU19OTykgeworICAgICAgZm9yIChqID0gcHNlY3Rpb25JbmZvLT5zZmJTdGFydDsKKyAgICAgICAgICAgaiA8IChwc2VjdGlvbkluZm8tPnNmYlN0YXJ0ICsgcHNlY3Rpb25JbmZvLT5zZmJDbnQpOyBqKyspIHsKKyAgICAgICAgLyogY2hlY2sgaWYgd2UgY2FuIHJlcGVhdCB0aGUgbGFzdCB2YWx1ZSB0byBzYXZlIGJpdHMgKi8KKyAgICAgICAgIAorICAgICAgICBpZiAobWF4VmFsdWVJblNmYltqXSA9PSAwKSB7CisgICAgICAgICAgZm91bmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgIGlmIChzY2ZTa2lwQ291bnRlciA9PSAwKSB7CisgICAgICAgICAgICAvKiBlbmQgb2Ygc2VjdGlvbiAqLworICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGogLSAoKHBzZWN0aW9uSW5mby0+c2ZiU3RhcnQgKyBwc2VjdGlvbkluZm8tPnNmYkNudCkgLSAxKSA9PSAwKSB7CisgICAgICAgICAgICAgIGZvdW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZm9yIChrID0gaiArIDE7IGsgPCBwc2VjdGlvbkluZm8tPnNmYlN0YXJ0ICsgcHNlY3Rpb25JbmZvLT5zZmJDbnQ7IGsrKykgeworICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAobWF4VmFsdWVJblNmYltrXSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICBpbnQgdG1wID0gTF9hYnMoc2NhbGVmYWNHYWluW2tdIC0gbGFzdFZhbFNjZik7CisJCQkJICBmb3VuZCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICBpZiAoIHRtcCA8IENPREVfQk9PS19TQ0ZfTEFWKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHNhdmUgYml0cyAqLworICAgICAgICAgICAgICAgICAgICBkZWx0YVNjZiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGRvIG5vdCBzYXZlIGJpdHMgKi8KKyAgICAgICAgICAgICAgICAgICAgZGVsdGFTY2YgPSBsYXN0VmFsU2NmIC0gc2NhbGVmYWNHYWluW2pdOworICAgICAgICAgICAgICAgICAgICBsYXN0VmFsU2NmID0gc2NhbGVmYWNHYWluW2pdOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzY2ZTa2lwQ291bnRlciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIGNvdW50IHNjYWxlZmFjdG9yIHNraXAgKi8KKyAgICAgICAgICAgICAgICBzY2ZTa2lwQ291bnRlciA9IHNjZlNraXBDb3VudGVyICsgMTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCQkJDQorCQkJcHNlY3Rpb25JbmZvbSA9IHBzZWN0aW9uSW5mbyArIDE7CisgICAgICAgICAgICAvKiBzZWFyY2ggZm9yIHRoZSBuZXh0IG1heFZhbHVlSW5TZmJbXSAhPSAwIGluIGFsbCBvdGhlciBzZWN0aW9ucyAqLworICAgICAgICAgICAgZm9yIChtID0gaSArIDE7IChtIDwgc2VjdGlvbkRhdGEtPm5vT2ZTZWN0aW9ucykgJiYgKGZvdW5kID09IDApOyBtKyspIHsKKyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGlmICgocHNlY3Rpb25JbmZvbS0+Y29kZUJvb2sgIT0gQ09ERV9CT09LX1pFUk9fTk8pICYmCisgICAgICAgICAgICAgICAgICAocHNlY3Rpb25JbmZvbS0+Y29kZUJvb2sgIT0gQ09ERV9CT09LX1BOU19OTykpIHsKKyAgICAgICAgICAgICAgICBmb3IgKG4gPSBwc2VjdGlvbkluZm9tLT5zZmJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgIG4gPCAocHNlY3Rpb25JbmZvbS0+c2ZiU3RhcnQgKyBwc2VjdGlvbkluZm9tLT5zZmJDbnQpOyBuKyspIHsKKyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIGlmIChtYXhWYWx1ZUluU2ZiW25dICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoIChhYnNfcyhzY2FsZWZhY0dhaW5bbl0gLSBsYXN0VmFsU2NmKSA8IENPREVfQk9PS19TQ0ZfTEFWKSkgeworICAgICAgICAgICAgICAgICAgICAgIGRlbHRhU2NmID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgIGRlbHRhU2NmID0gKGxhc3RWYWxTY2YgLSBzY2FsZWZhY0dhaW5bal0pOworICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWxTY2YgPSBzY2FsZWZhY0dhaW5bal07ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgIHNjZlNraXBDb3VudGVyID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgLyogY291bnQgc2NhbGVmYWN0b3Igc2tpcCAqLworICAgICAgICAgICAgICAgICAgc2NmU2tpcENvdW50ZXIgPSBzY2ZTa2lwQ291bnRlciArIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9DQorDQorCQkJICBwc2VjdGlvbkluZm9tICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZm91bmQgPT0gMCkgeworICAgICAgICAgICAgICBkZWx0YVNjZiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBzY2ZTa2lwQ291bnRlciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlbHRhU2NmID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHNjZlNraXBDb3VudGVyID0gc2NmU2tpcENvdW50ZXIgLSAxOworICAgICAgICAgIH0NCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZGVsdGFTY2YgPSBsYXN0VmFsU2NmIC0gc2NhbGVmYWNHYWluW2pdOworICAgICAgICAgIGxhc3RWYWxTY2YgPSBzY2FsZWZhY0dhaW5bal07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIHNlY3Rpb25EYXRhLT5zY2FsZWZhY0JpdHMgKz0gYml0Q291bnRTY2FsZWZhY3RvckRlbHRhKGRlbHRhU2NmKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworCit0eXBlZGVmIFdvcmQxNiAoKmxvb2tVcFRhYmxlKVtDT0RFX0JPT0tfRVNDX05EWCArIDFdOworCisKK1dvcmQxNgorZHluQml0Q291bnQoY29uc3QgV29yZDE2ICAqcXVhbnRTcGVjdHJ1bSwKKyAgICAgICAgICAgIGNvbnN0IFVXb3JkMTYgKm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICBjb25zdCBXb3JkMTYgICpzY2FsZWZhYywKKyAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIGJsb2NrVHlwZSwKKyAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIHNmYkNudCwKKyAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgc2ZiUGVyR3JvdXAsCisgICAgICAgICAgICBjb25zdCBXb3JkMTYgICpzZmJPZmZzZXQsCisgICAgICAgICAgICBTRUNUSU9OX0RBVEEgICpzZWN0aW9uRGF0YSkKK3sKKyAgc2VjdGlvbkRhdGEtPmJsb2NrVHlwZSAgICAgID0gYmxvY2tUeXBlOyAgICAgICAgICAgICAgICAgICAgICAgCisgIHNlY3Rpb25EYXRhLT5zZmJDbnQgICAgICAgICA9IHNmYkNudDsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBzZWN0aW9uRGF0YS0+c2ZiUGVyR3JvdXAgICAgPSBzZmJQZXJHcm91cDsgICAgICAgICAgIAorICBpZihzZmJQZXJHcm91cCkKKwlzZWN0aW9uRGF0YS0+bm9PZkdyb3VwcyAgID0gc2ZiQ250L3NmYlBlckdyb3VwOyAKKyAgZWxzZQorCXNlY3Rpb25EYXRhLT5ub09mR3JvdXBzICAgPSAweDdmZmY7CisgIHNlY3Rpb25EYXRhLT5tYXhTZmJQZXJHcm91cCA9IG1heFNmYlBlckdyb3VwOyAgICAgICAgICAgICAgICAgIAorCisgIG5vaXNlbGVzc0NvdW50ZXIoc2VjdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgICAgc2VjdGlvbkRhdGEtPm1lcmdlR2Fpbkxvb2tVcCwKKyAgICAgICAgICAgICAgICAgICAobG9va1VwVGFibGUpc2VjdGlvbkRhdGEtPmJpdExvb2tVcCwKKyAgICAgICAgICAgICAgICAgICBxdWFudFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgIG1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgIGJsb2NrVHlwZSk7CisKKyAgc2NmQ291bnQoc2NhbGVmYWMsCisgICAgICAgICAgIG1heFZhbHVlSW5TZmIsCisgICAgICAgICAgIHNlY3Rpb25EYXRhKTsKKworCisgIHJldHVybiAoc2VjdGlvbkRhdGEtPmh1ZmZtYW5CaXRzICsgc2VjdGlvbkRhdGEtPnNpZGVJbmZvQml0cyArIA0KKwkgICAgICBzZWN0aW9uRGF0YS0+c2NhbGVmYWNCaXRzKTsKK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvZ3JwX2RhdGEuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2dycF9kYXRhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhkOWE3NgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2dycF9kYXRhLmMKQEAgLTAsMCArMSwxODggQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWdycF9kYXRhLmMNCisNCisJQ29udGVudDoJU2hvcnQgYmxvY2sgZ3JvdXBpbmcgZnVuY3Rpb24NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiZ3JwX2RhdGEuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGdyb3VwU2hvcnREYXRhCisqIGRlc2NyaXB0aW9uOiAgZ3JvdXAgc2hvcnQgZGF0YSBmb3IgbmV4dCBxdWFudGl6YXRpb24gYW5kIGNvZGluZworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQKK2dyb3VwU2hvcnREYXRhKFdvcmQzMiAgICAgICAgKm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAgKnRtcFNwZWN0cnVtLAorICAgICAgICAgICAgICAgU0ZCX1RIUkVTSE9MRCAqc2ZiVGhyZXNob2xkLAorICAgICAgICAgICAgICAgU0ZCX0VORVJHWSAgICAqc2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgU0ZCX0VORVJHWSAgICAqc2ZiRW5lcmd5TVMsCisgICAgICAgICAgICAgICBTRkJfRU5FUkdZICAgICpzZmJTcHJlYWRlZEVuZXJneSwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIHNmYkNudCwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgKnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgKnNmYk1pblNuciwKKyAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgKmdyb3VwZWRTZmJPZmZzZXQsCisgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICptYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgKmdyb3VwZWRTZmJNaW5TbnIsCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICBub09mR3JvdXBzLAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAqZ3JvdXBMZW4pCit7CisgIFdvcmQzMiBpLCBqOworICBXb3JkMzIgbGluZTsKKyAgV29yZDMyIHNmYjsKKyAgV29yZDMyIGdycDsKKyAgV29yZDMyIHduZDsKKyAgV29yZDMyIG9mZnNldDsKKyAgV29yZDMyIGhpZ2hlc3RTZmI7CisKKyAgLyogZm9yIHNob3J0OiByZWdyb3VwIGFuZCAgKi8KKyAgLyogY3VtdWxhdGUgZW5lcmdpZXMgdW5kIHRocmVzaG9sZHMgZ3JvdXAtd2lzZSAuICovCisgIAorICAvKiBjYWxjdWxhdGUgc2ZiQ250ICovCisgIGhpZ2hlc3RTZmIgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yICh3bmQ9MDsgd25kPFRSQU5TX0ZBQzsgd25kKyspIHsKKyAgICBmb3IgKHNmYj1zZmJDbnQgLSAxOyBzZmI+PWhpZ2hlc3RTZmI7IHNmYi0tKSB7CisgICAgICBmb3IgKGxpbmU9KHNmYk9mZnNldFtzZmIgKyAxXSAtIDEpOyBsaW5lPj1zZmJPZmZzZXRbc2ZiXTsgbGluZS0tKSB7CisgICAgICAgIAorICAgICAgICBpZiAobWRjdFNwZWN0cnVtW3duZCpGUkFNRV9MRU5fU0hPUlQrbGluZV0gIT0gMCkgYnJlYWs7IAorICAgICAgfQorICAgICAgCisgICAgICBpZiAobGluZSA+PSBzZmJPZmZzZXRbc2ZiXSkgYnJlYWs7CisgICAgfQorICAgIGhpZ2hlc3RTZmIgPSBtYXgoaGlnaGVzdFNmYiwgc2ZiKTsKKyAgfQorICAKKyAgaWYgKGhpZ2hlc3RTZmIgPCAwKSB7CisgICAgaGlnaGVzdFNmYiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorICAqbWF4U2ZiUGVyR3JvdXAgPSBoaWdoZXN0U2ZiICsgMTsKKworICAvKiBjYWxjdWxhdGUgc2ZiT2Zmc2V0ICovCisgIGkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgb2Zmc2V0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKGdycCA9IDA7IGdycCA8IG5vT2ZHcm91cHM7IGdycCsrKSB7CisgICAgZm9yIChzZmIgPSAwOyBzZmIgPCBzZmJDbnQ7IHNmYisrKSB7CisgICAgICBncm91cGVkU2ZiT2Zmc2V0W2ldID0gb2Zmc2V0ICsgc2ZiT2Zmc2V0W3NmYl0gKiBncm91cExlbltncnBdOworICAgICAgaSArPSAxOworICAgIH0KKyAgICBvZmZzZXQgKz0gZ3JvdXBMZW5bZ3JwXSAqIEZSQU1FX0xFTl9TSE9SVDsKKyAgfQorICBncm91cGVkU2ZiT2Zmc2V0W2ldID0gRlJBTUVfTEVOX0xPTkc7ICAgICAgICAgICAgICAgICAgCisgIGkgKz0gMTsKKworICAvKiBjYWxjdWxhdGUgbWluU25yICovCisgIGkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgb2Zmc2V0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKGdycCA9IDA7IGdycCA8IG5vT2ZHcm91cHM7IGdycCsrKSB7CisgICAgZm9yIChzZmIgPSAwOyBzZmIgPCBzZmJDbnQ7IHNmYisrKSB7CisgICAgICBncm91cGVkU2ZiTWluU25yW2ldID0gc2ZiTWluU25yW3NmYl07ICAgICAgICAgICAgICAKKyAgICAgIGkgKz0gMTsKKyAgICB9CisgICAgb2Zmc2V0ICs9IGdyb3VwTGVuW2dycF0gKiBGUkFNRV9MRU5fU0hPUlQ7CisgIH0KKworCisgIC8qIHN1bSB1cCBzZmJUaHJlc2hvbGRzICovCisgIHduZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yIChncnAgPSAwOyBncnAgPCBub09mR3JvdXBzOyBncnArKykgeworICAgIGZvciAoc2ZiID0gMDsgc2ZiIDwgc2ZiQ250OyBzZmIrKykgeworICAgICAgV29yZDMyIHRocmVzaCA9IHNmYlRocmVzaG9sZC0+c2ZiU2hvcnRbd25kXVtzZmJdOyAgICAgICAgICAKKyAgICAgIGZvciAoaj0xOyBqPGdyb3VwTGVuW2dycF07IGorKykgeworICAgICAgICB0aHJlc2ggPSBMX2FkZCh0aHJlc2gsIHNmYlRocmVzaG9sZC0+c2ZiU2hvcnRbd25kK2pdW3NmYl0pOworICAgICAgfQorICAgICAgc2ZiVGhyZXNob2xkLT5zZmJMb25nW2ldID0gdGhyZXNoOyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGkgKz0gMTsKKyAgICB9CisgICAgd25kICs9IGdyb3VwTGVuW2dycF07CisgIH0KKworICAvKiBzdW0gdXAgc2ZiRW5lcmdpZXMgbGVmdC9yaWdodCAqLworICB3bmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGZvciAoZ3JwID0gMDsgZ3JwIDwgbm9PZkdyb3VwczsgZ3JwKyspIHsKKyAgICBmb3IgKHNmYiA9IDA7IHNmYiA8IHNmYkNudDsgc2ZiKyspIHsKKyAgICAgIFdvcmQzMiBlbmVyZ3kgPSBzZmJFbmVyZ3ktPnNmYlNob3J0W3duZF1bc2ZiXTsgICAgICAgICAgICAgCisgICAgICBmb3IgKGo9MTsgajxncm91cExlbltncnBdOyBqKyspIHsKKyAgICAgICAgZW5lcmd5ID0gTF9hZGQoZW5lcmd5LCBzZmJFbmVyZ3ktPnNmYlNob3J0W3duZCtqXVtzZmJdKTsKKyAgICAgIH0KKyAgICAgIHNmYkVuZXJneS0+c2ZiTG9uZ1tpXSA9IGVuZXJneTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBpICs9IDE7CisgICAgfQorICAgIHduZCArPSBncm91cExlbltncnBdOworICB9CisKKyAgLyogc3VtIHVwIHNmYkVuZXJnaWVzIG1pZC9zaWRlICovCisgIHduZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yIChncnAgPSAwOyBncnAgPCBub09mR3JvdXBzOyBncnArKykgeworICAgIGZvciAoc2ZiID0gMDsgc2ZiIDwgc2ZiQ250OyBzZmIrKykgeworICAgICAgV29yZDMyIGVuZXJneSA9IHNmYkVuZXJneU1TLT5zZmJTaG9ydFt3bmRdW3NmYl07ICAgICAgICAgICAKKyAgICAgIGZvciAoaj0xOyBqPGdyb3VwTGVuW2dycF07IGorKykgeworICAgICAgICBlbmVyZ3kgPSBMX2FkZChlbmVyZ3ksIHNmYkVuZXJneU1TLT5zZmJTaG9ydFt3bmQral1bc2ZiXSk7CisgICAgICB9CisgICAgICBzZmJFbmVyZ3lNUy0+c2ZiTG9uZ1tpXSA9IGVuZXJneTsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgaSArPSAxOworICAgIH0KKyAgICB3bmQgKz0gZ3JvdXBMZW5bZ3JwXTsKKyAgfQorCisgIC8qIHN1bSB1cCBzZmJTcHJlYWRlZEVuZXJnaWVzICovCisgIHduZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yIChncnAgPSAwOyBncnAgPCBub09mR3JvdXBzOyBncnArKykgeworICAgIGZvciAoc2ZiID0gMDsgc2ZiIDwgc2ZiQ250OyBzZmIrKykgeworICAgICAgV29yZDMyIGVuZXJneSA9IHNmYlNwcmVhZGVkRW5lcmd5LT5zZmJTaG9ydFt3bmRdW3NmYl07ICAgICAKKyAgICAgIGZvciAoaj0xOyBqPGdyb3VwTGVuW2dycF07IGorKykgeworICAgICAgICBlbmVyZ3kgPSBMX2FkZChlbmVyZ3ksIHNmYlNwcmVhZGVkRW5lcmd5LT5zZmJTaG9ydFt3bmQral1bc2ZiXSk7CisgICAgICB9CisgICAgICBzZmJTcHJlYWRlZEVuZXJneS0+c2ZiTG9uZ1tpXSA9IGVuZXJneTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgaSArPSAxOworICAgIH0KKyAgICB3bmQgKz0gZ3JvdXBMZW5bZ3JwXTsKKyAgfQorCisgIC8qIHJlLWdyb3VwIHNwZWN0cnVtICovCisgIHduZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yIChncnAgPSAwOyBncnAgPCBub09mR3JvdXBzOyBncnArKykgeworICAgIGZvciAoc2ZiID0gMDsgc2ZiIDwgc2ZiQ250OyBzZmIrKykgeworICAgICAgZm9yIChqID0gMDsgaiA8IGdyb3VwTGVuW2dycF07IGorKykgeworICAgICAgICBXb3JkMTYgbGluZU9mZnNldCA9IEZSQU1FX0xFTl9TSE9SVCAqICh3bmQgKyBqKTsKKyAgICAgICAgZm9yIChsaW5lID0gbGluZU9mZnNldCArIHNmYk9mZnNldFtzZmJdOyBsaW5lIDwgbGluZU9mZnNldCArIHNmYk9mZnNldFtzZmIrMV07IGxpbmUrKykgeworICAgICAgICAgIHRtcFNwZWN0cnVtW2ldID0gbWRjdFNwZWN0cnVtW2xpbmVdOyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBpID0gaSArIDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgd25kICs9IGdyb3VwTGVuW2dycF07CisgIH0KKworICBmb3IoaT0wO2k8RlJBTUVfTEVOX0xPTkc7aSs9NCkgeworICAgIG1kY3RTcGVjdHJ1bVtpXSA9IHRtcFNwZWN0cnVtW2ldOyAgDQorCW1kY3RTcGVjdHJ1bVtpKzFdID0gdG1wU3BlY3RydW1baSsxXTsgIA0KKwltZGN0U3BlY3RydW1baSsyXSA9IHRtcFNwZWN0cnVtW2krMl07ICANCisJbWRjdFNwZWN0cnVtW2krM10gPSB0bXBTcGVjdHJ1bVtpKzNdOyAgCQorICB9Cit9CisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2ludGVyZmFjZS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvaW50ZXJmYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA0YjFkNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2ludGVyZmFjZS5jCkBAIC0wLDAgKzEsMTEyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlpbnRlcmZhY2UuYw0KKw0KKwlDb250ZW50OglJbnRlcmZhY2UgcHN5Y2hvYWNjb3VzdGljL3F1YW50aXplciBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBCdWlsZEludGVyZmFjZQorKiBkZXNjcmlwdGlvbjogIHVwZGF0ZSBvdXRwdXQgcGFyYW1ldGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBCdWlsZEludGVyZmFjZShXb3JkMzIgICAgICAgICAgICAgICAgICAqZ3JvdXBlZE1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgIG1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgU0ZCX1RIUkVTSE9MRCAgICAgICAgICAgKmdyb3VwZWRTZmJUaHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgIFNGQl9FTkVSR1kgICAgICAgICAgICAgICpncm91cGVkU2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICBTRkJfRU5FUkdZICAgICAgICAgICAgICAqZ3JvdXBlZFNmYlNwcmVhZGVkRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBTRkJfRU5FUkdZX1NVTSAgICAgc2ZiRW5lcmd5U3VtTFIsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNGQl9FTkVSR1lfU1VNICAgICBzZmJFbmVyZ3lTdW1NUywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgIHdpbmRvd1NlcXVlbmNlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICAgd2luZG93U2hhcGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgICBncm91cGVkU2ZiQ250LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICAqZ3JvdXBlZFNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgIG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICAqZ3JvdXBlZFNmYk1pblNuciwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgIG5vT2ZHcm91cHMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgICpncm91cExlbiwKKyAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMICAgICAgICAgKnBzeU91dENoKQoreworICBXb3JkMzIgajsKKyAgV29yZDMyIGdycDsgCisgIFdvcmQzMiBtYXNrOw0KKyAgV29yZDE2ICp0bXBWOworCisgIC8qCisgIGNvcHkgdmFsdWVzIHRvIHBzeU91dAorICAqLworICBwc3lPdXRDaC0+bWF4U2ZiUGVyR3JvdXAgICAgPSBtYXhTZmJQZXJHcm91cDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBwc3lPdXRDaC0+c2ZiQ250ICAgICAgICAgICAgPSBncm91cGVkU2ZiQ250OyAgIAorICBpZihub09mR3JvdXBzKQorCXBzeU91dENoLT5zZmJQZXJHcm91cCAgICAgPSBncm91cGVkU2ZiQ250LyBub09mR3JvdXBzOworICBlbHNlCisJcHN5T3V0Q2gtPnNmYlBlckdyb3VwICAgICA9IDB4N2ZmZjsKKyAgcHN5T3V0Q2gtPndpbmRvd1NlcXVlbmNlICAgID0gd2luZG93U2VxdWVuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgcHN5T3V0Q2gtPndpbmRvd1NoYXBlICAgICAgID0gd2luZG93U2hhcGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgcHN5T3V0Q2gtPm1kY3RTY2FsZSAgICAgICAgID0gbWRjdFNjYWxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgcHN5T3V0Q2gtPm1kY3RTcGVjdHJ1bSAgICAgID0gZ3JvdXBlZE1kY3RTcGVjdHJ1bTsKKyAgcHN5T3V0Q2gtPnNmYkVuZXJneSAgICAgICAgID0gZ3JvdXBlZFNmYkVuZXJneS0+c2ZiTG9uZzsKKyAgcHN5T3V0Q2gtPnNmYlRocmVzaG9sZCAgICAgID0gZ3JvdXBlZFNmYlRocmVzaG9sZC0+c2ZiTG9uZzsKKyAgcHN5T3V0Q2gtPnNmYlNwcmVhZGVkRW5lcmd5ID0gZ3JvdXBlZFNmYlNwcmVhZGVkRW5lcmd5LT5zZmJMb25nOworICAKKyAgdG1wViA9IHBzeU91dENoLT5zZmJPZmZzZXRzOw0KKyAgZm9yKGo9MDsgajxncm91cGVkU2ZiQ250ICsgMTsgaisrKSB7CisgICAgICAqdG1wVisrID0gZ3JvdXBlZFNmYk9mZnNldFtqXTsKKyAgfQorICANCisgIHRtcFYgPSBwc3lPdXRDaC0+c2ZiTWluU25yOworICBmb3Ioaj0wO2o8Z3JvdXBlZFNmYkNudDsgaisrKSB7CisJICAqdG1wVisrID0gICBncm91cGVkU2ZiTWluU25yW2pdOworICB9CisgIAorICAvKiBnZW5lcmF0ZSBncm91cGluZyBtYXNrICovCisgIG1hc2sgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yIChncnAgPSAwOyBncnAgPCBub09mR3JvdXBzOyBncnArKykgeworICAgIG1hc2sgPSBtYXNrIDw8IDE7CisgICAgZm9yIChqPTE7IGo8Z3JvdXBMZW5bZ3JwXTsgaisrKSB7CisgICAgICBtYXNrID0gbWFzayA8PCAxOworICAgICAgbWFzayB8PSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisgIHBzeU91dENoLT5ncm91cGluZ01hc2sgPSBtYXNrOyAKKyAgCisgIGlmICh3aW5kb3dTZXF1ZW5jZSAhPSBTSE9SVF9XSU5ET1cpIHsKKyAgICBwc3lPdXRDaC0+c2ZiRW5TdW1MUiA9ICBzZmJFbmVyZ3lTdW1MUi5zZmJMb25nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHBzeU91dENoLT5zZmJFblN1bU1TID0gIHNmYkVuZXJneVN1bU1TLnNmYkxvbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKyAgZWxzZSB7CisgICAgV29yZDMyIGk7CisgICAgV29yZDMyIGFjY3VTdW1NUz0wOworICAgIFdvcmQzMiBhY2N1U3VtTFI9MDsgICAgICAgIA0KKwlXb3JkMzIgKnBTdW1NUyA9IHNmYkVuZXJneVN1bU1TLnNmYlNob3J0Ow0KKwlXb3JkMzIgKnBTdW1MUiA9IHNmYkVuZXJneVN1bUxSLnNmYlNob3J0OworCisgICAgZm9yIChpPVRSQU5TX0ZBQzsgaTsgaS0tKSB7CisgICAgICBhY2N1U3VtTFIgPSBMX2FkZChhY2N1U3VtTFIsICpwU3VtTFIpOyBwU3VtTFIrKzsKKyAgICAgIGFjY3VTdW1NUyA9IExfYWRkKGFjY3VTdW1NUywgKnBTdW1NUyk7IHBTdW1NUysrOworICAgIH0KKyAgICBwc3lPdXRDaC0+c2ZiRW5TdW1NUyA9IGFjY3VTdW1NUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHBzeU91dENoLT5zZmJFblN1bUxSID0gYWNjdVN1bUxSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2xpbmVfcGUuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2xpbmVfcGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTU3NjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvbGluZV9wZS5jCkBAIC0wLDAgKzEsMTQ1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlsaW5lX3BlLmMNCisNCisJQ29udGVudDoJUGVyY2VwdHVhbCBlbnRyb3BpZSBtb2R1bGUgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisKKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIgorI2luY2x1ZGUgInR5cGVkZWYuaCIKKyNpbmNsdWRlICJsaW5lX3BlLmgiCisKKworc3RhdGljIGNvbnN0IFdvcmQxNiAgQzFfSSA9IDEyOyAgICAvKiBsb2coOC4wKS9sb2coMikgKjQgICAgICAgICAqLworc3RhdGljIGNvbnN0IFdvcmQzMiAgQzJfSSA9IDEwODMwOyAvKiBsb2coMi41KS9sb2coMikgKiAxMDI0ICogNCAqIDIgKi8KK3N0YXRpYyBjb25zdCBXb3JkMTYgIEMzX0kgPSA1NzM7ICAgLyogKDEtQzIvQzEpICoxMDI0ICAgICAgICAgICAgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogcHJlcGFyZVNmYlBlCisqIGRlc2NyaXB0aW9uOiAgY29uc3RhbnRzIHRoYXQgZG8gbm90IGNoYW5nZSBkdXJpbmcgc3VjY2Vzc2l2ZSBwZSBjYWxjdWxhdGlvbnMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIHByZXBhcmVTZmJQZShQRV9EQVRBICpwZURhdGEsCisgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgIFdvcmQxNiBsb2dTZmJFbmVyZ3lbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYk5SZWxldmFudExpbmVzW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgcGVPZmZzZXQpCit7CisgIFdvcmQzMiBzZmJHcnAsIHNmYjsKKyAgV29yZDMyIGNoOyAgICAgCisKKyAgZm9yKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgIFBTWV9PVVRfQ0hBTk5FTCAqcHN5T3V0Q2hhbiA9ICZwc3lPdXRDaGFubmVsW2NoXTsKKyAgICBQRV9DSEFOTkVMX0RBVEEgKnBlQ2hhbkRhdGE9JnBlRGF0YS0+cGVDaGFubmVsRGF0YVtjaF07CisgICAgZm9yKHNmYkdycD0wO3NmYkdycDxwc3lPdXRDaGFuLT5zZmJDbnQ7IHNmYkdycCs9cHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApeworICAgICAgZm9yIChzZmI9MDsgc2ZiPHBzeU91dENoYW4tPm1heFNmYlBlckdyb3VwOyBzZmIrKykgeworCSAgICBwZUNoYW5EYXRhLT5zZmJOTGluZXM0W3NmYkdycCtzZmJdID0gc2ZiTlJlbGV2YW50TGluZXNbY2hdW3NmYkdycCtzZmJdOyAgICAgICAgICAKKyAgICAgICAgc2ZiTlJlbGV2YW50TGluZXNbY2hdW3NmYkdycCtzZmJdID0gc2ZiTlJlbGV2YW50TGluZXNbY2hdW3NmYkdycCtzZmJdID4+IDI7ICAgIAorCSAgICBwZUNoYW5EYXRhLT5zZmJMZEVuZXJneVtzZmJHcnArc2ZiXSA9IGxvZ1NmYkVuZXJneVtjaF1bc2ZiR3JwK3NmYl07ICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcGVEYXRhLT5vZmZzZXQgPSBwZU9mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNhbGNTZmJQZQorKiBkZXNjcmlwdGlvbjogIGNvbnN0UGFydCBpcyBzZmJQZSB3aXRob3V0IHRoZSB0aHJlc2hvbGQgcGFydCBuKmxkKHRocikgb3IgbipDMypsZCh0aHIpCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBjYWxjU2ZiUGUoUEVfREFUQSAqcGVEYXRhLAorICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBuQ2hhbm5lbHMpCit7CisgIFdvcmQzMiBjaDsKKyAgV29yZDMyIHNmYkdycCwgc2ZiOworICBXb3JkMzIgbkxpbmVzNDsKKyAgV29yZDMyIGxkVGhyLCBsZFJhdGlvOw0KKyAgV29yZDMyIHBlLCBjb25zdFBhcnQsIG5BY3RpdmVMaW5lczsKKworICBwZURhdGEtPnBlID0gcGVEYXRhLT5vZmZzZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBwZURhdGEtPmNvbnN0UGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBwZURhdGEtPm5BY3RpdmVMaW5lcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgIFBFX0NIQU5ORUxfREFUQSAqcGVDaGFuRGF0YSA9ICZwZURhdGEtPnBlQ2hhbm5lbERhdGFbY2hdOworICAgIGNvbnN0IFdvcmQzMiAqc2ZiRW5lcmd5ID0gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5OworICAgIGNvbnN0IFdvcmQzMiAqc2ZiVGhyZXNob2xkID0gcHN5T3V0Q2hhbi0+c2ZiVGhyZXNob2xkOworCisgICAgcGUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgY29uc3RQYXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgbkFjdGl2ZUxpbmVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICBmb3Ioc2ZiR3JwPTA7IHNmYkdycDxwc3lPdXRDaGFuLT5zZmJDbnQ7IHNmYkdycCs9cHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApIHsKKyAgICAgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgV29yZDMyIG5yZyA9IHNmYkVuZXJneVtzZmJHcnArc2ZiXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBXb3JkMzIgdGhyZXMgPSBzZmJUaHJlc2hvbGRbc2ZiR3JwK3NmYl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFdvcmQzMiBzZmJMREVuID0gcGVDaGFuRGF0YS0+c2ZiTGRFbmVyZ3lbc2ZiR3JwK3NmYl07DQorCisgICAgICAgIGlmIChucmcgPiB0aHJlcykgeworICAgICAgICAgIGxkVGhyID0gaUxvZzQodGhyZXMpOworCisgICAgICAgICAgbGRSYXRpbyA9IHNmYkxERW4gLSBsZFRocjsKKworICAgICAgICAgIG5MaW5lczQgPSBwZUNoYW5EYXRhLT5zZmJOTGluZXM0W3NmYkdycCtzZmJdOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgIC8qIHNmYlBlID0gbmwqbG9nMihlbi90aHIpKi8KKwkJICBpZiAobGRSYXRpbyA+PSBDMV9JKSB7CisgICAgICAgICAgICBwZUNoYW5EYXRhLT5zZmJQZVtzZmJHcnArc2ZiXSA9IChuTGluZXM0KmxkUmF0aW8gKyA4KSA+PiA0OworICAgICAgICAgICAgcGVDaGFuRGF0YS0+c2ZiQ29uc3RQYXJ0W3NmYkdycCtzZmJdID0gKChuTGluZXM0KnNmYkxERW4pKSA+PiA0OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKwkJICAvKiBzZmJQZSA9IG5sKihjMiArIGMzKmxvZzIoZW4vdGhyKSkqLworICAgICAgICAgICAgcGVDaGFuRGF0YS0+c2ZiUGVbc2ZiR3JwK3NmYl0gPSBleHRyYWN0X2woKExfbXB5X3d4KA0KKyAgICAgICAgICAgICAgICAgICAgKEMyX0kgKyBDM19JICogbGRSYXRpbyAqIDIpIDw8IDQsIG5MaW5lczQpICsgNCkgPj4gMyk7DQorICAgICAgICAgICAgcGVDaGFuRGF0YS0+c2ZiQ29uc3RQYXJ0W3NmYkdycCtzZmJdID0gZXh0cmFjdF9sKCggTF9tcHlfd3goDQorICAgICAgICAgICAgICAgICAgICAoQzJfSSArIEMzX0kgKiBzZmJMREVuICogMikgPDwgNCwgbkxpbmVzNCkgKyA0KSA+PiAzKTsNCisgICAgICAgICAgICBuTGluZXM0ID0gKG5MaW5lczQgKiBDM19JICsgKDEwMjQ8PDEpKSA+PiAxMDsKKyAgICAgICAgICB9CisgICAgICAgICAgcGVDaGFuRGF0YS0+c2ZiTkFjdGl2ZUxpbmVzW3NmYkdycCtzZmJdID0gbkxpbmVzNCA+PiAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHBlQ2hhbkRhdGEtPnNmYlBlW3NmYkdycCtzZmJdID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgIHBlQ2hhbkRhdGEtPnNmYkNvbnN0UGFydFtzZmJHcnArc2ZiXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgIHBlQ2hhbkRhdGEtPnNmYk5BY3RpdmVMaW5lc1tzZmJHcnArc2ZiXSA9IDA7ICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIHBlID0gcGUgKyBwZUNoYW5EYXRhLT5zZmJQZVtzZmJHcnArc2ZiXTsKKyAgICAgICAgY29uc3RQYXJ0ID0gY29uc3RQYXJ0ICsgcGVDaGFuRGF0YS0+c2ZiQ29uc3RQYXJ0W3NmYkdycCtzZmJdOworICAgICAgICBuQWN0aXZlTGluZXMgPSBuQWN0aXZlTGluZXMgKyBwZUNoYW5EYXRhLT5zZmJOQWN0aXZlTGluZXNbc2ZiR3JwK3NmYl07CisgICAgICB9CisgICAgfQorCQ0KKwlwZUNoYW5EYXRhLT5wZSA9IHNhdHVyYXRlKHBlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICBwZUNoYW5EYXRhLT5jb25zdFBhcnQgPSBzYXR1cmF0ZShjb25zdFBhcnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgcGVDaGFuRGF0YS0+bkFjdGl2ZUxpbmVzID0gc2F0dXJhdGUobkFjdGl2ZUxpbmVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCisgICAgCisJcGUgKz0gcGVEYXRhLT5wZTsKKwlwZURhdGEtPnBlID0gc2F0dXJhdGUocGUpOyAKKyAgICBjb25zdFBhcnQgKz0gcGVEYXRhLT5jb25zdFBhcnQ7CisJcGVEYXRhLT5jb25zdFBhcnQgPSBzYXR1cmF0ZShjb25zdFBhcnQpOyAKKyAgICBuQWN0aXZlTGluZXMgKz0gcGVEYXRhLT5uQWN0aXZlTGluZXM7CisJcGVEYXRhLT5uQWN0aXZlTGluZXMgPSBzYXR1cmF0ZShuQWN0aXZlTGluZXMpOworICB9IAorfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvbWVtYWxpZ24uYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL21lbWFsaWduLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QyMDM1MjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9tZW1hbGlnbi5jCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCisgKioKKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKioKKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKioKKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwlGaWxlOgkJbWVtX2FsaWduLmMKKworCUNvbnRlbnQ6CU1lbW9yeSBhbGxvYyBhbGlnbm1lbnRzIGZ1bmN0aW9ucworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlCSJtZW1hbGlnbi5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogbWVtX21hbGxvYworKiBkZXNjcmlwdGlvbjogIG1hbGxvYyB0aGUgYWxpZ25tZW50cyBtZW1vcnkgCisqIHJldHVybnM6ICAgICAgdGhlIHBvaW50IG9mIHRoZSBtZW1vcnkKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkICoKK21lbV9tYWxsb2MoVk9fTUVNX09QRVJBVE9SICpwTWVtb3AsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBjaGFyIGFsaWdubWVudCwgdW5zaWduZWQgaW50IENvZGVjSUQpCit7CisJaW50IHJldDsKKwl1bnNpZ25lZCBjaGFyICptZW1fcHRyOworCVZPX01FTV9JTkZPIE1lbUluZm87CisKKwlpZiAoIWFsaWdubWVudCkgeworCisJCU1lbUluZm8uRmxhZyA9IDA7CisJCU1lbUluZm8uU2l6ZSA9IHNpemUgKyAxOworCQlyZXQgPSBwTWVtb3AtPkFsbG9jKENvZGVjSUQsICZNZW1JbmZvKTsKKwkJaWYocmV0ICE9IDApCisJCQlyZXR1cm4gMDsKKwkJbWVtX3B0ciA9ICh1bnNpZ25lZCBjaGFyICopTWVtSW5mby5WQnVmZmVyOworCisJCXBNZW1vcC0+U2V0KENvZGVjSUQsIG1lbV9wdHIsIDAsIHNpemUgKyAxKTsKKworCQkqbWVtX3B0ciA9ICh1bnNpZ25lZCBjaGFyKTE7CisKKwkJcmV0dXJuICgodm9pZCAqKShtZW1fcHRyKzEpKTsKKwl9IGVsc2UgeworCQl1bnNpZ25lZCBjaGFyICp0bXA7CisKKwkJTWVtSW5mby5GbGFnID0gMDsKKwkJTWVtSW5mby5TaXplID0gc2l6ZSArIGFsaWdubWVudDsKKwkJcmV0ID0gcE1lbW9wLT5BbGxvYyhDb2RlY0lELCAmTWVtSW5mbyk7CisJCWlmKHJldCAhPSAwKQorCQkJcmV0dXJuIDA7CisKKwkJdG1wID0gKHVuc2lnbmVkIGNoYXIgKilNZW1JbmZvLlZCdWZmZXI7CisKKwkJcE1lbW9wLT5TZXQoQ29kZWNJRCwgdG1wLCAwLCBzaXplICsgYWxpZ25tZW50KTsKKworCQltZW1fcHRyID0KKwkJCSh1bnNpZ25lZCBjaGFyICopICgodW5zaWduZWQgaW50KSAodG1wICsgYWxpZ25tZW50IC0gMSkgJgorCQkJCQkofigodW5zaWduZWQgaW50KSAoYWxpZ25tZW50IC0gMSkpKSk7CisKKwkJaWYgKG1lbV9wdHIgPT0gdG1wKQorCQkJbWVtX3B0ciArPSBhbGlnbm1lbnQ7CisKKwkJKihtZW1fcHRyIC0gMSkgPSAodW5zaWduZWQgY2hhcikgKG1lbV9wdHIgLSB0bXApOworCisJCXJldHVybiAoKHZvaWQgKiltZW1fcHRyKTsKKwl9CisKKwlyZXR1cm4oMCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IG1lbV9mcmVlCisqIGRlc2NyaXB0aW9uOiAgZnJlZSB0aGUgbWVtb3J5CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZAorbWVtX2ZyZWUoVk9fTUVNX09QRVJBVE9SICpwTWVtb3AsIHZvaWQgKm1lbV9wdHIsIHVuc2lnbmVkIGludCBDb2RlY0lEKQoreworCisJdW5zaWduZWQgY2hhciAqcHRyOworCisJaWYgKG1lbV9wdHIgPT0gMCkKKwkJcmV0dXJuOworCisJcHRyID0gbWVtX3B0cjsKKworCXB0ciAtPSAqKHB0ciAtIDEpOworCisJcE1lbW9wLT5GcmVlKENvZGVjSUQsIHB0cik7Cit9CisKKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9tc19zdGVyZW8uYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL21zX3N0ZXJlby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4M2QwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9tc19zdGVyZW8uYwpAQCAtMCwwICsxLDEzOSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJbXNfc3RlcmVvLmMNCisNCisJQ29udGVudDoJTVMgc3RlcmVvIHByb2Nlc3NpbmcgZnVuY3Rpb24NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCIKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJtc19zdGVyZW8uaCIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogTXNTdGVyZW9Qcm9jZXNzaW5nCisqIGRlc2NyaXB0aW9uOiAgZGV0ZWN0IHVzZSBtcyBzdGVyZW8gb3Igbm90CisqCQkJCWlmICgobWluKHRockxuLCB0aHJSbikqbWluKHRockxuLCB0aHJSbikpLyhlbk1uKmVuU24pKSAKKyoJCQkJPj0gKCh0aHJMbiAqdGhyUm4pLyhlbkxuKmVuUm4pKSB0aGVuIG1zIHN0ZXJlbworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgTXNTdGVyZW9Qcm9jZXNzaW5nKFdvcmQzMiAgICAgICAqc2ZiRW5lcmd5TGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqc2ZiRW5lcmd5UmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgKnNmYkVuZXJneU1pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAqc2ZiRW5lcmd5U2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqbWRjdFNwZWN0cnVtTGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqbWRjdFNwZWN0cnVtUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKnNmYlRocmVzaG9sZExlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKnNmYlRocmVzaG9sZFJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpzZmJTcHJlYWRlZEVuTGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqc2ZiU3ByZWFkZWRFblJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICptc0RpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqbXNNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICBzZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICBtYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqc2ZiT2Zmc2V0KSB7CisgIFdvcmQzMiB0ZW1wOworICBXb3JkMzIgc2ZiLHNmYm9mZnMsIGo7IAorICBXb3JkMzIgbXNNYXNrVHJ1ZVNvbWV3aGVyZSA9IDA7CisgIFdvcmQzMiBtc01hc2tGYWxzZVNvbWV3aGVyZSA9IDA7CisKKyAgZm9yIChzZmI9MDsgc2ZiPHNmYkNudDsgc2ZiKz1zZmJQZXJHcm91cCkgeworICAgIGZvciAoc2Zib2Zmcz0wO3NmYm9mZnM8bWF4U2ZiUGVyR3JvdXA7c2Zib2ZmcysrKSB7CisKKyAgICAgIFdvcmQzMiB0ZW1wOworICAgICAgV29yZDMyIHBubHIscG5tczsKKyAgICAgIFdvcmQzMiBtaW5UaHJlc2hvbGQ7CisgICAgICBXb3JkMzIgdGhyTCwgdGhyUiwgbnJnTCwgbnJnUjsKKyAgICAgIFdvcmQzMiBpZHgsIHNoaWZ0OworCisgICAgICBpZHggPSBzZmIgKyBzZmJvZmZzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIHRockwgPSBzZmJUaHJlc2hvbGRMZWZ0W2lkeF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHRoclIgPSBzZmJUaHJlc2hvbGRSaWdodFtpZHhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIG5yZ0wgPSBzZmJFbmVyZ3lMZWZ0W2lkeF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIG5yZ1IgPSBzZmJFbmVyZ3lSaWdodFtpZHhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgbWluVGhyZXNob2xkID0gbWluKHRockwsIHRoclIpOworCisgICAgICBucmdMID0gbWF4KG5yZ0wsdGhyTCkgKyAxOworICAgICAgc2hpZnQgPSBub3JtX2wobnJnTCk7DQorCSAgbnJnTCA9IERpdl8zMih0aHJMIDw8IHNoaWZ0LCBucmdMIDw8IHNoaWZ0KTsKKyAgICAgIG5yZ1IgPSBtYXgobnJnUix0aHJSKSArIDE7CisgICAgICBzaGlmdCA9IG5vcm1fbChucmdSKTsNCisJICBucmdSID0gRGl2XzMyKHRoclIgPDwgc2hpZnQsIG5yZ1IgPDwgc2hpZnQpOworCisJICBwbmxyID0gZml4bXVsKG5yZ0wsIG5yZ1IpOworCisgICAgICBucmdMID0gc2ZiRW5lcmd5TWlkW2lkeF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBucmdSID0gc2ZiRW5lcmd5U2lkZVtpZHhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIG5yZ0wgPSBtYXgobnJnTCxtaW5UaHJlc2hvbGQpICsgMTsKKyAgICAgIHNoaWZ0ID0gbm9ybV9sKG5yZ0wpOw0KKwkgIG5yZ0wgPSBEaXZfMzIobWluVGhyZXNob2xkIDw8IHNoaWZ0LCBucmdMIDw8IHNoaWZ0KTsKKworICAgICAgbnJnUiA9IG1heChucmdSLG1pblRocmVzaG9sZCkgKyAxOworICAgICAgc2hpZnQgPSBub3JtX2wobnJnUik7DQorCSAgbnJnUiA9IERpdl8zMihtaW5UaHJlc2hvbGQgPDwgc2hpZnQsIG5yZ1IgPDwgc2hpZnQpOworCisgICAgICBwbm1zID0gZml4bXVsKG5yZ0wsIG5yZ1IpOworCisgICAgICB0ZW1wID0gKHBubHIgKyAxKSAvICgocG5tcyA+PiA4KSArIDEpOworCisgICAgICB0ZW1wID0gcG5tcyAtIHBubHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBpZiggdGVtcCA+IDAgKXsKKworICAgICAgICBtc01hc2tbaWR4XSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBtc01hc2tUcnVlU29tZXdoZXJlID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgIGZvciAoaj1zZmJPZmZzZXRbaWR4XTsgajxzZmJPZmZzZXRbaWR4KzFdOyBqKyspIHsKKyAgICAgICAgICBXb3JkMzIgbGVmdCwgcmlnaHQ7CisgICAgICAgICAgbGVmdCAgPSAobWRjdFNwZWN0cnVtTGVmdFtqXSA+PiAgMSk7CisgICAgICAgICAgcmlnaHQgPSAobWRjdFNwZWN0cnVtUmlnaHRbal0gPj4gMSk7CisgICAgICAgICAgbWRjdFNwZWN0cnVtTGVmdFtqXSA9ICBsZWZ0ICsgcmlnaHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBtZGN0U3BlY3RydW1SaWdodFtqXSA9ICBsZWZ0IC0gcmlnaHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzZmJUaHJlc2hvbGRMZWZ0W2lkeF0gPSBtaW5UaHJlc2hvbGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzZmJUaHJlc2hvbGRSaWdodFtpZHhdID0gbWluVGhyZXNob2xkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzZmJFbmVyZ3lMZWZ0W2lkeF0gPSBzZmJFbmVyZ3lNaWRbaWR4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzZmJFbmVyZ3lSaWdodFtpZHhdID0gc2ZiRW5lcmd5U2lkZVtpZHhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgIHNmYlNwcmVhZGVkRW5SaWdodFtpZHhdID0gbWluKHNmYlNwcmVhZGVkRW5MZWZ0W2lkeF0sc2ZiU3ByZWFkZWRFblJpZ2h0W2lkeF0pID4+IDE7ICAKKyAgICAgICAgc2ZiU3ByZWFkZWRFbkxlZnRbaWR4XSA9IHNmYlNwcmVhZGVkRW5SaWdodFtpZHhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgbXNNYXNrW2lkeF0gID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgbXNNYXNrRmFsc2VTb21ld2hlcmUgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpZiAoIG1zTWFza1RydWVTb21ld2hlcmUgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGlmKG1zTWFza0ZhbHNlU29tZXdoZXJlICkgeworICAgICAgICAqbXNEaWdlc3QgPSBTSV9NU19NQVNLX1NPTUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfSBlbHNlIHsKKyAgICAgICAgKm1zRGlnZXN0ID0gU0lfTVNfTUFTS19BTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgKm1zRGlnZXN0ID0gU0lfTVNfTUFTS19OT05FOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgfQorCit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9wcmVfZWNob19jb250cm9sLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9wcmVfZWNob19jb250cm9sLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU5MjE2ZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3ByZV9lY2hvX2NvbnRyb2wuYwpAQCAtMCwwICsxLDExMyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcHJlX2VjaG9fY29udHJvbC5jDQorDQorCUNvbnRlbnQ6CVByZSBlY2hvIGNvbnRyb2wgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorCisjaW5jbHVkZSAib3Blcl8zMmIuaCIKKyNpbmNsdWRlICJwcmVfZWNob19jb250cm9sLmgiCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6SW5pdFByZUVjaG9Db250cm9sIAorKiBkZXNjcmlwdGlvbjogaW5pdCBwcmUgZWNobyBjb250cm9sIHBhcmFtZXRlcgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIEluaXRQcmVFY2hvQ29udHJvbChXb3JkMzIgKnBiVGhyZXNob2xkTm0xLAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBudW1QYiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcGJUaHJlc2hvbGRRdWlldCkKK3sKKyAgV29yZDE2IHBiOworCisgIGZvcihwYj0wOyBwYjxudW1QYjsgcGIrKykgeworICAgIHBiVGhyZXNob2xkTm0xW3BiXSA9IHBiVGhyZXNob2xkUXVpZXRbcGJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6UHJlRWNob0NvbnRyb2wgCisqIGRlc2NyaXB0aW9uOiB1cGRhdGUgc2hyZXNob2xkIHRvIGF2b2lkIHByZSBlY2hvCisqCQkJICAgdGhyKG4pID0gbWF4KHJwbWluKnRocnEobiksIG1pbih0aHJxKG4pLCBycGVsZXYqdGhycTEobikpKQorKgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIFByZUVjaG9Db250cm9sKFdvcmQzMiAqcGJUaHJlc2hvbGRObTEsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgbnVtUGIsCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgbWF4QWxsb3dlZEluY3JlYXNlRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgIG1pblJlbWFpbmluZ1RocmVzaG9sZEZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgV29yZDMyICpwYlRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBtZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgbWRjdFNjYWxlbm0xKQoreworICBXb3JkMzIgaTsKKyAgV29yZDMyIHRtcFRocmVzaG9sZDEsIHRtcFRocmVzaG9sZDI7CisgIFdvcmQzMiBzY2FsaW5nOworCisgIC8qIG1heEFsbG93ZWRJbmNyZWFzZUZhY3RvciBpcyBoYXJkIGNvZGVkIHRvIDIgKi8KKyAgKHZvaWQpbWF4QWxsb3dlZEluY3JlYXNlRmFjdG9yOworCisgIHNjYWxpbmcgPSAoKG1kY3RTY2FsZSAtIG1kY3RTY2FsZW5tMSkgPDwgMSk7CisgICAKKyAgaWYgKCBzY2FsaW5nID4gMCApIHsKKyAgICBmb3IoaSA9IDA7IGkgPCBudW1QYjsgaSsrKSB7CisgICAgICB0bXBUaHJlc2hvbGQxID0gcGJUaHJlc2hvbGRObTFbaV0gPj4gKHNjYWxpbmctMSk7CisgICAgICB0bXBUaHJlc2hvbGQyID0gTF9tcHlfbHMocGJUaHJlc2hvbGRbaV0sIG1pblJlbWFpbmluZ1RocmVzaG9sZEZhY3Rvcik7CisKKyAgICAgIC8qIGNvcHkgdGhyZXNob2xkcyB0byBpbnRlcm5hbCBtZW1vcnkgKi8KKyAgICAgIHBiVGhyZXNob2xkTm0xW2ldID0gcGJUaHJlc2hvbGRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgCisgICAgICBpZihwYlRocmVzaG9sZFtpXSA+IHRtcFRocmVzaG9sZDEpIHsKKyAgICAgICAgcGJUaHJlc2hvbGRbaV0gPSB0bXBUaHJlc2hvbGQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgICAgIAorICAgICAgaWYodG1wVGhyZXNob2xkMiA+IHBiVGhyZXNob2xkW2ldKSB7CisgICAgICAgIHBiVGhyZXNob2xkW2ldID0gdG1wVGhyZXNob2xkMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBzY2FsaW5nID0gLXNjYWxpbmc7CisgICAgZm9yKGkgPSAwOyBpIDwgbnVtUGI7IGkrKykgeworCisgICAgICB0bXBUaHJlc2hvbGQxID0gcGJUaHJlc2hvbGRObTFbaV0gPDwgMTsKKyAgICAgIHRtcFRocmVzaG9sZDIgPSBMX21weV9scyhwYlRocmVzaG9sZFtpXSwgbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yKTsKKworICAgICAgLyogY29weSB0aHJlc2hvbGRzIHRvIGludGVybmFsIG1lbW9yeSAqLworICAgICAgcGJUaHJlc2hvbGRObTFbaV0gPSBwYlRocmVzaG9sZFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAKKyAgICAgIGlmKCgocGJUaHJlc2hvbGRbaV0gPj4gc2NhbGluZykgPiB0bXBUaHJlc2hvbGQxKSkgeworICAgICAgICBwYlRocmVzaG9sZFtpXSA9IHRtcFRocmVzaG9sZDEgPDwgc2NhbGluZzsKKyAgICAgIH0KKyAgICAgICAKKyAgICAgIGlmKHRtcFRocmVzaG9sZDIgPiBwYlRocmVzaG9sZFtpXSkgeworICAgICAgICBwYlRocmVzaG9sZFtpXSA9IHRtcFRocmVzaG9sZDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB9CisKKyAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcHN5X2NvbmZpZ3VyYXRpb24uYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3BzeV9jb25maWd1cmF0aW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2ZTAwZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3BzeV9jb25maWd1cmF0aW9uLmMKQEAgLTAsMCArMSw1MDUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXBzeV9jb25maWd1cmF0aW9uLmMNCisNCisJQ29udGVudDoJUHN5Y2hvYWNjb3VzdGljIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiCisjaW5jbHVkZSAicHN5X2NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJhZGpfdGhyLmgiCisjaW5jbHVkZSAiYWFjX3JvbS5oIgorCisKKworI2RlZmluZSBCQVJDX1NDQUxFCTEwMCAvKiBpbnRlZ2VyIGJhcmMgdmFsdWVzIGFyZSBzY2FsZWQgd2l0aCAxMDAgKi8KKyNkZWZpbmUgTE9HMl8xMDAwCTMwMSAvKiBsb2cyKjEwMDAgKi8NCisjZGVmaW5lIFBJMl8xMDAwCTE1NzEgLyogcGkvMioxMDAwKi8NCisjZGVmaW5lIEFUQU5fQ09FRjEJMzU2MCAvKiAxMDAwLzAuMjgwODcyZiovDQorI2RlZmluZSBBVEFOX0NPRUYyCTI4MSAvKiAxMDAwKjAuMjgwODcyZiovDQorCisKK3R5cGVkZWYgc3RydWN0eworICBXb3JkMzIgc2FtcGxlUmF0ZTsKKyAgY29uc3QgVVdvcmQ4ICpwYXJhbUxvbmc7CisgIGNvbnN0IFVXb3JkOCAqcGFyYW1TaG9ydDsKK31TRkJfSU5GT19UQUI7CisKK3N0YXRpYyBjb25zdCBXb3JkMTYgQUJTX0xFViA9IDIwOworc3RhdGljIGNvbnN0IFdvcmQxNiBCQVJDX1RIUl9RVUlFVFtdID0gezE1LCAxMCwgIDcsICAyLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLCAgNSwgMTAsIDIwLCAzMH07CisKKworCitzdGF0aWMgY29uc3QgV29yZDE2IG1heF9iYXJrID0gMjQ7IC8qIG1heGltdW0gYmFyay12YWx1ZSAqLworc3RhdGljIGNvbnN0IFdvcmQxNiBtYXNrTG93ICA9IDMwOyAvKiBpbiAxZEIvYmFyayAqLworc3RhdGljIGNvbnN0IFdvcmQxNiBtYXNrSGlnaCA9IDE1OyAvKiBpbiAxKmRCL2JhcmsgKi8KK3N0YXRpYyBjb25zdCBXb3JkMTYgY19yYXRpbyAgPSAweDAwMjk7IC8qIHBvdygxMC4wZiwgLSgyOS4wZi8xMC4wZikpICovCisKK3N0YXRpYyBjb25zdCBXb3JkMTYgbWFza0xvd1NwckVuTG9uZyA9IDMwOyAgICAgICAvKiBpbiAxZEIvYmFyayAqLworc3RhdGljIGNvbnN0IFdvcmQxNiBtYXNrSGlnaFNwckVuTG9uZyA9IDIwOyAgICAgIC8qIGluIDFkQi9iYXJrICovCitzdGF0aWMgY29uc3QgV29yZDE2IG1hc2tIaWdoU3ByRW5Mb25nTG93QnIgPSAxNTsgLyogaW4gMWRCL2JhcmsgKi8KK3N0YXRpYyBjb25zdCBXb3JkMTYgbWFza0xvd1NwckVuU2hvcnQgPSAyMDsgICAgICAvKiBpbiAxZEIvYmFyayAqLworc3RhdGljIGNvbnN0IFdvcmQxNiBtYXNrSGlnaFNwckVuU2hvcnQgPSAxNTsgICAgIC8qIGluIDFkQi9iYXJrICovDQorc3RhdGljIGNvbnN0IFdvcmQxNiBjX21pblJlbWFpbmluZ1RocmVzaG9sZEZhY3RvciA9IDB4MDE0ODsgICAgLyogMC4wMSAqKDEgPDwgMTUpKi8NCitzdGF0aWMgY29uc3QgV29yZDMyIGNfbWF4c25yID0gMHg2NjY2NjY2NjsJCSAvKiB1cHBlciBsaW1pdCBpcyAtMSBkQiAqLw0KK3N0YXRpYyBjb25zdCBXb3JkMzIgY19taW5zbnIgPSAweDAwNjI0ZGQzOwkJIC8qIGxvd2VyIGxpbWl0IGlzIC0yNSBkQiAqLw0KKw0KK3N0YXRpYyBjb25zdCBXb3JkMzIgY19tYXhDbGlwRW5lcmd5TG9uZyA9IDB4NzczNTk0MDA7ICAvKiAyLjBlOWYqLw0KK3N0YXRpYyBjb25zdCBXb3JkMzIgY19tYXhDbGlwRW5lcmd5U2hvcnQgPSAweDAxZGNkNjUwOyAvKiAyLjBlOWYvKEFBQ0VOQ19UUkFOU19GQUMqQUFDRU5DX1RSQU5TX0ZBQykqLw0KKw0KKw0KK1dvcmQzMiBHZXRTUkluZGV4KFdvcmQzMiBzYW1wbGVSYXRlKQ0KK3sNCisgICAgaWYgKDkyMDE3IDw9IHNhbXBsZVJhdGUpIHJldHVybiAwOw0KKyAgICBpZiAoNzUxMzIgPD0gc2FtcGxlUmF0ZSkgcmV0dXJuIDE7DQorICAgIGlmICg1NTQyNiA8PSBzYW1wbGVSYXRlKSByZXR1cm4gMjsNCisgICAgaWYgKDQ2MDA5IDw9IHNhbXBsZVJhdGUpIHJldHVybiAzOw0KKyAgICBpZiAoMzc1NjYgPD0gc2FtcGxlUmF0ZSkgcmV0dXJuIDQ7DQorICAgIGlmICgyNzcxMyA8PSBzYW1wbGVSYXRlKSByZXR1cm4gNTsNCisgICAgaWYgKDIzMDA0IDw9IHNhbXBsZVJhdGUpIHJldHVybiA2Ow0KKyAgICBpZiAoMTg3ODMgPD0gc2FtcGxlUmF0ZSkgcmV0dXJuIDc7DQorICAgIGlmICgxMzg1NiA8PSBzYW1wbGVSYXRlKSByZXR1cm4gODsNCisgICAgaWYgKDExNTAyIDw9IHNhbXBsZVJhdGUpIHJldHVybiA5Ow0KKyAgICBpZiAoOTM5MSA8PSBzYW1wbGVSYXRlKSByZXR1cm4gMTA7DQorDQorICAgIHJldHVybiAxMTsNCit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBhdGFuXzEwMDAKKyogZGVzY3JpcHRpb246ICBjYWxjdWxhdGVzIDEwMDAqYXRhbih4LzEwMDApCisqICAgICAgICAgICAgICAgYmFzZWQgb24gYXRhbiBhcHByb3ggZm9yIHggPiAwCQkJCQorKgkJCQlhdGFuKHgpID0geC8oKGZsb2F0KTEuMGYrKGZsb2F0KTAuMjgwODcyZip4KngpICBpZiB4IDwgMQ0KKyoJCQkJCQk9IHBpLzIgLSB4LygoZmxvYXQpMC4yODA4NzJmICt4KngpCSAgICBpZiB4ID49IDENCisqIHJldHVybjogICAgICAgMTAwMCphdGFuKHgvMTAwMCkKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGF0YW5fMTAwMChXb3JkMzIgdmFsKSAKK3sKKyAgV29yZDMyIHk7CisKKyAgIAorICBpZihMX3N1Yih2YWwsIDEwMDApIDwgMCkgeworICAgIHkgPSBleHRyYWN0X2woKCgxMDAwICogdmFsKSAvICgxMDAwICsgKCh2YWwgKiB2YWwpIC8gQVRBTl9DT0VGMSkpKSk7CisgIH0KKyAgZWxzZSB7CisgICAgeSA9IFBJMl8xMDAwIC0gKCgxMDAwICogdmFsKSAvIChBVEFOX0NPRUYyICsgKCh2YWwgKiB2YWwpIC8gMTAwMCkpKTsKKyAgfQorCisgIHJldHVybiBleHRyYWN0X2woeSk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEJhcmNMaW5lVmFsdWUKKyogZGVzY3JpcHRpb246ICBDYWxjdWxhdGVzIGJhcmMgdmFsdWUgZm9yIG9uZSBmcmVxdWVuY3kgbGluZQorKiByZXR1cm5zOiAgICAgIGJhcmMgdmFsdWUgb2YgbGluZSAqIEJBUkNfU0NBTEUKKyogaW5wdXQ6ICAgICAgICBudW1iZXIgb2YgbGluZXMgaW4gdHJhbnNmb3JtLCBpbmRleCBvZiBsaW5lIHRvIGNoZWNrLCBGcworKiBvdXRwdXQ6CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgQmFyY0xpbmVWYWx1ZShXb3JkMTYgbm9PZkxpbmVzLCBXb3JkMTYgZmZ0TGluZSwgV29yZDMyIHNhbXBsaW5nRnJlcSkKK3sKKyAgV29yZDMyIGNlbnRlcl9mcmVxLCB0ZW1wLCBidmFsRkZUTGluZTsKKworICAvKiBjZW50ZXIgZnJlcXVlbmN5IG9mIGZmdCBsaW5lICovCisgIGNlbnRlcl9mcmVxID0gKGZmdExpbmUgKiBzYW1wbGluZ0ZyZXEpIC8gKG5vT2ZMaW5lcyA8PCAxKTsKKyAgdGVtcCA9ICBhdGFuXzEwMDAoKGNlbnRlcl9mcmVxIDw8IDIpIC8gKDMqMTApKTsKKyAgYnZhbEZGVExpbmUgPSAKKyAgICAoMjY2MDAgKiBhdGFuXzEwMDAoKGNlbnRlcl9mcmVxKjc2KSAvIDEwMCkgKyA3KnRlbXAqdGVtcCkgLyAoMioxMDAwKjEwMDAgLyBCQVJDX1NDQUxFKTsKKyAgCisgIHJldHVybiBzYXR1cmF0ZShidmFsRkZUTGluZSk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBpbml0VGhyUXVpZXQKKyogZGVzY3JpcHRpb246ICBpbml0IHRocmVkaG9sZCBpbiBxdWlldAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBpbml0VGhyUXVpZXQoV29yZDE2ICBudW1QYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnBiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqcGJCYXJjVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcGJUaHJlc2hvbGRRdWlldCkgeworICBXb3JkMTYgaTsKKyAgV29yZDE2IGJhcmNUaHJRdWlldDsKKworICBmb3IoaT0wOyBpPG51bVBiOyBpKyspIHsKKyAgICBXb3JkMTYgYnYxLCBidjI7CisKKyAgICAgCisgICAgaWYgKGk+MCkKKyAgICAgIGJ2MSA9IChwYkJhcmNWYWxbaV0gKyBwYkJhcmNWYWxbaS0xXSkgPj4gMTsKKyAgICBlbHNlCisgICAgICBidjEgPSBwYkJhcmNWYWxbaV0gPj4gMTsKKworICAgICAKKyAgICBpZiAoaSA8IChudW1QYiAtIDEpKQorICAgICAgYnYyID0gKHBiQmFyY1ZhbFtpXSArIHBiQmFyY1ZhbFtpKzFdKSA+PiAxOworICAgIGVsc2UgeworICAgICAgYnYyID0gcGJCYXJjVmFsW2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisKKyAgICBidjEgPSBtaW4oKGJ2MSAvIEJBUkNfU0NBTEUpLCBtYXhfYmFyayk7CisgICAgYnYyID0gbWluKChidjIgLyBCQVJDX1NDQUxFKSwgbWF4X2JhcmspOworCisgICAgYmFyY1RoclF1aWV0ID0gbWluKEJBUkNfVEhSX1FVSUVUW2J2MV0sIEJBUkNfVEhSX1FVSUVUW2J2Ml0pOworCisgICAgCisgICAgLyoKKyAgICAgIHdlIGNhbGN1bGF0ZSAKKyAgICAgIHBvdygxMC4wZiwoZmxvYXQpKGJhcmNUaHJRdWlldCAtIEFCU19MRVYpKjAuMSkqKGZsb2F0KUFCU19MT1cqKHBiT2Zmc2V0W2krMV0gLSBwYk9mZnNldFtpXSk7CisgICAgKi8KKworICAgIHBiVGhyZXNob2xkUXVpZXRbaV0gPSBwb3cyX3h5KCgoKGJhcmNUaHJRdWlldCAtIEFCU19MRVYpICogMTAwKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgIExPRzJfMTAwMCooMTQrMipMT0dfTk9STV9QQ00pKSwgTE9HMl8xMDAwKSAqIChwYk9mZnNldFtpKzFdIC0gcGJPZmZzZXRbaV0pOworICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGluaXRTcHJlYWRpbmcKKyogZGVzY3JpcHRpb246ICBpbml0IGVuZXJneSBzcHJlYWRpbmcgcGFyYW1ldGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGluaXRTcHJlYWRpbmcoV29yZDE2ICBudW1QYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpwYkJhcmNWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpwYk1hc2tMb0ZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpwYk1hc2tIaUZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpwYk1hc2tMb0ZhY3RvclNwckVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnBiTWFza0hpRmFjdG9yU3ByRW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgYmxvY2tUeXBlKQoreworICBXb3JkMTYgaTsKKyAgV29yZDE2IG1hc2tMb3dTcHJFbiwgbWFza0hpZ2hTcHJFbjsKKworICAgCisgIGlmIChzdWIoYmxvY2tUeXBlLCBTSE9SVF9XSU5ET1cpICE9IDApIHsKKyAgICBtYXNrTG93U3ByRW4gPSBtYXNrTG93U3ByRW5Mb25nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAKKyAgICBpZiAoYml0cmF0ZSA+IDIyMDAwKQorICAgICAgbWFza0hpZ2hTcHJFbiA9IG1hc2tIaWdoU3ByRW5Mb25nOworICAgIGVsc2UKKyAgICAgIG1hc2tIaWdoU3ByRW4gPSBtYXNrSGlnaFNwckVuTG9uZ0xvd0JyOworICB9CisgIGVsc2UgeworICAgIG1hc2tMb3dTcHJFbiA9IG1hc2tMb3dTcHJFblNob3J0OyAgICAgICAgICAgIAorICAgIG1hc2tIaWdoU3ByRW4gPSBtYXNrSGlnaFNwckVuU2hvcnQ7ICAgICAgICAgIAorICB9CisKKyAgZm9yKGk9MDsgaTxudW1QYjsgaSsrKSB7CisgICAgIAorICAgIGlmIChpID4gMCkgeworICAgICAgV29yZDMyIGRiVmFsOworICAgICAgV29yZDE2IGRiYXJrID0gcGJCYXJjVmFsdWVbaV0gLSBwYkJhcmNWYWx1ZVtpLTFdOworCisgICAgICAvKgorICAgICAgICB3ZSBjYWx1bGF0ZSBwb3coMTAuMGYsIC0wLjEqZGJWYWwvQkFSQ19TQ0FMRSkgCisgICAgICAqLworICAgICAgZGJWYWwgPSAobWFza0hpZ2ggKiBkYmFyayk7CisgICAgICBwYk1hc2tIaUZhY3RvcltpXSA9IHJvdW5kMTYocG93Ml94eShMX25lZ2F0ZShkYlZhbCksIChXb3JkMzIpTE9HMl8xMDAwKSk7ICAgICAgICAgICAgIC8qIDAuMzAxIGxvZzEwKDIpICovCisgICAgICAgCisgICAgICBkYlZhbCA9IChtYXNrTG93ICogZGJhcmspOworICAgICAgcGJNYXNrTG9GYWN0b3JbaS0xXSA9IHJvdW5kMTYocG93Ml94eShMX25lZ2F0ZShkYlZhbCksKFdvcmQzMilMT0cyXzEwMDApKTsgCisgICAgICAgCisgICAgICAKKyAgICAgIGRiVmFsID0gKG1hc2tIaWdoU3ByRW4gKiBkYmFyayk7CisgICAgICBwYk1hc2tIaUZhY3RvclNwckVuW2ldID0gIHJvdW5kMTYocG93Ml94eShMX25lZ2F0ZShkYlZhbCksKFdvcmQzMilMT0cyXzEwMDApKTsgCisgICAgICBkYlZhbCA9IChtYXNrTG93U3ByRW4gKiBkYmFyayk7CisgICAgICBwYk1hc2tMb0ZhY3RvclNwckVuW2ktMV0gPSByb3VuZDE2KHBvdzJfeHkoTF9uZWdhdGUoZGJWYWwpLChXb3JkMzIpTE9HMl8xMDAwKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcGJNYXNrSGlGYWN0b3JbaV0gPSAwOyAgICAgICAgICAgICAgICAgICAgIAorICAgICAgcGJNYXNrTG9GYWN0b3JbbnVtUGItMV0gPSAwOyAgICAgICAgICAgICAgIAorCisgICAgICBwYk1hc2tIaUZhY3RvclNwckVuW2ldID0gMDsgICAgICAgICAgICAgICAgCisgICAgICBwYk1hc2tMb0ZhY3RvclNwckVuW251bVBiLTFdID0gMDsgICAgICAgICAgCisgICAgfQorICB9CisKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogaW5pdEJhcmNWYWx1ZXMKKyogZGVzY3JpcHRpb246ICBpbml0IGJhcmsgdmFsdWUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgaW5pdEJhcmNWYWx1ZXMoV29yZDE2ICBudW1QYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqcGJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgIG51bUxpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICBzYW1wbGluZ0ZyZXF1ZW5jeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqcGJCdmFsKQoreworICBXb3JkMTYgaTsKKyAgV29yZDE2IHBiQnZhbDAsIHBiQnZhbDE7CisKKyAgcGJCdmFsMCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yKGk9MDsgaTxudW1QYjsgaSsrKXsKKyAgICBwYkJ2YWwxID0gQmFyY0xpbmVWYWx1ZShudW1MaW5lcywgcGJPZmZzZXRbaSsxXSwgc2FtcGxpbmdGcmVxdWVuY3kpOworICAgIHBiQnZhbFtpXSA9IChwYkJ2YWwwICsgcGJCdmFsMSkgPj4gMTsKKyAgICBwYkJ2YWwwID0gcGJCdmFsMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBpbml0TWluU25yCisqIGRlc2NyaXB0aW9uOiAgY2FsY3VsYXRlIG1pbiBzbnIgcGFyYW1ldGVyCisqCQkJCW1pblNucihuKSA9IDEvKDJec2ZiUGVtaW4obikvdyhuKSAtIDEuNSkNCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGluaXRNaW5TbnIoY29uc3QgV29yZDMyICBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgIHNhbXBsZXJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgbnVtTGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKnBiQmFyY1ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICBzZmJBY3RpdmUsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqc2ZiTWluU25yKQoreworICBXb3JkMTYgc2ZiOworICBXb3JkMTYgYmFyY1dpZHRoOworICBXb3JkMTYgcGVQZXJXaW5kb3c7CisgIFdvcmQzMiBwZVBhcnQ7CisgIFdvcmQzMiBzbnI7CisgIFdvcmQxNiBwYlZhbDAsIHBiVmFsMSwgc2hpZnQ7CisKKyAgLyogcmVsYXRpdmUgbnVtYmVyIG9mIGFjdGl2ZSBiYXJrcyAqLworCisKKyAgcGVQZXJXaW5kb3cgPSBiaXRzMnBlKGV4dHJhY3RfbCgoYml0cmF0ZSAqIG51bUxpbmVzKSAvIHNhbXBsZXJhdGUpKTsKKworICBwYlZhbDAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IgKHNmYj0wOyBzZmI8c2ZiQWN0aXZlOyBzZmIrKykgeworCisgICAgcGJWYWwxID0gKHBiQmFyY1ZhbFtzZmJdIDw8IDEpIC0gcGJWYWwwOworICAgIGJhcmNXaWR0aCA9IHBiVmFsMSAtIHBiVmFsMDsKKyAgICBwYlZhbDAgPSBwYlZhbDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAvKiBhbGxvdyBhdCBsZWFzdCAyLjQlIG9mIHBlIGZvciBlYWNoIGFjdGl2ZSBiYXJjICovDQorCXBlUGFydCA9ICgocGVQZXJXaW5kb3cgKiAyNCkgKiAobWF4X2JhcmsgKiBiYXJjV2lkdGgpKSAvCisgICAgICAgIChwYkJhcmNWYWxbc2ZiQWN0aXZlLTFdICogKHNmYk9mZnNldFtzZmIrMV0gLSBzZmJPZmZzZXRbc2ZiXSkpOworICAgCisgICAgICAKKyAgICBwZVBhcnQgPSBtaW4ocGVQYXJ0LCA4NDAwKTsgCisgICAgcGVQYXJ0ID0gbWF4KHBlUGFydCwgMTQwMCk7CisKKyAgICAvKiBtaW5TbnIobikgPSAxLygyXnNmYlBlbWluKG4pL3cobikgLSAxLjUpKi8NCisJLyogd2UgYWRkIGFuIG9mZnNldCBvZiAyXjE2IHRvIHRoZSBwb3cgZnVuY3Rpb25zICovCisJLyogMHhjMDAwID0gMS41KigxIDw8IDE1KSovDQorICAgICAgCisgICAgc25yID0gcG93Ml94eSgocGVQYXJ0IC0gMTYqMTAwMCksMTAwMCkgLSAweDAwMDBjMDAwOworICAgICAgCisgICAgaWYoc25yID4gMHgwMDAwODAwMCkNCisJew0KKwkJc2hpZnQgPSBub3JtX2woc25yKTsNCisJCXNuciA9IERpdl8zMigweDAwMDA4MDAwIDw8IHNoaWZ0LCBzbnIgPDwgc2hpZnQpOyAgCisJfQorCWVsc2UKKwl7CisJCXNuciA9IDB4N2ZmZmZmZmY7CisJfQorICAgICAgCisgICAgLyogdXBwZXIgbGltaXQgaXMgLTEgZEIgKi8KKyAgICBzbnIgPSBtaW4oc25yLCBjX21heHNucik7CisgICAgLyogbG93ZXIgbGltaXQgaXMgLTI1IGRCICovCisgICAgc25yID0gbWF4KHNuciwgY19taW5zbnIpOworICAgIHNmYk1pblNucltzZmJdID0gcm91bmQxNihzbnIpOworICB9CisKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEluaXRQc3lDb25maWd1cmF0aW9uTG9uZworKiBkZXNjcmlwdGlvbjogIGluaXQgbG9uZyBibG9jayBwc3ljaG9hY291c3RpYyBjb25maWd1cmF0aW9uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBJbml0UHN5Q29uZmlndXJhdGlvbkxvbmcoV29yZDMyIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYmFuZHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9MT05HICpwc3lDb25mKQoreworICBXb3JkMzIgc2FtcGxlcmF0ZWluZGV4Ow0KKyAgV29yZDE2IHNmYkJhcmNWYWxbTUFYX1NGQl9MT05HXTsNCisgIFdvcmQxNiBzZmI7CisKKyAgLyoKKyAgICBpbml0IHNmYiB0YWJsZQorICAqLw0KKyAgc2FtcGxlcmF0ZWluZGV4ID0gR2V0U1JJbmRleChzYW1wbGVyYXRlKTsgIA0KKyAgcHN5Q29uZi0+c2ZiQ250ID0gc2ZCYW5kVG90YWxMb25nW3NhbXBsZXJhdGVpbmRleF07DQorICBwc3lDb25mLT5zZmJPZmZzZXQgPSBzZkJhbmRUYWJMb25nICsgc2ZCYW5kVGFiTG9uZ09mZnNldFtzYW1wbGVyYXRlaW5kZXhdOw0KKyAgcHN5Q29uZi0+c2FtcFJhdGVJZHggPSBzYW1wbGVyYXRlaW5kZXg7CisKKyAgLyoKKyAgICBjYWxjdWxhdGUgYmFyYyB2YWx1ZXMgZm9yIGVhY2ggcGIKKyAgKi8KKyAgaW5pdEJhcmNWYWx1ZXMocHN5Q29uZi0+c2ZiQ250LAorICAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk9mZnNldFtwc3lDb25mLT5zZmJDbnRdLAorICAgICAgICAgICAgICAgICBzYW1wbGVyYXRlLAorICAgICAgICAgICAgICAgICBzZmJCYXJjVmFsKTsKKworICAvKgorICAgIGluaXQgdGhyZXNob2xkcyBpbiBxdWlldAorICAqLworICBpbml0VGhyUXVpZXQocHN5Q29uZi0+c2ZiQ250LAorICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgc2ZiQmFyY1ZhbCwKKyAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYlRocmVzaG9sZFF1aWV0KTsKKworICAvKgorICAgIGNhbGN1bGF0ZSBzcHJlYWRpbmcgZnVuY3Rpb24KKyAgKi8KKyAgaW5pdFNwcmVhZGluZyhwc3lDb25mLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgc2ZiQmFyY1ZhbCwKKyAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJNYXNrTG93RmFjdG9yLAorICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk1hc2tIaWdoRmFjdG9yLAorICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk1hc2tMb3dGYWN0b3JTcHJFbiwKKyAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJNYXNrSGlnaEZhY3RvclNwckVuLAorICAgICAgICAgICAgICAgIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgTE9OR19XSU5ET1cpOworCisgIC8qCisgICAgaW5pdCByYXRpbworICAqLworICBwc3lDb25mLT5yYXRpbyA9IGNfcmF0aW87ICAgICAgCisKKyAgcHN5Q29uZi0+bWF4QWxsb3dlZEluY3JlYXNlRmFjdG9yID0gMjsgICAgICAgICAgICAgIAorICBwc3lDb25mLT5taW5SZW1haW5pbmdUaHJlc2hvbGRGYWN0b3IgPSBjX21pblJlbWFpbmluZ1RocmVzaG9sZEZhY3RvcjsgICAgLyogMC4wMSAqKDEgPDwgMTUpKi8gIAorCisgIHBzeUNvbmYtPmNsaXBFbmVyZ3kgPSBjX21heENsaXBFbmVyZ3lMb25nOyAgICAgICAgICAgICAgICAgICAKKyAgcHN5Q29uZi0+bG93cGFzc0xpbmUgPSBleHRyYWN0X2woKGJhbmR3aWR0aDw8MSkgKiBGUkFNRV9MRU5fTE9ORyAvIHNhbXBsZXJhdGUpOworCisgIGZvciAoc2ZiID0gMDsgc2ZiIDwgcHN5Q29uZi0+c2ZiQ250OyBzZmIrKykgeworICAgIGlmIChzdWIocHN5Q29uZi0+c2ZiT2Zmc2V0W3NmYl0sIHBzeUNvbmYtPmxvd3Bhc3NMaW5lKSA+PSAwKQorICAgICAgYnJlYWs7CisgIH0KKyAgcHN5Q29uZi0+c2ZiQWN0aXZlID0gc2ZiOyAgICAgICAgICAgICAgICAgCisKKyAgLyoKKyAgICBjYWxjdWxhdGUgbWluU25yCisgICovCisgIGluaXRNaW5TbnIoYml0cmF0ZSwKKyAgICAgICAgICAgICBzYW1wbGVyYXRlLAorICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk9mZnNldFtwc3lDb25mLT5zZmJDbnRdLAorICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk9mZnNldCwKKyAgICAgICAgICAgICBzZmJCYXJjVmFsLAorICAgICAgICAgICAgIHBzeUNvbmYtPnNmYkFjdGl2ZSwKKyAgICAgICAgICAgICBwc3lDb25mLT5zZmJNaW5TbnIpOworCisKKyAgcmV0dXJuKDApOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogSW5pdFBzeUNvbmZpZ3VyYXRpb25TaG9ydAorKiBkZXNjcmlwdGlvbjogIGluaXQgc2hvcnQgYmxvY2sgcHN5Y2hvYWNvdXN0aWMgY29uZmlndXJhdGlvbgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgSW5pdFBzeUNvbmZpZ3VyYXRpb25TaG9ydChXb3JkMzIgYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGJhbmR3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUICpwc3lDb25mKSANCit7CisgIFdvcmQzMiBzYW1wbGVyYXRlaW5kZXg7CisgIFdvcmQxNiBzZmJCYXJjVmFsW01BWF9TRkJfU0hPUlRdOworICBXb3JkMTYgc2ZiOworICAvKgorICAgIGluaXQgc2ZiIHRhYmxlCisgICovCisgIHNhbXBsZXJhdGVpbmRleCA9IEdldFNSSW5kZXgoc2FtcGxlcmF0ZSk7ICANCisgIHBzeUNvbmYtPnNmYkNudCA9IHNmQmFuZFRvdGFsU2hvcnRbc2FtcGxlcmF0ZWluZGV4XTsNCisgIHBzeUNvbmYtPnNmYk9mZnNldCA9IHNmQmFuZFRhYlNob3J0ICsgc2ZCYW5kVGFiU2hvcnRPZmZzZXRbc2FtcGxlcmF0ZWluZGV4XTsKKyAgcHN5Q29uZi0+c2FtcFJhdGVJZHggPSBzYW1wbGVyYXRlaW5kZXg7CisgIC8qCisgICAgY2FsY3VsYXRlIGJhcmMgdmFsdWVzIGZvciBlYWNoIHBiCisgICovCisgIGluaXRCYXJjVmFsdWVzKHBzeUNvbmYtPnNmYkNudCwKKyAgICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJPZmZzZXRbcHN5Q29uZi0+c2ZiQ250XSwKKyAgICAgICAgICAgICAgICAgc2FtcGxlcmF0ZSwKKyAgICAgICAgICAgICAgICAgc2ZiQmFyY1ZhbCk7CisKKyAgLyoKKyAgICBpbml0IHRocmVzaG9sZHMgaW4gcXVpZXQKKyAgKi8KKyAgaW5pdFRoclF1aWV0KHBzeUNvbmYtPnNmYkNudCwKKyAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgIHNmYkJhcmNWYWwsCisgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJUaHJlc2hvbGRRdWlldCk7CisKKyAgLyoKKyAgICBjYWxjdWxhdGUgc3ByZWFkaW5nIGZ1bmN0aW9uCisgICovCisgIGluaXRTcHJlYWRpbmcocHN5Q29uZi0+c2ZiQ250LAorICAgICAgICAgICAgICAgIHNmYkJhcmNWYWwsCisgICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiTWFza0xvd0ZhY3RvciwKKyAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJNYXNrSGlnaEZhY3RvciwKKyAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJNYXNrTG93RmFjdG9yU3ByRW4sCisgICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiTWFza0hpZ2hGYWN0b3JTcHJFbiwKKyAgICAgICAgICAgICAgICBiaXRyYXRlLAorICAgICAgICAgICAgICAgIFNIT1JUX1dJTkRPVyk7CisKKyAgLyoKKyAgICBpbml0IHJhdGlvCisgICovCisgIHBzeUNvbmYtPnJhdGlvID0gY19yYXRpbzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBwc3lDb25mLT5tYXhBbGxvd2VkSW5jcmVhc2VGYWN0b3IgPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHBzeUNvbmYtPm1pblJlbWFpbmluZ1RocmVzaG9sZEZhY3RvciA9IGNfbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAJIAorCisgIHBzeUNvbmYtPmNsaXBFbmVyZ3kgPSBjX21heENsaXBFbmVyZ3lTaG9ydDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBwc3lDb25mLT5sb3dwYXNzTGluZSA9IGV4dHJhY3RfbCgoKGJhbmR3aWR0aCA8PCAxKSAqIEZSQU1FX0xFTl9TSE9SVCkgLyBzYW1wbGVyYXRlKTsKKyAKKyAgZm9yIChzZmIgPSAwOyBzZmIgPCBwc3lDb25mLT5zZmJDbnQ7IHNmYisrKSB7CisgICAgIAorICAgIGlmIChwc3lDb25mLT5zZmJPZmZzZXRbc2ZiXSA+PSBwc3lDb25mLT5sb3dwYXNzTGluZSkKKyAgICAgIGJyZWFrOworICB9CisgIHBzeUNvbmYtPnNmYkFjdGl2ZSA9IHNmYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAvKgorICAgIGNhbGN1bGF0ZSBtaW5TbnIKKyAgKi8KKyAgaW5pdE1pblNucihiaXRyYXRlLAorICAgICAgICAgICAgIHNhbXBsZXJhdGUsCisgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiT2Zmc2V0W3BzeUNvbmYtPnNmYkNudF0sCisgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgIHNmYkJhcmNWYWwsCisgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiQWN0aXZlLAorICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk1pblNucik7CisKKyAgcmV0dXJuKDApOworfQorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9wc3lfbWFpbi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcHN5X21haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzQ2YTcyCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcHN5X21haW4uYwpAQCAtMCwwICsxLDgxMCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcHN5X21haW4uYw0KKw0KKwlDb250ZW50OglQc3ljaG9hY291c3RpYyBtYWpvciBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIgorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgImJsb2NrX3N3aXRjaC5oIgorI2luY2x1ZGUgInRyYW5zZm9ybS5oIgorI2luY2x1ZGUgInNwcmVhZGluZy5oIgorI2luY2x1ZGUgInByZV9lY2hvX2NvbnRyb2wuaCIKKyNpbmNsdWRlICJiYW5kX25yZy5oIgorI2luY2x1ZGUgInBzeV9jb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAicHN5X2RhdGEuaCIKKyNpbmNsdWRlICJtc19zdGVyZW8uaCIKKyNpbmNsdWRlICJpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJwc3lfbWFpbi5oIgorI2luY2x1ZGUgImdycF9kYXRhLmgiCisjaW5jbHVkZSAidG5zX2Z1bmMuaCIKKyNpbmNsdWRlICJtZW1hbGlnbi5oIgorCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgc3RhcnQgICAgICAgc2hvcnQgICAgICAgc3RvcCAqLworc3RhdGljIFdvcmQxNiBibG9ja1R5cGUyd2luZG93U2hhcGVbXSA9IHtLQkRfV0lORE9XLFNJTkVfV0lORE9XLFNJTkVfV0lORE9XLEtCRF9XSU5ET1d9OworCisvKgorICBmb3J3YXJkIGRlZmluaXRpb25zCisqLworc3RhdGljIFdvcmQxNiBhZHZhbmNlUHN5Y2hMb25nKFBTWV9EQVRBKiBwc3lEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFROU19EQVRBKiB0bnNEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX0xPTkcgKmhQc3lDb25mTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwqIHBzeU91dENoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpwU2NyYXRjaFRucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTlNfREFUQSAqdG5zRGF0YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IGNoKTsKKworc3RhdGljIFdvcmQxNiBhZHZhbmNlUHN5Y2hMb25nTVMgKFBTWV9EQVRBICBwc3lEYXRhW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUFNZX0NPTkZJR1VSQVRJT05fTE9ORyAqaFBzeUNvbmZMb25nKTsKKworc3RhdGljIFdvcmQxNiBhZHZhbmNlUHN5Y2hTaG9ydChQU1lfREFUQSogcHN5RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE5TX0RBVEEqIHRuc0RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUICpoUHN5Q29uZlNob3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwqIHBzeU91dENoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcFNjcmF0Y2hUbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFROU19EQVRBICp0bnNEYXRhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IGNoKTsKKworc3RhdGljIFdvcmQxNiBhZHZhbmNlUHN5Y2hTaG9ydE1TIChQU1lfREFUQSAgcHN5RGF0YVtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQU1lfQ09ORklHVVJBVElPTl9TSE9SVCAqaFBzeUNvbmZTaG9ydCk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFBzeU5ldworKiBkZXNjcmlwdGlvbjogIGFsbG9jYXRlcyBtZW1vcnkgZm9yIHBzeWNob2Fjb3VzdGljCisqIHJldHVybnM6ICAgICAgYW4gZXJyb3IgY29kZQorKiBpbnB1dDogICAgICAgIHBvaW50ZXIgdG8gYSBwc3ljaCBoYW5kbGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IFBzeU5ldyhQU1lfS0VSTkVMICpoUHN5LCBXb3JkMzIgbkNoYW4sIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworICBXb3JkMTYgaTsNCisgIFdvcmQzMiAqbWRjdFNwZWN0cnVtOw0KKyAgV29yZDMyICpzY3JhdGNoVE5TOw0KKyAgV29yZDE2ICptZGN0RGVsYXlCdWZmZXI7DQorICANCisgIG1kY3RTcGVjdHJ1bSA9IChXb3JkMzIgKiltZW1fbWFsbG9jKHBNZW1PUCwgbkNoYW4gKiBGUkFNRV9MRU5fTE9ORyAqIHNpemVvZihXb3JkMzIpLCAzMiwgVk9fSU5ERVhfRU5DX0FBQyk7DQorICBpZihOVUxMID09IG1kY3RTcGVjdHJ1bSkNCisJICByZXR1cm4gMTsNCisNCisgIHNjcmF0Y2hUTlMgPSAoV29yZDMyICopbWVtX21hbGxvYyhwTWVtT1AsIG5DaGFuICogRlJBTUVfTEVOX0xPTkcgKiBzaXplb2YoV29yZDMyKSwgMzIsIFZPX0lOREVYX0VOQ19BQUMpOw0KKyAgaWYoTlVMTCA9PSBzY3JhdGNoVE5TKQ0KKyAgew0KKwkgIHJldHVybiAxOw0KKyAgfQ0KKw0KKyAgbWRjdERlbGF5QnVmZmVyID0gKFdvcmQxNiAqKW1lbV9tYWxsb2MocE1lbU9QLCBuQ2hhbiAqIEJMT0NLX1NXSVRDSElOR19PRkZTRVQgKiBzaXplb2YoV29yZDE2KSwgMzIsIFZPX0lOREVYX0VOQ19BQUMpOw0KKyAgaWYoTlVMTCA9PSBtZGN0RGVsYXlCdWZmZXIpDQorICB7DQorCSAgcmV0dXJuIDE7CisgIH0NCisNCisgIGZvciAoaT0wOyBpPG5DaGFuOyBpKyspeworICAgIGhQc3ktPnBzeURhdGFbaV0ubWRjdERlbGF5QnVmZmVyID0gbWRjdERlbGF5QnVmZmVyICsgaSpCTE9DS19TV0lUQ0hJTkdfT0ZGU0VUOyAgICAgIAorICAgIGhQc3ktPnBzeURhdGFbaV0ubWRjdFNwZWN0cnVtID0gbWRjdFNwZWN0cnVtICsgaSpGUkFNRV9MRU5fTE9ORzsKKyAgfQorCisgIGhQc3ktPnBTY3JhdGNoVG5zID0gc2NyYXRjaFROUzsKKworICByZXR1cm4gMDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUHN5RGVsZXRlCisqIGRlc2NyaXB0aW9uOiAgYWxsb2NhdGVzIG1lbW9yeSBmb3IgcHN5Y2hvYWNvdXN0aWMKKyogcmV0dXJuczogICAgICBhbiBlcnJvciBjb2RlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBQc3lEZWxldGUoUFNZX0tFUk5FTCAgKmhQc3ksIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworICBXb3JkMzIgbmNoOw0KKw0KKyAgaWYoaFBzeSkNCisgIHsNCisJaWYoaFBzeS0+cHN5RGF0YVswXS5tZGN0RGVsYXlCdWZmZXIpDQorCQltZW1fZnJlZShwTWVtT1AsIGhQc3ktPnBzeURhdGFbMF0ubWRjdERlbGF5QnVmZmVyLCBWT19JTkRFWF9FTkNfQUFDKTsNCisgICAgICANCisgICAgaWYoaFBzeS0+cHN5RGF0YVswXS5tZGN0U3BlY3RydW0pDQorCQltZW1fZnJlZShwTWVtT1AsIGhQc3ktPnBzeURhdGFbMF0ubWRjdFNwZWN0cnVtLCBWT19JTkRFWF9FTkNfQUFDKTsNCisNCisgICAgZm9yIChuY2g9MDsgbmNoPE1BWF9DSEFOTkVMUzsgbmNoKyspew0KKwkgIGhQc3ktPnBzeURhdGFbbmNoXS5tZGN0RGVsYXlCdWZmZXIgPSBOVUxMOyAgICAgIA0KKwkgIGhQc3ktPnBzeURhdGFbbmNoXS5tZGN0U3BlY3RydW0gPSBOVUxMOw0KKwl9DQorDQorCWlmKGhQc3ktPnBTY3JhdGNoVG5zKQ0KKwl7DQorCQltZW1fZnJlZShwTWVtT1AsIGhQc3ktPnBTY3JhdGNoVG5zLCBWT19JTkRFWF9FTkNfQUFDKTsNCisJCWhQc3ktPnBTY3JhdGNoVG5zID0gTlVMTDsNCisJfQ0KKyAgfQ0KKworICByZXR1cm4gMDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUHN5T3V0TmV3CisqIGRlc2NyaXB0aW9uOiAgYWxsb2NhdGVzIG1lbW9yeSBmb3IgcHN5T3V0IHN0cnVjCisqIHJldHVybnM6ICAgICAgYW4gZXJyb3IgY29kZQorKiBpbnB1dDogICAgICAgIHBvaW50ZXIgdG8gYSBwc3ljaCBoYW5kbGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IFBzeU91dE5ldyhQU1lfT1VUICpoUHN5T3V0LCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCkKK3sKKyAgcE1lbU9QLT5TZXQoVk9fSU5ERVhfRU5DX0FBQywgaFBzeU91dCwgMCwgc2l6ZW9mKFBTWV9PVVQpKTsKKyAgLyoKKyAgICBhbGxvYyBzb21lIG1vcmUgc3R1ZmYsIHRiZAorICAqLworICByZXR1cm4gMDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFBzeU91dERlbGV0ZQorKiBkZXNjcmlwdGlvbjogIGFsbG9jYXRlcyBtZW1vcnkgZm9yIHBzeWNob2Fjb3VzdGljCisqIHJldHVybnM6ICAgICAgYW4gZXJyb3IgY29kZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgUHN5T3V0RGVsZXRlKFBTWV9PVVQgKmhQc3lPdXQsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworICBoUHN5T3V0PU5VTEw7CisgIHJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBwc3lNYWluSW5pdAorKiBkZXNjcmlwdGlvbjogIGluaXRpYWxpemVzIHBzeWNob2Fjb3VzdGljCisqIHJldHVybnM6ICAgICAgYW4gZXJyb3IgY29kZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1dvcmQxNiBwc3lNYWluSW5pdChQU1lfS0VSTkVMICpoUHN5LAorICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgIFdvcmQzMiBiaXRSYXRlLAorICAgICAgICAgICAgICAgICAgIFdvcmQxNiBjaGFubmVscywKKyAgICAgICAgICAgICAgICAgICBXb3JkMTYgdG5zTWFzaywKKyAgICAgICAgICAgICAgICAgICBXb3JkMTYgYmFuZHdpZHRoKQoreworICBXb3JkMTYgY2gsIGVycjsKKyAgV29yZDMyIGNoYW5uZWxCaXRSYXRlID0gYml0UmF0ZS9jaGFubmVsczsKKworICBlcnIgPSBJbml0UHN5Q29uZmlndXJhdGlvbkxvbmcoY2hhbm5lbEJpdFJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihoUHN5LT5wc3lDb25mTG9uZykpOw0KKw0KKyAgaWYgKCFlcnIpIHsKKyAgICAgIGhQc3ktPnNhbXBsZVJhdGVJZHggPSBoUHN5LT5wc3lDb25mTG9uZy5zYW1wUmF0ZUlkeDsNCisJICBlcnIgPSBJbml0VG5zQ29uZmlndXJhdGlvbkxvbmcoYml0UmF0ZSwgc2FtcGxlUmF0ZSwgY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoUHN5LT5wc3lDb25mTG9uZy50bnNDb25mLCAmaFBzeS0+cHN5Q29uZkxvbmcsIHRuc01hc2smMik7CisgIH0KKworICBpZiAoIWVycikKKyAgICBlcnIgPSBJbml0UHN5Q29uZmlndXJhdGlvblNob3J0KGNoYW5uZWxCaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoUHN5LT5wc3lDb25mU2hvcnQpOworICBpZiAoIWVycikgeworICAgIGVyciA9IEluaXRUbnNDb25maWd1cmF0aW9uU2hvcnQoYml0UmF0ZSwgc2FtcGxlUmF0ZSwgY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaFBzeS0+cHN5Q29uZlNob3J0LnRuc0NvbmYsICZoUHN5LT5wc3lDb25mU2hvcnQsIHRuc01hc2smMSk7CisgIH0KKworICBpZiAoIWVycikKKyAgICBmb3IoY2g9MDtjaCA8IGNoYW5uZWxzO2NoKyspeworICAKKyAgICAgIEluaXRCbG9ja1N3aXRjaGluZygmaFBzeS0+cHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJpdFJhdGUsIGNoYW5uZWxzKTsKKworICAgICAgSW5pdFByZUVjaG9Db250cm9sKGhQc3ktPnBzeURhdGFbY2hdLnNmYlRocmVzaG9sZG5tMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoUHN5LT5wc3lDb25mTG9uZy5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaFBzeS0+cHN5Q29uZkxvbmcuc2ZiVGhyZXNob2xkUXVpZXQpOworICAgICAgaFBzeS0+cHN5RGF0YVtjaF0ubWRjdFNjYWxlbm0xID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKworCXJldHVybihlcnIpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogcHN5TWFpbgorKiBkZXNjcmlwdGlvbjogIHBzeWNob2Fjb3VzdGljIG1haW4gZnVuY3Rpb24KKyogcmV0dXJuczogICAgICBhbiBlcnJvciBjb2RlCisqCisqICAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGVub3VnaCBpbnB1dCBkYXRhIGlzIGluIHRoZSBtb2R1bG8gYnVmZmVyLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1dvcmQxNiBwc3lNYWluKFdvcmQxNiAgICAgICAgICAgICAgICAgICBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICBFTEVNRU5UX0lORk8gICAgICAgICAgICAqZWxlbUluZm8sCisgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgICAgICAgICAqdGltZVNpZ25hbCwgCisgICAgICAgICAgICAgICBQU1lfREFUQSAgICAgICAgICAgICAgICAgcHN5RGF0YVtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgVE5TX0RBVEEgICAgICAgICAgICAgICAgIHRuc0RhdGFbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX0xPTkcgICpoUHN5Q29uZkxvbmcsCisgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9TSE9SVCAqaFBzeUNvbmZTaG9ydCwKKyAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCAgICAgICAgICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQgICAgICAgICAqcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAgICAgICAgICAgICpwU2NyYXRjaFRucywKKwkJCSAgIFdvcmQzMgkJCQkgICBzYW1wbGVSYXRlKQoreworICBXb3JkMTYgbWF4U2ZiUGVyR3JvdXBbTUFYX0NIQU5ORUxTXTsKKyAgV29yZDE2IG1kY3RTY2FsaW5nQXJyYXlbTUFYX0NIQU5ORUxTXTsKKworICBXb3JkMTYgY2g7ICAgLyogY291bnRzIHRocm91Z2ggY2hhbm5lbHMgICAgICAgICAgKi8KKyAgV29yZDE2IHNmYjsgIC8qIGNvdW50cyB0aHJvdWdoIHNjYWxlZmFjdG9yIGJhbmRzICovCisgIFdvcmQxNiBsaW5lOyAvKiBjb3VudHMgdGhyb3VnaCBsaW5lcyAgICAgICAgICAgICAqLworICBXb3JkMTYgY2hhbm5lbHM7CisgIFdvcmQxNiBtYXhTY2FsZTsKKworICBjaGFubmVscyA9IGVsZW1JbmZvLT5uQ2hhbm5lbHNJbkVsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgbWF4U2NhbGUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgLyogYmxvY2sgc3dpdGNoaW5nICovDQorICBmb3IoY2ggPSAwOyBjaCA8IGNoYW5uZWxzOyBjaCsrKSB7CisgICAgQmxvY2tTd2l0Y2hpbmcoJnBzeURhdGFbY2hdLmJsb2NrU3dpdGNoaW5nQ29udHJvbCwKKyAgICAgICAgICAgICAgICAgICB0aW1lU2lnbmFsK2VsZW1JbmZvLT5DaGFubmVsSW5kZXhbY2hdLAorCQkJCSAgIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgbkNoYW5uZWxzKTsKKyAgfQorCisgIC8qIHN5bmNoIGxlZnQgYW5kIHJpZ2h0IGJsb2NrIHR5cGUgKi8KKyAgU3luY0Jsb2NrU3dpdGNoaW5nKCZwc3lEYXRhWzBdLmJsb2NrU3dpdGNoaW5nQ29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhWzFdLmJsb2NrU3dpdGNoaW5nQ29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzKTsKKworICAvKiB0cmFuc2Zvcm0KKyAgICAgYW5kIGdldCBtYXhTY2FsZSAobWF4IG1kY3RTY2FsaW5nKSBmb3IgYWxsIGNoYW5uZWxzICovCisgIGZvcihjaD0wOyBjaDxjaGFubmVsczsgY2grKykgeworICAgIFRyYW5zZm9ybV9SZWFsKHBzeURhdGFbY2hdLm1kY3REZWxheUJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICB0aW1lU2lnbmFsK2VsZW1JbmZvLT5DaGFubmVsSW5kZXhbY2hdLAorICAgICAgICAgICAgICAgICAgIG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgJihtZGN0U2NhbGluZ0FycmF5W2NoXSksCisgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlKTsKKyAgICBtYXhTY2FsZSA9IG1heChtYXhTY2FsZSwgbWRjdFNjYWxpbmdBcnJheVtjaF0pOworICB9CisKKyAgLyogY29tbW9uIHNjYWxpbmcgZm9yIGFsbCBjaGFubmVscyAqLworICBmb3IgKGNoPTA7IGNoPGNoYW5uZWxzOyBjaCsrKSB7CisgICAgV29yZDE2IHNjYWxlRGlmZiA9IG1heFNjYWxlIC0gbWRjdFNjYWxpbmdBcnJheVtjaF07CisgICAgIAorICAgIGlmIChzY2FsZURpZmYgPiAwKSB7CisgICAgICBXb3JkMzIgKlNwZWN0cnVtID0gcHN5RGF0YVtjaF0ubWRjdFNwZWN0cnVtOworCSAgZm9yKGxpbmU9MDsgbGluZTxGUkFNRV9MRU5fTE9ORzsgbGluZSsrKSB7CisgICAgICAgICpTcGVjdHJ1bSA9ICgqU3BlY3RydW0pID4+IHNjYWxlRGlmZjsKKwkJU3BlY3RydW0rKzsKKyAgICAgIH0KKyAgICB9CisgICAgcHN5RGF0YVtjaF0ubWRjdFNjYWxlID0gbWF4U2NhbGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworICBmb3IgKGNoPTA7IGNoPGNoYW5uZWxzOyBjaCsrKSB7CisgICAgIAorICAgIGlmKHBzeURhdGFbY2hdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZSAhPSBTSE9SVF9XSU5ET1cpIHsKKyAgICAgIC8qIHVwZGF0ZSBsb25nIGJsb2NrIHBhcmFtZXRlciAqLworCSAgYWR2YW5jZVBzeWNoTG9uZygmcHN5RGF0YVtjaF0sCisgICAgICAgICAgICAgICAgICAgICAgICZ0bnNEYXRhW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAmcHN5T3V0Q2hhbm5lbFtjaF0sCisgICAgICAgICAgICAgICAgICAgICAgIHBTY3JhdGNoVG5zLAorICAgICAgICAgICAgICAgICAgICAgICAmdG5zRGF0YVsxIC0gY2hdLAorICAgICAgICAgICAgICAgICAgICAgICBjaCk7CisKKyAgICAgIC8qIGRldGVybWluZSBtYXhTZmIgKi8KKyAgICAgIGZvciAoc2ZiPWhQc3lDb25mTG9uZy0+c2ZiQ250LTE7IHNmYj49MDsgc2ZiLS0pIHsKKyAgICAgICAgZm9yIChsaW5lPWhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0W3NmYisxXSAtIDE7IGxpbmU+PWhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0W3NmYl07IGxpbmUtLSkgeworICAgICAgICAgICAKKyAgICAgICAgICBpZiAocHN5RGF0YVtjaF0ubWRjdFNwZWN0cnVtW2xpbmVdICE9IDApIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChsaW5lID49IGhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0W3NmYl0pIGJyZWFrOworICAgICAgfQorICAgICAgbWF4U2ZiUGVyR3JvdXBbY2hdID0gc2ZiICsgMTsKKworICAgICAgLyogQ2FsYyBiYW5kd2lzZSBlbmVyZ2llcyBmb3IgbWlkIGFuZCBzaWRlIGNoYW5uZWwKKyAgICAgICAgIERvIGl0IG9ubHkgaWYgMiBjaGFubmVscyBleGlzdCAqLworICAgICAgIAorICAgICAgaWYgKGNoID09IDEpCisgICAgICAgIGFkdmFuY2VQc3ljaExvbmdNUyhwc3lEYXRhLCBoUHN5Q29uZkxvbmcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGFkdmFuY2VQc3ljaFNob3J0KCZwc3lEYXRhW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZ0bnNEYXRhW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAmcHN5T3V0Q2hhbm5lbFtjaF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwU2NyYXRjaFRucywKKyAgICAgICAgICAgICAgICAgICAgICAgICZ0bnNEYXRhWzEgLSBjaF0sCisgICAgICAgICAgICAgICAgICAgICAgICBjaCk7CisKKyAgICAgIC8qIENhbGMgYmFuZHdpc2UgZW5lcmdpZXMgZm9yIG1pZCBhbmQgc2lkZSBjaGFubmVsCisgICAgICAgICBEbyBpdCBvbmx5IGlmIDIgY2hhbm5lbHMgZXhpc3QgKi8KKyAgICAgICAKKyAgICAgIGlmIChjaCA9PSAxKQorICAgICAgICBhZHZhbmNlUHN5Y2hTaG9ydE1TIChwc3lEYXRhLCBoUHN5Q29uZlNob3J0KTsKKyAgICB9CisgIH0KKworICAvKiBncm91cCBzaG9ydCBkYXRhICovCisgIGZvcihjaD0wOyBjaDxjaGFubmVsczsgY2grKykgeworICAgICAKKyAgICBpZiAocHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlID09IFNIT1JUX1dJTkRPVykgeworICAgICAgZ3JvdXBTaG9ydERhdGEocHN5RGF0YVtjaF0ubWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgcFNjcmF0Y2hUbnMsCisgICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVtjaF0uc2ZiVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbY2hdLnNmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhW2NoXS5zZmJFbmVyZ3lNUywKKyAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhW2NoXS5zZmJTcHJlYWRlZEVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYk1pblNuciwKKyAgICAgICAgICAgICAgICAgICAgIHBzeU91dEVsZW1lbnQtPmdyb3VwZWRTZmJPZmZzZXRbY2hdLAorICAgICAgICAgICAgICAgICAgICAgJm1heFNmYlBlckdyb3VwW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgIHBzeU91dEVsZW1lbnQtPmdyb3VwZWRTZmJNaW5TbnJbY2hdLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLm5vT2ZHcm91cHMsCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wuZ3JvdXBMZW4pOworICAgIH0KKyAgfQorCisKKyNpZiAoTUFYX0NIQU5ORUxTPjEpCisgIC8qCisgICAgc3RlcmVvIFByb2Nlc3NpbmcKKyAgKi8KKyAgaWYgKGNoYW5uZWxzID09IDIpIHsKKyAgICBwc3lPdXRFbGVtZW50LT50b29sc0luZm8ubXNEaWdlc3QgPSBNU19OT05FOyAgICAgICAgICAgICAgICAgCisgICAgbWF4U2ZiUGVyR3JvdXBbMF0gPSBtYXhTZmJQZXJHcm91cFsxXSA9IG1heChtYXhTZmJQZXJHcm91cFswXSwgbWF4U2ZiUGVyR3JvdXBbMV0pOworCisgICAgIAorICAgIGlmIChwc3lEYXRhWzBdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZSAhPSBTSE9SVF9XSU5ET1cpCisgICAgICBNc1N0ZXJlb1Byb2Nlc3NpbmcocHN5RGF0YVswXS5zZmJFbmVyZ3kuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYkVuZXJneS5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMF0uc2ZiRW5lcmd5TVMuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYkVuZXJneU1TLnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVsxXS5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5zZmJUaHJlc2hvbGQuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYlRocmVzaG9sZC5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMF0uc2ZiU3ByZWFkZWRFbmVyZ3kuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYlNwcmVhZGVkRW5lcmd5LnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgKFdvcmQxNiopJnBzeU91dEVsZW1lbnQtPnRvb2xzSW5mby5tc0RpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoV29yZDE2Kilwc3lPdXRFbGVtZW50LT50b29sc0luZm8ubXNNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgIG1heFNmYlBlckdyb3VwWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBXb3JkMTYqKWhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0KTsKKyAgICAgIGVsc2UKKyAgICAgICAgTXNTdGVyZW9Qcm9jZXNzaW5nKHBzeURhdGFbMF0uc2ZiRW5lcmd5LnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYkVuZXJneS5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5zZmJFbmVyZ3lNUy5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVsxXS5zZmJFbmVyZ3lNUy5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMF0uc2ZiVGhyZXNob2xkLnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYlRocmVzaG9sZC5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5zZmJTcHJlYWRlZEVuZXJneS5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVsxXS5zZmJTcHJlYWRlZEVuZXJneS5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdvcmQxNiopJnBzeU91dEVsZW1lbnQtPnRvb2xzSW5mby5tc0RpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXb3JkMTYqKXBzeU91dEVsZW1lbnQtPnRvb2xzSW5mby5tc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzBdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC5ub09mR3JvdXBzKmhQc3lDb25mU2hvcnQtPnNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFNmYlBlckdyb3VwWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IFdvcmQxNiopcHN5T3V0RWxlbWVudC0+Z3JvdXBlZFNmYk9mZnNldFswXSk7CisgIH0KKworI2VuZGlmIC8qIChNQVhfQ0hBTk5FTFM+MSkgKi8KKworICAvKgorICAgIGJ1aWxkIG91dHB1dAorICAqLworICBmb3IoY2g9MDtjaDxjaGFubmVscztjaCsrKSB7CisgICAgIAorICAgIGlmIChwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UgIT0gU0hPUlRfV0lORE9XKQorICAgICAgQnVpbGRJbnRlcmZhY2UocHN5RGF0YVtjaF0ubWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0ubWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbY2hdLnNmYlRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhW2NoXS5zZmJFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVtjaF0uc2ZiU3ByZWFkZWRFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5zZmJFbmVyZ3lTdW0sCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5zZmJFbmVyZ3lTdW1NUywKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbY2hdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgIGJsb2NrVHlwZTJ3aW5kb3dTaGFwZVtwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2VdLAorICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIG1heFNmYlBlckdyb3VwW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiTWluU25yLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLm5vT2ZHcm91cHMsCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wuZ3JvdXBMZW4sCisgICAgICAgICAgICAgICAgICAgICAmcHN5T3V0Q2hhbm5lbFtjaF0pOworICAgIGVsc2UKKyAgICAgIEJ1aWxkSW50ZXJmYWNlKHBzeURhdGFbY2hdLm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbY2hdLm1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhW2NoXS5zZmJUaHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVtjaF0uc2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbY2hdLnNmYlNwcmVhZGVkRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0uc2ZiRW5lcmd5U3VtLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0uc2ZiRW5lcmd5U3VtTVMsCisgICAgICAgICAgICAgICAgICAgICBTSE9SVF9XSU5ET1csCisgICAgICAgICAgICAgICAgICAgICBTSU5FX1dJTkRPVywKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLm5vT2ZHcm91cHMqaFBzeUNvbmZTaG9ydC0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgcHN5T3V0RWxlbWVudC0+Z3JvdXBlZFNmYk9mZnNldFtjaF0sCisgICAgICAgICAgICAgICAgICAgICBtYXhTZmJQZXJHcm91cFtjaF0sCisgICAgICAgICAgICAgICAgICAgICBwc3lPdXRFbGVtZW50LT5ncm91cGVkU2ZiTWluU25yW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbY2hdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC5ub09mR3JvdXBzLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLmdyb3VwTGVuLAorICAgICAgICAgICAgICAgICAgICAgJnBzeU91dENoYW5uZWxbY2hdKTsKKyAgfQorCisgIHJldHVybigwKTsgLyogbm8gZXJyb3IgKi8KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGFkdmFuY2VQc3ljaExvbmcKKyogZGVzY3JpcHRpb246ICBwc3ljaG9hY291c3RpYyBmb3IgbG9uZyBibG9ja3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgV29yZDE2IGFkdmFuY2VQc3ljaExvbmcoUFNZX0RBVEEqIHBzeURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE5TX0RBVEEqIHRuc0RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX0NPTkZJR1VSQVRJT05fTE9ORyAqaFBzeUNvbmZMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCogcHN5T3V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnBTY3JhdGNoVG5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFROU19EQVRBKiB0bnNEYXRhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgY2gpCit7CisgIFdvcmQzMiBpOworICBXb3JkMzIgbm9ybUVuZXJneVNoaWZ0ID0gKHBzeURhdGEtPm1kY3RTY2FsZSArIDEpIDw8IDE7IC8qIGluIHJlZmVyZW5jZSBjb2RlLCBtZGN0IHNwZWN0cnVtIG11c3QgYmUgbXVsdGlwaWVkIHdpdGggMiwgc28gKzEgKi8KKyAgV29yZDMyIGNsaXBFbmVyZ3kgPSBoUHN5Q29uZkxvbmctPmNsaXBFbmVyZ3kgPj4gbm9ybUVuZXJneVNoaWZ0Ow0KKyAgV29yZDMyICpkYXRhMCwgKmRhdGExLCB0ZGF0YTsKKworICAvKiBsb3cgcGFzcyAqLworICBkYXRhMCA9IHBzeURhdGEtPm1kY3RTcGVjdHJ1bSArIGhQc3lDb25mTG9uZy0+bG93cGFzc0xpbmU7DQorICBmb3IoaT1oUHN5Q29uZkxvbmctPmxvd3Bhc3NMaW5lOyBpPEZSQU1FX0xFTl9MT05HOyBpKyspIHsKKyAgICAqZGF0YTArKyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIC8qIENhbGMgc2ZiLWJhbmR3aXNlIG1kY3QtZW5lcmdpZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWwgKi8KKyAgQ2FsY0JhbmRFbmVyZ3koIHBzeURhdGEtPm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJBY3RpdmUsCisgICAgICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICZwc3lEYXRhLT5zZmJFbmVyZ3lTdW0uc2ZiTG9uZyk7CisKKyAgLyoKKyAgICBUTlMgZGV0ZWN0CisgICovCisgIFRuc0RldGVjdCh0bnNEYXRhLAorICAgICAgICAgICAgaFBzeUNvbmZMb25nLT50bnNDb25mLAorICAgICAgICAgICAgcFNjcmF0Y2hUbnMsCisgICAgICAgICAgICAoY29uc3QgV29yZDE2KiloUHN5Q29uZkxvbmctPnNmYk9mZnNldCwKKyAgICAgICAgICAgIHBzeURhdGEtPm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBwc3lEYXRhLT5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UsCisgICAgICAgICAgICBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiTG9uZyk7CisKKyAgLyogIFRuc1N5bmMgKi8gICAKKyAgaWYgKGNoID09IDEpIHsKKyAgICBUbnNTeW5jKHRuc0RhdGEsCisgICAgICAgICAgICB0bnNEYXRhMiwKKyAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+dG5zQ29uZiwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBwc3lEYXRhLT5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UpOworICB9CisKKyAgLyogIFRucyBFbmNvZGVyICovIAorICBUbnNFbmNvZGUoJnBzeU91dENoYW5uZWwtPnRuc0luZm8sCisgICAgICAgICAgICB0bnNEYXRhLAorICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJDbnQsCisgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnRuc0NvbmYsCisgICAgICAgICAgICBoUHN5Q29uZkxvbmctPmxvd3Bhc3NMaW5lLAorICAgICAgICAgICAgcHN5RGF0YS0+bWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIHBzeURhdGEtPmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZSk7CisKKyAgLyogZmlyc3QgcGFydCBvZiB0aHJlc2hvbGQgY2FsY3VsYXRpb24gKi8KKyAgZGF0YTAgPSBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiTG9uZzsNCisgIGRhdGExID0gcHN5RGF0YS0+c2ZiVGhyZXNob2xkLnNmYkxvbmc7DQorICBmb3IgKGk9aFBzeUNvbmZMb25nLT5zZmJDbnQ7IGk7IGktLSkgeworICAgIHRkYXRhID0gTF9tcHlfbHMoKmRhdGEwKyssIGhQc3lDb25mTG9uZy0+cmF0aW8pOworICAgICpkYXRhMSsrID0gbWluKHRkYXRhLCBjbGlwRW5lcmd5KTsNCisgIH0KKworICAvKiBDYWxjIHNmYi1iYW5kd2lzZSBtZGN0LWVuZXJnaWVzIGZvciBsZWZ0IGFuZCByaWdodCBjaGFubmVsIGFnYWluICovICAgCisgIGlmICh0bnNEYXRhLT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvLnRuc0FjdGl2ZSE9MCkgeworICAgIFdvcmQxNiB0bnNTdGFydEJhbmQgPSBoUHN5Q29uZkxvbmctPnRuc0NvbmYudG5zU3RhcnRCYW5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBDYWxjQmFuZEVuZXJneSggcHN5RGF0YS0+bWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYk9mZnNldCt0bnNTdGFydEJhbmQsCisgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiQWN0aXZlIC0gdG5zU3RhcnRCYW5kLAorICAgICAgICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiTG9uZyt0bnNTdGFydEJhbmQsCisgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhLT5zZmJFbmVyZ3lTdW0uc2ZiTG9uZyk7CisgICAgDQorCWRhdGEwID0gcHN5RGF0YS0+c2ZiRW5lcmd5LnNmYkxvbmc7DQorCXRkYXRhID0gcHN5RGF0YS0+c2ZiRW5lcmd5U3VtLnNmYkxvbmc7DQorCWZvciAoaT0wOyBpPHRuc1N0YXJ0QmFuZDsgaSsrKQorICAgICAgdGRhdGEgKz0gKmRhdGEwKys7DQorDQorCXBzeURhdGEtPnNmYkVuZXJneVN1bS5zZmJMb25nID0gdGRhdGE7CisgIH0KKworCisgIC8qIHNwcmVhZGluZyBlbmVyZ3kgKi8KKyAgU3ByZWFkaW5nTWF4KGhQc3lDb25mTG9uZy0+c2ZiQ250LAorICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJNYXNrTG93RmFjdG9yLAorICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJNYXNrSGlnaEZhY3RvciwKKyAgICAgICAgICAgICAgIHBzeURhdGEtPnNmYlRocmVzaG9sZC5zZmJMb25nKTsKKworICAvKiB0aHJlc2hvbGQgaW4gcXVpZXQgKi8KKyAgZGF0YTAgPSBwc3lEYXRhLT5zZmJUaHJlc2hvbGQuc2ZiTG9uZzsNCisgIGRhdGExID0gaFBzeUNvbmZMb25nLT5zZmJUaHJlc2hvbGRRdWlldDsNCisgIGZvciAoaT1oUHN5Q29uZkxvbmctPnNmYkNudDsgaTsgaS0tKQorICB7DQorCSAgKmRhdGEwID0gbWF4KCpkYXRhMCwgKCpkYXRhMSA+PiBub3JtRW5lcmd5U2hpZnQpKTsNCisJICBkYXRhMCsrOyBkYXRhMSsrOw0KKyAgfQorCisgIC8qIHByZWVjaG8gY29udHJvbCAqLyAgIAorICBpZiAocHN5RGF0YS0+YmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlID09IFNUT1BfV0lORE9XKSB7CisgICAgZGF0YTAgPSBwc3lEYXRhLT5zZmJUaHJlc2hvbGRubTE7DQorCWZvciAoaT1oUHN5Q29uZkxvbmctPnNmYkNudDsgaTsgaS0tKSB7DQorICAgICAgKmRhdGEwKysgPSBNQVhfMzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgIH0NCisgICAgcHN5RGF0YS0+bWRjdFNjYWxlbm0xID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworICBQcmVFY2hvQ29udHJvbCggcHN5RGF0YS0+c2ZiVGhyZXNob2xkbm0xLAorICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPm1heEFsbG93ZWRJbmNyZWFzZUZhY3RvciwKKyAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+bWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yLAorICAgICAgICAgICAgICAgICAgcHN5RGF0YS0+c2ZiVGhyZXNob2xkLnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICBwc3lEYXRhLT5tZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICBwc3lEYXRhLT5tZGN0U2NhbGVubTEpOworICBwc3lEYXRhLT5tZGN0U2NhbGVubTEgPSBwc3lEYXRhLT5tZGN0U2NhbGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAKKyAgaWYgKHBzeURhdGEtPmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZT09IFNUQVJUX1dJTkRPVykgeworICAgIGRhdGEwID0gcHN5RGF0YS0+c2ZiVGhyZXNob2xkbm0xOw0KKwlmb3IgKGk9aFBzeUNvbmZMb25nLT5zZmJDbnQ7IGk7IGktLSkgeworICAgICAgKmRhdGEwKysgPSBNQVhfMzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICAgIHBzeURhdGEtPm1kY3RTY2FsZW5tMSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgLyogYXBwbHkgdG5zIG11bHQgdGFibGUgb24gY2IgdGhyZXNob2xkcyAqLworICBBcHBseVRuc011bHRUYWJsZVRvUmF0aW9zKGhQc3lDb25mTG9uZy0+dG5zQ29uZi50bnNSYXRpb1BhdGNoTG93ZXN0Q2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT50bnNDb25mLnRuc1N0YXJ0QmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGEtPnNmYlRocmVzaG9sZC5zZmJMb25nKTsKKworCisgIC8qIHNwcmVhZGVkIGVuZXJneSAqLworICBkYXRhMCA9IHBzeURhdGEtPnNmYlNwcmVhZGVkRW5lcmd5LnNmYkxvbmc7DQorICBkYXRhMSA9IHBzeURhdGEtPnNmYkVuZXJneS5zZmJMb25nOw0KKyAgZm9yIChpPWhQc3lDb25mTG9uZy0+c2ZiQ250OyBpOyBpLS0pIHsKKyAgICAvL3BzeURhdGEtPnNmYlNwcmVhZGVkRW5lcmd5LnNmYkxvbmdbaV0gPSBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiTG9uZ1tpXTsgICAgICAgDQorCSAgKmRhdGEwKysgPSAqZGF0YTErKzsKKyAgfQorCisgIC8qIHNwcmVhZGluZyBlbmVyZ3kgKi8KKyAgU3ByZWFkaW5nTWF4KGhQc3lDb25mTG9uZy0+c2ZiQ250LAorICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJNYXNrTG93RmFjdG9yU3ByRW4sIAorICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJNYXNrSGlnaEZhY3RvclNwckVuLAorICAgICAgICAgICAgICAgcHN5RGF0YS0+c2ZiU3ByZWFkZWRFbmVyZ3kuc2ZiTG9uZyk7CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBhZHZhbmNlUHN5Y2hMb25nTVMKKyogZGVzY3JpcHRpb246ICAgdXBkYXRlIG1kY3QtZW5lcmdpZXMgZm9yIGxlZnQgYWRkIG9yIG1pbnVzIHJpZ2h0IGNoYW5uZWwgCisqCQkJCWZvciBsb25nIGJsb2NrCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgYWR2YW5jZVBzeWNoTG9uZ01TIChQU1lfREFUQSBwc3lEYXRhW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUFNZX0NPTkZJR1VSQVRJT05fTE9ORyAqaFBzeUNvbmZMb25nKQoreworICBDYWxjQmFuZEVuZXJneU1TKHBzeURhdGFbMF0ubWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0ubWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiQWN0aXZlLAorICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMF0uc2ZiRW5lcmd5TVMuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVswXS5zZmJFbmVyZ3lTdW1NUy5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0uc2ZiRW5lcmd5TVMuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVsxXS5zZmJFbmVyZ3lTdW1NUy5zZmJMb25nKTsKKworICByZXR1cm4gMDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogYWR2YW5jZVBzeWNoU2hvcnQKKyogZGVzY3JpcHRpb246ICBwc3ljaG9hY291c3RpYyBmb3Igc2hvcnQgYmxvY2tzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFdvcmQxNiBhZHZhbmNlUHN5Y2hTaG9ydChQU1lfREFUQSogcHN5RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE5TX0RBVEEqIHRuc0RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUICpoUHN5Q29uZlNob3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwqIHBzeU91dENoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcFNjcmF0Y2hUbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFROU19EQVRBICp0bnNEYXRhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IGNoKQoreworICBXb3JkMzIgdzsKKyAgV29yZDMyIG5vcm1FbmVyZ3lTaGlmdCA9IChwc3lEYXRhLT5tZGN0U2NhbGUgKyAxKSA8PCAxOyAvKiBpbiByZWZlcmVuY2UgY29kZSwgbWRjdCBzcGVjdHJ1bSBtdXN0IGJlIG11bHRpcGllZCB3aXRoIDIsIHNvICsxICovCisgIFdvcmQzMiBjbGlwRW5lcmd5ID0gaFBzeUNvbmZTaG9ydC0+Y2xpcEVuZXJneSA+PiBub3JtRW5lcmd5U2hpZnQ7CisgIFdvcmQzMiB3T2Zmc2V0ID0gMDsgICAgIA0KKyAgV29yZDMyICpkYXRhMCwgKmRhdGExOworCisgIGZvcih3ID0gMDsgdyA8IFRSQU5TX0ZBQzsgdysrKSB7CisgICAgV29yZDMyIGksIHRkYXRhOworCisgICAgLyogbG93IHBhc3MgKi8KKyAgICBkYXRhMCA9IHBzeURhdGEtPm1kY3RTcGVjdHJ1bSArIHdPZmZzZXQgKyBoUHN5Q29uZlNob3J0LT5sb3dwYXNzTGluZTsNCisJZm9yKGk9aFBzeUNvbmZTaG9ydC0+bG93cGFzc0xpbmU7IGk8RlJBTUVfTEVOX1NIT1JUOyBpKyspeworICAgICAgKmRhdGEwKysgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorCisgICAgLyogQ2FsYyBzZmItYmFuZHdpc2UgbWRjdC1lbmVyZ2llcyBmb3IgbGVmdCBhbmQgcmlnaHQgY2hhbm5lbCAqLworICAgIENhbGNCYW5kRW5lcmd5KCBwc3lEYXRhLT5tZGN0U3BlY3RydW0rd09mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJBY3RpdmUsCisgICAgICAgICAgICAgICAgICAgIHBzeURhdGEtPnNmYkVuZXJneS5zZmJTaG9ydFt3XSwKKyAgICAgICAgICAgICAgICAgICAgJnBzeURhdGEtPnNmYkVuZXJneVN1bS5zZmJTaG9ydFt3XSk7CisgICAgLyoKKyAgICAgICBUTlMKKyAgICAqLworICAgIFRuc0RldGVjdCh0bnNEYXRhLAorICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT50bnNDb25mLAorICAgICAgICAgICAgICBwU2NyYXRjaFRucywKKyAgICAgICAgICAgICAgKGNvbnN0IFdvcmQxNiopaFBzeUNvbmZTaG9ydC0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICBwc3lEYXRhLT5tZGN0U3BlY3RydW0rd09mZnNldCwKKyAgICAgICAgICAgICAgdywKKyAgICAgICAgICAgICAgcHN5RGF0YS0+YmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlLAorICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiU2hvcnRbd10pOworCisgICAgLyogIFRuc1N5bmMgKi8KKyAgICBpZiAoY2ggPT0gMSkgeworICAgICAgVG5zU3luYyh0bnNEYXRhLAorICAgICAgICAgICAgICB0bnNEYXRhMiwKKyAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+dG5zQ29uZiwKKyAgICAgICAgICAgICAgdywKKyAgICAgICAgICAgICAgcHN5RGF0YS0+YmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlKTsKKyAgICB9CisKKyAgICBUbnNFbmNvZGUoJnBzeU91dENoYW5uZWwtPnRuc0luZm8sCisgICAgICAgICAgICAgIHRuc0RhdGEsCisgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYkNudCwKKyAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+dG5zQ29uZiwKKyAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+bG93cGFzc0xpbmUsCisgICAgICAgICAgICAgIHBzeURhdGEtPm1kY3RTcGVjdHJ1bSt3T2Zmc2V0LAorICAgICAgICAgICAgICB3LAorICAgICAgICAgICAgICBwc3lEYXRhLT5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UpOworCisgICAgLyogZmlyc3QgcGFydCBvZiB0aHJlc2hvbGQgY2FsY3VsYXRpb24gKi8KKyAgICBkYXRhMCA9IHBzeURhdGEtPnNmYlRocmVzaG9sZC5zZmJTaG9ydFt3XTsNCisJZGF0YTEgPSBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiU2hvcnRbd107DQorCWZvciAoaT1oUHN5Q29uZlNob3J0LT5zZmJDbnQ7IGk7IGktLSkgeworICAgICAgdGRhdGEgPSBMX21weV9scygqZGF0YTErKywgaFBzeUNvbmZTaG9ydC0+cmF0aW8pOworICAgICAgKmRhdGEwKysgPSBtaW4odGRhdGEsIGNsaXBFbmVyZ3kpOw0KKyAgICB9CisKKyAgICAvKiBDYWxjIHNmYi1iYW5kd2lzZSBtZGN0LWVuZXJnaWVzIGZvciBsZWZ0IGFuZCByaWdodCBjaGFubmVsIGFnYWluICovICAgICAKKyAgICBpZiAodG5zRGF0YS0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bd10udG5zQWN0aXZlICE9IDApIHsKKyAgICAgIFdvcmQxNiB0bnNTdGFydEJhbmQgPSBoUHN5Q29uZlNob3J0LT50bnNDb25mLnRuc1N0YXJ0QmFuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBDYWxjQmFuZEVuZXJneSggcHN5RGF0YS0+bWRjdFNwZWN0cnVtK3dPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+c2ZiT2Zmc2V0K3Ruc1N0YXJ0QmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAoaFBzeUNvbmZTaG9ydC0+c2ZiQWN0aXZlIC0gdG5zU3RhcnRCYW5kKSwKKyAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiU2hvcnRbd10rdG5zU3RhcnRCYW5kLAorICAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhLT5zZmJFbmVyZ3lTdW0uc2ZiU2hvcnRbd10pOw0KKworICAgICAgdGRhdGEgPSBwc3lEYXRhLT5zZmJFbmVyZ3lTdW0uc2ZiU2hvcnRbd107DQorCSAgZGF0YTAgPSBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiU2hvcnRbd107DQorCSAgZm9yIChpPXRuc1N0YXJ0QmFuZDsgaTsgaS0tKQorICAgICAgICB0ZGF0YSArPSAqZGF0YTArKzsNCisNCisJICBwc3lEYXRhLT5zZmJFbmVyZ3lTdW0uc2ZiU2hvcnRbd10gPSB0ZGF0YTsKKyAgICB9CisKKyAgICAvKiBzcHJlYWRpbmcgKi8KKyAgICBTcHJlYWRpbmdNYXgoaFBzeUNvbmZTaG9ydC0+c2ZiQ250LAorICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJNYXNrTG93RmFjdG9yLAorICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJNYXNrSGlnaEZhY3RvciwKKyAgICAgICAgICAgICAgICAgcHN5RGF0YS0+c2ZiVGhyZXNob2xkLnNmYlNob3J0W3ddKTsKKworCisgICAgLyogdGhyZXNob2xkIGluIHF1aWV0ICovCisgICAgZGF0YTAgPSBwc3lEYXRhLT5zZmJUaHJlc2hvbGQuc2ZiU2hvcnRbd107DQorCWRhdGExID0gaFBzeUNvbmZTaG9ydC0+c2ZiVGhyZXNob2xkUXVpZXQ7DQorCWZvciAoaT1oUHN5Q29uZlNob3J0LT5zZmJDbnQ7IGk7IGktLSkKKyAgICB7DQorCQkqZGF0YTAgPSBtYXgoKmRhdGEwLCAoKmRhdGExID4+IG5vcm1FbmVyZ3lTaGlmdCkpOw0KKw0KKwkJZGF0YTArKzsgZGF0YTErKzsNCisJfQ0KKworCisgICAgLyogcHJlZWNobyAqLyAgICAgCisgICAgUHJlRWNob0NvbnRyb2woIHBzeURhdGEtPnNmYlRocmVzaG9sZG5tMSwKKyAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5tYXhBbGxvd2VkSW5jcmVhc2VGYWN0b3IsCisgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPm1pblJlbWFpbmluZ1RocmVzaG9sZEZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgcHN5RGF0YS0+c2ZiVGhyZXNob2xkLnNmYlNob3J0W3ddLAorICAgICAgICAgICAgICAgICAgICBwc3lEYXRhLT5tZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICAgIHc9PTAgPyBwc3lEYXRhLT5tZGN0U2NhbGVubTEgOiBwc3lEYXRhLT5tZGN0U2NhbGUpOworCisgICAgLyogYXBwbHkgdG5zIG11bHQgdGFibGUgb24gY2IgdGhyZXNob2xkcyAqLworICAgIEFwcGx5VG5zTXVsdFRhYmxlVG9SYXRpb3MoIGhQc3lDb25mU2hvcnQtPnRuc0NvbmYudG5zUmF0aW9QYXRjaExvd2VzdENiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnRuc0NvbmYudG5zU3RhcnRCYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zU2hvcnQuc3ViQmxvY2tJbmZvW3ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGEtPnNmYlRocmVzaG9sZC5zZmJTaG9ydFt3XSk7CisKKyAgICAvKiBzcHJlYWRlZCBlbmVyZ3kgKi8KKyAgICBkYXRhMCA9IHBzeURhdGEtPnNmYlNwcmVhZGVkRW5lcmd5LnNmYlNob3J0W3ddOw0KKwlkYXRhMSA9IHBzeURhdGEtPnNmYkVuZXJneS5zZmJTaG9ydFt3XTsNCisJZm9yIChpPWhQc3lDb25mU2hvcnQtPnNmYkNudDsgaTsgaS0tKSB7CisJICAqZGF0YTArKyA9ICpkYXRhMSsrOworICAgIH0KKyAgICBTcHJlYWRpbmdNYXgoaFBzeUNvbmZTaG9ydC0+c2ZiQ250LAorICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJNYXNrTG93RmFjdG9yU3ByRW4sIAorICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJNYXNrSGlnaEZhY3RvclNwckVuLAorICAgICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJTcHJlYWRlZEVuZXJneS5zZmJTaG9ydFt3XSk7CisKKyAgICB3T2Zmc2V0ICs9IEZSQU1FX0xFTl9TSE9SVDsKKyAgfSAvKiBmb3IgVFJBTlNfRkFDICovCisKKyAgcHN5RGF0YS0+bWRjdFNjYWxlbm0xID0gcHN5RGF0YS0+bWRjdFNjYWxlOyAgICAgICAgICAgICAgCisKKyAgcmV0dXJuIDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBhZHZhbmNlUHN5Y2hTaG9ydE1TCisqIGRlc2NyaXB0aW9uOiAgIHVwZGF0ZSBtZGN0LWVuZXJnaWVzIGZvciBsZWZ0IGFkZCBvciBtaW51cyByaWdodCBjaGFubmVsIAorKgkJCQlmb3Igc2hvcnQgYmxvY2sKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBhZHZhbmNlUHN5Y2hTaG9ydE1TIChQU1lfREFUQSBwc3lEYXRhW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUICpoUHN5Q29uZlNob3J0KQoreworICBXb3JkMzIgdywgd09mZnNldDsKKyAgd09mZnNldCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yKHc9MDsgdzxUUkFOU19GQUM7IHcrKykgeworICAgIENhbGNCYW5kRW5lcmd5TVMocHN5RGF0YVswXS5tZGN0U3BlY3RydW0rd09mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0ubWRjdFNwZWN0cnVtK3dPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJBY3RpdmUsCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzBdLnNmYkVuZXJneU1TLnNmYlNob3J0W3ddLAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbMF0uc2ZiRW5lcmd5U3VtTVMuc2ZiU2hvcnRbd10sCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYkVuZXJneU1TLnNmYlNob3J0W3ddLAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbMV0uc2ZiRW5lcmd5U3VtTVMuc2ZiU2hvcnRbd10pOworICAgIHdPZmZzZXQgKz0gRlJBTUVfTEVOX1NIT1JUOworICB9CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9xY19tYWluLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9xY19tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU2ODAyMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3FjX21haW4uYwpAQCAtMCwwICsxLDU4MCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcWNfbWFpbi5jDQorDQorCUNvbnRlbnQ6CVF1YW50aXppbmcgJiBjb2RpbmcgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgInFjX21haW4uaCIKKyNpbmNsdWRlICJxdWFudGl6ZS5oIgorI2luY2x1ZGUgImludGVyZmFjZS5oIgorI2luY2x1ZGUgImFkal90aHIuaCIKKyNpbmNsdWRlICJzZl9lc3RpbS5oIgorI2luY2x1ZGUgInN0YXRfYml0cy5oIgorI2luY2x1ZGUgImJpdF9jbnQuaCIKKyNpbmNsdWRlICJkeW5fYml0cy5oIgorI2luY2x1ZGUgImNoYW5uZWxfbWFwLmgiCisjaW5jbHVkZSAibWVtYWxpZ24uaCIKKworCit0eXBlZGVmIGVudW17CisgIEZSQU1FX0xFTl9CWVRFU19NT0RVTE8gPSAgMSwKKyAgRlJBTUVfTEVOX0JZVEVTX0lOVCAgICA9ICAyCit9RlJBTUVfTEVOX1JFU1VMVF9NT0RFOworCitzdGF0aWMgY29uc3QgV29yZDE2IG1heEZpbGxFbGVtQml0cyA9IDcgKyAyNzAqODsKKworLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KKworc3RhdGljIFdvcmQxNiBjYWxjTWF4VmFsdWVJblNmYihXb3JkMTYgc2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYk9mZnNldFtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgcXVhbnRTcGVjdHJ1bVtGUkFNRV9MRU5fTE9OR10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVXb3JkMTYgbWF4VmFsdWVbTUFYX0dST1VQRURfU0ZCXSk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNhbGNGcmFtZUxlbgorKiBkZXNjcmlwdGlvbjogZXN0aW1hdGUgdGhlIGZyYW1lIGxlbmd0aCBhY2NvcmRpbmcgdGhlIGJpdHJhdGVzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgY2FsY0ZyYW1lTGVuKFdvcmQzMiBiaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGUkFNRV9MRU5fUkVTVUxUX01PREUgbW9kZSkKK3sKKworICBXb3JkMzIgcmVzdWx0OworICBXb3JkMzIgcXVvdDsKKworICByZXN1bHQgPSAoRlJBTUVfTEVOX0xPTkcgPj4gMykgKiBiaXRSYXRlOworICBxdW90ID0gcmVzdWx0IC8gc2FtcGxlUmF0ZTsKKworICAgCisgIGlmIChtb2RlID09IEZSQU1FX0xFTl9CWVRFU19NT0RVTE8pIHsKKyAgICByZXN1bHQgLT0gcXVvdCAqIHNhbXBsZVJhdGU7CisgIH0KKyAgZWxzZSB7IC8qIEZSQU1FX0xFTl9CWVRFU19JTlQgKi8KKyAgICByZXN1bHQgPSBxdW90OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogIGZ1bmN0aW9uIG5hbWU6ZnJhbWVQYWRkaW5nCisqICBkZXNjcmlwdGlvbjogQ2FsY3VsYXRlcyBpZiBwYWRkaW5nIGlzIG5lZWRlZCBmb3IgYWN0dWFsIGZyYW1lCisqICByZXR1cm5zOiBwYWRkaW5nT24gb3Igbm90IAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGZyYW1lUGFkZGluZyhXb3JkMzIgYml0UmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpwYWRkaW5nUmVzdCkKK3sKKyAgV29yZDE2IHBhZGRpbmdPbjsKKyAgV29yZDE2IGRpZmZlcmVuY2U7CisKKyAgcGFkZGluZ09uID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZGlmZmVyZW5jZSA9IGNhbGNGcmFtZUxlbiggYml0UmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJBTUVfTEVOX0JZVEVTX01PRFVMTyApOworICAqcGFkZGluZ1Jlc3QgPSAqcGFkZGluZ1Jlc3QgLSBkaWZmZXJlbmNlOworCisgICAKKyAgaWYgKCpwYWRkaW5nUmVzdCA8PSAwICkgeworICAgIHBhZGRpbmdPbiA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAqcGFkZGluZ1Jlc3QgPSAqcGFkZGluZ1Jlc3QgKyBzYW1wbGVSYXRlOworICB9CisKKyAgcmV0dXJuIHBhZGRpbmdPbjsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFFDT3V0TmV3CisqIGRlc2NyaXB0aW9uOiBpbml0IHFjb3V0IHBhcmFtZXRlcgorKiByZXR1cm5zOiAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitXb3JkMTYgUUNPdXROZXcoUUNfT1VUICpoUUMsIFdvcmQxNiBuQ2hhbm5lbHMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworICBXb3JkMzIgaTsNCisgIFdvcmQxNiAqcXVhbnRTcGVjOw0KKyAgV29yZDE2ICpzY2Y7DQorICBVV29yZDE2ICptYXhWYWx1ZUluU2ZiOwkKKwkNCisgIHF1YW50U3BlYyA9IChXb3JkMTYgKiltZW1fbWFsbG9jKHBNZW1PUCwgbkNoYW5uZWxzICogRlJBTUVfTEVOX0xPTkcgKiBzaXplb2YoV29yZDE2KSwgMzIsIFZPX0lOREVYX0VOQ19BQUMpOw0KKyAgaWYoTlVMTCA9PSBxdWFudFNwZWMpDQorCSAgcmV0dXJuIDE7CisgIHNjZiA9IChXb3JkMTYgKiltZW1fbWFsbG9jKHBNZW1PUCwgbkNoYW5uZWxzICogTUFYX0dST1VQRURfU0ZCICogc2l6ZW9mKFdvcmQxNiksIDMyLCBWT19JTkRFWF9FTkNfQUFDKTsgICAgIA0KKyAgaWYoTlVMTCA9PSBzY2YpDQorICB7DQorCSAgcmV0dXJuIDE7DQorICB9CisgIG1heFZhbHVlSW5TZmIgPSAoVVdvcmQxNiAqKW1lbV9tYWxsb2MocE1lbU9QLCBuQ2hhbm5lbHMgKiBNQVhfR1JPVVBFRF9TRkIgKiBzaXplb2YoVVdvcmQxNiksIDMyLCBWT19JTkRFWF9FTkNfQUFDKTsNCisgIGlmKE5VTEwgPT0gbWF4VmFsdWVJblNmYikNCisgIHsNCisJICByZXR1cm4gMTsNCisgIH0NCisNCisgIGZvciAoaT0wOyBpPG5DaGFubmVsczsgaSsrKSB7CisgICAgaFFDLT5xY0NoYW5uZWxbaV0ucXVhbnRTcGVjID0gcXVhbnRTcGVjICsgaSpGUkFNRV9MRU5fTE9ORzsKKyAgICAKKyAgICBoUUMtPnFjQ2hhbm5lbFtpXS5tYXhWYWx1ZUluU2ZiID0gbWF4VmFsdWVJblNmYiArIGkqTUFYX0dST1VQRURfU0ZCOworICAgIAorICAgIGhRQy0+cWNDaGFubmVsW2ldLnNjZiA9IHNjZiArIGkqTUFYX0dST1VQRURfU0ZCOworICB9CisgCisgIHJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUUNPdXREZWxldGUKKyogZGVzY3JpcHRpb246IHVuaW50IHFjb3V0IHBhcmFtZXRlcgorKiByZXR1cm5zOiAgICAgIDAgaWYgc3VjY2VzcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgUUNPdXREZWxldGUoUUNfT1VUKiBoUUMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworICAgV29yZDMyIGk7DQorICAgaWYoaFFDKQ0KKyAgIHsNCisgICAgICBpZihoUUMtPnFjQ2hhbm5lbFswXS5xdWFudFNwZWMpOw0KKwkJIG1lbV9mcmVlKHBNZW1PUCwgaFFDLT5xY0NoYW5uZWxbMF0ucXVhbnRTcGVjLCBWT19JTkRFWF9FTkNfQUFDKTsNCisgICAgDQorICAgICAgaWYoaFFDLT5xY0NoYW5uZWxbMF0ubWF4VmFsdWVJblNmYikNCisJCSAgbWVtX2ZyZWUocE1lbU9QLCBoUUMtPnFjQ2hhbm5lbFswXS5tYXhWYWx1ZUluU2ZiLCBWT19JTkRFWF9FTkNfQUFDKTsNCisgICAgDQorCSAgaWYoaFFDLT5xY0NoYW5uZWxbMF0uc2NmKQ0KKwkJICBtZW1fZnJlZShwTWVtT1AsIGhRQy0+cWNDaGFubmVsWzBdLnNjZiwgVk9fSU5ERVhfRU5DX0FBQyk7DQorDQorCSAgZm9yIChpPTA7IGk8TUFYX0NIQU5ORUxTOyBpKyspIHsNCisJCSAgaFFDLT5xY0NoYW5uZWxbaV0ucXVhbnRTcGVjID0gTlVMTDsNCisJCSAgDQorCQkgIGhRQy0+cWNDaGFubmVsW2ldLm1heFZhbHVlSW5TZmIgPSBOVUxMOw0KKwkJICANCisJCSAgaFFDLT5xY0NoYW5uZWxbaV0uc2NmID0gTlVMTDsNCisJICB9DQorICAgfSAKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBRQ05ldworKiBkZXNjcmlwdGlvbjogc2V0IFFDIHRvIHplcm8KKyogcmV0dXJuczogICAgIDAgaWYgc3VjY2VzcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBRQ05ldyhRQ19TVEFURSAqaFFDLCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCkKK3sKKyAgcE1lbU9QLT5TZXQoVk9fSU5ERVhfRU5DX0FBQywgaFFDLDAsc2l6ZW9mKFFDX1NUQVRFKSk7CisKKyAgcmV0dXJuICgwKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBRQ0RlbGV0ZQorKiBkZXNjcmlwdGlvbjogdW5pbnQgcWNvdXQgcGFyYW1ldGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBRQ0RlbGV0ZShRQ19TVEFURSAqaFFDLCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCkKK3sKKyAKKyAgLyogCisgICAgIG5vdGhpbmcgdG8gZG8KKyAgKi8KKyAgaFFDPU5VTEw7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUUNJbml0CisqIGRlc2NyaXB0aW9uOiBpbml0IFFEIHBhcmFtZXRlcgorKiByZXR1cm5zOiAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IFFDSW5pdChRQ19TVEFURSAqaFFDLAorICAgICAgICAgICAgICBzdHJ1Y3QgUUNfSU5JVCAqaW5pdCkKK3sKKyAgaFFDLT5uQ2hhbm5lbHMgICAgICAgPSBpbml0LT5lbEluZm8tPm5DaGFubmVsc0luRWw7ICAgICAgICAgICAgICAKKyAgaFFDLT5tYXhCaXRzVG90ICAgICAgPSBpbml0LT5tYXhCaXRzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaFFDLT5iaXRSZXNUb3QgICAgICAgPSBzdWIoaW5pdC0+Yml0UmVzLCBpbml0LT5hdmVyYWdlQml0cyk7CisgIGhRQy0+YXZlcmFnZUJpdHNUb3QgID0gaW5pdC0+YXZlcmFnZUJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgCisgIGhRQy0+bWF4Qml0RmFjICAgICAgID0gaW5pdC0+bWF4Qml0RmFjOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgaFFDLT5wYWRkaW5nLnBhZGRpbmdSZXN0ID0gaW5pdC0+cGFkZGluZy5wYWRkaW5nUmVzdDsgICAgICAgICAgICAKKworICBoUUMtPmdsb2JTdGF0Qml0cyAgICA9IDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgSURfRU5EICovIAorCisgIC8qIGNoYW5uZWwgZWxlbWVudHMgaW5pdCAqLworICBJbml0RWxlbWVudEJpdHMoJmhRQy0+ZWxlbWVudEJpdHMsCisgICAgICAgICAgICAgICAgICAqaW5pdC0+ZWxJbmZvLAorICAgICAgICAgICAgICAgICAgaW5pdC0+Yml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgIGluaXQtPmF2ZXJhZ2VCaXRzLAorICAgICAgICAgICAgICAgICAgaFFDLT5nbG9iU3RhdEJpdHMpOworCisgIC8qIHRocmVzaG9sZCBwYXJhbWV0ZXIgaW5pdCAqLworICBBZGpUaHJJbml0KCZoUUMtPmFkalRociwKKyAgICAgICAgICAgICBpbml0LT5tZWFuUGUsCisgICAgICAgICAgICAgaFFDLT5lbGVtZW50Qml0cy5jaEJpdHJhdGUpOworCisgIHJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogCisqIGZ1bmN0aW9uIG5hbWU6IFFDTWFpbgorKiBkZXNjcmlwdGlvbjogIHF1YW50aXphdGlvbiBhbmQgY29kaW5nIHRoZSBzcGVjdHJ1bQorKiByZXR1cm5zOiAgICAgIDAgaWYgc3VjY2VzcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBRQ01haW4oUUNfU1RBVEUqIGhRQywgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBFTEVNRU5UX0JJVFMqIGVsQml0cywKKyAgICAgICAgICAgICAgQVRTX0VMRU1FTlQqIGFkalRoclN0YXRlRWxlbWVudCwKKyAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sICAvKiBtYXkgYmUgbW9kaWZpZWQgaW4tcGxhY2UgKi8KKyAgICAgICAgICAgICAgUFNZX09VVF9FTEVNRU5UKiBwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICBRQ19PVVRfQ0hBTk5FTCAgcWNPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sICAgIC8qIG91dCAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICBRQ19PVVRfRUxFTUVOVCogcWNPdXRFbGVtZW50LAorICAgICAgICAgICAgICBXb3JkMTYgbkNoYW5uZWxzLAorCQkJICBXb3JkMTYgYW5jaWxsYXJ5RGF0YUJ5dGVzKSAgICAgIAoreworICBXb3JkMTYgbWF4Q2hEeW5CaXRzW01BWF9DSEFOTkVMU107CisgIFdvcmQxNiBjaEJpdERpc3RyaWJ1dGlvbltNQVhfQ0hBTk5FTFNdOyAgCisgIFdvcmQzMiBjaDsKKyAgIAorICBpZiAoZWxCaXRzLT5iaXRSZXNMZXZlbCA8IDApIHsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgIAorICBpZiAoZWxCaXRzLT5iaXRSZXNMZXZlbCA+IGVsQml0cy0+bWF4Qml0UmVzQml0cykgeworICAgIHJldHVybiAtMTsKKyAgfQorCisgIHFjT3V0RWxlbWVudC0+c3RhdGljQml0c1VzZWQgPSBjb3VudFN0YXRpY0JpdGRlbWFuZChwc3lPdXRDaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5DaGFubmVscywgDQorCQkJCQkJCQkJCQkJCSAgcWNPdXRFbGVtZW50LT5hZHRzVXNlZCk7CisKKyAgIAorICBpZiAoYW5jaWxsYXJ5RGF0YUJ5dGVzKSB7CisgICAgcWNPdXRFbGVtZW50LT5hbmNCaXRzVXNlZCA9IDcgKyAoYW5jaWxsYXJ5RGF0YUJ5dGVzIDw8IDMpOworICAgICAKKyAgICBpZiAoYW5jaWxsYXJ5RGF0YUJ5dGVzID49IDE1KQorICAgICAgcWNPdXRFbGVtZW50LT5hbmNCaXRzVXNlZCA9IHFjT3V0RWxlbWVudC0+YW5jQml0c1VzZWQgKyA4OworICB9CisgIGVsc2UgeworICAgIHFjT3V0RWxlbWVudC0+YW5jQml0c1VzZWQgPSAwOyAKKyAgfQorCisgIENhbGNGb3JtRmFjdG9yKGhRQy0+bG9nU2ZiRm9ybUZhY3RvciwgaFFDLT5zZmJOUmVsZXZhbnRMaW5lcywgaFFDLT5sb2dTZmJFbmVyZ3ksIHBzeU91dENoYW5uZWwsIG5DaGFubmVscyk7CisKKyAgLyphZGp1c3QgdGhyZXNob2xkcyBmb3IgdGhlIGRlc2lyZWQgYml0cmF0ZSAqLworICBBZGp1c3RUaHJlc2hvbGRzKCZoUUMtPmFkalRociwKKyAgICAgICAgICAgICAgICAgICBhZGpUaHJTdGF0ZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICBwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgIGNoQml0RGlzdHJpYnV0aW9uLAorICAgICAgICAgICAgICAgICAgIGhRQy0+bG9nU2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgIGhRQy0+c2ZiTlJlbGV2YW50TGluZXMsICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgIHFjT3V0RWxlbWVudCwKKwkJCQkgICBlbEJpdHMsCisJCQkJICAgbkNoYW5uZWxzLAorCQkJCSAgIGhRQy0+bWF4Qml0RmFjKTsKKworICAvKmVzdGltYXRlIHNjYWxlIGZhY3RvcnMgKi8KKyAgRXN0aW1hdGVTY2FsZUZhY3RvcnMocHN5T3V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICBoUUMtPmxvZ1NmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgaFFDLT5sb2dTZmJGb3JtRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICBoUUMtPnNmYk5SZWxldmFudExpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICBuQ2hhbm5lbHMpOworCisgIC8qIGNvbmRpdGlvbiB0byBwcmV2ZW50IGVtcHR5IGJpdHJlc2Vydm9pciAqLworICBmb3IgKGNoID0gMDsgY2ggPCBuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBXb3JkMzIgbWF4RHluQml0czsKKyAgICBtYXhEeW5CaXRzID0gZWxCaXRzLT5hdmVyYWdlQml0cyArIGVsQml0cy0+Yml0UmVzTGV2ZWwgLSA3OyAvKiAtNyBiZWMuIG9mIGFsaWduIGJpdHMgKi8KKyAgICBtYXhEeW5CaXRzID0gbWF4RHluQml0cyAtIHFjT3V0RWxlbWVudC0+c3RhdGljQml0c1VzZWQgKyBxY091dEVsZW1lbnQtPmFuY0JpdHNVc2VkOworICAgIG1heENoRHluQml0c1tjaF0gPSBleHRyYWN0X2woY2hCaXREaXN0cmlidXRpb25bY2hdICogbWF4RHluQml0cyAvIDEwMDApOworICB9CisKKyAgcWNPdXRFbGVtZW50LT5keW5CaXRzVXNlZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yIChjaCA9IDA7IGNoIDwgbkNoYW5uZWxzOyBjaCsrKSB7CisgICAgV29yZDMyIGNoRHluQml0czsKKyAgICBGbGFnICAgY29uc3RyYWludHNGdWxmaWxsZWQ7CisgICAgV29yZDMyIGl0ZXI7CisgICAgaXRlciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGRvIHsKKyAgICAgIGNvbnN0cmFpbnRzRnVsZmlsbGVkID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIFF1YW50aXplU3BlY3RydW0ocHN5T3V0Q2hhbm5lbFtjaF0uc2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS5tYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtjaF0uc2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLnNmYk9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsW2NoXS5nbG9iYWxHYWluLAorICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbY2hdLnNjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsW2NoXS5xdWFudFNwZWMpOworICAgICAgIAorICAgICAgaWYgKGNhbGNNYXhWYWx1ZUluU2ZiKHBzeU91dENoYW5uZWxbY2hdLnNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS5tYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS5zZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS5zZmJPZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFtjaF0ucXVhbnRTcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFtjaF0ubWF4VmFsdWVJblNmYikgPiBNQVhfUVVBTlQpIHsKKyAgICAgICAgY29uc3RyYWludHNGdWxmaWxsZWQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKworICAgICAgY2hEeW5CaXRzID0gZHluQml0Q291bnQocWNPdXRDaGFubmVsW2NoXS5xdWFudFNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbY2hdLm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbY2hdLnNjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLndpbmRvd1NlcXVlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtjaF0uc2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtjaF0ubWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS5zZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLnNmYk9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcWNPdXRDaGFubmVsW2NoXS5zZWN0aW9uRGF0YSk7CisgICAgICAgCisgICAgICBpZiAoY2hEeW5CaXRzID49IG1heENoRHluQml0c1tjaF0pIHsKKyAgICAgICAgY29uc3RyYWludHNGdWxmaWxsZWQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICAgICAKKyAgICAgIGlmICghY29uc3RyYWludHNGdWxmaWxsZWQpIHsKKyAgICAgICAgcWNPdXRDaGFubmVsW2NoXS5nbG9iYWxHYWluID0gcWNPdXRDaGFubmVsW2NoXS5nbG9iYWxHYWluICsgMTsKKyAgICAgIH0KKworICAgICAgaXRlciA9IGl0ZXIgKyAxOworICAgICAgIAorICAgIH0gd2hpbGUoIWNvbnN0cmFpbnRzRnVsZmlsbGVkKTsKKworICAgIHFjT3V0RWxlbWVudC0+ZHluQml0c1VzZWQgPSBxY091dEVsZW1lbnQtPmR5bkJpdHNVc2VkICsgY2hEeW5CaXRzOworCisgICAgcWNPdXRDaGFubmVsW2NoXS5tZGN0U2NhbGUgICAgPSBwc3lPdXRDaGFubmVsW2NoXS5tZGN0U2NhbGU7ICAgICAgICAgCisgICAgcWNPdXRDaGFubmVsW2NoXS5ncm91cGluZ01hc2sgPSBwc3lPdXRDaGFubmVsW2NoXS5ncm91cGluZ01hc2s7ICAgICAgCisgICAgcWNPdXRDaGFubmVsW2NoXS53aW5kb3dTaGFwZSAgPSBwc3lPdXRDaGFubmVsW2NoXS53aW5kb3dTaGFwZTsgICAgICAgCisgIH0KKworICAvKiBzYXZlIGR5bkJpdHNVc2VkIGZvciBjb3JyZWN0aW9uIG9mIGJpdHMycGUgcmVsYXRpb24gKi8KKyAgQWRqVGhyVXBkYXRlKGFkalRoclN0YXRlRWxlbWVudCwgcWNPdXRFbGVtZW50LT5keW5CaXRzVXNlZCk7CisKKyAgeworICAgIFdvcmQxNiBiaXRSZXNTcGFjZSA9IGVsQml0cy0+bWF4Qml0UmVzQml0cyAtIGVsQml0cy0+Yml0UmVzTGV2ZWw7CisgICAgV29yZDE2IGRlbHRhQml0UmVzID0gZWxCaXRzLT5hdmVyYWdlQml0cyAtCisgICAgICAgICAgICAgICAgICAgICAgICAocWNPdXRFbGVtZW50LT5zdGF0aWNCaXRzVXNlZCArCisgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRFbGVtZW50LT5keW5CaXRzVXNlZCArIHFjT3V0RWxlbWVudC0+YW5jQml0c1VzZWQpOworCisgICAgcWNPdXRFbGVtZW50LT5maWxsQml0cyA9IG1heCgwLCAoZGVsdGFCaXRSZXMgLSBiaXRSZXNTcGFjZSkpOworICB9CisKKyAgcmV0dXJuIDA7IC8qIE9LICovCit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjYWxjTWF4VmFsdWVJblNmYgorKiBkZXNjcmlwdGlvbjogIHNlYXJjaCB0aGUgbWF4IFNwZWN0cnVtIGluIG9uZSBzZmIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGNhbGNNYXhWYWx1ZUluU2ZiKFdvcmQxNiBzZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBtYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc2ZiT2Zmc2V0W01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBxdWFudFNwZWN0cnVtW0ZSQU1FX0xFTl9MT05HXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVdvcmQxNiBtYXhWYWx1ZVtNQVhfR1JPVVBFRF9TRkJdKQoreworICBXb3JkMTYgc2ZiT2Zmcywgc2ZiOworICBXb3JkMTYgbWF4VmFsdWVBbGw7CisKKyAgbWF4VmFsdWVBbGwgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvcihzZmJPZmZzPTA7c2ZiT2ZmczxzZmJDbnQ7c2ZiT2Zmcys9c2ZiUGVyR3JvdXApIHsKKyAgICBmb3IgKHNmYiA9IDA7IHNmYiA8IG1heFNmYlBlckdyb3VwOyBzZmIrKykgeworICAgICAgV29yZDE2IGxpbmU7CisgICAgICBXb3JkMTYgbWF4VGhpc1NmYjsKKyAgICAgIG1heFRoaXNTZmIgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICBmb3IgKGxpbmUgPSBzZmJPZmZzZXRbc2ZiT2ZmcytzZmJdOyBsaW5lIDwgc2ZiT2Zmc2V0W3NmYk9mZnMrc2ZiKzFdOyBsaW5lKyspIHsKKyAgICAgICAgV29yZDE2IGFic1ZhbDsKKyAgICAgICAgYWJzVmFsID0gYWJzX3MocXVhbnRTcGVjdHJ1bVtsaW5lXSk7CisgICAgICAgIG1heFRoaXNTZmIgPSBtYXgobWF4VGhpc1NmYiwgYWJzVmFsKTsKKyAgICAgIH0KKworICAgICAgbWF4VmFsdWVbc2ZiT2ZmcytzZmJdID0gbWF4VGhpc1NmYjsgICAgICAgICAgICAgICAgCisgICAgICBtYXhWYWx1ZUFsbCA9IG1heChtYXhWYWx1ZUFsbCwgbWF4VGhpc1NmYik7CisgICAgfQorICB9CisgIHJldHVybiBtYXhWYWx1ZUFsbDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IHVwZGF0ZUJpdHJlcworKiBkZXNjcmlwdGlvbjogdXBkYXRlIGJpdHJlc2Vydm9pcgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgdXBkYXRlQml0cmVzKFFDX1NUQVRFKiBxY0tlcm5lbCwKKyAgICAgICAgICAgICAgICAgIFFDX09VVCogICBxY091dCkKKyAgICAgICAgICAgICAgICAgIAoreworICBFTEVNRU5UX0JJVFMgKmVsQml0czsKKyAKKyAgcWNLZXJuZWwtPmJpdFJlc1RvdCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGVsQml0cyA9ICZxY0tlcm5lbC0+ZWxlbWVudEJpdHM7CisKKyAgIAorICBpZiAoZWxCaXRzLT5hdmVyYWdlQml0cyA+IDApIHsKKyAgICAvKiBjb25zdGFudCBiaXRyYXRlICovCisgICAgV29yZDE2IGJpdHNVc2VkOworICAgIGJpdHNVc2VkID0gKHFjT3V0LT5xY0VsZW1lbnQuc3RhdGljQml0c1VzZWQgKyBxY091dC0+cWNFbGVtZW50LmR5bkJpdHNVc2VkKSArCisgICAgICAgICAgICAgICAgICAgKHFjT3V0LT5xY0VsZW1lbnQuYW5jQml0c1VzZWQgKyBxY091dC0+cWNFbGVtZW50LmZpbGxCaXRzKTsKKyAgICBlbEJpdHMtPmJpdFJlc0xldmVsID0gZWxCaXRzLT5iaXRSZXNMZXZlbCArIChlbEJpdHMtPmF2ZXJhZ2VCaXRzIC0gYml0c1VzZWQpOworICAgIHFjS2VybmVsLT5iaXRSZXNUb3QgPSBxY0tlcm5lbC0+Yml0UmVzVG90ICsgZWxCaXRzLT5iaXRSZXNMZXZlbDsKKyAgfQorICBlbHNlIHsKKyAgICAvKiB2YXJpYWJsZSBiaXRyYXRlICovCisgICAgZWxCaXRzLT5iaXRSZXNMZXZlbCA9IGVsQml0cy0+bWF4Qml0czsgICAgICAgICAgIAorICAgIHFjS2VybmVsLT5iaXRSZXNUb3QgPSBxY0tlcm5lbC0+bWF4Qml0c1RvdDsgICAgICAKKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEZpbmFsaXplQml0Q29uc3VtcHRpb24KKyogZGVzY3JpcHRpb246IGNvdW50IGJpdHMgdXNlZAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBGaW5hbGl6ZUJpdENvbnN1bXB0aW9uKFFDX1NUQVRFICpxY0tlcm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDX09VVCogcWNPdXQpCit7CisgIFdvcmQzMiBuRnVsbEZpbGxFbGVtOw0KKyAgV29yZDMyIHRvdEZpbGxCaXRzOw0KKyAgV29yZDE2IGRpZmZCaXRzOyAgCisgIFdvcmQxNiBiaXRzVXNlZDsKKworICB0b3RGaWxsQml0cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgcWNPdXQtPnRvdFN0YXRpY0JpdHNVc2VkID0gcWNLZXJuZWwtPmdsb2JTdGF0Qml0czsgICAgIAorICBxY091dC0+dG90U3RhdGljQml0c1VzZWQgKz0gcWNPdXQtPnFjRWxlbWVudC5zdGF0aWNCaXRzVXNlZDsKKyAgcWNPdXQtPnRvdER5bkJpdHNVc2VkICAgID0gcWNPdXQtPnFjRWxlbWVudC5keW5CaXRzVXNlZDsKKyAgcWNPdXQtPnRvdEFuY0JpdHNVc2VkICAgID0gcWNPdXQtPnFjRWxlbWVudC5hbmNCaXRzVXNlZDsKKyAgcWNPdXQtPnRvdEZpbGxCaXRzICAgICAgID0gcWNPdXQtPnFjRWxlbWVudC5maWxsQml0czsKKyAgIAorICBpZiAocWNPdXQtPnFjRWxlbWVudC5maWxsQml0cykgeworICAgIHRvdEZpbGxCaXRzICs9IHFjT3V0LT5xY0VsZW1lbnQuZmlsbEJpdHM7CisgIH0KKworICBuRnVsbEZpbGxFbGVtID0gKG1heCgocWNPdXQtPnRvdEZpbGxCaXRzIC0gMSksIDApIC8gbWF4RmlsbEVsZW1CaXRzKSAqIG1heEZpbGxFbGVtQml0czsNCisgIAorICBxY091dC0+dG90RmlsbEJpdHMgPSBxY091dC0+dG90RmlsbEJpdHMgLSBuRnVsbEZpbGxFbGVtOworCisgIC8qIGNoZWNrIGZpbGwgZWxlbWVudHMgKi8KKyAgIAorICBpZiAocWNPdXQtPnRvdEZpbGxCaXRzID4gMCkgeworICAgIC8qIG1pbmltdW0gRmlsbGVsZW1lbnQgY29udGFpbnMgNyAoVEFHICsgYnl0ZSBjbnQpIGJpdHMgKi8KKyAgICBxY091dC0+dG90RmlsbEJpdHMgPSBtYXgoNywgcWNPdXQtPnRvdEZpbGxCaXRzKTsKKyAgICAvKiBmaWxsIGVsZW1lbnQgc2l6ZSBlcXVhbHMgbio4ICsgNyAqLworICAgIHFjT3V0LT50b3RGaWxsQml0cyA9IHFjT3V0LT50b3RGaWxsQml0cyArICgoOCAtICgocWNPdXQtPnRvdEZpbGxCaXRzIC0gNykgJiAweDAwMDcpKSAmIDB4MDAwNyk7ICAgICAKKyAgfQorCisgIHFjT3V0LT50b3RGaWxsQml0cyA9IHFjT3V0LT50b3RGaWxsQml0cyArIG5GdWxsRmlsbEVsZW07CisKKyAgLyogbm93IGRpc3RyaWJ1dGUgZXh0cmEgZmlsbGJpdHMgYW5kIGFsaWduYml0cyBvdmVyIGNoYW5uZWwgZWxlbWVudHMgKi8KKyAgcWNPdXQtPmFsaWduQml0cyA9IDcgLSAoKHFjT3V0LT50b3REeW5CaXRzVXNlZCArIHFjT3V0LT50b3RTdGF0aWNCaXRzVXNlZCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dC0+dG90QW5jQml0c1VzZWQgKyBxY091dC0+dG90RmlsbEJpdHMgLSAxKSAmIDB4MDAwNyk7ICAgICAgICAgICAgIAorCisgICAgIAorICBpZiAoIChxY091dC0+YWxpZ25CaXRzICsgcWNPdXQtPnRvdEZpbGxCaXRzIC0gdG90RmlsbEJpdHMgPT0gOCkgJiYKKyAgICAgICAocWNPdXQtPnRvdEZpbGxCaXRzID4gOCkpCisgICAgcWNPdXQtPnRvdEZpbGxCaXRzID0gcWNPdXQtPnRvdEZpbGxCaXRzIC0gODsKKworICAgCisgIGRpZmZCaXRzID0gcWNPdXQtPmFsaWduQml0cyArIHFjT3V0LT50b3RGaWxsQml0cyAtIHRvdEZpbGxCaXRzOworICAgCisgIGlmKGRpZmZCaXRzPj0wKSB7CisgICAgcWNPdXQtPnFjRWxlbWVudC5maWxsQml0cyArPSBkaWZmQml0czsKKyAgfQorCisgIGJpdHNVc2VkID0gcWNPdXQtPnRvdER5bkJpdHNVc2VkICsgcWNPdXQtPnRvdFN0YXRpY0JpdHNVc2VkICsgcWNPdXQtPnRvdEFuY0JpdHNVc2VkOworICBiaXRzVXNlZCA9IGJpdHNVc2VkICsgcWNPdXQtPnRvdEZpbGxCaXRzICsgcWNPdXQtPmFsaWduQml0czsKKyAgIAorICBpZiAoYml0c1VzZWQgPiBxY0tlcm5lbC0+bWF4Qml0c1RvdCkgeworICAgIHJldHVybiAtMTsKKyAgfQorICByZXR1cm4gYml0c1VzZWQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBBZGp1c3RCaXRyYXRlCisqIGRlc2NyaXB0aW9uOiAgYWRqdXN0cyBmcmFtZWxlbmd0aCB2aWEgcGFkZGluZyBvbiBhIGZyYW1lIHRvIGZyYW1lIGJhc2lzLAorKiAgICAgICAgICAgICAgIHRvIGFjaGlldmUgYSBiaXRyYXRlIHRoYXQgZGVtYW5kcyBhIG5vbiBieXRlIGFsaWduZWQKKyogICAgICAgICAgICAgICBmcmFtZWxlbmd0aAorKiByZXR1cm46ICAgICAgIGVycm9yY29kZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBBZGp1c3RCaXRyYXRlKFFDX1NUQVRFICAgICAgICAqaFFDLAorICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAgICBiaXRSYXRlLCAgICAvKiB0b3RhbCBiaXRyYXRlICovCisgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgICAgIHNhbXBsZVJhdGUpIC8qIG91dHB1dCBzYW1wbGluZyByYXRlICovCit7CisgIFdvcmQxNiBwYWRkaW5nT247CisgIFdvcmQxNiBmcmFtZUxlbjsKKyAgV29yZDE2IGNvZGVCaXRzOworICBXb3JkMTYgY29kZUJpdHNMYXN0OworCisgIC8qIERvIHdlIG5lZWQgYSBleHRyYSBwYWRkaW5nIGJ5dGU/ICovCisgIHBhZGRpbmdPbiA9IGZyYW1lUGFkZGluZyhiaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZoUUMtPnBhZGRpbmcucGFkZGluZ1Jlc3QpOworCisgIC8qIGZyYW1lIGxlbmd0aCAqLworICBmcmFtZUxlbiA9IHBhZGRpbmdPbiArIGNhbGNGcmFtZUxlbihiaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUkFNRV9MRU5fQllURVNfSU5UKTsKKworICBmcmFtZUxlbiA9IGZyYW1lTGVuIDw8IDM7CisgIGNvZGVCaXRzTGFzdCA9IGhRQy0+YXZlcmFnZUJpdHNUb3QgLSBoUUMtPmdsb2JTdGF0Qml0czsKKyAgY29kZUJpdHMgICAgID0gZnJhbWVMZW4gLSBoUUMtPmdsb2JTdGF0Qml0czsKKworICAvKiBjYWxjdWxhdGUgYml0cyBmb3IgZXZlcnkgY2hhbm5lbCBlbGVtZW50ICovICAgCisgIGlmIChjb2RlQml0cyAhPSBjb2RlQml0c0xhc3QpIHsKKyAgICBXb3JkMTYgdG90YWxCaXRzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgIGhRQy0+ZWxlbWVudEJpdHMuYXZlcmFnZUJpdHMgPSAoaFFDLT5lbGVtZW50Qml0cy5yZWxhdGl2ZUJpdHMgKiBjb2RlQml0cykgPj4gMTY7IC8qIHJlbGF0aXZlQml0cyB3YXMgc2NhbGVkIGRvd24gYnkgMiAqLworICAgIHRvdGFsQml0cyArPSBoUUMtPmVsZW1lbnRCaXRzLmF2ZXJhZ2VCaXRzOworCisgICAgaFFDLT5lbGVtZW50Qml0cy5hdmVyYWdlQml0cyA9IGhRQy0+ZWxlbWVudEJpdHMuYXZlcmFnZUJpdHMgKyAoY29kZUJpdHMgLSB0b3RhbEJpdHMpOworICB9CisKKyAgaFFDLT5hdmVyYWdlQml0c1RvdCA9IGZyYW1lTGVuOyAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcXVhbnRpemUuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3F1YW50aXplLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA1ZjE2NwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3F1YW50aXplLmMKQEAgLTAsMCArMSw0NDUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXF1YW50aXplLmMNCisNCisJQ29udGVudDoJcXVhbnRpemF0aW9uIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiCisjaW5jbHVkZSAicXVhbnRpemUuaCIKKyNpbmNsdWRlICJhYWNfcm9tLmgiCisKKyNkZWZpbmUgTUFOVF9ESUdJVFMgOQorI2RlZmluZSBNQU5UX1NJWkUgICAoMTw8TUFOVF9ESUdJVFMpCisKK3N0YXRpYyBjb25zdCBXb3JkMzIgWFJPVU5EID0gMHgzM2U0MjVhZjsgLyogZmluYWwgcm91bmRpbmcgY29uc3RhbnQgKC0wLjA5NDZmKyAwLjVmKSAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOnBvdzM0IAorKiBkZXNjcmlwdGlvbjogY2FsY3VsYXRlICR4XntcZnJhY3szfXs0fX0sIGZvciAwLjUgPCB4IDwgMS4wJC4gIAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitfX2lubGluZSBXb3JkMzIgcG93MzQoV29yZDMyIHgpCit7CisgIC8qIGluZGV4IHRhYmxlIHVzaW5nIE1BTlRfRElHSVRTIGJpdHMsIGJ1dCBtYXNrIG91dCB0aGUgc2lnbiBiaXQgYW5kIHRoZSBNU0IKKyAgICAgd2hpY2ggaXMgYWx3YXlzIG9uZSAqLyAgIAorICByZXR1cm4gbVRhYl8zXzRbKHggPj4gKElOVF9CSVRTLTItTUFOVF9ESUdJVFMpKSAmIChNQU5UX1NJWkUtMSldOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOnF1YW50aXplU2luZ2xlTGluZSAKKyogZGVzY3JpcHRpb246IHF1YW50aXplcyBzcGVjdHJ1bSAgCisqICAgICAgICAgICAgICBxdWFTcGVjdHJ1bSA9IG1kY3RTcGVjdHJ1bV4zLzQqMl4oLSgzLzE2KSpnYWluKSAgICAKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBxdWFudGl6ZVNpbmdsZUxpbmUoY29uc3QgV29yZDE2IGdhaW4sIGNvbnN0IFdvcmQzMiBhYnNTcGVjdHJ1bSkKK3sKKyAgV29yZDMyIGUsIG1pbnVzRmluYWxFeHAsIGZpbmFsU2hpZnQ7CisgIFdvcmQzMiB4OworICBXb3JkMTYgcXVhID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgCisgIGlmIChhYnNTcGVjdHJ1bSkgeworICAgIGUgPSBub3JtX2woYWJzU3BlY3RydW0pOworICAgIHggPSBwb3czNChhYnNTcGVjdHJ1bSA8PCBlKTsKKworICAgIC8qIGNhbGN1bGF0ZSB0aGUgZmluYWwgZnJhY3Rpb25hbCBleHBvbmVudCB0aW1lcyAxNiAod2FzIDMqKDQqZSArIGdhaW4pICsgKElOVF9CSVRTLTEpKjE2KSAqLworICAgIG1pbnVzRmluYWxFeHAgPSAoZSA8PCAyKSArIGdhaW47CisgICAgbWludXNGaW5hbEV4cCA9IChtaW51c0ZpbmFsRXhwIDw8IDEpICsgbWludXNGaW5hbEV4cDsKKyAgICBtaW51c0ZpbmFsRXhwID0gbWludXNGaW5hbEV4cCArICgoSU5UX0JJVFMtMSkgPDwgNCk7CisKKyAgICAvKiBzZXBhcmF0ZSB0aGUgZXhwb25lbnQgaW50byBhIHNoaWZ0LCBhbmQgYSBtdWx0aXBseSAqLworICAgIGZpbmFsU2hpZnQgPSBtaW51c0ZpbmFsRXhwID4+IDQ7CisgICAgIAorICAgIGlmIChmaW5hbFNoaWZ0IDwgSU5UX0JJVFMpIHsKKyAgICAgIHggPSBMX21weV93eCh4LCBwb3cydG9taW51c05vdmVyMTZbbWludXNGaW5hbEV4cCAmIDE1XSk7CisKKyAgICAgIHggKz0gWFJPVU5EID4+IChJTlRfQklUUyAtIGZpbmFsU2hpZnQpOworCisgICAgICAvKiBzaGlmdCBhbmQgcXVhbnRpemUgKi8NCisJICBmaW5hbFNoaWZ0LS07DQorDQorCSAgaWYoZmluYWxTaGlmdCA+PSAwKQ0KKwkJICB4ID4+PSBmaW5hbFNoaWZ0Ow0KKwkgIGVsc2UNCisJCSAgeCA8PD0gKC1maW5hbFNoaWZ0KTsNCisJCQ0KKwkgIHF1YSA9IHNhdHVyYXRlKHgpOworICAgIH0KKyAgfQorCisgIHJldHVybiBxdWE7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOnF1YW50aXplTGluZXMgCisqIGRlc2NyaXB0aW9uOiBxdWFudGl6ZXMgc3BlY3RydW0gbGluZXMgIAorKiAgICAgICAgICAgICAgcXVhU3BlY3RydW0gPSBtZGN0U3BlY3RydW1eMy80KjJeKC0oMy8xNikqZ2FpbikgICAgCisqICBpbnB1dDogZ2xvYmFsIGdhaW4sIG51bWJlciBvZiBsaW5lcyB0byBwcm9jZXNzLCBzcGVjdHJhbCBkYXRhICAgICAgICAgCisqICBvdXRwdXQ6IHF1YW50aXplZCBzcGVjdHJ1bQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBxdWFudGl6ZUxpbmVzKGNvbnN0IFdvcmQxNiBnYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbm9PZkxpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgKm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpxdWFTcGVjdHJ1bSkKK3sKKyAgV29yZDMyIGxpbmU7CisgIFdvcmQzMiBtID0gZ2FpbiYzOworICBXb3JkMzIgZyA9IChnYWluID4+IDIpICsgNDsNCisgIFdvcmQzMiBtZGN0U3BlTDsNCisgIFdvcmQxNiAqcHF1YXQ7CisgICAgLyogZ2FpbiYzICovDQorDQorICBwcXVhdCA9IHF1YW50Qm9yZGVyc1ttXTsNCisNCisgIGcgKz0gMTY7DQorICANCisgIGlmKGcgPj0gMCkNCisgIHsNCisJZm9yIChsaW5lPTA7IGxpbmU8bm9PZkxpbmVzOyBsaW5lKyspIHsKKwkgIFdvcmQzMiBxdWE7CisJICBxdWEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgDQorCSAgbWRjdFNwZUwgPSBtZGN0U3BlY3RydW1bbGluZV07DQorCQorCSAgaWYgKG1kY3RTcGVMKSB7CisJCVdvcmQzMiBzYTsKKwkJV29yZDMyIHNhU2hmdDsKKworICAgICAgICBzYSA9IExfYWJzKG1kY3RTcGVMKTsKKyAgICAgICAgLy9zYVNoZnQgPSBMX3NocihzYSwgMTYgKyBnKTsNCisJICAgIHNhU2hmdCA9IHNhID4+IGc7CisKKyAgICAgICAgaWYgKHNhU2hmdCA+IHBxdWF0WzBdKSB7CisgICAgICAgICAKKyAgICAgICAgICBpZiAoc2FTaGZ0IDwgcHF1YXRbMV0pIHsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIHF1YSA9IG1kY3RTcGVMPjAgPyAxIDogLTE7CisJCSAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzYVNoZnQgPCBwcXVhdFsyXSkgeworICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIHF1YSA9IG1kY3RTcGVMPjAgPyAyIDogLTI7CisJCQl9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgaWYgKHNhU2hmdCA8IHBxdWF0WzNdKSB7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHF1YSA9IG1kY3RTcGVMPjAgPyAzIDogLTM7CisJCQkgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcXVhID0gcXVhbnRpemVTaW5nbGVMaW5lKGdhaW4sIHNhKTsKKyAgICAgICAgICAgICAgICAvKiBhZGp1c3QgdGhlIHNpZ24uIFNpbmNlIDAgPCBxdWEgPCAxLCB0aGlzIGNhbm5vdCBvdmVyZmxvdy4gKi8KKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChtZGN0U3BlTCA8IDApCisgICAgICAgICAgICAgICAgICBxdWEgPSAtcXVhOworCQkJICB9CisJCQl9CisJCSAgfQorCQl9CisJICB9CisgICAgICBxdWFTcGVjdHJ1bVtsaW5lXSA9IHF1YSA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJfQ0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKwlmb3IgKGxpbmU9MDsgbGluZTxub09mTGluZXM7IGxpbmUrKykgew0KKwkgIFdvcmQzMiBxdWE7DQorCSAgcXVhID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICANCisJICBtZGN0U3BlTCA9IG1kY3RTcGVjdHJ1bVtsaW5lXTsNCisJDQorCSAgaWYgKG1kY3RTcGVMKSB7DQorCQlXb3JkMzIgc2E7DQorCQlXb3JkMzIgc2FTaGZ0Ow0KKw0KKyAgICAgICAgc2EgPSBMX2FicyhtZGN0U3BlTCk7DQorICAgICAgICBzYVNoZnQgPSBzYSA8PCBnOw0KKw0KKyAgICAgICAgaWYgKHNhU2hmdCA+IHBxdWF0WzBdKSB7DQorICAgICAgICAgDQorICAgICAgICAgIGlmIChzYVNoZnQgPCBwcXVhdFsxXSkgew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgICBxdWEgPSBtZGN0U3BlTD4wID8gMSA6IC0xOw0KKwkJICB9DQorICAgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgDQorICAgICAgICAgICAgaWYgKHNhU2hmdCA8IHBxdWF0WzJdKSB7DQorICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICBxdWEgPSBtZGN0U3BlTD4wID8gMiA6IC0yOw0KKwkJCX0NCisgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgDQorICAgICAgICAgICAgICBpZiAoc2FTaGZ0IDwgcHF1YXRbM10pIHsNCisgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBxdWEgPSBtZGN0U3BlTD4wID8gMyA6IC0zOw0KKwkJCSAgfQ0KKyAgICAgICAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgICAgIHF1YSA9IHF1YW50aXplU2luZ2xlTGluZShnYWluLCBzYSk7DQorICAgICAgICAgICAgICAgIC8qIGFkanVzdCB0aGUgc2lnbi4gU2luY2UgMCA8IHF1YSA8IDEsIHRoaXMgY2Fubm90IG92ZXJmbG93LiAqLw0KKyAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBpZiAobWRjdFNwZUwgPCAwKQ0KKyAgICAgICAgICAgICAgICAgIHF1YSA9IC1xdWE7DQorCQkJICB9DQorCQkJfQ0KKwkJICB9DQorCQl9DQorCSAgfQ0KKyAgICAgIHF1YVNwZWN0cnVtW2xpbmVdID0gcXVhIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQkgIA0KKyAgfQorCit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6aXF1YW50aXplTGluZXMgCisqIGRlc2NyaXB0aW9uOiBpcXVhbnRpemVzIHNwZWN0cnVtIGxpbmVzIHdpdGhvdXQgc2lnbgorKiAgICAgICAgICAgICAgbWRjdFNwZWN0cnVtID0gaXF1YVNwZWN0cnVtXjQvMyAqMl4oMC4yNSpnYWluKSAKKyogaW5wdXQ6IGdsb2JhbCBnYWluLCBudW1iZXIgb2YgbGluZXMgdG8gcHJvY2VzcyxxdWFudGl6ZWQgc3BlY3RydW0gICAgICAgIAorKiBvdXRwdXQ6IHNwZWN0cmFsIGRhdGEKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgaXF1YW50aXplTGluZXMoY29uc3QgV29yZDE2IGdhaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbm9PZkxpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpxdWFudFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICptZGN0U3BlY3RydW0pCit7CisgIFdvcmQzMiAgIGlxdWFudGl6ZXJtb2Q7CisgIFdvcmQzMiAgIGlxdWFudGl6ZXJzaGlmdDsKKyAgV29yZDMyICAgbGluZTsKKworICBpcXVhbnRpemVybW9kID0gZ2FpbiAmIDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlxdWFudGl6ZXJzaGlmdCA9IGdhaW4gPj4gMjsKKworICBmb3IgKGxpbmU9MDsgbGluZTxub09mTGluZXM7IGxpbmUrKykgeworICAgICAKKyAgICBpZiggcXVhbnRTcGVjdHJ1bVtsaW5lXSAhPSAwICkgeworICAgICAgV29yZDMyIGFjY3U7CisgICAgICBXb3JkMzIgZXg7CisJICBXb3JkMzIgdGFiSW5kZXg7CisgICAgICBXb3JkMzIgc3BlY0V4cDsKKyAgICAgIFdvcmQzMiBzLHQ7CisKKyAgICAgIGFjY3UgPSBxdWFudFNwZWN0cnVtW2xpbmVdOworCisgICAgICBleCA9IG5vcm1fbChhY2N1KTsKKyAgICAgIGFjY3UgPSBhY2N1IDw8IGV4OworICAgICAgc3BlY0V4cCA9IElOVF9CSVRTLTEgLSBleDsKKworICAgICAgdGFiSW5kZXggPSAoYWNjdSA+PiAoSU5UX0JJVFMtMi1NQU5UX0RJR0lUUykpICYgKH5NQU5UX1NJWkUpOyAgICAgICAgCisKKyAgICAgIC8qIGNhbGN1bGF0ZSAibWFudGlzc2EiIF40LzMgKi8KKyAgICAgIHMgPSBtVGFiXzRfM1t0YWJJbmRleF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAvKiBnZXQgYXBwcm9wZXJpYXRlIGV4cG9uZW50IG11bHRpcGxpZXIgZm9yIHNwZWNFeHBeMy80IGNvbWJpbmVkIHdpdGggc2NmTW9kICovCisgICAgICB0ID0gc3BlY0V4cE1hbnRUYWJsZUNvbWJfZW5jW2lxdWFudGl6ZXJtb2RdW3NwZWNFeHBdOyAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgLyogbXVsdGlwbHkgIm1hbnRpc3NhIiBeNC8zIHdpdGggZXhwb25lbnQgbXVsdGlwbGllciAqLworICAgICAgYWNjdSA9IE1VTEhJR0gocywgdCk7CisKKyAgICAgIC8qIGdldCBhcHByb3BlcmlhdGUgZXhwb25lbnQgc2hpZnRlciAqLworICAgICAgc3BlY0V4cCA9IHNwZWNFeHBUYWJsZUNvbWJfZW5jW2lxdWFudGl6ZXJtb2RdW3NwZWNFeHBdOyAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIHNwZWNFeHAgKz0gaXF1YW50aXplcnNoaWZ0ICsgMTsNCisJICBpZihzcGVjRXhwID49IDApDQorCQkgIG1kY3RTcGVjdHJ1bVtsaW5lXSA9IGFjY3UgPDwgc3BlY0V4cDsNCisJICBlbHNlDQorCQkgIG1kY3RTcGVjdHJ1bVtsaW5lXSA9IGFjY3UgPj4gKC1zcGVjRXhwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBtZGN0U3BlY3RydW1bbGluZV0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFF1YW50aXplU3BlY3RydW0KKyogZGVzY3JpcHRpb246IHF1YW50aXplcyB0aGUgZW50aXJlIHNwZWN0cnVtCisqIHJldHVybnM6CisqIGlucHV0OiBudW1iZXIgb2Ygc2NhbGVmYWN0b3IgYmFuZHMgdG8gYmUgcXVhbnRpemVkLCAuLi4KKyogb3V0cHV0OiBxdWFudGl6ZWQgc3BlY3RydW0KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBRdWFudGl6ZVNwZWN0cnVtKFdvcmQxNiBzZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgZ2xvYmFsR2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNjYWxlZmFjdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnF1YW50aXplZFNwZWN0cnVtKQoreworICBXb3JkMzIgc2ZiT2Zmcywgc2ZiOworCisgIGZvcihzZmJPZmZzPTA7c2ZiT2ZmczxzZmJDbnQ7c2ZiT2Zmcys9c2ZiUGVyR3JvdXApIHsKKyAgICBXb3JkMzIgc2ZiTmV4dCA7CisgICAgZm9yIChzZmIgPSAwOyBzZmIgPCBtYXhTZmJQZXJHcm91cDsgc2ZiID0gc2ZiTmV4dCkgeworICAgICAgV29yZDE2IHNjYWxlZmFjdG9yID0gc2NhbGVmYWN0b3JzW3NmYk9mZnMrc2ZiXTsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgLyogY29hbGVzY2Ugc2ZicyB3aXRoIHRoZSBzYW1lIHNjYWxlZmFjdG9yICovCisgICAgICBmb3IgKHNmYk5leHQgPSBzZmIrMTsKKyAgICAgICAgICAgc2ZiTmV4dCA8IG1heFNmYlBlckdyb3VwICYmIHNjYWxlZmFjdG9yID09IHNjYWxlZmFjdG9yc1tzZmJPZmZzK3NmYk5leHRdOworICAgICAgICAgICBzZmJOZXh0KyspIDsKKworICAgICAgcXVhbnRpemVMaW5lcyhnbG9iYWxHYWluIC0gc2NhbGVmYWN0b3IsCisgICAgICAgICAgICAgICAgICAgIHNmYk9mZnNldFtzZmJPZmZzK3NmYk5leHRdIC0gc2ZiT2Zmc2V0W3NmYk9mZnMrc2ZiXSwKKyAgICAgICAgICAgICAgICAgICAgbWRjdFNwZWN0cnVtICsgc2ZiT2Zmc2V0W3NmYk9mZnMrc2ZiXSwKKyAgICAgICAgICAgICAgICAgICAgcXVhbnRpemVkU3BlY3RydW0gKyBzZmJPZmZzZXRbc2ZiT2ZmcytzZmJdKTsKKyAgICB9CisgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpjYWxjU2ZiRGlzdCAKKyogZGVzY3JpcHRpb246IHF1YW50aXplcyBhbmQgcmVxdWFudGl6ZXMgbGluZXMgdG8gY2FsY3VsYXRlIGRpc3RvcnRpb24KKyogaW5wdXQ6ICBudW1iZXIgb2YgbGluZXMgdG8gYmUgcXVhbnRpemVkLCAuLi4KKyogb3V0cHV0OiBkaXN0b3J0aW9uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQzMiBjYWxjU2ZiRGlzdChjb25zdCBXb3JkMzIgKnNwZWMsCisgICAgICAgICAgICAgICAgICAgV29yZDE2ICBzZmJXaWR0aCwKKyAgICAgICAgICAgICAgICAgICBXb3JkMTYgIGdhaW4pCit7CisgIFdvcmQzMiBsaW5lOworICBXb3JkMzIgZGlzdDsKKyAgV29yZDMyIG0gPSBnYWluJjM7CisgIFdvcmQzMiBnID0gKGdhaW4gPj4gMikgKyA0Ow0KKyAgV29yZDMyIGcyID0gKGcgPDwgMSkgKyAxOw0KKyAgV29yZDE2ICpwcXVhdCwgKnJlcHF1YXQ7DQorICAgIC8qIGdhaW4mMyAqLworDQorICBwcXVhdCA9IHF1YW50Qm9yZGVyc1ttXTsNCisgIHJlcHF1YXQgPSBxdWFudFJlY29uW21dOworCQ0KKyAgZGlzdCA9IDA7ICANCisgIGcgKz0gMTY7DQorICBpZihnMiA8IDAgJiYgZyA+PSAwKQ0KKyAgewkgIAorCSAgZzIgPSAtZzI7DQorCSAgZm9yKGxpbmU9MDsgbGluZTxzZmJXaWR0aDsgbGluZSsrKSB7CQkgIAorCQkgIGlmIChzcGVjW2xpbmVdKSB7CQkJICAKKwkJCSAgV29yZDMyIGRpZmY7CisJCQkgIFdvcmQzMiBkaXN0U2luZ2xlOworCQkJICBXb3JkMzIgc2E7CisJCQkgIFdvcmQzMiBzYVNoZnQ7CisJCQkgIHNhID0gTF9hYnMoc3BlY1tsaW5lXSk7CisJCQkgIC8vc2FTaGZ0ID0gcm91bmQxNihMX3NocihzYSwgZykpOworCQkJICAvL3NhU2hmdCA9IExfc2hyKHNhLCAxNitnKTsNCisJCQkgIHNhU2hmdCA9IHNhID4+IGc7DQorCisJCQkgIGlmIChzYVNoZnQgPCBwcXVhdFswXSkgew0KKwkJCQkgIGRpc3RTaW5nbGUgPSAoc2FTaGZ0ICogc2FTaGZ0KSA+PiBnMjsNCisJCQkgIH0NCisJCQkgIGVsc2Ugew0KKwkJCQkgIA0KKwkJCQkgIGlmIChzYVNoZnQgPCBwcXVhdFsxXSkgew0KKwkJCQkJICBkaWZmID0gc2FTaGZ0IC0gcmVwcXVhdFswXTsNCisJCQkJCSAgZGlzdFNpbmdsZSA9IChkaWZmICogZGlmZikgPj4gZzI7DQorCQkJCSAgfQ0KKwkJCQkgIGVsc2Ugew0KKwkJCQkJICANCisJCQkJCSAgaWYgKHNhU2hmdCA8IHBxdWF0WzJdKSB7DQorCQkJCQkJICBkaWZmID0gc2FTaGZ0IC0gcmVwcXVhdFsxXTsNCisJCQkJCQkgIGRpc3RTaW5nbGUgPSAoZGlmZiAqIGRpZmYpID4+IGcyOw0KKwkJCQkJICB9DQorCQkJCQkgIGVsc2Ugew0KKwkJCQkJCSAgDQorCQkJCQkJICBpZiAoc2FTaGZ0IDwgcHF1YXRbM10pIHsNCisJCQkJCQkJICBkaWZmID0gc2FTaGZ0IC0gcmVwcXVhdFsyXTsNCisJCQkJCQkJICBkaXN0U2luZ2xlID0gKGRpZmYgKiBkaWZmKSA+PiBnMjsNCisJCQkJCQkgIH0NCisJCQkJCQkgIGVsc2Ugew0KKwkJCQkJCQkgIFdvcmQxNiBxdWEgPSBxdWFudGl6ZVNpbmdsZUxpbmUoZ2Fpbiwgc2EpOw0KKwkJCQkJCQkgIFdvcmQzMiBpcXZhbCwgZGlmZjMyOw0KKwkJCQkJCQkgIC8qIG5vdyB0aGF0IHdlIGhhdmUgcXVhbnRpemVkIHgsIHJlLXF1YW50aXplIGl0LiAqLw0KKwkJCQkJCQkgIGlxdWFudGl6ZUxpbmVzKGdhaW4sIDEsICZxdWEsICZpcXZhbCk7DQorCQkJCQkJCSAgZGlmZjMyID0gc2EgLSBpcXZhbDsNCisJCQkJCQkJICBkaXN0U2luZ2xlID0gZml4bXVsKGRpZmYzMiwgZGlmZjMyKTsNCisJCQkJCQkgIH0NCisJCQkJCSAgfQ0KKwkJCQkgIH0NCisJCQkgIH0NCisJCQkgIA0KKwkJCSAgZGlzdCA9IExfYWRkKGRpc3QsIGRpc3RTaW5nbGUpOw0KKwkJICB9CisJICB9DQorICB9DQorICBlbHNlDQorICB7DQorCSAgZm9yKGxpbmU9MDsgbGluZTxzZmJXaWR0aDsgbGluZSsrKSB7CQkgIA0KKwkJICBpZiAoc3BlY1tsaW5lXSkgewkJCSAgDQorCQkJICBXb3JkMzIgZGlmZjsNCisJCQkgIFdvcmQzMiBkaXN0U2luZ2xlOw0KKwkJCSAgV29yZDMyIHNhOw0KKwkJCSAgV29yZDMyIHNhU2hmdDsNCisJCQkgIHNhID0gTF9hYnMoc3BlY1tsaW5lXSk7DQorCQkJICAvL3NhU2hmdCA9IHJvdW5kMTYoTF9zaHIoc2EsIGcpKTsNCisJCQkgIHNhU2hmdCA9IExfc2hyKHNhLCBnKTsNCisNCisJCQkgIGlmIChzYVNoZnQgPCBwcXVhdFswXSkgew0KKwkJCQkgIGRpc3RTaW5nbGUgPSBMX3NobCgoc2FTaGZ0ICogc2FTaGZ0KSwgZzIpOw0KKwkJCSAgfQ0KKwkJCSAgZWxzZSB7DQorCQkJCSAgDQorCQkJCSAgaWYgKHNhU2hmdCA8IHBxdWF0WzFdKSB7DQorCQkJCQkgIGRpZmYgPSBzYVNoZnQgLSByZXBxdWF0WzBdOw0KKwkJCQkJICBkaXN0U2luZ2xlID0gTF9zaGwoKGRpZmYgKiBkaWZmKSwgZzIpOw0KKwkJCQkgIH0NCisJCQkJICBlbHNlIHsNCisJCQkJCSAgDQorCQkJCQkgIGlmIChzYVNoZnQgPCBwcXVhdFsyXSkgew0KKwkJCQkJCSAgZGlmZiA9IHNhU2hmdCAtIHJlcHF1YXRbMV07DQorCQkJCQkJICBkaXN0U2luZ2xlID0gTF9zaGwoKGRpZmYgKiBkaWZmKSwgZzIpOw0KKwkJCQkJICB9DQorCQkJCQkgIGVsc2Ugew0KKwkJCQkJCSAgDQorCQkJCQkJICBpZiAoc2FTaGZ0IDwgcHF1YXRbM10pIHsNCisJCQkJCQkJICBkaWZmID0gc2FTaGZ0IC0gcmVwcXVhdFsyXTsNCisJCQkJCQkJICBkaXN0U2luZ2xlID0gTF9zaGwoKGRpZmYgKiBkaWZmKSwgZzIpOw0KKwkJCQkJCSAgfQ0KKwkJCQkJCSAgZWxzZSB7DQorCQkJCQkJCSAgV29yZDE2IHF1YSA9IHF1YW50aXplU2luZ2xlTGluZShnYWluLCBzYSk7DQorCQkJCQkJCSAgV29yZDMyIGlxdmFsLCBkaWZmMzI7DQorCQkJCQkJCSAgLyogbm93IHRoYXQgd2UgaGF2ZSBxdWFudGl6ZWQgeCwgcmUtcXVhbnRpemUgaXQuICovDQorCQkJCQkJCSAgaXF1YW50aXplTGluZXMoZ2FpbiwgMSwgJnF1YSwgJmlxdmFsKTsNCisJCQkJCQkJICBkaWZmMzIgPSBzYSAtIGlxdmFsOw0KKwkJCQkJCQkgIGRpc3RTaW5nbGUgPSBmaXhtdWwoZGlmZjMyLCBkaWZmMzIpOw0KKwkJCQkJCSAgfQ0KKwkJCQkJICB9DQorCQkJCSAgfQ0KKwkJCSAgfQ0KKwkJCSAgZGlzdCA9IExfYWRkKGRpc3QsIGRpc3RTaW5nbGUpOw0KKwkJICB9DQorCSAgfQkgIA0KKyAgfQorCisgIHJldHVybiBkaXN0OworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvc2ZfZXN0aW0uYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3NmX2VzdGltLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM0YjM2NQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3NmX2VzdGltLmMKQEAgLTAsMCArMSw4ODIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXNmX2VzdGltLmMNCisNCisJQ29udGVudDoJU2NhbGUgZmFjdG9yIGVzdGltYXRpb24gZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiCisjaW5jbHVkZSAic2ZfZXN0aW0uaCIKKyNpbmNsdWRlICJxdWFudGl6ZS5oIgorI2luY2x1ZGUgImJpdF9jbnQuaCIKKyNpbmNsdWRlICJhYWNfcm9tLmgiCisKK3N0YXRpYyBjb25zdCBXb3JkMTYgTUFYX1NDRl9ERUxUQSA9IDYwOworCisvKiEKK2NvbnN0YW50cyByZWZlcmVuY2UgaW4gY29tbWVudHMgCisKKyBDMCA9IDYuNzVmOworIEMxID0gLTY5LjMzMjk1ZjsgICAtMTYvMypsb2coTUFYX1FVQU5UKzAuNS1sb2dDb24pL2xvZygyKSAKKyBDMiA9IDQuMGY7CisgQzMgPSAyLjY2NjY2NjY2ZjsKKyAKKyAgUEVfQzEgPSAzLjBmOyAgICAgICAgbG9nKDguMCkvbG9nKDIpIAorICBQRV9DMiA9IDEuMzIxOTI4MWY7ICBsb2coMi41KS9sb2coMikgCisgIFBFX0MzID0gMC41NTkzNTczZjsgIDEtQzIvQzEgCisgIAorKi8KKworI2RlZmluZSBGRl9TUVJUX0JJVFMgICAgICAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgRkZfU1FSVF9UQUJMRV9TSVpFICAgICAgICAgICAgICAoMTw8RkZfU1FSVF9CSVRTIC0gMTw8KEZGX1NRUlRfQklUUy0yKSkKKyNkZWZpbmUgQ09FRjA4XzMxCQkweDY2NjY2NjY2CQkvKiAwLjgqKDEgPDwgMzEpICovDQorI2RlZmluZSBQRV9DMV84CQkJMjQJCQkJLyogUEVfQzEqOCAqLw0KKyNkZWZpbmUgUEVfQzJfMTYJCTIxCQkJCS8qIFBFX0MyKjgvUEVfQzMgKi8NCisjZGVmaW5lIFBFX1NDQUxFCQkweDA1OWEJCQkvKiAwLjcgKiAoMSA8PCAoMTUgLSAxIC0gMykpKi8NCisNCisjZGVmaW5lIFNDQUxFX0VTVElNQVRFX0NPRUYJMHg1NTU1CQkvKiAoOC44NTg1Lyg0KmxvZzIoMTApKSkgKiAoMSA8PCAxNSkqLw0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBmb3JtZmFjX3NxcnQKKyogZGVzY3JpcHRpb246ICBjYWxjdWxhdGVzIHNxcnQoeCkvMjU2IAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK19faW5saW5lIFdvcmQzMiBmb3JtZmFjX3NxcnQoV29yZDMyIHgpCit7CisJV29yZDMyIHk7CisJV29yZDMyIHByZXNoaWZ0LCBwb3N0c2hpZnQ7CisJCisJCisJaWYgKHg9PTApIHJldHVybiAwOworCXByZXNoaWZ0ICA9IG5vcm1fbCh4KSAtIChJTlRfQklUUy0xLUZGX1NRUlRfQklUUyk7CisJcG9zdHNoaWZ0ID0gcHJlc2hpZnQgPj4gMTsKKwlwcmVzaGlmdCAgPSBwb3N0c2hpZnQgPDwgMTsKKwlwb3N0c2hpZnQgPSBwb3N0c2hpZnQgKyA4OwkgIC8qIHNxcnQvMjU2ICovCisJaWYocHJlc2hpZnQgPj0gMCkNCisJCXkgPSB4IDw8IHByZXNoaWZ0OyAgICAgICAgLyogbm93IDEvNCA8PSB5IDwgMSAqLw0KKwllbHNlDQorCQl5ID0geCA+PiAoLXByZXNoaWZ0KTsNCisJeSA9IGZvcm1mYWNfc3FydHRhYmxlW3ktMzJdOw0KKwkNCisJaWYocG9zdHNoaWZ0ID49IDApDQorCQl5ID0geSA+PiBwb3N0c2hpZnQ7DQorCWVsc2UNCisJCXkgPSB5IDw8ICgtcG9zdHNoaWZ0KTsNCisJDQorCXJldHVybiB5OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQ2FsY0Zvcm1GYWN0b3JDaGFubmVsCisqIGRlc2NyaXB0aW9uOiAgY2FsY3VsYXRlIHRoZSBmb3JtIGZhY3RvciBvbmUgY2hhbm5lbAorKgkJCQlmZmFjKG4pID0gc3FydChhYnMoWChrKSkgKyBzcXJ0KGFicyhYKGsrMSkpICsgLi4uLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkCitDYWxjRm9ybUZhY3RvckNoYW5uZWwoV29yZDE2ICpsb2dTZmJGb3JtRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiTlJlbGV2YW50TGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpsb2dTZmJFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuKQoreworCVdvcmQzMiBzZmJ3LCBzZmJ3MTsNCisJV29yZDMyIGksIGo7CisJV29yZDMyIHNmYk9mZnMsIHNmYiwgc2hpZnQ7CisJDQorCXNmYncgPSBzZmJ3MSA9IDA7DQorCWZvciAoc2ZiT2Zmcz0wOyBzZmJPZmZzPHBzeU91dENoYW4tPnNmYkNudDsgc2ZiT2Zmcys9cHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApeworCQlmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisJCQlpID0gc2ZiT2ZmcytzZmI7ICAgICAgCisJCQkKKwkJCWlmIChwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbaV0gPiBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGRbaV0pIHsKKwkJCQlXb3JkMzIgYWNjdSwgYXZnRm9ybUZhY3RvcixpU2ZiV2lkdGg7DQorCQkJCVdvcmQzMiAqbWRjdFNwZWM7CisJCQkJc2ZidyA9IHBzeU91dENoYW4tPnNmYk9mZnNldHNbaSsxXSAtIHBzeU91dENoYW4tPnNmYk9mZnNldHNbaV07DQorCQkJCWlTZmJXaWR0aCA9IGludlNCRlsoc2ZidyA+PiAyKSAtIDFdOw0KKwkJCQltZGN0U3BlYyA9IHBzeU91dENoYW4tPm1kY3RTcGVjdHJ1bSArIHBzeU91dENoYW4tPnNmYk9mZnNldHNbaV07CisJCQkJYWNjdSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkvKiBjYWxjIHN1bSBvZiBzcXJ0KHNwZWMpICovCisJCQkJZm9yIChqPXNmYnc7IGo7IGotLSkgew0KKwkJCQkJYWNjdSArPSBmb3JtZmFjX3NxcnQoTF9hYnMoKm1kY3RTcGVjKSk7IG1kY3RTcGVjKys7DQorCQkJCX0KKwkJCQlsb2dTZmJGb3JtRmFjdG9yW2ldID0gaUxvZzQoYWNjdSk7CisJCQkJbG9nU2ZiRW5lcmd5W2ldID0gaUxvZzQocHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W2ldKTsKKwkJCQlhdmdGb3JtRmFjdG9yID0gZml4bXVsKHJzcXJ0KHBzeU91dENoYW4tPnNmYkVuZXJneVtpXSxJTlRfQklUUyksIGlTZmJXaWR0aCk7CisJCQkJYXZnRm9ybUZhY3RvciA9IHJzcXJ0KChXb3JkMzIpYXZnRm9ybUZhY3RvcixJTlRfQklUUykgPj4gMTA7CisJCQkJLyogcmVzdWx0IGlzIG11bHRpcGxpZWQgYnkgNCAqLworCQkJCWlmKGF2Z0Zvcm1GYWN0b3IpCisJCQkJCXNmYk5SZWxldmFudExpbmVzW2ldID0gYWNjdSAvIGF2Z0Zvcm1GYWN0b3I7CisJCQkJZWxzZQorCQkJCQlzZmJOUmVsZXZhbnRMaW5lc1tpXSA9IDB4N2ZmZjsKKwkJCX0KKwkJCWVsc2UgeworCQkJCS8qIHNldCBudW1iZXIgb2YgbGluZXMgdG8gemVybyAqLworCQkJCXNmYk5SZWxldmFudExpbmVzW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQl9CisJCX0KKwl9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogaW1wcm92ZVNjZgorKiBkZXNjcmlwdGlvbjogIGZpbmQgYmV0dGVyIHNjYWxlZmFjdG9yIHdpdGggYW5hbHlzaXMgYnkgc3ludGhlc2lzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBpbXByb3ZlU2NmKFdvcmQzMiAqc3BlYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBzZmJXaWR0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICB0aHJlc2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgc2NmLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgbWluU2NmLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqZGlzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICptaW5TY2ZDYWxjdWxhdGVkKQoreworCVdvcmQzMiBjbnQ7CisJV29yZDMyIHNmYkRpc3Q7CisJV29yZDMyIHNjZkJlc3Q7CisJV29yZDMyIHRocmVzaDEyNSA9IExfYWRkKHRocmVzaCwgKHRocmVzaCA+PiAyKSk7CisJCisJc2NmQmVzdCA9IHNjZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCisJLyogY2FsYyByZWFsIGRpc3RvcnRpb24gKi8KKwlzZmJEaXN0ID0gY2FsY1NmYkRpc3Qoc3BlYywgc2ZiV2lkdGgsIHNjZik7CisJKm1pblNjZkNhbGN1bGF0ZWQgPSBzY2Y7ICAgICANCisJaWYoIXNmYkRpc3QpDQorCSAgcmV0dXJuIHNjZkJlc3Q7CisJCisJaWYgKHNmYkRpc3QgPiB0aHJlc2gxMjUpIHsKKwkJV29yZDMyIHNjZkVzdGltYXRlZDsKKwkJV29yZDMyIHNmYkRpc3RCZXN0OworCQlzY2ZFc3RpbWF0ZWQgPSBzY2Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJc2ZiRGlzdEJlc3QgPSBzZmJEaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQorCQljbnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJd2hpbGUgKHNmYkRpc3QgPiB0aHJlc2gxMjUgJiYgKGNudCA8IDMpKSB7CisJCQkKKwkJCXNjZiA9IHNjZiArIDE7CisJCQlzZmJEaXN0ID0gY2FsY1NmYkRpc3Qoc3BlYywgc2ZiV2lkdGgsIHNjZik7CisJCQkKKwkJCWlmIChzZmJEaXN0IDwgc2ZiRGlzdEJlc3QpIHsKKwkJCQlzY2ZCZXN0ID0gc2NmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQlzZmJEaXN0QmVzdCA9IHNmYkRpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCX0KKwkJCWNudCA9IGNudCArIDE7CisJCX0KKwkJY250ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCXNjZiA9IHNjZkVzdGltYXRlZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQlzZmJEaXN0ID0gc2ZiRGlzdEJlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJd2hpbGUgKChzZmJEaXN0ID4gdGhyZXNoMTI1KSAmJiAoY250IDwgMSkgJiYgKHNjZiA+IG1pblNjZikpIHsKKwkJCQorCQkJc2NmID0gc2NmIC0gMTsKKwkJCXNmYkRpc3QgPSBjYWxjU2ZiRGlzdChzcGVjLCBzZmJXaWR0aCwgc2NmKTsKKwkJCQorCQkJaWYgKHNmYkRpc3QgPCBzZmJEaXN0QmVzdCkgeworCQkJCXNjZkJlc3QgPSBzY2Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCXNmYkRpc3RCZXN0ID0gc2ZiRGlzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJfQorCQkJKm1pblNjZkNhbGN1bGF0ZWQgPSBzY2Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQljbnQgPSBjbnQgKyAxOworCQl9DQorCQkqZGlzdCA9IHNmYkRpc3RCZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwl9CisJZWxzZSB7CisJCVdvcmQzMiBzZmJEaXN0QmVzdDsgCisJCVdvcmQzMiBzZmJEaXN0QWxsb3dlZDsKKwkJV29yZDMyIHRocmVzaDA4ID0gZml4bXVsKENPRUYwOF8zMSwgdGhyZXNoKTsKKwkJc2ZiRGlzdEJlc3QgPSBzZmJEaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQorCQlpZiAoc2ZiRGlzdCA8IHRocmVzaDA4KQorCQkJc2ZiRGlzdEFsbG93ZWQgPSBzZmJEaXN0OworCQllbHNlCisJCQlzZmJEaXN0QWxsb3dlZCA9IHRocmVzaDA4OworCQlmb3IgKGNudD0wOyBjbnQ8MzsgY250KyspIHsKKwkJCXNjZiA9IHNjZiArIDE7CisJCQlzZmJEaXN0ID0gY2FsY1NmYkRpc3Qoc3BlYywgc2ZiV2lkdGgsIHNjZik7CisJCQkKKwkJCWlmIChmaXhtdWwoQ09FRjA4XzMxLHNmYkRpc3QpIDwgc2ZiRGlzdEFsbG93ZWQpIHsKKwkJCQkqbWluU2NmQ2FsY3VsYXRlZCA9IHNjZkJlc3QgKyAxOworCQkJCXNjZkJlc3QgPSBzY2Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCXNmYkRpc3RCZXN0ID0gc2ZiRGlzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJfQorCQl9CisJCSpkaXN0ID0gc2ZiRGlzdEJlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCX0KKwkKKwkvKiByZXR1cm4gYmVzdCBzY2FsZWZhY3RvciAqLworCXJldHVybiBzY2ZCZXN0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50U2luZ2xlU2NmQml0cworKiBkZXNjcmlwdGlvbjogIGNvdW50IHNpbmdsZSBzY2YgYml0cyBpbiBodWZmdW0KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGNvdW50U2luZ2xlU2NmQml0cyhXb3JkMTYgc2NmLCBXb3JkMTYgc2NmTGVmdCwgV29yZDE2IHNjZlJpZ2h0KQoreworCVdvcmQxNiBzY2ZCaXRzOworCQorCXNjZkJpdHMgPSBiaXRDb3VudFNjYWxlZmFjdG9yRGVsdGEoc2NmTGVmdCAtIHNjZikgKworCQliaXRDb3VudFNjYWxlZmFjdG9yRGVsdGEoc2NmIC0gc2NmUmlnaHQpOworCQorCXJldHVybiBzY2ZCaXRzOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNhbGNTaW5nbGVTcGVjUGUKKyogZGVzY3JpcHRpb246ICBsZFJhdGlvID0gbG9nMihlbihuKSkgLSAwLDM3NSpzY2ZHYWluKG4pCisqCQkJCW5iaXRzID0gMC43Km5MaW5lcypsZFJhdGlvbiBmb3IgbGRSYXRpb24gPj0gYzEKKyoJCQkJbmJpdHMgPSAwLjcqbkxpbmVzKihjMiArIGMzKmxkUmF0aW8pIGZvciBsZFJhdGlvbiA8IGMxIAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgY2FsY1NpbmdsZVNwZWNQZShXb3JkMTYgc2NmLCBXb3JkMTYgc2ZiQ29uc3RQZVBhcnQsIFdvcmQxNiBuTGluZXMpCit7CisJV29yZDMyIHNwZWNQZTsKKwlXb3JkMzIgbGRSYXRpbzsKKwlXb3JkMzIgc2NmMzsKKwkKKwlsZFJhdGlvID0gc2ZiQ29uc3RQZVBhcnQgPDwgMzsgLyogIChzZmJDb25zdFBlUGFydCAtMC4zNzUqc2NmKSo4ICovCisJc2NmMyA9IHNjZiArIHNjZiArIHNjZjsKKwlsZFJhdGlvID0gbGRSYXRpbyAtIHNjZjM7CisgICAgCisJaWYgKGxkUmF0aW8gPCBQRV9DMV84KSB7CisJCS8qIDIxIDogMio4KlBFX0MyLCAyKlBFX0MzIH4gMSovIAorCQlsZFJhdGlvID0gKGxkUmF0aW8gKyBQRV9DMl8xNikgPj4gMTsKKwl9CisJc3BlY1BlID0gbkxpbmVzICogbGRSYXRpbzsKKwlzcGVjUGUgPSAoc3BlY1BlICogUEVfU0NBTEUpID4+IDE0OworCQorCXJldHVybiBzYXR1cmF0ZShzcGVjUGUpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnRTY2ZCaXRzRGlmZgorKiBkZXNjcmlwdGlvbjogIGNvdW50IGRpZmZlcmVudCBzY2YgYml0cyB1c2VkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBjb3VudFNjZkJpdHNEaWZmKFdvcmQxNiAqc2NmT2xkLCBXb3JkMTYgKnNjZk5ldywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYkNudCwgV29yZDE2IHN0YXJ0U2ZiLCBXb3JkMTYgc3RvcFNmYikKK3sKKwlXb3JkMzIgc2NmQml0c0RpZmY7CisJV29yZDMyIHNmYiwgc2ZiTGFzdDsKKwlXb3JkMzIgc2ZiUHJldiwgc2ZiTmV4dDsKKwkKKwlzY2ZCaXRzRGlmZiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJc2ZiID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQorCS8qIHNlYXJjaCBmb3IgZmlyc3QgcmVsZXZhbnQgc2ZiICovCisJc2ZiTGFzdCA9IHN0YXJ0U2ZiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCXdoaWxlIChzZmJMYXN0IDwgc3RvcFNmYiAmJiBzY2ZPbGRbc2ZiTGFzdF0gPT0gVk9BQUNfU0hSVF9NSU4pIHsKKwkJCisJCXNmYkxhc3QgPSBzZmJMYXN0ICsgMTsKKwl9CisJLyogc2VhcmNoIGZvciBwcmV2aW91cyByZWxldmFudCBzZmIgYW5kIGNvdW50IGRpZmYgKi8KKwlzZmJQcmV2ID0gc3RhcnRTZmIgLSAxOworCXdoaWxlICgoc2ZiUHJldj49MCkgJiYgc2NmT2xkW3NmYlByZXZdID09IFZPQUFDX1NIUlRfTUlOKSB7CisJCQorCQlzZmJQcmV2ID0gc2ZiUHJldiAtIDE7CisJfQorCQorCWlmIChzZmJQcmV2Pj0wKSB7CisJCXNjZkJpdHNEaWZmICs9IGJpdENvdW50U2NhbGVmYWN0b3JEZWx0YShzY2ZOZXdbc2ZiUHJldl0gLSBzY2ZOZXdbc2ZiTGFzdF0pIC0KKwkJCWJpdENvdW50U2NhbGVmYWN0b3JEZWx0YShzY2ZPbGRbc2ZiUHJldl0gLSBzY2ZPbGRbc2ZiTGFzdF0pOworCX0KKwkvKiBub3cgbG9vcCB0aHJvdWdoIGFsbCBzZmJzIGFuZCBjb3VudCBkaWZmcyBvZiByZWxldmFudCBzZmJzICovCisJZm9yIChzZmI9c2ZiTGFzdCsxOyBzZmI8c3RvcFNmYjsgc2ZiKyspIHsKKwkJCisJCWlmIChzY2ZPbGRbc2ZiXSAhPSBWT0FBQ19TSFJUX01JTikgeworCQkJc2NmQml0c0RpZmYgKz0gYml0Q291bnRTY2FsZWZhY3RvckRlbHRhKHNjZk5ld1tzZmJMYXN0XSAtIHNjZk5ld1tzZmJdKSAtCisJCQkJYml0Q291bnRTY2FsZWZhY3RvckRlbHRhKHNjZk9sZFtzZmJMYXN0XSAtIHNjZk9sZFtzZmJdKTsKKwkJCXNmYkxhc3QgPSBzZmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQl9CisJfQorCS8qIHNlYXJjaCBmb3IgbmV4dCByZWxldmFudCBzZmIgYW5kIGNvdW50IGRpZmYgKi8KKwlzZmJOZXh0ID0gc3RvcFNmYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJd2hpbGUgKHNmYk5leHQgPCBzZmJDbnQgJiYgc2NmT2xkW3NmYk5leHRdID09IFZPQUFDX1NIUlRfTUlOKSB7CisJCQorCQlzZmJOZXh0ID0gc2ZiTmV4dCArIDE7CisJfQorCQorCWlmIChzZmJOZXh0IDwgc2ZiQ250KQorCQlzY2ZCaXRzRGlmZiArPSBiaXRDb3VudFNjYWxlZmFjdG9yRGVsdGEoc2NmTmV3W3NmYkxhc3RdIC0gc2NmTmV3W3NmYk5leHRdKSAtCisJCWJpdENvdW50U2NhbGVmYWN0b3JEZWx0YShzY2ZPbGRbc2ZiTGFzdF0gLSBzY2ZPbGRbc2ZiTmV4dF0pOworCQorCXJldHVybiBzYXR1cmF0ZShzY2ZCaXRzRGlmZik7Cit9CisKK3N0YXRpYyBXb3JkMTYgY2FsY1NwZWNQZURpZmYoV29yZDE2ICpzY2ZPbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2NmTmV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNmYkNvbnN0UGVQYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKmxvZ1NmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpsb2dTZmJGb3JtRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNmYk5SZWxldmFudExpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc3RhcnRTZmIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc3RvcFNmYikKK3sKKwlXb3JkMzIgc3BlY1BlRGlmZjsKKwlXb3JkMzIgc2ZiOworCQorCXNwZWNQZURpZmYgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkKKwkvKiBsb29wIHRocm91Z2ggYWxsIHNmYnMgYW5kIGNvdW50IHBlIGRpZmZlcmVuY2UgKi8KKwlmb3IgKHNmYj1zdGFydFNmYjsgc2ZiPHN0b3BTZmI7IHNmYisrKSB7CisJCQorCQkKKwkJaWYgKHNjZk9sZFtzZmJdICE9IFZPQUFDX1NIUlRfTUlOKSB7CisJCQlXb3JkMzIgbGRSYXRpb09sZCwgbGRSYXRpb05ldzsKKwkJCVdvcmQzMiBzY2YzOworCQkJCisJCQkKKwkJCWlmIChzZmJDb25zdFBlUGFydFtzZmJdID09IE1JTl8xNikgeworCQkJCXNmYkNvbnN0UGVQYXJ0W3NmYl0gPSAoKGxvZ1NmYkVuZXJneVtzZmJdIC0KKwkJCQkJbG9nU2ZiRm9ybUZhY3RvcltzZmJdKSArIDExLTgqNCszKSA+PiAyOworCQkJfQorCQkJCisJCQkKKwkJCWxkUmF0aW9PbGQgPSBzZmJDb25zdFBlUGFydFtzZmJdIDw8IDM7CisJCQlzY2YzID0gc2NmT2xkW3NmYl0gKyBzY2ZPbGRbc2ZiXSArIHNjZk9sZFtzZmJdOworCQkJbGRSYXRpb09sZCA9IGxkUmF0aW9PbGQgLSBzY2YzOworCQkJbGRSYXRpb05ldyA9IHNmYkNvbnN0UGVQYXJ0W3NmYl0gPDwgMzsKKwkJCXNjZjMgPSBzY2ZOZXdbc2ZiXSArIHNjZk5ld1tzZmJdICsgc2NmTmV3W3NmYl07CisJCQlsZFJhdGlvTmV3ID0gbGRSYXRpb05ldyAtIHNjZjM7CisJCQkKKwkJCWlmIChsZFJhdGlvT2xkIDwgUEVfQzFfOCkgeworCQkJCS8qIDIxIDogMio4KlBFX0MyLCAyKlBFX0MzIH4gMSovCisJCQkJbGRSYXRpb09sZCA9IChsZFJhdGlvT2xkICsgUEVfQzJfMTYpID4+IDE7CisJCQl9CisJCQkKKwkJCWlmIChsZFJhdGlvTmV3IDwgUEVfQzFfOCkgeworCQkJCS8qIDIxIDogMio4KlBFX0MyLCAyKlBFX0MzIH4gMSovCisJCQkJbGRSYXRpb05ldyA9IChsZFJhdGlvTmV3ICsgUEVfQzJfMTYpID4+IDE7CisJCQl9CisJCQkKKwkJCXNwZWNQZURpZmYgKz0gIHNmYk5SZWxldmFudExpbmVzW3NmYl0gKiAobGRSYXRpb05ldyAtIGxkUmF0aW9PbGQpOworCQl9CisJfQorCQorCXNwZWNQZURpZmYgPSAoc3BlY1BlRGlmZiAqIFBFX1NDQUxFKSA+PiAxNDsKKwkKKwlyZXR1cm4gc2F0dXJhdGUoc3BlY1BlRGlmZik7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBhc3NpbWlsYXRlU2luZ2xlU2NmCisqIGRlc2NyaXB0aW9uOiAgc2VhcmNoZWQgZm9yIHNpbmdsZSBzY2FsZWZhY3RvciBiYW5kcywgd2hlcmUgdGhlIG51bWJlciBvZiBiaXRzIGdhaW5lZAorKgkJCQlieSB1c2luZyBhIHNtYWxsZXIgc2NmZ2FpbihuKSBpcyBncmVhdGVyIHRoYW4gdGhlIGVzdGltYXRlZCBpbmNyZWFzZWQKKyoJCQkJYml0IGRlbWFuZAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGFzc2ltaWxhdGVTaW5nbGVTY2YoUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNjZiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqbWluU2NmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnNmYkRpc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNmYkNvbnN0UGVQYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKmxvZ1NmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpsb2dTZmJGb3JtRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnNmYk5SZWxldmFudExpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKm1pblNjZkNhbGN1bGF0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWcgICAgcmVzdGFydE9uU3VjY2VzcykKK3sKKwlXb3JkMzIgc2ZiTGFzdCwgc2ZiQWN0LCBzZmJOZXh0LCBzY2ZBY3QsIHNjZk1pbjsKKwlXb3JkMTYgKnNjZkxhc3QsICpzY2ZOZXh0OworCVdvcmQzMiBzZmJQZU9sZCwgc2ZiUGVOZXc7CisJV29yZDMyIHNmYkRpc3ROZXc7CisJV29yZDMyIGo7CisJRmxhZyAgIHN1Y2Nlc3M7CisJV29yZDE2IGRlbHRhUGUsIGRlbHRhUGVOZXcsIGRlbHRhUGVUbXA7CisJV29yZDE2ICpwcmV2U2NmTGFzdCA9IHBzeU91dENoYW4tPnByZXZTY2ZMYXN0OworCVdvcmQxNiAqcHJldlNjZk5leHQgPSBwc3lPdXRDaGFuLT5wcmV2U2NmTmV4dDsKKwlXb3JkMTYgKmRlbHRhUGVMYXN0ID0gcHN5T3V0Q2hhbi0+ZGVsdGFQZUxhc3Q7CisJRmxhZyAgIHVwZGF0ZU1pblNjZkNhbGN1bGF0ZWQ7CisJCisJc3VjY2VzcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJZGVsdGFQZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCisJZm9yKGo9MDtqPHBzeU91dENoYW4tPnNmYkNudDtqKyspeworCQlwcmV2U2NmTGFzdFtqXSA9IE1BWF8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCXByZXZTY2ZOZXh0W2pdID0gTUFYXzE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJZGVsdGFQZUxhc3Rbal0gPSBNQVhfMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCX0NCisJCisJc2ZiTGFzdCA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJc2ZiQWN0ID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJc2ZiTmV4dCA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJc2NmTGFzdCA9IDA7CisJc2NmTmV4dCA9IDA7CisJc2NmTWluID0gTUFYXzE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJZG8geworCQkvKiBzZWFyY2ggZm9yIG5ldyByZWxldmFudCBzZmIgKi8KKwkJc2ZiTmV4dCA9IHNmYk5leHQgKyAxOworCQl3aGlsZSAoc2ZiTmV4dCA8IHBzeU91dENoYW4tPnNmYkNudCAmJiBzY2Zbc2ZiTmV4dF0gPT0gTUlOXzE2KSB7CisJCQkKKwkJCXNmYk5leHQgPSBzZmJOZXh0ICsgMTsKKwkJfQorCQkKKwkJaWYgKChzZmJMYXN0Pj0wKSAmJiAoc2ZiQWN0Pj0wKSAmJiBzZmJOZXh0IDwgcHN5T3V0Q2hhbi0+c2ZiQ250KSB7CisJCQkvKiByZWxldmFudCBzY2ZzIHRvIHRoZSBsZWZ0IGFuZCB0byB0aGUgcmlnaHQgKi8KKwkJCXNjZkFjdCAgPSBzY2Zbc2ZiQWN0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQlzY2ZMYXN0ID0gc2NmICsgc2ZiTGFzdDsKKwkJCXNjZk5leHQgPSBzY2YgKyBzZmJOZXh0OworCQkJc2NmTWluICA9IG1pbigqc2NmTGFzdCwgKnNjZk5leHQpOworCQl9CisJCWVsc2UgeworCQkJCisJCQlpZiAoc2ZiTGFzdCA9PSAtMSAmJiAoc2ZiQWN0Pj0wKSAmJiBzZmJOZXh0IDwgcHN5T3V0Q2hhbi0+c2ZiQ250KSB7CisJCQkJLyogZmlyc3QgcmVsZXZhbnQgc2NmICovCisJCQkJc2NmQWN0ICA9IHNjZltzZmJBY3RdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJc2NmTGFzdCA9ICZzY2ZBY3Q7CisJCQkJc2NmTmV4dCA9IHNjZiArIHNmYk5leHQ7CisJCQkJc2NmTWluICA9ICpzY2ZOZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQl9CisJCQllbHNlIHsKKwkJCQkKKwkJCQlpZiAoKHNmYkxhc3Q+PTApICYmIChzZmJBY3Q+PTApICYmIHNmYk5leHQgPT0gcHN5T3V0Q2hhbi0+c2ZiQ250KSB7CisJCQkJCS8qIGxhc3QgcmVsZXZhbnQgc2NmICovCisJCQkJCXNjZkFjdCAgPSBzY2Zbc2ZiQWN0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkJc2NmTGFzdCA9IHNjZiArIHNmYkxhc3Q7CisJCQkJCXNjZk5leHQgPSAmc2NmQWN0OworCQkJCQlzY2ZNaW4gID0gKnNjZkxhc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJfQorCQkJfQorCQl9CisJCQorCQlpZiAoc2ZiQWN0Pj0wKQorCQkJc2NmTWluID0gbWF4KHNjZk1pbiwgbWluU2NmW3NmYkFjdF0pOworCQkKKwkJaWYgKChzZmJBY3QgPj0gMCkgJiYgCisJCQkoc2ZiTGFzdD49MCB8fCBzZmJOZXh0IDwgcHN5T3V0Q2hhbi0+c2ZiQ250KSAmJiAKKwkJCXNjZkFjdCA+IHNjZk1pbiAmJiAKKwkJCSgqc2NmTGFzdCAhPSBwcmV2U2NmTGFzdFtzZmJBY3RdIHx8IAorCQkJKnNjZk5leHQgIT0gcHJldlNjZk5leHRbc2ZiQWN0XSB8fCAKKwkJCWRlbHRhUGUgPCBkZWx0YVBlTGFzdFtzZmJBY3RdKSkgeworCQkJc3VjY2VzcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQorCQkJLyogZXN0aW1hdGUgcmVxdWlyZWQgYml0cyBmb3IgYWN0dWFsIHNjZiAqLwkJCQorCQkJaWYgKHNmYkNvbnN0UGVQYXJ0W3NmYkFjdF0gPT0gTUlOXzE2KSB7CisJCQkJc2ZiQ29uc3RQZVBhcnRbc2ZiQWN0XSA9IGxvZ1NmYkVuZXJneVtzZmJBY3RdIC0KKwkJCQkJbG9nU2ZiRm9ybUZhY3RvcltzZmJBY3RdICsgMTEtOCo0OyAvKiA0KmxvZzIoNi43NSkgLSAzMiAqLworCQkJCQorCQkJCWlmIChzZmJDb25zdFBlUGFydFtzZmJBY3RdIDwgMCkKKwkJCQkJc2ZiQ29uc3RQZVBhcnRbc2ZiQWN0XSA9IHNmYkNvbnN0UGVQYXJ0W3NmYkFjdF0gKyAzOworCQkJCXNmYkNvbnN0UGVQYXJ0W3NmYkFjdF0gPSBzZmJDb25zdFBlUGFydFtzZmJBY3RdID4+IDI7CisJCQl9CisJCQkKKwkJCXNmYlBlT2xkID0gY2FsY1NpbmdsZVNwZWNQZShzY2ZBY3QsIHNmYkNvbnN0UGVQYXJ0W3NmYkFjdF0sIHNmYk5SZWxldmFudExpbmVzW3NmYkFjdF0pICsKKwkJCQljb3VudFNpbmdsZVNjZkJpdHMoc2NmQWN0LCAqc2NmTGFzdCwgKnNjZk5leHQpOworCQkJZGVsdGFQZU5ldyA9IGRlbHRhUGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCXVwZGF0ZU1pblNjZkNhbGN1bGF0ZWQgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQlkbyB7CisJCQkJc2NmQWN0ID0gc2NmQWN0IC0gMTsKKwkJCQkvKiBjaGVjayBvbmx5IGlmIHRoZSBzYW1lIGNoZWNrIHdhcyBub3QgZG9uZSBiZWZvcmUgKi8KKwkJCQkKKwkJCQlpZiAoc2NmQWN0IDwgbWluU2NmQ2FsY3VsYXRlZFtzZmJBY3RdKSB7CisJCQkJCXNmYlBlTmV3ID0gY2FsY1NpbmdsZVNwZWNQZShzY2ZBY3QsIHNmYkNvbnN0UGVQYXJ0W3NmYkFjdF0sIHNmYk5SZWxldmFudExpbmVzW3NmYkFjdF0pICsKKwkJCQkJCWNvdW50U2luZ2xlU2NmQml0cyhzY2ZBY3QsICpzY2ZMYXN0LCAqc2NmTmV4dCk7CisJCQkJCS8qIHVzZSBuZXcgc2NmIGlmIG5vIGluY3JlYXNlIGluIHBlIGFuZCAKKwkJCQkJcXVhbnRpemF0aW9uIGVycm9yIGlzIHNtYWxsZXIgKi8KKwkJCQkJZGVsdGFQZVRtcCA9IGRlbHRhUGUgKyBzZmJQZU5ldyAtIHNmYlBlT2xkOworCQkJCQkKKwkJCQkJaWYgKGRlbHRhUGVUbXAgPCAxMCkgeworCQkJCQkJc2ZiRGlzdE5ldyA9IGNhbGNTZmJEaXN0KHBzeU91dENoYW4tPm1kY3RTcGVjdHJ1bSsKKwkJCQkJCQlwc3lPdXRDaGFuLT5zZmJPZmZzZXRzW3NmYkFjdF0sCisJCQkJCQkJKHBzeU91dENoYW4tPnNmYk9mZnNldHNbc2ZiQWN0KzFdIC0gcHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tzZmJBY3RdKSwKKwkJCQkJCQlzY2ZBY3QpOworCQkJCQkJaWYgKHNmYkRpc3ROZXcgPCBzZmJEaXN0W3NmYkFjdF0pIHsKKwkJCQkJCQkvKiBzdWNjZXNzLCByZXBsYWNlIHNjZiBieSBuZXcgb25lICovCisJCQkJCQkJc2NmW3NmYkFjdF0gPSBzY2ZBY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCXNmYkRpc3Rbc2ZiQWN0XSA9IHNmYkRpc3ROZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkJCQlkZWx0YVBlTmV3ID0gZGVsdGFQZVRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQkJc3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJfQorCQkJCQkJLyogbWFyayBhcyBhbHJlYWR5IGNoZWNrZWQgKi8KKwkJCQkJCQorCQkJCQkJaWYgKHVwZGF0ZU1pblNjZkNhbGN1bGF0ZWQpIHsKKwkJCQkJCQltaW5TY2ZDYWxjdWxhdGVkW3NmYkFjdF0gPSBzY2ZBY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZSB7CisJCQkJCQl1cGRhdGVNaW5TY2ZDYWxjdWxhdGVkID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkJfQorCQkJCX0KKwkJCQkKKwkJCX0gd2hpbGUgKHNjZkFjdCA+IHNjZk1pbik7CisJCQlkZWx0YVBlID0gZGVsdGFQZU5ldzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCS8qIHNhdmUgcGFyYW1ldGVycyB0byBhdm9pZCBtdWx0aXBsZSBjb21wdXRhdGlvbnMgb2YgdGhlIHNhbWUgc2ZiICovCisJCQlwcmV2U2NmTGFzdFtzZmJBY3RdID0gKnNjZkxhc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCXByZXZTY2ZOZXh0W3NmYkFjdF0gPSAqc2NmTmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJZGVsdGFQZUxhc3Rbc2ZiQWN0XSA9IGRlbHRhUGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCX0KKwkJCisJCWlmIChzdWNjZXNzICYmIHJlc3RhcnRPblN1Y2Nlc3MpIHsKKwkJCS8qIHN0YXJ0IGFnYWluIGF0IGZpcnN0IHNmYiAqLworCQkJc2ZiTGFzdCA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQlzZmJBY3QgID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCXNmYk5leHQgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJc2NmTGFzdCA9IDA7CisJCQlzY2ZOZXh0ID0gMDsKKwkJCXNjZk1pbiAgPSBNQVhfMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJc3VjY2VzcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCX0KKwkJZWxzZSB7CisJCQkvKiBzaGlmdCBzZmJzIGZvciBuZXh0IGJhbmQgKi8KKwkJCXNmYkxhc3QgPSBzZmJBY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJc2ZiQWN0ICA9IHNmYk5leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCX0KKwkJCisgIH0gd2hpbGUgKHNmYk5leHQgPCBwc3lPdXRDaGFuLT5zZmJDbnQpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogYXNzaW1pbGF0ZU11bHRpcGxlU2NmCisqIGRlc2NyaXB0aW9uOiAgc2NhbGVmYWN0b3IgZGlmZmVyZW5jZSByZWR1Y3Rpb24KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBhc3NpbWlsYXRlTXVsdGlwbGVTY2YoUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2NmLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKm1pblNjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnNmYkRpc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiQ29uc3RQZVBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpsb2dTZmJFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpsb2dTZmJGb3JtRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiTlJlbGV2YW50TGluZXMpCit7CisJV29yZDMyIHNmYiwgc3RhcnRTZmIsIHN0b3BTZmIsIHNjZk1pbiwgc2NmTWF4LCBzY2ZBY3Q7CisJRmxhZyAgIHBvc3NpYmxlUmVnaW9uRm91bmQ7CisJV29yZDMyIGRlbHRhU2NmQml0czsKKwlXb3JkMzIgZGVsdGFTcGVjUGU7CisJV29yZDMyIGRlbHRhUGUsIGRlbHRhUGVOZXc7CisJV29yZDMyIHNmYkNudDsKKwlXb3JkMzIgKnNmYkRpc3ROZXcgPSBwc3lPdXRDaGFuLT5zZmJEaXN0TmV3OworCVdvcmQxNiAqc2NmVG1wID0gcHN5T3V0Q2hhbi0+cHJldlNjZkxhc3Q7CisKKwlkZWx0YVBlID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJc2ZiQ250ID0gcHN5T3V0Q2hhbi0+c2ZiQ250OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQorCS8qIGNhbGMgbWluIGFuZCBtYXggc2NhbGZhY3RvcnMgKi8KKwlzY2ZNaW4gPSBNQVhfMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJc2NmTWF4ID0gTUlOXzE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCWZvciAoc2ZiPTA7IHNmYjxzZmJDbnQ7IHNmYisrKSB7CisJCQorCQlpZiAoc2NmW3NmYl0gIT0gTUlOXzE2KSB7CisJCQlzY2ZNaW4gPSBtaW4oc2NmTWluLCBzY2Zbc2ZiXSk7CisJCQlzY2ZNYXggPSBtYXgoc2NmTWF4LCBzY2Zbc2ZiXSk7CisJCX0KKwl9CisJCisJaWYgKHNjZk1heCAhPSAgTUlOXzE2KSB7CisJCQorCQlzY2ZBY3QgPSBzY2ZNYXg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQorCQlkbyB7CisJCQlzY2ZBY3QgPSBzY2ZBY3QgLSAxOworCQkJZm9yIChzZmI9MDsgc2ZiPHNmYkNudDsgc2ZiKyspIHsKKwkJCQlzY2ZUbXBbc2ZiXSA9IHNjZltzZmJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQl9CisJCQlzdG9wU2ZiID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCWRvIHsKKwkJCQlzZmIgPSBzdG9wU2ZiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCisJCQkJd2hpbGUgKHNmYiA8IHNmYkNudCAmJiAoc2NmW3NmYl0gPT0gTUlOXzE2IHx8IHNjZltzZmJdIDw9IHNjZkFjdCkpIHsKKwkJCQkJc2ZiID0gc2ZiICsgMTsKKwkJCQl9CisJCQkJc3RhcnRTZmIgPSBzZmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCXNmYiA9IHNmYiArIDE7CisJCQkJCisJCQkJd2hpbGUgKHNmYiA8IHNmYkNudCAmJiAoc2NmW3NmYl0gPT0gTUlOXzE2IHx8IHNjZltzZmJdID4gc2NmQWN0KSkgeworCQkJCQlzZmIgPSBzZmIgKyAxOworCQkJCX0KKwkJCQlzdG9wU2ZiID0gc2ZiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCisJCQkJcG9zc2libGVSZWdpb25Gb3VuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQorCQkJCWlmIChzdGFydFNmYiA8IHNmYkNudCkgeworCQkJCQlwb3NzaWJsZVJlZ2lvbkZvdW5kID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQlmb3IgKHNmYj1zdGFydFNmYjsgc2ZiPHN0b3BTZmI7IHNmYisrKSB7CisJCQkJCQkKKwkJCQkJCWlmIChzY2Zbc2ZiXSE9TUlOXzE2KSB7CisJCQkJCQkJCisJCQkJCQkJaWYgKHNjZkFjdCA8IG1pblNjZltzZmJdKSB7CisJCQkJCQkJCXBvc3NpYmxlUmVnaW9uRm91bmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQkJCWJyZWFrOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQkKKwkJCQkKKwkJCQlpZiAocG9zc2libGVSZWdpb25Gb3VuZCkgeyAvKiByZWdpb24gZm91bmQgKi8KKwkJCQkJCisJCQkJCS8qIHJlcGxhY2Ugc2NmcyBpbiByZWdpb24gYnkgc2NmQWN0ICovCisJCQkJCWZvciAoc2ZiPXN0YXJ0U2ZiOyBzZmI8c3RvcFNmYjsgc2ZiKyspIHsKKwkJCQkJCQorCQkJCQkJaWYgKHNjZlRtcFtzZmJdIT1NSU5fMTYpCisJCQkJCQkJc2NmVG1wW3NmYl0gPSBzY2ZBY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQl9CisJCQkJCQorCQkJCQkvKiBlc3RpbWF0ZSBjaGFuZ2UgaW4gYml0IGRlbWFuZCBmb3IgbmV3IHNjZnMgKi8KKwkJCQkJZGVsdGFTY2ZCaXRzID0gY291bnRTY2ZCaXRzRGlmZihzY2Ysc2NmVG1wLHNmYkNudCxzdGFydFNmYixzdG9wU2ZiKTsKKwkJCQkJZGVsdGFTcGVjUGUgPSBjYWxjU3BlY1BlRGlmZihzY2YsIHNjZlRtcCwgc2ZiQ29uc3RQZVBhcnQsCisJCQkJCQlsb2dTZmJFbmVyZ3ksIGxvZ1NmYkZvcm1GYWN0b3IsIHNmYk5SZWxldmFudExpbmVzLCAKKwkJCQkJCXN0YXJ0U2ZiLCBzdG9wU2ZiKTsKKwkJCQkJZGVsdGFQZU5ldyA9IGRlbHRhUGUgKyBkZWx0YVNjZkJpdHMgKyBkZWx0YVNwZWNQZTsKKwkJCQkJCisJCQkJCQorCQkJCQlpZiAoZGVsdGFQZU5ldyA8IDEwKSB7CisJCQkJCQlXb3JkMzIgZGlzdE9sZFN1bSwgZGlzdE5ld1N1bTsKKwkJCQkJCQorCQkJCQkJLyogcXVhbnRpemUgYW5kIGNhbGMgc3VtIG9mIG5ldyBkaXN0b3J0aW9uICovCisJCQkJCQlkaXN0T2xkU3VtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJZGlzdE5ld1N1bSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkJCWZvciAoc2ZiPXN0YXJ0U2ZiOyBzZmI8c3RvcFNmYjsgc2ZiKyspIHsKKwkJCQkJCQkKKwkJCQkJCQlpZiAoc2NmVG1wW3NmYl0gIT0gTUlOXzE2KSB7CisJCQkJCQkJCWRpc3RPbGRTdW0gPSBMX2FkZChkaXN0T2xkU3VtLCBzZmJEaXN0W3NmYl0pOworCQkJCQkJCQkKKwkJCQkJCQkJc2ZiRGlzdE5ld1tzZmJdID0gY2FsY1NmYkRpc3QocHN5T3V0Q2hhbi0+bWRjdFNwZWN0cnVtICsKKwkJCQkJCQkJCXBzeU91dENoYW4tPnNmYk9mZnNldHNbc2ZiXSwgCisJCQkJCQkJCQkocHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tzZmIrMV0gLSBwc3lPdXRDaGFuLT5zZmJPZmZzZXRzW3NmYl0pLAorCQkJCQkJCQkJc2NmQWN0KTsKKwkJCQkJCQkJCisJCQkJCQkJCQorCQkJCQkJCQlpZiAoc2ZiRGlzdE5ld1tzZmJdID4gcHN5T3V0Q2hhbi0+c2ZiVGhyZXNob2xkW3NmYl0pIHsKKwkJCQkJCQkJCWRpc3ROZXdTdW0gPSBkaXN0T2xkU3VtIDw8IDE7CisJCQkJCQkJCQlicmVhazsKKwkJCQkJCQkJfQorCQkJCQkJCQlkaXN0TmV3U3VtID0gTF9hZGQoZGlzdE5ld1N1bSwgc2ZiRGlzdE5ld1tzZmJdKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCWlmIChkaXN0TmV3U3VtIDwgZGlzdE9sZFN1bSkgeworCQkJCQkJCWRlbHRhUGUgPSBkZWx0YVBlTmV3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCWZvciAoc2ZiPXN0YXJ0U2ZiOyBzZmI8c3RvcFNmYjsgc2ZiKyspIHsKKwkJCQkJCQkJCisJCQkJCQkJCWlmIChzY2Zbc2ZiXSE9TUlOXzE2KSB7CisJCQkJCQkJCQlzY2Zbc2ZiXSA9IHNjZkFjdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCQkJc2ZiRGlzdFtzZmJdID0gc2ZiRGlzdE5ld1tzZmJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0gICAgICAgIAorCQkJfSB3aGlsZSAoc3RvcFNmYiA8PSBzZmJDbnQpOyAgICAgIAorCQl9IHdoaWxlIChzY2ZBY3QgPiBzY2ZNaW4pOworCX0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBFc3RpbWF0ZVNjYWxlRmFjdG9yc0NoYW5uZWwKKyogZGVzY3JpcHRpb246ICBlc3RpbWF0ZSBzY2FsZSBmYWN0b3JzIGZvciBvbmUgY2hhbm5lbAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkCitFc3RpbWF0ZVNjYWxlRmFjdG9yc0NoYW5uZWwoUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAqc2NmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAqZ2xvYmFsR2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgKmxvZ1NmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgKmxvZ1NmYkZvcm1GYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICpzZmJOUmVsZXZhbnRMaW5lcykKK3sKKwlXb3JkMzIgaSwgajsKKwlXb3JkMzIgdGhyZXNoLCBlbmVyZ3k7CisJV29yZDMyIGVuZXJneVBhcnQsIHRocmVzaG9sZFBhcnQ7CisJV29yZDMyIHNjZkludCwgbWluU2NmLCBtYXhTY2YsIG1heEFsbG93ZWRTY2YsIGxhc3RTZjsKKwlXb3JkMzIgbWF4U3BlYzsKKwlXb3JkMzIgKnNmYkRpc3QgPSBwc3lPdXRDaGFuLT5zZmJEaXN0OworCVdvcmQxNiAqbWluU2ZNYXhRdWFudCA9IHBzeU91dENoYW4tPm1pblNmTWF4UXVhbnQ7CisJV29yZDE2ICptaW5TY2ZDYWxjdWxhdGVkID0gcHN5T3V0Q2hhbi0+bWluU2NmQ2FsY3VsYXRlZDsKKwkKKwkKKwlmb3IgKGk9MDsgaTxwc3lPdXRDaGFuLT5zZmJDbnQ7IGkrKykgeworCQlXb3JkMzIgc2Jmd2l0aCwgc2JmU3RhcnQ7DQorCQlXb3JkMzIgKm1kY3RTcGVjOworCQl0aHJlc2ggPSBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCWVuZXJneSA9IHBzeU91dENoYW4tPnNmYkVuZXJneVtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJDQorCQlzYmZTdGFydCA9IHBzeU91dENoYW4tPnNmYk9mZnNldHNbaV07DQorCQlzYmZ3aXRoID0gcHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tpKzFdIC0gc2JmU3RhcnQ7DQorCQltZGN0U3BlYyA9IHBzeU91dENoYW4tPm1kY3RTcGVjdHJ1bStzYmZTdGFydDsNCisJCQorCQltYXhTcGVjID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCS8qIG1heGltdW0gb2Ygc3BlY3RydW0gKi8KKwkJZm9yIChqPXNiZndpdGg7IGo7IGotLSApIHsNCisJCQlXb3JkMzIgYWJzU3BlYyA9IExfYWJzKCptZGN0U3BlYyk7IG1kY3RTcGVjKys7DQorCQkJbWF4U3BlYyB8PSBhYnNTcGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCX0KKwkJCisJCS8qIHNjZnMgd2l0aG91dCBlbmVyZ3kgb3Igd2l0aCB0aHJlc2g+ZW5lcmd5IGFyZSBtYXJrZWQgd2l0aCBNSU5fMTYgKi8KKwkJc2NmW2ldID0gTUlOXzE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQltaW5TZk1heFF1YW50W2ldID0gTUlOXzE2OyAgICAKKwkJCisJCWlmICgobWF4U3BlYyA+IDApICYmIChlbmVyZ3kgPiB0aHJlc2gpKSB7CisJCQkKKwkJCWVuZXJneVBhcnQgPSBsb2dTZmJGb3JtRmFjdG9yW2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQl0aHJlc2hvbGRQYXJ0ID0gaUxvZzQodGhyZXNoKTsgIAorCQkJLyogLTIwID0gNCpsb2cyKDYuNzUpIC0gMzIgKi8NCisJCQlzY2ZJbnQgPSAoKHRocmVzaG9sZFBhcnQgLSBlbmVyZ3lQYXJ0IC0gMjApICogU0NBTEVfRVNUSU1BVEVfQ09FRikgPj4gMTU7CisJCQkKKwkJCW1pblNmTWF4UXVhbnRbaV0gPSBpTG9nNChtYXhTcGVjKSAtIDY4OyAvKiA2OCAgLTE2LzMqbG9nKE1BWF9RVUFOVCswLjUtbG9nQ29uKS9sb2coMikgKyAxICovCisJCQkKKwkJCQorCQkJaWYgKG1pblNmTWF4UXVhbnRbaV0gPiBzY2ZJbnQpIHsKKwkJCQlzY2ZJbnQgPSBtaW5TZk1heFF1YW50W2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCX0KKwkJCQorCQkJLyogZmluZCBiZXR0ZXIgc2NhbGVmYWN0b3Igd2l0aCBhbmFseXNpcyBieSBzeW50aGVzaXMgKi8KKwkJCXNjZkludCA9IGltcHJvdmVTY2YocHN5T3V0Q2hhbi0+bWRjdFNwZWN0cnVtK3NiZlN0YXJ0LA0KKwkJCQlzYmZ3aXRoLA0KKwkJCQl0aHJlc2gsIHNjZkludCwgbWluU2ZNYXhRdWFudFtpXSwgDQorCQkJCSZzZmJEaXN0W2ldLCAmbWluU2NmQ2FsY3VsYXRlZFtpXSk7CisJCQkKKwkJCXNjZltpXSA9IHNjZkludDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCX0KKwl9CisJCisJCisJLyogc2NhbGVmYWN0b3IgZGlmZmVyZWNlIHJlZHVjdGlvbiAgKi8KKwl7CisJCVdvcmQxNiBzZmJDb25zdFBlUGFydFtNQVhfR1JPVVBFRF9TRkJdOworCQlmb3IoaT0wO2k8cHN5T3V0Q2hhbi0+c2ZiQ250O2krKykgeworCQkJc2ZiQ29uc3RQZVBhcnRbaV0gPSBNSU5fMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJfQorCQkKKwkJYXNzaW1pbGF0ZVNpbmdsZVNjZihwc3lPdXRDaGFuLCBzY2YsIAorCQkJbWluU2ZNYXhRdWFudCwgc2ZiRGlzdCwgc2ZiQ29uc3RQZVBhcnQsIGxvZ1NmYkVuZXJneSwKKwkJCWxvZ1NmYkZvcm1GYWN0b3IsIHNmYk5SZWxldmFudExpbmVzLCBtaW5TY2ZDYWxjdWxhdGVkLCAxKTsKKwkJCisJCWFzc2ltaWxhdGVNdWx0aXBsZVNjZihwc3lPdXRDaGFuLCBzY2YsIAorCQkJbWluU2ZNYXhRdWFudCwgc2ZiRGlzdCwgc2ZiQ29uc3RQZVBhcnQsIGxvZ1NmYkVuZXJneSwKKwkJCWxvZ1NmYkZvcm1GYWN0b3IsIHNmYk5SZWxldmFudExpbmVzKTsKKwl9CisKKwkvKiBnZXQgbWF4IHNjYWxlZmFjIGZvciBnbG9iYWwgZ2FpbiAqLworCW1heFNjZiA9IE1JTl8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCW1pblNjZiA9IE1BWF8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCWZvciAoaT0wOyBpPHBzeU91dENoYW4tPnNmYkNudDsgaSsrKSB7CisJCQorCQlpZiAobWF4U2NmIDwgc2NmW2ldKSB7CisJCQltYXhTY2YgPSBzY2ZbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQl9CisJCQorCQlpZiAoKHNjZltpXSAhPSBNSU5fMTYpICYmIChtaW5TY2YgPiBzY2ZbaV0pKSB7CisJCQltaW5TY2YgPSBzY2ZbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQl9CisJfQorCS8qIGxpbWl0IHNjZiBkZWx0YSAqLworCW1heEFsbG93ZWRTY2YgPSBtaW5TY2YgKyBNQVhfU0NGX0RFTFRBOworCWZvcihpPTA7IGk8cHN5T3V0Q2hhbi0+c2ZiQ250OyBpKyspIHsKKwkJCisJCWlmICgoc2NmW2ldICE9IE1JTl8xNikgJiYgKG1heEFsbG93ZWRTY2YgPCBzY2ZbaV0pKSB7CisJCQlzY2ZbaV0gPSBtYXhBbGxvd2VkU2NmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQl9CisJfQorCS8qIG5ldyBtYXhTY2YgaWYgYW55IHNjZiBoYXMgYmVlbiBsaW1pdGVkICovCisJCisJaWYgKG1heEFsbG93ZWRTY2YgPCBtYXhTY2YpIHsKKwkJbWF4U2NmID0gbWF4QWxsb3dlZFNjZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCX0KKwkKKwkvKiBjYWxjIGxvb3Agc2NhbGVmYWN0b3JzICovCisJCisJaWYgKG1heFNjZiA+IE1JTl8xNikgeworCQkqZ2xvYmFsR2FpbiA9IG1heFNjZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCWxhc3RTZiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCisJCWZvcihpPTA7IGk8cHN5T3V0Q2hhbi0+c2ZiQ250OyBpKyspIHsKKwkJCQorCQkJaWYgKHNjZltpXSA9PSBNSU5fMTYpIHsKKwkJCQlzY2ZbaV0gPSBsYXN0U2Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkvKiBzZXQgYmFuZCBleHBsaWNpdGVseSB0byB6ZXJvICovCisJCQkJZm9yIChqPXBzeU91dENoYW4tPnNmYk9mZnNldHNbaV07IGo8cHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tpKzFdOyBqKyspIHsKKwkJCQkJcHN5T3V0Q2hhbi0+bWRjdFNwZWN0cnVtW2pdID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCX0KKwkJCX0KKwkJCWVsc2UgeworCQkJCXNjZltpXSA9IG1heFNjZiAtIHNjZltpXTsKKwkJCQlsYXN0U2YgPSBzY2ZbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCX0KKwkJfQorCX0KKwllbHNleworCQkqZ2xvYmFsR2FpbiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCS8qIHNldCBzcGVjdHJ1bSBleHBsaWNpdGVseSB0byB6ZXJvICovCisJCWZvcihpPTA7IGk8cHN5T3V0Q2hhbi0+c2ZiQ250OyBpKyspIHsKKwkJCXNjZltpXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQlmb3IgKGo9cHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tpXTsgajxwc3lPdXRDaGFuLT5zZmJPZmZzZXRzW2krMV07IGorKykgeworCQkJCXBzeU91dENoYW4tPm1kY3RTcGVjdHJ1bVtqXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJfQorCQl9CisJfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IENhbGNGb3JtRmFjdG9yCisqIGRlc2NyaXB0aW9uOiAgZXN0aW1hdGUgRm9ybSBmYWN0b3JzIGZvciBhbGwgY2hhbm5lbAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQKK0NhbGNGb3JtRmFjdG9yKFdvcmQxNiBsb2dTZmJGb3JtRmFjdG9yW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgIFdvcmQxNiBzZmJOUmVsZXZhbnRMaW5lc1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICBXb3JkMTYgbG9nU2ZiRW5lcmd5W01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbkNoYW5uZWxzKQoreworCVdvcmQxNiBqOworCQorCWZvciAoaj0wOyBqPG5DaGFubmVsczsgaisrKSB7CisJCUNhbGNGb3JtRmFjdG9yQ2hhbm5lbChsb2dTZmJGb3JtRmFjdG9yW2pdLCBzZmJOUmVsZXZhbnRMaW5lc1tqXSwgbG9nU2ZiRW5lcmd5W2pdLCAmcHN5T3V0Q2hhbm5lbFtqXSk7CisJfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEVzdGltYXRlU2NhbGVGYWN0b3JzCisqIGRlc2NyaXB0aW9uOiAgZXN0aW1hdGUgc2NhbGUgZmFjdG9ycyBmb3IgYWxsIGNoYW5uZWwKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkCitFc3RpbWF0ZVNjYWxlRmFjdG9ycyhQU1lfT1VUX0NIQU5ORUwgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgUUNfT1VUX0NIQU5ORUwgIHFjT3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgIGxvZ1NmYkVuZXJneVtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgbG9nU2ZiRm9ybUZhY3RvcltNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgc2ZiTlJlbGV2YW50TGluZXNbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgIG5DaGFubmVscykKK3sKKwlXb3JkMTYgajsKKwkKKwlmb3IgKGo9MDsgajxuQ2hhbm5lbHM7IGorKykgeworCQlFc3RpbWF0ZVNjYWxlRmFjdG9yc0NoYW5uZWwoJnBzeU91dENoYW5uZWxbal0sCisJCQlxY091dENoYW5uZWxbal0uc2NmLAorCQkJJihxY091dENoYW5uZWxbal0uZ2xvYmFsR2FpbiksCisJCQlsb2dTZmJFbmVyZ3lbal0sCisJCQlsb2dTZmJGb3JtRmFjdG9yW2pdLAorCQkJc2ZiTlJlbGV2YW50TGluZXNbal0pOworCX0KK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvc3ByZWFkaW5nLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9zcHJlYWRpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmZjN2RhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvc3ByZWFkaW5nLmMKQEAgLTAsMCArMSw1MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJc3ByZWFkaW5nLmMNCisNCisJQ29udGVudDoJU3ByZWFkaW5nIG9mIGVuZXJneSBmdW5jdGlvbg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgInNwcmVhZGluZy5oIg0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogU3ByZWFkaW5nTWF4CisqIGRlc2NyaXB0aW9uOiAgc3ByZWFkaW5nIHRoZSBlbmVyZ3kKKyoJCQkJIGhpZ2hlciBmcmVxdWVuY2llcyB0aHIobikgPSBtYXgodGhyKG4pLCBzaChuKSp0aHIobi0xKSkKKyoJCQkJIGxvd2VyIGZyZXF1ZW5jaWVzICB0aHIobikgPSBtYXgodGhyKG4pLCBzbChuKSp0aHIobisxKSkKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQordm9pZCBTcHJlYWRpbmdNYXgoY29uc3QgV29yZDE2IHBiQ250LA0KKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqbWFza0xvd0ZhY3RvciwNCisgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKm1hc2tIaWdoRmFjdG9yLA0KKyAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqcGJTcHJlYWRlZEVuZXJneSkNCit7DQorICBXb3JkMzIgaTsNCisNCisgIC8qIHNsb3BlIHRvIGhpZ2hlciBmcmVxdWVuY2llcyAqLw0KKyAgZm9yIChpPTE7IGk8cGJDbnQ7IGkrKykgew0KKyAgICBwYlNwcmVhZGVkRW5lcmd5W2ldID0gbWF4KHBiU3ByZWFkZWRFbmVyZ3lbaV0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMX21weV9scyhwYlNwcmVhZGVkRW5lcmd5W2ktMV0sIG1hc2tIaWdoRmFjdG9yW2ldKSk7DQorICB9DQorICAvKiBzbG9wZSB0byBsb3dlciBmcmVxdWVuY2llcyAqLw0KKyAgZm9yIChpPXBiQ250IC0gMjsgaT49MDsgaS0tKSB7DQorICAgIHBiU3ByZWFkZWRFbmVyZ3lbaV0gPSBtYXgocGJTcHJlYWRlZEVuZXJneVtpXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExfbXB5X2xzKHBiU3ByZWFkZWRFbmVyZ3lbaSsxXSwgbWFza0xvd0ZhY3RvcltpXSkpOw0KKyAgfQ0KK30NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9zdGF0X2JpdHMuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3N0YXRfYml0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NjEwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9zdGF0X2JpdHMuYwpAQCAtMCwwICsxLDIzNyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJc3RhdF9iaXRzLmMNCisNCisJQ29udGVudDoJU3RhdGljIGJpdCBjb3VudGVyIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJzdGF0X2JpdHMuaCIKKyNpbmNsdWRlICJiaXRlbmMuaCIKKyNpbmNsdWRlICJ0bnMuaCIKKworCit0eXBlZGVmIGVudW0geworICBTSV9JRF9CSVRTICAgICAgICAgICAgICAgID0oMyksCisgIFNJX0ZJTExfQ09VTlRfQklUUyAgICAgICAgPSg0KSwKKyAgU0lfRklMTF9FU0NfQ09VTlRfQklUUyAgICA9KDgpLAorICBTSV9GSUxMX0VYVEVOVElPTl9CSVRTICAgID0oNCksCisgIFNJX0ZJTExfTklCQkxFX0JJVFMgICAgICAgPSg0KSwKKyAgU0lfU0NFX0JJVFMgICAgICAgICAgICAgICA9KDQpLAorICBTSV9DUEVfQklUUyAgICAgICAgICAgICAgID0oNSksCisgIFNJX0NQRV9NU19NQVNLX0JJVFMgICAgICAgPSgyKSAsCisgIFNJX0lDU19JTkZPX0JJVFNfTE9ORyAgICAgPSgxKzIrMSs2KzEpLAorICBTSV9JQ1NfSU5GT19CSVRTX1NIT1JUICAgID0oMSsyKzErNCs3KSwKKyAgU0lfSUNTX0JJVFMgICAgICAgICAgICAgICA9KDgrMSsxKzEpCit9IFNJX0JJVFM7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjb3VudE1zTWFza0JpdHMKKyogZGVzY3JpcHRpb246ICAgY291bnQgbXMgc3RlcmVvIGJpdHMgZGVtYW5kCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBjb3VudE1zTWFza0JpdHMoV29yZDE2ICAgc2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgc2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICBtYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBUT09MU0lORk8gKnRvb2xzSW5mbykKK3sKKyAgV29yZDE2IG1zQml0cywgc2ZiT2ZmLCBzZmI7CisgIG1zQml0cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgCisgIHN3aXRjaCh0b29sc0luZm8tPm1zRGlnZXN0KSB7CisgICAgY2FzZSBNU19OT05FOgorICAgIGNhc2UgTVNfQUxMOgorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1TX1NPTUU6CisgICAgICBmb3Ioc2ZiT2ZmPTA7IHNmYk9mZjxzZmJDbnQ7IHNmYk9mZis9c2ZiUGVyR3JvdXApCisgICAgICAgIGZvcihzZmI9MDsgc2ZiPG1heFNmYlBlckdyb3VwOyBzZmIrKykKKyAgICAgICAgICBtc0JpdHMgKz0gMTsKKyAgICAgIGJyZWFrOworICB9CisgIHJldHVybihtc0JpdHMpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IHRuc0NvdW50CisqIGRlc2NyaXB0aW9uOiAgIGNvdW50IHRucyBiaXQgZGVtYW5kICBjb3JlIGZ1bmN0aW9uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiB0bnNDb3VudChUTlNfSU5GTyAqdG5zSW5mbywgV29yZDE2IGJsb2NrVHlwZSkKK3sKKworICBXb3JkMzIgaSwgazsKKyAgRmxhZyB0bnNQcmVzZW50OworICBXb3JkMzIgbnVtT2ZXaW5kb3dzOworICBXb3JkMzIgY291bnQ7CisgIFdvcmQzMiBjb2VmQml0czsNCisgIFdvcmQxNiAqcHRjb2VmOworCisgIGNvdW50ID0gMDsgICAgICAgDQorICAKKyAgaWYgKGJsb2NrVHlwZSA9PSAyKQorICAgIG51bU9mV2luZG93cyA9IDg7CisgIGVsc2UKKyAgICBudW1PZldpbmRvd3MgPSAxOworICB0bnNQcmVzZW50ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yIChpPTA7IGk8bnVtT2ZXaW5kb3dzOyBpKyspIHsKKyAgICAgCisgICAgaWYgKHRuc0luZm8tPnRuc0FjdGl2ZVtpXSE9MCkgeworICAgICAgdG5zUHJlc2VudCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisgICAKKyAgaWYgKHRuc1ByZXNlbnQpIHsKKyAgICAvKiB0aGVyZSBpcyBkYXRhIHRvIGJlIHdyaXR0ZW4qLworICAgIC8qY291bnQgKz0gMTsgKi8KKyAgICBmb3IgKGk9MDsgaTxudW1PZldpbmRvd3M7IGkrKykgeworICAgICAgIAorICAgICAgaWYgKGJsb2NrVHlwZSA9PSAyKQorICAgICAgICBjb3VudCArPSAxOworICAgICAgZWxzZQorICAgICAgICBjb3VudCArPSAyOworICAgICAgIAorICAgICAgaWYgKHRuc0luZm8tPnRuc0FjdGl2ZVtpXSkgeworICAgICAgICBjb3VudCArPSAxOworICAgICAgICAgCisgICAgICAgIGlmIChibG9ja1R5cGUgPT0gMikgeworICAgICAgICAgIGNvdW50ICs9IDQ7CisgICAgICAgICAgY291bnQgKz0gMzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBjb3VudCArPSA2OworICAgICAgICAgIGNvdW50ICs9IDU7CisgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICBpZiAodG5zSW5mby0+b3JkZXJbaV0pIHsKKyAgICAgICAgICBjb3VudCArPSAxOyAvKmRpcmVjdGlvbiovCisgICAgICAgICAgY291bnQgKz0gMTsgLypjb2VmX2NvbXByZXNzaW9uICovCQorICAgICAgICAgICAKKyAgICAgICAgICBpZiAodG5zSW5mby0+Y29lZlJlc1tpXSA9PSA0KSB7CisgICAgICAgICAgICBwdGNvZWYgPSB0bnNJbmZvLT5jb2VmICsgaSpUTlNfTUFYX09SREVSX1NIT1JUOw0KKwkJCWNvZWZCaXRzID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBmb3Ioaz0wOyBrPHRuc0luZm8tPm9yZGVyW2ldOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGlmICgocHRjb2VmW2tdID4gMykgfHwgKHB0Y29lZltrXSA8IC00KSkgeworICAgICAgICAgICAgICAgIGNvZWZCaXRzID0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvZWZCaXRzID0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBwdGNvZWYgPSB0bnNJbmZvLT5jb2VmICsgaSpUTlNfTUFYX09SREVSX1NIT1JUOw0KKwkJCWZvcihrPTA7IGs8dG5zSW5mby0+b3JkZXJbaV07IGsrKykgeworICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgaWYgKChwdGNvZWZba10gPiAxKSB8fCAocHRjb2VmW2tdIDwgLTIpKSB7CisgICAgICAgICAgICAgICAgY29lZkJpdHMgPSAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGZvciAoaz0wOyBrPHRuc0luZm8tPm9yZGVyW2ldOyBrKysgKSB7CisgICAgICAgICAgICBjb3VudCArPSBjb2VmQml0czsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0NCisgIAorICByZXR1cm4gY291bnQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50VG5zQml0cworKiBkZXNjcmlwdGlvbjogICBjb3VudCB0bnMgYml0IGRlbWFuZCAgCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBjb3VudFRuc0JpdHMoVE5TX0lORk8gKnRuc0luZm8sV29yZDE2IGJsb2NrVHlwZSkKK3sKKyAgcmV0dXJuKHRuc0NvdW50KHRuc0luZm8sIGJsb2NrVHlwZSkpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50U3RhdGljQml0ZGVtYW5kCisqIGRlc2NyaXB0aW9uOiAgIGNvdW50IHN0YXRpYyBiaXQgZGVtYW5kIGluY2x1ZGUgdG5zICAKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgY291bnRTdGF0aWNCaXRkZW1hbmQoUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQgKnBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNoYW5uZWxzLCANCisJCQkJCQkJV29yZDE2IGFkdHNVc2VkKQoreworICBXb3JkMzIgc3RhdEJpdHM7CisgIFdvcmQzMiBjaDsKKyAgCisgIHN0YXRCaXRzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKyAgLyogaWYgYWR0cyB1c2VkLCBhZGQgNTYgYml0cyAqLworICBpZihhZHRzVXNlZCkgc3RhdEJpdHMgKz0gNTY7CisKKyAgIAorICBzd2l0Y2ggKGNoYW5uZWxzKSB7CisgICAgY2FzZSAxOgorICAgICAgc3RhdEJpdHMgKz0gU0lfSURfQklUUytTSV9TQ0VfQklUUytTSV9JQ1NfQklUUzsKKyAgICAgIHN0YXRCaXRzICs9IGNvdW50VG5zQml0cygmKHBzeU91dENoYW5uZWxbMF0udG5zSW5mbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFswXS53aW5kb3dTZXF1ZW5jZSk7CisgICAgICAgCisgICAgICBzd2l0Y2gocHN5T3V0Q2hhbm5lbFswXS53aW5kb3dTZXF1ZW5jZSl7CisgICAgICAgIGNhc2UgTE9OR19XSU5ET1c6CisgICAgICAgIGNhc2UgU1RBUlRfV0lORE9XOgorICAgICAgICBjYXNlIFNUT1BfV0lORE9XOgorICAgICAgICAgIHN0YXRCaXRzICs9IFNJX0lDU19JTkZPX0JJVFNfTE9ORzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTSE9SVF9XSU5ET1c6CisgICAgICAgICAgc3RhdEJpdHMgKz0gU0lfSUNTX0lORk9fQklUU19TSE9SVDsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgIHN0YXRCaXRzICs9IFNJX0lEX0JJVFMrU0lfQ1BFX0JJVFMrMipTSV9JQ1NfQklUUzsKKworICAgICAgc3RhdEJpdHMgKz0gU0lfQ1BFX01TX01BU0tfQklUUzsKKyAgICAgIHN0YXRCaXRzICs9IGNvdW50TXNNYXNrQml0cyhwc3lPdXRDaGFubmVsWzBdLnNmYkNudCwKKwkJCQkJCQkJICBwc3lPdXRDaGFubmVsWzBdLnNmYlBlckdyb3VwLAorCQkJCQkJCQkgIHBzeU91dENoYW5uZWxbMF0ubWF4U2ZiUGVyR3JvdXAsCisJCQkJCQkJCSAgJnBzeU91dEVsZW1lbnQtPnRvb2xzSW5mbyk7CisgICAgICAgCisgICAgICBzd2l0Y2ggKHBzeU91dENoYW5uZWxbMF0ud2luZG93U2VxdWVuY2UpIHsKKyAgICAgICAgY2FzZSBMT05HX1dJTkRPVzoKKyAgICAgICAgY2FzZSBTVEFSVF9XSU5ET1c6CisgICAgICAgIGNhc2UgU1RPUF9XSU5ET1c6CisgICAgICAgICAgc3RhdEJpdHMgKz0gU0lfSUNTX0lORk9fQklUU19MT05HOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNIT1JUX1dJTkRPVzoKKyAgICAgICAgICBzdGF0Qml0cyArPSBTSV9JQ1NfSU5GT19CSVRTX1NIT1JUOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZm9yKGNoPTA7IGNoPDI7IGNoKyspCisgICAgICAgIHN0YXRCaXRzICs9IGNvdW50VG5zQml0cygmKHBzeU91dENoYW5uZWxbY2hdLnRuc0luZm8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtjaF0ud2luZG93U2VxdWVuY2UpOworICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gc3RhdEJpdHM7Cit9CisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3Rucy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvdG5zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZkODkwZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3Rucy5jCkBAIC0wLDAgKzEsOTMyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl0bnMuYw0KKw0KKwlDb250ZW50OglEZWZpbml0aW9uIFROUyB0b29scyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisjaW5jbHVkZSAiYWFjX3JvbS5oIgorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgInRucy5oIgorI2luY2x1ZGUgInRuc19wYXJhbS5oIgorI2luY2x1ZGUgInBzeV9jb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAidG5zX2Z1bmMuaCIKKworI2RlZmluZSBUTlNfTU9ESUZZX0JFR0lOICAgICAgICAgMjYwMCAgLyogSHogKi8KKyNkZWZpbmUgUkFUSU9fUEFUQ0hfTE9XRVJfQk9SREVSIDM4MCAgIC8qIEh6ICovCisjZGVmaW5lIFROU19HQUlOX1RIUkVTSAkJCSAxNDEgICAvKiAxLjQxKjEwMCAqLw0KKyNkZWZpbmUgTk9STV9DT0VGCQkJCSAweDAyOGY1YzI4DQorCitzdGF0aWMgY29uc3QgV29yZDMyIFROU19QQVJDT1JfVEhSRVNIID0gMHgwY2NjY2NjZDsgLyogMC4xKigxIDw8IDMxKSAqLw0KKy8qIExpbWl0IGJhbmRzIHRvID4gMi4wIGtIeiAqLw0KK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCB0bnNNaW5CYW5kTnVtYmVyTG9uZ1sxMl0gPQ0KK3sgMTEsIDEyLCAxNSwgMTYsIDE3LCAyMCwgMjUsIDI2LCAyNCwgMjgsIDMwLCAzMSB9Ow0KK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCB0bnNNaW5CYW5kTnVtYmVyU2hvcnRbMTJdID0NCit7IDIsIDIsIDIsIDMsIDMsIDQsIDYsIDYsIDgsIDEwLCAxMCwgMTIgfTsNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogTWFpbi9Mb3cgUHJvZmlsZSBUTlMgUGFyYW1ldGVycyAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitzdGF0aWMgdW5zaWduZWQgc2hvcnQgdG5zTWF4QmFuZHNMb25nTWFpbkxvd1sxMl0gPQ0KK3sgMzEsIDMxLCAzNCwgNDAsIDQyLCA1MSwgNDYsIDQ2LCA0MiwgNDIsIDQyLCAzOSB9Ow0KKw0KK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCB0bnNNYXhCYW5kc1Nob3J0TWFpbkxvd1sxMl0gPQ0KK3sgOSwgOSwgMTAsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQgfTsKKworCitzdGF0aWMgdm9pZCBDYWxjV2VpZ2h0ZWRTcGVjdHJ1bShjb25zdCBXb3JkMzIgc3BlY3RydW1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB3ZWlnaHRlZFNwZWN0cnVtW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIqIHNmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiogc2ZiT2Zmc2V0LCBXb3JkMTYgbHBjU3RhcnRMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGxwY1N0b3BMaW5lLCBXb3JkMTYgbHBjU3RhcnRCYW5kLFdvcmQxNiBscGNTdG9wQmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcFdvcmszMik7CisKKworCit2b2lkIEF1dG9Db3JyZWxhdGlvbihjb25zdCBXb3JkMTYgaW5wdXRbXSwgV29yZDMyIGNvcnJbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc2FtcGxlcywgV29yZDE2IGNvcnJDb2VmZik7CitzdGF0aWMgV29yZDE2IEF1dG9Ub1BhcmNvcihXb3JkMzIgd29ya0J1ZmZlcltdLCBXb3JkMzIgcmVmbENvZWZmW10sIFdvcmQxNiBudW1PZkNvZWZmKTsKKworc3RhdGljIFdvcmQxNiBDYWxjVG5zRmlsdGVyKGNvbnN0IFdvcmQxNiogc2lnbmFsLCBjb25zdCBXb3JkMzIgd2luZG93W10sIFdvcmQxNiBudW1PZkxpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB0bnNPcmRlciwgV29yZDMyIHBhcmNvcltdKTsKKworCitzdGF0aWMgdm9pZCBQYXJjb3IySW5kZXgoY29uc3QgV29yZDMyIHBhcmNvcltdLCBXb3JkMTYgaW5kZXhbXSwgV29yZDE2IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBiaXRzUGVyQ29lZmYpOworCitzdGF0aWMgdm9pZCBJbmRleDJQYXJjb3IoY29uc3QgV29yZDE2IGluZGV4W10sIFdvcmQzMiBwYXJjb3JbXSwgV29yZDE2IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBiaXRzUGVyQ29lZmYpOworCisKKworc3RhdGljIHZvaWQgQW5hbHlzaXNGaWx0ZXJMYXR0aWNlKGNvbnN0IFdvcmQzMiBzaWduYWxbXSwgV29yZDE2IG51bU9mTGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyIHBhckNvZWZmW10sIFdvcmQxNiBvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgb3V0cHV0W10pOworCisKKy8qKgorKgorKiBmdW5jdGlvbiBuYW1lOiBGcmVxVG9CYW5kV2l0aFJvdW5kaW5nCisqIGRlc2NyaXB0aW9uOiAgUmV0cmlldmUgaW5kZXggb2YgbmVhcmVzdCBiYW5kIGJvcmRlcgorKiByZXR1cm50OgkJaW5kZXgKKyoKKyovCitzdGF0aWMgV29yZDE2IEZyZXFUb0JhbmRXaXRoUm91bmRpbmcoV29yZDMyIGZyZXEsICAgICAgICAgICAgICAgICAgIC8qITwgZnJlcXVlbmN5IGluIEhlcnR6ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIGZzLCAgICAgICAgICAgICAgICAgICAgIC8qITwgU2FtcGxpbmcgZnJlcXVlbmN5IGluIEhlcnR6ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG51bU9mQmFuZHMsICAgICAgICAgICAgIC8qITwgdG90YWwgbnVtYmVyIG9mIGJhbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpiYW5kU3RhcnRPZmZzZXQpIC8qITwgdGFibGUgb2YgYmFuZCBib3JkZXJzICovCit7CisgIFdvcmQzMiBsaW5lTnVtYmVyLCBiYW5kOworICBXb3JkMzIgdGVtcCwgc2hpZnQ7CisKKyAgLyogIGFzc2VydChmcmVxID49IDApOyAgKi8KKyAgc2hpZnQgPSBub3JtX2woZnMpOworICBsaW5lTnVtYmVyID0gKGV4dHJhY3RfbChmaXhtdWwoKGJhbmRTdGFydE9mZnNldFtudW1PZkJhbmRzXSA8PCAyKSxEaXZfMzIoZnJlcSA8PCBzaGlmdCxmcyA8PCBzaGlmdCkpKSArIDEpID4+IDE7CisgCisgIC8qIGZyZXEgPiBmcy8yICovCisgIHRlbXAgPSBsaW5lTnVtYmVyIC0gYmFuZFN0YXJ0T2Zmc2V0W251bU9mQmFuZHNdIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpZiAodGVtcCA+PSAwKQorICAgIHJldHVybiBudW1PZkJhbmRzOworCisgIC8qIGZpbmQgYmFuZCB0aGUgbGluZSBudW1iZXIgbGllcyBpbiAqLworICBmb3IgKGJhbmQ9MDsgYmFuZDxudW1PZkJhbmRzOyBiYW5kKyspIHsKKyAgICB0ZW1wID0gYmFuZFN0YXJ0T2Zmc2V0W2JhbmQgKyAxXSAtIGxpbmVOdW1iZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmICh0ZW1wID4gMCkgYnJlYWs7CisgIH0KKworICB0ZW1wID0gKGxpbmVOdW1iZXIgLSBiYW5kU3RhcnRPZmZzZXRbYmFuZF0pOworICB0ZW1wID0gKHRlbXAgLSAoYmFuZFN0YXJ0T2Zmc2V0W2JhbmQgKyAxXSAtIGxpbmVOdW1iZXIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpZiAoIHRlbXAgPiAwICkKKyAgeworICAgIGJhbmQgPSBiYW5kICsgMTsKKyAgfQorCisgIHJldHVybiBleHRyYWN0X2woYmFuZCk7Cit9CisKKworLyoqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEluaXRUbnNDb25maWd1cmF0aW9uTG9uZworKiBkZXNjcmlwdGlvbjogIEZpbGwgVE5TX0NPTkZJRyBzdHJ1Y3R1cmUgd2l0aCBzZW5zaWJsZSBjb250ZW50IGZvciBsb25nIGJsb2NrcworKiByZXR1cm5zOgkJMCBpZiBzdWNjZXNzCisqCisqLworV29yZDE2IEluaXRUbnNDb25maWd1cmF0aW9uTG9uZyhXb3JkMzIgYml0UmF0ZSwgICAgICAgICAgLyohPCBiaXRyYXRlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVSYXRlLCAgICAgICAgICAvKiE8IFNhbXBsaW5nIGZyZXF1ZW5jeSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hhbm5lbHMsICAgICAgICAgICAgLyohPCBudW1iZXIgb2YgY2hhbm5lbHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE5TX0NPTkZJRyAqdEMsICAgICAgICAgICAgIC8qITwgVE5TIENvbmZpZyBzdHJ1Y3QgKG1vZGlmaWVkKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9MT05HICpwQywgLyohPCBwc3kgY29uZmlnIHN0cnVjdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYWN0aXZlKSAgICAgICAgICAgICAgLyohPCB0bnMgYWN0aXZlIGZsYWcgKi8KK3sKKworICBXb3JkMzIgYml0cmF0ZVBlckNoYW5uZWw7CisgIHRDLT5tYXhPcmRlciAgICAgPSBUTlNfTUFYX09SREVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgdEMtPnRuc1N0YXJ0RnJlcSA9IDEyNzU7CisgIHRDLT5jb2VmUmVzICAgICAgPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAKKyAgLyogdG8gYXZvaWQgaW50ZWdlciBkaXZpc2lvbiAqLworICBpZiAoIHN1YihjaGFubmVscywyKSA9PSAwICkgeyAKKyAgICBiaXRyYXRlUGVyQ2hhbm5lbCA9IGJpdFJhdGUgPj4gMTsgICAgCisgIH0KKyAgZWxzZSB7CisgICAgYml0cmF0ZVBlckNoYW5uZWwgPSBiaXRSYXRlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworICB0Qy0+dG5zTWF4U2ZiID0gdG5zTWF4QmFuZHNMb25nTWFpbkxvd1twQy0+c2FtcFJhdGVJZHhdOworCisgIHRDLT50bnNBY3RpdmUgPSBhY3RpdmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgLyogbm93IGNhbGMgYmFuZCBhbmQgbGluZSBib3JkZXJzICovCisgIHRDLT50bnNTdG9wQmFuZCA9IG1pbihwQy0+c2ZiQ250LCB0Qy0+dG5zTWF4U2ZiKTsKKyAgdEMtPnRuc1N0b3BMaW5lID0gcEMtPnNmYk9mZnNldFt0Qy0+dG5zU3RvcEJhbmRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICB0Qy0+dG5zU3RhcnRCYW5kID0gRnJlcVRvQmFuZFdpdGhSb3VuZGluZyh0Qy0+dG5zU3RhcnRGcmVxLCBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQy0+c2ZiQ250LCAoY29uc3QgV29yZDE2KilwQy0+c2ZiT2Zmc2V0KTsKKworICB0Qy0+dG5zTW9kaWZ5QmVnaW5DYiA9IEZyZXFUb0JhbmRXaXRoUm91bmRpbmcoVE5TX01PRElGWV9CRUdJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQy0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IFdvcmQxNiopcEMtPnNmYk9mZnNldCk7CisKKyAgdEMtPnRuc1JhdGlvUGF0Y2hMb3dlc3RDYiA9IEZyZXFUb0JhbmRXaXRoUm91bmRpbmcoUkFUSU9fUEFUQ0hfTE9XRVJfQk9SREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQy0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgV29yZDE2KilwQy0+c2ZiT2Zmc2V0KTsKKworCisgIHRDLT50bnNTdGFydExpbmUgPSBwQy0+c2ZiT2Zmc2V0W3RDLT50bnNTdGFydEJhbmRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICB0Qy0+bHBjU3RvcEJhbmQgPSB0bnNNYXhCYW5kc0xvbmdNYWluTG93W3BDLT5zYW1wUmF0ZUlkeF07CisgIHRDLT5scGNTdG9wQmFuZCA9IG1pbih0Qy0+bHBjU3RvcEJhbmQsIHBDLT5zZmJBY3RpdmUpOworCisgIHRDLT5scGNTdG9wTGluZSA9IHBDLT5zZmJPZmZzZXRbdEMtPmxwY1N0b3BCYW5kXTsgICANCisgIA0KKyAgdEMtPmxwY1N0YXJ0QmFuZCA9IHRuc01pbkJhbmROdW1iZXJMb25nW3BDLT5zYW1wUmF0ZUlkeF07CisKKyAgdEMtPmxwY1N0YXJ0TGluZSA9IHBDLT5zZmJPZmZzZXRbdEMtPmxwY1N0YXJ0QmFuZF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICB0Qy0+dGhyZXNob2xkID0gVE5TX0dBSU5fVEhSRVNIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworCisgIHJldHVybigwKTsKK30KKworLyoqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEluaXRUbnNDb25maWd1cmF0aW9uU2hvcnQKKyogZGVzY3JpcHRpb246ICBGaWxsIFROU19DT05GSUcgc3RydWN0dXJlIHdpdGggc2Vuc2libGUgY29udGVudCBmb3Igc2hvcnQgYmxvY2tzCisqIHJldHVybnM6CQkwIGlmIHN1Y2Nlc3MKKyoKKyovCitXb3JkMTYgSW5pdFRuc0NvbmZpZ3VyYXRpb25TaG9ydChXb3JkMzIgYml0UmF0ZSwgICAgICAgICAgICAgIC8qITwgYml0cmF0ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZVJhdGUsICAgICAgICAgICAvKiE8IFNhbXBsaW5nIGZyZXF1ZW5jeSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNoYW5uZWxzLCAgICAgICAgICAgICAvKiE8IG51bWJlciBvZiBjaGFubmVscyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE5TX0NPTkZJRyAqdEMsICAgICAgICAgICAgICAvKiE8IFROUyBDb25maWcgc3RydWN0IChtb2RpZmllZCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUICpwQywgLyohPCBwc3kgY29uZmlnIHN0cnVjdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGFjdGl2ZSkgICAgICAgICAgICAgICAvKiE8IHRucyBhY3RpdmUgZmxhZyAqLworeworICBXb3JkMzIgYml0cmF0ZVBlckNoYW5uZWw7CisgIHRDLT5tYXhPcmRlciAgICAgPSBUTlNfTUFYX09SREVSX1NIT1JUOworICB0Qy0+dG5zU3RhcnRGcmVxID0gMjc1MDsKKyAgdEMtPmNvZWZSZXMgICAgICA9IDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIAorICAvKiB0byBhdm9pZCBpbnRlZ2VyIGRpdmlzaW9uICovCisgIGlmICggc3ViKGNoYW5uZWxzLDIpID09IDAgKSB7CisgICAgYml0cmF0ZVBlckNoYW5uZWwgPSBMX3NocihiaXRSYXRlLDEpOyAgICAKKyAgfQorICBlbHNlIHsKKyAgICBiaXRyYXRlUGVyQ2hhbm5lbCA9IGJpdFJhdGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIHRDLT50bnNNYXhTZmIgPSB0bnNNYXhCYW5kc1Nob3J0TWFpbkxvd1twQy0+c2FtcFJhdGVJZHhdOworCisgIHRDLT50bnNBY3RpdmUgPSBhY3RpdmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgLyogbm93IGNhbGMgYmFuZCBhbmQgbGluZSBib3JkZXJzICovCisgIHRDLT50bnNTdG9wQmFuZCA9IG1pbihwQy0+c2ZiQ250LCB0Qy0+dG5zTWF4U2ZiKTsKKyAgdEMtPnRuc1N0b3BMaW5lID0gcEMtPnNmYk9mZnNldFt0Qy0+dG5zU3RvcEJhbmRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICB0Qy0+dG5zU3RhcnRCYW5kPUZyZXFUb0JhbmRXaXRoUm91bmRpbmcodEMtPnRuc1N0YXJ0RnJlcSwgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDLT5zZmJDbnQsIChjb25zdCBXb3JkMTYqKXBDLT5zZmJPZmZzZXQpOworCisgIHRDLT50bnNNb2RpZnlCZWdpbkNiID0gRnJlcVRvQmFuZFdpdGhSb3VuZGluZyhUTlNfTU9ESUZZX0JFR0lOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgV29yZDE2KilwQy0+c2ZiT2Zmc2V0KTsKKworICB0Qy0+dG5zUmF0aW9QYXRjaExvd2VzdENiID0gRnJlcVRvQmFuZFdpdGhSb3VuZGluZyhSQVRJT19QQVRDSF9MT1dFUl9CT1JERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBXb3JkMTYqKXBDLT5zZmJPZmZzZXQpOworCisKKyAgdEMtPnRuc1N0YXJ0TGluZSA9IHBDLT5zZmJPZmZzZXRbdEMtPnRuc1N0YXJ0QmFuZF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICB0Qy0+bHBjU3RvcEJhbmQgPSB0bnNNYXhCYW5kc1Nob3J0TWFpbkxvd1twQy0+c2FtcFJhdGVJZHhdOw0KKworICB0Qy0+bHBjU3RvcEJhbmQgPSBtaW4odEMtPmxwY1N0b3BCYW5kLCBwQy0+c2ZiQWN0aXZlKTsKKworICB0Qy0+bHBjU3RvcExpbmUgPSBwQy0+c2ZiT2Zmc2V0W3RDLT5scGNTdG9wQmFuZF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHRDLT5scGNTdGFydEJhbmQgPSB0bnNNaW5CYW5kTnVtYmVyU2hvcnRbcEMtPnNhbXBSYXRlSWR4XTsNCisKKyAgdEMtPmxwY1N0YXJ0TGluZSA9IHBDLT5zZmJPZmZzZXRbdEMtPmxwY1N0YXJ0QmFuZF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICB0Qy0+dGhyZXNob2xkID0gVE5TX0dBSU5fVEhSRVNIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICByZXR1cm4oMCk7Cit9CisKKy8qKgorKgorKiBmdW5jdGlvbiBuYW1lOiBUbnNEZXRlY3QKKyogZGVzY3JpcHRpb246ICBDYWxjdWxhdGUgVE5TIGZpbHRlciBhbmQgZGVjaWRlIG9uIFROUyB1c2FnZSAKKyogcmV0dXJuczoJCTAgaWYgc3VjY2VzcworKgorKi8KK1dvcmQzMiBUbnNEZXRlY3QoVE5TX0RBVEEqIHRuc0RhdGEsICAgICAgICAvKiE8IHRucyBkYXRhIHN0cnVjdHVyZSAobW9kaWZpZWQpICovCisgICAgICAgICAgICAgICAgIFROU19DT05GSUcgdEMsICAgICAgICAgICAgLyohPCB0bnMgY29uZmlnIHN0cnVjdHVyZSAqLworICAgICAgICAgICAgICAgICBXb3JkMzIqIHBTY3JhdGNoVG5zLCAgICAgIC8qITwgcG9pbnRlciB0byBzY3JhdGNoIHNwYWNlICovCisgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBzZmJPZmZzZXRbXSwgLyohPCBzY2FsZWZhY3RvciBzaXplIGFuZCB0YWJsZSAqLworICAgICAgICAgICAgICAgICBXb3JkMzIqIHNwZWN0cnVtLCAgICAgICAgIC8qITwgc3BlY3RyYWwgZGF0YSAqLworICAgICAgICAgICAgICAgICBXb3JkMTYgc3ViQmxvY2tOdW1iZXIsICAgIC8qITwgc3ViYmxvY2sgbnVtICovCisgICAgICAgICAgICAgICAgIFdvcmQxNiBibG9ja1R5cGUsICAgICAgICAgLyohPCBibG9ja3R5cGUgKGxvbmcgb3Igc2hvcnQpICovCisgICAgICAgICAgICAgICAgIFdvcmQzMiAqIHNmYkVuZXJneSkgICAgICAgLyohPCBzZmItd2lzZSBlbmVyZ3kgKi8KK3sKKworICBXb3JkMzIgIHByZWRpY3Rpb25HYWluOworICBXb3JkMzIgIHRlbXA7CisgIFdvcmQzMiogcFdvcmszMiA9ICZwU2NyYXRjaFRuc1tzdWJCbG9ja051bWJlciA+PiA4XTsKKyAgV29yZDE2KiBwV2VpZ2h0ZWRTcGVjdHJ1bSA9IChXb3JkMTYgKikmcFNjcmF0Y2hUbnNbc3ViQmxvY2tOdW1iZXIgPj4gOF07CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaWYgKHRDLnRuc0FjdGl2ZSkgeworICAgIENhbGNXZWlnaHRlZFNwZWN0cnVtKHNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBXZWlnaHRlZFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdEMubHBjU3RhcnRMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRDLmxwY1N0b3BMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRDLmxwY1N0YXJ0QmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0Qy5scGNTdG9wQmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwV29yazMyKTsKKworICAgIHRlbXAgPSBibG9ja1R5cGUgLSBTSE9SVF9XSU5ET1c7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmICggdGVtcCAhPSAwICkgeworICAgICAgICBwcmVkaWN0aW9uR2FpbiA9IENhbGNUbnNGaWx0ZXIoICZwV2VpZ2h0ZWRTcGVjdHJ1bVt0Qy5scGNTdGFydExpbmVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRDLmFjZldpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Qy5scGNTdG9wTGluZSAtIHRDLmxwY1N0YXJ0TGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Qy5tYXhPcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvLnBhcmNvcik7CisKKworICAgICAgICB0ZW1wID0gcHJlZGljdGlvbkdhaW4gLSB0Qy50aHJlc2hvbGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKCB0ZW1wID4gMCApIHsKKyAgICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvLnRuc0FjdGl2ZSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvLnRuc0FjdGl2ZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm8ucHJlZGljdGlvbkdhaW4gPSBwcmVkaWN0aW9uR2FpbjsgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICAgIGVsc2V7CisKKyAgICAgICAgcHJlZGljdGlvbkdhaW4gPSBDYWxjVG5zRmlsdGVyKCAmcFdlaWdodGVkU3BlY3RydW1bdEMubHBjU3RhcnRMaW5lXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Qy5hY2ZXaW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdEMubHBjU3RvcExpbmUgLSB0Qy5scGNTdGFydExpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdEMubWF4T3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5zRGF0YS0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bc3ViQmxvY2tOdW1iZXJdLnBhcmNvcik7CisKKyAgICAgICAgdGVtcCA9IHByZWRpY3Rpb25HYWluIC0gdEMudGhyZXNob2xkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKCB0ZW1wID4gMCApIHsKKyAgICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc1Nob3J0LnN1YkJsb2NrSW5mb1tzdWJCbG9ja051bWJlcl0udG5zQWN0aXZlID0gMTsgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc1Nob3J0LnN1YkJsb2NrSW5mb1tzdWJCbG9ja051bWJlcl0udG5zQWN0aXZlID0gMDsgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zU2hvcnQuc3ViQmxvY2tJbmZvW3N1YkJsb2NrTnVtYmVyXS5wcmVkaWN0aW9uR2FpbiA9IHByZWRpY3Rpb25HYWluOyAgICAgCisgICAgfQorCisgIH0KKyAgZWxzZXsKKworICAgIHRlbXAgPSBibG9ja1R5cGUgLSBTSE9SVF9XSU5ET1c7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmICggdGVtcCAhPSAwICkgeworICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvLnRuc0FjdGl2ZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvLnByZWRpY3Rpb25HYWluID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdG5zRGF0YS0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bc3ViQmxvY2tOdW1iZXJdLnRuc0FjdGl2ZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgdG5zRGF0YS0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bc3ViQmxvY2tOdW1iZXJdLnByZWRpY3Rpb25HYWluID0gMDsgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKworICByZXR1cm4oMCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFRuc1N5bmMKKyogZGVzY3JpcHRpb246IHVwZGF0ZSB0bnMgcGFyYW1ldGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgVG5zU3luYyhUTlNfREFUQSAqdG5zRGF0YURlc3QsCisgICAgICAgICAgICAgY29uc3QgVE5TX0RBVEEgKnRuc0RhdGFTcmMsCisgICAgICAgICAgICAgY29uc3QgVE5TX0NPTkZJRyB0QywKKyAgICAgICAgICAgICBjb25zdCBXb3JkMTYgc3ViQmxvY2tOdW1iZXIsCisgICAgICAgICAgICAgY29uc3QgV29yZDE2IGJsb2NrVHlwZSkKK3sKKyAgIFROU19TVUJCTE9DS19JTkZPICpzYkluZm9EZXN0OworICAgY29uc3QgVE5TX1NVQkJMT0NLX0lORk8gKnNiSW5mb1NyYzsKKyAgIFdvcmQzMiBpLCB0ZW1wOworCisgICB0ZW1wID0gIGJsb2NrVHlwZSAtIFNIT1JUX1dJTkRPVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgaWYgKCB0ZW1wICE9IDAgKSB7CisgICAgICBzYkluZm9EZXN0ID0gJnRuc0RhdGFEZXN0LT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBzYkluZm9TcmMgID0gJnRuc0RhdGFTcmMtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICB9CisgICBlbHNlIHsKKyAgICAgIHNiSW5mb0Rlc3QgPSAmdG5zRGF0YURlc3QtPmRhdGFSYXcudG5zU2hvcnQuc3ViQmxvY2tJbmZvW3N1YkJsb2NrTnVtYmVyXTsgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHNiSW5mb1NyYyAgPSAmdG5zRGF0YVNyYy0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bc3ViQmxvY2tOdW1iZXJdOyAgICAgICAgICAgICAgICAgICAgICAKKyAgIH0KKworICAgaWYgKDEwMCphYnNfcyhzYkluZm9EZXN0LT5wcmVkaWN0aW9uR2FpbiAtIHNiSW5mb1NyYy0+cHJlZGljdGlvbkdhaW4pIDwKKyAgICAgICAoMyAqIHNiSW5mb0Rlc3QtPnByZWRpY3Rpb25HYWluKSkgeworICAgICAgc2JJbmZvRGVzdC0+dG5zQWN0aXZlID0gc2JJbmZvU3JjLT50bnNBY3RpdmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgZm9yICggaT0wOyBpPCB0Qy5tYXhPcmRlcjsgaSsrKSB7CisgICAgICAgIHNiSW5mb0Rlc3QtPnBhcmNvcltpXSA9IHNiSW5mb1NyYy0+cGFyY29yW2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB9CisgICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBUbnNFbmNvZGUKKyogZGVzY3JpcHRpb246IGRvIFROUyBmaWx0ZXJpbmcKKyogcmV0dXJuczogICAgIDAgaWYgc3VjY2VzcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgVG5zRW5jb2RlKFROU19JTkZPKiB0bnNJbmZvLCAgICAgLyohPCB0bnMgaW5mbyBzdHJ1Y3R1cmUgKG1vZGlmaWVkKSAqLworICAgICAgICAgICAgICAgICBUTlNfREFUQSogdG5zRGF0YSwgICAgIC8qITwgdG5zIGRhdGEgc3RydWN0dXJlIChtb2RpZmllZCkgKi8KKyAgICAgICAgICAgICAgICAgV29yZDE2IG51bU9mU2ZiLCAgICAgICAvKiE8IG51bWJlciBvZiBzY2FsZSBmYWN0b3IgYmFuZHMgKi8KKyAgICAgICAgICAgICAgICAgVE5TX0NPTkZJRyB0QywgICAgICAgICAvKiE8IHRucyBjb25maWcgc3RydWN0dXJlICovCisgICAgICAgICAgICAgICAgIFdvcmQxNiBsb3dQYXNzTGluZSwgICAgLyohPCBsb3dwYXNzIGxpbmUgKi8KKyAgICAgICAgICAgICAgICAgV29yZDMyKiBzcGVjdHJ1bSwgICAgICAvKiE8IHNwZWN0cmFsIGRhdGEgKG1vZGlmaWVkKSAqLworICAgICAgICAgICAgICAgICBXb3JkMTYgc3ViQmxvY2tOdW1iZXIsIC8qITwgc3ViYmxvY2sgbnVtICovCisgICAgICAgICAgICAgICAgIFdvcmQxNiBibG9ja1R5cGUpICAgICAgLyohPCBibG9ja3R5cGUgKGxvbmcgb3Igc2hvcnQpICovCit7CisgIFdvcmQzMiBpOworICBXb3JkMzIgdGVtcF9zOworICBXb3JkMzIgdGVtcDsNCisgIFROU19TVUJCTE9DS19JTkZPICpwc3ViQmxvY2tJbmZvOworCisgIHRlbXBfcyA9IGJsb2NrVHlwZSAtIFNIT1JUX1dJTkRPVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlmICggdGVtcF9zICE9IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgcHN1YkJsb2NrSW5mbyA9ICZ0bnNEYXRhLT5kYXRhUmF3LnRuc0xvbmcuc3ViQmxvY2tJbmZvOw0KKwlpZiAocHN1YkJsb2NrSW5mby0+dG5zQWN0aXZlID09IDApIHsKKyAgICAgIHRuc0luZm8tPnRuc0FjdGl2ZVtzdWJCbG9ja051bWJlcl0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHJldHVybigwKTsKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgIFBhcmNvcjJJbmRleChwc3ViQmxvY2tJbmZvLT5wYXJjb3IsCisgICAgICAgICAgICAgICAgICAgdG5zSW5mby0+Y29lZiwKKyAgICAgICAgICAgICAgICAgICB0Qy5tYXhPcmRlciwKKyAgICAgICAgICAgICAgICAgICB0Qy5jb2VmUmVzKTsKKworICAgICAgSW5kZXgyUGFyY29yKHRuc0luZm8tPmNvZWYsCisgICAgICAgICAgICAgICAgICAgcHN1YkJsb2NrSW5mby0+cGFyY29yLAorICAgICAgICAgICAgICAgICAgIHRDLm1heE9yZGVyLAorICAgICAgICAgICAgICAgICAgIHRDLmNvZWZSZXMpOworCisgICAgICBmb3IgKGk9dEMubWF4T3JkZXIgLSAxOyBpPj0wOyBpLS0pICB7CisgICAgICAgIHRlbXAgPSBwc3ViQmxvY2tJbmZvLT5wYXJjb3JbaV0gLSBUTlNfUEFSQ09SX1RIUkVTSDsgICAgICAgICAKKyAgICAgICAgaWYgKCB0ZW1wID4gMCApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHRlbXAgPSBwc3ViQmxvY2tJbmZvLT5wYXJjb3JbaV0gKyBUTlNfUEFSQ09SX1RIUkVTSDsgICAgICAgICAKKyAgICAgICAgaWYgKCB0ZW1wIDwgMCApCisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICB0bnNJbmZvLT5vcmRlcltzdWJCbG9ja051bWJlcl0gPSBpICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKworICAgICAgdG5zSW5mby0+dG5zQWN0aXZlW3N1YkJsb2NrTnVtYmVyXSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgZm9yIChpPXN1YkJsb2NrTnVtYmVyKzE7IGk8VFJBTlNfRkFDOyBpKyspIHsKKyAgICAgICAgdG5zSW5mby0+dG5zQWN0aXZlW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICAgIHRuc0luZm8tPmNvZWZSZXNbc3ViQmxvY2tOdW1iZXJdID0gdEMuY29lZlJlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHRuc0luZm8tPmxlbmd0aFtzdWJCbG9ja051bWJlcl0gPSBudW1PZlNmYiAtIHRDLnRuc1N0YXJ0QmFuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworCisgICAgICBBbmFseXNpc0ZpbHRlckxhdHRpY2UoJihzcGVjdHJ1bVt0Qy50bnNTdGFydExpbmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWluKHRDLnRuc1N0b3BMaW5lLGxvd1Bhc3NMaW5lKSAtIHRDLnRuc1N0YXJ0TGluZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN1YkJsb2NrSW5mby0+cGFyY29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuc0luZm8tPm9yZGVyW3N1YkJsb2NrTnVtYmVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHNwZWN0cnVtW3RDLnRuc1N0YXJ0TGluZV0pKTsKKworICAgIH0KKyAgfSAgICAgLyogaWYgKGJsb2NrVHlwZSE9U0hPUlRfV0lORE9XKSAqLworICBlbHNlIC8qc2hvcnQgYmxvY2sqLyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHBzdWJCbG9ja0luZm8gPSAmdG5zRGF0YS0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bc3ViQmxvY2tOdW1iZXJdOw0KKwlpZiAocHN1YkJsb2NrSW5mby0+dG5zQWN0aXZlID09IDApIHsKKyAgICAgIHRuc0luZm8tPnRuc0FjdGl2ZVtzdWJCbG9ja051bWJlcl0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHJldHVybigwKTsKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgIFBhcmNvcjJJbmRleChwc3ViQmxvY2tJbmZvLT5wYXJjb3IsCisgICAgICAgICAgICAgICAgICAgJnRuc0luZm8tPmNvZWZbc3ViQmxvY2tOdW1iZXIqVE5TX01BWF9PUkRFUl9TSE9SVF0sCisgICAgICAgICAgICAgICAgICAgdEMubWF4T3JkZXIsCisgICAgICAgICAgICAgICAgICAgdEMuY29lZlJlcyk7CisKKyAgICAgIEluZGV4MlBhcmNvcigmdG5zSW5mby0+Y29lZltzdWJCbG9ja051bWJlcipUTlNfTUFYX09SREVSX1NIT1JUXSwKKyAgICAgICAgICAgICAgICAgICBwc3ViQmxvY2tJbmZvLT5wYXJjb3IsCisgICAgICAgICAgICAgICAgICAgdEMubWF4T3JkZXIsCisgICAgICAgICAgICAgICAgICAgdEMuY29lZlJlcyk7CisgICAgICBmb3IgKGk9KHRDLm1heE9yZGVyIC0gMSk7IGk+PTA7IGktLSkgIHsKKyAgICAgICAgdGVtcCA9IHBzdWJCbG9ja0luZm8tPnBhcmNvcltpXSAtIFROU19QQVJDT1JfVEhSRVNIOyAgICAKKyAgICAgICAgIGlmICggdGVtcCA+IDAgKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHRlbXAgPSBwc3ViQmxvY2tJbmZvLT5wYXJjb3JbaV0gKyBUTlNfUEFSQ09SX1RIUkVTSDsgICAgCisgICAgICAgIGlmICggdGVtcCA8IDAgKQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgdG5zSW5mby0+b3JkZXJbc3ViQmxvY2tOdW1iZXJdID0gaSArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICB0bnNJbmZvLT50bnNBY3RpdmVbc3ViQmxvY2tOdW1iZXJdID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB0bnNJbmZvLT5jb2VmUmVzW3N1YkJsb2NrTnVtYmVyXSA9IHRDLmNvZWZSZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB0bnNJbmZvLT5sZW5ndGhbc3ViQmxvY2tOdW1iZXJdID0gbnVtT2ZTZmIgLSB0Qy50bnNTdGFydEJhbmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworCisgICAgICBBbmFseXNpc0ZpbHRlckxhdHRpY2UoJihzcGVjdHJ1bVt0Qy50bnNTdGFydExpbmVdKSwgKHRDLnRuc1N0b3BMaW5lIC0gdEMudG5zU3RhcnRMaW5lKSwKKyAgICAgICAgICAgICAgICAgcHN1YkJsb2NrSW5mby0+cGFyY29yLAorICAgICAgICAgICAgICAgICB0bnNJbmZvLT5vcmRlcltzdWJCbG9ja051bWJlcl0sCisgICAgICAgICAgICAgICAgICYoc3BlY3RydW1bdEMudG5zU3RhcnRMaW5lXSkpOworCisgICAgfQorICB9CisKKyAgcmV0dXJuKDApOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBtX3BvdzJfY29yZGljCisqIGRlc2NyaXB0aW9uOiBJdGVyYXRpdmUgcG93ZXIgZnVuY3Rpb24KKyoKKyoJQ2FsY3VsYXRlcyBwb3coMi4wLHgtMS4wKihzY2FsZSsxKSkgd2l0aCBJTlRfQklUUyBiaXQgcHJlY2lzaW9uCisqCXVzaW5nIG1vZGlmaWVkIGNvcmRpYyBhbGdvcml0aG0KKyogcmV0dXJuczogICAgIHRoZSByZXN1bHQgb2YgcG93MgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDMyIG1fcG93Ml9jb3JkaWMoV29yZDMyIHgsIFdvcmQxNiBzY2FsZSkKK3sKKyAgV29yZDMyIGs7CisKKyAgV29yZDMyIGFjY3VfeSA9IDB4NDAwMDAwMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGFjY3VfeSA9IExfc2hyKGFjY3VfeSxzY2FsZSk7CisKKyAgZm9yKGs9MTsgazxJTlRfQklUUzsgaysrKSB7CisgICAgY29uc3QgV29yZDMyIHogPSBtX2xvZzJfdGFibGVba107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgd2hpbGUoTF9zdWIoeCx6KSA+PSAwKSB7CisgICAgICAgCisgICAgICB4ID0gTF9zdWIoeCwgeik7CisgICAgICBhY2N1X3kgPSBMX2FkZChhY2N1X3ksIChhY2N1X3kgPj4gaykpOworICAgIH0KKyAgfQorICByZXR1cm4oYWNjdV95KTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQ2FsY1dlaWdodGVkU3BlY3RydW0KKyogZGVzY3JpcHRpb246IENhbGN1bGF0ZSB3ZWlnaHRlZCBzcGVjdHJ1bSBmb3IgTFBDIGNhbGN1bGF0aW9uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIENhbGNXZWlnaHRlZFNwZWN0cnVtKGNvbnN0IFdvcmQzMiAgc3BlY3RydW1bXSwgICAgICAgICAvKiE8IGlucHV0IHNwZWN0cnVtICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgIHdlaWdodGVkU3BlY3RydW1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqc2ZiRW5lcmd5LCAgICAgICAgICAvKiE8IHNmYiBlbmVyZ2llcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgIGxwY1N0YXJ0TGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgbHBjU3RvcExpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgIGxwY1N0YXJ0QmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgbHBjU3RvcEJhbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKnBXb3JrMzIpCit7CisgICAgI2RlZmluZSBJTlRfQklUU19TQ0FMIDE8PChJTlRfQklUUy8yKQorCisgICAgV29yZDMyIGksIHNmYiwgc2hpZnQ7CisgICAgV29yZDMyIG1heFNoaWZ0OworICAgIFdvcmQzMiB0bXBfcywgdG1wMl9zOworICAgIFdvcmQzMiB0bXAsIHRtcDI7CisgICAgV29yZDMyIG1heFdTOworICAgIFdvcmQzMiB0bnNTZmJNZWFuW01BWF9TRkJdOyAgICAvKiBsZW5ndGggW2xwY1N0b3BCYW5kLWxwY1N0YXJ0QmFuZF0gc2hvdWxkIGJlIHN1ZmZpY2llbnQgaGVyZSAqLworCisgICAgbWF4V1MgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIAorICAgIC8qIGNhbGMgMS4wKjJeLUlOVF9CSVRTLzIvc3FydChlbikgKi8KKyAgICBmb3IoIHNmYiA9IGxwY1N0YXJ0QmFuZDsgc2ZiIDwgbHBjU3RvcEJhbmQ7IHNmYisrKSB7CisKKyAgICAgIHRtcDIgPSBzZmJFbmVyZ3lbc2ZiXSAtIDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBpZiggdG1wMiA+IDApIHsKKyAgICAgICAgdG1wID0gcnNxcnQoc2ZiRW5lcmd5W3NmYl0sIElOVF9CSVRTKTsKKwkJaWYodG1wID4gSU5UX0JJVFNfU0NBTCkgDQorCQl7DQorCQkJc2hpZnQgPSAgbm9ybV9sKHRtcCk7DQorCQkJdG1wID0gRGl2XzMyKCBJTlRfQklUU19TQ0FMIDw8IHNoaWZ0LCB0bXAgPDwgc2hpZnQgKTsgCisJCX0KKwkJZWxzZQorCQl7CisJCQl0bXAgPSAweDdmZmZmZmZmOyAKKwkJfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRtcCA9IDB4N2ZmZmZmZmY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB9IAorICAgICAgdG5zU2ZiTWVhbltzZmJdID0gdG1wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKworICAgIC8qIHNwcmVhZCBub3JtYWxpemVkIHZhbHVlcyBmcm9tIHNmYnMgdG8gbGluZXMgKi8KKyAgICBzZmIgPSBscGNTdGFydEJhbmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB0bXAgPSB0bnNTZmJNZWFuW3NmYl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmb3IgKCBpPWxwY1N0YXJ0TGluZTsgaTxscGNTdG9wTGluZTsgaSsrKXsKKyAgICAgIHRtcF9zID0gc2ZiT2Zmc2V0W3NmYiArIDFdIC0gaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGlmICggdG1wX3MgPT0gMCApIHsKKyAgICAgICAgc2ZiID0gc2ZiICsgMTsKKyAgICAgICAgdG1wMl9zID0gc2ZiICsgMSAtIGxwY1N0b3BCYW5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKHRtcDJfcyA8PSAwKSB7CisgICAgICAgICAgdG1wID0gdG5zU2ZiTWVhbltzZmJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHBXb3JrMzJbaV0gPSB0bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgLypmaWx0ZXIgZG93biovCisgICAgZm9yIChpPShscGNTdG9wTGluZSAtIDIpOyBpPj1scGNTdGFydExpbmU7IGktLSl7CisgICAgICAgIHBXb3JrMzJbaV0gPSAocFdvcmszMltpXSArIHBXb3JrMzJbaSArIDFdKSA+PiAxOworICAgIH0KKyAgICAvKiBmaWx0ZXIgdXAgKi8KKyAgICBmb3IgKGk9KGxwY1N0YXJ0TGluZSArIDEpOyBpPGxwY1N0b3BMaW5lOyBpKyspeworICAgICAgIHBXb3JrMzJbaV0gPSAocFdvcmszMltpXSArIHBXb3JrMzJbaSAtIDFdKSA+PiAxOworICAgIH0KKworICAgIC8qIHdlaWdodCBhbmQgbm9ybWFsaXplICovCisgICAgZm9yIChpPWxwY1N0YXJ0TGluZTsgaTxscGNTdG9wTGluZTsgaSsrKXsKKyAgICAgIHBXb3JrMzJbaV0gPSBNVUxISUdIKHBXb3JrMzJbaV0sIHNwZWN0cnVtW2ldKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBtYXhXUyB8PSBMX2FicyhwV29yazMyW2ldKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICAgIG1heFNoaWZ0ID0gbm9ybV9sKG1heFdTKTsKKw0KKwltYXhTaGlmdCA9IDE2IC0gbWF4U2hpZnQ7DQorICAgIGlmKG1heFNoaWZ0ID49IDApDQorCXsNCisJCWZvciAoaT1scGNTdGFydExpbmU7IGk8bHBjU3RvcExpbmU7IGkrKyl7DQorCQkJd2VpZ2h0ZWRTcGVjdHJ1bVtpXSA9IHBXb3JrMzJbaV0gPj4gbWF4U2hpZnQ7DQorCQl9DQorICAgIH0NCisJZWxzZQ0KKwl7DQorCQltYXhTaGlmdCA9IC1tYXhTaGlmdDsNCisJCWZvciAoaT1scGNTdGFydExpbmU7IGk8bHBjU3RvcExpbmU7IGkrKyl7DQorCQkJd2VpZ2h0ZWRTcGVjdHJ1bVtpXSA9IHNhdHVyYXRlKHBXb3JrMzJbaV0gPDwgbWF4U2hpZnQpOw0KKwkJfQ0KKwl9Cit9CisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBDYWxjVG5zRmlsdGVyCisqIGRlc2NyaXB0aW9uOiAgTFBDIGNhbGN1bGF0aW9uIGZvciBvbmUgVE5TIGZpbHRlcgorKiByZXR1cm5zOiAgICAgIHByZWRpY3Rpb24gZ2FpbgorKiBpbnB1dDogICAgICAgIHNpZ25hbCBzcGVjdHJ1bSwgYWNmIHdpbmRvdywgbm8uIG9mIHNwZWN0cmFsIGxpbmVzLAorKiAgICAgICAgICAgICAgICBtYXguIFROUyBvcmRlciwgcHRyLiB0byByZWZsZWN0aW9uIG9jZWZmaWNpZW50cworKiBvdXRwdXQ6ICAgICAgIHJlZmxlY3Rpb24gY29lZmZpY2llbnRzCisqKGhhbGYpIHdpbmRvdyBzaXplIG11c3QgYmUgbGFyZ2VyIHRoYW4gdG5zT3JkZXIgISEqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBXb3JkMTYgQ2FsY1Ruc0ZpbHRlcihjb25zdCBXb3JkMTYgKnNpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgd2luZG93W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG51bU9mTGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHRuc09yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBwYXJjb3JbXSkKK3sKKyAgV29yZDMyIHBhcmNvcldvcmtCdWZmZXJbMipUTlNfTUFYX09SREVSKzFdOworICBXb3JkMzIgcHJlZGljdGlvbkdhaW47CisgIFdvcmQzMiBpOworICBXb3JkMzIgdG5zT3JkZXJQbHVzMSA9IHRuc09yZGVyICsgMTsKKworICBhc3NlcnQodG5zT3JkZXIgPD0gVE5TX01BWF9PUkRFUik7ICAgICAgLyogcmVtb3ZlIGFzc2VydHMgbGF0ZXI/IChidGcpICovCisKKyAgZm9yKGk9MDtpPHRuc09yZGVyO2krKykgeworICAgIHBhcmNvcltpXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgQXV0b0NvcnJlbGF0aW9uKHNpZ25hbCwgcGFyY29yV29ya0J1ZmZlciwgbnVtT2ZMaW5lcywgdG5zT3JkZXJQbHVzMSk7CisKKyAgLyogZWFybHkgcmV0dXJuIGlmIHNpZ25hbCBpcyB2ZXJ5IGxvdzogc2lnbmFsIHByZWRpY3Rpb24gb2ZmLCB3aXRoIHplcm8gcGFyY29yIGNvZWZmcyAqLworICBpZiAocGFyY29yV29ya0J1ZmZlclswXSA9PSAwKQorICAgIHJldHVybiAwOworCisgIHByZWRpY3Rpb25HYWluID0gQXV0b1RvUGFyY29yKHBhcmNvcldvcmtCdWZmZXIsIHBhcmNvciwgdG5zT3JkZXIpOworCisgIHJldHVybihwcmVkaWN0aW9uR2Fpbik7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBBdXRvQ29ycmVsYXRpb24KKyogZGVzY3JpcHRpb246ICBjYWxjLiBhdXRvY29ycmVsYXRpb24gKGFjZikKKyogcmV0dXJuczogICAgICAtCisqIGlucHV0OiAgICAgICAgaW5wdXQgdmFsdWVzLCBuby4gb2YgaW5wdXQgdmFsdWVzLCBuby4gb2YgYWNmIHZhbHVlcworKiBvdXRwdXQ6ICAgICAgIGFjZiB2YWx1ZXMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRlZiBBUk1WNUUNCit2b2lkIEF1dG9Db3JyZWxhdGlvbihjb25zdCBXb3JkMTYJCSBpbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICBjb3JyW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgIGNvcnJDb2VmZikgeworICBXb3JkMzIgaSwgaiwgaXNhbXBsZXM7CisgIFdvcmQzMiBhY2N1OworICBXb3JkMzIgc2NmOworCisgIHNjZiA9IDEwIC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorDQorICBpc2FtcGxlcyA9IHNhbXBsZXM7CisgIC8qIGNhbGMgZmlyc3QgY29yckNvZWY6ICBSWzBdID0gc3VtIHsgdFtpXSAqIHRbaV0gfSA7IGkgPSAwLi5OLTEgKi8KKyAgYWNjdSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yKGo9MDsgajxpc2FtcGxlczsgaisrKSB7CisgICAgYWNjdSA9IExfYWRkKGFjY3UsICgoaW5wdXRbal0gKiBpbnB1dFtqXSkgPj4gc2NmKSk7DQorICB9CisgIGNvcnJbMF0gPSBhY2N1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgLyogZWFybHkgdGVybWluYXRpb24gaWYgYWxsIGNvcnIgY29lZmZzIGFyZSBsaWtlbHkgZ29pbmcgdG8gYmUgemVybyAqLworICBpZihjb3JyWzBdID09IDApIHJldHVybiA7CisKKyAgLyogY2FsYyBhbGwgb3RoZXIgY29yckNvZWY6ICBSW2pdID0gc3VtIHsgdFtpXSAqIHRbaStqXSB9IDsgaSA9IDAuLihOLWotMSksIGo9MS4ucCAqLworICBmb3IoaT0xOyBpPGNvcnJDb2VmZjsgaSsrKSB7CisgICAgaXNhbXBsZXMgPSBpc2FtcGxlcyAtIDE7CisgICAgYWNjdSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZm9yKGo9MDsgajxpc2FtcGxlczsgaisrKSB7CisgICAgICBhY2N1ID0gTF9hZGQoYWNjdSwgKChpbnB1dFtqXSAqIGlucHV0W2oraV0pID4+IHNjZikpOw0KKyAgICB9CisgICAgY29ycltpXSA9IGFjY3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KK30gICAgCisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEF1dG9Ub1BhcmNvcgorKiBkZXNjcmlwdGlvbjogIGNvbnZlcnNpb24gYXV0b2NvcnJlbGF0aW9uIHRvIHJlZmxlY3Rpb24gY29lZmZpY2llbnRzCisqIHJldHVybnM6ICAgICAgcHJlZGljdGlvbiBnYWluCisqIGlucHV0OiAgICAgICAgPG9yZGVyKzE+IGlucHV0IHZhbHVlcywgbm8uIG9mIG91dHB1dCB2YWx1ZXMgKD1vcmRlciksCisqICAgICAgICAgICAgICAgcHRyLiB0byB3b3JrYnVmZmVyIChyZXF1aXJlZCBzaXplOiAyKm9yZGVyKQorKiBvdXRwdXQ6ICAgICAgIDxvcmRlcj4gcmVmbGVjdGlvbiBjb2VmZmljaWVudHMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBBdXRvVG9QYXJjb3IoV29yZDMyIHdvcmtCdWZmZXJbXSwgV29yZDMyIHJlZmxDb2VmZltdLCBXb3JkMTYgbnVtT2ZDb2VmZikgeworCisgIFdvcmQzMiBpLCBqLCBzaGlmdDsKKyAgV29yZDMyICpwV29ya0J1ZmZlcjsgLyogdGVtcCBwb2ludGVyICovCisgIFdvcmQzMiBwcmVkaWN0aW9uR2FpbiA9IDA7CisgIFdvcmQzMiBudW0sIGRlbm9tOworICBXb3JkMzIgdGVtcCwgd29ya0J1ZmZlcjA7CisgICAKKworICBudW0gPSB3b3JrQnVmZmVyWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB0ZW1wID0gd29ya0J1ZmZlcltudW1PZkNvZWZmXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvcihpPTA7IGk8bnVtT2ZDb2VmZi0xOyBpKyspIHsKKyAgICB3b3JrQnVmZmVyW2kgKyBudW1PZkNvZWZmXSA9IHdvcmtCdWZmZXJbaSArIDFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorICB3b3JrQnVmZmVyW2kgKyBudW1PZkNvZWZmXSA9IHRlbXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIAorICBmb3IoaT0wOyBpPG51bU9mQ29lZmY7IGkrKykgeworICAgIFdvcmQzMiByZWZjOworCisgICAgIAorICAgIGlmICh3b3JrQnVmZmVyWzBdIDwgTF9hYnMod29ya0J1ZmZlcltpICsgbnVtT2ZDb2VmZl0pKSB7CisgICAgICByZXR1cm4gMCA7CisgICAgfQorCXNoaWZ0ID0gbm9ybV9sKHdvcmtCdWZmZXJbMF0pOw0KKwl3b3JrQnVmZmVyMCA9IERpdl8zMigxIDw8IHNoaWZ0LCB3b3JrQnVmZmVyWzBdIDw8IHNoaWZ0KTsKKyAgICAvKiBjYWxjdWxhdGUgcmVmYyA9IC13b3JrQnVmZmVyW251bU9mQ29lZmYraV0gLyB3b3JrQnVmZmVyWzBdOyAtMSA8PSByZWZjIDwgMSAqLworCXJlZmMgPSBMX25lZ2F0ZShmaXhtdWwod29ya0J1ZmZlcltudW1PZkNvZWZmICsgaV0sIHdvcmtCdWZmZXIwKSk7CisKKyAgICByZWZsQ29lZmZbaV0gPSByZWZjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgcFdvcmtCdWZmZXIgPSAmKHdvcmtCdWZmZXJbbnVtT2ZDb2VmZl0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICBmb3Ioaj1pOyBqPG51bU9mQ29lZmY7IGorKykgeworICAgICAgV29yZDMyIGFjY3UxLCBhY2N1MjsKKyAgICAgIGFjY3UxID0gTF9hZGQocFdvcmtCdWZmZXJbal0sIGZpeG11bChyZWZjLCB3b3JrQnVmZmVyW2ogLSBpXSkpOworICAgICAgYWNjdTIgPSBMX2FkZCh3b3JrQnVmZmVyW2ogLSBpXSwgZml4bXVsKHJlZmMsIHBXb3JrQnVmZmVyW2pdKSk7CisgICAgICBwV29ya0J1ZmZlcltqXSA9IGFjY3UxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB3b3JrQnVmZmVyW2ogLSBpXSA9IGFjY3UyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisKKyAgZGVub20gPSBNVUxISUdIKHdvcmtCdWZmZXJbMF0sIE5PUk1fQ09FRik7CisgICAKKyAgaWYgKGRlbm9tICE9IDApIHsKKyAgICBXb3JkMzIgdGVtcDsNCisJc2hpZnQgPSBub3JtX2woZGVub20pOw0KKwl0ZW1wID0gRGl2XzMyKDEgPDwgc2hpZnQsIGRlbm9tIDw8IHNoaWZ0KTsKKyAgICBwcmVkaWN0aW9uR2FpbiA9IGZpeG11bChudW0sIHRlbXApOworICB9CisKKyAgcmV0dXJuIGV4dHJhY3RfbChwcmVkaWN0aW9uR2Fpbik7Cit9CisKKworCitzdGF0aWMgV29yZDE2IFNlYXJjaDMoV29yZDMyIHBhcmNvcikKK3sKKyAgV29yZDMyIGluZGV4ID0gMDsKKyAgV29yZDMyIGk7CisgIFdvcmQzMiB0ZW1wOworICAgCisgIGZvciAoaT0wO2k8ODtpKyspIHsKKyAgICB0ZW1wID0gTF9zdWIoIHBhcmNvciwgdG5zQ29lZmYzQm9yZGVyc1tpXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpZiAodGVtcCA+IDApCisgICAgICBpbmRleD1pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKyAgcmV0dXJuIGV4dHJhY3RfbChpbmRleCAtIDQpOworfQorCitzdGF0aWMgV29yZDE2IFNlYXJjaDQoV29yZDMyIHBhcmNvcikKK3sKKyAgV29yZDMyIGluZGV4ID0gMDsKKyAgV29yZDMyIGk7CisgIFdvcmQzMiB0ZW1wOworICAgCisKKyAgZm9yIChpPTA7aTwxNjtpKyspIHsKKyAgICB0ZW1wID0gTF9zdWIocGFyY29yLCB0bnNDb2VmZjRCb3JkZXJzW2ldKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpZiAodGVtcCA+IDApCisgICAgICBpbmRleD1pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKyAgcmV0dXJuIGV4dHJhY3RfbChpbmRleCAtIDgpOworfQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9ubmFtZTogUGFyY29yMkluZGV4CisqIGRlc2NyaXB0aW9uOiAgcXVhbnRpemF0aW9uIGluZGV4IGZvciByZWZsZWN0aW9uIGNvZWZmaWNpZW50cworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBQYXJjb3IySW5kZXgoY29uc3QgV29yZDMyIHBhcmNvcltdLCAgIC8qITwgcGFyY29yIGNvZWZmaWNpZW50cyAqLworICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBpbmRleFtdLCAgICAgICAgICAvKiE8IHF1YW50aXplZCBjb2VmZiBpbmRpY2VzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG9yZGVyLCAgICAgICAgICAgIC8qITwgZmlsdGVyIG9yZGVyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGJpdHNQZXJDb2VmZikgeyAgIC8qITwgcXVhbnRpemVyIHJlc29sdXRpb24gKi8KKyAgV29yZDMyIGk7CisgIFdvcmQzMiB0ZW1wOworCisgIGZvcihpPTA7IGk8b3JkZXI7IGkrKykgeworICAgIHRlbXAgPSBiaXRzUGVyQ29lZmYgLSAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgaWYgKHRlbXAgPT0gMCkgeworICAgICAgaW5kZXhbaV0gPSBTZWFyY2gzKHBhcmNvcltpXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0gCisgICAgZWxzZSB7CisgICAgICBpbmRleFtpXSA9IFNlYXJjaDQocGFyY29yW2ldKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbm5hbWU6IEluZGV4MlBhcmNvcgorKiBkZXNjcmlwdGlvbjogIEludmVyc2UgcXVhbnRpemF0aW9uIGZvciByZWZsZWN0aW9uIGNvZWZmaWNpZW50cworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBJbmRleDJQYXJjb3IoY29uc3QgV29yZDE2IGluZGV4W10sICAvKiE8IHF1YW50aXplZCB2YWx1ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgcGFyY29yW10sICAgICAgIC8qITwgcHRyLiB0byByZWZsZWN0aW9uIGNvZWZmaWNpZW50cyAob3V0cHV0KSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBvcmRlciwgICAgICAgICAgLyohPCBuby4gb2YgY29lZmZpY2llbnRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGJpdHNQZXJDb2VmZikgICAvKiE8IHF1YW50aXplciByZXNvbHV0aW9uICovCit7CisgIFdvcmQzMiBpOworICBXb3JkMzIgdGVtcDsKKworICBmb3IgKGk9MDsgaTxvcmRlcjsgaSsrKSB7CisgICAgdGVtcCA9IGJpdHNQZXJDb2VmZiAtIDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgaWYgKCB0ZW1wID09IDAgKSB7CisgICAgICAgIHBhcmNvcltpXSA9IHRuc0NvZWZmNFtpbmRleFtpXSArIDhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwYXJjb3JbaV0gPSB0bnNDb2VmZjNbaW5kZXhbaV0gKyA0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb25uYW1lOiBGSVJMYXR0aWNlCisqIGRlc2NyaXB0aW9uOiAgaW4gcGxhY2UgbGF0dGljZSBmaWx0ZXJpbmcgb2Ygc3BlY3RyYWwgZGF0YQorKiByZXR1cm5zOgkJcG9pbnRlciB0byBtb2RpZmllZCBkYXRhCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMzIgRklSTGF0dGljZShXb3JkMTYgb3JkZXIsICAgICAgICAgICAvKiE8IGZpbHRlciBvcmRlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiB4LCAgICAgICAgICAgICAgIC8qITwgc3BlY3RyYWwgZGF0YSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqc3RhdGVfcGFyLCAgICAgIC8qITwgZmlsdGVyIHN0YXRlcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAqY29lZl9wYXIpIC8qITwgZmlsdGVyIGNvZWZmaWNpZW50cyAqLworeworICAgV29yZDMyIGk7CisgICBXb3JkMzIgYWNjdSx0bXAsdG1wU2F2ZTsKKworICAgeCA9IHggPj4gMTsKKyAgIHRtcFNhdmUgPSB4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgZm9yIChpPTA7IGk8KG9yZGVyIC0gMSk7IGkrKykgeworCisgICAgIHRtcCA9IExfYWRkKGZpeG11bChjb2VmX3BhcltpXSwgeCksIHN0YXRlX3BhcltpXSk7CisgICAgIHggICA9IExfYWRkKGZpeG11bChjb2VmX3BhcltpXSwgc3RhdGVfcGFyW2ldKSwgeCk7CisKKyAgICAgc3RhdGVfcGFyW2ldID0gdG1wU2F2ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgdG1wU2F2ZSA9IHRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIC8qIGxhc3Qgc3RhZ2U6IG9ubHkgbmVlZCBoYWxmIG9wZXJhdGlvbnMgKi8KKyAgYWNjdSA9IGZpeG11bChzdGF0ZV9wYXJbb3JkZXIgLSAxXSwgY29lZl9wYXJbKG9yZGVyIC0gMSldKTsKKyAgc3RhdGVfcGFyWyhvcmRlciAtIDEpXSA9IHRtcFNhdmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHggPSBMX2FkZChhY2N1LCB4KTsKKyAgeCA9IExfYWRkKHgsIHgpOworCisgIHJldHVybiB4OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb25uYW1lOiBBbmFseXNpc0ZpbHRlckxhdHRpY2UKKyogZGVzY3JpcHRpb246ICBmaWx0ZXJzIHNwZWN0cmFsIGxpbmVzIHdpdGggVE5TIGZpbHRlcgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBBbmFseXNpc0ZpbHRlckxhdHRpY2UoY29uc3QgIFdvcmQzMiBzaWduYWxbXSwgIC8qITwgaW5wdXQgc3BlY3RydW0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbnVtT2ZMaW5lcywgICAgICAgLyohPCBuby4gb2YgbGluZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAgV29yZDMyIHBhckNvZWZmW10sLyohPCBQQVJDIGNvZWZmaWNpZW50cyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBvcmRlciwgICAgICAgICAgICAvKiE8IGZpbHRlciBvcmRlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBvdXRwdXRbXSkgICAgICAgICAvKiE8IGZpbHRlcmVkIHNpZ25hbCB2YWx1ZXMgKi8KK3sKKworICBXb3JkMzIgc3RhdGVfcGFyW1ROU19NQVhfT1JERVJdOworICBXb3JkMzIgajsKKworICBmb3IgKCBqPTA7IGo8VE5TX01BWF9PUkRFUjsgaisrICkgeworICAgIHN0YXRlX3BhcltqXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgZm9yKGo9MDsgajxudW1PZkxpbmVzOyBqKyspIHsKKyAgICBvdXRwdXRbal0gPSBGSVJMYXR0aWNlKG9yZGVyLHNpZ25hbFtqXSxzdGF0ZV9wYXIscGFyQ29lZmYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb25uYW1lOiBBcHBseVRuc011bHRUYWJsZVRvUmF0aW9zCisqIGRlc2NyaXB0aW9uOiAgQ2hhbmdlIHRocmVzaG9sZHMgYWNjb3JkaW5nIHRvIHRucworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIEFwcGx5VG5zTXVsdFRhYmxlVG9SYXRpb3MoV29yZDE2IHN0YXJ0Q2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHN0b3BDYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfU1VCQkxPQ0tfSU5GTyBzdWJJbmZvLCAvKiE8IFROUyBzdWJibG9jayBpbmZvICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICp0aHJlc2hvbGRzKSAgICAgICAgLyohPCB0aHJlc2hvbGRzIChtb2RpZmllZCkgKi8KK3sKKyAgV29yZDMyIGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaWYgKHN1YkluZm8udG5zQWN0aXZlKSB7CisgICAgZm9yKGk9c3RhcnRDYjsgaTxzdG9wQ2I7IGkrKykgeworICAgICAgLyogdGhyZXNob2xkc1tpXSAqIDAuMjUgKi8KKyAgICAgIHRocmVzaG9sZHNbaV0gPSAodGhyZXNob2xkc1tpXSA+PiAyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3RyYW5zZm9ybS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvdHJhbnNmb3JtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxN2I1YQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3RyYW5zZm9ybS5jCkBAIC0wLDAgKzEsNjcyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl0cmFuc2Zvcm0uYw0KKw0KKwlDb250ZW50OglNRENUIFRyYW5zZm9ybSBmdW5jdGlvbnNzDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgInRyYW5zZm9ybS5oIgorI2luY2x1ZGUgImFhY19yb20uaCIKKw0KKw0KKyNkZWZpbmUgTFNfVFJBTlMgKChGUkFNRV9MRU5fTE9ORy1GUkFNRV9MRU5fU0hPUlQpLzIpIC8qIDQ0OCAqLw0KKyNkZWZpbmUgU1FSVDFfMiAweDVhODI3OTlhCS8qIHNxcnQoMS8yKSBpbiBRMzEgKi8NCisjZGVmaW5lIHN3YXAyKHAwLHAxKSBcDQorCXQgPSBwMDsgdDEgPSAqKCYocDApKzEpOwlcDQorCXAwID0gcDE7ICooJihwMCkrMSkgPSAqKCYocDEpKzEpOwlcDQorCXAxID0gdDsgKigmKHAxKSsxKSA9IHQxCQ0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBTaHVmZmxlCisqIGRlc2NyaXB0aW9uOiAgU2h1ZmZsZSBwb2ludHMgcHJlcGFyZWQgZnVuY3Rpb24gZm9yIGZmdAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIFNodWZmbGUoaW50ICpidWYsIGludCBudW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJpdFRhYikNCit7DQorICAgIGludCAqcGFydDAsICpwYXJ0MTsNCisJaW50IGksIGo7DQorCWludCB0LCB0MTsNCisNCisJcGFydDAgPSBidWY7DQorICAgIHBhcnQxID0gYnVmICsgbnVtOw0KKwkNCisJd2hpbGUgKChpID0gKmJpdFRhYisrKSAhPSAwKSB7DQorICAgICAgICBqID0gKmJpdFRhYisrOw0KKw0KKyAgICAgICAgc3dhcDIocGFydDBbNCppKzBdLCBwYXJ0MFs0KmorMF0pOwkNCisgICAgICAgIHN3YXAyKHBhcnQwWzQqaSsyXSwgcGFydDFbNCpqKzBdKTsJDQorICAgICAgICBzd2FwMihwYXJ0MVs0KmkrMF0sIHBhcnQwWzQqaisyXSk7CQ0KKyAgICAgICAgc3dhcDIocGFydDFbNCppKzJdLCBwYXJ0MVs0KmorMl0pOwkNCisgICAgfQ0KKw0KKyAgICBkbyB7DQorICAgICAgICBzd2FwMihwYXJ0MFs0KmkrMl0sIHBhcnQxWzQqaSswXSk7CQ0KKyAgICB9IHdoaWxlICgoaSA9ICpiaXRUYWIrKykgIT0gMCk7DQorfQ0KKw0KKyNpZiAhZGVmaW5lZChBUk1WNUUpICYmICFkZWZpbmVkKEFSTVY3TmVvbikNCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBSYWRpeDRGaXJzdAorKiBkZXNjcmlwdGlvbjogIFJhZGl4IDQgcG9pbnQgcHJlcGFyZWQgZnVuY3Rpb24gZm9yIGZmdAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitzdGF0aWMgdm9pZCBSYWRpeDRGaXJzdChpbnQgKmJ1ZiwgaW50IG51bSkNCit7DQorICAgIGludCByMCwgcjEsIHIyLCByMzsNCisJaW50IHI0LCByNSwgcjYsIHI3Ow0KKwkNCisJZm9yICg7IG51bSAhPSAwOyBudW0tLSkgDQorCXsNCisJCXIwID0gYnVmWzBdICsgYnVmWzJdOw0KKwkJcjEgPSBidWZbMV0gKyBidWZbM107DQorCQlyMiA9IGJ1ZlswXSAtIGJ1ZlsyXTsNCisJCXIzID0gYnVmWzFdIC0gYnVmWzNdOw0KKwkJcjQgPSBidWZbNF0gKyBidWZbNl07DQorCQlyNSA9IGJ1Zls1XSArIGJ1Zls3XTsNCisJCXI2ID0gYnVmWzRdIC0gYnVmWzZdOw0KKwkJcjcgPSBidWZbNV0gLSBidWZbN107DQorDQorCQlidWZbMF0gPSByMCArIHI0Ow0KKwkJYnVmWzFdID0gcjEgKyByNTsNCisJCWJ1Zls0XSA9IHIwIC0gcjQ7DQorCQlidWZbNV0gPSByMSAtIHI1Ow0KKwkJYnVmWzJdID0gcjIgKyByNzsNCisJCWJ1ZlszXSA9IHIzIC0gcjY7DQorCQlidWZbNl0gPSByMiAtIHI3Ow0KKwkJYnVmWzddID0gcjMgKyByNjsNCisNCisJCWJ1ZiArPSA4Ow0KKwl9DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBSYWRpeDhGaXJzdAorKiBkZXNjcmlwdGlvbjogIFJhZGl4IDggcG9pbnQgcHJlcGFyZWQgZnVuY3Rpb24gZm9yIGZmdAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitzdGF0aWMgdm9pZCBSYWRpeDhGaXJzdChpbnQgKmJ1ZiwgaW50IG51bSkNCit7DQorICAgaW50IHIwLCByMSwgcjIsIHIzOw0KKyAgIGludCBpMCwgaTEsIGkyLCBpMzsNCisgICBpbnQgcjQsIHI1LCByNiwgcjc7DQorICAgaW50IGk0LCBpNSwgaTYsIGk3Ow0KKyAgIGludCB0MCwgdDEsIHQyLCB0MzsNCisNCisJZm9yICggOyBudW0gIT0gMDsgbnVtLS0pIA0KKwl7DQorCQlyMCA9IGJ1ZlswXSArIGJ1ZlsyXTsNCisJCWkwID0gYnVmWzFdICsgYnVmWzNdOw0KKwkJcjEgPSBidWZbMF0gLSBidWZbMl07DQorCQlpMSA9IGJ1ZlsxXSAtIGJ1ZlszXTsNCisJCXIyID0gYnVmWzRdICsgYnVmWzZdOw0KKwkJaTIgPSBidWZbNV0gKyBidWZbN107DQorCQlyMyA9IGJ1Zls0XSAtIGJ1Zls2XTsNCisJCWkzID0gYnVmWzVdIC0gYnVmWzddOw0KKw0KKwkJcjQgPSAocjAgKyByMikgPj4gMTsNCisJCWk0ID0gKGkwICsgaTIpID4+IDE7DQorCQlyNSA9IChyMCAtIHIyKSA+PiAxOw0KKwkJaTUgPSAoaTAgLSBpMikgPj4gMTsNCisJCXI2ID0gKHIxIC0gaTMpID4+IDE7DQorCQlpNiA9IChpMSArIHIzKSA+PiAxOw0KKwkJcjcgPSAocjEgKyBpMykgPj4gMTsNCisJCWk3ID0gKGkxIC0gcjMpID4+IDE7DQorDQorCQlyMCA9IGJ1ZlsgOF0gKyBidWZbMTBdOw0KKwkJaTAgPSBidWZbIDldICsgYnVmWzExXTsNCisJCXIxID0gYnVmWyA4XSAtIGJ1ZlsxMF07DQorCQlpMSA9IGJ1ZlsgOV0gLSBidWZbMTFdOw0KKwkJcjIgPSBidWZbMTJdICsgYnVmWzE0XTsNCisJCWkyID0gYnVmWzEzXSArIGJ1ZlsxNV07DQorCQlyMyA9IGJ1ZlsxMl0gLSBidWZbMTRdOw0KKwkJaTMgPSBidWZbMTNdIC0gYnVmWzE1XTsNCisNCisJCXQwID0gKHIwICsgcjIpID4+IDE7DQorCQl0MSA9IChpMCArIGkyKSA+PiAxOw0KKwkJdDIgPSAocjAgLSByMikgPj4gMTsNCisJCXQzID0gKGkwIC0gaTIpID4+IDE7DQorDQorCQlidWZbIDBdID0gcjQgKyB0MDsNCisJCWJ1ZlsgMV0gPSBpNCArIHQxOw0KKwkJYnVmWyA4XSA9IHI0IC0gdDA7DQorCQlidWZbIDldID0gaTQgLSB0MTsNCisJCWJ1ZlsgNF0gPSByNSArIHQzOw0KKwkJYnVmWyA1XSA9IGk1IC0gdDI7DQorCQlidWZbMTJdID0gcjUgLSB0MzsNCisJCWJ1ZlsxM10gPSBpNSArIHQyOw0KKw0KKwkJcjAgPSByMSAtIGkzOw0KKwkJaTAgPSBpMSArIHIzOw0KKwkJcjIgPSByMSArIGkzOw0KKwkJaTIgPSBpMSAtIHIzOw0KKw0KKwkJdDAgPSBNVUxISUdIKFNRUlQxXzIsIHIwIC0gaTApOw0KKwkJdDEgPSBNVUxISUdIKFNRUlQxXzIsIHIwICsgaTApOw0KKwkJdDIgPSBNVUxISUdIKFNRUlQxXzIsIHIyIC0gaTIpOw0KKwkJdDMgPSBNVUxISUdIKFNRUlQxXzIsIHIyICsgaTIpOw0KKw0KKwkJYnVmWyA2XSA9IHI2IC0gdDA7DQorCQlidWZbIDddID0gaTYgLSB0MTsNCisJCWJ1ZlsxNF0gPSByNiArIHQwOw0KKwkJYnVmWzE1XSA9IGk2ICsgdDE7DQorCQlidWZbIDJdID0gcjcgKyB0MzsNCisJCWJ1ZlsgM10gPSBpNyAtIHQyOw0KKwkJYnVmWzEwXSA9IHI3IC0gdDM7DQorCQlidWZbMTFdID0gaTcgKyB0MjsNCisNCisJCWJ1ZiArPSAxNjsNCisJfQ0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUmFkaXg0RkZUCisqIGRlc2NyaXB0aW9uOiAgUmFkaXggNCBwb2ludCBmZnQgY29yZSBmdW5jdGlvbgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitzdGF0aWMgdm9pZCBSYWRpeDRGRlQoaW50ICpidWYsIGludCBudW0sIGludCBiZ24sIGludCAqdHdpZFRhYikNCit7DQorCWludCByMCwgcjEsIHIyLCByMzsNCisJaW50IHI0LCByNSwgcjYsIHI3Ow0KKwlpbnQgdDAsIHQxOw0KKwlpbnQgc2lueCwgY29zeDsNCisJaW50IGksIGosIHN0ZXA7DQorCWludCAqeHB0ciwgKmNzcHRyOw0KKw0KKwlmb3IgKG51bSA+Pj0gMjsgbnVtICE9IDA7IG51bSA+Pj0gMikgDQorCXsNCisJCXN0ZXAgPSAyKmJnbjsNCisJCXhwdHIgPSBidWY7DQorDQorICAgIAlmb3IgKGkgPSBudW07IGkgIT0gMDsgaS0tKSANCisJCXsNCisJCQljc3B0ciA9IHR3aWRUYWI7DQorDQorCQkJZm9yIChqID0gYmduOyBqICE9IDA7IGotLSkgDQorCQkJew0KKwkJCQlyMCA9IHhwdHJbMF07DQorCQkJCXIxID0geHB0clsxXTsNCisJCQkJeHB0ciArPSBzdGVwOw0KKwkJCQkNCisJCQkJdDAgPSB4cHRyWzBdOw0KKwkJCQl0MSA9IHhwdHJbMV07CQkJCQ0KKwkJCQljb3N4ID0gY3NwdHJbMF07DQorCQkJCXNpbnggPSBjc3B0clsxXTsNCisJCQkJcjIgPSBNVUxISUdIKGNvc3gsIHQwKSArIE1VTEhJR0goc2lueCwgdDEpOwkJLyogY29zKmJyICsgc2luKmJpICovDQorCQkJCXIzID0gTVVMSElHSChjb3N4LCB0MSkgLSBNVUxISUdIKHNpbngsIHQwKTsJCS8qIGNvcypiaSAtIHNpbipiciAqLw0KKwkJCQl4cHRyICs9IHN0ZXA7DQorDQorCQkJCXQwID0gcjAgPj4gMjsNCisJCQkJdDEgPSByMSA+PiAyOw0KKwkJCQlyMCA9IHQwIC0gcjI7DQorCQkJCXIxID0gdDEgLSByMzsNCisJCQkJcjIgPSB0MCArIHIyOw0KKwkJCQlyMyA9IHQxICsgcjM7DQorCQkJCQ0KKwkJCQl0MCA9IHhwdHJbMF07DQorCQkJCXQxID0geHB0clsxXTsNCisJCQkJY29zeCA9IGNzcHRyWzJdOw0KKwkJCQlzaW54ID0gY3NwdHJbM107DQorCQkJCXI0ID0gTVVMSElHSChjb3N4LCB0MCkgKyBNVUxISUdIKHNpbngsIHQxKTsJCS8qIGNvcypjciArIHNpbipjaSAqLw0KKwkJCQlyNSA9IE1VTEhJR0goY29zeCwgdDEpIC0gTVVMSElHSChzaW54LCB0MCk7CQkvKiBjb3MqY2kgLSBzaW4qY3IgKi8NCisJCQkJeHB0ciArPSBzdGVwOw0KKwkJCQkNCisJCQkJdDAgPSB4cHRyWzBdOw0KKwkJCQl0MSA9IHhwdHJbMV07DQorCQkJCWNvc3ggPSBjc3B0cls0XTsNCisJCQkJc2lueCA9IGNzcHRyWzVdOw0KKwkJCQlyNiA9IE1VTEhJR0goY29zeCwgdDApICsgTVVMSElHSChzaW54LCB0MSk7CQkvKiBjb3MqY3IgKyBzaW4qY2kgKi8NCisJCQkJcjcgPSBNVUxISUdIKGNvc3gsIHQxKSAtIE1VTEhJR0goc2lueCwgdDApOwkJLyogY29zKmNpIC0gc2luKmNyICovDQorCQkJCWNzcHRyICs9IDY7DQorDQorCQkJCXQwID0gcjQ7DQorCQkJCXQxID0gcjU7DQorCQkJCXI0ID0gdDAgKyByNjsNCisJCQkJcjUgPSByNyAtIHQxOw0KKwkJCQlyNiA9IHQwIC0gcjY7DQorCQkJCXI3ID0gcjcgKyB0MTsNCisNCisJCQkJeHB0clswXSA9IHIwICsgcjU7DQorCQkJCXhwdHJbMV0gPSByMSArIHI2Ow0KKwkJCQl4cHRyIC09IHN0ZXA7DQorDQorCQkJCXhwdHJbMF0gPSByMiAtIHI0Ow0KKwkJCQl4cHRyWzFdID0gcjMgLSByNzsNCisJCQkJeHB0ciAtPSBzdGVwOw0KKw0KKwkJCQl4cHRyWzBdID0gcjAgLSByNTsNCisJCQkJeHB0clsxXSA9IHIxIC0gcjY7DQorCQkJCXhwdHIgLT0gc3RlcDsNCisNCisJCQkJeHB0clswXSA9IHIyICsgcjQ7DQorCQkJCXhwdHJbMV0gPSByMyArIHI3Ow0KKwkJCQl4cHRyICs9IDI7DQorCQkJfQ0KKwkJCXhwdHIgKz0gMypzdGVwOw0KKwkJfQ0KKwkJdHdpZFRhYiArPSAzKnN0ZXA7DQorCQliZ24gPDw9IDI7DQorCX0NCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBQcmVNRENUCisqIGRlc2NyaXB0aW9uOiAgcHJlcGFyZSBNRENUIHByb2Nlc3MgZm9yIG5leHQgRkZUIGNvbXB1dGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorc3RhdGljIHZvaWQgUHJlTURDVChpbnQgKmJ1ZjAsIGludCBudW0sIGNvbnN0IGludCAqY3NwdHIpDQorew0KKwlpbnQgaTsNCisJaW50IHRyMSwgdGkxLCB0cjIsIHRpMjsNCisJaW50IGNvc2EsIHNpbmEsIGNvc2IsIHNpbmI7DQorCWludCAqYnVmMTsNCisJDQorCWJ1ZjEgPSBidWYwICsgbnVtIC0gMTsNCisNCisJZm9yKGkgPSBudW0gPj4gMjsgaSAhPSAwOyBpLS0pDQorCXsNCisJCWNvc2EgPSAqY3NwdHIrKzsJDQorCQlzaW5hID0gKmNzcHRyKys7CQ0KKwkJY29zYiA9ICpjc3B0cisrOwkNCisJCXNpbmIgPSAqY3NwdHIrKzsJCQ0KKw0KKwkJdHIxID0gKihidWYwICsgMCk7DQorCQl0aTIgPSAqKGJ1ZjAgKyAxKTsNCisJCXRyMiA9ICooYnVmMSAtIDEpOw0KKwkJdGkxID0gKihidWYxICsgMCk7DQorCQkNCisJCSpidWYwKysgPSBNVUxISUdIKGNvc2EsIHRyMSkgKyBNVUxISUdIKHNpbmEsIHRpMSk7DQorCQkqYnVmMCsrID0gTVVMSElHSChjb3NhLCB0aTEpIC0gTVVMSElHSChzaW5hLCB0cjEpOwkJDQorCQkNCisJCSpidWYxLS0gPSBNVUxISUdIKGNvc2IsIHRpMikgLSBNVUxISUdIKHNpbmIsIHRyMik7CQkNCisJCSpidWYxLS0gPSBNVUxISUdIKGNvc2IsIHRyMikgKyBNVUxISUdIKHNpbmIsIHRpMik7DQorCX0NCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBQb3N0TURDVAorKiBkZXNjcmlwdGlvbjogICBwb3N0IE1EQ1QgcHJvY2VzcyBhZnRlciBuZXh0IEZGVCBmb3IgTURDVAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitzdGF0aWMgdm9pZCBQb3N0TURDVChpbnQgKmJ1ZjAsIGludCBudW0sIGNvbnN0IGludCAqY3NwdHIpDQorew0KKwlpbnQgaTsNCisJaW50IHRyMSwgdGkxLCB0cjIsIHRpMjsNCisJaW50IGNvc2EsIHNpbmEsIGNvc2IsIHNpbmI7DQorCWludCAqYnVmMTsNCisNCisJYnVmMSA9IGJ1ZjAgKyBudW0gLSAxOw0KKwkNCisJZm9yKGkgPSBudW0gPj4gMjsgaSAhPSAwOyBpLS0pDQorCXsNCisJCWNvc2EgPSAqY3NwdHIrKzsJDQorCQlzaW5hID0gKmNzcHRyKys7CQ0KKwkJY29zYiA9ICpjc3B0cisrOwkNCisJCXNpbmIgPSAqY3NwdHIrKzsNCisNCisJCXRyMSA9ICooYnVmMCArIDApOw0KKwkJdGkxID0gKihidWYwICsgMSk7DQorCQl0aTIgPSAqKGJ1ZjEgKyAwKTsNCisJCXRyMiA9ICooYnVmMSAtIDEpOw0KKw0KKwkJKmJ1ZjArKyA9IE1VTEhJR0goY29zYSwgdHIxKSArIE1VTEhJR0goc2luYSwgdGkxKTsNCisJCSpidWYxLS0gPSBNVUxISUdIKHNpbmEsIHRyMSkgLSBNVUxISUdIKGNvc2EsIHRpMSk7CQkNCisJCQ0KKwkJKmJ1ZjArKyA9IE1VTEhJR0goc2luYiwgdHIyKSAtIE1VTEhJR0goY29zYiwgdGkyKTsNCisJCSpidWYxLS0gPSBNVUxISUdIKGNvc2IsIHRyMikgKyBNVUxISUdIKHNpbmIsIHRpMik7CQ0KKwl9DQorfQ0KKyNlbmRpZg0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IE1kY3RfTG9uZworKiBkZXNjcmlwdGlvbjogIHRoZSBsb25nIGJsb2NrIG1kY3QsIGluY2x1ZGUgbG9uZ19zdGFydCBibG9jaywgZW5kX2xvbmcgYmxvY2sKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQordm9pZCBNZGN0X0xvbmcoaW50ICpidWYpDQorew0KKwlQcmVNRENUKGJ1ZiwgMTAyNCwgY29zc2ludGFiICsgMTI4KTsNCisNCisJU2h1ZmZsZShidWYsIDUxMiwgYml0cmV2VGFiICsgMTcpOw0KKwlSYWRpeDhGaXJzdChidWYsIDUxMiA+PiAzKTsJCQkJCQkNCisJUmFkaXg0RkZUKGJ1ZiwgNTEyID4+IDMsIDgsIChpbnQgKil0d2lkVGFiNTEyKTsNCisNCisJUG9zdE1EQ1QoYnVmLCAxMDI0LCBjb3NzaW50YWIgKyAxMjgpOwkNCit9DQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogTWRjdF9TaG9ydAorKiBkZXNjcmlwdGlvbjogIHRoZSBzaG9ydCBibG9jayBtZGN0IAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCit2b2lkIE1kY3RfU2hvcnQoaW50ICpidWYpDQorew0KKwlQcmVNRENUKGJ1ZiwgMTI4LCBjb3NzaW50YWIpOw0KKw0KKwlTaHVmZmxlKGJ1ZiwgNjQsIGJpdHJldlRhYik7DQorCVJhZGl4NEZpcnN0KGJ1ZiwgNjQgPj4gMik7CQkJCQkJDQorCVJhZGl4NEZGVChidWYsIDY0ID4+IDIsIDQsIChpbnQgKil0d2lkVGFiNjQpOwkNCisNCisJUG9zdE1EQ1QoYnVmLCAxMjgsIGNvc3NpbnRhYik7CQ0KK30NCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IHNoaWZ0TWRjdERlbGF5QnVmZmVyCisqIGRlc2NyaXB0aW9uOiAgICB0aGUgbWRjdCBkZWxheSBidWZmZXIgaGFzIGEgc2l6ZSBvZiAxNjAwLAorKiAgc28gdGhlIGNhbGN1bGF0aW9uIG9mIExPTkcsU1RPUCBtdXN0IGJlICBzcGlsdCBpbiB0d28gCisqICBwYXNzZXMgd2l0aCAxMDI0IHNhbXBsZXMgYW5kIGEgbWlkIHNoaWZ0LAorKiAgdGhlIFNIT1JUIHRyYW5zZm9ybXMgY2FuIGJlIGNvbXBsZXRlZCBpbiB0aGUgZGVsYXkgYnVmZmVyLAorKiAgYW5kIGFmdGVyd2FyZHMgYSBzaGlmdAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIHNoaWZ0TWRjdERlbGF5QnVmZmVyKFdvcmQxNiAqbWRjdERlbGF5QnVmZmVyLCAvKiEgc3RhcnQgb2YgbWRjdCBkZWxheSBidWZmZXIgKi8KKwkJCQkJCQkJIFdvcmQxNiAqdGltZVNpZ25hbCwgICAgICAvKiEgcG9pbnRlciB0byBuZXcgdGltZSBzaWduYWwgc2FtcGxlcywgaW50ZXJsZWF2ZWQgKi8KKwkJCQkJCQkJIFdvcmQxNiBjaEluY3JlbWVudCAgICAgICAvKiEgbnVtYmVyIG9mIGNoYW5uZWxzICovCisJCQkJCQkJCSApCit7CisJV29yZDMyIGk7CisJV29yZDE2ICpzckJ1ZiA9IG1kY3REZWxheUJ1ZmZlcjsKKwlXb3JkMTYgKmRzQnVmID0gbWRjdERlbGF5QnVmZmVyK0ZSQU1FX0xFTl9MT05HOworCisJZm9yKGkgPSAwOyBpIDwgQkxPQ0tfU1dJVENISU5HX09GRlNFVC1GUkFNRV9MRU5fTE9ORzsgaSs9IDgpCisJeworCQkqc3JCdWYrKyA9ICpkc0J1ZisrOwkgKnNyQnVmKysgPSAqZHNCdWYrKzsKKwkJKnNyQnVmKysgPSAqZHNCdWYrKzsJICpzckJ1ZisrID0gKmRzQnVmKys7CisJCSpzckJ1ZisrID0gKmRzQnVmKys7CSAqc3JCdWYrKyA9ICpkc0J1ZisrOworCQkqc3JCdWYrKyA9ICpkc0J1ZisrOwkgKnNyQnVmKysgPSAqZHNCdWYrKzsKKwl9CisKKwlzckJ1ZiA9IG1kY3REZWxheUJ1ZmZlciArIEJMT0NLX1NXSVRDSElOR19PRkZTRVQtRlJBTUVfTEVOX0xPTkc7CisJZHNCdWYgPSB0aW1lU2lnbmFsOworCisJZm9yKGk9MDsgaTxGUkFNRV9MRU5fTE9ORzsgaSs9OCkKKwl7ICAgCisJCSpzckJ1ZisrID0gKmRzQnVmOyBkc0J1ZiArPSBjaEluY3JlbWVudDsKKwkJKnNyQnVmKysgPSAqZHNCdWY7IGRzQnVmICs9IGNoSW5jcmVtZW50OworCQkqc3JCdWYrKyA9ICpkc0J1ZjsgZHNCdWYgKz0gY2hJbmNyZW1lbnQ7CisJCSpzckJ1ZisrID0gKmRzQnVmOyBkc0J1ZiArPSBjaEluY3JlbWVudDsKKwkJKnNyQnVmKysgPSAqZHNCdWY7IGRzQnVmICs9IGNoSW5jcmVtZW50OworCQkqc3JCdWYrKyA9ICpkc0J1ZjsgZHNCdWYgKz0gY2hJbmNyZW1lbnQ7CisJCSpzckJ1ZisrID0gKmRzQnVmOyBkc0J1ZiArPSBjaEluY3JlbWVudDsKKwkJKnNyQnVmKysgPSAqZHNCdWY7IGRzQnVmICs9IGNoSW5jcmVtZW50OworCX0KK30NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogZ2V0U2NhbGVmYWN0b3JPZlNob3J0VmVjdG9yU3RyaWRlCisqIGRlc2NyaXB0aW9uOiAgQ2FsY3VsYXRlIG1heCBwb3NzaWJsZSBzY2FsZSBmYWN0b3IgZm9yIGlucHV0IHZlY3RvciBvZiBzaG9ydHMKKyogcmV0dXJuczogICAgICBNYXhpbXVtIHNjYWxlIGZhY3RvcgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitzdGF0aWMgV29yZDE2IGdldFNjYWxlZmFjdG9yT2ZTaG9ydFZlY3RvclN0cmlkZShjb25zdCBXb3JkMTYgKnZlY3RvciwgLyohPCBQb2ludGVyIHRvIGlucHV0IHZlY3RvciAqLw0KKwkJCQkJCQkJCQkJCVdvcmQxNiBsZW4sICAgICAgICAgICAvKiE8IExlbmd0aCBvZiBpbnB1dCB2ZWN0b3IgKi8NCisJCQkJCQkJCQkJCQlXb3JkMTYgc3RyaWRlKSAgICAgICAgLyohPCBTdHJpZGUgb2YgaW5wdXQgdmVjdG9yICovDQorew0KKwlXb3JkMTYgbWF4VmFsID0gMDsNCisJV29yZDE2IGFic1ZhbDsNCisJV29yZDE2IGk7DQorDQorCWZvcihpPTA7IGk8bGVuOyBpKyspew0KKwkJYWJzVmFsID0gYWJzX3ModmVjdG9yW2kqc3RyaWRlXSk7DQorCQltYXhWYWwgfD0gYWJzVmFsOw0KKwl9DQorDQorCXJldHVybiggbWF4VmFsID8gbm9ybV9zKG1heFZhbCkgOiAxNSk7DQorfQ0KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogVHJhbnNmb3JtX1JlYWwKKyogZGVzY3JpcHRpb246ICBDYWxjdWxhdGUgdHJhbnNmb3JtIGZpbHRlciBmb3IgaW5wdXQgdmVjdG9yIG9mIHNob3J0cworKiByZXR1cm5zOiAgICAgIFRSVUUgaWYgc3VjY2VzcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgVHJhbnNmb3JtX1JlYWwoV29yZDE2ICptZGN0RGVsYXlCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqdGltZVNpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNoSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnJlYWxPdXQsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqbWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYmxvY2tUeXBlCisgICAgICAgICAgICAgICAgICAgICkKK3sKKwlXb3JkMzIgaSx3OworCVdvcmQzMiB0aW1lU2lnbmFsU2FtcGxlOworCVdvcmQzMiB3czEsd3MyOworCVdvcmQxNiAqZGN0SW4wLCAqZGN0SW4xOw0KKwlXb3JkMzIgKm91dERhdGEwLCAqb3V0RGF0YTE7DQorCVdvcmQzMiAqd2luUHRyOworCisJV29yZDMyIGRlbGF5QnVmZmVyU2YsdGltZVNpZ25hbFNmLG1pblNmOworCVdvcmQzMiBoZWFkUm9vbT0wOworCQorCXN3aXRjaChibG9ja1R5cGUpeworCQkKKwkJCisJY2FzZSBMT05HX1dJTkRPVzoKKwkJLyoKKwkJd2UgYWNjZXNzIEJMT0NLX1NXSVRDSElOR19PRkZTRVQgKDE2MDAgKSBkZWxheSBidWZmZXIgc2FtcGxlcyArIDQ0OCBuZXcgdGltZVNpZ25hbCBzYW1wbGVzCisJCWFuZCBnZXQgdGhlIGJpZ2dlc3Qgc2NhbGUgZmFjdG9yIGZvciBuZXh0IGNhbGN1bGF0ZSBtb3JlIHByZWNpc2UKKwkJKi8KKwkJZGVsYXlCdWZmZXJTZiA9IGdldFNjYWxlZmFjdG9yT2ZTaG9ydFZlY3RvclN0cmlkZShtZGN0RGVsYXlCdWZmZXIsQkxPQ0tfU1dJVENISU5HX09GRlNFVCwxKTsKKwkJdGltZVNpZ25hbFNmICA9IGdldFNjYWxlZmFjdG9yT2ZTaG9ydFZlY3RvclN0cmlkZSh0aW1lU2lnbmFsLDIqRlJBTUVfTEVOX0xPTkctQkxPQ0tfU1dJVENISU5HX09GRlNFVCxjaEluY3JlbWVudCk7CisJCW1pblNmID0gbWluKGRlbGF5QnVmZmVyU2YsdGltZVNpZ25hbFNmKTsKKwkJbWluU2YgPSBtaW4obWluU2YsMTQpOworCQkKKwkJZGN0SW4wID0gbWRjdERlbGF5QnVmZmVyOworCQlkY3RJbjEgPSBtZGN0RGVsYXlCdWZmZXIgKyBGUkFNRV9MRU5fTE9ORyAtIDE7CisJCW91dERhdGEwID0gcmVhbE91dCArIEZSQU1FX0xFTl9MT05HLzI7CisJCQorCQkvKiBhZGQgd2luZG93cyBhbmQgcHJlIGFkZCBmb3IgbWRjdCB0byBsYXN0IGJ1ZmZlciovCisJCXdpblB0ciA9IChpbnQgKilMb25nV2luZG93S0JEOworCQlmb3IoaT0wO2k8RlJBTUVfTEVOX0xPTkcvMjtpKyspeworCQkJdGltZVNpZ25hbFNhbXBsZSA9ICgqZGN0SW4wKyspIDw8IG1pblNmOyAKKwkJCXdzMSA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciA+PiAxNik7CisJCQl0aW1lU2lnbmFsU2FtcGxlID0gKCpkY3RJbjEtLSkgPDwgbWluU2Y7CisJCQl3czIgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgJiAweGZmZmYpOworCQkJd2luUHRyICsrOworCQkJLyogc2hpZnQgMiB0byBhdm9pZCBvdmVyZmxvdyBuZXh0ICovCisJCQkqb3V0RGF0YTArKyA9ICh3czEgPj4gMikgLSAod3MyID4+IDIpOworCQl9CisJCQorCQlzaGlmdE1kY3REZWxheUJ1ZmZlcihtZGN0RGVsYXlCdWZmZXIsdGltZVNpZ25hbCxjaEluY3JlbWVudCk7CisJCQorCQkvKiBhZGQgd2luZG93cyBhbmQgcHJlIGFkZCBmb3IgbWRjdCB0byBuZXcgYnVmZmVyKi8KKwkJZGN0SW4wID0gbWRjdERlbGF5QnVmZmVyOworCQlkY3RJbjEgPSBtZGN0RGVsYXlCdWZmZXIgKyBGUkFNRV9MRU5fTE9ORyAtIDE7CisJCW91dERhdGEwID0gcmVhbE91dCArIEZSQU1FX0xFTl9MT05HLzIgLSAxOyAKKwkJd2luUHRyID0gKGludCAqKUxvbmdXaW5kb3dLQkQ7CisJCWZvcihpPTA7aTxGUkFNRV9MRU5fTE9ORy8yO2krKyl7ICAgIAorCQkJdGltZVNpZ25hbFNhbXBsZSA9ICgqZGN0SW4wKyspIDw8IG1pblNmOworCQkJd3MxID0gdGltZVNpZ25hbFNhbXBsZSAqICgqd2luUHRyICYgMHhmZmZmKTsKKwkJCXRpbWVTaWduYWxTYW1wbGUgPSAoKmRjdEluMS0tKSA8PCBtaW5TZjsKKwkJCXdzMiA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciA+PiAxNik7CisJCQl3aW5QdHIrKzsKKwkJCS8qIHNoaWZ0IDIgdG8gYXZvaWQgb3ZlcmZsb3cgbmV4dCAqLworCQkJKm91dERhdGEwLS0gPSAtKCh3czEgPj4gMikgKyAod3MyID4+IDIpKTsgCisJCX0KKworCQlNZGN0X0xvbmcocmVhbE91dCk7DQorCQkvKiB1cGRhdGUgc2NhbGUgZmFjdG9yICovDQorCQltaW5TZiA9IDE0IC0gbWluU2Y7CisJCSptZGN0U2NhbGU9bWluU2Y7IAorCQlicmVhazsKKwkJCisJY2FzZSBTVEFSVF9XSU5ET1c6CisJCS8qCisJCXdlIGFjY2VzcyBCTE9DS19TV0lUQ0hJTkdfT0ZGU0VUICgxNjAwICkgZGVsYXkgYnVmZmVyIHNhbXBsZXMgKyBubyB0aW1lU2lnbmFsIHNhbXBsZXMKKwkJYW5kIGdldCB0aGUgYmlnZ2VzdCBzY2FsZSBmYWN0b3IgZm9yIG5leHQgY2FsY3VsYXRlIG1vcmUgcHJlY2lzZQorCQkqLworCQltaW5TZiA9IGdldFNjYWxlZmFjdG9yT2ZTaG9ydFZlY3RvclN0cmlkZShtZGN0RGVsYXlCdWZmZXIsQkxPQ0tfU1dJVENISU5HX09GRlNFVCwxKTsKKwkJbWluU2YgPSBtaW4obWluU2YsMTQpOworCisJCWRjdEluMCA9IG1kY3REZWxheUJ1ZmZlcjsKKwkJZGN0SW4xID0gbWRjdERlbGF5QnVmZmVyICsgRlJBTUVfTEVOX0xPTkcgLSAxOworCQlvdXREYXRhMCA9IHJlYWxPdXQgKyBGUkFNRV9MRU5fTE9ORy8yOyAJCQorCQl3aW5QdHIgPSAoaW50ICopTG9uZ1dpbmRvd0tCRDsKKworCQkvKiBhZGQgd2luZG93cyBhbmQgcHJlIGFkZCBmb3IgbWRjdCB0byBsYXN0IGJ1ZmZlciovCisJCWZvcihpPTA7aTxGUkFNRV9MRU5fTE9ORy8yO2krKyl7CisJCQl0aW1lU2lnbmFsU2FtcGxlID0gKCpkY3RJbjArKykgPDwgbWluU2Y7CisJCQl3czEgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgPj4gMTYpOworCQkJdGltZVNpZ25hbFNhbXBsZSA9ICgqZGN0SW4xLS0pIDw8IG1pblNmOworCQkJd3MyID0gdGltZVNpZ25hbFNhbXBsZSAqICgqd2luUHRyICYgMHhmZmZmKTsKKwkJCXdpblB0ciArKzsKKwkJCSpvdXREYXRhMCsrID0gKHdzMSA+PiAyKSAtICh3czIgPj4gMik7ICAvKiBzaGlmdCAyIHRvIGF2b2lkIG92ZXJmbG93IG5leHQgKi8NCisJCX0KKwkJCisJCXNoaWZ0TWRjdERlbGF5QnVmZmVyKG1kY3REZWxheUJ1ZmZlcix0aW1lU2lnbmFsLGNoSW5jcmVtZW50KTsKKwkJCisJCW91dERhdGEwID0gcmVhbE91dCArIEZSQU1FX0xFTl9MT05HLzIgLSAxOyAKKwkJZm9yKGk9MDtpPExTX1RSQU5TO2krKyl7CisJCQkqb3V0RGF0YTAtLSA9IC1tZGN0RGVsYXlCdWZmZXJbaV0gPDwgKDE1IC0gMiArIG1pblNmKTsgIAorCQl9CisJCQorCQkvKiBhZGQgd2luZG93cyBhbmQgcHJlIGFkZCBmb3IgbWRjdCB0byBuZXcgYnVmZmVyKi8KKwkJZGN0SW4wID0gbWRjdERlbGF5QnVmZmVyICsgTFNfVFJBTlM7CisJCWRjdEluMSA9IG1kY3REZWxheUJ1ZmZlciArIEZSQU1FX0xFTl9MT05HIC0gMSAtIExTX1RSQU5TOworCQlvdXREYXRhMCA9IHJlYWxPdXQgKyBGUkFNRV9MRU5fTE9ORy8yIC0gMSAtTFNfVFJBTlM7IAorCQl3aW5QdHIgPSAoaW50ICopU2hvcnRXaW5kb3dTaW5lOworCQlmb3IoaT0wO2k8RlJBTUVfTEVOX1NIT1JULzI7aSsrKXsKKwkJCXRpbWVTaWduYWxTYW1wbGU9ICgqZGN0SW4wKyspIDw8IG1pblNmOworCQkJd3MxID0gdGltZVNpZ25hbFNhbXBsZSAqICgqd2luUHRyICYgMHhmZmZmKTsKKwkJCXRpbWVTaWduYWxTYW1wbGU9ICgqZGN0SW4xLS0pIDw8IG1pblNmOworCQkJd3MyID0gdGltZVNpZ25hbFNhbXBsZSAqICgqd2luUHRyID4+IDE2KTsKKwkJCXdpblB0cisrOworCQkJKm91dERhdGEwLS0gPSAgLSgod3MxID4+IDIpICsgKHdzMiA+PiAyKSk7ICAvKiBzaGlmdCAyIHRvIGF2b2lkIG92ZXJmbG93IG5leHQgKi8NCisJCX0KKworCQlNZGN0X0xvbmcocmVhbE91dCk7CisJCS8qIHVwZGF0ZSBzY2FsZSBmYWN0b3IgKi8KKwkJbWluU2YgPSAxNCAtIG1pblNmOworCQkqbWRjdFNjYWxlPSBtaW5TZjsKKwkJYnJlYWs7CisJCQorCWNhc2UgU1RPUF9XSU5ET1c6CisJCS8qCisJCXdlIGFjY2VzcyBCTE9DS19TV0lUQ0hJTkdfT0ZGU0VULUxTX1RSQU5TICgxNjAwLTQ0OCApIGRlbGF5IGJ1ZmZlciBzYW1wbGVzICsgNDQ4IG5ldyB0aW1lU2lnbmFsIHNhbXBsZXMKKwkJYW5kIGdldCB0aGUgYmlnZ2VzdCBzY2FsZSBmYWN0b3IgZm9yIG5leHQgY2FsY3VsYXRlIG1vcmUgcHJlY2lzZQorCQkqLworCQlkZWxheUJ1ZmZlclNmID0gZ2V0U2NhbGVmYWN0b3JPZlNob3J0VmVjdG9yU3RyaWRlKG1kY3REZWxheUJ1ZmZlcitMU19UUkFOUyxCTE9DS19TV0lUQ0hJTkdfT0ZGU0VULUxTX1RSQU5TLDEpOworCQl0aW1lU2lnbmFsU2YgID0gZ2V0U2NhbGVmYWN0b3JPZlNob3J0VmVjdG9yU3RyaWRlKHRpbWVTaWduYWwsMipGUkFNRV9MRU5fTE9ORy1CTE9DS19TV0lUQ0hJTkdfT0ZGU0VULGNoSW5jcmVtZW50KTsKKwkJbWluU2YgPSBtaW4oZGVsYXlCdWZmZXJTZix0aW1lU2lnbmFsU2YpOyAgICAKKwkJbWluU2YgPSBtaW4obWluU2YsMTMpOworCQkKKwkJb3V0RGF0YTAgPSByZWFsT3V0ICsgRlJBTUVfTEVOX0xPTkcvMjsKKwkJZGN0SW4xID0gbWRjdERlbGF5QnVmZmVyICsgRlJBTUVfTEVOX0xPTkcgLSAxOworCQlmb3IoaT0wO2k8TFNfVFJBTlM7aSsrKXsKKwkJCSpvdXREYXRhMCsrID0gLSgqZGN0SW4xLS0pIDw8ICgxNSAtIDIgKyBtaW5TZik7ICAgIAorCQl9CisJCQorCQkvKiBhZGQgd2luZG93cyBhbmQgcHJlIGFkZCBmb3IgbWRjdCB0byBsYXN0IGJ1ZmZlciovCisJCWRjdEluMCA9IG1kY3REZWxheUJ1ZmZlciArIExTX1RSQU5TOworCQlkY3RJbjEgPSBtZGN0RGVsYXlCdWZmZXIgKyBGUkFNRV9MRU5fTE9ORyAtIDEgLSBMU19UUkFOUzsKKwkJb3V0RGF0YTAgPSByZWFsT3V0ICsgRlJBTUVfTEVOX0xPTkcvMiArIExTX1RSQU5TOyAKKwkJd2luUHRyID0gKGludCAqKVNob3J0V2luZG93U2luZTsKKwkJZm9yKGk9MDtpPEZSQU1FX0xFTl9TSE9SVC8yO2krKyl7CisJCQl0aW1lU2lnbmFsU2FtcGxlID0gKCpkY3RJbjArKykgPDwgbWluU2Y7CisJCQl3czEgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgPj4gMTYpOworCQkJdGltZVNpZ25hbFNhbXBsZT0gKCpkY3RJbjEtLSkgPDwgbWluU2Y7CisJCQl3czIgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgJiAweGZmZmYpOworCQkJd2luUHRyKys7CisJCQkqb3V0RGF0YTArKyA9ICh3czEgPj4gMikgLSAod3MyID4+IDIpOyAgLyogc2hpZnQgMiB0byBhdm9pZCBvdmVyZmxvdyBuZXh0ICovDQorCQl9CisJCQorCQlzaGlmdE1kY3REZWxheUJ1ZmZlcihtZGN0RGVsYXlCdWZmZXIsdGltZVNpZ25hbCxjaEluY3JlbWVudCk7CisJCQorCQkvKiBhZGQgd2luZG93cyBhbmQgcHJlIGFkZCBmb3IgbWRjdCB0byBuZXcgYnVmZmVyKi8KKwkJZGN0SW4wID0gbWRjdERlbGF5QnVmZmVyOworCQlkY3RJbjEgPSBtZGN0RGVsYXlCdWZmZXIgKyBGUkFNRV9MRU5fTE9ORyAtIDE7CisJCW91dERhdGEwID0gcmVhbE91dCArIEZSQU1FX0xFTl9MT05HLzIgLSAxOyAKKwkJd2luUHRyID0gKGludCAqKUxvbmdXaW5kb3dLQkQ7CisJCWZvcihpPTA7aTxGUkFNRV9MRU5fTE9ORy8yO2krKyl7CisJCQl0aW1lU2lnbmFsU2FtcGxlPSAoKmRjdEluMCsrKSA8PCBtaW5TZjsKKwkJCXdzMSA9IHRpbWVTaWduYWxTYW1wbGUgKigqd2luUHRyICYgMHhmZmZmKTsKKwkJCXRpbWVTaWduYWxTYW1wbGU9ICgqZGN0SW4xLS0pIDw8IG1pblNmOworCQkJd3MyID0gdGltZVNpZ25hbFNhbXBsZSAqICgqd2luUHRyID4+IDE2KTsKKwkJCSpvdXREYXRhMC0tID0gIC0oKHdzMSA+PiAyKSArICh3czIgPj4gMikpOyAgLyogc2hpZnQgMiB0byBhdm9pZCBvdmVyZmxvdyBuZXh0ICovDQorCQkJd2luUHRyKys7DQorCQl9CisJCQorCQlNZGN0X0xvbmcocmVhbE91dCk7CisJCW1pblNmID0gMTQgLSBtaW5TZjsKKwkJKm1kY3RTY2FsZT0gbWluU2Y7IC8qIHVwZGF0ZSBzY2FsZSBmYWN0b3IgKi8KKwkJYnJlYWs7CisJCQorCWNhc2UgU0hPUlRfV0lORE9XOgorCQkvKgorCQl3ZSBhY2Nlc3MgQkxPQ0tfU1dJVENISU5HX09GRlNFVCAoMTYwMCApIGRlbGF5IGJ1ZmZlciBzYW1wbGVzICsgbm8gbmV3IHRpbWVTaWduYWwgc2FtcGxlcworCQlhbmQgZ2V0IHRoZSBiaWdnZXN0IHNjYWxlIGZhY3RvciBmb3IgbmV4dCBjYWxjdWxhdGUgbW9yZSBwcmVjaXNlCisJCSovCQkKKwkJbWluU2YgPSBnZXRTY2FsZWZhY3Rvck9mU2hvcnRWZWN0b3JTdHJpZGUobWRjdERlbGF5QnVmZmVyK1RSQU5TRk9STV9PRkZTRVRfU0hPUlQsOSpGUkFNRV9MRU5fU0hPUlQsMSk7CisJCW1pblNmID0gbWluKG1pblNmLDEwKTsKKwkJCisJCQorCQlmb3Iodz0wO3c8VFJBTlNfRkFDO3crKyl7CisJCQlkY3RJbjAgPSBtZGN0RGVsYXlCdWZmZXIrdypGUkFNRV9MRU5fU0hPUlQrVFJBTlNGT1JNX09GRlNFVF9TSE9SVDsKKwkJCWRjdEluMSA9IG1kY3REZWxheUJ1ZmZlcit3KkZSQU1FX0xFTl9TSE9SVCtUUkFOU0ZPUk1fT0ZGU0VUX1NIT1JUICsgRlJBTUVfTEVOX1NIT1JULTE7CisJCQlvdXREYXRhMCA9IHJlYWxPdXQgKyBGUkFNRV9MRU5fU0hPUlQvMjsgCisJCQlvdXREYXRhMSA9IHJlYWxPdXQgKyBGUkFNRV9MRU5fU0hPUlQvMiAtIDE7IAorCisJCQl3aW5QdHIgPSAoaW50ICopU2hvcnRXaW5kb3dTaW5lOworCQkJZm9yKGk9MDtpPEZSQU1FX0xFTl9TSE9SVC8yO2krKyl7CisJCQkJdGltZVNpZ25hbFNhbXBsZT0gKmRjdEluMCA8PCBtaW5TZjsKKwkJCQl3czEgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgPj4gMTYpOworCQkJCXRpbWVTaWduYWxTYW1wbGU9ICpkY3RJbjEgPDwgbWluU2Y7CisJCQkJd3MyID0gdGltZVNpZ25hbFNhbXBsZSAqICgqd2luUHRyICYgMHhmZmZmKTsKKwkJCQkqb3V0RGF0YTArKyA9ICh3czEgPj4gMikgLSAod3MyID4+IDIpOyAgLyogc2hpZnQgMiB0byBhdm9pZCBvdmVyZmxvdyBuZXh0ICovDQorCQkJCQorCQkJCXRpbWVTaWduYWxTYW1wbGU9ICooZGN0SW4wICsgRlJBTUVfTEVOX1NIT1JUKSA8PCBtaW5TZjsKKwkJCQl3czEgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgJiAweGZmZmYpOworCQkJCXRpbWVTaWduYWxTYW1wbGU9ICooZGN0SW4xICsgRlJBTUVfTEVOX1NIT1JUKSA8PCBtaW5TZjsKKwkJCQl3czIgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgPj4gMTYpOworCQkJCSpvdXREYXRhMS0tID0gIC0oKHdzMSA+PiAyKSArICh3czIgPj4gMikpOyAgLyogc2hpZnQgMiB0byBhdm9pZCBvdmVyZmxvdyBuZXh0ICovDQorDQorCQkJCXdpblB0cisrOw0KKwkJCQlkY3RJbjArKzsNCisJCQkJZGN0SW4xLS07DQorCQkJfQorCisJCQlNZGN0X1Nob3J0KHJlYWxPdXQpOworCQkJcmVhbE91dCArPSBGUkFNRV9MRU5fU0hPUlQ7CisJCX0KKwkJDQorCQltaW5TZiA9IDExIC0gbWluU2Y7CisJCSptZGN0U2NhbGUgPSBtaW5TZjsgLyogdXBkYXRlIHNjYWxlIGZhY3RvciAqLworCQkKKwkJc2hpZnRNZGN0RGVsYXlCdWZmZXIobWRjdERlbGF5QnVmZmVyLHRpbWVTaWduYWwsY2hJbmNyZW1lbnQpOworCQlicmVhazsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1ybmIvZW5jL0FNUk5CRW5jb2Rlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1ybmIvZW5jL0FNUk5CRW5jb2Rlci5jcHAKaW5kZXggZjM0OTY3MS4uNGMwMmZlOSAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2Ftcm5iL2VuYy9BTVJOQkVuY29kZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJuYi9lbmMvQU1STkJFbmNvZGVyLmNwcApAQCAtMjksOCArMjksOSBAQAogc3RhdGljIGNvbnN0IGludDMyX3Qga051bVNhbXBsZXNQZXJGcmFtZSA9IDE2MDsKIHN0YXRpYyBjb25zdCBpbnQzMl90IGtTYW1wbGVSYXRlID0gODAwMDsKIAotQU1STkJFbmNvZGVyOjpBTVJOQkVuY29kZXIoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpCitBTVJOQkVuY29kZXI6OkFNUk5CRW5jb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSwgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKQogICAgIDogbVNvdXJjZShzb3VyY2UpLAorICAgICAgbU1ldGEobWV0YSksCiAgICAgICBtU3RhcnRlZChmYWxzZSksCiAgICAgICBtQnVmZmVyR3JvdXAoTlVMTCksCiAgICAgICBtRW5jU3RhdGUoTlVMTCksCkBAIC02OSw3ICs3MCwxMCBAQAogfQogCiBzdGF0dXNfdCBBTVJOQkVuY29kZXI6OnN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpIHsKLSAgICBDSEVDSyghbVN0YXJ0ZWQpOworICAgIGlmIChtU3RhcnRlZCkgeworICAgICAgICBMT0dXKCJDYWxsIHN0YXJ0KCkgd2hlbiBlbmNvZGVyIGFscmVhZHkgc3RhcnRlZCIpOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQogCiAgICAgbUJ1ZmZlckdyb3VwID0gbmV3IE1lZGlhQnVmZmVyR3JvdXA7CiAgICAgbUJ1ZmZlckdyb3VwLT5hZGRfYnVmZmVyKG5ldyBNZWRpYUJ1ZmZlcigzMikpOwpAQCAtNzgsNyArODIsNyBAQAogICAgICAgICAgICAgICAgICZtRW5jU3RhdGUsICZtU2lkU3RhdGUsIGZhbHNlIC8qIGR0eF9lbmFibGUgKi8pLAogICAgICAgICAgICAgIDApOwogCi0gICAgbVNvdXJjZS0+c3RhcnQoKTsKKyAgICBtU291cmNlLT5zdGFydChwYXJhbXMpOwogCiAgICAgbUFuY2hvclRpbWVVcyA9IDA7CiAgICAgbU51bUZyYW1lc091dHB1dCA9IDA7CkBAIC05Niw3ICsxMDAsMTAgQEAKIH0KIAogc3RhdHVzX3QgQU1STkJFbmNvZGVyOjpzdG9wKCkgewotICAgIENIRUNLKG1TdGFydGVkKTsKKyAgICBpZiAoIW1TdGFydGVkKSB7CisgICAgICAgIExPR1coIkNhbGwgc3RvcCgpIHdoZW4gZW5jb2RlciBoYXMgbm90IHN0YXJ0ZWQuIik7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CiAKICAgICBpZiAobUlucHV0QnVmZmVyKSB7CiAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwpAQCAtMTE5LDI4ICsxMjYsMTYgQEAKIHNwPE1ldGFEYXRhPiBBTVJOQkVuY29kZXI6OmdldEZvcm1hdCgpIHsKICAgICBzcDxNZXRhRGF0YT4gc3JjRm9ybWF0ID0gbVNvdXJjZS0+Z2V0Rm9ybWF0KCk7CiAKLSAgICBpbnQzMl90IG51bUNoYW5uZWxzOwotICAgIGludDMyX3Qgc2FtcGxlUmF0ZTsKLQotICAgIENIRUNLKHNyY0Zvcm1hdC0+ZmluZEludDMyKGtLZXlDaGFubmVsQ291bnQsICZudW1DaGFubmVscykpOwotICAgIENIRUNLX0VRKG51bUNoYW5uZWxzLCAxKTsKLQotICAgIENIRUNLKHNyY0Zvcm1hdC0+ZmluZEludDMyKGtLZXlTYW1wbGVSYXRlLCAmc2FtcGxlUmF0ZSkpOwotICAgIENIRUNLX0VRKHNhbXBsZVJhdGUsIGtTYW1wbGVSYXRlKTsKLQotICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbmV3IE1ldGFEYXRhOwotICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfTkIpOwotICAgIG1ldGEtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIG51bUNoYW5uZWxzKTsKLSAgICBtZXRhLT5zZXRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgc2FtcGxlUmF0ZSk7CisgICAgbU1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfTkIpOwogCiAgICAgaW50NjRfdCBkdXJhdGlvblVzOwogICAgIGlmIChzcmNGb3JtYXQtPmZpbmRJbnQ2NChrS2V5RHVyYXRpb24sICZkdXJhdGlvblVzKSkgewotICAgICAgICBtZXRhLT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIGR1cmF0aW9uVXMpOworICAgICAgICBtTWV0YS0+c2V0SW50NjQoa0tleUR1cmF0aW9uLCBkdXJhdGlvblVzKTsKICAgICB9CiAKLSAgICBtZXRhLT5zZXRDU3RyaW5nKGtLZXlEZWNvZGVyQ29tcG9uZW50LCAiQU1STkJFbmNvZGVyIik7CisgICAgbU1ldGEtPnNldENTdHJpbmcoa0tleURlY29kZXJDb21wb25lbnQsICJBTVJOQkVuY29kZXIiKTsKIAotICAgIHJldHVybiBtZXRhOworICAgIHJldHVybiBtTWV0YTsKIH0KIAogc3RhdHVzX3QgQU1STkJFbmNvZGVyOjpyZWFkKApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL0FNUldCRW5jb2Rlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvQU1SV0JFbmNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjU3YzZhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL0FNUldCRW5jb2Rlci5jcHAKQEAgLTAsMCArMSwyODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkFNUldCRW5jb2RlciIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgIkFNUldCRW5jb2Rlci5oIgorI2luY2x1ZGUgInZvQU1SV0IuaCIKKyNpbmNsdWRlICJjbW5NZW1vcnkuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyR3JvdXAuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0YXRpYyBjb25zdCBpbnQzMl90IGtOdW1TYW1wbGVzUGVyRnJhbWUgPSAzMjA7CitzdGF0aWMgY29uc3QgaW50MzJfdCBrQml0c1BlclNhbXBsZSA9IDE2Oworc3RhdGljIGNvbnN0IGludDMyX3Qga0lucHV0QnVmZmVyU2l6ZSA9IChrQml0c1BlclNhbXBsZSAvIDgpICoga051bVNhbXBsZXNQZXJGcmFtZTsKK3N0YXRpYyBjb25zdCBpbnQzMl90IGtTYW1wbGVSYXRlID0gMTYwMDA7CitzdGF0aWMgY29uc3QgaW50MzJfdCBrTnVtQ2hhbm5lbHMgPSAxOworCitBTVJXQkVuY29kZXI6OkFNUldCRW5jb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSwgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKQorICAgIDogbVNvdXJjZShzb3VyY2UpLAorICAgICAgbU1ldGEobWV0YSksCisgICAgICBtU3RhcnRlZChmYWxzZSksCisgICAgICBtQnVmZmVyR3JvdXAoTlVMTCksCisgICAgICBtSW5wdXRCdWZmZXIoTlVMTCksCisgICAgICBtRW5jb2RlckhhbmRsZShOVUxMKSwKKyAgICAgIG1BcGlIYW5kbGUoTlVMTCksCisgICAgICBtTWVtT3BlcmF0b3IoTlVMTCksCisgICAgICBtQW5jaG9yVGltZVVzKDApLAorICAgICAgbU51bUZyYW1lc091dHB1dCgwKSwKKyAgICAgIG1OdW1JbnB1dFNhbXBsZXMoMCkgeworfQorCitzdGF0aWMgVk9BTVJXQk1PREUgcGlja01vZGVGcm9tQml0UmF0ZShpbnQzMl90IGJwcykgeworICAgIENIRUNLKGJwcyA+PSAwKTsKKyAgICBpZiAoYnBzIDw9IDY2MDApIHsKKyAgICAgICAgcmV0dXJuIFZPQU1SV0JfTUQ2NjsKKyAgICB9IGVsc2UgaWYgKGJwcyA8PSA4ODUwKSB7CisgICAgICAgIHJldHVybiBWT0FNUldCX01EODg1OworICAgIH0gZWxzZSBpZiAoYnBzIDw9IDEyNjUwKSB7CisgICAgICAgIHJldHVybiBWT0FNUldCX01EMTI2NTsKKyAgICB9IGVsc2UgaWYgKGJwcyA8PSAxNDI1MCkgeworICAgICAgICByZXR1cm4gVk9BTVJXQl9NRDE0MjU7CisgICAgfSBlbHNlIGlmIChicHMgPD0gMTU4NTApIHsKKyAgICAgICAgcmV0dXJuIFZPQU1SV0JfTUQxNTg1OworICAgIH0gZWxzZSBpZiAoYnBzIDw9IDE4MjUwKSB7CisgICAgICAgIHJldHVybiBWT0FNUldCX01EMTgyNTsKKyAgICB9IGVsc2UgaWYgKGJwcyA8PSAxOTg1MCkgeworICAgICAgICByZXR1cm4gVk9BTVJXQl9NRDE5ODU7CisgICAgfSBlbHNlIGlmIChicHMgPD0gMjMwNTApIHsKKyAgICAgICAgcmV0dXJuIFZPQU1SV0JfTUQyMzA1OworICAgIH0KKyAgICByZXR1cm4gVk9BTVJXQl9NRDIzODU7Cit9CisKK3N0YXR1c190IEFNUldCRW5jb2Rlcjo6aW5pdENoZWNrKCkgeworICAgIENIRUNLKG1BcGlIYW5kbGUgPT0gTlVMTCAmJiBtRW5jb2RlckhhbmRsZSA9PSBOVUxMKTsKKyAgICBDSEVDSyhtTWV0YS0+ZmluZEludDMyKGtLZXlCaXRSYXRlLCAmbUJpdFJhdGUpKTsKKworICAgIG1BcGlIYW5kbGUgPSBuZXcgVk9fQVVESU9fQ09ERUNBUEk7CisgICAgQ0hFQ0sobUFwaUhhbmRsZSk7CisKKyAgICBpZiAoVk9fRVJSX05PTkUgIT0gdm9HZXRBTVJXQkVuY0FQSShtQXBpSGFuZGxlKSkgeworICAgICAgICBMT0dFKCJGYWlsZWQgdG8gZ2V0IGFwaSBoYW5kbGUiKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgbU1lbU9wZXJhdG9yID0gbmV3IFZPX01FTV9PUEVSQVRPUjsKKyAgICBDSEVDSyhtTWVtT3BlcmF0b3IgIT0gTlVMTCk7CisgICAgbU1lbU9wZXJhdG9yLT5BbGxvYyA9IGNtbk1lbUFsbG9jOworICAgIG1NZW1PcGVyYXRvci0+Q29weSA9IGNtbk1lbUNvcHk7CisgICAgbU1lbU9wZXJhdG9yLT5GcmVlID0gY21uTWVtRnJlZTsKKyAgICBtTWVtT3BlcmF0b3ItPlNldCA9IGNtbk1lbVNldDsKKyAgICBtTWVtT3BlcmF0b3ItPkNoZWNrID0gY21uTWVtQ2hlY2s7CisKKyAgICBWT19DT0RFQ19JTklUX1VTRVJEQVRBIHVzZXJEYXRhOworICAgIG1lbXNldCgmdXNlckRhdGEsIDAsIHNpemVvZih1c2VyRGF0YSkpOworICAgIHVzZXJEYXRhLm1lbWZsYWcgPSBWT19JTUZfVVNFUk1FTU9QRVJBVE9SOworICAgIHVzZXJEYXRhLm1lbURhdGEgPSAoVk9fUFRSKSBtTWVtT3BlcmF0b3I7CisgICAgaWYgKFZPX0VSUl9OT05FICE9IG1BcGlIYW5kbGUtPkluaXQoJm1FbmNvZGVySGFuZGxlLCBWT19BVURJT19Db2RpbmdBTVJXQiwgJnVzZXJEYXRhKSkgeworICAgICAgICBMT0dFKCJGYWlsZWQgdG8gaW5pdCBBTVJXQiBlbmNvZGVyIik7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIC8vIENvbmZpZ3VyZSBBTVJXQiBlbmNvZGVyJAorICAgIFZPQU1SV0JNT0RFIG1vZGUgPSBwaWNrTW9kZUZyb21CaXRSYXRlKG1CaXRSYXRlKTsKKyAgICBpZiAoVk9fRVJSX05PTkUgIT0gbUFwaUhhbmRsZS0+U2V0UGFyYW0obUVuY29kZXJIYW5kbGUsIFZPX1BJRF9BTVJXQl9NT0RFLCAgJm1vZGUpKSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBzZXQgQU1SV0IgZW5jb2RlciBtb2RlIHRvICVkIiwgbW9kZSk7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIFZPQU1SV0JGUkFNRVRZUEUgdHlwZSA9IFZPQU1SV0JfUkZDMzI2NzsKKyAgICBpZiAoVk9fRVJSX05PTkUgIT0gbUFwaUhhbmRsZS0+U2V0UGFyYW0obUVuY29kZXJIYW5kbGUsIFZPX1BJRF9BTVJXQl9GUkFNRVRZUEUsICZ0eXBlKSkgeworICAgICAgICBMT0dFKCJGYWlsZWQgdG8gc2V0IEFNUldCIGVuY29kZXIgZnJhbWUgdHlwZSB0byAlZCIsIHR5cGUpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gT0s7Cit9CisKK0FNUldCRW5jb2Rlcjo6fkFNUldCRW5jb2RlcigpIHsKKyAgICBpZiAobVN0YXJ0ZWQpIHsKKyAgICAgICAgc3RvcCgpOworICAgIH0KK30KKworc3RhdHVzX3QgQU1SV0JFbmNvZGVyOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CisgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIExPR1coIkNhbGwgc3RhcnQoKSB3aGVuIGVuY29kZXIgYWxyZWFkeSBzdGFydGVkIik7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBtQnVmZmVyR3JvdXAgPSBuZXcgTWVkaWFCdWZmZXJHcm91cDsKKworICAgIC8vIFRoZSBsYXJnZXN0IGJ1ZmZlciBzaXplIGlzIGhlYWRlciArIDQ3NyBiaXRzCisgICAgbUJ1ZmZlckdyb3VwLT5hZGRfYnVmZmVyKG5ldyBNZWRpYUJ1ZmZlcigxMDI0KSk7CisKKyAgICBDSEVDS19FUShPSywgaW5pdENoZWNrKCkpOworCisgICAgbU51bUZyYW1lc091dHB1dCA9IDA7CisgICAgbVNvdXJjZS0+c3RhcnQocGFyYW1zKTsKKworICAgIG1TdGFydGVkID0gdHJ1ZTsKKworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgQU1SV0JFbmNvZGVyOjpzdG9wKCkgeworICAgIGlmICghbVN0YXJ0ZWQpIHsKKyAgICAgICAgTE9HVygiQ2FsbCBzdG9wKCkgd2hlbiBlbmNvZGVyIGhhcyBub3Qgc3RhcnRlZCIpOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgaWYgKG1JbnB1dEJ1ZmZlcikgeworICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICBkZWxldGUgbUJ1ZmZlckdyb3VwOworICAgIG1CdWZmZXJHcm91cCA9IE5VTEw7CisKKworICAgIENIRUNLX0VRKFZPX0VSUl9OT05FLCBtQXBpSGFuZGxlLT5VbmluaXQobUVuY29kZXJIYW5kbGUpKTsKKyAgICBtRW5jb2RlckhhbmRsZSA9IE5VTEw7CisKKyAgICBkZWxldGUgbUFwaUhhbmRsZTsKKyAgICBtQXBpSGFuZGxlID0gTlVMTDsKKworICAgIGRlbGV0ZSBtTWVtT3BlcmF0b3I7CisgICAgbU1lbU9wZXJhdG9yOworCisgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKKworICAgIG1Tb3VyY2UtPnN0b3AoKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3NwPE1ldGFEYXRhPiBBTVJXQkVuY29kZXI6OmdldEZvcm1hdCgpIHsKKyAgICBzcDxNZXRhRGF0YT4gc3JjRm9ybWF0ID0gbVNvdXJjZS0+Z2V0Rm9ybWF0KCk7CisKKyAgICBtTWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9XQik7CisKKyAgICBpbnQ2NF90IGR1cmF0aW9uVXM7CisgICAgaWYgKHNyY0Zvcm1hdC0+ZmluZEludDY0KGtLZXlEdXJhdGlvbiwgJmR1cmF0aW9uVXMpKSB7CisgICAgICAgIG1NZXRhLT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIGR1cmF0aW9uVXMpOworICAgIH0KKworICAgIG1NZXRhLT5zZXRDU3RyaW5nKGtLZXlEZWNvZGVyQ29tcG9uZW50LCAiQU1SV0JFbmNvZGVyIik7CisKKyAgICByZXR1cm4gbU1ldGE7Cit9CisKK3N0YXR1c190IEFNUldCRW5jb2Rlcjo6cmVhZCgKKyAgICAgICAgTWVkaWFCdWZmZXIgKipvdXQsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zKSB7CisgICAgc3RhdHVzX3QgZXJyOworCisgICAgKm91dCA9IE5VTEw7CisKKyAgICBpbnQ2NF90IHNlZWtUaW1lVXM7CisgICAgQ0hFQ0sob3B0aW9ucyA9PSBOVUxMIHx8ICFvcHRpb25zLT5nZXRTZWVrVG8oJnNlZWtUaW1lVXMpKTsKKworICAgIHdoaWxlIChtTnVtSW5wdXRTYW1wbGVzIDwga051bVNhbXBsZXNQZXJGcmFtZSkgeworICAgICAgICBpZiAobUlucHV0QnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVyciA9IG1Tb3VyY2UtPnJlYWQoJm1JbnB1dEJ1ZmZlciwgb3B0aW9ucyk7CisKKyAgICAgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgICAgICBpZiAobU51bUlucHV0U2FtcGxlcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUl9FTkRfT0ZfU1RSRUFNOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZW1zZXQoJm1JbnB1dEZyYW1lW21OdW1JbnB1dFNhbXBsZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaW50MTZfdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIChrTnVtU2FtcGxlc1BlckZyYW1lIC0gbU51bUlucHV0U2FtcGxlcykpOworICAgICAgICAgICAgICAgIG1OdW1JbnB1dFNhbXBsZXMgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaXplX3QgYWxpZ24gPSBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpICUgc2l6ZW9mKGludDE2X3QpOworICAgICAgICAgICAgQ0hFQ0tfRVEoYWxpZ24sIDApOworCisgICAgICAgICAgICBpbnQ2NF90IHRpbWVVczsKKyAgICAgICAgICAgIGlmIChtSW5wdXRCdWZmZXItPm1ldGFfZGF0YSgpLT5maW5kSW50NjQoa0tleVRpbWUsICZ0aW1lVXMpKSB7CisgICAgICAgICAgICAgICAgbUFuY2hvclRpbWVVcyA9IHRpbWVVczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBjb3B5ID0KKyAgICAgICAgICAgIChrTnVtU2FtcGxlc1BlckZyYW1lIC0gbU51bUlucHV0U2FtcGxlcykgKiBzaXplb2YoaW50MTZfdCk7CisKKyAgICAgICAgaWYgKGNvcHkgPiBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpKSB7CisgICAgICAgICAgICBjb3B5ID0gbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweSgmbUlucHV0RnJhbWVbbU51bUlucHV0U2FtcGxlc10sCisgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKW1JbnB1dEJ1ZmZlci0+ZGF0YSgpCisgICAgICAgICAgICAgICAgICAgICsgbUlucHV0QnVmZmVyLT5yYW5nZV9vZmZzZXQoKSwKKyAgICAgICAgICAgICAgIGNvcHkpOworCisgICAgICAgIG1JbnB1dEJ1ZmZlci0+c2V0X3JhbmdlKAorICAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCkgKyBjb3B5LAorICAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgLSBjb3B5KTsKKworICAgICAgICBpZiAobUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBtTnVtSW5wdXRTYW1wbGVzICs9IGNvcHkgLyBzaXplb2YoaW50MTZfdCk7CisgICAgICAgIGlmIChtTnVtSW5wdXRTYW1wbGVzID49IGtOdW1TYW1wbGVzUGVyRnJhbWUpIHsKKyAgICAgICAgICAgIG1OdW1JbnB1dFNhbXBsZXMgJT0ga051bVNhbXBsZXNQZXJGcmFtZTsKKyAgICAgICAgICAgIGJyZWFrOyAgLy8gR2V0IGEgd2hvbGUgaW5wdXQgZnJhbWUgNjQwIGJ5dGVzCisgICAgICAgIH0KKyAgICB9CisKKyAgICBWT19DT0RFQ0JVRkZFUiBpbnB1dERhdGE7CisgICAgbWVtc2V0KCZpbnB1dERhdGEsIDAsIHNpemVvZihpbnB1dERhdGEpKTsKKyAgICBpbnB1dERhdGEuQnVmZmVyID0gKHVuc2lnbmVkIGNoYXIqKSBtSW5wdXRGcmFtZTsKKyAgICBpbnB1dERhdGEuTGVuZ3RoID0ga0lucHV0QnVmZmVyU2l6ZTsKKyAgICBDSEVDSyhWT19FUlJfTk9ORSA9PSBtQXBpSGFuZGxlLT5TZXRJbnB1dERhdGEobUVuY29kZXJIYW5kbGUsJmlucHV0RGF0YSkpOworCisgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlcjsKKyAgICBDSEVDS19FUShtQnVmZmVyR3JvdXAtPmFjcXVpcmVfYnVmZmVyKCZidWZmZXIpLCBPSyk7CisgICAgdWludDhfdCAqb3V0UHRyID0gKHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKTsKKworICAgIFZPX0NPREVDQlVGRkVSIG91dHB1dERhdGE7CisgICAgbWVtc2V0KCZvdXRwdXREYXRhLCAwLCBzaXplb2Yob3V0cHV0RGF0YSkpOworICAgIFZPX0FVRElPX09VVFBVVElORk8gb3V0cHV0SW5mbzsKKyAgICBtZW1zZXQoJm91dHB1dEluZm8sIDAsIHNpemVvZihvdXRwdXRJbmZvKSk7CisKKyAgICBWT19VMzIgcmV0ID0gVk9fRVJSX05PTkU7CisgICAgb3V0cHV0RGF0YS5CdWZmZXIgPSBvdXRQdHI7CisgICAgb3V0cHV0RGF0YS5MZW5ndGggPSBidWZmZXItPnNpemUoKTsKKyAgICByZXQgPSBtQXBpSGFuZGxlLT5HZXRPdXRwdXREYXRhKG1FbmNvZGVySGFuZGxlLCAmb3V0cHV0RGF0YSwgJm91dHB1dEluZm8pOworICAgIENIRUNLKHJldCA9PSBWT19FUlJfTk9ORSB8fCByZXQgPT0gVk9fRVJSX0lOUFVUX0JVRkZFUl9TTUFMTCk7CisKKyAgICBidWZmZXItPnNldF9yYW5nZSgwLCBvdXRwdXREYXRhLkxlbmd0aCk7CisgICAgKyttTnVtRnJhbWVzT3V0cHV0OworCisgICAgLy8gWFhYOiBmaXggdGltZXN0YW1wIGNhbGN1bGF0aW9uCisgICAgaW50NjRfdCB0aW1lc3RhbXBVcyA9IG1OdW1GcmFtZXNPdXRwdXQgKiAyMDAwMExMOworCisgICAgYnVmZmVyLT5tZXRhX2RhdGEoKS0+c2V0SW50NjQoa0tleVRpbWUsIHRpbWVzdGFtcFVzKTsKKworICAgICpvdXQgPSBidWZmZXI7CisgICAgcmV0dXJuIE9LOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjkzMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL0FuZHJvaWQubWsKQEAgLTAsMCArMSwxMjAgQEAKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQoraW5jbHVkZSBmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9Db25maWcubWsKKworTE9DQUxfUFJFTElOS19NT0RVTEUgOj0gZmFsc2UKKyAJCitMT0NBTF9TUkNfRklMRVMgOj0gXAorCUFNUldCRW5jb2Rlci5jcHAgXAorCXNyYy9hdXRvY29yci5jIFwKKwlzcmMvYXpfaXNwLmMgXAorCXNyYy9iaXRzLmMgXAorCXNyYy9jMnQ2NGZ4LmMgXAorCXNyYy9jNHQ2NGZ4LmMgXAorCXNyYy9jb252b2x2ZS5jIFwKKwlzcmMvY29yX2hfeC5jIFwKKwlzcmMvZGVjaW01NC5jIFwKKwlzcmMvZGVlbXBoLmMgXAorCXNyYy9kdHguYyBcCisJc3JjL2dfcGl0Y2guYyBcCisJc3JjL2dwY2xpcC5jIFwKKwlzcmMvaG9taW5nLmMgXAorCXNyYy9ocDQwMC5jIFwKKwlzcmMvaHA1MC5jIFwKKwlzcmMvaHA2ay5jIFwKKwlzcmMvaHBfd3NwLmMgXAorCXNyYy9pbnRfbHBjLmMgXAorCXNyYy9pc3BfYXouYyBcCisJc3JjL2lzcF9pc2YuYyBcCisJc3JjL2xhZ193aW5kLmMgXAorCXNyYy9sZXZpbnNvbi5jIFwKKwlzcmMvbG9nMi5jIFwKKwlzcmMvbHBfZGVjMi5jIFwKKwlzcmMvbWF0aF9vcC5jIFwKKwlzcmMvb3Blcl8zMmIuYyBcCisJc3JjL3BfbWVkX29sLmMgXAorCXNyYy9waXRfc2hycC5jIFwKKwlzcmMvcGl0Y2hfZjQuYyBcCisJc3JjL3ByZWRfbHQ0LmMgXAorCXNyYy9wcmVlbXBoLmMgXAorCXNyYy9xX2dhaW4yLmMgXAorCXNyYy9xX3B1bHNlLmMgXAorCXNyYy9xaXNmX25zLmMgXAorCXNyYy9xcGlzZl8ycy5jIFwKKwlzcmMvcmFuZG9tLmMgXAorCXNyYy9yZXNpZHUuYyBcCisJc3JjL3NjYWxlLmMgXAorCXNyYy9zdHJlYW0uYyBcCisJc3JjL3N5bl9maWx0LmMgXAorCXNyYy91cGR0X3Rhci5jIFwKKwlzcmMvdXRpbC5jIFwKKwlzcmMvdm9BTVJXQkVuYy5jIFwKKwlzcmMvdm9pY2VmYWMuYyBcCisJc3JjL3diX3ZhZC5jIFwKKwlzcmMvd2VpZ2h0X2EuYyBcCisJc3JjL21lbV9hbGlnbi5jCisKKworaWZlcSAoJChWT1RUKSwgdjUpCitMT0NBTF9TUkNfRklMRVMgKz0gXAorCXNyYy9hc20vQVJNVjVFL2NvbnZvbHZlX29wdC5zIFwKKwlzcmMvYXNtL0FSTVY1RS9jb3JfaF92ZWNfb3B0LnMgXAorCXNyYy9hc20vQVJNVjVFL0RlZW1waF8zMl9vcHQucyBcCisJc3JjL2FzbS9BUk1WNUUvRG90X3Bfb3B0LnMgXAorCXNyYy9hc20vQVJNVjVFL0ZpbHRfNmtfN2tfb3B0LnMgXAorCXNyYy9hc20vQVJNVjVFL05vcm1fQ29ycl9vcHQucyBcCisJc3JjL2FzbS9BUk1WNUUvcHJlZF9sdDRfMV9vcHQucyBcCisJc3JjL2FzbS9BUk1WNUUvcmVzaWR1X2FzbV9vcHQucyBcCisJc3JjL2FzbS9BUk1WNUUvc2NhbGVfc2lnX29wdC5zIFwKKwlzcmMvYXNtL0FSTVY1RS9TeW5fZmlsdF8zMl9vcHQucyBcCisJc3JjL2FzbS9BUk1WNUUvc3luX2ZpbHRfb3B0LnMKKworZW5kaWYKKworaWZlcSAoJChWT1RUKSwgdjcpCitMT0NBTF9TUkNfRklMRVMgKz0gXAorCXNyYy9hc20vQVJNVjcvY29udm9sdmVfbmVvbi5zIFwKKwlzcmMvYXNtL0FSTVY3L2Nvcl9oX3ZlY19uZW9uLnMgXAorCXNyYy9hc20vQVJNVjcvRGVlbXBoXzMyX25lb24ucyBcCisJc3JjL2FzbS9BUk1WNy9Eb3RfcF9uZW9uLnMgXAorCXNyYy9hc20vQVJNVjcvRmlsdF82a183a19uZW9uLnMgXAorCXNyYy9hc20vQVJNVjcvTm9ybV9Db3JyX25lb24ucyBcCisJc3JjL2FzbS9BUk1WNy9wcmVkX2x0NF8xX25lb24ucyBcCisJc3JjL2FzbS9BUk1WNy9yZXNpZHVfYXNtX25lb24ucyBcCisJc3JjL2FzbS9BUk1WNy9zY2FsZV9zaWdfbmVvbi5zIFwKKwlzcmMvYXNtL0FSTVY3L1N5bl9maWx0XzMyX25lb24ucyBcCisJc3JjL2FzbS9BUk1WNy9zeW5fZmlsdF9uZW9uLnMKKworZW5kaWYKKworTE9DQUxfTU9EVUxFIDo9IGxpYnN0YWdlZnJpZ2h0X2FtcndiZW5jCisKK0xPQ0FMX0FSTV9NT0RFIDo9IGFybQorCitMT0NBTF9TVEFUSUNfTElCUkFSSUVTIDo9IAorCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9CisKK0xPQ0FMX0NfSU5DTFVERVMgOj0gXAorCWZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlIFwKKwlmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlIFwKKwlmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZSBcCisJJChMT0NBTF9QQVRIKS9zcmMgXAorCSQoTE9DQUxfUEFUSCkvaW5jCisKK0xPQ0FMX0NGTEFHUyA6PSAkKFZPX0NGTEFHUykKKworaWZlcSAoJChWT1RUKSwgdjUpCitMT0NBTF9DRkxBR1MgKz0gLURBUk0gLURBU01fT1BUCitMT0NBTF9DX0lOQ0xVREVTICs9ICQoTE9DQUxfUEFUSCkvc3JjL2FzbS9BUk1WNUUKK2VuZGlmCisKK2lmZXEgKCQoVk9UVCksIHY3KQorTE9DQUxfQ0ZMQUdTICs9IC1EQVJNIC1EQVJNVjcgLURBU01fT1BUCitMT0NBTF9DX0lOQ0xVREVTICs9ICQoTE9DQUxfUEFUSCkvc3JjL2FzbS9BUk1WNUUKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChMT0NBTF9QQVRIKS9zcmMvYXNtL0FSTVY3CitlbmRpZgorCitpbmNsdWRlICQoQlVJTERfU1RBVElDX0xJQlJBUlkpCisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL1NhbXBsZUNvZGUvQU1SV0JfRV9TQU1QTEUuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL0FNUldCX0VfU0FNUExFLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkyZDNjYwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL0FNUldCX0VfU0FNUExFLmMKQEAgLTAsMCArMSwzNjQgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorI2lmZGVmIExJTlVYDQorI2luY2x1ZGUgPGRsZmNuLmg+DQorI2VuZGlmDQorDQorI2luY2x1ZGUgICAgICA8c3RkaW8uaD4NCisjaW5jbHVkZSAgICAgIDxzdGRsaWIuaD4NCisjaW5jbHVkZSAgICAgIDx0aW1lLmg+DQorI2luY2x1ZGUgICAgICAidm9BTVJXQi5oIg0KKyNpbmNsdWRlICAgICAgImNtbk1lbW9yeS5oIg0KKw0KKyNkZWZpbmUgVk9BTVJXQl9SRkMzMjY3X0hFQURFUl9JTkZPICIjIUFNUi1XQlxuIg0KKw0KKyNkZWZpbmUgIElOUFVUX1NJWkUgICA2NDANCisjZGVmaW5lICBPVVRQVVRfU0laRSAgMTAyNA0KK3Vuc2lnbmVkIGNoYXIgIElucHV0QnVmW0lOUFVUX1NJWkVdOw0KK3Vuc2lnbmVkIGNoYXIgIE91dHB1dEJ1ZltPVVRQVVRfU0laRV07DQorDQordm9pZCB1c2FnZSAodm9pZCkgew0KKwlwcmludGYgKCJBTVJfV0IgRW5jb2RlciBIRUxQICAgRGlzcGxheXMgdGhpcyB0ZXh0XG4iKTsNCisJcHJpbnRmICgiXG4iKTsNCisJcHJpbnRmICgiVXNhZ2U6XG4iKTsNCisJcHJpbnRmICgiQU1SV0JFbmMgW29wdGlvbnNdIElucHV0X2ZpbGUgb3V0cHV0X2ZpbGUgXG4iKTsNCisJcHJpbnRmICgiXG4iKTsNCisJcHJpbnRmICgiT3B0aW9ucyArTSogK0YqICtEVFggXG4iKTsNCisJcHJpbnRmICgiU3VwcG9ydCBcbiIpOw0KKwlwcmludGYgKCJPcHRpb25zICtNKiBmb3Igc2V0aW5nIGNvbXByZXNzaW9uIGJpdHJhdGUgbW9kZSwgZGVmYXVsdCBpcyAyMy44NWticHNcbiIpOw0KKwlwcmludGYgKCIgK00wID0gNi42a2JwcyBcbiIpOw0KKwlwcmludGYgKCIgK00xID0gOC44NWticHMgXG4iKTsNCisJcHJpbnRmICgiICtNMiA9IDEyLjY1a2JwcyBcbiIpOw0KKwlwcmludGYgKCIgK00zID0gMTQuMjVrYnBzIFxuIik7DQorCXByaW50ZiAoIiArTTQgPSAxNS41OGticHMgXG4iKTsNCisJcHJpbnRmICgiICtNNSA9IDE4LjI1a2JwcyBcbiIpOw0KKwlwcmludGYgKCIgK002ID0gMTkuODVrYnBzIFxuIik7DQorCXByaW50ZiAoIiArTTcgPSAyMy4wNWticHMgXG4iKTsNCisJcHJpbnRmICgiICtNOCA9IDIzLjg1a2JwcyBcbiIpOw0KKwlwcmludGYgKCJcbiIpOw0KKwlwcmludGYgKCJPcHRpb25zICtGKiBmb3Igc2V0dGluZyBvdXRwdXQgZnJhbWUgVHlwZSwgZGVmYXVsdCBpcyBSRkMzMjY3IFxuIik7DQorCXByaW50ZiAoIitGMCBmb3IgQU1SX1dCIERlZnVhbHQgYml0IGV4dGVybiBzaG9ydCBkYXRhIGZyYW1lIHR5cGUgXG4iKTsNCisJcHJpbnRmICgiK0YxIGZvciBBTVJfV0JfSVRVIGJpdCBleHRlcm4gc2hvcnQgZGF0YSBmcmFtZSB0eXBlIFxuIik7DQorCXByaW50ZiAoIitGMiBmb3IgUkZDMzI2N1xuICIpOw0KKwlwcmludGYgKCJcbiIpOw0KKwlwcmludGYgKCJPcHRpb25zICtEVFggZW5hYmxlIERUWCBtb2RlLCBkZWZhdWx0IGlzIGRpc2FibGUuXG4iKTsNCisJcHJpbnRmICgiRmlsZSBuYW1lcywgaW5wdXQgcmF3IFBDTSBkYXRhLCBhbmQgb3V0cHV0IGlzIEFNUl9XQiBiaXQtc3RyZWFtIGZpbGUuXG4iKTsNCisJcHJpbnRmICgiXG4iKTsNCit9DQorDQoraW50ICBHZXROZXh0QnVmKEZJTEUqIGluRmlsZSx1bnNpZ25lZCBjaGFyKiBkc3QsaW50IHNpemUpDQorew0KKwlpbnQgc2l6ZTIgPSAoaW50KWZyZWFkKGRzdCwgc2l6ZW9mKHNpZ25lZCBjaGFyKSwgc2l6ZSxpbkZpbGUpOw0KKwlyZXR1cm4gc2l6ZTI7DQorfQ0KKw0KK3R5cGVkZWYgaW50IChWT19BUEkgKiBWT0dFVEFVRElPRU5DQVBJKSAoVk9fQVVESU9fQ09ERUNBUEkgKiBwRW5jSGFuZGxlKTsNCisNCitpbnQgZW5jb2RlKA0KKwkJICAgaW50IG1vZGUsIA0KKwkJICAgc2hvcnQgICBhbGxvd19kdHgsDQorCQkgICBWT0FNUldCRlJBTUVUWVBFIGZyYW1lVHlwZSwNCisJCSAgIGNvbnN0IGNoYXIqIHNyY2ZpbGUsIA0KKwkJICAgY29uc3QgY2hhciogZHN0ZmlsZQ0KKwkJICAgKQ0KK3sNCisJaW50CQkJcmV0ID0gMDsNCisJaW50ICAgICAgICAgcmV0dXJuQ29kZTsNCisJRklMRQkJKmZzcmMgPSBOVUxMOw0KKwlGSUxFCQkqZmRzdCA9IE5VTEw7DQorCWludCAgICAgICAgIGZyYW1lbnVtID0gMDsNCisJaW50ICAgICAgICAgZW9mRmlsZSA9IDA7DQorCWludCAgICAgICAgIHNpemUxID0gMDsNCisJaW50ICAgICAgICAgUmVsZW5zOw0KKw0KKwlWT19BVURJT19DT0RFQ0FQSSAgICAgICBBdWRpb0FQSTsNCisJVk9fTUVNX09QRVJBVE9SICAgICAgICAgbW9wZXI7DQorCVZPX0NPREVDX0lOSVRfVVNFUkRBVEEgIHVzZURhdGE7DQorCVZPX0hBTkRMRSAgICAgICAgICAgICAgIGhDb2RlYzsNCisJVk9fQ09ERUNCVUZGRVIgICAgICAgICAgaW5EYXRhOw0KKwlWT19DT0RFQ0JVRkZFUiAgICAgICAgICBvdXREYXRhOw0KKwlWT19BVURJT19PVVRQVVRJTkZPICAgICBvdXRGb3JtYXQ7DQorDQorCXVuc2lnbmVkIGNoYXIgKmluQnVmID0gSW5wdXRCdWY7DQorCXVuc2lnbmVkIGNoYXIgKm91dEJ1ZiA9IE91dHB1dEJ1ZjsNCisNCisNCisjaWZkZWYgTElOVVgNCisJdm9pZCAgKmhhbmRsZSA9IE5VTEw7DQorCXZvaWQgICpwZnVuYzsNCisJVk9HRVRBVURJT0VOQ0FQSSBwR2V0QVBJOw0KKyNlbmRpZg0KKw0KKwljbG9ja190ICAgc3RhcnQsIGZpbmlzaDsNCisJZG91YmxlICAgIGR1cmF0aW9uID0gMC4wOw0KKw0KKwlpZiAoKGZzcmMgPSBmb3BlbiAoc3JjZmlsZSwgInJiIikpID09IE5VTEwpDQorCXsNCisJCXJldCA9IC0xOw0KKwkJZ290byBzYWZlX2V4aXQ7DQorCX0NCisNCisJaWYgKChmZHN0ID0gZm9wZW4gKGRzdGZpbGUsICJ3YiIpKSA9PSBOVUxMKQ0KKwl7DQorCQlyZXQgPSAtMTsNCisJCWdvdG8gc2FmZV9leGl0Ow0KKwl9DQorDQorCW1vcGVyLkFsbG9jID0gY21uTWVtQWxsb2M7DQorCW1vcGVyLkNvcHkgPSBjbW5NZW1Db3B5Ow0KKwltb3Blci5GcmVlID0gY21uTWVtRnJlZTsNCisJbW9wZXIuU2V0ID0gY21uTWVtU2V0Ow0KKwltb3Blci5DaGVjayA9IGNtbk1lbUNoZWNrOw0KKw0KKwl1c2VEYXRhLm1lbWZsYWcgPSBWT19JTUZfVVNFUk1FTU9QRVJBVE9SOw0KKwl1c2VEYXRhLm1lbURhdGEgPSAoVk9fUFRSKSgmbW9wZXIpOw0KKw0KKyNpZmRlZiBMSU5VWA0KKwloYW5kbGUgPSBkbG9wZW4oIi9kYXRhL2xvY2FsL3RtcC92b0FNUldCRW5jLnNvIiwgUlRMRF9OT1cpOw0KKwlpZihoYW5kbGUgPT0gMCkNCisJew0KKwkJcHJpbnRmKCJvcGVuIGRsbCBlcnJvci4uLi4uLiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQorDQorCXBmdW5jID0gZGxzeW0oaGFuZGxlLCAidm9HZXRBTVJXQkVuY0FQSSIpOwkNCisJaWYocGZ1bmMgPT0gMCkNCisJew0KKwkJcHJpbnRmKCJvcGVuIGZ1bmN0aW9uIGVycm9yLi4uLi4uIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisNCisJcEdldEFQSSA9IChWT0dFVEFVRElPRU5DQVBJKXBmdW5jOw0KKw0KKwlyZXR1cm5Db2RlICA9IHBHZXRBUEkoJkF1ZGlvQVBJKTsNCisJaWYocmV0dXJuQ29kZSkNCisJew0KKwkJcHJpbnRmKCJnZXQgQVBJcyBlcnJvci4uLi4uLiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQorI2Vsc2UNCisJcmV0ID0gdm9HZXRBTVJXQkVuY0FQSSgmQXVkaW9BUEkpOw0KKwlpZihyZXQpDQorCXsNCisJCXJldCA9IC0xOw0KKwkJcHJpbnRmKCJnZXQgQVBJcyBlcnJvci4uLi4uLiIpOw0KKwkJZ290byBzYWZlX2V4aXQ7DQorCX0NCisjZW5kaWYgDQorDQorCS8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgSW5pdCBFbmNvZGluZyBTZWN0aW9uICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisJcmV0ID0gQXVkaW9BUEkuSW5pdCgmaENvZGVjLCBWT19BVURJT19Db2RpbmdBTVJXQiwgJnVzZURhdGEpOw0KKw0KKwlpZihyZXQpDQorCXsNCisJCXJldCA9IC0xOw0KKwkJcHJpbnRmKCJBUElzIGluaXQgZXJyb3IuLi4uLi4iKTsNCisJCWdvdG8gc2FmZV9leGl0Ow0KKwl9DQorDQorCVJlbGVucyA9IEdldE5leHRCdWYoZnNyYyxJbnB1dEJ1ZixJTlBVVF9TSVpFKTsNCisJaWYoUmVsZW5zIT1JTlBVVF9TSVpFICYmICFmZW9mKGZzcmMpKQ0KKwl7DQorCQlyZXQgPSAtMTsgLy9JbnZhbGlkIG1hZ2ljIG51bWJlcg0KKwkJcHJpbnRmKCJnZXQgbmV4dCBidWZmZXIgZXJyb3IuLi4uLi4iKTsNCisJCWdvdG8gc2FmZV9leGl0Ow0KKwl9DQorDQorCS8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgc2V0IGVuY29kZSBNb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorCXJldCA9IEF1ZGlvQVBJLlNldFBhcmFtKGhDb2RlYywgVk9fUElEX0FNUldCX0ZSQU1FVFlQRSwgJmZyYW1lVHlwZSk7DQorCXJldCA9IEF1ZGlvQVBJLlNldFBhcmFtKGhDb2RlYywgVk9fUElEX0FNUldCX01PREUsICZtb2RlKTsNCisJcmV0ID0gQXVkaW9BUEkuU2V0UGFyYW0oaENvZGVjLCBWT19QSURfQU1SV0JfRFRYLCAmYWxsb3dfZHR4KTsNCisNCisJaWYoZnJhbWVUeXBlID09IFZPQU1SV0JfUkZDMzI2NykNCisJew0KKwkJLyogd3JpdGUgUkZDMzI2NyBIZWFkZXIgaW5mbyB0byBpbmRpY2F0ZSBzaW5nbGUgY2hhbm5lbCBBTVIgZmlsZSBzdG9yYWdlIGZvcm1hdCAqLw0KKwkJc2l6ZTEgPSAoaW50KXN0cmxlbihWT0FNUldCX1JGQzMyNjdfSEVBREVSX0lORk8pOw0KKwkJbWVtY3B5KG91dEJ1ZiwgVk9BTVJXQl9SRkMzMjY3X0hFQURFUl9JTkZPLCBzaXplMSk7DQorCQlvdXRCdWYgKz0gc2l6ZTE7DQorCX0NCisNCisJLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICBFbmNvZGluZyBTZWN0aW9uICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisJcHJpbnRmKCIgXG4gLS0tLS0tLS0tLS0tLS0tLSBSdW5uaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAiKTsNCisNCisJZG97DQorCQlpbkRhdGEuQnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKilpbkJ1ZjsNCisJCWluRGF0YS5MZW5ndGggPSBSZWxlbnM7DQorCQlvdXREYXRhLkJ1ZmZlciA9IG91dEJ1ZjsNCisNCisJCXN0YXJ0ID0gY2xvY2soKTsNCisNCisJCS8qIGRlY29kZSBvbmUgYW1yIGJsb2NrICovDQorCQlyZXR1cm5Db2RlID0gQXVkaW9BUEkuU2V0SW5wdXREYXRhKGhDb2RlYywmaW5EYXRhKTsNCisNCisJCWRvIHsNCisJCQlyZXR1cm5Db2RlID0gQXVkaW9BUEkuR2V0T3V0cHV0RGF0YShoQ29kZWMsJm91dERhdGEsICZvdXRGb3JtYXQpOw0KKwkJCWlmKHJldHVybkNvZGUgPT0gMCkNCisJCQl7DQorCQkJCWZyYW1lbnVtKys7DQorCQkJCXByaW50ZigiIEZyYW1lcyBwcm9jZXNzZWQ6ICVoZFxyIiwgZnJhbWVudW0pOw0KKwkJCQlpZihmcmFtZW51bSA9PSAxKQ0KKwkJCQl7DQorCQkJCQlmd3JpdGUoT3V0cHV0QnVmLCAxLCBvdXREYXRhLkxlbmd0aCArIHNpemUxLCBmZHN0KTsNCisJCQkJCWZmbHVzaChmZHN0KTsJDQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJCQl7DQorCQkJCQlmd3JpdGUob3V0RGF0YS5CdWZmZXIsIDEsIG91dERhdGEuTGVuZ3RoLCBmZHN0KTsNCisJCQkJCWZmbHVzaChmZHN0KTsNCisJCQkJfQ0KKwkJCX0NCisJCQllbHNlIGlmKHJldHVybkNvZGUgPT0gVk9fRVJSX0xJQ0VOU0VfRVJST1IpDQorCQkJew0KKwkJICAgICAgICBwcmludGYoIkVuY29kZXIgdGltZSByZWFjaCB1cHBlciBsaW1pdC4uLi4uLiIpOw0KKwkJICAgICAgICBnb3RvIHNhZmVfZXhpdDsNCisJCQl9DQorCQl9IHdoaWxlKHJldHVybkNvZGUgIT0gVk9fRVJSX0lOUFVUX0JVRkZFUl9TTUFMTCk7DQorDQorCQlmaW5pc2ggPSBjbG9jaygpOw0KKwkJZHVyYXRpb24gKz0gZmluaXNoIC0gc3RhcnQ7DQorDQorCQlpZiAoIWVvZkZpbGUpIHsNCisJCQlSZWxlbnMgPSBHZXROZXh0QnVmKGZzcmMsIElucHV0QnVmLCBJTlBVVF9TSVpFKTsNCisJCQlpbkJ1ZiA9IElucHV0QnVmOw0KKwkJCWlmIChmZW9mKGZzcmMpICYmIFJlbGVucyA9PSAwKQ0KKwkJCQllb2ZGaWxlID0gMTsNCisJCX0NCisJfSB3aGlsZSAoIWVvZkZpbGUgJiYgcmV0dXJuQ29kZSk7DQorCS8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgRW5kIEVuY29kaW5nIFNlY3Rpb24gICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK3NhZmVfZXhpdDoNCisJcmV0dXJuQ29kZSA9IEF1ZGlvQVBJLlVuaW5pdChoQ29kZWMpOw0KKw0KKwlwcmludGYoICJcbiUyLjVmIHNlY29uZHNcbiIsIChkb3VibGUpZHVyYXRpb24vQ0xPQ0tTX1BFUl9TRUMpOw0KKw0KKwlpZiAoZnNyYykNCisJCWZjbG9zZShmc3JjKTsNCisJaWYgKGZkc3QpDQorCQlmY2xvc2UoZmRzdCk7DQorDQorI2lmZGVmIExJTlVYDQorCWRsY2xvc2UoaGFuZGxlKTsNCisjZW5kaWYNCisNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSAgLy8gZm9yIGdjYyBjb21waWxlcjsNCit7DQorCWludCAgICAgbW9kZSwgcjsNCisJaW50ICAgICBhcmcsIGZpbGVuYW1lPTA7DQorCWNoYXIgICAgKmluRmlsZU5hbWUgPSBOVUxMOw0KKwljaGFyICAgICpvdXRGaWxlTmFtZSA9IE5VTEw7DQorCXNob3J0ICAgYWxsb3dfZHR4Ow0KKwlWT0FNUldCRlJBTUVUWVBFIGZyYW1lVHlwZTsNCisNCisJcHJpbnRmKCJcbiIpOw0KKwlwcmludGYoIioqKioqKioqKioqKioqKioqKioqKioqKkFkYXB0aXZlIE11bHRpLVJhdGUgV2lkZSBCYW5kIEVuY29kZXIgKEFNUi1XQikqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKTsNCisJcHJpbnRmKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKkRFRklOSVRJT05TOioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOw0KKwlwcmludGYoIkFNUi1XQiBlbmNvZGVyIHNjaGVtZSBpcyBiYXNlZCBvbiB0aGUgcHJpbmNpcGxlIG9mIEFsZ2VicmFpYyBDb2RlIEV4Y2l0ZWQgTGluZWFyIFByZWRpY3Rpb24gYWxnb3JpdGhtXG4iKTsNCisJcHJpbnRmKCJUaGUgQU1SLVdCIGVuY29kZXIgY29tcHJlc3Npb24gTU9OTyBsaW5lciBQQ00gc3BlZWNoIGlucHV0IGRhdGEgYXQgMTZrSHogc2FtcGxpbmcgcmF0ZVxuIik7DQorCXByaW50ZigidG8gb25lIG9mIG5pbmUgZGF0YSByYXRlIG1vZGVzLTYuNjAsIDguODUsIDEyLjY1LCAxNC4yNSwgMTUuODUsIDE4LjI1LCAxOS4yNSwgMjMuMDUgYW5kIDIzLjg1a2Jwcy5cbiIpOw0KKwlwcmludGYoIlRoZSBlbmNvZGVyIHN1cHBvcnRzIG91dHB1dCBmb3JtYXQgQU1SV0IgSVRVLCBBTVJXQiBSRkMzMjY3LlxuIik7DQorCXByaW50ZigiXG4iKTsNCisNCisJLypFbmNvZGVyIERlZmF1bHQgc2V0dGluZyAqLw0KKwltb2RlID0gVk9BTVJXQl9NRDIzODU7DQorCWFsbG93X2R0eCA9IDA7DQorCWZyYW1lVHlwZSA9IFZPQU1SV0JfUkZDMzI2NzsNCisNCisJaWYoYXJnYyA8IDMpew0KKwkJdXNhZ2UoKTsNCisJCXJldHVybiAwOw0KKwl9ZWxzZXsNCisJCWZvciAoYXJnID0gMTsgYXJnIDwgYXJnYzsgYXJnKyspIHsNCisJCQlpZiAoYXJndiBbYXJnXSBbMF0gPT0gJysnKSB7DQorCQkJCWlmKGFyZ3ZbYXJnXVsxXSA9PSAnTScpDQorCQkJCXsNCisJCQkJCXN3aXRjaChhcmd2W2FyZ11bMl0pDQorCQkJCQl7DQorCQkJCQljYXNlICcwJzogbW9kZSA9IFZPQU1SV0JfTUQ2NjsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgJzEnOiBtb2RlID0gVk9BTVJXQl9NRDg4NTsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgJzInOiBtb2RlID0gVk9BTVJXQl9NRDEyNjU7DQorCQkJCQkJYnJlYWs7DQorCQkJCQljYXNlICczJzogbW9kZSA9IFZPQU1SV0JfTUQxNDI1Ow0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAnNCc6IG1vZGUgPSBWT0FNUldCX01EMTU4NTsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgJzUnOiBtb2RlID0gVk9BTVJXQl9NRDE4MjU7DQorCQkJCQkJYnJlYWs7DQorCQkJCQljYXNlICc2JzogbW9kZSA9IFZPQU1SV0JfTUQxOTg1Ow0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAnNyc6IG1vZGUgPSBWT0FNUldCX01EMjMwNTsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgJzgnOiBtb2RlID0gVk9BTVJXQl9NRDIzODU7DQorCQkJCQkJYnJlYWs7DQorCQkJCQlkZWZhdWx0Og0KKwkJCQkJCXVzYWdlKCk7DQorCQkJCQkJcHJpbnRmICgiSW52YWxpZCBwYXJhbWV0ZXIgJyVzJy5cbiIsIGFyZ3YgW2FyZ10pOw0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJfQ0KKwkJCQl9ZWxzZSBpZihhcmd2W2FyZ11bMV0gPT0gJ0YnKQ0KKwkJCQl7DQorCQkJCQlzd2l0Y2goYXJndlthcmddWzJdKQ0KKwkJCQkJew0KKwkJCQkJY2FzZSAnMCc6IGZyYW1lVHlwZSA9IFZPQU1SV0JfREVGQVVMVDsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgJzEnOiBmcmFtZVR5cGUgPSBWT0FNUldCX0lUVTsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgJzInOiBmcmFtZVR5cGUgPSBWT0FNUldCX1JGQzMyNjcgOw0KKwkJCQkJCWJyZWFrOyANCisJCQkJCWRlZmF1bHQ6DQorCQkJCQkJdXNhZ2UoKTsNCisJCQkJCQlwcmludGYgKCJJbnZhbGlkIHBhcmFtZXRlciAnJXMnLlxuIiwgYXJndiBbYXJnXSk7DQorCQkJCQkJYnJlYWs7DQorDQorDQorCQkJCQl9DQorCQkJCX1lbHNlIGlmKHN0cmNtcCAoYXJndlthcmddLCAiK0RUWCIpID09IDApDQorCQkJCXsNCisJCQkJCWFsbG93X2R0eCA9IDE7DQorCQkJCX0NCisNCisJCQl9IGVsc2Ugew0KKwkJCQlzd2l0Y2ggKGZpbGVuYW1lKSB7DQorCQkJCQkJY2FzZSAwOiANCisJCQkJCQkJaW5GaWxlTmFtZSAgPSBhcmd2W2FyZ107DQorCQkJCQkJCWJyZWFrOw0KKwkJCQkJCWNhc2UgMTogDQorCQkJCQkJCW91dEZpbGVOYW1lID0gYXJndlthcmddOyANCisJCQkJCQkJYnJlYWs7DQorCQkJCQkJZGVmYXVsdDoNCisJCQkJCQkJdXNhZ2UgKCk7DQorCQkJCQkJCWZwcmludGYgKHN0ZGVyciwgIkludmFsaWQgcGFyYW1ldGVyICclcycuXG4iLCBhcmd2IFthcmddKTsNCisJCQkJCQkJcmV0dXJuIDA7DQorCQkJCX0NCisJCQkJZmlsZW5hbWUrKzsNCisJCQl9DQorCQl9DQorCX0NCisNCisJciA9IGVuY29kZShtb2RlLCBhbGxvd19kdHgsIGZyYW1lVHlwZSwgaW5GaWxlTmFtZSwgb3V0RmlsZU5hbWUpOw0KKwlpZihyKQ0KKwl7DQorCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yOiAlZFxuIiwgcik7DQorCX0NCisJcmV0dXJuIHI7DQorfQ0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvU2FtcGxlQ29kZS9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZGIxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvU2FtcGxlQ29kZS9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMjcgQEAKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gCUFNUldCX0VfU0FNUExFLmMKKwkKK0xPQ0FMX1NSQ19GSUxFUyArPSAJXAorCS4uLy4uLy4uL0NvbW1vbi9jbW5NZW1vcnkuYyAKKworTE9DQUxfTU9EVUxFIDo9IFRlc3R2b0FNUldCRW5jCisKK0xPQ0FMX0FSTV9NT0RFIDo9IGFybQorCitMT0NBTF9TVEFUSUNfTElCUkFSSUVTIDo9IAorCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IGxpYnZvQU1SV0JFbmMKKworTE9DQUxfQ19JTkNMVURFUyA6PSBcCisJJChMT0NBTF9QQVRIKS8gXAorCSQoTE9DQUxfUEFUSCkvLi4vLi4vLi4vQ29tbW9uIFwKKwkkKExPQ0FMX1BBVEgpLy4uLy4uLy4uL0luY2x1ZGUgXAorCitMT0NBTF9DRkxBR1MgOj0gJChWT19DRkxBR1MpCisJCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKworCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL2VjbGFpci9NYWtlZmlsZSBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL2VjbGFpci9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWI4NzZhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL1NhbXBsZUNvZGUvZWNsYWlyL01ha2VmaWxlCkBAIC0wLDAgKzEsNTYgQEAKKyMvKg0KKyMgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisjICoqDQorIyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgKioNCisjICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjICoqDQorIyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjICovDQorDQorIyB0YXJnZXQ2DQorIyBhdmFpbGFibGU6IHBjLCB2NChhcm12NCksIHY1KGFybXY1KSwgdjV4KGFybXY1IHhzY2FsZSksIHY2KGFybXY2KSwgdjcoY29ydGV4LWE4IG5lb24pDQorVk9UVDo9IHY2DQorDQorDQorIyBtb2R1bGUgdHlwZQ0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgeW91ciBtb2R1bGU6IGxpYiBvciBleGUNCitWT01UOj0gZXhlDQorDQorDQorIyBtb2R1bGUgbWFjcm9zDQorIyBwbGVhc2UgYXBwZW5kIHRoZSBhZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zIGhlcmUgZm9yIHlvdXIgbW9kdWxlIGlmIG5lY2Vzc2FyeS4gDQorIyBlLmcuIC1EVklTVUFMT04sIG1hY3JvIFZJU1VBTE9OIGRlZmluZWQgZm9yIHlvdXIgbW9kdWxlIA0KK1ZPTU06PSAjQVJNVjVFDQorDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZQ0KK1ZPVEFSR0VUOj0gdm9BTVJXQkVuY19UZXN0DQorDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGcxLm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi9Ub29scy9lY2xhaXIubWsgDQorDQorIyBkZXBlbmRlbnQgbGlicmFyaWVzLg0KK1ZPREVQTElCUzo9LWxkbA0KKw0KKw0KKyMgbW9kdWxlIHNvdXJjZQ0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBtcy5tayB3aGljaCBzcGVjaWZpZXMgYWxsIHNvdXJjZSBpbmZvIG9mIHlvdXIgbW9kdWxlDQoraW5jbHVkZSAuLi9tcy5taw0KKw0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgd2hlcmUgaXMgdGhlIHZvUmVsZWFzZSBvbiB5b3VyIFBDLCByZWxhdGl2ZSBwYXRoIGlzIHN1Z2dlc3RlZA0KK1ZPUkVMRElSOj0uLi8NCisNCisNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgZG9pdC5taw0KK2luY2x1ZGUgLi4vLi4vLi4vLi4vVG9vbHMvZG9pdC5tayANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvU2FtcGxlQ29kZS9tcy5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL21zLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZTg5MTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvU2FtcGxlQ29kZS9tcy5tawpAQCAtMCwwICsxLDI0IEBACisjLyoNCisjICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorIyAqKg0KKyMgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorIyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjICoqDQorIyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyAqKg0KKyMgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyAqLw0KKyMgcGxlYXNlIGxpc3QgYWxsIG9iamVjdHMgbmVlZGVkIGJ5IHlvdXIgdGFyZ2V0IGhlcmUNCitPQkpTOj1BTVJXQl9FX1NBTVBMRS5vIGNtbk1lbW9yeS5vDQorCQkJDQorIyBwbGVhc2UgbGlzdCBhbGwgZGlyZWN0b3JpZXMgdGhhdCBhbGwgc291cmNlIGZpbGVzIHJlbGF0aXZlIHdpdGggeW91ciBtb2R1bGUoLmggLmMgLmNwcCkgbG9jYXRlIA0KK1ZPU1JDRElSOj0uLi8gXA0KKyAgICAgICAgICAuLi8uLi8uLi8uLi9Db21tb24gXA0KKwkgIC4uLy4uLy4uLy4uL0luY2x1ZGUNCisJCQkJCQ0KKwkJCQkNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL0FSTVY1RS9NYWtlZmlsZSBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvQVJNVjVFL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZmRhMjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL0FSTVY1RS9NYWtlZmlsZQpAQCAtMCwwICsxLDUzIEBACisjLyoNCisjICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorIyAqKg0KKyMgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorIyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjICoqDQorIyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyAqKg0KKyMgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyAqLw0KKw0KKyMgdGFyZ2V0IHR5cGUNCisjIGF2YWlsYWJsZTogcGMsIHY0KGFybXY0KSwgdjUoYXJtdjUpLCB2NXgoYXJtdjUgeHNjYWxlKSwgdjYoYXJtdjYpLCB2Nyhjb3J0ZXgtYTggbmVvbikNCitWT1RUOj0gdjUNCisNCisNCisjIG1vZHVsZSB0eXBlDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBvZiB5b3VyIG1vZHVsZTogbGliIG9yIGV4ZQ0KK1ZPTVQ6PSBsaWINCisNCisNCisjIG1vZHVsZSBtYWNyb3MNCisjIHBsZWFzZSBhcHBlbmQgdGhlIGFkZGl0aW9uYWwgbWFjcm8gZGVmaW5pdGlvbnMgaGVyZSBmb3IgeW91ciBtb2R1bGUgaWYgbmVjZXNzYXJ5LiANCitpZmVxICgkKFZPVFQpLCB2NSkNCitWT01NOj0tREFSTSAtREFTTV9PUFQNCitlbmRpZg0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIG5hbWUgb2YgeW91ciBtb2R1bGUNCitWT1RBUkdFVDo9IGxpYnZvQU1SV0JFbmN2NQ0KKw0KKw0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBnMS5taw0KK2luY2x1ZGUgLi4vLi4vLi4vLi4vLi4vVG9vbHMvZWNsYWlyLm1rIA0KKw0KKyMgZGVwZW5kZW50IGxpYnJhcmllcy4NCitWT0RFUExJQlM6PS1sZGwgLWxzdGRjKysgLWxjdXRpbHMNCisNCisjIG1vZHVsZSBzb3VyY2UNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgbXMubWsgd2hpY2ggc3BlY2lmaWVzIGFsbCBzb3VyY2UgaW5mbyBvZiB5b3VyIG1vZHVsZQ0KK2luY2x1ZGUgLi4vbXMubWsNCisNCisNCisjIHBsZWFzZSBzcGVjaWZ5IHdoZXJlIGlzIHRoZSB2b1JlbGVhc2Ugb24geW91ciBQQywgcmVsYXRpdmUgcGF0aCBpcyBzdWdnZXN0ZWQNCitWT1JFTERJUjo9Li4vLi4vLi4vLi4vLi4vLi4vUmVsZWFzZQ0KKw0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBkb2l0Lm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi8uLi9Ub29scy9kb2l0Lm1rIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvQVJNVjcvTWFrZWZpbGUgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL0FSTVY3L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ODY0MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL0FSTVY3L01ha2VmaWxlCkBAIC0wLDAgKzEsNTMgQEAKKyMvKg0KKyMgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisjICoqDQorIyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgKioNCisjICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjICoqDQorIyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjICovDQorDQorIyB0YXJnZXQgdHlwZQ0KKyMgYXZhaWxhYmxlOiBwYywgdjQoYXJtdjQpLCB2NShhcm12NSksIHY1eChhcm12NSB4c2NhbGUpLCB2Nihhcm12NiksIHY3KGNvcnRleC1hOCBuZW9uKQ0KK1ZPVFQ6PSB2Nw0KKw0KKw0KKyMgbW9kdWxlIHR5cGUNCisjIHBsZWFzZSBzcGVjaWZ5IHRoZSB0eXBlIG9mIHlvdXIgbW9kdWxlOiBsaWIgb3IgZXhlDQorVk9NVDo9IGxpYg0KKw0KKw0KKyMgbW9kdWxlIG1hY3Jvcw0KKyMgcGxlYXNlIGFwcGVuZCB0aGUgYWRkaXRpb25hbCBtYWNybyBkZWZpbml0aW9ucyBoZXJlIGZvciB5b3VyIG1vZHVsZSBpZiBuZWNlc3NhcnkuIA0KK2lmZXEgKCQoVk9UVCksIHY3KQ0KK1ZPTU06PS1EQVJNIC1EQVJNVjcgLURBU01fT1BUDQorZW5kaWYNCisNCisjIHBsZWFzZSBzcGVjaWZ5IHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlDQorVk9UQVJHRVQ6PSBsaWJ2b0FNUldCRW5jdjcNCisNCisNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgZzEubWsNCitpbmNsdWRlIC4uLy4uLy4uLy4uLy4uL1Rvb2xzL2VjbGFpci5tayANCisNCisjIGRlcGVuZGVudCBsaWJyYXJpZXMuDQorVk9ERVBMSUJTOj0tbGRsIC1sc3RkYysrIC1sY3V0aWxzDQorDQorIyBtb2R1bGUgc291cmNlDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIG1zLm1rIHdoaWNoIHNwZWNpZmllcyBhbGwgc291cmNlIGluZm8gb2YgeW91ciBtb2R1bGUNCitpbmNsdWRlIC4uL21zLm1rDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB3aGVyZSBpcyB0aGUgdm9SZWxlYXNlIG9uIHlvdXIgUEMsIHJlbGF0aXZlIHBhdGggaXMgc3VnZ2VzdGVkDQorVk9SRUxESVI6PS4uLy4uLy4uLy4uLy4uLy4uL1JlbGVhc2UNCisNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgZG9pdC5taw0KK2luY2x1ZGUgLi4vLi4vLi4vLi4vLi4vVG9vbHMvZG9pdC5tayANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL21ha2VmaWxlIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2J1aWxkL2VjbGFpci9tYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDczYTFhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2J1aWxkL2VjbGFpci9tYWtlZmlsZQpAQCAtMCwwICsxLDM5IEBACisjLyoKKyMgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4KKyMgKioKKyMgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjICoqCisjICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgKioKKyMgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMgKi8KKyMgSnVzdCBhY3RpbmcgYXMgRmF0aGVyIE1ha2VmaWxlIG9mIE1vZHVsZXMKKyMgcGxlYXNlIGtlZXAgdGhlIG5hbWUgJ21ha2VmaWxlJyB1bmNoYW5nZWQKKyAKKyMgTW9kdWxlIFN1YmRpcnMKK1ZPTVNEOj0kKGRpciAkKHNoZWxsIGZpbmQgLiAtbmFtZSAnTWFrZWZpbGUnKSkKKworYWxsOgorCWZvciBkaXIgaW4gJChWT01TRCk7IFwKKwkJZG8gXAorCQkJJChNQUtFKSAtQyAkJGRpcjsgXAorCQlkb25lCisKKy5QSE9OWTpjbGVhbiBkZXZlbAorY2xlYW46CisJZm9yIGRpciBpbiAkKFZPTVNEKTsgXAorCQlkbyBcCisJCQkkKE1BS0UpIC1DICQkZGlyIGNsZWFuOyBcCisJCWRvbmUKKworZGV2ZWw6CisJZm9yIGRpciBpbiAkKFZPTVNEKTsgXAorCQlkbyBcCisJCQkkKE1BS0UpIC1DICQkZGlyIGRldmVsOyBcCisJCWRvbmUKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvbXMubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL21zLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNjYyMGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL21zLm1rCkBAIC0wLDAgKzEsNDMgQEAKKyMvKg0KKyMgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisjICoqDQorIyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgKioNCisjICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjICoqDQorIyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjICovDQorIyBwbGVhc2UgbGlzdCBhbGwgZGlyZWN0b3JpZXMgdGhhdCBhbGwgc291cmNlIGZpbGVzIHJlbGF0aXZlIHdpdGggeW91ciBtb2R1bGUoLmggLmMgLmNwcCkgbG9jYXRlIA0KK1ZPU1JDRElSOj0uLi8uLi8uLi9pbmMgXA0KKyAgICAgICAgICAuLi8uLi8uLi9zcmMgXA0KKwkgIC4uLy4uLy4uLy4uLy4uL0luY2x1ZGUgDQorDQorIyBwbGVhc2UgbGlzdCBhbGwgb2JqZWN0cyBuZWVkZWQgYnkgeW91ciB0YXJnZXQgaGVyZQ0KK09CSlM6PSBhdXRvY29yci5vIGF6X2lzcC5vIGJpdHMubyBjMnQ2NGZ4Lm8gYzR0NjRmeC5vIGNvbnZvbHZlLm8gY29yX2hfeC5vIGRlY2ltNTQubyBcDQorICAgICAgIGRlZW1waC5vIGR0eC5vIGdfcGl0Y2gubyBncGNsaXAubyBob21pbmcubyBocDQwMC5vIGhwNTAubyBocDZrLm8gaHBfd3NwLm8gXA0KKyAgICAgICBpbnRfbHBjLm8gaXNwX2F6Lm8gaXNwX2lzZi5vIGxhZ193aW5kLm8gbGV2aW5zb24ubyBsb2cyLm8gbHBfZGVjMi5vIG1hdGhfb3AubyBtZW1fYWxpZ24ubyBcDQorICAgICAgIG9wZXJfMzJiLm8gcF9tZWRfb2wubyBwaXRfc2hycC5vIHBpdGNoX2Y0Lm8gcHJlZF9sdDQubyBwcmVlbXBoLm8gcV9nYWluMi5vIHFfcHVsc2UubyBcDQorICAgICAgIHFpc2ZfbnMubyBxcGlzZl8ycy5vIHJhbmRvbS5vIHJlc2lkdS5vIHNjYWxlLm8gc3RyZWFtLm8gc3luX2ZpbHQubyB1cGR0X3Rhci5vIHV0aWwubyBcDQorICAgICAgIHZvQU1SV0JFbmMubyB2b2ljZWZhYy5vIHdiX3ZhZC5vIHdlaWdodF9hLm8NCisJCQkNCisNCitpZmVxICgkKFZPVFQpLCB2NSkNCitPQkpTICs9IGNvcl9oX3ZlY19vcHQubyBEZWVtcGhfMzJfb3B0Lm8gRG90X3Bfb3B0Lm8gRmlsdF82a183a19vcHQubyByZXNpZHVfYXNtX29wdC5vIFwNCisgICAgICAgc2NhbGVfc2lnX29wdC5vIFN5bl9maWx0XzMyX29wdC5vIHN5bl9maWx0X29wdC5vIHByZWRfbHQ0XzFfb3B0Lm8gY29udm9sdmVfb3B0Lm8gXA0KKyAgICAgICBOb3JtX0NvcnJfb3B0Lm8NCitWT1NSQ0RJUis9IC4uLy4uLy4uL3NyYy9hc20vQVJNVjVFDQorZW5kaWYNCisNCitpZmVxICgkKFZPVFQpLCB2NykNCitPQkpTKz0gY29yX2hfdmVjX25lb24ubyBEZWVtcGhfMzJfbmVvbi5vIERvdF9wX25lb24ubyBGaWx0XzZrXzdrX25lb24ubyByZXNpZHVfYXNtX25lb24ubyBcDQorICAgICAgIHNjYWxlX3NpZ19uZW9uLm8gU3luX2ZpbHRfMzJfbmVvbi5vIHN5bl9maWx0X25lb24ubyBwcmVkX2x0NF8xX25lb24ubyBjb252b2x2ZV9uZW9uLm8gXA0KKyAgICAgICBOb3JtX0NvcnJfbmVvbi5vDQorVk9TUkNESVIrPSAuLi8uLi8uLi9zcmMvYXNtL0FSTVY3DQorZW5kaWYNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvZG9jL3ZvQU1SV0JFbmNvZGVyU0RLLnBkZiBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9kb2Mvdm9BTVJXQkVuY29kZXJTREsucGRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYWRlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvZG9jL3ZvQU1SV0JFbmNvZGVyU0RLLnBkZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2FjZWxwLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2FjZWxwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiMzhhMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvYWNlbHAuaApAQCAtMCwwICsxLDUyMSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIEFDRUxQLkggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICBGdW5jdGlvbgkJCSAJCQkgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZm5kZWYgX19BQ0VMUF9IX18NCisjZGVmaW5lIF9fQUNFTFBfSF9fDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiY29kX21haW4uaCINCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgTFBDIHByb3RvdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorV29yZDE2IG1lZGlhbjUoV29yZDE2IHhbXSk7DQorDQordm9pZCBBdXRvY29ycigNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgIDogSW5wdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICA6IExQQyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHJfaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgOiBBdXRvY29ycmVsYXRpb25zICAobXNiKSAgICAgICAgICAgKi8NCisJCVdvcmQxNiByX2xbXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgIDogQXV0b2NvcnJlbGF0aW9ucyAgKGxzYikgICAgICAgICAgICovDQorCSAgICAgKTsNCisNCit2b2lkIExhZ193aW5kb3coDQorCQlXb3JkMTYgcl9oW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBBdXRvY29ycmVsYXRpb25zICAobXNiKSAgICAgICAgICAqLw0KKwkJV29yZDE2IHJfbFtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogQXV0b2NvcnJlbGF0aW9ucyAgKGxzYikgICAgICAgICAgKi8NCisJICAgICAgICk7DQorDQordm9pZCBJbml0X0xldmluc29uKA0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQgIDpzdGF0aWMgbWVtb3J5ICgxOCB3b3JkcykgKi8NCisJCSk7DQorDQordm9pZCBMZXZpbnNvbigNCisJCVdvcmQxNiBSaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IFJoW00rMV0gVmVjdG9yIG9mIGF1dG9jb3JyZWxhdGlvbnMgKG1zYikgKi8NCisJCVdvcmQxNiBSbFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IFJsW00rMV0gVmVjdG9yIG9mIGF1dG9jb3JyZWxhdGlvbnMgKGxzYikgKi8NCisJCVdvcmQxNiBBW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExMiA6IEFbTV0gICAgTFBDIGNvZWZmaWNpZW50cyAgKG0gPSAxNikgICAgICAgKi8NCisJCVdvcmQxNiByY1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IHJjW01dICAgUmVmbGVjdGlvbiBjb2VmZmljaWVudHMuICAgICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6c3RhdGljIG1lbW9yeSAoMTggd29yZHMpICAgICAgICAgICAgICAgICAgKi8NCisJICAgICApOw0KKw0KK3ZvaWQgQXpfaXNwKA0KKwkJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogcHJlZGljdG9yIGNvZWZmaWNpZW50cyAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBpc3BbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IEltbWl0dGFuY2Ugc3BlY3RyYWwgcGFpcnMgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgb2xkX2lzcFtdICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBvbGQgaXNwW10gKGluIGNhc2Ugbm90IGZvdW5kIE0gcm9vdHMpICAqLw0KKwkgICApOw0KKw0KK3ZvaWQgSXNwX0F6KA0KKwkJV29yZDE2IGlzcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogSW1taXR0YW5jZSBzcGVjdHJhbCBwYWlycyAgICAgICAgICAgICovDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTIgOiBwcmVkaWN0b3IgY29lZmZpY2llbnRzIChvcmRlciA9IE0pICAgKi8NCisJCVdvcmQxNiBtLA0KKwkJV29yZDE2IGFkYXB0aXZlX3NjYWxpbmcgICAgICAgICAgICAgICAvKiAoaSkgMCAgIDogYWRhcHRpdmUgc2NhbGluZyBkaXNhYmxlZCAqLw0KKwkJLyogICAgIDEgICA6IGFkYXB0aXZlIHNjYWxpbmcgZW5hYmxlZCAgKi8NCisJICAgKTsNCisNCit2b2lkIElzcF9pc2YoDQorCQlXb3JkMTYgaXNwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBpc3BbbV0gKHJhbmdlOiAtMTw9dmFsPDEpICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaXNmW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBpc2ZbbV0gbm9ybWFsaXplZCAocmFuZ2U6IDAuMDw9dmFsPD0wLjUpICovDQorCQlXb3JkMTYgbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBMUEMgb3JkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICApOw0KKw0KK3ZvaWQgSXNmX2lzcCgNCisJCVdvcmQxNiBpc2ZbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGlzZlttXSBub3JtYWxpemVkIChyYW5nZTogMC4wPD12YWw8PTAuNSkgKi8NCisJCVdvcmQxNiBpc3BbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IGlzcFttXSAocmFuZ2U6IC0xPD12YWw8MSkgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IExQQyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICk7DQorDQordm9pZCBJbnRfaXNwKA0KKwkJV29yZDE2IGlzcF9vbGRbXSwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGlzcHMgZnJvbSBwYXN0IGZyYW1lICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGlzcF9uZXdbXSwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGlzcHMgZnJvbSBwcmVzZW50IGZyYW1lICAgICAgICAgICAqLw0KKwkJV29yZDE2IGZyYWNbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGZyYWN0aW9uIGZvciAzIGZpcnN0IHN1YmZyIChRMTUpICAqLw0KKwkJV29yZDE2IEF6W10gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IExQIGNvZWZmaWNpZW50cyBpbiA0IHN1YmZyYW1lcyAgICAqLw0KKwkgICAgKTsNCisNCit2b2lkIFdlaWdodF9hKA0KKwkJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdICBMUEMgY29lZmZpY2llbnRzICAgICAgICAgICAgICovDQorCQlXb3JkMTYgYXBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTIgOiBTcGVjdHJhbCBleHBhbmRlZCBMUEMgY29lZmZpY2llbnRzICAgKi8NCisJCVdvcmQxNiBnYW1tYSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IFNwZWN0cmFsIGV4cGFuc2lvbiBmYWN0b3IuICAgICAgICAgICAqLw0KKwkJV29yZDE2IG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogTFBDIG9yZGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICAgKTsNCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgaXNmIHF1YW50aXplcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCBRcGlzZl8yc180NmIoDQorCQlXb3JkMTYgKiBpc2YxLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBJU0YgaW4gdGhlIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgKi8NCisJCVdvcmQxNiAqIGlzZl9xLCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IHF1YW50aXplZCBJU0YgICAgICAgICAgICAgICAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogcGFzdF9pc2ZxLCAgICAgICAgICAgICAgICAgICAvKiAoaW8pUTE1IDogcGFzdCBJU0YgcXVhbnRpemVyICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpbmRpY2UsICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBxdWFudGl6YXRpb24gaW5kaWNlcyAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBuYl9zdXJ2ICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG51bWJlciBvZiBzdXJ2aXZvciAoMSwgMiwgMyBvciA0KSAgICAqLw0KKwkJKTsNCisNCit2b2lkIFFwaXNmXzJzXzM2YigNCisJCVdvcmQxNiAqIGlzZjEsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogcXVhbnRpemVkIElTRiAgICAgICAgICAgICAgICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBwYXN0X2lzZnEsICAgICAgICAgICAgICAgICAgIC8qIChpbylRMTUgOiBwYXN0IElTRiBxdWFudGl6ZXIgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG5iX3N1cnYgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbnVtYmVyIG9mIHN1cnZpdm9yICgxLCAyLCAzIG9yIDQpICAgICovDQorCQkpOw0KKw0KK3ZvaWQgRHBpc2ZfMnNfNDZiKA0KKwkJV29yZDE2ICogaW5kaWNlLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXplZCBJU0YgaW4gZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogcGFzdF9pc2ZxLCAgICAgICAgICAgICAgICAgICAvKiBpLzAgICA6IHBhc3QgSVNGIHF1YW50aXplciAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZm9sZCwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBwYXN0IHF1YW50aXplZCBJU0YgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZfYnVmLCAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaXNmIGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBiZmksICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBCYWQgZnJhbWUgaW5kaWNhdG9yICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZW5jX2RlYw0KKwkJKTsNCisNCit2b2lkIERwaXNmXzJzXzM2YigNCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBxdWFudGl6YXRpb24gaW5kaWNlcyAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZl9xLCAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBxdWFudGl6ZWQgSVNGIGluIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgKi8NCisJCVdvcmQxNiAqIHBhc3RfaXNmcSwgICAgICAgICAgICAgICAgICAgLyogaS8wICAgOiBwYXN0IElTRiBxdWFudGl6ZXIgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZvbGQsICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGFzdCBxdWFudGl6ZWQgSVNGICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmX2J1ZiwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGlzZiBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgYmZpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogQmFkIGZyYW1lIGluZGljYXRvciAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGVuY19kZWMNCisJCSk7DQorDQordm9pZCBRaXNmX25zKA0KKwkJV29yZDE2ICogaXNmMSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXplZCBJU0YgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaW5kaWNlICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAqLw0KKwkgICAgKTsNCisNCit2b2lkIERpc2ZfbnMoDQorCQlXb3JkMTYgKiBpbmRpY2UsICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgcXVhbnRpemF0aW9uIGluZGljZXMgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmX3EgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAgKi8NCisJICAgICk7DQorDQorV29yZDE2IFN1Yl9WUSggICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogcmV0dXJuIHF1YW50aXphdGlvbiBpbmRleCAgICAgKi8NCisJCVdvcmQxNiAqIHgsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBJU0YgcmVzaWR1YWwgdmVjdG9yICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogZGljbywgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHF1YW50aXphdGlvbiBjb2RlYm9vayAgICAgICAgICovDQorCQlXb3JkMTYgZGltLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogZGltZW50aW9uIG9mIHZlY3RvciAgICAgICAgICAgKi8NCisJCVdvcmQxNiBkaWNvX3NpemUsICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBzaXplIG9mIHF1YW50aXphdGlvbiBjb2RlYm9vayAqLw0KKwkJV29yZDMyICogZGlzdGFuY2UgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IGVycm9yIG9mIHF1YW50aXphdGlvbiAgICAgICAgICovDQorCSAgICAgKTsNCisNCit2b2lkIFJlb3JkZXJfaXNmKA0KKwkJV29yZDE2ICogaXNmLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSBRMTU6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2IG1pbl9kaXN0LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1ICA6IG1pbmltdW0gZGlzdGFuY2UgdG8ga2VlcCAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgICA6IG51bWJlciBvZiBJU0YgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJKTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgcHJvdG90eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCBJbml0X0RlY2ltXzEyazgoDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogbWVtb3J5ICgyKk5CX0NPRUZfRE9XTikgc2V0IHRvIHplcm9zICovDQorCQkpOw0KK3ZvaWQgRGVjaW1fMTJrOCgNCisJCVdvcmQxNiBzaWcxNmtbXSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBzaWduYWwgdG8gZG93bnNhbXBsaW5nICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIGxlbmd0aCBvZiBpbnB1dCAgICAgICAgICovDQorCQlXb3JkMTYgc2lnMTJrOFtdLCAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogZGVjaW1hdGVkIHNpZ25hbCAgICAgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBtZW1vcnkgKDIqTkJfQ09FRl9ET1dOKSAqLw0KKwkgICAgICAgKTsNCisNCit2b2lkIEluaXRfSFA1MF8xMms4KFdvcmQxNiBtZW1bXSk7DQordm9pZCBIUDUwXzEyazgoDQorCQlXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0L291dHB1dCBzaWduYWwgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ2h0IG9mIHNpZ25hbCAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaWx0ZXIgbWVtb3J5IFs2XSAgICovDQorCSAgICAgICk7DQordm9pZCBJbml0X0hQNDAwXzEyazgoV29yZDE2IG1lbVtdKTsNCit2b2lkIEhQNDAwXzEyazgoDQorCQlXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0L291dHB1dCBzaWduYWwgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ2h0IG9mIHNpZ25hbCAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaWx0ZXIgbWVtb3J5IFs2XSAgICovDQorCSAgICAgICApOw0KKw0KK3ZvaWQgSW5pdF9GaWx0XzZrXzdrKFdvcmQxNiBtZW1bXSk7DQordm9pZCBGaWx0XzZrXzdrKA0KKwkJV29yZDE2IHNpZ25hbFtdLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHNpZ25hbCAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgbGVuZ3RoIG9mIGlucHV0ICAgICAgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBtZW1vcnkgKHNpemU9MzApICAgICAgICAqLw0KKwkgICAgICAgKTsNCit2b2lkIEZpbHRfNmtfN2tfYXNtKA0KKwkJV29yZDE2IHNpZ25hbFtdLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHNpZ25hbCAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgbGVuZ3RoIG9mIGlucHV0ICAgICAgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBtZW1vcnkgKHNpemU9MzApICAgICAgICAqLw0KKwkgICAgICAgKTsNCisNCit2b2lkIExQX0RlY2ltMigNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBzaWduYWwgdG8gcHJvY2VzcyAgICAgICAgICovDQorCQlXb3JkMTYgbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IG1lbW9yeSAoc2l6ZT0zKSAgICAgICAgICAgKi8NCisJICAgICAgKTsNCisNCit2b2lkIFByZWVtcGgoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBpbnB1dCBzaWduYWwgb3ZlcndyaXR0ZW4gYnkgdGhlIG91dHB1dCAqLw0KKwkJV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogcHJlZW1waGFzaXMgY29lZmZpY2llbnQgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGxlbmdodCBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHhbLTFdKSAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgKTsNCit2b2lkIFByZWVtcGgyKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogaW5wdXQgc2lnbmFsIG92ZXJ3cml0dGVuIGJ5IHRoZSBvdXRwdXQgKi8NCisJCVdvcmQxNiBtdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IHByZWVtcGhhc2lzIGNvZWZmaWNpZW50ICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBsZW5naHQgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh4Wy0xXSkgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICApOw0KK3ZvaWQgRGVlbXBoKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogaW5wdXQgc2lnbmFsIG92ZXJ3cml0dGVuIGJ5IHRoZSBvdXRwdXQgKi8NCisJCVdvcmQxNiBtdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGRlZW1waGFzaXMgZmFjdG9yICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh5Wy0xXSkgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgKTsNCit2b2lkIERlZW1waDIoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBpbnB1dCBzaWduYWwgb3ZlcndyaXR0ZW4gYnkgdGhlIG91dHB1dCAqLw0KKwkJV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogZGVlbXBoYXNpcyBmYWN0b3IgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHZlY3RvciBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHlbLTFdKSAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgKTsNCit2b2lkIERlZW1waF8zMigNCisJCVdvcmQxNiB4X2hpW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAoYml0MzEuLjE2KSAqLw0KKwkJV29yZDE2IHhfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsIChiaXQxNS4uNCkgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBvdXRwdXQgc2lnbmFsICh4MTYpICAgICAgKi8NCisJCVdvcmQxNiBtdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGRlZW1waGFzaXMgZmFjdG9yICAgICAgICAqLw0KKwkJV29yZDE2IEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHlbLTFdKSAgICAgICAgICAgKi8NCisJICAgICAgKTsNCisNCit2b2lkIERlZW1waF8zMl9hc20oDQorCQlXb3JkMTYgeF9oaVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgKGJpdDMxLi4xNikgKi8NCisJCVdvcmQxNiB4X2xvW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAoYml0MTUuLjQpICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHNpZ25hbCAoeDE2KSAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHlbLTFdKSAgICAgICAgICAgKi8NCisJICAgICAgKTsNCisNCit2b2lkIENvbnZvbHZlKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSAgICA6IGltcHVsc2UgcmVzcG9uc2UgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAxMiBiaXRzOiBvdXRwdXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICApOw0KKw0KK3ZvaWQgQ29udm9sdmVfYXNtKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSAgICA6IGltcHVsc2UgcmVzcG9uc2UgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAxMiBiaXRzOiBvdXRwdXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICApOw0KKw0KK3ZvaWQgUmVzaWR1KA0KKwkJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogcHJlZGljdGlvbiBjb2VmZmljaWVudHMgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc3BlZWNoICh2YWx1ZXMgeFstbS4uLTFdIGFyZSBuZWVkZWQgICAgICAgICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogcmVzaWR1YWwgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJKTsNCisNCit2b2lkIFJlc2lkdV9vcHQoDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzcGVlY2ggKHZhbHVlcyB4Wy1tLi4tMV0gYXJlIG5lZWRlZCAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiByZXNpZHVhbCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQkpOw0KKw0KK3ZvaWQgU3luX2ZpbHQoDQorCVdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGFbbSsxXSBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAgICAgICAgICAgKi8NCisJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBvdXRwdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IG1lbVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbHRlcmluZy4gICAqLw0KKwlXb3JkMTYgdXBkYXRlICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiAwPW5vIHVwZGF0ZSwgMT11cGRhdGUgb2YgbWVtb3J5LiAgICAgICAgICovDQorCSk7DQorDQordm9pZCBTeW5fZmlsdF9hc20oDQorCVdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGFbbSsxXSBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAgICAgICAgICAgKi8NCisJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBvdXRwdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaWx0ZXJpbmcuICAgKi8NCisJKTsNCisNCit2b2lkIFN5bl9maWx0XzMyKA0KKwlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBhW20rMV0gcHJlZGljdGlvbiBjb2VmZmljaWVudHMgKi8NCisJV29yZDE2IG0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogb3JkZXIgb2YgTFAgZmlsdGVyICAgICAgICAgICAgICovDQorCVdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFuZXc6IGV4Y2l0YXRpb24gKGV4Y1tpXSA+PiBRbmV3KSAgICAqLw0KKwlXb3JkMTYgUW5ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBleGMgc2NhbGluZyA9IDAobWluKSB0byA4KG1heCkgKi8NCisJV29yZDE2IHNpZ19oaVtdLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgLzE2IDogc3ludGhlc2lzIGhpZ2ggICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiBzaWdfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBsb3cgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgbGcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgKi8NCisJKTsNCisNCit2b2lkIFN5bl9maWx0XzMyX2FzbSgNCisJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICovDQorCVdvcmQxNiBtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG9yZGVyIG9mIExQIGZpbHRlciAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRbmV3OiBleGNpdGF0aW9uIChleGNbaV0gPj4gUW5ldykgICAgKi8NCisJV29yZDE2IFFuZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjIHNjYWxpbmcgPSAwKG1pbikgdG8gOChtYXgpICovDQorCVdvcmQxNiBzaWdfaGlbXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBoaWdoICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgc2lnX2xvW10sICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAvMTYgOiBzeW50aGVzaXMgbG93ICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IGxnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICovDQorCSk7DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgcGl0Y2ggcHJvdG90eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK1dvcmQxNiBQaXRjaF9vbCggICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IG9wZW4gbG9vcCBwaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHNpZ25hbFtdLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHNpZ25hbCB1c2VkIHRvIGNvbXB1dGUgdGhlIG9wZW4gbG9vcCBwaXRjaCAqLw0KKy8qIHNpZ25hbFstcGl0X21heF0gdG8gc2lnbmFsWy0xXSBzaG91bGQgYmUga25vd24gKi8NCisgICAgIFdvcmQxNiBwaXRfbWluLCAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBtaW5pbXVtIHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBwaXRfbWF4LCAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBtYXhpbXVtIHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBMX2ZyYW1lICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBsZW5ndGggb2YgZnJhbWUgdG8gY29tcHV0ZSBwaXRjaCAgICAgICAgICAgKi8NCispOw0KKw0KK1dvcmQxNiBQaXRjaF9tZWRfb2woICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IG9wZW4gbG9vcCBwaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHdzcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHNpZ25hbCB1c2VkIHRvIGNvbXB1dGUgdGhlIG9wZW4gbG9vcCBwaXRjaCAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB3c3BbLXBpdF9tYXhdIHRvIHdzcFstMV0gc2hvdWxkIGJlIGtub3duICAgKi8NCisgICAgIENvZGVyX1N0YXRlICpzdCwgICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogZ2xvYmFsIGNvZGVjIHN0cnVjdHVyZSAqLw0KKyAgICAgV29yZDE2IExfZnJhbWUgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGxlbmd0aCBvZiBmcmFtZSB0byBjb21wdXRlIHBpdGNoICAgICAgICAgICAqLw0KKyk7DQorDQorV29yZDE2IE1lZF9vbGFnKCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dCA6IG1lZGlhbiBvZiAgNSBwcmV2aW91cyBvcGVuLWxvb3AgbGFncyAgICAgICAqLw0KKyAgICAgV29yZDE2IHByZXZfb2xfbGFnLCAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCAgOiBwcmV2aW91cyBvcGVuLWxvb3AgbGFnICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBvbGRfb2xfbGFnWzVdDQorKTsNCisNCit2b2lkIEluaXRfSHBfd3NwKFdvcmQxNiBtZW1bXSk7DQordm9pZCBzY2FsZV9tZW1fSHBfd3NwKFdvcmQxNiBtZW1bXSwgV29yZDE2IGV4cCk7DQordm9pZCBIcF93c3AoDQorICAgICBXb3JkMTYgd3NwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHdzcFtdICBzaWduYWwgICAgICAgKi8NCisgICAgIFdvcmQxNiBocF93c3BbXSwgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogaHlwYXNzIHdzcFtdICAgICAgICAqLw0KKyAgICAgV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBsZW5naHQgb2Ygc2lnbmFsICAgICovDQorICAgICBXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGZpbHRlciBtZW1vcnkgWzldICAgKi8NCispOw0KKw0KK1dvcmQxNiBQaXRjaF9mcjQoICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogcGl0Y2ggcGVyaW9kLiAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjaXRhdGlvbiBidWZmZXIgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHhuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdGFyZ2V0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogaW1wdWxzZSByZXNwb25zZSBvZiBzeW50aC93Z3QgZmlsdGVycyAqLw0KKyAgICAgV29yZDE2IHQwX21pbiwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWluaW11bSB2YWx1ZSBpbiB0aGUgc2VhcmNoZWQgcmFuZ2UuICAqLw0KKyAgICAgV29yZDE2IHQwX21heCwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWF4aW11bSB2YWx1ZSBpbiB0aGUgc2VhcmNoZWQgcmFuZ2UuICAqLw0KKyAgICAgV29yZDE2ICogcGl0X2ZyYWMsICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogY2hvc2VuIGZyYWN0aW9uICgwLCAxLCAyIG9yIDMpLiAgICAgICAqLw0KKyAgICAgV29yZDE2IGlfc3ViZnIsICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5kaWNhdG9yIGZvciBmaXJzdCBzdWJmcmFtZS4gICAgICAgICAqLw0KKyAgICAgV29yZDE2IHQwX2ZyMiwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWluaW11bSB2YWx1ZSBmb3IgcmVzb2x1dGlvbiAxLzIgICAgICAqLw0KKyAgICAgV29yZDE2IHQwX2ZyMSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWluaW11bSB2YWx1ZSBmb3IgcmVzb2x1dGlvbiAxICAgICAgICAqLw0KKyAgICAgV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogTGVuZ3RoIG9mIHN1YmZyYW1lICAgICAgICAgICAgICAgICAgICAqLw0KKyk7DQordm9pZCBQcmVkX2x0NCgNCisgICAgIFdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBleGNpdGF0aW9uIGJ1ZmZlciAqLw0KKyAgICAgV29yZDE2IFQwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGludGVnZXIgcGl0Y2ggbGFnICovDQorICAgICBXb3JkMTYgZnJhYywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogZnJhY3Rpb24gb2YgbGFnICAgKi8NCisgICAgIFdvcmQxNiBMX3N1YmZyICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBzdWJmcmFtZSBzaXplICAgICAqLw0KKyk7DQorDQordm9pZCBwcmVkX2x0NF9hc20oDQorICAgICBXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogZXhjaXRhdGlvbiBidWZmZXIgKi8NCisgICAgIFdvcmQxNiBUMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBpbnRlZ2VyIHBpdGNoIGxhZyAqLw0KKyAgICAgV29yZDE2IGZyYWMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGZyYWN0aW9uIG9mIGxhZyAgICovDQorICAgICBXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc3ViZnJhbWUgc2l6ZSAgICAgKi8NCispOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgIGdhaW4gcHJvdG90eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitXb3JkMTYgR19waXRjaCggICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNCA6IEdhaW4gb2YgcGl0Y2ggbGFnIHNhdHVyYXRlZCB0byAxLjIgICAqLw0KKyAgICAgV29yZDE2IHhuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogUGl0Y2ggdGFyZ2V0LiAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgeTFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBmaWx0ZXJlZCBhZGFwdGl2ZSBjb2RlYm9vay4gICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBnX2NvZWZmW10sICAgICAgICAgICAgICAgICAgICAgLyogOiBDb3JyZWxhdGlvbnMgbmVlZCBmb3IgZ2FpbiBxdWFudGl6YXRpb24uICovDQorICAgICBXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIDogTGVuZ3RoIG9mIHN1YmZyYW1lLiAgICAgICAgICAgICAgICAgICovDQorKTsNCit2b2lkIEluaXRfUV9nYWluMigNCisgICAgIFdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0ICA6c3RhdGljIG1lbW9yeSAoMiB3b3JkcykgICAgICAqLw0KKyk7DQorV29yZDE2IFFfZ2FpbjIoICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJldHVybiBpbmRleCBvZiBxdWFudGl6YXRpb24uICAgICAgICAqLw0KKyAgICAgV29yZDE2IHhuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUV94bjpUYXJnZXQgdmVjdG9yLiAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgeTFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRX3huOkFkYXB0aXZlIGNvZGVib29rLiAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBRX3huLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6eG4gYW5kIHkxIGZvcm1hdCAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHkyW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTkgIDpGaWx0ZXJlZCBpbm5vdmF0aXZlIHZlY3Rvci4gICovDQorICAgICBXb3JkMTYgY29kZVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBROSAgOklubm92YXRpdmUgdmVjdG9yLiAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBnX2NvZWZmW10sICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6Q29ycmVsYXRpb25zIDx4biB5MT4gPHkxIHkxPiAqLw0KKy8qIENvbXB1dGUgaW4gR19waXRjaCgpLiAgICAgICAgKi8NCisgICAgIFdvcmQxNiBMX3N1YmZyLCAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6U3ViZnJhbWUgbGVuZ2h0LiAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IG5iaXRzLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbnVtYmVyIG9mIGJpdHMgKDYgb3IgNykgICAgICovDQorICAgICBXb3JkMTYgKiBnYWluX3BpdCwgICAgICAgICAgICAgICAgICAgIC8qIChpL28pUTE0OlBpdGNoIGdhaW4uICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQzMiAqIGdhaW5fY29kLCAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNiA6Q29kZSBnYWluLiAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGdwX2NsaXAsICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogR3AgQ2xpcHBpbmcgZmxhZyAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOnN0YXRpYyBtZW1vcnkgKDIgd29yZHMpICAgICAgKi8NCispOw0KKw0KK3ZvaWQgSW5pdF9EX2dhaW4yKA0KKyAgICAgV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQgIDpzdGF0aWMgbWVtb3J5ICg0IHdvcmRzKSAgICAgICovDQorKTsNCit2b2lkIERfZ2FpbjIoDQorICAgICBXb3JkMTYgaW5kZXgsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOmluZGV4IG9mIHF1YW50aXphdGlvbi4gICAgICAgKi8NCisgICAgIFdvcmQxNiBuYml0cywgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG51bWJlciBvZiBiaXRzICg2IG9yIDcpICAgICAqLw0KKyAgICAgV29yZDE2IGNvZGVbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTkgIDpJbm5vdmF0aXZlIHZlY3Rvci4gICAgICAgICAgICovDQorICAgICBXb3JkMTYgTF9zdWJmciwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOlN1YmZyYW1lIGxlbmdodC4gICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiAqIGdhaW5fcGl0LCAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNCA6UGl0Y2ggZ2Fpbi4gICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDMyICogZ2Fpbl9jb2QsICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE2IDpDb2RlIGdhaW4uICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgYmZpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOmJhZCBmcmFtZSBpbmRpY2F0b3IgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBwcmV2X2JmaSwgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDogUHJldmlvdXMgQkYgaW5kaWNhdG9yICAgICAgKi8NCisgICAgIFdvcmQxNiBzdGF0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDogU3RhdGUgb2YgQkZIICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiB1bnVzYWJsZV9mcmFtZSwgICAgICAgICAgICAgICAgLyogKGkpIDogVUYgaW5kaWNhdG9yICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiB2YWRfaGlzdCwgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICAgICAgOm51bWJlciBvZiBub24tc3BlZWNoIGZyYW1lcyAgKi8NCisgICAgIFdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6c3RhdGljIG1lbW9yeSAoNCB3b3JkcykgICAgICAqLw0KKyk7DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgYWNlbHAgcHJvdG90eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgY29yX2hfeCgNCisgICAgIFdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygd2VpZ2h0ZWQgc3ludGhlc2lzIGZpbHRlciAqLw0KKyAgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogdGFyZ2V0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgZG5bXSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSA8MTJiaXQgOiBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRhcmdldCBhbmQgaFtdICAgICAgICAgKi8NCispOw0KK3ZvaWQgQUNFTFBfMnQ2NF9meCgNCisgICAgIFdvcmQxNiBkbltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDwxMmIgOiBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRhcmdldCB4W10gYW5kIEhbXSAgICAgICovDQorICAgICBXb3JkMTYgY25bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA8MTJiIDogcmVzaWR1YWwgYWZ0ZXIgbG9uZyB0ZXJtIHByZWRpY3Rpb24gICAgICAgICAqLw0KKyAgICAgV29yZDE2IEhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyOiBpbXB1bHNlIHJlc3BvbnNlIG9mIHdlaWdodGVkIHN5bnRoZXNpcyBmaWx0ZXIgKi8NCisgICAgIFdvcmQxNiBjb2RlW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFE5IDogYWxnZWJyYWljIChmaXhlZCkgY29kZWJvb2sgZXhjaXRhdGlvbiAgICAgICAgICovDQorICAgICBXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBROSA6IGZpbHRlcmVkIGZpeGVkIGNvZGVib29rIGV4Y2l0YXRpb24gICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2ICogaW5kZXggICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgOiBpbmRleCAoMTIpOiA1KzErNSsxID0gMTEgYml0cy4gICAgICAgICAgICAgICAgICAgICAqLw0KKyk7DQorDQordm9pZCBBQ0VMUF80dDY0X2Z4KA0KKyAgICAgV29yZDE2IGRuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgPDEyYiA6IGNvcnJlbGF0aW9uIGJldHdlZW4gdGFyZ2V0IHhbXSBhbmQgSFtdICAgICAgKi8NCisgICAgIFdvcmQxNiBjbltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDwxMmIgOiByZXNpZHVhbCBhZnRlciBsb25nIHRlcm0gcHJlZGljdGlvbiAgICAgICAgICovDQorICAgICBXb3JkMTYgSFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTI6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygd2VpZ2h0ZWQgc3ludGhlc2lzIGZpbHRlciAqLw0KKyAgICAgV29yZDE2IGNvZGVbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTkgOiBhbGdlYnJhaWMgKGZpeGVkKSBjb2RlYm9vayBleGNpdGF0aW9uICAgICAgICAgKi8NCisgICAgIFdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFE5IDogZmlsdGVyZWQgZml4ZWQgY29kZWJvb2sgZXhjaXRhdGlvbiAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgbmJiaXRzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA6IDIwLCAzNiwgNDQsIDUyLCA2NCwgNzIgb3IgODggYml0cyAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHNlcl9zaXplLCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgOiBiaXQgcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBfaW5kZXhbXSAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIDogaW5kZXggKDIwKTogNSs1KzUrNSA9IDIwIGJpdHMuICAgICAgICAgICAgICAgICAgICovDQorCQkJCQkgICAvKiAobykgOiBpbmRleCAoMzYpOiA5KzkrOSs5ID0gMzYgYml0cy4gICAgICAgICAgICAgICAgICAgKi8NCisJCQkJCSAgIC8qIChvKSA6IGluZGV4ICg0NCk6IDEzKzkrMTMrOSA9IDQ0IGJpdHMuICAgICAgICAgICAgICAgICAqLw0KKwkJCQkJICAgLyogKG8pIDogaW5kZXggKDUyKTogMTMrMTMrMTMrMTMgPSA1MiBiaXRzLiAgICAgICAgICAgICAgICovDQorCQkJCQkgICAvKiAobykgOiBpbmRleCAoNjQpOiAyKzIrMisyKzE0KzE0KzE0KzE0ID0gNjQgYml0cy4gICAgICAgKi8NCisJCQkJCSAgIC8qIChvKSA6IGluZGV4ICg3Mik6IDEwKzIrMTArMisxMCsxNCsxMCsxNCA9IDcyIGJpdHMuICAgICAqLw0KKwkJCQkJICAgLyogKG8pIDogaW5kZXggKDg4KTogMTErMTErMTErMTErMTErMTErMTErMTEgPSA4OCBiaXRzLiAgICovDQorKTsNCisNCit2b2lkIFBpdF9zaHJwKA0KKyAgICAgV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IGltcHVsc2UgcmVzcG9uc2UgKG9yIGFsZ2VicmFpYyBjb2RlKSAqLw0KKyAgICAgV29yZDE2IHBpdF9sYWcsICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHNoYXJwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHBpdGNoIHNoYXJwZW5pbmcgZmFjdG9yIChRMTUpICAgICAgICAqLw0KKyAgICAgV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHN1YmZyYW1lIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyk7DQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVycyBwcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgQ29weSgNCisgICAgIFdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBpbnB1dCB2ZWN0b3IgICAqLw0KKyAgICAgV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICA6IG91dHB1dCB2ZWN0b3IgICovDQorICAgICBXb3JkMTYgTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogdmVjdG9yIGxlbmd0aCAgKi8NCispOw0KK3ZvaWQgU2V0X3plcm8oDQorICAgICBXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICA6IHZlY3RvciB0byBjbGVhciAgICAgKi8NCisgICAgIFdvcmQxNiBMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgIDogbGVuZ3RoIG9mIHZlY3RvciAgICAqLw0KKyk7DQordm9pZCBVcGR0X3RhcigNCisgICAgIFdvcmQxNiAqIHgsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFEwICA6IG9sZCB0YXJnZXQgKGZvciBwaXRjaCBzZWFyY2gpICAgICAqLw0KKyAgICAgV29yZDE2ICogeDIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTAgIDogbmV3IHRhcmdldCAoZm9yIGNvZGVib29rIHNlYXJjaCkgICovDQorICAgICBXb3JkMTYgKiB5LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgOiBmaWx0ZXJlZCBhZGFwdGl2ZSBjb2RlYm9vayB2ZWN0b3IgKi8NCisgICAgIFdvcmQxNiBnYWluLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNCA6IGFkYXB0aXZlIGNvZGVib29rIGdhaW4gICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc3ViZnJhbWUgc2l6ZSAgICAgICAgICAgICAgICAgICAgICovDQorKTsNCitXb3JkMTYgdm9pY2VfZmFjdG9yKCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IGZhY3RvciAoLTE9dW52b2ljZWQgdG8gMT12b2ljZWQpICovDQorICAgICBXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRX2V4YzogcGl0Y2ggZXhjaXRhdGlvbiAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IFFfZXhjLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBnYWluX3BpdCwgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNCA6IGdhaW4gb2YgcGl0Y2ggICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgY29kZVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBROSAgOiBGaXhlZCBjb2RlYm9vayBleGNpdGF0aW9uICAgICAgICAqLw0KKyAgICAgV29yZDE2IGdhaW5fY29kZSwgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogZ2FpbiBvZiBjb2RlICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBMX3N1YmZyICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHN1YmZyYW1lIGxlbmd0aCAgICAgICAgICAgICAgICAgICovDQorKTsNCit2b2lkIFNjYWxlX3NpZygNCisgICAgIFdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgOiBzaWduYWwgdG8gc2NhbGUgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IHNpemUgb2YgeFtdICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogZXhwb25lbnQ6IHggPSByb3VuZCh4IDw8IGV4cCkgKi8NCispOw0KKw0KK3ZvaWQgU2NhbGVfc2lnX29wdCgNCisgICAgIFdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgOiBzaWduYWwgdG8gc2NhbGUgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IHNpemUgb2YgeFtdICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogZXhwb25lbnQ6IHggPSByb3VuZCh4IDw8IGV4cCkgKi8NCispOw0KKw0KK1dvcmQxNiBSYW5kb20oV29yZDE2ICogc2VlZCk7DQorDQordm9pZCBJbml0X2dwX2NsaXAoDQorICAgICBXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSA6IG1lbW9yeSBvZiBnYWluIG9mIHBpdGNoIGNsaXBwaW5nIGFsZ29yaXRobSAqLw0KKyk7DQorV29yZDE2IEdwX2NsaXAoDQorICAgICBXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIDogbWVtb3J5IG9mIGdhaW4gb2YgcGl0Y2ggY2xpcHBpbmcgYWxnb3JpdGhtICovDQorKTsNCit2b2lkIEdwX2NsaXBfdGVzdF9pc2YoDQorICAgICBXb3JkMTYgaXNmW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogaXNmIHZhbHVlcyAoaW4gZnJlcXVlbmN5IGRvbWFpbikgICAgICAgICAgICovDQorICAgICBXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIDogbWVtb3J5IG9mIGdhaW4gb2YgcGl0Y2ggY2xpcHBpbmcgYWxnb3JpdGhtICovDQorKTsNCit2b2lkIEdwX2NsaXBfdGVzdF9nYWluX3BpdCgNCisgICAgIFdvcmQxNiBnYWluX3BpdCwgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBnYWluIG9mIHF1YW50aXplZCBwaXRjaCAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgOiBtZW1vcnkgb2YgZ2FpbiBvZiBwaXRjaCBjbGlwcGluZyBhbGdvcml0aG0gKi8NCispOw0KKw0KKw0KKyNlbmRpZiAgIC8vX19BQ0VMUF9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2Jhc2ljX29wLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2Jhc2ljX29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEyZjg2MAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvYmFzaWNfb3AuaApAQCAtMCwwICsxLDEwOTQgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorI2lmbmRlZiBfX0JBU0lDX09QX0hfXw0KKyNkZWZpbmUgX19CQVNJQ19PUF9IX18NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisNCisjZGVmaW5lIE1BWF8zMiAoV29yZDMyKTB4N2ZmZmZmZmZMDQorI2RlZmluZSBNSU5fMzIgKFdvcmQzMikweDgwMDAwMDAwTA0KKw0KKyNkZWZpbmUgTUFYXzE2IChXb3JkMTYpKzMyNzY3CS8qIDB4N2ZmZiAqLw0KKyNkZWZpbmUgTUlOXzE2IChXb3JkMTYpLTMyNzY4CS8qIDB4ODAwMCAqLw0KKw0KKw0KKyNpZmRlZiBMSU5VWA0KKyNkZWZpbmUgIHN0YXRpY192byAgc3RhdGljIF9faW5saW5lX18NCisjZWxzZQ0KKyNkZWZpbmUgIHN0YXRpY192byAgc3RhdGljIF9faW5saW5lDQorI2VuZGlmIA0KKw0KKyNkZWZpbmUgc2F0dXJhdGUoTF92YXIxKSAoKChMX3ZhcjEpID4gMFgwMDAwN2ZmZkwpID8gKE1BWF8xNik6ICgoKExfdmFyMSkgPCAoV29yZDMyKSAweGZmZmY4MDAwTCkgPyAoTUlOXzE2KTogKChMX3ZhcjEpICYgMHhmZmZmKSkpDQorDQorI2RlZmluZSBhYnNfcyh4KSAgICAgICAoKFdvcmQxNikoKCh4KSAhPSBNSU5fMTYpID8gKCgoeCkgPj0gMCkgPyAoeCkgOiAoLSh4KSkpIDogTUFYXzE2KSkgIC8qIFNob3J0IGFicywgICAgICAgICAgIDEgICAqLw0KKyNkZWZpbmUgTF9kZXBvc2l0X2goeCkgKCgoV29yZDMyKSh4KSkgPDwgMTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAxNiBiaXQgdmFyMSAtPiBNU0IsICAgICAyICovDQorI2RlZmluZSBMX2RlcG9zaXRfbCh4KSAoKFdvcmQzMikoeCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDE2IGJpdCB2YXIxIC0+IExTQiwgICAgIDIgKi8NCisjZGVmaW5lIExfYWJzKHgpICgoKHgpICE9IE1JTl8zMikgPyAoKCh4KSA+PSAwKSA/ICh4KSA6ICgtKHgpKSkgOiBNQVhfMzIpICAgICAgICAgICAgICAgICAgLyogTG9uZyBhYnMsICAgICAgICAgICAgICAzKi8NCisjZGVmaW5lIG5lZ2F0ZSh2YXIxKSAoKFdvcmQxNikoKCh2YXIxKSA9PSBNSU5fMTYpID8gTUFYXzE2IDogKC0odmFyMSkpKSkgICAgICAgICAgICAgICAgICAgLyogU2hvcnQgbmVnYXRlLCAgICAgICAgMSovDQorI2RlZmluZSBMX25lZ2F0ZShMX3ZhcjEpICgoKExfdmFyMSkgPT0gKE1JTl8zMikpID8gKE1BWF8zMikgOiAoLShMX3ZhcjEpKSkgICAgICAgICAgICAgICAgIC8qIExvbmcgbmVnYXRlLCAgICAgMiovDQorDQorDQorI2RlZmluZSBleHRyYWN0X2goYSkJCQkoKFdvcmQxNikoYSA+PiAxNikpDQorI2RlZmluZSBleHRyYWN0X2woeCkgICAgICAgICAgICAJKFdvcmQxNikoKHgpKQ0KKyNkZWZpbmUgYWRkMShhLGIpCQkJKGEgKyBiKQ0KKyNkZWZpbmUgdm9fTF9tc3UoYSxiLGMpCQkJKCBhIC0gKCggYiAqIGMgKSA8PCAxKSApDQorI2RlZmluZSB2b19tdWx0MzIoYSwgYikgICAgICAgICAoKGEpICogKGIpKQ0KKyNkZWZpbmUgdm9fbXVsdChhLGIpCQkJKCggYSAqIGIgKSA+PiAxNSApDQorI2RlZmluZQl2b19MX211bHQoYSxiKQkgICAgCQkoKChhKSAqIChiKSkgPDwgMSkNCisjZGVmaW5lIHZvX3Nocl9yKHZhcjEsIHZhcjIpICAgCQkoKHZhcjErKChXb3JkMTYpKDFMPDwodmFyMi0xKSkpKT4+dmFyMikNCisjZGVmaW5lIHZvX3N1YihhLGIpCQkJKGEgLSBiKQ0KKyNkZWZpbmUgdm9fTF9kZXBvc2l0X2goYSkJCSgoV29yZDMyKSgoYSkgPDwgMTYpKQ0KKyNkZWZpbmUgdm9fcm91bmQoYSkJCQkoKGEgKyAweDAwMDA4MDAwKSA+PiAxNikNCisjZGVmaW5lIHZvX2V4dHJhY3RfbChhKQkJCSgoV29yZDE2KShhKSkNCisjZGVmaW5lIHZvX0xfYWRkKGEsYikJCQkoYSArIGIpDQorI2RlZmluZSB2b19MX3N1YihhLGIpCQkJKGEgLSBiKQ0KKyNkZWZpbmUgdm9fbXVsdF9yKGEsYikJCQkoKCggYSAqIGIgKSArIDB4NDAwMCApID4+IDE1ICkNCisjZGVmaW5lIHZvX25lZ2F0ZShhKQkJICAgICAgICAoLWEpDQorI2RlZmluZSB2b19MX3Nocl9yKExfdmFyMSwgdmFyMikgICAgICAgICgoTF92YXIxKygoV29yZDMyKSgxTDw8KHZhcjItMSkpKSk+PnZhcjIpDQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQcm90b3R5cGVzIGZvciBiYXNpYyBhcml0aG1ldGljIG9wZXJhdG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KK3N0YXRpY192byBXb3JkMTYgYWRkIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOwkJCQkvKiBTaG9ydCBhZGQsMSAqLw0KK3N0YXRpY192byBXb3JkMTYgc3ViIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOwkJCQkvKiBTaG9ydCBzdWIsMSAqLw0KK3N0YXRpY192byBXb3JkMTYgc2hsIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU2hvcnQgc2hpZnQgbGVmdCwgICAgMSAgICovDQorc3RhdGljX3ZvIFdvcmQxNiBzaHIgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTaG9ydCBzaGlmdCByaWdodCwgICAxICAgKi8NCitzdGF0aWNfdm8gV29yZDE2IG11bHQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNob3J0IG11bHQsICAgICAgICAgIDEgICAqLw0KK3N0YXRpY192byBXb3JkMzIgTF9tdWx0IChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTG9uZyBtdWx0LCAgICAgICAgICAgMSAgICovDQorc3RhdGljX3ZvIFdvcmQxNiB2b3JvdW5kIChXb3JkMzIgTF92YXIxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSb3VuZCwgICAgICAgICAgICAgICAxICAgKi8NCitzdGF0aWNfdm8gV29yZDMyIExfbWFjIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOyAgICAgICAgICAgIAkvKiBNYWMsICAxICAqLw0KK3N0YXRpY192byBXb3JkMzIgTF9tc3UgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7ICAgCQkvKiBNc3UsICAxICAqLw0KK3N0YXRpY192byBXb3JkMzIgTF9hZGQgKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpOyAgIAkJIAkvKiBMb25nIGFkZCwgICAgICAgIDIgKi8NCitzdGF0aWNfdm8gV29yZDMyIExfc3ViIChXb3JkMzIgTF92YXIxLCBXb3JkMzIgTF92YXIyKTsgICAJCQkvKiBMb25nIHN1YiwgICAgICAgIDIgKi8NCitzdGF0aWNfdm8gV29yZDE2IG11bHRfciAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsgICAgICAJCSAJLyogTXVsdCB3aXRoIHJvdW5kLCAyICovDQorc3RhdGljX3ZvIFdvcmQzMiBMX3NobDIoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpOyAgICAgICAgICAgICAJCS8qIHZhcjIgPiAwKi8NCitzdGF0aWNfdm8gV29yZDMyIExfc2hsIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7ICAgIAkgCSAJLyogTG9uZyBzaGlmdCBsZWZ0LCAyICovDQorc3RhdGljX3ZvIFdvcmQzMiBMX3NociAoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpOyAgICAJIAkgCS8qIExvbmcgc2hpZnQgcmlnaHQsIDIqLw0KK3N0YXRpY192byBXb3JkMzIgTF9zaHJfciAoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpOyAJCQkJLyogTG9uZyBzaGlmdCByaWdodCB3aXRoIHJvdW5kLCAgMyAgICovDQorc3RhdGljX3ZvIFdvcmQxNiBub3JtX3MgKFdvcmQxNiB2YXIxKTsgICAgICAgICAgICAgCQkJCS8qIFNob3J0IG5vcm0sICAgICAgICAgICAxNSAgKi8NCitzdGF0aWNfdm8gV29yZDE2IGRpdl9zIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOyAJCQkJLyogU2hvcnQgZGl2aXNpb24sICAgICAgIDE4ICAqLw0KK3N0YXRpY192byBXb3JkMTYgbm9ybV9sIChXb3JkMzIgTF92YXIxKTsgICAgICAgICAgIAkJCQkvKiBMb25nIG5vcm0sICAgICAgICAgICAgMzAgICovICAgDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IGFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgUGVyZm9ybXMgdGhlIGFkZGl0aW9uICh2YXIxK3ZhcjIpIHdpdGggb3ZlcmZsb3cgY29udHJvbCBhbmQgc2F0dXJhdGlvbjt8DQorfCAgICB0aGUgMTYgYml0IHJlc3VsdCBpcyBzZXQgYXQgKzMyNzY3IHdoZW4gb3ZlcmZsb3cgb2NjdXJzIG9yIGF0IC0zMjc2OCAgIHwNCit8ICAgIHdoZW4gdW5kZXJmbG93IG9jY3Vycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KK3N0YXRpY192byBXb3JkMTYgYWRkIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKwlXb3JkMTYgdmFyX291dDsNCisJV29yZDMyIExfc3VtOw0KKwlMX3N1bSA9IChXb3JkMzIpIHZhcjEgKyB2YXIyOw0KKwl2YXJfb3V0ID0gc2F0dXJhdGUgKExfc3VtKTsNCisJcmV0dXJuICh2YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBQZXJmb3JtcyB0aGUgc3VidHJhY3Rpb24gKHZhcjErdmFyMikgd2l0aCBvdmVyZmxvdyBjb250cm9sIGFuZCBzYXR1LSAgIHwNCit8ICAgIHJhdGlvbjsgdGhlIDE2IGJpdCByZXN1bHQgaXMgc2V0IGF0ICszMjc2NyB3aGVuIG92ZXJmbG93IG9jY3VycyBvciBhdCAgfA0KK3wgICAgLTMyNzY4IHdoZW4gdW5kZXJmbG93IG9jY3Vycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQxNiBzdWIgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQxNiB2YXJfb3V0Ow0KKwlXb3JkMzIgTF9kaWZmOw0KKwlMX2RpZmYgPSAoV29yZDMyKSB2YXIxIC0gdmFyMjsNCisJdmFyX291dCA9IHNhdHVyYXRlIChMX2RpZmYpOw0KKwlyZXR1cm4gKHZhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBzaGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQXJpdGhtZXRpY2FsbHkgc2hpZnQgdGhlIDE2IGJpdCBpbnB1dCB2YXIxIGxlZnQgdmFyMiBwb3NpdGlvbnMuWmVybyBmaWxsfA0KK3wgICB0aGUgdmFyMiBMU0Igb2YgdGhlIHJlc3VsdC4gSWYgdmFyMiBpcyBuZWdhdGl2ZSwgYXJpdGhtZXRpY2FsbHkgc2hpZnQgICB8DQorfCAgIHZhcjEgcmlnaHQgYnkgLXZhcjIgd2l0aCBzaWduIGV4dGVuc2lvbi4gU2F0dXJhdGUgdGhlIHJlc3VsdCBpbiBjYXNlIG9mIHwNCit8ICAgdW5kZXJmbG93cyBvciBvdmVyZmxvd3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMTYgc2hsIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKwlXb3JkMTYgdmFyX291dDsNCisJV29yZDMyIHJlc3VsdDsNCisJaWYgKHZhcjIgPCAwKQ0KKwl7DQorCQlpZiAodmFyMiA8IC0xNikNCisJCQl2YXIyID0gLTE2Ow0KKwkJdmFyX291dCA9IHZhcjEgPj4gKChXb3JkMTYpLXZhcjIpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJcmVzdWx0ID0gKFdvcmQzMikgdmFyMSAqKChXb3JkMzIpIDEgPDwgdmFyMik7DQorCQlpZiAoKHZhcjIgPiAxNSAmJiB2YXIxICE9IDApIHx8IChyZXN1bHQgIT0gKFdvcmQzMikgKChXb3JkMTYpIHJlc3VsdCkpKQ0KKwkJew0KKwkJCXZhcl9vdXQgPSAoV29yZDE2KSgodmFyMSA+IDApID8gTUFYXzE2IDogTUlOXzE2KTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQl2YXJfb3V0ID0gZXh0cmFjdF9sIChyZXN1bHQpOw0KKwkJfQ0KKwl9DQorCXJldHVybiAodmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IHNociAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBBcml0aG1ldGljYWxseSBzaGlmdCB0aGUgMTYgYml0IGlucHV0IHZhcjEgcmlnaHQgdmFyMiBwb3NpdGlvbnMgd2l0aCAgICB8DQorfCAgIHNpZ24gZXh0ZW5zaW9uLiBJZiB2YXIyIGlzIG5lZ2F0aXZlLCBhcml0aG1ldGljYWxseSBzaGlmdCB2YXIxIGxlZnQgYnkgIHwNCit8ICAgLXZhcjIgd2l0aCBzaWduIGV4dGVuc2lvbi4gU2F0dXJhdGUgdGhlIHJlc3VsdCBpbiBjYXNlIG9mIHVuZGVyZmxvd3Mgb3IgfA0KK3wgICBvdmVyZmxvd3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQxNiBzaHIgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQxNiB2YXJfb3V0Ow0KKwlpZiAodmFyMiA8IDApDQorCXsNCisJCWlmICh2YXIyIDwgLTE2KQ0KKwkJCXZhcjIgPSAtMTY7DQorCQl2YXJfb3V0ID0gc2hsKHZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJaWYgKHZhcjIgPj0gMTUpDQorCQl7DQorCQkJdmFyX291dCA9IChXb3JkMTYpKCh2YXIxIDwgMCkgPyAtMSA6IDApOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCWlmICh2YXIxIDwgMCkNCisJCQl7DQorCQkJCXZhcl9vdXQgPSAoV29yZDE2KSh+KCh+dmFyMSkgPj4gdmFyMikpOw0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKwkJCQl2YXJfb3V0ID0gKFdvcmQxNikodmFyMSA+PiB2YXIyKTsNCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuICh2YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogbXVsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBQZXJmb3JtcyB0aGUgbXVsdGlwbGljYXRpb24gb2YgdmFyMSBieSB2YXIyIGFuZCBnaXZlcyBhIDE2IGJpdCByZXN1bHQgIHwNCit8ICAgIHdoaWNoIGlzIHNjYWxlZCBpLmUuOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgbXVsdCh2YXIxLHZhcjIpID0gZXh0cmFjdF9sKExfc2hyKCh2YXIxIHRpbWVzIHZhcjIpLDE1KSkgYW5kICB8DQorfCAgICAgICAgICAgICBtdWx0KC0zMjc2OCwtMzI3NjgpID0gMzI3NjcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDE2IG11bHQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQxNiB2YXJfb3V0Ow0KKwlXb3JkMzIgTF9wcm9kdWN0Ow0KKwlMX3Byb2R1Y3QgPSAoV29yZDMyKSB2YXIxICooV29yZDMyKSB2YXIyOw0KKwlMX3Byb2R1Y3QgPSAoTF9wcm9kdWN0ICYgKFdvcmQzMikgMHhmZmZmODAwMEwpID4+IDE1Ow0KKwlpZiAoTF9wcm9kdWN0ICYgKFdvcmQzMikgMHgwMDAxMDAwMEwpDQorCQlMX3Byb2R1Y3QgPSBMX3Byb2R1Y3QgfCAoV29yZDMyKSAweGZmZmYwMDAwTDsNCisJdmFyX291dCA9IHNhdHVyYXRlIChMX3Byb2R1Y3QpOw0KKwlyZXR1cm4gKHZhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX211bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgTF9tdWx0IGlzIHRoZSAzMiBiaXQgcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiB2YXIxIHRpbWVzIHZhcjIgICAgfA0KK3wgICB3aXRoIG9uZSBzaGlmdCBsZWZ0IGkuZS46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgTF9tdWx0KHZhcjEsdmFyMikgPSBMX3NobCgodmFyMSB0aW1lcyB2YXIyKSwxKSBhbmQgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgIExfbXVsdCgtMzI3NjgsLTMyNzY4KSA9IDIxNDc0ODM2NDcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQzMiBMX211bHQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQzMiBMX3Zhcl9vdXQ7DQorCUxfdmFyX291dCA9IChXb3JkMzIpIHZhcjEgKihXb3JkMzIpIHZhcjI7DQorCWlmIChMX3Zhcl9vdXQgIT0gKFdvcmQzMikgMHg0MDAwMDAwMEwpDQorCXsNCisJCUxfdmFyX291dCAqPSAyOw0KKwl9DQorCWVsc2UNCisJew0KKwkJTF92YXJfb3V0ID0gTUFYXzMyOw0KKwl9DQorCXJldHVybiAoTF92YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogcm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJvdW5kIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZSAzMiBiaXQgaW5wdXQgbnVtYmVyIGludG8gdGhlIE1TIDE2IGJpdHMgIHwNCit8ICAgd2l0aCBzYXR1cmF0aW9uLiBTaGlmdCB0aGUgcmVzdWx0aW5nIGJpdHMgcmlnaHQgYnkgMTYgYW5kIHJldHVybiB0aGUgMTYgfA0KK3wgICBiaXQgbnVtYmVyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgIHJvdW5kKExfdmFyMSkgPSBleHRyYWN0X2goTF9hZGQoTF92YXIxLDMyNzY4KSkgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIgKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjEgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQxNiB2b3JvdW5kIChXb3JkMzIgTF92YXIxKQ0KK3sNCisJV29yZDE2IHZhcl9vdXQ7DQorCVdvcmQzMiBMX3JvdW5kZWQ7DQorCUxfcm91bmRlZCA9IExfYWRkIChMX3ZhcjEsIChXb3JkMzIpIDB4MDAwMDgwMDBMKTsNCisJdmFyX291dCA9IGV4dHJhY3RfaCAoTF9yb3VuZGVkKTsNCisJcmV0dXJuICh2YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogTF9tYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE11bHRpcGx5IHZhcjEgYnkgdmFyMiBhbmQgc2hpZnQgdGhlIHJlc3VsdCBsZWZ0IGJ5IDEuIEFkZCB0aGUgMzIgYml0ICAgIHwNCit8ICAgcmVzdWx0IHRvIExfdmFyMyB3aXRoIHNhdHVyYXRpb24sIHJldHVybiBhIDMyIGJpdCByZXN1bHQ6ICAgICAgICAgICAgICAgfA0KK3wgICAgICAgIExfbWFjKExfdmFyMyx2YXIxLHZhcjIpID0gTF9hZGQoTF92YXIzLExfbXVsdCh2YXIxLHZhcjIpKS4gICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXIzICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQzMiBMX21hYyAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIExfdmFyX291dDsNCisJV29yZDMyIExfcHJvZHVjdDsNCisJTF9wcm9kdWN0ID0gKCh2YXIxICogdmFyMikgPDwgMSk7DQorCUxfdmFyX291dCA9IExfYWRkIChMX3ZhcjMsIExfcHJvZHVjdCk7DQorCXJldHVybiAoTF92YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogTF9tc3UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE11bHRpcGx5IHZhcjEgYnkgdmFyMiBhbmQgc2hpZnQgdGhlIHJlc3VsdCBsZWZ0IGJ5IDEuIFN1YnRyYWN0IHRoZSAzMiAgIHwNCit8ICAgYml0IHJlc3VsdCB0byBMX3ZhcjMgd2l0aCBzYXR1cmF0aW9uLCByZXR1cm4gYSAzMiBiaXQgcmVzdWx0OiAgICAgICAgICAgfA0KK3wgICAgICAgIExfbXN1KExfdmFyMyx2YXIxLHZhcjIpID0gTF9zdWIoTF92YXIzLExfbXVsdCh2YXIxLHZhcjIpKS4gICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXIzICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQzMiBMX21zdSAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIExfdmFyX291dDsNCisJV29yZDMyIExfcHJvZHVjdDsNCisJTF9wcm9kdWN0ID0gKHZhcjEgKiB2YXIyKTw8MTsNCisJTF92YXJfb3V0ID0gTF9zdWIgKExfdmFyMywgTF9wcm9kdWN0KTsNCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX2FkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgMzIgYml0cyBhZGRpdGlvbiBvZiB0aGUgdHdvIDMyIGJpdHMgdmFyaWFibGVzIChMX3ZhcjErTF92YXIyKSB3aXRoICAgICAgfA0KK3wgICBvdmVyZmxvdyBjb250cm9sIGFuZCBzYXR1cmF0aW9uOyB0aGUgcmVzdWx0IGlzIHNldCBhdCArMjE0NzQ4MzY0NyB3aGVuICB8DQorfCAgIG92ZXJmbG93IG9jY3VycyBvciBhdCAtMjE0NzQ4MzY0OCB3aGVuIHVuZGVyZmxvdyBvY2N1cnMuICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjEgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjIgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMzIgTF9hZGQgKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpDQorew0KKwlXb3JkMzIgTF92YXJfb3V0Ow0KKwlMX3Zhcl9vdXQgPSBMX3ZhcjEgKyBMX3ZhcjI7DQorCWlmICgoKExfdmFyMSBeIExfdmFyMikgJiBNSU5fMzIpID09IDApDQorCXsNCisJCWlmICgoTF92YXJfb3V0IF4gTF92YXIxKSAmIE1JTl8zMikNCisJCXsNCisJCQlMX3Zhcl9vdXQgPSAoTF92YXIxIDwgMCkgPyBNSU5fMzIgOiBNQVhfMzI7DQorCQl9DQorCX0NCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX3N1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgMzIgYml0cyBzdWJ0cmFjdGlvbiBvZiB0aGUgdHdvIDMyIGJpdHMgdmFyaWFibGVzIChMX3ZhcjEtTF92YXIyKSB3aXRoICAgfA0KK3wgICBvdmVyZmxvdyBjb250cm9sIGFuZCBzYXR1cmF0aW9uOyB0aGUgcmVzdWx0IGlzIHNldCBhdCArMjE0NzQ4MzY0NyB3aGVuICB8DQorfCAgIG92ZXJmbG93IG9jY3VycyBvciBhdCAtMjE0NzQ4MzY0OCB3aGVuIHVuZGVyZmxvdyBvY2N1cnMuICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjEgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjIgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMzIgTF9zdWIgKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpDQorew0KKwlXb3JkMzIgTF92YXJfb3V0Ow0KKwlMX3Zhcl9vdXQgPSBMX3ZhcjEgLSBMX3ZhcjI7DQorCWlmICgoKExfdmFyMSBeIExfdmFyMikgJiBNSU5fMzIpICE9IDApDQorCXsNCisJCWlmICgoTF92YXJfb3V0IF4gTF92YXIxKSAmIE1JTl8zMikNCisJCXsNCisJCQlMX3Zhcl9vdXQgPSAoTF92YXIxIDwgMEwpID8gTUlOXzMyIDogTUFYXzMyOw0KKwkJfQ0KKwl9DQorCXJldHVybiAoTF92YXJfb3V0KTsNCit9DQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogbXVsdF9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFNhbWUgYXMgbXVsdCB3aXRoIHJvdW5kaW5nLCBpLmUuOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICBtdWx0X3IodmFyMSx2YXIyKSA9IGV4dHJhY3RfbChMX3NocigoKHZhcjEgKiB2YXIyKSArIDE2Mzg0KSwxNSkpIGFuZCAgfA0KK3wgICAgIG11bHRfcigtMzI3NjgsLTMyNzY4KSA9IDMyNzY3LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQxNiBtdWx0X3IgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQxNiB2YXJfb3V0Ow0KKwlXb3JkMzIgTF9wcm9kdWN0X2FycjsNCisJTF9wcm9kdWN0X2FyciA9IChXb3JkMzIpIHZhcjEgKihXb3JkMzIpIHZhcjI7ICAgICAgIC8qIHByb2R1Y3QgKi8NCisJTF9wcm9kdWN0X2FyciArPSAoV29yZDMyKSAweDAwMDA0MDAwTDsgICAgICAvKiByb3VuZCAqLw0KKwlMX3Byb2R1Y3RfYXJyICY9IChXb3JkMzIpIDB4ZmZmZjgwMDBMOw0KKwlMX3Byb2R1Y3RfYXJyID4+PSAxNTsgICAgICAgLyogc2hpZnQgKi8NCisJaWYgKExfcHJvZHVjdF9hcnIgJiAoV29yZDMyKSAweDAwMDEwMDAwTCkgICAvKiBzaWduIGV4dGVuZCB3aGVuIG5lY2Vzc2FyeSAqLw0KKwl7DQorCQlMX3Byb2R1Y3RfYXJyIHw9IChXb3JkMzIpIDB4ZmZmZjAwMDBMOw0KKwl9DQorCXZhcl9vdXQgPSBzYXR1cmF0ZSAoTF9wcm9kdWN0X2Fycik7DQorCXJldHVybiAodmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IExfc2hsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBBcml0aG1ldGljYWxseSBzaGlmdCB0aGUgMzIgYml0IGlucHV0IExfdmFyMSBsZWZ0IHZhcjIgcG9zaXRpb25zLiBaZXJvICB8DQorfCAgIGZpbGwgdGhlIHZhcjIgTFNCIG9mIHRoZSByZXN1bHQuIElmIHZhcjIgaXMgbmVnYXRpdmUsIGFyaXRobWV0aWNhbGx5ICAgIHwNCit8ICAgc2hpZnQgTF92YXIxIHJpZ2h0IGJ5IC12YXIyIHdpdGggc2lnbiBleHRlbnNpb24uIFNhdHVyYXRlIHRoZSByZXN1bHQgaW4gfA0KK3wgICBjYXNlIG9mIHVuZGVyZmxvd3Mgb3Igb3ZlcmZsb3dzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXIxICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMzIgTF9zaGwgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIExfdmFyX291dCA9IDBMOw0KKwlpZiAodmFyMiA8PSAwKQ0KKwl7DQorCQlpZiAodmFyMiA8IC0zMikNCisJCQl2YXIyID0gLTMyOw0KKwkJTF92YXJfb3V0ID0gKExfdmFyMSA+PiAoV29yZDE2KS12YXIyKTsNCisJfQ0KKwllbHNlDQorCXsNCisJCWZvciAoOyB2YXIyID4gMDsgdmFyMi0tKQ0KKwkJew0KKwkJCWlmIChMX3ZhcjEgPiAoV29yZDMyKSAwWDNmZmZmZmZmTCkNCisJCQl7DQorCQkJCUxfdmFyX291dCA9IE1BWF8zMjsNCisJCQkJYnJlYWs7DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCWlmIChMX3ZhcjEgPCAoV29yZDMyKSAweGMwMDAwMDAwTCkNCisJCQkJew0KKwkJCQkJLy9PdmVyZmxvdyA9IDE7DQorCQkJCQlMX3Zhcl9vdXQgPSBNSU5fMzI7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCX0NCisJCQlMX3ZhcjEgKj0gMjsNCisJCQlMX3Zhcl9vdXQgPSBMX3ZhcjE7DQorCQl9DQorCX0NCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCitzdGF0aWNfdm8gV29yZDMyIExfc2hsMihXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQzMiBMX3Zhcl9vdXQgPSAwTDsNCisNCisJZm9yICg7IHZhcjIgPiAwOyB2YXIyLS0pDQorCXsNCisJCWlmIChMX3ZhcjEgPiAoV29yZDMyKSAwWDNmZmZmZmZmTCkNCisJCXsNCisJCQlMX3Zhcl9vdXQgPSBNQVhfMzI7DQorCQkJYnJlYWs7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJaWYgKExfdmFyMSA8IChXb3JkMzIpIDB4YzAwMDAwMDBMKQ0KKwkJCXsNCisJCQkJTF92YXJfb3V0ID0gTUlOXzMyOw0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorCQlMX3ZhcjEgPDw9MSA7DQorCQlMX3Zhcl9vdXQgPSBMX3ZhcjE7DQorCX0NCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX3NociAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQXJpdGhtZXRpY2FsbHkgc2hpZnQgdGhlIDMyIGJpdCBpbnB1dCBMX3ZhcjEgcmlnaHQgdmFyMiBwb3NpdGlvbnMgd2l0aCAgfA0KK3wgICBzaWduIGV4dGVuc2lvbi4gSWYgdmFyMiBpcyBuZWdhdGl2ZSwgYXJpdGhtZXRpY2FsbHkgc2hpZnQgTF92YXIxIGxlZnQgICB8DQorfCAgIGJ5IC12YXIyIGFuZCB6ZXJvIGZpbGwgdGhlIC12YXIyIExTQiBvZiB0aGUgcmVzdWx0LiBTYXR1cmF0ZSB0aGUgcmVzdWx0IHwNCit8ICAgaW4gY2FzZSBvZiB1bmRlcmZsb3dzIG9yIG92ZXJmbG93cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyMSAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDMyIExfc2hyIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQzMiBMX3Zhcl9vdXQ7DQorCWlmICh2YXIyIDwgMCkNCisJew0KKwkJaWYgKHZhcjIgPCAtMzIpDQorCQkJdmFyMiA9IC0zMjsNCisJCUxfdmFyX291dCA9IExfc2hsMihMX3ZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJaWYgKHZhcjIgPj0gMzEpDQorCQl7DQorCQkJTF92YXJfb3V0ID0gKExfdmFyMSA8IDBMKSA/IC0xIDogMDsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlpZiAoTF92YXIxIDwgMCkNCisJCQl7DQorCQkJCUxfdmFyX291dCA9IH4oKH5MX3ZhcjEpID4+IHZhcjIpOw0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKwkJCQlMX3Zhcl9vdXQgPSBMX3ZhcjEgPj4gdmFyMjsNCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX3Nocl9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgU2FtZSBhcyBMX3NocihMX3ZhcjEsdmFyMikgYnV0IHdpdGggcm91bmRpbmcuIFNhdHVyYXRlIHRoZSByZXN1bHQgaW4gICAgfA0KK3wgICBjYXNlIG9mIHVuZGVyZmxvd3Mgb3Igb3ZlcmZsb3dzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAtIElmIHZhcjIgaXMgZ3JlYXRlciB0aGFuIHplcm8gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgIGlmIChMX3N1YihMX3NobChMX3NocihMX3ZhcjEsdmFyMiksMSksTF9zaHIoTF92YXIxLHN1Yih2YXIyLDEpKSkpfA0KK3wgICAgICAgICAgaXMgZXF1YWwgdG8gemVybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgIHRoZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgTF9zaHJfcihMX3ZhcjEsdmFyMikgPSBMX3NocihMX3ZhcjEsdmFyMikgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgIExfc2hyX3IoTF92YXIxLHZhcjIpID0gTF9hZGQoTF9zaHIoTF92YXIxLHZhcjIpLDEpICAgIHwNCit8ICAgIC0gSWYgdmFyMiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICBMX3Nocl9yKExfdmFyMSx2YXIyKSA9IExfc2hyKExfdmFyMSx2YXIyKS4gICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IHZhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQzMiBMX3Nocl9yIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQzMiBMX3Zhcl9vdXQ7DQorCWlmICh2YXIyID4gMzEpDQorCXsNCisJCUxfdmFyX291dCA9IDA7DQorCX0NCisJZWxzZQ0KKwl7DQorCQlMX3Zhcl9vdXQgPSBMX3NociAoTF92YXIxLCB2YXIyKTsNCisJCWlmICh2YXIyID4gMCkNCisJCXsNCisJCQlpZiAoKExfdmFyMSAmICgoV29yZDMyKSAxIDw8ICh2YXIyIC0gMSkpKSAhPSAwKQ0KKwkJCXsNCisJCQkJTF92YXJfb3V0Kys7DQorCQkJfQ0KKwkJfQ0KKwl9DQorCXJldHVybiAoTF92YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogbm9ybV9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFByb2R1Y2VzIHRoZSBudW1iZXIgb2YgbGVmdCBzaGlmdCBuZWVkZWQgdG8gbm9ybWFsaXplIHRoZSAxNiBiaXQgdmFyaWEtIHwNCit8ICAgYmxlIHZhcjEgZm9yIHBvc2l0aXZlIHZhbHVlcyBvbiB0aGUgaW50ZXJ2YWwgd2l0aCBtaW5pbXVtIG9mIDE2Mzg0IGFuZCAgfA0KK3wgICBtYXhpbXVtIG9mIDMyNzY3LCBhbmQgZm9yIG5lZ2F0aXZlIHZhbHVlcyBvbiB0aGUgaW50ZXJ2YWwgd2l0aCBtaW5pbXVtICB8DQorfCAgIG9mIC0zMjc2OCBhbmQgbWF4aW11bSBvZiAtMTYzODQ7IGluIG9yZGVyIHRvIG5vcm1hbGl6ZSB0aGUgcmVzdWx0LCB0aGUgIHwNCit8ICAgZm9sbG93aW5nIG9wZXJhdGlvbiBtdXN0IGJlIGRvbmUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgIG5vcm1fdmFyMSA9IHNobCh2YXIxLG5vcm1fcyh2YXIxKSkuICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCAwMDBmLiAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMTYgbm9ybV9zIChXb3JkMTYgdmFyMSkNCit7DQorCVdvcmQxNiB2YXJfb3V0ID0gMDsNCisJaWYgKHZhcjEgPT0gMCkNCisJew0KKwkJdmFyX291dCA9IDA7DQorCX0NCisJZWxzZQ0KKwl7DQorCQlpZiAodmFyMSA9PSAtMSkNCisJCXsNCisJCQl2YXJfb3V0ID0gMTU7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJaWYgKHZhcjEgPCAwKQ0KKwkJCXsNCisJCQkJdmFyMSA9IChXb3JkMTYpfnZhcjE7DQorCQkJfQ0KKwkJCWZvciAodmFyX291dCA9IDA7IHZhcjEgPCAweDQwMDA7IHZhcl9vdXQrKykNCisJCQl7DQorCQkJCXZhcjEgPDw9IDE7DQorCQkJfQ0KKwkJfQ0KKwl9DQorCXJldHVybiAodmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IGRpdl9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQcm9kdWNlcyBhIHJlc3VsdCB3aGljaCBpcyB0aGUgZnJhY3Rpb25hbCBpbnRlZ2VyIGRpdmlzaW9uIG9mIHZhcjEgIGJ5ICB8DQorfCAgIHZhcjI7IHZhcjEgYW5kIHZhcjIgbXVzdCBiZSBwb3NpdGl2ZSBhbmQgdmFyMiBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgIHwNCit8ICAgdG8gdmFyMTsgdGhlIHJlc3VsdCBpcyBwb3NpdGl2ZSAobGVhZGluZyBiaXQgZXF1YWwgdG8gMCkgYW5kIHRydW5jYXRlZCAgfA0KK3wgICB0byAxNiBiaXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElmIHZhcjEgPSB2YXIyIHRoZW4gZGl2KHZhcjEsdmFyMikgPSAzMjc2Ny4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8PSB2YXIxIDw9IHZhcjIgYW5kIHZhcjIgIT0gMC4gICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IHZhcjEgPD0gdmFyMiA8PSAweDAwMDAgN2ZmZiBhbmQgdmFyMiAhPSAwLiAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgSXQncyBhIFExNSB2YWx1ZSAocG9pbnQgYmV0d2VlbiBiMTUgYW5kIGIxNCkuICAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMTYgZGl2X3MgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQxNiB2YXJfb3V0ID0gMDsNCisJV29yZDE2IGl0ZXJhdGlvbjsNCisJV29yZDMyIExfbnVtOw0KKwlXb3JkMzIgTF9kZW5vbTsNCisJaWYgKCh2YXIxIDwgMCkgfHwgKHZhcjIgPCAwKSkNCisJew0KKwkJdmFyX291dCA9IE1BWF8xNjsNCisJCXJldHVybiB2YXJfb3V0Ow0KKwl9DQorCWlmICh2YXIyID09IDApDQorCXsNCisJCXZhcl9vdXQgPSBNQVhfMTY7DQorCQlyZXR1cm4gdmFyX291dDsNCisJfQ0KKwlpZiAodmFyMSA9PSAwKQ0KKwl7DQorCQl2YXJfb3V0ID0gMDsNCisJfQ0KKwllbHNlDQorCXsNCisJCWlmICh2YXIxID09IHZhcjIpDQorCQl7DQorCQkJdmFyX291dCA9IE1BWF8xNjsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlMX251bSA9IExfZGVwb3NpdF9sICh2YXIxKTsNCisJCQlMX2Rlbm9tID0gTF9kZXBvc2l0X2wodmFyMik7DQorCQkJZm9yIChpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCAxNTsgaXRlcmF0aW9uKyspDQorCQkJew0KKwkJCQl2YXJfb3V0IDw8PSAxOw0KKwkJCQlMX251bSA8PD0gMTsNCisJCQkJaWYgKExfbnVtID49IExfZGVub20pDQorCQkJCXsNCisJCQkJCUxfbnVtIC09IExfZGVub207ICAgICAgDQorCQkJCQl2YXJfb3V0ICs9IDE7ICAgICAgICAgIA0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9DQorCXJldHVybiAodmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IG5vcm1fbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQcm9kdWNlcyB0aGUgbnVtYmVyIG9mIGxlZnQgc2hpZnRzIG5lZWRlZCB0byBub3JtYWxpemUgdGhlIDMyIGJpdCB2YXJpYS18DQorfCAgIGJsZSBMX3ZhcjEgZm9yIHBvc2l0aXZlIHZhbHVlcyBvbiB0aGUgaW50ZXJ2YWwgd2l0aCBtaW5pbXVtIG9mICAgICAgICAgIHwNCit8ICAgMTA3Mzc0MTgyNCBhbmQgbWF4aW11bSBvZiAyMTQ3NDgzNjQ3LCBhbmQgZm9yIG5lZ2F0aXZlIHZhbHVlcyBvbiB0aGUgaW4tfA0KK3wgICB0ZXJ2YWwgd2l0aCBtaW5pbXVtIG9mIC0yMTQ3NDgzNjQ4IGFuZCBtYXhpbXVtIG9mIC0xMDczNzQxODI0OyBpbiBvcmRlciB8DQorfCAgIHRvIG5vcm1hbGl6ZSB0aGUgcmVzdWx0LCB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbiBtdXN0IGJlIGRvbmUgOiAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgIG5vcm1fTF92YXIxID0gTF9zaGwoTF92YXIxLG5vcm1fbChMX3ZhcjEpKS4gICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IHZhcjEgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgMDAxZi4gICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDE2IG5vcm1fbCAoV29yZDMyIExfdmFyMSkNCit7DQorCVdvcmQxNiB2YXJfb3V0ID0gMDsNCisJaWYgKExfdmFyMSAhPSAwKQ0KKwl7DQorCQl2YXJfb3V0ID0gMzE7DQorCQlpZiAoTF92YXIxICE9IChXb3JkMzIpIDB4ZmZmZmZmZmZMKQ0KKwkJew0KKwkJCUxfdmFyMSBePSAoTF92YXIxID4+MzEpOw0KKwkJCWZvciAodmFyX291dCA9IDA7IExfdmFyMSA8IChXb3JkMzIpIDB4NDAwMDAwMDBMOyB2YXJfb3V0KyspDQorCQkJew0KKwkJCQlMX3ZhcjEgPDw9IDE7DQorCQkJfQ0KKwkJfQ0KKwl9DQorCXJldHVybiAodmFyX291dCk7DQorfQ0KKw0KKyNlbmRpZiAvL19fQkFTSUNfT1BfSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9iaXRzLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2JpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzE0NmRlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9iaXRzLmgKQEAgLTAsMCArMSw5MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgQklUUy5IICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorKiAgICAgICBOdW1iZXIgb2YgYml0cyBmb3IgZGlmZmVyZW50IG1vZGVzCQkJICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWZuZGVmIF9fQklUU19IX18NCisjZGVmaW5lIF9fQklUU19IX18NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorI2luY2x1ZGUgImNvZF9tYWluLmgiDQorDQorI2RlZmluZSBOQkJJVFNfN2sgICAgIDEzMiAgICAgICAgICAgICAgICAgIC8qIDYuNjBrICAqLw0KKyNkZWZpbmUgTkJCSVRTXzlrICAgICAxNzcgICAgICAgICAgICAgICAgICAvKiA4Ljg1ayAgKi8NCisjZGVmaW5lIE5CQklUU18xMmsgICAgMjUzICAgICAgICAgICAgICAgICAgLyogMTIuNjVrICovDQorI2RlZmluZSBOQkJJVFNfMTRrICAgIDI4NSAgICAgICAgICAgICAgICAgIC8qIDE0LjI1ayAqLw0KKyNkZWZpbmUgTkJCSVRTXzE2ayAgICAzMTcgICAgICAgICAgICAgICAgICAvKiAxNS44NWsgKi8NCisjZGVmaW5lIE5CQklUU18xOGsgICAgMzY1ICAgICAgICAgICAgICAgICAgLyogMTguMjVrICovDQorI2RlZmluZSBOQkJJVFNfMjBrICAgIDM5NyAgICAgICAgICAgICAgICAgIC8qIDE5Ljg1ayAqLw0KKyNkZWZpbmUgTkJCSVRTXzIzayAgICA0NjEgICAgICAgICAgICAgICAgICAvKiAyMy4wNWsgKi8NCisjZGVmaW5lIE5CQklUU18yNGsgICAgNDc3ICAgICAgICAgICAgICAgICAgLyogMjMuODVrICovDQorDQorI2RlZmluZSBOQkJJVFNfU0lEICAgIDM1DQorI2RlZmluZSBOQl9CSVRTX01BWCAgIE5CQklUU18yNGsNCisNCisjZGVmaW5lIEJJVF8wICAgICAoV29yZDE2KS0xMjcNCisjZGVmaW5lIEJJVF8xICAgICAoV29yZDE2KTEyNw0KKyNkZWZpbmUgQklUXzBfSVRVIChXb3JkMTYpMHgwMDdGDQorI2RlZmluZSBCSVRfMV9JVFUgKFdvcmQxNikweDAwODENCisNCisjZGVmaW5lIFNJWkVfTUFYMSAgKDMrTkJfQklUU19NQVgpICAgICAgICAgIC8qIHNlcmlhbCBzaXplIG1heCAqLw0KKyNkZWZpbmUgVFhfRlJBTUVfVFlQRSAoV29yZDE2KTB4NmIyMQ0KKyNkZWZpbmUgUlhfRlJBTUVfVFlQRSAoV29yZDE2KTB4NmIyMA0KKw0KK3N0YXRpYyBjb25zdCBXb3JkMTYgbmJfb2ZfYml0c1tOVU1fT0ZfTU9ERVNdID0gew0KKwlOQkJJVFNfN2ssDQorCU5CQklUU185aywNCisJTkJCSVRTXzEyaywNCisJTkJCSVRTXzE0aywNCisJTkJCSVRTXzE2aywNCisJTkJCSVRTXzE4aywNCisJTkJCSVRTXzIwaywNCisJTkJCSVRTXzIzaywNCisJTkJCSVRTXzI0aywNCisJTkJCSVRTX1NJRA0KK307DQorDQorLyp0eXBlZGVmIHN0cnVjdA0KK3sNCitXb3JkMTYgc2lkX3VwZGF0ZV9jb3VudGVyOw0KK1dvcmQxNiBzaWRfaGFuZG92ZXJfZGVidDsNCitXb3JkMTYgcHJldl9mdDsNCit9IFRYX1N0YXRlOw0KKyovDQorDQorLy90eXBlZGVmIHN0cnVjdA0KKy8vew0KKy8vCVdvcmQxNiBwcmV2X2Z0Ow0KKy8vCVdvcmQxNiBwcmV2X21vZGU7DQorLy99IFJYX1N0YXRlOw0KKw0KK2ludCBQYWNrQml0cyhXb3JkMTYgcHJtc1tdLCBXb3JkMTYgY29kaW5nX21vZGUsIFdvcmQxNiBtb2RlLCBDb2Rlcl9TdGF0ZSAqc3QpOw0KKw0KKw0KK3ZvaWQgUGFybV9zZXJpYWwoDQorCQlXb3JkMTYgdmFsdWUsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGFyYW1ldGVyIHZhbHVlICovDQorCQlXb3JkMTYgbm9fb2ZfYml0cywgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogbnVtYmVyIG9mIGJpdHMgICovDQorCQlXb3JkMTYgKiogcHJtcw0KKwkJKTsNCisNCisNCisjZW5kaWYgIC8vX19CSVRTX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvY25zdC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9jbnN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZkYmQ4OAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvY25zdC5oCkBAIC0wLDAgKzEsODEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBDTlNULkggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgQ29kZWMgY29uc3RhbnQgcGFyYW1ldGVycyAoY29kZXIgYW5kIGRlY29kZXIpICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWZuZGVmIF9fQ05TVF9IX18NCisjZGVmaW5lIF9fQ05TVF9IX18NCisNCisjZGVmaW5lIExfRlJBTUUxNmsgICAzMjAgICAgICAgICAgICAgICAgICAgLyogRnJhbWUgc2l6ZSBhdCAxNmtIeiAgICAgICAgICAgICAgICAgICAgICAgICovDQorI2RlZmluZSBMX0ZSQU1FICAgICAgMjU2ICAgICAgICAgICAgICAgICAgIC8qIEZyYW1lIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgTF9TVUJGUjE2ayAgIDgwICAgICAgICAgICAgICAgICAgICAvKiBTdWJmcmFtZSBzaXplIGF0IDE2a0h6ICAgICAgICAgICAgICAgICAgICAgKi8NCisNCisjZGVmaW5lIExfU1VCRlIgICAgICA2NCAgICAgICAgICAgICAgICAgICAgLyogU3ViZnJhbWUgc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorI2RlZmluZSBOQl9TVUJGUiAgICAgNCAgICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiBzdWJmcmFtZSBwZXIgZnJhbWUgICAgICAgICAgICAgICAqLw0KKw0KKyNkZWZpbmUgTF9ORVhUICAgICAgIDY0ICAgICAgICAgICAgICAgICAgICAvKiBPdmVyaGVhZCBpbiBMUCBhbmFseXNpcyAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIExfV0lORE9XICAgICAzODQgICAgICAgICAgICAgICAgICAgLyogd2luZG93IHNpemUgaW4gTFAgYW5hbHlzaXMgICAgICAgICAgICAgICAgICovDQorI2RlZmluZSBMX1RPVEFMICAgICAgMzg0ICAgICAgICAgICAgICAgICAgIC8qIFRvdGFsIHNpemUgb2Ygc3BlZWNoIGJ1ZmZlci4gICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgTSAgICAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAvKiBPcmRlciBvZiBMUCBmaWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIE0xNmsgICAgICAgICAyMA0KKw0KKyNkZWZpbmUgTF9GSUxUMTZrICAgIDE1ICAgICAgICAgICAgICAgICAgICAvKiBEZWxheSBvZiBkb3duLXNhbXBsaW5nIGZpbHRlciAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIExfRklMVCAgICAgICAxMiAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgb2YgdXAtc2FtcGxpbmcgZmlsdGVyICAgICAgICAgICAgICAgICovDQorDQorI2RlZmluZSBHUF9DTElQICAgICAgMTU1NjUgICAgICAgICAgICAgICAgIC8qIFBpdGNoIGdhaW4gY2xpcHBpbmcgPSAwLjk1IFExNCAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgUElUX1NIQVJQICAgIDI3ODUzICAgICAgICAgICAgICAgICAvKiBwaXRjaCBzaGFycGVuaW5nIGZhY3RvciA9IDAuODUgUTE1ICAgICAgICAgKi8NCisNCisjZGVmaW5lIFBJVF9NSU4gICAgICAzNCAgICAgICAgICAgICAgICAgICAgLyogTWluaW11bSBwaXRjaCBsYWcgd2l0aCByZXNvbHV0aW9uIDEvNCAgICAgICovDQorI2RlZmluZSBQSVRfRlIyICAgICAgMTI4ICAgICAgICAgICAgICAgICAgIC8qIE1pbmltdW0gcGl0Y2ggbGFnIHdpdGggcmVzb2x1dGlvbiAxLzIgICAgICAqLw0KKyNkZWZpbmUgUElUX0ZSMV85YiAgIDE2MCAgICAgICAgICAgICAgICAgICAvKiBNaW5pbXVtIHBpdGNoIGxhZyB3aXRoIHJlc29sdXRpb24gMSAgICAgICAgKi8NCisjZGVmaW5lIFBJVF9GUjFfOGIgICA5MiAgICAgICAgICAgICAgICAgICAgLyogTWluaW11bSBwaXRjaCBsYWcgd2l0aCByZXNvbHV0aW9uIDEgICAgICAgICovDQorI2RlZmluZSBQSVRfTUFYICAgICAgMjMxICAgICAgICAgICAgICAgICAgIC8qIE1heGltdW0gcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgTF9JTlRFUlBPTCAgICgxNisxKSAgICAgICAgICAgICAgICAvKiBMZW5ndGggb2YgZmlsdGVyIGZvciBpbnRlcnBvbGF0aW9uICAgICAgICAgKi8NCisNCisjZGVmaW5lIE9QTF9ERUNJTSAgICAyICAgICAgICAgICAgICAgICAgICAgLyogRGVjaW1hdGlvbiBpbiBvcGVuLWxvb3AgcGl0Y2ggYW5hbHlzaXMgICAgICovDQorDQorI2RlZmluZSBQUkVFTVBIX0ZBQyAgMjIyODIgICAgICAgICAgICAgICAgIC8qIHByZWVtcGhhc2lzIGZhY3RvciAoMC42OCBpbiBRMTUpICAgICAgICAgICAqLw0KKyNkZWZpbmUgR0FNTUExICAgICAgIDMwMTQ3ICAgICAgICAgICAgICAgICAvKiBXZWlnaHRpbmcgZmFjdG9yIChudW1lcmF0b3IpICgwLjkyIGluIFExNSkgKi8NCisjZGVmaW5lIFRJTFRfRkFDICAgICAyMjI4MiAgICAgICAgICAgICAgICAgLyogdGlsdCBmYWN0b3IgKGRlbm9taW5hdG9yKSAoMC42OCBpbiBRMTUpICAgICovDQorDQorI2RlZmluZSBRX01BWCAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgIC8qIHNjYWxpbmcgbWF4IGZvciBzaWduYWwgKHNlZSBzeW5fZmlsdF8zMikgICAqLw0KKw0KKyNkZWZpbmUgUkFORE9NX0lOSVRTRUVEICAyMTg0NSAgICAgICAgICAgICAvKiBvd24gcmFuZG9tIGluaXQgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgKi8NCisNCisjZGVmaW5lIExfTUVBTkJVRiAgICAgICAgMw0KKyNkZWZpbmUgT05FX1BFUl9NRUFOQlVGIDEwOTIzDQorDQorI2RlZmluZSBNT0RFXzdrICAgICAgIDANCisjZGVmaW5lIE1PREVfOWsgICAgICAgMQ0KKyNkZWZpbmUgTU9ERV8xMmsgICAgICAyDQorI2RlZmluZSBNT0RFXzE0ayAgICAgIDMNCisjZGVmaW5lIE1PREVfMTZrICAgICAgNA0KKyNkZWZpbmUgTU9ERV8xOGsgICAgICA1DQorI2RlZmluZSBNT0RFXzIwayAgICAgIDYNCisjZGVmaW5lIE1PREVfMjNrICAgICAgNw0KKyNkZWZpbmUgTU9ERV8yNGsgICAgICA4DQorI2RlZmluZSBNUkRUWCAgICAgICAgIDkNCisjZGVmaW5lIE5VTV9PRl9NT0RFUyAgMTAgICAgICAgICAgICAgICAgICAgLyogc2VlIGJpdHMuaCBmb3IgYml0cyBkZWZpbml0aW9uICAgICAgICAgICAgICovDQorDQorI2RlZmluZSBFSEZfTUFTSyAoV29yZDE2KTB4MDAwOCAgICAgICAgICAgIC8qIGhvbWluZyBmcmFtZSBwYXR0ZXJuICAgICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKyNlbmRpZiAvL19fQ05TVF9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2NvZF9tYWluLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2NvZF9tYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkNTc4NwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvY29kX21haW4uaApAQCAtMCwwICsxLDEwMyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIENPRF9NQUlOLkggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICBTdGF0aWMgbWVtb3J5IGluIHRoZSBlbmNvZGVyCQkJCSAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaWZuZGVmIF9fQ09EX01BSU5fSF9fDQorI2RlZmluZSBfX0NPRF9NQUlOX0hfXw0KKw0KKyNpbmNsdWRlICJjbnN0LmgiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlciBjb25zdGFudCBwYXJhbWV0ZXJzICovDQorDQorI2luY2x1ZGUgIndiX3ZhZC5oIg0KKyNpbmNsdWRlICJkdHguaCINCisjaW5jbHVkZSAic3RyZWFtLmgiDQorI2luY2x1ZGUgInZvQU1SV0IuaCINCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgICAgV29yZDE2IG1lbV9kZWNpbVsyICogTF9GSUxUMTZrXTsgICAgICAgLyogc3BlZWNoIGRlY2ltYXRlZCBmaWx0ZXIgbWVtb3J5ICovDQorICAgIFdvcmQxNiBtZW1fc2lnX2luWzZdOyAgICAgICAgICAgICAgICAgIC8qIGhwNTAgZmlsdGVyIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgbWVtX3ByZWVtcGg7ICAgICAgICAgICAgICAgICAgICAvKiBzcGVlY2ggcHJlZW1waCBmaWx0ZXIgbWVtb3J5ICovDQorICAgIFdvcmQxNiBvbGRfc3BlZWNoW0xfVE9UQUwgLSBMX0ZSQU1FXTsgIC8qIG9sZCBzcGVlY2ggdmVjdG9yIGF0IDEyLjhrSHogKi8NCisgICAgV29yZDE2IG9sZF93c3BbUElUX01BWCAvIE9QTF9ERUNJTV07ICAgLyogb2xkIGRlY2ltYXRlZCB3ZWlnaHRlZCBzcGVlY2ggdmVjdG9yICovDQorICAgIFdvcmQxNiBvbGRfZXhjW1BJVF9NQVggKyBMX0lOVEVSUE9MXTsgIC8qIG9sZCBleGNpdGF0aW9uIHZlY3RvciAqLw0KKyAgICBXb3JkMTYgbWVtX2xldmluc29uW00gKyAyXTsgICAgICAgICAgICAvKiBsZXZpbnNvbiByb3V0aW5lIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgaXNwb2xkW01dOyAgICAgICAgICAgICAgICAgICAgICAvKiBvbGQgaXNwIChpbW1pdHRhbmNlIHNwZWN0cmFsIHBhaXJzKSAqLw0KKyAgICBXb3JkMTYgaXNwb2xkX3FbTV07ICAgICAgICAgICAgICAgICAgICAvKiBxdWFudGl6ZWQgb2xkIGlzcCAqLw0KKyAgICBXb3JkMTYgcGFzdF9pc2ZxW01dOyAgICAgICAgICAgICAgICAgICAvKiBwYXN0IGlzZiBxdWFudGl6ZXIgKi8NCisgICAgV29yZDE2IG1lbV93c3A7ICAgICAgICAgICAgICAgICAgICAgICAgLyogd3NwIHZlY3RvciBtZW1vcnkgKi8NCisgICAgV29yZDE2IG1lbV9kZWNpbTJbM107ICAgICAgICAgICAgICAgICAgLyogd3NwIGRlY2ltYXRpb24gZmlsdGVyIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgbWVtX3cwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0YXJnZXQgdmVjdG9yIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgbWVtX3N5bltNXTsgICAgICAgICAgICAgICAgICAgICAvKiBzeW50aGVzaXMgbWVtb3J5ICovDQorICAgIFdvcmQxNiB0aWx0X2NvZGU7ICAgICAgICAgICAgICAgICAgICAgIC8qIHRpbHQgb2YgY29kZSAqLw0KKyAgICBXb3JkMTYgb2xkX3dzcF9tYXg7ICAgICAgICAgICAgICAgICAgICAvKiBvbGQgd3NwIG1heGltdW0gdmFsdWUgKi8NCisgICAgV29yZDE2IG9sZF93c3Bfc2hpZnQ7ICAgICAgICAgICAgICAgICAgLyogb2xkIHdzcCBzaGlmdCAqLw0KKyAgICBXb3JkMTYgUV9vbGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvbGQgc2NhbGluZyBmYWN0b3IgKi8NCisgICAgV29yZDE2IFFfbWF4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgLyogb2xkIG1heGltdW0gc2NhbGluZyBmYWN0b3IgKi8NCisgICAgV29yZDE2IGdwX2NsaXBbMl07ICAgICAgICAgICAgICAgICAgICAgLyogZ2FpbiBvZiBwaXRjaCBjbGlwcGluZyBtZW1vcnkgKi8NCisgICAgV29yZDE2IHF1YV9nYWluWzRdOyAgICAgICAgICAgICAgICAgICAgLyogZ2FpbiBxdWFudGl6ZXIgbWVtb3J5ICovDQorDQorICAgIFdvcmQxNiBvbGRfVDBfbWVkOw0KKyAgICBXb3JkMTYgb2xfZ2FpbjsNCisgICAgV29yZDE2IGFkYV93Ow0KKyAgICBXb3JkMTYgb2xfd2dodF9mbGc7DQorICAgIFdvcmQxNiBvbGRfb2xfbGFnWzVdOw0KKyAgICBXb3JkMTYgaHBfd3NwX21lbVs5XTsNCisgICAgV29yZDE2IG9sZF9ocF93c3BbTF9GUkFNRSAvIE9QTF9ERUNJTSArIChQSVRfTUFYIC8gT1BMX0RFQ0lNKV07DQorICAgIFZhZFZhcnMgKnZhZFN0Ow0KKyAgICBkdHhfZW5jU3RhdGUgKmR0eF9lbmNTdDsNCisgICAgV29yZDE2IGZpcnN0X2ZyYW1lOw0KKyAgICBXb3JkMTYgaXNmb2xkW01dOyAgICAgICAgICAgICAgICAgICAgICAvKiBvbGQgaXNmIChmcmVxdWVuY3kgZG9tYWluKSAqLw0KKyAgICBXb3JkMzIgTF9nY190aHJlczsgICAgICAgICAgICAgICAgICAgICAvKiB0aHJlc2hvbGQgZm9yIG5vaXNlIGVuaGFuY2VyICovDQorICAgIFdvcmQxNiBtZW1fc3luX2hpW01dOyAgICAgICAgICAgICAgICAgIC8qIG1vZGlmaWVkIHN5bnRoZXNpcyBtZW1vcnkgKE1TQikgKi8NCisgICAgV29yZDE2IG1lbV9zeW5fbG9bTV07ICAgICAgICAgICAgICAgICAgLyogbW9kaWZpZWQgc3ludGhlc2lzIG1lbW9yeSAoTFNCKSAqLw0KKyAgICBXb3JkMTYgbWVtX2RlZW1waDsgICAgICAgICAgICAgICAgICAgICAvKiBzcGVlY2ggZGVlbXBoIGZpbHRlciBtZW1vcnkgKi8NCisgICAgV29yZDE2IG1lbV9zaWdfb3V0WzZdOyAgICAgICAgICAgICAgICAgLyogaHA1MCBmaWx0ZXIgbWVtb3J5IGZvciBzeW50aGVzaXMgKi8NCisgICAgV29yZDE2IG1lbV9ocDQwMFs2XTsgICAgICAgICAgICAgICAgICAgLyogaHA0MDAgZmlsdGVyIG1lbW9yeSBmb3Igc3ludGhlc2lzICovDQorICAgIFdvcmQxNiBtZW1fb3ZlcnNhbXBbMiAqIExfRklMVF07ICAgICAgIC8qIHN5bnRoZXNpcyBvdmVyc2FtcGxlZCBmaWx0ZXIgbWVtb3J5ICovDQorICAgIFdvcmQxNiBtZW1fc3luX2hmW01dOyAgICAgICAgICAgICAgICAgIC8qIEhGIHN5bnRoZXNpcyBtZW1vcnkgKi8NCisgICAgV29yZDE2IG1lbV9oZlsyICogTF9GSUxUMTZrXTsgICAgICAgICAgLyogSEYgYmFuZC1wYXNzIGZpbHRlciBtZW1vcnkgKi8NCisgICAgV29yZDE2IG1lbV9oZjJbMiAqIExfRklMVDE2a107ICAgICAgICAgLyogSEYgYmFuZC1wYXNzIGZpbHRlciBtZW1vcnkgKi8NCisgICAgV29yZDE2IHNlZWQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmFuZG9tIG1lbW9yeSBmb3IgSEYgZ2VuZXJhdGlvbiAqLw0KKyAgICBXb3JkMTYgdmFkX2hpc3Q7DQorICAgIFdvcmQxNiBnYWluX2FscGhhOw0KKyAgICAvKiAgVFhfU3RhdGUgc3RydWN0dXJlICAqLw0KKwlXb3JkMTYgc2lkX3VwZGF0ZV9jb3VudGVyOw0KKyAgICBXb3JkMTYgc2lkX2hhbmRvdmVyX2RlYnQ7DQorICAgIFdvcmQxNiBwcmV2X2Z0Ow0KKwlXb3JkMTYgYWxsb3dfZHR4Ow0KKwkvKnNvbWUgaW5wdXQvb3V0cHV0IGJ1ZmZlciBwYXJhbWV0ZXJzICovDQorCXVuc2lnbmVkIGNoYXIgICAgICAgKmlucHV0U3RyZWFtOw0KKwlpbnQJCQkgICAgICAgIGlucHV0U2l6ZTsNCisJVk9BTVJXQk1PREUgIAkJbW9kZTsNCisJVk9BTVJXQkZSQU1FVFlQRQlmcmFtZVR5cGU7DQorCXVuc2lnbmVkIHNob3J0ICAgICAgKm91dHB1dFN0cmVhbTsNCisJaW50CQkJICAgICAgICBvdXRwdXRTaXplOw0KKwlGcmFtZVN0cmVhbSAgICAgICAgICpzdHJlYW07DQorCVZPX01FTV9PUEVSQVRPUiAgICAgKnB2b01lbW9wOw0KKwlWT19NRU1fT1BFUkFUT1IgICAgIHZvTWVtb3ByYXRvcjsNCisJVk9fUFRSICAgICAgICAgICAgICBoQ2hlY2s7DQorfSBDb2Rlcl9TdGF0ZTsNCisNCit0eXBlZGVmIHZvaWQqIEhBTVJFTkM7DQorDQorI2VuZGlmICAvL19fQ09EX01BSU5fSF9fDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9kdHguaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvZHR4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUyYzJkMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvZHR4LmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBEVFguSAkJCQkJICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgIFN0YXRpYyBtZW1vcnksIGNvbnN0YW50cyBhbmQgZnJhbWV0eXBlcyBmb3IgdGhlIERUWCAJCSAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmbmRlZiBfX0RUWF9IX18NCisjZGVmaW5lIF9fRFRYX0hfXw0KKw0KKyNkZWZpbmUgRFRYX01BWF9FTVBUWV9USFJFU0ggNTANCisjZGVmaW5lIERUWF9ISVNUX1NJWkUgOA0KKyNkZWZpbmUgRFRYX0hJU1RfU0laRV9NSU5fT05FIDcNCisjZGVmaW5lIERUWF9FTEFQU0VEX0ZSQU1FU19USFJFU0ggKDI0ICsgNyAtMSkNCisjZGVmaW5lIERUWF9IQU5HX0NPTlNUIDcgICAgICAgICAgICAgICAgICAgLyogeWllbGRzIGVpZ2h0IGZyYW1lcyBvZiBTUCBIQU5HT1ZFUiAgKi8NCisjZGVmaW5lIElOVl9NRURfVEhSRVNIIDE0NTY0DQorI2RlZmluZSBJU0ZfR0FQICAxMjggICAgICAgICAgICAgICAgICAgICAgIC8qIDUwICovDQorI2RlZmluZSBPTkVfTUlOVVNfSVNGX0dBUCAxNjM4NCAtIElTRl9HQVANCisjZGVmaW5lIElTRl9HQVAgICAxMjgNCisjZGVmaW5lIElTRl9ESVRIX0dBUCAgIDQ0OA0KKyNkZWZpbmUgSVNGX0ZBQ1RPUl9MT1cgMjU2DQorI2RlZmluZSBJU0ZfRkFDVE9SX1NURVAgMg0KKyNkZWZpbmUgR0FJTl9USFIgMTgwDQorI2RlZmluZSBHQUlOX0ZBQ1RPUiA3NQ0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgICBXb3JkMTYgaXNmX2hpc3RbTSAqIERUWF9ISVNUX1NJWkVdOw0KKyAgICBXb3JkMTYgbG9nX2VuX2hpc3RbRFRYX0hJU1RfU0laRV07DQorICAgIFdvcmQxNiBoaXN0X3B0cjsNCisgICAgV29yZDE2IGxvZ19lbl9pbmRleDsNCisgICAgV29yZDE2IGNuZ19zZWVkOw0KKyAgICAvKiBEVFggaGFuZGxlciBzdHVmZiAqLw0KKyAgICBXb3JkMTYgZHR4SGFuZ292ZXJDb3VudDsNCisgICAgV29yZDE2IGRlY0FuYUVsYXBzZWRDb3VudDsNCisgICAgV29yZDMyIERbMjhdOw0KKyAgICBXb3JkMzIgc3VtRFtEVFhfSElTVF9TSVpFXTsNCit9IGR0eF9lbmNTdGF0ZTsNCisNCisjZGVmaW5lIFNQRUVDSCAwDQorI2RlZmluZSBEVFggMQ0KKyNkZWZpbmUgRFRYX01VVEUgMg0KKw0KKyNkZWZpbmUgVFhfU1BFRUNIIDANCisjZGVmaW5lIFRYX1NJRF9GSVJTVCAxDQorI2RlZmluZSBUWF9TSURfVVBEQVRFIDINCisjZGVmaW5lIFRYX05PX0RBVEEgMw0KKw0KKyNkZWZpbmUgUlhfU1BFRUNIX0dPT0QgMA0KKyNkZWZpbmUgUlhfU1BFRUNIX1BST0JBQkxZX0RFR1JBREVEIDENCisjZGVmaW5lIFJYX1NQRUVDSF9MT1NUIDINCisjZGVmaW5lIFJYX1NQRUVDSF9CQUQgMw0KKyNkZWZpbmUgUlhfU0lEX0ZJUlNUIDQNCisjZGVmaW5lIFJYX1NJRF9VUERBVEUgNQ0KKyNkZWZpbmUgUlhfU0lEX0JBRCA2DQorI2RlZmluZSBSWF9OT19EQVRBIDcNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKg0KKyAqIERFRklOSVRJT04gT0YgREFUQSBUWVBFUw0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitXb3JkMTYgZHR4X2VuY19pbml0KGR0eF9lbmNTdGF0ZSAqKiBzdCwgV29yZDE2IGlzZl9pbml0W10sIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKTsNCitXb3JkMTYgZHR4X2VuY19yZXNldChkdHhfZW5jU3RhdGUgKiBzdCwgV29yZDE2IGlzZl9pbml0W10pOw0KK3ZvaWQgZHR4X2VuY19leGl0KGR0eF9lbmNTdGF0ZSAqKiBzdCwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOw0KKw0KK1dvcmQxNiBkdHhfZW5jKA0KKyAgICAgZHR4X2VuY1N0YXRlICogc3QsICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgaXNmW01dLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG8gICA6IENOIElTRiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiAqIGV4YzIsICAgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogQ04gZXhjaXRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2ICoqIHBybXMNCispOw0KKw0KK1dvcmQxNiBkdHhfYnVmZmVyKA0KKyAgICAgZHR4X2VuY1N0YXRlICogc3QsICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3QgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgaXNmX25ld1tdLCAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IGlzZiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQzMiBlbnIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogcmVzaWR1YWwgZW5lcmd5IChpbiBMX0ZSQU1FKSAgICAqLw0KKyAgICAgV29yZDE2IGNvZGVjX21vZGUNCispOw0KKw0KK3ZvaWQgdHhfZHR4X2hhbmRsZXIoZHR4X2VuY1N0YXRlICogc3QsICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3QgICAgICAgICAgICovDQorICAgICBXb3JkMTYgdmFkX2ZsYWcsICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHZhZCBkZWNpc2lvbiAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiAqIHVzZWRNb2RlICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogbW9kZSBjaGFuZ2VkIG9yIG5vdCAgICAqLw0KKyk7DQorDQordm9pZCBRaXNmX25zKA0KKyAgICAgV29yZDE2ICogaXNmMSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKyAgICAgV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXplZCBJU0YgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2ICogaW5kaWNlICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAqLw0KKyk7DQorDQorDQordm9pZCBEaXNmX25zKA0KKyAgICAgV29yZDE2ICogaW5kaWNlLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiAqIGlzZl9xICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBJU0YgaW4gdGhlIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgICovDQorKTsNCisNCisjZW5kaWYgIC8vX19EVFhfSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9ncmlkMTAwLnRhYiBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvZ3JpZDEwMC50YWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZlZTE4ZAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvZ3JpZDEwMC50YWIKQEAgLTAsMCArMSw1MyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogIFRhYmxlIGZvciBhel9pc3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiBWZWN0b3IgZ3JpZFtdIGlzIGluIFExNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIGdyaWRbMF0gPSAxLjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiBncmlkW2dyaWRfcG9pbnRzKzFdID0gLTEuMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogZm9yIChpID0gMTsgaSA8IGdyaWRfcG9pbnRzOyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgZ3JpZFtpXSA9IGNvcygoNi4yODMxODUzMDcqaSkvKDIuMCpncmlkX3BvaW50cykpOyAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBWZXJzaW9uIDEwMSBwb2ludHMgKi8NCisNCisjZGVmaW5lICAgR1JJRF9QT0lOVFMgICAgIDEwMA0KKw0KK2NvbnN0IFdvcmQxNiB2b2dyaWRbR1JJRF9QT0lOVFMrMV0gPXsNCisgICAgMzI3NjcsICAgICAzMjc1MSwgICAgIDMyNzAzLCAgICAgMzI2MjIsICAgICAzMjUwOSwgICAgIDMyMzY0LA0KKyAgICAzMjE4NywgICAgIDMxOTc4LCAgICAgMzE3MzgsICAgICAzMTQ2NiwgICAgIDMxMTY0LCAgICAgMzA4MzAsDQorICAgIDMwNDY2LCAgICAgMzAwNzIsICAgICAyOTY0OSwgICAgIDI5MTk2LCAgICAgMjg3MTQsICAgICAyODIwNCwNCisgICAgMjc2NjYsICAgICAyNzEwMSwgICAgIDI2NTA5LCAgICAgMjU4OTEsICAgICAyNTI0OCwgICAgIDI0NTc5LA0KKyAgICAyMzg4NiwgICAgIDIzMTcwLCAgICAgMjI0MzEsICAgICAyMTY2OSwgICAgIDIwODg3LCAgICAgMjAwODMsDQorICAgIDE5MjYwLCAgICAgMTg0MTgsICAgICAxNzU1NywgICAgIDE2NjgwLCAgICAgMTU3ODYsICAgICAxNDg3NiwNCisgICAgMTM5NTEsICAgICAxMzAxMywgICAgIDEyMDYyLCAgICAgMTEwOTksICAgICAxMDEyNSwgICAgICA5MTQxLA0KKyAgICAgODE0OSwgICAgICA3MTQ4LCAgICAgIDYxNDAsICAgICAgNTEyNiwgICAgICA0MTA2LCAgICAgIDMwODMsDQorICAgICAyMDU3LCAgICAgIDEwMjksICAgICAgICAgMCwgICAgIC0xMDI5LCAgICAgLTIwNTcsICAgICAtMzA4MywNCisgICAgLTQxMDYsICAgICAtNTEyNiwgICAgIC02MTQwLCAgICAgLTcxNDgsICAgICAtODE0OSwgICAgIC05MTQxLA0KKyAgIC0xMDEyNSwgICAgLTExMDk5LCAgICAtMTIwNjIsICAgIC0xMzAxMywgICAgLTEzOTUxLCAgICAtMTQ4NzYsDQorICAgLTE1Nzg2LCAgICAtMTY2ODAsICAgIC0xNzU1NywgICAgLTE4NDE4LCAgICAtMTkyNjAsICAgIC0yMDA4MywNCisgICAtMjA4ODcsICAgIC0yMTY2OSwgICAgLTIyNDMxLCAgICAtMjMxNzAsICAgIC0yMzg4NiwgICAgLTI0NTc5LA0KKyAgIC0yNTI0OCwgICAgLTI1ODkxLCAgICAtMjY1MDksICAgIC0yNzEwMSwgICAgLTI3NjY2LCAgICAtMjgyMDQsDQorICAgLTI4NzE0LCAgICAtMjkxOTYsICAgIC0yOTY0OSwgICAgLTMwMDcyLCAgICAtMzA0NjYsICAgIC0zMDgzMCwNCisgICAtMzExNjQsICAgIC0zMTQ2NiwgICAgLTMxNzM4LCAgICAtMzE5NzgsICAgIC0zMjE4NywgICAgLTMyMzY0LA0KKyAgIC0zMjUwOSwgICAgLTMyNjIyLCAgICAtMzI3MDMsICAgIC0zMjc1MSwgICAgLTMyNzYwfTsNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2hhbV93aW5kLnRhYiBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvaGFtX3dpbmQudGFiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZjg2OTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2hhbV93aW5kLnRhYgpAQCAtMCwwICsxLDczIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qIEhhbW1pbmdfY29zIHdpbmRvdyBmb3IgTFBDIGFuYWx5c2lzLiAgICAgICAgICAgICAgICAgKi8NCisvKiAgIENyZWF0ZSB3aXRoIGZ1bmN0aW9uIGhhbW1fY29zKHdpbmRvdywzODQtMTI4LDEyOCkgICovDQorDQorI2RlZmluZSBMX1dJTkRPVyAzODQNCisNCitjb25zdCBXb3JkMTYgdm9fd2luZG93W0xfV0lORE9XXSA9IHsNCisgICAgMjYyMSwgICAgMjYyMiwgICAgMjYyNiwgICAgMjYzMiwgICAgMjY0MCwgICAgMjY1MCwgICAgMjY2MiwgICAgMjY3NywNCisgICAgMjY5NCwgICAgMjcxNCwgICAgMjczNSwgICAgMjc1OSwgICAgMjc4NSwgICAgMjgxNCwgICAgMjg0NCwgICAgMjg3NywNCisgICAgMjkxMiwgICAgMjk0OSwgICAgMjk4OSwgICAgMzAzMSwgICAgMzA3NSwgICAgMzEyMSwgICAgMzE2OSwgICAgMzIyMCwNCisgICAgMzI3MywgICAgMzMyOCwgICAgMzM4NSwgICAgMzQ0NCwgICAgMzUwNiwgICAgMzU2OSwgICAgMzYzNSwgICAgMzcwMywNCisgICAgMzc3MywgICAgMzg0NSwgICAgMzkxOSwgICAgMzk5NiwgICAgNDA3NCwgICAgNDE1NSwgICAgNDIzNywgICAgNDMyMSwNCisgICAgNDQwOCwgICAgNDQ5NiwgICAgNDU4NywgICAgNDY4MCwgICAgNDc3NCwgICAgNDg3MCwgICAgNDk2OSwgICAgNTA2OSwNCisgICAgNTE3MSwgICAgNTI3NSwgICAgNTM4MSwgICAgNTQ4OSwgICAgNTU5OSwgICAgNTcxMCwgICAgNTgyNCwgICAgNTkzOSwNCisgICAgNjA1NiwgICAgNjE3NCwgICAgNjI5NSwgICAgNjQxNywgICAgNjU0MSwgICAgNjY2NiwgICAgNjc5MywgICAgNjkyMiwNCisgICAgNzA1MiwgICAgNzE4NSwgICAgNzMxOCwgICAgNzQ1MywgICAgNzU5MCwgICAgNzcyOCwgICAgNzg2OCwgICAgODAwOSwNCisgICAgODE1MiwgICAgODI5NiwgICAgODQ0MiwgICAgODU4OSwgICAgODczNywgICAgODg4NywgICAgOTAzOCwgICAgOTE5MSwNCisgICAgOTM0NCwgICAgOTQ5OSwgICAgOTY1NSwgICAgOTgxMywgICAgOTk3MSwgICAxMDEzMSwgICAxMDI5MiwgICAxMDQ1NCwNCisgICAxMDYxNywgICAxMDc4MSwgICAxMDk0NiwgICAxMTExMywgICAxMTI4MCwgICAxMTQ0OCwgICAxMTYxNywgICAxMTc4NywNCisgICAxMTk1OCwgICAxMjEzMCwgICAxMjMwMywgICAxMjQ3NiwgICAxMjY1MCwgICAxMjgyNSwgICAxMzAwMSwgICAxMzE3OCwNCisgICAxMzM1NSwgICAxMzUzMywgICAxMzcxMSwgICAxMzg5MCwgICAxNDA3MCwgICAxNDI1MCwgICAxNDQzMSwgICAxNDYxMiwNCisgICAxNDc5MywgICAxNDk3NSwgICAxNTE1OCwgICAxNTM0MSwgICAxNTUyNCwgICAxNTcwOCwgICAxNTg5MSwgICAxNjA3NiwNCisgICAxNjI2MCwgICAxNjQ0NSwgICAxNjYyOSwgICAxNjgxNCwgICAxNjk5OSwgICAxNzE4NSwgICAxNzM3MCwgICAxNzU1NSwNCisgICAxNzc0MCwgICAxNzkyNiwgICAxODExMSwgICAxODI5NiwgICAxODQ4MSwgICAxODY2NiwgICAxODg1MSwgICAxOTAzNiwNCisgICAxOTIyMSwgICAxOTQwNSwgICAxOTU4OSwgICAxOTc3MywgICAxOTk1NiwgICAyMDEzOSwgICAyMDMyMiwgICAyMDUwNCwNCisgICAyMDY4NiwgICAyMDg2NywgICAyMTA0OCwgICAyMTIyOSwgICAyMTQwOCwgICAyMTU4OCwgICAyMTc2NywgICAyMTk0NSwNCisgICAyMjEyMiwgICAyMjI5OSwgICAyMjQ3NSwgICAyMjY1MSwgICAyMjgyNSwgICAyMjk5OSwgICAyMzE3MiwgICAyMzM0NCwNCisgICAyMzUxNiwgICAyMzY4NiwgICAyMzg1NiwgICAyNDAyNSwgICAyNDE5MiwgICAyNDM1OSwgICAyNDUyNSwgICAyNDY4OSwNCisgICAyNDg1MywgICAyNTAxNiwgICAyNTE3NywgICAyNTMzNywgICAyNTQ5NiwgICAyNTY1NCwgICAyNTgxMSwgICAyNTk2NywNCisgICAyNjEyMSwgICAyNjI3NCwgICAyNjQyNiwgICAyNjU3NiwgICAyNjcyNSwgICAyNjg3MywgICAyNzAxOSwgICAyNzE2NCwNCisgICAyNzMwOCwgICAyNzQ1MCwgICAyNzU5MCwgICAyNzcyOSwgICAyNzg2NywgICAyODAwMywgICAyODEzNywgICAyODI3MCwNCisgICAyODQwMSwgICAyODUzMSwgICAyODY1OSwgICAyODc4NSwgICAyODkxMCwgICAyOTAzMywgICAyOTE1NCwgICAyOTI3NCwNCisgICAyOTM5MSwgICAyOTUwNywgICAyOTYyMiwgICAyOTczNCwgICAyOTg0NSwgICAyOTk1MywgICAzMDA2MCwgICAzMDE2NSwNCisgICAzMDI2OCwgICAzMDM3MCwgICAzMDQ2OSwgICAzMDU2NiwgICAzMDY2MiwgICAzMDc1NSwgICAzMDg0NywgICAzMDkzNiwNCisgICAzMTAyNCwgICAzMTEwOSwgICAzMTE5MywgICAzMTI3NCwgICAzMTM1NCwgICAzMTQzMSwgICAzMTUwNiwgICAzMTU3OSwNCisgICAzMTY1MSwgICAzMTcxOSwgICAzMTc4NiwgICAzMTg1MSwgICAzMTkxNCwgICAzMTk3NCwgICAzMjAzMiwgICAzMjA4OCwNCisgICAzMjE0MiwgICAzMjE5NCwgICAzMjI0MywgICAzMjI5MSwgICAzMjMzNiwgICAzMjM3OSwgICAzMjQxOSwgICAzMjQ1OCwNCisgICAzMjQ5NCwgICAzMjUyOCwgICAzMjU2MCwgICAzMjU4OSwgICAzMjYxNywgICAzMjY0MiwgICAzMjY2NCwgICAzMjY4NSwNCisgICAzMjcwMywgICAzMjcxOSwgICAzMjczMywgICAzMjc0NCwgICAzMjc1MywgICAzMjc2MCwgICAzMjc2NCwgICAzMjc2NywNCisgICAzMjc2NywgICAzMjc2NSwgICAzMjc1NywgICAzMjc0NSwgICAzMjcyNywgICAzMjcwNSwgICAzMjY3OCwgICAzMjY0NiwNCisgICAzMjYwOSwgICAzMjU2NywgICAzMjUyMCwgICAzMjQ2OCwgICAzMjQxMSwgICAzMjM0OSwgICAzMjI4MywgICAzMjIxMSwNCisgICAzMjEzNSwgICAzMjA1NCwgICAzMTk2OCwgICAzMTg3NywgICAzMTc4MSwgICAzMTY4MSwgICAzMTU3NSwgICAzMTQ2NSwNCisgICAzMTM1MSwgICAzMTIzMSwgICAzMTEwNywgICAzMDk3OCwgICAzMDg0NCwgICAzMDcwNiwgICAzMDU2MywgICAzMDQxNSwNCisgICAzMDI2MywgICAzMDEwNiwgICAyOTk0NSwgICAyOTc3OSwgICAyOTYwOSwgICAyOTQzNCwgICAyOTI1NSwgICAyOTA3MSwNCisgICAyODg4MywgICAyODY5MSwgICAyODQ5NCwgICAyODI5MywgICAyODA4NywgICAyNzg3OCwgICAyNzY2NCwgICAyNzQ0NiwNCisgICAyNzIyNCwgICAyNjk5NywgICAyNjc2NywgICAyNjUzMywgICAyNjI5NCwgICAyNjA1MiwgICAyNTgwNiwgICAyNTU1NSwNCisgICAyNTMwMSwgICAyNTA0MywgICAyNDc4MiwgICAyNDUxNiwgICAyNDI0NywgICAyMzk3NCwgICAyMzY5OCwgICAyMzQxOCwNCisgICAyMzEzNCwgICAyMjg0NywgICAyMjU1NywgICAyMjI2MywgICAyMTk2NSwgICAyMTY2NSwgICAyMTM2MSwgICAyMTA1NCwNCisgICAyMDc0MywgICAyMDQzMCwgICAyMDExMywgICAxOTc5NCwgICAxOTQ3MSwgICAxOTE0NiwgICAxODgxNywgICAxODQ4NiwNCisgICAxODE1MiwgICAxNzgxNSwgICAxNzQ3NiwgICAxNzEzNCwgICAxNjc4OSwgICAxNjQ0MiwgICAxNjA5MiwgICAxNTc0MCwNCisgICAxNTM4NSwgICAxNTAyOCwgICAxNDY2OSwgICAxNDMwOCwgICAxMzk0NCwgICAxMzU3OSwgICAxMzIxMSwgICAxMjg0MSwNCisgICAxMjQ3MCwgICAxMjA5NiwgICAxMTcyMSwgICAxMTM0NCwgICAxMDk2NSwgICAxMDU4NCwgICAxMDIwMiwgICAgOTgxOSwNCisgICAgOTQzMywgICAgOTA0NywgICAgODY1OSwgICAgODI3MCwgICAgNzg3OSwgICAgNzQ4OCwgICAgNzA5NSwgICAgNjcwMSwNCisgICAgNjMwNiwgICAgNTkxMCwgICAgNTUxNCwgICAgNTExNiwgICAgNDcxOCwgICAgNDMxOSwgICAgMzkxOSwgICAgMzUxOSwNCisgICAgMzExOCwgICAgMjcxNiwgICAgMjMxNSwgICAgMTkxMywgICAgMTUxMCwgICAgMTEwOCwgICAgIDcwNSwgICAgIDMwMn07DQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9ob21pbmcudGFiIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9ob21pbmcudGFiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NjNkYTdhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9ob21pbmcudGFiCkBAIC0wLDAgKzEsMTIzIEBACisNCisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKw0KKyNkZWZpbmUgREhGX1BBUk1TX01BWCAzMiAgICAgICAgICAgICAgIC8qIGhvbWluZyBmcmFtZSBwYXR0ZXJuICAqLw0KKyNkZWZpbmUgTlVNX09GX1NQTU9ERVMgOQ0KKw0KKyNkZWZpbmUgUFJNTCAxNQ0KKyNkZWZpbmUgUFJNTl83ayBOQkJJVFNfN2svUFJNTCArIDENCisjZGVmaW5lIFBSTU5fOWsgTkJCSVRTXzlrL1BSTUwgKyAxDQorI2RlZmluZSBQUk1OXzEyayBOQkJJVFNfMTJrL1BSTUwgKyAxDQorI2RlZmluZSBQUk1OXzE0ayBOQkJJVFNfMTRrL1BSTUwgKyAxDQorI2RlZmluZSBQUk1OXzE2ayBOQkJJVFNfMTZrL1BSTUwgKyAxDQorI2RlZmluZSBQUk1OXzE4ayBOQkJJVFNfMThrL1BSTUwgKyAxDQorI2RlZmluZSBQUk1OXzIwayBOQkJJVFNfMjBrL1BSTUwgKyAxDQorI2RlZmluZSBQUk1OXzIzayBOQkJJVFNfMjNrL1BSTUwgKyAxDQorI2RlZmluZSBQUk1OXzI0ayBOQkJJVFNfMjRrL1BSTUwgKyAxDQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBkZmhfTTdrW1BSTU5fN2tdID0NCit7DQorICAzMTY4LCAyOTk1NCwgMjkyMTMsIDE2MTIxLCANCisJNjQsIDEzNDQwLCAzMDYyNCwgMTY0MzAsIA0KKyAxOTAwOA0KK307DQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBkZmhfTTlrW1BSTU5fOWtdID0NCit7DQorICAgMzE2OCwgMzE2NjUsICA5OTQzLCA5MTIzLCANCisgIDE1NTk5LCAgNDM1OCwgMjAyNDgsIDIwNDgsIA0KKyAgMTcwNDAsIDI3Nzg3LCAxNjgxNiwgMTM4ODgNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBXb3JkMTYgZGZoX00xMmtbUFJNTl8xMmtdID0NCit7DQorICAzMTY4LCAzMTY2NSwgIDk5NDMsICA5MTI4LCANCisgIDM2NDcsICA4MTI5LCAzMDkzMCwgMjc5MjYsIA0KKyAxODg4MCwgMTIzMTksICAgNDk2LCAgMTA0MiwgDQorICA0MDYxLCAyMDQ0NiwgMjU2MjksIDI4MDY5LCANCisgMTM5NDgNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBXb3JkMTYgZGZoX00xNGtbUFJNTl8xNGtdID0NCit7DQorICAgIDMxNjgsIDMxNjY1LCAgOTk0MywgIDkxMzEsIA0KKyAgIDI0ODE1LCAgIDY1NSwgMjY2MTYsIDI2NzY0LCANCisgICAgNzIzOCwgMTkxMzYsICA2MTQ0LCAgICA4OCwgDQorCTQxNTgsIDI1NzMzLCAzMDU2NywgMzA0OTQsIA0KKwkyMjEsIDIwMzIxLCAxNzgyMw0KK307DQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBkZmhfTTE2a1tQUk1OXzE2a10gPQ0KK3sNCisgICAgMzE2OCwgMzE2NjUsICA5OTQzLCAgOTEzMSwgDQorICAgMjQ4MTUsICAgNzAwLCAgMzgyNCwgIDcyNzEsIA0KKyAgIDI2NDAwLCAgOTUyOCwgIDY1OTQsIDI2MTEyLCANCisgICAgIDEwOCwgIDIwNjgsIDEyODY3LCAxNjMxNywgDQorICAgMjMwMzUsIDI0NjMyLCAgNzUyOCwgIDE3NTIsIA0KKyAgICA2NzU5LCAyNDU3Ng0KK307DQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBkZmhfTTE4a1tQUk1OXzE4a10gPQ0KK3sNCisgICAgIDMxNjgsIDMxNjY1LCAgOTk0MywgIDkxMzUsIA0KKwkxNDc4NywgMTQ0MjMsIDMwNDc3LCAyNDkyNywgDQorCTI1MzQ1LCAzMDE1NCwgICA5MTYsICA1NzI4LCANCisJMTg5NzgsICAyMDQ4LCAgIDUyOCwgMTY0NDksIA0KKwkgMjQzNiwgIDM1ODEsIDIzNTI3LCAyOTQ3OSwgDQorCSA4MjM3LCAxNjgxMCwgMjcwOTEsIDE5MDUyLCANCisJICAgIDANCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBXb3JkMTYgZGZoX00yMGtbUFJNTl8yMGtdID0NCit7DQorICAgICAzMTY4LCAzMTY2NSwgIDk5NDMsICA5MTI5LCANCisJIDg2MzcsIDMxODA3LCAyNDY0NiwgICA3MzYsIA0KKwkyODY0MywgIDI5NzcsICAyNTY2LCAyNTU2NCwgDQorCTEyOTMwLCAxMzk2MCwgIDIwNDgsICAgODM0LCANCisJIDMyNzAsICA0MTAwLCAyNjkyMCwgMTYyMzcsIA0KKwkzMTIyNywgMTc2NjcsIDE1MDU5LCAyMDU4OSwgDQorCTMwMjQ5LCAyOTEyMywgMA0KK307DQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBkZmhfTTIza1tQUk1OXzIza10gPQ0KK3sNCisJIDMxNjgsIDMxNjY1LCAgOTk0MywgIDkxMzIsIA0KKwkxNjc0OCwgIDMyMDIsIDI4MTc5LCAxNjMxNywgDQorCTMwNTkwLCAxNTg1NywgMTk5NjAsICA4ODE4LCANCisJMjE3MTEsIDIxNTM4LCAgNDI2MCwgMTY2OTAsIA0KKwkyMDIyNCwgIDM2NjYsICA0MTk0LCAgOTQ5NywgDQorCTE2MzIwLCAxNTM4OCwgIDU3NTUsIDMxNTUxLCANCisJMTQwODAsICAzNTc0LCAxNTkzMiwgICAgNTAsIA0KKwkyMzM5MiwgMjYwNTMsIDMxMjE2DQorfTsNCisNCitzdGF0aWMgY29uc3QgV29yZDE2IGRmaF9NMjRrW1BSTU5fMjRrXSA9DQorew0KKwkgMzE2OCwgMzE2NjUsICA5OTQzLCAgOTEzNCwgDQorCTI0Nzc2LCAgNTg1NywgMTg0NzUsIDI4NTM1LCANCisJMjk2NjIsIDE0MzIxLCAxNjcyNSwgIDQzOTYsIA0KKwkyOTM1MywgMTAwMDMsIDE3MDY4LCAyMDUwNCwgDQorCSAgNzIwLCAgICAgMCwgIDg0NjUsIDEyNTgxLCANCisJMjg4NjMsIDI0Nzc0LCAgOTcwOSwgMjYwNDMsIA0KKwkgNzk0MSwgMjc2NDksIDEzOTY1LCAxNTIzNiwgDQorCTE4MDI2LCAyMjA0NywgMTY2ODEsICAzOTY4DQorfTsNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2lzcF9pc2YudGFiIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9pc3BfaXNmLnRhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjIwZTM4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9pc3BfaXNmLnRhYgpAQCAtMCwwICsxLDYyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorIHwgVGFibGVzIGZvciBmdW5jdGlvbiBJc2ZfaXNwKCkgYW5kIElzcF9pc2YoKSAgICAgICAgIHwNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiB0YWJsZSBvZiBjb3MoeCkgaW4gUTE1ICovDQorDQorY29uc3Qgc3RhdGljIFdvcmQxNiB0YWJsZVsxMjldID0gew0KKyAgMzI3NjcsDQorICAzMjc1OCwgIDMyNzI5LCAgMzI2NzksICAzMjYxMCwgIDMyNTIyLCAgMzI0MTMsICAzMjI4NiwgIDMyMTM4LA0KKyAgMzE5NzIsICAzMTc4NiwgIDMxNTgxLCAgMzEzNTcsICAzMTExNCwgIDMwODUzLCAgMzA1NzIsICAzMDI3NCwNCisgIDI5OTU3LCAgMjk2MjIsICAyOTI2OSwgIDI4ODk5LCAgMjg1MTEsICAyODEwNiwgIDI3Njg0LCAgMjcyNDYsDQorICAyNjc5MSwgIDI2MzIwLCAgMjU4MzMsICAyNTMzMCwgIDI0ODEyLCAgMjQyNzksICAyMzczMiwgIDIzMTcwLA0KKyAgMjI1OTUsICAyMjAwNiwgIDIxNDAzLCAgMjA3ODgsICAyMDE2MCwgIDE5NTIwLCAgMTg4NjgsICAxODIwNSwNCisgIDE3NTMxLCAgMTY4NDYsICAxNjE1MSwgIDE1NDQ3LCAgMTQ3MzMsICAxNDAxMCwgIDEzMjc5LCAgMTI1NDAsDQorICAxMTc5MywgIDExMDM5LCAgMTAyNzksICAgOTUxMiwgICA4NzQwLCAgIDc5NjIsICAgNzE4MCwgICA2MzkzLA0KKyAgIDU2MDIsICAgNDgwOCwgICA0MDExLCAgIDMyMTIsICAgMjQxMSwgICAxNjA4LCAgICA4MDQsICAgICAgMCwNCisgICAtODA0LCAgLTE2MDgsICAtMjQxMSwgIC0zMjEyLCAgLTQwMTEsICAtNDgwOCwgIC01NjAyLCAgLTYzOTMsDQorICAtNzE4MCwgIC03OTYyLCAgLTg3NDAsICAtOTUxMiwgLTEwMjc5LCAtMTEwMzksIC0xMTc5MywgLTEyNTQwLA0KKyAtMTMyNzksIC0xNDAxMCwgLTE0NzMzLCAtMTU0NDcsIC0xNjE1MSwgLTE2ODQ2LCAtMTc1MzEsIC0xODIwNSwNCisgLTE4ODY4LCAtMTk1MjAsIC0yMDE2MCwgLTIwNzg4LCAtMjE0MDMsIC0yMjAwNiwgLTIyNTk1LCAtMjMxNzAsDQorIC0yMzczMiwgLTI0Mjc5LCAtMjQ4MTIsIC0yNTMzMCwgLTI1ODMzLCAtMjYzMjAsIC0yNjc5MSwgLTI3MjQ2LA0KKyAtMjc2ODQsIC0yODEwNiwgLTI4NTExLCAtMjg4OTksIC0yOTI2OSwgLTI5NjIyLCAtMjk5NTcsIC0zMDI3NCwNCisgLTMwNTcyLCAtMzA4NTMsIC0zMTExNCwgLTMxMzU3LCAtMzE1ODEsIC0zMTc4NiwgLTMxOTcyLCAtMzIxMzgsDQorIC0zMjI4NiwgLTMyNDEzLCAtMzI1MjIsIC0zMjYxMCwgLTMyNjc5LCAtMzI3MjksIC0zMjc1OCwgLTMyNzY4fTsNCisNCisvKiBzbG9wZSBpbiBRMTEgdXNlZCB0byBjb21wdXRlIHkgPSBhY29zKHgpICovDQorDQorY29uc3Qgc3RhdGljIFdvcmQxNiBzbG9wZVsxMjhdID0geyANCisgLTI2MjE0LCAtOTAzOSwgLTUyNDMsIC0zNzk5LCAtMjk3OSwgLTI0MDUsIC0yMDY0LCAtMTc3MSwNCisgLTE1NzksIC0xNDA5LCAtMTI3OSwgLTExNzAsIC0xMDc5LCAtMTAwNCwgLTkzMywgLTg4MCwNCisgLTgyNywgLTc4MywgLTc0MywgLTcwOCwgLTY3NiwgLTY0NywgLTYyMSwgLTU5OSwNCisgLTU3NiwgLTU1NywgLTUzOCwgLTUyMSwgLTUwNiwgLTQ5MiwgLTQ3OSwgLTQ2NiwNCisgLTQ1NiwgLTQ0NSwgLTQzNSwgLTQyNiwgLTQxNywgLTQxMCwgLTQwMiwgLTM5NSwNCisgLTM4OSwgLTM4MywgLTM3NywgLTM3MiwgLTM2NywgLTM2MywgLTM1OSwgLTM1NSwNCisgLTM1MSwgLTM0OCwgLTM0NSwgLTM0MiwgLTM0MCwgLTMzNywgLTMzNSwgLTMzMywNCisgLTMzMSwgLTMzMCwgLTMyOSwgLTMyOCwgLTMyNywgLTMyNiwgLTMyNiwgLTMyNiwNCisgLTMyNiwgLTMyNiwgLTMyNiwgLTMyNywgLTMyOCwgLTMyOSwgLTMzMCwgLTMzMSwNCisgLTMzMywgLTMzNSwgLTMzNywgLTM0MCwgLTM0MiwgLTM0NSwgLTM0OCwgLTM1MSwNCisgLTM1NSwgLTM1OSwgLTM2MywgLTM2NywgLTM3MiwgLTM3NywgLTM4MywgLTM4OSwNCisgLTM5NSwgLTQwMiwgLTQxMCwgLTQxNywgLTQyNiwgLTQzNSwgLTQ0NSwgLTQ1NiwNCisgLTQ2NiwgLTQ3OSwgLTQ5MiwgLTUwNiwgLTUyMSwgLTUzOCwgLTU1NywgLTU3NiwNCisgLTU5OSwgLTYyMSwgLTY0NywgLTY3NiwgLTcwOCwgLTc0MywgLTc4MywgLTgyNywNCisgLTg4MCwgLTkzMywgLTEwMDQsIC0xMDc5LCAtMTE3MCwgLTEyNzksIC0xNDA5LCAtMTU3OSwNCisgLTE3NzEsIC0yMDY0LCAtMjQwNSwgLTI5NzksIC0zNzk5LCAtNTI0MywgLTkwMzksIC0yNjIxNH07DQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9sYWdfd2luZC50YWIgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2xhZ193aW5kLnRhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTc1ZDY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9sYWdfd2luZC50YWIKQEAgLTAsMCArMSw4MSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyB8IFRhYmxlIG9mIGxhZ193aW5kb3cgZm9yIGF1dG9jb3JyZWxhdGlvbi4gICAgICAgICAgICB8DQorIHwgbm9pc2UgZmxvb3IgPSAxLjAwMDEgICA9ICgwLjk5OTkgIG9uIHJbMV0gLi5yWzE2XSkgIHwNCisgfCBCYW5kd2lkdGggZXhwYW5zaW9uID0gNjAgSHogICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IFNhbXBsaW5nIGZyZXF1ZW5jeSAgPSAxMjgwMCBIeiAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBTcGVjaWFsIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0LiBTZWUgIm1hdGhfb3AuYyIgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbMF0gPSAgMS4wMDAwMDAwMCAgICAobm90IHN0b3JlZCkgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFsxXSA9ICAwLjk5OTQ2NjQyICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzJdID0gIDAuOTk4MTY2ODAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbM10gPSAgMC45OTYwMDQ1MiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFs0XSA9ICAwLjk5Mjk4NTEzICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzVdID0gIDAuOTg5MTE2NTUgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbNl0gPSAgMC45ODQ0MDg4MCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFs3XSA9ICAwLjk3ODg3Mzk3ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzhdID0gIDAuOTcyNTI2MTkgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbOV0gPSAgMC45NjUzODE4NiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFsxMF09ICAwLjk1NzQ1OTAzICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzExXT0gIDAuOTQ4Nzc3OTcgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbMTJdPSAgMC45MzkzNjAzOCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFsxM109ICAwLjkyOTIyOTg2ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzE0XT0gIDAuOTE4NDExNTUgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbMTVdPSAgMC45MDY5MzIxMiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFsxNl09ICAwLjg5NDgxOTY4ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNkZWZpbmUgTSAxNg0KKw0KK3N0YXRpYyBXb3JkMTYgdm9sYWdfaFtNXSA9IHsNCisgICAgICAzMjc1MCwNCisgICAgICAzMjcwNywNCisgICAgICAzMjYzNywNCisgICAgICAzMjUzOCwNCisgICAgICAzMjQxMSwNCisgICAgICAzMjI1NywNCisgICAgICAzMjA3NSwNCisgICAgICAzMTg2NywNCisgICAgICAzMTYzMywNCisgICAgICAzMTM3NCwNCisgICAgICAzMTA4OSwNCisgICAgICAzMDc4MCwNCisgICAgICAzMDQ0OSwNCisgICAgICAzMDA5NCwNCisgICAgICAyOTcxOCwNCisgICAgICAyOTMyMX07DQorDQorc3RhdGljIFdvcmQxNiB2b2xhZ19sW01dID0gew0KKyAgICAgIDE2ODk2LA0KKyAgICAgIDMwNDY0LA0KKyAgICAgICAyNDk2LA0KKyAgICAgICA0NDgwLA0KKyAgICAgIDEyMTYwLA0KKyAgICAgICAzNTIwLA0KKyAgICAgIDI0MzIwLA0KKyAgICAgIDI0MTkyLA0KKyAgICAgIDIwNzM2LA0KKyAgICAgICAgNTc2LA0KKyAgICAgIDE4MjQwLA0KKyAgICAgIDMxNDg4LA0KKyAgICAgICAgMTI4LA0KKyAgICAgIDE2NzA0LA0KKyAgICAgIDExNTIwLA0KKyAgICAgIDE0Nzg0fTsNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2xvZzIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbG9nMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYmRiZWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2xvZzIuaApAQCAtMCwwICsxLDYyIEBACisNCisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgICAgRmlsZSAgICAgICAgICAgICA6IGxvZzIuaA0KKyogICAgICBQdXJwb3NlICAgICAgICAgIDogQ29tcHV0ZXMgbG9nMihMX3gpDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisjaWZuZGVmIF9fTE9HMl9IX18NCisjZGVmaW5lIF9fTE9HMl9IX18NCisgDQorLyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgSU5DTFVERSBGSUxFUw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyANCisvKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICBERUZJTklUSU9OIE9GIERBVEEgVFlQRVMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyovDQorIA0KKy8qDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgIERFQ0xBUkFUSU9OIE9GIFBST1RPVFlQRVMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyovDQordm9pZCBMb2cyICgNCisJCVdvcmQzMiBMX3gsICAgICAgICAvKiAoaSkgOiBpbnB1dCB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKmV4cG9uZW50LCAgLyogKG8pIDogSW50ZWdlciBwYXJ0IG9mIExvZzIuICAgKHJhbmdlOiAwPD12YWw8PTMwKSAqLw0KKwkJV29yZDE2ICpmcmFjdGlvbiAgIC8qIChvKSA6IEZyYWN0aW9uYWwgcGFydCBvZiBMb2cyLiAocmFuZ2U6IDA8PXZhbDwxKSovDQorCSAgKTsNCisNCit2b2lkIExvZzJfbm9ybSAoDQorCQlXb3JkMzIgTF94LCAgICAgICAgIC8qIChpKSA6IGlucHV0IHZhbHVlIChub3JtYWxpemVkKSAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBleHAsICAgICAgICAgLyogKGkpIDogbm9ybV9sIChMX3gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICpleHBvbmVudCwgICAvKiAobykgOiBJbnRlZ2VyIHBhcnQgb2YgTG9nMi4gICAocmFuZ2U6IDA8PXZhbDw9MzApICovDQorCQlXb3JkMTYgKmZyYWN0aW9uICAgIC8qIChvKSA6IEZyYWN0aW9uYWwgcGFydCBvZiBMb2cyLiAocmFuZ2U6IDA8PXZhbDwxKSAgKi8NCisJICAgICAgICk7DQorDQorI2VuZGlmICAvL19fTE9HMl9IX18NCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2xvZzJfdGFiLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2xvZzJfdGFiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2MWFlNgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbG9nMl90YWIuaApAQCAtMCwwICsxLDM1IEBACisNCisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgICBGaWxlICAgICAgICAgICAgIDogbG9nMi50YWINCisqICAgICAgUHVycG9zZSAgICAgICAgICA6IFRhYmxlIGZvciByb3V0aW5lIExvZzIoKS4NCisqICAgICAgJElkICQNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KK3N0YXRpYyBjb25zdCBXb3JkMTYgdGFibGVbMzNdID0NCit7DQorICAgIDAsIDE0NTUsIDI4NjYsIDQyMzYsIDU1NjgsIDY4NjMsIDgxMjQsIDkzNTIsIDEwNTQ5LCAxMTcxNiwNCisgICAgMTI4NTUsIDEzOTY3LCAxNTA1NCwgMTYxMTcsIDE3MTU2LCAxODE3MiwgMTkxNjcsIDIwMTQyLCAyMTA5NywgMjIwMzMsDQorICAgIDIyOTUxLCAyMzg1MiwgMjQ3MzUsIDI1NjAzLCAyNjQ1NSwgMjcyOTEsIDI4MTEzLCAyODkyMiwgMjk3MTYsIDMwNDk3LA0KKyAgICAzMTI2NiwgMzIwMjMsIDMyNzY3DQorfTsNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL21haW4uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZTdjNjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL21haW4uaApAQCAtMCwwICsxLDQ1IEBACisNCisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgTUFJTi5ICSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgIE1haW4gZnVuY3Rpb25zCQkJCQkJCSAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmbmRlZiBfX01BSU5fSF9fDQorI2RlZmluZSBfX01BSU5fSF9fDQorDQordm9pZCBjb2RlcigNCisgICAgIFdvcmQxNiAqIG1vZGUsICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiAgdXNlZCBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHNwZWVjaDE2a1tdLCAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6ICAzMjAgbmV3IHNwZWVjaCBzYW1wbGVzIChhdCAxNiBrSHopICAgICovDQorICAgICBXb3JkMTYgcHJtc1tdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogIG91dHB1dCBwYXJhbWV0ZXJzICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2ICogc2VyX3NpemUsICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6ICBiaXQgcmF0ZSBvZiB0aGUgdXNlZCBtb2RlICAgKi8NCisgICAgIHZvaWQgKnNwZV9zdGF0ZSwgICAgICAgICAgICAgICAgICAgICAgLyogaS9vICAgOiAgU3RhdGUgc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGFsbG93X2R0eCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6ICBEVFggT04vT0ZGICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorKTsNCisNCisNCisNCit2b2lkIFJlc2V0X2VuY29kZXIodm9pZCAqc3QsIFdvcmQxNiByZXNldF9hbGwpOw0KKw0KKw0KK1dvcmQxNiBlbmNvZGVyX2hvbWluZ19mcmFtZV90ZXN0KFdvcmQxNiBpbnB1dF9mcmFtZVtdKTsNCisNCisjZW5kaWYgLy9fX01BSU5fSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9tYXRoX29wLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL21hdGhfb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWUyOWY3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9tYXRoX29wLmgKQEAgLTAsMCArMSw1NSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIE1BVEhfT1AuSAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICBNYXRoZW1hdGljYWwgb3BlcmF0aW9ucwkJCQkJICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWZuZGVmIF9fTUFUSF9PUF9IX18NCisjZGVmaW5lIF9fTUFUSF9PUF9IX18NCisNCitXb3JkMzIgSXNxcnQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFEzMSA6IG91dHB1dCB2YWx1ZSAocmFuZ2U6IDA8PXZhbDwxKSAgICAgICAgICovDQorCQlXb3JkMzIgTF94ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgOiBpbnB1dCB2YWx1ZSAgKHJhbmdlOiAwPD12YWw8PTdmZmZmZmZmKSAqLw0KKwkgICAgKTsNCisNCit2b2lkIElzcXJ0X24oDQorCQlXb3JkMzIgKiBmcmFjLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIFEzMTogbm9ybWFsaXplZCB2YWx1ZSAoMS4wIDwgZnJhYyA8PSAwLjUpICovDQorCQlXb3JkMTYgKiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgIDogZXhwb25lbnQgKHZhbHVlID0gZnJhYyB4IDJeZXhwb25lbnQpICovDQorCSAgICApOw0KKw0KK1dvcmQzMiBQb3cyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTAgIDogcmVzdWx0ICAgICAgIChyYW5nZTogMDw9dmFsPD0weDdmZmZmZmZmKSAqLw0KKwkJV29yZDE2IGV4cG9uYW50LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogSW50ZWdlciBwYXJ0LiAgICAgIChyYW5nZTogMDw9dmFsPD0zMCkgICAqLw0KKwkJV29yZDE2IGZyYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogRnJhY3Rpb25uYWwgcGFydC4gIChyYW5nZTogMC4wPD12YWw8MS4wKSAqLw0KKwkgICApOw0KKw0KK1dvcmQzMiBEb3RfcHJvZHVjdDEyKCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTMxOiBub3JtYWxpemVkIHJlc3VsdCAoMSA8IHZhbCA8PSAtMSkgKi8NCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDEyYml0czogeCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAxMmJpdHM6IHkgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgOiB2ZWN0b3IgbGVuZ3RoICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGV4cCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgIDogZXhwb25lbnQgb2YgcmVzdWx0ICgwLi4rMzApICAgICAgICovDQorCQkpOw0KKw0KK1dvcmQzMiBEb3RfcHJvZHVjdDEyX2FzbSggICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFEzMTogbm9ybWFsaXplZCByZXN1bHQgKDEgPCB2YWwgPD0gLTEpICovDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAxMmJpdHM6IHggdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgMTJiaXRzOiB5IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgIDogdmVjdG9yIGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICA6IGV4cG9uZW50IG9mIHJlc3VsdCAoMC4uKzMwKSAgICAgICAqLw0KKwkJKTsNCisjZW5kaWYgLy9fX01BVEhfT1BfSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9tZW1fYWxpZ24uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbWVtX2FsaWduLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZkZGVjMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbWVtX2FsaWduLmgKQEAgLTAsMCArMSwzNSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJbWVtX2FsaWduLmgNCisNCisJQ29udGVudDoJTWVtb3J5IGFsbG9jIGFsaWdubWVudHMgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9fVk9fTUVNX0FMSUdOX0hfXw0KKyNkZWZpbmUgX19WT19NRU1fQUxJR05fSF9fDQorDQorI2luY2x1ZGUgInZvTWVtLmgiDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisNCitleHRlcm4gdm9pZCAqbWVtX21hbGxvYyhWT19NRU1fT1BFUkFUT1IgKnBNZW1vcCwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGNoYXIgYWxpZ25tZW50LCB1bnNpZ25lZCBpbnQgQ29kZWNJRCk7DQorZXh0ZXJuIHZvaWQgbWVtX2ZyZWUoVk9fTUVNX09QRVJBVE9SICpwTWVtb3AsIHZvaWQgKm1lbV9wdHIsIHVuc2lnbmVkIGludCBDb2RlY0lEKTsNCisNCisjZW5kaWYJLyogX19WT19NRU1fQUxJR05fSF9fICovDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9taW1lX2lvLnRhYiBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbWltZV9pby50YWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZjODZhMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbWltZV9pby50YWIKQEAgLTAsMCArMSwzNjggQEAKKw0KKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisNCitzdGF0aWMgVVdvcmQ4IHRvY19ieXRlWzE2XSA9IHsweDA0LCAweDBDLCAweDE0LCAweDFDLCAweDI0LCAweDJDLCAweDM0LCAweDNDLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4NEMsIDB4NTQsIDB4NUMsIDB4NjQsIDB4NkMsIDB4NzQsIDB4N0N9Ow0KKw0KKy8qIG51bWJlciBvZiBzcGVlY2ggYml0cyBmb3IgYWxsIG1vZGVzICovDQorc3RhdGljIFdvcmQxNiB1bnBhY2tlZF9zaXplWzE2XSA9IHsxMzIsICAxNzcsIDI1MywgMjg1LCAzMTcsIDM2NSwgMzk3LCA0NjEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NzcsICAgMzUsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDB9Ow0KKw0KKy8qIHNpemUgb2YgcGFja2VkIGZyYW1lIGZvciBlYWNoIG1vZGUsIGV4Y2x1ZGluZyBUT0MgYnl0ZSAqLw0KK3N0YXRpYyBXb3JkMTYgcGFja2VkX3NpemVbMTZdID0gezE3LCAyMywgMzIsIDM2LCA0MCwgNDYsIDUwLCA1OCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MCwgIDUsICAwLCAgMCwgIDAsICAwLCAgMCwgIDB9Ow0KKw0KKy8qIG51bWJlciBvZiB1bnVzZWQgc3BlZWNoIGJpdHMgaW4gcGFja2VkIGZvcm1hdCBmb3IgZWFjaCBtb2RlICovDQorc3RhdGljIFdvcmQxNiB1bnVzZWRfc2l6ZVsxNl0gPSB7NCwgNywgMywgMywgMywgMywgMywgMywgMywgMCwgMCwgMCwgMCwgMCwgMCwgMH07DQorDQorLyogc29ydGluZyB0YWJsZXMgZm9yIGFsbCBtb2RlcyAqLw0KKw0KK3N0YXRpYyBXb3JkMTYgc29ydF82NjBbMTMyXSA9IHsNCisgICAgIDAsICAgNSwgICA2LCAgIDcsICA2MSwgIDg0LCAxMDcsIDEzMCwgIDYyLCAgODUsDQorICAgICA4LCAgIDQsICAzNywgIDM4LCAgMzksICA0MCwgIDU4LCAgODEsIDEwNCwgMTI3LA0KKyAgICA2MCwgIDgzLCAxMDYsIDEyOSwgMTA4LCAxMzEsIDEyOCwgIDQxLCAgNDIsICA4MCwNCisgICAxMjYsICAgMSwgICAzLCAgNTcsIDEwMywgIDgyLCAxMDUsICA1OSwgICAyLCAgNjMsDQorICAgMTA5LCAxMTAsICA4NiwgIDE5LCAgMjIsICAyMywgIDY0LCAgODcsICAxOCwgIDIwLA0KKyAgICAyMSwgIDE3LCAgMTMsICA4OCwgIDQzLCAgODksICA2NSwgMTExLCAgMTQsICAyNCwNCisgICAgMjUsICAyNiwgIDI3LCAgMjgsICAxNSwgIDE2LCAgNDQsICA5MCwgIDY2LCAxMTIsDQorICAgICA5LCAgMTEsICAxMCwgIDEyLCAgNjcsIDExMywgIDI5LCAgMzAsICAzMSwgIDMyLA0KKyAgICAzNCwgIDMzLCAgMzUsICAzNiwgIDQ1LCAgNTEsICA2OCwgIDc0LCAgOTEsICA5NywNCisgICAxMTQsIDEyMCwgIDQ2LCAgNjksICA5MiwgMTE1LCAgNTIsICA3NSwgIDk4LCAxMjEsDQorICAgIDQ3LCAgNzAsICA5MywgMTE2LCAgNTMsICA3NiwgIDk5LCAxMjIsICA0OCwgIDcxLA0KKyAgICA5NCwgMTE3LCAgNTQsICA3NywgMTAwLCAxMjMsICA0OSwgIDcyLCAgOTUsIDExOCwNCisgICAgNTUsICA3OCwgMTAxLCAxMjQsICA1MCwgIDczLCAgOTYsIDExOSwgIDU2LCAgNzksDQorICAgMTAyLCAxMjUNCit9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgc29ydF84ODVbMTc3XSA9IHsNCisgICAgIDAsICAgNCwgICA2LCAgIDcsICAgNSwgICAzLCAgNDcsICA0OCwgIDQ5LCAxMTIsDQorICAgMTEzLCAxMTQsICA3NSwgMTA2LCAxNDAsIDE3MSwgIDgwLCAxMTEsIDE0NSwgMTc2LA0KKyAgICA3NywgMTA4LCAxNDIsIDE3MywgIDc4LCAxMDksIDE0MywgMTc0LCAgNzksIDExMCwNCisgICAxNDQsIDE3NSwgIDc2LCAxMDcsIDE0MSwgMTcyLCAgNTAsIDExNSwgIDUxLCAgIDIsDQorICAgICAxLCAgODEsIDExNiwgMTQ2LCAgMTksICAyMSwgIDEyLCAgMTcsICAxOCwgIDIwLA0KKyAgICAxNiwgIDI1LCAgMTMsICAxMCwgIDE0LCAgMjQsICAyMywgIDIyLCAgMjYsICAgOCwNCisgICAgMTUsICA1MiwgMTE3LCAgMzEsICA4MiwgMTQ3LCAgIDksICAzMywgIDExLCAgODMsDQorICAgMTQ4LCAgNTMsIDExOCwgIDI4LCAgMjcsICA4NCwgMTQ5LCAgMzQsICAzNSwgIDI5LA0KKyAgICA0NiwgIDMyLCAgMzAsICA1NCwgMTE5LCAgMzcsICAzNiwgIDM5LCAgMzgsICA0MCwNCisgICAgODUsIDE1MCwgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA1NSwgIDYwLCAgNjUsDQorICAgIDcwLCAgODYsICA5MSwgIDk2LCAxMDEsIDEyMCwgMTI1LCAxMzAsIDEzNSwgMTUxLA0KKyAgIDE1NiwgMTYxLCAxNjYsICA1NiwgIDg3LCAxMjEsIDE1MiwgIDYxLCAgOTIsIDEyNiwNCisgICAxNTcsICA2NiwgIDk3LCAxMzEsIDE2MiwgIDcxLCAxMDIsIDEzNiwgMTY3LCAgNTcsDQorICAgIDg4LCAxMjIsIDE1MywgIDYyLCAgOTMsIDEyNywgMTU4LCAgNjcsICA5OCwgMTMyLA0KKyAgIDE2MywgIDcyLCAxMDMsIDEzNywgMTY4LCAgNTgsICA4OSwgMTIzLCAxNTQsICA2MywNCisgICAgOTQsIDEyOCwgMTU5LCAgNjgsICA5OSwgMTMzLCAxNjQsICA3MywgMTA0LCAxMzgsDQorICAgMTY5LCAgNTksICA5MCwgMTI0LCAxNTUsICA2NCwgIDk1LCAxMjksIDE2MCwgIDY5LA0KKyAgIDEwMCwgMTM0LCAxNjUsICA3NCwgMTA1LCAxMzksIDE3MA0KK307DQorDQorc3RhdGljIFdvcmQxNiBzb3J0XzEyNjVbMjUzXSA9IHsNCisgICAgIDAsICAgNCwgICA2LCAgOTMsIDE0MywgMTk2LCAyNDYsICAgNywgICA1LCAgIDMsDQorICAgIDQ3LCAgNDgsICA0OSwgIDUwLCAgNTEsIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LA0KKyAgICA5NCwgMTQ0LCAxOTcsIDI0NywgIDk5LCAxNDksIDIwMiwgMjUyLCAgOTYsIDE0NiwNCisgICAxOTksIDI0OSwgIDk3LCAxNDcsIDIwMCwgMjUwLCAxMDAsIDIwMywgIDk4LCAxNDgsDQorICAgMjAxLCAyNTEsICA5NSwgMTQ1LCAxOTgsIDI0OCwgIDUyLCAgIDIsICAgMSwgMTAxLA0KKyAgIDIwNCwgMTU1LCAgMTksICAyMSwgIDEyLCAgMTcsICAxOCwgIDIwLCAgMTYsICAyNSwNCisgICAgMTMsICAxMCwgIDE0LCAgMjQsICAyMywgIDIyLCAgMjYsICAgOCwgIDE1LCAgNTMsDQorICAgMTU2LCAgMzEsIDEwMiwgMjA1LCAgIDksICAzMywgIDExLCAxMDMsIDIwNiwgIDU0LA0KKyAgIDE1NywgIDI4LCAgMjcsIDEwNCwgMjA3LCAgMzQsICAzNSwgIDI5LCAgNDYsICAzMiwNCisgICAgMzAsICA1NSwgMTU4LCAgMzcsICAzNiwgIDM5LCAgMzgsICA0MCwgMTA1LCAyMDgsDQorICAgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA1NiwgMTA2LCAxNTksIDIwOSwgIDU3LA0KKyAgICA2NiwgIDc1LCAgODQsIDEwNywgMTE2LCAxMjUsIDEzNCwgMTYwLCAxNjksIDE3OCwNCisgICAxODcsIDIxMCwgMjE5LCAyMjgsIDIzNywgIDU4LCAxMDgsIDE2MSwgMjExLCAgNjIsDQorICAgMTEyLCAxNjUsIDIxNSwgIDY3LCAxMTcsIDE3MCwgMjIwLCAgNzEsIDEyMSwgMTc0LA0KKyAgIDIyNCwgIDc2LCAxMjYsIDE3OSwgMjI5LCAgODAsIDEzMCwgMTgzLCAyMzMsICA4NSwNCisgICAxMzUsIDE4OCwgMjM4LCAgODksIDEzOSwgMTkyLCAyNDIsICA1OSwgMTA5LCAxNjIsDQorICAgMjEyLCAgNjMsIDExMywgMTY2LCAyMTYsICA2OCwgMTE4LCAxNzEsIDIyMSwgIDcyLA0KKyAgIDEyMiwgMTc1LCAyMjUsICA3NywgMTI3LCAxODAsIDIzMCwgIDgxLCAxMzEsIDE4NCwNCisgICAyMzQsICA4NiwgMTM2LCAxODksIDIzOSwgIDkwLCAxNDAsIDE5MywgMjQzLCAgNjAsDQorICAgMTEwLCAxNjMsIDIxMywgIDY0LCAxMTQsIDE2NywgMjE3LCAgNjksIDExOSwgMTcyLA0KKyAgIDIyMiwgIDczLCAxMjMsIDE3NiwgMjI2LCAgNzgsIDEyOCwgMTgxLCAyMzEsICA4MiwNCisgICAxMzIsIDE4NSwgMjM1LCAgODcsIDEzNywgMTkwLCAyNDAsICA5MSwgMTQxLCAxOTQsDQorICAgMjQ0LCAgNjEsIDExMSwgMTY0LCAyMTQsICA2NSwgMTE1LCAxNjgsIDIxOCwgIDcwLA0KKyAgIDEyMCwgMTczLCAyMjMsICA3NCwgMTI0LCAxNzcsIDIyNywgIDc5LCAxMjksIDE4MiwNCisgICAyMzIsICA4MywgMTMzLCAxODYsIDIzNiwgIDg4LCAxMzgsIDE5MSwgMjQxLCAgOTIsDQorICAgMTQyLCAxOTUsIDI0NSAgICAgICAgICAgICAgICAgICAgICAgICANCit9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgc29ydF8xNDI1WzI4NV0gPSB7DQorICAgICAwLCAgIDQsICAgNiwgMTAxLCAxNTksIDIyMCwgMjc4LCAgIDcsICAgNSwgICAzLA0KKyAgICA0NywgIDQ4LCAgNDksICA1MCwgIDUxLCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwNCisgICAxMDIsIDE2MCwgMjIxLCAyNzksIDEwNywgMTY1LCAyMjYsIDI4NCwgMTA0LCAxNjIsDQorICAgMjIzLCAyODEsIDEwNSwgMTYzLCAyMjQsIDI4MiwgMTA4LCAyMjcsIDEwNiwgMTY0LA0KKyAgIDIyNSwgMjgzLCAxMDMsIDE2MSwgMjIyLCAyODAsICA1MiwgICAyLCAgIDEsIDEwOSwNCisgICAyMjgsIDE3MSwgIDE5LCAgMjEsICAxMiwgIDE3LCAgMTgsICAyMCwgIDE2LCAgMjUsDQorICAgIDEzLCAgMTAsICAxNCwgIDI0LCAgMjMsICAyMiwgIDI2LCAgIDgsICAxNSwgIDUzLA0KKyAgIDE3MiwgIDMxLCAxMTAsIDIyOSwgICA5LCAgMzMsICAxMSwgMTExLCAyMzAsICA1NCwNCisgICAxNzMsICAyOCwgIDI3LCAxMTIsIDIzMSwgIDM0LCAgMzUsICAyOSwgIDQ2LCAgMzIsDQorICAgIDMwLCAgNTUsIDE3NCwgIDM3LCAgMzYsICAzOSwgIDM4LCAgNDAsIDExMywgMjMyLA0KKyAgICA0MSwgIDQyLCAgNDMsICA0NCwgIDQ1LCAgNTYsIDExNCwgMTc1LCAyMzMsICA2MiwNCisgICAxMjAsIDE4MSwgMjM5LCAgNzUsIDEzMywgMTk0LCAyNTIsICA1NywgMTE1LCAxNzYsDQorICAgMjM0LCAgNjMsIDEyMSwgMTgyLCAyNDAsICA3MCwgMTI4LCAxODksIDI0NywgIDc2LA0KKyAgIDEzNCwgMTk1LCAyNTMsICA4MywgMTQxLCAyMDIsIDI2MCwgIDkyLCAxNTAsIDIxMSwNCisgICAyNjksICA4NCwgMTQyLCAyMDMsIDI2MSwgIDkzLCAxNTEsIDIxMiwgMjcwLCAgODUsDQorICAgMTQzLCAyMDQsIDI2MiwgIDk0LCAxNTIsIDIxMywgMjcxLCAgODYsIDE0NCwgMjA1LA0KKyAgIDI2MywgIDk1LCAxNTMsIDIxNCwgMjcyLCAgNjQsIDEyMiwgMTgzLCAyNDEsICA3NywNCisgICAxMzUsIDE5NiwgMjU0LCAgNjUsIDEyMywgMTg0LCAyNDIsICA3OCwgMTM2LCAxOTcsDQorICAgMjU1LCAgODcsIDE0NSwgMjA2LCAyNjQsICA5NiwgMTU0LCAyMTUsIDI3MywgIDU4LA0KKyAgIDExNiwgMTc3LCAyMzUsICA2NiwgMTI0LCAxODUsIDI0MywgIDcxLCAxMjksIDE5MCwNCisgICAyNDgsICA3OSwgMTM3LCAxOTgsIDI1NiwgIDg4LCAxNDYsIDIwNywgMjY1LCAgOTcsDQorICAgMTU1LCAyMTYsIDI3NCwgIDU5LCAxMTcsIDE3OCwgMjM2LCAgNjcsIDEyNSwgMTg2LA0KKyAgIDI0NCwgIDcyLCAxMzAsIDE5MSwgMjQ5LCAgODAsIDEzOCwgMTk5LCAyNTcsICA4OSwNCisgICAxNDcsIDIwOCwgMjY2LCAgOTgsIDE1NiwgMjE3LCAyNzUsICA2MCwgMTE4LCAxNzksDQorICAgMjM3LCAgNjgsIDEyNiwgMTg3LCAyNDUsICA3MywgMTMxLCAxOTIsIDI1MCwgIDgxLA0KKyAgIDEzOSwgMjAwLCAyNTgsICA5MCwgMTQ4LCAyMDksIDI2NywgIDk5LCAxNTcsIDIxOCwNCisgICAyNzYsICA2MSwgMTE5LCAxODAsIDIzOCwgIDY5LCAxMjcsIDE4OCwgMjQ2LCAgNzQsDQorICAgMTMyLCAxOTMsIDI1MSwgIDgyLCAxNDAsIDIwMSwgMjU5LCAgOTEsIDE0OSwgMjEwLA0KKyAgIDI2OCwgMTAwLCAxNTgsIDIxOSwgMjc3DQorfTsNCisNCitzdGF0aWMgV29yZDE2IHNvcnRfMTU4NVszMTddID0gew0KKyAgICAgMCwgICA0LCAgIDYsIDEwOSwgMTc1LCAyNDQsIDMxMCwgICA3LCAgIDUsICAgMywNCisgICAgNDcsICA0OCwgIDQ5LCAgNTAsICA1MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsDQorICAgMTEwLCAxNzYsIDI0NSwgMzExLCAxMTUsIDE4MSwgMjUwLCAzMTYsIDExMiwgMTc4LA0KKyAgIDI0NywgMzEzLCAxMTMsIDE3OSwgMjQ4LCAzMTQsIDExNiwgMjUxLCAxMTQsIDE4MCwNCisgICAyNDksIDMxNSwgMTExLCAxNzcsIDI0NiwgMzEyLCAgNTIsICAgMiwgICAxLCAxMTcsDQorICAgMjUyLCAxODcsICAxOSwgIDIxLCAgMTIsICAxNywgIDE4LCAgMjAsICAxNiwgIDI1LA0KKyAgICAxMywgIDEwLCAgMTQsICAyNCwgIDIzLCAgMjIsICAyNiwgICA4LCAgMTUsICA1MywNCisgICAxODgsICAzMSwgMTE4LCAyNTMsICAgOSwgIDMzLCAgMTEsIDExOSwgMjU0LCAgNTQsDQorICAgMTg5LCAgMjgsICAyNywgMTIwLCAyNTUsICAzNCwgIDM1LCAgMjksICA0NiwgIDMyLA0KKyAgICAzMCwgIDU1LCAxOTAsICAzNywgIDM2LCAgMzksICAzOCwgIDQwLCAxMjEsIDI1NiwNCisgICAgNDEsICA0MiwgIDQzLCAgNDQsICA0NSwgIDU2LCAxMjIsIDE5MSwgMjU3LCAgNjMsDQorICAgMTI5LCAxOTgsIDI2NCwgIDc2LCAxNDIsIDIxMSwgMjc3LCAgODksIDE1NSwgMjI0LA0KKyAgIDI5MCwgMTAyLCAxNjgsIDIzNywgMzAzLCAgNTcsIDEyMywgMTkyLCAyNTgsICA3MCwNCisgICAxMzYsIDIwNSwgMjcxLCAgODMsIDE0OSwgMjE4LCAyODQsICA5NiwgMTYyLCAyMzEsDQorICAgMjk3LCAgNjIsIDEyOCwgMTk3LCAyNjMsICA3NSwgMTQxLCAyMTAsIDI3NiwgIDg4LA0KKyAgIDE1NCwgMjIzLCAyODksIDEwMSwgMTY3LCAyMzYsIDMwMiwgIDU4LCAxMjQsIDE5MywNCisgICAyNTksICA3MSwgMTM3LCAyMDYsIDI3MiwgIDg0LCAxNTAsIDIxOSwgMjg1LCAgOTcsDQorICAgMTYzLCAyMzIsIDI5OCwgIDU5LCAxMjUsIDE5NCwgMjYwLCAgNjQsIDEzMCwgMTk5LA0KKyAgIDI2NSwgIDY3LCAxMzMsIDIwMiwgMjY4LCAgNzIsIDEzOCwgMjA3LCAyNzMsICA3NywNCisgICAxNDMsIDIxMiwgMjc4LCAgODAsIDE0NiwgMjE1LCAyODEsICA4NSwgMTUxLCAyMjAsDQorICAgMjg2LCAgOTAsIDE1NiwgMjI1LCAyOTEsICA5MywgMTU5LCAyMjgsIDI5NCwgIDk4LA0KKyAgIDE2NCwgMjMzLCAyOTksIDEwMywgMTY5LCAyMzgsIDMwNCwgMTA2LCAxNzIsIDI0MSwNCisgICAzMDcsICA2MCwgMTI2LCAxOTUsIDI2MSwgIDY1LCAxMzEsIDIwMCwgMjY2LCAgNjgsDQorICAgMTM0LCAyMDMsIDI2OSwgIDczLCAxMzksIDIwOCwgMjc0LCAgNzgsIDE0NCwgMjEzLA0KKyAgIDI3OSwgIDgxLCAxNDcsIDIxNiwgMjgyLCAgODYsIDE1MiwgMjIxLCAyODcsICA5MSwNCisgICAxNTcsIDIyNiwgMjkyLCAgOTQsIDE2MCwgMjI5LCAyOTUsICA5OSwgMTY1LCAyMzQsDQorICAgMzAwLCAxMDQsIDE3MCwgMjM5LCAzMDUsIDEwNywgMTczLCAyNDIsIDMwOCwgIDYxLA0KKyAgIDEyNywgMTk2LCAyNjIsICA2NiwgMTMyLCAyMDEsIDI2NywgIDY5LCAxMzUsIDIwNCwNCisgICAyNzAsICA3NCwgMTQwLCAyMDksIDI3NSwgIDc5LCAxNDUsIDIxNCwgMjgwLCAgODIsDQorICAgMTQ4LCAyMTcsIDI4MywgIDg3LCAxNTMsIDIyMiwgMjg4LCAgOTIsIDE1OCwgMjI3LA0KKyAgIDI5MywgIDk1LCAxNjEsIDIzMCwgMjk2LCAxMDAsIDE2NiwgMjM1LCAzMDEsIDEwNSwNCisgICAxNzEsIDI0MCwgMzA2LCAxMDgsIDE3NCwgMjQzLCAzMDkNCit9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgc29ydF8xODI1WzM2NV0gPSB7DQorICAgICAwLCAgIDQsICAgNiwgMTIxLCAxOTksIDI4MCwgMzU4LCAgIDcsICAgNSwgICAzLA0KKyAgICA0NywgIDQ4LCAgNDksICA1MCwgIDUxLCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwNCisgICAxMjIsIDIwMCwgMjgxLCAzNTksIDEyNywgMjA1LCAyODYsIDM2NCwgMTI0LCAyMDIsDQorICAgMjgzLCAzNjEsIDEyNSwgMjAzLCAyODQsIDM2MiwgMTI4LCAyODcsIDEyNiwgMjA0LA0KKyAgIDI4NSwgMzYzLCAxMjMsIDIwMSwgMjgyLCAzNjAsICA1MiwgICAyLCAgIDEsIDEyOSwNCisgICAyODgsIDIxMSwgIDE5LCAgMjEsICAxMiwgIDE3LCAgMTgsICAyMCwgIDE2LCAgMjUsDQorICAgIDEzLCAgMTAsICAxNCwgIDI0LCAgMjMsICAyMiwgIDI2LCAgIDgsICAxNSwgIDUzLA0KKyAgIDIxMiwgIDMxLCAxMzAsIDI4OSwgICA5LCAgMzMsICAxMSwgMTMxLCAyOTAsICA1NCwNCisgICAyMTMsICAyOCwgIDI3LCAxMzIsIDI5MSwgIDM0LCAgMzUsICAyOSwgIDQ2LCAgMzIsDQorICAgIDMwLCAgNTUsIDIxNCwgIDM3LCAgMzYsICAzOSwgIDM4LCAgNDAsIDEzMywgMjkyLA0KKyAgICA0MSwgIDQyLCAgNDMsICA0NCwgIDQ1LCAgNTYsIDEzNCwgMjE1LCAyOTMsIDE5OCwNCisgICAyOTksIDEzNiwgMTIwLCAxMzgsICA2MCwgMjc5LCAgNTgsICA2MiwgMzU3LCAxMzksDQorICAgMTQwLCAyOTUsIDE1NiwgIDU3LCAyMTksIDI5NywgIDYzLCAyMTcsIDEzNywgMTcwLA0KKyAgIDMwMCwgMjIyLCAgNjQsIDEwNiwgIDYxLCAgNzgsIDI5NCwgIDkyLCAxNDIsIDE0MSwNCisgICAxMzUsIDIyMSwgMjk2LCAzMDEsIDM0MywgIDU5LCAyOTgsIDE4NCwgMzI5LCAzMTUsDQorICAgMjIwLCAyMTYsIDI2NSwgMjUxLCAyMTgsIDIzNywgMzUyLCAyMjMsIDE1NywgIDg2LA0KKyAgIDE3MSwgIDg3LCAxNjQsIDM1MSwgMTExLCAzMDIsICA2NSwgMTc4LCAxMTUsIDMyMywNCisgICAgNzIsIDE5MiwgMTAxLCAxNzksICA5MywgIDczLCAxOTMsIDE1MSwgMzM3LCAzMDksDQorICAgMTQzLCAyNzQsICA2OSwgMzI0LCAxNjUsIDE1MCwgIDk3LCAzMzgsIDExMCwgMzEwLA0KKyAgIDMzMCwgMjczLCAgNjgsIDEwNywgMTc1LCAyNDUsIDExNCwgIDc5LCAxMTMsIDE4OSwNCisgICAyNDYsIDI1OSwgMTc0LCAgNzEsIDE4NSwgIDk2LCAzNDQsIDEwMCwgMzIyLCAgODMsDQorICAgMzM0LCAzMTYsIDMzMywgMjUyLCAxNjEsIDM0OCwgMTQ3LCAgODIsIDI2OSwgMjMyLA0KKyAgIDI2MCwgMzA4LCAzNTMsIDM0NywgMTYzLCAyMzEsIDMwNiwgMzIwLCAxODgsIDI3MCwNCisgICAxNDYsIDE3NywgMjY2LCAzNTAsIDI1NiwgIDg1LCAxNDksIDExNiwgMTkxLCAxNjAsDQorICAgMjM4LCAyNTgsIDMzNiwgMzA1LCAyNTUsICA4OCwgMjI0LCAgOTksIDMzOSwgMjMwLA0KKyAgIDIyOCwgMjI3LCAyNzIsIDI0MiwgMjQxLCAzMTksIDIzMywgMzExLCAxMDIsICA3NCwNCisgICAxODAsIDI3NSwgIDY2LCAxOTQsIDE1MiwgMzI1LCAxNzIsIDI0NywgMjQ0LCAyNjEsDQorICAgMTE3LCAxNTgsIDE2NiwgMzU0LCAgNzUsIDE0NCwgMTA4LCAzMTIsICA5NCwgMTg2LA0KKyAgIDMwMywgIDgwLCAyMzQsICA4OSwgMTk1LCAxMTIsIDM0MCwgMTgxLCAzNDUsIDMxNywNCisgICAzMjYsIDI3NiwgMjM5LCAxNjcsIDExOCwgMzEzLCAgNzAsIDM1NSwgMzI3LCAyNTMsDQorICAgMTkwLCAxNzYsIDI3MSwgMTA0LCAgOTgsIDE1MywgMTAzLCAgOTAsICA3NiwgMjY3LA0KKyAgIDI3NywgMjQ4LCAyMjUsIDI2MiwgMTgyLCAgODQsIDE1NCwgMjM1LCAzMzUsIDE2OCwNCisgICAzMzEsIDE5NiwgMzQxLCAyNDksIDE2MiwgMzA3LCAxNDgsIDM0OSwgMjYzLCAzMjEsDQorICAgMjU3LCAyNDMsIDIyOSwgMzU2LCAxNTksIDExOSwgIDY3LCAxODcsIDE3MywgMTQ1LA0KKyAgIDI0MCwgIDc3LCAzMDQsIDMzMiwgMzE0LCAzNDIsIDEwOSwgMjU0LCAgODEsIDI3OCwNCisgICAxMDUsICA5MSwgMzQ2LCAzMTgsIDE4MywgMjUwLCAxOTcsIDMyOCwgIDk1LCAxNTUsDQorICAgMTY5LCAyNjgsIDIyNiwgMjM2LCAyNjQgICAgICAgICAgICAgICAgIA0KK307DQorDQorc3RhdGljIFdvcmQxNiBzb3J0XzE5ODVbMzk3XSA9IHsNCisgICAgIDAsICAgNCwgICA2LCAxMjksIDIxNSwgMzA0LCAzOTAsICAgNywgICA1LCAgIDMsDQorICAgIDQ3LCAgNDgsICA0OSwgIDUwLCAgNTEsIDIyMiwgMjIzLCAyMjQsIDIyNSwgMjI2LA0KKyAgIDEzMCwgMjE2LCAzMDUsIDM5MSwgMTM1LCAyMjEsIDMxMCwgMzk2LCAxMzIsIDIxOCwNCisgICAzMDcsIDM5MywgMTMzLCAyMTksIDMwOCwgMzk0LCAxMzYsIDMxMSwgMTM0LCAyMjAsDQorICAgMzA5LCAzOTUsIDEzMSwgMjE3LCAzMDYsIDM5MiwgIDUyLCAgIDIsICAgMSwgMTM3LA0KKyAgIDMxMiwgMjI3LCAgMTksICAyMSwgIDEyLCAgMTcsICAxOCwgIDIwLCAgMTYsICAyNSwNCisgICAgMTMsICAxMCwgIDE0LCAgMjQsICAyMywgIDIyLCAgMjYsICAgOCwgIDE1LCAgNTMsDQorICAgMjI4LCAgMzEsIDEzOCwgMzEzLCAgIDksICAzMywgIDExLCAxMzksIDMxNCwgIDU0LA0KKyAgIDIyOSwgIDI4LCAgMjcsIDE0MCwgMzE1LCAgMzQsICAzNSwgIDI5LCAgNDYsICAzMiwNCisgICAgMzAsICA1NSwgMjMwLCAgMzcsICAzNiwgIDM5LCAgMzgsICA0MCwgMTQxLCAzMTYsDQorICAgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA1NiwgMTQyLCAyMzEsIDMxNywgIDYzLA0KKyAgICA3MywgIDkyLCAzNDAsICA4MiwgMzI0LCAxNDksIDM1MywgMTU5LCAzMzQsIDE2NSwNCisgICAzMzgsIDE3OCwgMTYzLCAyNTQsICA3NywgMTY4LCAyNTcsIDE1MywgMzQzLCAgNTcsDQorICAgMjQ4LCAyMzgsICA3OSwgMjUyLCAxNjYsICA2NywgIDgwLCAyMDEsIDEwMSwgMjY3LA0KKyAgIDE0MywgMTY0LCAzNDEsIDI1NSwgMzM5LCAxODcsIDM3NiwgMzE4LCAgNzgsIDMyOCwNCisgICAzNjIsIDExNSwgMjMyLCAyNDIsIDI1MywgMjkwLCAyNzYsICA2MiwgIDU4LCAxNTgsDQorICAgIDY4LCAgOTMsIDE3OSwgMzE5LCAxNDgsIDE2OSwgMTU0LCAgNzIsIDM4NSwgMzI5LA0KKyAgIDMzMywgMzQ0LCAxMDIsICA4MywgMTQ0LCAyMzMsIDMyMywgMTI0LCAyNDMsIDE5MiwNCisgICAzNTQsIDIzNywgIDY0LCAyNDcsIDIwMiwgMjA5LCAxNTAsIDExNiwgMzM1LCAyNjgsDQorICAgMjM5LCAyOTksIDE4OCwgMTk2LCAyOTgsICA5NCwgMTk1LCAyNTgsIDEyMywgMzYzLA0KKyAgIDM4NCwgMTA5LCAzMjUsIDM3MSwgMTcwLCAzNzAsICA4NCwgMTEwLCAyOTUsIDE4MCwNCisgICAgNzQsIDIxMCwgMTkxLCAxMDYsIDI5MSwgMjA1LCAzNjcsIDM4MSwgMzc3LCAyMDYsDQorICAgMzU1LCAxMjIsIDExOSwgMTIwLCAzODMsIDE2MCwgMTA1LCAxMDgsIDI3NywgMzgwLA0KKyAgIDI5NCwgMjg0LCAyODUsIDM0NSwgMjA4LCAyNjksIDI0OSwgMzY2LCAzODYsIDMwMCwNCisgICAyOTcsIDI1OSwgMTI1LCAzNjksIDE5NywgIDk3LCAxOTQsIDI4NiwgMjExLCAyODEsDQorICAgMjgwLCAxODMsIDM3MiwgIDg3LCAxNTUsIDI4MywgIDU5LCAzNDgsIDMyNywgMTg0LA0KKyAgICA3NiwgMTExLCAzMzAsIDIwMywgMzQ5LCAgNjksICA5OCwgMTUyLCAxNDUsIDE4OSwNCisgICAgNjYsIDMyMCwgMzM3LCAxNzMsIDM1OCwgMjUxLCAxOTgsIDE3NCwgMjYzLCAyNjIsDQorICAgMTI2LCAyNDEsIDE5MywgIDg4LCAzODgsIDExNywgIDk1LCAzODcsIDExMiwgMzU5LA0KKyAgIDI4NywgMjQ0LCAxMDMsIDI3MiwgMzAxLCAxNzEsIDE2MiwgMjM0LCAyNzMsIDEyNywNCisgICAzNzMsIDE4MSwgMjkyLCAgODUsIDM3OCwgMzAyLCAxMjEsIDEwNywgMzY0LCAzNDYsDQorICAgMzU2LCAyMTIsIDI3OCwgMjEzLCAgNjUsIDM4MiwgMjg4LCAyMDcsIDExMywgMTc1LA0KKyAgICA5OSwgMjk2LCAzNzQsIDM2OCwgMTk5LCAyNjAsIDE4NSwgMzM2LCAzMzEsIDE2MSwNCisgICAyNzAsIDI2NCwgMjUwLCAyNDAsICA3NSwgMzUwLCAxNTEsICA2MCwgIDg5LCAzMjEsDQorICAgMTU2LCAyNzQsIDM2MCwgMzI2LCAgNzAsIDI4MiwgMTY3LCAxNDYsIDM1MiwgIDgxLA0KKyAgICA5MSwgMzg5LCAyNjYsIDI0NSwgMTc3LCAyMzUsIDE5MCwgMjU2LCAyMDQsIDM0MiwNCisgICAxMjgsIDExOCwgMzAzLCAxMDQsIDM3OSwgMTgyLCAxMTQsIDM3NSwgMjAwLCAgOTYsDQorICAgMjkzLCAxNzIsIDIxNCwgMzY1LCAyNzksICA4NiwgMjg5LCAzNTEsIDM0NywgMzU3LA0KKyAgIDI2MSwgMTg2LCAxNzYsIDI3MSwgIDkwLCAxMDAsIDE0NywgMzIyLCAyNzUsIDM2MSwNCisgICAgNzEsIDMzMiwgIDYxLCAyNjUsIDE1NywgMjQ2LCAyMzYgICAgICAgICANCit9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgc29ydF8yMzA1WzQ2MV0gPSB7DQorICAgICAwLCAgIDQsICAgNiwgMTQ1LCAyNDcsIDM1MiwgNDU0LCAgIDcsICAgNSwgICAzLA0KKyAgICA0NywgIDQ4LCAgNDksICA1MCwgIDUxLCAyNTQsIDI1NSwgMjU2LCAyNTcsIDI1OCwNCisgICAxNDYsIDI0OCwgMzUzLCA0NTUsIDE1MSwgMjUzLCAzNTgsIDQ2MCwgMTQ4LCAyNTAsDQorICAgMzU1LCA0NTcsIDE0OSwgMjUxLCAzNTYsIDQ1OCwgMTUyLCAzNTksIDE1MCwgMjUyLA0KKyAgIDM1NywgNDU5LCAxNDcsIDI0OSwgMzU0LCA0NTYsICA1MiwgICAyLCAgIDEsIDE1MywNCisgICAzNjAsIDI1OSwgIDE5LCAgMjEsICAxMiwgIDE3LCAgMTgsICAyMCwgIDE2LCAgMjUsDQorICAgIDEzLCAgMTAsICAxNCwgIDI0LCAgMjMsICAyMiwgIDI2LCAgIDgsICAxNSwgIDUzLA0KKyAgIDI2MCwgIDMxLCAxNTQsIDM2MSwgICA5LCAgMzMsICAxMSwgMTU1LCAzNjIsICA1NCwNCisgICAyNjEsICAyOCwgIDI3LCAxNTYsIDM2MywgIDM0LCAgMzUsICAyOSwgIDQ2LCAgMzIsDQorICAgIDMwLCAgNTUsIDI2MiwgIDM3LCAgMzYsICAzOSwgIDM4LCAgNDAsIDE1NywgMzY0LA0KKyAgICA0MSwgIDQyLCAgNDMsICA0NCwgIDQ1LCAgNTYsIDE1OCwgMjYzLCAzNjUsIDE4MSwNCisgICAxOTIsIDE3MCwgIDc5LCAgNTcsIDM5OSwgIDkwLCAxNTksIDI5NywgMzc3LCAzNjYsDQorICAgMjc1LCAgNjgsIDE4MywgMzg4LCAyODYsIDE5NCwgMjk5LCA5MiAsICA3MCwgMTgyLA0KKyAgIDQwMSwgMTcyLCAgNTksICA5MSwgIDU4LCA0MDAsIDM2OCwgMTYxLCAgODEsIDE2MCwNCisgICAyNjQsIDE3MSwgIDgwLCAzODksIDM5MCwgMzc4LCAzNzksIDE5MywgMjk4LCAgNjksDQorICAgMjY2LCAyNjUsIDM2NywgMjc3LCAyODgsIDI3NiwgMjg3LCAxODQsICA2MCwgMTk1LA0KKyAgICA4MiwgIDkzLCAgNzEsIDM2OSwgNDAyLCAxNzMsIDE2MiwgNDQ0LCAzMDAsIDM5MSwNCisgICAgOTgsICA3NiwgMjc4LCAgNjEsIDI2NywgMzc0LCAxMzUsIDQxMSwgMTY3LCAxMDIsDQorICAgMzgwLCAyMDAsICA4NywgMTc4LCAgNjUsICA5NCwgMjA0LCAxMjQsICA3MiwgMzQyLA0KKyAgIDE4OSwgMzA1LCAzODEsIDM5NiwgNDMzLCAzMDEsIDIyNiwgNDA3LCAyODksIDIzNywNCisgICAxMTMsIDIxNSwgMTg1LCAxMjgsIDMwOSwgNDAzLCAxMTYsIDMyMCwgMTk2LCAzMzEsDQorICAgMzcwLCA0MjIsIDE3NCwgIDY0LCAzOTIsICA4MywgNDI1LCAyMTksIDEzNCwgMTg4LA0KKyAgIDQzMiwgMTEyLCA0MjcsIDEzOSwgMjc5LCAxNjMsIDQzNiwgMjA4LCA0NDcsIDIxOCwNCisgICAyMzYsIDIyOSwgIDk3LCAyOTQsIDM4NSwgMjMwLCAxNjYsIDI2OCwgMTc3LCA0NDMsDQorICAgMjI1LCA0MjYsIDEwMSwgMjcyLCAxMzgsIDEyNywgMjkwLCAxMTcsIDM0NywgMTk5LA0KKyAgIDQxNCwgIDk1LCAxNDAsIDI0MCwgNDEwLCAzOTUsIDIwOSwgMTI5LCAyODMsIDM0NiwNCisgICAxMDUsIDI0MSwgNDM3LCAgODYsIDMwOCwgNDQ4LCAyMDMsIDM0NSwgMTg2LCAxMDcsDQorICAgMjIwLCA0MTUsIDMzNCwgMzE5LCAxMDYsIDMxMywgMTE4LCAxMjMsICA3MywgMjA3LA0KKyAgIDQyMSwgMjE0LCAzODQsIDM3MywgNDM4LCAgNjIsIDM3MSwgMzQxLCAgNzUsIDQ0OSwNCisgICAxNjgsIDMyMywgMTY0LCAyNDIsIDQxNiwgMzI0LCAzMDQsIDE5NywgMzM1LCA0MDQsDQorICAgMjcxLCAgNjMsIDE5MSwgMzI1LCAgOTYsIDE2OSwgMjMxLCAyODAsIDMxMiwgMTg3LA0KKyAgIDQwNiwgIDg0LCAyMDEsIDEwMCwgIDY3LCAzODIsIDE3NSwgMzM2LCAyMDIsIDMzMCwNCisgICAyNjksIDM5MywgMzc2LCAzODMsIDI5MywgMzA3LCA0MDksIDE3OSwgMjg1LCAzMTQsDQorICAgMzAyLCAzNzIsIDM5OCwgMTkwLCAxODAsICA4OSwgIDk5LCAxMDMsIDIzMiwgIDc4LA0KKyAgICA4OCwgIDc3LCAxMzYsIDM4NywgMTY1LCAxOTgsIDM5NCwgMTI1LCAxNzYsIDQyOCwNCisgICAgNzQsIDM3NSwgMjM4LCAyMjcsICA2NiwgMjczLCAyODIsIDE0MSwgMzA2LCA0MTIsDQorICAgMTE0LCAgODUsIDEzMCwgMzQ4LCAxMTksIDI5MSwgMjk2LCAzODYsIDIzMywgMzk3LA0KKyAgIDMwMywgNDA1LCAyODQsIDQ0NSwgNDIzLCAyMjEsIDIxMCwgMjA1LCA0NTAsIDEwOCwNCisgICAyNzQsIDQzNCwgMjE2LCAzNDMsIDMzNywgMTQyLCAyNDMsIDMyMSwgNDA4LCA0NTEsDQorICAgMzEwLCAyOTIsIDEyMCwgMTA5LCAyODEsIDQzOSwgMjcwLCA0MjksIDMzMiwgMjk1LA0KKyAgIDQxOCwgMjExLCAzMTUsIDIyMiwgMzI2LCAxMzEsIDQzMCwgMjQ0LCAzMjcsIDM0OSwNCisgICA0MTcsIDMxNiwgMTQzLCAzMzgsIDQ0MCwgMjM0LCAxMTAsIDIxMiwgNDUyLCAyNDUsDQorICAgMTIxLCA0MTksIDM1MCwgMjIzLCAxMzIsIDQ0MSwgMzI4LCA0MTMsIDMxNywgMzM5LA0KKyAgIDEyNiwgMTA0LCAxMzcsIDQ0NiwgMzQ0LCAyMzksIDQzNSwgMTE1LCAzMzMsIDIwNiwNCisgICAzMjIsIDIxNywgMjI4LCA0MjQsIDQ1MywgMzExLCAzNTEsIDExMSwgNDQyLCAyMjQsDQorICAgMjEzLCAxMjIsIDQzMSwgMzQwLCAyMzUsIDI0NiwgMTMzLCAxNDQsIDQyMCwgMzI5LA0KKyAgIDMxOA0KK307DQorDQorc3RhdGljIFdvcmQxNiBzb3J0XzIzODVbNDc3XSA9IHsNCisgICAgIDAsICAgNCwgICA2LCAxNDUsIDI1MSwgMzYwLCA0NjYsICAgNywgICA1LCAgIDMsDQorICAgIDQ3LCAgNDgsICA0OSwgIDUwLCAgNTEsIDI2MiwgMjYzLCAyNjQsIDI2NSwgMjY2LA0KKyAgIDE0NiwgMjUyLCAzNjEsIDQ2NywgMTUxLCAyNTcsIDM2NiwgNDcyLCAxNDgsIDI1NCwNCisgICAzNjMsIDQ2OSwgMTQ5LCAyNTUsIDM2NCwgNDcwLCAxNTYsIDM3MSwgMTUwLCAyNTYsDQorICAgMzY1LCA0NzEsIDE0NywgMjUzLCAzNjIsIDQ2OCwgIDUyLCAgIDIsICAgMSwgMTU3LA0KKyAgIDM3MiwgMjY3LCAgMTksICAyMSwgIDEyLCAgMTcsICAxOCwgIDIwLCAgMTYsICAyNSwNCisgICAgMTMsICAxMCwgIDE0LCAgMjQsICAyMywgIDIyLCAgMjYsICAgOCwgIDE1LCAgNTMsDQorICAgMjY4LCAgMzEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMjU4LCAyNTksIDI2MCwgMjYxLA0KKyAgIDM2NywgMzY4LCAzNjksIDM3MCwgNDczLCA0NzQsIDQ3NSwgNDc2LCAxNTgsIDM3MywNCisgICAgIDksICAzMywgIDExLCAxNTksIDM3NCwgIDU0LCAyNjksICAyOCwgIDI3LCAxNjAsDQorICAgMzc1LCAgMzQsICAzNSwgIDI5LCAgNDYsICAzMiwgIDMwLCAgNTUsIDI3MCwgMzcsDQorICAgIDM2LCAgMzksICAzOCwgIDQwLCAxNjEsIDM3NiwgIDQxLCAgNDIsICA0MywgIDQ0LA0KKyAgICA0NSwgIDU2LCAxNjIsIDI3MSwgMzc3LCAxODUsIDE5NiwgMTc0LCAgNzksICA1NywNCisgICA0MTEsICA5MCwgMTYzLCAzMDUsIDM4OSwgMzc4LCAyODMsICA2OCwgMTg3LCA0MDAsDQorICAgMjk0LCAxOTgsIDMwNywgIDkyLCAgNzAsIDE4NiwgNDEzLCAxNzYsICA1OSwgIDkxLA0KKyAgICA1OCwgNDEyLCAzODAsIDE2NSwgIDgxLCAxNjQsIDI3MiwgMTc1LCAgODAsIDQwMSwNCisgICA0MDIsIDM5MCwgMzkxLCAxOTcsIDMwNiwgIDY5LCAyNzQsIDI3MywgMzc5LCAyODUsDQorICAgMjk2LCAyODQsIDI5NSwgMTg4LCAgNjAsIDE5OSwgIDgyLCAgOTMsICA3MSwgMzgxLA0KKyAgIDQxNCwgMTc3LCAxNjYsIDQ1NiwgMzA4LCA0MDMsICA5OCwgIDc2LCAyODYsICA2MSwNCisgICAyNzUsIDM4NiwgMTM1LCA0MjMsIDE3MSwgMTAyLCAzOTIsIDIwNCwgIDg3LCAxODIsDQorICAgIDY1LCAgOTQsIDIwOCwgMTI0LCAgNzIsIDM1MCwgMTkzLCAzMTMsIDM5MywgNDA4LA0KKyAgIDQ0NSwgMzA5LCAyMzAsIDQxOSwgMjk3LCAyNDEsIDExMywgMjE5LCAxODksIDEyOCwNCisgICAzMTcsIDQxNSwgMTE2LCAzMjgsIDIwMCwgMzM5LCAzODIsIDQzNCwgMTc4LCAgNjQsDQorICAgNDA0LCAgODMsIDQzNywgMjIzLCAxMzQsIDE5MiwgNDQ0LCAxMTIsIDQzOSwgMTM5LA0KKyAgIDI4NywgMTY3LCA0NDgsIDIxMiwgNDU5LCAyMjIsIDI0MCwgMjMzLCAgOTcsIDMwMiwNCisgICAzOTcsIDIzNCwgMTcwLCAyNzYsIDE4MSwgNDU1LCAyMjksIDQzOCwgMTAxLCAyODAsDQorICAgMTM4LCAxMjcsIDI5OCwgMTE3LCAzNTUsIDIwMywgNDI2LCAgOTUsIDE0MCwgMjQ0LA0KKyAgIDQyMiwgNDA3LCAyMTMsIDEyOSwgMjkxLCAzNTQsIDEwNSwgMjQ1LCA0NDksICA4NiwNCisgICAzMTYsIDQ2MCwgMjA3LCAzNTMsIDE5MCwgMTA3LCAyMjQsIDQyNywgMzQyLCAzMjcsDQorICAgMTA2LCAzMjEsIDExOCwgMTIzLCAgNzMsIDIxMSwgNDMzLCAyMTgsIDM5NiwgMzg1LA0KKyAgIDQ1MCwgIDYyLCAzODMsIDM0OSwgIDc1LCA0NjEsIDE3MiwgMzMxLCAxNjgsIDI0NiwNCisgICA0MjgsIDMzMiwgMzEyLCAyMDEsIDM0MywgNDE2LCAyNzksICA2MywgMTk1LCAzMzMsDQorICAgIDk2LCAxNzMsIDIzNSwgMjg4LCAzMjAsIDE5MSwgNDE4LCAgODQsIDIwNSwgMTAwLA0KKyAgICA2NywgMzk0LCAxNzksIDM0NCwgMjA2LCAzMzgsIDI3NywgNDA1LCAzODgsIDM5NSwNCisgICAzMDEsIDMxNSwgNDIxLCAxODMsIDI5MywgMzIyLCAzMTAsIDM4NCwgNDEwLCAxOTQsDQorICAgMTg0LCAgODksICA5OSwgMTAzLCAyMzYsICA3OCwgIDg4LCAgNzcsIDEzNiwgMzk5LA0KKyAgIDE2OSwgMjAyLCA0MDYsIDEyNSwgMTgwLCA0NDAsICA3NCwgMzg3LCAyNDIsIDIzMSwNCisgICAgNjYsIDI4MSwgMjkwLCAxNDEsIDMxNCwgNDI0LCAxMTQsICA4NSwgMTMwLCAzNTYsDQorICAgMTE5LCAyOTksIDMwNCwgMzk4LCAyMzcsIDQwOSwgMzExLCA0MTcsIDI5MiwgNDU3LA0KKyAgIDQzNSwgMjI1LCAyMTQsIDIwOSwgNDYyLCAxMDgsIDI4MiwgNDQ2LCAyMjAsIDM1MSwNCisgICAzNDUsIDE0MiwgMjQ3LCAzMjksIDQyMCwgNDYzLCAzMTgsIDMwMCwgMTIwLCAxMDksDQorICAgMjg5LCA0NTEsIDI3OCwgNDQxLCAzNDAsIDMwMywgNDMwLCAyMTUsIDMyMywgMjI2LA0KKyAgIDMzNCwgMTMxLCA0NDIsIDI0OCwgMzM1LCAzNTcsIDQyOSwgMzI0LCAxNDMsIDM0NiwNCisgICA0NTIsIDIzOCwgMTEwLCAyMTYsIDQ2NCwgMjQ5LCAxMjEsIDQzMSwgMzU4LCAyMjcsDQorICAgMTMyLCA0NTMsIDMzNiwgNDI1LCAzMjUsIDM0NywgMTI2LCAxMDQsIDEzNywgNDU4LA0KKyAgIDM1MiwgMjQzLCA0NDcsIDExNSwgMzQxLCAyMTAsIDMzMCwgMjIxLCAyMzIsIDQzNiwNCisgICA0NjUsIDMxOSwgMzU5LCAxMTEsIDQ1NCwgMjI4LCAyMTcsIDEyMiwgNDQzLCAzNDgsDQorICAgMjM5LCAyNTAsIDEzMywgMTQ0LCA0MzIsIDMzNywgMzI2ICAgICAgICAgDQorfTsNCisNCitzdGF0aWMgV29yZDE2IHNvcnRfU0lEWzM1XSA9IHsNCisgICAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwNCisgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwNCisgICAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwNCisgICAzMCwgMzEsIDMyLCAzMywgMzQNCit9Ow0KKw0KKy8qIHBvaW50ZXIgdGFibGUgZm9yIGJpdCBzb3J0aW5nIHRhYmxlcyAqLw0KK3N0YXRpYyBXb3JkMTYgKnNvcnRfcHRyWzE2XSA9IHsgc29ydF82NjAsIHNvcnRfODg1LCBzb3J0XzEyNjUsIHNvcnRfMTQyNSwgc29ydF8xNTg1LCBzb3J0XzE4MjUsIHNvcnRfMTk4NSwgc29ydF8yMzA1LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0XzIzODUsIHNvcnRfU0lELCAgICAgIE5VTEwsICAgICAgTlVMTCwgICAgICBOVUxMLCAgICAgIE5VTEwsICAgICAgTlVMTCwgICAgICBOVUxMfTsNCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL29wZXJfMzJiLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL29wZXJfMzJiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE1OWQ4NAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvb3Blcl8zMmIuaApAQCAtMCwwICsxLDMxIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qIERvdWJsZSBwcmVjaXNpb24gb3BlcmF0aW9ucyAqLw0KKy8qICRJZCQgKi8NCisNCisjaWZuZGVmIF9fT1BFUl8zMkJfSF9fDQorI2RlZmluZSBfX09QRVJfMzJCX0hfXw0KKw0KK3ZvaWQgVk9fTF9FeHRyYWN0IChXb3JkMzIgTF8zMiwgV29yZDE2ICpoaSwgV29yZDE2ICpsbyk7DQorV29yZDMyIExfQ29tcCAoV29yZDE2IGhpLCBXb3JkMTYgbG8pOw0KK1dvcmQzMiBNcHlfMzIgKFdvcmQxNiBoaTEsIFdvcmQxNiBsbzEsIFdvcmQxNiBoaTIsIFdvcmQxNiBsbzIpOw0KK1dvcmQzMiBNcHlfMzJfMTYgKFdvcmQxNiBoaSwgV29yZDE2IGxvLCBXb3JkMTYgbik7DQorV29yZDMyIERpdl8zMiAoV29yZDMyIExfbnVtLCBXb3JkMTYgZGVub21faGksIFdvcmQxNiBkZW5vbV9sbyk7DQorDQorI2VuZGlmIC8vX19PUEVSXzMyQl9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3BfbWVkX28uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcF9tZWRfby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YzRjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3BfbWVkX28uaApAQCAtMCwwICsxLDUyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgUF9NRURfTy5IICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgIE1lZGlhbiBvcGVuLWxvb3AgbGFnIHNlYXJjaAkJCQkgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmbmRlZiBfX1BfTUVEX09fSF9fDQorI2RlZmluZSBfX1BfTUVEX09fSF9fDQorDQorV29yZDE2IFBpdGNoX21lZF9vbCggICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogb3BlbiBsb29wIHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgd3NwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc2lnbmFsIHVzZWQgdG8gY29tcHV0ZSB0aGUgb3BlbiBsb29wIHBpdGNoICovDQorCQkvKiB3c3BbLXBpdF9tYXhdIHRvIHdzcFstMV0gc2hvdWxkIGJlIGtub3duICAgKi8NCisJCVdvcmQxNiBMX21pbiwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBtaW5pbXVtIHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMX21heCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBtYXhpbXVtIHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMX2ZyYW1lLCAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBsZW5ndGggb2YgZnJhbWUgdG8gY29tcHV0ZSBwaXRjaCAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMXzAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBvbGRfIG9wZW4tbG9vcCBwaXRjaCAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGdhaW4sICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBub3JtYWxpemUgY29ycmVsYXRpb24gb2YgaHBfd3NwIGZvciB0aGUgTGFnICovDQorCQlXb3JkMTYgKiBocF93c3BfbWVtLCAgICAgICAgICAgICAgICAgIC8qIGk6byAgIDogbWVtb3J5IG9mIHRoZSBoeXBhc3MgZmlsdGVyIGZvciBocF93c3BbXSAobGc9OSkgICAqLw0KKwkJV29yZDE2ICogb2xkX2hwX3dzcCwgICAgICAgICAgICAgICAgICAvKiBpOm8gICA6IGh5cGFzcyB3c3BbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHdnaHRfZmxnICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGlzIHdlaWdodGluZyBmdW5jdGlvbiB1c2VkICAgICAgICAgICAgICAgICAqLw0KKwkJKTsNCisNCitXb3JkMTYgTWVkX29sYWcoICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0IDogbWVkaWFuIG9mICA1IHByZXZpb3VzIG9wZW4tbG9vcCBsYWdzICAgICAgICovDQorCQlXb3JkMTYgcHJldl9vbF9sYWcsICAgICAgICAgICAgICAgICAgIC8qIGlucHV0ICA6IHByZXZpb3VzIG9wZW4tbG9vcCBsYWcgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG9sZF9vbF9sYWdbNV0NCisJICAgICAgICk7DQorDQordm9pZCBIcF93c3AoDQorCQlXb3JkMTYgd3NwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHdzcFtdICBzaWduYWwgICAgICAgKi8NCisJCVdvcmQxNiBocF93c3BbXSwgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogaHlwYXNzIHdzcFtdICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBsZW5naHQgb2Ygc2lnbmFsICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGZpbHRlciBtZW1vcnkgWzldICAgKi8NCisJICAgKTsNCisNCisjZW5kaWYgIC8vX19QX01FRF9PX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcF9tZWRfb2wudGFiIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9wX21lZF9vbC50YWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRiZDFkNQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcF9tZWRfb2wudGFiCkBAIC0wLDAgKzEsNDcgQEAKKw0KKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgfCBUYWJsZSBmb3IgZnVuY3Rpb24gUGl0Y2hfbWVkX29sKCkJCQkJICAgfA0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyBzdGF0aWMgV29yZDE2IGNvcnJ3ZWlnaHRbMTk5XT0gew0KKw0KKyAxMDc3MiwgMTA3OTQsIDEwODE2LCAxMDgzOSwgMTA4NjIsIDEwODg1LCAxMDkwOCwgMTA5MzIsIDEwOTU1LCAxMDk4MCwNCisgMTEwMDQsIDExMDI5LCAxMTA1NCwgMTEwNzksIDExMTA1LCAxMTEzMSwgMTExNTcsIDExMTgzLCAxMTIxMCwgMTEyMzgsDQorIDExMjY1LCAxMTI5MywgMTEzMjIsIDExMzUwLCAxMTM3OSwgMTE0MDksIDExNDM5LCAxMTQ2OSwgMTE1MDAsIDExNTMxLA0KKyAxMTU2MywgMTE1OTUsIDExNjI4LCAxMTY2MSwgMTE2OTQsIDExNzI4LCAxMTc2MywgMTE3OTgsIDExODM0LCAxMTg3MCwNCisgMTE5MDcsIDExOTQ1LCAxMTk4MywgMTIwMjIsIDEyMDYxLCAxMjEwMSwgMTIxNDIsIDEyMTg0LCAxMjIyNiwgMTIyNzAsDQorIDEyMzE0LCAxMjM1OCwgMTI0MDQsIDEyNDUxLCAxMjQ5OCwgMTI1NDcsIDEyNTk2LCAxMjY0NywgMTI2OTksIDEyNzUxLA0KKyAxMjgwNSwgMTI4NjEsIDEyOTE3LCAxMjk3NSwgMTMwMzQsIDEzMDk1LCAxMzE1NywgMTMyMjEsIDEzMjg2LCAxMzM1MywNCisgMTM0MjIsIDEzNDkzLCAxMzU2NiwgMTM2NDEsIDEzNzE5LCAxMzc5OCwgMTM4ODAsIDEzOTY1LCAxNDA1MywgMTQxNDMsDQorIDE0MjM3LCAxNDMzNCwgMTQ0MzUsIDE0NTM5LCAxNDY0OCwgMTQ3NjEsIDE0ODc5LCAxNTAwMiwgMTUxMzAsIDE1MjY1LA0KKyAxNTQwNiwgMTU1NTQsIDE1NzEwLCAxNTg3NCwgMTYwNTYsIDE2Mzg0LCAxNjM4NCwgMTYzODQsIDE2Mzg0LCAxNjM4NCwNCisgMTYzODQsIDE2Mzg0LCAxNjA1NiwgMTU4NzQsIDE1NzEwLCAxNTU1NCwgMTU0MDYsIDE1MjY1LCAxNTEzMCwgMTUwMDIsDQorIDE0ODc5LCAxNDc2MSwgMTQ2NDgsIDE0NTM5LCAxNDQzNSwgMTQzMzQsIDE0MjM3LCAxNDE0MywgMTQwNTMsIDEzOTY1LA0KKyAxMzg4MCwgMTM3OTgsIDEzNzE5LCAxMzY0MSwgMTM1NjYsIDEzNDkzLCAxMzQyMiwgMTMzNTMsIDEzMjg2LCAxMzIyMSwNCisgMTMxNTcsIDEzMDk1LCAxMzAzNCwgMTI5NzUsIDEyOTE3LCAxMjg2MSwgMTI4MDUsIDEyNzUxLCAxMjY5OSwgMTI2NDcsDQorIDEyNTk2LCAxMjU0NywgMTI0OTgsIDEyNDUxLCAxMjQwNCwgMTIzNTgsIDEyMzE0LCAxMjI3MCwgMTIyMjYsIDEyMTg0LA0KKyAxMjE0MiwgMTIxMDEsIDEyMDYxLCAxMjAyMiwgMTE5ODMsIDExOTQ1LCAxMTkwNywgMTE4NzAsIDExODM0LCAxMTc5OCwNCisgMTE3NjMsIDExNzI4LCAxMTY5NCwgMTE2NjEsIDExNjI4LCAxMTU5NSwgMTE1NjMsIDExNTMxLCAxMTUwMCwgMTE0NjksDQorIDExNDM5LCAxMTQwOSwgMTEzNzksIDExMzUwLCAxMTMyMiwgMTEyOTMsIDExMjY1LCAxMTIzOCwgMTEyMTAsIDExMTgzLA0KKyAxMTE1NywgMTExMzEsIDExMTA1LCAxMTA3OSwgMTEwNTQsIDExMDI5LCAxMTAwNCwgMTA5ODAsIDEwOTU1LCAxMDkzMiwNCisgMTA5MDgsIDEwODg1LCAxMDg2MiwgMTA4MzksIDEwODE2LCAxMDc5NCwgMTA3NzIsIDEwNzUwLCAxMDcyOH07DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xX2dhaW4yLnRhYiBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcV9nYWluMi50YWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEwZGVlZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcV9nYWluMi50YWIKQEAgLTAsMCArMSwyMjggQEAKKw0KKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogVGFibGVzIGZvciBmdW5jdGlvbiBxX2dhaW4yKCkgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIGdfcGl0Y2goUTE0KSwgIGdfY29kZShRMTEpICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogcGl0Y2ggZ2FpbiBhcmUgb3JkZXJlZCBpbiB0YWJsZSB0byByZWR1Y2UgY29tcGxleGl0eSAqDQorICogZHVyaW5nIHF1YW50aXphdGlvbiBvZiBnYWlucy4gICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNkZWZpbmUgbmJfcXVhX2dhaW42YiAgNjQgICAgIC8qIE51bWJlciBvZiBxdWFudGl6YXRpb24gbGV2ZWwgKi8NCisjZGVmaW5lIG5iX3F1YV9nYWluN2IgIDEyOCAgICAvKiBOdW1iZXIgb2YgcXVhbnRpemF0aW9uIGxldmVsICovDQorDQorDQorc3RhdGljIFdvcmQxNiB0X3F1YV9nYWluNmJbNjQqMl0gPSB7DQorICAgMTU2NiwgIDEzMzIsDQorICAgMTU3NywgIDM1NTcsDQorICAgMzA3MSwgIDY0OTAsDQorICAgNDE5MywgMTAxNjMsDQorICAgNDQ5NiwgIDI1MzQsDQorICAgNTAxOSwgIDQ0ODgsDQorICAgNTU4NiwgMTU2MTQsDQorICAgNTcyNSwgIDE0MjIsDQorICAgNjQ1MywgICA1ODAsDQorICAgNjcyNCwgIDY4MzEsDQorICAgNzY1NywgIDM1MjcsDQorICAgODA3MiwgIDIwOTksDQorICAgODIzMiwgIDUzMTksDQorICAgODgyNywgIDg3NzUsDQorICAgOTc0MCwgIDI4NjgsDQorICAgOTg1NiwgIDE0NjUsDQorICAxMDA4NywgMTI0ODgsDQorICAxMDI0MSwgIDQ0NTMsDQorICAxMDg1OSwgIDY2MTgsDQorICAxMTMyMSwgIDM1ODcsDQorICAxMTQxNywgIDE4MDAsDQorICAxMTY0MywgIDI0MjgsDQorICAxMTcxOCwgICA5ODgsDQorICAxMjMxMiwgIDUwOTMsDQorICAxMjUyMywgIDg0MTMsDQorICAxMjU3NCwgMjYyMTQsDQorICAxMjYwMSwgIDMzOTYsDQorICAxMzE3MiwgIDE2MjMsDQorICAxMzI4NSwgIDI0MjMsDQorICAxMzQxOCwgIDYwODcsDQorICAxMzQ1OSwgMTI4MTAsDQorICAxMzY1NiwgIDM2MDcsDQorICAxNDExMSwgIDQ1MjEsDQorICAxNDE0NCwgIDEyMjksDQorICAxNDQyNSwgIDE4NzEsDQorICAxNDQzMSwgIDcyMzQsDQorICAxNDQ0NSwgIDI4MzQsDQorICAxNDYyOCwgMTAwMzYsDQorICAxNDg2MCwgMTc0OTYsDQorICAxNTE2MSwgIDM2MjksDQorICAxNTIwOSwgIDU4MTksDQorICAxNTI5OSwgIDIyNTYsDQorICAxNTUxOCwgIDQ3MjIsDQorICAxNTY2MywgIDEwNjAsDQorICAxNTc1OSwgIDc5NzIsDQorICAxNTkzOSwgMTE5NjQsDQorICAxNjAyMCwgIDI5OTYsDQorICAxNjA4NiwgIDE3MDcsDQorICAxNjUyMSwgIDQyNTQsDQorICAxNjU3NiwgIDYyMjQsDQorICAxNjg5NCwgIDIzODAsDQorICAxNjkwNiwgICA2ODEsDQorICAxNzIxMywgIDg0MDYsDQorICAxNzYxMCwgIDM0MTgsDQorICAxNzg5NSwgIDUyNjksDQorICAxODE2OCwgMTE3NDgsDQorICAxODIzMCwgIDE1NzUsDQorICAxODYwNywgMzI3NjcsDQorICAxODcyOCwgMjE2ODQsDQorICAxOTEzNywgIDI1NDMsDQorICAxOTQyMiwgIDY1NzcsDQorICAxOTQ0NiwgIDQwOTcsDQorICAxOTQ1MCwgIDkwNTYsDQorICAyMDM3MSwgMTQ4ODV9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgdF9xdWFfZ2FpbjdiWzEyOCoyXSA9IHsNCisgICAgMjA0LCAgIDQ0MSwNCisgICAgNDY0LCAgMTk3NywNCisgICAgODY5LCAgMTA3NywNCisgICAxMDcyLCAgMzA2MiwNCisgICAxMjgxLCAgNDc1OSwNCisgICAxNjQ3LCAgMTUzOSwNCisgICAxODQ1LCAgNzAyMCwNCisgICAxODUzLCAgIDYzNCwNCisgICAxOTk1LCAgMjMzNiwNCisgICAyMzUxLCAxNTQwMCwNCisgICAyNjYxLCAgMTE2NSwNCisgICAyNzAyLCAgMzkwMCwNCisgICAyNzEwLCAxMDEzMywNCisgICAzMTk1LCAgMTc1MiwNCisgICAzNDk4LCAgMjYyNCwNCisgICAzNjYzLCAgIDg0OSwNCisgICAzOTg0LCAgNTY5NywNCisgICA0MjE0LCAgMzM5OSwNCisgICA0NDE1LCAgMTMwNCwNCisgICA0Njk1LCAgMjA1NiwNCisgICA1Mzc2LCAgNDU1OCwNCisgICA1Mzg2LCAgIDY3NiwNCisgICA1NTE4LCAyMzU1NCwNCisgICA1NTY3LCAgNzc5NCwNCisgICA1NjQ0LCAgMzA2MSwNCisgICA1NjcyLCAgMTUxMywNCisgICA1OTU3LCAgMjMzOCwNCisgICA2NTMzLCAgMTA2MCwNCisgICA2ODA0LCAgNTk5OCwNCisgICA2ODIwLCAgMTc2NywNCisgICA2OTM3LCAgMzgzNywNCisgICA3Mjc3LCAgIDQxNCwNCisgICA3MzA1LCAgMjY2NSwNCisgICA3NDY2LCAxMTMwNCwNCisgICA3OTQyLCAgIDc5NCwNCisgICA4MDA3LCAgMTk4MiwNCisgICA4MDA3LCAgMTM2NiwNCisgICA4MzI2LCAgMzEwNSwNCisgICA4MzM2LCAgNDgxMCwNCisgICA4NzA4LCAgNzk1NCwNCisgICA4OTg5LCAgMjI3OSwNCisgICA5MDMxLCAgMTA1NSwNCisgICA5MjQ3LCAgMzU2OCwNCisgICA5MjgzLCAgMTYzMSwNCisgICA5NjU0LCAgNjMxMSwNCisgICA5ODExLCAgMjYwNSwNCisgIDEwMTIwLCAgIDY4MywNCisgIDEwMTQzLCAgNDE3OSwNCisgIDEwMjQ1LCAgMTk0NiwNCisgIDEwMzM1LCAgMTIxOCwNCisgIDEwNDY4LCAgOTk2MCwNCisgIDEwNjUxLCAgMzAwMCwNCisgIDEwOTUxLCAgMTUzMCwNCisgIDEwOTY5LCAgNTI5MCwNCisgIDExMjAzLCAgMjMwNSwNCisgIDExMzI1LCAgMzU2MiwNCisgIDExNzcxLCAgNjc1NCwNCisgIDExODM5LCAgMTg0OSwNCisgIDExOTQxLCAgNDQ5NSwNCisgIDExOTU0LCAgMTI5OCwNCisgIDExOTc1LCAxNTIyMywNCisgIDExOTc3LCAgIDg4MywNCisgIDExOTg2LCAgMjg0MiwNCisgIDEyNDM4LCAgMjE0MSwNCisgIDEyNTkzLCAgMzY2NSwNCisgIDEyNjM2LCAgODM2NywNCisgIDEyNjU4LCAgMTU5NCwNCisgIDEyODg2LCAgMjYyOCwNCisgIDEyOTg0LCAgNDk0MiwNCisgIDEzMTQ2LCAgMTExNSwNCisgIDEzMjI0LCAgIDUyNCwNCisgIDEzMzQxLCAgMzE2MywNCisgIDEzMzk5LCAgMTkyMywNCisgIDEzNTQ5LCAgNTk2MSwNCisgIDEzNjA2LCAgMTQwMSwNCisgIDEzNjU1LCAgMjM5OSwNCisgIDEzNzgyLCAgMzkwOSwNCisgIDEzODY4LCAxMDkyMywNCisgIDE0MjI2LCAgMTcyMywNCisgIDE0MjMyLCAgMjkzOSwNCisgIDE0Mjc4LCAgNzUyOCwNCisgIDE0NDM5LCAgNDU5OCwNCisgIDE0NDUxLCAgIDk4NCwNCisgIDE0NDU4LCAgMjI2NSwNCisgIDE0NzkyLCAgMTQwMywNCisgIDE0ODE4LCAgMzQ0NSwNCisgIDE0ODk5LCAgNTcwOSwNCisgIDE1MDE3LCAxNTM2MiwNCisgIDE1MDQ4LCAgMTk0NiwNCisgIDE1MDY5LCAgMjY1NSwNCisgIDE1NDA1LCAgOTU5MSwNCisgIDE1NDA1LCAgNDA3OSwNCisgIDE1NTcwLCAgNzE4MywNCisgIDE1Njg3LCAgMjI4NiwNCisgIDE1NjkxLCAgMTYyNCwNCisgIDE1Njk5LCAgMzA2OCwNCisgIDE1NzcyLCAgNTE0OSwNCisgIDE1ODY4LCAgMTIwNSwNCisgIDE1OTcwLCAgIDY5NiwNCisgIDE2MjQ5LCAgMzU4NCwNCisgIDE2MzM4LCAgMTkxNywNCisgIDE2NDI0LCAgMjU2MCwNCisgIDE2NDgzLCAgNDQzOCwNCisgIDE2NTI5LCAgNjQxMCwNCisgIDE2NjIwLCAxMTk2NiwNCisgIDE2ODM5LCAgODc4MCwNCisgIDE3MDMwLCAgMzA1MCwNCisgIDE3MDMzLCAxODMyNSwNCisgIDE3MDkyLCAgMTU2OCwNCisgIDE3MTIzLCAgNTE5NywNCisgIDE3MzUxLCAgMjExMywNCisgIDE3Mzc0LCAgIDk4MCwNCisgIDE3NTY2LCAyNjIxNCwNCisgIDE3NjA5LCAgMzkxMiwNCisgIDE3NjM5LCAzMjc2NywNCisgIDE4MTUxLCAgNzg3MSwNCisgIDE4MTk3LCAgMjUxNiwNCisgIDE4MjAyLCAgNTY0OSwNCisgIDE4Njc5LCAgMzI4MywNCisgIDE4OTMwLCAgMTM3MCwNCisgIDE5MjcxLCAxMzc1NywNCisgIDE5MzE3LCAgNDEyMCwNCisgIDE5NDYwLCAgMTk3MywNCisgIDE5NjU0LCAxMDAxOCwNCisgIDE5NzY0LCAgNjc5MiwNCisgIDE5OTEyLCAgNTEzNSwNCisgIDIwMDQwLCAgMjg0MSwNCisgIDIxMjM0LCAxOTgzM307DQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xX3B1bHNlLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3FfcHVsc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWY1NTI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xX3B1bHNlLmgKQEAgLTAsMCArMSw2NiBAQAorDQorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFFfUFVMU0UuSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiBDb2RpbmcgYW5kIGRlY29kaW5nIG9mIGFsZ2VicmFpYyBjb2RlYm9vawkJCSAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWZuZGVmICBfX1FfUFVMU0VfSF9fDQorI2RlZmluZSAgX19RX1BVTFNFX0hfXw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorDQorV29yZDMyIHF1YW50XzFwX04xKCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gKE4rMSkgYml0cyAgICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAgICAgICAqLw0KKwkJV29yZDE2IE4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorDQorV29yZDMyIHF1YW50XzJwXzJOMSggICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gKDIqTikrMSBiaXRzICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3MxLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxICAgICAqLw0KKwkJV29yZDE2IHBvczIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDIgICAgICovDQorCQlXb3JkMTYgTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCisNCitXb3JkMzIgcXVhbnRfM3BfM04xKCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiAoMypOKSsxIGJpdHMgICAgICAgICAqLw0KKwkJV29yZDE2IHBvczEsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEgICAgICovDQorCQlXb3JkMTYgcG9zMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMiAgICAgKi8NCisJCVdvcmQxNiBwb3MzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAzICAgICAqLw0KKwkJV29yZDE2IE4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorDQorV29yZDMyIHF1YW50XzRwXzROMSggICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gKDQqTikrMSBiaXRzICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3MxLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxICAgICAqLw0KKwkJV29yZDE2IHBvczIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDIgICAgICovDQorCQlXb3JkMTYgcG9zMywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMyAgICAgKi8NCisJCVdvcmQxNiBwb3M0LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSA0ICAgICAqLw0KKwkJV29yZDE2IE4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorDQorV29yZDMyIHF1YW50XzRwXzROKCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gNCpOIGJpdHMgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3NbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxLi40ICAqLw0KKwkJV29yZDE2IE4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorDQorV29yZDMyIHF1YW50XzVwXzVOKCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gNSpOIGJpdHMgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3NbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxLi41ICAqLw0KKwkJV29yZDE2IE4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorDQorV29yZDMyIHF1YW50XzZwXzZOXzIoICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gKDYqTiktMiBiaXRzICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3NbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxLi42ICAqLw0KKwkJV29yZDE2IE4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorDQorDQorI2VuZGlmIC8vX19RX1BVTFNFX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcWlzZl9ucy50YWIgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3Fpc2ZfbnMudGFiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZjBkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3Fpc2ZfbnMudGFiCkBAIC0wLDAgKzEsMzQ3IEBACisNCisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBxaXNmX25zLmgNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogUXVhbnRpemF0aW9uIHRhYmxlcyBmb3Igc3BsaXQgYnkgNSBWUSBvZiBJU0ZzIGZvciBhIGJhY2tncm91bmQgbm9pc2UgZGF0YWJhc2UNCisgKiBWZXJzaW9uIHdoaXRoIG5vIHByZWRpY3Rpb24NCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNkZWZpbmUgT1JERVIgICAxNiAgICAgICAgICAgIC8qIG9yZGVyIG9mIGxpbmVhciBwcmVkaWN0aW9uIGZpbHRlciAqLw0KKyNkZWZpbmUgSVNGX0dBUCAxMjgNCisNCisjZGVmaW5lIFNJWkVfQktfTk9JU0UxICA2NA0KKyNkZWZpbmUgU0laRV9CS19OT0lTRTIgIDY0DQorI2RlZmluZSBTSVpFX0JLX05PSVNFMyAgNjQNCisjZGVmaW5lIFNJWkVfQktfTk9JU0U0ICAzMg0KKyNkZWZpbmUgU0laRV9CS19OT0lTRTUgIDMyDQorDQorDQorLyogbWVhbnMgb2YgSVNGcyAqLw0KKyBzdGF0aWMgV29yZDE2IG1lYW5faXNmX25vaXNlW09SREVSXSA9IHsNCisNCisgICA0NzgsICAxMTAwLCAgMjIxMywgIDMyNjcsICA0MjE5LCAgNTIyMiwgIDYxOTgsICA3MjQwLA0KKyAgODIyOSwgIDkxNTMsIDEwMDk4LCAxMTEwOCwgMTIxNDQsIDEzMTg0LCAxNDE2NSwgIDM4MDN9Ow0KKw0KKw0KKy8qIDI4IGJpdHMgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogIGlzZiBjb2RlYm9va3M6ICBzcGxpdC1ieS01IFZRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgY29kZWJvb2sgICB2ZWN0b3IgZGltZW5zaW9uICAgIG51bWJlciBvZiB2ZWN0b3JzICAgICAgICAgICAgICAgICAqDQorICogIH5+fn5+fn5+ICAgfn5+fn5+fn5+fn5+fn5+fiAgICB+fn5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAxICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMiAgICAgICAgICAgIDMgICAgICAgICAgICAgICAgICA2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIDMgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICA0ICAgICAgICAgICAgNCAgICAgICAgICAgICAgICAgIDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgNSAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAxc3Qgc3BsaXQ6ICAgaXNmMCB0byBpc2YxDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKw0KKyBzdGF0aWMgV29yZDE2IGRpY28xX2lzZl9ub2lzZVtTSVpFX0JLX05PSVNFMSoyXSA9IHsNCisNCisgIC0yNjksICAtNjczLA0KKyAgLTIyMiwgIC01MzcsDQorICAtMjMzLCAgLTQzMCwNCisgIC0xMzgsICAtNDUxLA0KKyAgLTIxMiwgIC0zMzEsDQorICAtMTkyLCAgLTI0MSwNCisgICAtODcsICAtMjMxLA0KKyAgLTE5MSwgIC0xMjgsDQorICAgLTcwLCAgLTEwNiwNCisgIC0xNjQsICAgIC02LA0KKyAgICA3NCwgIC0xNzksDQorICAgIDI3LCAgIC0zMywNCisgIC0xMDIsICAgIDc0LA0KKyAgLTE2MiwgICAxMTUsDQorICAgLTk0LCAgIDE3MiwNCisgICAgLTYsICAgMTMwLA0KKyAgLTE0MywgICAyMzQsDQorICAgIDE0LCAgIDIxOCwNCisgICAtNjUsICAgMjcwLA0KKyAgICA4OCwgICAxODIsDQorICAtMTI0LCAgIDM0MSwNCisgICAtNDQsICAgMzgxLA0KKyAgICAzOCwgICAzMzUsDQorICAgMTE3LCAgIDI3NCwNCisgIC0xMTIsICAgNDU0LA0KKyAgICA3NCwgICA0MzEsDQorICAgIC01LCAgIDQ4OCwNCisgICAxNzUsICAgMzg0LA0KKyAgIC04MywgICA1NjEsDQorICAgMTIyLCAgIDUyOSwNCisgICAgMjEsICAgNjAxLA0KKyAgIDIyOSwgICA0ODEsDQorICAgMjMxLCAgIDMwMywNCisgICAyMjYsICAgNjA4LA0KKyAgIDMwMCwgICAzNzIsDQorICAgMjEwLCAgIDE4NywNCisgICAzMDYsICAgMjY1LA0KKyAgIDMyOCwgICA0NzMsDQorICAgMzgyLCAgIDMzMSwNCisgICAzNzEsICAgMTMyLA0KKyAgIDEzOSwgICAgNTgsDQorICAgMzY1LCAgICAyMSwNCisgICAyNTAsICAgLTgyLA0KKyAgIDQ0MywgICAyMTgsDQorICAgNDgzLCAgIDExMCwNCisgICA0MjYsICAgNDE1LA0KKyAgIDU3OSwgICAyMjIsDQorICAgNTE4LCAgIDMzMywNCisgICA1NzMsICAgNDQ4LA0KKyAgIDQ1NSwgICA1MjksDQorICAgNjg1LCAgIDMyOSwNCisgICAzMzIsICAgNTgwLA0KKyAgIDU5NSwgICA1OTMsDQorICAgNDY4LCAgIDY0NSwNCisgICA3NjIsICAgNTE3LA0KKyAgIDMyNiwgICA3MDksDQorICAgNDg1LCAgIDc5MywNCisgICAxMzAsICAgNjg0LA0KKyAgIDY3MSwgICA3MzcsDQorICAgMzU0LCAgIDg3NiwNCisgICAgODgsICAgODA2LA0KKyAgIC02NSwgICA3MDYsDQorICAgLTM1LCAgMTAxNiwNCisgICAyNjYsICAxMTIzfTsNCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAybmQgc3BsaXQ6ICAgaXNmMiB0byBpc2Y0DQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyBzdGF0aWMgV29yZDE2IGRpY28yX2lzZl9ub2lzZVtTSVpFX0JLX05PSVNFMiozXSA9IHsNCisNCisgIC04MjQsICAtODg0LCAgLTk0OSwNCisgIC04MDUsICAtNDU2LCAgLTQxOCwNCisgIC00NDIsICAtNDM4LCAgLTU0MSwNCisgIC0yMTcsICAtNTc4LCAgLTc5MywNCisgIC0xNjgsICAtNDQ0LCAgLTU4MiwNCisgIC0yODcsICAtNDkyLCAgLTI3NCwNCisgIC01NTIsICAtMjk3LCAgLTMwMCwNCisgIC0xNjMsICAtMzMzLCAgLTM1OCwNCisgIC0zNzAsICAtMjMyLCAgLTIzMiwNCisgIC0xNzUsICAtMzU4LCAgLTE1OSwNCisgIC0zODEsICAgLTIxLCAgLTM1NywNCisgIC0xODQsICAtMTU5LCAgLTE2MiwNCisgICAtNTMsICAtMTkxLCAgLTI4MCwNCisgICAgMTgsICAtMjY3LCAgLTIxNSwNCisgIC0xMzgsICAgIDYxLCAgLTI4MywNCisgICAgNzEsICAgLTk1LCAgLTI5NCwNCisgICAgMTMsICAtMTU2LCAgLTU0NiwNCisgICAgIDAsICAgLTgzLCAgIC03OSwNCisgICAgNDQsICAgIDk3LCAgLTMxNiwNCisgICAxNzgsICAgLTUyLCAgLTIxMywNCisgICAyMjIsICAtMjYxLCAgLTQyMiwNCisgICAyMzcsICAtMTE4LCAgIC00NCwNCisgICAxNDEsICAgMTQ1LCAgLTEzMiwNCisgICAzNjMsICAgIDgxLCAgLTI4NywNCisgICAyMTMsICAgIDY1LCAgICAzNCwNCisgIC0xMDcsICAgIDk0LCAgICAtNSwNCisgICAgOTEsICAgLTI5LCAgIDEyNiwNCisgIC0zNTUsICAgIDUxLCAgIC00MSwNCisgIC0yMTksICAgLTc2LCAgIDE0NSwNCisgICAtNjMsICAgMTAwLCAgIDI0NCwNCisgIC03MTksICAgIDQ0LCAgICAyNywNCisgIC01NzIsICAtMTI0LCAgIDE1NSwNCisgIC00MjMsICAgMTMzLCAgIDMxNSwNCisgIC05MTcsICAgIDcxLCAgIDIyNCwNCisgIC0yNjgsICAgMzE4LCAgIDEzMSwNCisgICAtOTMsICAtMTkwLCAgIDQyMCwNCisgICAtOTcsICAgMTIyLCAgIDQ5MSwNCisgICAtNzksICAgMzE3LCAgIDM1NSwNCisgICAxMzAsICAgMTAwLCAgIDMyNSwNCisgICAgODYsICAtMjkzLCAgIDIxMCwNCisgICAxMzMsICAgMjU4LCAgIDE2MSwNCisgICAxNzYsICAgLTczLCAgIDQ2NSwNCisgICAxOTUsICAgMzAwLCAgIDM4NCwNCisgICAzNDgsICAgIDIyLCAgIDIyMSwNCisgICAzNzYsICAgMTgzLCAgIDQwOSwNCisgICAzNzcsICAgMjg2LCAgIDIwMiwNCisgICAyNDIsICAgMjEzLCAgIDY1OSwNCisgICAyNTcsICAgNTY1LCAgIDI0OCwNCisgICAzNDQsICAgNDA4LCAgIC03NiwNCisgICA0MDUsICAgNDQwLCAgIDUwOSwNCisgICA2MTIsICAgMzg1LCAgIDM3OSwNCisgICA1MzYsICAgNjA3LCAgIDIxNiwNCisgICAtNTYsICAgNTgyLCAgIDE5MiwNCisgICAxMDAsICAgNTE3LCAgIDU2NywNCisgIC0zNjUsICAgNDQ4LCAgIDQ0NSwNCisgICA3MjgsICAgMzQ3LCAgICAxMCwNCisgICA1MDUsICAgMzU3LCAgIDc1OSwNCisgICA2MzYsICAgNTgyLCAgIDY1OCwNCisgICAzMzUsICAgNTE3LCAgIDg1MiwNCisgICAzNzgsICAgODA5LCAgIDU3MiwNCisgIC0xOTUsICAgODc4LCAgIDgyOSwNCisgICA1MjksICAgNzA3LCAgIDk4NywNCisgICA5MTgsICAgNzI2LCAgIDM5MiwNCisgIDEyNTAsICAgOTk3LCAgMTA2M307DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogM3JkIHNwbGl0OiAgIGlzZjUgdG8gaXNmNw0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisgc3RhdGljIFdvcmQxNiBkaWNvM19pc2Zfbm9pc2VbU0laRV9CS19OT0lTRTMqM10gPSB7DQorDQorICAtODA1LCAgLTgzOCwgIC03NzQsDQorICAtNTIyLCAgLTYyNywgIC04MjgsDQorICAtNDc3LCAgLTQ4NiwgIC02MDMsDQorICAtMjk1LCAgLTQ4MSwgIC02MzQsDQorICAtMzY2LCAgLTM4NCwgIC0zOTMsDQorICAtMTg2LCAgLTQxNCwgIC0zOTYsDQorICAtMjM3LCAgLTM5NCwgIC0xMDYsDQorICAtMjUyLCAgLTIwMiwgIC0yNzUsDQorICAgLTYxLCAgLTE3NywgIC00NDIsDQorICAgLTg0LCAgLTE5OCwgIC0xOTksDQorICAtMTc5LCAgLTEyNSwgICAtMzEsDQorICAgLTcyLCAgIC00NywgIC0xNjMsDQorICAtMjk4LCAgLTIyMCwgICAyMTUsDQorICAgLTY0LCAgLTE2OCwgICAyNTEsDQorICAtMTMzLCAgIDE1NiwgICAtNTksDQorICAgLTMwLCAgICAtMiwgICAxMjcsDQorICAgIDU0LCAgICA2NiwgICAtNjEsDQorICAtMjMzLCAgICAyMSwgICAyNTEsDQorICAgMjA5LCAgIC01MCwgICAgMzIsDQorICAgIDMzLCAgIDE5NCwgICAxMzYsDQorICAtMTE3LCAgIC0xOCwgICA0NzUsDQorICAgMjAyLCAgICA0NiwgICAzMDksDQorICAgMjU2LCAgIDE4NSwgICAgNTMsDQorICAgIDM1LCAgIDIwMCwgICAzOTAsDQorICAgMjAwLCAgIDI2MywgICAyNDIsDQorICAtMjE2LCAgIDMwMiwgICAyOTQsDQorICAgMTI4LCAgIDM1OCwgICAgIDAsDQorICAgIDE5LCAgIDQzMSwgICAyODcsDQorICAgMjI0LCAgIDQ0NywgICAyODAsDQorICAgMzY3LCAgIDE2NSwgICAyMTMsDQorICAgMzk3LCAgIDMxNCwgICAzMTksDQorICAgMzgzLCAgIDM3OSwgICAgNzUsDQorICAgMjc3LCAgIDMyNSwgICA0NjIsDQorICAgMzk0LCAgIDUwNSwgICAzMzQsDQorICAgMjUxLCAgICA5OCwgIC0yMTMsDQorICAgNDUwLCAgIDE1MywgICA0NDgsDQorICAgNTY1LCAgIDIyNiwgICAgNzYsDQorICAgNDcwLCAgIDM4MywgICA1MDIsDQorICAgNjM1LCAgIDM5MCwgICAyNzgsDQorICAgMjM3LCAgIDEzNSwgICA2MjAsDQorICAgMzQyLCAgIDQwMSwgICA2NDksDQorICAgMzMxLCAgIDU1MSwgICA1MTgsDQorICAgMTMwLCAgIDQxOCwgICA1OTIsDQorICAgNTMxLCAgIDMwNiwgICA3MzcsDQorICAgNzI5LCAgIDM4OSwgICA1ODAsDQorICAgNDk3LCAgIDU1NywgICA2OTksDQorICAgMjk2LCAgIDM4MywgICA4NzQsDQorICAgMjgzLCAgIDYyNCwgICA3NTksDQorICAgMTI2LCAgIDYyMiwgICA0NzYsDQorICAgNTU5LCAgIDU5NSwgICA0NzIsDQorICAgMzgyLCAgIDc3MCwgICA2MTYsDQorICAgNzE5LCAgIDYxMywgICA3NDUsDQorICAgNTQwLCAgIDYzOSwgICA5MjgsDQorICAgNTE3LCAgIDgyNiwgICA4MDEsDQorICAgNjg0LCAgIDgxMSwgICA2MDQsDQorICAgNzUyLCAgIDc4NiwgICA4NTcsDQorICAgOTMzLCAgIDY2MSwgICAzNTAsDQorICAgNjk0LCAgIDQ1MCwgIDEwNjEsDQorICAgNTYyLCAgIDkxMSwgIDEwNTEsDQorICAgODI0LCAgIDgxMywgIDExMDQsDQorICAgNzU4LCAgMTA0NywgICA4ODIsDQorICAxMTQwLCAgIDkxNywgICA4ODksDQorICAxMDM5LCAgMTI0NiwgIDE0MjYsDQorICAxNDgzLCAgMTY2NiwgIDE4NzZ9Ow0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIDR0aCBzcGxpdDogICBpc2Y4IHRvIGlzZjExDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyBzdGF0aWMgV29yZDE2IGRpY280X2lzZl9ub2lzZVtTSVpFX0JLX05PSVNFNCo0XSA9IHsNCisNCisgIC03NzYsICAtODU0LCAgLTg5MSwgIC05MjAsDQorICAtNTUyLCAgLTYxMCwgIC02NjMsICAtNzQxLA0KKyAgLTMyMSwgIC0zNzAsICAtNDc2LCAgLTU2NSwNCisgICAyNzQsICAtMTYwLCAgLTQ1NiwgICAyMDEsDQorICAgMjY1LCAgICA2NywgIC0xNjAsICAtMzA2LA0KKyAgICAtOCwgIC0yMTAsICAgIDc5LCAgIDI3MiwNCisgICAxNjMsICAgMjM2LCAgIDMwNywgICAzMDgsDQorICAgNTc4LCAgIDMxNywgICAgNjQsICAgMjk4LA0KKyAgICAtOSwgICAxOTcsICAgMzQyLCAgIDYyMCwNCisgICAzNDMsICAgMjMyLCAgIDMxNCwgICA2MjIsDQorICAgMTczLCAgIDE0OSwgICA1NDgsICAgNTI3LA0KKyAgIDM1NiwgICAzNzAsICAgNDgxLCAgIDM3NiwNCisgICAxMzUsICAgNDQ0LCAgIDQ4OCwgICA1NTYsDQorICAgMzkxLCAgIDQ3MSwgICA0ODcsICAgNjUzLA0KKyAgIDIyOCwgICA0MjQsICAgNTc2LCAgIDgzNSwNCisgICA0MjIsICAgMzcyLCAgIDcyMiwgICA2ODIsDQorICAgMjk1LCAgIDY3MywgICA2OTMsICAgNjM1LA0KKyAgIDUzOSwgICA1OTYsICAgNTkwLCAgIDQ0OSwNCisgICA0NzUsICAgNjE4LCAgIDY1OSwgICA4MTgsDQorICAgNzM1LCAgIDUxNywgICA0OTEsICAgNjczLA0KKyAgIDYwMiwgICAzNDYsICAgMjU3LCAgIDg3NywNCisgICA2MjUsICAgNjM1LCAgIDg0OSwgICA3MjAsDQorICAgNzI3LCAgIDgxOCwgICA2OTgsICAgNTk1LA0KKyAgIDY1MywgICA0ODEsICAgNjkwLCAgMTEzOSwNCisgICA4MTQsICAgNzYyLCAgIDcwNCwgICA5MDgsDQorICAgNTA3LCAgIDc0NywgICA4OTgsICAgOTM2LA0KKyAgIDg0OCwgICA4NTUsICAgOTI0LCAgIDc4NSwNCisgICA2NDYsICAxMDM3LCAgIDg4MiwgICA3OTUsDQorICAgNzcyLCAgIDg0NSwgIDEwMjQsICAxMTUxLA0KKyAgMTEzMywgICA5ODMsICAgODE4LCAgIDkyMSwNCisgICA5NDAsICAxMDY4LCAgMTI1MiwgIDEzMDIsDQorICAxNTg4LCAgMTc2NywgIDE3MTgsICAxNTEzfTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiA1dGggc3BsaXQ6ICAgaXNmMTIgdG8gaXNmMTUNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorIHN0YXRpYyBXb3JkMTYgZGljbzVfaXNmX25vaXNlW1NJWkVfQktfTk9JU0U1KjRdID0gew0KKyAgLTgxMCwgIC04NzksICAtOTQ1LCAgLTI1NCwNCisgICAyNDgsICAgMTg0LCAgIDY3MSwgICAxMjgsDQorICAgMjg4LCAgIDcwMywgICA5MTgsICAgIDk5LA0KKyAgIDY1OCwgICA1NTgsICAgNjYyLCAgIDIxOSwNCisgICA1NTIsICAgNTg1LCAgIDkxMCwgICAyMDgsDQorICAgNTU5LCAgIDgwNCwgICA3NTksICAgMTE5LA0KKyAgIDYwNiwgICA3NzQsICAgOTIxLCAgLTEzOSwNCisgICA3ODIsICAgNzYxLCAgIDc0OCwgICAyMDgsDQorICAgNzU2LCAgIDcwOCwgICA5ODMsICAgIDU2LA0KKyAgIDU0NCwgICA4NjQsICAxMDEwLCAgIDE1MiwNCisgICA3MzcsICAgNjk4LCAgIDk4NywgICAyOTksDQorICAgNzcxLCAgIDkyNCwgICA4NzksICAgMTAzLA0KKyAgIDUzNiwgICA3ODUsICAgOTYxLCAgIDQwNSwNCisgICA2NjcsICAgOTE2LCAgIDgwMSwgICAzMjgsDQorICAgNzM4LCAgIDcwNSwgICA3NzMsICAgNDM5LA0KKyAgIDgyMywgICA4NzEsICAgOTkyLCAgIDM1NSwNCisgICA2NDAsICAxMDA0LCAgMTA1MiwgICAzNjksDQorICAgNzI0LCAgIDgyMiwgICA5NDksICAgNTk3LA0KKyAgIDQxNSwgICA2NTUsICAgNzI5LCAgIDQ4MiwNCisgIDEwMDksICAgODk2LCAgIDc5MywgICAzNjMsDQorICAgOTA4LCAgIDgwMywgICA2ODcsICAgLTI1LA0KKyAgMTAxNiwgICA4MzgsICAxMDExLCAgIDE4OSwNCisgICA5NDcsICAxMTEyLCAgIDk0MiwgICAyMjIsDQorICAgOTE0LCAgMTA0OSwgICA5ODEsICAgNTI3LA0KKyAgIDk1NiwgICA5ODcsICAxMDExLCAgLTEyMCwNCisgICA3ODEsICAxMDQ5LCAgMTEyMSwgICAgOTIsDQorICAxMTc4LCAgMTA1MywgICA4ODQsICAgIDQ3LA0KKyAgMTEyMywgIDEwNTksICAxMTgyLCAgIDExOCwNCisgICA5MzMsICAgOTcyLCAgMTI3NywgICAzNTcsDQorICAxMTA5LCAgIDkxOCwgIDExMDEsICAgNTAzLA0KKyAgMTAzOSwgIDEyODYsICAxMjIwLCAgIDMxNywNCisgIDEzNTEsICAxMjA3LCAgMTAxMCwgICAzMjZ9Ow0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcXBpc2ZfMnMudGFiIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xcGlzZl8ycy50YWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4NjlhNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcXBpc2ZfMnMudGFiCkBAIC0wLDAgKzEsMTM2MCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgcXBpc2ZfMnMuaA0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiBRdWFudGl6YXRpb24gdGFibGVzIGZvciB0d28tc3RhZ2Ugb2YgSVNGcyAoc3BsaXQgYnkgMiBpbiAxc3Qgc3RhZ2UpDQorICogVmVyc2lvbiB3aGl0aCBwcmVkaWN0aW9uIE1VID0gMC4yNQ0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2RlZmluZSBPUkRFUiAgIDE2ICAgICAgICAgICAgLyogb3JkZXIgb2YgbGluZWFyIHByZWRpY3Rpb24gZmlsdGVyICovDQorI2RlZmluZSBJU0ZfR0FQIDEyOCAgICAgICAgICAgLyogNTAgSHogKi8NCisjZGVmaW5lIE5fU1VSViAgNA0KKw0KKyNkZWZpbmUgU0laRV9CSzEgIDI1Ng0KKyNkZWZpbmUgU0laRV9CSzIgIDI1Ng0KKyNkZWZpbmUgU0laRV9CSzIxIDY0DQorI2RlZmluZSBTSVpFX0JLMjIgMTI4DQorI2RlZmluZSBTSVpFX0JLMjMgMTI4DQorI2RlZmluZSBTSVpFX0JLMjQgMzINCisjZGVmaW5lIFNJWkVfQksyNSAzMg0KKw0KKyNkZWZpbmUgU0laRV9CSzIxXzM2YiAxMjgNCisjZGVmaW5lIFNJWkVfQksyMl8zNmIgMTI4DQorI2RlZmluZSBTSVpFX0JLMjNfMzZiIDY0DQorDQorLyogbWVhbnMgb2YgSVNGcyAqLw0KK3N0YXRpYyBXb3JkMTYgbWVhbl9pc2ZbT1JERVJdID0gew0KKw0KKyAgIDczOCwgIDEzMjYsICAyMzM2LCAgMzU3OCwgIDQ1OTYsICA1NjYyLCAgNjcxMSwgIDc3MzAsDQorICA4NzUwLCAgOTc1MywgMTA3MDUsIDExNzI4LCAxMjgzMywgMTM5NzEsIDE1MDQzLCAgNDAzN307DQorDQorLyogNDYgYml0cyAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgaXNmIGNvZGVib29rczogIHR3by1zdGFnZSBWUSB3aXRoIHNwbGl0LWJ5LTUgaW4gMm5kIHN0YWdlICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBjb2RlYm9vayAgIHZlY3RvciBkaW1lbnNpb24gICAgbnVtYmVyIG9mIHZlY3RvcnMgICAgICAgICAgICAgICAgICoNCisgKiAgfn5+fn5+fn4gICB+fn5+fn5+fn5+fn5+fn5+ICAgIH5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAqDQorICogICAgIDFfMSAgICAgICAgICAgIDkgICAgICAgICAgICAgICAgICAyNTYgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAxXzIgICAgICAgICAgICA3ICAgICAgICAgICAgICAgICAgMjU2ICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMl8xICAgICAgICAgICAgMyAgICAgICAgICAgICAgICAgIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIDJfMiAgICAgICAgICAgIDMgICAgICAgICAgICAgICAgICAxMjggICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAyXzMgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgMTI4ICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMl80ICAgICAgICAgICAgMyAgICAgICAgICAgICAgICAgIDMyICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIDJfNSAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAzMiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogMXN0IHN0YWdlIGNvZGVib29rOyAxc3Qgc3BsaXQ6ICAgaXNmMCB0byBpc2Y4DQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyBXb3JkMTYgZGljbzFfaXNmW1NJWkVfQksxKjldID0gew0KKw0KKyAgIDU3OSwgIDEwODEsICAxMDM1LCAgIDM5MCwgICAgIDMsICAtMjYzLCAgLTE5OCwgICAtODIsICAgIDM4LA0KKyAgICAxOCwgICAtNjgsICAgLTEyLCAgIDMxMywgICA3NjEsICAgNDA1LCAgIDI0OSwgICAxMTEsICAgLTc2LA0KKyAgIDc0MCwgIDEyNjMsICAxMjkyLCAgMTAwNiwgICA5OTcsICAxMDE5LCAgMTAxNywgICA5NzYsICAgOTIzLA0KKyAgIC05MSwgICA4MjcsICAgOTQ4LCAgIDY0OCwgICA2MTMsICAgNTM1LCAgIDUyMiwgICA0OTAsICAgNDIxLA0KKyAgICA0MSwgICAtNDQsICAtMjgxLCAgLTQ3MiwgICA2NTIsICAgNTM0LCAgIDE5MywgICAxMzUsICAgLTkwLA0KKyAgICA0MSwgIC0xMjEsICAtMzU2LCAgIC02MCwgICA2NjMsICAgMzA3LCAgICA2MSwgICAtNDgsICAtMzQ0LA0KKyAgIDU1NywgICA5NDYsICAxMDQ5LCAgIDg2NywgICA4NDYsICAgOTkwLCAgMTExMiwgIDEyNjIsICAxMjQxLA0KKyAgLTExOCwgIC0yMDQsICAgMzI4LCAgIDUxMiwgICA4NzAsICAgNzkzLCAgIDYxMCwgICA0MDIsICAgMTg2LA0KKyAgIDE1NiwgICAyOTMsICAgIDc0LCAgLTMzOCwgIC00NzUsICAtODk3LCAgLTU5NCwgIC0xNjEsICAtNDk3LA0KKyAgIDIyNiwgICAxMzEsICAtMTM4LCAgIDMwNywgICAxNjksICAtMjcxLCAgLTE2NCwgIC0zODcsICAtNjI0LA0KKyAgICA2MiwgICAtMzIsICAgLTYxLCAgLTI1MiwgIC01NDEsICAtODI4LCAtMTAyNywgIC01MjMsICAtNjYyLA0KKyAgIDEwMiwgICAtNjEsICAgMTQxLCAgIDExMiwgIC0yNzAsICAtMjUxLCAgLTU0MSwgICAgMjUsICAtMTUwLA0KKyAgICAgNiwgIC0xMzIsICAtMzU2LCAgLTY4NiwgICAtOTYsICAtMzIyLCAgLTUyMiwgICAtMzEsICAtMzI2LA0KKyAgIC0zNiwgIC0yMDksICAtNTIxLCAgLTIyOSwgICAzMDcsICAtMTMyLCAgICAtNSwgICAtOTksICAtMzg0LA0KKyAgICA2MCwgICAtNTEsICAtMjM3LCAgLTY2OCwgIC05NzMsICAtNDA3LCAgLTcwOCwgICAtNzUsICAtMTcyLA0KKyAgICAyNiwgIC0xMzgsICAtMjY2LCAgIDExMSwgIC0zMDIsICAgIDQzLCAgLTI3OCwgIC0zNTYsICAtMzU5LA0KKyAgIDU3MCwgICA4MjIsICAgNDk2LCAgLTE1NCwgIC0zMTIsICAgLTkyLCAgIDEzNywgICAyNzksICAgMzcxLA0KKyAgLTE0NiwgICAzNjgsICAgNDA5LCAgICA2OCwgICAgIDYsICAgIDc3LCAgIDE2NywgICAyMDIsICAgMTYyLA0KKyAgIDYzMywgICA4OTgsICAgOTk2LCAgIDc1NiwgICA2NjIsICAgNjgzLCAgIDc4MywgICA5MDksICAgOTk2LA0KKyAgLTEwMywgICAyOTQsICAgNjA3LCAgIDQxNSwgICA0ODMsICAgNDYyLCAgIDQ4MCwgICA0MzEsICAgNDA4LA0KKyAgLTEyMCwgIC0zMzgsICAtNjEyLCAgLTUyNCwgICA1ODQsICAgMzMxLCAgICA5MiwgICA0MzMsICAgMjc2LA0KKyAgLTE3OCwgIC0yOTMsICAtMTU0LCAgIC00MSwgICAyNjksICAgMTAwLCAgICAtOSwgICAyMTMsICAgMTYwLA0KKyAgIDgzMCwgICA3MzYsICAgMjc4LCAgIDgyMCwgIDEyNTQsICAgNjg2LCAgIDcxMiwgIDEwMzksICAgNDczLA0KKyAgLTIxOCwgIC0zMDQsICAgNDYzLCAgIDQ1NCwgICAzOTcsICAgMjczLCAgIDIwMiwgICAyODYsICAgMjczLA0KKyAgLTIzMiwgICAgIDcsICAgICA2LCAgLTM4OCwgIC00NzIsICAtNDI3LCAgLTM3OCwgIC0xNjcsICAtMTAwLA0KKyAgLTI5NCwgIC0xODMsICAgMTM0LCAgIC00NywgICAxMDEsICAgLTg4LCAgIC04NCwgIC0xMTcsICAgIC0zLA0KKyAgICA1NywgICAgMTcsICAtMjAyLCAgLTYzNCwgIC05ODksIC0xMTE5LCAgLTUzMywgICAxNzYsICAgLTM2LA0KKyAgIDEyMCwgICAtMjgsICAgIDIzLCAgIDExMSwgIC0zMTksICAgMzE4LCAgIC0yMiwgICAtNzcsICAgMjY2LA0KKyAgLTI3MSwgIC00NjQsICAtNDM0LCAgLTY1OCwgIC02NDAsICAtMzg1LCAgLTM4NSwgICAtOTksICAgLTY5LA0KKyAgLTE5OCwgIC0yNTksICAtMjY2LCAgIC00NCwgICAtMzksICAtMTM5LCAgLTEzNywgICAxNzEsICAgIDY2LA0KKyAgICAgOSwgIC0xNDUsICAtMzc3LCAgLTg0NiwgLTEwMDAsICAtMTExLCAgLTMyNSwgICAzNDIsICAgMTM1LA0KKyAgIC04MSwgIC0yODYsICAtMzgwLCAgIDE5MiwgICAtNTcsICAgMzA3LCAgICA3NiwgICAtMjQsICAtMTQwLA0KKyAgIDY3NywgICA3MDIsICAgMjQ3LCAgICA1NiwgICAyNDksICAgMTQxLCAgLTEwNSwgIC0yMzYsICAgLTk5LA0KKyAgICAzNiwgICAtMzksICAgLTY5LCAgIDM0OCwgICAxOTgsICAgLTkzLCAgIDMyMiwgICAgOTEsICAgLTcyLA0KKyAgIDUwMywgICA4ODUsICAxNTA4LCAgMTMwNywgIDEyODIsICAxMTcyLCAgMTExOSwgIDEyMDksICAxMDYxLA0KKyAgIDQxNiwgICA3MTksICAgOTg5LCAgMTIyNywgIDEwMDEsICAxMDUyLCAgIDk1NCwgICA3NDEsICAxMDQ0LA0KKyAgLTEyNywgIC0zNzYsICAtNjU3LCAgIDEzOSwgICA2MjMsICAgMjIzLCAgIDUwMSwgICAzMDYsICAgMjIwLA0KKyAgLTExMywgIC0zODQsICAtNzk2LCAgIDUwNCwgICA0MzgsICAgIDg1LCAgIDIxMywgICAtODMsICAtMTk0LA0KKyAgIDU4NSwgIDExMzIsICAxMjMzLCAgMTA5MSwgIDEyNDcsICAxNDMzLCAgMTUxMiwgIDE0NDgsICAxMzE0LA0KKyAgLTE3NCwgIC00MjIsICAgICA3LCAgMTE1NSwgIDEwODksICAxMTgyLCAgMTAwMywgICA5NDUsICAgODA2LA0KKyAgICAgOCwgIC0xMjYsICAtMzE3LCAgLTEwMywgIC0zNTEsICAtNjk1LCAgIC05OCwgIC0yNjgsICAtNTM3LA0KKyAgICAzMywgIC0xMDMsICAtMjkwLCAgIDE2NywgICAtMzksICAtNDA3LCAgICA0NCwgIC0yMDgsICAtMzc1LA0KKyAgIDEwNCwgICAtMjMsICAgLTY0LCAgLTI5MSwgIC02MzcsICAtODUxLCAtMTA4NCwgICAtNjEsICAtMTEyLA0KKyAgIC03NSwgIC0zMDYsICAtNDM0LCAgIDIxOCwgIC0xNDgsICAtMzU0LCAgLTY4MCwgIC0xMzMsICAtMjE2LA0KKyAgLTEyMSwgIC0zNzcsICAtNzE4LCAgIC05NywgIC0xMzAsICAtMzYxLCAgLTE1NiwgIC0zNzksICAtNTk5LA0KKyAgIC01NiwgIC0yNTQsICAtNTg2LCAgIDIzNSwgICAxNTcsICAtMjE0LCAgICAxMSwgIC0yNjAsICAtMTQ5LA0KKyAgLTEyNCwgIC0yNjcsICAtMzk3LCAgLTU4MCwgIC01OTMsICAtNTI3LCAgLTgwNSwgIC0zODUsICAgMzQ2LA0KKyAgLTE5MywgIC00NDAsICAtNzA4LCAgLTM1MSwgIC0xNDEsICAtMjU1LCAgLTQ5OSwgIC0xNDcsICAtMTg1LA0KKyAgIDQ0OCwgICA2NjAsICAgNDk0LCAgIDIwOCwgICA1MDksICAgNDYxLCAgIDMzOCwgICAyOTEsICAgMTQ5LA0KKyAgLTIyMywgICAgODgsICAgMzM1LCAgIDE1OSwgICAyMTIsICAgMTkxLCAgIDI4NiwgICAzMDgsICAgMjA1LA0KKyAgIC0zMSwgICA0NjksICAgODAzLCAgIDY1OSwgICA2MTksICAgNjU4LCAgIDg0MywgICA5ODcsICAxMTEzLA0KKyAgLTE3MSwgIC0yNDIsICAgNTE0LCAgIDM2MiwgICAyOTUsICAgNTI0LCAgIDU1MiwgICA2OTQsICAgNTg1LA0KKyAgIC02NCwgIC0zMDgsICAtNDQ4LCAgIC0yMSwgICAyODQsICAgNzg2LCAgIDQ0NiwgICAyODksICAgIDkyLA0KKyAgLTIxOCwgIC0zOTAsICAgIC03LCAgIDE2OSwgICAyMDYsICAgMzMwLCAgIDM1MiwgICA0MDgsICAgMzU4LA0KKyAgIC0zNiwgICA3MDIsICAgOTU5LCAgIDg1OSwgICA4NjEsICAxMTE1LCAgMTI2OSwgIDEzNTcsICAxMzA1LA0KKyAgLTEzMywgIC0zNDEsICAgLTY1LCAgIDY3OCwgICA0MTcsICAgNDQwLCAgIDQ4NiwgICA1MTgsICAgNzgwLA0KKyAgICAzMywgICAtNDQsICAtMTkxLCAgLTM0NCwgIC00NjEsICAtNzU1LCAgLTIwMSwgICAyMTcsICAgLTMxLA0KKyAgLTM1MywgIC01NDcsICAgLTQ0LCAgIDEyMywgICAtNjEsICAgLTY4LCAgIC03OSwgICAgMjksICAgIDYwLA0KKyAgICA3MywgICAtNTcsICAtNDA2LCAgLTc2NiwgLTEyNDMsIC0xMjAzLCAgIDI0MCwgICA0MDAsICAgMTY1LA0KKyAgIC03MywgIC0yODIsICAtNjAxLCAgLTIxMywgIC0xNzEsICAtMzc1LCAgIDMzMiwgICAgMzUsICAtMTAzLA0KKyAgIC0yOSwgIC0yMDcsICAtNTUzLCAgLTQ3NiwgIC02MzgsICAtOTA4LCAgIDE3MiwgICAtMjIsICAtMTM1LA0KKyAgLTE5MiwgIC0yMzksICAtMTY0LCAgLTEwMywgIC0xMTEsICAgLTQ3LCAgIDE1MywgICAxMjUsICAgMTEwLA0KKyAgICAtMSwgIC0yMDMsICAtNTcwLCAtMTAzMCwgLTE0MjQsICAtNTM1LCAgIDE1NSwgICAgIDEsICAgMTQ3LA0KKyAgLTMzMywgIC02NTMsICAtODY1LCAgLTE5NywgIC0xNTgsICAgLTIxLCAgIC00NCwgICAgOTUsICAgMTA4LA0KKyAgIDM4OSwgICA1ODgsICAgNDkwLCAgICAzMywgIC0yMzcsICAtNTI0LCAgLTYyOCwgIC0xMzYsICAtMjYwLA0KKyAgICA0MCwgIC0xNzcsICAtNDYyLCAgIDQ1MywgICA4NjIsICAgMzgwLCAgIDEzMSwgIC0xMzAsICAtNDA1LA0KKyAgIDg0MiwgIDE2NzgsICAxODQxLCAgMTU0OSwgIDE0NzQsICAxMjU2LCAgMTA4MiwgICA5MDUsICAgNzQyLA0KKyAgIDM3MCwgIDEyMTYsICAxNzY4LCAgMTYzMywgIDEyMTIsICAgNjM2LCAgICAyMiwgIC0zMzAsICAgIDcxLA0KKyAgIC03NiwgIC0yODEsICAtNzQxLCAgLTc0MiwgICA4OTgsICAgNjE5LCAgIDI3NywgICAgNzEsICAtMjIyLA0KKyAgIC0zMiwgIC0yNjUsICAtNTU2LCAgIC0yNSwgICA5OTQsICAgNjgyLCAgIDMwNSwgICAxMjYsICAtMTY1LA0KKyAgICA3MywgICA3MzgsICAgODkzLCAgIDk2OCwgICA5OTMsICAxNzY4LCAgMjI3MywgIDE4NDAsICAxMzkxLA0KKyAgIC02OSwgIC0zNDksICAtNTg1LCAgIDIzNCwgIDExNTgsICAgOTAzLCAgIDYyNiwgICA1MTAsICAgMjUxLA0KKyAgICAtMSwgICAtOTksICAtMjcyLCAgLTIxMCwgIC02MDMsICAtMzUxLCAgLTU0MCwgIC04MTEsICAtMzgzLA0KKyAgIC0xNiwgIC0yMzAsICAtNTA0LCAgIDQxMCwgICAxNDksICAtMjA1LCAgLTM0MywgIC02NTEsICAtNjM5LA0KKyAgIDEwMywgICAgLTksICAtMjI3LCAgLTIwNSwgIC01NjIsICAtNzgxLCAtMTA3OSwgLTEyMDgsICAtMTU2LA0KKyAgIDE0MywgICAgNjMsICAtMTM1LCAgIC02NywgIC0zMTcsICAtNjAyLCAgLTc4NCwgLTExNTQsICAtNjQwLA0KKyAgLTE0NCwgIC0zOTEsICAtNjc0LCAgLTYyMiwgIC0yMDAsICAtMjU0LCAgLTY2MCwgIC05NDcsICAtMzk1LA0KKyAgIC00MCwgIC0yNTAsICAtNjI1LCAgICAyNywgICA1NDMsICAgIDk0LCAgLTEzMSwgIC0zODYsICAtNjczLA0KKyAgLTEyMywgIC0zNzEsICAtNzU3LCAgLTQ1MSwgIC01NjQsICAtNjE0LCAgLTQxNSwgIC03MTEsICAgLTM1LA0KKyAgLTExNiwgIC0zMDksICAtNTkzLCAgLTI2OCwgICAyMzksICAgLTMzLCAgLTMzOCwgIC02NTAsICAtMTM1LA0KKyAgICA5NCwgICAyNTEsICAgNTU0LCAgICA1NywgIC0zMTIsICAtNDIzLCAgLTE1NCwgICAtNTcsICAgMjM1LA0KKyAgLTI2OCwgICAtNzEsICAgMzgxLCAgIDExNCwgICAtNDQsICAgLTg3LCAgIDEyNSwgICAxNzMsICAgMTMzLA0KKyAgMTUxMywgIDE3MTQsICAxMjM4LCAgIDUzNCwgICAyNzYsICAgMzE1LCAgIDQ2MSwgICA0NTksICAgNTA4LA0KKyAgLTEzMSwgICAtMTksICAxMTQ5LCAgIDY3MCwgICA0ODYsICAgMzU2LCAgIDMwOSwgICAzNjksICAgMjk2LA0KKyAgLTIyMywgIC01MDEsICAtODk5LCAgLTcyMiwgICAtNzAsICAgICA2LCAgIDEzMSwgICAzMTAsICAgMzk0LA0KKyAgIC05OSwgIC0zMDMsICAtNTE3LCAgIDI0OSwgICAgNjQsICAgLTUzLCAgIDEzNSwgICAtMTEsICAgNDUzLA0KKyAgLTE0NywgIC0zOTksICAtNzMwLCAgLTQwMSwgICA4MTcsICAgNzM4LCAgIDgwMiwgICA3NDksICAgNTc1LA0KKyAgLTE1NCwgIC00MzUsICAtNzM5LCAgIDgwMCwgICA1OTMsICAgMzY2LCAgIDUyOSwgICAzMTgsICAgMzI2LA0KKyAgLTIyNCwgICAgNDUsICAgLTM5LCAgLTM4NywgIC01MTUsICAtNTE4LCAgLTYwOCwgIC0zODQsICAtMzIxLA0KKyAgLTMxNSwgIC0zNzcsICAgMTQzLCAgLTEwMSwgIC0xMTMsICAtMzc3LCAgLTE3NywgIC0xNDQsICAgLTEyLA0KKyAgIDExNywgICAgNDAsICAtMjM5LCAgLTY1MSwgLTEwNTEsICAtNTgxLCAgLTczNywgIC05OTAsICAtMzI4LA0KKyAgICAyNiwgICAtNTAsICAtMTU3LCAgIC0yMywgIC00NTMsICAtMjgzLCAgLTUzMSwgIC01NDYsICAgMTkyLA0KKyAgLTI1MiwgIC01MDEsICAtNzQzLCAgLTU4OSwgIC02MjcsICAtNDk5LCAgLTMyOCwgIC0xMTgsICAgLTcyLA0KKyAgLTMyNCwgIC00OTQsICAtMjQ0LCAgLTMwNiwgIC0xNDQsICAtMTc3LCAgLTI2MiwgIC0xMzUsICAgLTc4LA0KKyAgIC0zNiwgIC0yMzQsICAtNTE5LCAgLTk2MSwgLTEyOTAsICAtMzE0LCAgLTQ3OSwgIC0zNzEsICAgLTQ1LA0KKyAgIC05NSwgIC0yOTIsICAtNTM1LCAgICAtOCwgIC0zMDAsICAgMTEyLCAgLTE2NCwgIC0yNzcsICAgMTk4LA0KKyAgIC05OSwgIC0xMjgsICAgODgwLCAgIDgzNiwgICA1NzksICAgMzUxLCAgICAyMywgICAtOTUsICAtMjE3LA0KKyAgIC0yNywgIC0yNTgsICAgMTI0LCAgMTAxMSwgICA1OTcsICAgNDI1LCAgIDE0NCwgICAgIDcsICAgLTczLA0KKyAgIDQyMSwgIDEyOTMsICAxNjQwLCAgMTYyMywgIDE3NDIsICAxNjE3LCAgMTQ5OSwgIDEyODQsICAxMDA2LA0KKyAgIC05NSwgICA3NTIsICAxNjgwLCAgMTU2OSwgIDE2MTgsICAxNDM2LCAgMTIwMCwgICA5ODAsICAgNzEyLA0KKyAgIC02OSwgIC0zMDAsICAtNjgzLCAgLTQzNSwgIDExMzIsICAgODk5LCAgIDUwNCwgICAzMzIsICAgMTA5LA0KKyAgIC03NCwgIC0zMjMsICAtNjM3LCAgIDU2MywgIDEwNzQsICAgNjA4LCAgIDM3MSwgICAxMDUsICAgLTQ5LA0KKyAgIC03OCwgICA4MzEsICAxMTk0LCAgMTExMCwgIDEzNzgsICAxNDgxLCAgMTQ5MiwgIDEzNjUsICAxMjE3LA0KKyAgLTI1OSwgIC0xMjEsICAxNDQwLCAgMTMzNCwgIDE2MjgsICAxNDkwLCAgMTQzOCwgIDEyMjMsICAgOTMzLA0KKyAgIC04MiwgIC0zMDYsICAtNjEzLCAgLTIyMiwgIC0zNzgsICAtNjc1LCAgLTU0NSwgIC02NzEsICAtODQ1LA0KKyAgICA1MywgIC0xMjQsICAtMzQ3LCAgIDQyMiwgICAgNTIsICAtMTI1LCAgLTI3MCwgIC01MjksICAgICA5LA0KKyAgICA3OSwgICAtODksICAtMzIwLCAgLTY2MiwgIC05OTksIC0xMTk5LCAtMTI0MywgIC02NzYsICAtMjk3LA0KKyAgIC02OCwgIC0yNzMsICAtNjExLCAgIDEzNywgIC0xNDYsICAtMzk3LCAgLTYyNywgIC04NDUsICAtMjIwLA0KKyAgLTExMiwgIC0zNDYsICAtNzk3LCAgLTgyNiwgICAyMzQsICAtMTMyLCAgLTE4OCwgIC0yNzgsICAtNTIyLA0KKyAgLTE1OSwgIC00MDUsICAtNzM0LCAgLTQxOSwgICAyOTMsICAgIDc0LCAgLTE2NywgIC0xNjcsICAgMTg0LA0KKyAgLTE1MywgIC00MzcsICAtODMzLCAtMTA4MCwgIC0zMzYsICAtNDcyLCAgLTU2MSwgIC0zNDAsICAtMjUzLA0KKyAgLTE2OSwgIC00MjMsICAtODIwLCAgLTkwNCwgIC0xMzEsICAgLTE5LCAgLTM0NiwgIC02MDQsICAgIDMxLA0KKyAgICAzMywgICAtMzEsICAgMzEyLCAgICA2MiwgIC0xNDgsICAgIDQ5LCAgIC01OSwgICA1NjQsICAgNDg2LA0KKyAgLTMwNiwgIC0zMzMsICAgMTk0LCAgIC00NCwgICAgNjcsICAgIDcyLCAgIDE0NywgICAyMDUsICAgMjQzLA0KKyAgLTIwNywgICAtNDksICAxMzYwLCAgIDk4MywgICA5NjksICAgOTkxLCAgMTAxNCwgIDExMTAsICAgOTczLA0KKyAgLTIxMSwgIC0xNzIsICAgODgzLCAgIDYyNywgICA3MTEsICAgNjc0LCAgIDcwNSwgICA3OTgsICAgNzQ2LA0KKyAgIC04OCwgIC0zMjUsICAtNzYzLCAgLTk3NCwgICA2ODcsICAgOTA4LCAgIDUxNCwgICAzODIsICAgMTcyLA0KKyAgLTI5MiwgIC02MTIsICAtODA1LCAgICA2MywgICAxMzEsICAgMjcwLCAgIDI1OSwgICAzNTIsICAgMzQ4LA0KKyAgLTIzNSwgICAtODQsICAgOTU1LCAgIDgxOCwgIDExMjAsICAxMjg5LCAgMTU1OSwgIDE0ODAsICAxMjg1LA0KKyAgLTE4MCwgIC00NjEsICAtNjE0LCAgIDY1NywgICA2OTEsICAgNzQ1LCAgIDg1NCwgICA3ODMsICAgNzEzLA0KKyAgIC05NywgIC0zMDksICAtNDc3LCAgLTYxNCwgIC03NzcsICAtNzM0LCAgLTc2OCwgIC01MjYsICAtNDcyLA0KKyAgLTM0NCwgIC00NzYsICAgLTM1LCAgLTE2OSwgICAgNDksICAgLTc3LCAgLTE1MCwgIC0yNDAsICAtMTQxLA0KKyAgIC01MiwgIC0yNjgsICAtNjM5LCAgLTkxOSwgLTEyNzgsIC0xMTEzLCAgLTM0MiwgIC0zMzMsICAtMTUxLA0KKyAgIC02OCwgIC0yNDIsICAtNTg1LCAgIC03MywgIC0yMDksICAtNDc4LCAgLTE1OSwgIC00MjksICAgMTMzLA0KKyAgLTE5NywgIC00OTksIC0xMDA1LCAtMTI2OCwgIC0yNzIsICAtMjI0LCAgLTEwNSwgICAtNjcsICAgIDE3LA0KKyAgLTM2MywgIC02MTgsICAtNDE0LCAgLTExNiwgICAtNjIsICAgIDIwLCAgICAxMCwgICAxMTYsICAgMTA4LA0KKyAgLTE5NSwgIC00NzUsICAtOTA2LCAtMTI2MCwgIC04OTEsICAtNDQxLCAgLTI3NywgIC0xNDIsICAgLTI4LA0KKyAgLTIyNiwgIC01MTksICAtOTUwLCAgLTcwMCwgIC0yNzUsICAtMjY2LCAgLTExNiwgIC0xMDUsICAgIDgyLA0KKyAgIDQwNCwgICA1MTEsICAgNTIwLCAgIDMyNywgICAgMTcsICAtMTk0LCAgLTMzMywgIC01MzYsICAtNTg2LA0KKyAgLTExNCwgIC0xMzAsICAgMjc2LCAgIDIzNywgICAyMDQsICAgMzQyLCAgIDEzNSwgICAtMTYsICAtMTExLA0KKyAgIDY3MCwgIDEyMDgsICAxMTY4LCAgIDg2MCwgICA3NDIsICAgNjAxLCAgIDUyOCwgICA0MDMsICAgMzA5LA0KKyAgIDM5NywgICA2MjEsICAgOTY2LCAgIDc1MiwgICA1NzksICAgMzk4LCAgIDQwMCwgICAzMjksICAgMjUyLA0KKyAgIDE5MSwgICAxODAsICAtMTM3LCAgLTQ2NywgICAyNzIsICAgMTA2LCAgIC05NSwgICAgMTcsICAtMTkyLA0KKyAgIC04MCwgIC0yOTAsICAtNjI2LCAgIDE5NCwgICA1OTgsICAgMTk2LCAgICAyMSwgIC0yODEsICAgIDc3LA0KKyAgIDUxMCwgICA4NjQsICAxMTA4LCAgIDgwNywgICA5MzksICAgOTAyLCAgIDkyNSwgICA3MTcsICAgNDgxLA0KKyAgIDEzNywgICAzNjcsICAgNTM0LCAgIDc2NCwgICA2NzAsICAgMzgyLCAgIDI5NiwgICAxNTMsICAgIDg0LA0KKyAgIDMwMywgICA0OTcsICAgMTQ0LCAgIC04NSwgIC0xMjUsICAtNTM5LCAgLTQ4MiwgIC00NjQsICAtNzY0LA0KKyAgIDIzMywgICAzNDcsICAgIDY4LCAgLTE0NywgICAxNjksICAtMjEwLCAgLTI0MiwgIC0yMjYsICAtNDgyLA0KKyAgIDMwNywgICA0MjIsICAgMTU0LCAgLTE3NSwgIC0zODYsICAtNzIyLCAgLTcyNCwgIC05MDQsIC0xMDE1LA0KKyAgIDMwOSwgICAzMDgsICAgMTYwLCAgIC02MCwgIC00NzAsICAtNDIwLCAgLTU5OCwgIC03OTEsICAtMjE5LA0KKyAgICA2OCwgICAxMjEsICAtMTM3LCAgLTU2MCwgIC0xNDYsICAtNDQ2LCAgLTUxNSwgIC00OTQsICAtNzI5LA0KKyAgIDEzMCwgICAgNTMsICAtMjI3LCAgICA0NiwgICA0NzQsICAgIDMyLCAgLTE2MSwgIC0xOTIsICAtNDkwLA0KKyAgIDIxMywgICAxNjQsICAgLTcxLCAgLTQ2NSwgIC04NzYsICAtMTYxLCAgLTQ1NiwgIC01ODcsICAgLTQ4LA0KKyAgIDIxOCwgICAxMTcsICAgIDM5LCAgIDE3NywgIC0xOTQsICAgLTg4LCAgLTIyNiwgIC00MTgsICAgIDUwLA0KKyAgIDIxMCwgICA1NDcsICAgNTY5LCAgIDI3OSwgICAxMjEsICAgLTQ0LCAgIC01MCwgICAgMTAsICAgLTg0LA0KKyAgICA1OCwgICAxNDAsICAgMTgyLCAgICAtNSwgICAyNjcsICAgMTE3LCAgIDEwNiwgICAyMTEsICAgMTk4LA0KKyAgIDUzOSwgICA4MzUsICAgOTEzLCAgIDcxOSwgICA2MTcsICAgNTQ0LCAgIDU5MSwgICA1NjUsICAgNjQyLA0KKyAgIDE1MywgICA1NTksICAgODcyLCAgIDQ2MCwgICAyMjIsICAgMTA4LCAgIDE4OCwgICAxODAsICAgMTgzLA0KKyAgIDE1OCwgICAxMTksICAgMjg0LCAgLTE1MywgIC0yNzEsICAgMjI5LCAgICA4NywgICAxMTAsICAgLTU3LA0KKyAgLTE4MywgICAgODIsICAgMTE4LCAgICAyMSwgICAgMTMsICAgIDQwLCAgIDExOCwgICAxOTEsICAgMTg1LA0KKyAgIDE2MiwgICA4ODksICAgNjU0LCAgIDEwOCwgICAtMzQsICAgMjQ0LCAgIDQ4OCwgICA1NjEsICAgNTMyLA0KKyAgIDE2MywgICAgNTYsICAgNjA5LCAgIDM0MSwgICAgNTAsICAgMzI5LCAgICA2OCwgICAyNjYsICAgMjE4LA0KKyAgIDEwMCwgICAyMDYsICAgIDE4LCAgLTMwNCwgIC0xMDcsICAtNDM2LCAgLTQ4NywgICAtNjUsICAtMzA2LA0KKyAgIC04NiwgICAxNTQsICAgMTM0LCAgIC0zMCwgICAtNDUsICAgLTczLCAgLTEwNCwgICAtODAsICAgLTk2LA0KKyAgIDI0NSwgICAzMzAsICAgIDEwLCAgLTQ0MCwgIC04NDksIC0xMDgyLCAgICA3OSwgICAgNDAsICAtMjY1LA0KKyAgIDE5NiwgICAzNzIsICAgMjcyLCAgLTE4MSwgIC00OTMsICAtMzg5LCAgIDI3NSwgICAgODAsICAgLTU5LA0KKyAgICAgMiwgICAtMTIsICAtMjQ2LCAgLTUwNSwgIC0xMDAsICAtNDM2LCAgICAyMSwgIC0xODcsICAtNDMxLA0KKyAgLTIyMSwgICAtNDgsICAgIDM2LCAgLTI3MSwgIC0xODYsICAtMTQ3LCAgLTEwOSwgICAgMjYsICAgIDcxLA0KKyAgIDIxMywgICAxNDAsICAgIDcyLCAgLTM1MSwgIC02MjAsICAgLTg0LCAgLTM2MywgICAgNjksICAgIDQ2LA0KKyAgICA5MSwgICAxNjcsICAgIC0zLCAgIC05NSwgICAtOTksICAtMTA1LCAgIC00OCwgICAxMTQsICAgMTQ3LA0KKyAgIDI1OSwgICAyNDksICAgMTcyLCAgIDYwNywgICA0MDYsICAgIDUyLCAgICA1OSwgIC0xODksICAtMzIwLA0KKyAgIDExNSwgICAtODUsICAgLTU0LCAgIDU3NCwgICAxMjgsICAgMjI2LCAgIC01OSwgIC0yNTMsICAgMTMwLA0KKyAgIC02MiwgIDEwMzMsICAxMzA4LCAgMTAzNSwgIDExMjcsICAxMDk4LCAgMTAyOSwgICA5NjEsICAgODIzLA0KKyAgICAzOSwgICAzNjQsICAgNzU3LCAgIDk0MCwgICA3MjgsICAgNjYwLCAgIDY1OSwgICA1ODMsICAgNzcwLA0KKyAgLTExNSwgIC0zMzgsICAtNzYwLCAgLTQ3MSwgICAzOTQsICAgIDM3LCAgIDQ0MSwgICAxNzgsICAgICA2LA0KKyAgIC01NywgIC0zMDUsICAtNTI1LCAgIDc5NiwgICA0NTMsICAgMTg4LCAgICAtNCwgIC0xMTQsICAgMjQ4LA0KKyAgICA3MSwgICA0NDQsICAgNzk3LCAgIDczMSwgIDEwOTYsICAxMTU3LCAgMTIyMiwgIDEwMjksICAgODExLA0KKyAgIDEzNSwgICAzNTksICAgNTUxLCAgIDQyNSwgICA3NDksICAgODE1LCAgIDg3NCwgICA3MDQsICAgNTAyLA0KKyAgIDEzMiwgICAyNDcsICAgICAwLCAgLTIwNiwgIC00NDksICAtNzUwLCAgLTI1OCwgIC01MTQsICAtNjMzLA0KKyAgIDI0OCwgICAyNDksICAgIDkxLCAgIDEyMSwgIC0xOTUsICAtNDk5LCAgIC05MCwgIC0yODIsICAtNDM1LA0KKyAgICA3OCwgICAgMjAsICAtMjc3LCAgLTYyMywgIC05ODMsIC0xMjI0LCAgLTQxNSwgIC00NTgsICAtNjM5LA0KKyAgIDM0NywgICA1MDksICAgMjA4LCAgLTE3OSwgIC00NjQsICAtNzI4LCAgIC03NiwgIC0yMzcsICAtNDg2LA0KKyAgLTEwMywgIC0zNDMsICAtNzU2LCAgLTcxMywgIC0yNjUsICAtNjA5LCAgLTE5MSwgIC0zOTgsICAtNjM2LA0KKyAgLTEyMSwgIC0zODMsICAtNzQ5LCAgIDU2NywgICAyNTIsICAgLTM2LCAgLTM1NCwgIC00MTcsICAgLTUwLA0KKyAgIDIwNCwgICAxMDAsICAtMTQ5LCAgLTY1MCwgLTEwODEsICAgLTQ3LCAgICAtNywgIC0yNjMsICAgMTExLA0KKyAgIC00NiwgIC0xODAsICAtMjY3LCAgLTMyNCwgIC01NjIsICAtMzk0LCAgLTY5MiwgICAzOTgsICAgMjkyLA0KKyAgIDQ4MiwgICA2NzAsICAgNjgzLCAgIDYyNCwgICA0NDIsICAgMTY1LCAgIDExNiwgICAgMzYsICAtMTQ5LA0KKyAgIDEwOCwgICAyNDcsICAgMjkxLCAgIDI0NywgICAzNTUsICAgMTIyLCAgIDEwOSwgICAyMjQsICAgMjk2LA0KKyAgIC0xNCwgICA5NDUsICAgOTkwLCAgIDgwMSwgICA3NTUsICAgODE1LCAgIDg0NywgICA5MTMsICAgODkyLA0KKyAgIDI5MiwgICAzNDksICAgNzI1LCAgIDQ4MiwgICAzODgsICAgMzI5LCAgIDQyOSwgICA2MjAsICAgNjY3LA0KKyAgIC0zNCwgICAxOTcsICAgMjEzLCAgLTEyNywgICAgODQsICAgNDk0LCAgIDYyMCwgICA1NzUsICAgMzc1LA0KKyAgIDEyNiwgICAyMDcsICAgMTcyLCAgIDE2NywgICAzNjIsICAgMjAyLCAgIDI5NiwgICAzOTUsICAgNDU1LA0KKyAgICAtNiwgICAyNTAsICAgNTM5LCAgIDQ2NywgICA2MzYsICAgODAxLCAgMTE0OSwgIDEyODcsICAxMTE4LA0KKyAgICAyNywgICAyNDAsICAgMzY5LCAgIDI4MCwgICA0NDAsICAgNDExLCAgIDYzNCwgICA4OTIsICAgOTUzLA0KKyAgIDE1OSwgICAxNzAsICAgLTU4LCAgLTM5NSwgIC03OTcsICAtNjkwLCAgICA3NywgIC0yMTEsICAtMzM0LA0KKyAgICAtNSwgICAtMjgsICAgLTEzLCAgIC03NCwgIC0zMzUsICAtNjAzLCAgIDMwMCwgICAgODgsICAtMjA1LA0KKyAgICA4MiwgICAtMzMsICAtMzY0LCAgLTY5OCwgLTEyMDMsIC0xMTUzLCAgIDExMCwgIC0xNDYsICAtMjg5LA0KKyAgIDExMywgICAgIDEsICAtMjQzLCAgLTU4OCwgIC05OTQsICAtNDk2LCAgIDQxNCwgICAxNjAsICAgIDQyLA0KKyAgIC01NiwgIC0yNDcsICAtNDQwLCAgLTY5MywgIC05OTYsICAtNDc5LCAgICAxMSwgIC0xNzgsICAtMzU3LA0KKyAgLTE1MSwgIC0zNTMsICAtMzI3LCAgLTIxMSwgIC0zNDAsICAgMTQxLCAgICA2NSwgICA0MjUsICAgNDUzLA0KKyAgICAzNCwgIC0xNjksICAtNDU1LCAgLTkzMiwgLTEyMTUsICAgMTM4LCAgIDQ5OSwgICAyNTYsICAgMzI0LA0KKyAgICA2OCwgICAxMzksICAgLTE1LCAgLTU0NywgIC00NzgsICAgIDE3LCAgIDMwNiwgICA1MDIsICAgNDgxLA0KKyAgIC0zMiwgIC0xMzQsICAgNDQ1LCAgIDEyOSwgIC0xNDMsICAtMjQ0LCAgLTUwMywgIC01MDcsICAtNTk5LA0KKyAgICA2MSwgIC0xNDAsICAtMzQ1LCAgIDQ5NiwgICA0NTgsICAgIC0yLCAgICAyMCwgIC0yMjcsICAtNTE0LA0KKyAgIDM5NCwgIDE3NjUsICAxNjY2LCAgMTMzOSwgIDExMTcsICAgODA2LCAgIDY0MiwgICA0NzksICAgMzgwLA0KKyAgIDIxNSwgICA1MTksICAgOTIwLCAgMTA1MywgIDEwOTAsICAgNzkxLCAgIDUyOCwgICAyOTAsICAgMTU1LA0KKyAgIC01NCwgIC0yMzMsICAtNjQ3LCAgLTYwMiwgICA2MzksICAgMjk0LCAgICAtMiwgIC0xNjcsICAtNDQyLA0KKyAgIC03OCwgIC0zMTUsICAtNzkxLCAgLTExMywgICA4MjAsICAgNDAzLCAgIDE1OCwgIC0xMTYsICAtMzU2LA0KKyAgIDUyOSwgIDE4NTEsICAyMDAzLCAgMTIyOCwgICA2MjIsICAgLTQxLCAgLTQxNiwgICAzNDQsICAgODE5LA0KKyAgLTEwNSwgIC0zNzksICAtMjM2LCAgMTIyNCwgICA4OTMsICAgNzQ5LCAgIDU2OCwgICAzNTYsICAgMjE0LA0KKyAgIC0xNywgIC0xOTksICAtMTQ0LCAgICA1MCwgIC0yODMsICAtMjQ3LCAgLTU3OCwgIC04NDYsIC0xMDg3LA0KKyAgICA2OSwgICAtMTEsICAtMzgxLCAgLTIwNiwgICAyMDksICAtMjg0LCAgLTM4NywgIC00MTYsICAtNzE2LA0KKyAgICAzOSwgICAgLTUsICAtMTQ1LCAgLTM3NCwgIC02ODIsICAtOTA5LCAtMTA3NCwgLTExNjksIC0xMDY2LA0KKyAgIDI4NywgICAyMjYsICAgIDY3LCAgLTIyMSwgIC02NjIsICAtMTcxLCAgLTQyMSwgIC02NDIsICAtNzA3LA0KKyAgLTEzMiwgIC0zNDgsICAtNTM4LCAgLTQ0OCwgICAtMjAsICAgIC00LCAgLTM1NCwgIC03NDgsICAtOTMzLA0KKyAgICAgNCwgICAtNzUsICAtMjg5LCAgLTU5OCwgICAzMTcsICAgIDUyLCAgLTIwOCwgIC0yOTcsICAtNTU5LA0KKyAgIC04OCwgIC0yNjQsICAtMzU4LCAgLTU4OSwgIC02MzEsICAtMjQ4LCAgLTUyMywgIC04MjIsIC0xMDcxLA0KKyAgICA3MCwgICAgLTgsICAgIDU0LCAgLTMxNCwgIC01MTUsICAgIDkyLCAgLTE0NiwgIC0yNzQsICAtNDkzLA0KKyAgIDE5OSwgICAgNjIsICAgMzkxLCAgIDE1OCwgIC0xNDEsICAgIDcxLCAgLTIxOSwgIC0yMDMsICAtMjA3LA0KKyAgIDE1MiwgICAgNDAsICAgMzI5LCAgIDE2MiwgICAtMjksICAgIDQ4LCAgLTE0OSwgICAxMDgsICAgMTI3LA0KKyAgIDYzNSwgIDEwNTgsICAgODgzLCAgIDQ5MiwgICAzNzIsICAgMzEyLCAgIDMxNywgICAyNzQsICAgMjQxLA0KKyAgIDI2NywgICA3MjIsICAxMjU2LCAgIDg4MiwgICA2MjUsICAgMjQ4LCAgICAgOCwgICAtODEsICAgLTYwLA0KKyAgIC01OCwgIC0xMzgsICAtMjkxLCAgLTYwMCwgICAtMTIsICAgIC0yLCAgIC0zOSwgICAxNDcsICAgMTE3LA0KKyAgLTEwNywgIC0zNDUsICAtNTEzLCAgIDQ1OSwgICAgNzYsICAgIDkyLCAgLTI3MiwgICAzODgsICAgMjYyLA0KKyAgIDM2MiwgICA1MTYsICAgMjAzLCAgLTQwOSwgIC03MTYsICAtODMxLCAgLTMzMSwgICAxODUsICAgMjA5LA0KKyAgLTExNywgIC0zOTEsICAtMjk4LCAgIDY3MSwgICAyOTIsICAgNTM4LCAgIDI1NywgICAxNjYsICAgLTM4LA0KKyAgLTEwMiwgIC0zMTksICAtMTk0LCAgLTI4MywgIC01NzMsICAtMjYyLCAgLTU3OSwgIC0yMTksICAtNDQ0LA0KKyAgLTIzNSwgICAgNzgsICAgIDExLCAgLTE2OCwgIC0xMDEsICAtMjI5LCAgLTI2MywgIC0zMjEsICAtMTIzLA0KKyAgICA3MCwgICAgNTAsICAtMTcwLCAgLTU5OSwgIC05OTYsICAtNTg4LCAgLTI2MywgIC01MTYsICAtNDU1LA0KKyAgIDM5NCwgICAzNjMsICAgMjI5LCAgLTEzNiwgIC01MzgsICAgIDIxLCAgLTE4MywgIC0zNDgsICAtMjAxLA0KKyAgLTEyNCwgIC0zNjgsICAtNjQwLCAgLTg3OSwgIC04NDcsICAtMjA5LCAgLTQwOSwgIC00OTQsICAtNTE1LA0KKyAgLTEyNywgIC0zNDEsICAtNTQxLCAgLTQyNSwgIC01MTAsICAgLTEwLCAgLTI1MiwgIC00NzMsICAtMjkxLA0KKyAgICA4NCwgICAtNjksICAtMjAxLCAgLTY3NiwgIC04NjgsICAgMTAzLCAgLTMxMSwgIC0xMzIsICAtMzIwLA0KKyAgICAgNSwgIC0xNzMsICAtMTg4LCAgLTI5NywgIC02MjgsICAgMTk3LCAgIC01NywgICAgIDcsICAgLTExLA0KKyAgICA0OSwgIC0xNjAsICAgIDU2LCAgIDU1OCwgICAxMTEsICAgIDMzLCAgLTMxMSwgIC00NDAsICAtNDYzLA0KKyAgICAtMSwgIC0yNDYsICAtMzA3LCAgIDg2MiwgICA0NTMsICAgMTM5LCAgLTE3MCwgIC0zNTUsICAtMjMyLA0KKyAgIDI3OSwgICA5NjYsICAxNjQyLCAgMTQ3OCwgIDE0NjMsICAxMTIzLCAgIDc5NSwgICA1MjUsICAgMzM5LA0KKyAgLTE5NywgICAtMzgsICAxNzAyLCAgMTMzMSwgIDEyNTIsICAgOTUwLCAgIDY5MiwgICA1MDQsICAgNDI2LA0KKyAgLTEwOCwgIC0zNDQsICAtODYxLCAtMTE3MiwgICA0NDQsICAgMzU0LCAgICA4OCwgICAtNDYsICAtMjIwLA0KKyAgIC01MywgIC0zMjEsICAtNDk0LCAgMTExMywgICA3NDQsICAgMzY0LCAgIDE5OCwgICAtMzQsICAgLTc1LA0KKyAgIDQ1NywgICA5NTUsICAxMTc3LCAgMTIxNCwgIDE0MjcsICAxNDU3LCAgMTM0NSwgICA5MTcsICAgNTM5LA0KKyAgIC02OSwgICAxOTksICAgODk3LCAgMTE0MCwgIDEzNDMsICAxMTgzLCAgIDk3NywgICA3NDIsICAgNTIyLA0KKyAgIDEyMiwgICAgNDQsICAtMjY5LCAgICAyNywgIC0xNTUsICAtNTYyLCAgLTMwNywgIC01OTAsICAtNzczLA0KKyAgIDE1NCwgICAgNDIsICAtMTYwLCAgIDI1MiwgIC0xMjksICAtMzA1LCAgLTQ3MSwgIC03MzMsICAtMzcxLA0KKyAgIDEzNSwgICAxODUsICAgLTgyLCAgLTQxNiwgIC03MjIsICAtOTEzLCAgLTUwNCwgIC03NDMsICAtODgwLA0KKyAgIDE0OSwgICAyMTQsICAgLTg0LCAgLTMyOSwgIC02ODAsICAtODM1LCAgLTQyNiwgIC02NjEsICAgLTgxLA0KKyAgLTEyOCwgIC0zODAsICAtNzM1LCAgLTk5OCwgIC0zMzcsICAgIDE3LCAgLTE4MiwgIC00NjcsICAtNjk3LA0KKyAgIC04NCwgIC0yOTAsICAtNTEwLCAgLTU5MiwgICAgMTMsICAgNDQwLCAgIDE1NCwgICAtMzgsICAtMjc5LA0KKyAgICA3MCwgICAtNjEsICAtMjQ2LCAgLTcyNywgLTEwNDcsICAgLTgwLCAgLTM4MSwgIC01MzUsICAtNzA0LA0KKyAgIDE3OCwgICAgLTIsICAtMTQ2LCAgLTY3MCwgIC05MzgsICAgNDgyLCAgIDEzOCwgICAgNjMsICAgIDY1LA0KKyAgIC0xMSwgICAgMTUsICAgNzcyLCAgIDQ0MywgICAxNDIsICAgLTIwLCAgLTIwOSwgIC0xMjYsICAtMTYxLA0KKyAgIC0zMiwgIC0yNDksICAgIDk1LCAgIDU1MiwgICAxMjQsICAgIDMwLCAgLTM0MywgICAgODIsICAgLTg2LA0KKyAgIDE0OCwgICA3NTEsICAxNTE1LCAgMTEwNSwgICA4NjcsICAgNjA2LCAgIDQ3NCwgICA0NDgsICAgMzk5LA0KKyAgLTE2MywgIC0yNTcsICAgODk5LCAgMTA5NywgICA5MDYsICAgNzUxLCAgIDUwMiwgICAzOTAsICAgMjk0LA0KKyAgIC01MSwgIC0yNTgsICAtNDQ3LCAgLTgwNiwgIC0zNjgsICAgNzYzLCAgIDQ2NCwgICAzNjQsICAgMTgzLA0KKyAgLTE2NiwgIC0zNzQsICAtMzY3LCAgICA4NywgICAgMzUsICAgMzk5LCAgIDQxOCwgICA4NTYsICAgODMzLA0KKyAgLTIwNSwgIC0zMTAsICAgNTg4LCAgIDc3OCwgICA3ODUsICAxMDY1LCAgMTExOCwgIDEyNDUsICAxMTU3LA0KKyAgLTE3MywgIC0zMTIsICAgMTA3LCAgIDM0NSwgICA0MDAsICAgNzkwLCAgIDg3MCwgIDExMTMsICAxMDAxLA0KKyAgICAtNywgIC0xMjAsICAtMzg3LCAgLTQxMCwgIC02MTQsICAtOTQzLCAgLTIyNiwgIC0zODQsICAtNDkxLA0KKyAgLTIwMywgIC0yODgsICAgLTUxLCAgLTMzMSwgICAtOTAsICAtMTc4LCAgLTQwOCwgIC01NzMsICAtMzM4LA0KKyAgICA1NiwgICAtMjksICAtMjczLCAgLTYyNywgLTEwNDEsICAtNzk4LCAgLTI0NywgIC00NjcsICAgMTQ4LA0KKyAgICA2NiwgICAgLTIsICAtMjA1LCAgLTIwNSwgIC01NzUsICAtMzQ5LCAgIC01NywgIC0zNTIsICAgLTU4LA0KKyAgIC00NSwgIC0yMjUsICAtNDcxLCAgLTkyNCwgIC00OTcsICAgIDc3LCAgIC0zMiwgICAgNDQsICAtMTM1LA0KKyAgLTI3NywgIC00OTEsICAtNDk3LCAgLTUwMiwgIC00MjQsICAtMjAyLCAgLTEzNywgICAgNzcsICAgIDk2LA0KKyAgICAyNiwgIC0xNzksICAtNDY5LCAtMTAwOCwgLTEyNjAsICAgMjYyLCAgIC0zNSwgIC0xMzIsICAtMjU5LA0KKyAgIC02NiwgIC0yMzIsICAtNDQ3LCAgLTUzMywgIC03ODksICAtMTkxLCAgLTEwMCwgIC0yNjcsICAgMzY0fTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAxc3Qgc3RhZ2UgY29kZWJvb2s7IDJuZCBzcGxpdDogICBpc2Y5IHRvIGlzZjE1DQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyBXb3JkMTYgZGljbzJfaXNmW1NJWkVfQksyKjddID0gew0KKw0KKyAgMTM1NywgIDEzMTMsICAxMTM2LCAgIDc4NCwgICA0MzgsICAgMTgxLCAgIDE0NSwNCisgICA2MzYsICAgNjQ4LCAgIDY2NywgICA1NjgsICAgNDQyLCAgIDIxNywgICAzNjIsDQorICAgNDI3LCAgIDQ0MCwgICA2NzQsICAgNTI0LCAgIDMzMiwgICAxMTcsICAtNDE3LA0KKyAgIDEyMSwgICAyOTUsICAgNDY4LCAgIDQ2NSwgICAyMzAsICAgIDQ0LCAgLTIyMSwNCisgIC0xNDcsICAtMjQwLCAgIDE0OSwgICAgODAsICAgMzkwLCAgIDI3OCwgICAxMDYsDQorICAtNDE4LCAgLTU1NiwgICA1NTIsICAgNTExLCAgIDIzNSwgICAxNDQsICAgLTk1LA0KKyAgICA0MywgICAxOTMsICAgMjc0LCAgIDE1MCwgICAgNjcsICAgIDM0LCAgLTI3MywNCisgICAtNDMsICAtMTI2LCAgIDE3MSwgICA0MTYsICAgMjgyLCAgICA2MywgIC0zNTQsDQorICAtMzcyLCAgIC04NiwgIC0zNDQsICAtMTA4LCAgIC05NCwgIC0xODIsICAgLTg5LA0KKyAgLTYwMCwgIC04NDAsICAtMjAwLCAgIDQ2NSwgICAyNTgsICAgLTExLCAgLTI1MywNCisgICAtNDgsICAgMzI5LCAgICA5NywgIC0yOTAsICAtNTQzLCAgLTc5NSwgIC0zNTQsDQorICAtNTcwLCAgLTExNywgICAxODcsICAgIDEwLCAgLTEzMywgIC00MTYsICAgLTc2LA0KKyAgLTYxOCwgIC0xMjksICAtMjQ3LCAgLTM3MSwgICAgNDUsICAgLTc2LCAgIDI3NywNCisgLTEwMjIsIC0xMDc5LCAgIDEyNiwgICA0NzQsICAgMjU0LCAgIDEyNywgICAgNTIsDQorICAtMjgxLCAgICA3NiwgIC0xNjcsICAtMzYxLCAgLTI4MywgIC01NTEsICAtMjgzLA0KKyAgLTExOSwgICAtNTIsICAgIC0xLCAgIDEzNCwgICAtMzIsICAtMjA0LCAgLTQxNSwNCisgIDEwNjQsICAgODI3LCAgIDYzNywgICA2ODQsICAgNDY0LCAgIDIwOSwgICAgMTIsDQorICAgNDgyLCAgIDQxNiwgICA0NDksICAgMzcxLCAgIDMzNSwgICAyOTQsICAgMTk0LA0KKyAgIDcxOSwgICA1NzYsICAgMzY1LCAgIDEzNSwgICAxMTMsICAgIDkxLCAgLTE5OSwNCisgICAyOTgsICAgMTc2LCAgIDQ5MywgICAzNjYsICAgMTk0LCAgIDE2MywgICAgMzYsDQorICAgLTM1LCAgLTIzNiwgIC0yNTksICAgLTM2LCAgICAtNCwgICAgOTksICAgMTUyLA0KKyAgIC05OCwgIC0zMDYsICAgLTI3LCAgIDIyOCwgICAgOTAsICAgMTExLCAgIC04NiwNCisgICAgOTEsICAgIDEzLCAgLTIxMSwgIC0yNTgsICAtMTA2LCAgICA4NiwgICAtNjQsDQorICAgIDczLCAgIC0zNSwgICAtNTcsICAgLTMxLCAgIDE2MiwgICAgMzUsICAtMTkyLA0KKyAgLTEwOSwgIC0zMzUsICAtNjI5LCAgIC02NiwgICAtNjEsICAtMTI4LCAgIDMyMiwNCisgIC00OTUsICAtNjY5LCAgLTcyOCwgICAxOTMsICAgIDMxLCAgLTIyMCwgICAxMjIsDQorICAgMzI0LCAgICA5NSwgICAtODksICAgLTkxLCAgLTQwOSwgIC03MTAsICAtMTU0LA0KKyAgICAgMCwgIC0yMzQsICAgIDkyLCAgICAzMywgIC0zNDMsICAtNjA5LCAgLTIyMCwNCisgIC0zNDMsICAtNDA4LCAgLTQ3NiwgIC02NTUsICAtMTUzLCAgICA4MiwgICAyMjIsDQorICAtNDkwLCAgLTc0NSwgIC0yNTUsICAgIDQ5LCAgIC00OCwgICAxMzUsICAtMTI3LA0KKyAgIDExOSwgICAtNjcsICAtMzI4LCAgLTM5MCwgIC0yNzIsICAtNTQ1LCAgIC01NiwNCisgICAtNTcsICAtMTMwLCAgIC0xMCwgICAgLTcsICAtMTY0LCAgIC00NywgICAtMjIsDQorICAgOTg0LCAgMTA2NCwgICA5NjEsICAgNTY4LCAgIDIxMCwgICAtMjcsICAgIDE2LA0KKyAgIDgxMSwgICA2OTEsICAgNzU0LCAgIDUxNCwgICAyMjQsICAgLTM1LCAgIDE2NiwNCisgICA2NjIsICAgNzA0LCAgIDYxOCwgICAzODYsICAgIDU3LCAgLTIxMSwgIC0yNTcsDQorICAgNTEwLCAgIDM1OSwgICA0MTgsICAgMzkzLCAgICA5MSwgIC0xNDQsICAgLTE4LA0KKyAgLTE5MywgICAtMzEsICAgLTI3LCAgIDIyMywgICAgODksICAtMTQzLCAgICAyNCwNCisgIC0xMTIsICAgLTk4LCAgIDQ3MSwgICAzMTksICAgMTg1LCAgICAgMywgICAxNzUsDQorICAgMjUyLCAgIDE0NiwgICAtNDcsICAgMjcyLCAgICA0OCwgIC0yMTEsICAtMjM0LA0KKyAgIDE0NiwgICAgNjksICAgMjAzLCAgIDM2NCwgICAgNjgsICAgLTUyLCAgICA1MSwNCisgIC0yNTksICAtNDc4LCAgLTY5NywgIC0zNDksICAtNzU4LCAgLTUwMSwgICAgNjMsDQorICAtNTAxLCAgLTc2OSwgIC0yODksICAgIDc5LCAgLTMxMSwgIC00OTcsICAtMTA2LA0KKyAgIDI1MSwgICAgNTMsICAtMjM1LCAgLTQ2OSwgIC04OTUsICAtODg0LCAgIDE0NSwNCisgIC00MTYsICAtNTUxLCAgIDE0MCwgIC0xMzMsICAtNTIzLCAgLTc3NSwgICAgNDQsDQorICAtMzI2LCAgLTQyMywgIC03MTMsICAtNDk3LCAgIC04NiwgIC00MzEsICAgIDk5LA0KKyAgLTc1NywgIC03NzIsICAtMTYwLCAgIC03NiwgICAtNDYsICAgLTMyLCAgIDM3OSwNCisgICAgODUsICAgLTM1LCAgLTIwMCwgIC00MDEsICAtNjYzLCAtMTA0MCwgIC0yNDcsDQorICAtMTgwLCAgLTMzMCwgICAtOTIsICAtMzc2LCAgICAyNywgIC0xODMsICAtMTEwLA0KKyAgMTI3OSwgIDEwODYsICAgNzgxLCAgIDUwMiwgICAzMjQsICAgMTY0LCAgIDE1NywNCisgICA2ODIsICAgNDY2LCAgIDQ0OSwgICAyNzcsICAgMTQ2LCAgICAyOCwgICA0MDksDQorICAgNjM1LCAgIDQ3MiwgICAzOTAsICAgMTA3LCAgLTIzMiwgIC01MzgsICAtMTM5LA0KKyAgIDE5NiwgICAzOTYsICAgMzMyLCAgIDIxMywgICAyMDksICAgLTI5LCAgIC04MSwNCisgICAxNTAsICAgLTk1LCAgLTMxMiwgICAgNzYsICAgLTc3LCAgLTMyMCwgICAtNTAsDQorICAgIDQ2LCAgICAgOSwgICAgNDcsICAgMTc1LCAgIDEzOSwgICAgMzAsICAgMzg0LA0KKyAgIDIxOCwgICAyMDYsICAgLTI0LCAgLTI1MCwgICAtOTYsICAtMjc2LCAgLTE4MywNCisgICAgMjYsICAgMTE5LCAgICAzOCwgICAgMTQsICAgIC00LCAgLTEzMywgICAtNTIsDQorICAtNDc3LCAgLTYxNCwgIC05ODcsICAtNzE1LCAgLTYzMSwgIC04MTMsICAgMjAwLA0KKyAgLTc0NCwgLTEwMDksIC0xMDY1LCAgLTc0NSwgIC02MzEsICAtMTcxLCAgICAxOCwNCisgIC0xMzcsICAtMjUxLCAgLTQ4MywgIC02MTMsICAtOTgwLCAtMTIwMywgICAgMTIsDQorICAtNjA1LCAgLTc2NywgIC01NjIsICAtNjg2LCAtMTA4OCwgIC01MTUsICAgIDU4LA0KKyAgLTIwMiwgIC00MjgsICAtNzgyLCAtMTA3MiwgICAtOTYsICAtMjM0LCAgLTE3OSwNCisgIC00ODAsICAtNzA5LCAtMTA3MCwgIC04OTcsICAtMTMxLCAgIC05MiwgICAzMjEsDQorICAtMTQ1LCAgLTE5MywgIC01MTIsICAtNzI5LCAgLTU3MiwgIC03NjUsICAtMjEwLA0KKyAgLTMzMSwgIC01ODUsICAtNTI1LCAgLTYzMSwgIC0yODEsICAtMjA4LCAgLTMwMywNCisgIDExNjUsICAxMTA0LCAgIDkzOSwgICA4MjgsICAgNzE2LCAgIDQyNiwgICAxNTUsDQorICAgICA2LCAgLTEwOSwgICA4MjAsICAgNzc4LCAgIDQxNSwgICAxMTMsICAgLTI3LA0KKyAgIDM4MSwgICAzMzksICAgMzE0LCAgIDI2NSwgICAxMjEsICAgIC05LCAgLTQ3NCwNCisgIC0zNzMsICAgIDQ3LCAgIDU4NCwgICA0NDIsICAgIDk5LCAgLTIzMSwgIC0xMTMsDQorICAtNDk2LCAgIC0zOCwgIC0yODUsICAgMjYyLCAgIDMwNSwgICAxNzAsICAgICA0LA0KKyAgLTU4NywgIC01NTYsICAgIDY5LCAgICA2NiwgICA0NzEsICAgMzU0LCAgICAxMywNCisgIC0xMzgsICAgIDcwLCAgIC0xOCwgICAxMDYsICAgIDY3LCAgIDE2NywgIC0zMDIsDQorICAtNDQ1LCAgLTE0MSwgICAxODUsICAgMTkxLCAgIDE1MSwgICAgODMsICAtMTMzLA0KKyAgLTI1NywgIC01MjEsICAtNzIwLCAgLTE5OCwgICAxMzQsICAgLTQ2LCAgLTE4MiwNCisgIC04MTksIC0xMTY4LCAgLTc3NywgICA1MTIsICAgMzU5LCAgICA5NSwgIC0xMTMsDQorICAgMTM3LCAgICAtMiwgICAtNzQsICAtMTM4LCAgLTQwMSwgIC0xMTQsICAtMzcxLA0KKyAgLTI0MiwgIC00NjYsICAgMjA0LCAgIDIyMywgICAtMzEsICAtMjEyLCAgLTE5MiwNCisgIC01MzIsICAtNjM3LCAgLTQ2NiwgIC02ODYsICAgMjU2LCAgIDI3NywgIC0xMzksDQorIC0xMTQxLCAtMTI0NCwgIC0zODEsICAgLTc1LCAgIC01NCwgICAgMTQsICAgIDg4LA0KKyAgLTMxMSwgICAxMTUsICAtMTQzLCAgLTQ5OSwgIC0zNDMsICAgMTI0LCAgLTQxNiwNCisgIC02MTYsICAtMTQ3LCAgLTEzNSwgICAgNDMsICAgIC00LCAgIDEyMSwgIC0zNjksDQorICAgODM1LCAgIDc4MywgICA2NDEsICAgMzkwLCAgIDM1NSwgICAzNTAsICAgIDY0LA0KKyAgICA3MiwgICAxOTQsICAgNDQzLCAgIDQ2NywgICA0MzYsICAgMjE5LCAgIDM3MiwNCisgICA0NjQsICAgMzY5LCAgIDE5MiwgICAgIDQsICAtMTU2LCAgIC03MiwgIC0yMjYsDQorICAgIDU3LCAgIDIwNiwgICAzMDMsICAgMjA1LCAgIDE4OCwgICAxMDEsICAgMjY1LA0KKyAgIC00MCwgIC0yMDUsICAtNDg4LCAgLTE4NCwgICAyNzYsICAgIDY0LCAgIC0yNiwNCisgIC0yMTcsICAtNDMzLCAgLTI5NywgICAxMzcsICAgMzI4LCAgIDMwOCwgIC0yODksDQorICAgMzc4LCAgICA4MSwgIC0zMDgsICAtNDY1LCAgICA1NywgICAtMzcsICAgMjI3LA0KKyAgLTEwMCwgICAgMjQsICAgLTM2LCAgLTE1MSwgICAxOTksICAgICA4LCAgIDE0MywNCisgIC00MjYsICAtNjk3LCAtMTA1OSwgIC0xMzMsICAgMzg4LCAgIDE2MSwgICAzMjEsDQorICAtNjQ0LCAtMTAyMywgLTEyNzEsICAgIDM5LCAgICA2NiwgIC0xMjMsICAgIDcwLA0KKyAgIDM3MiwgICAxNzcsICAtMTczLCAgLTU1NiwgIC01NTMsICAtMzA0LCAgLTE4OSwNCisgIC0xMTcsICAtMzY5LCAgLTQyNSwgIC0xMjIsICAtNDYyLCAgLTE1MiwgICAtNzMsDQorICAtNjQ5LCAgLTg1MCwgLTExODksICAtNzY3LCAgIDQ5NywgICAzNjAsICAgMjIyLA0KKyAgLTc5OCwgLTExMzksIC0xNDU1LCAgLTE5MCwgICA0MzAsICAgMjM0LCAgIDE3OSwNCisgICAgNDIsICAgLTk0LCAgLTQwNSwgIC02OTIsICAgIDM4LCAgLTIwMiwgIC0yNDYsDQorICAtMTY5LCAgLTM2NiwgIC0yOTAsICAgLTg4LCAgIC02NCwgICAgMzIsICAtMjkyLA0KKyAgMTAxMCwgICA5MjMsICAgOTM4LCAgIDcxMCwgICA0NjUsICAgMjMwLCAgIDM0MiwNCisgICAyMTcsICAgMzAwLCAgMTA1NCwgICA2NzUsICAgIDY4LCAgLTQ1OCwgIC0xNzksDQorICAgIDc4LCAgIDQ1MywgICAzMTYsICAgIDE4LCAgLTIzNywgIC00OTYsICAtMjQzLA0KKyAgIDE2NywgICAgMjEsICAgNDI0LCAgIDIxNSwgICAtOTEsICAtMzAzLCAgLTE3MCwNCisgIC0yOTAsICAgLTgxLCAgIC03MCwgICAtNjcsICAgIDQwLCAgICA1NCwgICAtNTksDQorICAtMzUzLCAgLTQyNywgICAtOTAsICAgIDUzLCAgICA5NCwgICAgIDksICAgIDU0LA0KKyAgIC0yOCwgICAzMTgsICAgMjgzLCAgICAxNSwgIC0yNDAsICAgLTU4LCAgICA3OSwNCisgICAtNzUsICAtMTIxLCAgIDIyOSwgICAgMzUsICAgIDU4LCAgICAgNiwgIC0xMzMsDQorICAtMzUxLCAgLTUxNCwgIC03NDQsICAtODM0LCAgLTcwNSwgIC0xMzcsICAgMTY0LA0KKyAtMTEyNCwgLTEzODgsIC0xMDU1LCAgLTIzMCwgICAtNzMsICAgIDQwLCAgICAzNiwNCisgIC0xNjMsICAtMjMzLCAgLTUzMiwgIC03ODUsIC0xMTcwLCAgLTY5NywgICAgOTYsDQorICAtNzg4LCAgLTk1OSwgIC0yNDYsICAtNDMwLCAgLTYyNCwgIC0xNjUsICAgIC04LA0KKyAgLTg1NiwgIC01NDAsICAtNjMwLCAgLTkwNywgIC0zMzcsICAgLTcwLCAgICA3NiwNCisgIC05MzcsIC0xMDQyLCAgLTY1OSwgIC03MzMsICAtMjA4LCAgIDE5OSwgICAtMjYsDQorICAtNTIzLCAgICA3OCwgICAtOTgsICAtNTAxLCAgLTg2OSwgIC04OTAsICAgLTgxLA0KKyAgLTYyNCwgIC03MDMsICAgLTQ1LCAgLTM0OCwgICAtMjUsICAgIDg3LCAgLTE4NiwNCisgIDEwMDUsICAgODIzLCAgIDU0NiwgICAyNDksICAgIDkwLCAgIC0yMiwgICAyMDcsDQorICAgMjk4LCAgIDM5NywgICAzODEsICAgMzE5LCAgIDIwMCwgICAgNjIsICAgMzAzLA0KKyAgIDQ3MywgICAzNzksICAgMTMzLCAgLTI0NywgIC02MzIsICAtNDQxLCAgICA3NSwNCisgICAyODQsICAgMjA4LCAgIDM5MSwgICAxMTUsICAgLTI1LCAgICA0NCwgICAgOTUsDQorICAgLTcyLCAgICA3OSwgICAtOTUsICAgLTYzLCAgLTEyOSwgIC0yOTMsICAgMjAzLA0KKyAgLTE2NCwgIC0zNDksICAgMTE1LCAgIDEyMiwgICAgNjksICAgIC0xLCAgIDM3OCwNCisgICAzNDgsICAgMTcwLCAgICA5OSwgICAgNTgsICAtMTc5LCAgLTMwMiwgICAxODgsDQorICAtMTkwLCAgICAtMiwgICAxNTAsICAgIDIzLCAgIC01MSwgICAtMTEsICAgMjE2LA0KKyAgLTYxNSwgIC04NjMsIC0xMDkwLCAtMTQyNywgIC04MDIsICAgLTQ4LCAgICAtNiwNCisgIC05NjEsIC0xMjc2LCAtMTU0OCwgIC03MjcsICAgLTU4LCAgICA1NiwgICAyMjMsDQorICAtMTI0LCAgLTI1NSwgIC01NjEsICAtOTg4LCAtMTI3NywgIC0xNDgsICAgLTgyLA0KKyAgLTQ4MCwgIC02NjAsICAtODkxLCAtMTE5MSwgLTEzMzksICAtMzI1LCAgICAyMCwNCisgIC02MjEsICAtOTE3LCAtMTI5NiwgLTEzNTAsICAgMjY0LCAgIDI4OSwgICAgNTAsDQorICAtODQ0LCAtMTAyMiwgLTEzNDUsIC0xMzI5LCAgLTI5MywgICAgNDYsICAgMjc4LA0KKyAgLTI2MCwgIC00NjgsICAtODI5LCAtMTE3NiwgIC01MzMsICAtNTYwLCAgIC03OCwNCisgIC0yMTUsICAtNDg0LCAgLTgyMiwgLTEyMzMsICAtNzkxLCAgICAxNSwgIC0xMzgsDQorICAxMzAxLCAgMTMxNywgIDEyNjIsICAxMDQ4LCAgIDcxNiwgICAzNTcsICAgLTY0LA0KKyAgIDU3OCwgICA4MjQsICAgOTI1LCAgIDgwMiwgICA2MzAsICAgMzYyLCAgIDEwMiwNCisgICA0NzAsICAgOTI1LCAgIDc2NywgICA1MTQsICAgMzI3LCAgIDE5MCwgIC0xMTIsDQorICAgMjI1LCAgIDQ5MiwgICA0OTUsICAgNDM3LCAgIDU5OCwgICAzODQsICAgLTQ1LA0KKyAgICA0MywgICAgODIsICAgLTQyLCAgIDE3NSwgICA1MTksICAgMzQyLCAgIC02NCwNCisgIC0zMDQsICAtMTU0LCAgIDE1OSwgICA1NzYsICAgNDAzLCAgIDIyMSwgICAzMjcsDQorICAgMjE0LCAgIDI0NCwgICAxMjIsICAgLTYyLCAgIDMxMiwgICAgOTIsICAtMTYwLA0KKyAgIDIxOCwgICAyMDgsICAgMzEwLCAgIDI2OCwgICAzMDYsICAgMzIzLCAgLTE5OSwNCisgIC0yODUsICAtMjY5LCAgIC03OSwgIC0xMjQsICAtMTQzLCAgLTE1MywgICAyMzYsDQorICAtMjA1LCAgLTM4NCwgIC00MjYsICAgMzQ0LCAgICA1OSwgIC0xODUsICAtMTg0LA0KKyAgLTI3MiwgICAyNDcsICAgMTI2LCAgLTIxMCwgIC01MTgsICAtNDY4LCAgICA3OCwNCisgICAtOTksICAtMTIwLCAgIDUwMiwgICAxNjAsICAtMjgwLCAgLTU1NywgICAzMDQsDQorICAtNDIzLCAgIC0xNywgIC0yODMsICAtNDQzLCAgIDIxNSwgICAyMTIsICAtMTQwLA0KKyAgLTU2NCwgIC02ODQsICAtMjI4LCAgIDUxMCwgICAzNjEsICAgMTMwLCAgIDMyMywNCisgIC00MjgsICAgMzM1LCAgICA5OCwgICAtNjUsICAgIDM2LCAgLTIxNSwgIC0yNDYsDQorICAtMzYyLCAgICA1MSwgICAzNjQsICAgLTE2LCAgLTIzNCwgICAxNTAsICAtMTY1LA0KKyAgIDkxNCwgICA4ODMsICAgNzUxLCAgIDY1MywgICA2NzYsICAgNDY0LCAgLTE1MywNCisgICA2MzEsICAgNTQ1LCAgIDUzNSwgICA3MjAsICAgNTk2LCAgIDM2MCwgICAtODEsDQorICAgNzgzLCAgIDcxMiwgICA1MTIsICAgNDM5LCAgIDM0MSwgICAyNTEsICAtMzkxLA0KKyAgIDQ5NywgICA0MTcsICAgMjQ5LCAgIDM3MiwgICAyOTUsICAgMTczLCAgLTE5MywNCisgICAxMjgsICAtMTEwLCAgLTM4NSwgICAgOTMsICAgIDM5LCAgIDE3MywgIC0yMzEsDQorICAgMjE2LCAgIC01OSwgIC0yNTMsICAgNDYyLCAgIDM4OSwgICAxNTQsICAgIDY5LA0KKyAgIDQ1NSwgICAyNzAsICAgIC00LCAgLTMzNywgICAtNDksICAgMjMzLCAgLTMyMiwNCisgICAzMDcsICAgMTQzLCAgICA1MywgICAyMTgsICAgMTI4LCAgIDIzNiwgIC0xNTYsDQorICAgLTM3LCAgLTE4NiwgIC0yNDAsICAtNDExLCAgLTExMCwgICAgIDksICAgMzk5LA0KKyAgLTE0MCwgIC0zNjUsICAtNjI4LCAgIDI1OCwgICAzODAsICAgMjE0LCAgIDI3NywNCisgICAxMzEsICAgNDU0LCAgIDE3NywgIC0yODUsICAtNTIwLCAgIDEwOCwgIC0yMTQsDQorICAgIDc3LCAgLTE0MSwgICAyMDEsICAtMTIzLCAgLTQ5MCwgIC0xMzEsICAgIDYwLA0KKyAgIC0xNCwgIC0xOTQsICAtNTIxLCAgLTc0MSwgICAyNzMsICAgMzYyLCAgIC0zMywNCisgIC0zNjIsICAtNTY2LCAgLTI4NywgIC0yMjgsICAgMTYxLCAgIDIzNywgICAzMTcsDQorICAtMjY5LCAgIDE5NSwgICAtNzUsICAtMzc1LCAgLTIwNCwgICAgMTEsICAgIDc3LA0KKyAgLTEyOCwgIC0yNjQsICAtMTU2LCAgLTIyMywgIC00NzUsICAgMjY1LCAgICAyNywNCisgIDEyMzgsICAxMTQ3LCAgIDkxNiwgICA2ODksICAgNDMyLCAgIDIxMCwgIC0yODAsDQorICAgODAwLCAgIDY2NCwgICA4NzksICAgNzI2LCAgIDQxMSwgICAxNjAsICAtMTY0LA0KKyAgIDQ1NCwgICA2ODYsICAgNTM2LCAgIDI3NSwgICAxNDcsICAgIDQ2LCAgIDExMSwNCisgICAzMDMsICAgNDg2LCAgIDUxMiwgICAzNTUsICAgMjQxLCAgIDE4MSwgICAtNjksDQorICAgIDc5LCAgICA5MiwgICAgMjksICAgMTQ3LCAgIDIzMywgICAgNTIsICAgIDE3LA0KKyAgLTE3MSwgICAyODksICAgMTMxLCAgIDQzOSwgICAyNzEsICAgICAzLCAgIC0xMCwNCisgICA0MTMsICAgMjQxLCAgIDE0NCwgICAxNzQsICAgMTU1LCAgICAtMiwgICAgMTQsDQorICAgIDU4LCAgIDIxNywgICAyNDcsICAgMjE5LCAgIDE0OSwgICAxNzUsICAgLTE4LA0KKyAgIDIyOCwgICAgLTgsICAtMjQwLCAgLTIwNiwgIC01MTMsICAtMTkxLCAgIDIwMiwNCisgICAtOTYsICAtMjcyLCAgLTQ1NCwgICAgMzMsICAtMzAwLCAgLTU3NSwgICAgNDYsDQorICAgLTEwLCAgLTEwOCwgIC0yNDYsICAtMzQ3LCAgLTc3MCwgIC01MzUsICAgICA5LA0KKyAgLTMyNiwgIC00MzAsICAgLTYxLCAgLTMyMSwgIC03MDQsICAtMjk5LCAgIDIwMSwNCisgICAgLTEsICAtMjgwLCAgLTYwMywgIC00MTksICAtMTg1LCAgICAxOCwgICAtMzYsDQorICAtNTE2LCAgLTUyMiwgIC0zNzksICAtMjkxLCAgLTE4MSwgICAtOTcsICAgIDI3LA0KKyAgLTE1OSwgIC0zMTMsICAtNTI1LCAgLTIyNCwgIC01MTAsICAtODMxLCAgLTE5NywNCisgIC0yOTIsICAtNDU5LCAgIC01OSwgIC0zMTAsICAtNTYyLCAgLTE0MywgIC0zNTEsDQorICAxMDY2LCAgIDkxMiwgICA2MzEsICAgMzg5LCAgIDIwNywgICAgODYsICAtMjI0LA0KKyAgIDU5NiwgICA1MTIsICAgNTk2LCAgIDUwNSwgICAzMTQsICAgMTIyLCAgIC00OCwNCisgICA3ODcsICAgODYxLCAgIDQ0MSwgICAtOTMsICAtMzAzLCAgICAzMywgIC0xOTAsDQorICAgMjU3LCAgIDQ2OSwgICAzMzcsICAgIDUxLCAgICAxNSwgICAyOTgsICAgLTkzLA0KKyAgIDI5NSwgICAgNzMsICAtMTE5LCAgICAyNSwgICAgMzYsICAgIDIzLCAgIDEwOCwNCisgICAtMjgsICAgIC0zLCAgIC0zMiwgICAxMTQsICAgIDIxLCAgIDE4NSwgICAxMDcsDQorICAgNDgyLCAgIDMwNSwgICAgMTUsICAtMjc5LCAgLTMxOSwgICAgNTIsICAgIDk2LA0KKyAgIDIyNiwgICAgNDYsICAgMTE1LCAgICA3MiwgIC0xMzYsICAgMTMzLCAgLTEyNSwNCisgICAgMTgsICAtMjA3LCAgLTU1OSwgIC01OTAsICAtNTAzLCAgLTQ4MiwgICAzMjEsDQorICAtNTcxLCAgLTc4OSwgIC05NTEsICAtMTcyLCAgLTQ0MSwgIC01MzgsICAgMTEzLA0KKyAgIDE4MSwgICAgMTQsICAtMzEwLCAgLTY0MSwgLTEwMDEsICAtMjAyLCAgIDE1OSwNCisgIC0xMzYsICAtMzkzLCAgLTQzMywgIC01MTMsICAtOTExLCAgLTE0NCwgICAtMjIsDQorICAgIDcyLCAgLTI2NSwgIC03MDYsICAtOTU0LCAgLTE1OSwgICAgNTMsICAgMzMyLA0KKyAgLTMzOCwgIC01OTEsICAtODUyLCAgLTM4MywgIC0zOTUsICAgIDU2LCAgICA0NCwNCisgICAgNDMsICAtMTU4LCAgLTQ2NCwgIC04OTcsICAtNjMxLCAgLTE1NywgIC0yOTQsDQorICAtMTYxLCAgLTEyOCwgIC0zMjgsICAtNTczLCAgLTQ4MywgIC0xMjUsICAgIDExLA0KKyAgMTAxNywgICA5MDYsICAxMDUxLCAgMTAwNSwgICA2NzksICAgMzQxLCAgLTEwMiwNCisgICAzNTksICAgMzM0LCAgMTU2NywgIDEzMTQsICAgNzIzLCAgIDEwNSwgICAgMTAsDQorICAgLTY1LCAgIDcyNiwgICA1MjksICAgMzAxLCAgIDIyMCwgICAgNDMsICAtMjczLA0KKyAgLTUxMCwgICA0MzYsICAgNzE5LCAgIDU2NiwgICAzNTgsICAgMTc5LCAgIDExNCwNCisgIC01NjAsICAgMjk4LCAgIDEzMywgIC0xMjAsICAgMzQyLCAgIDIyNSwgICAgMTQsDQorICAtODk5LCAgLTEwMSwgICAyMTcsICAgNjE3LCAgIDQwMCwgICAxNDYsICAgLTU4LA0KKyAgIC00MSwgICAzNTIsICAgIDgyLCAgLTE5NiwgICAgMzksICAgMTIxLCAgLTE2NywNCisgIC0yMTIsICAgIDU5LCAgIDQ0NywgICAyODQsICAgNDIzLCAgIDI1MCwgIC0xNjksDQorICAtMzcxLCAgLTQ4NCwgIC01OTYsICAgIDMwLCAgIC00MSwgICAyNDksICAgIDIyLA0KKyAgLTM3MiwgIC02NTAsICAtNzk0LCAgIDQ3NywgICA0NDUsICAgMjE2LCAgIC03OSwNCisgIC0zNTIsICAgMjc1LCAgICAxNywgIC00NDMsICAtOTI5LCAgICA5MiwgICAgMTksDQorICAtNjk5LCAgLTY5NiwgICA0MzEsICAgMjY0LCAgIC00OSwgIC0zMTAsICAgMTgyLA0KKyAgLTk3OCwgIC0yMTcsICAtNDMwLCAgLTQwMCwgICAxMDEsICAgMjYxLCAgICA3MiwNCisgIC05MjksICAtODg5LCAgLTM1NywgICAtMTMsICAgNDYzLCAgIDM3OCwgICAyMzYsDQorICAtODI2LCAgICA1NiwgICAgMzAsICAtMjk5LCAgLTM2MCwgIC0xMjgsICAgLTUxLA0KKyAgLTg3OCwgIC0yOTksICAtMTExLCAgICA3NSwgICAgNjUsICAgIDM2LCAgICAgMywNCisgICA4MTcsICAgMzY4LCAgIC0yNSwgICAzNTQsICAgNjk3LCAgIDU5MSwgIC0xNzMsDQorICAgMzA5LCAgIDIxMiwgICAyMjIsICAgNzUxLCAgIDQ4NCwgICAxNDAsICAgLTU2LA0KKyAgIDU5MywgICAzNzksICAgIDcwLCAgICAtOCwgICAyNTgsICAgMTgwLCAgIDExMCwNCisgICAxNjUsICAgLTQ2LCAgIDI1NSwgICAyOTcsICAgMjE5LCAgIDI3MywgICAxMDUsDQorICAgMTYwLCAgIC03MCwgIC0zNTgsICAtMTgxLCAgIDM3OSwgICAzMzAsICAgMzE5LA0KKyAgLTIzOCwgIC0zNjksICAtMTk4LCAgIDc0MCwgICA1ODAsICAgMzE5LCAgLTE0MywNCisgICAyMDEsICAgMTA5LCAgLTIwMiwgIC00NTYsICAgMzI4LCAgIDI3NiwgIC0xNDEsDQorICAgMjAzLCAgIDE3MCwgICAxMTEsICAgIDQyLCAgIDIwNywgICAzNjAsICAgMTg4LA0KKyAgLTM0NSwgIC0zOTksICAtNTEzLCAgLTIzMywgICA2NTAsICAgNDIyLCAgICA4MSwNCisgIC02MzUsICAtOTYxLCAtMTIyMCwgICA0NjMsICAgNTM5LCAgIDIwNCwgICAyMDksDQorICAgMjAyLCAgIC0yNSwgIC0xOTQsICAtNDk4LCAgLTc4NywgICAxOTMsICAtMTQzLA0KKyAgLTQ0OSwgIC01MzgsICAgMTk1LCAgLTEwNiwgIC0zMzEsICAgIDY4LCAgICA2MiwNCisgIC0yMjgsICAtNDc3LCAgLTg0MCwgIC01NzYsICAgMzE3LCAgIDEyOCwgICAyODMsDQorICAtNjcxLCAgLTkzNywgIC04MDcsICAtMTE0LCAgIDM5MSwgICAzMzUsICAgLTYyLA0KKyAgIDI0NiwgICAgIDIsICAtMzE0LCAgLTY3OSwgIC0zMDMsICAgMTgwLCAgIC04OCwNCisgIC0xMDcsICAtMjcyLCAgICA5MCwgIC0xOTgsICAgLTI4LCAgIDI5MCwgIC0xMTIsDQorICAgODg1LCAgMTE0OSwgIDEwMjEsICAgNzEyLCAgIDQ5NiwgICAyODEsICAgLTgzLA0KKyAgIDI2OSwgICA0OTIsICAgNzg3LCAgIDY0MywgICAzNDcsICAgIDcwLCAgIDEyNCwNCisgICAzMzYsICAgNjM2LCAgIDQ5OSwgICAgOTIsICAtMjI5LCAgLTE3OSwgICAxOTEsDQorICAgIDI2LCAgIDQwMiwgICA1NjQsICAgMzQwLCAgIDE0OSwgICAtMTEsICAgMTM1LA0KKyAgLTQ0MCwgICA1NjEsICAgNDcwLCAgIDIwNCwgICAtNzIsICAtMTg2LCAgIDE0MCwNCisgIC03MjAsICAgIDE0LCAgIDM1NSwgICAyMjksICAgIDY4LCAgLTEzMywgICA0NjUsDQorICAgMTEwLCAgIDMxMCwgICAxMDMsICAgIDEyLCAgIDEwNiwgICAgMjksICAgMTU4LA0KKyAgLTE3OCwgICAxMTMsICAgMTYxLCAgIDE0MiwgICAxMjEsICAgMTE1LCAgICAyNywNCisgIC02NTEsICAtNDE0LCAgLTY0NSwgIC0xNTIsICAtMTY0LCAgIC0xMywgIC00MjksDQorICAtNjM5LCAgLTk0NCwgIC02ODEsICAtMTA0LCAgIC04MSwgICAgNTIsICAtMTg5LA0KKyAgLTY2MywgIC0xNjQsICAtMzE2LCAgLTY4MywgIC05NTQsICAtMjA1LCAgIC04MywNCisgIC02MDksICAtNjY5LCAgLTE3MiwgIC01MTcsICAtNjk0LCAgIDI4MywgICAtODAsDQorICAtNjQ2LCAgLTE1MiwgIC0zODMsICAtNjc4LCAgLTI0NiwgICAtNDAsICAtMTQzLA0KKyAgLTc0NywgIC03OTYsICAtNzQ1LCAgLTM5MCwgICAtOTgsICAgIDQzLCAgIDI3NSwNCisgIC01OTksICAtMTk5LCAgLTM5OCwgIC00MzMsICAtNDM2LCAgLTUzOCwgICAgMzEsDQorIC0xMTA3LCAgLTU2OCwgIC0zNzYsICAtMjY1LCAgLTEyNiwgICAtMjEsICAgICAxLA0KKyAgIDg0NywgICA1NzMsICAgMzA4LCAgIDM5MiwgICAzMDUsICAgMTAxLCAgICA1NSwNCisgICAyNzMsICAgMjkzLCAgIDIwMSwgICAyNjcsICAgMzQ2LCAgIDIwMSwgICAxMjMsDQorICAgNzI3LCAgIDQ4MCwgICAyMjYsICAgICAyLCAgIC02NSwgIC0xMzgsICAgMTY0LA0KKyAgIDI3MywgICAyMDgsICAgMTczLCAgIDI5MiwgICAgMTIsICAgMjUzLCAgIDE3NCwNCisgICAzNDAsICAgMjA3LCAgIDE4MCwgICAgODgsICAgMTE2LCAgICA0NiwgICA0NzUsDQorICAtNDYwLCAgLTE2NiwgICAtMzAsICAgIDEzLCAgIDExMCwgICAxNzMsICAgMzk2LA0KKyAgIDEzNywgICAgODgsICAgIDQzLCAgLTEzNywgICAtOTQsICAgIDM0LCAgIDI4NCwNCisgICAgOTYsICAgLTE0LCAgIDIyNiwgICAgNDAsICAgIDYzLCAgICA3MCwgICAxMzAsDQorICAtNDY3LCAgLTczNSwgLTEwMTIsIC0xMTc0LCAgLTMwNywgICAzMDUsICAgLTY3LA0KKyAgLTYxMiwgIC05MjAsIC0xMTQ2LCAgLTU2NywgICAgLTgsICAgIDkyLCAgIC0yNSwNCisgIC0xODIsICAtMjcxLCAgLTQ5MiwgIC03NTQsICAtODU3LCAgIDI4NywgICAtNzUsDQorICAtNDk0LCAgLTc4NywgIC02ODksICAtNjgzLCAgLTcwOSwgICAxMzcsICAtMzI2LA0KKyAgLTI4OCwgIC01NTAsICAtOTAzLCAtMTEwNSwgICAzMzQsICAgMzIxLCAgIC02MiwNCisgIC0zNTQsICAtNjUzLCAgLTgzNCwgIC00NDUsICAgICAxLCAgIDM3NywgIC0xNTIsDQorICAtMTYyLCAgLTMwNiwgIC02MDgsICAtOTM3LCAgLTI5NywgICAyNDcsICAtMTkyLA0KKyAgLTIzNCwgIC00NzcsICAtMjQ0LCAgLTQ4OCwgIC0yNjYsICAgMzQyLCAgLTMzMn07DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogMm5kIHN0YWdlIGNvZGVib29rOyAxc3Qgc3BsaXQ6ICAgaXNmMl8wIHRvIGlzZjJfMg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisNCitzdGF0aWMgV29yZDE2IGRpY28yMV9pc2ZbU0laRV9CSzIxKjNdID0gew0KKw0KKyAgIDMyOSwgICA0MDksICAgMjQ5LA0KKyAgIC0zMywgICA1MDUsICAgMTYwLA0KKyAgIC0yOSwgICAtMTQsICAgNTgyLA0KKyAgLTI2MiwgICAxMjcsICAgMzU0LA0KKyAgIDE0NSwgICAyMzcsICAgMTc1LA0KKyAgLTE1MiwgICAyNDUsICAgMTIyLA0KKyAgICAyNywgICAgNDIsICAgMzQwLA0KKyAgIC04NCwgICAtOTMsICAgMzExLA0KKyAgIDI4NSwgICAyMjIsICAtMTU2LA0KKyAgICA0NywgICAtNDMsICAtNTA0LA0KKyAgIDIzNCwgICAxMjEsICAgMzg1LA0KKyAgIDEwNCwgIC0zMTcsICAgIDQ1LA0KKyAgIDE3NiwgICAxOTUsICAgICA4LA0KKyAgIDEwNCwgICAtNTksICAgLTk0LA0KKyAgIDE3NywgICAgNTMsICAgMTkyLA0KKyAgIC0zNCwgIC0xMjcsICAgMTUyLA0KKyAgIDU3MCwgICAyNzcsICAgLTM0LA0KKyAgIC02NywgIC0zMjksICAtNjM5LA0KKyAgLTE1NywgIC0yNzIsICAgNDYyLA0KKyAgLTE3NywgIC00NjIsICAgMTk4LA0KKyAgIDMyMiwgICAxNzksICAgMTE1LA0KKyAgLTM4NiwgICAxNzEsICAgIDE5LA0KKyAgICAxOSwgICAtMTIsICAgMTk1LA0KKyAgLTEyMCwgIC0yNTIsICAgMjAxLA0KKyAgIDMwNCwgICAgMzYsICAtMzM2LA0KKyAgLTEyOCwgIC0yMjEsICAtMzgwLA0KKyAgIDE3MSwgIC0xODUsICAgMjk2LA0KKyAgLTI0MiwgIC0zMTIsICAgIDIzLA0KKyAgIDE5OCwgICAgMzksICAgIDE2LA0KKyAgICAtMywgIC0xNzcsICAtMTExLA0KKyAgIDExMSwgICAtOTMsICAgIDc2LA0KKyAgIC05MiwgIC0yMjMsICAgICA0LA0KKyAgIDE3NywgICA0MDYsICAgLTQ0LA0KKyAgLTE2OCwgICAzODAsICAtMTQ5LA0KKyAgICAtNCwgICAyNzMsICAgMzMxLA0KKyAgLTQyMCwgICA1MTMsICAgMjc3LA0KKyAgICAyMSwgICAyNDcsICAgIDQ3LA0KKyAgIC01OCwgICAxMzEsICAgIC0yLA0KKyAgICAtMywgICAxMzQsICAgMTgwLA0KKyAgLTE0NSwgICAgNDAsICAgMTc1LA0KKyAgIDE4OSwgICAgNzQsICAtMTQ1LA0KKyAgIC0yNywgICAtNDUsICAtMzI1LA0KKyAgIDM3MCwgIC0xMTQsICAgLTIxLA0KKyAgIC04MywgIC00MTUsICAtMTczLA0KKyAgICA3NywgICAgOTUsICAgLTUxLA0KKyAgIC00MCwgICAtMzAsICAgLTY3LA0KKyAgICA3MSwgICAgODgsICAgIDg2LA0KKyAgIC0zNSwgICAtOTgsICAgIDE0LA0KKyAgICA2OSwgICAxOTcsICAtMzM0LA0KKyAgLTE5NiwgICAgNzksICAtMjMxLA0KKyAgLTM0OCwgIC0xMzcsICAgMjE4LA0KKyAgLTM1MiwgICAtODksICAgLTg1LA0KKyAgICA0NywgICAyMDEsICAtMTMwLA0KKyAgLTE2NSwgICAgMzcsICAgLTE1LA0KKyAgIC00MywgICAgIDMsICAgIDg2LA0KKyAgLTE2MSwgIC0xMDgsICAgIDc5LA0KKyAgICA4MywgICAgMjEsICAtMjM3LA0KKyAgIC04MSwgIC0xNDksICAtMjM4LA0KKyAgIDE1MCwgIC0xODYsICAtMjUxLA0KKyAgLTE4NiwgIC0yNDksICAtMTYyLA0KKyAgIC0xOSwgICAgNjYsICAtMTM5LA0KKyAgIC0yNiwgICAtNTAsICAtMTgxLA0KKyAgICAyNCwgICAgMTEsICAgICAwLA0KKyAgLTEzMCwgIC0xMDUsICAgLTk4fTsNCisNCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAybmQgc3RhZ2UgY29kZWJvb2s7IDJuZCBzcGxpdDogICBpc2YyXzMgdG8gaXNmMl81DQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKw0KK3N0YXRpYyBXb3JkMTYgZGljbzIyX2lzZltTSVpFX0JLMjIqM10gPSB7DQorDQorICAtMTI3LCAgIDMxMCwgICAgNDIsDQorICAtMjQyLCAgIDE5NywgICAgIDUsDQorICAtMTUxLCAgICA4NCwgICAtMTcsDQorICAtMjE0LCAgIDEyNywgIC0xNDksDQorICAtMjQ3LCAgLTEzMSwgICAxNTksDQorICAtMjY4LCAgLTI2NywgICAtOTUsDQorICAtMjE3LCAgICAgMSwgICAtNzksDQorICAtMjcxLCAgIC04MCwgIC0xODUsDQorICAgLTQ1LCAgIDQzNiwgICAxNTksDQorICAgMTY1LCAgIDE5OSwgICAzOTEsDQorICAgLTMzLCAgICA4MSwgICAxODcsDQorICAgLTY2LCAgIC00MiwgICAzNTUsDQorICAtMjk4LCAgIC01NywgICAzNDMsDQorICAtMTA4LCAgLTUzNywgICAyMjYsDQorICAtMTQ0LCAgIC0yMywgICAxOTMsDQorICAgMTc2LCAgLTQwMiwgICAgODcsDQorICAgIDUzLCAgIDI5NiwgICAgMjUsDQorICAgLTg0LCAgIDI1MywgIC0xMDQsDQorICAgLTU4LCAgIDEwNSwgIC0xMjYsDQorICAtMTY5LCAgIDE3NCwgIC0zMTQsDQorICAgLTQ4LCAgICA0NCwgIC0yOTQsDQorICAtMTY0LCAgLTQxNywgIC0yNDIsDQorICAtMTM5LCAgICAgMywgIC0xOTQsDQorICAtMTU1LCAgLTIwNywgIC0yMTEsDQorICAgMTE5LCAgIDMyMiwgICAyMTMsDQorICAgMzMzLCAgICA1MCwgICAzODAsDQorICAgMjM3LCAgIDI0NywgICAgLTIsDQorICAgNDY2LCAgIC0xNiwgICAyMDEsDQorICAgMjM4LCAgLTI1NSwgIC0xMDcsDQorICAgIDY3LCAgLTQ0MCwgIC0xNDksDQorICAgMTIyLCAgIC04OCwgIC0xMzksDQorICAgIDg4LCAgLTI0NywgICAtNzMsDQorICAgLTQxLCAgIDIzMSwgICAxNjcsDQorICAgLTYyLCAgIDE1NSwgICAgMTYsDQorICAgLTY1LCAgICAxNiwgICAgNzcsDQorICAgLTY4LCAgICAtMiwgICAtNjMsDQorICAtMTUxLCAgLTMwMCwgICAxNjAsDQorICAgLTE4LCAgLTMzMywgICAgNTQsDQorICAgLTU2LCAgIC05NCwgICAgIDUsDQorICAgICAyLCAgLTE5MCwgICAgMTQsDQorICAgIDkyLCAgIDE0OCwgICAyMDksDQorICAgMTA4LCAgICAgOSwgICAyNzIsDQorICAgMTA4LCAgICAzNSwgICAxMTAsDQorICAgMTQyLCAgIC04NSwgICAxNDUsDQorICAgIDQ3LCAgLTE1NywgICAyNzksDQorICAgICAzLCAgLTMyMCwgICAyNDYsDQorICAgIDQzLCAgIC03MiwgICAgNjgsDQorICAgIDg2LCAgLTIxNywgICAxMzUsDQorICAgIDM2LCAgIDE0MCwgICAgNzksDQorICAgIDU2LCAgIDE3NSwgICAtNDksDQorICAgIDI2LCAgICA0NSwgICAgIDMsDQorICAgIDczLCAgICA1NSwgIC0xMDEsDQorICAgMTA5LCAgLTE4MywgIC0yNDIsDQorICAgIC00LCAgLTI4MywgIC0yNDIsDQorICAgIDQ4LCAgIC02OCwgICAtNDgsDQorICAgIC02LCAgLTE1MywgIC0xMjIsDQorICAgMTYxLCAgIDE5NiwgICAgOTYsDQorICAgMjMyLCAgICA4MCwgICAxOTAsDQorICAgMTY1LCAgICA5NywgICAgMTEsDQorICAgMjU4LCAgIC0zMSwgICAgNzEsDQorICAgMjY3LCAgIC03NywgICAtOTEsDQorICAgMzExLCAgLTIwOSwgICAgODcsDQorICAgMTUyLCAgIC0xNCwgICAtMjIsDQorICAgMTUwLCAgLTE0OSwgICAgIDksDQorICAtMzI0LCAgIDU1NywgICAxODcsDQorICAtMzg0LCAgIDMwNywgICAgNDYsDQorICAtMjUxLCAgICAyNywgICAgNzcsDQorICAtMzY1LCAgICA3NywgICAtNTIsDQorICAtNDgyLCAgIC04NCwgICAxNjAsDQorICAtNDI0LCAgLTUxNSwgICAtNjQsDQorICAtMjk0LCAgLTEyMCwgICAgLTQsDQorICAtNDc2LCAgLTExNiwgIC0xMDksDQorICAgLTk3LCAgIDMxOCwgICAzNjUsDQorICAgMTA2LCAgIDYyNywgICA0NDUsDQorICAtMTkwLCAgIDEyMCwgICAyODcsDQorICAtMTQ2LCAgICA2NSwgICA2MTksDQorICAtNDI3LCAgIDI0MiwgICAzNjMsDQorICAtMzYxLCAgLTM3MSwgICA0MzIsDQorICAtMzQ3LCAgIDEwMiwgICAxNjgsDQorICAtNjI5LCAgIDE5NSwgICAtMTQsDQorICAgLTY1LCAgIDQ3NiwgICAtNDcsDQorICAtMjk3LCAgIDMyMCwgIC0xNjgsDQorICAgLTU1LCAgIDM1NiwgIC0yNjQsDQorICAtMzkxLCAgICA4MiwgIC0yODYsDQorICAgLTUxLCAgIC0zMSwgIC01NTYsDQorICAtMTc4LCAgLTM5OSwgIC01ODYsDQorICAtMjA1LCAgIC00OSwgIC0zNjAsDQorICAtMzQzLCAgLTIzOCwgIC0zMzcsDQorICAgMjIwLCAgIDQ1NywgICAgNTgsDQorICAgNTYxLCAgIDQ2NywgICAyNTksDQorICAgMzQwLCAgIDI3MCwgIC0xNjgsDQorICAgNDUwLCAgICA3NywgIC0yODAsDQorICAgIDYwLCAgIDE2NywgIC00MTMsDQorICAgMTMzLCAgLTI1MiwgIC00OTIsDQorICAgMjE2LCAgIDE1NywgIC0yOTAsDQorICAgMjgyLCAgICAgMCwgIC00OTUsDQorICAtMjI2LCAgIDI5MywgICAxODMsDQorICAtMTU3LCAgIDEzNSwgICAxMjIsDQorICAtMTU4LCAgIC01OSwgICAgMzksDQorICAtMTMzLCAgLTExOCwgICAtOTcsDQorICAtMzMyLCAgLTMwOSwgICAxMTMsDQorICAtMTYwLCAgLTQyNSwgICAgLTYsDQorICAtMTQ5LCAgLTIxMSwgICAgMjQsDQorICAgLTgwLCAgLTI3NywgICAtOTAsDQorICAgLTExLCAgIDEyNSwgICAzMzgsDQorICAgMTMwLCAgIC03MSwgICA0NjUsDQorICAgICA1LCAgIC00NSwgICAxODQsDQorICAgMjM3LCAgIC05NSwgICAyNTMsDQorICAtMTM5LCAgLTE5NywgICAyOTcsDQorICAgLTE5LCAgLTMwMCwgICA1MTEsDQorICAgLTYzLCAgLTE1MiwgICAxMzksDQorICAgMjUwLCAgLTI4OSwgICAzMzYsDQorICAgMTI0LCAgIDMzOSwgIC0xNTAsDQorICAgIDM0LCAgIDE3NiwgIC0yMDgsDQorICAgMTcxLCAgIDE2NiwgIC0xMTYsDQorICAgIDk0LCAgICAzOCwgIC0yMjksDQorICAgIDc1LCAgIC02NSwgIC0zMzksDQorICAgLTc4LCAgLTIwNSwgIC0zODUsDQorICAgICAwLCAgIC0zMCwgIC0xNjMsDQorICAgLTU2LCAgLTExMCwgIC0yNDIsDQorICAgMzIxLCAgIDI0NCwgICAxOTQsDQorICAgNTA1LCAgIDIzOCwgICAgLTEsDQorICAgMzE3LCAgIDExNiwgICAgNjUsDQorICAgMzA5LCAgICA4OCwgICAtNzQsDQorICAgNDUyLCAgIC01MSwgICAtNTAsDQorICAgMzM0LCAgLTIxNywgIC0yOTAsDQorICAgMjExLCAgICA0MSwgIC0xNTIsDQorICAgMjM4LCAgIC01NSwgIC0yNjB9Ow0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIDJuZCBzdGFnZSBjb2RlYm9vazsgM3JkIHNwbGl0OiAgIGlzZjJfNiB0byBpc2YyXzgNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorDQorc3RhdGljIFdvcmQxNiBkaWNvMjNfaXNmW1NJWkVfQksyMyozXSA9IHsNCisNCisgICAtMTAsICAgMTUxLCAgIDM1OSwNCisgICAxMzYsICAgMjk4LCAgIDIyMywNCisgICAyNTUsICAtMTA0LCAgIDI5MCwNCisgICA0MjMsICAgICA2LCAgIDE4MywNCisgIC0yNzAsICAtMjY5LCAgIC05OCwNCisgICAtNTIsICAgLTgyLCAgICAxMywNCisgICAtODIsICAtMjc0LCAgIC05NywNCisgICAgOTAsICAtMjQ2LCAgIC03MiwNCisgIC0yOTksICAgLTcwLCAgIDQyMSwNCisgICAtODgsICAgMzY1LCAgIDQzMCwNCisgICAxODcsICAtMzE4LCAgIDM4MSwNCisgICAzODAsICAgIDM3LCAgIDQ4OCwNCisgIC0zNzMsICAtMzE2LCAgICA3OSwNCisgIC0zMDgsICAtMTAxLCAgICAgNSwNCisgIC0xMzUsICAtNDUxLCAgICAgOCwNCisgICAgNzIsICAtNDIxLCAgLTE1NCwNCisgICAxODAsICAgMTcwLCAgLTEyMSwNCisgICAgNjIsICAgMTc3LCAgIC00MCwNCisgICAzMjYsICAgIDgwLCAgLTEwNSwNCisgICAyNDgsICAgMjYzLCAgICAtNSwNCisgIC0xNjgsICAtMTgxLCAgLTIyMSwNCisgICAgLTIsICAgLTIzLCAgLTE1OCwNCisgICAtMTQsICAtMTQ5LCAgLTEyMSwNCisgICAxMTksICAgLTkxLCAgLTE0NywNCisgICAxMTksICAgMzMyLCAgLTE1MywNCisgICAgNDksICAgMzAzLCAgICAzNCwNCisgICA0NDIsICAgLTU1LCAgIC02OSwNCisgICAyMTcsICAgNDU0LCAgICA1OCwNCisgIC0zNTksICAtMTg3LCAgLTM3NSwNCisgICAtNDIsICAgIDUwLCAgLTI3NCwNCisgICAgLTgsICAtMjY3LCAgLTI0OSwNCisgICAgODUsICAgLTg2LCAgLTM0NiwNCisgICAtNzcsICAgLTQwLCAgIDM0NSwNCisgICAgODksICAgMTM0LCAgIDIxOSwNCisgICAxNTYsICAgLTgwLCAgIDE2MCwNCisgICAxMDgsICAgIDQwLCAgIDExNiwNCisgIC0xNTgsICAtMjA2LCAgICAyOSwNCisgICAgIDUsICAgLTMyLCAgIDE3NSwNCisgICAtNjUsICAtMTU4LCAgIDE0NiwNCisgICAgNTUsICAgLTc4LCAgICA3MywNCisgIC0xMTQsICAtMjIyLCAgIDM1MywNCisgICAtNDcsICAgIDgxLCAgIDIxMSwNCisgICAgNDksICAtMTUxLCAgIDI2OCwNCisgICAxMDUsICAgICA0LCAgIDMwMiwNCisgIC0yNjMsICAtMTMyLCAgIDE4MywNCisgIC0xNTEsICAgLTI4LCAgIDIwMSwNCisgIC0xNzcsICAtMzA3LCAgIDE2NiwNCisgICAxMDEsICAtMjIxLCAgIDEzMCwNCisgICAgNzQsICAgIDU4LCAgIC05OCwNCisgICAgMzIsICAgIDQ0LCAgICAxMywNCisgICAxOTQsICAgIDMwLCAgLTE0MiwNCisgICAxNzAsICAgIDk2LCAgICAgOCwNCisgIC0xMzYsICAtMTE5LCAgIC05MSwNCisgICAtNjUsICAgICA4LCAgIC01NSwNCisgICAgIDMsICAtMTg4LCAgICAxMiwNCisgICAgNDUsICAgLTYzLCAgIC00OSwNCisgICAxNDksICAgLTIxLCAgIC0xOSwNCisgICAgMjQsICAgMTQ0LCAgICA5NSwNCisgICAyNTQsICAgLTIyLCAgICA2MCwNCisgICAxNjEsICAgMTk2LCAgICA5NiwNCisgIC0xNTgsICAgLTYxLCAgICA0OCwNCisgICAtNzAsICAgIDMzLCAgICA4MiwNCisgICAtMjMsICAtMzIxLCAgICA1OCwNCisgICAxNTUsICAtMTQ3LCAgICAgNSwNCisgIC0zNjQsICAgMzI4LCAgICA3NywNCisgICAtMjEsICAgNDUzLCAgIDE3MywNCisgIC0xMDgsICAgIDgyLCAgIDYzMCwNCisgICAzNjcsICAgMjYzLCAgIDIwOCwNCisgIC0zMDAsICAgLTYyLCAgLTE3NiwNCisgIC0yMDUsICAgMTQzLCAgLTE1OCwNCisgIC0xNjksICAtNDEwLCAgLTI2NCwNCisgICAyNTcsICAtMjY5LCAgLTEwMCwNCisgIC02MzYsICAgMjg5LCAgICAtMiwNCisgIC0yOTIsICAgNjI3LCAgIDE3MywNCisgIC0zODIsICAtMzYzLCAgIDM4NywNCisgICAyNDgsICAgNTI0LCAgIDQ0NywNCisgIC01MjEsICAtMTExLCAgLTEwNywNCisgIC0zOTUsICAgMTE4LCAgLTI3NCwNCisgIC0zNDMsICAtNjgwLCAgLTEyNSwNCisgIC0xNzIsICAtNDQ3LCAgLTY2MywNCisgICAgNzUsICAgMTQ4LCAgLTM2NywNCisgICAtNzksICAgMjYzLCAgIC05NCwNCisgICAyNDksICAgMTQ4LCAgLTI4NiwNCisgICAzODAsICAgMjcxLCAgLTE2MiwNCisgIC0xNDIsICAgIC00LCAgLTE4NiwNCisgICAtNTcsICAgMTExLCAgLTEyNSwNCisgICAtMzUsICAtMTA4LCAgLTI1NCwNCisgICAxMDAsICAgIDI5LCAgLTI0MiwNCisgICAtODAsICAgMzAzLCAgLTI2NCwNCisgICAtNzgsICAgNDY0LCAgIC01NywNCisgICAyNDgsICAgLTIyLCAgLTQ5NCwNCisgICA2NjEsICAgNjYyLCAgICA0NCwNCisgIC0xOTMsICAgLTQwLCAgLTMzMCwNCisgIC0xNzgsICAgMTQ1LCAgLTMzNywNCisgICAtOTAsICAtMTk5LCAgLTQwMCwNCisgICAtNDAsICAgLTIzLCAgLTQ5OCwNCisgIC0xOTIsICAgMTE0LCAgIDMxNSwNCisgICAtNDEsICAgMjQ0LCAgIDE5MCwNCisgICAgODgsICAgLTk3LCAgIDQ4NSwNCisgICAyNDEsICAgIDgwLCAgIDIxMiwNCisgIC0yNDYsICAgIDQwLCAgICA4NywNCisgIC0xNTYsICAgMTQ3LCAgIDEzNCwNCisgICAgLTIsICAtMzM0LCAgIDIzOSwNCisgICAzMDgsICAtMjAzLCAgIDExMCwNCisgIC00NTksICAgMjUxLCAgIDQyMiwNCisgIC0yMTgsICAgMzEwLCAgIDIyOCwNCisgICAtODYsICAtMzQ2LCAgIDY1NCwNCisgICAxODQsICAgMTc1LCAgIDQyNSwNCisgIC00ODEsICAgLTYzLCAgIDE2OSwNCisgIC0zNDksICAgMTE3LCAgIDE4OCwNCisgIC0xMjUsICAtNTYwLCAgIDMxMCwNCisgICAxNTgsICAtNDE2LCAgICA5NCwNCisgICAgNDYsICAgMTcxLCAgLTE5MiwNCisgICAtNjMsICAgMTU3LCAgICAxNCwNCisgICAyNTYsICAgLTM1LCAgLTI3MSwNCisgICAzMjIsICAgMTIzLCAgICA1MywNCisgIC0yMTQsICAgICA0LCAgIC03NiwNCisgIC0xNTYsICAgIDg2LCAgIC0xOCwNCisgICAxMjgsICAtMTk3LCAgLTIzMiwNCisgICAyNjUsICAgLTkwLCAgIC05OCwNCisgIC0zMDgsICAgMzMyLCAgLTE0NSwNCisgIC0xMzEsICAgMzA4LCAgICA1OCwNCisgICA1MDksICAgIDU5LCAgLTMzOSwNCisgICA1NjIsICAgMTk2LCAgIC0xNCwNCisgIC0zNzgsICAgMTAwLCAgIC00NywNCisgIC0yMzQsICAgMjAyLCAgICAgMSwNCisgICAxMDQsICAtMjcwLCAgLTQ5MywNCisgICAzMTksICAtMjEwLCAgLTMyNX07DQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogMm5kIHN0YWdlIGNvZGVib29rOyA0dGggc3BsaXQ6ICAgaXNmMl85IHRvIGlzZjJfMTENCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIFdvcmQxNiBkaWNvMjRfaXNmW1NJWkVfQksyNCozXSA9IHsNCisNCisgICAtNzksICAgLTg5LCAgICAtNCwNCisgIC0xNzEsICAgIDc3LCAgLTIxMSwNCisgICAxNjAsICAtMTkzLCAgICA5OCwNCisgICAxMjAsICAtMTAzLCAgIDMyMywNCisgICAgMzIsICAgLTIyLCAgLTEyOSwNCisgICAgNzIsICAgIDc4LCAgLTI2OCwNCisgICAxODIsICAgLTc2LCAgIC02NiwNCisgICAzMDksICAgIDk5LCAgLTE0NSwNCisgIC0yMjksICAtMTU3LCAgIC04NCwNCisgIC0zODMsICAgIDk4LCAgIC03MSwNCisgICAtOTAsICAtMzUyLCAgICAxMiwNCisgIC0yODQsICAtMTc4LCAgIDE3OCwNCisgICAtNjUsICAtMTI1LCAgLTE2NiwNCisgICAtODcsICAtMTc1LCAgLTM1MSwNCisgICAgNDIsICAtMTk4LCAgIC00OCwNCisgICAxNTQsICAtMTQwLCAgLTI0MywNCisgICAtNzcsICAgIDE4LCAgIDEwOCwNCisgICAtMzksICAgMzU1LCAgICA5MSwNCisgICAgODcsICAgICA4LCAgIDE1NSwNCisgICAgLTQsICAgMTU4LCAgIDIzOSwNCisgICAxMjgsICAgIDk1LCAgIC01NCwNCisgICAgIDcsICAgMjQ2LCAgLTEyNCwNCisgICAyNTgsICAgIDE1LCAgICA4OSwNCisgICAyMDYsICAgMjE2LCAgICA5OCwNCisgIC0yMDEsICAgICA5LCAgICAxOCwNCisgIC0zMTIsICAgMjMzLCAgIDIwNCwNCisgICAtMzksICAtMTc0LCAgIDE1NSwNCisgIC0xNDQsICAgIC05LCAgIDI4NCwNCisgICAtNTcsICAgIDcwLCAgIC02OSwNCisgIC0xNTcsICAgMTg3LCAgICAxOCwNCisgICAgNTQsICAgLTMwLCAgICAyMywNCisgICAgMjQsICAgMTM1LCAgICA1NX07DQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogMm5kIHN0YWdlIGNvZGVib29rOyA1dGggc3BsaXQ6ICAgaXNmMl8xMiB0byBpc2YyXzE1DQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyBXb3JkMTYgZGljbzI1X2lzZltTSVpFX0JLMjUqNF0gPSB7DQorDQorICAgMTY5LCAgIDE0MiwgIC0xMTksICAgMTE1LA0KKyAgIDIwNiwgICAtMjAsICAgIDk0LCAgIDIyNiwNCisgIC0xMDYsICAgMzEzLCAgIC0yMSwgICAgMTYsDQorICAgLTYyLCAgIDE2MSwgICAgNzEsICAgMjU1LA0KKyAgIC04OSwgICAxMDEsICAtMTg1LCAgIDEyNSwNCisgICAgNzIsICAgLTMwLCAgLTIwMSwgICAzNDQsDQorICAtMjU4LCAgICAzMywgICAgLTgsICAgIDgxLA0KKyAgLTEwNCwgIC0xNTQsICAgIDcyLCAgIDI5NiwNCisgICAxNDQsICAgLTY4LCAgLTI2OCwgICAtMjUsDQorICAgIDgxLCAgIC03OCwgICAtODcsICAgMTA2LA0KKyAgICAyMiwgICAxNTUsICAtMTg2LCAgLTExOSwNCisgICAtNDYsICAgLTI4LCAgICAyNywgICAgOTEsDQorICAtMTE0LCAgIC0zNywgIC0xNzUsICAgLTMzLA0KKyAgIC05NCwgIC0yMjIsICAtMTg5LCAgIDEyMiwNCisgIC0xMzIsICAtMTE5LCAgLTE5MSwgIC0yNzAsDQorICAtMTcyLCAgLTE3MywgICAgMTgsICAgLTQzLA0KKyAgIDI3OSwgICAxMzUsICAgLTQyLCAgLTEyOCwNCisgICAxODcsICAgLTg2LCAgIDIyOSwgIC0xMzgsDQorICAgMTU5LCAgIDI0MCwgICAxNDAsICAgIDQ2LA0KKyAgICA2OSwgICAgMjUsICAgMjI3LCAgICA3NywNCisgICAgMjEsICAgMTE1LCAgICAxMywgICAgIDgsDQorICAgIDY4LCAgLTI0OCwgICAxMjYsICAgIDgxLA0KKyAgLTE1MCwgICAxMzcsICAgMjA3LCAgICAtOSwNCisgIC0xNTQsICAtMTMzLCAgIDI4OSwgICAgNjcsDQorICAgMTQzLCAgIC0zNywgICAtODYsICAtMzI2LA0KKyAgIDE4MCwgICAtMzIsICAgIDE5LCAgIC0yMywNCisgICAgMjYsICAgMTY4LCAgIDExNiwgIC0yMzMsDQorICAgLTMyLCAgIC0yNiwgICAxMTgsICAgLTc4LA0KKyAgICAgMywgICAgLTgsICAgLTQ1LCAgLTExNSwNCisgICAgNTcsICAtMjE1LCAgIC01NCwgICAtODMsDQorICAtMjA5LCAgIDExMiwgICAtMjIsICAtMTY3LA0KKyAgIC05MSwgIC0xNTEsICAgMTY4LCAgLTI2Mn07DQorDQorDQorDQorICAgICAgIC8qIDM2IGJpdCAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgaXNmIGNvZGVib29rczogIHR3by1zdGFnZSBWUSB3aXRoIHNwbGl0LWJ5LTMgaW4gMm5kIHN0YWdlICAgICAgICAqDQorICogICAgICAgICAgICAgICAgMXN0IHN0YWdlIGlzIGtlcHQgdGhlIHNhbWUgYXMgdGhlIDQ2IGJpdCBxdWFudGl6ZXIgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgY29kZWJvb2sgICB2ZWN0b3IgZGltZW5zaW9uICAgIG51bWJlciBvZiB2ZWN0b3JzICAgICAgICAgICAgICAgICAqDQorICogIH5+fn5+fn5+ICAgfn5+fn5+fn5+fn5+fn5+fiAgICB+fn5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAxXzEgICAgICAgICAgICA5ICAgICAgICAgICAgICAgICAgMjU2ICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMV8yICAgICAgICAgICAgNyAgICAgICAgICAgICAgICAgIDI1NiAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIDJfMSAgICAgICAgICAgIDUgICAgICAgICAgICAgICAgICAxMjggICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAyXzIgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgMTI4ICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMl8zICAgICAgICAgICAgNyAgICAgICAgICAgICAgICAgIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgV29yZDE2IGRpY28yMV9pc2ZfMzZiW1NJWkVfQksyMV8zNmIqNV0gPSB7DQorDQorICAgLTUyLCAgIC05NiwgICAyMTIsICAgMzE1LCAgIC03MywNCisgICAgODIsICAtMjA0LCAgIDM2MywgICAxMzYsICAtMTk3LA0KKyAgLTEyNiwgIC0zMzEsICAgMTgzLCAgIDIxOCwgICAxNDMsDQorICAgLTQ5LCAgIC00MSwgICA1NTcsICAgMjMwLCAgICA3MiwNCisgICAgIDIsICAgLTczLCAgIDE2MywgICAzNzcsICAgMjIxLA0KKyAgIDEzMywgICAxMTEsICAgMjc4LCAgIDIxNSwgIC0xMTAsDQorICAtMTAyLCAgIC0yMCwgICAyODQsICAgMTEzLCAgIDI3MywNCisgICAgODQsICAgMzE5LCAgIDI5MCwgICAgMTgsICAgIDg1LA0KKyAgIC0yNSwgICAgLTUsICAgMTI1LCAgIDEzMiwgIC0yMDQsDQorICAgLTM4LCAgICAtNSwgICAyODYsICAgIC05LCAgLTM1NiwNCisgIC0xNDAsICAtMjU2LCAgICA5MiwgICAxMTcsICAtMTg5LA0KKyAgLTE0NCwgICAxOTEsICAgMzEzLCAgICA1MSwgICAtOTgsDQorICAgMTY3LCAgIC0xMCwgICAgNDQsICAgMjQ3LCAgICAzNiwNCisgICAzODEsICAgMTk3LCAgIDIzOCwgICAgNzQsICAgICA2LA0KKyAgICAzOCwgIC00MDgsICAgIDI5LCAgICAtMywgICAtODUsDQorICAgIDkyLCAgIDI2NiwgICAxNTcsICAgLTI1LCAgLTIwMCwNCisgICAxNjEsICAtMTIxLCAgICA3MCwgICAgODQsICAtMTQwLA0KKyAgIC0xNiwgICAtODYsICAgMTEyLCAgIC05NCwgIC0xODksDQorICAtMjY5LCAgLTI3MCwgICAzNTEsICAgMTA3LCAgIC0yNCwNCisgICAtNjgsICAgLTY3LCAgIDQ5MiwgIC0xMDMsICAtMTU1LA0KKyAgIC01MywgIC0xMzEsICAgIDYyLCAgIDEyMiwgICAgMTAsDQorICAgMTM1LCAgICA4NCwgICAyODMsICAgLTU1LCAgLTEyMCwNCisgICAtMTIsICAtMjE5LCAgIDMzMSwgICAtODEsICAgMTY3LA0KKyAgIDIyMCwgIC0xMzYsICAgMTQ3LCAgLTE3MiwgICAtNDIsDQorICAgMTQwLCAgIC05NSwgIC0xMDksICAgLTg4LCAgLTE5NCwNCisgICAgIDAsICAgIC0yLCAgICAtNCwgICAtMzMsICAtMzgxLA0KKyAgIC02NiwgIC0yMTcsICAgMTUyLCAgLTE4NiwgIC00MDIsDQorICAgMjQ0LCAgIDEwOCwgICAxNTYsICAtMTQwLCAgLTM5NSwNCisgICAxMTMsICAtMTM2LCAgLTE5NiwgICAxMTAsICAgLTI0LA0KKyAgIDIxNCwgICAxMTgsICAgIDExLCAgIC02NCwgIC0xMzEsDQorICAtMTEwLCAgLTI4NiwgICAgLTYsICAtMzMyLCAgICAxNiwNCisgICAgOTQsICAgIDk3LCAgICA3OSwgIC0yOTEsICAtMjA1LA0KKyAgICAtNSwgICAtMzksICAgLTIwLCAgIDI1MiwgICAtOTYsDQorICAgIDc2LCAgIDE3NCwgICAxMDEsICAgMTYzLCAgICA2MSwNCisgICAtNjksICAtMjM5LCAgIC01NSwgICAzOTksICAgICA2LA0KKyAgLTExNSwgICAzMTksICAgMTY0LCAgIDI3NSwgICAxOTYsDQorICAgLTE1LCAgICAzNiwgICAtNDcsICAgMzMxLCAgIDEyMSwNCisgICAyMjYsICAgMjA5LCAgIDI3MSwgICAzMjUsICAgMTg0LA0KKyAgICAxMywgICAtODAsICAtMjE4LCAgIDQ3MSwgICAzNTMsDQorICAgMjg4LCAgIDM3OCwgICAgMTYsICAgLTUxLCAgIDI1MSwNCisgICAxNzQsICAgMTE2LCAgICA1MiwgICAxNDksICAtMjc5LA0KKyAgIDIzNSwgICAyNzYsICAgIDM5LCAgIDEyMCwgICAtNDgsDQorICAgICAwLCAgLTEwOCwgIC0xMDgsICAgMjQxLCAgLTMzOSwNCisgICAtOTMsICAgNTM0LCAgICA0NSwgICAgMzMsICAgLTg3LA0KKyAgIDE5NCwgICAxNDksICAgLTcxLCAgIDQwNSwgICAtNDQsDQorICAgNDA5LCAgIDM3MCwgICAgODEsICAtMTg2LCAgLTE1NCwNCisgICAgMjUsICAtMTAyLCAgLTQ0OCwgICAxMjQsICAtMTczLA0KKyAgICAyMiwgICA0MDgsICAtMTEwLCAgLTMxMCwgIC0yMTQsDQorICAgLTI2LCAgICAyMywgICAtODMsICAgMTE0LCAgICAxNCwNCisgIC0xMTAsICAgMTY0LCAgICA1MiwgICAyMjMsICAgLTgyLA0KKyAgICAzNywgICAtMjUsICAtMjYzLCAgIDMwNiwgICAtMTUsDQorICAtNDY2LCAgIDQxNSwgICAyOTIsICAgMTY1LCAgIC0xOCwNCisgICAgMjksICAgLTE5LCAgLTE3MSwgICAxNTUsICAgMTgyLA0KKyAgIDE3OSwgICAxNDQsICAgLTI3LCAgIDIzMSwgICAyNTgsDQorICAtMTAzLCAgLTI0NywgIC0zOTYsICAgMjM4LCAgIDExMywNCisgICAzNzUsICAtMTU0LCAgLTEwOSwgICAgLTQsICAgMTU2LA0KKyAgICA5OCwgICAgODUsICAtMjkyLCAgICAtNSwgIC0xMjQsDQorICAgMTE2LCAgIDEzOSwgIC0xMTYsICAgLTk4LCAgLTI5NCwNCisgICAtMTQsICAgLTgzLCAgLTI3OCwgIC0xMTcsICAtMzc4LA0KKyAgIDEwNiwgICAgMzMsICAtMTA2LCAgLTM0NCwgIC00ODQsDQorICAgMTE5LCAgICAxNywgIC00MTIsICAgMTM4LCAgIDE2NiwNCisgICAzODQsICAgMTAxLCAgLTIwNCwgICAgODgsICAtMTU2LA0KKyAgLTEyMSwgIC0yODQsICAtMzAwLCAgICAtMSwgIC0xNjYsDQorICAgMjgwLCAgICAzMywgIC0xNTIsICAtMzEzLCAgIC04MSwNCisgICAtMzcsICAgIDIyLCAgIDIyOSwgICAxNTMsICAgIDM3LA0KKyAgIC02MCwgICAtODMsICAgMjM2LCAgICAtOCwgICAtNDEsDQorICAtMTY5LCAgLTIyOCwgICAxMjYsICAgLTIwLCAgIDM2MywNCisgIC0yMzUsICAgIDE3LCAgIDM2NCwgIC0xNTYsICAgMTU2LA0KKyAgIC0yNSwgICAtMzAsICAgIDcyLCAgIDE0NCwgICAxNTYsDQorICAgMTUzLCAgIC0yNiwgICAyNTYsICAgIDk3LCAgIDE0NCwNCisgICAtMjEsICAgLTM3LCAgICA0OCwgICAtNjUsICAgMjUwLA0KKyAgICA2MywgICAgNzcsICAgMjczLCAgLTEyOCwgICAxMjQsDQorICAtMTI5LCAgIC0yNiwgICAgNDAsICAgICA5LCAgLTExNSwNCisgICAgLTYsICAgIDgyLCAgICAzOCwgICAtOTAsICAtMTgyLA0KKyAgLTMzNiwgICAtMTMsICAgIDI4LCAgIDE1OCwgICAgOTEsDQorICAgLTMwLCAgIDI0MSwgICAxMzcsICAtMTcwLCAgIC0xNywNCisgICAxNDYsICAgIDE0LCAgIC0xMSwgICAgMzMsICAgIDYxLA0KKyAgIDE5MiwgICAxOTcsICAgIDU0LCAgIC04NCwgICAgODUsDQorICAgIDIzLCAgLTIwMCwgICAtNzgsICAgLTI5LCAgIDE0MCwNCisgICAxMjIsICAgMjM3LCAgIDEwNiwgIC0zNDEsICAgMTM2LA0KKyAgIC01NywgIC0xNDIsICAgLTg1LCAgIC0xNiwgICAtNzQsDQorICAgLTU5LCAgIC05MCwgICAgLTgsICAtMTg3LCAgIC0yMCwNCisgIC0yMTEsICAtMjY3LCAgIDIxNiwgIC0xNzksICAtMTEwLA0KKyAgIC01MCwgICAgLTcsICAgMjIwLCAgLTI2NywgICAtNzAsDQorICAgLTU3LCAgIC00MiwgICAtMTcsICAgLTE1LCAgICA3MSwNCisgICAgMzIsICAgIDIxLCAgICA2MywgIC0xMzcsICAgIDMzLA0KKyAgLTEzNywgIC0xNzUsICAgMTA0LCAgIC02OCwgICAgOTcsDQorICAgLTY3LCAgIC00MywgICAxMzMsICAtMzAxLCAgIDIyMSwNCisgIC0xMTYsICAtMjAwLCAgIC04MSwgICAtOTIsICAtMjcyLA0KKyAgIC02NCwgICAtNDEsICAgLTU0LCAgLTI0NCwgIC0yMjAsDQorICAtMjg3LCAgLTI0MiwgICAtNTAsICAgLTg3LCAgIC04OSwNCisgIC0yNDUsICAgMjM2LCAgIDEwMiwgIC0xNjYsICAtMjk1LA0KKyAgICA2NiwgICAgMjQsICAtMTYyLCAgIC03MSwgICAgOTUsDQorICAgIDY2LCAgIDEzNiwgICAtOTAsICAtMjIwLCAgIC0zNiwNCisgICAtOTgsICAtMTYxLCAgLTIyMiwgIC0xODgsICAgIDI5LA0KKyAgIC0xOCwgICAgMTgsICAgLTE5LCAgLTQxNSwgICAgIDksDQorICAgIDQ5LCAgICA2MSwgICAxMDAsICAgIDM5LCAgIC01NiwNCisgIC0xMTEsICAgIDgyLCAgIDEzNSwgICAtMzEsICAgIDUyLA0KKyAgIC05MCwgIC0xNTMsICAgLTkzLCAgIDE4OSwgICAxODIsDQorICAtMjE0LCAgIDI5NSwgICAxMTksICAgLTc0LCAgIDI4NCwNCisgICAgIDIsICAgMTM3LCAgICAzNywgICAgNDcsICAgMTgyLA0KKyAgICA5MiwgICAxMTcsICAgMTg0LCAgIC01MywgICAzNzMsDQorICAgLTIxLCAgIC0xNCwgICAtMzUsICAgMTM2LCAgIDM5MSwNCisgICAxNDYsICAgMTI5LCAgLTE2NCwgICAtMjgsICAgMzMzLA0KKyAgICA5MiwgICAgODAsICAgLTg0LCAgIDEwMCwgIC0xMzQsDQorICAgIC04LCAgIDIxNywgICAtMzIsICAgICAzLCAgIC00NywNCisgIC0xNTEsICAgMjUxLCAgLTIxNSwgICAxNDIsICAgIDkyLA0KKyAgLTIyNCwgICAzMTAsICAtMTcyLCAgLTI3NSwgICAgOTgsDQorICAgMTU5LCAgIDE1NSwgIC0xNzcsICAgMTEyLCAgICA1MywNCisgICAyMDUsICAgIDI3LCAgICAgOCwgIC0yNDAsICAgMTkyLA0KKyAgIDE2OSwgICAxMjAsICAtMzE5LCAgLTIwMSwgICAxMDYsDQorICAgIDExLCAgICAzNiwgICAtODYsICAtMjM3LCAgIDQ1NSwNCisgIC0xMDksICAtMTU0LCAgLTE2MywgICAxNzQsICAgLTU1LA0KKyAgIC0zOCwgICAgMzIsICAtMTAxLCAgIC03OCwgICAtNTksDQorICAtMjA1LCAgLTMyMSwgICAtOTcsICAgIDY5LCAgICA3OSwNCisgIC0zMTAsICAgIDQ0LCAgICAxOCwgIC0xODUsICAgIDM0LA0KKyAgLTExNSwgICAtMjAsICAtMTQ4LCAgIC0zOSwgICAyMDMsDQorICAgLTI5LCAgIDE1NCwgICAtMzAsICAtMTU4LCAgIDE2NiwNCisgICAtNDUsICAtMTMxLCAgLTMxNywgICAtMjQsICAgMzYzLA0KKyAgLTE2NSwgIC0yMDUsICAtMTEyLCAgLTIyMiwgICAyNjUsDQorICAgLTMyLCAgIC00NCwgIC0xNTAsICAgIDU0LCAgLTE5MywNCisgICAgLTYsICAgLTM4LCAgLTI1NSwgIC0xNjksICAtMTE1LA0KKyAgLTI2NiwgICAgODcsICAtMTg5LCAgIC0zNiwgIC0xNjksDQorICAgLTYwLCAgIC04NywgIC0yNjYsICAtNDM2LCAgLTE3MCwNCisgICAtNjgsICAgLTgxLCAgLTI3OCwgICAgMjQsICAgIDM4LA0KKyAgIC0yMywgICAtMTksICAtMTU1LCAgLTI1NiwgICAxNDEsDQorICAgLTYxLCAgLTIyNiwgIC01NjUsICAtMTc1LCAgICA3MSwNCisgICAgIDksICAgLTI5LCAgLTIzNywgIC01MTUsICAgMjYzfTsNCisNCitzdGF0aWMgV29yZDE2IGRpY28yMl9pc2ZfMzZiW1NJWkVfQksyMl8zNmIqNF0gPSB7DQorDQorICAtMjk4LCAgICAtNiwgICAgOTUsICAgIDMxLA0KKyAgLTIxMywgICAtODcsICAtMTIyLCAgIDI2MSwNCisgICAgIDQsICAgLTQ5LCAgIDIwOCwgICAgMTQsDQorICAtMTI5LCAgLTExMCwgICAgMzAsICAgMTE4LA0KKyAgLTIxNCwgICAyNTgsICAgMTEwLCAgLTIzNSwNCisgICAtNDEsICAgLTE4LCAgLTEyNiwgICAxMjAsDQorICAgMTAzLCAgICA2NSwgICAxMjcsICAgLTM3LA0KKyAgIDEyNiwgICAtMzYsICAgLTI0LCAgICAyNSwNCisgIC0xMzgsICAgLTY3LCAgLTI3OCwgIC0xODYsDQorICAtMTY0LCAgLTE5NCwgIC0yMDEsICAgIDc4LA0KKyAgLTIxMSwgICAtODcsICAgLTUxLCAgLTIyMSwNCisgIC0xNzQsICAgLTc5LCAgIC05NCwgICAtMzksDQorICAgIDIzLCAgICAtNiwgIC0xNTcsICAtMjQwLA0KKyAgICAyMiwgIC0xMTAsICAtMTUzLCAgIC02OCwNCisgICAxNDgsICAgIC01LCAgICAtMiwgIC0xNDksDQorICAgIC0xLCAgLTEzNSwgICAtMzksICAtMTc5LA0KKyAgICA2OCwgICAzNjAsICAtMTE3LCAgIC0xNSwNCisgICAxMzcsICAgIDQ3LCAgLTI3OCwgICAxNDYsDQorICAgMTM2LCAgIDI2MCwgICAxMzUsICAgIDY1LA0KKyAgICA2MSwgICAxMTYsICAgLTQ1LCAgICA5NywNCisgICAyMzEsICAgMzc5LCAgICA4NywgIC0xMjAsDQorICAgMzM4LCAgIDE3NywgIC0yNzIsICAgICAzLA0KKyAgIDI2NiwgICAxNTYsICAgIDI4LCAgIC02OSwNCisgICAyNjAsICAgIDg0LCAgIC04NSwgICAgODYsDQorICAtMjY2LCAgIDE1NCwgIC0yNTYsICAtMTgyLA0KKyAgIC0xNywgICAtNjUsICAtMzA0LCAgICAtNiwNCisgICAtNDAsICAgMTc1LCAgLTE1MSwgIC0xODAsDQorICAgLTI3LCAgICAyNywgICAtODcsICAgLTYzLA0KKyAgIDEyMSwgICAxMTQsICAtMTY2LCAgLTQ2OSwNCisgICAxNTksICAgLTY2LCAgLTMyMywgIC0yMzEsDQorICAgMjE0LCAgIDE1MiwgIC0xNDEsICAtMjEyLA0KKyAgIDEzNywgICAgMzYsICAtMTg0LCAgIC01MSwNCisgIC0yODIsICAtMjM3LCAgICA0MCwgICAgMTAsDQorICAgLTQ4LCAgLTIzNSwgICAtMzcsICAgMjUxLA0KKyAgIC01NCwgIC0zMjMsICAgMTM2LCAgICAyOSwNCisgICAtODgsICAtMTc0LCAgIDIxMywgICAxOTgsDQorICAtMzkwLCAgICA5OSwgICAtNjMsICAtMzc1LA0KKyAgIDEwNywgIC0xNjksICAtMTY0LCAgIDQyNCwNCisgICAgNjksICAtMTExLCAgIDE0MSwgIC0xNjcsDQorICAgIDc0LCAgLTEyOSwgICAgNjUsICAgMTQ0LA0KKyAgLTM1MywgIC0yMDcsICAtMjA1LCAgLTEwOSwNCisgIC0xNjAsICAtMzg2LCAgLTM1NSwgICAgOTgsDQorICAtMTc2LCAgLTQ5MywgICAtMjAsICAtMTQzLA0KKyAgLTI1MiwgIC00MzIsICAgIC0yLCAgIDIxNiwNCisgICAtOTAsICAtMTc0LCAgLTE2OCwgIC00MTEsDQorICAgIDEzLCAgLTI4NCwgIC0yMjksICAtMTYwLA0KKyAgIC04NywgIC0yNzksICAgIDM0LCAgLTI1MSwNCisgICAtNzUsICAtMjYzLCAgIC01OCwgICAtNDIsDQorICAgNDIwLCAgICA1MywgIC0yMTEsICAtMzU4LA0KKyAgIDM4NCwgICAtMzUsICAtMzc0LCAgIDM5NiwNCisgICAgNjgsICAtMjI4LCAgIDMyMywgICAgLTIsDQorICAgMTY3LCAgLTMwNywgICAxOTIsICAgMTk0LA0KKyAgIDQ1OSwgICAzMjksICAgIC01LCAgLTMzMiwNCisgICAzNzUsICAgIDc5LCAgICAtNywgICAzMTMsDQorICAgMjgyLCAgLTEyNCwgICAyMDAsICAgLTkyLA0KKyAgIDI3MSwgIC0xNjIsICAgLTcwLCAgIDE4MCwNCisgIC0xNTcsICAtMjk4LCAgLTUxNCwgIC0zMDksDQorICAgIDU4LCAgLTE2MywgIC01NDYsICAgIDE4LA0KKyAgIDEyNCwgIC0zNjQsICAgMTY3LCAgLTIzOCwNCisgICAgODMsICAtNDExLCAgLTExNywgICAgOTYsDQorICAgMTQwLCAgLTExMiwgIC0zODgsICAtNjI0LA0KKyAgIDI1OSwgIC0xMzMsICAtMzE3LCAgICA0MSwNCisgICAxNjMsICAtMTMwLCAgIC02NCwgIC0zMzQsDQorICAgMjI2LCAgLTE2NSwgIC0xMjQsICAtMTEwLA0KKyAgLTQ2NiwgICAtNjEsICAgICA2LCAgIDIyOSwNCisgIC0xNTMsICAgMjA1LCAgLTE0NSwgICAyNDIsDQorICAtMTU5LCAgICA0OCwgICAxOTUsICAgMTQ4LA0KKyAgIC01OCwgICAgMjgsICAgIDMxLCAgIDI3OSwNCisgIC0zMDMsICAgMTg1LCAgIDI3OSwgICAgLTQsDQorICAgLTYxLCAgIDE5NywgICAgNTksICAgIDg2LA0KKyAgLTExNCwgICAxMjMsICAgMTY4LCAgIC01MiwNCisgICAgMzUsICAgIDM2LCAgIDEwMCwgICAxMjYsDQorICAtNDA3LCAgIDEwMiwgICAtNzcsICAgLTQwLA0KKyAgLTMzOCwgICAgLTEsICAtMzQyLCAgIDE1NiwNCisgIC0xNzksICAgMTA1LCAgIC0zNCwgICAtOTcsDQorICAtMTg1LCAgICA4NCwgICAtMzUsICAgMTA4LA0KKyAgLTEzMywgICAxMDcsICAgLTkxLCAgLTM1NywNCisgIC0xODAsICAgIDU0LCAgLTIyOSwgICAgMjQsDQorICAgLTQ0LCAgICA0NywgICAgNDcsICAtMTgyLA0KKyAgIC02NiwgICAgMTMsICAgIDQ1LCAgICAgNCwNCisgIC0zMzksICAgMjUxLCAgICA2NCwgICAyMjYsDQorICAgLTQyLCAgIDEwMSwgIC0zNTAsICAgMjc1LA0KKyAgIC05OSwgICAzOTgsICAgMTQyLCAgIDEyMSwNCisgICAxMTEsICAgIDEyLCAgLTEwMiwgICAyNjAsDQorICAgICAwLCAgIDUwNSwgICAyNjAsICAgLTk0LA0KKyAgIDE2MSwgICAyODUsICAgLTk2LCAgIDIyNCwNCisgICAgLTQsICAgMjA2LCAgIDMxNCwgICAgMzMsDQorICAgMTY3LCAgIDEzOSwgICAgODgsICAgMjA0LA0KKyAgLTIzNSwgICAzMTYsICAgLTYwLCAgIC0yNSwNCisgICAgLTgsICAtMTUwLCAgLTMxMiwgICAyMDEsDQorICAgLTM2LCAgIDI5MiwgICAgNjEsICAtMTA0LA0KKyAgIC00MCwgICAxNzQsICAtMTYyLCAgICA0MiwNCisgICAtMjEsICAgNDAyLCAgIC0yOSwgIC0zNTEsDQorICAgIDIxLCAgIDE1MiwgIC0zNjAsICAgLTkzLA0KKyAgICA1NywgICAxOTEsICAgMjEyLCAgLTE5NiwNCisgICAgNzYsICAgMTU4LCAgIC0yMSwgICAtNjksDQorICAtMzI4LCAgLTE4NSwgICAzMzEsICAgMTE5LA0KKyAgIC01MywgICAyODUsICAgIDU2LCAgIDMzNywNCisgIC0xMDcsICAgLTI0LCAgIDQwNSwgICAgMjksDQorICAgLTE4LCAgIDEzNywgICAyNzIsICAgMjc3LA0KKyAgLTI1NSwgICAgMjIsICAgMTczLCAgLTE5MSwNCisgICAyOTUsICAgMzIyLCAgIDMyNSwgICAzMDIsDQorICAgIDIxLCAgIC0yNywgICAzMzIsICAtMTc4LA0KKyAgIDExOSwgICAgMTMsICAgMjcxLCAgIDEyOSwNCisgIC00NTUsICAtMTgwLCAgIDExNiwgIC0xOTEsDQorICAtMjI3LCAgICA2MiwgIC0xNDgsICAgNTI0LA0KKyAgLTE3NiwgIC0yODcsICAgMjgyLCAgLTE1NywNCisgIC0yNDMsICAgIDEzLCAgIDE5OSwgICA0MzAsDQorICAgLTU5LCAgIC00OSwgICAxMTUsICAtMzY1LA0KKyAgICA3MiwgIC0xNzIsICAtMTM3LCAgICA5MywNCisgIC0xMzgsICAtMTI2LCAgIDE0MSwgICAtODQsDQorICAgICA1LCAgLTEyNCwgICAgMzgsICAgLTIwLA0KKyAgLTI1OCwgICAzMTEsICAgNjAxLCAgIDIxMywNCisgICAgOTQsICAgMTMwLCAgIC02MSwgICA1MDIsDQorICAgIC0xLCAgLTE1NywgICA0ODUsICAgMzEzLA0KKyAgIDE0NiwgICAtNzQsICAgMTU4LCAgIDM0NSwNCisgICAyNzYsICAgMTM1LCAgIDI4MCwgICAtNTcsDQorICAgNDkwLCAgIDI1MiwgICAgOTksICAgIDQzLA0KKyAgIDI2NywgICAtNzQsICAgNDI5LCAgIDEwNSwNCisgICAyNzgsICAgLTIzLCAgIDExOSwgICAgOTQsDQorICAtNTQyLCAgIDQ4OCwgICAyNTcsICAtMTE1LA0KKyAgIC04NCwgIC0yNDQsICAtNDM4LCAgIDQ3OCwNCisgIC0xMTMsICAtNTQ1LCAgIDM4NywgICAxMDEsDQorICAgLTk1LCAgLTMwNiwgICAxMTEsICAgNDk4LA0KKyAgICA5NSwgICAxNjYsICAgIDIyLCAgLTMwMSwNCisgICA0MjAsICAgLTE1LCAgIC01OCwgICAtNzgsDQorICAgMjcwLCAgICAyOSwgICAxMjIsICAtMjgyLA0KKyAgIDE2MCwgIC0yNDAsICAgIDUwLCAgIC0zOH07DQorDQorc3RhdGljIFdvcmQxNiBkaWNvMjNfaXNmXzM2YltTSVpFX0JLMjNfMzZiKjddID0gew0KKw0KKyAgICA4MSwgICAtMTgsICAgIDY4LCAgIC0yNywgIC0xMjIsICAtMjgwLCAgICAtNCwNCisgICAgNDUsICAtMTc3LCAgIDIwOSwgICAtMzAsICAtMTM2LCAgIC03NCwgICAxMzEsDQorICAgLTQ0LCAgIDEwMSwgICAtNzUsICAgLTg4LCAgIC00OCwgIC0xMzcsICAgLTU0LA0KKyAgLTI0NSwgICAtMjgsICAgIDYzLCAgIC0xOCwgIC0xMTIsICAtMTAzLCAgICA1OCwNCisgICAtNzksICAgIC02LCAgIDIyMCwgICAtNjUsICAgMTE0LCAgIC0zNSwgICAtNTAsDQorICAgMTA5LCAgIC02NSwgICAxNDMsICAtMTE0LCAgIDEyOSwgICAgNzYsICAgMTI1LA0KKyAgIDE2NiwgICAgOTAsICAgLTYxLCAgLTI0MiwgICAxODYsICAgLTc0LCAgIC00MywNCisgICAtNDYsICAgLTkyLCAgICA0OSwgIC0yMjcsICAgIDI0LCAgLTE1NSwgICAgMzksDQorICAgIDY3LCAgICA4NSwgICAgOTksICAgLTQyLCAgICA1MywgIC0xODQsICAtMjgxLA0KKyAgIDE0MiwgIC0xMjIsICAgICAwLCAgICAyMSwgIC0xNDIsICAgLTE1LCAgIC0xNywNCisgICAyMjMsICAgIDkyLCAgIC0yMSwgICAtNDgsICAgLTgyLCAgIC0xNCwgIC0xNjcsDQorICAgIDUxLCAgIC0zNywgIC0yNDMsICAgLTMwLCAgIC05MCwgICAgMTgsICAgLTU2LA0KKyAgICA1NCwgICAxMDUsICAgIDc0LCAgICA4NiwgICAgNjksICAgIDEzLCAgLTEwMSwNCisgICAxOTYsICAgIDcyLCAgIC04OSwgICAgNDMsICAgIDY1LCAgICAxOSwgICAgMzksDQorICAgMTIxLCAgICAzNCwgICAxMzEsICAgLTgyLCAgICAyNSwgICAyMTMsICAtMTU2LA0KKyAgIDEwMSwgIC0xMDIsICAtMTM2LCAgIC0yMSwgICAgNTcsICAgMjE0LCAgICAyMiwNCisgICAgMzYsICAtMTI0LCAgIDIwNSwgICAyMDQsICAgIDU4LCAgLTE1NiwgICAtODMsDQorICAgIDgzLCAgLTExNywgICAxMzcsICAgMTM3LCAgICA4NSwgICAxMTYsICAgIDQ0LA0KKyAgIC05MiwgIC0xNDgsICAgLTY4LCAgICAxMSwgIC0xMDIsICAtMTk3LCAgLTIyMCwNCisgICAtNzYsICAtMTg1LCAgIC01OCwgICAxMzIsICAgLTI2LCAgLTE4MywgICAgODUsDQorICAgIC03LCAgIC0zMSwgICAgLTIsICAgIDIzLCAgIDIwNSwgIC0xNTEsICAgIDEwLA0KKyAgIC0yNywgICAtMzcsICAgIC01LCAgIC0xOCwgICAyOTIsICAgMTMxLCAgICAgMSwNCisgICAxMTcsICAtMTY4LCAgICAgOSwgICAtOTMsICAgIDgwLCAgIC01OSwgIC0xMjUsDQorICAtMTgyLCAgLTI0NCwgICAgOTgsICAgLTI0LCAgIDEzNSwgICAtMjIsICAgIDk0LA0KKyAgIDIyMSwgICAgOTcsICAgMTA2LCAgICA0MiwgICAgNDMsICAtMTYwLCAgICA4MywNCisgICAgMjUsICAgLTY0LCAgIC0yMSwgICAgIDYsICAgIDE0LCAgIC0xNSwgICAxNTQsDQorICAgMTI2LCAgICAxNSwgIC0xNDAsICAgMTUwLCAgIC0xMCwgIC0yMDcsICAtMTE0LA0KKyAgICA3OSwgICAtNjMsICAtMjExLCAgIC03MCwgICAtMjgsICAtMjE3LCAgIDE2NSwNCisgICAgNDYsICAgIDM4LCAgIC0yMiwgICAyODEsICAgMTMyLCAgIC02MiwgICAxMDksDQorICAgMTEyLCAgICA1NCwgIC0xMTIsICAgLTkzLCAgIDIwOCwgICAgMjcsICAgMjk2LA0KKyAgIDExNSwgICAgMTAsICAtMTQ3LCAgICA0MSwgICAyMTYsICAgIDQyLCAgLTI3NiwNCisgICAgNTAsICAtMTE1LCAgLTI1NCwgICAxNjcsICAgMTE3LCAgICAtMiwgICAgNjEsDQorICAgIDE3LCAgIDE0NCwgICAgMzQsICAgLTcyLCAgLTE4NiwgIC0xNTAsICAgMjcyLA0KKyAgIC0yOSwgICAtNjYsICAgLTg5LCAgIC05NSwgIC0xNDksICAgMTI5LCAgIDI1MSwNCisgICAxMjIsICAgICAwLCAgIC01MCwgIC0yMzQsICAgLTkxLCAgICAzNiwgICAgMjYsDQorICAtMTA1LCAgLTEwMiwgICAtODgsICAtMTIxLCAgLTIzNiwgICAgLTcsICAgLTExLA0KKyAgLTIwNCwgICAxMDksICAgICA1LCAgLTE5MSwgICAxMDUsICAgLTE1LCAgIDE2MywNCisgICAtODAsICAgIDMyLCAgIC0yNCwgIC0yMDksICAgIDQxLCAgIDI5NCwgICAgNzAsDQorICAtMTA2LCAgIC05NCwgIC0yMDQsICAtMTE4LCAgIDEyMCwgICAtNTAsICAgLTM3LA0KKyAgIC04MiwgIC0yNDEsICAgIDQ2LCAgLTEzMSwgICAtMjksICAgMTUwLCAgIC01NSwNCisgICAgMzMsICAgMTU1LCAgIDEyMCwgICAtODksICAgIC04LCAgICAgNywgICAgNjIsDQorICAgMjEzLCAgICA4MiwgICAgNjEsICAgIDE4LCAgLTE2MSwgICAxNDQsICAgMTUyLA0KKyAgICAzMCwgICAxMzEsICAgIDY1LCAgIC04NywgIC0yNTUsICAgLTE3LCAgLTEwNywNCisgICAgLTgsICAgIDg1LCAgIC02NCwgICAgNTEsICAtMTYyLCAgIDIyMywgICAtNTMsDQorICAtMTM0LCAgIDI2MSwgICAgNjksICAgLTU2LCAgIDIxOCwgICAgNzIsICAtMTExLA0KKyAgICAgMiwgICAxNTUsICAtMTEzLCAgIC04NywgICAgNDksICAgIDg1LCAgIC0yOCwNCisgIC0xNjMsICAgIDQyLCAgICAtMSwgIC0xOTYsICAgICA3LCAgICAzOSwgIC0yNDUsDQorICAgIDE0LCAgLTEzNywgICAtNzksICAgIDExLCAgLTE2MCwgICAyMDIsICAtMjkzLA0KKyAgIC05NCwgICAgMzMsICAgMjA4LCAgIDEwMCwgICAgNTYsICAgLTQ0LCAgIDMyNiwNCisgICAtNzgsICAgLTQxLCAgIDIzMiwgICAgMTMsICAtMTQyLCAgIDIyNywgICAgODAsDQorICAgLTE2LCAgIC04NywgICAyMDEsICAgIDMzLCAgLTEzMywgICAgMTUsICAtMTgzLA0KKyAgIC01OCwgIC0xOTIsICAgLTQ3LCAgIDE4NCwgIC0xMjgsICAgMTMzLCAgICA5OSwNCisgIC0yMDUsICAgIDExLCAgLTE1NSwgICAgNzgsICAgIDUyLCAgICA3MiwgICAxNDEsDQorICAtMjQ2LCAgICAyNiwgICAgOTksICAgMTUxLCAgICA1OSwgICAxMTUsICAgLTY0LA0KKyAgIC03OSwgICAtNDcsICAgLTE2LCAgIC0xNCwgICAgIDYsICAgIDQ3LCAgIC00MywNCisgICAtNzIsICAtMTc4LCAgIC0yNywgICAxNjIsICAgMTEyLCAgICA0MywgIC0xNzQsDQorICAtMTc1LCAgIDIzOCwgICAxODYsICAgIDcxLCAgIC01NCwgIC0xODgsICAgLTc2LA0KKyAgLTIyNSwgICAyMzMsICAgIDM5LCAgIC0zOSwgIC0xNTgsICAgMTIyLCAgICA0NCwNCisgICAtMjYsICAgIDQzLCAgICA4NCwgICAxMzAsICAgLTkzLCAgIC01MSwgICAgMjIsDQorICAgICAzLCAgICA5MiwgIC0xNTAsICAgMTM2LCAgLTE4MiwgICAtNTcsICAgIDk3LA0KKyAgLTEzMSwgICAxNzksICAgLTc4LCAgICA4MCwgICAgOTEsICAtMTY1LCAgICA5MCwNCisgICAgLTIsICAgMTQ4LCAgICAxNSwgICAxMzAsICAgIDY1LCAgIDE3NSwgICAxMTcsDQorICAtMTM4LCAgIDExNCwgIC0xMzcsICAgMTMyLCAgICAgMywgICAtMTAsICAtMTg2LA0KKyAgIDE0MCwgICAgLTQsICAgLTM3LCAgIDI1NCwgICAtNjIsICAgIDkyLCAgLTEwOX07DQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9zdHJlYW0uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvc3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRiYzEzYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvc3RyZWFtLmgKQEAgLTAsMCArMSw0NyBAQAorDQorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCitGaWxlOgkJc3RyZWFtLmgNCisNCitDb250YWluczogICAgICAgVk9NRSBBUEkgQnVmZmVyIE9wZXJhdG9yIEltcGxlbWVudCBIZWFkZXINCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2lmbmRlZiBfX1NUUkVBTV9IX18NCisjZGVmaW5lIF9fU1RSRUFNX0hfXw0KKw0KKyNpbmNsdWRlICJ2b01lbS5oIg0KKyNkZWZpbmUgRnJhbWVfTWF4c2l6ZSAgMTAyNCAqIDIgIC8vV29yayBCdWZmZXIgMTBLIA0KKyNkZWZpbmUgRnJhbWVfTWF4Qnl0ZSAgNjQwICAgICAgICAvL0FNUl9XQiBFbmNvZGVyIG9uZSBmcmFtZSAzMjAgc2FtcGxlcyA9IDY0MCBCeXRlcw0KKyNkZWZpbmUgTUlOKGEsYikJICgoYSkgPCAoYik/IChhKSA6IChiKSkNCisNCit0eXBlZGVmIHN0cnVjdHsNCisJdW5zaWduZWQgY2hhciAqc2V0X3B0cjsNCisJdW5zaWduZWQgY2hhciAqZnJhbWVfcHRyOw0KKwl1bnNpZ25lZCBjaGFyICpmcmFtZV9wdHJfYms7DQorCWludCAgc2V0X2xlbjsNCisJaW50ICBmcmFtZWJ1ZmZlcl9sZW47IA0KKwlpbnQgIGZyYW1lX3N0b3JlbGVuOw0KKwlpbnQgIHVzZWRfbGVuOw0KK31GcmFtZVN0cmVhbTsNCisNCit2b2lkIHZvQVdCX1VwZGF0ZUZyYW1lQnVmZmVyKEZyYW1lU3RyZWFtICpzdHJlYW0sIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKTsNCit2b2lkIHZvQVdCX0luaXRGcmFtZUJ1ZmZlcihGcmFtZVN0cmVhbSAqc3RyZWFtKTsNCit2b2lkIHZvQVdCX0ZsdXNoRnJhbWVCdWZmZXIoRnJhbWVTdHJlYW0gKnN0cmVhbSk7DQorI2VuZGlmIC8vX19TVFJFQU1fSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy90eXBlZGVmLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3R5cGVkZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYThjMDk4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy90eXBlZGVmLmgKQEAgLTAsMCArMSw2NSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgIEZpbGUgICAgICAgICAgICAgOiB0eXBlZGVmLmMNCisqICAgICAgUHVycG9zZSAgICAgICAgICA6IEJhc2ljIHR5cGVzLg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfX1RZUEVERUZfSF9fDQorI2RlZmluZSBfX1RZUEVERUZfSF9fDQorDQorI3VuZGVmIE9SSUdJTkFMX1RZUEVERUZfSCAvKiBkZWZpbmUgdG8gZ2V0ICJvcmlnaW5hbCIgRVRTSSB2ZXJzaW9uDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0eXBlZGVmLmggICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKyNpZmRlZiBPUklHSU5BTF9UWVBFREVGX0gNCisvKg0KKyAqIHRoaXMgaXMgdGhlIG9yaWdpbmFsIGNvZGUgZnJvbSB0aGUgRVRTSSBmaWxlIHR5cGVkZWYuaA0KKyAqLw0KKyAgIA0KKyNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1pUQ19fKQ0KK3R5cGVkZWYgc2lnbmVkIGNoYXIgV29yZDg7DQordHlwZWRlZiBzaG9ydCBXb3JkMTY7DQordHlwZWRlZiBsb25nIFdvcmQzMjsNCit0eXBlZGVmIGludCBGbGFnOw0KKw0KKyNlbGlmIGRlZmluZWQoX19zdW4pDQordHlwZWRlZiBzaWduZWQgY2hhciBXb3JkODsNCit0eXBlZGVmIHNob3J0IFdvcmQxNjsNCit0eXBlZGVmIGxvbmcgV29yZDMyOw0KK3R5cGVkZWYgaW50IEZsYWc7DQorDQorI2VsaWYgZGVmaW5lZChfX3VuaXhfXykgfHwgZGVmaW5lZChfX3VuaXgpDQordHlwZWRlZiBzaWduZWQgY2hhciBXb3JkODsNCit0eXBlZGVmIHNob3J0IFdvcmQxNjsNCit0eXBlZGVmIGludCBXb3JkMzI7DQordHlwZWRlZiBpbnQgRmxhZzsNCisNCisjZW5kaWYNCisjZWxzZSAvKiBub3Qgb3JpZ2luYWwgdHlwZWRlZi5oICovDQorDQorLyoNCisgKiB1c2UgKGltcHJvdmVkKSB0eXBlIGRlZmluaXRpb24gZmlsZSB0eXBkZWZzLmggYW5kIGFkZCBhICJGbGFnIiB0eXBlDQorICovDQorI2luY2x1ZGUgInR5cGVkZWZzLmgiDQordHlwZWRlZiBpbnQgRmxhZzsNCisNCisjZW5kaWYNCisNCisjZW5kaWYgIC8vX19UWVBFREVGX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvdHlwZWRlZnMuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvdHlwZWRlZnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGI2NTdlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy90eXBlZGVmcy5oCkBAIC0wLDAgKzEsMjExIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorKg0KKyogICAgICBGaWxlICAgICAgICAgICAgIDogdHlwZWRlZnMuaA0KKyogICAgICBEZXNjcmlwdGlvbiAgICAgIDogRGVmaW5pdGlvbiBvZiBwbGF0Zm9ybSBpbmRlcGVuZGVudCBkYXRhDQorKiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcyBhbmQgY29uc3RhbnRzDQorKg0KKyoNCisqICAgICAgVGhlIGZvbGxvd2luZyBwbGF0Zm9ybSBpbmRlcGVuZGVudCBkYXRhIHR5cGVzIGFuZCBjb3JyZXNwb25kaW5nDQorKiAgICAgIHByZXByb2Nlc3NvciAoI2RlZmluZSkgY29uc3RhbnRzIGFyZSBkZWZpbmVkOg0KKyoNCisqICAgICAgICBkZWZpbmVkIHR5cGUgIG1lYW5pbmcgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgY29uc3RhbnRzDQorKiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyogICAgICAgIENoYXIgICAgICAgICAgY2hhcmFjdGVyICAgICAgICAgKG5vbmUpDQorKiAgICAgICAgQm9vbCAgICAgICAgICBib29sZWFuICAgICAgICAgICB0cnVlLCBmYWxzZQ0KKyogICAgICAgIFdvcmQ4ICAgICAgICAgOC1iaXQgc2lnbmVkICAgICAgbWluV29yZDgsICAgbWF4V29yZDgNCisqICAgICAgICBVV29yZDggICAgICAgIDgtYml0IHVuc2lnbmVkICAgIG1pblVXb3JkOCwgIG1heFVXb3JkOA0KKyogICAgICAgIFdvcmQxNiAgICAgICAgMTYtYml0IHNpZ25lZCAgICAgbWluV29yZDE2LCAgbWF4V29yZDE2DQorKiAgICAgICAgVVdvcmQxNiAgICAgICAxNi1iaXQgdW5zaWduZWQgICBtaW5VV29yZDE2LCBtYXhVV29yZDE2DQorKiAgICAgICAgV29yZDMyICAgICAgICAzMi1iaXQgc2lnbmVkICAgICBtaW5Xb3JkMzIsICBtYXhXb3JkMzINCisqICAgICAgICBVV29yZDMyICAgICAgIDMyLWJpdCB1bnNpZ25lZCAgIG1pblVXb3JkMzIsIG1heFVXb3JkMzINCisqICAgICAgICBGbG9hdCAgICAgICAgIGZsb2F0aW5nIHBvaW50ICAgIG1pbkZsb2F0LCAgIG1heEZsb2F0DQorKg0KKyoNCisqICAgICAgVGhlIGZvbGxvd2luZyBjb21waWxlIHN3aXRjaGVzIGFyZSAjZGVmaW5lZDoNCisqDQorKiAgICAgICAgUExBVEZPUk0gICAgICBzdHJpbmcgaW5kaWNhdGluZyBwbGF0Zm9ybSBwcm9nYW0gaXMgY29tcGlsZWQgb24NCisqICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlIHZhbHVlczogIk9TRiIsICJQQyIsICJTVU4iDQorKg0KKyogICAgICAgIE9TRiAgICAgICAgICAgb25seSBkZWZpbmVkIGlmIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIGFuIEFscGhhDQorKiAgICAgICAgUEMgICAgICAgICAgICBvbmx5IGRlZmluZWQgaWYgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaXMgYSBQQw0KKyogICAgICAgIFNVTiAgICAgICAgICAgb25seSBkZWZpbmVkIGlmIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIGEgU3VuDQorKiAgICAgICAgDQorKiAgICAgICAgTFNCRklSU1QgICAgICBpcyBkZWZpbmVkIGlmIHRoZSBieXRlIG9yZGVyIG9uIHRoaXMgcGxhdGZvcm0gaXMNCisqICAgICAgICAgICAgICAgICAgICAgICJsZWFzdCBzaWduaWZpY2FudCBieXRlIGZpcnN0IiAtPiBkZWZpbmVkIG9uIERFQyBBbHBoYQ0KKyogICAgICAgICAgICAgICAgICAgICAgYW5kIFBDLCB1bmRlZmluZWQgb24gU3VuDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisNCisjaWZuZGVmIF9fVFlQRURFRlNfSF9fDQorI2RlZmluZSBfX1RZUEVERUZTX0hfXw0KKw0KKy8qDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgIElOQ0xVREUgRklMRVMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyovDQorI2luY2x1ZGUgPGZsb2F0Lmg+DQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KKw0KKw0KKw0KKy8qDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgIERFRklOSVRJT04gT0YgQ09OU1RBTlRTIA0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisvKg0KKyAqKioqKioqKiogZGVmaW5lIGNoYXIgdHlwZQ0KKyAqLw0KK3R5cGVkZWYgY2hhciBDaGFyOw0KKw0KKy8qDQorICoqKioqKioqKiBkZWZpbmUgOCBiaXQgc2lnbmVkL3Vuc2lnbmVkIHR5cGVzICYgY29uc3RhbnRzDQorICovDQorI2lmIFNDSEFSX01BWCA9PSAxMjcNCit0eXBlZGVmIHNpZ25lZCBjaGFyIFdvcmQ4Ow0KKyNkZWZpbmUgbWluV29yZDggIFNDSEFSX01JTg0KKyNkZWZpbmUgbWF4V29yZDggIFNDSEFSX01BWA0KKw0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBVV29yZDg7DQorI2RlZmluZSBtaW5VV29yZDggMA0KKyNkZWZpbmUgbWF4VVdvcmQ4IFVDSEFSX01BWA0KKyNlbHNlDQorI2Vycm9yIGNhbm5vdCBmaW5kIDgtYml0IHR5cGUNCisjZW5kaWYNCisNCisNCisvKg0KKyAqKioqKioqKiogZGVmaW5lIDE2IGJpdCBzaWduZWQvdW5zaWduZWQgdHlwZXMgJiBjb25zdGFudHMNCisgKi8NCisjaWYgSU5UX01BWCA9PSAzMjc2Nw0KK3R5cGVkZWYgaW50IFdvcmQxNjsNCisjZGVmaW5lIG1pbldvcmQxNiAgICAgSU5UX01JTg0KKyNkZWZpbmUgbWF4V29yZDE2ICAgICBJTlRfTUFYDQordHlwZWRlZiB1bnNpZ25lZCBpbnQgVVdvcmQxNjsNCisjZGVmaW5lIG1pblVXb3JkMTYgICAgMA0KKyNkZWZpbmUgbWF4VVdvcmQxNiAgICBVSU5UX01BWA0KKyNlbGlmIFNIUlRfTUFYID09IDMyNzY3DQordHlwZWRlZiBzaG9ydCBXb3JkMTY7DQorI2RlZmluZSBtaW5Xb3JkMTYgICAgIFNIUlRfTUlODQorI2RlZmluZSBtYXhXb3JkMTYgICAgIFNIUlRfTUFYDQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBVV29yZDE2Ow0KKyNkZWZpbmUgbWluVVdvcmQxNiAgICAwDQorI2RlZmluZSBtYXhVV29yZDE2ICAgIFVTSFJUX01BWA0KKyNlbHNlDQorI2Vycm9yIGNhbm5vdCBmaW5kIDE2LWJpdCB0eXBlDQorI2VuZGlmDQorDQorDQorLyoNCisgKioqKioqKioqIGRlZmluZSAzMiBiaXQgc2lnbmVkL3Vuc2lnbmVkIHR5cGVzICYgY29uc3RhbnRzDQorICovDQorI2lmIElOVF9NQVggPT0gMjE0NzQ4MzY0Nw0KK3R5cGVkZWYgaW50IFdvcmQzMjsNCisjZGVmaW5lIG1pbldvcmQzMiAgICAgSU5UX01JTg0KKyNkZWZpbmUgbWF4V29yZDMyICAgICBJTlRfTUFYDQordHlwZWRlZiB1bnNpZ25lZCBpbnQgVVdvcmQzMjsNCisjZGVmaW5lIG1pblVXb3JkMzIgICAgMA0KKyNkZWZpbmUgbWF4VVdvcmQzMiAgICBVSU5UX01BWA0KKyNlbGlmIExPTkdfTUFYID09IDIxNDc0ODM2NDcNCit0eXBlZGVmIGxvbmcgV29yZDMyOw0KKyNkZWZpbmUgbWluV29yZDMyICAgICBMT05HX01JTg0KKyNkZWZpbmUgbWF4V29yZDMyICAgICBMT05HX01BWA0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBVV29yZDMyOw0KKyNkZWZpbmUgbWluVVdvcmQzMiAgICAwDQorI2RlZmluZSBtYXhVV29yZDMyICAgIFVMT05HX01BWA0KKyNlbHNlDQorI2Vycm9yIGNhbm5vdCBmaW5kIDMyLWJpdCB0eXBlDQorI2VuZGlmDQorDQorLyoNCisgKioqKioqKioqIGRlZmluZSBmbG9hdGluZyBwb2ludCB0eXBlICYgY29uc3RhbnRzDQorICovDQorLyogdXNlICIjaWYgMCIgYmVsb3cgaWYgRmxvYXQgc2hvdWxkIGJlIGRvdWJsZTsNCisgICB1c2UgIiNpZiAxIiBiZWxvdyBpZiBGbG9hdCBzaG91bGQgYmUgZmxvYXQNCisgKi8NCisjaWYgMA0KK3R5cGVkZWYgZmxvYXQgRmxvYXQ7DQorI2RlZmluZSBtYXhGbG9hdCAgICAgIEZMVF9NQVgNCisjZGVmaW5lIG1pbkZsb2F0ICAgICAgRkxUX01JTg0KKyNlbHNlDQordHlwZWRlZiBkb3VibGUgRmxvYXQ7DQorI2RlZmluZSBtYXhGbG9hdCAgICAgIERCTF9NQVgNCisjZGVmaW5lIG1pbkZsb2F0ICAgICAgREJMX01JTg0KKyNlbmRpZg0KKw0KKy8qDQorICoqKioqKioqKiBkZWZpbmUgY29tcGxleCB0eXBlDQorICovDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgRmxvYXQgcjsgIC8qIHJlYWwgICAgICBwYXJ0ICovDQorICBGbG9hdCBpOyAgLyogaW1hZ2luYXJ5IHBhcnQgKi8NCit9IENQWDsNCisNCisvKg0KKyAqKioqKioqKiogZGVmaW5lIGJvb2xlYW4gdHlwZQ0KKyAqLw0KK3R5cGVkZWYgaW50IEJvb2w7DQorI2RlZmluZSBmYWxzZSAwDQorI2RlZmluZSB0cnVlIDENCisNCisvKiAqKioqKipBdm9pZCBmdW5jdGlvbiBtdWx0aXBsZSBkZWZpbml0aW9uKioqKioqICovDQorI2RlZmluZSAgICAgQXV0b2NvcnIgICAgICAgICB2b0FXQl9BdXRvY29ycg0KKyNkZWZpbmUgICAgIENvbnZvbHZlICAgICAgICAgdm9BV0JfQ29udm9sdmUNCisjZGVmaW5lICAgICBjb3JfaF94ICAgICAgICAgIHZvQVdCX2Nvcl9oX3gNCisjZGVmaW5lICAgICBkdHhfZW5jX2luaXQgICAgIHZvQVdCX2R0eF9lbmNfaW5pdA0KKyNkZWZpbmUgICAgIGR0eF9lbmNfcmVzZXQgICAgdm9BV0JfZHR4X2VuY19yZXNldA0KKyNkZWZpbmUgICAgIGR0eF9lbmNfZXhpdCAgICAgdm9BV0JfZHR4X2VuY19leGl0DQorI2RlZmluZSAgICAgZHR4X2VuYyAgICAgICAgICB2b0FXQl9kdHhfZW5jDQorI2RlZmluZSAgICAgZHR4X2J1ZmZlciAgICAgICB2b0FXQl9kdHhfYnVmZmVyDQorI2RlZmluZSAgICAgdHhfZHR4X2hhbmRsZXIgICB2b0FXQl90eF9kdHhfaGFuZGxlcg0KKyNkZWZpbmUgICAgIEdfcGl0Y2ggICAgICAgICAgdm9BV0JfR19waXRjaA0KKyNkZWZpbmUgICAgIElzcF9BeiAgICAgICAgICAgdm9BV0JfSXNwX0F6DQorI2RlZmluZSAgICAgTGFnX3dpbmRvdyAgICAgICB2b0FXQl9MYWdfd2luZG93DQorI2RlZmluZSAgICAgTG9nMl9ub3JtICAgICAgICB2b0FXQl9Mb2cyX25vcm0NCisjZGVmaW5lICAgICBMb2cyICAgICAgICAgICAgIHZvQVdCX0xvZzINCisjZGVmaW5lICAgICBQb3cyICAgICAgICAgICAgIHZvQVdCX1BvdzINCisjZGVmaW5lICAgICBMX0NvbXAgICAgICAgICAgIHZvQVdCX0xfQ29tcA0KKyNkZWZpbmUgICAgIE1weV8zMiAgICAgICAgICAgdm9BV0JfTXB5XzMyDQorI2RlZmluZSAgICAgTXB5XzMyXzE2ICAgICAgICB2b0FXQl9NcHlfMzJfMTYNCisjZGVmaW5lICAgICBEaXZfMzIgICAgICAgICAgIHZvQVdCX0Rpdl8zMg0KKyNkZWZpbmUgICAgIFBpdF9zaHJwICAgICAgICAgdm9BV0JfUGl0X3NocnANCisjZGVmaW5lICAgICBRaXNmX25zICAgICAgICAgIHZvQVdCX1Fpc2ZfbnMNCisjZGVmaW5lICAgICBEaXNmX25zICAgICAgICAgIHZvQVdCX0Rpc2ZfbnMNCisjZGVmaW5lICAgICBSZXNpZHUgICAgICAgICAgIHZvQVdCX1Jlc2lkdQ0KKyNkZWZpbmUgICAgIFN5bl9maWx0ICAgICAgICAgdm9BV0JfU3luX2ZpbHQNCisjZGVmaW5lICAgICBTZXRfemVybyAgICAgICAgIHZvQVdCX1NldF96ZXJvDQorI2RlZmluZSAgICAgQ29weSAgICAgICAgICAgICB2b0FXQl9Db3B5DQorI2RlZmluZSAgICAgdm9pY2VfZmFjdG9yICAgICB2b0FXQl92b2ljZV9mYWN0b3INCisjZGVmaW5lICAgICBTeW5fZmlsdF8zMiAgICAgIHZvQVdCX1N5bl9maWx0XzMyDQorI2RlZmluZSAgICAgSXNmX2lzcCAgICAgICAgICB2b0FXQl9Jc2ZfaXNwDQorI2RlZmluZSAgICAgTGV2aW5zb24gICAgICAgICB2b0FXQl9MZXZpbnNvbg0KKyNkZWZpbmUgICAgIG1lZGlhbjUgICAgICAgICAgdm9BV0JfbWVkaWFuNSAgICAgICAgICAgDQorI2RlZmluZSAgICAgUHJlZF9sdDQgICAgICAgICB2b0FXQl9QcmVkX2x0NA0KKyNkZWZpbmUgICAgIFJlb3JkZXJfaXNmICAgICAgdm9BV0JfUmVvcmRlcl9pc2YNCisjZGVmaW5lICAgICBEcGlzZl8yc18zNmIgICAgIHZvQVdCX0RwaXNmXzJzXzM2Yg0KKyNkZWZpbmUgICAgIERwaXNmXzJzXzQ2YiAgICAgdm9BV0JfRHBpc2ZfMnNfNDZiDQorI2RlZmluZSAgICAgRG90X3Byb2R1Y3QxMiAgICB2b0FXQl9Eb3RfcHJvZHVjdDEyDQorI2RlZmluZSAgICAgbWVtX21hbGxvYyAgICAgICB2b0FXQl9tZW1fbWFsbG9jDQorI2RlZmluZSAgICAgbWVtX2ZyZWUgICAgICAgICB2b0FXQl9tZW1fZnJlZQ0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2VuZGlmICAvLyNkZWZpbmUgX19UWVBFREVGU19IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3diX3ZhZC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy93Yl92YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzMzYWZlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy93Yl92YWQuaApAQCAtMCwwICsxLDc4IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBXQl9WQUQuSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIEZ1bmN0aW9ucyBhbmQgc3RhdGljIG1lbW9yeSBmb3IgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0aW9uLiAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZm5kZWYgX19XQl9WQURfSF9fDQorI2RlZmluZSBfX1dCX1ZBRF9IX18NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgSU5DTFVERSBGSUxFUw0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAid2JfdmFkX2MuaCINCisjaW5jbHVkZSAidm9NZW0uaCINCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgREVGSU5JVElPTiBPRiBEQVRBIFRZUEVTDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisJV29yZDE2IGJja3JfZXN0W0NPTVBMRU5dOyAgICAgICAgICAgICAgLyogYmFja2dyb3VuZCBub2lzZSBlc3RpbWF0ZSAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgYXZlX2xldmVsW0NPTVBMRU5dOyAgICAgICAgICAgICAvKiBhdmVyYWdlZCBpbnB1dCBjb21wb25lbnRzIGZvciBzdGF0aW9uYXJ5ICovDQorCS8qIGVzdGltYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IG9sZF9sZXZlbFtDT01QTEVOXTsgICAgICAgICAgICAgLyogaW5wdXQgbGV2ZWxzIG9mIHRoZSBwcmV2aW91cyBmcmFtZSAgICAgICAqLw0KKwlXb3JkMTYgc3ViX2xldmVsW0NPTVBMRU5dOyAgICAgICAgICAgICAvKiBpbnB1dCBsZXZlbHMgY2FsY3VsYXRlZCBhdCB0aGUgZW5kIG9mIGEgZnJhbWUgKGxvb2thaGVhZCkgICovDQorCVdvcmQxNiBhX2RhdGE1W0ZfNVRIX0NOVF1bMl07ICAgICAgICAgIC8qIG1lbW9yeSBmb3IgdGhlIGZpbHRlciBiYW5rICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IGFfZGF0YTNbRl8zVEhfQ05UXTsgICAgICAgICAgICAgLyogbWVtb3J5IGZvciB0aGUgZmlsdGVyIGJhbmsgICAgICAgICAgICAgICAqLw0KKw0KKwlXb3JkMTYgYnVyc3RfY291bnQ7ICAgICAgICAgICAgICAgICAgICAvKiBjb3VudHMgbGVuZ3RoIG9mIGEgc3BlZWNoIGJ1cnN0ICAgICAgICAgICovDQorCVdvcmQxNiBoYW5nX2NvdW50OyAgICAgICAgICAgICAgICAgICAgIC8qIGhhbmdvdmVyIGNvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IHN0YXRfY291bnQ7ICAgICAgICAgICAgICAgICAgICAgLyogc3RhdGlvbmFyeSBjb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKwkvKiBOb3RlIHRoYXQgZWFjaCBvZiB0aGUgZm9sbG93aW5nIHR3byB2YXJpYWJsZXMgaG9sZHMgMTUgZmxhZ3MuIEVhY2ggZmxhZyByZXNlcnZlcyAxIGJpdCBvZiB0aGUNCisJICogdmFyaWFibGUuIFRoZSBuZXdlc3QgZmxhZyBpcyBpbiB0aGUgYml0IDE1IChhc3N1bWluZyB0aGF0IExTQiBpcyBiaXQgMSBhbmQgTVNCIGlzIGJpdCAxNikuICovDQorCVdvcmQxNiB2YWRyZWc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZsYWdzIGZvciBpbnRlcm1lZGlhdGUgVkFEIGRlY2lzaW9ucyAgICAgKi8NCisJV29yZDE2IHRvbmVfZmxhZzsgICAgICAgICAgICAgICAgICAgICAgLyogdG9uZSBkZXRlY3Rpb24gZmxhZ3MgICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKwlXb3JkMTYgc3BfZXN0X2NudDsgICAgICAgICAgICAgICAgICAgICAvKiBjb3VudGVyIGZvciBzcGVlY2ggbGV2ZWwgZXN0aW1hdGlvbiAgICAgICovDQorCVdvcmQxNiBzcF9tYXg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1heGltdW0gbGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IHNwX21heF9jbnQ7ICAgICAgICAgICAgICAgICAgICAgLyogY291bnRzIGZyYW1lcyB0aGF0IGNvbnRhaW5zIHNwZWVjaCAgICAgICAqLw0KKwlXb3JkMTYgc3BlZWNoX2xldmVsOyAgICAgICAgICAgICAgICAgICAvKiBlc3RpbWF0ZWQgc3BlZWNoIGxldmVsICAgICAgICAgICAgICAgICAgICovDQorCVdvcmQzMiBwcmV2X3Bvd19zdW07ICAgICAgICAgICAgICAgICAgIC8qIHBvd2VyIG9mIHByZXZpb3VzIGZyYW1lICAgICAgICAgICAgICAgICAgKi8NCisNCit9IFZhZFZhcnM7DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICoNCisgKiBERUNMQVJBVElPTiBPRiBQUk9UT1RZUEVTDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK1dvcmQxNiB3Yl92YWRfaW5pdChWYWRWYXJzICoqIHN0LCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCk7DQorV29yZDE2IHdiX3ZhZF9yZXNldChWYWRWYXJzICogc3QpOw0KK3ZvaWQgd2JfdmFkX2V4aXQoVmFkVmFycyAqKiBzdCwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOw0KK3ZvaWQgd2JfdmFkX3RvbmVfZGV0ZWN0aW9uKFZhZFZhcnMgKiBzdCwgV29yZDE2IHBfZ2Fpbik7DQorV29yZDE2IHdiX3ZhZChWYWRWYXJzICogc3QsIFdvcmQxNiBpbl9idWZbXSk7DQorDQorI2VuZGlmICAvL19fV0JfVkFEX0hfXw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvd2JfdmFkX2MuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvd2JfdmFkX2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWVmNTA2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy93Yl92YWRfYy5oCkBAIC0wLDAgKzEsMTA5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBXQl9WQURfQy5ICQkJCSAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiBDb25zdGFudHMgZm9yIFZvaWNlIEFjdGl2aXR5IERldGVjdGlvbi4JCQkgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZm5kZWYgX19XQl9WQURfQ19IX18NCisjZGVmaW5lIF9fV0JfVkFEX0NfSF9fDQorDQorI2RlZmluZSBGUkFNRV9MRU4gMjU2ICAgICAgICAgICAgICAgICAgICAgIC8qIExlbmd0aCAoc2FtcGxlcykgb2YgdGhlIGlucHV0IGZyYW1lICAgICAgICAgICovDQorI2RlZmluZSBDT01QTEVOIDEyICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiBzdWItYmFuZHMgdXNlZCBieSBWQUQgICAgICAgICAgICAgICovDQorDQorI2RlZmluZSBVTklSU0hGVCA3ICAgICAgICAgICAgICAgICAgICAgICAgIC8qID0gbG9nMihNQVhfMTYvVU5JVFkpLCBVTklUWSA9IDI1NiAgICAgICovDQorI2RlZmluZSBTQ0FMRSAxMjggICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChVTklUWSpVTklUWSkvNTEyICovDQorDQorI2RlZmluZSBUT05FX1RIUiAoV29yZDE2KSgwLjY1Kk1BWF8xNikgICAgIC8qIFRocmVzaG9sZCBmb3IgdG9uZSBkZXRlY3Rpb24gICAqLw0KKw0KKy8qIGNvbnN0YW50cyBmb3Igc3BlZWNoIGxldmVsIGVzdGltYXRpb24gKi8NCisjZGVmaW5lIFNQX0VTVF9DT1VOVCA4MA0KKyNkZWZpbmUgU1BfQUNUSVZJVFlfQ09VTlQgMjUNCisjZGVmaW5lIEFMUEhBX1NQX1VQIChXb3JkMTYpKCgxLjAgLSAwLjg1KSpNQVhfMTYpDQorI2RlZmluZSBBTFBIQV9TUF9ET1dOIChXb3JkMTYpKCgxLjAgLSAwLjg1KSpNQVhfMTYpDQorDQorI2RlZmluZSBOT01fTEVWRUwgMjA1MCAgICAgICAgICAgICAgICAgICAgIC8qIGFib3V0IC0yNiBkQm92IFExNSAqLw0KKyNkZWZpbmUgU1BFRUNIX0xFVkVMX0lOSVQgTk9NX0xFVkVMICAgICAgICAvKiBpbml0aWFsIHNwZWVjaCBsZXZlbCAqLw0KKyNkZWZpbmUgTUlOX1NQRUVDSF9MRVZFTDEgIChXb3JkMTYpKE5PTV9MRVZFTCAqIDAuMDYzKSAgLyogTk9NX0xFVkVMIC0yNCBkQiAqLw0KKyNkZWZpbmUgTUlOX1NQRUVDSF9MRVZFTDIgIChXb3JkMTYpKE5PTV9MRVZFTCAqIDAuMikgICAgLyogTk9NX0xFVkVMIC0xNCBkQiAqLw0KKyNkZWZpbmUgTUlOX1NQRUVDSF9TTlIgNDA5NiAgICAgICAgICAgICAgICAvKiAwIGRCLCBsb3dlc3QgU05SIGVzdGltYXRpb24sIFExMiAqLw0KKw0KKy8qIFRpbWUgY29uc3RhbnRzIGZvciBiYWNrZ3JvdW5kIHNwZWN0cnVtIHVwZGF0ZSAqLw0KKyNkZWZpbmUgQUxQSEFfVVAxICAgKFdvcmQxNikoKDEuMCAtIDAuOTUpKk1BWF8xNikgICAgICAgLyogTm9ybWFsIHVwZGF0ZSwgdXB3YXJkczogICAqLw0KKyNkZWZpbmUgQUxQSEFfRE9XTjEgKFdvcmQxNikoKDEuMCAtIDAuOTM2KSpNQVhfMTYpICAgICAgLyogTm9ybWFsIHVwZGF0ZSwgZG93bndhcmRzICAqLw0KKyNkZWZpbmUgQUxQSEFfVVAyICAgKFdvcmQxNikoKDEuMCAtIDAuOTg1KSpNQVhfMTYpICAgICAgLyogRm9yY2VkIHVwZGF0ZSwgdXB3YXJkcyAgICAqLw0KKyNkZWZpbmUgQUxQSEFfRE9XTjIgKFdvcmQxNikoKDEuMCAtIDAuOTQzKSpNQVhfMTYpICAgICAgLyogRm9yY2VkIHVwZGF0ZSwgZG93bndhcmRzICAqLw0KKyNkZWZpbmUgQUxQSEEzICAgICAgKFdvcmQxNikoKDEuMCAtIDAuOTUpKk1BWF8xNikgICAgICAgLyogVXBkYXRlIGRvd253YXJkcyAgICAgICAgICAqLw0KKyNkZWZpbmUgQUxQSEE0ICAgICAgKFdvcmQxNikoKDEuMCAtIDAuOSkqTUFYXzE2KSAgICAgICAgLyogRm9yIHN0YXRpb25hcnkgZXN0aW1hdGlvbiAqLw0KKyNkZWZpbmUgQUxQSEE1ICAgICAgKFdvcmQxNikoKDEuMCAtIDAuNSkqTUFYXzE2KSAgICAgICAgLyogRm9yIHN0YXRpb25hcnkgZXN0aW1hdGlvbiAqLw0KKw0KKy8qIENvbnN0YW50cyBmb3IgVkFEIHRocmVzaG9sZCAqLw0KKyNkZWZpbmUgVEhSX01JTiAgKFdvcmQxNikoMS42KlNDQUxFKSAgICAgICAvKiBNaW5pbXVtIHRocmVzaG9sZCAgICAgICAgICAgICAgICovDQorI2RlZmluZSBUSFJfSElHSCAoV29yZDE2KSg2KlNDQUxFKSAgICAgICAgIC8qIEhpZ2hlc3QgdGhyZXNob2xkICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIFRIUl9MT1cgKFdvcmQxNikoMS43KlNDQUxFKSAgICAgICAgLyogTG93ZXN0IHRocmVzaG9sZCAgICAgICAgICAgICAgICovDQorI2RlZmluZSBOT19QMSAzMTc0NCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlsb2cyKDEpLCBOb2lzZSBsZXZlbCBmb3IgaGlnaGVzdCB0aHJlc2hvbGQgKi8NCisjZGVmaW5lIE5PX1AyIDE5Nzg2ICAgICAgICAgICAgICAgICAgICAgICAgLyogaWxvZzIoMC4xKk1BWF8xNiksIE5vaXNlIGxldmVsIGZvciBsb3dlc3QgdGhyZXNob2xkICovDQorI2RlZmluZSBOT19TTE9QRSAoV29yZDE2KShNQVhfMTYqKGZsb2F0KShUSFJfTE9XLVRIUl9ISUdIKS8oZmxvYXQpKE5PX1AyLU5PX1AxKSkNCisNCisjZGVmaW5lIFNQX0NIX01JTiAoV29yZDE2KSgtMC43NSpTQ0FMRSkNCisjZGVmaW5lIFNQX0NIX01BWCAoV29yZDE2KSgwLjc1KlNDQUxFKQ0KKyNkZWZpbmUgU1BfUDEgMjI1MjcgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbG9nMihOT01fTEVWRUwvNCkgKi8NCisjZGVmaW5lIFNQX1AyIDE3ODMyICAgICAgICAgICAgICAgICAgICAgICAgLyogaWxvZzIoTk9NX0xFVkVMKjQpICovDQorI2RlZmluZSBTUF9TTE9QRSAoV29yZDE2KShNQVhfMTYqKGZsb2F0KShTUF9DSF9NQVgtU1BfQ0hfTUlOKS8oZmxvYXQpKFNQX1AyLVNQX1AxKSkNCisNCisvKiBDb25zdGFudHMgZm9yIGhhbmdvdmVyIGxlbmd0aCAqLw0KKyNkZWZpbmUgSEFOR19ISUdIICAxMiAgICAgICAgICAgICAgICAgICAgICAvKiBsb25nZXN0IGhhbmdvdmVyICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIEhBTkdfTE9XICAyICAgICAgICAgICAgICAgICAgICAgICAgLyogc2hvcnRlc3QgaGFuZ292ZXIgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgSEFOR19QMSBUSFJfTE9XICAgICAgICAgICAgICAgICAgICAvKiB0aHJlc2hvbGQgZm9yIGxvbmdlc3QgaGFuZ292ZXIgKi8NCisjZGVmaW5lIEhBTkdfUDIgKFdvcmQxNikoNCpTQ0FMRSkgICAgICAgICAgLyogdGhyZXNob2xkIGZvciBzaG9ydGVzdCBoYW5nb3ZlciAqLw0KKyNkZWZpbmUgSEFOR19TTE9QRSAoV29yZDE2KShNQVhfMTYqKGZsb2F0KShIQU5HX0xPVy1IQU5HX0hJR0gpLyhmbG9hdCkoSEFOR19QMi1IQU5HX1AxKSkNCisNCisvKiBDb25zdGFudHMgZm9yIGJ1cnN0IGxlbmd0aCAqLw0KKyNkZWZpbmUgQlVSU1RfSElHSCA4ICAgICAgICAgICAgICAgICAgICAgICAvKiBsb25nZXN0IGJ1cnN0IGxlbmd0aCAgICAgICAgICovDQorI2RlZmluZSBCVVJTVF9MT1cgMyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNob3J0ZXN0IGJ1cnN0IGxlbmd0aCAgICAgICAgKi8NCisjZGVmaW5lIEJVUlNUX1AxIFRIUl9ISUdIICAgICAgICAgICAgICAgICAgLyogdGhyZXNob2xkIGZvciBsb25nZXN0IGJ1cnN0ICovDQorI2RlZmluZSBCVVJTVF9QMiBUSFJfTE9XICAgICAgICAgICAgICAgICAgIC8qIHRocmVzaG9sZCBmb3Igc2hvcnRlc3QgYnVyc3QgKi8NCisjZGVmaW5lIEJVUlNUX1NMT1BFIChXb3JkMTYpKE1BWF8xNiooZmxvYXQpKEJVUlNUX0xPVy1CVVJTVF9ISUdIKS8oZmxvYXQpKEJVUlNUX1AyLUJVUlNUX1AxKSkNCisNCisvKiBQYXJhbWV0ZXJzIGZvciBiYWNrZ3JvdW5kIHNwZWN0cnVtIHJlY292ZXJ5IGZ1bmN0aW9uICovDQorI2RlZmluZSBTVEFUX0NPVU5UIDIwICAgICAgICAgICAgICAgICAgICAgIC8qIHRocmVzaG9sZCBvZiBzdGF0aW9uYXJ5IGRldGVjdGlvbiBjb3VudGVyICAgICAgICAgKi8NCisNCisjZGVmaW5lIFNUQVRfVEhSX0xFVkVMIDE4NCAgICAgICAgICAgICAgICAgLyogVGhyZXNob2xkIGxldmVsIGZvciBzdGF0aW9uYXJpdHkgZGV0ZWN0aW9uICAgICAgICAqLw0KKyNkZWZpbmUgU1RBVF9USFIgMTAwMCAgICAgICAgICAgICAgICAgICAgICAvKiBUaHJlc2hvbGQgZm9yIHN0YXRpb25hcml0eSBkZXRlY3Rpb24gICAgICAgICAgICAgICovDQorDQorLyogTGltaXRzIGZvciBiYWNrZ3JvdW5kIG5vaXNlIGVzdGltYXRlICovDQorI2RlZmluZSBOT0lTRV9NSU4gNDAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gKi8NCisjZGVmaW5lIE5PSVNFX01BWCAyMDAwMCAgICAgICAgICAgICAgICAgICAgLyogbWF4aW11bSAqLw0KKyNkZWZpbmUgTk9JU0VfSU5JVCAxNTAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0aWFsICovDQorDQorLyogVGhyZXNob2xkcyBmb3Igc2lnbmFsIHBvd2VyIChub3cgY2FsY3VsYXRlZCBvbiAyIGZyYW1lcykgKi8NCisjZGVmaW5lIFZBRF9QT1dfTE9XIChXb3JkMzIpMzAwMDBMICAgICAgICAgLyogSWYgaW5wdXQgcG93ZXIgaXMgbG93ZXIgdGhhbiB0aGlzLCBWQUQgaXMgc2V0IHRvIDAgKi8NCisjZGVmaW5lIFBPV19UT05FX1RIUiAoV29yZDMyKTY4NjA4MEwgICAgICAgLyogSWYgaW5wdXQgcG93ZXIgaXMgbG93ZXIsdG9uZSBkZXRlY3Rpb24gZmxhZyBpcyBpZ25vcmVkICovDQorDQorLyogQ29uc3RhbnRzIGZvciB0aGUgZmlsdGVyIGJhbmsgKi8NCisjZGVmaW5lIENPRUZGMyAgIDEzMzYzICAgICAgICAgICAgICAgICAgICAgLyogY29lZmZpY2llbnQgZm9yIHRoZSAzcmQgb3JkZXIgZmlsdGVyICAgICAqLw0KKyNkZWZpbmUgQ09FRkY1XzEgMjE5NTUgICAgICAgICAgICAgICAgICAgICAvKiAxc3QgY29lZmZpY2llbnQgdGhlIGZvciA1dGggb3JkZXIgZmlsdGVyICovDQorI2RlZmluZSBDT0VGRjVfMiA2MzkwICAgICAgICAgICAgICAgICAgICAgIC8qIDJuZCBjb2VmZmljaWVudCB0aGUgZm9yIDV0aCBvcmRlciBmaWx0ZXIgKi8NCisjZGVmaW5lIEZfNVRIX0NOVCA1ICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIDV0aCBvcmRlciBmaWx0ZXJzICovDQorI2RlZmluZSBGXzNUSF9DTlQgNiAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiAzdGggb3JkZXIgZmlsdGVycyAqLw0KKw0KKyNlbmRpZiAgIC8vX19XQl9WQURfQ19IX18NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvcGF0ZW50X2Rpc2NsYWltZXIudHh0IGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3BhdGVudF9kaXNjbGFpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGJmMTFkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3BhdGVudF9kaXNjbGFpbWVyLnR4dApAQCAtMCwwICsxLDkgQEAKKworVEhJUyBJUyBOT1QgQSBHUkFOVCBPRiBQQVRFTlQgUklHSFRTLgorCitHb29nbGUgbWFrZXMgbm8gcmVwcmVzZW50YXRpb24gb3Igd2FycmFudHkgdGhhdCB0aGUgY29kZWNzIGZvciB3aGljaAorc291cmNlIGNvZGUgaXMgbWFkZSBhdmFpbGFibGUgaGVyZXVuZGVyIGFyZSB1bmVuY3VtYmVyZWQgYnkKK3RoaXJkLXBhcnR5IHBhdGVudHMuICBUaG9zZSBpbnRlbmRpbmcgdG8gdXNlIHRoaXMgc291cmNlIGNvZGUgaW4KK2hhcmR3YXJlIG9yIHNvZnR3YXJlIHByb2R1Y3RzIGFyZSBhZHZpc2VkIHRoYXQgaW1wbGVtZW50YXRpb25zIG9mCit0aGVzZSBjb2RlY3MsIGluY2x1ZGluZyBpbiBvcGVuIHNvdXJjZSBzb2Z0d2FyZSBvciBzaGFyZXdhcmUsIG1heQorcmVxdWlyZSBwYXRlbnQgbGljZW5zZXMgZnJvbSB0aGUgcmVsZXZhbnQgcGF0ZW50IGhvbGRlcnMuCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvRGVlbXBoXzMyX29wdC5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL0RlZW1waF8zMl9vcHQucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWI1ZTlmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL0RlZW1waF8zMl9vcHQucwpAQCAtMCwwICsxLDEwNCBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAdm9pZCBEZWVtcGhfMzIoDQorQCAgICAgV29yZDE2IHhfaGlbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsIChiaXQzMS4uMTYpICovDQorQCAgICAgV29yZDE2IHhfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsIChiaXQxNS4uNCkgICovDQorQCAgICAgV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHNpZ25hbCAoeDE2KSAgICAgICovDQorQCAgICAgV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogZGVlbXBoYXNpcyBmYWN0b3IgICAgICAgICovDQorQCAgICAgV29yZDE2IEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh5Wy0xXSkgICAgICAgICAgICovDQorQCAgICAgKQ0KKw0KK0B4X2hpICAgICBSTiAgICAgIFIwDQorQHhfbG8gICAgIFJOICAgICAgUjENCitAeVtdICAgICAgUk4gICAgICBSMg0KK0AqbWVtICAgICBSTiAgICAgIFIzDQorDQorICAgICAgICAgICAuc2VjdGlvbiAgLnRleHQNCisgICAgICAgICAgIC5nbG9iYWwgICBEZWVtcGhfMzJfYXNtDQorCSAgIA0KK0RlZW1waF8zMl9hc206DQorDQorICAgICAgICAgICBTVE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorCSAgIE1PViAgICAgICAgICByNCwgIzIgICAgICAgICAgICAgICAgICAgQGk9MA0KKwkgICBMRFJTSCAgICAgICAgcjYsIFtyMF0sICMyICAgICAgICAgICAgIEBsb2FkIHhfaGlbMF0NCisJICAgTERSU0ggICAgICAgIHI3LCBbcjFdLCAjMiAgICAgICAgICAgICBAbG9hZCB4X2xvWzBdDQorCSAgIExEUiAgICAgICAgICByNSwgPTIyMjgyICAgICAgICAgICAgICAgQHI1LS0tbXUNCisJICAgTU9WICAgICAgICAgIHIxMSwgIzB4ODAwMA0KKw0KKyAgICAgICAgICAgQHlbMF0NCisJICAgTU9WICAgICAgICAgIHIxMCwgcjYsIExTTCAjMTYgICAgICAgICBATF90bXAgPSB4X2hpWzBdPDwxNg0KKwkgICBNT1YgICAgICAgICAgcjgsICByNSwgQVNSICMxICAgICAgICAgIEBmYWMgPSBtdSA+PiAxDQorCSAgIExEUiAgICAgICAgICByNSwgIFtyM10NCisJICAgQUREICAgICAgICAgIHIxMiwgcjEwLCByNywgTFNMICM0ICAgICBATF90bXAgKz0geF9sb1swXSA8PCA0DQorCSAgIE1PViAgICAgICAgICByMTAsIHIxMiwgTFNMICMzICAgICAgICAgQExfdG1wIDw8PSAzDQorCSAgIE1VTCAgICAgICAgICByOSwgcjUsIHI4DQorCSAgIExEUlNIICAgICAgICByNiwgW3IwXSwgIzIgICAgICAgICAgICAgQGxvYWQgeF9oaVsxXSANCisJICAgUURBREQgICAgICAgIHIxMCwgcjEwLCByOQ0KKwkgICBMRFJTSCAgICAgICAgcjcsIFtyMV0sICMyICAgICAgICAgICAgIEBsb2FkIHhfbG9bMV0gIA0KKwkgICBNT1YgICAgICAgICAgcjEyLCByMTAsIExTTCAjMSAgICAgICAgIEBMX3RtcCA9IExfbWFjKExfdG1wLCAqbWVtLCBmYWMpDQorCSAgIFFBREQgICAgICAgICByMTAsIHIxMiwgcjExDQorCSAgIE1PViAgICAgICAgICByMTQsIHIxMCwgQVNSICMxNiAgICAgICAgQHlbMF0gPSByb3VuZChMX3RtcCkNCisNCisNCisJICAgTU9WICAgICAgICAgIHIxMCwgcjYsIExTTCAjMTYNCisJICAgQUREICAgICAgICAgIHIxMiwgcjEwLCByNywgTFNMICM0DQorICAgICAgICAgICBTVFJIICAgICAgICAgcjE0LCBbcjJdLCAjMiAgICAgICAgICAgIEB1cGRhdGUgeVswXQ0KKwkgICBNT1YgICAgICAgICAgcjEwLCByMTIsIExTTCAjMw0KKwkgICBNVUwgICAgICAgICAgcjksIHIxNCwgcjgNCisJICAgUURBREQgICAgICAgIHIxMCwgcjEwLCByOQ0KKwkgICBNT1YgICAgICAgICAgcjEyLCByMTAsIExTTCAjMQ0KKwkgICBRQUREICAgICAgICAgcjEwLCByMTIsIHIxMQ0KKwkgICBNT1YgICAgICAgICAgcjE0LCByMTAsIEFTUiAjMTYgICAgICAgIEB5WzFdID0gcm91bmQoTF90bXApDQorDQorTE9PUDoNCisgICAgICAgICAgIExEUlNIICAgICAgICByNiwgW3IwXSwgIzIgICAgICAgICAgICAgQGxvYWQgeF9oaVtdDQorCSAgIExEUlNIICAgICAgICByNywgW3IxXSwgIzINCisJICAgU1RSSCAgICAgICAgIHIxNCwgW3IyXSwgIzINCisJICAgTU9WICAgICAgICAgIHIxMCwgcjYsIExTTCAjMTYNCisJICAgQUREICAgICAgICAgIHIxMiwgcjEwLCByNywgTFNMICM0DQorCSAgIE1VTCAgICAgICAgICByOSwgcjE0LCByOA0KKwkgICBNT1YgICAgICAgICAgcjEwLCByMTIsIExTTCAjMw0KKwkgICBRREFERCAgICAgICAgcjEwLCByMTAsIHI5DQorICAgICAgICAgICBMRFJTSCAgICAgICAgcjYsIFtyMF0sICMyICAgICAgICAgICAgIEBsb2FkIHhfaGlbXQ0KKwkgICBNT1YgICAgICAgICAgcjEyLCByMTAsIExTTCAjMQ0KKwkgICBRQUREICAgICAgICAgcjEwLCByMTIsIHIxMQ0KKwkgICBMRFJTSCAgICAgICAgcjcsIFtyMV0sICMyDQorCSAgIE1PViAgICAgICAgICByMTQsIHIxMCwgQVNSICMxNg0KKw0KKwkgICBNT1YgICAgICAgICAgcjEwLCByNiwgTFNMICMxNg0KKwkgICBBREQgICAgICAgICAgcjEyLCByMTAsIHI3LCBMU0wgIzQNCisJICAgU1RSSCAgICAgICAgIHIxNCwgW3IyXSwgIzINCisJICAgTVVMICAgICAgICAgIHI5LCByMTQsIHI4DQorCSAgIE1PViAgICAgICAgICByMTAsIHIxMiwgTFNMICMzDQorCSAgIFFEQUREICAgICAgICByMTAsIHIxMCwgcjkNCisgICAgICAgICAgIEFERCAgICAgICAgICByNCwgcjQsICMyDQorCSAgIE1PViAgICAgICAgICByMTIsIHIxMCwgTFNMICMxDQorCSAgIFFBREQgICAgICAgICByMTAsIHIxMiwgcjExDQorICAgICAgICAgICBDTVAgICAgICAgICAgcjQsICM2NA0KKwkgICBNT1YgICAgICAgICAgcjE0LCByMTAsIEFTUiAjMTYNCisNCisgICAgICAgICAgIEJMVCAgICAgICAgICBMT09QDQorICAgICAgICAgICBTVFIgICAgICAgICAgcjE0LCBbcjNdDQorICAgICAgICAgICBTVFJIICAgICAgICAgcjE0LCBbcjJdCSAgIA0KKw0KKyAgICAgICAgICAgTERNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTV9IA0KKw0KKwkgICBARU5EUA0KKwkgICAuRU5EDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL0RvdF9wX29wdC5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL0RvdF9wX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzODMyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvRG90X3Bfb3B0LnMKQEAgLTAsMCArMSw4MCBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQFdvcmQzMiBEb3RfcHJvZHVjdDEyKCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTMxOiBub3JtYWxpemVkIHJlc3VsdCAoMSA8IHZhbCA8PSAtMSkgKi8NCitAICAgICAgIFdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDEyYml0czogeCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgICBXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAxMmJpdHM6IHkgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgICAgV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgOiB2ZWN0b3IgbGVuZ3RoICAgICAgICAgICAgICAgICAgICAgKi8NCitAICAgICAgIFdvcmQxNiAqIGV4cCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgIDogZXhwb25lbnQgb2YgcmVzdWx0ICgwLi4rMzApICAgICAgICovDQorQCkNCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgIHhbXSAgIC0tLSAgcjANCitAICB5W10gICAtLS0gIHIxDQorQCAgbGcgICAgLS0tICByMg0KK0AgICpleHAgIC0tLSAgcjMNCisNCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorIAkgIC5nbG9iYWwgICBEb3RfcHJvZHVjdDEyX2FzbQ0KKw0KK0RvdF9wcm9kdWN0MTJfYXNtOg0KKw0KKyAgICAgICAgICBTVE1GRCAgIAkgICAgcjEzISwge3I0IC0gcjEyLCByMTR9IA0KKyAgICAgICAgICBNT1YgICAgICAgICAgICAgICByNCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIExfc3VtID0gMA0KKyAgICAgICAgICBNT1YgICAgICAgICAgICAgICByNSwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIGkgPSAwDQorDQorTE9PUDoNCisgICAgICAgICAgTERSICAgICAgICAgICByNiwgW3IwXSwgIzQNCisgICAgICAgICAgTERSICAgICAgICAgICByNywgW3IxXSwgIzQNCisgICAgICAgICAgTERSICAgICAgICAgICByOCwgW3IwXSwgIzQNCisgICAgICAgICAgU01MQUJCICAgICAgICByNCwgcjYsIHI3LCByNA0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHI5LCBbcjFdLCAjNA0KKwkgIFNNTEFUVCAgICAgICAgcjQsIHI2LCByNywgcjQgDQorDQorCSAgTERSICAgICAgICAgICByNiwgW3IwXSwgIzQNCisJICBTTUxBQkIgICAgICAgIHI0LCByOCwgcjksIHI0DQorDQorCSAgTERSICAgICAgICAgICByNywgW3IxXSwgIzQNCisJICBTTUxBVFQgICAgICAgIHI0LCByOCwgcjksIHI0CSAgDQorCSAgTERSICAgICAgICAgICByOCwgW3IwXSwgIzQNCisNCisJICBTTUxBQkIgICAgICAgIHI0LCByNiwgcjcsIHI0DQorCSAgTERSICAgICAgICAgICByOSwgW3IxXSwgIzQNCisJICBTTUxBVFQgICAgICAgIHI0LCByNiwgcjcsIHI0DQorCSAgQUREICAgICAgICAgICByNSwgcjUsICM4DQorCSAgU01MQUJCICAgICAgICByNCwgcjgsIHI5LCByNA0KKwkgIENNUCAgICAgICAgICAgcjUsIHIyDQorCSAgU01MQVRUICAgICAgICByNCwgcjgsIHI5LCByNA0KKwkgIEJMVCAgICAgICAgICAgTE9PUA0KKyAgICAgICAgICAgICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjEyLCByNCwgTFNMICMxDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjEyLCByMTIsICMxICAgICAgICAgICAgICAgICAgICAgICAgIEAgTF9zdW0gPSAoTF9zdW0gPDwgMSkgICsgMQ0KKwkgIE1PViAgICAgICAgICAgcjQsIHIxMg0KKw0KKyAgICAgICAgICBDTVAgICAgICAgICAgIHIxMiwgIzANCisJICBSU0JMVCAgICAgICAgIHI0LCByMTIsICMwDQorICAgICAgICAgIENMWiAgICAgICAgICAgcjEwLCByNA0KKyAgICAgICAgICBTVUIgICAgICAgICAgIHIxMCwgcjEwLCAjMSAgICAgICAgICAgICAgICAgICAgICAgICBAIHNmdCA9IG5vcm1fbChMX3N1bSkNCisgICAgICAgICAgTU9WICAgICAgICAgICByMCwgcjEyLCBMU0wgcjEwICAgICAgICAgICAgICAgICAgICAgQCBMX3N1bSA9IExfc3VtIDw8IHNmdA0KKyAgICAgICAgICBSU0IgICAgICAgICAgIHIxMSwgcjEwLCAjMzAgICAgICAgICAgICAgICAgICAgICAgICBAICpleHAgPSAzMCAtIHNmdA0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHIxMSwgW3IzXSAgICAgICAgICAgICAgICAgICAgIA0KKw0KK0RvdF9wcm9kdWN0MTJfZW5kOg0KKwkJICAgICANCisgICAgICAgICAgTERNRkQgICAJICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisgICAgICAgICAgQEVOREZVTkMNCisgICAgICAgICAgLkVORA0KKyANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvRmlsdF82a183a19vcHQucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9GaWx0XzZrXzdrX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZWJkNzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvRmlsdF82a183a19vcHQucwpAQCAtMCwwICsxLDE4NSBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitAdm9pZCBGaWx0XzZrXzdrKA0KK0AgICAgIFdvcmQxNiBzaWduYWxbXSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBzaWduYWwgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBsZW5ndGggb2YgaW5wdXQgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBtZW1vcnkgKHNpemU9MzApICAgICAgICAqLw0KK0ApDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgcjAgICAgLS0tICBzaWduYWxbXQ0KK0AgcjEgICAgLS0tICBsZw0KK0AgcjIgICAgLS0tICBtZW1bXSANCisNCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorICAgICAgICAgIC5nbG9iYWwgIEZpbHRfNmtfN2tfYXNtDQorICAgICAgICAgIC5leHRlcm4gIHZvQVdCX0NvcHkNCisgICAgICAgICAgLmV4dGVybiAgZmlyXzZrXzdrDQorDQorRmlsdF82a183a19hc206DQorDQorICAgICAgICAgIFNUTUZEICAgCQlyMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorICAgICAgICAgIFNVQiAgICAJCXIxMywgcjEzLCAjMjQwICAgICAgICAgICAgICBAIHhbTF9TVUJGUjE2ayArIChMX0ZJUiAtIDEpXQ0KKyAgICAgICAgICBNT1YgICAgIAkJcjgsIHIwICAgICAgICAgICAgICAgICAgICAgIEAgY29weSBzaWduYWxbXSBhZGRyZXNzDQorICAgICAgICAgIE1PViAgICAgCQlyNCwgcjEgICAgICAgICAgICAgICAgICAgICAgQCBjb3B5IGxnIGFkZHJlc3MNCisgICAgICAgICAgTU9WICAgICAJCXI1LCByMiAgICAgICAgICAgICAgICAgICAgICBAIGNvcHkgbWVtW10gYWRkcmVzcw0KKw0KKyAgICAgICAgICBNT1YgICAgIAkJcjEsIHIxMw0KKyAgICAgICAgICBNT1YgICAgIAkJcjAsIHIyDQorICAgICAgICAgIE1PViAgICAgCQlyMiwgIzMwICAgICAgICAgICAgICAgICAgICAgQCBMX0ZJUiAtIDENCisgICAgICAgICAgQkwgICAgICAJCXZvQVdCX0NvcHkgICAgICAgICAgICAgICAgICAgQCBtZW1jcHkoeCwgbWVtLCAoTF9GSVIgLSAxKTw8MSkNCisNCisgICAgICAgICAgTERSICAgICAJCXIxMCwgTGFibGUxICAgICAgICAgICAgICAgICBAIGdldCBmaXJfN2sgYWRkcmVzcyAgICAgDQorDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXIxNCwgIzAgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgICAgICAgICAgcjMsIHI4ICAgICAgICAgICAgICAgICAgICAgIEAgY2hhbmdlIG15TWVtQ29weSB0byBDb3B5LCBkdWUgdG8gQ29weSB3aWxsIGNoYW5nZSByMyBjb250ZW50DQorICAgICAgICAgIEFERCAgICAgCSAgICAJcjYsIHIxMywgIzYwICAgICAgICAgICAgICAgIEAgZ2V0IHhbTF9GSVIgLSAxXSBhZGRyZXNzDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXI3LCByMyAgICAgICAgICAgICAgICAgICAgICBAIGdldCBzaWduYWxbaV0NCitMT09QMToNCisgICAgICAgICAgTERSU0ggICAgICAgICAJcjgsICBbcjddLCAjMg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIAlyOSwgIFtyN10sICMyDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXI4LCByOCwgQVNSICMyDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXI5LCByOSwgQVNSICMyDQorICAgICAgICAgIExEUlNIICAgICAgICAgCXIxMSwgW3I3XSwgIzINCisgICAgICAgICAgTERSU0ggICAgICAgICAJcjEyLCBbcjddLCAjMg0KKyAgICAgICAgICBNT1YgICAgICAgICAgIAlyMTEsIHIxMSwgQVNSICMyDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXIxMiwgcjEyLCBBU1IgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICAJcjgsIFtyNl0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgCXI5LCBbcjZdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIAlyMTEsIFtyNl0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgCXIxMiwgW3I2XSwgIzINCisgICAgICAgICAgTERSU0ggICAgICAgICAJcjgsICBbcjddLCAjMg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIAlyOSwgIFtyN10sICMyDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXI4LCByOCwgQVNSICMyDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXI5LCByOSwgQVNSICMyDQorICAgICAgICAgIExEUlNIICAgICAgICAgCXIxMSwgW3I3XSwgIzINCisgICAgICAgICAgTERSU0ggICAgICAgICAJcjEyLCBbcjddLCAjMg0KKyAgICAgICAgICBNT1YgICAgICAgICAgIAlyMTEsIHIxMSwgQVNSICMyDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXIxMiwgcjEyLCBBU1IgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICAJcjgsIFtyNl0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgCXI5LCBbcjZdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIAlyMTEsIFtyNl0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgCXIxMiwgW3I2XSwgIzINCisgICAgICAgICAgQUREICAgICAgICAgICAJcjE0LCByMTQsICM4DQorICAgICAgICAgIENNUCAgICAgICAgICAgCXIxNCwgIzgwDQorICAgICAgICAgIEJMVCAgICAgICAgICAgCUxPT1AxICAgICAgICAgIA0KKw0KKw0KKyAgICAgICAgICBTVFIgICAgIAkJcjUsIFtzcCwgIy00XSAgICAgICAgICAgICAgIEAgUFVTSCAgcjUgdG8gc3RhY2sNCisNCisgICAgICAgICAgQCBub3QgdXNlIHJlZ2lzdGVyczogcjQsIHIxMCwgcjEyLCByMTQsIHI1DQorICAgICAgICAgIE1PViAgICAgCQlyNCwgcjEzIA0KKyAgICAgICAgICBNT1YgICAgIAkJcjUsICMwICAgICAgICAgICAgICAgICAgICAgIEAgaSA9IDAgICAgICAgICAgICAgIA0KK0xPT1AyOg0KKyAgICAgICAgICBMRFIgICAgICAgICAgIAlyMCwgW3IxMF0NCisNCisgICAgICAgICAgTERSU0ggIAkgICAgICAgIHIxLCBbcjRdICAgICAgICAgICAgICAgICAgIEAgbG9hZCB4W2ldDQorICAgICAgICAgIExEUlNIICAgCSAgICAgICAgcjIsIFtyNCwgIzYwXSAgICAgICAgICAgICAgQCBsb2FkIHhbaSArIDMwXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjYsIFtyNCwgIzJdICAgICAgICAgICAgICAgQCBsb2FkIHhbaSArIDFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByNywgW3I0LCAjNThdICAgICAgICAgICAgICBAIGxvYWQgeFtpICsgMjldDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByMSwgcjEsIHIyICAgICAgICAgICAgICAgICBAIHhbaV0gKyB4W2kgKyAzMF0NCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI2LCByNiwgcjcgICAgICAgICAgICAgICAgIEAgeFtpICsgMV0gKyB4W2kgKyAyOV0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI4LCBbcjQsICM0XSAgICAgICAgICAgICAgIEAgbG9hZCB4W2kgKyAyXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjksIFtyNCwgIzU2XSAgICAgICAgICAgICAgQCBsb2FkIHhbaSArIDI4XQ0KKw0KKyAgICAgICAgICBTTVVMQkIgICAgICAgICAgICAgICAgcjE0LCByMSwgcjAgICAgICAgICAgICAgICAgQCAoeFtpXSArIHhbaSArIDMwXSkgKiBmaXJfN2tbMF0NCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI4LCByOCwgcjkgICAgICAgICAgICAgICAgIEAgeFtpICsgMl0gKyB4W2kgKyAyOF0NCisgICAgICAgICAgU01MQUJUICAgICAgICAgICAgICAgIHIxNCwgcjYsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSArIDFdICsgeFtpICsgMjldKSAqIGZpcl83a1sxXQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgICAgICAgICAgcjAsIFtyMTAsICM0XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjEsIFtyNCwgIzZdICAgICAgICAgICAgICAgQCBsb2FkIHhbaSszXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjIsIFtyNCwgIzU0XSAgICAgICAgICAgICAgQCBsb2FkIHhbaSsyN10NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI2LCBbcjQsICM4XSAgICAgICAgICAgICAgIEAgbG9hZCB4W2krNF0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI3LCBbcjQsICM1Ml0gICAgICAgICAgICAgIEAgbG9hZCB4W2krMjZdDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByMSwgcjEsIHIyICAgICAgICAgICAgICAgICBAIHhbaSszXSArIHhbaSsyN10NCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI2LCByNiwgcjcgICAgICAgICAgICAgICAgIEAgeFtpKzRdICsgeFtpKzI2XQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgICAgICAgICAgcjE0LCByOCwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpICsgMl0gKyB4W2kgKyAyOF0pICogZmlyXzdrWzJdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByOCwgW3I0LCAjMTBdICAgICAgICAgICAgICBAIGxvYWQgeFtpKzVdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByOSwgW3I0LCAjNTBdICAgICAgICAgICAgICBAIGxvYWQgeFtpKzI1XQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgICAgICAgICAgcjE0LCByMSwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpKzNdICsgeFtpKzI3XSkgKiBmaXJfN2tbM10NCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI4LCByOCwgcjkgICAgICAgICAgICAgICAgIEAgeFtpKzVdICsgeFtpKzI1XSANCisgDQorICAgICAgICAgIExEUiAgICAgICAgICAgICAgICAgICByMCwgW3IxMCwgIzhdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByMSwgW3I0LCAjMTJdICAgICAgICAgICAgICBAIHhbaSs2XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjIsIFtyNCwgIzQ4XSAgICAgICAgICAgICAgQCB4W2krMjRdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgICAgICAgICByMTQsIHI2LCByMCwgcjE0ICAgICAgICAgICBAICh4W2krNF0gKyB4W2krMjZdKSAqIGZpcl83a1s0XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjYsIFtyNCwgIzE0XSAgICAgICAgICAgICAgQCB4W2krN10gDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByNywgW3I0LCAjNDZdICAgICAgICAgICAgICBAIHhbaSsyM10NCisgICAgICAgICAgU01MQUJUICAgICAgICAgICAgICAgIHIxNCwgcjgsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSs1XSArIHhbaSsyNV0pICogZmlyXzdrWzVdDQorICAgICAgICAgIExEUiAgICAgICAgICAgICAgICAgICByMCwgW3IxMCwgIzEyXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjEsIHIxLCByMiAgICAgICAgICAgICAgICAgQCAoeFtpKzZdICsgeFtpKzI0XSkNCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI2LCByNiwgcjcgICAgICAgICAgICAgICAgIEAgKHhbaSs3XSArIHhbaSsyM10pDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgICAgICAgICByMTQsIHIxLCByMCwgcjE0ICAgICAgICAgICBAICh4W2krNl0gKyB4W2krMjRdKSAqIGZpcl83a1s2XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjgsIFtyNCwgIzE2XSAgICAgICAgICAgICAgQCB4W2krOF0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI5LCBbcjQsICM0NF0gICAgICAgICAgICAgIEAgeFtpKzIyXSANCisgICAgICAgICAgU01MQUJUICAgICAgICAgICAgICAgIHIxNCwgcjYsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSs3XSArIHhbaSsyM10pICogZmlyXzdrWzddICANCisgICAgICAgICAgTERSICAgICAgICAgICAgICAgICAgIHIwLCBbcjEwLCAjMTZdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByMSwgW3I0LCAjMThdICAgICAgICAgICAgICBAIHhbaSs5XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjIsIFtyNCwgIzQyXSAgICAgICAgICAgICAgQCB4W2krMjFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByNiwgW3I0LCAjMjBdICAgICAgICAgICAgICBAIHhbaSsxMF0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI3LCBbcjQsICM0MF0gICAgICAgICAgICAgIEAgeFtpKzIwXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjgsIHI4LCByOSAgICAgICAgICAgICAgICAgQCAoeFtpKzhdICsgeFtpKzIyXSkNCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHIxLCByMSwgcjIgICAgICAgICAgICAgICAgIEAgKHhbaSs5XSArIHhbaSsyMV0pDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByNiwgcjYsIHI3ICAgICAgICAgICAgICAgICBAICh4W2krMTBdICsgeFtpKzIwXSkNCisgICAgICAgICAgU01MQUJCICAgICAgICAgICAgICAgIHIxNCwgcjgsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSs4XSArIHhbaSsyMl0pICogZmlyXzdrWzhdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByOCwgW3I0LCAjMjJdICAgICAgICAgICAgICBAIHhbaSsxMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI5LCBbcjQsICMzOF0gICAgICAgICAgICAgIEAgeFtpKzE5XQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgICAgICAgICAgcjE0LCByMSwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpKzldICsgeFtpKzIxXSkgKiBmaXJfN2tbOV0NCisgICAgICAgICAgTERSICAgICAgICAgICAgICAgICAgIHIwLCBbcjEwLCAjMjBdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByMSwgW3I0LCAjMjRdICAgICAgICAgICAgICBAIHhbaSsxMl0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHIyLCBbcjQsICMzNl0gICAgICAgICAgICAgIEAgeFtpKzE4XQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgICAgICAgICAgcjE0LCByNiwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpKzEwXSArIHhbaSsyMF0pICogZmlyXzdrWzEwXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjYsIFtyNCwgIzI2XSAgICAgICAgICAgICAgQCB4W2krMTNdDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByOCwgcjgsIHI5ICAgICAgICAgICAgICAgICBAICh4W2krMTFdICsgeFtpKzE5XSkgIA0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjcsIFtyNCwgIzM0XSAgICAgICAgICAgICAgQCB4W2krMTddDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgICAgICAgICByMTQsIHI4LCByMCwgcjE0ICAgICAgICAgICBAICh4W2krMTFdICsgeFtpKzE5XSkgKiBmaXJfN2tbMTFdDQorICAgICAgICAgIExEUiAgICAgICAgICAgICAgICAgICByMCwgW3IxMCwgIzI0XQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjEsIHIxLCByMiAgICAgICAgICAgICAgICAgQCB4W2krMTJdICsgeFtpKzE4XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjgsIFtyNCwgIzI4XSAgICAgICAgICAgICAgQCB4W2krMTRdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgICAgICAgICByMTQsIHIxLCByMCwgcjE0ICAgICAgICAgICBAICh4W2krMTJdICsgeFtpKzE4XSkgKiBmaXJfN2tbMTJdDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByNiwgcjYsIHI3ICAgICAgICAgICAgICAgICBAICh4W2krMTNdICsgeFtpKzE3XSkNCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI5LCBbcjQsICMzMl0gICAgICAgICAgICAgIEAgeFtpKzE2XSANCisgICAgICAgICAgU01MQUJUICAgICAgICAgICAgICAgIHIxNCwgcjYsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSsxM10gKyB4W2krMTddKSAqIGZpcl83a1sxM10NCisgICAgICAgICAgTERSICAgICAgICAgICAgICAgICAgIHIwLCBbcjEwLCAjMjhdICAgICAgICAgDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByOCwgcjgsIHI5ICAgICAgICAgICAgICAgICBAICh4W2krMTRdICsgeFtpKzE2XSkNCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHIxLCBbcjQsICMzMF0gICAgICAgICAgICAgIEAgeFtpKzE1XQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgICAgICAgICAgcjE0LCByOCwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpKzE0XSArIHhbaSsxNl0pICogZmlyXzdrWzE0XQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgICAgICAgICAgcjE0LCByMSwgcjAsIHIxNCAgICAgICAgICAgQCB4W2krMTVdICogZmlyXzdrWzE1XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKyAgICAgICAgICBBREQgICAgIAkJcjUsIHI1LCAjMQ0KKyAgICAgICAgICBBREQgICAgIAkJcjE0LCByMTQsICMweDQwMDANCisgICAgICAgICAgQUREICAgICAJCXI0LCByNCwgIzIgICAgICAgICAgICAgICAgDQorICAgICAgICAgIE1PViAgICAgCQlyMSwgcjE0LCBBU1IgIzE1DQorICAgICAgICAgIENNUCAgICAgCQlyNSwgIzgwDQorICAgICAgICAgIFNUUkggICAgCQlyMSwgW3IzXSwgIzIgICAgICAgICAgICAgICBAc2lnbmFsW2ldID0gKExfdG1wICsgMHg0MDAwKSA+PiAxNQ0KKyAgICAgICAgICBCTFQgICAgIAkJTE9PUDIgICAgICANCisgICAgICAgICAgIA0KKyAgICAgICAgICBMRFIgICAgIAkJcjEsIFtzcCwgIy00XSAgICAgICAgICAgICAgIEBtZW0gYWRkcmVzcw0KKyAgICAgICAgICBBREQgICAgIAkJcjAsIHIxMywgIzE2MCAgICAgICAgICAgICAgIEB4ICsgbGcNCisgICAgICAgICAgTU9WICAgICAJCXIyLCAjMzANCisgICAgICAgICAgQkwgICAgICAJCXZvQVdCX0NvcHkNCisgICAgICAgICAgICAgICAgICAgIA0KK0ZpbHRfNmtfN2tfZW5kOg0KKyAgICAgICAgICBBREQgICAgIAkJcjEzLCByMTMsICMyNDAgIA0KKyAgICAgICAgICBMRE1GRCAgIAkJcjEzISwge3I0IC0gcjEyLCByMTV9IA0KKyANCitMYWJsZTE6DQorICAgICAgICAgIC53b3JkICAgCQlmaXJfNmtfN2sNCisgICAgICAgICAgQEVOREZVTkMNCisgICAgICAgICAgLkVORA0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9Ob3JtX0NvcnJfb3B0LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvTm9ybV9Db3JyX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NDBhMzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvTm9ybV9Db3JyX29wdC5zCkBAIC0wLDAgKzEsMjMxIEBACitALyoKK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4KK0AgKioKK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CitAICoqCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKK0AgKioKK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KK0AgKi8KKworQHN0YXRpYyB2b2lkIE5vcm1fQ29yciAoV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4Y2l0YXRpb24gYnVmZmVyICAgICAgICAgICovCitAICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgeG5bXSwgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdGFyZ2V0IHZlY3RvciAgICAgICAgICAgICAgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBpbXB1bHNlIHJlc3BvbnNlIG9mIHN5bnRoL3dndCBmaWx0ZXJzICovCitAICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgTF9zdWJmciwgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc3ViLWZyYW1lIGxlbmd0aCAqLworQCAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHRfbWluLCAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG1pbmltdW0gdmFsdWUgb2YgcGl0Y2ggbGFnLiAgICovCitAICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgdF9tYXgsICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWF4aW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBjb3JyX25vcm1bXSkgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBub3JtYWxpemVkIGNvcnJlbGF0aW9uICAgICovCitACisKK0AgcjAgLS0tIGV4Y1tdCitAIHIxIC0tLSB4bltdCitAIHIyIC0tLSBoW10KK0AgcjMgLS0tIExfc3ViZnIKK0AgcjQgLS0tIHRfbWluCitAIHI1IC0tLSB0X21heAorQCByNiAtLS0gY29ycl9ub3JtW10KKworCisJLnNlY3Rpb24gIC50ZXh0IAorICAgICAgICAuZ2xvYmFsICAgTm9ybV9jb3JyX2FzbSAKKyAgICAgICAgLmV4dGVybiAgIENvbnZvbHZlX2FzbQorICAgICAgICAuZXh0ZXJuICAgSXNxcnRfbgorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQCBjb25zdGFudAorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLmVxdSAgICAgICAgIEVYQyAgICAgICAgICAgLCAgIDAKKy5lcXUgICAgICAgICBYTiAgICAgICAgICAgICwgICA0CisuZXF1ICAgICAgICAgSCAgICAgICAgICAgICAsICAgOAorLmVxdSAgICAgICAgIExfU1VCRlIgICAgICAgLCAgIDEyCisuZXF1ICAgICAgICAgdm9TVEFDSyAgICAgICAsICAgMTcyCisuZXF1ICAgICAgICAgVF9NSU4gICAgICAgICAsICAgMjEyCisuZXF1ICAgICAgICAgVF9NQVggICAgICAgICAsICAgMjE2CisuZXF1ICAgICAgICAgQ09SUl9OT1JNICAgICAsICAgMjIwCisgICAgICAgICAgICAgICAgICAKK05vcm1fY29ycl9hc206CisKKyAgICAgICAgU1RNRkQgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNH0gIAorICAgICAgICBTVUIgICAgICAgIHIxMywgcjEzLCAjdm9TVEFDSworICAKKyAgICAgICAgQUREICAgICAgICByOCwgcjEzLCAjMjAgICAgICAgICAgICAgICAgIEBnZXQgdGhlIGV4Y2ZbTF9TVUJGUl0KKyAgICAgICAgTERSICAgICAgICByNCwgW3IxMywgI1RfTUlOXSAgICAgICAgICAgIEBnZXQgdF9taW4KKyAgICAgICAgUlNCICAgICAgICByMTEsIHI0LCAjMCAgICAgICAgICAgICAgICAgIEBrID0gLXRfbWluCisgICAgICAgIEFERCAgICAgICAgcjUsIHIwLCByMTEsIExTTCAjMSAgICAgICAgICBAZ2V0IHRoZSAmZXhjW2tdICAgCisgICAgICAgIAorICAgICAgICBAdHJhbnNmZXIgQ29udm9sdmUgZnVuY3Rpb24KKyAgICAgICAgU1RNRkQgICAgICAgc3AhLCB7cjAgLSByM30KKyAgICAgICAgTU9WICAgICAgICAgcjAsIHI1CisgICAgICAgIE1PViAgICAgICAgIHIxLCByMgorICAgICAgICBNT1YgICAgICAgICByMiwgcjggICAgICAgICAgICAgICAgICAgICAgIEByMiAtLS0gZXhjZltdCisgICAgICAgIEJMICAgICAgICAgIENvbnZvbHZlX2FzbQorICAgICAgICBMRE1GRCAgICAgICBzcCEsIHtyMCAtIHIzfQorCisgICAgICAgIEAgcjggLS0tIGV4Y2ZbXQorCisJTU9WICAgICAgICAgcjE0LCByMSAgICAgICAgICAgICAgICAgICAgICAgQGNvcHkgeG5bXSBhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBNT1YgICAgICAgICByNSwgIzY0CisgICAgICAgIE1PViAgICAgICAgIHI2LCAjMCAgICAgICAgICAgICAgICAgICAgICAgQExfdG1wID0gMAorICAgICAgICBNT1YgICAgICAgICByNywgIzEKKworTE9PUDE6CisgICAgICAgIExEUiAgICAgICAgIHI5LCAgW3IxNF0sICM0CisJTERSICAgICAgICAgcjEwLCBbcjE0XSwgIzQKKwlMRFIgICAgICAgICByMTEsIFtyMTRdLCAjNAorCUxEUiAgICAgICAgIHIxMiwgW3IxNF0sICM0CisJU01MQUJCICAgICAgcjYsIHI5LCByOSwgcjYgICAgICAgICAgICAgICBATF90bXAgKz0gKHhuW2ldICogeG5baV0pCisJU01MQVRUICAgICAgcjYsIHI5LCByOSwgcjYgICAgICAgICAgICAgICBATF90bXAgKz0gKHhuW2krMV0gKiB4bltpKzFdKQorICAgICAgICBTTUxBQkIgICAgICByNiwgcjEwLCByMTAsIHI2CisJU01MQVRUICAgICAgcjYsIHIxMCwgcjEwLCByNgorCVNNTEFCQiAgICAgIHI2LCByMTEsIHIxMSwgcjYKKyAgICAgICAgU01MQVRUICAgICAgcjYsIHIxMSwgcjExLCByNgorICAgICAgICBTTUxBQkIgICAgICByNiwgcjEyLCByMTIsIHI2CisgICAgICAgIFNNTEFUVCAgICAgIHI2LCByMTIsIHIxMiwgcjYKKyAgICAgICAgU1VCUyAgICAgICAgcjUsIHI1LCAjOAorICAgICAgICBCTkUgICAgICAgICBMT09QMQorCisJQUREICAgICAgICAgcjksIHI3LCByNiwgTFNMICMxICAgICAgICAgICBATF90bXAgPSAoTF90bXAgPDwgMSkgKyAxCisJQ0xaICAgICAgICAgcjcsIHI5CisJU1VCICAgICAgICAgcjYsIHI3LCAjMSAgICAgICAgICAgICAgICAgICBAZXhwID0gbm9ybV9sKExfdG1wKQorICAgICAgICBSU0IgICAgICAgICByNywgcjYsICMzMiAgICAgICAgICAgICAgICAgIEBleHAgPSAzMiAtIGV4cAorCU1PViAgICAgICAgIHI2LCByNywgQVNSICMxICAgICAgICAgCisJUlNCICAgICAgICAgcjcsIHI2LCAjMCAgICAgICAgICAgICAgICAgICBAc2NhbGUgPSAtKGV4cCA+PiAxKQorCQorICAgICAgICBAbG9vcCBmb3IgZXZlcnkgcG9zc2libGUgcGVyaW9kCisJQGZvcih0ID0gdF9taW5AIHQgPD0gdF9tYXhAIHQrKykKKwlAcjcgLS0tIHNjYWxlIHI0IC0tLSB0X21pbiByOCAtLS0gZXhjZltdCisKK0xPT1BGT1I6CQorICAgICAgICBNT1YgICAgICAgICByNSwgIzAgICAgICAgICAgICAgICAgICAgICAgIEBMX3RtcCAgPSAwCisJTU9WICAgICAgICAgcjYsICMwICAgICAgICAgICAgICAgICAgICAgICBATF90bXAxID0gMAorCU1PViAgICAgICAgIHI5LCAjNjQgIAorCU1PViAgICAgICAgIHIxMiwgcjEgICAgICAgICAgICAgICAgICAgICAgQGNvcHkgb2YgeG5bXQorCUFERCAgICAgICAgIHIxNCwgcjEzLCAjMjAgICAgICAgICAgICAgICAgQGNvcHkgb2YgZXhjZltdCisJTU9WICAgICAgICAgcjgsICMweDgwMDAKKyAgICAgICAgCQorTE9PUGk6CisJTERSICAgICAgICAgcjExLCBbcjE0XSwgIzQgICAgICAgICAgICAgICBAbG9hZCBleGNmW2ldLCBleGNmW2krMV0KKyAgICAgICAgTERSICAgICAgICAgcjEwLCBbcjEyXSwgIzQgICAgICAgICAgICAgICBAbG9hZCB4bltpXSwgeG5baSsxXQorCVNNTEFCQiAgICAgIHI2LCByMTEsIHIxMSwgcjYgICAgICAgICAgICAgQExfdG1wMSArPSBleGNmW2ldICogZXhjZltpXQorCVNNTEFUVCAgICAgIHI2LCByMTEsIHIxMSwgcjYgICAgICAgICAgICAgQExfdG1wMSArPSBleGNmW2krMV0gKiBleGNmW2krMV0KKyAgICAgICAgU01MQUJCICAgICAgcjUsIHIxMCwgcjExLCByNSAgICAgICAgICAgICBATF90bXAgKz0geG5baV0gKiBleGNmW2ldCisJU01MQVRUICAgICAgcjUsIHIxMCwgcjExLCByNSAgICAgICAgICAgICBATF90bXAgKz0geG5baSsxXSAqIGV4Y2ZbaSsxXQorCUxEUiAgICAgICAgIHIxMSwgW3IxNF0sICM0ICAgICAgICAgICAgICAgQGxvYWQgZXhjZltpKzJdLCBleGNmW2krM10KKwlMRFIgICAgICAgICByMTAsIFtyMTJdLCAjNCAgICAgICAgICAgICAgIEBsb2FkIHhuW2krMl0sIHhuW2krM10KKyAgICAgICAgU01MQUJCICAgICAgcjYsIHIxMSwgcjExLCByNgorCVNNTEFUVCAgICAgIHI2LCByMTEsIHIxMSwgcjYKKwlTTUxBQkIgICAgICByNSwgcjEwLCByMTEsIHI1CisJU01MQVRUICAgICAgcjUsIHIxMCwgcjExLCByNQorCVNVQlMgICAgICAgIHI5LCByOSwgIzQKKyAgICAgICAgQk5FICAgICAgICAgTE9PUGkKKworCUByNSAtLS0gTF90bXAsIHI2IC0tLSBMX3RtcDEKKwlNT1YgICAgICAgICByMTAsICMxCisJQUREICAgICAgICAgcjUsIHIxMCwgcjUsIExTTCAjMSAgICAgICAgICBATF90bXAgPSAoTF90bXAgPDwgMSkgKyAxCisJQUREICAgICAgICAgcjYsIHIxMCwgcjYsIExTTCAjMSAgICAgICAgICBATF90bXAxID0gKExfdG1wMSA8PCAxKSArIDEKKyAKKwlDTFogICAgICAgICByMTAsIHI1ICAgICAgICAKKwlDTVAgICAgICAgICByNSwgIzAKKwlSU0JMVCAgICAgICByMTEsIHI1LCAjMAorCUNMWkxUICAgICAgIHIxMCwgcjExCisJU1VCICAgICAgICAgcjEwLCByMTAsICMxICAgICAgICAgICAgICAgICBAZXhwID0gbm9ybV9sKExfdG1wKQorICAgICAKKwlNT1YgICAgICAgICByNSwgcjUsIExTTCByMTAgICAgICAgICAgICAgIEBMX3RtcCA9IChMX3RtcCA8PCBleHApCisJUlNCICAgICAgICAgcjEwLCByMTAsICMzMCAgICAgICAgICAgICAgICBAZXhwX2NvcnIgPSAzMCAtIGV4cAorCU1PViAgICAgICAgIHIxMSwgcjUsIEFTUiAjMTYgICAgICAgICAgICAgQGNvcnIgPSBleHRyYWN0X2goTF90bXApCisKKwlDTFogICAgICAgICByNSwgcjYKKwlTVUIgICAgICAgICByNSwgcjUsICMxCisJTU9WICAgICAgICAgcjYsIHI2LCBMU0wgcjUgICAgICAgICAgICAgICBATF90bXAgPSAoTF90bXAxIDw8IGV4cCkKKwlSU0IgICAgICAgICByNSwgcjUsICMzMCAgICAgICAgICAgICAgICAgIEBleHBfbm9ybSA9IDMwIC0gZXhwCisKKwlAcjEwIC0tLSBleHBfY29yciwgcjExIC0tLSBjb3JyCisJQHI2ICAtLS0gTF90bXAsIHI1IC0tLSBleHBfbm9ybQorCisJQElzcXJ0X24oJkxfdG1wLCAmZXhwX25vcm0pCisKKwlNT1YgICAgICAgICByMTQsIHIwCisJTU9WICAgICAgICAgcjEyLCByMSAKKworICAgICAgICBTVE1GRCAgICAgICBzcCEsIHtyMCAtIHI0LCByNyAtIHIxMiwgcjE0fQorCUFERCAgICAgICAgIHIxLCBzcCwgIzQKKwlBREQgICAgICAgICByMCwgc3AsICMwCisJU1RSICAgICAgICAgcjYsIFtzcF0KKwlTVFJIICAgICAgICByNSwgW3NwLCAjNF0KKwlCTCAgICAgICAgICBJc3FydF9uCisJTERSICAgICAgICAgcjYsIFtzcF0KKwlMRFJTSCAgICAgICByNSwgW3NwLCAjNF0KKyAgICAgICAgTERNRkQgICAgICAgc3AhLCB7cjAgLSByNCwgcjcgLSByMTIsIHIxNH0KKwlNT1YgICAgICAgICByMCwgcjE0CisJTU9WICAgICAgICAgcjEsIHIxMgorCisKKwlNT1YgICAgICAgICByNiwgcjYsIEFTUiAjMTYgICAgICAgICAgICAgIEBub3JtID0gZXh0cmFjdF9oKExfdG1wKQorCU1VTCAgICAgICAgIHIxMiwgcjYsIHIxMQorCUFERCAgICAgICAgIHIxMiwgcjEyLCByMTIgICAgICAgICAgICAgICAgQExfdG1wID0gdm9fTF9tdWx0KGNvcnIsIG5vcm0pCisgIAorCUFERCAgICAgICAgIHI2LCByMTAsIHI1CisJQUREICAgICAgICAgcjYsIHI2LCByNyAgICAgICAgICAgICAgICAgICBAZXhwX2NvcnIgKyBleHBfbm9ybSArIHNjYWxlCisKKyAgICAgICAgQ01QICAgICAgICAgcjYsICMwCisgICAgICAgIFJTQkxUICAgICAgIHI2LCByNiwgIzAKKwlNT1ZMVCAgICAgICByMTIsIHIxMiwgQVNSIHI2CisgICAgICAgIE1PVkdUICAgICAgIHIxMiwgcjEyLCBMU0wgcjYgICAgICAgICAgICAgQExfdG1wID0gTF9zaGwoTF90bXAsIGV4cF9jb3JyICsgZXhwX25vcm0gKyBzY2FsZSkKKworICAgICAgICBBREQgICAgICAgICByMTIsIHIxMiwgcjgKKyAgICAgICAgTU9WICAgICAgICAgcjEyLCByMTIsIEFTUiAjMTYgICAgICAgICAgICBAdm9fcm91bmQoTF90bXApCisKKyAgICAgICAgTERSICAgICAgICAgcjUsIFtyMTMsICNDT1JSX05PUk1dICAgICAgICBAIGdldCBjb3JyX25vcm0gYWRkcmVzcworCUxEUiAgICAgICAgIHI2LCBbcjEzLCAjVF9NQVhdICAgICAgICAgICAgQCBnZXQgdF9tYXgKKwlBREQgICAgICAgICByMTAsIHI1LCByNCwgTFNMICMxICAgICAgICAgIEAgZ2V0IGNvcnJfbm9ybVt0XSBhZGRyZXNzCisJU1RSSCAgICAgICAgcjEyLCBbcjEwXSAgICAgICAgICAgICAgICAgICBAIGNvcnJfbm9ybVt0XSA9IHZvX3JvdW5kKExfdG1wKQorCisJQ01QICAgICAgICAgcjQsIHI2CisJQkVRICAgICAgICAgTm9ybV9jb3JyX2FzbV9lbmQKKyAKKwlBREQgICAgICAgICByNCwgcjQsICMxICAgICAgICAgICAgICAgICAgIEAgdF9taW4gKysKKyAgICAgICAgCisJUlNCICAgICAgICAgcjUsIHI0LCAjMCAgICAgICAgICAgICAgICAgICBAIGsKKworCU1PViAgICAgICAgIHI2LCAjNjMgICAgICAgICAgICAgICAgICAgICAgQCBpID0gNjMKKwlNT1YgICAgICAgICByOCwgcjAgICAgICAgICAgICAgICAgICAgICAgIEAgZXhjW10KKwlNT1YgICAgICAgICByOSwgcjIgICAgICAgICAgICAgICAgICAgICAgIEAgaFtdCisJQUREICAgICAgICAgcjEwLCByMTMsICMyMCAgICAgICAgICAgICAgICBAIGV4Y2ZbXQorCisJQUREICAgICAgICAgcjgsIHI4LCByNSwgTFNMICMxICAgICAgICAgICBAIGV4Y1trXSBhZGRyZXNzCisJQUREICAgICAgICAgcjksIHI5LCByNiwgTFNMICMxICAgICAgICAgICBAIGhbaV0gYWRkcmVzcworCUFERCAgICAgICAgIHIxMCwgcjEwLCByNiwgTFNMICMxICAgICAgICAgQCBleGNmW2ldIGFkZHJlc3MKKwlMRFJTSCAgICAgICByMTEsIFtyOF0gICAgICAgICAgICAgICAgICAgIEAgdG1wID0gZXhjW2tdCisKK0xPT1BLOgorICAgICAgICBMRFJTSCAgICAgICByOCwgW3I5XSwgIy0yICAgICAgICAgICAgICAgIEAgbG9hZCBoW2ldCisJTERSU0ggICAgICAgcjEyLCBbcjEwLCAjLTJdICAgICAgICAgICAgICBAIGxvYWQgZXhjZltpIC0gMV0KKwlNVUwgICAgICAgICByMTQsIHIxMSwgcjgKKwlNT1YgICAgICAgICByOCwgcjE0LCBBU1IgIzE1CisJQUREICAgICAgICAgcjE0LCByOCwgcjEyCisJU1RSSCAgICAgICAgcjE0LCBbcjEwXSwgIy0yCisJU1VCUyAgICAgICAgcjYsIHI2LCAjMQorCUJHVCAgICAgICAgIExPT1BLCisKKwlMRFJTSCAgICAgICByOCwgW3I5XSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBoWzBdCisJTVVMICAgICAgICAgcjE0LCByMTEsIHI4CisgICAgICAgIExEUiAgICAgICAgIHI2LCBbcjEzLCAjVF9NQVhdICAgICAgICAgICAgQCBnZXQgdF9tYXgKKwlNT1YgICAgICAgICByOCwgcjE0LCBBU1IgIzE1CisJU1RSSCAgICAgICAgcjgsIFtyMTBdICAgICAgICAgICAgICAgICAgICAKKworCUNNUCAgICAgICAgIHI0LCByNgorCUJMRSAgICAgICAgIExPT1BGT1IKKworTm9ybV9jb3JyX2FzbV9lbmQ6IAorICAgICAgICAKKyAgICAgICAgQUREICAgICAgICAgICAgcjEzLCByMTMsICN2b1NUQUNLICAgICAgCisgICAgICAgIExETUZEICAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fQorICAgIAorICAgICAgICAuRU5ECisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL1N5bl9maWx0XzMyX29wdC5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL1N5bl9maWx0XzMyX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTY2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvU3luX2ZpbHRfMzJfb3B0LnMKQEAgLTAsMCArMSwyMjYgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQA0KK0B2b2lkIFN5bl9maWx0XzMyKA0KK0AgICAgIFdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGFbbSsxXSBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAqLw0KK0AgICAgIFdvcmQxNiBtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG9yZGVyIG9mIExQIGZpbHRlciAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFuZXc6IGV4Y2l0YXRpb24gKGV4Y1tpXSA+PiBRbmV3KSAgICAqLw0KK0AgICAgIFdvcmQxNiBRbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4YyBzY2FsaW5nID0gMChtaW4pIHRvIDgobWF4KSAqLw0KK0AgICAgIFdvcmQxNiBzaWdfaGlbXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBoaWdoICAgICAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBzaWdfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBsb3cgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBsZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAqLw0KK0ApDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0ANCitAIGFbXSAgICAgIC0tLSByMA0KK0AgbSAgICAgICAgLS0tIHIxDQorQCBleGNbXSAgICAtLS0gcjINCitAIFFuZXcgICAgIC0tLSByMw0KK0Agc2lnX2hpW10gLS0tIHI0DQorQCBzaWdfbG9bXSAtLS0gcjUNCitAIGxnICAgICAgIC0tLSByNg0KKw0KKyAgICAgICAgICAuc2VjdGlvbiAgLnRleHQNCisgICAgICAgICAgLmdsb2JhbCAgU3luX2ZpbHRfMzJfYXNtDQorDQorU3luX2ZpbHRfMzJfYXNtOg0KKw0KKyAgICAgICAgICBTVE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjQsICBbcjEzLCAjNDBdICAgICAgICAgICAgICAgICAgQCBnZXQgc2lnX2hpW10gYWRkcmVzcw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHI1LCAgW3IxMywgIzQ0XSAgICAgICAgICAgICAgICAgIEAgZ2V0IHNpZ19sb1tdIGFkZHJlc3MNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgIFtyMF0gICAgICAgICAgICAgICAgICAgICAgICBAIGxvYWQgQXFbMF0NCisgICAgICAgICAgQUREICAgICAgICAgICByNywgIHIzLCAjNCAgICAgICAgICAgICAgICAgICAgICBAIDQgKyBRX25ldw0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHIzLCByNiwgQVNSIHI3ICAgICAgICAgICAgICAgICAgIEAgYTAgPSBBcVswXSA+PiAoNCArIFFfbmV3KQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxNCwgPTB4ZmZmZg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjAsICMyXSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVsxXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI3LCBbcjAsICM0XSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVsyXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI4LCBbcjAsICM2XSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVszXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjAsICM4XSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVs0XQ0KKyAgICAgICAgICBBTkQgICAgICAgICAgIHI2LCByNiwgcjE0DQorICAgICAgICAgIEFORCAgICAgICAgICAgcjgsIHI4LCByMTQNCisgICAgICAgICAgT1JSICAgICAgICAgICByMTAsIHI2LCByNywgTFNMICMxNiAgICAgICAgICAgICBAIEFxWzJdIC0tIEFxWzFdDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjExLCByOCwgcjksIExTTCAjMTYgICAgICAgICAgICAgQCBBcVs0XSAtLSBBcVszXQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMCwgW3IxMywgIy00XSAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMSwgW3IxMywgIy04XQ0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjAsICMxMF0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVs1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI3LCBbcjAsICMxMl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVs2XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI4LCBbcjAsICMxNF0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVs3XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjAsICMxNl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVs4XQ0KKyAgICAgICAgICBBTkQgICAgICAgICAgIHI2LCByNiwgcjE0DQorICAgICAgICAgIEFORCAgICAgICAgICAgcjgsIHI4LCByMTQNCisgICAgICAgICAgT1JSICAgICAgICAgICByMTAsIHI2LCByNywgTFNMICMxNiAgICAgICAgICAgICBAIEFxWzZdIC0tIEFxWzVdDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjExLCByOCwgcjksIExTTCAjMTYgICAgICAgICAgICAgQCBBcVs4XSAtLSBBcVs3XQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMCwgW3IxMywgIy0xMl0NCisgICAgICAgICAgU1RSICAgICAgICAgICByMTEsIFtyMTMsICMtMTZdDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyMCwgIzE4XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzldDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyMCwgIzIwXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzEwXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI4LCBbcjAsICMyMl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVsxMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgW3IwLCAjMjRdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgQXFbMTJdDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjYsIHI2LCByMTQgDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjgsIHI4LCByMTQNCisgICAgICAgICAgT1JSICAgICAgICAgICByMTAsIHI2LCByNywgTFNMICMxNiAgICAgICAgICAgICBAIEFxWzEwXSAtLSBBcVs5XQ0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMSwgcjgsIHI5LCBMU0wgIzE2ICAgICAgICAgICAgIEAgQXFbMTJdIC0tIEFxWzExXQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMCwgW3IxMywgIy0yMF0NCisgICAgICAgICAgU1RSICAgICAgICAgICByMTEsIFtyMTMsICMtMjRdICANCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3IwLCAjMjZdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgQXFbMTNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyMCwgIzI4XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzE0XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI4LCBbcjAsICMzMF0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVsxNV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgW3IwLCAjMzJdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgQXFbMTZdDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjYsIHI2LCByMTQNCisgICAgICAgICAgQU5EICAgICAgICAgICByOCwgcjgsIHIxNA0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMCwgcjYsIHI3LCBMU0wgIzE2ICAgICAgICAgICAgIEAgQXFbMTRdIC0tIEFxWzEzXQ0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMSwgcjgsIHI5LCBMU0wgIzE2ICAgICAgICAgICAgIEAgQXFbMTZdIC0tIEFxWzE1XQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMCwgW3IxMywgIy0yOF0NCisgICAgICAgICAgU1RSICAgICAgICAgICByMTEsIFtyMTMsICMtMzJdDQorICAgICAgICAgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI4LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgaSA9IDANCisgICAgICAgICAgICAgIA0KK0xPT1A6ICAgICAgICAgICAgDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyNSwgIy0yXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyNSwgIy00XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTJdDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjExLCBbcjEzLCAjLTRdICAgICAgICAgICAgICAgICAgQCBBcVsyXSAtLSBBcVsxXSAgICAgICAgDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyNSwgIy02XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjEwLCBbcjUsICMtOF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTRdDQorDQorICAgICAgICAgIFNNVUxCQiAgICAgICAgcjEyLCByNiwgcjExICAgICAgICAgICAgICAgICAgICAgQCBzaWdfbG9baS0xXSAqIEFxWzFdDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyNSwgIy0xMF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTVdDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjEyLCByNywgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfbG9baS0yXSAqIEFxWzJdDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjExLCBbcjEzLCAjLThdICAgICAgICAgICAgICAgICAgQCBBcVs0XSAtLSBBcVszXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI3LCBbcjUsICMtMTJdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS02XQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxMiwgcjksIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktM10gKiBBcVszXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjUsICMtMTRdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS03XQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxMiwgcjEwLCByMTEsIHIxMiAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktNF0gKiBBcVs0XQ0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0xMl0gICAgICAgICAgICAgICAgIEAgQXFbNl0gLS0gQXFbNV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyNSwgIy0xNl0gICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktOF0NCisgICAgICAgICAgU01MQUJCICAgICAgICByMTIsIHI2LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTVdICogQXFbNV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgIFtyNSwgIy0xOF0gICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktOV0NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHI3LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTZdICogQXFbNl0NCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtMTZdICAgICAgICAgICAgICAgICBAIEFxWzhdIC0tIEFxWzddDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsICBbcjUsICMtMjBdICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTEwXQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxMiwgcjksIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktN10gKiBBcVs3XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjUsICMtMjJdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS0xMV0NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHIxMCwgcjExLCByMTIgICAgICAgICAgICAgICBAIHNpZ19sb1tpLThdICogQXFbOF0NCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtMjBdICAgICAgICAgICAgICAgICBAIEFxWzEwXSAtLSBBcVs5XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCxbcjUsICMtMjRdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS0xMl0NCisgICAgICAgICAgU01MQUJCICAgICAgICByMTIsIHI2LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTldICogQXFbOV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3I1LCAjLTI2XSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktMTNdDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjEyLCByNywgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfbG9baS0xMF0gKiBBcVsxMF0NCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtMjRdICAgICAgICAgICAgICAgICBAIEFxWzEyXSAtLSBBcVsxMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgW3I1LCAjLTI4XSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktMTRdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjEyLCByOSwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfbG9baS0xMV0gKiBBcVsxMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgW3I1LCAjLTMwXSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktMTVdDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjEyLCByMTAsIHIxMSwgcjEyICAgICAgICAgICAgICAgQCBzaWdfbG9baS0xMl0gKiBBcVsxMl0NCisNCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtMjhdICAgICAgICAgICAgICAgICBAIEFxWzE0XSAtLSBBcVsxM10NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyNSwgIy0zMl0gICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktMTZdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjEyLCByNiwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfbG9baS0xM10gKiBBcVsxM10NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHI3LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTE0XSAqIEFxWzE0XQ0KKyANCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtMzJdICAgICAgICAgICAgICAgICBAIEFxWzE2XSAtLSBBcVsxNV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3IyXSwjMiAgICAgICAgICAgICAgICAgICAgICBAIGxvYWQgZXhjW2ldIA0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxMiwgcjksIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktMTVdICogQXFbMTVdDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjEyLCByMTAsIHIxMSwgcjEyICAgICAgICAgICAgICAgQCBzaWdfbG9baS0xNl0gKiBBcVsxNl0NCisgICAgICAgICAgTVVMICAgICAgICAgICByNywgcjYsIHIzICAgICAgICAgICAgICAgICAgICAgICBAIGV4Y1tpXSAqIGEwIA0KKyAgICAgICAgICBSU0IgICAgICAgICAgIHIxNCwgcjEyLCAjMCAgICAgICAgICAgICAgICAgICAgIEAgTF90bXANCisgICAgICAgICAgTU9WICAgICAgICAgICByMTQsIHIxNCwgQVNSICMxMSAgICAgICAgICAgICAgICBAIExfdG1wID4+PSAxMQ0KKyAgICAgICAgICBBREQgICAgICAgICAgIHIxNCwgcjE0LCByNywgTFNMICMxICAgICAgICAgICAgIEAgTF90bXAgKz0gKGV4Y1tpXSAqIGEwKSA8PCAxDQorDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyNCwgIy0yXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyNCwgIy00XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTJdDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjExLCBbcjEzLCAjLTRdICAgICAgICAgICAgICAgICAgQCBBcVsyXSAtLSBBcVsxXSAgICAgICAgDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyNCwgIy02XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjEwLCBbcjQsICMtOF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTRdDQorICAgICAgICAgIFNNVUxCQiAgICAgICAgcjEyLCByNiwgcjExICAgICAgICAgICAgICAgICAgICAgQCBzaWdfaGlbaS0xXSAqIEFxWzFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyNCwgIy0xMF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTVdDQorCSAgU01MQUJUICAgICAgICByMTIsIHI3LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTJdICogQXFbMl0NCisNCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtOF0gICAgICAgICAgICAgICAgICBAIEFxWzRdIC0tIEFxWzNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyNCwgIy0xMl0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTZdDQorDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjEyLCByOSwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfaGlbaS0zXSAqIEFxWzNdDQorCSAgTERSU0ggICAgICAgICByOSwgW3I0LCAjLTE0XSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktN10NCisNCisJICBTTUxBQlQgICAgICAgIHIxMiwgcjEwLCByMTEsIHIxMiAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktNF0gKiBBcVs0XQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0xMl0gICAgICAgICAgICAgICAgIEAgQXFbNl0gLS0gQXFbNV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyNCwgIy0xNl0gICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktOF0NCisNCisJICBTTUxBQkIgICAgICAgIHIxMiwgcjYsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktNV0gKiBBcVs1XQ0KKw0KKwkgIExEUlNIICAgICAgICAgcjYsICBbcjQsICMtMThdICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTldDQorCSAgU01MQUJUICAgICAgICByMTIsIHI3LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTZdICogQXFbNl0NCisNCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtMTZdICAgICAgICAgICAgICAgICBAIEFxWzhdIC0tIEFxWzddDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsICBbcjQsICMtMjBdICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTEwXQ0KKw0KKwkgIFNNTEFCQiAgICAgICAgcjEyLCByOSwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfaGlbaS03XSAqIEFxWzddDQorDQorCSAgTERSU0ggICAgICAgICByOSwgW3I0LCAjLTIyXSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktMTFdDQorDQorCSAgU01MQUJUICAgICAgICByMTIsIHIxMCwgcjExLCByMTIgICAgICAgICAgICAgICBAIHNpZ19oaVtpLThdICogQXFbOF0NCisNCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtMjBdICAgICAgICAgICAgICAgICBAIEFxWzEwXSAtLSBBcVs5XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCxbcjQsICMtMjRdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfaGlbaS0xMl0NCisNCisJICBTTUxBQkIgICAgICAgIHIxMiwgcjYsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktOV0gKiBBcVs5XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjQsICMtMjZdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfaGlbaS0xM10NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHI3LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTEwXSAqIEFxWzEwXQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0yNF0gICAgICAgICAgICAgICAgIEAgQXFbMTJdIC0tIEFxWzExXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI3LCBbcjQsICMtMjhdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfaGlbaS0xNF0NCisgICAgICAgICAgU01MQUJCICAgICAgICByMTIsIHI5LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTExXSAqIEFxWzExXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjQsICMtMzBdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfaGlbaS0xNV0NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHIxMCwgcjExLCByMTIgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTEyXSAqIEFxWzEyXQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0yOF0gICAgICAgICAgICAgICAgIEAgQXFbMTRdIC0tIEFxWzEzXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I0LCAjLTMyXSAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfaGlbaS0xNl0NCisgICAgICAgICAgU01MQUJCICAgICAgICByMTIsIHI2LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTEzXSAqIEFxWzEzXQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxMiwgcjcsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktMTRdICogQXFbMTRdDQorIA0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0zMl0gICAgICAgICAgICAgICAgIEAgQXFbMTZdIC0tIEFxWzE1XQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxMiwgcjksIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktMTVdICogQXFbMTVdDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjEyLCByMTAsIHIxMSwgcjEyICAgICAgICAgICAgICAgQCBzaWdfaGlbaS0xNl0gKiBBcVsxNl0gICAgICAgDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjYsIHIxMiwgcjEyICAgICAgICAgICAgICAgICAgICAgQCByMTIgPDwgMQ0KKyAgICAgICAgICBTVUIgICAgICAgICAgIHIxNCwgcjE0LCByNiAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHIxNCwgcjE0LCBMU0wgIzMgICAgICAgICAgICAgICAgIEAgTF90bXAgPDw9Mw0KKyAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjcsIHIxNCwgQVNSICMxNiAgICAgICAgICAgICAgICAgQCBMX3RtcCA+PiAxNg0KKw0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHIxNCwgcjE0LCBBU1IgIzQgICAgICAgICAgICAgICAgIEAgTF90bXAgPj49NA0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI3LCBbcjRdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgICBAIHNpZ19oaVtpXSA9IExfdG1wID4+IDE2DQorICAgICAgICAgIFNVQiAgICAgICAgICAgcjksIHIxNCwgcjcsIExTTCAjMTIgICAgICAgICAgICAgQCBzaWdfbG9baV0gPSBMX3RtcCAtIChzaWdfaGlbaV0gPDwgMTIpDQorDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjgsIHI4LCAjMQ0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI5LCBbcjVdLCAjMiAgIA0KKyAgICAgICAgICBDTVAgICAgICAgICAgIHI4LCAjNjQNCisgICAgICAgICAgQkxUICAgICAgICAgICBMT09QICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KK1N5bl9maWx0XzMyX2VuZDoNCisJCSAgICAgDQorICAgICAgICAgIExETUZEICAgCSAgICByMTMhLCB7cjQgLSByMTIsIHIxNX0gDQorICAgICAgICAgIEBFTkRGVU5DDQorICAgICAgICAgIC5FTkQNCisgDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL2NvbnZvbHZlX29wdC5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL2NvbnZvbHZlX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyMjhiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvY29udm9sdmVfb3B0LnMKQEAgLTAsMCArMSwxODYgQEAKK0AvKgorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLgorQCAqKgorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKK0AgKioKK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorQCAqKgorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorQCAqLworCisKK0Aqdm9pZCBDb252b2x2ZSAoCitAKiAgICBXb3JkMTYgeFtdLCAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICovCitAKiAgICBXb3JkMTYgaFtdLCAgICAgICAgLyogKGkpICAgICA6IGltcHVsc2UgcmVzcG9uc2UgICAgICAgICAgICAgICAgICAgICAgICovCitAKiAgICBXb3JkMTYgeVtdLCAgICAgICAgLyogKG8pICAgICA6IG91dHB1dCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICovCitAKiAgICBXb3JkMTYgTCAgICAgICAgICAgLyogKGkpICAgICA6IHZlY3RvciBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCitAKikKK0AgIHIwIC0tLSB4W10KK0AgIHIxIC0tLSBoW10KK0AgIHIyIC0tLSB5W10KK0AgIHIzIC0tLSBMCisKKwkuc2VjdGlvbiAgLnRleHQKKyAgICAgICAgLmdsb2JhbCAgIENvbnZvbHZlX2FzbSAKKworQ29udm9sdmVfYXNtOgorCisgICAgICAgIFNUTUZEICAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE0fSAgCisgICAgICAgIE1PViAgICAgICAgICAgIHIzLCAgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIG4KKwlNT1YgICAgICAgICAgICByMTEsICMweDgwMDAKKyAgICAgICAgCitMT09QOiAKKyAgICAgICAgQUREICAgICAgICAgICAgcjQsIHIxLCByMywgTFNMICMxICAgICAgICAgICAgICAgIEAgdG1wSCBhZGRyZXNzCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMywgIzEgICAgICAgICAgICAgICAgICAgICAgICBAIGkgPSBuICsgMQorICAgICAgICBNT1YgICAgICAgICAgICByNiwgcjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCB0bXBYID0geAorICAgICAgICBMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKyAgICAgICAgU1VCICAgICAgICAgICAgcjUsIHI1LCAjMQorICAgICAgICBNVUwgICAgICAgICAgICByOCwgIHI5LCByMTAgCisKK0xPT1AxOiAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIENNUCAgICAgICAgICAgIHI1LCAjMAorICAgICAgICBCTEUgICAgICAgICAgICBMMQorCUxEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTAsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxNCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlNTEEgICAgICAgICAgICByOCwgcjksIHIxMCwgcjgKKwlNTEEgICAgICAgICAgICByOCwgcjEyLCByMTQsIHI4CisJTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlMRFJTSCAgICAgICAgICByMTIsIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjE0LCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCU1MQSAgICAgICAgICAgIHI4LCByOSwgcjEwLCByOAorICAgICAgICBTVUJTICAgICAgICAgICByNSwgcjUsICM0IAorCU1MQSAgICAgICAgICAgIHI4LCByMTIsIHIxNCwgcjgKKyAgICAKKyAgICAgICAgQiAgICAgICAgICAgICAgTE9PUDEgIAorCitMMTogICAgICAgICAgICAgICAgICAKKworICAgICAgICBBREQgICAgICAgICAgICByNSwgcjExLCByOCwgTFNMICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI1LCByNSwgTFNSICMxNiAgICAgICAgICAgICAgICAgICBAZXh0cmFjdF9oKHMpCisgICAgICAgIEFERCAgICAgICAgICAgIHIzLCByMywgIzEKKyAgICAgICAgU1RSSCAgICAgICAgICAgcjUsIFtyMl0sICMyICAgICAgICAgICAgICAgICAgICAgIEB5W25dCisKKworICAgICAgICBBREQgICAgICAgICAgICByNCwgcjEsIHIzLCBMU0wgIzEgICAgICAgICAgICAgICAgQHRtcEggYWRkcmVzcworICAgICAgICBBREQgICAgICAgICAgICByNSwgcjMsICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI2LCByMAorICAgICAgICBMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMiwgW3I2XSwgIzIKKyAgICAgICAgTERSU0ggICAgICAgICAgcjE0LCBbcjRdLCAjLTIKKworICAgICAgICBNVUwgICAgICAgICAgICByOCwgcjksIHIxMAorICAgICAgICBTVUIgICAgICAgICAgICByNSwgcjUsICMyCisgICAgICAgIE1MQSAgICAgICAgICAgIHI4LCByMTIsIHIxNCwgcjgKKyAgICAgICAgCitMT09QMjoKKyAgICAgICAgQ01QICAgICAgICAgICAgcjUsICMwCisgICAgICAgIEJMRSAgICAgICAgICAgIEwyCisJTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlMRFJTSCAgICAgICAgICByMTIsIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjE0LCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCU1MQSAgICAgICAgICAgIHI4LCByOSwgcjEwLCByOAorCU1MQSAgICAgICAgICAgIHI4LCByMTIsIHIxNCwgcjgKKwlMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCUxEUlNIICAgICAgICAgIHIxMiwgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTQsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTUxBICAgICAgICAgICAgcjgsIHI5LCByMTAsIHI4CisgICAgICAgIFNVQlMgICAgICAgICAgIHI1LCByNSwgIzQgCisJTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOAorICAgICAgICBCICAgICAgICAgICAgICBMT09QMgorCitMMjoKKyAgICAgICAgQUREICAgICAgICAgICAgcjgsIHIxMSwgcjgsIExTTCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByOCwgcjgsIExTUiAjMTYgICAgICAgICAgICAgICAgICAgQGV4dHJhY3RfaChzKQorICAgICAgICBBREQgICAgICAgICAgICByMywgcjMsICMxICAKKyAgICAgICAgU1RSSCAgICAgICAgICAgcjgsIFtyMl0sICMyICAgICAgICAgICAgICAgICAgICAgIEB5W25dCisKKyAgICAgICAgQUREICAgICAgICAgICAgcjQsIHIxLCByMywgTFNMICMxCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMywgIzEKKyAgICAgICAgTU9WICAgICAgICAgICAgcjYsIHIwCisgICAgICAgIExEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMgorICAgICAgICBMRFJTSCAgICAgICAgICByMTQsIFtyNF0sICMtMgorICAgICAgICBNVUwgICAgICAgICAgICByOCwgcjksIHIxMAorICAgICAgICBMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yCisgICAgICAgIE1MQSAgICAgICAgICAgIHI4LCByMTIsIHIxNCwgcjggCisgICAgICAgIFNVQiAgICAgICAgICAgIHI1LCByNSwgIzMKKyAgICAgICAgTUxBICAgICAgICAgICAgcjgsIHI5LCByMTAsIHI4CisKK0xPT1AzOgorICAgICAgICBDTVAgICAgICAgICAgICByNSwgIzAKKyAgICAgICAgQkxFICAgICAgICAgICAgTDMKKwlMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCUxEUlNIICAgICAgICAgIHIxMiwgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTQsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTUxBICAgICAgICAgICAgcjgsIHI5LCByMTAsIHI4CisJTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOAorCUxEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTAsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxNCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlNTEEgICAgICAgICAgICByOCwgcjksIHIxMCwgcjgKKyAgICAgICAgU1VCUyAgICAgICAgICAgcjUsIHI1LCAjNCAKKwlNTEEgICAgICAgICAgICByOCwgcjEyLCByMTQsIHI4IAorICAgICAgICBCICAgICAgICAgICAgICBMT09QMyAgIAorCitMMzoKKyAgICAgICAgQUREICAgICAgICAgICAgcjgsIHIxMSwgcjgsIExTTCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByOCwgcjgsIExTUiAjMTYgICAgICAgICAgICAgICAgICAgQGV4dHJhY3RfaChzKQorICAgICAgICBBREQgICAgICAgICAgICByMywgcjMsICMxCisgICAgICAgIFNUUkggICAgICAgICAgIHI4LCBbcjJdLCAjMiAgICAgICAgICAgICAgICAgICAgICBAeVtuXQorCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMywgIzEgICAgICAgICAgICAgICAgICAgICAgICBAIGkgPSBuICsgMQorICAgICAgICBBREQgICAgICAgICAgICByNCwgcjEsIHIzLCBMU0wgIzEgICAgICAgICAgICAgICAgQCB0bXBIIGFkZHJlc3MKKyAgICAgICAgTU9WICAgICAgICAgICAgcjYsIHIwCisgICAgICAgIE1PViAgICAgICAgICAgIHI4LCAjMAorCitMT09QNDogICAgICAgICAgICAgICAgICAgIAorICAgICAgICBDTVAgICAgICAgICAgICByNSwgIzAKKyAgICAgICAgQkxFICAgICAgICAgICAgTDQKKwlMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCUxEUlNIICAgICAgICAgIHIxMiwgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTQsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTUxBICAgICAgICAgICAgcjgsIHI5LCByMTAsIHI4CisJTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOAorCUxEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTAsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxNCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlNTEEgICAgICAgICAgICByOCwgcjksIHIxMCwgcjgKKyAgICAgICAgU1VCUyAgICAgICAgICAgcjUsIHI1LCAjNCAKKwlNTEEgICAgICAgICAgICByOCwgcjEyLCByMTQsIHI4ICAgICAgICAKKyAgICAgICAgQiAgICAgICAgICAgICAgTE9PUDQgICAgCitMNDogICAgICAgICAgICAgICAgICAKKyAgICAgICAgQUREICAgICAgICAgICAgcjUsIHIxMSwgcjgsIExTTCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByNSwgcjUsIExTUiAjMTYgICAgICAgICAgICAgICAgICAgQGV4dHJhY3RfaChzKQorICAgICAgICBBREQgICAgICAgICAgICByMywgcjMsICMxCisgICAgICAgIFNUUkggICAgICAgICAgIHI1LCBbcjJdLCAjMiAgICAgICAgICAgICAgICAgICAgICBAeVtuXQorICAgICAgICAKKyAgICAgICAgQ01QICAgICAgICAgICAgcjMsICM2NAorICAgICAgICBCTFQgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAgICAgCitDb252b2x2ZV9hc21fZW5kOiAKKyAKKyAgICAgICAgTERNRkQgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNX0KKyAgICAKKyAgICAgICAgQEVOREZVTkMKKyAgICAgICAgLkVORAorCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9jb3JfaF92ZWNfb3B0LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvY29yX2hfdmVjX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MWI5ODQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvY29yX2hfdmVjX29wdC5zCkBAIC0wLDAgKzEsMTUxIEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0BzdGF0aWMgdm9pZCBjb3JfaF92ZWNfMDEyKA0KK0AJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCBpbXB1bHNlIHJlc3BvbnNlICAgICAgICAgICAgICAgICAqLw0KK0AJCVdvcmQxNiB2ZWNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCB2ZWN0b3IgKC84KSB0byBjb3JyZWxhdGUgd2l0aCBoW10gKi8NCitACQlXb3JkMTYgdHJhY2ssICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB0cmFjayB0byB1c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCitACQlXb3JkMTYgc2lnbltdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzaWduIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCitACQlXb3JkMTYgcnJpeGl4W11bTkJfUE9TXSwgICAgICAgICAgICAgIC8qIChpKSBjb3JyZWxhdGlvbiBvZiBoW3hdIHdpdGggaFt4XSAgICAgICovDQorQAkJV29yZDE2IGNvcl8xW10sICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorQAkJV29yZDE2IGNvcl8yW10gICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorQCkNCitAcjAgLS0tLSBoW10NCitAcjEgLS0tLSB2ZWNbXQ0KK0ByMiAtLS0tIHRyYWNrDQorQHIzIC0tLS0gc2lnbltdDQorQHI0IC0tLS0gcnJpeGl4W11bTkJfUE9TXQ0KK0ByNSAtLS0tIGNvcl8xW10NCitAcjYgLS0tLSBjb3JfMltdDQorDQorDQorICAgICAgICAgIC5zZWN0aW9uICAudGV4dA0KKwkgIC5nbG9iYWwgIGNvcl9oX3ZlY18wMTJfYXNtDQorDQorY29yX2hfdmVjXzAxMl9hc206DQorDQorICAgICAgICAgU1RNRkQgICAgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNH0NCisJIExEUiAgICAgICAgICAgcjQsIFtyMTMsICM0MF0gICAgICAgICAgICAgICAgICAgIEBsb2FkIHJyaXhpeFtdW05CX1BPU10NCisJIEFERCAgICAgICAgICAgcjcsIHI0LCByMiwgTFNMICM1ICAgICAgICAgICAgICAgIEByNyAtLS0gcDAgPSBycml4aXhbdHJhY2tdDQorICAgICAgICAgTU9WICAgICAgICAgICByNCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGk9MA0KKw0KKwkgQHIwIC0tLSBoW10sIHIxIC0tLSB2ZWNbXSwgIHIyIC0tLSBwb3MNCisJIEByMyAtLS0gc2lnbltdLCByNCAtLS0gaSwgcjcgLS0tIHAwDQorTE9PUGk6DQorICAgICAgICAgTU9WICAgICAgICAgICByNSwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQExfc3VtMSA9IDANCisgICAgICAgICBNT1YgICAgICAgICAgIHI2LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBATF9zdW0yID0gMA0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjksIHIxLCByMiwgTFNMICMxICAgICAgICAgICAgICAgIEBwMiA9ICZ2ZWNbcG9zXQ0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjEwLCByMCAgICAgICAgICAgICAgICAgICAgICAgICAgIEBwMSA9IGgNCisgICAgICAgICBSU0IgICAgICAgICAgIHIxMSwgcjIsICM2MiAgICAgICAgICAgICAgICAgICAgICBAaj02Mi1wb3MNCisNCitMT09QajE6DQorCSBMRFJTSCAgICAgICAgIHIxMiwgW3IxMF0sICMyICANCisJIExEUlNIICAgICAgICAgcjgsICBbcjldLCAjMg0KKwkgTERSU0ggICAgICAgICByMTQsIFtyOV0NCisJIFNVQlMgICAgICAgICAgcjExLCByMTEsICMxDQorICAgICAgICAgTUxBICAgICAgICAgICByNSwgcjEyLCByOCwgcjUNCisgICAgICAgICBNTEEgICAgICAgICAgIHI2LCByMTIsIHIxNCwgcjYJIA0KKwkgQkdFICAgICAgICAgICBMT09QajENCisNCisJIExEUlNIICAgICAgICAgcjEyLCBbcjEwXSwgIzIgICAgICAgICAgICAgICAgICAgICBAKnAxKysNCisJIE1PViAgICAgICAgICAgcjYsIHI2LCBMU0wgIzIgICAgICAgICAgICAgICAgICAgICBATF9zdW0yID0gKExfc3VtMiA8PCAyKQ0KKyAgICAgICAgIE1MQSAgICAgICAgICAgcjUsIHIxMiwgcjE0LCByNQ0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjE0LCAjMHg4MDAwDQorICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjUsIExTTCAjMiAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTEgPSAoTF9zdW0xIDw8IDIpDQorICAgICAgICAgQUREICAgICAgICAgICByMTAsIHI2LCByMTQgICAgICAgICANCisgICAgICAgICBBREQgICAgICAgICAgIHI5LCByNSwgcjE0DQorICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjksIEFTUiAjMTYNCisgICAgICAgICBNT1YgICAgICAgICAgIHI2LCByMTAsIEFTUiAjMTYNCisgICAgICAgICBBREQgICAgICAgICAgIHI5LCByMywgcjIsIExTTCAjMSAgICAgICAgICAgICAgICAgQGFkZHJlc3Mgb2Ygc2lnbltwb3NdDQorICAgICAgICAgQUREICAgICAgICAgICByOCwgcjcsICMzMg0KKyAgICAgICAgIExEUlNIICAgICAgICAgcjEwLCBbcjldLCAjMiAgICAgICAgICAgICAgICAgCSAgQHNpZ25bcG9zXQ0KKwkgTERSU0ggICAgICAgICByMTEsIFtyOV0gICAgICAgICAgICAgICAgICAgICAgICAgIEBzaWduW3BvcyArIDFdDQorCSBNVUwgICAgICAgICAgIHIxMiwgcjUsIHIxMA0KKwkgTVVMICAgICAgICAgICByMTQsIHI2LCByMTENCisJIE1PViAgICAgICAgICAgcjUsIHIxMiwgQVNSICMxNQ0KKwkgTU9WICAgICAgICAgICByNiwgcjE0LCBBU1IgIzE1DQorCSBMRFIgICAgICAgICAgIHI5LCAgW3IxMywgIzQ0XSAgICAgICAgICAgICAgICAgICANCisJIExEUiAgICAgICAgICAgcjEyLCBbcjEzLCAjNDhdDQorICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyN10sICMyICAgICAgICAgICAgICAgICAgICAgIEAqcDArKw0KKwkgTERSU0ggICAgICAgICByMTEsIFtyOF0gICAgICAgICAgICAgICAgICAgICAgICAgIEAqcDMrKw0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjksIHI5LCByNCwgTFNMICMxDQorCSBBREQgICAgICAgICAgIHIxMiwgcjEyLCByNCwgTFNMICMxDQorCSBBREQgICAgICAgICAgIHI1LCByNSwgcjEwDQorCSBBREQgICAgICAgICAgIHI2LCByNiwgcjExDQorCSBTVFJIICAgICAgICAgIHI1LCBbcjldDQorCSBTVFJIICAgICAgICAgIHI2LCBbcjEyXQ0KKw0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjIsIHIyLCAjNA0KKyANCisgICAgICAgICBNT1YgICAgICAgICAgIHI1LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBATF9zdW0xID0gMA0KKwkgTU9WICAgICAgICAgICByNiwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQExfc3VtMiA9IDANCisJIEFERCAgICAgICAgICAgcjksIHIxLCByMiwgTFNMICMxICAgICAgICAgICAgICAgIEBwMiA9ICZ2ZWNbcG9zXQ0KKwkgTU9WICAgICAgICAgICByMTAsIHIwICAgICAgICAgICAgICAgICAgICAgICAgICAgQHAxID0gaA0KKwkgUlNCICAgICAgICAgICByMTEsIHIyLCAjNjIgICAgICAgICAgICAgICAgICAgICAgQGo9NjItcG9zDQorCSBBREQgICAgICAgICAgIHI0LCByNCwgIzEgICAgICAgICAgICAgICAgICAgICAgICBAaSsrDQorDQorTE9PUGoyOg0KKwkgTERSU0ggICAgICAgICByMTIsIFtyMTBdLCAjMiAgDQorCSBMRFJTSCAgICAgICAgIHI4LCAgW3I5XSwgIzINCisJIExEUlNIICAgICAgICAgcjE0LCBbcjldDQorCSBTVUJTICAgICAgICAgIHIxMSwgcjExLCAjMQ0KKyAgICAgICAgIE1MQSAgICAgICAgICAgcjUsIHIxMiwgcjgsIHI1DQorICAgICAgICAgTUxBICAgICAgICAgICByNiwgcjEyLCByMTQsIHI2CSANCisJIEJHRSAgICAgICAgICAgTE9PUGoyDQorDQorCSBMRFJTSCAgICAgICAgIHIxMiwgW3IxMF0sICMyICAgICAgICAgICAgICAgICAgICAgQCpwMSsrDQorCSBNT1YgICAgICAgICAgIHI2LCByNiwgTFNMICMyICAgICAgICAgICAgICAgICAgICAgQExfc3VtMiA9IChMX3N1bTIgPDwgMikNCisgICAgICAgICBNTEEgICAgICAgICAgIHI1LCByMTIsIHIxNCwgcjUNCisgICAgICAgICBNT1YgICAgICAgICAgIHIxNCwgIzB4ODAwMA0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjUsIHI1LCBMU0wgIzIgICAgICAgICAgICAgICAgICAgICBATF9zdW0xID0gKExfc3VtMSA8PCAyKQ0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjEwLCByNiwgcjE0ICAgICAgICANCisgICAgICAgICBBREQgICAgICAgICAgIHI5LCByNSwgcjE0DQorDQorICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjksIEFTUiAjMTYNCisgICAgICAgICBNT1YgICAgICAgICAgIHI2LCByMTAsIEFTUiAjMTYNCisgICAgICAgICBBREQgICAgICAgICAgIHI5LCByMywgcjIsIExTTCAjMSAgICAgICAgICAgICAgICAgQGFkZHJlc3Mgb2Ygc2lnbltwb3NdDQorICAgICAgICAgQUREICAgICAgICAgICByOCwgcjcsICMzMg0KKyAgICAgICAgIExEUlNIICAgICAgICAgcjEwLCBbcjldLCAjMiAgICAgICAgICAgICAgICAgCSAgQHNpZ25bcG9zXQ0KKwkgTERSU0ggICAgICAgICByMTEsIFtyOV0gICAgICAgICAgICAgICAgICAgICAgICAgIEBzaWduW3BvcyArIDFdDQorCSBNVUwgICAgICAgICAgIHIxMiwgcjUsIHIxMA0KKwkgTVVMICAgICAgICAgICByMTQsIHI2LCByMTENCisJIE1PViAgICAgICAgICAgcjUsIHIxMiwgQVNSICMxNQ0KKwkgTU9WICAgICAgICAgICByNiwgcjE0LCBBU1IgIzE1DQorCSBMRFIgICAgICAgICAgIHI5LCAgW3IxMywgIzQ0XSAgICAgICAgICAgICAgICAgICANCisJIExEUiAgICAgICAgICAgcjEyLCBbcjEzLCAjNDhdDQorICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyN10sICMyICAgICAgICAgICAgICAgICAgICAgIEAqcDArKw0KKwkgTERSU0ggICAgICAgICByMTEsIFtyOF0gICAgICAgICAgICAgICAgICAgICAgICAgIEAqcDMrKw0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjksIHI5LCByNCwgTFNMICMxDQorCSBBREQgICAgICAgICAgIHIxMiwgcjEyLCByNCwgTFNMICMxDQorCSBBREQgICAgICAgICAgIHI1LCByNSwgcjEwDQorCSBBREQgICAgICAgICAgIHI2LCByNiwgcjExDQorCSBTVFJIICAgICAgICAgIHI1LCBbcjldDQorCSBTVFJIICAgICAgICAgIHI2LCBbcjEyXQ0KKwkgQUREICAgICAgICAgICByNCwgcjQsICMxICAgICAgICAgICAgICAgICAgICAgICAgIEBpKzENCisJIEFERCAgICAgICAgICAgcjIsIHIyLCAjNCAgICAgICAgICAgICAgICAgICAgICAgICBAcG9zICs9IFNURVANCisJIENNUCAgICAgICAgICAgcjQsICMxNg0KKwkgDQorCSBCTFQgICAgICAgICAgIExPT1BpDQorICAgICAgICAgDQordGhlX2VuZDoNCisgICAgICAgICBMRE1GRCAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fQ0KKyAgICAgIA0KKyAgICAgICAgIEBFTkRGVU5DDQorICAgICAgICAgLkVORAkgDQorICAgICAgICANCisJDQorCSAgDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3ByZWRfbHQ0XzFfb3B0LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvcHJlZF9sdDRfMV9vcHQucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWRkOGYwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3ByZWRfbHQ0XzFfb3B0LnMKQEAgLTAsMCArMSw0NjAgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQA0KK0B2b2lkIFByZWRfbHQ0KA0KK0AJCSAgV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IGV4Y2l0YXRpb24gYnVmZmVyICovDQorQAkJICBXb3JkMTYgVDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaW50ZWdlciBwaXRjaCBsYWcgKi8NCitACQkgIFdvcmQxNiBmcmFjLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBmcmFjdGlvbiBvZiBsYWcgICAqLw0KK0AJCSAgV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHN1YmZyYW1lIHNpemUgICAgICovDQorQAkgICAgICApDQorDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgICAgICAgQVJNIFJlZ2lzdGVyDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgcjAgIC0tLSAgZXhjW10NCitAIHIxICAtLS0gIFQwDQorQCByMiAgLS0tICBmcmFjDQorQCByMyAgLS0tICBMX3N1YmZyDQorDQorICAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorCSAuZ2xvYmFsICAgcHJlZF9sdDRfYXNtDQorCSAuZXh0ZXJuICAgaW50ZXI0XzINCisNCitwcmVkX2x0NF9hc206DQorDQorICAgICAgICAgU1RNRkQgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE0fSANCisgICAgICAgICBSU0IgICAgICAgcjQsIHIxLCAjMCAgICAgICAgICAgICAgICAgICAgICAgICBALVQwDQorICAgICAgICAgUlNCICAgICAgIHIyLCByMiwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgQGZyYWMgPSAtZnJhYw0KKyAgICAgICAgIEFERCAgICAgICByNSwgcjAsIHI0LCBMU0wgIzEgICAgICAgICAgICAgICAgIEB4ID0gZXhjIC0gVDANCisgICAgICAgICBDTVAgICAgICAgcjIsICMwDQorICAgICAgICAgQURETFQgICAgIHIyLCByMiwgIzQgICAgICAgICAgICAgICAgICAgICAgICAgQGZyYWMgKz0gVVBfU0FNUA0KKyAgICAgICAgIFNVQkxUICAgICByNSwgcjUsICMyICAgICAgICAgICAgICAgICAgICAgICAgIEB4LS0NCisgICAgICAgICBTVUIgICAgICAgcjUsIHI1LCAjMzAgICAgICAgICAgICAgICAgICAgICAgICBAeCAtPSAxNQ0KKyAgICAgICAgIFJTQiAgICAgICByNCwgcjIsICMzICAgICAgICAgICAgICAgICAgICAgICAgIEBrID0gMyAtIGZyYWMNCisgICAgICAgICBMRFIgICAgICAgcjYsIFRhYmxlDQorCSBNT1YgICAgICAgcjgsIHI0LCBMU0wgIzYgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIEBNT1YgICAgICAgcjcsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaiA9IDANCisgICAgICAgICBBREQgICAgICAgcjgsIHI2LCByOCAgICAgICAgICAgICAgICAgICAgICAgICBAcHRyMiA9ICYoaW50ZXI0XzJba11bMF0pDQorDQorCSBNT1YgICAgICAgcjEsIHI1DQorCSBNT1YgICAgICAgcjUsICMweDgwMDANCisJIE1PViAgICAgICByMTQsICMyMQ0KK0AgdXNlZCByZWdpc3Rlcg0KKyAgICAgICAgIEByMCAtLS0gZXhjW10gIHIxIC0tLSB4ICByNyAtLS0gaiAgcjggLS0tIHB0cjIgIHI1IC0tLSAweDgwMDANCitUSFJFRV9MT09QOg0KKw0KKyAgICAgICAgIEBNT1YgICAgICAgcjEsIHI1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcHRyMSA9IHgNCisJIE1PViAgICAgICByMiwgcjggICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBwdHIgPSBwdHIyDQorICAgICAgICAgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMF0sIGhbMV0NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzBdDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxXQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMl0NCisNCisJIFNNVUxCQiAgICByMTAsIHI0LCByMyAgICAgICAgICAgICAgICAgICAgICAgIEB4WzBdICogaFswXSAgICAgICAgICAgICAgICAgIA0KKwkgU01VTEJCICAgIHIxMSwgcjYsIHIzICAgICAgICAgICAgICAgICAgICAgICAgQHhbMV0gKiBoWzBdDQorCSBTTVVMQkIgICAgcjEyLCByOSwgcjMgICAgICAgICAgICAgICAgICAgICAgICBAeFsyXSAqIGhbMF0NCisNCisgICAgICAgICBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFszXQ0KKwkgU01MQUJUICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMV0gKiBoWzFdDQorICAgICAgICAgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMl0gKiBoWzFdDQorCSBTTUxBQlQgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFszXSAqIGhbMV0NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzJdLCBoWzNdDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs0XQ0KKwkgU01MQUJCICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMl0gKiBoWzJdDQorICAgICAgICAgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbM10gKiBoWzJdDQorICAgICAgICAgU01MQUJCICAgIHIxMiwgcjYsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbNF0gKiBoWzJdDQorDQorICAgICAgICAgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbNV0NCisgICAgICAgICBTTUxBQlQgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFszXSAqIGhbM10NCisgICAgICAgICBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs0XSAqIGhbM10NCisgICAgICAgICBTTUxBQlQgICAgcjEyLCByOSwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFs1XSAqIGhbM10NCisNCisgICAgICAgICBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFs0XSwgaFs1XQ0KKyAgICAgICAgIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzZdDQorICAgICAgICAgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbNF0gKiBoWzRdDQorICAgICAgICAgU01MQUJCICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbNV0gKiBoWzRdDQorICAgICAgICAgU01MQUJCICAgIHIxMiwgcjQsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbNl0gKiBoWzRdDQorDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs3XQ0KKwkgU01MQUJUICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbNV0gKiBoWzVdDQorCSBTTUxBQlQgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs2XSAqIGhbNV0NCisJIFNNTEFCVCAgICByMTIsIHI2LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzddICogaFs1XQ0KKw0KKyAgICAgICAgIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzZdLCBoWzddDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs4XQ0KKwkgU01MQUJCICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbNl0gKiBoWzZdDQorCSBTTUxBQkIgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs3XSAqIGhbNl0NCisJIFNNTEFCQiAgICByMTIsIHI5LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzhdICogaFs2XQ0KKw0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbOV0NCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzddICogaFs3XQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbOF0gKiBoWzddDQorCSBTTUxBQlQgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFs5XSAqIGhbN10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzhdLCBoWzldDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxMF0NCisJIFNNTEFCQiAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzhdICogaFs4XQ0KKwkgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbOV0gKiBoWzhdDQorCSBTTUxBQkIgICAgcjEyLCByNiwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsxMF0gKiBoWzhdDQorDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxMV0NCisJIFNNTEFCVCAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzldICogaFs5XQ0KKwkgU01MQUJUICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTBdICogaFs5XQ0KKwkgU01MQUJUICAgIHIxMiwgcjksIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMTFdICogaFs5XQ0KKw0KKyAgICAgICAgIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzEwXSwgaFsxMV0NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzEyXQ0KKyAgICAgICAgIFNNTEFCQiAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzEwXSAqIGhbMTBdDQorCSBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxMV0gKiBoWzEwXQ0KKwkgU01MQUJCICAgIHIxMiwgcjQsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMTJdICogaFsxMF0NCisNCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzEzXQ0KKwkgU01MQUJUICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTFdICogaFsxMV0NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzEyXSAqIGhbMTFdDQorCSBTTUxBQlQgICAgcjEyLCByNiwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsxM10gKiBoWzExXQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMTJdLCBoWzEzXQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTRdDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxMl0gKiBoWzEyXQ0KKwkgU01MQUJCICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTNdICogaFsxMl0NCisJIFNNTEFCQiAgICByMTIsIHI5LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzE0XSAqIGhbMTJdDQorDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxNV0NCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzEzXSAqIGhbMTNdDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxNF0gKiBoWzEzXQ0KKwkgU01MQUJUICAgIHIxMiwgcjQsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMTVdICogaFsxM10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzE0XSwgaFsxNV0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzE2XQ0KKwkgU01MQUJCICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTRdICogaFsxNF0NCisJIFNNTEFCQiAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzE1XSAqIGhbMTRdDQorCSBTTUxBQkIgICAgcjEyLCByNiwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsxNl0gKiBoWzE0XQ0KKw0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTddDQorICAgICAgICAgU01MQUJUICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTVdICogaFsxNV0NCisJIFNNTEFCVCAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzE2XSAqIGhbMTVdDQorCSBTTUxBQlQgICAgcjEyLCByOSwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsxN10gKiBoWzE1XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMTZdLCBoWzE3XQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMThdDQorCSBTTUxBQkIgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxNl0gKiBoWzE2XQ0KKwkgU01MQUJCICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTddICogaFsxNl0NCisJIFNNTEFCQiAgICByMTIsIHI0LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzE4XSAqIGhbMTZdDQorDQorICAgICAgICAgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTldDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxN10gKiBoWzE3XQ0KKwkgU01MQUJUICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMThdICogaFsxN10NCisJIFNNTEFCVCAgICByMTIsIHI2LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzE5XSAqIGhbMTddDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsxOF0sIGhbMTldDQorICAgICAgICAgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjBdDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxOF0gKiBoWzE4XQ0KKwkgU01MQUJCICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTldICogaFsxOF0NCisJIFNNTEFCQiAgICByMTIsIHI5LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzIwXSAqIGhbMThdDQorDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyMV0NCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzE5XSAqIGhbMTldDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyMF0gKiBoWzE5XQ0KKwkgU01MQUJUICAgIHIxMiwgcjQsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMjFdICogaFsxOV0NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzIwXSwgaFsyMV0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzIyXQ0KKwkgU01MQUJCICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjBdICogaFsyMF0NCisJIFNNTEFCQiAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzIxXSAqIGhbMjBdDQorCSBTTUxBQkIgICAgcjEyLCByNiwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsyMl0gKiBoWzIwXQ0KKw0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjNdDQorCSBTTUxBQlQgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyMV0gKiBoWzIxXQ0KKwkgU01MQUJUICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjJdICogaFsyMV0NCisJIFNNTEFCVCAgICByMTIsIHI5LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzIzXSAqIGhbMjFdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsyMl0sIGhbMjNdDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyNF0NCisJIFNNTEFCQiAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzIyXSAqIGhbMjJdDQorCSBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyM10gKiBoWzIyXQ0KKwkgU01MQUJCICAgIHIxMiwgcjQsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMjRdICogaFsyMl0NCisNCisgICAgICAgICBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyNV0NCisJIFNNTEFCVCAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzIzXSAqIGhbMjNdDQorCSBTTUxBQlQgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyNF0gKiBoWzIzXQ0KKwkgU01MQUJUICAgIHIxMiwgcjYsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMjVdICogaFsyM10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzI0XSwgaFsyNV0NCisgICAgICAgICBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyNl0NCisJIFNNTEFCQiAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzI0XSAqIGhbMjRdDQorCSBTTUxBQkIgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyNV0gKiBoWzI0XQ0KKwkgU01MQUJCICAgIHIxMiwgcjksIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMjZdICogaFsyNF0NCisNCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI3XQ0KKwkgU01MQUJUICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjVdICogaFsyNV0NCisJIFNNTEFCVCAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI2XSAqIGhbMjVdDQorCSBTTUxBQlQgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsyN10gKiBoWzI1XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMjZdLCBoWzI3XQ0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjhdDQorCSBTTUxBQkIgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyNl0gKiBoWzI2XQ0KKwkgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjddICogaFsyNl0NCisJIFNNTEFCQiAgICByMTIsIHI2LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzI4XSAqIGhbMjZdDQorDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyOV0NCisJIFNNTEFCVCAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzI3XSAqIGhbMjddDQorCSBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyOF0gKiBoWzI3XQ0KKwkgU01MQUJUICAgIHIxMiwgcjksIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMjldICogaFsyN10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzI4XSwgaFsyOV0NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzMwXQ0KKwkgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjhdICogaFsyOF0NCisJIFNNTEFCQiAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI5XSAqIGhbMjhdDQorCSBTTUxBQkIgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFszMF0gKiBoWzI4XQ0KKw0KKyAgICAgICAgIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzMxXQ0KKwkgU01MQUJUICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjldICogaFsyOV0NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzMwXSAqIGhbMjldDQorCSBTTUxBQlQgICAgcjEyLCByNiwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFszMV0gKiBoWzI5XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMzBdLCBoWzMxXQ0KKyAgICAgICAgIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzMyXQ0KKwkgU01MQUJCICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMzBdICogaFszMF0NCisJIFNNTEFCQiAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzMxXSAqIGhbMzBdDQorCSBTTUxBQkIgICAgcjEyLCByOSwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFszMl0gKiBoWzMwXQ0KKw0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjLTYwICAgICAgICAgICAgICAgICAgICAgQHhbMzNdDQorCSBTTUxBQlQgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFszMV0gKiBoWzMxXQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMzJdICogaFszMV0NCisJIFNNTEFCVCAgICByMTIsIHI0LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzMzXSAqIGhbMzFdDQorDQorCSBAU1NBVCAgICAgIHIxMCwgIzMyLCByMTAsIExTTCAjMg0KKwkgQFNTQVQgICAgICByMTEsICMzMiwgcjExLCBMU0wgIzINCisJIEBTU0FUICAgICAgcjEyLCAjMzIsIHIxMiwgTFNMICMyDQorDQorCSBNT1YgICAgICAgcjEwLCByMTAsIExTTCAjMQ0KKwkgTU9WICAgICAgIHIxMSwgcjExLCBMU0wgIzENCisJIE1PViAgICAgICByMTIsIHIxMiwgTFNMICMxDQorDQorCSBRQUREICAgICAgcjEwLCByMTAsIHIxMA0KKwkgUUFERCAgICAgIHIxMSwgcjExLCByMTENCisJIFFBREQgICAgICByMTIsIHIxMiwgcjEyDQorDQorCSBRQUREICAgICAgcjEwLCByMTAsIHI1DQorCSBRQUREICAgICAgcjExLCByMTEsIHI1DQorCSBRQUREICAgICAgcjEyLCByMTIsIHI1DQorDQorCSBTVUJTICAgICAgcjE0LCByMTQsICMxDQorDQorCSBNT1YgICAgICAgcjEwLCByMTAsIEFTUiAjMTYNCisJIE1PViAgICAgICByMTEsIHIxMSwgQVNSICMxNg0KKwkgTU9WICAgICAgIHIxMiwgcjEyLCBBU1IgIzE2DQorDQorCSBTVFJIICAgICAgcjEwLCBbcjBdLCAjMg0KKwkgU1RSSCAgICAgIHIxMSwgW3IwXSwgIzINCisJIFNUUkggICAgICByMTIsIFtyMF0sICMyDQorCSBCTkUgICAgICAgVEhSRUVfTE9PUA0KKw0KKwkgTU9WICAgICAgIHIyLCByOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHB0ciA9IHB0cjINCisNCitMYXN0MkxPT1A6DQorDQorICAgICAgICAgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMF0sIGhbMV0NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzBdDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxXQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMl0NCisNCisJIFNNVUxCQiAgICByMTAsIHI0LCByMyAgICAgICAgICAgICAgICAgICAgICAgIEB4WzBdICogaFswXQ0KKwkgU01VTEJCICAgIHIxMSwgcjYsIHIzICAgICAgICAgICAgICAgICAgICAgICAgQHhbMV0gKiBoWzBdDQorDQorCSBTTUxBQlQgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxXSAqIGhbMV0NCisJIFNNTEFCVCAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzJdICogaFsxXQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMl0sIGhbM10NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzNdDQorICAgICAgICAgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbNF0NCisNCisJIFNNTEFCQiAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzJdICogaFsyXQ0KKyAgICAgICAgIFNNTEFCQiAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzNdICogaFsyXQ0KKyAgICAgIA0KKwkgU01MQUJUICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbM10gKiBoWzNdDQorCSBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs0XSAqIGhbM10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzRdLCBoWzVdDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs1XQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbNl0NCisNCisJIFNNTEFCQiAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzRdICogaFs0XQ0KKwkgU01MQUJCICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbNV0gKiBoWzRdDQorDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFs1XSAqIGhbNV0NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzZdICogaFs1XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbNl0sIGhbN10NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzddDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs4XQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbNl0gKiBoWzZdDQorCSBTTUxBQkIgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs3XSAqIGhbNl0NCisNCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzddICogaFs3XQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbOF0gKiBoWzddDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFs4XSwgaFs5XQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbOV0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzEwXQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbOF0gKiBoWzhdDQorCSBTTUxBQkIgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs5XSAqIGhbOF0NCisNCisJIFNNTEFCVCAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzldICogaFs5XQ0KKwkgU01MQUJUICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTBdICogaFs5XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMTBdLCBoWzExXQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTFdDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxMl0NCisNCisJIFNNTEFCQiAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzEwXSAqIGhbMTBdDQorCSBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxMV0gKiBoWzEwXQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTFdICogaFsxMV0NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzEyXSAqIGhbMTFdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsxMl0sIGhbMTNdDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxM10NCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzE0XQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTJdICogaFsxMl0NCisJIFNNTEFCQiAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzEzXSAqIGhbMTJdDQorDQorCSBTTUxBQlQgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxM10gKiBoWzEzXQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTRdICogaFsxM10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzE0XSwgaFsxNV0NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzE1XQ0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTZdDQorDQorCSBTTUxBQkIgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxNF0gKiBoWzE0XQ0KKwkgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTVdICogaFsxNF0NCisNCisJIFNNTEFCVCAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzE1XSAqIGhbMTVdDQorCSBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxNl0gKiBoWzE1XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMTZdLCBoWzE3XQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTddDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxOF0NCisNCisJIFNNTEFCQiAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzE2XSAqIGhbMTZdDQorCSBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxN10gKiBoWzE2XQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTddICogaFsxN10NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzE4XSAqIGhbMTddDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsxOF0sIGhbMTldDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxOV0NCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzIwXQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMThdICogaFsxOF0NCisJIFNNTEFCQiAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzE5XSAqIGhbMThdDQorDQorCSBTTUxBQlQgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxOV0gKiBoWzE5XQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjBdICogaFsxOV0NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzIwXSwgaFsyMV0NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzIxXQ0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjJdDQorDQorCSBTTUxBQkIgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyMF0gKiBoWzIwXQ0KKwkgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjFdICogaFsyMF0NCisNCisJIFNNTEFCVCAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzIxXSAqIGhbMjFdDQorCSBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyMl0gKiBoWzIxXQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMjJdLCBoWzIzXQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjNdDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyNF0NCisNCisJIFNNTEFCQiAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzIyXSAqIGhbMjJdDQorCSBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyM10gKiBoWzIyXQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjNdICogaFsyM10NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI0XSAqIGhbMjNdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsyNF0sIGhbMjVdDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyNV0NCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI2XQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjRdICogaFsyNF0NCisJIFNNTEFCQiAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI1XSAqIGhbMjRdDQorDQorCSBTTUxBQlQgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyNV0gKiBoWzI1XQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjZdICogaFsyNV0NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzI2XSwgaFsyN10NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI3XQ0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjhdDQorDQorCSBTTUxBQkIgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyNl0gKiBoWzI2XQ0KKwkgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjddICogaFsyNl0NCisNCisJIFNNTEFCVCAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzI3XSAqIGhbMjddDQorCSBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyOF0gKiBoWzI3XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMjhdLCBoWzI5XQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjldDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFszMF0NCisNCisJIFNNTEFCQiAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzI4XSAqIGhbMjhdDQorCSBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyOV0gKiBoWzI4XQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjldICogaFsyOV0NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzMwXSAqIGhbMjldDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFszMF0sIGhbMzFdDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFszMV0NCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzMyXQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMzBdICogaFszMF0NCisJIFNNTEFCQiAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzMxXSAqIGhbMzBdDQorDQorCSBTTUxBQlQgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFszMV0gKiBoWzMxXQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMzJdICogaFszMV0NCisNCisJIEBTU0FUICAgICAgcjEwLCAjMzIsIHIxMCwgTFNMICMyDQorCSBAU1NBVCAgICAgIHIxMSwgIzMyLCByMTEsIExTTCAjMg0KKwkgTU9WICAgICAgIHIxMCwgcjEwLCBMU0wgIzENCisJIE1PViAgICAgICByMTEsIHIxMSwgTFNMICMxDQorDQorCSBRQUREICAgICAgcjEwLCByMTAsIHIxMA0KKwkgUUFERCAgICAgIHIxMSwgcjExLCByMTEgDQorDQorCSBRQUREICAgICAgcjEwLCByMTAsIHI1DQorCSBRQUREICAgICAgcjExLCByMTEsIHI1DQorDQorCSBNT1YgICAgICAgcjEwLCByMTAsIEFTUiAjMTYNCisJIE1PViAgICAgICByMTEsIHIxMSwgQVNSICMxNg0KKw0KKwkgU1RSSCAgICAgIHIxMCwgW3IwXSwgIzINCisJIFNUUkggICAgICByMTEsIFtyMF0sICMyDQorDQorDQorcHJlZF9sdDRfZW5kOg0KKyAgICAgICAgIExETUZEICAgICByMTMhLCB7cjQgLSByMTIsIHIxNX0NCisNCitUYWJsZToNCisgICAgICAgICAud29yZCAgICAgICBpbnRlcjRfMg0KKwkgQEVOREZVTkMNCisJIC5FTkQNCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvcmVzaWR1X2FzbV9vcHQucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9yZXNpZHVfYXNtX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MGQ5YzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvcmVzaWR1X2FzbV9vcHQucwpAQCAtMCwwICsxLDIyOCBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQHZvaWQgUmVzaWR1KA0KK0AJICAgIFdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IHByZWRpY3Rpb24gY29lZmZpY2llbnRzICovDQorQAkgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc3BlZWNoICh2YWx1ZXMgeFstbS4uLTFdIGFyZSBuZWVkZWQgKi8NCitACSAgICBXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSB4MiAgOiByZXNpZHVhbCBzaWduYWwgICAgICAgKi8NCitACSAgICBXb3JkMTYgbGcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgKi8NCitACSAgICkNCitAYVtdIC0tLSByMA0KK0B4W10gLS0tIHIxDQorQHlbXSAtLS0gcjINCitAbGcgIC0tLSByMw0KKw0KKyAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorCS5nbG9iYWwgICBSZXNpZHVfb3B0DQorDQorUmVzaWR1X29wdDoNCisNCisgICAgICAgIFNUTUZEICAgcjEzISwge3I0IC0gcjEyLCByMTR9DQorDQorICAgICAgICBMRFJIICAgIHI1LCBbcjBdLCAjMg0KKyAgICAgICAgTERSSCAgICByNiwgW3IwXSwgIzINCisgICAgICAgIE9SUiAgICAgcjUsIHI2LCByNSwgTFNMICMxNiAgICAgICAgICAgICAgICAgIEByNSAtLS0gYTAsIGExCQ0KKw0KKyAgICAgICAgTERSSCAgICByNiwgW3IwXSwgIzINCisJTERSSCAgICByNywgW3IwXSwgIzINCisJT1JSICAgICByNiwgcjcsIHI2LCBMU0wgIzE2ICAgICAgICAgICAgICAgICAgQHI2IC0tLSBhMiwgYTMNCisJDQorICAgICAgICBMRFJIICAgIHI3LCBbcjBdLCAjMg0KKwlMRFJIICAgIHI4LCBbcjBdLCAjMg0KKwlPUlIgICAgIHI3LCByOCwgcjcsIExTTCAjMTYgICAgICAgICAgICAgICAgICBAcjcgLS0tIGE0LCBhNQ0KKw0KKwlMRFJIICAgIHI4LCBbcjBdLCAjMg0KKwlMRFJIICAgIHI5LCBbcjBdLCAjMg0KKwlPUlIgICAgIHI4LCByOSwgcjgsIExTTCAjMTYgICAgICAgICAgICAgICAgICBAcjggLS0tIGE2LCBhNw0KKw0KKwlMRFJIICAgIHI5LCBbcjBdLCAjMg0KKwlMRFJIICAgIHIxMCwgW3IwXSwgIzINCisJT1JSICAgICByOSwgcjEwLCByOSwgTFNMICMxNiAgICAgICAgICAgICAgICAgQHI5IC0tLSBhOCwgYTkNCisNCisJTERSSCAgICByMTAsIFtyMF0sICMyDQorCUxEUkggICAgcjExLCBbcjBdLCAjMg0KKwlPUlIgICAgIHIxMCwgcjExLCByMTAsIExTTCAjMTYgICAgICAgICAgICAgICBAcjEwIC0tLSBhMTAsIGExMQ0KKw0KKyAgICAgICAgTERSSCAgICByMTEsIFtyMF0sICMyDQorCUxEUkggICAgcjEyLCBbcjBdLCAjMg0KKwlPUlIgICAgIHIxMSwgcjEyLCByMTEsIExTTCAjMTYgICAgICAgICAgICAgICBAcjExIC0tLSBhMTIsIGExMw0KKwkNCisJTERSSCAgICByMTIsIFtyMF0sICMyDQorCUxEUkggICAgcjQsIFtyMF0sICMyDQorCU9SUiAgICAgcjEyLCByNCwgcjEyLCBMU0wgIzE2ICAgICAgICAgICAgICAgIEByMTIgLS0tIGExNCwgYTE1DQorCQ0KKw0KKwlTVE1GRCAgIHIxMyEsIHtyOCAtIHIxMn0gICAgICAgICAgICAgICAgICAgICBAc3RvcmUgcjgtcjEyIA0KKwlMRFJIICAgIHI0LCBbcjBdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgICBAbG9hZCBhMTYNCisgICAgICAgIE1PViAgICAgcjE0LCByMywgQVNSICMyICAgICAgICAgICAgICAgICAgICAgIEBvbmUgbG9vcCBnZXQgNCBvdXRwdXRzDQorCUFERCAgICAgcjEsIHIxLCAjNA0KKwlNT1YgICAgIHIwLCByMg0KKwlPUlIgICAgIHIxNCwgcjQsIHIxNCwgTFNMICMxNiAgICAgICAgICAgICAgICBAcjE0IC0tLSBsb29wbnVtLCBhMTYNCisNCityZXNpZHVfbG9vcDoNCisNCisgICAgICAgIExEUiAgICAgcjEwLCBbcjFdLCAjLTQgICAgICAgICAgICAgICAgICAgICAgIEByMTAgIC0tLSB4WzNdLCB4WzJdDQorCUxEUiAgICAgcjIsICBbcjFdLCAjLTQgICAgICAgICAgICAgICAgICAgICAgIEByMiAgIC0tLSB4WzFdLCB4WzBdDQorDQorCVNNVUxUQiAgcjMsIHI1LCByMiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpMSgwKSAgLS0tIHIzID0geFswXSAqIGEwDQorICAgICAgICBTTVVMVFQgIHI0LCByNSwgcjIgICAgICAgICAgICAgICAgICAgICAgICAgICBAaTIoMCkgIC0tLSByNCA9IHhbMV0gKiBhMAkNCisJU01VTFRCICByMTEsIHI1LCByMTAgICAgICAgICAgICAgICAgICAgICAgICAgQGkzKDApICAtLS0gcjExID0geFsyXSAqIGEwDQorCVNNVUxUVCAgcjEyLCByNSwgcjEwICAgICAgICAgICAgICAgICAgICAgICAgIEBpNCgwKSAgLS0tIHIxMiA9IHhbM10gKiBhMA0KKw0KKyAgICAgICAgU01MQUJCICByNCwgcjUsIHIyLCByNCAgICAgICAgICAgICAgICAgICAgICAgQGkyKDEpICAtLS0gcjQgKz0geFswXSAqIGExDQorICAgICAgICBTTUxBQlQgIHIxMSwgcjUsIHIyLCByMTEgICAgICAgICAgICAgICAgICAgICBAaTMoMSkgIC0tLSByMTEgKz0geFsxXSAqIGEwDQorICAgICAgICBTTUxBQkIgIHIxMiwgcjUsIHIxMCwgcjEyICAgICAgICAgICAgICAgICAgICBAaTQoMSkgIC0tLSByMTIgKz0geFsyXSAqIGExDQorDQorCVNNTEFUQiAgcjExLCByNiwgcjIsIHIxMSAgICAgICAgICAgICAgICAgICAgIEBpMygyKSAgLS0tIHIxMSArPSB4WzBdICogYTINCisJU01MQVRUICByMTIsIHI2LCByMiwgcjEyICAgICAgICAgICAgICAgICAgICAgQGk0KDIpICAtLS0gcjEyICs9IHhbMV0gKiBhMg0KKwlTTUxBQkIgIHIxMiwgcjYsIHIyLCByMTIgICAgICAgICAgICAgICAgICAgICBAaTQoMykgIC0tLSByMTIgKz0geFswXSAqIGEzICAgICAgICAgICAgICAgICANCisJDQorCUxEUiAgICAgcjIsIFtyMV0sICMtNCAgICAgICAgICAgICAgICAgICAgICAgIEByMiAtLS0tIHhbLTFdLCB4Wy0yXQ0KKw0KKwlTTUxBQlQgIHIzLCByNSwgcjIsIHIzICAgICAgICAgICAgICAgICAgICAgICBAaTEoMSkgLS0tIHIzICs9IHhbLTFdICogYTENCisJU01MQVRUICByNCwgcjYsIHIyLCByNCAgICAgICAgICAgICAgICAgICAgICAgQGkyKDIpIC0tLSByNCArPSB4Wy0xXSAqIGEyDQorCVNNTEFCVCAgcjExLCByNiwgcjIsIHIxMSAgICAgICAgICAgICAgICAgICAgIEBpMygzKSAtLS0gcjExICs9IHhbLTFdICogYTMNCisJU01MQVRUICByMTIsIHI3LCByMiwgcjEyICAgICAgICAgICAgICAgICAgICAgQGk0KDQpIC0tLSByMTIgKz0geFstMV0gKiBhNA0KKyAgICAgICAgU01MQVRCICByMywgcjYsIHIyLCByMyAgICAgICAgICAgICAgICAgICAgICAgQGkxKDIpIC0tLSByMyArPSB4Wy0yXSAqIGEyCQ0KKw0KKwlTTUxBQkIJcjQsIHI2LCByMiwgcjQJCQkJQCBpMgkoMykNCisJU01MQVRCICByMTEscjcsIHIyLCByMTEJCQkJQCBpMwkoNCkNCisJU01MQUJCCXIxMixyNywgcjIsIHIxMgkJCQlAIGk0CSg1KQ0KKwkNCisJTERSCXIyLFtyMV0sIy00DQorCVNNTEFCVAlyMywgcjYsIHIyLCByMwkJCQlAIGkxCSgzKQ0KKwlTTUxBVFQJcjQsIHI3LCByMiwgcjQJCQkJQCBpMgkoNCkNCisJU01MQUJUCXIxMSxyNywgcjIsIHIxMQkJCQlAIGkzCSg1KQ0KKwlTTUxBVFQJcjEyLHI4LCByMiwgcjEyCQkJCUAgaTQJKDYpDQorCVNNTEFUQglyMywgcjcsIHIyLCByMwkJCQlAIGkxCSg0KQ0KKwlTTUxBQkIJcjQsIHI3LCByMiwgcjQJCQkJQCBpMgkoNSkNCisJU01MQVRCCXIxMSxyOCwgcjIsIHIxMQkJCQlAIGkzCSg2KQ0KKwlTTUxBQkIJcjEyLHI4LCByMiwgcjEyCQkJCUAgaTQJKDcpDQorCQkNCisJTERSCXIyLFtyMV0sIy00DQorCVNNTEFCVAlyMywgcjcsIHIyLCByMwkJCQlAIGkxCSg1KQ0KKwlTTUxBVFQJcjQsIHI4LCByMiwgcjQJCQkJQCBpMgkoNikNCisJU01MQUJUCXIxMSxyOCwgcjIsIHIxMQkJCQlAIGkzCSg3KQ0KKwlTTUxBVFQJcjEyLHI5LCByMiwgcjEyCQkJCUAgaTQJKDgpDQorCVNNTEFUQglyMywgcjgsIHIyLCByMwkJCQlAIGkxCSg2KQ0KKwlTTUxBQkIJcjQsIHI4LCByMiwgcjQJCQkJQCBpMgkoNykNCisJU01MQVRCCXIxMSxyOSwgcjIsIHIxMQkJCQlAIGkzCSg4KQ0KKwlTTUxBQkIJcjEyLHI5LCByMiwgcjEyCQkJCUAgaTQJKDkpDQorCUxEUglyMTAsIFtyMTMsICM4XQkJCQlAIFsgYTEwIHwgYTExXQ0KKwkNCisJTERSCXIyLFtyMV0sIy00DQorCVNNTEFCVAlyMywgcjgsIHIyLCByMwkJCQlAIGkxCSg3KQ0KKwlTTUxBVFQJcjQsIHI5LCByMiwgcjQJCQkJQCBpMgkoOCkNCisJU01MQUJUCXIxMSxyOSwgcjIsIHIxMQkJCQlAIGkzCSg5KQ0KKwlTTUxBVFQJcjEyLHIxMCwgcjIsIHIxMgkJCUAgaTQJKDEwKQ0KKwlTTUxBVEIJcjMsIHI5LCByMiwgcjMJCQkJQCBpMQkoOCkNCisJU01MQUJCCXI0LCByOSwgcjIsIHI0CQkJCUAgaTIJKDkpDQorCVNNTEFUQglyMTEscjEwLCByMiwgcjExCQkJQCBpMwkoMTApDQorCVNNTEFCQglyMTIscjEwLCByMiwgcjEyCQkJQCBpNAkoMTEpDQorCUxEUglyOCwgW3IxMywgIzEyXQkJCQlAIFsgYTEyIHwgYTEzIF0NCisJCQ0KKwlMRFIJcjIsW3IxXSwjLTQNCisJU01MQUJUCXIzLCByOSwgcjIsIHIzCQkJCUAgaTEJKDkpDQorCVNNTEFUVAlyNCwgcjEwLCByMiwgcjQJCQkJQCBpMgkoMTApDQorCVNNTEFCVAlyMTEscjEwLCByMiwgcjExCQkJQCBpMwkoMTEpDQorCVNNTEFUVAlyMTIscjgsIHIyLCByMTIJCQkJQCBpNAkoMTIpDQorCVNNTEFUQglyMywgcjEwLCByMiwgcjMJCQkJQCBpMQkoMTApDQorCVNNTEFCQglyNCwgcjEwLCByMiwgcjQJCQkJQCBpMgkoMTEpDQorCVNNTEFUQglyMTEscjgsIHIyLCByMTEJCQkJQCBpMwkoMTIpDQorCVNNTEFCQglyMTIscjgsIHIyLCByMTIJCQkJQCBpNAkoMTMpDQorCUxEUglyOSwgW3IxMywgIzE2XQkJCQlAIFsgYTE0IHwgYTE1IF0NCisJDQorCUxEUglyMixbcjFdLCMtNA0KKwlTTUxBQlQJcjMsIHIxMCwgcjIsIHIzCQkJCUAgaTEJKDExKQ0KKwlTTUxBVFQJcjQsIHI4LCByMiwgcjQJCQkJQCBpMgkoMTIpDQorCVNNTEFCVAlyMTEscjgsIHIyLCByMTEJCQkJQCBpMwkoMTMpDQorCVNNTEFUVAlyMTIscjksIHIyLCByMTIJCQkJQCBpNAkoMTQpDQorCVNNTEFUQglyMywgcjgsIHIyLCByMwkJCQlAIGkxCSgxMikNCisJU01MQUJCCXI0LCByOCwgcjIsIHI0CQkJCUAgaTIJKDEzKQ0KKwlTTUxBVEIJcjExLHI5LCByMiwgcjExCQkJCUAgaTMJKDE0KQ0KKwlTTUxBQkIJcjEyLHI5LCByMiwgcjEyCQkJCUAgaTQJKDE1KQ0KKwkNCisNCisJTERSCXIyLFtyMV0sIy00DQorCVNNTEFCVAlyMywgcjgsIHIyLCByMwkJCQlAIGkxCSgxMykNCisJU01MQVRUCXI0LCByOSwgcjIsIHI0CQkJCUAgaTIJKDE0KQ0KKwlTTUxBQlQJcjExLHI5LCByMiwgcjExCQkJCUAgaTMJKDE1KQ0KKwlTTUxBQlQJcjEyLHIxNCwgcjIsIHIxMgkJCUAgaTQJKDE2KQ0KKwlTTUxBVEIJcjMsIHI5LCByMiwgcjMJCQkJQCBpMQkoMTQpDQorCVNNTEFCQglyNCwgcjksIHIyLCByNAkJCQlAIGkyCSgxNSkNCisJU01MQUJCCXIxMSxyMTQsIHIyLCByMTEJCQlAIGkzCSgxNikNCisJTERSCQlyOCwgW3IxM10JCQkJCUAgWyBhNiB8IGE3IF0NCisJCQkNCisgICAgICAgIExEUiAgICAgcjIsW3IxXSwjNDQgICAgICAgICAJCUAgQ2hhbmdlDQorCVNNTEFCVAlyMywgcjksIHIyLCByMw0KKwlTTUxBQkIJcjMsIHIxNCwgcjIsIHIzDQorCVNNTEFCVAlyNCwgcjE0LCByMiwgcjQNCisJTERSCQlyOSwgW3IxMywgIzRdCQkJCUAgWyBhOCB8IGE5IF0NCisJDQorDQorCVFBREQJcjMscjMscjMJCQkJCQ0KKwlRQURECXI0LHI0LHI0CQkJCQkNCisJUUFERAlyMTEscjExLHIxMQkJCQkJDQorCVFBREQJcjEyLHIxMixyMTIJCQkJCQ0KKwkJDQorCVFBREQJcjMscjMscjMJCQkJCQ0KKwlRQURECXI0LHI0LHI0CQkJCQkNCisJUUFERAlyMTEscjExLHIxMQkJCQkJDQorCVFBREQJcjEyLHIxMixyMTIJCQkJCQ0KKwkNCisJUUFERAlyMyxyMyxyMwkJCQkJDQorCVFBREQJcjQscjQscjQJCQkJCQ0KKwlRQURECXIxMSxyMTEscjExCQkJCQkNCisJUUFERAlyMTIscjEyLHIxMgkJCQkJDQorCQ0KKwlRQURECXIzLHIzLHIzCQkJCQkNCisJUUFERAlyNCxyNCxyNAkJCQkJDQorCVFBREQJcjExLHIxMSxyMTEJCQkJCQ0KKwlRQURECXIxMixyMTIscjEyCQkJCQkNCisJDQorCU1PVglyMiwjMzI3NjgJDQorCQ0KKwlRREFERAlyMyxyMixyMwkJCQkJDQorCVFEQURECXI0LHIyLHI0CQkJCQkNCisJUURBREQJcjExLHIyLHIxMQkJCQkJDQorCVFEQURECXIxMixyMixyMTIJCQkJCQ0KKwkJDQorCQ0KKwlNT1YJcjMscjMsYXNyICMxNg0KKwlNT1YJcjQscjQsYXNyICMxNg0KKwlNT1YJcjExLHIxMSxhc3IgIzE2DQorCU1PVglyMTIscjEyLGFzciAjMTYNCisJDQorCVNUUkgJcjMsW3IwXSwjMg0KKwlTVFJICXI0LFtyMF0sIzINCisJU1RSSAlyMTEsW3IwXSwjMg0KKwlTVFJICXIxMixbcjBdLCMyDQorCQ0KKwlNT1YJcjIscjE0LGFzciAjMTYNCisJU1VCCXIxNCwgcjE0LCAjMHgxMDAwMA0KKwlTVUJTCXIyLHIyLCMxDQorCUJORQlyZXNpZHVfbG9vcAkNCitlbmQ6DQorCUxETUZECXIxMyEsIHtyOCAtcjEyfQkNCisJTERNRkQJcjEzISwge3I0IC1yMTIscGN9DQorDQorICAgICAgICBARU5ERlVOQw0KKyAgICAgICAgLkVORAkgDQorICAgICAgICANCisJDQorCSAgDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3NjYWxlX3NpZ19vcHQucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9zY2FsZV9zaWdfb3B0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE5ZjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9zY2FsZV9zaWdfb3B0LnMKQEAgLTAsMCArMSw3NSBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQHZvaWQgU2NhbGVfc2lnKA0KK0AJICAgICAgIFdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgOiBzaWduYWwgdG8gc2NhbGUgICAgICAgICAgICAgICAqLw0KK0AJICAgICAgIFdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBzaXplIG9mIHhbXSAgICAgICAgICAgICAgICAgICAqLw0KK0AJICAgICAgIFdvcmQxNiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBleHBvbmVudDogeCA9IHJvdW5kKHggPDwgZXhwKSAqLw0KK0AJICAgICAgICkNCitADQorQHIwIC0tLSB4W10NCitAcjEgLS0tIGxnDQorQHIyIC0tLSBleHANCisNCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorCSAgLmdsb2JhbCAgIFNjYWxlX3NpZ19vcHQNCisNCitTY2FsZV9zaWdfb3B0Og0KKw0KKyAgICAgICAgIFNUTUZEICAgICAgICAgcjEzISwge3I0IC0gcjEyLCByMTR9DQorCSBTVUIgICAgICAgICAgIHIzLCByMSwgIzEgICAgICAgICAgICAgICAgICBAaSA9IGxnIC0gMQ0KKyAgICAgICAgIENNUCAgICAgICAgICAgcjIsICMwICAgICAgICAgICAgICAgICAgICAgIEBDb21wYXJlIGV4cCBhbmQgMA0KKwkgUlNCICAgICAgICAgICByNywgcjIsICMwICAgICAgICAgICAgICAgICAgQGV4cCA9IC1leHANCisJIEFERCAgICAgICAgICAgcjEwLCByMiwgIzE2ICAgICAgICAgICAgICAgIEAxNiArIGV4cA0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjQsIHIwLCByMywgTFNMICMxICAgICAgICAgIEB4W2ldIGFkZHJlc3MNCisJIE1PViAgICAgICAgICAgcjgsICMweDdmZmZmZmZmDQorCSBNT1YgICAgICAgICAgIHI5LCAjMHg4MDAwDQorCSBCTEUgICAgICAgICAgIExPT1AyDQorCSANCitMT09QMToNCisNCisgICAgICAgICBMRFJTSCAgICAgICAgICByNSwgW3I0XSAgICAgICAgICAgICAgICAgICAgQGxvYWQgeFtpXQ0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjEyLCByNSwgTFNMIHIxMA0KKwkgVEVRICAgICAgICAgICByNSwgcjEyLCBBU1IgcjEwDQorCSBFT1JORSAgICAgICAgIHIxMiwgcjgsIHI1LCBBU1IgIzMxDQorCSBTVUJTICAgICAgICAgIHIzLCByMywgIzENCisJIFFBREQgICAgICAgICAgcjExLCByMTIsIHI5DQorCSBNT1YgICAgICAgICAgIHIxMiwgcjExLCBBU1IgIzE2DQorCSBTVFJIICAgICAgICAgIHIxMiwgW3I0XSwgIy0yDQorCSBCR0UgICAgICAgICAgIExPT1AxDQorICAgICAgICAgQkwgICAgICAgICAgICBUaGVfZW5kDQorDQorTE9PUDI6DQorDQorICAgICAgICAgTERSU0ggICAgICAgICAgcjUsIFtyNF0gICAgICAgICAgICAgICAgICAgQGxvYWQgeFtpXQ0KKwkgTU9WICAgICAgICAgICByNiwgcjUsIExTTCAjMTYgICAgICAgICAgICBATF90bXAgPSB4W2ldIDw8IDE2DQorCSBNT1YgICAgICAgICAgIHI1LCByNiwgQVNSIHI3ICAgICAgICAgICAgIEBMX3RtcCA+Pj0gZXhwDQorCSBRQUREICAgICAgICAgIHIxMSwgcjUsIHI5DQorCSBNT1YgICAgICAgICAgIHIxMiwgcjExLCBBU1IgIzE2DQorCSBTVUJTICAgICAgICAgIHIzLCByMywgIzENCisJIFNUUkggICAgICAgICAgcjEyLCBbcjRdLCAjLTINCisJIEJHRSAgICAgICAgICAgTE9PUDINCisNCitUaGVfZW5kOg0KKyAgICAgICAgIExETUZEICAgICAgICAgcjEzISwge3I0IC0gcjEyLCByMTV9DQorICAgICANCisgICAgICAgICBARU5ERlVOQw0KKyAgICAgICAgIC5FTkQJIA0KKyAgICAgICAgDQorCQ0KKwkgIA0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9zeW5fZmlsdF9vcHQucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9zeW5fZmlsdF9vcHQucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDVlOWUwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3N5bl9maWx0X29wdC5zCkBAIC0wLDAgKzEsMjM4IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK0B2b2lkIFN5bl9maWx0KA0KK0AgICAgIFdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGFbbSsxXSBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAgICAgICAgICAgKi8NCitAICAgICBXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHNpZ25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBtZW1bXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaWx0ZXJpbmcuICAgKi8NCitAKQ0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgYVtdICAgIC0tLSAgIHIwDQorQCB4W10gICAgLS0tICAgcjENCitAIHlbXSAgICAtLS0gICByMg0KK0AgbWVtW10gIC0tLSAgIHIzDQorQCBtIC0tLSAgMTYgIGxnIC0tLSA4MCAgdXBkYXRlIC0tLSAxDQorDQorICAgICAgICAgIC5zZWN0aW9uICAudGV4dA0KKwkgIC5nbG9iYWwgICBTeW5fZmlsdF9hc20NCisgICAgICAgICAgLmV4dGVybiAgIHZvQVdCX0NvcHkNCisNCitTeW5fZmlsdF9hc206DQorDQorICAgICAgICAgIFNUTUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE0fSANCisgICAgICAgICAgU1VCICAgICAgICAgICByMTMsIHIxMywgIzcwMCAgICAgICAgICAgICAgICAgICBAIHlfYnVmW0xfRlJBTUUxNmsgKyBNMTZrXQ0KKyAgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI0LCByMyAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgY29weSBtZW1bXSBhZGRyZXNzDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjUsIHIxMyAgICAgICAgICAgICAgICAgICAgICAgICAgQCBjb3B5IHl5ID0geV9idWYgYWRkcmVzcw0KKw0KKyAgICAgICAgICBAIGZvcihpID0gMEAgaSA8IG1AIGkrKykNCisgICAgICAgICAgQHsNCisgICAgICAgICAgQCAgICAqeXkrKyA9IG1lbVtpXUANCisgICAgICAgICAgQH0gDQorDQorICAgICAgICAgIExEUkggICAgICAgICAgcjYsICBbcjRdLCAjMiAgICAgICAgICANCisgICAgICAgICAgTERSSCAgICAgICAgICByNywgIFtyNF0sICMyDQorICAgICAgICAgIExEUkggICAgICAgICAgcjgsICBbcjRdLCAjMg0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHI5LCAgW3I0XSwgIzINCisgICAgICAgICAgTERSSCAgICAgICAgICByMTAsIFtyNF0sICMyDQorICAgICAgICAgIExEUkggICAgICAgICAgcjExLCBbcjRdLCAjMg0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHIxMiwgW3I0XSwgIzINCisgICAgICAgICAgTERSSCAgICAgICAgICByMTQsIFtyNF0sICMyDQorDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjYsICBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI3LCAgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByOCwgIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjksICBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHIxMCwgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByMTEsIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjEyLCBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHIxNCwgW3I1XSwgIzINCisNCisgICAgICAgICAgTERSSCAgICAgICAgICByNiwgIFtyNF0sICMyICAgICAgICAgIA0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHI3LCAgW3I0XSwgIzINCisgICAgICAgICAgTERSSCAgICAgICAgICByOCwgIFtyNF0sICMyDQorICAgICAgICAgIExEUkggICAgICAgICAgcjksICBbcjRdLCAjMg0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHIxMCwgW3I0XSwgIzINCisgICAgICAgICAgTERSSCAgICAgICAgICByMTEsIFtyNF0sICMyDQorICAgICAgICAgIExEUkggICAgICAgICAgcjEyLCBbcjRdLCAjMg0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHIxNCwgW3I0XSwgIzINCisNCisgICAgICAgICAgU1RSSCAgICAgICAgICByNiwgIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjcsICBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI4LCAgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByOSwgIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjEwLCBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHIxMSwgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByMTIsIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjE0LCBbcjVdLCAjMg0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI1LCBbcjBdICAgICAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzBdDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjgsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBpID0gMA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI1LCByNSwgQVNSICMxICAgICAgICAgICAgICAgICAgIEAgYTAgPSBhWzBdID4+IDENCisgICAgICAgICAgQE1PViAgICAgICAgICAgcjQsIHIxMw0KKyAgICAgICAgICBAIGxvYWQgYWxsIGFbXQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxNCwgPTB4ZmZmZg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjAsICMyXSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyMCwgIzRdICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMl0NCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgW3IwLCAjNl0gICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVszXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMSxbcjAsICM4XSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzRdDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjYsIHI2LCByMTQNCisgICAgICAgICAgQU5EICAgICAgICAgICByOSwgcjksIHIxNCAgICAgICAgICANCisgICAgICAgICAgT1JSICAgICAgICAgICByMTAsIHI2LCByNywgTFNMICMxNiAgICAgICAgICAgICBAIC1hWzJdIC0tIC1hWzFdDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjEyLCByOSwgcjExLCBMU0wgIzE2ICAgICAgICAgICAgQCAtYVs0XSAtLSAtYVszXQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMCwgW3IxMywgIy00XQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMiwgW3IxMywgIy04XQ0KKyAgICAgICAgICANCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3IwLCAjMTBdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVs1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI3LCBbcjAsICMxMl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzZdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyMCwgIzE0XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbN10NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTEsW3IwLCAjMTZdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVs4XQ0KKyAgICAgICAgICBBTkQgICAgICAgICAgIHI2LCByNiwgcjE0DQorICAgICAgICAgIEFORCAgICAgICAgICAgcjksIHI5LCByMTQgICAgICAgICAgDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjEwLCByNiwgcjcsIExTTCAjMTYgICAgICAgICAgICAgQCAtYVs2XSAtLSAtYVs1XQ0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMiwgcjksIHIxMSwgTFNMICMxNiAgICAgICAgICAgIEAgLWFbOF0gLS0gLWFbN10NCisgICAgICAgICAgU1RSICAgICAgICAgICByMTAsIFtyMTMsICMtMTJdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEyLCBbcjEzLCAjLTE2XSAgICAgICAgICANCisgICAgICAgICAgIA0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjAsICMxOF0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzldDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyMCwgIzIwXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMTBdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyMCwgIzIyXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMTFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjExLFtyMCwgIzI0XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMTJdDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjYsIHI2LCByMTQNCisgICAgICAgICAgQU5EICAgICAgICAgICByOSwgcjksIHIxNCAgICAgICAgICANCisgICAgICAgICAgT1JSICAgICAgICAgICByMTAsIHI2LCByNywgTFNMICMxNiAgICAgICAgICAgICBAIC1hWzEwXSAtLSAtYVs5XQ0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMiwgcjksIHIxMSwgTFNMICMxNiAgICAgICAgICAgIEAgLWFbMTJdIC0tIC1hWzExXQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMCwgW3IxMywgIy0yMF0NCisgICAgICAgICAgU1RSICAgICAgICAgICByMTIsIFtyMTMsICMtMjRdICAgIA0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjAsICMyNl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzEzXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI3LCBbcjAsICMyOF0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzE0XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjAsICMzMF0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzE1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMSxbcjAsICMzMl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzE2XQ0KKyAgICAgICAgICBBTkQgICAgICAgICAgIHI2LCByNiwgcjE0DQorICAgICAgICAgIEFORCAgICAgICAgICAgcjksIHI5LCByMTQgICAgICAgICAgDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjEwLCByNiwgcjcsIExTTCAjMTYgICAgICAgICAgICAgQCAtYVsxNF0gLS0gLWFbMTNdDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjEyLCByOSwgcjExLCBMU0wgIzE2ICAgICAgICAgICAgQCAtYVsxNl0gLS0gLWFbMTVdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEwLCBbcjEzLCAjLTI4XQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMiwgW3IxMywgIy0zMl0gICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjQsIHIxMywgIzMyDQorTE9PUDoNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICBAIGxvYWQgeFtpXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgIHIxMCwgcjQsIHI4LCBMU0wgIzEgICAgICAgICAgICAgIEAgdGVtcF9wID0geXkgKyBpDQorDQorICAgICAgICAgIE1VTCAgICAgICAgICAgcjAsIHI1LCByNiAgICAgICAgICAgICAgICAgICAgICBAIExfdG1wID0geFtpXSAqIGEwDQorICAgICAgICAgIEAgZm9yKGogPSAxQCBqIDw9IG0sIGorPTgpDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjcsICBbcjEzLCAjLTRdICAgICAgICAgICAgICAgICAgQCAtYVsyXSAgLWFbMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgIFtyMTAsICMtMl0gICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gMSkNCisgICAgICAgICAgTERSU0ggICAgICAgICByMTIsIFtyMTAsICMtNF0gICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gMikNCisNCisNCisgICAgICAgICAgU01VTEJCICAgICAgICByMTQsIHI5LCByNyAgICAgICAgICAgICAgICAgICAgICBAIC1hWzFdICogKCoodGVtcF9wIC0xKSkNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgIFtyMTAsICMtNl0gICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gMykNCisNCisgICAgICAgICAgU01MQUJUICAgICAgICByMTQsIHIxMiwgcjcsIHIxNCAgICAgICAgICAgICAgICBAIC1hWzJdICogKCoodGVtcF9wIC0gMikpDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjcsICBbcjEzLCAjLThdICAgICAgICAgICAgICAgICAgQCAtYVs0XSAtYVszXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMSwgW3IxMCwgIy04XSAgICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSA0KQ0KKw0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxNCwgcjYsIHI3LCByMTQgICAgICAgICAgICAgICAgIEAgLWFbM10gKiAoKih0ZW1wX3AgLTMpKQ0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCAgW3IxMCwgIy0xMF0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSA1KQ0KKyAgIA0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxNCwgcjExLCByNywgcjE0ICAgICAgICAgICAgICAgIEAgLWFbNF0gKiAoKih0ZW1wX3AgLTQpKSAgICAgICAgDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjcsICBbcjEzLCAjLTEyXSAgICAgICAgICAgICAgICAgQCAtYVs2XSAgLWFbNV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTIsIFtyMTAsICMtMTJdICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gNikNCisNCisgICAgICAgICAgU01MQUJCICAgICAgICByMTQsIHI5LCByNywgcjE0ICAgICAgICAgICAgICAgICBAIC1hWzVdICogKCoodGVtcF9wIC01KSkNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgIFtyMTAsICMtMTRdICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gNykNCisNCisgICAgICAgICAgU01MQUJUICAgICAgICByMTQsIHIxMiwgcjcsIHIxNCAgICAgICAgICAgICAgICBAIC1hWzZdICogKCoodGVtcF9wIC0gNikpDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjcsICBbcjEzLCAjLTE2XSAgICAgICAgICAgICAgICAgQCAtYVs4XSAtYVs3XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMSwgW3IxMCwgIy0xNl0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSA4KQ0KKyAgICAgICAgIA0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxNCwgcjYsIHI3LCByMTQgICAgICAgICAgICAgICAgIEAgLWFbN10gKiAoKih0ZW1wX3AgLTcpKQ0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCAgW3IxMCwgIy0xOF0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSA5KQ0KKw0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxNCwgcjExLCByNywgcjE0ICAgICAgICAgICAgICAgIEAgLWFbOF0gKiAoKih0ZW1wX3AgLTgpKSAgICAgICAgICANCisgDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjcsICBbcjEzLCAjLTIwXSAgICAgICAgICAgICAgICAgQCAtYVsxMF0gIC1hWzldDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjEyLCBbcjEwLCAjLTIwXSAgICAgICAgICAgICAgICAgQCAqKHRlbXBfcCAtIDEwKQ0KKw0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxNCwgcjksIHI3LCByMTQgICAgICAgICAgICAgICAgIEAgLWFbOV0gKiAoKih0ZW1wX3AgLTkpKQ0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCAgW3IxMCwgIy0yMl0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSAxMSkNCisNCisgICAgICAgICAgU01MQUJUICAgICAgICByMTQsIHIxMiwgcjcsIHIxNCAgICAgICAgICAgICAgICBAIC1hWzEwXSAqICgqKHRlbXBfcCAtIDEwKSkNCisNCisgICAgICAgICAgTERSICAgICAgICAgICByNywgIFtyMTMsICMtMjRdICAgICAgICAgICAgICAgICBAIC1hWzEyXSAtYVsxMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTEsIFtyMTAsICMtMjRdICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gMTIpDQorDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjE0LCByNiwgcjcsIHIxNCAgICAgICAgICAgICAgICAgQCAtYVsxMV0gKiAoKih0ZW1wX3AgLTExKSkNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgIFtyMTAsICMtMjZdICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gMTMpDQorDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjE0LCByMTEsIHI3LCByMTQgICAgICAgICAgICAgICAgQCAtYVsxMl0gKiAoKih0ZW1wX3AgLTEyKSkgICAgICAgICAgIA0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHI3LCAgW3IxMywgIy0yOF0gICAgICAgICAgICAgICAgIEAgLWFbMTRdIC1hWzEzXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMiwgW3IxMCwgIy0yOF0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSAxNCkNCisgDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjE0LCByOSwgcjcsIHIxNCAgICAgICAgICAgICAgICAgQCAtYVsxM10gKiAoKih0ZW1wX3AgLTEzKSkNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgIFtyMTAsICMtMzBdICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gMTUpDQorDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjE0LCByMTIsIHI3LCByMTQgICAgICAgICAgICAgICAgQCAtYVsxNF0gKiAoKih0ZW1wX3AgLSAxNCkpDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjcsICBbcjEzLCAjLTMyXSAgICAgICAgICAgICAgICAgQCAtYVsxNl0gLWFbMTVdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjExLCBbcjEwLCAjLTMyXSAgICAgICAgICAgICAgICAgQCAqKHRlbXBfcCAtIDE2KQ0KKw0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxNCwgcjYsIHI3LCByMTQgICAgICAgICAgICAgICAgIEAgLWFbMTVdICogKCoodGVtcF9wIC0xNSkpDQorDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjE0LCByMTEsIHI3LCByMTQgICAgICAgICAgICAgICAgQCAtYVsxNl0gKiAoKih0ZW1wX3AgLTE2KSkNCisNCisgICAgICAgICAgUlNCICAgICAgICAgICByMTQsIHIxNCwgcjANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjcsIHIxNCwgTFNMICM0ICAgICAgICAgICAgICAgICAgQCBMX3RtcCA8PD00DQorICAgICAgICAgIEFERCAgICAgICAgICAgcjgsIHI4LCAjMQ0KKyAgICAgICAgICBBREQgICAgICAgICAgIHIxNCwgcjcsICMweDgwMDAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI3LCByMTQsIEFTUiAjMTYgICAgICAgICAgICAgICAgIEAgKExfdG1wICsgMHg4MDAwKSA+PiAxNg0KKyAgICAgICAgICBDTVAgICAgICAgICAgIHI4LCAjODANCisgICAgICAgICAgU1RSSCAgICAgICAgICByNywgW3IxMF0gICAgICAgICAgICAgICAgICAgICAgICBAIHl5W2ldDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjcsIFtyMl0sICMyICAgICAgICAgICAgICAgICAgICAgQCB5W2ldDQorICAgICAgICAgIEJMVCAgICAgICAgICAgTE9PUA0KKyANCisgICAgICAgICAgQCB1cGRhdGUgbWVtW10NCisgICAgICAgICAgQUREICAgICAgICAgICByNSwgcjEzLCAjMTYwICAgICAgICAgICAgICAgICAgICBAIHl5WzY0XSBhZGRyZXNzDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjEsIHIzDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjAsIHI1DQorICAgICAgICAgIE1PViAgICAgICAgICAgcjIsICMxNg0KKyAgICAgICAgICBCTCAgICAgICAgICAgIHZvQVdCX0NvcHkgICAgICAgICAgDQorDQorU3luX2ZpbHRfYXNtX2VuZDoNCisgDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjEzLCByMTMsICM3MDAJCSAgICAgDQorICAgICAgICAgIExETUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisgICAgICAgICAgQEVOREZVTkMNCisgICAgICAgICAgLkVORA0KKyANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9EZWVtcGhfMzJfbmVvbi5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvRGVlbXBoXzMyX25lb24ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2I2MGMzCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvRGVlbXBoXzMyX25lb24ucwpAQCAtMCwwICsxLDEwMiBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQHZvaWQgRGVlbXBoXzMyKA0KK0AgICAgIFdvcmQxNiB4X2hpW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAoYml0MzEuLjE2KSAqLw0KK0AgICAgIFdvcmQxNiB4X2xvW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAoYml0MTUuLjQpICAqLw0KK0AgICAgIFdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IG91dHB1dCBzaWduYWwgKHgxNikgICAgICAqLw0KK0AgICAgIFdvcmQxNiBtdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGRlZW1waGFzaXMgZmFjdG9yICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHZlY3RvciBzaXplICAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSAoeVstMV0pICAgICAgICAgICAqLw0KK0AgICAgICkNCisNCitAeF9oaSAgICAgUk4gICAgICBSMA0KK0B4X2xvICAgICBSTiAgICAgIFIxDQorQHlbXSAgICAgIFJOICAgICAgUjINCitAKm1lbSAgICAgUk4gICAgICBSMw0KKw0KKyAgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorICAgICAgICAgICAuZ2xvYmFsICAgRGVlbXBoXzMyX2FzbQ0KKwkgICANCitEZWVtcGhfMzJfYXNtOg0KKw0KKyAgICAgICAgICAgU1RNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTR9IA0KKwkgICBNT1YgICAgICAgICAgcjQsICMyICAgICAgICAgICAgICAgICAgIEBpPTANCisJICAgTERSU0ggICAgICAgIHI2LCBbcjBdLCAjMiAgICAgICAgICAgICBAbG9hZCB4X2hpWzBdDQorCSAgIExEUlNIICAgICAgICByNywgW3IxXSwgIzIgICAgICAgICAgICAgQGxvYWQgeF9sb1swXQ0KKwkgICBMRFIgICAgICAgICAgcjUsID0yMjI4MiAgICAgICAgICAgICAgIEByNS0tLW11DQorCSAgIE1PViAgICAgICAgICByMTEsICMweDgwMDANCisNCisgICAgICAgICAgIEB5WzBdDQorCSAgIE1PViAgICAgICAgICByMTAsIHI2LCBMU0wgIzE2ICAgICAgICAgQExfdG1wID0geF9oaVswXTw8MTYNCisJICAgTU9WICAgICAgICAgIHI4LCAgcjUsIEFTUiAjMSAgICAgICAgICBAZmFjID0gbXUgPj4gMQ0KKwkgICBMRFIgICAgICAgICAgcjUsICBbcjNdDQorCSAgIEFERCAgICAgICAgICByMTIsIHIxMCwgcjcsIExTTCAjNCAgICAgQExfdG1wICs9IHhfbG9bMF0gPDwgNA0KKwkgICBNT1YgICAgICAgICAgcjEwLCByMTIsIExTTCAjMyAgICAgICAgIEBMX3RtcCA8PD0gMw0KKwkgICBNVUwgICAgICAgICAgcjksIHI1LCByOA0KKwkgICBMRFJTSCAgICAgICAgcjYsIFtyMF0sICMyICAgICAgICAgICAgIEBsb2FkIHhfaGlbMV0gDQorCSAgIFFEQUREICAgICAgICByMTAsIHIxMCwgcjkNCisJICAgTERSU0ggICAgICAgIHI3LCBbcjFdLCAjMiAgICAgICAgICAgICBAbG9hZCB4X2xvWzFdICANCisJICAgTU9WICAgICAgICAgIHIxMiwgcjEwLCBMU0wgIzEgICAgICAgICBATF90bXAgPSBMX21hYyhMX3RtcCwgKm1lbSwgZmFjKQ0KKwkgICBRQUREICAgICAgICAgcjEwLCByMTIsIHIxMQ0KKwkgICBNT1YgICAgICAgICAgcjE0LCByMTAsIEFTUiAjMTYgICAgICAgIEB5WzBdID0gcm91bmQoTF90bXApDQorDQorDQorCSAgIE1PViAgICAgICAgICByMTAsIHI2LCBMU0wgIzE2DQorCSAgIEFERCAgICAgICAgICByMTIsIHIxMCwgcjcsIExTTCAjNA0KKyAgICAgICAgICAgU1RSSCAgICAgICAgIHIxNCwgW3IyXSwgIzIgICAgICAgICAgICBAdXBkYXRlIHlbMF0NCisJICAgTU9WICAgICAgICAgIHIxMCwgcjEyLCBMU0wgIzMNCisJICAgTVVMICAgICAgICAgIHI5LCByMTQsIHI4DQorCSAgIFFEQUREICAgICAgICByMTAsIHIxMCwgcjkNCisJICAgTU9WICAgICAgICAgIHIxMiwgcjEwLCBMU0wgIzENCisJICAgUUFERCAgICAgICAgIHIxMCwgcjEyLCByMTENCisJICAgTU9WICAgICAgICAgIHIxNCwgcjEwLCBBU1IgIzE2ICAgICAgICBAeVsxXSA9IHJvdW5kKExfdG1wKQ0KKw0KK0xPT1A6DQorICAgICAgICAgICBMRFJTSCAgICAgICAgcjYsIFtyMF0sICMyICAgICAgICAgICAgIEBsb2FkIHhfaGlbXQ0KKwkgICBMRFJTSCAgICAgICAgcjcsIFtyMV0sICMyDQorCSAgIFNUUkggICAgICAgICByMTQsIFtyMl0sICMyDQorCSAgIE1PViAgICAgICAgICByMTAsIHI2LCBMU0wgIzE2DQorCSAgIEFERCAgICAgICAgICByMTIsIHIxMCwgcjcsIExTTCAjNA0KKwkgICBNVUwgICAgICAgICAgcjksIHIxNCwgcjgNCisJICAgTU9WICAgICAgICAgIHIxMCwgcjEyLCBMU0wgIzMNCisJICAgUURBREQgICAgICAgIHIxMCwgcjEwLCByOQ0KKyAgICAgICAgICAgTERSU0ggICAgICAgIHI2LCBbcjBdLCAjMiAgICAgICAgICAgICBAbG9hZCB4X2hpW10NCisJICAgTU9WICAgICAgICAgIHIxMiwgcjEwLCBMU0wgIzENCisJICAgUUFERCAgICAgICAgIHIxMCwgcjEyLCByMTENCisJICAgTERSU0ggICAgICAgIHI3LCBbcjFdLCAjMg0KKwkgICBNT1YgICAgICAgICAgcjE0LCByMTAsIEFTUiAjMTYNCisNCisJICAgTU9WICAgICAgICAgIHIxMCwgcjYsIExTTCAjMTYNCisJICAgQUREICAgICAgICAgIHIxMiwgcjEwLCByNywgTFNMICM0DQorCSAgIFNUUkggICAgICAgICByMTQsIFtyMl0sICMyDQorCSAgIE1VTCAgICAgICAgICByOSwgcjE0LCByOA0KKwkgICBNT1YgICAgICAgICAgcjEwLCByMTIsIExTTCAjMw0KKwkgICBRREFERCAgICAgICAgcjEwLCByMTAsIHI5DQorICAgICAgICAgICBBREQgICAgICAgICAgcjQsIHI0LCAjMg0KKwkgICBNT1YgICAgICAgICAgcjEyLCByMTAsIExTTCAjMQ0KKwkgICBRQUREICAgICAgICAgcjEwLCByMTIsIHIxMQ0KKyAgICAgICAgICAgQ01QICAgICAgICAgIHI0LCAjNjQNCisJICAgTU9WICAgICAgICAgIHIxNCwgcjEwLCBBU1IgIzE2DQorDQorICAgICAgICAgICBCTFQgICAgICAgICAgTE9PUA0KKyAgICAgICAgICAgU1RSICAgICAgICAgIHIxNCwgW3IzXQ0KKyAgICAgICAgICAgU1RSSCAgICAgICAgIHIxNCwgW3IyXQkgICANCisNCisgICAgICAgICAgIExETUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisNCisJICAgLkVORA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L0RvdF9wX25lb24ucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L0RvdF9wX25lb24ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2NhMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvRG90X3BfbmVvbi5zCkBAIC0wLDAgKzEsMTI3IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0ANCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitAV29yZDMyIERvdF9wcm9kdWN0MTIoICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMzE6IG5vcm1hbGl6ZWQgcmVzdWx0ICgxIDwgdmFsIDw9IC0xKSAqLw0KK0AgICAgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgMTJiaXRzOiB4IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgKi8NCitAICAgICAgIFdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDEyYml0czogeSB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgICBXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICA6IHZlY3RvciBsZW5ndGggICAgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgICAgV29yZDE2ICogZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgOiBleHBvbmVudCBvZiByZXN1bHQgKDAuLiszMCkgICAgICAgKi8NCitAKQ0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCitAICB4W10gICAtLS0gIHIwDQorQCAgeVtdICAgLS0tICByMQ0KK0AgIGxnICAgIC0tLSAgcjINCitAICAqZXhwICAtLS0gIHIzDQorDQorICAgICAgICAgIC5zZWN0aW9uICAgLnRleHQNCisgICAgICAgICAgLmdsb2JhbCAgICBEb3RfcHJvZHVjdDEyX2FzbQ0KKw0KK0RvdF9wcm9kdWN0MTJfYXNtOg0KKw0KKyAgICAgICAgICBTVE1GRCAgIAkgICAgcjEzISwge3I0IC0gcjEyLCByMTR9DQorCSAgQ01QICAgICAgICAgICAgICAgcjAsIHIxDQorCSAgQkVRICAgICAgICAgICAgICAgTE9PUF9FUQ0KKw0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgICAgICB7UTAsIFExfSwgW3IwXSEgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAgICAgIHtRMiwgUTN9LCBbcjBdISAgICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB4W10NCisgICAgICAgICAgVkxEMS5TMTYgICAgICAgICAge1E0LCBRNX0sIFtyMF0hICAgICAgICAgICAgICAgQGxvYWQgMTYgV29yZDE2IHhbXQ0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgICAgICB7UTYsIFE3fSwgW3IwXSEgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdDQorCSAgVkxEMS5TMTYgICAgICAgICAge1E4LCBROX0sIFtyMV0hICAgICAgICAgICAgICAgQGxvYWQgMTYgV29yZDE2IHlbXQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgIHtRMTAsIFExMX0sIFtyMV0hICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB5W10NCisJICBWTEQxLlMxNiAgICAgICAgICB7UTEyLCBRMTN9LCBbcjFdISAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeVtdDQorDQorICAgICAgICAgIFZNVUxMLlMxNiAgICAgICAgIFExNSwgRDE2LCBEMA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQxNywgRDEgICAgICAgICAgICAgICANCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMTgsIEQyDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDE5LCBEMw0KKwkgIFZMRDEuUzE2ICAgICAgICAgIHtRMCwgUTF9LCBbcjFdISAgICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB5W10gICANCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMjAsIEQ0ICAgICAgIA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQyMSwgRDUNCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMjIsIEQ2DQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDIzLCBENyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQyNCwgRDgNCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMjUsIEQ5DQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDI2LCBEMTANCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMjcsIEQxMQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQwLCBEMTINCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMSwgRDEzDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDIsIEQxNA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQzLCBEMTUNCisNCisgICAgICAgICAgQ01QICAgICAgICAgICAgICAgcjIsICM2NA0KKyAgICAgICAgICBCRVEgICAgICAgICAgICAgICBMYWJsZTENCisgICAgICAgICAgVkxEMS5TMTYgICAgICAgICAge1EwLCBRMX0sIFtyMF0hICAgICAgICAgICAgICAgQGxvYWQgMTYgV29yZDE2IHhbXSAgDQorCSAgVkxEMS5TMTYgICAgICAgICAge1EyLCBRM30sIFtyMV0hIA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQ0LCBEMCAgICAgICAgICAgICANCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBENSwgRDENCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBENiwgRDINCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBENywgRDMNCisJICBCTCAgICAgICAgICAgICAgICBMYWJsZTENCisNCitMT09QX0VROg0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgICAgICB7UTAsIFExfSwgW3IwXSENCisJICBWTEQxLlMxNiAgICAgICAgICB7UTIsIFEzfSwgW3IwXSENCisJICBWTEQxLlMxNiAgICAgICAgICB7UTQsIFE1fSwgW3IwXSENCisJICBWTEQxLlMxNiAgICAgICAgICB7UTYsIFE3fSwgW3IwXSENCisJICBWTVVMTC5TMTYgICAgICAgICBRMTUsIEQwLCBEMA0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDEsIEQxDQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMiwgRDINCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQzLCBEMw0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDQsIEQ0DQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBENSwgRDUNCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQ2LCBENg0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDcsIEQ3DQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEOCwgRDgNCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQ5LCBEOQ0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDEwLCBEMTANCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQxMSwgRDExDQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMTIsIEQxMg0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDEzLCBEMTMNCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQxNCwgRDE0DQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMTUsIEQxNQ0KKw0KKwkgIENNUCAgICAgICAgICAgICAgIHIyLCAjNjQNCisJICBCRVEgICAgICAgICAgICAgICBMYWJsZTENCisJICBWTEQxLlMxNiAgICAgICAgICB7UTAsIFExfSwgW3IwXSENCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQwLCBEMA0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDEsIEQxDQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMiwgRDINCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQzLCBEMw0KKw0KK0xhYmxlMTogDQorDQorICAgICAgICAgIFZRQURELlMzMiAgICAgICAgIEQzMCwgRDMwLCBEMzENCisgICAgICAgICAgVlBBREQuUzMyICAgICAgICAgRDMwLCBEMzAsIEQzMA0KKyAgICAgICAgICBWTU9WLlMzMiAgICAgICAgICByMTIsIEQzMFswXSAgICAgICAgDQorDQorCSAgQUREICAgICAgICAgICAgICAgcjEyLCByMTIsIHIxMg0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICByMTIsIHIxMiwgIzEgICAgICAgICAgICAgICAgICAgICAgICAgQCBMX3N1bSA9IChMX3N1bSA8PCAxKSAgKyAxDQorCSAgTU9WICAgICAgICAgICAgICAgcjQsIHIxMg0KKwkgIENNUCAgICAgICAgICAgICAgIHIxMiwgIzANCisJICBSU0JMVCAgICAgICAgICAgICByNCwgcjEyLCAjMA0KKyAgICAgICAgICBDTFogICAgICAgICAgICAgICByMTAsIHI0DQorICAgICAgICAgIFNVQiAgICAgICAgICAgICAgIHIxMCwgcjEwLCAjMSAgICAgICAgICAgICAgICAgICAgICAgICBAIHNmdCA9IG5vcm1fbChMX3N1bSkNCisgICAgICAgICAgTU9WICAgICAgICAgICAgICAgcjAsIHIxMiwgTFNMIHIxMCAgICAgICAgICAgICAgICAgICAgIEAgTF9zdW0gPSBMX3N1bSA8PCBzZnQNCisgICAgICAgICAgUlNCICAgICAgICAgICAgICAgcjExLCByMTAsICMzMCAgICAgICAgICAgICAgICAgICAgICAgIEAgKmV4cCA9IDMwIC0gc2Z0DQorICAgICAgICAgIFNUUkggICAgICAgICAgICAgIHIxMSwgW3IzXSAgICAgICAgICAgICAgICAgICAgIA0KKw0KK0RvdF9wcm9kdWN0MTJfZW5kOg0KKwkJICAgICANCisgICAgICAgICAgTERNRkQgICAJICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisNCisgICAgICAgICAgLkVORA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L0ZpbHRfNmtfN2tfbmVvbi5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvRmlsdF82a183a19uZW9uLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg4MDAyNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L0ZpbHRfNmtfN2tfbmVvbi5zCkBAIC0wLDAgKzEsMjI4IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK0B2b2lkIEZpbHRfNmtfN2soDQorQCAgICAgV29yZDE2IHNpZ25hbFtdLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHNpZ25hbCAgICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIGxlbmd0aCBvZiBpbnB1dCAgICAgICAgICovDQorQCAgICAgV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IG1lbW9yeSAoc2l6ZT0zMCkgICAgICAgICovDQorQCkNCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCitAIHIwICAgIC0tLSAgc2lnbmFsW10NCitAIHIxICAgIC0tLSAgbGcNCitAIHIyICAgIC0tLSAgbWVtW10gDQorDQorICAgICAgICAgIC5zZWN0aW9uICAudGV4dA0KKyAgICAgICAgICAuZ2xvYmFsICAgRmlsdF82a183a19hc20NCisgICAgICAgICAgLmV4dGVybiAgIGZpcl82a183aw0KKw0KK0ZpbHRfNmtfN2tfYXNtOg0KKw0KKyAgICAgICAgICBTVE1GRCAgIAkJcjEzISwge3IwIC0gcjEyLCByMTR9IA0KKyAgICAgICAgICBTVUIgICAgCQlyMTMsIHIxMywgIzI0MCAgICAgICAgICAgICAgQCB4W0xfU1VCRlIxNmsgKyAoTF9GSVIgLSAxKV0NCisgICAgICAgICAgTU9WICAgICAJCXI4LCByMCAgICAgICAgICAgICAgICAgICAgICBAIGNvcHkgc2lnbmFsW10gYWRkcmVzcw0KKyAgICAgICAgICBNT1YgICAgIAkJcjUsIHIyICAgICAgICAgICAgICAgICAgICAgIEAgY29weSBtZW1bXSBhZGRyZXNzDQorDQorICAgICAgICAgIE1PViAgICAgCQlyMCwgcjINCisgICAgICAgICAgTU9WICAgICAJCXIxLCByMTMNCisNCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge0QwLCBEMSwgRDIsIEQzfSwgW3IwXSENCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge0Q0LCBENSwgRDYsIEQ3fSwgW3IwXSENCisNCisJICBWU1QxLlMxNiAgICAgICAgICAgICAge0QwLCBEMSwgRDIsIEQzfSwgW3IxXSENCisJICBWU1QxLlMxNiAgICAgICAgICAgICAge0Q0LCBENSwgRDZ9LCBbcjFdIQ0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICBEN1swXSwgW3IxXSENCisJICBWU1QxLlMxNiAgICAgICAgICAgICAgRDdbMV0sIFtyMV0hDQorDQorDQorDQorICAgICAgICAgIExEUiAgICAgCQlyMTAsIExhYmxlMSAgICAgICAgICAgICAgICAgQCBnZXQgZmlyXzdrIGFkZHJlc3MgICAgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgICAgICAgICAgcjMsIHI4ICAgICAgICAgICAgICAgICAgICAgIEAgY2hhbmdlIG15TWVtQ29weSB0byBDb3B5LCBkdWUgdG8gQ29weSB3aWxsIGNoYW5nZSByMyBjb250ZW50DQorICAgICAgICAgIEFERCAgICAgCSAgICAJcjYsIHIxMywgIzYwICAgICAgICAgICAgICAgIEAgZ2V0IHhbTF9GSVIgLSAxXSBhZGRyZXNzDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXI3LCByMyAgICAgICAgICAgICAgICAgICAgICBAIGdldCBzaWduYWxbaV0NCisgICAgICAgICAgQGZvciAoaSA9IGxnIC0gMUAgaSA+PSAwQCBpLS0pDQorICAgICAgICAgIEB7DQorICAgICAgICAgIEAgICAgIHhbaSArIExfRklSIC0gMV0gPSBzaWduYWxbaV0gPj4gMkANCisgICAgICAgICAgQH0NCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge1EwLCBRMX0sIFtyN10hCQkgICAgQCBzaWduYWxbMF0gIH4gc2lnbmFsWzE1XQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTIsIFEzfSwgW3I3XSEgICAgICAgICAgICAgQCBzaWduYWxbMTZdIH4gc2lnbmFsWzMxXQ0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgICAgICAgICAge1E0LCBRNX0sIFtyN10hICAgICAgICAgICAgIEAgc2lnbmFsWzMyXSB+IHNpZ25hbFs0N10NCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge1E2LCBRN30sIFtyN10hICAgICAgICAgICAgIEAgc2lnbmFsWzQ4XSB+IHNpZ25hbFs2M10NCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge1E4LCBROX0sIFtyN10hICAgICAgICAgICAgIEAgc2lnbmFsWzY0XSB+IHNpZ25hbFs3OV0NCisJICBWU0hSLlMxNiAgICAgICAgICAgICAgUTEwLCBRMCwgIzINCisgICAgICAgICAgVlNIUi5TMTYgICAgICAgICAgICAgIFExMSwgUTEsICMyDQorICAgICAgICAgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMTIsIFEyLCAjMg0KKwkgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMTMsIFEzLCAjMg0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICB7UTEwLCBRMTF9LCBbcjZdIQ0KKwkgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMCwgIFE0LCAjMg0KKwkgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMSwgIFE1LCAjMg0KKwkgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMTAsIFE2LCAjMg0KKwkgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMTEsIFE3LCAjMg0KKwkgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMiwgIFE4LCAjMg0KKwkgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMywgIFE5LCAjMg0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICB7UTEyLCBRMTN9LCBbcjZdIQ0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICB7UTAsIFExfSwgW3I2XSENCisJICBWU1QxLlMxNiAgICAgICAgICAgICAge1ExMCwgUTExfSwgW3I2XSENCisJICBWU1QxLlMxNiAgICAgICAgICAgICAge1EyLCBRM30sIFtyNl0hDQorDQorCSAgTU9WICAgICAgICAgICAgICAgICAgIHIxMiwgcjUNCisgICAgICAgICAgQFNUUiAgICAgCQlyNSwgW3NwLCAjLTRdICAgICAgICAgICAgICAgQCBQVVNIICByNSB0byBzdGFjaw0KKyAgICAgICAgICBAIG5vdCB1c2UgcmVnaXN0ZXJzOiByNCwgcjEwLCByMTIsIHIxNCwgcjUNCisgICAgICAgICAgTU9WICAgICAJCXI0LCByMTMgDQorICAgICAgICAgIE1PViAgICAgCQlyNSwgIzAgICAgICAgICAgICAgICAgICAgICAgQCBpID0gMCAgICANCisgICAgICAgICANCisgICAgICAgICAgQCByNCAtLS0geFtpXSwgcjEwIC0tLS0gZmlyXzZrXzdrDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTAsIFExfSwgW3IxMF0hICAgICAgICAgICBAZmlyXzZrXzdrWzBdICB+IGZpcl82a183a1sxNV0NCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge1EyLCBRM30sIFtyMTBdISAgICAgICAgICAgQGZpcl82a183a1sxNl0gfiBmaXJfNmtfN2tbMzFdDQorICAgICAgICAgIFZNT1YuUzE2ICAgICAgICAgICAgICBEN1szXSwgcjUgICAgICAgICAgICAgICAgICAgICAgICBAc2V0IGZpcl82a183SyA9IDANCisNCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge1E0LCBRNX0sIFtyNF0hICAgICAgICAgICAgQHhbMF0gIH4geFsxNV0NCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge1E2LCBRN30sIFtyNF0hICAgICAgICAgICAgQHhbMTZdIH4gWFszMV0NCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge1E4fSwgW3I0XSEgDQorICAgICAgICAgIFZNT1YuUzE2ICAgICAgICAgICAgICBRMTUsICMwCSAgDQorICAgICAgICAgIA0KK0xPT1BfNks3SzoNCisNCisgICAgICAgICAgVk1VTEwuUzE2ICAgICAgICAgICAgIFE5LEQ4LEQwWzBdICAgICAgICAgICAgICAgICANCisgICAgICAgICAgVk1VTEwuUzE2ICAgICAgICAgICAgIFExMCxEOSxEMVswXSANCisgICAgICAgICAgVk1VTEwuUzE2ICAgICAgICAgICAgIFExMSxEOSxEMFswXSAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIFZNVUxMLlMxNiAgICAgICAgICAgICBRMTIsRDEwLEQxWzBdDQorICAgICAgICAgIFZFWFQuOCAgICAgICAgICAgICAgICBRNCxRNCxRNSwjMg0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICAgICAgUTksRDEwLEQyWzBdDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTAsRDExLEQzWzBdDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTEsRDExLEQyWzBdDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTIsRDEyLEQzWzBdICAgIA0KKyAgICAgICAgICBWRVhULjggICAgICAgICAgICAgICAgUTUsUTUsUTYsIzINCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgICAgIFE5LEQxMixENFswXQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICAgICAgUTEwLEQxMyxENVswXQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICAgICAgUTExLEQxMyxENFswXQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICAgICAgUTEyLEQxNCxENVswXQ0KKyAgICAgICAgICBWRVhULjggICAgICAgICAgICAgICAgUTYsUTYsUTcsIzINCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgICAgIFE5LEQxNCxENlswXQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICAgICAgUTEwLEQxNSxEN1swXQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICAgICAgUTExLEQxNSxENlswXQ0KKwkgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTIsRDE2LEQ3WzBdDQorCSAgVkVYVC44ICAJCVE3LFE3LFE4LCMyIA0KKw0KKwkgIFZNTEFMLlMxNiAJCVE5LEQ4LEQwWzFdICAgICAgICAgICAgICAgIA0KKwkgIFZNTEFMLlMxNiAgICAgCVExMCxEOSxEMVsxXQ0KKwkgIFZFWFQuOCAJCVE4LFE4LFExNSwjMiANCisJICBWTUxBTC5TMTYgCQlRMTEsRDksRDBbMV0gICAgICAgICAgICAgICAgDQorCSAgVk1MQUwuUzE2IAkJUTEyLEQxMCxEMVsxXQ0KKwkgIFZFWFQuOCAgCQlRNCxRNCxRNSwjMg0KKwkgIFZNTEFMLlMxNiAJCVE5LEQxMCxEMlsxXQ0KKwkgIFZNTEFMLlMxNiAJCVExMCxEMTEsRDNbMV0NCisJICBWTUxBTC5TMTYgCQlRMTEsRDExLEQyWzFdDQorCSAgVk1MQUwuUzE2IAkJUTEyLEQxMixEM1sxXSAgICANCisJICBWRVhULjggIAkJUTUsUTUsUTYsIzINCisJICBWTUxBTC5TMTYgCQlROSxEMTIsRDRbMV0NCisJICBWTUxBTC5TMTYgCQlRMTAsRDEzLEQ1WzFdDQorCSAgVk1MQUwuUzE2IAkJUTExLEQxMyxENFsxXQ0KKwkgIFZNTEFMLlMxNiAJCVExMixEMTQsRDVbMV0NCisJICBWRVhULjggIAkJUTYsUTYsUTcsIzINCisJICBWTUxBTC5TMTYgCQlROSxEMTQsRDZbMV0NCisJICBWTUxBTC5TMTYgCQlRMTAsRDE1LEQ3WzFdDQorCSAgVk1MQUwuUzE2IAkJUTExLEQxNSxENlsxXQ0KKwkgIFZNTEFMLlMxNiAJCVExMixEMTYsRDdbMV0NCisJICBWRVhULjggIAkJUTcsUTcsUTgsIzIgDQorDQorCSAgVk1MQUwuUzE2IAkJUTksRDgsRDBbMl0gICAgICAgICAgIA0KKwkgIFZNTEFMLlMxNiAJCVExMCxEOSxEMVsyXQ0KKwkgIFZFWFQuOCAJCVE4LFE4LFExNSwjMiANCisJICBWTUxBTC5TMTYgCQlRMTEsRDksRDBbMl0gICAgICAgICAgIA0KKwkgIFZNTEFMLlMxNiAJCVExMixEMTAsRDFbMl0NCisJICBWRVhULjggIAkJUTQsUTQsUTUsIzINCisJICBWTUxBTC5TMTYgCQlROSxEMTAsRDJbMl0NCisJICBWTUxBTC5TMTYgCQlRMTAsRDExLEQzWzJdDQorCSAgVk1MQUwuUzE2IAkJUTExLEQxMSxEMlsyXQ0KKwkgIFZNTEFMLlMxNiAJCVExMixEMTIsRDNbMl0gICAgDQorCSAgVkVYVC44ICAJCVE1LFE1LFE2LCMyDQorCSAgVk1MQUwuUzE2IAkJUTksRDEyLEQ0WzJdDQorCSAgVk1MQUwuUzE2IAkJUTEwLEQxMyxENVsyXQ0KKwkgIFZNTEFMLlMxNiAJCVExMSxEMTMsRDRbMl0NCisJICBWTUxBTC5TMTYgCQlRMTIsRDE0LEQ1WzJdDQorCSAgVkVYVC44ICAJCVE2LFE2LFE3LCMyDQorCSAgVk1MQUwuUzE2IAkJUTksRDE0LEQ2WzJdDQorCSAgVk1MQUwuUzE2IAkJUTEwLEQxNSxEN1syXQ0KKwkgIFZNTEFMLlMxNiAJCVExMSxEMTUsRDZbMl0NCisJICBWTUxBTC5TMTYgCQlRMTIsRDE2LEQ3WzJdDQorCSAgVkVYVC44ICAJCVE3LFE3LFE4LCMyIA0KKw0KKwkgIFZNTEFMLlMxNiAJCVE5LEQ4LEQwWzNdICAgICAgICAgICAgICANCisJICBWTUxBTC5TMTYgCQlRMTAsRDksRDFbM10NCisJICBWRVhULjggCQlROCxROCxRMTUsIzIgDQorCSAgVk1MQUwuUzE2IAkJUTExLEQ5LEQwWzNdICAgICAgICAgICAgICANCisJICBWTUxBTC5TMTYgCQlRMTIsRDEwLEQxWzNdDQorCSAgVkVYVC44ICAJCVE0LFE0LFE1LCMyDQorCSAgVk1MQUwuUzE2IAkJUTksRDEwLEQyWzNdDQorCSAgVk1MQUwuUzE2IAkJUTEwLEQxMSxEM1szXQ0KKwkgIFZNTEFMLlMxNiAJCVExMSxEMTEsRDJbM10NCisJICBWTUxBTC5TMTYgCQlRMTIsRDEyLEQzWzNdICAgIA0KKwkgIFZFWFQuOCAgCQlRNSxRNSxRNiwjMg0KKwkgIFZNTEFMLlMxNiAJCVE5LEQxMixENFszXQ0KKwkgIFZNTEFMLlMxNiAJCVExMCxEMTMsRDVbM10NCisJICBWTUxBTC5TMTYgCQlRMTEsRDEzLEQ0WzNdDQorCSAgVk1MQUwuUzE2IAkJUTEyLEQxNCxENVszXQ0KKwkgIFZFWFQuOCAgCQlRNixRNixRNywjMg0KKwkgIFZNTEFMLlMxNiAJCVE5LEQxNCxENlszXQ0KKwkgIFZNTEFMLlMxNiAJCVExMCxEMTUsRDdbM10NCisJICBWTUxBTC5TMTYgCQlRMTEsRDE1LEQ2WzNdDQorCSAgVk1MQUwuUzE2IAkJUTEyLEQxNixEN1szXQ0KKwkgIFZFWFQuOCAJCVE3LFE3LFE4LCMyICAgICANCisNCisJICBWTU9WLlMxNiAgCQlEOCxEOQ0KKwkgIFZFWFQuOCAJCVE4LFE4LFExNSwjMiANCisJICBWTU9WLlMxNiAgCQlEOSxEMTANCisJICBWQURELlMzMiAgCQlROSxROSxRMTANCisJICBWTU9WLlMxNiAgCQlEMTAsRDExDQorCSAgVk1PVi5TMTYgIAkJRDExLEQxMg0KKwkgIFZBREQuUzMyICAJCVExMSxRMTEsUTEyDQorCSAgVk1PVi5TMTYgIAkJRDEyLEQxMw0KKwkgIFZRUlNIUk4uUzMyIAkJRDI4LFE5LCMxNQ0KKwkgIFZNT1YuUzE2ICAJCUQxMyxEMTQNCisJICBWTU9WLlMxNiAgCQlEMTQsRDE1DQorCSAgVlFSU0hSTi5TMzIgCQlEMjksUTExLCMxNQ0KKwkgIFZNT1YuUzE2ICAJCUQxNSxEMTYNCisNCisJICBWTEQxLlMxNiAgCQl7UTh9LFtyNF0hDQorCSAgQUREICAgICAgICAgICAgICAgICAgIHI1LCByNSwgIzgNCisJICBDTVAgICAJCXI1LCAjODANCisJICBWU1QxLlMxNiAgCQl7RDI4LEQyOX0sW3IzXSENCisJICBCTFQgICAgIAkJTE9PUF82SzdLDQorDQorICAgICAgICAgIEFERCAgICAgCQlyMCwgcjEzLCAjMTYwICAgICAgICAgICAgICAgQHggKyBsZw0KKwkgIE1PViAgICAgICAgICAgICAgICAgICByMSwgcjEyDQorCSAgQExEUiAgICAgCQlyMSwgW3NwLCAjLTRdICAgICAgICAgICAgICAgQG1lbSBhZGRyZXNzDQorDQorCSAgVkxEMS5TMTYgICAgICAgICAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyMF0hDQorCSAgVkxEMS5TMTYgICAgICAgICAgICAgIHtENCwgRDUsIEQ2LCBEN30sIFtyMF0hDQorDQorCSAgVlNUMS5TMTYgICAgICAgICAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyMV0hDQorCSAgVlNUMS5TMTYgICAgICAgICAgICAgIHtENCwgRDUsIEQ2fSwgW3IxXSENCisJICBWU1QxLlMxNiAgICAgICAgICAgICAgRDdbMF0sIFtyMV0hDQorCSAgVlNUMS5TMTYgICAgICAgICAgICAgIEQ3WzFdLCBbcjFdIQ0KKyAgICAgICAgICAgICAgICAgICAgDQorRmlsdF82a183a19lbmQ6DQorDQorICAgICAgICAgIEFERCAgICAgCQlyMTMsIHIxMywgIzI0MCAgDQorICAgICAgICAgIExETUZEICAgCQlyMTMhLCB7cjAgLSByMTIsIHIxNX0gDQorIA0KK0xhYmxlMToNCisgICAgICAgICAgLndvcmQgICAJCWZpcl82a183aw0KKyAgICAgICAgICBARU5ERlVOQw0KKyAgICAgICAgICAuRU5EDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvTm9ybV9Db3JyX25lb24ucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L05vcm1fQ29ycl9uZW9uLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBlOWFkZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L05vcm1fQ29ycl9uZW9uLnMKQEAgLTAsMCArMSwyNzAgQEAKK0AvKgorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLgorQCAqKgorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKK0AgKioKK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorQCAqKgorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorQCAqLworQAorQHN0YXRpYyB2b2lkIE5vcm1fQ29yciAoV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4Y2l0YXRpb24gYnVmZmVyICAgICAgICAgICovCitAICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgeG5bXSwgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdGFyZ2V0IHZlY3RvciAgICAgICAgICAgICAgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBpbXB1bHNlIHJlc3BvbnNlIG9mIHN5bnRoL3dndCBmaWx0ZXJzICovCitAICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgTF9zdWJmciwgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc3ViLWZyYW1lIGxlbmd0aCAqLworQCAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHRfbWluLCAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG1pbmltdW0gdmFsdWUgb2YgcGl0Y2ggbGFnLiAgICovCitAICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgdF9tYXgsICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWF4aW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBjb3JyX25vcm1bXSkgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBub3JtYWxpemVkIGNvcnJlbGF0aW9uICAgICovCitACisKK0AgcjAgLS0tIGV4Y1tdCitAIHIxIC0tLSB4bltdCitAIHIyIC0tLSBoW10KK0AgcjMgLS0tIExfc3ViZnIKK0AgcjQgLS0tIHRfbWluCitAIHI1IC0tLSB0X21heAorQCByNiAtLS0gY29ycl9ub3JtW10KKworCisJLnNlY3Rpb24gIC50ZXh0CisgICAgICAgIC5nbG9iYWwgICAgTm9ybV9jb3JyX2FzbSAKKyAgICAgICAgLmV4dGVybiAgICBDb252b2x2ZV9hc20KKyAgICAgICAgLmV4dGVybiAgICBJc3FydF9uCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitAIGNvbnN0YW50CitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuZXF1ICAgIEVYQyAgICAgICAgICAgICAgICwgMAorLmVxdSAgICBYTiAgICAgICAgICAgICAgICAsIDQKKy5lcXUgICAgSCAgICAgICAgICAgICAgICAgLCA4CisuZXF1ICAgIExfU1VCRlIgICAgICAgICAgICwgMTIKKy5lcXUgICAgdm9TVEFDSyAgICAgICAgICAgLCAxNzIKKy5lcXUgICAgVF9NSU4gICAgICAgICAgICAgLCAyMTIKKy5lcXUgICAgVF9NQVggICAgICAgICAgICAgLCAyMTYKKy5lcXUgICAgQ09SUl9OT1JNICAgICAgICAgLCAyMjAKKyAgICAgICAgICAgICAgICAgIAorTm9ybV9jb3JyX2FzbToKKworICAgICAgICBTVE1GRCAgICAgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNH0gIAorICAgICAgICBTVUIgICAgICAgICAgICByMTMsIHIxMywgI3ZvU1RBQ0sKKyAgCisgICAgICAgIEFERCAgICAgICAgICAgIHI4LCByMTMsICMyMCAgICAgICAgICAgICAgICAgQGdldCB0aGUgZXhjZltMX1NVQkZSXQorICAgICAgICBMRFIgICAgICAgICAgICByNCwgW3IxMywgI1RfTUlOXSAgICAgICAgICAgIEBnZXQgdF9taW4KKyAgICAgICAgUlNCICAgICAgICAgICAgcjExLCByNCwgIzAgICAgICAgICAgICAgICAgICBAayA9IC10X21pbgorICAgICAgICBBREQgICAgICAgICAgICByNSwgcjAsIHIxMSwgTFNMICMxICAgICAgICAgIEBnZXQgdGhlICZleGNba10gICAKKyAgICAgICAgCisgICAgICAgIEB0cmFuc2ZlciBDb252b2x2ZSBmdW5jdGlvbgorICAgICAgICBTVE1GRCAgICAgICAgICBzcCEsIHtyMCAtIHIzfQorICAgICAgICBNT1YgICAgICAgICAgICByMCwgcjUKKyAgICAgICAgTU9WICAgICAgICAgICAgcjEsIHIyCisgICAgICAgIE1PViAgICAgICAgICAgIHIyLCByOCAgICAgICAgICAgICAgICAgICAgICAgQHIyIC0tLSBleGNmW10KKyAgICAgICAgQkwgICAgICAgICAgICAgQ29udm9sdmVfYXNtCisgICAgICAgIExETUZEICAgICAgICAgIHNwISwge3IwIC0gcjN9CisKKyAgICAgICAgQCByOCAtLS0gZXhjZltdCisKKwlNT1YgICAgICAgICAgICByMTQsIHIxICAgICAgICAgICAgICAgICAgICAgICBAY29weSB4bltdIGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIE1PViAgICAgICAgICAgIHI3LCAjMQorCVZMRDEuUzE2ICAgICAgIHtRMCwgUTF9LCBbcjE0XSEKKwlWTEQxLlMxNiAgICAgICB7UTIsIFEzfSwgW3IxNF0hCisJVkxEMS5TMTYgICAgICAge1E0LCBRNX0sIFtyMTRdIQorCVZMRDEuUzE2ICAgICAgIHtRNiwgUTd9LCBbcjE0XSEKKworICAgICAgICBWTVVMTC5TMTYgICAgICBRMTAsIEQwLCBEMAorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQxLCBEMQorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQyLCBEMgorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQzLCBEMworICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQ0LCBENAorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQ1LCBENQorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQ2LCBENgorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQ3LCBENworICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQ4LCBEOAorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQ5LCBEOQorCVZNTEFMLlMxNiAgICAgIFExMCwgRDEwLCBEMTAKKwlWTUxBTC5TMTYgICAgICBRMTAsIEQxMSwgRDExCisJVk1MQUwuUzE2ICAgICAgUTEwLCBEMTIsIEQxMgorCVZNTEFMLlMxNiAgICAgIFExMCwgRDEzLCBEMTMKKwlWTUxBTC5TMTYgICAgICBRMTAsIEQxNCwgRDE0CisJVk1MQUwuUzE2ICAgICAgUTEwLCBEMTUsIEQxNQorCisgICAgICAgIFZRQURELlMzMiAgICAgIEQyMCwgRDIwLCBEMjEKKyAgICAgICAgVk1PVi5TMzIgICAgICAgcjksICBEMjBbMF0KKyAgICAgICAgVk1PVi5TMzIgICAgICAgcjEwLCBEMjBbMV0KKyAgICAgICAgUUFERCAgICAgICAgICAgcjYsIHI5LCByMTAgCisJUUFERCAgICAgICAgICAgcjYsIHI2LCByNgorICAgICAgICBRQUREICAgICAgICAgICByOSwgcjYsIHI3ICAgICAgICAgICAgICAgICAgIEBMX3RtcCA9IChMX3RtcCA8PCAxKSArIDE7CisJQ0xaICAgICAgICAgICAgcjcsIHI5CisJU1VCICAgICAgICAgICAgcjYsIHI3LCAjMSAgICAgICAgICAgICAgICAgICBAZXhwID0gbm9ybV9sKExfdG1wKQorICAgICAgICBSU0IgICAgICAgICAgICByNywgcjYsICMzMiAgICAgICAgICAgICAgICAgIEBleHAgPSAzMiAtIGV4cAorCU1PViAgICAgICAgICAgIHI2LCByNywgQVNSICMxICAgICAgICAgCisJUlNCICAgICAgICAgICAgcjcsIHI2LCAjMCAgICAgICAgICAgICAgICAgICBAc2NhbGUgPSAtKGV4cCA+PiAxKQorCQorICAgICAgICBAbG9vcCBmb3IgZXZlcnkgcG9zc2libGUgcGVyaW9kCisJQGZvcih0ID0gdF9taW5AIHQgPD0gdF9tYXhAIHQrKykKKwlAcjcgLS0tIHNjYWxlIHI0IC0tLSB0X21pbiByOCAtLS0gZXhjZltdCisKK0xPT1BGT1I6CQorCUFERCAgICAgICAgICAgIHIxNCwgcjEzLCAjMjAgICAgICAgICAgICAgICAgQGNvcHkgb2YgZXhjZltdCisJTU9WICAgICAgICAgICAgcjEyLCByMSAgICAgICAgICAgICAgICAgICAgICBAY29weSBvZiB4bltdCisJTU9WICAgICAgICAgICAgcjgsICMweDgwMDAKKworICAgICAgICBWTEQxLlMxNiAgICAgICB7UTAsIFExfSwgW3IxNF0hICAgICAgICAgICAgICAgICBAIGxvYWQgMTYgZXhjZltdCisgICAgICAgIFZMRDEuUzE2ICAgICAgIHtRMiwgUTN9LCBbcjE0XSEgICAgICAgICAgICAgICAgIEAgbG9hZCAxNiBleGNmW10gICAgICAgCisgICAgICAgIFZMRDEuUzE2ICAgICAgIHtRNCwgUTV9LCBbcjEyXSEgICAgICAgICAgICAgICAgIEAgbG9hZCAxNiB4W10KKwlWTEQxLlMxNiAgICAgICB7UTYsIFE3fSwgW3IxMl0hICAgICAgICAgICAgICAgICBAIGxvYWQgMTYgeFtdCisgICAgICAgIFZNVUxMLlMxNiAgICBRMTAsIEQwLCBEMCAgICAgICAgICAgICAgICAgICAgICBATF90bXAxICs9IGV4Y2ZbXSAqIGV4Y2ZbXQorICAgICAgICBWTVVMTC5TMTYgICAgUTExLCBEMCwgRDggICAgICAgICAgICAgICAgICAgICAgQExfdG1wICArPSB4W10gKiBleGNmW10gICAgICAgICAgICAgICAgICAgCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQxLCBEMQorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBEMSwgRDkKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMCwgRDIsIEQyCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTEsIEQyLCBEMTAgICAgICAgIAorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBEMywgRDMKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDMsIEQxMQorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBENCwgRDQKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDQsIEQxMgorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBENSwgRDUKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDUsIEQxMworICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBENiwgRDYKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDYsIEQxNAorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBENywgRDcKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDcsIEQxNQorCisJVkxEMS5TMTYgICAgICAge1EwLCBRMX0sIFtyMTRdISAgICAgICAgICAgICAgICAgQCBsb2FkIDE2IGV4Y2ZbXQorICAgICAgICBWTEQxLlMxNiAgICAgICB7UTIsIFEzfSwgW3IxNF0hICAgICAgICAgICAgICAgICBAIGxvYWQgMTYgZXhjZltdCisgICAgICAgIFZMRDEuUzE2ICAgICAgIHtRNCwgUTV9LCBbcjEyXSEgICAgICAgICAgICAgICAgIEAgbG9hZCAxNiB4W10KKyAgICAgICAgVkxEMS5TMTYgICAgICAge1E2LCBRN30sIFtyMTJdISAgICAgICAgICAgICAgICAgQCBsb2FkIDE2IHhbXQorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBEMCwgRDAKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDAsIEQ4CisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQxLCBEMQorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBEMSwgRDkKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMCwgRDIsIEQyCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTEsIEQyLCBEMTAgICAgICAgIAorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBEMywgRDMKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDMsIEQxMQorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBENCwgRDQKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDQsIEQxMgorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBENSwgRDUKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDUsIEQxMworICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBENiwgRDYKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDYsIEQxNAorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBENywgRDcKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDcsIEQxNQorCisgICAgICAgIFZRQURELlMzMiAgICAgIEQyMCwgRDIwLCBEMjEKKyAgICAgICAgVlFBREQuUzMyICAgICAgRDIyLCBEMjIsIEQyMworCisJVlBBREQuUzMyICAgICAgRDIwLCBEMjAsIEQyMCAgICAgICAgICAgICAgICAgICBARDIwWzBdIC0tLSBMX3RtcDEgPDwgMQorCVZQQURELlMzMiAgICAgIEQyMiwgRDIyLCBEMjIgICAgICAgICAgICAgICAgICAgQEQyMlswXSAtLS0gTF90bXAgPDwgMQorCisJVk1PVi5TMzIgICAgICAgcjYsIEQyMFswXQorICAgICAgICBWTU9WLlMzMiAgICAgICByNSwgRDIyWzBdCQorCisJQHI1IC0tLSBMX3RtcCwgcjYgLS0tIExfdG1wMQorCU1PViAgICAgICAgICAgIHIxMCwgIzEKKwlBREQgICAgICAgICAgICByNSwgcjEwLCByNSwgTFNMICMxICAgICAgICAgICAgICAgICAgICAgQExfdG1wID0gKExfdG1wIDw8IDEpICsgMQorCUFERCAgICAgICAgICAgIHI2LCByMTAsIHI2LCBMU0wgIzEgICAgICAgICAgICAgICAgICAgICBATF90bXAxID0gKExfdG1wMSA8PCAxKSArIDEKKyAKKwlDTFogICAgICAgICAgICByMTAsIHI1ICAgICAgICAKKwlDTVAgICAgICAgICAgICByNSwgIzAKKwlSU0JMVCAgICAgICAgICByMTEsIHI1LCAjMAorCUNMWkxUICAgICAgICAgIHIxMCwgcjExCisJU1VCICAgICAgICAgICAgcjEwLCByMTAsICMxICAgICAgICAgICAgICAgICBAZXhwID0gbm9ybV9sKExfdG1wKQorICAgICAKKwlNT1YgICAgICAgICAgICByNSwgcjUsIExTTCByMTAgICAgICAgICAgICAgIEBMX3RtcCA9IChMX3RtcCA8PCBleHApCisJUlNCICAgICAgICAgICAgcjEwLCByMTAsICMzMCAgICAgICAgICAgICAgICBAZXhwX2NvcnIgPSAzMCAtIGV4cAorCU1PViAgICAgICAgICAgIHIxMSwgcjUsIEFTUiAjMTYgICAgICAgICAgICAgQGNvcnIgPSBleHRyYWN0X2goTF90bXApCisKKwlDTFogICAgICAgICAgICByNSwgcjYKKwlTVUIgICAgICAgICAgICByNSwgcjUsICMxCisJTU9WICAgICAgICAgICAgcjYsIHI2LCBMU0wgcjUgICAgICAgICAgICAgICBATF90bXAgPSAoTF90bXAxIDw8IGV4cCkKKwlSU0IgICAgICAgICAgICByNSwgcjUsICMzMCAgICAgICAgICAgICAgICAgIEBleHBfbm9ybSA9IDMwIC0gZXhwCisKKwlAcjEwIC0tLSBleHBfY29yciwgcjExIC0tLSBjb3JyCisJQHI2ICAtLS0gTF90bXAsIHI1IC0tLSBleHBfbm9ybQorCisJQElzcXJ0X24oJkxfdG1wLCAmZXhwX25vcm0pCisKKwlNT1YgICAgICAgICAgICByMTQsIHIwCisJTU9WICAgICAgICAgICAgcjEyLCByMSAKKworICAgICAgICBTVE1GRCAgICAgICAgICBzcCEsIHtyMCAtIHI0LCByNyAtIHIxMiwgcjE0fQorCUFERCAgICAgICAgICAgIHIxLCBzcCwgIzQKKwlBREQgICAgICAgICAgICByMCwgc3AsICMwCisJU1RSICAgICAgICAgICAgcjYsIFtzcF0KKwlTVFJIICAgICAgICAgICByNSwgW3NwLCAjNF0KKwlCTCAgICAgICAgICAgICBJc3FydF9uCisJTERSICAgICAgICAgICAgcjYsIFtzcF0KKwlMRFJTSCAgICAgICAgICByNSwgW3NwLCAjNF0KKyAgICAgICAgTERNRkQgICAgICAgICAgc3AhLCB7cjAgLSByNCwgcjcgLSByMTIsIHIxNH0KKwlNT1YgICAgICAgICAgICByMCwgcjE0CisJTU9WICAgICAgICAgICAgcjEsIHIxMgorCisKKwlNT1YgICAgICAgICAgICByNiwgcjYsIEFTUiAjMTYgICAgICAgICAgICAgIEBub3JtID0gZXh0cmFjdF9oKExfdG1wKQorCU1VTCAgICAgICAgICAgIHIxMiwgcjYsIHIxMQorCUFERCAgICAgICAgICAgIHIxMiwgcjEyLCByMTIgICAgICAgICAgICAgICAgQExfdG1wID0gdm9fTF9tdWx0KGNvcnIsIG5vcm0pCisgIAorCUFERCAgICAgICAgICAgIHI2LCByMTAsIHI1CisJQUREICAgICAgICAgICAgcjYsIHI2LCByNyAgICAgICAgICAgICAgICAgICBAZXhwX2NvcnIgKyBleHBfbm9ybSArIHNjYWxlCisKKyAgICAgICAgQ01QICAgICAgICAgICAgcjYsICMwCisgICAgICAgIFJTQkxUICAgICAgICAgIHI2LCByNiwgIzAKKwlNT1ZMVCAgICAgICAgICByMTIsIHIxMiwgQVNSIHI2CisgICAgICAgIE1PVkdUICAgICAgICAgIHIxMiwgcjEyLCBMU0wgcjYgICAgICAgICAgICAgQExfdG1wID0gTF9zaGwoTF90bXAsIGV4cF9jb3JyICsgZXhwX25vcm0gKyBzY2FsZSkKKworICAgICAgICBBREQgICAgICAgICAgICByMTIsIHIxMiwgcjgKKyAgICAgICAgTU9WICAgICAgICAgICAgcjEyLCByMTIsIEFTUiAjMTYgICAgICAgICAgICBAdm9fcm91bmQoTF90bXApCisKKyAgICAgICAgTERSICAgICAgICAgICAgcjUsIFtyMTMsICNDT1JSX05PUk1dICAgICAgICBAIGdldCBjb3JyX25vcm0gYWRkcmVzcworCUxEUiAgICAgICAgICAgIHI2LCBbcjEzLCAjVF9NQVhdICAgICAgICAgICAgQCBnZXQgdF9tYXgKKwlBREQgICAgICAgICAgICByMTAsIHI1LCByNCwgTFNMICMxICAgICAgICAgIEAgZ2V0IGNvcnJfbm9ybVt0XSBhZGRyZXNzCisJU1RSSCAgICAgICAgICAgcjEyLCBbcjEwXSAgICAgICAgICAgICAgICAgICBAIGNvcnJfbm9ybVt0XSA9IHZvX3JvdW5kKExfdG1wKQorCisJQ01QICAgICAgICAgICAgcjQsIHI2CisJQkVRICAgICAgICAgICAgTm9ybV9jb3JyX2FzbV9lbmQKKyAKKwlBREQgICAgICAgICAgICByNCwgcjQsICMxICAgICAgICAgICAgICAgICAgIEAgdF9taW4gKysgCisJUlNCICAgICAgICAgICAgcjUsIHI0LCAjMCAgICAgICAgICAgICAgICAgICBAIGsKKworCU1PViAgICAgICAgICAgIHI2LCAjNjMgICAgICAgICAgICAgICAgICAgICAgQCBpID0gNjMKKwlNT1YgICAgICAgICAgICByOCwgcjAgICAgICAgICAgICAgICAgICAgICAgIEAgZXhjW10KKwlNT1YgICAgICAgICAgICByOSwgcjIgICAgICAgICAgICAgICAgICAgICAgIEAgaFtdCisJQUREICAgICAgICAgICAgcjEwLCByMTMsICMyMCAgICAgICAgICAgICAgICBAIGV4Y2ZbXQorCisJQUREICAgICAgICAgICAgcjgsIHI4LCByNSwgTFNMICMxICAgICAgICAgICBAIGV4Y1trXSBhZGRyZXNzCisJQUREICAgICAgICAgICAgcjksIHI5LCByNiwgTFNMICMxICAgICAgICAgICBAIGhbaV0gYWRkcmVzcworCUFERCAgICAgICAgICAgIHIxMCwgcjEwLCByNiwgTFNMICMxICAgICAgICAgQCBleGNmW2ldIGFkZHJlc3MKKwlMRFJTSCAgICAgICAgICByMTEsIFtyOF0gICAgICAgICAgICAgICAgICAgIEAgdG1wID0gZXhjW2tdCisKK0xPT1BLOgorICAgICAgICBMRFJTSCAgICAgICAgICByOCwgW3I5XSwgIy0yICAgICAgICAgICAgICAgIEAgbG9hZCBoW2ldCisJTERSU0ggICAgICAgICAgcjEyLCBbcjEwLCAjLTJdICAgICAgICAgICAgICBAIGxvYWQgZXhjZltpIC0gMV0KKwlNVUwgICAgICAgICAgICByMTQsIHIxMSwgcjgKKwlNT1YgICAgICAgICAgICByOCwgcjE0LCBBU1IgIzE1CisJQUREICAgICAgICAgICAgcjE0LCByOCwgcjEyCisJU1RSSCAgICAgICAgICAgcjE0LCBbcjEwXSwgIy0yCisJU1VCUyAgICAgICAgICAgcjYsIHI2LCAjMQorCUJHVCAgICAgICAgICAgIExPT1BLCisKKwlMRFJTSCAgICAgICAgICByOCwgW3I5XSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBoWzBdCisJTVVMICAgICAgICAgICAgcjE0LCByMTEsIHI4CisgICAgICAgIExEUiAgICAgICAgICAgIHI2LCBbcjEzLCAjVF9NQVhdICAgICAgICAgICAgQCBnZXQgdF9tYXgKKwlNT1YgICAgICAgICAgICByOCwgcjE0LCBBU1IgIzE1CisJU1RSSCAgICAgICAgICAgcjgsIFtyMTBdICAgICAgICAgICAgICAgICAgICAKKworCUNNUCAgICAgICAgICAgIHI0LCByNgorCUJMRSAgICAgICAgICAgIExPT1BGT1IKKworTm9ybV9jb3JyX2FzbV9lbmQ6IAorICAgICAgICAKKyAgICAgICAgQUREICAgICAgICAgICAgcjEzLCByMTMsICN2b1NUQUNLICAgICAgCisgICAgICAgIExETUZEICAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fQorICAgIAorICAgICAgICAuRU5ECisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvU3luX2ZpbHRfMzJfbmVvbi5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvU3luX2ZpbHRfMzJfbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMTc2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9TeW5fZmlsdF8zMl9uZW9uLnMKQEAgLTAsMCArMSwxMzMgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQA0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK0B2b2lkIFN5bl9maWx0XzMyKA0KK0AgICAgIFdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGFbbSsxXSBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAqLw0KK0AgICAgIFdvcmQxNiBtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG9yZGVyIG9mIExQIGZpbHRlciAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFuZXc6IGV4Y2l0YXRpb24gKGV4Y1tpXSA+PiBRbmV3KSAgICAqLw0KK0AgICAgIFdvcmQxNiBRbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4YyBzY2FsaW5nID0gMChtaW4pIHRvIDgobWF4KSAqLw0KK0AgICAgIFdvcmQxNiBzaWdfaGlbXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBoaWdoICAgICAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBzaWdfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBsb3cgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBsZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAqLw0KK0ApDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCBhW10gICAgICAtLS0gcjANCitAIG0gICAgICAgIC0tLSByMQ0KK0AgZXhjW10gICAgLS0tIHIyDQorQCBRbmV3ICAgICAtLS0gcjMNCitAIHNpZ19oaVtdIC0tLSByNA0KK0Agc2lnX2xvW10gLS0tIHI1DQorQCBsZyAgICAgICAtLS0gcjYNCisNCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0IA0KKyAgICAgICAgICAuZ2xvYmFsICAgU3luX2ZpbHRfMzJfYXNtDQorDQorU3luX2ZpbHRfMzJfYXNtOg0KKw0KKyAgICAgICAgICBTVE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjQsICBbcjEzLCAjNDBdICAgICAgICAgICAgICAgICAgQCBnZXQgc2lnX2hpW10gYWRkcmVzcw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHI1LCAgW3IxMywgIzQ0XSAgICAgICAgICAgICAgICAgIEAgZ2V0IHNpZ19sb1tdIGFkZHJlc3MNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgIFtyMF0sICMyICAgICAgICAgICAgICAgICAgICBAIGxvYWQgQXFbMF0NCisgICAgICAgICAgQUREICAgICAgICAgICByNywgIHIzLCAjNCAgICAgICAgICAgICAgICAgICAgICBAIDQgKyBRX25ldw0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHIzLCByNiwgQVNSIHI3ICAgICAgICAgICAgICAgICAgIEAgYTAgPSBBcVswXSA+PiAoNCArIFFfbmV3KQ0KKw0KKwkgIFNVQiAgICAgICAgICAgcjEwLCByNCwgIzMyICAgICAgICAgICAgICAgICAgICAgQCBzaWdfaGlbLTE2XSBhZGRyZXNzDQorCSAgU1VCICAgICAgICAgICByMTEsIHI1LCAjMzIgICAgICAgICAgICAgICAgICAgICBAIHNpZ19sb1stMTZdIGFkZHJlc3MNCisNCisJICBWTEQxLlMxNiAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyMF0hICAgICAgICAgIEBhWzFdIH4gYVsxNl0gDQorICANCisgICAgICAgICAgTU9WICAgICAgICAgICByOCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIGkgPSAwDQorDQorCSAgVkxEMS5TMTYgICAgICB7RDQsIEQ1LCBENiwgRDd9LCBbcjEwXSEgICAgICAgICBAIHNpZ19oaVstMTZdIH4gc2lnX2hpWy0xXQ0KKyAgICAgICAgICBWUkVWNjQuMTYgICAgIEQwLCBEMA0KKyAgICAgICAgICBWUkVWNjQuMTYgICAgIEQxLCBEMQ0KKwkgIFZMRDEuUzE2ICAgICAge0Q4LCBEOSwgRDEwLCBEMTF9LCBbcjExXSEgICAgICAgQCBzaWdfbG9bLTE2XSB+IHNpZ19sb1stMV0NCisgICAgICAgICAgVlJFVjY0LjE2ICAgICBEMiwgRDINCisgICAgICAgICAgVlJFVjY0LjE2ICAgICBEMywgRDMJDQorICAgICAgICAgIFZEVVAuUzMyICAgICAgUTE1LCByOA0KKyAgICAgICAgICAgICAgDQorU1lOX0xPT1A6DQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyMl0sICMyICAgICAgICAgICAgICAgICAgICAgQGV4Y1tpXQ0KKwkgIEBMX3RtcCA9IExfbXN1KExfdG1wLCBzaWdfbG9baSAtIGpdLCBhW2pdKUANCisJICBWTVVMTC5TMTYgICAgIFExMCwgRDgsIEQzDQorCSAgVkVYVC44ICAgICAgICBEOCwgRDgsIEQ5LCAjMg0KKwkgIFZNTEFMLlMxNiAgICAgUTEwLCBEOSwgRDINCisJICBWTUxBTC5TMTYgICAgIFExMCwgRDEwLCBEMQ0KKwkgIFZNTEFMLlMxNiAgICAgUTEwLCBEMTEsIEQwDQorDQorCSAgVkVYVC44ICAgICAgICBEOSwgRDksIEQxMCwgIzINCisJICBWRVhULjggICAgICAgIEQxMCwgRDEwLCBEMTEsICMyDQorCSAgDQorCSAgVlBBREQuUzMyICAgICBEMjgsIEQyMCwgRDIxDQorICAgICAgICAgIE1VTCAgICAgICAgICAgcjEyLCByNiwgcjMgICAgICAgICAgICAgICAgICAgICAgQGV4Y1tpXSAqIGEwDQorCSAgVlBBREQuUzMyICAgICBEMjksIEQyOCwgRDI4DQorCSAgVkRVUC5TMzIgICAgICBRMTAsIEQyOVswXSAgICAgICAgICAgICAgICAgICAgICBAcmVzdWx0MQ0KKyAgICAgICAgICANCisJICBWTVVMTC5TMTYgICAgIFExMSwgRDQsIEQzDQorCSAgVk1MQUwuUzE2ICAgICBRMTEsIEQ1LCBEMg0KKyAgICAgICAgICBWU1VCLlMzMiAgICAgIFExMCwgUTE1LCBRMTANCisJICBATF90bXAgPSBMX21zdShMX3RtcCwgc2lnX2hpW2kgLSBqXSwgYVtqXSlADQorDQorCSAgVk1MQUwuUzE2ICAgICBRMTEsIEQ2LCBEMQ0KKwkgIFZFWFQuOCAgICAgICAgRDQsIEQ0LCBENSwgIzINCisJICBWTUxBTC5TMTYgICAgIFExMSwgRDcsIEQwDQorDQorDQorCSAgVkVYVC44ICAgICAgICBENSwgRDUsIEQ2LCAjMg0KKwkgIFZFWFQuOCAgICAgICAgRDYsIEQ2LCBENywgIzINCisNCisJICBWUEFERC5TMzIgICAgIEQyOCwgRDIyLCBEMjMNCisgICAgICAgICAgVlBBREQuUzMyICAgICBEMjksIEQyOCwgRDI4DQorICAgICAgICAgIE1PViAgICAgICAgICAgcjE0LCByMTIsIExTTCAjMSAgICAgICAgICAgICAgICAgQGV4Y1tpXSAqIGEwIDw8IDENCisgICAgICAgICAgVkRVUC5TMzIgICAgICBRMTEsIEQyOVswXSAgICAgICAgICAgICAgICAgICAgICBAcmVzdWx0Mg0KKw0KKw0KKw0KKwkgIFZTSFIuUzMyICAgICAgUTEwLCBRMTAsICMxMSAgICAgICAgICAgICAgICAgICAgQHJlc3VsdDEgPj49IDExDQorCSAgVlNITC5TMzIgICAgICBRMTEsIFExMSwgIzEgICAgICAgICAgICAgICAgICAgICBAcmVzdWx0MiA8PD0gMQ0KKwkgIFZEVVAuUzMyICAgICAgUTEyLCByMTQgICAgICAgICAgICAgICAgICAgICAgICAgDQorCSAgVkFERC5TMzIgICAgICBRMTIsIFExMiwgUTEwICAgICAgICAgICAgICAgICAgICBATF90bXAgPSBMX3RtcCAtIChyZXN1bHQxID4+PSAxMSkgLSAocmVzdWx0MiA8PD0gMSkNCisJICBWU1VCLlMzMiAgICAgIFExMiwgUTEyLCBRMTENCisNCisJICBWU0hMLlMzMiAgICAgIFExMiwgUTEyLCAjMyAgICAgICAgICAgICAgICAgICAgIEBMX3RtcCA8PD0gMw0KKw0KKw0KKwkgIFZTSFJOLlMzMiAgICAgRDIwLCBRMTIsICMxNiAgICAgICAgICAgICAgICAgICAgQHNpZ19oaVtpXSA9IExfdG1wID4+IDE2QA0KKwkgIFZNT1YuUzE2ICAgICAgcjEwLCBEMjBbMF0NCisJICBWU0hSLlMzMiAgICAgIFExMiwgUTEyLCAjNCAgICAgICAgICAgICAgICAgICAgIEBMX3RtcCA+Pj0gNA0KKwkgIFZFWFQuOCAgICAgICAgRDcsIEQ3LCBEMjAsICMyDQorCSAgU1RSSCAgICAgICAgICByMTAsIFtyNF0sICMyICAgICAgICAgICAgICAgICAgICBAc3RvcmUgc2lnX2hpW2ldDQorICAgICAgICAgIFZNT1YuUzMyICAgICAgcjExLCBEMjRbMF0gICAgICAgICAgICAgICAgICAgICAgQHIxMSAtLS0gTF90bXAgPj49IDQNCisJICBBREQgICAgICAgICAgIHI4LCByOCwgIzENCisJICBTVUIgICAgICAgICAgIHIxMiwgcjExLCByMTAsIExTTCAjMTINCisJICBATU9WICAgICAgICAgICByMTEsIHIxMiwgQVNSICMxNiAgICAgICAgICAgICAgICBAc2lnX2xvW2ldDQorCSAgVkRVUC5TMTYgICAgICBEMjEsIHIxMg0KKwkgIFZFWFQuOCAgICAgICAgRDExLCBEMTEsIEQyMSwgIzINCisJICBTVFJIICAgICAgICAgIHIxMiwgW3I1XSwgIzIgICAgICAgICAgICAgICAgICAgIEBzdHJvZSBzaWdfbG9baV0NCisNCisgICAgICAgICAgQ01QICAgICAgICAgICByOCwgIzY0DQorICAgICAgICAgIEJMVCAgICAgICAgICAgU1lOX0xPT1AgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgIA0KK1N5bl9maWx0XzMyX2VuZDoNCisJCSAgICAgDQorICAgICAgICAgIExETUZEICAgCSAgICByMTMhLCB7cjQgLSByMTIsIHIxNX0gDQorICAgICAgICAgIEBFTkRGVU5DDQorICAgICAgICAgIC5FTkQNCisgDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvY29udm9sdmVfbmVvbi5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvY29udm9sdmVfbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4OWUzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9jb252b2x2ZV9uZW9uLnMKQEAgLTAsMCArMSwxNzggQEAKK0AvKgorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLgorQCAqKgorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKK0AgKioKK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorQCAqKgorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorQCAqLworQAorQCp2b2lkIENvbnZvbHZlICgKK0AqICAgIFdvcmQxNiB4W10sICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AqICAgIFdvcmQxNiBoW10sICAgICAgICAvKiAoaSkgICAgIDogaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AqICAgIFdvcmQxNiB5W10sICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AqICAgIFdvcmQxNiBMICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AqKQorQCAKK0AgcjAgLS0tIHhbXQorQCByMSAtLS0gaFtdCitAIHIyIC0tLSB5W10KK0AgcjMgLS0tIEwKKworCS5zZWN0aW9uICAudGV4dCAKKyAgICAgICAgLmdsb2JhbCAgIENvbnZvbHZlX2FzbSAKKworQ29udm9sdmVfYXNtOgorCisgICAgICAgIFNUTUZEICAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE0fSAgCisgICAgICAgIE1PViAgICAgICAgICAgIHIzLCAgIzAgICAgICAgICAgICAgICAgICAgICAgICAKKwlNT1YgICAgICAgICAgICByMTEsICMweDgwMDAKKyAgICAgICAgCitMT09QOiAKKyAgICAgICAgQE1PViAgICAgICAgICAgIHI4LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIHMgPSAwCisgICAgICAgIEFERCAgICAgICAgICAgIHI0LCByMSwgcjMsIExTTCAjMSAgICAgICAgICAgICAgICBAIHRtcEggYWRkcmVzcworICAgICAgICBBREQgICAgICAgICAgICByNSwgcjMsICMxICAgICAgICAgICAgICAgICAgICAgICAgQCBpID0gbiArIDEKKyAgICAgICAgTU9WICAgICAgICAgICAgcjYsIHIwCisgICAgICAgIExEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEwLCBbcjRdICAgICAgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorICAgICAgICBTVUIgICAgICAgICAgICByNSwgcjUsICMxCisgICAgICAgIFZNT1YuUzMyICAgICAgIFExMCwgIzAgCisgICAgICAgIE1VTCAgICAgICAgICAgIHI4LCAgcjksIHIxMCAKKworTE9PUDE6ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgQ01QICAgICAgICAgICAgcjUsICMwCisgICAgICAgIEJMRSAgICAgICAgICAgIEwxCisgICAgICAgIFNVQiAgICAgICAgICAgIHI0LCByNCwgIzgKKyAgICAgICAgTU9WICAgICAgICAgICAgcjksIHI0CisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQwLCBbcjZdISAgIAorICAgICAgICBWTEQxLlMxNiAgICAgICBEMSwgW3I5XSEKKyAgICAgICAgVlJFVjY0LjE2ICAgICAgRDEsIEQxCisgICAgICAgIFNVQlMgICAgICAgICAgIHI1LCByNSwgIzQgIAorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQwLCBEMSAgICAgICAgIAorICAgICAgICBCICAgICAgICAgICAgICBMT09QMSAgICAKK0wxOiAgICAgICAgICAgICAgICAgIAorICAgICAgICBWQURELlMzMiAgICAgICBEMjAsIEQyMCwgRDIxCisgICAgICAgIFZQQURELlMzMiAgICAgIEQyMCwgRDIwLCBEMjAKKyAgICAgICAgVk1PVi5TMzIgICAgICAgcjUsIEQyMFswXQorICAgICAgICBBREQgICAgICAgICAgICByNSwgcjUsIHI4CisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMTEsIHI1LCBMU0wgIzEKKyAgICAgICAgTU9WICAgICAgICAgICAgcjUsIHI1LCBMU1IgIzE2ICAgICAgICAgICAgICAgICAgIEBleHRyYWN0X2gocykKKyAgICAgICAgQUREICAgICAgICAgICAgcjMsIHIzLCAjMQorICAgICAgICBTVFJIICAgICAgICAgICByNSwgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICAgQHlbbl0KKworCisgICAgICAgIEBNT1YgICAgICAgICAgICByOCwgIzAKKyAgICAgICAgQUREICAgICAgICAgICAgcjQsIHIxLCByMywgTFNMICMxICAgICAgICAgICAgICAgIEB0bXBIIGFkZHJlc3MKKyAgICAgICAgQUREICAgICAgICAgICAgcjUsIHIzLCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByNiwgcjAKKyAgICAgICAgTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworICAgICAgICBMRFJTSCAgICAgICAgICByMTAsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBMRFJTSCAgICAgICAgICByMTIsIFtyNl0sICMyCisgICAgICAgIExEUlNIICAgICAgICAgIHIxNCwgW3I0XQorCisgICAgICAgIE1VTCAgICAgICAgICAgIHI4LCByOSwgcjEwCisgICAgICAgIFNVQiAgICAgICAgICAgIHI1LCByNSwgIzIKKyAgICAgICAgTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOAorICAgICAgICAKKyAgICAgICAgVk1PVi5TMzIgICAgICAgUTEwLCAjMAorTE9PUDI6CisgICAgICAgIENNUCAgICAgICAgICAgIHI1LCAjMAorICAgICAgICBCTEUgICAgICAgICAgICBMMgorICAgICAgICBTVUIgICAgICAgICAgICByNCwgcjQsICM4CisgICAgICAgIE1PViAgICAgICAgICAgIHI5LCByNAorICAgICAgICBWTEQxLlMxNiAgICAgICBEMCwgW3I2XSEgICAKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDEsIFtyOV0hCisgICAgICAgIFNVQlMgICAgICAgICAgIHI1LCByNSwgIzQKKyAgICAgICAgVlJFVjY0LjE2ICAgICAgRDEsIEQxCisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDAsIEQxIAorICAgICAgICBCICAgICAgICAgICAgICBMT09QMgorTDI6CisgICAgICAgIFZBREQuUzMyICAgICAgIEQyMCwgRDIwLCBEMjEKKyAgICAgICAgVlBBREQuUzMyICAgICAgRDIwLCBEMjAsIEQyMAorICAgICAgICBWTU9WLlMzMiAgICAgICByNSwgRDIwWzBdCisgICAgICAgIEFERCAgICAgICAgICAgIHI4LCByOCwgcjUKKyAgICAgICAgQUREICAgICAgICAgICAgcjgsIHIxMSwgcjgsIExTTCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByOCwgcjgsIExTUiAjMTYgICAgICAgICAgICAgICAgICAgQGV4dHJhY3RfaChzKQorICAgICAgICBBREQgICAgICAgICAgICByMywgcjMsICMxICAKKyAgICAgICAgU1RSSCAgICAgICAgICAgcjgsIFtyMl0sICMyICAgICAgICAgICAgICAgICAgICAgIEB5W25dCisKKworICAgICAgICBATU9WICAgICAgICAgICAgcjgsICMwCisgICAgICAgIEFERCAgICAgICAgICAgIHI0LCByMSwgcjMsIExTTCAjMQorICAgICAgICBBREQgICAgICAgICAgICByNSwgcjMsICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI2LCByMAorICAgICAgICBMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMiwgW3I2XSwgIzIKKyAgICAgICAgTERSU0ggICAgICAgICAgcjE0LCBbcjRdLCAjLTIKKyAgICAgICAgTVVMICAgICAgICAgICAgcjgsIHI5LCByMTAKKyAgICAgICAgTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMgorICAgICAgICBMRFJTSCAgICAgICAgICByMTAsIFtyNF0KKyAgICAgICAgTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOCAKKyAgICAgICAgU1VCICAgICAgICAgICAgcjUsIHI1LCAjMworICAgICAgICBNTEEgICAgICAgICAgICByOCwgcjksIHIxMCwgcjgKKworICAgICAgICBWTU9WLlMzMiAgICAgICBRMTAsICMwCitMT09QMzoKKyAgICAgICAgQ01QICAgICAgICAgICAgcjUsICMwCisgICAgICAgIEJMRSAgICAgICAgICAgIEwzCisgICAgICAgIFNVQiAgICAgICAgICAgIHI0LCByNCwgIzgKKyAgICAgICAgTU9WICAgICAgICAgICAgcjksIHI0CisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQwLCBbcjZdISAgIAorICAgICAgICBWTEQxLlMxNiAgICAgICBEMSwgW3I5XSEKKyAgICAgICAgVlJFVjY0LjE2ICAgICAgRDEsIEQxCisgICAgICAgIFNVQlMgICAgICAgICAgIHI1LCByNSwgIzQKKyAgICAgICAgVk1MQUwuUzE2ICAgICAgUTEwLCBEMCwgRDEgCisgICAgICAgIEIgICAgICAgICAgICAgIExPT1AzICAgCisKK0wzOgorICAgICAgICBWQURELlMzMiAgICAgICBEMjAsIEQyMCwgRDIxCisgICAgICAgIFZQQURELlMzMiAgICAgIEQyMCwgRDIwLCBEMjAKKyAgICAgICAgVk1PVi5TMzIgICAgICAgcjUsIEQyMFswXQorICAgICAgICBBREQgICAgICAgICAgICByOCwgcjgsIHI1CisgICAgICAgIEFERCAgICAgICAgICAgIHI4LCByMTEsIHI4LCBMU0wgIzEKKyAgICAgICAgTU9WICAgICAgICAgICAgcjgsIHI4LCBMU1IgIzE2ICAgICAgICAgICAgICAgICAgIEBleHRyYWN0X2gocykKKyAgICAgICAgQUREICAgICAgICAgICAgcjMsIHIzLCAjMQorICAgICAgICBTVFJIICAgICAgICAgICByOCwgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICAgQHlbbl0KKworICAgICAgICBBREQgICAgICAgICAgICByNSwgcjMsICMxICAgICAgICAgICAgICAgICAgICAgICAgQCBpID0gbiArIDEKKyAgICAgICAgQUREICAgICAgICAgICAgcjQsIHIxLCByNSwgTFNMICMxICAgICAgICAgICAgICAgIEAgdG1wSCBhZGRyZXNzCisgICAgICAgIE1PViAgICAgICAgICAgIHI2LCByMAorICAgICAgICBWTU9WLlMzMiAgICAgICBRMTAsICMwCitMT09QNDogICAgICAgICAgICAgICAgICAgIAorICAgICAgICBDTVAgICAgICAgICAgICByNSwgIzAKKyAgICAgICAgQkxFICAgICAgICAgICAgTDQKKyAgICAgICAgU1VCICAgICAgICAgICAgcjQsIHI0LCAjOAorICAgICAgICBNT1YgICAgICAgICAgICByOSwgcjQKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDAsIFtyNl0hICAgCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQxLCBbcjldIQorICAgICAgICBWUkVWNjQuMTYgICAgICBEMSwgRDEKKyAgICAgICAgU1VCUyAgICAgICAgICAgcjUsIHI1LCAjNCAgCisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDAsIEQxICAgICAgICAgCisgICAgICAgIEIgICAgICAgICAgICAgIExPT1A0ICAgIAorTDQ6ICAgICAgICAgICAgICAgICAgCisgICAgICAgIFZBREQuUzMyICAgICAgIEQyMCwgRDIwLCBEMjEKKyAgICAgICAgVlBBREQuUzMyICAgICAgRDIwLCBEMjAsIEQyMAorICAgICAgICBWTU9WLlMzMiAgICAgICByNSwgIEQyMFswXQorICAgICAgICBBREQgICAgICAgICAgICByNSwgcjExLCByNSwgTFNMICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI1LCByNSwgTFNSICMxNiAgICAgICAgICAgICAgICAgICBAZXh0cmFjdF9oKHMpCisgICAgICAgIEFERCAgICAgICAgICAgIHIzLCByMywgIzEKKyAgICAgICAgU1RSSCAgICAgICAgICAgcjUsIFtyMl0sICMyICAgICAgICAgICAgICAgICAgICAgIEB5W25dCisgICAgICAgIAorICAgICAgICBDTVAgICAgICAgICAgICByMywgIzY0CisgICAgICAgIEJMVCAgICAgICAgICAgIExPT1AKKyAgICAgICAgICAgICAgICAKK0NvbnZvbHZlX2FzbV9lbmQ6IAorIAorICAgICAgICBMRE1GRCAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fQorICAgIAorICAgICAgICBARU5ERlVOQworICAgICAgICAuRU5ECisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L2Nvcl9oX3ZlY19uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9jb3JfaF92ZWNfbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMzM5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9jb3JfaF92ZWNfbmVvbi5zCkBAIC0wLDAgKzEsMTUxIEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0ANCitAc3RhdGljIHZvaWQgY29yX2hfdmVjXzAxMigNCitACQlXb3JkMTYgaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzY2FsZWQgaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgKi8NCitACQlXb3JkMTYgdmVjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzY2FsZWQgdmVjdG9yICgvOCkgdG8gY29ycmVsYXRlIHdpdGggaFtdICovDQorQAkJV29yZDE2IHRyYWNrLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgdG8gdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorQAkJV29yZDE2IHNpZ25bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2lnbiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorQAkJV29yZDE2IHJyaXhpeFtdW05CX1BPU10sICAgICAgICAgICAgICAvKiAoaSkgY29ycmVsYXRpb24gb2YgaFt4XSB3aXRoIGhbeF0gICAgICAqLw0KK0AJCVdvcmQxNiBjb3JfMVtdLCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KK0AJCVdvcmQxNiBjb3JfMltdICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KK0ApDQorQHIwIC0tLS0gaFtdDQorQHIxIC0tLS0gdmVjW10NCitAcjIgLS0tLSB0cmFjaw0KK0ByMyAtLS0tIHNpZ25bXQ0KK0ByNCAtLS0tIHJyaXhpeFtdW05CX1BPU10NCitAcjUgLS0tLSBjb3JfMVtdDQorQHI2IC0tLS0gY29yXzJbXQ0KKw0KKyAgICAgICAgICAgICAgLnNlY3Rpb24gLnRleHQgDQorCSAgICAgIC5nbG9iYWwgIGNvcl9oX3ZlY18wMTJfYXNtDQorDQorY29yX2hfdmVjXzAxMl9hc206DQorDQorICAgICAgICAgICAgIFNUTUZEICAgICAgICAgcjEzISwge3I0IC0gcjEyLCByMTR9DQorCSAgICAgTERSICAgICAgICAgICByNCwgW3IxMywgIzQwXSAgICAgICAgICAgICAgICAgICAgQGxvYWQgcnJpeGl4W11bTkJfUE9TXQ0KKwkgICAgIEFERCAgICAgICAgICAgcjcsIHI0LCByMiwgTFNMICM1ICAgICAgICAgICAgICAgIEByNyAtLS0gcDAgPSBycml4aXhbdHJhY2tdDQorICAgICAgICAgICAgIE1PViAgICAgICAgICAgcjQsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpPTANCisNCisJICAgICBAcjAgLS0tIGhbXSwgcjEgLS0tIHZlY1tdLCAgcjIgLS0tIHBvcw0KKwkgICAgIEByMyAtLS0gc2lnbltdLCByNCAtLS0gaSwgcjcgLS0tIHAwDQorDQorTE9PUGk6DQorICAgICAgICAgICAgIE1PViAgICAgICAgICAgcjUsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTEgPSAwDQorCSAgICAgTU9WICAgICAgICAgICByNiwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQExfc3VtMiA9IDANCisJICAgICBBREQgICAgICAgICAgIHI5LCByMSwgcjIsIExTTCAjMSAgICAgICAgICAgICAgICBAcDIgPSAmdmVjW3Bvc10NCisJICAgICBNT1YgICAgICAgICAgIHIxMCwgcjAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcDEgPSBoDQorCSAgICAgUlNCICAgICAgICAgICByMTEsIHIyLCAjNjIgICAgICAgICAgICAgICAgICAgICAgQGo9NjItcG9zDQorDQorTE9PUGoxOg0KKwkgICAgIExEUlNIICAgICAgICAgcjEyLCBbcjEwXSwgIzIgIA0KKwkgICAgIExEUlNIICAgICAgICAgcjgsICBbcjldLCAjMg0KKwkgICAgIExEUlNIICAgICAgICAgcjE0LCBbcjldDQorCSAgICAgU1VCUyAgICAgICAgICByMTEsIHIxMSwgIzENCisgICAgICAgICAgICAgTUxBICAgICAgICAgICByNSwgcjEyLCByOCwgcjUNCisgICAgICAgICAgICAgTUxBICAgICAgICAgICByNiwgcjEyLCByMTQsIHI2CSANCisJICAgICBCR0UgICAgICAgICAgIExPT1BqMQ0KKw0KKwkgICAgIExEUlNIICAgICAgICAgcjEyLCBbcjEwXSwgIzIgICAgICAgICAgICAgICAgICAgICBAKnAxKysNCisJICAgICBNT1YgICAgICAgICAgIHI2LCByNiwgTFNMICMyICAgICAgICAgICAgICAgICAgICAgQExfc3VtMiA9IChMX3N1bTIgPDwgMikNCisgICAgICAgICAgICAgTUxBICAgICAgICAgICByNSwgcjEyLCByMTQsIHI1DQorICAgICAgICAgICAgIE1PViAgICAgICAgICAgcjE0LCAjMHg4MDAwDQorICAgICAgICAgICAgIE1PViAgICAgICAgICAgcjUsIHI1LCBMU0wgIzIgICAgICAgICAgICAgICAgICAgICBATF9zdW0xID0gKExfc3VtMSA8PCAyKQ0KKyAgICAgICAgICAgICBBREQgICAgICAgICAgIHIxMCwgcjYsIHIxNCAgICAgICAgIA0KKyAgICAgICAgICAgICBBREQgICAgICAgICAgIHI5LCByNSwgcjE0DQorICAgICAgICAgICAgIE1PViAgICAgICAgICAgcjUsIHI5LCBBU1IgIzE2DQorICAgICAgICAgICAgIE1PViAgICAgICAgICAgcjYsIHIxMCwgQVNSICMxNg0KKyAgICAgICAgICAgICBBREQgICAgICAgICAgIHI5LCByMywgcjIsIExTTCAjMSAgICAgICAgICAgICAgICAgQGFkZHJlc3Mgb2Ygc2lnbltwb3NdDQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjgsIHI3LCAjMzINCisgICAgICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyOV0sICMyICAgICAgICAgICAgICAgICAJICBAc2lnbltwb3NdDQorCSAgICAgTERSU0ggICAgICAgICByMTEsIFtyOV0gICAgICAgICAgICAgICAgICAgICAgICAgIEBzaWduW3BvcyArIDFdDQorCSAgICAgTVVMICAgICAgICAgICByMTIsIHI1LCByMTANCisJICAgICBNVUwgICAgICAgICAgIHIxNCwgcjYsIHIxMQ0KKwkgICAgIE1PViAgICAgICAgICAgcjUsIHIxMiwgQVNSICMxNQ0KKwkgICAgIE1PViAgICAgICAgICAgcjYsIHIxNCwgQVNSICMxNQ0KKwkgICAgIExEUiAgICAgICAgICAgcjksICBbcjEzLCAjNDRdICAgICAgICAgICAgICAgICAgIA0KKwkgICAgIExEUiAgICAgICAgICAgcjEyLCBbcjEzLCAjNDhdDQorICAgICAgICAgICAgIExEUlNIICAgICAgICAgcjEwLCBbcjddLCAjMiAgICAgICAgICAgICAgICAgICAgICBAKnAwKysNCisJICAgICBMRFJTSCAgICAgICAgIHIxMSwgW3I4XSAgICAgICAgICAgICAgICAgICAgICAgICAgQCpwMysrDQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjksIHI5LCByNCwgTFNMICMxDQorCSAgICAgQUREICAgICAgICAgICByMTIsIHIxMiwgcjQsIExTTCAjMQ0KKwkgICAgIEFERCAgICAgICAgICAgcjUsIHI1LCByMTANCisJICAgICBBREQgICAgICAgICAgIHI2LCByNiwgcjExDQorCSAgICAgU1RSSCAgICAgICAgICByNSwgW3I5XQ0KKwkgICAgIFNUUkggICAgICAgICAgcjYsIFtyMTJdDQorDQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjIsIHIyLCAjNA0KKyANCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNSwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQExfc3VtMSA9IDANCisJICAgICBNT1YgICAgICAgICAgIHI2LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBATF9zdW0yID0gMA0KKwkgICAgIEFERCAgICAgICAgICAgcjksIHIxLCByMiwgTFNMICMxICAgICAgICAgICAgICAgIEBwMiA9ICZ2ZWNbcG9zXQ0KKwkgICAgIE1PViAgICAgICAgICAgcjEwLCByMCAgICAgICAgICAgICAgICAgICAgICAgICAgIEBwMSA9IGgNCisJICAgICBSU0IgICAgICAgICAgIHIxMSwgcjIsICM2MiAgICAgICAgICAgICAgICAgICAgICBAaj02Mi1wb3MNCisJICAgICBBREQgICAgICAgICAgIHI0LCByNCwgIzEgICAgICAgICAgICAgICAgICAgICAgICBAaSsrDQorDQorTE9PUGoyOg0KKwkgICAgIExEUlNIICAgICAgICAgcjEyLCBbcjEwXSwgIzIgIA0KKwkgICAgIExEUlNIICAgICAgICAgcjgsICBbcjldLCAjMg0KKwkgICAgIExEUlNIICAgICAgICAgcjE0LCBbcjldDQorCSAgICAgU1VCUyAgICAgICAgICByMTEsIHIxMSwgIzENCisgICAgICAgICAgICAgTUxBICAgICAgICAgICByNSwgcjEyLCByOCwgcjUNCisgICAgICAgICAgICAgTUxBICAgICAgICAgICByNiwgcjEyLCByMTQsIHI2CSANCisJICAgICBCR0UgICAgICAgICAgIExPT1BqMg0KKw0KKwkgICAgIExEUlNIICAgICAgICAgcjEyLCBbcjEwXSwgIzIgICAgICAgICAgICAgICAgICAgICBAKnAxKysNCisJICAgICBNT1YgICAgICAgICAgIHI2LCByNiwgTFNMICMyICAgICAgICAgICAgICAgICAgICAgQExfc3VtMiA9IChMX3N1bTIgPDwgMikNCisgICAgICAgICAgICAgTUxBICAgICAgICAgICByNSwgcjEyLCByMTQsIHI1DQorICAgICAgICAgICAgIE1PViAgICAgICAgICAgcjE0LCAjMHg4MDAwDQorICAgICAgICAgICAgIE1PViAgICAgICAgICAgcjUsIHI1LCBMU0wgIzIgICAgICAgICAgICAgICAgICAgICBATF9zdW0xID0gKExfc3VtMSA8PCAyKQ0KKyAgICAgICAgICAgICBBREQgICAgICAgICAgIHIxMCwgcjYsIHIxNCAgICAgICAgDQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjksIHI1LCByMTQNCisNCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjksIEFTUiAjMTYNCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNiwgcjEwLCBBU1IgIzE2DQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjksIHIzLCByMiwgTFNMICMxICAgICAgICAgICAgICAgICBAYWRkcmVzcyBvZiBzaWduW3Bvc10NCisgICAgICAgICAgICAgQUREICAgICAgICAgICByOCwgcjcsICMzMg0KKyAgICAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I5XSwgIzIgICAgICAgICAgICAgICAgIAkgIEBzaWduW3Bvc10NCisJICAgICBMRFJTSCAgICAgICAgIHIxMSwgW3I5XSAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZ25bcG9zICsgMV0NCisJICAgICBNVUwgICAgICAgICAgIHIxMiwgcjUsIHIxMA0KKwkgICAgIE1VTCAgICAgICAgICAgcjE0LCByNiwgcjExDQorCSAgICAgTU9WICAgICAgICAgICByNSwgcjEyLCBBU1IgIzE1DQorCSAgICAgTU9WICAgICAgICAgICByNiwgcjE0LCBBU1IgIzE1DQorCSAgICAgTERSICAgICAgICAgICByOSwgIFtyMTMsICM0NF0gICAgICAgICAgICAgICAgICAgDQorCSAgICAgTERSICAgICAgICAgICByMTIsIFtyMTMsICM0OF0NCisgICAgICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyN10sICMyICAgICAgICAgICAgICAgICAgICAgIEAqcDArKw0KKwkgICAgIExEUlNIICAgICAgICAgcjExLCBbcjhdICAgICAgICAgICAgICAgICAgICAgICAgICBAKnAzKysNCisgICAgICAgICAgICAgQUREICAgICAgICAgICByOSwgcjksIHI0LCBMU0wgIzENCisJICAgICBBREQgICAgICAgICAgIHIxMiwgcjEyLCByNCwgTFNMICMxDQorCSAgICAgQUREICAgICAgICAgICByNSwgcjUsIHIxMA0KKwkgICAgIEFERCAgICAgICAgICAgcjYsIHI2LCByMTENCisJICAgICBTVFJIICAgICAgICAgIHI1LCBbcjldDQorCSAgICAgU1RSSCAgICAgICAgICByNiwgW3IxMl0NCisJICAgICBBREQgICAgICAgICAgIHI0LCByNCwgIzEgICAgICAgICAgICAgICAgICAgICAgICAgQGkrMQ0KKwkgICAgIEFERCAgICAgICAgICAgcjIsIHIyLCAjNCAgICAgICAgICAgICAgICAgICAgICAgICBAcG9zICs9IFNURVANCisJICAgICBDTVAgICAgICAgICAgIHI0LCAjMTYNCisJICAgICANCisJICAgICBCTFQgICAgICAgICAgIExPT1BpDQorICAgICAgICAgDQordGhlX2VuZDoNCisgICAgICAgICAgICAgTERNRkQgICAgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNX0NCisgICAgICAgICAgICAgDQorCSAgICAgLkVORAkgDQorICAgICAgICANCisJDQorCSAgDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvcHJlZF9sdDRfMV9uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9wcmVkX2x0NF8xX25lb24ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjg4NTNmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvcHJlZF9sdDRfMV9uZW9uLnMKQEAgLTAsMCArMSwxMDAgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQA0KK0B2b2lkIFByZWRfbHQ0KA0KK0AgICAgIFdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBleGNpdGF0aW9uIGJ1ZmZlciAqLw0KK0AgICAgIFdvcmQxNiBUMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBpbnRlZ2VyIHBpdGNoIGxhZyAqLw0KK0AgICAgIFdvcmQxNiBmcmFjLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBmcmFjdGlvbiBvZiBsYWcgICAqLw0KK0AgICAgIFdvcmQxNiBMX3N1YmZyICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBzdWJmcmFtZSBzaXplICAgICAqLw0KK0ApDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCByMCAgICAtLS0gIGV4Y1tdDQorQCByMSAgICAtLS0gIFQwDQorQCByMiAgICAtLS0gIGZyYWMNCitAIHIzICAgIC0tLSAgTF9zdWJmcg0KKyANCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0IA0KKyAgICAgICAgICAuZ2xvYmFsICAgcHJlZF9sdDRfYXNtDQorICAgICAgICAgIC5leHRlcm4gICBpbnRlcjRfMg0KKw0KK3ByZWRfbHQ0X2FzbToNCisNCisgICAgICAgICAgU1RNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTR9IA0KKyAgICAgICAgICBTVUIgICAgICAgICAgIHI0LCByMCwgcjEsIExTTCAjMSAgICAgICAgICAgICAgICAgICAgICAgIEAgeCA9IGV4YyAtIFQwDQorICAgICAgICAgIFJTQiAgICAgICAgICAgcjIsIHIyLCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBmcmFjID0gLSBmcmFjDQorICAgICAgICAgIFNVQiAgICAgICAgICAgcjQsIHI0LCAjMzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCB4IC09IExfSU5URVJQT0wyIC0gMQ0KKyAgICAgICAgICBDTVAgICAgICAgICAgIHIyLCAjMA0KKyAgICAgICAgICBBRERMVCAgICAgICAgIHIyLCByMiwgIzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgZnJhYyArPSBVUF9TQU1QDQorICAgICAgICAgIFNVQkxUICAgICAgICAgcjQsIHI0LCAjMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCB4LS0NCisNCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIExhYmxlMQ0KKyAgICAgICAgICBSU0IgICAgICAgICAgIHIyLCByMiwgIzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgayA9IFVQX1NBTVAgLSAxIC0gZnJhYw0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI4LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgaiA9IDANCisJICBBREQgICAgICAgICAgIHIxMSwgcjExLCByMiwgTFNMICM2ICAgICAgICAgICAgICAgICAgICAgIEAgZ2V0IGludGVyNF8yW2tdW10NCisNCisJICBWTEQxLlMxNiAgICAgIHtRMCwgUTF9LCBbcjExXSENCisJICBWTEQxLlMxNiAgICAgIHtRMiwgUTN9LCBbcjExXSENCisgICAgICAgICAgDQorCSAgTU9WICAgICAgICAgICByNiwgIzB4ODAwMCANCisNCisgICAgICAgICAgVkxEMS5TMTYgICAgICB7UTQsIFE1fSwgW3I0XSEgICAgICAgICAgICAgICAgICAgICAgICAgICBAbG9hZCAxNiB4W10NCisgICAgICAgICAgVkxEMS5TMTYgICAgICB7UTYsIFE3fSwgW3I0XSEgICAgICAgICAgICAgICAgICAgICAgICAgICBAbG9hZCAxNiB4W10NCisNCitMT09QOg0KKyAgICAgICAgICBWUURNVUxMLlMxNiAgIFExNSwgRDgsIEQwDQorICAgICAgICAgIFZRRE1MQUwuUzE2ICAgUTE1LCBEOSwgRDENCisgICAgICAgICAgVlFETUxBTC5TMTYgICBRMTUsIEQxMCwgRDINCisgICAgICAgICAgVlFETUxBTC5TMTYgICBRMTUsIEQxMSwgRDMNCisgICAgICAgIA0KKyAgICAgICAgICBWUURNTEFMLlMxNiAgIFExNSwgRDEyLCBENA0KKyAgICAgICAgICBWUURNTEFMLlMxNiAgIFExNSwgRDEzLCBENQ0KKyAgICAgICAgICBWUURNTEFMLlMxNiAgIFExNSwgRDE0LCBENg0KKyAgICAgICAgICBWUURNTEFMLlMxNiAgIFExNSwgRDE1LCBENw0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMiwgW3I0XSwgIzIgICAgICAgICAgICAgICAgDQorICAgICAgICAgIA0KKyAgICAgICAgICBWRVhULlMxNiAgICAgIEQ4LCBEOCwgRDksICMxDQorICAgICAgICAgIFZFWFQuUzE2ICAgICAgRDksIEQ5LCBEMTAsICMxDQorICAgICAgICAgIFZFWFQuUzE2ICAgICAgRDEwLCBEMTAsIEQxMSwgIzENCisgICAgICAgICAgVkVYVC5TMTYgICAgICBEMTEsIEQxMSwgRDEyLCAjMQ0KKyAgICAgICAgICBWRFVQLlMxNiAgICAgIEQyNCwgcjEyDQorICAgICAgICAgIFZFWFQuUzE2ICAgICAgRDEyLCBEMTIsIEQxMywgIzENCisgICAgICAgICAgVkVYVC5TMTYgICAgICBEMTMsIEQxMywgRDE0LCAjMQ0KKyAgICAgDQorICAgICAgICAgIFZRQURELlMzMiAgICAgRDMwLCBEMzAsIEQzMQ0KKwkgIE1PViAgICAgICAgICAgcjExLCAjMHg4MDAwICAgICAgICAgIA0KKyAgICAgICAgICBWUEFERC5TMzIgICAgIEQzMCwgRDMwLCBEMzANCisgICAgICAgICAgQUREICAgICAgICAgICByOCwgcjgsICMxDQorICAgICAgICAgIFZNT1YuUzMyICAgICAgcjEyLCBEMzBbMF0NCisgICAgICAgICAgVkVYVC5TMTYgICAgICBEMTQsIEQxNCwgRDE1LCAjMSAgICAgICAgICANCisNCisgICAgICAgICAgUUFERCAgICAgICAgICByMSwgcjEyLCByMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIExfc3VtID0gKExfc3VtIDw8IDIpDQorICAgICAgICAgIFZFWFQuUzE2ICAgICAgRDE1LCBEMTUsIEQyNCwgIzENCisgICAgICAgICAgUUFERCAgICAgICAgICByNSwgcjEsIHI2ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHIxLCByNSwgQVNSICMxNg0KKyAgICAgICAgICBDTVAgICAgICAgICAgIHI4LCByMw0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHIxLCBbcjBdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgZXhjW2pdID0gKExfc3VtICsgMHg4MDAwKSA+PiAxNg0KKyAgICAgICAgICBCTFQgICAgICAgICAgIExPT1ANCisgICAgICAgICAgICAgICAgICAgIA0KK3ByZWRfbHQ0X2VuZDoNCisJCSAgICAgDQorICAgICAgICAgIExETUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisgDQorTGFibGUxOg0KKyAgICAgICAgICAud29yZCAgIAlpbnRlcjRfMg0KKyAgICAgICAgICBARU5ERlVOQw0KKyAgICAgICAgICAuRU5EDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvcmVzaWR1X2FzbV9uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9yZXNpZHVfYXNtX25lb24ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWU2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvcmVzaWR1X2FzbV9uZW9uLnMKQEAgLTAsMCArMSwxMjcgQEAKK0AvKgorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLgorQCAqKgorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKK0AgKioKK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorQCAqKgorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorQCAqLworQAorQHZvaWQgUmVzaWR1ICgKK0AgICAgV29yZDE2IGFbXSwgLyogKGkpICAgICA6IHByZWRpY3Rpb24gY29lZmZpY2llbnRzICAgICAgICAgICAgICAgICAgICAgICovCitAICAgIFdvcmQxNiB4W10sIC8qIChpKSAgICAgOiBzcGVlY2ggc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworQCAgICBXb3JkMTYgeVtdLCAvKiAobykgICAgIDogcmVzaWR1YWwgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AgICAgV29yZDE2IGxnICAgLyogKGkpICAgICA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCitAKQorQGFbXSAgICAgICAgUk4gICAgIHIwCitAeFtdICAgICAgICBSTiAgICAgcjEKK0B5W10gICAgICAgIFJOICAgICByMgorQGxnICAgICAgICAgUk4gICAgIHIzCisKKwkuc2VjdGlvbiAgIC50ZXh0CisgICAgICAgIC5nbG9iYWwgICAgUmVzaWR1X29wdCAKKworUmVzaWR1X29wdDoKKworICAgICAgICBTVE1GRCAgICAgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNH0gCisgICAgICAgIFNVQiAgICAgICAgICAgIHI3LCByMywgIzQgICAgICAgICAgICAgICAgICAgICAgIEBpID0gbGcgLSA0CisgICAgICAgIAorICAgICAgICBWTEQxLlMxNiAgICAgICB7RDAsIEQxLCBEMiwgRDN9LCBbcjBdISAgICAgICAgICAgICAgQGdldCBhbGwgYVtdICAKKwlWTEQxLlMxNiAgICAgICB7RDR9LCBbcjBdIQorICAgICAgICBWTU9WLlMzMiAgICAgICBROCwgICMweDgwMDAKKyAgICAgICAgCitMT09QMToKKyAgICAgICAgQUREICAgICAgICAgICAgcjksIHIxLCByNywgTFNMICMxICAgICAgICAgICAgICAgQGNvcHkgdGhlIGFkZHJlc3MKKyAgICAgICAgQUREICAgICAgICAgICAgcjEwLCByMiwgcjcsIExTTCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByOCwgcjkKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hICAgICAgICAgICAgICAgICAgICAgICBAZ2V0IHhbaV0sIHhbaSsxXSwgeFtpKzJdLCB4W2krM10KKyAgICAgICAgVlFETVVMTC5TMTYgICAgUTEwLCBENSwgRDBbMF0gICAgICAgICAgICAgICAgICBAZmluaXNoIHRoZSBmaXJzdCBMX211bHQKKworICAgICAgICBTVUIgICAgICAgICAgICByOCwgcjksICMyICAgICAgICAgICAgICAgICAgICAgICBAZ2V0IHRoZSB4W2ktMV0gYWRkcmVzcworICAgICAgICBWTEQxLlMxNiAgICAgICBENSwgW3I4XSEgCisgICAgICAgIFZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQwWzFdCisKKyAgICAgICAgU1VCICAgICAgICAgICAgcjgsIHI5LCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS0yXSBhZGRyZXNzCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdIQorICAgICAgICBWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBEMFsyXQorCisgICAgICAgIFNVQiAgICAgICAgICAgIHI4LCByOSwgIzYgICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktM10gYWRkcmVzcworICAgICAgICBWTEQxLlMxNiAgICAgICBENSwgW3I4XSEgICAgIAorICAgICAgICBWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBEMFszXSAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgU1VCICAgICAgICAgICAgcjgsIHI5LCAjOCAgICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS00XSBhZGRyZXNzCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdISAgICAgCisgICAgICAgIFZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQxWzBdICAKKworICAgICAgICBTVUIgICAgICAgICAgICByOCwgcjksICMxMCAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTVdIGFkZHJlc3MKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hICAgICAKKyAgICAgICAgVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDFbMV0gCisKKyAgICAgICAgU1VCICAgICAgICAgICAgcjgsIHI5LCAjMTIgICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS02XSBhZGRyZXNzCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdISAgICAgCisgICAgICAgIFZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQxWzJdICAKKworICAgICAgICBTVUIgICAgICAgICAgICByOCwgcjksICMxNCAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTddIGFkZHJlc3MKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hICAgICAKKyAgICAgICAgVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDFbM10gIAorCisgICAgICAgIFNVQiAgICAgICAgICAgIHI4LCByOSwgIzE2ICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktOF0gYWRkcmVzcworICAgICAgICBWTEQxLlMxNiAgICAgICBENSwgW3I4XSEgICAgIAorICAgICAgICBWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBEMlswXSAgCisKKyAgICAgICAgU1VCICAgICAgICAgICAgcjgsIHI5LCAjMTggICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS05XSBhZGRyZXNzCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdISAgICAgCisgICAgICAgIFZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQyWzFdICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICBTVUIgICAgICAgICAgICByOCwgcjksICMyMCAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTEwXSBhZGRyZXNzCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdISAgICAgCisgICAgICAgIFZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQyWzJdICAKKworCVNVQiAgICAgICAgICAgIHI4LCByOSwgIzIyICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktMTFdIGFkZHJlc3MKKwlWTEQxLlMxNiAgICAgICBENSwgW3I4XSEKKwlWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBEMlszXQorCisJU1VCICAgICAgICAgICAgcjgsIHI5LCAjMjQgICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS0xMl0gYWRkcmVzcworCVZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdIQorCVZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQzWzBdCisKKwlTVUIgICAgICAgICAgICByOCwgcjksICMyNiAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTEzXSBhZGRyZXNzCisJVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hCisJVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDNbMV0KKworCVNVQiAgICAgICAgICAgIHI4LCByOSwgIzI4ICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktMTRdIGFkZHJlc3MKKwlWTEQxLlMxNiAgICAgICBENSwgW3I4XSEKKwlWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBEM1syXQorCisJU1VCICAgICAgICAgICAgcjgsIHI5LCAjMzAgICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS0xNV0gYWRkcmVzcworCVZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdIQorCVZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQzWzNdCisKKwlTVUIgICAgICAgICAgICByOCwgcjksICMzMiAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTE2XSBhZGRyZXNzCisJVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hCisJVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDRbMF0KKworICAgICAgICBTVUIgICAgICAgICAgICByNywgcjcsICM0ICAgICAgICAgICAgICAgICAgICAgICBAaS09NAorICAgICAgICBWUVNITC5TMzIgICAgICBRMTAsIFExMCwgIzQKKyAgICAgICAgVlFBREQuUzMyICAgICAgUTEwLCBRMTAsIFE4CisgICAgICAgIFZTSFJOLlMzMiAgICAgIEQ1LCBRMTAsICMxNgorICAgICAgICBWU1QxLlMxNiAgICAgICBENSwgW3IxMF0hCisgICAgICAgIENNUCAgICAgICAgICAgIHI3LCAgIzAKKworICAgICAgICBCR0UgICAgICAgICAgICBMT09QMQorCitSZXNpZHVfYXNtX2VuZDogCisgCisgICAgICAgIExETUZEICAgICAgcjEzISwge3I0IC0gcjEyLCByMTV9CisgICAgCisgICAgICAgIEBFTkRGVU5DCisgICAgICAgIC5FTkQKKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9zY2FsZV9zaWdfbmVvbi5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvc2NhbGVfc2lnX25lb24ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDk1N2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvc2NhbGVfc2lnX25lb24ucwpAQCAtMCwwICsxLDEzOCBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitAICAgICAgICAgICAgICAgICAgIA0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK0B2b2lkIFNjYWxlX3NpZygNCitAICAgICAgICAgICAgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSA6IHNpZ25hbCB0byBzY2FsZSAgICAgICAgICAgICAgICovDQorQCAgICAgICAgICAgICAgIFdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBzaXplIG9mIHhbXSAgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgICAgICAgICAgICBXb3JkMTYgZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogZXhwb25lbnQ6IHggPSByb3VuZCh4IDw8IGV4cCkgKi8NCitAKQ0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgIHhbXSAgIC0tLSAgcjANCitAICBsZyAgICAtLS0gIHIxDQorQCAgZXhwICAgLS0tICByMg0KKw0KKyAgICAgICAgICAuc2VjdGlvbiAgLnRleHQgDQorICAgICAgICAgIC5nbG9iYWwgICBTY2FsZV9zaWdfb3B0DQorDQorU2NhbGVfc2lnX29wdDoNCisNCisgICAgICAgICAgU1RNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTR9IA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI0LCAjNA0KKyAgICAgICAgICBWTU9WLlMzMiAgICAgIFExNSwgIzB4ODAwMCAgICAgICANCisgICAgICAgICAgVkRVUC5TMzIgICAgICBRMTQsIHIyICANCisgICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgY29weSB4W10gYWRkcmVzcyAgICANCisgICAgICAgICAgQ01QICAgICAgICAgICByMSwgIzY0DQorICAgICAgICAgIE1PVkVRICAgICAgICAgcjQsICMxDQorICAgICAgICAgIEJFUSAgICAgICAgICAgTE9PUA0KKwkgIENNUCAgICAgICAgICAgcjEsICMxMjgNCisJICBNT1ZFUSAgICAgICAgIHI0LCAjMg0KKwkgIEJFUSAgICAgICAgICAgTE9PUA0KKyAgICAgICAgICBDTVAgICAgICAgICAgIHIxLCAjMjU2DQorICAgICAgICAgIEJFUSAgICAgICAgICAgTE9PUA0KKwkgIENNUCAgICAgICAgICAgcjEsICM4MA0KKwkgIE1PVkVRICAgICAgICAgcjQsICMxDQorCSAgQkVRICAgICAgICAgICBMT09QMQ0KKw0KK0xPT1AxOg0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgIHtRMCwgUTF9LCBbcjVdISAgICAgICAgICAgICAgICAgQGxvYWQgMTYgV29yZDE2IHhbXSAgICAgDQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEwLCBEMCwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTExLCBEMSwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEyLCBEMiwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEzLCBEMywgIzE2DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTEwLCBRMTAsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMSwgUTExLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTIsIFExMiwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTEzLCBRMTMsIFExNA0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxNiwgUTEwLCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTcsIFExMSwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE4LCBRMTIsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxOSwgUTEzLCBRMTUNCisgICAgICAgICAgVlNUMS5TMTYgICAgICB7UTgsIFE5fSwgW3IwXSEgICAgICAgICAgICAgICAgIEBzdG9yZSAxNiBXb3JkMTYgeFtdDQorDQorTE9PUDogICAgICAgICAgICAgICAgDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAge1EwLCBRMX0sIFtyNV0hICAgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAge1EyLCBRM30sIFtyNV0hICAgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAge1E0LCBRNX0sIFtyNV0hICAgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAge1E2LCBRN30sIFtyNV0hICAgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdDQorDQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTgsIEQwLCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBROSwgRDEsICMxNg0KKyAgICAgICAgICBWU0hMTC5TMTYgICAgIFExMCwgRDIsICMxNg0KKyAgICAgICAgICBWU0hMTC5TMTYgICAgIFExMSwgRDMsICMxNiAgICAgDQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTgsIFE4LCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBROSwgUTksIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMCwgUTEwLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTEsIFExMSwgUTE0DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE2LCBROCwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE3LCBROSwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE4LCBRMTAsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxOSwgUTExLCBRMTUNCisgICAgICAgICAgVlNUMS5TMTYgICAgICB7UTgsIFE5fSwgW3IwXSEgICAgICAgICAgICAgICAgIEBzdG9yZSAxNiBXb3JkMTYgeFtdDQorDQorICAgDQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEyLCBENCwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEzLCBENSwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEwLCBENiwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTExLCBENywgIzE2DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTEyLCBRMTIsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMywgUTEzLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTAsIFExMCwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTExLCBRMTEsIFExNA0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxNiwgUTEyLCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTcsIFExMywgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE4LCBRMTAsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxOSwgUTExLCBRMTUNCisgICAgICAgICAgVlNUMS5TMTYgICAgICB7UTgsIFE5fSwgW3IwXSEgICAgICAgICAgICAgICAgIEBzdG9yZSAxNiBXb3JkMTYgeFtdDQorDQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEwLCBEOCwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTExLCBEOSwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEyLCBEMTAsICMxNg0KKyAgICAgICAgICBWU0hMTC5TMTYgICAgIFExMywgRDExLCAjMTYNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTAsIFExMCwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTExLCBRMTEsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMiwgUTEyLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTMsIFExMywgUTE0DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE2LCBRMTAsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxNywgUTExLCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTgsIFExMiwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE5LCBRMTMsIFExNQ0KKyAgICAgICAgICBWU1QxLlMxNiAgICAgIHtROCwgUTl9LCBbcjBdISAgICAgICAgICAgICAgICAgQHN0b3JlIDE2IFdvcmQxNiB4W10NCisNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTAsIEQxMiwgIzE2ICAgDQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTExLCBEMTMsICMxNg0KKyAgICAgICAgICBWU0hMTC5TMTYgICAgIFExMiwgRDE0LCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTMsIEQxNSwgIzE2DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTEwLCBRMTAsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMSwgUTExLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTIsIFExMiwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTEzLCBRMTMsIFExNA0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxNiwgUTEwLCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTcsIFExMSwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE4LCBRMTIsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxOSwgUTEzLCBRMTUgDQorICAgICAgICAgIFZTVDEuUzE2ICAgICAge1E4LCBROX0sIFtyMF0hICAgICAgICAgICAgICAgICBAc3RvcmUgMTYgV29yZDE2IHhbXSAgDQorICAgICAgICAgIFNVQlMgICAgICAgICAgcjQsIHI0LCAjMQ0KKyAgICAgICAgICBCR1QgICAgICAgICAgIExPT1AgICAgIA0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgIA0KK1NjYWxlX3NpZ19hc21fZW5kOg0KKw0KKyAgICAgICAgICBMRE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNX0gDQorICAgICAgICAgIEBFTkRGVU5DDQorICAgICAgICAgIC5FTkQNCisgDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvc3luX2ZpbHRfbmVvbi5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvc3luX2ZpbHRfbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjM2Q0YTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9zeW5fZmlsdF9uZW9uLnMKQEAgLTAsMCArMSwxMDYgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQA0KK0B2b2lkIFN5bl9maWx0KA0KK0AgICAgIFdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGFbbSsxXSBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAgICAgICAgICAgKi8NCitAICAgICBXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHNpZ25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiBtZW1bXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaWx0ZXJpbmcuICAgKi8NCitAKQ0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgYVtdICAgIC0tLSAgIHIwDQorQCB4W10gICAgLS0tICAgcjENCitAIHlbXSAgICAtLS0gICByMg0KK0AgbWVtW10gIC0tLSAgIHIzDQorQCBtIC0tLSAgMTYgIGxnIC0tLSA4MCAgdXBkYXRlIC0tLSAxDQorDQorICAgICAgICAgIC5zZWN0aW9uICAudGV4dCANCisgICAgICAgICAgLmdsb2JhbCAgIFN5bl9maWx0X2FzbQ0KKw0KK1N5bl9maWx0X2FzbToNCisNCisgICAgICAgICAgU1RNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTR9IA0KKyAgICAgICAgICBTVUIgICAgICAgICAgIHIxMywgcjEzLCAjNzAwICAgICAgICAgICAgICAgICAgIEAgeV9idWZbTF9GUkFNRTE2ayArIE0xNmtdDQorICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjQsIHIzICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBjb3B5IG1lbVtdIGFkZHJlc3MNCisgICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjEzICAgICAgICAgICAgICAgICAgICAgICAgICBAIGNvcHkgeXkgPSB5X2J1ZiBhZGRyZXNzDQorDQorICAgICAgICAgIEAgZm9yKGkgPSAwQCBpIDwgbUAgaSsrKQ0KKyAgICAgICAgICBAew0KKyAgICAgICAgICBAICAgICp5eSsrID0gbWVtW2ldQA0KKyAgICAgICAgICBAfSANCisgICAgICAgICAgVkxEMS5TMTYgICAgICB7RDAsIEQxLCBEMiwgRDN9LCBbcjRdISAgICAgICAgICBAbG9hZCAxNiBtZW1zDQorCSAgVlNUMS5TMTYgICAgICB7RDAsIEQxLCBEMiwgRDN9LCBbcjVdISAgICAgICAgICBAc3RvcmUgMTYgbWVtW10gdG8gKnl5DQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjUsIFtyMF0sICMyICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMF0NCisgICAgICAgICAgTU9WICAgICAgICAgICByOCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIGkgPSAwDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjUsIHI1LCBBU1IgIzEgICAgICAgICAgICAgICAgICAgQCBhMCA9IGFbMF0gPj4gMQ0KKyAgICAgICAgICBWTU9WLlMxNiAgICAgIEQ4WzBdLCByNQ0KKyAgICAgICAgICBAIGxvYWQgYWxsIGFbXQ0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyMF0hICAgICAgICAgIEAgbG9hZCBhWzFdIH4gYVsxNl0NCisJICBWUkVWNjQuMTYgICAgIEQwLCBEMA0KKwkgIFZSRVY2NC4xNiAgICAgRDEsIEQxDQorCSAgVlJFVjY0LjE2ICAgICBEMiwgRDINCisJICBWUkVWNjQuMTYgICAgIEQzLCBEMyANCisJICBNT1YgICAgICAgICAgIHI4LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgbG9vcCB0aW1lcw0KKwkgIE1PViAgICAgICAgICAgcjEwLCByMTMgICAgICAgICAgICAgICAgICAgICAgICAgQCB0ZW1wID0geV9idWYNCisJICBBREQgICAgICAgICAgIHI0LCByMTMsICMzMiAgICAgICAgICAgICAgICAgICAgIEAgeXlbaV0gYWRkcmVzcw0KKw0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgIHtENCwgRDUsIEQ2LCBEN30sIFtyMTBdISAgICAgICAgIEAgZmlyc3QgMTYgdGVtcF9wDQorDQorU1lOX0xPT1A6DQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIHhbaV0NCisJICBNVUwgICAgICAgICAgIHIxMiwgcjYsIHI1ICAgICAgICAgICAgICAgICAgICAgIEAgTF90bXAgPSB4W2ldICogYTANCisJICBBREQgICAgICAgICAgIHIxMCwgcjQsIHI4LCBMU0wgIzEgICAgICAgICAgICAgIEAgeVtpXSwgeXlbaV0gYWRkcmVzcw0KKw0KKwkgIFZEVVAuUzMyICAgICAgUTEwLCByMTINCisJICBWTVVMTC5TMTYgICAgIFE1LCBEMywgRDQgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgIFE1LCBEMiwgRDUNCisgICAgICAgICAgVk1MQUwuUzE2ICAgICBRNSwgRDEsIEQ2DQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgUTUsIEQwLCBENw0KKyAgICAgICAgICBWRVhULjggICAgICAgIEQ0LCBENCwgRDUsICMyDQorICAgICAgICAgIFZFWFQuOCAgICAgICAgRDUsIEQ1LCBENiwgIzINCisgICAgICAgICAgVkVYVC44ICAgICAgICBENiwgRDYsIEQ3LCAjMg0KKyAgICAgICAgICBWUEFERC5TMzIgICAgIEQxMiwgRDEwLCBEMTENCisgICAgICAgICAgQUREICAgICAgICAgICByOCwgcjgsICMxDQorICAgICAgICAgIFZQQURELlMzMiAgICAgRDEwLCBEMTIsIEQxMg0KKw0KKwkgIFZEVVAuUzMyICAgICAgUTcsIEQxMFswXQ0KKw0KKwkgIFZTVUIuUzMyICAgICAgUTksIFExMCwgUTcNCisgICAgICAgICAgVlFSU0hSTi5TMzIgICBEMjAsIFE5LCAjMTIgICANCisgICAgICAgICAgVk1PVi5TMTYgICAgICByOSwgRDIwWzBdDQorICAgICAgICAgIFZFWFQuOCAgICAgICAgRDcsIEQ3LCBEMjAsICMyDQorICAgICAgICAgIENNUCAgICAgICAgICAgcjgsICM4MA0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI5LCBbcjEwXSAgICAgICAgICAgICAgICAgICAgICAgIEAgeXlbaV0NCisgICAgICAgICAgU1RSSCAgICAgICAgICByOSwgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICBAIHlbaV0gICAgICAgICAgCSAgICAgICAgIA0KKwkgIA0KKyAgICAgICAgICBCTFQgICAgICAgICAgIFNZTl9MT09QDQorIA0KKyAgICAgICAgICBAIHVwZGF0ZSBtZW1bXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgIHI1LCByMTMsICMxNjAgICAgICAgICAgICAgICAgICAgIEAgeXlbNjRdIGFkZHJlc3MNCisJICBWTEQxLlMxNiAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyNV0hDQorCSAgVlNUMS5TMTYgICAgICB7RDAsIEQxLCBEMiwgRDN9LCBbcjNdISAgICAgICAgICAgICAgDQorDQorU3luX2ZpbHRfYXNtX2VuZDoNCisgDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjEzLCByMTMsICM3MDAJCSAgICAgDQorICAgICAgICAgIExETUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisgICAgICAgICAgQEVOREZVTkMNCisgICAgICAgICAgLkVORA0KKyANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2F1dG9jb3JyLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2F1dG9jb3JyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlZDY3MAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXV0b2NvcnIuYwpAQCAtMCwwICsxLDEyNyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IGF1dG9jb3JyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOkNvbXB1dGUgYXV0b2NvcnJlbGF0aW9ucyBvZiBzaWduYWwgd2l0aCB3aW5kb3dpbmcgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisjaW5jbHVkZSAiaGFtX3dpbmQudGFiIg0KKw0KK3ZvaWQgQXV0b2NvcnIoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICA6IElucHV0IHNpZ25hbCAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgOiBMUEMgb3JkZXIgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiByX2hbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNTogQXV0b2NvcnJlbGF0aW9ucyAgKG1zYikgICAgICAgICAgICovDQorCQlXb3JkMTYgcl9sW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICA6IEF1dG9jb3JyZWxhdGlvbnMgIChsc2IpICAgICAgICAgICAqLw0KKwkgICAgICkNCit7DQorCVdvcmQzMiBpLCBub3JtLCBzaGlmdDsNCisJV29yZDE2IHlbTF9XSU5ET1ddOw0KKwlXb3JkMzIgTF9zdW0sIExfc3VtMSwgTF90bXAsIEZfTEVOOw0KKwlXb3JkMTYgKnAxLCpwMiwqcDM7DQorCWNvbnN0IFdvcmQxNiAqcDQ7DQorCS8qIFdpbmRvd2luZyBvZiBzaWduYWwgKi8NCisJcDEgPSB4Ow0KKwlwNCA9IHZvX3dpbmRvdzsNCisJcDMgPSB5Ow0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9XSU5ET1c7IGkrPTQpDQorCXsNCisJCSpwMysrID0gdm9fbXVsdF9yKCgqcDErKyksICgqcDQrKykpOw0KKwkJKnAzKysgPSB2b19tdWx0X3IoKCpwMSsrKSwgKCpwNCsrKSk7DQorCQkqcDMrKyA9IHZvX211bHRfcigoKnAxKyspLCAoKnA0KyspKTsNCisJCSpwMysrID0gdm9fbXVsdF9yKCgqcDErKyksICgqcDQrKykpOw0KKwl9DQorDQorCS8qIGNhbGN1bGF0ZSBlbmVyZ3kgb2Ygc2lnbmFsICovDQorCUxfc3VtID0gdm9fTF9kZXBvc2l0X2goMTYpOyAgICAgICAgICAgICAgIC8qIHNxcnQoMjU2KSwgYXZvaWQgb3ZlcmZsb3cgYWZ0ZXIgcm91bmRpbmcgKi8NCisJZm9yIChpID0gMDsgaSA8IExfV0lORE9XOyBpKyspDQorCXsNCisJCUxfdG1wID0gdm9fTF9tdWx0KHlbaV0sIHlbaV0pOw0KKwkJTF90bXAgPSAoTF90bXAgPj4gOCk7DQorCQlMX3N1bSArPSBMX3RtcDsNCisJfQ0KKw0KKwkvKiBzY2FsZSBzaWduYWwgdG8gYXZvaWQgb3ZlcmZsb3cgaW4gYXV0b2NvcnJlbGF0aW9uICovDQorCW5vcm0gPSBub3JtX2woTF9zdW0pOw0KKwlzaGlmdCA9IDQgLSAobm9ybSA+PiAxKTsNCisJaWYoc2hpZnQgPiAwKQ0KKwl7DQorCQlwMSA9IHk7DQorCQlmb3IgKGkgPSAwOyBpIDwgTF9XSU5ET1c7IGkrPTQpDQorCQl7DQorCQkJKnAxID0gdm9fc2hyX3IoKnAxLCBzaGlmdCk7IA0KKwkJCXAxKys7DQorCQkJKnAxID0gdm9fc2hyX3IoKnAxLCBzaGlmdCk7IA0KKwkJCXAxKys7DQorCQkJKnAxID0gdm9fc2hyX3IoKnAxLCBzaGlmdCk7DQorCQkJcDErKzsNCisJCQkqcDEgPSB2b19zaHJfcigqcDEsIHNoaWZ0KTsgDQorCQkJcDErKzsNCisJCX0NCisJfQ0KKw0KKwkvKiBDb21wdXRlIGFuZCBub3JtYWxpemUgclswXSAqLw0KKwlMX3N1bSA9IDE7IA0KKwlmb3IgKGkgPSAwOyBpIDwgTF9XSU5ET1c7IGkrPTQpDQorCXsNCisJCUxfc3VtICs9IHZvX0xfbXVsdCh5W2ldLCB5W2ldKTsNCisJCUxfc3VtICs9IHZvX0xfbXVsdCh5W2krMV0sIHlbaSsxXSk7DQorCQlMX3N1bSArPSB2b19MX211bHQoeVtpKzJdLCB5W2krMl0pOw0KKwkJTF9zdW0gKz0gdm9fTF9tdWx0KHlbaSszXSwgeVtpKzNdKTsNCisJfQ0KKw0KKwlub3JtID0gbm9ybV9sKExfc3VtKTsNCisJTF9zdW0gPSAoTF9zdW0gPDwgbm9ybSk7DQorDQorCXJfaFswXSA9IExfc3VtID4+IDE2Ow0KKwlyX2xbMF0gPSAoTF9zdW0gJiAweGZmZmYpPj4xOw0KKw0KKwkvKiBDb21wdXRlIHJbMV0gdG8gclttXSAqLw0KKwlmb3IgKGkgPSAxOyBpIDw9IDg7IGkrKykNCisJew0KKwkJTF9zdW0xID0gMDsNCisJCUxfc3VtID0gMDsNCisJCUZfTEVOID0gKFdvcmQzMikoTF9XSU5ET1cgLSAyKmkpOw0KKwkJcDEgPSB5Ow0KKwkJcDIgPSB5ICsgKDIqaSktMTsNCisJCWRvew0KKwkJCUxfc3VtMSArPSAqcDEgKiAqcDIrKzsNCisJCQlMX3N1bSArPSAqcDErKyAqICpwMjsNCisJCX13aGlsZSgtLUZfTEVOIT0wKTsNCisNCisJCUxfc3VtMSArPSAqcDEgKiAqcDIrKzsNCisNCisJCUxfc3VtMSA9IExfc3VtMTw8bm9ybTsNCisJCUxfc3VtID0gTF9zdW08PG5vcm07DQorDQorCQlyX2hbKDIqaSktMV0gPSBMX3N1bTEgPj4gMTU7DQorCQlyX2xbKDIqaSktMV0gPSBMX3N1bTEgJiAweDAwMDA3ZmZmOw0KKwkJcl9oWygyKmkpXSA9IExfc3VtID4+IDE1Ow0KKwkJcl9sWygyKmkpXSA9IExfc3VtICYgMHgwMDAwN2ZmZjsNCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXpfaXNwLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2F6X2lzcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNTlmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2F6X2lzcC5jCkBAIC0wLDAgKzEsMjY4IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogIEZpbGU6IGF6X2lzcC5jDQorKg0KKyogIERlc2NyaXB0aW9uOg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqIENvbXB1dGUgdGhlIElTUHMgZnJvbSAgdGhlIExQQyBjb2VmZmljaWVudHMgIChvcmRlcj1NKSAgICAgICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIFRoZSBJU1BzIGFyZSB0aGUgcm9vdHMgb2YgdGhlIHR3byBwb2x5bm9taWFscyBGMSh6KSBhbmQgRjIoeikgICAgICAgICAqDQorKiBkZWZpbmVkIGFzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICBGMSh6KSA9IEEoeikgKyB6Xi1tIEEoel4tMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICBhbmQgICAgICAgICAgRjIoeikgPSBBKHopIC0gel4tbSBBKHpeLTEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRm9yIGEgZXZlbiBvcmRlciBtPTJuLCBGMSh6KSBoYXMgTS8yIGNvbmp1Z2F0ZSByb290cyBvbiB0aGUgdW5pdCAgICAgICoNCisqIGNpcmNsZSBhbmQgRjIoeikgaGFzIE0vMi0xIGNvbmp1Z2F0ZSByb290cyBvbiB0aGUgdW5pdCBjaXJjbGUgaW4gICAgICAqDQorKiBhZGRpdGlvbiB0byB0d28gcm9vdHMgYXQgMCBhbmQgcGkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIEZvciBhIDE2dGggb3JkZXIgTFAgYW5hbHlzaXMsIEYxKHopIGFuZCBGMih6KSBjYW4gYmUgd3JpdHRlbiBhcyAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICBGMSh6KSA9ICgxICsgYVtNXSkgICBQUk9EVUNUICAoMSAtIDIgY29zKHdfaSkgel4tMSArIHpeLTIgKSAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgaT0wLDIsNCw2LDgsMTAsMTIsMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICBGMih6KSA9ICgxIC0gYVtNXSkgKDEgLSB6Xi0yKSBQUk9EVUNUICgxIC0gMiBjb3Mod19pKSB6Xi0xICsgel4tMiApICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaT0xLDMsNSw3LDksMTEsMTMgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogVGhlIElTUHMgYXJlIHRoZSBNLTEgZnJlcXVlbmNpZXMgd19pLCBpPTAuLi5NLTIgcGx1cyB0aGUgbGFzdCAgICAgICAgICoNCisqIHByZWRpY3RvciBjb2VmZmljaWVudCBhW01dLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJzdGRpby5oIg0KKyNpbmNsdWRlICJncmlkMTAwLnRhYiINCisNCisjZGVmaW5lIE0gICAxNg0KKyNkZWZpbmUgTkMgIChNLzIpDQorDQorLyogbG9jYWwgZnVuY3Rpb24gKi8NCitzdGF0aWMgX19pbmxpbmUgV29yZDE2IENoZWJwczIoV29yZDE2IHgsIFdvcmQxNiBmW10sIFdvcmQzMiBuKTsNCisNCit2b2lkIEF6X2lzcCgNCisJCVdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IHByZWRpY3RvciBjb2VmZmljaWVudHMgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaXNwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBJbW1pdHRhbmNlIHNwZWN0cmFsIHBhaXJzICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG9sZF9pc3BbXSAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogb2xkIGlzcFtdIChpbiBjYXNlIG5vdCBmb3VuZCBNIHJvb3RzKSAgKi8NCisJICAgKQ0KK3sNCisJV29yZDMyIGksIGosIG5mLCBpcCwgb3JkZXI7DQorCVdvcmQxNiB4bG93LCB5bG93LCB4aGlnaCwgeWhpZ2gsIHhtaWQsIHltaWQsIHhpbnQ7DQorCVdvcmQxNiB4LCB5LCBzaWduLCBleHA7DQorCVdvcmQxNiAqY29lZjsNCisJV29yZDE2IGYxW05DICsgMV0sIGYyW05DXTsNCisJV29yZDMyIHQwOw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIGZpbmQgdGhlIHN1bSBhbmQgZGlmZiBwb2x5bm9taWFscyBGMSh6KSBhbmQgRjIoeikgICAgICAgICAgICoNCisJICogICAgICBGMSh6KSA9IFtBKHopICsgel5NIEEoel4tMSldICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgIEYyKHopID0gW0EoeikgLSB6Xk0gQSh6Xi0xKV0vKDEtel4tMikgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogZm9yIChpPTA7IGk8TkM7IGkrKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgZjFbaV0gPSBhW2ldICsgYVtNLWldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICBmMltpXSA9IGFbaV0gLSBhW00taV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIGYxW05DXSA9IDIuMCphW05DXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiBmb3IgKGk9MjsgaTxOQzsgaSsrKSAgICAgICAgICAgIERpdmlkZSBieSAoMS16Xi0yKSAgICAgICAgICAqDQorCSAqICAgZjJbaV0gKz0gZjJbaS0yXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJZm9yIChpID0gMDsgaSA8IE5DOyBpKyspDQorCXsNCisJCXQwID0gYVtpXSA8PCAxNTsNCisJCWYxW2ldID0gdm9fcm91bmQodDAgKyAoYVtNIC0gaV0gPDwgMTUpKTsgICAgICAgIC8qID0oYVtpXSthW00taV0pLzIgKi8NCisJCWYyW2ldID0gdm9fcm91bmQodDAgLSAoYVtNIC0gaV0gPDwgMTUpKTsgICAgICAgIC8qID0oYVtpXS1hW00taV0pLzIgKi8NCisJfQ0KKwlmMVtOQ10gPSBhW05DXTsgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMjsgaSA8IE5DOyBpKyspICAgICAgICAgICAgICAgLyogRGl2aWRlIGJ5ICgxLXpeLTIpICovDQorCQlmMltpXSA9IGFkZDEoZjJbaV0sIGYyW2kgLSAyXSk7ICAgICANCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIEZpbmQgdGhlIElTUHMgKHJvb3RzIG9mIEYxKHopIGFuZCBGMih6KSApIHVzaW5nIHRoZSAgICAgICAgICAgICAgICAgKg0KKwkgKiBDaGVieXNoZXYgcG9seW5vbWlhbCBldmFsdWF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogVGhlIHJvb3RzIG9mIEYxKHopIGFuZCBGMih6KSBhcmUgYWx0ZXJuYXRpdmVseSBzZWFyY2hlZC4gICAgICAgICAgICAqDQorCSAqIFdlIHN0YXJ0IGJ5IGZpbmRpbmcgdGhlIGZpcnN0IHJvb3Qgb2YgRjEoeikgdGhlbiB3ZSBzd2l0Y2ggICAgICAgICAgKg0KKwkgKiB0byBGMih6KSB0aGVuIGJhY2sgdG8gRjEoeikgYW5kIHNvIG9uIHVudGlsIGFsbCByb290cyBhcmUgZm91bmQuICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAtIEV2YWx1YXRlIENoZWJ5c2hldiBwb2wuIGF0IGdyaWQgcG9pbnRzIGFuZCBjaGVjayBmb3Igc2lnbiBjaGFuZ2UuKg0KKwkgKiAgLSBJZiBzaWduIGNoYW5nZSB0cmFjayB0aGUgcm9vdCBieSBzdWJkaXZpZGluZyB0aGUgaW50ZXJ2YWwgICAgICAgICoNCisJICogICAgMiB0aW1lcyBhbmQgY2tlY2tpbmcgc2lnbiBjaGFuZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJbmYgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZm91bmQgZnJlcXVlbmNpZXMgKi8NCisJaXAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmRpY2F0b3IgZm9yIGYxIG9yIGYyICAgICAgKi8NCisJY29lZiA9IGYxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCW9yZGVyID0gTkM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl4bG93ID0gdm9ncmlkWzBdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl5bG93ID0gQ2hlYnBzMih4bG93LCBjb2VmLCBvcmRlcik7DQorCWogPSAwOw0KKwl3aGlsZSAoKG5mIDwgTSAtIDEpICYmIChqIDwgR1JJRF9QT0lOVFMpKQ0KKwl7DQorCQlqICsrOw0KKwkJeGhpZ2ggPSB4bG93OyAgICAgICAgICAgICAgICAgICAgIA0KKwkJeWhpZ2ggPSB5bG93OyAgICAgICAgICAgICAgICAgICAgICANCisJCXhsb3cgPSB2b2dyaWRbal07ICAgICAgICAgICAgICAgICAgICANCisJCXlsb3cgPSBDaGVicHMyKHhsb3csIGNvZWYsIG9yZGVyKTsNCisJCWlmICgoeWxvdyAqIHloaWdoKSA8PSAoV29yZDMyKSAwKQ0KKwkJew0KKwkJCS8qIGRpdmlkZSAyIHRpbWVzIHRoZSBpbnRlcnZhbCAqLw0KKwkJCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspDQorCQkJew0KKwkJCQl4bWlkID0gKHhsb3cgPj4gMSkgKyAoeGhpZ2ggPj4gMSk7ICAgICAgICAvKiB4bWlkID0gKHhsb3cgKyB4aGlnaCkvMiAqLw0KKwkJCQl5bWlkID0gQ2hlYnBzMih4bWlkLCBjb2VmLCBvcmRlcik7DQorCQkJCWlmICgoeWxvdyAqIHltaWQpIDw9IChXb3JkMzIpIDApDQorCQkJCXsNCisJCQkJCXloaWdoID0geW1pZDsgICAgICAgICANCisJCQkJCXhoaWdoID0geG1pZDsgICAgICAgICAgDQorCQkJCX0gZWxzZQ0KKwkJCQl7DQorCQkJCQl5bG93ID0geW1pZDsgICAgICAgICAgIA0KKwkJCQkJeGxvdyA9IHhtaWQ7ICAgICAgICAgIA0KKwkJCQl9DQorCQkJfQ0KKwkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCQkgKiBMaW5lYXIgaW50ZXJwb2xhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkJICogICAgeGludCA9IHhsb3cgLSB5bG93Kih4aGlnaC14bG93KS8oeWhpZ2gteWxvdyk7ICAgICAgICAgICAgKg0KKwkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQkJeCA9IHhoaWdoIC0geGxvdzsNCisJCQl5ID0geWhpZ2ggLSB5bG93Ow0KKwkJCWlmICh5ID09IDApDQorCQkJew0KKwkJCQl4aW50ID0geGxvdzsgICAgICAgICAgICAgICANCisJCQl9IGVsc2UNCisJCQl7DQorCQkJCXNpZ24gPSB5OyAgICAgICAgICAgICAgICAgDQorCQkJCXkgPSBhYnNfcyh5KTsNCisJCQkJZXhwID0gbm9ybV9zKHkpOw0KKwkJCQl5ID0geSA8PCBleHA7DQorCQkJCXkgPSBkaXZfcygoV29yZDE2KSAxNjM4MywgeSk7DQorCQkJCXQwID0geCAqIHk7DQorCQkJCXQwID0gKHQwID4+ICgxOSAtIGV4cCkpOw0KKwkJCQl5ID0gdm9fZXh0cmFjdF9sKHQwKTsgICAgICAgICAvKiB5PSAoeGhpZ2gteGxvdykvKHloaWdoLXlsb3cpIGluIFExMSAqLw0KKwkJCQlpZiAoc2lnbiA8IDApDQorCQkJCQl5ID0gLXk7DQorCQkJCXQwID0geWxvdyAqIHk7ICAgICAgLyogcmVzdWx0IGluIFEyNiAqLw0KKwkJCQl0MCA9ICh0MCA+PiAxMCk7ICAgICAgICAvKiByZXN1bHQgaW4gUTE1ICovDQorCQkJCXhpbnQgPSB2b19zdWIoeGxvdywgdm9fZXh0cmFjdF9sKHQwKSk7ICAgICAgICAvKiB4aW50ID0geGxvdyAtIHlsb3cqeSAqLw0KKwkJCX0NCisJCQlpc3BbbmZdID0geGludDsgICAgICAgICAgICAgICAgDQorCQkJeGxvdyA9IHhpbnQ7ICAgICAgICAgICAgICAgICAgIA0KKwkJCW5mKys7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCQlpZiAoaXAgPT0gMCkNCisJCQl7DQorCQkJCWlwID0gMTsgICAgICAgICAgICAgICAgICAgIA0KKwkJCQljb2VmID0gZjI7ICAgICAgICAgICAgICAgIA0KKwkJCQlvcmRlciA9IE5DIC0gMTsgICAgICAgICAgIA0KKwkJCX0gZWxzZQ0KKwkJCXsNCisJCQkJaXAgPSAwOyAgICAgICAgICAgICAgICAgICANCisJCQkJY29lZiA9IGYxOyAgICAgICAgICAgICAgICAgDQorCQkJCW9yZGVyID0gTkM7ICAgICAgICAgICAgICANCisJCQl9DQorCQkJeWxvdyA9IENoZWJwczIoeGxvdywgY29lZiwgb3JkZXIpOw0KKwkJfQ0KKwl9DQorCS8qIENoZWNrIGlmIE0tMSByb290cyBmb3VuZCAqLw0KKwlpZihuZiA8IE0gLSAxKQ0KKwl7DQorCQlmb3IgKGkgPSAwOyBpIDwgTTsgaSsrKQ0KKwkJew0KKwkJCWlzcFtpXSA9IG9sZF9pc3BbaV07ICAgICAgICAgIA0KKwkJfQ0KKwl9IGVsc2UNCisJew0KKwkJaXNwW00gLSAxXSA9IGFbTV0gPDwgMzsgICAgICAgICAgICAgICAgICAgICAgLyogRnJvbSBRMTIgdG8gUTE1IHdpdGggc2F0dXJhdGlvbiAqLw0KKwl9DQorCXJldHVybjsNCit9DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqIGZ1bmN0aW9uICBDaGVicHMyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgfn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgRXZhbHVhdGVzIHRoZSBDaGViaXNoZXYgcG9seW5vbWlhbCBzZXJpZXMgICAgICAgICAgICAgICAgICoNCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIFRoZSBwb2x5bm9taWFsIG9yZGVyIGlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICBuID0gTS8yICAgKE0gaXMgdGhlIHByZWRpY3Rpb24gb3JkZXIpICAgICAgICAgICAgICAgICAgICAqDQorKiAgVGhlIHBvbHlub21pYWwgaXMgZ2l2ZW4gYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgQyh4KSA9IGYoMClUX24oeCkgKyBmKDEpVF9uLTEoeCkgKyAuLi4gK2Yobi0xKVRfMSh4KSArIGYobikvMiAqDQorKiBBcmd1bWVudHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIHg6ICAgICBpbnB1dCB2YWx1ZSBvZiBldmFsdWF0aW9uOyB4ID0gY29zKGZyZXF1ZW5jeSkgaW4gUTE1ICoNCisqICBmW106ICAgY29lZmZpY2llbnRzIG9mIHRoZSBwb2wuICAgICAgICAgICAgICAgICAgICAgIGluIFExMSAqDQorKiAgbjogICAgIG9yZGVyIG9mIHRoZSBwb2wuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIFRoZSB2YWx1ZSBvZiBDKHgpIGlzIHJldHVybmVkLiAoU2F0dXJlZCB0byArLTEuOTkgaW4gUTE0KSAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIF9faW5saW5lIFdvcmQxNiBDaGVicHMyKFdvcmQxNiB4LCBXb3JkMTYgZltdLCBXb3JkMzIgbikNCit7DQorCVdvcmQzMiBpLCBjaGViOw0KKwlXb3JkMTYgYjBfaCwgYjBfbCwgYjFfaCwgYjFfbCwgYjJfaCwgYjJfbDsNCisJV29yZDMyIHQwOw0KKw0KKwkvKiBOb3RlOiBBbGwgY29tcHV0YXRpb24gYXJlIGRvbmUgaW4gUTI0LiAqLw0KKw0KKwl0MCA9IGZbMF0gPDwgMTM7DQorCWIyX2ggPSB0MCA+PiAxNjsNCisJYjJfbCA9ICh0MCAmIDB4ZmZmZik+PjE7DQorDQorCXQwID0gKChiMl9oICogeCk8PDEpICsgKCgoYjJfbCAqIHgpPj4xNSk8PDEpOw0KKwl0MCA8PD0gMTsNCisJdDAgKz0gKGZbMV0gPDwgMTMpOwkJCQkJCS8qICsgZlsxXSBpbiBRMjQgICAgICAgICovDQorDQorCWIxX2ggPSB0MCA+PiAxNjsNCisJYjFfbCA9ICh0MCAmIDB4ZmZmZikgPj4gMTsNCisNCisJZm9yIChpID0gMjsgaSA8IG47IGkrKykNCisJew0KKwkJdDAgPSAoKGIxX2ggKiB4KTw8MSkgKyAoKChiMV9sICogeCk+PjE1KTw8MSk7DQorDQorCQl0MCArPSAoYjJfaCAqICgtMTYzODQpKTw8MTsNCisJCXQwICs9IChmW2ldIDw8IDEyKTsNCisJCXQwIDw8PSAxOw0KKwkJdDAgLT0gKGIyX2wgPDwgMSk7CQkJCQkvKiB0MCA9IDIuMCp4KmIxIC0gYjIgKyBmW2ldOyAqLw0KKw0KKwkJYjBfaCA9IHQwID4+IDE2Ow0KKwkJYjBfbCA9ICh0MCAmIDB4ZmZmZikgPj4gMTsNCisNCisJCWIyX2wgPSBiMV9sOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBiMiA9IGIxOyAqLw0KKwkJYjJfaCA9IGIxX2g7ICAgICAgICAgICAgICAgICAgICAgICANCisJCWIxX2wgPSBiMF9sOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBiMSA9IGIwOyAqLw0KKwkJYjFfaCA9IGIwX2g7ICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKw0KKwl0MCA9ICgoYjFfaCAqIHgpPDwxKSArICgoKGIxX2wgKiB4KT4+MTUpPDwxKTsNCisJdDAgKz0gKGIyX2ggKiAoLTMyNzY4KSk8PDE7CQkJCS8qIHQwID0geCpiMSAtIGIyICAgICAgICAgICovDQorCXQwIC09IChiMl9sIDw8IDEpOw0KKwl0MCArPSAoZltuXSA8PCAxMik7CQkJCQkJLyogdDAgPSB4KmIxIC0gYjIgKyBmW2ldLzIgKi8NCisNCisJdDAgPSBMX3NobDIodDAsIDYpOyAgICAgICAgICAgICAgICAgICAgIC8qIFEyNCB0byBRMzAgd2l0aCBzYXR1cmF0aW9uICovDQorDQorCWNoZWIgPSBleHRyYWN0X2godDApOyAgICAgICAgICAgICAgICAgIC8qIFJlc3VsdCBpbiBRMTQgICAgICAgICAgICAgICovDQorDQorCWlmIChjaGViID09IC0zMjc2OCkNCisJew0KKwkJY2hlYiA9IC0zMjc2NzsgICAgICAgICAgICAgICAgICAgICAvKiB0byBhdm9pZCBzYXR1cmF0aW9uIGluIEF6X2lzcCAqLw0KKwl9DQorCXJldHVybiAoY2hlYik7DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYml0cy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9iaXRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBkMWEwMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYml0cy5jCkBAIC0wLDAgKzEsMjEwIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICAgICBGaWxlOiBiaXRzLmMNCisNCisJICAgRGVzY3JpcHRpb246IFBlcmZvcm1zIGJpdCBzdHJlYW0gbWFuaXB1bGF0aW9uDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorI2luY2x1ZGUgImJpdHMuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisjaW5jbHVkZSAiZHR4LmgiDQorI2luY2x1ZGUgIm1pbWVfaW8udGFiIg0KKw0KKw0KK2ludCBQYWNrQml0cyhXb3JkMTYgcHJtc1tdLCAgICAgICAgICAgICAvKiAgaTogYW5hbHlzaXMgcGFyYW1ldGVycyAqLw0KKwkJCSBXb3JkMTYgY29kaW5nX21vZGUsICAgICAgICAvKiAgaTogY29kaW5nIGJpdC1zdHJlYW0gcmF0aW8gbW9kZSAqLw0KKwkJCSBXb3JkMTYgbW9kZSwgICAgICAgICAgICAgICAvKiAgaTogY29kaW5nIGJpdC1zdHJlYW0gcmF0aW8gbW9kZSovIA0KKwkJCSBDb2Rlcl9TdGF0ZSAqc3QgICAgICAgICAgICAvKmkvbzogY29kZXIgZ2xvYmFsIHBhcmFtZXRlcnMgc3RydWN0ICovICAgICAgICAgICANCisJCQkgKQ0KK3sNCisJV29yZDE2IGksIGZyYW1lX3R5cGU7DQorCVVXb3JkOCB0ZW1wOw0KKwlVV29yZDggKnN0cmVhbV9wdHI7DQorCVdvcmQxNiBiaXRzdHJlYW1mb3JtYXQgPSBzdC0+ZnJhbWVUeXBlOw0KKw0KKwl1bnNpZ25lZCBzaG9ydCogZGF0YU91dCA9IHN0LT5vdXRwdXRTdHJlYW07DQorDQorCWlmIChjb2RpbmdfbW9kZSA9PSBNUkRUWCkNCisJewkgICANCisJCXN0LT5zaWRfdXBkYXRlX2NvdW50ZXItLTsNCisNCisJCWlmIChzdC0+cHJldl9mdCA9PSBUWF9TUEVFQ0gpDQorCQl7DQorCQkJZnJhbWVfdHlwZSA9IFRYX1NJRF9GSVJTVDsNCisJCQlzdC0+c2lkX3VwZGF0ZV9jb3VudGVyID0gMzsNCisJCX0gZWxzZQ0KKwkJew0KKwkJCWlmICgoc3QtPnNpZF9oYW5kb3Zlcl9kZWJ0ID4gMCkgJiYgKHN0LT5zaWRfdXBkYXRlX2NvdW50ZXIgPiAyKSkNCisJCQl7DQorCQkJCS8qIGVuc3VyZSBleHRyYSB1cGRhdGVzIGFyZSAgcHJvcGVybHkgZGVsYXllZCBhZnRlciBhIHBvc3NpYmxlIFNJRF9GSVJTVCAqLw0KKwkJCQlmcmFtZV90eXBlID0gVFhfU0lEX1VQREFURTsNCisJCQkJc3QtPnNpZF9oYW5kb3Zlcl9kZWJ0LS07DQorCQkJfSBlbHNlDQorCQkJew0KKwkJCQlpZiAoc3QtPnNpZF91cGRhdGVfY291bnRlciA9PSAwKQ0KKwkJCQl7DQorCQkJCQlmcmFtZV90eXBlID0gVFhfU0lEX1VQREFURTsNCisJCQkJCXN0LT5zaWRfdXBkYXRlX2NvdW50ZXIgPSA4Ow0KKwkJCQl9IGVsc2UNCisJCQkJew0KKwkJCQkJZnJhbWVfdHlwZSA9IFRYX05PX0RBVEE7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0gZWxzZQ0KKwl7DQorCQlzdC0+c2lkX3VwZGF0ZV9jb3VudGVyID0gODsNCisJCWZyYW1lX3R5cGUgPSBUWF9TUEVFQ0g7DQorCX0NCisJc3QtPnByZXZfZnQgPSBmcmFtZV90eXBlOw0KKw0KKwlpZihiaXRzdHJlYW1mb3JtYXQgPT0gMCkJCQkJLyogZGVmYXVsdCBmaWxlIGZvcm1hdCAqLw0KKwl7DQorCQkqKGRhdGFPdXQpID0gVFhfRlJBTUVfVFlQRTsNCisJCSooZGF0YU91dCArIDEpID0gZnJhbWVfdHlwZTsNCisJCSooZGF0YU91dCArIDIpID0gbW9kZTsNCisJCWZvciAoaSA9IDA7IGkgPCBuYl9vZl9iaXRzW2NvZGluZ19tb2RlXTsgaSsrKQ0KKwkJew0KKwkJCSooZGF0YU91dCArIDMgKyBpKSA9IHBybXNbaV07DQorCQl9DQorCQlyZXR1cm4gICgzICsgbmJfb2ZfYml0c1tjb2RpbmdfbW9kZV0pPDwxOw0KKwl9IGVsc2UNCisJew0KKwkJaWYgKGJpdHN0cmVhbWZvcm1hdCA9PSAxKQkJLyogSVRVIGZpbGUgZm9ybWF0ICovDQorCQl7ICAJCQkJCQkNCisJCQkqKGRhdGFPdXQpID0gMHg2YjIxOw0KKwkJCWlmKGZyYW1lX3R5cGUgIT0gVFhfTk9fREFUQSAmJiBmcmFtZV90eXBlICE9IFRYX1NJRF9GSVJTVCkNCisJCQl7DQorCQkJCSooZGF0YU91dCArIDEpID0gbmJfb2ZfYml0c1tjb2RpbmdfbW9kZV07DQorCQkJCWZvciAoaSA9IDA7IGkgPCBuYl9vZl9iaXRzW2NvZGluZ19tb2RlXTsgaSsrKQ0KKwkJCQl7DQorCQkJCQlpZihwcm1zW2ldID09IEJJVF8wKXsNCisJCQkJCQkqKGRhdGFPdXQgKyAyICsgaSkgPSBCSVRfMF9JVFU7CSAJCQkNCisJCQkJCX0NCisJCQkJCWVsc2V7DQorCQkJCQkJKihkYXRhT3V0ICsgMiArIGkpID0gQklUXzFfSVRVOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJCXJldHVybiAoMiArIG5iX29mX2JpdHNbY29kaW5nX21vZGVdKTw8MTsgICANCisJCQl9IGVsc2UNCisJCQl7DQorCQkJCSooZGF0YU91dCArIDEpID0gMDsNCisJCQkJcmV0dXJuIDI8PDE7CSAgIA0KKwkJCX0NCisJCX0gZWxzZQkJCQkJCQkvKiBNSU1FL3N0b3JhZ2UgZmlsZSBmb3JtYXQgKi8NCisJCXsNCisjZGVmaW5lIE1SU0lEIDkNCisJCQkvKiBjaGFuZ2UgbW9kZSBpbmRleCBpbiBjYXNlIG9mIFNJRCBmcmFtZSAqLw0KKwkJCWlmIChjb2RpbmdfbW9kZSA9PSBNUkRUWCkNCisJCQl7DQorCQkJCWNvZGluZ19tb2RlID0gTVJTSUQ7DQorCQkJCWlmIChmcmFtZV90eXBlID09IFRYX1NJRF9GSVJTVCkNCisJCQkJew0KKwkJCQkJZm9yIChpID0gMDsgaSA8IE5CQklUU19TSUQ7IGkrKykJcHJtc1tpXSA9IEJJVF8wOw0KKwkJCQl9DQorCQkJfQ0KKwkJCS8qIC0+IGZvcmNlIE5PX0RBVEEgZnJhbWUgKi8NCisJCQlpZiAoY29kaW5nX21vZGUgPCAwIHx8IGNvZGluZ19tb2RlID4gMTUgfHwgKGNvZGluZ19tb2RlID4gTVJTSUQgJiYgY29kaW5nX21vZGUgPCAxNCkpDQorCQkJew0KKwkJCQljb2RpbmdfbW9kZSA9IDE1Ow0KKwkJCX0NCisJCQkvKiBtYXJrIGVtcHR5IGZyYW1lcyBiZXR3ZWVuIFNJRCB1cGRhdGVzIGFzIE5PX0RBVEEgZnJhbWVzICovDQorCQkJaWYgKGNvZGluZ19tb2RlID09IE1SU0lEICYmIGZyYW1lX3R5cGUgPT0gVFhfTk9fREFUQSkNCisJCQl7DQorCQkJCWNvZGluZ19tb2RlID0gMTU7DQorCQkJfQ0KKwkJCS8qIHNldCBwb2ludGVyIGZvciBwYWNrZWQgZnJhbWUsIG5vdGUgdGhhdCB3ZSBoYW5kbGUgZGF0YSBhcyBieXRlcyAqLw0KKwkJCXN0cmVhbV9wdHIgPSAoVVdvcmQ4KilkYXRhT3V0Ow0KKwkJCS8qIGluc2VydCB0YWJsZSBvZiBjb250ZW50cyAoVG9DKSBieXRlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhY2tldCAqLw0KKwkJCSpzdHJlYW1fcHRyID0gdG9jX2J5dGVbY29kaW5nX21vZGVdOw0KKwkJCXN0cmVhbV9wdHIrKzsNCisJCQl0ZW1wID0gMDsNCisJCQkvKiBzb3J0IGFuZCBwYWNrIEFNUi1XQiBzcGVlY2ggb3IgU0lEIGJpdHMgKi8NCisJCQlmb3IgKGkgPSAxOyBpIDwgdW5wYWNrZWRfc2l6ZVtjb2RpbmdfbW9kZV0gKyAxOyBpKyspDQorCQkJew0KKwkJCQlpZiAocHJtc1tzb3J0X3B0cltjb2RpbmdfbW9kZV1baS0xXV0gPT0gQklUXzEpDQorCQkJCXsNCisJCQkJCXRlbXArKzsNCisJCQkJfQ0KKwkJCQlpZiAoaSYweDcpDQorCQkJCXsNCisJCQkJCXRlbXAgPDw9IDE7DQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJCQl7DQorCQkJCQkqc3RyZWFtX3B0ciA9IHRlbXA7DQorCQkJCQlzdHJlYW1fcHRyKys7DQorCQkJCQl0ZW1wID0gMDsNCisJCQkJfQ0KKwkJCX0NCisJCQkvKiBpbnNlcnQgU0lEIHR5cGUgaW5kaWNhdGlvbiBhbmQgc3BlZWNoIG1vZGUgaW4gY2FzZSBvZiBTSUQgZnJhbWUgKi8NCisJCQlpZiAoY29kaW5nX21vZGUgPT0gTVJTSUQpDQorCQkJew0KKwkJCQlpZiAoZnJhbWVfdHlwZSA9PSBUWF9TSURfVVBEQVRFKQ0KKwkJCQl7DQorCQkJCQl0ZW1wKys7DQorCQkJCX0NCisJCQkJdGVtcCA8PD0gNDsNCisJCQkJdGVtcCArPSBtb2RlICYgMHgwMDBGOw0KKwkJCX0NCisJCQkvKiBpbnNlcnQgdW51c2VkIGJpdHMgKHplcm9zKSBhdCB0aGUgdGFpbCBvZiB0aGUgbGFzdCBieXRlICovDQorCQkJaWYgKHVudXNlZF9zaXplW2NvZGluZ19tb2RlXSkNCisJCQl7DQorCQkJCXRlbXAgPDw9ICh1bnVzZWRfc2l6ZVtjb2RpbmdfbW9kZV0gLSAxKTsNCisJCQl9DQorCQkJKnN0cmVhbV9wdHIgPSB0ZW1wOw0KKwkJCS8qIHdyaXRlIHBhY2tlZCBmcmFtZSBpbnRvIGZpbGUgKDEgYnl0ZSBhZGRlZCB0byBjb3ZlciBUb0MgZW50cnkpICovDQorCQkJcmV0dXJuICgxICsgcGFja2VkX3NpemVbY29kaW5nX21vZGVdKTsNCisJCX0NCisJfQ0KK30NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogUGFybV9zZXJpYWwgLT4gY29udmVydCBwYXJhbWV0ZXJzIHRvIHNlcmlhbCBzdHJlYW0gICoNCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgUGFybV9zZXJpYWwoDQorCQlXb3JkMTYgdmFsdWUsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGFyYW1ldGVyIHZhbHVlICovDQorCQlXb3JkMTYgbm9fb2ZfYml0cywgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogbnVtYmVyIG9mIGJpdHMgICovDQorCQlXb3JkMTYgKiogcHJtcw0KKwkJKQ0KK3sNCisJV29yZDE2IGksIGJpdDsNCisJKnBybXMgKz0gbm9fb2ZfYml0czsgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IG5vX29mX2JpdHM7IGkrKykNCisJew0KKwkJYml0ID0gKFdvcmQxNikgKHZhbHVlICYgMHgwMDAxKTsgICAgLyogZ2V0IGxzYiAqLw0KKwkJaWYgKGJpdCA9PSAwKQ0KKwkJCSotLSgqcHJtcykgPSBCSVRfMDsNCisJCWVsc2UNCisJCQkqLS0oKnBybXMpID0gQklUXzE7DQorCQl2YWx1ZSA+Pj0gMTsgICAgICAgICAgDQorCX0NCisJKnBybXMgKz0gbm9fb2ZfYml0czsgICAgICAgICAgICAgICAgICANCisJcmV0dXJuOw0KK30NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2MydDY0ZnguYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYzJ0NjRmeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZmM0YzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2MydDY0ZnguYwpAQCAtMCwwICsxLDI5NyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IGMydDY0ZnguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCSAgIERlc2NyaXB0aW9uOlBlcmZvcm1zIGFsZ2VicmFpYyBjb2RlYm9vayBzZWFyY2ggZm9yIDYuNjBrYml0cyBtb2RlKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm1hdGhfb3AuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKw0KKyNkZWZpbmUgTkJfVFJBQ0sgIDINCisjZGVmaW5lIFNURVAgICAgICAyDQorI2RlZmluZSBOQl9QT1MgICAgMzINCisjZGVmaW5lIE1TSVpFICAgICAxMDI0DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiAgQUNFTFBfMnQ2NF9meCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAxMiBiaXRzIGFsZ2VicmFpYyBjb2RlYm9vay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIDIgdHJhY2tzIHggMzIgcG9zaXRpb25zIHBlciB0cmFjayA9IDY0IHNhbXBsZXMuICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAxMiBiaXRzIC0tPiAyIHB1bHNlcyBpbiBhIGZyYW1lIG9mIDY0IHNhbXBsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogQWxsIHB1bHNlcyBjYW4gaGF2ZSB0d28gKDIpIHBvc3NpYmxlIGFtcGxpdHVkZXM6ICsxIG9yIC0xLiAgICAgICAgICAgICAqDQorKiBFYWNoIHB1bHNlIGNhbiBoYXZlIDMyIHBvc3NpYmxlIHBvc2l0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIEFDRUxQXzJ0NjRfZngoDQorCQlXb3JkMTYgZG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA8MTJiIDogY29ycmVsYXRpb24gYmV0d2VlbiB0YXJnZXQgeFtdIGFuZCBIW10gICAgICAqLw0KKwkJV29yZDE2IGNuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgPDEyYiA6IHJlc2lkdWFsIGFmdGVyIGxvbmcgdGVybSBwcmVkaWN0aW9uICAgICAgICAgKi8NCisJCVdvcmQxNiBIW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMjogaW1wdWxzZSByZXNwb25zZSBvZiB3ZWlnaHRlZCBzeW50aGVzaXMgZmlsdGVyICovDQorCQlXb3JkMTYgY29kZVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBROSA6IGFsZ2VicmFpYyAoZml4ZWQpIGNvZGVib29rIGV4Y2l0YXRpb24gICAgICAgICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTkgOiBmaWx0ZXJlZCBmaXhlZCBjb2RlYm9vayBleGNpdGF0aW9uICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIDogaW5kZXggKDEyKTogNSsxKzUrMSA9IDExIGJpdHMuICAgICAgICAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMzIgaSwgaiwgaywgaTAsIGkxLCBpeCwgaXksIHBvcywgcG9zMjsNCisJV29yZDE2IHBzLCBwc2ssIHBzMSwgcHMyLCBhbHBrLCBhbHAxLCBhbHAyLCBzcTsNCisJV29yZDE2IGFscCwgdmFsLCBleHAsIGtfY24sIGtfZG47DQorCVdvcmQxNiAqcDAsICpwMSwgKnAyLCAqcHNpZ247DQorCVdvcmQxNiAqaCwgKmhfaW52LCAqcHRyX2gxLCAqcHRyX2gyLCAqcHRyX2hmOw0KKw0KKwlXb3JkMTYgc2lnbltMX1NVQkZSXSwgdmVjW0xfU1VCRlJdLCBkbjJbTF9TVUJGUl07DQorCVdvcmQxNiBoX2J1Zls0ICogTF9TVUJGUl0gPSB7MH07DQorCVdvcmQxNiBycml4aXhbTkJfVFJBQ0tdW05CX1BPU107DQorCVdvcmQxNiBycml4aXlbTVNJWkVdOw0KKwlXb3JkMzIgcywgY29yOw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIEZpbmQgc2lnbiBmb3IgZWFjaCBwdWxzZSBwb3NpdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJYWxwID0gODE5MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHAgPSAyLjAgKFExMikgKi8NCisNCisJLyogY2FsY3VsYXRlIGVuZXJneSBmb3Igbm9ybWFsaXphdGlvbiBvZiBjbltdIGFuZCBkbltdICovDQorCS8qIHNldCBrX2NuID0gMzIuLjMyNzY3IChlbmVyX2NuID0gMl4zMC4uMjU2LTApICovDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJcyA9IERvdF9wcm9kdWN0MTJfYXNtKGNuLCBjbiwgTF9TVUJGUiwgJmV4cCk7DQorI2Vsc2UNCisJcyA9IERvdF9wcm9kdWN0MTIoY24sIGNuLCBMX1NVQkZSLCAmZXhwKTsNCisjZW5kaWYNCisNCisJSXNxcnRfbigmcywgJmV4cCk7DQorCXMgPSBMX3NobChzLCBhZGQxKGV4cCwgNSkpOyAgICAgICAgICAgICANCisJa19jbiA9IHZvX3JvdW5kKHMpOw0KKw0KKwkvKiBzZXQga19kbiA9IDMyLi41MTIgKGVuZXJfZG4gPSAyXjMwLi4yXjIyKSAqLw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJcyA9IERvdF9wcm9kdWN0MTJfYXNtKGRuLCBkbiwgTF9TVUJGUiwgJmV4cCk7DQorI2Vsc2UNCisJcyA9IERvdF9wcm9kdWN0MTIoZG4sIGRuLCBMX1NVQkZSLCAmZXhwKTsNCisjZW5kaWYNCisNCisJSXNxcnRfbigmcywgJmV4cCk7DQorCWtfZG4gPSB2b19yb3VuZChMX3NobChzLCAoZXhwICsgOCkpKTsgICAgLyoga19kbiA9IDI1Ni4uNDA5NiAqLw0KKwlrX2RuID0gdm9fbXVsdF9yKGFscCwga19kbik7ICAgICAgICAgICAgICAvKiBhbHAgaW4gUTEyICovDQorDQorCS8qIG1peCBub3JtYWxpemVkIGNuW10gYW5kIGRuW10gKi8NCisJcDAgPSBjbjsNCisJcDEgPSBkbjsNCisJcDIgPSBkbjI7DQorDQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSLzQ7IGkrKykNCisJew0KKwkJcyA9IChrX2NuKiAoKnAwKyspKSsoa19kbiAqICgqcDErKykpOw0KKwkJKnAyKysgPSBzID4+IDc7DQorCQlzID0gKGtfY24qICgqcDArKykpKyhrX2RuICogKCpwMSsrKSk7DQorCQkqcDIrKyA9IHMgPj4gNzsNCisJCXMgPSAoa19jbiogKCpwMCsrKSkrKGtfZG4gKiAoKnAxKyspKTsNCisJCSpwMisrID0gcyA+PiA3Ow0KKwkJcyA9IChrX2NuKiAoKnAwKyspKSsoa19kbiAqICgqcDErKykpOw0KKwkJKnAyKysgPSBzID4+IDc7IA0KKwl9DQorDQorCS8qIHNldCBzaWduIGFjY29yZGluZyB0byBkbjJbXSA9IGtfY24qY25bXSArIGtfZG4qZG5bXSAgICAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSArKykNCisJew0KKwkJdmFsID0gZG5baV07ICAgICAgICAgICAgICAgICAgIA0KKwkJcHMgPSBkbjJbaV07ICAgICAgICAgICAgICAgICAgIA0KKwkJaWYgKHBzID49IDApDQorCQl7DQorCQkJc2lnbltpXSA9IDMyNzY3OyAgICAgICAgICAgICAvKiBzaWduID0gKzEgKFExMikgKi8NCisJCQl2ZWNbaV0gPSAtMzI3Njg7ICAgICAgICAgICANCisJCX0gZWxzZQ0KKwkJew0KKwkJCXNpZ25baV0gPSAtMzI3Njg7ICAgICAgICAgICAgLyogc2lnbiA9IC0xIChRMTIpICovDQorCQkJdmVjW2ldID0gMzI3Njc7ICAgICAgICAgICAgDQorCQkJZG5baV0gPSAtdmFsOw0KKwkJfQ0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBDb21wdXRlIGhfaW52W2ldLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkvKiBpbXB1bHNlIHJlc3BvbnNlIGJ1ZmZlciBmb3IgZmFzdCBjb21wdXRhdGlvbiAqLw0KKwloID0gaF9idWYgKyBMX1NVQkZSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWhfaW52ID0gaCArIChMX1NVQkZSPDwxKTsgICAgICAgICANCisNCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJew0KKwkJaFtpXSA9IEhbaV07ICAgICAgICAgICAgICAgICAgICAgICANCisJCWhfaW52W2ldID0gdm9fbmVnYXRlKGhbaV0pOyAgICAgICAgICAgDQorCX0NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIENvbXB1dGUgcnJpeGl4W11bXSBuZWVkZWQgZm9yIHRoZSBjb2RlYm9vayBzZWFyY2guICAgICAgICAgKg0KKwkgKiBSZXN1bHQgaXMgbXVsdGlwbGllZCBieSAwLjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkvKiBJbml0IHBvaW50ZXJzIHRvIGxhc3QgcG9zaXRpb24gb2YgcnJpeGl4W10gKi8NCisJcDAgPSAmcnJpeGl4WzBdW05CX1BPUyAtIDFdOyAgICAgICAgICAgDQorCXAxID0gJnJyaXhpeFsxXVtOQl9QT1MgLSAxXTsgICAgICAgICAgIA0KKw0KKwlwdHJfaDEgPSBoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJY29yID0gMHgwMDAxMDAwMEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3Igcm91bmRpbmcgKi8NCisJZm9yIChpID0gMDsgaSA8IE5CX1BPUzsgaSsrKQ0KKwl7DQorCQljb3IgKz0gKCgqcHRyX2gxKSAqICgqcHRyX2gxKSA8PCAxKTsNCisJCXB0cl9oMSsrOw0KKwkJKnAxLS0gPSAoZXh0cmFjdF9oKGNvcikgPj4gMSk7ICAgICAgICAgICAgDQorCQljb3IgKz0gKCgqcHRyX2gxKSAqICgqcHRyX2gxKSA8PCAxKTsNCisJCXB0cl9oMSsrOw0KKwkJKnAwLS0gPSAoZXh0cmFjdF9oKGNvcikgPj4gMSk7ICAgICAgICAgICAgDQorCX0NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIENvbXB1dGUgcnJpeGl5W11bXSBuZWVkZWQgZm9yIHRoZSBjb2RlYm9vayBzZWFyY2guICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCXBvcyA9IE1TSVpFIC0gMTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwlwb3MyID0gTVNJWkUgLSAyOyAgICAgICAgICAgICAgICAgICAgICANCisJcHRyX2hmID0gaCArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoayA9IDA7IGsgPCBOQl9QT1M7IGsrKykNCisJew0KKwkJcDEgPSAmcnJpeGl5W3Bvc107ICAgICAgICAgICAgICAgICANCisJCXAwID0gJnJyaXhpeVtwb3MyXTsgICAgICAgICAgICAgICAgDQorCQljb3IgPSAweDAwMDA4MDAwTDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3Igcm91bmRpbmcgKi8NCisJCXB0cl9oMSA9IGg7ICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlwdHJfaDIgPSBwdHJfaGY7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwkJZm9yIChpID0gKGsgKyAxKTsgaSA8IE5CX1BPUzsgaSsrKQ0KKwkJew0KKwkJCWNvciArPSAoKCpwdHJfaDEpICogKCpwdHJfaDIpKTw8MTsNCisJCQlwdHJfaDErKzsNCisJCQlwdHJfaDIrKzsNCisJCQkqcDEgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgDQorCQkJY29yICs9ICgoKnB0cl9oMSkgKiAoKnB0cl9oMikpPDwxOw0KKwkJCXB0cl9oMSsrOw0KKwkJCXB0cl9oMisrOw0KKwkJCSpwMCA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgIA0KKw0KKwkJCXAxIC09IChOQl9QT1MgKyAxKTsNCisJCQlwMCAtPSAoTkJfUE9TICsgMSk7DQorCQl9DQorCQljb3IgKz0gKCgqcHRyX2gxKSAqICgqcHRyX2gyKSk8PDE7DQorCQlwdHJfaDErKzsNCisJCXB0cl9oMisrOw0KKwkJKnAxID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgICAgICANCisNCisJCXBvcyAtPSBOQl9QT1M7DQorCQlwb3MyLS07DQorCQlwdHJfaGYgKz0gU1RFUDsNCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogTW9kaWZpY2F0aW9uIG9mIHJyaXhpeVtdW10gdG8gdGFrZSBzaWducyBpbnRvIGFjY291bnQuICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJcDAgPSBycml4aXk7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkgKz0gU1RFUCkNCisJew0KKwkJcHNpZ24gPSBzaWduOyAgICAgICAgICAgICAgICAgICAgICANCisJCWlmIChwc2lnbltpXSA8IDApDQorCQl7DQorCQkJcHNpZ24gPSB2ZWM7ICAgICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwkJZm9yIChqID0gMTsgaiA8IExfU1VCRlI7IGogKz0gU1RFUCkNCisJCXsNCisJCQkqcDAgPSB2b19tdWx0KCpwMCwgcHNpZ25bal0pOyAgICAgDQorCQkJcDArKzsNCisJCX0NCisJfQ0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIHNlYXJjaCAyIHB1bHNlczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogfkB+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAzMiBwb3MgeCAzMiBwb3MgPSAxMDI0IHRlc3RzIChhbGwgY29tYmluYWlzb25zIGlzIHRlc3RlZCkgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCXAwID0gcnJpeGl4WzBdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlwMSA9IHJyaXhpeFsxXTsgICAgICAgICAgICAgICAgICAgICAgICANCisJcDIgPSBycml4aXk7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJcHNrID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWFscGsgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlpeCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJaXkgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoaTAgPSAwOyBpMCA8IExfU1VCRlI7IGkwICs9IFNURVApDQorCXsNCisJCXBzMSA9IGRuW2kwXTsgICAgICAgICAgICAgICAgICAgICAgDQorCQlhbHAxID0gKCpwMCsrKTsgICAgICAgICAgICAgICAgICAgIA0KKwkJcG9zID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCWZvciAoaTEgPSAxOyBpMSA8IExfU1VCRlI7IGkxICs9IFNURVApDQorCQl7DQorCQkJcHMyID0gYWRkMShwczEsIGRuW2kxXSk7DQorCQkJYWxwMiA9IGFkZDEoYWxwMSwgYWRkMSgqcDErKywgKnAyKyspKTsNCisJCQlzcSA9IHZvX211bHQocHMyLCBwczIpOw0KKwkJCXMgPSB2b19MX211bHQoYWxwaywgc3EpIC0gKChwc2sgKiBhbHAyKTw8MSk7DQorCQkJaWYgKHMgPiAwKQ0KKwkJCXsNCisJCQkJcHNrID0gc3E7ICAgICAgICAgICAgICAgICAgDQorCQkJCWFscGsgPSBhbHAyOyAgICAgICAgICAgICAgIA0KKwkJCQlwb3MgPSBpMTsgICAgICAgICAgICAgICAgICANCisJCQl9DQorCQl9DQorCQlwMSAtPSBOQl9QT1M7DQorCQlpZiAocG9zID49IDApDQorCQl7DQorCQkJaXggPSBpMDsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJaXkgPSBwb3M7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogQnVpbGQgdGhlIGNvZGV3b3JkLCB0aGUgZmlsdGVyZWQgY29kZXdvcmQgYW5kIGluZGV4IG9mIGNvZGV2ZWN0b3IuKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwl7DQorCQljb2RlW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorDQorCWkwID0gKGl4ID4+IDEpOyAgICAgICAgICAgICAgICAgICAgICAgLyogcG9zIG9mIHB1bHNlIDEgKDAuLjMxKSAqLw0KKwlpMSA9IChpeSA+PiAxKTsgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvcyBvZiBwdWxzZSAyICgwLi4zMSkgKi8NCisJaWYgKHNpZ25baXhdID4gMCkNCisJew0KKwkJY29kZVtpeF0gPSA1MTI7ICAgICAgICAgICAgICAgICAgICAgLyogY29kZXdvcmQgaW4gUTkgZm9ybWF0ICovDQorCQlwMCA9IGggLSBpeDsgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9IGVsc2UNCisJew0KKwkJY29kZVtpeF0gPSAtNTEyOyAgICAgICAgICAgICAgICAgICANCisJCWkwICs9IE5CX1BPUzsgICAgICAgICAgICAgICAgICAgICAgDQorCQlwMCA9IGhfaW52IC0gaXg7ICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmIChzaWduW2l5XSA+IDApDQorCXsNCisJCWNvZGVbaXldID0gNTEyOyAgICAgICAgICAgICAgICAgICAgDQorCQlwMSA9IGggLSBpeTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9IGVsc2UNCisJew0KKwkJY29kZVtpeV0gPSAtNTEyOyAgICAgICAgICAgICAgICAgICANCisJCWkxICs9IE5CX1BPUzsgICAgICAgICAgICAgICAgICAgICAgDQorCQlwMSA9IGhfaW52IC0gaXk7ICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCSppbmRleCA9IGFkZDEoKGkwIDw8IDYpLCBpMSk7ICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwl7DQorCQl5W2ldID0gdm9fc2hyX3IoYWRkMSgoKnAwKyspLCAoKnAxKyspKSwgMyk7DQorCX0NCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2M0dDY0ZnguYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYzR0NjRmeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YmE5NWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2M0dDY0ZnguYwpAQCAtMCwwICsxLDEwNDMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IGM0dDY0ZnguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKgkgICBEZXNjcmlwdGlvbjpQZXJmb3JtcyBhbGdlYnJhaWMgY29kZWJvb2sgc2VhcmNoIGZvciBoaWdoZXIgbW9kZXMgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogQUNFTFBfNHQ2NF9meCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIDIwLCAzNiwgNDQsIDUyLCA2NCwgNzIsIDg4IGJpdHMgYWxnZWJyYWljIGNvZGVib29rLiAgICAgICAgICAgICAgICAgICAqDQorKiA0IHRyYWNrcyB4IDE2IHBvc2l0aW9ucyBwZXIgdHJhY2sgPSA2NCBzYW1wbGVzLiAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIDIwIGJpdHMgLS0+IDQgcHVsc2VzIGluIGEgZnJhbWUgb2YgNjQgc2FtcGxlcy4gICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAzNiBiaXRzIC0tPiA4IHB1bHNlcyBpbiBhIGZyYW1lIG9mIDY0IHNhbXBsZXMuICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogNDQgYml0cyAtLT4gMTAgcHVsc2VzIGluIGEgZnJhbWUgb2YgNjQgc2FtcGxlcy4gICAgICAgICAgICAgICAgICAgICAgICoNCisqIDUyIGJpdHMgLS0+IDEyIHB1bHNlcyBpbiBhIGZyYW1lIG9mIDY0IHNhbXBsZXMuICAgICAgICAgICAgICAgICAgICAgICAqDQorKiA2NCBiaXRzIC0tPiAxNiBwdWxzZXMgaW4gYSBmcmFtZSBvZiA2NCBzYW1wbGVzLiAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogNzIgYml0cyAtLT4gMTggcHVsc2VzIGluIGEgZnJhbWUgb2YgNjQgc2FtcGxlcy4gICAgICAgICAgICAgICAgICAgICAgICoNCisqIDg4IGJpdHMgLS0+IDI0IHB1bHNlcyBpbiBhIGZyYW1lIG9mIDY0IHNhbXBsZXMuICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogQWxsIHB1bHNlcyBjYW4gaGF2ZSB0d28gKDIpIHBvc3NpYmxlIGFtcGxpdHVkZXM6ICsxIG9yIC0xLiAgICAgICAgICAgICoNCisqIEVhY2ggcHVsc2UgY2FuIGhhdmUgc2l4dGVlbiAoMTYpIHBvc3NpYmxlIHBvc2l0aW9ucy4gICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJtYXRoX29wLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisNCisjaW5jbHVkZSAicV9wdWxzZS5oIg0KKw0KK3N0YXRpYyBXb3JkMTYgdGlwb3NbMzZdID0gew0KKwkwLCAxLCAyLCAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBwb2ludCAmaXBvc1swXSwgMXN0IGl0ZXIgKi8NCisJMSwgMiwgMywgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgcG9pbnQgJmlwb3NbNF0sIDJuZCBpdGVyICovDQorCTIsIDMsIDAsIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIHBvaW50ICZpcG9zWzhdLCAzcmQgaXRlciAqLw0KKwkzLCAwLCAxLCAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBwb2ludCAmaXBvc1sxMl0sIDR0aCBpdGVyICovDQorCTAsIDEsIDIsIDMsDQorCTEsIDIsIDMsIDAsDQorCTIsIDMsIDAsIDEsDQorCTMsIDAsIDEsIDIsDQorCTAsIDEsIDIsIDN9OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBwb2ludCBmb3IgMjQgcHVsc2VzICZpcG9zWzM1XSwgNHRoIGl0ZXIgKi8NCisNCisjZGVmaW5lIE5CX1BVTFNFX01BWCAgMjQNCisNCisjZGVmaW5lIExfU1VCRlIgICA2NA0KKyNkZWZpbmUgTkJfVFJBQ0sgIDQNCisjZGVmaW5lIFNURVAgICAgICA0DQorI2RlZmluZSBOQl9QT1MgICAgMTYNCisjZGVmaW5lIE1TSVpFICAgICAyNTYNCisjZGVmaW5lIE5CX01BWCAgICA4DQorI2RlZmluZSBOUE1BWFBUICAgKChOQl9QVUxTRV9NQVgrTkJfVFJBQ0stMSkvTkJfVFJBQ0spDQorDQorLyogUHJpdmF0ZSBmdW5jdGlvbnMgKi8NCit2b2lkIGNvcl9oX3ZlY18wMTIoDQorCQlXb3JkMTYgaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzY2FsZWQgaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB2ZWNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCB2ZWN0b3IgKC84KSB0byBjb3JyZWxhdGUgd2l0aCBoW10gKi8NCisJCVdvcmQxNiB0cmFjaywgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHRyYWNrIHRvIHVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHNpZ25bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2lnbiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgcnJpeGl4W11bTkJfUE9TXSwgICAgICAgICAgICAgIC8qIChpKSBjb3JyZWxhdGlvbiBvZiBoW3hdIHdpdGggaFt4XSAgICAgICovDQorCQlXb3JkMTYgY29yXzFbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXN1bHQgb2YgY29ycmVsYXRpb24gKE5CX1BPUyBlbGVtZW50cykgKi8NCisJCVdvcmQxNiBjb3JfMltdICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KKwkJKTsNCisNCit2b2lkIGNvcl9oX3ZlY18wMTJfYXNtKA0KKwkJV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2NhbGVkIGltcHVsc2UgcmVzcG9uc2UgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgdmVjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzY2FsZWQgdmVjdG9yICgvOCkgdG8gY29ycmVsYXRlIHdpdGggaFtdICovDQorCQlXb3JkMTYgdHJhY2ssICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB0cmFjayB0byB1c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBzaWduW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNpZ24gdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHJyaXhpeFtdW05CX1BPU10sICAgICAgICAgICAgICAvKiAoaSkgY29ycmVsYXRpb24gb2YgaFt4XSB3aXRoIGhbeF0gICAgICAqLw0KKwkJV29yZDE2IGNvcl8xW10sICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorCQlXb3JkMTYgY29yXzJbXSAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXN1bHQgb2YgY29ycmVsYXRpb24gKE5CX1BPUyBlbGVtZW50cykgKi8NCisJCSk7DQorDQordm9pZCBjb3JfaF92ZWNfMzAoDQorCQlXb3JkMTYgaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzY2FsZWQgaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB2ZWNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCB2ZWN0b3IgKC84KSB0byBjb3JyZWxhdGUgd2l0aCBoW10gKi8NCisJCVdvcmQxNiB0cmFjaywgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHRyYWNrIHRvIHVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHNpZ25bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2lnbiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgcnJpeGl4W11bTkJfUE9TXSwgICAgICAgICAgICAgIC8qIChpKSBjb3JyZWxhdGlvbiBvZiBoW3hdIHdpdGggaFt4XSAgICAgICovDQorCQlXb3JkMTYgY29yXzFbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXN1bHQgb2YgY29ycmVsYXRpb24gKE5CX1BPUyBlbGVtZW50cykgKi8NCisJCVdvcmQxNiBjb3JfMltdICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KKwkJKTsNCisNCit2b2lkIHNlYXJjaF9peGl5KA0KKwkJV29yZDE2IG5iX3Bvc19peCwgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbmIgb2YgcG9zIGZvciBwdWxzZSAxICgxLi44KSAgICAgICAqLw0KKwkJV29yZDE2IHRyYWNrX3gsICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgb2YgcHVsc2UgMSAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHRyYWNrX3ksICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgb2YgcHVsc2UgMiAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogcHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSBjb3JyZWxhdGlvbiBvZiBhbGwgZml4ZWQgcHVsc2VzICAqLw0KKwkJV29yZDE2ICogYWxwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSBlbmVyZ3kgb2YgYWxsIGZpeGVkIHB1bHNlcyAgICAgICAqLw0KKwkJV29yZDE2ICogaXgsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcG9zaXRpb24gb2YgcHVsc2UgMSAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXksICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcG9zaXRpb24gb2YgcHVsc2UgMiAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGRuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgY29yci4gYmV0d2VlbiB0YXJnZXQgYW5kIGhbXSAgICAgICAqLw0KKwkJV29yZDE2IGRuMltdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdmVjdG9yIG9mIHNlbGVjdGVkIHBvc2l0aW9ucyAgICAgICAqLw0KKwkJV29yZDE2IGNvcl94W10sICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgY29yci4gb2YgcHVsc2UgMSB3aXRoIGZpeGVkIHB1bHNlcyAqLw0KKwkJV29yZDE2IGNvcl95W10sICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgY29yci4gb2YgcHVsc2UgMiB3aXRoIGZpeGVkIHB1bHNlcyAqLw0KKwkJV29yZDE2IHJyaXhpeVtdW01TSVpFXSAgICAgICAgICAgICAgICAvKiAoaSkgY29yci4gb2YgcHVsc2UgMSB3aXRoIHB1bHNlIDIgICAqLw0KKwkJKTsNCisNCisNCit2b2lkIEFDRUxQXzR0NjRfZngoDQorCQlXb3JkMTYgZG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA8MTJiIDogY29ycmVsYXRpb24gYmV0d2VlbiB0YXJnZXQgeFtdIGFuZCBIW10gICAgICAqLw0KKwkJV29yZDE2IGNuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgPDEyYiA6IHJlc2lkdWFsIGFmdGVyIGxvbmcgdGVybSBwcmVkaWN0aW9uICAgICAgICAgKi8NCisJCVdvcmQxNiBIW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMjogaW1wdWxzZSByZXNwb25zZSBvZiB3ZWlnaHRlZCBzeW50aGVzaXMgZmlsdGVyICovDQorCQlXb3JkMTYgY29kZVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBROSA6IGFsZ2VicmFpYyAoZml4ZWQpIGNvZGVib29rIGV4Y2l0YXRpb24gICAgICAgICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTkgOiBmaWx0ZXJlZCBmaXhlZCBjb2RlYm9vayBleGNpdGF0aW9uICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBuYmJpdHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDogMjAsIDM2LCA0NCwgNTIsIDY0LCA3MiBvciA4OCBiaXRzICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgc2VyX3NpemUsICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA6IGJpdCByYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IF9pbmRleFtdICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgOiBpbmRleCAoMjApOiA1KzUrNSs1ID0gMjAgYml0cy4gICAgICAgICAgICAgICAgICAgKi8NCisJCS8qIChvKSA6IGluZGV4ICgzNik6IDkrOSs5KzkgPSAzNiBiaXRzLiAgICAgICAgICAgICAgICAgICAqLw0KKwkJLyogKG8pIDogaW5kZXggKDQ0KTogMTMrOSsxMys5ID0gNDQgYml0cy4gICAgICAgICAgICAgICAgICovDQorCQkvKiAobykgOiBpbmRleCAoNTIpOiAxMysxMysxMysxMyA9IDUyIGJpdHMuICAgICAgICAgICAgICAgKi8NCisJCS8qIChvKSA6IGluZGV4ICg2NCk6IDIrMisyKzIrMTQrMTQrMTQrMTQgPSA2NCBiaXRzLiAgICAgICAqLw0KKwkJLyogKG8pIDogaW5kZXggKDcyKTogMTArMisxMCsyKzEwKzE0KzEwKzE0ID0gNzIgYml0cy4gICAgICovDQorCQkvKiAobykgOiBpbmRleCAoODgpOiAxMSsxMSsxMSsxMSsxMSsxMSsxMSsxMSA9IDg4IGJpdHMuICAgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpLCBqLCBrOw0KKwlXb3JkMTYgc3QsIGl4LCBpeSwgcG9zLCBpbmRleCwgdHJhY2ssIG5iX3B1bHNlLCBuYml0ZXIsIGpfdGVtcDsNCisJV29yZDE2IHBzaywgcHMsIGFscGssIGFscCwgdmFsLCBrX2NuLCBrX2RuLCBleHA7DQorCVdvcmQxNiAqcDAsICpwMSwgKnAyLCAqcDMsICpwc2lnbjsNCisJV29yZDE2ICpoLCAqaF9pbnYsICpwdHJfaDEsICpwdHJfaDIsICpwdHJfaGYsIGhfc2hpZnQ7DQorCVdvcmQzMiBzLCBjb3IsIExfdG1wLCBMX2luZGV4Ow0KKwlXb3JkMTYgZG4yW0xfU1VCRlJdLCBzaWduW0xfU1VCRlJdLCB2ZWNbTF9TVUJGUl07DQorCVdvcmQxNiBpbmRbTlBNQVhQVCAqIE5CX1RSQUNLXTsNCisJV29yZDE2IGNvZHZlY1tOQl9QVUxTRV9NQVhdLCBuYnBvc1sxMF07DQorCVdvcmQxNiBjb3JfeFtOQl9QT1NdLCBjb3JfeVtOQl9QT1NdLCBwb3NfbWF4W05CX1RSQUNLXTsNCisJV29yZDE2IGhfYnVmWzQgKiBMX1NVQkZSXTsNCisJV29yZDE2IHJyaXhpeFtOQl9UUkFDS11bTkJfUE9TXSwgcnJpeGl5W05CX1RSQUNLXVtNU0laRV07DQorCVdvcmQxNiBpcG9zW05CX1BVTFNFX01BWF07DQorDQorCXN3aXRjaCAobmJiaXRzKQ0KKwl7DQorCQljYXNlIDIwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAyMCBiaXRzLCA0IHB1bHNlcywgNCB0cmFja3MgKi8NCisJCQluYml0ZXIgPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNHgxNngxNj0xMDI0IGxvb3AgKi8NCisJCQlhbHAgPSA4MTkyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxwID0gMi4wIChRMTIpICovDQorCQkJbmJfcHVsc2UgPSA0OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1swXSA9IDQ7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzFdID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJYnJlYWs7DQorCQljYXNlIDM2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAzNiBiaXRzLCA4IHB1bHNlcywgNCB0cmFja3MgKi8NCisJCQluYml0ZXIgPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNHgyMHgxNj0xMjgwIGxvb3AgKi8NCisJCQlhbHAgPSA0MDk2OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxwID0gMS4wIChRMTIpICovDQorCQkJbmJfcHVsc2UgPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1swXSA9IDQ7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzFdID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMl0gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQlicmVhazsNCisJCWNhc2UgNDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDQ0IGJpdHMsIDEwIHB1bHNlcywgNCB0cmFja3MgKi8NCisJCQluYml0ZXIgPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNHgyNngxNj0xNjY0IGxvb3AgKi8NCisJCQlhbHAgPSA0MDk2OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxwID0gMS4wIChRMTIpICovDQorCQkJbmJfcHVsc2UgPSAxMDsgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1swXSA9IDQ7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzFdID0gNjsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMl0gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1szXSA9IDg7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCWJyZWFrOw0KKwkJY2FzZSA1MjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNTIgYml0cywgMTIgcHVsc2VzLCA0IHRyYWNrcyAqLw0KKwkJCW5iaXRlciA9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA0eDI2eDE2PTE2NjQgbG9vcCAqLw0KKwkJCWFscCA9IDQwOTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHAgPSAxLjAgKFExMikgKi8NCisJCQluYl9wdWxzZSA9IDEyOyAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzBdID0gNDsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMV0gPSA2OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1syXSA9IDg7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzNdID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJYnJlYWs7DQorCQljYXNlIDY0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA2NCBiaXRzLCAxNiBwdWxzZXMsIDQgdHJhY2tzICovDQorCQkJbmJpdGVyID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDN4MzZ4MTY9MTcyOCBsb29wICovDQorCQkJYWxwID0gMzI3NzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFscCA9IDAuOCAoUTEyKSAqLw0KKwkJCW5iX3B1bHNlID0gMTY7ICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMF0gPSA0OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1sxXSA9IDQ7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzJdID0gNjsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbM10gPSA2OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1s0XSA9IDg7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzVdID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJYnJlYWs7DQorCQljYXNlIDcyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA3MiBiaXRzLCAxOCBwdWxzZXMsIDQgdHJhY2tzICovDQorCQkJbmJpdGVyID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDN4MzV4MTY9MTY4MCBsb29wICovDQorCQkJYWxwID0gMzA3MjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFscCA9IDAuNzUgKFExMikgKi8NCisJCQluYl9wdWxzZSA9IDE4OyAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzBdID0gMjsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMV0gPSAzOyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1syXSA9IDQ7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzNdID0gNTsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbNF0gPSA2OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1s1XSA9IDc7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzZdID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJYnJlYWs7DQorCQljYXNlIDg4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA4OCBiaXRzLCAyNCBwdWxzZXMsIDQgdHJhY2tzICovDQorCQkJaWYoc2VyX3NpemUgPiA0NjIpDQorCQkJCW5iaXRlciA9IDE7DQorCQkJZWxzZQ0KKwkJCQluYml0ZXIgPSAyOyAgICAgICAgICAgICAgICAgICAgLyogMng1M3gxNj0xNjk2IGxvb3AgKi8NCisNCisJCQlhbHAgPSAyMDQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxwID0gMC41IChRMTIpICovDQorCQkJbmJfcHVsc2UgPSAyNDsgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1swXSA9IDI7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzFdID0gMjsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMl0gPSAzOyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1szXSA9IDQ7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzRdID0gNTsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbNV0gPSA2OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1s2XSA9IDc7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzddID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbOF0gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1s5XSA9IDg7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQluYml0ZXIgPSAwOw0KKwkJCWFscCA9IDA7DQorCQkJbmJfcHVsc2UgPSAwOw0KKwl9DQorDQorCWZvciAoaSA9IDA7IGkgPCBuYl9wdWxzZTsgaSsrKQ0KKwl7DQorCQljb2R2ZWNbaV0gPSBpOyAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogRmluZCBzaWduIGZvciBlYWNoIHB1bHNlIHBvc2l0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkvKiBjYWxjdWxhdGUgZW5lcmd5IGZvciBub3JtYWxpemF0aW9uIG9mIGNuW10gYW5kIGRuW10gKi8NCisJLyogc2V0IGtfY24gPSAzMi4uMzI3NjcgKGVuZXJfY24gPSAyXjMwLi4yNTYtMCkgKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCXMgPSBEb3RfcHJvZHVjdDEyX2FzbShjbiwgY24sIExfU1VCRlIsICZleHApOw0KKyNlbHNlDQorCXMgPSBEb3RfcHJvZHVjdDEyKGNuLCBjbiwgTF9TVUJGUiwgJmV4cCk7DQorI2VuZGlmDQorDQorCUlzcXJ0X24oJnMsICZleHApOw0KKwlzID0gTF9zaGwocywgKGV4cCArIDUpKTsgDQorCWtfY24gPSBleHRyYWN0X2goTF9hZGQocywgMHg4MDAwKSk7DQorDQorCS8qIHNldCBrX2RuID0gMzIuLjUxMiAoZW5lcl9kbiA9IDJeMzAuLjJeMjIpICovDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJcyA9IERvdF9wcm9kdWN0MTJfYXNtKGRuLCBkbiwgTF9TVUJGUiwgJmV4cCk7DQorI2Vsc2UNCisJcyA9IERvdF9wcm9kdWN0MTIoZG4sIGRuLCBMX1NVQkZSLCAmZXhwKTsNCisjZW5kaWYNCisNCisJSXNxcnRfbigmcywgJmV4cCk7DQorCWtfZG4gPSAoTF9zaGwocywgKGV4cCArIDUgKyAzKSkgKyAweDgwMDApID4+IDE2OyAgICAvKiBrX2RuID0gMjU2Li40MDk2ICovDQorCWtfZG4gPSB2b19tdWx0X3IoYWxwLCBrX2RuKTsgICAgICAgICAgICAgIC8qIGFscCBpbiBRMTIgKi8NCisNCisJLyogbWl4IG5vcm1hbGl6ZWQgY25bXSBhbmQgZG5bXSAqLw0KKwlwMCA9IGNuOw0KKwlwMSA9IGRuOw0KKwlwMiA9IGRuMjsNCisNCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlIvNDsgaSsrKQ0KKwl7DQorCQlzID0gKGtfY24qICgqcDArKykpKyhrX2RuICogKCpwMSsrKSk7DQorCQkqcDIrKyA9IHMgPj4gNzsNCisJCXMgPSAoa19jbiogKCpwMCsrKSkrKGtfZG4gKiAoKnAxKyspKTsNCisJCSpwMisrID0gcyA+PiA3Ow0KKwkJcyA9IChrX2NuKiAoKnAwKyspKSsoa19kbiAqICgqcDErKykpOw0KKwkJKnAyKysgPSBzID4+IDc7DQorCQlzID0gKGtfY24qICgqcDArKykpKyhrX2RuICogKCpwMSsrKSk7DQorCQkqcDIrKyA9IHMgPj4gNzsgDQorCX0NCisNCisJLyogc2V0IHNpZ24gYWNjb3JkaW5nIHRvIGRuMltdID0ga19jbipjbltdICsga19kbipkbltdICAgICovDQorCWZvcihpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJew0KKwkJdmFsID0gZG5baV07ICAgICAgICAgICAgICAgICAgIA0KKwkJcHMgPSBkbjJbaV07ICAgICAgICAgICAgICAgICAgIA0KKwkJaWYgKHBzID49IDApDQorCQl7DQorCQkJc2lnbltpXSA9IDMyNzY3OyAgICAgICAgICAgICAvKiBzaWduID0gKzEgKFExMikgKi8NCisJCQl2ZWNbaV0gPSAtMzI3Njg7ICAgICAgICAgICANCisJCX0gZWxzZQ0KKwkJew0KKwkJCXNpZ25baV0gPSAtMzI3Njg7ICAgICAgICAgICAgLyogc2lnbiA9IC0xIChRMTIpICovDQorCQkJdmVjW2ldID0gMzI3Njc7ICAgICAgICAgICAgDQorCQkJZG5baV0gPSAtdmFsOw0KKwkJCWRuMltpXSA9IC1wczsNCisJCX0NCisJfQ0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIFNlbGVjdCBOQl9NQVggcG9zaXRpb24gcGVyIHRyYWNrIGFjY29yZGluZyB0byBtYXggb2YgZG4yW10uICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJcG9zID0gMDsNCisJZm9yIChpID0gMDsgaSA8IE5CX1RSQUNLOyBpKyspDQorCXsNCisJCWZvciAoayA9IDA7IGsgPCBOQl9NQVg7IGsrKykNCisJCXsNCisJCQlwcyA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgDQorCQkJZm9yIChqID0gaTsgaiA8IExfU1VCRlI7IGogKz0gU1RFUCkNCisJCQl7DQorCQkJCWlmKGRuMltqXSA+IHBzKQ0KKwkJCQl7DQorCQkJCQlwcyA9IGRuMltqXTsgICAgICAgICAgDQorCQkJCQlwb3MgPSBqOyAgICAgICAgICAgICAgIA0KKwkJCQl9DQorCQkJfQ0KKwkJCWRuMltwb3NdID0gKGsgLSBOQl9NQVgpOyAgICAgLyogZG4yIDwgMCB3aGVuIHBvc2l0aW9uIGlzIHNlbGVjdGVkICovDQorCQkJaWYgKGsgPT0gMCkNCisJCQl7DQorCQkJCXBvc19tYXhbaV0gPSBwb3M7ICAgICAgICAgIA0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBTY2FsZSBoW10gdG8gYXZvaWQgb3ZlcmZsb3cgYW5kIHRvIGdldCBtYXhpbXVtIG9mIHByZWNpc2lvbiAgKg0KKwkgKiBvbiBjb3JyZWxhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiBNYXhpbXVtIG9mIGhbXSAoaFswXSkgaXMgZml4ZWQgdG8gMjA0OCAoTUFYMTYgLyAxNikuICAgICAgICAgKg0KKwkgKiAgPT0+IFRoaXMgYWxsb3cgYWRkaXRpb24gb2YgMTYgcHVsc2VzIHdpdGhvdXQgc2F0dXJhdGlvbi4gICAgKg0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiBFbmVyZ3kgd29yc3QgY2FzZSAob24gcmVzb25hbnQgaW1wdWxzZSByZXNwb25zZSksICAgICAgICAgICAgKg0KKwkgKiAtIGVuZXJneSBvZiBoW10gaXMgYXBwcm94aW1hdGVseSBNQVgvMTYuICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAtIER1cmluZyBzZWFyY2gsIHRoZSBlbmVyZ3kgaXMgZGl2aWRlZCBieSA4IHRvIGF2b2lkICAgICAgICAgKg0KKwkgKiAgIG92ZXJmbG93IG9uICJhbHAiLiAoZW5lcmd5IG9mIGhbXSA9IE1BWC8xMjgpLiAgICAgICAgICAgICAgKg0KKwkgKiAgPT0+ICJhbHAiIHdvcnN0IGNhc2UgZGV0ZWN0ZWQgaXMgMjI4NTQgb24gc2ludXNvaWRhbCB3YXZlLiAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJLyogaW1wdWxzZSByZXNwb25zZSBidWZmZXIgZm9yIGZhc3QgY29tcHV0YXRpb24gKi8NCisNCisJaCA9IGhfYnVmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWhfaW52ID0gaF9idWYgKyAoMiAqIExfU1VCRlIpOyAgIA0KKwlMX3RtcCA9IDA7DQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCXsNCisJCSpoKysgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQkqaF9pbnYrKyA9IDA7ICAgDQorCQlMX3RtcCArPSAoSFtpXSAqIEhbaV0pIDw8IDE7DQorCX0NCisJLyogc2NhbGUgaFtdIGRvd24gKC8yKSB3aGVuIGVuZXJneSBvZiBoW10gaXMgaGlnaCB3aXRoIG1hbnkgcHVsc2VzIHVzZWQgKi8NCisJdmFsID0gZXh0cmFjdF9oKExfdG1wKTsNCisJaF9zaGlmdCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWlmICgobmJfcHVsc2UgPj0gMTIpICYmICh2YWwgPiAxMDI0KSkNCisJew0KKwkJaF9zaGlmdCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlwMCA9IEg7DQorCXAxID0gaDsNCisJcDIgPSBoX2ludjsNCisNCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlIvNDsgaSsrKQ0KKwl7DQorCQkqcDEgPSAqcDArKyA+PiBoX3NoaWZ0OyAgICAgICAgIA0KKwkJKnAyKysgPSAtKCpwMSsrKTsgIA0KKwkJKnAxID0gKnAwKysgPj4gaF9zaGlmdDsgICAgICAgICANCisJCSpwMisrID0gLSgqcDErKyk7IA0KKwkJKnAxID0gKnAwKysgPj4gaF9zaGlmdDsgICAgICAgICANCisJCSpwMisrID0gLSgqcDErKyk7IA0KKwkJKnAxID0gKnAwKysgPj4gaF9zaGlmdDsgICAgICAgICANCisJCSpwMisrID0gLSgqcDErKyk7IA0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBDb21wdXRlIHJyaXhpeFtdW10gbmVlZGVkIGZvciB0aGUgY29kZWJvb2sgc2VhcmNoLiAgICAgICAgICoNCisJICogVGhpcyBhbGdvcml0aG0gY29tcHV0ZSBpbXB1bHNlIHJlc3BvbnNlIGVuZXJneSBvZiBhbGwgICAgICAqDQorCSAqIHBvc2l0aW9ucyAoMTYpIGluIGVhY2ggdHJhY2sgKDQpLiAgICAgICBUb3RhbCA9IDR4MTYgPSA2NC4gKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCS8qIHN0b3JhZ2Ugb3JkZXIgLS0+IGkzaTMsIGkyaTIsIGkxaTEsIGkwaTAgKi8NCisNCisJLyogSW5pdCBwb2ludGVycyB0byBsYXN0IHBvc2l0aW9uIG9mIHJyaXhpeFtdICovDQorCXAwID0gJnJyaXhpeFswXVtOQl9QT1MgLSAxXTsgICAgICAgICAgIA0KKwlwMSA9ICZycml4aXhbMV1bTkJfUE9TIC0gMV07ICAgICAgICAgICANCisJcDIgPSAmcnJpeGl4WzJdW05CX1BPUyAtIDFdOyAgICAgICAgICAgDQorCXAzID0gJnJyaXhpeFszXVtOQl9QT1MgLSAxXTsgICAgICAgICAgIA0KKw0KKwlwdHJfaDEgPSBoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJY29yID0gMHgwMDAwODAwMEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3Igcm91bmRpbmcgKi8NCisJZm9yIChpID0gMDsgaSA8IE5CX1BPUzsgaSsrKQ0KKwl7DQorCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDEpKTsNCisJCXB0cl9oMSsrOw0KKwkJKnAzLS0gPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgICANCisJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMSkpOw0KKwkJcHRyX2gxKys7DQorCQkqcDItLSA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICAgIA0KKwkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gxKSk7DQorCQlwdHJfaDErKzsNCisJCSpwMS0tID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgICAgDQorCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDEpKTsNCisJCXB0cl9oMSsrOw0KKwkJKnAwLS0gPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgICANCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogQ29tcHV0ZSBycml4aXlbXVtdIG5lZWRlZCBmb3IgdGhlIGNvZGVib29rIHNlYXJjaC4gICAgICAgICAqDQorCSAqIFRoaXMgYWxnb3JpdGhtIGNvbXB1dGUgY29ycmVsYXRpb24gYmV0d2VlbiAyIHB1bHNlcyAgICAgICAgKg0KKwkgKiAoMiBpbXB1bHNlcyByZXNwb25zZXMpIGluIDQgcG9zc2libGUgYWRqYWNlbnRzIHRyYWNrcy4gICAgICoNCisJICogKHRyYWNrIDAtMSwgMS0yLCAyLTMgYW5kIDMtMCkuICAgICBUb3RhbCA9IDR4MTZ4MTYgPSAxMDI0LiAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJLyogc3RvcmFnZSBvcmRlciAtLT4gaTJpMywgaTFpMiwgaTBpMSwgaTNpMCAqLw0KKw0KKwlwb3MgPSBNU0laRSAtIDE7ICAgICAgICAgICAgICAgICAgICAgICANCisJcHRyX2hmID0gaCArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoayA9IDA7IGsgPCBOQl9QT1M7IGsrKykNCisJew0KKwkJcDMgPSAmcnJpeGl5WzJdW3Bvc107ICAgICAgICAgICAgICANCisJCXAyID0gJnJyaXhpeVsxXVtwb3NdOyAgICAgICAgICAgICAgDQorCQlwMSA9ICZycml4aXlbMF1bcG9zXTsgICAgICAgICAgICAgIA0KKwkJcDAgPSAmcnJpeGl5WzNdW3BvcyAtIE5CX1BPU107ICAgICANCisNCisJCWNvciA9IDB4MDAwMDgwMDBMOyAgICAgICAgICAgICAgICAgICAvKiBmb3Igcm91bmRpbmcgKi8NCisJCXB0cl9oMSA9IGg7ICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlwdHJfaDIgPSBwdHJfaGY7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwkJZm9yIChpID0gayArIDE7IGkgPCBOQl9QT1M7IGkrKykNCisJCXsNCisJCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDIpKTsNCisJCQlwdHJfaDErKzsNCisJCQlwdHJfaDIrKzsNCisJCQkqcDMgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgDQorCQkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gyKSk7DQorCQkJcHRyX2gxKys7DQorCQkJcHRyX2gyKys7DQorCQkJKnAyID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgIA0KKwkJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMikpOw0KKwkJCXB0cl9oMSsrOw0KKwkJCXB0cl9oMisrOw0KKwkJCSpwMSA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICANCisJCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDIpKTsNCisJCQlwdHJfaDErKzsNCisJCQlwdHJfaDIrKzsNCisJCQkqcDAgPSBleHRyYWN0X2goY29yKTsgICAgICAgICANCisNCisJCQlwMyAtPSAoTkJfUE9TICsgMSk7DQorCQkJcDIgLT0gKE5CX1BPUyArIDEpOw0KKwkJCXAxIC09IChOQl9QT1MgKyAxKTsNCisJCQlwMCAtPSAoTkJfUE9TICsgMSk7DQorCQl9DQorCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDIpKTsNCisJCXB0cl9oMSsrOw0KKwkJcHRyX2gyKys7DQorCQkqcDMgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgICAgIA0KKwkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gyKSk7DQorCQlwdHJfaDErKzsNCisJCXB0cl9oMisrOw0KKwkJKnAyID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgICAgICANCisJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMikpOw0KKwkJcHRyX2gxKys7DQorCQlwdHJfaDIrKzsNCisJCSpwMSA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICAgICAgDQorDQorCQlwb3MgLT0gTkJfUE9TOw0KKwkJcHRyX2hmICs9IFNURVA7DQorCX0NCisNCisJLyogc3RvcmFnZSBvcmRlciAtLT4gaTNpMCwgaTJpMywgaTFpMiwgaTBpMSAqLw0KKw0KKwlwb3MgPSBNU0laRSAtIDE7ICAgICAgICAgICAgICAgICAgICAgICANCisJcHRyX2hmID0gaCArIDM7ICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoayA9IDA7IGsgPCBOQl9QT1M7IGsrKykNCisJew0KKwkJcDMgPSAmcnJpeGl5WzNdW3Bvc107ICAgICAgICAgICAgICANCisJCXAyID0gJnJyaXhpeVsyXVtwb3MgLSAxXTsgICAgICAgICAgDQorCQlwMSA9ICZycml4aXlbMV1bcG9zIC0gMV07ICAgICAgICAgIA0KKwkJcDAgPSAmcnJpeGl5WzBdW3BvcyAtIDFdOyAgICAgICAgICANCisNCisJCWNvciA9IDB4MDAwMDgwMDBMOwkJCQkJCQkJLyogZm9yIHJvdW5kaW5nICovDQorCQlwdHJfaDEgPSBoOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJcHRyX2gyID0gcHRyX2hmOyAgICAgICAgICAgICAgICAgICANCisNCisJCWZvciAoaSA9IGsgKyAxOyBpIDwgTkJfUE9TOyBpKyspDQorCQl7DQorCQkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gyKSk7DQorCQkJcHRyX2gxKys7DQorCQkJcHRyX2gyKys7DQorCQkJKnAzID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgIA0KKwkJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMikpOw0KKwkJCXB0cl9oMSsrOw0KKwkJCXB0cl9oMisrOw0KKwkJCSpwMiA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICANCisJCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDIpKTsNCisJCQlwdHJfaDErKzsNCisJCQlwdHJfaDIrKzsNCisJCQkqcDEgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgDQorCQkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gyKSk7DQorCQkJcHRyX2gxKys7DQorCQkJcHRyX2gyKys7DQorCQkJKnAwID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgIA0KKw0KKwkJCXAzIC09IChOQl9QT1MgKyAxKTsNCisJCQlwMiAtPSAoTkJfUE9TICsgMSk7DQorCQkJcDEgLT0gKE5CX1BPUyArIDEpOw0KKwkJCXAwIC09IChOQl9QT1MgKyAxKTsNCisJCX0NCisJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMikpOw0KKwkJcHRyX2gxKys7DQorCQlwdHJfaDIrKzsNCisJCSpwMyA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICAgICAgDQorDQorCQlwb3MtLTsNCisJCXB0cl9oZiArPSBTVEVQOw0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBNb2RpZmljYXRpb24gb2YgcnJpeGl5W11bXSB0byB0YWtlIHNpZ25zIGludG8gYWNjb3VudC4gICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwlwMCA9ICZycml4aXlbMF1bMF07ICAgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChrID0gMDsgayA8IE5CX1RSQUNLOyBrKyspDQorCXsNCisJCWpfdGVtcCA9IChrICsgMSkmMHgwMzsNCisJCWZvciAoaSA9IGs7IGkgPCBMX1NVQkZSOyBpICs9IFNURVApDQorCQl7DQorCQkJcHNpZ24gPSBzaWduOyAgICAgICAgICAgICAgICAgIA0KKwkJCWlmIChwc2lnbltpXSA8IDApDQorCQkJew0KKwkJCQlwc2lnbiA9IHZlYzsgICAgICAgICAgICAgICANCisJCQl9DQorCQkJaiA9IGpfdGVtcDsNCisJCQlmb3IgKDsgaiA8IExfU1VCRlI7IGogKz0gU1RFUCkNCisJCQl7DQorCQkJCSpwMCA9IHZvX211bHQoKnAwLCBwc2lnbltqXSk7ICAgIA0KKwkJCQlwMCsrOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICAgICAgICAgICAgICAgICAgICAgICBEZWVwIGZpcnN0IHNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJcHNrID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWFscGsgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGsgPSAwOyBrIDwgbmJpdGVyOyBrKyspDQorCXsNCisJCWpfdGVtcCA9IGs8PDI7DQorCQlmb3IgKGkgPSAwOyBpIDwgbmJfcHVsc2U7IGkrKykNCisJCQlpcG9zW2ldID0gdGlwb3Nbal90ZW1wICsgaV07DQorDQorCQlpZihuYmJpdHMgPT0gMjApDQorCQl7DQorCQkJcG9zID0gMDsgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCXBzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICANCisJCQlhbHAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgDQorCQkJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJCQl7DQorCQkJCXZlY1tpXSA9IDA7ICAgICAgICAgICAgICAgIA0KKwkJCX0NCisJCX0gZWxzZSBpZiAoKG5iYml0cyA9PSAzNikgfHwgKG5iYml0cyA9PSA0NCkpDQorCQl7DQorCQkJLyogZmlyc3Qgc3RhZ2U6IGZpeCAyIHB1bHNlcyAqLw0KKwkJCXBvcyA9IDI7DQorDQorCQkJaXggPSBpbmRbMF0gPSBwb3NfbWF4W2lwb3NbMF1dOw0KKwkJCWl5ID0gaW5kWzFdID0gcG9zX21heFtpcG9zWzFdXTsNCisJCQlwcyA9IGRuW2l4XSArIGRuW2l5XTsNCisJCQlpID0gaXggPj4gMjsgICAgICAgICAgICAgICAgLyogaXggLyBTVEVQICovDQorCQkJaiA9IGl5ID4+IDI7ICAgICAgICAgICAgICAgIC8qIGl5IC8gU1RFUCAqLw0KKwkJCXMgPSBycml4aXhbaXBvc1swXV1baV0gPDwgMTM7DQorCQkJcyArPSBycml4aXhbaXBvc1sxXV1bal0gPDwgMTM7DQorCQkJaSA9IChpIDw8IDQpICsgajsgICAgICAgICAvKiAoaXgvU1RFUCkqTkJfUE9TICsgKGl5L1NURVApICovDQorCQkJcyArPSBycml4aXlbaXBvc1swXV1baV0gPDwgMTQ7DQorCQkJYWxwID0gKHMgKyAweDgwMDApID4+IDE2Ow0KKwkJCWlmIChzaWduW2l4XSA8IDApDQorCQkJCXAwID0gaF9pbnYgLSBpeDsNCisJCQllbHNlDQorCQkJCXAwID0gaCAtIGl4Ow0KKwkJCWlmIChzaWduW2l5XSA8IDApDQorCQkJCXAxID0gaF9pbnYgLSBpeTsNCisJCQllbHNlDQorCQkJCXAxID0gaCAtIGl5Ow0KKw0KKwkJCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCQkJew0KKwkJCQl2ZWNbaV0gPSAoKnAwKyspICsgKCpwMSsrKTsNCisJCQl9DQorDQorCQkJaWYobmJiaXRzID09IDQ0KQ0KKwkJCXsNCisJCQkJaXBvc1s4XSA9IDA7ICAgICAgICAgICAgICAgDQorCQkJCWlwb3NbOV0gPSAxOyAgICAgICAgICAgICAgIA0KKwkJCX0NCisJCX0gZWxzZQ0KKwkJew0KKwkJCS8qIGZpcnN0IHN0YWdlOiBmaXggNCBwdWxzZXMgKi8NCisJCQlwb3MgPSA0Ow0KKw0KKwkJCWl4ID0gaW5kWzBdID0gcG9zX21heFtpcG9zWzBdXTsgIA0KKwkJCWl5ID0gaW5kWzFdID0gcG9zX21heFtpcG9zWzFdXTsgIA0KKwkJCWkgPSBpbmRbMl0gPSBwb3NfbWF4W2lwb3NbMl1dOyAgIA0KKwkJCWogPSBpbmRbM10gPSBwb3NfbWF4W2lwb3NbM11dOyAgIA0KKwkJCXBzID0gYWRkMShhZGQxKGFkZDEoZG5baXhdLCBkbltpeV0pLCBkbltpXSksIGRuW2pdKTsNCisNCisJCQlpZiAoc2lnbltpeF0gPCAwKQ0KKwkJCQlwMCA9IGhfaW52IC0gaXg7DQorCQkJZWxzZQ0KKwkJCQlwMCA9IGggLSBpeDsNCisNCisJCQlpZiAoc2lnbltpeV0gPCAwKQ0KKwkJCQlwMSA9IGhfaW52IC0gaXk7DQorCQkJZWxzZQ0KKwkJCQlwMSA9IGggLSBpeTsNCisNCisJCQlpZiAoc2lnbltpXSA8IDApDQorCQkJCXAyID0gaF9pbnYgLSBpOw0KKwkJCWVsc2UNCisJCQkJcDIgPSBoIC0gaTsNCisNCisJCQlpZiAoc2lnbltqXSA8IDApDQorCQkJCXAzID0gaF9pbnYgLSBqOw0KKwkJCWVsc2UNCisJCQkJcDMgPSBoIC0gajsNCisNCisJCQlMX3RtcCA9IDBMOw0KKwkJCWZvcihpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJCQl7DQorCQkJCXZlY1tpXSAgPSBhZGQxKGFkZDEoYWRkMSgqcDArKywgKnAxKyspLCAqcDIrKyksICpwMysrKTsNCisJCQkJTF90bXAgICs9ICh2ZWNbaV0gKiB2ZWNbaV0pIDw8IDE7DQorCQkJfQ0KKw0KKwkJCWFscCA9ICgoTF90bXAgPj4gMykgKyAweDgwMDApID4+IDE2Ow0KKw0KKwkJCWlmKG5iYml0cyA9PSA3MikNCisJCQl7DQorCQkJCWlwb3NbMTZdID0gMDsgICAgICAgICAgICAgIA0KKwkJCQlpcG9zWzE3XSA9IDE7ICAgICAgICAgICAgICANCisJCQl9DQorCQl9DQorDQorCQkvKiBvdGhlciBzdGFnZXMgb2YgMiBwdWxzZXMgKi8NCisNCisJCWZvciAoaiA9IHBvcywgc3QgPSAwOyBqIDwgbmJfcHVsc2U7IGogKz0gMiwgc3QrKykNCisJCXsNCisJCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJCSAqIENhbGN1bGF0ZSBjb3JyZWxhdGlvbiBvZiBhbGwgcG9zc2libGUgcG9zaXRpb25zICAqDQorCQkJICogb2YgdGhlIG5leHQgMiBwdWxzZXMgd2l0aCBwcmV2aW91cyBmaXhlZCBwdWxzZXMuICoNCisJCQkgKiBFYWNoIHB1bHNlIGNhbiBoYXZlIDE2IHBvc3NpYmxlIHBvc2l0aW9ucy4gICAgICAgKg0KKwkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJCWlmKGlwb3Nbal0gPT0gMykNCisJCQl7DQorCQkJCWNvcl9oX3ZlY18zMChoLCB2ZWMsIGlwb3Nbal0sIHNpZ24sIHJyaXhpeCwgY29yX3gsIGNvcl95KTsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCQkJY29yX2hfdmVjXzAxMl9hc20oaCwgdmVjLCBpcG9zW2pdLCBzaWduLCBycml4aXgsIGNvcl94LCBjb3JfeSk7DQorI2Vsc2UNCisJCQkJY29yX2hfdmVjXzAxMihoLCB2ZWMsIGlwb3Nbal0sIHNpZ24sIHJyaXhpeCwgY29yX3gsIGNvcl95KTsNCisjZW5kaWYNCisJCQl9DQorCQkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCQkgKiBGaW5kIGJlc3QgcG9zaXRpb25zIG9mIDIgcHVsc2VzLiAgICAgICAgICAgICAgICAgKg0KKwkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJCXNlYXJjaF9peGl5KG5icG9zW3N0XSwgaXBvc1tqXSwgaXBvc1tqICsgMV0sICZwcywgJmFscCwNCisJCQkJCSZpeCwgJml5LCBkbiwgZG4yLCBjb3JfeCwgY29yX3ksIHJyaXhpeSk7DQorDQorCQkJaW5kW2pdID0gaXg7ICAgICAgICAgICAgICAgICAgIA0KKwkJCWluZFtqICsgMV0gPSBpeTsgICAgICAgICAgICAgICANCisNCisJCQlpZiAoc2lnbltpeF0gPCAwKQ0KKwkJCQlwMCA9IGhfaW52IC0gaXg7DQorCQkJZWxzZQ0KKwkJCQlwMCA9IGggLSBpeDsNCisJCQlpZiAoc2lnbltpeV0gPCAwKQ0KKwkJCQlwMSA9IGhfaW52IC0gaXk7DQorCQkJZWxzZQ0KKwkJCQlwMSA9IGggLSBpeTsNCisNCisJCQlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSs9NCkNCisJCQl7DQorCQkJCXZlY1tpXSAgICs9IGFkZDEoKCpwMCsrKSwgKCpwMSsrKSk7ICAgICAgIA0KKwkJCQl2ZWNbaSsxXSArPSBhZGQxKCgqcDArKyksICgqcDErKykpOyAgICAgICAgDQorCQkJCXZlY1tpKzJdICs9IGFkZDEoKCpwMCsrKSwgKCpwMSsrKSk7ICAgICAgICANCisJCQkJdmVjW2krM10gKz0gYWRkMSgoKnAwKyspLCAoKnAxKyspKTsgICAgICANCisJCQl9DQorCQl9DQorCQkvKiBtZW1vcmlzZSB0aGUgYmVzdCBjb2RldmVjdG9yICovDQorCQlwcyA9IHZvX211bHQocHMsIHBzKTsNCisJCXMgPSB2b19MX21zdSh2b19MX211bHQoYWxwaywgcHMpLCBwc2ssIGFscCk7DQorCQlpZiAocyA+IDApDQorCQl7DQorCQkJcHNrID0gcHM7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCWFscGsgPSBhbHA7ICAgICAgICAgICAgICAgICAgICANCisJCQlmb3IgKGkgPSAwOyBpIDwgbmJfcHVsc2U7IGkrKykNCisJCQl7DQorCQkJCWNvZHZlY1tpXSA9IGluZFtpXTsgICAgICAgIA0KKwkJCX0NCisJCQlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwkJCXsNCisJCQkJeVtpXSA9IHZlY1tpXTsgICAgICAgICAgICAgDQorCQkJfQ0KKwkJfQ0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogQnVpbGQgdGhlIGNvZGV3b3JkLCB0aGUgZmlsdGVyZWQgY29kZXdvcmQgYW5kIGluZGV4IG9mIGNvZGV2ZWN0b3IuKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlmb3IgKGkgPSAwOyBpIDwgTlBNQVhQVCAqIE5CX1RSQUNLOyBpKyspDQorCXsNCisJCWluZFtpXSA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgDQorCX0NCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJew0KKwkJY29kZVtpXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICANCisJCXlbaV0gPSB2b19zaHJfcih5W2ldLCAzKTsgICAgICAgICAgICAgICAvKiBRMTIgdG8gUTkgKi8NCisJfQ0KKwl2YWwgPSAoNTEyID4+IGhfc2hpZnQpOyAgICAgICAgICAgICAgIC8qIGNvZGV3b3JkIGluIFE5IGZvcm1hdCAqLw0KKwlmb3IgKGsgPSAwOyBrIDwgbmJfcHVsc2U7IGsrKykNCisJew0KKwkJaSA9IGNvZHZlY1trXTsgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWQgcHVsc2UgcG9zaXRpb24gKi8NCisJCWogPSBzaWduW2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZWFkIHNpZ24gICAgICAgICAgICovDQorCQlpbmRleCA9IGkgPj4gMjsgICAgICAgICAgICAgICAgIC8qIGluZGV4ID0gcG9zIG9mIHB1bHNlICgwLi4xNSkgKi8NCisJCXRyYWNrID0gKFdvcmQxNikgKGkgJiAweDAzKTsgICAgICAgICAvKiB0cmFjayA9IGkgJSBOQl9UUkFDSyAoMC4uMykgICovDQorDQorCQlpZiAoaiA+IDApDQorCQl7DQorCQkJY29kZVtpXSArPSB2YWw7ICAgDQorCQkJY29kdmVjW2tdICs9IDEyODsgIA0KKwkJfSBlbHNlDQorCQl7DQorCQkJY29kZVtpXSAtPSB2YWw7ICAgDQorCQkJaW5kZXggKz0gTkJfUE9TOyAgICANCisJCX0NCisNCisJCWkgPSAoV29yZDE2KSgodm9fTF9tdWx0KHRyYWNrLCBOUE1BWFBUKSA+PiAxKSk7DQorDQorCQl3aGlsZSAoaW5kW2ldID49IDApDQorCQl7DQorCQkJaSArPSAxOw0KKwkJfQ0KKwkJaW5kW2ldID0gaW5kZXg7ICAgICAgICAgICAgICAgICAgICANCisJfQ0KKw0KKwlrID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJLyogQnVpbGQgaW5kZXggb2YgY29kZXZlY3RvciAqLw0KKwlpZihuYmJpdHMgPT0gMjApDQorCXsNCisJCWZvciAodHJhY2sgPSAwOyB0cmFjayA8IE5CX1RSQUNLOyB0cmFjaysrKQ0KKwkJew0KKwkJCV9pbmRleFt0cmFja10gPSAoV29yZDE2KShxdWFudF8xcF9OMShpbmRba10sIDQpKTsNCisJCQlrICs9IE5QTUFYUFQ7DQorCQl9DQorCX0gZWxzZSBpZihuYmJpdHMgPT0gMzYpDQorCXsNCisJCWZvciAodHJhY2sgPSAwOyB0cmFjayA8IE5CX1RSQUNLOyB0cmFjaysrKQ0KKwkJew0KKwkJCV9pbmRleFt0cmFja10gPSAoV29yZDE2KShxdWFudF8ycF8yTjEoaW5kW2tdLCBpbmRbayArIDFdLCA0KSk7DQorCQkJayArPSBOUE1BWFBUOw0KKwkJfQ0KKwl9IGVsc2UgaWYobmJiaXRzID09IDQ0KQ0KKwl7DQorCQlmb3IgKHRyYWNrID0gMDsgdHJhY2sgPCBOQl9UUkFDSyAtIDI7IHRyYWNrKyspDQorCQl7DQorCQkJX2luZGV4W3RyYWNrXSA9IChXb3JkMTYpKHF1YW50XzNwXzNOMShpbmRba10sIGluZFtrICsgMV0sIGluZFtrICsgMl0sIDQpKTsNCisJCQlrICs9IE5QTUFYUFQ7DQorCQl9DQorCQlmb3IgKHRyYWNrID0gMjsgdHJhY2sgPCBOQl9UUkFDSzsgdHJhY2srKykNCisJCXsNCisJCQlfaW5kZXhbdHJhY2tdID0gKFdvcmQxNikocXVhbnRfMnBfMk4xKGluZFtrXSwgaW5kW2sgKyAxXSwgNCkpOw0KKwkJCWsgKz0gTlBNQVhQVDsNCisJCX0NCisJfSBlbHNlIGlmKG5iYml0cyA9PSA1MikNCisJew0KKwkJZm9yICh0cmFjayA9IDA7IHRyYWNrIDwgTkJfVFJBQ0s7IHRyYWNrKyspDQorCQl7DQorCQkJX2luZGV4W3RyYWNrXSA9IChXb3JkMTYpKHF1YW50XzNwXzNOMShpbmRba10sIGluZFtrICsgMV0sIGluZFtrICsgMl0sIDQpKTsNCisJCQlrICs9IE5QTUFYUFQ7DQorCQl9DQorCX0gZWxzZSBpZihuYmJpdHMgPT0gNjQpDQorCXsNCisJCWZvciAodHJhY2sgPSAwOyB0cmFjayA8IE5CX1RSQUNLOyB0cmFjaysrKQ0KKwkJew0KKwkJCUxfaW5kZXggPSBxdWFudF80cF80TigmaW5kW2tdLCA0KTsNCisJCQlfaW5kZXhbdHJhY2tdID0gKFdvcmQxNikoKExfaW5kZXggPj4gMTQpICYgMyk7DQorCQkJX2luZGV4W3RyYWNrICsgTkJfVFJBQ0tdID0gKFdvcmQxNikoTF9pbmRleCAmIDB4M0ZGRik7DQorCQkJayArPSBOUE1BWFBUOw0KKwkJfQ0KKwl9IGVsc2UgaWYobmJiaXRzID09IDcyKQ0KKwl7DQorCQlmb3IgKHRyYWNrID0gMDsgdHJhY2sgPCBOQl9UUkFDSyAtIDI7IHRyYWNrKyspDQorCQl7DQorCQkJTF9pbmRleCA9IHF1YW50XzVwXzVOKCZpbmRba10sIDQpOw0KKwkJCV9pbmRleFt0cmFja10gPSAoV29yZDE2KSgoTF9pbmRleCA+PiAxMCkgJiAweDAzRkYpOw0KKwkJCV9pbmRleFt0cmFjayArIE5CX1RSQUNLXSA9IChXb3JkMTYpKExfaW5kZXggJiAweDAzRkYpOw0KKwkJCWsgKz0gTlBNQVhQVDsNCisJCX0NCisJCWZvciAodHJhY2sgPSAyOyB0cmFjayA8IE5CX1RSQUNLOyB0cmFjaysrKQ0KKwkJew0KKwkJCUxfaW5kZXggPSBxdWFudF80cF80TigmaW5kW2tdLCA0KTsNCisJCQlfaW5kZXhbdHJhY2tdID0gKFdvcmQxNikoKExfaW5kZXggPj4gMTQpICYgMyk7DQorCQkJX2luZGV4W3RyYWNrICsgTkJfVFJBQ0tdID0gKFdvcmQxNikoTF9pbmRleCAmIDB4M0ZGRik7DQorCQkJayArPSBOUE1BWFBUOw0KKwkJfQ0KKwl9IGVsc2UgaWYobmJiaXRzID09IDg4KQ0KKwl7DQorCQlmb3IgKHRyYWNrID0gMDsgdHJhY2sgPCBOQl9UUkFDSzsgdHJhY2srKykNCisJCXsNCisJCQlMX2luZGV4ID0gcXVhbnRfNnBfNk5fMigmaW5kW2tdLCA0KTsNCisJCQlfaW5kZXhbdHJhY2tdID0gKFdvcmQxNikoKExfaW5kZXggPj4gMTEpICYgMHgwN0ZGKTsNCisJCQlfaW5kZXhbdHJhY2sgKyBOQl9UUkFDS10gPSAoV29yZDE2KShMX2luZGV4ICYgMHgwN0ZGKTsNCisJCQlrICs9IE5QTUFYUFQ7DQorCQl9DQorCX0NCisJcmV0dXJuOw0KK30NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogRnVuY3Rpb24gIGNvcl9oX3ZlYygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIH5+fn5+fn5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiBDb21wdXRlIGNvcnJlbGF0aW9ucyBvZiBoW10gd2l0aCB2ZWNbXSBmb3IgdGhlIHNwZWNpZmllZCB0cmFjay4gICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCit2b2lkIGNvcl9oX3ZlY18zMCgNCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCBpbXB1bHNlIHJlc3BvbnNlICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHZlY1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2NhbGVkIHZlY3RvciAoLzgpIHRvIGNvcnJlbGF0ZSB3aXRoIGhbXSAqLw0KKwkJV29yZDE2IHRyYWNrLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgdG8gdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgc2lnbltdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzaWduIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBycml4aXhbXVtOQl9QT1NdLCAgICAgICAgICAgICAgLyogKGkpIGNvcnJlbGF0aW9uIG9mIGhbeF0gd2l0aCBoW3hdICAgICAgKi8NCisJCVdvcmQxNiBjb3JfMVtdLCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KKwkJV29yZDE2IGNvcl8yW10gICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorCQkpDQorew0KKwlXb3JkMzIgaSwgaiwgcG9zLCBjb3JyOw0KKwlXb3JkMTYgKnAwLCAqcDEsICpwMiwqcDMsKmNvcl94LCpjb3JfeTsNCisJV29yZDMyIExfc3VtMSxMX3N1bTI7DQorCWNvcl94ID0gY29yXzE7DQorCWNvcl95ID0gY29yXzI7DQorCXAwID0gcnJpeGl4W3RyYWNrXTsNCisJcDMgPSBycml4aXhbMF07DQorCXBvcyA9IHRyYWNrOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTkJfUE9TOyBpKz0yKQ0KKwl7DQorCQlMX3N1bTEgPSBMX3N1bTIgPSAwTDsNCisJCXAxID0gaDsNCisJCXAyID0gJnZlY1twb3NdOw0KKwkJZm9yIChqPXBvcztqIDwgTF9TVUJGUjsgaisrKQ0KKwkJew0KKwkJCUxfc3VtMSArPSAqcDEgKiAqcDI7CQkNCisJCQlwMi09MzsNCisJCQlMX3N1bTIgKz0gKnAxKysgKiAqcDI7CQkNCisJCQlwMis9NDsNCisJCX0NCisJCXAyLT0zOw0KKwkJTF9zdW0yICs9ICpwMSsrICogKnAyKys7CQ0KKwkJTF9zdW0yICs9ICpwMSsrICogKnAyKys7CQ0KKwkJTF9zdW0yICs9ICpwMSsrICogKnAyKys7CQ0KKw0KKwkJTF9zdW0xID0gKExfc3VtMSA8PCAyKTsNCisJCUxfc3VtMiA9IChMX3N1bTIgPDwgMik7DQorDQorCQljb3JyID0gdm9fcm91bmQoTF9zdW0xKTsJDQorCQkqY29yX3grKyA9IHZvX211bHQoY29yciwgc2lnbltwb3NdKSArICgqcDArKyk7DQorCQljb3JyID0gdm9fcm91bmQoTF9zdW0yKTsNCisJCSpjb3JfeSsrID0gdm9fbXVsdChjb3JyLCBzaWduW3Bvcy0zXSkgKyAoKnAzKyspOw0KKwkJcG9zICs9IFNURVA7DQorDQorCQlMX3N1bTEgPSBMX3N1bTIgPSAwTDsNCisJCXAxID0gaDsNCisJCXAyID0gJnZlY1twb3NdOw0KKwkJZm9yIChqPXBvcztqIDwgTF9TVUJGUjsgaisrKQ0KKwkJew0KKwkJCUxfc3VtMSArPSAqcDEgKiAqcDI7CQkNCisJCQlwMi09MzsNCisJCQlMX3N1bTIgKz0gKnAxKysgKiAqcDI7CQkNCisJCQlwMis9NDsNCisJCX0NCisJCXAyLT0zOw0KKwkJTF9zdW0yICs9ICpwMSsrICogKnAyKys7CQ0KKwkJTF9zdW0yICs9ICpwMSsrICogKnAyKys7CQ0KKwkJTF9zdW0yICs9ICpwMSsrICogKnAyKys7CQ0KKw0KKwkJTF9zdW0xID0gKExfc3VtMSA8PCAyKTsNCisJCUxfc3VtMiA9IChMX3N1bTIgPDwgMik7DQorDQorCQljb3JyID0gdm9fcm91bmQoTF9zdW0xKTsJDQorCQkqY29yX3grKyA9IHZvX211bHQoY29yciwgc2lnbltwb3NdKSArICgqcDArKyk7DQorCQljb3JyID0gdm9fcm91bmQoTF9zdW0yKTsNCisJCSpjb3JfeSsrID0gdm9fbXVsdChjb3JyLCBzaWduW3Bvcy0zXSkgKyAoKnAzKyspOw0KKwkJcG9zICs9IFNURVA7DQorCX0NCisJcmV0dXJuOw0KK30NCisNCit2b2lkIGNvcl9oX3ZlY18wMTIoDQorCQlXb3JkMTYgaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzY2FsZWQgaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB2ZWNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCB2ZWN0b3IgKC84KSB0byBjb3JyZWxhdGUgd2l0aCBoW10gKi8NCisJCVdvcmQxNiB0cmFjaywgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHRyYWNrIHRvIHVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHNpZ25bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2lnbiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgcnJpeGl4W11bTkJfUE9TXSwgICAgICAgICAgICAgIC8qIChpKSBjb3JyZWxhdGlvbiBvZiBoW3hdIHdpdGggaFt4XSAgICAgICovDQorCQlXb3JkMTYgY29yXzFbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXN1bHQgb2YgY29ycmVsYXRpb24gKE5CX1BPUyBlbGVtZW50cykgKi8NCisJCVdvcmQxNiBjb3JfMltdICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KKwkJKQ0KK3sNCisJV29yZDMyIGksIGosIHBvcywgY29ycjsNCisJV29yZDE2ICpwMCwgKnAxLCAqcDIsKnAzLCpjb3JfeCwqY29yX3k7DQorCVdvcmQzMiBMX3N1bTEsTF9zdW0yOw0KKwljb3JfeCA9IGNvcl8xOw0KKwljb3JfeSA9IGNvcl8yOw0KKwlwMCA9IHJyaXhpeFt0cmFja107DQorCXAzID0gcnJpeGl4W3RyYWNrKzFdOw0KKwlwb3MgPSB0cmFjazsNCisNCisJZm9yIChpID0gMDsgaSA8IE5CX1BPUzsgaSs9MikNCisJew0KKwkJTF9zdW0xID0gTF9zdW0yID0gMEw7DQorCQlwMSA9IGg7DQorCQlwMiA9ICZ2ZWNbcG9zXTsNCisJCWZvciAoaj02Mi1wb3MgO2ogPj0gMDsgai0tKQ0KKwkJew0KKwkJCUxfc3VtMSArPSAqcDEgKiAqcDIrKzsNCisJCQlMX3N1bTIgKz0gKnAxKysgKiAqcDI7DQorCQl9DQorCQlMX3N1bTEgKz0gKnAxICogKnAyOw0KKwkJTF9zdW0xID0gKExfc3VtMSA8PCAyKTsNCisJCUxfc3VtMiA9IChMX3N1bTIgPDwgMik7DQorDQorCQljb3JyID0gKExfc3VtMSArIDB4ODAwMCkgPj4gMTY7DQorCQljb3JfeFtpXSA9IHZvX211bHQoY29yciwgc2lnbltwb3NdKSArICgqcDArKyk7DQorCQljb3JyID0gKExfc3VtMiArIDB4ODAwMCkgPj4gMTY7DQorCQljb3JfeVtpXSA9IHZvX211bHQoY29yciwgc2lnbltwb3MgKyAxXSkgKyAoKnAzKyspOw0KKwkJcG9zICs9IFNURVA7DQorDQorCQlMX3N1bTEgPSBMX3N1bTIgPSAwTDsNCisJCXAxID0gaDsNCisJCXAyID0gJnZlY1twb3NdOw0KKwkJZm9yIChqPSA2Mi1wb3M7aiA+PSAwOyBqLS0pDQorCQl7DQorCQkJTF9zdW0xICs9ICpwMSAqICpwMisrOw0KKwkJCUxfc3VtMiArPSAqcDErKyAqICpwMjsNCisJCX0NCisJCUxfc3VtMSArPSAqcDEgKiAqcDI7DQorCQlMX3N1bTEgPSAoTF9zdW0xIDw8IDIpOw0KKwkJTF9zdW0yID0gKExfc3VtMiA8PCAyKTsNCisNCisJCWNvcnIgPSAoTF9zdW0xICsgMHg4MDAwKSA+PiAxNjsNCisJCWNvcl94W2krMV0gPSB2b19tdWx0KGNvcnIsIHNpZ25bcG9zXSkgKyAoKnAwKyspOw0KKwkJY29yciA9IChMX3N1bTIgKyAweDgwMDApID4+IDE2Ow0KKwkJY29yX3lbaSsxXSA9IHZvX211bHQoY29yciwgc2lnbltwb3MgKyAxXSkgKyAoKnAzKyspOw0KKwkJcG9zICs9IFNURVA7DQorCX0NCisJcmV0dXJuOw0KK30NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogRnVuY3Rpb24gIHNlYXJjaF9peGl5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiBGaW5kIHRoZSBiZXN0IHBvc2l0aW9ucyBvZiAyIHB1bHNlcyBpbiBhIHN1YmZyYW1lLiAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHNlYXJjaF9peGl5KA0KKwkJV29yZDE2IG5iX3Bvc19peCwgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbmIgb2YgcG9zIGZvciBwdWxzZSAxICgxLi44KSAgICAgICAqLw0KKwkJV29yZDE2IHRyYWNrX3gsICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgb2YgcHVsc2UgMSAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHRyYWNrX3ksICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgb2YgcHVsc2UgMiAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogcHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSBjb3JyZWxhdGlvbiBvZiBhbGwgZml4ZWQgcHVsc2VzICAqLw0KKwkJV29yZDE2ICogYWxwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSBlbmVyZ3kgb2YgYWxsIGZpeGVkIHB1bHNlcyAgICAgICAqLw0KKwkJV29yZDE2ICogaXgsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcG9zaXRpb24gb2YgcHVsc2UgMSAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXksICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcG9zaXRpb24gb2YgcHVsc2UgMiAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGRuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgY29yci4gYmV0d2VlbiB0YXJnZXQgYW5kIGhbXSAgICAgICAqLw0KKwkJV29yZDE2IGRuMltdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdmVjdG9yIG9mIHNlbGVjdGVkIHBvc2l0aW9ucyAgICAgICAqLw0KKwkJV29yZDE2IGNvcl94W10sICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgY29yci4gb2YgcHVsc2UgMSB3aXRoIGZpeGVkIHB1bHNlcyAqLw0KKwkJV29yZDE2IGNvcl95W10sICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgY29yci4gb2YgcHVsc2UgMiB3aXRoIGZpeGVkIHB1bHNlcyAqLw0KKwkJV29yZDE2IHJyaXhpeVtdW01TSVpFXSAgICAgICAgICAgICAgICAvKiAoaSkgY29yci4gb2YgcHVsc2UgMSB3aXRoIHB1bHNlIDIgICAqLw0KKwkJKQ0KK3sNCisJV29yZDMyIHgsIHksIHBvcywgdGhyZXNfaXg7DQorCVdvcmQxNiBwczEsIHBzMiwgc3EsIHNxazsNCisJV29yZDE2IGFscF8xNiwgYWxwazsNCisJV29yZDE2ICpwMCwgKnAxLCAqcDI7DQorCVdvcmQzMiBzLCBhbHAwLCBhbHAxLCBhbHAyOw0KKw0KKwlwMCA9IGNvcl94OyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJcDEgPSBjb3JfeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXAyID0gcnJpeGl5W3RyYWNrX3hdOyAgICAgICAgICAgICAgICAgIA0KKw0KKwl0aHJlc19peCA9IG5iX3Bvc19peCAtIE5CX01BWDsNCisNCisJYWxwMCA9IExfZGVwb3NpdF9oKCphbHApOw0KKwlhbHAwID0gKGFscDAgKyAweDAwMDA4MDAwTCk7ICAgICAgIC8qIGZvciByb3VuZGluZyAqLw0KKw0KKwlzcWsgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJYWxwayA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoeCA9IHRyYWNrX3g7IHggPCBMX1NVQkZSOyB4ICs9IFNURVApDQorCXsNCisJCXBzMSA9ICpwcyArIGRuW3hdOw0KKwkJYWxwMSA9IGFscDAgKyAoKCpwMCsrKTw8MTMpOw0KKw0KKwkJaWYgKGRuMlt4XSA8IHRocmVzX2l4KQ0KKwkJew0KKwkJCXBvcyA9IC0xOw0KKwkJCWZvciAoeSA9IHRyYWNrX3k7IHkgPCBMX1NVQkZSOyB5ICs9IFNURVApDQorCQkJew0KKwkJCQlwczIgPSBhZGQxKHBzMSwgZG5beV0pOw0KKw0KKwkJCQlhbHAyID0gYWxwMSArICgoKnAxKyspPDwxMyk7DQorCQkJCWFscDIgPSBhbHAyICsgKCgqcDIrKyk8PDE0KTsNCisJCQkJYWxwXzE2ID0gZXh0cmFjdF9oKGFscDIpOw0KKwkJCQlzcSA9IHZvX211bHQocHMyLCBwczIpOw0KKwkJCQlzID0gdm9fTF9tdWx0KGFscGssIHNxKSAtICgoc3FrICogYWxwXzE2KTw8MSk7DQorDQorCQkJCWlmIChzID4gMCkNCisJCQkJew0KKwkJCQkJc3FrID0gc3E7ICAgICAgICAgICAgICANCisJCQkJCWFscGsgPSBhbHBfMTY7ICAgICAgICAgDQorCQkJCQlwb3MgPSB5OyAgICAgICAgICAgICAgIA0KKwkJCQl9DQorCQkJfQ0KKwkJCXAxIC09IE5CX1BPUzsNCisNCisJCQlpZiAocG9zID49IDApDQorCQkJew0KKwkJCQkqaXggPSB4OyAgICAgICAgICAgICAgICAgICANCisJCQkJKml5ID0gcG9zOyAgICAgICAgICAgICAgICAgDQorCQkJfQ0KKwkJfSBlbHNlDQorCQl7DQorCQkJcDIgKz0gTkJfUE9TOw0KKwkJfQ0KKwl9DQorDQorCSpwcyA9IGFkZDEoKnBzLCBhZGQxKGRuWyppeF0sIGRuWyppeV0pKTsgDQorCSphbHAgPSBhbHBrOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvY21uTWVtb3J5LmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2Ntbk1lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNzI2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2Ntbk1lbW9yeS5jCkBAIC0wLDAgKzEsNzMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWNtbk1lbW9yeS5jDQorDQorCUNvbnRlbnQ6CXNhbXBsZSBjb2RlIGZvciBtZW1vcnkgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJjbW5NZW1vcnkuaCINCisNCisjaW5jbHVkZSA8bWFsbG9jLmg+DQorI2lmIGRlZmluZWQgTElOVVgNCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2VuZGlmDQorDQorLy9WT19NRU1fT1BFUkFUT1IJCWdfbWVtT1A7DQorDQorVk9fVTMyIGNtbk1lbUFsbG9jIChWT19TMzIgdUlELCAgVk9fTUVNX0lORk8gKiBwTWVtSW5mbykNCit7DQorCWlmICghcE1lbUluZm8pDQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKw0KKwlwTWVtSW5mby0+VkJ1ZmZlciA9IG1hbGxvYyAocE1lbUluZm8tPlNpemUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorVk9fVTMyIGNtbk1lbUZyZWUgKFZPX1MzMiB1SUQsIFZPX1BUUiBwTWVtKQ0KK3sNCisJZnJlZSAocE1lbSk7DQorCXJldHVybiAwOw0KK30NCisNCitWT19VMzIJY21uTWVtU2V0IChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmYsIFZPX1U4IHVWYWx1ZSwgVk9fVTMyIHVTaXplKQ0KK3sNCisJbWVtc2V0IChwQnVmZiwgdVZhbHVlLCB1U2l6ZSk7DQorCXJldHVybiAwOw0KK30NCisNCitWT19VMzIJY21uTWVtQ29weSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBEZXN0LCBWT19QVFIgcFNvdXJjZSwgVk9fVTMyIHVTaXplKQ0KK3sNCisJbWVtY3B5IChwRGVzdCwgcFNvdXJjZSwgdVNpemUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorVk9fVTMyCWNtbk1lbUNoZWNrIChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmZlciwgVk9fVTMyIHVTaXplKQ0KK3sNCisJcmV0dXJuIDA7DQorfQ0KKw0KK1ZPX1MzMiBjbW5NZW1Db21wYXJlIChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmZlcjEsIFZPX1BUUiBwQnVmZmVyMiwgVk9fVTMyIHVTaXplKQ0KK3sNCisJcmV0dXJuIG1lbWNtcChwQnVmZmVyMSwgcEJ1ZmZlcjIsIHVTaXplKTsNCit9DQorDQorVk9fVTMyCWNtbk1lbU1vdmUgKFZPX1MzMiB1SUQsIFZPX1BUUiBwRGVzdCwgVk9fUFRSIHBTb3VyY2UsIFZPX1UzMiB1U2l6ZSkNCit7DQorCW1lbW1vdmUgKHBEZXN0LCBwU291cmNlLCB1U2l6ZSk7DQorCXJldHVybiAwOw0KK30NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2NvbnZvbHZlLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2NvbnZvbHZlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZjNzRkNgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvY29udm9sdmUuYwpAQCAtMCwwICsxLDEwOSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICAgICAgRmlsZTogY29udm9sdmUuYw0KKw0KKwkgICBEZXNjcmlwdGlvbjpQZXJmb3JtIHRoZSBjb252b2x1dGlvbiBiZXR3ZWVuIHR3byB2ZWN0b3JzIHhbXSBhbmQgaFtdDQorCSAgICAgICAgICAgICAgIGFuZCB3cml0ZSB0aGUgcmVzdWx0IGluIHRoZSB2ZWN0b3IgeVtdDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorDQordm9pZCBDb252b2x2ZSAoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaFtdLCAgICAgICAgLyogKGkpICAgICA6IGltcHVsc2UgcmVzcG9uc2UgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgLyogKG8pICAgICA6IG91dHB1dCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgTCAgICAgICAgICAgLyogKGkpICAgICA6IHZlY3RvciBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICAgICkNCit7DQorCVdvcmQzMiAgaSwgbjsNCisJV29yZDE2ICp0bXBILCp0bXBYOw0KKwlXb3JkMzIgczsNCisJZm9yIChuID0gMDsgbiA8IDY0OykNCisJew0KKwkJdG1wSCA9IGgrbjsNCisJCXRtcFggPSB4Ow0KKwkJaT1uKzE7DQorCQlzID0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTtpLS07DQorCQl3aGlsZShpPjApDQorCQl7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCWkgLT0gNDsNCisJCX0NCisJCXlbbl0gPSAoKHM8PDEpICsgMHg4MDAwKT4+MTY7ICAgDQorCQluKys7DQorDQorCQl0bXBIID0gaCtuOw0KKwkJdG1wWCA9IHg7DQorCQlpPW4rMTsNCisJCXMgPSAgdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTtpLS07DQorCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7aS0tOw0KKw0KKwkJd2hpbGUoaT4wKQ0KKwkJew0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlpIC09IDQ7DQorCQl9DQorCQl5W25dID0gKChzPDwxKSArIDB4ODAwMCk+PjE2OyAgICANCisJCW4rKzsNCisNCisJCXRtcEggPSBoK247DQorCQl0bXBYID0geDsNCisJCWk9bisxOw0KKwkJcyA9ICB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpO2ktLTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTtpLS07DQorCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7aS0tOw0KKw0KKwkJd2hpbGUoaT4wKQ0KKwkJew0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlpIC09IDQ7DQorCQl9DQorCQl5W25dID0gKChzPDwxKSArIDB4ODAwMCk+PjE2OyAgIA0KKwkJbisrOw0KKw0KKwkJcyA9IDA7DQorCQl0bXBIID0gaCtuOw0KKwkJdG1wWCA9IHg7DQorCQlpPW4rMTsNCisJCXdoaWxlKGk+MCkNCisJCXsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJaSAtPSA0Ow0KKwkJfQ0KKwkJeVtuXSA9ICgoczw8MSkgKyAweDgwMDApPj4xNjsgICANCisJCW4rKzsgICAgICAgIA0KKwl9DQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9jb3JfaF94LmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2Nvcl9oX3guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzJlOWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9jb3JfaF94LmMKQEAgLTAsMCArMSwxMjcgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiBjb3JfaF94LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKgkgICBEZXNjcmlwdGlvbjpDb21wdXRlIGNvcnJlbGF0aW9uIGJldHdlZW4gdGFyZ2V0ICJ4W10iIGFuZCAiaFtdIiAgKg0KKyoJICAgICAgICAgICAgICAgRGVzaWduZWQgZm9yIGNvZGVib29rIHNlYXJjaCAoMjQgcHVsc2VzLCA0IHRyYWNrcywgICogDQorKgkJCQkgICA0IHB1bHNlcyBwZXIgdHJhY2ssIDE2IHBvc2l0aW9ucyBpbiBlYWNoIHRyYWNrKSB0byAgKg0KKyoJCQkJICAgYXZvaWQgc2F0dXJhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKw0KKyNkZWZpbmUgTF9TVUJGUiAgIDY0DQorI2RlZmluZSBOQl9UUkFDSyAgNA0KKyNkZWZpbmUgU1RFUCAgICAgIDQNCisNCit2b2lkIGNvcl9oX3goDQorCQlXb3JkMTYgaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBpbXB1bHNlIHJlc3BvbnNlIG9mIHdlaWdodGVkIHN5bnRoZXNpcyBmaWx0ZXIgKi8NCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFEwICA6IHRhcmdldCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGRuW10gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgPDEyYml0IDogY29ycmVsYXRpb24gYmV0d2VlbiB0YXJnZXQgYW5kIGhbXSAgICAgICAgICovDQorCSAgICApDQorew0KKwlXb3JkMzIgaSwgajsNCisJV29yZDMyIExfdG1wLCB5MzJbTF9TVUJGUl0sIExfdG90Ow0KKwlXb3JkMTYgKnAxLCAqcDI7DQorCVdvcmQzMiAqcDM7DQorCVdvcmQzMiBMX21heCwgTF9tYXgxLCBMX21heDIsIExfbWF4MzsNCisJLyogZmlyc3Qga2VlcCB0aGUgcmVzdWx0IG9uIDMyIGJpdHMgYW5kIGZpbmQgYWJzb2x1dGUgbWF4aW11bSAqLw0KKwlMX3RvdCAgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJTF9tYXggID0gMDsgDQorCUxfbWF4MSA9IDA7DQorCUxfbWF4MiA9IDA7DQorCUxfbWF4MyA9IDA7DQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpICs9IFNURVApDQorCXsNCisJCUxfdG1wID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAxIC0+IHRvIGF2b2lkIG51bGwgZG5bXSAqLw0KKwkJcDEgPSAmeFtpXTsNCisJCXAyID0gJmhbMF07DQorCQlmb3IgKGogPSBpOyBqIDwgTF9TVUJGUjsgaisrKQ0KKwkJCUxfdG1wICs9IHZvX0xfbXVsdCgqcDErKywgKnAyKyspOw0KKw0KKwkJeTMyW2ldID0gTF90bXA7ICAgICAgICAgICAgICAgDQorCQlMX3RtcCA9IChMX3RtcCA+IDApPyBMX3RtcDotTF90bXA7DQorCQlpZihMX3RtcCA+IExfbWF4KQ0KKwkJew0KKwkJCUxfbWF4ID0gTF90bXA7ICAgICAgICAgICAgIA0KKwkJfQ0KKw0KKwkJTF90bXAgPSAxTDsNCisJCXAxID0gJnhbaSsxXTsNCisJCXAyID0gJmhbMF07DQorCQlmb3IgKGogPSBpKzE7IGogPCBMX1NVQkZSOyBqKyspDQorCQkJTF90bXAgKz0gdm9fTF9tdWx0KCpwMSsrLCAqcDIrKyk7DQorDQorCQl5MzJbaSsxXSA9IExfdG1wOyAgICAgICAgICAgICAgIA0KKwkJTF90bXAgPSAoTF90bXAgPiAwKT8gTF90bXA6LUxfdG1wOw0KKwkJaWYoTF90bXAgPiBMX21heDEpDQorCQl7DQorCQkJTF9tYXgxID0gTF90bXA7ICAgICAgICAgICAgIA0KKwkJfQ0KKw0KKwkJTF90bXAgPSAxOw0KKwkJcDEgPSAmeFtpKzJdOw0KKwkJcDIgPSAmaFswXTsNCisJCWZvciAoaiA9IGkrMjsgaiA8IExfU1VCRlI7IGorKykNCisJCQlMX3RtcCArPSB2b19MX211bHQoKnAxKyssICpwMisrKTsNCisNCisJCXkzMltpKzJdID0gTF90bXA7ICAgICAgICAgICAgICAgDQorCQlMX3RtcCA9IChMX3RtcCA+IDApPyBMX3RtcDotTF90bXA7DQorCQlpZihMX3RtcCA+IExfbWF4MikNCisJCXsNCisJCQlMX21heDIgPSBMX3RtcDsgICAgICAgICAgICAgDQorCQl9DQorDQorCQlMX3RtcCA9IDE7DQorCQlwMSA9ICZ4W2krM107DQorCQlwMiA9ICZoWzBdOw0KKwkJZm9yIChqID0gaSszOyBqIDwgTF9TVUJGUjsgaisrKQ0KKwkJCUxfdG1wICs9IHZvX0xfbXVsdCgqcDErKywgKnAyKyspOw0KKw0KKwkJeTMyW2krM10gPSBMX3RtcDsgICAgICAgICAgICAgICANCisJCUxfdG1wID0gKExfdG1wID4gMCk/IExfdG1wOi1MX3RtcDsNCisJCWlmKExfdG1wID4gTF9tYXgzKQ0KKwkJew0KKwkJCUxfbWF4MyA9IExfdG1wOyAgICAgICAgICAgICANCisJCX0NCisJfQ0KKwkvKiB0b3QgKz0gMyptYXggLyA4ICovDQorCUxfbWF4ID0gKChMX21heCArIExfbWF4MSArIExfbWF4MiArIExfbWF4MykgPj4gMik7DQorCUxfdG90ID0gdm9fTF9hZGQoTF90b3QsIExfbWF4KTsgICAgICAgLyogK21heC80ICovDQorCUxfdG90ID0gdm9fTF9hZGQoTF90b3QsIChMX21heCA+PiAxKSk7ICAvKiArbWF4LzggKi8NCisNCisJLyogRmluZCB0aGUgbnVtYmVyIG9mIHJpZ2h0IHNoaWZ0cyB0byBkbyBvbiB5MzJbXSBzbyB0aGF0ICAgICovDQorCS8qIDYuMCB4IHN1bWF0aW9uIG9mIG1heCBvZiBkbltdIGluIGVhY2ggdHJhY2sgbm90IHNhdHVyYXRlLiAqLw0KKwlqID0gbm9ybV9sKExfdG90KSAtIDQ7ICAgICAgICAgICAgIC8qIDQgLT4gMTYgeCB0b3QgKi8NCisJcDEgPSBkbjsNCisJcDMgPSB5MzI7DQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKz00KQ0KKwl7DQorCQkqcDErKyA9IHZvX3JvdW5kKExfc2hsKCpwMysrLCBqKSk7DQorCQkqcDErKyA9IHZvX3JvdW5kKExfc2hsKCpwMysrLCBqKSk7DQorCQkqcDErKyA9IHZvX3JvdW5kKExfc2hsKCpwMysrLCBqKSk7DQorCQkqcDErKyA9IHZvX3JvdW5kKExfc2hsKCpwMysrLCBqKSk7DQorCX0NCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2RlY2ltNTQuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvZGVjaW01NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOWE3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2RlY2ltNTQuYwpAQCAtMCwwICsxLDE0NiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogZGVjaW01NC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCSAgIERlc2NyaXB0aW9uOkRlY2ltYXRpb24gb2YgMTZrSHogc2lnbmFsIHRvIDEyLjhrSHogICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKw0KKyNkZWZpbmUgRkFDNSAgIDUNCisjZGVmaW5lIERPV05fRkFDICAyNjIxNSAgICAgICAgICAgICAgICAgICAgLyogNC81IGluIFExNSAqLw0KKw0KKyNkZWZpbmUgTkJfQ09FRl9ET1dOICAxNQ0KKw0KKy8qIExvY2FsIGZ1bmN0aW9ucyAqLw0KK3N0YXRpYyB2b2lkIERvd25fc2FtcCgNCisJCVdvcmQxNiAqIHNpZywgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBzaWduYWwgdG8gZG93bnNhbXBsaW5nICAqLw0KKwkJV29yZDE2ICogc2lnX2QsICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IGRvd25zYW1wbGVkIHNpZ25hbCAgICAgICovDQorCQlXb3JkMTYgTF9mcmFtZV9kICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgbGVuZ3RoIG9mIG91dHB1dCAgICAgICAgKi8NCisJCSk7DQorDQorLyogMS81IHJlc29sdXRpb24gaW50ZXJwb2xhdGlvbiBmaWx0ZXIgIChpbiBRMTQpICAqLw0KKy8qIC0xLjVkQiBAIDZrSHosIC02ZEIgQCA2LjRrSHosIC0xMGRCIEAgNi42a0h6LCAtMjBkQiBAIDYuOWtIeiwgLTI1ZEIgQCA3a0h6LCAtNTVkQiBAIDhrSHogKi8NCisNCitzdGF0aWMgV29yZDE2IGZpcl9kb3duMVs0XVszMF0gPQ0KK3sNCisJey01LCAyNCwgLTUwLCA1NCwgMCwgLTEyOCwgMjk0LCAtNDA4LCAzNDQsIDAsIC02NDcsIDE1MDUsIC0yMzc5LCAzMDM0LCAxMzEwNywgMzAzNCwgLTIzNzksIDE1MDUsIC02NDcsIDAsIDM0NCwgLTQwOCwNCisJMjk0LCAtMTI4LCAwLCA1NCwgLTUwLCAyNCwgLTUsIDB9LA0KKw0KKwl7LTYsIDE5LCAtMjYsIDAsIDc3LCAtMTg4LCAyNzAsIC0yMzMsIDAsIDQzNCwgLTk2NCwgMTM2NiwgLTEyOTMsIDAsIDEyMjU0LCA2NTc1LCAtMjc0NiwgMTAzMCwgMCwgLTUwNywgNjAxLCAtNDQxLA0KKwkxOTgsIDAsIC05NSwgOTksIC01OCwgMTgsIDAsIC0xfSwNCisNCisJey0zLCA5LCAwLCAtNDEsIDExMSwgLTE3MCwgMTUzLCAwLCAtMjk1LCA2NDksIC04ODgsIDc3MCwgMCwgLTE5OTcsIDk4OTQsIDk4OTQsIC0xOTk3LCAwLCA3NzAsIC04ODgsIDY0OSwgLTI5NSwgMCwNCisJMTUzLCAtMTcwLCAxMTEsIC00MSwgMCwgOSwgLTN9LA0KKw0KKwl7LTEsIDAsIDE4LCAtNTgsIDk5LCAtOTUsIDAsIDE5OCwgLTQ0MSwgNjAxLCAtNTA3LCAwLCAxMDMwLCAtMjc0NiwgNjU3NSwgMTIyNTQsIDAsIC0xMjkzLCAxMzY2LCAtOTY0LCA0MzQsIDAsDQorCS0yMzMsIDI3MCwgLTE4OCwgNzcsIDAsIC0yNiwgMTksIC02fQ0KK307DQorDQordm9pZCBJbml0X0RlY2ltXzEyazgoDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogbWVtb3J5ICgyKk5CX0NPRUZfRE9XTikgc2V0IHRvIHplcm9zICovDQorCQkpDQorew0KKwlTZXRfemVybyhtZW0sIDIgKiBOQl9DT0VGX0RPV04pOw0KKwlyZXR1cm47DQorfQ0KKw0KK3ZvaWQgRGVjaW1fMTJrOCgNCisJCVdvcmQxNiBzaWcxNmtbXSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBzaWduYWwgdG8gZG93bnNhbXBsaW5nICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIGxlbmd0aCBvZiBpbnB1dCAgICAgICAgICovDQorCQlXb3JkMTYgc2lnMTJrOFtdLCAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogZGVjaW1hdGVkIHNpZ25hbCAgICAgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBtZW1vcnkgKDIqTkJfQ09FRl9ET1dOKSAqLw0KKwkgICAgICAgKQ0KK3sNCisJV29yZDE2IGxnX2Rvd247DQorCVdvcmQxNiBzaWduYWxbTF9GUkFNRTE2ayArICgyICogTkJfQ09FRl9ET1dOKV07DQorDQorCUNvcHkobWVtLCBzaWduYWwsIDIgKiBOQl9DT0VGX0RPV04pOw0KKw0KKwlDb3B5KHNpZzE2aywgc2lnbmFsICsgKDIgKiBOQl9DT0VGX0RPV04pLCBsZyk7DQorDQorCWxnX2Rvd24gPSAobGcgKiBET1dOX0ZBQyk+PjE1Ow0KKw0KKwlEb3duX3NhbXAoc2lnbmFsICsgTkJfQ09FRl9ET1dOLCBzaWcxMms4LCBsZ19kb3duKTsNCisNCisJQ29weShzaWduYWwgKyBsZywgbWVtLCAyICogTkJfQ09FRl9ET1dOKTsNCisNCisJcmV0dXJuOw0KK30NCisNCitzdGF0aWMgdm9pZCBEb3duX3NhbXAoDQorCQlXb3JkMTYgKiBzaWcsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgc2lnbmFsIHRvIGRvd25zYW1wbGluZyAgKi8NCisJCVdvcmQxNiAqIHNpZ19kLCAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBkb3duc2FtcGxlZCBzaWduYWwgICAgICAqLw0KKwkJV29yZDE2IExfZnJhbWVfZCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIGxlbmd0aCBvZiBvdXRwdXQgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMzIgaSwgaiwgZnJhYywgcG9zOw0KKwlXb3JkMTYgKngsICp5Ow0KKwlXb3JkMzIgTF9zdW07DQorDQorCXBvcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcG9zaXRpb24gaXMgaW4gUTIgLT4gMS80IHJlc29sdXRpb24gICovDQorCWZvciAoaiA9IDA7IGogPCBMX2ZyYW1lX2Q7IGorKykNCisJew0KKwkJaSA9IChwb3MgPj4gMik7ICAgICAgICAgICAgICAgICAgIC8qIGludGVnZXIgcGFydCAgICAgKi8NCisJCWZyYWMgPSBwb3MgJiAzOyAgICAgICAgICAgICAgICAgICAvKiBmcmFjdGlvbmFsIHBhcnQgKi8NCisJCXggPSBzaWcgKyBpIC0gTkJfQ09FRl9ET1dOICsgMTsNCisJCXkgPSAoV29yZDE2ICopKGZpcl9kb3duMSArIGZyYWMpOw0KKw0KKwkJTF9zdW0gPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KyspLCgqeSsrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCp4KSwoKnkpKTsNCisNCisJCUxfc3VtID0gTF9zaGwyKExfc3VtLCAyKTsgICAgICAgICAgICAgIA0KKwkJc2lnX2Rbal0gPSBleHRyYWN0X2goTF9hZGQoTF9zdW0sIDB4ODAwMCkpOyANCisJCXBvcyArPSBGQUM1OyAgICAgICAgICAgICAgLyogcG9zICsgNS80ICovDQorCX0NCisJcmV0dXJuOw0KK30NCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2RlZW1waC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9kZWVtcGguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWQ1MjhkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9kZWVtcGguYwpAQCAtMCwwICsxLDExNyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IGRlZW1waC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCSAgIERlc2NyaXB0aW9uOmZpbHRlcmluZyB0aHJvdWdoIDEvKDEtbXUgel4gLTEpICAgICAgICAgICAgICAgICAgICAqDQorKgkgICAgICAgICAgICAgICBEZWVtcGgyIC0tPiBzaWduYWwgaXMgZGl2aWRlZCBieSAyICAgICAgICAgICAgICAgICAgKg0KKyoJCQkJICAgRGVlbXBoXzMyIC0tPiBmb3IgMzIgYml0cyBzaWduYWwuICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKw0KK3ZvaWQgRGVlbXBoKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogaW5wdXQgc2lnbmFsIG92ZXJ3cml0dGVuIGJ5IHRoZSBvdXRwdXQgKi8NCisJCVdvcmQxNiBtdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGRlZW1waGFzaXMgZmFjdG9yICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh5Wy0xXSkgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgKQ0KK3sNCisJV29yZDMyIGk7DQorCVdvcmQzMiBMX3RtcDsNCisNCisJTF90bXAgPSBMX2RlcG9zaXRfaCh4WzBdKTsNCisJTF90bXAgPSBMX21hYyhMX3RtcCwgKm1lbSwgbXUpOw0KKwl4WzBdID0gdm9fcm91bmQoTF90bXApOyAgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChpID0gMTsgaSA8IEw7IGkrKykNCisJew0KKwkJTF90bXAgPSBMX2RlcG9zaXRfaCh4W2ldKTsNCisJCUxfdG1wID0gTF9tYWMoTF90bXAsIHhbaSAtIDFdLCBtdSk7DQorCQl4W2ldID0gdm9yb3VuZChMX3RtcCk7ICAgICAgICAgICAgICAgDQorCX0NCisNCisJKm1lbSA9IHhbTCAtIDFdOyAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCXJldHVybjsNCit9DQorDQorDQordm9pZCBEZWVtcGgyKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogaW5wdXQgc2lnbmFsIG92ZXJ3cml0dGVuIGJ5IHRoZSBvdXRwdXQgKi8NCisJCVdvcmQxNiBtdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGRlZW1waGFzaXMgZmFjdG9yICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh5Wy0xXSkgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMzIgTF90bXA7DQorCUxfdG1wID0geFswXSA8PCAxNTsNCisJTF90bXAgKz0gKCgqbWVtKSAqIG11KTw8MTsNCisJeFswXSA9IChMX3RtcCArIDB4ODAwMCk+PjE2OyAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMTsgaSA8IEw7IGkrKykNCisJew0KKwkJTF90bXAgPSB4W2ldIDw8IDE1Ow0KKwkJTF90bXAgKz0gKHhbaSAtIDFdICogbXUpPDwxOw0KKwkJeFtpXSA9IChMX3RtcCArIDB4ODAwMCk+PjE2OyAgICAgICAgICAgICAgIA0KKwl9DQorCSptZW0gPSB4W0wgLSAxXTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwlyZXR1cm47DQorfQ0KKw0KKw0KK3ZvaWQgRGVlbXBoXzMyKA0KKwkJV29yZDE2IHhfaGlbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsIChiaXQzMS4uMTYpICovDQorCQlXb3JkMTYgeF9sb1tdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgKGJpdDE1Li40KSAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IG91dHB1dCBzaWduYWwgKHgxNikgICAgICAqLw0KKwkJV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogZGVlbXBoYXNpcyBmYWN0b3IgICAgICAgICovDQorCQlXb3JkMTYgTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSAoeVstMV0pICAgICAgICAgICAqLw0KKwkgICAgICApDQorew0KKwlXb3JkMTYgZmFjOw0KKwlXb3JkMzIgaSwgTF90bXA7DQorDQorCWZhYyA9IG11ID4+IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTUgLS0+IFExNCAqLw0KKw0KKwlMX3RtcCA9IExfZGVwb3NpdF9oKHhfaGlbMF0pOw0KKwlMX3RtcCArPSAoeF9sb1swXSAqIDgpPDwxOw0KKwlMX3RtcCA9IChMX3RtcCA8PCAzKTsNCisJTF90bXAgKz0gKCgqbWVtKSAqIGZhYyk8PDE7DQorCUxfdG1wID0gKExfdG1wIDw8IDEpOyAgICAgICAgICAgICAgIA0KKwl5WzBdID0gKExfdG1wICsgMHg4MDAwKT4+MTY7ICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoaSA9IDE7IGkgPCBMOyBpKyspDQorCXsNCisJCUxfdG1wID0gTF9kZXBvc2l0X2goeF9oaVtpXSk7DQorCQlMX3RtcCArPSAoeF9sb1tpXSAqIDgpPDwxOw0KKwkJTF90bXAgPSAoTF90bXAgPDwgMyk7DQorCQlMX3RtcCArPSAoeVtpIC0gMV0gKiBmYWMpPDwxOw0KKwkJTF90bXAgPSAoTF90bXAgPDwgMSk7ICAgICAgICAgICANCisJCXlbaV0gPSAoTF90bXAgKyAweDgwMDApPj4xNjsgICAgICAgICAgICAgICANCisJfQ0KKw0KKwkqbWVtID0geVtMIC0gMV07ICAgICAgICAgICAgICAgICAgICAgICANCisNCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2R0eC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9kdHguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjkyMWViCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9kdHguYwpAQCAtMCwwICsxLDYwNSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IGR0eC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCSAgICBEZXNjcmlwdGlvbjpEVFggZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgIm1hdGhfb3AuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKyNpbmNsdWRlICJhY2VscC5oIiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b3R5cGUgb2YgZnVuY3Rpb25zICAgICovDQorI2luY2x1ZGUgImJpdHMuaCINCisjaW5jbHVkZSAiZHR4LmgiDQorI2luY2x1ZGUgImxvZzIuaCINCisjaW5jbHVkZSAibWVtX2FsaWduLmgiDQorDQorc3RhdGljIHZvaWQgYXZlcl9pc2ZfaGlzdG9yeSgNCisJCVdvcmQxNiBpc2Zfb2xkW10sDQorCQlXb3JkMTYgaW5kaWNlc1tdLA0KKwkJV29yZDMyIGlzZl9hdmVyW10NCisJCSk7DQorDQorc3RhdGljIHZvaWQgZmluZF9mcmFtZV9pbmRpY2VzKA0KKwkJV29yZDE2IGlzZl9vbGRfdHhbXSwNCisJCVdvcmQxNiBpbmRpY2VzW10sDQorCQlkdHhfZW5jU3RhdGUgKiBzdA0KKwkJKTsNCisNCitzdGF0aWMgV29yZDE2IGRpdGhlcmluZ19jb250cm9sKA0KKwkJZHR4X2VuY1N0YXRlICogc3QNCisJCSk7DQorDQorLyogZXhjaXRhdGlvbiBlbmVyZ3kgYWRqdXN0bWVudCBkZXBlbmRpbmcgb24gc3BlZWNoIGNvZGVyIG1vZGUgdXNlZCwgUTcgKi8NCitzdGF0aWMgV29yZDE2IGVuX2FkanVzdFs5XSA9DQorew0KKwkyMzAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtb2RlMCA9IDdrICA6ICAtNS40ZEIgICovDQorCTE3OSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1vZGUxID0gOWsgIDogIC00LjJkQiAgKi8NCisJMTQxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbW9kZTIgPSAxMmsgOiAgLTMuM2RCICAqLw0KKwkxMjgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtb2RlMyA9IDE0ayA6ICAtMy4wZEIgICovDQorCTEyMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1vZGU0ID0gMTZrIDogIC0yLjg1ZEIgKi8NCisJMTE1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbW9kZTUgPSAxOGsgOiAgLTIuN2RCICAqLw0KKwkxMTUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtb2RlNiA9IDIwayA6ICAtMi43ZEIgICovDQorCTExNSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1vZGU3ID0gMjNrIDogIC0yLjdkQiAgKi8NCisJMTE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbW9kZTggPSAyNGsgOiAgLTIuN2RCICAqLw0KK307DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogRnVuY3Rpb24gICAgOiBkdHhfZW5jX2luaXQNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorV29yZDE2IGR0eF9lbmNfaW5pdChkdHhfZW5jU3RhdGUgKiogc3QsIFdvcmQxNiBpc2ZfaW5pdFtdLCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCkNCit7DQorCWR0eF9lbmNTdGF0ZSAqczsNCisNCisJaWYgKHN0ID09IChkdHhfZW5jU3RhdGUgKiopIE5VTEwpDQorCXsNCisJCWZwcmludGYoc3RkZXJyLCAiZHR4X2VuY19pbml0OiBpbnZhbGlkIHBhcmFtZXRlclxuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisJKnN0ID0gTlVMTDsNCisNCisJLyogYWxsb2NhdGUgbWVtb3J5ICovDQorCWlmICgocyA9IChkdHhfZW5jU3RhdGUgKiltZW1fbWFsbG9jKHBNZW1PUCwgc2l6ZW9mKGR0eF9lbmNTdGF0ZSksIDMyLCBWT19JTkRFWF9FTkNfQU1SV0IpKSA9PSBOVUxMKQ0KKwl7DQorCQlmcHJpbnRmKHN0ZGVyciwgImR0eF9lbmNfaW5pdDogY2FuIG5vdCBtYWxsb2Mgc3RhdGUgc3RydWN0dXJlXG4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKwlkdHhfZW5jX3Jlc2V0KHMsIGlzZl9pbml0KTsNCisJKnN0ID0gczsNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqIEZ1bmN0aW9uICAgIDogZHR4X2VuY19yZXNldA0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitXb3JkMTYgZHR4X2VuY19yZXNldChkdHhfZW5jU3RhdGUgKiBzdCwgV29yZDE2IGlzZl9pbml0W10pDQorew0KKwlXb3JkMzIgaTsNCisNCisJaWYgKHN0ID09IChkdHhfZW5jU3RhdGUgKikgTlVMTCkNCisJew0KKwkJZnByaW50ZihzdGRlcnIsICJkdHhfZW5jX3Jlc2V0OiBpbnZhbGlkIHBhcmFtZXRlclxuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisJc3QtPmhpc3RfcHRyID0gMDsgICAgICAgICAgICAgICAgICAgICAgDQorCXN0LT5sb2dfZW5faW5kZXggPSAwOyAgICAgICAgICAgICAgICAgIA0KKw0KKwkvKiBJbml0IGlzZl9oaXN0W10gKi8NCisJZm9yIChpID0gMDsgaSA8IERUWF9ISVNUX1NJWkU7IGkrKykNCisJew0KKwkJQ29weShpc2ZfaW5pdCwgJnN0LT5pc2ZfaGlzdFtpICogTV0sIE0pOw0KKwl9DQorCXN0LT5jbmdfc2VlZCA9IFJBTkRPTV9JTklUU0VFRDsgICAgICAgDQorDQorCS8qIFJlc2V0IGVuZXJneSBoaXN0b3J5ICovDQorCVNldF96ZXJvKHN0LT5sb2dfZW5faGlzdCwgRFRYX0hJU1RfU0laRSk7DQorDQorCXN0LT5kdHhIYW5nb3ZlckNvdW50ID0gRFRYX0hBTkdfQ09OU1Q7IA0KKwlzdC0+ZGVjQW5hRWxhcHNlZENvdW50ID0gMzI3Njc7ICAgICAgICANCisNCisJZm9yIChpID0gMDsgaSA8IDI4OyBpKyspDQorCXsNCisJCXN0LT5EW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgDQorCX0NCisNCisJZm9yIChpID0gMDsgaSA8IERUWF9ISVNUX1NJWkUgLSAxOyBpKyspDQorCXsNCisJCXN0LT5zdW1EW2ldID0gMDsgICAgICAgICAgICAgICAgICAgDQorCX0NCisNCisJcmV0dXJuIDE7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqIEZ1bmN0aW9uICAgIDogZHR4X2VuY19leGl0DQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3ZvaWQgZHR4X2VuY19leGl0KGR0eF9lbmNTdGF0ZSAqKiBzdCwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApDQorew0KKwlpZiAoc3QgPT0gTlVMTCB8fCAqc3QgPT0gTlVMTCkNCisJCXJldHVybjsNCisJLyogZGVhbGxvY2F0ZSBtZW1vcnkgKi8NCisJbWVtX2ZyZWUocE1lbU9QLCAqc3QsIFZPX0lOREVYX0VOQ19BTVJXQik7DQorCSpzdCA9IE5VTEw7DQorCXJldHVybjsNCit9DQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogRnVuY3Rpb24gICAgOiBkdHhfZW5jDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK1dvcmQxNiBkdHhfZW5jKA0KKwkJZHR4X2VuY1N0YXRlICogc3QsICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaXNmW01dLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG8gICA6IENOIElTRiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGV4YzIsICAgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogQ04gZXhjaXRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICoqIHBybXMNCisJICAgICAgKQ0KK3sNCisJV29yZDMyIGksIGo7DQorCVdvcmQxNiBpbmRpY2VbN107DQorCVdvcmQxNiBsb2dfZW4sIGdhaW4sIGxldmVsLCBleHAsIGV4cDAsIHRtcDsNCisJV29yZDE2IGxvZ19lbl9pbnRfZSwgbG9nX2VuX2ludF9tOw0KKwlXb3JkMzIgTF9pc2ZbTV0sIGVuZXIzMiwgbGV2ZWwzMjsNCisJV29yZDE2IGlzZl9vcmRlclszXTsNCisJV29yZDE2IENOX2RpdGg7DQorDQorCS8qIFZPWCBtb2RlIGNvbXB1dGF0aW9uIG9mIFNJRCBwYXJhbWV0ZXJzICovDQorCWxvZ19lbiA9IDA7DQorCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCXsNCisJCUxfaXNmW2ldID0gMDsNCisJfQ0KKwkvKiBhdmVyYWdlIGVuZXJneSBhbmQgaXNmICovDQorCWZvciAoaSA9IDA7IGkgPCBEVFhfSElTVF9TSVpFOyBpKyspDQorCXsNCisJCS8qIERpdmlzaW9uIGJ5IERUWF9ISVNUX1NJWkUgPSA4IGhhcyBiZWVuIGRvbmUgaW4gZHR4X2J1ZmZlci4gbG9nX2VuIGlzIGluIFExMCAqLw0KKwkJbG9nX2VuID0gYWRkKGxvZ19lbiwgc3QtPmxvZ19lbl9oaXN0W2ldKTsNCisNCisJfQ0KKwlmaW5kX2ZyYW1lX2luZGljZXMoc3QtPmlzZl9oaXN0LCBpc2Zfb3JkZXIsIHN0KTsNCisJYXZlcl9pc2ZfaGlzdG9yeShzdC0+aXNmX2hpc3QsIGlzZl9vcmRlciwgTF9pc2YpOw0KKw0KKwlmb3IgKGogPSAwOyBqIDwgTTsgaisrKQ0KKwl7DQorCQlpc2Zbal0gPSAoV29yZDE2KShMX2lzZltqXSA+PiAzKTsgIC8qIGRpdmlkZSBieSA4ICovDQorCX0NCisNCisJLyogcXVhbnRpemUgbG9nYXJpdGhtaWMgZW5lcmd5IHRvIDYgYml0cyAoLTYgOiA2NiBkQikgd2hpY2ggY29ycmVzcG9uZHMgdG8gLTI6MjIgaW4gbG9nMihFKS4gICovDQorCS8qIHN0LT5sb2dfZW5faW5kZXggPSAoc2hvcnQpKCAobG9nX2VuICsgMi4wKSAqIDIuNjI1ICk7ICovDQorDQorCS8qIGluY3JlYXNlIGR5bmFtaWNzIHRvIDcgYml0cyAoUTgpICovDQorCWxvZ19lbiA9IChsb2dfZW4gPj4gMik7DQorDQorCS8qIEFkZCAyIGluIFE4ID0gNTEyIHRvIGdldCBsb2cyKEUpIGJldHdlZW4gMDoyNCAqLw0KKwlsb2dfZW4gPSBhZGQobG9nX2VuLCA1MTIpOw0KKw0KKwkvKiBNdWx0aXBseSBieSAyLjYyNSB0byBnZXQgZnVsbCA2IGJpdCByYW5nZS4gMi42MjUgPSAyMTUwNCBpbiBRMTMuIFRoZSByZXN1bHQgaXMgaW4gUTYgKi8NCisJbG9nX2VuID0gbXVsdChsb2dfZW4sIDIxNTA0KTsNCisNCisJLyogUXVhbnRpemUgRW5lcmd5ICovDQorCXN0LT5sb2dfZW5faW5kZXggPSBzaHIobG9nX2VuLCA2KTsNCisNCisJaWYoc3QtPmxvZ19lbl9pbmRleCA+IDYzKQ0KKwl7DQorCQlzdC0+bG9nX2VuX2luZGV4ID0gNjM7DQorCX0NCisJaWYgKHN0LT5sb2dfZW5faW5kZXggPCAwKQ0KKwl7DQorCQlzdC0+bG9nX2VuX2luZGV4ID0gMDsNCisJfQ0KKwkvKiBRdWFudGl6ZSBJU0ZzICovDQorCVFpc2ZfbnMoaXNmLCBpc2YsIGluZGljZSk7DQorDQorDQorCVBhcm1fc2VyaWFsKGluZGljZVswXSwgNiwgcHJtcyk7DQorCVBhcm1fc2VyaWFsKGluZGljZVsxXSwgNiwgcHJtcyk7DQorCVBhcm1fc2VyaWFsKGluZGljZVsyXSwgNiwgcHJtcyk7DQorCVBhcm1fc2VyaWFsKGluZGljZVszXSwgNSwgcHJtcyk7DQorCVBhcm1fc2VyaWFsKGluZGljZVs0XSwgNSwgcHJtcyk7DQorDQorCVBhcm1fc2VyaWFsKChzdC0+bG9nX2VuX2luZGV4KSwgNiwgcHJtcyk7DQorDQorCUNOX2RpdGggPSBkaXRoZXJpbmdfY29udHJvbChzdCk7DQorCVBhcm1fc2VyaWFsKENOX2RpdGgsIDEsIHBybXMpOw0KKw0KKwkvKiBsZXZlbCA9IChmbG9hdCkoIHBvdyggMi4wZiwgKGZsb2F0KXN0LT5sb2dfZW5faW5kZXggLyAyLjYyNSAtIDIuMCApICk7ICAgICovDQorCS8qIGxvZzIoRSkgaW4gUTkgKGxvZzIoRSkgbGllcyBpbiBiZXR3ZWVuIC0yOjIyKSAqLw0KKwlsb2dfZW4gPSBzaGwoc3QtPmxvZ19lbl9pbmRleCwgMTUgLSA2KTsNCisNCisJLyogRGl2aWRlIGJ5IDIuNjI1OyBsb2dfZW4gd2lsbCBiZSBiZXR3ZWVuIDA6MjQgICovDQorCWxvZ19lbiA9IG11bHQobG9nX2VuLCAxMjQ4Myk7DQorCS8qIHRoZSByZXN1bHQgY29ycmVzcG9uZHMgdG8gbG9nMihnYWluKSBpbiBRMTAgKi8NCisNCisJLyogRmluZCBpbnRlZ2VyIHBhcnQgICovDQorCWxvZ19lbl9pbnRfZSA9IChsb2dfZW4gPj4gMTApOw0KKw0KKwkvKiBGaW5kIGZyYWN0aW9uYWwgcGFydCAqLw0KKwlsb2dfZW5faW50X20gPSAoV29yZDE2KSAobG9nX2VuICYgMHgzZmYpOw0KKwlsb2dfZW5faW50X20gPSBzaGwobG9nX2VuX2ludF9tLCA1KTsNCisNCisJLyogU3VidHJhY3QgMiBmcm9tIGxvZ19lbiBpbiBROSwgaS5lIGRpdmlkZSB0aGUgZ2FpbiBieSAyIChlbmVyZ3kgYnkgNCkgKi8NCisJLyogQWRkIDE2IGluIG9yZGVyIHRvIGhhdmUgdGhlIHJlc3VsdCBvZiBwb3cyIGluIFExNiAqLw0KKwlsb2dfZW5faW50X2UgPSBhZGQobG9nX2VuX2ludF9lLCAxNiAtIDEpOw0KKw0KKwlsZXZlbDMyID0gUG93Mihsb2dfZW5faW50X2UsIGxvZ19lbl9pbnRfbSk7IC8qIFExNiAqLw0KKwlleHAwID0gbm9ybV9sKGxldmVsMzIpOw0KKwlsZXZlbDMyID0gKGxldmVsMzIgPDwgZXhwMCk7ICAgICAgICAvKiBsZXZlbCBpbiBRMzEgKi8NCisJZXhwMCA9ICgxNSAtIGV4cDApOw0KKwlsZXZlbCA9IGV4dHJhY3RfaChsZXZlbDMyKTsgICAgICAgICAgICAvKiBsZXZlbCBpbiBRMTUgKi8NCisNCisJLyogZ2VuZXJhdGUgd2hpdGUgbm9pc2UgdmVjdG9yICovDQorCWZvciAoaSA9IDA7IGkgPCBMX0ZSQU1FOyBpKyspDQorCXsNCisJCWV4YzJbaV0gPSAoUmFuZG9tKCYoc3QtPmNuZ19zZWVkKSkgPj4gNCk7DQorCX0NCisNCisJLyogZ2FpbiA9IGxldmVsIC8gc3FydChlbmVyKSAqIHNxcnQoTF9GUkFNRSkgKi8NCisNCisJLyogZW5lcmd5IG9mIGdlbmVyYXRlZCBleGNpdGF0aW9uICovDQorCWVuZXIzMiA9IERvdF9wcm9kdWN0MTIoZXhjMiwgZXhjMiwgTF9GUkFNRSwgJmV4cCk7DQorDQorCUlzcXJ0X24oJmVuZXIzMiwgJmV4cCk7DQorDQorCWdhaW4gPSBleHRyYWN0X2goZW5lcjMyKTsNCisNCisJZ2FpbiA9IG11bHQobGV2ZWwsIGdhaW4pOyAgICAgICAgICAgICAgLyogZ2FpbiBpbiBRMTUgKi8NCisNCisJZXhwID0gYWRkKGV4cDAsIGV4cCk7DQorDQorCS8qIE11bHRpcGx5IGJ5IHNxcnQoTF9GUkFNRSk9MTYsIGkuZS4gc2hpZnQgbGVmdCBieSA0ICovDQorCWV4cCArPSA0Ow0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9GUkFNRTsgaSsrKQ0KKwl7DQorCQl0bXAgPSBtdWx0KGV4YzJbaV0sIGdhaW4pOyAgICAgICAgIC8qIFEwICogUTE1ICovDQorCQlleGMyW2ldID0gc2hsKHRtcCwgZXhwKTsgDQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqIEZ1bmN0aW9uICAgIDogZHR4X2J1ZmZlciBQdXJwb3NlICAgICA6IGhhbmRsZXMgdGhlIERUWCBidWZmZXINCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorV29yZDE2IGR0eF9idWZmZXIoDQorCQlkdHhfZW5jU3RhdGUgKiBzdCwgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdCAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBpc2ZfbmV3W10sICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogaXNmIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDMyIGVuciwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiByZXNpZHVhbCBlbmVyZ3kgKGluIExfRlJBTUUpICAgICovDQorCQlXb3JkMTYgY29kZWNfbW9kZQ0KKwkJKQ0KK3sNCisJV29yZDE2IGxvZ19lbjsNCisNCisJV29yZDE2IGxvZ19lbl9lOw0KKwlXb3JkMTYgbG9nX2VuX207DQorCXN0LT5oaXN0X3B0ciA9IGFkZChzdC0+aGlzdF9wdHIsIDEpOyANCisJaWYoc3QtPmhpc3RfcHRyID09IERUWF9ISVNUX1NJWkUpDQorCXsNCisJCXN0LT5oaXN0X3B0ciA9IDA7DQorCX0NCisJLyogY29weSBsc3AgdmVjdG9yIGludG8gYnVmZmVyICovDQorCUNvcHkoaXNmX25ldywgJnN0LT5pc2ZfaGlzdFtzdC0+aGlzdF9wdHIgKiBNXSwgTSk7DQorDQorCS8qIGxvZ19lbiA9IChmbG9hdClsb2cxMChlbnIqMC4wMDU5MzIyKS8oZmxvYXQpbG9nMTAoMi4wZik7ICAqLw0KKwlMb2cyKGVuciwgJmxvZ19lbl9lLCAmbG9nX2VuX20pOw0KKw0KKwkvKiBjb252ZXJ0IGV4cG9uZW50IGFuZCBtYW50aXNzYSB0byBXb3JkMTYgUTcuIFE3IGlzIHVzZWQgdG8gc2ltcGxpZnkgYXZlcmFnaW5nIGluIGR0eF9lbmMgKi8NCisJbG9nX2VuID0gc2hsKGxvZ19lbl9lLCA3KTsgICAgICAgICAgICAgLyogUTcgKi8NCisJbG9nX2VuID0gYWRkKGxvZ19lbiwgc2hyKGxvZ19lbl9tLCAxNSAtIDcpKTsNCisNCisJLyogRmluZCBlbmVyZ3kgcGVyIHNhbXBsZSBieSBtdWx0aXBseWluZyB3aXRoIDAuMDA1OTMyMiwgaS5lIHN1YnRyYWN0IGxvZzIoMS8wLjAwNTkzMjIpID0gNy4zOTcyMiBUaGUNCisJICogY29uc3RhbnQgMC4wMDU5MzIyIHRha2VzIGludG8gYWNjb3VudCB3aW5kb3dpbmdzIGFuZCBhbmFseXNpcyBsZW5ndGggZnJvbSBhdXRvY29ycmVsYXRpb24NCisJICogY29tcHV0YXRpb25zOyA3LjM5NzIyIGluIFE3ID0gOTQ3ICAqLw0KKwkvKiBTdWJ0cmFjdCAzIGRCID0gMC45OTY1OCBpbiBsb2cyKEUpID0gMTI3IGluIFE3LiAqLw0KKwkvKiBsb2dfZW4gPSBzdWIoIGxvZ19lbiwgOTQ3ICsgZW5fYWRqdXN0W2NvZGVjX21vZGVdICk7ICovDQorDQorCS8qIEZpbmQgZW5lcmd5IHBlciBzYW1wbGUgKGRpdmlkZSBieSBMX0ZSQU1FPTI1NiksIGkuZSBzdWJ0cmFjdCBsb2cyKDI1NikgPSA4LjAgICgxMDI0IGluIFE3KSAqLw0KKwkvKiBTdWJ0cmFjdCAzIGRCID0gMC45OTY1OCBpbiBsb2cyKEUpID0gMTI3IGluIFE3LiAqLw0KKw0KKwlsb2dfZW4gPSBzdWIobG9nX2VuLCBhZGQoMTAyNCwgZW5fYWRqdXN0W2NvZGVjX21vZGVdKSk7DQorDQorCS8qIEluc2VydCBpbnRvIHRoZSBidWZmZXIgKi8NCisJc3QtPmxvZ19lbl9oaXN0W3N0LT5oaXN0X3B0cl0gPSBsb2dfZW47DQorCXJldHVybiAwOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBGdW5jdGlvbiAgICA6IHR4X2R0eF9oYW5kbGVyIFB1cnBvc2UgICAgIDogYWRkcyBleHRyYSBzcGVlY2ggaGFuZ292ZXINCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhbmFseXplIHNwZWVjaCBvbg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkZWNvZGluZyBzaWRlLg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3ZvaWQgdHhfZHR4X2hhbmRsZXIoZHR4X2VuY1N0YXRlICogc3QsICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3QgICAgICAgICAgICovDQorCQlXb3JkMTYgdmFkX2ZsYWcsICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHZhZCBkZWNpc2lvbiAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIHVzZWRNb2RlICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogbW9kZSBjaGFuZ2VkIG9yIG5vdCAgICAqLw0KKwkJKQ0KK3sNCisNCisJLyogdGhpcyBzdGF0ZSBtYWNoaW5lIGlzIGluIHN5bmNoIHdpdGggdGhlIEdTTUVGUiB0eER0eCBtYWNoaW5lICAgICAgKi8NCisJc3QtPmRlY0FuYUVsYXBzZWRDb3VudCA9IGFkZChzdC0+ZGVjQW5hRWxhcHNlZENvdW50LCAxKTsgDQorDQorCWlmICh2YWRfZmxhZyAhPSAwKQ0KKwl7DQorCQlzdC0+ZHR4SGFuZ292ZXJDb3VudCA9IERUWF9IQU5HX0NPTlNUOw0KKwl9IGVsc2UNCisJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm9uLXNwZWVjaCAqLw0KKwkJaWYgKHN0LT5kdHhIYW5nb3ZlckNvdW50ID09IDApDQorCQl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dCBvZiBkZWNvZGVyIGFuYWx5c2lzIGhhbmdvdmVyICAqLw0KKwkJCXN0LT5kZWNBbmFFbGFwc2VkQ291bnQgPSAwOyAgICANCisJCQkqdXNlZE1vZGUgPSBNUkRUWDsgICAgICAgICAgICANCisJCX0gZWxzZQ0KKwkJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbiBwb3NzaWJsZSBhbmFseXNpcyBoYW5nb3ZlciAqLw0KKwkJCXN0LT5kdHhIYW5nb3ZlckNvdW50ID0gc3ViKHN0LT5kdHhIYW5nb3ZlckNvdW50LCAxKTsNCisNCisJCQkvKiBkZWNBbmFFbGFwc2VkQ291bnQgKyBkdHhIYW5nb3ZlckNvdW50IDwgRFRYX0VMQVBTRURfRlJBTUVTX1RIUkVTSCAqLw0KKwkJCWlmIChzdWIoYWRkKHN0LT5kZWNBbmFFbGFwc2VkQ291bnQsIHN0LT5kdHhIYW5nb3ZlckNvdW50KSwNCisJCQkJCQlEVFhfRUxBUFNFRF9GUkFNRVNfVEhSRVNIKSA8IDApDQorCQkJew0KKwkJCQkqdXNlZE1vZGUgPSBNUkRUWDsNCisJCQkJLyogaWYgc2hvcnQgdGltZSBzaW5jZSBkZWNvZGVyIHVwZGF0ZSwgZG8gbm90IGFkZCBleHRyYSBITyAqLw0KKwkJCX0NCisJCQkvKiBlbHNlIG92ZXJyaWRlIFZBRCBhbmQgc3RheSBpbiBzcGVlY2ggbW9kZSAqdXNlZE1vZGUgYW5kIGFkZCBleHRyYSBoYW5nb3ZlciAqLw0KKwkJfQ0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorDQorDQorc3RhdGljIHZvaWQgYXZlcl9pc2ZfaGlzdG9yeSgNCisJCVdvcmQxNiBpc2Zfb2xkW10sDQorCQlXb3JkMTYgaW5kaWNlc1tdLA0KKwkJV29yZDMyIGlzZl9hdmVyW10NCisJCSkNCit7DQorCVdvcmQzMiBpLCBqLCBrOw0KKwlXb3JkMTYgaXNmX3RtcFsyICogTV07DQorCVdvcmQzMiBMX3RtcDsNCisNCisJLyogTWVtb3JpemUgaW4gaXNmX3RtcFtdW10gdGhlIElTRiB2ZWN0b3JzIHRvIGJlIHJlcGxhY2VkIGJ5ICovDQorCS8qIHRoZSBtZWRpYW4gSVNGIHZlY3RvciBwcmlvciB0byB0aGUgYXZlcmFnaW5nICAgICAgICAgICAgICAgKi8NCisJZm9yIChrID0gMDsgayA8IDI7IGsrKykNCisJew0KKwkJaWYgKChpbmRpY2VzW2tdICsgMSkgIT0gMCkNCisJCXsNCisJCQlmb3IgKGkgPSAwOyBpIDwgTTsgaSsrKQ0KKwkJCXsNCisJCQkJaXNmX3RtcFtrICogTSArIGldID0gaXNmX29sZFtpbmRpY2VzW2tdICogTSArIGldOyAgICAgIA0KKwkJCQlpc2Zfb2xkW2luZGljZXNba10gKiBNICsgaV0gPSBpc2Zfb2xkW2luZGljZXNbMl0gKiBNICsgaV07ICAgIA0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkvKiBQZXJmb3JtIHRoZSBJU0YgYXZlcmFnaW5nICovDQorCWZvciAoaiA9IDA7IGogPCBNOyBqKyspDQorCXsNCisJCUxfdG1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgDQorDQorCQlmb3IgKGkgPSAwOyBpIDwgRFRYX0hJU1RfU0laRTsgaSsrKQ0KKwkJew0KKwkJCUxfdG1wID0gTF9hZGQoTF90bXAsIExfZGVwb3NpdF9sKGlzZl9vbGRbaSAqIE0gKyBqXSkpOw0KKwkJfQ0KKwkJaXNmX2F2ZXJbal0gPSBMX3RtcDsgICAgICAgICAgICAgIA0KKwl9DQorDQorCS8qIFJldHJpZXZlIGZyb20gaXNmX3RtcFtdW10gdGhlIElTRiB2ZWN0b3JzIHNhdmVkIHByaW9yIHRvIGF2ZXJhZ2luZyAqLw0KKwlmb3IgKGsgPSAwOyBrIDwgMjsgaysrKQ0KKwl7DQorCQlpZiAoKGluZGljZXNba10gKyAxKSAhPSAwKQ0KKwkJew0KKwkJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQkJew0KKwkJCQlpc2Zfb2xkW2luZGljZXNba10gKiBNICsgaV0gPSBpc2ZfdG1wW2sgKiBNICsgaV07DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorc3RhdGljIHZvaWQgZmluZF9mcmFtZV9pbmRpY2VzKA0KKwkJV29yZDE2IGlzZl9vbGRfdHhbXSwNCisJCVdvcmQxNiBpbmRpY2VzW10sDQorCQlkdHhfZW5jU3RhdGUgKiBzdA0KKwkJKQ0KK3sNCisJV29yZDMyIExfdG1wLCBzdW1taW4sIHN1bW1heCwgc3VtbWF4Mm5kOw0KKwlXb3JkMTYgaSwgaiwgdG1wOw0KKwlXb3JkMTYgcHRyOw0KKw0KKwkvKiBSZW1vdmUgdGhlIGVmZmVjdCBvZiB0aGUgb2xkZXN0IGZyYW1lIGZyb20gdGhlIGNvbHVtbiAqLw0KKwkvKiBzdW0gc3VtRFswLi5EVFhfSElTVF9TSVpFLTFdLiBzdW1EW0RUWF9ISVNUX1NJWkVdIGlzICAgICovDQorCS8qIG5vdCB1cGRhdGVkIHNpbmNlIGl0IHdpbGwgYmUgcmVtb3ZlZCBsYXRlci4gICAgICAgICAgICovDQorDQorCXRtcCA9IERUWF9ISVNUX1NJWkVfTUlOX09ORTsgICAgICAgICAgIA0KKwlqID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IERUWF9ISVNUX1NJWkVfTUlOX09ORTsgaSsrKQ0KKwl7DQorCQlqID0gYWRkKGosIHRtcCk7DQorCQlzdC0+c3VtRFtpXSA9IExfc3ViKHN0LT5zdW1EW2ldLCBzdC0+RFtqXSk7ICAgICANCisJCXRtcCA9IHN1Yih0bXAsIDEpOw0KKwl9DQorDQorCS8qIFNoaWZ0IHRoZSBjb2x1bW4gc3VtIHN1bUQuIFRoZSBlbGVtZW50IHN1bURbRFRYX0hJU1RfU0laRS0xXSAgICAqLw0KKwkvKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBvbGRlc3QgZnJhbWUgaXMgcmVtb3ZlZC4gVGhlIHN1bSBvZiAgICAgKi8NCisJLyogdGhlIGRpc3RhbmNlcyBiZXR3ZWVuIHRoZSBsYXRlc3QgaXNmIGFuZCBvdGhlciBpc2ZzLCAqLw0KKwkvKiBpLmUuIHRoZSBlbGVtZW50IHN1bURbMF0sIHdpbGwgYmUgY29tcHV0ZWQgZHVyaW5nIHRoaXMgY2FsbC4gKi8NCisJLyogSGVuY2UgdGhpcyBlbGVtZW50IGlzIGluaXRpYWxpemVkIHRvIHplcm8uICAgICAgICAgICAgICAgICAgICovDQorDQorCWZvciAoaSA9IERUWF9ISVNUX1NJWkVfTUlOX09ORTsgaSA+IDA7IGktLSkNCisJew0KKwkJc3QtPnN1bURbaV0gPSBzdC0+c3VtRFtpIC0gMV07ICAgICANCisJfQ0KKwlzdC0+c3VtRFswXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICANCisNCisJLyogUmVtb3ZlIHRoZSBvbGRlc3QgZnJhbWUgZnJvbSB0aGUgZGlzdGFuY2UgbWF0cml4LiAgICAgICAgICAgKi8NCisJLyogTm90ZSB0aGF0IHRoZSBkaXN0YW5jZSBtYXRyaXggaXMgcmVwbGFjZWQgYnkgYSBvbmUtICAgICAgICAgKi8NCisJLyogZGltZW5zaW9uYWwgYXJyYXkgdG8gc2F2ZSBzdGF0aWMgbWVtb3J5LiAgICAgICAgICAgICAgICAgICAgKi8NCisNCisJdG1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDI3OyBpID49IDEyOyBpID0gKFdvcmQxNikgKGkgLSB0bXApKQ0KKwl7DQorCQl0bXAgPSBhZGQodG1wLCAxKTsNCisJCWZvciAoaiA9IHRtcDsgaiA+IDA7IGotLSkNCisJCXsNCisJCQlzdC0+RFtpIC0gaiArIDFdID0gc3QtPkRbaSAtIGogLSB0bXBdOyAgIA0KKwkJfQ0KKwl9DQorDQorCS8qIENvbXB1dGUgdGhlIGZpcnN0IGNvbHVtbiBvZiB0aGUgZGlzdGFuY2UgbWF0cml4IEQgICAgICAgICAgICAqLw0KKwkvKiAoc3F1YXJlZCBFdWNsaWRlYW4gZGlzdGFuY2VzIGZyb20gaXNmMVtdIHRvIGlzZl9vbGRfdHhbXVtdKS4gKi8NCisNCisJcHRyID0gc3QtPmhpc3RfcHRyOyAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDE7IGkgPCBEVFhfSElTVF9TSVpFOyBpKyspDQorCXsNCisJCS8qIENvbXB1dGUgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGxhdGVzdCBpc2YgYW5kIHRoZSBvdGhlciBpc2ZzLiAqLw0KKwkJcHRyID0gc3ViKHB0ciwgMSk7DQorCQlpZiAocHRyIDwgMCkNCisJCXsNCisJCQlwdHIgPSBEVFhfSElTVF9TSVpFX01JTl9PTkU7ICAgDQorCQl9DQorCQlMX3RtcCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJZm9yIChqID0gMDsgaiA8IE07IGorKykNCisJCXsNCisJCQl0bXAgPSBzdWIoaXNmX29sZF90eFtzdC0+aGlzdF9wdHIgKiBNICsgal0sIGlzZl9vbGRfdHhbcHRyICogTSArIGpdKTsNCisJCQlMX3RtcCA9IExfbWFjKExfdG1wLCB0bXAsIHRtcCk7DQorCQl9DQorCQlzdC0+RFtpIC0gMV0gPSBMX3RtcDsgICAgICAgICAgIA0KKw0KKwkJLyogVXBkYXRlIGFsc28gdGhlIGNvbHVtbiBzdW1zLiAqLw0KKwkJc3QtPnN1bURbMF0gPSBMX2FkZChzdC0+c3VtRFswXSwgc3QtPkRbaSAtIDFdKTsgDQorCQlzdC0+c3VtRFtpXSA9IExfYWRkKHN0LT5zdW1EW2ldLCBzdC0+RFtpIC0gMV0pOyANCisJfQ0KKw0KKwkvKiBGaW5kIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGRpc3RhbmNlcyAqLw0KKwlzdW1tYXggPSBzdC0+c3VtRFswXTsgICAgICAgICAgICAgICAgICANCisJc3VtbWluID0gc3QtPnN1bURbMF07ICAgICAgICAgICAgICAgICAgDQorCWluZGljZXNbMF0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlpbmRpY2VzWzJdID0gMDsgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMTsgaSA8IERUWF9ISVNUX1NJWkU7IGkrKykNCisJew0KKwkJaWYgKExfc3ViKHN0LT5zdW1EW2ldLCBzdW1tYXgpID4gMCkNCisJCXsNCisJCQlpbmRpY2VzWzBdID0gaTsgICAgICAgICAgICAgICAgDQorCQkJc3VtbWF4ID0gc3QtPnN1bURbaV07ICAgICAgICAgIA0KKwkJfQ0KKwkJaWYgKExfc3ViKHN0LT5zdW1EW2ldLCBzdW1taW4pIDwgMCkNCisJCXsNCisJCQlpbmRpY2VzWzJdID0gaTsgICAgICAgICAgICAgICAgDQorCQkJc3VtbWluID0gc3QtPnN1bURbaV07ICAgICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCS8qIEZpbmQgdGhlIHNlY29uZCBsYXJnZXN0IGRpc3RhbmNlICovDQorCXN1bW1heDJuZCA9IC0yMTQ3NDgzNjQ3TDsgICAgICAgICAgICAgIA0KKwlpbmRpY2VzWzFdID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IERUWF9ISVNUX1NJWkU7IGkrKykNCisJew0KKwkJaWYgKChMX3N1YihzdC0+c3VtRFtpXSwgc3VtbWF4Mm5kKSA+IDApICYmIChzdWIoaSwgaW5kaWNlc1swXSkgIT0gMCkpDQorCQl7DQorCQkJaW5kaWNlc1sxXSA9IGk7ICAgICAgICAgICAgICAgIA0KKwkJCXN1bW1heDJuZCA9IHN0LT5zdW1EW2ldOyAgICAgICANCisJCX0NCisJfQ0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQ0KKwl7DQorCQlpbmRpY2VzW2ldID0gc3ViKHN0LT5oaXN0X3B0ciwgaW5kaWNlc1tpXSk7ICAgICANCisJCWlmIChpbmRpY2VzW2ldIDwgMCkNCisJCXsNCisJCQlpbmRpY2VzW2ldID0gYWRkKGluZGljZXNbaV0sIERUWF9ISVNUX1NJWkUpOyAgICAgICANCisJCX0NCisJfQ0KKw0KKwkvKiBJZiBtYXhpbXVtIGRpc3RhbmNlL01FRF9USFJFU0ggaXMgc21hbGxlciB0aGFuIG1pbmltdW0gZGlzdGFuY2UgKi8NCisJLyogdGhlbiB0aGUgbWVkaWFuIElTRiB2ZWN0b3IgcmVwbGFjZW1lbnQgaXMgbm90IHBlcmZvcm1lZCAgICAgICAgICovDQorCXRtcCA9IG5vcm1fbChzdW1tYXgpOw0KKwlzdW1tYXggPSAoc3VtbWF4IDw8IHRtcCk7DQorCXN1bW1pbiA9IChzdW1taW4gPDwgdG1wKTsNCisJTF90bXAgPSBMX211bHQodm9yb3VuZChzdW1tYXgpLCBJTlZfTUVEX1RIUkVTSCk7DQorCWlmKExfdG1wIDw9IHN1bW1pbikNCisJew0KKwkJaW5kaWNlc1swXSA9IC0xOyANCisJfQ0KKwkvKiBJZiBzZWNvbmQgbGFyZ2VzdCBkaXN0YW5jZS9NRURfVEhSRVNIIGlzIHNtYWxsZXIgdGhhbiAgICAgKi8NCisJLyogbWluaW11bSBkaXN0YW5jZSB0aGVuIHRoZSBtZWRpYW4gSVNGIHZlY3RvciByZXBsYWNlbWVudCBpcyAgICAqLw0KKwkvKiBub3QgcGVyZm9ybWVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCXN1bW1heDJuZCA9IExfc2hsKHN1bW1heDJuZCwgdG1wKTsNCisJTF90bXAgPSBMX211bHQodm9yb3VuZChzdW1tYXgybmQpLCBJTlZfTUVEX1RIUkVTSCk7DQorCWlmKExfdG1wIDw9IHN1bW1pbikNCisJew0KKwkJaW5kaWNlc1sxXSA9IC0xOyAgICAgICAgICAgICAgICAgDQorCX0NCisJcmV0dXJuOw0KK30NCisNCitzdGF0aWMgV29yZDE2IGRpdGhlcmluZ19jb250cm9sKA0KKwkJZHR4X2VuY1N0YXRlICogc3QNCisJCSkNCit7DQorCVdvcmQxNiB0bXAsIG1lYW4sIENOX2RpdGgsIGdhaW5fZGlmZjsNCisJV29yZDMyIGksIElTRl9kaWZmOw0KKw0KKwkvKiBkZXRlcm1pbmUgaG93IHN0YXRpb25hcnkgdGhlIHNwZWN0cnVtIG9mIGJhY2tncm91bmQgbm9pc2UgaXMgKi8NCisJSVNGX2RpZmYgPSAwOw0KKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQ0KKwl7DQorCQlJU0ZfZGlmZiA9IExfYWRkKElTRl9kaWZmLCBzdC0+c3VtRFtpXSk7DQorCX0NCisJaWYgKChJU0ZfZGlmZiA+PiAyNikgPiAwKQ0KKwl7DQorCQlDTl9kaXRoID0gMTsNCisJfSBlbHNlDQorCXsNCisJCUNOX2RpdGggPSAwOw0KKwl9DQorDQorCS8qIGRldGVybWluZSBob3cgc3RhdGlvbmFyeSB0aGUgZW5lcmd5IG9mIGJhY2tncm91bmQgbm9pc2UgaXMgKi8NCisJbWVhbiA9IDA7DQorCWZvciAoaSA9IDA7IGkgPCBEVFhfSElTVF9TSVpFOyBpKyspDQorCXsNCisJCW1lYW4gPSBhZGQobWVhbiwgc3QtPmxvZ19lbl9oaXN0W2ldKTsNCisJfQ0KKwltZWFuID0gKG1lYW4gPj4gMyk7DQorCWdhaW5fZGlmZiA9IDA7DQorCWZvciAoaSA9IDA7IGkgPCBEVFhfSElTVF9TSVpFOyBpKyspDQorCXsNCisJCXRtcCA9IGFic19zKHN1YihzdC0+bG9nX2VuX2hpc3RbaV0sIG1lYW4pKTsNCisJCWdhaW5fZGlmZiA9IGFkZChnYWluX2RpZmYsIHRtcCk7DQorCX0NCisJaWYgKGdhaW5fZGlmZiA+IEdBSU5fVEhSKQ0KKwl7DQorCQlDTl9kaXRoID0gMTsNCisJfQ0KKwlyZXR1cm4gQ05fZGl0aDsNCit9DQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9nX3BpdGNoLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2dfcGl0Y2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzAxMzhlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9nX3BpdGNoLmMKQEAgLTAsMCArMSw3OSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogZ19waXRjaC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCSAgIERlc2NyaXB0aW9uOkNvbXB1dGUgdGhlIGdhaW4gb2YgcGl0Y2guIFJlc3VsdCBpbiBRMTIgICAgICAgICoNCisqCSAgICAgICAgICAgICAgIGlmKGdhaW4gPCAwKSBnYWluID0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCQkJCSAgIGlmKGdhaW4gPiAxLjIpIGdhaW4gPSAxLjIgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKw0KK1dvcmQxNiBHX3BpdGNoKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE0IDogR2FpbiBvZiBwaXRjaCBsYWcgc2F0dXJhdGVkIHRvIDEuMiAgICovDQorCQlXb3JkMTYgeG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBQaXRjaCB0YXJnZXQuICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5MVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGZpbHRlcmVkIGFkYXB0aXZlIGNvZGVib29rLiAgICAgICAgICAqLw0KKwkJV29yZDE2IGdfY29lZmZbXSwgICAgICAgICAgICAgICAgICAgICAvKiA6IENvcnJlbGF0aW9ucyBuZWVkIGZvciBnYWluIHF1YW50aXphdGlvbi4gICAgICovDQorCQlXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIDogTGVuZ3RoIG9mIHN1YmZyYW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICAgKQ0KK3sNCisJV29yZDMyIGk7DQorCVdvcmQxNiB4eSwgeXksIGV4cF94eSwgZXhwX3l5LCBnYWluOw0KKwkvKiBDb21wdXRlIHNjYWxhciBwcm9kdWN0IDx5MVtdLHkxW10+ICovDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkvKiBDb21wdXRlIHNjYWxhciBwcm9kdWN0IDx4bltdLHkxW10+ICovDQorCXh5ID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTJfYXNtKHhuLCB5MSwgTF9zdWJmciwgJmV4cF94eSkpOw0KKwl5eSA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyX2FzbSh5MSwgeTEsIExfc3ViZnIsICZleHBfeXkpKTsNCisNCisjZWxzZQ0KKwkvKiBDb21wdXRlIHNjYWxhciBwcm9kdWN0IDx4bltdLHkxW10+ICovDQorCXh5ID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTIoeG4sIHkxLCBMX3N1YmZyLCAmZXhwX3h5KSk7DQorCXl5ID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTIoeTEsIHkxLCBMX3N1YmZyLCAmZXhwX3l5KSk7DQorDQorI2VuZGlmDQorDQorCWdfY29lZmZbMF0gPSB5eTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwlnX2NvZWZmWzFdID0gZXhwX3l5OyAgICAgICAgICAgICAgICAgICANCisJZ19jb2VmZlsyXSA9IHh5OyAgICAgICAgICAgICAgICAgICAgICAgDQorCWdfY29lZmZbM10gPSBleHBfeHk7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwkvKiBJZiAoeHkgPCAwKSBnYWluID0gMCAqLw0KKwlpZiAoeHkgPCAwKQ0KKwkJcmV0dXJuICgoV29yZDE2KSAwKTsNCisNCisJLyogY29tcHV0ZSBnYWluID0geHkveXkgKi8NCisNCisJeHkgPj49IDE7ICAgICAgICAgICAgICAgICAgICAgICAvKiBCZSBzdXJlIHh5IDwgeXkgKi8NCisJZ2FpbiA9IGRpdl9zKHh5LCB5eSk7DQorDQorCWkgPSBleHBfeHk7DQorCWkgLT0gZXhwX3l5Ow0KKw0KKwlnYWluID0gc2hsKGdhaW4sIGkpOyAgICAgICAgICAgICAgICAgICANCisNCisJLyogaWYgKGdhaW4gPiAxLjIpIGdhaW4gPSAxLjIgIGluIFExNCAqLw0KKwlpZihnYWluID4gMTk2NjEpDQorCXsNCisJCWdhaW4gPSAxOTY2MTsgICAgICAgICAgICAgICAgICAgICAgDQorCX0NCisJcmV0dXJuIChnYWluKTsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ncGNsaXAuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvZ3BjbGlwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzZjJmNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvZ3BjbGlwLmMKQEAgLTAsMCArMSwxMTAgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IGdwY2xpcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOlRvIGF2b2lkIHVuc3RhYmxlIHN5bnRoZXNpcyBvbiBmcmFtZSBlcmFzdXJlLCB0aGUgZ2FpbiAqDQorKiAgICAgIG5lZWQgdG8gYmUgbGltaXRlZChnYWluIHBpdGNoIDwgMS4wKSB3aGVuIHRoZSBmb2xsb3dpbmcgICAgICAgICAgICAqDQorKiAgICAgIGNhc2Ugb2NjdXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIGEgcmVzb25hbmNlIG9uIExQQyBmaWx0ZXIobHBfZGlzcCA8IDYwSHopICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIGEgZ29vZCBwaXRjaCBwcmVkaWN0aW9uIChscF9ncCA+IDAuOTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorDQorI2RlZmluZSBESVNUX0lTRl9NQVggICAgMzA3ICAgICAgICAgICAgICAgIC8qIDEyMCBIeiAoNjQwMEh6PTE2Mzg0KSAqLw0KKyNkZWZpbmUgRElTVF9JU0ZfVEhSRVMgIDE1NCAgICAgICAgICAgICAgICAvKiA2MCAgICAgKDY0MDBIej0xNjM4NCkgKi8NCisjZGVmaW5lIEdBSU5fUElUX1RIUkVTICAxNDc0NiAgICAgICAgICAgICAgLyogMC45IGluIFExNCAqLw0KKyNkZWZpbmUgR0FJTl9QSVRfTUlOICAgIDk4MzAgICAgICAgICAgICAgICAvKiAwLjYgaW4gUTE0ICovDQorI2RlZmluZSBNICAgICAgICAgICAgICAgMTYNCisNCisNCit2b2lkIEluaXRfZ3BfY2xpcCgNCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIDogbWVtb3J5IG9mIGdhaW4gb2YgcGl0Y2ggY2xpcHBpbmcgYWxnb3JpdGhtICovDQorCQkpDQorew0KKwltZW1bMF0gPSBESVNUX0lTRl9NQVg7ICAgICAgICAgICAgICAgICANCisJbWVtWzFdID0gR0FJTl9QSVRfTUlOOyAgICAgICAgICAgICAgICAgDQorfQ0KKw0KKw0KK1dvcmQxNiBHcF9jbGlwKA0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSA6IG1lbW9yeSBvZiBnYWluIG9mIHBpdGNoIGNsaXBwaW5nIGFsZ29yaXRobSAqLw0KKwkgICAgICApDQorew0KKwlXb3JkMTYgY2xpcCA9IDA7DQorCWlmICgobWVtWzBdIDwgRElTVF9JU0ZfVEhSRVMpICYmIChtZW1bMV0gPiBHQUlOX1BJVF9USFJFUykpDQorCQljbGlwID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlyZXR1cm4gKGNsaXApOw0KK30NCisNCisNCit2b2lkIEdwX2NsaXBfdGVzdF9pc2YoDQorCQlXb3JkMTYgaXNmW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogaXNmIHZhbHVlcyAoaW4gZnJlcXVlbmN5IGRvbWFpbikgICAgICAgICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIDogbWVtb3J5IG9mIGdhaW4gb2YgcGl0Y2ggY2xpcHBpbmcgYWxnb3JpdGhtICovDQorCQkpDQorew0KKwlXb3JkMTYgZGlzdCwgZGlzdF9taW47DQorCVdvcmQzMiBpOw0KKw0KKwlkaXN0X21pbiA9IHZvX3N1Yihpc2ZbMV0sIGlzZlswXSk7DQorDQorCWZvciAoaSA9IDI7IGkgPCBNIC0gMTsgaSsrKQ0KKwl7DQorCQlkaXN0ID0gdm9fc3ViKGlzZltpXSwgaXNmW2kgLSAxXSk7DQorCQlpZihkaXN0IDwgZGlzdF9taW4pDQorCQl7DQorCQkJZGlzdF9taW4gPSBkaXN0OyAgICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCWRpc3QgPSBleHRyYWN0X2goTF9tYWModm9fTF9tdWx0KDI2MjE0LCBtZW1bMF0pLCA2NTU0LCBkaXN0X21pbikpOw0KKw0KKwlpZiAoZGlzdCA+IERJU1RfSVNGX01BWCkNCisJew0KKwkJZGlzdCA9IERJU1RfSVNGX01BWDsgICAgICAgICAgICAgICANCisJfQ0KKwltZW1bMF0gPSBkaXN0OyAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KK3ZvaWQgR3BfY2xpcF90ZXN0X2dhaW5fcGl0KA0KKwkJV29yZDE2IGdhaW5fcGl0LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE0IDogZ2FpbiBvZiBxdWFudGl6ZWQgcGl0Y2ggICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgb2YgZ2FpbiBvZiBwaXRjaCBjbGlwcGluZyBhbGdvcml0aG0gKi8NCisJCSkNCit7DQorCVdvcmQxNiBnYWluOw0KKwlXb3JkMzIgTF90bXA7DQorCUxfdG1wID0gKDI5NDkxICogbWVtWzFdKTw8MTsNCisJTF90bXAgKz0gKDMyNzcgKiBnYWluX3BpdCk8PDE7DQorDQorCWdhaW4gPSBleHRyYWN0X2goTF90bXApOw0KKw0KKwlpZihnYWluIDwgR0FJTl9QSVRfTUlOKQ0KKwl7DQorCQlnYWluID0gR0FJTl9QSVRfTUlOOyAgICAgICAgICAgICAgDQorCX0NCisJbWVtWzFdID0gZ2FpbjsgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ob21pbmcuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaG9taW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE1NjMzZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaG9taW5nLmMKQEAgLTAsMCArMSw0NiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IGhvbWluZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOlBlcmZvcm1zIHRoZSBob21pbmcgcm91dGluZXMgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJiaXRzLmgiDQorI2luY2x1ZGUgImhvbWluZy50YWIiDQorDQorV29yZDE2IGVuY29kZXJfaG9taW5nX2ZyYW1lX3Rlc3QoV29yZDE2IGlucHV0X2ZyYW1lW10pDQorew0KKwlXb3JkMzIgaTsNCisJV29yZDE2IGogPSAwOw0KKw0KKwkvKiBjaGVjayAzMjAgaW5wdXQgc2FtcGxlcyBmb3IgbWF0Y2hpbmcgRUhGX01BU0s6IGRlZmluZWQgaW4gZV9ob21pbmcuaCAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9GUkFNRTE2azsgaSsrKQ0KKwl7DQorCQlqID0gKFdvcmQxNikgKGlucHV0X2ZyYW1lW2ldIF4gRUhGX01BU0spOw0KKw0KKwkJaWYgKGopDQorCQkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIChXb3JkMTYpICghaik7DQorfQ0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHA0MDAuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHA0MDAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjNhNTNhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ocDQwMC5jCkBAIC0wLDAgKzEsMTA2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBocDQwMC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogMm5kIG9yZGVyIGhpZ2ggcGFzcyBmaWx0ZXIgd2l0aCBjdXQgb2ZmIGZyZXF1ZW5jeSBhdCA0MDAgSHouICAgICAgICAgICoNCisqIERlc2lnbmVkIHdpdGggY2hlYnkyIGZ1bmN0aW9uIGluIE1BVExBQi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBPcHRpbWl6ZWQgZm9yIGZpeGVkLXBvaW50IHRvIGdldCB0aGUgZm9sbG93aW5nIGZyZXF1ZW5jeSByZXNwb25zZTogICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICBmcmVxdWVuY3k6ICAgICAwSHogICAxMDBIeiAgMjAwSHogIDMwMEh6ICA0MDBIeiAgNjMwSHogIDEuNWtIeiAgM2tIeiAqDQorKiAgZEIgbG9zczogICAgIC1pbmZkQiAgLTMwZEIgIC0yMGRCICAtMTBkQiAgLTNkQiAgICs2ZEIgICAgKzFkQiAgICAwZEIgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIEFsZ29yaXRobTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIHlbaV0gPSBiWzBdKnhbaV0gKyBiWzFdKnhbaS0xXSArIGJbMl0qeFtpLTJdICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICsgYVsxXSp5W2ktMV0gKyBhWzJdKnlbaS0yXTsgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIFdvcmQxNiBiWzNdID0gezM2NjAsIC03MzIwLCAgMzY2MH07ICAgICAgIGluIFExMiAgICAgICAgICAgICAgICAgICAgICoNCisqICBXb3JkMTYgYVszXSA9IHs0MDk2LCAgNzMyMCwgLTM1NDB9OyAgICAgICBpbiBRMTIgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIGZsb2F0IC0tPiAgIGJbM10gPSB7MC44OTM1NTQ2ODcsIC0xLjc4NzEwOTM3NSwgIDAuODkzNTU0Njg3fTsgICAgICAgICoNCisqICAgICAgICAgICAgICBhWzNdID0gezEuMDAwMDAwMDAwLCAgMS43ODcxMDkzNzUsIC0wLjg2NDI1NzgxMn07ICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKw0KKy8qIGZpbHRlciBjb2VmZmljaWVudHMgICovDQorc3RhdGljIFdvcmQxNiBiWzNdID0gezkxNSwgLTE4MzAsIDkxNX07ICAgICAgICAgLyogUTEyICgvNCkgKi8NCitzdGF0aWMgV29yZDE2IGFbM10gPSB7MTYzODQsIDI5MjgwLCAtMTQxNjB9OyAgICAvKiBRMTIgKHg0KSAqLw0KKy8qIEluaXRpYWxpemF0aW9uIG9mIHN0YXRpYyB2YWx1ZXMgKi8NCisNCit2b2lkIEluaXRfSFA0MDBfMTJrOChXb3JkMTYgbWVtW10pDQorew0KKwlTZXRfemVybyhtZW0sIDYpOw0KK30NCisNCisNCit2b2lkIEhQNDAwXzEyazgoDQorCQlXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IHNpZ25hbCAvIG91dHB1dCBpcyBkaXZpZGVkIGJ5IDE2ICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmdodCBvZiBzaWduYWwgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZmlsdGVyIG1lbW9yeSBbNl0gICAqLw0KKwkgICAgICAgKQ0KK3sNCisJV29yZDE2ICB4MjsNCisJV29yZDE2IHkyX2hpLCB5Ml9sbywgeTFfaGksIHkxX2xvLCB4MCwgeDE7DQorCVdvcmQzMiBMX3RtcDsNCisJV29yZDMyIG51bTsNCisJeTJfaGkgPSAqbWVtKys7DQorCXkyX2xvID0gKm1lbSsrOw0KKwl5MV9oaSA9ICptZW0rKzsNCisJeTFfbG8gPSAqbWVtKys7DQorCXgwID0gKm1lbSsrOyAgIA0KKwl4MSA9ICptZW07ICAgDQorCW51bSA9IChXb3JkMzIpbGc7DQorCWRvDQorCXsNCisJCXgyID0geDE7DQorCQl4MSA9IHgwOw0KKwkJeDAgPSAqc2lnbmFsOw0KKwkJLyogeVtpXSA9IGJbMF0qeFtpXSArIGJbMV0qeFtpLTFdICsgYjE0MFsyXSp4W2ktMl0gICovDQorCQkvKiArIGFbMV0qeVtpLTFdICsgYVsyXSAqIHlbaS0yXTsgICovDQorCQlMX3RtcCA9IDgxOTJMOyAgICAgICAgICAgICAgICAgICAgLyogcm91bmRpbmcgdG8gbWF4aW1pc2UgcHJlY2lzaW9uICovDQorCQlMX3RtcCArPSB5MV9sbyAqIGFbMV07DQorCQlMX3RtcCArPSB5Ml9sbyAqIGFbMl07DQorCQlMX3RtcCA9IExfdG1wID4+IDE0Ow0KKwkJTF90bXAgKz0gKHkxX2hpICogYVsxXSArIHkyX2hpICogYVsyXSArICh4MCArIHgyKSogYlswXSArIHgxICogYlsxXSkgPDwgMTsNCisJCUxfdG1wIDw8PSAxOyAgICAgICAgICAgLyogY29lZmYgUTEyIC0tPiBRMTMgKi8NCisJCXkyX2hpID0geTFfaGk7DQorCQl5Ml9sbyA9IHkxX2xvOw0KKwkJeTFfaGkgPSAoV29yZDE2KShMX3RtcD4+MTYpOw0KKwkJeTFfbG8gPSAoV29yZDE2KSgoTF90bXAgJiAweGZmZmYpPj4xKTsNCisNCisJCS8qIHNpZ25hbCBpcyBkaXZpZGVkIGJ5IDE2IHRvIGF2b2lkIG92ZXJmbG93IGluIGVuZXJneSBjb21wdXRhdGlvbiAqLw0KKwkJKnNpZ25hbCsrID0gKExfdG1wICsgMHg4MDAwKSA+PiAxNjsNCisJfXdoaWxlKC0tbnVtICE9MCk7DQorDQorCSptZW0tLSA9IHgxOw0KKwkqbWVtLS0gPSB4MDsNCisJKm1lbS0tID0geTFfbG87DQorCSptZW0tLSA9IHkxX2hpOw0KKwkqbWVtLS0gPSB5Ml9sbzsNCisJKm1lbSAgID0geTJfaGk7ICANCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2hwNTAuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHA1MC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZTNkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2hwNTAuYwpAQCAtMCwwICsxLDEwNiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogaHA1MC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoJICAgRGVzY3JpcHRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIDJuZCBvcmRlciBoaWdoIHBhc3MgZmlsdGVyIHdpdGggY3V0IG9mZiBmcmVxdWVuY3kgYXQgMzEgSHouICAgICAgICAgICAqDQorKiBEZXNpZ25lZCB3aXRoIGNoZWJ5MiBmdW5jdGlvbiBpbiBNQVRMQUIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogT3B0aW1pemVkIGZvciBmaXhlZC1wb2ludCB0byBnZXQgdGhlIGZvbGxvd2luZyBmcmVxdWVuY3kgcmVzcG9uc2U6ICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgZnJlcXVlbmN5OiAgICAgMEh6ICAgIDE0SHogIDI0SHogICAzMUh6ICAgMzdIeiAgIDQxSHogICA0N0h6ICAgICAgICAgKg0KKyogIGRCIGxvc3M6ICAgICAtaW5mZEIgIC0xNWRCICAtNmRCICAgLTNkQiAgLTEuNWRCICAtMWRCICAtMC41ZEIgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBBbGdvcml0aG06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICB5W2ldID0gYlswXSp4W2ldICsgYlsxXSp4W2ktMV0gKyBiWzJdKnhbaS0yXSAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICArIGFbMV0qeVtpLTFdICsgYVsyXSp5W2ktMl07ICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICBXb3JkMTYgYlszXSA9IHs0MDUzLCAtODEwNiwgNDA1M307ICAgICAgIGluIFExMiAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgV29yZDE2IGFbM10gPSB7ODE5MiwgMTYyMTEsIC04MDIxfTsgICAgICAgaW4gUTEyICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICBmbG9hdCAtLT4gICBiWzNdID0gezAuOTg5NTAxOTUzLCAtMS45NzkwMDM5MDYsICAwLjk4OTUwMTk1M307ICAgICAgICAqDQorKiAgICAgICAgICAgICAgYVszXSA9IHsxLjAwMDAwMDAwMCwgIDEuOTc4ODgxODM2LCAtMC45NzkxMjU5Nzd9OyAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorDQorLyogZmlsdGVyIGNvZWZmaWNpZW50cyAgKi8NCitzdGF0aWMgV29yZDE2IGJbM10gPSB7NDA1MywgLTgxMDYsIDQwNTN9OyAgLyogUTEyICovDQorc3RhdGljIFdvcmQxNiBhWzNdID0gezgxOTIsIDE2MjExLCAtODAyMX07IC8qIFExMiAoeDIpICovDQorDQorLyogSW5pdGlhbGl6YXRpb24gb2Ygc3RhdGljIHZhbHVlcyAqLw0KKw0KK3ZvaWQgSW5pdF9IUDUwXzEyazgoV29yZDE2IG1lbVtdKQ0KK3sNCisJU2V0X3plcm8obWVtLCA2KTsNCit9DQorDQorDQordm9pZCBIUDUwXzEyazgoDQorCQlXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0L291dHB1dCBzaWduYWwgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ2h0IG9mIHNpZ25hbCAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaWx0ZXIgbWVtb3J5IFs2XSAgICovDQorCSAgICAgICkNCit7DQorCVdvcmQxNiB4MjsNCisJV29yZDE2IHkyX2hpLCB5Ml9sbywgeTFfaGksIHkxX2xvLCB4MCwgeDE7DQorCVdvcmQzMiBMX3RtcDsNCisJV29yZDMyIG51bTsNCisNCisJeTJfaGkgPSAqbWVtKys7DQorCXkyX2xvID0gKm1lbSsrOw0KKwl5MV9oaSA9ICptZW0rKzsNCisJeTFfbG8gPSAqbWVtKys7DQorCXgwID0gKm1lbSsrOyAgIA0KKwl4MSA9ICptZW07DQorCW51bSA9IChXb3JkMzIpbGc7DQorCWRvDQorCXsNCisJCXgyID0geDE7DQorCQl4MSA9IHgwOw0KKwkJeDAgPSAqc2lnbmFsOw0KKwkJLyogeVtpXSA9IGJbMF0qeFtpXSArIGJbMV0qeFtpLTFdICsgYjE0MFsyXSp4W2ktMl0gICovDQorCQkvKiArIGFbMV0qeVtpLTFdICsgYVsyXSAqIHlbaS0yXTsgICovDQorCQlMX3RtcCA9IDgxOTIgOyAgICAgICAgICAgICAgICAgICAgLyogcm91bmRpbmcgdG8gbWF4aW1pc2UgcHJlY2lzaW9uICovDQorCQlMX3RtcCArPSB5MV9sbyAqIGFbMV07DQorCQlMX3RtcCArPSB5Ml9sbyAqIGFbMl07DQorCQlMX3RtcCA9IExfdG1wID4+IDE0Ow0KKwkJTF90bXAgKz0gKHkxX2hpICogYVsxXSArIHkyX2hpICogYVsyXSArICh4MCArIHgyKSAqIGJbMF0gKyB4MSAqIGJbMV0pIDw8IDE7DQorCQlMX3RtcCA8PD0gMjsgICAgICAgICAgIC8qIGNvZWZmIFExMiAtLT4gUTEzICovDQorCQl5Ml9oaSA9IHkxX2hpOw0KKwkJeTJfbG8gPSB5MV9sbzsNCisJCXkxX2hpID0gKFdvcmQxNikoTF90bXA+PjE2KTsNCisJCXkxX2xvID0gKFdvcmQxNikoKExfdG1wICYgMHhmZmZmKT4+MSk7DQorCQkqc2lnbmFsKysgPSBleHRyYWN0X2goKExfYWRkKChMX3RtcDw8MSksIDB4ODAwMCkpKTsNCisJfXdoaWxlKC0tbnVtICE9MCk7DQorDQorCSptZW0tLSA9IHgxOw0KKwkqbWVtLS0gPSB4MDsNCisJKm1lbS0tID0geTFfbG87DQorCSptZW0tLSA9IHkxX2hpOw0KKwkqbWVtLS0gPSB5Ml9sbzsNCisJKm1lbS0tID0geTJfaGk7ICANCisNCisJcmV0dXJuOw0KK30NCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2hwNmsuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHA2ay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZTViMjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2hwNmsuYwpAQCAtMCwwICsxLDkzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogaHA2ay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKglEZXNjcmlwdGlvbjoxNXRoIG9yZGVyIGJhbmQgcGFzcyA2a0h6IHRvIDdrSHogRklSIGZpbHRlciAgICAgICAgKg0KKyogICAgICAgZnJlcXVlbmN5OiA0a0h6ICAgNWtIeiAgNS41a0h6ICA2a0h6ICA2LjVrSHogIDdrSHogNy41a0h6IDhrSHogICoNCisqCWRCIGxvc3M6ICAtNjBkQiAgLTQ1ZEIgIC0xM2RCICAgLTNkQiAgIDBkQiAgICAtM2RCIC0xM2RCICAtNDVkQiAqDQorKgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisNCisjZGVmaW5lIExfRklSIDMxDQorDQorLyogZmlsdGVyIGNvZWZmaWNpZW50cyAoZ2Fpbj00LjApICovDQorDQorV29yZDE2IGZpcl82a183a1tMX0ZJUl0gPQ0KK3sNCisJLTMyLCA0NywgMzIsIC0yNywgLTM2OSwNCisJMTEyMiwgLTE0MjEsIDAsIDM3OTgsIC04ODgwLA0KKwkxMjM0OSwgLTEwOTg0LCAzNTQ4LCA3NzY2LCAtMTgwMDEsDQorCTIyMTE4LCAtMTgwMDEsIDc3NjYsIDM1NDgsIC0xMDk4NCwNCisJMTIzNDksIC04ODgwLCAzNzk4LCAwLCAtMTQyMSwNCisJMTEyMiwgLTM2OSwgLTI3LCAzMiwgNDcsDQorCS0zMg0KK307DQorDQorDQordm9pZCBJbml0X0ZpbHRfNmtfN2soV29yZDE2IG1lbVtdKSAgICAgICAgIC8qIG1lbVszMF0gKi8NCit7DQorCVNldF96ZXJvKG1lbSwgTF9GSVIgLSAxKTsNCisJcmV0dXJuOw0KK30NCisNCit2b2lkIEZpbHRfNmtfN2soDQorCQlXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgc2lnbmFsICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBsZW5ndGggb2YgaW5wdXQgICAgICAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IG1lbW9yeSAoc2l6ZT0zMCkgICAgICAgICovDQorCSAgICAgICApDQorew0KKwlXb3JkMTYgeFtMX1NVQkZSMTZrICsgKExfRklSIC0gMSldOw0KKwlXb3JkMzIgaSwgTF90bXA7DQorDQorCUNvcHkobWVtLCB4LCBMX0ZJUiAtIDEpOw0KKwlmb3IgKGkgPSBsZyAtIDE7IGkgPj0gMDsgaS0tKQ0KKwl7DQorCQl4W2kgKyBMX0ZJUiAtIDFdID0gc2lnbmFsW2ldID4+IDI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdhaW4gb2YgZmlsdGVyID0gNCAqLw0KKwl9CQ0KKwlmb3IgKGkgPSAwOyBpIDwgbGc7IGkrKykNCisJew0KKwkJTF90bXAgPSAgKHhbaV0gKyB4W2krIDMwXSkgKiBmaXJfNmtfN2tbMF07DQorCQlMX3RtcCArPSAoeFtpKzFdICsgeFtpICsgMjldKSAqIGZpcl82a183a1sxXTsNCisJCUxfdG1wICs9ICh4W2krMl0gKyB4W2kgKyAyOF0pICogZmlyXzZrXzdrWzJdOw0KKwkJTF90bXAgKz0gKHhbaSszXSArIHhbaSArIDI3XSkgKiBmaXJfNmtfN2tbM107DQorCQlMX3RtcCArPSAoeFtpKzRdICsgeFtpICsgMjZdKSAqIGZpcl82a183a1s0XTsNCisJCUxfdG1wICs9ICh4W2krNV0gKyB4W2kgKyAyNV0pICogZmlyXzZrXzdrWzVdOw0KKwkJTF90bXAgKz0gKHhbaSs2XSArIHhbaSArIDI0XSkgKiBmaXJfNmtfN2tbNl07DQorCQlMX3RtcCArPSAoeFtpKzddICsgeFtpICsgMjNdKSAqIGZpcl82a183a1s3XTsNCisJCUxfdG1wICs9ICh4W2krOF0gKyB4W2kgKyAyMl0pICogZmlyXzZrXzdrWzhdOw0KKwkJTF90bXAgKz0gKHhbaSs5XSArIHhbaSArIDIxXSkgKiBmaXJfNmtfN2tbOV07DQorCQlMX3RtcCArPSAoeFtpKzEwXSArIHhbaSArIDIwXSkgKiBmaXJfNmtfN2tbMTBdOw0KKwkJTF90bXAgKz0gKHhbaSsxMV0gKyB4W2kgKyAxOV0pICogZmlyXzZrXzdrWzExXTsNCisJCUxfdG1wICs9ICh4W2krMTJdICsgeFtpICsgMThdKSAqIGZpcl82a183a1sxMl07DQorCQlMX3RtcCArPSAoeFtpKzEzXSArIHhbaSArIDE3XSkgKiBmaXJfNmtfN2tbMTNdOw0KKwkJTF90bXAgKz0gKHhbaSsxNF0gKyB4W2kgKyAxNl0pICogZmlyXzZrXzdrWzE0XTsNCisJCUxfdG1wICs9ICh4W2krMTVdKSAqIGZpcl82a183a1sxNV07DQorCQlzaWduYWxbaV0gPSAoTF90bXAgKyAweDQwMDApID4+IDE1Ow0KKwl9DQorDQorCUNvcHkoeCArIGxnLCBtZW0sIExfRklSIC0gMSk7DQorDQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHBfd3NwLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2hwX3dzcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYjYyYTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2hwX3dzcC5jCkBAIC0wLDAgKzEsMTQ4IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogaHBfd3NwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAzbmQgb3JkZXIgaGlnaCBwYXNzIGZpbHRlciB3aXRoIGN1dCBvZmYgZnJlcXVlbmN5IGF0IDE4MEh6ICAgICAgKg0KKyogQWxnb3JpdGhtOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgeVtpXSA9IGJbMF0qeFtpXSArIGJbMV0qeFtpLTFdICsgYlsyXSp4W2ktMl0gKyBiWzNdKnhbaS0zXSAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgKyBhWzFdKnlbaS0xXSArIGFbMl0qeVtpLTJdICsgYVszXSp5W2ktM107ICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBmbG9hdCBhX2NvZWZbSFBfT1JERVJdPSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgLTIuNjQ0MzY3MTE2MDA2NjRmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgIDIuMzUwODczODY2MjUzNjBmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgIC0wLjcwMDAxMTU2OTI3NDI0Zn07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIGZsb2F0IGJfY29lZltIUF9PUkRFUisxXT0geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgLTAuODM3ODcwNTc1MDU2NjVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgMi41MDk3NTU3MDA3MTA1OGYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgLTIuNTA5NzU1NzAwNzEwNThmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAwLjgzNzg3MDU3NTA1NjY1Zn07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorDQorLyogZmlsdGVyIGNvZWZmaWNpZW50cyBpbiBRMTIgKi8NCitzdGF0aWMgV29yZDE2IGFbNF0gPSB7ODE5MiwgMjE2NjMsIC0xOTI1OCwgNTczNH07DQorc3RhdGljIFdvcmQxNiBiWzRdID0gey0zNDMyLCArMTAyODAsIC0xMDI4MCwgKzM0MzJ9Ow0KKw0KKy8qIEluaXRpYWxpemF0aW9uIG9mIHN0YXRpYyB2YWx1ZXMgKi8NCit2b2lkIEluaXRfSHBfd3NwKFdvcmQxNiBtZW1bXSkNCit7DQorCVNldF96ZXJvKG1lbSwgOSk7DQorDQorCXJldHVybjsNCit9DQorDQordm9pZCBzY2FsZV9tZW1fSHBfd3NwKFdvcmQxNiBtZW1bXSwgV29yZDE2IGV4cCkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMzIgTF90bXA7DQorDQorCWZvciAoaSA9IDA7IGkgPCA2OyBpICs9IDIpDQorCXsNCisJCUxfdG1wID0gKChtZW1baV0gPDwgMTYpICsgKG1lbVtpICsgMV08PDEpKTsNCisJCUxfdG1wID0gTF9zaGwoTF90bXAsIGV4cCk7DQorCQltZW1baV0gPSBMX3RtcCA+PiAxNjsNCisJCW1lbVtpICsgMV0gPSAoTF90bXAgJiAweGZmZmYpPj4xOw0KKwl9DQorDQorCWZvciAoaSA9IDY7IGkgPCA5OyBpKyspDQorCXsNCisJCUxfdG1wID0gTF9kZXBvc2l0X2gobWVtW2ldKTsgICAgICAgLyogeFtpXSAqLw0KKwkJTF90bXAgPSBMX3NobChMX3RtcCwgZXhwKTsNCisJCW1lbVtpXSA9IHZvX3JvdW5kKExfdG1wKTsNCisJfQ0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KK3ZvaWQgSHBfd3NwKA0KKwkJV29yZDE2IHdzcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiB3c3BbXSAgc2lnbmFsICAgICAgICovDQorCQlXb3JkMTYgaHBfd3NwW10sICAgICAgICAgICAgICAgICAgICAgIC8qIG8gICA6IGh5cGFzcyB3c3BbXSAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogbGVuZ2h0IG9mIHNpZ25hbCAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBmaWx0ZXIgbWVtb3J5IFs5XSAgICovDQorCSAgICkNCit7DQorCVdvcmQxNiB4MCwgeDEsIHgyLCB4MzsNCisJV29yZDE2IHkzX2hpLCB5M19sbywgeTJfaGksIHkyX2xvLCB5MV9oaSwgeTFfbG87DQorCVdvcmQzMiBpLCBMX3RtcDsNCisNCisJeTNfaGkgPSBtZW1bMF07ICAgICAgICAgICAgICAgICAgICAgICAgDQorCXkzX2xvID0gbWVtWzFdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl5Ml9oaSA9IG1lbVsyXTsgICAgICAgICAgICAgICAgICAgICAgICANCisJeTJfbG8gPSBtZW1bM107ICAgICAgICAgICAgICAgICAgICAgICAgDQorCXkxX2hpID0gbWVtWzRdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl5MV9sbyA9IG1lbVs1XTsgICAgICAgICAgICAgICAgICAgICAgICANCisJeDAgPSBtZW1bNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXgxID0gbWVtWzddOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl4MiA9IG1lbVs4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChpID0gMDsgaSA8IGxnOyBpKyspDQorCXsNCisJCXgzID0geDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQl4MiA9IHgxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJeDEgPSB4MDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCXgwID0gd3NwW2ldOyAgICAgICAgICAgICAgICAgICAgICAgDQorCQkvKiB5W2ldID0gYlswXSp4W2ldICsgYlsxXSp4W2ktMV0gKyBiMTQwWzJdKnhbaS0yXSArIGJbM10qeFtpLTNdICAqLw0KKwkJLyogKyBhWzFdKnlbaS0xXSArIGFbMl0gKiB5W2ktMl0gICsgYVszXSp5W2ktM10gICovDQorDQorCQlMX3RtcCA9IDE2Mzg0TDsgICAgICAgICAgICAgICAgICAgIC8qIHJvdW5kaW5nIHRvIG1heGltaXNlIHByZWNpc2lvbiAqLw0KKwkJTF90bXAgKz0gKHkxX2xvICogYVsxXSk8PDE7DQorCQlMX3RtcCArPSAoeTJfbG8gKiBhWzJdKTw8MTsNCisJCUxfdG1wICs9ICh5M19sbyAqIGFbM10pPDwxOw0KKwkJTF90bXAgPSBMX3RtcCA+PiAxNTsNCisJCUxfdG1wICs9ICh5MV9oaSAqIGFbMV0pPDwxOw0KKwkJTF90bXAgKz0gKHkyX2hpICogYVsyXSk8PDE7DQorCQlMX3RtcCArPSAoeTNfaGkgKiBhWzNdKTw8MTsNCisJCUxfdG1wICs9ICh4MCAqIGJbMF0pPDwxOw0KKwkJTF90bXAgKz0gKHgxICogYlsxXSk8PDE7DQorCQlMX3RtcCArPSAoeDIgKiBiWzJdKTw8MTsNCisJCUxfdG1wICs9ICh4MyAqIGJbM10pPDwxOw0KKw0KKwkJTF90bXAgPSBMX3RtcCA8PCAyOw0KKw0KKwkJeTNfaGkgPSB5Ml9oaTsgICAgICAgICAgICAgICAgICAgICANCisJCXkzX2xvID0geTJfbG87ICAgICAgICAgICAgICAgICAgICAgDQorCQl5Ml9oaSA9IHkxX2hpOyAgICAgICAgICAgICAgICAgICAgIA0KKwkJeTJfbG8gPSB5MV9sbzsgDQorCQl5MV9oaSA9IExfdG1wID4+IDE2Ow0KKwkJeTFfbG8gPSAoTF90bXAgJiAweGZmZmYpID4+MTsNCisNCisJCWhwX3dzcFtpXSA9IChMX3RtcCArIDB4NDAwMCk+PjE1OyAgICAgICAgICANCisJfQ0KKw0KKwltZW1bMF0gPSB5M19oaTsgICAgICAgICAgICAgICAgICAgICAgICANCisJbWVtWzFdID0geTNfbG87ICAgICAgICAgICAgICAgICAgICAgICAgDQorCW1lbVsyXSA9IHkyX2hpOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwltZW1bM10gPSB5Ml9sbzsgICAgICAgICAgICAgICAgICAgICAgICANCisJbWVtWzRdID0geTFfaGk7ICAgICAgICAgICAgICAgICAgICAgICAgDQorCW1lbVs1XSA9IHkxX2xvOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwltZW1bNl0gPSB4MDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJbWVtWzddID0geDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCW1lbVs4XSA9IHgyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaW50X2xwYy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9pbnRfbHBjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxZmQwYgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaW50X2xwYy5jCkBAIC0wLDAgKzEsNjYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IGludF9scGMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOkludGVycG9sYXRpb24gb2YgdGhlIExQIHBhcmFtZXRlcnMgaW4gNCBzdWJmcmFtZXMuICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisNCisjZGVmaW5lIE1QMSAoTSsxKQ0KKw0KKw0KK3ZvaWQgSW50X2lzcCgNCisJCVdvcmQxNiBpc3Bfb2xkW10sICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBpc3BzIGZyb20gcGFzdCBmcmFtZSAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBpc3BfbmV3W10sICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBpc3BzIGZyb20gcHJlc2VudCBmcmFtZSAgICAgICAgICAgKi8NCisJCVdvcmQxNiBmcmFjW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBmcmFjdGlvbiBmb3IgMyBmaXJzdCBzdWJmciAoUTE1KSAgKi8NCisJCVdvcmQxNiBBeltdICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBMUCBjb2VmZmljaWVudHMgaW4gNCBzdWJmcmFtZXMgICAgKi8NCisJICAgICkNCit7DQorCVdvcmQzMiBpLCBrOyANCisJV29yZDE2IGZhY19vbGQsIGZhY19uZXc7DQorCVdvcmQxNiBpc3BbTV07DQorCVdvcmQzMiBMX3RtcDsNCisNCisJZm9yIChrID0gMDsgayA8IDM7IGsrKykNCisJew0KKwkJZmFjX25ldyA9IGZyYWNba107ICAgICAgICAgICAgICAgIA0KKwkJZmFjX29sZCA9ICgzMjc2NyAtIGZhY19uZXcpICsgMTsgIC8qIDEuMCAtIGZhY19uZXcgKi8NCisNCisJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQl7DQorCQkJTF90bXAgPSAoaXNwX29sZFtpXSAqIGZhY19vbGQpPDwxOw0KKwkJCUxfdG1wICs9IChpc3BfbmV3W2ldICogZmFjX25ldyk8PDE7DQorCQkJaXNwW2ldID0gKExfdG1wICsgMHg4MDAwKT4+MTY7ICAgICAgICANCisJCX0NCisJCUlzcF9Beihpc3AsIEF6LCBNLCAwKTsNCisJCUF6ICs9IE1QMTsNCisJfQ0KKw0KKwkvKiA0dGggc3ViZnJhbWU6IGlzcF9uZXcgKGZyYWM9MS4wKSAqLw0KKwlJc3BfQXooaXNwX25ldywgQXosIE0sIDApOw0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaXNwX2F6LmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2lzcF9hei5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNDRkMTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2lzcF9hei5jCkBAIC0wLDAgKzEsMjQ3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBpc3BfYXouYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjpDb21wdXRlIHRoZSBMUEMgY29lZmZpY2llbnRzIGZyb20gaXNwIChvcmRlcj1NKSAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorDQorI2RlZmluZSBOQyAoTS8yKQ0KKyNkZWZpbmUgTkMxNmsgKE0xNmsvMikNCisNCisvKiBsb2NhbCBmdW5jdGlvbiAqLw0KKw0KK3N0YXRpYyB2b2lkIEdldF9pc3BfcG9sKFdvcmQxNiAqIGlzcCwgV29yZDMyICogZiwgV29yZDE2IG4pOw0KK3N0YXRpYyB2b2lkIEdldF9pc3BfcG9sXzE2a0h6KFdvcmQxNiAqIGlzcCwgV29yZDMyICogZiwgV29yZDE2IG4pOw0KKw0KK3ZvaWQgSXNwX0F6KA0KKwkJV29yZDE2IGlzcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogSW1taXR0YW5jZSBzcGVjdHJhbCBwYWlycyAgICAgICAgICAgICovDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTIgOiBwcmVkaWN0b3IgY29lZmZpY2llbnRzIChvcmRlciA9IE0pICAgKi8NCisJCVdvcmQxNiBtLA0KKwkJV29yZDE2IGFkYXB0aXZlX3NjYWxpbmcgICAgICAgICAgICAgICAvKiAoaSkgMCAgIDogYWRhcHRpdmUgc2NhbGluZyBkaXNhYmxlZCAqLw0KKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgMSAgIDogYWRhcHRpdmUgc2NhbGluZyBlbmFibGVkICAqLw0KKwkgICApDQorew0KKwlXb3JkMzIgaSwgajsgDQorCVdvcmQxNiBoaSwgbG87DQorCVdvcmQzMiBmMVtOQzE2ayArIDFdLCBmMltOQzE2a107DQorCVdvcmQxNiBuYzsNCisJV29yZDMyIHQwOw0KKwlXb3JkMTYgcSwgcV9zdWc7DQorCVdvcmQzMiB0bWF4Ow0KKw0KKwluYyA9IChtID4+IDEpOw0KKwlpZihuYyA+IDgpDQorCXsNCisJCUdldF9pc3BfcG9sXzE2a0h6KCZpc3BbMF0sIGYxLCBuYyk7DQorCQlmb3IgKGkgPSAwOyBpIDw9IG5jOyBpKyspDQorCQl7DQorCQkJZjFbaV0gPSBmMVtpXSA8PCAyOw0KKwkJfQ0KKwl9IGVsc2UNCisJCUdldF9pc3BfcG9sKCZpc3BbMF0sIGYxLCBuYyk7DQorDQorCWlmIChuYyA+IDgpDQorCXsNCisJCUdldF9pc3BfcG9sXzE2a0h6KCZpc3BbMV0sIGYyLCAobmMgLSAxKSk7DQorCQlmb3IgKGkgPSAwOyBpIDw9IG5jIC0gMTsgaSsrKQ0KKwkJew0KKwkJCWYyW2ldID0gZjJbaV0gPDwgMjsNCisJCX0NCisJfSBlbHNlDQorCQlHZXRfaXNwX3BvbCgmaXNwWzFdLCBmMiwgKG5jIC0gMSkpOw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAgTXVsdGlwbHkgRjIoeikgYnkgKDEgLSB6Xi0yKSAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJZm9yIChpID0gKG5jIC0gMSk7IGkgPiAxOyBpLS0pDQorCXsNCisJCWYyW2ldID0gdm9fTF9zdWIoZjJbaV0sIGYyW2kgLSAyXSk7ICAgICAgICAgIC8qIGYyW2ldIC09IGYyW2ktMl07ICovDQorCX0NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAgU2NhbGUgRjEoeikgYnkgKDEraXNwW20tMV0pICBhbmQgIEYyKHopIGJ5ICgxLWlzcFttLTFdKSAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCWZvciAoaSA9IDA7IGkgPCBuYzsgaSsrKQ0KKwl7DQorCQkvKiBmMVtpXSAqPSAoMS4wICsgaXNwW00tMV0pOyAqLw0KKw0KKwkJaGkgPSBmMVtpXSA+PiAxNjsNCisJCWxvID0gKGYxW2ldICYgMHhmZmZmKT4+MTsNCisNCisJCXQwID0gTXB5XzMyXzE2KGhpLCBsbywgaXNwW20gLSAxXSk7DQorCQlmMVtpXSA9IHZvX0xfYWRkKGYxW2ldLCB0MCk7IA0KKw0KKwkJLyogZjJbaV0gKj0gKDEuMCAtIGlzcFtNLTFdKTsgKi8NCisNCisJCWhpID0gZjJbaV0gPj4gMTY7DQorCQlsbyA9IChmMltpXSAmIDB4ZmZmZik+PjE7DQorCQl0MCA9IE1weV8zMl8xNihoaSwgbG8sIGlzcFttIC0gMV0pOw0KKwkJZjJbaV0gPSB2b19MX3N1YihmMltpXSwgdDApOyANCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAgQSh6KSA9IChGMSh6KStGMih6KSkvMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgRjEoeikgaXMgc3ltbWV0cmljIGFuZCBGMih6KSBpcyBhbnRpc3ltbWV0cmljICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJLyogYVswXSA9IDEuMDsgKi8NCisJYVswXSA9IDQwOTY7ICANCisJdG1heCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAxLCBqID0gbSAtIDE7IGkgPCBuYzsgaSsrLCBqLS0pDQorCXsNCisJCS8qIGFbaV0gPSAwLjUqKGYxW2ldICsgZjJbaV0pOyAqLw0KKw0KKwkJdDAgPSB2b19MX2FkZChmMVtpXSwgZjJbaV0pOyAgICAgICAgICAvKiBmMVtpXSArIGYyW2ldICAgICAgICAgICAgICovDQorCQl0bWF4IHw9IExfYWJzKHQwKTsgICAgICAgICAgICAgICAgIA0KKwkJYVtpXSA9IChXb3JkMTYpKHZvX0xfc2hyX3IodDAsIDEyKSk7IC8qIGZyb20gUTIzIHRvIFExMiBhbmQgKiAwLjUgKi8NCisNCisJCS8qIGFbal0gPSAwLjUqKGYxW2ldIC0gZjJbaV0pOyAqLw0KKw0KKwkJdDAgPSB2b19MX3N1YihmMVtpXSwgZjJbaV0pOyAgICAgICAgICAvKiBmMVtpXSAtIGYyW2ldICAgICAgICAgICAgICovDQorCQl0bWF4IHw9IExfYWJzKHQwKTsgICAgICAgICAgICAgICAgDQorCQlhW2pdID0gKFdvcmQxNikodm9fTF9zaHJfcih0MCwgMTIpKTsgLyogZnJvbSBRMjMgdG8gUTEyIGFuZCAqIDAuNSAqLw0KKwl9DQorDQorCS8qIHJlc2NhbGUgZGF0YSBpZiBvdmVyZmxvdyBoYXMgb2NjdXJlZCBhbmQgcmVwcm9jZXNzIHRoZSBsb29wICovDQorCWlmKGFkYXB0aXZlX3NjYWxpbmcgPT0gMSkNCisJCXEgPSA0IC0gbm9ybV9sKHRtYXgpOyAgICAgICAgLyogYWRhcHRpdmUgc2NhbGluZyBlbmFibGVkICovDQorCWVsc2UNCisJCXEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkYXB0aXZlIHNjYWxpbmcgZGlzYWJsZWQgKi8NCisNCisJaWYgKHEgPiAwKQ0KKwl7DQorCQlxX3N1ZyA9ICgxMiArIHEpOw0KKwkJZm9yIChpID0gMSwgaiA9IG0gLSAxOyBpIDwgbmM7IGkrKywgai0tKQ0KKwkJew0KKwkJCS8qIGFbaV0gPSAwLjUqKGYxW2ldICsgZjJbaV0pOyAqLw0KKwkJCXQwID0gdm9fTF9hZGQoZjFbaV0sIGYyW2ldKTsgICAgICAgICAgLyogZjFbaV0gKyBmMltpXSAgICAgICAgICAgICAqLw0KKwkJCWFbaV0gPSAoV29yZDE2KSh2b19MX3Nocl9yKHQwLCBxX3N1ZykpOyAvKiBmcm9tIFEyMyB0byBRMTIgYW5kICogMC41ICovDQorDQorCQkJLyogYVtqXSA9IDAuNSooZjFbaV0gLSBmMltpXSk7ICovDQorCQkJdDAgPSB2b19MX3N1YihmMVtpXSwgZjJbaV0pOyAgICAgICAgICAvKiBmMVtpXSAtIGYyW2ldICAgICAgICAgICAgICovDQorCQkJYVtqXSA9IChXb3JkMTYpKHZvX0xfc2hyX3IodDAsIHFfc3VnKSk7IC8qIGZyb20gUTIzIHRvIFExMiBhbmQgKiAwLjUgKi8NCisJCX0NCisJCWFbMF0gPSBzaHIoYVswXSwgcSk7IA0KKwl9DQorCWVsc2UNCisJew0KKwkJcV9zdWcgPSAxMjsgDQorCQlxICAgICA9IDA7IA0KKwl9DQorCS8qIGFbTkNdID0gMC41KmYxW05DXSooMS4wICsgaXNwW00tMV0pOyAqLw0KKwloaSA9IGYxW25jXSA+PiAxNjsNCisJbG8gPSAoZjFbbmNdICYgMHhmZmZmKT4+MTsNCisJdDAgPSBNcHlfMzJfMTYoaGksIGxvLCBpc3BbbSAtIDFdKTsNCisJdDAgPSB2b19MX2FkZChmMVtuY10sIHQwKTsNCisJYVtuY10gPSAoV29yZDE2KShMX3Nocl9yKHQwLCBxX3N1ZykpOyAgICAvKiBmcm9tIFEyMyB0byBRMTIgYW5kICogMC41ICovDQorCS8qIGFbbV0gPSBpc3BbbS0xXTsgKi8NCisNCisJYVttXSA9IHZvX3Nocl9yKGlzcFttIC0gMV0sICgzICsgcSkpOyAgICAgICAgICAgLyogZnJvbSBRMTUgdG8gUTEyICAgICAgICAgICovDQorCXJldHVybjsNCit9DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqIHByb2NlZHVyZSBHZXRfaXNwX3BvbDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgfn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICBGaW5kIHRoZSBwb2x5bm9taWFsIEYxKHopIG9yIEYyKHopIGZyb20gdGhlIElTUHMuICAgICAgICoNCisqIFRoaXMgaXMgcGVyZm9ybWVkIGJ5IGV4cGFuZGluZyB0aGUgcHJvZHVjdCBwb2x5bm9taWFsczogICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRjEoeikgPSAgIHByb2R1Y3QgICAoIDEgLSAyIGlzcF9pIHpeLTEgKyB6Xi0yICkgICAgICAgICAgICoNCisqICAgICAgICAgaT0wLDIsNCw2LDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBGMih6KSA9ICAgcHJvZHVjdCAgICggMSAtIDIgaXNwX2kgel4tMSArIHpeLTIgKSAgICAgICAgICAgKg0KKyogICAgICAgICBpPTEsMyw1LDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiB3aGVyZSBpc3BfaSBhcmUgdGhlIElTUHMgaW4gdGhlIGNvc2luZSBkb21haW4uICAgICAgICAgICAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBQYXJhbWV0ZXJzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIGlzcFtdICAgOiBpc3AgdmVjdG9yIChjb3NpbmUgZG9tYWluZSkgICAgICAgICBpbiBRMTUgICAgICoNCisqICBmW10gICAgIDogdGhlIGNvZWZmaWNpZW50cyBvZiBGMSBvciBGMiAgICAgICAgaW4gUTIzICAgICAqDQorKiAgbiAgICAgICA6ID09IE5DIGZvciBGMSh6KTsgPT0gTkMtMSBmb3IgRjIoeikgICAgICAgICAgICAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgR2V0X2lzcF9wb2woV29yZDE2ICogaXNwLCBXb3JkMzIgKiBmLCBXb3JkMTYgbikNCit7DQorCVdvcmQxNiBoaSwgbG87DQorCVdvcmQzMiBpLCBqLCB0MDsNCisJLyogQWxsIGNvbXB1dGF0aW9uIGluIFEyMyAqLw0KKw0KKwlmWzBdID0gdm9fTF9tdWx0KDQwOTYsIDEwMjQpOyAgICAgICAgICAgICAgIC8qIGZbMF0gPSAxLjA7ICAgICAgICBpbiBRMjMgICovDQorCWZbMV0gPSB2b19MX211bHQoaXNwWzBdLCAtMjU2KTsgICAgICAgICAgICAgLyogZlsxXSA9IC0yLjAqaXNwWzBdIGluIFEyMyAgKi8NCisNCisJZiArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZHZhbmNlIGYgcG9pbnRlciAgICAgICAgICAqLw0KKwlpc3AgKz0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFkdmFuY2UgaXNwIHBvaW50ZXIgICAgICAgICovDQorCWZvciAoaSA9IDI7IGkgPD0gbjsgaSsrKQ0KKwl7DQorCQkqZiA9IGZbLTJdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJZm9yIChqID0gMTsgaiA8IGk7IGorKywgZi0tKQ0KKwkJew0KKwkJCWhpID0gZlstMV0+PjE2Ow0KKwkJCWxvID0gKGZbLTFdICYgMHhmZmZmKT4+MTsNCisNCisJCQl0MCA9IE1weV8zMl8xNihoaSwgbG8sICppc3ApOyAgLyogdDAgPSBmWy0xXSAqIGlzcCAgICAqLw0KKwkJCXQwID0gdDAgPDwgMTsNCisJCQkqZiA9IHZvX0xfc3ViKCpmLCB0MCk7ICAgICAgICAgICAgICAvKiAqZiAtPSB0MCAgICAgICAgICAgICovDQorCQkJKmYgPSB2b19MX2FkZCgqZiwgZlstMl0pOyAgICAgICAgICAgLyogKmYgKz0gZlstMl0gICAgICAgICAqLw0KKwkJfQ0KKwkJKmYgLT0gKCppc3AgPDwgOSk7ICAgICAgICAgICAvKiAqZiAtPSBpc3A8PDggICAgICAgICovDQorCQlmICs9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFkdmFuY2UgZiBwb2ludGVyICAgKi8NCisJCWlzcCArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWR2YW5jZSBpc3AgcG9pbnRlciAqLw0KKwl9DQorCXJldHVybjsNCit9DQorDQorc3RhdGljIHZvaWQgR2V0X2lzcF9wb2xfMTZrSHooV29yZDE2ICogaXNwLCBXb3JkMzIgKiBmLCBXb3JkMTYgbikNCit7DQorCVdvcmQxNiBoaSwgbG87DQorCVdvcmQzMiBpLCBqLCB0MDsNCisNCisJLyogQWxsIGNvbXB1dGF0aW9uIGluIFEyMyAqLw0KKwlmWzBdID0gTF9tdWx0KDQwOTYsIDI1Nik7ICAgICAgICAgICAgICAgIC8qIGZbMF0gPSAxLjA7ICAgICAgICBpbiBRMjMgICovDQorCWZbMV0gPSBMX211bHQoaXNwWzBdLCAtNjQpOyAgICAgICAgICAgICAgLyogZlsxXSA9IC0yLjAqaXNwWzBdIGluIFEyMyAgKi8NCisNCisJZiArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZHZhbmNlIGYgcG9pbnRlciAgICAgICAgICAqLw0KKwlpc3AgKz0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFkdmFuY2UgaXNwIHBvaW50ZXIgICAgICAgICovDQorDQorCWZvciAoaSA9IDI7IGkgPD0gbjsgaSsrKQ0KKwl7DQorCQkqZiA9IGZbLTJdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJZm9yIChqID0gMTsgaiA8IGk7IGorKywgZi0tKQ0KKwkJew0KKwkJCVZPX0xfRXh0cmFjdChmWy0xXSwgJmhpLCAmbG8pOw0KKwkJCXQwID0gTXB5XzMyXzE2KGhpLCBsbywgKmlzcCk7ICAvKiB0MCA9IGZbLTFdICogaXNwICAgICovDQorCQkJdDAgPSBMX3NobDIodDAsIDEpOw0KKwkJCSpmID0gTF9zdWIoKmYsIHQwKTsgICAgICAgICAgICAgIC8qICpmIC09IHQwICAgICAgICAgICAgKi8NCisJCQkqZiA9IExfYWRkKCpmLCBmWy0yXSk7ICAgICAgICAgICAvKiAqZiArPSBmWy0yXSAgICAgICAgICovDQorCQl9DQorCQkqZiA9IExfbXN1KCpmLCAqaXNwLCA2NCk7ICAgICAgICAgICAgLyogKmYgLT0gaXNwPDw4ICAgICAgICAqLw0KKwkJZiArPSBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZHZhbmNlIGYgcG9pbnRlciAgICovDQorCQlpc3AgKz0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFkdmFuY2UgaXNwIHBvaW50ZXIgKi8NCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaXNwX2lzZi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9pc3BfaXNmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM2ZTM4OQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaXNwX2lzZi5jCkBAIC0wLDAgKzEsOTEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiBpc3BfaXNmLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICBEZXNjcmlwdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKglJc3BfaXNmICAgVHJhbnNmb3JtYXRpb24gaXNwIHRvIGlzZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKglJc2ZfaXNwICAgVHJhbnNmb3JtYXRpb24gaXNmIHRvIGlzcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKglUaGUgdHJhbnNmb3JtYXRpb24gZnJvbSBpc3BbaV0gdG8gaXNmW2ldIGFuZCBpc2ZbaV0gdG8gaXNwW2ldICAqDQorKglhcmUgYXBwcm94aW1hdGVkIGJ5IGEgbG9vay11cCB0YWJsZSBhbmQgaW50ZXJwb2xhdGlvbiAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImlzcF9pc2YudGFiIiAgICAgICAgICAgICAgICAgICAgIC8qIExvb2stdXAgdGFibGUgZm9yIHRyYW5zZm9ybWF0aW9ucyAqLw0KKw0KK3ZvaWQgSXNwX2lzZigNCisJCVdvcmQxNiBpc3BbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGlzcFttXSAocmFuZ2U6IC0xPD12YWw8MSkgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBpc2ZbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IGlzZlttXSBub3JtYWxpemVkIChyYW5nZTogMC4wPD12YWw8PTAuNSkgKi8NCisJCVdvcmQxNiBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IExQQyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICkNCit7DQorCVdvcmQzMiBpLCBpbmQ7DQorCVdvcmQzMiBMX3RtcDsNCisJaW5kID0gMTI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBiZWdpbmcgYXQgZW5kIG9mIHRhYmxlIC0xICovDQorCWZvciAoaSA9IChtIC0gMSk7IGkgPj0gMDsgaS0tKQ0KKwl7DQorCQlpZiAoaSA+PSAobSAtIDIpKQ0KKwkJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtLTIgaXMgYSBjb25zdGFudCAqLw0KKwkJCWluZCA9IDEyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qIGJlZ2luZyBhdCBlbmQgb2YgdGFibGUgLTEgKi8NCisJCX0NCisJCS8qIGZpbmQgdmFsdWUgaW4gdGFibGUgdGhhdCBpcyBqdXN0IGdyZWF0ZXIgdGhhbiBpc3BbaV0gKi8NCisJCXdoaWxlICh0YWJsZVtpbmRdIDwgaXNwW2ldKQ0KKwkJCWluZC0tOw0KKwkJLyogYWNvcyhpc3BbaV0pPSBpbmQqMTI4ICsgKCAoIGlzcFtpXS10YWJsZVtpbmRdICkgKiBzbG9wZVtpbmRdICkvMjA0OCAqLw0KKwkJTF90bXAgPSB2b19MX211bHQodm9fc3ViKGlzcFtpXSwgdGFibGVbaW5kXSksIHNsb3BlW2luZF0pOw0KKwkJaXNmW2ldID0gdm9fcm91bmQoKExfdG1wIDw8IDQpKTsgICAvKiAoaXNwW2ldLXRhYmxlW2luZF0pKnNsb3BlW2luZF0pPj4xMSAqLw0KKwkJaXNmW2ldID0gYWRkMShpc2ZbaV0sIChpbmQgPDwgNykpOyANCisJfQ0KKwlpc2ZbbSAtIDFdID0gKGlzZlttIC0gMV0gPj4gMSk7ICAgICAgDQorCXJldHVybjsNCit9DQorDQorDQordm9pZCBJc2ZfaXNwKA0KKwkJV29yZDE2IGlzZltdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogaXNmW21dIG5vcm1hbGl6ZWQgKHJhbmdlOiAwLjA8PXZhbDw9MC41KSAqLw0KKwkJV29yZDE2IGlzcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogaXNwW21dIChyYW5nZTogLTE8PXZhbDwxKSAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogTFBDIG9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgKQ0KK3sNCisJV29yZDE2IG9mZnNldDsNCisJV29yZDMyIGksIGluZCwgTF90bXA7DQorDQorCWZvciAoaSA9IDA7IGkgPCBtIC0gMTsgaSsrKQ0KKwl7DQorCQlpc3BbaV0gPSBpc2ZbaV07ICAgICAgICAgICAgICAgICAgDQorCX0NCisJaXNwW20gLSAxXSA9IChpc2ZbbSAtIDFdIDw8IDEpOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgbTsgaSsrKQ0KKwl7DQorCQlpbmQgPSAoaXNwW2ldID4+IDcpOyAgICAgICAgICAgICAgICAgICAgICAvKiBpbmQgICAgPSBiNy1iMTUgb2YgaXNmW2ldICovDQorCQlvZmZzZXQgPSAoV29yZDE2KSAoaXNwW2ldICYgMHgwMDdmKTsgICAgICAvKiBvZmZzZXQgPSBiMC1iNiAgb2YgaXNmW2ldICovDQorDQorCQkvKiBpc3BbaV0gPSB0YWJsZVtpbmRdKyAoKHRhYmxlW2luZCsxXS10YWJsZVtpbmRdKSpvZmZzZXQpIC8gMTI4ICovDQorCQlMX3RtcCA9IHZvX0xfbXVsdCh2b19zdWIodGFibGVbaW5kICsgMV0sIHRhYmxlW2luZF0pLCBvZmZzZXQpOw0KKwkJaXNwW2ldID0gYWRkMSh0YWJsZVtpbmRdLCAoV29yZDE2KSgoTF90bXAgPj4gOCkpKTsgICANCisJfQ0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbGFnX3dpbmQuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbGFnX3dpbmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzk3NzA0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9sYWdfd2luZC5jCkBAIC0wLDAgKzEsNDkgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IGxhZ193aW5kLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKgkgICBEZXNjcmlwdGlvbjogTGFnX3dpbmRvd3Mgb24gYXV0b2NvcnJlbGF0aW9ucyAgICAgICAgICAgICAgICAqDQorKgkgICAgICAgICAgICAgICAgcltpXSAqPSBsYWdfd2luZFtpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgImxhZ193aW5kLnRhYiINCisNCisNCit2b2lkIExhZ193aW5kb3coDQorCQlXb3JkMTYgcl9oW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBBdXRvY29ycmVsYXRpb25zICAobXNiKSAgICAgICAgICAqLw0KKwkJV29yZDE2IHJfbFtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogQXV0b2NvcnJlbGF0aW9ucyAgKGxzYikgICAgICAgICAgKi8NCisJICAgICAgICkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMzIgeDsNCisNCisJZm9yIChpID0gMTsgaSA8PSBNOyBpKyspDQorCXsNCisJCXggPSBNcHlfMzIocl9oW2ldLCByX2xbaV0sIHZvbGFnX2hbaSAtIDFdLCB2b2xhZ19sW2kgLSAxXSk7DQorCQlyX2hbaV0gPSB4ID4+IDE2Ow0KKwkJcl9sW2ldID0gKHggJiAweGZmZmYpPj4xOw0KKwl9DQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9sZXZpbnNvbi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9sZXZpbnNvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYzZmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2xldmluc29uLmMKQEAgLTAsMCArMSwyNTAgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IGxldmluc29uLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOkxFVklOU09OLURVUkJJTiBhbGdvcml0aG0gaW4gZG91YmxlIHByZWNpc2lvbiAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIExFVklOU09OLkMJCQkJCSAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgTEVWSU5TT04tRFVSQklOIGFsZ29yaXRobSBpbiBkb3VibGUgcHJlY2lzaW9uICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIEFsZ29yaXRobSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIFJbaV0gICAgYXV0b2NvcnJlbGF0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIEFbaV0gICAgZmlsdGVyIGNvZWZmaWNpZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIEsgICAgICAgcmVmbGVjdGlvbiBjb2VmZmljaWVudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIEFscGhhICAgcHJlZGljdGlvbiBnYWluLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIEluaXRpYWxpemF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgQVswXSA9IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgSyAgICA9IC1SWzFdL1JbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgQVsxXSA9IEsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgQWxwaGEgPSBSWzBdICogKDEtSyoqMl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIERvIGZvciAgaSA9IDIgdG8gTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgUyA9ICBTVU0gKCBSW2pdKkFbaS1qXSAsaj0xLGktMSApICsgIFJbaV0gICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgSyA9IC1TIC8gQWxwaGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgQW5bal0gPSBBW2pdICsgSypBW2ktal0gICBmb3Igaj0xIHRvIGktMSAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSAgIEFuW2ldID0gbmV3IEFbaV0gICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgQW5baV09SyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgQWxwaGE9QWxwaGEgKiAoMS1LKioyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIEVORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIFJlbWFya3Mgb24gdGhlIGR5bmFtaWNzIG9mIHRoZSBjYWxjdWxhdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIFRoZSBudW1iZXJzIHVzZWQgYXJlIGluIGRvdWJsZSBwcmVjaXNpb24gaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQgOiAgKg0KKyAqICAgICAgIEEgPSBBSCA8PDE2ICsgQUw8PDEuICBBSCBhbmQgQUwgYXJlIDE2IGJpdCBzaWduZWQgaW50ZWdlcnMuICAgICAgICAgKg0KKyAqICAgICAgIFNpbmNlIHRoZSBMU0IncyBhbHNvIGNvbnRhaW4gYSBzaWduIGJpdCwgdGhpcyBmb3JtYXQgZG9lcyBub3QgICAgICAgKg0KKyAqICAgICAgIGNvcnJlc3BvbmQgdG8gc3RhbmRhcmQgMzIgYml0IGludGVnZXJzLiAgV2UgdXNlIHRoaXMgZm9ybWF0IHNpbmNlICAgKg0KKyAqICAgICAgIGl0IGFsbG93cyBmYXN0IGV4ZWN1dGlvbiBvZiBtdWx0aXBsaWNhdGlvbnMgYW5kIGRpdmlzaW9ucy4gICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICJEUEYiIHdpbGwgcmVmZXIgdG8gdGhpcyBzcGVjaWFsIGZvcm1hdCBpbiB0aGUgZm9sbG93aW5nIHRleHQuICAgICAgKg0KKyAqICAgICAgIFNlZSBvcGVyXzMyYi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIFRoZSBSW2ldIHdlcmUgbm9ybWFsaXplZCBpbiByb3V0aW5lIEFVVE8gKGhlbmNlLCBSW2ldIDwgMS4wKS4gICAgICAgKg0KKyAqICAgICAgIFRoZSBLW2ldIGFuZCBBbHBoYSBhcmUgdGhlb3JldGljYWxseSA8IDEuMC4gICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIFRoZSBBW2ldLCBmb3IgYSBzYW1wbGluZyBmcmVxdWVuY3kgb2YgOCBrSHosIGFyZSBpbiBwcmFjdGljZSAgICAgICAgKg0KKyAqICAgICAgIGFsd2F5cyBpbmZlcmlvciB0byAxNi4wLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIFRoZXNlIGNoYXJhY3RlcmlzdGljcyBhbGxvdyBzdHJhaWd0aGZvcndhcmQgZml4ZWQtcG9pbnQgICAgICAgICAgICAgKg0KKyAqICAgICAgIGltcGxlbWVudGF0aW9uLiAgV2UgY2hvb3NlIHRvIHJlcHJlc2VudCB0aGUgcGFyYW1ldGVycyBhcyAgICAgICAgICAgKg0KKyAqICAgICAgIGZvbGxvd3MgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgUltpXSAgICBRMzEgICArLSAuOTkuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgS1tpXSAgICBRMzEgICArLSAuOTkuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgQWxwaGEgICBOb3JtYWxpemVkIC0+IG1hbnRpc3NhIGluIFEzMSBwbHVzIGV4cG9uZW50ICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgQVtpXSAgICBRMjcgICArLSAxNS45OTkuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIFRoZSBhZGRpdGlvbnMgYXJlIHBlcmZvcm1lZCBpbiAzMiBiaXQuICBGb3IgdGhlIHN1bW1hdGlvbiB1c2VkICAgICAgKg0KKyAqICAgICAgIHRvIGNhbGN1bGF0ZSB0aGUgS1tpXSwgd2UgbXVsdGlwbHkgbnVtYmVycyBpbiBRMzEgYnkgbnVtYmVycyAgICAgICAgKg0KKyAqICAgICAgIGluIFEyNywgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWNhdGlvbnMgaW4gUTI3LCAgICAgICAgICAgICAgKg0KKyAqICAgICAgIHJlc3VsdGluZyBpbiBhIGR5bmFtaWMgb2YgKy0gMTYuICBUaGlzIGlzIHN1ZmZpY2llbnQgdG8gYXZvaWQgICAgICAgKg0KKyAqICAgICAgIG92ZXJmbG93LCBzaW5jZSB0aGUgZmluYWwgcmVzdWx0IG9mIHRoZSBzdW1tYXRpb24gaXMgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIG5lY2Vzc2FyaWx5IDwgMS4wIGFzIGJvdGggdGhlIEtbaV0gYW5kIEFscGhhIGFyZSAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgIHRoZW9yZXRpY2FsbHkgPCAxLjAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fKi8NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKw0KKyNkZWZpbmUgTSAgIDE2DQorI2RlZmluZSBOQyAgKE0vMikNCisNCit2b2lkIEluaXRfTGV2aW5zb24oDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dCAgOnN0YXRpYyBtZW1vcnkgKDE4IHdvcmRzKSAqLw0KKwkJKQ0KK3sNCisJU2V0X3plcm8obWVtLCAxOCk7ICAgICAgICAgICAgICAgICAgICAgLyogb2xkX0FbMC4uTS0xXSA9IDAsIG9sZF9yY1swLi4xXSA9IDAgKi8NCisJcmV0dXJuOw0KK30NCisNCisNCit2b2lkIExldmluc29uKA0KKwkJV29yZDE2IFJoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogUmhbTSsxXSBWZWN0b3Igb2YgYXV0b2NvcnJlbGF0aW9ucyAobXNiKSAqLw0KKwkJV29yZDE2IFJsW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogUmxbTSsxXSBWZWN0b3Igb2YgYXV0b2NvcnJlbGF0aW9ucyAobHNiKSAqLw0KKwkJV29yZDE2IEFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTEyIDogQVtNXSAgICBMUEMgY29lZmZpY2llbnRzICAobSA9IDE2KSAgICAgICAqLw0KKwkJV29yZDE2IHJjW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogcmNbTV0gICBSZWZsZWN0aW9uIGNvZWZmaWNpZW50cy4gICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDpzdGF0aWMgbWVtb3J5ICgxOCB3b3JkcykgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgICkNCit7DQorCVdvcmQzMiBpLCBqOw0KKwlXb3JkMTYgaGksIGxvOw0KKwlXb3JkMTYgS2gsIEtsOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZWZsZWN0aW9uIGNvZWZmaWNpZW50OyBoaSBhbmQgbG8gICAgICAgICAgICovDQorCVdvcmQxNiBhbHBfaCwgYWxwX2wsIGFscF9leHA7ICAgICAgICAgIC8qIFByZWRpY3Rpb24gZ2FpbjsgaGkgbG8gYW5kIGV4cG9uZW50ICAgICAgICAgKi8NCisJV29yZDE2IEFoW00gKyAxXSwgQWxbTSArIDFdOyAgICAgICAgICAgLyogTFBDIGNvZWYuIGluIGRvdWJsZSBwcmVjLiAgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgQW5oW00gKyAxXSwgQW5sW00gKyAxXTsgICAgICAgICAvKiBMUEMgY29lZi5mb3IgbmV4dCBpdGVyYXRpb24gaW4gZG91YmxlIHByZWMuICovDQorCVdvcmQzMiB0MCwgdDEsIHQyOyAgICAgICAgICAgICAgICAgICAgIC8qIHRlbXBvcmFyeSB2YXJpYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2ICpvbGRfQSwgKm9sZF9yYzsNCisNCisJLyogTGFzdCBBKHopIGZvciBjYXNlIG9mIHVuc3RhYmxlIGZpbHRlciAqLw0KKwlvbGRfQSA9IG1lbTsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJb2xkX3JjID0gbWVtICsgTTsgICAgICAgICAgICAgICAgICAgICAgDQorDQorCS8qIEsgPSBBWzFdID0gLVJbMV0gLyBSWzBdICovDQorDQorCXQxID0gKChSaFsxXSA8PCAxNikgKyAoUmxbMV0gPDwgMSkpOyAgIC8qIFJbMV0gaW4gUTMxICovDQorCXQyID0gTF9hYnModDEpOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFicyBSWzFdICAgICAgICAgKi8NCisJdDAgPSBEaXZfMzIodDIsIFJoWzBdLCBSbFswXSk7ICAgICAgICAgLyogUlsxXS9SWzBdIGluIFEzMSAqLw0KKwlpZiAodDEgPiAwKQ0KKwkJdDAgPSAtdDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAtUlsxXS9SWzBdICAgICAgICovDQorDQorCUtoID0gdDAgPj4gMTY7DQorCUtsID0gKHQwICYgMHhmZmZmKT4+MTsNCisJcmNbMF0gPSBLaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXQwID0gKHQwID4+IDQpOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFbMV0gaW4gUTI3ICAgICAgKi8NCisNCisJQWhbMV0gPSB0MCA+PiAxNjsNCisJQWxbMV0gPSAodDAgJiAweGZmZmYpPj4xOw0KKw0KKwkvKiBBbHBoYSA9IFJbMF0gKiAoMS1LKioyKSAqLw0KKwl0MCA9IE1weV8zMihLaCwgS2wsIEtoLCBLbCk7ICAgICAgICAgICAvKiBLKksgICAgICBpbiBRMzEgKi8NCisJdDAgPSBMX2Ficyh0MCk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogU29tZSBjYXNlIDwwICEhICovDQorCXQwID0gdm9fTF9zdWIoKFdvcmQzMikgMHg3ZmZmZmZmZkwsIHQwKTsgIC8qIDEgLSBLKksgIGluIFEzMSAqLw0KKw0KKwloaSA9IHQwID4+IDE2Ow0KKwlsbyA9ICh0MCAmIDB4ZmZmZik+PjE7DQorDQorCXQwID0gTXB5XzMyKFJoWzBdLCBSbFswXSwgaGksIGxvKTsgICAgIC8qIEFscGhhIGluIFEzMSAgICAqLw0KKw0KKwkvKiBOb3JtYWxpemUgQWxwaGEgKi8NCisJYWxwX2V4cCA9IG5vcm1fbCh0MCk7DQorCXQwID0gKHQwIDw8IGFscF9leHApOw0KKw0KKwlhbHBfaCA9IHQwID4+IDE2Ow0KKwlhbHBfbCA9ICh0MCAmIDB4ZmZmZik+PjE7DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIElURVJBVElPTlMgIEk9MiB0byBNICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlmb3IgKGkgPSAyOyBpIDw9IE07IGkrKykNCisJew0KKwkJLyogdDAgPSBTVU0gKCBSW2pdKkFbaS1qXSAsaj0xLGktMSApICsgIFJbaV0gKi8NCisJCXQwID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCWZvciAoaiA9IDE7IGogPCBpOyBqKyspDQorCQkJdDAgPSB2b19MX2FkZCh0MCwgTXB5XzMyKFJoW2pdLCBSbFtqXSwgQWhbaSAtIGpdLCBBbFtpIC0gal0pKTsNCisNCisJCXQwID0gdDAgPDwgNDsgICAgICAgICAgICAgICAgIC8qIHJlc3VsdCBpbiBRMjcgLT4gY29udmVydCB0byBRMzEgKi8NCisJCS8qIE5vIG92ZXJmbG93IHBvc3NpYmxlICAgICAgICAgICAgKi8NCisJCXQxID0gKChSaFtpXSA8PCAxNikgKyAoUmxbaV0gPDwgMSkpOw0KKwkJdDAgPSB2b19MX2FkZCh0MCwgdDEpOyAgICAgICAgICAgICAgICAvKiBhZGQgUltpXSBpbiBRMzEgICAgICAgICAgICAgICAgICovDQorDQorCQkvKiBLID0gLXQwIC8gQWxwaGEgKi8NCisJCXQxID0gTF9hYnModDApOw0KKwkJdDIgPSBEaXZfMzIodDEsIGFscF9oLCBhbHBfbCk7ICAgICAvKiBhYnModDApL0FscGhhICAgICAgICAgICAgICAgICAgICovDQorCQlpZiAodDAgPiAwKQ0KKwkJCXQyID0gLXQyOyAgICAgICAgICAgICAgICAgICAvKiBLID0tdDAvQWxwaGEgICAgICAgICAgICAgICAgICAgICovDQorCQl0MiA9ICh0MiA8PCBhbHBfZXhwKTsgICAgICAgICAgIC8qIGRlbm9ybWFsaXplOyBjb21wYXJlIHRvIEFscGhhICAgKi8NCisNCisJCUtoID0gdDIgPj4gMTY7DQorCQlLbCA9ICh0MiAmIDB4ZmZmZik+PjE7DQorDQorCQlyY1tpIC0gMV0gPSBLaDsgICAgICAgICAgICAgICAgICAgDQorCQkvKiBUZXN0IGZvciB1bnN0YWJsZSBmaWx0ZXIuIElmIHVuc3RhYmxlIGtlZXAgb2xkIEEoeikgKi8NCisJCWlmIChhYnNfcyhLaCkgPiAzMjc1MCkNCisJCXsNCisJCQlBWzBdID0gNDA5NjsgICAgICAgICAgICAgICAgICAgIC8qIEFpWzBdIG5vdCBzdG9yZWQgKGFsd2F5cyAxLjApICovDQorCQkJZm9yIChqID0gMDsgaiA8IE07IGorKykNCisJCQl7DQorCQkJCUFbaiArIDFdID0gb2xkX0Fbal07ICAgICAgIA0KKwkJCX0NCisJCQlyY1swXSA9IG9sZF9yY1swXTsgICAgICAgICAgICAgLyogb25seSB0d28gcmMgY29lZmZpY2llbnRzIGFyZSBuZWVkZWQgKi8NCisJCQlyY1sxXSA9IG9sZF9yY1sxXTsNCisJCQlyZXR1cm47DQorCQl9DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqICBDb21wdXRlIG5ldyBMUEMgY29lZmYuIC0+IEFuW2ldICAgICAgICAgKg0KKwkJICogIEFuW2pdPSBBW2pdICsgSypBW2ktal0gICAgICwgaj0xIHRvIGktMSAqDQorCQkgKiAgQW5baV09IEsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCWZvciAoaiA9IDE7IGogPCBpOyBqKyspDQorCQl7DQorCQkJdDAgPSBNcHlfMzIoS2gsIEtsLCBBaFtpIC0gal0sIEFsW2kgLSBqXSk7DQorCQkJdDAgPSB2b19MX2FkZCh0MCwgKChBaFtqXSA8PCAxNikgKyAoQWxbal0gPDwgMSkpKTsNCisJCQlBbmhbal0gPSB0MCA+PiAxNjsNCisJCQlBbmxbal0gPSAodDAgJiAweGZmZmYpPj4xOw0KKwkJfQ0KKwkJdDIgPSAodDIgPj4gNCk7ICAgICAgICAgICAgICAgICAvKiB0MiA9IEsgaW4gUTMxIC0+Y29udmVydCB0byBRMjcgICovDQorDQorCQlWT19MX0V4dHJhY3QodDIsICZBbmhbaV0sICZBbmxbaV0pOyAgIC8qIEFuW2ldIGluIFEyNyAgICAgICAgICAgICAgICAgICAgKi8NCisNCisJCS8qIEFscGhhID0gQWxwaGEgKiAoMS1LKioyKSAqLw0KKwkJdDAgPSBNcHlfMzIoS2gsIEtsLCBLaCwgS2wpOyAgICAgICAgICAgICAgIC8qIEsqSyAgICAgIGluIFEzMSAqLw0KKwkJdDAgPSBMX2Ficyh0MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNvbWUgY2FzZSA8MCAhISAqLw0KKwkJdDAgPSB2b19MX3N1YigoV29yZDMyKSAweDdmZmZmZmZmTCwgdDApOyAgIC8qIDEgLSBLKksgIGluIFEzMSAqLw0KKwkJaGkgPSB0MCA+PiAxNjsNCisJCWxvID0gKHQwICYgMHhmZmZmKT4+MTsNCisJCXQwID0gTXB5XzMyKGFscF9oLCBhbHBfbCwgaGksIGxvKTsgLyogQWxwaGEgaW4gUTMxICAgICovDQorDQorCQkvKiBOb3JtYWxpemUgQWxwaGEgKi8NCisJCWogPSBub3JtX2wodDApOw0KKwkJdDAgPSAodDAgPDwgaik7DQorCQlhbHBfaCA9IHQwID4+IDE2Ow0KKwkJYWxwX2wgPSAodDAgJiAweGZmZmYpPj4xOw0KKwkJYWxwX2V4cCArPSBqOyAgICAgICAgIC8qIEFkZCBub3JtYWxpemF0aW9uIHRvIGFscF9leHAgKi8NCisNCisJCS8qIEFbal0gPSBBbltqXSAqLw0KKwkJZm9yIChqID0gMTsgaiA8PSBpOyBqKyspDQorCQl7DQorCQkJQWhbal0gPSBBbmhbal07ICAgICAgICAgICAgICAgDQorCQkJQWxbal0gPSBBbmxbal07ICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorCS8qIFRydW5jYXRlIEFbaV0gaW4gUTI3IHRvIFExMiB3aXRoIHJvdW5kaW5nICovDQorCUFbMF0gPSA0MDk2OyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDE7IGkgPD0gTTsgaSsrKQ0KKwl7DQorCQl0MCA9IChBaFtpXSA8PCAxNikgKyAoQWxbaV0gPDwgMSk7DQorCQlvbGRfQVtpIC0gMV0gPSBBW2ldID0gdm9fcm91bmQoKHQwIDw8IDEpKTsgICAgICANCisJfQ0KKwlvbGRfcmNbMF0gPSByY1swXTsgICAgICAgICAgICAgICAgICAgIA0KKwlvbGRfcmNbMV0gPSByY1sxXTsgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbG9nMi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9sb2cyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QzZDgxNQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbG9nMi5jCkBAIC0wLDAgKzEsMTExIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBGaWxlICAgICAgICAgICAgIDogbG9nMi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBQdXJwb3NlICAgICAgICAgIDogQ29tcHV0ZXMgbG9nMihMX3gpICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAibG9nMi5oIg0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgSU5DTFVERSBGSUxFUw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgIExPQ0FMIFZBUklBQkxFUyBBTkQgVEFCTEVTDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAibG9nMl90YWIuaCIgICAgIC8qIFRhYmxlIGZvciBMb2cyKCkgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgRlVOQ1RJT046ICAgTG9nMl9ub3JtKCkNCisqDQorKiAgIFBVUlBPU0U6ICAgQ29tcHV0ZXMgbG9nMihMX3gsIGV4cCksICB3aGVyZSAgIExfeCBpcyBwb3NpdGl2ZSBhbmQNCisqICAgICAgICAgICAgICBub3JtYWxpemVkLCBhbmQgZXhwIGlzIHRoZSBub3JtYWxpc2F0aW9uIGV4cG9uZW50DQorKiAgICAgICAgICAgICAgSWYgTF94IGlzIG5lZ2F0aXZlIG9yIHplcm8sIHRoZSByZXN1bHQgaXMgMC4NCisqDQorKiAgIERFU0NSSVBUSU9OOg0KKyogICAgICAgIFRoZSBmdW5jdGlvbiBMb2cyKExfeCkgaXMgYXBwcm94aW1hdGVkIGJ5IGEgdGFibGUgYW5kIGxpbmVhcg0KKyogICAgICAgIGludGVycG9sYXRpb24uIFRoZSBmb2xsb3dpbmcgc3RlcHMgYXJlIHVzZWQgdG8gY29tcHV0ZSBMb2cyKExfeCkNCisqDQorKiAgICAgICAgICAgMS0gZXhwb25lbnQgPSAzMC1ub3JtX2V4cG9uZW50DQorKiAgICAgICAgICAgMi0gaSA9IGJpdDI1LWIzMSBvZiBMX3g7ICAzMjw9aTw9NjMgIChiZWNhdXNlIG9mIG5vcm1hbGl6YXRpb24pLg0KKyogICAgICAgICAgIDMtIGEgPSBiaXQxMC1iMjQNCisqICAgICAgICAgICA0LSBpIC09MzINCisqICAgICAgICAgICA1LSBmcmFjdGlvbiA9IHRhYmxlW2ldPDwxNiAtICh0YWJsZVtpXSAtIHRhYmxlW2krMV0pICogYSAqIDINCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIExvZzJfbm9ybSAoDQorCQlXb3JkMzIgTF94LCAgICAgICAgIC8qIChpKSA6IGlucHV0IHZhbHVlIChub3JtYWxpemVkKSAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBleHAsICAgICAgICAgLyogKGkpIDogbm9ybV9sIChMX3gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICpleHBvbmVudCwgICAvKiAobykgOiBJbnRlZ2VyIHBhcnQgb2YgTG9nMi4gICAocmFuZ2U6IDA8PXZhbDw9MzApICovDQorCQlXb3JkMTYgKmZyYWN0aW9uICAgIC8qIChvKSA6IEZyYWN0aW9uYWwgcGFydCBvZiBMb2cyLiAocmFuZ2U6IDA8PXZhbDwxKSAgKi8NCisJICAgICAgICkNCit7DQorCVdvcmQxNiBpLCBhLCB0bXA7DQorCVdvcmQzMiBMX3k7DQorCWlmIChMX3ggPD0gKFdvcmQzMikgMCkNCisJew0KKwkJKmV4cG9uZW50ID0gMDsgDQorCQkqZnJhY3Rpb24gPSAwOyANCisJCXJldHVybjsNCisJfQ0KKwkqZXhwb25lbnQgPSAoMzAgLSBleHApOyANCisJTF94ID0gKExfeCA+PiA5KTsNCisJaSA9IGV4dHJhY3RfaCAoTF94KTsgICAgICAgICAgICAgICAgLyogRXh0cmFjdCBiMjUtYjMxICovDQorCUxfeCA9IChMX3ggPj4gMSk7DQorCWEgPSAoV29yZDE2KShMX3gpOyAgICAgICAgICAgICAgICAvKiBFeHRyYWN0IGIxMC1iMjQgb2YgZnJhY3Rpb24gKi8NCisJYSA9IChXb3JkMTYpKGEgJiAoV29yZDE2KTB4N2ZmZik7DQorCWkgLT0gMzI7DQorCUxfeSA9IExfZGVwb3NpdF9oICh0YWJsZVtpXSk7ICAgICAgIC8qIHRhYmxlW2ldIDw8IDE2ICAgICAgICAqLw0KKwl0bXAgPSB2b19zdWIodGFibGVbaV0sIHRhYmxlW2kgKyAxXSk7IC8qIHRhYmxlW2ldIC0gdGFibGVbaSsxXSAqLw0KKwlMX3kgPSB2b19MX21zdSAoTF95LCB0bXAsIGEpOyAgICAgICAgICAvKiBMX3kgLT0gdG1wKmEqMiAgICAgICAgKi8NCisJKmZyYWN0aW9uID0gZXh0cmFjdF9oIChMX3kpOyANCisNCisJcmV0dXJuOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgRlVOQ1RJT046ICAgTG9nMigpDQorKg0KKyogICBQVVJQT1NFOiAgIENvbXB1dGVzIGxvZzIoTF94KSwgIHdoZXJlICAgTF94IGlzIHBvc2l0aXZlLg0KKyogICAgICAgICAgICAgIElmIExfeCBpcyBuZWdhdGl2ZSBvciB6ZXJvLCB0aGUgcmVzdWx0IGlzIDAuDQorKg0KKyogICBERVNDUklQVElPTjoNCisqICAgICAgICBub3JtYWxpemVzIExfeCBhbmQgdGhlbiBjYWxscyBMb2cyX25vcm0oKS4NCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIExvZzIgKA0KKwkJV29yZDMyIExfeCwgICAgICAgICAvKiAoaSkgOiBpbnB1dCB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKmV4cG9uZW50LCAgIC8qIChvKSA6IEludGVnZXIgcGFydCBvZiBMb2cyLiAgIChyYW5nZTogMDw9dmFsPD0zMCkgKi8NCisJCVdvcmQxNiAqZnJhY3Rpb24gICAgLyogKG8pIDogRnJhY3Rpb25hbCBwYXJ0IG9mIExvZzIuIChyYW5nZTogMDw9dmFsPDEpICovDQorCSAgKQ0KK3sNCisJV29yZDE2IGV4cDsNCisNCisJZXhwID0gbm9ybV9sKExfeCk7DQorCUxvZzJfbm9ybSAoKExfeCA8PCBleHApLCBleHAsIGV4cG9uZW50LCBmcmFjdGlvbik7DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbHBfZGVjMi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9scF9kZWMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNiNzQ2YgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbHBfZGVjMi5jCkBAIC0wLDAgKzEsNzAgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiBscF9kZWMyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKglEZXNjcmlwdGlvbjpEZWNpbWF0ZSBhIHZlY3RvciBieSAyIHdpdGggMm5kIG9yZGVyIGZpciBmaWx0ZXIgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisNCisjZGVmaW5lIExfRklSICA1DQorI2RlZmluZSBMX01FTSAgKExfRklSLTIpDQorDQorLyogc3RhdGljIGZsb2F0IGhfZmlyW0xfRklSXSA9IHswLjEzLCAwLjIzLCAwLjI4LCAwLjIzLCAwLjEzfTsgKi8NCisvKiBmaXhlZC1wb2ludDogc3VtIG9mIGNvZWYgPSAzMjc2NyB0byBhdm9pZCBvdmVyZmxvdyBvbiBEQyAqLw0KK3N0YXRpYyBXb3JkMTYgaF9maXJbTF9GSVJdID0gezQyNjAsIDc1MzYsIDkxNzUsIDc1MzYsIDQyNjB9Ow0KKw0KK3ZvaWQgTFBfRGVjaW0yKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IHNpZ25hbCB0byBwcm9jZXNzICAgICAgICAgKi8NCisJCVdvcmQxNiBsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogbWVtb3J5IChzaXplPTMpICAgICAgICAgICAqLw0KKwkgICAgICApDQorew0KKwlXb3JkMTYgKnBfeCwgeF9idWZbTF9GUkFNRSArIExfTUVNXTsNCisJV29yZDMyIGksIGo7DQorCVdvcmQzMiBMX3RtcDsNCisJLyogY29weSBpbml0aWFsIGZpbHRlciBzdGF0ZXMgaW50byBidWZmZXIgKi8NCisJcF94ID0geF9idWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDA7IGkgPCBMX01FTTsgaSsrKQ0KKwl7DQorCQkqcF94KysgPSBtZW1baV07ICANCisJCW1lbVtpXSA9IHhbbCAtIExfTUVNICsgaV07ICANCisJfQ0KKwlmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKQ0KKwl7DQorCQkqcF94KysgPSB4W2ldOyAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWZvciAoaSA9IDAsIGogPSAwOyBpIDwgbDsgaSArPSAyLCBqKyspDQorCXsNCisJCXBfeCA9ICZ4X2J1ZltpXTsgIA0KKwkJTF90bXAgID0gKCgqcF94KyspICogaF9maXJbMF0pOw0KKwkJTF90bXAgKz0gKCgqcF94KyspICogaF9maXJbMV0pOw0KKwkJTF90bXAgKz0gKCgqcF94KyspICogaF9maXJbMl0pOw0KKwkJTF90bXAgKz0gKCgqcF94KyspICogaF9maXJbM10pOw0KKwkJTF90bXAgKz0gKCgqcF94KyspICogaF9maXJbNF0pOw0KKwkJeFtqXSA9IChMX3RtcCArIDB4NDAwMCk+PjE1OyAgICAgICAgICAgICAgDQorCX0NCisJcmV0dXJuOw0KK30NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL21hdGhfb3AuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbWF0aF9vcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOTVlZDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL21hdGhfb3AuYwpAQCAtMCwwICsxLDIxOSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgVGhpcyBmaWxlIGNvbnRhaW5zIG1hdGhlbWF0aWMgb3BlcmF0aW9ucyBpbiBmaXhlZCBwb2ludC4gICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgIElzcXJ0KCkgICAgICAgICAgICAgIDogaW52ZXJzZSBzcXVhcmUgcm9vdCAoMTYgYml0cyBwcmVjaXNpb24pLiAgICAgICAgICB8DQorfCAgUG93MigpICAgICAgICAgICAgICAgOiAyXnggICgxNiBiaXRzIHByZWNpc2lvbikuICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICBMb2cyKCkgICAgICAgICAgICAgICA6IGxvZzIgKDE2IGJpdHMgcHJlY2lzaW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgIERvdF9wcm9kdWN0KCkgICAgICAgIDogc2NhbGFyIHByb2R1Y3Qgb2YgPHhbXSx5W10+ICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICBUaGVzZSBvcGVyYXRpb25zIGFyZSBub3Qgc3RhbmRhcmQgZG91YmxlIHByZWNpc2lvbiBvcGVyYXRpb25zLiAgICAgICAgICAgfA0KK3wgIFRoZXkgYXJlIHVzZWQgd2hlcmUgbG93IGNvbXBsZXhpdHkgaXMgaW1wb3J0YW50IGFuZCB0aGUgZnVsbCAzMiBiaXRzICAgICB8DQorfCAgcHJlY2lzaW9uIGlzIG5vdCBuZWNlc3NhcnkuIEZvciBleGFtcGxlLCB0aGUgZnVuY3Rpb24gRGl2XzMyKCkgaGFzIGEgICAgIHwNCit8ICAyNCBiaXRzIHByZWNpc2lvbiB3aGljaCBpcyBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4gICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgSW4gdGhpcyBmaWxlLCB0aGUgdmFsdWVzIHVzZSB0aGVzZXMgcmVwcmVzZW50YXRpb25zOiAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgIFdvcmQzMiBMXzMyICAgICA6IHN0YW5kYXJkIHNpZ25lZCAzMiBiaXRzIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgV29yZDE2IGhpLCBsbyAgIDogTF8zMiA9IGhpPDwxNiArIGxvPDwxICAoRFBGIC0gRG91YmxlIFByZWNpc2lvbiBGb3JtYXQpIHwNCit8ICBXb3JkMzIgZnJhYywgV29yZDE2IGV4cCA6IExfMzIgPSBmcmFjIDw8IGV4cC0zMSAgKG5vcm1hbGlzZWQgZm9ybWF0KSAgICAgfA0KK3wgIFdvcmQxNiBpbnQsIGZyYWMgICAgICAgIDogTF8zMiA9IGludC5mcmFjICAgICAgICAoZnJhY3Rpb25hbCBmb3JtYXQpICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm1hdGhfb3AuaCINCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBJc3FydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgQ29tcHV0ZSAxL3NxcnQoTF94KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICBpZiBMX3ggaXMgbmVnYXRpdmUgb3IgemVybywgcmVzdWx0IGlzIDEgKDdmZmZmZmZmKS4gICAgICAgICAgICAgICAgIHwNCit8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KK3wgIEFsZ29yaXRobTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgMS0gTm9ybWFsaXphdGlvbiBvZiBMX3guICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAyLSBjYWxsIElzcXJ0X24oTF94LCBleHBvbmFudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIDMtIExfeSA9IExfeCA8PCBleHBvbmFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorV29yZDMyIElzcXJ0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMzEgOiBvdXRwdXQgdmFsdWUgKHJhbmdlOiAwPD12YWw8MSkgICAgICAgICAqLw0KKwkJV29yZDMyIExfeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogaW5wdXQgdmFsdWUgIChyYW5nZTogMDw9dmFsPD03ZmZmZmZmZikgKi8NCisJICAgICkNCit7DQorCVdvcmQxNiBleHA7DQorCVdvcmQzMiBMX3k7DQorCWV4cCA9IG5vcm1fbChMX3gpOw0KKwlMX3ggPSAoTF94IDw8IGV4cCk7ICAgICAgICAgICAgICAgICAvKiBMX3ggaXMgbm9ybWFsaXplZCAqLw0KKwlleHAgPSAoMzEgLSBleHApOw0KKwlJc3FydF9uKCZMX3gsICZleHApOw0KKwlMX3kgPSAoTF94IDw8IGV4cCk7ICAgICAgICAgICAgICAgICAvKiBkZW5vcm1hbGl6YXRpb24gICAqLw0KKwlyZXR1cm4gKExfeSk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IElzcXJ0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICBDb21wdXRlIDEvc3FydCh2YWx1ZSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgIGlmIHZhbHVlIGlzIG5lZ2F0aXZlIG9yIHplcm8sIHJlc3VsdCBpcyAxIChmcmFjPTdmZmZmZmZmLCBleHA9MCkuICAgfA0KK3wtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQorfCAgQWxnb3JpdGhtOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBUaGUgZnVuY3Rpb24gMS9zcXJ0KHZhbHVlKSBpcyBhcHByb3hpbWF0ZWQgYnkgYSB0YWJsZSBhbmQgbGluZWFyICAgICAgICB8DQorfCAgIGludGVycG9sYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAxLSBJZiBleHBvbmFudCBpcyBvZGQgdGhlbiBzaGlmdCBmcmFjdGlvbiByaWdodCBvbmNlLiAgICAgICAgICAgICAgICAgICB8DQorfCAgIDItIGV4cG9uYW50ID0gLSgoZXhwb25hbnQtMSk+PjEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgMy0gaSA9IGJpdDI1LWIzMCBvZiBmcmFjdGlvbiwgMTYgPD0gaSA8PSA2MyAtPmJlY2F1c2Ugb2Ygbm9ybWFsaXphdGlvbi4gfA0KK3wgICA0LSBhID0gYml0MTAtYjI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIDUtIGkgLT0xNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgNi0gZnJhY3Rpb24gPSB0YWJsZVtpXTw8MTYgLSAodGFibGVbaV0gLSB0YWJsZVtpKzFdKSAqIGEgKiAyICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCitzdGF0aWMgV29yZDE2IHRhYmxlX2lzcXJ0WzQ5XSA9DQorew0KKwkzMjc2NywgMzE3OTAsIDMwODk0LCAzMDA3MCwgMjkzMDksIDI4NjAyLCAyNzk0NSwgMjczMzAsIDI2NzU1LCAyNjIxNCwNCisJMjU3MDUsIDI1MjI1LCAyNDc3MCwgMjQzMzksIDIzOTMwLCAyMzU0MSwgMjMxNzAsIDIyODE3LCAyMjQ3OSwgMjIxNTUsDQorCTIxODQ1LCAyMTU0OCwgMjEyNjMsIDIwOTg4LCAyMDcyNCwgMjA0NzAsIDIwMjI1LCAxOTk4OCwgMTk3NjAsIDE5NTM5LA0KKwkxOTMyNiwgMTkxMTksIDE4OTE5LCAxODcyNSwgMTg1MzYsIDE4MzU0LCAxODE3NiwgMTgwMDQsIDE3ODM3LCAxNzY3NCwNCisJMTc1MTUsIDE3MzYxLCAxNzIxMSwgMTcwNjQsIDE2OTIxLCAxNjc4MiwgMTY2NDYsIDE2NTE0LCAxNjM4NA0KK307DQorDQordm9pZCBJc3FydF9uKA0KKwkJV29yZDMyICogZnJhYywgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSBRMzE6IG5vcm1hbGl6ZWQgdmFsdWUgKDEuMCA8IGZyYWMgPD0gMC41KSAqLw0KKwkJV29yZDE2ICogZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgICA6IGV4cG9uZW50ICh2YWx1ZSA9IGZyYWMgeCAyXmV4cG9uZW50KSAqLw0KKwkgICAgKQ0KK3sNCisJV29yZDE2IGksIGEsIHRtcDsNCisNCisJaWYgKCpmcmFjIDw9IChXb3JkMzIpIDApDQorCXsNCisJCSpleHAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQkqZnJhYyA9IDB4N2ZmZmZmZmZMOyAgICAgICAgICAgICAgIA0KKwkJcmV0dXJuOw0KKwl9DQorDQorCWlmKCgqZXhwICYgMSkgPT0gMSkgICAgICAgICAgICAgICAgICAgICAgIC8qSWYgZXhwb25hbnQgb2RkIC0+IHNoaWZ0IHJpZ2h0ICovDQorCQkqZnJhYyA9ICgqZnJhYykgPj4gMTsNCisNCisJKmV4cCA9IG5lZ2F0ZSgoKmV4cCAtIDEpID4+IDEpOyAgIA0KKw0KKwkqZnJhYyA9ICgqZnJhYyA+PiA5KTsgICAgICAgICAgICAgICANCisJaSA9IGV4dHJhY3RfaCgqZnJhYyk7ICAgICAgICAgICAgICAgICAgLyogRXh0cmFjdCBiMjUtYjMxICovDQorCSpmcmFjID0gKCpmcmFjID4+IDEpOyAgICAgICAgICAgICAgDQorCWEgPSAoV29yZDE2KSgqZnJhYyk7ICAgICAgICAgICAgICAgICAgLyogRXh0cmFjdCBiMTAtYjI0ICovDQorCWEgPSAoV29yZDE2KSAoYSAmIChXb3JkMTYpIDB4N2ZmZik7ICAgIA0KKwlpIC09IDE2Ow0KKwkqZnJhYyA9IExfZGVwb3NpdF9oKHRhYmxlX2lzcXJ0W2ldKTsgICAvKiB0YWJsZVtpXSA8PCAxNiAgICAgICAgICovDQorCXRtcCA9IHZvX3N1Yih0YWJsZV9pc3FydFtpXSwgdGFibGVfaXNxcnRbaSArIDFdKTsgICAgICAvKiB0YWJsZVtpXSAtIHRhYmxlW2krMV0pICovDQorCSpmcmFjID0gdm9fTF9tc3UoKmZyYWMsIHRtcCwgYSk7ICAgICAgICAgIC8qIGZyYWMgLT0gIHRtcCphKjIgICAgICAgKi8NCisNCisJcmV0dXJuOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBQb3cyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgIExfeCA9IHBvdygyLjAsIGV4cG9uYW50LmZyYWN0aW9uKSAgICAgICAgIChleHBvbmFudCA9IGludGVyZ2VyIHBhcnQpICB8DQorfCAgICAgICAgID0gcG93KDIuMCwgMC5mcmFjdGlvbikgPDwgZXhwb25hbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KK3wgIEFsZ29yaXRobTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgVGhlIGZ1bmN0aW9uIFBvdzIoTF94KSBpcyBhcHByb3hpbWF0ZWQgYnkgYSB0YWJsZSBhbmQgbGluZWFyICAgICAgICAgICAgfA0KK3wgICBpbnRlcnBvbGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgMS0gaSA9IGJpdDEwLWIxNSBvZiBmcmFjdGlvbiwgICAwIDw9IGkgPD0gMzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAyLSBhID0gYml0MC1iOSAgIG9mIGZyYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIDMtIExfeCA9IHRhYmxlW2ldPDwxNiAtICh0YWJsZVtpXSAtIHRhYmxlW2krMV0pICogYSAqIDIgICAgICAgICAgICAgICAgIHwNCit8ICAgNC0gTF94ID0gTF94ID4+ICgzMC1leHBvbmFudCkgICAgICh3aXRoIHJvdW5kaW5nKSAgICAgICAgICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCitzdGF0aWMgV29yZDE2IHRhYmxlX3BvdzJbMzNdID0NCit7DQorCTE2Mzg0LCAxNjc0MywgMTcxMDksIDE3NDg0LCAxNzg2NywgMTgyNTgsIDE4NjU4LCAxOTA2NiwgMTk0ODQsIDE5OTExLA0KKwkyMDM0NywgMjA3OTIsIDIxMjQ3LCAyMTcxMywgMjIxODgsIDIyNjc0LCAyMzE3MCwgMjM2NzgsIDI0MTk2LCAyNDcyNiwNCisJMjUyNjgsIDI1ODIxLCAyNjM4NiwgMjY5NjQsIDI3NTU0LCAyODE1OCwgMjg3NzQsIDI5NDA1LCAzMDA0OCwgMzA3MDYsDQorCTMxMzc5LCAzMjA2NiwgMzI3NjcNCit9Ow0KKw0KK1dvcmQzMiBQb3cyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTAgIDogcmVzdWx0ICAgICAgIChyYW5nZTogMDw9dmFsPD0weDdmZmZmZmZmKSAqLw0KKwkJV29yZDE2IGV4cG9uYW50LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogSW50ZWdlciBwYXJ0LiAgICAgIChyYW5nZTogMDw9dmFsPD0zMCkgICAqLw0KKwkJV29yZDE2IGZyYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogRnJhY3Rpb25uYWwgcGFydC4gIChyYW5nZTogMC4wPD12YWw8MS4wKSAqLw0KKwkgICApDQorew0KKwlXb3JkMTYgZXhwLCBpLCBhLCB0bXA7DQorCVdvcmQzMiBMX3g7DQorDQorCUxfeCA9IHZvX0xfbXVsdChmcmFjdGlvbiwgMzIpOyAgICAgICAgICAgIC8qIExfeCA9IGZyYWN0aW9uPDw2ICAgICAgICAgICAqLw0KKwlpID0gZXh0cmFjdF9oKExfeCk7ICAgICAgICAgICAgICAgICAgICAvKiBFeHRyYWN0IGIxMC1iMTYgb2YgZnJhY3Rpb24gKi8NCisJTF94ID1MX3ggPj4gMTsNCisJYSA9IChXb3JkMTYpKExfeCk7ICAgICAgICAgICAgICAgICAgICAvKiBFeHRyYWN0IGIwLWI5ICAgb2YgZnJhY3Rpb24gKi8NCisJYSA9IChXb3JkMTYpIChhICYgKFdvcmQxNikgMHg3ZmZmKTsgDQorDQorCUxfeCA9IExfZGVwb3NpdF9oKHRhYmxlX3BvdzJbaV0pOyAgICAgIC8qIHRhYmxlW2ldIDw8IDE2ICAgICAgICAqLw0KKwl0bXAgPSB2b19zdWIodGFibGVfcG93MltpXSwgdGFibGVfcG93MltpICsgMV0pOyAgICAgICAgLyogdGFibGVbaV0gLSB0YWJsZVtpKzFdICovDQorCUxfeCAtPSAodG1wICogYSk8PDE7ICAgICAgICAgICAgICAvKiBMX3ggLT0gdG1wKmEqMiAgICAgICAgKi8NCisNCisJZXhwID0gdm9fc3ViKDMwLCBleHBvbmFudCk7DQorCUxfeCA9IHZvX0xfc2hyX3IoTF94LCBleHApOw0KKw0KKwlyZXR1cm4gKExfeCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IERvdF9wcm9kdWN0MTIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICBDb21wdXRlIHNjYWxhciBwcm9kdWN0IG9mIDx4W10seVtdPiB1c2luZyBhY2N1bXVsYXRvci4gICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgVGhlIHJlc3VsdCBpcyBub3JtYWxpemVkIChpbiBRMzEpIHdpdGggZXhwb25lbnQgKDAuLjMwKS4gICAgICAgICAgICB8DQorfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCit8ICBBbGdvcml0aG06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICBkb3RfcHJvZHVjdCA9IHN1bSh4W2ldKnlbaV0pICAgICBpPTAuLk4tMSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorV29yZDMyIERvdF9wcm9kdWN0MTIoICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMzE6IG5vcm1hbGl6ZWQgcmVzdWx0ICgxIDwgdmFsIDw9IC0xKSAqLw0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgMTJiaXRzOiB4IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDEyYml0czogeSB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICA6IHZlY3RvciBsZW5ndGggICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgOiBleHBvbmVudCBvZiByZXN1bHQgKDAuLiszMCkgICAgICAgKi8NCisJCSkNCit7DQorCVdvcmQxNiBzZnQ7DQorCVdvcmQzMiBpLCBMX3N1bTsNCisJTF9zdW0gPSAwOw0KKwlmb3IgKGkgPSAwOyBpIDwgbGc7IGkrKykNCisJew0KKwkJTF9zdW0gKz0geFtpXSAqIHlbaV07DQorCX0NCisJTF9zdW0gPSAoTF9zdW0gPDwgMSkgKyAxOw0KKwkvKiBOb3JtYWxpemUgYWNjIGluIFEzMSAqLw0KKwlzZnQgPSBub3JtX2woTF9zdW0pOw0KKwlMX3N1bSA9IExfc3VtIDw8IHNmdDsNCisJKmV4cCA9IDMwIC0gc2Z0OyAgICAgICAgICAgIC8qIGV4cG9uZW50ID0gMC4uMzAgKi8NCisJcmV0dXJuIChMX3N1bSk7DQorDQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbWVtX2FsaWduLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL21lbV9hbGlnbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ODkxNWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL21lbV9hbGlnbi5jCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCisgKioKKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKioKKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKioKKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwlGaWxlOgkJbWVtX2FsaWduLmMKKworCUNvbnRlbnQ6CU1lbW9yeSBhbGxvYyBhbGlnbm1lbnRzIGZ1bmN0aW9ucworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlCSJtZW1fYWxpZ24uaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IG1lbV9tYWxsb2MKKyogZGVzY3JpcHRpb246ICBtYWxsb2MgdGhlIGFsaWdubWVudHMgbWVtb3J5IAorKiByZXR1cm5zOiAgICAgIHRoZSBwb2ludCBvZiB0aGUgbWVtb3J5CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCAqCittZW1fbWFsbG9jKFZPX01FTV9PUEVSQVRPUiAqcE1lbW9wLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgY2hhciBhbGlnbm1lbnQsIHVuc2lnbmVkIGludCBDb2RlY0lEKQoreworCWludCByZXQ7CisJdW5zaWduZWQgY2hhciAqbWVtX3B0cjsKKwlWT19NRU1fSU5GTyBNZW1JbmZvOworCisJaWYgKCFhbGlnbm1lbnQpIHsKKworCQlNZW1JbmZvLkZsYWcgPSAwOworCQlNZW1JbmZvLlNpemUgPSBzaXplICsgMTsKKwkJcmV0ID0gcE1lbW9wLT5BbGxvYyhDb2RlY0lELCAmTWVtSW5mbyk7CisJCWlmKHJldCAhPSAwKQorCQkJcmV0dXJuIDA7CisJCW1lbV9wdHIgPSAodW5zaWduZWQgY2hhciAqKU1lbUluZm8uVkJ1ZmZlcjsKKworCQlwTWVtb3AtPlNldChDb2RlY0lELCBtZW1fcHRyLCAwLCBzaXplICsgMSk7CisKKwkJKm1lbV9wdHIgPSAodW5zaWduZWQgY2hhcikxOworCisJCXJldHVybiAoKHZvaWQgKikobWVtX3B0cisxKSk7CisJfSBlbHNlIHsKKwkJdW5zaWduZWQgY2hhciAqdG1wOworCisJCU1lbUluZm8uRmxhZyA9IDA7CisJCU1lbUluZm8uU2l6ZSA9IHNpemUgKyBhbGlnbm1lbnQ7CisJCXJldCA9IHBNZW1vcC0+QWxsb2MoQ29kZWNJRCwgJk1lbUluZm8pOworCQlpZihyZXQgIT0gMCkKKwkJCXJldHVybiAwOworCisJCXRtcCA9ICh1bnNpZ25lZCBjaGFyICopTWVtSW5mby5WQnVmZmVyOworCisJCXBNZW1vcC0+U2V0KENvZGVjSUQsIHRtcCwgMCwgc2l6ZSArIGFsaWdubWVudCk7CisKKwkJbWVtX3B0ciA9CisJCQkodW5zaWduZWQgY2hhciAqKSAoKHVuc2lnbmVkIGludCkgKHRtcCArIGFsaWdubWVudCAtIDEpICYKKwkJCQkJKH4oKHVuc2lnbmVkIGludCkgKGFsaWdubWVudCAtIDEpKSkpOworCisJCWlmIChtZW1fcHRyID09IHRtcCkKKwkJCW1lbV9wdHIgKz0gYWxpZ25tZW50OworCisJCSoobWVtX3B0ciAtIDEpID0gKHVuc2lnbmVkIGNoYXIpIChtZW1fcHRyIC0gdG1wKTsKKworCQlyZXR1cm4gKCh2b2lkICopbWVtX3B0cik7CisJfQorCisJcmV0dXJuKDApOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBtZW1fZnJlZQorKiBkZXNjcmlwdGlvbjogIGZyZWUgdGhlIG1lbW9yeQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQKK21lbV9mcmVlKFZPX01FTV9PUEVSQVRPUiAqcE1lbW9wLCB2b2lkICptZW1fcHRyLCB1bnNpZ25lZCBpbnQgQ29kZWNJRCkKK3sKKworCXVuc2lnbmVkIGNoYXIgKnB0cjsKKworCWlmIChtZW1fcHRyID09IDApCisJCXJldHVybjsKKworCXB0ciA9IG1lbV9wdHI7CisKKwlwdHIgLT0gKihwdHIgLSAxKTsKKworCXBNZW1vcC0+RnJlZShDb2RlY0lELCBwdHIpOworfQorCisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9vcGVyXzMyYi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9vcGVyXzMyYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMTUyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL29wZXJfMzJiLmMKQEAgLTAsMCArMSwyMjMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogIFRoaXMgZmlsZSBjb250YWlucyBvcGVyYXRpb25zIGluIGRvdWJsZSBwcmVjaXNpb24uICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIFRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzdGFuZGFyZCBkb3VibGUgcHJlY2lzaW9uIG9wZXJhdGlvbnMuICAgICAgICAgICAqDQorICogIFRoZXkgYXJlIHVzZWQgd2hlcmUgc2luZ2xlIHByZWNpc2lvbiBpcyBub3QgZW5vdWdoIGJ1dCB0aGUgZnVsbCAzMiBiaXRzICAqDQorICogIHByZWNpc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiBGb3IgZXhhbXBsZSwgdGhlIGZ1bmN0aW9uIERpdl8zMigpIGhhcyBhICAgICAqDQorICogIDI0IGJpdHMgcHJlY2lzaW9uIHdoaWNoIGlzIGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzLiAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIFRoZSBkb3VibGUgcHJlY2lzaW9uIG51bWJlcnMgdXNlIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbjogICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIExfMzIgPSBoaTw8MTYgKyBsbzw8MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIExfMzIgaXMgYSAzMiBiaXQgaW50ZWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIGhpIGFuZCBsbyBhcmUgMTYgYml0IHNpZ25lZCBpbnRlZ2Vycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIEFzIHRoZSBsb3cgcGFydCBhbHNvIGNvbnRhaW5zIHRoZSBzaWduLCB0aGlzIGFsbG93cyBmYXN0IG11bHRpcGxpY2F0aW9uLiAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAweDgwMDAgMDAwMCA8PSBMXzMyIDw9IDB4N2ZmZiBmZmZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIFdlIHdpbGwgdXNlIERQRiAoRG91YmxlIFByZWNpc2lvbiBGb3JtYXQgKWluIHRoaXMgZmlsZSB0byBzcGVjaWZ5ICAgICAgICAqDQorICogIHRoaXMgc3BlY2lhbCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBGdW5jdGlvbiBMX0V4dHJhY3QoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBFeHRyYWN0IGZyb20gYSAzMiBiaXQgaW50ZWdlciB0d28gMTYgYml0IERQRi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBBcmd1bWVudHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgTF8zMiAgICAgIDogMzIgYml0IGludGVnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgMHg4MDAwIDAwMDAgPD0gTF8zMiA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgaGkgICAgICAgIDogYjE2IHRvIGIzMSBvZiBMXzMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgbG8gICAgICAgIDogKExfMzIgLSBoaTw8MTYpPj4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyovDQorDQorX19pbmxpbmUgdm9pZCBWT19MX0V4dHJhY3QgKFdvcmQzMiBMXzMyLCBXb3JkMTYgKmhpLCBXb3JkMTYgKmxvKQ0KK3sNCisJKmhpID0gKFdvcmQxNikoTF8zMiA+PiAxNik7DQorCSpsbyA9IChXb3JkMTYpKChMXzMyICYgMHhmZmZmKSA+PiAxKTsNCisJcmV0dXJuOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgRnVuY3Rpb24gTF9Db21wKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgQ29tcG9zZSBmcm9tIHR3byAxNiBiaXQgRFBGIGEgMzIgYml0IGludGVnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgTF8zMiA9IGhpPDwxNiArIGxvPDwxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgQXJndW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIGhpICAgICAgICBtc2IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIGxvICAgICAgICBsc2YgKHdpdGggc2lnbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgICoNCisgKiAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfMzIgPD0gMHg3ZmZmIGZmZjAuICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KKw0KK1dvcmQzMiBMX0NvbXAgKFdvcmQxNiBoaSwgV29yZDE2IGxvKQ0KK3sNCisJV29yZDMyIExfMzI7DQorDQorCUxfMzIgPSBMX2RlcG9zaXRfaCAoaGkpOw0KKw0KKwlyZXR1cm4gKExfbWFjIChMXzMyLCBsbywgMSkpOyAgICAgICAvKiA9IGhpPDwxNiArIGxvPDwxICovDQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIEZ1bmN0aW9uIE1weV8zMigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgTXVsdGlwbHkgdHdvIDMyIGJpdCBpbnRlZ2VycyAoRFBGKS4gVGhlIHJlc3VsdCBpcyBkaXZpZGVkIGJ5IDIqKjMxICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgTF8zMiA9IChoaTEqaGkyKTw8MSArICggKGhpMSpsbzIpPj4xNSArIChsbzEqaGkyKT4+MTUgKTw8MSAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgVGhpcyBvcGVyYXRpb24gY2FuIGFsc28gYmUgdmlld2VkIGFzIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiB0d28gUTMxICAgICAgKg0KKyAqICAgbnVtYmVyIGFuZCB0aGUgcmVzdWx0IGlzIGFsc28gaW4gUTMxLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIEFyZ3VtZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBoaTEgICAgICAgICBoaSBwYXJ0IG9mIGZpcnN0IG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBsbzEgICAgICAgICBsbyBwYXJ0IG9mIGZpcnN0IG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBoaTIgICAgICAgICBoaSBwYXJ0IG9mIHNlY29uZCBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBsbzIgICAgICAgICBsbyBwYXJ0IG9mIHNlY29uZCBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyovDQorDQorX19pbmxpbmUgV29yZDMyICBNcHlfMzIgKFdvcmQxNiBoaTEsIFdvcmQxNiBsbzEsIFdvcmQxNiBoaTIsIFdvcmQxNiBsbzIpDQorew0KKwlXb3JkMzIgTF8zMjsNCisJTF8zMiA9IChoaTEgKiBoaTIpOw0KKwlMXzMyICs9IChoaTEgKiBsbzIpID4+IDE1Ow0KKwlMXzMyICs9IChsbzEgKiBoaTIpID4+IDE1Ow0KKwlMXzMyIDw8PSAxOw0KKw0KKwlyZXR1cm4gKExfMzIpOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBGdW5jdGlvbiBNcHlfMzJfMTYoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIE11bHRpcGx5IGEgMTYgYml0IGludGVnZXIgYnkgYSAzMiBiaXQgKERQRikuIFRoZSByZXN1bHQgaXMgZGl2aWRlZCAgICAgICoNCisgKiAgIGJ5IDIqKjE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIExfMzIgPSAoaGkxKmxvMik8PDEgKyAoKGxvMSpsbzIpPj4xNSk8PDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiBBcmd1bWVudHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgaGkgICAgICAgICAgaGkgcGFydCBvZiAzMiBiaXQgbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgbG8gICAgICAgICAgbG8gcGFydCBvZiAzMiBiaXQgbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgbiAgICAgICAgICAgMTYgYml0IG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KKw0KK19faW5saW5lIFdvcmQzMiBNcHlfMzJfMTYgKFdvcmQxNiBoaSwgV29yZDE2IGxvLCBXb3JkMTYgbikNCit7DQorCVdvcmQzMiBMXzMyOw0KKw0KKwlMXzMyID0gKGhpICogbik8PDE7DQorCUxfMzIgKz0gKCgobG8gKiBuKT4+MTUpPDwxKTsNCisNCisJcmV0dXJuIChMXzMyKTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBGdW5jdGlvbiBOYW1lIDogRGl2XzMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgRnJhY3Rpb25hbCBpbnRlZ2VyIGRpdmlzaW9uIG9mIHR3byAzMiBiaXQgbnVtYmVycy4gICAgICAgICAgICAqDQorICogICAgICAgICAgICAgTF9udW0gLyBMX2Rlbm9tLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgTF9udW0gYW5kIExfZGVub20gbXVzdCBiZSBwb3NpdGl2ZSBhbmQgTF9udW0gPCBMX2Rlbm9tLiAgICAgICAqDQorICogICAgICAgICAgICAgTF9kZW5vbSA9IGRlbm9tX2hpPDwxNiArIGRlbm9tX2xvPDwxICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgZGVub21faGkgaXMgYSBub3JtYWxpemUgbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgTF9udW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICAqDQorICogICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8IExfbnVtIDwgTF9kZW5vbSAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgTF9kZW5vbSA9IGRlbm9tX2hpPDwxNiArIGRlbm9tX2xvPDwxICAgICAgKERQRikgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgZGVub21faGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgMTYgYml0IHBvc2l0aXZlIG5vcm1hbGl6ZWQgaW50ZWdlciB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgICAqDQorICogICAgICAgICAgICAgcmFuZ2UgOiAweDQwMDAgPCBoaSA8IDB4N2ZmZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgZGVub21fbG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgMTYgYml0IHBvc2l0aXZlIGludGVnZXIgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgcmFuZ2UgOiAwIDwgbG8gPCAweDdmZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgTF9kaXYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICAqDQorICogICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8PSBMX2RpdiA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIEFsZ29yaXRobTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIC0gZmluZCA9IDEvTF9kZW5vbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICBGaXJzdCBhcHByb3hpbWF0aW9uOiBhcHByb3ggPSAxIC8gZGVub21faGkgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAxL0xfZGVub20gPSBhcHByb3ggKiAoMi4wIC0gTF9kZW5vbSAqIGFwcHJveCApICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIC0gIHJlc3VsdCA9IExfbnVtICogKDEvTF9kZW5vbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisNCitXb3JkMzIgRGl2XzMyIChXb3JkMzIgTF9udW0sIFdvcmQxNiBkZW5vbV9oaSwgV29yZDE2IGRlbm9tX2xvKQ0KK3sNCisJV29yZDE2IGFwcHJveCwgaGksIGxvLCBuX2hpLCBuX2xvOw0KKwlXb3JkMzIgTF8zMjsNCisNCisJLyogRmlyc3QgYXBwcm94aW1hdGlvbjogMSAvIExfZGVub20gPSAxL2Rlbm9tX2hpICovDQorDQorCWFwcHJveCA9IGRpdl9zICgoV29yZDE2KSAweDNmZmYsIGRlbm9tX2hpKTsNCisNCisJLyogMS9MX2Rlbm9tID0gYXBwcm94ICogKDIuMCAtIExfZGVub20gKiBhcHByb3gpICovDQorDQorCUxfMzIgPSBNcHlfMzJfMTYgKGRlbm9tX2hpLCBkZW5vbV9sbywgYXBwcm94KTsNCisNCisJTF8zMiA9IExfc3ViICgoV29yZDMyKSAweDdmZmZmZmZmTCwgTF8zMik7DQorCWhpID0gTF8zMiA+PiAxNjsNCisJbG8gPSAoTF8zMiAmIDB4ZmZmZikgPj4gMTsNCisNCisJTF8zMiA9IE1weV8zMl8xNiAoaGksIGxvLCBhcHByb3gpOw0KKw0KKwkvKiBMX251bSAqICgxL0xfZGVub20pICovDQorCWhpID0gTF8zMiA+PiAxNjsNCisJbG8gPSAoTF8zMiAmIDB4ZmZmZikgPj4gMTsNCisJVk9fTF9FeHRyYWN0IChMX251bSwgJm5faGksICZuX2xvKTsNCisJTF8zMiA9IE1weV8zMiAobl9oaSwgbl9sbywgaGksIGxvKTsNCisJTF8zMiA9IExfc2hsMihMXzMyLCAyKTsNCisNCisJcmV0dXJuIChMXzMyKTsNCit9DQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9wX21lZF9vbC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9wX21lZF9vbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZWU5NjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3BfbWVkX29sLmMKQEAgLTAsMCArMSwyNTYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IHBfbWVkX29sLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOiBDb21wdXRlIHRoZSBvcGVuIGxvb3AgcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAqDQorKgkgICAgICAgICAgICBvdXRwdXQ6IG9wZW4gbG9vcCBwaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJtYXRoX29wLmgiDQorI2luY2x1ZGUgInBfbWVkX29sLnRhYiINCisNCitXb3JkMTYgUGl0Y2hfbWVkX29sKA0KKwkJICAgV29yZDE2ICAgICAgd3NwW10sICAgICAgICAvKiAgIGk6IHNpZ25hbCB1c2VkIHRvIGNvbXB1dGUgdGhlIG9wZW4gbG9vcCBwaXRjaCovICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICB3c3BbLXBpdF9tYXhdIHRvIHdzcFstMV0gc2hvdWxkIGJlIGtub3duICovDQorCQkgICBDb2Rlcl9TdGF0ZSAqc3QsICAgICAgICAgIC8qIGkvbzogY29kZWMgZ2xvYmFsIHN0cnVjdHVyZSAqLw0KKwkJICAgV29yZDE2ICAgICAgTF9mcmFtZSAgICAgICAvKiAgIGk6IGxlbmd0aCBvZiBmcmFtZSB0byBjb21wdXRlIHBpdGNoICovDQorCQkpDQorew0KKwlXb3JkMTYgVG07DQorCVdvcmQxNiBoaSwgbG87DQorCVdvcmQxNiAqd3csICp3ZSwgKmhwX3dzcDsNCisJV29yZDE2IGV4cF9SMCwgZXhwX1IxLCBleHBfUjI7DQorCVdvcmQzMiBpLCBqLCBtYXgsIFIwLCBSMSwgUjI7DQorCVdvcmQxNiAqcDEsICpwMjsNCisJV29yZDE2IExfbWluID0gMTc7ICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gcGl0Y2ggbGFnOiBQSVRfTUlOIC8gT1BMX0RFQ0lNICovDQorCVdvcmQxNiBMX21heCA9IDExNTsgICAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIHBpdGNoIGxhZzogUElUX01BWCAvIE9QTF9ERUNJTSAqLw0KKwlXb3JkMTYgTF8wID0gc3QtPm9sZF9UMF9tZWQ7ICAgICAgICAgLyogb2xkIG9wZW4tbG9vcCBwaXRjaCAqLw0KKwlXb3JkMTYgKmdhaW4gPSAmKHN0LT5vbF9nYWluKTsgICAgICAgLyogbm9ybWFsaXplIGNvcnJlbGF0aW9uIG9mIGhwX3dzcCBmb3IgdGhlIGxhZyAqLw0KKwlXb3JkMTYgKmhwX3dzcF9tZW0gPSBzdC0+aHBfd3NwX21lbTsgLyogbWVtb3J5IG9mIHRoZSBoeXBhc3MgZmlsdGVyIGZvciBocF93c3BbXSAobGcgPSA5KSovDQorCVdvcmQxNiAqb2xkX2hwX3dzcCA9IHN0LT5vbGRfaHBfd3NwOyAvKiBoeXBhc3Mgd3NwW10gKi8NCisJV29yZDE2IHdnaHRfZmxnID0gc3QtPm9sX3dnaHRfZmxnOyAgIC8qIGlzIHdlaWdodGluZyBmdW5jdGlvbiB1c2VkICovDQorDQorCXd3ID0gJmNvcnJ3ZWlnaHRbMTk4XTsNCisJd2UgPSAmY29ycndlaWdodFs5OCArIExfbWF4IC0gTF8wXTsNCisNCisJbWF4ID0gTUlOXzMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCVRtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSBMX21heDsgaSA+IExfbWluOyBpLS0pDQorCXsNCisJCS8qIENvbXB1dGUgdGhlIGNvcnJlbGF0aW9uICovDQorCQlSMCA9IDA7DQorCQlwMSA9IHdzcDsNCisJCXAyID0gJndzcFstaV07DQorCQlmb3IgKGogPSAwOyBqIDwgTF9mcmFtZTsgais9NCkNCisJCXsNCisJCQlSMCArPSB2b19MX211bHQoKCpwMSsrKSwgKCpwMisrKSk7DQorCQkJUjAgKz0gdm9fTF9tdWx0KCgqcDErKyksICgqcDIrKykpOw0KKwkJCVIwICs9IHZvX0xfbXVsdCgoKnAxKyspLCAoKnAyKyspKTsNCisJCQlSMCArPSB2b19MX211bHQoKCpwMSsrKSwgKCpwMisrKSk7ICAgICANCisJCX0NCisJCS8qIFdlaWdodGluZyBvZiB0aGUgY29ycmVsYXRpb24gZnVuY3Rpb24uICAgKi8NCisJCWhpID0gUjA+PjE2Ow0KKwkJbG8gPSAoUjAgJiAweGZmZmYpPj4xOw0KKw0KKwkJUjAgPSBNcHlfMzJfMTYoaGksIGxvLCAqd3cpOw0KKwkJd3ctLTsNCisNCisJCWlmICgoTF8wID4gMCkgJiYgKHdnaHRfZmxnID4gMCkpDQorCQl7DQorCQkJLyogV2VpZ2h0IHRoZSBuZWlnaGJvdXJob29kIG9mIHRoZSBvbGQgbGFnLiAqLw0KKwkJCWhpID0gUjA+PjE2Ow0KKwkJCWxvID0gKFIwICYgMHhmZmZmKT4+MTsNCisJCQlSMCA9IE1weV8zMl8xNihoaSwgbG8sICp3ZSk7DQorCQkJd2UtLTsNCisJCX0NCisJCWlmKFIwID49IG1heCkNCisJCXsNCisJCQltYXggPSBSMDsNCisJCQlUbSA9IGk7DQorCQl9DQorCX0NCisNCisJLyogSHlwYXNzIHRoZSB3c3BbXSB2ZWN0b3IgKi8NCisJaHBfd3NwID0gb2xkX2hwX3dzcCArIExfbWF4OyAgICAgICAgICAgDQorCUhwX3dzcCh3c3AsIGhwX3dzcCwgTF9mcmFtZSwgaHBfd3NwX21lbSk7DQorDQorCS8qIENvbXB1dGUgbm9ybWFsaXplIGNvcnJlbGF0aW9uIGF0IGRlbGF5IFRtICovDQorCVIwID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlSMSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlSMiA9IDA7IA0KKwlwMSA9IGhwX3dzcDsNCisJcDIgPSBocF93c3AgLSBUbTsNCisJZm9yIChqID0gMDsgaiA8IExfZnJhbWU7IGorPTQpDQorCXsNCisJCVIyICs9IHZvX211bHQzMigqcDEsICpwMSk7DQorCQlSMSArPSB2b19tdWx0MzIoKnAyLCAqcDIpOw0KKwkJUjAgKz0gdm9fbXVsdDMyKCpwMSsrLCAqcDIrKyk7DQorCQlSMiArPSB2b19tdWx0MzIoKnAxLCAqcDEpOw0KKwkJUjEgKz0gdm9fbXVsdDMyKCpwMiwgKnAyKTsNCisJCVIwICs9IHZvX211bHQzMigqcDErKywgKnAyKyspOw0KKwkJUjIgKz0gdm9fbXVsdDMyKCpwMSwgKnAxKTsNCisJCVIxICs9IHZvX211bHQzMigqcDIsICpwMik7DQorCQlSMCArPSB2b19tdWx0MzIoKnAxKyssICpwMisrKTsNCisJCVIyICs9IHZvX211bHQzMigqcDEsICpwMSk7DQorCQlSMSArPSB2b19tdWx0MzIoKnAyLCAqcDIpOw0KKwkJUjAgKz0gdm9fbXVsdDMyKCpwMSsrLCAqcDIrKyk7DQorCX0NCisJUjAgPSBSMCA8PDE7DQorCVIxID0gKFIxIDw8MSkgKyAxTDsNCisJUjIgPSAoUjIgPDwxKSArIDFMOw0KKwkvKiBnYWluID0gUjAvIHNxcnQoUjEqUjIpICovDQorDQorCWV4cF9SMCA9IG5vcm1fbChSMCk7DQorCVIwID0gKFIwIDw8IGV4cF9SMCk7DQorDQorCWV4cF9SMSA9IG5vcm1fbChSMSk7DQorCVIxID0gKFIxIDw8IGV4cF9SMSk7DQorDQorCWV4cF9SMiA9IG5vcm1fbChSMik7DQorCVIyID0gKFIyIDw8IGV4cF9SMik7DQorDQorDQorCVIxID0gdm9fTF9tdWx0KHZvX3JvdW5kKFIxKSwgdm9fcm91bmQoUjIpKTsNCisNCisJaSA9IG5vcm1fbChSMSk7DQorCVIxID0gKFIxIDw8IGkpOw0KKw0KKwlleHBfUjEgKz0gZXhwX1IyOw0KKwlleHBfUjEgKz0gaTsNCisJZXhwX1IxID0gNjIgLSBleHBfUjE7DQorDQorCUlzcXJ0X24oJlIxLCAmZXhwX1IxKTsNCisNCisJUjAgPSB2b19MX211bHQodm9yb3VuZChSMCksIHZvcm91bmQoUjEpKTsNCisJZXhwX1IwID0gMzEgLSBleHBfUjA7DQorCWV4cF9SMCArPSBleHBfUjE7DQorDQorCSpnYWluID0gdm9fcm91bmQoTF9zaGwoUjAsIGV4cF9SMCkpOw0KKw0KKwkvKiBTaGl0ZiBocF93c3BbXSBmb3IgbmV4dCBmcmFtZSAqLw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9tYXg7IGkrKykNCisJew0KKwkJb2xkX2hwX3dzcFtpXSA9IG9sZF9ocF93c3BbaSArIExfZnJhbWVdOw0KKwl9DQorDQorCXJldHVybiAoVG0pOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgRnVuY3Rpb246IG1lZGlhbjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgUmV0dXJucyB0aGUgbWVkaWFuIG9mIHRoZSBzZXQge1hbLTJdLCBYWy0xXSwuLi4sIFhbMl19LCAgICAgICAgICAqDQorKiAgICAgIHdob3NlIGVsZW1lbnRzIGFyZSAxNi1iaXQgaW50ZWdlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICBJbnB1dDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIFhbLTI6Ml0gICAxNi1iaXQgaW50ZWdlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICBSZXR1cm46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIFRoZSBtZWRpYW4gb2Yge1hbLTJdLCBYWy0xXSwuLi4sIFhbMl19LiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitXb3JkMTYgbWVkaWFuNShXb3JkMTYgeFtdKQ0KK3sNCisJV29yZDE2IHgxLCB4MiwgeDMsIHg0LCB4NTsNCisJV29yZDE2IHRtcDsNCisNCisJeDEgPSB4Wy0yXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXgyID0geFstMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl4MyA9IHhbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJeDQgPSB4WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXg1ID0geFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlpZiAoeDIgPCB4MSkNCisJew0KKwkJdG1wID0geDE7DQorCQl4MSA9IHgyOw0KKwkJeDIgPSB0bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpZiAoeDMgPCB4MSkNCisJew0KKwkJdG1wID0geDE7DQorCQl4MSA9IHgzOw0KKwkJeDMgPSB0bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpZiAoeDQgPCB4MSkNCisJew0KKwkJdG1wID0geDE7DQorCQl4MSA9IHg0Ow0KKwkJeDQgPSB0bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpZiAoeDUgPCB4MSkNCisJew0KKwkJeDUgPSB4MTsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpZiAoeDMgPCB4MikNCisJew0KKwkJdG1wID0geDI7DQorCQl4MiA9IHgzOw0KKwkJeDMgPSB0bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpZiAoeDQgPCB4MikNCisJew0KKwkJdG1wID0geDI7DQorCQl4MiA9IHg0Ow0KKwkJeDQgPSB0bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpZiAoeDUgPCB4MikNCisJew0KKwkJeDUgPSB4MjsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpZiAoeDQgPCB4MykNCisJew0KKwkJeDMgPSB4NDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpZiAoeDUgPCB4MykNCisJew0KKwkJeDMgPSB4NTsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlyZXR1cm4gKHgzKTsNCit9DQorDQorDQorV29yZDE2IE1lZF9vbGFnKCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dCA6IG1lZGlhbiBvZiAgNSBwcmV2aW91cyBvcGVuLWxvb3AgbGFncyAgICAgICAqLw0KKwkJV29yZDE2IHByZXZfb2xfbGFnLCAgICAgICAgICAgICAgICAvKiBpbnB1dCAgOiBwcmV2aW91cyBvcGVuLWxvb3AgbGFnICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBvbGRfb2xfbGFnWzVdDQorCSAgICAgICApDQorew0KKwlXb3JkMzIgaTsNCisNCisJLyogVXNlIG1lZGlhbiBvZiA1IHByZXZpb3VzIG9wZW4tbG9vcCBsYWdzIGFzIG9sZCBsYWcgKi8NCisNCisJZm9yIChpID0gNDsgaSA+IDA7IGktLSkNCisJew0KKwkJb2xkX29sX2xhZ1tpXSA9IG9sZF9vbF9sYWdbaSAtIDFdOyANCisJfQ0KKw0KKwlvbGRfb2xfbGFnWzBdID0gcHJldl9vbF9sYWc7ICAgICAgICAgICANCisNCisJaSA9IG1lZGlhbjUoJm9sZF9vbF9sYWdbMl0pOw0KKw0KKwlyZXR1cm4gaTsNCisNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9waXRfc2hycC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9waXRfc2hycC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YTIyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3BpdF9zaHJwLmMKQEAgLTAsMCArMSw0OSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogcGl0X3NocnAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246IFBlcmZvcm1zIFBpdGNoIHNoYXJwZW5pbmcgcm91dGluZSAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisNCit2b2lkIFBpdF9zaHJwKA0KKwkJV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IGltcHVsc2UgcmVzcG9uc2UgKG9yIGFsZ2VicmFpYyBjb2RlKSAqLw0KKwkJV29yZDE2IHBpdF9sYWcsICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHNoYXJwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHBpdGNoIHNoYXJwZW5pbmcgZmFjdG9yIChRMTUpICAgICAgICAqLw0KKwkJV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHN1YmZyYW1lIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgICkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMzIgTF90bXA7DQorCVdvcmQxNiAqeF9wdHIgPSB4ICsgcGl0X2xhZzsNCisNCisJZm9yIChpID0gcGl0X2xhZzsgaSA8IExfc3ViZnI7IGkrKykNCisJew0KKwkJTF90bXAgPSAoKnhfcHRyIDw8IDE1KTsNCisJCUxfdG1wICs9ICp4KysgKiBzaGFycDsNCisJCSp4X3B0cisrID0gKChMX3RtcCArIDB4NDAwMCk+PjE1KTsNCisJfQ0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcGl0Y2hfZjQuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcGl0Y2hfZjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTE1YjExYgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcGl0Y2hfZjQuYwpAQCAtMCwwICsxLDMyNCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogcGl0Y2hfZjQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246IEZpbmQgdGhlIGNsb3NlZCBsb29wIHBpdGNoIHBlcmlvZCB3aXRoICAgICAgICAgICAgICoNCisqCSAgICAgICAgICAgIDEvNCBzdWJzYW1wbGUgcmVzb2x1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorDQorI2RlZmluZSBVUF9TQU1QICAgICAgNA0KKyNkZWZpbmUgTF9JTlRFUlBPTDEgIDQNCisNCisvKiBMb2NhbCBmdW5jdGlvbnMgKi8NCisNCisjaWZkZWYgQVNNX09QVA0KK3ZvaWQgTm9ybV9jb3JyX2FzbSgNCisJCVdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4Y2l0YXRpb24gYnVmZmVyICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB4bltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHRhcmdldCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygc3ludGgvd2d0IGZpbHRlcnMgKi8NCisJCVdvcmQxNiBMX3N1YmZyLA0KKwkJV29yZDE2IHRfbWluLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWluaW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgICAgICAgICAqLw0KKwkJV29yZDE2IHRfbWF4LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWF4aW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgICAgICAgICAqLw0KKwkJV29yZDE2IGNvcnJfbm9ybVtdICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogbm9ybWFsaXplZCBjb3JyZWxhdGlvbiAgICAgICAgICAgICAgICAqLw0KKwkJKTsNCisjZWxzZQ0KK3N0YXRpYyB2b2lkIE5vcm1fQ29ycigNCisJCVdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4Y2l0YXRpb24gYnVmZmVyICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB4bltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHRhcmdldCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygc3ludGgvd2d0IGZpbHRlcnMgKi8NCisJCVdvcmQxNiBMX3N1YmZyLA0KKwkJV29yZDE2IHRfbWluLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWluaW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgICAgICAgICAqLw0KKwkJV29yZDE2IHRfbWF4LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWF4aW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgICAgICAgICAqLw0KKwkJV29yZDE2IGNvcnJfbm9ybVtdICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogbm9ybWFsaXplZCBjb3JyZWxhdGlvbiAgICAgICAgICAgICAgICAqLw0KKwkJKTsNCisjZW5kaWYNCisNCitzdGF0aWMgV29yZDE2IEludGVycG9sXzQoICAgICAgICAgICAgICAgICAgLyogKG8pICA6IGludGVycG9sYXRlZCB2YWx1ZSAgKi8NCisJCVdvcmQxNiAqIHgsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICA6IGlucHV0IHZlY3RvciAgICAgICAgKi8NCisJCVdvcmQzMiBmcmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICA6IGZyYWN0aW9uICgtNC4uKzMpICAgKi8NCisJCSk7DQorDQorDQorV29yZDE2IFBpdGNoX2ZyNCggICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBwaXRjaCBwZXJpb2QuICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBleGNpdGF0aW9uIGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB0YXJnZXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBpbXB1bHNlIHJlc3BvbnNlIG9mIHN5bnRoL3dndCBmaWx0ZXJzICovDQorCQlXb3JkMTYgdDBfbWluLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIGluIHRoZSBzZWFyY2hlZCByYW5nZS4gICovDQorCQlXb3JkMTYgdDBfbWF4LCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtYXhpbXVtIHZhbHVlIGluIHRoZSBzZWFyY2hlZCByYW5nZS4gICovDQorCQlXb3JkMTYgKiBwaXRfZnJhYywgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBjaG9zZW4gZnJhY3Rpb24gKDAsIDEsIDIgb3IgMykuICAgICAgICovDQorCQlXb3JkMTYgaV9zdWJmciwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbmRpY2F0b3IgZm9yIGZpcnN0IHN1YmZyYW1lLiAgICAgICAgICovDQorCQlXb3JkMTYgdDBfZnIyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIGZvciByZXNvbHV0aW9uIDEvMiAgICAgICovDQorCQlXb3JkMTYgdDBfZnIxLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIGZvciByZXNvbHV0aW9uIDEgICAgICAgICovDQorCQlXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBMZW5ndGggb2Ygc3ViZnJhbWUgICAgICAgICAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMzIgZnJhY3Rpb24sIGk7DQorCVdvcmQxNiB0X21pbiwgdF9tYXg7DQorCVdvcmQxNiBtYXgsIHQwLCBzdGVwLCB0ZW1wOw0KKwlXb3JkMTYgKmNvcnI7DQorCVdvcmQxNiBjb3JyX3ZbNDBdOyAgICAgICAgICAgICAgICAgICAgIC8qIFRvdGFsIGxlbmd0aCA9IHQwX21heC10MF9taW4rMSsyKkxfaW50ZXIgKi8NCisNCisJLyogRmluZCBpbnRlcnZhbCB0byBjb21wdXRlIG5vcm1hbGl6ZWQgY29ycmVsYXRpb24gKi8NCisNCisJdF9taW4gPSB0MF9taW4gLSBMX0lOVEVSUE9MMTsNCisJdF9tYXggPSB0MF9tYXggKyBMX0lOVEVSUE9MMTsNCisJY29yciA9ICZjb3JyX3ZbLXRfbWluXTsNCisJLyogQ29tcHV0ZSBub3JtYWxpemVkIGNvcnJlbGF0aW9uIGJldHdlZW4gdGFyZ2V0IGFuZCBmaWx0ZXJlZCBleGNpdGF0aW9uICovDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKyAgICBOb3JtX2NvcnJfYXNtKGV4YywgeG4sIGgsIExfc3ViZnIsIHRfbWluLCB0X21heCwgY29ycik7DQorI2Vsc2UNCisJTm9ybV9Db3JyKGV4YywgeG4sIGgsIExfc3ViZnIsIHRfbWluLCB0X21heCwgY29ycik7DQorI2VuZGlmIA0KKw0KKwkvKiBGaW5kIGludGVnZXIgcGl0Y2ggKi8NCisNCisJbWF4ID0gY29yclt0MF9taW5dOw0KKwl0MCA9IHQwX21pbjsNCisJZm9yIChpID0gdDBfbWluICsgMTsgaSA8PSB0MF9tYXg7IGkrKykNCisJew0KKwkJaWYgKGNvcnJbaV0gPj0gbWF4KQ0KKwkJew0KKwkJCW1heCA9IGNvcnJbaV07ICAgICAgICAgICAgICAgICANCisJCQl0MCA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgDQorCQl9DQorCX0NCisJLyogSWYgZmlyc3Qgc3ViZnJhbWUgYW5kIHQwID49IHQwX2ZyMSwgZG8gbm90IHNlYXJjaCBmcmFjdGlvbm5hbCBwaXRjaCAqLw0KKwlpZiAoKGlfc3ViZnIgPT0gMCkgJiYgKHQwID49IHQwX2ZyMSkpDQorCXsNCisJCSpwaXRfZnJhYyA9IDA7DQorCQlyZXR1cm4gKHQwKTsNCisJfQ0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogU2VhcmNoIGZyYWN0aW9ubmFsIHBpdGNoIHdpdGggMS80IHN1YnNhbXBsZSByZXNvbHV0aW9uLiAgICAgICAgICAqDQorCSAqIFRlc3QgdGhlIGZyYWN0aW9ucyBhcm91bmQgdDAgYW5kIGNob29zZSB0aGUgb25lIHdoaWNoIG1heGltaXplcyAgKg0KKwkgKiB0aGUgaW50ZXJwb2xhdGVkIG5vcm1hbGl6ZWQgY29ycmVsYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwlzdGVwID0gMTsgICAgICAgICAgICAgICAvKiAxLzQgc3Vic2FtcGxlIHJlc29sdXRpb24gKi8NCisJZnJhY3Rpb24gPSAtMzsNCisJaWYgKCh0MF9mcjIgPT0gUElUX01JTil8fCgoaV9zdWJmciA9PSAwKSAmJiAodDAgPj0gdDBfZnIyKSkpDQorCXsNCisJCXN0ZXAgPSAyOyAgICAgICAgICAgICAgLyogMS8yIHN1YnNhbXBsZSByZXNvbHV0aW9uICovDQorCQlmcmFjdGlvbiA9IC0yOw0KKwl9DQorCWlmKHQwID09IHQwX21pbikNCisJew0KKwkJZnJhY3Rpb24gPSAwOw0KKwl9DQorCW1heCA9IEludGVycG9sXzQoJmNvcnJbdDBdLCBmcmFjdGlvbik7DQorDQorCWZvciAoaSA9IGZyYWN0aW9uICsgc3RlcDsgaSA8PSAzOyBpICs9IHN0ZXApDQorCXsNCisJCXRlbXAgPSBJbnRlcnBvbF80KCZjb3JyW3QwXSwgaSk7DQorCQlpZih0ZW1wID4gbWF4KQ0KKwkJew0KKwkJCW1heCA9IHRlbXA7DQorCQkJZnJhY3Rpb24gPSBpOw0KKwkJfQ0KKwl9DQorCS8qIGxpbWl0IHRoZSBmcmFjdGlvbiB2YWx1ZSBpbiB0aGUgaW50ZXJ2YWwgWzAsMSwyLDNdICovDQorCWlmIChmcmFjdGlvbiA8IDApDQorCXsNCisJCWZyYWN0aW9uICs9IFVQX1NBTVA7DQorCQl0MCAtPSAxOw0KKwl9DQorCSpwaXRfZnJhYyA9IGZyYWN0aW9uOw0KKwlyZXR1cm4gKHQwKTsNCit9DQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogIE5vcm1fQ29ycigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIERlc2NyaXB0aW9uOiBGaW5kIHRoZSBub3JtYWxpemVkIGNvcnJlbGF0aW9uIGJldHdlZW4gdGhlIHRhcmdldCB2ZWN0b3IgYW5kIHRoZSAgICAqDQorKiBmaWx0ZXJlZCBwYXN0IGV4Y2l0YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogKGNvcnJlbGF0aW9uIGJldHdlZW4gdGFyZ2V0IGFuZCBmaWx0ZXJlZCBleGNpdGF0aW9uIGRpdmlkZWQgYnkgdGhlICAgICAgICAgICAgICAgICoNCisqICBzcXVhcmUgcm9vdCBvZiBlbmVyZ3kgb2YgdGFyZ2V0IGFuZCBmaWx0ZXJlZCBleGNpdGF0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpZm5kZWYgQVNNX09QVA0KK3N0YXRpYyB2b2lkIE5vcm1fQ29ycigNCisJCVdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4Y2l0YXRpb24gYnVmZmVyICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB4bltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHRhcmdldCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygc3ludGgvd2d0IGZpbHRlcnMgKi8NCisJCVdvcmQxNiBMX3N1YmZyLA0KKwkJV29yZDE2IHRfbWluLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWluaW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgICAgICAgICAqLw0KKwkJV29yZDE2IHRfbWF4LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWF4aW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgICAgICAgICAqLw0KKwkJV29yZDE2IGNvcnJfbm9ybVtdKSAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogbm9ybWFsaXplZCBjb3JyZWxhdGlvbiAgICAgICAgICAgICAgICAqLw0KK3sNCisJV29yZDMyIGksIGssIHQ7DQorCVdvcmQzMiBjb3JyLCBleHBfY29yciwgbm9ybSwgZXhwLCBzY2FsZTsNCisJV29yZDE2IGV4cF9ub3JtLCBleGNmW0xfU1VCRlJdLCB0bXA7DQorCVdvcmQzMiBMX3RtcCwgTF90bXAxLCBMX3RtcDI7DQorDQorCS8qIGNvbXB1dGUgdGhlIGZpbHRlcmVkIGV4Y2l0YXRpb24gZm9yIHRoZSBmaXJzdCBkZWxheSB0X21pbiAqLw0KKwlrID0gLXRfbWluOw0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlDb252b2x2ZV9hc20oJmV4Y1trXSwgaCwgZXhjZiwgNjQpOw0KKyNlbHNlDQorCUNvbnZvbHZlKCZleGNba10sIGgsIGV4Y2YsIDY0KTsNCisjZW5kaWYNCisNCisJLyogQ29tcHV0ZSByb3VuZGVkIGRvd24gMS9zcXJ0KGVuZXJneSBvZiB4bltdKSAqLw0KKwlMX3RtcCA9IDA7IA0KKwlmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrPTQpDQorCXsNCisJCUxfdG1wICs9ICh4bltpXSAqIHhuW2ldKTsNCisJCUxfdG1wICs9ICh4bltpKzFdICogeG5baSsxXSk7DQorCQlMX3RtcCArPSAoeG5baSsyXSAqIHhuW2krMl0pOw0KKwkJTF90bXAgKz0gKHhuW2krM10gKiB4bltpKzNdKTsNCisJfQ0KKw0KKwlMX3RtcCA9IChMX3RtcCA8PCAxKSArIDE7DQorCWV4cCA9IG5vcm1fbChMX3RtcCk7DQorCWV4cCA9ICgzMiAtIGV4cCk7DQorCS8vZXhwID0gZXhwICsgMjsgICAgICAgICAgICAgICAgICAgICAvKiBlbmVyZ3kgb2YgeG5bXSB4IDIgKyByb3VuZGVkIHVwICAgICAqLw0KKwlzY2FsZSA9IC0oZXhwID4+IDEpOyAgICAgICAgICAgLyogKDE8PHNjYWxlKSA8IDEvc3FydChlbmVyZ3kgcm91bmRlZCkgKi8NCisNCisJLyogbG9vcCBmb3IgZXZlcnkgcG9zc2libGUgcGVyaW9kICovDQorDQorCWZvciAodCA9IHRfbWluOyB0IDw9IHRfbWF4OyB0KyspDQorCXsNCisJCS8qIENvbXB1dGUgY29ycmVsYXRpb24gYmV0d2VlbiB4bltdIGFuZCBleGNmW10gKi8NCisJCUxfdG1wICA9IDA7ICANCisJCUxfdG1wMSA9IDA7DQorCQlmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrPTQpDQorCQl7DQorCQkJTF90bXAgICs9ICh4bltpXSAqIGV4Y2ZbaV0pOw0KKwkJCUxfdG1wMSArPSAoZXhjZltpXSAqIGV4Y2ZbaV0pOw0KKwkJCUxfdG1wICArPSAoeG5baSsxXSAqIGV4Y2ZbaSsxXSk7DQorCQkJTF90bXAxICs9IChleGNmW2krMV0gKiBleGNmW2krMV0pOw0KKwkJCUxfdG1wICArPSAoeG5baSsyXSAqIGV4Y2ZbaSsyXSk7DQorCQkJTF90bXAxICs9IChleGNmW2krMl0gKiBleGNmW2krMl0pOw0KKwkJCUxfdG1wICArPSAoeG5baSszXSAqIGV4Y2ZbaSszXSk7DQorCQkJTF90bXAxICs9IChleGNmW2krM10gKiBleGNmW2krM10pOw0KKwkJfQ0KKw0KKwkJTF90bXAgPSAoTF90bXAgPDwgMSkgKyAxOw0KKwkJTF90bXAxID0gKExfdG1wMSA8PCAxKSArIDE7DQorDQorCQlleHAgPSBub3JtX2woTF90bXApOw0KKwkJTF90bXAgPSAoTF90bXAgPDwgZXhwKTsNCisJCWV4cF9jb3JyID0gKDMwIC0gZXhwKTsNCisJCWNvcnIgPSBleHRyYWN0X2goTF90bXApOw0KKw0KKwkJZXhwID0gbm9ybV9sKExfdG1wMSk7DQorCQlMX3RtcCA9IChMX3RtcDEgPDwgZXhwKTsNCisJCWV4cF9ub3JtID0gKDMwIC0gZXhwKTsNCisNCisJCUlzcXJ0X24oJkxfdG1wLCAmZXhwX25vcm0pOw0KKwkJbm9ybSA9IGV4dHJhY3RfaChMX3RtcCk7DQorDQorCQkvKiBOb3JtYWxpemUgY29ycmVsYXRpb24gPSBjb3JyZWxhdGlvbiAqICgxL3NxcnQoZW5lcmd5KSkgKi8NCisNCisJCUxfdG1wID0gdm9fTF9tdWx0KGNvcnIsIG5vcm0pOw0KKw0KKwkJTF90bXAyID0gZXhwX2NvcnIgKyBleHBfbm9ybSArIHNjYWxlOw0KKwkJaWYoTF90bXAyIDwgMCkNCisJCXsNCisJCQlMX3RtcDIgPSAtTF90bXAyOw0KKwkJCUxfdG1wID0gTF90bXAgPj4gTF90bXAyOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCUxfdG1wID0gTF90bXAgPDwgTF90bXAyOw0KKwkJfQ0KKw0KKwkJY29ycl9ub3JtW3RdID0gdm9fcm91bmQoTF90bXApOyAgICAgIA0KKwkJLyogbW9kaWZ5IHRoZSBmaWx0ZXJlZCBleGNpdGF0aW9uIGV4Y2ZbXSBmb3IgdGhlIG5leHQgaXRlcmF0aW9uICovDQorDQorCQlpZih0ICE9IHRfbWF4KQ0KKwkJew0KKwkJCWsgPSAtKHQgKyAxKTsNCisJCQl0bXAgPSBleGNba107DQorCQkJZm9yIChpID0gNjM7IGkgPiAwOyBpLS0pDQorCQkJew0KKwkJCQlleGNmW2ldID0gYWRkMSh2b19tdWx0KHRtcCwgaFtpXSksIGV4Y2ZbaSAtIDFdKTsNCisJCQl9DQorCQkJZXhjZlswXSA9IHZvX211bHQodG1wLCBoWzBdKTsNCisJCX0NCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKyNlbmRpZg0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiBJbnRlcnBvbF80KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBEZXNjcmlwdGlvbjogRm9yIGludGVycG9sYXRpbmcgdGhlIG5vcm1hbGl6ZWQgY29ycmVsYXRpb24gd2l0aCAxLzQgcmVzb2x1dGlvbi4gICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKiAxLzQgcmVzb2x1dGlvbiBpbnRlcnBvbGF0aW9uIGZpbHRlciAoLTMgZEIgYXQgMC43OTEqZnMvMikgaW4gUTE0ICovDQorc3RhdGljIFdvcmQxNiBpbnRlcjRfMVs0XVs4XSA9DQorew0KKwl7LTEyLCA0MjAsIC0xNzMyLCA1NDI5LCAxMzQxOCwgLTEyNDIsIDczLCAzMn0sDQorCXstMjYsIDQ1NSwgLTIxNDIsIDk5MTAsIDk5MTAsICAtMjE0MiwgNDU1LCAtMjZ9LA0KKwl7MzIsICA3MywgLTEyNDIsIDEzNDE4LCA1NDI5LCAtMTczMiwgNDIwLCAtMTJ9LA0KKwl7MjA2LCAtNzY2LCAxMzc2LCAxNDc0NiwgMTM3NiwgLTc2NiwgMjA2LCAwfQ0KK307DQorDQorLyoqKiBDb2VmZmljaWVudHMgaW4gZmxvYXRpbmcgcG9pbnQNCitzdGF0aWMgZmxvYXQgaW50ZXI0XzFbVVBfU0FNUCpMX0lOVEVSUE9MMSsxXSA9IHsNCiswLjkwMDAwMCwNCiswLjgxODk1OSwgIDAuNjA0ODUwLCAgMC4zMzEzNzksICAwLjA4Mzk1OCwNCistMC4wNzU3OTUsIC0wLjEzMDcxNywgLTAuMTA1Njg1LCAtMC4wNDY3NzQsDQorMC4wMDQ0NjcsICAwLjAyNzc4OSwgIDAuMDI1NjQyLCAgMC4wMTI1NzEsDQorMC4wMDE5MjcsIC0wLjAwMTU3MSwgLTAuMDAwNzUzLCAgMC4wMDAwMDB9Ow0KKyoqKi8NCisNCitzdGF0aWMgV29yZDE2IEludGVycG9sXzQoICAgICAgICAgICAgICAgICAgLyogKG8pICA6IGludGVycG9sYXRlZCB2YWx1ZSAgKi8NCisJCVdvcmQxNiAqIHgsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICA6IGlucHV0IHZlY3RvciAgICAgICAgKi8NCisJCVdvcmQzMiBmcmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICA6IGZyYWN0aW9uICgtNC4uKzMpICAgKi8NCisJCSkNCit7DQorCVdvcmQxNiBzdW07DQorCVdvcmQzMiAgaywgTF9zdW07DQorCVdvcmQxNiAqcHRyOw0KKw0KKwlpZiAoZnJhYyA8IDApDQorCXsNCisJCWZyYWMgKz0gVVBfU0FNUDsNCisJCXgtLTsNCisJfQ0KKwl4ID0geCAtIExfSU5URVJQT0wxICsgMTsNCisJayA9IFVQX1NBTVAgLSAxIC0gZnJhYzsNCisJcHRyID0gJihpbnRlcjRfMVtrXVswXSk7DQorDQorCUxfc3VtICA9IHZvX211bHQzMih4WzBdLCAoKnB0cisrKSk7DQorCUxfc3VtICs9IHZvX211bHQzMih4WzFdLCAoKnB0cisrKSk7DQorCUxfc3VtICs9IHZvX211bHQzMih4WzJdLCAoKnB0cisrKSk7DQorCUxfc3VtICs9IHZvX211bHQzMih4WzNdLCAoKnB0cisrKSk7DQorCUxfc3VtICs9IHZvX211bHQzMih4WzRdLCAoKnB0cisrKSk7ICANCisJTF9zdW0gKz0gdm9fbXVsdDMyKHhbNV0sICgqcHRyKyspKTsNCisJTF9zdW0gKz0gdm9fbXVsdDMyKHhbNl0sICgqcHRyKyspKTsNCisJTF9zdW0gKz0gdm9fbXVsdDMyKHhbN10sICgqcHRyKyspKTsgICANCisNCisJc3VtID0gZXh0cmFjdF9oKExfYWRkKExfc2hsMihMX3N1bSwgMiksIDB4ODAwMCkpOw0KKwlyZXR1cm4gKHN1bSk7DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcHJlZF9sdDQuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcHJlZF9sdDQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzFmZjIyCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9wcmVkX2x0NC5jCkBAIC0wLDAgKzEsMTIwIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBwcmVkX2x0NC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjogQ29tcHV0ZSB0aGUgcmVzdWx0IG9mIGxvbmcgdGVybSBwcmVkaWN0aW9uIHdpdGggICAgKg0KKyogICAgICBmcmFjdGlvbmFsIGludGVycG9sYXRpb24gb2YgcmVzb2x1dGlvbiAxLzQgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBvbiByZXR1cm4gZXhjWzAuLkxfc3Vici0xXSBjb250YWlucyB0aGUgaW50ZXJwb2xhdGVkIHNpZ25hbCAgICAgKg0KKyogICAgICAoYWRhcHRpdmUgY29kZWJvb2sgZXhjaXRhdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KKyNkZWZpbmUgVVBfU0FNUCAgICAgIDQNCisjZGVmaW5lIExfSU5URVJQT0wyICAxNg0KKw0KKy8qIDEvNCByZXNvbHV0aW9uIGludGVycG9sYXRpb24gZmlsdGVyICgtMyBkQiBhdCAwLjg1Nipmcy8yKSBpbiBRMTQgKi8NCisNCitXb3JkMTYgaW50ZXI0XzJbNF1bMzJdID0NCit7DQorCXswLC0yLDQsLTIsLTEwLDM4LC04OCwxNjUsLTI3NSw0MjQsLTYxOSw4NzEsLTEyMDcsMTY5OSwtMjU5OCw1NTMxLDE0MDMxLC0yMTQ3LDc4MCwtMjQ5LA0KKwktMTYsMTUzLC0yMTMsMjI2LC0yMDksMTc1LC0xMzMsOTEsLTU1LDI4LC0xMCwyfSwNCisNCisJezEsLTcsMTksLTMzLDQ3LC01Miw0MywtOSwtNjAsMTc1LC0zNTUsNjI2LC0xMDQ0LDE3NDksLTMyNjcsMTAzNTksMTAzNTksLTMyNjcsMTc0OSwtMTA0NCwNCisJNjI2LC0zNTUsMTc1LC02MCwtOSw0MywtNTIsNDcsLTMzLDE5LCAtNywgMX0sDQorDQorCXsyLC0xMCwyOCwtNTUsOTEsLTEzMywxNzUsLTIwOSwyMjYsLTIxMywxNTMsLTE2LC0yNDksNzgwLC0yMTQ3LDE0MDMxLDU1MzEsLTI1OTgsMTY5OSwtMTIwNywNCisJODcxLC02MTksNDI0LC0yNzUsMTY1LC04OCwzOCwtMTAsLTIsNCwtMiwwfSwNCisNCisJezEsLTcsMjIsLTQ5LDkyLC0xNTMsMjMxLC0zMjUsNDMxLC01NDQsNjU2LC03NjIsODUzLC05MjMsOTY4LDE1NDAxLDk2OCwtOTIzLDg1MywtNzYyLA0KKwk2NTYsLTU0NCw0MzEsLTMyNSwyMzEsLTE1Myw5MiwtNDksMjIsLTcsIDEsIDB9DQorDQorfTsNCisNCit2b2lkIFByZWRfbHQ0KA0KKwkJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IGV4Y2l0YXRpb24gYnVmZmVyICovDQorCQlXb3JkMTYgVDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaW50ZWdlciBwaXRjaCBsYWcgKi8NCisJCVdvcmQxNiBmcmFjLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBmcmFjdGlvbiBvZiBsYWcgICAqLw0KKwkJV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHN1YmZyYW1lIHNpemUgICAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDE2IGosIGssICp4Ow0KKwlXb3JkMzIgTF9zdW07DQorCVdvcmQxNiAqcHRyLCAqcHRyMTsNCisJV29yZDE2ICpwdHIyOw0KKw0KKwl4ID0gZXhjIC0gVDA7ICAgDQorCWZyYWMgPSAtZnJhYzsNCisJaWYgKGZyYWMgPCAwKQ0KKwl7DQorCQlmcmFjICs9IFVQX1NBTVA7DQorCQl4LS07DQorCX0gICANCisJeCAtPSAxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeCA9IExfSU5URVJQT0wyIC0gMSAqLw0KKwlrID0gMyAtIGZyYWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBrID0gVVBfU0FNUCAtIDEgLSBmcmFjICovDQorDQorCXB0cjIgPSAmKGludGVyNF8yW2tdWzBdKTsNCisJZm9yIChqID0gMDsgaiA8IExfc3ViZnI7IGorKykNCisJew0KKwkJcHRyID0gcHRyMjsNCisJCXB0cjEgPSB4Ow0KKwkJTF9zdW0gID0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKwkJTF9zdW0gKz0gdm9fbXVsdDMyKCgqcHRyMSsrKSwgKCpwdHIrKykpOw0KKw0KKwkJTF9zdW0gPSBMX3NobDIoTF9zdW0sIDIpOw0KKwkJZXhjW2pdID0gZXh0cmFjdF9oKExfYWRkKExfc3VtLCAweDgwMDApKTsNCisJCXgrKzsNCisJfQ0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcHJlZW1waC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9wcmVlbXBoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjViY2QzMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcHJlZW1waC5jCkBAIC0wLDAgKzEsODggQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IHByZWVtcGguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjogUHJlZW1waGFzaXM6IGZpbHRlcmluZyB0aHJvdWdoIDEgLSBnIHpeLTEgICAgICAgICAqDQorKgkgICAgICAgICAgIFByZWVtcGgyIC0tPiBzaWduYWwgaXMgbXVsdGlwbGllZCBieSAyICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KK3ZvaWQgUHJlZW1waCgNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IGlucHV0IHNpZ25hbCBvdmVyd3JpdHRlbiBieSB0aGUgb3V0cHV0ICovDQorCQlXb3JkMTYgbXUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBwcmVlbXBoYXNpcyBjb2VmZmljaWVudCAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbGVuZ2h0IG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSAoeFstMV0pICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICApDQorew0KKwlXb3JkMTYgdGVtcDsNCisJV29yZDMyIGksIExfdG1wOw0KKw0KKwl0ZW1wID0geFtsZyAtIDFdOyAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGkgPSBsZyAtIDE7IGkgPiAwOyBpLS0pDQorCXsNCisJCUxfdG1wID0gTF9kZXBvc2l0X2goeFtpXSk7DQorCQlMX3RtcCAtPSAoeFtpIC0gMV0gKiBtdSk8PDE7DQorCQl4W2ldID0gKExfdG1wICsgMHg4MDAwKT4+MTY7ICAgICAgICAgICAgICAgDQorCX0NCisNCisJTF90bXAgPSBMX2RlcG9zaXRfaCh4WzBdKTsNCisJTF90bXAgLT0gKCgqbWVtKSAqIG11KTw8MTsNCisJeFswXSA9IChMX3RtcCArIDB4ODAwMCk+PjE2OyAgICAgICAgICAgICAgICAgICANCisNCisJKm1lbSA9IHRlbXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCXJldHVybjsNCit9DQorDQorDQordm9pZCBQcmVlbXBoMigNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IGlucHV0IHNpZ25hbCBvdmVyd3JpdHRlbiBieSB0aGUgb3V0cHV0ICovDQorCQlXb3JkMTYgbXUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBwcmVlbXBoYXNpcyBjb2VmZmljaWVudCAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbGVuZ2h0IG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSAoeFstMV0pICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDE2IHRlbXA7DQorCVdvcmQzMiBpLCBMX3RtcDsNCisNCisJdGVtcCA9IHhbbGcgLSAxXTsgICAgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChpID0gKFdvcmQxNikgKGxnIC0gMSk7IGkgPiAwOyBpLS0pDQorCXsNCisJCUxfdG1wID0gTF9kZXBvc2l0X2goeFtpXSk7DQorCQlMX3RtcCAtPSAoeFtpIC0gMV0gKiBtdSk8PDE7DQorCQlMX3RtcCA9IChMX3RtcCA8PCAxKTsNCisJCXhbaV0gPSAoTF90bXAgKyAweDgwMDApPj4xNjsgICAgICAgICAgICAgICANCisJfQ0KKw0KKwlMX3RtcCA9IExfZGVwb3NpdF9oKHhbMF0pOw0KKwlMX3RtcCAtPSAoKCptZW0pICogbXUpPDwxOw0KKwlMX3RtcCA9IChMX3RtcCA8PCAxKTsNCisJeFswXSA9IChMX3RtcCArIDB4ODAwMCk+PjE2OyAgICAgICAgICAgICAgICAgICANCisNCisJKm1lbSA9IHRlbXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9xX2dhaW4yLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3FfZ2FpbjIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWVlZmU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9xX2dhaW4yLmMKQEAgLTAsMCArMSwzNDYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgRmlsZTogcV9nYWluMi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICBEZXNjcmlwdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBRdWFudGl6YXRpb24gb2YgcGl0Y2ggYW5kIGNvZGVib29rIGdhaW5zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogTUEgcHJlZGljdGlvbiBpcyBwZXJmb3JtZWQgb24gdGhlIGlubm92YXRpb24gZW5lcmd5IChpbiBkQiB3aXRoIG1lYW4gICAgICoNCisqIHJlbW92ZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBBbiBpbml0aWFsIHByZWRpY3RlZCBnYWluLCBnXzAsIGlzIGZpcnN0IGRldGVybWluZWQgYW5kIHRoZSBjb3JyZWN0aW9uICAgKg0KKyogZmFjdG9yICAgICBhbHBoYSA9IGdhaW4gLyBnXzAgICAgaXMgcXVhbnRpemVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIFRoZSBwaXRjaCBnYWluIGFuZCB0aGUgY29ycmVjdGlvbiBmYWN0b3IgYXJlIHZlY3RvciBxdWFudGl6ZWQgYW5kIHRoZSAgICAqDQorKiBtZWFuLXNxdWFyZWQgd2VpZ2h0ZWQgZXJyb3IgY3JpdGVyaW9uIGlzIHVzZWQgaW4gdGhlIHF1YW50aXplciBzZWFyY2guICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKyNpbmNsdWRlICJsb2cyLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorI2luY2x1ZGUgInFfZ2FpbjIudGFiIg0KKw0KKyNkZWZpbmUgTUVBTl9FTkVSICAgIDMwDQorI2RlZmluZSBSQU5HRSAgICAgICAgNjQNCisjZGVmaW5lIFBSRURfT1JERVIgICA0DQorDQorDQorLyogTUEgcHJlZGljdGlvbiBjb2VmZiA9ezAuNSwgMC40LCAwLjMsIDAuMn0gaW4gUTEzICovDQorc3RhdGljIFdvcmQxNiBwcmVkW1BSRURfT1JERVJdID0gezQwOTYsIDMyNzcsIDI0NTgsIDE2Mzh9Ow0KKw0KKw0KK3ZvaWQgSW5pdF9RX2dhaW4yKA0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQgIDpzdGF0aWMgbWVtb3J5ICgyIHdvcmRzKSAgICAgICovDQorCQkpDQorew0KKwlXb3JkMzIgaTsNCisNCisJLyogNG5kIG9yZGVyIHF1YW50aXplciBlbmVyZ3kgcHJlZGljdG9yIChpbml0IHRvIC0xNC4wIGluIFExMCkgKi8NCisJZm9yIChpID0gMDsgaSA8IFBSRURfT1JERVI7IGkrKykNCisJew0KKwkJbWVtW2ldID0gLTE0MzM2OyAgICAgICAgICAgICAgICAgICAgIC8qIHBhc3RfcXVhX2VuW2ldICovDQorCX0NCisNCisJcmV0dXJuOw0KK30NCisNCitXb3JkMTYgUV9nYWluMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmV0dXJuIGluZGV4IG9mIHF1YW50aXphdGlvbi4gICAgICAgICAgKi8NCisJCVdvcmQxNiB4bltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFfeG46IFRhcmdldCB2ZWN0b3IuICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5MVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFfeG46IEFkYXB0aXZlIGNvZGVib29rLiAgICAgICAgICAgKi8NCisJCVdvcmQxNiBRX3huLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHhuIGFuZCB5MSBmb3JtYXQgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5MltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFE5ICA6IEZpbHRlcmVkIGlubm92YXRpdmUgdmVjdG9yLiAgKi8NCisJCVdvcmQxNiBjb2RlW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFE5ICA6IElubm92YXRpdmUgdmVjdG9yLiAgICAgICAgICAgKi8NCisJCVdvcmQxNiBnX2NvZWZmW10sICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IENvcnJlbGF0aW9ucyA8eG4geTE+IDx5MSB5MT4gKi8NCisJCS8qICAgICAgICAgICBDb21wdXRlIGluIEdfcGl0Y2goKS4gICAgICAgICovDQorCQlXb3JkMTYgTF9zdWJmciwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBTdWJmcmFtZSBsZW5naHQuICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbmJpdHMsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBudW1iZXIgb2YgYml0cyAoNiBvciA3KSAgICAgICovDQorCQlXb3JkMTYgKiBnYWluX3BpdCwgICAgICAgICAgICAgICAgICAgIC8qIChpL28pUTE0OiBQaXRjaCBnYWluLiAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMzIgKiBnYWluX2NvZCwgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTYgOiBDb2RlIGdhaW4uICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZ3BfY2xpcCwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBHcCBDbGlwcGluZyBmbGFnICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBzdGF0aWMgbWVtb3J5ICgyIHdvcmRzKSAgICAgICovDQorCSAgICAgICkNCit7DQorCVdvcmQxNiBpbmRleCwgKnAsIG1pbl9pbmQsIHNpemU7DQorCVdvcmQxNiBleHAsIGZyYWMsIGdjb2RlMCwgZXhwX2djb2RlMCwgZV9tYXgsIGV4cF9jb2RlLCBxdWFfZW5lcjsNCisJV29yZDE2IGdfcGl0Y2gsIGcyX3BpdGNoLCBnX2NvZGUsIGdfcGl0X2NvZCwgZzJfY29kZSwgZzJfY29kZV9sbzsNCisJV29yZDE2IGNvZWZmWzVdLCBjb2VmZl9sb1s1XSwgZXhwX2NvZWZmWzVdOw0KKwlXb3JkMTYgZXhwX21heFs1XTsNCisJV29yZDMyIGksIGosIExfdG1wLCBkaXN0X21pbjsNCisJV29yZDE2ICpwYXN0X3F1YV9lbiwgKnRfcXVhX2dhaW47DQorDQorCXBhc3RfcXVhX2VuID0gbWVtOyAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAtIEZpbmQgdGhlIGluaXRpYWwgcXVhbnRpemF0aW9uIHBpdGNoIGluZGV4ICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAtIFNldCBnYWlucyBzZWFyY2ggcmFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJaWYgKG5iaXRzID09IDYpDQorCXsNCisJCXRfcXVhX2dhaW4gPSB0X3F1YV9nYWluNmI7ICAgICAgICAgDQorCQltaW5faW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJc2l6ZSA9IFJBTkdFOyAgICAgICAgICAgICAgICAgICAgICANCisNCisJCWlmKGdwX2NsaXAgPT0gMSkNCisJCXsNCisJCQlzaXplID0gc2l6ZSAtIDE2OyAgICAgICAgICAvKiBsaW1pdCBnYWluIHBpdGNoIHRvIDEuMCAqLw0KKwkJfQ0KKwl9IGVsc2UNCisJew0KKwkJdF9xdWFfZ2FpbiA9IHRfcXVhX2dhaW43YjsgICAgICAgICANCisNCisJCXAgPSB0X3F1YV9nYWluN2IgKyBSQU5HRTsgICAgICAgICAgICAvKiBwdCBhdCAxLzR0aCBvZiB0YWJsZSAqLw0KKw0KKwkJaiA9IG5iX3F1YV9nYWluN2IgLSBSQU5HRTsgICAgICAgICANCisNCisJCWlmIChncF9jbGlwID09IDEpDQorCQl7DQorCQkJaiA9IGogLSAyNzsgICAgICAgICAgICAgICAgLyogbGltaXQgZ2FpbiBwaXRjaCB0byAxLjAgKi8NCisJCX0NCisJCW1pbl9pbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgDQorCQlnX3BpdGNoID0gKmdhaW5fcGl0OyAgICAgICAgICAgICAgIA0KKw0KKwkJZm9yIChpID0gMDsgaSA8IGo7IGkrKywgcCArPSAyKQ0KKwkJew0KKwkJCWlmIChnX3BpdGNoID4gKnApDQorCQkJew0KKwkJCQltaW5faW5kID0gbWluX2luZCArIDE7DQorCQkJfQ0KKwkJfQ0KKwkJc2l6ZSA9IFJBTkdFOyAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogIENvbXB1dGUgY29lZmZpY2llbnQgbmVlZCBmb3IgdGhlIHF1YW50aXphdGlvbi4gICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgY29lZmZbMF0gPSAgICB5MSB5MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogIGNvZWZmWzFdID0gLTIgeG4geTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICBjb2VmZlsyXSA9ICAgIHkyIHkyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgY29lZmZbM10gPSAtMiB4biB5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogIGNvZWZmWzRdID0gIDIgeTEgeTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiBQcm9kdWN0IDx5MSB5MT4gYW5kIDx4biB5MT4gaGF2ZSBiZWVuIGNvbXB1dGUgaW4gR19waXRjaCgpIGFuZCAgICoNCisJICogYXJlIGluIHZlY3RvciBnX2NvZWZmW10uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJY29lZmZbMF0gPSBnX2NvZWZmWzBdOyAgICAgICAgICAgICAgICAgDQorCWV4cF9jb2VmZlswXSA9IGdfY29lZmZbMV07ICAgICAgICAgICAgIA0KKwljb2VmZlsxXSA9IG5lZ2F0ZShnX2NvZWZmWzJdKTsgICAgICAgICAgICAgICAgICAgIC8qIGNvZWZmWzFdID0gLTIgeG4geTEgKi8NCisJZXhwX2NvZWZmWzFdID0gZ19jb2VmZlszXSArIDE7ICAgICANCisNCisJLyogQ29tcHV0ZSBzY2FsYXIgcHJvZHVjdCA8eTJbXSx5MltdPiAqLw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCWNvZWZmWzJdID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTJfYXNtKHkyLCB5MiwgTF9zdWJmciwgJmV4cCkpOw0KKyNlbHNlDQorCWNvZWZmWzJdID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTIoeTIsIHkyLCBMX3N1YmZyLCAmZXhwKSk7DQorI2VuZGlmDQorCWV4cF9jb2VmZlsyXSA9IChleHAgLSAxOCkgKyAoUV94biA8PCAxKTsgICAgIC8qIC0xOCAoeTIgUTkpICovDQorDQorCS8qIENvbXB1dGUgc2NhbGFyIHByb2R1Y3QgLTIqPHhuW10seTJbXT4gKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCWNvZWZmWzNdID0gZXh0cmFjdF9oKExfbmVnYXRlKERvdF9wcm9kdWN0MTJfYXNtKHhuLCB5MiwgTF9zdWJmciwgJmV4cCkpKTsNCisjZWxzZQ0KKwljb2VmZlszXSA9IGV4dHJhY3RfaChMX25lZ2F0ZShEb3RfcHJvZHVjdDEyKHhuLCB5MiwgTF9zdWJmciwgJmV4cCkpKTsNCisjZW5kaWYNCisNCisJZXhwX2NvZWZmWzNdID0gKGV4cCAtIDgpICsgUV94bjsgIC8qIC05ICh5MiBROSksICsxICgyIHhuIHkyKSAqLw0KKw0KKwkvKiBDb21wdXRlIHNjYWxhciBwcm9kdWN0IDIqPHkxW10seTJbXT4gKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJY29lZmZbNF0gPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oeTEsIHkyLCBMX3N1YmZyLCAmZXhwKSk7DQorI2Vsc2UNCisJY29lZmZbNF0gPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMih5MSwgeTIsIExfc3ViZnIsICZleHApKTsNCisjZW5kaWYNCisJZXhwX2NvZWZmWzRdID0gKGV4cCAtIDgpICsgUV94bjsgIC8qIC05ICh5MiBROSksICsxICgyIHkxIHkyKSAqLw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAgRmluZCBlbmVyZ3kgb2YgY29kZSBhbmQgY29tcHV0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICBMX3RtcCA9IE1FQU5fRU5FUiAtIDEwbG9nMTAoZW5lcmd5IG9mIGNvZGUvIExfc3ViZnIpICAgICAgICAgKg0KKwkgKiAgICAgICAgICA9IE1FQU5fRU5FUiAtIDMuMDEwMypsb2cyKGVuZXJneSBvZiBjb2RlLyBMX3N1YmZyKSAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJTF90bXAgPSBEb3RfcHJvZHVjdDEyX2FzbShjb2RlLCBjb2RlLCBMX3N1YmZyLCAmZXhwX2NvZGUpOw0KKyNlbHNlDQorCUxfdG1wID0gRG90X3Byb2R1Y3QxMihjb2RlLCBjb2RlLCBMX3N1YmZyLCAmZXhwX2NvZGUpOw0KKyNlbmRpZg0KKwkvKiBleHBfY29kZTogLTE4IChjb2RlIGluIFE5KSwgLTYgKC9MX3N1YmZyKSwgLTMxIChMX3RtcCBRMzEtPlEwKSAqLw0KKwlleHBfY29kZSA9IChleHBfY29kZSAtICgxOCArIDYgKyAzMSkpOw0KKw0KKwlMb2cyKExfdG1wLCAmZXhwLCAmZnJhYyk7DQorCWV4cCArPSBleHBfY29kZTsNCisJTF90bXAgPSBNcHlfMzJfMTYoZXhwLCBmcmFjLCAtMjQ2NjApOyAgLyogeCAtMy4wMTAzKFExMykgLT4gUTE0ICovDQorDQorCUxfdG1wICs9IChNRUFOX0VORVIgKiA4MTkyKTw8MTsgLyogKyBNRUFOX0VORVIgaW4gUTE0ICovDQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIENvbXB1dGUgZ2NvZGUwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICA9IFN1bShpPTAsMSkgcHJlZFtpXSpwYXN0X3F1YV9lbltpXSArIG1lYW5fZW5lciAtIGVuZXJfY29kZSAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlMX3RtcCA9IChMX3RtcCA8PCAxMCk7ICAgICAgICAgICAgICAvKiBGcm9tIFExNCB0byBRMjQgKi8NCisJTF90bXAgKz0gKHByZWRbMF0gKiBwYXN0X3F1YV9lblswXSk8PDE7ICAgICAgLyogUTEzKlExMCAtPiBRMjQgKi8NCisJTF90bXAgKz0gKHByZWRbMV0gKiBwYXN0X3F1YV9lblsxXSk8PDE7ICAgICAgLyogUTEzKlExMCAtPiBRMjQgKi8NCisJTF90bXAgKz0gKHByZWRbMl0gKiBwYXN0X3F1YV9lblsyXSk8PDE7ICAgICAgLyogUTEzKlExMCAtPiBRMjQgKi8NCisJTF90bXAgKz0gKHByZWRbM10gKiBwYXN0X3F1YV9lblszXSk8PDE7ICAgICAgLyogUTEzKlExMCAtPiBRMjQgKi8NCisNCisJZ2NvZGUwID0gZXh0cmFjdF9oKExfdG1wKTsgICAgICAgICAgICAgLyogRnJvbSBRMjQgdG8gUTggICovDQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIGdjb2RlMCA9IHBvdygxMC4wLCBnY29kZTAvMjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICA9IHBvdygyLCAzLjMyMTkyOCpnY29kZTAvMjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICA9IHBvdygyLCAwLjE2NjA5NipnY29kZTApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwlMX3RtcCA9IHZvX0xfbXVsdChnY29kZTAsIDU0NDMpOyAgICAgICAgICAvKiAqMC4xNjYwOTYgaW4gUTE1IC0+IFEyNCAgICAgKi8NCisJTF90bXAgPSBMX3RtcCA+PiA4OyAgICAgICAgICAgICAgIC8qIEZyb20gUTI0IHRvIFExNiAgICAgICAgICAgICAqLw0KKwlWT19MX0V4dHJhY3QoTF90bXAsICZleHBfZ2NvZGUwLCAmZnJhYyk7ICAvKiBFeHRyYWN0IGV4cG9uZW50IG9mIGdjb2RlMCAgKi8NCisNCisJZ2NvZGUwID0gKFdvcmQxNikoUG93MigxNCwgZnJhYykpOyAgICAvKiBQdXQgMTQgYXMgZXhwb25lbnQgc28gdGhhdCAgKi8NCisJLyogb3V0cHV0IG9mIFBvdzIoKSB3aWxsIGJlOiAgICovDQorCS8qIDE2Mzg0IDwgUG93MigpIDw9IDMyNzY3ICAgICAqLw0KKwlleHBfZ2NvZGUwIC09IDE0Ow0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIEZpbmQgdGhlIGJlc3QgcXVhbnRpemVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiBCZWZvcmUgZG9pbmcgdGhlIGNvbXB1dGF0aW9uIHdlIG5lZWQgdG8gYWxpbmcgZXhwb25lbnRzIG9mIGNvZWZmW10gICAgICAqDQorCSAqIHRvIGJlIHN1cmUgdG8gaGF2ZSB0aGUgbWF4aW11bSBwcmVjaXNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiBJbiB0aGUgdGFibGUgdGhlIHBpdGNoIGdhaW5zIGFyZSBpbiBRMTQsIHRoZSBjb2RlIGdhaW5zIGFyZSBpbiBRMTEgYW5kICAqDQorCSAqIGFyZSBtdWx0aXBseSBieSBnY29kZTAgd2hpY2ggaGF2ZSBiZWVuIG11bHRpcGx5IGJ5IDJeZXhwX2djb2RlMC4gICAgICAgICoNCisJICogQWxzbyB3aGVuIHdlIGNvbXB1dGUgZ19waXRjaCpnX3BpdGNoLCBnX2NvZGUqZ19jb2RlIGFuZCBnX3BpdGNoKmdfY29kZSAgKg0KKwkgKiB3ZSBkaXZpZGUgYnkgMl4xNS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIENvbnNpZGVyaW5nIGFsbCB0aGUgc2NhbGluZyBhYm92ZSB3ZSBoYXZlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIGV4cF9jb2RlID0gZXhwX2djb2RlMC0xMSsxNSA9IGV4cF9nY29kZTArNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICBnX3BpdGNoKmdfcGl0Y2ggID0gLTE0LTE0KzE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIGdfcGl0Y2ggICAgICAgICAgPSAtMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgZ19jb2RlKmdfY29kZSAgICA9ICgyKmV4cF9jb2RlKSsxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICBnX2NvZGUgICAgICAgICAgID0gZXhwX2NvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIGdfcGl0Y2gqZ19jb2RlICAgPSAtMTQgKyBleHBfY29kZSArMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICBnX3BpdGNoKmdfcGl0Y2ggKiBjb2VmZlswXSAgO2V4cF9tYXgwID0gZXhwX2NvZWZmWzBdIC0gMTMgICAgICAgICAgICAgKg0KKwkgKiAgIGdfcGl0Y2ggICAgICAgICAqIGNvZWZmWzFdICA7ZXhwX21heDEgPSBleHBfY29lZmZbMV0gLSAxNCAgICAgICAgICAgICAqDQorCSAqICAgZ19jb2RlKmdfY29kZSAgICogY29lZmZbMl0gIDtleHBfbWF4MiA9IGV4cF9jb2VmZlsyXSArMTUrKDIqZXhwX2NvZGUpICoNCisJICogICBnX2NvZGUgICAgICAgICAgKiBjb2VmZlszXSAgO2V4cF9tYXgzID0gZXhwX2NvZWZmWzNdICsgZXhwX2NvZGUgICAgICAgKg0KKwkgKiAgIGdfcGl0Y2gqZ19jb2RlICAqIGNvZWZmWzRdICA7ZXhwX21heDQgPSBleHBfY29lZmZbNF0gKyAxICsgZXhwX2NvZGUgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCWV4cF9jb2RlID0gKGV4cF9nY29kZTAgKyA0KTsNCisJZXhwX21heFswXSA9IChleHBfY29lZmZbMF0gLSAxMyk7ICAgIA0KKwlleHBfbWF4WzFdID0gKGV4cF9jb2VmZlsxXSAtIDE0KTsgICAgDQorCWV4cF9tYXhbMl0gPSAoZXhwX2NvZWZmWzJdICsgKDE1ICsgKGV4cF9jb2RlIDw8IDEpKSk7ICANCisJZXhwX21heFszXSA9IChleHBfY29lZmZbM10gKyBleHBfY29kZSk7ICAgDQorCWV4cF9tYXhbNF0gPSAoZXhwX2NvZWZmWzRdICsgKDEgKyBleHBfY29kZSkpOyAgDQorDQorCS8qIEZpbmQgbWF4aW11bSBleHBvbmFudCAqLw0KKw0KKwllX21heCA9IGV4cF9tYXhbMF07ICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAxOyBpIDwgNTsgaSsrKQ0KKwl7DQorCQlpZihleHBfbWF4W2ldID4gZV9tYXgpDQorCQl7DQorCQkJZV9tYXggPSBleHBfbWF4W2ldOyAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCS8qIGFsaWduIGNvZWZmW10gYW5kIHNhdmUgaW4gc3BlY2lhbCAzMiBiaXQgZG91YmxlIHByZWNpc2lvbiAqLw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKQ0KKwl7DQorCQlqID0gYWRkMSh2b19zdWIoZV9tYXgsIGV4cF9tYXhbaV0pLCAyKTsvKiAvNCB0byBhdm9pZCBvdmVyZmxvdyAqLw0KKwkJTF90bXAgPSBMX2RlcG9zaXRfaChjb2VmZltpXSk7DQorCQlMX3RtcCA9IExfc2hyKExfdG1wLCBqKTsNCisJCVZPX0xfRXh0cmFjdChMX3RtcCwgJmNvZWZmW2ldLCAmY29lZmZfbG9baV0pOw0KKwkJY29lZmZfbG9baV0gPSAoY29lZmZfbG9baV0gPj4gMyk7ICAgLyogbG8gPj4gMyAqLw0KKwl9DQorDQorCS8qIENvZGVib29rIHNlYXJjaCAqLw0KKwlkaXN0X21pbiA9IE1BWF8zMjsgICAgICAgICAgICAgICAgICAgICANCisJcCA9ICZ0X3F1YV9nYWluW21pbl9pbmQgPDwgMV07ICAgICAgDQorDQorCWluZGV4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQ0KKwl7DQorCQlnX3BpdGNoID0gKnArKzsgICAgICAgICAgICAgICAgICAgIA0KKwkJZ19jb2RlID0gKnArKzsgICAgICAgICAgICAgICAgICAgICANCisNCisJCWdfY29kZSA9ICgoZ19jb2RlICogZ2NvZGUwKSArIDB4NDAwMCk+PjE1Ow0KKwkJZzJfcGl0Y2ggPSAoKGdfcGl0Y2ggKiBnX3BpdGNoKSArIDB4NDAwMCk+PjE1Ow0KKwkJZ19waXRfY29kID0gKChnX2NvZGUgKiBnX3BpdGNoKSArIDB4NDAwMCk+PjE1Ow0KKwkJTF90bXAgPSAoZ19jb2RlICogZ19jb2RlKTw8MTsNCisJCVZPX0xfRXh0cmFjdChMX3RtcCwgJmcyX2NvZGUsICZnMl9jb2RlX2xvKTsNCisNCisJCUxfdG1wID0gKGNvZWZmWzJdICogZzJfY29kZV9sbyk8PDE7DQorCQlMX3RtcCA9ICAoTF90bXAgPj4gMyk7DQorCQlMX3RtcCArPSAoY29lZmZfbG9bMF0gKiBnMl9waXRjaCk8PDE7DQorCQlMX3RtcCArPSAoY29lZmZfbG9bMV0gKiBnX3BpdGNoKTw8MTsNCisJCUxfdG1wICs9IChjb2VmZl9sb1syXSAqIGcyX2NvZGUpPDwxOw0KKwkJTF90bXAgKz0gKGNvZWZmX2xvWzNdICogZ19jb2RlKTw8MTsNCisJCUxfdG1wICs9IChjb2VmZl9sb1s0XSAqIGdfcGl0X2NvZCk8PDE7DQorCQlMX3RtcCA9ICAoTF90bXAgPj4gMTIpOw0KKwkJTF90bXAgKz0gKGNvZWZmWzBdICogZzJfcGl0Y2gpPDwxOw0KKwkJTF90bXAgKz0gKGNvZWZmWzFdICogZ19waXRjaCk8PDE7DQorCQlMX3RtcCArPSAoY29lZmZbMl0gKiBnMl9jb2RlKTw8MTsNCisJCUxfdG1wICs9IChjb2VmZlszXSAqIGdfY29kZSk8PDE7DQorCQlMX3RtcCArPSAoY29lZmZbNF0gKiBnX3BpdF9jb2QpPDwxOw0KKw0KKwkJaWYoTF90bXAgPCBkaXN0X21pbikNCisJCXsNCisJCQlkaXN0X21pbiA9IExfdG1wOyAgICAgICAgICAgICAgDQorCQkJaW5kZXggPSBpOyAgICAgICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCS8qIFJlYWQgdGhlIHF1YW50aXplZCBnYWlucyAqLw0KKwlpbmRleCA9IGluZGV4ICsgbWluX2luZDsNCisJcCA9ICZ0X3F1YV9nYWluWyhpbmRleCArIGluZGV4KV07ICAgIA0KKwkqZ2Fpbl9waXQgPSAqcCsrOyAgICAgICAgICAgICAgICAgICAgICAgLyogc2VsZWN0ZWQgcGl0Y2ggZ2FpbiBpbiBRMTQgKi8NCisJZ19jb2RlID0gKnArKzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlbGVjdGVkIGNvZGUgZ2FpbiBpbiBRMTEgICovDQorDQorCUxfdG1wID0gdm9fTF9tdWx0KGdfY29kZSwgZ2NvZGUwKTsgICAgICAgICAgICAgLyogUTExKlEwIC0+IFExMiAqLw0KKwlMX3RtcCA9IExfc2hsKExfdG1wLCAoZXhwX2djb2RlMCArIDQpKTsgICAvKiBRMTIgLT4gUTE2ICovDQorDQorCSpnYWluX2NvZCA9IExfdG1wOyAgICAgICAgICAgICAgICAgICAgICAgLyogZ2FpbiBvZiBjb2RlIGluIFExNiAqLw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogcXVhX2VuZXIgPSAyMCpsb2cxMChnX2NvZGUpICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgID0gNi4wMjA2KmxvZzIoZ19jb2RlKSAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgICAgICA9IDYuMDIwNioobG9nMihnX2NvZGVRMTEpIC0gMTEpICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwlMX3RtcCA9IExfZGVwb3NpdF9sKGdfY29kZSk7DQorCUxvZzIoTF90bXAsICZleHAsICZmcmFjKTsNCisJZXhwIC09IDExOw0KKwlMX3RtcCA9IE1weV8zMl8xNihleHAsIGZyYWMsIDI0NjYwKTsgICAvKiB4IDYuMDIwNiBpbiBRMTIgKi8NCisNCisJcXVhX2VuZXIgPSAoV29yZDE2KShMX3RtcCA+PiAzKTsgLyogcmVzdWx0IGluIFExMCAqLw0KKw0KKwkvKiB1cGRhdGUgdGFibGUgb2YgcGFzdCBxdWFudGl6ZWQgZW5lcmdpZXMgKi8NCisNCisJcGFzdF9xdWFfZW5bM10gPSBwYXN0X3F1YV9lblsyXTsgICAgICAgDQorCXBhc3RfcXVhX2VuWzJdID0gcGFzdF9xdWFfZW5bMV07ICAgICAgIA0KKwlwYXN0X3F1YV9lblsxXSA9IHBhc3RfcXVhX2VuWzBdOyAgICAgICANCisJcGFzdF9xdWFfZW5bMF0gPSBxdWFfZW5lcjsgICAgICAgICAgICAgDQorDQorCXJldHVybiAoaW5kZXgpOw0KK30NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3FfcHVsc2UuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcV9wdWxzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOGJhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3FfcHVsc2UuYwpAQCAtMCwwICsxLDQwMCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogcV9wdWxzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246IENvZGluZyBhbmQgZGVjb2Rpbmcgb2YgYWxnZWJyYWljIGNvZGVib29rICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAicV9wdWxzZS5oIg0KKw0KKyNkZWZpbmUgTkJfUE9TIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3MgaW4gdHJhY2ssIG1hc2sgZm9yIHNpZ24gYml0ICovDQorDQorV29yZDMyIHF1YW50XzFwX04xKCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gTisxIGJpdHMgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3MsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAgICAgICAqLw0KKwkJV29yZDE2IE4pICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorew0KKwlXb3JkMTYgbWFzazsNCisJV29yZDMyIGluZGV4Ow0KKw0KKwltYXNrID0gKDEgPDwgTikgLSAxOyAgICAgICAgICAgICAgLyogbWFzayA9ICgoMTw8TiktMSk7ICovDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogUXVhbnRpemF0aW9uIG9mIDEgcHVsc2Ugd2l0aCBOKzEgYml0czogICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlpbmRleCA9IExfZGVwb3NpdF9sKChXb3JkMTYpIChwb3MgJiBtYXNrKSk7DQorCWlmICgocG9zICYgTkJfUE9TKSAhPSAwKQ0KKwl7DQorCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBMX2RlcG9zaXRfbCgxIDw8IE4pKTsgICAvKiBpbmRleCArPSAxIDw8IE47ICovDQorCX0NCisJcmV0dXJuIChpbmRleCk7DQorfQ0KKw0KKw0KK1dvcmQzMiBxdWFudF8ycF8yTjEoICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmV0dXJuICgyKk4pKzEgYml0cyAgICAgICAgICovDQorCQlXb3JkMTYgcG9zMSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMSAgICAgKi8NCisJCVdvcmQxNiBwb3MyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAyICAgICAqLw0KKwkJV29yZDE2IE4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorew0KKwlXb3JkMTYgbWFzaywgdG1wOw0KKwlXb3JkMzIgaW5kZXg7DQorCW1hc2sgPSAoMSA8PCBOKSAtIDE7ICAgICAgICAgICAgICAvKiBtYXNrID0gKCgxPDxOKS0xKTsgKi8NCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBRdWFudGl6YXRpb24gb2YgMiBwdWxzZXMgd2l0aCAyKk4rMSBiaXRzOiAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCWlmICgoKHBvczIgXiBwb3MxKSAmIE5CX1BPUykgPT0gMCkNCisJew0KKwkJLyogc2lnbiBvZiAxc3QgcHVsc2UgPT0gc2lnbiBvZiAydGggcHVsc2UgKi8NCisJCWlmKHBvczEgPD0gcG9zMikgICAgICAgICAgLyogKChwb3MxIC0gcG9zMikgPD0gMCkgKi8NCisJCXsNCisJCQkvKiBpbmRleCA9ICgocG9zMSAmIG1hc2spIDw8IE4pICsgKHBvczIgJiBtYXNrKTsgKi8NCisJCQlpbmRleCA9IExfZGVwb3NpdF9sKGFkZDEoKCgoV29yZDE2KSAocG9zMSAmIG1hc2spKSA8PCBOKSwgKChXb3JkMTYpIChwb3MyICYgbWFzaykpKSk7DQorCQl9IGVsc2UNCisJCXsNCisJCQkvKiAoKHBvczIgJiBtYXNrKSA8PCBOKSArIChwb3MxICYgbWFzayk7ICovDQorCQkJaW5kZXggPSBMX2RlcG9zaXRfbChhZGQxKCgoKFdvcmQxNikgKHBvczIgJiBtYXNrKSkgPDwgTiksICgoV29yZDE2KSAocG9zMSAmIG1hc2spKSkpOw0KKwkJfQ0KKwkJaWYgKChwb3MxICYgTkJfUE9TKSAhPSAwKQ0KKwkJew0KKwkJCXRtcCA9IChOIDw8IDEpOw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsICgxTCA8PCB0bXApKTsgICAgICAgLyogaW5kZXggKz0gMSA8PCAoMipOKTsgKi8NCisJCX0NCisJfSBlbHNlDQorCXsNCisJCS8qIHNpZ24gb2YgMXN0IHB1bHNlICE9IHNpZ24gb2YgMnRoIHB1bHNlICovDQorCQlpZiAodm9fc3ViKChXb3JkMTYpIChwb3MxICYgbWFzayksIChXb3JkMTYpIChwb3MyICYgbWFzaykpIDw9IDApDQorCQl7DQorCQkJLyogaW5kZXggPSAoKHBvczIgJiBtYXNrKSA8PCBOKSArIChwb3MxICYgbWFzayk7ICovDQorCQkJaW5kZXggPSBMX2RlcG9zaXRfbChhZGQxKCgoKFdvcmQxNikgKHBvczIgJiBtYXNrKSkgPDwgTiksICgoV29yZDE2KSAocG9zMSAmIG1hc2spKSkpOyANCisJCQlpZiAoKHBvczIgJiBOQl9QT1MpICE9IDApDQorCQkJew0KKwkJCQl0bXAgPSAoTiA8PCAxKTsgICAgICAgICAgIC8qIGluZGV4ICs9IDEgPDwgKDIqTik7ICovDQorCQkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsICgxTCA8PCB0bXApKTsNCisJCQl9DQorCQl9IGVsc2UNCisJCXsNCisJCQkvKiBpbmRleCA9ICgocG9zMSAmIG1hc2spIDw8IE4pICsgKHBvczIgJiBtYXNrKTsJICovDQorCQkJaW5kZXggPSBMX2RlcG9zaXRfbChhZGQxKCgoKFdvcmQxNikgKHBvczEgJiBtYXNrKSkgPDwgTiksICgoV29yZDE2KSAocG9zMiAmIG1hc2spKSkpOyANCisJCQlpZiAoKHBvczEgJiBOQl9QT1MpICE9IDApDQorCQkJew0KKwkJCQl0bXAgPSAoTiA8PCAxKTsNCisJCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKDEgPDwgdG1wKSk7ICAgIC8qIGluZGV4ICs9IDEgPDwgKDIqTik7ICovDQorCQkJfQ0KKwkJfQ0KKwl9DQorCXJldHVybiAoaW5kZXgpOw0KK30NCisNCisNCitXb3JkMzIgcXVhbnRfM3BfM04xKCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiAoMypOKSsxIGJpdHMgICAgICAgICAqLw0KKwkJV29yZDE2IHBvczEsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEgICAgICovDQorCQlXb3JkMTYgcG9zMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMiAgICAgKi8NCisJCVdvcmQxNiBwb3MzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAzICAgICAqLw0KKwkJV29yZDE2IE4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorew0KKwlXb3JkMTYgbmJfcG9zOw0KKwlXb3JkMzIgaW5kZXg7DQorDQorCW5iX3BvcyA9KDEgPDwoTiAtIDEpKTsgICAgICAgICAgICAvKiBuYl9wb3MgPSAoMTw8KE4tMSkpOyAqLw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIFF1YW50aXphdGlvbiBvZiAzIHB1bHNlcyB3aXRoIDMqTisxIGJpdHM6ICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJaWYgKCgocG9zMSBeIHBvczIpICYgbmJfcG9zKSA9PSAwKQ0KKwl7DQorCQlpbmRleCA9IHF1YW50XzJwXzJOMShwb3MxLCBwb3MyLCBzdWIoTiwgMSkpOyAgICAvKiBpbmRleCA9IHF1YW50XzJwXzJOMShwb3MxLCBwb3MyLCAoTi0xKSk7ICovDQorCQkvKiBpbmRleCArPSAocG9zMSAmIG5iX3BvcykgPDwgTjsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChMX2RlcG9zaXRfbCgoV29yZDE2KSAocG9zMSAmIG5iX3BvcykpIDw8IE4pKTsgIA0KKwkJLyogaW5kZXggKz0gcXVhbnRfMXBfTjEocG9zMywgTikgPDwgKDIqTik7ICovDQorCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAocXVhbnRfMXBfTjEocG9zMywgTik8PChOIDw8IDEpKSk7DQorDQorCX0gZWxzZSBpZiAoKChwb3MxIF4gcG9zMykgJiBuYl9wb3MpID09IDApDQorCXsNCisJCWluZGV4ID0gcXVhbnRfMnBfMk4xKHBvczEsIHBvczMsIHN1YihOLCAxKSk7ICAgIC8qIGluZGV4ID0gcXVhbnRfMnBfMk4xKHBvczEsIHBvczMsIChOLTEpKTsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChMX2RlcG9zaXRfbCgoV29yZDE2KSAocG9zMSAmIG5iX3BvcykpIDw8IE4pKTsgDQorCQkvKiBpbmRleCArPSAocG9zMSAmIG5iX3BvcykgPDwgTjsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChxdWFudF8xcF9OMShwb3MyLCBOKSA8PCAoTiA8PCAxKSkpOw0KKwkJLyogaW5kZXggKz0gcXVhbnRfMXBfTjEocG9zMiwgTikgPDwNCisJCSAqICgyKk4pOyAqLw0KKwl9IGVsc2UNCisJew0KKwkJaW5kZXggPSBxdWFudF8ycF8yTjEocG9zMiwgcG9zMywgKE4gLSAxKSk7ICAgIC8qIGluZGV4ID0gcXVhbnRfMnBfMk4xKHBvczIsIHBvczMsIChOLTEpKTsgKi8NCisJCS8qIGluZGV4ICs9IChwb3MyICYgbmJfcG9zKSA8PCBOOwkJCSAqLw0KKwkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKExfZGVwb3NpdF9sKChXb3JkMTYpIChwb3MyICYgbmJfcG9zKSkgPDwgTikpOyAgDQorCQkvKiBpbmRleCArPSBxdWFudF8xcF9OMShwb3MxLCBOKSA8PCAoMipOKTsJICovDQorCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAocXVhbnRfMXBfTjEocG9zMSwgTikgPDwgKE4gPDwgMSkpKTsNCisJfQ0KKwlyZXR1cm4gKGluZGV4KTsNCit9DQorDQorDQorV29yZDMyIHF1YW50XzRwXzROMSggICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gKDQqTikrMSBiaXRzICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3MxLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxICAgICAqLw0KKwkJV29yZDE2IHBvczIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDIgICAgICovDQorCQlXb3JkMTYgcG9zMywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMyAgICAgKi8NCisJCVdvcmQxNiBwb3M0LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSA0ICAgICAqLw0KKwkJV29yZDE2IE4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorew0KKwlXb3JkMTYgbmJfcG9zOw0KKwlXb3JkMzIgaW5kZXg7DQorDQorCW5iX3BvcyA9IDEgPDwgKE4gLSAxKTsgICAgICAgICAgICAvKiBuYl9wb3MgPSAoMTw8KE4tMSkpOyAgKi8NCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBRdWFudGl6YXRpb24gb2YgNCBwdWxzZXMgd2l0aCA0Kk4rMSBiaXRzOiAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCWlmICgoKHBvczEgXiBwb3MyKSAmIG5iX3BvcykgPT0gMCkNCisJew0KKwkJaW5kZXggPSBxdWFudF8ycF8yTjEocG9zMSwgcG9zMiwgc3ViKE4sIDEpKTsgICAgLyogaW5kZXggPSBxdWFudF8ycF8yTjEocG9zMSwgcG9zMiwgKE4tMSkpOyAqLw0KKwkJLyogaW5kZXggKz0gKHBvczEgJiBuYl9wb3MpIDw8IE47CSAqLw0KKwkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKExfZGVwb3NpdF9sKChXb3JkMTYpIChwb3MxICYgbmJfcG9zKSkgPDwgTikpOyAgDQorCQkvKiBpbmRleCArPSBxdWFudF8ycF8yTjEocG9zMywgcG9zNCwgTikgPDwgKDIqTik7ICovDQorCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAocXVhbnRfMnBfMk4xKHBvczMsIHBvczQsIE4pIDw8IChOIDw8IDEpKSk7DQorCX0gZWxzZSBpZiAoKChwb3MxIF4gcG9zMykgJiBuYl9wb3MpID09IDApDQorCXsNCisJCWluZGV4ID0gcXVhbnRfMnBfMk4xKHBvczEsIHBvczMsIChOIC0gMSkpOw0KKwkJLyogaW5kZXggKz0gKHBvczEgJiBuYl9wb3MpIDw8IE47ICovDQorCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAoTF9kZXBvc2l0X2woKFdvcmQxNikgKHBvczEgJiBuYl9wb3MpKSA8PCBOKSk7ICANCisJCS8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3MyLCBwb3M0LCBOKSA8PCAoMipOKTsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChxdWFudF8ycF8yTjEocG9zMiwgcG9zNCwgTikgPDwgKE4gPDwgMSkpKTsNCisJfSBlbHNlDQorCXsNCisJCWluZGV4ID0gcXVhbnRfMnBfMk4xKHBvczIsIHBvczMsIChOIC0gMSkpOw0KKwkJLyogaW5kZXggKz0gKHBvczIgJiBuYl9wb3MpIDw8IE47ICovDQorCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAoTF9kZXBvc2l0X2woKFdvcmQxNikgKHBvczIgJiBuYl9wb3MpKSA8PCBOKSk7ICANCisJCS8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3MxLCBwb3M0LCBOKSA8PCAoMipOKTsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChxdWFudF8ycF8yTjEocG9zMSwgcG9zNCwgTikgPDwgKE4gPDwgMSkpKTsNCisJfQ0KKwlyZXR1cm4gKGluZGV4KTsNCit9DQorDQorDQorV29yZDMyIHF1YW50XzRwXzROKCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gNCpOIGJpdHMgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3NbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxLi40ICAqLw0KKwkJV29yZDE2IE4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorew0KKwlXb3JkMTYgbmJfcG9zLCBtYXNrLCBuXzEsIHRtcDsNCisJV29yZDE2IHBvc0FbNF0sIHBvc0JbNF07DQorCVdvcmQzMiBpLCBqLCBrLCBpbmRleDsNCisNCisJbl8xID0gKFdvcmQxNikgKE4gLSAxKTsgICAgICAgICAgICAgICAgDQorCW5iX3BvcyA9ICgxIDw8IG5fMSk7ICAgICAgICAgICAgICAgICAgLyogbmJfcG9zID0gKDE8PG5fMSk7ICovDQorCW1hc2sgPSB2b19zdWIoKDEgPDwgTiksIDEpOyAgICAgICAgICAgICAgLyogbWFzayA9ICgoMTw8TiktMSk7ICovDQorDQorCWkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlqID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChrID0gMDsgayA8IDQ7IGsrKykNCisJew0KKwkJaWYgKChwb3Nba10gJiBuYl9wb3MpID09IDApDQorCQl7DQorCQkJcG9zQVtpKytdID0gcG9zW2tdOyAgICAgICAgICAgIA0KKwkJfSBlbHNlDQorCQl7DQorCQkJcG9zQltqKytdID0gcG9zW2tdOyAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCXN3aXRjaCAoaSkNCisJew0KKwkJY2FzZSAwOg0KKwkJCXRtcCA9IHZvX3N1YigoTiA8PCAyKSwgMyk7ICAgICAgICAgICAvKiBpbmRleCA9IDEgPDwgKCg0Kk4pLTMpOyAqLw0KKwkJCWluZGV4ID0gKDFMIDw8IHRtcCk7DQorCQkJLyogaW5kZXggKz0gcXVhbnRfNHBfNE4xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIHBvc0JbM10sIG5fMSk7ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfNHBfNE4xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIHBvc0JbM10sIG5fMSkpOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSAxOg0KKwkJCS8qIGluZGV4ID0gcXVhbnRfMXBfTjEocG9zQVswXSwgbl8xKSA8PCAoKDMqbl8xKSsxKTsgKi8NCisJCQl0bXAgPSBhZGQxKChXb3JkMTYpKCh2b19MX211bHQoMywgbl8xKSA+PiAxKSksIDEpOw0KKwkJCWluZGV4ID0gTF9zaGwocXVhbnRfMXBfTjEocG9zQVswXSwgbl8xKSwgdG1wKTsNCisJCQkvKiBpbmRleCArPSBxdWFudF8zcF8zTjEocG9zQlswXSwgcG9zQlsxXSwgcG9zQlsyXSwgbl8xKTsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8zcF8zTjEocG9zQlswXSwgcG9zQlsxXSwgcG9zQlsyXSwgbl8xKSk7DQorCQkJYnJlYWs7DQorCQljYXNlIDI6DQorCQkJdG1wID0gKChuXzEgPDwgMSkgKyAxKTsgICAgICAgICAvKiBpbmRleCA9IHF1YW50XzJwXzJOMShwb3NBWzBdLCBwb3NBWzFdLCBuXzEpIDw8ICgoMipuXzEpKzEpOyAqLw0KKwkJCWluZGV4ID0gTF9zaGwocXVhbnRfMnBfMk4xKHBvc0FbMF0sIHBvc0FbMV0sIG5fMSksIHRtcCk7DQorCQkJLyogaW5kZXggKz0gcXVhbnRfMnBfMk4xKHBvc0JbMF0sIHBvc0JbMV0sIG5fMSk7ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMnBfMk4xKHBvc0JbMF0sIHBvc0JbMV0sIG5fMSkpOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSAzOg0KKwkJCS8qIGluZGV4ID0gcXVhbnRfM3BfM04xKHBvc0FbMF0sIHBvc0FbMV0sIHBvc0FbMl0sIG5fMSkgPDwgTjsgKi8NCisJCQlpbmRleCA9IExfc2hsKHF1YW50XzNwXzNOMShwb3NBWzBdLCBwb3NBWzFdLCBwb3NBWzJdLCBuXzEpLCBOKTsNCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8xcF9OMShwb3NCWzBdLCBuXzEpKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzFwX04xKHBvc0JbMF0sIG5fMSk7ICovDQorCQkJYnJlYWs7DQorCQljYXNlIDQ6DQorCQkJaW5kZXggPSBxdWFudF80cF80TjEocG9zQVswXSwgcG9zQVsxXSwgcG9zQVsyXSwgcG9zQVszXSwgbl8xKTsNCisJCQlicmVhazsNCisJCWRlZmF1bHQ6DQorCQkJaW5kZXggPSAwOw0KKwkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3IgaW4gZnVuY3Rpb24gcXVhbnRfNHBfNE5cbiIpOw0KKwl9DQorCXRtcCA9ICgoTiA8PCAyKSAtIDIpOyAgICAgICAgICAgICAgIC8qIGluZGV4ICs9IChpICYgMykgPDwgKCg0Kk4pLTIpOyAqLw0KKwlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBMX3NobCgoTF9kZXBvc2l0X2woaSkgJiAoM0wpKSwgdG1wKSk7DQorDQorCXJldHVybiAoaW5kZXgpOw0KK30NCisNCisNCisNCitXb3JkMzIgcXVhbnRfNXBfNU4oICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiA1Kk4gYml0cyAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHBvc1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEuLjUgICovDQorCQlXb3JkMTYgTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCit7DQorCVdvcmQxNiBuYl9wb3MsIG5fMSwgdG1wOw0KKwlXb3JkMTYgcG9zQVs1XSwgcG9zQls1XTsNCisJV29yZDMyIGksIGosIGssIGluZGV4LCB0bXAyOw0KKw0KKwluXzEgPSAoV29yZDE2KSAoTiAtIDEpOyAgICAgICAgICAgICAgICANCisJbmJfcG9zID0gKDEgPDwgbl8xKTsgICAgICAgICAgICAgICAgICAvKiBuYl9wb3MgPSAoMTw8bl8xKTsgKi8NCisNCisJaSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWogPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGsgPSAwOyBrIDwgNTsgaysrKQ0KKwl7DQorCQlpZiAoKHBvc1trXSAmIG5iX3BvcykgPT0gMCkNCisJCXsNCisJCQlwb3NBW2krK10gPSBwb3Nba107ICAgICAgICAgICAgDQorCQl9IGVsc2UNCisJCXsNCisJCQlwb3NCW2orK10gPSBwb3Nba107ICAgICAgICAgICAgDQorCQl9DQorCX0NCisNCisJc3dpdGNoIChpKQ0KKwl7DQorCQljYXNlIDA6DQorCQkJdG1wID0gdm9fc3ViKChXb3JkMTYpKCh2b19MX211bHQoNSwgTikgPj4gMSkpLCAxKTsgICAgICAgIC8qICgoNSpOKS0xKSkgKi8NCisJCQlpbmRleCA9IExfc2hsKDFMLCB0bXApOyAgIC8qIGluZGV4ID0gMSA8PCAoKDUqTiktMSk7ICovDQorCQkJdG1wID0gYWRkMSgoTiA8PCAxKSwgMSk7ICAvKiBpbmRleCArPSBxdWFudF8zcF8zTjEocG9zQlswXSwgcG9zQlsxXSwgcG9zQlsyXSwgbl8xKSA8PCAoKDIqTikrMSk7Ki8NCisJCQl0bXAyID0gTF9zaGwocXVhbnRfM3BfM04xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIG5fMSksIHRtcCk7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgdG1wMik7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMnBfMk4xKHBvc0JbM10sIHBvc0JbNF0sIE4pKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3NCWzNdLCBwb3NCWzRdLCBOKTsgKi8NCisJCQlicmVhazsNCisJCWNhc2UgMToNCisJCQl0bXAgPSB2b19zdWIoKFdvcmQxNikoKHZvX0xfbXVsdCg1LCBOKSA+PiAxKSksIDEpOyAgICAgICAgLyogaW5kZXggPSAxIDw8ICgoNSpOKS0xKTsgKi8NCisJCQlpbmRleCA9IExfc2hsKDFMLCB0bXApOw0KKwkJCXRtcCA9IGFkZDEoKE4gPDwgMSksIDEpOyAgIC8qIGluZGV4ICs9IHF1YW50XzNwXzNOMShwb3NCWzBdLCBwb3NCWzFdLCBwb3NCWzJdLCBuXzEpIDw8KCgyKk4pKzEpOyAgKi8NCisJCQl0bXAyID0gTF9zaGwocXVhbnRfM3BfM04xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIG5fMSksIHRtcCk7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgdG1wMik7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMnBfMk4xKHBvc0JbM10sIHBvc0FbMF0sIE4pKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3NCWzNdLCBwb3NBWzBdLCBOKTsgKi8NCisJCQlicmVhazsNCisJCWNhc2UgMjoNCisJCQl0bXAgPSB2b19zdWIoKFdvcmQxNikoKHZvX0xfbXVsdCg1LCBOKSA+PiAxKSksIDEpOyAgICAgICAgLyogKCg1Kk4pLTEpKSAqLw0KKwkJCWluZGV4ID0gTF9zaGwoMUwsIHRtcCk7ICAgICAgICAgICAgLyogaW5kZXggPSAxIDw8ICgoNSpOKS0xKTsgKi8NCisJCQl0bXAgPSBhZGQxKChOIDw8IDEpLCAxKTsgICAgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzNwXzNOMShwb3NCWzBdLCBwb3NCWzFdLCBwb3NCWzJdLCBuXzEpIDw8ICgoMipOKSsxKTsgICovDQorCQkJdG1wMiA9IExfc2hsKHF1YW50XzNwXzNOMShwb3NCWzBdLCBwb3NCWzFdLCBwb3NCWzJdLCBuXzEpLCB0bXApOw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIHRtcDIpOw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIHF1YW50XzJwXzJOMShwb3NBWzBdLCBwb3NBWzFdLCBOKSk7ICAgICAgICAvKiBpbmRleCArPSBxdWFudF8ycF8yTjEocG9zQVswXSwgcG9zQVsxXSwgTik7ICovDQorCQkJYnJlYWs7DQorCQljYXNlIDM6DQorCQkJdG1wID0gYWRkMSgoTiA8PCAxKSwgMSk7ICAgICAgICAgICAvKiBpbmRleCA9IHF1YW50XzNwXzNOMShwb3NBWzBdLCBwb3NBWzFdLCBwb3NBWzJdLCBuXzEpIDw8ICgoMipOKSsxKTsgICovDQorCQkJaW5kZXggPSBMX3NobChxdWFudF8zcF8zTjEocG9zQVswXSwgcG9zQVsxXSwgcG9zQVsyXSwgbl8xKSwgdG1wKTsNCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8ycF8yTjEocG9zQlswXSwgcG9zQlsxXSwgTikpOyAgICAgICAgLyogaW5kZXggKz0gcXVhbnRfMnBfMk4xKHBvc0JbMF0sIHBvc0JbMV0sIE4pOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSA0Og0KKwkJCXRtcCA9IGFkZDEoKE4gPDwgMSksIDEpOyAgICAgICAgICAgLyogaW5kZXggPSBxdWFudF8zcF8zTjEocG9zQVswXSwgcG9zQVsxXSwgcG9zQVsyXSwgbl8xKSA8PCAoKDIqTikrMSk7ICAqLw0KKwkJCWluZGV4ID0gTF9zaGwocXVhbnRfM3BfM04xKHBvc0FbMF0sIHBvc0FbMV0sIHBvc0FbMl0sIG5fMSksIHRtcCk7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMnBfMk4xKHBvc0FbM10sIHBvc0JbMF0sIE4pKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3NBWzNdLCBwb3NCWzBdLCBOKTsgKi8NCisJCQlicmVhazsNCisJCWNhc2UgNToNCisJCQl0bXAgPSBhZGQxKChOIDw8IDEpLCAxKTsgICAgICAgICAgIC8qIGluZGV4ID0gcXVhbnRfM3BfM04xKHBvc0FbMF0sIHBvc0FbMV0sIHBvc0FbMl0sIG5fMSkgPDwgKCgyKk4pKzEpOyAgKi8NCisJCQlpbmRleCA9IExfc2hsKHF1YW50XzNwXzNOMShwb3NBWzBdLCBwb3NBWzFdLCBwb3NBWzJdLCBuXzEpLCB0bXApOw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIHF1YW50XzJwXzJOMShwb3NBWzNdLCBwb3NBWzRdLCBOKSk7ICAgICAgICAvKiBpbmRleCArPSBxdWFudF8ycF8yTjEocG9zQVszXSwgcG9zQVs0XSwgTik7ICovDQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0KKwkJCWluZGV4ID0gMDsNCisJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGluIGZ1bmN0aW9uIHF1YW50XzVwXzVOXG4iKTsNCisJfQ0KKw0KKwlyZXR1cm4gKGluZGV4KTsNCit9DQorDQorDQorV29yZDMyIHF1YW50XzZwXzZOXzIoICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gKDYqTiktMiBiaXRzICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3NbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxLi42ICAqLw0KKwkJV29yZDE2IE4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgbnVtYmVyIG9mIGJpdHMgZm9yIHBvc2l0aW9uICovDQorew0KKwlXb3JkMTYgbmJfcG9zLCBuXzE7DQorCVdvcmQxNiBwb3NBWzZdLCBwb3NCWzZdOw0KKwlXb3JkMzIgaSwgaiwgaywgaW5kZXg7DQorDQorCS8qICEhICBOIGFuZCBuXzEgYXJlIGNvbnN0YW50cyAtPiBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgb3BlcmF0ZWQgYnkgQmFzaWMgT3BlcmF0b3JzICovDQorCW5fMSA9IChXb3JkMTYpIChOIC0gMSk7ICAgICAgICAgICAgICAgIA0KKwluYl9wb3MgPSAoMSA8PCBuXzEpOyAgICAgICAgICAgICAgICAgIC8qIG5iX3BvcyA9ICgxPDxuXzEpOyAqLw0KKw0KKwlpID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJaiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoayA9IDA7IGsgPCA2OyBrKyspDQorCXsNCisJCWlmICgocG9zW2tdICYgbmJfcG9zKSA9PSAwKQ0KKwkJew0KKwkJCXBvc0FbaSsrXSA9IHBvc1trXTsgICAgICAgICAgICANCisJCX0gZWxzZQ0KKwkJew0KKwkJCXBvc0JbaisrXSA9IHBvc1trXTsgICAgICAgICAgICANCisJCX0NCisJfQ0KKw0KKwlzd2l0Y2ggKGkpDQorCXsNCisJCWNhc2UgMDoNCisJCQlpbmRleCA9ICgxIDw8IChXb3JkMTYpICg2ICogTiAtIDUpKTsgICAgICAgIC8qIGluZGV4ID0gMSA8PCAoKDYqTiktNSk7ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKHF1YW50XzVwXzVOKHBvc0IsIG5fMSkgPDwgTikpOyAvKiBpbmRleCArPSBxdWFudF81cF81Tihwb3NCLCBuXzEpIDw8IE47ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMXBfTjEocG9zQls1XSwgbl8xKSk7ICAgICAgICAvKiBpbmRleCArPSBxdWFudF8xcF9OMShwb3NCWzVdLCBuXzEpOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSAxOg0KKwkJCWluZGV4ID0gKDFMIDw8IChXb3JkMTYpICg2ICogTiAtIDUpKTsgICAgICAgIC8qIGluZGV4ID0gMSA8PCAoKDYqTiktNSk7ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKHF1YW50XzVwXzVOKHBvc0IsIG5fMSkgPDwgTikpOyAvKiBpbmRleCArPSBxdWFudF81cF81Tihwb3NCLCBuXzEpIDw8IE47ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMXBfTjEocG9zQVswXSwgbl8xKSk7ICAgICAgICAvKiBpbmRleCArPSBxdWFudF8xcF9OMShwb3NBWzBdLCBuXzEpOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSAyOg0KKwkJCWluZGV4ID0gKDFMIDw8IChXb3JkMTYpICg2ICogTiAtIDUpKTsgICAgICAgIC8qIGluZGV4ID0gMSA8PCAoKDYqTiktNSk7ICovDQorCQkJLyogaW5kZXggKz0gcXVhbnRfNHBfNE4ocG9zQiwgbl8xKSA8PCAoKDIqbl8xKSsxKTsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAocXVhbnRfNHBfNE4ocG9zQiwgbl8xKSA8PCAoV29yZDE2KSAoMiAqIG5fMSArIDEpKSk7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMnBfMk4xKHBvc0FbMF0sIHBvc0FbMV0sIG5fMSkpOyAgICAgIC8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3NBWzBdLCBwb3NBWzFdLCBuXzEpOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSAzOg0KKwkJCWluZGV4ID0gKHF1YW50XzNwXzNOMShwb3NBWzBdLCBwb3NBWzFdLCBwb3NBWzJdLCBuXzEpIDw8IChXb3JkMTYpICgzICogbl8xICsgMSkpOyAgICANCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5kZXggPSBxdWFudF8zcF8zTjEocG9zQVswXSwgcG9zQVsxXSwgcG9zQVsyXSwgbl8xKSA8PCAoKDMqbl8xKSsxKTsgKi8NCisJCQlpbmRleCA9dm9fTF9hZGQoaW5kZXgsIHF1YW50XzNwXzNOMShwb3NCWzBdLCBwb3NCWzFdLCBwb3NCWzJdLCBuXzEpKTsgICAgIA0KKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzNwXzNOMShwb3NCWzBdLCBwb3NCWzFdLCBwb3NCWzJdLCBuXzEpOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSA0Og0KKwkJCWkgPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCQlpbmRleCA9IChxdWFudF80cF80Tihwb3NBLCBuXzEpIDw8IChXb3JkMTYpICgyICogbl8xICsgMSkpOyAgLyogaW5kZXggPSBxdWFudF80cF80Tihwb3NBLCBuXzEpIDw8ICgoMipuXzEpKzEpOyAqLw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIHF1YW50XzJwXzJOMShwb3NCWzBdLCBwb3NCWzFdLCBuXzEpKTsgICAgICAvKiBpbmRleCArPSBxdWFudF8ycF8yTjEocG9zQlswXSwgcG9zQlsxXSwgbl8xKTsgKi8NCisJCQlicmVhazsNCisJCWNhc2UgNToNCisJCQlpID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQkJaW5kZXggPSAocXVhbnRfNXBfNU4ocG9zQSwgbl8xKSA8PCBOKTsgICAgICAgLyogaW5kZXggPSBxdWFudF81cF81Tihwb3NBLCBuXzEpIDw8IE47ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMXBfTjEocG9zQlswXSwgbl8xKSk7ICAgICAgICAvKiBpbmRleCArPSBxdWFudF8xcF9OMShwb3NCWzBdLCBuXzEpOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSA2Og0KKwkJCWkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQkJaW5kZXggPSAocXVhbnRfNXBfNU4ocG9zQSwgbl8xKSA8PCBOKTsgICAgICAgLyogaW5kZXggPSBxdWFudF81cF81Tihwb3NBLCBuXzEpIDw8IE47ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMXBfTjEocG9zQVs1XSwgbl8xKSk7ICAgICAgICAvKiBpbmRleCArPSBxdWFudF8xcF9OMShwb3NBWzVdLCBuXzEpOyAqLw0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlpbmRleCA9IDA7DQorCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciBpbiBmdW5jdGlvbiBxdWFudF82cF82Tl8yXG4iKTsNCisJfQ0KKwlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAoKExfZGVwb3NpdF9sKGkpICYgM0wpIDw8IChXb3JkMTYpICg2ICogTiAtIDQpKSk7ICAgLyogaW5kZXggKz0gKGkgJiAzKSA8PCAoKDYqTiktNCk7ICovDQorDQorCXJldHVybiAoaW5kZXgpOw0KK30NCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3Fpc2ZfbnMuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcWlzZl9ucy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYjBhNTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3Fpc2ZfbnMuYwpAQCAtMCwwICsxLDExMSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IHFpc2ZfbnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246IENvZGluZy9EZWNvZGluZyBvZiBJU0YgcGFyYW1ldGVycyBmb3IgYmFja2dyb3VuZCBub2lzZS4qDQorKiAgICAgICAgICAgICAgICAgICAgVGhlIElTRiB2ZWN0b3IgaXMgcXVhbnRpemVkIHVzaW5nIFZRIHdpdGggc3BsaXQtYnktNSAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorI2luY2x1ZGUgInFpc2ZfbnMudGFiIiAgICAgICAgICAgICAgICAgICAgIC8qIENvZGVib29rcyBvZiBJU0ZzICovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorKiByb3V0aW5lOiAgIFFpc2ZfbnMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgfn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgUWlzZl9ucygNCisJCVdvcmQxNiAqIGlzZjEsICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBJU0YgaW4gdGhlIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgKi8NCisJCVdvcmQxNiAqIGlzZl9xLCAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBxdWFudGl6ZWQgSVNGICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGluZGljZSAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBxdWFudGl6YXRpb24gaW5kaWNlcyAgICAgICAgICAgICAgICAgKi8NCisJICAgICkNCit7DQorCVdvcmQxNiBpOw0KKwlXb3JkMzIgdG1wOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJew0KKwkJaXNmX3FbaV0gPSBzdWIoaXNmMVtpXSwgbWVhbl9pc2Zfbm9pc2VbaV0pOyAgICAgDQorCX0NCisNCisJaW5kaWNlWzBdID0gU3ViX1ZRKCZpc2ZfcVswXSwgZGljbzFfaXNmX25vaXNlLCAyLCBTSVpFX0JLX05PSVNFMSwgJnRtcCk7ICAgIA0KKwlpbmRpY2VbMV0gPSBTdWJfVlEoJmlzZl9xWzJdLCBkaWNvMl9pc2Zfbm9pc2UsIDMsIFNJWkVfQktfTk9JU0UyLCAmdG1wKTsgICAgDQorCWluZGljZVsyXSA9IFN1Yl9WUSgmaXNmX3FbNV0sIGRpY28zX2lzZl9ub2lzZSwgMywgU0laRV9CS19OT0lTRTMsICZ0bXApOyAgICANCisJaW5kaWNlWzNdID0gU3ViX1ZRKCZpc2ZfcVs4XSwgZGljbzRfaXNmX25vaXNlLCA0LCBTSVpFX0JLX05PSVNFNCwgJnRtcCk7ICAgIA0KKwlpbmRpY2VbNF0gPSBTdWJfVlEoJmlzZl9xWzEyXSwgZGljbzVfaXNmX25vaXNlLCA0LCBTSVpFX0JLX05PSVNFNSwgJnRtcCk7ICAgDQorDQorCS8qIGRlY29kaW5nIHRoZSBJU0ZzICovDQorDQorCURpc2ZfbnMoaW5kaWNlLCBpc2ZfcSk7DQorDQorCXJldHVybjsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogICBEaXNmX25zKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgIH5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBEZWNvZGluZyBvZiBJU0YgcGFyYW1ldGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorKiAgQXJndW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICBpbmRpY2VbXSA6IGluZGljZXMgb2YgdGhlIHNlbGVjdGVkIGNvZGVib29rIGVudHJpZXMgICAgICAgICAgICAqDQorKiAgICBpc2ZbXSAgICA6IHF1YW50aXplZCBJU0ZzIChpbiBmcmVxdWVuY3kgZG9tYWluKSAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3ZvaWQgRGlzZl9ucygNCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBxdWFudGl6YXRpb24gaW5kaWNlcyAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZfcSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogSVNGIGluIHRoZSBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICAqLw0KKwkgICAgKQ0KK3sNCisJV29yZDE2IGk7DQorDQorCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspDQorCXsNCisJCWlzZl9xW2ldID0gZGljbzFfaXNmX25vaXNlW2luZGljZVswXSAqIDIgKyBpXTsgIA0KKwl9DQorCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspDQorCXsNCisJCWlzZl9xW2kgKyAyXSA9IGRpY28yX2lzZl9ub2lzZVtpbmRpY2VbMV0gKiAzICsgaV07ICAgICAgDQorCX0NCisJZm9yIChpID0gMDsgaSA8IDM7IGkrKykNCisJew0KKwkJaXNmX3FbaSArIDVdID0gZGljbzNfaXNmX25vaXNlW2luZGljZVsyXSAqIDMgKyBpXTsgICAgICANCisJfQ0KKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQ0KKwl7DQorCQlpc2ZfcVtpICsgOF0gPSBkaWNvNF9pc2Zfbm9pc2VbaW5kaWNlWzNdICogNCArIGldOyAgICAgIA0KKwl9DQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspDQorCXsNCisJCWlzZl9xW2kgKyAxMl0gPSBkaWNvNV9pc2Zfbm9pc2VbaW5kaWNlWzRdICogNCArIGldOyAgICAgDQorCX0NCisNCisJZm9yIChpID0gMDsgaSA8IE9SREVSOyBpKyspDQorCXsNCisJCWlzZl9xW2ldID0gYWRkKGlzZl9xW2ldLCBtZWFuX2lzZl9ub2lzZVtpXSk7ICAgDQorCX0NCisNCisJUmVvcmRlcl9pc2YoaXNmX3EsIElTRl9HQVAsIE9SREVSKTsNCisNCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3FwaXNmXzJzLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3FwaXNmXzJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NlZGI1YwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcXBpc2ZfMnMuYwpAQCAtMCwwICsxLDU0MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IGFwaXNmXzJzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOiBDb2RpbmcvRGVjb2RlaW5nIG9mIElTRiBwYXJhbWV0ZXJzIHdpdGggcHJlZGljYXRpb24NCisqICAgICAgIFRoZSBJU0YgdmVjdG9yIGlzIHF1YW50aXplZCB1c2luZyB0d28tc3RhZ2UgVlEgd2l0aCBzcGxpdC1ieS0yICoNCisqICAgICAgIGluIDFzdCBzdGFnZSBhbmQgc3BsaXQtYnktNShvciAzKSBpbiB0aGUgc2Vjb25kIHN0YWdlICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKyNpbmNsdWRlICJxcGlzZl8ycy50YWIiICAgICAgICAgICAgICAgICAgICAvKiBDb2RlYm9va3Mgb2YgaXNmcyAqLw0KKw0KKyNkZWZpbmUgTVUgICAgICAgICAxMDkyMyAgICAgICAgICAgICAgICAgICAvKiBQcmVkaWN0aW9uIGZhY3RvciAgICgxLjAvMy4wKSBpbiBRMTUgKi8NCisjZGVmaW5lIE5fU1VSVl9NQVggNCAgICAgICAgICAgICAgICAgICAgICAgLyogNCBzdXJ2aXZvcnMgbWF4ICovDQorI2RlZmluZSBBTFBIQSAgICAgIDI5NDkxICAgICAgICAgICAgICAgICAgIC8qIDAuIDkgaW4gUTE1ICAgICAqLw0KKyNkZWZpbmUgT05FX0FMUEhBICgzMjc2OC1BTFBIQSkgICAgICAgICAgICAvKiAoMS4wIC0gQUxQSEEpIGluIFExNSAqLw0KKw0KKy8qIHByaXZhdGUgZnVuY3Rpb25zICovDQorc3RhdGljIHZvaWQgVlFfc3RhZ2UxKA0KKwkJV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IElTRiByZXNpZHVhbCB2ZWN0b3IgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBkaWNvLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcXVhbnRpemF0aW9uIGNvZGVib29rICAgICAgICAgKi8NCisJCVdvcmQxNiBkaW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBkaW1lbnRpb24gb2YgdmVjdG9yICAgICAgICAgICAqLw0KKwkJV29yZDE2IGRpY29fc2l6ZSwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHNpemUgb2YgcXVhbnRpemF0aW9uIGNvZGVib29rICovDQorCQlXb3JkMTYgKiBpbmRleCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogaW5kaWNlcyBvZiBzdXJ2aXZvcnMgICAgICAgICAgKi8NCisJCVdvcmQxNiBzdXJ2ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBudW1iZXIgb2Ygc3Vydml2b3IgICAgICAgICAgICAqLw0KKwkJKTsNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiAgIFFwaXNmXzJzXzQ2QigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIERlc2NyaXB0aW9uOiBRdWFudGl6YXRpb24gb2YgaXNmIHBhcmFtZXRlcnMgd2l0aCBwcmVkaWN0aW9uLiAoNDYgYml0cykgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIFRoZSBpc2YgdmVjdG9yIGlzIHF1YW50aXplZCB1c2luZyB0d28tc3RhZ2UgVlEgd2l0aCBzcGxpdC1ieS0yIGluICAgICAgICoNCisqICAxc3Qgc3RhZ2UgYW5kIHNwbGl0LWJ5LTUgaW4gdGhlIHNlY29uZCBzdGFnZS4gICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCBRcGlzZl8yc180NmIoDQorCQlXb3JkMTYgKiBpc2YxLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBJU0YgaW4gdGhlIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgKi8NCisJCVdvcmQxNiAqIGlzZl9xLCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IHF1YW50aXplZCBJU0YgICAgICAgICAgICAgICAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogcGFzdF9pc2ZxLCAgICAgICAgICAgICAgICAgICAvKiAoaW8pUTE1IDogcGFzdCBJU0YgcXVhbnRpemVyICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpbmRpY2UsICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBxdWFudGl6YXRpb24gaW5kaWNlcyAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBuYl9zdXJ2ICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG51bWJlciBvZiBzdXJ2aXZvciAoMSwgMiwgMyBvciA0KSAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IHRtcF9pbmRbNV07DQorCVdvcmQxNiBzdXJ2MVtOX1NVUlZfTUFYXTsgICAgICAgICAgICAgIC8qIGluZGljZXMgb2Ygc3Vydml2b3JzIGZyb20gMXN0IHN0YWdlICovDQorCVdvcmQzMiBpLCBrLCB0ZW1wLCBtaW5fZXJyLCBkaXN0YW5jZTsNCisJV29yZDE2IGlzZltPUkRFUl07DQorCVdvcmQxNiBpc2Zfc3RhZ2UyW09SREVSXTsNCisNCisJZm9yIChpID0gMDsgaSA8IE9SREVSOyBpKyspDQorCXsNCisJCWlzZltpXSA9IHZvX3N1Yihpc2YxW2ldLCBtZWFuX2lzZltpXSk7DQorCQlpc2ZbaV0gPSB2b19zdWIoaXNmW2ldLCB2b19tdWx0KE1VLCBwYXN0X2lzZnFbaV0pKTsgDQorCX0NCisNCisJVlFfc3RhZ2UxKCZpc2ZbMF0sIGRpY28xX2lzZiwgOSwgU0laRV9CSzEsIHN1cnYxLCBuYl9zdXJ2KTsNCisNCisJZGlzdGFuY2UgPSBNQVhfMzI7ICAgICAgICAgIA0KKw0KKwlmb3IgKGsgPSAwOyBrIDwgbmJfc3VydjsgaysrKQ0KKwl7DQorCQlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKQ0KKwkJew0KKwkJCWlzZl9zdGFnZTJbaV0gPSB2b19zdWIoaXNmW2ldLCBkaWNvMV9pc2ZbaSArIHN1cnYxW2tdICogOV0pOyANCisJCX0NCisJCXRtcF9pbmRbMF0gPSBTdWJfVlEoJmlzZl9zdGFnZTJbMF0sIGRpY28yMV9pc2YsIDMsIFNJWkVfQksyMSwgJm1pbl9lcnIpOyANCisJCXRlbXAgPSBtaW5fZXJyOw0KKwkJdG1wX2luZFsxXSA9IFN1Yl9WUSgmaXNmX3N0YWdlMlszXSwgZGljbzIyX2lzZiwgMywgU0laRV9CSzIyLCAmbWluX2Vycik7IA0KKwkJdGVtcCA9IHZvX0xfYWRkKHRlbXAsIG1pbl9lcnIpOw0KKwkJdG1wX2luZFsyXSA9IFN1Yl9WUSgmaXNmX3N0YWdlMls2XSwgZGljbzIzX2lzZiwgMywgU0laRV9CSzIzLCAmbWluX2Vycik7ICANCisJCXRlbXAgPSB2b19MX2FkZCh0ZW1wLCBtaW5fZXJyKTsNCisNCisJCWlmKHRlbXAgPCBkaXN0YW5jZSkNCisJCXsNCisJCQlkaXN0YW5jZSA9IHRlbXA7ICAgICAgICAgICAgICAgDQorCQkJaW5kaWNlWzBdID0gc3VydjFba107ICAgICAgICAgIA0KKwkJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspDQorCQkJew0KKwkJCQlpbmRpY2VbaSArIDJdID0gdG1wX2luZFtpXTsNCisJCQl9DQorCQl9DQorCX0NCisNCisNCisJVlFfc3RhZ2UxKCZpc2ZbOV0sIGRpY28yX2lzZiwgNywgU0laRV9CSzIsIHN1cnYxLCBuYl9zdXJ2KTsNCisNCisJZGlzdGFuY2UgPSBNQVhfMzI7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGsgPSAwOyBrIDwgbmJfc3VydjsgaysrKQ0KKwl7DQorCQlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKQ0KKwkJew0KKwkJCWlzZl9zdGFnZTJbaV0gPSB2b19zdWIoaXNmWzkgKyBpXSwgZGljbzJfaXNmW2kgKyBzdXJ2MVtrXSAqIDddKTsgICAgICAgDQorCQl9DQorDQorCQl0bXBfaW5kWzBdID0gU3ViX1ZRKCZpc2Zfc3RhZ2UyWzBdLCBkaWNvMjRfaXNmLCAzLCBTSVpFX0JLMjQsICZtaW5fZXJyKTsNCisJCXRlbXAgPSBtaW5fZXJyOyANCisJCXRtcF9pbmRbMV0gPSBTdWJfVlEoJmlzZl9zdGFnZTJbM10sIGRpY28yNV9pc2YsIDQsIFNJWkVfQksyNSwgJm1pbl9lcnIpOw0KKwkJdGVtcCA9IHZvX0xfYWRkKHRlbXAsIG1pbl9lcnIpOw0KKw0KKwkJaWYodGVtcCA8IGRpc3RhbmNlKQ0KKwkJew0KKwkJCWRpc3RhbmNlID0gdGVtcDsgICAgICAgICAgICAgICANCisJCQlpbmRpY2VbMV0gPSBzdXJ2MVtrXTsgICAgICAgICAgDQorCQkJZm9yIChpID0gMDsgaSA8IDI7IGkrKykNCisJCQl7DQorCQkJCWluZGljZVtpICsgNV0gPSB0bXBfaW5kW2ldOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwlEcGlzZl8yc180NmIoaW5kaWNlLCBpc2ZfcSwgcGFzdF9pc2ZxLCBpc2ZfcSwgaXNmX3EsIDAsIDApOw0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246ICAgUXBpc2ZfMnNfMzZCKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRGVzY3JpcHRpb246IFF1YW50aXphdGlvbiBvZiBpc2YgcGFyYW1ldGVycyB3aXRoIHByZWRpY3Rpb24uICgzNiBiaXRzKSAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogVGhlIGlzZiB2ZWN0b3IgaXMgcXVhbnRpemVkIHVzaW5nIHR3by1zdGFnZSBWUSB3aXRoIHNwbGl0LWJ5LTIgaW4gICAgICAgICAgKg0KKyogIDFzdCBzdGFnZSBhbmQgc3BsaXQtYnktMyBpbiB0aGUgc2Vjb25kIHN0YWdlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIFFwaXNmXzJzXzM2YigNCisJCVdvcmQxNiAqIGlzZjEsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogcXVhbnRpemVkIElTRiAgICAgICAgICAgICAgICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBwYXN0X2lzZnEsICAgICAgICAgICAgICAgICAgIC8qIChpbylRMTUgOiBwYXN0IElTRiBxdWFudGl6ZXIgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG5iX3N1cnYgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbnVtYmVyIG9mIHN1cnZpdm9yICgxLCAyLCAzIG9yIDQpICAgICovDQorCQkpDQorew0KKwlXb3JkMTYgaSwgaywgdG1wX2luZFs1XTsNCisJV29yZDE2IHN1cnYxW05fU1VSVl9NQVhdOyAgICAgICAgICAgICAgLyogaW5kaWNlcyBvZiBzdXJ2aXZvcnMgZnJvbSAxc3Qgc3RhZ2UgKi8NCisJV29yZDMyIHRlbXAsIG1pbl9lcnIsIGRpc3RhbmNlOw0KKwlXb3JkMTYgaXNmW09SREVSXTsNCisJV29yZDE2IGlzZl9zdGFnZTJbT1JERVJdOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJew0KKwkJaXNmW2ldID0gdm9fc3ViKGlzZjFbaV0sIG1lYW5faXNmW2ldKTsNCisJCWlzZltpXSA9IHZvX3N1Yihpc2ZbaV0sIHZvX211bHQoTVUsIHBhc3RfaXNmcVtpXSkpOw0KKwl9DQorDQorCVZRX3N0YWdlMSgmaXNmWzBdLCBkaWNvMV9pc2YsIDksIFNJWkVfQksxLCBzdXJ2MSwgbmJfc3Vydik7DQorDQorCWRpc3RhbmNlID0gTUFYXzMyOyAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGsgPSAwOyBrIDwgbmJfc3VydjsgaysrKQ0KKwl7DQorCQlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKQ0KKwkJew0KKwkJCWlzZl9zdGFnZTJbaV0gPSB2b19zdWIoaXNmW2ldLCBkaWNvMV9pc2ZbaSArIHN1cnYxW2tdICogOV0pOyANCisJCX0NCisNCisJCXRtcF9pbmRbMF0gPSBTdWJfVlEoJmlzZl9zdGFnZTJbMF0sIGRpY28yMV9pc2ZfMzZiLCA1LCBTSVpFX0JLMjFfMzZiLCAmbWluX2Vycik7ICAgICAgICANCisJCXRlbXAgPSBtaW5fZXJyOyAgICAgICAgICAgICAgICAgIA0KKwkJdG1wX2luZFsxXSA9IFN1Yl9WUSgmaXNmX3N0YWdlMls1XSwgZGljbzIyX2lzZl8zNmIsIDQsIFNJWkVfQksyMl8zNmIsICZtaW5fZXJyKTsgICAgICAgIA0KKwkJdGVtcCA9IHZvX0xfYWRkKHRlbXAsIG1pbl9lcnIpOw0KKw0KKwkJaWYodGVtcCA8IGRpc3RhbmNlKQ0KKwkJew0KKwkJCWRpc3RhbmNlID0gdGVtcDsgICAgICAgICAgICAgICANCisJCQlpbmRpY2VbMF0gPSBzdXJ2MVtrXTsgICAgICAgICAgDQorCQkJZm9yIChpID0gMDsgaSA8IDI7IGkrKykNCisJCQl7DQorCQkJCWluZGljZVtpICsgMl0gPSB0bXBfaW5kW2ldOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwlWUV9zdGFnZTEoJmlzZls5XSwgZGljbzJfaXNmLCA3LCBTSVpFX0JLMiwgc3VydjEsIG5iX3N1cnYpOw0KKwlkaXN0YW5jZSA9IE1BWF8zMjsgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGsgPSAwOyBrIDwgbmJfc3VydjsgaysrKQ0KKwl7DQorCQlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKQ0KKwkJew0KKwkJCWlzZl9zdGFnZTJbaV0gPSB2b19zdWIoaXNmWzkgKyBpXSwgZGljbzJfaXNmW2kgKyBzdXJ2MVtrXSAqIDddKTsgICAgIA0KKwkJfQ0KKw0KKwkJdG1wX2luZFswXSA9IFN1Yl9WUSgmaXNmX3N0YWdlMlswXSwgZGljbzIzX2lzZl8zNmIsIDcsIFNJWkVfQksyM18zNmIsICZtaW5fZXJyKTsgIA0KKwkJdGVtcCA9IG1pbl9lcnI7ICAgICAgICAgICAgICAgICAgDQorDQorCQlpZih0ZW1wIDwgZGlzdGFuY2UpDQorCQl7DQorCQkJZGlzdGFuY2UgPSB0ZW1wOyAgICAgICAgICAgICAgIA0KKwkJCWluZGljZVsxXSA9IHN1cnYxW2tdOyAgICAgICAgICANCisJCQlpbmRpY2VbNF0gPSB0bXBfaW5kWzBdOyAgICAgICAgDQorCQl9DQorCX0NCisNCisJRHBpc2ZfMnNfMzZiKGluZGljZSwgaXNmX3EsIHBhc3RfaXNmcSwgaXNmX3EsIGlzZl9xLCAwLCAwKTsNCisNCisJcmV0dXJuOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogRHBpc2ZfMnNfNDZiKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIERlc2NyaXB0aW9uOiBEZWNvZGluZyBvZiBJU0YgcGFyYW1ldGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIERwaXNmXzJzXzQ2YigNCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBxdWFudGl6YXRpb24gaW5kaWNlcyAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZl9xLCAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBxdWFudGl6ZWQgSVNGIGluIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgKi8NCisJCVdvcmQxNiAqIHBhc3RfaXNmcSwgICAgICAgICAgICAgICAgICAgLyogaS8wICAgOiBwYXN0IElTRiBxdWFudGl6ZXIgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZvbGQsICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGFzdCBxdWFudGl6ZWQgSVNGICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmX2J1ZiwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGlzZiBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgYmZpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogQmFkIGZyYW1lIGluZGljYXRvciAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGVuY19kZWMNCisJCSkNCit7DQorCVdvcmQxNiByZWZfaXNmW01dLCB0bXA7DQorCVdvcmQzMiBpLCBqLCBMX3RtcDsNCisNCisJaWYgKGJmaSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR29vZCBmcmFtZSAqLw0KKwl7DQorCQlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKQ0KKwkJew0KKwkJCWlzZl9xW2ldID0gZGljbzFfaXNmW2luZGljZVswXSAqIDkgKyBpXTsgICAgDQorCQl9DQorCQlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKQ0KKwkJew0KKwkJCWlzZl9xW2kgKyA5XSA9IGRpY28yX2lzZltpbmRpY2VbMV0gKiA3ICsgaV07ICAgICAgIA0KKwkJfQ0KKw0KKwkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykNCisJCXsNCisJCQlpc2ZfcVtpXSA9IGFkZDEoaXNmX3FbaV0sIGRpY28yMV9pc2ZbaW5kaWNlWzJdICogMyArIGldKTsgICANCisJCQlpc2ZfcVtpICsgM10gPSBhZGQxKGlzZl9xW2kgKyAzXSwgZGljbzIyX2lzZltpbmRpY2VbM10gKiAzICsgaV0pOyAgDQorCQkJaXNmX3FbaSArIDZdID0gYWRkMShpc2ZfcVtpICsgNl0sIGRpY28yM19pc2ZbaW5kaWNlWzRdICogMyArIGldKTsgDQorCQkJaXNmX3FbaSArIDldID0gYWRkMShpc2ZfcVtpICsgOV0sIGRpY28yNF9pc2ZbaW5kaWNlWzVdICogMyArIGldKTsgDQorCQl9DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQ0KKwkJew0KKwkJCWlzZl9xW2kgKyAxMl0gPSBhZGQxKGlzZl9xW2kgKyAxMl0sIGRpY28yNV9pc2ZbaW5kaWNlWzZdICogNCArIGldKTsgIA0KKwkJfQ0KKw0KKwkJZm9yIChpID0gMDsgaSA8IE9SREVSOyBpKyspDQorCQl7DQorCQkJdG1wID0gaXNmX3FbaV07ICAgICAgICAgICAgICAgDQorCQkJaXNmX3FbaV0gPSBhZGQxKHRtcCwgbWVhbl9pc2ZbaV0pOyAgDQorCQkJaXNmX3FbaV0gPSBhZGQxKGlzZl9xW2ldLCB2b19tdWx0KE1VLCBwYXN0X2lzZnFbaV0pKTsNCisJCQlwYXN0X2lzZnFbaV0gPSB0bXA7ICANCisJCX0NCisNCisJCWlmIChlbmNfZGVjKQ0KKwkJew0KKwkJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQkJew0KKwkJCQlmb3IgKGogPSAoTF9NRUFOQlVGIC0gMSk7IGogPiAwOyBqLS0pDQorCQkJCXsNCisJCQkJCWlzZl9idWZbaiAqIE0gKyBpXSA9IGlzZl9idWZbKGogLSAxKSAqIE0gKyBpXTsgDQorCQkJCX0NCisJCQkJaXNmX2J1ZltpXSA9IGlzZl9xW2ldOyANCisJCQl9DQorCQl9DQorCX0gZWxzZQ0KKwl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBiYWQgZnJhbWUgKi8NCisJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQl7DQorCQkJTF90bXAgPSBtZWFuX2lzZltpXSA8PCAxNDsNCisJCQlmb3IgKGogPSAwOyBqIDwgTF9NRUFOQlVGOyBqKyspDQorCQkJew0KKwkJCQlMX3RtcCArPSAoaXNmX2J1ZltqICogTSArIGldIDw8IDE0KTsNCisJCQl9DQorCQkJcmVmX2lzZltpXSA9IHZvX3JvdW5kKExfdG1wKTsNCisJCX0NCisNCisJCS8qIHVzZSB0aGUgcGFzdCBJU0ZzIHNsaWdodGx5IHNoaWZ0ZWQgdG93YXJkcyB0aGVpciBtZWFuICovDQorCQlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJCXsNCisJCQlpc2ZfcVtpXSA9IGFkZDEodm9fbXVsdChBTFBIQSwgaXNmb2xkW2ldKSwgdm9fbXVsdChPTkVfQUxQSEEsIHJlZl9pc2ZbaV0pKTsgDQorCQl9DQorDQorCQkvKiBlc3RpbWF0ZSBwYXN0IHF1YW50aXplZCByZXNpZHVhbCB0byBiZSB1c2VkIGluIG5leHQgZnJhbWUgKi8NCisJCWZvciAoaSA9IDA7IGkgPCBPUkRFUjsgaSsrKQ0KKwkJew0KKwkJCXRtcCA9IGFkZDEocmVmX2lzZltpXSwgdm9fbXVsdChwYXN0X2lzZnFbaV0sIE1VKSk7ICAgICAgLyogcHJlZGljdGVkIElTRiAqLw0KKwkJCXBhc3RfaXNmcVtpXSA9IHZvX3N1Yihpc2ZfcVtpXSwgdG1wKTsgDQorCQkJcGFzdF9pc2ZxW2ldID0gKHBhc3RfaXNmcVtpXSA+PiAxKTsgICAgICAgIC8qIHBhc3RfaXNmcVtpXSAqPSAwLjUgKi8NCisJCX0NCisJfQ0KKw0KKwlSZW9yZGVyX2lzZihpc2ZfcSwgSVNGX0dBUCwgT1JERVIpOw0KKwlyZXR1cm47DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiAgIERpc2ZfMnNfMzZiKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRGVzY3JpcHRpb246IERlY29kaW5nIG9mIElTRiBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCBEcGlzZl8yc18zNmIoDQorCQlXb3JkMTYgKiBpbmRpY2UsICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgcXVhbnRpemF0aW9uIGluZGljZXMgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZfcSwgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogcXVhbnRpemVkIElTRiBpbiBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBwYXN0X2lzZnEsICAgICAgICAgICAgICAgICAgIC8qIGkvMCAgIDogcGFzdCBJU0YgcXVhbnRpemVyICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmb2xkLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHBhc3QgcXVhbnRpemVkIElTRiAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZl9idWYsICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBpc2YgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGJmaSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IEJhZCBmcmFtZSBpbmRpY2F0b3IgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBlbmNfZGVjDQorCQkpDQorew0KKwlXb3JkMTYgcmVmX2lzZltNXSwgdG1wOw0KKwlXb3JkMzIgaSwgaiwgTF90bXA7DQorDQorCWlmIChiZmkgPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdvb2QgZnJhbWUgKi8NCisJew0KKwkJZm9yIChpID0gMDsgaSA8IDk7IGkrKykNCisJCXsNCisJCQlpc2ZfcVtpXSA9IGRpY28xX2lzZltpbmRpY2VbMF0gKiA5ICsgaV07ICAgIA0KKwkJfQ0KKwkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykNCisJCXsNCisJCQlpc2ZfcVtpICsgOV0gPSBkaWNvMl9pc2ZbaW5kaWNlWzFdICogNyArIGldOyAgICAgICANCisJCX0NCisNCisJCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspDQorCQl7DQorCQkJaXNmX3FbaV0gPSBhZGQxKGlzZl9xW2ldLCBkaWNvMjFfaXNmXzM2YltpbmRpY2VbMl0gKiA1ICsgaV0pOyAgICAgICANCisJCX0NCisJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspDQorCQl7DQorCQkJaXNmX3FbaSArIDVdID0gYWRkMShpc2ZfcVtpICsgNV0sIGRpY28yMl9pc2ZfMzZiW2luZGljZVszXSAqIDQgKyBpXSk7ICAgICAgICANCisJCX0NCisJCWZvciAoaSA9IDA7IGkgPCA3OyBpKyspDQorCQl7DQorCQkJaXNmX3FbaSArIDldID0gYWRkMShpc2ZfcVtpICsgOV0sIGRpY28yM19pc2ZfMzZiW2luZGljZVs0XSAqIDcgKyBpXSk7ICAgICAgIA0KKwkJfQ0KKw0KKwkJZm9yIChpID0gMDsgaSA8IE9SREVSOyBpKyspDQorCQl7DQorCQkJdG1wID0gaXNmX3FbaV07DQorCQkJaXNmX3FbaV0gPSBhZGQxKHRtcCwgbWVhbl9pc2ZbaV0pOyAgIA0KKwkJCWlzZl9xW2ldID0gYWRkMShpc2ZfcVtpXSwgdm9fbXVsdChNVSwgcGFzdF9pc2ZxW2ldKSk7ICAgDQorCQkJcGFzdF9pc2ZxW2ldID0gdG1wOyAgICAgICAgICAgDQorCQl9DQorDQorDQorCQlpZiAoZW5jX2RlYykNCisJCXsNCisJCQlmb3IgKGkgPSAwOyBpIDwgTTsgaSsrKQ0KKwkJCXsNCisJCQkJZm9yIChqID0gKExfTUVBTkJVRiAtIDEpOyBqID4gMDsgai0tKQ0KKwkJCQl7DQorCQkJCQlpc2ZfYnVmW2ogKiBNICsgaV0gPSBpc2ZfYnVmWyhqIC0gMSkgKiBNICsgaV07ICAgICAgDQorCQkJCX0NCisJCQkJaXNmX2J1ZltpXSA9IGlzZl9xW2ldOyAgICANCisJCQl9DQorCQl9DQorCX0gZWxzZQ0KKwl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBiYWQgZnJhbWUgKi8NCisJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQl7DQorCQkJTF90bXAgPSAobWVhbl9pc2ZbaV0gPDwgMTQpOw0KKwkJCWZvciAoaiA9IDA7IGogPCBMX01FQU5CVUY7IGorKykNCisJCQl7DQorCQkJCUxfdG1wICs9IChpc2ZfYnVmW2ogKiBNICsgaV0gPDwgMTQpOw0KKwkJCX0NCisJCQlyZWZfaXNmW2ldID0gdm9fcm91bmQoTF90bXApOyAgICANCisJCX0NCisNCisJCS8qIHVzZSB0aGUgcGFzdCBJU0ZzIHNsaWdodGx5IHNoaWZ0ZWQgdG93YXJkcyB0aGVpciBtZWFuICovDQorCQlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJCXsNCisJCQlpc2ZfcVtpXSA9IGFkZDEodm9fbXVsdChBTFBIQSwgaXNmb2xkW2ldKSwgdm9fbXVsdChPTkVfQUxQSEEsIHJlZl9pc2ZbaV0pKTsgICAgICAgIA0KKwkJfQ0KKw0KKwkJLyogZXN0aW1hdGUgcGFzdCBxdWFudGl6ZWQgcmVzaWR1YWwgdG8gYmUgdXNlZCBpbiBuZXh0IGZyYW1lICovDQorCQlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJCXsNCisJCQl0bXAgPSBhZGQxKHJlZl9pc2ZbaV0sIHZvX211bHQocGFzdF9pc2ZxW2ldLCBNVSkpOyAgICAgIC8qIHByZWRpY3RlZCBJU0YgKi8NCisJCQlwYXN0X2lzZnFbaV0gPSB2b19zdWIoaXNmX3FbaV0sIHRtcCk7ICANCisJCQlwYXN0X2lzZnFbaV0gPSBwYXN0X2lzZnFbaV0gPj4gMTsgICAgICAgICAvKiBwYXN0X2lzZnFbaV0gKj0gMC41ICovDQorCQl9DQorCX0NCisNCisJUmVvcmRlcl9pc2YoaXNmX3EsIElTRl9HQVAsIE9SREVSKTsNCisNCisJcmV0dXJuOw0KK30NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogIFJlb3JkZXJfaXNmKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIERlc2NyaXB0aW9uOiBUbyBtYWtlIHN1cmUgdGhhdCB0aGUgIGlzZnMgYXJlIHByb3Blcmx5IG9yZGVyIGFuZCB0byAgICAgICAqDQorKiAgICAgICAgICAgICAga2VlcCBhIGNlcnRhaW4gbWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIGNvbnNlY3V0aXZlIGlzZnMuICAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqICAgIEFyZ3VtZW50ICAgICAgICAgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICBpbi9vdXQgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgIGlzZltdICAgICAgICAgICB2ZWN0b3Igb2YgaXNmcyAgICAgICAgICAgICAgICAgICAgaS9vICAgICAgICAgICAgICAgICoNCisqICAgICBtaW5fZGlzdCAgICAgICAgbWluaW11bSByZXF1aXJlZCBkaXN0YW5jZSAgICAgICAgIGkgICAgICAgICAgICAgICAgICAqDQorKiAgICAgbiAgICAgICAgICAgICAgIExQQyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICBpICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCBSZW9yZGVyX2lzZigNCisJCVdvcmQxNiAqIGlzZiwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgUTE1OiBJU0YgaW4gdGhlIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgKi8NCisJCVdvcmQxNiBtaW5fZGlzdCwgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSAgOiBtaW5pbXVtIGRpc3RhbmNlIHRvIGtlZXAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICAgOiBudW1iZXIgb2YgSVNGICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpOyANCisJV29yZDE2IGlzZl9taW47DQorDQorCWlzZl9taW4gPSBtaW5fZGlzdDsgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykNCisJew0KKwkJaWYoaXNmW2ldIDwgaXNmX21pbikNCisJCXsNCisJCQlpc2ZbaV0gPSBpc2ZfbWluOyAgICAgICAgICAgICAgDQorCQl9DQorCQlpc2ZfbWluID0gKGlzZltpXSArIG1pbl9kaXN0KTsNCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KK1dvcmQxNiBTdWJfVlEoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHJldHVybiBxdWFudGl6YXRpb24gaW5kZXggICAgICovDQorCQlXb3JkMTYgKiB4LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogSVNGIHJlc2lkdWFsIHZlY3RvciAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGRpY28sICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBxdWFudGl6YXRpb24gY29kZWJvb2sgICAgICAgICAqLw0KKwkJV29yZDE2IGRpbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGRpbWVudGlvbiBvZiB2ZWN0b3IgICAgICAgICAgICovDQorCQlXb3JkMTYgZGljb19zaXplLCAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc2l6ZSBvZiBxdWFudGl6YXRpb24gY29kZWJvb2sgKi8NCisJCVdvcmQzMiAqIGRpc3RhbmNlICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBlcnJvciBvZiBxdWFudGl6YXRpb24gICAgICAgICAqLw0KKwkgICAgICkNCit7DQorCVdvcmQxNiB0ZW1wLCAqcF9kaWNvOw0KKwlXb3JkMzIgaSwgaiwgaW5kZXg7DQorCVdvcmQzMiBkaXN0X21pbiwgZGlzdDsNCisNCisJZGlzdF9taW4gPSBNQVhfMzI7ICAgICAgICAgICAgICAgICAgICAgDQorCXBfZGljbyA9IGRpY287ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlpbmRleCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IGRpY29fc2l6ZTsgaSsrKQ0KKwl7DQorCQlkaXN0ID0gMDsgIA0KKw0KKwkJZm9yIChqID0gMDsgaiA8IGRpbTsgaisrKQ0KKwkJew0KKwkJCXRlbXAgPSB4W2pdIC0gKCpwX2RpY28rKyk7DQorCQkJZGlzdCArPSAodGVtcCAqIHRlbXApPDwxOw0KKwkJfQ0KKw0KKwkJaWYoZGlzdCA8IGRpc3RfbWluKQ0KKwkJew0KKwkJCWRpc3RfbWluID0gZGlzdDsgICAgICAgICAgICAgICANCisJCQlpbmRleCA9IGk7ICAgICAgICAgICAgICAgICAgICAgDQorCQl9DQorCX0NCisNCisJKmRpc3RhbmNlID0gZGlzdF9taW47ICAgICAgICAgICAgICAgICAgDQorDQorCS8qIFJlYWRpbmcgdGhlIHNlbGVjdGVkIHZlY3RvciAqLw0KKwlwX2RpY28gPSAmZGljb1tpbmRleCAqIGRpbV07ICAgICAgICAgICANCisJZm9yIChqID0gMDsgaiA8IGRpbTsgaisrKQ0KKwl7DQorCQl4W2pdID0gKnBfZGljbysrOyAgICAgICAgICAgICAgICAgIA0KKwl9DQorDQorCXJldHVybiBpbmRleDsNCit9DQorDQorDQorc3RhdGljIHZvaWQgVlFfc3RhZ2UxKA0KKwkJV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IElTRiByZXNpZHVhbCB2ZWN0b3IgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBkaWNvLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcXVhbnRpemF0aW9uIGNvZGVib29rICAgICAgICAgKi8NCisJCVdvcmQxNiBkaW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBkaW1lbnRpb24gb2YgdmVjdG9yICAgICAgICAgICAqLw0KKwkJV29yZDE2IGRpY29fc2l6ZSwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHNpemUgb2YgcXVhbnRpemF0aW9uIGNvZGVib29rICovDQorCQlXb3JkMTYgKiBpbmRleCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogaW5kaWNlcyBvZiBzdXJ2aXZvcnMgICAgICAgICAgKi8NCisJCVdvcmQxNiBzdXJ2ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBudW1iZXIgb2Ygc3Vydml2b3IgICAgICAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IHRlbXAsICpwX2RpY287DQorCVdvcmQzMiBpLCBqLCBrLCBsOw0KKwlXb3JkMzIgZGlzdF9taW5bTl9TVVJWX01BWF0sIGRpc3Q7DQorDQorCWRpc3RfbWluWzBdID0gTUFYXzMyOw0KKwlkaXN0X21pblsxXSA9IE1BWF8zMjsNCisJZGlzdF9taW5bMl0gPSBNQVhfMzI7DQorCWRpc3RfbWluWzNdID0gTUFYXzMyOw0KKwlpbmRleFswXSA9IDA7DQorCWluZGV4WzFdID0gMTsNCisJaW5kZXhbMl0gPSAyOw0KKwlpbmRleFszXSA9IDM7DQorDQorCXBfZGljbyA9IGRpY287ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgZGljb19zaXplOyBpKyspDQorCXsNCisJCWRpc3QgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlmb3IgKGogPSAwOyBqIDwgZGltOyBqKyspDQorCQl7DQorCQkJdGVtcCA9IHhbal0gLSAgKCpwX2RpY28rKyk7DQorCQkJZGlzdCArPSAodGVtcCAqIHRlbXApPDwxOw0KKwkJfQ0KKw0KKwkJZm9yIChrID0gMDsgayA8IHN1cnY7IGsrKykNCisJCXsNCisJCQlpZihkaXN0IDwgZGlzdF9taW5ba10pDQorCQkJew0KKwkJCQlmb3IgKGwgPSBzdXJ2IC0gMTsgbCA+IGs7IGwtLSkNCisJCQkJew0KKwkJCQkJZGlzdF9taW5bbF0gPSBkaXN0X21pbltsIC0gMV07ICAgICAgDQorCQkJCQlpbmRleFtsXSA9IGluZGV4W2wgLSAxXTsgICAgDQorCQkJCX0NCisJCQkJZGlzdF9taW5ba10gPSBkaXN0OyAgICAgICAgDQorCQkJCWluZGV4W2tdID0gaTsgICAgICAgICAgICAgIA0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuOw0KK30NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3JhbmRvbS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9yYW5kb20uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmFhOGJmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9yYW5kb20uYwpAQCAtMCwwICsxLDMzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogcmFuZG9tLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246IFNpZ25lZCAxNiBiaXRzIHJhbmRvbSBnZW5lcmF0b3IgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KK1dvcmQxNiBSYW5kb20oV29yZDE2ICogc2VlZCkNCit7DQorCS8qIHN0YXRpYyBXb3JkMTYgc2VlZCA9IDIxODQ1OyAqLw0KKwkqc2VlZCA9IChXb3JkMTYpKExfYWRkKChMX211bHQoKnNlZWQsIDMxODIxKSA+PiAxKSwgMTM4NDlMKSk7DQorCXJldHVybiAoKnNlZWQpOw0KK30NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3Jlc2lkdS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9yZXNpZHUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODI5ODgyCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9yZXNpZHUuYwpAQCAtMCwwICsxLDY3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogIEZpbGU6IHJlc2lkdS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIERlc2NyaXB0aW9uOiBDb21wdXRlIHRoZSBMUEMgcmVzaWR1YWwgYnkgZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgdGhlIGlucHV0IHNwZWVjaCB0aHJvdWdoIEEoeikgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KK3ZvaWQgUmVzaWR1KA0KKwkJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogcHJlZGljdGlvbiBjb2VmZmljaWVudHMgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc3BlZWNoICh2YWx1ZXMgeFstbS4uLTFdIGFyZSBuZWVkZWQgICAgICAgICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgeDIgIDogcmVzaWR1YWwgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IGksKnAxLCAqcDI7DQorCVdvcmQzMiBzOw0KKwlmb3IgKGkgPSAwOyBpIDwgbGc7IGkrKykNCisJew0KKwkJcDEgPSBhOw0KKwkJcDIgPSAmeFtpXTsNCisJCXMgID0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSksICgqcDIpKTsNCisNCisJCXMgPSBMX3NobDIocywgNSk7IA0KKwkJeVtpXSA9IGV4dHJhY3RfaChMX2FkZChzLCAweDgwMDApKTsNCisJfQ0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvc2NhbGUuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvc2NhbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjQwMTIxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9zY2FsZS5jCkBAIC0wLDAgKzEsNTcgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiBzY2FsZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICBEZXNjcmlwdGlvbjogU2NhbGUgc2lnbmFsIHRvIGdldCBtYXhpbXVtIG9mIGR5bmFtaWMgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorDQordm9pZCBTY2FsZV9zaWcoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIDogc2lnbmFsIHRvIHNjYWxlICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBzaXplIG9mIHhbXSAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGV4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IGV4cG9uZW50OiB4ID0gcm91bmQoeCA8PCBleHApICovDQorCSAgICAgICkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMzIgTF90bXA7DQorCWlmKGV4cCA+IDApDQorCXsNCisJCWZvciAoaSA9IGxnIC0gMSA7IGkgPj0gMDsgaS0tKQ0KKwkJew0KKwkJCUxfdG1wID0gTF9zaGwyKHhbaV0sIDE2ICsgZXhwKTsgIA0KKwkJCXhbaV0gPSBleHRyYWN0X2goTF9hZGQoTF90bXAsIDB4ODAwMCkpOyAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorCWVsc2UNCisJew0KKwkJZXhwID0gLWV4cDsNCisJCWZvciAoaSA9IGxnIC0gMTsgaSA+PSAwOyBpLS0pDQorCQl7DQorCQkJTF90bXAgPSB4W2ldIDw8IDE2Ow0KKwkJCUxfdG1wID4+PSBleHA7IA0KKwkJCXhbaV0gPSAoTF90bXAgKyAweDgwMDApPj4xNjsgICAgICAgICAgICANCisJCX0NCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvc3RyZWFtLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3N0cmVhbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MDgyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3N0cmVhbS5jCkBAIC0wLDAgKzEsNTggQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiBzdHJlYW0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICBEZXNjcmlwdGlvbjogVk9NRSBBUEkgQnVmZmVyIE9wZXJhdG9yIEltcGxlbWVudCBDb2RlICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJzdHJlYW0uaCINCisNCit2b2lkIHZvQVdCX0luaXRGcmFtZUJ1ZmZlcihGcmFtZVN0cmVhbSAqc3RyZWFtKQ0KK3sNCisJc3RyZWFtLT5zZXRfcHRyID0gTlVMTDsNCisJc3RyZWFtLT5mcmFtZV9wdHJfYmsgPSBzdHJlYW0tPmZyYW1lX3B0cjsNCisJc3RyZWFtLT5zZXRfbGVuID0gMDsNCisJc3RyZWFtLT5mcmFtZWJ1ZmZlcl9sZW4gPSAwOw0KKwlzdHJlYW0tPmZyYW1lX3N0b3JlbGVuID0gMDsJDQorfQ0KKw0KK3ZvaWQgdm9BV0JfVXBkYXRlRnJhbWVCdWZmZXIoDQorCQlGcmFtZVN0cmVhbSAqc3RyZWFtLCANCisJCVZPX01FTV9PUEVSQVRPUiAqcE1lbU9QDQorCQkpDQorew0KKwlpbnQgIGxlbjsNCisJbGVuICA9IE1JTihGcmFtZV9NYXhzaXplIC0gc3RyZWFtLT5mcmFtZV9zdG9yZWxlbiwgc3RyZWFtLT5zZXRfbGVuKTsNCisJcE1lbU9QLT5Db3B5KFZPX0lOREVYX0VOQ19BTVJXQiwgc3RyZWFtLT5mcmFtZV9wdHJfYmsgKyBzdHJlYW0tPmZyYW1lX3N0b3JlbGVuICwgc3RyZWFtLT5zZXRfcHRyLCBsZW4pOw0KKwlzdHJlYW0tPnNldF9sZW4gLT0gbGVuOw0KKwlzdHJlYW0tPnNldF9wdHIgKz0gbGVuOw0KKwlzdHJlYW0tPmZyYW1lYnVmZmVyX2xlbiA9IHN0cmVhbS0+ZnJhbWVfc3RvcmVsZW4gKyBsZW47DQorCXN0cmVhbS0+ZnJhbWVfcHRyID0gc3RyZWFtLT5mcmFtZV9wdHJfYms7DQorCXN0cmVhbS0+dXNlZF9sZW4gKz0gbGVuOw0KK30NCisNCit2b2lkIHZvQVdCX0ZsdXNoRnJhbWVCdWZmZXIoRnJhbWVTdHJlYW0gKnN0cmVhbSkNCit7DQorCXN0cmVhbS0+c2V0X3B0ciA9IE5VTEw7DQorCXN0cmVhbS0+ZnJhbWVfcHRyX2JrID0gc3RyZWFtLT5mcmFtZV9wdHI7DQorCXN0cmVhbS0+c2V0X2xlbiA9IDA7DQorCXN0cmVhbS0+ZnJhbWVidWZmZXJfbGVuID0gMDsNCisJc3RyZWFtLT5mcmFtZV9zdG9yZWxlbiA9IDA7CQ0KK30NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3N5bl9maWx0LmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3N5bl9maWx0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMxZmI4ZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvc3luX2ZpbHQuYwpAQCAtMCwwICsxLDE2MCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IHN5bl9maWx0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOiBEbyB0aGUgc3ludGhlc2lzIGZpbHRlcmluZyAxL0EoeikgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorDQordm9pZCBTeW5fZmlsdCgNCisJCVdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGFbbSsxXSBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAgICAgICAgICAgKi8NCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IG91dHB1dCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBtZW1bXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaWx0ZXJpbmcuICAgKi8NCisJCVdvcmQxNiB1cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IDA9bm8gdXBkYXRlLCAxPXVwZGF0ZSBvZiBtZW1vcnkuICAgICAgICAgKi8NCisJICAgICApDQorew0KKwlXb3JkMzIgaSwgYTA7DQorCVdvcmQxNiB5X2J1ZltMX1NVQkZSMTZrICsgTTE2a107DQorCVdvcmQzMiBMX3RtcDsNCisJV29yZDE2ICp5eSwgKnAxLCAqcDI7DQorCXl5ID0gJnlfYnVmWzBdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkvKiBjb3B5IGluaXRpYWwgZmlsdGVyIHN0YXRlcyBpbnRvIHN5bnRoZXNpcyBidWZmZXIgKi8NCisJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspDQorCXsNCisJCSp5eSsrID0gbWVtW2ldOyAgICAgICAgICAgICAgICAgICAgDQorCX0NCisJYTAgPSAoYVswXSA+PiAxKTsgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCAvIDIgKi8NCisJLyogRG8gdGhlIGZpbHRlcmluZy4gKi8NCisJZm9yIChpID0gMDsgaSA8IGxnOyBpKyspDQorCXsNCisJCXAxID0gJmFbMV07DQorCQlwMiA9ICZ5eVtpLTFdOw0KKwkJTF90bXAgID0gdm9fbXVsdDMyKGEwLCB4W2ldKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCUxfdG1wIC09IHZvX211bHQzMigoKnAxKSwgKCpwMikpOw0KKw0KKwkJTF90bXAgPSBMX3NobDIoTF90bXAsIDQpOw0KKwkJeVtpXSA9IHl5W2ldID0gZXh0cmFjdF9oKExfYWRkKExfdG1wLCAweDgwMDApKTsgIA0KKwl9DQorCS8qIFVwZGF0ZSBtZW1vcnkgaWYgcmVxdWlyZWQgKi8NCisJaWYgKHVwZGF0ZSkNCisJCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQ0KKwkJew0KKwkJCW1lbVtpXSA9IHl5W2xnIC0gMTYgKyBpXTsNCisJCX0NCisJcmV0dXJuOw0KK30NCisNCisNCit2b2lkIFN5bl9maWx0XzMyKA0KKwkJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICovDQorCQlXb3JkMTYgbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBvcmRlciBvZiBMUCBmaWx0ZXIgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFuZXc6IGV4Y2l0YXRpb24gKGV4Y1tpXSA+PiBRbmV3KSAgICAqLw0KKwkJV29yZDE2IFFuZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjIHNjYWxpbmcgPSAwKG1pbikgdG8gOChtYXgpICovDQorCQlXb3JkMTYgc2lnX2hpW10sICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAvMTYgOiBzeW50aGVzaXMgaGlnaCAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBzaWdfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBsb3cgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMzIgaSxhMDsNCisJV29yZDMyIExfdG1wLCBMX3RtcDE7DQorCVdvcmQxNiAqcDEsICpwMiwgKnAzOw0KKwlhMCA9IGFbMF0gPj4gKDQgKyBRbmV3KTsgICAgICAgICAgLyogaW5wdXQgLyAxNiBhbmQgPj5RbmV3ICovDQorCS8qIERvIHRoZSBmaWx0ZXJpbmcuICovDQorCWZvciAoaSA9IDA7IGkgPCBsZzsgaSsrKQ0KKwl7DQorCQlMX3RtcCAgPSAwOyANCisJCUxfdG1wMSA9IDA7DQorCQlwMSA9IGE7DQorCQlwMiA9ICZzaWdfbG9baSAtIDFdOw0KKwkJcDMgPSAmc2lnX2hpW2kgLSAxXTsNCisNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisJCUxfdG1wICAtPSB2b19tdWx0MzIoKCpwMi0tKSwgKCpwMSkpOw0KKwkJTF90bXAxIC09IHZvX211bHQzMigoKnAzLS0pLCAoKnAxKyspKTsNCisNCisJCUxfdG1wID0gTF90bXAgPj4gMTE7ICAgICAgDQorCQlMX3RtcCArPSB2b19MX211bHQoZXhjW2ldLCBhMCk7DQorDQorCQkvKiBzaWdfaGkgPSBiaXQxNiB0byBiaXQzMSBvZiBzeW50aGVzaXMgKi8NCisJCUxfdG1wID0gTF90bXAgLSAoTF90bXAxPDwxKTsNCisNCisJCUxfdG1wID0gTF90bXAgPj4gMzsgICAgICAgICAgIC8qIGFpIGluIFExMiAqLw0KKwkJc2lnX2hpW2ldID0gZXh0cmFjdF9oKExfdG1wKTsgICAgICANCisNCisJCS8qIHNpZ19sbyA9IGJpdDQgdG8gYml0MTUgb2Ygc3ludGhlc2lzICovDQorCQlMX3RtcCA+Pj0gNDsgICAgICAgICAgIC8qIDQgOiBzaWdfbG9baV0gPj4gNCAqLw0KKwkJc2lnX2xvW2ldID0gKFdvcmQxNikoKExfdG1wIC0gKHNpZ19oaVtpXSA8PCAxMykpKTsgIA0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy91cGR0X3Rhci5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy91cGR0X3Rhci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZTU2NTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3VwZHRfdGFyLmMKQEAgLTAsMCArMSw0OSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IHVwZHRfdGFyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOiBVcGRhdGUgdGhlIHRhcmdldCB2ZWN0b3IgZm9yIGNvZGVib29rIHNlYXJjaCAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisNCit2b2lkIFVwZHRfdGFyKA0KKwkJV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogb2xkIHRhcmdldCAoZm9yIHBpdGNoIHNlYXJjaCkgICAgICovDQorCQlXb3JkMTYgKiB4MiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMCAgOiBuZXcgdGFyZ2V0IChmb3IgY29kZWJvb2sgc2VhcmNoKSAgKi8NCisJCVdvcmQxNiAqIHksICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFEwICA6IGZpbHRlcmVkIGFkYXB0aXZlIGNvZGVib29rIHZlY3RvciAqLw0KKwkJV29yZDE2IGdhaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE0IDogYWRhcHRpdmUgY29kZWJvb2sgZ2FpbiAgICAgICAgICAgICovDQorCQlXb3JkMTYgTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzdWJmcmFtZSBzaXplICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICApDQorew0KKwlXb3JkMzIgaTsNCisJV29yZDMyIExfdG1wOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTDsgaSsrKQ0KKwl7DQorCQlMX3RtcCA9IHhbaV0gPDwgMTU7DQorCQlMX3RtcCAtPSAoeVtpXSAqIGdhaW4pPDwxOw0KKwkJeDJbaV0gPSBleHRyYWN0X2goTF9zaGwyKExfdG1wLCAxKSk7IA0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy91dGlsLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3V0aWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODE0MWRkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy91dGlsLmMKQEAgLTAsMCArMSw3NCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IHV0aWwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOiBSZXNldCBhbmQgQ29weSBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiAgU2V0X3plcm8oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIERlc2NyaXB0aW9uOiBTZXQgdmVjdG9yIHhbXSB0byB6ZXJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCBTZXRfemVybygNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgIDogdmVjdG9yIHRvIGNsZWFyICAgICAqLw0KKwkJV29yZDE2IEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgOiBsZW5ndGggb2YgdmVjdG9yICAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDMyIG51bSA9IChXb3JkMzIpTDsNCisJZG97DQorCQkqeCsrID0gMDsNCisJfXdoaWxlKC0tbnVtICE9MCk7DQorfQ0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiBDb3B5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRGVzY3JpcHRpb246IENvcHkgdmVjdG9yIHhbXSB0byB5W10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCBDb3B5KA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IGlucHV0IHZlY3RvciAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgIDogb3V0cHV0IHZlY3RvciAgKi8NCisJCVdvcmQxNiBMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiB2ZWN0b3IgbGVuZ3RoICAqLw0KKwkgKQ0KK3sNCisJV29yZDMyCXRlbXAxLHRlbXAyLG51bTsNCisJaWYoTCYxKQ0KKwl7DQorCQl0ZW1wMSA9ICp4Kys7DQorCQkqeSsrID0gdGVtcDE7DQorCX0NCisJbnVtID0gKFdvcmQzMikoTD4+MSk7DQorCXRlbXAxID0gKngrKzsNCisJdGVtcDIgPSAqeCsrOw0KKwlkb3sNCisJCSp5KysgPSB0ZW1wMTsNCisJCSp5KysgPSB0ZW1wMjsNCisJCXRlbXAxID0gKngrKzsNCisJCXRlbXAyID0gKngrKzsNCisJfXdoaWxlKC0tbnVtIT0wKTsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy92b0FNUldCRW5jLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3ZvQU1SV0JFbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGQ5OWE3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy92b0FNUldCRW5jLmMKQEAgLTAsMCArMSwxOTQxIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiB2b0FNUldCRW5jLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjogUGVyZm9ybXMgdGhlIG1haW4gZW5jb2RlciByb3V0aW5lICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgRml4ZWQtcG9pbnQgQyBzaW11bGF0aW9uIG9mIEFNUiBXQiBBQ0VMUCBjb2RpbmcgICAgKg0KKyoJCSAgICBhbGdvcml0aG0gd2l0aCAyMCBtc3NwZWVjaCBmcmFtZXMgZm9yICAgICAgICAgICAgICAqDQorKgkJICAgIHdpZGViYW5kIHNwZWVjaCBzaWduYWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgIm1hdGhfb3AuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKyNpbmNsdWRlICJjb2RfbWFpbi5oIg0KKyNpbmNsdWRlICJiaXRzLmgiDQorI2luY2x1ZGUgIm1haW4uaCINCisjaW5jbHVkZSAidm9BTVJXQi5oIg0KKyNpbmNsdWRlICJtZW1fYWxpZ24uaCINCisjaW5jbHVkZSAiY21uTWVtb3J5LmgiDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorDQorLyogTFBDIGludGVycG9sYXRpb24gY29lZiB7MC40NSwgMC44LCAwLjk2LCAxLjB9OyBpbiBRMTUgKi8NCitzdGF0aWMgV29yZDE2IGludGVycG9sX2ZyYWNbTkJfU1VCRlJdID0gezE0NzQ2LCAyNjIxNCwgMzE0NTcsIDMyNzY3fTsNCisNCisvKiBpc3AgdGFibGVzIGZvciBpbml0aWFsaXphdGlvbiAqLw0KK3N0YXRpYyBXb3JkMTYgaXNwX2luaXRbTV0gPQ0KK3sNCisJMzIxMzgsIDMwMjc0LCAyNzI0NiwgMjMxNzAsIDE4MjA1LCAxMjU0MCwgNjM5MywgMCwNCisJLTYzOTMsIC0xMjU0MCwgLTE4MjA1LCAtMjMxNzAsIC0yNzI0NiwgLTMwMjc0LCAtMzIxMzgsIDE0NzUNCit9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgaXNmX2luaXRbTV0gPQ0KK3sNCisJMTAyNCwgMjA0OCwgMzA3MiwgNDA5NiwgNTEyMCwgNjE0NCwgNzE2OCwgODE5MiwNCisJOTIxNiwgMTAyNDAsIDExMjY0LCAxMjI4OCwgMTMzMTIsIDE0MzM2LCAxNTM2MCwgMzg0MA0KK307DQorDQorLyogSGlnaCBCYW5kIGVuY29kaW5nICovDQorc3RhdGljIGNvbnN0IFdvcmQxNiBIUF9nYWluWzE2XSA9DQorew0KKwkzNjI0LCA0NjczLCA1NTk3LCA2NDc5LCA3NDI1LCA4Mzc4LCA5MzI0LCAxMDI2NCwNCisJMTEyMTAsIDEyMjA2LCAxMzM5MSwgMTQ4NDQsIDE2NzcwLCAxOTY1NSwgMjQyODksIDMyNzI4DQorfTsNCisNCisvKiBQcml2YXRlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uICovDQorc3RhdGljIFdvcmQxNiBzeW50aGVzaXMoDQorCQkJV29yZDE2IEFxW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBKHopICA6IHF1YW50aXplZCBBeiAgICAgICAgICAgICAgICovDQorCQkJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IGV4Y2l0YXRpb24gYXQgMTJrSHogICAgICAgICovDQorCQkJV29yZDE2IFFfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IHNjYWxpbmcgcGVyZm9ybWVkIG9uIGV4YyAgICovDQorCQkJV29yZDE2IHN5bnRoMTZrW10sICAgICAgICAgICAgICAgICAgICAvKiAobykgICA6IDE2a0h6IHN5bnRoZXNpcyBzaWduYWwgICAgICovDQorCQkJQ29kZXJfU3RhdGUgKiBzdCAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSA6IFN0YXRlIHN0cnVjdHVyZSAgICAgICAgICAgICovDQorCQkJKTsNCisNCisvKiBDb2RlYyBzb21lIHBhcmFtZXRlcnMgaW5pdGlhbGl6YXRpb24gKi8NCit2b2lkIFJlc2V0X2VuY29kZXIodm9pZCAqc3QsIFdvcmQxNiByZXNldF9hbGwpDQorew0KKwlXb3JkMTYgaTsNCisJQ29kZXJfU3RhdGUgKmNvZF9zdGF0ZTsNCisJY29kX3N0YXRlID0gKENvZGVyX1N0YXRlICopIHN0Ow0KKwlTZXRfemVybyhjb2Rfc3RhdGUtPm9sZF9leGMsIFBJVF9NQVggKyBMX0lOVEVSUE9MKTsNCisJU2V0X3plcm8oY29kX3N0YXRlLT5tZW1fc3luLCBNKTsNCisJU2V0X3plcm8oY29kX3N0YXRlLT5wYXN0X2lzZnEsIE0pOw0KKwljb2Rfc3RhdGUtPm1lbV93MCA9IDA7ICAgICAgICAgICAgICAgICANCisJY29kX3N0YXRlLT50aWx0X2NvZGUgPSAwOyAgICAgICAgICAgICAgDQorCWNvZF9zdGF0ZS0+Zmlyc3RfZnJhbWUgPSAxOyAgICAgICAgICAgIA0KKwlJbml0X2dwX2NsaXAoY29kX3N0YXRlLT5ncF9jbGlwKTsNCisJY29kX3N0YXRlLT5MX2djX3RocmVzID0gMDsgICAgICAgICAgICAgDQorCWlmIChyZXNldF9hbGwgIT0gMCkNCisJew0KKwkJLyogU3RhdGljIHZlY3RvcnMgdG8gemVybyAqLw0KKwkJU2V0X3plcm8oY29kX3N0YXRlLT5vbGRfc3BlZWNoLCBMX1RPVEFMIC0gTF9GUkFNRSk7DQorCQlTZXRfemVybyhjb2Rfc3RhdGUtPm9sZF93c3AsIChQSVRfTUFYIC8gT1BMX0RFQ0lNKSk7DQorCQlTZXRfemVybyhjb2Rfc3RhdGUtPm1lbV9kZWNpbTIsIDMpOw0KKwkJLyogcm91dGluZXMgaW5pdGlhbGl6YXRpb24gKi8NCisJCUluaXRfRGVjaW1fMTJrOChjb2Rfc3RhdGUtPm1lbV9kZWNpbSk7DQorCQlJbml0X0hQNTBfMTJrOChjb2Rfc3RhdGUtPm1lbV9zaWdfaW4pOw0KKwkJSW5pdF9MZXZpbnNvbihjb2Rfc3RhdGUtPm1lbV9sZXZpbnNvbik7DQorCQlJbml0X1FfZ2FpbjIoY29kX3N0YXRlLT5xdWFfZ2Fpbik7DQorCQlJbml0X0hwX3dzcChjb2Rfc3RhdGUtPmhwX3dzcF9tZW0pOw0KKwkJLyogaXNwIGluaXRpYWxpemF0aW9uICovDQorCQlDb3B5KGlzcF9pbml0LCBjb2Rfc3RhdGUtPmlzcG9sZCwgTSk7DQorCQlDb3B5KGlzcF9pbml0LCBjb2Rfc3RhdGUtPmlzcG9sZF9xLCBNKTsNCisJCS8qIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uICovDQorCQljb2Rfc3RhdGUtPm1lbV9wcmVlbXBoID0gMDsgICAgICAgIA0KKwkJY29kX3N0YXRlLT5tZW1fd3NwID0gMDsgICAgICAgICAgICANCisJCWNvZF9zdGF0ZS0+UV9vbGQgPSAxNTsgICAgICAgICAgICAgDQorCQljb2Rfc3RhdGUtPlFfbWF4WzBdID0gMTU7ICAgICAgICAgIA0KKwkJY29kX3N0YXRlLT5RX21heFsxXSA9IDE1OyAgICAgICAgICANCisJCWNvZF9zdGF0ZS0+b2xkX3dzcF9tYXggPSAwOyAgICAgICAgDQorCQljb2Rfc3RhdGUtPm9sZF93c3Bfc2hpZnQgPSAwOyAgICAgIA0KKwkJLyogcGl0Y2ggb2wgaW5pdGlhbGl6YXRpb24gKi8NCisJCWNvZF9zdGF0ZS0+b2xkX1QwX21lZCA9IDQwOyAgICAgICAgDQorCQljb2Rfc3RhdGUtPm9sX2dhaW4gPSAwOyAgICAgICAgICAgIA0KKwkJY29kX3N0YXRlLT5hZGFfdyA9IDA7ICAgICAgICAgICAgICANCisJCWNvZF9zdGF0ZS0+b2xfd2dodF9mbGcgPSAwOyAgICAgICAgDQorCQlmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKQ0KKwkJew0KKwkJCWNvZF9zdGF0ZS0+b2xkX29sX2xhZ1tpXSA9IDQwOyANCisJCX0NCisJCVNldF96ZXJvKGNvZF9zdGF0ZS0+b2xkX2hwX3dzcCwgKExfRlJBTUUgLyAyKSAvIE9QTF9ERUNJTSArIChQSVRfTUFYIC8gT1BMX0RFQ0lNKSk7DQorCQlTZXRfemVybyhjb2Rfc3RhdGUtPm1lbV9zeW5faGYsIE0pOw0KKwkJU2V0X3plcm8oY29kX3N0YXRlLT5tZW1fc3luX2hpLCBNKTsNCisJCVNldF96ZXJvKGNvZF9zdGF0ZS0+bWVtX3N5bl9sbywgTSk7DQorCQlJbml0X0hQNTBfMTJrOChjb2Rfc3RhdGUtPm1lbV9zaWdfb3V0KTsNCisJCUluaXRfRmlsdF82a183ayhjb2Rfc3RhdGUtPm1lbV9oZik7DQorCQlJbml0X0hQNDAwXzEyazgoY29kX3N0YXRlLT5tZW1faHA0MDApOw0KKwkJQ29weShpc2ZfaW5pdCwgY29kX3N0YXRlLT5pc2ZvbGQsIE0pOw0KKwkJY29kX3N0YXRlLT5tZW1fZGVlbXBoID0gMDsgICAgICAgICANCisJCWNvZF9zdGF0ZS0+c2VlZDIgPSAyMTg0NTsgICAgICAgICAgDQorCQlJbml0X0ZpbHRfNmtfN2soY29kX3N0YXRlLT5tZW1faGYyKTsNCisJCWNvZF9zdGF0ZS0+Z2Fpbl9hbHBoYSA9IDMyNzY3OyAgICAgDQorCQljb2Rfc3RhdGUtPnZhZF9oaXN0ID0gMDsNCisJCXdiX3ZhZF9yZXNldChjb2Rfc3RhdGUtPnZhZFN0KTsNCisJCWR0eF9lbmNfcmVzZXQoY29kX3N0YXRlLT5kdHhfZW5jU3QsIGlzZl9pbml0KTsNCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorKiAgIEZ1bnRpb24gIGNvZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICB+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgLT5NYWluIGNvZGVyIHJvdXRpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQordm9pZCBjb2RlcigNCisJCVdvcmQxNiAqIG1vZGUsICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiAgdXNlZCBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHNwZWVjaDE2a1tdLCAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6ICAzMjAgbmV3IHNwZWVjaCBzYW1wbGVzIChhdCAxNiBrSHopICAgICovDQorCQlXb3JkMTYgcHJtc1tdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogIG91dHB1dCBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIHNlcl9zaXplLCAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiAgYml0IHJhdGUgb2YgdGhlIHVzZWQgbW9kZSAgICAgICAgICAgICAqLw0KKwkJdm9pZCAqc3BlX3N0YXRlLCAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gICA6ICBTdGF0ZSBzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgYWxsb3dfZHR4ICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogIERUWCBPTi9PRkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICApDQorew0KKwkvKiBDb2RlciBzdGF0ZXMgKi8NCisJQ29kZXJfU3RhdGUgKnN0Ow0KKwkvKiBTcGVlY2ggdmVjdG9yICovDQorCVdvcmQxNiBvbGRfc3BlZWNoW0xfVE9UQUxdOw0KKwlXb3JkMTYgKm5ld19zcGVlY2gsICpzcGVlY2gsICpwX3dpbmRvdzsNCisNCisJLyogV2VpZ2h0ZWQgc3BlZWNoIHZlY3RvciAqLw0KKwlXb3JkMTYgb2xkX3dzcFtMX0ZSQU1FICsgKFBJVF9NQVggLyBPUExfREVDSU0pXTsNCisJV29yZDE2ICp3c3A7DQorDQorCS8qIEV4Y2l0YXRpb24gdmVjdG9yICovDQorCVdvcmQxNiBvbGRfZXhjWyhMX0ZSQU1FICsgMSkgKyBQSVRfTUFYICsgTF9JTlRFUlBPTF07DQorCVdvcmQxNiAqZXhjOw0KKw0KKwkvKiBMUEMgY29lZmZpY2llbnRzICovDQorCVdvcmQxNiByX2hbTSArIDFdLCByX2xbTSArIDFdOyAgICAgICAgIC8qIEF1dG9jb3JyZWxhdGlvbnMgb2Ygd2luZG93ZWQgc3BlZWNoICAqLw0KKwlXb3JkMTYgcmNbTV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWZsZWN0aW9uIGNvZWZmaWNpZW50cy4gICAgICAgICAgICAgKi8NCisJV29yZDE2IEFwW00gKyAxXTsgICAgICAgICAgICAgICAgICAgICAgLyogQSh6KSB3aXRoIHNwZWN0cmFsIGV4cGFuc2lvbiAgICAgICAgICovDQorCVdvcmQxNiBpc3BuZXdbTV07ICAgICAgICAgICAgICAgICAgICAgIC8qIGltbWl0dGFuY2Ugc3BlY3RyYWwgcGFpcnMgYXQgNG5kIHNmciAqLw0KKwlXb3JkMTYgaXNwbmV3X3FbTV07ICAgICAgICAgICAgICAgICAgICAvKiBxdWFudGl6ZWQgSVNQcyBhdCA0bmQgc3ViZnJhbWUgICAgICAgKi8NCisJV29yZDE2IGlzZltNXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVNGIChmcmVxdWVuY3kgZG9tYWluKSBhdCA0bmQgc2ZyICAgICovDQorCVdvcmQxNiAqcF9BLCAqcF9BcTsgICAgICAgICAgICAgICAgICAgIC8qIHB0ciB0byBBKHopIGZvciB0aGUgNCBzdWJmcmFtZXMgICAgICAqLw0KKwlXb3JkMTYgQVtOQl9TVUJGUiAqIChNICsgMSldOyAgICAgICAgICAvKiBBKHopIHVucXVhbnRpemVkIGZvciB0aGUgNCBzdWJmcmFtZXMgKi8NCisJV29yZDE2IEFxW05CX1NVQkZSICogKE0gKyAxKV07ICAgICAgICAgLyogQSh6KSAgIHF1YW50aXplZCBmb3IgdGhlIDQgc3ViZnJhbWVzICovDQorDQorCS8qIE90aGVyIHZlY3RvcnMgKi8NCisJV29yZDE2IHhuW0xfU1VCRlJdOyAgICAgICAgICAgICAgICAgICAgLyogVGFyZ2V0IHZlY3RvciBmb3IgcGl0Y2ggc2VhcmNoICAgICAqLw0KKwlXb3JkMTYgeG4yW0xfU1VCRlJdOyAgICAgICAgICAgICAgICAgICAvKiBUYXJnZXQgdmVjdG9yIGZvciBjb2RlYm9vayBzZWFyY2ggICovDQorCVdvcmQxNiBkbltMX1NVQkZSXTsgICAgICAgICAgICAgICAgICAgIC8qIENvcnJlbGF0aW9uIGJldHdlZW4geG4yIGFuZCBoMSAgICAgKi8NCisJV29yZDE2IGNuW0xfU1VCRlJdOyAgICAgICAgICAgICAgICAgICAgLyogVGFyZ2V0IHZlY3RvciBpbiByZXNpZHVhbCBkb21haW4gICAqLw0KKwlXb3JkMTYgaDFbTF9TVUJGUl07ICAgICAgICAgICAgICAgICAgICAvKiBJbXB1bHNlIHJlc3BvbnNlIHZlY3RvciAgICAgICAgICAgICovDQorCVdvcmQxNiBoMltMX1NVQkZSXTsgICAgICAgICAgICAgICAgICAgIC8qIEltcHVsc2UgcmVzcG9uc2UgdmVjdG9yICAgICAgICAgICAgKi8NCisJV29yZDE2IGNvZGVbTF9TVUJGUl07ICAgICAgICAgICAgICAgICAgLyogRml4ZWQgY29kZWJvb2sgZXhjaXRhdGlvbiAgICAgICAgICAqLw0KKwlXb3JkMTYgeTFbTF9TVUJGUl07ICAgICAgICAgICAgICAgICAgICAvKiBGaWx0ZXJlZCBhZGFwdGl2ZSBleGNpdGF0aW9uICAgICAgICovDQorCVdvcmQxNiB5MltMX1NVQkZSXTsgICAgICAgICAgICAgICAgICAgIC8qIEZpbHRlcmVkIGFkYXB0aXZlIGV4Y2l0YXRpb24gICAgICAgKi8NCisJV29yZDE2IGVycm9yW00gKyBMX1NVQkZSXTsgICAgICAgICAgICAgLyogZXJyb3Igb2YgcXVhbnRpemF0aW9uICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgc3ludGhbTF9TVUJGUl07ICAgICAgICAgICAgICAgICAvKiAxMi44a0h6IHN5bnRoZXNpcyB2ZWN0b3IgICAgICAgICAgICovDQorCVdvcmQxNiBleGMyW0xfRlJBTUVdOyAgICAgICAgICAgICAgICAgIC8qIGV4Y2l0YXRpb24gdmVjdG9yICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IGJ1ZltMX0ZSQU1FXTsgICAgICAgICAgICAgICAgICAgLyogVkFEIGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKwkvKiBTY2FsYXJzICovDQorCVdvcmQzMiBpLCBqLCBpX3N1YmZyLCBzZWxlY3QsIHBpdF9mbGFnLCBjbGlwX2dhaW4sIHZhZF9mbGFnOw0KKwlXb3JkMTYgY29kZWNfbW9kZTsNCisJV29yZDE2IFRfb3AsIFRfb3AyLCBUMCwgVDBfbWluLCBUMF9tYXgsIFQwX2ZyYWMsIGluZGV4Ow0KKwlXb3JkMTYgZ2Fpbl9waXQsIGdhaW5fY29kZSwgZ19jb2VmZls0XSwgZ19jb2VmZjJbNF07DQorCVdvcmQxNiB0bXAsIGdhaW4xLCBnYWluMiwgZXhwLCBRX25ldywgbXUsIHNoaWZ0LCBtYXg7DQorCVdvcmQxNiB2b2ljZV9mYWM7DQorCVdvcmQxNiBpbmRpY2VbOF07DQorCVdvcmQzMiBMX3RtcCwgTF9nYWluX2NvZGUsIExfbWF4LCBMX3RtcDE7DQorCVdvcmQxNiBjb2RlMltMX1NVQkZSXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogRml4ZWQgY29kZWJvb2sgZXhjaXRhdGlvbiAgKi8NCisJV29yZDE2IHN0YWJfZmFjLCBmYWMsIGdhaW5fY29kZV9sbzsNCisNCisJV29yZDE2IGNvcnJfZ2FpbjsNCisJV29yZDE2ICp2b19wMCwgKnZvX3AxLCAqdm9fcDIsICp2b19wMzsNCisNCisJc3QgPSAoQ29kZXJfU3RhdGUgKikgc3BlX3N0YXRlOw0KKw0KKwkqc2VyX3NpemUgPSBuYl9vZl9iaXRzWyptb2RlXTsgICAgICAgICANCisJY29kZWNfbW9kZSA9ICptb2RlOyAgICAgICAgICAgICAgICAgICAgDQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICAgICAgICAgIEluaXRpYWxpemUgcG9pbnRlcnMgdG8gc3BlZWNoIHZlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICB8LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18ICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgcGFzdCBzcCAgIHNmMSAgICAgc2YyICAgICBzZjMgICAgIHNmNCAgICBMX05FWFQgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICA8LS0tLS0tLSAgVG90YWwgc3BlZWNoIGJ1ZmZlciAoTF9UT1RBTCkgICAtLS0tLS0+ICAgICAqDQorCSAqICAgICAgICAgICAgICBvbGRfc3BlZWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICA8LS0tLS0tLSAgTFBDIGFuYWx5c2lzIHdpbmRvdyAoTF9XSU5ET1cpICAtLS0tLS0+ICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgIDwtLSBwcmVzZW50IGZyYW1lIChMX0ZSQU1FKSAtLS0tPiAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgIHBfd2luZG93IHwgICAgICAgPC0tLS0tIG5ldyBzcGVlY2ggKExfRlJBTUUpIC0tLS0+ICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlY2ggICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3NwZWVjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwluZXdfc3BlZWNoID0gb2xkX3NwZWVjaCArIExfVE9UQUwgLSBMX0ZSQU1FIC0gTF9GSUxUOyAgICAgICAgIC8qIE5ldyBzcGVlY2ggICAgICovDQorCXNwZWVjaCA9IG9sZF9zcGVlY2ggKyBMX1RPVEFMIC0gTF9GUkFNRSAtIExfTkVYVDsgICAgICAgICAgICAgLyogUHJlc2VudCBmcmFtZSAgKi8NCisJcF93aW5kb3cgPSBvbGRfc3BlZWNoICsgTF9UT1RBTCAtIExfV0lORE9XOyANCisNCisJZXhjID0gb2xkX2V4YyArIFBJVF9NQVggKyBMX0lOVEVSUE9MOyAgDQorCXdzcCA9IG9sZF93c3AgKyAoUElUX01BWCAvIE9QTF9ERUNJTSk7IA0KKw0KKwkvKiBjb3B5IGNvZGVyIG1lbW9yeSBzdGF0ZSBpbnRvIHdvcmtpbmcgc3BhY2UgKi8NCisJQ29weShzdC0+b2xkX3NwZWVjaCwgb2xkX3NwZWVjaCwgTF9UT1RBTCAtIExfRlJBTUUpOw0KKwlDb3B5KHN0LT5vbGRfd3NwLCBvbGRfd3NwLCBQSVRfTUFYIC8gT1BMX0RFQ0lNKTsNCisJQ29weShzdC0+b2xkX2V4Yywgb2xkX2V4YywgUElUX01BWCArIExfSU5URVJQT0wpOw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogRG93biBzYW1wbGluZyBzaWduYWwgZnJvbSAxNmtIeiB0byAxMi44a0h6ICAgICAgICAgICAgICAgICAgICAqDQorCSAqIC0+IFRoZSBzaWduYWwgaXMgZXh0ZW5kZWQgYnkgTF9GSUxUIHNhbXBsZXMgKHBhZGRlZCB0byB6ZXJvKSAgKg0KKwkgKiB0byBhdm9pZCBhZGRpdGlvbmFsIGRlbGF5IChMX0ZJTFQgc2FtcGxlcykgaW4gdGhlIGNvZGVyLiAgICAgICoNCisJICogVGhlIGxhc3QgTF9GSUxUIHNhbXBsZXMgYXJlIGFwcHJveGltYXRlZCBhZnRlciBkZWNpbWF0aW9uIGFuZCAqDQorCSAqIGFyZSB1c2VkIChhbmQgd2luZG93ZWQpIG9ubHkgaW4gYXV0b2NvcnJlbGF0aW9ucy4gICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCURlY2ltXzEyazgoc3BlZWNoMTZrLCBMX0ZSQU1FMTZrLCBuZXdfc3BlZWNoLCBzdC0+bWVtX2RlY2ltKTsNCisNCisJLyogbGFzdCBMX0ZJTFQgc2FtcGxlcyBmb3IgYXV0b2NvcnJlbGF0aW9uIHdpbmRvdyAqLw0KKwlDb3B5KHN0LT5tZW1fZGVjaW0sIGNvZGUsIDIgKiBMX0ZJTFQxNmspOw0KKwlTZXRfemVybyhlcnJvciwgTF9GSUxUMTZrKTsgICAgICAgICAgICAvKiBzZXQgbmV4dCBzYW1wbGUgdG8gemVybyAqLw0KKwlEZWNpbV8xMms4KGVycm9yLCBMX0ZJTFQxNmssIG5ld19zcGVlY2ggKyBMX0ZSQU1FLCBjb2RlKTsNCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIFBlcmZvcm0gNTBIeiBIUCBmaWx0ZXJpbmcgb2YgaW5wdXQgc2lnbmFsLiAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCUhQNTBfMTJrOChuZXdfc3BlZWNoLCBMX0ZSQU1FLCBzdC0+bWVtX3NpZ19pbik7DQorDQorCS8qIGxhc3QgTF9GSUxUIHNhbXBsZXMgZm9yIGF1dG9jb3JyZWxhdGlvbiB3aW5kb3cgKi8NCisJQ29weShzdC0+bWVtX3NpZ19pbiwgY29kZSwgNik7DQorCUhQNTBfMTJrOChuZXdfc3BlZWNoICsgTF9GUkFNRSwgTF9GSUxULCBjb2RlKTsNCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIFBlcmZvcm0gZml4ZWQgcHJlZW1waGFzaXMgdGhyb3VnaCAxIC0gZyB6Xi0xICAgICAgICAgICAgICAgICAgKg0KKwkgKiBTY2FsZSBzaWduYWwgdG8gZ2V0IG1heGltdW0gb2YgcHJlY2lzaW9uIGluIGZpbHRlcmluZyAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwltdSA9IFBSRUVNUEhfRkFDID4+IDE7ICAgICAgICAgICAgICAvKiBRMTUgLS0+IFExNCAqLw0KKw0KKwkvKiBnZXQgbWF4IG9mIG5ldyBwcmVlbXBoYXNlZCBzYW1wbGVzIChMX0ZSQU1FK0xfRklMVCkgKi8NCisJTF90bXAgPSBuZXdfc3BlZWNoWzBdIDw8IDE1Ow0KKwlMX3RtcCAtPSAoc3QtPm1lbV9wcmVlbXBoICogbXUpPDwxOw0KKwlMX21heCA9IExfYWJzKExfdG1wKTsNCisNCisJZm9yIChpID0gMTsgaSA8IExfRlJBTUUgKyBMX0ZJTFQ7IGkrKykNCisJew0KKwkJTF90bXAgPSBuZXdfc3BlZWNoW2ldIDw8IDE1Ow0KKwkJTF90bXAgLT0gKG5ld19zcGVlY2hbaSAtIDFdICogbXUpPDwxOw0KKwkJTF90bXAgPSBMX2FicyhMX3RtcCk7DQorCQlpZihMX3RtcCA+IExfbWF4KQ0KKwkJew0KKwkJCUxfbWF4ID0gTF90bXA7ICAgICAgICAgICAgICAgICANCisJCX0NCisJfQ0KKw0KKwkvKiBnZXQgc2NhbGluZyBmYWN0b3IgZm9yIG5ldyBhbmQgcHJldmlvdXMgc2FtcGxlcyAqLw0KKwkvKiBsaW1pdCBzY2FsaW5nIHRvIFFfTUFYIHRvIGtlZXAgZHluYW1pYyBmb3IgcmluZ2luZyBpbiBsb3cgc2lnbmFsICovDQorCS8qIGxpbWl0IHNjYWxpbmcgdG8gUV9NQVggYWxzbyB0byBhdm9pZCBhWzBdPDEgaW4gc3luX2ZpbHRfMzIgKi8NCisJdG1wID0gZXh0cmFjdF9oKExfbWF4KTsNCisJaWYgKHRtcCA9PSAwKQ0KKwl7DQorCQlzaGlmdCA9IFFfTUFYOyAgICAgICAgICAgICAgICAgICAgIA0KKwl9IGVsc2UNCisJew0KKwkJc2hpZnQgPSBub3JtX3ModG1wKSAtIDE7DQorCQlpZiAoc2hpZnQgPCAwKQ0KKwkJew0KKwkJCXNoaWZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICANCisJCX0NCisJCWlmIChzaGlmdCA+IFFfTUFYKQ0KKwkJew0KKwkJCXNoaWZ0ID0gUV9NQVg7ICAgICAgICAgICAgICAgICANCisJCX0NCisJfQ0KKwlRX25ldyA9IHNoaWZ0OyAgICAgICAgICAgICAgICAgICAgICAgICANCisJaWYgKFFfbmV3ID4gc3QtPlFfbWF4WzBdKQ0KKwl7DQorCQlRX25ldyA9IHN0LT5RX21heFswXTsgICAgICAgICAgICAgIA0KKwl9DQorCWlmIChRX25ldyA+IHN0LT5RX21heFsxXSkNCisJew0KKwkJUV9uZXcgPSBzdC0+UV9tYXhbMV07ICAgICAgICAgICAgICANCisJfQ0KKwlleHAgPSAoUV9uZXcgLSBzdC0+UV9vbGQpOw0KKwlzdC0+UV9vbGQgPSBRX25ldzsgICAgICAgICAgICAgICAgICAgICANCisJc3QtPlFfbWF4WzFdID0gc3QtPlFfbWF4WzBdOyAgICAgICAgICAgDQorCXN0LT5RX21heFswXSA9IHNoaWZ0OyAgICAgICAgICAgICAgICAgIA0KKw0KKwkvKiBwcmVlbXBoYXNpcyB3aXRoIHNjYWxpbmcgKExfRlJBTUUrTF9GSUxUKSAqLw0KKwl0bXAgPSBuZXdfc3BlZWNoW0xfRlJBTUUgLSAxXTsgICAgICAgICANCisNCisJZm9yIChpID0gTF9GUkFNRSArIExfRklMVCAtIDE7IGkgPiAwOyBpLS0pDQorCXsNCisJCUxfdG1wID0gbmV3X3NwZWVjaFtpXSA8PCAxNTsNCisJCUxfdG1wIC09IChuZXdfc3BlZWNoW2kgLSAxXSAqIG11KTw8MTsNCisJCUxfdG1wID0gKExfdG1wIDw8IFFfbmV3KTsNCisJCW5ld19zcGVlY2hbaV0gPSB2b19yb3VuZChMX3RtcCk7ICAgICAgDQorCX0NCisNCisJTF90bXAgPSBuZXdfc3BlZWNoWzBdIDw8IDE1Ow0KKwlMX3RtcCAtPSAoc3QtPm1lbV9wcmVlbXBoICogbXUpPDwxOw0KKwlMX3RtcCA9IChMX3RtcCA8PCBRX25ldyk7DQorCW5ld19zcGVlY2hbMF0gPSB2b19yb3VuZChMX3RtcCk7ICAgICAgICAgIA0KKw0KKwlzdC0+bWVtX3ByZWVtcGggPSB0bXA7ICAgICAgICAgICAgICAgICANCisNCisJLyogc2NhbGUgcHJldmlvdXMgc2FtcGxlcyBhbmQgbWVtb3J5ICovDQorDQorCVNjYWxlX3NpZyhvbGRfc3BlZWNoLCBMX1RPVEFMIC0gTF9GUkFNRSAtIExfRklMVCwgZXhwKTsNCisJU2NhbGVfc2lnKG9sZF9leGMsIFBJVF9NQVggKyBMX0lOVEVSUE9MLCBleHApOw0KKwlTY2FsZV9zaWcoc3QtPm1lbV9zeW4sIE0sIGV4cCk7DQorCVNjYWxlX3NpZyhzdC0+bWVtX2RlY2ltMiwgMywgZXhwKTsNCisJU2NhbGVfc2lnKCYoc3QtPm1lbV93c3ApLCAxLCBleHApOw0KKwlTY2FsZV9zaWcoJihzdC0+bWVtX3cwKSwgMSwgZXhwKTsNCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICBDYWxsIFZBRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgUHJlZW1waGVzaXMgc2NhbGUgZG93biBzaWduYWwgaW4gbG93IGZyZXF1ZW5jeSBhbmQga2VlcCBkeW5hbWljIGluIEhGLioNCisJICogIFZhZCB3b3JrIHNsaWdodGx5IGluIGZ1dHVyIChuZXdfc3BlZWNoID0gc3BlZWNoICsgTF9ORVhUIC0gTF9GSUxUKS4gICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJQ29weShuZXdfc3BlZWNoLCBidWYsIExfRlJBTUUpOw0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlTY2FsZV9zaWdfb3B0KGJ1ZiwgTF9GUkFNRSwgMSAtIFFfbmV3KTsNCisjZWxzZQ0KKwlTY2FsZV9zaWcoYnVmLCBMX0ZSQU1FLCAxIC0gUV9uZXcpOw0KKyNlbmRpZg0KKw0KKwl2YWRfZmxhZyA9IHdiX3ZhZChzdC0+dmFkU3QsIGJ1Zik7ICAgICAgICAgIC8qIFZvaWNlIEFjdGl2aXR5IERldGVjdGlvbiAqLyANCisJaWYgKHZhZF9mbGFnID09IDApDQorCXsNCisJCXN0LT52YWRfaGlzdCA9IChzdC0+dmFkX2hpc3QgKyAxKTsgICAgICAgIA0KKwl9IGVsc2UNCisJew0KKwkJc3QtPnZhZF9oaXN0ID0gMDsgICAgICAgICAgICAgDQorCX0NCisNCisJLyogRFRYIHByb2Nlc3NpbmcgKi8NCisJaWYgKGFsbG93X2R0eCAhPSAwKQ0KKwl7DQorCQkvKiBOb3RlIHRoYXQgbW9kZSBtYXkgY2hhbmdlIGhlcmUgKi8NCisJCXR4X2R0eF9oYW5kbGVyKHN0LT5kdHhfZW5jU3QsIHZhZF9mbGFnLCBtb2RlKTsNCisJCSpzZXJfc2l6ZSA9IG5iX29mX2JpdHNbKm1vZGVdOyANCisJfQ0KKw0KKwlpZigqbW9kZSAhPSBNUkRUWCkNCisJew0KKwkJUGFybV9zZXJpYWwodmFkX2ZsYWcsIDEsICZwcm1zKTsNCisJfQ0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogIFBlcmZvcm0gTFBDIGFuYWx5c2lzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICB+fn5+fn5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIC0gYXV0b2NvcnJlbGF0aW9uICsgbGFnIHdpbmRvd2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAtIExldmluc29uLWR1cmJpbiBhbGdvcml0aG0gdG8gZmluZCBhW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgLSBjb252ZXJ0IGFbXSB0byBpc3BbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIC0gY29udmVydCBpc3BbXSB0byBpc2ZbXSBmb3IgcXVhbnRpemF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAtIHF1YW50aXplIGFuZCBjb2RlIHRoZSBpc2ZbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgLSBjb252ZXJ0IGlzZltdIHRvIGlzcFtdIGZvciBpbnRlcnBvbGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIC0gZmluZCB0aGUgaW50ZXJwb2xhdGVkIElTUHMgYW5kIGNvbnZlcnQgdG8gYVtdIGZvciB0aGUgNCBzdWJmcmFtZXMgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkvKiBMUCBhbmFseXNpcyBjZW50ZXJlZCBhdCA0bmQgc3ViZnJhbWUgKi8NCisJQXV0b2NvcnIocF93aW5kb3csIE0sIHJfaCwgcl9sKTsgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdXRvY29ycmVsYXRpb25zICovDQorCUxhZ193aW5kb3cocl9oLCByX2wpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGFnIHdpbmRvd2luZyAgICAqLw0KKwlMZXZpbnNvbihyX2gsIHJfbCwgQSwgcmMsIHN0LT5tZW1fbGV2aW5zb24pOyAgICAgICAgICAgIC8qIExldmluc29uIER1cmJpbiAgKi8NCisJQXpfaXNwKEEsIGlzcG5ldywgc3QtPmlzcG9sZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGcm9tIEEoeikgdG8gSVNQICovDQorDQorCS8qIEZpbmQgdGhlIGludGVycG9sYXRlZCBJU1BzIGFuZCBjb252ZXJ0IHRvIGFbXSBmb3IgYWxsIHN1YmZyYW1lcyAqLw0KKwlJbnRfaXNwKHN0LT5pc3BvbGQsIGlzcG5ldywgaW50ZXJwb2xfZnJhYywgQSk7DQorDQorCS8qIHVwZGF0ZSBpc3BvbGRbXSBmb3IgdGhlIG5leHQgZnJhbWUgKi8NCisJQ29weShpc3BuZXcsIHN0LT5pc3BvbGQsIE0pOw0KKw0KKwkvKiBDb252ZXJ0IElTUHMgdG8gZnJlcXVlbmN5IGRvbWFpbiAwLi42NDAwICovDQorCUlzcF9pc2YoaXNwbmV3LCBpc2YsIE0pOw0KKw0KKwkvKiBjaGVjayByZXNvbmFuY2UgZm9yIHBpdGNoIGNsaXBwaW5nIGFsZ29yaXRobSAqLw0KKwlHcF9jbGlwX3Rlc3RfaXNmKGlzZiwgc3QtPmdwX2NsaXApOw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICBQZXJmb3JtIFBJVENIX09MIGFuYWx5c2lzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAtIEZpbmQgdGhlIHJlc2lkdWFsIHJlc1tdIGZvciB0aGUgd2hvbGUgc3BlZWNoIGZyYW1lICAgICAgICAgICAgICAgICAqDQorCSAqIC0gRmluZCB0aGUgd2VpZ2h0ZWQgaW5wdXQgc3BlZWNoIHdzcFtdIGZvciB0aGUgd2hvbGUgc3BlZWNoIGZyYW1lICAgICoNCisJICogLSBzY2FsZSB3c3BbXSB0byBhdm9pZCBvdmVyZmxvdyBpbiBwaXRjaCBlc3RpbWF0aW9uICAgICAgICAgICAgICAgICAgKg0KKwkgKiAtIEZpbmQgb3BlbiBsb29wIHBpdGNoIGxhZyBmb3Igd2hvbGUgc3BlZWNoIGZyYW1lICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCXBfQSA9IEE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpX3N1YmZyID0gMDsgaV9zdWJmciA8IExfRlJBTUU7IGlfc3ViZnIgKz0gTF9TVUJGUikNCisJew0KKwkJLyogV2VpZ2h0aW5nIG9mIExQQyBjb2VmZmljaWVudHMgKi8NCisJCVdlaWdodF9hKHBfQSwgQXAsIEdBTU1BMSwgTSk7DQorDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCQlSZXNpZHVfb3B0KEFwLCAmc3BlZWNoW2lfc3ViZnJdLCAmd3NwW2lfc3ViZnJdLCBMX1NVQkZSKTsNCisjZWxzZQ0KKwkJUmVzaWR1KEFwLCAmc3BlZWNoW2lfc3ViZnJdLCAmd3NwW2lfc3ViZnJdLCBMX1NVQkZSKTsNCisjZW5kaWYNCisNCisJCXBfQSArPSAoTSArIDEpOyAgICAgICAgICAgICAgICAgICAgDQorCX0NCisNCisJRGVlbXBoMih3c3AsIFRJTFRfRkFDLCBMX0ZSQU1FLCAmKHN0LT5tZW1fd3NwKSk7DQorDQorCS8qIGZpbmQgbWF4aW11bSB2YWx1ZSBvbiB3c3BbXSBmb3IgMTIgYml0cyBzY2FsaW5nICovDQorCW1heCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDA7IGkgPCBMX0ZSQU1FOyBpKyspDQorCXsNCisJCXRtcCA9IGFic19zKHdzcFtpXSk7DQorCQlpZih0bXAgPiBtYXgpDQorCQl7DQorCQkJbWF4ID0gdG1wOyAgICAgICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorCXRtcCA9IHN0LT5vbGRfd3NwX21heDsgICAgICAgICAgICAgICAgIA0KKwlpZihtYXggPiB0bXApDQorCXsNCisJCXRtcCA9IG1heDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogdG1wID0gbWF4KHdzcF9tYXgsIG9sZF93c3BfbWF4KSAqLw0KKwl9DQorCXN0LT5vbGRfd3NwX21heCA9IG1heDsgICAgICAgICAgICAgICAgDQorDQorCXNoaWZ0ID0gbm9ybV9zKHRtcCkgLSAzOw0KKwlpZiAoc2hpZnQgPiAwKQ0KKwl7DQorCQlzaGlmdCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNoaWZ0ID0gMC4uLTMgKi8NCisJfQ0KKwkvKiBkZWNpbWF0aW9uIG9mIHdzcFtdIHRvIHNlYXJjaCBwaXRjaCBpbiBMRiBhbmQgdG8gcmVkdWNlIGNvbXBsZXhpdHkgKi8NCisJTFBfRGVjaW0yKHdzcCwgTF9GUkFNRSwgc3QtPm1lbV9kZWNpbTIpOw0KKw0KKwkvKiBzY2FsZSB3c3BbXSBpbiAxMiBiaXRzIHRvIGF2b2lkIG92ZXJmbG93ICovDQorI2lmZGVmICBBU01fT1BUICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJU2NhbGVfc2lnX29wdCh3c3AsIExfRlJBTUUgLyBPUExfREVDSU0sIHNoaWZ0KTsNCisjZWxzZQ0KKwlTY2FsZV9zaWcod3NwLCBMX0ZSQU1FIC8gT1BMX0RFQ0lNLCBzaGlmdCk7DQorI2VuZGlmDQorCS8qIHNjYWxlIG9sZF93c3AgKHdhcm5pbmc6IGV4cCBtdXN0IGJlIFFfbmV3LVFfb2xkKSAqLw0KKwlleHAgPSBleHAgKyAoc2hpZnQgLSBzdC0+b2xkX3dzcF9zaGlmdCk7DQorCXN0LT5vbGRfd3NwX3NoaWZ0ID0gc2hpZnQ7DQorDQorCVNjYWxlX3NpZyhvbGRfd3NwLCBQSVRfTUFYIC8gT1BMX0RFQ0lNLCBleHApOw0KKwlTY2FsZV9zaWcoc3QtPm9sZF9ocF93c3AsIFBJVF9NQVggLyBPUExfREVDSU0sIGV4cCk7DQorDQorCXNjYWxlX21lbV9IcF93c3Aoc3QtPmhwX3dzcF9tZW0sIGV4cCk7DQorDQorCS8qIEZpbmQgb3BlbiBsb29wIHBpdGNoIGxhZyBmb3Igd2hvbGUgc3BlZWNoIGZyYW1lICovDQorDQorCWlmKCpzZXJfc2l6ZSA9PSBOQkJJVFNfN2spDQorCXsNCisJCS8qIEZpbmQgb3BlbiBsb29wIHBpdGNoIGxhZyBmb3Igd2hvbGUgc3BlZWNoIGZyYW1lICovDQorCQlUX29wID0gUGl0Y2hfbWVkX29sKHdzcCwgc3QsIExfRlJBTUUgLyBPUExfREVDSU0pOw0KKwl9IGVsc2UNCisJew0KKwkJLyogRmluZCBvcGVuIGxvb3AgcGl0Y2ggbGFnIGZvciBmaXJzdCAxLzIgZnJhbWUgKi8NCisJCVRfb3AgPSBQaXRjaF9tZWRfb2wod3NwLCBzdCwgKExfRlJBTUUvMikgLyBPUExfREVDSU0pOw0KKwl9DQorDQorCWlmKHN0LT5vbF9nYWluID4gMTk2NjEpICAgICAgIC8qIDAuNiBpbiBRMTUgKi8NCisJew0KKwkJc3QtPm9sZF9UMF9tZWQgPSBNZWRfb2xhZyhUX29wLCBzdC0+b2xkX29sX2xhZyk7ICAgICAgIA0KKwkJc3QtPmFkYV93ID0gMzI3Njc7ICAgICAgICAgICAgICAgICANCisJfSBlbHNlDQorCXsNCisJCXN0LT5hZGFfdyA9IHZvX211bHQoc3QtPmFkYV93LCAyOTQ5MSk7DQorCX0NCisNCisJaWYoc3QtPmFkYV93IDwgMjYyMTQpDQorCQlzdC0+b2xfd2dodF9mbGcgPSAwOw0KKwllbHNlDQorCQlzdC0+b2xfd2dodF9mbGcgPSAxOw0KKw0KKwl3Yl92YWRfdG9uZV9kZXRlY3Rpb24oc3QtPnZhZFN0LCBzdC0+b2xfZ2Fpbik7DQorCVRfb3AgKj0gT1BMX0RFQ0lNOyAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlpZigqc2VyX3NpemUgIT0gTkJCSVRTXzdrKQ0KKwl7DQorCQkvKiBGaW5kIG9wZW4gbG9vcCBwaXRjaCBsYWcgZm9yIHNlY29uZCAxLzIgZnJhbWUgKi8NCisJCVRfb3AyID0gUGl0Y2hfbWVkX29sKHdzcCArICgoTF9GUkFNRSAvIDIpIC8gT1BMX0RFQ0lNKSwgc3QsIChMX0ZSQU1FLzIpIC8gT1BMX0RFQ0lNKTsNCisNCisJCWlmKHN0LT5vbF9nYWluID4gMTk2NjEpICAgLyogMC42IGluIFExNSAqLw0KKwkJew0KKwkJCXN0LT5vbGRfVDBfbWVkID0gTWVkX29sYWcoVF9vcDIsIHN0LT5vbGRfb2xfbGFnKTsgIA0KKwkJCXN0LT5hZGFfdyA9IDMyNzY3OyAgICAgICAgICAgICANCisJCX0gZWxzZQ0KKwkJew0KKwkJCXN0LT5hZGFfdyA9IG11bHQoc3QtPmFkYV93LCAyOTQ5MSk7IA0KKwkJfQ0KKw0KKwkJaWYoc3QtPmFkYV93IDwgMjYyMTQpDQorCQkJc3QtPm9sX3dnaHRfZmxnID0gMDsNCisJCWVsc2UNCisJCQlzdC0+b2xfd2dodF9mbGcgPSAxOw0KKw0KKwkJd2JfdmFkX3RvbmVfZGV0ZWN0aW9uKHN0LT52YWRTdCwgc3QtPm9sX2dhaW4pOw0KKw0KKwkJVF9vcDIgKj0gT1BMX0RFQ0lNOyAgICAgICAgICAgICAgICANCisNCisJfSBlbHNlDQorCXsNCisJCVRfb3AyID0gVF9vcDsgICAgICAgICAgICAgICAgICAgICAgDQorCX0NCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERUWC1DTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCWlmKCptb2RlID09IE1SRFRYKSAgICAgICAgICAgIC8qIENORyBtb2RlICovDQorCXsNCisJCS8qIEJ1ZmZlciBpc2YncyBhbmQgZW5lcmd5ICovDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCVJlc2lkdV9vcHQoJkFbMyAqIChNICsgMSldLCBzcGVlY2gsIGV4YywgTF9GUkFNRSk7DQorI2Vsc2UNCisJCVJlc2lkdSgmQVszICogKE0gKyAxKV0sIHNwZWVjaCwgZXhjLCBMX0ZSQU1FKTsNCisjZW5kaWYNCisNCisJCWZvciAoaSA9IDA7IGkgPCBMX0ZSQU1FOyBpKyspDQorCQl7DQorCQkJZXhjMltpXSA9IHNocihleGNbaV0sIFFfbmV3KTsgIA0KKwkJfQ0KKw0KKwkJTF90bXAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICANCisJCWZvciAoaSA9IDA7IGkgPCBMX0ZSQU1FOyBpKyspDQorCQkJTF90bXAgKz0gKGV4YzJbaV0gKiBleGMyW2ldKTw8MTsNCisNCisJCUxfdG1wID4+PSAxOw0KKw0KKwkJZHR4X2J1ZmZlcihzdC0+ZHR4X2VuY1N0LCBpc2YsIExfdG1wLCBjb2RlY19tb2RlKTsNCisNCisJCS8qIFF1YW50aXplIGFuZCBjb2RlIHRoZSBJU0ZzICovDQorCQlkdHhfZW5jKHN0LT5kdHhfZW5jU3QsIGlzZiwgZXhjMiwgJnBybXMpOw0KKw0KKwkJLyogQ29udmVydCBJU0ZzIHRvIHRoZSBjb3NpbmUgZG9tYWluICovDQorCQlJc2ZfaXNwKGlzZiwgaXNwbmV3X3EsIE0pOw0KKwkJSXNwX0F6KGlzcG5ld19xLCBBcSwgTSwgMCk7DQorDQorCQlmb3IgKGlfc3ViZnIgPSAwOyBpX3N1YmZyIDwgTF9GUkFNRTsgaV9zdWJmciArPSBMX1NVQkZSKQ0KKwkJew0KKwkJCWNvcnJfZ2FpbiA9IHN5bnRoZXNpcyhBcSwgJmV4YzJbaV9zdWJmcl0sIDAsICZzcGVlY2gxNmtbaV9zdWJmciAqIDUgLyA0XSwgc3QpOw0KKwkJfQ0KKwkJQ29weShpc2YsIHN0LT5pc2ZvbGQsIE0pOw0KKw0KKwkJLyogcmVzZXQgc3BlZWNoIGNvZGVyIG1lbW9yaWVzICovDQorCQlSZXNldF9lbmNvZGVyKHN0LCAwKTsNCisNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiBVcGRhdGUgc2lnbmFsIGZvciBuZXh0IGZyYW1lLiAgICAgICAgICAgICAgICAgICAgKg0KKwkJICogLT4gc2F2ZSBwYXN0IG9mIHNwZWVjaFtdIGFuZCB3c3BbXS4gICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkJQ29weSgmb2xkX3NwZWVjaFtMX0ZSQU1FXSwgc3QtPm9sZF9zcGVlY2gsIExfVE9UQUwgLSBMX0ZSQU1FKTsNCisJCUNvcHkoJm9sZF93c3BbTF9GUkFNRSAvIE9QTF9ERUNJTV0sIHN0LT5vbGRfd3NwLCBQSVRfTUFYIC8gT1BMX0RFQ0lNKTsNCisNCisJCXJldHVybjsNCisJfQ0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDRUxQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJLyogUXVhbnRpemUgYW5kIGNvZGUgdGhlIElTRnMgKi8NCisNCisJaWYgKCpzZXJfc2l6ZSA8PSBOQkJJVFNfN2spDQorCXsNCisJCVFwaXNmXzJzXzM2Yihpc2YsIGlzZiwgc3QtPnBhc3RfaXNmcSwgaW5kaWNlLCA0KTsNCisNCisJCVBhcm1fc2VyaWFsKGluZGljZVswXSwgOCwgJnBybXMpOw0KKwkJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCA4LCAmcHJtcyk7DQorCQlQYXJtX3NlcmlhbChpbmRpY2VbMl0sIDcsICZwcm1zKTsNCisJCVBhcm1fc2VyaWFsKGluZGljZVszXSwgNywgJnBybXMpOw0KKwkJUGFybV9zZXJpYWwoaW5kaWNlWzRdLCA2LCAmcHJtcyk7DQorCX0gZWxzZQ0KKwl7DQorCQlRcGlzZl8yc180NmIoaXNmLCBpc2YsIHN0LT5wYXN0X2lzZnEsIGluZGljZSwgNCk7DQorDQorCQlQYXJtX3NlcmlhbChpbmRpY2VbMF0sIDgsICZwcm1zKTsNCisJCVBhcm1fc2VyaWFsKGluZGljZVsxXSwgOCwgJnBybXMpOw0KKwkJUGFybV9zZXJpYWwoaW5kaWNlWzJdLCA2LCAmcHJtcyk7DQorCQlQYXJtX3NlcmlhbChpbmRpY2VbM10sIDcsICZwcm1zKTsNCisJCVBhcm1fc2VyaWFsKGluZGljZVs0XSwgNywgJnBybXMpOw0KKwkJUGFybV9zZXJpYWwoaW5kaWNlWzVdLCA1LCAmcHJtcyk7DQorCQlQYXJtX3NlcmlhbChpbmRpY2VbNl0sIDUsICZwcm1zKTsNCisJfQ0KKw0KKwkvKiBDaGVjayBzdGFiaWxpdHkgb24gaXNmIDogZGlzdGFuY2UgYmV0d2VlbiBvbGQgaXNmIGFuZCBjdXJyZW50IGlzZiAqLw0KKw0KKwlMX3RtcCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDA7IGkgPCBNIC0gMTsgaSsrKQ0KKwl7DQorCQl0bXAgPSB2b19zdWIoaXNmW2ldLCBzdC0+aXNmb2xkW2ldKTsNCisJCUxfdG1wICs9ICh0bXAgKiB0bXApPDwxOw0KKwl9DQorDQorCXRtcCA9IGV4dHJhY3RfaChMX3NobDIoTF90bXAsIDgpKTsgDQorDQorCXRtcCA9IHZvX211bHQodG1wLCAyNjIxNCk7ICAgICAgICAgICAgICAgIC8qIHRtcCA9IExfdG1wKjAuOC8yNTYgKi8NCisJdG1wID0gdm9fc3ViKDIwNDgwLCB0bXApOyAgICAgICAgICAgICAgICAgLyogMS4yNSAtIHRtcCAoaW4gUTE0KSAqLw0KKw0KKwlzdGFiX2ZhYyA9IHNobCh0bXAsIDEpOyANCisNCisJaWYgKHN0YWJfZmFjIDwgMCkNCisJew0KKwkJc3RhYl9mYWMgPSAwOyAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlDb3B5KGlzZiwgc3QtPmlzZm9sZCwgTSk7DQorDQorCS8qIENvbnZlcnQgSVNGcyB0byB0aGUgY29zaW5lIGRvbWFpbiAqLw0KKwlJc2ZfaXNwKGlzZiwgaXNwbmV3X3EsIE0pOw0KKw0KKwlpZiAoc3QtPmZpcnN0X2ZyYW1lICE9IDApDQorCXsNCisJCXN0LT5maXJzdF9mcmFtZSA9IDA7ICAgICAgICAgICAgICANCisJCUNvcHkoaXNwbmV3X3EsIHN0LT5pc3BvbGRfcSwgTSk7DQorCX0NCisJLyogRmluZCB0aGUgaW50ZXJwb2xhdGVkIElTUHMgYW5kIGNvbnZlcnQgdG8gYVtdIGZvciBhbGwgc3ViZnJhbWVzICovDQorDQorCUludF9pc3Aoc3QtPmlzcG9sZF9xLCBpc3BuZXdfcSwgaW50ZXJwb2xfZnJhYywgQXEpOw0KKw0KKwkvKiB1cGRhdGUgaXNwb2xkW10gZm9yIHRoZSBuZXh0IGZyYW1lICovDQorCUNvcHkoaXNwbmV3X3EsIHN0LT5pc3BvbGRfcSwgTSk7DQorDQorCXBfQXEgPSBBcTsNCisJZm9yIChpX3N1YmZyID0gMDsgaV9zdWJmciA8IExfRlJBTUU7IGlfc3ViZnIgKz0gTF9TVUJGUikNCisJew0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCVJlc2lkdV9vcHQocF9BcSwgJnNwZWVjaFtpX3N1YmZyXSwgJmV4Y1tpX3N1YmZyXSwgTF9TVUJGUik7DQorI2Vsc2UNCisJCVJlc2lkdShwX0FxLCAmc3BlZWNoW2lfc3ViZnJdLCAmZXhjW2lfc3ViZnJdLCBMX1NVQkZSKTsNCisjZW5kaWYNCisJCXBfQXEgKz0gKE0gKyAxKTsgICAgICAgICAgICAgICAgICAgDQorCX0NCisNCisJLyogQnVmZmVyIGlzZidzIGFuZCBlbmVyZ3kgZm9yIGR0eCBvbiBub24tc3BlZWNoIGZyYW1lICovDQorCWlmICh2YWRfZmxhZyA9PSAwKQ0KKwl7DQorCQlmb3IgKGkgPSAwOyBpIDwgTF9GUkFNRTsgaSsrKQ0KKwkJew0KKwkJCWV4YzJbaV0gPSBleGNbaV0gPj4gUV9uZXc7DQorCQl9DQorCQlMX3RtcCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJZm9yIChpID0gMDsgaSA8IExfRlJBTUU7IGkrKykNCisJCQlMX3RtcCArPSAoZXhjMltpXSAqIGV4YzJbaV0pPDwxOw0KKwkJTF90bXAgPj49IDE7DQorDQorCQlkdHhfYnVmZmVyKHN0LT5kdHhfZW5jU3QsIGlzZiwgTF90bXAsIGNvZGVjX21vZGUpOw0KKwl9DQorCS8qIHJhbmdlIGZvciBjbG9zZWQgbG9vcCBwaXRjaCBzZWFyY2ggaW4gMXN0IHN1YmZyYW1lICovDQorDQorCVQwX21pbiA9IFRfb3AgLSA4Ow0KKwlpZiAoVDBfbWluIDwgUElUX01JTikNCisJew0KKwkJVDBfbWluID0gUElUX01JTjsgICAgICAgICAgICAgICAgICANCisJfQ0KKwlUMF9tYXggPSAoVDBfbWluICsgMTUpOw0KKw0KKwlpZihUMF9tYXggPiBQSVRfTUFYKQ0KKwl7DQorCQlUMF9tYXggPSBQSVRfTUFYOyAgICAgICAgICAgICAgICAgIA0KKwkJVDBfbWluID0gVDBfbWF4IC0gMTU7ICAgICAgICAgIA0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAgICAgICAgICBMb29wIGZvciBldmVyeSBzdWJmcmFtZSBpbiB0aGUgYW5hbHlzaXMgZnJhbWUgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICBUbyBmaW5kIHRoZSBwaXRjaCBhbmQgaW5ub3ZhdGlvbiBwYXJhbWV0ZXJzLiBUaGUgc3ViZnJhbWUgc2l6ZSBpcyAgICAgKg0KKwkgKiAgTF9TVUJGUiBhbmQgdGhlIGxvb3AgaXMgcmVwZWF0ZWQgTF9GUkFNRS9MX1NVQkZSIHRpbWVzLiAgICAgICAgICAgICAgICoNCisJICogICAgIC0gY29tcHV0ZSB0aGUgdGFyZ2V0IHNpZ25hbCBmb3IgcGl0Y2ggc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAtIGNvbXB1dGUgaW1wdWxzZSByZXNwb25zZSBvZiB3ZWlnaHRlZCBzeW50aGVzaXMgZmlsdGVyIChoMVtdKSAgICAgKg0KKwkgKiAgICAgLSBmaW5kIHRoZSBjbG9zZWQtbG9vcCBwaXRjaCBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgIC0gZW5jb2RlIHRoZSBwaXRjaCBkZWFseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAtIGZpbmQgMiBsdCBwcmVkaWN0aW9uICh3aXRoIC8gd2l0aG91dCBMUCBmaWx0ZXIgZm9yIGx0IHByZWQpICAgICAgKg0KKwkgKiAgICAgLSBmaW5kIDIgcGl0Y2ggZ2FpbnMgYW5kIGNob29zZSB0aGUgYmVzdCBsdCBwcmVkaWN0aW9uLiAgICAgICAgICAgICoNCisJICogICAgIC0gZmluZCB0YXJnZXQgdmVjdG9yIGZvciBjb2RlYm9vayBzZWFyY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAtIHVwZGF0ZSB0aGUgaW1wdWxzZSByZXNwb25zZSBoMVtdIGZvciBjb2RlYm9vayBzZWFyY2ggICAgICAgICAgICAgKg0KKwkgKiAgICAgLSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRhcmdldCB2ZWN0b3IgYW5kIGltcHVsc2UgcmVzcG9uc2UgICAgICAgICAgICoNCisJICogICAgIC0gY29kZWJvb2sgc2VhcmNoIGFuZCBlbmNvZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAtIFZRIG9mIHBpdGNoIGFuZCBjb2RlYm9vayBnYWlucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgLSBmaW5kIHZvaWNpbmcgZmFjdG9yIGFuZCB0aWx0IG9mIGNvZGUgZm9yIG5leHQgc3ViZnJhbWUuICAgICAgICAgICoNCisJICogICAgIC0gdXBkYXRlIHN0YXRlcyBvZiB3ZWlnaHRpbmcgZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAtIGZpbmQgZXhjaXRhdGlvbiBhbmQgc3ludGhlc2lzIHNwZWVjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCXBfQSA9IEE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlwX0FxID0gQXE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpX3N1YmZyID0gMDsgaV9zdWJmciA8IExfRlJBTUU7IGlfc3ViZnIgKz0gTF9TVUJGUikNCisJew0KKwkJcGl0X2ZsYWcgPSBpX3N1YmZyOyAgICAgICAgICAgICAgICANCisJCWlmICgoaV9zdWJmciA9PSAyICogTF9TVUJGUikgJiYgKCpzZXJfc2l6ZSA+IE5CQklUU183aykpDQorCQl7DQorCQkJcGl0X2ZsYWcgPSAwOyAgICAgICAgICAgICAgICAgDQorCQkJLyogcmFuZ2UgZm9yIGNsb3NlZCBsb29wIHBpdGNoIHNlYXJjaCBpbiAzcmQgc3ViZnJhbWUgKi8NCisJCQlUMF9taW4gPSAoVF9vcDIgLSA4KTsNCisNCisJCQlpZiAoVDBfbWluIDwgUElUX01JTikNCisJCQl7DQorCQkJCVQwX21pbiA9IFBJVF9NSU47ICAgICAgICAgIA0KKwkJCX0NCisJCQlUMF9tYXggPSAoVDBfbWluICsgMTUpOw0KKwkJCWlmIChUMF9tYXggPiBQSVRfTUFYKQ0KKwkJCXsNCisJCQkJVDBfbWF4ID0gUElUX01BWDsgICAgICAgICANCisJCQkJVDBfbWluID0gKFQwX21heCAtIDE1KTsNCisJCQl9DQorCQl9DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqICAgICAgICBGaW5kIHRoZSB0YXJnZXQgdmVjdG9yIGZvciBwaXRjaCBzZWFyY2g6ICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKiAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqICAgICAgICAgICAgIHwtLS0tLS18ICByZXNbbl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKiBzcGVlY2hbbl0tLS18IEEoeikgfC0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICogICAgICAgICAgICAgfC0tLS0tLXwgICAgICAgfCAgIHwtLS0tLS0tLXwgZXJyb3Jbbl0gIHwtLS0tLS18ICAgICAgICAgICoNCisJCSAqICAgICAgICAgICAgICAgICAgIHplcm8gLS0gKC0pLS18IDEvQSh6KSB8LS0tLS0tLS0tLS18IFcoeikgfC0tIHRhcmdldCAqDQorCQkgKiAgICAgICAgICAgICAgICAgICBleGMgICAgICAgICAgfC0tLS0tLS0tfCAgICAgICAgICAgfC0tLS0tLXwgICAgICAgICAgKg0KKwkJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqIEluc3RlYWQgb2Ygc3VidHJhY3RpbmcgdGhlIHplcm8taW5wdXQgcmVzcG9uc2Ugb2YgZmlsdGVycyBmcm9tICAgICAgICAqDQorCQkgKiB0aGUgd2VpZ2h0ZWQgaW5wdXQgc3BlZWNoLCB0aGUgYWJvdmUgY29uZmlndXJhdGlvbiBpcyB1c2VkIHRvICAgICAgICAgKg0KKwkJICogY29tcHV0ZSB0aGUgdGFyZ2V0IHZlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQl7DQorCQkJZXJyb3JbaV0gPSB2b19zdWIoc3BlZWNoW2kgKyBpX3N1YmZyIC0gTV0sIHN0LT5tZW1fc3luW2ldKTsNCisJCX0NCisNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCVJlc2lkdV9vcHQocF9BcSwgJnNwZWVjaFtpX3N1YmZyXSwgJmV4Y1tpX3N1YmZyXSwgTF9TVUJGUik7DQorI2Vsc2UNCisJCVJlc2lkdShwX0FxLCAmc3BlZWNoW2lfc3ViZnJdLCAmZXhjW2lfc3ViZnJdLCBMX1NVQkZSKTsNCisjZW5kaWYNCisJCVN5bl9maWx0KHBfQXEsICZleGNbaV9zdWJmcl0sIGVycm9yICsgTSwgTF9TVUJGUiwgZXJyb3IsIDApOw0KKwkJV2VpZ2h0X2EocF9BLCBBcCwgR0FNTUExLCBNKTsNCisNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJUmVzaWR1X29wdChBcCwgZXJyb3IgKyBNLCB4biwgTF9TVUJGUik7DQorI2Vsc2UNCisJCVJlc2lkdShBcCwgZXJyb3IgKyBNLCB4biwgTF9TVUJGUik7DQorI2VuZGlmDQorCQlEZWVtcGgyKHhuLCBUSUxUX0ZBQywgTF9TVUJGUiwgJihzdC0+bWVtX3cwKSk7DQorDQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiBGaW5kIGFwcHJveC4gdGFyZ2V0IGluIHJlc2lkdWFsIGRvbWFpbiAiY25bXSIgZm9yIGlub3ZhdGlvbiBzZWFyY2guICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJLyogZmlyc3QgaGFsZjogeG5bXSAtLT4gY25bXSAqLw0KKwkJU2V0X3plcm8oY29kZSwgTSk7DQorCQlDb3B5KHhuLCBjb2RlICsgTSwgTF9TVUJGUiAvIDIpOw0KKwkJdG1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJUHJlZW1waDIoY29kZSArIE0sIFRJTFRfRkFDLCBMX1NVQkZSIC8gMiwgJnRtcCk7DQorCQlXZWlnaHRfYShwX0EsIEFwLCBHQU1NQTEsIE0pOw0KKwkJU3luX2ZpbHQoQXAsY29kZSArIE0sIGNvZGUgKyBNLCBMX1NVQkZSIC8gMiwgY29kZSwgMCk7DQorDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCVJlc2lkdV9vcHQocF9BcSxjb2RlICsgTSwgY24sIExfU1VCRlIgLyAyKTsNCisjZWxzZQ0KKwkJUmVzaWR1KHBfQXEsY29kZSArIE0sIGNuLCBMX1NVQkZSIC8gMik7DQorI2VuZGlmDQorDQorCQkvKiBzZWNvbmQgaGFsZjogcmVzW10gLS0+IGNuW10gKGFwcHJveGltYXRlZCBhbmQgZmFzdGVyKSAqLw0KKwkJQ29weSgmZXhjW2lfc3ViZnIgKyAoTF9TVUJGUiAvIDIpXSwgY24gKyAoTF9TVUJGUiAvIDIpLCBMX1NVQkZSIC8gMik7DQorDQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqIENvbXB1dGUgaW1wdWxzZSByZXNwb25zZSwgaDFbXSwgb2Ygd2VpZ2h0ZWQgc3ludGhlc2lzIGZpbHRlciAgKiANCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJCVNldF96ZXJvKGVycm9yLCBNICsgTF9TVUJGUik7DQorCQlXZWlnaHRfYShwX0EsIGVycm9yICsgTSwgR0FNTUExLCBNKTsNCisNCisJCXZvX3AwID0gZXJyb3IrTTsNCisJCXZvX3AzID0gaDE7DQorCQlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwkJew0KKwkJCUxfdG1wID0gKnZvX3AwIDw8IDE0OyAgICAgICAgLyogeDQgKFExMiB0byBRMTQpICovDQorCQkJdm9fcDEgPSBwX0FxICsgMTsNCisJCQl2b19wMiA9IHZvX3AwLTE7DQorCQkJZm9yIChqID0gMTsgaiA8PSBNLzQ7IGorKykNCisJCQl7DQorCQkJCUxfdG1wIC09ICp2b19wMSsrICogKnZvX3AyLS07DQorCQkJCUxfdG1wIC09ICp2b19wMSsrICogKnZvX3AyLS07DQorCQkJCUxfdG1wIC09ICp2b19wMSsrICogKnZvX3AyLS07DQorCQkJCUxfdG1wIC09ICp2b19wMSsrICogKnZvX3AyLS07DQorCQkJfQ0KKwkJCSp2b19wMysrID0gKnZvX3AwKysgPSB2b19yb3VuZCgoTF90bXAgPDw0KSk7DQorCQl9DQorCQkvKiBkZWVtcGggd2l0aG91dCBkaXZpc2lvbiBieSAyIC0+IFExNCB0byBRMTUgKi8NCisJCXRtcCA9IDA7IA0KKwkJRGVlbXBoMihoMSwgVElMVF9GQUMsIExfU1VCRlIsICZ0bXApOyAgIC8qIGgxIGluIFExNCAqLw0KKw0KKwkJLyogaDIgaW4gUTEyIGZvciBjb2RlYm9vayBzZWFyY2ggKi8NCisJCUNvcHkoaDEsIGgyLCBMX1NVQkZSKTsNCisNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogc2NhbGUgeG5bXSBhbmQgaDFbXSB0byBhdm9pZCBvdmVyZmxvdyBpbiBkb3RfcHJvZHVjdDEyKCkgICAgICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmZGVmICBBU01fT1BUICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCVNjYWxlX3NpZ19vcHQoaDIsIExfU1VCRlIsIC0yKTsNCisJCVNjYWxlX3NpZ19vcHQoeG4sIExfU1VCRlIsIHNoaWZ0KTsgICAgIC8qIHNjYWxpbmcgb2YgeG5bXSB0byBsaW1pdCBkeW5hbWljIGF0IDEyIGJpdHMgKi8NCisJCVNjYWxlX3NpZ19vcHQoaDEsIExfU1VCRlIsIDEgKyBzaGlmdCk7ICAvKiBzZXQgaDFbXSBpbiBRMTUgd2l0aCBzY2FsaW5nIGZvciBjb252b2x1dGlvbiAqLw0KKyNlbHNlDQorCQlTY2FsZV9zaWcoaDIsIExfU1VCRlIsIC0yKTsNCisJCVNjYWxlX3NpZyh4biwgTF9TVUJGUiwgc2hpZnQpOyAgICAgLyogc2NhbGluZyBvZiB4bltdIHRvIGxpbWl0IGR5bmFtaWMgYXQgMTIgYml0cyAqLw0KKwkJU2NhbGVfc2lnKGgxLCBMX1NVQkZSLCAxICsgc2hpZnQpOyAgLyogc2V0IGgxW10gaW4gUTE1IHdpdGggc2NhbGluZyBmb3IgY29udm9sdXRpb24gKi8NCisjZW5kaWYNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqICAgICAgICAgICAgICAgICBDbG9zZWQtbG9vcCBmcmFjdGlvbmFsIHBpdGNoIHNlYXJjaCAgICAgICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQkvKiBmaW5kIGNsb3NlZCBsb29wIGZyYWN0aW9uYWwgcGl0Y2ggIGxhZyAqLw0KKwkJaWYoKnNlcl9zaXplIDw9IE5CQklUU185aykNCisJCXsNCisJCQlUMCA9IFBpdGNoX2ZyNCgmZXhjW2lfc3ViZnJdLCB4biwgaDEsIFQwX21pbiwgVDBfbWF4LCAmVDBfZnJhYywNCisJCQkJCXBpdF9mbGFnLCBQSVRfTUlOLCBQSVRfRlIxXzhiLCBMX1NVQkZSKTsNCisNCisJCQkvKiBlbmNvZGUgcGl0Y2ggbGFnICovDQorCQkJaWYgKHBpdF9mbGFnID09IDApICAgICAgICAgICAgIC8qIGlmIDFzdC8zcmQgc3ViZnJhbWUgKi8NCisJCQl7DQorCQkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkJCSAqIFRoZSBwaXRjaCByYW5nZSBmb3IgdGhlIDFzdC8zcmQgc3ViZnJhbWUgaXMgZW5jb2RlZCB3aXRoICAgICAqDQorCQkJCSAqIDggYml0cyBhbmQgaXMgZGl2aWRlZCBhcyBmb2xsb3dzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkJCSAqICAgUElUX01JTiB0byBQSVRfRlIxLTEgIHJlc29sdXRpb24gMS8yIChmcmFjID0gMCBvciAyKSAgICAgICAqDQorCQkJCSAqICAgUElUX0ZSMSB0byBQSVRfTUFYICAgIHJlc29sdXRpb24gMSAgIChmcmFjID0gMCkgICAgICAgICAgICAqDQorCQkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJCQlpZiAoVDAgPCBQSVRfRlIxXzhiKQ0KKwkJCQl7DQorCQkJCQlpbmRleCA9ICgoVDAgPDwgMSkgKyAoVDBfZnJhYyA+PiAxKSAtIChQSVRfTUlOPDwxKSk7DQorCQkJCX0gZWxzZQ0KKwkJCQl7DQorCQkJCQlpbmRleCA9ICgoVDAgLSBQSVRfRlIxXzhiKSArICgoUElUX0ZSMV84YiAtIFBJVF9NSU4pKjIpKTsNCisJCQkJfQ0KKw0KKwkJCQlQYXJtX3NlcmlhbChpbmRleCwgOCwgJnBybXMpOw0KKw0KKwkJCQkvKiBmaW5kIFQwX21pbiBhbmQgVDBfbWF4IGZvciBzdWJmcmFtZSAyIGFuZCA0ICovDQorCQkJCVQwX21pbiA9IChUMCAtIDgpOw0KKwkJCQlpZiAoVDBfbWluIDwgUElUX01JTikNCisJCQkJew0KKwkJCQkJVDBfbWluID0gUElUX01JTjsNCisJCQkJfQ0KKwkJCQlUMF9tYXggPSBUMF9taW4gKyAxNTsNCisJCQkJaWYgKFQwX21heCA+IFBJVF9NQVgpDQorCQkJCXsNCisJCQkJCVQwX21heCA9IFBJVF9NQVg7DQorCQkJCQlUMF9taW4gPSAoVDBfbWF4IC0gMTUpOw0KKwkJCQl9DQorCQkJfSBlbHNlDQorCQkJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIHN1YmZyYW1lIDIgb3IgNCAqLw0KKwkJCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJCQkgKiBUaGUgcGl0Y2ggcmFuZ2UgZm9yIHN1YmZyYW1lIDIgb3IgNCBpcyBlbmNvZGVkIHdpdGggNSBiaXRzOiAgKg0KKwkJCQkgKiAgIFQwX21pbiAgdG8gVDBfbWF4ICAgICByZXNvbHV0aW9uIDEvMiAoZnJhYyA9IDAgb3IgMikgICAgICAgKg0KKwkJCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCQkJaSA9IChUMCAtIFQwX21pbik7DQorCQkJCWluZGV4ID0gKGkgPDwgMSkgKyAoVDBfZnJhYyA+PiAxKTsNCisNCisJCQkJUGFybV9zZXJpYWwoaW5kZXgsIDUsICZwcm1zKTsNCisJCQl9DQorCQl9IGVsc2UNCisJCXsNCisJCQlUMCA9IFBpdGNoX2ZyNCgmZXhjW2lfc3ViZnJdLCB4biwgaDEsIFQwX21pbiwgVDBfbWF4LCAmVDBfZnJhYywNCisJCQkJCXBpdF9mbGFnLCBQSVRfRlIyLCBQSVRfRlIxXzliLCBMX1NVQkZSKTsNCisNCisJCQkvKiBlbmNvZGUgcGl0Y2ggbGFnICovDQorCQkJaWYgKHBpdF9mbGFnID09IDApICAgICAgICAgICAgIC8qIGlmIDFzdC8zcmQgc3ViZnJhbWUgKi8NCisJCQl7DQorCQkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkJCSAqIFRoZSBwaXRjaCByYW5nZSBmb3IgdGhlIDFzdC8zcmQgc3ViZnJhbWUgaXMgZW5jb2RlZCB3aXRoICAgICAqDQorCQkJCSAqIDkgYml0cyBhbmQgaXMgZGl2aWRlZCBhcyBmb2xsb3dzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkJCSAqICAgUElUX01JTiB0byBQSVRfRlIyLTEgIHJlc29sdXRpb24gMS80IChmcmFjID0gMCwxLDIgb3IgMykgICAqDQorCQkJCSAqICAgUElUX0ZSMiB0byBQSVRfRlIxLTEgIHJlc29sdXRpb24gMS8yIChmcmFjID0gMCBvciAxKSAgICAgICAqDQorCQkJCSAqICAgUElUX0ZSMSB0byBQSVRfTUFYICAgIHJlc29sdXRpb24gMSAgIChmcmFjID0gMCkgICAgICAgICAgICAqDQorCQkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkJCQlpZiAoVDAgPCBQSVRfRlIyKQ0KKwkJCQl7DQorCQkJCQlpbmRleCA9ICgoVDAgPDwgMikgKyBUMF9mcmFjKSAtIChQSVRfTUlOIDw8IDIpOw0KKwkJCQl9IGVsc2UgaWYoVDAgPCBQSVRfRlIxXzliKQ0KKwkJCQl7DQorCQkJCQlpbmRleCA9ICgoKChUMCA8PCAxKSArIChUMF9mcmFjID4+IDEpKSAtIChQSVRfRlIyPDwxKSkgKyAoKFBJVF9GUjIgLSBQSVRfTUlOKTw8MikpOw0KKwkJCQl9IGVsc2UNCisJCQkJew0KKwkJCQkJaW5kZXggPSAoKChUMCAtIFBJVF9GUjFfOWIpICsgKChQSVRfRlIyIC0gUElUX01JTik8PDIpKSArICgoUElUX0ZSMV85YiAtIFBJVF9GUjIpPDwxKSk7DQorCQkJCX0NCisNCisJCQkJUGFybV9zZXJpYWwoaW5kZXgsIDksICZwcm1zKTsNCisNCisJCQkJLyogZmluZCBUMF9taW4gYW5kIFQwX21heCBmb3Igc3ViZnJhbWUgMiBhbmQgNCAqLw0KKw0KKwkJCQlUMF9taW4gPSAoVDAgLSA4KTsNCisJCQkJaWYgKFQwX21pbiA8IFBJVF9NSU4pDQorCQkJCXsNCisJCQkJCVQwX21pbiA9IFBJVF9NSU47IA0KKwkJCQl9DQorCQkJCVQwX21heCA9IFQwX21pbiArIDE1Ow0KKw0KKwkJCQlpZiAoVDBfbWF4ID4gUElUX01BWCkNCisJCQkJew0KKwkJCQkJVDBfbWF4ID0gUElUX01BWDsNCisJCQkJCVQwX21pbiA9IChUMF9tYXggLSAxNSk7DQorCQkJCX0NCisJCQl9IGVsc2UNCisJCQl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWYgc3ViZnJhbWUgMiBvciA0ICovDQorCQkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkJCSAqIFRoZSBwaXRjaCByYW5nZSBmb3Igc3ViZnJhbWUgMiBvciA0IGlzIGVuY29kZWQgd2l0aCA2IGJpdHM6ICAqDQorCQkJCSAqICAgVDBfbWluICB0byBUMF9tYXggICAgIHJlc29sdXRpb24gMS80IChmcmFjID0gMCwxLDIgb3IgMykgICAqDQorCQkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJCQlpID0gKFQwIC0gVDBfbWluKTsNCisJCQkJaW5kZXggPSAoaSA8PCAyKSArIFQwX2ZyYWM7DQorCQkJCVBhcm1fc2VyaWFsKGluZGV4LCA2LCAmcHJtcyk7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqIEdhaW4gY2xpcHBpbmcgdGVzdCB0byBhdm9pZCB1bnN0YWJsZSBzeW50aGVzaXMgb24gZnJhbWUgZXJhc3VyZSAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJCWNsaXBfZ2FpbiA9IDA7DQorCQlpZigoc3QtPmdwX2NsaXBbMF0gPCAxNTQpICYmIChzdC0+Z3BfY2xpcFsxXSA+IDE0NzQ2KSkNCisJCQljbGlwX2dhaW4gPSAxOw0KKw0KKwkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqIC0gZmluZCB1bml0eSBnYWluIHBpdGNoIGV4Y2l0YXRpb24gKGFkYXB0aXZlIGNvZGVib29rIGVudHJ5KSAgICAqDQorCQkgKiAgIHdpdGggZnJhY3Rpb25hbCBpbnRlcnBvbGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICogLSBmaW5kIGZpbHRlcmVkIHBpdGNoIGV4Yy4geTFbXT1leGNbXSBjb252b2x2ZWQgd2l0aCBoMVtdKSAgICAgICoNCisJCSAqIC0gY29tcHV0ZSBwaXRjaCBnYWluMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCS8qIGZpbmQgcGl0Y2ggZXhpdGF0aW9uICovDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJcHJlZF9sdDRfYXNtKCZleGNbaV9zdWJmcl0sIFQwLCBUMF9mcmFjLCBMX1NVQkZSICsgMSk7DQorI2Vsc2UNCisJCVByZWRfbHQ0KCZleGNbaV9zdWJmcl0sIFQwLCBUMF9mcmFjLCBMX1NVQkZSICsgMSk7DQorI2VuZGlmDQorCQlpZiAoKnNlcl9zaXplID4gTkJCSVRTXzlrKQ0KKwkJew0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCQkJQ29udm9sdmVfYXNtKCZleGNbaV9zdWJmcl0sIGgxLCB5MSwgTF9TVUJGUik7DQorI2Vsc2UNCisJCQlDb252b2x2ZSgmZXhjW2lfc3ViZnJdLCBoMSwgeTEsIExfU1VCRlIpOw0KKyNlbmRpZiANCisJCQlnYWluMSA9IEdfcGl0Y2goeG4sIHkxLCBnX2NvZWZmLCBMX1NVQkZSKTsNCisJCQkvKiBjbGlwIGdhaW4gaWYgbmVjZXNzYXJ5IHRvIGF2b2lkIHByb2JsZW0gYXQgZGVjb2RlciAqLw0KKwkJCWlmICgoY2xpcF9nYWluICE9IDApICYmIChnYWluMSA+IEdQX0NMSVApKQ0KKwkJCXsNCisJCQkJZ2FpbjEgPSBHUF9DTElQOyANCisJCQl9DQorCQkJLyogZmluZCBlbmVyZ3kgb2YgbmV3IHRhcmdldCB4bjJbXSAqLw0KKwkJCVVwZHRfdGFyKHhuLCBkbiwgeTEsIGdhaW4xLCBMX1NVQkZSKTsgICAgICAgLyogZG4gdXNlZCB0ZW1wb3JhcnkgKi8NCisJCX0gZWxzZQ0KKwkJew0KKwkJCWdhaW4xID0gMDsgDQorCQl9DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogLSBmaW5kIHBpdGNoIGV4Y2l0YXRpb24gZmlsdGVyZWQgYnkgMXN0IG9yZGVyIExQIGZpbHRlci4gICAgICAgICoNCisJCSAqIC0gZmluZCBmaWx0ZXJlZCBwaXRjaCBleGMuIHkyW109ZXhjW10gY29udm9sdmVkIHdpdGggaDFbXSkgICAgICAqDQorCQkgKiAtIGNvbXB1dGUgcGl0Y2ggZ2FpbjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQkvKiBmaW5kIHBpdGNoIGV4Y2l0YXRpb24gd2l0aCBscCBmaWx0ZXIgKi8NCisJCXZvX3AwID0gZXhjICsgaV9zdWJmci0xOw0KKwkJdm9fcDEgPSBjb2RlOw0KKwkJLyogZmluZCBwaXRjaCBleGNpdGF0aW9uIHdpdGggbHAgZmlsdGVyICovDQorCQlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUi8yOyBpKyspDQorCQl7DQorCQkJTF90bXAgPSA1ODk4ICogKnZvX3AwKys7DQorCQkJTF90bXAxID0gNTg5OCAqICp2b19wMDsNCisJCQlMX3RtcCArPSAyMDk3MiAqICp2b19wMCsrOw0KKwkJCUxfdG1wMSArPSAyMDk3MiAqICp2b19wMCsrOw0KKwkJCUxfdG1wMSArPSA1ODk4ICogKnZvX3AwLS07DQorCQkJTF90bXAgKz0gNTg5OCAqICp2b19wMDsNCisJCQkqdm9fcDErKyA9IChMX3RtcCArIDB4NDAwMCk+PjE1Ow0KKwkJCSp2b19wMSsrID0gKExfdG1wMSArIDB4NDAwMCk+PjE1Ow0KKwkJfQ0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJQ29udm9sdmVfYXNtKGNvZGUsIGgxLCB5MiwgTF9TVUJGUik7DQorI2Vsc2UNCisJCUNvbnZvbHZlKGNvZGUsIGgxLCB5MiwgTF9TVUJGUik7DQorI2VuZGlmIA0KKw0KKwkJZ2FpbjIgPSBHX3BpdGNoKHhuLCB5MiwgZ19jb2VmZjIsIExfU1VCRlIpOw0KKw0KKwkJLyogY2xpcCBnYWluIGlmIG5lY2Vzc2FyeSB0byBhdm9pZCBwcm9ibGVtIGF0IGRlY29kZXIgKi8NCisJCWlmICgoY2xpcF9nYWluICE9IDApICYmIChnYWluMiA+IEdQX0NMSVApKQ0KKwkJew0KKwkJCWdhaW4yID0gR1BfQ0xJUDsNCisJCX0NCisJCS8qIGZpbmQgZW5lcmd5IG9mIG5ldyB0YXJnZXQgeG4yW10gKi8NCisJCVVwZHRfdGFyKHhuLCB4bjIsIHkyLCBnYWluMiwgTF9TVUJGUik7DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogdXNlIHRoZSBiZXN0IHByZWRpY3Rpb24gKG1pbmltaXNlIHF1YWRyYXRpYyBlcnJvcikuICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJc2VsZWN0ID0gMDsgDQorCQlpZigqc2VyX3NpemUgPiBOQkJJVFNfOWspDQorCQl7DQorCQkJTF90bXAgPSAwTDsNCisJCQl2b19wMCA9IGRuOw0KKwkJCXZvX3AxID0geG4yOw0KKwkJCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSLzI7IGkrKykNCisJCQl7DQorCQkJCUxfdG1wICs9ICp2b19wMCAqICp2b19wMDsNCisJCQkJdm9fcDArKzsNCisJCQkJTF90bXAgLT0gKnZvX3AxICogKnZvX3AxOw0KKwkJCQl2b19wMSsrOw0KKwkJCQlMX3RtcCArPSAqdm9fcDAgKiAqdm9fcDA7DQorCQkJCXZvX3AwKys7DQorCQkJCUxfdG1wIC09ICp2b19wMSAqICp2b19wMTsNCisJCQkJdm9fcDErKzsNCisJCQl9DQorDQorCQkJaWYgKExfdG1wIDw9IDApDQorCQkJew0KKwkJCQlzZWxlY3QgPSAxOyANCisJCQl9DQorCQkJUGFybV9zZXJpYWwoc2VsZWN0LCAxLCAmcHJtcyk7DQorCQl9DQorCQlpZiAoc2VsZWN0ID09IDApDQorCQl7DQorCQkJLyogdXNlIHRoZSBscCBmaWx0ZXIgZm9yIHBpdGNoIGV4Y2l0YXRpb24gcHJlZGljdGlvbiAqLw0KKwkJCWdhaW5fcGl0ID0gZ2FpbjI7DQorCQkJQ29weShjb2RlLCAmZXhjW2lfc3ViZnJdLCBMX1NVQkZSKTsNCisJCQlDb3B5KHkyLCB5MSwgTF9TVUJGUik7DQorCQkJQ29weShnX2NvZWZmMiwgZ19jb2VmZiwgNCk7DQorCQl9IGVsc2UNCisJCXsNCisJCQkvKiBubyBmaWx0ZXIgdXNlZCBmb3IgcGl0Y2ggZXhjaXRhdGlvbiBwcmVkaWN0aW9uICovDQorCQkJZ2Fpbl9waXQgPSBnYWluMTsNCisJCQlDb3B5KGRuLCB4bjIsIExfU1VCRlIpOyAgICAgICAgLyogdGFyZ2V0IHZlY3RvciBmb3IgY29kZWJvb2sgc2VhcmNoICovDQorCQl9DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogLSB1cGRhdGUgY25bXSBmb3IgY29kZWJvb2sgc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJVXBkdF90YXIoY24sIGNuLCAmZXhjW2lfc3ViZnJdLCBnYWluX3BpdCwgTF9TVUJGUik7DQorDQorI2lmZGVmICBBU01fT1BUICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCVNjYWxlX3NpZ19vcHQoY24sIExfU1VCRlIsIHNoaWZ0KTsgICAgIC8qIHNjYWxpbmcgb2YgY25bXSB0byBsaW1pdCBkeW5hbWljIGF0IDEyIGJpdHMgKi8NCisjZWxzZQ0KKwkJU2NhbGVfc2lnKGNuLCBMX1NVQkZSLCBzaGlmdCk7ICAgICAvKiBzY2FsaW5nIG9mIGNuW10gdG8gbGltaXQgZHluYW1pYyBhdCAxMiBiaXRzICovDQorI2VuZGlmDQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogLSBpbmNsdWRlIGZpeGVkLWdhaW4gcGl0Y2ggY29udHJpYnV0aW9uIGludG8gaW1wdWxzZSByZXNwLiBoMVtdICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJdG1wID0gMDsNCisJCVByZWVtcGgoaDIsIHN0LT50aWx0X2NvZGUsIExfU1VCRlIsICZ0bXApOw0KKw0KKwkJaWYgKFQwX2ZyYWMgPiAyKQ0KKwkJCVQwID0gKFQwICsgMSk7DQorCQlQaXRfc2hycChoMiwgVDAsIFBJVF9TSEFSUCwgTF9TVUJGUik7DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogLSBDb3JyZWxhdGlvbiBiZXR3ZWVuIHRhcmdldCB4bjJbXSBhbmQgaW1wdWxzZSByZXNwb25zZSBoMVtdICAgICoNCisJCSAqIC0gSW5ub3ZhdGl2ZSBjb2RlYm9vayBzZWFyY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCWNvcl9oX3goaDIsIHhuMiwgZG4pOw0KKwkJaWYgKCpzZXJfc2l6ZSA8PSBOQkJJVFNfN2spDQorCQl7DQorCQkJQUNFTFBfMnQ2NF9meChkbiwgY24sIGgyLCBjb2RlLCB5MiwgaW5kaWNlKTsNCisNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMF0sIDEyLCAmcHJtcyk7DQorCQl9IGVsc2UgaWYoKnNlcl9zaXplIDw9IE5CQklUU185aykNCisJCXsNCisJCQlBQ0VMUF80dDY0X2Z4KGRuLCBjbiwgaDIsIGNvZGUsIHkyLCAyMCwgKnNlcl9zaXplLCBpbmRpY2UpOw0KKw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVswXSwgNSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVsxXSwgNSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVsyXSwgNSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVszXSwgNSwgJnBybXMpOw0KKwkJfSBlbHNlIGlmKCpzZXJfc2l6ZSA8PSBOQkJJVFNfMTJrKQ0KKwkJew0KKwkJCUFDRUxQXzR0NjRfZngoZG4sIGNuLCBoMiwgY29kZSwgeTIsIDM2LCAqc2VyX3NpemUsIGluZGljZSk7DQorDQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzBdLCA5LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCA5LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzJdLCA5LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzNdLCA5LCAmcHJtcyk7DQorCQl9IGVsc2UgaWYoKnNlcl9zaXplIDw9IE5CQklUU18xNGspDQorCQl7DQorCQkJQUNFTFBfNHQ2NF9meChkbiwgY24sIGgyLCBjb2RlLCB5MiwgNDQsICpzZXJfc2l6ZSwgaW5kaWNlKTsNCisNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMF0sIDEzLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCAxMywgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVsyXSwgOSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVszXSwgOSwgJnBybXMpOw0KKwkJfSBlbHNlIGlmKCpzZXJfc2l6ZSA8PSBOQkJJVFNfMTZrKQ0KKwkJew0KKwkJCUFDRUxQXzR0NjRfZngoZG4sIGNuLCBoMiwgY29kZSwgeTIsIDUyLCAqc2VyX3NpemUsIGluZGljZSk7DQorDQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzBdLCAxMywgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVsxXSwgMTMsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMl0sIDEzLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzNdLCAxMywgJnBybXMpOw0KKwkJfSBlbHNlIGlmKCpzZXJfc2l6ZSA8PSBOQkJJVFNfMThrKQ0KKwkJew0KKwkJCUFDRUxQXzR0NjRfZngoZG4sIGNuLCBoMiwgY29kZSwgeTIsIDY0LCAqc2VyX3NpemUsIGluZGljZSk7DQorDQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzBdLCAyLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCAyLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzJdLCAyLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzNdLCAyLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzRdLCAxNCwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVs1XSwgMTQsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbNl0sIDE0LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzddLCAxNCwgJnBybXMpOw0KKwkJfSBlbHNlIGlmKCpzZXJfc2l6ZSA8PSBOQkJJVFNfMjBrKQ0KKwkJew0KKwkJCUFDRUxQXzR0NjRfZngoZG4sIGNuLCBoMiwgY29kZSwgeTIsIDcyLCAqc2VyX3NpemUsIGluZGljZSk7DQorDQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzBdLCAxMCwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVsxXSwgMTAsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMl0sIDIsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbM10sIDIsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbNF0sIDEwLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzVdLCAxMCwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVs2XSwgMTQsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbN10sIDE0LCAmcHJtcyk7DQorCQl9IGVsc2UNCisJCXsNCisJCQlBQ0VMUF80dDY0X2Z4KGRuLCBjbiwgaDIsIGNvZGUsIHkyLCA4OCwgKnNlcl9zaXplLCBpbmRpY2UpOw0KKw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVswXSwgMTEsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMV0sIDExLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzJdLCAxMSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVszXSwgMTEsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbNF0sIDExLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzVdLCAxMSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVs2XSwgMTEsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbN10sIDExLCAmcHJtcyk7DQorCQl9DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiAtIEFkZCB0aGUgZml4ZWQtZ2FpbiBwaXRjaCBjb250cmlidXRpb24gdG8gY29kZVtdLiAgICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJdG1wID0gMDsgDQorCQlQcmVlbXBoKGNvZGUsIHN0LT50aWx0X2NvZGUsIExfU1VCRlIsICZ0bXApOw0KKwkJUGl0X3NocnAoY29kZSwgVDAsIFBJVF9TSEFSUCwgTF9TVUJGUik7DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiAgLSBDb21wdXRlIHRoZSBmaXhlZCBjb2RlYm9vayBnYWluICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKiAgLSBxdWFudGl6ZSBmaXhlZCBjb2RlYm9vayBnYWluICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJaWYoKnNlcl9zaXplIDw9IE5CQklUU185aykNCisJCXsNCisJCQlpbmRleCA9IFFfZ2FpbjIoeG4sIHkxLCBRX25ldyArIHNoaWZ0LCB5MiwgY29kZSwgZ19jb2VmZiwgTF9TVUJGUiwgNiwNCisJCQkJCSZnYWluX3BpdCwgJkxfZ2Fpbl9jb2RlLCBjbGlwX2dhaW4sIHN0LT5xdWFfZ2Fpbik7DQorCQkJUGFybV9zZXJpYWwoaW5kZXgsIDYsICZwcm1zKTsNCisJCX0gZWxzZQ0KKwkJew0KKwkJCWluZGV4ID0gUV9nYWluMih4biwgeTEsIFFfbmV3ICsgc2hpZnQsIHkyLCBjb2RlLCBnX2NvZWZmLCBMX1NVQkZSLCA3LA0KKwkJCQkJJmdhaW5fcGl0LCAmTF9nYWluX2NvZGUsIGNsaXBfZ2Fpbiwgc3QtPnF1YV9nYWluKTsNCisJCQlQYXJtX3NlcmlhbChpbmRleCwgNywgJnBybXMpOw0KKwkJfQ0KKwkJLyogdGVzdCBxdWFudGl6ZWQgZ2FpbiBvZiBwaXRjaCBmb3IgcGl0Y2ggY2xpcHBpbmcgYWxnb3JpdGhtICovDQorCQlHcF9jbGlwX3Rlc3RfZ2Fpbl9waXQoZ2Fpbl9waXQsIHN0LT5ncF9jbGlwKTsNCisNCisJCUxfdG1wID0gTF9zaGwoTF9nYWluX2NvZGUsIFFfbmV3KTsgDQorCQlnYWluX2NvZGUgPSBleHRyYWN0X2goTF9hZGQoTF90bXAsIDB4ODAwMCkpOw0KKw0KKwkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogVXBkYXRlIHBhcmFtZXRlcnMgZm9yIHRoZSBuZXh0IHN1YmZyYW1lLiAgICAgICAgICAgICAgICAgKg0KKwkJICogLSB0aWx0IG9mIGNvZGU6IDAuMCAodW52b2ljZWQpIHRvIDAuNSAodm9pY2VkKSAgICAgICAgICAgKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCS8qIGZpbmQgdm9pY2UgZmFjdG9yIGluIFExNSAoMT12b2ljZWQsIC0xPXVudm9pY2VkKSAqLw0KKwkJQ29weSgmZXhjW2lfc3ViZnJdLCBleGMyLCBMX1NVQkZSKTsNCisNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCQlTY2FsZV9zaWdfb3B0KGV4YzIsIExfU1VCRlIsIHNoaWZ0KTsNCisjZWxzZQ0KKwkJU2NhbGVfc2lnKGV4YzIsIExfU1VCRlIsIHNoaWZ0KTsNCisjZW5kaWYNCisJCXZvaWNlX2ZhYyA9IHZvaWNlX2ZhY3RvcihleGMyLCBzaGlmdCwgZ2Fpbl9waXQsIGNvZGUsIGdhaW5fY29kZSwgTF9TVUJGUik7DQorCQkvKiB0aWx0IG9mIGNvZGUgZm9yIG5leHQgc3ViZnJhbWU6IDAuNT12b2ljZWQsIDA9dW52b2ljZWQgKi8NCisJCXN0LT50aWx0X2NvZGUgPSAoKHZvaWNlX2ZhYyA+PiAyKSArIDgxOTIpOw0KKwkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiAtIFVwZGF0ZSBmaWx0ZXIncyBtZW1vcnkgIm1lbV93MCIgZm9yIGZpbmRpbmcgdGhlICAgICoNCisJCSAqICAgdGFyZ2V0IHZlY3RvciBpbiB0aGUgbmV4dCBzdWJmcmFtZS4gICAgICAgICAgICAgICAgKg0KKwkJICogLSBGaW5kIHRoZSB0b3RhbCBleGNpdGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKiAtIEZpbmQgc3ludGhlc2lzIHNwZWVjaCB0byB1cGRhdGUgbWVtX3N5bltdLiAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJCS8qIHkyIGluIFE5LCBnYWluX3BpdCBpbiBRMTQgKi8NCisJCUxfdG1wID0gKGdhaW5fY29kZSAqIHkyW0xfU1VCRlIgLSAxXSk8PDE7DQorCQlMX3RtcCA9IExfc2hsKExfdG1wLCAoNSArIHNoaWZ0KSk7DQorCQlMX3RtcCA9IExfbmVnYXRlKExfdG1wKTsNCisJCUxfdG1wICs9ICh4bltMX1NVQkZSIC0gMV0gKiAxNjM4NCk8PDE7DQorCQlMX3RtcCAtPSAoeTFbTF9TVUJGUiAtIDFdICogZ2Fpbl9waXQpPDwxOw0KKwkJTF90bXAgPSBMX3NobChMX3RtcCwgKDEgLSBzaGlmdCkpOw0KKwkJc3QtPm1lbV93MCA9IGV4dHJhY3RfaChMX2FkZChMX3RtcCwgMHg4MDAwKSk7DQorDQorCQlpZiAoKnNlcl9zaXplID49IE5CQklUU18yNGspDQorCQkJQ29weSgmZXhjW2lfc3ViZnJdLCBleGMyLCBMX1NVQkZSKTsNCisNCisJCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCQl7DQorCQkJLyogY29kZSBpbiBROSwgZ2Fpbl9waXQgaW4gUTE0ICovDQorCQkJTF90bXAgPSAoZ2Fpbl9jb2RlICogY29kZVtpXSk8PDE7DQorCQkJTF90bXAgPSAoTF90bXAgPDwgNSk7DQorCQkJTF90bXAgKz0gKGV4Y1tpICsgaV9zdWJmcl0gKiBnYWluX3BpdCk8PDE7DQorCQkJTF90bXAgPSBMX3NobDIoTF90bXAsIDEpOyANCisJCQlleGNbaSArIGlfc3ViZnJdID0gZXh0cmFjdF9oKExfYWRkKExfdG1wLCAweDgwMDApKTsNCisJCX0NCisNCisJCVN5bl9maWx0KHBfQXEsJmV4Y1tpX3N1YmZyXSwgc3ludGgsIExfU1VCRlIsIHN0LT5tZW1fc3luLCAxKTsNCisNCisJCWlmKCpzZXJfc2l6ZSA+PSBOQkJJVFNfMjRrKQ0KKwkJew0KKwkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJCSAqIHBoYXNlIGRpc3BlcnNpb24gdG8gZW5oYW5jZSBub2lzZSBpbiBsb3cgYml0IHJhdGUgICAgICAgICAgKg0KKwkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCQkvKiBMX2dhaW5fY29kZSBpbiBRMTYgKi8NCisJCQlWT19MX0V4dHJhY3QoTF9nYWluX2NvZGUsICZnYWluX2NvZGUsICZnYWluX2NvZGVfbG8pOw0KKw0KKwkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJCSAqIG5vaXNlIGVuaGFuY2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJCSAqIH5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJCSAqIC0gRW5oYW5jZSBleGNpdGF0aW9uIG9uIG5vaXNlLiAobW9kaWZ5IGdhaW4gb2YgY29kZSkgICAgICAgKg0KKwkJCSAqICAgSWYgc2lnbmFsIGlzIG5vaXN5IGFuZCBMUEMgZmlsdGVyIGlzIHN0YWJsZSwgbW92ZSBnYWluICAgKg0KKwkJCSAqICAgb2YgY29kZSAxLjUgZEIgdG93YXJkIGdhaW4gb2YgY29kZSB0aHJlc2hvbGQuICAgICAgICAgICAgKg0KKwkJCSAqICAgVGhpcyBkZWNyZWFzZSBieSAzIGRCIG5vaXNlIGVuZXJneSB2YXJpYXRpb24uICAgICAgICAgICAgKg0KKwkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCQl0bXAgPSAoMTYzODQgLSAodm9pY2VfZmFjID4+IDEpKTsgICAgICAgIC8qIDE9dW52b2ljZWQsIDA9dm9pY2VkICovDQorCQkJZmFjID0gdm9fbXVsdChzdGFiX2ZhYywgdG1wKTsNCisJCQlMX3RtcCA9IExfZ2Fpbl9jb2RlOyANCisJCQlpZihMX3RtcCA8IHN0LT5MX2djX3RocmVzKQ0KKwkJCXsNCisJCQkJTF90bXAgPSB2b19MX2FkZChMX3RtcCwgTXB5XzMyXzE2KGdhaW5fY29kZSwgZ2Fpbl9jb2RlX2xvLCA2MjI2KSk7DQorCQkJCWlmKExfdG1wID4gc3QtPkxfZ2NfdGhyZXMpDQorCQkJCXsNCisJCQkJCUxfdG1wID0gc3QtPkxfZ2NfdGhyZXM7DQorCQkJCX0NCisJCQl9IGVsc2UNCisJCQl7DQorCQkJCUxfdG1wID0gTXB5XzMyXzE2KGdhaW5fY29kZSwgZ2Fpbl9jb2RlX2xvLCAyNzUzNik7DQorCQkJCWlmKExfdG1wIDwgc3QtPkxfZ2NfdGhyZXMpDQorCQkJCXsNCisJCQkJCUxfdG1wID0gc3QtPkxfZ2NfdGhyZXM7DQorCQkJCX0NCisJCQl9DQorCQkJc3QtPkxfZ2NfdGhyZXMgPSBMX3RtcDsNCisNCisJCQlMX2dhaW5fY29kZSA9IE1weV8zMl8xNihnYWluX2NvZGUsIGdhaW5fY29kZV9sbywgKDMyNzY3IC0gZmFjKSk7DQorCQkJVk9fTF9FeHRyYWN0KExfdG1wLCAmZ2Fpbl9jb2RlLCAmZ2Fpbl9jb2RlX2xvKTsNCisJCQlMX2dhaW5fY29kZSA9IHZvX0xfYWRkKExfZ2Fpbl9jb2RlLCBNcHlfMzJfMTYoZ2Fpbl9jb2RlLCBnYWluX2NvZGVfbG8sIGZhYykpOw0KKw0KKwkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJCSAqIHBpdGNoIGVuaGFuY2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJCSAqIH5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJCSAqIC0gRW5oYW5jZSBleGNpdGF0aW9uIG9uIHZvaWNlLiAoSFAgZmlsdGVyaW5nIG9mIGNvZGUpICAgICAgKg0KKwkJCSAqICAgT24gdm9pY2VkIHNpZ25hbCwgZmlsdGVyaW5nIG9mIGNvZGUgYnkgYSBzbW9vdGggZmlyIEhQICAgKg0KKwkJCSAqICAgZmlsdGVyIHRvIGRlY3JlYXNlIGVuZXJneSBvZiBjb2RlIGluIGxvdyBmcmVxdWVuY3kuICAgICAgKg0KKwkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJCQl0bXAgPSAoKHZvaWNlX2ZhYyA+PiAzKSArIDQwOTYpOyAvKiAwLjI1PXZvaWNlZCwgMD11bnZvaWNlZCAqLw0KKw0KKwkJCUxfdG1wID0gTF9kZXBvc2l0X2goY29kZVswXSk7DQorCQkJTF90bXAgLT0gKGNvZGVbMV0gKiB0bXApPDwxOw0KKwkJCWNvZGUyWzBdID0gdm9fcm91bmQoTF90bXApOyANCisNCisJCQlmb3IgKGkgPSAxOyBpIDwgTF9TVUJGUiAtIDE7IGkrKykNCisJCQl7DQorCQkJCUxfdG1wID0gTF9kZXBvc2l0X2goY29kZVtpXSk7DQorCQkJCUxfdG1wIC09IChjb2RlW2kgKyAxXSAqIHRtcCk8PDE7DQorCQkJCUxfdG1wIC09IChjb2RlW2kgLSAxXSAqIHRtcCk8PDE7DQorCQkJCWNvZGUyW2ldID0gdm9fcm91bmQoTF90bXApOyANCisJCQl9DQorDQorCQkJTF90bXAgPSBMX2RlcG9zaXRfaChjb2RlW0xfU1VCRlIgLSAxXSk7DQorCQkJTF90bXAgLT0gKGNvZGVbTF9TVUJGUiAtIDJdICogdG1wKTw8MTsNCisJCQljb2RlMltMX1NVQkZSIC0gMV0gPSB2b19yb3VuZChMX3RtcCk7IA0KKw0KKwkJCS8qIGJ1aWxkIGV4Y2l0YXRpb24gKi8NCisJCQlnYWluX2NvZGUgPSB2b19yb3VuZChMX3NobChMX2dhaW5fY29kZSwgUV9uZXcpKTsNCisNCisJCQlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwkJCXsNCisJCQkJTF90bXAgPSAoY29kZTJbaV0gKiBnYWluX2NvZGUpPDwxOw0KKwkJCQlMX3RtcCA9IChMX3RtcCA8PCA1KTsNCisJCQkJTF90bXAgKz0gKGV4YzJbaV0gKiBnYWluX3BpdCk8PDE7DQorCQkJCUxfdG1wID0gKExfdG1wIDw8IDEpOw0KKwkJCQlleGMyW2ldID0gdm9fcm91bmQoTF90bXApOw0KKwkJCX0NCisNCisJCQljb3JyX2dhaW4gPSBzeW50aGVzaXMocF9BcSwgZXhjMiwgUV9uZXcsICZzcGVlY2gxNmtbaV9zdWJmciAqIDUgLyA0XSwgc3QpOw0KKwkJCVBhcm1fc2VyaWFsKGNvcnJfZ2FpbiwgNCwgJnBybXMpOw0KKwkJfQ0KKwkJcF9BICs9IChNICsgMSk7DQorCQlwX0FxICs9IChNICsgMSk7DQorCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBvZiBzdWJmcmFtZSBsb29wICovDQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIFVwZGF0ZSBzaWduYWwgZm9yIG5leHQgZnJhbWUuICAgICAgICAgICAgICAgICAgICAqDQorCSAqIC0+IHNhdmUgcGFzdCBvZiBzcGVlY2hbXSwgd3NwW10gYW5kIGV4Y1tdLiAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlDb3B5KCZvbGRfc3BlZWNoW0xfRlJBTUVdLCBzdC0+b2xkX3NwZWVjaCwgTF9UT1RBTCAtIExfRlJBTUUpOw0KKwlDb3B5KCZvbGRfd3NwW0xfRlJBTUUgLyBPUExfREVDSU1dLCBzdC0+b2xkX3dzcCwgUElUX01BWCAvIE9QTF9ERUNJTSk7DQorCUNvcHkoJm9sZF9leGNbTF9GUkFNRV0sIHN0LT5vbGRfZXhjLCBQSVRfTUFYICsgTF9JTlRFUlBPTCk7DQorCXJldHVybjsNCit9DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqIEZ1bmN0aW9uIHN5bnRoZXNpcygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogU3ludGhlc2lzIG9mIHNpZ25hbCBhdCAxNmtIeiB3aXRoIEhGIGV4dGVuc2lvbi4gICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgV29yZDE2IHN5bnRoZXNpcygNCisJCVdvcmQxNiBBcVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQSh6KSAgOiBxdWFudGl6ZWQgQXogICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IGV4Y2l0YXRpb24gYXQgMTJrSHogICAgICAgICovDQorCQlXb3JkMTYgUV9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogc2NhbGluZyBwZXJmb3JtZWQgb24gZXhjICAgKi8NCisJCVdvcmQxNiBzeW50aDE2a1tdLCAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgOiAxNmtIeiBzeW50aGVzaXMgc2lnbmFsICAgICAqLw0KKwkJQ29kZXJfU3RhdGUgKiBzdCAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSA6IFN0YXRlIHN0cnVjdHVyZSAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMTYgZmFjLCB0bXAsIGV4cDsNCisJV29yZDE2IGVuZXIsIGV4cF9lbmVyOw0KKwlXb3JkMzIgTF90bXAsIGk7DQorDQorCVdvcmQxNiBzeW50aF9oaVtNICsgTF9TVUJGUl0sIHN5bnRoX2xvW00gKyBMX1NVQkZSXTsNCisJV29yZDE2IHN5bnRoW0xfU1VCRlJdOw0KKwlXb3JkMTYgSEZbTF9TVUJGUjE2a107ICAgICAgICAgICAgICAgICAvKiBIaWdoIEZyZXF1ZW5jeSB2ZWN0b3IgICAgICAqLw0KKwlXb3JkMTYgQXBbTSArIDFdOw0KKw0KKwlXb3JkMTYgSEZfU1BbTF9TVUJGUjE2a107ICAgICAgICAgICAgICAvKiBIaWdoIEZyZXF1ZW5jeSB2ZWN0b3IgKGZyb20gb3JpZ2luYWwgc2lnbmFsKSAqLw0KKw0KKwlXb3JkMTYgSFBfZXN0X2dhaW4sIEhQX2NhbGNfZ2FpbiwgSFBfY29ycl9nYWluOw0KKwlXb3JkMTYgZGlzdF9taW4sIGRpc3Q7DQorCVdvcmQxNiBIUF9nYWluX2luZCA9IDA7DQorCVdvcmQxNiBnYWluMSwgZ2FpbjI7DQorCVdvcmQxNiB3ZWlnaHQxLCB3ZWlnaHQyOw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogc3BlZWNoIHN5bnRoZXNpcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIH5+fn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAtIEZpbmQgc3ludGhlc2lzIHNwZWVjaCBjb3JyZXNwb25kaW5nIHRvIGV4YzJbXS4gICAgICAgICAgICoNCisJICogLSBQZXJmb3JtIGZpeGVkIGRlZW1waGFzaXMgYW5kIGhwIDUwaHogZmlsdGVyaW5nLiAgICAgICAgICAqDQorCSAqIC0gT3ZlcnNhbXBsaW5nIGZyb20gMTIuOGtIeiB0byAxNmtIei4gICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCUNvcHkoc3QtPm1lbV9zeW5faGksIHN5bnRoX2hpLCBNKTsNCisJQ29weShzdC0+bWVtX3N5bl9sbywgc3ludGhfbG8sIE0pOw0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlTeW5fZmlsdF8zMl9hc20oQXEsIE0sIGV4YywgUV9uZXcsIHN5bnRoX2hpICsgTSwgc3ludGhfbG8gKyBNLCBMX1NVQkZSKTsNCisjZWxzZQ0KKwlTeW5fZmlsdF8zMihBcSwgTSwgZXhjLCBRX25ldywgc3ludGhfaGkgKyBNLCBzeW50aF9sbyArIE0sIExfU1VCRlIpOw0KKyNlbmRpZg0KKw0KKwlDb3B5KHN5bnRoX2hpICsgTF9TVUJGUiwgc3QtPm1lbV9zeW5faGksIE0pOw0KKwlDb3B5KHN5bnRoX2xvICsgTF9TVUJGUiwgc3QtPm1lbV9zeW5fbG8sIE0pOw0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlEZWVtcGhfMzJfYXNtKHN5bnRoX2hpICsgTSwgc3ludGhfbG8gKyBNLCBzeW50aCwgJihzdC0+bWVtX2RlZW1waCkpOw0KKyNlbHNlDQorCURlZW1waF8zMihzeW50aF9oaSArIE0sIHN5bnRoX2xvICsgTSwgc3ludGgsIFBSRUVNUEhfRkFDLCBMX1NVQkZSLCAmKHN0LT5tZW1fZGVlbXBoKSk7DQorI2VuZGlmDQorDQorCUhQNTBfMTJrOChzeW50aCwgTF9TVUJGUiwgc3QtPm1lbV9zaWdfb3V0KTsNCisNCisJLyogT3JpZ2luYWwgc3BlZWNoIHNpZ25hbCBhcyByZWZlcmVuY2UgZm9yIGhpZ2ggYmFuZCBnYWluIHF1YW50aXNhdGlvbiAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjE2azsgaSsrKQ0KKwl7DQorCQlIRl9TUFtpXSA9IHN5bnRoMTZrW2ldOyANCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogSEYgbm9pc2Ugc3ludGhlc2lzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIH5+fn5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAtIEdlbmVyYXRlIEhGIG5vaXNlIGJldHdlZW4gNS41IGFuZCA3LjUga0h6LiAgICAgICAgICoNCisJICogLSBTZXQgZW5lcmd5IG9mIG5vaXNlIGFjY29yZGluZyB0byBzeW50aGVzaXMgdGlsdC4gICAqDQorCSAqICAgICB0aWx0ID4gMC44ID09PiAtIDE0IGRCICh2b2ljZWQpICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgdGlsdCAgIDAuNSA9PT4gLSA2IGRCICAodm9pY2VkIG9yIG5vaXNlKSAgICAgICAgICoNCisJICogICAgIHRpbHQgPCAwLjAgPT0+ICAgMCBkQiAgKG5vaXNlKSAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJLyogZ2VuZXJhdGUgd2hpdGUgbm9pc2UgdmVjdG9yICovDQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSMTZrOyBpKyspDQorCXsNCisJCUhGW2ldID0gUmFuZG9tKCYoc3QtPnNlZWQyKSk+PjM7DQorCX0NCisJLyogZW5lcmd5IG9mIGV4Y2l0YXRpb24gKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJU2NhbGVfc2lnX29wdChleGMsIExfU1VCRlIsIC0zKTsNCisJUV9uZXcgPSBRX25ldyAtIDM7DQorCWVuZXIgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oZXhjLCBleGMsIExfU1VCRlIsICZleHBfZW5lcikpOw0KKyNlbHNlDQorCVNjYWxlX3NpZyhleGMsIExfU1VCRlIsIC0zKTsNCisJUV9uZXcgPSBRX25ldyAtIDM7DQorCWVuZXIgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMihleGMsIGV4YywgTF9TVUJGUiwgJmV4cF9lbmVyKSk7DQorI2VuZGlmDQorDQorCWV4cF9lbmVyID0gZXhwX2VuZXIgLSAoUV9uZXcgKyBRX25ldyk7DQorCS8qIHNldCBlbmVyZ3kgb2Ygd2hpdGUgbm9pc2UgdG8gZW5lcmd5IG9mIGV4Y2l0YXRpb24gKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJdG1wID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTJfYXNtKEhGLCBIRiwgTF9TVUJGUjE2aywgJmV4cCkpOw0KKyNlbHNlDQorCXRtcCA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyKEhGLCBIRiwgTF9TVUJGUjE2aywgJmV4cCkpOw0KKyNlbmRpZg0KKw0KKwlpZih0bXAgPiBlbmVyKQ0KKwl7DQorCQl0bXAgPSAodG1wID4+IDEpOyAgICAgICAgICAgICAgICAgLyogQmUgc3VyZSB0bXAgPCBlbmVyICovDQorCQlleHAgPSAoZXhwICsgMSk7DQorCX0NCisJTF90bXAgPSBMX2RlcG9zaXRfaChkaXZfcyh0bXAsIGVuZXIpKTsgLyogcmVzdWx0IGlzIG5vcm1hbGl6ZWQgKi8NCisJZXhwID0gKGV4cCAtIGV4cF9lbmVyKTsNCisJSXNxcnRfbigmTF90bXAsICZleHApOw0KKwlMX3RtcCA9IExfc2hsKExfdG1wLCAoZXhwICsgMSkpOyAgICAgICAvKiBMX3RtcCB4IDIsIExfdG1wIGluIFEzMSAqLw0KKwl0bXAgPSBleHRyYWN0X2goTF90bXApOyAgICAgICAgICAgICAgICAvKiB0bXAgPSAyIHggc3FydChlbmVyX2V4Yy9lbmVyX2hmKSAqLw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjE2azsgaSsrKQ0KKwl7DQorCQlIRltpXSA9IHZvX211bHQoSEZbaV0sIHRtcCk7DQorCX0NCisNCisJLyogZmluZCB0aWx0IG9mIHN5bnRoZXNpcyBzcGVlY2ggKHRpbHQ6IDE9dm9pY2VkLCAtMT11bnZvaWNlZCkgKi8NCisJSFA0MDBfMTJrOChzeW50aCwgTF9TVUJGUiwgc3QtPm1lbV9ocDQwMCk7DQorDQorCUxfdG1wID0gMUw7DQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCQlMX3RtcCArPSAoc3ludGhbaV0gKiBzeW50aFtpXSk8PDE7DQorDQorCWV4cCA9IG5vcm1fbChMX3RtcCk7DQorCWVuZXIgPSBleHRyYWN0X2goTF90bXAgPDwgZXhwKTsgICAvKiBlbmVyID0gclswXSAqLw0KKw0KKwlMX3RtcCA9IDFMOw0KKwlmb3IgKGkgPSAxOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwkJTF90bXAgKz0oc3ludGhbaV0gKiBzeW50aFtpIC0gMV0pPDwxOw0KKw0KKwl0bXAgPSBleHRyYWN0X2goTF90bXAgPDwgZXhwKTsgICAgLyogdG1wID0gclsxXSAqLw0KKw0KKwlpZiAodG1wID4gMCkNCisJew0KKwkJZmFjID0gZGl2X3ModG1wLCBlbmVyKTsNCisJfSBlbHNlDQorCXsNCisJCWZhYyA9IDA7IA0KKwl9DQorDQorCS8qIG1vZGlmeSBlbmVyZ3kgb2Ygd2hpdGUgbm9pc2UgYWNjb3JkaW5nIHRvIHN5bnRoZXNpcyB0aWx0ICovDQorCWdhaW4xID0gMzI3NjcgLSBmYWM7DQorCWdhaW4yID0gdm9fbXVsdChnYWluMSwgMjA0ODApOw0KKwlnYWluMiA9IHNobChnYWluMiwgMSk7DQorDQorCWlmIChzdC0+dmFkX2hpc3QgPiAwKQ0KKwl7DQorCQl3ZWlnaHQxID0gMDsNCisJCXdlaWdodDIgPSAzMjc2NzsNCisJfSBlbHNlDQorCXsNCisJCXdlaWdodDEgPSAzMjc2NzsNCisJCXdlaWdodDIgPSAwOw0KKwl9DQorCXRtcCA9IHZvX211bHQod2VpZ2h0MSwgZ2FpbjEpOw0KKwl0bXAgPSBhZGQxKHRtcCwgdm9fbXVsdCh3ZWlnaHQyLCBnYWluMikpOw0KKw0KKwlpZiAodG1wICE9IDApDQorCXsNCisJCXRtcCA9ICh0bXAgKyAxKTsNCisJfQ0KKwlIUF9lc3RfZ2FpbiA9IHRtcDsNCisNCisJaWYoSFBfZXN0X2dhaW4gPCAzMjc3KQ0KKwl7DQorCQlIUF9lc3RfZ2FpbiA9IDMyNzc7ICAgICAgICAgICAgICAgIC8qIDAuMSBpbiBRMTUgKi8NCisJfQ0KKwkvKiBzeW50aGVzaXMgb2Ygbm9pc2U6IDQuOGtIei4uNS42a0h6IC0tPiA2a0h6Li43a0h6ICovDQorCVdlaWdodF9hKEFxLCBBcCwgMTk2NjEsIE0pOyAgICAgICAgICAgIC8qIGZhYz0wLjYgKi8NCisNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlTeW5fZmlsdF9hc20oQXAsIEhGLCBIRiwgc3QtPm1lbV9zeW5faGYpOw0KKwkvKiBub2lzZSBIaWdoIFBhc3MgZmlsdGVyaW5nICgxbXMgb2YgZGVsYXkpICovDQorCUZpbHRfNmtfN2tfYXNtKEhGLCBMX1NVQkZSMTZrLCBzdC0+bWVtX2hmKTsNCisJLyogZmlsdGVyaW5nIG9mIHRoZSBvcmlnaW5hbCBzaWduYWwgKi8NCisJRmlsdF82a183a19hc20oSEZfU1AsIExfU1VCRlIxNmssIHN0LT5tZW1faGYyKTsNCisNCisJLyogY2hlY2sgdGhlIGdhaW4gZGlmZmVyZW5jZSAqLw0KKwlTY2FsZV9zaWdfb3B0KEhGX1NQLCBMX1NVQkZSMTZrLCAtMSk7DQorCWVuZXIgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oSEZfU1AsIEhGX1NQLCBMX1NVQkZSMTZrLCAmZXhwX2VuZXIpKTsNCisJLyogc2V0IGVuZXJneSBvZiB3aGl0ZSBub2lzZSB0byBlbmVyZ3kgb2YgZXhjaXRhdGlvbiAqLw0KKwl0bXAgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oSEYsIEhGLCBMX1NVQkZSMTZrLCAmZXhwKSk7DQorI2Vsc2UNCisJU3luX2ZpbHQoQXAsIEhGLCBIRiwgTF9TVUJGUjE2aywgc3QtPm1lbV9zeW5faGYsIDEpOw0KKwkvKiBub2lzZSBIaWdoIFBhc3MgZmlsdGVyaW5nICgxbXMgb2YgZGVsYXkpICovDQorCUZpbHRfNmtfN2soSEYsIExfU1VCRlIxNmssIHN0LT5tZW1faGYpOw0KKwkvKiBmaWx0ZXJpbmcgb2YgdGhlIG9yaWdpbmFsIHNpZ25hbCAqLw0KKwlGaWx0XzZrXzdrKEhGX1NQLCBMX1NVQkZSMTZrLCBzdC0+bWVtX2hmMik7DQorCS8qIGNoZWNrIHRoZSBnYWluIGRpZmZlcmVuY2UgKi8NCisJU2NhbGVfc2lnKEhGX1NQLCBMX1NVQkZSMTZrLCAtMSk7DQorCWVuZXIgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMihIRl9TUCwgSEZfU1AsIExfU1VCRlIxNmssICZleHBfZW5lcikpOw0KKwkvKiBzZXQgZW5lcmd5IG9mIHdoaXRlIG5vaXNlIHRvIGVuZXJneSBvZiBleGNpdGF0aW9uICovDQorCXRtcCA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyKEhGLCBIRiwgTF9TVUJGUjE2aywgJmV4cCkpOw0KKyNlbmRpZg0KKw0KKwlpZiAodG1wID4gZW5lcikNCisJew0KKwkJdG1wID0gKHRtcCA+PiAxKTsgICAgICAgICAgICAgICAgIC8qIEJlIHN1cmUgdG1wIDwgZW5lciAqLw0KKwkJZXhwID0gKGV4cCArIDEpOw0KKwl9DQorCUxfdG1wID0gTF9kZXBvc2l0X2goZGl2X3ModG1wLCBlbmVyKSk7IC8qIHJlc3VsdCBpcyBub3JtYWxpemVkICovDQorCWV4cCA9IHZvX3N1YihleHAsIGV4cF9lbmVyKTsNCisJSXNxcnRfbigmTF90bXAsICZleHApOw0KKwlMX3RtcCA9IExfc2hsKExfdG1wLCBleHApOyAgICAgICAgICAgICAvKiBMX3RtcCwgTF90bXAgaW4gUTMxICovDQorCUhQX2NhbGNfZ2FpbiA9IGV4dHJhY3RfaChMX3RtcCk7ICAgICAgIC8qIHRtcCA9IHNxcnQoZW5lcl9pbnB1dC9lbmVyX2hmKSAqLw0KKw0KKwkvKiBzdC0+Z2Fpbl9hbHBoYSAqPSBzdC0+ZHR4X2VuY1N0LT5kdHhIYW5nb3ZlckNvdW50LzcgKi8NCisJTF90bXAgPSAodm9fTF9tdWx0KHN0LT5kdHhfZW5jU3QtPmR0eEhhbmdvdmVyQ291bnQsIDQ2ODEpIDw8IDE1KTsNCisJc3QtPmdhaW5fYWxwaGEgPSB2b19tdWx0KHN0LT5nYWluX2FscGhhLCBleHRyYWN0X2goTF90bXApKTsNCisNCisJaWYoc3QtPmR0eF9lbmNTdC0+ZHR4SGFuZ292ZXJDb3VudCA+IDYpDQorCQlzdC0+Z2Fpbl9hbHBoYSA9IDMyNzY3Ow0KKwlIUF9lc3RfZ2FpbiA9IEhQX2VzdF9nYWluID4+IDE7ICAgICAvKiBGcm9tIFExNSB0byBRMTQgKi8NCisJSFBfY29ycl9nYWluID0gYWRkMSh2b19tdWx0KEhQX2NhbGNfZ2Fpbiwgc3QtPmdhaW5fYWxwaGEpLCB2b19tdWx0KCgzMjc2NyAtIHN0LT5nYWluX2FscGhhKSwgSFBfZXN0X2dhaW4pKTsNCisNCisJLyogUXVhbnRpc2UgdGhlIGNvcnJlY3Rpb24gZ2FpbiAqLw0KKwlkaXN0X21pbiA9IDMyNzY3Ow0KKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykNCisJew0KKwkJZGlzdCA9IHZvX211bHQoKEhQX2NvcnJfZ2FpbiAtIEhQX2dhaW5baV0pLCAoSFBfY29ycl9nYWluIC0gSFBfZ2FpbltpXSkpOw0KKwkJaWYgKGRpc3RfbWluID4gZGlzdCkNCisJCXsNCisJCQlkaXN0X21pbiA9IGRpc3Q7DQorCQkJSFBfZ2Fpbl9pbmQgPSBpOw0KKwkJfQ0KKwl9DQorCUhQX2NvcnJfZ2FpbiA9IEhQX2dhaW5bSFBfZ2Fpbl9pbmRdOw0KKwkvKiByZXR1cm4gdGhlIHF1YW50aXNlZCBnYWluIGluZGV4IHdoZW4gdXNpbmcgdGhlIGhpZ2hlc3QgbW9kZSwgb3RoZXJ3aXNlIHplcm8gKi8NCisJcmV0dXJuIChIUF9nYWluX2luZCk7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogQnJlaWY6IENvZGVjIG1haW4gZnVuY3Rpb24gDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK2ludCBBTVJfRW5jX0VuY29kZShIQU1SRU5DIGhDb2RlYykNCit7DQorCVdvcmQzMiBpOw0KKwlDb2Rlcl9TdGF0ZSAqZ0RhdGEgPSAoQ29kZXJfU3RhdGUqKWhDb2RlYzsNCisJV29yZDE2ICpzaWduYWw7DQorCVdvcmQxNiBwYWNrZWRfc2l6ZSA9IDA7DQorCVdvcmQxNiBwcm1zW05CX0JJVFNfTUFYXTsNCisJV29yZDE2IGNvZGluZ19tb2RlID0gMCwgbmJfYml0cywgYWxsb3dfZHR4LCBtb2RlLCByZXNldF9mbGFnOw0KKwltb2RlID0gZ0RhdGEtPm1vZGU7DQorCWNvZGluZ19tb2RlID0gZ0RhdGEtPm1vZGU7DQorCW5iX2JpdHMgPSBuYl9vZl9iaXRzW21vZGVdOw0KKwlzaWduYWwgPSAoV29yZDE2ICopZ0RhdGEtPmlucHV0U3RyZWFtOw0KKwlhbGxvd19kdHggPSBnRGF0YS0+YWxsb3dfZHR4Ow0KKw0KKwkvKiBjaGVjayBmb3IgaG9taW5nIGZyYW1lICovDQorCXJlc2V0X2ZsYWcgPSBlbmNvZGVyX2hvbWluZ19mcmFtZV90ZXN0KHNpZ25hbCk7DQorDQorCWZvciAoaSA9IDA7IGkgPCBMX0ZSQU1FMTZrOyBpKyspICAgLyogRGVsZXRlIHRoZSAyIExTQnMgKDE0LWJpdCBpbnB1dCkgKi8NCisJew0KKwkJKihzaWduYWwgKyBpKSA9IChXb3JkMTYpICgqKHNpZ25hbCArIGkpICYgMHhmZmZDKTsNCisJfQ0KKw0KKwljb2RlcigmY29kaW5nX21vZGUsIHNpZ25hbCwgcHJtcywgJm5iX2JpdHMsIGdEYXRhLCBhbGxvd19kdHgpOw0KKwlwYWNrZWRfc2l6ZSA9IFBhY2tCaXRzKHBybXMsIGNvZGluZ19tb2RlLCBtb2RlLCBnRGF0YSk7DQorCWlmIChyZXNldF9mbGFnICE9IDApDQorCXsNCisJCVJlc2V0X2VuY29kZXIoZ0RhdGEsIDEpOw0KKwl9DQorCXJldHVybiBwYWNrZWRfc2l6ZTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqQnJpZWY6IENvZGVjIEFQSSBmdW5jdGlvbiAtLS0gSW5pdGlhbGl6ZSB0aGUgY29kZWMgYW5kIHJldHVybiBhIGNvZGVjIGhhbmRsZQ0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorVk9fVTMyIFZPX0FQSSB2b0FNUldCX0luaXQoVk9fSEFORExFICogcGhDb2RlYywgICAgICAgICAgICAgICAgICAgLyogbzogdGhlIGF1ZGlvIGNvZGVjIGhhbmRsZSAqLw0KKwkJCQkJCSAgIFZPX0FVRElPX0NPRElOR1RZUEUgdlR5cGUsICAgICAgICAgICAgIC8qIGk6IENvZGVjIFR5cGUgSUQgKi8NCisJCQkJCQkgICBWT19DT0RFQ19JTklUX1VTRVJEQVRBICogcFVzZXJEYXRhICAgICAvKiBpOiBpbml0IFBhcmFtZXRlcnMgKi8NCisJCQkJCQkgICApDQorew0KKwlDb2Rlcl9TdGF0ZSAqc3Q7DQorCUZyYW1lU3RyZWFtICpzdHJlYW07DQorI2lmZGVmIFVTRV9ERUFVTFRfTUVNDQorCVZPX01FTV9PUEVSQVRPUiB2b01lbW9wcmF0b3I7DQorI2VuZGlmDQorCVZPX01FTV9PUEVSQVRPUiAqcE1lbU9QOw0KKwlpbnQgaW50ZXJNZW0gPSAwOw0KKw0KKwlpZihwVXNlckRhdGEgPT0gTlVMTCB8fCBwVXNlckRhdGEtPm1lbWZsYWcgIT0gVk9fSU1GX1VTRVJNRU1PUEVSQVRPUiB8fCBwVXNlckRhdGEtPm1lbURhdGEgPT0gTlVMTCApDQorCXsNCisjaWZkZWYgVVNFX0RFQVVMVF9NRU0NCisJCXZvTWVtb3ByYXRvci5BbGxvYyA9IGNtbk1lbUFsbG9jOw0KKwkJdm9NZW1vcHJhdG9yLkNvcHkgPSBjbW5NZW1Db3B5Ow0KKwkJdm9NZW1vcHJhdG9yLkZyZWUgPSBjbW5NZW1GcmVlOw0KKwkJdm9NZW1vcHJhdG9yLlNldCA9IGNtbk1lbVNldDsNCisJCXZvTWVtb3ByYXRvci5DaGVjayA9IGNtbk1lbUNoZWNrOw0KKwkJaW50ZXJNZW0gPSAxOw0KKwkJcE1lbU9QID0gJnZvTWVtb3ByYXRvcjsNCisjZWxzZQ0KKwkJKnBoQ29kZWMgPSBOVUxMOw0KKwkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisjZW5kaWYNCisJfQ0KKwllbHNlDQorCXsNCisJCXBNZW1PUCA9IChWT19NRU1fT1BFUkFUT1IgKilwVXNlckRhdGEtPm1lbURhdGE7DQorCX0gDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogTWVtb3J5IGFsbG9jYXRpb24gZm9yIGNvZGVyIHN0YXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlpZiAoKHN0ID0gKENvZGVyX1N0YXRlICopbWVtX21hbGxvYyhwTWVtT1AsIHNpemVvZihDb2Rlcl9TdGF0ZSksIDMyLCBWT19JTkRFWF9FTkNfQU1SV0IpKSA9PSBOVUxMKQ0KKwl7DQorCQlyZXR1cm4gVk9fRVJSX09VVE9GX01FTU9SWTsNCisJfQ0KKw0KKwlzdC0+dmFkU3QgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICANCisJc3QtPmR0eF9lbmNTdCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgDQorCXN0LT5zaWRfdXBkYXRlX2NvdW50ZXIgPSAzOw0KKwlzdC0+c2lkX2hhbmRvdmVyX2RlYnQgPSAwOw0KKwlzdC0+cHJldl9mdCA9IFRYX1NQRUVDSDsNCisJc3QtPmlucHV0U3RyZWFtID0gTlVMTDsNCisJc3QtPmlucHV0U2l6ZSA9IDA7DQorDQorCS8qIERlZmF1bHQgc2V0dGluZyAqLw0KKwlzdC0+bW9kZSA9IFZPQU1SV0JfTUQyMzg1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJpdCByYXRlIDIzLjg1a2JwcyAqLw0KKwlzdC0+ZnJhbWVUeXBlID0gVk9BTVJXQl9SRkMzMjY3OyAgICAgICAgICAgICAgICAgIC8qIGZyYW1lIHR5cGU6IFJGQzMyNjcgKi8NCisJc3QtPmFsbG93X2R0eCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkaXNhYmxlIERUWCBtb2RlICovDQorDQorCXN0LT5vdXRwdXRTdHJlYW0gPSBOVUxMOw0KKwlzdC0+b3V0cHV0U2l6ZSA9IDA7DQorDQorCXN0LT5zdHJlYW0gPSAoRnJhbWVTdHJlYW0gKiltZW1fbWFsbG9jKHBNZW1PUCwgc2l6ZW9mKEZyYW1lU3RyZWFtKSwgMzIsIFZPX0lOREVYX0VOQ19BTVJXQik7DQorCWlmKHN0LT5zdHJlYW0gPT0gTlVMTCkNCisJCXJldHVybiBWT19FUlJfT1VUT0ZfTUVNT1JZOw0KKw0KKwlzdC0+c3RyZWFtLT5mcmFtZV9wdHIgPSAodW5zaWduZWQgY2hhciAqKW1lbV9tYWxsb2MocE1lbU9QLCBGcmFtZV9NYXhzaXplLCAzMiwgVk9fSU5ERVhfRU5DX0FNUldCKTsNCisJaWYoc3QtPnN0cmVhbS0+ZnJhbWVfcHRyID09IE5VTEwpDQorCQlyZXR1cm4gIFZPX0VSUl9PVVRPRl9NRU1PUlk7DQorDQorCXN0cmVhbSA9IHN0LT5zdHJlYW07DQorCXZvQVdCX0luaXRGcmFtZUJ1ZmZlcihzdHJlYW0pOw0KKw0KKwl3Yl92YWRfaW5pdCgmKHN0LT52YWRTdCksIHBNZW1PUCk7DQorCWR0eF9lbmNfaW5pdCgmKHN0LT5kdHhfZW5jU3QpLCBpc2ZfaW5pdCwgcE1lbU9QKTsNCisNCisJUmVzZXRfZW5jb2Rlcigodm9pZCAqKSBzdCwgMSk7DQorDQorCWlmKGludGVyTWVtKQ0KKwl7DQorCQlzdC0+dm9NZW1vcHJhdG9yLkFsbG9jID0gY21uTWVtQWxsb2M7DQorCQlzdC0+dm9NZW1vcHJhdG9yLkNvcHkgPSBjbW5NZW1Db3B5Ow0KKwkJc3QtPnZvTWVtb3ByYXRvci5GcmVlID0gY21uTWVtRnJlZTsNCisJCXN0LT52b01lbW9wcmF0b3IuU2V0ID0gY21uTWVtU2V0Ow0KKwkJc3QtPnZvTWVtb3ByYXRvci5DaGVjayA9IGNtbk1lbUNoZWNrOw0KKwkJcE1lbU9QID0gJnN0LT52b01lbW9wcmF0b3I7DQorCX0NCisNCisJc3QtPnB2b01lbW9wID0gcE1lbU9QOw0KKw0KKwkqcGhDb2RlYyA9ICh2b2lkICopIHN0Ow0KKw0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogQnJpZWY6IENvZGVjIEFQSSBmdW5jdGlvbjogSW5wdXQgUENNIGRhdGENCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorVk9fVTMyIFZPX0FQSSB2b0FNUldCX1NldElucHV0RGF0YSgNCisJCVZPX0hBTkRMRSBoQ29kZWMsICAgICAgICAgICAgICAgICAgIC8qIGkvbzogVGhlIGNvZGVjIGhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uICovDQorCQlWT19DT0RFQ0JVRkZFUiAqIHBJbnB1dCAgICAgICAgICAgICAvKiAgIGk6IFRoZSBpbnB1dCBidWZmZXIgcGFyYW1ldGVyICAqLw0KKwkJKQ0KK3sNCisJQ29kZXJfU3RhdGUgICpnRGF0YTsNCisJRnJhbWVTdHJlYW0gICpzdHJlYW07DQorDQorCWlmKE5VTEwgPT0gaENvZGVjKQ0KKwl7DQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKwl9DQorDQorCWdEYXRhID0gKENvZGVyX1N0YXRlICopaENvZGVjOw0KKwlzdHJlYW0gPSBnRGF0YS0+c3RyZWFtOw0KKw0KKwlpZihOVUxMID09IHBJbnB1dCB8fCBOVUxMID09IHBJbnB1dC0+QnVmZmVyIHx8IDAgPiBwSW5wdXQtPkxlbmd0aCkNCisJew0KKwkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisJfQ0KKw0KKwlzdHJlYW0tPnNldF9wdHIgICAgPSBwSW5wdXQtPkJ1ZmZlcjsNCisJc3RyZWFtLT5zZXRfbGVuICAgID0gcElucHV0LT5MZW5ndGg7DQorCXN0cmVhbS0+ZnJhbWVfcHRyICA9IHN0cmVhbS0+ZnJhbWVfcHRyX2JrOw0KKwlzdHJlYW0tPnVzZWRfbGVuICAgPSAwOw0KKw0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqIEJyaWVmOiBDb2RlYyBBUEkgZnVuY3Rpb246IEdldCB0aGUgY29tcHJlc3Npb24gYXVkaW8gZGF0YSBmcmFtZSBieSBmcmFtZQ0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorVk9fVTMyIFZPX0FQSSB2b0FNUldCX0dldE91dHB1dERhdGEoDQorCQlWT19IQU5ETEUgaENvZGVjLCAgICAgICAgICAgICAgICAgICAgLyogaTogVGhlIENvZGVjIEhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uKi8NCisJCVZPX0NPREVDQlVGRkVSICogcE91dHB1dCwgICAgICAgICAgICAvKiBvOiBUaGUgb3V0cHV0IGF1ZGlvIGRhdGEgKi8NCisJCVZPX0FVRElPX09VVFBVVElORk8gKiBwQXVkaW9Gb3JtYXQgICAvKiBvOiBUaGUgZW5jb2RlciBtb2R1bGUgZmlsbGVkIGF1ZGlvIGZvcm1hdCBhbmQgdXNlZCB0aGUgaW5wdXQgc2l6ZSovDQorCQkpDQorew0KKwlDb2Rlcl9TdGF0ZSogZ0RhdGEgPSAoQ29kZXJfU3RhdGUqKWhDb2RlYzsNCisJVk9fTUVNX09QRVJBVE9SICAqcE1lbU9QOw0KKwlGcmFtZVN0cmVhbSAgKnN0cmVhbSA9IChGcmFtZVN0cmVhbSAqKWdEYXRhLT5zdHJlYW07DQorCXBNZW1PUCA9IChWT19NRU1fT1BFUkFUT1IgICopZ0RhdGEtPnB2b01lbW9wOw0KKw0KKwlpZihzdHJlYW0tPmZyYW1lYnVmZmVyX2xlbiAgPCBGcmFtZV9NYXhCeXRlKSAgICAgICAgIC8qIGNoZWNrIHRoZSB3b3JrIGJ1ZmZlciBsZW4gKi8NCisJew0KKwkJc3RyZWFtLT5mcmFtZV9zdG9yZWxlbiA9IHN0cmVhbS0+ZnJhbWVidWZmZXJfbGVuOw0KKwkJaWYoc3RyZWFtLT5mcmFtZV9zdG9yZWxlbikNCisJCXsNCisJCQlwTWVtT1AtPkNvcHkoVk9fSU5ERVhfRU5DX0FNUldCLCBzdHJlYW0tPmZyYW1lX3B0cl9iayAsIHN0cmVhbS0+ZnJhbWVfcHRyICwgc3RyZWFtLT5mcmFtZV9zdG9yZWxlbik7DQorCQl9DQorCQlpZihzdHJlYW0tPnNldF9sZW4gPiAwKQ0KKwkJew0KKwkJCXZvQVdCX1VwZGF0ZUZyYW1lQnVmZmVyKHN0cmVhbSwgcE1lbU9QKTsNCisJCX0NCisJCWlmKHN0cmVhbS0+ZnJhbWVidWZmZXJfbGVuIDwgRnJhbWVfTWF4Qnl0ZSkNCisJCXsNCisJCQlpZihwQXVkaW9Gb3JtYXQpDQorCQkJCXBBdWRpb0Zvcm1hdC0+SW5wdXRVc2VkID0gc3RyZWFtLT51c2VkX2xlbjsNCisJCQlyZXR1cm4gVk9fRVJSX0lOUFVUX0JVRkZFUl9TTUFMTDsNCisJCX0NCisJfQ0KKw0KKwlnRGF0YS0+aW5wdXRTdHJlYW0gPSBzdHJlYW0tPmZyYW1lX3B0cjsNCisJZ0RhdGEtPm91dHB1dFN0cmVhbSA9ICh1bnNpZ25lZCBzaG9ydCopcE91dHB1dC0+QnVmZmVyOw0KKw0KKwlnRGF0YS0+b3V0cHV0U2l6ZSA9IEFNUl9FbmNfRW5jb2RlKGdEYXRhKTsgICAgICAgICAvKiBlbmNvZGVyIG1haW4gZnVuY3Rpb24gKi8NCisNCisJcE91dHB1dC0+TGVuZ3RoID0gZ0RhdGEtPm91dHB1dFNpemU7ICAgICAgICAgICAgICAgLyogZ2V0IHRoZSBvdXRwdXQgYnVmZmVyIGxlbmd0aCAqLw0KKwlzdHJlYW0tPmZyYW1lX3B0ciArPSA2NDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1cGRhdGUgdGhlIHdvcmsgYnVmZmVyIHB0ciAqLw0KKwlzdHJlYW0tPmZyYW1lYnVmZmVyX2xlbiAgLT0gNjQwOw0KKw0KKwlpZihwQXVkaW9Gb3JtYXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm4gb3V0cHV0IGF1ZGlvIGluZm9ybWF0aW9uICovDQorCXsNCisJCXBBdWRpb0Zvcm1hdC0+Rm9ybWF0LkNoYW5uZWxzID0gMTsNCisJCXBBdWRpb0Zvcm1hdC0+Rm9ybWF0LlNhbXBsZVJhdGUgPSA4MDAwOw0KKwkJcEF1ZGlvRm9ybWF0LT5Gb3JtYXQuU2FtcGxlQml0cyA9IDE2OwkNCisJCXBBdWRpb0Zvcm1hdC0+SW5wdXRVc2VkID0gc3RyZWFtLT51c2VkX2xlbjsNCisJfQ0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogQnJpZWY6IENvZGVjIEFQSSBmdW5jdGlvbi0tLXNldCB0aGUgZGF0YSBieSBzcGVjaWZpZWQgcGFyYW1ldGVyIElEDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorVk9fVTMyIFZPX0FQSSB2b0FNUldCX1NldFBhcmFtKA0KKwkJVk9fSEFORExFIGhDb2RlYywgICAvKiBpL286IFRoZSBDb2RlYyBIYW5kbGUgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgSW5pdCBmdW5jdGlvbiAqLw0KKwkJVk9fUzMyIHVQYXJhbUlELCAgICAvKiAgIGk6IFRoZSBwYXJhbSBJRCAqLw0KKwkJVk9fUFRSIHBEYXRhICAgICAgICAvKiAgIGk6IFRoZSBwYXJhbSB2YWx1ZSBkZXBlbmQgb24gdGhlIElEICovDQorCQkpDQorew0KKwlDb2Rlcl9TdGF0ZSogZ0RhdGEgPSAoQ29kZXJfU3RhdGUqKWhDb2RlYzsNCisJRnJhbWVTdHJlYW0gKnN0cmVhbSA9IChGcmFtZVN0cmVhbSAqKShnRGF0YS0+c3RyZWFtKTsNCisJaW50ICpsVmFsdWUgPSAoaW50KilwRGF0YTsNCisNCisJc3dpdGNoKHVQYXJhbUlEKQ0KKwl7DQorCQkvKiBzZXR0aW5nIEFNUi1XQiBmcmFtZSB0eXBlKi8NCisJCWNhc2UgVk9fUElEX0FNUldCX0ZSQU1FVFlQRToNCisJCQlpZigqbFZhbHVlIDwgVk9BTVJXQl9ERUZBVUxUIHx8ICpsVmFsdWUgPiBWT0FNUldCX1JGQzMyNjcpDQorCQkJCXJldHVybiBWT19FUlJfV1JPTkdfUEFSQU1fSUQ7IA0KKwkJCWdEYXRhLT5mcmFtZVR5cGUgPSAqbFZhbHVlOw0KKwkJCWJyZWFrOw0KKwkJLyogc2V0dGluZyBBTVItV0IgYml0IHJhdGUgKi8NCisJCWNhc2UgVk9fUElEX0FNUldCX01PREU6DQorCQkJew0KKwkJCQlpZigqbFZhbHVlIDwgVk9BTVJXQl9NRDY2IHx8ICpsVmFsdWUgPiBWT0FNUldCX01EMjM4NSkNCisJCQkJCXJldHVybiBWT19FUlJfV1JPTkdfUEFSQU1fSUQ7IA0KKwkJCQlnRGF0YS0+bW9kZSA9ICpsVmFsdWU7DQorCQkJfQ0KKwkJCWJyZWFrOw0KKwkJLyogZW5hYmxlIG9yIGRpc2FibGUgRFRYIG1vZGUgKi8NCisJCWNhc2UgVk9fUElEX0FNUldCX0RUWDoNCisJCQlnRGF0YS0+YWxsb3dfZHR4ID0gKFdvcmQxNikoKmxWYWx1ZSk7DQorCQkJYnJlYWs7DQorDQorCQljYXNlIFZPX1BJRF9DT01NT05fSEVBRERBVEE6DQorCQkJYnJlYWs7DQorICAgICAgICAvKiBmbHVzaCB0aGUgd29yayBidWZmZXIgKi8NCisJCWNhc2UgVk9fUElEX0NPTU1PTl9GTFVTSDoNCisJCQlzdHJlYW0tPnNldF9wdHIgPSBOVUxMOw0KKwkJCXN0cmVhbS0+ZnJhbWVfc3RvcmVsZW4gPSAwOw0KKwkJCXN0cmVhbS0+ZnJhbWVidWZmZXJfbGVuID0gMDsNCisJCQlzdHJlYW0tPnNldF9sZW4gPSAwOw0KKwkJCWJyZWFrOw0KKw0KKwkJZGVmYXVsdDoNCisJCQlyZXR1cm4gVk9fRVJSX1dST05HX1BBUkFNX0lEOw0KKwl9DQorCXJldHVybiBWT19FUlJfTk9ORTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKypCcmllZjogQ29kZWMgQVBJIGZ1bmN0aW9uLS0tR2V0IHRoZSBkYXRhIGJ5IHNwZWNpZmllZCBwYXJhbWV0ZXIgSUQNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK1ZPX1UzMiBWT19BUEkgdm9BTVJXQl9HZXRQYXJhbSgNCisJCVZPX0hBTkRMRSBoQ29kZWMsICAgICAgLyogaTogVGhlIENvZGVjIEhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uICovDQorCQlWT19TMzIgdVBhcmFtSUQsICAgICAgIC8qIGk6IFRoZSBwYXJhbSBJRCAqLw0KKwkJVk9fUFRSIHBEYXRhICAgICAgICAgICAvKiBvOiBUaGUgcGFyYW0gdmFsdWUgZGVwZW5kIG9uIHRoZSBJRCAqLw0KKwkJKQ0KK3sNCisJaW50ICAgIHRlbXA7DQorCUNvZGVyX1N0YXRlKiBnRGF0YSA9IChDb2Rlcl9TdGF0ZSopaENvZGVjOw0KKw0KKwlpZiAoZ0RhdGE9PU5VTEwpIA0KKwkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisJc3dpdGNoKHVQYXJhbUlEKQ0KKwl7DQorCQkvKiBvdXRwdXQgYXVkaW8gZm9ybWF0ICovDQorCQljYXNlIFZPX1BJRF9BTVJXQl9GT1JNQVQ6DQorCQkJew0KKwkJCQlWT19BVURJT19GT1JNQVQqIGZtdCA9IChWT19BVURJT19GT1JNQVQqKXBEYXRhOw0KKwkJCQlmbXQtPkNoYW5uZWxzICAgPSAxOw0KKwkJCQlmbXQtPlNhbXBsZVJhdGUgPSAxNjAwMDsNCisJCQkJZm10LT5TYW1wbGVCaXRzID0gMTY7DQorCQkJCWJyZWFrOw0KKwkJCX0NCisgICAgICAgIC8qIG91dHB1dCBhdWRpbyBjaGFubmVsIG51bWJlciAqLw0KKwkJY2FzZSBWT19QSURfQU1SV0JfQ0hBTk5FTFM6DQorCQkJdGVtcCA9IDE7DQorCQkJcERhdGEgPSAodm9pZCAqKSgmdGVtcCk7DQorCQkJYnJlYWs7DQorICAgICAgICAvKiBvdXRwdXQgYXVkaW8gc2FtcGxlIHJhdGUgKi8NCisJCWNhc2UgVk9fUElEX0FNUldCX1NBTVBMRVJBVEU6DQorCQkJdGVtcCA9IDE2MDAwOw0KKwkJCXBEYXRhID0gKHZvaWQgKikoJnRlbXApOw0KKwkJCWJyZWFrOw0KKwkJLyogb3V0cHV0IGF1ZGlvIGZyYW1lIHR5cGUgKi8NCisJCWNhc2UgVk9fUElEX0FNUldCX0ZSQU1FVFlQRToNCisJCQl0ZW1wID0gZ0RhdGEtPmZyYW1lVHlwZTsNCisJCQlwRGF0YSA9ICh2b2lkICopKCZ0ZW1wKTsNCisJCQlicmVhazsNCisJCS8qIG91dHB1dCBhdWRpbyBiaXQgcmF0ZSAqLw0KKwkJY2FzZSBWT19QSURfQU1SV0JfTU9ERToNCisJCQl0ZW1wID0gZ0RhdGEtPm1vZGU7DQorCQkJcERhdGEgPSAodm9pZCAqKSgmdGVtcCk7DQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0KKwkJCXJldHVybiBWT19FUlJfV1JPTkdfUEFSQU1fSUQ7DQorCX0NCisNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBCcmllZjogQ29kZWMgQVBJIGZ1bmN0aW9uLS0tUmVsZWFzZSB0aGUgY29kZWMgYWZ0ZXIgYWxsIGVuY29kZXIgb3BlcmF0aW9ucyBhcmUgZG9uZQ0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK1ZPX1UzMiBWT19BUEkgdm9BTVJXQl9VbmluaXQoVk9fSEFORExFIGhDb2RlYyAgICAgICAgICAgLyogaS9vOiBDb2RlYyBoYW5kbGUgcG9pbnRlciAqLw0KKwkJCQkJCQkgKQ0KK3sNCisJQ29kZXJfU3RhdGUqIGdEYXRhID0gKENvZGVyX1N0YXRlKiloQ29kZWM7DQorCVZPX01FTV9PUEVSQVRPUiAqcE1lbU9QOw0KKwlwTWVtT1AgPSBnRGF0YS0+cHZvTWVtb3A7DQorDQorCWlmKGhDb2RlYykNCisJew0KKwkJaWYoZ0RhdGEtPnN0cmVhbSkNCisJCXsNCisJCQlpZihnRGF0YS0+c3RyZWFtLT5mcmFtZV9wdHJfYmspDQorCQkJew0KKwkJCQltZW1fZnJlZShwTWVtT1AsIGdEYXRhLT5zdHJlYW0tPmZyYW1lX3B0cl9iaywgVk9fSU5ERVhfRU5DX0FNUldCKTsNCisJCQkJZ0RhdGEtPnN0cmVhbS0+ZnJhbWVfcHRyX2JrID0gTlVMTDsNCisJCQl9DQorCQkJbWVtX2ZyZWUocE1lbU9QLCBnRGF0YS0+c3RyZWFtLCBWT19JTkRFWF9FTkNfQU1SV0IpOw0KKwkJCWdEYXRhLT5zdHJlYW0gPSBOVUxMOw0KKwkJfQ0KKwkJd2JfdmFkX2V4aXQoJigoKENvZGVyX1N0YXRlICopIGdEYXRhKS0+dmFkU3QpLCBwTWVtT1ApOw0KKwkJZHR4X2VuY19leGl0KCYoKChDb2Rlcl9TdGF0ZSAqKSBnRGF0YSktPmR0eF9lbmNTdCksIHBNZW1PUCk7DQorDQorCQltZW1fZnJlZShwTWVtT1AsIGhDb2RlYywgVk9fSU5ERVhfRU5DX0FNUldCKTsNCisJCWhDb2RlYyA9IE5VTEw7DQorCX0NCisNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBCcmllZjogdm9HZXRBTVJXQkVuY0FQSSBnZXRzIHRoZSBBUEkgaGFuZGxlIG9mIHRoZSBjb2RlYw0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitWT19TMzIgVk9fQVBJIHZvR2V0QU1SV0JFbmNBUEkoDQorCQkJCQkJCSAgIFZPX0FVRElPX0NPREVDQVBJICogcEVuY0hhbmRsZSAgICAgIC8qIGkvbzogQ29kZWMgaGFuZGxlIHBvaW50ZXIgKi8NCisJCQkJCQkJICAgKQ0KK3sNCisJaWYoTlVMTCA9PSBwRW5jSGFuZGxlKQ0KKwkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisJcEVuY0hhbmRsZS0+SW5pdCA9IHZvQU1SV0JfSW5pdDsNCisJcEVuY0hhbmRsZS0+U2V0SW5wdXREYXRhID0gdm9BTVJXQl9TZXRJbnB1dERhdGE7DQorCXBFbmNIYW5kbGUtPkdldE91dHB1dERhdGEgPSB2b0FNUldCX0dldE91dHB1dERhdGE7DQorCXBFbmNIYW5kbGUtPlNldFBhcmFtID0gdm9BTVJXQl9TZXRQYXJhbTsNCisJcEVuY0hhbmRsZS0+R2V0UGFyYW0gPSB2b0FNUldCX0dldFBhcmFtOw0KKwlwRW5jSGFuZGxlLT5VbmluaXQgPSB2b0FNUldCX1VuaW5pdDsNCisNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy92b2ljZWZhYy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy92b2ljZWZhYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4N2Q3NzQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3ZvaWNlZmFjLmMKQEAgLTAsMCArMSw5MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgRmlsZTogdm9pY2VmYWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgRGVzY3JpcHRpb246IEZpbmQgdGhlIHZvaWNpbmcgZmFjdG9ycyAoMSA9IHZvaWNlIHRvIC0xID0gdW52b2ljZWQpICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm1hdGhfb3AuaCINCisNCitXb3JkMTYgdm9pY2VfZmFjdG9yKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1ICAgOiBmYWN0b3IgKC0xPXVudm9pY2VkIHRvIDE9dm9pY2VkKSAqLw0KKwkJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUV9leGMgOiBwaXRjaCBleGNpdGF0aW9uICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IFFfZXhjLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgICAgOiBleGMgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGdhaW5fcGl0LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE0ICAgOiBnYWluIG9mIHBpdGNoICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGNvZGVbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTkgICAgOiBGaXhlZCBjb2RlYm9vayBleGNpdGF0aW9uICAgICAgICAqLw0KKwkJV29yZDE2IGdhaW5fY29kZSwgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgICAgOiBnYWluIG9mIGNvZGUgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgICAgOiBzdWJmcmFtZSBsZW5ndGggICAgICAgICAgICAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IHRtcCwgZXhwLCBlbmVyMSwgZXhwMSwgZW5lcjIsIGV4cDI7DQorCVdvcmQzMiBpLCBMX3RtcDsNCisNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCWVuZXIxID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTJfYXNtKGV4YywgZXhjLCBMX3N1YmZyLCAmZXhwMSkpOw0KKyNlbHNlDQorCWVuZXIxID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTIoZXhjLCBleGMsIExfc3ViZnIsICZleHAxKSk7DQorI2VuZGlmDQorCWV4cDEgPSBleHAxIC0gKFFfZXhjICsgUV9leGMpOw0KKwlMX3RtcCA9IHZvX0xfbXVsdChnYWluX3BpdCwgZ2Fpbl9waXQpOw0KKwlleHAgPSBub3JtX2woTF90bXApOw0KKwl0bXAgPSBleHRyYWN0X2goTF90bXAgPDwgZXhwKTsNCisJZW5lcjEgPSB2b19tdWx0KGVuZXIxLCB0bXApOw0KKwlleHAxID0gZXhwMSAtIGV4cCAtIDEwOyAgICAgICAgLyogMTAgLT4gZ2Fpbl9waXQgUTE0IHRvIFE5ICovDQorDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJZW5lcjIgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oY29kZSwgY29kZSwgTF9zdWJmciwgJmV4cDIpKTsNCisjZWxzZQ0KKwllbmVyMiA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyKGNvZGUsIGNvZGUsIExfc3ViZnIsICZleHAyKSk7DQorI2VuZGlmDQorDQorCWV4cCA9IG5vcm1fcyhnYWluX2NvZGUpOw0KKwl0bXAgPSBnYWluX2NvZGUgPDwgZXhwOw0KKwl0bXAgPSB2b19tdWx0KHRtcCwgdG1wKTsNCisJZW5lcjIgPSB2b19tdWx0KGVuZXIyLCB0bXApOw0KKwlleHAyID0gZXhwMiAtIChleHAgKyBleHApOw0KKw0KKwlpID0gZXhwMSAtIGV4cDI7DQorDQorCWlmIChpID49IDApDQorCXsNCisJCWVuZXIxID0gZW5lcjEgPj4gMTsNCisJCWVuZXIyID0gZW5lcjIgPj4gKGkgKyAxKTsNCisJfSBlbHNlDQorCXsNCisJCWVuZXIxID0gZW5lcjEgPj4gKDEgLSBpKTsNCisJCWVuZXIyID0gZW5lcjIgPj4gMTsNCisJfQ0KKw0KKwl0bXAgPSB2b19zdWIoZW5lcjEsIGVuZXIyKTsNCisJZW5lcjEgPSBhZGQxKGFkZDEoZW5lcjEsIGVuZXIyKSwgMSk7DQorDQorCWlmICh0bXAgPj0gMCkNCisJew0KKwkJdG1wID0gZGl2X3ModG1wLCBlbmVyMSk7DQorCX0gZWxzZQ0KKwl7DQorCQl0bXAgPSB2b19uZWdhdGUoZGl2X3Modm9fbmVnYXRlKHRtcCksIGVuZXIxKSk7DQorCX0NCisNCisJcmV0dXJuICh0bXApOw0KK30NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3diX3ZhZC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy93Yl92YWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTI2ODUzCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy93Yl92YWQuYwpAQCAtMCwwICsxLDgwOCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogd2JfdmFkLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246IFZvaWNlIEFjdGl2aXR5IERldGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlICJjbnN0LmgiDQorI2luY2x1ZGUgIndiX3ZhZC5oIg0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm1hdGhfb3AuaCINCisjaW5jbHVkZSAid2JfdmFkX2MuaCINCisjaW5jbHVkZSAibWVtX2FsaWduLmgiDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogIENhbGN1bGF0ZSBMb2cyIGFuZCBzY2FsZSB0aGUgc2lnbmFsOg0KKyoNCisqICAgIGlsb2cyKFdvcmQzMiBpbikgPSAtMTAyNCpsb2cxMChpbiAqIDJeLTMxKS9sb2cxMCgyKSwgd2hlcmUgaW4gPSBbMSwgMl4zMS0xXQ0KKyoNCisqICBpbnB1dCAgIG91dHB1dA0KKyogIDMyNzY4ICAgMTYzODQNCisqICAxICAgICAgIDMxNzQ0DQorKg0KKyogV2hlbiBpbnB1dCBpcyBpbiB0aGUgcmFuZ2Ugb2YgWzEsMl4xNl0sIG1heCBlcnJvciBpcyAwLjAzODAlLg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgV29yZDE2IGlsb2cyKCAgICAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuOiBvdXRwdXQgdmFsdWUgb2YgdGhlIGxvZzIgKi8NCisJCVdvcmQxNiBtYW50ICAgICAgICAgICAgICAgICAgICAgICAgLyogaTogdmFsdWUgdG8gYmUgY29udmVydGVkICovDQorCQkpDQorew0KKwlXb3JkMTYgZXgsIGV4MiwgcmVzOw0KKwlXb3JkMzIgaSwgbF90ZW1wOw0KKw0KKwlpZiAobWFudCA8PSAwKQ0KKwl7DQorCQltYW50ID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgDQorCX0NCisJZXggPSBub3JtX3MobWFudCk7DQorCW1hbnQgPSBtYW50IDw8IGV4Ow0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQ0KKwkJbWFudCA9IHZvX211bHQobWFudCwgbWFudCk7DQorCWxfdGVtcCA9IHZvX0xfbXVsdChtYW50LCBtYW50KTsNCisNCisJZXgyID0gbm9ybV9sKGxfdGVtcCk7DQorCW1hbnQgPSBleHRyYWN0X2gobF90ZW1wIDw8IGV4Mik7DQorDQorCXJlcyA9IChleCArIDE2KSA8PCAxMDsNCisJcmVzID0gYWRkMShyZXMsIChleDIgPDwgNikpOw0KKwlyZXMgPSB2b19zdWIoYWRkMShyZXMsIDEyNyksIChtYW50ID4+IDgpKTsNCisJcmV0dXJuIChyZXMpOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgICA6IGZpbHRlcjUNCisqICAgICBQdXJwb3NlICAgICAgOiBGaWZ0aC1vcmRlciBoYWxmLWJhbmQgbG93cGFzcy9oaWdocGFzcyBmaWx0ZXIgcGFpciB3aXRoDQorKiAgICAgICAgICAgICAgICAgICAgZGVjaW1hdGlvbi4NCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgdm9pZCBmaWx0ZXI1KA0KKwkJV29yZDE2ICogaW4wLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBpbnB1dCB2YWx1ZXM7IG91dHB1dCBsb3ctcGFzcyBwYXJ0ICAqLw0KKwkJV29yZDE2ICogaW4xLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBpbnB1dCB2YWx1ZXM7IG91dHB1dCBoaWdoLXBhc3MgcGFydCAqLw0KKwkJV29yZDE2IGRhdGFbXSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBmaWx0ZXIgbWVtb3J5ICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IHRlbXAwLCB0ZW1wMSwgdGVtcDI7DQorDQorCXRlbXAwID0gdm9fc3ViKCppbjAsIHZvX211bHQoQ09FRkY1XzEsIGRhdGFbMF0pKTsNCisJdGVtcDEgPSBhZGQxKGRhdGFbMF0sIHZvX211bHQoQ09FRkY1XzEsIHRlbXAwKSk7DQorCWRhdGFbMF0gPSB0ZW1wMDsgICAgICAgICAgICAgICAgICAgICAgDQorDQorCXRlbXAwID0gdm9fc3ViKCppbjEsIHZvX211bHQoQ09FRkY1XzIsIGRhdGFbMV0pKTsNCisJdGVtcDIgPSBhZGQxKGRhdGFbMV0sIHZvX211bHQoQ09FRkY1XzIsIHRlbXAwKSk7DQorCWRhdGFbMV0gPSB0ZW1wMDsgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwkqaW4wID0gZXh0cmFjdF9oKCh2b19MX2FkZCh0ZW1wMSwgdGVtcDIpIDw8IDE1KSk7ICAgDQorCSppbjEgPSBleHRyYWN0X2goKHZvX0xfc3ViKHRlbXAxLCB0ZW1wMikgPDwgMTUpKTsgIA0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgICA6IGZpbHRlcjMNCisqICAgICBQdXJwb3NlICAgICAgOiBUaGlyZC1vcmRlciBoYWxmLWJhbmQgbG93cGFzcy9oaWdocGFzcyBmaWx0ZXIgcGFpciB3aXRoDQorKiAgICAgICAgICAgICAgICAgICAgZGVjaW1hdGlvbi4NCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgdm9pZCBmaWx0ZXIzKA0KKwkJV29yZDE2ICogaW4wLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBpbnB1dCB2YWx1ZXM7IG91dHB1dCBsb3ctcGFzcyBwYXJ0ICAqLw0KKwkJV29yZDE2ICogaW4xLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBpbnB1dCB2YWx1ZXM7IG91dHB1dCBoaWdoLXBhc3MgcGFydCAqLw0KKwkJV29yZDE2ICogZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBmaWx0ZXIgbWVtb3J5ICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IHRlbXAxLCB0ZW1wMjsNCisNCisJdGVtcDEgPSB2b19zdWIoKmluMSwgdm9fbXVsdChDT0VGRjMsICpkYXRhKSk7DQorCXRlbXAyID0gYWRkMSgqZGF0YSwgdm9fbXVsdChDT0VGRjMsIHRlbXAxKSk7DQorCSpkYXRhID0gdGVtcDE7ICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCSppbjEgPSBleHRyYWN0X2goKHZvX0xfc3ViKCppbjAsIHRlbXAyKSA8PCAxNSkpOyAgIA0KKwkqaW4wID0gZXh0cmFjdF9oKCh2b19MX2FkZCgqaW4wLCB0ZW1wMikgPDwgMTUpKTsgICANCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgICBGdW5jdGlvbiAgIDogbGV2ZWxfY2FsY3VsYXRpb24NCisqICAgICBQdXJwb3NlICAgIDogQ2FsY3VsYXRlIHNpZ25hbCBsZXZlbCBpbiBhIHN1Yi1iYW5kLiBMZXZlbCBpcyBjYWxjdWxhdGVkDQorKiAgICAgICAgICAgICAgICAgIGJ5IHN1bW1pbmcgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBpbnB1dCBkYXRhLg0KKyoNCisqICAgICAgICAgICAgICAgICAgU2lnbmFsIGxldmVsIGNhbGN1bGF0ZWQgZnJvbSBvZiB0aGUgZW5kIG9mIHRoZSBmcmFtZQ0KKyogICAgICAgICAgICAgICAgICAoZGF0YVtjb3VudDEgLSBjb3VudDJdKSBpcyBzdG9yZWQgdG8gKCpzdWJfbGV2ZWwpDQorKiAgICAgICAgICAgICAgICAgIGFuZCBhZGRlZCB0byB0aGUgbGV2ZWwgb2YgdGhlIG5leHQgZnJhbWUuDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgV29yZDE2IGxldmVsX2NhbGN1bGF0aW9uKCAgICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm46IHNpZ25hbCBsZXZlbCAqLw0KKwkJV29yZDE2IGRhdGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBzaWduYWwgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIHN1Yl9sZXZlbCwgICAgICAgICAgICAgICAgICAgLyogaSAgIDogbGV2ZWwgY2FsY3VsYXRlZCBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBmcmFtZSovDQorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG8gICA6IGxldmVsIG9mIHNpZ25hbCBjYWxjdWxhdGVkIGZyb20gdGhlIGxhc3QgICAgICAgICAqLw0KKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAoY291bnQyIC0gY291bnQxKSBzYW1wbGVzICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBjb3VudDEsICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogbnVtYmVyIG9mIHNhbXBsZXMgdG8gYmUgY291bnRlZCAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgY291bnQyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IG51bWJlciBvZiBzYW1wbGVzIHRvIGJlIGNvdW50ZWQgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGluZF9tLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBzdGVwIHNpemUgZm9yIHRoZSBpbmRleCBvZiB0aGUgZGF0YSBidWZmZXIgICAgICAgKi8NCisJCVdvcmQxNiBpbmRfYSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogc3RhcnRpbmcgaW5kZXggb2YgdGhlIGRhdGEgYnVmZmVyICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgc2NhbGUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHNjYWxpbmcgZm9yIHRoZSBsZXZlbCBjYWxjdWxhdGlvbiAgICAgICAgICAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDMyIGksIGxfdGVtcDEsIGxfdGVtcDI7DQorCVdvcmQxNiBsZXZlbDsNCisNCisJbF90ZW1wMSA9IDBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IGNvdW50MTsgaSA8IGNvdW50MjsgaSsrKQ0KKwl7DQorCQlsX3RlbXAxICs9IChhYnNfcyhkYXRhW2luZF9tICogaSArIGluZF9hXSk8PDEpOw0KKwl9DQorDQorCWxfdGVtcDIgPSB2b19MX2FkZChsX3RlbXAxLCBMX3NobCgqc3ViX2xldmVsLCAxNiAtIHNjYWxlKSk7DQorCSpzdWJfbGV2ZWwgPSBleHRyYWN0X2goTF9zaGwobF90ZW1wMSwgc2NhbGUpKTsgICAgICANCisNCisJZm9yIChpID0gMDsgaSA8IGNvdW50MTsgaSsrKQ0KKwl7DQorCQlsX3RlbXAyICs9IChhYnNfcyhkYXRhW2luZF9tICogaSArIGluZF9hXSk8PDEpOw0KKwl9DQorCWxldmVsID0gZXh0cmFjdF9oKExfc2hsMihsX3RlbXAyLCBzY2FsZSkpOw0KKw0KKwlyZXR1cm4gbGV2ZWw7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgRnVuY3Rpb24gICAgIDogZmlsdGVyX2JhbmsNCisqICAgICBQdXJwb3NlICAgICAgOiBEaXZpZGUgaW5wdXQgc2lnbmFsIGludG8gYmFuZHMgYW5kIGNhbGN1bGF0ZSBsZXZlbCBvZg0KKyogICAgICAgICAgICAgICAgICAgIHRoZSBzaWduYWwgaW4gZWFjaCBiYW5kDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorc3RhdGljIHZvaWQgZmlsdGVyX2JhbmsoDQorCQlWYWRWYXJzICogc3QsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdCAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaW5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IGlucHV0IGZyYW1lICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGV2ZWxbXSAgICAgICAgICAgICAgICAgICAgICAgIC8qIG8gICA6IHNpZ25hbCBsZXZlbHMgYXQgZWFjaCBiYW5kICovDQorCQkpDQorew0KKwlXb3JkMzIgaTsNCisJV29yZDE2IHRtcF9idWZbRlJBTUVfTEVOXTsNCisNCisJLyogc2hpZnQgaW5wdXQgMSBiaXQgZG93biBmb3Igc2FmZSBzY2FsaW5nICovDQorCWZvciAoaSA9IDA7IGkgPCBGUkFNRV9MRU47IGkrKykNCisJew0KKwkJdG1wX2J1ZltpXSA9IGluW2ldID4+IDE7ICAgICAgIA0KKwl9DQorDQorCS8qIHJ1biB0aGUgZmlsdGVyIGJhbmsgKi8NCisJZm9yIChpID0gMDsgaSA8IDEyODsgaSsrKQ0KKwl7DQorCQlmaWx0ZXI1KCZ0bXBfYnVmWzIgKiBpXSwgJnRtcF9idWZbMiAqIGkgKyAxXSwgc3QtPmFfZGF0YTVbMF0pOw0KKwl9DQorCWZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKQ0KKwl7DQorCQlmaWx0ZXI1KCZ0bXBfYnVmWzQgKiBpXSwgJnRtcF9idWZbNCAqIGkgKyAyXSwgc3QtPmFfZGF0YTVbMV0pOw0KKwkJZmlsdGVyNSgmdG1wX2J1Zls0ICogaSArIDFdLCAmdG1wX2J1Zls0ICogaSArIDNdLCBzdC0+YV9kYXRhNVsyXSk7DQorCX0NCisJZm9yIChpID0gMDsgaSA8IDMyOyBpKyspDQorCXsNCisJCWZpbHRlcjUoJnRtcF9idWZbOCAqIGldLCAmdG1wX2J1Zls4ICogaSArIDRdLCBzdC0+YV9kYXRhNVszXSk7DQorCQlmaWx0ZXI1KCZ0bXBfYnVmWzggKiBpICsgMl0sICZ0bXBfYnVmWzggKiBpICsgNl0sIHN0LT5hX2RhdGE1WzRdKTsNCisJCWZpbHRlcjMoJnRtcF9idWZbOCAqIGkgKyAzXSwgJnRtcF9idWZbOCAqIGkgKyA3XSwgJnN0LT5hX2RhdGEzWzBdKTsNCisJfQ0KKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykNCisJew0KKwkJZmlsdGVyMygmdG1wX2J1ZlsxNiAqIGkgKyAwXSwgJnRtcF9idWZbMTYgKiBpICsgOF0sICZzdC0+YV9kYXRhM1sxXSk7DQorCQlmaWx0ZXIzKCZ0bXBfYnVmWzE2ICogaSArIDRdLCAmdG1wX2J1ZlsxNiAqIGkgKyAxMl0sICZzdC0+YV9kYXRhM1syXSk7DQorCQlmaWx0ZXIzKCZ0bXBfYnVmWzE2ICogaSArIDZdLCAmdG1wX2J1ZlsxNiAqIGkgKyAxNF0sICZzdC0+YV9kYXRhM1szXSk7DQorCX0NCisNCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykNCisJew0KKwkJZmlsdGVyMygmdG1wX2J1ZlszMiAqIGkgKyAwXSwgJnRtcF9idWZbMzIgKiBpICsgMTZdLCAmc3QtPmFfZGF0YTNbNF0pOw0KKwkJZmlsdGVyMygmdG1wX2J1ZlszMiAqIGkgKyA4XSwgJnRtcF9idWZbMzIgKiBpICsgMjRdLCAmc3QtPmFfZGF0YTNbNV0pOw0KKwl9DQorDQorCS8qIGNhbGN1bGF0ZSBsZXZlbHMgaW4gZWFjaCBmcmVxdWVuY3kgYmFuZCAqLw0KKw0KKwkvKiA0ODAwIC0gNjQwMCBIeiAqLw0KKwlsZXZlbFsxMV0gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFsxMV0sIDE2LCA2NCwgNCwgMSwgMTQpOyAgIA0KKwkvKiA0MDAwIC0gNDgwMCBIeiAqLw0KKwlsZXZlbFsxMF0gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFsxMF0sIDgsIDMyLCA4LCA3LCAxNSk7ICAgDQorCS8qIDMyMDAgLSA0MDAwIEh6ICovDQorCWxldmVsWzldID0gbGV2ZWxfY2FsY3VsYXRpb24odG1wX2J1ZiwgJnN0LT5zdWJfbGV2ZWxbOV0sOCwgMzIsIDgsIDMsIDE1KTsgICANCisJLyogMjQwMCAtIDMyMDAgSHogKi8NCisJbGV2ZWxbOF0gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFs4XSw4LCAzMiwgOCwgMiwgMTUpOyAgIA0KKwkvKiAyMDAwIC0gMjQwMCBIeiAqLw0KKwlsZXZlbFs3XSA9IGxldmVsX2NhbGN1bGF0aW9uKHRtcF9idWYsICZzdC0+c3ViX2xldmVsWzddLDQsIDE2LCAxNiwgMTQsIDE2KTsgICAgICAgDQorCS8qIDE2MDAgLSAyMDAwIEh6ICovDQorCWxldmVsWzZdID0gbGV2ZWxfY2FsY3VsYXRpb24odG1wX2J1ZiwgJnN0LT5zdWJfbGV2ZWxbNl0sNCwgMTYsIDE2LCA2LCAxNik7ICAgICAgICANCisJLyogMTIwMCAtIDE2MDAgSHogKi8NCisJbGV2ZWxbNV0gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFs1XSw0LCAxNiwgMTYsIDQsIDE2KTsgICAgICAgIA0KKwkvKiA4MDAgLSAxMjAwIEh6ICovDQorCWxldmVsWzRdID0gbGV2ZWxfY2FsY3VsYXRpb24odG1wX2J1ZiwgJnN0LT5zdWJfbGV2ZWxbNF0sNCwgMTYsIDE2LCAxMiwgMTYpOyAgICAgICANCisJLyogNjAwIC0gODAwIEh6ICovDQorCWxldmVsWzNdID0gbGV2ZWxfY2FsY3VsYXRpb24odG1wX2J1ZiwgJnN0LT5zdWJfbGV2ZWxbM10sMiwgOCwgMzIsIDgsIDE3KTsgDQorCS8qIDQwMCAtIDYwMCBIeiAqLw0KKwlsZXZlbFsyXSA9IGxldmVsX2NhbGN1bGF0aW9uKHRtcF9idWYsICZzdC0+c3ViX2xldmVsWzJdLDIsIDgsIDMyLCAyNCwgMTcpOyAgICAgICAgDQorCS8qIDIwMCAtIDQwMCBIeiAqLw0KKwlsZXZlbFsxXSA9IGxldmVsX2NhbGN1bGF0aW9uKHRtcF9idWYsICZzdC0+c3ViX2xldmVsWzFdLDIsIDgsIDMyLCAxNiwgMTcpOyAgICAgICAgDQorCS8qIDAgLSAyMDAgSHogKi8NCisJbGV2ZWxbMF0gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFswXSwyLCA4LCAzMiwgMCwgMTcpOyANCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgICBGdW5jdGlvbiAgIDogdXBkYXRlX2NudHJsDQorKiAgICAgUHVycG9zZSAgICA6IENvbnRyb2wgdXBkYXRlIG9mIHRoZSBiYWNrZ3JvdW5kIG5vaXNlIGVzdGltYXRlLg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3N0YXRpYyB2b2lkIHVwZGF0ZV9jbnRybCgNCisJCVZhZFZhcnMgKiBzdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogU3RhdGUgc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxldmVsW10gICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBzdWItYmFuZCBsZXZlbHMgb2YgdGhlIGlucHV0IGZyYW1lICovDQorCQkpDQorew0KKwlXb3JkMzIgaTsNCisJV29yZDE2IG51bSwgdGVtcCwgc3RhdF9yYXQsIGV4cCwgZGVub207DQorCVdvcmQxNiBhbHBoYTsNCisNCisJLyogaWYgYSB0b25lIGhhcyBiZWVuIGRldGVjdGVkIGZvciBhIHdoaWxlLCBpbml0aWFsaXplIHN0YXRfY291bnQgKi8NCisJaWYgKHN1YigoV29yZDE2KSAoc3QtPnRvbmVfZmxhZyAmIDB4N2MwMCksIDB4N2MwMCkgPT0gMCkNCisJew0KKwkJc3QtPnN0YXRfY291bnQgPSBTVEFUX0NPVU5UOyAgICAgIA0KKwl9IGVsc2UNCisJew0KKwkJLyogaWYgOCBsYXN0IHZhZC1kZWNpc2lvbnMgaGF2ZSBiZWVuICIwIiwgcmVpbml0aWFsaXplIHN0YXRfY291bnQgKi8NCisJCWlmICgoc3QtPnZhZHJlZyAmIDB4N2Y4MCkgPT0gMCkNCisJCXsNCisJCQlzdC0+c3RhdF9jb3VudCA9IFNUQVRfQ09VTlQ7ICAgDQorCQl9IGVsc2UNCisJCXsNCisJCQlzdGF0X3JhdCA9IDA7ICAgICAgICAgICAgICAgICAgDQorCQkJZm9yIChpID0gMDsgaSA8IENPTVBMRU47IGkrKykNCisJCQl7DQorCQkJCWlmKGxldmVsW2ldID4gc3QtPmF2ZV9sZXZlbFtpXSkNCisJCQkJew0KKwkJCQkJbnVtID0gbGV2ZWxbaV07ICAgICAgICANCisJCQkJCWRlbm9tID0gc3QtPmF2ZV9sZXZlbFtpXTsgICANCisJCQkJfSBlbHNlDQorCQkJCXsNCisJCQkJCW51bSA9IHN0LT5hdmVfbGV2ZWxbaV07DQorCQkJCQlkZW5vbSA9IGxldmVsW2ldOyAgICAgIA0KKwkJCQl9DQorCQkJCS8qIExpbWl0IG5pbWltdW0gdmFsdWUgb2YgbnVtIGFuZCBkZW5vbSB0byBTVEFUX1RIUl9MRVZFTCAqLw0KKwkJCQlpZihudW0gPCBTVEFUX1RIUl9MRVZFTCkNCisJCQkJew0KKwkJCQkJbnVtID0gU1RBVF9USFJfTEVWRUw7ICANCisJCQkJfQ0KKwkJCQlpZihkZW5vbSA8IFNUQVRfVEhSX0xFVkVMKQ0KKwkJCQl7DQorCQkJCQlkZW5vbSA9IFNUQVRfVEhSX0xFVkVMOw0KKwkJCQl9DQorCQkJCWV4cCA9IG5vcm1fcyhkZW5vbSk7DQorCQkJCWRlbm9tID0gZGVub20gPDwgZXhwOw0KKw0KKwkJCQkvKiBzdGF0X3JhdCA9IG51bS9kZW5vbSAqIDY0ICovDQorCQkJCXRlbXAgPSBkaXZfcyhudW0gPj4gMSwgZGVub20pOw0KKwkJCQlzdGF0X3JhdCA9IGFkZDEoc3RhdF9yYXQsIHNocih0ZW1wLCAoOCAtIGV4cCkpKTsNCisJCQl9DQorDQorCQkJLyogY29tcGFyZSBzdGF0X3JhdCB3aXRoIGEgdGhyZXNob2xkIGFuZCB1cGRhdGUgc3RhdF9jb3VudCAqLw0KKwkJCWlmKHN0YXRfcmF0ID4gU1RBVF9USFIpDQorCQkJew0KKwkJCQlzdC0+c3RhdF9jb3VudCA9IFNUQVRfQ09VTlQ7ICAgIA0KKwkJCX0gZWxzZQ0KKwkJCXsNCisJCQkJaWYgKChzdC0+dmFkcmVnICYgMHg0MDAwKSAhPSAwKQ0KKwkJCQl7DQorDQorCQkJCQlpZiAoc3QtPnN0YXRfY291bnQgIT0gMCkNCisJCQkJCXsNCisJCQkJCQlzdC0+c3RhdF9jb3VudCA9IHN0LT5zdGF0X2NvdW50IC0gMTsgICAgICAgDQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0NCisNCisJLyogVXBkYXRlIGF2ZXJhZ2UgYW1wbGl0dWRlIGVzdGltYXRlIGZvciBzdGF0aW9uYXJpdHkgZXN0aW1hdGlvbiAqLw0KKwlhbHBoYSA9IEFMUEhBNDsgICAgICAgICAgICAgICAgICAgICAgICANCisJaWYoc3QtPnN0YXRfY291bnQgPT0gU1RBVF9DT1VOVCkNCisJew0KKwkJYWxwaGEgPSAzMjc2NzsgICAgICAgICAgICAgICAgICAgIA0KKwl9IGVsc2UgaWYgKChzdC0+dmFkcmVnICYgMHg0MDAwKSA9PSAwKQ0KKwl7DQorCQlhbHBoYSA9IEFMUEhBNTsgICAgICAgICAgICAgICAgICAgDQorCX0NCisJZm9yIChpID0gMDsgaSA8IENPTVBMRU47IGkrKykNCisJew0KKwkJc3QtPmF2ZV9sZXZlbFtpXSA9IGFkZDEoc3QtPmF2ZV9sZXZlbFtpXSwgdm9fbXVsdF9yKGFscGhhLCB2b19zdWIobGV2ZWxbaV0sIHN0LT5hdmVfbGV2ZWxbaV0pKSk7ICAgDQorCX0NCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgICBGdW5jdGlvbiAgICAgOiBoYW5nb3Zlcl9hZGRpdGlvbg0KKyogICAgIFB1cnBvc2UgICAgICA6IEFkZCBoYW5nb3ZlciBhZnRlciBzcGVlY2ggYnVyc3RzDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorc3RhdGljIFdvcmQxNiBoYW5nb3Zlcl9hZGRpdGlvbiggICAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuOiBWQURfZmxhZyBpbmRpY2F0aW5nIGZpbmFsIFZBRCBkZWNpc2lvbiAqLw0KKwkJVmFkVmFycyAqIHN0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxvd19wb3dlciwgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBmbGFnIHBvd2VyIG9mIHRoZSBpbnB1dCBmcmFtZSAgICAqLw0KKwkJV29yZDE2IGhhbmdfbGVuLCAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBoYW5nb3ZlciBsZW5ndGggKi8NCisJCVdvcmQxNiBidXJzdF9sZW4gICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogbWluaW11bSBidXJzdCBsZW5ndGggZm9yIGhhbmdvdmVyIGFkZGl0aW9uICovDQorCQkpDQorew0KKwkvKiBpZiB0aGUgaW5wdXQgcG93ZXIgKHBvd19zdW0pIGlzIGxvd2VyIHRoYW4gYSB0aHJlc2hvbGQsIGNsZWFyIGNvdW50ZXJzIGFuZCBzZXQgVkFEX2ZsYWcgdG8gIjAiICAgICAgICAgKi8NCisJaWYgKGxvd19wb3dlciAhPSAwKQ0KKwl7DQorCQlzdC0+YnVyc3RfY291bnQgPSAwOyAgICAgICAgICAgICAgIA0KKwkJc3QtPmhhbmdfY291bnQgPSAwOyAgICAgICAgICAgICAgICANCisJCXJldHVybiAwOw0KKwl9DQorCS8qIHVwZGF0ZSB0aGUgY291bnRlcnMgKGhhbmdfY291bnQsIGJ1cnN0X2NvdW50KSAqLw0KKwlpZiAoKHN0LT52YWRyZWcgJiAweDQwMDApICE9IDApDQorCXsNCisJCXN0LT5idXJzdF9jb3VudCA9IHN0LT5idXJzdF9jb3VudCArIDE7ICAgIA0KKwkJaWYoc3QtPmJ1cnN0X2NvdW50ID49IGJ1cnN0X2xlbikNCisJCXsNCisJCQlzdC0+aGFuZ19jb3VudCA9IGhhbmdfbGVuOyAgICAgDQorCQl9DQorCQlyZXR1cm4gMTsNCisJfSBlbHNlDQorCXsNCisJCXN0LT5idXJzdF9jb3VudCA9IDA7ICAgICAgICAgICAgICAgDQorCQlpZiAoc3QtPmhhbmdfY291bnQgPiAwKQ0KKwkJew0KKwkJCXN0LT5oYW5nX2NvdW50ID0gc3QtPmhhbmdfY291bnQgLSAxOyAgICANCisJCQlyZXR1cm4gMTsNCisJCX0NCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgICBGdW5jdGlvbiAgIDogbm9pc2VfZXN0aW1hdGVfdXBkYXRlDQorKiAgICAgUHVycG9zZSAgICA6IFVwZGF0ZSBvZiBiYWNrZ3JvdW5kIG5vaXNlIGVzdGltYXRlDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorc3RhdGljIHZvaWQgbm9pc2VfZXN0aW1hdGVfdXBkYXRlKA0KKwkJVmFkVmFycyAqIHN0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGV2ZWxbXSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHN1Yi1iYW5kIGxldmVscyBvZiB0aGUgaW5wdXQgZnJhbWUgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpOyANCisJV29yZDE2IGFscGhhX3VwLCBhbHBoYV9kb3duLCBiY2tyX2FkZCA9IDI7DQorDQorCS8qIENvbnRyb2wgdXBkYXRlIG9mIGJja3JfZXN0W10gKi8NCisJdXBkYXRlX2NudHJsKHN0LCBsZXZlbCk7DQorDQorCS8qIENob29zZSB1cGRhdGUgc3BlZWQgKi8NCisJaWYgKCgweDc4MDAgJiBzdC0+dmFkcmVnKSA9PSAwKQ0KKwl7DQorCQlhbHBoYV91cCA9IEFMUEhBX1VQMTsgICAgICAgICAgICAgIA0KKwkJYWxwaGFfZG93biA9IEFMUEhBX0RPV04xOyAgICAgICAgICANCisJfSBlbHNlDQorCXsNCisJCWlmICgoc3QtPnN0YXRfY291bnQgPT0gMCkpDQorCQl7DQorCQkJYWxwaGFfdXAgPSBBTFBIQV9VUDI7ICAgICAgICAgIA0KKwkJCWFscGhhX2Rvd24gPSBBTFBIQV9ET1dOMjsgICAgICANCisJCX0gZWxzZQ0KKwkJew0KKwkJCWFscGhhX3VwID0gMDsgICAgICAgICAgICAgICAgICANCisJCQlhbHBoYV9kb3duID0gQUxQSEEzOyAgICAgICAgICAgDQorCQkJYmNrcl9hZGQgPSAwOyAgICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCS8qIFVwZGF0ZSBub2lzZSBlc3RpbWF0ZSAoYmNrcl9lc3QpICovDQorCWZvciAoaSA9IDA7IGkgPCBDT01QTEVOOyBpKyspDQorCXsNCisJCVdvcmQxNiB0ZW1wOw0KKwkJdGVtcCA9IChzdC0+b2xkX2xldmVsW2ldIC0gc3QtPmJja3JfZXN0W2ldKTsNCisNCisJCWlmICh0ZW1wIDwgMCkNCisJCXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdXBkYXRlIGRvd253YXJkcyAqLw0KKwkJCXN0LT5iY2tyX2VzdFtpXSA9IGFkZDEoLTIsIGFkZChzdC0+YmNrcl9lc3RbaV0sdm9fbXVsdF9yKGFscGhhX2Rvd24sIHRlbXApKSk7IA0KKwkJCS8qIGxpbWl0IG1pbmltdW0gdmFsdWUgb2YgdGhlIG5vaXNlIGVzdGltYXRlIHRvIE5PSVNFX01JTiAqLw0KKwkJCWlmKHN0LT5iY2tyX2VzdFtpXSA8IE5PSVNFX01JTikNCisJCQl7DQorCQkJCXN0LT5iY2tyX2VzdFtpXSA9IE5PSVNFX01JTjsgICANCisJCQl9DQorCQl9IGVsc2UNCisJCXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdXBkYXRlIHVwd2FyZHMgKi8NCisJCQlzdC0+YmNrcl9lc3RbaV0gPSBhZGQxKGJja3JfYWRkLCBhZGQxKHN0LT5iY2tyX2VzdFtpXSx2b19tdWx0X3IoYWxwaGFfdXAsIHRlbXApKSk7ICAgDQorDQorCQkJLyogbGltaXQgbWF4aW11bSB2YWx1ZSBvZiB0aGUgbm9pc2UgZXN0aW1hdGUgdG8gTk9JU0VfTUFYICovDQorCQkJaWYoc3QtPmJja3JfZXN0W2ldID4gTk9JU0VfTUFYKQ0KKwkJCXsNCisJCQkJc3QtPmJja3JfZXN0W2ldID0gTk9JU0VfTUFYOyAgICANCisJCQl9DQorCQl9DQorCX0NCisNCisJLyogVXBkYXRlIHNpZ25hbCBsZXZlbHMgb2YgdGhlIHByZXZpb3VzIGZyYW1lIChvbGRfbGV2ZWwpICovDQorCWZvciAoaSA9IDA7IGkgPCBDT01QTEVOOyBpKyspDQorCXsNCisJCXN0LT5vbGRfbGV2ZWxbaV0gPSBsZXZlbFtpXTsgICAgICANCisJfQ0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgICA6IHZhZF9kZWNpc2lvbg0KKyogICAgIFB1cnBvc2UgICAgICA6IENhbGN1bGF0ZXMgVkFEX2ZsYWcNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgV29yZDE2IHZhZF9kZWNpc2lvbiggICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm4gdmFsdWUgOiBWQURfZmxhZyAqLw0KKwkJVmFkVmFycyAqIHN0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGV2ZWxbQ09NUExFTl0sICAgICAgICAgICAgICAgIC8qIGkgICA6IHN1Yi1iYW5kIGxldmVscyBvZiB0aGUgaW5wdXQgZnJhbWUgKi8NCisJCVdvcmQzMiBwb3dfc3VtICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogcG93ZXIgb2YgdGhlIGlucHV0IGZyYW1lICAgICAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDMyIGk7DQorCVdvcmQzMiBMX3Nucl9zdW07DQorCVdvcmQzMiBMX3RlbXA7DQorCVdvcmQxNiB2YWRfdGhyLCB0ZW1wLCBub2lzZV9sZXZlbDsNCisJV29yZDE2IGxvd19wb3dlcl9mbGFnOw0KKwlXb3JkMTYgaGFuZ19sZW4sIGJ1cnN0X2xlbjsNCisJV29yZDE2IGlsb2cyX3NwZWVjaF9sZXZlbCwgaWxvZzJfbm9pc2VfbGV2ZWw7DQorCVdvcmQxNiB0ZW1wMjsNCisNCisJLyogQ2FsY3VsYXRlIHNxdWFyZWQgc3VtIG9mIHRoZSBpbnB1dCBsZXZlbHMgKGxldmVsKSBkaXZpZGVkIGJ5IHRoZSBiYWNrZ3JvdW5kIG5vaXNlIGNvbXBvbmVudHMNCisJICogKGJja3JfZXN0KS4gKi8NCisJTF9zbnJfc3VtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IENPTVBMRU47IGkrKykNCisJew0KKwkJV29yZDE2IGV4cDsNCisNCisJCWV4cCA9IG5vcm1fcyhzdC0+YmNrcl9lc3RbaV0pOw0KKwkJdGVtcCA9IChzdC0+YmNrcl9lc3RbaV0gPDwgZXhwKTsNCisJCXRlbXAgPSBkaXZfcygobGV2ZWxbaV0gPj4gMSksIHRlbXApOw0KKwkJdGVtcCA9IHNobCh0ZW1wLCAoZXhwIC0gKFVOSVJTSEZUIC0gMSkpKTsNCisJCUxfc25yX3N1bSA9IExfbWFjKExfc25yX3N1bSwgdGVtcCwgdGVtcCk7DQorCX0NCisNCisJLyogQ2FsY3VsYXRlIGF2ZXJhZ2UgbGV2ZWwgb2YgZXN0aW1hdGVkIGJhY2tncm91bmQgbm9pc2UgKi8NCisJTF90ZW1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMTsgaSA8IENPTVBMRU47IGkrKykgICAgICAgICAgLyogaWdub3JlIGxvd2VzdCBiYW5kICovDQorCXsNCisJCUxfdGVtcCA9IHZvX0xfYWRkKExfdGVtcCwgc3QtPmJja3JfZXN0W2ldKTsNCisJfQ0KKw0KKwlub2lzZV9sZXZlbCA9IGV4dHJhY3RfaCgoTF90ZW1wIDw8IDEyKSk7DQorCS8qIGlmIFNOUiBpcyBsb3dlciB0aGFuIGEgdGhyZXNob2xkIChNSU5fU1BFRUNIX1NOUiksIGFuZCBpbmNyZWFzZSBzcGVlY2hfbGV2ZWwgKi8NCisJdGVtcCA9IHZvX211bHQobm9pc2VfbGV2ZWwsIE1JTl9TUEVFQ0hfU05SKSA8PCAzOw0KKw0KKwlpZihzdC0+c3BlZWNoX2xldmVsIDwgdGVtcCkNCisJew0KKwkJc3QtPnNwZWVjaF9sZXZlbCA9IHRlbXA7ICAgICAgICAgIA0KKwl9DQorCWlsb2cyX25vaXNlX2xldmVsID0gaWxvZzIobm9pc2VfbGV2ZWwpOw0KKw0KKwkvKiBJZiBTTlIgaXMgdmVyeSBwb29yLCBzcGVlY2hfbGV2ZWwgaXMgcHJvYmFibHkgY29ycnVwdGVkIGJ5IG5vaXNlIGxldmVsLiBUaGlzIGlzIGNvcnJlY3RyZWQgYnkNCisJICogc3VidHJhY3RpbmcgTUlOX1NQRUVDSF9TTlIqbm9pc2VfbGV2ZWwgZnJvbSBzcGVlY2ggbGV2ZWwgKi8NCisJaWxvZzJfc3BlZWNoX2xldmVsID0gaWxvZzIoc3QtPnNwZWVjaF9sZXZlbCAtIHRlbXApOw0KKw0KKwl0ZW1wID0gYWRkMSh2b19tdWx0KE5PX1NMT1BFLCAoaWxvZzJfbm9pc2VfbGV2ZWwgLSBOT19QMSkpLCBUSFJfSElHSCk7DQorDQorCXRlbXAyID0gYWRkMShTUF9DSF9NSU4sIHZvX211bHQoU1BfU0xPUEUsIChpbG9nMl9zcGVlY2hfbGV2ZWwgLSBTUF9QMSkpKTsNCisJaWYgKHRlbXAyIDwgU1BfQ0hfTUlOKQ0KKwl7DQorCQl0ZW1wMiA9IFNQX0NIX01JTjsgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh0ZW1wMiA+IFNQX0NIX01BWCkNCisJew0KKwkJdGVtcDIgPSBTUF9DSF9NQVg7ICAgICAgICAgICAgICAgICANCisJfQ0KKwl2YWRfdGhyID0gdGVtcCArIHRlbXAyOw0KKw0KKwlpZih2YWRfdGhyIDwgVEhSX01JTikNCisJew0KKwkJdmFkX3RociA9IFRIUl9NSU47ICAgICAgICAgICAgICAgICANCisJfQ0KKwkvKiBTaGlmdCBWQUQgZGVjaXNpb24gcmVnaXN0ZXIgKi8NCisJc3QtPnZhZHJlZyA9IChzdC0+dmFkcmVnID4+IDEpOyAgICAgICANCisNCisJLyogTWFrZSBpbnRlcm1lZGlhdGUgVkFEIGRlY2lzaW9uICovDQorCWlmKExfc25yX3N1bSA+IHZvX0xfbXVsdCh2YWRfdGhyLCAoNTEyICogQ09NUExFTikpKQ0KKwl7DQorCQlzdC0+dmFkcmVnID0gKFdvcmQxNikgKHN0LT52YWRyZWcgfCAweDQwMDApOyANCisJfQ0KKwkvKiBjaGVjayBpZiB0aGUgaW5wdXQgcG93ZXIgKHBvd19zdW0pIGlzIGxvd2VyIHRoYW4gYSB0aHJlc2hvbGQiICovDQorCWlmKHBvd19zdW0gPCBWQURfUE9XX0xPVykNCisJew0KKwkJbG93X3Bvd2VyX2ZsYWcgPSAxOyAgICAgICAgICAgICAgIA0KKwl9IGVsc2UNCisJew0KKwkJbG93X3Bvd2VyX2ZsYWcgPSAwOyAgICAgICAgICAgICAgIA0KKwl9DQorCS8qIFVwZGF0ZSBiYWNrZ3JvdW5kIG5vaXNlIGVzdGltYXRlcyAqLw0KKwlub2lzZV9lc3RpbWF0ZV91cGRhdGUoc3QsIGxldmVsKTsNCisNCisJLyogQ2FsY3VsYXRlIHZhbHVlcyBmb3IgaGFuZ19sZW4gYW5kIGJ1cnN0X2xlbiBiYXNlZCBvbiB2YWRfdGhyICovDQorCWhhbmdfbGVuID0gYWRkMSh2b19tdWx0KEhBTkdfU0xPUEUsICh2YWRfdGhyIC0gSEFOR19QMSkpLCBIQU5HX0hJR0gpOw0KKwlpZihoYW5nX2xlbiA8IEhBTkdfTE9XKQ0KKwl7DQorCQloYW5nX2xlbiA9IEhBTkdfTE9XOyAgICAgICAgICAgICAgDQorCX0NCisJYnVyc3RfbGVuID0gYWRkMSh2b19tdWx0KEJVUlNUX1NMT1BFLCAodmFkX3RociAtIEJVUlNUX1AxKSksIEJVUlNUX0hJR0gpOw0KKw0KKwlyZXR1cm4gKGhhbmdvdmVyX2FkZGl0aW9uKHN0LCBsb3dfcG93ZXJfZmxhZywgaGFuZ19sZW4sIGJ1cnN0X2xlbikpOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uIDogRXN0aW1hdGVfU3BlZWNoKCkNCisqICAgICBQdXJwb3NlICA6IEVzdGltYXRlIHNwZWVjaCBsZXZlbA0KKyoNCisqIE1heGltdW0gc2lnbmFsIGxldmVsIGlzIHNlYXJjaGVkIGFuZCBzdG9yZWQgdG8gdGhlIHZhcmlhYmxlIHNwX21heC4NCisqIFRoZSBzcGVlY2ggZnJhbWVzIG11c3QgbG9jYXRlIHdpdGhpbiBTUF9FU1RfQ09VTlQgbnVtYmVyIG9mIGZyYW1lcy4NCisqIFRodXMsIG5vaXN5IGZyYW1lcyBoYXZpbmcgb2NjYXNpb25hbCBWQUQgPSAiMSIgZGVjaXNpb25zIHdpbGwgbm90DQorKiBhZmZlY3QgdG8gdGhlIGVzdGltYXRlZCBzcGVlY2hfbGV2ZWwuDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorc3RhdGljIHZvaWQgRXN0aW1hdGVfU3BlZWNoKA0KKwkJVmFkVmFycyAqIHN0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3R1cmUgICAgKi8NCisJCVdvcmQxNiBpbl9sZXZlbCAgICAgICAgICAgICAgICAgICAgICAgLyogbGV2ZWwgb2YgdGhlIGlucHV0IGZyYW1lICovDQorCQkpDQorew0KKwlXb3JkMTYgYWxwaGE7DQorDQorCS8qIGlmIHRoZSByZXF1aXJlZCBhY3Rpdml0eSBjb3VudCBjYW5ub3QgYmUgYWNoaWV2ZWQsIHJlc2V0IGNvdW50ZXJzICovDQorCWlmKChzdC0+c3BfZXN0X2NudCAtIHN0LT5zcF9tYXhfY250KSA+IChTUF9FU1RfQ09VTlQgLSBTUF9BQ1RJVklUWV9DT1VOVCkpDQorCXsNCisJCXN0LT5zcF9lc3RfY250ID0gMDsgICAgICAgICAgICAgICAgDQorCQlzdC0+c3BfbWF4ID0gMDsgICAgICAgICAgICAgICAgICAgIA0KKwkJc3QtPnNwX21heF9jbnQgPSAwOyAgICAgICAgICAgICAgICANCisJfQ0KKwlzdC0+c3BfZXN0X2NudCArPSAxOyANCisNCisJaWYgKCgoc3QtPnZhZHJlZyAmIDB4NDAwMCl8fChpbl9sZXZlbCA+IHN0LT5zcGVlY2hfbGV2ZWwpKSAmJiAoaW5fbGV2ZWwgPiBNSU5fU1BFRUNIX0xFVkVMMSkpDQorCXsNCisJCS8qIHVwZGF0ZSBzcF9tYXggKi8NCisJCWlmKGluX2xldmVsID4gc3QtPnNwX21heCkNCisJCXsNCisJCQlzdC0+c3BfbWF4ID0gaW5fbGV2ZWw7ICAgICAgICAgDQorCQl9DQorCQlzdC0+c3BfbWF4X2NudCArPSAxOyAgICAgICAgDQorDQorCQlpZihzdC0+c3BfbWF4X2NudCA+PSBTUF9BQ1RJVklUWV9DT1VOVCkNCisJCXsNCisJCQlXb3JkMTYgdG1wOw0KKwkJCS8qIHVwZGF0ZSBzcGVlY2ggZXN0aW1hdGUgKi8NCisJCQl0bXAgPSAoc3QtPnNwX21heCA+PiAxKTsgICAgICAvKiBzY2FsZSB0byBnZXQgImF2ZXJhZ2UiIHNwZWVjaCBsZXZlbCAqLw0KKw0KKwkJCS8qIHNlbGVjdCB1cGRhdGUgc3BlZWQgKi8NCisJCQlpZih0bXAgPiBzdC0+c3BlZWNoX2xldmVsKQ0KKwkJCXsNCisJCQkJYWxwaGEgPSBBTFBIQV9TUF9VUDsgICAgICAgDQorCQkJfSBlbHNlDQorCQkJew0KKwkJCQlhbHBoYSA9IEFMUEhBX1NQX0RPV047ICAgIA0KKwkJCX0NCisJCQlpZih0bXAgPiBNSU5fU1BFRUNIX0xFVkVMMikNCisJCQl7DQorCQkJCXN0LT5zcGVlY2hfbGV2ZWwgPSBhZGQxKHN0LT5zcGVlY2hfbGV2ZWwsIHZvX211bHRfcihhbHBoYSwgdm9fc3ViKHRtcCwgc3QtPnNwZWVjaF9sZXZlbCkpKTsgDQorCQkJfQ0KKwkJCS8qIGNsZWFyIGFsbCBjb3VudGVycyB1c2VkIGZvciBzcGVlY2ggZXN0aW1hdGlvbiAqLw0KKwkJCXN0LT5zcF9tYXggPSAwOyAgICAgICAgICAgICAgICANCisJCQlzdC0+c3BfbWF4X2NudCA9IDA7ICAgICAgICAgICAgDQorCQkJc3QtPnNwX2VzdF9jbnQgPSAwOyAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgRnVuY3Rpb246ICAgd2JfdmFkX2luaXQNCisqICBQdXJwb3NlOiAgICBBbGxvY2F0ZXMgc3RhdGUgbWVtb3J5IGFuZCBpbml0aWFsaXplcyBzdGF0ZSBtZW1vcnkNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitXb3JkMTYgd2JfdmFkX2luaXQoICAgICAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuOiBub24temVybyB3aXRoIGVycm9yLCB6ZXJvIGZvciBvay4gKi8NCisJCVZhZFZhcnMgKiogc3RhdGUsICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogU3RhdGUgc3RydWN0dXJlICAgICovDQorCQlWT19NRU1fT1BFUkFUT1IgKnBNZW1PUA0KKwkJKQ0KK3sNCisJVmFkVmFycyAqczsNCisNCisJaWYgKHN0YXRlID09IChWYWRWYXJzICoqKSBOVUxMKQ0KKwl7DQorCQlmcHJpbnRmKHN0ZGVyciwgInZhZF9pbml0OiBpbnZhbGlkIHBhcmFtZXRlclxuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisJKnN0YXRlID0gTlVMTDsNCisNCisJLyogYWxsb2NhdGUgbWVtb3J5ICovDQorCWlmICgocyA9IChWYWRWYXJzICopIG1lbV9tYWxsb2MocE1lbU9QLCBzaXplb2YoVmFkVmFycyksIDMyLCBWT19JTkRFWF9FTkNfQU1SV0IpKSA9PSBOVUxMKQ0KKwl7DQorCQlmcHJpbnRmKHN0ZGVyciwgInZhZF9pbml0OiBjYW4gbm90IG1hbGxvYyBzdGF0ZSBzdHJ1Y3R1cmVcbiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQorCXdiX3ZhZF9yZXNldChzKTsNCisNCisJKnN0YXRlID0gczsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgRnVuY3Rpb246ICAgd2JfdmFkX3Jlc2V0DQorKiAgUHVycG9zZTogICAgSW5pdGlhbGl6ZXMgc3RhdGUgbWVtb3J5DQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorV29yZDE2IHdiX3ZhZF9yZXNldCggICAgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybjogbm9uLXplcm8gd2l0aCBlcnJvciwgemVybyBmb3Igb2suICovDQorCQlWYWRWYXJzICogc3RhdGUgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdHVyZSAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDMyIGksIGo7DQorDQorCWlmIChzdGF0ZSA9PSAoVmFkVmFycyAqKSBOVUxMKQ0KKwl7DQorCQlmcHJpbnRmKHN0ZGVyciwgInZhZF9yZXNldDogaW52YWxpZCBwYXJhbWV0ZXJcbiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQorCXN0YXRlLT50b25lX2ZsYWcgPSAwOw0KKwlzdGF0ZS0+dmFkcmVnID0gMDsNCisJc3RhdGUtPmhhbmdfY291bnQgPSAwOw0KKwlzdGF0ZS0+YnVyc3RfY291bnQgPSAwOw0KKwlzdGF0ZS0+aGFuZ19jb3VudCA9IDA7DQorDQorCS8qIGluaXRpYWxpemUgbWVtb3J5IHVzZWQgYnkgdGhlIGZpbHRlciBiYW5rICovDQorCWZvciAoaSA9IDA7IGkgPCBGXzVUSF9DTlQ7IGkrKykNCisJew0KKwkJZm9yIChqID0gMDsgaiA8IDI7IGorKykNCisJCXsNCisJCQlzdGF0ZS0+YV9kYXRhNVtpXVtqXSA9IDA7DQorCQl9DQorCX0NCisNCisJZm9yIChpID0gMDsgaSA8IEZfM1RIX0NOVDsgaSsrKQ0KKwl7DQorCQlzdGF0ZS0+YV9kYXRhM1tpXSA9IDA7DQorCX0NCisNCisJLyogaW5pdGlhbGl6ZSB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5ICovDQorCWZvciAoaSA9IDA7IGkgPCBDT01QTEVOOyBpKyspDQorCXsNCisJCXN0YXRlLT5iY2tyX2VzdFtpXSA9IE5PSVNFX0lOSVQ7DQorCQlzdGF0ZS0+b2xkX2xldmVsW2ldID0gTk9JU0VfSU5JVDsNCisJCXN0YXRlLT5hdmVfbGV2ZWxbaV0gPSBOT0lTRV9JTklUOw0KKwkJc3RhdGUtPnN1Yl9sZXZlbFtpXSA9IDA7DQorCX0NCisNCisJc3RhdGUtPnNwX2VzdF9jbnQgPSAwOw0KKwlzdGF0ZS0+c3BfbWF4ID0gMDsNCisJc3RhdGUtPnNwX21heF9jbnQgPSAwOw0KKwlzdGF0ZS0+c3BlZWNoX2xldmVsID0gU1BFRUNIX0xFVkVMX0lOSVQ7DQorCXN0YXRlLT5wcmV2X3Bvd19zdW0gPSAwOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICBGdW5jdGlvbjogICB3Yl92YWRfZXhpdA0KKyogIFB1cnBvc2U6ICAgIFRoZSBtZW1vcnkgdXNlZCBmb3Igc3RhdGUgbWVtb3J5IGlzIGZyZWVkDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCB3Yl92YWRfZXhpdCgNCisJCVZhZFZhcnMgKiogc3RhdGUsICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdHVyZSAgICAqLw0KKwkJVk9fTUVNX09QRVJBVE9SICpwTWVtT1ANCisJCSkNCit7DQorCWlmIChzdGF0ZSA9PSBOVUxMIHx8ICpzdGF0ZSA9PSBOVUxMKQ0KKwkJcmV0dXJuOw0KKwkvKiBkZWFsbG9jYXRlIG1lbW9yeSAqLw0KKwltZW1fZnJlZShwTWVtT1AsICpzdGF0ZSwgVk9fSU5ERVhfRU5DX0FNUldCKTsNCisJKnN0YXRlID0gTlVMTDsNCisJcmV0dXJuOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgICA6IHdiX3ZhZF90b25lX2RldGVjdGlvbg0KKyogICAgIFB1cnBvc2UgICAgICA6IFNlYXJjaCBtYXhpbXVtIHBpdGNoIGdhaW4gZnJvbSBhIGZyYW1lLiBTZXQgdG9uZSBmbGFnIGlmDQorKiAgICAgICAgICAgICAgICAgICAgcGl0Y2ggZ2FpbiBpcyBoaWdoLiBUaGlzIGlzIHVzZWQgdG8gZGV0ZWN0DQorKiAgICAgICAgICAgICAgICAgICAgc2lnbmFsaW5nIHRvbmVzIGFuZCBvdGhlciBzaWduYWxzIHdpdGggaGlnaCBwaXRjaCBnYWluLg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3ZvaWQgd2JfdmFkX3RvbmVfZGV0ZWN0aW9uKA0KKwkJVmFkVmFycyAqIHN0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3QgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHBfZ2FpbiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwaXRjaCBnYWluICAgICAgKi8NCisJCSkNCit7DQorCS8qIHVwZGF0ZSB0b25lIGZsYWcgKi8NCisJc3QtPnRvbmVfZmxhZyA9IChzdC0+dG9uZV9mbGFnID4+IDEpOw0KKw0KKwkvKiBpZiAocGl0Y2hfZ2FpbiA+IFRPTkVfVEhSKSBzZXQgdG9uZSBmbGFnICovDQorCWlmIChwX2dhaW4gPiBUT05FX1RIUikNCisJew0KKwkJc3QtPnRvbmVfZmxhZyA9IChXb3JkMTYpIChzdC0+dG9uZV9mbGFnIHwgMHg0MDAwKTsNCisJfQ0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgICA6IHdiX3ZhZA0KKyogICAgIFB1cnBvc2UgICAgICA6IE1haW4gcHJvZ3JhbSBmb3IgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0aW9uIChWQUQpIGZvciBBTVINCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitXb3JkMTYgd2JfdmFkKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmV0dXJuIHZhbHVlIDogVkFEIERlY2lzaW9uLCAxID0gc3BlZWNoLCAwID0gbm9pc2UgKi8NCisJCVZhZFZhcnMgKiBzdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogU3RhdGUgc3RydWN0dXJlICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGluX2J1ZltdICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBzYW1wbGVzIG9mIHRoZSBpbnB1dCBmcmFtZSAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDE2IGxldmVsW0NPTVBMRU5dOw0KKwlXb3JkMzIgaTsNCisJV29yZDE2IFZBRF9mbGFnLCB0ZW1wOw0KKwlXb3JkMzIgTF90ZW1wLCBwb3dfc3VtOw0KKw0KKwkvKiBDYWxjdWxhdGUgcG93ZXIgb2YgdGhlIGlucHV0IGZyYW1lLiAqLw0KKwlMX3RlbXAgPSAwTDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IEZSQU1FX0xFTjsgaSsrKQ0KKwl7DQorCQlMX3RlbXAgPSBMX21hYyhMX3RlbXAsIGluX2J1ZltpXSwgaW5fYnVmW2ldKTsNCisJfQ0KKw0KKwkvKiBwb3dfc3VtID0gcG93ZXIgb2YgY3VycmVudCBmcmFtZSBhbmQgcHJldmlvdXMgZnJhbWUgKi8NCisJcG93X3N1bSA9IExfYWRkKExfdGVtcCwgc3QtPnByZXZfcG93X3N1bSk7ICANCisNCisJLyogc2F2ZSBwb3dlciBvZiBjdXJyZW50IGZyYW1lIGZvciBuZXh0IGNhbGwgKi8NCisJc3QtPnByZXZfcG93X3N1bSA9IExfdGVtcDsgICAgICAgICAgICAgDQorDQorCS8qIElmIGlucHV0IHBvd2VyIGlzIHZlcnkgbG93LCBjbGVhciB0b25lIGZsYWcgKi8NCisJaWYgKHBvd19zdW0gPCBQT1dfVE9ORV9USFIpDQorCXsNCisJCXN0LT50b25lX2ZsYWcgPSAoV29yZDE2KSAoc3QtPnRvbmVfZmxhZyAmIDB4MWZmZik7ICAgICAgDQorCX0NCisJLyogUnVuIHRoZSBmaWx0ZXIgYmFuayBhbmQgY2FsY3VsYXRlIHNpZ25hbCBsZXZlbHMgYXQgZWFjaCBiYW5kICovDQorCWZpbHRlcl9iYW5rKHN0LCBpbl9idWYsIGxldmVsKTsNCisNCisJLyogY29tcHV0ZSBWQUQgZGVjaXNpb24gKi8NCisJVkFEX2ZsYWcgPSB2YWRfZGVjaXNpb24oc3QsIGxldmVsLCBwb3dfc3VtKTsNCisNCisJLyogQ2FsY3VsYXRlIGlucHV0IGxldmVsICovDQorCUxfdGVtcCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMTsgaSA8IENPTVBMRU47IGkrKykgICAgICAgICAgLyogaWdub3JlIGxvd2VzdCBiYW5kICovDQorCXsNCisJCUxfdGVtcCA9IHZvX0xfYWRkKExfdGVtcCwgbGV2ZWxbaV0pOw0KKwl9DQorDQorCXRlbXAgPSBleHRyYWN0X2goTF90ZW1wIDw8IDEyKTsNCisNCisJRXN0aW1hdGVfU3BlZWNoKHN0LCB0ZW1wKTsgICAgICAgICAgICAgLyogRXN0aW1hdGUgc3BlZWNoIGxldmVsICovDQorCXJldHVybiAoVkFEX2ZsYWcpOw0KK30NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3dlaWdodF9hLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3dlaWdodF9hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ3YmU5NwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvd2VpZ2h0X2EuYwpAQCAtMCwwICsxLDQ4IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogd2VpZ2h0X2EuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246V2VpZ2h0aW5nIG9mIExQQyBjb2VmZmljaWVudHMgICAgICAgICAgICAgICAgICAgICAgKg0KKyoJICAgICAgICAgICAgICAgYXBbaV0gPSBhW2ldICogKGdhbW1hICoqIGkpICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisNCit2b2lkIFdlaWdodF9hKA0KKwkJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdICBMUEMgY29lZmZpY2llbnRzICAgICAgICAgICAgICovDQorCQlXb3JkMTYgYXBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTIgOiBTcGVjdHJhbCBleHBhbmRlZCBMUEMgY29lZmZpY2llbnRzICAgKi8NCisJCVdvcmQxNiBnYW1tYSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IFNwZWN0cmFsIGV4cGFuc2lvbiBmYWN0b3IuICAgICAgICAgICAqLw0KKwkJV29yZDE2IG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogTFBDIG9yZGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDMyIG51bSA9IG0gLSAxLCBmYWM7DQorCSphcCsrID0gKmErKzsNCisJZmFjID0gZ2FtbWE7DQorCWRvew0KKwkJKmFwKysgPShXb3JkMTYpKCgodm9fTF9tdWx0KCgqYSsrKSwgZmFjKSkgKyAweDgwMDApID4+IDE2KTsNCisJCWZhYyA9ICh2b19MX211bHQoZmFjLCBnYW1tYSkgKyAweDgwMDApID4+IDE2Ow0KKwl9d2hpbGUoLS1udW0gIT0gMCk7DQorDQorCSphcCsrID0gKFdvcmQxNikoKCh2b19MX211bHQoKCphKyspLCBmYWMpKSArIDB4ODAwMCkgPj4gMTYpOw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hdmMvZGVjL0FWQ0RlY29kZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2F2Yy9kZWMvQVZDRGVjb2Rlci5jcHAKaW5kZXggYWEyYTNkMS4uMjRjMzYxZSAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2F2Yy9kZWMvQVZDRGVjb2Rlci5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2F2Yy9kZWMvQVZDRGVjb2Rlci5jcHAKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCitzdGF0aWMgY29uc3QgY2hhciBrU3RhcnRDb2RlWzRdID0geyAweDAwLCAweDAwLCAweDAwLCAweDAxIH07CisKIHN0YXRpYyBpbnQzMl90IE1hbGxvYyh2b2lkICp1c2VyRGF0YSwgaW50MzJfdCBzaXplLCBpbnQzMl90IGF0dHJzKSB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4obWFsbG9jKHNpemUpKTsKIH0KQEAgLTE1NCw5ICsxNTYsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgc3A8TWV0YURhdGE+IHBhcmFtcyA9IG5ldyBNZXRhRGF0YTsKLSAgICBwYXJhbXMtPnNldEludDMyKGtLZXlXYW50c05BTEZyYWdtZW50cywgdHJ1ZSk7Ci0gICAgbVNvdXJjZS0+c3RhcnQocGFyYW1zLmdldCgpKTsKKyAgICBtU291cmNlLT5zdGFydCgpOwogCiAgICAgbUFuY2hvclRpbWVVcyA9IDA7CiAgICAgbU51bVNhbXBsZXNPdXRwdXQgPSAwOwpAQCAtMTY3LDkgKzE2NywxMCBAQAogfQogCiB2b2lkIEFWQ0RlY29kZXI6OmFkZENvZGVjU3BlY2lmaWNEYXRhKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgTWVkaWFCdWZmZXIgKmJ1ZmZlciA9IG5ldyBNZWRpYUJ1ZmZlcihzaXplKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIGRhdGEsIHNpemUpOwotICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDAsIHNpemUpOworICAgIE1lZGlhQnVmZmVyICpidWZmZXIgPSBuZXcgTWVkaWFCdWZmZXIoc2l6ZSArIDQpOworICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwga1N0YXJ0Q29kZSwgNCk7CisgICAgbWVtY3B5KCh1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyA0LCBkYXRhLCBzaXplKTsKKyAgICBidWZmZXItPnNldF9yYW5nZSgwLCBzaXplICsgNCk7CiAKICAgICBtQ29kZWNTcGVjaWZpY0RhdGEucHVzaChidWZmZXIpOwogfQpAQCAtMjAwLDYgKzIwMSwyOSBAQAogICAgIHJldHVybiBtRm9ybWF0OwogfQogCitzdGF0aWMgdm9pZCBmaW5kTkFMRnJhZ21lbnQoCisgICAgICAgIGNvbnN0IE1lZGlhQnVmZmVyICpidWZmZXIsIGNvbnN0IHVpbnQ4X3QgKipmcmFnUHRyLCBzaXplX3QgKmZyYWdTaXplKSB7CisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9CisgICAgICAgIChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpOworCisgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnJhbmdlX2xlbmd0aCgpOworCisgICAgQ0hFQ0soc2l6ZSA+PSA0KTsKKyAgICBDSEVDSyghbWVtY21wKGtTdGFydENvZGUsIGRhdGEsIDQpKTsKKworICAgIHNpemVfdCBvZmZzZXQgPSA0OworICAgIHdoaWxlIChvZmZzZXQgKyAzIDwgc2l6ZSAmJiBtZW1jbXAoa1N0YXJ0Q29kZSwgJmRhdGFbb2Zmc2V0XSwgNCkpIHsKKyAgICAgICAgKytvZmZzZXQ7CisgICAgfQorCisgICAgKmZyYWdQdHIgPSAmZGF0YVs0XTsKKyAgICBpZiAob2Zmc2V0ICsgMyA+PSBzaXplKSB7CisgICAgICAgICpmcmFnU2l6ZSA9IHNpemUgLSA0OworICAgIH0gZWxzZSB7CisgICAgICAgICpmcmFnU2l6ZSA9IG9mZnNldCAtIDQ7CisgICAgfQorfQorCiBzdGF0dXNfdCBBVkNEZWNvZGVyOjpyZWFkKAogICAgICAgICBNZWRpYUJ1ZmZlciAqKm91dCwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKICAgICAqb3V0ID0gTlVMTDsKQEAgLTI1NCwzNyArMjc4LDMxIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCB1aW50OF90ICppblB0ciA9Ci0gICAgICAgIChjb25zdCB1aW50OF90ICopbUlucHV0QnVmZmVyLT5kYXRhKCkgKyBtSW5wdXRCdWZmZXItPnJhbmdlX29mZnNldCgpOworICAgIGNvbnN0IHVpbnQ4X3QgKmZyYWdQdHI7CisgICAgc2l6ZV90IGZyYWdTaXplOworICAgIGZpbmROQUxGcmFnbWVudChtSW5wdXRCdWZmZXIsICZmcmFnUHRyLCAmZnJhZ1NpemUpOworCisgICAgYm9vbCByZWxlYXNlRnJhZ21lbnQgPSB0cnVlOworICAgIHN0YXR1c190IGVyciA9IFVOS05PV05fRVJST1I7CiAKICAgICBpbnQgbmFsVHlwZTsKICAgICBpbnQgbmFsUmVmSWRjOwogICAgIEFWQ0RlY19TdGF0dXMgcmVzID0KICAgICAgICAgUFZBVkNEZWNHZXROQUxUeXBlKAotICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8dWludDhfdCAqPihpblB0ciksIG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCksCisgICAgICAgICAgICAgICAgY29uc3RfY2FzdDx1aW50OF90ICo+KGZyYWdQdHIpLCBmcmFnU2l6ZSwKICAgICAgICAgICAgICAgICAmbmFsVHlwZSwgJm5hbFJlZklkYyk7CiAKICAgICBpZiAocmVzICE9IEFWQ0RFQ19TVUNDRVNTKSB7CiAgICAgICAgIExPR0UoImNhbm5vdCBkZXRlcm1pbmUgbmFsIHR5cGUiKTsKLQotICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKLSAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKLQotICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKG5hbFR5cGUpIHsKKyAgICB9IGVsc2Ugc3dpdGNoIChuYWxUeXBlKSB7CiAgICAgICAgIGNhc2UgQVZDX05BTFRZUEVfU1BTOgogICAgICAgICB7CiAgICAgICAgICAgICByZXMgPSBQVkFWQ0RlY1NlcVBhcmFtU2V0KAotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlLCBjb25zdF9jYXN0PHVpbnQ4X3QgKj4oaW5QdHIpLAotICAgICAgICAgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZSwgY29uc3RfY2FzdDx1aW50OF90ICo+KGZyYWdQdHIpLAorICAgICAgICAgICAgICAgICAgICBmcmFnU2l6ZSk7CiAKICAgICAgICAgICAgIGlmIChyZXMgIT0gQVZDREVDX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBtSW5wdXRCdWZmZXIgPSBOVUxMOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEFWQ0RlY09iamVjdCAqcERlY1ZpZCA9IChBVkNEZWNPYmplY3QgKiltSGFuZGxlLT5BVkNPYmplY3Q7CkBAIC0zMjQsNDcgKzM0Miw1MyBAQAogCiAgICAgICAgICAgICBpbnQzMl90IGFsaWduZWRfd2lkdGggPSAoY3JvcF9yaWdodCAtIGNyb3BfbGVmdCArIDEgKyAxNSkgJiB+MTU7CiAgICAgICAgICAgICBpbnQzMl90IGFsaWduZWRfaGVpZ2h0ID0gKGNyb3BfYm90dG9tIC0gY3JvcF90b3AgKyAxICsgMTUpICYgfjE1OwotICAgICAgICAgICAgbUZvcm1hdC0+c2V0SW50MzIoa0tleVdpZHRoLCBhbGlnbmVkX3dpZHRoKTsKLSAgICAgICAgICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlIZWlnaHQsIGFsaWduZWRfaGVpZ2h0KTsKIAotICAgICAgICAgICAgbUlucHV0QnVmZmVyLT5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBtSW5wdXRCdWZmZXIgPSBOVUxMOworICAgICAgICAgICAgaW50MzJfdCBvbGRXaWR0aCwgb2xkSGVpZ2h0OworICAgICAgICAgICAgQ0hFQ0sobUZvcm1hdC0+ZmluZEludDMyKGtLZXlXaWR0aCwgJm9sZFdpZHRoKSk7CisgICAgICAgICAgICBDSEVDSyhtRm9ybWF0LT5maW5kSW50MzIoa0tleUhlaWdodCwgJm9sZEhlaWdodCkpOwogCi0gICAgICAgICAgICByZXR1cm4gSU5GT19GT1JNQVRfQ0hBTkdFRDsKKyAgICAgICAgICAgIGlmIChvbGRXaWR0aCAhPSBhbGlnbmVkX3dpZHRoIHx8IG9sZEhlaWdodCAhPSBhbGlnbmVkX2hlaWdodCkgeworICAgICAgICAgICAgICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlXaWR0aCwgYWxpZ25lZF93aWR0aCk7CisgICAgICAgICAgICAgICAgbUZvcm1hdC0+c2V0SW50MzIoa0tleUhlaWdodCwgYWxpZ25lZF9oZWlnaHQpOworCisgICAgICAgICAgICAgICAgZXJyID0gSU5GT19GT1JNQVRfQ0hBTkdFRDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKm91dCA9IG5ldyBNZWRpYUJ1ZmZlcigwKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBBVkNfTkFMVFlQRV9QUFM6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJlcyA9IFBWQVZDRGVjUGljUGFyYW1TZXQoCi0gICAgICAgICAgICAgICAgICAgIG1IYW5kbGUsIGNvbnN0X2Nhc3Q8dWludDhfdCAqPihpblB0ciksCi0gICAgICAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpOwotCi0gICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGUsIGNvbnN0X2Nhc3Q8dWludDhfdCAqPihmcmFnUHRyKSwKKyAgICAgICAgICAgICAgICAgICAgZnJhZ1NpemUpOwogCiAgICAgICAgICAgICBpZiAocmVzICE9IEFWQ0RFQ19TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICpvdXQgPSBuZXcgTWVkaWFCdWZmZXIoMCk7CiAKLSAgICAgICAgICAgIHJldHVybiBPSzsKKyAgICAgICAgICAgIGVyciA9IE9LOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFWQ19OQUxUWVBFX1NMSUNFOgogICAgICAgICBjYXNlIEFWQ19OQUxUWVBFX0lEUjoKICAgICAgICAgewogICAgICAgICAgICAgcmVzID0gUFZBVkNEZWNvZGVTbGljZSgKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZSwgY29uc3RfY2FzdDx1aW50OF90ICo+KGluUHRyKSwKLSAgICAgICAgICAgICAgICAgICAgbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGUsIGNvbnN0X2Nhc3Q8dWludDhfdCAqPihmcmFnUHRyKSwKKyAgICAgICAgICAgICAgICAgICAgZnJhZ1NpemUpOwogCiAgICAgICAgICAgICBpZiAocmVzID09IEFWQ0RFQ19QSUNUVVJFX09VVFBVVF9SRUFEWSkgewogICAgICAgICAgICAgICAgIGludDMyX3QgaW5kZXg7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBSZWxlYXNlOwogICAgICAgICAgICAgICAgIEFWQ0ZyYW1lSU8gT3V0cHV0OwogICAgICAgICAgICAgICAgIE91dHB1dC5ZQ2JDclswXSA9IE91dHB1dC5ZQ2JDclsxXSA9IE91dHB1dC5ZQ2JDclsyXSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgQ0hFQ0tfRVEoUFZBVkNEZWNHZXRPdXRwdXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhhbmRsZSwgJmluZGV4LCAmUmVsZWFzZSwgJk91dHB1dCksCisKKyAgICAgICAgICAgICAgICBDSEVDS19FUShQVkFWQ0RlY0dldE91dHB1dChtSGFuZGxlLCAmaW5kZXgsICZSZWxlYXNlLCAmT3V0cHV0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICBBVkNERUNfU1VDQ0VTUyk7CiAKICAgICAgICAgICAgICAgICBDSEVDSyhpbmRleCA+PSAwKTsKQEAgLTM3Niw0OCArNDAwLDQ0IEBACiAKICAgICAgICAgICAgICAgICAvLyBEbyBfbm90XyByZWxlYXNlIGlucHV0IGJ1ZmZlciB5ZXQuCiAKLSAgICAgICAgICAgICAgICByZXR1cm4gT0s7CisgICAgICAgICAgICAgICAgcmVsZWFzZUZyYWdtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZXJyID0gT0s7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwotICAgICAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKLQogICAgICAgICAgICAgaWYgKHJlcyA9PSBBVkNERUNfUElDVFVSRV9SRUFEWSB8fCByZXMgPT0gQVZDREVDX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAqb3V0ID0gbmV3IE1lZGlhQnVmZmVyKDApOwogCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICAgICAgICAgIGVyciA9IE9LOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMT0dWKCJmYWlsZWQgdG8gZGVjb2RlIGZyYW1lIChyZXMgPSAlZCkiLCByZXMpOwotICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFWQ19OQUxUWVBFX1NFSToKICAgICAgICAgewogICAgICAgICAgICAgcmVzID0gUFZBVkNEZWNTRUkoCi0gICAgICAgICAgICAgICAgICAgIG1IYW5kbGUsIGNvbnN0X2Nhc3Q8dWludDhfdCAqPihpblB0ciksCi0gICAgICAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpOwotCi0gICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGUsIGNvbnN0X2Nhc3Q8dWludDhfdCAqPihmcmFnUHRyKSwKKyAgICAgICAgICAgICAgICAgICAgZnJhZ1NpemUpOwogCiAgICAgICAgICAgICBpZiAocmVzICE9IEFWQ0RFQ19TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICpvdXQgPSBuZXcgTWVkaWFCdWZmZXIoMCk7CiAKLSAgICAgICAgICAgIHJldHVybiBPSzsKKyAgICAgICAgICAgIGVyciA9IE9LOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFWQ19OQUxUWVBFX0FVRDoKKyAgICAgICAgY2FzZSBBVkNfTkFMVFlQRV9GSUxMOgogICAgICAgICB7Ci0gICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7Ci0KICAgICAgICAgICAgICpvdXQgPSBuZXcgTWVkaWFCdWZmZXIoMCk7CiAKLSAgICAgICAgICAgIHJldHVybiBPSzsKKyAgICAgICAgICAgIGVyciA9IE9LOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgpAQCAtNDI4LDEwICs0NDgsMTkgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwotICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7CisgICAgaWYgKHJlbGVhc2VGcmFnbWVudCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbUlucHV0QnVmZmVyLT5yYW5nZV9vZmZzZXQoKTsKKyAgICAgICAgaWYgKGZyYWdTaXplICsgNCA9PSBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpKSB7CisgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnNldF9yYW5nZSgKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgZnJhZ1NpemUgKyA0LAorICAgICAgICAgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpIC0gZnJhZ1NpemUgLSA0KTsKKyAgICAgICAgfQorICAgIH0KIAotICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIHJldHVybiBlcnI7CiB9CiAKIC8vIHN0YXRpYwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZmIyYWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL0FuZHJvaWQubWsKQEAgLTAsMCArMSwzMyBAQAorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1BSRUxJTktfTU9EVUxFIDo9IGZhbHNlCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSBjbW5NZW1vcnkuYworCitMT0NBTF9NT0RVTEUgOj0gbGlic3RhZ2VmcmlnaHRfZW5jX2NvbW1vbgorCitMT0NBTF9BUk1fTU9ERSA6PSBhcm0KKworTE9DQUxfU1RBVElDX0xJQlJBUklFUyA6PQorCitMT0NBTF9DX0lOQ0xVREVTIDo9IFwKKwkkKExPQ0FMX1BBVEgpL2luY2x1ZGUKKworTE9DQUxfQ0ZMQUdTIDo9ICQoVk9fQ0ZMQUdTKQorCitpZmVxICgkKFZPVFQpLCB2NSkKK0xPQ0FMX0NGTEFHUyArPSAtREFSTSAtREFTTV9PUFQKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChMT0NBTF9QQVRIKS9zcmMvYXNtL0FSTVY1RQorZW5kaWYKKworaWZlcSAoJChWT1RUKSwgdjcpCitMT0NBTF9DRkxBR1MgKz0gLURBUk0gLURBUk1WNyAtREFTTV9PUFQKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChMT0NBTF9QQVRIKS9zcmMvYXNtL0FSTVY1RQorTE9DQUxfQ19JTkNMVURFUyArPSAkKExPQ0FMX1BBVEgpL3NyYy9hc20vQVJNVjcKK2VuZGlmCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKKworCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vQ29uZmlnLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9Db25maWcubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdhMTdjMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vQ29uZmlnLm1rCkBAIC0wLDAgKzEsMjQgQEAKKyMgDQorIyBUaGlzIGNvbmZpZ3VyZSBmaWxlIGlzIGp1c3QgZm9yIExpbnV4IHByb2plY3RzIGFnYWluc3QgQW5kcm9pZA0KKyMNCisNCitWT1BSSiA6PSANCitWT05KIDo9DQorDQorIyBXQVJOSU5HOg0KKyMgVXNpbmcgdjcgYnJlYWtzIGdlbmVyaWMgYnVpbGQNCitpZmVxICgkKFRBUkdFVF9BUkNIKSxhcm0pDQorVk9UVCA6PSB2NQ0KK2Vsc2UNCitWT1RUIDo9IHBjDQorZW5kaWYNCisNCisjIERvIHdlIGFsc28gbmVlZCB0byBjaGVjayBvbiBBUkNIX0FSTV9IQVZFX0FSTVY3QT8gLSBwcm9iYWJseSBub3QNCitpZmVxICgkKEFSQ0hfQVJNX0hBVkVfTkVPTiksdHJ1ZSkNCitWT1RUIDo9IHY3DQorZW5kaWYNCisNCitWT1RFU1QgOj0gMA0KKw0KK1ZPX0NGTEFHUzo9LURMSU5VWCANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2Ntbk1lbW9yeS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9jbW5NZW1vcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTcyNjRjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9jbW5NZW1vcnkuYwpAQCAtMCwwICsxLDczIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQljbW5NZW1vcnkuYw0KKw0KKwlDb250ZW50OglzYW1wbGUgY29kZSBmb3IgbWVtb3J5IG9wZXJhdG9yIGltcGxlbWVudGF0aW9uDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAiY21uTWVtb3J5LmgiDQorDQorI2luY2x1ZGUgPG1hbGxvYy5oPg0KKyNpZiBkZWZpbmVkIExJTlVYDQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKyNlbmRpZg0KKw0KKy8vVk9fTUVNX09QRVJBVE9SCQlnX21lbU9QOw0KKw0KK1ZPX1UzMiBjbW5NZW1BbGxvYyAoVk9fUzMyIHVJRCwgIFZPX01FTV9JTkZPICogcE1lbUluZm8pDQorew0KKwlpZiAoIXBNZW1JbmZvKQ0KKwkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisNCisJcE1lbUluZm8tPlZCdWZmZXIgPSBtYWxsb2MgKHBNZW1JbmZvLT5TaXplKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK1ZPX1UzMiBjbW5NZW1GcmVlIChWT19TMzIgdUlELCBWT19QVFIgcE1lbSkNCit7DQorCWZyZWUgKHBNZW0pOw0KKwlyZXR1cm4gMDsNCit9DQorDQorVk9fVTMyCWNtbk1lbVNldCAoVk9fUzMyIHVJRCwgVk9fUFRSIHBCdWZmLCBWT19VOCB1VmFsdWUsIFZPX1UzMiB1U2l6ZSkNCit7DQorCW1lbXNldCAocEJ1ZmYsIHVWYWx1ZSwgdVNpemUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorVk9fVTMyCWNtbk1lbUNvcHkgKFZPX1MzMiB1SUQsIFZPX1BUUiBwRGVzdCwgVk9fUFRSIHBTb3VyY2UsIFZPX1UzMiB1U2l6ZSkNCit7DQorCW1lbWNweSAocERlc3QsIHBTb3VyY2UsIHVTaXplKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK1ZPX1UzMgljbW5NZW1DaGVjayAoVk9fUzMyIHVJRCwgVk9fUFRSIHBCdWZmZXIsIFZPX1UzMiB1U2l6ZSkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitWT19TMzIgY21uTWVtQ29tcGFyZSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBCdWZmZXIxLCBWT19QVFIgcEJ1ZmZlcjIsIFZPX1UzMiB1U2l6ZSkNCit7DQorCXJldHVybiBtZW1jbXAocEJ1ZmZlcjEsIHBCdWZmZXIyLCB1U2l6ZSk7DQorfQ0KKw0KK1ZPX1UzMgljbW5NZW1Nb3ZlIChWT19TMzIgdUlELCBWT19QVFIgcERlc3QsIFZPX1BUUiBwU291cmNlLCBWT19VMzIgdVNpemUpDQorew0KKwltZW1tb3ZlIChwRGVzdCwgcFNvdXJjZSwgdVNpemUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL2Ntbk1lbW9yeS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL2Ntbk1lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTU2MDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvY21uTWVtb3J5LmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWNtbk1lbW9yeS5oDQorDQorCUNvbnRlbnQ6CW1lbW9yeSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBoZWFkZXIgZmlsZQ0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfX2Ntbk1lbW9yeV9IX18NCisjZGVmaW5lIF9fY21uTWVtb3J5X0hfXw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KKw0KKyNpbmNsdWRlIDx2b01lbS5oPg0KKw0KKy8vZXh0ZXJuIFZPX01FTV9PUEVSQVRPUglnX21lbU9QOw0KKw0KKy8qKg0KKyAqIEFsbG9jYXRlIG1lbW9yeQ0KKyAqIFxwYXJhbSB1SUQgW2luXSBtb2R1bGUgSUQNCisgKiBccGFyYW0gdVNpemUgW2luXSBzaXplIG9mIG1lbW9yeQ0KKyAqIFxyZXR1cm4gdmFsdWUgaXMgdGhlIGFsbG9jYXRlZCBtZW1vcnkgYWRkcmVzcy4gTlVMTCBpcyBmYWlsZWQuDQorICovDQorVk9fVTMyCWNtbk1lbUFsbG9jIChWT19TMzIgdUlELCAgVk9fTUVNX0lORk8gKiBwTWVtSW5mbyk7DQorDQorLyoqDQorICogRnJlZSB1cCBtZW1vcnkNCisgKiBccGFyYW0gdUlEIFtpbl0gbW9kdWxlIElEDQorICogXHBhcmFtIHBNZW0gW2luXSBhZGRyZXNzIG9mIG1lbW9yeQ0KKyAqIFxyZXR1cm4gdmFsdWUgMCwgaWYgc3VjY2VlZGVkLg0KKyAqLw0KK1ZPX1UzMgljbW5NZW1GcmVlIChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmZlcik7DQorDQorLyoqDQorICogbWVtb3J5IHNldCBmdW5jdGlvbg0KKyAqIFxwYXJhbSB1SUQgW2luXSBtb2R1bGUgSUQNCisgKiBccGFyYW0gcEJ1ZmYgW2luL291dF0gYWRkcmVzcyBvZiBtZW1vcnkNCisgKiBccGFyYW0gdVZhbHVlIFtpbl0gdGhlIHZhbHVlIHRvIGJlIHNldA0KKyAqIFxwYXJhbSB1U2l6ZSBbaW5dIHRoZSBzaXplIHRvIGJlIHNldA0KKyAqIFxyZXR1cm4gdmFsdWUgMCwgaWYgc3VjY2VlZGVkLg0KKyAqLw0KK1ZPX1UzMgljbW5NZW1TZXQgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZiwgVk9fVTggdVZhbHVlLCBWT19VMzIgdVNpemUpOw0KKw0KKy8qKg0KKyAqIG1lbW9yeSBjb3B5IGZ1bmN0aW9uDQorICogXHBhcmFtIHVJRCBbaW5dIG1vZHVsZSBJRA0KKyAqIFxwYXJhbSBwRGVzdCBbaW4vb3V0XSBhZGRyZXNzIG9mIGRlc3RpbmF0aW9uIG1lbW9yeQ0KKyAqIFxwYXJhbSBwU291cmNlIFtpbl0gYWRkcmVzcyBvZiBzb3VyY2UgbWVtb3J5DQorICogXHBhcmFtIHVTaXplIFtpbl0gdGhlIHNpemUgdG8gYmUgY29waWVkDQorICogXHJldHVybiB2YWx1ZSAwLCBpZiBzdWNjZWVkZWQuDQorICovDQorVk9fVTMyCWNtbk1lbUNvcHkgKFZPX1MzMiB1SUQsIFZPX1BUUiBwRGVzdCwgVk9fUFRSIHBTb3VyY2UsIFZPX1UzMiB1U2l6ZSk7DQorDQorLyoqDQorICogbWVtb3J5IGNoZWNrIGZ1bmN0aW9uDQorICogXHBhcmFtIHVJRCBbaW5dIG1vZHVsZSBJRA0KKyAqIFxwYXJhbSBwQnVmZiBbaW5dIGFkZHJlc3Mgb2YgYnVmZmVyIHRvIGJlIGNoZWNrZWQNCisgKiBccGFyYW0gdVNpemUgW2luXSB0aGUgc2l6ZSB0byBiZSBjaGVja2VkDQorICogXHJldHVybiB2YWx1ZSAwLCBpZiBzdWNjZWVkZWQuDQorICovDQorVk9fVTMyCWNtbk1lbUNoZWNrIChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmZlciwgVk9fVTMyIHVTaXplKTsNCisNCisvKioNCisgKiBtZW1vcnkgY29tcGFyZSBmdW5jdGlvbg0KKyAqIFxwYXJhbSB1SUQgW2luXSBtb2R1bGUgSUQNCisgKiBccGFyYW0gcEJ1ZmZlcjEgW2luXSBhZGRyZXNzIG9mIGJ1ZmZlciAxIHRvIGJlIGNvbXBhcmVkDQorICogXHBhcmFtIHBCdWZmZXIyIFtpbl0gYWRkcmVzcyBvZiBidWZmZXIgMiB0byBiZSBjb21wYXJlZA0KKyAqIFxwYXJhbSB1U2l6ZSBbaW5dIHRoZSBzaXplIHRvIGJlIGNvbXBhcmVkDQorICogXHJldHVybiB2YWx1ZTogc2FtZSBhcyBzdGFuZGFyZCBDIHJ1bi10aW1lIG1lbWNtcCgpIGZ1bmN0aW9uLg0KKyAqLw0KK1ZPX1MzMgljbW5NZW1Db21wYXJlIChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmZlcjEsIFZPX1BUUiBwQnVmZmVyMiwgVk9fVTMyIHVTaXplKTsNCisNCisvKioNCisgKiBtZW1vcnkgbW92ZSBmdW5jdGlvbg0KKyAqIFxwYXJhbSB1SUQgW2luXSBtb2R1bGUgSUQNCisgKiBccGFyYW0gcERlc3QgW2luL291dF0gYWRkcmVzcyBvZiBkZXN0aW5hdGlvbiBtZW1vcnkNCisgKiBccGFyYW0gcFNvdXJjZSBbaW5dIGFkZHJlc3Mgb2Ygc291cmNlIG1lbW9yeQ0KKyAqIFxwYXJhbSB1U2l6ZSBbaW5dIHRoZSBzaXplIHRvIGJlIG1vdmVkDQorICogXHJldHVybiB2YWx1ZSAwLCBpZiBzdWNjZWVkZWQuDQorICovDQorVk9fVTMyCWNtbk1lbU1vdmUgKFZPX1MzMiB1SUQsIFZPX1BUUiBwRGVzdCwgVk9fUFRSIHBTb3VyY2UsIFZPX1UzMiB1U2l6ZSk7DQorDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KKw0KKyNlbmRpZiAvLyBfX2Ntbk1lbW9yeV9IX18NCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9BQUMuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b0FBQy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMWVkODMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9BQUMuaApAQCAtMCwwICsxLDc0IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl2b0FBQy5oDQorDQorCUNvbnRlbnQ6CUFBQyBjb2RlYyBBUElzICYgZGF0YSB0eXBlcw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfX3ZvQUFDX0hfXw0KKyNkZWZpbmUgX192b0FBQ19IX18NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisNCisjaW5jbHVkZSAidm9BdWRpby5oIg0KKw0KKy8qIQ0KKyAqIHRoZSBmcmFtZSB0eXBlIHRoYXQgdGhlIGRlY29kZXIgc3VwcG9ydHMNCisgKi8NCit0eXBlZGVmIGVudW0gew0KKwlWT0FBQ19SQVdEQVRBCQkJPSAwLAkvKiE8Y29udGFpbnMgb25seSByYXcgYWFjIGRhdGEgaW4gYSBmcmFtZSovDQorCVZPQUFDX0FEVFMJCQkJPSAxLAkvKiE8Y29udGFpbnMgQURUUyBoZWFkZXIgKyByYXcgQUFDIGRhdGEgaW4gYSBmcmFtZSovDQorCVZPQUFDX0ZUX01BWAkJCT0gVk9fTUFYX0VOVU1fVkFMVUUNCit9IFZPQUFDRlJBTUVUWVBFOw0KKw0KKy8qIQ0KKyAqIHRoZSBzdHJ1Y3R1cmUgZm9yIEFBQyBlbmNvZGVyIGlucHV0IHBhcmFtZXRlcg0KKyAqLw0KK3R5cGVkZWYgIHN0cnVjdCB7DQorICBpbnQJICBzYW1wbGVSYXRlOyAgICAgICAgICAvKiEgYXVkaW8gZmlsZSBzYW1wbGUgcmF0ZSAqLw0KKyAgaW50CSAgYml0UmF0ZTsgICAgICAgICAgICAgLyohIGVuY29kZXIgYml0IHJhdGUgaW4gYml0cy9zZWMgKi8NCisgIHNob3J0ICAgbkNoYW5uZWxzOwkJICAgLyohIG51bWJlciBvZiBjaGFubmVscyBvbiBpbnB1dCAoMSwyKSAqLw0KKyAgc2hvcnQgICBhZHRzVXNlZDsJCQkgICAvKiEgd2hldGhlciB3cml0ZSBhZHRzIGhlYWRlciAqLw0KK30gQUFDRU5DX1BBUkFNOw0KKw0KKy8qIEFBQyBQYXJhbSBJRCAqLw0KKyNkZWZpbmUgVk9fUElEX0FBQ19NZG91bGUJCQkJMHg0MjIxMTAwMA0KKyNkZWZpbmUgVk9fUElEX0FBQ19FTkNQQVJBTQkJCQlWT19QSURfQUFDX01kb3VsZSB8IDB4MDA0MCAgLyohPCBnZXQvc2V0IEFBQyBlbmNvZGVyIHBhcmFtZXRlciwgdGhlIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gQUFDRU5DX1BBUkFNICovDQorDQorLyogQUFDIGRlY29kZXIgZXJyb3IgSUQgKi8NCisjZGVmaW5lIFZPX0VSUl9BQUNfTWRvdWxlCQkJCTB4ODIyMTAwMDANCisjZGVmaW5lIFZPX0VSUl9BQUNfVU5TRklMRUZPUk1BVAkJKFZPX0VSUl9BQUNfTWRvdWxlIHwgMHhGMDAxKQ0KKyNkZWZpbmUgVk9fRVJSX0FBQ19VTlNQUk9GSUxFCQkJKFZPX0VSUl9BQUNfTWRvdWxlIHwgMHhGMDAyKQ0KKw0KKy8qKg0KKyAqIEdldCBhdWRpbyBlbmNvZGVyIEFQSSBpbnRlcmZhY2UNCisgKiBccGFyYW0gcEVuY0hhbmRsZSBbb3V0XSBSZXR1cm4gdGhlIEFBQyBFbmNvZGVyIGhhbmRsZS4NCisgKiBccmV0dmFsIFZPX0VSUl9PSyBTdWNjZWVkZWQuDQorICovDQorVk9fUzMyIFZPX0FQSSB2b0dldEFBQ0VuY0FQSSAoVk9fQVVESU9fQ09ERUNBUEkgKiBwRW5jSGFuZGxlKTsNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovDQorDQorI2VuZGlmIC8vIF9fdm9BQUNfSF9fDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvQU1SV0IuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b0FNUldCLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5M2ViOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b0FNUldCLmgKQEAgLTAsMCArMSw4NyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJdm9BTVJXQi5oDQorDQorCUNvbnRlbnQ6CUFNUi1XQiBjb2RlYyBBUElzICYgZGF0YSB0eXBlcw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2lmbmRlZiAgX19WT0FNUldCX0hfXw0KKyNkZWZpbmUgIF9fVk9BTVJXQl9IX18NCisNCisjaW5jbHVkZSAgInZvQXVkaW8uaCINCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisjcHJhZ21hIHBhY2socHVzaCwgNCkNCisNCisvKiEqIHRoZSBiaXQgcmF0ZSB0aGUgY29kZWMgc3VwcG9ydHMqLw0KK3R5cGVkZWYgZW51bSB7IA0KKwlWT0FNUldCX01ETk9ORQkJPSAtMSwJLyohPCBJbnZhbGlkIG1vZGUgKi8NCisJVk9BTVJXQl9NRDY2CQk9IDAsCS8qITwgNi42MGticHMgICAqLw0KKwlWT0FNUldCX01EODg1CQk9IDEsICAgIC8qITwgOC44NWticHMgICAqLyAgICAgICANCisJVk9BTVJXQl9NRDEyNjUJCT0gMiwJLyohPCAxMi42NWticHMgICovDQorCVZPQU1SV0JfTUQxNDI1CQk9IDMsCS8qITwgMTQuMjVrYnBzICAqLw0KKwlWT0FNUldCX01EMTU4NQkJPSA0LAkvKiE8IDE1Ljg1YnBzICAgKi8NCisJVk9BTVJXQl9NRDE4MjUJCT0gNSwJLyohPCAxOC4yNWJwcyAgICovDQorCVZPQU1SV0JfTUQxOTg1CQk9IDYsCS8qITwgMTkuODVrYnBzICAqLw0KKwlWT0FNUldCX01EMjMwNQkJPSA3LCAgICAvKiE8IDIzLjA1a2JwcyAgKi8NCisJVk9BTVJXQl9NRDIzODUgICAgICAgICAgPSA4LCAgICAvKiE8IDIzLjg1a2Jwcz4gKi8JDQorCVZPQU1SV0JfTl9NT0RFUyAJPSA5LAkvKiE8IEludmFsaWQgbW9kZSAqLw0KKwlWT0FNUldCX01PREVfTUFYICAgID0gVk9fTUFYX0VOVU1fVkFMVUUNCisJDQorfVZPQU1SV0JNT0RFOw0KKw0KKy8qISogdGhlIGZyYW1lIGZvcm1hdCB0aGUgY29kZWMgc3VwcG9ydHMqLw0KK3R5cGVkZWYgZW51bSB7DQorCVZPQU1SV0JfREVGQVVMVCAgCT0gMCwJLyohPCB0aGUgZnJhbWUgdHlwZSBpcyB0aGUgaGVhZGVyIChkZWZpbmVkIGluIFJGQzMyNjcpICsgcmF3ZGF0YSovDQorCS8qT25lIHdvcmQgKDItYnl0ZSkgZm9yIHN5bmMgd29yZCAoMHg2YjIxKSovDQorCS8qT25lIHdvcmQgKDItYnl0ZSkgZm9yIGZyYW1lIGxlbmd0aCBOLiovDQorCS8qTiB3b3JkcyAoMi1ieXRlKSBjb250YWluaW5nIE4gYml0cyAoYml0IDAgPSAweDAwN2YsIGJpdCAxID0gMHgwMDgxKS4qLw0KKwlWT0FNUldCX0lUVSAgICAgICAgID0gMSwgDQorCS8qT25lIHdvcmQgKDItYnl0ZSkgZm9yIHN5bmMgd29yZCAoMHg2YjIxKS4qLw0KKwkvKk9uZSB3b3JkICgyLWJ5dGUpIHRvIGluZGljYXRlIHRoZSBmcmFtZSB0eXBlLiovCQ0KKwkvKk9uZSB3b3JkICgyLWJ5dGUpIHRvIGluZGljYXRlIHRoZSBtb2RlLiovDQorCS8qTiB3b3JkcyAgKDItYnl0ZSkgY29udGFpbmluZyBOIGJpdHMgKGJpdCAwID0gMHhmZjgxLCBiaXQgMSA9IDB4MDA3ZikuKi8NCisJVk9BTVJXQl9SRkMzMjY3CQk9IDIsCS8qIHNlZSBSRkMgMzI2NyAqLyAgDQorICAgIFZPQU1SV0JfVE1BWCAgICAgICAgPSBWT19NQVhfRU5VTV9WQUxVRQkNCit9Vk9BTVJXQkZSQU1FVFlQRTsNCisNCisNCisjZGVmaW5lICAgIFZPX1BJRF9BTVJXQl9Nb2R1bGUJCQkJCQkJMHg0MjI2MTAwMCANCisjZGVmaW5lICAgIFZPX1BJRF9BTVJXQl9GT1JNQVQgICAgICAgICAgICAgICAgICAgICAgICAgIChWT19QSURfQU1SV0JfTW9kdWxlIHwgMHgwMDAyKQ0KKyNkZWZpbmUgICAgVk9fUElEX0FNUldCX0NIQU5ORUxTICAgICAgICAgICAgICAgICAgICAgICAgKFZPX1BJRF9BTVJXQl9Nb2R1bGUgfCAweDAwMDMpDQorI2RlZmluZSAgICBWT19QSURfQU1SV0JfU0FNUExFUkFURSAgICAgICAgICAgICAgICAgICAgICAoVk9fUElEX0FNUldCX01vZHVsZSB8IDB4MDAwNCkNCisjZGVmaW5lICAgIFZPX1BJRF9BTVJXQl9GUkFNRVRZUEUgICAgICAgICAgICAgICAgICAgICAgIChWT19QSURfQU1SV0JfTW9kdWxlIHwgMHgwMDA1KQ0KKyNkZWZpbmUgICAgVk9fUElEX0FNUldCX01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZPX1BJRF9BTVJXQl9Nb2R1bGUgfCAweDAwMDYpDQorI2RlZmluZSAgICBWT19QSURfQU1SV0JfRFRYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVk9fUElEX0FNUldCX01vZHVsZSB8IDB4MDAwNykNCisNCisvKioNCisgKiBHZXQgYXVkaW8gY29kZWMgQVBJIGludGVyZmFjZQ0KKyAqIFxwYXJhbSBwRW5jSGFuZGxlIFtvdXRdIFJldHVybiB0aGUgQU1SV0IgRW5jb2RlciBoYW5kbGUuDQorICogXHJldHZhbCBWT19FUlJfT0sgU3VjY2VlZGVkLg0KKyAqLw0KK1ZPX1MzMiBWT19BUEkgdm9HZXRBTVJXQkVuY0FQSShWT19BVURJT19DT0RFQ0FQSSAqcEVuY0hhbmRsZSk7DQorDQorDQorI3ByYWdtYSBwYWNrKHBvcCkNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9IC8qIGV4dGVybiAiQyIgKi8NCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisNCisNCisjZW5kaWYgICAvL19fVk9BTVJXQl9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9BdWRpby5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvQXVkaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGM5ZGZiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvQXVkaW8uaApAQCAtMCwwICsxLDE3MyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJdm9BdWRpby5oDQorDQorCUNvbnRlbnQ6CUF1ZGlvIHR5cGVzIGFuZCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX192b0F1ZGlvX0hfXw0KKyNkZWZpbmUgX192b0F1ZGlvX0hfXw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KKw0KKyNpbmNsdWRlICJ2b0luZGV4LmgiDQorI2luY2x1ZGUgInZvTWVtLmgiDQorDQorI2RlZmluZQlWT19QSURfQVVESU9fQkFTRQkJCSAweDQyMDAwMDAwCQkJCQkJCS8qITwgVGhlIGJhc2UgcGFyYW0gSUQgZm9yIEFVRElPIGNvZGVjICovDQorI2RlZmluZQlWT19QSURfQVVESU9fRk9STUFUCQkJKFZPX1BJRF9BVURJT19CQVNFIHwgMFgwMDAxKQkJLyohPCBUaGUgZm9ybWF0IGRhdGEgb2YgYXVkaW8gaW4gdHJhY2sgKi8NCisjZGVmaW5lCVZPX1BJRF9BVURJT19TQU1QTEVSRUFURQkoVk9fUElEX0FVRElPX0JBU0UgfCAwWDAwMDIpCQkvKiE8IFRoZSBzYW1wbGUgcmF0ZSBvZiBhdWRpbyAgKi8NCisjZGVmaW5lCVZPX1BJRF9BVURJT19DSEFOTkVMUwkJKFZPX1BJRF9BVURJT19CQVNFIHwgMFgwMDAzKQkJLyohPCBUaGUgY2hhbm5lbCBvZiBhdWRpbyAqLw0KKyNkZWZpbmUJVk9fUElEX0FVRElPX0JJVFJBVEUJCShWT19QSURfQVVESU9fQkFTRSB8IDBYMDAwNCkJCS8qITwgVGhlIGJpdCByYXRlIG9mIGF1ZGlvICovDQorI2RlZmluZSBWT19QSURfQVVESU9fQ0hBTk5FTE1PREUJKFZPX1BJRF9BVURJT19CQVNFIHwgMFgwMDA1KQkJLyohPCBUaGUgY2hhbm5lbCBtb2RlIG9mIGF1ZGlvICovDQorDQorI2RlZmluZQlWT19FUlJfQVVESU9fQkFTRQkJCTB4ODIwMDAwMDANCisjZGVmaW5lIFZPX0VSUl9BVURJT19VTlNDSEFOTkVMCQlWT19FUlJfQVVESU9fQkFTRSB8IDB4MDAwMQ0KKyNkZWZpbmUgVk9fRVJSX0FVRElPX1VOU1NBTVBMRVJBVEUJVk9fRVJSX0FVRElPX0JBU0UgfCAweDAwMDINCisjZGVmaW5lIFZPX0VSUl9BVURJT19VTlNGRUFUVVJFCQlWT19FUlJfQVVESU9fQkFTRSB8IDB4MDAwMw0KKw0KKw0KKy8qKg0KKyAqRW51bWVyYXRpb24gdXNlZCB0byBkZWZpbmUgdGhlIHBvc3NpYmxlIGF1ZGlvIGNvZGluZyBmb3JtYXRzLg0KKyAqLw0KK3R5cGVkZWYgZW51bSBWT19BVURJT19DT0RJTkdUWVBFIHsNCisJVk9fQVVESU9fQ29kaW5nVW51c2VkID0gMCwgIC8qKjwgUGxhY2Vob2xkZXIgdmFsdWUgd2hlbiBjb2RpbmcgaXMgTi9BICAqLw0KKwlWT19BVURJT19Db2RpbmdQQ00sICAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBQQ00gY29kaW5nICovDQorCVZPX0FVRElPX0NvZGluZ0FEUENNLCAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEFEUENNIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdBTVJOQiwgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBBTVIgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ0FNUldCLCAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEFNUiBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nQU1SV0JQLCAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgQU1SIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdRQ0VMUDEzLCAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBRQ0VMUCAxM2ticHMgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ0VWUkMsICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEVWUkMgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ0FBQywgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEFBQyBlbmNvZGVkIGRhdGEsIDB4QTEwNiAtIElTTy9NUEVHLTQgQUFDLCAweEZGIC0gQUFDICovDQorCVZPX0FVRElPX0NvZGluZ0FDMywgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEFDMyBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nRkxBQywgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgRkxBQyBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nTVAxLAkJCS8qKjwgQW55IHZhcmlhbnQgb2YgTVAxIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdNUDMsICAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBNUDMgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ09HRywgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIE9HRyBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nV01BLCAgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgV01BIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdSQSwgICAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBSQSBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nTUlESSwgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgTUlESSBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nRFJBLCAgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgZHJhIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdHNzI5LCAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBkcmEgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ19NQVgJCT0gVk9fTUFYX0VOVU1fVkFMVUUNCit9IFZPX0FVRElPX0NPRElOR1RZUEU7DQorDQorLyohDQorKiB0aGUgY2hhbm5lbCB0eXBlIHZhbHVlDQorKi8NCit0eXBlZGVmIGVudW0gew0KKwlWT19DSEFOTkVMX0NFTlRFUgkJCQk9IDEsCS8qITxjZW50ZXIgY2hhbm5lbCovDQorCVZPX0NIQU5ORUxfRlJPTlRfTEVGVAkJCT0gMTw8MSwJLyohPGZyb250IGxlZnQgY2hhbm5lbCovDQorCVZPX0NIQU5ORUxfRlJPTlRfUklHSFQJCQk9IDE8PDIsCS8qITxmcm9udCByaWdodCBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9TSURFX0xFRlQgIAkJCT0gMTw8MywgLyohPHNpZGUgbGVmdCBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9TSURFX1JJR0hUCQkJPSAxPDw0LCAvKiE8c2lkZSByaWdodCBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9CQUNLX0xFRlQJCQk9IDE8PDUsCS8qITxiYWNrIGxlZnQgY2hhbm5lbCovDQorCVZPX0NIQU5ORUxfQkFDS19SSUdIVAkJCT0gMTw8NiwJLyohPGJhY2sgcmlnaHQgY2hhbm5lbCovDQorCVZPX0NIQU5ORUxfQkFDS19DRU5URVIJCQk9IDE8PDcsCS8qITxiYWNrIGNlbnRlciBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9MRkVfQkFTUwkJCQk9IDE8PDgsCS8qITxsb3ctZnJlcXVlbmN5IGVmZmVjdHMgYmFzcyBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9BTEwJCQkJCT0gMHhmZmZmLC8qITxbZGVmYXVsdF0gaW5jbHVkZSBhbGwgY2hhbm5lbHMgKi8NCisJVk9fQ0hBTk5FTF9NQVgJCQkJCT0gVk9fTUFYX0VOVU1fVkFMVUUNCit9IFZPX0FVRElPX0NIQU5ORUxUWVBFOw0KKw0KKy8qKg0KKyAqIEdlbmVyYWwgYXVkaW8gZm9ybWF0IGluZm8NCisgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisJVk9fUzMyCVNhbXBsZVJhdGU7ICAvKiE8IFNhbXBsZSByYXRlICovDQorCVZPX1MzMglDaGFubmVsczsgICAgLyohPCBDaGFubmVsIGNvdW50ICovDQorCVZPX1MzMglTYW1wbGVCaXRzOyAgLyohPCBCaXRzIHBlciBzYW1wbGUgKi8NCit9IFZPX0FVRElPX0ZPUk1BVDsNCisNCisvKioNCisgKiBHZW5lcmFsIGF1ZGlvIG91dHB1dCBpbmZvDQorICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorCVZPX0FVRElPX0ZPUk1BVAlGb3JtYXQ7CQkJLyohPCBTYW1wbGUgcmF0ZSAqLw0KKwlWT19VMzIJCQlJbnB1dFVzZWQ7CQkvKiE8IENoYW5uZWwgY291bnQgKi8NCisJVk9fVTMyCQkJUmVzZXZlcjsJCS8qITwgUmVzZXZlcmVkICovDQorfSBWT19BVURJT19PVVRQVVRJTkZPOw0KKw0KKy8qKg0KKyAqIEdlbmVyYWwgYXVkaW8gY29kZWMgZnVuY3Rpb24gc2V0DQorICovDQordHlwZWRlZiBzdHJ1Y3QgVk9fQVVESU9fQ09ERUNBUEkNCit7DQorCS8qKg0KKwkgKiBJbml0IHRoZSBhdWRpbyBjb2RlYyBtb2R1bGUgYW5kIHJldHVybiBjb2RlYyBoYW5kbGUNCisJICogXHBhcmFtIHBoQ29kZWMgW09VVF0gUmV0dXJuIHRoZSB2aWRlbyBjb2RlYyBoYW5kbGUNCisJICogXHBhcmFtIHZUeXBlCVtJTl0gVGhlIGNvZGVjIHR5cGUgaWYgdGhlIG1vZHVsZSBzdXBwb3J0IG11bHRpIGNvZGVjLg0KKwkgKiBccGFyYW0gcFVzZXJEYXRhCVtJTl0gVGhlIGluaXQgcGFyYW0uIEl0IGlzIGVpdGhlciBhIG1lbW9yeSBvcGVyYXRvciBvciBhbiBhbGxvY2F0ZWQgbWVtb3J5DQorCSAqIFxyZXR2YWwgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKwkgKi8NCisJVk9fVTMyIChWT19BUEkgKiBJbml0KSAoVk9fSEFORExFICogcGhDb2RlYywgVk9fQVVESU9fQ09ESU5HVFlQRSB2VHlwZSwgVk9fQ09ERUNfSU5JVF9VU0VSREFUQSAqIHBVc2VyRGF0YSApOw0KKw0KKwkvKioNCisJICogU2V0IGlucHV0IGF1ZGlvIGRhdGEuDQorCSAqIFxwYXJhbSBoQ29kZWMgW0lOXV0gVGhlIGNvZGVjIGhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uLg0KKwkgKiBccGFyYW0gcElucHV0IFtJTl0gVGhlIGlucHV0IGJ1ZmZlciBwYXJhbS4NCisJICogXHJldHZhbCBWT19FUlJfTk9ORSBTdWNjZWVkZWQuDQorCSAqLw0KKwlWT19VMzIgKFZPX0FQSSAqIFNldElucHV0RGF0YSkgKFZPX0hBTkRMRSBoQ29kZWMsIFZPX0NPREVDQlVGRkVSICogcElucHV0KTsNCisNCisJLyoqDQorCSAqIEdldCB0aGUgb3V0dXQgYXVkaW8gZGF0YQ0KKwkgKiBccGFyYW0gaENvZGVjIFtJTl1dIFRoZSBjb2RlYyBoYW5kbGUgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgSW5pdCBmdW5jdGlvbi4NCisJICogXHBhcmFtIHBPdXRCdWZmZXIgW09VVF0gVGhlIG91dHB1dCBhdWRpbyBkYXRhDQorCSAqIFxwYXJhbSBwT3V0SW5mbyBbT1VUXSBUaGUgY29kZWMgZmlsbHMgYXVkaW8gZm9ybWF0IGFuZCB0aGUgaW5wdXQgZGF0YSBzaXplIHVzZWQgaW4gY3VycmVudCBjYWxsLg0KKwkgKgkJCQkJCSBwT3V0SW5mby0+SW5wdXRVc2VkIGlzIHRvdGFsIHVzZWQgaW5wdXQgZGF0YSBzaXplIGluIGJ5dGUuDQorCSAqIFxyZXR2YWwgIFZPX0VSUl9OT05FIFN1Y2NlZWRlZC4NCisJICoJCQlWT19FUlJfSU5QVVRfQlVGRkVSX1NNQUxMLiBUaGUgaW5wdXQgd2FzIGZpbmlzaGVkIG9yIHRoZSBpbnB1dCBkYXRhIHdhcyBub3QgZW5vdWdodC4gQ29udGludWUgdG8gaW5wdXQgDQorCSAqCQkJCQkJCQkJCWRhdGEgYmVmb3JlIG5leHQgY2FsbC4NCisJICovDQorCVZPX1UzMiAoVk9fQVBJICogR2V0T3V0cHV0RGF0YSkgKFZPX0hBTkRMRSBoQ29kZWMsIFZPX0NPREVDQlVGRkVSICogcE91dEJ1ZmZlciwgVk9fQVVESU9fT1VUUFVUSU5GTyAqIHBPdXRJbmZvKTsNCisNCisJLyoqDQorCSAqIFNldCB0aGUgcGFyYW1ldGVyIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtIElELg0KKwkgKiBccGFyYW0gaENvZGVjIFtJTl1dIFRoZSBjb2RlYyBoYW5kbGUgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgSW5pdCBmdW5jdGlvbi4NCisJICogXHBhcmFtIHVQYXJhbUlEIFtJTl0gVGhlIHBhcmFtIElELg0KKwkgKiBccGFyYW0gcERhdGEgW0lOXSBUaGUgcGFyYW0gdmFsdWUuDQorCSAqIFxyZXR2YWwgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKwkgKi8NCisJVk9fVTMyIChWT19BUEkgKiBTZXRQYXJhbSkgKFZPX0hBTkRMRSBoQ29kZWMsIFZPX1MzMiB1UGFyYW1JRCwgVk9fUFRSIHBEYXRhKTsNCisNCisJLyoqDQorCSAqIEdldCB0aGUgcGFyYW1ldGVyIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtIElELg0KKwkgKiBccGFyYW0gaENvZGVjIFtJTl1dIFRoZSBjb2RlYyBoYW5kbGUgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgSW5pdCBmdW5jdGlvbi4NCisJICogXHBhcmFtIHVQYXJhbUlEIFtJTl0gVGhlIHBhcmFtIElELg0KKwkgKiBccGFyYW0gcERhdGEgW0lOXSBUaGUgcGFyYW0gdmFsdWUuDQorCSAqIFxyZXR2YWwgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKwkgKi8NCisJVk9fVTMyIChWT19BUEkgKiBHZXRQYXJhbSkgKFZPX0hBTkRMRSBoQ29kZWMsIFZPX1MzMiB1UGFyYW1JRCwgVk9fUFRSIHBEYXRhKTsNCisNCisJLyoqDQorCSAqIFVuaW5pdCB0aGUgQ29kZWMuDQorCSAqIFxwYXJhbSBoQ29kZWMgW0lOXV0gVGhlIGNvZGVjIGhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uLg0KKwkgKiBccmV0dmFsIFZPX0VSUl9OT05FIFN1Y2NlZWRlZC4NCisJICovDQorCVZPX1UzMiAoVk9fQVBJICogVW5pbml0KSAoVk9fSEFORExFIGhDb2RlYyk7DQorfSBWT19BVURJT19DT0RFQ0FQSTsNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovDQorDQorI2VuZGlmIC8vIF9fdm9BdWRpb19IX18NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9JbmRleC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvSW5kZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDFhMGRiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvSW5kZXguaApAQCAtMCwwICsxLDE5MyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJdm9JbmRleC5oDQorDQorCUNvbnRlbnQ6CW1vZHVsZSBhbmQgSUQgZGVmaW5pdGlvbg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfX3ZvSW5kZXhfSF9fDQorI2RlZmluZSBfX3ZvSW5kZXhfSF9fDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovDQorDQorI2luY2x1ZGUgInZvVHlwZS5oIg0KKw0KKy8qIERlZmluZSB0aGUgbW9kdWxlIElEICovDQorI2RlZmluZSBfTUFLRV9TT1VSQ0VfSUQoaWQsIG5hbWUpIFwNCitWT19JTkRFWF9TUkNfIyNuYW1lID0gX1ZPX0lOREVYX1NPVVJDRSB8IGlkLA0KKw0KKyNkZWZpbmUgX01BS0VfQ09ERUNfSUQoaWQsIG5hbWUpIFwNCitWT19JTkRFWF9ERUNfIyNuYW1lID0gX1ZPX0lOREVYX0RFQyB8IGlkLCBcDQorVk9fSU5ERVhfRU5DXyMjbmFtZSA9IF9WT19JTkRFWF9FTkMgfCBpZCwNCisNCisjZGVmaW5lIF9NQUtFX0VGRkVDVF9JRChpZCwgbmFtZSkgXA0KK1ZPX0lOREVYX0VGVF8jI25hbWUgPSBfVk9fSU5ERVhfRUZGRUNUIHwgaWQsDQorDQorI2RlZmluZSBfTUFLRV9TSU5LX0lEKGlkLCBuYW1lKSBcDQorVk9fSU5ERVhfU05LXyMjbmFtZSA9IF9WT19JTkRFWF9TSU5LIHwgaWQsDQorDQorI2RlZmluZSBfTUFLRV9GSUxURVJfSUQoaWQsIG5hbWUpIFwNCitWT19JTkRFWF9GTFRfIyNuYW1lID0gX1ZPX0lOREVYX0ZJTFRFUiB8IGlkLA0KKw0KKyNkZWZpbmUgX01BS0VfT01YX0lEKGlkLCBuYW1lKSBcDQorVk9fSU5ERVhfT01YXyMjbmFtZSA9IF9WT19JTkRFWF9PTVggfCBpZCwNCisNCisjZGVmaW5lIF9NQUtFX01GV19JRChpZCwgbmFtZSkgXA0KK1ZPX0lOREVYX01GV18jI25hbWUgPSBfVk9fSU5ERVhfTUZXIHwgaWQsDQorDQorZW51bQ0KK3sNCisJX1ZPX0lOREVYX1NPVVJDRQkJPSAweDAxMDAwMDAwLA0KKwlfVk9fSU5ERVhfREVDCQkJPSAweDAyMDAwMDAwLA0KKwlfVk9fSU5ERVhfRU5DCQkJPSAweDAzMDAwMDAwLA0KKwlfVk9fSU5ERVhfRUZGRUNUCQk9IDB4MDQwMDAwMDAsDQorCV9WT19JTkRFWF9TSU5LCQkJPSAweDA1MDAwMDAwLA0KKwlfVk9fSU5ERVhfRklMVEVSCQk9IDB4MDYwMDAwMDAsDQorCV9WT19JTkRFWF9PTVgJCQk9IDB4MDcwMDAwMDAsDQorCV9WT19JTkRFWF9NRlcJCQk9IDB4MDgwMDAwMDAsDQorDQorCS8vIGRlZmluZSBmaWxlIHBhcnNlciBtb2R1bGVzDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgwMTAwMDAsIE1QNCkNCisJX01BS0VfU09VUkNFX0lEICgweDAyMDAwMCwgQVZJKQ0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MDMwMDAwLCBBU0YpDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgwNDAwMDAsIFJFQUwpDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgwNTAwMDAsIEFVRElPKQ0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MDYwMDAwLCBGTEFTSCkNCisJX01BS0VfU09VUkNFX0lEICgweDA3MDAwMCwgT0dHKQ0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MDgwMDAwLCBNS1YpDQorDQorCS8vIGRlZmluZSBuZXR3b3JrIHNvdXJjZSBtb2R1bGVzDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgxMTAwMDAsIFJUU1ApDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgxMjAwMDAsIEhUVFApDQorDQorCS8vIGRlZmluZSBDTU1CIHNvdXJjZSBtb2R1bGVzDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgyMDAwMDAsIENNTUIpDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgyMTAwMDAsIENNTUJfSU5OTykNCisJX01BS0VfU09VUkNFX0lEICgweDIyMDAwMCwgQ01NQl9URUxFKQ0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MjMwMDAwLCBDTU1CX1NJQU5PKQ0KKw0KKwkvLyBkZWZpbmUgRFZCVCBzb3VyY2UgbW9kdWxlcw0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MzAwMDAwLCBEVkJUKQ0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MzEwMDAwLCBEVkJUX0RJQkNPTSkNCisNCisJLy8gZGVmaW5lIG90aGVyIHNvdXJjZSBtb2R1bGVzDQorCV9NQUtFX1NPVVJDRV9JRCAoMHg0MDAwMDAsIElEMykNCisNCisJLy8gZGVmaW5lIHZpZGVvIGNvZGVjIG1vZHVsZXMNCisJX01BS0VfQ09ERUNfSUQgKDB4MDEwMDAwLCBIMjY0KQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgwMjAwMDAsIE1QRUc0KQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgwMzAwMDAsIEgyNjMpDQorCV9NQUtFX0NPREVDX0lEICgweDA0MDAwMCwgUzI2MykNCisJX01BS0VfQ09ERUNfSUQgKDB4MDUwMDAwLCBSVikNCisJX01BS0VfQ09ERUNfSUQgKDB4MDYwMDAwLCBXTVYpDQorCV9NQUtFX0NPREVDX0lEICgweDA3MDAwMCwgRElWWDMpDQorCV9NQUtFX0NPREVDX0lEICgweDA4MDAwMCwgTUpQRUcpDQorCV9NQUtFX0NPREVDX0lEICgweDA5MDAwMCwgTVBFRzIpDQorCV9NQUtFX0NPREVDX0lEICgweDBBMDAwMCwgVlA2KQ0KKw0KKwkvLyBkZWZpbmUgYXVkaW8gY29kZWMgbW9kdWxlcw0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyMTAwMDAsIEFBQykNCisJX01BS0VfQ09ERUNfSUQgKDB4MjIwMDAwLCBNUDMpDQorCV9NQUtFX0NPREVDX0lEICgweDIzMDAwMCwgV01BKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyNDAwMDAsIFJBKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyNTAwMDAsIEFNUk5CKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyNjAwMDAsIEFNUldCKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyNzAwMDAsIEFNUldCUCkNCisJX01BS0VfQ09ERUNfSUQgKDB4MjgwMDAwLCBRQ0VMUCkNCisJX01BS0VfQ09ERUNfSUQgKDB4MjkwMDAwLCBFVlJDKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyQTAwMDAsIEFEUENNKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyQjAwMDAsIE1JREkpDQorCV9NQUtFX0NPREVDX0lEICgweDJDMDAwMCwgQUMzKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyRDAwMDAsIEZMQUMpDQorCV9NQUtFX0NPREVDX0lEICgweDJFMDAwMCwgRFJBKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyRjAwMDAsIE9HRykNCisJX01BS0VfQ09ERUNfSUQgKDB4MzAwMDAwLCBHNzI5KQ0KKw0KKwkvLyBkZWZpbmUgaW1hZ2UgY29kZWMgbW9kdWxlcw0KKwlfTUFLRV9DT0RFQ19JRCAoMHg0MTAwMDAsIEpQRUcpDQorCV9NQUtFX0NPREVDX0lEICgweDQyMDAwMCwgR0lGKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHg0MzAwMDAsIFBORykNCisJX01BS0VfQ09ERUNfSUQgKDB4NDQwMDAwLCBUSUYpDQorDQorCS8vIGRlZmluZSBlZmZlY3QgbW9kdWxlcw0KKwlfTUFLRV9FRkZFQ1RfSUQgKDB4MDEwMDAwLCBFUSkNCisNCisJLy8gZGVmaW5lIHNpbmsgbW9kdWxlcw0KKwlfTUFLRV9TSU5LX0lEICgweDAxMDAwMCwgVklERU8pDQorCV9NQUtFX1NJTktfSUQgKDB4MDIwMDAwLCBBVURJTykNCisJX01BS0VfU0lOS19JRCAoMHgwMzAwMDAsIENDUlJSKQ0KKwlfTUFLRV9TSU5LX0lEICgweDA0MDAwMCwgQ0NSUlYpDQorDQorCV9NQUtFX1NJTktfSUQgKDB4MTEwMDAwLCBNUDQpDQorCV9NQUtFX1NJTktfSUQgKDB4MTIwMDAwLCBBVkkpDQorCV9NQUtFX1NJTktfSUQgKDB4MTMwMDAwLCBBRlcpDQorDQorCS8vIGRlZmluZSBtZWRpYSBmcmFtZSBtb2R1bGUgSUQNCisJX01BS0VfTUZXX0lEICgweDAxMDAwMCwgVk9NTVBMQVkpDQorCV9NQUtFX01GV19JRCAoMHgwMjAwMDAsIFZPTU1SRUMpDQorCV9NQUtFX01GV19JRCAoMHgwMzAwMDAsIFZPTUUpDQorfTsNCisNCisNCisvKiBkZWZpbmUgdGhlIGVycm9yIElEICovDQorI2RlZmluZSBWT19FUlJfTk9ORQkJCQkJCTB4MDAwMDAwMDANCisjZGVmaW5lIFZPX0VSUl9GSU5JU0gJCQkJCTB4MDAwMDAwMDENCisjZGVmaW5lIFZPX0VSUl9CQVNFCQkJCQkJMFg4MDAwMDAwMA0KKyNkZWZpbmUgVk9fRVJSX0ZBSUxFRAkJCQkJMHg4MDAwMDAwMQ0KKyNkZWZpbmUgVk9fRVJSX09VVE9GX01FTU9SWQkJCQkweDgwMDAwMDAyDQorI2RlZmluZSBWT19FUlJfTk9UX0lNUExFTUVOVAkJCTB4ODAwMDAwMDMNCisjZGVmaW5lIFZPX0VSUl9JTlZBTElEX0FSRwkJCQkweDgwMDAwMDA0DQorI2RlZmluZSBWT19FUlJfSU5QVVRfQlVGRkVSX1NNQUxMCQkweDgwMDAwMDA1DQorI2RlZmluZSBWT19FUlJfT1VUUFVUX0JVRkZFUl9TTUFMTAkJMHg4MDAwMDAwNg0KKyNkZWZpbmUgVk9fRVJSX1dST05HX1NUQVRVUwkJCQkweDgwMDAwMDA3DQorI2RlZmluZSBWT19FUlJfV1JPTkdfUEFSQU1fSUQJCQkweDgwMDAwMDA4DQorI2RlZmluZSBWT19FUlJfTElDRU5TRV9FUlJPUgkJCTB4ODAwMDAwMDkNCisNCisvKiB4eHggaXMgdGhlIG1vZHVsZSBJRA0KKyNkZWZpbmUgVk9fRVJSX0ZBSUxFRAkJCQkJMHg4eHh4MDAwMQ0KKyNkZWZpbmUgVk9fRVJSX09VVE9GX01FTU9SWQkJCQkweDh4eHgwMDAyDQorI2RlZmluZSBWT19FUlJfTk9UX0lNUExFTUVOVAkJCTB4OHh4eDAwMDMNCisjZGVmaW5lIFZPX0VSUl9JTlZBTElEX0FSRwkJCQkweDh4eHgwMDA0DQorI2RlZmluZSBWT19FUlJfSU5QVVRfQlVGRkVSX1NNQUxMCQkweDh4eHgwMDA1DQorI2RlZmluZSBWT19FUlJfT1VUUFVUX0JVRkZFUl9TTUFMTAkJMHg4eHh4MDAwNg0KKyNkZWZpbmUgVk9fRVJSX1dST05HX1NUQVRVUwkJCQkweDh4eHgwMDA3DQorI2RlZmluZSBWT19FUlJfV1JPTkdfUEFSQU1fSUQJCQkweDh4eHgwMDA4DQorI2RlZmluZSBWT19FUlJfTElDRU5TRV9FUlJPUgkJCTB4OHh4eDAwMDkNCisvLyBNb2R1bGUgb3duIGVycm9yIElEDQorI2RlZmluZSBWT19FUlJfTW9kdWxlCQkJCQkweDh4eHgwWDAwDQorKi8NCisgDQorI2RlZmluZQlWT19QSURfQ09NTU9OX0JBU0UJCQkJIDB4NDAwMDAwMDAJCQkJCQkvKiE8IFRoZSBiYXNlIG9mIGNvbW1vbiBwYXJhbSBJRCAqLw0KKyNkZWZpbmUJVk9fUElEX0NPTU1PTl9RVUVSWU1FTQkJCShWT19QSURfQ09NTU9OX0JBU0UgfCAwWDAwMDEpCS8qITwgUXVlcnkgdGhlIG1lbW9yeSBuZWVkZWQ7IFJlc2VydmVkLiAqLw0KKyNkZWZpbmUJVk9fUElEX0NPTU1PTl9JTlBVVFRZUEUJCQkoVk9fUElEX0NPTU1PTl9CQVNFIHwgMFgwMDAyKQkvKiE8IFNldCBvciBnZXQgdGhlIGlucHV0IGJ1ZmZlciB0eXBlLiBWT19JTlBVVF9UWVBFICovDQorI2RlZmluZQlWT19QSURfQ09NTU9OX0hBU1JFU09VUkNFCQkoVk9fUElEX0NPTU1PTl9CQVNFIHwgMFgwMDAzKQkvKiE8IFF1ZXJ5IGl0IGhhcyByZXNvdXJjZSB0byBiZSB1c2VkLiBWT19VMzIgKiwgMSBoYXZlLCAwIE5vICovDQorI2RlZmluZQlWT19QSURfQ09NTU9OX0hFQUREQVRBCQkJKFZPX1BJRF9DT01NT05fQkFTRSB8IDBYMDAwNCkJLyohPCBEZWNvZGVyIHRyYWNrIGhlYWRlciBkYXRhLiBWT19DT0RFQ0JVRkZFUiAqICovDQorI2RlZmluZQlWT19QSURfQ09NTU9OX0ZMVVNICQkJCShWT19QSURfQ09NTU9OX0JBU0UgfCAwWDAwMDUpCS8qITwgRmx1c2ggdGhlIGNvZGVjIGJ1ZmZlci4gVk9fVTMyICosIDEgRmx1c2gsIDAgTm8gKiAqLw0KKw0KKy8qDQorLy8gTW9kdWxlIFBhcmFtIElEDQorI2RlZmluZSBWT19JRF9NZG91bGUJCQkJCTB4MHh4eDEwMDANCisqLw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisNCisjZW5kaWYgLy8gX192b0luZGV4X0hfXw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b01lbS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvTWVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRmYjYzNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b01lbS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4KKyAqKgorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqKgorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqKgorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwlGaWxlOgkJdm9NZW0uaAorCisJQ29udGVudDoJbWVtb3J5IGZ1bmN0aW9ucyAmIGRhdGEgc3RydWN0dXJlcworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fdm9NZW1fSF9fCisjZGVmaW5lIF9fdm9NZW1fSF9fCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworI2luY2x1ZGUgInZvSW5kZXguaCIKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlWT19TMzIJCQkJU2l6ZTsJCQkJLyohPCBCdWZmZXIgc3RyaWRlICovCisJVk9fUzMyCQkJCUZsYWc7CisJVk9fUFRSCQkJCVZCdWZmZXI7CQkJLyohPCB1c2VyIGRhdGEgcG9pbnRlciAqLworCVZPX1BUUgkJCQlQQnVmZmVyOwkJCS8qITwgdXNlciBkYXRhIHBvaW50ZXIgKi8KK30KK1ZPX01FTV9JTkZPOworCit0eXBlZGVmIHN0cnVjdCBWT19NRU1fT1BFUkFUT1IKK3sKKwlWT19VMzIgKFZPX0FQSSAqIEFsbG9jKSAoVk9fUzMyIHVJRCwgVk9fTUVNX0lORk8gKiBwTWVtSW5mbyk7CisJVk9fVTMyIChWT19BUEkgKiBGcmVlKSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBCdWZmKTsKKwlWT19VMzIgKFZPX0FQSSAqIFNldCkgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZiwgVk9fVTggdVZhbHVlLCBWT19VMzIgdVNpemUpOworCVZPX1UzMiAoVk9fQVBJICogQ29weSkgKFZPX1MzMiB1SUQsIFZPX1BUUiBwRGVzdCwgVk9fUFRSIHBTb3VyY2UsIFZPX1UzMiB1U2l6ZSk7CisJVk9fVTMyIChWT19BUEkgKiBDaGVjaykgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZmVyLCBWT19VMzIgdVNpemUpOworCVZPX1MzMiAoVk9fQVBJICogQ29tcGFyZSkgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZmVyMSwgVk9fUFRSIHBCdWZmZXIyLCBWT19VMzIgdVNpemUpOworCVZPX1UzMiAoVk9fQVBJICogTW92ZSkgKFZPX1MzMiB1SUQsIFZPX1BUUiBwRGVzdCwgVk9fUFRSIHBTb3VyY2UsIFZPX1UzMiB1U2l6ZSk7Cit9IFZPX01FTV9PUEVSQVRPUjsKKworI2RlZmluZSB2b01lbUFsbG9jKHBCdWZmLCBwTWVtT1AsIElELCBuU2l6ZSkgXAoreyBcCisJVk9fTUVNX0lORk8gdm9NZW1JbmZvOyBcCisJdm9NZW1JbmZvLlNpemU9blNpemU7IFwKKwlwTWVtT1AtPkFsbG9jKElELCAmdm9NZW1JbmZvKTsgXAorCXBCdWZmPShWT19QQllURSl2b01lbUluZm8uVkJ1ZmZlcjsgXAorfQorCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCisKKyNlbmRpZiAvLyBfX3ZvTWVtX0hfXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvVHlwZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NjkxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9UeXBlLmgKQEAgLTAsMCArMSwyMjEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXZvVHlwZS5oDQorDQorCUNvbnRlbnQ6CWRhdGEgdHlwZSBkZWZpbml0aW9uDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaWZuZGVmIF9fdm9UeXBlX0hfXw0KKyNkZWZpbmUgX192b1R5cGVfSF9fDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovDQorDQorI2lmZGVmIF9XSU4zMg0KKyMJZGVmaW5lIFZPX0FQSSBfX2NkZWNsDQorIwlkZWZpbmUgVk9fQ0JJIF9fc3RkY2FsbA0KKyNlbHNlDQorIwlkZWZpbmUgVk9fQVBJDQorIwlkZWZpbmUgVk9fQ0JJDQorI2VuZGlmIC8vX1dJTjMyDQorDQorLyoqIFZPX0lOIGlzIHVzZWQgdG8gaWRlbnRpZnkgaW5wdXRzIHRvIGFuIFZPIGZ1bmN0aW9uLiAgVGhpcyBkZXNpZ25hdGlvbg0KKyAgICB3aWxsIGFsc28gYmUgdXNlZCBpbiB0aGUgY2FzZSBvZiBhIHBvaW50ZXIgdGhhdCBwb2ludHMgdG8gYSBwYXJhbWV0ZXINCisgICAgdGhhdCBpcyB1c2VkIGFzIGFuIG91dHB1dC4gKi8NCisjaWZuZGVmIFZPX0lODQorI2RlZmluZSBWT19JTg0KKyNlbmRpZg0KKw0KKy8qKiBWT19PVVQgaXMgdXNlZCB0byBpZGVudGlmeSBvdXRwdXRzIGZyb20gYW4gVk8gZnVuY3Rpb24uICBUaGlzDQorICAgIGRlc2lnbmF0aW9uIHdpbGwgYWxzbyBiZSB1c2VkIGluIHRoZSBjYXNlIG9mIGEgcG9pbnRlciB0aGF0IHBvaW50cw0KKyAgICB0byBhIHBhcmFtZXRlciB0aGF0IGlzIHVzZWQgYXMgYW4gaW5wdXQuICovDQorI2lmbmRlZiBWT19PVVQNCisjZGVmaW5lIFZPX09VVA0KKyNlbmRpZg0KKw0KKy8qKiBWT19JTk9VVCBpcyB1c2VkIHRvIGlkZW50aWZ5IHBhcmFtZXRlcnMgdGhhdCBtYXkgYmUgZWl0aGVyIGlucHV0cyBvcg0KKyAgICBvdXRwdXRzIGZyb20gYW4gVk8gZnVuY3Rpb24gYXQgdGhlIHNhbWUgdGltZS4gIFRoaXMgZGVzaWduYXRpb24gd2lsbA0KKyAgICBhbHNvIGJlIHVzZWQgaW4gdGhlIGNhc2Ugb2YgYSBwb2ludGVyIHRoYXQgIHBvaW50cyB0byBhIHBhcmFtZXRlciB0aGF0DQorICAgIGlzIHVzZWQgYm90aCBhcyBhbiBpbnB1dCBhbmQgYW4gb3V0cHV0LiAqLw0KKyNpZm5kZWYgVk9fSU5PVVQNCisjZGVmaW5lIFZPX0lOT1VUDQorI2VuZGlmDQorDQorI2RlZmluZSBWT19NQVhfRU5VTV9WQUxVRQkwWDdGRkZGRkZGDQorDQorLyoqIFZPX1ZPSUQgKi8NCit0eXBlZGVmIHZvaWQgVk9fVk9JRDsNCisNCisvKiogVk9fVTggaXMgYW4gOCBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyBieXRlIGFsaWduZWQgKi8NCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVk9fVTg7DQorDQorLyoqIFZPX0JZVEUgaXMgYW4gOCBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyBieXRlIGFsaWduZWQgKi8NCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVk9fQllURTsNCisNCisvKiogVk9fUzggaXMgYW4gOCBiaXQgc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgYnl0ZSBhbGlnbmVkICovDQordHlwZWRlZiBzaWduZWQgY2hhciBWT19TODsNCisNCisvKiogVk9fQ0hBUiBpcyBhbiA4IGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyBieXRlIGFsaWduZWQgKi8NCit0eXBlZGVmIGNoYXIgVk9fQ0hBUjsNCisNCisvKiogVk9fVTE2IGlzIGEgMTYgYml0IHVuc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgMTYgYml0IHdvcmQgYWxpZ25lZCAqLw0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgVk9fVTE2Ow0KKw0KKy8qKiBWT19XQ0hBUiBpcyBhIDE2IGJpdCB1bnNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIDE2IGJpdCB3b3JkIGFsaWduZWQgKi8NCisjaWYgZGVmaW5lZCBfV0lOMzINCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFZPX1dDSEFSOw0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQqIFZPX1BXQ0hBUjsNCisjZWxpZiBkZWZpbmVkIExJTlVYDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFZPX1dDSEFSOw0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciogVk9fUFdDSEFSOw0KKyNlbmRpZg0KKw0KKy8qKiBWT19TMTYgaXMgYSAxNiBiaXQgc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgMTYgYml0IHdvcmQgYWxpZ25lZCAqLw0KK3R5cGVkZWYgc2lnbmVkIHNob3J0IFZPX1MxNjsNCisNCisvKiogVk9fVTMyIGlzIGEgMzIgYml0IHVuc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgMzIgYml0IHdvcmQgYWxpZ25lZCAqLw0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBWT19VMzI7DQorDQorLyoqIFZPX1MzMiBpcyBhIDMyIGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyAzMiBiaXQgd29yZCBhbGlnbmVkICovDQordHlwZWRlZiBzaWduZWQgbG9uZyBWT19TMzI7DQorDQorLyogVXNlcnMgd2l0aCBjb21waWxlcnMgdGhhdCBjYW5ub3QgYWNjZXB0IHRoZSAibG9uZyBsb25nIiBkZXNpZ25hdGlvbiBzaG91bGQNCisgICBkZWZpbmUgdGhlIFZPX1NLSVA2NEJJVCBtYWNyby4gIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IHRoaXMgbWF5IGNhdXNlDQorICAgc29tZSBjb21wb25lbnRzIHRvIGZhaWwgdG8gY29tcGlsZSBpZiB0aGUgY29tcG9uZW50IHdhcyB3cml0dGVuIHRvIHJlcXVpcmUNCisgICA2NCBiaXQgaW50ZWdyYWwgdHlwZXMuICBIb3dldmVyLCB0aGVzZSBjb21wb25lbnRzIHdvdWxkIE5PVCBjb21waWxlIGFueXdheQ0KKyAgIHNpbmNlIHRoZSBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSB3YXkgdGhlIGNvbXBvbmVudCB3YXMgd3JpdHRlbi4NCisqLw0KKyNpZm5kZWYgVk9fU0tJUDY0QklUDQorI2lmZGVmIF9XSU4zMg0KKy8qKiBWT19VNjQgaXMgYSA2NCBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyA2NCBiaXQgd29yZCBhbGlnbmVkICovDQordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICBWT19VNjQ7DQorLyoqIFZPX1M2NCBpcyBhIDY0IGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyA2NCBiaXQgd29yZCBhbGlnbmVkICovDQordHlwZWRlZiBzaWduZWQgICBfX2ludDY0ICBWT19TNjQ7DQorI2Vsc2UgLy8gV0lOMzINCisvKiogVk9fVTY0IGlzIGEgNjQgYml0IHVuc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgNjQgYml0IHdvcmQgYWxpZ25lZCAqLw0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFZPX1U2NDsNCisvKiogVk9fUzY0IGlzIGEgNjQgYml0IHNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIDY0IGJpdCB3b3JkIGFsaWduZWQgKi8NCit0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgVk9fUzY0Ow0KKyNlbmRpZiAvLyBXSU4zMg0KKyNlbmRpZiAvLyBWT19TS0lQNjRCSVQNCisNCisvKiogVGhlIFZPX0JPT0wgdHlwZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHJlcHJlc2VudCBhIHRydWUgb3IgYSBmYWxzZQ0KKyAgICB2YWx1ZSB3aGVuIHBhc3NpbmcgcGFyYW1ldGVycyB0byBhbmQgZnJvbSB0aGUgVk8gY29yZSBhbmQgY29tcG9uZW50cy4gIFRoZQ0KKyAgICBWT19CT09MIGlzIGEgMzIgYml0IHF1YW50aXR5IGFuZCBpcyBhbGlnbmVkIG9uIGEgMzIgYml0IHdvcmQgYm91bmRhcnkuDQorICovDQordHlwZWRlZiBlbnVtIFZPX0JPT0wgew0KKyAgICBWT19GQUxTRSA9IDAsDQorICAgIFZPX1RSVUUgPSAhVk9fRkFMU0UsDQorCVZPX0JPT0xfTUFYID0gVk9fTUFYX0VOVU1fVkFMVUUNCit9IFZPX0JPT0w7DQorDQorLyoqIFRoZSBWT19QVFIgdHlwZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHBhc3MgcG9pbnRlcnMgYmV0d2VlbiB0aGUgVk8NCisgICAgYXBwbGljYXRpb25zIGFuZCB0aGUgVk8gQ29yZSBhbmQgY29tcG9uZW50cy4gIFRoaXMgaXMgYSAzMiBiaXQgcG9pbnRlciBhbmQNCisgICAgaXMgYWxpZ25lZCBvbiBhIDMyIGJpdCBib3VuZGFyeS4NCisgKi8NCit0eXBlZGVmIHZvaWQqIFZPX1BUUjsNCisNCisvKiogVGhlIFZPX0hBTkRMRSB0eXBlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcGFzcyBwb2ludGVycyBiZXR3ZWVuIHRoZSBWTw0KKyAgICBhcHBsaWNhdGlvbnMgYW5kIHRoZSBWTyBDb3JlIGFuZCBjb21wb25lbnRzLiAgVGhpcyBpcyBhIDMyIGJpdCBwb2ludGVyIGFuZA0KKyAgICBpcyBhbGlnbmVkIG9uIGEgMzIgYml0IGJvdW5kYXJ5Lg0KKyAqLw0KK3R5cGVkZWYgdm9pZCogVk9fSEFORExFOw0KKw0KKy8qKiBUaGUgVk9fU1RSSU5HIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBwYXNzICJDIiB0eXBlIHN0cmluZ3MgYmV0d2Vlbg0KKyAgICB0aGUgYXBwbGljYXRpb24gYW5kIHRoZSBjb3JlIGFuZCBjb21wb25lbnQuICBUaGUgVk9fU1RSSU5HIHR5cGUgaXMgYSAzMg0KKyAgICBiaXQgcG9pbnRlciB0byBhIHplcm8gdGVybWluYXRlZCBzdHJpbmcuICBUaGUgIHBvaW50ZXIgaXMgd29yZCBhbGlnbmVkIGFuZA0KKyAgICB0aGUgc3RyaW5nIGlzIGJ5dGUgYWxpZ25lZC4NCisgKi8NCit0eXBlZGVmIGNoYXIqIFZPX1BDSEFSOw0KKw0KKy8qKiBUaGUgVk9fUEJZVEUgdHlwZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHBhc3MgYXJyYXlzIG9mIGJ5dGVzIHN1Y2ggYXMNCisgICAgYnVmZmVycyBiZXR3ZWVuIHRoZSBhcHBsaWNhdGlvbiBhbmQgdGhlIGNvbXBvbmVudCBhbmQgY29yZS4gIFRoZSBWT19QQllURQ0KKyAgICB0eXBlIGlzIGEgMzIgYml0IHBvaW50ZXIgdG8gYSB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nLiAgVGhlICBwb2ludGVyIGlzIHdvcmQNCisgICAgYWxpZ25lZCBhbmQgdGhlIHN0cmluZyBpcyBieXRlIGFsaWduZWQuDQorICovDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyKiBWT19QQllURTsNCisNCisvKiogVGhlIFZPX1BUQ0hBUiB0eXBlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcGFzcyBhcnJheXMgb2Ygd2NoYXIgc3VjaCBhcw0KKyAgICB1bmljb2RlIGNoYXIgYmV0d2VlbiB0aGUgYXBwbGljYXRpb24gYW5kIHRoZSBjb21wb25lbnQgYW5kIGNvcmUuICBUaGUgVk9fUFRDSEFSDQorICAgIHR5cGUgaXMgYSAzMiBiaXQgcG9pbnRlciB0byBhIHplcm8gdGVybWluYXRlZCBzdHJpbmcuICBUaGUgIHBvaW50ZXIgaXMgd29yZA0KKyAgICBhbGlnbmVkIGFuZCB0aGUgc3RyaW5nIGlzIGJ5dGUgYWxpZ25lZC4NCisgKi8NCisvKg0KKyNpZiAhZGVmaW5lZCBMSU5VWA0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQqIFZPX1BUQ0hBUjsNCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0KiBWT19UQ0hBUjsNCisjZWxzZQ0KK3R5cGVkZWYgY2hhciogVk9fUFRDSEFSOw0KK3R5cGVkZWYgY2hhciBWT19UQ0hBUjsNCisjZW5kaWYNCisqLw0KKw0KKyNpZm5kZWYgTlVMTA0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyNkZWZpbmUgTlVMTCAgICAwDQorI2Vsc2UNCisjZGVmaW5lIE5VTEwgICAgKCh2b2lkICopMCkNCisjZW5kaWYNCisjZW5kaWYNCisNCisvKioNCisgKiBJbnB1dCBzdHJlYW0gZm9ybWF0LCBGcmFtZSBvciBTdHJlYW0uLg0KKyAqLw0KK3R5cGVkZWYgZW51bSB7DQorICAgIFZPX0lOUFVUX0ZSQU1FCT0gMSwJLyohPCBJbnB1dCBjb250YWlucyBjb21wbGV0ZWx5IGZyYW1lKHMpIGRhdGEuICovDQorICAgIFZPX0lOUFVUX1NUUkVBTSwJCS8qITwgSW5wdXQgaXMgc3RyZWFtIGRhdGEuICovDQorCVZPX0lOUFVUX1NUUkVBTV9NQVggPSBWT19NQVhfRU5VTV9WQUxVRQ0KK30gVk9fSU5QVVRfVFlQRTsNCisNCisNCisvKioNCisgKiBHZW5lcmFsIGRhdGEgYnVmZmVyLCB1c2VkIGFzIGlucHV0IG9yIG91dHB1dC4NCisgKi8NCit0eXBlZGVmIHN0cnVjdCB7DQorCVZPX1BCWVRFCUJ1ZmZlcjsJCS8qITwgQnVmZmVyIHBvaW50ZXIgKi8NCisJVk9fVTMyCQlMZW5ndGg7CQkvKiE8IEJ1ZmZlciBzaXplIGluIGJ5dGUgKi8NCisJVk9fUzY0CQlUaW1lOwkJLyohPCBUaGUgdGltZSBvZiB0aGUgYnVmZmVyICovDQorfSBWT19DT0RFQ0JVRkZFUjsNCisNCisNCisvKioNCisgKiBUaGUgaW5pdCBtZW1kYXRhIGZsYWcuDQorICovDQordHlwZWRlZiBlbnVtew0KKwlWT19JTUZfVVNFUk1FTU9QRVJBVE9SCQk9MCwJLyohPCBtZW1EYXRhIGlzICB0aGUgcG9pbnRlciBvZiBtZW1vcGVyYXRvciBmdW5jdGlvbiovDQorCVZPX0lNRl9QUkVBTExPQ0FURURCVUZGRVIJPTEsCS8qITwgbWVtRGF0YSBpcyAgcHJlYWxsb2NhdGVkIG1lbW9yeSovDQorCVZPX0lNRl9NQVggPSBWT19NQVhfRU5VTV9WQUxVRQ0KK31WT19JTklUX01FTV9GbEFHOw0KKw0KKw0KKy8qKg0KKyAqIFRoZSBpbml0IG1lbW9yeSBzdHJ1Y3R1cmUuLg0KKyAqLw0KK3R5cGVkZWYgc3RydWN0ew0KKwlWT19JTklUX01FTV9GbEFHCQkJbWVtZmxhZzsJLyohPG1lbW9yeSBmbGFnICAqLw0KKwlWT19QVFIJCQkJCQltZW1EYXRhOwkvKiE8YSBwb2ludGVyIHRvIFZPX01FTV9PUEVSQVRPUiBvciBhIHByZWFsbG9jYXRlZCBidWZmZXIgICovDQorCVZPX1UzMgkJCQkJCXJlc2VydmVkMTsJLyohPHJlc2VydmVkICAqLw0KKwlWT19VMzIJCQkJCQlyZXNlcnZlZDI7CS8qITxyZXNlcnZlZCAqLw0KK31WT19DT0RFQ19JTklUX1VTRVJEQVRBOw0KKw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisNCisjZW5kaWYgLy8gX192b1R5cGVfSF9fDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL21wM2RlYy9NUDNEZWNvZGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9tcDNkZWMvTVAzRGVjb2Rlci5jcHAKaW5kZXggZWZjYjQ3Ni4uZjQwYmQxMSAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL21wM2RlYy9NUDNEZWNvZGVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvbXAzZGVjL01QM0RlY29kZXIuY3BwCkBAIC0yNywxMyArMjcsMzUgQEAKIAogTVAzRGVjb2Rlcjo6TVAzRGVjb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSkKICAgICA6IG1Tb3VyY2Uoc291cmNlKSwKKyAgICAgIG1OdW1DaGFubmVscygwKSwKICAgICAgIG1TdGFydGVkKGZhbHNlKSwKICAgICAgIG1CdWZmZXJHcm91cChOVUxMKSwKICAgICAgIG1Db25maWcobmV3IHRQVk1QM0RlY29kZXJFeHRlcm5hbCksCiAgICAgICBtRGVjb2RlckJ1ZihOVUxMKSwKICAgICAgIG1BbmNob3JUaW1lVXMoMCksCi0gICAgICBtTnVtU2FtcGxlc091dHB1dCgwKSwKKyAgICAgIG1OdW1GcmFtZXNPdXRwdXQoMCksCiAgICAgICBtSW5wdXRCdWZmZXIoTlVMTCkgeworICAgIGluaXQoKTsKK30KKwordm9pZCBNUDNEZWNvZGVyOjppbml0KCkgeworICAgIHNwPE1ldGFEYXRhPiBzcmNGb3JtYXQgPSBtU291cmNlLT5nZXRGb3JtYXQoKTsKKworICAgIGludDMyX3Qgc2FtcGxlUmF0ZTsKKyAgICBDSEVDSyhzcmNGb3JtYXQtPmZpbmRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCAmbU51bUNoYW5uZWxzKSk7CisgICAgQ0hFQ0soc3JjRm9ybWF0LT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZzYW1wbGVSYXRlKSk7CisKKyAgICBtTWV0YSA9IG5ldyBNZXRhRGF0YTsKKyAgICBtTWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0FVRElPX1JBVyk7CisgICAgbU1ldGEtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIG1OdW1DaGFubmVscyk7CisgICAgbU1ldGEtPnNldEludDMyKGtLZXlTYW1wbGVSYXRlLCBzYW1wbGVSYXRlKTsKKworICAgIGludDY0X3QgZHVyYXRpb25VczsKKyAgICBpZiAoc3JjRm9ybWF0LT5maW5kSW50NjQoa0tleUR1cmF0aW9uLCAmZHVyYXRpb25VcykpIHsKKyAgICAgICAgbU1ldGEtPnNldEludDY0KGtLZXlEdXJhdGlvbiwgZHVyYXRpb25Vcyk7CisgICAgfQorCisgICAgbU1ldGEtPnNldENTdHJpbmcoa0tleURlY29kZXJDb21wb25lbnQsICJNUDNEZWNvZGVyIik7CiB9CiAKIE1QM0RlY29kZXI6On5NUDNEZWNvZGVyKCkgewpAQCAtNjIsNyArODQsNyBAQAogICAgIG1Tb3VyY2UtPnN0YXJ0KCk7CiAKICAgICBtQW5jaG9yVGltZVVzID0gMDsKLSAgICBtTnVtU2FtcGxlc091dHB1dCA9IDA7CisgICAgbU51bUZyYW1lc091dHB1dCA9IDA7CiAgICAgbVN0YXJ0ZWQgPSB0cnVlOwogCiAgICAgcmV0dXJuIE9LOwpAQCAtOTAsMjYgKzExMiw3IEBACiB9CiAKIHNwPE1ldGFEYXRhPiBNUDNEZWNvZGVyOjpnZXRGb3JtYXQoKSB7Ci0gICAgc3A8TWV0YURhdGE+IHNyY0Zvcm1hdCA9IG1Tb3VyY2UtPmdldEZvcm1hdCgpOwotCi0gICAgaW50MzJfdCBudW1DaGFubmVsczsKLSAgICBpbnQzMl90IHNhbXBsZVJhdGU7Ci0gICAgQ0hFQ0soc3JjRm9ybWF0LT5maW5kSW50MzIoa0tleUNoYW5uZWxDb3VudCwgJm51bUNoYW5uZWxzKSk7Ci0gICAgQ0hFQ0soc3JjRm9ybWF0LT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZzYW1wbGVSYXRlKSk7Ci0KLSAgICBzcDxNZXRhRGF0YT4gbWV0YSA9IG5ldyBNZXRhRGF0YTsKLSAgICBtZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fUkFXKTsKLSAgICBtZXRhLT5zZXRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCBudW1DaGFubmVscyk7Ci0gICAgbWV0YS0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOwotCi0gICAgaW50NjRfdCBkdXJhdGlvblVzOwotICAgIGlmIChzcmNGb3JtYXQtPmZpbmRJbnQ2NChrS2V5RHVyYXRpb24sICZkdXJhdGlvblVzKSkgewotICAgICAgICBtZXRhLT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIGR1cmF0aW9uVXMpOwotICAgIH0KLQotICAgIG1ldGEtPnNldENTdHJpbmcoa0tleURlY29kZXJDb21wb25lbnQsICJNUDNEZWNvZGVyIik7Ci0KLSAgICByZXR1cm4gbWV0YTsKKyAgICByZXR1cm4gbU1ldGE7CiB9CiAKIHN0YXR1c190IE1QM0RlY29kZXI6OnJlYWQoCkBAIC0xMjIsNyArMTI1LDcgQEAKICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLT5nZXRTZWVrVG8oJnNlZWtUaW1lVXMpKSB7CiAgICAgICAgIENIRUNLKHNlZWtUaW1lVXMgPj0gMCk7CiAKLSAgICAgICAgbU51bVNhbXBsZXNPdXRwdXQgPSAwOworICAgICAgICBtTnVtRnJhbWVzT3V0cHV0ID0gMDsKIAogICAgICAgICBpZiAobUlucHV0QnVmZmVyKSB7CiAgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKQEAgLTE0Miw3ICsxNDUsNyBAQAogICAgICAgICBpbnQ2NF90IHRpbWVVczsKICAgICAgICAgaWYgKG1JbnB1dEJ1ZmZlci0+bWV0YV9kYXRhKCktPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVVcykpIHsKICAgICAgICAgICAgIG1BbmNob3JUaW1lVXMgPSB0aW1lVXM7Ci0gICAgICAgICAgICBtTnVtU2FtcGxlc091dHB1dCA9IDA7CisgICAgICAgICAgICBtTnVtRnJhbWVzT3V0cHV0ID0gMDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIG11c3QgaGF2ZSBhIG5ldyB0aW1lc3RhbXAgYWZ0ZXIgc2Vla2luZy4KICAgICAgICAgICAgIENIRUNLKHNlZWtUaW1lVXMgPCAwKTsKQEAgLTE3OSw3ICsxODIsNyBAQAogCiAgICAgICAgIC8vIFRoaXMgaXMgcmVjb3ZlcmFibGUsIGp1c3QgaWdub3JlIHRoZSBjdXJyZW50IGZyYW1lIGFuZAogICAgICAgICAvLyBwbGF5IHNpbGVuY2UgaW5zdGVhZC4KLSAgICAgICAgbWVtc2V0KGJ1ZmZlci0+ZGF0YSgpLCAwLCBtQ29uZmlnLT5vdXRwdXRGcmFtZVNpemUpOworICAgICAgICBtZW1zZXQoYnVmZmVyLT5kYXRhKCksIDAsIG1Db25maWctPm91dHB1dEZyYW1lU2l6ZSAqIHNpemVvZihpbnQxNl90KSk7CiAgICAgICAgIG1Db25maWctPmlucHV0QnVmZmVyVXNlZExlbmd0aCA9IG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CiAgICAgfQogCkBAIC0xOTgsOSArMjAxLDkgQEAKICAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NCgKICAgICAgICAgICAgIGtLZXlUaW1lLAogICAgICAgICAgICAgbUFuY2hvclRpbWVVcwotICAgICAgICAgICAgICAgICsgKG1OdW1TYW1wbGVzT3V0cHV0ICogMTAwMDAwMCkgLyBtQ29uZmlnLT5zYW1wbGluZ1JhdGUpOworICAgICAgICAgICAgICAgICsgKG1OdW1GcmFtZXNPdXRwdXQgKiAxMDAwMDAwKSAvIG1Db25maWctPnNhbXBsaW5nUmF0ZSk7CiAKLSAgICBtTnVtU2FtcGxlc091dHB1dCArPSBtQ29uZmlnLT5vdXRwdXRGcmFtZVNpemUgLyBzaXplb2YoaW50MTZfdCk7CisgICAgbU51bUZyYW1lc091dHB1dCArPSBtQ29uZmlnLT5vdXRwdXRGcmFtZVNpemUgLyBtTnVtQ2hhbm5lbHM7CiAKICAgICAqb3V0ID0gYnVmZmVyOwogCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU0MzEyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL0FuZHJvaWQubWsKQEAgLTAsMCArMSw0IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitpbmNsdWRlICQoY2FsbCBhbGwtbWFrZWZpbGVzLXVuZGVyLCQoTE9DQUxfUEFUSCkpCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL2RlYy9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL29uMi9kZWMvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2RmYjc1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL29uMi9kZWMvQW5kcm9pZC5tawpAQCAtMCwwICsxLDE2IEBACitMT0NBTF9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9IFwKKyAgICAgICAgVlBYRGVjb2Rlci5jcHAKKworTE9DQUxfTU9EVUxFIDo9IGxpYnN0YWdlZnJpZ2h0X3ZweGRlYworCitMT0NBTF9DX0lOQ0xVREVTIDo9IFwKKyAgICAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlIFwKKyAgICAgICAgJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlIFwKKyAgICAgICAgJChUT1ApL2V4dGVybmFsL2xpYnZweCBcCisgICAgICAgICQoVE9QKS9leHRlcm5hbC9saWJ2cHgvdnB4X2NvZGVjIFwKKyAgICAgICAgJChUT1ApL2V4dGVybmFsL2xpYnZweC92cHhfcG9ydHMKKworaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL29uMi9kZWMvVlBYRGVjb2Rlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL2RlYy9WUFhEZWNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWQ4OTU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL29uMi9kZWMvVlBYRGVjb2Rlci5jcHAKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIlZQWERlY29kZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlICJWUFhEZWNvZGVyLmgiCisKKyNpbmNsdWRlIDxPTVhfQ29tcG9uZW50Lmg+CisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUJ1ZmZlckdyb3VwLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVmcy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9VdGlscy5oPgorCisjaW5jbHVkZSAidnB4X2NvZGVjL3ZweF9kZWNvZGVyLmgiCisjaW5jbHVkZSAidnA4L3ZwOGR4LmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworVlBYRGVjb2Rlcjo6VlBYRGVjb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSkKKyAgICA6IG1Tb3VyY2Uoc291cmNlKSwKKyAgICAgIG1TdGFydGVkKGZhbHNlKSwKKyAgICAgIG1CdWZmZXJTaXplKDApLAorICAgICAgbUN0eChOVUxMKSwKKyAgICAgIG1CdWZmZXJHcm91cChOVUxMKSB7CisgICAgc3A8TWV0YURhdGE+IGlucHV0Rm9ybWF0ID0gc291cmNlLT5nZXRGb3JtYXQoKTsKKyAgICBjb25zdCBjaGFyICptaW1lOworICAgIENIRUNLKGlucHV0Rm9ybWF0LT5maW5kQ1N0cmluZyhrS2V5TUlNRVR5cGUsICZtaW1lKSk7CisgICAgQ0hFQ0soIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfVklERU9fVlBYKSk7CisKKyAgICBDSEVDSyhpbnB1dEZvcm1hdC0+ZmluZEludDMyKGtLZXlXaWR0aCwgJm1XaWR0aCkpOworICAgIENIRUNLKGlucHV0Rm9ybWF0LT5maW5kSW50MzIoa0tleUhlaWdodCwgJm1IZWlnaHQpKTsKKworICAgIG1CdWZmZXJTaXplID0gKG1XaWR0aCAqIG1IZWlnaHQgKiAzKSAvIDI7CisKKyAgICBtRm9ybWF0ID0gbmV3IE1ldGFEYXRhOworICAgIG1Gb3JtYXQtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19SQVcpOworICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlXaWR0aCwgbVdpZHRoKTsKKyAgICBtRm9ybWF0LT5zZXRJbnQzMihrS2V5SGVpZ2h0LCBtSGVpZ2h0KTsKKyAgICBtRm9ybWF0LT5zZXRJbnQzMihrS2V5Q29sb3JGb3JtYXQsIE9NWF9DT0xPUl9Gb3JtYXRZVVY0MjBQbGFuYXIpOworICAgIG1Gb3JtYXQtPnNldENTdHJpbmcoa0tleURlY29kZXJDb21wb25lbnQsICJWUFhEZWNvZGVyIik7CisKKyAgICBpbnQ2NF90IGR1cmF0aW9uVXM7CisgICAgaWYgKGlucHV0Rm9ybWF0LT5maW5kSW50NjQoa0tleUR1cmF0aW9uLCAmZHVyYXRpb25VcykpIHsKKyAgICAgICAgbUZvcm1hdC0+c2V0SW50NjQoa0tleUR1cmF0aW9uLCBkdXJhdGlvblVzKTsKKyAgICB9Cit9CisKK1ZQWERlY29kZXI6On5WUFhEZWNvZGVyKCkgeworICAgIGlmIChtU3RhcnRlZCkgeworICAgICAgICBzdG9wKCk7CisgICAgfQorfQorCitzdGF0dXNfdCBWUFhEZWNvZGVyOjpzdGFydChNZXRhRGF0YSAqKSB7CisgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIHN0YXR1c190IGVyciA9IG1Tb3VyY2UtPnN0YXJ0KCk7CisKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgbUN0eCA9IG5ldyB2cHhfY29kZWNfY3R4X3Q7CisgICAgaWYgKHZweF9jb2RlY19kZWNfaW5pdCgKKyAgICAgICAgICAgICAgICAodnB4X2NvZGVjX2N0eF90ICopbUN0eCwgJnZweF9jb2RlY192cDhfZHhfYWxnbywgTlVMTCwgMCkpIHsKKyAgICAgICAgTE9HRSgib24yIGRlY29kZXIgZmFpbGVkIHRvIGluaXRpYWxpemUuIik7CisKKyAgICAgICAgbVNvdXJjZS0+c3RvcCgpOworCisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIG1CdWZmZXJHcm91cCA9IG5ldyBNZWRpYUJ1ZmZlckdyb3VwOworICAgIG1CdWZmZXJHcm91cC0+YWRkX2J1ZmZlcihuZXcgTWVkaWFCdWZmZXIobUJ1ZmZlclNpemUpKTsKKyAgICBtQnVmZmVyR3JvdXAtPmFkZF9idWZmZXIobmV3IE1lZGlhQnVmZmVyKG1CdWZmZXJTaXplKSk7CisKKyAgICBtU3RhcnRlZCA9IHRydWU7CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFZQWERlY29kZXI6OnN0b3AoKSB7CisgICAgaWYgKCFtU3RhcnRlZCkgeworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICBkZWxldGUgbUJ1ZmZlckdyb3VwOworICAgIG1CdWZmZXJHcm91cCA9IE5VTEw7CisKKyAgICB2cHhfY29kZWNfZGVzdHJveSgodnB4X2NvZGVjX2N0eF90ICopbUN0eCk7CisgICAgZGVsZXRlICh2cHhfY29kZWNfY3R4X3QgKiltQ3R4OworICAgIG1DdHggPSBOVUxMOworCisgICAgbVNvdXJjZS0+c3RvcCgpOworCisgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKKworICAgIHJldHVybiBPSzsKK30KKworc3A8TWV0YURhdGE+IFZQWERlY29kZXI6OmdldEZvcm1hdCgpIHsKKyAgICByZXR1cm4gbUZvcm1hdDsKK30KKworc3RhdHVzX3QgVlBYRGVjb2Rlcjo6cmVhZCgKKyAgICAgICAgTWVkaWFCdWZmZXIgKipvdXQsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zKSB7CisgICAgKm91dCA9IE5VTEw7CisKKyAgICBNZWRpYUJ1ZmZlciAqaW5wdXQ7CisgICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+cmVhZCgmaW5wdXQsIG9wdGlvbnMpOworCisgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICAgIExPR1YoInJlYWQgJWQgYnl0ZXMgZnJvbSBzb3VyY2VcbiIsIGlucHV0LT5yYW5nZV9sZW5ndGgoKSk7CisKKyAgICBpZiAodnB4X2NvZGVjX2RlY29kZSgKKyAgICAgICAgICAgICAgICAodnB4X2NvZGVjX2N0eF90ICopbUN0eCwKKyAgICAgICAgICAgICAgICAodWludDhfdCAqKWlucHV0LT5kYXRhKCkgKyBpbnB1dC0+cmFuZ2Vfb2Zmc2V0KCksCisgICAgICAgICAgICAgICAgaW5wdXQtPnJhbmdlX2xlbmd0aCgpLAorICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgMCkpIHsKKyAgICAgICAgTE9HRSgib24yIGRlY29kZXIgZmFpbGVkIHRvIGRlY29kZSBmcmFtZS4iKTsKKyAgICAgICAgaW5wdXQtPnJlbGVhc2UoKTsKKyAgICAgICAgaW5wdXQgPSBOVUxMOworCisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIExPR1YoInN1Y2Nlc3NmdWxseSBkZWNvZGVkIDEgb3IgbW9yZSBmcmFtZXMuIik7CisKKyAgICBpbnQ2NF90IHRpbWVVczsKKyAgICBDSEVDSyhpbnB1dC0+bWV0YV9kYXRhKCktPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVVcykpOworCisgICAgaW5wdXQtPnJlbGVhc2UoKTsKKyAgICBpbnB1dCA9IE5VTEw7CisKKyAgICB2cHhfY29kZWNfaXRlcl90IGl0ZXIgPSBOVUxMOworICAgIHZweF9pbWFnZV90ICppbWcgPSB2cHhfY29kZWNfZ2V0X2ZyYW1lKCh2cHhfY29kZWNfY3R4X3QgKiltQ3R4LCAmaXRlcik7CisKKyAgICBpZiAoaW1nID09IE5VTEwpIHsKKyAgICAgICAgTE9HSSgib24yIGRlY29kZXIgZGlkIG5vdCByZXR1cm4gYSBmcmFtZS4iKTsKKworICAgICAgICAqb3V0ID0gbmV3IE1lZGlhQnVmZmVyKDApOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgQ0hFQ0tfRVEoaW1nLT5mbXQsIElNR19GTVRfSTQyMCk7CisKKyAgICBpbnQzMl90IHdpZHRoID0gaW1nLT5kX3c7CisgICAgaW50MzJfdCBoZWlnaHQgPSBpbWctPmRfaDsKKworICAgIGlmICh3aWR0aCAhPSBtV2lkdGggfHwgaGVpZ2h0ICE9IG1IZWlnaHQpIHsKKyAgICAgICAgTE9HSSgiSW1hZ2UgZGltZW5zaW9ucyBjaGFuZ2VkLCB3aWR0aCA9ICVkLCBoZWlnaHQgPSAlZCIsCisgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgbVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlXaWR0aCwgd2lkdGgpOworICAgICAgICBtRm9ybWF0LT5zZXRJbnQzMihrS2V5SGVpZ2h0LCBoZWlnaHQpOworCisgICAgICAgIG1CdWZmZXJTaXplID0gKG1XaWR0aCAqIG1IZWlnaHQgKiAzKSAvIDI7CisgICAgICAgIGRlbGV0ZSBtQnVmZmVyR3JvdXA7CisgICAgICAgIG1CdWZmZXJHcm91cCA9IG5ldyBNZWRpYUJ1ZmZlckdyb3VwOworICAgICAgICBtQnVmZmVyR3JvdXAtPmFkZF9idWZmZXIobmV3IE1lZGlhQnVmZmVyKG1CdWZmZXJTaXplKSk7CisgICAgICAgIG1CdWZmZXJHcm91cC0+YWRkX2J1ZmZlcihuZXcgTWVkaWFCdWZmZXIobUJ1ZmZlclNpemUpKTsKKworICAgICAgICByZXR1cm4gSU5GT19GT1JNQVRfQ0hBTkdFRDsKKyAgICB9CisKKyAgICBNZWRpYUJ1ZmZlciAqb3V0cHV0OworICAgIENIRUNLX0VRKG1CdWZmZXJHcm91cC0+YWNxdWlyZV9idWZmZXIoJm91dHB1dCksIE9LKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgKnNyY0xpbmUgPSAoY29uc3QgdWludDhfdCAqKWltZy0+cGxhbmVzW1BMQU5FX1ldOworICAgIHVpbnQ4X3QgKmRzdCA9ICh1aW50OF90ICopb3V0cHV0LT5kYXRhKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbWctPmRfaDsgKytpKSB7CisgICAgICAgIG1lbWNweShkc3QsIHNyY0xpbmUsIGltZy0+ZF93KTsKKworICAgICAgICBzcmNMaW5lICs9IGltZy0+c3RyaWRlW1BMQU5FX1ldOworICAgICAgICBkc3QgKz0gaW1nLT5kX3c7CisgICAgfQorCisgICAgc3JjTGluZSA9IChjb25zdCB1aW50OF90ICopaW1nLT5wbGFuZXNbUExBTkVfVV07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbWctPmRfaCAvIDI7ICsraSkgeworICAgICAgICBtZW1jcHkoZHN0LCBzcmNMaW5lLCBpbWctPmRfdyAvIDIpOworCisgICAgICAgIHNyY0xpbmUgKz0gaW1nLT5zdHJpZGVbUExBTkVfVV07CisgICAgICAgIGRzdCArPSBpbWctPmRfdyAvIDI7CisgICAgfQorCisgICAgc3JjTGluZSA9IChjb25zdCB1aW50OF90ICopaW1nLT5wbGFuZXNbUExBTkVfVl07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbWctPmRfaCAvIDI7ICsraSkgeworICAgICAgICBtZW1jcHkoZHN0LCBzcmNMaW5lLCBpbWctPmRfdyAvIDIpOworCisgICAgICAgIHNyY0xpbmUgKz0gaW1nLT5zdHJpZGVbUExBTkVfVl07CisgICAgICAgIGRzdCArPSBpbWctPmRfdyAvIDI7CisgICAgfQorCisgICAgb3V0cHV0LT5zZXRfcmFuZ2UoMCwgKHdpZHRoICogaGVpZ2h0ICogMykgLyAyKTsKKworICAgIG91dHB1dC0+bWV0YV9kYXRhKCktPnNldEludDY0KGtLZXlUaW1lLCB0aW1lVXMpOworCisgICAgKm91dCA9IG91dHB1dDsKKworICAgIHJldHVybiBPSzsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29sb3Jjb252ZXJzaW9uL0NvbG9yQ29udmVydGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvbG9yY29udmVyc2lvbi9Db2xvckNvbnZlcnRlci5jcHAKaW5kZXggZTc0NzgyZi4uNWIxNjk5NyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29sb3Jjb252ZXJzaW9uL0NvbG9yQ29udmVydGVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2xvcmNvbnZlcnNpb24vQ29sb3JDb252ZXJ0ZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAgICAgICAgIGNhc2UgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFBsYW5hcjoKICAgICAgICAgY2FzZSBPTVhfQ09MT1JfRm9ybWF0Q2JZQ3JZOgogICAgICAgICBjYXNlIE9NWF9RQ09NX0NPTE9SX0Zvcm1hdFlWVTQyMFNlbWlQbGFuYXI6CisgICAgICAgIGNhc2UgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFNlbWlQbGFuYXI6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBkZWZhdWx0OgpAQCAtNzEsNiArNzIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgc3JjQml0cywgc3JjU2tpcCwgZHN0Qml0cywgZHN0U2tpcCk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIE9NWF9DT0xPUl9Gb3JtYXRZVVY0MjBTZW1pUGxhbmFyOgorICAgICAgICAgICAgY29udmVydFlVVjQyMFNlbWlQbGFuYXIoCisgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIHNyY0JpdHMsIHNyY1NraXAsIGRzdEJpdHMsIGRzdFNraXApOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgewogICAgICAgICAgICAgQ0hFQ0soISJTaG91bGQgbm90IGJlIGhlcmUuIFVua25vd24gY29sb3IgY29udmVyc2lvbi4iKTsKQEAgLTI3OSw2ICsyODUsNjggQEAKICAgICB9CiB9CiAKK3ZvaWQgQ29sb3JDb252ZXJ0ZXI6OmNvbnZlcnRZVVY0MjBTZW1pUGxhbmFyKAorICAgICAgICBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsCisgICAgICAgIGNvbnN0IHZvaWQgKnNyY0JpdHMsIHNpemVfdCBzcmNTa2lwLAorICAgICAgICB2b2lkICpkc3RCaXRzLCBzaXplX3QgZHN0U2tpcCkgeworICAgIENIRUNLX0VRKHNyY1NraXAsIDApOyAgLy8gRG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSBmb3IgWVVWIGZvcm1hdHMuCisgICAgQ0hFQ0soZHN0U2tpcCA+PSB3aWR0aCAqIDIpOworICAgIENIRUNLKChkc3RTa2lwICYgMykgPT0gMCk7CisKKyAgICB1aW50OF90ICprQWRqdXN0ZWRDbGlwID0gaW5pdENsaXAoKTsKKworICAgIHVpbnQzMl90ICpkc3RfcHRyID0gKHVpbnQzMl90ICopZHN0Qml0czsKKyAgICBjb25zdCB1aW50OF90ICpzcmNfeSA9IChjb25zdCB1aW50OF90ICopc3JjQml0czsKKworICAgIGNvbnN0IHVpbnQ4X3QgKnNyY191ID0KKyAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilzcmNfeSArIHdpZHRoICogaGVpZ2h0OworCisgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4ICs9IDIpIHsKKyAgICAgICAgICAgIHNpZ25lZCB5MSA9IChzaWduZWQpc3JjX3lbeF0gLSAxNjsKKyAgICAgICAgICAgIHNpZ25lZCB5MiA9IChzaWduZWQpc3JjX3lbeCArIDFdIC0gMTY7CisKKyAgICAgICAgICAgIHNpZ25lZCB2ID0gKHNpZ25lZClzcmNfdVt4ICYgfjFdIC0gMTI4OworICAgICAgICAgICAgc2lnbmVkIHUgPSAoc2lnbmVkKXNyY191Wyh4ICYgfjEpICsgMV0gLSAxMjg7CisKKyAgICAgICAgICAgIHNpZ25lZCB1X2IgPSB1ICogNTE3OworICAgICAgICAgICAgc2lnbmVkIHVfZyA9IC11ICogMTAwOworICAgICAgICAgICAgc2lnbmVkIHZfZyA9IC12ICogMjA4OworICAgICAgICAgICAgc2lnbmVkIHZfciA9IHYgKiA0MDk7CisKKyAgICAgICAgICAgIHNpZ25lZCB0bXAxID0geTEgKiAyOTg7CisgICAgICAgICAgICBzaWduZWQgYjEgPSAodG1wMSArIHVfYikgLyAyNTY7CisgICAgICAgICAgICBzaWduZWQgZzEgPSAodG1wMSArIHZfZyArIHVfZykgLyAyNTY7CisgICAgICAgICAgICBzaWduZWQgcjEgPSAodG1wMSArIHZfcikgLyAyNTY7CisKKyAgICAgICAgICAgIHNpZ25lZCB0bXAyID0geTIgKiAyOTg7CisgICAgICAgICAgICBzaWduZWQgYjIgPSAodG1wMiArIHVfYikgLyAyNTY7CisgICAgICAgICAgICBzaWduZWQgZzIgPSAodG1wMiArIHZfZyArIHVfZykgLyAyNTY7CisgICAgICAgICAgICBzaWduZWQgcjIgPSAodG1wMiArIHZfcikgLyAyNTY7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHJnYjEgPQorICAgICAgICAgICAgICAgICgoa0FkanVzdGVkQ2xpcFtiMV0gPj4gMykgPDwgMTEpCisgICAgICAgICAgICAgICAgfCAoKGtBZGp1c3RlZENsaXBbZzFdID4+IDIpIDw8IDUpCisgICAgICAgICAgICAgICAgfCAoa0FkanVzdGVkQ2xpcFtyMV0gPj4gMyk7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHJnYjIgPQorICAgICAgICAgICAgICAgICgoa0FkanVzdGVkQ2xpcFtiMl0gPj4gMykgPDwgMTEpCisgICAgICAgICAgICAgICAgfCAoKGtBZGp1c3RlZENsaXBbZzJdID4+IDIpIDw8IDUpCisgICAgICAgICAgICAgICAgfCAoa0FkanVzdGVkQ2xpcFtyMl0gPj4gMyk7CisKKyAgICAgICAgICAgIGRzdF9wdHJbeCAvIDJdID0gKHJnYjIgPDwgMTYpIHwgcmdiMTsKKyAgICAgICAgfQorCisgICAgICAgIHNyY195ICs9IHdpZHRoOworCisgICAgICAgIGlmICh5ICYgMSkgeworICAgICAgICAgICAgc3JjX3UgKz0gd2lkdGg7CisgICAgICAgIH0KKworICAgICAgICBkc3RfcHRyICs9IGRzdFNraXAgLyA0OworICAgIH0KK30KKwogdWludDhfdCAqQ29sb3JDb252ZXJ0ZXI6OmluaXRDbGlwKCkgewogICAgIHN0YXRpYyBjb25zdCBzaWduZWQga0NsaXBNaW4gPSAtMjc4OwogICAgIHN0YXRpYyBjb25zdCBzaWduZWQga0NsaXBNYXggPSA1MzU7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FBdG9taXplci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FBdG9taXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdiOWU5ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FBdG9taXplci5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgIkFBdG9taXplci5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIHN0YXRpYworQUF0b21pemVyIEFBdG9taXplcjo6Z0F0b21pemVyOworCisvLyBzdGF0aWMKK2NvbnN0IGNoYXIgKkFBdG9taXplcjo6QXRvbWl6ZShjb25zdCBjaGFyICpuYW1lKSB7CisgICAgcmV0dXJuIGdBdG9taXplci5hdG9taXplKG5hbWUpOworfQorCitBQXRvbWl6ZXI6OkFBdG9taXplcigpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEyODsgKytpKSB7CisgICAgICAgIG1BdG9tcy5wdXNoKExpc3Q8QVN0cmluZz4oKSk7CisgICAgfQorfQorCitjb25zdCBjaGFyICpBQXRvbWl6ZXI6OmF0b21pemUoY29uc3QgY2hhciAqbmFtZSkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBjb25zdCBzaXplX3QgbiA9IG1BdG9tcy5zaXplKCk7CisgICAgc2l6ZV90IGluZGV4ID0gQUF0b21pemVyOjpIYXNoKG5hbWUpICUgbjsKKyAgICBMaXN0PEFTdHJpbmc+ICZlbnRyeSA9IG1BdG9tcy5lZGl0SXRlbUF0KGluZGV4KTsKKyAgICBMaXN0PEFTdHJpbmc+OjppdGVyYXRvciBpdCA9IGVudHJ5LmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IGVudHJ5LmVuZCgpKSB7CisgICAgICAgIGlmICgoKml0KSA9PSBuYW1lKSB7CisgICAgICAgICAgICByZXR1cm4gKCppdCkuY19zdHIoKTsKKyAgICAgICAgfQorICAgICAgICArK2l0OworICAgIH0KKworICAgIGVudHJ5LnB1c2hfYmFjayhBU3RyaW5nKG5hbWUpKTsKKworICAgIHJldHVybiAoKi0tZW50cnkuZW5kKCkpLmNfc3RyKCk7Cit9CisKKy8vIHN0YXRpYwordWludDMyX3QgQUF0b21pemVyOjpIYXNoKGNvbnN0IGNoYXIgKnMpIHsKKyAgICB1aW50MzJfdCBzdW0gPSAwOworICAgIHdoaWxlICgqcyAhPSAnXDAnKSB7CisgICAgICAgIHN1bSA9IChzdW0gKiAzMSkgKyAqczsKKyAgICAgICAgKytzOworICAgIH0KKworICAgIHJldHVybiBzdW07Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTczZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFCdWZmZXIuaCIKKworI2luY2x1ZGUgIkFEZWJ1Zy5oIgorI2luY2x1ZGUgIkFMb29wZXIuaCIKKyNpbmNsdWRlICJBTWVzc2FnZS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0FCdWZmZXI6OkFCdWZmZXIoc2l6ZV90IGNhcGFjaXR5KQorICAgIDogbURhdGEobWFsbG9jKGNhcGFjaXR5KSksCisgICAgICBtQ2FwYWNpdHkoY2FwYWNpdHkpLAorICAgICAgbVJhbmdlT2Zmc2V0KDApLAorICAgICAgbVJhbmdlTGVuZ3RoKGNhcGFjaXR5KSwKKyAgICAgIG1JbnQzMkRhdGEoMCksCisgICAgICBtT3duc0RhdGEodHJ1ZSkgeworfQorCitBQnVmZmVyOjpBQnVmZmVyKHZvaWQgKmRhdGEsIHNpemVfdCBjYXBhY2l0eSkKKyAgICA6IG1EYXRhKGRhdGEpLAorICAgICAgbUNhcGFjaXR5KGNhcGFjaXR5KSwKKyAgICAgIG1SYW5nZU9mZnNldCgwKSwKKyAgICAgIG1SYW5nZUxlbmd0aChjYXBhY2l0eSksCisgICAgICBtSW50MzJEYXRhKDApLAorICAgICAgbU93bnNEYXRhKGZhbHNlKSB7Cit9CisKK0FCdWZmZXI6On5BQnVmZmVyKCkgeworICAgIGlmIChtT3duc0RhdGEpIHsKKyAgICAgICAgaWYgKG1EYXRhICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUobURhdGEpOworICAgICAgICAgICAgbURhdGEgPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1GYXJld2VsbCAhPSBOVUxMKSB7CisgICAgICAgIG1GYXJld2VsbC0+cG9zdCgpOworICAgIH0KK30KKwordm9pZCBBQnVmZmVyOjpzZXRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkgeworICAgIENIRUNLX0xFKG9mZnNldCwgbUNhcGFjaXR5KTsKKyAgICBDSEVDS19MRShvZmZzZXQgKyBzaXplLCBtQ2FwYWNpdHkpOworCisgICAgbVJhbmdlT2Zmc2V0ID0gb2Zmc2V0OworICAgIG1SYW5nZUxlbmd0aCA9IHNpemU7Cit9CisKK3ZvaWQgQUJ1ZmZlcjo6c2V0RmFyZXdlbGxNZXNzYWdlKGNvbnN0IHNwPEFNZXNzYWdlPiBtc2cpIHsKKyAgICBtRmFyZXdlbGwgPSBtc2c7Cit9CisKK3NwPEFNZXNzYWdlPiBBQnVmZmVyOjptZXRhKCkgeworICAgIGlmIChtTWV0YSA9PSBOVUxMKSB7CisgICAgICAgIG1NZXRhID0gbmV3IEFNZXNzYWdlOworICAgIH0KKyAgICByZXR1cm4gbU1ldGE7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmY4YjIyCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQURlYnVnLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWZkZWYgQU5EUk9JRAorI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0xvZ2dlcjo6TG9nZ2VyKExvZ1R5cGUgdHlwZSkKKyAgICA6IG1Mb2dUeXBlKHR5cGUpIHsKKyAgICBzd2l0Y2ggKG1Mb2dUeXBlKSB7CisgICAgICAgIGNhc2UgVkVSQk9TRToKKyAgICAgICAgICAgIG1NZXNzYWdlID0gIlYgIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElORk86CisgICAgICAgICAgICBtTWVzc2FnZSA9ICJJICI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVJOSU5HOgorICAgICAgICAgICAgbU1lc3NhZ2UgPSAiVyAiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVJST1I6CisgICAgICAgICAgICBtTWVzc2FnZSA9ICJFICI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGQVRBTDoKKyAgICAgICAgICAgIG1NZXNzYWdlID0gIkYgIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0xvZ2dlcjo6fkxvZ2dlcigpIHsKKyAgICBpZiAobUxvZ1R5cGUgPT0gVkVSQk9TRSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbU1lc3NhZ2UuYXBwZW5kKCJcbiIpOworCisjaWYgZGVmaW5lZChBTkRST0lEKSAmJiAxCisgICAgTE9HX1BSSShBTkRST0lEX0xPR19JTkZPLCAiQURlYnVnIiwgIiVzIiwgbU1lc3NhZ2UuY19zdHIoKSk7CisjZWxzZQorICAgIGZwcmludGYoc3RkZXJyLCBtTWVzc2FnZS5jX3N0cigpKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyNlbmRpZgorCisgICAgaWYgKG1Mb2dUeXBlID09IEZBVEFMKSB7CisgICAgICAgIGFib3J0KCk7CisgICAgfQorfQorCitjb25zdCBjaGFyICpMZWFmTmFtZShjb25zdCBjaGFyICpzKSB7CisgICAgY29uc3QgY2hhciAqbGFzdFNsYXNoID0gc3RycmNocihzLCAnLycpOworICAgIHJldHVybiBsYXN0U2xhc2ggIT0gTlVMTCA/IGxhc3RTbGFzaCArIDEgOiBzOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDVmN2U5NAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkFIYW5kbGVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlci5oPgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyUm9zdGVyLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3A8QUxvb3Blcj4gQUhhbmRsZXI6Omxvb3BlcigpIHsKKyAgICBleHRlcm4gQUxvb3BlclJvc3RlciBnTG9vcGVyUm9zdGVyOworCisgICAgcmV0dXJuIGdMb29wZXJSb3N0ZXIuZmluZExvb3BlcihpZCgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNGYzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXIuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2RlZmluZSBMT0dfVEFHICJBTG9vcGVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKworI2luY2x1ZGUgIkFMb29wZXIuaCIKKworI2luY2x1ZGUgIkFIYW5kbGVyLmgiCisjaW5jbHVkZSAiQUxvb3BlclJvc3Rlci5oIgorI2luY2x1ZGUgIkFNZXNzYWdlLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQUxvb3BlclJvc3RlciBnTG9vcGVyUm9zdGVyOworCitzdHJ1Y3QgQUxvb3Blcjo6TG9vcGVyVGhyZWFkIDogcHVibGljIFRocmVhZCB7CisgICAgTG9vcGVyVGhyZWFkKEFMb29wZXIgKmxvb3BlciwgYm9vbCBjYW5DYWxsSmF2YSkKKyAgICAgICAgOiBUaHJlYWQoY2FuQ2FsbEphdmEpLAorICAgICAgICAgIG1Mb29wZXIobG9vcGVyKSB7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHRocmVhZExvb3AoKSB7CisgICAgICAgIHJldHVybiBtTG9vcGVyLT5sb29wKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TG9vcGVyVGhyZWFkKCkge30KKworcHJpdmF0ZToKKyAgICBBTG9vcGVyICptTG9vcGVyOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoTG9vcGVyVGhyZWFkKTsKK307CisKKy8vIHN0YXRpYworaW50NjRfdCBBTG9vcGVyOjpHZXROb3dVcygpIHsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKworICAgIHJldHVybiAoaW50NjRfdCl0di50dl9zZWMgKiAxMDAwMDAwbGwgKyB0di50dl91c2VjOworfQorCitBTG9vcGVyOjpBTG9vcGVyKCkKKyAgICA6IG1SdW5uaW5nTG9jYWxseShmYWxzZSkgeworfQorCitBTG9vcGVyOjp+QUxvb3BlcigpIHsKKyAgICBzdG9wKCk7Cit9CisKK0FMb29wZXI6OmhhbmRsZXJfaWQgQUxvb3Blcjo6cmVnaXN0ZXJIYW5kbGVyKGNvbnN0IHNwPEFIYW5kbGVyPiAmaGFuZGxlcikgeworICAgIHJldHVybiBnTG9vcGVyUm9zdGVyLnJlZ2lzdGVySGFuZGxlcih0aGlzLCBoYW5kbGVyKTsKK30KKwordm9pZCBBTG9vcGVyOjp1bnJlZ2lzdGVySGFuZGxlcihoYW5kbGVyX2lkIGhhbmRsZXJJRCkgeworICAgIGdMb29wZXJSb3N0ZXIudW5yZWdpc3RlckhhbmRsZXIoaGFuZGxlcklEKTsKK30KKworc3RhdHVzX3QgQUxvb3Blcjo6c3RhcnQoYm9vbCBydW5PbkNhbGxpbmdUaHJlYWQsIGJvb2wgY2FuQ2FsbEphdmEpIHsKKyAgICBpZiAocnVuT25DYWxsaW5nVGhyZWFkKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICAgICAgICAgIGlmIChtVGhyZWFkICE9IE5VTEwgfHwgbVJ1bm5pbmdMb2NhbGx5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtUnVubmluZ0xvY2FsbHkgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZG8geworICAgICAgICB9IHdoaWxlIChsb29wKCkpOworCisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgaWYgKG1UaHJlYWQgIT0gTlVMTCB8fCBtUnVubmluZ0xvY2FsbHkpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIG1UaHJlYWQgPSBuZXcgTG9vcGVyVGhyZWFkKHRoaXMsIGNhbkNhbGxKYXZhKTsKKworICAgIHN0YXR1c190IGVyciA9IG1UaHJlYWQtPnJ1bigiQUxvb3BlciIpOworICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgbVRocmVhZC5jbGVhcigpOworICAgIH0KKworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXR1c190IEFMb29wZXI6OnN0b3AoKSB7CisgICAgc3A8TG9vcGVyVGhyZWFkPiB0aHJlYWQ7CisgICAgYm9vbCBydW5uaW5nTG9jYWxseTsKKworICAgIHsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgICAgICB0aHJlYWQgPSBtVGhyZWFkOworICAgICAgICBydW5uaW5nTG9jYWxseSA9IG1SdW5uaW5nTG9jYWxseTsKKyAgICAgICAgbVRocmVhZC5jbGVhcigpOworICAgICAgICBtUnVubmluZ0xvY2FsbHkgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAodGhyZWFkID09IE5VTEwgJiYgIXJ1bm5pbmdMb2NhbGx5KSB7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisKKyAgICBpZiAodGhyZWFkICE9IE5VTEwpIHsKKyAgICAgICAgdGhyZWFkLT5yZXF1ZXN0RXhpdCgpOworICAgIH0KKworICAgIG1RdWV1ZUNoYW5nZWRDb25kaXRpb24uc2lnbmFsKCk7CisKKyAgICBpZiAoIXJ1bm5pbmdMb2NhbGx5KSB7CisgICAgICAgIHRocmVhZC0+cmVxdWVzdEV4aXRBbmRXYWl0KCk7CisgICAgfQorCisgICAgcmV0dXJuIE9LOworfQorCit2b2lkIEFMb29wZXI6OnBvc3QoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2csIGludDY0X3QgZGVsYXlVcykgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBpbnQ2NF90IHdoZW5VczsKKyAgICBpZiAoZGVsYXlVcyA+IDApIHsKKyAgICAgICAgd2hlblVzID0gR2V0Tm93VXMoKSArIGRlbGF5VXM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2hlblVzID0gR2V0Tm93VXMoKTsKKyAgICB9CisKKyAgICBMaXN0PEV2ZW50Pjo6aXRlcmF0b3IgaXQgPSBtRXZlbnRRdWV1ZS5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtRXZlbnRRdWV1ZS5lbmQoKSAmJiAoKml0KS5tV2hlblVzIDw9IHdoZW5VcykgeworICAgICAgICArK2l0OworICAgIH0KKworICAgIEV2ZW50IGV2ZW50OworICAgIGV2ZW50Lm1XaGVuVXMgPSB3aGVuVXM7CisgICAgZXZlbnQubU1lc3NhZ2UgPSBtc2c7CisKKyAgICBpZiAoaXQgPT0gbUV2ZW50UXVldWUuYmVnaW4oKSkgeworICAgICAgICBtUXVldWVDaGFuZ2VkQ29uZGl0aW9uLnNpZ25hbCgpOworICAgIH0KKworICAgIG1FdmVudFF1ZXVlLmluc2VydChpdCwgZXZlbnQpOworfQorCitib29sIEFMb29wZXI6Omxvb3AoKSB7CisgICAgRXZlbnQgZXZlbnQ7CisKKyAgICB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisgICAgICAgIGlmIChtVGhyZWFkID09IE5VTEwgJiYgIW1SdW5uaW5nTG9jYWxseSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChtRXZlbnRRdWV1ZS5lbXB0eSgpKSB7CisgICAgICAgICAgICBtUXVldWVDaGFuZ2VkQ29uZGl0aW9uLndhaXQobUxvY2spOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaW50NjRfdCB3aGVuVXMgPSAoKm1FdmVudFF1ZXVlLmJlZ2luKCkpLm1XaGVuVXM7CisgICAgICAgIGludDY0X3Qgbm93VXMgPSBHZXROb3dVcygpOworCisgICAgICAgIGlmICh3aGVuVXMgPiBub3dVcykgeworICAgICAgICAgICAgaW50NjRfdCBkZWxheVVzID0gd2hlblVzIC0gbm93VXM7CisgICAgICAgICAgICBtUXVldWVDaGFuZ2VkQ29uZGl0aW9uLndhaXRSZWxhdGl2ZShtTG9jaywgZGVsYXlVcyAqIDEwMDBsbCk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZXZlbnQgPSAqbUV2ZW50UXVldWUuYmVnaW4oKTsKKyAgICAgICAgbUV2ZW50UXVldWUuZXJhc2UobUV2ZW50UXVldWUuYmVnaW4oKSk7CisgICAgfQorCisgICAgZ0xvb3BlclJvc3Rlci5kZWxpdmVyTWVzc2FnZShldmVudC5tTWVzc2FnZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3BlclJvc3Rlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXJSb3N0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1Zjc1OTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXJSb3N0ZXIuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2RlZmluZSBMT0dfVEFHICJBTG9vcGVyUm9zdGVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSAiQUxvb3BlclJvc3Rlci5oIgorCisjaW5jbHVkZSAiQURlYnVnLmgiCisjaW5jbHVkZSAiQUhhbmRsZXIuaCIKKyNpbmNsdWRlICJBTWVzc2FnZS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0FMb29wZXJSb3N0ZXI6OkFMb29wZXJSb3N0ZXIoKQorICAgIDogbU5leHRIYW5kbGVySUQoMSkgeworfQorCitBTG9vcGVyOjpoYW5kbGVyX2lkIEFMb29wZXJSb3N0ZXI6OnJlZ2lzdGVySGFuZGxlcigKKyAgICAgICAgY29uc3Qgc3A8QUxvb3Blcj4gbG9vcGVyLCBjb25zdCBzcDxBSGFuZGxlcj4gJmhhbmRsZXIpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgaWYgKGhhbmRsZXItPmlkKCkgIT0gMCkgeworICAgICAgICBDSEVDSyghIkEgaGFuZGxlciBtdXN0IG9ubHkgYmUgcmVnaXN0ZXJlZCBvbmNlLiIpOworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorCisgICAgSGFuZGxlckluZm8gaW5mbzsKKyAgICBpbmZvLm1Mb29wZXIgPSBsb29wZXI7CisgICAgaW5mby5tSGFuZGxlciA9IGhhbmRsZXI7CisgICAgQUxvb3Blcjo6aGFuZGxlcl9pZCBoYW5kbGVySUQgPSBtTmV4dEhhbmRsZXJJRCsrOworICAgIG1IYW5kbGVycy5hZGQoaGFuZGxlcklELCBpbmZvKTsKKworICAgIGhhbmRsZXItPnNldElEKGhhbmRsZXJJRCk7CisKKyAgICByZXR1cm4gaGFuZGxlcklEOworfQorCit2b2lkIEFMb29wZXJSb3N0ZXI6OnVucmVnaXN0ZXJIYW5kbGVyKEFMb29wZXI6OmhhbmRsZXJfaWQgaGFuZGxlcklEKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIHNzaXplX3QgaW5kZXggPSBtSGFuZGxlcnMuaW5kZXhPZktleShoYW5kbGVySUQpOworICAgIENIRUNLX0dFKGluZGV4LCAwKTsKKworICAgIGNvbnN0IEhhbmRsZXJJbmZvICZpbmZvID0gbUhhbmRsZXJzLnZhbHVlQXQoaW5kZXgpOworCisgICAgc3A8QUhhbmRsZXI+IGhhbmRsZXIgPSBpbmZvLm1IYW5kbGVyLnByb21vdGUoKTsKKworICAgIGlmIChoYW5kbGVyICE9IE5VTEwpIHsKKyAgICAgICAgaGFuZGxlci0+c2V0SUQoMCk7CisgICAgfQorCisgICAgbUhhbmRsZXJzLnJlbW92ZUl0ZW1zQXQoaW5kZXgpOworfQorCit2b2lkIEFMb29wZXJSb3N0ZXI6OnBvc3RNZXNzYWdlKAorICAgICAgICBjb25zdCBzcDxBTWVzc2FnZT4gJm1zZywgaW50NjRfdCBkZWxheVVzKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIHNzaXplX3QgaW5kZXggPSBtSGFuZGxlcnMuaW5kZXhPZktleShtc2ctPnRhcmdldCgpKTsKKworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgTE9HKFdBUk5JTkcpIDw8ICJmYWlsZWQgdG8gcG9zdCBtZXNzYWdlLiBUYXJnZXQgaGFuZGxlciBub3QgcmVnaXN0ZXJlZC4iOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgSGFuZGxlckluZm8gJmluZm8gPSBtSGFuZGxlcnMudmFsdWVBdChpbmRleCk7CisKKyAgICBzcDxBTG9vcGVyPiBsb29wZXIgPSBpbmZvLm1Mb29wZXIucHJvbW90ZSgpOworCisgICAgaWYgKGxvb3BlciA9PSBOVUxMKSB7CisgICAgICAgIExPRyhXQVJOSU5HKSA8PCAiZmFpbGVkIHRvIHBvc3QgbWVzc2FnZS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIlRhcmdldCBoYW5kbGVyIHN0aWxsIHJlZ2lzdGVyZWQsIGJ1dCBvYmplY3QgZ29uZS4iOworCisgICAgICAgIG1IYW5kbGVycy5yZW1vdmVJdGVtc0F0KGluZGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxvb3Blci0+cG9zdChtc2csIGRlbGF5VXMpOworfQorCit2b2lkIEFMb29wZXJSb3N0ZXI6OmRlbGl2ZXJNZXNzYWdlKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgc3A8QUhhbmRsZXI+IGhhbmRsZXI7CisKKyAgICB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICAgICAgc3NpemVfdCBpbmRleCA9IG1IYW5kbGVycy5pbmRleE9mS2V5KG1zZy0+dGFyZ2V0KCkpOworCisgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgIExPRyhXQVJOSU5HKSA8PCAiZmFpbGVkIHRvIGRlbGl2ZXIgbWVzc2FnZS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJUYXJnZXQgaGFuZGxlciBub3QgcmVnaXN0ZXJlZC4iOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgSGFuZGxlckluZm8gJmluZm8gPSBtSGFuZGxlcnMudmFsdWVBdChpbmRleCk7CisgICAgICAgIGhhbmRsZXIgPSBpbmZvLm1IYW5kbGVyLnByb21vdGUoKTsKKworICAgICAgICBpZiAoaGFuZGxlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0coV0FSTklORykgPDwgImZhaWxlZCB0byBkZWxpdmVyIG1lc3NhZ2UuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGFyZ2V0IGhhbmRsZXIgcmVnaXN0ZXJlZCwgYnV0IG9iamVjdCBnb25lLiI7CisKKyAgICAgICAgICAgIG1IYW5kbGVycy5yZW1vdmVJdGVtc0F0KGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGhhbmRsZXItPm9uTWVzc2FnZVJlY2VpdmVkKG1zZyk7Cit9CisKK3NwPEFMb29wZXI+IEFMb29wZXJSb3N0ZXI6OmZpbmRMb29wZXIoQUxvb3Blcjo6aGFuZGxlcl9pZCBoYW5kbGVySUQpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgc3NpemVfdCBpbmRleCA9IG1IYW5kbGVycy5pbmRleE9mS2V5KGhhbmRsZXJJRCk7CisKKyAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNwPEFMb29wZXI+IGxvb3BlciA9IG1IYW5kbGVycy52YWx1ZUF0KGluZGV4KS5tTG9vcGVyLnByb21vdGUoKTsKKworICAgIGlmIChsb29wZXIgPT0gTlVMTCkgeworICAgICAgICBtSGFuZGxlcnMucmVtb3ZlSXRlbXNBdChpbmRleCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBsb29wZXI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YzZkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmNwcApAQCAtMCwwICsxLDM0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBTWVzc2FnZS5oIgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI2luY2x1ZGUgIkFBdG9taXplci5oIgorI2luY2x1ZGUgIkFEZWJ1Zy5oIgorI2luY2x1ZGUgIkFMb29wZXJSb3N0ZXIuaCIKKyNpbmNsdWRlICJBU3RyaW5nLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQU1lc3NhZ2U6OkFNZXNzYWdlKHVpbnQzMl90IHdoYXQsIEFMb29wZXI6OmhhbmRsZXJfaWQgdGFyZ2V0KQorICAgIDogbVdoYXQod2hhdCksCisgICAgICBtVGFyZ2V0KHRhcmdldCksCisgICAgICBtTnVtSXRlbXMoMCkgeworfQorCitBTWVzc2FnZTo6fkFNZXNzYWdlKCkgeworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgQU1lc3NhZ2U6OnNldFdoYXQodWludDMyX3Qgd2hhdCkgeworICAgIG1XaGF0ID0gd2hhdDsKK30KKwordWludDMyX3QgQU1lc3NhZ2U6OndoYXQoKSBjb25zdCB7CisgICAgcmV0dXJuIG1XaGF0OworfQorCit2b2lkIEFNZXNzYWdlOjpzZXRUYXJnZXQoQUxvb3Blcjo6aGFuZGxlcl9pZCBoYW5kbGVySUQpIHsKKyAgICBtVGFyZ2V0ID0gaGFuZGxlcklEOworfQorCitBTG9vcGVyOjpoYW5kbGVyX2lkIEFNZXNzYWdlOjp0YXJnZXQoKSBjb25zdCB7CisgICAgcmV0dXJuIG1UYXJnZXQ7Cit9CisKK3ZvaWQgQU1lc3NhZ2U6OmNsZWFyKCkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbU51bUl0ZW1zOyArK2kpIHsKKyAgICAgICAgSXRlbSAqaXRlbSA9ICZtSXRlbXNbaV07CisgICAgICAgIGZyZWVJdGVtKGl0ZW0pOworICAgIH0KKyAgICBtTnVtSXRlbXMgPSAwOworfQorCit2b2lkIEFNZXNzYWdlOjpmcmVlSXRlbShJdGVtICppdGVtKSB7CisgICAgc3dpdGNoIChpdGVtLT5tVHlwZSkgeworICAgICAgICBjYXNlIGtUeXBlU3RyaW5nOgorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgaXRlbS0+dS5zdHJpbmdWYWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBrVHlwZU9iamVjdDoKKyAgICAgICAgY2FzZSBrVHlwZU1lc3NhZ2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpdGVtLT51LnJlZlZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpdGVtLT51LnJlZlZhbHVlLT5kZWNTdHJvbmcodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0FNZXNzYWdlOjpJdGVtICpBTWVzc2FnZTo6YWxsb2NhdGVJdGVtKGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgICBuYW1lID0gQUF0b21pemVyOjpBdG9taXplKG5hbWUpOworCisgICAgc2l6ZV90IGkgPSAwOworICAgIHdoaWxlIChpIDwgbU51bUl0ZW1zICYmIG1JdGVtc1tpXS5tTmFtZSAhPSBuYW1lKSB7CisgICAgICAgICsraTsKKyAgICB9CisKKyAgICBJdGVtICppdGVtOworCisgICAgaWYgKGkgPCBtTnVtSXRlbXMpIHsKKyAgICAgICAgaXRlbSA9ICZtSXRlbXNbaV07CisgICAgICAgIGZyZWVJdGVtKGl0ZW0pOworICAgIH0gZWxzZSB7CisgICAgICAgIENIRUNLKG1OdW1JdGVtcyA8IGtNYXhOdW1JdGVtcyk7CisgICAgICAgIGkgPSBtTnVtSXRlbXMrKzsKKyAgICAgICAgaXRlbSA9ICZtSXRlbXNbaV07CisKKyAgICAgICAgaXRlbS0+bU5hbWUgPSBuYW1lOworICAgIH0KKworICAgIHJldHVybiBpdGVtOworfQorCitjb25zdCBBTWVzc2FnZTo6SXRlbSAqQU1lc3NhZ2U6OmZpbmRJdGVtKAorICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBUeXBlIHR5cGUpIGNvbnN0IHsKKyAgICBuYW1lID0gQUF0b21pemVyOjpBdG9taXplKG5hbWUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtTnVtSXRlbXM7ICsraSkgeworICAgICAgICBjb25zdCBJdGVtICppdGVtID0gJm1JdGVtc1tpXTsKKworICAgICAgICBpZiAoaXRlbS0+bU5hbWUgPT0gbmFtZSkgeworICAgICAgICAgICAgcmV0dXJuIGl0ZW0tPm1UeXBlID09IHR5cGUgPyBpdGVtIDogTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisjZGVmaW5lIEJBU0lDX1RZUEUoTkFNRSxGSUVMRE5BTUUsVFlQRU5BTUUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit2b2lkIEFNZXNzYWdlOjpzZXQjI05BTUUoY29uc3QgY2hhciAqbmFtZSwgVFlQRU5BTUUgdmFsdWUpIHsgICAgICAgICAgICBcCisgICAgSXRlbSAqaXRlbSA9IGFsbG9jYXRlSXRlbShuYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaXRlbS0+bVR5cGUgPSBrVHlwZSMjTkFNRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaXRlbS0+dS5GSUVMRE5BTUUgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitib29sIEFNZXNzYWdlOjpmaW5kIyNOQU1FKGNvbnN0IGNoYXIgKm5hbWUsIFRZUEVOQU1FICp2YWx1ZSkgY29uc3QgeyAgICBcCisgICAgY29uc3QgSXRlbSAqaXRlbSA9IGZpbmRJdGVtKG5hbWUsIGtUeXBlIyNOQU1FKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGl0ZW0pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICp2YWx1ZSA9IGl0ZW0tPnUuRklFTEROQU1FOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKK0JBU0lDX1RZUEUoSW50MzIsaW50MzJWYWx1ZSxpbnQzMl90KQorQkFTSUNfVFlQRShJbnQ2NCxpbnQ2NFZhbHVlLGludDY0X3QpCitCQVNJQ19UWVBFKFNpemUsc2l6ZVZhbHVlLHNpemVfdCkKK0JBU0lDX1RZUEUoRmxvYXQsZmxvYXRWYWx1ZSxmbG9hdCkKK0JBU0lDX1RZUEUoRG91YmxlLGRvdWJsZVZhbHVlLGRvdWJsZSkKK0JBU0lDX1RZUEUoUG9pbnRlcixwdHJWYWx1ZSx2b2lkICopCisKKyN1bmRlZiBCQVNJQ19UWVBFCisKK3ZvaWQgQU1lc3NhZ2U6OnNldFN0cmluZygKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcywgc3NpemVfdCBsZW4pIHsKKyAgICBJdGVtICppdGVtID0gYWxsb2NhdGVJdGVtKG5hbWUpOworICAgIGl0ZW0tPm1UeXBlID0ga1R5cGVTdHJpbmc7CisgICAgaXRlbS0+dS5zdHJpbmdWYWx1ZSA9IG5ldyBBU3RyaW5nKHMsIGxlbiA8IDAgPyBzdHJsZW4ocykgOiBsZW4pOworfQorCit2b2lkIEFNZXNzYWdlOjpzZXRPYmplY3QoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3A8UmVmQmFzZT4gJm9iaikgeworICAgIEl0ZW0gKml0ZW0gPSBhbGxvY2F0ZUl0ZW0obmFtZSk7CisgICAgaXRlbS0+bVR5cGUgPSBrVHlwZU9iamVjdDsKKworICAgIGlmIChvYmogIT0gTlVMTCkgeyBvYmotPmluY1N0cm9uZyh0aGlzKTsgfQorICAgIGl0ZW0tPnUucmVmVmFsdWUgPSBvYmouZ2V0KCk7Cit9CisKK3ZvaWQgQU1lc3NhZ2U6OnNldE1lc3NhZ2UoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3A8QU1lc3NhZ2U+ICZvYmopIHsKKyAgICBJdGVtICppdGVtID0gYWxsb2NhdGVJdGVtKG5hbWUpOworICAgIGl0ZW0tPm1UeXBlID0ga1R5cGVNZXNzYWdlOworCisgICAgaWYgKG9iaiAhPSBOVUxMKSB7IG9iai0+aW5jU3Ryb25nKHRoaXMpOyB9CisgICAgaXRlbS0+dS5yZWZWYWx1ZSA9IG9iai5nZXQoKTsKK30KKworYm9vbCBBTWVzc2FnZTo6ZmluZFN0cmluZyhjb25zdCBjaGFyICpuYW1lLCBBU3RyaW5nICp2YWx1ZSkgY29uc3QgeworICAgIGNvbnN0IEl0ZW0gKml0ZW0gPSBmaW5kSXRlbShuYW1lLCBrVHlwZVN0cmluZyk7CisgICAgaWYgKGl0ZW0pIHsKKyAgICAgICAgKnZhbHVlID0gKml0ZW0tPnUuc3RyaW5nVmFsdWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQU1lc3NhZ2U6OmZpbmRPYmplY3QoY29uc3QgY2hhciAqbmFtZSwgc3A8UmVmQmFzZT4gKm9iaikgY29uc3QgeworICAgIGNvbnN0IEl0ZW0gKml0ZW0gPSBmaW5kSXRlbShuYW1lLCBrVHlwZU9iamVjdCk7CisgICAgaWYgKGl0ZW0pIHsKKyAgICAgICAgKm9iaiA9IGl0ZW0tPnUucmVmVmFsdWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQU1lc3NhZ2U6OmZpbmRNZXNzYWdlKGNvbnN0IGNoYXIgKm5hbWUsIHNwPEFNZXNzYWdlPiAqb2JqKSBjb25zdCB7CisgICAgY29uc3QgSXRlbSAqaXRlbSA9IGZpbmRJdGVtKG5hbWUsIGtUeXBlTWVzc2FnZSk7CisgICAgaWYgKGl0ZW0pIHsKKyAgICAgICAgKm9iaiA9IHN0YXRpY19jYXN0PEFNZXNzYWdlICo+KGl0ZW0tPnUucmVmVmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFNZXNzYWdlOjpwb3N0KGludDY0X3QgZGVsYXlVcykgeworICAgIGV4dGVybiBBTG9vcGVyUm9zdGVyIGdMb29wZXJSb3N0ZXI7CisKKyAgICBnTG9vcGVyUm9zdGVyLnBvc3RNZXNzYWdlKHRoaXMsIGRlbGF5VXMpOworfQorCitzcDxBTWVzc2FnZT4gQU1lc3NhZ2U6OmR1cCgpIGNvbnN0IHsKKyAgICBzcDxBTWVzc2FnZT4gbXNnID0gbmV3IEFNZXNzYWdlKG1XaGF0LCBtVGFyZ2V0KTsKKyAgICBtc2ctPm1OdW1JdGVtcyA9IG1OdW1JdGVtczsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbU51bUl0ZW1zOyArK2kpIHsKKyAgICAgICAgY29uc3QgSXRlbSAqZnJvbSA9ICZtSXRlbXNbaV07CisgICAgICAgIEl0ZW0gKnRvID0gJm1zZy0+bUl0ZW1zW2ldOworCisgICAgICAgIHRvLT5tTmFtZSA9IGZyb20tPm1OYW1lOworICAgICAgICB0by0+bVR5cGUgPSBmcm9tLT5tVHlwZTsKKworICAgICAgICBzd2l0Y2ggKGZyb20tPm1UeXBlKSB7CisgICAgICAgICAgICBjYXNlIGtUeXBlU3RyaW5nOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRvLT51LnN0cmluZ1ZhbHVlID0KKyAgICAgICAgICAgICAgICAgICAgbmV3IEFTdHJpbmcoKmZyb20tPnUuc3RyaW5nVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIGtUeXBlT2JqZWN0OgorICAgICAgICAgICAgY2FzZSBrVHlwZU1lc3NhZ2U6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdG8tPnUucmVmVmFsdWUgPSBmcm9tLT51LnJlZlZhbHVlOworICAgICAgICAgICAgICAgIHRvLT51LnJlZlZhbHVlLT5pbmNTdHJvbmcobXNnLmdldCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0by0+dSA9IGZyb20tPnU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbXNnOworfQorCitzdGF0aWMgdm9pZCBhcHBlbmRJbmRlbnQoQVN0cmluZyAqcywgaW50MzJfdCBpbmRlbnQpIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBrV2hpdGVzcGFjZVtdID0KKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjsKKworICAgIENIRUNLX0xUKChzaXplX3QpaW5kZW50LCBzaXplb2Yoa1doaXRlc3BhY2UpKTsKKworICAgIHMtPmFwcGVuZChrV2hpdGVzcGFjZSwgaW5kZW50KTsKK30KKworc3RhdGljIGJvb2wgaXNGb3VyY2ModWludDMyX3Qgd2hhdCkgeworICAgIHJldHVybiBpc3ByaW50KHdoYXQgJiAweGZmKQorICAgICAgICAmJiBpc3ByaW50KCh3aGF0ID4+IDgpICYgMHhmZikKKyAgICAgICAgJiYgaXNwcmludCgod2hhdCA+PiAxNikgJiAweGZmKQorICAgICAgICAmJiBpc3ByaW50KCh3aGF0ID4+IDI0KSAmIDB4ZmYpOworfQorCitBU3RyaW5nIEFNZXNzYWdlOjpkZWJ1Z1N0cmluZyhpbnQzMl90IGluZGVudCkgY29uc3QgeworICAgIEFTdHJpbmcgcyA9ICJBTWVzc2FnZSh3aGF0ID0gIjsKKworICAgIEFTdHJpbmcgdG1wOworICAgIGlmIChpc0ZvdXJjYyhtV2hhdCkpIHsKKyAgICAgICAgdG1wID0gU3RyaW5nUHJpbnRmKAorICAgICAgICAgICAgICAgICInJWMlYyVjJWMnIiwKKyAgICAgICAgICAgICAgICAoY2hhcikobVdoYXQgPj4gMjQpLAorICAgICAgICAgICAgICAgIChjaGFyKSgobVdoYXQgPj4gMTYpICYgMHhmZiksCisgICAgICAgICAgICAgICAgKGNoYXIpKChtV2hhdCA+PiA4KSAmIDB4ZmYpLAorICAgICAgICAgICAgICAgIChjaGFyKShtV2hhdCAmIDB4ZmYpKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoIjB4JTA4eCIsIG1XaGF0KTsKKyAgICB9CisgICAgcy5hcHBlbmQodG1wKTsKKworICAgIGlmIChtVGFyZ2V0ICE9IDApIHsKKyAgICAgICAgdG1wID0gU3RyaW5nUHJpbnRmKCIsIHRhcmdldCA9ICVkIiwgbVRhcmdldCk7CisgICAgICAgIHMuYXBwZW5kKHRtcCk7CisgICAgfQorICAgIHMuYXBwZW5kKCIpID0ge1xuIik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1OdW1JdGVtczsgKytpKSB7CisgICAgICAgIGNvbnN0IEl0ZW0gJml0ZW0gPSBtSXRlbXNbaV07CisKKyAgICAgICAgc3dpdGNoIChpdGVtLm1UeXBlKSB7CisgICAgICAgICAgICBjYXNlIGtUeXBlSW50MzI6CisgICAgICAgICAgICAgICAgdG1wID0gU3RyaW5nUHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAgICAgImludDMyX3QgJXMgPSAlZCIsIGl0ZW0ubU5hbWUsIGl0ZW0udS5pbnQzMlZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVJbnQ2NDoKKyAgICAgICAgICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50NjRfdCAlcyA9ICVsbGQiLCBpdGVtLm1OYW1lLCBpdGVtLnUuaW50NjRWYWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGtUeXBlU2l6ZToKKyAgICAgICAgICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAic2l6ZV90ICVzID0gJWQiLCBpdGVtLm1OYW1lLCBpdGVtLnUuc2l6ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVGbG9hdDoKKyAgICAgICAgICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQgJXMgPSAlZiIsIGl0ZW0ubU5hbWUsIGl0ZW0udS5mbG9hdFZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVEb3VibGU6CisgICAgICAgICAgICAgICAgdG1wID0gU3RyaW5nUHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAgICAgImRvdWJsZSAlcyA9ICVmIiwgaXRlbS5tTmFtZSwgaXRlbS51LmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVQb2ludGVyOgorICAgICAgICAgICAgICAgIHRtcCA9IFN0cmluZ1ByaW50ZigKKyAgICAgICAgICAgICAgICAgICAgICAgICJ2b2lkIColcyA9ICVwIiwgaXRlbS5tTmFtZSwgaXRlbS51LnB0clZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVTdHJpbmc6CisgICAgICAgICAgICAgICAgdG1wID0gU3RyaW5nUHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyAlcyA9IFwiJXNcIiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm1OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS51LnN0cmluZ1ZhbHVlLT5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVPYmplY3Q6CisgICAgICAgICAgICAgICAgdG1wID0gU3RyaW5nUHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAgICAgIlJlZkJhc2UgKiVzID0gJXAiLCBpdGVtLm1OYW1lLCBpdGVtLnUucmVmVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHlwZU1lc3NhZ2U6CisgICAgICAgICAgICAgICAgdG1wID0gU3RyaW5nUHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAgICAgIkFNZXNzYWdlICVzID0gJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFNZXNzYWdlICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udS5yZWZWYWx1ZSktPmRlYnVnU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKyBzdHJsZW4oaXRlbS5tTmFtZSkgKyAxNCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFRSRVNQQVNTKCk7CisgICAgICAgIH0KKworICAgICAgICBhcHBlbmRJbmRlbnQoJnMsIGluZGVudCk7CisgICAgICAgIHMuYXBwZW5kKCIgICIpOworICAgICAgICBzLmFwcGVuZCh0bXApOworICAgICAgICBzLmFwcGVuZCgiXG4iKTsKKyAgICB9CisKKyAgICBhcHBlbmRJbmRlbnQoJnMsIGluZGVudCk7CisgICAgcy5hcHBlbmQoIn0iKTsKKworICAgIHJldHVybiBzOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BU3RyaW5nLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFiNzZjZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5jcHAKQEAgLTAsMCArMSwzMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiQURlYnVnLmgiCisjaW5jbHVkZSAiQVN0cmluZy5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIHN0YXRpYworY29uc3QgY2hhciAqQVN0cmluZzo6a0VtcHR5U3RyaW5nID0gIiI7CisKK0FTdHJpbmc6OkFTdHJpbmcoKQorICAgIDogbURhdGEoKGNoYXIgKilrRW1wdHlTdHJpbmcpLAorICAgICAgbVNpemUoMCksCisgICAgICBtQWxsb2NTaXplKDEpIHsKK30KKworQVN0cmluZzo6QVN0cmluZyhjb25zdCBjaGFyICpzKQorICAgIDogbURhdGEoTlVMTCksCisgICAgICBtU2l6ZSgwKSwKKyAgICAgIG1BbGxvY1NpemUoMSkgeworICAgIHNldFRvKHMpOworfQorCitBU3RyaW5nOjpBU3RyaW5nKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzaXplKQorICAgIDogbURhdGEoTlVMTCksCisgICAgICBtU2l6ZSgwKSwKKyAgICAgIG1BbGxvY1NpemUoMSkgeworICAgIHNldFRvKHMsIHNpemUpOworfQorCitBU3RyaW5nOjpBU3RyaW5nKGNvbnN0IEFTdHJpbmcgJmZyb20pCisgICAgOiBtRGF0YShOVUxMKSwKKyAgICAgIG1TaXplKDApLAorICAgICAgbUFsbG9jU2l6ZSgxKSB7CisgICAgc2V0VG8oZnJvbSwgMCwgZnJvbS5zaXplKCkpOworfQorCitBU3RyaW5nOjpBU3RyaW5nKGNvbnN0IEFTdHJpbmcgJmZyb20sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBuKQorICAgIDogbURhdGEoTlVMTCksCisgICAgICBtU2l6ZSgwKSwKKyAgICAgIG1BbGxvY1NpemUoMSkgeworICAgIHNldFRvKGZyb20sIG9mZnNldCwgbik7Cit9CisKK0FTdHJpbmc6On5BU3RyaW5nKCkgeworICAgIGNsZWFyKCk7Cit9CisKK0FTdHJpbmcgJkFTdHJpbmc6Om9wZXJhdG9yPShjb25zdCBBU3RyaW5nICZmcm9tKSB7CisgICAgaWYgKCZmcm9tICE9IHRoaXMpIHsKKyAgICAgICAgc2V0VG8oZnJvbSwgMCwgZnJvbS5zaXplKCkpOworICAgIH0KKworICAgIHJldHVybiAqdGhpczsKK30KKworc2l6ZV90IEFTdHJpbmc6OnNpemUoKSBjb25zdCB7CisgICAgcmV0dXJuIG1TaXplOworfQorCitjb25zdCBjaGFyICpBU3RyaW5nOjpjX3N0cigpIGNvbnN0IHsKKyAgICByZXR1cm4gbURhdGE7Cit9CisKK2Jvb2wgQVN0cmluZzo6ZW1wdHkoKSBjb25zdCB7CisgICAgcmV0dXJuIG1TaXplID09IDA7Cit9CisKK3ZvaWQgQVN0cmluZzo6c2V0VG8oY29uc3QgY2hhciAqcykgeworICAgIHNldFRvKHMsIHN0cmxlbihzKSk7Cit9CisKK3ZvaWQgQVN0cmluZzo6c2V0VG8oY29uc3QgY2hhciAqcywgc2l6ZV90IHNpemUpIHsKKyAgICBjbGVhcigpOworICAgIGFwcGVuZChzLCBzaXplKTsKK30KKwordm9pZCBBU3RyaW5nOjpzZXRUbyhjb25zdCBBU3RyaW5nICZmcm9tLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbikgeworICAgIENIRUNLKCZmcm9tICE9IHRoaXMpOworCisgICAgY2xlYXIoKTsKKyAgICBzZXRUbyhmcm9tLm1EYXRhICsgb2Zmc2V0LCBuKTsKK30KKwordm9pZCBBU3RyaW5nOjpjbGVhcigpIHsKKyAgICBpZiAobURhdGEgJiYgbURhdGEgIT0ga0VtcHR5U3RyaW5nKSB7CisgICAgICAgIGZyZWUobURhdGEpOworICAgICAgICBtRGF0YSA9IE5VTEw7CisgICAgfQorCisgICAgbURhdGEgPSAoY2hhciAqKWtFbXB0eVN0cmluZzsKKyAgICBtU2l6ZSA9IDA7CisgICAgbUFsbG9jU2l6ZSA9IDE7Cit9CisKK3NpemVfdCBBU3RyaW5nOjpoYXNoKCkgY29uc3QgeworICAgIHNpemVfdCB4ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1TaXplOyArK2kpIHsKKyAgICAgICAgeCA9ICh4ICogMzEpICsgbURhdGFbaV07CisgICAgfQorCisgICAgcmV0dXJuIHg7Cit9CisKK2Jvb2wgQVN0cmluZzo6b3BlcmF0b3I9PShjb25zdCBBU3RyaW5nICZvdGhlcikgY29uc3QgeworICAgIHJldHVybiBtU2l6ZSA9PSBvdGhlci5tU2l6ZSAmJiAhbWVtY21wKG1EYXRhLCBvdGhlci5tRGF0YSwgbVNpemUpOworfQorCit2b2lkIEFTdHJpbmc6OnRyaW0oKSB7CisgICAgbWFrZU11dGFibGUoKTsKKworICAgIHNpemVfdCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IG1TaXplICYmIGlzc3BhY2UobURhdGFbaV0pKSB7CisgICAgICAgICsraTsKKyAgICB9CisKKyAgICBzaXplX3QgaiA9IG1TaXplOworICAgIHdoaWxlIChqID4gaSAmJiBpc3NwYWNlKG1EYXRhW2ogLSAxXSkpIHsKKyAgICAgICAgLS1qOworICAgIH0KKworICAgIG1lbW1vdmUobURhdGEsICZtRGF0YVtpXSwgaiAtIGkpOworICAgIG1TaXplID0gaiAtIGk7CisgICAgbURhdGFbbVNpemVdID0gJ1wwJzsKK30KKwordm9pZCBBU3RyaW5nOjplcmFzZShzaXplX3Qgc3RhcnQsIHNpemVfdCBuKSB7CisgICAgQ0hFQ0tfTFQoc3RhcnQsIG1TaXplKTsKKyAgICBDSEVDS19MRShzdGFydCArIG4sIG1TaXplKTsKKworICAgIG1ha2VNdXRhYmxlKCk7CisKKyAgICBtZW1tb3ZlKCZtRGF0YVtzdGFydF0sICZtRGF0YVtzdGFydCArIG5dLCBtU2l6ZSAtIHN0YXJ0IC0gbik7CisgICAgbVNpemUgLT0gbjsKKyAgICBtRGF0YVttU2l6ZV0gPSAnXDAnOworfQorCit2b2lkIEFTdHJpbmc6Om1ha2VNdXRhYmxlKCkgeworICAgIGlmIChtRGF0YSA9PSBrRW1wdHlTdHJpbmcpIHsKKyAgICAgICAgbURhdGEgPSBzdHJkdXAoa0VtcHR5U3RyaW5nKTsKKyAgICB9Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIgKnMpIHsKKyAgICBhcHBlbmQocywgc3RybGVuKHMpKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciAqcywgc2l6ZV90IHNpemUpIHsKKyAgICBtYWtlTXV0YWJsZSgpOworCisgICAgaWYgKG1TaXplICsgc2l6ZSArIDEgPiBtQWxsb2NTaXplKSB7CisgICAgICAgIG1BbGxvY1NpemUgPSAobUFsbG9jU2l6ZSArIHNpemUgKyAzMSkgJiAtMzI7CisgICAgICAgIG1EYXRhID0gKGNoYXIgKilyZWFsbG9jKG1EYXRhLCBtQWxsb2NTaXplKTsKKyAgICAgICAgQ0hFQ0sobURhdGEgIT0gTlVMTCk7CisgICAgfQorCisgICAgbWVtY3B5KCZtRGF0YVttU2l6ZV0sIHMsIHNpemUpOworICAgIG1TaXplICs9IHNpemU7CisgICAgbURhdGFbbVNpemVdID0gJ1wwJzsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQoY29uc3QgQVN0cmluZyAmZnJvbSkgeworICAgIGFwcGVuZChmcm9tLmNfc3RyKCksIGZyb20uc2l6ZSgpKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQoY29uc3QgQVN0cmluZyAmZnJvbSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG4pIHsKKyAgICBhcHBlbmQoZnJvbS5jX3N0cigpICsgb2Zmc2V0LCBuKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQoaW50IHgpIHsKKyAgICBjaGFyIHNbMTZdOworICAgIHNwcmludGYocywgIiVkIiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKHVuc2lnbmVkIHgpIHsKKyAgICBjaGFyIHNbMTZdOworICAgIHNwcmludGYocywgIiV1IiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKGxvbmcgeCkgeworICAgIGNoYXIgc1sxNl07CisgICAgc3ByaW50ZihzLCAiJWxkIiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKHVuc2lnbmVkIGxvbmcgeCkgeworICAgIGNoYXIgc1sxNl07CisgICAgc3ByaW50ZihzLCAiJWx1IiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKGxvbmcgbG9uZyB4KSB7CisgICAgY2hhciBzWzMyXTsKKyAgICBzcHJpbnRmKHMsICIlbGxkIiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKHVuc2lnbmVkIGxvbmcgbG9uZyB4KSB7CisgICAgY2hhciBzWzMyXTsKKyAgICBzcHJpbnRmKHMsICIlbGx1IiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKGZsb2F0IHgpIHsKKyAgICBjaGFyIHNbMTZdOworICAgIHNwcmludGYocywgIiVmIiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKGRvdWJsZSB4KSB7CisgICAgY2hhciBzWzE2XTsKKyAgICBzcHJpbnRmKHMsICIlZiIsIHgpOworCisgICAgYXBwZW5kKHMpOworfQorCit2b2lkIEFTdHJpbmc6OmFwcGVuZCh2b2lkICp4KSB7CisgICAgY2hhciBzWzE2XTsKKyAgICBzcHJpbnRmKHMsICIlcCIsIHgpOworCisgICAgYXBwZW5kKHMpOworfQorCitzc2l6ZV90IEFTdHJpbmc6OmZpbmQoY29uc3QgY2hhciAqc3Vic3RyaW5nLCBzaXplX3Qgc3RhcnQpIGNvbnN0IHsKKyAgICBDSEVDS19MRShzdGFydCwgc2l6ZSgpKTsKKworICAgIGNvbnN0IGNoYXIgKm1hdGNoID0gc3Ryc3RyKG1EYXRhICsgc3RhcnQsIHN1YnN0cmluZyk7CisKKyAgICBpZiAobWF0Y2ggPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG1hdGNoIC0gbURhdGE7Cit9CisKK3ZvaWQgQVN0cmluZzo6aW5zZXJ0KGNvbnN0IEFTdHJpbmcgJmZyb20sIHNpemVfdCBpbnNlcnRpb25Qb3MpIHsKKyAgICBpbnNlcnQoZnJvbS5jX3N0cigpLCBmcm9tLnNpemUoKSwgaW5zZXJ0aW9uUG9zKTsKK30KKwordm9pZCBBU3RyaW5nOjppbnNlcnQoY29uc3QgY2hhciAqZnJvbSwgc2l6ZV90IHNpemUsIHNpemVfdCBpbnNlcnRpb25Qb3MpIHsKKyAgICBDSEVDS19HRShpbnNlcnRpb25Qb3MsIDB1KTsKKyAgICBDSEVDS19MRShpbnNlcnRpb25Qb3MsIG1TaXplKTsKKworICAgIG1ha2VNdXRhYmxlKCk7CisKKyAgICBpZiAobVNpemUgKyBzaXplICsgMSA+IG1BbGxvY1NpemUpIHsKKyAgICAgICAgbUFsbG9jU2l6ZSA9IChtQWxsb2NTaXplICsgc2l6ZSArIDMxKSAmIC0zMjsKKyAgICAgICAgbURhdGEgPSAoY2hhciAqKXJlYWxsb2MobURhdGEsIG1BbGxvY1NpemUpOworICAgICAgICBDSEVDSyhtRGF0YSAhPSBOVUxMKTsKKyAgICB9CisKKyAgICBtZW1tb3ZlKCZtRGF0YVtpbnNlcnRpb25Qb3MgKyBzaXplXSwKKyAgICAgICAgICAgICZtRGF0YVtpbnNlcnRpb25Qb3NdLCBtU2l6ZSAtIGluc2VydGlvblBvcyArIDEpOworCisgICAgbWVtY3B5KCZtRGF0YVtpbnNlcnRpb25Qb3NdLCBmcm9tLCBzaXplKTsKKworICAgIG1TaXplICs9IHNpemU7Cit9CisKK2Jvb2wgQVN0cmluZzo6b3BlcmF0b3I8KGNvbnN0IEFTdHJpbmcgJm90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbXBhcmUob3RoZXIpIDwgMDsKK30KKworYm9vbCBBU3RyaW5nOjpvcGVyYXRvcj4oY29uc3QgQVN0cmluZyAmb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gY29tcGFyZShvdGhlcikgPiAwOworfQorCitpbnQgQVN0cmluZzo6Y29tcGFyZShjb25zdCBBU3RyaW5nICZvdGhlcikgY29uc3QgeworICAgIHJldHVybiBzdHJjbXAobURhdGEsIG90aGVyLm1EYXRhKTsKK30KKwordm9pZCBBU3RyaW5nOjp0b2xvd2VyKCkgeworICAgIG1ha2VNdXRhYmxlKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1TaXplOyArK2kpIHsKKyAgICAgICAgbURhdGFbaV0gPSA6OnRvbG93ZXIobURhdGFbaV0pOworICAgIH0KK30KKworYm9vbCBBU3RyaW5nOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIgKnByZWZpeCkgY29uc3QgeworICAgIHJldHVybiAhc3RybmNtcChtRGF0YSwgcHJlZml4LCBzdHJsZW4ocHJlZml4KSk7Cit9CisKK0FTdHJpbmcgU3RyaW5nUHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSB7CisgICAgdmFfbGlzdCBhcDsKKyAgICB2YV9zdGFydChhcCwgZm9ybWF0KTsKKworICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICB2YXNwcmludGYoJmJ1ZmZlciwgZm9ybWF0LCBhcCk7CisKKyAgICB2YV9lbmQoYXApOworCisgICAgQVN0cmluZyByZXN1bHQoYnVmZmVyKTsKKworICAgIGZyZWUoYnVmZmVyKTsKKyAgICBidWZmZXIgPSBOVUxMOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZWVhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FuZHJvaWQubWsKQEAgLTAsMCArMSwzNiBAQAorTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTOj0gICAgICAgICAgICAgICBcCisgICAgQUF0b21pemVyLmNwcCAgICAgICAgICAgICAgIFwKKyAgICBBQnVmZmVyLmNwcCAgICAgICAgICAgICAgICAgXAorICAgIEFEZWJ1Zy5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgQUhhbmRsZXIuY3BwICAgICAgICAgICAgICAgIFwKKyAgICBBTG9vcGVyLmNwcCAgICAgICAgICAgICAgICAgXAorICAgIEFMb29wZXJSb3N0ZXIuY3BwICAgICAgICAgICBcCisgICAgQU1lc3NhZ2UuY3BwICAgICAgICAgICAgICAgIFwKKyAgICBBU3RyaW5nLmNwcCAgICAgICAgICAgICAgICAgXAorICAgIGJhc2U2NC5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgaGV4ZHVtcC5jcHAKKworTE9DQUxfQ19JTkNMVURFUzo9IFwKKyAgICBmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gXAorICAgICAgICBsaWJiaW5kZXIgICAgICAgICBcCisgICAgICAgIGxpYm1lZGlhICAgICAgICAgIFwKKyAgICAgICAgbGlidXRpbHMgICAgICAgICAgXAorICAgICAgICBsaWJjdXRpbHMgICAgICAgICBcCisgICAgICAgIGxpYnVpICAgICAgICAgICAgIFwKKyAgICAgICAgbGlic29uaXZveCAgICAgICAgXAorICAgICAgICBsaWJ2b3JiaXNpZGVjICAgICBcCisgICAgICAgIGxpYnN1cmZhY2VmbGluZ2VyX2NsaWVudCBcCisgICAgICAgIGxpYmNhbWVyYV9jbGllbnQKKworTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tbXVsdGljaGFyCisKK0xPQ0FMX01PRFVMRTo9IGxpYnN0YWdlZnJpZ2h0X2ZvdW5kYXRpb24KKworTE9DQUxfUFJFTElOS19NT0RVTEU6PSBmYWxzZQorCitpbmNsdWRlICQoQlVJTERfU0hBUkVEX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL2Jhc2U2NC5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL2Jhc2U2NC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmYjRlMDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL2Jhc2U2NC5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiYmFzZTY0LmgiCisKKyNpbmNsdWRlICJBQnVmZmVyLmgiCisjaW5jbHVkZSAiQURlYnVnLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3A8QUJ1ZmZlcj4gZGVjb2RlQmFzZTY0KGNvbnN0IEFTdHJpbmcgJnMpIHsKKyAgICBpZiAoKHMuc2l6ZSgpICUgNCkgIT0gMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzaXplX3QgbiA9IHMuc2l6ZSgpOworICAgIHNpemVfdCBwYWRkaW5nID0gMDsKKyAgICBpZiAobiA+PSAxICYmIHMuY19zdHIoKVtuIC0gMV0gPT0gJz0nKSB7CisgICAgICAgIHBhZGRpbmcgPSAxOworCisgICAgICAgIGlmIChuID49IDIgJiYgcy5jX3N0cigpW24gLSAyXSA9PSAnPScpIHsKKyAgICAgICAgICAgIHBhZGRpbmcgPSAyOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZV90IG91dExlbiA9IDMgKiBzLnNpemUoKSAvIDQgLSBwYWRkaW5nOworCisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gbmV3IEFCdWZmZXIob3V0TGVuKTsKKworICAgIHVpbnQ4X3QgKm91dCA9IGJ1ZmZlci0+ZGF0YSgpOworICAgIHNpemVfdCBqID0gMDsKKyAgICB1aW50MzJfdCBhY2N1bSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgY2hhciBjID0gcy5jX3N0cigpW2ldOworICAgICAgICB1bnNpZ25lZCB2YWx1ZTsKKyAgICAgICAgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGMgLSAnQSc7CisgICAgICAgIH0gZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAneicpIHsKKyAgICAgICAgICAgIHZhbHVlID0gMjYgKyBjIC0gJ2EnOworICAgICAgICB9IGVsc2UgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICB2YWx1ZSA9IDUyICsgYyAtICcwJzsKKyAgICAgICAgfSBlbHNlIGlmIChjID09ICcrJykgeworICAgICAgICAgICAgdmFsdWUgPSA2MjsKKyAgICAgICAgfSBlbHNlIGlmIChjID09ICcvJykgeworICAgICAgICAgICAgdmFsdWUgPSA2MzsKKyAgICAgICAgfSBlbHNlIGlmIChjICE9ICc9JykgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaSA8IG4gLSBwYWRkaW5nKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGFjY3VtID0gKGFjY3VtIDw8IDYpIHwgdmFsdWU7CisKKyAgICAgICAgaWYgKCgoaSArIDEpICUgNCkgPT0gMCkgeworICAgICAgICAgICAgb3V0W2orK10gPSAoYWNjdW0gPj4gMTYpOworCisgICAgICAgICAgICBpZiAoaiA8IG91dExlbikgeyBvdXRbaisrXSA9IChhY2N1bSA+PiA4KSAmIDB4ZmY7IH0gCisgICAgICAgICAgICBpZiAoaiA8IG91dExlbikgeyBvdXRbaisrXSA9IGFjY3VtICYgMHhmZjsgfQorCisgICAgICAgICAgICBhY2N1bSA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitzdGF0aWMgY2hhciBlbmNvZGU2Qml0KHVuc2lnbmVkIHgpIHsKKyAgICBpZiAoeCA8PSAyNSkgeworICAgICAgICByZXR1cm4gJ0EnICsgeDsKKyAgICB9IGVsc2UgaWYgKHggPD0gNTEpIHsKKyAgICAgICAgcmV0dXJuICdhJyArIHggLSAyNjsKKyAgICB9IGVsc2UgaWYgKHggPD0gNjEpIHsKKyAgICAgICAgcmV0dXJuICcwJyArIHggLSA1MjsKKyAgICB9IGVsc2UgaWYgKHggPT0gNjIpIHsKKyAgICAgICAgcmV0dXJuICcrJzsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gJy8nOworICAgIH0KK30KKwordm9pZCBlbmNvZGVCYXNlNjQoCisgICAgICAgIGNvbnN0IHZvaWQgKl9kYXRhLCBzaXplX3Qgc2l6ZSwgQVN0cmluZyAqb3V0KSB7CisgICAgb3V0LT5jbGVhcigpOworCisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IChjb25zdCB1aW50OF90ICopX2RhdGE7CisKKyAgICBzaXplX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgKHNpemUgLyAzKSAqIDM7IGkgKz0gMykgeworICAgICAgICB1aW50OF90IHgxID0gZGF0YVtpXTsKKyAgICAgICAgdWludDhfdCB4MiA9IGRhdGFbaSArIDFdOworICAgICAgICB1aW50OF90IHgzID0gZGF0YVtpICsgMl07CisKKyAgICAgICAgb3V0LT5hcHBlbmQoZW5jb2RlNkJpdCh4MSA+PiAyKSk7CisgICAgICAgIG91dC0+YXBwZW5kKGVuY29kZTZCaXQoKHgxIDw8IDQgfCB4MiA+PiA0KSAmIDB4M2YpKTsKKyAgICAgICAgb3V0LT5hcHBlbmQoZW5jb2RlNkJpdCgoeDIgPDwgMiB8IHgzID4+IDYpICYgMHgzZikpOworICAgICAgICBvdXQtPmFwcGVuZChlbmNvZGU2Qml0KHgzICYgMHgzZikpOworICAgIH0KKyAgICBzd2l0Y2ggKHNpemUgJSAzKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgeDEgPSBkYXRhW2ldOworICAgICAgICAgICAgdWludDhfdCB4MiA9IGRhdGFbaSArIDFdOworICAgICAgICAgICAgb3V0LT5hcHBlbmQoZW5jb2RlNkJpdCh4MSA+PiAyKSk7CisgICAgICAgICAgICBvdXQtPmFwcGVuZChlbmNvZGU2Qml0KCh4MSA8PCA0IHwgeDIgPj4gNCkgJiAweDNmKSk7CisgICAgICAgICAgICBvdXQtPmFwcGVuZChlbmNvZGU2Qml0KCh4MiA8PCAyKSAmIDB4M2YpKTsKKyAgICAgICAgICAgIG91dC0+YXBwZW5kKCc9Jyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICB7CisgICAgICAgICAgICB1aW50OF90IHgxID0gZGF0YVtpXTsKKyAgICAgICAgICAgIG91dC0+YXBwZW5kKGVuY29kZTZCaXQoeDEgPj4gMikpOworICAgICAgICAgICAgb3V0LT5hcHBlbmQoZW5jb2RlNkJpdCgoeDEgPDwgNCkgJiAweDNmKSk7CisgICAgICAgICAgICBvdXQtPmFwcGVuZCgiPT0iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vaGV4ZHVtcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzYjU4NwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vaGV4ZHVtcC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJoZXhkdW1wLmgiCisKKyNpbmNsdWRlICJBRGVidWcuaCIKKyNpbmNsdWRlICJBU3RyaW5nLmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKwordm9pZCBoZXhkdW1wKGNvbnN0IHZvaWQgKl9kYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSAoY29uc3QgdWludDhfdCAqKV9kYXRhOworCisgICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgd2hpbGUgKG9mZnNldCA8IHNpemUpIHsKKyAgICAgICAgQVN0cmluZyBsaW5lOworCisgICAgICAgIGNoYXIgdG1wWzMyXTsKKyAgICAgICAgc3ByaW50Zih0bXAsICIlMDhseDogICIsICh1bnNpZ25lZCBsb25nKW9mZnNldCk7CisKKyAgICAgICAgbGluZS5hcHBlbmQodG1wKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09IDgpIHsKKyAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZCgnICcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9mZnNldCArIGkgPj0gc2l6ZSkgeworICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kKCIgICAiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3ByaW50Zih0bXAsICIlMDJ4ICIsIGRhdGFbb2Zmc2V0ICsgaV0pOworICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kKHRtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsaW5lLmFwcGVuZCgnICcpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAgICAgICAgaWYgKG9mZnNldCArIGkgPj0gc2l6ZSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNwcmludChkYXRhW29mZnNldCArIGldKSkgeworICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kKChjaGFyKWRhdGFbb2Zmc2V0ICsgaV0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZCgnLicpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgTE9HKElORk8pIDw8IGxpbmU7CisKKyAgICAgICAgb2Zmc2V0ICs9IDE2OworICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2h0dHBsaXZlL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RlMmM4MAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2h0dHBsaXZlL0FuZHJvaWQubWsKQEAgLTAsMCArMSwyMCBAQAorTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSAgICAgICBcCisgICAgICAgIExpdmVTb3VyY2UuY3BwICBcCisgICAgICAgIE0zVVBhcnNlci5jcHAgICBcCisKK0xPQ0FMX0NfSU5DTFVERVM6PSBcCisJJChKTklfSF9JTkNMVURFKSBcCisJJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlIFwKKyAgICAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodAorCitMT0NBTF9NT0RVTEU6PSBsaWJzdGFnZWZyaWdodF9odHRwbGl2ZQorCitpZmVxICgkKFRBUkdFVF9BUkNIKSxhcm0pCisgICAgTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tcHNhYmkKK2VuZGlmCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2h0dHBsaXZlL0xpdmVTb3VyY2UuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvTGl2ZVNvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAxYWZjNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2h0dHBsaXZlL0xpdmVTb3VyY2UuY3BwCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJMaXZlU291cmNlIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSAiaW5jbHVkZS9MaXZlU291cmNlLmgiCisjaW5jbHVkZSAiaW5jbHVkZS9NM1VQYXJzZXIuaCIKKyNpbmNsdWRlICJpbmNsdWRlL051SFRUUERhdGFTb3VyY2UuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitMaXZlU291cmNlOjpMaXZlU291cmNlKGNvbnN0IGNoYXIgKnVybCkKKyAgICA6IG1VUkwodXJsKSwKKyAgICAgIG1Jbml0Q2hlY2soTk9fSU5JVCksCisgICAgICBtUGxheWxpc3RJbmRleCgwKSwKKyAgICAgIG1MYXN0RmV0Y2hUaW1lVXMoLTEpLAorICAgICAgbVNvdXJjZShuZXcgTnVIVFRQRGF0YVNvdXJjZSksCisgICAgICBtU291cmNlU2l6ZSgwKSwKKyAgICAgIG1PZmZzZXRCaWFzKDApIHsKKyAgICBpZiAoc3dpdGNoVG9OZXh0KCkpIHsKKyAgICAgICAgbUluaXRDaGVjayA9IE9LOworICAgIH0KK30KKworTGl2ZVNvdXJjZTo6fkxpdmVTb3VyY2UoKSB7Cit9CisKK3N0YXR1c190IExpdmVTb3VyY2U6OmluaXRDaGVjaygpIGNvbnN0IHsKKyAgICByZXR1cm4gbUluaXRDaGVjazsKK30KKworYm9vbCBMaXZlU291cmNlOjpsb2FkUGxheWxpc3QoKSB7CisgICAgbVBsYXlsaXN0LmNsZWFyKCk7CisgICAgbVBsYXlsaXN0SW5kZXggPSAwOworCisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyOworICAgIHN0YXR1c190IGVyciA9IGZldGNoTTNVKG1VUkwuY19zdHIoKSwgJmJ1ZmZlcik7CisKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtUGxheWxpc3QgPSBuZXcgTTNVUGFyc2VyKG1VUkwuY19zdHIoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIGlmIChtUGxheWxpc3QtPmluaXRDaGVjaygpICE9IE9LKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1QbGF5bGlzdC0+bWV0YSgpLT5maW5kSW50MzIoCisgICAgICAgICAgICAgICAgIm1lZGlhLXNlcXVlbmNlIiwgJm1GaXJzdEl0ZW1TZXF1ZW5jZU51bWJlcikpIHsKKyAgICAgICAgbUZpcnN0SXRlbVNlcXVlbmNlTnVtYmVyID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGludDY0X3QgZ2V0Tm93VXMoKSB7CisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CisKKyAgICByZXR1cm4gKGludDY0X3QpdHYudHZfdXNlYyArIHR2LnR2X3NlYyAqIDEwMDAwMDBsbDsKK30KKworYm9vbCBMaXZlU291cmNlOjpzd2l0Y2hUb05leHQoKSB7CisgICAgbU9mZnNldEJpYXMgKz0gbVNvdXJjZVNpemU7CisgICAgbVNvdXJjZVNpemUgPSAwOworCisgICAgaWYgKG1MYXN0RmV0Y2hUaW1lVXMgPCAwIHx8IGdldE5vd1VzKCkgPj0gbUxhc3RGZXRjaFRpbWVVcyArIDE1MDAwMDAwbGwKKyAgICAgICAgfHwgbVBsYXlsaXN0SW5kZXggPT0gbVBsYXlsaXN0LT5zaXplKCkpIHsKKyAgICAgICAgaW50MzJfdCBuZXh0U2VxdWVuY2VOdW1iZXIgPQorICAgICAgICAgICAgbVBsYXlsaXN0SW5kZXggKyBtRmlyc3RJdGVtU2VxdWVuY2VOdW1iZXI7CisKKyAgICAgICAgaWYgKCFsb2FkUGxheWxpc3QoKSkgeworICAgICAgICAgICAgTE9HRSgiZmFpbGVkIHRvIHJlbG9hZCBwbGF5bGlzdCIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1MYXN0RmV0Y2hUaW1lVXMgPCAwKSB7CisgICAgICAgICAgICBtUGxheWxpc3RJbmRleCA9IG1QbGF5bGlzdC0+c2l6ZSgpIC8gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChuZXh0U2VxdWVuY2VOdW1iZXIgPCBtRmlyc3RJdGVtU2VxdWVuY2VOdW1iZXIKKyAgICAgICAgICAgICAgICAgICAgfHwgbmV4dFNlcXVlbmNlTnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0gbUZpcnN0SXRlbVNlcXVlbmNlTnVtYmVyICsgKGludDMyX3QpbVBsYXlsaXN0LT5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJDYW5ub3QgZmluZCBzZXF1ZW5jZSBudW1iZXIgJWQgaW4gbmV3IHBsYXlsaXN0IiwKKyAgICAgICAgICAgICAgICAgICAgIG5leHRTZXF1ZW5jZU51bWJlcik7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1QbGF5bGlzdEluZGV4ID0gbmV4dFNlcXVlbmNlTnVtYmVyIC0gbUZpcnN0SXRlbVNlcXVlbmNlTnVtYmVyOworICAgICAgICB9CisKKyAgICAgICAgbUxhc3RGZXRjaFRpbWVVcyA9IGdldE5vd1VzKCk7CisgICAgfQorCisgICAgQVN0cmluZyB1cmk7CisgICAgQ0hFQ0sobVBsYXlsaXN0LT5pdGVtQXQobVBsYXlsaXN0SW5kZXgsICZ1cmkpKTsKKyAgICBMT0dJKCJzd2l0Y2hpbmcgdG8gJXMiLCB1cmkuY19zdHIoKSk7CisKKyAgICBpZiAobVNvdXJjZS0+Y29ubmVjdCh1cmkuY19zdHIoKSkgIT0gT0sKKyAgICAgICAgICAgIHx8IG1Tb3VyY2UtPmdldFNpemUoJm1Tb3VyY2VTaXplKSAhPSBPSykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbVBsYXlsaXN0SW5kZXgrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3NpemVfdCBMaXZlU291cmNlOjpyZWFkQXQob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIENIRUNLKG9mZnNldCA+PSBtT2Zmc2V0Qmlhcyk7CisgICAgb2Zmc2V0IC09IG1PZmZzZXRCaWFzOworCisgICAgaWYgKG9mZnNldCA+PSBtU291cmNlU2l6ZSkgeworICAgICAgICBDSEVDS19FUShvZmZzZXQsIG1Tb3VyY2VTaXplKTsKKworICAgICAgICBvZmZzZXQgLT0gbVNvdXJjZVNpemU7CisgICAgICAgIGlmICghc3dpdGNoVG9OZXh0KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9FTkRfT0ZfU1RSRUFNOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZV90IG51bVJlYWQgPSAwOworICAgIHdoaWxlIChudW1SZWFkIDwgc2l6ZSkgeworICAgICAgICBzc2l6ZV90IG4gPSBtU291cmNlLT5yZWFkQXQoCisgICAgICAgICAgICAgICAgb2Zmc2V0ICsgbnVtUmVhZCwgKHVpbnQ4X3QgKilkYXRhICsgbnVtUmVhZCwgc2l6ZSAtIG51bVJlYWQpOworCisgICAgICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbnVtUmVhZCArPSBuOworICAgIH0KKworICAgIHJldHVybiBudW1SZWFkOworfQorCitzdGF0dXNfdCBMaXZlU291cmNlOjpmZXRjaE0zVShjb25zdCBjaGFyICp1cmwsIHNwPEFCdWZmZXI+ICpvdXQpIHsKKyAgICAqb3V0ID0gTlVMTDsKKworICAgIHN0YXR1c190IGVyciA9IG1Tb3VyY2UtPmNvbm5lY3QodXJsKTsKKworICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisKKyAgICBvZmZfdCBzaXplOworICAgIGVyciA9IG1Tb3VyY2UtPmdldFNpemUoJnNpemUpOworCisgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICAgIHNwPEFCdWZmZXI+IGJ1ZmZlciA9IG5ldyBBQnVmZmVyKHNpemUpOworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHdoaWxlIChvZmZzZXQgPCAoc2l6ZV90KXNpemUpIHsKKyAgICAgICAgc3NpemVfdCBuID0gbVNvdXJjZS0+cmVhZEF0KAorICAgICAgICAgICAgICAgIG9mZnNldCwgYnVmZmVyLT5kYXRhKCkgKyBvZmZzZXQsIHNpemUgLSBvZmZzZXQpOworCisgICAgICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9JTzsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCArPSBuOworICAgIH0KKworICAgICpvdXQgPSBidWZmZXI7CisKKyAgICByZXR1cm4gT0s7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9odHRwbGl2ZS9NM1VQYXJzZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvTTNVUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGQ4NjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvTTNVUGFyc2VyLmNwcApAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJpbmNsdWRlL00zVVBhcnNlci5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK00zVVBhcnNlcjo6TTNVUGFyc2VyKAorICAgICAgICBjb25zdCBjaGFyICpiYXNlVVJJLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICA6IG1Jbml0Q2hlY2soTk9fSU5JVCksCisgICAgICBtQmFzZVVSSShiYXNlVVJJKSwKKyAgICAgIG1Jc0V4dE0zVShmYWxzZSksCisgICAgICBtSXNWYXJpYW50UGxheWxpc3QoZmFsc2UpIHsKKyAgICBtSW5pdENoZWNrID0gcGFyc2UoZGF0YSwgc2l6ZSk7Cit9CisKK00zVVBhcnNlcjo6fk0zVVBhcnNlcigpIHsKK30KKworc3RhdHVzX3QgTTNVUGFyc2VyOjppbml0Q2hlY2soKSBjb25zdCB7CisgICAgcmV0dXJuIG1Jbml0Q2hlY2s7Cit9CisKK2Jvb2wgTTNVUGFyc2VyOjppc0V4dE0zVSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbUlzRXh0TTNVOworfQorCitib29sIE0zVVBhcnNlcjo6aXNWYXJpYW50UGxheWxpc3QoKSBjb25zdCB7CisgICAgcmV0dXJuIG1Jc1ZhcmlhbnRQbGF5bGlzdDsKK30KKworc3A8QU1lc3NhZ2U+IE0zVVBhcnNlcjo6bWV0YSgpIHsKKyAgICByZXR1cm4gbU1ldGE7Cit9CisKK3NpemVfdCBNM1VQYXJzZXI6OnNpemUoKSB7CisgICAgcmV0dXJuIG1JdGVtcy5zaXplKCk7Cit9CisKK2Jvb2wgTTNVUGFyc2VyOjppdGVtQXQoc2l6ZV90IGluZGV4LCBBU3RyaW5nICp1cmksIHNwPEFNZXNzYWdlPiAqbWV0YSkgeworICAgIHVyaS0+Y2xlYXIoKTsKKyAgICBpZiAobWV0YSkgeyAqbWV0YSA9IE5VTEw7IH0KKworICAgIGlmIChpbmRleCA+PSBtSXRlbXMuc2l6ZSgpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqdXJpID0gbUl0ZW1zLml0ZW1BdChpbmRleCkubVVSSTsKKworICAgIGlmIChtZXRhKSB7CisgICAgICAgICptZXRhID0gbUl0ZW1zLml0ZW1BdChpbmRleCkubU1ldGE7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIE1ha2VVUkwoY29uc3QgY2hhciAqYmFzZVVSTCwgY29uc3QgY2hhciAqdXJsLCBBU3RyaW5nICpvdXQpIHsKKyAgICBvdXQtPmNsZWFyKCk7CisKKyAgICBpZiAoc3RybmNhc2VjbXAoImh0dHA6Ly8iLCBiYXNlVVJMLCA3KSkgeworICAgICAgICAvLyBCYXNlIFVSTCBtdXN0IGJlIGFic29sdXRlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIXN0cm5jYXNlY21wKCJodHRwOi8vIiwgdXJsLCA3KSkgeworICAgICAgICAvLyAidXJsIiBpcyBhbHJlYWR5IGFuIGFic29sdXRlIFVSTCwgaWdub3JlIGJhc2UgVVJMLgorICAgICAgICBvdXQtPnNldFRvKHVybCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHNpemVfdCBuID0gc3RybGVuKGJhc2VVUkwpOworICAgIGlmIChiYXNlVVJMW24gLSAxXSA9PSAnLycpIHsKKyAgICAgICAgb3V0LT5zZXRUbyhiYXNlVVJMKTsKKyAgICAgICAgb3V0LT5hcHBlbmQodXJsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGFyICpzbGFzaFBvcyA9IHN0cnJjaHIoYmFzZVVSTCwgJy8nKTsKKworICAgICAgICBpZiAoc2xhc2hQb3MgPiAmYmFzZVVSTFs2XSkgeworICAgICAgICAgICAgb3V0LT5zZXRUbyhiYXNlVVJMLCBzbGFzaFBvcyAtIGJhc2VVUkwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb3V0LT5zZXRUbyhiYXNlVVJMKTsKKyAgICAgICAgfQorCisgICAgICAgIG91dC0+YXBwZW5kKCIvIik7CisgICAgICAgIG91dC0+YXBwZW5kKHVybCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXR1c190IE0zVVBhcnNlcjo6cGFyc2UoY29uc3Qgdm9pZCAqX2RhdGEsIHNpemVfdCBzaXplKSB7CisgICAgaW50MzJfdCBsaW5lTm8gPSAwOworCisgICAgc3A8QU1lc3NhZ2U+IGl0ZW1NZXRhOworCisgICAgY29uc3QgY2hhciAqZGF0YSA9IChjb25zdCBjaGFyICopX2RhdGE7CisgICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgd2hpbGUgKG9mZnNldCA8IHNpemUpIHsKKyAgICAgICAgc2l6ZV90IG9mZnNldExGID0gb2Zmc2V0OworICAgICAgICB3aGlsZSAob2Zmc2V0TEYgPCBzaXplICYmIGRhdGFbb2Zmc2V0TEZdICE9ICdcbicpIHsKKyAgICAgICAgICAgICsrb2Zmc2V0TEY7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9mZnNldExGID49IHNpemUpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgQVN0cmluZyBsaW5lOworICAgICAgICBpZiAob2Zmc2V0TEYgPiBvZmZzZXQgJiYgZGF0YVtvZmZzZXRMRiAtIDFdID09ICdccicpIHsKKyAgICAgICAgICAgIGxpbmUuc2V0VG8oJmRhdGFbb2Zmc2V0XSwgb2Zmc2V0TEYgLSBvZmZzZXQgLSAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxpbmUuc2V0VG8oJmRhdGFbb2Zmc2V0XSwgb2Zmc2V0TEYgLSBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgTE9HSSgiIyVzIyIsIGxpbmUuY19zdHIoKSk7CisKKyAgICAgICAgaWYgKGxpbmVObyA9PSAwICYmIGxpbmUgPT0gIiNFWFRNM1UiKSB7CisgICAgICAgICAgICBtSXNFeHRNM1UgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1Jc0V4dE0zVSkgeworICAgICAgICAgICAgc3RhdHVzX3QgZXJyID0gT0s7CisKKyAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoIiNFWFQtWC1UQVJHRVREVVJBVElPTiIpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1Jc1ZhcmlhbnRQbGF5bGlzdCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlcnIgPSBwYXJzZU1ldGFEYXRhKGxpbmUsICZtTWV0YSwgInRhcmdldC1kdXJhdGlvbiIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoIiNFWFQtWC1NRURJQS1TRVFVRU5DRSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1Jc1ZhcmlhbnRQbGF5bGlzdCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlcnIgPSBwYXJzZU1ldGFEYXRhKGxpbmUsICZtTWV0YSwgIm1lZGlhLXNlcXVlbmNlIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgiI0VYVElORiIpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1Jc1ZhcmlhbnRQbGF5bGlzdCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlcnIgPSBwYXJzZU1ldGFEYXRhKGxpbmUsICZpdGVtTWV0YSwgImR1cmF0aW9uIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgiI0VYVC1YLVNUUkVBTS1JTkYiKSkgeworICAgICAgICAgICAgICAgIGlmIChtTWV0YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1Jc1ZhcmlhbnRQbGF5bGlzdCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoIiMiKSkgeworICAgICAgICAgICAgaWYgKCFtSXNWYXJpYW50UGxheWxpc3QpIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGR1cmF0aW9uU2VjczsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbU1ldGEgPT0gTlVMTAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgIWl0ZW1NZXRhLT5maW5kSW50MzIoImR1cmF0aW9uIiwgJmR1cmF0aW9uU2VjcykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SX01BTEZPUk1FRDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1JdGVtcy5wdXNoKCk7CisgICAgICAgICAgICBJdGVtICppdGVtID0gJm1JdGVtcy5lZGl0SXRlbUF0KG1JdGVtcy5zaXplKCkgLSAxKTsKKworICAgICAgICAgICAgQ0hFQ0soTWFrZVVSTChtQmFzZVVSSS5jX3N0cigpLCBsaW5lLmNfc3RyKCksICZpdGVtLT5tVVJJKSk7CisKKyAgICAgICAgICAgIGl0ZW0tPm1NZXRhID0gaXRlbU1ldGE7CisKKyAgICAgICAgICAgIGl0ZW1NZXRhLmNsZWFyKCk7CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQgPSBvZmZzZXRMRiArIDE7CisgICAgICAgICsrbGluZU5vOworICAgIH0KKworICAgIHJldHVybiBPSzsKK30KKworLy8gc3RhdGljCitzdGF0dXNfdCBNM1VQYXJzZXI6OnBhcnNlTWV0YURhdGEoCisgICAgICAgIGNvbnN0IEFTdHJpbmcgJmxpbmUsIHNwPEFNZXNzYWdlPiAqbWV0YSwgY29uc3QgY2hhciAqa2V5KSB7CisgICAgc3NpemVfdCBjb2xvblBvcyA9IGxpbmUuZmluZCgiOiIpOworCisgICAgaWYgKGNvbG9uUG9zIDwgMCkgeworICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgIH0KKworICAgIGludDMyX3QgeDsKKyAgICBzdGF0dXNfdCBlcnIgPSBQYXJzZUludDMyKGxpbmUuY19zdHIoKSArIGNvbG9uUG9zICsgMSwgJngpOworCisgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICAgIGlmIChtZXRhLT5nZXQoKSA9PSBOVUxMKSB7CisgICAgICAgICptZXRhID0gbmV3IEFNZXNzYWdlOworICAgIH0KKyAgICAoKm1ldGEpLT5zZXRJbnQzMihrZXksIHgpOworCisgICAgcmV0dXJuIE9LOworfQorCisvLyBzdGF0aWMKK3N0YXR1c190IE0zVVBhcnNlcjo6UGFyc2VJbnQzMihjb25zdCBjaGFyICpzLCBpbnQzMl90ICp4KSB7CisgICAgY2hhciAqZW5kOworICAgIGxvbmcgbHZhbCA9IHN0cnRvbChzLCAmZW5kLCAxMCk7CisKKyAgICBpZiAoZW5kID09IHMgfHwgKCplbmQgIT0gJ1wwJyAmJiAqZW5kICE9ICcsJykpIHsKKyAgICAgICAgcmV0dXJuIEVSUk9SX01BTEZPUk1FRDsKKyAgICB9CisKKyAgICAqeCA9IChpbnQzMl90KWx2YWw7CisKKyAgICByZXR1cm4gT0s7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pZDMvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2lkMy9BbmRyb2lkLm1rCmluZGV4IDkzZmFjMWMuLjIzYzhlNDQgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2lkMy9BbmRyb2lkLm1rCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2lkMy9BbmRyb2lkLm1rCkBAIC0xLDUgKzEsMyBAQAotaWZlcSAoJChCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQpLHRydWUpCi0KIExPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCiAKQEAgLTI4LDUgKzI2LDMgQEAKIExPQ0FMX01PRFVMRSA6PSB0ZXN0aWQzCiAKIGluY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQotCi1lbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BQUNFbmNvZGVyLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FBQ0VuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2M1MzNmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BQUNFbmNvZGVyLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQUFDX0VOQ09ERVJfSAorI2RlZmluZSBBQUNfRU5DT0RFUl9ICisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CisKK3N0cnVjdCBWT19BVURJT19DT0RFQ0FQSTsKK3N0cnVjdCBWT19NRU1fT1BFUkFUT1I7CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IE1lZGlhQnVmZmVyR3JvdXA7CisKK2NsYXNzIEFBQ0VuY29kZXI6IHB1YmxpYyBNZWRpYVNvdXJjZSB7CisgICAgcHVibGljOgorICAgICAgICBBQUNFbmNvZGVyKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlLCBjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEpOworCisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtcyk7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOworICAgICAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRGb3JtYXQoKTsKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAorICAgICAgICAgICAgICAgIE1lZGlhQnVmZmVyICoqYnVmZmVyLCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucyk7CisKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+QUFDRW5jb2RlcigpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3A8TWVkaWFTb3VyY2U+ICAgbVNvdXJjZTsKKyAgICAgICAgc3A8TWV0YURhdGE+ICAgICAgbU1ldGE7CisgICAgICAgIGJvb2wgICAgICAgICAgICAgIG1TdGFydGVkOworICAgICAgICBNZWRpYUJ1ZmZlckdyb3VwICptQnVmZmVyR3JvdXA7CisgICAgICAgIE1lZGlhQnVmZmVyICAgICAgKm1JbnB1dEJ1ZmZlcjsKKyAgICAgICAgc3RhdHVzX3QgICAgICAgICAgbUluaXRDaGVjazsKKyAgICAgICAgaW50MzJfdCAgICAgICAgICAgbVNhbXBsZVJhdGU7CisgICAgICAgIGludDMyX3QgICAgICAgICAgIG1DaGFubmVsczsKKyAgICAgICAgaW50MzJfdCAgICAgICAgICAgbUJpdFJhdGU7CisgICAgICAgIGludDMyX3QgICAgICAgICAgIG1GcmFtZUNvdW50OworCisgICAgICAgIGludDY0X3QgICAgICAgICAgIG1BbmNob3JUaW1lVXM7CisgICAgICAgIGludDY0X3QgICAgICAgICAgIG1OdW1JbnB1dFNhbXBsZXM7CisKKyAgICAgICAgZW51bSB7CisgICAgICAgICAgICBrTnVtU2FtcGxlc1BlckZyYW1lID0gMTAyNCwKKyAgICAgICAgfTsKKworICAgICAgICBpbnQxNl90ICAgICAgICAgICBtSW5wdXRGcmFtZVtrTnVtU2FtcGxlc1BlckZyYW1lXTsKKworICAgICAgICB1aW50OF90ICAgICAgICAgICBtQXVkaW9TcGVjaWZpY0NvbmZpZ0RhdGFbMl07IC8vIGF1aWRvIHNwZWNpZmljIGRhdGEKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAqbUVuY29kZXJIYW5kbGU7CisgICAgICAgIFZPX0FVRElPX0NPREVDQVBJICptQXBpSGFuZGxlOworICAgICAgICBWT19NRU1fT1BFUkFUT1IgICptTWVtT3BlcmF0b3I7CisKKyAgICAgICAgc3RhdHVzX3Qgc2V0QXVkaW9TcGVjaWZpY0NvbmZpZ0RhdGEoKTsKKyAgICAgICAgc3RhdHVzX3QgaW5pdENoZWNrKCk7CisKKyAgICAgICAgQUFDRW5jb2RlciYgb3BlcmF0b3I9KGNvbnN0IEFBQ0VuY29kZXIgJnJocyk7CisgICAgICAgIEFBQ0VuY29kZXIoY29uc3QgQUFDRW5jb2RlciYgY29weSk7CisKK307CisKK30KKworI2VuZGlmICAvLyNpZm5kZWYgQUFDX0VOQ09ERVJfSAorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FNUk5CRW5jb2Rlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BTVJOQkVuY29kZXIuaAppbmRleCA3MTY3YzAwLi43MTE2MGU2IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FNUk5CRW5jb2Rlci5oCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQU1STkJFbmNvZGVyLmgKQEAgLTE5LDEzICsxOSwxNCBAQAogI2RlZmluZSBBTVJfTkJfRU5DT0RFUl9IXwogCiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKIHN0cnVjdCBNZWRpYUJ1ZmZlckdyb3VwOwogCiBzdHJ1Y3QgQU1STkJFbmNvZGVyIDogcHVibGljIE1lZGlhU291cmNlIHsKLSAgICBBTVJOQkVuY29kZXIoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpOworICAgIEFNUk5CRW5jb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSwgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKTsKIAogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtcyk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzdG9wKCk7CkBAIC00MCw2ICs0MSw3IEBACiAKIHByaXZhdGU6CiAgICAgc3A8TWVkaWFTb3VyY2U+IG1Tb3VyY2U7CisgICAgc3A8TWV0YURhdGE+ICAgIG1NZXRhOwogICAgIGJvb2wgbVN0YXJ0ZWQ7CiAKICAgICBNZWRpYUJ1ZmZlckdyb3VwICptQnVmZmVyR3JvdXA7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FNUldCRW5jb2Rlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BTVJXQkVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmQxNTVmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BTVJXQkVuY29kZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTVJfV0JfRU5DT0RFUl9ICisjZGVmaW5lIEFNUl9XQl9FTkNPREVSX0gKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKworc3RydWN0IFZPX0FVRElPX0NPREVDQVBJOworc3RydWN0IFZPX01FTV9PUEVSQVRPUjsKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgTWVkaWFCdWZmZXJHcm91cDsKKworY2xhc3MgQU1SV0JFbmNvZGVyOiBwdWJsaWMgTWVkaWFTb3VyY2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgQU1SV0JFbmNvZGVyKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlLCBjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEpOworCisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtcyk7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOworICAgICAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRGb3JtYXQoKTsKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAorICAgICAgICAgICAgICAgIE1lZGlhQnVmZmVyICoqYnVmZmVyLCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucyk7CisKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+QU1SV0JFbmNvZGVyKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBzcDxNZWRpYVNvdXJjZT4gICBtU291cmNlOworICAgICAgICBzcDxNZXRhRGF0YT4gICAgICBtTWV0YTsKKyAgICAgICAgYm9vbCAgICAgICAgICAgICAgbVN0YXJ0ZWQ7CisgICAgICAgIE1lZGlhQnVmZmVyR3JvdXAgKm1CdWZmZXJHcm91cDsKKyAgICAgICAgTWVkaWFCdWZmZXIgICAgICAqbUlucHV0QnVmZmVyOworICAgICAgICBzdGF0dXNfdCAgICAgICAgICBtSW5pdENoZWNrOworICAgICAgICBpbnQzMl90ICAgICAgICAgICBtQml0UmF0ZTsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAqbUVuY29kZXJIYW5kbGU7CisgICAgICAgIFZPX0FVRElPX0NPREVDQVBJICptQXBpSGFuZGxlOworICAgICAgICBWT19NRU1fT1BFUkFUT1IgICptTWVtT3BlcmF0b3I7CisKKyAgICAgICAgaW50NjRfdCBtQW5jaG9yVGltZVVzOworICAgICAgICBpbnQ2NF90IG1OdW1GcmFtZXNPdXRwdXQ7CisKKyAgICAgICAgaW50MTZfdCBtSW5wdXRGcmFtZVszMjBdOworICAgICAgICBpbnQzMl90IG1OdW1JbnB1dFNhbXBsZXM7CisKKyAgICAgICAgc3RhdHVzX3QgaW5pdENoZWNrKCk7CisKKyAgICAgICAgQU1SV0JFbmNvZGVyJiBvcGVyYXRvcj0oY29uc3QgQU1SV0JFbmNvZGVyICZyaHMpOworICAgICAgICBBTVJXQkVuY29kZXIoY29uc3QgQU1SV0JFbmNvZGVyJiBjb3B5KTsKKworfTsKKworfQorCisjZW5kaWYgIC8vI2lmbmRlZiBBTVJfV0JfRU5DT0RFUl9ICisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQVJUU1BDb250cm9sbGVyLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FSVFNQQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZWZkNDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FSVFNQQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfUlRTUF9DT05UUk9MTEVSX0hfCisKKyNkZWZpbmUgQV9SVFNQX0NPTlRST0xMRVJfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUV4dHJhY3Rvci5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBTG9vcGVyOworc3RydWN0IE15SGFuZGxlcjsKKworc3RydWN0IEFSVFNQQ29udHJvbGxlciA6IHB1YmxpYyBNZWRpYUV4dHJhY3RvciB7CisgICAgQVJUU1BDb250cm9sbGVyKGNvbnN0IHNwPEFMb29wZXI+ICZsb29wZXIpOworCisgICAgc3RhdHVzX3QgY29ubmVjdChjb25zdCBjaGFyICp1cmwpOworICAgIHZvaWQgZGlzY29ubmVjdCgpOworCisgICAgdmlydHVhbCBzaXplX3QgY291bnRUcmFja3MoKTsKKyAgICB2aXJ0dWFsIHNwPE1lZGlhU291cmNlPiBnZXRUcmFjayhzaXplX3QgaW5kZXgpOworCisgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0VHJhY2tNZXRhRGF0YSgKKyAgICAgICAgICAgIHNpemVfdCBpbmRleCwgdWludDMyX3QgZmxhZ3MpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+QVJUU1BDb250cm9sbGVyKCk7CisKK3ByaXZhdGU6CisgICAgc3A8QUxvb3Blcj4gbUxvb3BlcjsKKyAgICBzcDxNeUhhbmRsZXI+IG1IYW5kbGVyOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQVJUU1BDb250cm9sbGVyKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9SVFNQX0NPTlRST0xMRVJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQXdlc29tZVBsYXllci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9Bd2Vzb21lUGxheWVyLmgKaW5kZXggOTQ1NTc0My4uOGQwODc3YyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9Bd2Vzb21lUGxheWVyLmgKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9Bd2Vzb21lUGxheWVyLmgKQEAgLTE4LDEyICsxOCwxMyBAQAogCiAjZGVmaW5lIEFXRVNPTUVfUExBWUVSX0hfCiAKKyNpbmNsdWRlICJOdUhUVFBEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiVGltZWRFdmVudFF1ZXVlLmgiCiAKICNpbmNsdWRlIDxtZWRpYS9NZWRpYVBsYXllckludGVyZmFjZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuaD4KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9IVFRQRGF0YVNvdXJjZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L09NWENsaWVudC5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L1RpbWVTb3VyY2UuaD4KICNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKQEAgLTMzLDggKzM0LDEwIEBACiBzdHJ1Y3QgTWVkaWFCdWZmZXI7CiBzdHJ1Y3QgTWVkaWFFeHRyYWN0b3I7CiBzdHJ1Y3QgTWVkaWFTb3VyY2U7Ci1zdHJ1Y3QgUHJlZmV0Y2hlcjsKLXN0cnVjdCBUaW1lU291cmNlOworc3RydWN0IE51Q2FjaGVkU291cmNlMjsKKworc3RydWN0IEFMb29wZXI7CitzdHJ1Y3QgQVJUU1BDb250cm9sbGVyOwogCiBzdHJ1Y3QgQXdlc29tZVJlbmRlcmVyIDogcHVibGljIFJlZkJhc2UgewogICAgIEF3ZXNvbWVSZW5kZXJlcigpIHt9CkBAIC05OCw2ICsxMDEsOSBAQAogICAgICAgICBQUkVQQVJFRCAgICAgICAgICAgID0gMTYsCiAgICAgICAgIEFUX0VPUyAgICAgICAgICAgICAgPSAzMiwKICAgICAgICAgUFJFUEFSRV9DQU5DRUxMRUQgICA9IDY0LAorICAgICAgICBDQUNIRV9VTkRFUlJVTiAgICAgID0gMTI4LAorICAgICAgICBBVURJT19BVF9FT1MgICAgICAgID0gMjU2LAorICAgICAgICBWSURFT19BVF9FT1MgICAgICAgID0gNTEyLAogICAgIH07CiAKICAgICBtdXRhYmxlIE11dGV4IG1Mb2NrOwpAQCAtMTExLDYgKzExNyw3IEBACiAgICAgc3A8SVN1cmZhY2U+IG1JU3VyZmFjZTsKICAgICBzcDxNZWRpYVBsYXllckJhc2U6OkF1ZGlvU2luaz4gbUF1ZGlvU2luazsKIAorICAgIFN5c3RlbVRpbWVTb3VyY2UgbVN5c3RlbVRpbWVTb3VyY2U7CiAgICAgVGltZVNvdXJjZSAqbVRpbWVTb3VyY2U7CiAKICAgICBTdHJpbmc4IG1Vcmk7CkBAIC0xNjYsOCArMTczLDExIEBACiAgICAgTWVkaWFCdWZmZXIgKm1MYXN0VmlkZW9CdWZmZXI7CiAgICAgTWVkaWFCdWZmZXIgKm1WaWRlb0J1ZmZlcjsKIAotICAgIHNwPFByZWZldGNoZXI+IG1QcmVmZXRjaGVyOwotICAgIHNwPEhUVFBEYXRhU291cmNlPiBtQ29ubmVjdGluZ0RhdGFTb3VyY2U7CisgICAgc3A8TnVIVFRQRGF0YVNvdXJjZT4gbUNvbm5lY3RpbmdEYXRhU291cmNlOworICAgIHNwPE51Q2FjaGVkU291cmNlMj4gbUNhY2hlZFNvdXJjZTsKKworICAgIHNwPEFMb29wZXI+IG1Mb29wZXI7CisgICAgc3A8QVJUU1BDb250cm9sbGVyPiBtUlRTUENvbnRyb2xsZXI7CiAKICAgICBzdHJ1Y3QgU3VzcGVuc2lvblN0YXRlIHsKICAgICAgICAgU3RyaW5nOCBtVXJpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9MaXZlU291cmNlLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0xpdmVTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTU1MDhjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9MaXZlU291cmNlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgTElWRV9TT1VSQ0VfSF8KKworI2RlZmluZSBMSVZFX1NPVVJDRV9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJ1ZmZlcjsKK3N0cnVjdCBOdUhUVFBEYXRhU291cmNlOworc3RydWN0IE0zVVBhcnNlcjsKKworc3RydWN0IExpdmVTb3VyY2UgOiBwdWJsaWMgRGF0YVNvdXJjZSB7CisgICAgTGl2ZVNvdXJjZShjb25zdCBjaGFyICp1cmwpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBpbml0Q2hlY2soKSBjb25zdDsKKworICAgIHZpcnR1YWwgc3NpemVfdCByZWFkQXQob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKKyAgICB2aXJ0dWFsIHVpbnQzMl90IGZsYWdzKCkgeworICAgICAgICByZXR1cm4ga1dhbnRzUHJlZmV0Y2hpbmc7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TGl2ZVNvdXJjZSgpOworCitwcml2YXRlOgorICAgIEFTdHJpbmcgbVVSTDsKKyAgICBzdGF0dXNfdCBtSW5pdENoZWNrOworCisgICAgc3A8TTNVUGFyc2VyPiBtUGxheWxpc3Q7CisgICAgaW50MzJfdCBtRmlyc3RJdGVtU2VxdWVuY2VOdW1iZXI7CisgICAgc2l6ZV90IG1QbGF5bGlzdEluZGV4OworICAgIGludDY0X3QgbUxhc3RGZXRjaFRpbWVVczsKKworICAgIHNwPE51SFRUUERhdGFTb3VyY2U+IG1Tb3VyY2U7CisgICAgb2ZmX3QgbVNvdXJjZVNpemU7CisgICAgb2ZmX3QgbU9mZnNldEJpYXM7CisKKyAgICBzdGF0dXNfdCBmZXRjaE0zVShjb25zdCBjaGFyICp1cmwsIHNwPEFCdWZmZXI+ICpidWZmZXIpOworCisgICAgYm9vbCBzd2l0Y2hUb05leHQoKTsKKyAgICBib29sIGxvYWRQbGF5bGlzdCgpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoTGl2ZVNvdXJjZSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIExJVkVfU09VUkNFX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL00zVVBhcnNlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9NM1VQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjU1M2RlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9NM1VQYXJzZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBNM1VfUEFSU0VSX0hfCisKKyNkZWZpbmUgTTNVX1BBUlNFUl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgTTNVUGFyc2VyIDogcHVibGljIFJlZkJhc2UgeworICAgIE0zVVBhcnNlcihjb25zdCBjaGFyICpiYXNlVVJJLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKKyAgICBzdGF0dXNfdCBpbml0Q2hlY2soKSBjb25zdDsKKworICAgIGJvb2wgaXNFeHRNM1UoKSBjb25zdDsKKyAgICBib29sIGlzVmFyaWFudFBsYXlsaXN0KCkgY29uc3Q7CisKKyAgICBzcDxBTWVzc2FnZT4gbWV0YSgpOworCisgICAgc2l6ZV90IHNpemUoKTsKKyAgICBib29sIGl0ZW1BdChzaXplX3QgaW5kZXgsIEFTdHJpbmcgKnVyaSwgc3A8QU1lc3NhZ2U+ICptZXRhID0gTlVMTCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NM1VQYXJzZXIoKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgSXRlbSB7CisgICAgICAgIEFTdHJpbmcgbVVSSTsKKyAgICAgICAgc3A8QU1lc3NhZ2U+IG1NZXRhOworICAgIH07CisKKyAgICBzdGF0dXNfdCBtSW5pdENoZWNrOworCisgICAgQVN0cmluZyBtQmFzZVVSSTsKKyAgICBib29sIG1Jc0V4dE0zVTsKKyAgICBib29sIG1Jc1ZhcmlhbnRQbGF5bGlzdDsKKworICAgIHNwPEFNZXNzYWdlPiBtTWV0YTsKKyAgICBWZWN0b3I8SXRlbT4gbUl0ZW1zOworCisgICAgc3RhdHVzX3QgcGFyc2UoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgc3RhdGljIHN0YXR1c190IHBhcnNlTWV0YURhdGEoCisgICAgICAgICAgICBjb25zdCBBU3RyaW5nICZsaW5lLCBzcDxBTWVzc2FnZT4gKm1ldGEsIGNvbnN0IGNoYXIgKmtleSk7CisKKyAgICBzdGF0aWMgc3RhdHVzX3QgUGFyc2VJbnQzMihjb25zdCBjaGFyICpzLCBpbnQzMl90ICp4KTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKE0zVVBhcnNlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIE0zVV9QQVJTRVJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTVAzRGVjb2Rlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9NUDNEZWNvZGVyLmgKaW5kZXggODhhYTRjNi4uNDA4NmZiNiAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9NUDNEZWNvZGVyLmgKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9NUDNEZWNvZGVyLmgKQEAgLTQyLDYgKzQyLDkgQEAKIAogcHJpdmF0ZToKICAgICBzcDxNZWRpYVNvdXJjZT4gbVNvdXJjZTsKKyAgICBzcDxNZXRhRGF0YT4gbU1ldGE7CisgICAgaW50MzJfdCBtTnVtQ2hhbm5lbHM7CisKICAgICBib29sIG1TdGFydGVkOwogCiAgICAgTWVkaWFCdWZmZXJHcm91cCAqbUJ1ZmZlckdyb3VwOwpAQCAtNDksMTAgKzUyLDEyIEBACiAgICAgdFBWTVAzRGVjb2RlckV4dGVybmFsICptQ29uZmlnOwogICAgIHZvaWQgKm1EZWNvZGVyQnVmOwogICAgIGludDY0X3QgbUFuY2hvclRpbWVVczsKLSAgICBpbnQ2NF90IG1OdW1TYW1wbGVzT3V0cHV0OworICAgIGludDY0X3QgbU51bUZyYW1lc091dHB1dDsKIAogICAgIE1lZGlhQnVmZmVyICptSW5wdXRCdWZmZXI7CiAKKyAgICB2b2lkIGluaXQoKTsKKwogICAgIE1QM0RlY29kZXIoY29uc3QgTVAzRGVjb2RlciAmKTsKICAgICBNUDNEZWNvZGVyICZvcGVyYXRvcj0oY29uc3QgTVAzRGVjb2RlciAmKTsKIH07CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL01QRUcyVFNFeHRyYWN0b3IuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTVBFRzJUU0V4dHJhY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5Njk3M2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL01QRUcyVFNFeHRyYWN0b3IuaApAQCAtMCwwICsxLDU0IEBACisjaWZuZGVmIE1QRUcyX1RTX0VYVFJBQ1RPUl9IXworCisjZGVmaW5lIE1QRUcyX1RTX0VYVFJBQ1RPUl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXh0cmFjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBbm90aGVyUGFja2V0U291cmNlOworc3RydWN0IEFUU1BhcnNlcjsKK3N0cnVjdCBEYXRhU291cmNlOworc3RydWN0IE1QRUcyVFNTb3VyY2U7CitzdHJ1Y3QgU3RyaW5nODsKKworc3RydWN0IE1QRUcyVFNFeHRyYWN0b3IgOiBwdWJsaWMgTWVkaWFFeHRyYWN0b3IgeworICAgIE1QRUcyVFNFeHRyYWN0b3IoY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSk7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjb3VudFRyYWNrcygpOworICAgIHZpcnR1YWwgc3A8TWVkaWFTb3VyY2U+IGdldFRyYWNrKHNpemVfdCBpbmRleCk7CisgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0VHJhY2tNZXRhRGF0YShzaXplX3QgaW5kZXgsIHVpbnQzMl90IGZsYWdzKTsKKworICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldE1ldGFEYXRhKCk7CisKKyAgICB2aXJ0dWFsIHVpbnQzMl90IGZsYWdzKCkgY29uc3QgeworICAgICAgICByZXR1cm4gQ0FOX1BBVVNFOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RydWN0IE1QRUcyVFNTb3VyY2U7CisKKyAgICBNdXRleCBtTG9jazsKKworICAgIHNwPERhdGFTb3VyY2U+IG1EYXRhU291cmNlOworICAgIHNwPEFUU1BhcnNlcj4gbVBhcnNlcjsKKworICAgIFZlY3RvcjxzcDxBbm90aGVyUGFja2V0U291cmNlPiA+IG1Tb3VyY2VJbXBsczsKKworICAgIG9mZl90IG1PZmZzZXQ7CisKKyAgICB2b2lkIGluaXQoKTsKKyAgICBzdGF0dXNfdCBmZWVkTW9yZSgpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoTVBFRzJUU0V4dHJhY3Rvcik7Cit9OworCitib29sIFNuaWZmTVBFRzJUUygKKyAgICAgICAgY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSwgU3RyaW5nOCAqbWltZVR5cGUsIGZsb2F0ICpjb25maWRlbmNlKTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBNUEVHMl9UU19FWFRSQUNUT1JfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTnVDYWNoZWRTb3VyY2UyLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL051Q2FjaGVkU291cmNlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMjBjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL051Q2FjaGVkU291cmNlMi5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIE5VX0NBQ0hFRF9TT1VSQ0VfMl9IXworCisjZGVmaW5lIE5VX0NBQ0hFRF9TT1VSQ0VfMl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXJSZWZsZWN0b3IuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFMb29wZXI7CitzdHJ1Y3QgUGFnZUNhY2hlOworCitzdHJ1Y3QgTnVDYWNoZWRTb3VyY2UyIDogcHVibGljIERhdGFTb3VyY2UgeworICAgIE51Q2FjaGVkU291cmNlMihjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHNzaXplX3QgcmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRTaXplKG9mZl90ICpzaXplKTsKKyAgICB2aXJ0dWFsIHVpbnQzMl90IGZsYWdzKCk7CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBzaXplX3QgY2FjaGVkU2l6ZSgpOworICAgIHNpemVfdCBhcHByb3hEYXRhUmVtYWluaW5nKGJvb2wgKmVvcyk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5OdUNhY2hlZFNvdXJjZTIoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RydWN0IEFIYW5kbGVyUmVmbGVjdG9yPE51Q2FjaGVkU291cmNlMj47CisKKyAgICBlbnVtIHsKKyAgICAgICAga1BhZ2VTaXplICAgICAgICAgICAgPSA2NTUzNiwKKyAgICAgICAga0hpZ2hXYXRlclRocmVzaG9sZCAgPSA1ICogMTAyNCAqIDEwMjQsCisgICAgICAgIGtMb3dXYXRlclRocmVzaG9sZCAgID0gNTEyICogMTAyNCwKKworICAgICAgICAvLyBSZWFkIGRhdGEgYWZ0ZXIgYSAxNSBzZWMgdGltZW91dCB3aGV0aGVyIHdlJ3JlIGFjdGl2ZWx5CisgICAgICAgIC8vIGZldGNoaW5nIG9yIG5vdC4KKyAgICAgICAga0tlZXBBbGl2ZUludGVydmFsVXMgPSAxNTAwMDAwMCwKKyAgICB9OworCisgICAgZW51bSB7CisgICAgICAgIGtXaGF0RmV0Y2hNb3JlICA9ICdmZXRjJywKKyAgICAgICAga1doYXRSZWFkICAgICAgID0gJ3JlYWQnLAorICAgIH07CisKKyAgICBzcDxEYXRhU291cmNlPiBtU291cmNlOworICAgIHNwPEFIYW5kbGVyUmVmbGVjdG9yPE51Q2FjaGVkU291cmNlMj4gPiBtUmVmbGVjdG9yOworICAgIHNwPEFMb29wZXI+IG1Mb29wZXI7CisKKyAgICBNdXRleCBtU2VyaWFsaXplcjsKKyAgICBNdXRleCBtTG9jazsKKyAgICBDb25kaXRpb24gbUNvbmRpdGlvbjsKKworICAgIFBhZ2VDYWNoZSAqbUNhY2hlOworICAgIG9mZl90IG1DYWNoZU9mZnNldDsKKyAgICBzdGF0dXNfdCBtRmluYWxTdGF0dXM7CisgICAgb2ZmX3QgbUxhc3RBY2Nlc3NQb3M7CisgICAgc3A8QU1lc3NhZ2U+IG1Bc3luY1Jlc3VsdDsKKyAgICBib29sIG1GZXRjaGluZzsKKyAgICBpbnQ2NF90IG1MYXN0RmV0Y2hUaW1lVXM7CisKKyAgICB2b2lkIG9uTWVzc2FnZVJlY2VpdmVkKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKTsKKyAgICB2b2lkIG9uRmV0Y2goKTsKKyAgICB2b2lkIG9uUmVhZChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZyk7CisKKyAgICB2b2lkIGZldGNoSW50ZXJuYWwoKTsKKyAgICBzc2l6ZV90IHJlYWRJbnRlcm5hbChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKKyAgICBzdGF0dXNfdCBzZWVrSW50ZXJuYWxfbChvZmZfdCBvZmZzZXQpOworCisgICAgc2l6ZV90IGFwcHJveERhdGFSZW1haW5pbmdfbChib29sICplb3MpOworICAgIHZvaWQgcmVzdGFydFByZWZldGNoZXJJZk5lY2Vzc2FyeV9sKCk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhOdUNhY2hlZFNvdXJjZTIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBOVV9DQUNIRURfU09VUkNFXzJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTnVIVFRQRGF0YVNvdXJjZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9OdUhUVFBEYXRhU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5M2E5MQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTnVIVFRQRGF0YVNvdXJjZS5oCkBAIC0wLDAgKzEsNzMgQEAKKyNpZm5kZWYgTlVfSFRUUF9EQVRBX1NPVVJDRV9IXworCisjZGVmaW5lIE5VX0hUVFBfREFUQV9TT1VSQ0VfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuaD4KKyNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorCisjaW5jbHVkZSAiSFRUUFN0cmVhbS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBOdUhUVFBEYXRhU291cmNlIDogcHVibGljIERhdGFTb3VyY2UgeworICAgIE51SFRUUERhdGFTb3VyY2UoKTsKKworICAgIHN0YXR1c190IGNvbm5lY3QoCisgICAgICAgICAgICBjb25zdCBjaGFyICp1cmksCisgICAgICAgICAgICBjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycyA9IE5VTEwsCisgICAgICAgICAgICBvZmZfdCBvZmZzZXQgPSAwKTsKKworICAgIHZvaWQgZGlzY29ubmVjdCgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBpbml0Q2hlY2soKSBjb25zdDsKKworICAgIHZpcnR1YWwgc3NpemVfdCByZWFkQXQob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRTaXplKG9mZl90ICpzaXplKTsKKyAgICB2aXJ0dWFsIHVpbnQzMl90IGZsYWdzKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5OdUhUVFBEYXRhU291cmNlKCk7CisKK3ByaXZhdGU6CisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIERJU0NPTk5FQ1RFRCwKKyAgICAgICAgQ09OTkVDVElORywKKyAgICAgICAgQ09OTkVDVEVECisgICAgfTsKKworICAgIE11dGV4IG1Mb2NrOworCisgICAgU3RhdGUgbVN0YXRlOworCisgICAgU3RyaW5nOCBtSG9zdDsKKyAgICB1bnNpZ25lZCBtUG9ydDsKKyAgICBTdHJpbmc4IG1QYXRoOworICAgIFN0cmluZzggbUhlYWRlcnM7CisKKyAgICBIVFRQU3RyZWFtIG1IVFRQOworICAgIG9mZl90IG1PZmZzZXQ7CisgICAgb2ZmX3QgbUNvbnRlbnRMZW5ndGg7CisgICAgYm9vbCBtQ29udGVudExlbmd0aFZhbGlkOworCisgICAgc3RhdHVzX3QgY29ubmVjdCgKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVyaSwgY29uc3QgU3RyaW5nOCAmaGVhZGVycywgb2ZmX3Qgb2Zmc2V0KTsKKworICAgIHN0YXR1c190IGNvbm5lY3QoCisgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LCB1bnNpZ25lZCBwb3J0LCBjb25zdCBjaGFyICpwYXRoLAorICAgICAgICAgICAgY29uc3QgU3RyaW5nOCAmaGVhZGVycywKKyAgICAgICAgICAgIG9mZl90IG9mZnNldCk7CisKKyAgICB2b2lkIGFwcGx5VGltZW91dFJlc3BvbnNlKCk7CisKKyAgICBzdGF0aWMgdm9pZCBNYWtlRnVsbEhlYWRlcnMoCisgICAgICAgICAgICBjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqb3ZlcnJpZGVzLAorICAgICAgICAgICAgU3RyaW5nOCAqaGVhZGVycyk7CisKKyAgICBOdUhUVFBEYXRhU291cmNlKGNvbnN0IE51SFRUUERhdGFTb3VyY2UgJik7CisgICAgTnVIVFRQRGF0YVNvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IE51SFRUUERhdGFTb3VyY2UgJik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIE5VX0hUVFBfREFUQV9TT1VSQ0VfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvT01YLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL09NWC5oCmluZGV4IGVhMTMxZTguLmM5OWRhNTkgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvT01YLmgKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9PTVguaApAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgICAgICBPTVhfSU4gT01YX1UzMiBuRGF0YTEsCiAgICAgICAgICAgICBPTVhfSU4gT01YX1UzMiBuRGF0YTIsCiAgICAgICAgICAgICBPTVhfSU4gT01YX1BUUiBwRXZlbnREYXRhKTsKLSAgICAgICAgCisKICAgICBPTVhfRVJST1JUWVBFIE9uRW1wdHlCdWZmZXJEb25lKAogICAgICAgICAgICAgbm9kZV9pZCBub2RlLCBPTVhfSU4gT01YX0JVRkZFUkhFQURFUlRZUEUgKnBCdWZmZXIpOwogCkBAIC0xMTUsMjAgKzExNSwxOSBAQAogICAgIHZpcnR1YWwgfk9NWCgpOwogCiBwcml2YXRlOgotICAgIE11dGV4IG1Mb2NrOwotCi0gICAgT01YTWFzdGVyICptTWFzdGVyOwotCiAgICAgc3RydWN0IENhbGxiYWNrRGlzcGF0Y2hlcjsKLSAgICBzcDxDYWxsYmFja0Rpc3BhdGNoZXI+IG1EaXNwYXRjaGVyOwogCisgICAgTXV0ZXggbUxvY2s7CisgICAgT01YTWFzdGVyICptTWFzdGVyOwogICAgIGludDMyX3QgbU5vZGVDb3VudGVyOwogCiAgICAgS2V5ZWRWZWN0b3I8d3A8SUJpbmRlcj4sIE9NWE5vZGVJbnN0YW5jZSAqPiBtTGl2ZU5vZGVzOwogICAgIEtleWVkVmVjdG9yPG5vZGVfaWQsIE9NWE5vZGVJbnN0YW5jZSAqPiBtTm9kZUlEVG9JbnN0YW5jZTsKKyAgICBLZXllZFZlY3Rvcjxub2RlX2lkLCBzcDxDYWxsYmFja0Rpc3BhdGNoZXI+ID4gbURpc3BhdGNoZXJzOwogCiAgICAgbm9kZV9pZCBtYWtlTm9kZUlEKE9NWE5vZGVJbnN0YW5jZSAqaW5zdGFuY2UpOwogICAgIE9NWE5vZGVJbnN0YW5jZSAqZmluZEluc3RhbmNlKG5vZGVfaWQgbm9kZSk7CisgICAgc3A8Q2FsbGJhY2tEaXNwYXRjaGVyPiBmaW5kRGlzcGF0Y2hlcihub2RlX2lkIG5vZGUpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlTm9kZUlEX2wobm9kZV9pZCBub2RlKTsKIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9QcmVmZXRjaGVyLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL1ByZWZldGNoZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQxMWQxYi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL1ByZWZldGNoZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIFBSRUZFVENIRVJfSF8KLQotI2RlZmluZSBQUkVGRVRDSEVSX0hfCi0KLSNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+Ci0jaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLXN0cnVjdCBNZWRpYVNvdXJjZTsKLXN0cnVjdCBQcmVmZXRjaGVkU291cmNlOwotCi1zdHJ1Y3QgUHJlZmV0Y2hlciA6IHB1YmxpYyBSZWZCYXNlIHsKLSAgICBQcmVmZXRjaGVyKCk7Ci0KLSAgICAvLyBHaXZlbiBhbiBleGlzdGluZyBNZWRpYVNvdXJjZSByZXR1cm5zIGEgbmV3IE1lZGlhU291cmNlCi0gICAgLy8gdGhhdCB3aWxsIGJlbmVmaXQgZnJvbSBwcmVmZXRjaGluZy9jYWNoaW5nIHRoZSBvcmlnaW5hbCBvbmUuCi0gICAgc3A8TWVkaWFTb3VyY2U+IGFkZFNvdXJjZShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSk7Ci0KLSAgICBpbnQ2NF90IGdldENhY2hlZER1cmF0aW9uVXMoYm9vbCAqbm9Nb3JlRGF0YSA9IE5VTEwpOwotCi0gICAgLy8gSWYgcHJvdmlkZWQgKG5vbi1OVUxMKSwgImNvbnRpbnVlRnVuYyIgd2lsbCBiZSBjYWxsZWQgcmVwZWF0ZWRseQotICAgIC8vIHdoaWxlIHByZXBhcmluZyBhbmQgcHJlcGFyYXRpb24gd2lsbCBmaW5pc2ggZWFybHkgaWYgaXQgcmV0dXJucwotICAgIC8vIGZhbHNlLiBJbiB0aGlzIGNhc2UgIi1FSU5UUiIgaXMgcmV0dXJuZWQgYXMgYSByZXN1bHQuCi0gICAgc3RhdHVzX3QgcHJlcGFyZSgKLSAgICAgICAgICAgIGJvb2wgKCpjb250aW51ZUZ1bmMpKHZvaWQgKmNvb2tpZSkgPSBOVUxMLAotICAgICAgICAgICAgdm9pZCAqY29va2llID0gTlVMTCk7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5QcmVmZXRjaGVyKCk7Ci0KLXByaXZhdGU6Ci0gICAgTXV0ZXggbUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1Db25kaXRpb247Ci0KLSAgICBWZWN0b3I8d3A8UHJlZmV0Y2hlZFNvdXJjZT4gPiBtU291cmNlczsKLSAgICBhbmRyb2lkX3RocmVhZF9pZF90IG1UaHJlYWQ7Ci0gICAgYm9vbCBtRG9uZTsKLSAgICBib29sIG1UaHJlYWRFeGl0ZWQ7Ci0KLSAgICB2b2lkIHN0YXJ0VGhyZWFkKCk7Ci0gICAgdm9pZCBzdG9wVGhyZWFkKCk7Ci0KLSAgICBzdGF0aWMgaW50IFRocmVhZFdyYXBwZXIodm9pZCAqbWUpOwotICAgIHZvaWQgdGhyZWFkRnVuYygpOwotCi0gICAgUHJlZmV0Y2hlcihjb25zdCBQcmVmZXRjaGVyICYpOwotICAgIFByZWZldGNoZXIgJm9wZXJhdG9yPShjb25zdCBQcmVmZXRjaGVyICYpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKLQotI2VuZGlmICAvLyBQUkVGRVRDSEVSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL1Rocm90dGxlZFNvdXJjZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9UaHJvdHRsZWRTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODE2NGIzCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9UaHJvdHRsZWRTb3VyY2UuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBUSFJPVFRMRURfU09VUkNFX0hfCisKKyNkZWZpbmUgVEhST1RUTEVEX1NPVVJDRV9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRGF0YVNvdXJjZS5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgVGhyb3R0bGVkU291cmNlIDogcHVibGljIERhdGFTb3VyY2UgeworICAgIFRocm90dGxlZFNvdXJjZSgKKyAgICAgICAgICAgIGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UsCisgICAgICAgICAgICBpbnQzMl90IGJhbmR3aWR0aExpbWl0Qnl0ZXNQZXJTZWNvbmQpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBpbml0Q2hlY2soKSBjb25zdDsKKworICAgIHZpcnR1YWwgc3NpemVfdCByZWFkQXQob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IGdldFNpemUob2ZmX3QgKnNpemUpOworICAgIHZpcnR1YWwgdWludDMyX3QgZmxhZ3MoKTsKKworcHJpdmF0ZToKKyAgICBNdXRleCBtTG9jazsKKworICAgIHNwPERhdGFTb3VyY2U+IG1Tb3VyY2U7CisgICAgaW50MzJfdCBtQmFuZHdpZHRoTGltaXRCeXRlc1BlclNlY29uZDsKKyAgICBpbnQ2NF90IG1TdGFydFRpbWVVczsKKyAgICBzaXplX3QgbVRvdGFsVHJhbnNmZXJyZWQ7CisKKyAgICBUaHJvdHRsZWRTb3VyY2UoY29uc3QgVGhyb3R0bGVkU291cmNlICYpOworICAgIFRocm90dGxlZFNvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IFRocm90dGxlZFNvdXJjZSAmKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gVEhST1RUTEVEX1NPVVJDRV9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9WUFhEZWNvZGVyLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL1ZQWERlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTBjNjEyCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9WUFhEZWNvZGVyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgVlBYX0RFQ09ERVJfSF8KKworI2RlZmluZSBWUFhfREVDT0RFUl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgTWVkaWFCdWZmZXJHcm91cDsKKworc3RydWN0IFZQWERlY29kZXIgOiBwdWJsaWMgTWVkaWFTb3VyY2UgeworICAgIFZQWERlY29kZXIoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKKworICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldEZvcm1hdCgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAorICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflZQWERlY29kZXIoKTsKKworcHJpdmF0ZToKKyAgICBzcDxNZWRpYVNvdXJjZT4gbVNvdXJjZTsKKyAgICBib29sIG1TdGFydGVkOworICAgIGludDMyX3QgbVdpZHRoLCBtSGVpZ2h0OworICAgIHNpemVfdCBtQnVmZmVyU2l6ZTsKKworICAgIHZvaWQgKm1DdHg7CisgICAgTWVkaWFCdWZmZXJHcm91cCAqbUJ1ZmZlckdyb3VwOworCisgICAgc3A8TWV0YURhdGE+IG1Gb3JtYXQ7CisKKyAgICBWUFhEZWNvZGVyKGNvbnN0IFZQWERlY29kZXIgJik7CisgICAgVlBYRGVjb2RlciAmb3BlcmF0b3I9KGNvbnN0IFZQWERlY29kZXIgJik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIFZQWF9ERUNPREVSX0hfCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNzIxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMTYgQEAKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUzo9ICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1hdHJvc2thRXh0cmFjdG9yLmNwcCAgICAgXAorICAgICAgICBta3ZwYXJzZXIuY3BwICAgICAgICAgICAgIFwKKworTE9DQUxfQ19JTkNMVURFUzo9IFwKKwkkKEpOSV9IX0lOQ0xVREUpIFwKKyAgICAgICAgJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlIFwKKworTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tbXVsdGljaGFyCisKK0xPQ0FMX01PRFVMRTo9IGxpYnN0YWdlZnJpZ2h0X21hdHJvc2thCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzlhN2I1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvTWF0cm9za2FFeHRyYWN0b3IuY3BwCkBAIC0wLDAgKzEsNTk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2RlZmluZSBMT0dfVEFHICJNYXRyb3NrYUV4dHJhY3RvciIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgIk1hdHJvc2thRXh0cmFjdG9yLmgiCisKKyNpbmNsdWRlICJta3ZwYXJzZXIuaHBwIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRGF0YVNvdXJjZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVmcy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorI2luY2x1ZGUgPHV0aWxzL1N0cmluZzguaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgRGF0YVNvdXJjZVJlYWRlciA6IHB1YmxpYyBta3ZwYXJzZXI6OklNa3ZSZWFkZXIgeworICAgIERhdGFTb3VyY2VSZWFkZXIoY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSkKKyAgICAgICAgOiBtU291cmNlKHNvdXJjZSkgeworICAgIH0KKworICAgIHZpcnR1YWwgaW50IFJlYWQobG9uZyBsb25nIHBvc2l0aW9uLCBsb25nIGxlbmd0aCwgdW5zaWduZWQgY2hhciogYnVmZmVyKSB7CisgICAgICAgIENIRUNLKHBvc2l0aW9uID49IDApOworICAgICAgICBDSEVDSyhsZW5ndGggPj0gMCk7CisKKyAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHNzaXplX3QgbiA9IG1Tb3VyY2UtPnJlYWRBdChwb3NpdGlvbiwgYnVmZmVyLCBsZW5ndGgpOworCisgICAgICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZpcnR1YWwgaW50IExlbmd0aChsb25nIGxvbmcqIHRvdGFsLCBsb25nIGxvbmcqIGF2YWlsYWJsZSkgeworICAgICAgICBvZmZfdCBzaXplOworICAgICAgICBpZiAobVNvdXJjZS0+Z2V0U2l6ZSgmc2l6ZSkgIT0gT0spIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0b3RhbCkgeworICAgICAgICAgICAgKnRvdGFsID0gc2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdmFpbGFibGUpIHsKKyAgICAgICAgICAgICphdmFpbGFibGUgPSBzaXplOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCitwcml2YXRlOgorICAgIHNwPERhdGFTb3VyY2U+IG1Tb3VyY2U7CisKKyAgICBEYXRhU291cmNlUmVhZGVyKGNvbnN0IERhdGFTb3VyY2VSZWFkZXIgJik7CisgICAgRGF0YVNvdXJjZVJlYWRlciAmb3BlcmF0b3I9KGNvbnN0IERhdGFTb3VyY2VSZWFkZXIgJik7Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisjaW5jbHVkZSA8Y3R5cGUuaD4KK3N0YXRpYyB2b2lkIGhleGR1bXAoY29uc3Qgdm9pZCAqX2RhdGEsIHNpemVfdCBzaXplKSB7CisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IChjb25zdCB1aW50OF90ICopX2RhdGE7CisgICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgd2hpbGUgKG9mZnNldCA8IHNpemUpIHsKKyAgICAgICAgcHJpbnRmKCIweCUwNHggICIsIG9mZnNldCk7CisKKyAgICAgICAgc2l6ZV90IG4gPSBzaXplIC0gb2Zmc2V0OworICAgICAgICBpZiAobiA+IDE2KSB7CisgICAgICAgICAgICBuID0gMTY7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09IDgpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiAiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG9mZnNldCArIGkgPCBzaXplKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlMDJ4ICIsIGRhdGFbb2Zmc2V0ICsgaV0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiAgICIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpbnRmKCIgIik7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpc3ByaW50KGRhdGFbb2Zmc2V0ICsgaV0pKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlYyIsIGRhdGFbb2Zmc2V0ICsgaV0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaW50ZigiXG4iKTsKKworICAgICAgICBvZmZzZXQgKz0gMTY7CisgICAgfQorfQorCitzdHJ1Y3QgQmxvY2tJdGVyYXRvciB7CisgICAgQmxvY2tJdGVyYXRvcihta3ZwYXJzZXI6OlNlZ21lbnQgKnNlZ21lbnQsIHVuc2lnbmVkIGxvbmcgdHJhY2tOdW0pOworCisgICAgYm9vbCBlb3MoKSBjb25zdDsKKworICAgIHZvaWQgYWR2YW5jZSgpOworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHNlZWsoaW50NjRfdCBzZWVrVGltZVVzKTsKKworICAgIGNvbnN0IG1rdnBhcnNlcjo6QmxvY2sgKmJsb2NrKCkgY29uc3Q7CisgICAgaW50NjRfdCBibG9ja1RpbWVVcygpIGNvbnN0OworCitwcml2YXRlOgorICAgIG1rdnBhcnNlcjo6U2VnbWVudCAqbVNlZ21lbnQ7CisgICAgdW5zaWduZWQgbG9uZyBtVHJhY2tOdW07CisKKyAgICBta3ZwYXJzZXI6OkNsdXN0ZXIgKm1DbHVzdGVyOworICAgIGNvbnN0IG1rdnBhcnNlcjo6QmxvY2tFbnRyeSAqbUJsb2NrRW50cnk7CisKKyAgICBCbG9ja0l0ZXJhdG9yKGNvbnN0IEJsb2NrSXRlcmF0b3IgJik7CisgICAgQmxvY2tJdGVyYXRvciAmb3BlcmF0b3I9KGNvbnN0IEJsb2NrSXRlcmF0b3IgJik7Cit9OworCitzdHJ1Y3QgTWF0cm9za2FTb3VyY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2UgeworICAgIE1hdHJvc2thU291cmNlKAorICAgICAgICAgICAgY29uc3Qgc3A8TWF0cm9za2FFeHRyYWN0b3I+ICZleHRyYWN0b3IsIHNpemVfdCBpbmRleCk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpOworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOworCisgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0Rm9ybWF0KCk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHJlYWQoCisgICAgICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpOworCitwcml2YXRlOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIEFWQywKKyAgICAgICAgQUFDLAorICAgICAgICBPVEhFUgorICAgIH07CisKKyAgICBzcDxNYXRyb3NrYUV4dHJhY3Rvcj4gbUV4dHJhY3RvcjsKKyAgICBzaXplX3QgbVRyYWNrSW5kZXg7CisgICAgVHlwZSBtVHlwZTsKKyAgICBCbG9ja0l0ZXJhdG9yIG1CbG9ja0l0ZXI7CisKKyAgICBzdGF0dXNfdCBhZHZhbmNlKCk7CisKKyAgICBNYXRyb3NrYVNvdXJjZShjb25zdCBNYXRyb3NrYVNvdXJjZSAmKTsKKyAgICBNYXRyb3NrYVNvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IE1hdHJvc2thU291cmNlICYpOworfTsKKworTWF0cm9za2FTb3VyY2U6Ok1hdHJvc2thU291cmNlKAorICAgICAgICBjb25zdCBzcDxNYXRyb3NrYUV4dHJhY3Rvcj4gJmV4dHJhY3Rvciwgc2l6ZV90IGluZGV4KQorICAgIDogbUV4dHJhY3RvcihleHRyYWN0b3IpLAorICAgICAgbVRyYWNrSW5kZXgoaW5kZXgpLAorICAgICAgbVR5cGUoT1RIRVIpLAorICAgICAgbUJsb2NrSXRlcihtRXh0cmFjdG9yLT5tU2VnbWVudCwKKyAgICAgICAgICAgICAgICAgbUV4dHJhY3Rvci0+bVRyYWNrcy5pdGVtQXQoaW5kZXgpLm1UcmFja051bSkgeworICAgIGNvbnN0IGNoYXIgKm1pbWU7CisgICAgQ0hFQ0sobUV4dHJhY3Rvci0+bVRyYWNrcy5pdGVtQXQoaW5kZXgpLm1NZXRhLT4KKyAgICAgICAgICAgIGZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJm1pbWUpKTsKKworICAgIGlmICghc3RyY2FzZWNtcChtaW1lLCBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMpKSB7CisgICAgICAgIG1UeXBlID0gQVZDOworICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDKSkgeworICAgICAgICBtVHlwZSA9IEFBQzsKKyAgICB9Cit9CisKK3N0YXR1c190IE1hdHJvc2thU291cmNlOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CisgICAgbUJsb2NrSXRlci5yZXNldCgpOworCisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBNYXRyb3NrYVNvdXJjZTo6c3RvcCgpIHsKKyAgICByZXR1cm4gT0s7Cit9CisKK3NwPE1ldGFEYXRhPiBNYXRyb3NrYVNvdXJjZTo6Z2V0Rm9ybWF0KCkgeworICAgIHJldHVybiBtRXh0cmFjdG9yLT5tVHJhY2tzLml0ZW1BdChtVHJhY2tJbmRleCkubU1ldGE7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK0Jsb2NrSXRlcmF0b3I6OkJsb2NrSXRlcmF0b3IoCisgICAgICAgIG1rdnBhcnNlcjo6U2VnbWVudCAqc2VnbWVudCwgdW5zaWduZWQgbG9uZyB0cmFja051bSkKKyAgICA6IG1TZWdtZW50KHNlZ21lbnQpLAorICAgICAgbVRyYWNrTnVtKHRyYWNrTnVtKSwKKyAgICAgIG1DbHVzdGVyKE5VTEwpLAorICAgICAgbUJsb2NrRW50cnkoTlVMTCkgeworICAgIHJlc2V0KCk7Cit9CisKK2Jvb2wgQmxvY2tJdGVyYXRvcjo6ZW9zKCkgY29uc3QgeworICAgIHJldHVybiBtQ2x1c3RlciA9PSBOVUxMIHx8IG1DbHVzdGVyLT5FT1MoKTsKK30KKwordm9pZCBCbG9ja0l0ZXJhdG9yOjphZHZhbmNlKCkgeworICAgIHdoaWxlICghZW9zKCkpIHsKKyAgICAgICAgaWYgKG1CbG9ja0VudHJ5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1CbG9ja0VudHJ5ID0gbUNsdXN0ZXItPkdldE5leHQobUJsb2NrRW50cnkpOworICAgICAgICB9IGVsc2UgaWYgKG1DbHVzdGVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1DbHVzdGVyID0gbVNlZ21lbnQtPkdldE5leHQobUNsdXN0ZXIpOworCisgICAgICAgICAgICBpZiAoZW9zKCkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUJsb2NrRW50cnkgPSBtQ2x1c3Rlci0+R2V0Rmlyc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtQmxvY2tFbnRyeSAhPSBOVUxMCisgICAgICAgICAgICAgICAgJiYgbUJsb2NrRW50cnktPkdldEJsb2NrKCktPkdldFRyYWNrTnVtYmVyKCkgPT0gbVRyYWNrTnVtKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBCbG9ja0l0ZXJhdG9yOjpyZXNldCgpIHsKKyAgICBtQ2x1c3RlciA9IG1TZWdtZW50LT5HZXRGaXJzdCgpOworICAgIG1CbG9ja0VudHJ5ID0gbUNsdXN0ZXItPkdldEZpcnN0KCk7CisKKyAgICB3aGlsZSAoIWVvcygpICYmIGJsb2NrKCktPkdldFRyYWNrTnVtYmVyKCkgIT0gbVRyYWNrTnVtKSB7CisgICAgICAgIGFkdmFuY2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgQmxvY2tJdGVyYXRvcjo6c2VlayhpbnQ2NF90IHNlZWtUaW1lVXMpIHsKKyAgICBtQ2x1c3RlciA9IG1TZWdtZW50LT5HZXRDbHVzdGVyKHNlZWtUaW1lVXMgKiAxMDAwbGwpOworICAgIG1CbG9ja0VudHJ5ID0gbUNsdXN0ZXIgIT0gTlVMTCA/IG1DbHVzdGVyLT5HZXRGaXJzdCgpIDogTlVMTDsKKworICAgIHdoaWxlICghZW9zKCkgJiYgYmxvY2soKS0+R2V0VHJhY2tOdW1iZXIoKSAhPSBtVHJhY2tOdW0pIHsKKyAgICAgICAgYWR2YW5jZSgpOworICAgIH0KKworICAgIHdoaWxlICghZW9zKCkgJiYgIW1CbG9ja0VudHJ5LT5HZXRCbG9jaygpLT5Jc0tleSgpKSB7CisgICAgICAgIGFkdmFuY2UoKTsKKyAgICB9Cit9CisKK2NvbnN0IG1rdnBhcnNlcjo6QmxvY2sgKkJsb2NrSXRlcmF0b3I6OmJsb2NrKCkgY29uc3QgeworICAgIENIRUNLKCFlb3MoKSk7CisKKyAgICByZXR1cm4gbUJsb2NrRW50cnktPkdldEJsb2NrKCk7Cit9CisKK2ludDY0X3QgQmxvY2tJdGVyYXRvcjo6YmxvY2tUaW1lVXMoKSBjb25zdCB7CisgICAgcmV0dXJuIChtQmxvY2tFbnRyeS0+R2V0QmxvY2soKS0+R2V0VGltZShtQ2x1c3RlcikgKyA1MDBsbCkgLyAxMDAwbGw7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK3N0YXR1c190IE1hdHJvc2thU291cmNlOjpyZWFkKAorICAgICAgICBNZWRpYUJ1ZmZlciAqKm91dCwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKKyAgICAqb3V0ID0gTlVMTDsKKworICAgIGludDY0X3Qgc2Vla1RpbWVVczsKKyAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLT5nZXRTZWVrVG8oJnNlZWtUaW1lVXMpKSB7CisgICAgICAgIG1CbG9ja0l0ZXIuc2VlayhzZWVrVGltZVVzKTsKKyAgICB9CisKKyAgICBpZiAobUJsb2NrSXRlci5lb3MoKSkgeworICAgICAgICByZXR1cm4gRVJST1JfRU5EX09GX1NUUkVBTTsKKyAgICB9CisKKyAgICBjb25zdCBta3ZwYXJzZXI6OkJsb2NrICpibG9jayA9IG1CbG9ja0l0ZXIuYmxvY2soKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGJsb2NrLT5HZXRTaXplKCk7CisgICAgaW50NjRfdCB0aW1lVXMgPSBtQmxvY2tJdGVyLmJsb2NrVGltZVVzKCk7CisKKyAgICBNZWRpYUJ1ZmZlciAqYnVmZmVyID0gbmV3IE1lZGlhQnVmZmVyKHNpemUgKyAyKTsKKyAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgdGltZVVzKTsKKworICAgIGxvbmcgcmVzID0gYmxvY2stPlJlYWQoCisgICAgICAgICAgICBtRXh0cmFjdG9yLT5tUmVhZGVyLCAodW5zaWduZWQgY2hhciAqKWJ1ZmZlci0+ZGF0YSgpICsgMik7CisKKyAgICBpZiAocmVzICE9IDApIHsKKyAgICAgICAgcmV0dXJuIEVSUk9SX0VORF9PRl9TVFJFQU07CisgICAgfQorCisgICAgYnVmZmVyLT5zZXRfcmFuZ2UoMiwgc2l6ZSk7CisKKyAgICBpZiAobVR5cGUgPT0gQVZDKSB7CisgICAgICAgIENIRUNLKHNpemUgPj0gMik7CisKKyAgICAgICAgdWludDhfdCAqZGF0YSA9ICh1aW50OF90ICopYnVmZmVyLT5kYXRhKCk7CisKKyAgICAgICAgdW5zaWduZWQgTkFMc2l6ZSA9IGRhdGFbMl0gPDwgOCB8IGRhdGFbM107CisgICAgICAgIENIRUNLX0VRKHNpemUsIE5BTHNpemUgKyAyKTsKKworICAgICAgICBtZW1jcHkoZGF0YSwgIlx4MDBceDAwXHgwMFx4MDEiLCA0KTsKKyAgICAgICAgYnVmZmVyLT5zZXRfcmFuZ2UoMCwgc2l6ZSArIDIpOworICAgIH0gZWxzZSBpZiAobVR5cGUgPT0gQUFDKSB7CisgICAgICAgIC8vIFRoZXJlJ3Mgc3RyYW5nZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmcuLi4KKworICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhID0gKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIDI7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgICAgICB3aGlsZSAob2Zmc2V0IDwgc2l6ZSAmJiBkYXRhW29mZnNldF0gIT0gMHgyMSkgeworICAgICAgICAgICAgKytvZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyLT5zZXRfcmFuZ2UoMiArIG9mZnNldCwgc2l6ZSAtIG9mZnNldCk7CisgICAgfQorCisgICAgKm91dCA9IGJ1ZmZlcjsKKworI2lmIDAKKyAgICBoZXhkdW1wKChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAorICAgICAgICAgICAgYnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7CisjZW5kaWYKKworICAgIG1CbG9ja0l0ZXIuYWR2YW5jZSgpOworCisgICAgcmV0dXJuIE9LOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitNYXRyb3NrYUV4dHJhY3Rvcjo6TWF0cm9za2FFeHRyYWN0b3IoY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSkKKyAgICA6IG1EYXRhU291cmNlKHNvdXJjZSksCisgICAgICBtUmVhZGVyKG5ldyBEYXRhU291cmNlUmVhZGVyKG1EYXRhU291cmNlKSksCisgICAgICBtU2VnbWVudChOVUxMKSwKKyAgICAgIG1FeHRyYWN0ZWRUaHVtYm5haWxzKGZhbHNlKSB7CisgICAgbWt2cGFyc2VyOjpFQk1MSGVhZGVyIGVibWxIZWFkZXI7CisgICAgbG9uZyBsb25nIHBvczsKKyAgICBpZiAoZWJtbEhlYWRlci5QYXJzZShtUmVhZGVyLCBwb3MpIDwgMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbG9uZyBsb25nIHJldCA9CisgICAgICAgIG1rdnBhcnNlcjo6U2VnbWVudDo6Q3JlYXRlSW5zdGFuY2UobVJlYWRlciwgcG9zLCBtU2VnbWVudCk7CisKKyAgICBpZiAocmV0KSB7CisgICAgICAgIENIRUNLKG1TZWdtZW50ID09IE5VTEwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmV0ID0gbVNlZ21lbnQtPkxvYWQoKTsKKworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGRlbGV0ZSBtU2VnbWVudDsKKyAgICAgICAgbVNlZ21lbnQgPSBOVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkVHJhY2tzKCk7Cit9CisKK01hdHJvc2thRXh0cmFjdG9yOjp+TWF0cm9za2FFeHRyYWN0b3IoKSB7CisgICAgZGVsZXRlIG1TZWdtZW50OworICAgIG1TZWdtZW50ID0gTlVMTDsKKworICAgIGRlbGV0ZSBtUmVhZGVyOworICAgIG1SZWFkZXIgPSBOVUxMOworfQorCitzaXplX3QgTWF0cm9za2FFeHRyYWN0b3I6OmNvdW50VHJhY2tzKCkgeworICAgIHJldHVybiBtVHJhY2tzLnNpemUoKTsKK30KKworc3A8TWVkaWFTb3VyY2U+IE1hdHJvc2thRXh0cmFjdG9yOjpnZXRUcmFjayhzaXplX3QgaW5kZXgpIHsKKyAgICBpZiAoaW5kZXggPj0gbVRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG5ldyBNYXRyb3NrYVNvdXJjZSh0aGlzLCBpbmRleCk7Cit9CisKK3NwPE1ldGFEYXRhPiBNYXRyb3NrYUV4dHJhY3Rvcjo6Z2V0VHJhY2tNZXRhRGF0YSgKKyAgICAgICAgc2l6ZV90IGluZGV4LCB1aW50MzJfdCBmbGFncykgeworICAgIGlmIChpbmRleCA+PSBtVHJhY2tzLnNpemUoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoKGZsYWdzICYga0luY2x1ZGVFeHRlbnNpdmVNZXRhRGF0YSkgJiYgIW1FeHRyYWN0ZWRUaHVtYm5haWxzKSB7CisgICAgICAgIGZpbmRUaHVtYm5haWxzKCk7CisgICAgICAgIG1FeHRyYWN0ZWRUaHVtYm5haWxzID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gbVRyYWNrcy5pdGVtQXQoaW5kZXgpLm1NZXRhOworfQorCitzdGF0aWMgdm9pZCBhZGRFU0RTRnJvbUF1ZGlvU3BlY2lmaWNJbmZvKAorICAgICAgICBjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEsIGNvbnN0IHZvaWQgKmFzaSwgc2l6ZV90IGFzaVNpemUpIHsKKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBrU3RhdGljRVNEU1tdID0geworICAgICAgICAweDAzLCAyMiwKKyAgICAgICAgMHgwMCwgMHgwMCwgICAgIC8vIEVTX0lECisgICAgICAgIDB4MDAsICAgICAgICAgICAvLyBzdHJlYW1EZXBlbmRlbmNlRmxhZywgVVJMX0ZsYWcsIE9DUnN0cmVhbUZsYWcKKworICAgICAgICAweDA0LCAxNywKKyAgICAgICAgMHg0MCwgICAgICAgICAgICAgICAgICAgICAgIC8vIEF1ZGlvIElTTy9JRUMgMTQ0OTYtMworICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCisgICAgICAgIDB4MDUsCisgICAgICAgIC8vIEF1ZGlvU3BlY2lmaWNJbmZvICh3aXRoIHNpemUgcHJlZml4KSBmb2xsb3dzCisgICAgfTsKKworICAgIENIRUNLKGFzaVNpemUgPCAxMjgpOworICAgIHNpemVfdCBlc2RzU2l6ZSA9IHNpemVvZihrU3RhdGljRVNEUykgKyBhc2lTaXplICsgMTsKKyAgICB1aW50OF90ICplc2RzID0gbmV3IHVpbnQ4X3RbZXNkc1NpemVdOworICAgIG1lbWNweShlc2RzLCBrU3RhdGljRVNEUywgc2l6ZW9mKGtTdGF0aWNFU0RTKSk7CisgICAgdWludDhfdCAqcHRyID0gZXNkcyArIHNpemVvZihrU3RhdGljRVNEUyk7CisgICAgKnB0cisrID0gYXNpU2l6ZTsKKyAgICBtZW1jcHkocHRyLCBhc2ksIGFzaVNpemUpOworCisgICAgbWV0YS0+c2V0RGF0YShrS2V5RVNEUywgMCwgZXNkcywgZXNkc1NpemUpOworCisgICAgZGVsZXRlW10gZXNkczsKKyAgICBlc2RzID0gTlVMTDsKK30KKwordm9pZCBhZGRWb3JiaXNDb2RlY0luZm8oCisgICAgICAgIGNvbnN0IHNwPE1ldGFEYXRhPiAmbWV0YSwKKyAgICAgICAgY29uc3Qgdm9pZCAqX2NvZGVjUHJpdmF0ZSwgc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUpIHsKKyAgICAvLyBwcmludGYoInZvcmJpcyBwcml2YXRlIGRhdGEgZm9sbG93czpcbiIpOworICAgIC8vIGhleGR1bXAoX2NvZGVjUHJpdmF0ZSwgY29kZWNQcml2YXRlU2l6ZSk7CisKKyAgICBDSEVDSyhjb2RlY1ByaXZhdGVTaXplID49IDMpOworCisgICAgY29uc3QgdWludDhfdCAqY29kZWNQcml2YXRlID0gKGNvbnN0IHVpbnQ4X3QgKilfY29kZWNQcml2YXRlOworICAgIENIRUNLKGNvZGVjUHJpdmF0ZVswXSA9PSAweDAyKTsKKworICAgIHNpemVfdCBsZW4xID0gY29kZWNQcml2YXRlWzFdOworICAgIHNpemVfdCBsZW4yID0gY29kZWNQcml2YXRlWzJdOworCisgICAgQ0hFQ0soY29kZWNQcml2YXRlU2l6ZSA+IDMgKyBsZW4xICsgbGVuMik7CisKKyAgICBDSEVDSyhjb2RlY1ByaXZhdGVbM10gPT0gMHgwMSk7CisgICAgbWV0YS0+c2V0RGF0YShrS2V5Vm9yYmlzSW5mbywgMCwgJmNvZGVjUHJpdmF0ZVszXSwgbGVuMSk7CisKKyAgICBDSEVDSyhjb2RlY1ByaXZhdGVbbGVuMSArIDNdID09IDB4MDMpOworCisgICAgQ0hFQ0soY29kZWNQcml2YXRlW2xlbjEgKyBsZW4yICsgM10gPT0gMHgwNSk7CisgICAgbWV0YS0+c2V0RGF0YSgKKyAgICAgICAgICAgIGtLZXlWb3JiaXNCb29rcywgMCwgJmNvZGVjUHJpdmF0ZVtsZW4xICsgbGVuMiArIDNdLAorICAgICAgICAgICAgY29kZWNQcml2YXRlU2l6ZSAtIGxlbjEgLSBsZW4yIC0gMyk7Cit9CisKK3ZvaWQgTWF0cm9za2FFeHRyYWN0b3I6OmFkZFRyYWNrcygpIHsKKyAgICBjb25zdCBta3ZwYXJzZXI6OlRyYWNrcyAqdHJhY2tzID0gbVNlZ21lbnQtPkdldFRyYWNrcygpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHRyYWNrcy0+R2V0VHJhY2tzQ291bnQoKTsgKytpbmRleCkgeworICAgICAgICBjb25zdCBta3ZwYXJzZXI6OlRyYWNrICp0cmFjayA9IHRyYWNrcy0+R2V0VHJhY2tCeUluZGV4KGluZGV4KTsKKworICAgICAgICBjb25zdCBjaGFyICpjb25zdCBjb2RlY0lEID0gdHJhY2stPkdldENvZGVjSWQoKTsKKyAgICAgICAgTE9HVigiY29kZWMgaWQgPSAlcyIsIGNvZGVjSUQpOworICAgICAgICBMT0dWKCJjb2RlYyBuYW1lID0gJXMiLCB0cmFjay0+R2V0Q29kZWNOYW1lQXNVVEY4KCkpOworCisgICAgICAgIHNpemVfdCBjb2RlY1ByaXZhdGVTaXplOworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjb2RlY1ByaXZhdGUgPQorICAgICAgICAgICAgdHJhY2stPkdldENvZGVjUHJpdmF0ZSgmY29kZWNQcml2YXRlU2l6ZSk7CisKKyAgICAgICAgZW51bSB7IFZJREVPX1RSQUNLID0gMSwgQVVESU9fVFJBQ0sgPSAyIH07CisKKyAgICAgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7CisKKyAgICAgICAgc3dpdGNoICh0cmFjay0+R2V0VHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIFZJREVPX1RSQUNLOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IG1rdnBhcnNlcjo6VmlkZW9UcmFjayAqdnRyYWNrID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgbWt2cGFyc2VyOjpWaWRlb1RyYWNrICo+KHRyYWNrKTsKKworICAgICAgICAgICAgICAgIGlmICghc3RyY21wKCJWX01QRUc0L0lTTy9BVkMiLCBjb2RlY0lEKSkgeworICAgICAgICAgICAgICAgICAgICBtZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YS0+c2V0RGF0YShrS2V5QVZDQywgMCwgY29kZWNQcml2YXRlLCBjb2RlY1ByaXZhdGVTaXplKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoIlZfVlA4IiwgY29kZWNJRCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX1ZQWCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbWV0YS0+c2V0SW50MzIoa0tleVdpZHRoLCB2dHJhY2stPkdldFdpZHRoKCkpOworICAgICAgICAgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlIZWlnaHQsIHZ0cmFjay0+R2V0SGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEFVRElPX1RSQUNLOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IG1rdnBhcnNlcjo6QXVkaW9UcmFjayAqYXRyYWNrID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgbWt2cGFyc2VyOjpBdWRpb1RyYWNrICo+KHRyYWNrKTsKKworICAgICAgICAgICAgICAgIGlmICghc3RyY21wKCJBX0FBQyIsIGNvZGVjSUQpKSB7CisgICAgICAgICAgICAgICAgICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMpOworICAgICAgICAgICAgICAgICAgICBDSEVDSyhjb2RlY1ByaXZhdGVTaXplID49IDIpOworCisgICAgICAgICAgICAgICAgICAgIGFkZEVTRFNGcm9tQXVkaW9TcGVjaWZpY0luZm8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YSwgY29kZWNQcml2YXRlLCBjb2RlY1ByaXZhdGVTaXplKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoIkFfVk9SQklTIiwgY29kZWNJRCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0FVRElPX1ZPUkJJUyk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkVm9yYmlzQ29kZWNJbmZvKG1ldGEsIGNvZGVjUHJpdmF0ZSwgY29kZWNQcml2YXRlU2l6ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbWV0YS0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIGF0cmFjay0+R2V0U2FtcGxpbmdSYXRlKCkpOworICAgICAgICAgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIGF0cmFjay0+R2V0Q2hhbm5lbHMoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBsb25nIGxvbmcgZHVyYXRpb25OcyA9IG1TZWdtZW50LT5HZXREdXJhdGlvbigpOworICAgICAgICBtZXRhLT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIChkdXJhdGlvbk5zICsgNTAwKSAvIDEwMDApOworCisgICAgICAgIG1UcmFja3MucHVzaCgpOworICAgICAgICBUcmFja0luZm8gKnRyYWNrSW5mbyA9ICZtVHJhY2tzLmVkaXRJdGVtQXQobVRyYWNrcy5zaXplKCkgLSAxKTsKKyAgICAgICAgdHJhY2tJbmZvLT5tVHJhY2tOdW0gPSB0cmFjay0+R2V0TnVtYmVyKCk7CisgICAgICAgIHRyYWNrSW5mby0+bU1ldGEgPSBtZXRhOworICAgIH0KK30KKwordm9pZCBNYXRyb3NrYUV4dHJhY3Rvcjo6ZmluZFRodW1ibmFpbHMoKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFRyYWNrSW5mbyAqaW5mbyA9ICZtVHJhY2tzLmVkaXRJdGVtQXQoaSk7CisKKyAgICAgICAgY29uc3QgY2hhciAqbWltZTsKKyAgICAgICAgQ0hFQ0soaW5mby0+bU1ldGEtPmZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJm1pbWUpKTsKKworICAgICAgICBpZiAoc3RybmNhc2VjbXAobWltZSwgInZpZGVvLyIsIDYpKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrSXRlcmF0b3IgaXRlcihtU2VnbWVudCwgaW5mby0+bVRyYWNrTnVtKTsKKyAgICAgICAgaW50MzJfdCBpID0gMDsKKyAgICAgICAgaW50NjRfdCB0aHVtYm5haWxUaW1lVXMgPSAwOworICAgICAgICBzaXplX3QgbWF4QmxvY2tTaXplID0gMDsKKyAgICAgICAgd2hpbGUgKCFpdGVyLmVvcygpICYmIGkgPCAyMCkgeworICAgICAgICAgICAgaWYgKGl0ZXIuYmxvY2soKS0+SXNLZXkoKSkgeworICAgICAgICAgICAgICAgICsraTsKKworICAgICAgICAgICAgICAgIHNpemVfdCBibG9ja1NpemUgPSBpdGVyLmJsb2NrKCktPkdldFNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2tTaXplID4gbWF4QmxvY2tTaXplKSB7CisgICAgICAgICAgICAgICAgICAgIG1heEJsb2NrU2l6ZSA9IGJsb2NrU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgdGh1bWJuYWlsVGltZVVzID0gaXRlci5ibG9ja1RpbWVVcygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGl0ZXIuYWR2YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGluZm8tPm1NZXRhLT5zZXRJbnQ2NChrS2V5VGh1bWJuYWlsVGltZSwgdGh1bWJuYWlsVGltZVVzKTsKKyAgICB9Cit9CisKK3NwPE1ldGFEYXRhPiBNYXRyb3NrYUV4dHJhY3Rvcjo6Z2V0TWV0YURhdGEoKSB7CisgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7CisgICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NQVRST1NLQSk7CisKKyAgICByZXR1cm4gbWV0YTsKK30KKworYm9vbCBTbmlmZk1hdHJvc2thKAorICAgICAgICBjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlLCBTdHJpbmc4ICptaW1lVHlwZSwgZmxvYXQgKmNvbmZpZGVuY2UpIHsKKyAgICBEYXRhU291cmNlUmVhZGVyIHJlYWRlcihzb3VyY2UpOworICAgIG1rdnBhcnNlcjo6RUJNTEhlYWRlciBlYm1sSGVhZGVyOworICAgIGxvbmcgbG9uZyBwb3M7CisgICAgaWYgKGVibWxIZWFkZXIuUGFyc2UoJnJlYWRlciwgcG9zKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1pbWVUeXBlLT5zZXRUbyhNRURJQV9NSU1FVFlQRV9DT05UQUlORVJfTUFUUk9TS0EpOworICAgICpjb25maWRlbmNlID0gMC42OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9NYXRyb3NrYUV4dHJhY3Rvci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvTWF0cm9za2FFeHRyYWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDcxODQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvTWF0cm9za2FFeHRyYWN0b3IuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBNQVRST1NLQV9FWFRSQUNUT1JfSF8KKworI2RlZmluZSBNQVRST1NLQV9FWFRSQUNUT1JfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXh0cmFjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBta3ZwYXJzZXIgeworc3RydWN0IFNlZ21lbnQ7Cit9OworCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIFN0cmluZzg7CisKK3N0cnVjdCBEYXRhU291cmNlUmVhZGVyOworc3RydWN0IE1hdHJvc2thU291cmNlOworCitzdHJ1Y3QgTWF0cm9za2FFeHRyYWN0b3IgOiBwdWJsaWMgTWVkaWFFeHRyYWN0b3IgeworICAgIE1hdHJvc2thRXh0cmFjdG9yKGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UpOworCisgICAgdmlydHVhbCBzaXplX3QgY291bnRUcmFja3MoKTsKKworICAgIHZpcnR1YWwgc3A8TWVkaWFTb3VyY2U+IGdldFRyYWNrKHNpemVfdCBpbmRleCk7CisKKyAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRUcmFja01ldGFEYXRhKAorICAgICAgICAgICAgc2l6ZV90IGluZGV4LCB1aW50MzJfdCBmbGFncyk7CisKKyAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRNZXRhRGF0YSgpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TWF0cm9za2FFeHRyYWN0b3IoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RydWN0IE1hdHJvc2thU291cmNlOworCisgICAgc3RydWN0IFRyYWNrSW5mbyB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbVRyYWNrTnVtOworICAgICAgICBzcDxNZXRhRGF0YT4gbU1ldGE7CisgICAgfTsKKyAgICBWZWN0b3I8VHJhY2tJbmZvPiBtVHJhY2tzOworCisgICAgc3A8RGF0YVNvdXJjZT4gbURhdGFTb3VyY2U7CisgICAgRGF0YVNvdXJjZVJlYWRlciAqbVJlYWRlcjsKKyAgICBta3ZwYXJzZXI6OlNlZ21lbnQgKm1TZWdtZW50OworICAgIGJvb2wgbUV4dHJhY3RlZFRodW1ibmFpbHM7CisKKyAgICB2b2lkIGFkZFRyYWNrcygpOworICAgIHZvaWQgZmluZFRodW1ibmFpbHMoKTsKKworICAgIE1hdHJvc2thRXh0cmFjdG9yKGNvbnN0IE1hdHJvc2thRXh0cmFjdG9yICYpOworICAgIE1hdHJvc2thRXh0cmFjdG9yICZvcGVyYXRvcj0oY29uc3QgTWF0cm9za2FFeHRyYWN0b3IgJik7Cit9OworCitib29sIFNuaWZmTWF0cm9za2EoCisgICAgICAgIGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UsIFN0cmluZzggKm1pbWVUeXBlLCBmbG9hdCAqY29uZmlkZW5jZSk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gTUFUUk9TS0FfRVhUUkFDVE9SX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9ta3ZwYXJzZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvbWt2cGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTUxMDA0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvbWt2cGFyc2VyLmNwcApAQCAtMCwwICsxLDMxMDMgQEAKKyNpbmNsdWRlICJta3ZwYXJzZXIuaHBwIgorI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKworbWt2cGFyc2VyOjpJTWt2UmVhZGVyOjp+SU1rdlJlYWRlcigpCit7Cit9CisKK2xvbmcgbG9uZyBta3ZwYXJzZXI6OlJlYWRVSW50KElNa3ZSZWFkZXIqIHBSZWFkZXIsIGxvbmcgbG9uZyBwb3MsIGxvbmcmIGxlbikKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKworICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KHBvcyA8IGF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KChhdmFpbGFibGUgLSBwb3MpID49IDEpOyAgLy9hc3N1bWUgaGVyZSBtYXggdS1pbnQgbGVuIGlzIDgKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIGI7CisKKyAgICBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAmYik7CisgICAgaWYgKGhyIDwgMCkKKyAgICAgICAgcmV0dXJuIGhyOworICAgICAgICAKKyAgICBhc3NlcnQoaHIgPT0gMEwpOworICAgIAorICAgIGlmIChiICYgMHg4MCkgICAgICAgLy8xMDAwIDAwMDAKKyAgICB7CisgICAgICAgIGxlbiA9IDE7CisgICAgICAgIGIgJj0gMHg3RjsgICAgICAvLzAxMTEgMTExMQorICAgIH0gICAgICAgIAorICAgIGVsc2UgaWYgKGIgJiAweDQwKSAgLy8wMTAwIDAwMDAKKyAgICB7CisgICAgICAgIGxlbiA9IDI7CisgICAgICAgIGIgJj0gMHgzRjsgICAgICAvLzAwMTEgMTExMQorICAgIH0KKyAgICBlbHNlIGlmIChiICYgMHgyMCkgIC8vMDAxMCAwMDAwCisgICAgeworICAgICAgICBsZW4gPSAzOworICAgICAgICBiICY9IDB4MUY7ICAgICAgLy8wMDAxIDExMTEKKyAgICB9CisgICAgZWxzZSBpZiAoYiAmIDB4MTApICAvLzAwMDEgMDAwMAorICAgIHsKKyAgICAgICAgbGVuID0gNDsKKyAgICAgICAgYiAmPSAweDBGOyAgICAgIC8vMDAwMCAxMTExCisgICAgfQorICAgIGVsc2UgaWYgKGIgJiAweDA4KSAgLy8wMDAwIDEwMDAKKyAgICB7CisgICAgICAgIGxlbiA9IDU7CisgICAgICAgIGIgJj0gMHgwNzsgICAgICAvLzAwMDAgMDExMQorICAgIH0KKyAgICBlbHNlIGlmIChiICYgMHgwNCkgIC8vMDAwMCAwMTAwCisgICAgeworICAgICAgICBsZW4gPSA2OworICAgICAgICBiICY9IDB4MDM7ICAgICAgLy8wMDAwIDAwMTEKKyAgICB9CisgICAgZWxzZSBpZiAoYiAmIDB4MDIpICAvLzAwMDAgMDAxMAorICAgIHsKKyAgICAgICAgbGVuID0gNzsKKyAgICAgICAgYiAmPSAweDAxOyAgICAgIC8vMDAwMCAwMDAxCisgICAgfQorICAgIGVsc2UgCisgICAgeworICAgICAgICBhc3NlcnQoYiAmIDB4MDEpOyAgLy8wMDAwIDAwMDEKKyAgICAgICAgbGVuID0gODsKKyAgICAgICAgYiA9IDA7ICAgICAgICAgICAgIC8vMDAwMCAwMDAwCisgICAgfQorICAgIAorICAgIGFzc2VydCgoYXZhaWxhYmxlIC0gcG9zKSA+PSBsZW4pOworICAgIAorICAgIGxvbmcgbG9uZyByZXN1bHQgPSBiOworICAgICsrcG9zOworICAgIGZvciAobG9uZyBpID0gMTsgaSA8IGxlbjsgKytpKQorICAgIHsKKyAgICAgICAgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgJmIpOworICAgICAgICAKKyAgICAgICAgaWYgKGhyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBocjsKKyAgICAgICAgICAgIAorICAgICAgICBhc3NlcnQoaHIgPT0gMEwpOworICAgICAgICAKKyAgICAgICAgcmVzdWx0IDw8PSA4OworICAgICAgICByZXN1bHQgfD0gYjsKKyAgICAgICAgCisgICAgICAgICsrcG9zOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorICAgIAorbG9uZyBsb25nIG1rdnBhcnNlcjo6R2V0VUludExlbmd0aCgKKyAgICBJTWt2UmVhZGVyKiBwUmVhZGVyLAorICAgIGxvbmcgbG9uZyBwb3MsIAorICAgIGxvbmcmIGxlbikKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKworICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgCisgICAgaWYgKHBvcyA+PSBhdmFpbGFibGUpCisgICAgICAgIHJldHVybiBwb3M7ICAvL3RvbyBmZXcgYnl0ZXMgYXZhaWxhYmxlCisgICAgCisgICAgdW5zaWduZWQgY2hhciBiOworICAgIAorICAgIGhyID0gcFJlYWRlci0+UmVhZChwb3MsIDEsICZiKTsKKyAgICAKKyAgICBpZiAoaHIgPCAwKQorICAgICAgICByZXR1cm4gaHI7CisKKyAgICBhc3NlcnQoaHIgPT0gMEwpOworICAgIAorICAgIGlmIChiID09IDApICAvL3dlIGNhbid0IGhhbmRsZSB1LWludCB2YWx1ZXMgbGFyZ2VyIHRoYW4gOCBieXRlcworICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgIAorICAgIHVuc2lnbmVkIGNoYXIgbSA9IDB4ODA7CisgICAgbGVuID0gMTsKKyAgICAKKyAgICB3aGlsZSAoIShiICYgbSkpCisgICAgeworICAgICAgICBtID4+PSAxOworICAgICAgICArK2xlbjsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIDA7ICAvL3N1Y2Nlc3MKK30KKworCitsb25nIGxvbmcgbWt2cGFyc2VyOjpTeW5jUmVhZFVJbnQoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcgcG9zLCAKKyAgICBsb25nIGxvbmcgc3RvcCwKKyAgICBsb25nJiBsZW4pCit7CisgICAgYXNzZXJ0KHBSZWFkZXIpOworCisgICAgaWYgKHBvcyA+PSBzdG9wKQorICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgIAorICAgIHVuc2lnbmVkIGNoYXIgYjsKKyAgICAKKyAgICBsb25nIGhyID0gcFJlYWRlci0+UmVhZChwb3MsIDEsICZiKTsKKyAgICAKKyAgICBpZiAoaHIgPCAwKQorICAgICAgICByZXR1cm4gaHI7CisgICAgICAgIAorICAgIGlmIChociAhPSAwTCkKKyAgICAgICAgcmV0dXJuIEVfQlVGRkVSX05PVF9GVUxMOworCisgICAgaWYgKGIgPT0gMCkgIC8vd2UgY2FuJ3QgaGFuZGxlIHUtaW50IHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzCisgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgCisgICAgdW5zaWduZWQgY2hhciBtID0gMHg4MDsKKyAgICBsZW4gPSAxOworICAgICAgICAKKyAgICB3aGlsZSAoIShiICYgbSkpCisgICAgeworICAgICAgICBtID4+PSAxOworICAgICAgICArK2xlbjsKKyAgICB9CisgICAgCisgICAgaWYgKChwb3MgKyBsZW4pID4gc3RvcCkKKyAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgCisgICAgbG9uZyBsb25nIHJlc3VsdCA9IGIgJiAofm0pOworICAgICsrcG9zOworICAgIAorICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbGVuOyArK2kpCisgICAgeworICAgICAgICBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAmYik7CisgICAgICAgIAorICAgICAgICBpZiAoaHIgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGhyOworICAgICAgICAgICAKKyAgICAgICAgaWYgKGhyICE9IDBMKQorICAgICAgICAgICAgcmV0dXJuIEVfQlVGRkVSX05PVF9GVUxMOworICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdCA8PD0gODsKKyAgICAgICAgcmVzdWx0IHw9IGI7CisgICAgICAgIAorICAgICAgICArK3BvczsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitsb25nIGxvbmcgbWt2cGFyc2VyOjpVbnNlcmlhbGl6ZVVJbnQoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwgCisgICAgbG9uZyBsb25nIHBvcywKKyAgICBsb25nIGxvbmcgc2l6ZSkKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICBhc3NlcnQoc2l6ZSA+IDApOworICAgIGFzc2VydChzaXplIDw9IDgpOworICAgIAorICAgIGxvbmcgbG9uZyByZXN1bHQgPSAwOworICAgIAorICAgIGZvciAobG9uZyBsb25nIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBiOworICAgICAgICAKKyAgICAgICAgY29uc3QgbG9uZyBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAmYik7CisgICAgICAgIAorICAgICAgICBpZiAoaHIgPCAwKSAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGhyOworICAgICAgICByZXN1bHQgPDw9IDg7CisgICAgICAgIHJlc3VsdCB8PSBiOworICAgICAgICAKKyAgICAgICAgKytwb3M7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworZmxvYXQgbWt2cGFyc2VyOjpVbnNlcmlhbGl6ZTRGbG9hdCgKKyAgICBJTWt2UmVhZGVyKiBwUmVhZGVyLCAKKyAgICBsb25nIGxvbmcgcG9zKQoreworICAgIGFzc2VydChwUmVhZGVyKTsKKyAgICBhc3NlcnQocG9zID49IDApOworICAgIAorICAgIGxvbmcgbG9uZyB0b3RhbCwgYXZhaWxhYmxlOworICAgIAorICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgYXNzZXJ0KChwb3MgKyA0KSA8PSBhdmFpbGFibGUpOworICAgIAorICAgIGZsb2F0IHJlc3VsdDsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyKiBjb25zdCBwID0gKHVuc2lnbmVkIGNoYXIqKSZyZXN1bHQ7CisgICAgdW5zaWduZWQgY2hhciogcSA9IHAgKyA0OworICAgIAorICAgIGZvciAoOzspCisgICAgeworICAgICAgICBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAtLXEpOworICAgICAgICBhc3NlcnQoaHIgPT0gMEwpOworICAgICAgICAKKyAgICAgICAgaWYgKHEgPT0gcCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICsrcG9zOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK2RvdWJsZSBta3ZwYXJzZXI6OlVuc2VyaWFsaXplOERvdWJsZSgKKyAgICBJTWt2UmVhZGVyKiBwUmVhZGVyLCAKKyAgICBsb25nIGxvbmcgcG9zKQoreworICAgIGFzc2VydChwUmVhZGVyKTsKKyAgICBhc3NlcnQocG9zID49IDApOworICAgIAorICAgIGRvdWJsZSByZXN1bHQ7CisgICAgCisgICAgdW5zaWduZWQgY2hhciogY29uc3QgcCA9ICh1bnNpZ25lZCBjaGFyKikmcmVzdWx0OworICAgIHVuc2lnbmVkIGNoYXIqIHEgPSBwICsgODsKKyAgICAKKyAgICBmb3IgKDs7KQorICAgIHsKKyAgICAgICAgY29uc3QgbG9uZyBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAtLXEpOworICAgICAgICBhc3NlcnQoaHIgPT0gMEwpOworICAgICAgICAKKyAgICAgICAgaWYgKHEgPT0gcCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICsrcG9zOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaWduZWQgY2hhciBta3ZwYXJzZXI6OlVuc2VyaWFsaXplMVNJbnQoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcgcG9zKQoreworICAgIGFzc2VydChwUmVhZGVyKTsKKyAgICBhc3NlcnQocG9zID49IDApOworIAorICAgIGxvbmcgbG9uZyB0b3RhbCwgYXZhaWxhYmxlOworCisgICAgbG9uZyBociA9IHBSZWFkZXItPkxlbmd0aCgmdG90YWwsICZhdmFpbGFibGUpOworICAgIGFzc2VydChociA9PSAwKTsgICAKKyAgICBhc3NlcnQoYXZhaWxhYmxlIDw9IHRvdGFsKTsKKyAgICBhc3NlcnQocG9zIDwgYXZhaWxhYmxlKTsKKworICAgIHNpZ25lZCBjaGFyIHJlc3VsdDsKKworICAgIGhyID0gcFJlYWRlci0+UmVhZChwb3MsIDEsICh1bnNpZ25lZCBjaGFyKikmcmVzdWx0KTsKKyAgICBhc3NlcnQoaHIgPT0gMCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaG9ydCBta3ZwYXJzZXI6OlVuc2VyaWFsaXplMlNJbnQoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwgCisgICAgbG9uZyBsb25nIHBvcykKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKyAgICAKKyAgICBsb25nIGhyID0gcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KGhyID49IDApOworICAgIGFzc2VydChhdmFpbGFibGUgPD0gdG90YWwpOworICAgIGFzc2VydCgocG9zICsgMikgPD0gYXZhaWxhYmxlKTsKKyAgICAKKyAgICBzaG9ydCByZXN1bHQ7CisgICAgCisgICAgdW5zaWduZWQgY2hhciogY29uc3QgcCA9ICh1bnNpZ25lZCBjaGFyKikmcmVzdWx0OworICAgIHVuc2lnbmVkIGNoYXIqIHEgPSBwICsgMjsKKyAgICAKKyAgICBmb3IgKDs7KQorICAgIHsKKyAgICAgICAgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgLS1xKTsKKyAgICAgICAgYXNzZXJ0KGhyID09IDBMKTsKKyAgICAgICAgCisgICAgICAgIGlmIChxID09IHApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICArK3BvczsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitib29sIG1rdnBhcnNlcjo6TWF0Y2goCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcmIHBvcywKKyAgICB1bnNpZ25lZCBsb25nIGlkXywKKyAgICBsb25nIGxvbmcmIHZhbCkKKworeworICAgIGFzc2VydChwUmVhZGVyKTsKKyAgICBhc3NlcnQocG9zID49IDApOworICAgIAorICAgIGxvbmcgbG9uZyB0b3RhbCwgYXZhaWxhYmxlOworCisgICAgbG9uZyBociA9IHBSZWFkZXItPkxlbmd0aCgmdG90YWwsICZhdmFpbGFibGUpOworICAgIGFzc2VydChociA+PSAwKTsKKyAgICBhc3NlcnQoYXZhaWxhYmxlIDw9IHRvdGFsKTsKKyAgICAKKyAgICBsb25nIGxlbjsKKworICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoaWQgPj0gMCk7CisgICAgYXNzZXJ0KGxlbiA+IDApOworICAgIGFzc2VydChsZW4gPD0gOCk7CisgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IGF2YWlsYWJsZSk7CisgICAgCisgICAgaWYgKCh1bnNpZ25lZCBsb25nKWlkICE9IGlkXykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisgICAgYXNzZXJ0KHNpemUgPD0gOCk7CisgICAgYXNzZXJ0KGxlbiA+IDApOworICAgIGFzc2VydChsZW4gPD0gOCk7CisgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IGF2YWlsYWJsZSk7CisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZSBvZiBwYXlsb2FkCisgICAgCisgICAgdmFsID0gVW5zZXJpYWxpemVVSW50KHBSZWFkZXIsIHBvcywgc2l6ZSk7CisgICAgYXNzZXJ0KHZhbCA+PSAwKTsKKyAgICAKKyAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBzaXplIG9mIHBheWxvYWQKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBta3ZwYXJzZXI6Ok1hdGNoKAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsCisgICAgbG9uZyBsb25nJiBwb3MsCisgICAgdW5zaWduZWQgbG9uZyBpZF8sCisgICAgY2hhciomIHZhbCkKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKworICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgCisgICAgbG9uZyBsZW47CisKKyAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KGlkID49IDApOworICAgIGFzc2VydChsZW4gPiAwKTsKKyAgICBhc3NlcnQobGVuIDw9IDgpOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBhdmFpbGFibGUpOworICAgIAorICAgIGlmICgodW5zaWduZWQgbG9uZylpZCAhPSBpZF8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNpemVfID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChzaXplXyA+PSAwKTsKKyAgICBhc3NlcnQobGVuID4gMCk7CisgICAgYXNzZXJ0KGxlbiA8PSA4KTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gYXZhaWxhYmxlKTsKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplIG9mIHBheWxvYWQKKyAgICBhc3NlcnQoKHBvcyArIHNpemVfKSA8PSBhdmFpbGFibGUpOworCisgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemVfKTsgICAgCisgICAgdmFsID0gbmV3IGNoYXJbc2l6ZSsxXTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgIHsKKyAgICAgICAgY2hhciBjOworCisgICAgICAgIGhyID0gcFJlYWRlci0+UmVhZChwb3MgKyBpLCAxLCAodW5zaWduZWQgY2hhciopJmMpOworICAgICAgICBhc3NlcnQoaHIgPT0gMEwpOworICAgICAgICAgICAgCisgICAgICAgIHZhbFtpXSA9IGM7CisgICAKKyAgICAgICAgaWYgKGMgPT0gJ1wwJykKKyAgICAgICAgICAgIGJyZWFrOyAgICAgCisgICAKKyAgICB9CisKKyAgICB2YWxbc2l6ZV0gPSAnXDAnOworICAgIHBvcyArPSBzaXplXzsgIC8vY29uc3VtZSBzaXplIG9mIHBheWxvYWQKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2lmIDAKK2Jvb2wgbWt2cGFyc2VyOjpNYXRjaCgKKyAgICBJTWt2UmVhZGVyKiBwUmVhZGVyLAorICAgIGxvbmcgbG9uZyYgcG9zLAorICAgIHVuc2lnbmVkIGxvbmcgaWQsCisgICAgd2NoYXJfdComIHZhbCkKK3sKKyAgICBjaGFyKiBzdHI7CisgICAgCisgICAgaWYgKCFNYXRjaChwUmVhZGVyLCBwb3MsIGlkLCBzdHIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IG1ic3Rvd2NzKE5VTEwsIHN0ciwgMCk7CisgICAgICAgCisgICAgaWYgKHNpemUgPT0gMCkgCisgICAgICAgIHZhbCA9IE5VTEw7CisgICAgZWxzZSAKKyAgICB7IAorICAgICAgICB2YWwgPSBuZXcgd2NoYXJfdFtzaXplKzFdOworICAgICAgICBtYnN0b3djcyh2YWwsIHN0ciwgc2l6ZSk7CisgICAgICAgIHZhbFtzaXplXSA9IEwnXDAnOworICAgIH0KKworICAgIGRlbGV0ZVtdIHN0cjsKKyAgICByZXR1cm4gdHJ1ZTsgICAgCit9CisjZW5kaWYKKworCitib29sIG1rdnBhcnNlcjo6TWF0Y2goCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcmIHBvcywKKyAgICB1bnNpZ25lZCBsb25nIGlkXywKKyAgICB1bnNpZ25lZCBjaGFyKiYgdmFsLAorICAgIHNpemVfdCAqb3B0aW9uYWxTaXplKQoreworICAgIGFzc2VydChwUmVhZGVyKTsKKyAgICBhc3NlcnQocG9zID49IDApOworICAgIAorICAgIGxvbmcgbG9uZyB0b3RhbCwgYXZhaWxhYmxlOworCisgICAgbG9uZyBociA9IHBSZWFkZXItPkxlbmd0aCgmdG90YWwsICZhdmFpbGFibGUpOworICAgIGFzc2VydChociA+PSAwKTsKKyAgICBhc3NlcnQoYXZhaWxhYmxlIDw9IHRvdGFsKTsKKyAgICAKKyAgICBsb25nIGxlbjsKKyAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KGlkID49IDApOworICAgIGFzc2VydChsZW4gPiAwKTsKKyAgICBhc3NlcnQobGVuIDw9IDgpOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBhdmFpbGFibGUpOworICAgIAorICAgIGlmICgodW5zaWduZWQgbG9uZylpZCAhPSBpZF8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplXyA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoc2l6ZV8gPj0gMCk7CisgICAgYXNzZXJ0KGxlbiA+IDApOworICAgIGFzc2VydChsZW4gPD0gOCk7CisgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IGF2YWlsYWJsZSk7CisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZSBvZiBwYXlsb2FkCisgICAgYXNzZXJ0KChwb3MgKyBzaXplXykgPD0gYXZhaWxhYmxlKTsKKworICAgIGNvbnN0IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplXyk7ICAgIAorICAgIHZhbCA9IG5ldyB1bnNpZ25lZCBjaGFyW3NpemVdOworIAorICAgIGlmIChvcHRpb25hbFNpemUpIHsKKyAgICAgICAgKm9wdGlvbmFsU2l6ZSA9IHNpemU7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGI7CisKKyAgICAgICAgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcyArIGksIDEsICZiKTsKKyAgICAgICAgYXNzZXJ0KGhyID09IDBMKTsKKworICAgICAgICB2YWxbaV0gPSBiOyAKKyAgICB9CisgICAgCisgICAgcG9zICs9IHNpemVfOyAgLy9jb25zdW1lIHNpemUgb2YgcGF5bG9hZCAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCitib29sIG1rdnBhcnNlcjo6TWF0Y2goCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcmIHBvcywKKyAgICB1bnNpZ25lZCBsb25nIGlkXywKKyAgICBkb3VibGUmIHZhbCkKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKworICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgbG9uZyBpZGxlbjsKKyAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGlkbGVuKTsKKyAgICBhc3NlcnQoaWQgPj0gMCk7ICAvL1RPRE8KKyAgICAKKyAgICBpZiAoKHVuc2lnbmVkIGxvbmcpaWQgIT0gaWRfKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBsb25nIHNpemVsZW47CisgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBwb3MgKyBpZGxlbiwgc2l6ZWxlbik7CisKKyAgICBzd2l0Y2ggKHNpemUpCisgICAgewkKKyAgICAgICAgY2FzZSA0OgorICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwb3MgKz0gaWRsZW4gKyBzaXplbGVuOyAgLy9jb25zdW1lIGlkIGFuZCBzaXplIGZpZWxkcworICAgIGFzc2VydCgocG9zICsgc2l6ZSkgPD0gYXZhaWxhYmxlKTsKKworICAgIGlmIChzaXplID09IDQpCisgICAgICAgIHZhbCA9IFVuc2VyaWFsaXplNEZsb2F0KHBSZWFkZXIsIHBvcyk7CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgYXNzZXJ0KHNpemUgPT0gOCk7CisgICAgICAgIHZhbCA9IFVuc2VyaWFsaXplOERvdWJsZShwUmVhZGVyLCBwb3MpOworICAgIH0KKyAgICAKKyAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBzaXplIG9mIHBheWxvYWQKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCitib29sIG1rdnBhcnNlcjo6TWF0Y2goCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcmIHBvcywKKyAgICB1bnNpZ25lZCBsb25nIGlkXywKKyAgICBzaG9ydCYgdmFsKQoreworICAgIGFzc2VydChwUmVhZGVyKTsKKyAgICBhc3NlcnQocG9zID49IDApOworICAgIAorICAgIGxvbmcgbG9uZyB0b3RhbCwgYXZhaWxhYmxlOworCisgICAgbG9uZyBociA9IHBSZWFkZXItPkxlbmd0aCgmdG90YWwsICZhdmFpbGFibGUpOworICAgIGFzc2VydChociA+PSAwKTsKKyAgICBhc3NlcnQoYXZhaWxhYmxlIDw9IHRvdGFsKTsKKyAgICAKKyAgICBsb25nIGxlbjsKKyAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KGlkID49IDApOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBhdmFpbGFibGUpOworICAgIAorICAgIGlmICgodW5zaWduZWQgbG9uZylpZCAhPSBpZF8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChzaXplIDw9IDIpOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBhdmFpbGFibGUpOworICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZSBvZiBwYXlsb2FkCisgICAgYXNzZXJ0KChwb3MgKyBzaXplKSA8PSBhdmFpbGFibGUpOworCisgICAgLy9UT0RPOgorICAgIC8vIEdlbmVyYWxpemUgdGhpcyB0byB3b3JrIGZvciBhbnkgc2l6ZSBzaWduZWQgaW50CisgICAgaWYgKHNpemUgPT0gMSkKKyAgICAgICAgdmFsID0gVW5zZXJpYWxpemUxU0ludChwUmVhZGVyLCBwb3MpOworICAgIGVsc2UgCisgICAgICAgIHZhbCA9IFVuc2VyaWFsaXplMlNJbnQocFJlYWRlciwgcG9zKTsKKyAgICAgICAgCisgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgc2l6ZSBvZiBwYXlsb2FkCisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKKworbmFtZXNwYWNlIG1rdnBhcnNlcgoreworCitFQk1MSGVhZGVyOjpFQk1MSGVhZGVyKCk6CisgICAgbV9kb2NUeXBlKE5VTEwpCit7Cit9CisKK0VCTUxIZWFkZXI6On5FQk1MSGVhZGVyKCkKK3sKKyAgICBkZWxldGVbXSBtX2RvY1R5cGU7Cit9CisKK2xvbmcgbG9uZyBFQk1MSGVhZGVyOjpQYXJzZSgKKyAgICBJTWt2UmVhZGVyKiBwUmVhZGVyLAorICAgIGxvbmcgbG9uZyYgcG9zKQoreworICAgIGFzc2VydChwUmVhZGVyKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKyAgICAKKyAgICBsb25nIGhyID0gcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgCisgICAgaWYgKGhyIDwgMCkgCisgICAgICAgIHJldHVybiBocjsKKyAgICAKKyAgICBwb3MgPSAwOyAgICAKKyAgICBsb25nIGxvbmcgZW5kID0gKDEwMjQgPCBhdmFpbGFibGUpPyAxMDI0OiBhdmFpbGFibGU7ICAgIAorCisgICAgZm9yICg7OykKKyAgICB7ICAgIAorICAgICAgICB1bnNpZ25lZCBjaGFyIGIgPSAwOworICAgIAorICAgICAgICB3aGlsZSAocG9zIDwgZW5kKQorICAgICAgICB7CisgICAgICAgICAgICBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAmYik7CisgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGhyIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gaHI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChiID09IDB4MUEpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICArK3BvczsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoYiAhPSAweDFBKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoKHBvcyA+PSAxMDI0KSB8fAorICAgICAgICAgICAgICAgIChhdmFpbGFibGUgPj0gdG90YWwpIHx8IAorICAgICAgICAgICAgICAgICgodG90YWwgLSBhdmFpbGFibGUpIDwgNSkpCisgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlICsgNTsgIC8vNSA9IDQtYnl0ZSBJRCArIDFzdCBieXRlIG9mIHNpemUKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoKHRvdGFsIC0gcG9zKSA8IDUpCisgICAgICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIGlmICgoYXZhaWxhYmxlIC0gcG9zKSA8IDUpCisgICAgICAgICAgICByZXR1cm4gcG9zICsgNTsgIC8vdHJ5IGFnYWluIGxhdGVyCisKKyAgICAgICAgbG9uZyBsZW47ICAgICAgICAgICAgCisKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIHJlc3VsdCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQgPCAwKSAgLy9lcnJvcgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0ID09IDB4MEE0NURGQTMpICAvL1JlYWRJZCBtYXNrcy1vZmYgbGVuZ3RoIGluZGljYXRvciBiaXRzCisgICAgICAgIHsKKyAgICAgICAgICAgIGFzc2VydChsZW4gPT0gNCk7CisgICAgICAgICAgICBwb3MgKz0gbGVuOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICArK3BvczsgIC8vdGhyb3cgYXdheSBqdXN0IHRoZSAweDFBIGJ5dGUsIGFuZCB0cnkgYWdhaW4KKyAgICB9CisgICAgICAgIAorICAgIGxvbmcgbGVuOworICAgIGxvbmcgbG9uZyByZXN1bHQgPSBHZXRVSW50TGVuZ3RoKHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAKKyAgICBpZiAocmVzdWx0IDwgMCkgIC8vZXJyb3IKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCisgICAgaWYgKHJlc3VsdCA+IDApICAvL25lZWQgbW9yZSBkYXRhCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIAorICAgIGFzc2VydChsZW4gPiAwKTsKKyAgICBhc3NlcnQobGVuIDw9IDgpOworICAgIAorICAgIGlmICgodG90YWwgLSAgcG9zKSA8IGxlbikKKyAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICBpZiAoKGF2YWlsYWJsZSAtIHBvcykgPCBsZW4pCisgICAgICAgIHJldHVybiBwb3MgKyBsZW47ICAvL3RyeSBhZ2FpbiBsYXRlcgorICAgICAgICAKKyAgICByZXN1bHQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgCisgICAgaWYgKHJlc3VsdCA8IDApICAvL2Vycm9yCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIAorICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgdS1pbnQKKyAgICAKKyAgICBpZiAoKHRvdGFsIC0gcG9zKSA8IHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKworICAgIGlmICgoYXZhaWxhYmxlIC0gcG9zKSA8IHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBvcyArIHJlc3VsdDsKKyAgICAgICAgCisgICAgZW5kID0gcG9zICsgcmVzdWx0OworICAgIAorICAgIG1fdmVyc2lvbiA9IDE7CisgICAgbV9yZWFkVmVyc2lvbiA9IDE7CisgICAgbV9tYXhJZExlbmd0aCA9IDQ7CisgICAgbV9tYXhTaXplTGVuZ3RoID0gODsKKyAgICBtX2RvY1R5cGVWZXJzaW9uID0gMTsKKyAgICBtX2RvY1R5cGVSZWFkVmVyc2lvbiA9IDE7CisKKyAgICB3aGlsZSAocG9zIDwgZW5kKQorICAgIHsKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwMjg2LCBtX3ZlcnNpb24pKSAgIAorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDJGNywgbV9yZWFkVmVyc2lvbikpICAgICAgICAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDAyRjIsIG1fbWF4SWRMZW5ndGgpKSAgICAgICAgCisgICAgICAgICAgICA7CisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwMkYzLCBtX21heFNpemVMZW5ndGgpKSAgICAgIAorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDI4MiwgbV9kb2NUeXBlKSkgICAgICAgICAgICAKKyAgICAgICAgICAgIDsgCisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwMjg3LCBtX2RvY1R5cGVWZXJzaW9uKSkgICAgIAorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDI4NSwgbV9kb2NUeXBlUmVhZFZlcnNpb24pKSAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0ID4gMCk7CisgICAgICAgICAgICBhc3NlcnQobGVuID4gMCk7CisgICAgICAgICAgICBhc3NlcnQobGVuIDw9IDgpOworICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47CisgICAgICAgICAgICBhc3NlcnQocG9zIDwgZW5kKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0ID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA+PSAwKTsKKyAgICAgICAgICAgIGFzc2VydChsZW4gPiAwKTsKKyAgICAgICAgICAgIGFzc2VydChsZW4gPD0gOCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW4gKyByZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnQocG9zIDw9IGVuZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYXNzZXJ0KHBvcyA9PSBlbmQpOworICAgICAgICAKKyAgICByZXR1cm4gMDsgICAgCit9CisKKworU2VnbWVudDo6U2VnbWVudCgKKyAgICBJTWt2UmVhZGVyKiBwUmVhZGVyLAorICAgIGxvbmcgbG9uZyBzdGFydCwKKyAgICBsb25nIGxvbmcgc2l6ZSkgOgorICAgIG1fcFJlYWRlcihwUmVhZGVyKSwKKyAgICBtX3N0YXJ0KHN0YXJ0KSwKKyAgICBtX3NpemUoc2l6ZSksCisgICAgbV9wb3Moc3RhcnQpLAorICAgIG1fcEluZm8oTlVMTCksCisgICAgbV9wVHJhY2tzKE5VTEwpLAorICAgIG1fY2x1c3RlckNvdW50KDApCisgICAgLy9tX2NsdXN0ZXJOdW1iZXIoMCkKK3sKK30KKworCitTZWdtZW50Ojp+U2VnbWVudCgpCit7CisgICAgQ2x1c3RlcioqIGkgPSBtX2NsdXN0ZXJzOworICAgIENsdXN0ZXIqKiBqID0gbV9jbHVzdGVycyArIG1fY2x1c3RlckNvdW50OworCisgICAgd2hpbGUgKGkgIT0gaikKKyAgICB7CisgICAgICAgIENsdXN0ZXIqIHAgPSAqaSsrOworICAgICAgICBhc3NlcnQocCk7CQkKKyAgICAgICAgZGVsZXRlIHA7CisgICAgfSAKKyAgICAKKyAgICBkZWxldGVbXSBtX2NsdXN0ZXJzOworICAgICAgIAorICAgIGRlbGV0ZSBtX3BUcmFja3M7CisgICAgZGVsZXRlIG1fcEluZm87Cit9CisKKworbG9uZyBsb25nIFNlZ21lbnQ6OkNyZWF0ZUluc3RhbmNlKAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsCisgICAgbG9uZyBsb25nIHBvcywKKyAgICBTZWdtZW50KiYgcFNlZ21lbnQpCit7CisgICAgYXNzZXJ0KHBSZWFkZXIpOworICAgIGFzc2VydChwb3MgPj0gMCk7CisgICAgCisgICAgcFNlZ21lbnQgPSBOVUxMOworICAgIAorICAgIGxvbmcgbG9uZyB0b3RhbCwgYXZhaWxhYmxlOworICAgIAorICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgCisgICAgLy9JIHdvdWxkIGFzc3VtZSB0aGF0IGluIHByYWN0aWNlIHRoaXMgbG9vcCB3b3VsZCBleGVjdXRlCisgICAgLy9leGFjdGx5IG9uY2UsIGJ1dCB3ZSBhbGxvdyBmb3Igb3RoZXIgZWxlbWVudHMgKGUuZy4gVm9pZCkKKyAgICAvL3RvIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgRUJNTCBoZWFkZXIuICBUaGlzIGlzIGZpbmUgZm9yCisgICAgLy90aGUgc291cmNlIGZpbHRlciBjYXNlIChzaW5jZSB0aGUgZW50aXJlIGZpbGUgaXMgYXZhaWxhYmxlKSwKKyAgICAvL2J1dCBpbiB0aGUgc3BsaXR0ZXIgY2FzZSBvdmVyIGEgbmV0d29yayB3ZSBzaG91bGQgcHJvYmFibHkKKyAgICAvL2p1c3QgZ2l2ZSB1cCBlYXJseS4gIFdlIGNvdWxkIGZvciBleGFtcGxlIGRlY2lkZSBvbmx5IHRvCisgICAgLy9leGVjdXRlIHRoaXMgbG9vcCBhIG1heGltdW0gb2YsIHNheSwgMTAgdGltZXMuCisgICAgCisgICAgd2hpbGUgKHBvcyA8IHRvdGFsKQorICAgIHsgICAgCisgICAgICAgIC8vUmVhZCBJRAorICAgICAgICAKKyAgICAgICAgbG9uZyBsZW47CisgICAgICAgIGxvbmcgbG9uZyByZXN1bHQgPSBHZXRVSW50TGVuZ3RoKHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQpICAvL2Vycm9yLCBvciB0b28gZmV3IGF2YWlsYWJsZSBieXRlcworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiB0b3RhbCkKKyAgICAgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKChwb3MgKyBsZW4pID4gYXZhaWxhYmxlKQorICAgICAgICAgICAgcmV0dXJuIHBvcyArIGxlbjsKKworICAgICAgICAvL1RPRE86IGlmIHdlIGxpYmVyYWxpemUgdGhlIGJlaGF2aW9yIG9mIFJlYWRVSW50LCB3ZSBjYW4KKyAgICAgICAgLy9wcm9iYWJseSBlbGltaW5hdGUgaGF2aW5nIHRvIHVzZSBHZXRVSW50TGVuZ3RoIGhlcmUuCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpZCA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gaWQ7CisgICAgICAgICAgICAKKyAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBJRAorICAgICAgICAKKyAgICAgICAgLy9SZWFkIFNpemUKKyAgICAgICAgCisgICAgICAgIHJlc3VsdCA9IEdldFVJbnRMZW5ndGgocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCkgIC8vZXJyb3IsIG9yIHRvbyBmZXcgYXZhaWxhYmxlIGJ5dGVzCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgbGVuKSA+IHRvdGFsKQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiBhdmFpbGFibGUpCisgICAgICAgICAgICByZXR1cm4gcG9zICsgbGVuOworCisgICAgICAgIC8vVE9ETzogaWYgd2UgbGliZXJhbGl6ZSB0aGUgYmVoYXZpb3Igb2YgUmVhZFVJbnQsIHdlIGNhbgorICAgICAgICAvL3Byb2JhYmx5IGVsaW1pbmF0ZSBoYXZpbmcgdG8gdXNlIEdldFVJbnRMZW5ndGggaGVyZS4KKyAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplIG9mIGVsZW1lbnQKKyAgICAgICAgCisgICAgICAgIC8vUG9zIG5vdyBwb2ludHMgdG8gc3RhcnQgb2YgcGF5bG9hZAorICAgICAgICAKKyAgICAgICAgaWYgKChwb3MgKyBzaXplKSA+IHRvdGFsKQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgCisgICAgICAgIGlmIChpZCA9PSAweDA4NTM4MDY3KSAgLy9TZWdtZW50IElECisgICAgICAgIHsKKyAgICAgICAgICAgIHBTZWdtZW50ID0gbmV3ICBTZWdtZW50KHBSZWFkZXIsIHBvcywgc2l6ZSk7IAorICAgICAgICAgICAgYXNzZXJ0KHBTZWdtZW50KTsgIC8vVE9ETyAgIAorCisgICAgICAgICAgICByZXR1cm4gMDsgICAgLy9zdWNjZXNzCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHBvcyArPSBzaXplOyAgLy9jb25zdW1lIHBheWxvYWQKKyAgICB9CisgICAgCisgICAgYXNzZXJ0KHBvcyA9PSB0b3RhbCk7CisgICAgCisgICAgcFNlZ21lbnQgPSBuZXcgU2VnbWVudChwUmVhZGVyLCBwb3MsIDApOyAKKyAgICBhc3NlcnQocFNlZ21lbnQpOyAgLy9UT0RPICAgCisKKyAgICByZXR1cm4gMDsgIC8vc3VjY2VzcyAoc29ydCBvZikKK30KKworCitsb25nIGxvbmcgU2VnbWVudDo6UGFyc2VIZWFkZXJzKCkKK3sKKyAgICAvL091dGVybW9zdCAobGV2ZWwgMCkgc2VnbWVudCBvYmplY3QgaGFzIGJlZW4gY29uc3RydWN0ZWQsIAorICAgIC8vYW5kIHBvcyBkZXNpZ25hdGVzIHN0YXJ0IG9mIHBheWxvYWQuICBXZSBuZWVkIHRvIGZpbmQgdGhlCisgICAgLy9pbm5lciAobGV2ZWwgMSkgZWxlbWVudHMuCisgICAgbG9uZyBsb25nIHRvdGFsLCBhdmFpbGFibGU7CisgICAgCisgICAgbG9uZyBociA9IG1fcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KGhyID49IDApOworICAgIGFzc2VydChhdmFpbGFibGUgPD0gdG90YWwpOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gbV9zdGFydCArIG1fc2l6ZTsKKyAgICBhc3NlcnQoc3RvcCA8PSB0b3RhbCk7CisgICAgYXNzZXJ0KG1fcG9zIDw9IHN0b3ApOworICAgIAorICAgIGJvb2wgYlF1aXQgPSBmYWxzZTsKKyAgICB3aGlsZSAoKG1fcG9zIDwgc3RvcCkgJiYgIWJRdWl0KQorICAgIHsKKyAgICAgICAgbG9uZyBsb25nIHBvcyA9IG1fcG9zOworICAgICAgICAKKyAgICAgICAgbG9uZyBsZW47CisgICAgICAgIGxvbmcgbG9uZyByZXN1bHQgPSBHZXRVSW50TGVuZ3RoKG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCkgIC8vZXJyb3IsIG9yIHRvbyBmZXcgYXZhaWxhYmxlIGJ5dGVzCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgbGVuKSA+IHN0b3ApCisgICAgICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgbGVuKSA+IGF2YWlsYWJsZSkKKyAgICAgICAgICAgIHJldHVybiBwb3MgKyBsZW47CisgICAgICAgICAgICAKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkcG9zID0gcG9zOworICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChtX3BSZWFkZXIsIGlkcG9zLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKGlkIDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiBpZDsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIElECisgICAgICAgIAorICAgICAgICAvL1JlYWQgU2l6ZQorICAgICAgICByZXN1bHQgPSBHZXRVSW50TGVuZ3RoKG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCkgIC8vZXJyb3IsIG9yIHRvbyBmZXcgYXZhaWxhYmxlIGJ5dGVzCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgbGVuKSA+IHN0b3ApCisgICAgICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgbGVuKSA+IGF2YWlsYWJsZSkKKyAgICAgICAgICAgIHJldHVybiBwb3MgKyBsZW47CisKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAgICAgCisgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUgb2YgZWxlbWVudAorICAgICAgICAKKyAgICAgICAgLy9Qb3Mgbm93IHBvaW50cyB0byBzdGFydCBvZiBwYXlsb2FkCisgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIHNpemUpID4gc3RvcCkKKyAgICAgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgICAgICAgICAKKyAgICAgICAgLy9XZSByZWFkIEVCTUwgZWxlbWVudHMgZWl0aGVyIGluIHRvdGFsIG9yIG5vdGhpbmcgYXQgYWxsLgorICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgc2l6ZSkgPiBhdmFpbGFibGUpCisgICAgICAgICAgICByZXR1cm4gcG9zICsgc2l6ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChpZCA9PSAweDA1NDlBOTY2KSAgLy9TZWdtZW50IEluZm8gSUQKKyAgICAgICAgeworICAgICAgICAgICAgYXNzZXJ0KG1fcEluZm8gPT0gTlVMTCk7CisgICAgICAgICAgICBtX3BJbmZvID0gbmV3ICBTZWdtZW50SW5mbyh0aGlzLCBwb3MsIHNpemUpOworICAgICAgICAgICAgYXNzZXJ0KG1fcEluZm8pOyAgLy9UT0RPCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX3BUcmFja3MpCisgICAgICAgICAgICAgICAgYlF1aXQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGlkID09IDB4MDY1NEFFNkIpICAvL1RyYWNrcyBJRAorICAgICAgICB7CisgICAgICAgICAgICBhc3NlcnQobV9wVHJhY2tzID09IE5VTEwpOworICAgICAgICAgICAgbV9wVHJhY2tzID0gbmV3ICBUcmFja3ModGhpcywgcG9zLCBzaXplKTsKKyAgICAgICAgICAgIGFzc2VydChtX3BUcmFja3MpOyAgLy9UT0RPCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX3BJbmZvKQorICAgICAgICAgICAgICAgIGJRdWl0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpZCA9PSAweDBGNDNCNjc1KSAgLy9DbHVzdGVyIElECisgICAgICAgIHsKKyNpZiAwCisgICAgICAgICAgICBpZiAobV9wSW5mbyA9PSBOVUxMKSAgLy9UT0RPOiBsaWJlcmFsaXplCisgICAgICAgICAgICAgICAgOyAgCisgICAgICAgICAgICBlbHNlIGlmIChtX3BUcmFja3MgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICA7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgLy9QYXJzZUNsdXN0ZXIoaWRwb3MsIHBvcywgc2l6ZSk7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQ2x1c3Rlcjo6UGFyc2UodGhpcywgbV9jbHVzdGVycywgcG9zLCBzaXplKTsKKyNlbmRpZgorICAgICAgICAgICAgYlF1aXQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX3BvcyA9IHBvcyArIHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgIH0KKyAgICAKKyAgICBhc3NlcnQobV9wb3MgPD0gc3RvcCk7CisgICAgCisgICAgcmV0dXJuIDA7ICAvL3N1Y2Nlc3MKK30KKworCitsb25nIFNlZ21lbnQ6OlBhcnNlQ2x1c3RlcihDbHVzdGVyKiYgcENsdXN0ZXIsIGxvbmcgbG9uZyYgcG9zXykgY29uc3QKK3sKKyAgICBwQ2x1c3RlciA9IE5VTEw7CisgICAgcG9zXyA9IC0xOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gbV9zdGFydCArIG1fc2l6ZTsKKyAgICBhc3NlcnQobV9wb3MgPD0gc3RvcCk7CisgICAgCisgICAgbG9uZyBsb25nIHBvcyA9IG1fcG9zOworICAgIGxvbmcgbG9uZyBvZmYgPSAtMTsKKyAgIAorIAorICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyAgICAgICAgbG9uZyBsZW47CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZHBvcyA9IHBvczsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFN5bmNSZWFkVUludChtX3BSZWFkZXIsIHBvcywgc3RvcCwgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpZCA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oaWQpOworICAgICAgICAgICAgCisgICAgICAgIGlmIChpZCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkICAgICAgICAKKyAgICAgICAgYXNzZXJ0KHBvcyA8IHN0b3ApOworCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gU3luY1JlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBzdG9wLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKHNpemUgPCAwKSAgLy9lcnJvcgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KHNpemUpOworICAgICAgICAgICAgCisgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgc2l6ZQorICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgIGlmIChzaXplID09IDApICAvL3dlaXJkCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAvL3BvcyBub3cgcG9pbnRzIHRvIHN0YXJ0IG9mIHBheWxvYWQKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisKKyAgICAgICAgaWYgKG9mZiA+PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBwb3NfID0gaWRwb3M7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpZCA9PSAweDBGNDNCNjc1KSAgLy9DbHVzdGVyIElECisgICAgICAgICAgICBvZmYgPSBpZHBvcyAtIG1fc3RhcnQ7CisgICAgfQorICAgIAorICAgIFNlZ21lbnQqIGNvbnN0IHRoaXNfID0gY29uc3RfY2FzdDxTZWdtZW50Kj4odGhpcyk7CisgICAgY29uc3Qgc2l6ZV90IGlkeCA9IG1fY2x1c3RlckNvdW50OworICAgIAorICAgIGlmIChwb3MgPj0gc3RvcCkKKyAgICB7CisgICAgICAgIHBvc18gPSBzdG9wOworICAgICAgICAKKyNpZiAwICAgICAgICAKKyAgICAgICAgaWYgKG9mZiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHBDbHVzdGVyID0gQ2x1c3Rlcjo6Q3JlYXRlRW5kT2ZTdHJlYW0odGhpc18sIGlkeCk7CisgICAgICAgICAgICByZXR1cm4gMUw7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGlmIChvZmYgPCAwKQorICAgICAgICAgICAgcmV0dXJuIDFMOworI2VuZGlmCisgICAgICAgICAgICAgICAgCisgICAgICAgIC8vUmVhZGluZyAwIGJ5dGVzIGF0IHBvcyBtaWdodCB3b3JrIHRvbyAtLSBpdCB3b3VsZCBkZXBlbmQgCisgICAgICAgIC8vb24gaG93IHRoZSByZWFkZXIgaXMgaW1wbGVtZW50ZWQuCisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBjaGFyIGI7CisKKyAgICAgICAgY29uc3QgbG9uZyBociA9IG1fcFJlYWRlci0+UmVhZChwb3MgLSAxLCAxLCAmYik7CisgICAgICAgIAorICAgICAgICBpZiAoaHIgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGhyOworICAgICAgICAgICAgCisgICAgICAgIGlmIChociAhPSAwTCkKKyAgICAgICAgICAgIHJldHVybiBFX0JVRkZFUl9OT1RfRlVMTDsKKyAgICB9CisgICAgCisgICAgYXNzZXJ0KG9mZiA+PSAwKTsKKyAgICBhc3NlcnQocG9zXyA+PSBtX3N0YXJ0KTsKKyAgICBhc3NlcnQocG9zXyA8PSBzdG9wKTsKKworICAgIHBDbHVzdGVyID0gQ2x1c3Rlcjo6UGFyc2UodGhpc18sIGlkeCwgb2ZmKTsKKyAgICByZXR1cm4gMEw7Cit9CisKKworYm9vbCBTZWdtZW50OjpBZGRDbHVzdGVyKENsdXN0ZXIqIHBDbHVzdGVyLCBsb25nIGxvbmcgcG9zKQoreworICAgIGFzc2VydChwb3MgPj0gbV9zdGFydCk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHN0b3AgPSBtX3N0YXJ0ICsgbV9zaXplOworICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisKKyAgICBpZiAocENsdXN0ZXIpICAgIAorICAgICAgICBtX2NsdXN0ZXJzW3Bvc10gPSBwQ2x1c3RlcjsKKyAgICAgICAgCisgICAgbV9wb3MgPSBwb3M7ICAvL21fcG9zID49IHN0b3AgaXMgbm93IHdlIGtub3cgd2UgaGF2ZSBhbGwgY2x1c3RlcnMKKyAgICAKKyAgICByZXR1cm4gKHBvcyA+PSBzdG9wKTsKK30KKworCitsb25nIFNlZ21lbnQ6OkxvYWQoKQoreworICAgIC8vT3V0ZXJtb3N0IChsZXZlbCAwKSBzZWdtZW50IG9iamVjdCBoYXMgYmVlbiBjb25zdHJ1Y3RlZCwgCisgICAgLy9hbmQgcG9zIGRlc2lnbmF0ZXMgc3RhcnQgb2YgcGF5bG9hZC4gIFdlIG5lZWQgdG8gZmluZCB0aGUKKyAgICAvL2lubmVyIChsZXZlbCAxKSBlbGVtZW50cy4KKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IG1fc3RhcnQgKyBtX3NpemU7CisjaWZkZWYgX0RFQlVHCisgICAgeworICAgICAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKyAgICAgICAgCisgICAgICAgIGxvbmcgaHIgPSBtX3BSZWFkZXItPkxlbmd0aCgmdG90YWwsICZhdmFpbGFibGUpOworICAgICAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgICAgIGFzc2VydChhdmFpbGFibGUgPj0gdG90YWwpOworICAgICAgICBhc3NlcnQoc3RvcCA8PSB0b3RhbCk7CisgICAgfQorI2VuZGlmCisgICAgbG9uZyBsb25nIGluZGV4ID0gbV9wb3M7CisgICAgCisgICAgbV9jbHVzdGVyQ291bnQgPSAwOworCisgICAgd2hpbGUgKGluZGV4IDwgc3RvcCkKKyAgICB7CisgICAgICAgIGxvbmcgbGVuID0gMDsKKworICAgICAgICBsb25nIGxvbmcgcmVzdWx0ID0gR2V0VUludExlbmd0aChtX3BSZWFkZXIsIGluZGV4LCBsZW4pOworICAgICAgIAorICAgICAgICBpZiAocmVzdWx0IDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPihyZXN1bHQpOworICAgICAgICAgICAgCisgICAgICAgIGlmICgoaW5kZXggKyBsZW4pID4gc3RvcCkKKyAgICAgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgICAgICAgICAKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkcG9zID0gaW5kZXg7CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KG1fcFJlYWRlciwgaWRwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAoaWQgPCAwKSAgLy9lcnJvcgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KGlkKTsKKyAgICAgICAgICAgIAorICAgICAgICBpbmRleCArPSBsZW47ICAvL2NvbnN1bWUgSUQKKyAgICAgICAgCisgICAgICAgIC8vUmVhZCBTaXplCisgICAgICAgIHJlc3VsdCA9IEdldFVJbnRMZW5ndGgobV9wUmVhZGVyLCBpbmRleCwgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQgPCAwKSAgLy9lcnJvcgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KHJlc3VsdCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKChpbmRleCArIGxlbikgPiBzdG9wKQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KG1fcFJlYWRlciwgaW5kZXgsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAoc2l6ZSA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oc2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgaW5kZXggKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplIG9mIGVsZW1lbnQKKyAKKyAgICAgICAgaWYgKGlkID09IDB4MEY0M0I2NzUpIC8vIENsdXN0ZXIgSUQgCisgICAgICAgICAgICBicmVhazsKKwkKKyAgICAgICAgaWYgKGlkID09IDB4MDE0RDlCNzQpIC8vIFNlZWtIZWFkIElEIAorICAgICAgICB7CisgICAgICAgICAgICBQYXJzZVNlZWtIZWFkKGluZGV4LCBzaXplLCBOVUxMKTsgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbmRleCArPSBzaXplOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKG1fY2x1c3RlckNvdW50ID09IDApCisgICAgICAgIHJldHVybiAtMUw7CisKKyAgICB3aGlsZSAobV9wb3MgPCBzdG9wKQorICAgIHsKKyAgICAgICAgbG9uZyBsb25nIHBvcyA9IG1fcG9zOworICAgICAgICAKKyAgICAgICAgbG9uZyBsZW47CisKKyAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEdldFVJbnRMZW5ndGgobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0IDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPihyZXN1bHQpOworICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgbGVuKSA+IHN0b3ApCisgICAgICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZHBvcyA9IHBvczsKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQobV9wUmVhZGVyLCBpZHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpZCA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oaWQpOworICAgICAgICAgICAgCisgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgSUQKKyAgICAgICAgCisgICAgICAgIC8vUmVhZCBTaXplCisgICAgICAgIHJlc3VsdCA9IEdldFVJbnRMZW5ndGgobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0IDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPihyZXN1bHQpOworICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgbGVuKSA+IHN0b3ApCisJICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgCisgICAgICAgIGlmIChzaXplIDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPihzaXplKTsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplIG9mIGVsZW1lbnQKKyAgICAgICAgCisgICAgICAgIC8vUG9zIG5vdyBwb2ludHMgdG8gc3RhcnQgb2YgcGF5bG9hZAorICAgICAgICAKKyAgICAgICAgaWYgKChwb3MgKyBzaXplKSA+IHN0b3ApCisgICAgICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIGlmIChpZCA9PSAweDBGNDNCNjc1KSAgLy9DbHVzdGVyIElECisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoaWQgPT0gMHgwMTREOUI3NCkgIC8vU2Vla0hlYWQgSUQKKyAgICAgICAgeworICAgICAgICAgICAgbV9jbHVzdGVycyA9IG5ldyBDbHVzdGVyKlttX2NsdXN0ZXJDb3VudF07ICAgCisgICAgICAgICAgICBzaXplX3QgaW5kZXggPSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICBQYXJzZVNlZWtIZWFkKHBvcywgc2l6ZSwgJmluZGV4KTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGFzc2VydChpbmRleCA9PSBtX2NsdXN0ZXJDb3VudCk7CisgICAgICAgIH0gICAgICAgICAgICAKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gMHgwNTQ5QTk2NikgIC8vU2VnbWVudCBJbmZvIElECisgICAgICAgIHsKKyAgICAgICAgICAgIGFzc2VydChtX3BJbmZvID09IE5VTEwpOworICAgICAgICAgICAgbV9wSW5mbyA9IG5ldyAgU2VnbWVudEluZm8odGhpcywgcG9zLCBzaXplKTsKKyAgICAgICAgICAgIGFzc2VydChtX3BJbmZvKTsgIC8vVE9ETworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGlkID09IDB4MDY1NEFFNkIpICAvL1RyYWNrcyBJRAorICAgICAgICB7CisgICAgICAgICAgICBhc3NlcnQobV9wVHJhY2tzID09IE5VTEwpOworICAgICAgICAgICAgbV9wVHJhY2tzID0gbmV3IFRyYWNrcyh0aGlzLCBwb3MsIHNpemUpOworICAgICAgICAgICAgYXNzZXJ0KG1fcFRyYWNrcyk7ICAvL1RPRE8KKyAgICAgICAgfQorCisgICAgICAgIG1fcG9zID0gcG9zICsgc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgfQorICAgIAorICAgIGFzc2VydChtX2NsdXN0ZXJzKTsKKyAgICAKKyAgICAvL1RPRE86IHNlZSBub3RlcyBhYm92ZS4gIFRoaXMgY2hlY2sgaXMgaGVyZSAodGVtcG9yYXJpbHkpIHRvIGVuc3VyZQorICAgIC8vdGhhdCB0aGUgZmlyc3Qgc2Vla2hlYWQgaGFzIGVudHJpZXMgZm9yIHRoZSBjbHVzdGVycyAoYmVjYXVzZSB0aGF0J3MKKyAgICAvL3doZW4gdGhleSdyZSBsb2FkZWQpLiAgSW4gY2FzZSB3ZSBhcmUgZ2l2ZW4gYSBmaWxlIHRoYXQgbGlzdHMgdGhlCisgICAgLy9jbHVzdGVycyBpbiBhIHNlY29uZCBzZWVraGVhZCwgdGhlIHdvcnN0IHRoaW5nIHRoYXQgaGFwcGVucyBpcyB0aGF0CisgICAgLy93ZSB0cmVhdCB0aGlzIGFzIGFuIGludmFsaWQgZmlsZSAod2hpY2ggaXMgYmV0dGVyIHRoZW4gc2ltcGx5CisgICAgLy9hc3NlcnRpbmcgc29tZXdoZXJlKS4gIEJ1dCB0aGF0J3Mgb25seSBhIHdvcmstYXJvdW5kLiAgV2hhdCB3ZSBuZWVkCisgICAgLy90byBkbyBpcyBiZSBhYmxlIHRvIGhhbmRsZSBoYXZpbmcgbXVsdGlwbGUgc2Vla2hlYWRzLCBhbmQgaGF2aW5nCisgICAgLy9jbHVzdGVycyBsaXN0ZWQgc29tZXdoZXJlIGJlc2lkZXMgdGhlIGZpcnN0IHNlZWtoZWFkLgorICAgIC8vICAgIAorICAgIC8vaWYgKG1fY2x1c3RlcnMgPT0gTlVMTCkKKyAgICAvLyAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAKKyAgICAvL05PVEU6IHdlIHN0b3AgcGFyc2luZyB3aGVuIHdlIHJlYWNoIHRoZSBmaXJzdCBjbHVzdGVyLCB1bmRlciB0aGUKKyAgICAvL2Fzc3VtcHRpb24gYWxsIGNsdXN0ZXJzIGFyZSBuYW1lZCBpbiBzb21lIFNlZWtIZWFkLiAgQ2x1c3RlcnMKKyAgICAvL3dpbGwgaGF2ZSBiZWVuIChwcmUpbG9hZGVkLCBzbyB3ZSBpbmRpY2F0ZSB0aGF0IHdlIGhhdmUgYWxsIGNsdXN0ZXJzCisgICAgLy9ieSBhZGp1c3RpbmcgdGhlIHBhcnNlIHBvc2l0aW9uOgorICAgIG1fcG9zID0gc3RvcDsgIC8vbWVhbnMgIndlIGhhdmUgYWxsIGNsdXN0ZXJzIgorCisgICAgcmV0dXJuIDBMOworfQorCisKK3ZvaWQgU2VnbWVudDo6UGFyc2VTZWVrSGVhZChsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplXywgc2l6ZV90KiBwSW5kZXgpCit7CisgICAgbG9uZyBsb25nIHBvcyA9IHN0YXJ0OworICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gc3RhcnQgKyBzaXplXzsKKyAgICB3aGlsZSAocG9zIDwgc3RvcCkKKyAgICB7CisgICAgICAgIGxvbmcgbGVuOworICAgICAgICAKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIGFzc2VydChpZCA+PSAwKTsgIC8vVE9ETworICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIElECisgICAgICAgIAorICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAKKyAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBTaXplIGZpZWxkCisgICAgICAgIGFzc2VydCgocG9zICsgc2l6ZSkgPD0gc3RvcCk7CisKKyAgICAgICAgaWYgKGlkID09IDB4MERCQikgIC8vU2Vla0VudHJ5IElECisgICAgICAgICAgICBQYXJzZVNlZWtFbnRyeShwb3MsIHNpemUsIHBJbmRleCk7CisgICAgICAgIAorICAgICAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisgICAgfQorICAgIAorICAgIGFzc2VydChwb3MgPT0gc3RvcCk7Cit9CisKKwordm9pZCBTZWdtZW50OjpQYXJzZVNlY29uZGFyeVNlZWtIZWFkKGxvbmcgbG9uZyBvZmYsIHNpemVfdCogcEluZGV4KQoreworICAgIGFzc2VydChvZmYgPj0gMCk7CisgICAgYXNzZXJ0KG9mZiA8IG1fc2l6ZSk7CisKKyAgICBsb25nIGxvbmcgcG9zID0gbV9zdGFydCArIG9mZjsKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IG1fc3RhcnQgKyBtX3NpemU7CisgICAgCisgICAgbG9uZyBsZW47CisKKyAgICBsb25nIGxvbmcgcmVzdWx0ID0gR2V0VUludExlbmd0aChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQocmVzdWx0ID09IDApOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgaWRwb3MgPSBwb3M7CisKKyAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChtX3BSZWFkZXIsIGlkcG9zLCBsZW4pOworICAgIGFzc2VydChpZCA9PSAweDAxNEQ5Qjc0KTsgIC8vU2Vla0hlYWQgSUQKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIElECisgICAgYXNzZXJ0KHBvcyA8IHN0b3ApOworICAgIAorICAgIC8vUmVhZCBTaXplCisgICAgCisgICAgcmVzdWx0ID0gR2V0VUludExlbmd0aChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQocmVzdWx0ID09IDApOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChzaXplID49IDApOworICAgIAorICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUgb2YgZWxlbWVudAorICAgIGFzc2VydCgocG9zICsgc2l6ZSkgPD0gc3RvcCk7CisgICAgCisgICAgLy9Qb3Mgbm93IHBvaW50cyB0byBzdGFydCBvZiBwYXlsb2FkCisgICAgCisgICAgUGFyc2VTZWVrSGVhZChwb3MsIHNpemUsIHBJbmRleCk7Cit9CisKKwordm9pZCBTZWdtZW50OjpQYXJzZVNlZWtFbnRyeShsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplXywgc2l6ZV90KiBwSW5kZXgpCit7CisgICAgbG9uZyBsb25nIHBvcyA9IHN0YXJ0OworCisgICAgY29uc3QgbG9uZyBsb25nIHN0b3AgPSBzdGFydCArIHNpemVfOworICAgIAorICAgIGxvbmcgbGVuOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzZWVrSWRJZCA9IFJlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgIC8vc2Vla0lkSWQ7CisgICAgYXNzZXJ0KHNlZWtJZElkID09IDB4MTNBQik7ICAvL1NlZWtJRCBJRAorICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisKKyAgICBjb25zdCBsb25nIGxvbmcgc2Vla0lkU2l6ZSA9IFJlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChzZWVrSWRTaXplID49IDApOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIHNpemUKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2Vla0lkID0gUmVhZFVJbnQobV9wUmVhZGVyLCBwb3MsIGxlbik7ICAvL3BheWxvYWQKKyAgICBhc3NlcnQoc2Vla0lkID49IDApOworICAgIGFzc2VydChsZW4gPT0gc2Vla0lkU2l6ZSk7CisgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgIAorICAgIHBvcyArPSBzZWVrSWRTaXplOyAgLy9jb25zdW1lIHBheWxvYWQKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2Vla1Bvc0lkID0gUmVhZFVJbnQobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgLy9zZWVrUG9zSWQ7CisgICAgYXNzZXJ0KHNlZWtQb3NJZCA9PSAweDEzQUMpOyAgLy9TZWVrUG9zIElECisgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgIAorICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgaWQKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2Vla1Bvc1NpemUgPSBSZWFkVUludChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoc2Vla1Bvc1NpemUgPj0gMCk7CisgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBzaXplCisgICAgYXNzZXJ0KChwb3MgKyBzZWVrUG9zU2l6ZSkgPD0gc3RvcCk7CisgICAgICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzZWVrT2ZmID0gVW5zZXJpYWxpemVVSW50KG1fcFJlYWRlciwgcG9zLCBzZWVrUG9zU2l6ZSk7CisgICAgYXNzZXJ0KHNlZWtPZmYgPj0gMCk7CisgICAgYXNzZXJ0KHNlZWtPZmYgPCBtX3NpemUpOworICAgIAorICAgIHBvcyArPSBzZWVrUG9zU2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgYXNzZXJ0KHBvcyA9PSBzdG9wKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2Vla1BvcyA9IG1fc3RhcnQgKyBzZWVrT2ZmOworICAgIGFzc2VydChzZWVrUG9zIDwgKG1fc3RhcnQgKyBtX3NpemUpKTsKKyAgIAorICAgIGlmIChzZWVrSWQgPT0gMHgwRjQzQjY3NSkgIC8vY2x1c3RlciBpZAorICAgIHsgICAgICAgCisgICAgICAgIGlmIChwSW5kZXggPT0gTlVMTCkKKyAgICAgICAgICAgICsrbV9jbHVzdGVyQ291bnQ7IAorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGFzc2VydChtX2NsdXN0ZXJzKTsKKyAgICAgICAgICAgIGFzc2VydChtX2NsdXN0ZXJDb3VudCA+IDApOworICAgICAgICAgICAgCisgICAgICAgICAgICBzaXplX3QmIGluZGV4ID0gKnBJbmRleDsKKyAgICAgICAgICAgIGFzc2VydChpbmRleCA8IG1fY2x1c3RlckNvdW50KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQ2x1c3RlciomIHBDbHVzdGVyID0gbV9jbHVzdGVyc1tpbmRleF07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBDbHVzdGVyID0gQ2x1c3Rlcjo6UGFyc2UodGhpcywgaW5kZXgsIHNlZWtPZmYpOworICAgICAgICAgICAgYXNzZXJ0KHBDbHVzdGVyKTsgIC8vVE9ETworICAgICAgICAgICAgCisgICAgICAgICAgICArK2luZGV4OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHNlZWtJZCA9PSAweDAxNEQ5Qjc0KSAgLy9TZWVrSGVhZCBJRAorICAgIHsKKyAgICAgICAgUGFyc2VTZWNvbmRhcnlTZWVrSGVhZChzZWVrT2ZmLCBwSW5kZXgpOworICAgIH0KK30KKworCitsb25nIGxvbmcgU2VnbWVudDo6VW5wYXJzZWQoKSBjb25zdAoreworICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gbV9zdGFydCArIG1fc2l6ZTsKKworICAgIGNvbnN0IGxvbmcgbG9uZyByZXN1bHQgPSBzdG9wIC0gbV9wb3M7CisgICAgYXNzZXJ0KHJlc3VsdCA+PSAwKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKyNpZiAwICAvL05PVEU6IHRvbyBpbmVmZmljaWVudAorbG9uZyBsb25nIFNlZ21lbnQ6OkxvYWQobG9uZyBsb25nIHRpbWVfbnMpCit7CisgICAgaWYgKFVucGFyc2VkKCkgPD0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgd2hpbGUgKG1fY2x1c3RlcnMuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyByZXN1bHQgPSBQYXJzZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCkgIC8vZXJyb3IsIG9yIG5vdCBlbm91Z2ggYnl0ZXMgYXZhaWxhYmxlCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgCisgICAgICAgIGlmIChVbnBhcnNlZCgpIDw9IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgd2hpbGUgKG1fY2x1c3RlcnMuYmFjaygpLT5HZXRUaW1lKCkgPCB0aW1lX25zKQorICAgIHsKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIHJlc3VsdCA9IFBhcnNlKCk7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0KSAgLy9lcnJvciwgb3Igbm90IGVub3VnaCBieXRlcyBhdmFpbGFibGUKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKFVucGFyc2VkKCkgPD0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0gICAgICAgIAorCisgICAgcmV0dXJuIDA7ICAgICAgICAKK30KKyNlbmRpZgorCisKK0NsdXN0ZXIqIFNlZ21lbnQ6OkdldEZpcnN0KCkKK3sKKyAgICBpZiAoKG1fY2x1c3RlcnMgPT0gTlVMTCkgfHwgKG1fY2x1c3RlckNvdW50IDw9IDApKQorICAgICAgIHJldHVybiAmbV9lb3M7CisKKyAgICBDbHVzdGVyKiBjb25zdCBwQ2x1c3RlciA9IG1fY2x1c3RlcnNbMF07CisgICAgYXNzZXJ0KHBDbHVzdGVyKTsKKyAgICAgICAgCisgICAgcmV0dXJuIHBDbHVzdGVyOworfQorCisKK0NsdXN0ZXIqIFNlZ21lbnQ6OkdldExhc3QoKQoreworICAgIGlmICgobV9jbHVzdGVycyA9PSBOVUxMKSB8fCAobV9jbHVzdGVyQ291bnQgPD0gMCkpCisgICAgICAgIHJldHVybiAmbV9lb3M7CisKKyAgICBjb25zdCBzaXplX3QgaWR4ID0gbV9jbHVzdGVyQ291bnQgLSAxOyAgICAKKyAgICBDbHVzdGVyKiBjb25zdCBwQ2x1c3RlciA9IG1fY2x1c3RlcnNbaWR4XTsKKyAgICBhc3NlcnQocENsdXN0ZXIpOworICAgICAgICAKKyAgICByZXR1cm4gcENsdXN0ZXI7Cit9CisKKwordW5zaWduZWQgbG9uZyBTZWdtZW50OjpHZXRDb3VudCgpIGNvbnN0Cit7CisgICAgLy9UT0RPOiBtX2NsdXN0ZXJDb3VudCBzaG91bGQgbm90IGJlIGxvbmcgbG9uZy4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9jbHVzdGVyQ291bnQpOworfQorCisKK0NsdXN0ZXIqIFNlZ21lbnQ6OkdldE5leHQoY29uc3QgQ2x1c3RlciogcEN1cnIpCit7CisgICAgYXNzZXJ0KHBDdXJyKTsKKyAgICBhc3NlcnQocEN1cnIgIT0gJm1fZW9zKTsKKyAgICBhc3NlcnQobV9jbHVzdGVycyk7CisgICAgYXNzZXJ0KG1fY2x1c3RlckNvdW50ID4gMCk7CisKKyAgICBzaXplX3QgaWR4ID0gIHBDdXJyLT5tX2luZGV4OworICAgIGFzc2VydChpZHggPCBtX2NsdXN0ZXJDb3VudCk7CisgICAgYXNzZXJ0KHBDdXJyID09IG1fY2x1c3RlcnNbaWR4XSk7CisgICAgCisgICAgaWR4Kys7CisgICAgCisgICAgaWYgKGlkeCA+PSBtX2NsdXN0ZXJDb3VudCkgCisgICAgICAgIHJldHVybiAmbV9lb3M7CisgICAgICAgIAorICAgIENsdXN0ZXIqIGNvbnN0IHBOZXh0ID0gbV9jbHVzdGVyc1tpZHhdOworICAgIGFzc2VydChwTmV4dCk7CisgICAgCisgICAgcmV0dXJuIHBOZXh0OworfQorCisKK0NsdXN0ZXIqIFNlZ21lbnQ6OkdldENsdXN0ZXIobG9uZyBsb25nIHRpbWVfbnMpCit7CisgICAgaWYgKChtX2NsdXN0ZXJzID09IE5VTEwpIHx8IChtX2NsdXN0ZXJDb3VudCA8PSAwKSkKKyAgICAgICAgcmV0dXJuICZtX2VvczsKKyAgICAgICAgCisgICAgeworICAgICAgICBDbHVzdGVyKiBjb25zdCBwQ2x1c3RlciA9IG1fY2x1c3RlcnNbMF07CisgICAgICAgIGFzc2VydChwQ2x1c3Rlcik7CisgICAgICAgIGFzc2VydChwQ2x1c3Rlci0+bV9pbmRleCA9PSAwKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aW1lX25zIDw9IHBDbHVzdGVyLT5HZXRUaW1lKCkpCisgICAgICAgICAgICByZXR1cm4gcENsdXN0ZXI7CisgICAgfQorICAgIAorICAgIC8vQmluYXJ5IHNlYXJjaCBvZiBjbHVzdGVyIGFycmF5CisgICAgICAgCisgICAgc2l6ZV90IGkgPSAwOworICAgIHNpemVfdCBqID0gbV9jbHVzdGVyQ291bnQ7CisgICAgCisgICAgd2hpbGUgKGkgPCBqKQorICAgIHsKKyAgICAgICAgLy9JTlZBUklBTlQ6CisgICAgICAgIC8vWzAsIGkpIDw9IHRpbWVfbnMKKyAgICAgICAgLy9baSwgaikgPworICAgICAgICAvL1tqLCBtX2NsdXN0ZXJDb3VudCkgID4gdGltZV9ucworICAgICAgICAKKyAgICAgICAgY29uc3Qgc2l6ZV90IGsgPSBpICsgKGogLSBpKSAvIDI7CisgICAgICAgIGFzc2VydChrIDwgbV9jbHVzdGVyQ291bnQpOworCisgICAgICAgIENsdXN0ZXIqIGNvbnN0IHBDbHVzdGVyID0gbV9jbHVzdGVyc1trXTsKKyAgICAgICAgYXNzZXJ0KHBDbHVzdGVyKTsKKyAgICAgICAgYXNzZXJ0KHBDbHVzdGVyLT5tX2luZGV4ID09IGspOworICAgICAgICAKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIHQgPSBwQ2x1c3Rlci0+R2V0VGltZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKHQgPD0gdGltZV9ucykKKyAgICAgICAgICAgIGkgPSBrICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaiA9IGs7CisgICAgICAgICAgICAKKyAgICAgICAgYXNzZXJ0KGkgPD0gaik7CisgICAgfQorICAgIAorICAgIGFzc2VydChpID09IGopOworICAgIGFzc2VydChpID4gMCk7CisgICAgYXNzZXJ0KGkgPD0gbV9jbHVzdGVyQ291bnQpOworICAgIAorICAgIGNvbnN0IHNpemVfdCBrID0gaSAtIDE7CisgICAgCisgICAgQ2x1c3RlciogY29uc3QgcENsdXN0ZXIgPSBtX2NsdXN0ZXJzW2tdOworICAgIGFzc2VydChwQ2x1c3Rlcik7CisgICAgYXNzZXJ0KHBDbHVzdGVyLT5tX2luZGV4ID09IGspOworICAgIGFzc2VydChwQ2x1c3Rlci0+R2V0VGltZSgpIDw9IHRpbWVfbnMpOworICAgIAorICAgIHJldHVybiBwQ2x1c3RlcjsKK30KKworCitUcmFja3MqIFNlZ21lbnQ6OkdldFRyYWNrcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcFRyYWNrczsKK30KKworCitjb25zdCBTZWdtZW50SW5mbyogY29uc3QgU2VnbWVudDo6R2V0SW5mbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcEluZm87Cit9CisKKworbG9uZyBsb25nIFNlZ21lbnQ6OkdldER1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBhc3NlcnQobV9wSW5mbyk7CisgICAgcmV0dXJuIG1fcEluZm8tPkdldER1cmF0aW9uKCk7Cit9CisKKworU2VnbWVudEluZm86OlNlZ21lbnRJbmZvKFNlZ21lbnQqIHBTZWdtZW50LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplXykgOgorICAgIG1fcFNlZ21lbnQocFNlZ21lbnQpLAorICAgIG1fc3RhcnQoc3RhcnQpLAorICAgIG1fc2l6ZShzaXplXyksCisgICAgbV9wTXV4aW5nQXBwQXNVVEY4KE5VTEwpLAorICAgIG1fcFdyaXRpbmdBcHBBc1VURjgoTlVMTCksCisgICAgbV9wVGl0bGVBc1VURjgoTlVMTCkKK3sKKyAgICBJTWt2UmVhZGVyKiBjb25zdCBwUmVhZGVyID0gbV9wU2VnbWVudC0+bV9wUmVhZGVyOworICAgCisgICAgbG9uZyBsb25nIHBvcyA9IHN0YXJ0OworICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gc3RhcnQgKyBzaXplXzsKKyAgICAKKyAgICBtX3RpbWVjb2RlU2NhbGUgPSAxMDAwMDAwOworICAgIG1fZHVyYXRpb24gPSAwOworICAgIAorICAgIAorICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwQUQ3QjEsIG1fdGltZWNvZGVTY2FsZSkpCisgICAgICAgICAgICBhc3NlcnQobV90aW1lY29kZVNjYWxlID4gMCk7CisKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDA0ODksIG1fZHVyYXRpb24pKQorICAgICAgICAgICAgYXNzZXJ0KG1fZHVyYXRpb24gPj0gMCk7CisKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDBEODAsIG1fcE11eGluZ0FwcEFzVVRGOCkpICAgLy9bNERdWzgwXSAKKyAgICAgICAgICAgIGFzc2VydChtX3BNdXhpbmdBcHBBc1VURjgpOworCisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgxNzQxLCBtX3BXcml0aW5nQXBwQXNVVEY4KSkgIC8vWzU3XVs0MV0KKyAgICAgICAgICAgIGFzc2VydChtX3BXcml0aW5nQXBwQXNVVEY4KTsKKyAgICAgICAgICAgIAorICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4M0JBOSwgbV9wVGl0bGVBc1VURjgpKSAgICAgICAgLy9bN0JdW0E5XQorICAgICAgICAgICAgYXNzZXJ0KG1fcFRpdGxlQXNVVEY4KTsKKworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvbmcgbGVuOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICAvL2lkOworICAgICAgICAgICAgYXNzZXJ0KGlkID49IDApOworICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgICAgICAgICBhc3NlcnQoKHN0b3AgLSBwb3MpID4gMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW4gKyBzaXplOyAgLy9jb25zdW1lIHNpemUgYW5kIHBheWxvYWQKKyAgICAgICAgICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYXNzZXJ0KHBvcyA9PSBzdG9wKTsKK30KKworU2VnbWVudEluZm86On5TZWdtZW50SW5mbygpCit7CisgICAgaWYgKG1fcE11eGluZ0FwcEFzVVRGOCkKKyAgICB7CisgICAgICAgIGRlbGV0ZVtdIG1fcE11eGluZ0FwcEFzVVRGODsKKyAgICAgICAgbV9wTXV4aW5nQXBwQXNVVEY4ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobV9wV3JpdGluZ0FwcEFzVVRGOCkKKyAgICB7CisgICAgICAgIGRlbGV0ZVtdIG1fcFdyaXRpbmdBcHBBc1VURjg7CisgICAgICAgIG1fcFdyaXRpbmdBcHBBc1VURjggPSBOVUxMOworICAgIH0KKyAgIAorICAgIGlmIChtX3BUaXRsZUFzVVRGOCkKKyAgICB7CisgICAgICAgIGRlbGV0ZVtdIG1fcFRpdGxlQXNVVEY4OworICAgICAgICBtX3BUaXRsZUFzVVRGOCA9IE5VTEw7CisgICAgfQorfQorCitsb25nIGxvbmcgU2VnbWVudEluZm86OkdldFRpbWVDb2RlU2NhbGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3RpbWVjb2RlU2NhbGU7Cit9CisKKworbG9uZyBsb25nIFNlZ21lbnRJbmZvOjpHZXREdXJhdGlvbigpIGNvbnN0Cit7CisgICAgYXNzZXJ0KG1fZHVyYXRpb24gPj0gMCk7ICAgIAorICAgIGFzc2VydChtX3RpbWVjb2RlU2NhbGUgPj0gMSk7CisgICAgCisgICAgY29uc3QgZG91YmxlIGRkID0gZG91YmxlKG1fZHVyYXRpb24pICogZG91YmxlKG1fdGltZWNvZGVTY2FsZSk7CisgICAgY29uc3QgbG9uZyBsb25nIGQgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGRkKTsKKyAgICAKKyAgICByZXR1cm4gZDsKK30KKworY29uc3QgY2hhciogU2VnbWVudEluZm86OkdldE11eGluZ0FwcEFzVVRGOCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcE11eGluZ0FwcEFzVVRGODsKK30KKworY29uc3QgY2hhciogU2VnbWVudEluZm86OkdldFdyaXRpbmdBcHBBc1VURjgoKSBjb25zdAoreworICAgIHJldHVybiBtX3BXcml0aW5nQXBwQXNVVEY4OworfQorCitjb25zdCBjaGFyKiBTZWdtZW50SW5mbzo6R2V0VGl0bGVBc1VURjgoKSBjb25zdAoreworICAgIHJldHVybiBtX3BUaXRsZUFzVVRGODsKK30KKworVHJhY2s6OlRyYWNrKFNlZ21lbnQqIHBTZWdtZW50LCBjb25zdCBJbmZvJiBpKSA6CisgICAgbV9wU2VnbWVudChwU2VnbWVudCksCisgICAgbV9pbmZvKGkpCit7Cit9CisKK1RyYWNrOjp+VHJhY2soKQoreworICAgIEluZm8mIGluZm8gPSBjb25zdF9jYXN0PEluZm8mPihtX2luZm8pOworICAgIGluZm8uQ2xlYXIoKTsKK30KKworVHJhY2s6OkluZm86OkluZm8oKToKKyAgICB0eXBlKC0xKSwKKyAgICBudW1iZXIoLTEpLAorICAgIHVpZCgtMSksCisgICAgbmFtZUFzVVRGOChOVUxMKSwKKyAgICBjb2RlY0lkKE5VTEwpLAorICAgIGNvZGVjUHJpdmF0ZShOVUxMKSwKKyAgICBjb2RlY1ByaXZhdGVTaXplKDApLAorICAgIGNvZGVjTmFtZUFzVVRGOChOVUxMKQoreworfQorCit2b2lkIFRyYWNrOjpJbmZvOjpDbGVhcigpIAoreworICAgIGRlbGV0ZVtdIG5hbWVBc1VURjg7CisgICAgbmFtZUFzVVRGOCA9IE5VTEw7CisKKyAgICBkZWxldGVbXSBjb2RlY0lkOworICAgIGNvZGVjSWQgPSBOVUxMOworCisgICAgZGVsZXRlW10gY29kZWNQcml2YXRlOworICAgIGNvZGVjUHJpdmF0ZSA9IE5VTEw7CisKKyAgICBkZWxldGVbXSBjb2RlY05hbWVBc1VURjg7CisgICAgY29kZWNOYW1lQXNVVEY4ID0gTlVMTDsKK30KKworY29uc3QgQmxvY2tFbnRyeSogVHJhY2s6OkdldEVPUygpIGNvbnN0Cit7CisgICAgcmV0dXJuICZtX2VvczsKK30KKworbG9uZyBsb25nIFRyYWNrOjpHZXRUeXBlKCkgY29uc3QKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1faW5mby50eXBlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit1bnNpZ25lZCBsb25nIFRyYWNrOjpHZXROdW1iZXIoKSBjb25zdAoreworICAgIGFzc2VydChtX2luZm8ubnVtYmVyID49IDApOworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9pbmZvLm51bWJlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3QgY2hhciogVHJhY2s6OkdldE5hbWVBc1VURjgoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZm8ubmFtZUFzVVRGODsKK30KKworY29uc3QgY2hhciogVHJhY2s6OkdldENvZGVjTmFtZUFzVVRGOCgpIGNvbnN0Cit7ICAKKyAgICByZXR1cm4gbV9pbmZvLmNvZGVjTmFtZUFzVVRGODsKK30KKworCitjb25zdCBjaGFyKiBUcmFjazo6R2V0Q29kZWNJZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5mby5jb2RlY0lkOworfQorCisKK2NvbnN0IHVuc2lnbmVkIGNoYXIqIFRyYWNrOjpHZXRDb2RlY1ByaXZhdGUoc2l6ZV90ICpvcHRpb25hbFNpemUpIGNvbnN0Cit7CisgICAgaWYgKG9wdGlvbmFsU2l6ZSkgeworICAgICAgICAqb3B0aW9uYWxTaXplID0gbV9pbmZvLmNvZGVjUHJpdmF0ZVNpemU7CisgICAgfQorICAgIHJldHVybiBtX2luZm8uY29kZWNQcml2YXRlOworfQorCisKK2xvbmcgVHJhY2s6OkdldEZpcnN0KGNvbnN0IEJsb2NrRW50cnkqJiBwQmxvY2tFbnRyeSkgY29uc3QKK3sKKyAgICBDbHVzdGVyKiBjb25zdCBwQ2x1c3RlciA9IG1fcFNlZ21lbnQtPkdldEZpcnN0KCk7CisgICAgCisgICAgLy9JZiBTZWdtZW50OjpHZXRGaXJzdCByZXR1cm5zIE5VTEwsIHRoZW4gdGhpcyBtdXN0IGJlIGEgbmV0d29yayAKKyAgICAvL2Rvd25sb2FkLCBhbmQgd2UgaGF2ZW4ndCBsb2FkZWQgYW55IGNsdXN0ZXJzIHlldC4gIEluIHRoaXMgY2FzZSwKKyAgICAvL3JldHVybmluZyBOVUxMIGZyb20gVHJhY2s6OkdldEZpcnN0IG1lYW5zIHRoZSBzYW1lIHRoaW5nLgorCisgICAgaWYgKChwQ2x1c3RlciA9PSBOVUxMKSB8fCBwQ2x1c3Rlci0+RU9TKCkpCisgICAgeworICAgICAgICBwQmxvY2tFbnRyeSA9IE5VTEw7CisgICAgICAgIHJldHVybiBFX0JVRkZFUl9OT1RfRlVMTDsgIC8vcmV0dXJuIDFMIGluc3RlYWQ/CisgICAgfQorICAgICAgICAKKyAgICBwQmxvY2tFbnRyeSA9IHBDbHVzdGVyLT5HZXRGaXJzdCgpOworICAgIAorICAgIHdoaWxlIChwQmxvY2tFbnRyeSkKKyAgICB7CisgICAgICAgIGNvbnN0IEJsb2NrKiBjb25zdCBwQmxvY2sgPSBwQmxvY2tFbnRyeS0+R2V0QmxvY2soKTsKKyAgICAgICAgYXNzZXJ0KHBCbG9jayk7CisgICAgICAgIAorICAgICAgICBpZiAocEJsb2NrLT5HZXRUcmFja051bWJlcigpID09ICh1bnNpZ25lZCBsb25nKW1faW5mby5udW1iZXIpCisgICAgICAgICAgICByZXR1cm4gMEw7CisgICAgICAgICAgICAKKyAgICAgICAgcEJsb2NrRW50cnkgPSBwQ2x1c3Rlci0+R2V0TmV4dChwQmxvY2tFbnRyeSk7CisgICAgfQorICAgIAorICAgIC8vTk9URTogaWYgd2UgZ2V0IGhlcmUsIGl0IG1lYW5zIHRoYXQgd2UgZGlkbid0IGZpbmQgYSBibG9jayB3aXRoCisgICAgLy9hIG1hdGNoaW5nIHRyYWNrIG51bWJlci4gIFdlIGludGVycHJldCB0aGF0IGFzIGFuIGVycm9yICh3aGljaAorICAgIC8vbWlnaHQgYmUgdG9vIGNvbnNlcnZhdGl2ZSkuCisKKyAgICBwQmxvY2tFbnRyeSA9IEdldEVPUygpOyAgLy9zbyB3ZSBjYW4gcmV0dXJuIGEgbm9uLU5VTEwgdmFsdWUKKyAgICByZXR1cm4gMUw7Cit9CisKKworbG9uZyBUcmFjazo6R2V0TmV4dChjb25zdCBCbG9ja0VudHJ5KiBwQ3VyckVudHJ5LCBjb25zdCBCbG9ja0VudHJ5KiYgcE5leHRFbnRyeSkgY29uc3QKK3sKKyAgICBhc3NlcnQocEN1cnJFbnRyeSk7CisgICAgYXNzZXJ0KCFwQ3VyckVudHJ5LT5FT1MoKSk7ICAvLz8KKyAgICBhc3NlcnQocEN1cnJFbnRyeS0+R2V0QmxvY2soKS0+R2V0VHJhY2tOdW1iZXIoKSA9PSAodW5zaWduZWQgbG9uZyltX2luZm8ubnVtYmVyKTsgICAgCisgICAgCisgICAgY29uc3QgQ2x1c3RlciogY29uc3QgcEN1cnJDbHVzdGVyID0gcEN1cnJFbnRyeS0+R2V0Q2x1c3RlcigpOworICAgIGFzc2VydChwQ3VyckNsdXN0ZXIpOworICAgIGFzc2VydCghcEN1cnJDbHVzdGVyLT5FT1MoKSk7CisgICAgCisgICAgcE5leHRFbnRyeSA9IHBDdXJyQ2x1c3Rlci0+R2V0TmV4dChwQ3VyckVudHJ5KTsKKyAgICAgICAgICAgIAorICAgIHdoaWxlIChwTmV4dEVudHJ5KQorICAgIHsgICAgCisgICAgICAgIGNvbnN0IEJsb2NrKiBjb25zdCBwTmV4dEJsb2NrID0gcE5leHRFbnRyeS0+R2V0QmxvY2soKTsKKyAgICAgICAgYXNzZXJ0KHBOZXh0QmxvY2spOworICAgIAorICAgICAgICBpZiAocE5leHRCbG9jay0+R2V0VHJhY2tOdW1iZXIoKSA9PSAodW5zaWduZWQgbG9uZyltX2luZm8ubnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIDBMOworICAgICAgICAgICAgCisgICAgICAgIHBOZXh0RW50cnkgPSBwQ3VyckNsdXN0ZXItPkdldE5leHQocE5leHRFbnRyeSk7CisgICAgfQorCisgICAgU2VnbWVudCogcFNlZ21lbnQgPSBwQ3VyckNsdXN0ZXItPm1fcFNlZ21lbnQ7ICAgIAorICAgIENsdXN0ZXIqIGNvbnN0IHBOZXh0Q2x1c3RlciA9IHBTZWdtZW50LT5HZXROZXh0KHBDdXJyQ2x1c3Rlcik7CisgICAgCisgICAgaWYgKChwTmV4dENsdXN0ZXIgPT0gTlVMTCkgfHwgcE5leHRDbHVzdGVyLT5FT1MoKSkKKyAgICB7CisgICAgICAgIGlmIChwU2VnbWVudC0+VW5wYXJzZWQoKSA8PSAwKSAgIC8vYWxsIGNsdXN0ZXJzIGhhdmUgYmVlbiBsb2FkZWQKKyAgICAgICAgeworICAgICAgICAgICAgcE5leHRFbnRyeSA9IEdldEVPUygpOworICAgICAgICAgICAgcmV0dXJuIDFMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwTmV4dEVudHJ5ID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIEVfQlVGRkVSX05PVF9GVUxMOworICAgIH0KKyAgICAgICAgCisgICAgcE5leHRFbnRyeSA9IHBOZXh0Q2x1c3Rlci0+R2V0Rmlyc3QoKTsKKyAgICAKKyAgICB3aGlsZSAocE5leHRFbnRyeSkKKyAgICB7CisgICAgICAgIGNvbnN0IEJsb2NrKiBjb25zdCBwTmV4dEJsb2NrID0gcE5leHRFbnRyeS0+R2V0QmxvY2soKTsKKyAgICAgICAgYXNzZXJ0KHBOZXh0QmxvY2spOworICAgICAgICAKKyAgICAgICAgaWYgKHBOZXh0QmxvY2stPkdldFRyYWNrTnVtYmVyKCkgPT0gKHVuc2lnbmVkIGxvbmcpbV9pbmZvLm51bWJlcikKKyAgICAgICAgICAgIHJldHVybiAwTDsKKyAgICAgICAgICAgIAorICAgICAgICBwTmV4dEVudHJ5ID0gcE5leHRDbHVzdGVyLT5HZXROZXh0KHBOZXh0RW50cnkpOworICAgIH0KKyAgICAKKyAgICAvL1RPRE86IHdoYXQgaGFzIGhhcHBlbmVkIGhlcmUgaXMgdGhhdCB3ZSBkaWQgbm90IGZpbmQgYSBibG9jaworICAgIC8vd2l0aCBhIG1hdGNoaW5nIHRyYWNrIG51bWJlciBvbiB0aGUgbmV4dCBjbHVzdGVyLiAgSXQgbWlnaHQKKyAgICAvL2JlIHRoZSBjYXNlIHRoYXQgc29tZSBjbHVzdGVyIGJleW9uZCB0aGUgbmV4dCBjbHVzdGVyIAorICAgIC8vY29udGFpbnMgYSBibG9jayBoYXZpbmcgYSBtYXRjaGluZyB0cmFjayBudW1iZXIsIGJ1dCBmb3IKKyAgICAvL25vdyB3ZSB0ZXJtaW5hdGUgdGhlIHNlYXJjaCBpbW1lZGlhdGVseS4gIFdlIGRvIHRoaXMgc28gdGhhdAorICAgIC8vd2UgZG9uJ3QgZW5kIHVwIHNlYXJjaGluZyB0aGUgZW50aXJlIGZpbGUgbG9va2luZyBmb3IgdGhlCisgICAgLy9uZXh0IGJsb2NrLiAgQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0byB0cnkgc2VhcmNoaW5nIGZvciB0aGUgbmV4dAorICAgIC8vYmxvY2sgaW4gYSBzbWFsbCwgZml4ZWQgbnVtYmVyIG9mIGNsdXN0ZXJzIChpbnRlYWQgc2VhcmNoaW5nCisgICAgLy9qdXN0IHRoZSBuZXh0IG9uZSksIG9yIHRvIHRlcm1pbmF0ZSB0aGUgc2VhcmNoIHdoZW4gd2hlbiB0aGUKKyAgICAvL3RoZXJlIGlzIGEgbGFyZ2UgZ2FwIGluIHRpbWUsIG9yIGxhcmdlIGdhcCBpbiBmaWxlIHBvc2l0aW9uLiAgSXQKKyAgICAvL21pZ2h0IHZlcnkgd2VsbCBiZSB0aGUgY2FzZSB0aGF0IHRoZSBhcHByb2FjaCB3ZSB1c2UgaGVyZSBpcworICAgIC8vdW5uZWNlc3NhcmlseSBjb25zZXJ2YXRpdmUuCisgICAgCisgICAgLy9UT0RPOiBhZ2FpbiwgaGVyZSdzIGEgY2FzZSB3aGVyZSB3ZSBuZWVkIHRvIHJldHVybiB0aGUgc3BlY2lhbAorICAgIC8vRU9TIGJsb2NrLiAgT3Igc29tZXRoaW5nLiAgSXQncyBPSyBpZiBwTmV4dCBpcyBOVUxMLCBiZWNhdXNlCisgICAgLy93ZSBvbmx5IG5lZWQgaXQgdG8gc2V0IHRoZSBzdG9wIHRpbWUgb2YgdGhlIG1lZGlhIHNhbXBsZS4KKyAgICAvLyhUaGUgc3RhcnQgdGltZSBpcyBkZXRlcm1pbmVkIGZyb20gcEN1cnIsIHdoaWNoIGlzIG5vbi1OVUxMCisgICAgLy9hbmQgbm9uLUVPUy4pICBUaGUgcHJvYmxlbSBpcyB3aGVuIHdlIHNldCBwQ3Vycj1wTmV4dDsgd2hlbgorICAgIC8vcEN1cnIgaGFzIHRoZSB2YWx1ZSBOVUxMIHdlIGludGVycHJldCB0aGF0IHRvIG1lYW4gdGhhdCB3ZQorICAgIC8vaGF2ZW4ndCBmdWxseSBpbml0aWFsaXplZCBwQ3VyciBhbmQgd2UgYXR0ZW1wdCB0byBzZXQgaXQgdG8KKyAgICAvL3BvaW50IHRvIHRoZSBmaXJzdCBibG9jayBmb3IgdGhpcyB0cmFjay4gIEJ1dCB0aGF0J3Mgbm90IHdoYXQKKyAgICAvL3dlIHdhbnQgYXQgYWxsOyB3ZSB3YW50IHRoZSBuZXh0IGNhbGwgdG8gUG9wdWxhdGVTYW1wbGUgdG8KKyAgICAvL3JldHVybiBlbmQtb2Ytc3RyZWFtLCBub3QgKHJlKXN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZy4KKyAgICAvLworICAgIC8vT25lIHdvcmstYXJvdW5kIGlzIHRvIHNlbmQgRU9TIGltbWVkaWF0ZWx5LiAgV2Ugd291bGQgc2VuZCAKKyAgICAvL3RoZSBFT1MgdGhlIG5leHQgcGFzcyBhbnl3YXksIHNvIG1heWJlIGl0J3Mgbm8gZ3JlYXQgbG9zcy4gIFRoZSAKKyAgICAvL29ubHkgcHJvYmxlbSBpcyB0aGF0IGlmIHRoaXMgdGhlIHN0cmVhbSByZWFsbHkgZG9lcyBlbmQgb25lCisgICAgLy9jbHVzdGVyIGVhcmx5IChyZWxhdGl2ZSB0byBvdGhlciB0cmFja3MpLCBvciB0aGUgbGFzdCBmcmFtZQorICAgIC8vaGFwcGVucyB0byBiZSBhIGtleWZyYW1lICgiQ2FuU2Vla1RvRW5kIikuCisgICAgLy8KKyAgICAvL1RoZSBwcm9ibGVtIGlzIHRoYXQgd2UgbmVlZCBhIHdheSB0byBtYXJrIGFzIHN0cmVhbSBhcworICAgIC8vImF0IGVuZCBvZiBzdHJlYW0iIHdpdGhvdXQgYWN0dWFsbHkgYmVpbmcgYXQgZW5kIG9mIHN0cmVhbS4KKyAgICAvL1dlIG5lZWQgdG8gZ2l2ZSBwQ3VyciBzb21lIHZhbHVlIHRoYXQgbWVhbnMgInlvdSd2ZSByZWFjaGVkIEVPUyIuCisgICAgLy9XZSBjYW4ndCBzeW50aGVzaXplIHRoZSBzcGVjaWFsIEVPUyBDbHVzdGVyIGltbWVkaWF0ZWx5CisgICAgLy8od2hlbiB3ZSBmaXJzdCBvcGVuIHRoZSBmaWxlLCBzYXkpLCBiZWNhdXNlIHdlIHVzZSB0aGUgZXhpc3RhbmNlCisgICAgLy9vZiB0aGF0IHNwZWNpYWwgY2x1c3RlciB2YWx1ZSB0byBtZWFuIHRoYXQgd2UndmUgcmVhZCBhbGwgb2YgCisgICAgLy90aGUgY2x1c3RlcnMgKHRoaXMgaXMgYSBuZXR3b3JrIGRvd25sb2FkLCBzbyB3ZSBjYW4ndCBrbm93IGFwcmlvcmkKKyAgICAvL2hvdyBtYW55IHdlIGhhdmUpLgorICAgIC8vCisgICAgLy9Pciwgd2UgY291bGQgcmV0dXJuIEVfRkFJTCwgYW5kIHNldCBhbm90aGVyIGJpdCBpbiB0aGUgc3RyZWFtCisgICAgLy9vYmplY3QgaXRzZWxmLCB0byBpbmRpY2F0ZSB0aGF0IGl0IHNob3VsZCBzZW5kIEVPUyBlYXJsaWVyCisgICAgLy90aGFuIHdoZW4gKHBDdXJyPXBTdG9wKS4KKyAgICAvLworICAgIC8vT3IsIHByb2JhYmx5IHRoZSBiZXN0IHNvbHV0aW9uLCB3aGVuIHdlIGFjdHVhbGx5IGxvYWQgdGhlIAorICAgIC8vYmxvY2tzIGludG8gYSBjbHVzdGVyOiBpZiB3ZSBub3RpY2UgdGhhdCB0aGVyZSdzIG5vIGJsb2NrCisgICAgLy9mb3IgYSB0cmFjaywgd2Ugc3ludGhlc2l6ZSBhIG5vbmNlIEVPUyBibG9jayBmb3IgdGhhdCB0cmFjay4KKyAgICAvL1RoYXQgd2F5IHdlIGFsd2F5cyBoYXZlIHNvbWV0aGluZyB0byByZXR1cm4uICBCdXQgdGhhdCB3aWxsCisgICAgLy9vbmx5IHdvcmsgZm9yIHNlcXVlbnRpYWwgc2Nhbj8/PworCisgICAgLy9wTmV4dCA9IE5VTEw7ICAgIAorICAgIC8vcmV0dXJuIEVfRkFJTDsKKyAgICBwTmV4dEVudHJ5ID0gR2V0RU9TKCk7CisgICAgcmV0dXJuIDFMOworfQorCisKK1RyYWNrOjpFT1NCbG9jazo6RU9TQmxvY2soKQoreworfQorCisKK2Jvb2wgVHJhY2s6OkVPU0Jsb2NrOjpFT1MoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCisKK0NsdXN0ZXIqIFRyYWNrOjpFT1NCbG9jazo6R2V0Q2x1c3RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc2l6ZV90IFRyYWNrOjpFT1NCbG9jazo6R2V0SW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCisKK2NvbnN0IEJsb2NrKiBUcmFjazo6RU9TQmxvY2s6OkdldEJsb2NrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitib29sIFRyYWNrOjpFT1NCbG9jazo6SXNCRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworCitWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFNlZ21lbnQqIHBTZWdtZW50LCBjb25zdCBJbmZvJiBpKSA6CisgICAgVHJhY2socFNlZ21lbnQsIGkpLAorICAgIG1fd2lkdGgoLTEpLAorICAgIG1faGVpZ2h0KC0xKSwKKyAgICBtX3JhdGUoLTEpCit7CisgICAgYXNzZXJ0KGkudHlwZSA9PSAxKTsKKyAgICBhc3NlcnQoaS5udW1iZXIgPiAwKTsKKyAgICAKKyAgICBJTWt2UmVhZGVyKiBjb25zdCBwUmVhZGVyID0gcFNlZ21lbnQtPm1fcFJlYWRlcjsKKyAgICAKKyAgICBjb25zdCBTZXR0aW5ncyYgcyA9IGkuc2V0dGluZ3M7CisgICAgYXNzZXJ0KHMuc3RhcnQgPj0gMCk7CisgICAgYXNzZXJ0KHMuc2l6ZSA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgcG9zID0gcy5zdGFydDsKKyAgICBhc3NlcnQocG9zID49IDApOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gcG9zICsgcy5zaXplOworICAgIAorICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyNpZmRlZiBfREVCVUcKKyAgICAgICAgbG9uZyBsZW47CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgYXNzZXJ0KGlkID49IDApOyAgLy9UT0RPOiBoYW5kbGUgZXJyb3IgY2FzZQorICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisjZW5kaWYKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgzMCwgbV93aWR0aCkpICAgICAgICAgCisgICAgICAgICAgICA7CisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgzQSwgbV9oZWlnaHQpKSAgIAorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDM4M0UzLCBtX3JhdGUpKSAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChpZCA+PSAwKTsgIC8vVE9ETzogaGFuZGxlIGVycm9yIGNhc2UKKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7ICAvL1RPRE86IGhhbmRsZSBlcnJvciBjYXNlCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUKKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgc2l6ZSkgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vcG9zIG5vdyBkZXNpZ25hdGVzIHN0YXJ0IG9mIHBheWxvYWQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICAgICAgYXNzZXJ0KHBvcyA8PSBzdG9wKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm47Cit9CisKKworYm9vbCBWaWRlb1RyYWNrOjpWZXRFbnRyeShjb25zdCBCbG9ja0VudHJ5KiBwQmxvY2tFbnRyeSkgY29uc3QKK3sKKyAgICBhc3NlcnQocEJsb2NrRW50cnkpOworICAgIAorICAgIGNvbnN0IEJsb2NrKiBjb25zdCBwQmxvY2sgPSBwQmxvY2tFbnRyeS0+R2V0QmxvY2soKTsKKyAgICBhc3NlcnQocEJsb2NrKTsgICAgCisgICAgYXNzZXJ0KHBCbG9jay0+R2V0VHJhY2tOdW1iZXIoKSA9PSAodW5zaWduZWQgbG9uZyltX2luZm8ubnVtYmVyKTsKKyAgICAKKyAgICByZXR1cm4gcEJsb2NrLT5Jc0tleSgpOworfQorCisKKworbG9uZyBsb25nIFZpZGVvVHJhY2s6OkdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30KKworCitsb25nIGxvbmcgVmlkZW9UcmFjazo6R2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oZWlnaHQ7Cit9CisKKworZG91YmxlIFZpZGVvVHJhY2s6OkdldEZyYW1lUmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmF0ZTsKK30KKworCitBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKFNlZ21lbnQqIHBTZWdtZW50LCBjb25zdCBJbmZvJiBpKSA6CisgICAgVHJhY2socFNlZ21lbnQsIGkpCit7CisgICAgYXNzZXJ0KGkudHlwZSA9PSAyKTsKKyAgICBhc3NlcnQoaS5udW1iZXIgPiAwKTsKKworICAgIElNa3ZSZWFkZXIqIGNvbnN0IHBSZWFkZXIgPSBwU2VnbWVudC0+bV9wUmVhZGVyOworICAgIAorICAgIGNvbnN0IFNldHRpbmdzJiBzID0gaS5zZXR0aW5nczsKKyAgICBhc3NlcnQocy5zdGFydCA+PSAwKTsKKyAgICBhc3NlcnQocy5zaXplID49IDApOworICAgIAorICAgIGxvbmcgbG9uZyBwb3MgPSBzLnN0YXJ0OworICAgIGFzc2VydChwb3MgPj0gMCk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHN0b3AgPSBwb3MgKyBzLnNpemU7CisgICAgCisgICAgd2hpbGUgKHBvcyA8IHN0b3ApCisgICAgeworI2lmZGVmIF9ERUJVRworICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICBhc3NlcnQoaWQgPj0gMCk7ICAvL1RPRE86IGhhbmRsZSBlcnJvciBjYXNlCisgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyNlbmRpZgorICAgICAgICBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDM1LCBtX3JhdGUpKSAgICAgICAgICAgIAorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MUYsIG1fY2hhbm5lbHMpKSAgIAorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MjI2NCwgbV9iaXREZXB0aCkpICAKKyAgICAgICAgICAgIDsgICAgICAgICAgICAKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChpZCA+PSAwKTsgIC8vVE9ETzogaGFuZGxlIGVycm9yIGNhc2UKKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7ICAvL1RPRE86IGhhbmRsZSBlcnJvciBjYXNlCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUKKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgc2l6ZSkgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vcG9zIG5vdyBkZXNpZ25hdGVzIHN0YXJ0IG9mIHBheWxvYWQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICAgICAgYXNzZXJ0KHBvcyA8PSBzdG9wKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybjsKK30KKworYm9vbCBBdWRpb1RyYWNrOjpWZXRFbnRyeShjb25zdCBCbG9ja0VudHJ5KiBwQmxvY2tFbnRyeSkgY29uc3QKK3sKKyAgICBhc3NlcnQocEJsb2NrRW50cnkpOworICAgIAorICAgIGNvbnN0IEJsb2NrKiBjb25zdCBwQmxvY2sgPSBwQmxvY2tFbnRyeS0+R2V0QmxvY2soKTsKKyAgICBhc3NlcnQocEJsb2NrKTsKKyAgICBhc3NlcnQocEJsb2NrLT5HZXRUcmFja051bWJlcigpID09ICh1bnNpZ25lZCBsb25nKW1faW5mby5udW1iZXIpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKworZG91YmxlIEF1ZGlvVHJhY2s6OkdldFNhbXBsaW5nUmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmF0ZTsKK30KKworCitsb25nIGxvbmcgQXVkaW9UcmFjazo6R2V0Q2hhbm5lbHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NoYW5uZWxzOworfQorCitsb25nIGxvbmcgQXVkaW9UcmFjazo6R2V0Qml0RGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2JpdERlcHRoOworfQorCitUcmFja3M6OlRyYWNrcyhTZWdtZW50KiBwU2VnbWVudCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZV8pIDoKKyAgICBtX3BTZWdtZW50KHBTZWdtZW50KSwKKyAgICBtX3N0YXJ0KHN0YXJ0KSwKKyAgICBtX3NpemUoc2l6ZV8pLAorICAgIG1fdHJhY2tFbnRyaWVzKE5VTEwpLAorICAgIG1fdHJhY2tFbnRyaWVzRW5kKE5VTEwpCit7CisgICAgbG9uZyBsb25nIHN0b3AgPSBtX3N0YXJ0ICsgbV9zaXplOworICAgIElNa3ZSZWFkZXIqIGNvbnN0IHBSZWFkZXIgPSBtX3BTZWdtZW50LT5tX3BSZWFkZXI7CisgICAgCisgICAgbG9uZyBsb25nIHBvczEgPSBtX3N0YXJ0OworICAgIGludCBjb3VudCA9IDA7CisgICAgCisgICAgd2hpbGUgKHBvczEgPCBzdG9wKQorICAgIHsKKyAgICAgICAgbG9uZyBsZW47CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvczEsIGxlbik7CisgICAgICAgIGFzc2VydChpZCA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KChwb3MxICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgCisgICAgICAgIHBvczEgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgICAgIAorICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KHBSZWFkZXIsIHBvczEsIGxlbik7CisgICAgICAgIGFzc2VydChzaXplID49IDApOworICAgICAgICBhc3NlcnQoKHBvczEgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAKKyAgICAgICAgcG9zMSArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUKKyAgICAgICAgCisgICAgICAgIC8vcG9zIG5vdyBkZXNpbmF0ZXMgc3RhcnQgb2YgZWxlbWVudAorICAgICAgICBpZiAoaWQgPT0gMHgyRSkgIC8vVHJhY2tFbnRyeSBJRAorICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MxICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICBhc3NlcnQocG9zMSA8PSBzdG9wKTsKKyAgICB9ICAgIAorCisgICAgaWYgKGNvdW50IDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIG1fdHJhY2tFbnRyaWVzID0gbmV3IFRyYWNrKltjb3VudF07CisgICAgbV90cmFja0VudHJpZXNFbmQgPSBtX3RyYWNrRW50cmllczsKKworICAgIGxvbmcgbG9uZyBwb3MgPSBtX3N0YXJ0OworCisgICAgd2hpbGUgKHBvcyA8IHN0b3ApCisgICAgeworICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICBhc3NlcnQoaWQgPj0gMCk7CisgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgCisgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgaWQKKyAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplMSA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgYXNzZXJ0KHNpemUxID49IDApOworICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplCisgICAgICAgIAorICAgICAgICAvL3BvcyBub3cgZGVzaW5hdGVzIHN0YXJ0IG9mIGVsZW1lbnQKKyAgICAgICAgCisgICAgICAgIGlmIChpZCA9PSAweDJFKSAgLy9UcmFja0VudHJ5IElECisgICAgICAgICAgICBQYXJzZVRyYWNrRW50cnkocG9zLCBzaXplMSwgKm1fdHJhY2tFbnRyaWVzRW5kKyspOworICAgICAgICAgICAgCisgICAgICAgIHBvcyArPSBzaXplMTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisgICAgfSAgICAKK30KKwordW5zaWduZWQgbG9uZyBUcmFja3M6OkdldFRyYWNrc0NvdW50KCkgY29uc3QKK3sKKyAgICBjb25zdCBwdHJkaWZmX3QgcmVzdWx0ID0gbV90cmFja0VudHJpZXNFbmQgLSBtX3RyYWNrRW50cmllczsKKyAgICBhc3NlcnQocmVzdWx0ID49IDApOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihyZXN1bHQpOworfQorCisKK3ZvaWQgVHJhY2tzOjpQYXJzZVRyYWNrRW50cnkoCisgICAgbG9uZyBsb25nIHN0YXJ0LAorICAgIGxvbmcgbG9uZyBzaXplLAorICAgIFRyYWNrKiYgcFRyYWNrKQoreworICAgIElNa3ZSZWFkZXIqIGNvbnN0IHBSZWFkZXIgPSBtX3BTZWdtZW50LT5tX3BSZWFkZXI7CisgICAgCisgICAgbG9uZyBsb25nIHBvcyA9IHN0YXJ0OworICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gc3RhcnQgKyBzaXplOworCisgICAgVHJhY2s6OkluZm8gaTsKKyAgICAKKyAgICBUcmFjazo6U2V0dGluZ3MgdmlkZW9TZXR0aW5nczsKKyAgICB2aWRlb1NldHRpbmdzLnN0YXJ0ID0gLTE7CisgICAgCisgICAgVHJhY2s6OlNldHRpbmdzIGF1ZGlvU2V0dGluZ3M7CisgICAgYXVkaW9TZXR0aW5ncy5zdGFydCA9IC0xOworICAgIAorICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyNpZmRlZiBfREVCVUcKKyAgICAgICAgbG9uZyBsZW47CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgbGVuOworICAgICAgICBpZDsKKyNlbmRpZgorICAgICAgICBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDU3LCBpLm51bWJlcikpCisgICAgICAgICAgICBhc3NlcnQoaS5udW1iZXIgPiAwKTsKKworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MzNDNSwgaS51aWQpKSAgICAgICAgICAgCisgICAgICAgICAgICA7ICAKKworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDMsIGkudHlwZSkpICAgICAgICAgICAgCisgICAgICAgICAgICA7ICAKKworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MTM2RSwgaS5uYW1lQXNVVEY4KSkgICAgICAgICAgCisgICAgICAgICAgICBhc3NlcnQoaS5uYW1lQXNVVEY4KTsgIAorCisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwNiwgaS5jb2RlY0lkKSkgICAgICAgICAKKyAgICAgICAgICAgIDsgIAorCisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgyM0EyLCBpLmNvZGVjUHJpdmF0ZSwgJmkuY29kZWNQcml2YXRlU2l6ZSkpICAKKyAgICAgICAgICAgIDsgIAorCisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwNTg2ODgsIGkuY29kZWNOYW1lQXNVVEY4KSkgICAKKyAgICAgICAgICAgIGFzc2VydChpLmNvZGVjTmFtZUFzVVRGOCk7ICAKKworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvbmcgbGVuOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoaWQgPj0gMCk7ICAvL1RPRE86IGhhbmRsZSBlcnJvciBjYXNlCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgaWQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsgIC8vVE9ETzogaGFuZGxlIGVycm9yIGNhc2UKKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZQorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaWQgPT0gMHg2MCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2aWRlb1NldHRpbmdzLnN0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgdmlkZW9TZXR0aW5ncy5zaXplID0gc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGlkID09IDB4NjEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXVkaW9TZXR0aW5ncy5zdGFydCA9IHN0YXJ0OworICAgICAgICAgICAgICAgIGF1ZGlvU2V0dGluZ3Muc2l6ZSA9IHNpemU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYXNzZXJ0KHBvcyA9PSBzdG9wKTsKKyAgICAvL1RPRE86IHByb3BlcnRseSB2ZXQgaW5mby5udW1iZXIsIHRvIGVuc3VyZSBib3RoIGl0cyBleGlzdGVuY2UsCisgICAgLy9hbmQgdGhhdCBpdCBpcyB1bmlxdWUgYW1vbmcgYWxsIHRyYWNrcy4KKyAgICBhc3NlcnQoaS5udW1iZXIgPiAwKTsKKworICAgIC8vVE9ETzogdmV0IHNldHRpbmdzLCB0byBlbnN1cmUgdGhhdCB2aWRlbyBzZXR0aW5ncyAoMHg2MCkKKyAgICAvL3dlcmUgc3BlY2lmaWVkIHdoZW4gdHlwZSA9IDEsIGFuZCB0aGF0IGF1ZGlvIHNldHRpbmdzICgweDYxKQorICAgIC8vd2VyZSBzcGVjaWZpZWQgd2hlbiB0eXBlID0gMi4gICAgCisgICAgaWYgKGkudHlwZSA9PSAxKSAgLy92aWRlbworICAgIHsKKyAgICAgICAgYXNzZXJ0KGF1ZGlvU2V0dGluZ3Muc3RhcnQgPCAwKTsKKyAgICAgICAgYXNzZXJ0KHZpZGVvU2V0dGluZ3Muc3RhcnQgPj0gMCk7CisgICAgICAgIAorICAgICAgICBpLnNldHRpbmdzID0gdmlkZW9TZXR0aW5nczsKKyAgICAgICAgCisgICAgICAgIFZpZGVvVHJhY2sqIGNvbnN0IHQgPSBuZXcgVmlkZW9UcmFjayhtX3BTZWdtZW50LCBpKTsKKyAgICAgICAgYXNzZXJ0KHQpOyAgLy9UT0RPCisgICAgICAgIHBUcmFjayA9IHQ7ICAgIAorICAgIH0KKyAgICBlbHNlIGlmIChpLnR5cGUgPT0gMikgIC8vYXVkaW8KKyAgICB7CisgICAgICAgIGFzc2VydCh2aWRlb1NldHRpbmdzLnN0YXJ0IDwgMCk7CisgICAgICAgIGFzc2VydChhdWRpb1NldHRpbmdzLnN0YXJ0ID49IDApOworICAgICAgICAKKyAgICAgICAgaS5zZXR0aW5ncyA9IGF1ZGlvU2V0dGluZ3M7CisgICAgICAgIAorICAgICAgICBBdWRpb1RyYWNrKiBjb25zdCB0ID0gbmV3ICBBdWRpb1RyYWNrKG1fcFNlZ21lbnQsIGkpOworICAgICAgICBhc3NlcnQodCk7ICAvL1RPRE8KKyAgICAgICAgcFRyYWNrID0gdDsgIAorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBmb3Igbm93IHdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIHRyYWNrIHR5cGVzIHlldC4KKyAgICAgICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciB0cmFjayB0eXBlcworICAgICAgICBpLkNsZWFyKCk7CisgIAorICAgICAgICBwVHJhY2sgPSBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm47Cit9CisKKworVHJhY2tzOjp+VHJhY2tzKCkKK3sKKyAgICBUcmFjayoqIGkgPSBtX3RyYWNrRW50cmllczsKKyAgICBUcmFjayoqIGNvbnN0IGogPSBtX3RyYWNrRW50cmllc0VuZDsKKyAgICAKKyAgICB3aGlsZSAoaSAhPSBqKQorICAgIHsKKyAgICAgICAgVHJhY2sqIHBUcmFjayA9ICppKys7CisgICAgICAgIGRlbGV0ZSBwVHJhY2s7CisgICAgICAgIHBUcmFjayA9IE5VTEw7ICAgIAorICAgIH0KKworICAgIGRlbGV0ZVtdIG1fdHJhY2tFbnRyaWVzOworfQorCisKK1RyYWNrKiBUcmFja3M6OkdldFRyYWNrQnlOdW1iZXIodW5zaWduZWQgbG9uZyB0bikgY29uc3QKK3sKKyAgICBUcmFjayoqIGkgPSBtX3RyYWNrRW50cmllczsKKyAgICBUcmFjayoqIGNvbnN0IGogPSBtX3RyYWNrRW50cmllc0VuZDsKKworICAgIHdoaWxlIChpICE9IGopCisgICAgeworICAgICAgICBUcmFjayogY29uc3QgcFRyYWNrID0gKmkrKzsKKyAgICAgICAKKyAgICAgICAgaWYgKHBUcmFjayA9PSBOVUxMKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHRuID09IHBUcmFjay0+R2V0TnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gcFRyYWNrOworICAgIH0KKworICAgIHJldHVybiBOVUxMOyAgLy9ub3QgZm91bmQKK30KKworCitUcmFjayogVHJhY2tzOjpHZXRUcmFja0J5SW5kZXgodW5zaWduZWQgbG9uZyBpZHgpIGNvbnN0Cit7CisgICAgY29uc3QgcHRyZGlmZl90IGNvdW50ID0gbV90cmFja0VudHJpZXNFbmQgLSBtX3RyYWNrRW50cmllczsKKyAgICAgICAKKyAgICBpZiAoaWR4ID49IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGNvdW50KSkKKyAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIG1fdHJhY2tFbnRyaWVzW2lkeF07Cit9CisKKwordm9pZCBDbHVzdGVyOjpMb2FkKCkKK3sKKyAgICBhc3NlcnQobV9wU2VnbWVudCk7CisgICAgCisgICAgaWYgKG1fc3RhcnQgPiAwKQorICAgIHsKKyAgICAgICAgYXNzZXJ0KG1fc2l6ZSA+IDApOworICAgICAgICBhc3NlcnQobV90aW1lY29kZSA+PSAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhc3NlcnQobV9zaXplID09IDApOworICAgIGFzc2VydChtX3RpbWVjb2RlIDwgMCk7CisgICAgCisgICAgSU1rdlJlYWRlciogY29uc3QgcFJlYWRlciA9IG1fcFNlZ21lbnQtPm1fcFJlYWRlcjsKKworICAgIGNvbnN0IGxvbmcgbG9uZyBvZmYgPSAtbV9zdGFydDsgIC8vcmVsYXRpdmUgdG8gc2VnbWVudAorICAgIGxvbmcgbG9uZyBwb3MgPSBtX3BTZWdtZW50LT5tX3N0YXJ0ICsgb2ZmOyAgLy9hYnNvbHV0ZQorICAgIAorICAgIGxvbmcgbGVuOworCisgICAgY29uc3QgbG9uZyBsb25nIGlkXyA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoaWRfID49IDApOworICAgIGFzc2VydChpZF8gPT0gMHgwRjQzQjY3NSk7ICAvL0NsdXN0ZXIgSUQKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNpemVfID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChzaXplXyA+PSAwKTsKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIHNpemUKKyAgICAKKyAgICBtX3N0YXJ0ID0gcG9zOworICAgIG1fc2l6ZSA9IHNpemVfOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gbV9zdGFydCArIHNpemVfOworICAgIAorICAgIGxvbmcgbG9uZyB0aW1lY29kZSA9IC0xOworICAgIAorICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHg2NywgdGltZWNvZGUpKQorICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KGlkID49IDApOyAgLy9UT0RPCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgaWQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsgIC8vVE9ETworICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIHNpemUKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlkID09IDB4MjApICAvL0Jsb2NrR3JvdXAgSUQKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChpZCA9PSAweDIzKSAgLy9TaW1wbGVCbG9jayBJRAorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisgICAgYXNzZXJ0KHRpbWVjb2RlID49IDApOworICAgIAorICAgIG1fdGltZWNvZGUgPSB0aW1lY29kZTsKK30KKworCitDbHVzdGVyKiBDbHVzdGVyOjpQYXJzZSgKKyAgICBTZWdtZW50KiBwU2VnbWVudCwKKyAgICBzaXplX3QgaWR4LAorICAgIGxvbmcgbG9uZyBvZmYpCit7CisgICAgYXNzZXJ0KHBTZWdtZW50KTsKKyAgICBhc3NlcnQob2ZmID49IDApOworICAgIGFzc2VydChvZmYgPCBwU2VnbWVudC0+bV9zaXplKTsKKyAgICBDbHVzdGVyKiBjb25zdCBwQ2x1c3RlciA9IG5ldyBDbHVzdGVyKHBTZWdtZW50LCBpZHgsIC1vZmYpOworICAgIGFzc2VydChwQ2x1c3Rlcik7CisgICAgCisgICAgcmV0dXJuIHBDbHVzdGVyOworfQorCisKK0NsdXN0ZXI6OkNsdXN0ZXIoKSA6CisgICAgbV9wU2VnbWVudChOVUxMKSwKKyAgICBtX2luZGV4KDApLAorICAgIG1fc3RhcnQoMCksCisgICAgbV9zaXplKDApLAorICAgIG1fdGltZWNvZGUoMCksCisgICAgbV9wRW50cmllcyhOVUxMKSwKKyAgICBtX2VudHJpZXNDb3VudCgwKQoreworfQorCitDbHVzdGVyOjpDbHVzdGVyKAorICAgIFNlZ21lbnQqIHBTZWdtZW50LAorICAgIHNpemVfdCBpZHgsCisgICAgbG9uZyBsb25nIG9mZikgOgorICAgIG1fcFNlZ21lbnQocFNlZ21lbnQpLAorICAgIG1faW5kZXgoaWR4KSwKKyAgICBtX3N0YXJ0KG9mZiksCisgICAgbV9zaXplKDApLAorICAgIG1fdGltZWNvZGUoLTEpLAorICAgIG1fcEVudHJpZXMoTlVMTCksCisgICAgbV9lbnRyaWVzQ291bnQoMCkKK3sKK30KKworCitDbHVzdGVyOjp+Q2x1c3RlcigpCit7CisjaWYgMAorICAgIHdoaWxlICghbV9wRW50cmllcy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgQmxvY2tFbnRyeSogcEJsb2NrRW50cnkgPSBtX3BFbnRyaWVzLmZyb250KCk7CisgICAgICAgIGFzc2VydChwQmxvY2tFbnRyeSk7CisgICAgICAgIAorICAgICAgICBtX3BFbnRyaWVzLnBvcF9mcm9udCgpOworICAgICAgICBkZWxldGUgcEJsb2NrRW50cnk7CisgICAgfQorI2Vsc2UKKyAgICBCbG9ja0VudHJ5KiogaSA9IG1fcEVudHJpZXM7CisgICAgQmxvY2tFbnRyeSoqIGNvbnN0IGogPSBtX3BFbnRyaWVzICsgbV9lbnRyaWVzQ291bnQ7CisgICAgd2hpbGUgKGkgIT0gaikKKyAgICB7CisgICAgICAgICBCbG9ja0VudHJ5KiBwID0gKmkrKzsKKyAgIAorICAgICAgICAgYXNzZXJ0KHApOworICAgICAgICAgZGVsZXRlIHA7CisgICAgfQorIAorICAgIGRlbGV0ZVtdIG1fcEVudHJpZXM7CisjZW5kaWYKKworfQorCitib29sIENsdXN0ZXI6OkVPUygpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3BTZWdtZW50ID09IDApOworfQorCisKK3ZvaWQgQ2x1c3Rlcjo6TG9hZEJsb2NrRW50cmllcygpCit7CisgICAgaWYgKG1fcEVudHJpZXMpCisgICAgICAgIHJldHVybjsKKworICAgIExvYWQoKTsgICAgCisgICAgYXNzZXJ0KG1fdGltZWNvZGUgPj0gMCk7CisgICAgYXNzZXJ0KG1fc3RhcnQgPiAwKTsKKyAgICBhc3NlcnQobV9zaXplID4gMCk7CisgICAgCisgICAgSU1rdlJlYWRlciogY29uc3QgcFJlYWRlciA9IG1fcFNlZ21lbnQtPm1fcFJlYWRlcjsKKyAgICAKKyAgICBsb25nIGxvbmcgcG9zID0gbV9zdGFydDsKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IG1fc3RhcnQgKyBtX3NpemU7CisgICAgbG9uZyBsb25nIHRpbWVjb2RlID0gLTE7CisgICAKKyAgICBsb25nIGxvbmcgaWR4ID0gcG9zOworCisgICAgbV9lbnRyaWVzQ291bnQgPSAwOworICAgIAorICAgIHdoaWxlIChpZHggPCBzdG9wKQorICAgIHsKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIGlkeCwgMHg2NywgdGltZWNvZGUpKQorICAgICAgICAgICAgYXNzZXJ0KHRpbWVjb2RlID09IG1fdGltZWNvZGUpOworICAgICAgICBlbHNlIAorICAgICAgICB7CisgICAgICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgaWR4LCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KGlkID49IDApOyAgLy9UT0RPCisgICAgICAgICAgICBhc3NlcnQoKGlkeCArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlkeCArPSBsZW47ICAvL2NvbnN1bWUgaWQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBpZHgsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsgIC8vVE9ETworICAgICAgICAgICAgYXNzZXJ0KChpZHggKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZHggKz0gbGVuOyAgLy9jb25zdW1lIHNpemUKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlkID09IDB4MjApICAvL0Jsb2NrR3JvdXAgSUQKKyAgICAgICAgICAgICAgICArK21fZW50cmllc0NvdW50OworICAgICAgICAgICAgZWxzZSBpZiAoaWQgPT0gMHgyMykgIC8vU2ltcGxlQmxvY2sgSUQKKyAgICAgICAgICAgICAgICArK21fZW50cmllc0NvdW50OworCisgICAgICAgICAgICBpZHggKz0gc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisKKyAgICAgICAgICAgIGFzc2VydChpZHggPD0gc3RvcCk7CisgICAgICAgIH0gIAorICAgIH0KKworICAgIGlmIChtX2VudHJpZXNDb3VudCA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgIAorICAgIG1fcEVudHJpZXMgPSBuZXcgQmxvY2tFbnRyeSpbbV9lbnRyaWVzQ291bnRdOworICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgCisgICAgd2hpbGUgKHBvcyA8IHN0b3ApCisgICAgeworICAgICAgICBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDY3LCB0aW1lY29kZSkpCisgICAgICAgICAgICBhc3NlcnQodGltZWNvZGUgPT0gbV90aW1lY29kZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbG9uZyBsZW47CisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoaWQgPj0gMCk7ICAvL1RPRE8KKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChzaXplID49IDApOyAgLy9UT0RPCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgc2l6ZQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaWQgPT0gMHgyMCkgIC8vQmxvY2tHcm91cCBJRAorICAgICAgICAgICAgICAgIFBhcnNlQmxvY2tHcm91cChwb3MsIHNpemUsIGluZGV4KyspOworICAgICAgICAgICAgZWxzZSBpZiAoaWQgPT0gMHgyMykgIC8vU2ltcGxlQmxvY2sgSUQKKyAgICAgICAgICAgICAgICBQYXJzZVNpbXBsZUJsb2NrKHBvcywgc2l6ZSwgaW5kZXgrKyk7CisKKyAgICAgICAgICAgIHBvcyArPSBzaXplOyAgLy9jb25zdW1lIHBheWxvYWQKKyAgICAgICAgICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYXNzZXJ0KHBvcyA9PSBzdG9wKTsKKyAgICBhc3NlcnQodGltZWNvZGUgPj0gMCk7CisgICAgYXNzZXJ0KGluZGV4ID09IG1fZW50cmllc0NvdW50KTsKK30KKworCisKK2xvbmcgbG9uZyBDbHVzdGVyOjpHZXRUaW1lQ29kZSgpCit7CisgICAgTG9hZCgpOworICAgIHJldHVybiBtX3RpbWVjb2RlOworfQorCisKK2xvbmcgbG9uZyBDbHVzdGVyOjpHZXRUaW1lKCkKK3sKKyAgICBjb25zdCBsb25nIGxvbmcgdGMgPSBHZXRUaW1lQ29kZSgpOworICAgIGFzc2VydCh0YyA+PSAwKTsKKyAgICAKKyAgICBjb25zdCBTZWdtZW50SW5mbyogY29uc3QgcEluZm8gPSBtX3BTZWdtZW50LT5HZXRJbmZvKCk7CisgICAgYXNzZXJ0KHBJbmZvKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2NhbGUgPSBwSW5mby0+R2V0VGltZUNvZGVTY2FsZSgpOworICAgIGFzc2VydChzY2FsZSA+PSAxKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgdCA9IG1fdGltZWNvZGUgKiBzY2FsZTsKKworICAgIHJldHVybiB0OworfQorCisKK3ZvaWQgQ2x1c3Rlcjo6UGFyc2VCbG9ja0dyb3VwKGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIHNpemUsIHNpemVfdCBpbmRleCkKK3sKKyAgICBhc3NlcnQobV9wRW50cmllcyk7CisgICAgYXNzZXJ0KG1fZW50cmllc0NvdW50KTsKKyAgICBhc3NlcnQoaW5kZXggPCBtX2VudHJpZXNDb3VudCk7CisgICAgCisgICAgQmxvY2tHcm91cCogY29uc3QgcEdyb3VwID0gbmV3IEJsb2NrR3JvdXAodGhpcywgaW5kZXgsIHN0YXJ0LCBzaXplKTsKKyAgICBhc3NlcnQocEdyb3VwKTsgIC8vVE9ETworICAgICAgICAKKyAgICBtX3BFbnRyaWVzW2luZGV4XSA9IHBHcm91cDsKK30KKworCisKK3ZvaWQgQ2x1c3Rlcjo6UGFyc2VTaW1wbGVCbG9jayhsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplLCBzaXplX3QgaW5kZXgpCit7CisgICAgYXNzZXJ0KG1fcEVudHJpZXMpOworICAgIGFzc2VydChtX2VudHJpZXNDb3VudCk7CisgICAgYXNzZXJ0KGluZGV4IDwgbV9lbnRyaWVzQ291bnQpOworCisgICAgU2ltcGxlQmxvY2sqIGNvbnN0IHBTaW1wbGVCbG9jayA9IG5ldyBTaW1wbGVCbG9jayh0aGlzLCBpbmRleCwgc3RhcnQsIHNpemUpOworICAgIGFzc2VydChwU2ltcGxlQmxvY2spOyAgLy9UT0RPCisgICAgICAgIAorICAgIG1fcEVudHJpZXNbaW5kZXhdID0gcFNpbXBsZUJsb2NrOworfQorCisKK2NvbnN0IEJsb2NrRW50cnkqIENsdXN0ZXI6OkdldEZpcnN0KCkKK3sKKyAgICBMb2FkQmxvY2tFbnRyaWVzKCk7CisgICAgCisgICAgcmV0dXJuIG1fcEVudHJpZXNbMF07Cit9CisKKyAgICAgICAgCitjb25zdCBCbG9ja0VudHJ5KiBDbHVzdGVyOjpHZXRMYXN0KCkKK3sgCisgICAgaWYgKG1fZW50cmllc0NvdW50ID09IDApCisgICAgICAgIHJldHVybiBtX3BFbnRyaWVzWzBdOworICAgIAorICAgIHJldHVybiBtX3BFbnRyaWVzW21fZW50cmllc0NvdW50LTFdOworfQorCisgICAgICAgIAorY29uc3QgQmxvY2tFbnRyeSogQ2x1c3Rlcjo6R2V0TmV4dChjb25zdCBCbG9ja0VudHJ5KiBwRW50cnkpIGNvbnN0Cit7CisgICAgYXNzZXJ0KHBFbnRyeSk7CisgICAgCisgICAgc2l6ZV90IGlkeCA9IHBFbnRyeS0+R2V0SW5kZXgoKTsKKyAgICAKKyAgICArK2lkeDsKKworICAgIGlmIChpZHggPT0gbV9lbnRyaWVzQ291bnQpIAorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gbV9wRW50cmllc1tpZHhdOworCit9CisKKworY29uc3QgQmxvY2tFbnRyeSogQ2x1c3Rlcjo6R2V0RW50cnkoY29uc3QgVHJhY2sqIHBUcmFjaykKK3sKKworICAgIGFzc2VydChwVHJhY2spOworICAgIAorICAgIGlmIChtX3BTZWdtZW50ID09IE5VTEwpICAvL0VPUworICAgICAgICByZXR1cm4gcFRyYWNrLT5HZXRFT1MoKTsKKyAgICAKKyAgICBMb2FkQmxvY2tFbnRyaWVzKCk7CisgICAgCisgICAgQmxvY2tFbnRyeSogaSA9ICptX3BFbnRyaWVzOworICAgIEJsb2NrRW50cnkqIGogPSAqbV9wRW50cmllcyArIG1fZW50cmllc0NvdW50OworICAgIHdoaWxlIChpICE9IGopCisgICAgeworICAgICAgICBCbG9ja0VudHJ5KiBwRW50cnkgPSBpOworICAgICAgICBpKys7CisgICAgICAgIGFzc2VydChwRW50cnkpOworICAgICAgICBhc3NlcnQoIXBFbnRyeS0+RU9TKCkpOworICAgICAgICAKKyAgICAgICAgY29uc3QgQmxvY2sqIGNvbnN0IHBCbG9jayA9IHBFbnRyeS0+R2V0QmxvY2soKTsKKyAgICAgICAgYXNzZXJ0KHBCbG9jayk7CisgICAgICAgIAorICAgICAgICBpZiAocEJsb2NrLT5HZXRUcmFja051bWJlcigpICE9IHBUcmFjay0+R2V0TnVtYmVyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAocFRyYWNrLT5WZXRFbnRyeShwRW50cnkpKQorICAgICAgICAgICAgcmV0dXJuIHBFbnRyeTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHBUcmFjay0+R2V0RU9TKCk7ICAvL25vIHNhdGlzZmFjdG9yeSBibG9jayBmb3VuZAorfQorCisKK0Jsb2NrRW50cnk6OkJsb2NrRW50cnkoKQoreworfQorCisKK0Jsb2NrRW50cnk6On5CbG9ja0VudHJ5KCkKK3sKK30KKworCisKK1NpbXBsZUJsb2NrOjpTaW1wbGVCbG9jaygKKyAgICBDbHVzdGVyKiBwQ2x1c3RlciwgCisgICAgc2l6ZV90IGlkeCwgCisgICAgbG9uZyBsb25nIHN0YXJ0LCAKKyAgICBsb25nIGxvbmcgc2l6ZSkgOgorICAgIG1fcENsdXN0ZXIocENsdXN0ZXIpLAorICAgIG1faW5kZXgoaWR4KSwKKyAgICBtX2Jsb2NrKHN0YXJ0LCBzaXplLCBwQ2x1c3Rlci0+bV9wU2VnbWVudC0+bV9wUmVhZGVyKQoreworfQorCisKK2Jvb2wgU2ltcGxlQmxvY2s6OkVPUygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKK0NsdXN0ZXIqIFNpbXBsZUJsb2NrOjpHZXRDbHVzdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wQ2x1c3RlcjsKK30KKworCitzaXplX3QgU2ltcGxlQmxvY2s6OkdldEluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmRleDsKK30KKworCitjb25zdCBCbG9jayogU2ltcGxlQmxvY2s6OkdldEJsb2NrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJm1fYmxvY2s7Cit9CisKKworYm9vbCBTaW1wbGVCbG9jazo6SXNCRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworCitCbG9ja0dyb3VwOjpCbG9ja0dyb3VwKAorICAgIENsdXN0ZXIqIHBDbHVzdGVyLCAKKyAgICBzaXplX3QgaWR4LCAKKyAgICBsb25nIGxvbmcgc3RhcnQsIAorICAgIGxvbmcgbG9uZyBzaXplXykgOgorICAgIG1fcENsdXN0ZXIocENsdXN0ZXIpLAorICAgIG1faW5kZXgoaWR4KSwKKyAgICBtX3ByZXZUaW1lQ29kZSgwKSwKKyAgICBtX25leHRUaW1lQ29kZSgwKSwKKyAgICBtX3BCbG9jayhOVUxMKSAgLy9UT0RPOiBhY2NlcHQgbXVsdGlwbGUgYmxvY2tzIHdpdGhpbiBhIGJsb2NrIGdyb3VwCit7CisgICAgSU1rdlJlYWRlciogY29uc3QgcFJlYWRlciA9IG1fcENsdXN0ZXItPm1fcFNlZ21lbnQtPm1fcFJlYWRlcjsKKyAgICAKKyAgICBsb25nIGxvbmcgcG9zID0gc3RhcnQ7CisgICAgY29uc3QgbG9uZyBsb25nIHN0b3AgPSBzdGFydCArIHNpemVfOworIAorICAgIGJvb2wgYlNpbXBsZUJsb2NrID0gZmFsc2U7CisgICAgCisgICAgd2hpbGUgKHBvcyA8IHN0b3ApCisgICAgeworICAgICAgICBzaG9ydCB0OworICAgIAorICAgICAgICBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDdCLCB0KSkKKyAgICAgICAgeyAgICAKKyAgICAgICAgICAgIGlmICh0IDwgMCkKKyAgICAgICAgICAgICAgICBtX3ByZXZUaW1lQ29kZSA9IHQ7CisgICAgICAgICAgICBlbHNlIGlmICh0ID4gMCkKKyAgICAgICAgICAgICAgICBtX25leHRUaW1lQ29kZSA9IHQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvbmcgbGVuOworICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KGlkID49IDApOyAgLy9UT0RPCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgSUQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsgIC8vVE9ETworICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIHNpemUKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChpZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIDB4MjM6ICAvL1NpbXBsZUJsb2NrIElECisgICAgICAgICAgICAgICAgICAgIGJTaW1wbGVCbG9jayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIC8vWUVTLCBGQUxMIFRIUk9VR0ggVE8gTkVYVCBDQVNFCisKKyAgICAgICAgICAgICAgICBjYXNlIDB4MjE6ICAvL0Jsb2NrIElECisgICAgICAgICAgICAgICAgICAgIFBhcnNlQmxvY2socG9zLCBzaXplKTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGFzc2VydChwb3MgPT0gc3RvcCk7CisgICAgYXNzZXJ0KG1fcEJsb2NrKTsKKyAgICAKKyAgICBpZiAoIWJTaW1wbGVCbG9jaykKKyAgICAgICAgbV9wQmxvY2stPlNldEtleShtX3ByZXZUaW1lQ29kZSA+PSAwKTsKK30KKworCitCbG9ja0dyb3VwOjp+QmxvY2tHcm91cCgpCit7CisgICAgZGVsZXRlIG1fcEJsb2NrOworfQorCisKK3ZvaWQgQmxvY2tHcm91cDo6UGFyc2VCbG9jayhsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplKQoreyAgIAorICAgIElNa3ZSZWFkZXIqIGNvbnN0IHBSZWFkZXIgPSBtX3BDbHVzdGVyLT5tX3BTZWdtZW50LT5tX3BSZWFkZXI7CisgICAgCisgICAgQmxvY2sqIGNvbnN0IHBCbG9jayA9IG5ldyBCbG9jayhzdGFydCwgc2l6ZSwgcFJlYWRlcik7CisgICAgYXNzZXJ0KHBCbG9jayk7ICAvL1RPRE8KKworICAgIC8vVE9ETzogdGhlIE1hdHJvc2thIHNwZWMgc2F5cyB5b3UgaGF2ZSBtdWx0aXBsZSBibG9ja3Mgd2l0aGluIHRoZSAKKyAgICAvL3NhbWUgYmxvY2sgZ3JvdXAsIHdpdGggYmxvY2tzIHJhbmtlZCBieSBwcmlvcml0eSAodGhlIGZsYWcgYml0cykuCisgICAgLy9JIGhhdmVuJ3QgZXZlciBzZWVuIHN1Y2ggYSBmaWxlIChta3ZtdXggY2VydGFpbmx5IGRvZXNuJ3QgbWFrZQorICAgIC8vb25lKSwgc28gdW50aWwgdGhlbiBJJ2xsIGp1c3QgYXNzdW1lIGJsb2NrIGdyb3VwcyBjb250YWluIGEgc2luZ2xlCisgICAgLy9ibG9jay4KKyNpZiAwICAgIAorICAgIG1fYmxvY2tzLnB1c2hfYmFjayhwQmxvY2spOworI2Vsc2UKKyAgICBhc3NlcnQobV9wQmxvY2sgPT0gTlVMTCk7CisgICAgbV9wQmxvY2sgPSBwQmxvY2s7CisjZW5kaWYKKworI2lmIDAKKyAgICBUcmFjayogY29uc3QgcFRyYWNrID0gcEJsb2NrLT5HZXRUcmFjaygpOworICAgIGFzc2VydChwVHJhY2spOworICAgIAorICAgIHBUcmFjay0+SW5zZXJ0KHBCbG9jayk7CisjZW5kaWYKK30KKworCitib29sIEJsb2NrR3JvdXA6OkVPUygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKK0NsdXN0ZXIqIEJsb2NrR3JvdXA6OkdldENsdXN0ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BDbHVzdGVyOworfQorCisKK3NpemVfdCBCbG9ja0dyb3VwOjpHZXRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5kZXg7Cit9CisKKworY29uc3QgQmxvY2sqIEJsb2NrR3JvdXA6OkdldEJsb2NrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wQmxvY2s7Cit9CisKKworc2hvcnQgQmxvY2tHcm91cDo6R2V0UHJldlRpbWVDb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcmV2VGltZUNvZGU7Cit9CisKKworc2hvcnQgQmxvY2tHcm91cDo6R2V0TmV4dFRpbWVDb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uZXh0VGltZUNvZGU7Cit9ICAgIAorCisKK2Jvb2wgQmxvY2tHcm91cDo6SXNCRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiAobV9uZXh0VGltZUNvZGUgPiAwKTsKK30KKworCisKK0Jsb2NrOjpCbG9jayhsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplXywgSU1rdlJlYWRlciogcFJlYWRlcikgOgorICAgIG1fc3RhcnQoc3RhcnQpLAorICAgIG1fc2l6ZShzaXplXykKK3sKKyAgICBsb25nIGxvbmcgcG9zID0gc3RhcnQ7CisgICAgY29uc3QgbG9uZyBsb25nIHN0b3AgPSBzdGFydCArIHNpemVfOworCisgICAgbG9uZyBsZW47CisgICAgCisgICAgbV90cmFjayA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQobV90cmFjayA+IDApOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIHRyYWNrIG51bWJlcgorICAgIGFzc2VydCgoc3RvcCAtIHBvcykgPj0gMik7CisgICAgCisgICAgbV90aW1lY29kZSA9IFVuc2VyaWFsaXplMlNJbnQocFJlYWRlciwgcG9zKTsKKworICAgIHBvcyArPSAyOworICAgIGFzc2VydCgoc3RvcCAtIHBvcykgPj0gMSk7CisgICAgCisgICAgY29uc3QgbG9uZyBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAmbV9mbGFncyk7CisgICAgYXNzZXJ0KGhyID09IDBMKTsKKworICAgICsrcG9zOworICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisgICAgCisgICAgbV9mcmFtZU9mZiA9IHBvczsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgZnJhbWVfc2l6ZSA9IHN0b3AgLSBwb3M7CisKKyAgICBhc3NlcnQoZnJhbWVfc2l6ZSA8PSAyMTQ3NDgzNjQ3TCk7CisgICAgCisgICAgbV9mcmFtZVNpemUgPSBzdGF0aWNfY2FzdDxsb25nPihmcmFtZV9zaXplKTsKK30KKworCitsb25nIGxvbmcgQmxvY2s6OkdldFRpbWVDb2RlKENsdXN0ZXIqIHBDbHVzdGVyKSBjb25zdAoreworICAgIGFzc2VydChwQ2x1c3Rlcik7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHRjMCA9IHBDbHVzdGVyLT5HZXRUaW1lQ29kZSgpOworICAgIGFzc2VydCh0YzAgPj0gMCk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHRjID0gdGMwICsgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX3RpbWVjb2RlKTsKKyAgICBhc3NlcnQodGMgPj0gMCk7CisgICAgCisgICAgcmV0dXJuIHRjOyAgLy91bnNjYWxlZCB0aW1lY29kZSB1bml0cworfQorCisKK2xvbmcgbG9uZyBCbG9jazo6R2V0VGltZShDbHVzdGVyKiBwQ2x1c3RlcikgY29uc3QKK3sKKyAgICBhc3NlcnQocENsdXN0ZXIpOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyB0YyA9IEdldFRpbWVDb2RlKHBDbHVzdGVyKTsKKyAgICAKKyAgICBjb25zdCBTZWdtZW50KiBjb25zdCBwU2VnbWVudCA9IHBDbHVzdGVyLT5tX3BTZWdtZW50OworICAgIGNvbnN0IFNlZ21lbnRJbmZvKiBjb25zdCBwSW5mbyA9IHBTZWdtZW50LT5HZXRJbmZvKCk7CisgICAgYXNzZXJ0KHBJbmZvKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2NhbGUgPSBwSW5mby0+R2V0VGltZUNvZGVTY2FsZSgpOworICAgIGFzc2VydChzY2FsZSA+PSAxKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgbnMgPSB0YyAqIHNjYWxlOworCisgICAgcmV0dXJuIG5zOworfQorCisKK3Vuc2lnbmVkIGxvbmcgQmxvY2s6OkdldFRyYWNrTnVtYmVyKCkgY29uc3QKK3sKKyAgICBhc3NlcnQobV90cmFjayA+IDApOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX3RyYWNrKTsKK30KKworCitib29sIEJsb2NrOjpJc0tleSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICgobV9mbGFncyAmIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgNykpICE9IDApOworfQorCisKK3ZvaWQgQmxvY2s6OlNldEtleShib29sIGJLZXkpCit7CisgICAgaWYgKGJLZXkpCisgICAgICAgIG1fZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCA3KTsKKyAgICBlbHNlCisgICAgICAgIG1fZmxhZ3MgJj0gMHg3RjsKK30KKworCitsb25nIEJsb2NrOjpHZXRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZVNpemU7Cit9CisKKworbG9uZyBCbG9jazo6UmVhZChJTWt2UmVhZGVyKiBwUmVhZGVyLCB1bnNpZ25lZCBjaGFyKiBidWYpIGNvbnN0Cit7CisKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KGJ1Zik7CisgICAgCisgICAgY29uc3QgbG9uZyBociA9IHBSZWFkZXItPlJlYWQobV9mcmFtZU9mZiwgbV9mcmFtZVNpemUsIGJ1Zik7CisgICAgCisgICAgcmV0dXJuIGhyOworfQorCisKK30gIC8vZW5kIG5hbWVzcGFjZSBta3ZwYXJzZXIKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL21rdnBhcnNlci5ocHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9ta3ZwYXJzZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzExYjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9ta3ZwYXJzZXIuaHBwCkBAIC0wLDAgKzEsNDI4IEBACisjaWZuZGVmIE1LVlBBUlNFUl9IUFAKKyNkZWZpbmUgTUtWUEFSU0VSX0hQUAorCisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxjc3RkaW8+CisKK25hbWVzcGFjZSBta3ZwYXJzZXIKK3sKKworY29uc3QgaW50IEVfRklMRV9GT1JNQVRfSU5WQUxJRCA9IC0yOworY29uc3QgaW50IEVfQlVGRkVSX05PVF9GVUxMID0gLTM7CisKK2NsYXNzIElNa3ZSZWFkZXIKK3sKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGludCBSZWFkKGxvbmcgbG9uZyBwb3NpdGlvbiwgbG9uZyBsZW5ndGgsIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlcikgPSAwOworICAgIHZpcnR1YWwgaW50IExlbmd0aChsb25nIGxvbmcqIHRvdGFsLCBsb25nIGxvbmcqIGF2YWlsYWJsZSkgPSAwOyAJCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+SU1rdlJlYWRlcigpOworfTsKKworbG9uZyBsb25nIEdldFVJbnRMZW5ndGgoSU1rdlJlYWRlciosIGxvbmcgbG9uZywgbG9uZyYpOworbG9uZyBsb25nIFJlYWRVSW50KElNa3ZSZWFkZXIqLCBsb25nIGxvbmcsIGxvbmcmKTsKK2xvbmcgbG9uZyBTeW5jUmVhZFVJbnQoSU1rdlJlYWRlciosIGxvbmcgbG9uZyBwb3MsIGxvbmcgbG9uZyBzdG9wLCBsb25nJik7Citsb25nIGxvbmcgVW5zZXJpYWxpemVVSW50KElNa3ZSZWFkZXIqLCBsb25nIGxvbmcgcG9zLCBsb25nIGxvbmcgc2l6ZSk7CitmbG9hdCBVbnNlcmlhbGl6ZTRGbG9hdChJTWt2UmVhZGVyKiwgbG9uZyBsb25nKTsKK2RvdWJsZSBVbnNlcmlhbGl6ZThEb3VibGUoSU1rdlJlYWRlciosIGxvbmcgbG9uZyk7CitzaG9ydCBVbnNlcmlhbGl6ZTJTSW50KElNa3ZSZWFkZXIqLCBsb25nIGxvbmcpOworc2lnbmVkIGNoYXIgVW5zZXJpYWxpemUxU0ludChJTWt2UmVhZGVyKiwgbG9uZyBsb25nKTsKK2Jvb2wgTWF0Y2goSU1rdlJlYWRlciosIGxvbmcgbG9uZyYsIHVuc2lnbmVkIGxvbmcsIGxvbmcgbG9uZyYpOworYm9vbCBNYXRjaChJTWt2UmVhZGVyKiwgbG9uZyBsb25nJiwgdW5zaWduZWQgbG9uZywgY2hhciomKTsKK2Jvb2wgTWF0Y2goSU1rdlJlYWRlciosIGxvbmcgbG9uZyYsIHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhciomLAorICAgICAgICAgICBzaXplX3QgKm9wdGlvbmFsU2l6ZSA9IE5VTEwpOworYm9vbCBNYXRjaChJTWt2UmVhZGVyKiwgbG9uZyBsb25nJiwgdW5zaWduZWQgbG9uZywgZG91YmxlJik7Citib29sIE1hdGNoKElNa3ZSZWFkZXIqLCBsb25nIGxvbmcmLCB1bnNpZ25lZCBsb25nLCBzaG9ydCYpOworCisKK3N0cnVjdCBFQk1MSGVhZGVyCit7CisgICAgRUJNTEhlYWRlcigpOworICAgIH5FQk1MSGVhZGVyKCk7ICAKKyAgICBsb25nIGxvbmcgbV92ZXJzaW9uOworICAgIGxvbmcgbG9uZyBtX3JlYWRWZXJzaW9uOworICAgIGxvbmcgbG9uZyBtX21heElkTGVuZ3RoOworICAgIGxvbmcgbG9uZyBtX21heFNpemVMZW5ndGg7CisgICAgY2hhciogbV9kb2NUeXBlOworICAgIGxvbmcgbG9uZyBtX2RvY1R5cGVWZXJzaW9uOworICAgIGxvbmcgbG9uZyBtX2RvY1R5cGVSZWFkVmVyc2lvbjsKKyAgICAKKyAgICBsb25nIGxvbmcgUGFyc2UoSU1rdlJlYWRlciosIGxvbmcgbG9uZyYpOworfTsKKworCitjbGFzcyBTZWdtZW50OworY2xhc3MgVHJhY2s7CitjbGFzcyBDbHVzdGVyOworCitjbGFzcyBCbG9jaworeworICAgIEJsb2NrKGNvbnN0IEJsb2NrJik7CisgICAgQmxvY2smIG9wZXJhdG9yPShjb25zdCBCbG9jayYpOworCitwdWJsaWM6CisgICAgY29uc3QgbG9uZyBsb25nIG1fc3RhcnQ7CisgICAgY29uc3QgbG9uZyBsb25nIG1fc2l6ZTsKKyAgICAKKyAgICBCbG9jayhsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplLCBJTWt2UmVhZGVyKik7CisgICAgCisgICAgdW5zaWduZWQgbG9uZyBHZXRUcmFja051bWJlcigpIGNvbnN0OworICAgIAorICAgIGxvbmcgbG9uZyBHZXRUaW1lQ29kZShDbHVzdGVyKikgY29uc3Q7ICAvL2Fic29sdXRlLCBidXQgbm90IHNjYWxlZAorICAgIGxvbmcgbG9uZyBHZXRUaW1lKENsdXN0ZXIqKSBjb25zdDsgICAgICAvL2Fic29sdXRlLCBhbmQgc2NhbGVkIChuYW5vc2Vjb25kIHVuaXRzKQorICAgIGJvb2wgSXNLZXkoKSBjb25zdDsKKyAgICB2b2lkIFNldEtleShib29sKTsKKworICAgIGxvbmcgR2V0U2l6ZSgpIGNvbnN0OworICAgIGxvbmcgUmVhZChJTWt2UmVhZGVyKiwgdW5zaWduZWQgY2hhciopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBsb25nIGxvbmcgbV90cmFjazsgICAvL1RyYWNrOjpOdW1iZXIoKQorICAgIHNob3J0IG1fdGltZWNvZGU7ICAvL3JlbGF0aXZlIHRvIGNsdXN0ZXIKKyAgICB1bnNpZ25lZCBjaGFyIG1fZmxhZ3M7CisgICAgbG9uZyBsb25nIG1fZnJhbWVPZmY7CisgICAgbG9uZyBtX2ZyYW1lU2l6ZTsgICAgCisKK307CisKKworY2xhc3MgQmxvY2tFbnRyeQoreworICAgIEJsb2NrRW50cnkoY29uc3QgQmxvY2tFbnRyeSYpOworICAgIEJsb2NrRW50cnkmIG9wZXJhdG9yPShjb25zdCBCbG9ja0VudHJ5Jik7CisgICAgCitwdWJsaWM6CisgICAgdmlydHVhbCB+QmxvY2tFbnRyeSgpOworICAgIHZpcnR1YWwgYm9vbCBFT1MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBDbHVzdGVyKiBHZXRDbHVzdGVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc2l6ZV90IEdldEluZGV4KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQmxvY2sqIEdldEJsb2NrKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBJc0JGcmFtZSgpIGNvbnN0ID0gMDsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBCbG9ja0VudHJ5KCk7CisKK307CisKKworY2xhc3MgU2ltcGxlQmxvY2sgOiBwdWJsaWMgQmxvY2tFbnRyeQoreworICAgIFNpbXBsZUJsb2NrKGNvbnN0IFNpbXBsZUJsb2NrJik7CisgICAgU2ltcGxlQmxvY2smIG9wZXJhdG9yPShjb25zdCBTaW1wbGVCbG9jayYpOworCitwdWJsaWM6CisgICAgU2ltcGxlQmxvY2soQ2x1c3RlciosIHNpemVfdCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZSk7CisKKyAgICBib29sIEVPUygpIGNvbnN0OworICAgIENsdXN0ZXIqIEdldENsdXN0ZXIoKSBjb25zdDsgCisgICAgc2l6ZV90IEdldEluZGV4KCkgY29uc3Q7CisgICAgY29uc3QgQmxvY2sqIEdldEJsb2NrKCkgY29uc3Q7CisgICAgYm9vbCBJc0JGcmFtZSgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgQ2x1c3RlciogY29uc3QgbV9wQ2x1c3RlcjsKKyAgICBjb25zdCBzaXplX3QgbV9pbmRleDsKKyAgICBCbG9jayBtX2Jsb2NrOworICAgIAorfTsKKworCitjbGFzcyBCbG9ja0dyb3VwIDogcHVibGljIEJsb2NrRW50cnkKK3sKKyAgICBCbG9ja0dyb3VwKGNvbnN0IEJsb2NrR3JvdXAmKTsKKyAgICBCbG9ja0dyb3VwJiBvcGVyYXRvcj0oY29uc3QgQmxvY2tHcm91cCYpOworCitwdWJsaWM6CisgICAgQmxvY2tHcm91cChDbHVzdGVyKiwgc2l6ZV90LCBsb25nIGxvbmcsIGxvbmcgbG9uZyk7CisgICAgfkJsb2NrR3JvdXAoKTsKKyAgICAKKyAgICBib29sIEVPUygpIGNvbnN0OworICAgIENsdXN0ZXIqIEdldENsdXN0ZXIoKSBjb25zdDsgCisgICAgc2l6ZV90IEdldEluZGV4KCkgY29uc3Q7CisgICAgY29uc3QgQmxvY2sqIEdldEJsb2NrKCkgY29uc3Q7CisgICAgYm9vbCBJc0JGcmFtZSgpIGNvbnN0OworICAgIAorICAgIHNob3J0IEdldFByZXZUaW1lQ29kZSgpIGNvbnN0OyAgLy9yZWxhdGl2ZSB0byBibG9jaydzIHRpbWUKKyAgICBzaG9ydCBHZXROZXh0VGltZUNvZGUoKSBjb25zdDsgIC8vYXMgYWJvdmUKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBDbHVzdGVyKiBjb25zdCBtX3BDbHVzdGVyOworICAgIGNvbnN0IHNpemVfdCBtX2luZGV4OworICAgIAorcHJpdmF0ZToKKyAgICBCbG9ja0dyb3VwKENsdXN0ZXIqLCBzaXplX3QsIHVuc2lnbmVkIGxvbmcpOworICAgIHZvaWQgUGFyc2VCbG9jayhsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplKTsKKworICAgIHNob3J0IG1fcHJldlRpbWVDb2RlOworICAgIHNob3J0IG1fbmV4dFRpbWVDb2RlOworICAgIAorICAgIC8vVE9ETzogdGhlIE1hdHJvc2thIHNwZWMgc2F5cyB5b3UgY2FuIGhhdmUgbXVsdGlwbGUgYmxvY2tzIHdpdGhpbiB0aGUgCisgICAgLy9zYW1lIGJsb2NrIGdyb3VwLCB3aXRoIGJsb2NrcyByYW5rZWQgYnkgcHJpb3JpdHkgKHRoZSBmbGFnIGJpdHMpLgorICAgIC8vRm9yIG5vdyB3ZSBqdXN0IGNhY2hlIGEgc2luZ2xlIGJsb2NrLgorI2lmIDAKKyAgICB0eXBlZGVmIHN0ZDo6ZGVxdWU8QmxvY2sqPiBibG9ja3NfdDsKKyAgICBibG9ja3NfdCBtX2Jsb2NrczsgIC8vSW4gcHJhY3RpY2Ugc2hvdWxkIGNvbnRhaW4gb25seSBhIHNpbmdsZSBlbGVtZW50LgorI2Vsc2UKKyAgICBCbG9jayogbV9wQmxvY2s7CisjZW5kaWYKKyAgICAKK307CisKKworY2xhc3MgVHJhY2sKK3sKKyAgICBUcmFjayhjb25zdCBUcmFjayYpOworICAgIFRyYWNrJiBvcGVyYXRvcj0oY29uc3QgVHJhY2smKTsKKworcHVibGljOiAgICAKKyAgICBTZWdtZW50KiBjb25zdCBtX3BTZWdtZW50OworICAgIHZpcnR1YWwgflRyYWNrKCk7CisgICAgCisgICAgbG9uZyBsb25nIEdldFR5cGUoKSBjb25zdDsgCisgICAgdW5zaWduZWQgbG9uZyBHZXROdW1iZXIoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBHZXROYW1lQXNVVEY4KCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogR2V0Q29kZWNOYW1lQXNVVEY4KCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogR2V0Q29kZWNJZCgpIGNvbnN0OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIEdldENvZGVjUHJpdmF0ZSgKKyAgICAgICAgICAgIHNpemVfdCAqb3B0aW9uYWxTaXplID0gTlVMTCkgY29uc3Q7CisgICAgCisgICAgY29uc3QgQmxvY2tFbnRyeSogR2V0RU9TKCkgY29uc3Q7CisgICAgCisgICAgc3RydWN0IFNldHRpbmdzIAorICAgIHsKKyAgICAgICAgbG9uZyBsb25nIHN0YXJ0OworICAgICAgICBsb25nIGxvbmcgc2l6ZTsKKyAgICB9OworICAgIAorICAgIHN0cnVjdCBJbmZvCisgICAgeworICAgICAgICBsb25nIGxvbmcgdHlwZTsKKyAgICAgICAgbG9uZyBsb25nIG51bWJlcjsKKyAgICAgICAgbG9uZyBsb25nIHVpZDsKKyAgICAgICAgY2hhciogbmFtZUFzVVRGODsKKyAgICAgICAgY2hhciogY29kZWNJZDsKKyAgICAgICAgdW5zaWduZWQgY2hhciogY29kZWNQcml2YXRlOworICAgICAgICBzaXplX3QgY29kZWNQcml2YXRlU2l6ZTsKKyAgICAgICAgY2hhciogY29kZWNOYW1lQXNVVEY4OworICAgICAgICBTZXR0aW5ncyBzZXR0aW5nczsKKyAgICAgICAgSW5mbygpOworICAgICAgICB2b2lkIENsZWFyKCk7CisgICAgfTsKKyAgICAKKyAgICBsb25nIEdldEZpcnN0KGNvbnN0IEJsb2NrRW50cnkqJikgY29uc3Q7CisgICAgbG9uZyBHZXROZXh0KGNvbnN0IEJsb2NrRW50cnkqIHBDdXJyLCBjb25zdCBCbG9ja0VudHJ5KiYgcE5leHQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBWZXRFbnRyeShjb25zdCBCbG9ja0VudHJ5KikgY29uc3QgPSAwOworICAgICAgICAKK3Byb3RlY3RlZDoKKyAgICBUcmFjayhTZWdtZW50KiwgY29uc3QgSW5mbyYpOyAgICAgICAgCisgICAgY29uc3QgSW5mbyBtX2luZm87CisKKyAgICBjbGFzcyBFT1NCbG9jayA6IHB1YmxpYyBCbG9ja0VudHJ5CisgICAgeworICAgIHB1YmxpYzoKKyAgICAgICAgRU9TQmxvY2soKTsKKworICAgICAgICBib29sIEVPUygpIGNvbnN0OyAgICAKKyAgICAgICAgQ2x1c3RlciogR2V0Q2x1c3RlcigpIGNvbnN0OworICAgICAgICBzaXplX3QgR2V0SW5kZXgoKSBjb25zdDsKKyAgICAgICAgY29uc3QgQmxvY2sqIEdldEJsb2NrKCkgY29uc3Q7CisgICAgICAgIGJvb2wgSXNCRnJhbWUoKSBjb25zdDsKKyAgICB9OworICAgIAorICAgIEVPU0Jsb2NrIG1fZW9zOworICAgIAorfTsKKworCitjbGFzcyBWaWRlb1RyYWNrIDogcHVibGljIFRyYWNrCit7CisgICAgVmlkZW9UcmFjayhjb25zdCBWaWRlb1RyYWNrJik7CisgICAgVmlkZW9UcmFjayYgb3BlcmF0b3I9KGNvbnN0IFZpZGVvVHJhY2smKTsKKyAgICAKK3B1YmxpYzoKKyAgICBWaWRlb1RyYWNrKFNlZ21lbnQqLCBjb25zdCBJbmZvJik7ICAgIAorICAgIGxvbmcgbG9uZyBHZXRXaWR0aCgpIGNvbnN0OworICAgIGxvbmcgbG9uZyBHZXRIZWlnaHQoKSBjb25zdDsKKyAgICBkb3VibGUgR2V0RnJhbWVSYXRlKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBWZXRFbnRyeShjb25zdCBCbG9ja0VudHJ5KikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgbG9uZyBsb25nIG1fd2lkdGg7CisgICAgbG9uZyBsb25nIG1faGVpZ2h0OworICAgIGRvdWJsZSBtX3JhdGU7CisgICAgCit9OworCisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBwdWJsaWMgVHJhY2sKK3sKKyAgICBBdWRpb1RyYWNrKGNvbnN0IEF1ZGlvVHJhY2smKTsKKyAgICBBdWRpb1RyYWNrJiBvcGVyYXRvcj0oY29uc3QgQXVkaW9UcmFjayYpOworCitwdWJsaWM6CisgICAgQXVkaW9UcmFjayhTZWdtZW50KiwgY29uc3QgSW5mbyYpOyAgICAKKyAgICBkb3VibGUgR2V0U2FtcGxpbmdSYXRlKCkgY29uc3Q7CisgICAgbG9uZyBsb25nIEdldENoYW5uZWxzKCkgY29uc3Q7CisgICAgbG9uZyBsb25nIEdldEJpdERlcHRoKCkgY29uc3Q7ICAgIAorICAgIGJvb2wgVmV0RW50cnkoY29uc3QgQmxvY2tFbnRyeSopIGNvbnN0OworCitwcml2YXRlOgorICAgIGRvdWJsZSBtX3JhdGU7CisgICAgbG9uZyBsb25nIG1fY2hhbm5lbHM7CisgICAgbG9uZyBsb25nIG1fYml0RGVwdGg7Cit9OworCisKK2NsYXNzIFRyYWNrcworeworICAgIFRyYWNrcyhjb25zdCBUcmFja3MmKTsKKyAgICBUcmFja3MmIG9wZXJhdG9yPShjb25zdCBUcmFja3MmKTsKKworcHVibGljOgorICAgIFNlZ21lbnQqIGNvbnN0IG1fcFNlZ21lbnQ7CisgICAgY29uc3QgbG9uZyBsb25nIG1fc3RhcnQ7CisgICAgY29uc3QgbG9uZyBsb25nIG1fc2l6ZTsKKyAgICAKKyAgICBUcmFja3MoU2VnbWVudCosIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIHNpemUpOworICAgIHZpcnR1YWwgflRyYWNrcygpOworCisgICAgVHJhY2sqIEdldFRyYWNrQnlOdW1iZXIodW5zaWduZWQgbG9uZyB0bikgY29uc3Q7CisgICAgVHJhY2sqIEdldFRyYWNrQnlJbmRleCh1bnNpZ25lZCBsb25nIGlkeCkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIFRyYWNrKiogbV90cmFja0VudHJpZXM7IAorICAgIFRyYWNrKiogbV90cmFja0VudHJpZXNFbmQ7CisKKyAgICB2b2lkIFBhcnNlVHJhY2tFbnRyeShsb25nIGxvbmcsIGxvbmcgbG9uZywgVHJhY2sqJik7CisgICAgCitwdWJsaWM6CisgICAgdW5zaWduZWQgbG9uZyBHZXRUcmFja3NDb3VudCgpIGNvbnN0OworfTsKKworCitjbGFzcyBTZWdtZW50SW5mbworeworICAgIFNlZ21lbnRJbmZvKGNvbnN0IFNlZ21lbnRJbmZvJik7CisgICAgU2VnbWVudEluZm8mIG9wZXJhdG9yPShjb25zdCBTZWdtZW50SW5mbyYpOworICAgIAorcHVibGljOgorICAgIFNlZ21lbnQqIGNvbnN0IG1fcFNlZ21lbnQ7CisgICAgY29uc3QgbG9uZyBsb25nIG1fc3RhcnQ7CisgICAgY29uc3QgbG9uZyBsb25nIG1fc2l6ZTsKKyAgICAKKyAgICBTZWdtZW50SW5mbyhTZWdtZW50KiwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZSk7CisgICAgflNlZ21lbnRJbmZvKCk7CisgICAgbG9uZyBsb25nIEdldFRpbWVDb2RlU2NhbGUoKSBjb25zdDsKKyAgICBsb25nIGxvbmcgR2V0RHVyYXRpb24oKSBjb25zdDsgIC8vc2NhbGVkCisgICAgY29uc3QgY2hhciogR2V0TXV4aW5nQXBwQXNVVEY4KCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogR2V0V3JpdGluZ0FwcEFzVVRGOCgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIEdldFRpdGxlQXNVVEY4KCkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIGxvbmcgbG9uZyBtX3RpbWVjb2RlU2NhbGU7CisgICAgZG91YmxlIG1fZHVyYXRpb247CisgICAgY2hhciogbV9wTXV4aW5nQXBwQXNVVEY4OworICAgIGNoYXIqIG1fcFdyaXRpbmdBcHBBc1VURjg7CisgICAgY2hhciogbV9wVGl0bGVBc1VURjg7Cit9OworCisKK2NsYXNzIENsdXN0ZXIKK3sKKyAgICBDbHVzdGVyKGNvbnN0IENsdXN0ZXImKTsKKyAgICBDbHVzdGVyJiBvcGVyYXRvcj0oY29uc3QgQ2x1c3RlciYpOworCitwdWJsaWM6CisgICAgU2VnbWVudCogY29uc3QgbV9wU2VnbWVudDsKKyAgICBjb25zdCBzaXplX3QgbV9pbmRleDsKKyAgICAKK3B1YmxpYzogICAgCisgICAgc3RhdGljIENsdXN0ZXIqIFBhcnNlKFNlZ21lbnQqLCBzaXplX3QsIGxvbmcgbG9uZyBvZmYpOworCisgICAgQ2x1c3RlcigpOyAgLy9FbmRPZlN0cmVhbQorICAgIH5DbHVzdGVyKCk7CisgICAgCisgICAgYm9vbCBFT1MoKSBjb25zdDsKKyAgICAKKyAgICBsb25nIGxvbmcgR2V0VGltZUNvZGUoKTsgIC8vYWJzb2x1dGUsIGJ1dCBub3Qgc2NhbGVkCisgICAgbG9uZyBsb25nIEdldFRpbWUoKTsgICAgICAvL2Fic29sdXRlLCBhbmQgc2NhbGVkIChuYW5vc2Vjb25kIHVuaXRzKQorCisgICAgY29uc3QgQmxvY2tFbnRyeSogR2V0Rmlyc3QoKTsKKyAgICBjb25zdCBCbG9ja0VudHJ5KiBHZXRMYXN0KCk7CisgICAgY29uc3QgQmxvY2tFbnRyeSogR2V0TmV4dChjb25zdCBCbG9ja0VudHJ5KikgY29uc3Q7ICAgIAorICAgIGNvbnN0IEJsb2NrRW50cnkqIEdldEVudHJ5KGNvbnN0IFRyYWNrKik7Citwcm90ZWN0ZWQ6ICAgIAorICAgIENsdXN0ZXIoU2VnbWVudCosIHNpemVfdCwgbG9uZyBsb25nIG9mZik7CisgICAgCitwcml2YXRlOgorICAgIGxvbmcgbG9uZyBtX3N0YXJ0OworICAgIGxvbmcgbG9uZyBtX3NpemU7ICAgIAorICAgIGxvbmcgbG9uZyBtX3RpbWVjb2RlOworICAgIEJsb2NrRW50cnkqKiBtX3BFbnRyaWVzOworICAgIHNpemVfdCBtX2VudHJpZXNDb3VudDsKKyAgIAorICAgIHZvaWQgTG9hZCgpOworICAgIHZvaWQgTG9hZEJsb2NrRW50cmllcygpOworICAgIHZvaWQgUGFyc2VCbG9ja0dyb3VwKGxvbmcgbG9uZywgbG9uZyBsb25nLCBzaXplX3QpOworICAgIHZvaWQgUGFyc2VTaW1wbGVCbG9jayhsb25nIGxvbmcsIGxvbmcgbG9uZywgc2l6ZV90KTsKKyAgICAKK307CisKKworY2xhc3MgU2VnbWVudAoreworICAgIFNlZ21lbnQoY29uc3QgU2VnbWVudCYpOworICAgIFNlZ21lbnQmIG9wZXJhdG9yPShjb25zdCBTZWdtZW50Jik7CisKK3ByaXZhdGU6CisgICAgU2VnbWVudChJTWt2UmVhZGVyKiwgbG9uZyBsb25nIHBvcywgbG9uZyBsb25nIHNpemUpOworCitwdWJsaWM6CisgICAgSU1rdlJlYWRlciogY29uc3QgbV9wUmVhZGVyOworICAgIGNvbnN0IGxvbmcgbG9uZyBtX3N0YXJ0OyAgLy9wb3NuIG9mIHNlZ21lbnQgcGF5bG9hZAorICAgIGNvbnN0IGxvbmcgbG9uZyBtX3NpemU7ICAgLy9zaXplIG9mIHNlZ21lbnQgcGF5bG9hZAorICAgIENsdXN0ZXIgbV9lb3M7ICAvL1RPRE86IG1ha2UgcHJpdmF0ZT8KKyAgICAKKyAgICBzdGF0aWMgbG9uZyBsb25nIENyZWF0ZUluc3RhbmNlKElNa3ZSZWFkZXIqLCBsb25nIGxvbmcsIFNlZ21lbnQqJik7CisgICAgflNlZ21lbnQoKTsKKworICAgIC8vZm9yIGJpZy1iYW5nIGxvYWRpbmcgKHNvdXJjZSBmaWx0ZXIpCisgICAgbG9uZyBMb2FkKCk7CisKKyAgICAvL2ZvciBpbmNyZW1lbnRhbCBsb2FkaW5nIChzcGxpdHRlcikgICAgCisgICAgbG9uZyBsb25nIFVucGFyc2VkKCkgY29uc3Q7CisgICAgbG9uZyBsb25nIFBhcnNlSGVhZGVycygpOworICAgIGxvbmcgUGFyc2VDbHVzdGVyKENsdXN0ZXIqJiwgbG9uZyBsb25nJiBuZXdwb3MpIGNvbnN0OworICAgIGJvb2wgQWRkQ2x1c3RlcihDbHVzdGVyKiwgbG9uZyBsb25nKTsKKworICAgIFRyYWNrcyogR2V0VHJhY2tzKCkgY29uc3Q7ICAgIAorICAgIGNvbnN0IFNlZ21lbnRJbmZvKiBjb25zdCBHZXRJbmZvKCkgY29uc3Q7CisgICAgbG9uZyBsb25nIEdldER1cmF0aW9uKCkgY29uc3Q7CisgICAgCisgICAgLy9OT1RFOiB0aGlzIHR1cm5lZCBvdXQgdG8gYmUgdG9vIGluZWZmaWNpZW50LgorICAgIC8vbG9uZyBsb25nIExvYWQobG9uZyBsb25nIHRpbWVfbmFub3NlY29uZHMpOworCisgICAgQ2x1c3RlciogR2V0Rmlyc3QoKTsKKyAgICBDbHVzdGVyKiBHZXRMYXN0KCk7CisgICAgdW5zaWduZWQgbG9uZyBHZXRDb3VudCgpIGNvbnN0OworICAgIAorICAgIENsdXN0ZXIqIEdldE5leHQoY29uc3QgQ2x1c3RlciopOworICAgIENsdXN0ZXIqIEdldENsdXN0ZXIobG9uZyBsb25nIHRpbWVfbmFub3NlY29uZHMpOworICAgIAorcHJpdmF0ZToKKyAgICBsb25nIGxvbmcgbV9wb3M7ICAvL2Fic29sdXRlIGZpbGUgcG9zbjsgd2hhdCBoYXMgYmVlbiBjb25zdW1lZCBzbyBmYXIgICAgCisgICAgU2VnbWVudEluZm8qIG1fcEluZm87CisgICAgVHJhY2tzKiBtX3BUcmFja3M7ICAgIAorICAgIENsdXN0ZXIqKiBtX2NsdXN0ZXJzOworICAgIHNpemVfdCBtX2NsdXN0ZXJDb3VudDsKKworICAgIHZvaWQgUGFyc2VTZWVrSGVhZChsb25nIGxvbmcgcG9zLCBsb25nIGxvbmcgc2l6ZSwgc2l6ZV90Kik7CisgICAgdm9pZCBQYXJzZVNlZWtFbnRyeShsb25nIGxvbmcgcG9zLCBsb25nIGxvbmcgc2l6ZSwgc2l6ZV90Kik7CisgICAgdm9pZCBQYXJzZVNlY29uZGFyeVNlZWtIZWFkKGxvbmcgbG9uZyBvZmYsIHNpemVfdCopOworfTsKKworCit9ICAvL2VuZCBuYW1lc3BhY2UgbWt2cGFyc2VyCisKKyNlbmRpZiAgLy9NS1ZQQVJTRVJfSFBQCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FCaXRSZWFkZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BQml0UmVhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGM4ZGY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BQml0UmVhZGVyLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFCaXRSZWFkZXIuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQUJpdFJlYWRlcjo6QUJpdFJlYWRlcihjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICA6IG1EYXRhKGRhdGEpLAorICAgICAgbVNpemUoc2l6ZSksCisgICAgICBtUmVzZXJ2b2lyKDApLAorICAgICAgbU51bUJpdHNMZWZ0KDApIHsKK30KKwordm9pZCBBQml0UmVhZGVyOjpmaWxsUmVzZXJ2b2lyKCkgeworICAgIENIRUNLX0dUKG1TaXplLCAwdSk7CisKKyAgICBtUmVzZXJ2b2lyID0gMDsKKyAgICBzaXplX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBtU2l6ZSA+IDAgJiYgaSA8IDQ7ICsraSkgeworICAgICAgICBtUmVzZXJ2b2lyID0gKG1SZXNlcnZvaXIgPDwgOCkgfCAqbURhdGE7CisKKyAgICAgICAgKyttRGF0YTsKKyAgICAgICAgLS1tU2l6ZTsKKyAgICB9CisKKyAgICBtTnVtQml0c0xlZnQgPSA4ICogaTsKKyAgICBtUmVzZXJ2b2lyIDw8PSAzMiAtIG1OdW1CaXRzTGVmdDsKK30KKwordWludDMyX3QgQUJpdFJlYWRlcjo6Z2V0Qml0cyhzaXplX3QgbikgeworICAgIENIRUNLX0xFKG4sIDMydSk7CisKKyAgICB1aW50MzJfdCByZXN1bHQgPSAwOworICAgIHdoaWxlIChuID4gMCkgeworICAgICAgICBpZiAobU51bUJpdHNMZWZ0ID09IDApIHsKKyAgICAgICAgICAgIGZpbGxSZXNlcnZvaXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBtID0gbjsKKyAgICAgICAgaWYgKG0gPiBtTnVtQml0c0xlZnQpIHsKKyAgICAgICAgICAgIG0gPSBtTnVtQml0c0xlZnQ7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSAocmVzdWx0IDw8IG0pIHwgKG1SZXNlcnZvaXIgPj4gKDMyIC0gbSkpOworICAgICAgICBtUmVzZXJ2b2lyIDw8PSBtOworICAgICAgICBtTnVtQml0c0xlZnQgLT0gbTsKKworICAgICAgICBuIC09IG07CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBBQml0UmVhZGVyOjpza2lwQml0cyhzaXplX3QgbikgeworICAgIHdoaWxlIChuID4gMzIpIHsKKyAgICAgICAgZ2V0Qml0cygzMik7CisgICAgICAgIG4gLT0gMzI7CisgICAgfQorCisgICAgaWYgKG4gPiAwKSB7CisgICAgICAgIGdldEJpdHMobik7CisgICAgfQorfQorCit2b2lkIEFCaXRSZWFkZXI6OnB1dEJpdHModWludDMyX3QgeCwgc2l6ZV90IG4pIHsKKyAgICBDSEVDS19MRShtTnVtQml0c0xlZnQgKyBuLCAzMnUpOworCisgICAgbVJlc2Vydm9pciA9IChtUmVzZXJ2b2lyID4+IG4pIHwgKHggPDwgKDMyIC0gbikpOworICAgIG1OdW1CaXRzTGVmdCArPSBuOworfQorCitzaXplX3QgQUJpdFJlYWRlcjo6bnVtQml0c0xlZnQoKSBjb25zdCB7CisgICAgcmV0dXJuIG1TaXplICogOCArIG1OdW1CaXRzTGVmdDsKK30KKworY29uc3QgdWludDhfdCAqQUJpdFJlYWRlcjo6ZGF0YSgpIGNvbnN0IHsKKyAgICBDSEVDS19FUShtTnVtQml0c0xlZnQgJSA4LCAwdSk7CisKKyAgICByZXR1cm4gbURhdGEgLSBtTnVtQml0c0xlZnQgLyA4OworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BQml0UmVhZGVyLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FCaXRSZWFkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTM1MjExCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BQml0UmVhZGVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9CSVRfUkVBREVSX0hfCisKKyNkZWZpbmUgQV9CSVRfUkVBREVSX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCYXNlLmg+CisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJpdFJlYWRlciB7CisgICAgQUJpdFJlYWRlcihjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKKyAgICB1aW50MzJfdCBnZXRCaXRzKHNpemVfdCBuKTsKKyAgICB2b2lkIHNraXBCaXRzKHNpemVfdCBuKTsKKworICAgIHNpemVfdCBudW1CaXRzTGVmdCgpIGNvbnN0OworCisgICAgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0IHVpbnQ4X3QgKm1EYXRhOworICAgIHNpemVfdCBtU2l6ZTsKKworICAgIHVpbnQzMl90IG1SZXNlcnZvaXI7ICAvLyBsZWZ0LWFsaWduZWQgYml0cworICAgIHNpemVfdCBtTnVtQml0c0xlZnQ7CisKKyAgICB2b2lkIGZpbGxSZXNlcnZvaXIoKTsKKyAgICB2b2lkIHB1dEJpdHModWludDMyX3QgeCwgc2l6ZV90IG4pOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQUJpdFJlYWRlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfQklUX1JFQURFUl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BVFNQYXJzZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BVFNQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNTk3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FUU1BhcnNlci5jcHAKQEAgLTAsMCArMSw5NDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQVRTUGFyc2VyLmgiCisKKyNpbmNsdWRlICJBQml0UmVhZGVyLmgiCisjaW5jbHVkZSAiQW5vdGhlclBhY2tldFNvdXJjZS5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorI2luY2x1ZGUgPHV0aWxzL0tleWVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RhdGljIGNvbnN0IHNpemVfdCBrVFNQYWNrZXRTaXplID0gMTg4OworCitzdHJ1Y3QgQVRTUGFyc2VyOjpQcm9ncmFtIDogcHVibGljIFJlZkJhc2UgeworICAgIFByb2dyYW0odW5zaWduZWQgcHJvZ3JhbU1hcFBJRCk7CisKKyAgICBib29sIHBhcnNlUElEKAorICAgICAgICAgICAgdW5zaWduZWQgcGlkLCB1bnNpZ25lZCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yLAorICAgICAgICAgICAgQUJpdFJlYWRlciAqYnIpOworCisgICAgc3A8TWVkaWFTb3VyY2U+IGdldFNvdXJjZShTb3VyY2VUeXBlIHR5cGUpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1Qcm9ncmFtTWFwUElEOworICAgIEtleWVkVmVjdG9yPHVuc2lnbmVkLCBzcDxTdHJlYW0+ID4gbVN0cmVhbXM7CisKKyAgICB2b2lkIHBhcnNlUHJvZ3JhbU1hcChBQml0UmVhZGVyICpicik7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhQcm9ncmFtKTsKK307CisKK3N0cnVjdCBBVFNQYXJzZXI6OlN0cmVhbSA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBTdHJlYW0odW5zaWduZWQgZWxlbWVudGFyeVBJRCwgdW5zaWduZWQgc3RyZWFtVHlwZSk7CisKKyAgICB2b2lkIHBhcnNlKAorICAgICAgICAgICAgdW5zaWduZWQgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvciwKKyAgICAgICAgICAgIEFCaXRSZWFkZXIgKmJyKTsKKworICAgIHNwPE1lZGlhU291cmNlPiBnZXRTb3VyY2UoU291cmNlVHlwZSB0eXBlKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflN0cmVhbSgpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1FbGVtZW50YXJ5UElEOworICAgIHVuc2lnbmVkIG1TdHJlYW1UeXBlOworCisgICAgc3A8QUJ1ZmZlcj4gbUJ1ZmZlcjsKKyAgICBzcDxBbm90aGVyUGFja2V0U291cmNlPiBtU291cmNlOworICAgIGJvb2wgbVBheWxvYWRTdGFydGVkOworCisgICAgdm9pZCBmbHVzaCgpOworICAgIHZvaWQgcGFyc2VQRVMoQUJpdFJlYWRlciAqYnIpOworCisgICAgdm9pZCBvblBheWxvYWREYXRhKAorICAgICAgICAgICAgdW5zaWduZWQgUFRTX0RUU19mbGFncywgdWludDY0X3QgUFRTLCB1aW50NjRfdCBEVFMsCisgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhTdHJlYW0pOworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworQVRTUGFyc2VyOjpQcm9ncmFtOjpQcm9ncmFtKHVuc2lnbmVkIHByb2dyYW1NYXBQSUQpCisgICAgOiBtUHJvZ3JhbU1hcFBJRChwcm9ncmFtTWFwUElEKSB7Cit9CisKK2Jvb2wgQVRTUGFyc2VyOjpQcm9ncmFtOjpwYXJzZVBJRCgKKyAgICAgICAgdW5zaWduZWQgcGlkLCB1bnNpZ25lZCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yLAorICAgICAgICBBQml0UmVhZGVyICpicikgeworICAgIGlmIChwaWQgPT0gbVByb2dyYW1NYXBQSUQpIHsKKyAgICAgICAgaWYgKHBheWxvYWRfdW5pdF9zdGFydF9pbmRpY2F0b3IpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHNraXAgPSBici0+Z2V0Qml0cyg4KTsKKyAgICAgICAgICAgIGJyLT5za2lwQml0cyhza2lwICogOCk7CisgICAgICAgIH0KKworICAgICAgICBwYXJzZVByb2dyYW1NYXAoYnIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzc2l6ZV90IGluZGV4ID0gbVN0cmVhbXMuaW5kZXhPZktleShwaWQpOworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1TdHJlYW1zLmVkaXRWYWx1ZUF0KGluZGV4KS0+cGFyc2UoCisgICAgICAgICAgICBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yLCBicik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBVFNQYXJzZXI6OlByb2dyYW06OnBhcnNlUHJvZ3JhbU1hcChBQml0UmVhZGVyICpicikgeworICAgIHVuc2lnbmVkIHRhYmxlX2lkID0gYnItPmdldEJpdHMoOCk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHRhYmxlX2lkID0gIiA8PCB0YWJsZV9pZDsKKyAgICBDSEVDS19FUSh0YWJsZV9pZCwgMHgwMnUpOworCisgICAgdW5zaWduZWQgc2VjdGlvbl9zeW50YXhfaW5kaWN0b3IgPSBici0+Z2V0Qml0cygxKTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgc2VjdGlvbl9zeW50YXhfaW5kaWN0b3IgPSAiIDw8IHNlY3Rpb25fc3ludGF4X2luZGljdG9yOworICAgIENIRUNLX0VRKHNlY3Rpb25fc3ludGF4X2luZGljdG9yLCAxdSk7CisKKyAgICBDSEVDS19FUShici0+Z2V0Qml0cygxKSwgMHUpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICByZXNlcnZlZCA9ICIgPDwgYnItPmdldEJpdHMoMik7CisKKyAgICB1bnNpZ25lZCBzZWN0aW9uX2xlbmd0aCA9IGJyLT5nZXRCaXRzKDEyKTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgc2VjdGlvbl9sZW5ndGggPSAiIDw8IHNlY3Rpb25fbGVuZ3RoOworICAgIENIRUNLKChzZWN0aW9uX2xlbmd0aCAmIDB4YzAwKSA9PSAwKTsKKyAgICBDSEVDS19MRShzZWN0aW9uX2xlbmd0aCwgMTAyMXUpOworCisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHByb2dyYW1fbnVtYmVyID0gIiA8PCBici0+Z2V0Qml0cygxNik7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHJlc2VydmVkID0gIiA8PCBici0+Z2V0Qml0cygyKTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgdmVyc2lvbl9udW1iZXIgPSAiIDw8IGJyLT5nZXRCaXRzKDUpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICBjdXJyZW50X25leHRfaW5kaWNhdG9yID0gIiA8PCBici0+Z2V0Qml0cygxKTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgc2VjdGlvbl9udW1iZXIgPSAiIDw8IGJyLT5nZXRCaXRzKDgpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICBsYXN0X3NlY3Rpb25fbnVtYmVyID0gIiA8PCBici0+Z2V0Qml0cyg4KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgcmVzZXJ2ZWQgPSAiIDw8IGJyLT5nZXRCaXRzKDMpOworCisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIFBDUl9QSUQgPSAiCisgICAgICAgICAgICAgIDw8IFN0cmluZ1ByaW50ZigiMHglMDR4IiwgYnItPmdldEJpdHMoMTMpKTsKKworICAgIExPRyhWRVJCT1NFKSA8PCAiICByZXNlcnZlZCA9ICIgPDwgYnItPmdldEJpdHMoNCk7CisKKyAgICB1bnNpZ25lZCBwcm9ncmFtX2luZm9fbGVuZ3RoID0gYnItPmdldEJpdHMoMTIpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICBwcm9ncmFtX2luZm9fbGVuZ3RoID0gIiA8PCBwcm9ncmFtX2luZm9fbGVuZ3RoOworICAgIENIRUNLKChwcm9ncmFtX2luZm9fbGVuZ3RoICYgMHhjMDApID09IDApOworCisgICAgYnItPnNraXBCaXRzKHByb2dyYW1faW5mb19sZW5ndGggKiA4KTsgIC8vIHNraXAgZGVzY3JpcHRvcnMKKworICAgIC8vIGluZm9CeXRlc1JlbWFpbmluZyBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbWFrZSB1cCB0aGUKKyAgICAvLyB2YXJpYWJsZSBsZW5ndGggc2VjdGlvbiBvZiBFU19pbmZvcy4gSXQgZG9lcyBub3QgaW5jbHVkZSB0aGUKKyAgICAvLyBmaW5hbCBDUkMuCisgICAgc2l6ZV90IGluZm9CeXRlc1JlbWFpbmluZyA9IHNlY3Rpb25fbGVuZ3RoIC0gOSAtIHByb2dyYW1faW5mb19sZW5ndGggLSA0OworCisgICAgd2hpbGUgKGluZm9CeXRlc1JlbWFpbmluZyA+IDApIHsKKyAgICAgICAgQ0hFQ0tfR0UoaW5mb0J5dGVzUmVtYWluaW5nLCA1dSk7CisKKyAgICAgICAgdW5zaWduZWQgc3RyZWFtVHlwZSA9IGJyLT5nZXRCaXRzKDgpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIiAgICBzdHJlYW1fdHlwZSA9ICIKKyAgICAgICAgICAgICAgICAgIDw8IFN0cmluZ1ByaW50ZigiMHglMDJ4Iiwgc3RyZWFtVHlwZSk7CisKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICIgICAgcmVzZXJ2ZWQgPSAiIDw8IGJyLT5nZXRCaXRzKDMpOworCisgICAgICAgIHVuc2lnbmVkIGVsZW1lbnRhcnlQSUQgPSBici0+Z2V0Qml0cygxMyk7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiICAgIGVsZW1lbnRhcnlfUElEID0gIgorICAgICAgICAgICAgICAgICAgPDwgU3RyaW5nUHJpbnRmKCIweCUwNHgiLCBlbGVtZW50YXJ5UElEKTsKKworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIiAgICByZXNlcnZlZCA9ICIgPDwgYnItPmdldEJpdHMoNCk7CisKKyAgICAgICAgdW5zaWduZWQgRVNfaW5mb19sZW5ndGggPSBici0+Z2V0Qml0cygxMik7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiICAgIEVTX2luZm9fbGVuZ3RoID0gIiA8PCBFU19pbmZvX2xlbmd0aDsKKyAgICAgICAgQ0hFQ0soKEVTX2luZm9fbGVuZ3RoICYgMHhjMDApID09IDApOworCisgICAgICAgIENIRUNLX0dFKGluZm9CeXRlc1JlbWFpbmluZyAtIDUsIEVTX2luZm9fbGVuZ3RoKTsKKworI2lmIDAKKyAgICAgICAgYnItPnNraXBCaXRzKEVTX2luZm9fbGVuZ3RoICogOCk7ICAvLyBza2lwIGRlc2NyaXB0b3JzCisjZWxzZQorICAgICAgICB1bnNpZ25lZCBpbmZvX2J5dGVzX3JlbWFpbmluZyA9IEVTX2luZm9fbGVuZ3RoOworICAgICAgICB3aGlsZSAoaW5mb19ieXRlc19yZW1haW5pbmcgPj0gMikgeworICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICIgICAgICB0YWcgPSAiIDw8IFN0cmluZ1ByaW50ZigiMHglMDJ4IiwgYnItPmdldEJpdHMoOCkpOworCisgICAgICAgICAgICB1bnNpZ25lZCBkZXNjTGVuZ3RoID0gYnItPmdldEJpdHMoOCk7CisgICAgICAgICAgICBMT0coVkVSQk9TRSkgPDwgIiAgICAgIGxlbiA9ICIgPDwgZGVzY0xlbmd0aDsKKworICAgICAgICAgICAgQ0hFQ0tfR0UoaW5mb19ieXRlc19yZW1haW5pbmcsIDIgKyBkZXNjTGVuZ3RoKTsKKworICAgICAgICAgICAgYnItPnNraXBCaXRzKGRlc2NMZW5ndGggKiA4KTsKKworICAgICAgICAgICAgaW5mb19ieXRlc19yZW1haW5pbmcgLT0gZGVzY0xlbmd0aCArIDI7CisgICAgICAgIH0KKyAgICAgICAgQ0hFQ0tfRVEoaW5mb19ieXRlc19yZW1haW5pbmcsIDB1KTsKKyNlbmRpZgorCisgICAgICAgIHNzaXplX3QgaW5kZXggPSBtU3RyZWFtcy5pbmRleE9mS2V5KGVsZW1lbnRhcnlQSUQpOworI2lmIDAgIC8vIFhYWCByZXZpc2l0CisgICAgICAgIENIRUNLX0xUKGluZGV4LCAwKTsKKyAgICAgICAgbVN0cmVhbXMuYWRkKGVsZW1lbnRhcnlQSUQsIG5ldyBTdHJlYW0oZWxlbWVudGFyeVBJRCwgc3RyZWFtVHlwZSkpOworI2Vsc2UKKyAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgbVN0cmVhbXMuYWRkKGVsZW1lbnRhcnlQSUQsIG5ldyBTdHJlYW0oZWxlbWVudGFyeVBJRCwgc3RyZWFtVHlwZSkpOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpbmZvQnl0ZXNSZW1haW5pbmcgLT0gNSArIEVTX2luZm9fbGVuZ3RoOworICAgIH0KKworICAgIENIRUNLX0VRKGluZm9CeXRlc1JlbWFpbmluZywgMHUpOworCisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIENSQyA9ICIgPDwgU3RyaW5nUHJpbnRmKCIweCUwOHgiLCBici0+Z2V0Qml0cygzMikpOworfQorCitzcDxNZWRpYVNvdXJjZT4gQVRTUGFyc2VyOjpQcm9ncmFtOjpnZXRTb3VyY2UoU291cmNlVHlwZSB0eXBlKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtU3RyZWFtcy5zaXplKCk7ICsraSkgeworICAgICAgICBzcDxNZWRpYVNvdXJjZT4gc291cmNlID0gbVN0cmVhbXMuZWRpdFZhbHVlQXQoaSktPmdldFNvdXJjZSh0eXBlKTsKKyAgICAgICAgaWYgKHNvdXJjZSAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gc291cmNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK0FUU1BhcnNlcjo6U3RyZWFtOjpTdHJlYW0odW5zaWduZWQgZWxlbWVudGFyeVBJRCwgdW5zaWduZWQgc3RyZWFtVHlwZSkKKyAgICA6IG1FbGVtZW50YXJ5UElEKGVsZW1lbnRhcnlQSUQpLAorICAgICAgbVN0cmVhbVR5cGUoc3RyZWFtVHlwZSksCisgICAgICBtQnVmZmVyKG5ldyBBQnVmZmVyKDY1NTM2KSksCisgICAgICBtUGF5bG9hZFN0YXJ0ZWQoZmFsc2UpIHsKKyAgICBtQnVmZmVyLT5zZXRSYW5nZSgwLCAwKTsKK30KKworQVRTUGFyc2VyOjpTdHJlYW06On5TdHJlYW0oKSB7Cit9CisKK3ZvaWQgQVRTUGFyc2VyOjpTdHJlYW06OnBhcnNlKAorICAgICAgICB1bnNpZ25lZCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yLCBBQml0UmVhZGVyICpicikgeworICAgIGlmIChwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yKSB7CisgICAgICAgIGlmIChtUGF5bG9hZFN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBydW4gdGhlIGRhbmdlciBvZiByZWNlaXZpbmcgdGhlIHRyYWlsaW5nIGJ5dGVzCisgICAgICAgICAgICAvLyBvZiBhIFBFUyBwYWNrZXQgdGhhdCB3ZSBuZXZlciBzYXcgdGhlIHN0YXJ0IG9mIGFuZCBhc3N1bWluZworICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIGEgY29tcGxldGUgUEVTIHBhY2tldC4KKworICAgICAgICAgICAgZmx1c2goKTsKKyAgICAgICAgfQorCisgICAgICAgIG1QYXlsb2FkU3RhcnRlZCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKCFtUGF5bG9hZFN0YXJ0ZWQpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBwYXlsb2FkU2l6ZUJpdHMgPSBici0+bnVtQml0c0xlZnQoKTsKKyAgICBDSEVDS19FUShwYXlsb2FkU2l6ZUJpdHMgJSA4LCAwdSk7CisKKyAgICBDSEVDS19MRShtQnVmZmVyLT5zaXplKCkgKyBwYXlsb2FkU2l6ZUJpdHMgLyA4LCBtQnVmZmVyLT5jYXBhY2l0eSgpKTsKKworICAgIG1lbWNweShtQnVmZmVyLT5kYXRhKCkgKyBtQnVmZmVyLT5zaXplKCksIGJyLT5kYXRhKCksIHBheWxvYWRTaXplQml0cyAvIDgpOworICAgIG1CdWZmZXItPnNldFJhbmdlKDAsIG1CdWZmZXItPnNpemUoKSArIHBheWxvYWRTaXplQml0cyAvIDgpOworfQorCit2b2lkIEFUU1BhcnNlcjo6U3RyZWFtOjpwYXJzZVBFUyhBQml0UmVhZGVyICpicikgeworICAgIHVuc2lnbmVkIHBhY2tldF9zdGFydGNvZGVfcHJlZml4ID0gYnItPmdldEJpdHMoMjQpOworCisgICAgTE9HKFZFUkJPU0UpIDw8ICJwYWNrZXRfc3RhcnRjb2RlX3ByZWZpeCA9ICIKKyAgICAgICAgICAgICAgPDwgU3RyaW5nUHJpbnRmKCIweCUwOHgiLCBwYWNrZXRfc3RhcnRjb2RlX3ByZWZpeCk7CisKKyAgICBDSEVDS19FUShwYWNrZXRfc3RhcnRjb2RlX3ByZWZpeCwgMHgwMDAwMDF1KTsKKworICAgIHVuc2lnbmVkIHN0cmVhbV9pZCA9IGJyLT5nZXRCaXRzKDgpOworICAgIExPRyhWRVJCT1NFKSA8PCAic3RyZWFtX2lkID0gIiA8PCBTdHJpbmdQcmludGYoIjB4JTAyeCIsIHN0cmVhbV9pZCk7CisKKyAgICB1bnNpZ25lZCBQRVNfcGFja2V0X2xlbmd0aCA9IGJyLT5nZXRCaXRzKDE2KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIlBFU19wYWNrZXRfbGVuZ3RoID0gIiA8PCBQRVNfcGFja2V0X2xlbmd0aDsKKworICAgIGlmIChzdHJlYW1faWQgIT0gMHhiYyAgLy8gcHJvZ3JhbV9zdHJlYW1fbWFwCisgICAgICAgICAgICAmJiBzdHJlYW1faWQgIT0gMHhiZSAgLy8gcGFkZGluZ19zdHJlYW0KKyAgICAgICAgICAgICYmIHN0cmVhbV9pZCAhPSAweGJmICAvLyBwcml2YXRlX3N0cmVhbV8yCisgICAgICAgICAgICAmJiBzdHJlYW1faWQgIT0gMHhmMCAgLy8gRUNNCisgICAgICAgICAgICAmJiBzdHJlYW1faWQgIT0gMHhmMSAgLy8gRU1NCisgICAgICAgICAgICAmJiBzdHJlYW1faWQgIT0gMHhmZiAgLy8gcHJvZ3JhbV9zdHJlYW1fZGlyZWN0b3J5CisgICAgICAgICAgICAmJiBzdHJlYW1faWQgIT0gMHhmMiAgLy8gRFNNQ0MKKyAgICAgICAgICAgICYmIHN0cmVhbV9pZCAhPSAweGY4KSB7ICAvLyBILjIyMi4xIHR5cGUgRQorICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cygyKSwgMnUpOworCisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiUEVTX3NjcmFtYmxpbmdfY29udHJvbCA9ICIgPDwgYnItPmdldEJpdHMoMik7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiUEVTX3ByaW9yaXR5ID0gIiA8PCBici0+Z2V0Qml0cygxKTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJkYXRhX2FsaWdubWVudF9pbmRpY2F0b3IgPSAiIDw8IGJyLT5nZXRCaXRzKDEpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgImNvcHlyaWdodCA9ICIgPDwgYnItPmdldEJpdHMoMSk7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAib3JpZ2luYWxfb3JfY29weSA9ICIgPDwgYnItPmdldEJpdHMoMSk7CisKKyAgICAgICAgdW5zaWduZWQgUFRTX0RUU19mbGFncyA9IGJyLT5nZXRCaXRzKDIpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIlBUU19EVFNfZmxhZ3MgPSAiIDw8IFBUU19EVFNfZmxhZ3M7CisKKyAgICAgICAgdW5zaWduZWQgRVNDUl9mbGFnID0gYnItPmdldEJpdHMoMSk7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiRVNDUl9mbGFnID0gIiA8PCBFU0NSX2ZsYWc7CisKKyAgICAgICAgdW5zaWduZWQgRVNfcmF0ZV9mbGFnID0gYnItPmdldEJpdHMoMSk7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiRVNfcmF0ZV9mbGFnID0gIiA8PCBFU19yYXRlX2ZsYWc7CisKKyAgICAgICAgdW5zaWduZWQgRFNNX3RyaWNrX21vZGVfZmxhZyA9IGJyLT5nZXRCaXRzKDEpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIkRTTV90cmlja19tb2RlX2ZsYWcgPSAiIDw8IERTTV90cmlja19tb2RlX2ZsYWc7CisKKyAgICAgICAgdW5zaWduZWQgYWRkaXRpb25hbF9jb3B5X2luZm9fZmxhZyA9IGJyLT5nZXRCaXRzKDEpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgImFkZGl0aW9uYWxfY29weV9pbmZvX2ZsYWcgPSAiCisgICAgICAgICAgICAgICAgICA8PCBhZGRpdGlvbmFsX2NvcHlfaW5mb19mbGFnOworCisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiUEVTX0NSQ19mbGFnID0gIiA8PCBici0+Z2V0Qml0cygxKTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJQRVNfZXh0ZW5zaW9uX2ZsYWcgPSAiIDw8IGJyLT5nZXRCaXRzKDEpOworCisgICAgICAgIHVuc2lnbmVkIFBFU19oZWFkZXJfZGF0YV9sZW5ndGggPSBici0+Z2V0Qml0cyg4KTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJQRVNfaGVhZGVyX2RhdGFfbGVuZ3RoID0gIiA8PCBQRVNfaGVhZGVyX2RhdGFfbGVuZ3RoOworCisgICAgICAgIHVuc2lnbmVkIG9wdGlvbmFsX2J5dGVzX3JlbWFpbmluZyA9IFBFU19oZWFkZXJfZGF0YV9sZW5ndGg7CisKKyAgICAgICAgdWludDY0X3QgUFRTID0gMCwgRFRTID0gMDsKKworICAgICAgICBpZiAoUFRTX0RUU19mbGFncyA9PSAyIHx8IFBUU19EVFNfZmxhZ3MgPT0gMykgeworICAgICAgICAgICAgQ0hFQ0tfR0Uob3B0aW9uYWxfYnl0ZXNfcmVtYWluaW5nLCA1dSk7CisKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDQpLCBQVFNfRFRTX2ZsYWdzKTsKKworICAgICAgICAgICAgUFRTID0gKCh1aW50NjRfdClici0+Z2V0Qml0cygzKSkgPDwgMzA7CisgICAgICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cygxKSwgMXUpOworICAgICAgICAgICAgUFRTIHw9ICgodWludDY0X3QpYnItPmdldEJpdHMoMTUpKSA8PCAxNTsKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisgICAgICAgICAgICBQVFMgfD0gYnItPmdldEJpdHMoMTUpOworICAgICAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDF1KTsKKworICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJQVFMgPSAiIDw8IFBUUzsKKyAgICAgICAgICAgIC8vIExPRyhJTkZPKSA8PCAiUFRTID0gIiA8PCBQVFMgLyA5MDAwMC4wZiA8PCAiIHNlY3MiOworCisgICAgICAgICAgICBvcHRpb25hbF9ieXRlc19yZW1haW5pbmcgLT0gNTsKKworICAgICAgICAgICAgaWYgKFBUU19EVFNfZmxhZ3MgPT0gMykgeworICAgICAgICAgICAgICAgIENIRUNLX0dFKG9wdGlvbmFsX2J5dGVzX3JlbWFpbmluZywgNXUpOworCisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoNCksIDF1KTsKKworICAgICAgICAgICAgICAgIERUUyA9ICgodWludDY0X3QpYnItPmdldEJpdHMoMykpIDw8IDMwOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisgICAgICAgICAgICAgICAgRFRTIHw9ICgodWludDY0X3QpYnItPmdldEJpdHMoMTUpKSA8PCAxNTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cygxKSwgMXUpOworICAgICAgICAgICAgICAgIERUUyB8PSBici0+Z2V0Qml0cygxNSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDF1KTsKKworICAgICAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiRFRTID0gIiA8PCBEVFM7CisKKyAgICAgICAgICAgICAgICBvcHRpb25hbF9ieXRlc19yZW1haW5pbmcgLT0gNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChFU0NSX2ZsYWcpIHsKKyAgICAgICAgICAgIENIRUNLX0dFKG9wdGlvbmFsX2J5dGVzX3JlbWFpbmluZywgNnUpOworCisgICAgICAgICAgICBici0+Z2V0Qml0cygyKTsKKworICAgICAgICAgICAgdWludDY0X3QgRVNDUiA9ICgodWludDY0X3QpYnItPmdldEJpdHMoMykpIDw8IDMwOworICAgICAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDF1KTsKKyAgICAgICAgICAgIEVTQ1IgfD0gKCh1aW50NjRfdClici0+Z2V0Qml0cygxNSkpIDw8IDE1OworICAgICAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDF1KTsKKyAgICAgICAgICAgIEVTQ1IgfD0gYnItPmdldEJpdHMoMTUpOworICAgICAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDF1KTsKKworICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJFU0NSID0gIiA8PCBFU0NSOworICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJFU0NSX2V4dGVuc2lvbiA9ICIgPDwgYnItPmdldEJpdHMoOSk7CisKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisKKyAgICAgICAgICAgIG9wdGlvbmFsX2J5dGVzX3JlbWFpbmluZyAtPSA2OworICAgICAgICB9CisKKyAgICAgICAgaWYgKEVTX3JhdGVfZmxhZykgeworICAgICAgICAgICAgQ0hFQ0tfR0Uob3B0aW9uYWxfYnl0ZXNfcmVtYWluaW5nLCAzdSk7CisKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisgICAgICAgICAgICBMT0coVkVSQk9TRSkgPDwgIkVTX3JhdGUgPSAiIDw8IGJyLT5nZXRCaXRzKDIyKTsKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisKKyAgICAgICAgICAgIG9wdGlvbmFsX2J5dGVzX3JlbWFpbmluZyAtPSAzOworICAgICAgICB9CisKKyAgICAgICAgYnItPnNraXBCaXRzKG9wdGlvbmFsX2J5dGVzX3JlbWFpbmluZyAqIDgpOworCisgICAgICAgIC8vIEVTIGRhdGEgZm9sbG93cy4KKworICAgICAgICBvblBheWxvYWREYXRhKAorICAgICAgICAgICAgICAgIFBUU19EVFNfZmxhZ3MsIFBUUywgRFRTLAorICAgICAgICAgICAgICAgIGJyLT5kYXRhKCksIGJyLT5udW1CaXRzTGVmdCgpIC8gOCk7CisKKyAgICAgICAgaWYgKFBFU19wYWNrZXRfbGVuZ3RoICE9IDApIHsKKyAgICAgICAgICAgIENIRUNLX0dFKFBFU19wYWNrZXRfbGVuZ3RoLCBQRVNfaGVhZGVyX2RhdGFfbGVuZ3RoICsgMyk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGRhdGFMZW5ndGggPQorICAgICAgICAgICAgICAgIFBFU19wYWNrZXRfbGVuZ3RoIC0gMyAtIFBFU19oZWFkZXJfZGF0YV9sZW5ndGg7CisKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5udW1CaXRzTGVmdCgpLCBkYXRhTGVuZ3RoICogOCk7CisKKyAgICAgICAgICAgIGJyLT5za2lwQml0cyhkYXRhTGVuZ3RoICogOCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaXplX3QgcGF5bG9hZFNpemVCaXRzID0gYnItPm51bUJpdHNMZWZ0KCk7CisgICAgICAgICAgICBDSEVDSygocGF5bG9hZFNpemVCaXRzICUgOCkgPT0gMCk7CisKKyAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiVGhlcmUncyAiIDw8IChwYXlsb2FkU2l6ZUJpdHMgLyA4KQorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgYnl0ZXMgb2YgcGF5bG9hZC4iOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzdHJlYW1faWQgPT0gMHhiZSkgeyAgLy8gcGFkZGluZ19zdHJlYW0KKyAgICAgICAgQ0hFQ0tfTkUoUEVTX3BhY2tldF9sZW5ndGgsIDB1KTsKKyAgICAgICAgYnItPnNraXBCaXRzKFBFU19wYWNrZXRfbGVuZ3RoICogOCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQ0hFQ0tfTkUoUEVTX3BhY2tldF9sZW5ndGgsIDB1KTsKKyAgICAgICAgYnItPnNraXBCaXRzKFBFU19wYWNrZXRfbGVuZ3RoICogOCk7CisgICAgfQorfQorCit2b2lkIEFUU1BhcnNlcjo6U3RyZWFtOjpmbHVzaCgpIHsKKyAgICBpZiAobUJ1ZmZlci0+c2l6ZSgpID09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhWRVJCT1NFKSA8PCAiZmx1c2hpbmcgc3RyZWFtICIKKyAgICAgICAgICAgICAgICAgPDwgU3RyaW5nUHJpbnRmKCIweCUwNHgiLCBtRWxlbWVudGFyeVBJRCkKKyAgICAgICAgICAgICAgICAgPDwgIiBzaXplID0gIiA8PCBtQnVmZmVyLT5zaXplKCk7CisKKyAgICBBQml0UmVhZGVyIGJyKG1CdWZmZXItPmRhdGEoKSwgbUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBwYXJzZVBFUygmYnIpOworCisgICAgbUJ1ZmZlci0+c2V0UmFuZ2UoMCwgMCk7Cit9CisKK3N0YXRpYyBzcDxBQnVmZmVyPiBGaW5kTkFMKAorICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgbmFsVHlwZSwKKyAgICAgICAgc2l6ZV90ICpzdG9wT2Zmc2V0KSB7CisgICAgYm9vbCBmb3VuZFN0YXJ0ID0gZmFsc2U7CisgICAgc2l6ZV90IHN0YXJ0T2Zmc2V0ID0gMDsKKworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIGZvciAoOzspIHsKKyAgICAgICAgd2hpbGUgKG9mZnNldCArIDMgPCBzaXplCisgICAgICAgICAgICAgICAgJiYgbWVtY21wKCJceDAwXHgwMFx4MDBceDAxIiwgJmRhdGFbb2Zmc2V0XSwgNCkpIHsKKyAgICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvdW5kU3RhcnQpIHsKKyAgICAgICAgICAgIHNpemVfdCBuYWxTaXplOworICAgICAgICAgICAgaWYgKG9mZnNldCArIDMgPj0gc2l6ZSkgeworICAgICAgICAgICAgICAgIG5hbFNpemUgPSBzaXplIC0gc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5hbFNpemUgPSBvZmZzZXQgLSBzdGFydE9mZnNldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3A8QUJ1ZmZlcj4gbmFsID0gbmV3IEFCdWZmZXIobmFsU2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkobmFsLT5kYXRhKCksICZkYXRhW3N0YXJ0T2Zmc2V0XSwgbmFsU2l6ZSk7CisKKyAgICAgICAgICAgIGlmIChzdG9wT2Zmc2V0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqc3RvcE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgbmFsU2l6ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG5hbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvZmZzZXQgKyA0ID49IHNpemUpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChkYXRhW29mZnNldCArIDRdICYgMHgxZikgPT0gbmFsVHlwZSkgeworICAgICAgICAgICAgZm91bmRTdGFydCA9IHRydWU7CisgICAgICAgICAgICBzdGFydE9mZnNldCA9IG9mZnNldCArIDQ7CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQgKz0gNDsKKyAgICB9Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBwYXJzZVVFKEFCaXRSZWFkZXIgKmJyKSB7CisgICAgdW5zaWduZWQgbnVtWmVyb2VzID0gMDsKKyAgICB3aGlsZSAoYnItPmdldEJpdHMoMSkgPT0gMCkgeworICAgICAgICArK251bVplcm9lczsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB4ID0gYnItPmdldEJpdHMobnVtWmVyb2VzKTsKKworICAgIHJldHVybiB4ICsgKDF1IDw8IG51bVplcm9lcykgLSAxOworfQorCisvLyBEZXRlcm1pbmUgdmlkZW8gZGltZW5zaW9ucyBmcm9tIHRoZSBzZXF1ZW5jZSBwYXJhbWV0ZXJzZXQuCitzdGF0aWMgdm9pZCBGaW5kRGltZW5zaW9ucygKKyAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gc2VxUGFyYW1TZXQsIGludDMyX3QgKndpZHRoLCBpbnQzMl90ICpoZWlnaHQpIHsKKyAgICBBQml0UmVhZGVyIGJyKHNlcVBhcmFtU2V0LT5kYXRhKCkgKyAxLCBzZXFQYXJhbVNldC0+c2l6ZSgpIC0gMSk7CisKKyAgICB1bnNpZ25lZCBwcm9maWxlX2lkYyA9IGJyLmdldEJpdHMoOCk7CisgICAgYnIuc2tpcEJpdHMoMTYpOworICAgIHBhcnNlVUUoJmJyKTsgIC8vIHNlcV9wYXJhbWV0ZXJfc2V0X2lkCisKKyAgICBpZiAocHJvZmlsZV9pZGMgPT0gMTAwIHx8IHByb2ZpbGVfaWRjID09IDExMAorICAgICAgICAgICAgfHwgcHJvZmlsZV9pZGMgPT0gMTIyIHx8IHByb2ZpbGVfaWRjID09IDE0NCkgeworICAgICAgICBUUkVTUEFTUygpOworICAgIH0KKworICAgIHBhcnNlVUUoJmJyKTsgIC8vIGxvZzJfbWF4X2ZyYW1lX251bV9taW51czQKKyAgICB1bnNpZ25lZCBwaWNfb3JkZXJfY250X3R5cGUgPSBwYXJzZVVFKCZicik7CisKKyAgICBpZiAocGljX29yZGVyX2NudF90eXBlID09IDApIHsKKyAgICAgICAgcGFyc2VVRSgmYnIpOyAgLy8gbG9nMl9tYXhfcGljX29yZGVyX2NudF9sc2JfbWludXM0CisgICAgfSBlbHNlIGlmIChwaWNfb3JkZXJfY250X3R5cGUgPT0gMSkgeworICAgICAgICBici5nZXRCaXRzKDEpOyAgLy8gZGVsdGFfcGljX29yZGVyX2Fsd2F5c196ZXJvX2ZsYWcKKyAgICAgICAgcGFyc2VVRSgmYnIpOyAgLy8gb2Zmc2V0X2Zvcl9ub25fcmVmX3BpYworICAgICAgICBwYXJzZVVFKCZicik7ICAvLyBvZmZzZXRfZm9yX3RvcF90b19ib3R0b21fZmllbGQKKworICAgICAgICB1bnNpZ25lZCBudW1fcmVmX2ZyYW1lc19pbl9waWNfb3JkZXJfY250X2N5Y2xlID0gcGFyc2VVRSgmYnIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtX3JlZl9mcmFtZXNfaW5fcGljX29yZGVyX2NudF9jeWNsZTsgKytpKSB7CisgICAgICAgICAgICBwYXJzZVVFKCZicik7ICAvLyBvZmZzZXRfZm9yX3JlZl9mcmFtZQorICAgICAgICB9CisgICAgfQorCisgICAgcGFyc2VVRSgmYnIpOyAgLy8gbnVtX3JlZl9mcmFtZXMKKyAgICBici5nZXRCaXRzKDEpOyAgLy8gZ2Fwc19pbl9mcmFtZV9udW1fdmFsdWVfYWxsb3dlZF9mbGFnCisKKyAgICB1bnNpZ25lZCBwaWNfd2lkdGhfaW5fbWJzX21pbnVzMSA9IHBhcnNlVUUoJmJyKTsKKyAgICB1bnNpZ25lZCBwaWNfaGVpZ2h0X2luX21hcF91bml0c19taW51czEgPSBwYXJzZVVFKCZicik7CisgICAgdW5zaWduZWQgZnJhbWVfbWJzX29ubHlfZmxhZyA9IGJyLmdldEJpdHMoMSk7CisKKyAgICAqd2lkdGggPSBwaWNfd2lkdGhfaW5fbWJzX21pbnVzMSAqIDE2ICsgMTY7CisKKyAgICAqaGVpZ2h0ID0gKDIgLSBmcmFtZV9tYnNfb25seV9mbGFnKQorICAgICAgICAqIChwaWNfaGVpZ2h0X2luX21hcF91bml0c19taW51czEgKiAxNiArIDE2KTsKK30KKworc3RhdGljIHNwPEFCdWZmZXI+IE1ha2VBVkNDb2RlY1NwZWNpZmljRGF0YSgKKyAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlciwgaW50MzJfdCAqd2lkdGgsIGludDMyX3QgKmhlaWdodCkgeworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSBidWZmZXItPmRhdGEoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOworCisgICAgc3A8QUJ1ZmZlcj4gc2VxUGFyYW1TZXQgPSBGaW5kTkFMKGRhdGEsIHNpemUsIDcsIE5VTEwpOworICAgIGlmIChzZXFQYXJhbVNldCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIEZpbmREaW1lbnNpb25zKHNlcVBhcmFtU2V0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHNpemVfdCBzdG9wT2Zmc2V0OworICAgIHNwPEFCdWZmZXI+IHBpY1BhcmFtU2V0ID0gRmluZE5BTChkYXRhLCBzaXplLCA4LCAmc3RvcE9mZnNldCk7CisgICAgQ0hFQ0socGljUGFyYW1TZXQgIT0gTlVMTCk7CisKKyAgICBidWZmZXItPnNldFJhbmdlKHN0b3BPZmZzZXQsIHNpemUgLSBzdG9wT2Zmc2V0KTsKKyAgICBMT0coSU5GTykgPDwgImJ1ZmZlciBoYXMgIiA8PCBidWZmZXItPnNpemUoKSA8PCAiIGJ5dGVzIGxlZnQuIjsKKworICAgIHNpemVfdCBjc2RTaXplID0KKyAgICAgICAgMSArIDMgKyAxICsgMQorICAgICAgICArIDIgKiAxICsgc2VxUGFyYW1TZXQtPnNpemUoKQorICAgICAgICArIDEgKyAyICogMSArIHBpY1BhcmFtU2V0LT5zaXplKCk7CisKKyAgICBzcDxBQnVmZmVyPiBjc2QgPSBuZXcgQUJ1ZmZlcihjc2RTaXplKTsKKyAgICB1aW50OF90ICpvdXQgPSBjc2QtPmRhdGEoKTsKKworICAgICpvdXQrKyA9IDB4MDE7ICAvLyBjb25maWd1cmF0aW9uVmVyc2lvbgorICAgIG1lbWNweShvdXQsIHNlcVBhcmFtU2V0LT5kYXRhKCkgKyAxLCAzKTsgIC8vIHByb2ZpbGUvbGV2ZWwuLi4KKyAgICBvdXQgKz0gMzsKKyAgICAqb3V0KysgPSAoMHgzZiA8PCAyKSB8IDE7ICAvLyBsZW5ndGhTaXplID09IDIgYnl0ZXMKKyAgICAqb3V0KysgPSAweGUwIHwgMTsKKworICAgICpvdXQrKyA9IHNlcVBhcmFtU2V0LT5zaXplKCkgPj4gODsKKyAgICAqb3V0KysgPSBzZXFQYXJhbVNldC0+c2l6ZSgpICYgMHhmZjsKKyAgICBtZW1jcHkob3V0LCBzZXFQYXJhbVNldC0+ZGF0YSgpLCBzZXFQYXJhbVNldC0+c2l6ZSgpKTsKKyAgICBvdXQgKz0gc2VxUGFyYW1TZXQtPnNpemUoKTsKKworICAgICpvdXQrKyA9IDE7CisKKyAgICAqb3V0KysgPSBwaWNQYXJhbVNldC0+c2l6ZSgpID4+IDg7CisgICAgKm91dCsrID0gcGljUGFyYW1TZXQtPnNpemUoKSAmIDB4ZmY7CisgICAgbWVtY3B5KG91dCwgcGljUGFyYW1TZXQtPmRhdGEoKSwgcGljUGFyYW1TZXQtPnNpemUoKSk7CisKKyAgICByZXR1cm4gY3NkOworfQorCitzdGF0aWMgYm9vbCBnZXROZXh0TkFMVW5pdCgKKyAgICAgICAgY29uc3QgdWludDhfdCAqKl9kYXRhLCBzaXplX3QgKl9zaXplLAorICAgICAgICBjb25zdCB1aW50OF90ICoqbmFsU3RhcnQsIHNpemVfdCAqbmFsU2l6ZSkgeworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSAqX2RhdGE7CisgICAgc2l6ZV90IHNpemUgPSAqX3NpemU7CisKKyAgICAqbmFsU3RhcnQgPSBOVUxMOworICAgICpuYWxTaXplID0gMDsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIGZvciAoOzspIHsKKyAgICAgICAgQ0hFQ0tfTFQob2Zmc2V0ICsgMiwgc2l6ZSk7CisKKyAgICAgICAgaWYgKCFtZW1jbXAoIlx4MDBceDAwXHgwMSIsICZkYXRhW29mZnNldF0sIDMpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIENIRUNLX0VRKCh1bnNpZ25lZClkYXRhW29mZnNldF0sIDB4MDB1KTsKKyAgICAgICAgKytvZmZzZXQ7CisgICAgfQorCisgICAgb2Zmc2V0ICs9IDM7CisgICAgc2l6ZV90IHN0YXJ0T2Zmc2V0ID0gb2Zmc2V0OworCisgICAgd2hpbGUgKG9mZnNldCArIDIgPCBzaXplCisgICAgICAgICAgICAmJiBtZW1jbXAoIlx4MDBceDAwXHgwMCIsICZkYXRhW29mZnNldF0sIDMpCisgICAgICAgICAgICAmJiBtZW1jbXAoIlx4MDBceDAwXHgwMSIsICZkYXRhW29mZnNldF0sIDMpKSB7CisgICAgICAgICsrb2Zmc2V0OworICAgIH0KKworICAgIGlmIChvZmZzZXQgKyAyID49IHNpemUpIHsKKyAgICAgICAgKm5hbFN0YXJ0ID0gJmRhdGFbc3RhcnRPZmZzZXRdOworICAgICAgICAqbmFsU2l6ZSA9IHNpemUgLSBzdGFydE9mZnNldDsKKworICAgICAgICAqX2RhdGEgPSBOVUxMOworICAgICAgICAqX3NpemUgPSAwOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHNpemVfdCBlbmRPZmZzZXQgPSBvZmZzZXQ7CisKKyAgICB3aGlsZSAob2Zmc2V0ICsgMiA8IHNpemUgJiYgbWVtY21wKCJceDAwXHgwMFx4MDEiLCAmZGF0YVtvZmZzZXRdLCAzKSkgeworICAgICAgICBDSEVDS19FUSgodW5zaWduZWQpZGF0YVtvZmZzZXRdLCAweDAwdSk7CisgICAgICAgICsrb2Zmc2V0OworICAgIH0KKworICAgIENIRUNLX0xUKG9mZnNldCArIDIsIHNpemUpOworCisgICAgKm5hbFN0YXJ0ID0gJmRhdGFbc3RhcnRPZmZzZXRdOworICAgICpuYWxTaXplID0gZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQ7CisKKyAgICAqX2RhdGEgPSAmZGF0YVtvZmZzZXRdOworICAgICpfc2l6ZSA9IHNpemUgLSBvZmZzZXQ7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3A8QUJ1ZmZlcj4gTWFrZUNsZWFuQVZDRGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIGNvbnN0IHVpbnQ4X3QgKnRtcERhdGEgPSBkYXRhOworICAgIHNpemVfdCB0bXBTaXplID0gc2l6ZTsKKworICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgIGNvbnN0IHVpbnQ4X3QgKm5hbFN0YXJ0OworICAgIHNpemVfdCBuYWxTaXplOworICAgIHdoaWxlIChnZXROZXh0TkFMVW5pdCgmdG1wRGF0YSwgJnRtcFNpemUsICZuYWxTdGFydCwgJm5hbFNpemUpKSB7CisgICAgICAgIHRvdGFsU2l6ZSArPSA0ICsgbmFsU2l6ZTsKKyAgICB9CisKKyAgICBzcDxBQnVmZmVyPiBidWZmZXIgPSBuZXcgQUJ1ZmZlcih0b3RhbFNpemUpOworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHdoaWxlIChnZXROZXh0TkFMVW5pdCgmZGF0YSwgJnNpemUsICZuYWxTdGFydCwgJm5hbFNpemUpKSB7CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSArIG9mZnNldCwgIlx4MDBceDAwXHgwMFx4MDEiLCA0KTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpICsgb2Zmc2V0ICsgNCwgbmFsU3RhcnQsIG5hbFNpemUpOworCisgICAgICAgIG9mZnNldCArPSA0ICsgbmFsU2l6ZTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitzdGF0aWMgc3A8QUJ1ZmZlcj4gRmluZE1QRUcyQURUU0NvbmZpZygKKyAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlciwgaW50MzJfdCAqc2FtcGxlUmF0ZSwgaW50MzJfdCAqY2hhbm5lbENvdW50KSB7CisgICAgQUJpdFJlYWRlciBicihidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworCisgICAgQ0hFQ0tfRVEoYnIuZ2V0Qml0cygxMiksIDB4ZmZmdSk7CisgICAgQ0hFQ0tfRVEoYnIuZ2V0Qml0cygxKSwgMHUpOworICAgIENIRUNLX0VRKGJyLmdldEJpdHMoMiksIDB1KTsKKyAgICBici5nZXRCaXRzKDEpOyAgLy8gcHJvdGVjdGlvbl9hYnNlbnQKKyAgICB1bnNpZ25lZCBwcm9maWxlID0gYnIuZ2V0Qml0cygyKTsKKyAgICBMT0coSU5GTykgPDwgInByb2ZpbGUgPSAiIDw8IHByb2ZpbGU7CisgICAgQ0hFQ0tfTkUocHJvZmlsZSwgM3UpOworICAgIHVuc2lnbmVkIHNhbXBsaW5nX2ZyZXFfaW5kZXggPSBici5nZXRCaXRzKDQpOworICAgIGJyLmdldEJpdHMoMSk7ICAvLyBwcml2YXRlX2JpdAorICAgIHVuc2lnbmVkIGNoYW5uZWxfY29uZmlndXJhdGlvbiA9IGJyLmdldEJpdHMoMyk7CisgICAgQ0hFQ0tfTkUoY2hhbm5lbF9jb25maWd1cmF0aW9uLCAwdSk7CisKKyAgICBMT0coSU5GTykgPDwgInNhbXBsaW5nX2ZyZXFfaW5kZXggPSAiIDw8IHNhbXBsaW5nX2ZyZXFfaW5kZXg7CisgICAgTE9HKElORk8pIDw8ICJjaGFubmVsX2NvbmZpZ3VyYXRpb24gPSAiIDw8IGNoYW5uZWxfY29uZmlndXJhdGlvbjsKKworICAgIENIRUNLX0xFKHNhbXBsaW5nX2ZyZXFfaW5kZXgsIDExdSk7CisgICAgc3RhdGljIGNvbnN0IGludDMyX3Qga1NhbXBsaW5nRnJlcVtdID0geworICAgICAgICA5NjAwMCwgODgyMDAsIDY0MDAwLCA0ODAwMCwgNDQxMDAsIDMyMDAwLCAyNDAwMCwgMjIwNTAsCisgICAgICAgIDE2MDAwLCAxMjAwMCwgMTEwMjUsIDgwMDAKKyAgICB9OworICAgICpzYW1wbGVSYXRlID0ga1NhbXBsaW5nRnJlcVtzYW1wbGluZ19mcmVxX2luZGV4XTsKKworICAgICpjaGFubmVsQ291bnQgPSBjaGFubmVsX2NvbmZpZ3VyYXRpb247CisKKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBrU3RhdGljRVNEU1tdID0geworICAgICAgICAweDAzLCAyMiwKKyAgICAgICAgMHgwMCwgMHgwMCwgICAgIC8vIEVTX0lECisgICAgICAgIDB4MDAsICAgICAgICAgICAvLyBzdHJlYW1EZXBlbmRlbmNlRmxhZywgVVJMX0ZsYWcsIE9DUnN0cmVhbUZsYWcKKworICAgICAgICAweDA0LCAxNywKKyAgICAgICAgMHg0MCwgICAgICAgICAgICAgICAgICAgICAgIC8vIEF1ZGlvIElTTy9JRUMgMTQ0OTYtMworICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCisgICAgICAgIDB4MDUsIDIsCisgICAgICAgIC8vIEF1ZGlvU3BlY2lmaWNJbmZvIGZvbGxvd3MKKworICAgICAgICAvLyBvb29vIG9mZmYgZmNjYyBjMDAwCisgICAgICAgIC8vIG8gLSBhdWRpb09iamVjdFR5cGUKKyAgICAgICAgLy8gZiAtIHNhbXBsaW5nRnJlcUluZGV4CisgICAgICAgIC8vIGMgLSBjaGFubmVsQ29uZmlnCisgICAgfTsKKyAgICBzcDxBQnVmZmVyPiBjc2QgPSBuZXcgQUJ1ZmZlcihzaXplb2Yoa1N0YXRpY0VTRFMpICsgMik7CisgICAgbWVtY3B5KGNzZC0+ZGF0YSgpLCBrU3RhdGljRVNEUywgc2l6ZW9mKGtTdGF0aWNFU0RTKSk7CisKKyAgICBjc2QtPmRhdGEoKVtzaXplb2Yoa1N0YXRpY0VTRFMpXSA9CisgICAgICAgICgocHJvZmlsZSArIDEpIDw8IDMpIHwgKHNhbXBsaW5nX2ZyZXFfaW5kZXggPj4gMSk7CisKKyAgICBjc2QtPmRhdGEoKVtzaXplb2Yoa1N0YXRpY0VTRFMpICsgMV0gPQorICAgICAgICAoKHNhbXBsaW5nX2ZyZXFfaW5kZXggPDwgNykgJiAweDgwKSB8IChjaGFubmVsX2NvbmZpZ3VyYXRpb24gPDwgMyk7CisKKyAgICBoZXhkdW1wKGNzZC0+ZGF0YSgpLCBjc2QtPnNpemUoKSk7CisgICAgcmV0dXJuIGNzZDsKK30KKwordm9pZCBBVFNQYXJzZXI6OlN0cmVhbTo6b25QYXlsb2FkRGF0YSgKKyAgICAgICAgdW5zaWduZWQgUFRTX0RUU19mbGFncywgdWludDY0X3QgUFRTLCB1aW50NjRfdCBEVFMsCisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJvblBheWxvYWREYXRhIG1TdHJlYW1UeXBlPSIKKyAgICAgICAgICAgICAgICAgPDwgU3RyaW5nUHJpbnRmKCIweCUwMngiLCBtU3RyZWFtVHlwZSk7CisKKyAgICBzcDxBQnVmZmVyPiBidWZmZXI7CisKKyAgICBpZiAobVN0cmVhbVR5cGUgPT0gMHgxYikgeworICAgICAgICBidWZmZXIgPSBNYWtlQ2xlYW5BVkNEYXRhKGRhdGEsIHNpemUpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGhleGR1bXAoZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgYnVmZmVyID0gbmV3IEFCdWZmZXIoc2l6ZSk7CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgZGF0YSwgc2l6ZSk7CisgICAgfQorCisgICAgaWYgKG1Tb3VyY2UgPT0gTlVMTCkgeworICAgICAgICBzcDxNZXRhRGF0YT4gbWV0YSA9IG5ldyBNZXRhRGF0YTsKKworICAgICAgICBpZiAobVN0cmVhbVR5cGUgPT0gMHgxYikgeworICAgICAgICAgICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQyk7CisKKyAgICAgICAgICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodDsKKyAgICAgICAgICAgIHNwPEFCdWZmZXI+IGNzZCA9IE1ha2VBVkNDb2RlY1NwZWNpZmljRGF0YShidWZmZXIsICZ3aWR0aCwgJmhlaWdodCk7CisKKyAgICAgICAgICAgIGlmIChjc2QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWV0YS0+c2V0RGF0YShrS2V5QVZDQywgMCwgY3NkLT5kYXRhKCksIGNzZC0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlXaWR0aCwgd2lkdGgpOworICAgICAgICAgICAgbWV0YS0+c2V0SW50MzIoa0tleUhlaWdodCwgaGVpZ2h0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIENIRUNLX0VRKG1TdHJlYW1UeXBlLCAweDBmdSk7CisKKyAgICAgICAgICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMpOworCisgICAgICAgICAgICBpbnQzMl90IHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudDsKKyAgICAgICAgICAgIHNwPEFCdWZmZXI+IGNzZCA9CisgICAgICAgICAgICAgICAgRmluZE1QRUcyQURUU0NvbmZpZyhidWZmZXIsICZzYW1wbGVSYXRlLCAmY2hhbm5lbENvdW50KTsKKworICAgICAgICAgICAgTE9HKElORk8pIDw8ICJzYW1wbGVSYXRlID0gIiA8PCBzYW1wbGVSYXRlOworICAgICAgICAgICAgTE9HKElORk8pIDw8ICJjaGFubmVsQ291bnQgPSAiIDw8IGNoYW5uZWxDb3VudDsKKworICAgICAgICAgICAgbWV0YS0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOworICAgICAgICAgICAgbWV0YS0+c2V0SW50MzIoa0tleUNoYW5uZWxDb3VudCwgY2hhbm5lbENvdW50KTsKKworICAgICAgICAgICAgbWV0YS0+c2V0RGF0YShrS2V5RVNEUywgMCwgY3NkLT5kYXRhKCksIGNzZC0+c2l6ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIExPRyhJTkZPKSA8PCAiY3JlYXRlZCBzb3VyY2UhIjsKKyAgICAgICAgbVNvdXJjZSA9IG5ldyBBbm90aGVyUGFja2V0U291cmNlKG1ldGEpOworCisgICAgICAgIC8vIGZhbGwgdGhyb3VnaAorICAgIH0KKworICAgIENIRUNLKFBUU19EVFNfZmxhZ3MgPT0gMiB8fCBQVFNfRFRTX2ZsYWdzID09IDMpOworICAgIGJ1ZmZlci0+bWV0YSgpLT5zZXRJbnQ2NCgidGltZSIsIChQVFMgKiAxMDApIC8gOSk7CisKKyAgICBpZiAobVN0cmVhbVR5cGUgPT0gMHgwZikgeworICAgICAgICAvLyBXSFk/Pz8KKyAgICAgICAgYnVmZmVyLT5zZXRSYW5nZSg3LCBidWZmZXItPnNpemUoKSAtIDcpOworICAgIH0KKworICAgIG1Tb3VyY2UtPnF1ZXVlQWNjZXNzVW5pdChidWZmZXIpOworfQorCitzcDxNZWRpYVNvdXJjZT4gQVRTUGFyc2VyOjpTdHJlYW06OmdldFNvdXJjZShTb3VyY2VUeXBlIHR5cGUpIHsKKyAgICBpZiAoKHR5cGUgPT0gQVZDX1ZJREVPICYmIG1TdHJlYW1UeXBlID09IDB4MWIpCisgICAgICAgIHx8ICh0eXBlID09IE1QRUcyQURUU19BVURJTyAmJiBtU3RyZWFtVHlwZSA9PSAweDBmKSkgeworICAgICAgICByZXR1cm4gbVNvdXJjZTsKKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworQVRTUGFyc2VyOjpBVFNQYXJzZXIoKSB7Cit9CisKK0FUU1BhcnNlcjo6fkFUU1BhcnNlcigpIHsKK30KKwordm9pZCBBVFNQYXJzZXI6OmZlZWRUU1BhY2tldChjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIENIRUNLX0VRKHNpemUsIGtUU1BhY2tldFNpemUpOworCisgICAgQUJpdFJlYWRlciBicigoY29uc3QgdWludDhfdCAqKWRhdGEsIGtUU1BhY2tldFNpemUpOworICAgIHBhcnNlVFMoJmJyKTsKK30KKwordm9pZCBBVFNQYXJzZXI6OnBhcnNlUHJvZ3JhbUFzc29jaWF0aW9uVGFibGUoQUJpdFJlYWRlciAqYnIpIHsKKyAgICB1bnNpZ25lZCB0YWJsZV9pZCA9IGJyLT5nZXRCaXRzKDgpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICB0YWJsZV9pZCA9ICIgPDwgdGFibGVfaWQ7CisgICAgQ0hFQ0tfRVEodGFibGVfaWQsIDB4MDB1KTsKKworICAgIHVuc2lnbmVkIHNlY3Rpb25fc3ludGF4X2luZGljdG9yID0gYnItPmdldEJpdHMoMSk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHNlY3Rpb25fc3ludGF4X2luZGljdG9yID0gIiA8PCBzZWN0aW9uX3N5bnRheF9pbmRpY3RvcjsKKyAgICBDSEVDS19FUShzZWN0aW9uX3N5bnRheF9pbmRpY3RvciwgMXUpOworCisgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDB1KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgcmVzZXJ2ZWQgPSAiIDw8IGJyLT5nZXRCaXRzKDIpOworCisgICAgdW5zaWduZWQgc2VjdGlvbl9sZW5ndGggPSBici0+Z2V0Qml0cygxMik7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHNlY3Rpb25fbGVuZ3RoID0gIiA8PCBzZWN0aW9uX2xlbmd0aDsKKyAgICBDSEVDSygoc2VjdGlvbl9sZW5ndGggJiAweGMwMCkgPT0gMCk7CisKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgdHJhbnNwb3J0X3N0cmVhbV9pZCA9ICIgPDwgYnItPmdldEJpdHMoMTYpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICByZXNlcnZlZCA9ICIgPDwgYnItPmdldEJpdHMoMik7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHZlcnNpb25fbnVtYmVyID0gIiA8PCBici0+Z2V0Qml0cyg1KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgY3VycmVudF9uZXh0X2luZGljYXRvciA9ICIgPDwgYnItPmdldEJpdHMoMSk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHNlY3Rpb25fbnVtYmVyID0gIiA8PCBici0+Z2V0Qml0cyg4KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgbGFzdF9zZWN0aW9uX251bWJlciA9ICIgPDwgYnItPmdldEJpdHMoOCk7CisKKyAgICBzaXplX3QgbnVtUHJvZ3JhbUJ5dGVzID0gKHNlY3Rpb25fbGVuZ3RoIC0gNSAvKiBoZWFkZXIgKi8gLSA0IC8qIGNyYyAqLyk7CisgICAgQ0hFQ0tfRVEoKG51bVByb2dyYW1CeXRlcyAlIDQpLCAwdSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb2dyYW1CeXRlcyAvIDQ7ICsraSkgeworICAgICAgICB1bnNpZ25lZCBwcm9ncmFtX251bWJlciA9IGJyLT5nZXRCaXRzKDE2KTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICIgICAgcHJvZ3JhbV9udW1iZXIgPSAiIDw8IHByb2dyYW1fbnVtYmVyOworCisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiICAgIHJlc2VydmVkID0gIiA8PCBici0+Z2V0Qml0cygzKTsKKworICAgICAgICBpZiAocHJvZ3JhbV9udW1iZXIgPT0gMCkgeworICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICIgICAgbmV0d29ya19QSUQgPSAiCisgICAgICAgICAgICAgICAgICAgICAgPDwgU3RyaW5nUHJpbnRmKCIweCUwNHgiLCBici0+Z2V0Qml0cygxMykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdW5zaWduZWQgcHJvZ3JhbU1hcFBJRCA9IGJyLT5nZXRCaXRzKDEzKTsKKworICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICIgICAgcHJvZ3JhbV9tYXBfUElEID0gIgorICAgICAgICAgICAgICAgICAgICAgIDw8IFN0cmluZ1ByaW50ZigiMHglMDR4IiwgcHJvZ3JhbU1hcFBJRCk7CisKKyAgICAgICAgICAgIG1Qcm9ncmFtcy5wdXNoKG5ldyBQcm9ncmFtKHByb2dyYW1NYXBQSUQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIExPRyhWRVJCT1NFKSA8PCAiICBDUkMgPSAiIDw8IFN0cmluZ1ByaW50ZigiMHglMDh4IiwgYnItPmdldEJpdHMoMzIpKTsKK30KKwordm9pZCBBVFNQYXJzZXI6OnBhcnNlUElEKAorICAgICAgICBBQml0UmVhZGVyICpiciwgdW5zaWduZWQgUElELAorICAgICAgICB1bnNpZ25lZCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yKSB7CisgICAgaWYgKFBJRCA9PSAwKSB7CisgICAgICAgIGlmIChwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBza2lwID0gYnItPmdldEJpdHMoOCk7CisgICAgICAgICAgICBici0+c2tpcEJpdHMoc2tpcCAqIDgpOworICAgICAgICB9CisgICAgICAgIHBhcnNlUHJvZ3JhbUFzc29jaWF0aW9uVGFibGUoYnIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtUHJvZ3JhbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1Qcm9ncmFtcy5lZGl0SXRlbUF0KGkpLT5wYXJzZVBJRCgKKyAgICAgICAgICAgICAgICAgICAgUElELCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yLCBicikpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgTE9HKFdBUk5JTkcpIDw8ICJQSUQgIiA8PCBTdHJpbmdQcmludGYoIjB4JTA0eCIsIFBJRCkKKyAgICAgICAgICAgICAgICAgICAgIDw8ICIgbm90IGhhbmRsZWQuIjsKKyAgICB9Cit9CisKK3ZvaWQgQVRTUGFyc2VyOjpwYXJzZUFkYXB0YXRpb25GaWVsZChBQml0UmVhZGVyICpicikgeworICAgIHVuc2lnbmVkIGFkYXB0YXRpb25fZmllbGRfbGVuZ3RoID0gYnItPmdldEJpdHMoOCk7CisgICAgaWYgKGFkYXB0YXRpb25fZmllbGRfbGVuZ3RoID4gMCkgeworICAgICAgICBici0+c2tpcEJpdHMoYWRhcHRhdGlvbl9maWVsZF9sZW5ndGggKiA4KTsgIC8vIFhYWAorICAgIH0KK30KKwordm9pZCBBVFNQYXJzZXI6OnBhcnNlVFMoQUJpdFJlYWRlciAqYnIpIHsKKyAgICBMT0coVkVSQk9TRSkgPDwgIi0tLSI7CisKKyAgICB1bnNpZ25lZCBzeW5jX2J5dGUgPSBici0+Z2V0Qml0cyg4KTsKKyAgICBDSEVDS19FUShzeW5jX2J5dGUsIDB4NDd1KTsKKworICAgIExPRyhWRVJCT1NFKSA8PCAidHJhbnNwb3J0X2Vycm9yX2luZGljYXRvciA9ICIgPDwgYnItPmdldEJpdHMoMSk7CisKKyAgICB1bnNpZ25lZCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yID0gYnItPmdldEJpdHMoMSk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yID0gIgorICAgICAgICAgICAgICAgICA8PCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yOworCisgICAgTE9HKFZFUkJPU0UpIDw8ICJ0cmFuc3BvcnRfcHJpb3JpdHkgPSAiIDw8IGJyLT5nZXRCaXRzKDEpOworCisgICAgdW5zaWduZWQgUElEID0gYnItPmdldEJpdHMoMTMpOworICAgIExPRyhWRVJCT1NFKSA8PCAiUElEID0gIiA8PCBTdHJpbmdQcmludGYoIjB4JTA0eCIsIFBJRCk7CisKKyAgICBMT0coVkVSQk9TRSkgPDwgInRyYW5zcG9ydF9zY3JhbWJsaW5nX2NvbnRyb2wgPSAiIDw8IGJyLT5nZXRCaXRzKDIpOworCisgICAgdW5zaWduZWQgYWRhcHRhdGlvbl9maWVsZF9jb250cm9sID0gYnItPmdldEJpdHMoMik7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJhZGFwdGF0aW9uX2ZpZWxkX2NvbnRyb2wgPSAiIDw8IGFkYXB0YXRpb25fZmllbGRfY29udHJvbDsKKworICAgIExPRyhWRVJCT1NFKSA8PCAiY29udGludWl0eV9jb3VudGVyID0gIiA8PCBici0+Z2V0Qml0cyg0KTsKKworICAgIGlmIChhZGFwdGF0aW9uX2ZpZWxkX2NvbnRyb2wgPT0gMiB8fCBhZGFwdGF0aW9uX2ZpZWxkX2NvbnRyb2wgPT0gMykgeworICAgICAgICBwYXJzZUFkYXB0YXRpb25GaWVsZChicik7CisgICAgfQorCisgICAgaWYgKGFkYXB0YXRpb25fZmllbGRfY29udHJvbCA9PSAxIHx8IGFkYXB0YXRpb25fZmllbGRfY29udHJvbCA9PSAzKSB7CisgICAgICAgIHBhcnNlUElEKGJyLCBQSUQsIHBheWxvYWRfdW5pdF9zdGFydF9pbmRpY2F0b3IpOworICAgIH0KK30KKworc3A8TWVkaWFTb3VyY2U+IEFUU1BhcnNlcjo6Z2V0U291cmNlKFNvdXJjZVR5cGUgdHlwZSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVByb2dyYW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgIHNwPE1lZGlhU291cmNlPiBzb3VyY2UgPSBtUHJvZ3JhbXMuZWRpdEl0ZW1BdChpKS0+Z2V0U291cmNlKHR5cGUpOworCisgICAgICAgIGlmIChzb3VyY2UgIT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BVFNQYXJzZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQVRTUGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyMmU3YgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQVRTUGFyc2VyLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9UU19QQVJTRVJfSF8KKworI2RlZmluZSBBX1RTX1BBUlNFUl9IXworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBQml0UmVhZGVyOworc3RydWN0IE1lZGlhU291cmNlOworCitzdHJ1Y3QgQVRTUGFyc2VyIDogcHVibGljIFJlZkJhc2UgeworICAgIEFUU1BhcnNlcigpOworCisgICAgdm9pZCBmZWVkVFNQYWNrZXQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgZW51bSBTb3VyY2VUeXBlIHsKKyAgICAgICAgQVZDX1ZJREVPLAorICAgICAgICBNUEVHMkFEVFNfQVVESU8KKyAgICB9OworICAgIHNwPE1lZGlhU291cmNlPiBnZXRTb3VyY2UoU291cmNlVHlwZSB0eXBlKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFUU1BhcnNlcigpOworCitwcml2YXRlOgorICAgIHN0cnVjdCBQcm9ncmFtOworICAgIHN0cnVjdCBTdHJlYW07CisKKyAgICBWZWN0b3I8c3A8UHJvZ3JhbT4gPiBtUHJvZ3JhbXM7CisKKyAgICB2b2lkIHBhcnNlUHJvZ3JhbUFzc29jaWF0aW9uVGFibGUoQUJpdFJlYWRlciAqYnIpOworICAgIHZvaWQgcGFyc2VQcm9ncmFtTWFwKEFCaXRSZWFkZXIgKmJyKTsKKyAgICB2b2lkIHBhcnNlUEVTKEFCaXRSZWFkZXIgKmJyKTsKKworICAgIHZvaWQgcGFyc2VQSUQoCisgICAgICAgIEFCaXRSZWFkZXIgKmJyLCB1bnNpZ25lZCBQSUQsCisgICAgICAgIHVuc2lnbmVkIHBheWxvYWRfdW5pdF9zdGFydF9pbmRpY2F0b3IpOworCisgICAgdm9pZCBwYXJzZUFkYXB0YXRpb25GaWVsZChBQml0UmVhZGVyICpicik7CisgICAgdm9pZCBwYXJzZVRTKEFCaXRSZWFkZXIgKmJyKTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFUU1BhcnNlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfVFNfUEFSU0VSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY3NzJlYgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQW5kcm9pZC5tawpAQCAtMCwwICsxLDIyIEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUzo9ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEFCaXRSZWFkZXIuY3BwICAgICAgICAgICAgXAorICAgICAgICBBbm90aGVyUGFja2V0U291cmNlLmNwcCAgIFwKKyAgICAgICAgQVRTUGFyc2VyLmNwcCAgICAgICAgICAgICBcCisgICAgICAgIE1QRUcyVFNFeHRyYWN0b3IuY3BwICAgICAgXAorCitMT0NBTF9DX0lOQ0xVREVTOj0gXAorCSQoSk5JX0hfSU5DTFVERSkgXAorCSQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZSBcCisgICAgICAgICQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQKKworTE9DQUxfTU9EVUxFOj0gbGlic3RhZ2VmcmlnaHRfbXBlZzJ0cworCitpZmVxICgkKFRBUkdFVF9BUkNIKSxhcm0pCisgICAgTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tcHNhYmkKK2VuZGlmCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQW5vdGhlclBhY2tldFNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0Fub3RoZXJQYWNrZXRTb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNTExNzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0Fub3RoZXJQYWNrZXRTb3VyY2UuY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFub3RoZXJQYWNrZXRTb3VyY2UuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vaGV4ZHVtcC5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitBbm90aGVyUGFja2V0U291cmNlOjpBbm90aGVyUGFja2V0U291cmNlKGNvbnN0IHNwPE1ldGFEYXRhPiAmbWV0YSkKKyAgICA6IG1Gb3JtYXQobWV0YSksCisgICAgICBtRU9TUmVzdWx0KE9LKSB7Cit9CisKK0Fub3RoZXJQYWNrZXRTb3VyY2U6On5Bbm90aGVyUGFja2V0U291cmNlKCkgeworfQorCitzdGF0dXNfdCBBbm90aGVyUGFja2V0U291cmNlOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBBbm90aGVyUGFja2V0U291cmNlOjpzdG9wKCkgeworICAgIHJldHVybiBPSzsKK30KKworc3A8TWV0YURhdGE+IEFub3RoZXJQYWNrZXRTb3VyY2U6OmdldEZvcm1hdCgpIHsKKyAgICByZXR1cm4gbUZvcm1hdDsKK30KKworc3RhdHVzX3QgQW5vdGhlclBhY2tldFNvdXJjZTo6cmVhZCgKKyAgICAgICAgTWVkaWFCdWZmZXIgKipvdXQsIGNvbnN0IFJlYWRPcHRpb25zICopIHsKKyAgICAqb3V0ID0gTlVMTDsKKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisgICAgd2hpbGUgKG1FT1NSZXN1bHQgPT0gT0sgJiYgbUJ1ZmZlcnMuZW1wdHkoKSkgeworICAgICAgICBtQ29uZGl0aW9uLndhaXQobUxvY2spOworICAgIH0KKworICAgIGlmICghbUJ1ZmZlcnMuZW1wdHkoKSkgeworICAgICAgICBjb25zdCBzcDxBQnVmZmVyPiBidWZmZXIgPSAqbUJ1ZmZlcnMuYmVnaW4oKTsKKworICAgICAgICB1aW50NjRfdCB0aW1lVXM7CisgICAgICAgIENIRUNLKGJ1ZmZlci0+bWV0YSgpLT5maW5kSW50NjQoCisgICAgICAgICAgICAgICAgICAgICJ0aW1lIiwgKGludDY0X3QgKikmdGltZVVzKSk7CisKKyAgICAgICAgTWVkaWFCdWZmZXIgKm1lZGlhQnVmZmVyID0gbmV3IE1lZGlhQnVmZmVyKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbWVkaWFCdWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgdGltZVVzKTsKKworICAgICAgICAvLyBoZXhkdW1wKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisKKyAgICAgICAgbWVtY3B5KG1lZGlhQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpvdXQgPSBtZWRpYUJ1ZmZlcjsKKworICAgICAgICBtQnVmZmVycy5lcmFzZShtQnVmZmVycy5iZWdpbigpKTsKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0KKworICAgIHJldHVybiBtRU9TUmVzdWx0OworfQorCit2b2lkIEFub3RoZXJQYWNrZXRTb3VyY2U6OnF1ZXVlQWNjZXNzVW5pdChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisgICAgaW50MzJfdCBkYW1hZ2VkOworICAgIGlmIChidWZmZXItPm1ldGEoKS0+ZmluZEludDMyKCJkYW1hZ2VkIiwgJmRhbWFnZWQpICYmIGRhbWFnZWQpIHsKKyAgICAgICAgLy8gTE9HKFZFUkJPU0UpIDw8ICJkaXNjYXJkaW5nIGRhbWFnZWQgQVUiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICBtQnVmZmVycy5wdXNoX2JhY2soYnVmZmVyKTsKKyAgICBtQ29uZGl0aW9uLnNpZ25hbCgpOworfQorCit2b2lkIEFub3RoZXJQYWNrZXRTb3VyY2U6OnNpZ25hbEVPUyhzdGF0dXNfdCByZXN1bHQpIHsKKyAgICBDSEVDSyhyZXN1bHQgIT0gT0spOworCisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICBtRU9TUmVzdWx0ID0gcmVzdWx0OworICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Cit9CisKK2Jvb2wgQW5vdGhlclBhY2tldFNvdXJjZTo6aGFzQnVmZmVyQXZhaWxhYmxlKHN0YXR1c190ICpmaW5hbFJlc3VsdCkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisgICAgaWYgKCFtQnVmZmVycy5lbXB0eSgpKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgICpmaW5hbFJlc3VsdCA9IG1FT1NSZXN1bHQ7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9Bbm90aGVyUGFja2V0U291cmNlLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0Fub3RoZXJQYWNrZXRTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTgzZDIxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9Bbm90aGVyUGFja2V0U291cmNlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5PVEhFUl9QQUNLRVRfU09VUkNFX0hfCisKKyNkZWZpbmUgQU5PVEhFUl9QQUNLRVRfU09VUkNFX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCYXNlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+CisjaW5jbHVkZSA8dXRpbHMvTGlzdC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBQnVmZmVyOworCitzdHJ1Y3QgQW5vdGhlclBhY2tldFNvdXJjZSA6IHB1YmxpYyBNZWRpYVNvdXJjZSB7CisgICAgQW5vdGhlclBhY2tldFNvdXJjZShjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zID0gTlVMTCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzdG9wKCk7CisgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0Rm9ybWF0KCk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHJlYWQoCisgICAgICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMgPSBOVUxMKTsKKworICAgIGJvb2wgaGFzQnVmZmVyQXZhaWxhYmxlKHN0YXR1c190ICpmaW5hbFJlc3VsdCk7CisKKyAgICB2b2lkIHF1ZXVlQWNjZXNzVW5pdChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKTsKKyAgICB2b2lkIHNpZ25hbEVPUyhzdGF0dXNfdCByZXN1bHQpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+QW5vdGhlclBhY2tldFNvdXJjZSgpOworCitwcml2YXRlOgorICAgIE11dGV4IG1Mb2NrOworICAgIENvbmRpdGlvbiBtQ29uZGl0aW9uOworCisgICAgc3A8TWV0YURhdGE+IG1Gb3JtYXQ7CisgICAgTGlzdDxzcDxBQnVmZmVyPiA+IG1CdWZmZXJzOworICAgIHN0YXR1c190IG1FT1NSZXN1bHQ7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBbm90aGVyUGFja2V0U291cmNlKTsKK307CisKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBTk9USEVSX1BBQ0tFVF9TT1VSQ0VfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvTVBFRzJUU0V4dHJhY3Rvci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL01QRUcyVFNFeHRyYWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyODdjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL01QRUcyVFNFeHRyYWN0b3IuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2RlZmluZSBMT0dfVEFHICJNUEVHMlRTRXh0cmFjdG9yIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSAiaW5jbHVkZS9NUEVHMlRTRXh0cmFjdG9yLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgorCisjaW5jbHVkZSAiQW5vdGhlclBhY2tldFNvdXJjZS5oIgorI2luY2x1ZGUgIkFUU1BhcnNlci5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBNUEVHMlRTU291cmNlIDogcHVibGljIE1lZGlhU291cmNlIHsKKyAgICBNUEVHMlRTU291cmNlKAorICAgICAgICAgICAgY29uc3Qgc3A8TVBFRzJUU0V4dHJhY3Rvcj4gJmV4dHJhY3RvciwKKyAgICAgICAgICAgIGNvbnN0IHNwPEFub3RoZXJQYWNrZXRTb3VyY2U+ICZpbXBsKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtcyA9IE5VTEwpOworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOworICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldEZvcm1hdCgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAorICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zID0gTlVMTCk7CisKK3ByaXZhdGU6CisgICAgc3A8TVBFRzJUU0V4dHJhY3Rvcj4gbUV4dHJhY3RvcjsKKyAgICBzcDxBbm90aGVyUGFja2V0U291cmNlPiBtSW1wbDsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKE1QRUcyVFNTb3VyY2UpOworfTsKKworTVBFRzJUU1NvdXJjZTo6TVBFRzJUU1NvdXJjZSgKKyAgICAgICAgY29uc3Qgc3A8TVBFRzJUU0V4dHJhY3Rvcj4gJmV4dHJhY3RvciwKKyAgICAgICAgY29uc3Qgc3A8QW5vdGhlclBhY2tldFNvdXJjZT4gJmltcGwpCisgICAgOiBtRXh0cmFjdG9yKGV4dHJhY3RvciksCisgICAgICBtSW1wbChpbXBsKSB7Cit9CisKK3N0YXR1c190IE1QRUcyVFNTb3VyY2U6OnN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpIHsKKyAgICByZXR1cm4gbUltcGwtPnN0YXJ0KHBhcmFtcyk7Cit9CisKK3N0YXR1c190IE1QRUcyVFNTb3VyY2U6OnN0b3AoKSB7CisgICAgcmV0dXJuIG1JbXBsLT5zdG9wKCk7Cit9CisKK3NwPE1ldGFEYXRhPiBNUEVHMlRTU291cmNlOjpnZXRGb3JtYXQoKSB7CisgICAgcmV0dXJuIG1JbXBsLT5nZXRGb3JtYXQoKTsKK30KKworc3RhdHVzX3QgTVBFRzJUU1NvdXJjZTo6cmVhZCgKKyAgICAgICAgTWVkaWFCdWZmZXIgKipvdXQsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zKSB7CisgICAgKm91dCA9IE5VTEw7CisKKyAgICBzdGF0dXNfdCBmaW5hbFJlc3VsdDsKKyAgICB3aGlsZSAoIW1JbXBsLT5oYXNCdWZmZXJBdmFpbGFibGUoJmZpbmFsUmVzdWx0KSkgeworICAgICAgICBpZiAoZmluYWxSZXN1bHQgIT0gT0spIHsKKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9FTkRfT0ZfU1RSRUFNOworICAgICAgICB9CisKKyAgICAgICAgc3RhdHVzX3QgZXJyID0gbUV4dHJhY3Rvci0+ZmVlZE1vcmUoKTsKKyAgICAgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICAgICAgbUltcGwtPnNpZ25hbEVPUyhlcnIpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG1JbXBsLT5yZWFkKG91dCwgb3B0aW9ucyk7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK01QRUcyVFNFeHRyYWN0b3I6Ok1QRUcyVFNFeHRyYWN0b3IoY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSkKKyAgICA6IG1EYXRhU291cmNlKHNvdXJjZSksCisgICAgICBtUGFyc2VyKG5ldyBBVFNQYXJzZXIpLAorICAgICAgbU9mZnNldCgwKSB7CisgICAgaW5pdCgpOworfQorCitzaXplX3QgTVBFRzJUU0V4dHJhY3Rvcjo6Y291bnRUcmFja3MoKSB7CisgICAgcmV0dXJuIG1Tb3VyY2VJbXBscy5zaXplKCk7Cit9CisKK3NwPE1lZGlhU291cmNlPiBNUEVHMlRTRXh0cmFjdG9yOjpnZXRUcmFjayhzaXplX3QgaW5kZXgpIHsKKyAgICBpZiAoaW5kZXggPj0gbVNvdXJjZUltcGxzLnNpemUoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3IE1QRUcyVFNTb3VyY2UodGhpcywgbVNvdXJjZUltcGxzLmVkaXRJdGVtQXQoaW5kZXgpKTsKK30KKworc3A8TWV0YURhdGE+IE1QRUcyVFNFeHRyYWN0b3I6OmdldFRyYWNrTWV0YURhdGEoCisgICAgICAgIHNpemVfdCBpbmRleCwgdWludDMyX3QgZmxhZ3MpIHsKKyAgICByZXR1cm4gaW5kZXggPCBtU291cmNlSW1wbHMuc2l6ZSgpCisgICAgICAgID8gbVNvdXJjZUltcGxzLmVkaXRJdGVtQXQoaW5kZXgpLT5nZXRGb3JtYXQoKSA6IE5VTEw7Cit9CisKK3NwPE1ldGFEYXRhPiBNUEVHMlRTRXh0cmFjdG9yOjpnZXRNZXRhRGF0YSgpIHsKKyAgICBzcDxNZXRhRGF0YT4gbWV0YSA9IG5ldyBNZXRhRGF0YTsKKyAgICBtZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX01QRUcyVFMpOworCisgICAgcmV0dXJuIG1ldGE7Cit9CisKK3ZvaWQgTVBFRzJUU0V4dHJhY3Rvcjo6aW5pdCgpIHsKKyAgICBib29sIGhhdmVBdWRpbyA9IGZhbHNlOworICAgIGJvb2wgaGF2ZVZpZGVvID0gZmFsc2U7CisKKyAgICB3aGlsZSAoZmVlZE1vcmUoKSA9PSBPSykgeworICAgICAgICBBVFNQYXJzZXI6OlNvdXJjZVR5cGUgdHlwZTsKKyAgICAgICAgaWYgKGhhdmVBdWRpbyAmJiBoYXZlVmlkZW8pIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChoYXZlVmlkZW8pIHsKKyAgICAgICAgICAgIHR5cGUgPSBBVFNQYXJzZXI6Ok1QRUcyQURUU19BVURJTzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHR5cGUgPSBBVFNQYXJzZXI6OkFWQ19WSURFTzsKKyAgICAgICAgfQorICAgICAgICBzcDxBbm90aGVyUGFja2V0U291cmNlPiBpbXBsID0KKyAgICAgICAgICAgIChBbm90aGVyUGFja2V0U291cmNlICopbVBhcnNlci0+Z2V0U291cmNlKHR5cGUpLmdldCgpOworCisgICAgICAgIGlmIChpbXBsICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICh0eXBlID09IEFUU1BhcnNlcjo6TVBFRzJBRFRTX0FVRElPKSB7CisgICAgICAgICAgICAgICAgaGF2ZUF1ZGlvID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaGF2ZVZpZGVvID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1Tb3VyY2VJbXBscy5wdXNoKGltcGwpOworICAgICAgICB9CisgICAgfQorCisgICAgTE9HSSgiaGF2ZUF1ZGlvPSVkLCBoYXZlVmlkZW89JWQiLCBoYXZlQXVkaW8sIGhhdmVWaWRlbyk7Cit9CisKK3N0YXR1c190IE1QRUcyVFNFeHRyYWN0b3I6OmZlZWRNb3JlKCkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtUU1BhY2tldFNpemUgPSAxODg7CisKKyAgICB1aW50OF90IHBhY2tldFtrVFNQYWNrZXRTaXplXTsKKyAgICBzc2l6ZV90IG4gPSBtRGF0YVNvdXJjZS0+cmVhZEF0KG1PZmZzZXQsIHBhY2tldCwga1RTUGFja2V0U2l6ZSk7CisKKyAgICBpZiAobiA8IChzc2l6ZV90KWtUU1BhY2tldFNpemUpIHsKKyAgICAgICAgcmV0dXJuIChuIDwgMCkgPyAoc3RhdHVzX3QpbiA6IEVSUk9SX0VORF9PRl9TVFJFQU07CisgICAgfQorCisgICAgbU9mZnNldCArPSBrVFNQYWNrZXRTaXplOworICAgIG1QYXJzZXItPmZlZWRUU1BhY2tldChwYWNrZXQsIGtUU1BhY2tldFNpemUpOworCisgICAgcmV0dXJuIE9LOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitib29sIFNuaWZmTVBFRzJUUygKKyAgICAgICAgY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSwgU3RyaW5nOCAqbWltZVR5cGUsIGZsb2F0ICpjb25maWRlbmNlKSB7CisjaWYgMAorICAgIGNoYXIgaGVhZGVyOworICAgIGlmIChzb3VyY2UtPnJlYWRBdCgwLCAmaGVhZGVyLCAxKSAhPSAxIHx8IGhlYWRlciAhPSAweDQ3KSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqY29uZmlkZW5jZSA9IDAuMDVmOworICAgIG1pbWVUeXBlLT5zZXRUbyhNRURJQV9NSU1FVFlQRV9DT05UQUlORVJfTVBFRzJUUyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgLy8gRm9yIG5vdyB3ZSdyZSBnb2luZyB0byBuZXZlciBpZGVudGlmeSB0aGlzIHR5cGUgb2Ygc3RyZWFtLCBzaW5jZSB3ZSdkCisgICAgLy8ganVzdCBiYXNlIG91ciBkZWNpc2lvbiBvbiBhIHNpbmdsZSBieXRlLi4uCisgICAgLy8gSW5zdGVhZCB5b3UgY2FuIGluc3RhbnRpYXRlIGFuIE1QRUcyVFNFeHRyYWN0b3IgYnkgZXhwbGljaXRseSBzdGF0aW5nCisgICAgLy8gaXRzIHByb3BlciBtaW1lIHR5cGUgaW4gdGhlIGNhbGwgdG8gTWVkaWFFeHRyYWN0b3I6OkNyZWF0ZSguLi4pLgorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L09NWC5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YLmNwcAppbmRleCAxMzJlMzFiLi42ZGU3NjFmIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YLmNwcApAQCAtNDMsNyArNDMsNyBAQAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogc3RydWN0IE9NWDo6Q2FsbGJhY2tEaXNwYXRjaGVyIDogcHVibGljIFJlZkJhc2UgewotICAgIENhbGxiYWNrRGlzcGF0Y2hlcihPTVggKm93bmVyKTsKKyAgICBDYWxsYmFja0Rpc3BhdGNoZXIoT01YTm9kZUluc3RhbmNlICpvd25lcik7CiAKICAgICB2b2lkIHBvc3QoY29uc3Qgb214X21lc3NhZ2UgJm1zZyk7CiAKQEAgLTUzLDcgKzUzLDcgQEAKIHByaXZhdGU6CiAgICAgTXV0ZXggbUxvY2s7CiAKLSAgICBPTVggKm1Pd25lcjsKKyAgICBPTVhOb2RlSW5zdGFuY2UgKm1Pd25lcjsKICAgICBib29sIG1Eb25lOwogICAgIENvbmRpdGlvbiBtUXVldWVDaGFuZ2VkOwogICAgIExpc3Q8b214X21lc3NhZ2U+IG1RdWV1ZTsKQEAgLTY5LDcgKzY5LDcgQEAKICAgICBDYWxsYmFja0Rpc3BhdGNoZXIgJm9wZXJhdG9yPShjb25zdCBDYWxsYmFja0Rpc3BhdGNoZXIgJik7CiB9OwogCi1PTVg6OkNhbGxiYWNrRGlzcGF0Y2hlcjo6Q2FsbGJhY2tEaXNwYXRjaGVyKE9NWCAqb3duZXIpCitPTVg6OkNhbGxiYWNrRGlzcGF0Y2hlcjo6Q2FsbGJhY2tEaXNwYXRjaGVyKE9NWE5vZGVJbnN0YW5jZSAqb3duZXIpCiAgICAgOiBtT3duZXIob3duZXIpLAogICAgICAgbURvbmUoZmFsc2UpIHsKICAgICBwdGhyZWFkX2F0dHJfdCBhdHRyOwpAQCAtMTAxLDEyICsxMDEsMTEgQEAKIH0KIAogdm9pZCBPTVg6OkNhbGxiYWNrRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3Qgb214X21lc3NhZ2UgJm1zZykgewotICAgIE9NWE5vZGVJbnN0YW5jZSAqaW5zdGFuY2UgPSBtT3duZXItPmZpbmRJbnN0YW5jZShtc2cubm9kZSk7Ci0gICAgaWYgKGluc3RhbmNlID09IE5VTEwpIHsKKyAgICBpZiAobU93bmVyID09IE5VTEwpIHsKICAgICAgICAgTE9HVigiV291bGQgaGF2ZSBkaXNwYXRjaGVkIGEgbWVzc2FnZSB0byBhIG5vZGUgdGhhdCdzIGFscmVhZHkgZ29uZS4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpbnN0YW5jZS0+b25NZXNzYWdlKG1zZyk7CisgICAgbU93bmVyLT5vbk1lc3NhZ2UobXNnKTsKIH0KIAogLy8gc3RhdGljCkBAIC0xNDUsNyArMTQ0LDYgQEAKIAogT01YOjpPTVgoKQogICAgIDogbU1hc3RlcihuZXcgT01YTWFzdGVyKSwKLSAgICAgIG1EaXNwYXRjaGVyKG5ldyBDYWxsYmFja0Rpc3BhdGNoZXIodGhpcykpLAogICAgICAgbU5vZGVDb3VudGVyKDApIHsKIH0KIApAQCAtMTY2LDYgKzE2NCwxMCBAQAogICAgICAgICBpbnN0YW5jZSA9IG1MaXZlTm9kZXMuZWRpdFZhbHVlQXQoaW5kZXgpOwogICAgICAgICBtTGl2ZU5vZGVzLnJlbW92ZUl0ZW1zQXQoaW5kZXgpOwogCisgICAgICAgIGluZGV4ID0gbURpc3BhdGNoZXJzLmluZGV4T2ZLZXkoaW5zdGFuY2UtPm5vZGVJRCgpKTsKKyAgICAgICAgQ0hFQ0soaW5kZXggPj0gMCk7CisgICAgICAgIG1EaXNwYXRjaGVycy5yZW1vdmVJdGVtc0F0KGluZGV4KTsKKwogICAgICAgICBpbnZhbGlkYXRlTm9kZUlEX2woaW5zdGFuY2UtPm5vZGVJRCgpKTsKICAgICB9CiAKQEAgLTIyNiw2ICsyMjgsNyBAQAogICAgIH0KIAogICAgICpub2RlID0gbWFrZU5vZGVJRChpbnN0YW5jZSk7CisgICAgbURpc3BhdGNoZXJzLmFkZCgqbm9kZSwgbmV3IENhbGxiYWNrRGlzcGF0Y2hlcihpbnN0YW5jZSkpOwogCiAgICAgaW5zdGFuY2UtPnNldEhhbmRsZSgqbm9kZSwgaGFuZGxlKTsKIApAQCAtMjQxLDYgKzI0NCwxMSBAQAogICAgIHNzaXplX3QgaW5kZXggPSBtTGl2ZU5vZGVzLmluZGV4T2ZLZXkoaW5zdGFuY2UtPm9ic2VydmVyKCktPmFzQmluZGVyKCkpOwogICAgIENIRUNLKGluZGV4ID49IDApOwogICAgIG1MaXZlTm9kZXMucmVtb3ZlSXRlbXNBdChpbmRleCk7CisKKyAgICBpbmRleCA9IG1EaXNwYXRjaGVycy5pbmRleE9mS2V5KG5vZGUpOworICAgIENIRUNLKGluZGV4ID49IDApOworICAgIG1EaXNwYXRjaGVycy5yZW1vdmVJdGVtc0F0KGluZGV4KTsKKwogICAgIGluc3RhbmNlLT5vYnNlcnZlcigpLT5hc0JpbmRlcigpLT51bmxpbmtUb0RlYXRoKHRoaXMpOwogCiAgICAgcmV0dXJuIGluc3RhbmNlLT5mcmVlTm9kZShtTWFzdGVyKTsKQEAgLTM0MSw3ICszNDksNyBAQAogICAgIG1zZy51LmV2ZW50X2RhdGEuZGF0YTEgPSBuRGF0YTE7CiAgICAgbXNnLnUuZXZlbnRfZGF0YS5kYXRhMiA9IG5EYXRhMjsKIAotICAgIG1EaXNwYXRjaGVyLT5wb3N0KG1zZyk7CisgICAgZmluZERpc3BhdGNoZXIobm9kZSktPnBvc3QobXNnKTsKIAogICAgIHJldHVybiBPTVhfRXJyb3JOb25lOwogfQpAQCAtMzU1LDcgKzM2Myw3IEBACiAgICAgbXNnLm5vZGUgPSBub2RlOwogICAgIG1zZy51LmJ1ZmZlcl9kYXRhLmJ1ZmZlciA9IHBCdWZmZXI7CiAKLSAgICBtRGlzcGF0Y2hlci0+cG9zdChtc2cpOworICAgIGZpbmREaXNwYXRjaGVyKG5vZGUpLT5wb3N0KG1zZyk7CiAKICAgICByZXR1cm4gT01YX0Vycm9yTm9uZTsKIH0KQEAgLTM3NSw3ICszODMsNyBAQAogICAgIG1zZy51LmV4dGVuZGVkX2J1ZmZlcl9kYXRhLnBsYXRmb3JtX3ByaXZhdGUgPSBwQnVmZmVyLT5wUGxhdGZvcm1Qcml2YXRlOwogICAgIG1zZy51LmV4dGVuZGVkX2J1ZmZlcl9kYXRhLmRhdGFfcHRyID0gcEJ1ZmZlci0+cEJ1ZmZlcjsKIAotICAgIG1EaXNwYXRjaGVyLT5wb3N0KG1zZyk7CisgICAgZmluZERpc3BhdGNoZXIobm9kZSktPnBvc3QobXNnKTsKIAogICAgIHJldHVybiBPTVhfRXJyb3JOb25lOwogfQpAQCAtMzk3LDYgKzQwNSwxNCBAQAogICAgIHJldHVybiBpbmRleCA8IDAgPyBOVUxMIDogbU5vZGVJRFRvSW5zdGFuY2UudmFsdWVBdChpbmRleCk7CiB9CiAKK3NwPE9NWDo6Q2FsbGJhY2tEaXNwYXRjaGVyPiBPTVg6OmZpbmREaXNwYXRjaGVyKG5vZGVfaWQgbm9kZSkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBzc2l6ZV90IGluZGV4ID0gbURpc3BhdGNoZXJzLmluZGV4T2ZLZXkobm9kZSk7CisKKyAgICByZXR1cm4gaW5kZXggPCAwID8gTlVMTCA6IG1EaXNwYXRjaGVycy52YWx1ZUF0KGluZGV4KTsKK30KKwogdm9pZCBPTVg6OmludmFsaWRhdGVOb2RlSUQobm9kZV9pZCBub2RlKSB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKICAgICBpbnZhbGlkYXRlTm9kZUlEX2wobm9kZSk7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YTWFzdGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L29teC9PTVhNYXN0ZXIuY3BwCmluZGV4IDlhNDViZWEuLjU2YjE2OWEgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L29teC9PTVhNYXN0ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L29teC9PTVhNYXN0ZXIuY3BwCkBAIC0xNCw2ICsxNCwxMCBAQAogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKi8KIAorLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2RlZmluZSBMT0dfVEFHICJPTVhNYXN0ZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKICNpbmNsdWRlICJPTVhNYXN0ZXIuaCIKIAogI2luY2x1ZGUgPGRsZmNuLmg+CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YTm9kZUluc3RhbmNlLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L29teC9PTVhOb2RlSW5zdGFuY2UuY3BwCmluZGV4IGMxYTAxMGMuLjVkYjUxNmUgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L29teC9PTVhOb2RlSW5zdGFuY2UuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L29teC9PTVhOb2RlSW5zdGFuY2UuY3BwCkBAIC0yNjQsNiArMjY0LDggQEAKICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgfQogCisgICAgQ0hFQ0tfRVEoaGVhZGVyLT5wQXBwUHJpdmF0ZSwgYnVmZmVyX21ldGEpOworCiAgICAgKmJ1ZmZlciA9IGhlYWRlcjsKIAogICAgIGFkZEFjdGl2ZUJ1ZmZlcihwb3J0SW5kZXgsICpidWZmZXIpOwpAQCAtMjk0LDYgKzI5Niw4IEBACiAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgIH0KIAorICAgIENIRUNLX0VRKGhlYWRlci0+cEFwcFByaXZhdGUsIGJ1ZmZlcl9tZXRhKTsKKwogICAgICpidWZmZXIgPSBoZWFkZXI7CiAgICAgKmJ1ZmZlcl9kYXRhID0gaGVhZGVyLT5wQnVmZmVyOwogCkBAIC0zMjUsNiArMzI5LDggQEAKICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgfQogCisgICAgQ0hFQ0tfRVEoaGVhZGVyLT5wQXBwUHJpdmF0ZSwgYnVmZmVyX21ldGEpOworCiAgICAgKmJ1ZmZlciA9IGhlYWRlcjsKIAogICAgIGFkZEFjdGl2ZUJ1ZmZlcihwb3J0SW5kZXgsICpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L3Rlc3RzL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvdGVzdHMvQW5kcm9pZC5tawppbmRleCBlZTExN2U1Li44YmY0MzM2IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvdGVzdHMvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvdGVzdHMvQW5kcm9pZC5tawpAQCAtMSw1ICsxLDMgQEAKLWlmZXEgKCQoQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUKSx0cnVlKQotCiBMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKIGluY2x1ZGUgJChDTEVBUl9WQVJTKQogCkBAIC0xNyw3ICsxNSwzIEBACiBMT0NBTF9NT0RVTEU6PSBvbXhfdGVzdHMKIAogaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCi0KLWVuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BQVZDQXNzZW1ibGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQUFWQ0Fzc2VtYmxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RmYjIwMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQUFWQ0Fzc2VtYmxlci5jcHAKQEAgLTAsMCArMSwzODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQUFWQ0Fzc2VtYmxlci5oIgorCisjaW5jbHVkZSAiQVJUUFNvdXJjZS5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmg+CisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2RlZmluZSBCRV9WRVJCT1NFICAgICAgMAorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIHN0YXRpYworQUFWQ0Fzc2VtYmxlcjo6QUFWQ0Fzc2VtYmxlcihjb25zdCBzcDxBTWVzc2FnZT4gJm5vdGlmeSkKKyAgICA6IG1Ob3RpZnlNc2cobm90aWZ5KSwKKyAgICAgIG1BY2Nlc3NVbml0UlRQVGltZSgwKSwKKyAgICAgIG1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkKGZhbHNlKSwKKyAgICAgIG1OZXh0RXhwZWN0ZWRTZXFObygwKSwKKyAgICAgIG1BY2Nlc3NVbml0RGFtYWdlZChmYWxzZSkgeworfQorCitBQVZDQXNzZW1ibGVyOjp+QUFWQ0Fzc2VtYmxlcigpIHsKK30KKworQVJUUEFzc2VtYmxlcjo6QXNzZW1ibHlTdGF0dXMgQUFWQ0Fzc2VtYmxlcjo6YWRkTkFMVW5pdCgKKyAgICAgICAgY29uc3Qgc3A8QVJUUFNvdXJjZT4gJnNvdXJjZSkgeworICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPiAqcXVldWUgPSBzb3VyY2UtPnF1ZXVlKCk7CisKKyAgICBpZiAocXVldWUtPmVtcHR5KCkpIHsKKyAgICAgICAgcmV0dXJuIE5PVF9FTk9VR0hfREFUQTsKKyAgICB9CisKKyAgICBpZiAobU5leHRFeHBlY3RlZFNlcU5vVmFsaWQpIHsKKyAgICAgICAgTGlzdDxzcDxBQnVmZmVyPiA+OjppdGVyYXRvciBpdCA9IHF1ZXVlLT5iZWdpbigpOworICAgICAgICB3aGlsZSAoaXQgIT0gcXVldWUtPmVuZCgpKSB7CisgICAgICAgICAgICBpZiAoKHVpbnQzMl90KSgqaXQpLT5pbnQzMkRhdGEoKSA+PSBtTmV4dEV4cGVjdGVkU2VxTm8pIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaXQgPSBxdWV1ZS0+ZXJhc2UoaXQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHF1ZXVlLT5lbXB0eSgpKSB7CisgICAgICAgICAgICByZXR1cm4gTk9UX0VOT1VHSF9EQVRBOworICAgICAgICB9CisgICAgfQorCisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gKnF1ZXVlLT5iZWdpbigpOworCisgICAgaWYgKCFtTmV4dEV4cGVjdGVkU2VxTm9WYWxpZCkgeworICAgICAgICBtTmV4dEV4cGVjdGVkU2VxTm9WYWxpZCA9IHRydWU7CisgICAgICAgIG1OZXh0RXhwZWN0ZWRTZXFObyA9ICh1aW50MzJfdClidWZmZXItPmludDMyRGF0YSgpOworICAgIH0gZWxzZSBpZiAoKHVpbnQzMl90KWJ1ZmZlci0+aW50MzJEYXRhKCkgIT0gbU5leHRFeHBlY3RlZFNlcU5vKSB7CisjaWYgQkVfVkVSQk9TRQorICAgICAgICBMT0coVkVSQk9TRSkgPDwgIk5vdCB0aGUgc2VxdWVuY2UgbnVtYmVyIEkgZXhwZWN0ZWQiOworI2VuZGlmCisKKyAgICAgICAgcmV0dXJuIFdST05HX1NFUVVFTkNFX05VTUJFUjsKKyAgICB9CisKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gYnVmZmVyLT5kYXRhKCk7CisgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnNpemUoKTsKKworICAgIGlmIChzaXplIDwgMSB8fCAoZGF0YVswXSAmIDB4ODApKSB7CisgICAgICAgIC8vIENvcnJ1cHQuCisKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiSWdub3JpbmcgY29ycnVwdCBidWZmZXIuIjsKKyAgICAgICAgcXVldWUtPmVyYXNlKHF1ZXVlLT5iZWdpbigpKTsKKworICAgICAgICArK21OZXh0RXhwZWN0ZWRTZXFObzsKKyAgICAgICAgcmV0dXJuIE1BTEZPUk1FRF9QQUNLRVQ7CisgICAgfQorCisgICAgdW5zaWduZWQgbmFsVHlwZSA9IGRhdGFbMF0gJiAweDFmOworICAgIGlmIChuYWxUeXBlID49IDEgJiYgbmFsVHlwZSA8PSAyMykgeworICAgICAgICBhZGRTaW5nbGVOQUxVbml0KGJ1ZmZlcik7CisgICAgICAgIHF1ZXVlLT5lcmFzZShxdWV1ZS0+YmVnaW4oKSk7CisgICAgICAgICsrbU5leHRFeHBlY3RlZFNlcU5vOworICAgICAgICByZXR1cm4gT0s7CisgICAgfSBlbHNlIGlmIChuYWxUeXBlID09IDI4KSB7CisgICAgICAgIC8vIEZVLUEKKyAgICAgICAgcmV0dXJuIGFkZEZyYWdtZW50ZWROQUxVbml0KHF1ZXVlKTsKKyAgICB9IGVsc2UgaWYgKG5hbFR5cGUgPT0gMjQpIHsKKyAgICAgICAgLy8gU1RBUC1BCisgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFkZFNpbmdsZVRpbWVBZ2dyZWdhdGlvblBhY2tldChidWZmZXIpOworICAgICAgICBxdWV1ZS0+ZXJhc2UocXVldWUtPmJlZ2luKCkpOworICAgICAgICArK21OZXh0RXhwZWN0ZWRTZXFObzsKKworICAgICAgICByZXR1cm4gc3VjY2VzcyA/IE9LIDogTUFMRk9STUVEX1BBQ0tFVDsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0coRVJST1IpIDw8ICJJZ25vcmluZyB1bnN1cHBvcnRlZCBidWZmZXIgKG5hbFR5cGU9IiA8PCBuYWxUeXBlIDw8ICIpIjsKKworICAgICAgICBxdWV1ZS0+ZXJhc2UocXVldWUtPmJlZ2luKCkpOworICAgICAgICArK21OZXh0RXhwZWN0ZWRTZXFObzsKKworICAgICAgICByZXR1cm4gTUFMRk9STUVEX1BBQ0tFVDsKKyAgICB9Cit9CisKK3ZvaWQgQUFWQ0Fzc2VtYmxlcjo6YWRkU2luZ2xlTkFMVW5pdChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisjaWYgQkVfVkVSQk9TRQorICAgIExPRyhWRVJCT1NFKSA8PCAiYWRkU2luZ2xlTkFMVW5pdCBvZiBzaXplICIgPDwgYnVmZmVyLT5zaXplKCk7CisgICAgaGV4ZHVtcChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworI2VuZGlmCisKKyAgICB1aW50MzJfdCBydHBUaW1lOworICAgIENIRUNLKGJ1ZmZlci0+bWV0YSgpLT5maW5kSW50MzIoInJ0cC10aW1lIiwgKGludDMyX3QgKikmcnRwVGltZSkpOworCisgICAgaWYgKCFtTkFMVW5pdHMuZW1wdHkoKSAmJiBydHBUaW1lICE9IG1BY2Nlc3NVbml0UlRQVGltZSkgeworICAgICAgICBzdWJtaXRBY2Nlc3NVbml0KCk7CisgICAgfQorICAgIG1BY2Nlc3NVbml0UlRQVGltZSA9IHJ0cFRpbWU7CisKKyAgICBtTkFMVW5pdHMucHVzaF9iYWNrKGJ1ZmZlcik7Cit9CisKK2Jvb2wgQUFWQ0Fzc2VtYmxlcjo6YWRkU2luZ2xlVGltZUFnZ3JlZ2F0aW9uUGFja2V0KGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpIHsKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gYnVmZmVyLT5kYXRhKCk7CisgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnNpemUoKTsKKworICAgIGlmIChzaXplIDwgMykgeworICAgICAgICBMT0coRVJST1IpIDw8ICJEaXNjYXJkaW5nIHRvbyBzbWFsbCBTVEFQLUEgcGFja2V0LiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICArK2RhdGE7CisgICAgLS1zaXplOworICAgIHdoaWxlIChzaXplID49IDIpIHsKKyAgICAgICAgc2l6ZV90IG5hbFNpemUgPSAoZGF0YVswXSA8PCA4KSB8IGRhdGFbMV07CisKKyAgICAgICAgaWYgKHNpemUgPCBuYWxTaXplICsgMikgeworICAgICAgICAgICAgTE9HKEVSUk9SKSA8PCAiRGlzY2FyZGluZyBtYWxmb3JtZWQgU1RBUC1BIHBhY2tldC4iOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc3A8QUJ1ZmZlcj4gdW5pdCA9IG5ldyBBQnVmZmVyKG5hbFNpemUpOworICAgICAgICBtZW1jcHkodW5pdC0+ZGF0YSgpLCAmZGF0YVsyXSwgbmFsU2l6ZSk7CisKKyAgICAgICAgUHJvcGFnYXRlVGltZXMoYnVmZmVyLCB1bml0KTsKKworICAgICAgICBhZGRTaW5nbGVOQUxVbml0KHVuaXQpOworCisgICAgICAgIGRhdGEgKz0gMiArIG5hbFNpemU7CisgICAgICAgIHNpemUgLT0gMiArIG5hbFNpemU7CisgICAgfQorCisgICAgaWYgKHNpemUgIT0gMCkgeworICAgICAgICBMT0coV0FSTklORykgPDwgIlVuZXhwZWN0ZWQgcGFkZGluZyBhdCBlbmQgb2YgU1RBUC1BIHBhY2tldC4iOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitBUlRQQXNzZW1ibGVyOjpBc3NlbWJseVN0YXR1cyBBQVZDQXNzZW1ibGVyOjphZGRGcmFnbWVudGVkTkFMVW5pdCgKKyAgICAgICAgTGlzdDxzcDxBQnVmZmVyPiA+ICpxdWV1ZSkgeworICAgIENIRUNLKCFxdWV1ZS0+ZW1wdHkoKSk7CisKKyAgICBzcDxBQnVmZmVyPiBidWZmZXIgPSAqcXVldWUtPmJlZ2luKCk7CisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IGJ1ZmZlci0+ZGF0YSgpOworICAgIHNpemVfdCBzaXplID0gYnVmZmVyLT5zaXplKCk7CisKKyAgICBDSEVDSyhzaXplID4gMCk7CisgICAgdW5zaWduZWQgaW5kaWNhdG9yID0gZGF0YVswXTsKKworICAgIENIRUNLKChpbmRpY2F0b3IgJiAweDFmKSA9PSAyOCk7CisKKyAgICBpZiAoc2l6ZSA8IDIpIHsKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiSWdub3JpbmcgbWFsZm9ybWVkIEZVIGJ1ZmZlciAoc2l6ZSA9ICIgPDwgc2l6ZSA8PCAiKSI7CisKKyAgICAgICAgcXVldWUtPmVyYXNlKHF1ZXVlLT5iZWdpbigpKTsKKyAgICAgICAgKyttTmV4dEV4cGVjdGVkU2VxTm87CisgICAgICAgIHJldHVybiBNQUxGT1JNRURfUEFDS0VUOworICAgIH0KKworICAgIGlmICghKGRhdGFbMV0gJiAweDgwKSkgeworICAgICAgICAvLyBTdGFydCBiaXQgbm90IHNldCBvbiB0aGUgZmlyc3QgYnVmZmVyLgorCisjaWYgQkVfVkVSQk9TRQorICAgICAgICBMT0coRVJST1IpIDw8ICJTdGFydCBiaXQgbm90IHNldCBvbiBmaXJzdCBidWZmZXIiOworI2VuZGlmCisKKyAgICAgICAgcXVldWUtPmVyYXNlKHF1ZXVlLT5iZWdpbigpKTsKKyAgICAgICAgKyttTmV4dEV4cGVjdGVkU2VxTm87CisgICAgICAgIHJldHVybiBNQUxGT1JNRURfUEFDS0VUOworICAgIH0KKworICAgIHVpbnQzMl90IG5hbFR5cGUgPSBkYXRhWzFdICYgMHgxZjsKKyAgICB1aW50MzJfdCBucmkgPSAoZGF0YVswXSA+PiA1KSAmIDM7CisKKyAgICB1aW50MzJfdCBleHBlY3RlZFNlcU5vID0gKHVpbnQzMl90KWJ1ZmZlci0+aW50MzJEYXRhKCkgKyAxOworICAgIHNpemVfdCB0b3RhbFNpemUgPSBzaXplIC0gMjsKKyAgICBzaXplX3QgdG90YWxDb3VudCA9IDE7CisgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworCisgICAgaWYgKGRhdGFbMV0gJiAweDQwKSB7CisgICAgICAgIC8vIEh1aD8gRW5kIGJpdCBhbHNvIHNldCBvbiB0aGUgZmlyc3QgYnVmZmVyLgorCisjaWYgQkVfVkVSQk9TRQorICAgICAgICBMT0coV0FSTklORykgPDwgIkdycnIuIFRoaXMgaXNuJ3QgZnJhZ21lbnRlZCBhdCBhbGwuIjsKKyNlbmRpZgorCisgICAgICAgIGNvbXBsZXRlID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBMaXN0PHNwPEFCdWZmZXI+ID46Oml0ZXJhdG9yIGl0ID0gKytxdWV1ZS0+YmVnaW4oKTsKKyAgICAgICAgd2hpbGUgKGl0ICE9IHF1ZXVlLT5lbmQoKSkgeworI2lmIEJFX1ZFUkJPU0UKKyAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAic2VxdWVuY2UgbGVuZ3RoICIgPDwgdG90YWxDb3VudDsKKyNlbmRpZgorCisgICAgICAgICAgICBjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyID0gKml0OworCisgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhID0gYnVmZmVyLT5kYXRhKCk7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOworCisgICAgICAgICAgICBpZiAoKHVpbnQzMl90KWJ1ZmZlci0+aW50MzJEYXRhKCkgIT0gZXhwZWN0ZWRTZXFObykgeworI2lmIEJFX1ZFUkJPU0UKKyAgICAgICAgICAgICAgICBMT0coVkVSQk9TRSkgPDwgInNlcXVlbmNlIG5vdCBjb21wbGV0ZSwgZXhwZWN0ZWQgc2VxTm8gIgorICAgICAgICAgICAgICAgICAgICAgPDwgZXhwZWN0ZWRTZXFObyA8PCAiLCBnb3QgIgorICAgICAgICAgICAgICAgICAgICAgPDwgKHVpbnQzMl90KWJ1ZmZlci0+aW50MzJEYXRhKCk7CisjZW5kaWYKKworICAgICAgICAgICAgICAgIHJldHVybiBXUk9OR19TRVFVRU5DRV9OVU1CRVI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzaXplIDwgMgorICAgICAgICAgICAgICAgICAgICB8fCBkYXRhWzBdICE9IGluZGljYXRvcgorICAgICAgICAgICAgICAgICAgICB8fCAoZGF0YVsxXSAmIDB4MWYpICE9IG5hbFR5cGUKKyAgICAgICAgICAgICAgICAgICAgfHwgKGRhdGFbMV0gJiAweDgwKSkgeworICAgICAgICAgICAgICAgIExPRyhFUlJPUikgPDwgIklnbm9yaW5nIG1hbGZvcm1lZCBGVSBidWZmZXIuXG4iOworCisgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSB3aG9sZSBzdGFydCBvZiB0aGUgRlUuCisKKyAgICAgICAgICAgICAgICBpdCA9IHF1ZXVlLT5iZWdpbigpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDw9IHRvdGFsQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpdCA9IHF1ZXVlLT5lcmFzZShpdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbU5leHRFeHBlY3RlZFNlcU5vID0gZXhwZWN0ZWRTZXFObyArIDE7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gTUFMRk9STUVEX1BBQ0tFVDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdG90YWxTaXplICs9IHNpemUgLSAyOworICAgICAgICAgICAgKyt0b3RhbENvdW50OworCisgICAgICAgICAgICBleHBlY3RlZFNlcU5vID0gZXhwZWN0ZWRTZXFObyArIDE7CisKKyAgICAgICAgICAgIGlmIChkYXRhWzFdICYgMHg0MCkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxhc3QgZnJhZ21lbnQuCisgICAgICAgICAgICAgICAgY29tcGxldGUgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICArK2l0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFjb21wbGV0ZSkgeworICAgICAgICByZXR1cm4gTk9UX0VOT1VHSF9EQVRBOworICAgIH0KKworICAgIG1OZXh0RXhwZWN0ZWRTZXFObyA9IGV4cGVjdGVkU2VxTm87CisKKyAgICAvLyBXZSBmb3VuZCBhbGwgdGhlIGZyYWdtZW50cyB0aGF0IG1ha2UgdXAgdGhlIGNvbXBsZXRlIE5BTCB1bml0LgorCisgICAgLy8gTGVhdmUgcm9vbSBmb3IgdGhlIGhlYWRlci4gU28gZmFyIHRvdGFsU2l6ZSBkaWQgbm90IGluY2x1ZGUgdGhlCisgICAgLy8gaGVhZGVyIGJ5dGUuCisgICAgKyt0b3RhbFNpemU7CisKKyAgICBzcDxBQnVmZmVyPiB1bml0ID0gbmV3IEFCdWZmZXIodG90YWxTaXplKTsKKyAgICBQcm9wYWdhdGVUaW1lcyhidWZmZXIsIHVuaXQpOworCisgICAgdW5pdC0+ZGF0YSgpWzBdID0gKG5yaSA8PCA1KSB8IG5hbFR5cGU7CisKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMTsKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID46Oml0ZXJhdG9yIGl0ID0gcXVldWUtPmJlZ2luKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b3RhbENvdW50OyArK2kpIHsKKyAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlciA9ICppdDsKKworI2lmIEJFX1ZFUkJPU0UKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJwaWVjZSAjIiA8PCAoaSArIDEpIDw8ICIvIiA8PCB0b3RhbENvdW50OworICAgICAgICBoZXhkdW1wKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisjZW5kaWYKKworICAgICAgICBtZW1jcHkodW5pdC0+ZGF0YSgpICsgb2Zmc2V0LCBidWZmZXItPmRhdGEoKSArIDIsIGJ1ZmZlci0+c2l6ZSgpIC0gMik7CisgICAgICAgIG9mZnNldCArPSBidWZmZXItPnNpemUoKSAtIDI7CisKKyAgICAgICAgaXQgPSBxdWV1ZS0+ZXJhc2UoaXQpOworICAgIH0KKworICAgIHVuaXQtPnNldFJhbmdlKDAsIHRvdGFsU2l6ZSk7CisKKyAgICBhZGRTaW5nbGVOQUxVbml0KHVuaXQpOworCisjaWYgQkVfVkVSQk9TRQorICAgIExPRyhWRVJCT1NFKSA8PCAic3VjY2Vzc2Z1bGx5IGFzc2VtYmxlZCBhIE5BTCB1bml0IGZyb20gZnJhZ21lbnRzLiI7CisjZW5kaWYKKworICAgIHJldHVybiBPSzsKK30KKwordm9pZCBBQVZDQXNzZW1ibGVyOjpzdWJtaXRBY2Nlc3NVbml0KCkgeworICAgIENIRUNLKCFtTkFMVW5pdHMuZW1wdHkoKSk7CisKKyNpZiBCRV9WRVJCT1NFCisgICAgTE9HKFZFUkJPU0UpIDw8ICJBY2Nlc3MgdW5pdCBjb21wbGV0ZSAoIiA8PCBtTkFMVW5pdHMuc2l6ZSgpIDw8ICIgbmFsIHVuaXRzKSI7CisjZW5kaWYKKworICAgIHVpbnQ2NF90IG50cFRpbWU7CisgICAgQ0hFQ0soKCptTkFMVW5pdHMuYmVnaW4oKSktPm1ldGEoKS0+ZmluZEludDY0KAorICAgICAgICAgICAgICAgICJudHAtdGltZSIsIChpbnQ2NF90ICopJm50cFRpbWUpKTsKKworICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgIGZvciAoTGlzdDxzcDxBQnVmZmVyPiA+OjppdGVyYXRvciBpdCA9IG1OQUxVbml0cy5iZWdpbigpOworICAgICAgICAgaXQgIT0gbU5BTFVuaXRzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIHRvdGFsU2l6ZSArPSA0ICsgKCppdCktPnNpemUoKTsKKyAgICB9CisKKyAgICBzcDxBQnVmZmVyPiBhY2Nlc3NVbml0ID0gbmV3IEFCdWZmZXIodG90YWxTaXplKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBmb3IgKExpc3Q8c3A8QUJ1ZmZlcj4gPjo6aXRlcmF0b3IgaXQgPSBtTkFMVW5pdHMuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1OQUxVbml0cy5lbmQoKTsgKytpdCkgeworICAgICAgICBtZW1jcHkoYWNjZXNzVW5pdC0+ZGF0YSgpICsgb2Zmc2V0LCAiXHgwMFx4MDBceDAwXHgwMSIsIDQpOworICAgICAgICBvZmZzZXQgKz0gNDsKKworICAgICAgICBzcDxBQnVmZmVyPiBuYWwgPSAqaXQ7CisgICAgICAgIG1lbWNweShhY2Nlc3NVbml0LT5kYXRhKCkgKyBvZmZzZXQsIG5hbC0+ZGF0YSgpLCBuYWwtPnNpemUoKSk7CisgICAgICAgIG9mZnNldCArPSBuYWwtPnNpemUoKTsKKyAgICB9CisKKyAgICBhY2Nlc3NVbml0LT5tZXRhKCktPnNldEludDY0KCJudHAtdGltZSIsIG50cFRpbWUpOworCisjaWYgMAorICAgIHByaW50ZihtQWNjZXNzVW5pdERhbWFnZWQgPyAiWCIgOiAiLiIpOworICAgIGZmbHVzaChzdGRvdXQpOworI2VuZGlmCisKKyAgICBpZiAobUFjY2Vzc1VuaXREYW1hZ2VkKSB7CisgICAgICAgIGFjY2Vzc1VuaXQtPm1ldGEoKS0+c2V0SW50MzIoImRhbWFnZWQiLCB0cnVlKTsKKyAgICB9CisKKyAgICBtTkFMVW5pdHMuY2xlYXIoKTsKKyAgICBtQWNjZXNzVW5pdERhbWFnZWQgPSBmYWxzZTsKKworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBtTm90aWZ5TXNnLT5kdXAoKTsKKyAgICBtc2ctPnNldE9iamVjdCgiYWNjZXNzLXVuaXQiLCBhY2Nlc3NVbml0KTsKKyAgICBtc2ctPnBvc3QoKTsKK30KKworQVJUUEFzc2VtYmxlcjo6QXNzZW1ibHlTdGF0dXMgQUFWQ0Fzc2VtYmxlcjo6YXNzZW1ibGVNb3JlKAorICAgICAgICBjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKSB7CisgICAgQXNzZW1ibHlTdGF0dXMgc3RhdHVzID0gYWRkTkFMVW5pdChzb3VyY2UpOworICAgIGlmIChzdGF0dXMgPT0gTUFMRk9STUVEX1BBQ0tFVCkgeworICAgICAgICBtQWNjZXNzVW5pdERhbWFnZWQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCit2b2lkIEFBVkNBc3NlbWJsZXI6OnBhY2tldExvc3QoKSB7CisgICAgQ0hFQ0sobU5leHRFeHBlY3RlZFNlcU5vVmFsaWQpOworICAgICsrbU5leHRFeHBlY3RlZFNlcU5vOworCisgICAgbUFjY2Vzc1VuaXREYW1hZ2VkID0gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQUFWQ0Fzc2VtYmxlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BQVZDQXNzZW1ibGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU5NzUyMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQUFWQ0Fzc2VtYmxlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfQVZDX0FTU0VNQkxFUl9IXworCisjZGVmaW5lIEFfQVZDX0FTU0VNQkxFUl9IXworCisjaW5jbHVkZSAiQVJUUEFzc2VtYmxlci5oIgorCisjaW5jbHVkZSA8dXRpbHMvTGlzdC5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJ1ZmZlcjsKK3N0cnVjdCBBTWVzc2FnZTsKKworc3RydWN0IEFBVkNBc3NlbWJsZXIgOiBwdWJsaWMgQVJUUEFzc2VtYmxlciB7CisgICAgQUFWQ0Fzc2VtYmxlcihjb25zdCBzcDxBTWVzc2FnZT4gJm5vdGlmeSk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5BQVZDQXNzZW1ibGVyKCk7CisKKyAgICB2aXJ0dWFsIEFzc2VtYmx5U3RhdHVzIGFzc2VtYmxlTW9yZShjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFja2V0TG9zdCgpOworCitwcml2YXRlOgorICAgIHNwPEFNZXNzYWdlPiBtTm90aWZ5TXNnOworCisgICAgdWludDMyX3QgbUFjY2Vzc1VuaXRSVFBUaW1lOworICAgIGJvb2wgbU5leHRFeHBlY3RlZFNlcU5vVmFsaWQ7CisgICAgdWludDMyX3QgbU5leHRFeHBlY3RlZFNlcU5vOworICAgIGJvb2wgbUFjY2Vzc1VuaXREYW1hZ2VkOworICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPiBtTkFMVW5pdHM7CisKKyAgICBBc3NlbWJseVN0YXR1cyBhZGROQUxVbml0KGNvbnN0IHNwPEFSVFBTb3VyY2U+ICZzb3VyY2UpOworICAgIHZvaWQgYWRkU2luZ2xlTkFMVW5pdChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKTsKKyAgICBBc3NlbWJseVN0YXR1cyBhZGRGcmFnbWVudGVkTkFMVW5pdChMaXN0PHNwPEFCdWZmZXI+ID4gKnF1ZXVlKTsKKyAgICBib29sIGFkZFNpbmdsZVRpbWVBZ2dyZWdhdGlvblBhY2tldChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKTsKKworICAgIHZvaWQgc3VibWl0QWNjZXNzVW5pdCgpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQUFWQ0Fzc2VtYmxlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfQVZDX0FTU0VNQkxFUl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BTVBFRzRBdWRpb0Fzc2VtYmxlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FNUEVHNEF1ZGlvQXNzZW1ibGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTQ5ZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BTVBFRzRBdWRpb0Fzc2VtYmxlci5jcHAKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQU1QRUc0QXVkaW9Bc3NlbWJsZXIuaCIKKworI2luY2x1ZGUgIkFSVFBTb3VyY2UuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0FNUEVHNEF1ZGlvQXNzZW1ibGVyOjpBTVBFRzRBdWRpb0Fzc2VtYmxlcihjb25zdCBzcDxBTWVzc2FnZT4gJm5vdGlmeSkKKyAgICA6IG1Ob3RpZnlNc2cobm90aWZ5KSwKKyAgICAgIG1BY2Nlc3NVbml0UlRQVGltZSgwKSwKKyAgICAgIG1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkKGZhbHNlKSwKKyAgICAgIG1OZXh0RXhwZWN0ZWRTZXFObygwKSwKKyAgICAgIG1BY2Nlc3NVbml0RGFtYWdlZChmYWxzZSkgeworfQorCitBTVBFRzRBdWRpb0Fzc2VtYmxlcjo6fkFNUEVHNEF1ZGlvQXNzZW1ibGVyKCkgeworfQorCitBUlRQQXNzZW1ibGVyOjpBc3NlbWJseVN0YXR1cyBBTVBFRzRBdWRpb0Fzc2VtYmxlcjo6YXNzZW1ibGVNb3JlKAorICAgICAgICBjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKSB7CisgICAgQXNzZW1ibHlTdGF0dXMgc3RhdHVzID0gYWRkUGFja2V0KHNvdXJjZSk7CisgICAgaWYgKHN0YXR1cyA9PSBNQUxGT1JNRURfUEFDS0VUKSB7CisgICAgICAgIG1BY2Nlc3NVbml0RGFtYWdlZCA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK0FSVFBBc3NlbWJsZXI6OkFzc2VtYmx5U3RhdHVzIEFNUEVHNEF1ZGlvQXNzZW1ibGVyOjphZGRQYWNrZXQoCisgICAgICAgIGNvbnN0IHNwPEFSVFBTb3VyY2U+ICZzb3VyY2UpIHsKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID4gKnF1ZXVlID0gc291cmNlLT5xdWV1ZSgpOworCisgICAgaWYgKHF1ZXVlLT5lbXB0eSgpKSB7CisgICAgICAgIHJldHVybiBOT1RfRU5PVUdIX0RBVEE7CisgICAgfQorCisgICAgaWYgKG1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkKSB7CisgICAgICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPjo6aXRlcmF0b3IgaXQgPSBxdWV1ZS0+YmVnaW4oKTsKKyAgICAgICAgd2hpbGUgKGl0ICE9IHF1ZXVlLT5lbmQoKSkgeworICAgICAgICAgICAgaWYgKCh1aW50MzJfdCkoKml0KS0+aW50MzJEYXRhKCkgPj0gbU5leHRFeHBlY3RlZFNlcU5vKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0ID0gcXVldWUtPmVyYXNlKGl0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChxdWV1ZS0+ZW1wdHkoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5PVF9FTk9VR0hfREFUQTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNwPEFCdWZmZXI+IGJ1ZmZlciA9ICpxdWV1ZS0+YmVnaW4oKTsKKworICAgIGlmICghbU5leHRFeHBlY3RlZFNlcU5vVmFsaWQpIHsKKyAgICAgICAgbU5leHRFeHBlY3RlZFNlcU5vVmFsaWQgPSB0cnVlOworICAgICAgICBtTmV4dEV4cGVjdGVkU2VxTm8gPSAodWludDMyX3QpYnVmZmVyLT5pbnQzMkRhdGEoKTsKKyAgICB9IGVsc2UgaWYgKCh1aW50MzJfdClidWZmZXItPmludDMyRGF0YSgpICE9IG1OZXh0RXhwZWN0ZWRTZXFObykgeworI2lmIFZFUkJPU0UKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJOb3QgdGhlIHNlcXVlbmNlIG51bWJlciBJIGV4cGVjdGVkIjsKKyNlbmRpZgorCisgICAgICAgIHJldHVybiBXUk9OR19TRVFVRU5DRV9OVU1CRVI7CisgICAgfQorCisgICAgdWludDMyX3QgcnRwVGltZTsKKyAgICBDSEVDSyhidWZmZXItPm1ldGEoKS0+ZmluZEludDMyKCJydHAtdGltZSIsIChpbnQzMl90ICopJnJ0cFRpbWUpKTsKKworICAgIGlmIChtUGFja2V0cy5zaXplKCkgPiAwICYmIHJ0cFRpbWUgIT0gbUFjY2Vzc1VuaXRSVFBUaW1lKSB7CisgICAgICAgIHN1Ym1pdEFjY2Vzc1VuaXQoKTsKKyAgICB9CisgICAgbUFjY2Vzc1VuaXRSVFBUaW1lID0gcnRwVGltZTsKKworICAgIG1QYWNrZXRzLnB1c2hfYmFjayhidWZmZXIpOworCisgICAgcXVldWUtPmVyYXNlKHF1ZXVlLT5iZWdpbigpKTsKKyAgICArK21OZXh0RXhwZWN0ZWRTZXFObzsKKworICAgIHJldHVybiBPSzsKK30KKwordm9pZCBBTVBFRzRBdWRpb0Fzc2VtYmxlcjo6c3VibWl0QWNjZXNzVW5pdCgpIHsKKyAgICBDSEVDSyghbVBhY2tldHMuZW1wdHkoKSk7CisKKyNpZiBWRVJCT1NFCisgICAgTE9HKFZFUkJPU0UpIDw8ICJBY2Nlc3MgdW5pdCBjb21wbGV0ZSAoIiA8PCBtUGFja2V0cy5zaXplKCkgPDwgIiBwYWNrZXRzKSI7CisjZW5kaWYKKworICAgIHVpbnQ2NF90IG50cFRpbWU7CisgICAgQ0hFQ0soKCptUGFja2V0cy5iZWdpbigpKS0+bWV0YSgpLT5maW5kSW50NjQoCisgICAgICAgICAgICAgICAgIm50cC10aW1lIiwgKGludDY0X3QgKikmbnRwVGltZSkpOworCisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CisgICAgTGlzdDxzcDxBQnVmZmVyPiA+OjppdGVyYXRvciBpdCA9IG1QYWNrZXRzLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1QYWNrZXRzLmVuZCgpKSB7CisgICAgICAgIGNvbnN0IHNwPEFCdWZmZXI+ICZ1bml0ID0gKml0OworCisgICAgICAgIHNpemVfdCBuID0gMDsKKyAgICAgICAgd2hpbGUgKHVuaXQtPmRhdGEoKVtuXSA9PSAweGZmKSB7CisgICAgICAgICAgICArK247CisgICAgICAgIH0KKyAgICAgICAgKytuOworCisgICAgICAgIHRvdGFsU2l6ZSArPSB1bml0LT5zaXplKCkgLSBuOworICAgICAgICArK2l0OworICAgIH0KKworICAgIHNwPEFCdWZmZXI+IGFjY2Vzc1VuaXQgPSBuZXcgQUJ1ZmZlcih0b3RhbFNpemUpOworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIGl0ID0gbVBhY2tldHMuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbVBhY2tldHMuZW5kKCkpIHsKKyAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gJnVuaXQgPSAqaXQ7CisKKyAgICAgICAgc2l6ZV90IG4gPSAwOworICAgICAgICB3aGlsZSAodW5pdC0+ZGF0YSgpW25dID09IDB4ZmYpIHsKKyAgICAgICAgICAgICsrbjsKKyAgICAgICAgfQorICAgICAgICArK247CisKKyAgICAgICAgbWVtY3B5KCh1aW50OF90ICopYWNjZXNzVW5pdC0+ZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgdW5pdC0+ZGF0YSgpICsgbiwgdW5pdC0+c2l6ZSgpIC0gbik7CisKKyAgICAgICAgb2Zmc2V0ICs9IHVuaXQtPnNpemUoKSAtIG47CisKKyAgICAgICAgKytpdDsKKyAgICB9CisKKyAgICBhY2Nlc3NVbml0LT5tZXRhKCktPnNldEludDY0KCJudHAtdGltZSIsIG50cFRpbWUpOworCisgICAgaWYgKG1BY2Nlc3NVbml0RGFtYWdlZCkgeworICAgICAgICBhY2Nlc3NVbml0LT5tZXRhKCktPnNldEludDMyKCJkYW1hZ2VkIiwgdHJ1ZSk7CisgICAgfQorCisgICAgbVBhY2tldHMuY2xlYXIoKTsKKyAgICBtQWNjZXNzVW5pdERhbWFnZWQgPSBmYWxzZTsKKworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBtTm90aWZ5TXNnLT5kdXAoKTsKKyAgICBtc2ctPnNldE9iamVjdCgiYWNjZXNzLXVuaXQiLCBhY2Nlc3NVbml0KTsKKyAgICBtc2ctPnBvc3QoKTsKK30KKwordm9pZCBBTVBFRzRBdWRpb0Fzc2VtYmxlcjo6cGFja2V0TG9zdCgpIHsKKyAgICBDSEVDSyhtTmV4dEV4cGVjdGVkU2VxTm9WYWxpZCk7CisgICAgKyttTmV4dEV4cGVjdGVkU2VxTm87CisKKyAgICBtQWNjZXNzVW5pdERhbWFnZWQgPSB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BTVBFRzRBdWRpb0Fzc2VtYmxlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BTVBFRzRBdWRpb0Fzc2VtYmxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMmEyZGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FNUEVHNEF1ZGlvQXNzZW1ibGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9NUEVHNF9BVURJT19BU1NFTUJMRVJfSF8KKworI2RlZmluZSBBX01QRUc0X0FVRElPX0FTU0VNQkxFUl9IXworCisjaW5jbHVkZSAiQVJUUEFzc2VtYmxlci5oIgorCisjaW5jbHVkZSA8dXRpbHMvTGlzdC5oPgorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFNZXNzYWdlOworCitzdHJ1Y3QgQU1QRUc0QXVkaW9Bc3NlbWJsZXIgOiBwdWJsaWMgQVJUUEFzc2VtYmxlciB7CisgICAgQU1QRUc0QXVkaW9Bc3NlbWJsZXIoY29uc3Qgc3A8QU1lc3NhZ2U+ICZub3RpZnkpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+QU1QRUc0QXVkaW9Bc3NlbWJsZXIoKTsKKworICAgIHZpcnR1YWwgQXNzZW1ibHlTdGF0dXMgYXNzZW1ibGVNb3JlKGNvbnN0IHNwPEFSVFBTb3VyY2U+ICZzb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBwYWNrZXRMb3N0KCk7CisKK3ByaXZhdGU6CisgICAgc3A8QU1lc3NhZ2U+IG1Ob3RpZnlNc2c7CisgICAgdWludDMyX3QgbUFjY2Vzc1VuaXRSVFBUaW1lOworICAgIGJvb2wgbU5leHRFeHBlY3RlZFNlcU5vVmFsaWQ7CisgICAgdWludDMyX3QgbU5leHRFeHBlY3RlZFNlcU5vOworICAgIGJvb2wgbUFjY2Vzc1VuaXREYW1hZ2VkOworICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPiBtUGFja2V0czsKKworICAgIEFzc2VtYmx5U3RhdHVzIGFkZFBhY2tldChjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKTsKKyAgICB2b2lkIHN1Ym1pdEFjY2Vzc1VuaXQoKTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFNUEVHNEF1ZGlvQXNzZW1ibGVyKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9NUEVHNF9BVURJT19BU1NFTUJMRVJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVBhY2tldFNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FQYWNrZXRTb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NjlkNTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FQYWNrZXRTb3VyY2UuY3BwCkBAIC0wLDAgKzEsMzQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFQYWNrZXRTb3VyY2UuaCIKKworI2luY2x1ZGUgIkFTZXNzaW9uRGVzY3JpcHRpb24uaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vYmFzZTY0Lmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFCdWZmZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0YXRpYyBib29sIEdldEF0dHJpYnV0ZShjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICprZXksIEFTdHJpbmcgKnZhbHVlKSB7CisgICAgdmFsdWUtPmNsZWFyKCk7CisKKyAgICBzaXplX3Qga2V5TGVuID0gc3RybGVuKGtleSk7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNvbnN0IGNoYXIgKmNvbG9uUG9zID0gc3RyY2hyKHMsICc7Jyk7CisKKyAgICAgICAgc2l6ZV90IGxlbiA9CisgICAgICAgICAgICAoY29sb25Qb3MgPT0gTlVMTCkgPyBzdHJsZW4ocykgOiBjb2xvblBvcyAtIHM7CisKKyAgICAgICAgaWYgKGxlbiA+PSBrZXlMZW4gKyAxICYmIHNba2V5TGVuXSA9PSAnPScgJiYgIXN0cm5jbXAocywga2V5LCBrZXlMZW4pKSB7CisgICAgICAgICAgICB2YWx1ZS0+c2V0VG8oJnNba2V5TGVuICsgMV0sIGxlbiAtIGtleUxlbiAtIDEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29sb25Qb3MgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcyA9IGNvbG9uUG9zICsgMTsKKyAgICB9Cit9CisKK3N0YXRpYyBzcDxBQnVmZmVyPiBkZWNvZGVIZXgoY29uc3QgQVN0cmluZyAmcykgeworICAgIGlmICgocy5zaXplKCkgJSAyKSAhPSAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNpemVfdCBvdXRMZW4gPSBzLnNpemUoKSAvIDI7CisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gbmV3IEFCdWZmZXIob3V0TGVuKTsKKyAgICB1aW50OF90ICpvdXQgPSBidWZmZXItPmRhdGEoKTsKKworICAgIHVpbnQ4X3QgYWNjdW0gPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkgeworICAgICAgICBjaGFyIGMgPSBzLmNfc3RyKClbaV07CisgICAgICAgIHVuc2lnbmVkIHZhbHVlOworICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgIHZhbHVlID0gYyAtICcwJzsKKyAgICAgICAgfSBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykgeworICAgICAgICAgICAgdmFsdWUgPSBjIC0gJ2EnICsgMTA7CisgICAgICAgIH0gZWxzZSBpZiAoYyA+PSAnQScgJiYgYyA8PSAnRicpIHsKKyAgICAgICAgICAgIHZhbHVlID0gYyAtICdBJyArIDEwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBhY2N1bSA9IChhY2N1bSA8PCA0KSB8IHZhbHVlOworCisgICAgICAgIGlmIChpICYgMSkgeworICAgICAgICAgICAgKm91dCsrID0gYWNjdW07CisKKyAgICAgICAgICAgIGFjY3VtID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3N0YXRpYyBzcDxBQnVmZmVyPiBNYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoY29uc3QgY2hhciAqcGFyYW1zKSB7CisgICAgQVN0cmluZyB2YWw7CisgICAgQ0hFQ0soR2V0QXR0cmlidXRlKHBhcmFtcywgInByb2ZpbGUtbGV2ZWwtaWQiLCAmdmFsKSk7CisKKyAgICBzcDxBQnVmZmVyPiBwcm9maWxlTGV2ZWxJRCA9IGRlY29kZUhleCh2YWwpOworICAgIENIRUNLKHByb2ZpbGVMZXZlbElEICE9IE5VTEwpOworICAgIENIRUNLX0VRKHByb2ZpbGVMZXZlbElELT5zaXplKCksIDN1KTsKKworICAgIFZlY3RvcjxzcDxBQnVmZmVyPiA+IHBhcmFtU2V0czsKKworICAgIHNpemVfdCBudW1TZXFQYXJhbWV0ZXJTZXRzID0gMDsKKyAgICBzaXplX3QgdG90YWxTZXFQYXJhbWV0ZXJTZXRTaXplID0gMDsKKyAgICBzaXplX3QgbnVtUGljUGFyYW1ldGVyU2V0cyA9IDA7CisgICAgc2l6ZV90IHRvdGFsUGljUGFyYW1ldGVyU2V0U2l6ZSA9IDA7CisKKyAgICBDSEVDSyhHZXRBdHRyaWJ1dGUocGFyYW1zLCAic3Byb3AtcGFyYW1ldGVyLXNldHMiLCAmdmFsKSk7CisgICAgc2l6ZV90IHN0YXJ0ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNzaXplX3QgY29tbWFQb3MgPSB2YWwuZmluZCgiLCIsIHN0YXJ0KTsKKyAgICAgICAgc2l6ZV90IGVuZCA9IChjb21tYVBvcyA8IDApID8gdmFsLnNpemUoKSA6IGNvbW1hUG9zOworCisgICAgICAgIEFTdHJpbmcgbmFsU3RyaW5nKHZhbCwgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgc3A8QUJ1ZmZlcj4gbmFsID0gZGVjb2RlQmFzZTY0KG5hbFN0cmluZyk7CisgICAgICAgIENIRUNLKG5hbCAhPSBOVUxMKTsKKyAgICAgICAgQ0hFQ0tfR1QobmFsLT5zaXplKCksIDB1KTsKKyAgICAgICAgQ0hFQ0tfTEUobmFsLT5zaXplKCksIDY1NTM1dSk7CisKKyAgICAgICAgdWludDhfdCBuYWxUeXBlID0gbmFsLT5kYXRhKClbMF0gJiAweDFmOworICAgICAgICBpZiAobnVtU2VxUGFyYW1ldGVyU2V0cyA9PSAwKSB7CisgICAgICAgICAgICBDSEVDS19FUSgodW5zaWduZWQpbmFsVHlwZSwgN3UpOworICAgICAgICB9IGVsc2UgaWYgKG51bVBpY1BhcmFtZXRlclNldHMgPiAwKSB7CisgICAgICAgICAgICBDSEVDS19FUSgodW5zaWduZWQpbmFsVHlwZSwgOHUpOworICAgICAgICB9CisgICAgICAgIGlmIChuYWxUeXBlID09IDcpIHsKKyAgICAgICAgICAgICsrbnVtU2VxUGFyYW1ldGVyU2V0czsKKyAgICAgICAgICAgIHRvdGFsU2VxUGFyYW1ldGVyU2V0U2l6ZSArPSBuYWwtPnNpemUoKTsKKyAgICAgICAgfSBlbHNlICB7CisgICAgICAgICAgICBDSEVDS19FUSgodW5zaWduZWQpbmFsVHlwZSwgOHUpOworICAgICAgICAgICAgKytudW1QaWNQYXJhbWV0ZXJTZXRzOworICAgICAgICAgICAgdG90YWxQaWNQYXJhbWV0ZXJTZXRTaXplICs9IG5hbC0+c2l6ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcGFyYW1TZXRzLnB1c2gobmFsKTsKKworICAgICAgICBpZiAoY29tbWFQb3MgPCAwKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXJ0ID0gY29tbWFQb3MgKyAxOworICAgIH0KKworICAgIENIRUNLX0xUKG51bVNlcVBhcmFtZXRlclNldHMsIDMydSk7CisgICAgQ0hFQ0tfTEUobnVtUGljUGFyYW1ldGVyU2V0cywgMjU1dSk7CisKKyAgICBzaXplX3QgY3NkU2l6ZSA9CisgICAgICAgIDEgKyAzICsgMSArIDEKKyAgICAgICAgKyAyICogbnVtU2VxUGFyYW1ldGVyU2V0cyArIHRvdGFsU2VxUGFyYW1ldGVyU2V0U2l6ZQorICAgICAgICArIDEgKyAyICogbnVtUGljUGFyYW1ldGVyU2V0cyArIHRvdGFsUGljUGFyYW1ldGVyU2V0U2l6ZTsKKworICAgIHNwPEFCdWZmZXI+IGNzZCA9IG5ldyBBQnVmZmVyKGNzZFNpemUpOworICAgIHVpbnQ4X3QgKm91dCA9IGNzZC0+ZGF0YSgpOworCisgICAgKm91dCsrID0gMHgwMTsgIC8vIGNvbmZpZ3VyYXRpb25WZXJzaW9uCisgICAgbWVtY3B5KG91dCwgcHJvZmlsZUxldmVsSUQtPmRhdGEoKSwgMyk7CisgICAgb3V0ICs9IDM7CisgICAgKm91dCsrID0gKDB4M2YgPDwgMikgfCAxOyAgLy8gbGVuZ3RoU2l6ZSA9PSAyIGJ5dGVzCisgICAgKm91dCsrID0gMHhlMCB8IG51bVNlcVBhcmFtZXRlclNldHM7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVNlcVBhcmFtZXRlclNldHM7ICsraSkgeworICAgICAgICBzcDxBQnVmZmVyPiBuYWwgPSBwYXJhbVNldHMuZWRpdEl0ZW1BdChpKTsKKworICAgICAgICAqb3V0KysgPSBuYWwtPnNpemUoKSA+PiA4OworICAgICAgICAqb3V0KysgPSBuYWwtPnNpemUoKSAmIDB4ZmY7CisKKyAgICAgICAgbWVtY3B5KG91dCwgbmFsLT5kYXRhKCksIG5hbC0+c2l6ZSgpKTsKKworICAgICAgICBvdXQgKz0gbmFsLT5zaXplKCk7CisgICAgfQorCisgICAgKm91dCsrID0gbnVtUGljUGFyYW1ldGVyU2V0czsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUGljUGFyYW1ldGVyU2V0czsgKytpKSB7CisgICAgICAgIHNwPEFCdWZmZXI+IG5hbCA9IHBhcmFtU2V0cy5lZGl0SXRlbUF0KGkgKyBudW1TZXFQYXJhbWV0ZXJTZXRzKTsKKworICAgICAgICAqb3V0KysgPSBuYWwtPnNpemUoKSA+PiA4OworICAgICAgICAqb3V0KysgPSBuYWwtPnNpemUoKSAmIDB4ZmY7CisKKyAgICAgICAgbWVtY3B5KG91dCwgbmFsLT5kYXRhKCksIG5hbC0+c2l6ZSgpKTsKKworICAgICAgICBvdXQgKz0gbmFsLT5zaXplKCk7CisgICAgfQorCisgICAgaGV4ZHVtcChjc2QtPmRhdGEoKSwgY3NkLT5zaXplKCkpOworCisgICAgcmV0dXJuIGNzZDsKK30KKworc3A8QUJ1ZmZlcj4gTWFrZUFBQ0NvZGVjU3BlY2lmaWNEYXRhKGNvbnN0IGNoYXIgKnBhcmFtcykgeworICAgIEFTdHJpbmcgdmFsOworICAgIENIRUNLKEdldEF0dHJpYnV0ZShwYXJhbXMsICJjb25maWciLCAmdmFsKSk7CisKKyAgICBzcDxBQnVmZmVyPiBjb25maWcgPSBkZWNvZGVIZXgodmFsKTsKKyAgICBDSEVDSyhjb25maWcgIT0gTlVMTCk7CisgICAgQ0hFQ0tfR0UoY29uZmlnLT5zaXplKCksIDR1KTsKKworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSBjb25maWctPmRhdGEoKTsKKyAgICB1aW50MzJfdCB4ID0gZGF0YVswXSA8PCAyNCB8IGRhdGFbMV0gPDwgMTYgfCBkYXRhWzJdIDw8IDggfCBkYXRhWzNdOworICAgIHggPSAoeCA+PiAxKSAmIDB4ZmZmZjsKKworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGtTdGF0aWNFU0RTW10gPSB7CisgICAgICAgIDB4MDMsIDIyLAorICAgICAgICAweDAwLCAweDAwLCAgICAgLy8gRVNfSUQKKyAgICAgICAgMHgwMCwgICAgICAgICAgIC8vIHN0cmVhbURlcGVuZGVuY2VGbGFnLCBVUkxfRmxhZywgT0NSc3RyZWFtRmxhZworCisgICAgICAgIDB4MDQsIDE3LAorICAgICAgICAweDQwLCAgICAgICAgICAgICAgICAgICAgICAgLy8gQXVkaW8gSVNPL0lFQyAxNDQ5Ni0zCisgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisKKyAgICAgICAgMHgwNSwgMiwKKyAgICAgICAgLy8gQXVkaW9TcGVjaWZpY0luZm8gZm9sbG93cworICAgIH07CisKKyAgICBzcDxBQnVmZmVyPiBjc2QgPSBuZXcgQUJ1ZmZlcihzaXplb2Yoa1N0YXRpY0VTRFMpICsgMik7CisgICAgbWVtY3B5KGNzZC0+ZGF0YSgpLCBrU3RhdGljRVNEUywgc2l6ZW9mKGtTdGF0aWNFU0RTKSk7CisgICAgY3NkLT5kYXRhKClbc2l6ZW9mKGtTdGF0aWNFU0RTKV0gPSAoeCA+PiA4KSAmIDB4ZmY7CisgICAgY3NkLT5kYXRhKClbc2l6ZW9mKGtTdGF0aWNFU0RTKSArIDFdID0geCAmIDB4ZmY7CisKKyAgICBoZXhkdW1wKGNzZC0+ZGF0YSgpLCBjc2QtPnNpemUoKSk7CisKKyAgICByZXR1cm4gY3NkOworfQorCitBUGFja2V0U291cmNlOjpBUGFja2V0U291cmNlKAorICAgICAgICBjb25zdCBzcDxBU2Vzc2lvbkRlc2NyaXB0aW9uPiAmc2Vzc2lvbkRlc2MsIHNpemVfdCBpbmRleCkKKyAgICA6IG1Gb3JtYXQobmV3IE1ldGFEYXRhKSwKKyAgICAgIG1FT1NSZXN1bHQoT0spIHsKKyAgICB1bnNpZ25lZCBsb25nIFBUOworICAgIEFTdHJpbmcgZGVzYzsKKyAgICBBU3RyaW5nIHBhcmFtczsKKyAgICBzZXNzaW9uRGVzYy0+Z2V0Rm9ybWF0VHlwZShpbmRleCwgJlBULCAmZGVzYywgJnBhcmFtcyk7CisKKyAgICBpbnQ2NF90IGR1cmF0aW9uVXM7CisgICAgaWYgKHNlc3Npb25EZXNjLT5nZXREdXJhdGlvblVzKCZkdXJhdGlvblVzKSkgeworICAgICAgICBtRm9ybWF0LT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIGR1cmF0aW9uVXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1Gb3JtYXQtPnNldEludDY0KGtLZXlEdXJhdGlvbiwgNjAgKiA2MCAqIDEwMDAwMDBsbCk7CisgICAgfQorCisgICAgaWYgKCFzdHJuY21wKGRlc2MuY19zdHIoKSwgIkgyNjQvIiwgNSkpIHsKKyAgICAgICAgbUZvcm1hdC0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQyk7CisKKyAgICAgICAgaW50MzJfdCB3aWR0aCwgaGVpZ2h0OworICAgICAgICBzZXNzaW9uRGVzYy0+Z2V0RGltZW5zaW9ucyhpbmRleCwgUFQsICZ3aWR0aCwgJmhlaWdodCk7CisKKyAgICAgICAgbUZvcm1hdC0+c2V0SW50MzIoa0tleVdpZHRoLCB3aWR0aCk7CisgICAgICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlIZWlnaHQsIGhlaWdodCk7CisKKyAgICAgICAgc3A8QUJ1ZmZlcj4gY29kZWNTcGVjaWZpY0RhdGEgPQorICAgICAgICAgICAgTWFrZUFWQ0NvZGVjU3BlY2lmaWNEYXRhKHBhcmFtcy5jX3N0cigpKTsKKworICAgICAgICBtRm9ybWF0LT5zZXREYXRhKAorICAgICAgICAgICAgICAgIGtLZXlBVkNDLCAwLAorICAgICAgICAgICAgICAgIGNvZGVjU3BlY2lmaWNEYXRhLT5kYXRhKCksIGNvZGVjU3BlY2lmaWNEYXRhLT5zaXplKCkpOworCisgICAgfSBlbHNlIGlmICghc3RybmNtcChkZXNjLmNfc3RyKCksICJNUDRBLUxBVE0iLCA5KSkgeworICAgICAgICBtRm9ybWF0LT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDKTsKKworICAgICAgICBpbnQzMl90IHNhbXBsZVJhdGUsIG51bUNoYW5uZWxzOworICAgICAgICBBU2Vzc2lvbkRlc2NyaXB0aW9uOjpQYXJzZUZvcm1hdERlc2MoCisgICAgICAgICAgICAgICAgZGVzYy5jX3N0cigpLCAmc2FtcGxlUmF0ZSwgJm51bUNoYW5uZWxzKTsKKworICAgICAgICBtRm9ybWF0LT5zZXRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgc2FtcGxlUmF0ZSk7CisgICAgICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIG51bUNoYW5uZWxzKTsKKworICAgICAgICBzcDxBQnVmZmVyPiBjb2RlY1NwZWNpZmljRGF0YSA9CisgICAgICAgICAgICBNYWtlQUFDQ29kZWNTcGVjaWZpY0RhdGEocGFyYW1zLmNfc3RyKCkpOworCisgICAgICAgIG1Gb3JtYXQtPnNldERhdGEoCisgICAgICAgICAgICAgICAga0tleUVTRFMsIDAsCisgICAgICAgICAgICAgICAgY29kZWNTcGVjaWZpY0RhdGEtPmRhdGEoKSwgY29kZWNTcGVjaWZpY0RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVFJFU1BBU1MoKTsKKyAgICB9Cit9CisKK0FQYWNrZXRTb3VyY2U6On5BUGFja2V0U291cmNlKCkgeworfQorCitzdGF0dXNfdCBBUGFja2V0U291cmNlOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBBUGFja2V0U291cmNlOjpzdG9wKCkgeworICAgIHJldHVybiBPSzsKK30KKworc3A8TWV0YURhdGE+IEFQYWNrZXRTb3VyY2U6OmdldEZvcm1hdCgpIHsKKyAgICByZXR1cm4gbUZvcm1hdDsKK30KKworc3RhdHVzX3QgQVBhY2tldFNvdXJjZTo6cmVhZCgKKyAgICAgICAgTWVkaWFCdWZmZXIgKipvdXQsIGNvbnN0IFJlYWRPcHRpb25zICopIHsKKyAgICAqb3V0ID0gTlVMTDsKKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisgICAgd2hpbGUgKG1FT1NSZXN1bHQgPT0gT0sgJiYgbUJ1ZmZlcnMuZW1wdHkoKSkgeworICAgICAgICBtQ29uZGl0aW9uLndhaXQobUxvY2spOworICAgIH0KKworICAgIGlmICghbUJ1ZmZlcnMuZW1wdHkoKSkgeworICAgICAgICBjb25zdCBzcDxBQnVmZmVyPiBidWZmZXIgPSAqbUJ1ZmZlcnMuYmVnaW4oKTsKKworICAgICAgICB1aW50NjRfdCBudHBUaW1lOworICAgICAgICBDSEVDSyhidWZmZXItPm1ldGEoKS0+ZmluZEludDY0KAorICAgICAgICAgICAgICAgICAgICAibnRwLXRpbWUiLCAoaW50NjRfdCAqKSZudHBUaW1lKSk7CisKKyAgICAgICAgaW50NjRfdCB0aW1lVXMgPSAoaW50NjRfdCkobnRwVGltZSAqIDFFNiAvICgxbGwgPDwgMzIpKTsKKworICAgICAgICBNZWRpYUJ1ZmZlciAqbWVkaWFCdWZmZXIgPSBuZXcgTWVkaWFCdWZmZXIoYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtZWRpYUJ1ZmZlci0+bWV0YV9kYXRhKCktPnNldEludDY0KGtLZXlUaW1lLCB0aW1lVXMpOworICAgICAgICBtZW1jcHkobWVkaWFCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKm91dCA9IG1lZGlhQnVmZmVyOworCisgICAgICAgIG1CdWZmZXJzLmVyYXNlKG1CdWZmZXJzLmJlZ2luKCkpOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgcmV0dXJuIG1FT1NSZXN1bHQ7Cit9CisKK3ZvaWQgQVBhY2tldFNvdXJjZTo6cXVldWVBY2Nlc3NVbml0KGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpIHsKKyAgICBpbnQzMl90IGRhbWFnZWQ7CisgICAgaWYgKGJ1ZmZlci0+bWV0YSgpLT5maW5kSW50MzIoImRhbWFnZWQiLCAmZGFtYWdlZCkgJiYgZGFtYWdlZCkgeworICAgICAgICAvLyBMT0coVkVSQk9TRSkgPDwgImRpc2NhcmRpbmcgZGFtYWdlZCBBVSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIG1CdWZmZXJzLnB1c2hfYmFjayhidWZmZXIpOworICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Cit9CisKK3ZvaWQgQVBhY2tldFNvdXJjZTo6c2lnbmFsRU9TKHN0YXR1c190IHJlc3VsdCkgeworICAgIENIRUNLKHJlc3VsdCAhPSBPSyk7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIG1FT1NSZXN1bHQgPSByZXN1bHQ7CisgICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVBhY2tldFNvdXJjZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUGFja2V0U291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA0MGVlZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVBhY2tldFNvdXJjZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfUEFDS0VUX1NPVVJDRV9IXworCisjZGVmaW5lIEFfUEFDS0VUX1NPVVJDRV9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorI2luY2x1ZGUgPHV0aWxzL0xpc3QuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJ1ZmZlcjsKK3N0cnVjdCBBU2Vzc2lvbkRlc2NyaXB0aW9uOworCitzdHJ1Y3QgQVBhY2tldFNvdXJjZSA6IHB1YmxpYyBNZWRpYVNvdXJjZSB7CisgICAgQVBhY2tldFNvdXJjZShjb25zdCBzcDxBU2Vzc2lvbkRlc2NyaXB0aW9uPiAmc2Vzc2lvbkRlc2MsIHNpemVfdCBpbmRleCk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMgPSBOVUxMKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKKyAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRGb3JtYXQoKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVhZCgKKyAgICAgICAgICAgIE1lZGlhQnVmZmVyICoqYnVmZmVyLCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucyA9IE5VTEwpOworCisgICAgdm9pZCBxdWV1ZUFjY2Vzc1VuaXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcik7CisgICAgdm9pZCBzaWduYWxFT1Moc3RhdHVzX3QgcmVzdWx0KTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFQYWNrZXRTb3VyY2UoKTsKKworcHJpdmF0ZToKKyAgICBNdXRleCBtTG9jazsKKyAgICBDb25kaXRpb24gbUNvbmRpdGlvbjsKKworICAgIHNwPE1ldGFEYXRhPiBtRm9ybWF0OworICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPiBtQnVmZmVyczsKKyAgICBzdGF0dXNfdCBtRU9TUmVzdWx0OworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQVBhY2tldFNvdXJjZSk7Cit9OworCisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9QQUNLRVRfU09VUkNFX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBBc3NlbWJsZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQXNzZW1ibGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDIyNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQXNzZW1ibGVyLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFSVFBBc3NlbWJsZXIuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RhdGljIGludDY0X3QgZ2V0Tm93VXMoKSB7CisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CisKKyAgICByZXR1cm4gKGludDY0X3QpdHYudHZfdXNlYyArIHR2LnR2X3NlYyAqIDEwMDAwMDBsbDsKK30KKworQVJUUEFzc2VtYmxlcjo6QVJUUEFzc2VtYmxlcigpCisgICAgOiBtRmlyc3RGYWlsdXJlVGltZVVzKC0xKSB7Cit9CisKK3ZvaWQgQVJUUEFzc2VtYmxlcjo6UHJvcGFnYXRlVGltZXMoCisgICAgICAgIGNvbnN0IHNwPEFCdWZmZXI+ICZmcm9tLCBjb25zdCBzcDxBQnVmZmVyPiAmdG8pIHsKKyAgICB1aW50MzJfdCBydHBUaW1lOworICAgIENIRUNLKGZyb20tPm1ldGEoKS0+ZmluZEludDMyKCJydHAtdGltZSIsIChpbnQzMl90ICopJnJ0cFRpbWUpKTsKKworICAgIHVpbnQ2NF90IG50cFRpbWUgPSAwOworICAgIENIRUNLKGZyb20tPm1ldGEoKS0+ZmluZEludDY0KCJudHAtdGltZSIsIChpbnQ2NF90ICopJm50cFRpbWUpKTsKKworICAgIHRvLT5tZXRhKCktPnNldEludDMyKCJydHAtdGltZSIsIHJ0cFRpbWUpOworICAgIHRvLT5tZXRhKCktPnNldEludDY0KCJudHAtdGltZSIsIG50cFRpbWUpOworfQorCit2b2lkIEFSVFBBc3NlbWJsZXI6Om9uUGFja2V0UmVjZWl2ZWQoY29uc3Qgc3A8QVJUUFNvdXJjZT4gJnNvdXJjZSkgeworICAgIEFzc2VtYmx5U3RhdHVzIHN0YXR1czsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHN0YXR1cyA9IGFzc2VtYmxlTW9yZShzb3VyY2UpOworCisgICAgICAgIGlmIChzdGF0dXMgPT0gV1JPTkdfU0VRVUVOQ0VfTlVNQkVSKSB7CisgICAgICAgICAgICBpZiAobUZpcnN0RmFpbHVyZVRpbWVVcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdldE5vd1VzKCkgLSBtRmlyc3RGYWlsdXJlVGltZVVzID4gMTAwMDBsbCkgeworICAgICAgICAgICAgICAgICAgICBtRmlyc3RGYWlsdXJlVGltZVVzID0gLTE7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gTE9HKFZFUkJPU0UpIDw8ICJ3YWl0ZWQgdG9vIGxvbmcgZm9yIHBhY2tldC4iOworICAgICAgICAgICAgICAgICAgICBwYWNrZXRMb3N0KCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUZpcnN0RmFpbHVyZVRpbWVVcyA9IGdldE5vd1VzKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1GaXJzdEZhaWx1cmVUaW1lVXMgPSAtMTsKKworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT1RfRU5PVUdIX0RBVEEpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUEFzc2VtYmxlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQXNzZW1ibGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkyYmQ2NQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUEFzc2VtYmxlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfUlRQX0FTU0VNQkxFUl9IXworCisjZGVmaW5lIEFfUlRQX0FTU0VNQkxFUl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJ1ZmZlcjsKK3N0cnVjdCBBUlRQU291cmNlOworCitzdHJ1Y3QgQVJUUEFzc2VtYmxlciA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBlbnVtIEFzc2VtYmx5U3RhdHVzIHsKKyAgICAgICAgTUFMRk9STUVEX1BBQ0tFVCwKKyAgICAgICAgV1JPTkdfU0VRVUVOQ0VfTlVNQkVSLAorICAgICAgICBOT1RfRU5PVUdIX0RBVEEsCisgICAgICAgIE9LCisgICAgfTsKKworICAgIEFSVFBBc3NlbWJsZXIoKTsKKworICAgIHZvaWQgb25QYWNrZXRSZWNlaXZlZChjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKTsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIFByb3BhZ2F0ZVRpbWVzKAorICAgICAgICBjb25zdCBzcDxBQnVmZmVyPiAmZnJvbSwgY29uc3Qgc3A8QUJ1ZmZlcj4gJnRvKTsKKworICAgIHZpcnR1YWwgQXNzZW1ibHlTdGF0dXMgYXNzZW1ibGVNb3JlKGNvbnN0IHNwPEFSVFBTb3VyY2U+ICZzb3VyY2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFja2V0TG9zdCgpID0gMDsKKworcHJpdmF0ZToKKyAgICBpbnQ2NF90IG1GaXJzdEZhaWx1cmVUaW1lVXM7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBUlRQQXNzZW1ibGVyKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9SVFBfQVNTRU1CTEVSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBDb25uZWN0aW9uLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NDEzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDQ5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBUlRQQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQVJUUFNvdXJjZS5oIgorI2luY2x1ZGUgIkFTZXNzaW9uRGVzY3JpcHRpb24uaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oPgorCisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorCisjZGVmaW5lIFZFUkJPU0UgICAgICAgICAwCisKKyNpZiBWRVJCT1NFCisjaW5jbHVkZSAiaGV4ZHVtcC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RhdGljIHVpbnQxNl90IHUxNmF0KGNvbnN0IHVpbnQ4X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gZGF0YVswXSA8PCA4IHwgZGF0YVsxXTsKK30KKworc3RhdGljIHVpbnQzMl90IHUzMmF0KGNvbnN0IHVpbnQ4X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdTE2YXQoZGF0YSkgPDwgMTYgfCB1MTZhdCgmZGF0YVsyXSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCB1NjRhdChjb25zdCB1aW50OF90ICpkYXRhKSB7CisgICAgcmV0dXJuICh1aW50NjRfdCkodTMyYXQoZGF0YSkpIDw8IDMyIHwgdTMyYXQoJmRhdGFbNF0pOworfQorCisvLyBzdGF0aWMKK2NvbnN0IGludDY0X3QgQVJUUENvbm5lY3Rpb246OmtTZWxlY3RUaW1lb3V0VXMgPSAxMDAwbGw7CisKK3N0cnVjdCBBUlRQQ29ubmVjdGlvbjo6U3RyZWFtSW5mbyB7CisgICAgaW50IG1SVFBTb2NrZXQ7CisgICAgaW50IG1SVENQU29ja2V0OworICAgIHNwPEFTZXNzaW9uRGVzY3JpcHRpb24+IG1TZXNzaW9uRGVzYzsKKyAgICBzaXplX3QgbUluZGV4OworICAgIHNwPEFNZXNzYWdlPiBtTm90aWZ5TXNnOworfTsKKworQVJUUENvbm5lY3Rpb246OkFSVFBDb25uZWN0aW9uKCkKKyAgICA6IG1Qb2xsRXZlbnRQZW5kaW5nKGZhbHNlKSB7Cit9CisKK0FSVFBDb25uZWN0aW9uOjp+QVJUUENvbm5lY3Rpb24oKSB7Cit9CisKK3ZvaWQgQVJUUENvbm5lY3Rpb246OmFkZFN0cmVhbSgKKyAgICAgICAgaW50IHJ0cFNvY2tldCwgaW50IHJ0Y3BTb2NrZXQsCisgICAgICAgIGNvbnN0IHNwPEFTZXNzaW9uRGVzY3JpcHRpb24+ICZzZXNzaW9uRGVzYywKKyAgICAgICAgc2l6ZV90IGluZGV4LAorICAgICAgICBjb25zdCBzcDxBTWVzc2FnZT4gJm5vdGlmeSkgeworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2Uoa1doYXRBZGRTdHJlYW0sIGlkKCkpOworICAgIG1zZy0+c2V0SW50MzIoInJ0cC1zb2NrZXQiLCBydHBTb2NrZXQpOworICAgIG1zZy0+c2V0SW50MzIoInJ0Y3Atc29ja2V0IiwgcnRjcFNvY2tldCk7CisgICAgbXNnLT5zZXRPYmplY3QoInNlc3Npb24tZGVzYyIsIHNlc3Npb25EZXNjKTsKKyAgICBtc2ctPnNldFNpemUoImluZGV4IiwgaW5kZXgpOworICAgIG1zZy0+c2V0TWVzc2FnZSgibm90aWZ5Iiwgbm90aWZ5KTsKKyAgICBtc2ctPnBvc3QoKTsKK30KKwordm9pZCBBUlRQQ29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKGludCBydHBTb2NrZXQsIGludCBydGNwU29ja2V0KSB7CisgICAgc3A8QU1lc3NhZ2U+IG1zZyA9IG5ldyBBTWVzc2FnZShrV2hhdFJlbW92ZVN0cmVhbSwgaWQoKSk7CisgICAgbXNnLT5zZXRJbnQzMigicnRwLXNvY2tldCIsIHJ0cFNvY2tldCk7CisgICAgbXNnLT5zZXRJbnQzMigicnRjcC1zb2NrZXQiLCBydGNwU29ja2V0KTsKKyAgICBtc2ctPnBvc3QoKTsKK30KKworc3RhdGljIHZvaWQgYnVtcFNvY2tldEJ1ZmZlclNpemUoaW50IHMpIHsKKyAgICBpbnQgc2l6ZSA9IDI1NiAqIDEwMjQ7CisgICAgQ0hFQ0tfRVEoc2V0c29ja29wdChzLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZzaXplLCBzaXplb2Yoc2l6ZSkpLCAwKTsKK30KKworLy8gc3RhdGljCit2b2lkIEFSVFBDb25uZWN0aW9uOjpNYWtlUG9ydFBhaXIoCisgICAgICAgIGludCAqcnRwU29ja2V0LCBpbnQgKnJ0Y3BTb2NrZXQsIHVuc2lnbmVkICpydHBQb3J0KSB7CisgICAgKnJ0cFNvY2tldCA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKKyAgICBDSEVDS19HRSgqcnRwU29ja2V0LCAwKTsKKworICAgIGJ1bXBTb2NrZXRCdWZmZXJTaXplKCpydHBTb2NrZXQpOworCisgICAgKnJ0Y3BTb2NrZXQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgQ0hFQ0tfR0UoKnJ0Y3BTb2NrZXQsIDApOworCisgICAgYnVtcFNvY2tldEJ1ZmZlclNpemUoKnJ0Y3BTb2NrZXQpOworCisgICAgdW5zaWduZWQgc3RhcnQgPSAocmFuZCgpICogMTAwMCkvIFJBTkRfTUFYICsgMTU1NTA7CisgICAgc3RhcnQgJj0gfjE7CisKKyAgICBmb3IgKHVuc2lnbmVkIHBvcnQgPSBzdGFydDsgcG9ydCA8IDY1NTM2OyBwb3J0ICs9IDIpIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisgICAgICAgIG1lbXNldChhZGRyLnNpbl96ZXJvLCAwLCBzaXplb2YoYWRkci5zaW5femVybykpOworICAgICAgICBhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgICAgICBhZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CisgICAgICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyhwb3J0KTsKKworICAgICAgICBpZiAoYmluZCgqcnRwU29ja2V0LAorICAgICAgICAgICAgICAgICAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSkgPCAwKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyhwb3J0ICsgMSk7CisKKyAgICAgICAgaWYgKGJpbmQoKnJ0Y3BTb2NrZXQsCisgICAgICAgICAgICAgICAgIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpKSA9PSAwKSB7CisgICAgICAgICAgICAqcnRwUG9ydCA9IHBvcnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUUkVTUEFTUygpOworfQorCit2b2lkIEFSVFBDb25uZWN0aW9uOjpvbk1lc3NhZ2VSZWNlaXZlZChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZykgeworICAgIHN3aXRjaCAobXNnLT53aGF0KCkpIHsKKyAgICAgICAgY2FzZSBrV2hhdEFkZFN0cmVhbToKKyAgICAgICAgeworICAgICAgICAgICAgb25BZGRTdHJlYW0obXNnKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBrV2hhdFJlbW92ZVN0cmVhbToKKyAgICAgICAgeworICAgICAgICAgICAgb25SZW1vdmVTdHJlYW0obXNnKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBrV2hhdFBvbGxTdHJlYW1zOgorICAgICAgICB7CisgICAgICAgICAgICBvblBvbGxTdHJlYW1zKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIFRSRVNQQVNTKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBUlRQQ29ubmVjdGlvbjo6b25BZGRTdHJlYW0oY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBtU3RyZWFtcy5wdXNoX2JhY2soU3RyZWFtSW5mbygpKTsKKyAgICBTdHJlYW1JbmZvICppbmZvID0gJiotLW1TdHJlYW1zLmVuZCgpOworCisgICAgaW50MzJfdCBzOworICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJydHAtc29ja2V0IiwgJnMpKTsKKyAgICBpbmZvLT5tUlRQU29ja2V0ID0gczsKKyAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicnRjcC1zb2NrZXQiLCAmcykpOworICAgIGluZm8tPm1SVENQU29ja2V0ID0gczsKKworICAgIHNwPFJlZkJhc2U+IG9iajsKKyAgICBDSEVDSyhtc2ctPmZpbmRPYmplY3QoInNlc3Npb24tZGVzYyIsICZvYmopKTsKKyAgICBpbmZvLT5tU2Vzc2lvbkRlc2MgPSBzdGF0aWNfY2FzdDxBU2Vzc2lvbkRlc2NyaXB0aW9uICo+KG9iai5nZXQoKSk7CisKKyAgICBDSEVDSyhtc2ctPmZpbmRTaXplKCJpbmRleCIsICZpbmZvLT5tSW5kZXgpKTsKKyAgICBDSEVDSyhtc2ctPmZpbmRNZXNzYWdlKCJub3RpZnkiLCAmaW5mby0+bU5vdGlmeU1zZykpOworCisgICAgcG9zdFBvbGxFdmVudCgpOworfQorCit2b2lkIEFSVFBDb25uZWN0aW9uOjpvblJlbW92ZVN0cmVhbShjb25zdCBzcDxBTWVzc2FnZT4gJm1zZykgeworICAgIGludDMyX3QgcnRwU29ja2V0LCBydGNwU29ja2V0OworICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJydHAtc29ja2V0IiwgJnJ0cFNvY2tldCkpOworICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJydGNwLXNvY2tldCIsICZydGNwU29ja2V0KSk7CisKKyAgICBMaXN0PFN0cmVhbUluZm8+OjppdGVyYXRvciBpdCA9IG1TdHJlYW1zLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1TdHJlYW1zLmVuZCgpCisgICAgICAgICAgICYmIChpdC0+bVJUUFNvY2tldCAhPSBydHBTb2NrZXQgfHwgaXQtPm1SVENQU29ja2V0ICE9IHJ0Y3BTb2NrZXQpKSB7CisgICAgICAgICsraXQ7CisgICAgfQorCisgICAgaWYgKGl0ID09IG1TdHJlYW1zLmVuZCgpKSB7CisgICAgICAgIFRSRVNQQVNTKCk7CisgICAgfQorCisgICAgbVN0cmVhbXMuZXJhc2UoaXQpOworfQorCit2b2lkIEFSVFBDb25uZWN0aW9uOjpwb3N0UG9sbEV2ZW50KCkgeworICAgIGlmIChtUG9sbEV2ZW50UGVuZGluZykgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3A8QU1lc3NhZ2U+IG1zZyA9IG5ldyBBTWVzc2FnZShrV2hhdFBvbGxTdHJlYW1zLCBpZCgpKTsKKyAgICBtc2ctPnBvc3QoKTsKKworICAgIG1Qb2xsRXZlbnRQZW5kaW5nID0gdHJ1ZTsKK30KKwordm9pZCBBUlRQQ29ubmVjdGlvbjo6b25Qb2xsU3RyZWFtcygpIHsKKyAgICBtUG9sbEV2ZW50UGVuZGluZyA9IGZhbHNlOworCisgICAgaWYgKG1TdHJlYW1zLmVtcHR5KCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIHR2LnR2X3NlYyA9IDA7CisgICAgdHYudHZfdXNlYyA9IGtTZWxlY3RUaW1lb3V0VXM7CisKKyAgICBmZF9zZXQgcnM7CisgICAgRkRfWkVSTygmcnMpOworCisgICAgaW50IG1heFNvY2tldCA9IC0xOworICAgIGZvciAoTGlzdDxTdHJlYW1JbmZvPjo6aXRlcmF0b3IgaXQgPSBtU3RyZWFtcy5iZWdpbigpOworICAgICAgICAgaXQgIT0gbVN0cmVhbXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgRkRfU0VUKGl0LT5tUlRQU29ja2V0LCAmcnMpOworICAgICAgICBGRF9TRVQoaXQtPm1SVENQU29ja2V0LCAmcnMpOworCisgICAgICAgIGlmIChpdC0+bVJUUFNvY2tldCA+IG1heFNvY2tldCkgeworICAgICAgICAgICAgbWF4U29ja2V0ID0gaXQtPm1SVFBTb2NrZXQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGl0LT5tUlRDUFNvY2tldCA+IG1heFNvY2tldCkgeworICAgICAgICAgICAgbWF4U29ja2V0ID0gaXQtPm1SVENQU29ja2V0OworICAgICAgICB9CisgICAgfQorCisgICAgaW50IHJlcyA9IHNlbGVjdChtYXhTb2NrZXQgKyAxLCAmcnMsIE5VTEwsIE5VTEwsICZ0dik7CisgICAgQ0hFQ0tfR0UocmVzLCAwKTsKKworICAgIGlmIChyZXMgPiAwKSB7CisgICAgICAgIGZvciAoTGlzdDxTdHJlYW1JbmZvPjo6aXRlcmF0b3IgaXQgPSBtU3RyZWFtcy5iZWdpbigpOworICAgICAgICAgICAgIGl0ICE9IG1TdHJlYW1zLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoRkRfSVNTRVQoaXQtPm1SVFBTb2NrZXQsICZycykpIHsKKyAgICAgICAgICAgICAgICByZWNlaXZlKCYqaXQsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKEZEX0lTU0VUKGl0LT5tUlRDUFNvY2tldCwgJnJzKSkgeworICAgICAgICAgICAgICAgIHJlY2VpdmUoJippdCwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcG9zdFBvbGxFdmVudCgpOworfQorCitzdGF0dXNfdCBBUlRQQ29ubmVjdGlvbjo6cmVjZWl2ZShTdHJlYW1JbmZvICpzLCBib29sIHJlY2VpdmVSVFApIHsKKyAgICBzcDxBQnVmZmVyPiBidWZmZXIgPSBuZXcgQUJ1ZmZlcig2NTUzNik7CisKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gZnJvbTsKKyAgICBzb2NrbGVuX3QgZnJvbVNpemUgPSBzaXplb2YoZnJvbSk7CisKKyAgICBzc2l6ZV90IG5ieXRlcyA9IHJlY3Zmcm9tKAorICAgICAgICAgICAgcmVjZWl2ZVJUUCA/IHMtPm1SVFBTb2NrZXQgOiBzLT5tUlRDUFNvY2tldCwKKyAgICAgICAgICAgIGJ1ZmZlci0+ZGF0YSgpLAorICAgICAgICAgICAgYnVmZmVyLT5jYXBhY2l0eSgpLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmZnJvbSwKKyAgICAgICAgICAgICZmcm9tU2l6ZSk7CisKKyAgICBpZiAobmJ5dGVzIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgYnVmZmVyLT5zZXRSYW5nZSgwLCBuYnl0ZXMpOworCisgICAgc3RhdHVzX3QgZXJyOworICAgIGlmIChyZWNlaXZlUlRQKSB7CisgICAgICAgIGVyciA9IHBhcnNlUlRQKHMsIGJ1ZmZlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gcGFyc2VSVENQKHMsIGJ1ZmZlcik7CisgICAgfQorCisgICAgcmV0dXJuIGVycjsKK30KKworc3RhdHVzX3QgQVJUUENvbm5lY3Rpb246OnBhcnNlUlRQKFN0cmVhbUluZm8gKnMsIGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpIHsKKyAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOworCisgICAgaWYgKHNpemUgPCAxMikgeworICAgICAgICAvLyBUb28gc2hvcnQgdG8gYmUgYSB2YWxpZCBSVFAgaGVhZGVyLgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IGJ1ZmZlci0+ZGF0YSgpOworCisgICAgaWYgKChkYXRhWzBdID4+IDYpICE9IDIpIHsKKyAgICAgICAgLy8gVW5zdXBwb3J0ZWQgdmVyc2lvbi4KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChkYXRhWzBdICYgMHgyMCkgeworICAgICAgICAvLyBQYWRkaW5nIHByZXNlbnQuCisKKyAgICAgICAgc2l6ZV90IHBhZGRpbmdMZW5ndGggPSBkYXRhW3NpemUgLSAxXTsKKworICAgICAgICBpZiAocGFkZGluZ0xlbmd0aCArIDEyID4gc2l6ZSkgeworICAgICAgICAgICAgLy8gSWYgd2UgcmVtb3ZlZCB0aGlzIG11Y2ggcGFkZGluZyB3ZSdkIGVuZCB1cCB3aXRoIHNvbWV0aGluZworICAgICAgICAgICAgLy8gdGhhdCdzIHRvbyBzaG9ydCB0byBiZSBhIHZhbGlkIFJUUCBoZWFkZXIuCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBzaXplIC09IHBhZGRpbmdMZW5ndGg7CisgICAgfQorCisgICAgaW50IG51bUNTUkNzID0gZGF0YVswXSAmIDB4MGY7CisKKyAgICBzaXplX3QgcGF5bG9hZE9mZnNldCA9IDEyICsgNCAqIG51bUNTUkNzOworCisgICAgaWYgKHNpemUgPCBwYXlsb2FkT2Zmc2V0KSB7CisgICAgICAgIC8vIE5vdCBlbm91Z2ggZGF0YSB0byBmaXQgdGhlIGJhc2ljIGhlYWRlciBhbmQgYWxsIHRoZSBDU1JDIGVudHJpZXMuCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZGF0YVswXSAmIDB4MTApIHsKKyAgICAgICAgLy8gSGVhZGVyIGVYdGVuc2lvbiBwcmVzZW50LgorCisgICAgICAgIGlmIChzaXplIDwgcGF5bG9hZE9mZnNldCArIDQpIHsKKyAgICAgICAgICAgIC8vIE5vdCBlbm91Z2ggZGF0YSB0byBmaXQgdGhlIGJhc2ljIGhlYWRlciwgYWxsIENTUkMgZW50cmllcworICAgICAgICAgICAgLy8gYW5kIHRoZSBmaXJzdCA0IGJ5dGVzIG9mIHRoZSBleHRlbnNpb24gaGVhZGVyLgorCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCB1aW50OF90ICpleHRlbnNpb25EYXRhID0gJmRhdGFbcGF5bG9hZE9mZnNldF07CisKKyAgICAgICAgc2l6ZV90IGV4dGVuc2lvbkxlbmd0aCA9CisgICAgICAgICAgICA0ICogKGV4dGVuc2lvbkRhdGFbMl0gPDwgOCB8IGV4dGVuc2lvbkRhdGFbM10pOworCisgICAgICAgIGlmIChzaXplIDwgcGF5bG9hZE9mZnNldCArIDQgKyBleHRlbnNpb25MZW5ndGgpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIHBheWxvYWRPZmZzZXQgKz0gNCArIGV4dGVuc2lvbkxlbmd0aDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBzcmNJZCA9IHUzMmF0KCZkYXRhWzhdKTsKKworICAgIHNwPEFSVFBTb3VyY2U+IHNvdXJjZTsKKyAgICBzc2l6ZV90IGluZGV4ID0gbVNvdXJjZXMuaW5kZXhPZktleShzcmNJZCk7CisgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICBpbmRleCA9IG1Tb3VyY2VzLnNpemUoKTsKKworICAgICAgICBzb3VyY2UgPSBuZXcgQVJUUFNvdXJjZSgKKyAgICAgICAgICAgICAgICBzcmNJZCwgcy0+bVNlc3Npb25EZXNjLCBzLT5tSW5kZXgsIHMtPm1Ob3RpZnlNc2cpOworCisgICAgICAgIG1Tb3VyY2VzLmFkZChzcmNJZCwgc291cmNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzb3VyY2UgPSBtU291cmNlcy52YWx1ZUF0KGluZGV4KTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBydHBUaW1lID0gdTMyYXQoJmRhdGFbNF0pOworCisgICAgc3A8QU1lc3NhZ2U+IG1ldGEgPSBidWZmZXItPm1ldGEoKTsKKyAgICBtZXRhLT5zZXRJbnQzMigic3NyYyIsIHNyY0lkKTsKKyAgICBtZXRhLT5zZXRJbnQzMigicnRwLXRpbWUiLCBydHBUaW1lKTsKKyAgICBtZXRhLT5zZXRJbnQzMigiUFQiLCBkYXRhWzFdICYgMHg3Zik7CisgICAgbWV0YS0+c2V0SW50MzIoIk0iLCBkYXRhWzFdID4+IDcpOworCisgICAgYnVmZmVyLT5zZXRJbnQzMkRhdGEodTE2YXQoJmRhdGFbMl0pKTsKKworI2lmIFZFUkJPU0UKKyAgICBwcmludGYoIlJUUCA9IHtcbiIKKyAgICAgICAgICAgIiAgUFQ6ICVkXG4iCisgICAgICAgICAgICIgIHNlcXVlbmNlIG51bWJlcjogJWRcbiIKKyAgICAgICAgICAgIiAgUlRQLXRpbWU6IDB4JTA4eFxuIgorICAgICAgICAgICAiICBNOiAlZFxuIgorICAgICAgICAgICAiICBTU1JDOiAweCUwOHhcbiIKKyAgICAgICAgICAgIn1cbiIsCisgICAgICAgICAgIGRhdGFbMV0gJiAweDdmLAorICAgICAgICAgICB1MTZhdCgmZGF0YVsyXSksCisgICAgICAgICAgIHJ0cFRpbWUsCisgICAgICAgICAgIGRhdGFbMV0gPj4gNywKKyAgICAgICAgICAgc3JjSWQpOworCisgICAgLy8gaGV4ZHVtcCgmZGF0YVtwYXlsb2FkT2Zmc2V0XSwgc2l6ZSAtIHBheWxvYWRPZmZzZXQpOworI2VuZGlmCisKKyAgICBidWZmZXItPnNldFJhbmdlKHBheWxvYWRPZmZzZXQsIHNpemUgLSBwYXlsb2FkT2Zmc2V0KTsKKworICAgIHNvdXJjZS0+cHJvY2Vzc1JUUFBhY2tldChidWZmZXIpOworCisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBBUlRQQ29ubmVjdGlvbjo6cGFyc2VSVENQKFN0cmVhbUluZm8gKnMsIGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpIHsKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gYnVmZmVyLT5kYXRhKCk7CisgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnNpemUoKTsKKworICAgIHdoaWxlIChzaXplID4gMCkgeworICAgICAgICBpZiAoc2l6ZSA8IDgpIHsKKyAgICAgICAgICAgIC8vIFRvbyBzaG9ydCB0byBiZSBhIHZhbGlkIFJUQ1AgaGVhZGVyCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKGRhdGFbMF0gPj4gNikgIT0gMikgeworICAgICAgICAgICAgLy8gVW5zdXBwb3J0ZWQgdmVyc2lvbi4KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkYXRhWzBdICYgMHgyMCkgeworICAgICAgICAgICAgLy8gUGFkZGluZyBwcmVzZW50LgorCisgICAgICAgICAgICBzaXplX3QgcGFkZGluZ0xlbmd0aCA9IGRhdGFbc2l6ZSAtIDFdOworCisgICAgICAgICAgICBpZiAocGFkZGluZ0xlbmd0aCArIDEyID4gc2l6ZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIHJlbW92ZWQgdGhpcyBtdWNoIHBhZGRpbmcgd2UnZCBlbmQgdXAgd2l0aCBzb21ldGhpbmcKKyAgICAgICAgICAgICAgICAvLyB0aGF0J3MgdG9vIHNob3J0IHRvIGJlIGEgdmFsaWQgUlRQIGhlYWRlci4KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemUgLT0gcGFkZGluZ0xlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBoZWFkZXJMZW5ndGggPSA0ICogKGRhdGFbMl0gPDwgOCB8IGRhdGFbM10pICsgNDsKKworICAgICAgICBpZiAoc2l6ZSA8IGhlYWRlckxlbmd0aCkgeworICAgICAgICAgICAgLy8gT25seSByZWNlaXZlZCBhIHBhcnRpYWwgcGFja2V0PworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChkYXRhWzFdKSB7CisgICAgICAgICAgICBjYXNlIDIwMDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYXJzZVNSKHMsIGRhdGEsIGhlYWRlckxlbmd0aCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB7CisjaWYgVkVSQk9TRQorICAgICAgICAgICAgICAgIHByaW50ZigiVW5rbm93biBSVENQIHBhY2tldCB0eXBlICVkIG9mIHNpemUgJWxkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBkYXRhWzFdLCBoZWFkZXJMZW5ndGgpOworCisgICAgICAgICAgICAgICAgaGV4ZHVtcChkYXRhLCBoZWFkZXJMZW5ndGgpOworI2VuZGlmCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkYXRhICs9IGhlYWRlckxlbmd0aDsKKyAgICAgICAgc2l6ZSAtPSBoZWFkZXJMZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBBUlRQQ29ubmVjdGlvbjo6cGFyc2VTUigKKyAgICAgICAgU3RyZWFtSW5mbyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBzaXplX3QgUkMgPSBkYXRhWzBdICYgMHgxZjsKKworICAgIGlmIChzaXplIDwgKDcgKyBSQyAqIDYpICogNCkgeworICAgICAgICAvLyBQYWNrZXQgdG9vIHNob3J0IGZvciB0aGUgbWluaW1hbCBTUiBoZWFkZXIuCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBpZCA9IHUzMmF0KCZkYXRhWzRdKTsKKyAgICB1aW50NjRfdCBudHBUaW1lID0gdTY0YXQoJmRhdGFbOF0pOworICAgIHVpbnQzMl90IHJ0cFRpbWUgPSB1MzJhdCgmZGF0YVsxNl0pOworCisjaWYgVkVSQk9TRQorICAgIHByaW50ZigiU1IgPSB7XG4iCisgICAgICAgICAgICIgIFNTUkM6ICAgICAgMHglMDh4XG4iCisgICAgICAgICAgICIgIE5UUC10aW1lOiAgMHglMDE2bGx4XG4iCisgICAgICAgICAgICIgIFJUUC10aW1lOiAgMHglMDh4XG4iCisgICAgICAgICAgICJ9XG4iLAorICAgICAgICAgICBpZCwgbnRwVGltZSwgcnRwVGltZSk7CisjZW5kaWYKKworICAgIHNwPEFSVFBTb3VyY2U+IHNvdXJjZTsKKyAgICBzc2l6ZV90IGluZGV4ID0gbVNvdXJjZXMuaW5kZXhPZktleShpZCk7CisgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICBpbmRleCA9IG1Tb3VyY2VzLnNpemUoKTsKKworICAgICAgICBzb3VyY2UgPSBuZXcgQVJUUFNvdXJjZSgKKyAgICAgICAgICAgICAgICBpZCwgcy0+bVNlc3Npb25EZXNjLCBzLT5tSW5kZXgsIHMtPm1Ob3RpZnlNc2cpOworCisgICAgICAgIG1Tb3VyY2VzLmFkZChpZCwgc291cmNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzb3VyY2UgPSBtU291cmNlcy52YWx1ZUF0KGluZGV4KTsKKyAgICB9CisKKyAgICBzb3VyY2UtPnRpbWVVcGRhdGUocnRwVGltZSwgbnRwVGltZSk7CisKKyAgICByZXR1cm4gMDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQ29ubmVjdGlvbi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3N2UzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9SVFBfQ09OTkVDVElPTl9IXworCisjZGVmaW5lIEFfUlRQX0NPTk5FQ1RJT05fSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx1dGlscy9MaXN0Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFCdWZmZXI7CitzdHJ1Y3QgQVJUUFNvdXJjZTsKK3N0cnVjdCBBU2Vzc2lvbkRlc2NyaXB0aW9uOworCitzdHJ1Y3QgQVJUUENvbm5lY3Rpb24gOiBwdWJsaWMgQUhhbmRsZXIgeworICAgIEFSVFBDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGFkZFN0cmVhbSgKKyAgICAgICAgICAgIGludCBydHBTb2NrZXQsIGludCBydGNwU29ja2V0LAorICAgICAgICAgICAgY29uc3Qgc3A8QVNlc3Npb25EZXNjcmlwdGlvbj4gJnNlc3Npb25EZXNjLCBzaXplX3QgaW5kZXgsCisgICAgICAgICAgICBjb25zdCBzcDxBTWVzc2FnZT4gJm5vdGlmeSk7CisKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShpbnQgcnRwU29ja2V0LCBpbnQgcnRjcFNvY2tldCk7CisKKyAgICAvLyBDcmVhdGVzIGEgcGFpciBvZiBVRFAgZGF0YWdyYW0gc29ja2V0cyBib3VuZCB0byBhZGphY2VudCBwb3J0cworICAgIC8vICh0aGUgcnRwU29ja2V0IGlzIGJvdW5kIHRvIGFuIGV2ZW4gcG9ydCwgdGhlIHJ0Y3BTb2NrZXQgdG8gdGhlCisgICAgLy8gbmV4dCBoaWdoZXIgcG9ydCkuCisgICAgc3RhdGljIHZvaWQgTWFrZVBvcnRQYWlyKAorICAgICAgICAgICAgaW50ICpydHBTb2NrZXQsIGludCAqcnRjcFNvY2tldCwgdW5zaWduZWQgKnJ0cFBvcnQpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+QVJUUENvbm5lY3Rpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25NZXNzYWdlUmVjZWl2ZWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpOworCitwcml2YXRlOgorICAgIGVudW0geworICAgICAgICBrV2hhdEFkZFN0cmVhbSwKKyAgICAgICAga1doYXRSZW1vdmVTdHJlYW0sCisgICAgICAgIGtXaGF0UG9sbFN0cmVhbXMsCisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IGtTZWxlY3RUaW1lb3V0VXM7CisKKyAgICBzdHJ1Y3QgU3RyZWFtSW5mbzsKKyAgICBMaXN0PFN0cmVhbUluZm8+IG1TdHJlYW1zOworCisgICAgS2V5ZWRWZWN0b3I8dWludDMyX3QsIHNwPEFSVFBTb3VyY2U+ID4gbVNvdXJjZXM7CisKKyAgICBib29sIG1Qb2xsRXZlbnRQZW5kaW5nOworCisgICAgdm9pZCBvbkFkZFN0cmVhbShjb25zdCBzcDxBTWVzc2FnZT4gJm1zZyk7CisgICAgdm9pZCBvblJlbW92ZVN0cmVhbShjb25zdCBzcDxBTWVzc2FnZT4gJm1zZyk7CisgICAgdm9pZCBvblBvbGxTdHJlYW1zKCk7CisKKyAgICBzdGF0dXNfdCByZWNlaXZlKFN0cmVhbUluZm8gKmluZm8sIGJvb2wgcmVjZWl2ZVJUUCk7CisKKyAgICBzdGF0dXNfdCBwYXJzZVJUUChTdHJlYW1JbmZvICppbmZvLCBjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKTsKKyAgICBzdGF0dXNfdCBwYXJzZVJUQ1AoU3RyZWFtSW5mbyAqaW5mbywgY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcik7CisgICAgc3RhdHVzX3QgcGFyc2VTUihTdHJlYW1JbmZvICppbmZvLCBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKKyAgICB2b2lkIHBvc3RQb2xsRXZlbnQoKTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFSVFBDb25uZWN0aW9uKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9SVFBfQ09OTkVDVElPTl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQU291cmNlLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUFNvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA1ZGFhOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUFNvdXJjZS5jcHAKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQVJUUFNvdXJjZS5oIgorCisjaW5jbHVkZSAiQUFWQ0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkFNUEVHNEF1ZGlvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiQVNlc3Npb25EZXNjcmlwdGlvbi5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmg+CisKKyNkZWZpbmUgVkVSQk9TRSAgICAgICAgIDAKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitBUlRQU291cmNlOjpBUlRQU291cmNlKAorICAgICAgICB1aW50MzJfdCBpZCwKKyAgICAgICAgY29uc3Qgc3A8QVNlc3Npb25EZXNjcmlwdGlvbj4gJnNlc3Npb25EZXNjLCBzaXplX3QgaW5kZXgsCisgICAgICAgIGNvbnN0IHNwPEFNZXNzYWdlPiAmbm90aWZ5KQorICAgIDogbUlEKGlkKSwKKyAgICAgIG1IaWdoZXN0U2VxTnVtYmVyKDApLAorICAgICAgbU51bUJ1ZmZlcnNSZWNlaXZlZCgwKSwKKyAgICAgIG1OdW1UaW1lcygwKSB7CisgICAgdW5zaWduZWQgbG9uZyBQVDsKKyAgICBBU3RyaW5nIGRlc2M7CisgICAgQVN0cmluZyBwYXJhbXM7CisgICAgc2Vzc2lvbkRlc2MtPmdldEZvcm1hdFR5cGUoaW5kZXgsICZQVCwgJmRlc2MsICZwYXJhbXMpOworCisgICAgaWYgKCFzdHJuY21wKGRlc2MuY19zdHIoKSwgIkgyNjQvIiwgNSkpIHsKKyAgICAgICAgbUFzc2VtYmxlciA9IG5ldyBBQVZDQXNzZW1ibGVyKG5vdGlmeSk7CisgICAgfSBlbHNlIGlmICghc3RybmNtcChkZXNjLmNfc3RyKCksICJNUDRBLUxBVE0iLCA5KSkgeworICAgICAgICBtQXNzZW1ibGVyID0gbmV3IEFNUEVHNEF1ZGlvQXNzZW1ibGVyKG5vdGlmeSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVFJFU1BBU1MoKTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50MzJfdCBBYnNEaWZmKHVpbnQzMl90IHNlcTEsIHVpbnQzMl90IHNlcTIpIHsKKyAgICByZXR1cm4gc2VxMSA+IHNlcTIgPyBzZXExIC0gc2VxMiA6IHNlcTIgLSBzZXExOworfQorCit2b2lkIEFSVFBTb3VyY2U6OnByb2Nlc3NSVFBQYWNrZXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcikgeworICAgIGlmIChxdWV1ZVBhY2tldChidWZmZXIpICYmIG1OdW1UaW1lcyA9PSAyICYmIG1Bc3NlbWJsZXIgIT0gTlVMTCkgeworICAgICAgICBtQXNzZW1ibGVyLT5vblBhY2tldFJlY2VpdmVkKHRoaXMpOworICAgIH0KKworICAgIGR1bXAoKTsKK30KKwordm9pZCBBUlRQU291cmNlOjp0aW1lVXBkYXRlKHVpbnQzMl90IHJ0cFRpbWUsIHVpbnQ2NF90IG50cFRpbWUpIHsKKyNpZiBWRVJCT1NFCisgICAgTE9HKFZFUkJPU0UpIDw8ICJ0aW1lVXBkYXRlIjsKKyNlbmRpZgorCisgICAgaWYgKG1OdW1UaW1lcyA9PSAyKSB7CisgICAgICAgIG1OVFBUaW1lWzBdID0gbU5UUFRpbWVbMV07CisgICAgICAgIG1SVFBUaW1lWzBdID0gbVJUUFRpbWVbMV07CisgICAgICAgIG1OdW1UaW1lcyA9IDE7CisgICAgfQorICAgIG1OVFBUaW1lW21OdW1UaW1lc10gPSBudHBUaW1lOworICAgIG1SVFBUaW1lW21OdW1UaW1lcysrXSA9IHJ0cFRpbWU7CisKKyAgICBpZiAobU51bVRpbWVzID09IDIpIHsKKyAgICAgICAgZm9yIChMaXN0PHNwPEFCdWZmZXI+ID46Oml0ZXJhdG9yIGl0ID0gbVF1ZXVlLmJlZ2luKCk7CisgICAgICAgICAgICAgaXQgIT0gbVF1ZXVlLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBzcDxBTWVzc2FnZT4gbWV0YSA9ICgqaXQpLT5tZXRhKCk7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHJ0cFRpbWU7CisgICAgICAgICAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoInJ0cC10aW1lIiwgKGludDMyX3QgKikmcnRwVGltZSkpOworCisgICAgICAgICAgICBtZXRhLT5zZXRJbnQ2NCgibnRwLXRpbWUiLCBSVFAyTlRQKHJ0cFRpbWUpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBBUlRQU291cmNlOjpxdWV1ZVBhY2tldChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisgICAgdWludDMyX3Qgc2VxTnVtID0gKHVpbnQzMl90KWJ1ZmZlci0+aW50MzJEYXRhKCk7CisKKyAgICBpZiAobU51bVRpbWVzID09IDIpIHsKKyAgICAgICAgc3A8QU1lc3NhZ2U+IG1ldGEgPSBidWZmZXItPm1ldGEoKTsKKworICAgICAgICB1aW50MzJfdCBydHBUaW1lOworICAgICAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoInJ0cC10aW1lIiwgKGludDMyX3QgKikmcnRwVGltZSkpOworCisgICAgICAgIG1ldGEtPnNldEludDY0KCJudHAtdGltZSIsIFJUUDJOVFAocnRwVGltZSkpOworICAgIH0KKworICAgIGlmIChtTnVtQnVmZmVyc1JlY2VpdmVkKysgPT0gMCkgeworICAgICAgICBtSGlnaGVzdFNlcU51bWJlciA9IHNlcU51bTsKKyAgICAgICAgbVF1ZXVlLnB1c2hfYmFjayhidWZmZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBPbmx5IHRoZSBsb3dlciAxNi1iaXQgb2YgdGhlIHNlcXVlbmNlIG51bWJlcnMgYXJlIHRyYW5zbWl0dGVkLAorICAgIC8vIGRlcml2ZSB0aGUgaGlnaC1vcmRlciBiaXRzIGJ5IGNob29zaW5nIHRoZSBjYW5kaWRhdGUgY2xvc2VzdAorICAgIC8vIHRvIHRoZSBoaWdoZXN0IHNlcXVlbmNlIG51bWJlciAoZXh0ZW5kZWQgdG8gMzIgYml0cykgcmVjZWl2ZWQgc28gZmFyLgorCisgICAgdWludDMyX3Qgc2VxMSA9IHNlcU51bSB8IChtSGlnaGVzdFNlcU51bWJlciAmIDB4ZmZmZjAwMDApOworICAgIHVpbnQzMl90IHNlcTIgPSBzZXFOdW0gfCAoKG1IaWdoZXN0U2VxTnVtYmVyICYgMHhmZmZmMDAwMCkgKyAweDEwMDAwKTsKKyAgICB1aW50MzJfdCBzZXEzID0gc2VxTnVtIHwgKChtSGlnaGVzdFNlcU51bWJlciAmIDB4ZmZmZjAwMDApIC0gMHgxMDAwMCk7CisgICAgdWludDMyX3QgZGlmZjEgPSBBYnNEaWZmKHNlcTEsIG1IaWdoZXN0U2VxTnVtYmVyKTsKKyAgICB1aW50MzJfdCBkaWZmMiA9IEFic0RpZmYoc2VxMiwgbUhpZ2hlc3RTZXFOdW1iZXIpOworICAgIHVpbnQzMl90IGRpZmYzID0gQWJzRGlmZihzZXEzLCBtSGlnaGVzdFNlcU51bWJlcik7CisKKyAgICBpZiAoZGlmZjEgPCBkaWZmMikgeworICAgICAgICBpZiAoZGlmZjEgPCBkaWZmMykgeworICAgICAgICAgICAgLy8gZGlmZjEgPCBkaWZmMiBeIGRpZmYxIDwgZGlmZjMKKyAgICAgICAgICAgIHNlcU51bSA9IHNlcTE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBkaWZmMyA8PSBkaWZmMSA8IGRpZmYyCisgICAgICAgICAgICBzZXFOdW0gPSBzZXEzOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChkaWZmMiA8IGRpZmYzKSB7CisgICAgICAgIC8vIGRpZmYyIDw9IGRpZmYxIF4gZGlmZjIgPCBkaWZmMworICAgICAgICBzZXFOdW0gPSBzZXEyOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGRpZmYzIDw9IGRpZmYyIDw9IGRpZmYxCisgICAgICAgIHNlcU51bSA9IHNlcTM7CisgICAgfQorCisgICAgaWYgKHNlcU51bSA+IG1IaWdoZXN0U2VxTnVtYmVyKSB7CisgICAgICAgIG1IaWdoZXN0U2VxTnVtYmVyID0gc2VxTnVtOworICAgIH0KKworICAgIGJ1ZmZlci0+c2V0SW50MzJEYXRhKHNlcU51bSk7CisKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID46Oml0ZXJhdG9yIGl0ID0gbVF1ZXVlLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1RdWV1ZS5lbmQoKSAmJiAodWludDMyX3QpKCppdCktPmludDMyRGF0YSgpIDwgc2VxTnVtKSB7CisgICAgICAgICsraXQ7CisgICAgfQorCisgICAgaWYgKGl0ICE9IG1RdWV1ZS5lbmQoKSAmJiAodWludDMyX3QpKCppdCktPmludDMyRGF0YSgpID09IHNlcU51bSkgeworICAgICAgICBMT0coV0FSTklORykgPDwgIkRpc2NhcmRpbmcgZHVwbGljYXRlIGJ1ZmZlciI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtUXVldWUuaW5zZXJ0KGl0LCBidWZmZXIpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQVJUUFNvdXJjZTo6ZHVtcCgpIGNvbnN0IHsKKyAgICBpZiAoKG1OdW1CdWZmZXJzUmVjZWl2ZWQgJSAxMjgpICE9IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIDAKKyAgICBpZiAobUFzc2VtYmxlciA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgdG1wWzIwXTsKKyAgICAgICAgc3ByaW50Zih0bXAsICIweCUwOHgiLCBtSUQpOworCisgICAgICAgIGludDMyX3QgbnVtTWlzc2luZyA9IDA7CisKKyAgICAgICAgaWYgKCFtUXVldWUuZW1wdHkoKSkgeworICAgICAgICAgICAgTGlzdDxzcDxBQnVmZmVyPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1RdWV1ZS5iZWdpbigpOworICAgICAgICAgICAgdWludDMyX3QgZXhwZWN0ZWRTZXFOdW0gPSAodWludDMyX3QpKCppdCktPmludDMyRGF0YSgpOworICAgICAgICAgICAgKytleHBlY3RlZFNlcU51bTsKKyAgICAgICAgICAgICsraXQ7CisKKyAgICAgICAgICAgIGZvciAoOyBpdCAhPSBtUXVldWUuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBzZXFOdW0gPSAodWludDMyX3QpKCppdCktPmludDMyRGF0YSgpOworICAgICAgICAgICAgICAgIENIRUNLX0dFKHNlcU51bSwgZXhwZWN0ZWRTZXFOdW0pOworCisgICAgICAgICAgICAgICAgaWYgKHNlcU51bSAhPSBleHBlY3RlZFNlcU51bSkgeworICAgICAgICAgICAgICAgICAgICBudW1NaXNzaW5nICs9IHNlcU51bSAtIGV4cGVjdGVkU2VxTnVtOworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFNlcU51bSA9IHNlcU51bTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2V4cGVjdGVkU2VxTnVtOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJbIiA8PCB0bXAgPDwgIl0gTWlzc2luZyAiIDw8IG51bU1pc3NpbmcKKyAgICAgICAgICAgICA8PCAiIC8gIiA8PCAobU51bUJ1ZmZlcnNSZWNlaXZlZCArIG51bU1pc3NpbmcpIDw8ICIgcGFja2V0cy4gKCIKKyAgICAgICAgICAgICA8PCAoMTAwLjAgKiBudW1NaXNzaW5nIC8gKG1OdW1CdWZmZXJzUmVjZWl2ZWQgKyBudW1NaXNzaW5nKSkKKyAgICAgICAgICAgICA8PCAiICUlKSI7CisgICAgfQorI2VuZGlmCisKKyNpZiAwCisgICAgQVN0cmluZyBvdXQ7CisgICAgCisgICAgb3V0LmFwcGVuZCh0bXApOworICAgIG91dC5hcHBlbmQoIiBbIik7CisKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbVF1ZXVlLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1RdWV1ZS5lbmQoKSkgeworICAgICAgICB1aW50MzJfdCBzdGFydCA9ICh1aW50MzJfdCkoKml0KS0+aW50MzJEYXRhKCk7CisKKyAgICAgICAgb3V0LmFwcGVuZChzdGFydCk7CisKKyAgICAgICAgKytpdDsKKyAgICAgICAgdWludDMyX3QgZXhwZWN0ZWQgPSBzdGFydCArIDE7CisKKyAgICAgICAgd2hpbGUgKGl0ICE9IG1RdWV1ZS5lbmQoKSkgeworICAgICAgICAgICAgdWludDMyX3Qgc2VxTnVtID0gKHVpbnQzMl90KSgqaXQpLT5pbnQzMkRhdGEoKTsKKworICAgICAgICAgICAgaWYgKHNlcU51bSAhPSBleHBlY3RlZCkgeworICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZCA+IHN0YXJ0ICsgMSkgeworICAgICAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCItIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoZXhwZWN0ZWQgLSAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKytpdDsKKyAgICAgICAgICAgICsrZXhwZWN0ZWQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXQgPT0gbVF1ZXVlLmVuZCgpKSB7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWQgPiBzdGFydCArIDEpIHsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCItIik7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZChleHBlY3RlZCAtIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgb3V0LmFwcGVuZCgiXSIpOworCisgICAgTE9HKFZFUkJPU0UpIDw8IG91dDsKKyNlbmRpZgorfQorCit1aW50NjRfdCBBUlRQU291cmNlOjpSVFAyTlRQKHVpbnQzMl90IHJ0cFRpbWUpIGNvbnN0IHsKKyAgICBDSEVDS19FUShtTnVtVGltZXMsIDJ1KTsKKworICAgIHJldHVybiBtTlRQVGltZVswXSArIChkb3VibGUpKG1OVFBUaW1lWzFdIC0gbU5UUFRpbWVbMF0pCisgICAgICAgICAgICAqICgoZG91YmxlKXJ0cFRpbWUgLSAoZG91YmxlKW1SVFBUaW1lWzBdKQorICAgICAgICAgICAgLyAoZG91YmxlKShtUlRQVGltZVsxXSAtIG1SVFBUaW1lWzBdKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBTb3VyY2UuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUFNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5M2NkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBTb3VyY2UuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX1JUUF9TT1VSQ0VfSF8KKworI2RlZmluZSBBX1JUUF9TT1VSQ0VfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL0xpc3QuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFCdWZmZXI7CitzdHJ1Y3QgQU1lc3NhZ2U7CitzdHJ1Y3QgQVJUUEFzc2VtYmxlcjsKK3N0cnVjdCBBU2Vzc2lvbkRlc2NyaXB0aW9uOworCitzdHJ1Y3QgQVJUUFNvdXJjZSA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBBUlRQU291cmNlKAorICAgICAgICAgICAgdWludDMyX3QgaWQsCisgICAgICAgICAgICBjb25zdCBzcDxBU2Vzc2lvbkRlc2NyaXB0aW9uPiAmc2Vzc2lvbkRlc2MsIHNpemVfdCBpbmRleCwKKyAgICAgICAgICAgIGNvbnN0IHNwPEFNZXNzYWdlPiAmbm90aWZ5KTsKKworICAgIHZvaWQgcHJvY2Vzc1JUUFBhY2tldChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKTsKKyAgICB2b2lkIHRpbWVVcGRhdGUodWludDMyX3QgcnRwVGltZSwgdWludDY0X3QgbnRwVGltZSk7CisKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID4gKnF1ZXVlKCkgeyByZXR1cm4gJm1RdWV1ZTsgfQorCitwcml2YXRlOgorICAgIHVpbnQzMl90IG1JRDsKKyAgICB1aW50MzJfdCBtSGlnaGVzdFNlcU51bWJlcjsKKyAgICBpbnQzMl90IG1OdW1CdWZmZXJzUmVjZWl2ZWQ7CisKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID4gbVF1ZXVlOworICAgIHNwPEFSVFBBc3NlbWJsZXI+IG1Bc3NlbWJsZXI7CisKKyAgICBzaXplX3QgbU51bVRpbWVzOworICAgIHVpbnQ2NF90IG1OVFBUaW1lWzJdOworICAgIHVpbnQzMl90IG1SVFBUaW1lWzJdOworCisgICAgdWludDY0X3QgUlRQMk5UUCh1aW50MzJfdCBydHBUaW1lKSBjb25zdDsKKworICAgIGJvb2wgcXVldWVQYWNrZXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcik7CisgICAgdm9pZCBkdW1wKCkgY29uc3Q7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBUlRQU291cmNlKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9SVFBfU09VUkNFX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFNQQ29ubmVjdGlvbi5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFNQQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxNjJjMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUU1BDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBUlRTUENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorCisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBzdGF0aWMKK2NvbnN0IGludDY0X3QgQVJUU1BDb25uZWN0aW9uOjprU2VsZWN0VGltZW91dFVzID0gMTAwMGxsOworCitBUlRTUENvbm5lY3Rpb246OkFSVFNQQ29ubmVjdGlvbigpCisgICAgOiBtU3RhdGUoRElTQ09OTkVDVEVEKSwKKyAgICAgIG1Tb2NrZXQoLTEpLAorICAgICAgbUNvbm5lY3Rpb25JRCgwKSwKKyAgICAgIG1OZXh0Q1NlcSgwKSwKKyAgICAgIG1SZWNlaXZlUmVzcG9uc2VFdmVudFBlbmRpbmcoZmFsc2UpIHsKK30KKworQVJUU1BDb25uZWN0aW9uOjp+QVJUU1BDb25uZWN0aW9uKCkgeworICAgIGlmIChtU29ja2V0ID49IDApIHsKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiQ29ubmVjdGlvbiBpcyBzdGlsbCBvcGVuLCBjbG9zaW5nIHRoZSBzb2NrZXQuIjsKKyAgICAgICAgY2xvc2UobVNvY2tldCk7CisgICAgICAgIG1Tb2NrZXQgPSAtMTsKKyAgICB9Cit9CisKK3ZvaWQgQVJUU1BDb25uZWN0aW9uOjpjb25uZWN0KGNvbnN0IGNoYXIgKnVybCwgY29uc3Qgc3A8QU1lc3NhZ2U+ICZyZXBseSkgeworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2Uoa1doYXRDb25uZWN0LCBpZCgpKTsKKyAgICBtc2ctPnNldFN0cmluZygidXJsIiwgdXJsKTsKKyAgICBtc2ctPnNldE1lc3NhZ2UoInJlcGx5IiwgcmVwbHkpOworICAgIG1zZy0+cG9zdCgpOworfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6ZGlzY29ubmVjdChjb25zdCBzcDxBTWVzc2FnZT4gJnJlcGx5KSB7CisgICAgc3A8QU1lc3NhZ2U+IG1zZyA9IG5ldyBBTWVzc2FnZShrV2hhdERpc2Nvbm5lY3QsIGlkKCkpOworICAgIG1zZy0+c2V0TWVzc2FnZSgicmVwbHkiLCByZXBseSk7CisgICAgbXNnLT5wb3N0KCk7Cit9CisKK3ZvaWQgQVJUU1BDb25uZWN0aW9uOjpzZW5kUmVxdWVzdCgKKyAgICAgICAgY29uc3QgY2hhciAqcmVxdWVzdCwgY29uc3Qgc3A8QU1lc3NhZ2U+ICZyZXBseSkgeworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2Uoa1doYXRTZW5kUmVxdWVzdCwgaWQoKSk7CisgICAgbXNnLT5zZXRTdHJpbmcoInJlcXVlc3QiLCByZXF1ZXN0KTsKKyAgICBtc2ctPnNldE1lc3NhZ2UoInJlcGx5IiwgcmVwbHkpOworICAgIG1zZy0+cG9zdCgpOworfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6b25NZXNzYWdlUmVjZWl2ZWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBzd2l0Y2ggKG1zZy0+d2hhdCgpKSB7CisgICAgICAgIGNhc2Uga1doYXRDb25uZWN0OgorICAgICAgICAgICAgb25Db25uZWN0KG1zZyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGtXaGF0RGlzY29ubmVjdDoKKyAgICAgICAgICAgIG9uRGlzY29ubmVjdChtc2cpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBrV2hhdENvbXBsZXRlQ29ubmVjdGlvbjoKKyAgICAgICAgICAgIG9uQ29tcGxldGVDb25uZWN0aW9uKG1zZyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGtXaGF0U2VuZFJlcXVlc3Q6CisgICAgICAgICAgICBvblNlbmRSZXF1ZXN0KG1zZyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGtXaGF0UmVjZWl2ZVJlc3BvbnNlOgorICAgICAgICAgICAgb25SZWNlaXZlUmVzcG9uc2UoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBUUkVTUEFTUygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisvLyBzdGF0aWMKK2Jvb2wgQVJUU1BDb25uZWN0aW9uOjpQYXJzZVVSTCgKKyAgICAgICAgY29uc3QgY2hhciAqdXJsLCBBU3RyaW5nICpob3N0LCB1bnNpZ25lZCAqcG9ydCwgQVN0cmluZyAqcGF0aCkgeworICAgIGhvc3QtPmNsZWFyKCk7CisgICAgKnBvcnQgPSAwOworICAgIHBhdGgtPmNsZWFyKCk7CisKKyAgICBpZiAoc3RybmNhc2VjbXAoInJ0c3A6Ly8iLCB1cmwsIDcpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICpzbGFzaFBvcyA9IHN0cmNocigmdXJsWzddLCAnLycpOworCisgICAgaWYgKHNsYXNoUG9zID09IE5VTEwpIHsKKyAgICAgICAgaG9zdC0+c2V0VG8oJnVybFs3XSk7CisgICAgICAgIHBhdGgtPnNldFRvKCIvIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaG9zdC0+c2V0VG8oJnVybFs3XSwgc2xhc2hQb3MgLSAmdXJsWzddKTsKKyAgICAgICAgcGF0aC0+c2V0VG8oc2xhc2hQb3MpOworICAgIH0KKworICAgIGNoYXIgKmNvbG9uUG9zID0gc3RyY2hyKGhvc3QtPmNfc3RyKCksICc6Jyk7CisKKyAgICBpZiAoY29sb25Qb3MgIT0gTlVMTCkgeworICAgICAgICB1bnNpZ25lZCBsb25nIHg7CisgICAgICAgIGlmICghUGFyc2VTaW5nbGVVbnNpZ25lZExvbmcoY29sb25Qb3MgKyAxLCAmeCkgfHwgeCA+PSA2NTUzNikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgKnBvcnQgPSB4OworCisgICAgICAgIHNpemVfdCBjb2xvbk9mZnNldCA9IGNvbG9uUG9zIC0gaG9zdC0+Y19zdHIoKTsKKyAgICAgICAgc2l6ZV90IHRyYWlsaW5nID0gaG9zdC0+c2l6ZSgpIC0gY29sb25PZmZzZXQ7CisgICAgICAgIGhvc3QtPmVyYXNlKGNvbG9uT2Zmc2V0LCB0cmFpbGluZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgKnBvcnQgPSA1NTQ7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQVJUU1BDb25uZWN0aW9uOjpvbkNvbm5lY3QoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICArK21Db25uZWN0aW9uSUQ7CisKKyAgICBpZiAobVN0YXRlICE9IERJU0NPTk5FQ1RFRCkgeworICAgICAgICBjbG9zZShtU29ja2V0KTsKKyAgICAgICAgbVNvY2tldCA9IC0xOworCisgICAgICAgIGZsdXNoUGVuZGluZ1JlcXVlc3RzKCk7CisgICAgfQorCisgICAgbVN0YXRlID0gQ09OTkVDVElORzsKKworICAgIG1Tb2NrZXQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApOworCisgICAgLy8gTWFrZSBzb2NrZXQgbm9uLWJsb2NraW5nLgorICAgIGludCBmbGFncyA9IGZjbnRsKG1Tb2NrZXQsIEZfR0VURkwsIDApOworICAgIENIRUNLX05FKGZsYWdzLCAtMSk7CisgICAgQ0hFQ0tfTkUoZmNudGwobVNvY2tldCwgRl9TRVRGTCwgZmxhZ3MgfCBPX05PTkJMT0NLKSwgLTEpOworCisgICAgQVN0cmluZyB1cmw7CisgICAgQ0hFQ0sobXNnLT5maW5kU3RyaW5nKCJ1cmwiLCAmdXJsKSk7CisKKyAgICBBU3RyaW5nIGhvc3QsIHBhdGg7CisgICAgdW5zaWduZWQgcG9ydDsKKyAgICBDSEVDSyhQYXJzZVVSTCh1cmwuY19zdHIoKSwgJmhvc3QsICZwb3J0LCAmcGF0aCkpOworCisgICAgc3RydWN0IGhvc3RlbnQgKmVudCA9IGdldGhvc3RieW5hbWUoaG9zdC5jX3N0cigpKTsKKyAgICBDSEVDSyhlbnQgIT0gTlVMTCk7CisKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlOworICAgIG1lbXNldChyZW1vdGUuc2luX3plcm8sIDAsIHNpemVvZihyZW1vdGUuc2luX3plcm8pKTsKKyAgICByZW1vdGUuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgcmVtb3RlLnNpbl9hZGRyLnNfYWRkciA9ICooaW5fYWRkcl90ICopZW50LT5oX2FkZHI7CisgICAgcmVtb3RlLnNpbl9wb3J0ID0gaHRvbnMocG9ydCk7CisKKyAgICBpbnQgZXJyID0gOjpjb25uZWN0KAorICAgICAgICAgICAgbVNvY2tldCwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKSZyZW1vdGUsIHNpemVvZihyZW1vdGUpKTsKKworICAgIHNwPEFNZXNzYWdlPiByZXBseTsKKyAgICBDSEVDSyhtc2ctPmZpbmRNZXNzYWdlKCJyZXBseSIsICZyZXBseSkpOworCisgICAgcmVwbHktPnNldEludDMyKCJzZXJ2ZXItaXAiLCBudG9obChyZW1vdGUuc2luX2FkZHIuc19hZGRyKSk7CisKKyAgICBpZiAoZXJyIDwgMCkgeworICAgICAgICBpZiAoZXJybm8gPT0gRUlOUFJPR1JFU1MpIHsKKyAgICAgICAgICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2Uoa1doYXRDb21wbGV0ZUNvbm5lY3Rpb24sIGlkKCkpOworICAgICAgICAgICAgbXNnLT5zZXRNZXNzYWdlKCJyZXBseSIsIHJlcGx5KTsKKyAgICAgICAgICAgIG1zZy0+c2V0SW50MzIoImNvbm5lY3Rpb24taWQiLCBtQ29ubmVjdGlvbklEKTsKKyAgICAgICAgICAgIG1zZy0+cG9zdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcmVwbHktPnNldEludDMyKCJyZXN1bHQiLCAtZXJybm8pOworICAgICAgICBtU3RhdGUgPSBESVNDT05ORUNURUQ7CisKKyAgICAgICAgY2xvc2UobVNvY2tldCk7CisgICAgICAgIG1Tb2NrZXQgPSAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXBseS0+c2V0SW50MzIoInJlc3VsdCIsIE9LKTsKKyAgICAgICAgbVN0YXRlID0gQ09OTkVDVEVEOworICAgICAgICBtTmV4dENTZXEgPSAxOworCisgICAgICAgIHBvc3RSZWNlaXZlUmVwb25zZUV2ZW50KCk7CisgICAgfQorCisgICAgcmVwbHktPnBvc3QoKTsKK30KKwordm9pZCBBUlRTUENvbm5lY3Rpb246Om9uRGlzY29ubmVjdChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZykgeworICAgIGlmIChtU3RhdGUgPT0gQ09OTkVDVEVEIHx8IG1TdGF0ZSA9PSBDT05ORUNUSU5HKSB7CisgICAgICAgIGNsb3NlKG1Tb2NrZXQpOworICAgICAgICBtU29ja2V0ID0gLTE7CisKKyAgICAgICAgZmx1c2hQZW5kaW5nUmVxdWVzdHMoKTsKKyAgICB9IAorCisgICAgc3A8QU1lc3NhZ2U+IHJlcGx5OworICAgIENIRUNLKG1zZy0+ZmluZE1lc3NhZ2UoInJlcGx5IiwgJnJlcGx5KSk7CisKKyAgICByZXBseS0+c2V0SW50MzIoInJlc3VsdCIsIE9LKTsKKyAgICBtU3RhdGUgPSBESVNDT05ORUNURUQ7CisKKyAgICByZXBseS0+cG9zdCgpOworfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6b25Db21wbGV0ZUNvbm5lY3Rpb24oY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBzcDxBTWVzc2FnZT4gcmVwbHk7CisgICAgQ0hFQ0sobXNnLT5maW5kTWVzc2FnZSgicmVwbHkiLCAmcmVwbHkpKTsKKworICAgIGludDMyX3QgY29ubmVjdGlvbklEOworICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJjb25uZWN0aW9uLWlkIiwgJmNvbm5lY3Rpb25JRCkpOworCisgICAgaWYgKChjb25uZWN0aW9uSUQgIT0gbUNvbm5lY3Rpb25JRCkgfHwgbVN0YXRlICE9IENPTk5FQ1RJTkcpIHsKKyAgICAgICAgLy8gV2hpbGUgd2Ugd2VyZSBhdHRlbXB0aW5nIHRvIGNvbm5lY3QsIHRoZSBhdHRlbXB0IHdhcworICAgICAgICAvLyBjYW5jZWxsZWQuCisgICAgICAgIHJlcGx5LT5zZXRJbnQzMigicmVzdWx0IiwgLUVDT05OQUJPUlRFRCk7CisgICAgICAgIHJlcGx5LT5wb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICB0di50dl9zZWMgPSAwOworICAgIHR2LnR2X3VzZWMgPSBrU2VsZWN0VGltZW91dFVzOworCisgICAgZmRfc2V0IHdzOworICAgIEZEX1pFUk8oJndzKTsKKyAgICBGRF9TRVQobVNvY2tldCwgJndzKTsKKworICAgIGludCByZXMgPSBzZWxlY3QobVNvY2tldCArIDEsIE5VTEwsICZ3cywgTlVMTCwgJnR2KTsKKyAgICBDSEVDS19HRShyZXMsIDApOworCisgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgIC8vIFRpbWVkIG91dC4gTm90IHlldCBjb25uZWN0ZWQuCisKKyAgICAgICAgbXNnLT5wb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgZXJyOworICAgIHNvY2tsZW5fdCBvcHRpb25MZW4gPSBzaXplb2YoZXJyKTsKKyAgICBDSEVDS19FUShnZXRzb2Nrb3B0KG1Tb2NrZXQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAmZXJyLCAmb3B0aW9uTGVuKSwgMCk7CisgICAgQ0hFQ0tfRVEob3B0aW9uTGVuLCAoc29ja2xlbl90KXNpemVvZihlcnIpKTsKKworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBMT0coRVJST1IpIDw8ICJlcnIgPSAiIDw8IGVyciA8PCAiICgiIDw8IHN0cmVycm9yKGVycikgPDwgIikiOworCisgICAgICAgIHJlcGx5LT5zZXRJbnQzMigicmVzdWx0IiwgLWVycik7CisKKyAgICAgICAgbVN0YXRlID0gRElTQ09OTkVDVEVEOworICAgICAgICBjbG9zZShtU29ja2V0KTsKKyAgICAgICAgbVNvY2tldCA9IC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlcGx5LT5zZXRJbnQzMigicmVzdWx0IiwgT0spOworICAgICAgICBtU3RhdGUgPSBDT05ORUNURUQ7CisgICAgICAgIG1OZXh0Q1NlcSA9IDE7CisKKyAgICAgICAgcG9zdFJlY2VpdmVSZXBvbnNlRXZlbnQoKTsKKyAgICB9CisKKyAgICByZXBseS0+cG9zdCgpOworfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6b25TZW5kUmVxdWVzdChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZykgeworICAgIHNwPEFNZXNzYWdlPiByZXBseTsKKyAgICBDSEVDSyhtc2ctPmZpbmRNZXNzYWdlKCJyZXBseSIsICZyZXBseSkpOworCisgICAgaWYgKG1TdGF0ZSAhPSBDT05ORUNURUQpIHsKKyAgICAgICAgcmVwbHktPnNldEludDMyKCJyZXN1bHQiLCAtRU5PVENPTk4pOworICAgICAgICByZXBseS0+cG9zdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVN0cmluZyByZXF1ZXN0OworICAgIENIRUNLKG1zZy0+ZmluZFN0cmluZygicmVxdWVzdCIsICZyZXF1ZXN0KSk7CisKKyAgICAvLyBGaW5kIHRoZSBib3VuZGFyeSBiZXR3ZWVuIGhlYWRlcnMgYW5kIHRoZSBib2R5LgorICAgIHNzaXplX3QgaSA9IHJlcXVlc3QuZmluZCgiXHJcblxyXG4iKTsKKyAgICBDSEVDS19HRShpLCAwKTsKKworICAgIGludDMyX3QgY3NlcSA9IG1OZXh0Q1NlcSsrOworCisgICAgQVN0cmluZyBjc2VxSGVhZGVyID0gIkNTZXE6ICI7CisgICAgY3NlcUhlYWRlci5hcHBlbmQoY3NlcSk7CisgICAgY3NlcUhlYWRlci5hcHBlbmQoIlxyXG4iKTsKKworICAgIHJlcXVlc3QuaW5zZXJ0KGNzZXFIZWFkZXIsIGkgKyAyKTsKKworICAgIExPRyhWRVJCT1NFKSA8PCByZXF1ZXN0OworCisgICAgc2l6ZV90IG51bUJ5dGVzU2VudCA9IDA7CisgICAgd2hpbGUgKG51bUJ5dGVzU2VudCA8IHJlcXVlc3Quc2l6ZSgpKSB7CisgICAgICAgIHNzaXplX3QgbiA9CisgICAgICAgICAgICBzZW5kKG1Tb2NrZXQsIHJlcXVlc3QuY19zdHIoKSArIG51bUJ5dGVzU2VudCwKKyAgICAgICAgICAgICAgICAgcmVxdWVzdC5zaXplKCkgLSBudW1CeXRlc1NlbnQsIDApOworCisgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgIC8vIFNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICBUUkVTUEFTUygpOworICAgICAgICB9IGVsc2UgaWYgKG4gPCAwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICAgICAgfQorCisgICAgICAgIG51bUJ5dGVzU2VudCArPSAoc2l6ZV90KW47CisgICAgfQorCisgICAgbVBlbmRpbmdSZXF1ZXN0cy5hZGQoY3NlcSwgcmVwbHkpOworfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6b25SZWNlaXZlUmVzcG9uc2UoKSB7CisgICAgbVJlY2VpdmVSZXNwb25zZUV2ZW50UGVuZGluZyA9IGZhbHNlOworCisgICAgaWYgKG1TdGF0ZSAhPSBDT05ORUNURUQpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIHR2LnR2X3NlYyA9IDA7CisgICAgdHYudHZfdXNlYyA9IGtTZWxlY3RUaW1lb3V0VXM7CisKKyAgICBmZF9zZXQgcnM7CisgICAgRkRfWkVSTygmcnMpOworICAgIEZEX1NFVChtU29ja2V0LCAmcnMpOworCisgICAgaW50IHJlcyA9IHNlbGVjdChtU29ja2V0ICsgMSwgJnJzLCBOVUxMLCBOVUxMLCAmdHYpOworICAgIENIRUNLX0dFKHJlcywgMCk7CisKKyAgICBpZiAocmVzID09IDEpIHsKKyAgICAgICAgaWYgKCFyZWNlaXZlUlRTUFJlcG9uc2UoKSkgeworICAgICAgICAgICAgLy8gU29tZXRoaW5nIGhvcnJpYmxlLCBpcnJlcGFyYWJsZSBoYXMgaGFwcGVuZWQuCisgICAgICAgICAgICBmbHVzaFBlbmRpbmdSZXF1ZXN0cygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgcG9zdFJlY2VpdmVSZXBvbnNlRXZlbnQoKTsKK30KKwordm9pZCBBUlRTUENvbm5lY3Rpb246OmZsdXNoUGVuZGluZ1JlcXVlc3RzKCkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVBlbmRpbmdSZXF1ZXN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBtUGVuZGluZ1JlcXVlc3RzLnZhbHVlQXQoaSk7CisKKyAgICAgICAgcmVwbHktPnNldEludDMyKCJyZXN1bHQiLCAtRUNPTk5BQk9SVEVEKTsKKyAgICAgICAgcmVwbHktPnBvc3QoKTsKKyAgICB9CisKKyAgICBtUGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7Cit9CisKK3ZvaWQgQVJUU1BDb25uZWN0aW9uOjpwb3N0UmVjZWl2ZVJlcG9uc2VFdmVudCgpIHsKKyAgICBpZiAobVJlY2VpdmVSZXNwb25zZUV2ZW50UGVuZGluZykgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3A8QU1lc3NhZ2U+IG1zZyA9IG5ldyBBTWVzc2FnZShrV2hhdFJlY2VpdmVSZXNwb25zZSwgaWQoKSk7CisgICAgbXNnLT5wb3N0KCk7CisKKyAgICBtUmVjZWl2ZVJlc3BvbnNlRXZlbnRQZW5kaW5nID0gdHJ1ZTsKK30KKworYm9vbCBBUlRTUENvbm5lY3Rpb246OnJlY2VpdmVMaW5lKEFTdHJpbmcgKmxpbmUpIHsKKyAgICBsaW5lLT5jbGVhcigpOworCisgICAgYm9vbCBzYXdDUiA9IGZhbHNlOworICAgIGZvciAoOzspIHsKKyAgICAgICAgY2hhciBjOworICAgICAgICBzc2l6ZV90IG4gPSByZWN2KG1Tb2NrZXQsICZjLCAxLCAwKTsKKyAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgLy8gU2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChuIDwgMCkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRSRVNQQVNTKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2F3Q1IgJiYgYyA9PSAnXG4nKSB7CisgICAgICAgICAgICBsaW5lLT5lcmFzZShsaW5lLT5zaXplKCkgLSAxLCAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgbGluZS0+YXBwZW5kKCZjLCAxKTsKKworICAgICAgICBzYXdDUiA9IChjID09ICdccicpOworICAgIH0KK30KKworYm9vbCBBUlRTUENvbm5lY3Rpb246OnJlY2VpdmVSVFNQUmVwb25zZSgpIHsKKyAgICBzcDxBUlRTUFJlc3BvbnNlPiByZXNwb25zZSA9IG5ldyBBUlRTUFJlc3BvbnNlOworCisgICAgaWYgKCFyZWNlaXZlTGluZSgmcmVzcG9uc2UtPm1TdGF0dXNMaW5lKSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgTE9HKElORk8pIDw8ICJzdGF0dXM6ICIgPDwgcmVzcG9uc2UtPm1TdGF0dXNMaW5lOworCisgICAgc3NpemVfdCBzcGFjZTEgPSByZXNwb25zZS0+bVN0YXR1c0xpbmUuZmluZCgiICIpOworICAgIGlmIChzcGFjZTEgPCAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgc3NpemVfdCBzcGFjZTIgPSByZXNwb25zZS0+bVN0YXR1c0xpbmUuZmluZCgiICIsIHNwYWNlMSArIDEpOworICAgIGlmIChzcGFjZTIgPCAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBBU3RyaW5nIHN0YXR1c0NvZGVTdHIoCisgICAgICAgICAgICByZXNwb25zZS0+bVN0YXR1c0xpbmUsIHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOworCisgICAgaWYgKCFQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZygKKyAgICAgICAgICAgICAgICBzdGF0dXNDb2RlU3RyLmNfc3RyKCksICZyZXNwb25zZS0+bVN0YXR1c0NvZGUpCisgICAgICAgICAgICB8fCByZXNwb25zZS0+bVN0YXR1c0NvZGUgPCAxMDAgfHwgcmVzcG9uc2UtPm1TdGF0dXNDb2RlID4gOTk5KSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBBU3RyaW5nIGxpbmU7CisgICAgZm9yICg7OykgeworICAgICAgICBpZiAoIXJlY2VpdmVMaW5lKCZsaW5lKSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGluZS5lbXB0eSgpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAibGluZTogIiA8PCBsaW5lOworCisgICAgICAgIHNzaXplX3QgY29sb25Qb3MgPSBsaW5lLmZpbmQoIjoiKTsKKyAgICAgICAgaWYgKGNvbG9uUG9zIDwgMCkgeworICAgICAgICAgICAgLy8gTWFsZm9ybWVkIGhlYWRlciBsaW5lLgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgQVN0cmluZyBrZXkobGluZSwgMCwgY29sb25Qb3MpOworICAgICAgICBrZXkudHJpbSgpOworICAgICAgICBrZXkudG9sb3dlcigpOworCisgICAgICAgIGxpbmUuZXJhc2UoMCwgY29sb25Qb3MgKyAxKTsKKyAgICAgICAgbGluZS50cmltKCk7CisKKyAgICAgICAgcmVzcG9uc2UtPm1IZWFkZXJzLmFkZChrZXksIGxpbmUpOworICAgIH0KKworICAgIHVuc2lnbmVkIGxvbmcgY29udGVudExlbmd0aCA9IDA7CisKKyAgICBzc2l6ZV90IGkgPSByZXNwb25zZS0+bUhlYWRlcnMuaW5kZXhPZktleSgiY29udGVudC1sZW5ndGgiKTsKKworICAgIGlmIChpID49IDApIHsKKyAgICAgICAgQVN0cmluZyB2YWx1ZSA9IHJlc3BvbnNlLT5tSGVhZGVycy52YWx1ZUF0KGkpOworICAgICAgICBpZiAoIVBhcnNlU2luZ2xlVW5zaWduZWRMb25nKHZhbHVlLmNfc3RyKCksICZjb250ZW50TGVuZ3RoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbnRlbnRMZW5ndGggPiAwKSB7CisgICAgICAgIHJlc3BvbnNlLT5tQ29udGVudCA9IG5ldyBBQnVmZmVyKGNvbnRlbnRMZW5ndGgpOworCisgICAgICAgIHNpemVfdCBudW1CeXRlc1JlYWQgPSAwOworICAgICAgICB3aGlsZSAobnVtQnl0ZXNSZWFkIDwgY29udGVudExlbmd0aCkgeworICAgICAgICAgICAgc3NpemVfdCBuID0gcmVjdigKKyAgICAgICAgICAgICAgICAgICAgbVNvY2tldCwgcmVzcG9uc2UtPm1Db250ZW50LT5kYXRhKCkgKyBudW1CeXRlc1JlYWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggLSBudW1CeXRlc1JlYWQsIDApOworCisgICAgICAgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gU2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICBUUkVTUEFTUygpOworICAgICAgICAgICAgfSBlbHNlIGlmIChuIDwgMCkgeworICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBUUkVTUEFTUygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBudW1CeXRlc1JlYWQgKz0gKHNpemVfdCluOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG5vdGlmeVJlc3BvbnNlTGlzdGVuZXIocmVzcG9uc2UpOworfQorCisvLyBzdGF0aWMKK2Jvb2wgQVJUU1BDb25uZWN0aW9uOjpQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZygKKyAgICAgICAgY29uc3QgY2hhciAqZnJvbSwgdW5zaWduZWQgbG9uZyAqeCkgeworICAgIGNoYXIgKmVuZDsKKyAgICAqeCA9IHN0cnRvdWwoZnJvbSwgJmVuZCwgMTApOworCisgICAgaWYgKGVuZCA9PSBmcm9tIHx8ICplbmQgIT0gJ1wwJykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQVJUU1BDb25uZWN0aW9uOjpub3RpZnlSZXNwb25zZUxpc3RlbmVyKAorICAgICAgICBjb25zdCBzcDxBUlRTUFJlc3BvbnNlPiAmcmVzcG9uc2UpIHsKKyAgICBzc2l6ZV90IGkgPSByZXNwb25zZS0+bUhlYWRlcnMuaW5kZXhPZktleSgiY3NlcSIpOworCisgICAgaWYgKGkgPCAwKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTdHJpbmcgdmFsdWUgPSByZXNwb25zZS0+bUhlYWRlcnMudmFsdWVBdChpKTsKKworICAgIHVuc2lnbmVkIGxvbmcgY3NlcTsKKyAgICBpZiAoIVBhcnNlU2luZ2xlVW5zaWduZWRMb25nKHZhbHVlLmNfc3RyKCksICZjc2VxKSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaSA9IG1QZW5kaW5nUmVxdWVzdHMuaW5kZXhPZktleShjc2VxKTsKKworICAgIGlmIChpIDwgMCkgeworICAgICAgICAvLyBVbnNvbGljaXRlZCByZXNwb25zZT8KKyAgICAgICAgVFJFU1BBU1MoKTsKKyAgICB9CisKKyAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBtUGVuZGluZ1JlcXVlc3RzLnZhbHVlQXQoaSk7CisgICAgbVBlbmRpbmdSZXF1ZXN0cy5yZW1vdmVJdGVtc0F0KGkpOworCisgICAgcmVwbHktPnNldEludDMyKCJyZXN1bHQiLCBPSyk7CisgICAgcmVwbHktPnNldE9iamVjdCgicmVzcG9uc2UiLCByZXNwb25zZSk7CisgICAgcmVwbHktPnBvc3QoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRTUENvbm5lY3Rpb24uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUU1BDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU3N2EyZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUU1BDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9SVFNQX0NPTk5FQ1RJT05fSF8KKworI2RlZmluZSBBX1JUU1BfQ09OTkVDVElPTl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBQnVmZmVyOworCitzdHJ1Y3QgQVJUU1BSZXNwb25zZSA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICB1bnNpZ25lZCBsb25nIG1TdGF0dXNDb2RlOworICAgIEFTdHJpbmcgbVN0YXR1c0xpbmU7CisgICAgS2V5ZWRWZWN0b3I8QVN0cmluZyxBU3RyaW5nPiBtSGVhZGVyczsKKyAgICBzcDxBQnVmZmVyPiBtQ29udGVudDsKK307CisKK3N0cnVjdCBBUlRTUENvbm5lY3Rpb24gOiBwdWJsaWMgQUhhbmRsZXIgeworICAgIEFSVFNQQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBjb25uZWN0KGNvbnN0IGNoYXIgKnVybCwgY29uc3Qgc3A8QU1lc3NhZ2U+ICZyZXBseSk7CisgICAgdm9pZCBkaXNjb25uZWN0KGNvbnN0IHNwPEFNZXNzYWdlPiAmcmVwbHkpOworCisgICAgdm9pZCBzZW5kUmVxdWVzdChjb25zdCBjaGFyICpyZXF1ZXN0LCBjb25zdCBzcDxBTWVzc2FnZT4gJnJlcGx5KTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFSVFNQQ29ubmVjdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvbk1lc3NhZ2VSZWNlaXZlZChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZyk7CisKK3ByaXZhdGU6CisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIERJU0NPTk5FQ1RFRCwKKyAgICAgICAgQ09OTkVDVElORywKKyAgICAgICAgQ09OTkVDVEVELAorICAgIH07CisKKyAgICBlbnVtIHsKKyAgICAgICAga1doYXRDb25uZWN0ICAgICAgICAgICAgPSAnY29ubicsCisgICAgICAgIGtXaGF0RGlzY29ubmVjdCAgICAgICAgID0gJ2Rpc2MnLAorICAgICAgICBrV2hhdENvbXBsZXRlQ29ubmVjdGlvbiA9ICdjb21jJywKKyAgICAgICAga1doYXRTZW5kUmVxdWVzdCAgICAgICAgPSAnc3JlcScsCisgICAgICAgIGtXaGF0UmVjZWl2ZVJlc3BvbnNlICAgID0gJ3JyZXMnLAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBrU2VsZWN0VGltZW91dFVzOworCisgICAgU3RhdGUgbVN0YXRlOworICAgIGludCBtU29ja2V0OworICAgIGludDMyX3QgbUNvbm5lY3Rpb25JRDsKKyAgICBpbnQzMl90IG1OZXh0Q1NlcTsKKyAgICBib29sIG1SZWNlaXZlUmVzcG9uc2VFdmVudFBlbmRpbmc7CisKKyAgICBLZXllZFZlY3RvcjxpbnQzMl90LCBzcDxBTWVzc2FnZT4gPiBtUGVuZGluZ1JlcXVlc3RzOworCisgICAgdm9pZCBvbkNvbm5lY3QoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpOworICAgIHZvaWQgb25EaXNjb25uZWN0KGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKTsKKyAgICB2b2lkIG9uQ29tcGxldGVDb25uZWN0aW9uKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKTsKKyAgICB2b2lkIG9uU2VuZFJlcXVlc3QoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpOworICAgIHZvaWQgb25SZWNlaXZlUmVzcG9uc2UoKTsKKworICAgIHZvaWQgZmx1c2hQZW5kaW5nUmVxdWVzdHMoKTsKKyAgICB2b2lkIHBvc3RSZWNlaXZlUmVwb25zZUV2ZW50KCk7CisKKyAgICAvLyBSZXR1cm4gZmFsc2UgaWZmIHNvbWV0aGluZyB3ZW50IHVucmVjb3ZlcmFibHkgd3JvbmcuCisgICAgYm9vbCByZWNlaXZlUlRTUFJlcG9uc2UoKTsKKyAgICBib29sIHJlY2VpdmVMaW5lKEFTdHJpbmcgKmxpbmUpOworICAgIGJvb2wgbm90aWZ5UmVzcG9uc2VMaXN0ZW5lcihjb25zdCBzcDxBUlRTUFJlc3BvbnNlPiAmcmVzcG9uc2UpOworCisgICAgc3RhdGljIGJvb2wgUGFyc2VVUkwoCisgICAgICAgICAgICBjb25zdCBjaGFyICp1cmwsIEFTdHJpbmcgKmhvc3QsIHVuc2lnbmVkICpwb3J0LCBBU3RyaW5nICpwYXRoKTsKKworICAgIHN0YXRpYyBib29sIFBhcnNlU2luZ2xlVW5zaWduZWRMb25nKAorICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbSwgdW5zaWduZWQgbG9uZyAqeCk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBUlRTUENvbm5lY3Rpb24pOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX1JUU1BfQ09OTkVDVElPTl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRTUENvbnRyb2xsZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRTUENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiODdkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFNQQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBUlRTUENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIk15SGFuZGxlci5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitBUlRTUENvbnRyb2xsZXI6OkFSVFNQQ29udHJvbGxlcihjb25zdCBzcDxBTG9vcGVyPiAmbG9vcGVyKQorICAgIDogbUxvb3Blcihsb29wZXIpIHsKK30KKworQVJUU1BDb250cm9sbGVyOjp+QVJUU1BDb250cm9sbGVyKCkgeworfQorCitzdGF0dXNfdCBBUlRTUENvbnRyb2xsZXI6OmNvbm5lY3QoY29uc3QgY2hhciAqdXJsKSB7CisgICAgaWYgKG1IYW5kbGVyICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIEVSUk9SX0FMUkVBRFlfQ09OTkVDVEVEOworICAgIH0KKworICAgIG1IYW5kbGVyID0gbmV3IE15SGFuZGxlcih1cmwsIG1Mb29wZXIpOworICAgIHNsZWVwKDEwKTsKKworICAgIHJldHVybiBPSzsKK30KKwordm9pZCBBUlRTUENvbnRyb2xsZXI6OmRpc2Nvbm5lY3QoKSB7CisgICAgaWYgKG1IYW5kbGVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1IYW5kbGVyLmNsZWFyKCk7Cit9CisKK3NpemVfdCBBUlRTUENvbnRyb2xsZXI6OmNvdW50VHJhY2tzKCkgeworICAgIGlmIChtSGFuZGxlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBtSGFuZGxlci0+Y291bnRUcmFja3MoKTsKK30KKworc3A8TWVkaWFTb3VyY2U+IEFSVFNQQ29udHJvbGxlcjo6Z2V0VHJhY2soc2l6ZV90IGluZGV4KSB7CisgICAgQ0hFQ0sobUhhbmRsZXIgIT0gTlVMTCk7CisKKyAgICByZXR1cm4gbUhhbmRsZXItPmdldFBhY2tldFNvdXJjZShpbmRleCk7Cit9CisKK3NwPE1ldGFEYXRhPiBBUlRTUENvbnRyb2xsZXI6OmdldFRyYWNrTWV0YURhdGEoCisgICAgICAgIHNpemVfdCBpbmRleCwgdWludDMyX3QgZmxhZ3MpIHsKKyAgICBDSEVDSyhtSGFuZGxlciAhPSBOVUxMKTsKKworICAgIHJldHVybiBtSGFuZGxlci0+Z2V0UGFja2V0U291cmNlKGluZGV4KS0+Z2V0Rm9ybWF0KCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FTZXNzaW9uRGVzY3JpcHRpb24uY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTRjNTVlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcApAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oPgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQVNlc3Npb25EZXNjcmlwdGlvbjo6QVNlc3Npb25EZXNjcmlwdGlvbigpCisgICAgOiBtSXNWYWxpZChmYWxzZSkgeworfQorCitBU2Vzc2lvbkRlc2NyaXB0aW9uOjp+QVNlc3Npb25EZXNjcmlwdGlvbigpIHsKK30KKworYm9vbCBBU2Vzc2lvbkRlc2NyaXB0aW9uOjpzZXRUbyhjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIG1Jc1ZhbGlkID0gcGFyc2UoZGF0YSwgc2l6ZSk7CisKKyAgICBpZiAoIW1Jc1ZhbGlkKSB7CisgICAgICAgIG1UcmFja3MuY2xlYXIoKTsKKyAgICAgICAgbUZvcm1hdHMuY2xlYXIoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUlzVmFsaWQ7Cit9CisKK2Jvb2wgQVNlc3Npb25EZXNjcmlwdGlvbjo6cGFyc2UoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBtVHJhY2tzLmNsZWFyKCk7CisgICAgbUZvcm1hdHMuY2xlYXIoKTsKKworICAgIG1UcmFja3MucHVzaChBdHRyaWJzKCkpOworICAgIG1Gb3JtYXRzLnB1c2goQVN0cmluZygiW3Jvb3RdIikpOworCisgICAgQVN0cmluZyBkZXNjKChjb25zdCBjaGFyICopZGF0YSwgc2l6ZSk7CisgICAgTE9HKFZFUkJPU0UpIDw8IGRlc2M7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yICg7OykgeworICAgICAgICBzc2l6ZV90IGVvbFBvcyA9IGRlc2MuZmluZCgiXHJcbiIsIGkpOworICAgICAgICBpZiAoZW9sUG9zIDwgMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBBU3RyaW5nIGxpbmUoZGVzYywgaSwgZW9sUG9zIC0gaSk7CisKKyAgICAgICAgaWYgKGxpbmUuc2l6ZSgpIDwgMiB8fCBsaW5lLmNfc3RyKClbMV0gIT0gJz0nKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGxpbmUuY19zdHIoKVswXSkgeworICAgICAgICAgICAgY2FzZSAndic6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHN0cmNtcChsaW5lLmNfc3RyKCksICJ2PTAiKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgIGNhc2UgJ2InOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTdHJpbmcga2V5LCB2YWx1ZTsKKworICAgICAgICAgICAgICAgIHNzaXplX3QgY29sb25Qb3MgPSBsaW5lLmZpbmQoIjoiLCAyKTsKKyAgICAgICAgICAgICAgICBpZiAoY29sb25Qb3MgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGtleSA9IGxpbmU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAga2V5LnNldFRvKGxpbmUsIDAsIGNvbG9uUG9zKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICJhPWZtdHAiIHx8IGtleSA9PSAiYT1ydHBtYXAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwga2V5ID09ICJhPWZyYW1lc2l6ZSIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNzaXplX3Qgc3BhY2VQb3MgPSBsaW5lLmZpbmQoIiAiLCBjb2xvblBvcyArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwYWNlUG9zIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAga2V5LnNldFRvKGxpbmUsIDAsIHNwYWNlUG9zKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgY29sb25Qb3MgPSBzcGFjZVBvczsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLnNldFRvKGxpbmUsIGNvbG9uUG9zICsgMSwgbGluZS5zaXplKCkgLSBjb2xvblBvcyAtIDEpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGtleS50cmltKCk7CisgICAgICAgICAgICAgICAgdmFsdWUudHJpbSgpOworCisgICAgICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJhZGRpbmcgJyIgPDwga2V5IDw8ICInID0+ICciIDw8IHZhbHVlIDw8ICInIjsKKworICAgICAgICAgICAgICAgIG1UcmFja3MuZWRpdEl0ZW1BdChtVHJhY2tzLnNpemUoKSAtIDEpLmFkZChrZXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJuZXcgc2VjdGlvbiAnIiA8PCBBU3RyaW5nKGxpbmUsIDIsIGxpbmUuc2l6ZSgpIC0gMikgPDwgIiciOworCisgICAgICAgICAgICAgICAgbVRyYWNrcy5wdXNoKEF0dHJpYnMoKSk7CisgICAgICAgICAgICAgICAgbUZvcm1hdHMucHVzaChBU3RyaW5nKGxpbmUsIDIsIGxpbmUuc2l6ZSgpIC0gMikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaSA9IGVvbFBvcyArIDI7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQVNlc3Npb25EZXNjcmlwdGlvbjo6aXNWYWxpZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbUlzVmFsaWQ7Cit9CisKK3NpemVfdCBBU2Vzc2lvbkRlc2NyaXB0aW9uOjpjb3VudFRyYWNrcygpIGNvbnN0IHsKKyAgICByZXR1cm4gbVRyYWNrcy5zaXplKCk7Cit9CisKK3ZvaWQgQVNlc3Npb25EZXNjcmlwdGlvbjo6Z2V0Rm9ybWF0KHNpemVfdCBpbmRleCwgQVN0cmluZyAqdmFsdWUpIGNvbnN0IHsKKyAgICBDSEVDS19HRShpbmRleCwgMHUpOworICAgIENIRUNLX0xUKGluZGV4LCBtVHJhY2tzLnNpemUoKSk7CisKKyAgICAqdmFsdWUgPSBtRm9ybWF0cy5pdGVtQXQoaW5kZXgpOworfQorCitib29sIEFTZXNzaW9uRGVzY3JpcHRpb246OmZpbmRBdHRyaWJ1dGUoCisgICAgICAgIHNpemVfdCBpbmRleCwgY29uc3QgY2hhciAqa2V5LCBBU3RyaW5nICp2YWx1ZSkgY29uc3QgeworICAgIENIRUNLX0dFKGluZGV4LCAwdSk7CisgICAgQ0hFQ0tfTFQoaW5kZXgsIG1UcmFja3Muc2l6ZSgpKTsKKworICAgIHZhbHVlLT5jbGVhcigpOworCisgICAgY29uc3QgQXR0cmlicyAmdHJhY2sgPSBtVHJhY2tzLml0ZW1BdChpbmRleCk7CisgICAgc3NpemVfdCBpID0gdHJhY2suaW5kZXhPZktleShBU3RyaW5nKGtleSkpOworCisgICAgaWYgKGkgPCAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqdmFsdWUgPSB0cmFjay52YWx1ZUF0KGkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQVNlc3Npb25EZXNjcmlwdGlvbjo6Z2V0Rm9ybWF0VHlwZSgKKyAgICAgICAgc2l6ZV90IGluZGV4LCB1bnNpZ25lZCBsb25nICpQVCwKKyAgICAgICAgQVN0cmluZyAqZGVzYywgQVN0cmluZyAqcGFyYW1zKSBjb25zdCB7CisgICAgQVN0cmluZyBmb3JtYXQ7CisgICAgZ2V0Rm9ybWF0KGluZGV4LCAmZm9ybWF0KTsKKworICAgIGNoYXIgKmxhc3RTcGFjZVBvcyA9IHN0cnJjaHIoZm9ybWF0LmNfc3RyKCksICcgJyk7CisgICAgQ0hFQ0sobGFzdFNwYWNlUG9zICE9IE5VTEwpOworCisgICAgY2hhciAqZW5kOworICAgIHVuc2lnbmVkIGxvbmcgeCA9IHN0cnRvdWwobGFzdFNwYWNlUG9zICsgMSwgJmVuZCwgMTApOworICAgIENIRUNLX0dUKGVuZCwgbGFzdFNwYWNlUG9zICsgMSk7CisgICAgQ0hFQ0tfRVEoKmVuZCwgJ1wwJyk7CisKKyAgICAqUFQgPSB4OworCisgICAgY2hhciBrZXlbMjBdOworICAgIHNwcmludGYoa2V5LCAiYT1ydHBtYXA6JWx1IiwgeCk7CisKKyAgICBDSEVDSyhmaW5kQXR0cmlidXRlKGluZGV4LCBrZXksIGRlc2MpKTsKKworICAgIHNwcmludGYoa2V5LCAiYT1mbXRwOiVsdSIsIHgpOworICAgIGlmICghZmluZEF0dHJpYnV0ZShpbmRleCwga2V5LCBwYXJhbXMpKSB7CisgICAgICAgIHBhcmFtcy0+Y2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgQVNlc3Npb25EZXNjcmlwdGlvbjo6Z2V0RGltZW5zaW9ucygKKyAgICAgICAgc2l6ZV90IGluZGV4LCB1bnNpZ25lZCBsb25nIFBULAorICAgICAgICBpbnQzMl90ICp3aWR0aCwgaW50MzJfdCAqaGVpZ2h0KSBjb25zdCB7CisgICAgY2hhciBrZXlbMjBdOworICAgIHNwcmludGYoa2V5LCAiYT1mcmFtZXNpemU6JWx1IiwgUFQpOworICAgIEFTdHJpbmcgdmFsdWU7CisgICAgQ0hFQ0soZmluZEF0dHJpYnV0ZShpbmRleCwga2V5LCAmdmFsdWUpKTsKKworICAgIGNvbnN0IGNoYXIgKnMgPSB2YWx1ZS5jX3N0cigpOworICAgIGNoYXIgKmVuZDsKKyAgICAqd2lkdGggPSBzdHJ0b3VsKHMsICZlbmQsIDEwKTsKKyAgICBDSEVDS19HVChlbmQsIHMpOworICAgIENIRUNLX0VRKCplbmQsICctJyk7CisKKyAgICBzID0gZW5kICsgMTsKKyAgICAqaGVpZ2h0ID0gc3RydG91bChzLCAmZW5kLCAxMCk7CisgICAgQ0hFQ0tfR1QoZW5kLCBzKTsKKyAgICBDSEVDS19FUSgqZW5kLCAnXDAnKTsKK30KKworYm9vbCBBU2Vzc2lvbkRlc2NyaXB0aW9uOjpnZXREdXJhdGlvblVzKGludDY0X3QgKmR1cmF0aW9uVXMpIGNvbnN0IHsKKyAgICAqZHVyYXRpb25VcyA9IDA7CisKKyAgICBDSEVDSyhtSXNWYWxpZCk7CisKKyAgICBBU3RyaW5nIHZhbHVlOworICAgIGlmICghZmluZEF0dHJpYnV0ZSgwLCAiYT1yYW5nZSIsICZ2YWx1ZSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICh2YWx1ZSA9PSAibnB0PW5vdy0iKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3RybmNtcCh2YWx1ZS5jX3N0cigpLCAibnB0PSIsIDQpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICpzID0gdmFsdWUuY19zdHIoKSArIDQ7CisgICAgY2hhciAqZW5kOworICAgIGRvdWJsZSBmcm9tID0gc3RydG9kKHMsICZlbmQpOworICAgIENIRUNLX0dUKGVuZCwgcyk7CisgICAgQ0hFQ0tfRVEoKmVuZCwgJy0nKTsKKworICAgIHMgPSBlbmQgKyAxOworICAgIGRvdWJsZSB0byA9IHN0cnRvZChzLCAmZW5kKTsKKyAgICBDSEVDS19HVChlbmQsIHMpOworICAgIENIRUNLX0VRKCplbmQsICdcMCcpOworCisgICAgQ0hFQ0tfR0UodG8sIGZyb20pOworCisgICAgKmR1cmF0aW9uVXMgPSAoaW50NjRfdCkoKHRvIC0gZnJvbSkgKiAxRTYpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIHN0YXRpYwordm9pZCBBU2Vzc2lvbkRlc2NyaXB0aW9uOjpQYXJzZUZvcm1hdERlc2MoCisgICAgICAgIGNvbnN0IGNoYXIgKmRlc2MsIGludDMyX3QgKnRpbWVzY2FsZSwgaW50MzJfdCAqbnVtQ2hhbm5lbHMpIHsKKyAgICBjb25zdCBjaGFyICpzbGFzaDEgPSBzdHJjaHIoZGVzYywgJy8nKTsKKyAgICBDSEVDSyhzbGFzaDEgIT0gTlVMTCk7CisKKyAgICBjb25zdCBjaGFyICpzID0gc2xhc2gxICsgMTsKKyAgICBjaGFyICplbmQ7CisgICAgdW5zaWduZWQgbG9uZyB4ID0gc3RydG91bChzLCAmZW5kLCAxMCk7CisgICAgQ0hFQ0tfR1QoZW5kLCBzKTsKKyAgICBDSEVDSygqZW5kID09ICdcMCcgfHwgKmVuZCA9PSAnLycpOworCisgICAgKnRpbWVzY2FsZSA9IHg7CisgICAgKm51bUNoYW5uZWxzID0gMTsKKworICAgIGlmICgqZW5kID09ICcvJykgeworICAgICAgICBzID0gZW5kICsgMTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyB4ID0gc3RydG91bChzLCAmZW5kLCAxMCk7CisgICAgICAgIENIRUNLX0dUKGVuZCwgcyk7CisgICAgICAgIENIRUNLX0VRKCplbmQsICdcMCcpOworCisgICAgICAgICpudW1DaGFubmVscyA9IHg7CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FTZXNzaW9uRGVzY3JpcHRpb24uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVNlc3Npb25EZXNjcmlwdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNjk4MGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FTZXNzaW9uRGVzY3JpcHRpb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX1NFU1NJT05fREVTQ1JJUFRJT05fSF8KKworI2RlZmluZSBBX1NFU1NJT05fREVTQ1JJUFRJT05fSF8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL0tleWVkVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBU3RyaW5nOworCitzdHJ1Y3QgQVNlc3Npb25EZXNjcmlwdGlvbiA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBBU2Vzc2lvbkRlc2NyaXB0aW9uKCk7CisKKyAgICBib29sIHNldFRvKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKworICAgIC8vIEFjdHVhbGx5LCAxICsgbnVtYmVyIG9mIHRyYWNrcywgYXMgaW5kZXggMCBpcyByZXNlcnZlZCBmb3IgdGhlCisgICAgLy8gc2Vzc2lvbiBkZXNjcmlwdGlvbiByb290LWxldmVsIGF0dHJpYnV0ZXMuCisgICAgc2l6ZV90IGNvdW50VHJhY2tzKCkgY29uc3Q7CisgICAgdm9pZCBnZXRGb3JtYXQoc2l6ZV90IGluZGV4LCBBU3RyaW5nICp2YWx1ZSkgY29uc3Q7CisKKyAgICB2b2lkIGdldEZvcm1hdFR5cGUoCisgICAgICAgICAgICBzaXplX3QgaW5kZXgsIHVuc2lnbmVkIGxvbmcgKlBULAorICAgICAgICAgICAgQVN0cmluZyAqZGVzYywgQVN0cmluZyAqcGFyYW1zKSBjb25zdDsKKworICAgIHZvaWQgZ2V0RGltZW5zaW9ucygKKyAgICAgICAgICAgIHNpemVfdCBpbmRleCwgdW5zaWduZWQgbG9uZyBQVCwKKyAgICAgICAgICAgIGludDMyX3QgKndpZHRoLCBpbnQzMl90ICpoZWlnaHQpIGNvbnN0OworCisgICAgYm9vbCBnZXREdXJhdGlvblVzKGludDY0X3QgKmR1cmF0aW9uVXMpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgUGFyc2VGb3JtYXREZXNjKAorICAgICAgICAgICAgY29uc3QgY2hhciAqZGVzYywgaW50MzJfdCAqdGltZXNjYWxlLCBpbnQzMl90ICpudW1DaGFubmVscyk7CisKKyAgICBib29sIGZpbmRBdHRyaWJ1dGUoc2l6ZV90IGluZGV4LCBjb25zdCBjaGFyICprZXksIEFTdHJpbmcgKnZhbHVlKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFTZXNzaW9uRGVzY3JpcHRpb24oKTsKKworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEtleWVkVmVjdG9yPEFTdHJpbmcsQVN0cmluZz4gQXR0cmliczsKKworICAgIGJvb2wgbUlzVmFsaWQ7CisgICAgVmVjdG9yPEF0dHJpYnM+IG1UcmFja3M7CisgICAgVmVjdG9yPEFTdHJpbmc+IG1Gb3JtYXRzOworCisgICAgYm9vbCBwYXJzZShjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBU2Vzc2lvbkRlc2NyaXB0aW9uKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9TRVNTSU9OX0RFU0NSSVBUSU9OX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYwOGZhMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQW5kcm9pZC5tawpAQCAtMCwwICsxLDI4IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUzo9ICAgICAgIFwKKyAgICAgICAgQVJUU1BDb250cm9sbGVyLmNwcCAgICAgICAgIFwKKyAgICAgICAgQUFWQ0Fzc2VtYmxlci5jcHAgICAgICAgICAgIFwKKyAgICAgICAgQU1QRUc0QXVkaW9Bc3NlbWJsZXIuY3BwICAgIFwKKyAgICAgICAgQVBhY2tldFNvdXJjZS5jcHAgICAgICAgICAgIFwKKyAgICAgICAgQVJUUEFzc2VtYmxlci5jcHAgICAgICAgICAgIFwKKyAgICAgICAgQVJUUENvbm5lY3Rpb24uY3BwICAgICAgICAgIFwKKyAgICAgICAgQVJUUFNvdXJjZS5jcHAgICAgICAgICAgICAgIFwKKyAgICAgICAgQVJUU1BDb25uZWN0aW9uLmNwcCAgICAgICAgIFwKKyAgICAgICAgQVNlc3Npb25EZXNjcmlwdGlvbi5jcHAgICAgIFwKKworTE9DQUxfQ19JTkNMVURFUzo9IFwKKwkkKEpOSV9IX0lOQ0xVREUpIFwKKwkkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXAorICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUgXAorCitMT0NBTF9NT0RVTEU6PSBsaWJzdGFnZWZyaWdodF9ydHNwCisKK2lmZXEgKCQoVEFSR0VUX0FSQ0gpLGFybSkKKyAgICBMT0NBTF9DRkxBR1MgKz0gLVduby1wc2FiaQorZW5kaWYKKworaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL015SGFuZGxlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9NeUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGJiNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9NeUhhbmRsZXIuaApAQCAtMCwwICsxLDQ0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgTVlfSEFORExFUl9IXworCisjZGVmaW5lIE1ZX0hBTkRMRVJfSF8KKworI2luY2x1ZGUgIkFQYWNrZXRTb3VyY2UuaCIKKyNpbmNsdWRlICJBUlRQQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkFSVFNQQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkFTZXNzaW9uRGVzY3JpcHRpb24uaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IE15SGFuZGxlciA6IHB1YmxpYyBBSGFuZGxlciB7CisgICAgTXlIYW5kbGVyKGNvbnN0IGNoYXIgKnVybCwgY29uc3Qgc3A8QUxvb3Blcj4gJmxvb3BlcikKKyAgICAgICAgOiBtTG9vcGVyKGxvb3BlciksCisgICAgICAgICAgbUNvbm4obmV3IEFSVFNQQ29ubmVjdGlvbiksCisgICAgICAgICAgbVJUUENvbm4obmV3IEFSVFBDb25uZWN0aW9uKSwKKyAgICAgICAgICBtU2Vzc2lvblVSTCh1cmwpLAorICAgICAgICAgIG1TZXR1cFRyYWNrc1N1Y2Nlc3NmdWwoZmFsc2UpLAorICAgICAgICAgIG1GaXJzdEFjY2Vzc1VuaXQodHJ1ZSksCisgICAgICAgICAgbUZpcnN0QWNjZXNzVW5pdE5UUCgtMSkgeworICAgICAgICBtTG9vcGVyLT5yZWdpc3RlckhhbmRsZXIodGhpcyk7CisgICAgICAgIG1Mb29wZXItPnJlZ2lzdGVySGFuZGxlcihtQ29ubik7CisgICAgICAgIG1Mb29wZXItPnJlZ2lzdGVySGFuZGxlcihtUlRQQ29ubik7CisgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnY29ubicsIGlkKCkpOworICAgICAgICBtQ29ubi0+Y29ubmVjdChtU2Vzc2lvblVSTC5jX3N0cigpLCByZXBseSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG9uTWVzc2FnZVJlY2VpdmVkKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgICAgIHN3aXRjaCAobXNnLT53aGF0KCkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2Nvbm4nOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgImNvbm5lY3Rpb24gcmVxdWVzdCBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgeworICAgICAgICAgICAgICAgICAgICBBU3RyaW5nIHJlcXVlc3Q7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSAiREVTQ1JJQkUgIjsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVNlc3Npb25VUkwpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiIFJUU1AvMS4wXHJcbiIpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiQWNjZXB0OiBhcHBsaWNhdGlvbi9zZHBcclxuIik7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdkZXNjJywgaWQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1Db25uLT5zZW5kUmVxdWVzdChyZXF1ZXN0LmNfc3RyKCksIHJlcGx5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ2Rpc2MnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiZGlzY29ubmVjdCBjb21wbGV0ZWQiOworCisgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgncXVpdCcsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdkZXNjJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJERVNDUklCRSBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgeworICAgICAgICAgICAgICAgICAgICBzcDxSZWZCYXNlPiBvYmo7CisgICAgICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZE9iamVjdCgicmVzcG9uc2UiLCAmb2JqKSk7CisgICAgICAgICAgICAgICAgICAgIHNwPEFSVFNQUmVzcG9uc2U+IHJlc3BvbnNlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFSVFNQUmVzcG9uc2UgKj4ob2JqLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UtPm1TdGF0dXNDb2RlID09IDMwMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3NpemVfdCBpID0gcmVzcG9uc2UtPm1IZWFkZXJzLmluZGV4T2ZLZXkoImxvY2F0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBDSEVDS19HRShpLCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbVNlc3Npb25VUkwgPSByZXNwb25zZS0+bUhlYWRlcnMudmFsdWVBdChpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgQVN0cmluZyByZXF1ZXN0OworICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9ICJERVNDUklCRSAiOworICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVNlc3Npb25VUkwpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL3NkcFxyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnZGVzYycsIGlkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbUNvbm4tPnNlbmRSZXF1ZXN0KHJlcXVlc3QuY19zdHIoKSwgcmVwbHkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBDSEVDS19FUShyZXNwb25zZS0+bVN0YXR1c0NvZGUsIDIwMHUpOworCisgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uRGVzYyA9IG5ldyBBU2Vzc2lvbkRlc2NyaXB0aW9uOworCisgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uRGVzYy0+c2V0VG8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UtPm1Db250ZW50LT5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UtPm1Db250ZW50LT5zaXplKCkpOworCisgICAgICAgICAgICAgICAgICAgIENIRUNLKG1TZXNzaW9uRGVzYy0+aXNWYWxpZCgpKTsKKworICAgICAgICAgICAgICAgICAgICBzc2l6ZV90IGkgPSByZXNwb25zZS0+bUhlYWRlcnMuaW5kZXhPZktleSgiY29udGVudC1iYXNlIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1CYXNlVVJMID0gcmVzcG9uc2UtPm1IZWFkZXJzLnZhbHVlQXQoaSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpID0gcmVzcG9uc2UtPm1IZWFkZXJzLmluZGV4T2ZLZXkoImNvbnRlbnQtbG9jYXRpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQmFzZVVSTCA9IHJlc3BvbnNlLT5tSGVhZGVycy52YWx1ZUF0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQmFzZVVSTCA9IG1TZXNzaW9uVVJMOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfR1QobVNlc3Npb25EZXNjLT5jb3VudFRyYWNrcygpLCAxdSk7CisgICAgICAgICAgICAgICAgICAgIHNldHVwVHJhY2soMSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdkaXNjJywgaWQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1Db25uLT5kaXNjb25uZWN0KHJlcGx5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ3NldHUnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRTaXplKCJpbmRleCIsICZpbmRleCkpOworCisgICAgICAgICAgICAgICAgc2l6ZV90IHRyYWNrSW5kZXg7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kU2l6ZSgidHJhY2staW5kZXgiLCAmdHJhY2tJbmRleCkpOworCisgICAgICAgICAgICAgICAgaW50MzJfdCByZXN1bHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInJlc3VsdCIsICZyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiU0VUVVAoIiA8PCBpbmRleCA8PCAiKSBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgVHJhY2tJbmZvICp0cmFjayA9ICZtVHJhY2tzLmVkaXRJdGVtQXQodHJhY2tJbmRleCk7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE9LKSB7CisgICAgICAgICAgICAgICAgICAgIHNwPFJlZkJhc2U+IG9iajsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kT2JqZWN0KCJyZXNwb25zZSIsICZvYmopKTsKKyAgICAgICAgICAgICAgICAgICAgc3A8QVJUU1BSZXNwb25zZT4gcmVzcG9uc2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QVJUU1BSZXNwb25zZSAqPihvYmouZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIENIRUNLX0VRKHJlc3BvbnNlLT5tU3RhdHVzQ29kZSwgMjAwdSk7CisKKyAgICAgICAgICAgICAgICAgICAgc3NpemVfdCBpID0gcmVzcG9uc2UtPm1IZWFkZXJzLmluZGV4T2ZLZXkoInNlc3Npb24iKTsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfR0UoaSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uSUQgPSByZXNwb25zZS0+bUhlYWRlcnMudmFsdWVBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBtU2Vzc2lvbklELmZpbmQoIjsiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb3B0aW9ucywgaS5lLiAiO3RpbWVvdXQ9OTAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlc3Npb25JRC5lcmFzZShpLCBtU2Vzc2lvbklELnNpemUoKSAtIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IG5vdGlmeSA9IG5ldyBBTWVzc2FnZSgnYWNjdScsIGlkKCkpOworICAgICAgICAgICAgICAgICAgICBub3RpZnktPnNldFNpemUoInRyYWNrLWluZGV4IiwgdHJhY2tJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgbVJUUENvbm4tPmFkZFN0cmVhbSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjay0+bVJUUFNvY2tldCwgdHJhY2stPm1SVENQU29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uRGVzYywgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZ5KTsKKworICAgICAgICAgICAgICAgICAgICB0cmFjay0+bVBhY2tldFNvdXJjZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQVBhY2tldFNvdXJjZShtU2Vzc2lvbkRlc2MsIGluZGV4KTsKKworICAgICAgICAgICAgICAgICAgICBtU2V0dXBUcmFja3NTdWNjZXNzZnVsID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBtU2Vzc2lvbkRlc2MtPmNvdW50VHJhY2tzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwVHJhY2soaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjbG9zZSh0cmFjay0+bVJUUFNvY2tldCk7CisgICAgICAgICAgICAgICAgICAgIGNsb3NlKHRyYWNrLT5tUlRDUFNvY2tldCk7CisKKyAgICAgICAgICAgICAgICAgICAgbVRyYWNrcy5yZW1vdmVJdGVtc0F0KG1UcmFja3Muc2l6ZSgpIC0gMSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG1TZXR1cFRyYWNrc1N1Y2Nlc3NmdWwpIHsKKyAgICAgICAgICAgICAgICAgICAgQVN0cmluZyByZXF1ZXN0ID0gIlBMQVkgIjsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVNlc3Npb25VUkwpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiIFJUU1AvMS4wXHJcbiIpOworCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJTZXNzaW9uOiAiKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVNlc3Npb25JRCk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICAgICAgICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ3BsYXknLCBpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNvbm4tPnNlbmRSZXF1ZXN0KHJlcXVlc3QuY19zdHIoKSwgcmVwbHkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnZGlzYycsIGlkKCkpOworICAgICAgICAgICAgICAgICAgICBtQ29ubi0+ZGlzY29ubmVjdChyZXBseSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdwbGF5JzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJQTEFZIGNvbXBsZXRlZCB3aXRoIHJlc3VsdCAiCisgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQgPDwgIiAoIiA8PCBzdHJlcnJvcigtcmVzdWx0KSA8PCAiKSI7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE9LKSB7CisgICAgICAgICAgICAgICAgICAgIHNwPFJlZkJhc2U+IG9iajsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kT2JqZWN0KCJyZXNwb25zZSIsICZvYmopKTsKKyAgICAgICAgICAgICAgICAgICAgc3A8QVJUU1BSZXNwb25zZT4gcmVzcG9uc2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QVJUU1BSZXNwb25zZSAqPihvYmouZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIENIRUNLX0VRKHJlc3BvbnNlLT5tU3RhdHVzQ29kZSwgMjAwdSk7CisKKyAgICAgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IG1zZyA9IG5ldyBBTWVzc2FnZSgnYWJvcicsIGlkKCkpOworICAgICAgICAgICAgICAgICAgICBtc2ctPnBvc3QoNjAwMDAwMDBsbCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdkaXNjJywgaWQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1Db25uLT5kaXNjb25uZWN0KHJlcGx5KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnYWJvcic6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIG1UcmFja3MuZWRpdEl0ZW1BdChpKS5tUGFja2V0U291cmNlLT5zaWduYWxFT1MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVJST1JfRU5EX09GX1NUUkVBTSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCd0ZWFyJywgaWQoKSk7CisKKyAgICAgICAgICAgICAgICBBU3RyaW5nIHJlcXVlc3Q7CisgICAgICAgICAgICAgICAgcmVxdWVzdCA9ICJURUFSRE9XTiAiOworCisgICAgICAgICAgICAgICAgLy8gWFhYIHNob3VsZCB1c2UgYWdncmVnYXRlIHVybCBmcm9tIFNEUCBoZXJlLi4uCisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVNlc3Npb25VUkwpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgUlRTUC8xLjBcclxuIik7CisKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiU2Vzc2lvbjogIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVNlc3Npb25JRCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICBtQ29ubi0+c2VuZFJlcXVlc3QocmVxdWVzdC5jX3N0cigpLCByZXBseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ3RlYXInOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgIlRFQVJET1dOIGNvbXBsZXRlZCB3aXRoIHJlc3VsdCAiCisgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQgPDwgIiAoIiA8PCBzdHJlcnJvcigtcmVzdWx0KSA8PCAiKSI7CisKKyAgICAgICAgICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ2Rpc2MnLCBpZCgpKTsKKyAgICAgICAgICAgICAgICBtQ29ubi0+ZGlzY29ubmVjdChyZXBseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ3F1aXQnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1Mb29wZXItPnN0b3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnYWNjdSc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHRyYWNrSW5kZXg7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kU2l6ZSgidHJhY2staW5kZXgiLCAmdHJhY2tJbmRleCkpOworCisgICAgICAgICAgICAgICAgc3A8UmVmQmFzZT4gb2JqOworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZE9iamVjdCgiYWNjZXNzLXVuaXQiLCAmb2JqKSk7CisKKyAgICAgICAgICAgICAgICBzcDxBQnVmZmVyPiBhY2Nlc3NVbml0ID0gc3RhdGljX2Nhc3Q8QUJ1ZmZlciAqPihvYmouZ2V0KCkpOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgbnRwVGltZTsKKyAgICAgICAgICAgICAgICBDSEVDSyhhY2Nlc3NVbml0LT5tZXRhKCktPmZpbmRJbnQ2NCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibnRwLXRpbWUiLCAoaW50NjRfdCAqKSZudHBUaW1lKSk7CisKKyAgICAgICAgICAgICAgICBpZiAobUZpcnN0QWNjZXNzVW5pdCkgeworICAgICAgICAgICAgICAgICAgICBtRmlyc3RBY2Nlc3NVbml0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1GaXJzdEFjY2Vzc1VuaXROVFAgPSBudHBUaW1lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnRwVGltZSA+IG1GaXJzdEFjY2Vzc1VuaXROVFApIHsKKyAgICAgICAgICAgICAgICAgICAgbnRwVGltZSAtPSBtRmlyc3RBY2Nlc3NVbml0TlRQOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG50cFRpbWUgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGFjY2Vzc1VuaXQtPm1ldGEoKS0+c2V0SW50NjQoIm50cC10aW1lIiwgbnRwVGltZSk7CisKKyAgICAgICAgICAgICAgICBUcmFja0luZm8gKnRyYWNrID0gJm1UcmFja3MuZWRpdEl0ZW1BdCh0cmFja0luZGV4KTsKKyAgICAgICAgICAgICAgICB0cmFjay0+bVBhY2tldFNvdXJjZS0+cXVldWVBY2Nlc3NVbml0KGFjY2Vzc1VuaXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFRSRVNQQVNTKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzcDxBUGFja2V0U291cmNlPiBnZXRQYWNrZXRTb3VyY2Uoc2l6ZV90IGluZGV4KSB7CisgICAgICAgIENIRUNLX0dFKGluZGV4LCAwdSk7CisgICAgICAgIENIRUNLX0xUKGluZGV4LCBtVHJhY2tzLnNpemUoKSk7CisKKyAgICAgICAgcmV0dXJuIG1UcmFja3MuZWRpdEl0ZW1BdChpbmRleCkubVBhY2tldFNvdXJjZTsKKyAgICB9CisKKyAgICBzaXplX3QgY291bnRUcmFja3MoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtVHJhY2tzLnNpemUoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3A8QUxvb3Blcj4gbUxvb3BlcjsKKyAgICBzcDxBUlRTUENvbm5lY3Rpb24+IG1Db25uOworICAgIHNwPEFSVFBDb25uZWN0aW9uPiBtUlRQQ29ubjsKKyAgICBzcDxBU2Vzc2lvbkRlc2NyaXB0aW9uPiBtU2Vzc2lvbkRlc2M7CisgICAgQVN0cmluZyBtU2Vzc2lvblVSTDsKKyAgICBBU3RyaW5nIG1CYXNlVVJMOworICAgIEFTdHJpbmcgbVNlc3Npb25JRDsKKyAgICBib29sIG1TZXR1cFRyYWNrc1N1Y2Nlc3NmdWw7CisgICAgYm9vbCBtRmlyc3RBY2Nlc3NVbml0OworICAgIHVpbnQ2NF90IG1GaXJzdEFjY2Vzc1VuaXROVFA7CisKKyAgICBzdHJ1Y3QgVHJhY2tJbmZvIHsKKyAgICAgICAgaW50IG1SVFBTb2NrZXQ7CisgICAgICAgIGludCBtUlRDUFNvY2tldDsKKworICAgICAgICBzcDxBUGFja2V0U291cmNlPiBtUGFja2V0U291cmNlOworICAgIH07CisgICAgVmVjdG9yPFRyYWNrSW5mbz4gbVRyYWNrczsKKworICAgIHZvaWQgc2V0dXBUcmFjayhzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgQVN0cmluZyB1cmw7CisgICAgICAgIENIRUNLKG1TZXNzaW9uRGVzYy0+ZmluZEF0dHJpYnV0ZShpbmRleCwgImE9Y29udHJvbCIsICZ1cmwpKTsKKworICAgICAgICBBU3RyaW5nIHRyYWNrVVJMOworICAgICAgICBDSEVDSyhNYWtlVVJMKG1CYXNlVVJMLmNfc3RyKCksIHVybC5jX3N0cigpLCAmdHJhY2tVUkwpKTsKKworICAgICAgICBtVHJhY2tzLnB1c2goVHJhY2tJbmZvKCkpOworICAgICAgICBUcmFja0luZm8gKmluZm8gPSAmbVRyYWNrcy5lZGl0SXRlbUF0KG1UcmFja3Muc2l6ZSgpIC0gMSk7CisKKyAgICAgICAgdW5zaWduZWQgcnRwUG9ydDsKKyAgICAgICAgQVJUUENvbm5lY3Rpb246Ok1ha2VQb3J0UGFpcigKKyAgICAgICAgICAgICAgICAmaW5mby0+bVJUUFNvY2tldCwgJmluZm8tPm1SVENQU29ja2V0LCAmcnRwUG9ydCk7CisKKyAgICAgICAgQVN0cmluZyByZXF1ZXN0ID0gIlNFVFVQICI7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKHRyYWNrVVJMKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiVHJhbnNwb3J0OiBSVFAvQVZQL1VEUDt1bmljYXN0O2NsaWVudF9wb3J0PSIpOworICAgICAgICByZXF1ZXN0LmFwcGVuZChydHBQb3J0KTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQoIi0iKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQocnRwUG9ydCArIDEpOworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgIGlmIChpbmRleCA+IDEpIHsKKyAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJTZXNzaW9uOiAiKTsKKyAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uSUQpOworICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdzZXR1JywgaWQoKSk7CisgICAgICAgIHJlcGx5LT5zZXRTaXplKCJpbmRleCIsIGluZGV4KTsKKyAgICAgICAgcmVwbHktPnNldFNpemUoInRyYWNrLWluZGV4IiwgbVRyYWNrcy5zaXplKCkgLSAxKTsKKyAgICAgICAgbUNvbm4tPnNlbmRSZXF1ZXN0KHJlcXVlc3QuY19zdHIoKSwgcmVwbHkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIE1ha2VVUkwoY29uc3QgY2hhciAqYmFzZVVSTCwgY29uc3QgY2hhciAqdXJsLCBBU3RyaW5nICpvdXQpIHsKKyAgICAgICAgb3V0LT5jbGVhcigpOworCisgICAgICAgIGlmIChzdHJuY2FzZWNtcCgicnRzcDovLyIsIGJhc2VVUkwsIDcpKSB7CisgICAgICAgICAgICAvLyBCYXNlIFVSTCBtdXN0IGJlIGFic29sdXRlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXN0cm5jYXNlY21wKCJydHNwOi8vIiwgdXJsLCA3KSkgeworICAgICAgICAgICAgLy8gInVybCIgaXMgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwsIGlnbm9yZSBiYXNlIFVSTC4KKyAgICAgICAgICAgIG91dC0+c2V0VG8odXJsKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IG4gPSBzdHJsZW4oYmFzZVVSTCk7CisgICAgICAgIGlmIChiYXNlVVJMW24gLSAxXSA9PSAnLycpIHsKKyAgICAgICAgICAgIG91dC0+c2V0VG8oYmFzZVVSTCk7CisgICAgICAgICAgICBvdXQtPmFwcGVuZCh1cmwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hhciAqc2xhc2hQb3MgPSBzdHJyY2hyKGJhc2VVUkwsICcvJyk7CisKKyAgICAgICAgICAgIGlmIChzbGFzaFBvcyA+ICZiYXNlVVJMWzZdKSB7CisgICAgICAgICAgICAgICAgb3V0LT5zZXRUbyhiYXNlVVJMLCBzbGFzaFBvcyAtIGJhc2VVUkwpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQtPnNldFRvKGJhc2VVUkwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvdXQtPmFwcGVuZCgiLyIpOworICAgICAgICAgICAgb3V0LT5hcHBlbmQodXJsKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKE15SGFuZGxlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIE1ZX0hBTkRMRVJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvTXlUcmFuc21pdHRlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9NeVRyYW5zbWl0dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA5YTNiMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvTXlUcmFuc21pdHRlci5oCkBAIC0wLDAgKzEsOTgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBNWV9UUkFOU01JVFRFUl9IXworCisjZGVmaW5lIE1ZX1RSQU5TTUlUVEVSX0hfCisKKyNpbmNsdWRlICJBUlRQQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorCisjaW5jbHVkZSA8b3BlbnNzbC9tZDUuaD4KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9iYXNlNjQuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2hleGR1bXAuaD4KKworI2lmZGVmIEFORFJPSUQKKyNpbmNsdWRlICJWaWRlb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvT01YQ2xpZW50Lmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvT01YQ29kZWMuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKyNkZWZpbmUgVFJBQ0tfU1VGRklYICAgICJ0cmFja2lkPTEiCisjZGVmaW5lIFBUICAgICAgICAgICAgICA5NgorI2RlZmluZSBQVF9TVFIgICAgICAgICAgIjk2IgorCisjZGVmaW5lIFVTRVJOQU1FICAgICAgICAiYmNhc3QiCisjZGVmaW5lIFBBU1NXT1JEICAgICAgICAidGVzdCIKKworc3RhdGljIGludCB1bmlmb3JtUmFuZChpbnQgbGltaXQpIHsKKyAgICByZXR1cm4gKChkb3VibGUpcmFuZCgpICogbGltaXQpIC8gUkFORF9NQVg7Cit9CisKK3N0YXRpYyBib29sIEdldEF0dHJpYnV0ZShjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICprZXksIEFTdHJpbmcgKnZhbHVlKSB7CisgICAgdmFsdWUtPmNsZWFyKCk7CisKKyAgICBzaXplX3Qga2V5TGVuID0gc3RybGVuKGtleSk7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNvbnN0IGNoYXIgKmNvbG9uUG9zID0gc3RyY2hyKHMsICc7Jyk7CisKKyAgICAgICAgc2l6ZV90IGxlbiA9CisgICAgICAgICAgICAoY29sb25Qb3MgPT0gTlVMTCkgPyBzdHJsZW4ocykgOiBjb2xvblBvcyAtIHM7CisKKyAgICAgICAgaWYgKGxlbiA+PSBrZXlMZW4gKyAxICYmIHNba2V5TGVuXSA9PSAnPScgJiYgIXN0cm5jbXAocywga2V5LCBrZXlMZW4pKSB7CisgICAgICAgICAgICB2YWx1ZS0+c2V0VG8oJnNba2V5TGVuICsgMV0sIGxlbiAtIGtleUxlbiAtIDEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29sb25Qb3MgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcyA9IGNvbG9uUG9zICsgMTsKKyAgICB9Cit9CisKK3N0cnVjdCBNeVRyYW5zbWl0dGVyIDogcHVibGljIEFIYW5kbGVyIHsKKyAgICBNeVRyYW5zbWl0dGVyKGNvbnN0IGNoYXIgKnVybCwgY29uc3Qgc3A8QUxvb3Blcj4gJmxvb3BlcikKKyAgICAgICAgOiBtU2VydmVyVVJMKHVybCksCisgICAgICAgICAgbUxvb3Blcihsb29wZXIpLAorICAgICAgICAgIG1Db25uKG5ldyBBUlRTUENvbm5lY3Rpb24pLAorICAgICAgICAgIG1Db25uZWN0ZWQoZmFsc2UpLAorICAgICAgICAgIG1BdXRoVHlwZShOT05FKSwKKyAgICAgICAgICBtUlRQU29ja2V0KC0xKSwKKyAgICAgICAgICBtUlRDUFNvY2tldCgtMSksCisgICAgICAgICAgbVNvdXJjZUlEKHJhbmQoKSksCisgICAgICAgICAgbVNlcU5vKHVuaWZvcm1SYW5kKDY1NTM2KSksCisgICAgICAgICAgbVJUUFRpbWVCYXNlKHJhbmQoKSksCisgICAgICAgICAgbU51bVNhbXBsZXNTZW50KDApLAorICAgICAgICAgIG1OdW1SVFBTZW50KDApLAorICAgICAgICAgIG1OdW1SVFBPY3RldHNTZW50KDApLAorICAgICAgICAgIG1MYXN0UlRQVGltZSgwKSwKKyAgICAgICAgICBtTGFzdE5UUFRpbWUoMCkgeworICAgICAgICBtU3RyZWFtVVJMID0gbVNlcnZlclVSTDsKKyAgICAgICAgbVN0cmVhbVVSTC5hcHBlbmQoIi9iYXpvbmcuc2RwIik7CisKKyAgICAgICAgbVRyYWNrVVJMID0gbVN0cmVhbVVSTDsKKyAgICAgICAgbVRyYWNrVVJMLmFwcGVuZCgiLyIpOworICAgICAgICBtVHJhY2tVUkwuYXBwZW5kKFRSQUNLX1NVRkZJWCk7CisKKyAgICAgICAgbUxvb3Blci0+cmVnaXN0ZXJIYW5kbGVyKHRoaXMpOworICAgICAgICBtTG9vcGVyLT5yZWdpc3RlckhhbmRsZXIobUNvbm4pOworCisgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnY29ubicsIGlkKCkpOworICAgICAgICBtQ29ubi0+Y29ubmVjdChtU2VydmVyVVJMLmNfc3RyKCksIHJlcGx5KTsKKworI2lmZGVmIEFORFJPSUQKKyAgICAgICAgaW50IHdpZHRoID0gNjQwOworICAgICAgICBpbnQgaGVpZ2h0ID0gNDgwOworCisgICAgICAgIHNwPE1lZGlhU291cmNlPiBzb3VyY2UgPSBuZXcgVmlkZW9Tb3VyY2Uod2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgc3A8TWV0YURhdGE+IGVuY01ldGEgPSBuZXcgTWV0YURhdGE7CisgICAgICAgIGVuY01ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMpOworICAgICAgICBlbmNNZXRhLT5zZXRJbnQzMihrS2V5V2lkdGgsIHdpZHRoKTsKKyAgICAgICAgZW5jTWV0YS0+c2V0SW50MzIoa0tleUhlaWdodCwgaGVpZ2h0KTsKKworICAgICAgICBPTVhDbGllbnQgY2xpZW50OworICAgICAgICBjbGllbnQuY29ubmVjdCgpOworCisgICAgICAgIG1FbmNvZGVyID0gT01YQ29kZWM6OkNyZWF0ZSgKKyAgICAgICAgICAgICAgICBjbGllbnQuaW50ZXJmYWNlKCksIGVuY01ldGEsCisgICAgICAgICAgICAgICAgdHJ1ZSAvKiBjcmVhdGVFbmNvZGVyICovLCBzb3VyY2UpOworCisgICAgICAgIG1FbmNvZGVyLT5zdGFydCgpOworCisgICAgICAgIE1lZGlhQnVmZmVyICpidWZmZXI7CisgICAgICAgIENIRUNLX0VRKG1FbmNvZGVyLT5yZWFkKCZidWZmZXIpLCAoc3RhdHVzX3QpT0spOworICAgICAgICBDSEVDSyhidWZmZXIgIT0gTlVMTCk7CisKKyAgICAgICAgbWFrZUgyNjRTUHJvcFBhcmFtU2V0cyhidWZmZXIpOworCisgICAgICAgIGJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICBidWZmZXIgPSBOVUxMOworI2VuZGlmCisgICAgfQorCisgICAgdWludDY0X3QgbnRwVGltZSgpIHsKKyAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgICAgIGdldHRpbWVvZmRheSgmdHYsIE5VTEwpOworCisgICAgICAgIHVpbnQ2NF90IG5vd1VzID0gdHYudHZfc2VjICogMTAwMDAwMGxsICsgdHYudHZfdXNlYzsKKworICAgICAgICBub3dVcyArPSAoKDcwbGwgKiAzNjUgKyAxNykgKiAyNCkgKiA2MCAqIDYwICogMTAwMDAwMGxsOworCisgICAgICAgIHVpbnQ2NF90IGhpID0gbm93VXMgLyAxMDAwMDAwbGw7CisgICAgICAgIHVpbnQ2NF90IGxvID0gKCgxbGwgPDwgMzIpICogKG5vd1VzICUgMTAwMDAwMGxsKSkgLyAxMDAwMDAwbGw7CisKKyAgICAgICAgcmV0dXJuIChoaSA8PCAzMikgfCBsbzsKKyAgICB9CisKKyAgICB2b2lkIGlzc3VlQW5ub3VuY2UoKSB7CisgICAgICAgIEFTdHJpbmcgc2RwOworICAgICAgICBzZHAgPSAidj0wXHJcbiI7CisKKyAgICAgICAgc2RwLmFwcGVuZCgibz0tICIpOworCisgICAgICAgIHVpbnQ2NF90IG50cCA9IG50cFRpbWUoKTsKKyAgICAgICAgc2RwLmFwcGVuZChudHApOworICAgICAgICBzZHAuYXBwZW5kKCIgIik7CisgICAgICAgIHNkcC5hcHBlbmQobnRwKTsKKyAgICAgICAgc2RwLmFwcGVuZCgiIElOIElQNCAxMjcuMC4wLjBcclxuIik7CisKKyAgICAgICAgc2RwLmFwcGVuZCgKKyAgICAgICAgICAgICAgInM9U2FtcGxlXHJcbiIKKyAgICAgICAgICAgICAgImk9UGxheWluZyBhcm91bmQgd2l0aCBBTk5PVU5DRVxyXG4iCisgICAgICAgICAgICAgICJjPUlOIElQNCAiKTsKKworICAgICAgICBzdHJ1Y3QgaW5fYWRkciBhZGRyOworICAgICAgICBhZGRyLnNfYWRkciA9IGh0b25sKG1TZXJ2ZXJJUCk7CisKKyAgICAgICAgc2RwLmFwcGVuZChpbmV0X250b2EoYWRkcikpOworCisgICAgICAgIHNkcC5hcHBlbmQoCisgICAgICAgICAgICAgICJcclxuIgorICAgICAgICAgICAgICAidD0wIDBcclxuIgorICAgICAgICAgICAgICAiYT1yYW5nZTpucHQ9bm93LVxyXG4iKTsKKworI2lmZGVmIEFORFJPSUQKKyAgICAgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBtRW5jb2Rlci0+Z2V0Rm9ybWF0KCk7CisgICAgICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodDsKKyAgICAgICAgQ0hFQ0sobWV0YS0+ZmluZEludDMyKGtLZXlXaWR0aCwgJndpZHRoKSk7CisgICAgICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5SGVpZ2h0LCAmaGVpZ2h0KSk7CisKKyAgICAgICAgc2RwLmFwcGVuZCgKKyAgICAgICAgICAgICAgIm09dmlkZW8gMCBSVFAvQVZQICIgUFRfU1RSICJcclxuIgorICAgICAgICAgICAgICAiYj1BUyAzMjAwMDBcclxuIgorICAgICAgICAgICAgICAiYT1ydHBtYXA6IiBQVF9TVFIgIiBIMjY0LzkwMDAwXHJcbiIpOworCisgICAgICAgIHNkcC5hcHBlbmQoImE9Y2xpcHJlY3QgMCwwLCIpOworICAgICAgICBzZHAuYXBwZW5kKGhlaWdodCk7CisgICAgICAgIHNkcC5hcHBlbmQoIiwiKTsKKyAgICAgICAgc2RwLmFwcGVuZCh3aWR0aCk7CisgICAgICAgIHNkcC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICBzZHAuYXBwZW5kKAorICAgICAgICAgICAgICAiYT1mcmFtZXNpemU6IiBQVF9TVFIgIiAiKTsKKyAgICAgICAgc2RwLmFwcGVuZCh3aWR0aCk7CisgICAgICAgIHNkcC5hcHBlbmQoIi0iKTsKKyAgICAgICAgc2RwLmFwcGVuZChoZWlnaHQpOworICAgICAgICBzZHAuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgc2RwLmFwcGVuZCgKKyAgICAgICAgICAgICAgImE9Zm10cDoiIFBUX1NUUiAiIHByb2ZpbGUtbGV2ZWwtaWQ9NDJDMDE1O3Nwcm9wLXBhcmFtZXRlci1zZXRzPSIpOworCisgICAgICAgIHNkcC5hcHBlbmQobVNlcVBhcmFtU2V0KTsKKyAgICAgICAgc2RwLmFwcGVuZCgiLCIpOworICAgICAgICBzZHAuYXBwZW5kKG1QaWNQYXJhbVNldCk7CisgICAgICAgIHNkcC5hcHBlbmQoIjtwYWNrZXRpemF0aW9uLW1vZGU9MVxyXG4iKTsKKyNlbHNlCisgICAgICAgIHNkcC5hcHBlbmQoCisgICAgICAgICAgICAgICAgIm09YXVkaW8gMCBSVFAvQVZQICIgUFRfU1RSICJcclxuIgorICAgICAgICAgICAgICAgICJhPXJ0cG1hcDoiIFBUX1NUUiAiIEw4LzgwMDAvMVxyXG4iKTsKKyNlbmRpZgorCisgICAgICAgIHNkcC5hcHBlbmQoImE9Y29udHJvbDoiIFRSQUNLX1NVRkZJWCAiXHJcbiIpOworCisgICAgICAgIEFTdHJpbmcgcmVxdWVzdDsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQoIkFOTk9VTkNFICIpOworICAgICAgICByZXF1ZXN0LmFwcGVuZChtU3RyZWFtVVJMKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKworICAgICAgICBhZGRBdXRoZW50aWNhdGlvbigmcmVxdWVzdCwgIkFOTk9VTkNFIiwgbVN0cmVhbVVSTC5jX3N0cigpKTsKKworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9zZHBcclxuIik7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJDb250ZW50LUxlbmd0aDogIik7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKHNkcC5zaXplKCkpOworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKHNkcCk7CisKKyAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdhbm5vJywgaWQoKSk7CisgICAgICAgIG1Db25uLT5zZW5kUmVxdWVzdChyZXF1ZXN0LmNfc3RyKCksIHJlcGx5KTsKKyAgICB9CisKKyAgICB2b2lkIEgoY29uc3QgQVN0cmluZyAmcywgQVN0cmluZyAqb3V0KSB7CisgICAgICAgIG91dC0+Y2xlYXIoKTsKKworICAgICAgICBNRDVfQ1RYIG07CisgICAgICAgIE1ENV9Jbml0KCZtKTsKKyAgICAgICAgTUQ1X1VwZGF0ZSgmbSwgcy5jX3N0cigpLCBzLnNpemUoKSk7CisKKyAgICAgICAgdWludDhfdCBrZXlbMTZdOworICAgICAgICBNRDVfRmluYWwoa2V5LCAmbSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgICAgICAgICBjaGFyIG5pYmJsZSA9IGtleVtpXSA+PiA0OworICAgICAgICAgICAgaWYgKG5pYmJsZSA8PSA5KSB7CisgICAgICAgICAgICAgICAgbmliYmxlICs9ICcwJzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmliYmxlICs9ICdhJyAtIDEwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0LT5hcHBlbmQoJm5pYmJsZSwgMSk7CisKKyAgICAgICAgICAgIG5pYmJsZSA9IGtleVtpXSAmIDB4MGY7CisgICAgICAgICAgICBpZiAobmliYmxlIDw9IDkpIHsKKyAgICAgICAgICAgICAgICBuaWJibGUgKz0gJzAnOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuaWJibGUgKz0gJ2EnIC0gMTA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQtPmFwcGVuZCgmbmliYmxlLCAxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYXV0aGVudGljYXRlKGNvbnN0IHNwPEFSVFNQUmVzcG9uc2U+ICZyZXNwb25zZSkgeworICAgICAgICBzc2l6ZV90IGkgPSByZXNwb25zZS0+bUhlYWRlcnMuaW5kZXhPZktleSgid3d3LWF1dGhlbnRpY2F0ZSIpOworICAgICAgICBDSEVDS19HRShpLCAwKTsKKworICAgICAgICBBU3RyaW5nIHZhbHVlID0gcmVzcG9uc2UtPm1IZWFkZXJzLnZhbHVlQXQoaSk7CisKKyAgICAgICAgaWYgKCFzdHJuY21wKHZhbHVlLmNfc3RyKCksICJCYXNpYyIsIDUpKSB7CisgICAgICAgICAgICBtQXV0aFR5cGUgPSBCQVNJQzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIENIRUNLKCFzdHJuY21wKHZhbHVlLmNfc3RyKCksICJEaWdlc3QiLCA2KSk7CisgICAgICAgICAgICBtQXV0aFR5cGUgPSBESUdFU1Q7CisKKyAgICAgICAgICAgIGkgPSB2YWx1ZS5maW5kKCJub25jZT0iKTsKKyAgICAgICAgICAgIENIRUNLX0dFKGksIDApOworICAgICAgICAgICAgQ0hFQ0tfRVEodmFsdWUuY19zdHIoKVtpICsgNl0sICdcIicpOworICAgICAgICAgICAgc3NpemVfdCBqID0gdmFsdWUuZmluZCgiXCIiLCBpICsgNyk7CisgICAgICAgICAgICBDSEVDS19HRShqLCAwKTsKKworICAgICAgICAgICAgbU5vbmNlLnNldFRvKHZhbHVlLCBpICsgNywgaiAtIGkgLSA3KTsKKyAgICAgICAgfQorCisgICAgICAgIGlzc3VlQW5ub3VuY2UoKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZEF1dGhlbnRpY2F0aW9uKAorICAgICAgICAgICAgQVN0cmluZyAqcmVxdWVzdCwgY29uc3QgY2hhciAqbWV0aG9kLCBjb25zdCBjaGFyICp1cmwpIHsKKyAgICAgICAgaWYgKG1BdXRoVHlwZSA9PSBOT05FKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobUF1dGhUeXBlID09IEJBU0lDKSB7CisgICAgICAgICAgICByZXF1ZXN0LT5hcHBlbmQoIkF1dGhvcml6YXRpb246IEJhc2ljIFltTmhjM1E2ZEdWemRBbz1cclxuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBDSEVDS19FUSgoaW50KW1BdXRoVHlwZSwgKGludClESUdFU1QpOworCisgICAgICAgIEFTdHJpbmcgQTE7CisgICAgICAgIEExLmFwcGVuZChVU0VSTkFNRSk7CisgICAgICAgIEExLmFwcGVuZCgiOiIpOworICAgICAgICBBMS5hcHBlbmQoIlN0cmVhbWluZyBTZXJ2ZXIiKTsKKyAgICAgICAgQTEuYXBwZW5kKCI6Iik7CisgICAgICAgIEExLmFwcGVuZChQQVNTV09SRCk7CisKKyAgICAgICAgQVN0cmluZyBBMjsKKyAgICAgICAgQTIuYXBwZW5kKG1ldGhvZCk7CisgICAgICAgIEEyLmFwcGVuZCgiOiIpOworICAgICAgICBBMi5hcHBlbmQodXJsKTsKKworICAgICAgICBBU3RyaW5nIEhBMSwgSEEyOworICAgICAgICBIKEExLCAmSEExKTsKKyAgICAgICAgSChBMiwgJkhBMik7CisKKyAgICAgICAgQVN0cmluZyB0bXA7CisgICAgICAgIHRtcC5hcHBlbmQoSEExKTsKKyAgICAgICAgdG1wLmFwcGVuZCgiOiIpOworICAgICAgICB0bXAuYXBwZW5kKG1Ob25jZSk7CisgICAgICAgIHRtcC5hcHBlbmQoIjoiKTsKKyAgICAgICAgdG1wLmFwcGVuZChIQTIpOworCisgICAgICAgIEFTdHJpbmcgZGlnZXN0OworICAgICAgICBIKHRtcCwgJmRpZ2VzdCk7CisKKyAgICAgICAgcmVxdWVzdC0+YXBwZW5kKCJBdXRob3JpemF0aW9uOiBEaWdlc3QgIik7CisgICAgICAgIHJlcXVlc3QtPmFwcGVuZCgibm9uY2U9XCIiKTsKKyAgICAgICAgcmVxdWVzdC0+YXBwZW5kKG1Ob25jZSk7CisgICAgICAgIHJlcXVlc3QtPmFwcGVuZCgiXCIsICIpOworICAgICAgICByZXF1ZXN0LT5hcHBlbmQoInVzZXJuYW1lPVwiIiBVU0VSTkFNRSAiXCIsICIpOworICAgICAgICByZXF1ZXN0LT5hcHBlbmQoInVyaT1cIiIpOworICAgICAgICByZXF1ZXN0LT5hcHBlbmQodXJsKTsKKyAgICAgICAgcmVxdWVzdC0+YXBwZW5kKCJcIiwgIik7CisgICAgICAgIHJlcXVlc3QtPmFwcGVuZCgicmVzcG9uc2U9XCIiKTsKKyAgICAgICAgcmVxdWVzdC0+YXBwZW5kKGRpZ2VzdCk7CisgICAgICAgIHJlcXVlc3QtPmFwcGVuZCgiXCIiKTsKKyAgICAgICAgcmVxdWVzdC0+YXBwZW5kKCJcclxuIik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG9uTWVzc2FnZVJlY2VpdmVkKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgICAgIHN3aXRjaCAobXNnLT53aGF0KCkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2Nvbm4nOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgImNvbm5lY3Rpb24gcmVxdWVzdCBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBPSykgeworICAgICAgICAgICAgICAgICAgICAobmV3IEFNZXNzYWdlKCdxdWl0JywgaWQoKSkpLT5wb3N0KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1Db25uZWN0ZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInNlcnZlci1pcCIsIChpbnQzMl90ICopJm1TZXJ2ZXJJUCkpOworCisgICAgICAgICAgICAgICAgaXNzdWVBbm5vdW5jZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdhbm5vJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJBTk5PVU5DRSBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgc3A8UmVmQmFzZT4gb2JqOworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZE9iamVjdCgicmVzcG9uc2UiLCAmb2JqKSk7CisgICAgICAgICAgICAgICAgc3A8QVJUU1BSZXNwb25zZT4gcmVzcG9uc2U7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE9LKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc3RhdGljX2Nhc3Q8QVJUU1BSZXNwb25zZSAqPihvYmouZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBDSEVDSyhyZXNwb25zZSAhPSBOVUxMKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UtPm1TdGF0dXNDb2RlID09IDQwMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1BdXRoVHlwZSAhPSBOT05FKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJGQUlMRUQgdG8gYXV0aGVudGljYXRlIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV3IEFNZXNzYWdlKCdxdWl0JywgaWQoKSkpLT5wb3N0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZShyZXNwb25zZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gT0sgfHwgcmVzcG9uc2UtPm1TdGF0dXNDb2RlICE9IDIwMCkgeworICAgICAgICAgICAgICAgICAgICAobmV3IEFNZXNzYWdlKCdxdWl0JywgaWQoKSkpLT5wb3N0KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJ0cFBvcnQ7CisgICAgICAgICAgICAgICAgQVJUUENvbm5lY3Rpb246Ok1ha2VQb3J0UGFpcigmbVJUUFNvY2tldCwgJm1SVENQU29ja2V0LCAmcnRwUG9ydCk7CisKKyAgICAgICAgICAgICAgICAvLyAobmV3IEFNZXNzYWdlKCdwb2xsJywgaWQoKSkpLT5wb3N0KCk7CisKKyAgICAgICAgICAgICAgICBBU3RyaW5nIHJlcXVlc3Q7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlNFVFVQICIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1UcmFja1VSTCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKworICAgICAgICAgICAgICAgIGFkZEF1dGhlbnRpY2F0aW9uKCZyZXF1ZXN0LCAiU0VUVVAiLCBtVHJhY2tVUkwuY19zdHIoKSk7CisKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiVHJhbnNwb3J0OiBSVFAvQVZQO3VuaWNhc3Q7Y2xpZW50X3BvcnQ9Iik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQocnRwUG9ydCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIi0iKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChydHBQb3J0ICsgMSk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIjttb2RlPXJlY29yZFxyXG4iKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdzZXR1JywgaWQoKSk7CisgICAgICAgICAgICAgICAgbUNvbm4tPnNlbmRSZXF1ZXN0KHJlcXVlc3QuY19zdHIoKSwgcmVwbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisjaWYgMAorICAgICAgICAgICAgY2FzZSAncG9sbCc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmRfc2V0IHJzOworICAgICAgICAgICAgICAgIEZEX1pFUk8oJnJzKTsKKyAgICAgICAgICAgICAgICBGRF9TRVQobVJUQ1BTb2NrZXQsICZycyk7CisKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICAgICAgICAgICAgICB0di50dl9zZWMgPSAwOworICAgICAgICAgICAgICAgIHR2LnR2X3VzZWMgPSAwOworCisgICAgICAgICAgICAgICAgaW50IHJlcyA9IHNlbGVjdChtUlRDUFNvY2tldCArIDEsICZycywgTlVMTCwgTlVMTCwgJnR2KTsKKworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBzcDxBQnVmZmVyPiBidWZmZXIgPSBuZXcgQUJ1ZmZlcig2NTUzNik7CisgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgbiA9IHJlY3YobVJUQ1BTb2NrZXQsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4gPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgTE9HKEVSUk9SKSA8PCAicmVjdiByZXR1cm5lZCAiIDw8IG47CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgInJlY3YgcmV0dXJuZWQgIiA8PCBuIDw8ICIgYnl0ZXMgb2YgZGF0YS4iOworCisgICAgICAgICAgICAgICAgICAgICAgICBoZXhkdW1wKGJ1ZmZlci0+ZGF0YSgpLCBuKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1zZy0+cG9zdCg1MDAwMCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisjZW5kaWYKKworICAgICAgICAgICAgY2FzZSAnc2V0dSc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50MzJfdCByZXN1bHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInJlc3VsdCIsICZyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiU0VUVVAgY29tcGxldGVkIHdpdGggcmVzdWx0ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdCA8PCAiICgiIDw8IHN0cmVycm9yKC1yZXN1bHQpIDw8ICIpIjsKKworICAgICAgICAgICAgICAgIHNwPFJlZkJhc2U+IG9iajsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRPYmplY3QoInJlc3BvbnNlIiwgJm9iaikpOworICAgICAgICAgICAgICAgIHNwPEFSVFNQUmVzcG9uc2U+IHJlc3BvbnNlOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgeworICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHN0YXRpY19jYXN0PEFSVFNQUmVzcG9uc2UgKj4ob2JqLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0socmVzcG9uc2UgIT0gTlVMTCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBPSyB8fCByZXNwb25zZS0+bVN0YXR1c0NvZGUgIT0gMjAwKSB7CisgICAgICAgICAgICAgICAgICAgIChuZXcgQU1lc3NhZ2UoJ3F1aXQnLCBpZCgpKSktPnBvc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3NpemVfdCBpID0gcmVzcG9uc2UtPm1IZWFkZXJzLmluZGV4T2ZLZXkoInNlc3Npb24iKTsKKyAgICAgICAgICAgICAgICBDSEVDS19HRShpLCAwKTsKKyAgICAgICAgICAgICAgICBtU2Vzc2lvbklEID0gcmVzcG9uc2UtPm1IZWFkZXJzLnZhbHVlQXQoaSk7CisgICAgICAgICAgICAgICAgaSA9IG1TZXNzaW9uSUQuZmluZCgiOyIpOworICAgICAgICAgICAgICAgIGlmIChpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG9wdGlvbnMsIGkuZS4gIjt0aW1lb3V0PTkwIgorICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbklELmVyYXNlKGksIG1TZXNzaW9uSUQuc2l6ZSgpIC0gaSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaSA9IHJlc3BvbnNlLT5tSGVhZGVycy5pbmRleE9mS2V5KCJ0cmFuc3BvcnQiKTsKKyAgICAgICAgICAgICAgICBDSEVDS19HRShpLCAwKTsKKyAgICAgICAgICAgICAgICBBU3RyaW5nIHRyYW5zcG9ydCA9IHJlc3BvbnNlLT5tSGVhZGVycy52YWx1ZUF0KGkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJ0cmFuc3BvcnQgPSAnIiA8PCB0cmFuc3BvcnQgPDwgIiciOworCisgICAgICAgICAgICAgICAgQVN0cmluZyB2YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDSyhHZXRBdHRyaWJ1dGUodHJhbnNwb3J0LmNfc3RyKCksICJzZXJ2ZXJfcG9ydCIsICZ2YWx1ZSkpOworCisgICAgICAgICAgICAgICAgdW5zaWduZWQgcnRwUG9ydCwgcnRjcFBvcnQ7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoc3NjYW5mKHZhbHVlLmNfc3RyKCksICIldS0ldSIsICZydHBQb3J0LCAmcnRjcFBvcnQpLCAyKTsKKworICAgICAgICAgICAgICAgIENIRUNLKEdldEF0dHJpYnV0ZSh0cmFuc3BvcnQuY19zdHIoKSwgInNvdXJjZSIsICZ2YWx1ZSkpOworCisgICAgICAgICAgICAgICAgbWVtc2V0KG1SZW1vdGVBZGRyLnNpbl96ZXJvLCAwLCBzaXplb2YobVJlbW90ZUFkZHIuc2luX3plcm8pKTsKKyAgICAgICAgICAgICAgICBtUmVtb3RlQWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgICAgICAgICAgICBtUmVtb3RlQWRkci5zaW5fYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIodmFsdWUuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgbVJlbW90ZUFkZHIuc2luX3BvcnQgPSBodG9ucyhydHBQb3J0KTsKKworICAgICAgICAgICAgICAgIG1SZW1vdGVSVENQQWRkciA9IG1SZW1vdGVBZGRyOworICAgICAgICAgICAgICAgIG1SZW1vdGVSVENQQWRkci5zaW5fcG9ydCA9IGh0b25zKHJ0cFBvcnQgKyAxKTsKKworICAgICAgICAgICAgICAgIENIRUNLX0VRKDAsIGNvbm5lY3QobVJUUFNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmbVJlbW90ZUFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobVJlbW90ZUFkZHIpKSk7CisKKyAgICAgICAgICAgICAgICBDSEVDS19FUSgwLCBjb25uZWN0KG1SVENQU29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKSZtUmVtb3RlUlRDUEFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobVJlbW90ZVJUQ1BBZGRyKSkpOworCisgICAgICAgICAgICAgICAgdWludDMyX3QgeCA9IG50b2hsKG1SZW1vdGVBZGRyLnNpbl9hZGRyLnNfYWRkcik7CisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJzZW5kaW5nIGRhdGEgdG8gIgorICAgICAgICAgICAgICAgICAgICAgPDwgKHggPj4gMjQpCisgICAgICAgICAgICAgICAgICAgICA8PCAiLiIKKyAgICAgICAgICAgICAgICAgICAgIDw8ICgoeCA+PiAxNikgJiAweGZmKQorICAgICAgICAgICAgICAgICAgICAgPDwgIi4iCisgICAgICAgICAgICAgICAgICAgICA8PCAoKHggPj4gOCkgJiAweGZmKQorICAgICAgICAgICAgICAgICAgICAgPDwgIi4iCisgICAgICAgICAgICAgICAgICAgICA8PCAoeCAmIDB4ZmYpCisgICAgICAgICAgICAgICAgICAgICA8PCAiOiIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJ0cFBvcnQ7CisKKyAgICAgICAgICAgICAgICBBU3RyaW5nIHJlcXVlc3Q7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlJFQ09SRCAiKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChtU3RyZWFtVVJMKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiIFJUU1AvMS4wXHJcbiIpOworCisgICAgICAgICAgICAgICAgYWRkQXV0aGVudGljYXRpb24oJnJlcXVlc3QsICJSRUNPUkQiLCBtU3RyZWFtVVJMLmNfc3RyKCkpOworCisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlNlc3Npb246ICIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uSUQpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgncmVjbycsIGlkKCkpOworICAgICAgICAgICAgICAgIG1Db25uLT5zZW5kUmVxdWVzdChyZXF1ZXN0LmNfc3RyKCksIHJlcGx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAncmVjbyc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50MzJfdCByZXN1bHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInJlc3VsdCIsICZyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiUkVDT1JEIGNvbXBsZXRlZCB3aXRoIHJlc3VsdCAiCisgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQgPDwgIiAoIiA8PCBzdHJlcnJvcigtcmVzdWx0KSA8PCAiKSI7CisKKyAgICAgICAgICAgICAgICBzcDxSZWZCYXNlPiBvYmo7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kT2JqZWN0KCJyZXNwb25zZSIsICZvYmopKTsKKyAgICAgICAgICAgICAgICBzcDxBUlRTUFJlc3BvbnNlPiByZXNwb25zZTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gT0spIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzdGF0aWNfY2FzdDxBUlRTUFJlc3BvbnNlICo+KG9iai5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENIRUNLKHJlc3BvbnNlICE9IE5VTEwpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gT0spIHsKKyAgICAgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgncXVpdCcsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAobmV3IEFNZXNzYWdlKCdtb3JlJywgaWQoKSkpLT5wb3N0KCk7CisgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgnc3IgICcsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgIChuZXcgQU1lc3NhZ2UoJ2FsaXYnLCBpZCgpKSktPnBvc3QoMzAwMDAwMDBsbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ2FsaXYnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghbUNvbm5lY3RlZCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBBU3RyaW5nIHJlcXVlc3Q7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIk9QVElPTlMgIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVN0cmVhbVVSTCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKworICAgICAgICAgICAgICAgIGFkZEF1dGhlbnRpY2F0aW9uKCZyZXF1ZXN0LCAiUkVDT1JEIiwgbVN0cmVhbVVSTC5jX3N0cigpKTsKKworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJTZXNzaW9uOiAiKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChtU2Vzc2lvbklEKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ29wdHMnLCBpZCgpKTsKKyAgICAgICAgICAgICAgICBtQ29ubi0+c2VuZFJlcXVlc3QocmVxdWVzdC5jX3N0cigpLCByZXBseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ29wdHMnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgIk9QVElPTlMgY29tcGxldGVkIHdpdGggcmVzdWx0ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdCA8PCAiICgiIDw8IHN0cmVycm9yKC1yZXN1bHQpIDw8ICIpIjsKKworICAgICAgICAgICAgICAgIGlmICghbUNvbm5lY3RlZCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAobmV3IEFNZXNzYWdlKCdhbGl2JywgaWQoKSkpLT5wb3N0KDMwMDAwMDAwbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdtb3JlJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1Db25uZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gbmV3IEFCdWZmZXIoNjU1MzYpOworICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRhdGEgPSBidWZmZXItPmRhdGEoKTsKKyAgICAgICAgICAgICAgICBkYXRhWzBdID0gMHg4MDsKKyAgICAgICAgICAgICAgICBkYXRhWzFdID0gKDEgPDwgNykgfCBQVDsgIC8vIE0tYml0CisgICAgICAgICAgICAgICAgZGF0YVsyXSA9IChtU2VxTm8gPj4gOCkgJiAweGZmOworICAgICAgICAgICAgICAgIGRhdGFbM10gPSBtU2VxTm8gJiAweGZmOworICAgICAgICAgICAgICAgIGRhdGFbOF0gPSBtU291cmNlSUQgPj4gMjQ7CisgICAgICAgICAgICAgICAgZGF0YVs5XSA9IChtU291cmNlSUQgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgICAgICAgICBkYXRhWzEwXSA9IChtU291cmNlSUQgPj4gOCkgJiAweGZmOworICAgICAgICAgICAgICAgIGRhdGFbMTFdID0gbVNvdXJjZUlEICYgMHhmZjsKKworI2lmZGVmIEFORFJPSUQKKyAgICAgICAgICAgICAgICBNZWRpYUJ1ZmZlciAqbWVkaWFCdWYgPSBOVUxMOworICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobUVuY29kZXItPnJlYWQoJm1lZGlhQnVmKSwgKHN0YXR1c190KU9LKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1lZGlhQnVmLT5yYW5nZV9sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1lZGlhQnVmLT5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgICAgIG1lZGlhQnVmID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHRpbWVVczsKKyAgICAgICAgICAgICAgICBDSEVDSyhtZWRpYUJ1Zi0+bWV0YV9kYXRhKCktPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVVcykpOworCisgICAgICAgICAgICAgICAgdWludDMyX3QgcnRwVGltZSA9IG1SVFBUaW1lQmFzZSArICh0aW1lVXMgKiA5IC8gMTAwbGwpOworCisgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqbWVkaWFEYXRhID0KKyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKiltZWRpYUJ1Zi0+ZGF0YSgpICsgbWVkaWFCdWYtPnJhbmdlX29mZnNldCgpOworCisgICAgICAgICAgICAgICAgQ0hFQ0soIW1lbWNtcCgiXHgwMFx4MDBceDAwXHgwMSIsIG1lZGlhRGF0YSwgNCkpOworCisgICAgICAgICAgICAgICAgQ0hFQ0tfTEUobWVkaWFCdWYtPnJhbmdlX2xlbmd0aCgpIC0gNCArIDEyLCBidWZmZXItPnNpemUoKSk7CisKKyAgICAgICAgICAgICAgICBtZW1jcHkoJmRhdGFbMTJdLAorICAgICAgICAgICAgICAgICAgICAgICBtZWRpYURhdGEgKyA0LCBtZWRpYUJ1Zi0+cmFuZ2VfbGVuZ3RoKCkgLSA0KTsKKworICAgICAgICAgICAgICAgIGJ1ZmZlci0+c2V0UmFuZ2UoMCwgbWVkaWFCdWYtPnJhbmdlX2xlbmd0aCgpIC0gNCArIDEyKTsKKworICAgICAgICAgICAgICAgIG1lZGlhQnVmLT5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgbWVkaWFCdWYgPSBOVUxMOworI2Vsc2UKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBydHBUaW1lID0gbVJUUFRpbWVCYXNlICsgbU51bVJUUFNlbnQgKiAxMjg7CisgICAgICAgICAgICAgICAgbWVtc2V0KCZkYXRhWzEyXSwgMCwgMTI4KTsKKyAgICAgICAgICAgICAgICBidWZmZXItPnNldFJhbmdlKDAsIDEyICsgMTI4KTsKKyNlbmRpZgorCisgICAgICAgICAgICAgICAgZGF0YVs0XSA9IHJ0cFRpbWUgPj4gMjQ7CisgICAgICAgICAgICAgICAgZGF0YVs1XSA9IChydHBUaW1lID4+IDE2KSAmIDB4ZmY7CisgICAgICAgICAgICAgICAgZGF0YVs2XSA9IChydHBUaW1lID4+IDgpICYgMHhmZjsKKyAgICAgICAgICAgICAgICBkYXRhWzddID0gcnRwVGltZSAmIDB4ZmY7CisKKyAgICAgICAgICAgICAgICBzc2l6ZV90IG4gPSBzZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbVJUUFNvY2tldCwgZGF0YSwgYnVmZmVyLT5zaXplKCksIDApOworICAgICAgICAgICAgICAgIGlmIChuIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBMT0coRVJST1IpIDw8ICJzZW5kIGZhaWxlZCAoIiA8PCBzdHJlcnJvcihlcnJubykgPDwgIikiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBDSEVDS19FUShuLCAoc3NpemVfdClidWZmZXItPnNpemUoKSk7CisKKyAgICAgICAgICAgICAgICArK21TZXFObzsKKworICAgICAgICAgICAgICAgICsrbU51bVJUUFNlbnQ7CisgICAgICAgICAgICAgICAgbU51bVJUUE9jdGV0c1NlbnQgKz0gYnVmZmVyLT5zaXplKCkgLSAxMjsKKworICAgICAgICAgICAgICAgIG1MYXN0UlRQVGltZSA9IHJ0cFRpbWU7CisgICAgICAgICAgICAgICAgbUxhc3ROVFBUaW1lID0gbnRwVGltZSgpOworCisjaWZkZWYgQU5EUk9JRAorICAgICAgICAgICAgICAgIGlmIChtTnVtUlRQU2VudCA8IDYwICogMjUpIHsgIC8vIDYwIHNlY3Mgd29ydGgKKyAgICAgICAgICAgICAgICAgICAgbXNnLT5wb3N0KDQwMDAwKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgaWYgKG1OdW1SVFBPY3RldHNTZW50IDwgODAwMCAqIDYwKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZy0+cG9zdCgxMDAwMDAwbGwgKiAxMjggLyA4MDAwKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiVGhhdCdzIGVub3VnaCwgcGF1c2luZy4iOworCisgICAgICAgICAgICAgICAgICAgIEFTdHJpbmcgcmVxdWVzdDsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlBBVVNFICIpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChtU3RyZWFtVVJMKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRBdXRoZW50aWNhdGlvbigmcmVxdWVzdCwgIlBBVVNFIiwgbVN0cmVhbVVSTC5jX3N0cigpKTsKKworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiU2Vzc2lvbjogIik7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uSUQpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgncGF1cycsIGlkKCkpOworICAgICAgICAgICAgICAgICAgICBtQ29ubi0+c2VuZFJlcXVlc3QocmVxdWVzdC5jX3N0cigpLCByZXBseSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdzciAgJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1Db25uZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gbmV3IEFCdWZmZXIoNjU1MzYpOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+c2V0UmFuZ2UoMCwgMCk7CisKKyAgICAgICAgICAgICAgICBhZGRTUihidWZmZXIpOworICAgICAgICAgICAgICAgIGFkZFNERVMoYnVmZmVyKTsKKworICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRhdGEgPSBidWZmZXItPmRhdGEoKTsKKyAgICAgICAgICAgICAgICBzc2l6ZV90IG4gPSBzZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbVJUQ1BTb2NrZXQsIGRhdGEsIGJ1ZmZlci0+c2l6ZSgpLCAwKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShuLCAoc3NpemVfdClidWZmZXItPnNpemUoKSk7CisKKyAgICAgICAgICAgICAgICBtc2ctPnBvc3QoMzAwMDAwMCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ3BhdXMnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgIlBBVVNFIGNvbXBsZXRlZCB3aXRoIHJlc3VsdCAiCisgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQgPDwgIiAoIiA8PCBzdHJlcnJvcigtcmVzdWx0KSA8PCAiKSI7CisKKyAgICAgICAgICAgICAgICBzcDxSZWZCYXNlPiBvYmo7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kT2JqZWN0KCJyZXNwb25zZSIsICZvYmopKTsKKyAgICAgICAgICAgICAgICBzcDxBUlRTUFJlc3BvbnNlPiByZXNwb25zZTsKKworICAgICAgICAgICAgICAgIEFTdHJpbmcgcmVxdWVzdDsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiVEVBUkRPV04gIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVN0cmVhbVVSTCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKworICAgICAgICAgICAgICAgIGFkZEF1dGhlbnRpY2F0aW9uKCZyZXF1ZXN0LCAiVEVBUkRPV04iLCBtU3RyZWFtVVJMLmNfc3RyKCkpOworCisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlNlc3Npb246ICIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uSUQpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgndGVhcicsIGlkKCkpOworICAgICAgICAgICAgICAgIG1Db25uLT5zZW5kUmVxdWVzdChyZXF1ZXN0LmNfc3RyKCksIHJlcGx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAndGVhcic6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50MzJfdCByZXN1bHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInJlc3VsdCIsICZyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiVEVBUkRPV04gY29tcGxldGVkIHdpdGggcmVzdWx0ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdCA8PCAiICgiIDw8IHN0cmVycm9yKC1yZXN1bHQpIDw8ICIpIjsKKworICAgICAgICAgICAgICAgIHNwPFJlZkJhc2U+IG9iajsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRPYmplY3QoInJlc3BvbnNlIiwgJm9iaikpOworICAgICAgICAgICAgICAgIHNwPEFSVFNQUmVzcG9uc2U+IHJlc3BvbnNlOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgeworICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHN0YXRpY19jYXN0PEFSVFNQUmVzcG9uc2UgKj4ob2JqLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0socmVzcG9uc2UgIT0gTlVMTCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgncXVpdCcsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdkaXNjJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgImRpc2Nvbm5lY3QgY29tcGxldGVkIjsKKworICAgICAgICAgICAgICAgIG1Db25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAobmV3IEFNZXNzYWdlKCdxdWl0JywgaWQoKSkpLT5wb3N0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ3F1aXQnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChtQ29ubmVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIG1Db25uLT5kaXNjb25uZWN0KG5ldyBBTWVzc2FnZSgnZGlzYycsIGlkKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG1SVFBTb2NrZXQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBjbG9zZShtUlRQU29ja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgbVJUUFNvY2tldCA9IC0xOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChtUlRDUFNvY2tldCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNsb3NlKG1SVENQU29ja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgbVJUQ1BTb2NrZXQgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisKKyNpZmRlZiBBTkRST0lECisgICAgICAgICAgICAgICAgbUVuY29kZXItPnN0b3AoKTsKKyAgICAgICAgICAgICAgICBtRW5jb2Rlci5jbGVhcigpOworI2VuZGlmCisKKyAgICAgICAgICAgICAgICBtTG9vcGVyLT5zdG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICAgICAgfQorICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk15VHJhbnNtaXR0ZXIoKSB7CisgICAgfQorCitwcml2YXRlOgorICAgIGVudW0gQXV0aFR5cGUgeworICAgICAgICBOT05FLAorICAgICAgICBCQVNJQywKKyAgICAgICAgRElHRVNUCisgICAgfTsKKworICAgIEFTdHJpbmcgbVNlcnZlclVSTDsKKyAgICBBU3RyaW5nIG1UcmFja1VSTDsKKyAgICBBU3RyaW5nIG1TdHJlYW1VUkw7CisKKyAgICBzcDxBTG9vcGVyPiBtTG9vcGVyOworICAgIHNwPEFSVFNQQ29ubmVjdGlvbj4gbUNvbm47CisgICAgYm9vbCBtQ29ubmVjdGVkOworICAgIHVpbnQzMl90IG1TZXJ2ZXJJUDsKKyAgICBBdXRoVHlwZSBtQXV0aFR5cGU7CisgICAgQVN0cmluZyBtTm9uY2U7CisgICAgQVN0cmluZyBtU2Vzc2lvbklEOworICAgIGludCBtUlRQU29ja2V0LCBtUlRDUFNvY2tldDsKKyAgICB1aW50MzJfdCBtU291cmNlSUQ7CisgICAgdWludDMyX3QgbVNlcU5vOworICAgIHVpbnQzMl90IG1SVFBUaW1lQmFzZTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gbVJlbW90ZUFkZHI7CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1SZW1vdGVSVENQQWRkcjsKKyAgICBzaXplX3QgbU51bVNhbXBsZXNTZW50OworICAgIHVpbnQzMl90IG1OdW1SVFBTZW50OworICAgIHVpbnQzMl90IG1OdW1SVFBPY3RldHNTZW50OworICAgIHVpbnQzMl90IG1MYXN0UlRQVGltZTsKKyAgICB1aW50NjRfdCBtTGFzdE5UUFRpbWU7CisKKyNpZmRlZiBBTkRST0lECisgICAgc3A8TWVkaWFTb3VyY2U+IG1FbmNvZGVyOworICAgIEFTdHJpbmcgbVNlcVBhcmFtU2V0OworICAgIEFTdHJpbmcgbVBpY1BhcmFtU2V0OworCisgICAgdm9pZCBtYWtlSDI2NFNQcm9wUGFyYW1TZXRzKE1lZGlhQnVmZmVyICpidWZmZXIpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIga1N0YXJ0Q29kZVtdID0gIlx4MDBceDAwXHgwMFx4MDEiOworCisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPQorICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CisgICAgICAgIHNpemVfdCBzaXplID0gYnVmZmVyLT5yYW5nZV9sZW5ndGgoKTsKKworICAgICAgICBDSEVDS19HRShzaXplLCAwdSk7CisgICAgICAgIENIRUNLKCFtZW1jbXAoa1N0YXJ0Q29kZSwgZGF0YSwgNCkpOworCisgICAgICAgIGRhdGEgKz0gNDsKKyAgICAgICAgc2l6ZSAtPSA0OworCisgICAgICAgIHNpemVfdCBzdGFydENvZGVQb3MgPSAwOworICAgICAgICB3aGlsZSAoc3RhcnRDb2RlUG9zICsgMyA8IHNpemUKKyAgICAgICAgICAgICAgICAmJiBtZW1jbXAoa1N0YXJ0Q29kZSwgJmRhdGFbc3RhcnRDb2RlUG9zXSwgNCkpIHsKKyAgICAgICAgICAgICsrc3RhcnRDb2RlUG9zOworICAgICAgICB9CisKKyAgICAgICAgQ0hFQ0tfTFQoc3RhcnRDb2RlUG9zICsgMywgc2l6ZSk7CisKKyAgICAgICAgZW5jb2RlQmFzZTY0KGRhdGEsIHN0YXJ0Q29kZVBvcywgJm1TZXFQYXJhbVNldCk7CisKKyAgICAgICAgZW5jb2RlQmFzZTY0KCZkYXRhW3N0YXJ0Q29kZVBvcyArIDRdLCBzaXplIC0gc3RhcnRDb2RlUG9zIC0gNCwKKyAgICAgICAgICAgICAgICAgICAgICZtUGljUGFyYW1TZXQpOworICAgIH0KKyNlbmRpZgorCisgICAgdm9pZCBhZGRTUihjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisgICAgICAgIHVpbnQ4X3QgKmRhdGEgPSBidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+c2l6ZSgpOworCisgICAgICAgIGRhdGFbMF0gPSAweDgwIHwgMDsKKyAgICAgICAgZGF0YVsxXSA9IDIwMDsgIC8vIFNSCisgICAgICAgIGRhdGFbMl0gPSAwOworICAgICAgICBkYXRhWzNdID0gNjsKKyAgICAgICAgZGF0YVs0XSA9IG1Tb3VyY2VJRCA+PiAyNDsKKyAgICAgICAgZGF0YVs1XSA9IChtU291cmNlSUQgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgZGF0YVs2XSA9IChtU291cmNlSUQgPj4gOCkgJiAweGZmOworICAgICAgICBkYXRhWzddID0gbVNvdXJjZUlEICYgMHhmZjsKKworICAgICAgICBkYXRhWzhdID0gbUxhc3ROVFBUaW1lID4+ICg2NCAtIDgpOworICAgICAgICBkYXRhWzldID0gKG1MYXN0TlRQVGltZSA+PiAoNjQgLSAxNikpICYgMHhmZjsKKyAgICAgICAgZGF0YVsxMF0gPSAobUxhc3ROVFBUaW1lID4+ICg2NCAtIDI0KSkgJiAweGZmOworICAgICAgICBkYXRhWzExXSA9IChtTGFzdE5UUFRpbWUgPj4gMzIpICYgMHhmZjsKKyAgICAgICAgZGF0YVsxMl0gPSAobUxhc3ROVFBUaW1lID4+IDI0KSAmIDB4ZmY7CisgICAgICAgIGRhdGFbMTNdID0gKG1MYXN0TlRQVGltZSA+PiAxNikgJiAweGZmOworICAgICAgICBkYXRhWzE0XSA9IChtTGFzdE5UUFRpbWUgPj4gOCkgJiAweGZmOworICAgICAgICBkYXRhWzE1XSA9IG1MYXN0TlRQVGltZSAmIDB4ZmY7CisKKyAgICAgICAgZGF0YVsxNl0gPSAobUxhc3RSVFBUaW1lID4+IDI0KSAmIDB4ZmY7CisgICAgICAgIGRhdGFbMTddID0gKG1MYXN0UlRQVGltZSA+PiAxNikgJiAweGZmOworICAgICAgICBkYXRhWzE4XSA9IChtTGFzdFJUUFRpbWUgPj4gOCkgJiAweGZmOworICAgICAgICBkYXRhWzE5XSA9IG1MYXN0UlRQVGltZSAmIDB4ZmY7CisKKyAgICAgICAgZGF0YVsyMF0gPSBtTnVtUlRQU2VudCA+PiAyNDsKKyAgICAgICAgZGF0YVsyMV0gPSAobU51bVJUUFNlbnQgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgZGF0YVsyMl0gPSAobU51bVJUUFNlbnQgPj4gOCkgJiAweGZmOworICAgICAgICBkYXRhWzIzXSA9IG1OdW1SVFBTZW50ICYgMHhmZjsKKworICAgICAgICBkYXRhWzI0XSA9IG1OdW1SVFBPY3RldHNTZW50ID4+IDI0OworICAgICAgICBkYXRhWzI1XSA9IChtTnVtUlRQT2N0ZXRzU2VudCA+PiAxNikgJiAweGZmOworICAgICAgICBkYXRhWzI2XSA9IChtTnVtUlRQT2N0ZXRzU2VudCA+PiA4KSAmIDB4ZmY7CisgICAgICAgIGRhdGFbMjddID0gbU51bVJUUE9jdGV0c1NlbnQgJiAweGZmOworCisgICAgICAgIGJ1ZmZlci0+c2V0UmFuZ2UoYnVmZmVyLT5vZmZzZXQoKSwgYnVmZmVyLT5zaXplKCkgKyAyOCk7CisgICAgfQorCisgICAgdm9pZCBhZGRTREVTKGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpIHsKKyAgICAgICAgdWludDhfdCAqZGF0YSA9IGJ1ZmZlci0+ZGF0YSgpICsgYnVmZmVyLT5zaXplKCk7CisgICAgICAgIGRhdGFbMF0gPSAweDgwIHwgMTsKKyAgICAgICAgZGF0YVsxXSA9IDIwMjsgIC8vIFNERVMKKyAgICAgICAgZGF0YVs0XSA9IG1Tb3VyY2VJRCA+PiAyNDsKKyAgICAgICAgZGF0YVs1XSA9IChtU291cmNlSUQgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgZGF0YVs2XSA9IChtU291cmNlSUQgPj4gOCkgJiAweGZmOworICAgICAgICBkYXRhWzddID0gbVNvdXJjZUlEICYgMHhmZjsKKworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gODsKKworICAgICAgICBkYXRhW29mZnNldCsrXSA9IDE7ICAvLyBDTkFNRQorCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICprQ05BTUUgPSAiYW5kaWhAbGFwdG9wIjsKKyAgICAgICAgZGF0YVtvZmZzZXQrK10gPSBzdHJsZW4oa0NOQU1FKTsKKworICAgICAgICBtZW1jcHkoJmRhdGFbb2Zmc2V0XSwga0NOQU1FLCBzdHJsZW4oa0NOQU1FKSk7CisgICAgICAgIG9mZnNldCArPSBzdHJsZW4oa0NOQU1FKTsKKworICAgICAgICBkYXRhW29mZnNldCsrXSA9IDc7ICAvLyBOT1RFCisKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgKmtOT1RFID0gIkhlbGwncyBmcm96ZW4gb3Zlci4iOworICAgICAgICBkYXRhW29mZnNldCsrXSA9IHN0cmxlbihrTk9URSk7CisKKyAgICAgICAgbWVtY3B5KCZkYXRhW29mZnNldF0sIGtOT1RFLCBzdHJsZW4oa05PVEUpKTsKKyAgICAgICAgb2Zmc2V0ICs9IHN0cmxlbihrTk9URSk7CisKKyAgICAgICAgZGF0YVtvZmZzZXQrK10gPSAwOworCisgICAgICAgIGlmICgob2Zmc2V0ICUgNCkgPiAwKSB7CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSA0IC0gKG9mZnNldCAlIDQpOworICAgICAgICAgICAgc3dpdGNoIChjb3VudCkgeworICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtvZmZzZXQrK10gPSAwOworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtvZmZzZXQrK10gPSAwOworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtvZmZzZXQrK10gPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IG51bVdvcmRzID0gKG9mZnNldCAvIDQpIC0gMTsKKyAgICAgICAgZGF0YVsyXSA9IG51bVdvcmRzID4+IDg7CisgICAgICAgIGRhdGFbM10gPSBudW1Xb3JkcyAmIDB4ZmY7CisKKyAgICAgICAgYnVmZmVyLT5zZXRSYW5nZShidWZmZXItPm9mZnNldCgpLCBidWZmZXItPnNpemUoKSArIG9mZnNldCk7CisgICAgfQorCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoTXlUcmFuc21pdHRlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIE1ZX1RSQU5TTUlUVEVSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL1ZpZGVvU291cmNlLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL1ZpZGVvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUwYzg1YgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvVmlkZW9Tb3VyY2UuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBWSURFT19TT1VSQ0VfSF8KKworI2RlZmluZSBWSURFT19TT1VSQ0VfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyR3JvdXAuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgVmlkZW9Tb3VyY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2UgeworICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IGtGcmFtZXJhdGUgPSAyNDsgIC8vIGZwcworCitwdWJsaWM6CisgICAgVmlkZW9Tb3VyY2UoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorICAgICAgICA6IG1XaWR0aCh3aWR0aCksCisgICAgICAgICAgbUhlaWdodChoZWlnaHQpLAorICAgICAgICAgIG1TaXplKCh3aWR0aCAqIGhlaWdodCAqIDMpIC8gMikgeworICAgICAgICBtR3JvdXAuYWRkX2J1ZmZlcihuZXcgTWVkaWFCdWZmZXIobVNpemUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRGb3JtYXQoKSB7CisgICAgICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbmV3IE1ldGFEYXRhOworICAgICAgICBtZXRhLT5zZXRJbnQzMihrS2V5V2lkdGgsIG1XaWR0aCk7CisgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlIZWlnaHQsIG1IZWlnaHQpOworICAgICAgICBtZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fUkFXKTsKKworICAgICAgICByZXR1cm4gbWV0YTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpIHsKKyAgICAgICAgbU51bUZyYW1lc091dHB1dCA9IDA7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKSB7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHJlYWQoCisgICAgICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgTWVkaWFTb3VyY2U6OlJlYWRPcHRpb25zICpvcHRpb25zKSB7CisgICAgICAgIGlmIChtTnVtRnJhbWVzT3V0cHV0ID09IGtGcmFtZXJhdGUgKiAxMDApIHsKKyAgICAgICAgICAgIC8vIFN0b3AgcmV0dXJuaW5nIGRhdGEgYWZ0ZXIgMTAgc2Vjcy4KKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9FTkRfT0ZfU1RSRUFNOworICAgICAgICB9CisKKyAgICAgICAgLy8gcHJpbnRmKCJWaWRlb1NvdXJjZTo6cmVhZFxuIik7CisgICAgICAgIHN0YXR1c190IGVyciA9IG1Hcm91cC5hY3F1aXJlX2J1ZmZlcihidWZmZXIpOworICAgICAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICB9CisKKyAgICAgICAgY2hhciB4ID0gKGNoYXIpKChkb3VibGUpcmFuZCgpIC8gUkFORF9NQVggKiAyNTUpOworICAgICAgICBtZW1zZXQoKCpidWZmZXIpLT5kYXRhKCksIHgsIG1TaXplKTsKKyAgICAgICAgKCpidWZmZXIpLT5zZXRfcmFuZ2UoMCwgbVNpemUpOworICAgICAgICAoKmJ1ZmZlciktPm1ldGFfZGF0YSgpLT5jbGVhcigpOworICAgICAgICAoKmJ1ZmZlciktPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NCgKKyAgICAgICAgICAgICAgICBrS2V5VGltZSwgKG1OdW1GcmFtZXNPdXRwdXQgKiAxMDAwMDAwKSAvIGtGcmFtZXJhdGUpOworICAgICAgICArK21OdW1GcmFtZXNPdXRwdXQ7CisKKyAgICAgICAgLy8gcHJpbnRmKCJWaWRlb1NvdXJjZTo6cmVhZCAtIHJldHVybmluZyBidWZmZXJcbiIpOworICAgICAgICAvLyBMT0coSU5GTykoIlZpZGVvU291cmNlOjpyZWFkIC0gcmV0dXJuaW5nIGJ1ZmZlciIpOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+VmlkZW9Tb3VyY2UoKSB7fQorCitwcml2YXRlOgorICAgIE1lZGlhQnVmZmVyR3JvdXAgbUdyb3VwOworICAgIGludCBtV2lkdGgsIG1IZWlnaHQ7CisgICAgc2l6ZV90IG1TaXplOworICAgIGludDY0X3QgbU51bUZyYW1lc091dHB1dDs7CisKKyAgICBWaWRlb1NvdXJjZShjb25zdCBWaWRlb1NvdXJjZSAmKTsKKyAgICBWaWRlb1NvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IFZpZGVvU291cmNlICYpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBWSURFT19TT1VSQ0VfSF8KZGlmZiAtLWdpdCBhL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L01lZGlhUHJvZmlsZVJlYWRlci5qYXZhIGIvbWVkaWEvdGVzdHMvTWVkaWFGcmFtZXdvcmtUZXN0L3NyYy9jb20vYW5kcm9pZC9tZWRpYWZyYW1ld29ya3Rlc3QvTWVkaWFQcm9maWxlUmVhZGVyLmphdmEKaW5kZXggMDU2NTM3ZC4uYjFhZDMxNSAxMDA2NDQKLS0tIGEvbWVkaWEvdGVzdHMvTWVkaWFGcmFtZXdvcmtUZXN0L3NyYy9jb20vYW5kcm9pZC9tZWRpYWZyYW1ld29ya3Rlc3QvTWVkaWFQcm9maWxlUmVhZGVyLmphdmEKKysrIGIvbWVkaWEvdGVzdHMvTWVkaWFGcmFtZXdvcmtUZXN0L3NyYy9jb20vYW5kcm9pZC9tZWRpYWZyYW1ld29ya3Rlc3QvTWVkaWFQcm9maWxlUmVhZGVyLmphdmEKQEAgLTM0LDEwICszNCwxMiBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExpc3Q8QXVkaW9EZWNvZGVyPiBhdWRpb0RlY29kZXJzID0gRGVjb2RlckNhcGFiaWxpdGllcy5nZXRBdWRpb0RlY29kZXJzKCk7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTGlzdDxWaWRlb0VuY29kZXJDYXA+IHZpZGVvRW5jb2RlcnMgPSBFbmNvZGVyQ2FwYWJpbGl0aWVzLmdldFZpZGVvRW5jb2RlcnMoKTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMaXN0PEF1ZGlvRW5jb2RlckNhcD4gYXVkaW9FbmNvZGVycyA9IEVuY29kZXJDYXBhYmlsaXRpZXMuZ2V0QXVkaW9FbmNvZGVycygpOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPiBlbmNvZGVyTWFwID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPiB2aWRlb0VuY29kZXJNYXAgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBTdHJpbmc+KCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSGFzaE1hcDxJbnRlZ2VyLCBTdHJpbmc+IGF1ZGlvRW5jb2Rlck1hcCA9IG5ldyBIYXNoTWFwPEludGVnZXIsIFN0cmluZz4oKTsKIAogICAgIHN0YXRpYyB7Ci0gICAgICAgIGluaXRFbmNvZGVyTWFwKCk7CisgICAgICAgIGluaXRBdWRpb0VuY29kZXJNYXAoKTsKKyAgICAgICAgaW5pdFZpZGVvRW5jb2Rlck1hcCgpOwogICAgIH07CiAKICAgICBwdWJsaWMgc3RhdGljIExpc3Q8VmlkZW9FbmNvZGVyQ2FwPiBnZXRWaWRlb0VuY29kZXJzKCkgewpAQCAtNzksNyArODEsNyBAQAogICAgICAgICAgICAgdmlkZW9FbmNvZGVyICE9IE1lZGlhUmVjb3JkZXIuVmlkZW9FbmNvZGVyLk1QRUdfNF9TUCkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQgdmlkZW8gZW5jb2RlciAiICsgdmlkZW9FbmNvZGVyKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gZW5jb2Rlck1hcC5nZXQodmlkZW9FbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHZpZGVvRW5jb2Rlck1hcC5nZXQodmlkZW9FbmNvZGVyKTsKICAgICB9CiAKICAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBdWRpb0NvZGVjTmFtZShpbnQgYXVkaW9FbmNvZGVyKSB7CkBAIC05MCwyMiArOTIsMjQgQEAKICAgICAgICAgICAgIGF1ZGlvRW5jb2RlciAhPSBNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2Rlci5FQUFDX1BMVVMpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuc3VwcG9ydGVkIGF1ZGlvIGVuY29kZWVyICIgKyBhdWRpb0VuY29kZXIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBlbmNvZGVyTWFwLmdldChhdWRpb0VuY29kZXIpOworICAgICAgICByZXR1cm4gYXVkaW9FbmNvZGVyTWFwLmdldChhdWRpb0VuY29kZXIpOwogICAgIH0KIAogICAgIHByaXZhdGUgTWVkaWFQcm9maWxlUmVhZGVyKCkge30gLy8gRG9uJ3QgY2FsbCBtZQogCi0gICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBpbml0RW5jb2Rlck1hcCgpIHsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGluaXRWaWRlb0VuY29kZXJNYXAoKSB7CiAgICAgICAgIC8vIHZpZGVvIGVuY29kZXJzCi0gICAgICAgIGVuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuVmlkZW9FbmNvZGVyLkgyNjMsICJoMjYzIik7Ci0gICAgICAgIGVuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuVmlkZW9FbmNvZGVyLkgyNjQsICJoMjY0Iik7Ci0gICAgICAgIGVuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuVmlkZW9FbmNvZGVyLk1QRUdfNF9TUCwgIm00diIpOworICAgICAgICB2aWRlb0VuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuVmlkZW9FbmNvZGVyLkgyNjMsICJoMjYzIik7CisgICAgICAgIHZpZGVvRW5jb2Rlck1hcC5wdXQoTWVkaWFSZWNvcmRlci5WaWRlb0VuY29kZXIuSDI2NCwgImgyNjQiKTsKKyAgICAgICAgdmlkZW9FbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLlZpZGVvRW5jb2Rlci5NUEVHXzRfU1AsICJtNHYiKTsKKyAgICB9CiAKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGluaXRBdWRpb0VuY29kZXJNYXAoKSB7CiAgICAgICAgIC8vIGF1ZGlvIGVuY29kZXJzCi0gICAgICAgIGVuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuQXVkaW9FbmNvZGVyLkFNUl9OQiwgImFtcm5iIik7Ci0gICAgICAgIGVuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuQXVkaW9FbmNvZGVyLkFNUl9XQiwgImFtcndiIik7Ci0gICAgICAgIGVuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuQXVkaW9FbmNvZGVyLkFBQywgImFhYyIpOwotICAgICAgICBlbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2Rlci5BQUNfUExVUywgImFhY3BsdXMiKTsKLSAgICAgICAgZW5jb2Rlck1hcC5wdXQoTWVkaWFSZWNvcmRlci5BdWRpb0VuY29kZXIuRUFBQ19QTFVTLCAiZWFhY3BsdXMiKTsKKyAgICAgICAgYXVkaW9FbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2Rlci5BTVJfTkIsICJhbXJuYiIpOworICAgICAgICBhdWRpb0VuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuQXVkaW9FbmNvZGVyLkFNUl9XQiwgImFtcndiIik7CisgICAgICAgIGF1ZGlvRW5jb2Rlck1hcC5wdXQoTWVkaWFSZWNvcmRlci5BdWRpb0VuY29kZXIuQUFDLCAiYWFjIik7CisgICAgICAgIGF1ZGlvRW5jb2Rlck1hcC5wdXQoTWVkaWFSZWNvcmRlci5BdWRpb0VuY29kZXIuQUFDX1BMVVMsICJhYWNwbHVzIik7CisgICAgICAgIGF1ZGlvRW5jb2Rlck1hcC5wdXQoTWVkaWFSZWNvcmRlci5BdWRpb0VuY29kZXIuRUFBQ19QTFVTLCAiZWFhY3BsdXMiKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9tZWRpYS90ZXN0cy9NZWRpYUZyYW1ld29ya1Rlc3Qvc3JjL2NvbS9hbmRyb2lkL21lZGlhZnJhbWV3b3JrdGVzdC9mdW5jdGlvbmFsL0NhbWVyYVRlc3QuamF2YSBiL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L2Z1bmN0aW9uYWwvQ2FtZXJhVGVzdC5qYXZhCmluZGV4IDJlNTk5ZjIuLmJiZDZiZWEgMTAwNjQ0Ci0tLSBhL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L2Z1bmN0aW9uYWwvQ2FtZXJhVGVzdC5qYXZhCisrKyBiL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L2Z1bmN0aW9uYWwvQ2FtZXJhVGVzdC5qYXZhCkBAIC0xOSwyMSArMTksMjAgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5tZWRpYWZyYW1ld29ya3Rlc3QuTWVkaWFGcmFtZXdvcmtUZXN0OwogaW1wb3J0IGNvbS5hbmRyb2lkLm1lZGlhZnJhbWV3b3JrdGVzdC5NZWRpYU5hbWVzOwogCi1pbXBvcnQgamF2YS5pby4qOwotCiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmE7CiBpbXBvcnQgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUGljdHVyZUNhbGxiYWNrOwogaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlByZXZpZXdDYWxsYmFjazsKIGltcG9ydCBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaHV0dGVyQ2FsbGJhY2s7CitpbXBvcnQgYW5kcm9pZC5vcy5Db25kaXRpb25WYXJpYWJsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkVudmlyb25tZW50OworaW1wb3J0IGFuZHJvaWQub3MuTG9vcGVyOwogaW1wb3J0IGFuZHJvaWQudGVzdC5BY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlOworaW1wb3J0IGFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuYW5ub3RhdGlvbi5MYXJnZVRlc3Q7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlcjsKIAotaW1wb3J0IGFuZHJvaWQub3MuQ29uZGl0aW9uVmFyaWFibGU7Ci1pbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7Ci0KLWltcG9ydCBhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLmFubm90YXRpb24uTGFyZ2VUZXN0OworaW1wb3J0IGphdmEuaW8uKjsKIAogLyoqCiAgKiBKdW5pdCAvIEluc3RydW1lbnRhdGlvbiB0ZXN0IGNhc2UgZm9yIHRoZSBjYW1lcmEgYXBpCkBAIC0xNTMsNyArMTUyLDggQEAKICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHJhd0RhdGEgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBpbnQgcmF3RGF0YUxlbmd0aCA9IHJhd0RhdGEubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICBGaWxlIHJhd291dHB1dCA9IG5ldyBGaWxlKCIvc2RjYXJkL3Rlc3QuYm1wIik7CisgICAgICAgICAgICAgICAgICAgIEZpbGUgcmF3b3V0cHV0ID0gbmV3IEZpbGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnQuZ2V0RXh0ZXJuYWxTdG9yYWdlRGlyZWN0b3J5KCkudG9TdHJpbmcoKSwgIi90ZXN0LmJtcCIpOwogICAgICAgICAgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIG91dHN0cmVhbSA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHJhd291dHB1dCk7CiAgICAgICAgICAgICAgICAgICAgIG91dHN0cmVhbS53cml0ZShyYXdEYXRhKTsgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIExvZy52KFRBRywgIkpwZWdQaWN0dXJlQ2FsbGJhY2sgcmF3RGF0YUxlbmd0aCA9ICIgKyByYXdEYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L2Z1bmN0aW9uYWwvTWVkaWFSZWNvcmRlclRlc3QuamF2YSBiL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L2Z1bmN0aW9uYWwvTWVkaWFSZWNvcmRlclRlc3QuamF2YQppbmRleCBhNTJmZDc2Li4yMzMyNjU3IDEwMDY0NAotLS0gYS9tZWRpYS90ZXN0cy9NZWRpYUZyYW1ld29ya1Rlc3Qvc3JjL2NvbS9hbmRyb2lkL21lZGlhZnJhbWV3b3JrdGVzdC9mdW5jdGlvbmFsL01lZGlhUmVjb3JkZXJUZXN0LmphdmEKKysrIGIvbWVkaWEvdGVzdHMvTWVkaWFGcmFtZXdvcmtUZXN0L3NyYy9jb20vYW5kcm9pZC9tZWRpYWZyYW1ld29ya3Rlc3QvZnVuY3Rpb25hbC9NZWRpYVJlY29yZGVyVGVzdC5qYXZhCkBAIC0xMjEsOCArMTIxLDggQEAKICAgICAgICAgbVN1cmZhY2VIb2xkZXIgPSBNZWRpYUZyYW1ld29ya1Rlc3QubVN1cmZhY2VWaWV3LmdldEhvbGRlcigpOwogICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSAoIi9zZGNhcmQvIiArIHZpZGVvRW5jb2RlciArICJfIiArIGF1ZGlvRW5jb2RlciArICJfIiArIGhpZ2hRdWFsaXR5ICsgIi4zZ3AiKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIExvZy52KFRBRywgInZpZGVvIGVuY29kZXIgOiIgKyB2aWRlb0VuY29kZXIpOwotICAgICAgICAgICAgTG9nLnYoVEFHLCAiYXVkaW8gZW5jb2RlciA6IiArIGF1ZGlvRW5jb2Rlcik7CisgICAgICAgICAgICBMb2cudihUQUcsICJ2aWRlbyBlbmNvZGVyIDogIiArIHZpZGVvRW5jb2Rlcik7CisgICAgICAgICAgICBMb2cudihUQUcsICJhdWRpbyBlbmNvZGVyIDogIiArIGF1ZGlvRW5jb2Rlcik7CiAgICAgICAgICAgICBMb2cudihUQUcsICJxdWFsaXR5IDogIiArIChoaWdoUXVhbGl0eT8iaGlnaCI6ICJsb3ciKSk7CiAgICAgICAgICAgICBMb2cudihUQUcsICJlbmNvZGVyIDogIiArIE1lZGlhUHJvZmlsZVJlYWRlci5nZXRWaWRlb0NvZGVjTmFtZSh2aWRlb0VuY29kZXIpKTsKICAgICAgICAgICAgIExvZy52KFRBRywgImF1ZGlvIDogIiArIE1lZGlhUHJvZmlsZVJlYWRlci5nZXRBdWRpb0NvZGVjTmFtZShhdWRpb0VuY29kZXIpKTsKZGlmZiAtLWdpdCBhL21lZGlhL3Rlc3RzL29teGpwZWdkZWNvZGVyL0FuZHJvaWQubWsgYi9tZWRpYS90ZXN0cy9vbXhqcGVnZGVjb2Rlci9BbmRyb2lkLm1rCmluZGV4IGI3YzE4YmMuLmY5N2Y4ZWIgMTAwNjQ0Ci0tLSBhL21lZGlhL3Rlc3RzL29teGpwZWdkZWNvZGVyL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvdGVzdHMvb214anBlZ2RlY29kZXIvQW5kcm9pZC5tawpAQCAtMTEsNyArMTEsNiBAQAogIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLWlmZXEgKCQoQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUKSx0cnVlKQogCiBMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKIApAQCAtNTQsNSArNTMsMyBAQAogTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKIAogaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCi0KLWVuZGlmCmRpZmYgLS1naXQgYS9uYXRpdmUvYW5kcm9pZC9BbmRyb2lkLm1rIGIvbmF0aXZlL2FuZHJvaWQvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzZjNjRmCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2FuZHJvaWQvQW5kcm9pZC5tawpAQCAtMCwwICsxLDI4IEBACitCQVNFX1BBVEggOj0gJChjYWxsIG15LWRpcikKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworIyBvdXIgc291cmNlIGZpbGVzCisjCitMT0NBTF9TUkNfRklMRVM6PSBcCisgICAgYWN0aXZpdHkuY3BwIFwKKyAgICBpbnB1dC5jcHAgXAorICAgIGxvb3Blci5jcHAgXAorICAgIG5hdGl2ZV93aW5kb3cuY3BwCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gXAorICAgIGxpYmFuZHJvaWRfcnVudGltZSBcCisgICAgbGliY3V0aWxzIFwKKyAgICBsaWJ1dGlscyBcCisgICAgbGliYmluZGVyIFwKKyAgICBsaWJ1aQorCitMT0NBTF9DX0lOQ0xVREVTICs9IFwKKyAgICBmcmFtZXdvcmtzL2Jhc2UvbmF0aXZlL2luY2x1ZGUgXAorICAgIGZyYW1ld29ya3MvYmFzZS9jb3JlL2puaS9hbmRyb2lkIFwKKyAgICBkYWx2aWsvbGlibmF0aXZlaGVscGVyL2luY2x1ZGUvbmF0aXZlaGVscGVyCisKK0xPQ0FMX01PRFVMRTo9IGxpYmFuZHJvaWQKKworaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvbmF0aXZlL2FuZHJvaWQvYWN0aXZpdHkuY3BwIGIvbmF0aXZlL2FuZHJvaWQvYWN0aXZpdHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvYW5kcm9pZC9hY3Rpdml0eS5jcHAKZGlmZiAtLWdpdCBhL25hdGl2ZS9hbmRyb2lkL2lucHV0LmNwcCBiL25hdGl2ZS9hbmRyb2lkL2lucHV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTVhMWNlCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2FuZHJvaWQvaW5wdXQuY3BwCkBAIC0wLDAgKzEsMjUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJpbnB1dCIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgPGFuZHJvaWQvaW5wdXQuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dC5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8dXRpbHMvUG9sbExvb3AuaD4KKworI2luY2x1ZGUgPHBvbGwuaD4KKwordXNpbmcgYW5kcm9pZDo6SW5wdXRFdmVudDsKK3VzaW5nIGFuZHJvaWQ6OktleUV2ZW50OwordXNpbmcgYW5kcm9pZDo6TW90aW9uRXZlbnQ7CisKK2ludDMyX3QgQUlucHV0RXZlbnRfZ2V0VHlwZShjb25zdCBBSW5wdXRFdmVudCogZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSW5wdXRFdmVudCo+KGV2ZW50KS0+Z2V0VHlwZSgpOworfQorCitpbnQzMl90IEFJbnB1dEV2ZW50X2dldERldmljZUlkKGNvbnN0IEFJbnB1dEV2ZW50KiBldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnB1dEV2ZW50Kj4oZXZlbnQpLT5nZXREZXZpY2VJZCgpOworfQorCitpbnQzMl90IEFJbnB1dEV2ZW50X2dldE5hdHVyZShjb25zdCBBSW5wdXRFdmVudCogZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSW5wdXRFdmVudCo+KGV2ZW50KS0+Z2V0TmF0dXJlKCk7Cit9CisKK2ludDMyX3QgQUtleUV2ZW50X2dldEFjdGlvbihjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEtleUV2ZW50Kj4oa2V5X2V2ZW50KS0+Z2V0QWN0aW9uKCk7Cit9CisKK2ludDMyX3QgQUtleUV2ZW50X2dldEZsYWdzKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihrZXlfZXZlbnQpLT5nZXRGbGFncygpOworfQorCitpbnQzMl90IEFLZXlFdmVudF9nZXRLZXlDb2RlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihrZXlfZXZlbnQpLT5nZXRLZXlDb2RlKCk7Cit9CisKK2ludDMyX3QgQUtleUV2ZW50X2dldFNjYW5Db2RlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihrZXlfZXZlbnQpLT5nZXRTY2FuQ29kZSgpOworfQorCitpbnQzMl90IEFLZXlFdmVudF9nZXRNZXRhU3RhdGUoY29uc3QgQUlucHV0RXZlbnQqIGtleV9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBLZXlFdmVudCo+KGtleV9ldmVudCktPmdldE1ldGFTdGF0ZSgpOworfQoraW50MzJfdCBBS2V5RXZlbnRfZ2V0UmVwZWF0Q291bnQoY29uc3QgQUlucHV0RXZlbnQqIGtleV9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBLZXlFdmVudCo+KGtleV9ldmVudCktPmdldFJlcGVhdENvdW50KCk7Cit9CisKK2ludDY0X3QgQUtleUV2ZW50X2dldERvd25UaW1lKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihrZXlfZXZlbnQpLT5nZXREb3duVGltZSgpOworfQorCitpbnQ2NF90IEFLZXlFdmVudF9nZXRFdmVudFRpbWUoY29uc3QgQUlucHV0RXZlbnQqIGtleV9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBLZXlFdmVudCo+KGtleV9ldmVudCktPmdldEV2ZW50VGltZSgpOworfQorCitpbnQzMl90IEFNb3Rpb25FdmVudF9nZXRBY3Rpb24oY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldEFjdGlvbigpOworfQorCitpbnQzMl90IEFNb3Rpb25FdmVudF9nZXRNZXRhU3RhdGUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldE1ldGFTdGF0ZSgpOworfQorCitpbnQzMl90IEFNb3Rpb25FdmVudF9nZXRFZGdlRmxhZ3MoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCkgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0RWRnZUZsYWdzKCk7Cit9CisKK2ludDY0X3QgQU1vdGlvbkV2ZW50X2dldERvd25UaW1lKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXREb3duVGltZSgpOworfQorCitpbnQ2NF90IEFNb3Rpb25FdmVudF9nZXRFdmVudFRpbWUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldEV2ZW50VGltZSgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WE9mZnNldChjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WE9mZnNldCgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WU9mZnNldChjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WU9mZnNldCgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WFByZWNpc2lvbihjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WFByZWNpc2lvbigpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WVByZWNpc2lvbihjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WVByZWNpc2lvbigpOworfQorCitzaXplX3QgQU1vdGlvbkV2ZW50X2dldFBvaW50ZXJDb3VudChjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0UG9pbnRlckNvdW50KCk7Cit9CisKK2ludDMyX3QgQU1vdGlvbkV2ZW50X2dldFBvaW50ZXJJZChjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldFBvaW50ZXJJZChwb2ludGVyX2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFJhd1goY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRSYXdYKHBvaW50ZXJfaW5kZXgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0UmF3WShjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldFJhd1kocG9pbnRlcl9pbmRleCk7Cit9CisKK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRYKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WChwb2ludGVyX2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFkoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRZKHBvaW50ZXJfaW5kZXgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0UHJlc3N1cmUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRQcmVzc3VyZShwb2ludGVyX2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFNpemUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRTaXplKHBvaW50ZXJfaW5kZXgpOworfQorCitzaXplX3QgQU1vdGlvbkV2ZW50X2dldEhpc3RvcnlTaXplKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRIaXN0b3J5U2l6ZSgpOworfQorCitpbnQ2NF90IEFNb3Rpb25FdmVudF9nZXRIaXN0b3JpY2FsRXZlbnRUaW1lKEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsCisgICAgICAgIHNpemVfdCBoaXN0b3J5X2luZGV4KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0SGlzdG9yaWNhbEV2ZW50VGltZSgKKyAgICAgICAgICAgIGhpc3RvcnlfaW5kZXgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbFJhd1goQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgsCisgICAgICAgIHNpemVfdCBoaXN0b3J5X2luZGV4KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0SGlzdG9yaWNhbFJhd1goCisgICAgICAgICAgICBwb2ludGVyX2luZGV4LCBoaXN0b3J5X2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxSYXdZKEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4LAorICAgICAgICBzaXplX3QgaGlzdG9yeV9pbmRleCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldEhpc3RvcmljYWxSYXdZKAorICAgICAgICAgICAgcG9pbnRlcl9pbmRleCwgaGlzdG9yeV9pbmRleCk7Cit9CisKK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRIaXN0b3JpY2FsWChBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCwKKyAgICAgICAgc2l6ZV90IGhpc3RvcnlfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRIaXN0b3JpY2FsWCgKKyAgICAgICAgICAgIHBvaW50ZXJfaW5kZXgsIGhpc3RvcnlfaW5kZXgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbFkoQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgsCisgICAgICAgIHNpemVfdCBoaXN0b3J5X2luZGV4KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0SGlzdG9yaWNhbFkoCisgICAgICAgICAgICBwb2ludGVyX2luZGV4LCBoaXN0b3J5X2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxQcmVzc3VyZShBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCwKKyAgICAgICAgc2l6ZV90IGhpc3RvcnlfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRIaXN0b3JpY2FsUHJlc3N1cmUoCisgICAgICAgICAgICBwb2ludGVyX2luZGV4LCBoaXN0b3J5X2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxTaXplKEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4LAorICAgICAgICBzaXplX3QgaGlzdG9yeV9pbmRleCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldEhpc3RvcmljYWxTaXplKAorICAgICAgICAgICAgcG9pbnRlcl9pbmRleCwgaGlzdG9yeV9pbmRleCk7Cit9CisKK3ZvaWQgQUlucHV0UXVldWVfYXR0YWNoTG9vcGVyKEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUxvb3BlciogbG9vcGVyLAorICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyBjYWxsYmFjaywgdm9pZCogZGF0YSkgeworICAgIHF1ZXVlLT5zZXRQb2xsTG9vcChzdGF0aWNfY2FzdDxhbmRyb2lkOjpQb2xsTG9vcCo+KGxvb3BlcikpOworICAgIEFMb29wZXJfc2V0Q2FsbGJhY2sobG9vcGVyLCBxdWV1ZS0+Z2V0Q29uc3VtZXIoKS5nZXRDaGFubmVsKCktPmdldFJlY2VpdmVQaXBlRmQoKSwKKyAgICAgICAgICAgIFBPTExJTiwgY2FsbGJhY2ssIGRhdGEpOworfQorCit2b2lkIEFJbnB1dFF1ZXVlX2RldGFjaExvb3BlcihBSW5wdXRRdWV1ZSogcXVldWUpIHsKKyAgICBxdWV1ZS0+Z2V0UG9sbExvb3AoKS0+cmVtb3ZlQ2FsbGJhY2soCisgICAgICAgICAgICBxdWV1ZS0+Z2V0Q29uc3VtZXIoKS5nZXRDaGFubmVsKCktPmdldFJlY2VpdmVQaXBlRmQoKSk7Cit9CisKK2ludCBBSW5wdXRRdWV1ZV9oYXNFdmVudHMoQUlucHV0UXVldWUqIHF1ZXVlKSB7CisgICAgc3RydWN0IHBvbGxmZCBwZmQ7CisgICAgCisgICAgcGZkLmZkID0gcXVldWUtPmdldENvbnN1bWVyKCkuZ2V0Q2hhbm5lbCgpLT5nZXRSZWNlaXZlUGlwZUZkKCk7CisgICAgcGZkLmV2ZW50cyA9IFBPTExJTjsKKyAgICBwZmQucmV2ZW50cyA9IDA7CisgICAgCisgICAgaW50IG5mZCA9IHBvbGwoJnBmZCwgMSwgMCk7CisgICAgaWYgKG5mZCA8PSAwKSByZXR1cm4gbmZkOworICAgIHJldHVybiBwZmQucmV2ZW50cyA9PSBQT0xMSU4gPyAxIDogLTE7Cit9CisKK2ludDMyX3QgQUlucHV0UXVldWVfZ2V0RXZlbnQoQUlucHV0UXVldWUqIHF1ZXVlLCBBSW5wdXRFdmVudCoqIG91dEV2ZW50KSB7CisgICAgKm91dEV2ZW50ID0gTlVMTDsKKyAgICAKKyAgICBpbnQzMl90IHJlcyA9IHF1ZXVlLT5nZXRDb25zdW1lcigpLnJlY2VpdmVEaXNwYXRjaFNpZ25hbCgpOworICAgIGlmIChyZXMgIT0gYW5kcm9pZDo6T0spIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIH4gRmFpbGVkIHRvIHJlY2VpdmUgZGlzcGF0Y2ggc2lnbmFsLiAgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICBxdWV1ZS0+Z2V0Q29uc3VtZXIoKS5nZXRDaGFubmVsKCktPmdldE5hbWUoKS5zdHJpbmcoKSwgcmVzKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAKKyAgICBJbnB1dEV2ZW50KiBteUV2ZW50ID0gTlVMTDsKKyAgICByZXMgPSBxdWV1ZS0+Y29uc3VtZSgmbXlFdmVudCk7CisgICAgaWYgKHJlcyAhPSBhbmRyb2lkOjpPSykgeworICAgICAgICBMT0dXKCJjaGFubmVsICclcycgfiBGYWlsZWQgdG8gY29uc3VtZSBpbnB1dCBldmVudC4gIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgcXVldWUtPmdldENvbnN1bWVyKCkuZ2V0Q2hhbm5lbCgpLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlcyk7CisgICAgICAgIHF1ZXVlLT5nZXRDb25zdW1lcigpLnNlbmRGaW5pc2hlZFNpZ25hbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgICpvdXRFdmVudCA9IG15RXZlbnQ7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQUlucHV0UXVldWVfZmluaXNoRXZlbnQoQUlucHV0UXVldWUqIHF1ZXVlLCBBSW5wdXRFdmVudCogZXZlbnQsCisgICAgICAgIGludCBoYW5kbGVkKSB7CisgICAgaWYgKCFoYW5kbGVkICYmICgoSW5wdXRFdmVudCopZXZlbnQpLT5nZXRUeXBlKCkgPT0gSU5QVVRfRVZFTlRfVFlQRV9LRVkKKyAgICAgICAgICAgICYmICgoS2V5RXZlbnQqKWV2ZW50KS0+aGFzRGVmYXVsdEFjdGlvbigpKSB7CisgICAgICAgIC8vIFRoZSBhcHAgZGlkbid0IGhhbmRsZSB0aGlzLCBidXQgaXQgbWF5IGhhdmUgYSBkZWZhdWx0IGFjdGlvbgorICAgICAgICAvLyBhc3NvY2lhdGVkIHdpdGggaXQuICBXZSBuZWVkIHRvIGhhbmQgdGhpcyBiYWNrIHRvIEphdmEgdG8gYmUKKyAgICAgICAgLy8gZXhlY3V0ZWQuCisgICAgICAgIHF1ZXVlLT5kb0RlZmF1bHRLZXkoKEtleUV2ZW50KilldmVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaW50MzJfdCByZXMgPSBxdWV1ZS0+Z2V0Q29uc3VtZXIoKS5zZW5kRmluaXNoZWRTaWduYWwoKTsKKyAgICBpZiAocmVzICE9IGFuZHJvaWQ6Ok9LKSB7CisgICAgICAgIExPR1coIkZhaWxlZCB0byBzZW5kIGZpbmlzaGVkIHNpZ25hbCBvbiBjaGFubmVsICclcycuICBzdGF0dXM9JWQiLAorICAgICAgICAgICAgICAgIHF1ZXVlLT5nZXRDb25zdW1lcigpLmdldENoYW5uZWwoKS0+Z2V0TmFtZSgpLnN0cmluZygpLCByZXMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL25hdGl2ZS9hbmRyb2lkL2xvb3Blci5jcHAgYi9uYXRpdmUvYW5kcm9pZC9sb29wZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNzhiYmQKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvYW5kcm9pZC9sb29wZXIuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIkFMb29wZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDxhbmRyb2lkL2xvb3Blci5oPgorI2luY2x1ZGUgPHV0aWxzL1BvbGxMb29wLmg+CisKK3VzaW5nIGFuZHJvaWQ6OlBvbGxMb29wOwordXNpbmcgYW5kcm9pZDo6c3A7CisKK0FMb29wZXIqIEFMb29wZXJfZm9yVGhyZWFkKCkgeworICAgIHJldHVybiBQb2xsTG9vcDo6Z2V0Rm9yVGhyZWFkKCkuZ2V0KCk7Cit9CisKK0FMb29wZXIqIEFMb29wZXJfcHJlcGFyZSgpIHsKKyAgICBzcDxQb2xsTG9vcD4gbG9vcCA9IFBvbGxMb29wOjpnZXRGb3JUaHJlYWQoKTsKKyAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgIGxvb3AgPSBuZXcgUG9sbExvb3AoKTsKKyAgICAgICAgUG9sbExvb3A6OnNldEZvclRocmVhZChsb29wKTsKKyAgICB9CisgICAgcmV0dXJuIGxvb3AuZ2V0KCk7Cit9CisKK2ludDMyX3QgQUxvb3Blcl9wb2xsT25jZShpbnQgdGltZW91dE1pbGxpcykgeworICAgIHNwPFBvbGxMb29wPiBsb29wID0gUG9sbExvb3A6OmdldEZvclRocmVhZCgpOworICAgIGlmIChsb29wID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiQUxvb3Blcl9wb2xsT25jZTogTm8gbG9vcGVyIGZvciB0aGlzIHRocmVhZCEiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gbG9vcC0+cG9sbE9uY2UodGltZW91dE1pbGxpcykgPyAxIDogMDsKK30KKwordm9pZCBBTG9vcGVyX2FjcXVpcmUoQUxvb3BlciogbG9vcGVyKSB7CisgICAgc3RhdGljX2Nhc3Q8UG9sbExvb3AqPihsb29wZXIpLT5pbmNTdHJvbmcoKHZvaWQqKUFMb29wZXJfYWNxdWlyZSk7Cit9CisKK3ZvaWQgQUxvb3Blcl9yZWxlYXNlKEFMb29wZXIqIGxvb3BlcikgeworICAgIHN0YXRpY19jYXN0PFBvbGxMb29wKj4obG9vcGVyKS0+ZGVjU3Ryb25nKCh2b2lkKilBTG9vcGVyX2FjcXVpcmUpOworfQorCit2b2lkIEFMb29wZXJfc2V0Q2FsbGJhY2soQUxvb3BlciogbG9vcGVyLCBpbnQgZmQsIGludCBldmVudHMsCisgICAgICAgIEFMb29wZXJfY2FsbGJhY2tGdW5jKiBjYWxsYmFjaywgdm9pZCogZGF0YSkgeworICAgIHN0YXRpY19jYXN0PFBvbGxMb29wKj4obG9vcGVyKS0+c2V0TG9vcGVyQ2FsbGJhY2soZmQsIGV2ZW50cywgY2FsbGJhY2ssIGRhdGEpOworfQorCitpbnQzMl90IEFMb29wZXJfcmVtb3ZlQ2FsbGJhY2soQUxvb3BlciogbG9vcGVyLCBpbnQgZmQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UG9sbExvb3AqPihsb29wZXIpLT5yZW1vdmVDYWxsYmFjayhmZCkgPyAxIDogMDsKK30KZGlmZiAtLWdpdCBhL25hdGl2ZS9hbmRyb2lkL25hdGl2ZV93aW5kb3cuY3BwIGIvbmF0aXZlL2FuZHJvaWQvbmF0aXZlX3dpbmRvdy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ4Y2JmYwotLS0gL2Rldi9udWxsCisrKyBiL25hdGl2ZS9hbmRyb2lkL25hdGl2ZV93aW5kb3cuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIlN1cmZhY2UiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDxhbmRyb2lkL25hdGl2ZV93aW5kb3cuaD4KKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9TdXJmYWNlLmg+CisKK3VzaW5nIGFuZHJvaWQ6OlN1cmZhY2U7CisKK3N0YXRpYyBpbnQzMl90IGdldFdpbmRvd1Byb3AoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgd2hhdCkgeworICAgIGludCB2YWx1ZTsKKyAgICBpbnQgcmVzID0gd2luZG93LT5xdWVyeSh3aW5kb3csIHdoYXQsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHJlcyA8IDAgPyByZXMgOiB2YWx1ZTsKK30KKworaW50MzJfdCBBTmF0aXZlV2luZG93X2dldFdpZHRoKEFOYXRpdmVXaW5kb3cqIHdpbmRvdykgeworICAgIHJldHVybiBnZXRXaW5kb3dQcm9wKHdpbmRvdywgTkFUSVZFX1dJTkRPV19XSURUSCk7Cit9CisKK2ludDMyX3QgQU5hdGl2ZVdpbmRvd19nZXRIZWlnaHQoQU5hdGl2ZVdpbmRvdyogd2luZG93KSB7CisgICAgcmV0dXJuIGdldFdpbmRvd1Byb3Aod2luZG93LCBOQVRJVkVfV0lORE9XX0hFSUdIVCk7Cit9CisKK2ludDMyX3QgQU5hdGl2ZVdpbmRvd19nZXRGb3JtYXQoQU5hdGl2ZVdpbmRvdyogd2luZG93KSB7CisgICAgcmV0dXJuIGdldFdpbmRvd1Byb3Aod2luZG93LCBOQVRJVkVfV0lORE9XX0ZPUk1BVCk7Cit9CisKK2ludDMyX3QgQU5hdGl2ZVdpbmRvd19zZXRCdWZmZXJzR2VvbWV0cnkoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQzMl90IHdpZHRoLAorICAgICAgICBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBmb3JtYXQpIHsKKyAgICBuYXRpdmVfd2luZG93X3NldF9idWZmZXJzX2dlb21ldHJ5KHdpbmRvdywgd2lkdGgsIGhlaWdodCwgZm9ybWF0KTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvaW5wdXQuaCBiL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvaW5wdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWJlODVhCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9pbnB1dC5oCkBAIC0wLDAgKzEsNTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBfQU5EUk9JRF9JTlBVVF9ICisjZGVmaW5lIF9BTkRST0lEX0lOUFVUX0gKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIElNUE9SVEFOVCBOT1RJQ0U6CisgKgorICogICBUaGlzIGZpbGUgaXMgcGFydCBvZiBBbmRyb2lkJ3Mgc2V0IG9mIHN0YWJsZSBzeXN0ZW0gaGVhZGVycworICogICBleHBvc2VkIGJ5IHRoZSBBbmRyb2lkIE5ESyAoTmF0aXZlIERldmVsb3BtZW50IEtpdCkuCisgKgorICogICBUaGlyZC1wYXJ0eSBzb3VyY2UgQU5EIGJpbmFyeSBjb2RlIHJlbGllcyBvbiB0aGUgZGVmaW5pdGlvbnMKKyAqICAgaGVyZSB0byBiZSBGUk9aRU4gT04gQUxMIFVQQ09NSU5HIFBMQVRGT1JNIFJFTEVBU0VTLgorICoKKyAqICAgLSBETyBOT1QgTU9ESUZZIEVOVU1TIChFWENFUFQgSUYgWU9VIEFERCBORVcgMzItQklUIFZBTFVFUykKKyAqICAgLSBETyBOT1QgTU9ESUZZIENPTlNUQU5UUyBPUiBGVU5DVElPTkFMIE1BQ1JPUworICogICAtIERPIE5PVCBDSEFOR0UgVEhFIFNJR05BVFVSRSBPRiBGVU5DVElPTlMgSU4gQU5ZIFdBWQorICogICAtIERPIE5PVCBDSEFOR0UgVEhFIExBWU9VVCBPUiBTSVpFIE9GIFNUUlVDVFVSRVMKKyAqLworCisvKgorICogU3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIHRvIHJlY2VpdmUgYW5kIHByb2Nlc3MgaW5wdXQgZXZlbnRzIGluCisgKiBuYXRpdmUgY29kZS4KKyAqCisgKiBOT1RFOiBUaGVzZSBmdW5jdGlvbnMgTVVTVCBiZSBpbXBsZW1lbnRlZCBieSAvc3lzdGVtL2xpYi9saWJ1aS5zbworICovCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxhbmRyb2lkL2tleWNvZGVzLmg+CisjaW5jbHVkZSA8YW5kcm9pZC9sb29wZXIuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKgorICogSW5wdXQgZGV2aWNlIGNsYXNzZXMuCisgKi8KK2VudW0geworICAgIC8qIFRoZSBpbnB1dCBkZXZpY2UgaXMgYSBrZXlib2FyZC4gKi8KKyAgICBJTlBVVF9ERVZJQ0VfQ0xBU1NfS0VZQk9BUkQgICAgICA9IDB4MDAwMDAwMDEsCisKKyAgICAvKiBUaGUgaW5wdXQgZGV2aWNlIGlzIGFuIGFscGhhLW51bWVyaWMga2V5Ym9hcmQgKG5vdCBqdXN0IGEgZGlhbCBwYWQpLiAqLworICAgIElOUFVUX0RFVklDRV9DTEFTU19BTFBIQUtFWSAgICAgID0gMHgwMDAwMDAwMiwKKworICAgIC8qIFRoZSBpbnB1dCBkZXZpY2UgaXMgYSB0b3VjaHNjcmVlbiAoZWl0aGVyIHNpbmdsZS10b3VjaCBvciBtdWx0aS10b3VjaCkuICovCisgICAgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOICAgPSAweDAwMDAwMDA0LAorCisgICAgLyogVGhlIGlucHV0IGRldmljZSBpcyBhIHRyYWNrYmFsbC4gKi8KKyAgICBJTlBVVF9ERVZJQ0VfQ0xBU1NfVFJBQ0tCQUxMICAgICA9IDB4MDAwMDAwMDgsCisKKyAgICAvKiBUaGUgaW5wdXQgZGV2aWNlIGlzIGEgbXVsdGktdG91Y2ggdG91Y2hzY3JlZW4uICovCisgICAgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOX01UPSAweDAwMDAwMDEwLAorCisgICAgLyogVGhlIGlucHV0IGRldmljZSBpcyBhIGRpcmVjdGlvbmFsIHBhZC4gKi8KKyAgICBJTlBVVF9ERVZJQ0VfQ0xBU1NfRFBBRCAgICAgICAgICA9IDB4MDAwMDAwMjAKK307CisKKy8qCisgKiBLZXkgc3RhdGVzIChtYXkgYmUgcmV0dXJuZWQgYnkgcXVlcmllcyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhCisgKiBwYXJ0aWN1bGFyIGtleSBjb2RlLCBzY2FuIGNvZGUgb3Igc3dpdGNoKS4KKyAqCisgKiBYWFggc2hvdWxkIHdlIGNhbGwgdGhpcyBCVVRUT05fU1RBVEVfWFhYPworICovCitlbnVtIHsKKyAgICAvKiBUaGUga2V5IHN0YXRlIGlzIHVua25vd24gb3IgdGhlIHJlcXVlc3RlZCBrZXkgaXRzZWxmIGlzIG5vdCBzdXBwb3J0ZWQuICovCisgICAgS0VZX1NUQVRFX1VOS05PV04gPSAtMSwKKworICAgIC8qIFRoZSBrZXkgaXMgdXAuICovCisgICAgS0VZX1NUQVRFX1VQID0gMCwKKworICAgIC8qIFRoZSBrZXkgaXMgZG93bi4gKi8KKyAgICBLRVlfU1RBVEVfRE9XTiA9IDEsCisKKyAgICAvKiBUaGUga2V5IGlzIGRvd24gYnV0IGlzIGEgdmlydHVhbCBrZXkgcHJlc3MgdGhhdCBpcyBiZWluZyBlbXVsYXRlZCBieSB0aGUgc3lzdGVtLiAqLworICAgIEtFWV9TVEFURV9WSVJUVUFMID0gMgorfTsKKworLyoKKyAqIE1ldGEga2V5IC8gbW9kaWZlciBzdGF0ZS4KKyAqLworZW51bSB7CisgICAgLyogTm8gbWV0YSBrZXlzIGFyZSBwcmVzc2VkLiAqLworICAgIE1FVEFfTk9ORSA9IDAsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9uZSBvZiB0aGUgQUxUIG1ldGEga2V5cyBpcyBwcmVzc2VkLiAqLworICAgIE1FVEFfQUxUX09OID0gMHgwMiwKKworICAgIC8qIFRoaXMgbWFzayBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGxlZnQgQUxUIG1ldGEga2V5IGlzIHByZXNzZWQuICovCisgICAgTUVUQV9BTFRfTEVGVF9PTiA9IDB4MTAsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSByaWdodCBBTFQgbWV0YSBrZXkgaXMgcHJlc3NlZC4gKi8KKyAgICBNRVRBX0FMVF9SSUdIVF9PTiA9IDB4MjAsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9uZSBvZiB0aGUgU0hJRlQgbWV0YSBrZXlzIGlzIHByZXNzZWQuICovCisgICAgTUVUQV9TSElGVF9PTiA9IDB4MDEsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0IFNISUZUIG1ldGEga2V5IGlzIHByZXNzZWQuICovCisgICAgTUVUQV9TSElGVF9MRUZUX09OID0gMHg0MCwKKworICAgIC8qIFRoaXMgbWFzayBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHJpZ2h0IFNISUZUIG1ldGEga2V5IGlzIHByZXNzZWQuICovCisgICAgTUVUQV9TSElGVF9SSUdIVF9PTiA9IDB4ODAsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBTWU0gbWV0YSBrZXkgaXMgcHJlc3NlZC4gKi8KKyAgICBNRVRBX1NZTV9PTiA9IDB4MDQKK307CisKKy8qCisgKiBJbnB1dCBldmVudHMuCisgKgorICogSW5wdXQgZXZlbnRzIGFyZSBvcGFxdWUgc3RydWN0dXJlcy4gIFVzZSB0aGUgcHJvdmlkZWQgYWNjZXNzb3JzIGZ1bmN0aW9ucyB0bworICogcmVhZCB0aGVpciBwcm9wZXJ0aWVzLgorICovCitzdHJ1Y3QgQUlucHV0RXZlbnQ7Cit0eXBlZGVmIHN0cnVjdCBBSW5wdXRFdmVudCBBSW5wdXRFdmVudDsKKworLyoKKyAqIElucHV0IGV2ZW50IHR5cGVzLgorICovCitlbnVtIHsKKyAgICAvKiBJbmRpY2F0ZXMgdGhhdCB0aGUgaW5wdXQgZXZlbnQgaXMgYSBrZXkgZXZlbnQuICovCisgICAgSU5QVVRfRVZFTlRfVFlQRV9LRVkgPSAxLAorCisgICAgLyogSW5kaWNhdGVzIHRoYXQgdGhlIGlucHV0IGV2ZW50IGlzIGEgbW90aW9uIGV2ZW50LiAqLworICAgIElOUFVUX0VWRU5UX1RZUEVfTU9USU9OID0gMgorfTsKKworLyoKKyAqIEtleSBldmVudCBhY3Rpb25zLgorICovCitlbnVtIHsKKyAgICAvKiBUaGUga2V5IGhhcyBiZWVuIHByZXNzZWQgZG93bi4gKi8KKyAgICBLRVlfRVZFTlRfQUNUSU9OX0RPV04gPSAwLAorCisgICAgLyogVGhlIGtleSBoYXMgYmVlbiByZWxlYXNlZC4gKi8KKyAgICBLRVlfRVZFTlRfQUNUSU9OX1VQID0gMSwKKworICAgIC8qIE11bHRpcGxlIGR1cGxpY2F0ZSBrZXkgZXZlbnRzIGhhdmUgb2NjdXJyZWQgaW4gYSByb3csIG9yIGEgY29tcGxleCBzdHJpbmcgaXMKKyAgICAgKiBiZWluZyBkZWxpdmVyZWQuICBUaGUgcmVwZWF0X2NvdW50IHByb3BlcnR5IG9mIHRoZSBrZXkgZXZlbnQgY29udGFpbnMgdGhlIG51bWJlcgorICAgICAqIG9mIHRpbWVzIHRoZSBnaXZlbiBrZXkgY29kZSBzaG91bGQgYmUgZXhlY3V0ZWQuCisgICAgICovCisgICAgS0VZX0VWRU5UX0FDVElPTl9NVUxUSVBMRSA9IDIKK307CisKKy8qCisgKiBLZXkgZXZlbnQgZmxhZ3MuCisgKi8KK2VudW0geworICAgIC8qIFRoaXMgbWFzayBpcyBzZXQgaWYgdGhlIGRldmljZSB3b2tlIGJlY2F1c2Ugb2YgdGhpcyBrZXkgZXZlbnQuICovCisgICAgS0VZX0VWRU5UX0ZMQUdfV09LRV9IRVJFID0gMHgxLAorCisgICAgLyogVGhpcyBtYXNrIGlzIHNldCBpZiB0aGUga2V5IGV2ZW50IHdhcyBnZW5lcmF0ZWQgYnkgYSBzb2Z0d2FyZSBrZXlib2FyZC4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19TT0ZUX0tFWUJPQVJEID0gMHgyLAorCisgICAgLyogVGhpcyBtYXNrIGlzIHNldCBpZiB3ZSBkb24ndCB3YW50IHRoZSBrZXkgZXZlbnQgdG8gY2F1c2UgdXMgdG8gbGVhdmUgdG91Y2ggbW9kZS4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19LRUVQX1RPVUNIX01PREUgPSAweDQsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgc2V0IGlmIGFuIGV2ZW50IHdhcyBrbm93biB0byBjb21lIGZyb20gYSB0cnVzdGVkIHBhcnQKKyAgICAgKiBvZiB0aGUgc3lzdGVtLiAgVGhhdCBpcywgdGhlIGV2ZW50IGlzIGtub3duIHRvIGNvbWUgZnJvbSB0aGUgdXNlciwKKyAgICAgKiBhbmQgY291bGQgbm90IGhhdmUgYmVlbiBzcG9vZmVkIGJ5IGEgdGhpcmQgcGFydHkgY29tcG9uZW50LiAqLworICAgIEtFWV9FVkVOVF9GTEFHX0ZST01fU1lTVEVNID0gMHg4LAorCisgICAgLyogVGhpcyBtYXNrIGlzIHVzZWQgZm9yIGNvbXBhdGliaWxpdHksIHRvIGlkZW50aWZ5IGVudGVyIGtleXMgdGhhdCBhcmUKKyAgICAgKiBjb21pbmcgZnJvbSBhbiBJTUUgd2hvc2UgZW50ZXIga2V5IGhhcyBiZWVuIGF1dG8tbGFiZWxsZWQgIm5leHQiIG9yCisgICAgICogImRvbmUiLiAgVGhpcyBhbGxvd3MgVGV4dFZpZXcgdG8gZGlzcGF0Y2ggdGhlc2UgYXMgbm9ybWFsIGVudGVyIGtleXMKKyAgICAgKiBmb3Igb2xkIGFwcGxpY2F0aW9ucywgYnV0IHN0aWxsIGRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24gd2hlbgorICAgICAqIHJlY2VpdmluZyB0aGVtLiAqLworICAgIEtFWV9FVkVOVF9GTEFHX0VESVRPUl9BQ1RJT04gPSAweDEwLAorCisgICAgLyogV2hlbiBhc3NvY2lhdGVkIHdpdGggdXAga2V5IGV2ZW50cywgdGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUga2V5IHByZXNzCisgICAgICogaGFzIGJlZW4gY2FuY2VsZWQuICBUeXBpY2FsbHkgdGhpcyBpcyB1c2VkIHdpdGggdmlydHVhbCB0b3VjaCBzY3JlZW4KKyAgICAgKiBrZXlzLCB3aGVyZSB0aGUgdXNlciBjYW4gc2xpZGUgZnJvbSB0aGUgdmlydHVhbCBrZXkgYXJlYSBvbiB0byB0aGUKKyAgICAgKiBkaXNwbGF5OiBpbiB0aGF0IGNhc2UsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlY2VpdmUgYSBjYW5jZWxlZCB1cAorICAgICAqIGV2ZW50IGFuZCBzaG91bGQgbm90IHBlcmZvcm0gdGhlIGFjdGlvbiBub3JtYWxseSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICoga2V5LiAgTm90ZSB0aGF0IGZvciB0aGlzIHRvIHdvcmssIHRoZSBhcHBsaWNhdGlvbiBjYW4gbm90IHBlcmZvcm0gYW4KKyAgICAgKiBhY3Rpb24gZm9yIGEga2V5IHVudGlsIGl0IHJlY2VpdmVzIGFuIHVwIG9yIHRoZSBsb25nIHByZXNzIHRpbWVvdXQgaGFzCisgICAgICogZXhwaXJlZC4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19DQU5DRUxFRCA9IDB4MjAsCisKKyAgICAvKiBUaGlzIGtleSBldmVudCB3YXMgZ2VuZXJhdGVkIGJ5IGEgdmlydHVhbCAob24tc2NyZWVuKSBoYXJkIGtleSBhcmVhLgorICAgICAqIFR5cGljYWxseSB0aGlzIGlzIGFuIGFyZWEgb2YgdGhlIHRvdWNoc2NyZWVuLCBvdXRzaWRlIG9mIHRoZSByZWd1bGFyCisgICAgICogZGlzcGxheSwgZGVkaWNhdGVkIHRvICJoYXJkd2FyZSIgYnV0dG9ucy4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19WSVJUVUFMX0hBUkRfS0VZID0gMHg0MCwKKworICAgIC8qIFRoaXMgZmxhZyBpcyBzZXQgZm9yIHRoZSBmaXJzdCBrZXkgcmVwZWF0IHRoYXQgb2NjdXJzIGFmdGVyIHRoZQorICAgICAqIGxvbmcgcHJlc3MgdGltZW91dC4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19MT05HX1BSRVNTID0gMHg4MCwKKworICAgIC8qIFNldCB3aGVuIGEga2V5IGV2ZW50IGhhcyBLRVlfRVZFTlRfRkxBR19DQU5DRUxFRCBzZXQgYmVjYXVzZSBhIGxvbmcKKyAgICAgKiBwcmVzcyBhY3Rpb24gd2FzIGV4ZWN1dGVkIHdoaWxlIGl0IHdhcyBkb3duLiAqLworICAgIEtFWV9FVkVOVF9GTEFHX0NBTkNFTEVEX0xPTkdfUFJFU1MgPSAweDEwMCwKKworICAgIC8qIFNldCBmb3IgS0VZX0VWRU5UX0FDVElPTl9VUCB3aGVuIHRoaXMgZXZlbnQncyBrZXkgY29kZSBpcyBzdGlsbCBiZWluZworICAgICAqIHRyYWNrZWQgZnJvbSBpdHMgaW5pdGlhbCBkb3duLiAgVGhhdCBpcywgc29tZWJvZHkgcmVxdWVzdGVkIHRoYXQgdHJhY2tpbmcKKyAgICAgKiBzdGFydGVkIG9uIHRoZSBrZXkgZG93biBhbmQgYSBsb25nIHByZXNzIGhhcyBub3QgY2F1c2VkCisgICAgICogdGhlIHRyYWNraW5nIHRvIGJlIGNhbmNlbGVkLiAqLworICAgIEtFWV9FVkVOVF9GTEFHX1RSQUNLSU5HID0gMHgyMDAKK307CisKKy8qCisgKiBNb3Rpb24gZXZlbnQgYWN0aW9ucy4KKyAqLworCisvKiBCaXQgc2hpZnQgZm9yIHRoZSBhY3Rpb24gYml0cyBob2xkaW5nIHRoZSBwb2ludGVyIGluZGV4IGFzCisgKiBkZWZpbmVkIGJ5IE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9NQVNLLgorICovCisjZGVmaW5lIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9TSElGVCA4CisKK2VudW0geworICAgIC8qIEJpdCBtYXNrIG9mIHRoZSBwYXJ0cyBvZiB0aGUgYWN0aW9uIGNvZGUgdGhhdCBhcmUgdGhlIGFjdGlvbiBpdHNlbGYuCisgICAgICovCisgICAgTU9USU9OX0VWRU5UX0FDVElPTl9NQVNLID0gMHhmZiwKKworICAgIC8qIEJpdHMgaW4gdGhlIGFjdGlvbiBjb2RlIHRoYXQgcmVwcmVzZW50IGEgcG9pbnRlciBpbmRleCwgdXNlZCB3aXRoCisgICAgICogTU9USU9OX0VWRU5UX0FDVElPTl9QT0lOVEVSX0RPV04gYW5kIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9VUC4gIFNoaWZ0aW5nCisgICAgICogZG93biBieSBNT1RJT05fRVZFTlRfQUNUSU9OX1BPSU5URVJfSU5ERVhfU0hJRlQgcHJvdmlkZXMgdGhlIGFjdHVhbCBwb2ludGVyCisgICAgICogaW5kZXggd2hlcmUgdGhlIGRhdGEgZm9yIHRoZSBwb2ludGVyIGdvaW5nIHVwIG9yIGRvd24gY2FuIGJlIGZvdW5kLgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9NQVNLICA9IDB4ZmYwMCwKKworICAgIC8qIEEgcHJlc3NlZCBnZXN0dXJlIGhhcyBzdGFydGVkLCB0aGUgbW90aW9uIGNvbnRhaW5zIHRoZSBpbml0aWFsIHN0YXJ0aW5nIGxvY2F0aW9uLgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fRE9XTiA9IDAsCisKKyAgICAvKiBBIHByZXNzZWQgZ2VzdHVyZSBoYXMgZmluaXNoZWQsIHRoZSBtb3Rpb24gY29udGFpbnMgdGhlIGZpbmFsIHJlbGVhc2UgbG9jYXRpb24KKyAgICAgKiBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhdGUgcG9pbnRzIHNpbmNlIHRoZSBsYXN0IGRvd24gb3IgbW92ZSBldmVudC4KKyAgICAgKi8KKyAgICBNT1RJT05fRVZFTlRfQUNUSU9OX1VQID0gMSwKKworICAgIC8qIEEgY2hhbmdlIGhhcyBoYXBwZW5lZCBkdXJpbmcgYSBwcmVzcyBnZXN0dXJlIChiZXR3ZWVuIE1PVElPTl9FVkVOVF9BQ1RJT05fRE9XTiBhbmQKKyAgICAgKiBNT1RJT05fRVZFTlRfQUNUSU9OX1VQKS4gIFRoZSBtb3Rpb24gY29udGFpbnMgdGhlIG1vc3QgcmVjZW50IHBvaW50LCBhcyB3ZWxsIGFzCisgICAgICogYW55IGludGVybWVkaWF0ZSBwb2ludHMgc2luY2UgdGhlIGxhc3QgZG93biBvciBtb3ZlIGV2ZW50LgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRSA9IDIsCisKKyAgICAvKiBUaGUgY3VycmVudCBnZXN0dXJlIGhhcyBiZWVuIGFib3J0ZWQuCisgICAgICogWW91IHdpbGwgbm90IHJlY2VpdmUgYW55IG1vcmUgcG9pbnRzIGluIGl0LiAgWW91IHNob3VsZCB0cmVhdCB0aGlzIGFzCisgICAgICogYW4gdXAgZXZlbnQsIGJ1dCBub3QgcGVyZm9ybSBhbnkgYWN0aW9uIHRoYXQgeW91IG5vcm1hbGx5IHdvdWxkLgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fQ0FOQ0VMID0gMywKKworICAgIC8qIEEgbW92ZW1lbnQgaGFzIGhhcHBlbmVkIG91dHNpZGUgb2YgdGhlIG5vcm1hbCBib3VuZHMgb2YgdGhlIFVJIGVsZW1lbnQuCisgICAgICogVGhpcyBkb2VzIG5vdCBwcm92aWRlIGEgZnVsbCBnZXN0dXJlLCBidXQgb25seSB0aGUgaW5pdGlhbCBsb2NhdGlvbiBvZiB0aGUgbW92ZW1lbnQvdG91Y2guCisgICAgICovCisgICAgTU9USU9OX0VWRU5UX0FDVElPTl9PVVRTSURFID0gNCwKKworICAgIC8qIEEgbm9uLXByaW1hcnkgcG9pbnRlciBoYXMgZ29uZSBkb3duLgorICAgICAqIFRoZSBiaXRzIGluIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9NQVNLIGluZGljYXRlIHdoaWNoIHBvaW50ZXIgY2hhbmdlZC4KKyAgICAgKi8KKyAgICBNT1RJT05fRVZFTlRfQUNUSU9OX1BPSU5URVJfRE9XTiA9IDUsCisKKyAgICAvKiBBIG5vbi1wcmltYXJ5IHBvaW50ZXIgaGFzIGdvbmUgdXAuCisgICAgICogVGhlIGJpdHMgaW4gTU9USU9OX0VWRU5UX0FDVElPTl9QT0lOVEVSX0lOREVYX01BU0sgaW5kaWNhdGUgd2hpY2ggcG9pbnRlciBjaGFuZ2VkLgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9VUCA9IDYKK307CisKKy8qCisgKiBNb3Rpb24gZXZlbnQgZWRnZSB0b3VjaCBmbGFncy4KKyAqLworZW51bSB7CisgICAgLyogTm8gZWRnZXMgaW50ZXJzZWN0ZWQgKi8KKyAgICBNT1RJT05fRVZFTlRfRURHRV9GTEFHX05PTkUgPSAwLAorCisgICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoZSBtb3Rpb24gZXZlbnQgaW50ZXJzZWN0ZWQgdGhlIHRvcCBlZGdlIG9mIHRoZSBzY3JlZW4uICovCisgICAgTU9USU9OX0VWRU5UX0VER0VfRkxBR19UT1AgPSAweDAxLAorCisgICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoZSBtb3Rpb24gZXZlbnQgaW50ZXJzZWN0ZWQgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBzY3JlZW4uICovCisgICAgTU9USU9OX0VWRU5UX0VER0VfRkxBR19CT1RUT00gPSAweDAyLAorCisgICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoZSBtb3Rpb24gZXZlbnQgaW50ZXJzZWN0ZWQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgc2NyZWVuLiAqLworICAgIE1PVElPTl9FVkVOVF9FREdFX0ZMQUdfTEVGVCA9IDB4MDQsCisKKyAgICAvKiBGbGFnIGluZGljYXRpbmcgdGhlIG1vdGlvbiBldmVudCBpbnRlcnNlY3RlZCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgc2NyZWVuLiAqLworICAgIE1PVElPTl9FVkVOVF9FREdFX0ZMQUdfUklHSFQgPSAweDA4Cit9OworCisvKgorICogU3BlY2lmaWVzIHRoZSBsb2dpY2FsIG5hdHVyZSBvZiBhbiBpbnB1dCBldmVudC4KKyAqIEZvciBleGFtcGxlLCB0aGUgbmF0dXJlIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBtb3Rpb24gZXZlbnRzIHRoYXQgcmVwcmVzZW50IHRvdWNoZXMgYW5kCisgKiB0aG9zZSB0aGF0IHJlcHJlc2VudCB0cmFja2JhbGwgbW92ZXMuCisgKgorICogWFhYIFRoaXMgY29uY2VwdCBpcyB0ZW50YXRpdmUuICBBbm90aGVyIGlkZWEgd291bGQgYmUgdG8gYXNzb2NpYXRlIGV2ZW50cyB3aXRoIGxvZ2ljYWwKKyAqICAgICBjb250cm9sbGVycyByYXRoZXIgdGhhbiBwaHlzaWNhbCBkZXZpY2VzLiAgIFRoZSBpbnRlcnByZXRhdGlvbiBvZiBhbiBldmVudCB3b3VsZAorICogICAgIGJlIG1hZGUgd2l0aCByZXNwZWN0IHRvIHRoZSBuYXR1cmUgb2YgdGhlIGNvbnRyb2xsZXIgdGhhdCBpcyBjb25zaWRlcmVkIHRoZSBsb2dpY2FsCisgKiAgICAgc291cmNlIG9mIGFuIGV2ZW50LiAgVGhlIGRlY291cGxpbmcgaXMgYmVuZWZpY2lhbCBzaW5jZSBtdWx0aXBsZSBwaHlzaWNhbCAoYW5kIHZpcnR1YWwpCisgKiAgICAgZGV2aWNlcyBjb3VsZCBiZSByZXNwb25zaWJsZSBmb3IgcHJvZHVjaW5nIGV2ZW50cyB0aGF0IHdvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aAorICogICAgIHZhcmlvdXMgbG9naWNhbCBjb250cm9sbGVycy4gIEZvciBleGFtcGxlLCB0aGUgaGFyZCBrZXlib2FyZCwgb24gc2NyZWVuIGtleWJvYXJkLAorICogICAgIGFuZCBwZXJpcGhlcmFsIGtleWJvYXJkIGNvdWxkIGJlIG1hcHBlZCBvbnRvIGEgc2luZ2xlIGxvZ2ljYWwgImtleWJvYXJkIiBjb250cm9sbGVyCisgKiAgICAgKG9yIHRyZWF0ZWQgaW5kZXBlbmRlbnRseSwgaWYgZGVzaXJlZCkuCisgKi8KK2VudW0geworICAgIElOUFVUX0VWRU5UX05BVFVSRV9LRVkgPSAxLAorICAgIElOUFVUX0VWRU5UX05BVFVSRV9UT1VDSCA9IDIsCisgICAgSU5QVVRfRVZFTlRfTkFUVVJFX1RSQUNLQkFMTCA9IDMKK307CisKKy8qCisgKiBJbnB1dCBldmVudCBhY2Nlc3NvcnMuCisgKgorICogTm90ZSB0aGF0IG1vc3QgZnVuY3Rpb25zIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5wdXQgZXZlbnRzIHRoYXQgYXJlIG9mIGEgZ2l2ZW4gdHlwZS4KKyAqIENhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIG9uIGlucHV0IGV2ZW50cyBvZiBvdGhlciB0eXBlcyB3aWxsIHlpZWxkIHVuZGVmaW5lZCBiZWhhdmlvci4KKyAqLworCisvKioqIEFjY2Vzc29ycyBmb3IgYWxsIGlucHV0IGV2ZW50cy4gKioqLworCisvKiBHZXQgdGhlIGlucHV0IGV2ZW50IHR5cGUuICovCitpbnQzMl90IEFJbnB1dEV2ZW50X2dldFR5cGUoY29uc3QgQUlucHV0RXZlbnQqIGV2ZW50KTsKKworLyogR2V0IHRoZSBpZCBmb3IgdGhlIGRldmljZSB0aGF0IGFuIGlucHV0IGV2ZW50IGNhbWUgZnJvbS4KKyAqCisgKiBJbnB1dCBldmVudHMgY2FuIGJlIGdlbmVyYXRlZCBieSBtdWx0aXBsZSBkaWZmZXJlbnQgaW5wdXQgZGV2aWNlcy4KKyAqIFVzZSB0aGUgaW5wdXQgZGV2aWNlIGlkIHRvIG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5wdXQKKyAqIGRldmljZSB0aGF0IHdhcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyBhIHBhcnRpY3VsYXIgZXZlbnQuCisgKgorICogQW4gaW5wdXQgZGV2aWNlIGlkIG9mIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGV2ZW50IGRpZG4ndCBjb21lIGZyb20gYSBwaHlzaWNhbCBkZXZpY2U7CisgKiBvdGhlciBudW1iZXJzIGFyZSBhcmJpdHJhcnkgYW5kIHlvdSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoZSB2YWx1ZXMuCisgKiBVc2UgdGhlIHByb3ZpZGVkIGlucHV0IGRldmljZSBxdWVyeSBBUEkgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IGlucHV0IGRldmljZXMuCisgKi8KK2ludDMyX3QgQUlucHV0RXZlbnRfZ2V0RGV2aWNlSWQoY29uc3QgQUlucHV0RXZlbnQqIGV2ZW50KTsKKworLyogR2V0IHRoZSBpbnB1dCBldmVudCBuYXR1cmUuICovCitpbnQzMl90IEFJbnB1dEV2ZW50X2dldE5hdHVyZShjb25zdCBBSW5wdXRFdmVudCogZXZlbnQpOworCisvKioqIEFjY2Vzc29ycyBmb3Iga2V5IGV2ZW50cyBvbmx5LiAqKiovCisKKy8qIEdldCB0aGUga2V5IGV2ZW50IGFjdGlvbi4gKi8KK2ludDMyX3QgQUtleUV2ZW50X2dldEFjdGlvbihjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KTsKKworLyogR2V0IHRoZSBrZXkgZXZlbnQgZmxhZ3MuICovCitpbnQzMl90IEFLZXlFdmVudF9nZXRGbGFncyhjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KTsKKworLyogR2V0IHRoZSBrZXkgY29kZSBvZiB0aGUga2V5IGV2ZW50LgorICogVGhpcyBpcyB0aGUgcGh5c2ljYWwga2V5IHRoYXQgd2FzIHByZXNzZWQsIG5vdCB0aGUgVW5pY29kZSBjaGFyYWN0ZXIuICovCitpbnQzMl90IEFLZXlFdmVudF9nZXRLZXlDb2RlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpOworCisvKiBHZXQgdGhlIGhhcmR3YXJlIGtleSBpZCBvZiB0aGlzIGtleSBldmVudC4KKyAqIFRoZXNlIHZhbHVlcyBhcmUgbm90IHJlbGlhYmxlIGFuZCB2YXJ5IGZyb20gZGV2aWNlIHRvIGRldmljZS4gKi8KK2ludDMyX3QgQUtleUV2ZW50X2dldFNjYW5Db2RlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpOworCisvKiBHZXQgdGhlIG1ldGEga2V5IHN0YXRlLiAqLworaW50MzJfdCBBS2V5RXZlbnRfZ2V0TWV0YVN0YXRlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpOworCisvKiBHZXQgdGhlIHJlcGVhdCBjb3VudCBvZiB0aGUgZXZlbnQuCisgKiBGb3IgYm90aCBrZXkgdXAgYW4ga2V5IGRvd24gZXZlbnRzLCB0aGlzIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGtleSBoYXMKKyAqIHJlcGVhdGVkIHdpdGggdGhlIGZpcnN0IGRvd24gc3RhcnRpbmcgYXQgMCBhbmQgY291bnRpbmcgdXAgZnJvbSB0aGVyZS4gIEZvcgorICogbXVsdGlwbGUga2V5IGV2ZW50cywgdGhpcyBpcyB0aGUgbnVtYmVyIG9mIGRvd24vdXAgcGFpcnMgdGhhdCBoYXZlIG9jY3VycmVkLiAqLworaW50MzJfdCBBS2V5RXZlbnRfZ2V0UmVwZWF0Q291bnQoY29uc3QgQUlucHV0RXZlbnQqIGtleV9ldmVudCk7CisKKy8qIEdldCB0aGUgdGltZSBvZiB0aGUgbW9zdCByZWNlbnQga2V5IGRvd24gZXZlbnQsIGluIHRoZQorICogamF2YS5sYW5nLlN5c3RlbS5uYW5vVGltZSgpIHRpbWUgYmFzZS4gIElmIHRoaXMgaXMgYSBkb3duIGV2ZW50LAorICogdGhpcyB3aWxsIGJlIHRoZSBzYW1lIGFzIGV2ZW50VGltZS4KKyAqIE5vdGUgdGhhdCB3aGVuIGNob3JkaW5nIGtleXMsIHRoaXMgdmFsdWUgaXMgdGhlIGRvd24gdGltZSBvZiB0aGUgbW9zdCByZWNlbnRseQorICogcHJlc3NlZCBrZXksIHdoaWNoIG1heSBub3QgYmUgdGhlIHNhbWUgcGh5c2ljYWwga2V5IG9mIHRoaXMgZXZlbnQuICovCitpbnQ2NF90IEFLZXlFdmVudF9nZXREb3duVGltZShjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KTsKKworLyogR2V0IHRoZSB0aW1lIHRoaXMgZXZlbnQgb2NjdXJyZWQsIGluIHRoZQorICogamF2YS5sYW5nLlN5c3RlbS5uYW5vVGltZSgpIHRpbWUgYmFzZS4gKi8KK2ludDY0X3QgQUtleUV2ZW50X2dldEV2ZW50VGltZShjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KTsKKworLyoqKiBBY2Nlc3NvcnMgZm9yIG1vdGlvbiBldmVudHMgb25seS4gKioqLworCisvKiBHZXQgdGhlIGNvbWJpbmVkIG1vdGlvbiBldmVudCBhY3Rpb24gY29kZSBhbmQgcG9pbnRlciBpbmRleC4gKi8KK2ludDMyX3QgQU1vdGlvbkV2ZW50X2dldEFjdGlvbihjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KTsKKworLyogR2V0IHRoZSBzdGF0ZSBvZiBhbnkgbWV0YSAvIG1vZGlmaWVyIGtleXMgdGhhdCB3ZXJlIGluIGVmZmVjdCB3aGVuIHRoZQorICogZXZlbnQgd2FzIGdlbmVyYXRlZC4gKi8KK2ludDMyX3QgQU1vdGlvbkV2ZW50X2dldE1ldGFTdGF0ZShjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KTsKKworLyogR2V0IGEgYml0ZmllbGQgaW5kaWNhdGluZyB3aGljaCBlZGdlcywgaWYgYW55LCB3ZXJlIHRvdWNoZWQgYnkgdGhpcyBtb3Rpb24gZXZlbnQuCisgKiBGb3IgdG91Y2ggZXZlbnRzLCBjbGllbnRzIGNhbiB1c2UgdGhpcyB0byBkZXRlcm1pbmUgaWYgdGhlIHVzZXIncyBmaW5nZXIgd2FzCisgKiB0b3VjaGluZyB0aGUgZWRnZSBvZiB0aGUgZGlzcGxheS4gKi8KK2ludDMyX3QgQU1vdGlvbkV2ZW50X2dldEVkZ2VGbGFncyhjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KTsKKworLyogR2V0IHRoZSB0aW1lIHdoZW4gdGhlIHVzZXIgb3JpZ2luYWxseSBwcmVzc2VkIGRvd24gdG8gc3RhcnQgYSBzdHJlYW0gb2YKKyAqIHBvc2l0aW9uIGV2ZW50cywgaW4gdGhlIGphdmEubGFuZy5TeXN0ZW0ubmFub1RpbWUoKSB0aW1lIGJhc2UuICovCitpbnQ2NF90IEFNb3Rpb25FdmVudF9nZXREb3duVGltZShjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KTsKKworLyogR2V0IHRoZSB0aW1lIHdoZW4gdGhpcyBzcGVjaWZpYyBldmVudCB3YXMgZ2VuZXJhdGVkLAorICogaW4gdGhlIGphdmEubGFuZy5TeXN0ZW0ubmFub1RpbWUoKSB0aW1lIGJhc2UuICovCitpbnQ2NF90IEFNb3Rpb25FdmVudF9nZXRFdmVudFRpbWUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCk7CisKKy8qIEdldCB0aGUgWCBjb29yZGluYXRlIG9mZnNldC4KKyAqIEZvciB0b3VjaCBldmVudHMgb24gdGhlIHNjcmVlbiwgdGhpcyBpcyB0aGUgZGVsdGEgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHJhdworICogc2NyZWVuIGNvb3JkaW5hdGVzIHRvIGFkanVzdCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHdpbmRvd3MKKyAqIGFuZCB2aWV3cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRYT2Zmc2V0KGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpOworCisvKiBHZXQgdGhlIHByZWNpc2lvbiBvZiB0aGUgWSBjb29yZGluYXRlcyBiZWluZyByZXBvcnRlZC4KKyAqIEZvciB0b3VjaCBldmVudHMgb24gdGhlIHNjcmVlbiwgdGhpcyBpcyB0aGUgZGVsdGEgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHJhdworICogc2NyZWVuIGNvb3JkaW5hdGVzIHRvIGFkanVzdCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHdpbmRvd3MKKyAqIGFuZCB2aWV3cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRZT2Zmc2V0KGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpOworCisvKiBHZXQgdGhlIHByZWNpc2lvbiBvZiB0aGUgWCBjb29yZGluYXRlcyBiZWluZyByZXBvcnRlZC4KKyAqIFlvdSBjYW4gbXVsdGlwbHkgdGhpcyBudW1iZXIgd2l0aCBhbiBYIGNvb3JkaW5hdGUgc2FtcGxlIHRvIGZpbmQgdGhlCisgKiBhY3R1YWwgaGFyZHdhcmUgdmFsdWUgb2YgdGhlIFggY29vcmRpbmF0ZS4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRYUHJlY2lzaW9uKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpOworCisvKiBHZXQgdGhlIHByZWNpc2lvbiBvZiB0aGUgWSBjb29yZGluYXRlcyBiZWluZyByZXBvcnRlZC4KKyAqIFlvdSBjYW4gbXVsdGlwbHkgdGhpcyBudW1iZXIgd2l0aCBhIFkgY29vcmRpbmF0ZSBzYW1wbGUgdG8gZmluZCB0aGUKKyAqIGFjdHVhbCBoYXJkd2FyZSB2YWx1ZSBvZiB0aGUgWSBjb29yZGluYXRlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFlQcmVjaXNpb24oY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCk7CisKKy8qIEdldCB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzIG9mIGRhdGEgY29udGFpbmVkIGluIHRoaXMgZXZlbnQuCisgKiBBbHdheXMgPj0gMS4gKi8KK3NpemVfdCBBTW90aW9uRXZlbnRfZ2V0UG9pbnRlckNvdW50KGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpOworCisvKiBHZXQgdGhlIHBvaW50ZXIgaWRlbnRpZmllciBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIHBvaW50ZXIKKyAqIGRhdGEgaW5kZXggaXMgdGhpcyBldmVudC4gIFRoZSBpZGVudGlmaWVyIHRlbGxzIHlvdSB0aGUgYWN0dWFsIHBvaW50ZXIKKyAqIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGRhdGEsIGFjY291bnRpbmcgZm9yIGluZGl2aWR1YWwgcG9pbnRlcnMKKyAqIGdvaW5nIHVwIGFuZCBkb3duIHNpbmNlIHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBnZXN0dXJlLiAqLworaW50MzJfdCBBTW90aW9uRXZlbnRfZ2V0UG9pbnRlcklkKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBvcmlnaW5hbCByYXcgWCBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQuCisgKiBGb3IgdG91Y2ggZXZlbnRzIG9uIHRoZSBzY3JlZW4sIHRoaXMgaXMgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBldmVudAorICogb24gdGhlIHNjcmVlbiwgYmVmb3JlIGl0IGhhZCBiZWVuIGFkanVzdGVkIGZvciB0aGUgY29udGFpbmluZyB3aW5kb3cKKyAqIGFuZCB2aWV3cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRSYXdYKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBvcmlnaW5hbCByYXcgWCBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQuCisgKiBGb3IgdG91Y2ggZXZlbnRzIG9uIHRoZSBzY3JlZW4sIHRoaXMgaXMgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBldmVudAorICogb24gdGhlIHNjcmVlbiwgYmVmb3JlIGl0IGhhZCBiZWVuIGFkanVzdGVkIGZvciB0aGUgY29udGFpbmluZyB3aW5kb3cKKyAqIGFuZCB2aWV3cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRSYXdZKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBjdXJyZW50IFggY29vcmRpbmF0ZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleC4KKyAqIFdob2xlIG51bWJlcnMgYXJlIHBpeGVsczsgdGhlIHZhbHVlIG1heSBoYXZlIGEgZnJhY3Rpb24gZm9yIGlucHV0IGRldmljZXMKKyAqIHRoYXQgYXJlIHN1Yi1waXhlbCBwcmVjaXNlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFgoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpOworCisvKiBHZXQgdGhlIGN1cnJlbnQgWSBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQgZm9yIHRoZSBnaXZlbiBwb2ludGVyIGluZGV4LgorICogV2hvbGUgbnVtYmVycyBhcmUgcGl4ZWxzOyB0aGUgdmFsdWUgbWF5IGhhdmUgYSBmcmFjdGlvbiBmb3IgaW5wdXQgZGV2aWNlcworICogdGhhdCBhcmUgc3ViLXBpeGVsIHByZWNpc2UuICovCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WShjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCk7CisKKy8qIEdldCB0aGUgY3VycmVudCBwcmVzc3VyZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleC4KKyAqIFRoZSBwcmVzc3VyZSBnZW5lcmFsbHkgcmFuZ2VzIGZyb20gMCAobm8gcHJlc3N1cmUgYXQgYWxsKSB0byAxIChub3JtYWwgcHJlc3N1cmUpLAorICogaG93ZXZlciB2YWx1ZXMgaGlnaGVyIHRoYW4gMSBtYXkgYmUgZ2VuZXJhdGVkIGRlcGVuZGluZyBvbiB0aGUgY2FsaWJyYXRpb24gb2YKKyAqIHRoZSBpbnB1dCBkZXZpY2UuICovCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0UHJlc3N1cmUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpOworCisvKiBHZXQgdGhlIGN1cnJlbnQgc2NhbGVkIHZhbHVlIG9mIHRoZSBhcHByb3hpbWF0ZSBzaXplIGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleC4KKyAqIFRoaXMgcmVwcmVzZW50cyBzb21lIGFwcHJveGltYXRpb24gb2YgdGhlIGFyZWEgb2YgdGhlIHNjcmVlbiBiZWluZworICogcHJlc3NlZDsgdGhlIGFjdHVhbCB2YWx1ZSBpbiBwaXhlbHMgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIHRvdWNoIGlzIG5vcm1hbGl6ZWQgd2l0aCB0aGUgZGV2aWNlIHNwZWNpZmljIHJhbmdlIG9mIHZhbHVlcworICogYW5kIHNjYWxlZCB0byBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4gIFRoZSB2YWx1ZSBvZiBzaXplIGNhbiBiZSB1c2VkIHRvCisgKiBkZXRlcm1pbmUgZmF0IHRvdWNoIGV2ZW50cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRTaXplKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBudW1iZXIgb2YgaGlzdG9yaWNhbCBwb2ludHMgaW4gdGhpcyBldmVudC4gIFRoZXNlIGFyZSBtb3ZlbWVudHMgdGhhdAorICogaGF2ZSBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBldmVudC4gIFRoaXMgb25seSBhcHBsaWVzCisgKiB0byBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUgZXZlbnRzIC0tIGFsbCBvdGhlciBhY3Rpb25zIHdpbGwgaGF2ZSBhIHNpemUgb2YgMC4KKyAqIEhpc3RvcmljYWwgc2FtcGxlcyBhcmUgaW5kZXhlZCBmcm9tIG9sZGVzdCB0byBuZXdlc3QuICovCitzaXplX3QgQU1vdGlvbkV2ZW50X2dldF9oaXN0b3J5X3NpemUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCk7CisKKy8qIEdldCB0aGUgdGltZSB0aGF0IGEgaGlzdG9yaWNhbCBtb3ZlbWVudCBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kCisgKiB0aGUgcHJldmlvdXMgZXZlbnQsIGluIHRoZSBqYXZhLmxhbmcuU3lzdGVtLm5hbm9UaW1lKCkgdGltZSBiYXNlLiAqLworaW50NjRfdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbEV2ZW50VGltZShBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LAorICAgICAgICBzaXplX3QgaGlzdG9yeV9pbmRleCk7CisKKy8qIEdldCB0aGUgaGlzdG9yaWNhbCByYXcgWCBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQgZm9yIHRoZSBnaXZlbiBwb2ludGVyIGluZGV4IHRoYXQKKyAqIG9jY3VycmVkIGJldHdlZW4gdGhpcyBldmVudCBhbmQgdGhlIHByZXZpb3VzIG1vdGlvbiBldmVudC4KKyAqIEZvciB0b3VjaCBldmVudHMgb24gdGhlIHNjcmVlbiwgdGhpcyBpcyB0aGUgb3JpZ2luYWwgbG9jYXRpb24gb2YgdGhlIGV2ZW50CisgKiBvbiB0aGUgc2NyZWVuLCBiZWZvcmUgaXQgaGFkIGJlZW4gYWRqdXN0ZWQgZm9yIHRoZSBjb250YWluaW5nIHdpbmRvdworICogYW5kIHZpZXdzLgorICogV2hvbGUgbnVtYmVycyBhcmUgcGl4ZWxzOyB0aGUgdmFsdWUgbWF5IGhhdmUgYSBmcmFjdGlvbiBmb3IgaW5wdXQgZGV2aWNlcworICogdGhhdCBhcmUgc3ViLXBpeGVsIHByZWNpc2UuICovCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbFJhd1goY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpOworCisvKiBHZXQgdGhlIGhpc3RvcmljYWwgcmF3IFkgY29vcmRpbmF0ZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleCB0aGF0CisgKiBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBtb3Rpb24gZXZlbnQuCisgKiBGb3IgdG91Y2ggZXZlbnRzIG9uIHRoZSBzY3JlZW4sIHRoaXMgaXMgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBldmVudAorICogb24gdGhlIHNjcmVlbiwgYmVmb3JlIGl0IGhhZCBiZWVuIGFkanVzdGVkIGZvciB0aGUgY29udGFpbmluZyB3aW5kb3cKKyAqIGFuZCB2aWV3cy4KKyAqIFdob2xlIG51bWJlcnMgYXJlIHBpeGVsczsgdGhlIHZhbHVlIG1heSBoYXZlIGEgZnJhY3Rpb24gZm9yIGlucHV0IGRldmljZXMKKyAqIHRoYXQgYXJlIHN1Yi1waXhlbCBwcmVjaXNlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxSYXdZKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBoaXN0b3JpY2FsIFggY29vcmRpbmF0ZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleCB0aGF0CisgKiBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBtb3Rpb24gZXZlbnQuCisgKiBXaG9sZSBudW1iZXJzIGFyZSBwaXhlbHM7IHRoZSB2YWx1ZSBtYXkgaGF2ZSBhIGZyYWN0aW9uIGZvciBpbnB1dCBkZXZpY2VzCisgKiB0aGF0IGFyZSBzdWItcGl4ZWwgcHJlY2lzZS4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRIaXN0b3JpY2FsWChBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCwKKyAgICAgICAgc2l6ZV90IGhpc3RvcnlfaW5kZXgpOworCisvKiBHZXQgdGhlIGhpc3RvcmljYWwgWSBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQgZm9yIHRoZSBnaXZlbiBwb2ludGVyIGluZGV4IHRoYXQKKyAqIG9jY3VycmVkIGJldHdlZW4gdGhpcyBldmVudCBhbmQgdGhlIHByZXZpb3VzIG1vdGlvbiBldmVudC4KKyAqIFdob2xlIG51bWJlcnMgYXJlIHBpeGVsczsgdGhlIHZhbHVlIG1heSBoYXZlIGEgZnJhY3Rpb24gZm9yIGlucHV0IGRldmljZXMKKyAqIHRoYXQgYXJlIHN1Yi1waXhlbCBwcmVjaXNlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxZKEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4LAorICAgICAgICBzaXplX3QgaGlzdG9yeV9pbmRleCk7CisKKy8qIEdldCB0aGUgaGlzdG9yaWNhbCBwcmVzc3VyZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleCB0aGF0CisgKiBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBtb3Rpb24gZXZlbnQuCisgKiBUaGUgcHJlc3N1cmUgZ2VuZXJhbGx5IHJhbmdlcyBmcm9tIDAgKG5vIHByZXNzdXJlIGF0IGFsbCkgdG8gMSAobm9ybWFsIHByZXNzdXJlKSwKKyAqIGhvd2V2ZXIgdmFsdWVzIGhpZ2hlciB0aGFuIDEgbWF5IGJlIGdlbmVyYXRlZCBkZXBlbmRpbmcgb24gdGhlIGNhbGlicmF0aW9uIG9mCisgKiB0aGUgaW5wdXQgZGV2aWNlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxQcmVzc3VyZShBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCwKKyAgICAgICAgc2l6ZV90IGhpc3RvcnlfaW5kZXgpOworCisvKiBHZXQgdGhlIGN1cnJlbnQgc2NhbGVkIHZhbHVlIG9mIHRoZSBhcHByb3hpbWF0ZSBzaXplIGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleCB0aGF0CisgKiBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBtb3Rpb24gZXZlbnQuCisgKiBUaGlzIHJlcHJlc2VudHMgc29tZSBhcHByb3hpbWF0aW9uIG9mIHRoZSBhcmVhIG9mIHRoZSBzY3JlZW4gYmVpbmcKKyAqIHByZXNzZWQ7IHRoZSBhY3R1YWwgdmFsdWUgaW4gcGl4ZWxzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgKiB0b3VjaCBpcyBub3JtYWxpemVkIHdpdGggdGhlIGRldmljZSBzcGVjaWZpYyByYW5nZSBvZiB2YWx1ZXMKKyAqIGFuZCBzY2FsZWQgdG8gYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuICBUaGUgdmFsdWUgb2Ygc2l6ZSBjYW4gYmUgdXNlZCB0bworICogZGV0ZXJtaW5lIGZhdCB0b3VjaCBldmVudHMuICovCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbFNpemUoQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgsCisgICAgICAgIHNpemVfdCBoaXN0b3J5X2luZGV4KTsKKworLyoKKyAqIElucHV0IHF1ZXVlCisgKgorICogQW4gaW5wdXQgcXVldWUgaXMgdGhlIGZhY2lsaXR5IHRocm91Z2ggd2hpY2ggeW91IHJldHJpZXZlIGlucHV0CisgKiBldmVudHMuCisgKi8KK3N0cnVjdCBBSW5wdXRRdWV1ZTsKK3R5cGVkZWYgc3RydWN0IEFJbnB1dFF1ZXVlIEFJbnB1dFF1ZXVlOworCisvKgorICogQWRkIHRoaXMgaW5wdXQgcXVldWUgdG8gYSBsb29wZXIgZm9yIHByb2Nlc3NpbmcuCisgKi8KK3ZvaWQgQUlucHV0UXVldWVfYXR0YWNoTG9vcGVyKEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUxvb3BlciogbG9vcGVyLAorICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyBjYWxsYmFjaywgdm9pZCogZGF0YSk7CisKKy8qCisgKiBSZW1vdmUgdGhlIGlucHV0IHF1ZXVlIGZyb20gdGhlIGxvb3BlciBpdCBpcyBjdXJyZW50bHkgYXR0YWNoZWQgdG8uCisgKi8KK3ZvaWQgQUlucHV0UXVldWVfZGV0YWNoTG9vcGVyKEFJbnB1dFF1ZXVlKiBxdWV1ZSk7CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIG9uZSBvciBtb3JlIGV2ZW50cyBhdmFpbGFibGUgaW4gdGhlCisgKiBpbnB1dCBxdWV1ZS4gIFJldHVybnMgMSBpZiB0aGUgcXVldWUgaGFzIGV2ZW50czsgMCBpZgorICogaXQgZG9lcyBub3QgaGF2ZSBldmVudHM7IGFuZCBhIG5lZ2F0aXZlIHZhbHVlIGlmIHRoZXJlIGlzIGFuIGVycm9yLgorICovCitpbnQgQUlucHV0UXVldWVfaGFzRXZlbnRzKEFJbnB1dFF1ZXVlKiBxdWV1ZSk7CisKKy8qCisgKiBSZXR1cm5zIHRoZSBuZXh0IGF2YWlsYWJsZSBldmVudCBmcm9tIHRoZSBxdWV1ZS4gIFJldHVybnMgYSBuZWdhdGl2ZQorICogdmFsdWUgaWYgbm8gZXZlbnRzIGFyZSBhdmFpbGFibGUgb3IgYW4gZXJyb3IgaGFzIG9jY3VycmVkLgorICovCitpbnQzMl90IEFJbnB1dFF1ZXVlX2dldEV2ZW50KEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUlucHV0RXZlbnQqKiBvdXRFdmVudCk7CisKKy8qCisgKiBSZXBvcnQgdGhhdCBkaXNwYXRjaGluZyBoYXMgZmluaXNoZWQgd2l0aCB0aGUgZ2l2ZW4gZXZlbnQuCisgKiBUaGlzIG11c3QgYmUgY2FsbGVkIGFmdGVyIHJlY2VpdmluZyBhbiBldmVudCB3aXRoIEFJbnB1dFF1ZXVlX2dldF9ldmVudCgpLgorICovCit2b2lkIEFJbnB1dFF1ZXVlX2ZpbmlzaEV2ZW50KEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUlucHV0RXZlbnQqIGV2ZW50LCBpbnQgaGFuZGxlZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBfQU5EUk9JRF9JTlBVVF9ICmRpZmYgLS1naXQgYS9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2tleWNvZGVzLmggYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2tleWNvZGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY4NTVjNQotLS0gL2Rldi9udWxsCisrKyBiL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQva2V5Y29kZXMuaApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX0FORFJPSURfS0VZQ09ERVNfSAorI2RlZmluZSBfQU5EUk9JRF9LRVlDT0RFU19ICisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBJTVBPUlRBTlQgTk9USUNFOgorICoKKyAqICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQW5kcm9pZCdzIHNldCBvZiBzdGFibGUgc3lzdGVtIGhlYWRlcnMKKyAqICAgZXhwb3NlZCBieSB0aGUgQW5kcm9pZCBOREsgKE5hdGl2ZSBEZXZlbG9wbWVudCBLaXQpLgorICoKKyAqICAgVGhpcmQtcGFydHkgc291cmNlIEFORCBiaW5hcnkgY29kZSByZWxpZXMgb24gdGhlIGRlZmluaXRpb25zCisgKiAgIGhlcmUgdG8gYmUgRlJPWkVOIE9OIEFMTCBVUENPTUlORyBQTEFURk9STSBSRUxFQVNFUy4KKyAqCisgKiAgIC0gRE8gTk9UIE1PRElGWSBFTlVNUyAoRVhDRVBUIElGIFlPVSBBREQgTkVXIDMyLUJJVCBWQUxVRVMpCisgKiAgIC0gRE8gTk9UIE1PRElGWSBDT05TVEFOVFMgT1IgRlVOQ1RJT05BTCBNQUNST1MKKyAqICAgLSBETyBOT1QgQ0hBTkdFIFRIRSBTSUdOQVRVUkUgT0YgRlVOQ1RJT05TIElOIEFOWSBXQVkKKyAqICAgLSBETyBOT1QgQ0hBTkdFIFRIRSBMQVlPVVQgT1IgU0laRSBPRiBTVFJVQ1RVUkVTCisgKi8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qCisgKiBLZXkgY29kZXMuCisgKgorICogWFhYOiBUaGUgZGVjbGFyYXRpb25zIGluIDx1aS9LZXljb2RlTGFiZWwuaD4gc2hvdWxkIGJlIHVwZGF0ZWQgdG8gdXNlIHRoZXNlIGluc3RlYWQuCisgKiAgICAgIFdlIHNob3VsZCBwcm9iYWJseSBtb3ZlIHRoaXMgaW50byBhbmRyb2lkL2tleWNvZGVzLmggYW5kIGFkZCBzb21lIG5ldyBBUEkgZm9yCisgKiAgICAgIGdldHRpbmcgbGFiZWxzIHNvIHRoYXQgd2UgY2FuIHJlbW92ZSB0aGUgb3RoZXIgdGFibGVzIGFsc28gaW4gS2V5Y29kZUxhYmVsLmguCisgKi8KK2VudW0geworICAgIEtFWUNPREVfVU5LTk9XTiAgICAgICAgID0gMCwKKyAgICBLRVlDT0RFX1NPRlRfTEVGVCAgICAgICA9IDEsCisgICAgS0VZQ09ERV9TT0ZUX1JJR0hUICAgICAgPSAyLAorICAgIEtFWUNPREVfSE9NRSAgICAgICAgICAgID0gMywKKyAgICBLRVlDT0RFX0JBQ0sgICAgICAgICAgICA9IDQsCisgICAgS0VZQ09ERV9DQUxMICAgICAgICAgICAgPSA1LAorICAgIEtFWUNPREVfRU5EQ0FMTCAgICAgICAgID0gNiwKKyAgICBLRVlDT0RFXzAgICAgICAgICAgICAgICA9IDcsCisgICAgS0VZQ09ERV8xICAgICAgICAgICAgICAgPSA4LAorICAgIEtFWUNPREVfMiAgICAgICAgICAgICAgID0gOSwKKyAgICBLRVlDT0RFXzMgICAgICAgICAgICAgICA9IDEwLAorICAgIEtFWUNPREVfNCAgICAgICAgICAgICAgID0gMTEsCisgICAgS0VZQ09ERV81ICAgICAgICAgICAgICAgPSAxMiwKKyAgICBLRVlDT0RFXzYgICAgICAgICAgICAgICA9IDEzLAorICAgIEtFWUNPREVfNyAgICAgICAgICAgICAgID0gMTQsCisgICAgS0VZQ09ERV84ICAgICAgICAgICAgICAgPSAxNSwKKyAgICBLRVlDT0RFXzkgICAgICAgICAgICAgICA9IDE2LAorICAgIEtFWUNPREVfU1RBUiAgICAgICAgICAgID0gMTcsCisgICAgS0VZQ09ERV9QT1VORCAgICAgICAgICAgPSAxOCwKKyAgICBLRVlDT0RFX0RQQURfVVAgICAgICAgICA9IDE5LAorICAgIEtFWUNPREVfRFBBRF9ET1dOICAgICAgID0gMjAsCisgICAgS0VZQ09ERV9EUEFEX0xFRlQgICAgICAgPSAyMSwKKyAgICBLRVlDT0RFX0RQQURfUklHSFQgICAgICA9IDIyLAorICAgIEtFWUNPREVfRFBBRF9DRU5URVIgICAgID0gMjMsCisgICAgS0VZQ09ERV9WT0xVTUVfVVAgICAgICAgPSAyNCwKKyAgICBLRVlDT0RFX1ZPTFVNRV9ET1dOICAgICA9IDI1LAorICAgIEtFWUNPREVfUE9XRVIgICAgICAgICAgID0gMjYsCisgICAgS0VZQ09ERV9DQU1FUkEgICAgICAgICAgPSAyNywKKyAgICBLRVlDT0RFX0NMRUFSICAgICAgICAgICA9IDI4LAorICAgIEtFWUNPREVfQSAgICAgICAgICAgICAgID0gMjksCisgICAgS0VZQ09ERV9CICAgICAgICAgICAgICAgPSAzMCwKKyAgICBLRVlDT0RFX0MgICAgICAgICAgICAgICA9IDMxLAorICAgIEtFWUNPREVfRCAgICAgICAgICAgICAgID0gMzIsCisgICAgS0VZQ09ERV9FICAgICAgICAgICAgICAgPSAzMywKKyAgICBLRVlDT0RFX0YgICAgICAgICAgICAgICA9IDM0LAorICAgIEtFWUNPREVfRyAgICAgICAgICAgICAgID0gMzUsCisgICAgS0VZQ09ERV9IICAgICAgICAgICAgICAgPSAzNiwKKyAgICBLRVlDT0RFX0kgICAgICAgICAgICAgICA9IDM3LAorICAgIEtFWUNPREVfSiAgICAgICAgICAgICAgID0gMzgsCisgICAgS0VZQ09ERV9LICAgICAgICAgICAgICAgPSAzOSwKKyAgICBLRVlDT0RFX0wgICAgICAgICAgICAgICA9IDQwLAorICAgIEtFWUNPREVfTSAgICAgICAgICAgICAgID0gNDEsCisgICAgS0VZQ09ERV9OICAgICAgICAgICAgICAgPSA0MiwKKyAgICBLRVlDT0RFX08gICAgICAgICAgICAgICA9IDQzLAorICAgIEtFWUNPREVfUCAgICAgICAgICAgICAgID0gNDQsCisgICAgS0VZQ09ERV9RICAgICAgICAgICAgICAgPSA0NSwKKyAgICBLRVlDT0RFX1IgICAgICAgICAgICAgICA9IDQ2LAorICAgIEtFWUNPREVfUyAgICAgICAgICAgICAgID0gNDcsCisgICAgS0VZQ09ERV9UICAgICAgICAgICAgICAgPSA0OCwKKyAgICBLRVlDT0RFX1UgICAgICAgICAgICAgICA9IDQ5LAorICAgIEtFWUNPREVfViAgICAgICAgICAgICAgID0gNTAsCisgICAgS0VZQ09ERV9XICAgICAgICAgICAgICAgPSA1MSwKKyAgICBLRVlDT0RFX1ggICAgICAgICAgICAgICA9IDUyLAorICAgIEtFWUNPREVfWSAgICAgICAgICAgICAgID0gNTMsCisgICAgS0VZQ09ERV9aICAgICAgICAgICAgICAgPSA1NCwKKyAgICBLRVlDT0RFX0NPTU1BICAgICAgICAgICA9IDU1LAorICAgIEtFWUNPREVfUEVSSU9EICAgICAgICAgID0gNTYsCisgICAgS0VZQ09ERV9BTFRfTEVGVCAgICAgICAgPSA1NywKKyAgICBLRVlDT0RFX0FMVF9SSUdIVCAgICAgICA9IDU4LAorICAgIEtFWUNPREVfU0hJRlRfTEVGVCAgICAgID0gNTksCisgICAgS0VZQ09ERV9TSElGVF9SSUdIVCAgICAgPSA2MCwKKyAgICBLRVlDT0RFX1RBQiAgICAgICAgICAgICA9IDYxLAorICAgIEtFWUNPREVfU1BBQ0UgICAgICAgICAgID0gNjIsCisgICAgS0VZQ09ERV9TWU0gICAgICAgICAgICAgPSA2MywKKyAgICBLRVlDT0RFX0VYUExPUkVSICAgICAgICA9IDY0LAorICAgIEtFWUNPREVfRU5WRUxPUEUgICAgICAgID0gNjUsCisgICAgS0VZQ09ERV9FTlRFUiAgICAgICAgICAgPSA2NiwKKyAgICBLRVlDT0RFX0RFTCAgICAgICAgICAgICA9IDY3LAorICAgIEtFWUNPREVfR1JBVkUgICAgICAgICAgID0gNjgsCisgICAgS0VZQ09ERV9NSU5VUyAgICAgICAgICAgPSA2OSwKKyAgICBLRVlDT0RFX0VRVUFMUyAgICAgICAgICA9IDcwLAorICAgIEtFWUNPREVfTEVGVF9CUkFDS0VUICAgID0gNzEsCisgICAgS0VZQ09ERV9SSUdIVF9CUkFDS0VUICAgPSA3MiwKKyAgICBLRVlDT0RFX0JBQ0tTTEFTSCAgICAgICA9IDczLAorICAgIEtFWUNPREVfU0VNSUNPTE9OICAgICAgID0gNzQsCisgICAgS0VZQ09ERV9BUE9TVFJPUEhFICAgICAgPSA3NSwKKyAgICBLRVlDT0RFX1NMQVNIICAgICAgICAgICA9IDc2LAorICAgIEtFWUNPREVfQVQgICAgICAgICAgICAgID0gNzcsCisgICAgS0VZQ09ERV9OVU0gICAgICAgICAgICAgPSA3OCwKKyAgICBLRVlDT0RFX0hFQURTRVRIT09LICAgICA9IDc5LAorICAgIEtFWUNPREVfRk9DVVMgICAgICAgICAgID0gODAsICAgLy8gKkNhbWVyYSogZm9jdXMKKyAgICBLRVlDT0RFX1BMVVMgICAgICAgICAgICA9IDgxLAorICAgIEtFWUNPREVfTUVOVSAgICAgICAgICAgID0gODIsCisgICAgS0VZQ09ERV9OT1RJRklDQVRJT04gICAgPSA4MywKKyAgICBLRVlDT0RFX1NFQVJDSCAgICAgICAgICA9IDg0LAorICAgIEtFWUNPREVfTUVESUFfUExBWV9QQVVTRT0gODUsCisgICAgS0VZQ09ERV9NRURJQV9TVE9QICAgICAgPSA4NiwKKyAgICBLRVlDT0RFX01FRElBX05FWFQgICAgICA9IDg3LAorICAgIEtFWUNPREVfTUVESUFfUFJFVklPVVMgID0gODgsCisgICAgS0VZQ09ERV9NRURJQV9SRVdJTkQgICAgPSA4OSwKKyAgICBLRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRCA9IDkwLAorICAgIEtFWUNPREVfTVVURSAgICAgICAgICAgID0gOTEsCisgICAgS0VZQ09ERV9QQUdFX1VQICAgICAgICAgPSA5MiwKKyAgICBLRVlDT0RFX1BBR0VfRE9XTiAgICAgICA9IDkzCisKKyAgICAvKiBOT1RFOiBJZiB5b3UgYWRkIGEgbmV3IGtleWNvZGUgaGVyZSB5b3UgbXVzdCBhbHNvIGFkZCBpdCB0bzoKKyAgICAgKiAgbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9rZXljb2Rlcy5oCisgICAgICogIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL3VpL0tleWNvZGVMYWJlbHMuaAorICAgICAqICAgZnJhbWV3b3Jrcy9iYXNlL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuamF2YQorICAgICAqICAgdG9vbHMvcHVwcGV0X21hc3Rlci9QdXBwZXRNYXN0ZXIubmF2X2tleXMucHkKKyAgICAgKiAgIGZyYW1ld29ya3MvYmFzZS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2F0dHJzLnhtbAorICAgICAqLworfTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIF9BTkRST0lEX0tFWUNPREVTX0gKZGlmZiAtLWdpdCBhL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvbG9vcGVyLmggYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2xvb3Blci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYTg5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2xvb3Blci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisKKyNpZm5kZWYgQU5EUk9JRF9MT09QRVJfSAorI2RlZmluZSBBTkRST0lEX0xPT1BFUl9ICisKKyNpbmNsdWRlIDxwb2xsLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworc3RydWN0IEFMb29wZXI7Cit0eXBlZGVmIHN0cnVjdCBBTG9vcGVyIEFMb29wZXI7CisKK3R5cGVkZWYgaW50IEFMb29wZXJfY2FsbGJhY2tGdW5jKGludCBmZCwgaW50IGV2ZW50cywgdm9pZCogZGF0YSk7CisKK0FMb29wZXIqIEFMb29wZXJfZm9yVGhyZWFkKCk7CisKK0FMb29wZXIqIEFMb29wZXJfcHJlcGFyZSgpOworCitpbnQzMl90IEFMb29wZXJfcG9sbE9uY2UoaW50IHRpbWVvdXRNaWxsaXMpOworCit2b2lkIEFMb29wZXJfYWNxdWlyZShBTG9vcGVyKiBsb29wZXIpOworCit2b2lkIEFMb29wZXJfcmVsZWFzZShBTG9vcGVyKiBsb29wZXIpOworCit2b2lkIEFMb29wZXJfc2V0Q2FsbGJhY2soQUxvb3BlciogbG9vcGVyLCBpbnQgZmQsIGludCBldmVudHMsCisgICAgICAgIEFMb29wZXJfY2FsbGJhY2tGdW5jKiBjYWxsYmFjaywgdm9pZCogZGF0YSk7CisKK2ludDMyX3QgQUxvb3Blcl9yZW1vdmVDYWxsYmFjayhBTG9vcGVyKiBsb29wZXIsIGludCBmZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfTsKKyNlbmRpZgorCisjZW5kaWYgLy8gQU5EUk9JRF9OQVRJVkVfV0lORE9XX0gKZGlmZiAtLWdpdCBhL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvbmF0aXZlX2FjdGl2aXR5LmggYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL25hdGl2ZV9hY3Rpdml0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMWM1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL25hdGl2ZV9hY3Rpdml0eS5oCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworCisjaWZuZGVmIEFORFJPSURfTkFUSVZFX0FDVElWSVRZX0gKKyNkZWZpbmUgQU5EUk9JRF9OQVRJVkVfQUNUSVZJVFlfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyNpbmNsdWRlIDxqbmkuaD4KKworI2luY2x1ZGUgPGFuZHJvaWQvaW5wdXQuaD4KKyNpbmNsdWRlIDxhbmRyb2lkL25hdGl2ZV93aW5kb3cuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitzdHJ1Y3QgQU5hdGl2ZUFjdGl2aXR5Q2FsbGJhY2tzOworCisvKioKKyAqIFRoaXMgc3RydWN0dXJlIGRlZmluZXMgdGhlIG5hdGl2ZSBzaWRlIG9mIGFuIGFuZHJvaWQuYXBwLk5hdGl2ZUFjdGl2aXR5LgorICogSXQgaXMgY3JlYXRlZCBieSB0aGUgZnJhbWV3b3JrLCBhbmQgaGFuZGVkIHRvIHRoZSBhcHBsaWNhdGlvbidzIG5hdGl2ZQorICogY29kZSBhcyBpdCBpcyBiZWluZyBsYXVuY2hlZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQU5hdGl2ZUFjdGl2aXR5IHsKKyAgICAvKioKKyAgICAgKiBQb2ludGVyIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0YWJsZSBvZiB0aGUgbmF0aXZlIGFwcGxpY2F0aW9uLgorICAgICAqIFlvdSBjYW4gc2V0IHRoZSBmdW5jdGlvbnMgaGVyZSB0byB5b3VyIG93biBjYWxsYmFja3MuICBUaGUgY2FsbGJhY2tzCisgICAgICogcG9pbnRlciBpdHNlbGYgaGVyZSBzaG91bGQgbm90IGJlIGNoYW5nZWQ7IGl0IGlzIGFsbG9jYXRlZCBhbmQgbWFuYWdlZAorICAgICAqIGZvciB5b3UgYnkgdGhlIGZyYW1ld29yay4KKyAgICAgKi8KKyAgICBzdHJ1Y3QgQU5hdGl2ZUFjdGl2aXR5Q2FsbGJhY2tzKiBjYWxsYmFja3M7CisKKyAgICAvKioKKyAgICAgKiBUaGUgZ2xvYmFsIGhhbmRsZSBvbiB0aGUgcHJvY2VzcydzIEphdmEgVk0uCisgICAgICovCisgICAgSmF2YVZNKiB2bTsKKworICAgIC8qKgorICAgICAqIEpOSSBjb250ZXh0IGZvciB0aGUgbWFpbiB0aHJlYWQgb2YgdGhlIGFwcC4gIE5vdGUgdGhhdCB0aGlzIGZpZWxkCisgICAgICogY2FuIE9OTFkgYmUgdXNlZCBmcm9tIHRoZSBtYWluIHRocmVhZCBvZiB0aGUgcHJvY2VzczsgdGhhdCBpcywgdGhlCisgICAgICogdGhyZWFkIHRoYXQgY2FsbHMgaW50byB0aGUgQU5hdGl2ZUFjdGl2aXR5Q2FsbGJhY2tzLgorICAgICAqLworICAgIEpOSUVudiogZW52OworCisgICAgLyoqCisgICAgICogVGhlIE5hdGl2ZUFjdGl2aXR5IEphdmEgY2xhc3MuCisgICAgICovCisgICAgam9iamVjdCBjbGF6ejsKKworICAgIC8qKgorICAgICAqIFBhdGggdG8gdGhpcyBhcHBsaWNhdGlvbidzIGludGVybmFsIGRhdGEgZGlyZWN0b3J5LgorICAgICAqLworICAgIGNvbnN0IGNoYXIqIGludGVybmFsRGF0YVBhdGg7CisgICAgCisgICAgLyoqCisgICAgICogUGF0aCB0byB0aGlzIGFwcGxpY2F0aW9uJ3MgZXh0ZXJuYWwgKHJlbW92YWJsZS9tb3VudGFibGUpIGRhdGEgZGlyZWN0b3J5LgorICAgICAqLworICAgIGNvbnN0IGNoYXIqIGV4dGVybmFsRGF0YVBhdGg7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIHBsYXRmb3JtJ3MgU0RLIHZlcnNpb24gY29kZS4KKyAgICAgKi8KKyAgICBpbnQzMl90IHNka1ZlcnNpb247CisgICAgCisgICAgLyoqCisgICAgICogVGhpcyBpcyB0aGUgbmF0aXZlIGluc3RhbmNlIG9mIHRoZSBhcHBsaWNhdGlvbi4gIEl0IGlzIG5vdCB1c2VkIGJ5CisgICAgICogdGhlIGZyYW1ld29yaywgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uIHRvIGl0cyBvd24gaW5zdGFuY2UKKyAgICAgKiBzdGF0ZS4KKyAgICAgKi8KKyAgICB2b2lkKiBpbnN0YW5jZTsKK30gQU5hdGl2ZUFjdGl2aXR5OworCisvKioKKyAqIFRoZXNlIGFyZSB0aGUgY2FsbGJhY2tzIHRoZSBmcmFtZXdvcmsgbWFrZXMgaW50byBhIG5hdGl2ZSBhcHBsaWNhdGlvbi4KKyAqIEFsbCBvZiB0aGVzZSBjYWxsYmFja3MgaGFwcGVuIG9uIHRoZSBtYWluIHRocmVhZCBvZiB0aGUgYXBwbGljYXRpb24uCisgKiBCeSBkZWZhdWx0LCBhbGwgY2FsbGJhY2tzIGFyZSBOVUxMOyBzZXQgdG8gYSBwb2ludGVyIHRvIHlvdXIgb3duIGZ1bmN0aW9uCisgKiB0byBoYXZlIGl0IGNhbGxlZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQU5hdGl2ZUFjdGl2aXR5Q2FsbGJhY2tzIHsKKyAgICAvKioKKyAgICAgKiBOYXRpdmVBY3Rpdml0eSBoYXMgc3RhcnRlZC4gIFNlZSBKYXZhIGRvY3VtZW50YXRpb24gZm9yIEFjdGl2aXR5Lm9uU3RhcnQoKQorICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAqLworICAgIHZvaWQgKCpvblN0YXJ0KShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBOYXRpdmVBY3Rpdml0eSBoYXMgcmVzdW1lZC4gIFNlZSBKYXZhIGRvY3VtZW50YXRpb24gZm9yIEFjdGl2aXR5Lm9uUmVzdW1lKCkKKyAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICB2b2lkICgqb25SZXN1bWUpKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpOworICAgIAorICAgIC8qKgorICAgICAqIEZyYW1ld29yayBpcyBhc2tpbmcgTmF0aXZlQWN0aXZpdHkgdG8gc2F2ZSBpdHMgY3VycmVudCBpbnN0YW5jZSBzdGF0ZS4KKyAgICAgKiBTZWUgSmF2YSBkb2N1bWVudGF0aW9uIGZvciBBY3Rpdml0eS5vblNhdmVJbnN0YW5jZVN0YXRlKCkgZm9yIG1vcmUKKyAgICAgKiBpbmZvcm1hdGlvbi4gIFRoZSByZXR1cm5lZCBwb2ludGVyIG5lZWRzIHRvIGJlIGNyZWF0ZWQgd2l0aCBtYWxsb2MoKTsKKyAgICAgKiB0aGUgZnJhbWV3b3JrIHdpbGwgY2FsbCBmcmVlKCkgb24gaXQgZm9yIHlvdS4gIFlvdSBhbHNvIG11c3QgZmlsbCBpbgorICAgICAqIG91dFNpemUgd2l0aCB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBhbGxvY2F0aW9uLiAgTm90ZSB0aGF0IHRoZQorICAgICAqIHNhdmVkIHN0YXRlIHdpbGwgYmUgcGVyc2lzdGVkLCBzbyBpdCBjYW4gbm90IGNvbnRhaW4gYW55IGFjdGl2ZQorICAgICAqIGVudGl0aWVzIChwb2ludGVycyB0byBtZW1vcnksIGZpbGUgZGVzY3JpcHRvcnMsIGV0YykuCisgICAgICovCisgICAgdm9pZCogKCpvblNhdmVJbnN0YW5jZVN0YXRlKShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBzaXplX3QqIG91dFNpemUpOworICAgIAorICAgIC8qKgorICAgICAqIE5hdGl2ZUFjdGl2aXR5IGhhcyBwYXVzZWQuICBTZWUgSmF2YSBkb2N1bWVudGF0aW9uIGZvciBBY3Rpdml0eS5vblBhdXNlKCkKKyAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICB2b2lkICgqb25QYXVzZSkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSk7CisgICAgCisgICAgLyoqCisgICAgICogTmF0aXZlQWN0aXZpdHkgaGFzIHN0b3BwZWQuICBTZWUgSmF2YSBkb2N1bWVudGF0aW9uIGZvciBBY3Rpdml0eS5vblN0b3AoKQorICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAqLworICAgIHZvaWQgKCpvblN0b3ApKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpOworICAgIAorICAgIC8qKgorICAgICAqIE5hdGl2ZUFjdGl2aXR5IGlzIGJlaW5nIGRlc3Ryb3llZC4gIFNlZSBKYXZhIGRvY3VtZW50YXRpb24gZm9yIEFjdGl2aXR5Lm9uRGVzdHJveSgpCisgICAgICogZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICovCisgICAgdm9pZCAoKm9uRGVzdHJveSkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSk7CisKKyAgICAvKioKKyAgICAgKiBGb2N1cyBoYXMgY2hhbmdlZCBpbiB0aGlzIE5hdGl2ZUFjdGl2aXR5J3Mgd2luZG93LiAgVGhpcyBpcyBvZnRlbiB1c2VkLAorICAgICAqIGZvciBleGFtcGxlLCB0byBwYXVzZSBhIGdhbWUgd2hlbiBpdCBsb3NlcyBpbnB1dCBmb2N1cy4KKyAgICAgKi8KKyAgICB2b2lkICgqb25XaW5kb3dGb2N1c0NoYW5nZWQpKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIGludCBoYXNGb2N1cyk7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIGRyYXdpbmcgd2luZG93IGZvciB0aGlzIG5hdGl2ZSBhY3Rpdml0eSBoYXMgYmVlbiBjcmVhdGVkLiAgWW91CisgICAgICogY2FuIHVzZSB0aGUgZ2l2ZW4gbmF0aXZlIHdpbmRvdyBvYmplY3QgdG8gc3RhcnQgZHJhd2luZy4KKyAgICAgKi8KKyAgICB2b2lkICgqb25OYXRpdmVXaW5kb3dDcmVhdGVkKShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBBTmF0aXZlV2luZG93KiB3aW5kb3cpOworCisgICAgLyoqCisgICAgICogVGhlIGRyYXdpbmcgd2luZG93IGZvciB0aGlzIG5hdGl2ZSBhY3Rpdml0eSBpcyBnb2luZyB0byBiZSBkZXN0cm95ZWQuCisgICAgICogWW91IE1VU1QgZW5zdXJlIHRoYXQgeW91IGRvIG5vdCB0b3VjaCB0aGUgd2luZG93IG9iamVjdCBhZnRlciByZXR1cm5pbmcKKyAgICAgKiBmcm9tIHRoaXMgZnVuY3Rpb246IGluIHRoZSBjb21tb24gY2FzZSBvZiBkcmF3aW5nIHRvIHRoZSB3aW5kb3cgZnJvbQorICAgICAqIGFub3RoZXIgdGhyZWFkLCB0aGF0IG1lYW5zIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNhbGxiYWNrIG11c3QKKyAgICAgKiBwcm9wZXJseSBzeW5jaHJvbml6ZSB3aXRoIHRoZSBvdGhlciB0aHJlYWQgdG8gc3RvcCBpdHMgZHJhd2luZyBiZWZvcmUKKyAgICAgKiByZXR1cm5pbmcgZnJvbSBoZXJlLgorICAgICAqLworICAgIHZvaWQgKCpvbk5hdGl2ZVdpbmRvd0Rlc3Ryb3llZCkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgQU5hdGl2ZVdpbmRvdyogd2luZG93KTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgaW5wdXQgcXVldWUgZm9yIHRoaXMgbmF0aXZlIGFjdGl2aXR5J3Mgd2luZG93IGhhcyBiZWVuIGNyZWF0ZWQuCisgICAgICogWW91IGNhbiB1c2UgdGhlIGdpdmVuIGlucHV0IHF1ZXVlIHRvIHN0YXJ0IHJldHJpZXZpbmcgaW5wdXQgZXZlbnRzLgorICAgICAqLworICAgIHZvaWQgKCpvbklucHV0UXVldWVDcmVhdGVkKShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBBSW5wdXRRdWV1ZSogcXVldWUpOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBpbnB1dCBxdWV1ZSBmb3IgdGhpcyBuYXRpdmUgYWN0aXZpdHkncyB3aW5kb3cgaXMgYmVpbmcgZGVzdHJveWVkLgorICAgICAqIFlvdSBzaG91bGQgbm8gbG9uZ2VyIHRyeSB0byByZWZlcmVuY2UgdGhpcyBvYmplY3QgdXBvbiByZXR1cm5pbmcgZnJvbSB0aGlzCisgICAgICogZnVuY3Rpb24uCisgICAgICovCisgICAgdm9pZCAoKm9uSW5wdXRRdWV1ZURlc3Ryb3llZCkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgQUlucHV0UXVldWUqIHF1ZXVlKTsKKworICAgIC8qKgorICAgICAqIFRoZSBzeXN0ZW0gaXMgcnVubmluZyBsb3cgb24gbWVtb3J5LiAgVXNlIHRoaXMgY2FsbGJhY2sgdG8gcmVsZWFzZQorICAgICAqIHJlc291cmNlcyB5b3UgZG8gbm90IG5lZWQsIHRvIGhlbHAgdGhlIHN5c3RlbSBhdm9pZCBraWxsaW5nIG1vcmUKKyAgICAgKiBpbXBvcnRhbnQgcHJvY2Vzc2VzLgorICAgICAqLworICAgIHZvaWQgKCpvbkxvd01lbW9yeSkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSk7Cit9IEFOYXRpdmVBY3Rpdml0eUNhbGxiYWNrczsKKworLyoqCisgKiBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IG11c3QgYmUgaW4gdGhlIG5hdGl2ZSBjb2RlIHRvIGluc3RhbnRpYXRlIHRoZQorICogYXBwbGljYXRpb24ncyBuYXRpdmUgYWN0aXZpdHkuICBJdCBpcyBjYWxsZWQgd2l0aCB0aGUgYWN0aXZpdHkgaW5zdGFuY2UgKHNlZQorICogYWJvdmUpOyBpZiB0aGUgY29kZSBpcyBiZWluZyBpbnN0YW50aWF0ZWQgZnJvbSBhIHByZXZpb3VzbHkgc2F2ZWQgaW5zdGFuY2UsCisgKiB0aGUgc2F2ZWRTdGF0ZSB3aWxsIGJlIG5vbi1OVUxMIGFuZCBwb2ludCB0byB0aGUgc2F2ZWQgZGF0YS4KKyAqLwordHlwZWRlZiB2b2lkIEFOYXRpdmVBY3Rpdml0eV9jcmVhdGVGdW5jKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksCisgICAgICAgIHZvaWQqIHNhdmVkU3RhdGUsIHNpemVfdCBzYXZlZFN0YXRlU2l6ZSk7CisKKy8qKgorICogVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgTmF0aXZlSW5zdGFuY2UgbG9va3MgZm9yIHdoZW4gbGF1bmNoaW5nIGl0cworICogbmF0aXZlIGNvZGUuCisgKi8KK2V4dGVybiBBTmF0aXZlQWN0aXZpdHlfY3JlYXRlRnVuYyBBTmF0aXZlQWN0aXZpdHlfb25DcmVhdGU7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfTsKKyNlbmRpZgorCisjZW5kaWYgLy8gQU5EUk9JRF9OQVRJVkVfQUNUSVZJVFlfSAorCmRpZmYgLS1naXQgYS9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL25hdGl2ZV93aW5kb3cuaCBiL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvbmF0aXZlX3dpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3OGJhM2QKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL25hdGl2ZV93aW5kb3cuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworCisjaWZuZGVmIEFORFJPSURfTkFUSVZFX1dJTkRPV19ICisjZGVmaW5lIEFORFJPSURfTkFUSVZFX1dJTkRPV19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoKKyAqIFBpeGVsIGZvcm1hdHMgdGhhdCBhIHdpbmRvdyBjYW4gdXNlLgorICovCitlbnVtIHsKKyAgICBXSU5ET1dfRk9STUFUX1JHQkFfODg4OCAgICAgICAgICA9IDEsCisgICAgV0lORE9XX0ZPUk1BVF9SR0JYXzg4ODggICAgICAgICAgPSAyLAorICAgIFdJTkRPV19GT1JNQVRfUkdCXzU2NSAgICAgICAgICAgID0gNCwKK307CisKK3N0cnVjdCBBTmF0aXZlV2luZG93OwordHlwZWRlZiBzdHJ1Y3QgQU5hdGl2ZVdpbmRvdyBBTmF0aXZlV2luZG93OworCisvKgorICogUmV0dXJuIHRoZSBjdXJyZW50IHdpZHRoIGluIHBpeGVscyBvZiB0aGUgd2luZG93IHN1cmZhY2UuICBSZXR1cm5zIGEKKyAqIG5lZ2F0aXZlIHZhbHVlIG9uIGVycm9yLgorICovCitpbnQzMl90IEFOYXRpdmVXaW5kb3dfZ2V0V2lkdGgoQU5hdGl2ZVdpbmRvdyogd2luZG93KTsKKworLyoKKyAqIFJldHVybiB0aGUgY3VycmVudCBoZWlnaHQgaW4gcGl4ZWxzIG9mIHRoZSB3aW5kb3cgc3VyZmFjZS4gIFJldHVybnMgYQorICogbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IuCisgKi8KK2ludDMyX3QgQU5hdGl2ZVdpbmRvd19nZXRIZWlnaHQoQU5hdGl2ZVdpbmRvdyogd2luZG93KTsKKworLyoKKyAqIFJldHVybiB0aGUgY3VycmVudCBwaXhlbCBmb3JtYXQgb2YgdGhlIHdpbmRvdyBzdXJmYWNlLiAgUmV0dXJucyBhCisgKiBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJvci4KKyAqLworaW50MzJfdCBBTmF0aXZlV2luZG93X2dldEZvcm1hdChBTmF0aXZlV2luZG93KiB3aW5kb3cpOworCisvKgorICogQ2hhbmdlIHRoZSBmb3JtYXQgYW5kIHNpemUgb2YgdGhlIHdpbmRvdyBidWZmZXJzLgorICoKKyAqIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IGNvbnRyb2wgdGhlIG51bWJlciBvZiBwaXhlbHMgaW4gdGhlIGJ1ZmZlcnMsIG5vdCB0aGUKKyAqIGRpbWVuc2lvbnMgb2YgdGhlIHdpbmRvdyBvbiBzY3JlZW4uICBJZiB0aGVzZSBhcmUgZGlmZmVyZW50IHRoYW4gdGhlCisgKiB3aW5kb3cncyBwaHlzaWNhbCBzaXplLCB0aGVuIGl0IGJ1ZmZlciB3aWxsIGJlIHNjYWxlZCB0byBtYXRjaCB0aGF0IHNpemUKKyAqIHdoZW4gY29tcG9zaXRpbmcgaXQgdG8gdGhlIHNjcmVlbi4KKyAqCisgKiBUaGUgZm9ybWF0IG1heSBiZSBvbmUgb2YgdGhlIHdpbmRvdyBmb3JtYXQgY29uc3RhbnRzIGFib3ZlLgorICoKKyAqIEZvciBhbGwgb2YgdGhlc2UgcGFyYW1ldGVycywgaWYgMCBpcyBzdXBwbGllZCB0aGFuIHRoZSB3aW5kb3cncyBiYXNlCisgKiB2YWx1ZSB3aWxsIGNvbWUgYmFjayBpbiBmb3JjZS4KKyAqLworaW50MzJfdCBBTmF0aXZlV2luZG93X3NldEJ1ZmZlcnNHZW9tZXRyeShBTmF0aXZlV2luZG93KiB3aW5kb3csIGludDMyX3Qgd2lkdGgsCisgICAgICAgIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGZvcm1hdCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfTsKKyNlbmRpZgorCisjZW5kaWYgLy8gQU5EUk9JRF9OQVRJVkVfV0lORE9XX0gKZGlmZiAtLWdpdCBhL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2wuaCBiL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2wuaAppbmRleCBjMjY5OTc2Li45OWVhMzQyIDEwMDY0NAotLS0gYS9vcGVuZ2wvaW5jbHVkZS9FR0wvZWdsLmgKKysrIGIvb3BlbmdsL2luY2x1ZGUvRUdML2VnbC5oCkBAIC0xLDcgKzEsNyBAQAogLyogLSotIG1vZGU6IGM7IHRhYi13aWR0aDogODsgLSotICovCiAvKiB2aTogc2V0IHN3PTQgdHM9ODogKi8KIC8qIFJlZmVyZW5jZSB2ZXJzaW9uIG9mIGVnbC5oIGZvciBFR0wgMS40LgotICogJFJldmlzaW9uOiA3MjQ0ICQgb24gJERhdGU6IDIwMDktMDEtMjAgMTc6MDY6NTkgLTA4MDAgKFR1ZSwgMjAgSmFuIDIwMDkpICQKKyAqICRSZXZpc2lvbjogOTM1NiAkIG9uICREYXRlOiAyMDA5LTEwLTIxIDAyOjUyOjI1IC0wNzAwIChXZWQsIDIxIE9jdCAyMDA5KSAkCiAgKi8KIAogLyoKQEAgLTEwOSw3ICsxMDksNiBAQAogI2RlZmluZSBFR0xfTkFUSVZFX1JFTkRFUkFCTEUJCTB4MzAyRAogI2RlZmluZSBFR0xfTkFUSVZFX1ZJU1VBTF9JRAkJMHgzMDJFCiAjZGVmaW5lIEVHTF9OQVRJVkVfVklTVUFMX1RZUEUJCTB4MzAyRgotI2RlZmluZSBFR0xfUFJFU0VSVkVEX1JFU09VUkNFUwkJMHgzMDMwCiAjZGVmaW5lIEVHTF9TQU1QTEVTCQkJMHgzMDMxCiAjZGVmaW5lIEVHTF9TQU1QTEVfQlVGRkVSUwkJMHgzMDMyCiAjZGVmaW5lIEVHTF9TVVJGQUNFX1RZUEUJCTB4MzAzMwpkaWZmIC0tZ2l0IGEvb3BlbmdsL2luY2x1ZGUvRUdML2VnbGV4dC5oIGIvb3BlbmdsL2luY2x1ZGUvRUdML2VnbGV4dC5oCmluZGV4IDU0NWZkMGUuLmIxMjExNTggMTAwNjQ0Ci0tLSBhL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2xleHQuaAorKysgYi9vcGVuZ2wvaW5jbHVkZS9FR0wvZWdsZXh0LmgKQEAgLTYsNyArNiw3IEBACiAjZW5kaWYKIAogLyoKLSoqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKyoqIENvcHlyaWdodCAoYykgMjAwNy0yMDEwIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KICoqCiAqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtMzQsOCArMzQsOCBAQAogCiAvKiBIZWFkZXIgZmlsZSB2ZXJzaW9uIG51bWJlciAqLwogLyogQ3VycmVudCB2ZXJzaW9uIGF0IGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvZWdsLyAqLwotLyogJFJldmlzaW9uOiA3MjQ0ICQgb24gJERhdGU6IDIwMDktMDEtMjAgMTc6MDY6NTkgLTA4MDAgKFR1ZSwgMjAgSmFuIDIwMDkpICQgKi8KLSNkZWZpbmUgRUdMX0VHTEVYVF9WRVJTSU9OIDMKKy8qICRSZXZpc2lvbjogMTEyNDkgJCBvbiAkRGF0ZTogMjAxMC0wNS0wNSAwOTo1NDoyOCAtMDcwMCAoV2VkLCAwNSBNYXkgMjAxMCkgJCAqLworI2RlZmluZSBFR0xfRUdMRVhUX1ZFUlNJT04gNQogCiAjaWZuZGVmIEVHTF9LSFJfY29uZmlnX2F0dHJpYnMKICNkZWZpbmUgRUdMX0tIUl9jb25maWdfYXR0cmlicyAxCkBAIC0xMjAsNiArMTIwLDM2IEBACiAjZGVmaW5lIEVHTF9HTF9SRU5ERVJCVUZGRVJfS0hSCQkJMHgzMEI5CS8qIGVnbENyZWF0ZUltYWdlS0hSIHRhcmdldCAqLwogI2VuZGlmCiAKKyNpZm5kZWYgRUdMX0tIUl9yZXVzYWJsZV9zeW5jCisjZGVmaW5lIEVHTF9LSFJfcmV1c2FibGVfc3luYyAxCisKK3R5cGVkZWYgdm9pZCogRUdMU3luY0tIUjsKK3R5cGVkZWYga2hyb25vc191dGltZV9uYW5vc2Vjb25kc190IEVHTFRpbWVLSFI7CisKKyNkZWZpbmUgRUdMX1NZTkNfU1RBVFVTX0tIUgkJCTB4MzBGMQorI2RlZmluZSBFR0xfU0lHTkFMRURfS0hSCQkJMHgzMEYyCisjZGVmaW5lIEVHTF9VTlNJR05BTEVEX0tIUgkJCTB4MzBGMworI2RlZmluZSBFR0xfVElNRU9VVF9FWFBJUkVEX0tIUgkJCTB4MzBGNQorI2RlZmluZSBFR0xfQ09ORElUSU9OX1NBVElTRklFRF9LSFIJCTB4MzBGNgorI2RlZmluZSBFR0xfU1lOQ19UWVBFX0tIUgkJCTB4MzBGNworI2RlZmluZSBFR0xfU1lOQ19SRVVTQUJMRV9LSFIJCQkweDMwRkEKKyNkZWZpbmUgRUdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklUX0tIUgkJMHgwMDAxCS8qIGVnbENsaWVudFdhaXRTeW5jS0hSIDxmbGFncz4gYml0ZmllbGQgKi8KKyNkZWZpbmUgRUdMX0ZPUkVWRVJfS0hSCQkJCTB4RkZGRkZGRkZGRkZGRkZGRnVsbAorI2RlZmluZSBFR0xfTk9fU1lOQ19LSFIJCQkJKChFR0xTeW5jS0hSKTApCisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkgRUdMU3luY0tIUiBFR0xBUElFTlRSWSBlZ2xDcmVhdGVTeW5jS0hSKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIHR5cGUsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOworRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsRGVzdHJveVN5bmNLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYyk7CitFR0xBUEkgRUdMaW50IEVHTEFQSUVOVFJZIGVnbENsaWVudFdhaXRTeW5jS0hSKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZUtIUiB0aW1lb3V0KTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFNpZ25hbFN5bmNLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMZW51bSBtb2RlKTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbEdldFN5bmNBdHRyaWJLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisjZW5kaWYgLyogRUdMX0VHTEVYVF9QUk9UT1RZUEVTICovCit0eXBlZGVmIEVHTFN5bmNLSFIgKEVHTEFQSUVOVFJZUCBQRk5FR0xDUkVBVEVTWU5DS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIHR5cGUsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMREVTVFJPWVNZTkNLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYyk7Cit0eXBlZGVmIEVHTGludCAoRUdMQVBJRU5UUllQIFBGTkVHTENMSUVOVFdBSVRTWU5DS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZUtIUiB0aW1lb3V0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFNJR05BTFNZTkNLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMZW51bSBtb2RlKTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZTkNBVFRSSUJLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisjZW5kaWYKKwogI2lmbmRlZiBFR0xfS0hSX2ltYWdlX2Jhc2UKICNkZWZpbmUgRUdMX0tIUl9pbWFnZV9iYXNlIDEKIC8qIE1vc3QgaW50ZXJmYWNlcyBkZWZpbmVkIGJ5IEVHTF9LSFJfaW1hZ2VfcGl4bWFwIGFib3ZlICovCkBAIC0xMzEsNiArMTYxLDY3IEBACiAvKiBJbnRlcmZhY2VzIGRlZmluZWQgYnkgRUdMX0tIUl9pbWFnZSBhYm92ZSAqLwogI2VuZGlmCiAKKyNpZm5kZWYgRUdMX0lNR19jb250ZXh0X3ByaW9yaXR5CisjZGVmaW5lIEVHTF9JTUdfY29udGV4dF9wcmlvcml0eSAxCisjZGVmaW5lIEVHTF9DT05URVhUX1BSSU9SSVRZX0xFVkVMX0lNRwkJMHgzMTAwCisjZGVmaW5lIEVHTF9DT05URVhUX1BSSU9SSVRZX0hJR0hfSU1HCQkweDMxMDEKKyNkZWZpbmUgRUdMX0NPTlRFWFRfUFJJT1JJVFlfTUVESVVNX0lNRwkJMHgzMTAyCisjZGVmaW5lIEVHTF9DT05URVhUX1BSSU9SSVRZX0xPV19JTUcJCTB4MzEwMworI2VuZGlmCisKKyNpZm5kZWYgRUdMX05WX2NvdmVyYWdlX3NhbXBsZQorI2RlZmluZSBFR0xfTlZfY292ZXJhZ2Vfc2FtcGxlIDEKKyNkZWZpbmUgRUdMX0NPVkVSQUdFX0JVRkZFUlNfTlYgMHgzMEUwCisjZGVmaW5lIEVHTF9DT1ZFUkFHRV9TQU1QTEVTX05WIDB4MzBFMQorI2VuZGlmCisKKyNpZm5kZWYgRUdMX05WX2RlcHRoX25vbmxpbmVhcgorI2RlZmluZSBFR0xfTlZfZGVwdGhfbm9ubGluZWFyIDEKKyNkZWZpbmUgRUdMX0RFUFRIX0VOQ09ESU5HX05WIDB4MzBFMgorI2RlZmluZSBFR0xfREVQVEhfRU5DT0RJTkdfTk9ORV9OViAwCisjZGVmaW5lIEVHTF9ERVBUSF9FTkNPRElOR19OT05MSU5FQVJfTlYgMHgzMEUzCisjZW5kaWYKKworI2lmbmRlZiBFR0xfTlZfc3luYworI2RlZmluZSBFR0xfTlZfc3luYyAxCisjZGVmaW5lIEVHTF9TWU5DX1BSSU9SX0NPTU1BTkRTX0NPTVBMRVRFX05WCTB4MzBFNgorI2RlZmluZSBFR0xfU1lOQ19TVEFUVVNfTlYJCQkweDMwRTcKKyNkZWZpbmUgRUdMX1NJR05BTEVEX05WCQkJCTB4MzBFOAorI2RlZmluZSBFR0xfVU5TSUdOQUxFRF9OVgkJCTB4MzBFOQorI2RlZmluZSBFR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVRfTlYJCTB4MDAwMQorI2RlZmluZSBFR0xfRk9SRVZFUl9OVgkJCQkweEZGRkZGRkZGRkZGRkZGRkZ1bGwKKyNkZWZpbmUgRUdMX0FMUkVBRFlfU0lHTkFMRURfTlYJCQkweDMwRUEKKyNkZWZpbmUgRUdMX1RJTUVPVVRfRVhQSVJFRF9OVgkJCTB4MzBFQgorI2RlZmluZSBFR0xfQ09ORElUSU9OX1NBVElTRklFRF9OVgkJMHgzMEVDCisjZGVmaW5lIEVHTF9TWU5DX1RZUEVfTlYJCQkweDMwRUQKKyNkZWZpbmUgRUdMX1NZTkNfQ09ORElUSU9OX05WCQkJMHgzMEVFCisjZGVmaW5lIEVHTF9TWU5DX0ZFTkNFX05WCQkJMHgzMEVGCisjZGVmaW5lIEVHTF9OT19TWU5DX05WCQkJCSgoRUdMU3luY05WKTApCit0eXBlZGVmIHZvaWQqIEVHTFN5bmNOVjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEVHTFRpbWVOVjsKKyNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKK0VHTFN5bmNOViBlZ2xDcmVhdGVGZW5jZVN5bmNOViAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gY29uZGl0aW9uLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKK0VHTEJvb2xlYW4gZWdsRGVzdHJveVN5bmNOViAoRUdMU3luY05WIHN5bmMpOworRUdMQm9vbGVhbiBlZ2xGZW5jZU5WIChFR0xTeW5jTlYgc3luYyk7CitFR0xpbnQgZWdsQ2xpZW50V2FpdFN5bmNOViAoRUdMU3luY05WIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZU5WIHRpbWVvdXQpOworRUdMQm9vbGVhbiBlZ2xTaWduYWxTeW5jTlYgKEVHTFN5bmNOViBzeW5jLCBFR0xlbnVtIG1vZGUpOworRUdMQm9vbGVhbiBlZ2xHZXRTeW5jQXR0cmliTlYgKEVHTFN5bmNOViBzeW5jLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKKyNlbmRpZiAvKiBFR0xfRUdMRVhUX1BST1RPVFlQRVMgKi8KK3R5cGVkZWYgRUdMU3luY05WIChFR0xBUElFTlRSWVAgUEZORUdMQ1JFQVRFRkVOQ0VTWU5DTlZQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gY29uZGl0aW9uLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTERFU1RST1lTWU5DTlZQUk9DKSAoRUdMU3luY05WIHN5bmMpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMRkVOQ0VOVlBST0MpIChFR0xTeW5jTlYgc3luYyk7Cit0eXBlZGVmIEVHTGludCAoRUdMQVBJRU5UUllQIFBGTkVHTENMSUVOVFdBSVRTWU5DTlZQUk9DKSAoRUdMU3luY05WIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZU5WIHRpbWVvdXQpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMU0lHTkFMU1lOQ05WUFJPQykgKEVHTFN5bmNOViBzeW5jLCBFR0xlbnVtIG1vZGUpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMR0VUU1lOQ0FUVFJJQk5WUFJPQykgKEVHTFN5bmNOViBzeW5jLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKKyNlbmRpZgorCisjaWZuZGVmIEVHTF9LSFJfZmVuY2Vfc3luYworI2RlZmluZSBFR0xfS0hSX2ZlbmNlX3N5bmMgMQorLyogUmV1c2VzIG1vc3QgdG9rZW5zIGFuZCBlbnRyeSBwb2ludHMgZnJvbSBFR0xfS0hSX3JldXNhYmxlX3N5bmMgKi8KKyNkZWZpbmUgRUdMX1NZTkNfUFJJT1JfQ09NTUFORFNfQ09NUExFVEVfS0hSCTB4MzBGMAorI2RlZmluZSBFR0xfU1lOQ19DT05ESVRJT05fS0hSCQkJMHgzMEY4CisjZGVmaW5lIEVHTF9TWU5DX0ZFTkNFX0tIUgkJCTB4MzBGOQorI2VuZGlmCiAKICNpZm5kZWYgRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlcgogI2RlZmluZSBFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyIDEKQEAgLTE1NCw3ICsyNDUsNiBAQAogdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMU0VUU1dBUFJFQ1RBTkdMRUFORFJPSURQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2UgZHJhdywgRUdMaW50IGxlZnQsIEVHTGludCB0b3AsIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CiAjZW5kaWYKIAotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvb3BlbmdsL2luY2x1ZGUvRUdML2VnbHBsYXRmb3JtLmggYi9vcGVuZ2wvaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaAppbmRleCA1M2U5ZTYxMTYuLjI1ZDc2OTcgMTAwNjQ0Ci0tLSBhL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCisrKyBiL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCkBAIC0yNSw3ICsyNSw3IEBACiAqLwogCiAvKiBQbGF0Zm9ybS1zcGVjaWZpYyB0eXBlcyBhbmQgZGVmaW5pdGlvbnMgZm9yIGVnbC5oCi0gKiAkUmV2aXNpb246IDcyNDQgJCBvbiAkRGF0ZTogMjAwOS0wMS0yMCAxNzowNjo1OSAtMDgwMCAoVHVlLCAyMCBKYW4gMjAwOSkgJAorICogJFJldmlzaW9uOiA5NzI0ICQgb24gJERhdGU6IDIwMDktMTItMDIgMDI6MDU6MzMgLTA4MDAgKFdlZCwgMDIgRGVjIDIwMDkpICQKICAqCiAgKiBBZG9wdGVycyBtYXkgbW9kaWZ5IGtocnBsYXRmb3JtLmggYW5kIHRoaXMgZmlsZSB0byBzdWl0IHRoZWlyIHBsYXRmb3JtLgogICogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIHN1Ym1pdCBhbGwgbW9kaWZpY2F0aW9ucyB0byB0aGUgS2hyb25vcyBncm91cCBzbyB0aGF0CkBAIC01MCw4ICs1MCwxMCBAQAogI2RlZmluZSBFR0xBUEkgS0hST05PU19BUElDQUxMCiAjZW5kaWYKIAorI2lmbmRlZiBFR0xBUElFTlRSWQogI2RlZmluZSBFR0xBUElFTlRSWSAgS0hST05PU19BUElFTlRSWQotI2RlZmluZSBFR0xBUElFTlRSWVAgS0hST05PU19BUElFTlRSWSoKKyNlbmRpZgorI2RlZmluZSBFR0xBUElFTlRSWVAgRUdMQVBJRU5UUlkqCiAKIC8qIFRoZSB0eXBlcyBOYXRpdmVEaXNwbGF5VHlwZSwgTmF0aXZlV2luZG93VHlwZSwgYW5kIE5hdGl2ZVBpeG1hcFR5cGUKICAqIGFyZSBhbGlhc2VzIG9mIHdpbmRvdy1zeXN0ZW0tZGVwZW5kZW50IHR5cGVzLCBzdWNoIGFzIFggRGlzcGxheSAqIG9yCkBAIC04OSwxMCArOTEsMTEgQEAKIAogI2VsaWYgZGVmaW5lZChBTkRST0lEKQogCi1zdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q7CisjaW5jbHVkZSA8YW5kcm9pZC9uYXRpdmVfd2luZG93Lmg+CisKIHN0cnVjdCBlZ2xfbmF0aXZlX3BpeG1hcF90OwogCi10eXBlZGVmIHN0cnVjdCBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogRUdMTmF0aXZlV2luZG93VHlwZTsKK3R5cGVkZWYgc3RydWN0IEFOYXRpdmVXaW5kb3cqICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlOwogdHlwZWRlZiBzdHJ1Y3QgZWdsX25hdGl2ZV9waXhtYXBfdCogICAgIEVHTE5hdGl2ZVBpeG1hcFR5cGU7CiB0eXBlZGVmIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlRGlzcGxheVR5cGU7CiAKZGlmZiAtLWdpdCBhL29wZW5nbC9pbmNsdWRlL0dMRVMvZ2wuaCBiL29wZW5nbC9pbmNsdWRlL0dMRVMvZ2wuaAppbmRleCAyZThiOTcxLi41YjhkODVhIDEwMDY0NAotLS0gYS9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dsLmgKKysrIGIvb3BlbmdsL2luY2x1ZGUvR0xFUy9nbC5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsX2hfCiAjZGVmaW5lIF9fZ2xfaF8KIAotLyogJFJldmlzaW9uOiA3MTcyICQgb24gJERhdGU6OiAyMDA5LTAxLTA5IDExOjE3OjQxIC0wODAwICMkICovCisvKiAkUmV2aXNpb246IDEwNjAxICQgb24gJERhdGU6OiAyMDEwLTAzLTA0IDIyOjE1OjI3IC0wODAwICMkICovCiAKICNpbmNsdWRlIDxHTEVTL2dscGxhdGZvcm0uaD4KIApAQCAtMTUsNiArMTUsNyBAQAogICovCiAKIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICBHTHZvaWQ7Cit0eXBlZGVmIGNoYXIgICAgICAgICAgICAgR0xjaGFyOwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgIEdMZW51bTsKIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgICBHTGJvb2xlYW47CiB0eXBlZGVmIHVuc2lnbmVkIGludCAgICAgR0xiaXRmaWVsZDsKQEAgLTY3OCw3ICs2NzksNyBAQAogR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VydiAoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKIEdMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0TGlnaHR4diAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcyk7CiBHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldE1hdGVyaWFseHYgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcyk7Ci1HTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBvaW50ZXJ2IChHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQb2ludGVydiAoR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwYXJhbXMpOwogR0xfQVBJIGNvbnN0IEdMdWJ5dGUgKiBHTF9BUElFTlRSWSBnbEdldFN0cmluZyAoR0xlbnVtIG5hbWUpOwogR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUZXhFbnZpdiAoR0xlbnVtIGVudiwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKIEdMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4RW52eHYgKEdMZW51bSBlbnYsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKTsKZGlmZiAtLWdpdCBhL29wZW5nbC9pbmNsdWRlL0dMRVMvZ2xleHQuaCBiL29wZW5nbC9pbmNsdWRlL0dMRVMvZ2xleHQuaAppbmRleCBhOGZlMmU5Li5hNWIzZWFkIDEwMDY0NAotLS0gYS9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dsZXh0LmgKKysrIGIvb3BlbmdsL2luY2x1ZGUvR0xFUy9nbGV4dC5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsZXh0X2hfCiAjZGVmaW5lIF9fZ2xleHRfaF8KIAotLyogJFJldmlzaW9uOiA3MTcyICQgb24gJERhdGU6OiAyMDA5LTAxLTA5IDExOjE3OjQxIC0wODAwICMkICovCisvKiAkUmV2aXNpb246IDEwOTY1ICQgb24gJERhdGU6OiAyMDEwLTA0LTA5IDAyOjExOjI5IC0wNzAwICMkICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC02OCw2ICs2OCwxMSBAQAogdHlwZWRlZiB2b2lkKiBHTGVnbEltYWdlT0VTOwogI2VuZGlmCiAKKy8qIEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQgKi8KKyNpZm5kZWYgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludAorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQwNQorI2VuZGlmCisKIC8qIEdMX09FU19maXhlZF9wb2ludCAqLwogI2lmbmRlZiBHTF9PRVNfZml4ZWRfcG9pbnQKICNkZWZpbmUgR0xfRklYRURfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MEMKQEAgLTIwMSw2ICsyMDYsMTYgQEAKICNkZWZpbmUgR0xfTUlSUk9SRURfUkVQRUFUX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzNzAKICNlbmRpZgogCisvKiBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCAqLworI2lmbmRlZiBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAorI2RlZmluZSBHTF9WRVJURVhfQVJSQVlfQklORElOR19PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODVCNQorI2VuZGlmCisKKy8qIEdMX09FU190ZXh0dXJlX2V4dGVybmFsICovCisjaWZuZGVmIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTCisjZGVmaW5lIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDY1CisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBBTUQgZXh0ZW5zaW9uIHRva2VucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjE5LDE1ICsyMzQsMTkxIEBACiAjZW5kaWYKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBBUFBMRSBleHRlbnNpb24gdG9rZW5zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdMX0FQUExFX3RleHR1cmVfMkRfbGltaXRlZF9ucG90ICovCisvKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogRVhUIGV4dGVuc2lvbiB0b2tlbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAorLyogR0xfRVhUX2JsZW5kX21pbm1heCAqLworI2lmbmRlZiBHTF9FWFRfYmxlbmRfbWlubWF4CisjZGVmaW5lIEdMX01JTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA3CisjZGVmaW5lIEdMX01BWF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA4CisjZW5kaWYKKworLyogR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgKi8KKyNpZm5kZWYgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKKyNkZWZpbmUgR0xfQ09MT1JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDAKKyNkZWZpbmUgR0xfREVQVEhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDEKKyNkZWZpbmUgR0xfU1RFTkNJTF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDIKKyNlbmRpZgorCisvKiBHTF9FWFRfbXVsdGlfZHJhd19hcnJheXMgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KKyNpZm5kZWYgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKyNkZWZpbmUgR0xfQkdSQV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjUKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjYKKyNlbmRpZgorCiAvKiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgKi8KICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCiAjZGVmaW5lIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZFCiAjZGVmaW5lIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZGCiAjZW5kaWYKIAorLyogR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorI2RlZmluZSBHTF9CR1JBX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODBFMQorI2VuZGlmCisKKy8qIEdMX0VYVF90ZXh0dXJlX2xvZF9iaWFzICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2xvZF9iaWFzCisjZGVmaW5lIEdMX01BWF9URVhUVVJFX0xPRF9CSUFTX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZECisjZGVmaW5lIEdMX1RFWFRVUkVfRklMVEVSX0NPTlRST0xfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NTAwCisjZGVmaW5lIEdMX1RFWFRVUkVfTE9EX0JJQVNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NTAxCisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBJTUcgZXh0ZW5zaW9uIHRva2VucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBHTF9JTUdfcmVhZF9mb3JtYXQgKi8KKyNpZm5kZWYgR0xfSU1HX3JlYWRfZm9ybWF0CisjZGVmaW5lIEdMX0JHUkFfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MEUxCisjZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0lNRyAgICAgICAgICAgICAgICAgICAgICAgMHg4MzY1CisjZW5kaWYKKworLyogR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMgKi8KKyNpZm5kZWYgR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyAgICAgICAgICAgICAgICAgICAgICAweDhDMDAKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyAgICAgICAgICAgICAgICAgICAgICAweDhDMDEKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgICAgICAgICAgICAgICAgICAgICAweDhDMDIKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcgICAgICAgICAgICAgICAgICAgICAweDhDMDMKKyNlbmRpZgorCisvKiBHTF9JTUdfdGV4dHVyZV9lbnZfZW5oYW5jZWRfZml4ZWRfZnVuY3Rpb24gKi8KKyNpZm5kZWYgR0xfSU1HX3RleHR1cmVfZW52X2VuaGFuY2VkX2ZpeGVkX2Z1bmN0aW9uCisjZGVmaW5lIEdMX01PRFVMQVRFX0NPTE9SX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA0CisjZGVmaW5lIEdMX1JFQ0lQX0FERF9TSUdORURfQUxQSEFfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA1CisjZGVmaW5lIEdMX1RFWFRVUkVfQUxQSEFfTU9EVUxBVEVfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA2CisjZGVmaW5lIEdMX0ZBQ1RPUl9BTFBIQV9NT0RVTEFURV9JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA3CisjZGVmaW5lIEdMX0ZSQUdNRU5UX0FMUEhBX01PRFVMQVRFX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA4CisjZGVmaW5lIEdMX0FERF9CTEVORF9JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA5CisjZGVmaW5lIEdMX0RPVDNfUkdCQV9JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NkFGCisjZW5kaWYKKworLyogR0xfSU1HX3VzZXJfY2xpcF9wbGFuZSAqLworI2lmbmRlZiBHTF9JTUdfdXNlcl9jbGlwX3BsYW5lCisjZGVmaW5lIEdMX0NMSVBfUExBTkUwX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAwCisjZGVmaW5lIEdMX0NMSVBfUExBTkUxX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAxCisjZGVmaW5lIEdMX0NMSVBfUExBTkUyX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAyCisjZGVmaW5lIEdMX0NMSVBfUExBTkUzX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAzCisjZGVmaW5lIEdMX0NMSVBfUExBTkU0X0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDA0CisjZGVmaW5lIEdMX0NMSVBfUExBTkU1X0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDA1CisjZGVmaW5lIEdMX01BWF9DTElQX1BMQU5FU19JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRDMyCisjZW5kaWYKKworLyogR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAqLworI2lmbmRlZiBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTMzCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HICAgICAgICAgICAgICAgMHg5MTM0CisjZGVmaW5lIEdMX01BWF9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM1CisjZGVmaW5lIEdMX1RFWFRVUkVfU0FNUExFU19JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM2CisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBOViBleHRlbnNpb24gdG9rZW5zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdMX05WX2ZlbmNlICovCisjaWZuZGVmIEdMX05WX2ZlbmNlCisjZGVmaW5lIEdMX0FMTF9DT01QTEVURURfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEYyCisjZGVmaW5lIEdMX0ZFTkNFX1NUQVRVU19OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEYzCisjZGVmaW5lIEdMX0ZFTkNFX0NPTkRJVElPTl9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEY0CisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBRQ09NIGV4dGVuc2lvbiB0b2tlbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogR0xfUUNPTV9kcml2ZXJfY29udHJvbCAqLworLyogTm8gbmV3IHRva2VucyBpbnRyb2R1Y2VkIGJ5IHRoaXMgZXh0ZW5zaW9uLiAqLworCisvKiBHTF9RQ09NX2V4dGVuZGVkX2dldCAqLworI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldAorI2RlZmluZSBHTF9URVhUVVJFX1dJRFRIX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEMgorI2RlZmluZSBHTF9URVhUVVJFX0hFSUdIVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEMworI2RlZmluZSBHTF9URVhUVVJFX0RFUFRIX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJENAorI2RlZmluZSBHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJENQorI2RlZmluZSBHTF9URVhUVVJFX0ZPUk1BVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJENgorI2RlZmluZSBHTF9URVhUVVJFX1RZUEVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJENworI2RlZmluZSBHTF9URVhUVVJFX0lNQUdFX1ZBTElEX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEOAorI2RlZmluZSBHTF9URVhUVVJFX05VTV9MRVZFTFNfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEOQorI2RlZmluZSBHTF9URVhUVVJFX1RBUkdFVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEQQorI2RlZmluZSBHTF9URVhUVVJFX09CSkVDVF9WQUxJRF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEQgorI2RlZmluZSBHTF9TVEFURV9SRVNUT1JFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEQworI2VuZGlmCisKKy8qIEdMX1FDT01fZXh0ZW5kZWRfZ2V0MiAqLworLyogTm8gbmV3IHRva2VucyBpbnRyb2R1Y2VkIGJ5IHRoaXMgZXh0ZW5zaW9uLiAqLworCisvKiBHTF9RQ09NX3BlcmZtb25fZ2xvYmFsX21vZGUgKi8KKyNpZm5kZWYgR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlCisjZGVmaW5lIEdMX1BFUkZNT05fR0xPQkFMX01PREVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RkEwCisjZW5kaWYKKworLyogR0xfUUNPTV93cml0ZW9ubHlfcmVuZGVyaW5nICovCisjaWZuZGVmIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmluZworI2RlZmluZSBHTF9XUklURU9OTFlfUkVOREVSSU5HX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyMworI2VuZGlmCisKKy8qIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nICovCisjaWZuZGVmIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUMV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUNF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUN19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDBfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQxX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUMl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDNfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQ0X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUNV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDIwMDAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDZfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQ3X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUMV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0MDAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwODAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUNF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDIwMDAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MDAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUN19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUMV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHgwODAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUNF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUN19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqIEVuZCBvZiBleHRlbnNpb24gdG9rZW5zLCBzdGFydCBvZiBjb3JyZXNwb25kaW5nIGV4dGVuc2lvbiBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBPRVMgZXh0ZW5zaW9uIGZ1bmN0aW9ucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNDU2LDExICs2NDcsMTEgQEAKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUEkgdm9pZCogR0xfQVBJRU5UUlkgZ2xNYXBCdWZmZXJPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhY2Nlc3MpOwogR0xfQVBJIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbFVubWFwQnVmZmVyT0VTIChHTGVudW0gdGFyZ2V0KTsKLUdMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBhcmFtcyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdm9pZCAqKiBwYXJhbXMpOwogI2VuZGlmCiB0eXBlZGVmIHZvaWQqIChHTF9BUElFTlRSWVAgUEZOR0xNQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2Vzcyk7CiB0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMVU5NQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqIHBhcmFtcyk7CiAjZW5kaWYKIAogLyogR0xfT0VTX21hdHJpeF9nZXQgKi8KQEAgLTU3Niw2ICs3NjcsMjYgQEAKICNkZWZpbmUgR0xfT0VTX3RleHR1cmVfbWlycm9yZWRfcmVwZWF0IDEKICNlbmRpZgogCisvKiBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCAqLworI2lmbmRlZiBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAorI2RlZmluZSBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kVmVydGV4QXJyYXlPRVMgKEdMdWludCBhcnJheSk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVZlcnRleEFycmF5c09FUyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdlblZlcnRleEFycmF5c09FUyAoR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUEkgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNWZXJ0ZXhBcnJheU9FUyAoR0x1aW50IGFycmF5KTsKKyNlbmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVkVSVEVYQVJSQVlPRVNQUk9DKSAoR0x1aW50IGFycmF5KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFVkVSVEVYQVJSQVlTT0VTUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICphcnJheXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5WRVJURVhBUlJBWVNPRVNQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNWRVJURVhBUlJBWU9FU1BST0MpIChHTHVpbnQgYXJyYXkpOworI2VuZGlmCisKKy8qIEdMX09FU190ZXh0dXJlX2V4dGVybmFsICovCisjaWZuZGVmIEdMX09FU190ZXh0dXJlX2V4dGVybmFsCisjZGVmaW5lIEdMX09FU190ZXh0dXJlX2V4dGVybmFsIDEKKyNlbmRpZgorCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIEFNRCBleHRlbnNpb24gZnVuY3Rpb25zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC01OTEsMTQgKzgwMiwyMDcgQEAKICNlbmRpZgogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqIEFQUExFIGV4dGVuc2lvbiBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogR0xfQVBQTEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3QgKi8KKyNpZm5kZWYgR0xfQVBQTEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3QKKyNkZWZpbmUgR0xfQVBQTEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3QgMQorI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogRVhUIGV4dGVuc2lvbiBmdW5jdGlvbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAorLyogR0xfRVhUX2JsZW5kX21pbm1heCAqLworI2lmbmRlZiBHTF9FWFRfYmxlbmRfbWlubWF4CisjZGVmaW5lIEdMX0VYVF9ibGVuZF9taW5tYXggMQorI2VuZGlmCisKKy8qIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyICovCisjaWZuZGVmIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyCisjZGVmaW5lIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQ0FSREZSQU1FQlVGRkVSRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOworI2VuZGlmCisKKy8qIEdMX0VYVF9tdWx0aV9kcmF3X2FycmF5cyAqLworI2lmbmRlZiBHTF9FWFRfbXVsdGlfZHJhd19hcnJheXMKKyNkZWZpbmUgR0xfRVhUX211bHRpX2RyYXdfYXJyYXlzIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbE11bHRpRHJhd0FycmF5c0VYVCAoR0xlbnVtIG1vZGUsIEdMaW50ICpmaXJzdCwgR0xzaXplaSAqY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsTXVsdGlEcmF3RWxlbWVudHNFWFQgKEdMZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKKyNlbmRpZiAvKiBHTF9HTEVYVF9QUk9UT1RZUEVTICovCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBST0MpIChHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCk7CisjZW5kaWYKKworLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KKyNpZm5kZWYgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKyNkZWZpbmUgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgMQorI2VuZGlmCisKIC8qIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyAqLwogI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICNkZWZpbmUgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIDEKICNlbmRpZgogCisvKiBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4CisjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCAxCisjZW5kaWYKKworLyogR0xfRVhUX3RleHR1cmVfbG9kX2JpYXMgKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfbG9kX2JpYXMKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfbG9kX2JpYXMgMQorI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgorICogSU1HIGV4dGVuc2lvbiBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogR0xfSU1HX3JlYWRfZm9ybWF0ICovCisjaWZuZGVmIEdMX0lNR19yZWFkX2Zvcm1hdAorI2RlZmluZSBHTF9JTUdfcmVhZF9mb3JtYXQgMQorI2VuZGlmCisKKy8qIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjICovCisjaWZuZGVmIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjCisjZGVmaW5lIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIDEKKyNlbmRpZgorCisvKiBHTF9JTUdfdGV4dHVyZV9lbnZfZW5oYW5jZWRfZml4ZWRfZnVuY3Rpb24gKi8KKyNpZm5kZWYgR0xfSU1HX3RleHR1cmVfZW52X2VuaGFuY2VkX2ZpeGVkX2Z1bmN0aW9uCisjZGVmaW5lIEdMX0lNR190ZXh0dXJlX2Vudl9lbmhhbmNlZF9maXhlZF9mdW5jdGlvbiAxCisjZW5kaWYKKworLyogR0xfSU1HX3VzZXJfY2xpcF9wbGFuZSAqLworI2lmbmRlZiBHTF9JTUdfdXNlcl9jbGlwX3BsYW5lCisjZGVmaW5lIEdMX0lNR191c2VyX2NsaXBfcGxhbmUgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xpcFBsYW5lZklNRyAoR0xlbnVtIHAsIGNvbnN0IEdMZmxvYXQgKmVxbik7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbENsaXBQbGFuZXhJTUcgKEdMZW51bSBwLCBjb25zdCBHTGZpeGVkICplcW4pOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMSVBQTEFORUZJTUdQUk9DKSAoR0xlbnVtIHAsIGNvbnN0IEdMZmxvYXQgKmVxbik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMSVBQTEFORVhJTUdQUk9DKSAoR0xlbnVtIHAsIGNvbnN0IEdMZml4ZWQgKmVxbik7CisjZW5kaWYKKworLyogR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAqLworI2lmbmRlZiBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxUSVNBTVBMRUlNRykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJETVVMVElTQU1QTEVJTUcpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMpOworI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgorICogTlYgZXh0ZW5zaW9uIGZ1bmN0aW9ucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBOVl9mZW5jZSAqLworI2lmbmRlZiBHTF9OVl9mZW5jZQorI2RlZmluZSBHTF9OVl9mZW5jZSAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVGZW5jZXNOViAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdlbkZlbmNlc05WIChHTHNpemVpIG4sIEdMdWludCAqZmVuY2VzKTsKK0dMX0FQSSBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0ZlbmNlTlYgKEdMdWludCBmZW5jZSk7CitHTF9BUEkgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsVGVzdEZlbmNlTlYgKEdMdWludCBmZW5jZSk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZlbmNlaXZOViAoR0x1aW50IGZlbmNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xGaW5pc2hGZW5jZU5WIChHTHVpbnQgZmVuY2UpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xTZXRGZW5jZU5WIChHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24pOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURUZFTkNFU05WUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmZW5jZXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5GRU5DRVNOVlBST0MpIChHTHNpemVpIG4sIEdMdWludCAqZmVuY2VzKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU0ZFTkNFTlZQUk9DKSAoR0x1aW50IGZlbmNlKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xURVNURkVOQ0VOVlBST0MpIChHTHVpbnQgZmVuY2UpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGRU5DRUlWTlZQUk9DKSAoR0x1aW50IGZlbmNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGSU5JU0hGRU5DRU5WUFJPQykgKEdMdWludCBmZW5jZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNFVEZFTkNFTlZQUk9DKSAoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKTsKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqIFFDT00gZXh0ZW5zaW9uIGZ1bmN0aW9ucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBHTF9RQ09NX2RyaXZlcl9jb250cm9sICovCisjaWZuZGVmIEdMX1FDT01fZHJpdmVyX2NvbnRyb2wKKyNkZWZpbmUgR0xfUUNPTV9kcml2ZXJfY29udHJvbCAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXREcml2ZXJDb250cm9sc1FDT00gKEdMaW50ICpudW0sIEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICpkcml2ZXJDb250cm9scyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEVuYWJsZURyaXZlckNvbnRyb2xRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbERpc2FibGVEcml2ZXJDb250cm9sUUNPTSAoR0x1aW50IGRyaXZlckNvbnRyb2wpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVERSSVZFUkNPTlRST0xTUUNPTVBST0MpIChHTGludCAqbnVtLCBHTHNpemVpIHNpemUsIEdMdWludCAqZHJpdmVyQ29udHJvbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVREUklWRVJDT05UUk9MU1RSSU5HUUNPTVBST0MpIChHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVOQUJMRURSSVZFUkNPTlRST0xRQ09NUFJPQykgKEdMdWludCBkcml2ZXJDb250cm9sKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQUJMRURSSVZFUkNPTlRST0xRQ09NUFJPQykgKEdMdWludCBkcml2ZXJDb250cm9sKTsKKyNlbmRpZgorCisvKiBHTF9RQ09NX2V4dGVuZGVkX2dldCAqLworI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldAorI2RlZmluZSBHTF9RQ09NX2V4dGVuZGVkX2dldCAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRUZXh0dXJlc1FDT00gKEdMdWludCAqdGV4dHVyZXMsIEdMaW50IG1heFRleHR1cmVzLCBHTGludCAqbnVtVGV4dHVyZXMpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRCdWZmZXJzUUNPTSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFJlbmRlcmJ1ZmZlcnNRQ09NIChHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMsIEdMaW50IG1heFJlbmRlcmJ1ZmZlcnMsIEdMaW50ICpudW1SZW5kZXJidWZmZXJzKTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0RnJhbWVidWZmZXJzUUNPTSAoR0x1aW50ICpmcmFtZWJ1ZmZlcnMsIEdMaW50IG1heEZyYW1lYnVmZmVycywgR0xpbnQgKm51bUZyYW1lYnVmZmVycyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleExldmVsUGFyYW1ldGVyaXZRQ09NIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRUZXhPYmplY3RTdGF0ZU92ZXJyaWRlaVFDT00gKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRUZXhTdWJJbWFnZVFDT00gKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqdGV4ZWxzKTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0QnVmZmVyUG9pbnRlcnZRQ09NIChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFRFWFRVUkVTUUNPTVBST0MpIChHTHVpbnQgKnRleHR1cmVzLCBHTGludCBtYXhUZXh0dXJlcywgR0xpbnQgKm51bVRleHR1cmVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUQlVGRkVSU1FDT01QUk9DKSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFJFTkRFUkJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqcmVuZGVyYnVmZmVycywgR0xpbnQgbWF4UmVuZGVyYnVmZmVycywgR0xpbnQgKm51bVJlbmRlcmJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRGUkFNRUJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqZnJhbWVidWZmZXJzLCBHTGludCBtYXhGcmFtZWJ1ZmZlcnMsIEdMaW50ICpudW1GcmFtZWJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRURVhMRVZFTFBBUkFNRVRFUklWUUNPTVBST0MpIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRURVhPQkpFQ1RTVEFURU9WRVJSSURFSVFDT01QUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFRFWFNVQklNQUdFUUNPTVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnRleGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVEJVRkZFUlBPSU5URVJWUUNPTVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworI2VuZGlmCisKKy8qIEdMX1FDT01fZXh0ZW5kZWRfZ2V0MiAqLworI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldDIKKyNkZWZpbmUgR0xfUUNPTV9leHRlbmRlZF9nZXQyIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFNoYWRlcnNRQ09NIChHTHVpbnQgKnNoYWRlcnMsIEdMaW50IG1heFNoYWRlcnMsIEdMaW50ICpudW1TaGFkZXJzKTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0UHJvZ3JhbXNRQ09NIChHTHVpbnQgKnByb2dyYW1zLCBHTGludCBtYXhQcm9ncmFtcywgR0xpbnQgKm51bVByb2dyYW1zKTsKK0dMX0FQSSBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xFeHRJc1Byb2dyYW1CaW5hcnlRQ09NIChHTHVpbnQgcHJvZ3JhbSk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFByb2dyYW1CaW5hcnlTb3VyY2VRQ09NIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHNoYWRlcnR5cGUsIEdMY2hhciAqc291cmNlLCBHTGludCAqbGVuZ3RoKTsKKyNlbmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRTSEFERVJTUUNPTVBST0MpIChHTHVpbnQgKnNoYWRlcnMsIEdMaW50IG1heFNoYWRlcnMsIEdMaW50ICpudW1TaGFkZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUUFJPR1JBTVNRQ09NUFJPQykgKEdMdWludCAqcHJvZ3JhbXMsIEdMaW50IG1heFByb2dyYW1zLCBHTGludCAqbnVtUHJvZ3JhbXMpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTEVYVElTUFJPR1JBTUJJTkFSWVFDT01QUk9DKSAoR0x1aW50IHByb2dyYW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRQUk9HUkFNQklOQVJZU09VUkNFUUNPTVBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHNoYWRlcnR5cGUsIEdMY2hhciAqc291cmNlLCBHTGludCAqbGVuZ3RoKTsKKyNlbmRpZgorCisvKiBHTF9RQ09NX3BlcmZtb25fZ2xvYmFsX21vZGUgKi8KKyNpZm5kZWYgR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlCisjZGVmaW5lIEdMX1FDT01fcGVyZm1vbl9nbG9iYWxfbW9kZSAxCisjZW5kaWYKKworLyogR0xfUUNPTV93cml0ZW9ubHlfcmVuZGVyaW5nICovCisjaWZuZGVmIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmluZworI2RlZmluZSBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcgMQorI2VuZGlmCisKKy8qIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nICovCisjaWZuZGVmIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nCisjZGVmaW5lIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbFN0YXJ0VGlsaW5nUUNPTSAoR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgd2lkdGgsIEdMdWludCBoZWlnaHQsIEdMYml0ZmllbGQgcHJlc2VydmVNYXNrKTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRW5kVGlsaW5nUUNPTSAoR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNUQVJUVElMSU5HUUNPTVBST0MpIChHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkRUSUxJTkdRQ09NUFJPQykgKEdMYml0ZmllbGQgcHJlc2VydmVNYXNrKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvb3BlbmdsL2luY2x1ZGUvR0xFUy9nbHBsYXRmb3JtLmggYi9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dscGxhdGZvcm0uaAppbmRleCAxOThlNjc5Li4yZGI2ZWUyIDEwMDY0NAotLS0gYS9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dscGxhdGZvcm0uaAorKysgYi9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dscGxhdGZvcm0uaApAQCAtMSw3ICsxLDcgQEAKICNpZm5kZWYgX19nbHBsYXRmb3JtX2hfCiAjZGVmaW5lIF9fZ2xwbGF0Zm9ybV9oXwogCi0vKiAkUmV2aXNpb246IDcxNzIgJCBvbiAkRGF0ZTo6IDIwMDktMDEtMDkgMTE6MTc6NDEgLTA4MDAgIyQgKi8KKy8qICRSZXZpc2lvbjogMTA2MDEgJCBvbiAkRGF0ZTo6IDIwMTAtMDMtMDQgMjI6MTU6MjcgLTA4MDAgIyQgKi8KIAogLyoKICAqIFRoaXMgZG9jdW1lbnQgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFNHSSBGcmVlIFNvZnR3YXJlIEIgTGljZW5zZSBWZXJzaW9uCkBAIC05LDcgKzksNiBAQAogICovCiAKIC8qIFBsYXRmb3JtLXNwZWNpZmljIHR5cGVzIGFuZCBkZWZpbml0aW9ucyBmb3IgT3BlbkdMIEVTIDEuWCAgZ2wuaAotICogTGFzdCBtb2RpZmllZCBvbiAyMDA4LzEyLzE5CiAgKgogICogQWRvcHRlcnMgbWF5IG1vZGlmeSBraHJwbGF0Zm9ybS5oIGFuZCB0aGlzIGZpbGUgdG8gc3VpdCB0aGVpciBwbGF0Zm9ybS4KICAqIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBzdWJtaXQgYWxsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEtocm9ub3MgZ3JvdXAgc28gdGhhdApAQCAtMjQsMTAgKzIzLDggQEAKICNkZWZpbmUgR0xfQVBJICAgICAgS0hST05PU19BUElDQUxMCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoQU5EUk9JRCkKLQorI2lmbmRlZiBHTF9BUElFTlRSWQogI2RlZmluZSBHTF9BUElFTlRSWSBLSFJPTk9TX0FQSUVOVFJZCi0KICNlbmRpZgogCiAjZW5kaWYgLyogX19nbHBsYXRmb3JtX2hfICovCmRpZmYgLS1naXQgYS9vcGVuZ2wvaW5jbHVkZS9HTEVTMi9nbDIuaCBiL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMi5oCmluZGV4IDAxODJhNjcuLmUxZDNiODcgMTAwNjQ0Ci0tLSBhL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMi5oCisrKyBiL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMi5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsMl9oXwogI2RlZmluZSBfX2dsMl9oXwogCi0vKiAkUmV2aXNpb246IDcxNzMgJCBvbiAkRGF0ZTo6IDIwMDktMDEtMDkgMTE6MTg6MjEgLTA4MDAgIyQgKi8KKy8qICRSZXZpc2lvbjogMTA2MDIgJCBvbiAkRGF0ZTo6IDIwMTAtMDMtMDQgMjI6MzU6MzQgLTA4MDAgIyQgKi8KIAogI2luY2x1ZGUgPEdMRVMyL2dsMnBsYXRmb3JtLmg+CiAKQEAgLTE5LDYgKzE5LDcgQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgR0x2b2lkOwordHlwZWRlZiBjaGFyICAgICAgICAgICAgIEdMY2hhcjsKIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgICBHTGVudW07CiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgR0xib29sZWFuOwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgIEdMYml0ZmllbGQ7CkBAIC00NzIsNyArNDczLDcgQEAKIAogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xBY3RpdmVUZXh0dXJlIChHTGVudW0gdGV4dHVyZSk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEF0dGFjaFNoYWRlciAoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCaW5kQXR0cmliTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIqIG5hbWUpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCaW5kQXR0cmliTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciogbmFtZSk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJpbmRCdWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWludCBidWZmZXIpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCaW5kRnJhbWVidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcik7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJpbmRSZW5kZXJidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOwpAQCAtNDgyLDggKzQ4Myw4IEBACiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSAoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmMgKEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3Rvcik7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJsZW5kRnVuY1NlcGFyYXRlIChHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJ1ZmZlckRhdGEgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0xlbnVtIHVzYWdlKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQnVmZmVyU3ViRGF0YSAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCdWZmZXJEYXRhIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSwgR0xlbnVtIHVzYWdlKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQnVmZmVyU3ViRGF0YSAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSk7CiBHTF9BUElDQUxMIEdMZW51bSAgICAgICBHTF9BUElFTlRSWSBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMgKEdMZW51bSB0YXJnZXQpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDbGVhciAoR0xiaXRmaWVsZCBtYXNrKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ2xlYXJDb2xvciAoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOwpAQCAtNDkxLDggKzQ5Miw4IEBACiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENsZWFyU3RlbmNpbCAoR0xpbnQgcyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENvbG9yTWFzayAoR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFuIGFscGhhKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29tcGlsZVNoYWRlciAoR0x1aW50IHNoYWRlcik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRUZXhJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29weVRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDb3B5VGV4U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIEdMX0FQSUNBTEwgR0x1aW50ICAgICAgIEdMX0FQSUVOVFJZIGdsQ3JlYXRlUHJvZ3JhbSAodm9pZCk7CkBAIC01MTEsNyArNTEyLDcgQEAKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRGlzYWJsZSAoR0xlbnVtIGNhcCk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoR0x1aW50IGluZGV4KTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRHJhd0FycmF5cyAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRHJhd0VsZW1lbnRzIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGluZGljZXMpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHMgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBpbmRpY2VzKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRW5hYmxlIChHTGVudW0gY2FwKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkgKEdMdWludCBpbmRleCk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEZpbmlzaCAodm9pZCk7CkBAIC01MjQsMTAgKzUyNSwxMCBAQAogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZW5GcmFtZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZW5SZW5kZXJidWZmZXJzIChHTHNpemVpIG4sIEdMdWludCogcmVuZGVyYnVmZmVycyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdlblRleHR1cmVzIChHTHNpemVpIG4sIEdMdWludCogdGV4dHVyZXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVBdHRyaWIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBjaGFyKiBuYW1lKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0QWN0aXZlVW5pZm9ybSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMaW50KiBzaXplLCBHTGVudW0qIHR5cGUsIGNoYXIqIG5hbWUpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVBdHRyaWIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIqIG5hbWUpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVVbmlmb3JtIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0QXR0YWNoZWRTaGFkZXJzIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogY291bnQsIEdMdWludCogc2hhZGVycyk7Ci1HTF9BUElDQUxMIGludCAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSk7CitHTF9BUElDQUxMIGludCAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0Qm9vbGVhbnYgKEdMZW51bSBwbmFtZSwgR0xib29sZWFuKiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKIEdMX0FQSUNBTEwgR0xlbnVtICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0RXJyb3IgKHZvaWQpOwpAQCAtNTM1LDIxICs1MzYsMjEgQEAKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VydiAoR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbWl2IChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUluZm9Mb2cgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgY2hhciogaW5mb2xvZyk7CitHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1JbmZvTG9nIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkZXJpdiAoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVySW5mb0xvZyAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIGluZm9sb2cpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkZXJJbmZvTG9nIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBpbmZvbG9nKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVudW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQqIHByZWNpc2lvbik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFNoYWRlclNvdXJjZSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIHNvdXJjZSk7CitHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFNoYWRlclNvdXJjZSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogc291cmNlKTsKIEdMX0FQSUNBTEwgY29uc3QgR0x1Ynl0ZSogR0xfQVBJRU5UUlkgZ2xHZXRTdHJpbmcgKEdMZW51bSBuYW1lKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1mdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtaXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIGludCAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1Mb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIGNvbnN0IGNoYXIqIG5hbWUpOworR0xfQVBJQ0FMTCBpbnQgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIqIG5hbWUpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJmdiAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYml2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMdm9pZCoqIHBvaW50ZXIpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xIaW50IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSk7CiBHTF9BUElDQUxMIEdMYm9vbGVhbiAgICBHTF9BUElFTlRSWSBnbElzQnVmZmVyIChHTHVpbnQgYnVmZmVyKTsKIEdMX0FQSUNBTEwgR0xib29sZWFuICAgIEdMX0FQSUVOVFJZIGdsSXNFbmFibGVkIChHTGVudW0gY2FwKTsKQEAgLTU2MiwyNSArNTYzLDI1IEBACiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbExpbmtQcm9ncmFtIChHTHVpbnQgcHJvZ3JhbSk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFBpeGVsU3RvcmVpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsUG9seWdvbk9mZnNldCAoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xSZWFkUGl4ZWxzIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHZvaWQqIHBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFJlYWRQaXhlbHMgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkKiBwaXhlbHMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIgKHZvaWQpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2FtcGxlQ292ZXJhZ2UgKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2Npc3NvciAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTaGFkZXJCaW5hcnkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0LCBjb25zdCB2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2hhZGVyU291cmNlIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBjaGFyKiogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2hhZGVyQmluYXJ5IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFyeWZvcm1hdCwgY29uc3QgR0x2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2hhZGVyU291cmNlIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIqKiBzdHJpbmcsIGNvbnN0IEdMaW50KiBsZW5ndGgpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRnVuYyAoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlIChHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsTWFzayAoR0x1aW50IG1hc2spOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsTWFza1NlcGFyYXRlIChHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsT3AgKEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFN0ZW5jaWxPcFNlcGFyYXRlIChHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJmIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0KiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFmIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMWkgKEdMaW50IGxvY2F0aW9uLCBHTGludCB4KTsKQEAgLTYxMCw3ICs2MTEsNyBAQAogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIzZnYgKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWI0ZiAoR0x1aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjRmdiAoR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYlBvaW50ZXIgKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkKiBwdHIpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIChHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkKiBwdHIpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWaWV3cG9ydCAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oIGIvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKaW5kZXggNzJmMWFlNy4uZGU1ZDY1YSAxMDA2NDQKLS0tIGEvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKKysrIGIvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKQEAgLTEsNyArMSw3IEBACiAjaWZuZGVmIF9fZ2wyZXh0X2hfCiAjZGVmaW5lIF9fZ2wyZXh0X2hfCiAKLS8qICRSZXZpc2lvbjogODI3MSAkIG9uICREYXRlOjogMjAwOS0wNS0yMSAwOTozMzo0MCAtMDcwMCAjJCAqLworLyogJFJldmlzaW9uOiAxMDk2OSAkIG9uICREYXRlOjogMjAxMC0wNC0wOSAwMjoyNzoxNSAtMDcwMCAjJCAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtNTcsNiArNTcsMTEgQEAKIHR5cGVkZWYgdm9pZCogR0xlZ2xJbWFnZU9FUzsKICNlbmRpZgogCisvKiBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50ICovCisjaWZuZGVmIEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDUKKyNlbmRpZgorCiAvKiBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5ICovCiAjaWZuZGVmIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkKICNkZWZpbmUgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3NDEKQEAgLTEwMCw4ICsxMDUsOCBAQAogI2RlZmluZSBHTF9TVEVOQ0lMX0lOREVYNF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ0NwogI2VuZGlmCiAKLS8qIEdMX09FU190ZXh0dXJlM0QgKi8KLSNpZm5kZWYgR0xfT0VTX3RleHR1cmUzRAorLyogR0xfT0VTX3RleHR1cmVfM0QgKi8KKyNpZm5kZWYgR0xfT0VTX3RleHR1cmVfM0QKICNkZWZpbmUgR0xfVEVYVFVSRV9XUkFQX1JfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwNzIKICNkZWZpbmUgR0xfVEVYVFVSRV8zRF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwNkYKICNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HXzNEX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwNkEKQEAgLTExMCwxMSArMTE1LDI4IEBACiAjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV8zRF9aT0ZGU0VUX09FUyAgICAgICAgMHg4Q0Q0CiAjZW5kaWYKIAorLyogR0xfT0VTX3RleHR1cmVfZmxvYXQgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyICovCisvKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKIC8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQgKi8KICNpZm5kZWYgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdAogI2RlZmluZSBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2MQogI2VuZGlmCiAKKy8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyICovCisvKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKKy8qIEdMX09FU190ZXh0dXJlX25wb3QgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgKi8KKyNpZm5kZWYgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKKyNkZWZpbmUgR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1QjUKKyNlbmRpZgorCiAvKiBHTF9PRVNfdmVydGV4X2hhbGZfZmxvYXQgKi8KIC8qIEdMX0hBTEZfRkxPQVRfT0VTIGRlZmluZWQgaW4gR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBhbHJlYWR5LiAqLwogCkBAIC0xMjQsNiArMTQ2LDExIEBACiAjZGVmaW5lIEdMX0lOVF8xMF8xMF8xMF8yX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4REY3CiAjZW5kaWYKIAorLyogR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwgKi8KKyNpZm5kZWYgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMKKyNkZWZpbmUgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhENjUKKyNlbmRpZgorCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIEFNRCBleHRlbnNpb24gdG9rZW5zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xNDEsMTEgKzE2OCw2IEBACiAjZGVmaW5lIEdMX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQgICAgICAgICAgICAgICAgICAgICAgMHg4N0VFCiAjZW5kaWYKIAotLyogR0xfQU1EX3Byb2dyYW1fYmluYXJ5X1o0MDAgKi8KLSNpZm5kZWYgR0xfQU1EX3Byb2dyYW1fYmluYXJ5X1o0MDAKLSNkZWZpbmUgR0xfWjQwMF9CSU5BUllfQU1EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3NDAKLSNlbmRpZgotCiAvKiBHTF9BTURfcGVyZm9ybWFuY2VfbW9uaXRvciAqLwogI2lmbmRlZiBHTF9BTURfcGVyZm9ybWFuY2VfbW9uaXRvcgogI2RlZmluZSBHTF9DT1VOVEVSX1RZUEVfQU1EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJDMApAQCAtMTU3LDM1ICsxNzksNzggQEAKICNkZWZpbmUgR0xfUEVSRk1PTl9SRVNVTFRfQU1EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCQzYKICNlbmRpZgogCisvKiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAqLworI2lmbmRlZiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMAorI2RlZmluZSBHTF9aNDAwX0JJTkFSWV9BTUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODc0MAorI2VuZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogRVhUIGV4dGVuc2lvbiB0b2tlbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAorLyogR0xfRVhUX2JsZW5kX21pbm1heCAqLworI2lmbmRlZiBHTF9FWFRfYmxlbmRfbWlubWF4CisjZGVmaW5lIEdMX01JTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA3CisjZGVmaW5lIEdMX01BWF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA4CisjZW5kaWYKKworLyogR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgKi8KKyNpZm5kZWYgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKKyNkZWZpbmUgR0xfQ09MT1JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDAKKyNkZWZpbmUgR0xfREVQVEhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDEKKyNkZWZpbmUgR0xfU1RFTkNJTF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDIKKyNlbmRpZgorCisvKiBHTF9FWFRfbXVsdGlfZHJhd19hcnJheXMgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KKyNpZm5kZWYgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKyNkZWZpbmUgR0xfQkdSQV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjUKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjYKKyNlbmRpZgorCiAvKiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgKi8KICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCiAjZGVmaW5lIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZFCiAjZGVmaW5lIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZGCiAjZW5kaWYKIAorLyogR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorI2RlZmluZSBHTF9CR1JBX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODBFMQorI2VuZGlmCisKIC8qIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYgKi8KICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFVgogI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODM2OAogI2VuZGlmCiAKLS8qIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCAqLwotI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSNkZWZpbmUgR0xfQkdSQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKy8qIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEgKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODNGMAorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCAgICAgICAgICAgICAgICAgICAgICAgIDB4ODNGMQogI2VuZGlmCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogSU1HIGV4dGVuc2lvbiB0b2tlbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAorLyogR0xfSU1HX3Byb2dyYW1fYmluYXJ5ICovCisjaWZuZGVmIEdMX0lNR19wcm9ncmFtX2JpbmFyeQorI2RlZmluZSBHTF9TR1hfUFJPR1JBTV9CSU5BUllfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEzMAorI2VuZGlmCisKIC8qIEdMX0lNR19yZWFkX2Zvcm1hdCAqLwogI2lmbmRlZiBHTF9JTUdfcmVhZF9mb3JtYXQKLSNkZWZpbmUgR0xfQkdSQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKLSNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVYgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzNjUKLSNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVYgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzNjYKKyNkZWZpbmUgR0xfQkdSQV9JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfSU1HICAgICAgICAgICAgICAgICAgICAgICAweDgzNjUKKyNlbmRpZgorCisvKiBHTF9JTUdfc2hhZGVyX2JpbmFyeSAqLworI2lmbmRlZiBHTF9JTUdfc2hhZGVyX2JpbmFyeQorI2RlZmluZSBHTF9TR1hfQklOQVJZX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEMwQQogI2VuZGlmCiAKIC8qIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjICovCkBAIC0xOTYsNiArMjYxLDE0IEBACiAjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HICAgICAgICAgICAgICAgICAgICAgMHg4QzAzCiAjZW5kaWYKIAorLyogR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAqLworI2lmbmRlZiBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTMzCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HICAgICAgICAgICAgICAgMHg5MTM0CisjZGVmaW5lIEdMX01BWF9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM1CisjZGVmaW5lIEdMX1RFWFRVUkVfU0FNUExFU19JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM2CisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBOViBleHRlbnNpb24gdG9rZW5zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yMDcsNiArMjgwLDI0IEBACiAjZGVmaW5lIEdMX0ZFTkNFX0NPTkRJVElPTl9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEY0CiAjZW5kaWYKIAorLyogR0xfTlZfY292ZXJhZ2Vfc2FtcGxlICovCisjaWZuZGVmIEdMX05WX2NvdmVyYWdlX3NhbXBsZQorI2RlZmluZSBHTF9DT1ZFUkFHRV9DT01QT05FTlRfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMAorI2RlZmluZSBHTF9DT1ZFUkFHRV9DT01QT05FTlQ0X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMQorI2RlZmluZSBHTF9DT1ZFUkFHRV9BVFRBQ0hNRU5UX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMgorI2RlZmluZSBHTF9DT1ZFUkFHRV9CVUZGRVJTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMworI2RlZmluZSBHTF9DT1ZFUkFHRV9TQU1QTEVTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENAorI2RlZmluZSBHTF9DT1ZFUkFHRV9BTExfRlJBR01FTlRTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENQorI2RlZmluZSBHTF9DT1ZFUkFHRV9FREdFX0ZSQUdNRU5UU19OViAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENgorI2RlZmluZSBHTF9DT1ZFUkFHRV9BVVRPTUFUSUNfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENworI2RlZmluZSBHTF9DT1ZFUkFHRV9CVUZGRVJfQklUX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMAorI2VuZGlmCisKKy8qIEdMX05WX2RlcHRoX25vbmxpbmVhciAqLworI2lmbmRlZiBHTF9OVl9kZXB0aF9ub25saW5lYXIKKyNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMTZfTk9OTElORUFSX05WICAgICAgICAgICAgICAgICAgICAgICAweDhFMkMKKyNlbmRpZgorCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIFFDT00gZXh0ZW5zaW9uIHRva2VucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjE0LDExICszMDUsNzAgQEAKIC8qIEdMX1FDT01fZHJpdmVyX2NvbnRyb2wgKi8KIC8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KIAorLyogR0xfUUNPTV9leHRlbmRlZF9nZXQgKi8KKyNpZm5kZWYgR0xfUUNPTV9leHRlbmRlZF9nZXQKKyNkZWZpbmUgR0xfVEVYVFVSRV9XSURUSF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDIKKyNkZWZpbmUgR0xfVEVYVFVSRV9IRUlHSFRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDMKKyNkZWZpbmUgR0xfVEVYVFVSRV9ERVBUSF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDQKKyNkZWZpbmUgR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDUKKyNkZWZpbmUgR0xfVEVYVFVSRV9GT1JNQVRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDYKKyNkZWZpbmUgR0xfVEVYVFVSRV9UWVBFX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDcKKyNkZWZpbmUgR0xfVEVYVFVSRV9JTUFHRV9WQUxJRF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDgKKyNkZWZpbmUgR0xfVEVYVFVSRV9OVU1fTEVWRUxTX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDkKKyNkZWZpbmUgR0xfVEVYVFVSRV9UQVJHRVRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCREEKKyNkZWZpbmUgR0xfVEVYVFVSRV9PQkpFQ1RfVkFMSURfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCREIKKyNkZWZpbmUgR0xfU1RBVEVfUkVTVE9SRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCREMKKyNlbmRpZgorCisvKiBHTF9RQ09NX2V4dGVuZGVkX2dldDIgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKwogLyogR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlICovCiAjaWZuZGVmIEdMX1FDT01fcGVyZm1vbl9nbG9iYWxfbW9kZQogI2RlZmluZSBHTF9QRVJGTU9OX0dMT0JBTF9NT0RFX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEZBMAogI2VuZGlmCiAKKy8qIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmluZyAqLworI2lmbmRlZiBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcKKyNkZWZpbmUgR0xfV1JJVEVPTkxZX1JFTkRFUklOR19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MjMKKyNlbmRpZgorCisvKiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZyAqLworI2lmbmRlZiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZworI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUMF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUM19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUNl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUMV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUNF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUN19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUMF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNDAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUM19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDEwMDAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUNl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDgwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUMF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUM19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUNl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBFbmQgb2YgZXh0ZW5zaW9uIHRva2Vucywgc3RhcnQgb2YgY29ycmVzcG9uZGluZyBleHRlbnNpb24gZnVuY3Rpb25zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yMzcsMTcgKzM4Nyw2IEBACiAjZGVmaW5lIEdMX09FU19jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmUgMQogI2VuZGlmCiAKLS8qIEdMX09FU19FR0xfaW1hZ2UgKi8KLSNpZm5kZWYgR0xfT0VTX0VHTF9pbWFnZQotI2RlZmluZSBHTF9PRVNfRUdMX2ltYWdlIDEKLSNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwotI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFR0xJTUFHRVRBUkdFVFJFTkRFUkJVRkZFUlNUT1JBR0VPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Ci0jZW5kaWYKLQogLyogR0xfT0VTX2RlcHRoMjQgKi8KICNpZm5kZWYgR0xfT0VTX2RlcHRoMjQKICNkZWZpbmUgR0xfT0VTX2RlcHRoMjQgMQpAQCAtMjYzLDYgKzQwMiwxNyBAQAogI2RlZmluZSBHTF9PRVNfZGVwdGhfdGV4dHVyZSAxCiAjZW5kaWYKIAorLyogR0xfT0VTX0VHTF9pbWFnZSAqLworI2lmbmRlZiBHTF9PRVNfRUdMX2ltYWdlCisjZGVmaW5lIEdMX09FU19FR0xfaW1hZ2UgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTIGltYWdlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVHTElNQUdFVEFSR0VUUkVOREVSQlVGRkVSU1RPUkFHRU9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTIGltYWdlKTsKKyNlbmRpZgorCiAvKiBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50ICovCiAjaWZuZGVmIEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQKICNkZWZpbmUgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCAxCkBAIC0yODIsMTEgKzQzMiwxMSBAQAogI2lmbmRlZiBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5CiAjZGVmaW5lIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkgMQogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1CaW5hcnlPRVMgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIHZvaWQgKmJpbmFyeSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtQmluYXJ5T0VTIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUyAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFyeUZvcm1hdCwgR0x2b2lkICpiaW5hcnkpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbUJpbmFyeU9FUyAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQsIGNvbnN0IEdMdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpOwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1CSU5BUllPRVNQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5KTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTUJJTkFSWU9FU1BST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNQklOQVJZT0VTUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIEdMdm9pZCAqYmluYXJ5KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTUJJTkFSWU9FU1BST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3QgR0x2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCk7CiAjZW5kaWYKIAogLyogR0xfT0VTX21hcGJ1ZmZlciAqLwpAQCAtMjk1LDExICs0NDUsMTEgQEAKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUElDQUxMIHZvaWQqIEdMX0FQSUVOVFJZIGdsTWFwQnVmZmVyT0VTIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKTsKIEdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsVW5tYXBCdWZmZXJPRVMgKEdMZW51bSB0YXJnZXQpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCdWZmZXJQb2ludGVydk9FUyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqKiBwYXJhbXMpOwogI2VuZGlmCiB0eXBlZGVmIHZvaWQqIChHTF9BUElFTlRSWVAgUEZOR0xNQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2Vzcyk7CiB0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMVU5NQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcGFyYW1zKTsKICNlbmRpZgogCiAvKiBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgKi8KQEAgLTMzMSw0NiArNDgxLDYxIEBACiAjaWZuZGVmIEdMX09FU190ZXh0dXJlXzNECiAjZGVmaW5lIEdMX09FU190ZXh0dXJlXzNEIDEKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhJbWFnZTNET0VTIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhJbWFnZTNET0VTIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3ViSW1hZ2UzRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgem9mZnNldCk7CiAjZW5kaWYKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhTVUJJTUFHRTNET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNVQklNQUdFM0RPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYU1VCSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFHRTNET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFM0RPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFM0RPRVMpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCB6b2Zmc2V0KTsKICNlbmRpZgogCi0vKiBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgKi8KLSNpZm5kZWYgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyCi0jZGVmaW5lIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciAxCi0jZW5kaWYKLQotLyogR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgKi8KLSNpZm5kZWYgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIKLSNkZWZpbmUgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgMQotI2VuZGlmCi0KIC8qIEdMX09FU190ZXh0dXJlX2Zsb2F0ICovCiAjaWZuZGVmIEdMX09FU190ZXh0dXJlX2Zsb2F0CiAjZGVmaW5lIEdMX09FU190ZXh0dXJlX2Zsb2F0IDEKICNlbmRpZgogCisvKiBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgKi8KKyNpZm5kZWYgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyCisjZGVmaW5lIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciAxCisjZW5kaWYKKwogLyogR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCAqLwogI2lmbmRlZiBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0CiAjZGVmaW5lIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQgMQogI2VuZGlmCiAKKy8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyICovCisjaWZuZGVmIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyCisjZGVmaW5lIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIDEKKyNlbmRpZgorCiAvKiBHTF9PRVNfdGV4dHVyZV9ucG90ICovCiAjaWZuZGVmIEdMX09FU190ZXh0dXJlX25wb3QKICNkZWZpbmUgR0xfT0VTX3RleHR1cmVfbnBvdCAxCiAjZW5kaWYKIAorLyogR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgKi8KKyNpZm5kZWYgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKKyNkZWZpbmUgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRWZXJ0ZXhBcnJheU9FUyAoR0x1aW50IGFycmF5KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVZlcnRleEFycmF5c09FUyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5WZXJ0ZXhBcnJheXNPRVMgKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1ZlcnRleEFycmF5T0VTIChHTHVpbnQgYXJyYXkpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRWRVJURVhBUlJBWU9FU1BST0MpIChHTHVpbnQgYXJyYXkpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVWRVJURVhBUlJBWVNPRVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlZFUlRFWEFSUkFZU09FU1BST0MpIChHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1ZFUlRFWEFSUkFZT0VTUFJPQykgKEdMdWludCBhcnJheSk7CisjZW5kaWYKKwogLyogR0xfT0VTX3ZlcnRleF9oYWxmX2Zsb2F0ICovCiAjaWZuZGVmIEdMX09FU192ZXJ0ZXhfaGFsZl9mbG9hdAogI2RlZmluZSBHTF9PRVNfdmVydGV4X2hhbGZfZmxvYXQgMQpAQCAtMzgxLDYgKzU0NiwxMSBAQAogI2RlZmluZSBHTF9PRVNfdmVydGV4X3R5cGVfMTBfMTBfMTBfMiAxCiAjZW5kaWYKIAorLyogR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwgKi8KKyNpZm5kZWYgR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwKKyNkZWZpbmUgR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwgMQorI2VuZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogQU1EIGV4dGVuc2lvbiBmdW5jdGlvbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTM5NSwyMCArNTY1LDE1IEBACiAjZGVmaW5lIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIDEKICNlbmRpZgogCi0vKiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAqLwotI2lmbmRlZiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMAotI2RlZmluZSBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAxCi0jZW5kaWYKLQogLyogQU1EX3BlcmZvcm1hbmNlX21vbml0b3IgKi8KICNpZm5kZWYgR0xfQU1EX3BlcmZvcm1hbmNlX21vbml0b3IKICNkZWZpbmUgR0xfQU1EX3BlcmZvcm1hbmNlX21vbml0b3IgMQogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBlcmZNb25pdG9yR3JvdXBzQU1EIChHTGludCAqbnVtR3JvdXBzLCBHTHNpemVpIGdyb3Vwc1NpemUsIEdMdWludCAqZ3JvdXBzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBlcmZNb25pdG9yQ291bnRlcnNBTUQgKEdMdWludCBncm91cCwgR0xpbnQgKm51bUNvdW50ZXJzLCBHTGludCAqbWF4QWN0aXZlQ291bnRlcnMsIEdMc2l6ZWkgY291bnRlclNpemUsIEdMdWludCAqY291bnRlcnMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCAoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqZ3JvdXBTdHJpbmcpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JDb3VudGVyU3RyaW5nQU1EIChHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqY291bnRlclN0cmluZyk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJJbmZvQU1EIChHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCAoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpncm91cFN0cmluZyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJTdHJpbmdBTUQgKEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmNvdW50ZXJTdHJpbmcpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JDb3VudGVySW5mb0FNRCAoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKmRhdGEpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuUGVyZk1vbml0b3JzQU1EIChHTHNpemVpIG4sIEdMdWludCAqbW9uaXRvcnMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUGVyZk1vbml0b3JzQU1EIChHTHNpemVpIG4sIEdMdWludCAqbW9uaXRvcnMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2VsZWN0UGVyZk1vbml0b3JDb3VudGVyc0FNRCAoR0x1aW50IG1vbml0b3IsIEdMYm9vbGVhbiBlbmFibGUsIEdMdWludCBncm91cCwgR0xpbnQgbnVtQ291bnRlcnMsIEdMdWludCAqY291bnRlcnNMaXN0KTsKQEAgLTQxOCw5ICs1ODMsOSBAQAogI2VuZGlmCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SR1JPVVBTQU1EUFJPQykgKEdMaW50ICpudW1Hcm91cHMsIEdMc2l6ZWkgZ3JvdXBzU2l6ZSwgR0x1aW50ICpncm91cHMpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkNPVU5URVJTQU1EUFJPQykgKEdMdWludCBncm91cCwgR0xpbnQgKm51bUNvdW50ZXJzLCBHTGludCAqbWF4QWN0aXZlQ291bnRlcnMsIEdMc2l6ZWkgY291bnRlclNpemUsIEdMdWludCAqY291bnRlcnMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkdST1VQU1RSSU5HQU1EUFJPQykgKEdMdWludCBncm91cCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmdyb3VwU3RyaW5nKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEVSRk1PTklUT1JDT1VOVEVSU1RSSU5HQU1EUFJPQykgKEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpjb3VudGVyU3RyaW5nKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEVSRk1PTklUT1JDT1VOVEVSSU5GT0FNRFBST0MpIChHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkdST1VQU1RSSU5HQU1EUFJPQykgKEdMdWludCBncm91cCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZ3JvdXBTdHJpbmcpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkNPVU5URVJTVFJJTkdBTURQUk9DKSAoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqY291bnRlclN0cmluZyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SQ09VTlRFUklORk9BTURQUk9DKSAoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKmRhdGEpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5QRVJGTU9OSVRPUlNBTURQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKm1vbml0b3JzKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFUEVSRk1PTklUT1JTQU1EUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICptb25pdG9ycyk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNFTEVDVFBFUkZNT05JVE9SQ09VTlRFUlNBTURQUk9DKSAoR0x1aW50IG1vbml0b3IsIEdMYm9vbGVhbiBlbmFibGUsIEdMdWludCBncm91cCwgR0xpbnQgbnVtQ291bnRlcnMsIEdMdWludCAqY291bnRlcnNMaXN0KTsKQEAgLTQyOSwzOSArNTk0LDk5IEBACiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SQ09VTlRFUkRBVEFBTURQUk9DKSAoR0x1aW50IG1vbml0b3IsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBkYXRhU2l6ZSwgR0x1aW50ICpkYXRhLCBHTGludCAqYnl0ZXNXcml0dGVuKTsKICNlbmRpZgogCisvKiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAqLworI2lmbmRlZiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMAorI2RlZmluZSBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAxCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBFWFQgZXh0ZW5zaW9uIGZ1bmN0aW9ucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCisvKiBHTF9FWFRfYmxlbmRfbWlubWF4ICovCisjaWZuZGVmIEdMX0VYVF9ibGVuZF9taW5tYXgKKyNkZWZpbmUgR0xfRVhUX2JsZW5kX21pbm1heCAxCisjZW5kaWYKKworLyogR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgKi8KKyNpZm5kZWYgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKKyNkZWZpbmUgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQ0FSREZSQU1FQlVGRkVSRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOworI2VuZGlmCisKKyNpZm5kZWYgR0xfRVhUX211bHRpX2RyYXdfYXJyYXlzCisjZGVmaW5lIEdMX0VYVF9tdWx0aV9kcmF3X2FycmF5cyAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTXVsdGlEcmF3QXJyYXlzRVhUIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTXVsdGlEcmF3RWxlbWVudHNFWFQgKEdMZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKKyNlbmRpZiAvKiBHTF9HTEVYVF9QUk9UT1RZUEVTICovCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBST0MpIChHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCk7CisjZW5kaWYKKworLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KKyNpZm5kZWYgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKyNkZWZpbmUgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgMQorI2VuZGlmCisKIC8qIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyAqLwogI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICNkZWZpbmUgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIDEKICNlbmRpZgogCi0vKiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWICovCi0jaWZuZGVmIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYKLSNkZWZpbmUgR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFViAxCi0jZW5kaWYKLQogLyogR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICovCiAjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAogI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggMQogI2VuZGlmCiAKKy8qIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYgKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFVgorI2RlZmluZSBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWIDEKKyNlbmRpZgorCisvKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAxCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBJTUcgZXh0ZW5zaW9uIGZ1bmN0aW9ucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCisvKiBHTF9JTUdfcHJvZ3JhbV9iaW5hcnkgKi8KKyNpZm5kZWYgR0xfSU1HX3Byb2dyYW1fYmluYXJ5CisjZGVmaW5lIEdMX0lNR19wcm9ncmFtX2JpbmFyeSAxCisjZW5kaWYKKwogLyogR0xfSU1HX3JlYWRfZm9ybWF0ICovCiAjaWZuZGVmIEdMX0lNR19yZWFkX2Zvcm1hdAogI2RlZmluZSBHTF9JTUdfcmVhZF9mb3JtYXQgMQogI2VuZGlmCiAKKy8qIEdMX0lNR19zaGFkZXJfYmluYXJ5ICovCisjaWZuZGVmIEdMX0lNR19zaGFkZXJfYmluYXJ5CisjZGVmaW5lIEdMX0lNR19zaGFkZXJfYmluYXJ5IDEKKyNlbmRpZgorCiAvKiBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyAqLwogI2lmbmRlZiBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwogI2RlZmluZSBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyAxCiAjZW5kaWYKIAorLyogR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAqLworI2lmbmRlZiBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgc2FtcGxlcyk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExFSU1HKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRNVUxUSVNBTVBMRUlNRykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgc2FtcGxlcyk7CisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBOViBleHRlbnNpb24gZnVuY3Rpb25zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC00ODcsNiArNzEyLDIyIEBACiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNFVEZFTkNFTlZQUk9DKSAoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKTsKICNlbmRpZgogCisvKiBHTF9OVl9jb3ZlcmFnZV9zYW1wbGUgKi8KKyNpZm5kZWYgR0xfTlZfY292ZXJhZ2Vfc2FtcGxlCisjZGVmaW5lIEdMX05WX2NvdmVyYWdlX3NhbXBsZSAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJhZ2VNYXNrTlYgKEdMYm9vbGVhbiBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyYWdlT3BlcmF0aW9uTlYgKEdMZW51bSBvcGVyYXRpb24pOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSQUdFTUFTS05WUFJPQykgKEdMYm9vbGVhbiBtYXNrKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJBR0VPUEVSQVRJT05OVlBST0MpIChHTGVudW0gb3BlcmF0aW9uKTsKKyNlbmRpZgorCisvKiBHTF9OVl9kZXB0aF9ub25saW5lYXIgKi8KKyNpZm5kZWYgR0xfTlZfZGVwdGhfbm9ubGluZWFyCisjZGVmaW5lIEdMX05WX2RlcHRoX25vbmxpbmVhciAxCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBRQ09NIGV4dGVuc2lvbiBmdW5jdGlvbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTQ5NiwyMSArNzM3LDc1IEBACiAjZGVmaW5lIEdMX1FDT01fZHJpdmVyX2NvbnRyb2wgMQogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldERyaXZlckNvbnRyb2xzUUNPTSAoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZlckNvbnRyb2xzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmRyaXZlckNvbnRyb2xTdHJpbmcpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0RHJpdmVyQ29udHJvbFN0cmluZ1FDT00gKEdMdWludCBkcml2ZXJDb250cm9sLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpkcml2ZXJDb250cm9sU3RyaW5nKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuYWJsZURyaXZlckNvbnRyb2xRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEaXNhYmxlRHJpdmVyQ29udHJvbFFDT00gKEdMdWludCBkcml2ZXJDb250cm9sKTsKICNlbmRpZgogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVREUklWRVJDT05UUk9MU1FDT01QUk9DKSAoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZlckNvbnRyb2xzKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURFJJVkVSQ09OVFJPTFNUUklOR1FDT01QUk9DKSAoR0x1aW50IGRyaXZlckNvbnRyb2wsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpkcml2ZXJDb250cm9sU3RyaW5nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURFJJVkVSQ09OVFJPTFNUUklOR1FDT01QUk9DKSAoR0x1aW50IGRyaXZlckNvbnRyb2wsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmRyaXZlckNvbnRyb2xTdHJpbmcpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVEUklWRVJDT05UUk9MUUNPTVBST0MpIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERJU0FCTEVEUklWRVJDT05UUk9MUUNPTVBST0MpIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CiAjZW5kaWYKIAorLyogR0xfUUNPTV9leHRlbmRlZF9nZXQgKi8KKyNpZm5kZWYgR0xfUUNPTV9leHRlbmRlZF9nZXQKKyNkZWZpbmUgR0xfUUNPTV9leHRlbmRlZF9nZXQgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleHR1cmVzUUNPTSAoR0x1aW50ICp0ZXh0dXJlcywgR0xpbnQgbWF4VGV4dHVyZXMsIEdMaW50ICpudW1UZXh0dXJlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRCdWZmZXJzUUNPTSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRSZW5kZXJidWZmZXJzUUNPTSAoR0x1aW50ICpyZW5kZXJidWZmZXJzLCBHTGludCBtYXhSZW5kZXJidWZmZXJzLCBHTGludCAqbnVtUmVuZGVyYnVmZmVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRGcmFtZWJ1ZmZlcnNRQ09NIChHTHVpbnQgKmZyYW1lYnVmZmVycywgR0xpbnQgbWF4RnJhbWVidWZmZXJzLCBHTGludCAqbnVtRnJhbWVidWZmZXJzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleExldmVsUGFyYW1ldGVyaXZRQ09NIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0VGV4T2JqZWN0U3RhdGVPdmVycmlkZWlRQ09NIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleFN1YkltYWdlUUNPTSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0ZXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0QnVmZmVyUG9pbnRlcnZRQ09NIChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFRFWFRVUkVTUUNPTVBST0MpIChHTHVpbnQgKnRleHR1cmVzLCBHTGludCBtYXhUZXh0dXJlcywgR0xpbnQgKm51bVRleHR1cmVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUQlVGRkVSU1FDT01QUk9DKSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFJFTkRFUkJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqcmVuZGVyYnVmZmVycywgR0xpbnQgbWF4UmVuZGVyYnVmZmVycywgR0xpbnQgKm51bVJlbmRlcmJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRGUkFNRUJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqZnJhbWVidWZmZXJzLCBHTGludCBtYXhGcmFtZWJ1ZmZlcnMsIEdMaW50ICpudW1GcmFtZWJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRURVhMRVZFTFBBUkFNRVRFUklWUUNPTVBST0MpIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRURVhPQkpFQ1RTVEFURU9WRVJSSURFSVFDT01QUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFRFWFNVQklNQUdFUUNPTVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnRleGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVEJVRkZFUlBPSU5URVJWUUNPTVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworI2VuZGlmCisKKy8qIEdMX1FDT01fZXh0ZW5kZWRfZ2V0MiAqLworI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldDIKKyNkZWZpbmUgR0xfUUNPTV9leHRlbmRlZF9nZXQyIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRTaGFkZXJzUUNPTSAoR0x1aW50ICpzaGFkZXJzLCBHTGludCBtYXhTaGFkZXJzLCBHTGludCAqbnVtU2hhZGVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRQcm9ncmFtc1FDT00gKEdMdWludCAqcHJvZ3JhbXMsIEdMaW50IG1heFByb2dyYW1zLCBHTGludCAqbnVtUHJvZ3JhbXMpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xFeHRJc1Byb2dyYW1CaW5hcnlRQ09NIChHTHVpbnQgcHJvZ3JhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRQcm9ncmFtQmluYXJ5U291cmNlUUNPTSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBzaGFkZXJ0eXBlLCBHTGNoYXIgKnNvdXJjZSwgR0xpbnQgKmxlbmd0aCk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUU0hBREVSU1FDT01QUk9DKSAoR0x1aW50ICpzaGFkZXJzLCBHTGludCBtYXhTaGFkZXJzLCBHTGludCAqbnVtU2hhZGVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFBST0dSQU1TUUNPTVBST0MpIChHTHVpbnQgKnByb2dyYW1zLCBHTGludCBtYXhQcm9ncmFtcywgR0xpbnQgKm51bVByb2dyYW1zKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xFWFRJU1BST0dSQU1CSU5BUllRQ09NUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUUFJPR1JBTUJJTkFSWVNPVVJDRVFDT01QUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBzaGFkZXJ0eXBlLCBHTGNoYXIgKnNvdXJjZSwgR0xpbnQgKmxlbmd0aCk7CisjZW5kaWYKKwogLyogR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlICovCiAjaWZuZGVmIEdMX1FDT01fcGVyZm1vbl9nbG9iYWxfbW9kZQogI2RlZmluZSBHTF9RQ09NX3BlcmZtb25fZ2xvYmFsX21vZGUgMQogI2VuZGlmCiAKKy8qIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmluZyAqLworI2lmbmRlZiBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcKKyNkZWZpbmUgR0xfUUNPTV93cml0ZW9ubHlfcmVuZGVyaW5nIDEKKyNlbmRpZgorCisvKiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZyAqLworI2lmbmRlZiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZworI2RlZmluZSBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZyAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RhcnRUaWxpbmdRQ09NIChHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5kVGlsaW5nUUNPTSAoR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNUQVJUVElMSU5HUUNPTVBST0MpIChHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkRUSUxJTkdRQ09NUFJPQykgKEdMYml0ZmllbGQgcHJlc2VydmVNYXNrKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wycGxhdGZvcm0uaCBiL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgKaW5kZXggM2U5MDM2Yy4uYzlmYTNjNCAxMDA2NDQKLS0tIGEvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wycGxhdGZvcm0uaAorKysgYi9vcGVuZ2wvaW5jbHVkZS9HTEVTMi9nbDJwbGF0Zm9ybS5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsMnBsYXRmb3JtX2hfCiAjZGVmaW5lIF9fZ2wycGxhdGZvcm1faF8KIAotLyogJFJldmlzaW9uOiA3MTczICQgb24gJERhdGU6OiAyMDA5LTAxLTA5IDExOjE4OjIxIC0wODAwICMkICovCisvKiAkUmV2aXNpb246IDEwNjAyICQgb24gJERhdGU6OiAyMDEwLTAzLTA0IDIyOjM1OjM0IC0wODAwICMkICovCiAKIC8qCiAgKiBUaGlzIGRvY3VtZW50IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTR0kgRnJlZSBTb2Z0d2FyZSBCIExpY2Vuc2UgVmVyc2lvbgpAQCAtOSw3ICs5LDYgQEAKICAqLwogCiAvKiBQbGF0Zm9ybS1zcGVjaWZpYyB0eXBlcyBhbmQgZGVmaW5pdGlvbnMgZm9yIE9wZW5HTCBFUyAyLlggIGdsMi5oCi0gKiBMYXN0IG1vZGlmaWVkIG9uIDIwMDgvMTIvMTkKICAqCiAgKiBBZG9wdGVycyBtYXkgbW9kaWZ5IGtocnBsYXRmb3JtLmggYW5kIHRoaXMgZmlsZSB0byBzdWl0IHRoZWlyIHBsYXRmb3JtLgogICogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIHN1Ym1pdCBhbGwgbW9kaWZpY2F0aW9ucyB0byB0aGUgS2hyb25vcyBncm91cCBzbyB0aGF0CkBAIC0yNCw2ICsyMyw4IEBACiAjZGVmaW5lIEdMX0FQSUNBTEwgIEtIUk9OT1NfQVBJQ0FMTAogI2VuZGlmCiAKKyNpZm5kZWYgR0xfQVBJRU5UUlkKICNkZWZpbmUgR0xfQVBJRU5UUlkgS0hST05PU19BUElFTlRSWQorI2VuZGlmCiAKICNlbmRpZiAvKiBfX2dsMnBsYXRmb3JtX2hfICovCmRpZmYgLS1naXQgYS9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMTAuamF2YSBiL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMRVMxMC5qYXZhCmluZGV4IGRiNTJiODIuLjc5MGFjYmQgMTAwNjQ0Ci0tLSBhL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMRVMxMC5qYXZhCisrKyBiL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMRVMxMC5qYXZhCkBAIC02NjksNiArNjY5LDIyIEBACiAgICAgICAgIGphdmEubmlvLkludEJ1ZmZlciBwYXJhbXMKICAgICApOwogCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKwogICAgIC8vIEMgZnVuY3Rpb24gY29uc3QgR0x1Ynl0ZSAqIGdsR2V0U3RyaW5nICggR0xlbnVtIG5hbWUgKQogCiAgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgU3RyaW5nIGdsR2V0U3RyaW5nKApkaWZmIC0tZ2l0IGEvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xFUzIwLmphdmEgYi9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMjAuamF2YQppbmRleCBiOGFhYzBlLi42MzVmODExIDEwMDY0NAotLS0gYS9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMjAuamF2YQorKysgYi9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMjAuamF2YQpAQCAtNjcwLDYgKzY3MCwxNSBAQAogICAgICAgICBpbnQgY291bnQKICAgICApOwogCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRHJhd0VsZW1lbnRzICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBHTGludCBvZmZzZXQgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbERyYXdFbGVtZW50cygKKyAgICAgICAgaW50IG1vZGUsCisgICAgICAgIGludCBjb3VudCwKKyAgICAgICAgaW50IHR5cGUsCisgICAgICAgIGludCBvZmZzZXQKKyAgICApOworCiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRHJhd0VsZW1lbnRzICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMgKQogCiAgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbERyYXdFbGVtZW50cygKQEAgLTk3OCw2ICs5ODcsMjIgQEAKICAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHBhcmFtcwogICAgICk7CiAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsR2V0UHJvZ3JhbUluZm9Mb2coIEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heExlbmd0aCwgR0xzaXplaSAqIGxlbmd0aCwKICAJLy8gICAgIEdMY2hhciAqIGluZm9Mb2cpOwogCkBAIC0xMDE4LDYgKzEwNDMsMjIgQEAKICAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHBhcmFtcwogICAgICk7CiAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsR2V0U2hhZGVySW5mb0xvZyggR0x1aW50IHNoYWRlciwgR0xzaXplaSBtYXhMZW5ndGgsIEdMc2l6ZWkgKiBsZW5ndGgsCiAgCS8vICAgICBHTGNoYXIgKiBpbmZvTG9nKTsKIApAQCAtMTA2NCw2ICsxMTA1LDIyIEBACiAgICAgICAgIGJ5dGUgc291cmNlCiAgICAgKTsKIAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKICAgICAvLyBDIGZ1bmN0aW9uIGNvbnN0IEdMdWJ5dGUgKiBnbEdldFN0cmluZyAoIEdMZW51bSBuYW1lICkKIAogICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIFN0cmluZyBnbEdldFN0cmluZygKQEAgLTEzMTYsNiArMTM3MywyMiBAQAogICAgICAgICBpbnQgbGVuZ3RoCiAgICAgKTsKIAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKICAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xTaGFkZXJTb3VyY2UgKCBHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKiogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoICkKIAogICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xTaGFkZXJTb3VyY2UoCkBAIC0xODE0LDYgKzE4ODcsMTcgQEAKICAgICAgICAgamF2YS5uaW8uRmxvYXRCdWZmZXIgdmFsdWVzCiAgICAgKTsKIAorICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFZlcnRleEF0dHJpYlBvaW50ZXIgKCBHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgR0xpbnQgb2Zmc2V0ICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKAorICAgICAgICBpbnQgaW5keCwKKyAgICAgICAgaW50IHNpemUsCisgICAgICAgIGludCB0eXBlLAorICAgICAgICBib29sZWFuIG5vcm1hbGl6ZWQsCisgICAgICAgIGludCBzdHJpZGUsCisgICAgICAgIGludCBvZmZzZXQKKyAgICApOworCiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsVmVydGV4QXR0cmliUG9pbnRlciAoIEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApCiAKICAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFZlcnRleEF0dHJpYlBvaW50ZXJCb3VuZHMoCmRpZmYgLS1naXQgYS9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTFN1cmZhY2VWaWV3LmphdmEgYi9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTFN1cmZhY2VWaWV3LmphdmEKaW5kZXggZjkwNGNkZi4uMmZmMjMxZCAxMDA2NDQKLS0tIGEvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xTdXJmYWNlVmlldy5qYXZhCisrKyBiL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMU3VyZmFjZVZpZXcuamF2YQpAQCAtMjIyLDcgKzIyMiw2IEBACiAgICAgICAgIC8vIHVuZGVybHlpbmcgc3VyZmFjZSBpcyBjcmVhdGVkIGFuZCBkZXN0cm95ZWQKICAgICAgICAgU3VyZmFjZUhvbGRlciBob2xkZXIgPSBnZXRIb2xkZXIoKTsKICAgICAgICAgaG9sZGVyLmFkZENhbGxiYWNrKHRoaXMpOwotICAgICAgICBob2xkZXIuc2V0Rm9ybWF0KFBpeGVsRm9ybWF0LlJHQl81NjUpOwogICAgICAgICAvLyBzZXRUeXBlIGlzIG5vdCBuZWVkZWQgZm9yIFNESyAyLjAgb3IgbmV3ZXIuIFVuY29tbWVudCB0aGlzCiAgICAgICAgIC8vIHN0YXRlbWVudCBpZiBiYWNrLXBvcnRpbmcgdGhpcyBjb2RlIHRvIG9sZGVyIFNES3MuCiAgICAgICAgIC8vIGhvbGRlci5zZXRUeXBlKFN1cmZhY2VIb2xkZXIuU1VSRkFDRV9UWVBFX0dQVSk7CmRpZmYgLS1naXQgYS9vcGVuZ2wvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvZ2xlc19qbmkvR0xJbXBsLmphdmEgYi9vcGVuZ2wvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvZ2xlc19qbmkvR0xJbXBsLmphdmEKaW5kZXggMzBiOTMyNS4uMDkwYzBjYjcgMTAwNjQ0Ci0tLSBhL29wZW5nbC9qYXZhL2NvbS9nb29nbGUvYW5kcm9pZC9nbGVzX2puaS9HTEltcGwuamF2YQorKysgYi9vcGVuZ2wvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvZ2xlc19qbmkvR0xJbXBsLmphdmEKQEAgLTE5LDcgKzE5LDcgQEAKIAogcGFja2FnZSBjb20uZ29vZ2xlLmFuZHJvaWQuZ2xlc19qbmk7CiAKLWltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BcHBHbG9iYWxzOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLklQYWNrYWdlTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1aWxkOwpAQCAtNjUsNyArNjUsNyBAQAogICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gYWxsb3dJbmRpcmVjdEJ1ZmZlcnMoU3RyaW5nIGFwcE5hbWUpIHsKICAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgaW50IHZlcnNpb24gPSAwOwotICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8gYXBwbGljYXRpb25JbmZvID0gcG0uZ2V0QXBwbGljYXRpb25JbmZvKGFwcE5hbWUsIDApOwogICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uSW5mbyAhPSBudWxsKSB7CmRpZmYgLS1naXQgYS9vcGVuZ2wvbGliYWdsL0FuZHJvaWQubWsgYi9vcGVuZ2wvbGliYWdsL0FuZHJvaWQubWsKaW5kZXggNmNiMTQ2Yy4uOGFiZDY0OTkgMTAwNjQ0Ci0tLSBhL29wZW5nbC9saWJhZ2wvQW5kcm9pZC5taworKysgYi9vcGVuZ2wvbGliYWdsL0FuZHJvaWQubWsKQEAgLTM3LDYgKzM3LDEwIEBACiAJTE9DQUxfQ0ZMQUdTICs9IC1mc3RyaWN0LWFsaWFzaW5nCiBlbmRpZgogCitpZmVxICgkKEFSQ0hfQVJNX0hBVkVfVExTX1JFR0lTVEVSKSx0cnVlKQorICAgIExPQ0FMX0NGTEFHUyArPSAtREhBVkVfQVJNX1RMU19SRUdJU1RFUgorZW5kaWYKKwogaWZuZXEgKCQoVEFSR0VUX1NJTVVMQVRPUiksdHJ1ZSkKICAgICAjIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSBwcml2YXRlIEJpb25pYyBoZWFkZXIgPGJpb25pY190bHMuaD4KICAgICAjIG9uIEFSTSBwbGF0Zm9ybXMsIHdlIG5lZWQgdG8gbWlycm9yIHRoZSBBUkNIX0FSTV9IQVZFX1RMU19SRUdJU1RFUgpkaWZmIC0tZ2l0IGEvb3BlbmdsL2xpYmFnbC9lZ2wuY3BwIGIvb3BlbmdsL2xpYmFnbC9lZ2wuY3BwCmluZGV4IGI2ZTBhYWUuLjU0ZDczMDcgMTAwNjQ0Ci0tLSBhL29wZW5nbC9saWJhZ2wvZWdsLmNwcAorKysgYi9vcGVuZ2wvbGliYWdsL2VnbC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQAogICAgIGVnbF93aW5kb3dfc3VyZmFjZV92Ml90KAogICAgICAgICAgICAgRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsCiAgICAgICAgICAgICBpbnQzMl90IGRlcHRoRm9ybWF0LAotICAgICAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdyk7CisgICAgICAgICAgICBBTmF0aXZlV2luZG93KiB3aW5kb3cpOwogCiAgICAgfmVnbF93aW5kb3dfc3VyZmFjZV92Ml90KCk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQAogcHJpdmF0ZToKICAgICBzdGF0dXNfdCBsb2NrKGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWYsIGludCB1c2FnZSwgdm9pZCoqIHZhZGRyKTsKICAgICBzdGF0dXNfdCB1bmxvY2soYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1Zik7Ci0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqICAgbmF0aXZlV2luZG93OworICAgIEFOYXRpdmVXaW5kb3cqICAgbmF0aXZlV2luZG93OwogICAgIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiAgIGJ1ZmZlcjsKICAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogICBwcmV2aW91c0J1ZmZlcjsKICAgICBncmFsbG9jX21vZHVsZV90IGNvbnN0KiAgICBtb2R1bGU7CkBAIC0zNTUsNyArMzU1LDcgQEAKIGVnbF93aW5kb3dfc3VyZmFjZV92Ml90OjplZ2xfd2luZG93X3N1cmZhY2VfdjJfdChFR0xEaXNwbGF5IGRweSwKICAgICAgICAgRUdMQ29uZmlnIGNvbmZpZywKICAgICAgICAgaW50MzJfdCBkZXB0aEZvcm1hdCwKLSAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdykKKyAgICAgICAgQU5hdGl2ZVdpbmRvdyogd2luZG93KQogICAgIDogZWdsX3N1cmZhY2VfdChkcHksIGNvbmZpZywgZGVwdGhGb3JtYXQpLCAKICAgICBuYXRpdmVXaW5kb3cod2luZG93KSwgYnVmZmVyKDApLCBwcmV2aW91c0J1ZmZlcigwKSwgbW9kdWxlKDApLAogICAgIGJsaXRlbmdpbmUoMCksIGJpdHMoTlVMTCkKQEAgLTEzMDAsNyArMTMwMCw3IEBACiAgICAgaWYgKCEoc3VyZmFjZVR5cGUgJiBFR0xfV0lORE9XX0JJVCkpCiAgICAgICAgIHJldHVybiBzZXRFcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8YW5kcm9pZF9uYXRpdmVfd2luZG93X3QqPih3aW5kb3cpLT5jb21tb24ubWFnaWMgIT0KKyAgICBpZiAoc3RhdGljX2Nhc3Q8QU5hdGl2ZVdpbmRvdyo+KHdpbmRvdyktPmNvbW1vbi5tYWdpYyAhPQogICAgICAgICAgICAgQU5EUk9JRF9OQVRJVkVfV0lORE9XX01BR0lDKSB7CiAgICAgICAgIHJldHVybiBzZXRFcnJvcihFR0xfQkFEX05BVElWRV9XSU5ET1csIEVHTF9OT19TVVJGQUNFKTsKICAgICB9CkBAIC0xMzIzLDcgKzEzMjMsNyBAQAogCiAgICAgZWdsX3N1cmZhY2VfdCogc3VyZmFjZTsKICAgICBzdXJmYWNlID0gbmV3IGVnbF93aW5kb3dfc3VyZmFjZV92Ml90KGRweSwgY29uZmlnLCBkZXB0aEZvcm1hdCwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PGFuZHJvaWRfbmF0aXZlX3dpbmRvd190Kj4od2luZG93KSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxBTmF0aXZlV2luZG93Kj4od2luZG93KSk7CiAKICAgICBpZiAoIXN1cmZhY2UtPmluaXRDaGVjaygpKSB7CiAgICAgICAgIC8vIHRoZXJlIHdhcyBhIHByb2JsZW0gaW4gdGhlIGN0b3IsIHRoZSBlcnJvcgpAQCAtMTUyNSw4ICsxNTI1LDEzIEBACiAgICAgfQogCiAgICAgaWYgKGdnbF91bmxpa2VseShhdHRyaWJfbGlzdD09MCkpIHsKLSAgICAgICAgKm51bV9jb25maWcgPSAwOwotICAgICAgICByZXR1cm4gRUdMX1RSVUU7CisgICAgICAgIC8qCisgICAgICAgICAqIEEgTlVMTCBhdHRyaWJfbGlzdCBzaG91bGQgYmUgdHJlYXRlZCBhcyB0aG91Z2ggaXQgd2FzIGFuIGVtcHR5CisgICAgICAgICAqIG9uZSAodGVybWluYXRlZCB3aXRoIEVHTF9OT05FKSBhcyBkZWZpbmVkIGluCisgICAgICAgICAqIHNlY3Rpb24gMy40LjEgIlF1ZXJ5aW5nIENvbmZpZ3VyYXRpb25zIiBpbiB0aGUgRUdMIHNwZWNpZmljYXRpb24uCisgICAgICAgICAqLworICAgICAgICBzdGF0aWMgY29uc3QgRUdMaW50IGR1bW15ID0gRUdMX05PTkU7CisgICAgICAgIGF0dHJpYl9saXN0ID0gJmR1bW15OwogICAgIH0KIAogICAgIGludCBudW1BdHRyaWJ1dGVzID0gMDsKZGlmZiAtLWdpdCBhL29wZW5nbC9saWJhZ2wvdGV4dHVyZS5jcHAgYi9vcGVuZ2wvbGliYWdsL3RleHR1cmUuY3BwCmluZGV4IDk0MDdiZDUuLmQ2NzYxMmUgMTAwNjQ0Ci0tLSBhL29wZW5nbC9saWJhZ2wvdGV4dHVyZS5jcHAKKysrIGIvb3BlbmdsL2xpYmFnbC90ZXh0dXJlLmNwcApAQCAtMTUxNSw3ICsxNTE1LDcgQEAKICAgICAgICAgb2dsZXNfZXJyb3IoYywgR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHg8MCB8fCB4PDApIHsKKyAgICBpZiAoeDwwIHx8IHk8MCkgewogICAgICAgICBvZ2xlc19lcnJvcihjLCBHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL29wZW5nbC9saWJzL0VHTC9lZ2wuY3BwIGIvb3BlbmdsL2xpYnMvRUdML2VnbC5jcHAKaW5kZXggODliM2UxZi4uNzE0ZmQzZSAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvRUdML2VnbC5jcHAKKysrIGIvb3BlbmdsL2xpYnMvRUdML2VnbC5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWVnbF9jb25uZWN0aW9uX3QgZ0VHTEltcGxbSU1QTF9OVU1fSU1QTEVNRU5UQVRJT05TXTsKK3N0YXRpYyBlZ2xfY29ubmVjdGlvbl90IGdFR0xJbXBsW0lNUExfTlVNX0lNUExFTUVOVEFUSU9OU107CiBzdGF0aWMgZWdsX2Rpc3BsYXlfdCBnRGlzcGxheVtOVU1fRElTUExBWVNdOwogc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBnVGhyZWFkTG9jYWxTdG9yYWdlS2V5TXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwogc3RhdGljIHB0aHJlYWRfa2V5X3QgZ0VHTFRocmVhZExvY2FsU3RvcmFnZUtleSA9IC0xOwpAQCAtODQzLDEwICs4NDMsMTIgQEAKICAgICBFR0xpbnQgcGF0Y2hfaW5kZXggPSAtMTsKICAgICBHTGludCBhdHRyOwogICAgIHNpemVfdCBzaXplID0gMDsKLSAgICB3aGlsZSAoKGF0dHI9YXR0cmliX2xpc3Rbc2l6ZV0pICE9IEVHTF9OT05FKSB7Ci0gICAgICAgIGlmIChhdHRyID09IEVHTF9DT05GSUdfSUQpCi0gICAgICAgICAgICBwYXRjaF9pbmRleCA9IHNpemU7Ci0gICAgICAgIHNpemUgKz0gMjsKKyAgICBpZiAoYXR0cmliX2xpc3QpIHsKKyAgICAgICAgd2hpbGUgKChhdHRyPWF0dHJpYl9saXN0W3NpemVdKSAhPSBFR0xfTk9ORSkgeworICAgICAgICAgICAgaWYgKGF0dHIgPT0gRUdMX0NPTkZJR19JRCkKKyAgICAgICAgICAgICAgICBwYXRjaF9pbmRleCA9IHNpemU7CisgICAgICAgICAgICBzaXplICs9IDI7CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHBhdGNoX2luZGV4ID49IDApIHsKICAgICAgICAgc2l6ZSArPSAyOyAvLyB3ZSBuZWVkIGNvcHkgdGhlIHNlbnRpbmVsIGFzIHdlbGwKQEAgLTEwNDMsNiArMTA0NSwxMCBAQAogICAgIGludCBpPTAsIGluZGV4PTA7CiAgICAgZWdsX2Nvbm5lY3Rpb25fdCogY254ID0gdmFsaWRhdGVfZGlzcGxheV9jb25maWcoZHB5LCBjb25maWcsIGRwLCBpLCBpbmRleCk7CiAgICAgaWYgKGNueCkgeworICAgICAgICBpZiAoc2hhcmVfbGlzdCAhPSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICAgICAgZWdsX2NvbnRleHRfdCogY29uc3QgYyA9IGdldF9jb250ZXh0KHNoYXJlX2xpc3QpOworICAgICAgICAgICAgc2hhcmVfbGlzdCA9IGMtPmNvbnRleHQ7CisgICAgICAgIH0KICAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gY254LT5lZ2wuZWdsQ3JlYXRlQ29udGV4dCgKICAgICAgICAgICAgICAgICBkcC0+ZGlzcFtpXS5kcHksIGRwLT5kaXNwW2ldLmNvbmZpZ1tpbmRleF0sCiAgICAgICAgICAgICAgICAgc2hhcmVfbGlzdCwgYXR0cmliX2xpc3QpOwpkaWZmIC0tZ2l0IGEvb3BlbmdsL2xpYnMvR0xFUzIvZ2wyX2FwaS5pbiBiL29wZW5nbC9saWJzL0dMRVMyL2dsMl9hcGkuaW4KaW5kZXggOWMyZTY5YS4uNTE2NDQ1MCAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvR0xFUzIvZ2wyX2FwaS5pbgorKysgYi9vcGVuZ2wvbGlicy9HTEVTMi9nbDJfYXBpLmluCkBAIC00LDcgKzQsNyBAQAogdm9pZCBBUElfRU5UUlkoZ2xBdHRhY2hTaGFkZXIpKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xBdHRhY2hTaGFkZXIsIHByb2dyYW0sIHNoYWRlcik7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEJpbmRBdHRyaWJMb2NhdGlvbikoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgY2hhciogbmFtZSkgewordm9pZCBBUElfRU5UUlkoZ2xCaW5kQXR0cmliTG9jYXRpb24pKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciogbmFtZSkgewogICAgIENBTExfR0xfQVBJKGdsQmluZEF0dHJpYkxvY2F0aW9uLCBwcm9ncmFtLCBpbmRleCwgbmFtZSk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEJpbmRCdWZmZXIpKEdMZW51bSB0YXJnZXQsIEdMdWludCBidWZmZXIpIHsKQEAgLTM0LDEwICszNCwxMCBAQAogdm9pZCBBUElfRU5UUlkoZ2xCbGVuZEZ1bmNTZXBhcmF0ZSkoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpIHsKICAgICBDQUxMX0dMX0FQSShnbEJsZW5kRnVuY1NlcGFyYXRlLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsQnVmZmVyRGF0YSkoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHTGVudW0gdXNhZ2UpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsQnVmZmVyRGF0YSkoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEsIEdMZW51bSB1c2FnZSkgewogICAgIENBTExfR0xfQVBJKGdsQnVmZmVyRGF0YSwgdGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEJ1ZmZlclN1YkRhdGEpKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKSB7Cit2b2lkIEFQSV9FTlRSWShnbEJ1ZmZlclN1YkRhdGEpKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpIHsKICAgICBDQUxMX0dMX0FQSShnbEJ1ZmZlclN1YkRhdGEsIHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIEdMZW51bSBBUElfRU5UUlkoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKShHTGVudW0gdGFyZ2V0KSB7CkBAIC02MSwxMCArNjEsMTAgQEAKIHZvaWQgQVBJX0VOVFJZKGdsQ29tcGlsZVNoYWRlcikoR0x1aW50IHNoYWRlcikgewogICAgIENBTExfR0xfQVBJKGdsQ29tcGlsZVNoYWRlciwgc2hhZGVyKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleEltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSB7Cit2b2lkIEFQSV9FTlRSWShnbENvbXByZXNzZWRUZXhJbWFnZTJEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSkgewogICAgIENBTExfR0xfQVBJKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsQ29weVRleEltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpIHsKQEAgLTEyMSw3ICsxMjEsNyBAQAogdm9pZCBBUElfRU5UUlkoZ2xEcmF3QXJyYXlzKShHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIHsKICAgICBDQUxMX0dMX0FQSShnbERyYXdBcnJheXMsIG1vZGUsIGZpcnN0LCBjb3VudCk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbERyYXdFbGVtZW50cykoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBpbmRpY2VzKSB7Cit2b2lkIEFQSV9FTlRSWShnbERyYXdFbGVtZW50cykoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIGluZGljZXMpIHsKICAgICBDQUxMX0dMX0FQSShnbERyYXdFbGVtZW50cywgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xFbmFibGUpKEdMZW51bSBjYXApIHsKQEAgLTE2MCwxNiArMTYwLDE2IEBACiB2b2lkIEFQSV9FTlRSWShnbEdlblRleHR1cmVzKShHTHNpemVpIG4sIEdMdWludCogdGV4dHVyZXMpIHsKICAgICBDQUxMX0dMX0FQSShnbEdlblRleHR1cmVzLCBuLCB0ZXh0dXJlcyk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEdldEFjdGl2ZUF0dHJpYikoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMaW50KiBzaXplLCBHTGVudW0qIHR5cGUsIGNoYXIqIG5hbWUpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0QWN0aXZlQXR0cmliKShHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRBY3RpdmVBdHRyaWIsIHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRBY3RpdmVVbmlmb3JtKShHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgY2hhciogbmFtZSkgewordm9pZCBBUElfRU5UUlkoZ2xHZXRBY3RpdmVVbmlmb3JtKShHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRBY3RpdmVVbmlmb3JtLCBwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsR2V0QXR0YWNoZWRTaGFkZXJzKShHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogY291bnQsIEdMdWludCogc2hhZGVycykgewogICAgIENBTExfR0xfQVBJKGdsR2V0QXR0YWNoZWRTaGFkZXJzLCBwcm9ncmFtLCBtYXhjb3VudCwgY291bnQsIHNoYWRlcnMpOwogfQotaW50IEFQSV9FTlRSWShnbEdldEF0dHJpYkxvY2F0aW9uKShHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkgeworaW50IEFQSV9FTlRSWShnbEdldEF0dHJpYkxvY2F0aW9uKShHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKSB7CiAgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsR2V0QXR0cmliTG9jYXRpb24sIHByb2dyYW0sIG5hbWUpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xHZXRCb29sZWFudikoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4qIHBhcmFtcykgewpAQCAtMTkzLDcgKzE5Myw3IEBACiB2b2lkIEFQSV9FTlRSWShnbEdldFByb2dyYW1pdikoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UHJvZ3JhbWl2LCBwcm9ncmFtLCBwbmFtZSwgcGFyYW1zKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsR2V0UHJvZ3JhbUluZm9Mb2cpKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgY2hhciogaW5mb2xvZykgewordm9pZCBBUElfRU5UUlkoZ2xHZXRQcm9ncmFtSW5mb0xvZykoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpIHsKICAgICBDQUxMX0dMX0FQSShnbEdldFByb2dyYW1JbmZvTG9nLCBwcm9ncmFtLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSB7CkBAIC0yMDIsMTMgKzIwMiwxMyBAQAogdm9pZCBBUElfRU5UUlkoZ2xHZXRTaGFkZXJpdikoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRTaGFkZXJpdiwgc2hhZGVyLCBwbmFtZSwgcGFyYW1zKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsR2V0U2hhZGVySW5mb0xvZykoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIGluZm9sb2cpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0U2hhZGVySW5mb0xvZykoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZykgewogICAgIENBTExfR0xfQVBJKGdsR2V0U2hhZGVySW5mb0xvZywgc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpKEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwgR0xpbnQqIHJhbmdlLCBHTGludCogcHJlY2lzaW9uKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQsIHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5cGUsIHJhbmdlLCBwcmVjaXNpb24pOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRTaGFkZXJTb3VyY2UpKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBjaGFyKiBzb3VyY2UpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0U2hhZGVyU291cmNlKShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBzb3VyY2UpIHsKICAgICBDQUxMX0dMX0FQSShnbEdldFNoYWRlclNvdXJjZSwgc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7CiB9CiBjb25zdCBHTHVieXRlKiBBUElfRU5UUlkoZ2xHZXRTdHJpbmcpKEdMZW51bSBuYW1lKSB7CkBAIC0yMjYsNyArMjI2LDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsR2V0VW5pZm9ybWl2KShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50KiBwYXJhbXMpIHsKICAgICBDQUxMX0dMX0FQSShnbEdldFVuaWZvcm1pdiwgcHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcyk7CiB9Ci1pbnQgQVBJX0VOVFJZKGdsR2V0VW5pZm9ybUxvY2F0aW9uKShHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkgeworaW50IEFQSV9FTlRSWShnbEdldFVuaWZvcm1Mb2NhdGlvbikoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkgewogICAgIENBTExfR0xfQVBJX1JFVFVSTihnbEdldFVuaWZvcm1Mb2NhdGlvbiwgcHJvZ3JhbSwgbmFtZSk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEdldFZlcnRleEF0dHJpYmZ2KShHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKSB7CkBAIC0yMzUsNyArMjM1LDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsR2V0VmVydGV4QXR0cmliaXYpKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRWZXJ0ZXhBdHRyaWJpdiwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydikoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwb2ludGVyKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KShHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcG9pbnRlcikgewogICAgIENBTExfR0xfQVBJKGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYsIGluZGV4LCBwbmFtZSwgcG9pbnRlcik7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEhpbnQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKSB7CkBAIC0yNzQsNyArMjc0LDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsUG9seWdvbk9mZnNldCkoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpIHsKICAgICBDQUxMX0dMX0FQSShnbFBvbHlnb25PZmZzZXQsIGZhY3RvciwgdW5pdHMpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xSZWFkUGl4ZWxzKShHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHZvaWQqIHBpeGVscykgewordm9pZCBBUElfRU5UUlkoZ2xSZWFkUGl4ZWxzKShHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCogcGl4ZWxzKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xSZWFkUGl4ZWxzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbFJlbGVhc2VTaGFkZXJDb21waWxlcikodm9pZCkgewpAQCAtMjg5LDEwICsyODksMTAgQEAKIHZvaWQgQVBJX0VOVFJZKGdsU2Npc3NvcikoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpIHsKICAgICBDQUxMX0dMX0FQSShnbFNjaXNzb3IsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xTaGFkZXJCaW5hcnkpKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0LCBjb25zdCB2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKSB7Cit2b2lkIEFQSV9FTlRSWShnbFNoYWRlckJpbmFyeSkoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51bSBiaW5hcnlmb3JtYXQsIGNvbnN0IEdMdm9pZCogYmluYXJ5LCBHTHNpemVpIGxlbmd0aCkgewogICAgIENBTExfR0xfQVBJKGdsU2hhZGVyQmluYXJ5LCBuLCBzaGFkZXJzLCBiaW5hcnlmb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsU2hhZGVyU291cmNlKShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBjaGFyKiogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoKSB7Cit2b2lkIEFQSV9FTlRSWShnbFNoYWRlclNvdXJjZSkoR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyKiogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xTaGFkZXJTb3VyY2UsIHNoYWRlciwgY291bnQsIHN0cmluZywgbGVuZ3RoKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsU3RlbmNpbEZ1bmMpKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKSB7CkBAIC0zMTMsNyArMzEzLDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsU3RlbmNpbE9wU2VwYXJhdGUpKEdMZW51bSBmYWNlLCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpIHsKICAgICBDQUxMX0dMX0FQSShnbFN0ZW5jaWxPcFNlcGFyYXRlLCBmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xUZXhJbWFnZTJEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsVGV4SW1hZ2UyRCkoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpIHsKICAgICBDQUxMX0dMX0FQSShnbFRleEltYWdlMkQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsVGV4UGFyYW1ldGVyZikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKSB7CkBAIC0zMjgsNyArMzI4LDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsVGV4UGFyYW1ldGVyaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQqIHBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsVGV4UGFyYW1ldGVyaXYsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbFRleFN1YkltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgewordm9pZCBBUElfRU5UUlkoZ2xUZXhTdWJJbWFnZTJEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykgewogICAgIENBTExfR0xfQVBJKGdsVGV4U3ViSW1hZ2UyRCwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xVbmlmb3JtMWYpKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgpIHsKQEAgLTQxOCw3ICs0MTgsNyBAQAogdm9pZCBBUElfRU5UUlkoZ2xWZXJ0ZXhBdHRyaWI0ZnYpKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpIHsKICAgICBDQUxMX0dMX0FQSShnbFZlcnRleEF0dHJpYjRmdiwgaW5keCwgdmFsdWVzKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsVmVydGV4QXR0cmliUG9pbnRlcikoR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQqIHB0cikgewordm9pZCBBUElfRU5UUlkoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKShHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkKiBwdHIpIHsKICAgICBDQUxMX0dMX0FQSShnbFZlcnRleEF0dHJpYlBvaW50ZXIsIGluZHgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcHRyKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsVmlld3BvcnQpKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSB7CmRpZmYgLS1naXQgYS9vcGVuZ2wvbGlicy9HTEVTMi9nbDJleHRfYXBpLmluIGIvb3BlbmdsL2xpYnMvR0xFUzIvZ2wyZXh0X2FwaS5pbgppbmRleCA2ZWVlY2IzLi5lOTY1NjI1IDEwMDY0NAotLS0gYS9vcGVuZ2wvbGlicy9HTEVTMi9nbDJleHRfYXBpLmluCisrKyBiL29wZW5nbC9saWJzL0dMRVMyL2dsMmV4dF9hcGkuaW4KQEAgLTQsMTAgKzQsMTAgQEAKIHZvaWQgQVBJX0VOVFJZKF9fZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMpKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpIHsKICAgICBDQUxMX0dMX0FQSShnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUywgdGFyZ2V0LCBpbWFnZSk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEdldFByb2dyYW1CaW5hcnlPRVMpKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIHZvaWQgKmJpbmFyeSkgewordm9pZCBBUElfRU5UUlkoZ2xHZXRQcm9ncmFtQmluYXJ5T0VTKShHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZW51bSAqYmluYXJ5Rm9ybWF0LCBHTHZvaWQgKmJpbmFyeSkgewogICAgIENBTExfR0xfQVBJKGdsR2V0UHJvZ3JhbUJpbmFyeU9FUywgcHJvZ3JhbSwgYnVmU2l6ZSwgbGVuZ3RoLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbFByb2dyYW1CaW5hcnlPRVMpKEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCkgewordm9pZCBBUElfRU5UUlkoZ2xQcm9ncmFtQmluYXJ5T0VTKShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3QgR0x2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCkgewogICAgIENBTExfR0xfQVBJKGdsUHJvZ3JhbUJpbmFyeU9FUywgcHJvZ3JhbSwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7CiB9CiB2b2lkKiBBUElfRU5UUlkoZ2xNYXBCdWZmZXJPRVMpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhY2Nlc3MpIHsKQEAgLTE2LDQwICsxNiw1MiBAQAogR0xib29sZWFuIEFQSV9FTlRSWShnbFVubWFwQnVmZmVyT0VTKShHTGVudW0gdGFyZ2V0KSB7CiAgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsVW5tYXBCdWZmZXJPRVMsIHRhcmdldCk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwYXJhbXMpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcGFyYW1zKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRCdWZmZXJQb2ludGVydk9FUywgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsVGV4SW1hZ2UzRE9FUykoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgewordm9pZCBBUElfRU5UUlkoZ2xUZXhJbWFnZTNET0VTKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpIHsKICAgICBDQUxMX0dMX0FQSShnbFRleEltYWdlM0RPRVMsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbFRleFN1YkltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgewordm9pZCBBUElfRU5UUlkoZ2xUZXhTdWJJbWFnZTNET0VTKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykgewogICAgIENBTExfR0xfQVBJKGdsVGV4U3ViSW1hZ2UzRE9FUywgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsQ29weVRleFN1YkltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkgewogICAgIENBTExfR0xfQVBJKGdsQ29weVRleFN1YkltYWdlM0RPRVMsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUykoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpIHsKICAgICBDQUxMX0dMX0FQSShnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSkgewogICAgIENBTExfR0xfQVBJKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEZyYW1lYnVmZmVyVGV4dHVyZTNET0VTKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCB6b2Zmc2V0KSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUywgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsLCB6b2Zmc2V0KTsKIH0KK3ZvaWQgQVBJX0VOVFJZKGdsQmluZFZlcnRleEFycmF5T0VTKShHTHVpbnQgYXJyYXkpIHsKKyAgICBDQUxMX0dMX0FQSShnbEJpbmRWZXJ0ZXhBcnJheU9FUywgYXJyYXkpOworfQordm9pZCBBUElfRU5UUlkoZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVMpKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICphcnJheXMpIHsKKyAgICBDQUxMX0dMX0FQSShnbERlbGV0ZVZlcnRleEFycmF5c09FUywgbiwgYXJyYXlzKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsR2VuVmVydGV4QXJyYXlzT0VTKShHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZW5WZXJ0ZXhBcnJheXNPRVMsIG4sIGFycmF5cyk7Cit9CitHTGJvb2xlYW4gQVBJX0VOVFJZKGdsSXNWZXJ0ZXhBcnJheU9FUykoR0x1aW50IGFycmF5KSB7CisgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsSXNWZXJ0ZXhBcnJheU9FUywgYXJyYXkpOworfQogdm9pZCBBUElfRU5UUlkoZ2xHZXRQZXJmTW9uaXRvckdyb3Vwc0FNRCkoR0xpbnQgKm51bUdyb3VwcywgR0xzaXplaSBncm91cHNTaXplLCBHTHVpbnQgKmdyb3VwcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UGVyZk1vbml0b3JHcm91cHNBTUQsIG51bUdyb3VwcywgZ3JvdXBzU2l6ZSwgZ3JvdXBzKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JDb3VudGVyc0FNRCkoR0x1aW50IGdyb3VwLCBHTGludCAqbnVtQ291bnRlcnMsIEdMaW50ICptYXhBY3RpdmVDb3VudGVycywgR0xzaXplaSBjb3VudGVyU2l6ZSwgR0x1aW50ICpjb3VudGVycykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UGVyZk1vbml0b3JDb3VudGVyc0FNRCwgZ3JvdXAsIG51bUNvdW50ZXJzLCBtYXhBY3RpdmVDb3VudGVycywgY291bnRlclNpemUsIGNvdW50ZXJzKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCkoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqZ3JvdXBTdHJpbmcpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCkoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpncm91cFN0cmluZykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCwgZ3JvdXAsIGJ1ZlNpemUsIGxlbmd0aCwgZ3JvdXBTdHJpbmcpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJTdHJpbmdBTUQpKEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpjb3VudGVyU3RyaW5nKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldFBlcmZNb25pdG9yQ291bnRlclN0cmluZ0FNRCkoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqY291bnRlclN0cmluZykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UGVyZk1vbml0b3JDb3VudGVyU3RyaW5nQU1ELCBncm91cCwgY291bnRlciwgYnVmU2l6ZSwgbGVuZ3RoLCBjb3VudGVyU3RyaW5nKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JDb3VudGVySW5mb0FNRCkoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xlbnVtIHBuYW1lLCB2b2lkICpkYXRhKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldFBlcmZNb25pdG9yQ291bnRlckluZm9BTUQpKEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMZW51bSBwbmFtZSwgR0x2b2lkICpkYXRhKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJJbmZvQU1ELCBncm91cCwgY291bnRlciwgcG5hbWUsIGRhdGEpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xHZW5QZXJmTW9uaXRvcnNBTUQpKEdMc2l6ZWkgbiwgR0x1aW50ICptb25pdG9ycykgewpAQCAtNzAsNiArODIsMjEgQEAKIHZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JDb3VudGVyRGF0YUFNRCkoR0x1aW50IG1vbml0b3IsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBkYXRhU2l6ZSwgR0x1aW50ICpkYXRhLCBHTGludCAqYnl0ZXNXcml0dGVuKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJEYXRhQU1ELCBtb25pdG9yLCBwbmFtZSwgZGF0YVNpemUsIGRhdGEsIGJ5dGVzV3JpdHRlbik7CiB9Cit2b2lkIEFQSV9FTlRSWShnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCkoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgeworICAgIENBTExfR0xfQVBJKGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhULCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbE11bHRpRHJhd0FycmF5c0VYVCkoR0xlbnVtIG1vZGUsIEdMaW50ICpmaXJzdCwgR0xzaXplaSAqY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xNdWx0aURyYXdBcnJheXNFWFQsIG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsTXVsdGlEcmF3RWxlbWVudHNFWFQpKEdMZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xNdWx0aURyYXdFbGVtZW50c0VYVCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRykoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcsIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQordm9pZCBBUElfRU5UUlkoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMpIHsKKyAgICBDQUxMX0dMX0FQSShnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCwgc2FtcGxlcyk7Cit9CiB2b2lkIEFQSV9FTlRSWShnbERlbGV0ZUZlbmNlc05WKShHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqZmVuY2VzKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xEZWxldGVGZW5jZXNOViwgbiwgZmVuY2VzKTsKIH0KQEAgLTkxLDEwICsxMTgsMTYgQEAKIHZvaWQgQVBJX0VOVFJZKGdsU2V0RmVuY2VOVikoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xTZXRGZW5jZU5WLCBmZW5jZSwgY29uZGl0aW9uKTsKIH0KK3ZvaWQgQVBJX0VOVFJZKGdsQ292ZXJhZ2VNYXNrTlYpKEdMYm9vbGVhbiBtYXNrKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xDb3ZlcmFnZU1hc2tOViwgbWFzayk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbENvdmVyYWdlT3BlcmF0aW9uTlYpKEdMZW51bSBvcGVyYXRpb24pIHsKKyAgICBDQUxMX0dMX0FQSShnbENvdmVyYWdlT3BlcmF0aW9uTlYsIG9wZXJhdGlvbik7Cit9CiB2b2lkIEFQSV9FTlRSWShnbEdldERyaXZlckNvbnRyb2xzUUNPTSkoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZlckNvbnRyb2xzKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXREcml2ZXJDb250cm9sc1FDT00sIG51bSwgc2l6ZSwgZHJpdmVyQ29udHJvbHMpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXREcml2ZXJDb250cm9sU3RyaW5nUUNPTSkoR0x1aW50IGRyaXZlckNvbnRyb2wsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpkcml2ZXJDb250cm9sU3RyaW5nKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NKShHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZykgewogICAgIENBTExfR0xfQVBJKGdsR2V0RHJpdmVyQ29udHJvbFN0cmluZ1FDT00sIGRyaXZlckNvbnRyb2wsIGJ1ZlNpemUsIGxlbmd0aCwgZHJpdmVyQ29udHJvbFN0cmluZyk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEVuYWJsZURyaXZlckNvbnRyb2xRQ09NKShHTHVpbnQgZHJpdmVyQ29udHJvbCkgewpAQCAtMTAzLDMgKzEzNiw0NSBAQAogdm9pZCBBUElfRU5UUlkoZ2xEaXNhYmxlRHJpdmVyQ29udHJvbFFDT00pKEdMdWludCBkcml2ZXJDb250cm9sKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xEaXNhYmxlRHJpdmVyQ29udHJvbFFDT00sIGRyaXZlckNvbnRyb2wpOwogfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRUZXh0dXJlc1FDT00pKEdMdWludCAqdGV4dHVyZXMsIEdMaW50IG1heFRleHR1cmVzLCBHTGludCAqbnVtVGV4dHVyZXMpIHsKKyAgICBDQUxMX0dMX0FQSShnbEV4dEdldFRleHR1cmVzUUNPTSwgdGV4dHVyZXMsIG1heFRleHR1cmVzLCBudW1UZXh0dXJlcyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldEJ1ZmZlcnNRQ09NKShHTHVpbnQgKmJ1ZmZlcnMsIEdMaW50IG1heEJ1ZmZlcnMsIEdMaW50ICpudW1CdWZmZXJzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRCdWZmZXJzUUNPTSwgYnVmZmVycywgbWF4QnVmZmVycywgbnVtQnVmZmVycyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldFJlbmRlcmJ1ZmZlcnNRQ09NKShHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMsIEdMaW50IG1heFJlbmRlcmJ1ZmZlcnMsIEdMaW50ICpudW1SZW5kZXJidWZmZXJzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRSZW5kZXJidWZmZXJzUUNPTSwgcmVuZGVyYnVmZmVycywgbWF4UmVuZGVyYnVmZmVycywgbnVtUmVuZGVyYnVmZmVycyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldEZyYW1lYnVmZmVyc1FDT00pKEdMdWludCAqZnJhbWVidWZmZXJzLCBHTGludCBtYXhGcmFtZWJ1ZmZlcnMsIEdMaW50ICpudW1GcmFtZWJ1ZmZlcnMpIHsKKyAgICBDQUxMX0dMX0FQSShnbEV4dEdldEZyYW1lYnVmZmVyc1FDT00sIGZyYW1lYnVmZmVycywgbWF4RnJhbWVidWZmZXJzLCBudW1GcmFtZWJ1ZmZlcnMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRUZXhMZXZlbFBhcmFtZXRlcml2UUNPTSkoR0x1aW50IHRleHR1cmUsIEdMZW51bSBmYWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRUZXhMZXZlbFBhcmFtZXRlcml2UUNPTSwgdGV4dHVyZSwgZmFjZSwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRUZXhPYmplY3RTdGF0ZU92ZXJyaWRlaVFDT00pKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pIHsKKyAgICBDQUxMX0dMX0FQSShnbEV4dFRleE9iamVjdFN0YXRlT3ZlcnJpZGVpUUNPTSwgdGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRUZXhTdWJJbWFnZVFDT00pKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqdGV4ZWxzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRUZXhTdWJJbWFnZVFDT00sIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHRleGVscyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldEJ1ZmZlclBvaW50ZXJ2UUNPTSkoR0xlbnVtIHRhcmdldCwgR0x2b2lkICoqcGFyYW1zKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRCdWZmZXJQb2ludGVydlFDT00sIHRhcmdldCwgcGFyYW1zKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0U2hhZGVyc1FDT00pKEdMdWludCAqc2hhZGVycywgR0xpbnQgbWF4U2hhZGVycywgR0xpbnQgKm51bVNoYWRlcnMpIHsKKyAgICBDQUxMX0dMX0FQSShnbEV4dEdldFNoYWRlcnNRQ09NLCBzaGFkZXJzLCBtYXhTaGFkZXJzLCBudW1TaGFkZXJzKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0UHJvZ3JhbXNRQ09NKShHTHVpbnQgKnByb2dyYW1zLCBHTGludCBtYXhQcm9ncmFtcywgR0xpbnQgKm51bVByb2dyYW1zKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRQcm9ncmFtc1FDT00sIHByb2dyYW1zLCBtYXhQcm9ncmFtcywgbnVtUHJvZ3JhbXMpOworfQorR0xib29sZWFuIEFQSV9FTlRSWShnbEV4dElzUHJvZ3JhbUJpbmFyeVFDT00pKEdMdWludCBwcm9ncmFtKSB7CisgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsRXh0SXNQcm9ncmFtQmluYXJ5UUNPTSwgcHJvZ3JhbSk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldFByb2dyYW1CaW5hcnlTb3VyY2VRQ09NKShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHNoYWRlcnR5cGUsIEdMY2hhciAqc291cmNlLCBHTGludCAqbGVuZ3RoKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRQcm9ncmFtQmluYXJ5U291cmNlUUNPTSwgcHJvZ3JhbSwgc2hhZGVydHlwZSwgc291cmNlLCBsZW5ndGgpOworfQordm9pZCBBUElfRU5UUlkoZ2xTdGFydFRpbGluZ1FDT00pKEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHdpZHRoLCBHTHVpbnQgaGVpZ2h0LCBHTGJpdGZpZWxkIHByZXNlcnZlTWFzaykgeworICAgIENBTExfR0xfQVBJKGdsU3RhcnRUaWxpbmdRQ09NLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBwcmVzZXJ2ZU1hc2spOworfQordm9pZCBBUElfRU5UUlkoZ2xFbmRUaWxpbmdRQ09NKShHTGJpdGZpZWxkIHByZXNlcnZlTWFzaykgeworICAgIENBTExfR0xfQVBJKGdsRW5kVGlsaW5nUUNPTSwgcHJlc2VydmVNYXNrKTsKK30KZGlmZiAtLWdpdCBhL29wZW5nbC9saWJzL0dMRVNfQ00vZ2xfYXBpLmluIGIvb3BlbmdsL2xpYnMvR0xFU19DTS9nbF9hcGkuaW4KaW5kZXggNTQzN2Q0Ny4uN2YyMGM0ZiAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvR0xFU19DTS9nbF9hcGkuaW4KKysrIGIvb3BlbmdsL2xpYnMvR0xFU19DTS9nbF9hcGkuaW4KQEAgLTI1OSw3ICsyNTksNyBAQAogdm9pZCBBUElfRU5UUlkoZ2xHZXRNYXRlcmlhbHh2KShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpIHsKICAgICBDQUxMX0dMX0FQSShnbEdldE1hdGVyaWFseHYsIGZhY2UsIHBuYW1lLCBwYXJhbXMpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRQb2ludGVydikoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldFBvaW50ZXJ2KShHTGVudW0gcG5hbWUsIEdMdm9pZCAqKnBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UG9pbnRlcnYsIHBuYW1lLCBwYXJhbXMpOwogfQogY29uc3QgR0x1Ynl0ZSAqIEFQSV9FTlRSWShnbEdldFN0cmluZykoR0xlbnVtIG5hbWUpIHsKZGlmZiAtLWdpdCBhL29wZW5nbC9saWJzL0dMRVNfQ00vZ2xleHRfYXBpLmluIGIvb3BlbmdsL2xpYnMvR0xFU19DTS9nbGV4dF9hcGkuaW4KaW5kZXggMmM4NjQ4ZS4uNTM5M2ZhNiAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvR0xFU19DTS9nbGV4dF9hcGkuaW4KKysrIGIvb3BlbmdsL2xpYnMvR0xFU19DTS9nbGV4dF9hcGkuaW4KQEAgLTIwNSw3ICsyMDUsNyBAQAogR0xib29sZWFuIEFQSV9FTlRSWShnbFVubWFwQnVmZmVyT0VTKShHTGVudW0gdGFyZ2V0KSB7CiAgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsVW5tYXBCdWZmZXJPRVMsIHRhcmdldCk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwYXJhbXMpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqIHBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEN1cnJlbnRQYWxldHRlTWF0cml4T0VTKShHTHVpbnQgbWF0cml4cGFsZXR0ZWluZGV4KSB7CkBAIC0yNjgsMyArMjY4LDExMSBAQAogdm9pZCBBUElfRU5UUlkoZ2xHZXRUZXhHZW54dk9FUykoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0VGV4R2VueHZPRVMsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKIH0KK3ZvaWQgQVBJX0VOVFJZKGdsQmluZFZlcnRleEFycmF5T0VTKShHTHVpbnQgYXJyYXkpIHsKKyAgICBDQUxMX0dMX0FQSShnbEJpbmRWZXJ0ZXhBcnJheU9FUywgYXJyYXkpOworfQordm9pZCBBUElfRU5UUlkoZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVMpKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICphcnJheXMpIHsKKyAgICBDQUxMX0dMX0FQSShnbERlbGV0ZVZlcnRleEFycmF5c09FUywgbiwgYXJyYXlzKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsR2VuVmVydGV4QXJyYXlzT0VTKShHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZW5WZXJ0ZXhBcnJheXNPRVMsIG4sIGFycmF5cyk7Cit9CitHTGJvb2xlYW4gQVBJX0VOVFJZKGdsSXNWZXJ0ZXhBcnJheU9FUykoR0x1aW50IGFycmF5KSB7CisgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsSXNWZXJ0ZXhBcnJheU9FUywgYXJyYXkpOworfQordm9pZCBBUElfRU5UUlkoZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQpKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpIHsKKyAgICBDQUxMX0dMX0FQSShnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOworfQordm9pZCBBUElfRU5UUlkoZ2xNdWx0aURyYXdBcnJheXNFWFQpKEdMZW51bSBtb2RlLCBHTGludCAqZmlyc3QsIEdMc2l6ZWkgKmNvdW50LCBHTHNpemVpIHByaW1jb3VudCkgeworICAgIENBTExfR0xfQVBJKGdsTXVsdGlEcmF3QXJyYXlzRVhULCBtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbE11bHRpRHJhd0VsZW1lbnRzRVhUKShHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCkgeworICAgIENBTExfR0xfQVBJKGdsTXVsdGlEcmF3RWxlbWVudHNFWFQsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQpOworfQordm9pZCBBUElfRU5UUlkoZ2xDbGlwUGxhbmVmSU1HKShHTGVudW0gcCwgY29uc3QgR0xmbG9hdCAqZXFuKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xDbGlwUGxhbmVmSU1HLCBwLCBlcW4pOworfQordm9pZCBBUElfRU5UUlkoZ2xDbGlwUGxhbmV4SU1HKShHTGVudW0gcCwgY29uc3QgR0xmaXhlZCAqZXFuKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xDbGlwUGxhbmV4SU1HLCBwLCBlcW4pOworfQordm9pZCBBUElfRU5UUlkoZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcpKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkgeworICAgIENBTExfR0xfQVBJKGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HLCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRykoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xzaXplaSBzYW1wbGVzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HLCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpOworfQordm9pZCBBUElfRU5UUlkoZ2xEZWxldGVGZW5jZXNOVikoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcykgeworICAgIENBTExfR0xfQVBJKGdsRGVsZXRlRmVuY2VzTlYsIG4sIGZlbmNlcyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEdlbkZlbmNlc05WKShHTHNpemVpIG4sIEdMdWludCAqZmVuY2VzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZW5GZW5jZXNOViwgbiwgZmVuY2VzKTsKK30KK0dMYm9vbGVhbiBBUElfRU5UUlkoZ2xJc0ZlbmNlTlYpKEdMdWludCBmZW5jZSkgeworICAgIENBTExfR0xfQVBJX1JFVFVSTihnbElzRmVuY2VOViwgZmVuY2UpOworfQorR0xib29sZWFuIEFQSV9FTlRSWShnbFRlc3RGZW5jZU5WKShHTHVpbnQgZmVuY2UpIHsKKyAgICBDQUxMX0dMX0FQSV9SRVRVUk4oZ2xUZXN0RmVuY2VOViwgZmVuY2UpOworfQordm9pZCBBUElfRU5UUlkoZ2xHZXRGZW5jZWl2TlYpKEdMdWludCBmZW5jZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZXRGZW5jZWl2TlYsIGZlbmNlLCBwbmFtZSwgcGFyYW1zKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRmluaXNoRmVuY2VOVikoR0x1aW50IGZlbmNlKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xGaW5pc2hGZW5jZU5WLCBmZW5jZSk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbFNldEZlbmNlTlYpKEdMdWludCBmZW5jZSwgR0xlbnVtIGNvbmRpdGlvbikgeworICAgIENBTExfR0xfQVBJKGdsU2V0RmVuY2VOViwgZmVuY2UsIGNvbmRpdGlvbik7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEdldERyaXZlckNvbnRyb2xzUUNPTSkoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZlckNvbnRyb2xzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZXREcml2ZXJDb250cm9sc1FDT00sIG51bSwgc2l6ZSwgZHJpdmVyQ29udHJvbHMpOworfQordm9pZCBBUElfRU5UUlkoZ2xHZXREcml2ZXJDb250cm9sU3RyaW5nUUNPTSkoR0x1aW50IGRyaXZlckNvbnRyb2wsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmRyaXZlckNvbnRyb2xTdHJpbmcpIHsKKyAgICBDQUxMX0dMX0FQSShnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NLCBkcml2ZXJDb250cm9sLCBidWZTaXplLCBsZW5ndGgsIGRyaXZlckNvbnRyb2xTdHJpbmcpOworfQordm9pZCBBUElfRU5UUlkoZ2xFbmFibGVEcml2ZXJDb250cm9sUUNPTSkoR0x1aW50IGRyaXZlckNvbnRyb2wpIHsKKyAgICBDQUxMX0dMX0FQSShnbEVuYWJsZURyaXZlckNvbnRyb2xRQ09NLCBkcml2ZXJDb250cm9sKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRGlzYWJsZURyaXZlckNvbnRyb2xRQ09NKShHTHVpbnQgZHJpdmVyQ29udHJvbCkgeworICAgIENBTExfR0xfQVBJKGdsRGlzYWJsZURyaXZlckNvbnRyb2xRQ09NLCBkcml2ZXJDb250cm9sKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0VGV4dHVyZXNRQ09NKShHTHVpbnQgKnRleHR1cmVzLCBHTGludCBtYXhUZXh0dXJlcywgR0xpbnQgKm51bVRleHR1cmVzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRUZXh0dXJlc1FDT00sIHRleHR1cmVzLCBtYXhUZXh0dXJlcywgbnVtVGV4dHVyZXMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRCdWZmZXJzUUNPTSkoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0QnVmZmVyc1FDT00sIGJ1ZmZlcnMsIG1heEJ1ZmZlcnMsIG51bUJ1ZmZlcnMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRSZW5kZXJidWZmZXJzUUNPTSkoR0x1aW50ICpyZW5kZXJidWZmZXJzLCBHTGludCBtYXhSZW5kZXJidWZmZXJzLCBHTGludCAqbnVtUmVuZGVyYnVmZmVycykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0UmVuZGVyYnVmZmVyc1FDT00sIHJlbmRlcmJ1ZmZlcnMsIG1heFJlbmRlcmJ1ZmZlcnMsIG51bVJlbmRlcmJ1ZmZlcnMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRGcmFtZWJ1ZmZlcnNRQ09NKShHTHVpbnQgKmZyYW1lYnVmZmVycywgR0xpbnQgbWF4RnJhbWVidWZmZXJzLCBHTGludCAqbnVtRnJhbWVidWZmZXJzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRGcmFtZWJ1ZmZlcnNRQ09NLCBmcmFtZWJ1ZmZlcnMsIG1heEZyYW1lYnVmZmVycywgbnVtRnJhbWVidWZmZXJzKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlFDT00pKEdMdWludCB0ZXh0dXJlLCBHTGVudW0gZmFjZSwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlFDT00sIHRleHR1cmUsIGZhY2UsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0VGV4T2JqZWN0U3RhdGVPdmVycmlkZWlRQ09NKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRUZXhPYmplY3RTdGF0ZU92ZXJyaWRlaVFDT00sIHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0VGV4U3ViSW1hZ2VRQ09NKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnRleGVscykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0VGV4U3ViSW1hZ2VRQ09NLCB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCB0ZXhlbHMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRCdWZmZXJQb2ludGVydlFDT00pKEdMZW51bSB0YXJnZXQsIEdMdm9pZCAqKnBhcmFtcykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0QnVmZmVyUG9pbnRlcnZRQ09NLCB0YXJnZXQsIHBhcmFtcyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldFNoYWRlcnNRQ09NKShHTHVpbnQgKnNoYWRlcnMsIEdMaW50IG1heFNoYWRlcnMsIEdMaW50ICpudW1TaGFkZXJzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRTaGFkZXJzUUNPTSwgc2hhZGVycywgbWF4U2hhZGVycywgbnVtU2hhZGVycyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldFByb2dyYW1zUUNPTSkoR0x1aW50ICpwcm9ncmFtcywgR0xpbnQgbWF4UHJvZ3JhbXMsIEdMaW50ICpudW1Qcm9ncmFtcykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0UHJvZ3JhbXNRQ09NLCBwcm9ncmFtcywgbWF4UHJvZ3JhbXMsIG51bVByb2dyYW1zKTsKK30KK0dMYm9vbGVhbiBBUElfRU5UUlkoZ2xFeHRJc1Byb2dyYW1CaW5hcnlRQ09NKShHTHVpbnQgcHJvZ3JhbSkgeworICAgIENBTExfR0xfQVBJX1JFVFVSTihnbEV4dElzUHJvZ3JhbUJpbmFyeVFDT00sIHByb2dyYW0pOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRQcm9ncmFtQmluYXJ5U291cmNlUUNPTSkoR0x1aW50IHByb2dyYW0sIEdMZW51bSBzaGFkZXJ0eXBlLCBHTGNoYXIgKnNvdXJjZSwgR0xpbnQgKmxlbmd0aCkgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0UHJvZ3JhbUJpbmFyeVNvdXJjZVFDT00sIHByb2dyYW0sIHNoYWRlcnR5cGUsIHNvdXJjZSwgbGVuZ3RoKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsU3RhcnRUaWxpbmdRQ09NKShHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spIHsKKyAgICBDQUxMX0dMX0FQSShnbFN0YXJ0VGlsaW5nUUNPTSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcHJlc2VydmVNYXNrKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRW5kVGlsaW5nUUNPTSkoR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spIHsKKyAgICBDQUxMX0dMX0FQSShnbEVuZFRpbGluZ1FDT00sIHByZXNlcnZlTWFzayk7Cit9CmRpZmYgLS1naXQgYS9vcGVuZ2wvbGlicy9lZ2xfaW1wbC5oIGIvb3BlbmdsL2xpYnMvZWdsX2ltcGwuaAppbmRleCAxZmJhMjA5ZjcuLmM4ZjUyOWEgMTAwNjQ0Ci0tLSBhL29wZW5nbC9saWJzL2VnbF9pbXBsLmgKKysrIGIvb3BlbmdsL2xpYnMvZWdsX2ltcGwuaApAQCAtMzEsNiArMzEsNyBAQAogCiBzdHJ1Y3QgZWdsX2Nvbm5lY3Rpb25fdAogeworICAgIGlubGluZSBlZ2xfY29ubmVjdGlvbl90KCkgOiBkc28oMCkgeyB9CiAgICAgdm9pZCAqICAgICAgICAgICAgICBkc287CiAgICAgZ2xfaG9va3NfdCAqICAgICAgICBob29rc1syXTsKICAgICBFR0xpbnQgICAgICAgICAgICAgIG1ham9yOwpkaWZmIC0tZ2l0IGEvb3BlbmdsL2xpYnMvZW50cmllcy5pbiBiL29wZW5nbC9saWJzL2VudHJpZXMuaW4KaW5kZXggYmJlM2UyMy4uNjFhY2I1ZiAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvZW50cmllcy5pbgorKysgYi9vcGVuZ2wvbGlicy9lbnRyaWVzLmluCkBAIC00LDEzICs0LDE0IEBACiBHTF9FTlRSWSh2b2lkLCBnbEFscGhhRnVuY3hPRVMsIEdMZW51bSBmdW5jLCBHTGNsYW1weCByZWYpCiBHTF9FTlRSWSh2b2lkLCBnbEF0dGFjaFNoYWRlciwgR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEJlZ2luUGVyZk1vbml0b3JBTUQsIEdMdWludCBtb25pdG9yKQotR0xfRU5UUlkodm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIqIG5hbWUpCitHTF9FTlRSWSh2b2lkLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwgR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyKiBuYW1lKQogR0xfRU5UUlkodm9pZCwgZ2xCaW5kQnVmZmVyLCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQogR0xfRU5UUlkodm9pZCwgZ2xCaW5kRnJhbWVidWZmZXIsIEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcikKIEdMX0VOVFJZKHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyT0VTLCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXIsIEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXJPRVMsIEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEJpbmRUZXh0dXJlLCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSkKK0dMX0VOVFJZKHZvaWQsIGdsQmluZFZlcnRleEFycmF5T0VTLCBHTHVpbnQgYXJyYXkpCiBHTF9FTlRSWSh2b2lkLCBnbEJsZW5kQ29sb3IsIEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKQogR0xfRU5UUlkodm9pZCwgZ2xCbGVuZEVxdWF0aW9uLCAgR0xlbnVtIG1vZGUgKQogR0xfRU5UUlkodm9pZCwgZ2xCbGVuZEVxdWF0aW9uT0VTLCBHTGVudW0gbW9kZSkKQEAgLTM0LDggKzM1LDEwIEBACiBHTF9FTlRSWSh2b2lkLCBnbENsZWFyU3RlbmNpbCwgR0xpbnQgcykKIEdMX0VOVFJZKHZvaWQsIGdsQ2xpZW50QWN0aXZlVGV4dHVyZSwgR0xlbnVtIHRleHR1cmUpCiBHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZWYsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmbG9hdCAqZXF1YXRpb24pCitHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZWZJTUcsIEdMZW51bSBwLCBjb25zdCBHTGZsb2F0ICplcW4pCiBHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZWZPRVMsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmbG9hdCAqZXF1YXRpb24pCiBHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZXgsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmaXhlZCAqZXF1YXRpb24pCitHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZXhJTUcsIEdMZW51bSBwLCBjb25zdCBHTGZpeGVkICplcW4pCiBHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZXhPRVMsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmaXhlZCAqZXF1YXRpb24pCiBHTF9FTlRSWSh2b2lkLCBnbENvbG9yNGYsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpCiBHTF9FTlRSWSh2b2lkLCBnbENvbG9yNHViLCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGhhKQpAQCAtNDUsMTIgKzQ4LDE0IEBACiBHTF9FTlRSWSh2b2lkLCBnbENvbG9yUG9pbnRlciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpCiBHTF9FTlRSWSh2b2lkLCBnbENvbXBpbGVTaGFkZXIsIEdMdWludCBzaGFkZXIpCiBHTF9FTlRSWSh2b2lkLCBnbENvbXByZXNzZWRUZXhJbWFnZTJELCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKQotR0xfRU5UUlkodm9pZCwgZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUywgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCitHTF9FTlRSWSh2b2lkLCBnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKQogR0xfRU5UUlkodm9pZCwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKQotR0xfRU5UUlkodm9pZCwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUywgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK0dMX0VOVFJZKHZvaWQsIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSkKIEdMX0VOVFJZKHZvaWQsIGdsQ29weVRleEltYWdlMkQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpCiBHTF9FTlRSWSh2b2lkLCBnbENvcHlUZXhTdWJJbWFnZTJELCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiBHTF9FTlRSWSh2b2lkLCBnbENvcHlUZXhTdWJJbWFnZTNET0VTLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCitHTF9FTlRSWSh2b2lkLCBnbENvdmVyYWdlTWFza05WLCBHTGJvb2xlYW4gbWFzaykKK0dMX0VOVFJZKHZvaWQsIGdsQ292ZXJhZ2VPcGVyYXRpb25OViwgR0xlbnVtIG9wZXJhdGlvbikKIEdMX0VOVFJZKEdMdWludCwgZ2xDcmVhdGVQcm9ncmFtLCB2b2lkKQogR0xfRU5UUlkoR0x1aW50LCBnbENyZWF0ZVNoYWRlciwgR0xlbnVtIHR5cGUpCiBHTF9FTlRSWSh2b2lkLCBnbEN1bGxGYWNlLCBHTGVudW0gbW9kZSkKQEAgLTY1LDYgKzcwLDcgQEAKIEdMX0VOVFJZKHZvaWQsIGdsRGVsZXRlUmVuZGVyYnVmZmVyc09FUywgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCiBHTF9FTlRSWSh2b2lkLCBnbERlbGV0ZVNoYWRlciwgR0x1aW50IHNoYWRlcikKIEdMX0VOVFJZKHZvaWQsIGdsRGVsZXRlVGV4dHVyZXMsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcykKK0dMX0VOVFJZKHZvaWQsIGdsRGVsZXRlVmVydGV4QXJyYXlzT0VTLCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYXJyYXlzKQogR0xfRU5UUlkodm9pZCwgZ2xEZXB0aEZ1bmMsIEdMZW51bSBmdW5jKQogR0xfRU5UUlkodm9pZCwgZ2xEZXB0aE1hc2ssIEdMYm9vbGVhbiBmbGFnKQogR0xfRU5UUlkodm9pZCwgZ2xEZXB0aFJhbmdlZiwgR0xjbGFtcGYgek5lYXIsIEdMY2xhbXBmIHpGYXIpCkBAIC03Niw2ICs4Miw3IEBACiBHTF9FTlRSWSh2b2lkLCBnbERpc2FibGVDbGllbnRTdGF0ZSwgR0xlbnVtIGFycmF5KQogR0xfRU5UUlkodm9pZCwgZ2xEaXNhYmxlRHJpdmVyQ29udHJvbFFDT00sIEdMdWludCBkcml2ZXJDb250cm9sKQogR0xfRU5UUlkodm9pZCwgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXksIEdMdWludCBpbmRleCkKK0dMX0VOVFJZKHZvaWQsIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhULCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogR0xfRU5UUlkodm9pZCwgZ2xEcmF3QXJyYXlzLCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiBHTF9FTlRSWSh2b2lkLCBnbERyYXdFbGVtZW50cywgR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMpCiBHTF9FTlRSWSh2b2lkLCBnbERyYXdUZXhmT0VTLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHdpZHRoLCBHTGZsb2F0IGhlaWdodCkKQEAgLTkzLDYgKzEwMCwxOSBAQAogR0xfRU5UUlkodm9pZCwgZ2xFbmFibGVEcml2ZXJDb250cm9sUUNPTSwgR0x1aW50IGRyaXZlckNvbnRyb2wpCiBHTF9FTlRSWSh2b2lkLCBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCBHTHVpbnQgaW5kZXgpCiBHTF9FTlRSWSh2b2lkLCBnbEVuZFBlcmZNb25pdG9yQU1ELCBHTHVpbnQgbW9uaXRvcikKK0dMX0VOVFJZKHZvaWQsIGdsRW5kVGlsaW5nUUNPTSwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spCitHTF9FTlRSWSh2b2lkLCBnbEV4dEdldEJ1ZmZlclBvaW50ZXJ2UUNPTSwgR0xlbnVtIHRhcmdldCwgR0x2b2lkICoqcGFyYW1zKQorR0xfRU5UUlkodm9pZCwgZ2xFeHRHZXRCdWZmZXJzUUNPTSwgR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycykKK0dMX0VOVFJZKHZvaWQsIGdsRXh0R2V0RnJhbWVidWZmZXJzUUNPTSwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMsIEdMaW50IG1heEZyYW1lYnVmZmVycywgR0xpbnQgKm51bUZyYW1lYnVmZmVycykKK0dMX0VOVFJZKHZvaWQsIGdsRXh0R2V0UHJvZ3JhbUJpbmFyeVNvdXJjZVFDT00sIEdMdWludCBwcm9ncmFtLCBHTGVudW0gc2hhZGVydHlwZSwgR0xjaGFyICpzb3VyY2UsIEdMaW50ICpsZW5ndGgpCitHTF9FTlRSWSh2b2lkLCBnbEV4dEdldFByb2dyYW1zUUNPTSwgR0x1aW50ICpwcm9ncmFtcywgR0xpbnQgbWF4UHJvZ3JhbXMsIEdMaW50ICpudW1Qcm9ncmFtcykKK0dMX0VOVFJZKHZvaWQsIGdsRXh0R2V0UmVuZGVyYnVmZmVyc1FDT00sIEdMdWludCAqcmVuZGVyYnVmZmVycywgR0xpbnQgbWF4UmVuZGVyYnVmZmVycywgR0xpbnQgKm51bVJlbmRlcmJ1ZmZlcnMpCitHTF9FTlRSWSh2b2lkLCBnbEV4dEdldFNoYWRlcnNRQ09NLCBHTHVpbnQgKnNoYWRlcnMsIEdMaW50IG1heFNoYWRlcnMsIEdMaW50ICpudW1TaGFkZXJzKQorR0xfRU5UUlkodm9pZCwgZ2xFeHRHZXRUZXhMZXZlbFBhcmFtZXRlcml2UUNPTSwgR0x1aW50IHRleHR1cmUsIEdMZW51bSBmYWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQorR0xfRU5UUlkodm9pZCwgZ2xFeHRHZXRUZXhTdWJJbWFnZVFDT00sIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqdGV4ZWxzKQorR0xfRU5UUlkodm9pZCwgZ2xFeHRHZXRUZXh0dXJlc1FDT00sIEdMdWludCAqdGV4dHVyZXMsIEdMaW50IG1heFRleHR1cmVzLCBHTGludCAqbnVtVGV4dHVyZXMpCitHTF9FTlRSWShHTGJvb2xlYW4sIGdsRXh0SXNQcm9ncmFtQmluYXJ5UUNPTSwgR0x1aW50IHByb2dyYW0pCitHTF9FTlRSWSh2b2lkLCBnbEV4dFRleE9iamVjdFN0YXRlT3ZlcnJpZGVpUUNPTSwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIEdMX0VOVFJZKHZvaWQsIGdsRmluaXNoLCB2b2lkKQogR0xfRU5UUlkodm9pZCwgZ2xGaW5pc2hGZW5jZU5WLCBHTHVpbnQgZmVuY2UpCiBHTF9FTlRSWSh2b2lkLCBnbEZsdXNoLCB2b2lkKQpAQCAtMTA1LDYgKzEyNSw3IEBACiBHTF9FTlRSWSh2b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIEdMX0VOVFJZKHZvaWQsIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQogR0xfRU5UUlkodm9pZCwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCkKK0dMX0VOVFJZKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xzaXplaSBzYW1wbGVzKQogR0xfRU5UUlkodm9pZCwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCkKIEdMX0VOVFJZKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHpvZmZzZXQpCiBHTF9FTlRSWSh2b2lkLCBnbEZyb250RmFjZSwgR0xlbnVtIG1vZGUpCkBAIC0xMjAsMjAgKzE0MSwyMSBAQAogR0xfRU5UUlkodm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzLCBHTHNpemVpIG4sIEdMdWludCogcmVuZGVyYnVmZmVycykKIEdMX0VOVFJZKHZvaWQsIGdsR2VuUmVuZGVyYnVmZmVyc09FUywgR0xzaXplaSBuLCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCiBHTF9FTlRSWSh2b2lkLCBnbEdlblRleHR1cmVzLCBHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpCitHTF9FTlRSWSh2b2lkLCBnbEdlblZlcnRleEFycmF5c09FUywgR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cykKIEdMX0VOVFJZKHZvaWQsIGdsR2VuZXJhdGVNaXBtYXAsIEdMZW51bSB0YXJnZXQpCiBHTF9FTlRSWSh2b2lkLCBnbEdlbmVyYXRlTWlwbWFwT0VTLCBHTGVudW0gdGFyZ2V0KQotR0xfRU5UUlkodm9pZCwgZ2xHZXRBY3RpdmVBdHRyaWIsIEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBjaGFyKiBuYW1lKQotR0xfRU5UUlkodm9pZCwgZ2xHZXRBY3RpdmVVbmlmb3JtLCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgY2hhciogbmFtZSkKK0dMX0VOVFJZKHZvaWQsIGdsR2V0QWN0aXZlQXR0cmliLCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRBY3RpdmVVbmlmb3JtLCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKQogR0xfRU5UUlkodm9pZCwgZ2xHZXRBdHRhY2hlZFNoYWRlcnMsIEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heGNvdW50LCBHTHNpemVpKiBjb3VudCwgR0x1aW50KiBzaGFkZXJzKQotR0xfRU5UUlkoaW50LCBnbEdldEF0dHJpYkxvY2F0aW9uLCBHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkKK0dMX0VOVFJZKGludCwgZ2xHZXRBdHRyaWJMb2NhdGlvbiwgR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKIEdMX0VOVFJZKHZvaWQsIGdsR2V0Qm9vbGVhbnYsIEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEdldEJ1ZmZlclBhcmFtZXRlcml2LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi1HTF9FTlRSWSh2b2lkLCBnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTLCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwYXJhbXMpCitHTF9FTlRSWSh2b2lkLCBnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTLCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdm9pZCAqKiBwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEdldENsaXBQbGFuZWYsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBlcW5bNF0pCiBHTF9FTlRSWSh2b2lkLCBnbEdldENsaXBQbGFuZWZPRVMsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBlcW5bNF0pCiBHTF9FTlRSWSh2b2lkLCBnbEdldENsaXBQbGFuZXgsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBlcW5bNF0pCiBHTF9FTlRSWSh2b2lkLCBnbEdldENsaXBQbGFuZXhPRVMsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBlcW5bNF0pCi1HTF9FTlRSWSh2b2lkLCBnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NLCBHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmRyaXZlckNvbnRyb2xTdHJpbmcpCitHTF9FTlRSWSh2b2lkLCBnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NLCBHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0RHJpdmVyQ29udHJvbHNRQ09NLCBHTGludCAqbnVtLCBHTHNpemVpIHNpemUsIEdMdWludCAqZHJpdmVyQ29udHJvbHMpCiBHTF9FTlRSWShHTGVudW0sIGdsR2V0RXJyb3IsIHZvaWQpCiBHTF9FTlRSWSh2b2lkLCBnbEdldEZlbmNlaXZOViwgR0x1aW50IGZlbmNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCkBAIC0xNTAsMjAgKzE3MiwyMCBAQAogR0xfRU5UUlkodm9pZCwgZ2xHZXRNYXRlcmlhbHh2LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEdldE1hdGVyaWFseHZPRVMsIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0UGVyZk1vbml0b3JDb3VudGVyRGF0YUFNRCwgR0x1aW50IG1vbml0b3IsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBkYXRhU2l6ZSwgR0x1aW50ICpkYXRhLCBHTGludCAqYnl0ZXNXcml0dGVuKQotR0xfRU5UUlkodm9pZCwgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJJbmZvQU1ELCBHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKmRhdGEpCi1HTF9FTlRSWSh2b2lkLCBnbEdldFBlcmZNb25pdG9yQ291bnRlclN0cmluZ0FNRCwgR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmNvdW50ZXJTdHJpbmcpCitHTF9FTlRSWSh2b2lkLCBnbEdldFBlcmZNb25pdG9yQ291bnRlckluZm9BTUQsIEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMZW51bSBwbmFtZSwgR0x2b2lkICpkYXRhKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJTdHJpbmdBTUQsIEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmNvdW50ZXJTdHJpbmcpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFBlcmZNb25pdG9yQ291bnRlcnNBTUQsIEdMdWludCBncm91cCwgR0xpbnQgKm51bUNvdW50ZXJzLCBHTGludCAqbWF4QWN0aXZlQ291bnRlcnMsIEdMc2l6ZWkgY291bnRlclNpemUsIEdMdWludCAqY291bnRlcnMpCi1HTF9FTlRSWSh2b2lkLCBnbEdldFBlcmZNb25pdG9yR3JvdXBTdHJpbmdBTUQsIEdMdWludCBncm91cCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmdyb3VwU3RyaW5nKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRQZXJmTW9uaXRvckdyb3VwU3RyaW5nQU1ELCBHTHVpbnQgZ3JvdXAsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmdyb3VwU3RyaW5nKQogR0xfRU5UUlkodm9pZCwgZ2xHZXRQZXJmTW9uaXRvckdyb3Vwc0FNRCwgR0xpbnQgKm51bUdyb3VwcywgR0xzaXplaSBncm91cHNTaXplLCBHTHVpbnQgKmdyb3VwcykKLUdMX0VOVFJZKHZvaWQsIGdsR2V0UG9pbnRlcnYsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKLUdMX0VOVFJZKHZvaWQsIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUywgR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5KQotR0xfRU5UUlkodm9pZCwgZ2xHZXRQcm9ncmFtSW5mb0xvZywgR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBjaGFyKiBpbmZvbG9nKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRQb2ludGVydiwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwYXJhbXMpCitHTF9FTlRSWSh2b2lkLCBnbEdldFByb2dyYW1CaW5hcnlPRVMsIEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIEdMdm9pZCAqYmluYXJ5KQorR0xfRU5UUlkodm9pZCwgZ2xHZXRQcm9ncmFtSW5mb0xvZywgR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFByb2dyYW1pdiwgR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKLUdMX0VOVFJZKHZvaWQsIGdsR2V0U2hhZGVySW5mb0xvZywgR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIGluZm9sb2cpCitHTF9FTlRSWSh2b2lkLCBnbEdldFNoYWRlckluZm9Mb2csIEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCwgR0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCogcmFuZ2UsIEdMaW50KiBwcmVjaXNpb24pCi1HTF9FTlRSWSh2b2lkLCBnbEdldFNoYWRlclNvdXJjZSwgR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIHNvdXJjZSkKK0dMX0VOVFJZKHZvaWQsIGdsR2V0U2hhZGVyU291cmNlLCBHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBzb3VyY2UpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFNoYWRlcml2LCBHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiBHTF9FTlRSWShjb25zdCBHTHVieXRlICosIGdsR2V0U3RyaW5nLCBHTGVudW0gbmFtZSkKIEdMX0VOVFJZKHZvaWQsIGdsR2V0VGV4RW52ZnYsIEdMZW51bSBlbnYsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQpAQCAtMTc3LDEwICsxOTksMTAgQEAKIEdMX0VOVFJZKHZvaWQsIGdsR2V0VGV4UGFyYW1ldGVyaXYsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0VGV4UGFyYW1ldGVyeHYsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKQogR0xfRU5UUlkodm9pZCwgZ2xHZXRUZXhQYXJhbWV0ZXJ4dk9FUywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCi1HTF9FTlRSWShpbnQsIGdsR2V0VW5pZm9ybUxvY2F0aW9uLCBHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkKK0dMX0VOVFJZKGludCwgZ2xHZXRVbmlmb3JtTG9jYXRpb24sIEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIqIG5hbWUpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFVuaWZvcm1mdiwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFVuaWZvcm1pdiwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCogcGFyYW1zKQotR0xfRU5UUlkodm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwb2ludGVyKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMdm9pZCoqIHBvaW50ZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFZlcnRleEF0dHJpYmZ2LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQogR0xfRU5UUlkodm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdiwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEhpbnQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKQpAQCAtMTk0LDYgKzIxNiw3IEBACiBHTF9FTlRSWShHTGJvb2xlYW4sIGdsSXNSZW5kZXJidWZmZXJPRVMsIEdMdWludCByZW5kZXJidWZmZXIpCiBHTF9FTlRSWShHTGJvb2xlYW4sIGdsSXNTaGFkZXIsIEdMdWludCBzaGFkZXIpCiBHTF9FTlRSWShHTGJvb2xlYW4sIGdsSXNUZXh0dXJlLCBHTHVpbnQgdGV4dHVyZSkKK0dMX0VOVFJZKEdMYm9vbGVhbiwgZ2xJc1ZlcnRleEFycmF5T0VTLCBHTHVpbnQgYXJyYXkpCiBHTF9FTlRSWSh2b2lkLCBnbExpZ2h0TW9kZWxmLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiBHTF9FTlRSWSh2b2lkLCBnbExpZ2h0TW9kZWxmdiwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbExpZ2h0TW9kZWx4LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCkBAIC0yMjgsNiArMjUxLDggQEAKIEdMX0VOVFJZKHZvaWQsIGdsTXVsdE1hdHJpeGYsIGNvbnN0IEdMZmxvYXQgKm0pCiBHTF9FTlRSWSh2b2lkLCBnbE11bHRNYXRyaXh4LCBjb25zdCBHTGZpeGVkICptKQogR0xfRU5UUlkodm9pZCwgZ2xNdWx0TWF0cml4eE9FUywgY29uc3QgR0xmaXhlZCAqbSkKK0dMX0VOVFJZKHZvaWQsIGdsTXVsdGlEcmF3QXJyYXlzRVhULCBHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpCitHTF9FTlRSWSh2b2lkLCBnbE11bHRpRHJhd0VsZW1lbnRzRVhULCBHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCkKIEdMX0VOVFJZKHZvaWQsIGdsTXVsdGlUZXhDb29yZDRmLCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpCiBHTF9FTlRSWSh2b2lkLCBnbE11bHRpVGV4Q29vcmQ0eCwgR0xlbnVtIHRhcmdldCwgR0xmaXhlZCBzLCBHTGZpeGVkIHQsIEdMZml4ZWQgciwgR0xmaXhlZCBxKQogR0xfRU5UUlkodm9pZCwgZ2xNdWx0aVRleENvb3JkNHhPRVMsIEdMZW51bSB0YXJnZXQsIEdMZml4ZWQgcywgR0xmaXhlZCB0LCBHTGZpeGVkIHIsIEdMZml4ZWQgcSkKQEAgLTI1NCwxMiArMjc5LDEzIEBACiBHTF9FTlRSWSh2b2lkLCBnbFBvbHlnb25PZmZzZXR4LCBHTGZpeGVkIGZhY3RvciwgR0xmaXhlZCB1bml0cykKIEdMX0VOVFJZKHZvaWQsIGdsUG9seWdvbk9mZnNldHhPRVMsIEdMZml4ZWQgZmFjdG9yLCBHTGZpeGVkIHVuaXRzKQogR0xfRU5UUlkodm9pZCwgZ2xQb3BNYXRyaXgsIHZvaWQpCi1HTF9FTlRSWSh2b2lkLCBnbFByb2dyYW1CaW5hcnlPRVMsIEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCkKK0dMX0VOVFJZKHZvaWQsIGdsUHJvZ3JhbUJpbmFyeU9FUywgR0x1aW50IHByb2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQsIGNvbnN0IEdMdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpCiBHTF9FTlRSWSh2b2lkLCBnbFB1c2hNYXRyaXgsIHZvaWQpCiBHTF9FTlRSWShHTGJpdGZpZWxkLCBnbFF1ZXJ5TWF0cml4eE9FUywgR0xmaXhlZCBtYW50aXNzYVsxNl0sIEdMaW50IGV4cG9uZW50WzE2XSkKIEdMX0VOVFJZKHZvaWQsIGdsUmVhZFBpeGVscywgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnBpeGVscykKIEdMX0VOVFJZKHZvaWQsIGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyLCB2b2lkKQogR0xfRU5UUlkodm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorR0xfRU5UUlkodm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIEdMX0VOVFJZKHZvaWQsIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU9FUywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIEdMX0VOVFJZKHZvaWQsIGdsUm90YXRlZiwgR0xmbG9hdCBhbmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIEdMX0VOVFJZKHZvaWQsIGdsUm90YXRleCwgR0xmaXhlZCBhbmdsZSwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKQEAgLTI3NCw4ICszMDAsOSBAQAogR0xfRU5UUlkodm9pZCwgZ2xTZWxlY3RQZXJmTW9uaXRvckNvdW50ZXJzQU1ELCBHTHVpbnQgbW9uaXRvciwgR0xib29sZWFuIGVuYWJsZSwgR0x1aW50IGdyb3VwLCBHTGludCBudW1Db3VudGVycywgR0x1aW50ICpjb3VudGVyc0xpc3QpCiBHTF9FTlRSWSh2b2lkLCBnbFNldEZlbmNlTlYsIEdMdWludCBmZW5jZSwgR0xlbnVtIGNvbmRpdGlvbikKIEdMX0VOVFJZKHZvaWQsIGdsU2hhZGVNb2RlbCwgR0xlbnVtIG1vZGUpCi1HTF9FTlRSWSh2b2lkLCBnbFNoYWRlckJpbmFyeSwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51bSBiaW5hcnlmb3JtYXQsIGNvbnN0IHZvaWQqIGJpbmFyeSwgR0xzaXplaSBsZW5ndGgpCi1HTF9FTlRSWSh2b2lkLCBnbFNoYWRlclNvdXJjZSwgR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3VudCwgY29uc3QgY2hhcioqIHN0cmluZywgY29uc3QgR0xpbnQqIGxlbmd0aCkKK0dMX0VOVFJZKHZvaWQsIGdsU2hhZGVyQmluYXJ5LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFyeWZvcm1hdCwgY29uc3QgR0x2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKQorR0xfRU5UUlkodm9pZCwgZ2xTaGFkZXJTb3VyY2UsIEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhcioqIHN0cmluZywgY29uc3QgR0xpbnQqIGxlbmd0aCkKK0dMX0VOVFJZKHZvaWQsIGdsU3RhcnRUaWxpbmdRQ09NLCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spCiBHTF9FTlRSWSh2b2lkLCBnbFN0ZW5jaWxGdW5jLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKIEdMX0VOVFJZKHZvaWQsIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSwgR0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQogR0xfRU5UUlkodm9pZCwgZ2xTdGVuY2lsTWFzaywgR0x1aW50IG1hc2spCkBAIC0yOTgsOCArMzI1LDggQEAKIEdMX0VOVFJZKHZvaWQsIGdsVGV4R2VuaXZPRVMsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogR0xfRU5UUlkodm9pZCwgZ2xUZXhHZW54T0VTLCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIEdMX0VOVFJZKHZvaWQsIGdsVGV4R2VueHZPRVMsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCi1HTF9FTlRSWSh2b2lkLCBnbFRleEltYWdlMkQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykKLUdMX0VOVFJZKHZvaWQsIGdsVGV4SW1hZ2UzRE9FUywgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK0dMX0VOVFJZKHZvaWQsIGdsVGV4SW1hZ2UyRCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpCitHTF9FTlRSWSh2b2lkLCBnbFRleEltYWdlM0RPRVMsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykKIEdMX0VOVFJZKHZvaWQsIGdsVGV4UGFyYW1ldGVyZiwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogR0xfRU5UUlkodm9pZCwgZ2xUZXhQYXJhbWV0ZXJmdiwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbFRleFBhcmFtZXRlcmksIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCkBAIC0zMDksNyArMzM2LDcgQEAKIEdMX0VOVFJZKHZvaWQsIGdsVGV4UGFyYW1ldGVyeHYsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogR0xfRU5UUlkodm9pZCwgZ2xUZXhQYXJhbWV0ZXJ4dk9FUywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbFRleFN1YkltYWdlMkQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQotR0xfRU5UUlkodm9pZCwgZ2xUZXhTdWJJbWFnZTNET0VTLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCitHTF9FTlRSWSh2b2lkLCBnbFRleFN1YkltYWdlM0RPRVMsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKQogR0xfRU5UUlkodm9pZCwgZ2xUcmFuc2xhdGVmLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQogR0xfRU5UUlkodm9pZCwgZ2xUcmFuc2xhdGV4LCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQogR0xfRU5UUlkodm9pZCwgZ2xUcmFuc2xhdGV4T0VTLCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQpAQCAtMzQzLDcgKzM3MCw3IEBACiBHTF9FTlRSWSh2b2lkLCBnbFZlcnRleEF0dHJpYjNmdiwgR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKIEdMX0VOVFJZKHZvaWQsIGdsVmVydGV4QXR0cmliNGYsIEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpCiBHTF9FTlRSWSh2b2lkLCBnbFZlcnRleEF0dHJpYjRmdiwgR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKLUdMX0VOVFJZKHZvaWQsIGdsVmVydGV4QXR0cmliUG9pbnRlciwgR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQqIHB0cikKK0dMX0VOVFJZKHZvaWQsIGdsVmVydGV4QXR0cmliUG9pbnRlciwgR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCogcHRyKQogR0xfRU5UUlkodm9pZCwgZ2xWZXJ0ZXhQb2ludGVyLCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcikKIEdMX0VOVFJZKHZvaWQsIGdsVmlld3BvcnQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogR0xfRU5UUlkodm9pZCwgZ2xXZWlnaHRQb2ludGVyT0VTLCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcikKZGlmZiAtLWdpdCBhL29wZW5nbC90ZXN0cy9nbDJfYmFzaWMvZ2wyX2Jhc2ljLmNwcCBiL29wZW5nbC90ZXN0cy9nbDJfYmFzaWMvZ2wyX2Jhc2ljLmNwcAppbmRleCAyMzYxZGI1Li5mMjc0YzdjIDEwMDY0NAotLS0gYS9vcGVuZ2wvdGVzdHMvZ2wyX2Jhc2ljL2dsMl9iYXNpYy5jcHAKKysrIGIvb3BlbmdsL3Rlc3RzL2dsMl9iYXNpYy9nbDJfYmFzaWMuY3BwCkBAIC0xOTUsNyArMTk1LDYgQEAKICAgICBYKEVHTF9OQVRJVkVfUkVOREVSQUJMRSksCiAgICAgWChFR0xfTkFUSVZFX1ZJU1VBTF9JRCksCiAgICAgWChFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFKSwKLSAgICBYKEVHTF9QUkVTRVJWRURfUkVTT1VSQ0VTKSwKICAgICBYKEVHTF9TQU1QTEVTKSwKICAgICBYKEVHTF9TQU1QTEVfQlVGRkVSUyksCiAgICAgWChFR0xfU1VSRkFDRV9UWVBFKSwKZGlmZiAtLWdpdCBhL29wZW5nbC90ZXN0cy9nbF9iYXNpYy9nbF9iYXNpYy5jcHAgYi9vcGVuZ2wvdGVzdHMvZ2xfYmFzaWMvZ2xfYmFzaWMuY3BwCmluZGV4IGZlYjk2NGEuLjBjYzgzOTggMTAwNjQ0Ci0tLSBhL29wZW5nbC90ZXN0cy9nbF9iYXNpYy9nbF9iYXNpYy5jcHAKKysrIGIvb3BlbmdsL3Rlc3RzL2dsX2Jhc2ljL2dsX2Jhc2ljLmNwcApAQCAtMTE0LDcgKzExNCw2IEBACiAgICAgWChFR0xfTkFUSVZFX1JFTkRFUkFCTEUpLAogICAgIFgoRUdMX05BVElWRV9WSVNVQUxfSUQpLAogICAgIFgoRUdMX05BVElWRV9WSVNVQUxfVFlQRSksCi0gICAgWChFR0xfUFJFU0VSVkVEX1JFU09VUkNFUyksCiAgICAgWChFR0xfU0FNUExFUyksCiAgICAgWChFR0xfU0FNUExFX0JVRkZFUlMpLAogICAgIFgoRUdMX1NVUkZBQ0VfVFlQRSksCmRpZmYgLS1naXQgYS9vcGVuZ2wvdGVzdHMvZ2xfam5pL2puaS9nbF9jb2RlLmNwcCBiL29wZW5nbC90ZXN0cy9nbF9qbmkvam5pL2dsX2NvZGUuY3BwCmluZGV4IDMzYjI1YWIuLmYwMzFjNzkgMTAwNjQ0Ci0tLSBhL29wZW5nbC90ZXN0cy9nbF9qbmkvam5pL2dsX2NvZGUuY3BwCisrKyBiL29wZW5nbC90ZXN0cy9nbF9qbmkvam5pL2dsX2NvZGUuY3BwCkBAIC0xODAsNCArMTgwLDUgQEAKIEpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9jb21fYW5kcm9pZF9nbGpuaV9HTEpOSUxpYl9jaGFuZ2VCYWNrZ3JvdW5kKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopCiB7CiAgICAgYmFja2dyb3VuZCA9IDEuMGYgLSBiYWNrZ3JvdW5kOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KKwpkaWZmIC0tZ2l0IGEvb3BlbmdsL3Rvb2xzL2dsZ2VuL3NwZWNzL2dsZXMxMS9HTEVTMjAuc3BlYyBiL29wZW5nbC90b29scy9nbGdlbi9zcGVjcy9nbGVzMTEvR0xFUzIwLnNwZWMKaW5kZXggNjEwOTRkMS4uZWU4OGY1OSAxMDA2NDQKLS0tIGEvb3BlbmdsL3Rvb2xzL2dsZ2VuL3NwZWNzL2dsZXMxMS9HTEVTMjAuc3BlYworKysgYi9vcGVuZ2wvdG9vbHMvZ2xnZW4vc3BlY3MvZ2xlczExL0dMRVMyMC5zcGVjCkBAIC0zOSw2ICszOSw3IEBACiB2b2lkIGdsRGlzYWJsZSAoIEdMZW51bSBjYXAgKQ0KIHZvaWQgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgKCBHTHVpbnQgaW5kZXggKQ0KIHZvaWQgZ2xEcmF3QXJyYXlzICggR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50ICkNCit2b2lkIGdsRHJhd0VsZW1lbnRzICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBHTGludCBvZmZzZXQgKQ0KIHZvaWQgZ2xEcmF3RWxlbWVudHMgKCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcyApDQogdm9pZCBnbEVuYWJsZSAoIEdMZW51bSBjYXAgKQ0KIHZvaWQgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoIEdMdWludCBpbmRleCApDQpAQCAtMTM4LDUgKzEzOSw2IEBACiB2b2lkIGdsVmVydGV4QXR0cmliM2Z2ICggR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyApDQogdm9pZCBnbFZlcnRleEF0dHJpYjRmICggR0x1aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyApDQogdm9pZCBnbFZlcnRleEF0dHJpYjRmdiAoIEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMgKQ0KK3ZvaWQgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyICggR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIEdMaW50IG9mZnNldCApDQogdm9pZCBnbFZlcnRleEF0dHJpYlBvaW50ZXIgKCBHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKQ0KLXZvaWQgZ2xWaWV3cG9ydCAoIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0ICkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit2b2lkIGdsVmlld3BvcnQgKCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCApDQpkaWZmIC0tZ2l0IGEvb3BlbmdsL3Rvb2xzL2dsZ2VuL3NyYy9KbmlDb2RlRW1pdHRlci5qYXZhIGIvb3BlbmdsL3Rvb2xzL2dsZ2VuL3NyYy9KbmlDb2RlRW1pdHRlci5qYXZhCmluZGV4IGViYWNhOTAuLjlkOGM1YTAgMTAwNjQ0Ci0tLSBhL29wZW5nbC90b29scy9nbGdlbi9zcmMvSm5pQ29kZUVtaXR0ZXIuamF2YQorKysgYi9vcGVuZ2wvdG9vbHMvZ2xnZW4vc3JjL0puaUNvZGVFbWl0dGVyLmphdmEKQEAgLTY5NSw3ICs2OTUsNyBAQAogICAgICAgICBib29sZWFuIGlzUG9pbnRlckZ1bmMgPSBpc1BvaW50ZXJGdW5jKGpmdW5jKTsKICAgICAgICAgYm9vbGVhbiBpc1ZCT1BvaW50ZXJGdW5jID0gKG91dE5hbWUuZW5kc1dpdGgoIlBvaW50ZXIiKSB8fAogICAgICAgICAgICAgICAgIG91dE5hbWUuZW5kc1dpdGgoIlBvaW50ZXJPRVMiKSB8fAotICAgICAgICAgICAgb3V0TmFtZS5lbmRzV2l0aCgiRHJhd0VsZW1lbnRzIikpICYmCisgICAgICAgICAgICBvdXROYW1lLmVuZHNXaXRoKCJEcmF3RWxlbWVudHMiKSB8fCBvdXROYW1lLmVuZHNXaXRoKCJWZXJ0ZXhBdHRyaWJQb2ludGVyIikpICYmCiAgICAgICAgICAgICAhamZ1bmMuZ2V0Q0Z1bmMoKS5oYXNQb2ludGVyQXJnKCk7CiAgICAgICAgIGlmIChpc1BvaW50ZXJGdW5jKSB7CiAgICAgICAgICAgICBvdXROYW1lICs9ICJCb3VuZHMiOwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2V0dGluZ3NQcm92aWRlci9BbmRyb2lkTWFuaWZlc3QueG1sIGIvcGFja2FnZXMvU2V0dGluZ3NQcm92aWRlci9BbmRyb2lkTWFuaWZlc3QueG1sCmluZGV4IGQwNTdhYjcuLmRkMGQwNjQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NldHRpbmdzUHJvdmlkZXIvQW5kcm9pZE1hbmlmZXN0LnhtbAorKysgYi9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTgsNiArOCw4IEBACiAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja3VwQWdlbnQ9IlNldHRpbmdzQmFja3VwQWdlbnQiCiAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2lsbEFmdGVyUmVzdG9yZT0iZmFsc2UiCiAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvbj0iQGRyYXdhYmxlL2ljX2xhdW5jaGVyX3NldHRpbmdzIj4KKyAgICAgICAgICAgICAgICAgCisgICAgPCEtLSB0b2RvIGFkZDogYW5kcm9pZDpuZXZlckVuY3J5cHQ9InRydWUiIC0tPgogCiAgICAgICAgIDxwcm92aWRlciBhbmRyb2lkOm5hbWU9IlNldHRpbmdzUHJvdmlkZXIiIGFuZHJvaWQ6YXV0aG9yaXRpZXM9InNldHRpbmdzIgogICAgICAgICAgICAgICAgICAgYW5kcm9pZDptdWx0aXByb2Nlc3M9ImZhbHNlIgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2V0dGluZ3NQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvcHJvdmlkZXJzL3NldHRpbmdzL0RhdGFiYXNlSGVscGVyLmphdmEgYi9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvRGF0YWJhc2VIZWxwZXIuamF2YQppbmRleCAyYjQ3MTRkLi5jZDRmOTZkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvRGF0YWJhc2VIZWxwZXIuamF2YQorKysgYi9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvRGF0YWJhc2VIZWxwZXIuamF2YQpAQCAtOTUyLDcgKzk1Miw3IEBACiAgICAgICAgICAgICBpbnQgdmlicmF0ZSA9IDA7CiAgICAgICAgICAgICB2aWJyYXRlID0gQXVkaW9TZXJ2aWNlLmdldFZhbHVlRm9yVmlicmF0ZVNldHRpbmcodmlicmF0ZSwKICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLlZJQlJBVEVfVFlQRV9OT1RJRklDQVRJT04sIEF1ZGlvTWFuYWdlci5WSUJSQVRFX1NFVFRJTkdfT04pOwotICAgICAgICAgICAgdmlicmF0ZSA9IEF1ZGlvU2VydmljZS5nZXRWYWx1ZUZvclZpYnJhdGVTZXR0aW5nKHZpYnJhdGUsCisgICAgICAgICAgICB2aWJyYXRlIHw9IEF1ZGlvU2VydmljZS5nZXRWYWx1ZUZvclZpYnJhdGVTZXR0aW5nKHZpYnJhdGUsCiAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5WSUJSQVRFX1RZUEVfUklOR0VSLCBBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX09GRik7CiAgICAgICAgICAgICBsb2FkU2V0dGluZyhzdG10LCBTZXR0aW5ncy5TeXN0ZW0uVklCUkFURV9PTiwgdmlicmF0ZSk7CiAgICAgICAgIH0gZmluYWxseSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvU2V0dGluZ3NQcm92aWRlci5qYXZhIGIvcGFja2FnZXMvU2V0dGluZ3NQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvcHJvdmlkZXJzL3NldHRpbmdzL1NldHRpbmdzUHJvdmlkZXIuamF2YQppbmRleCAxYjRiYTgxLi4xMDE5ZmE4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvU2V0dGluZ3NQcm92aWRlci5qYXZhCisrKyBiL3BhY2thZ2VzL1NldHRpbmdzUHJvdmlkZXIvc3JjL2NvbS9hbmRyb2lkL3Byb3ZpZGVycy9zZXR0aW5ncy9TZXR0aW5nc1Byb3ZpZGVyLmphdmEKQEAgLTM5OSw5ICszOTksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlZml4ID09ICctJyAmJiBpbmRleCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgcHJvdmlkZXIgZnJvbSB0aGUgbGlzdCBpZiBwcmVzZW50Ci0gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBjb21tYXMKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkgaW5kZXgtLTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVuZCA8IHByb3ZpZGVycy5sZW5ndGgoKSkgZW5kKys7CisgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsZWFkaW5nIG9yIHRyYWlsaW5nIGNvbW1hCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LS07CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kIDwgcHJvdmlkZXJzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmQrKzsKKyAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3ZpZGVycyA9IHByb3ZpZGVycy5zdWJzdHJpbmcoMCwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZW5kIDwgcHJvdmlkZXJzLmxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9BbmRyb2lkLm1rIGIvcGFja2FnZXMvU3lzdGVtVUkvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzgzNzY4Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvQW5kcm9pZC5tawpAQCAtMCwwICsxLDEzIEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitMT0NBTF9TUkNfRklMRVMgOj0gJChjYWxsIGFsbC1zdWJkaXItamF2YS1maWxlcykKKworTE9DQUxfSkFWQV9MSUJSQVJJRVMgOj0gc2VydmljZXMKKworTE9DQUxfUEFDS0FHRV9OQU1FIDo9IFN5c3RlbVVJCitMT0NBTF9DRVJUSUZJQ0FURSA6PSBwbGF0Zm9ybQorCitpbmNsdWRlICQoQlVJTERfUEFDS0FHRSkKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL0FuZHJvaWRNYW5pZmVzdC54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9BbmRyb2lkTWFuaWZlc3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MDQ1ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxtYW5pZmVzdCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgIHBhY2thZ2U9ImNvbS5hbmRyb2lkLnN5c3RlbXVpIgorICAgICAgICBhbmRyb2lkOnNoYXJlZFVzZXJJZD0iYW5kcm9pZC51aWQuc3lzdGVtIgorICAgICAgICBhbmRyb2lkOnByb2Nlc3M9InN5c3RlbSIKKyAgICAgICAgPgorCisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5TVEFUVVNfQkFSX1NFUlZJQ0UiIC8+CisKKyAgICA8YXBwbGljYXRpb24KKyAgICAgICAgYW5kcm9pZDphbGxvd0NsZWFyVXNlckRhdGE9ImZhbHNlIgorICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2FwcF9sYWJlbCIKKyAgICAgICAgYW5kcm9pZDppY29uPSJAZHJhd2FibGUvaWNfbGF1bmNoZXJfc2V0dGluZ3MiPgorICAgICAgICAgICAgICAgICAKKyAgICAgICAgPHNlcnZpY2UKKyAgICAgICAgICAgIGFuZHJvaWQ6bmFtZT0iLnN0YXR1c2Jhci5TdGF0dXNCYXJTZXJ2aWNlIgorICAgICAgICAgICAgYW5kcm9pZDpleHBvcnRlZD0iZmFsc2UiCisgICAgICAgICAgICAvPgorCisgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9Ii51c2IuVXNiU3RvcmFnZUFjdGl2aXR5IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZXhjbHVkZUZyb21SZWNlbnRzPSJ0cnVlIj4KKyAgICAgICAgPC9hY3Rpdml0eT4KKworICAgIDwvYXBwbGljYXRpb24+Cis8L21hbmlmZXN0PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvTU9EVUxFX0xJQ0VOU0VfQVBBQ0hFMiBiL3BhY2thZ2VzL1N5c3RlbVVJL01PRFVMRV9MSUNFTlNFX0FQQUNIRTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL01PRFVMRV9MSUNFTlNFX0FQQUNIRTIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL05PVElDRSBiL3BhY2thZ2VzL1N5c3RlbVVJL05PVElDRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWIxZWZhCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvTk9USUNFCkBAIC0wLDAgKzEsMTkwIEBACisKKyAgIENvcHlyaWdodCAoYykgMjAwNS0yMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfbm9ybWFsLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfbm9ybWFsLjkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMTI3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9hbGVydF9iYXJfYmFja2dyb3VuZF9ub3JtYWwuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfcHJlc3NlZC45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kX3ByZXNzZWQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhZjgwNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kX3ByZXNzZWQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9sb3dfYmF0dGVyeS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9iYXR0ZXJ5X2xvd19iYXR0ZXJ5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9sb3dfYmF0dGVyeS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2JhdHRlcnlfbG93X2JhdHRlcnkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbC45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWFmZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGUuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc1MTk3YgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlX2ZvY3VzZWQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZV9mb2N1c2VkLjkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMWZlZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZV9mb2N1c2VkLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3ByZXNzZWQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9idG5fZGVmYXVsdF9zbWFsbF9wcmVzc2VkLjkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZjlhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9idG5fZGVmYXVsdF9zbWFsbF9wcmVzc2VkLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3NlbGVjdGVkLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYnRuX2RlZmF1bHRfc21hbGxfc2VsZWN0ZWQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhM2Y0MAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3NlbGVjdGVkLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX2xhdW5jaGVyX3NldHRpbmdzLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX2xhdW5jaGVyX3NldHRpbmdzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjM0YTdmCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbGF1bmNoZXJfc2V0dGluZ3MucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX25vdGlmaWNhdGlvbl9vdmVybGF5LjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbm90aWZpY2F0aW9uX292ZXJsYXkuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0MTc4ZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX25vdGlmaWNhdGlvbl9vdmVybGF5LjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2JnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2JnLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDAwY2QwCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc2hhZGVfYmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2hhbmRsZWJhci45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2hhbmRsZWJhci45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzEzZmZiCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc2hhZGVfaGFuZGxlYmFyLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc2hhZGVfaGVhZGVyX2JhY2tncm91bmQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdiNWZlZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfbm90aWZ5X2FsYXJtLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfbm90aWZ5X2FsYXJtLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9ub3RpZnlfYWxhcm0ucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X25vdGlmeV9hbGFybS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9ub3RpZnlfbW9yZS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X25vdGlmeV9tb3JlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xYzdmOWRiCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9ub3RpZnlfbW9yZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGgucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZGMwODUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2JsdWV0b290aC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGhfY29ubmVjdGVkLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8xeC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzF4LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzNnLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfM2cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9oLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2gucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fMXgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl8xeC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fMXgucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luXzF4LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luXzNnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fM2cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luXzNnLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl8zZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl9lLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl9nLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl9oLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0XzF4LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfMXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8zZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0XzNnLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2UucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2gucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF8xeC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF8xeC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzF4LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfMXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzNnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzNnLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfM2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF8zZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfZS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF9lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF9nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF9oLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2gucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF9oLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfaC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2dwc19hY3F1aXJpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX25vX3NpbS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19ub19zaW0ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19ub19zaW0ucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19ub19zaW0ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzAucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8xLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzEucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8xLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMi5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8yLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMi5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzMucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzMucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF80LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzQucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF80LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcmluZ2VyX3NpbGVudC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yaW5nZXJfc2lsZW50LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcmluZ2VyX3NpbGVudC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jpbmdlcl9zaWxlbnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jpbmdlcl92aWJyYXRlLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jpbmdlcl92aWJyYXRlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcmluZ2VyX3ZpYnJhdGUucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yaW5nZXJfdmlicmF0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfMC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2hfYW5pbTAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2hfYW5pbTEucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8wLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8xLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8xLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzEucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzIucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMi5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8yLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8zLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF80LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF80LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzQucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGUucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfZmxpZ2h0bW9kZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF9mbGlnaHRtb2RlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfbnVsbC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfbnVsbC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF9udWxsLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsX251bGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3R0eV9tb2RlLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3R0eV9tb2RlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfdHR5X21vZGUucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c190dHlfbW9kZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8wLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzEucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzEucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8yLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8yLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8zLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzQucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfNC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzQucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF80LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiZTI5OAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfYmFja2dyb3VuZC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2l0ZW1fYXBwX2JhY2tncm91bmRfbm9ybWFsLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9pdGVtX2FwcF9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmJmYTRmCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9pdGVtX2FwcF9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS90aXRsZV9iYXJfcG9ydHJhaXQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS90aXRsZV9iYXJfcG9ydHJhaXQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBmN2NjMgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3RpdGxlX2Jhcl9wb3J0cmFpdC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS90aXRsZV9iYXJfc2hhZG93LjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvdGl0bGVfYmFyX3NoYWRvdy45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmRhYjYzCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvdGl0bGVfYmFyX3NoYWRvdy45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9hbGVydF9iYXJfYmFja2dyb3VuZF9ub3JtYWwuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9hbGVydF9iYXJfYmFja2dyb3VuZF9ub3JtYWwuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4ZGUxMwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9hbGVydF9iYXJfYmFja2dyb3VuZF9wcmVzc2VkLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfcHJlc3NlZC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNThkZTEzCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfcHJlc3NlZC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2xvd19iYXR0ZXJ5LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2JhdHRlcnlfbG93X2JhdHRlcnkucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2xvd19iYXR0ZXJ5LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYmF0dGVyeV9sb3dfYmF0dGVyeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsLjkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZWRkNWYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWwuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGUuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZS45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzYyNjBmCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGUuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGVfZm9jdXNlZC45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlX2ZvY3VzZWQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVlMWIzZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlX2ZvY3VzZWQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfcHJlc3NlZC45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3ByZXNzZWQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVlMzhmNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3ByZXNzZWQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfc2VsZWN0ZWQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9idG5fZGVmYXVsdF9zbWFsbF9zZWxlY3RlZC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzIwOWM2Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfc2VsZWN0ZWQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbGF1bmNoZXJfc2V0dGluZ3MucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbGF1bmNoZXJfc2V0dGluZ3MucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOGFkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9pY19sYXVuY2hlcl9zZXR0aW5ncy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbm90aWZpY2F0aW9uX292ZXJsYXkuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9pY19ub3RpZmljYXRpb25fb3ZlcmxheS45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTMwNjNjNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX25vdGlmaWNhdGlvbl9vdmVybGF5LjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2JnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2JnLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDFkM2IxCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc2hhZGVfYmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2hhbmRsZWJhci45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2hhbmRsZWJhci45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2JkOWZlCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc2hhZGVfaGFuZGxlYmFyLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc2hhZGVfaGVhZGVyX2JhY2tncm91bmQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE5YTkwYwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfbm90aWZ5X2FsYXJtLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfbm90aWZ5X2FsYXJtLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9ub3RpZnlfYWxhcm0ucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X25vdGlmeV9hbGFybS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9ub3RpZnlfbW9yZS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X25vdGlmeV9tb3JlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTI5YmE5Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9ub3RpZnlfbW9yZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGhfY29ubmVjdGVkLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8xeC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzF4LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzNnLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfM2cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9oLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2gucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fMXgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl8xeC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fMXgucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luXzF4LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luXzNnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fM2cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luXzNnLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl8zZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl9lLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl9nLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl9oLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0XzF4LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfMXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8zZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0XzNnLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2UucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2gucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF8xeC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF8xeC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzF4LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfMXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzNnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzNnLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfM2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF8zZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfZS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF9lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF9nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF9oLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2gucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF9oLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfaC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2dwc19hY3F1aXJpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX25vX3NpbS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19ub19zaW0ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19ub19zaW0ucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19ub19zaW0ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzAucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8xLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzEucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8xLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMi5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8yLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMi5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzMucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzMucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF80LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzQucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF80LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcmluZ2VyX3NpbGVudC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yaW5nZXJfc2lsZW50LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcmluZ2VyX3NpbGVudC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jpbmdlcl9zaWxlbnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jpbmdlcl92aWJyYXRlLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jpbmdlcl92aWJyYXRlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcmluZ2VyX3ZpYnJhdGUucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yaW5nZXJfdmlicmF0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfMC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2hfYW5pbTAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2hfYW5pbTEucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8wLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8xLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8xLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzEucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzIucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMi5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8yLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8zLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF80LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF80LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzQucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGUucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfZmxpZ2h0bW9kZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF9mbGlnaHRtb2RlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfbnVsbC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfbnVsbC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF9udWxsLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsX251bGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3R0eV9tb2RlLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3R0eV9tb2RlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfdHR5X21vZGUucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c190dHlfbW9kZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8wLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzEucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzEucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8yLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8yLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8zLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzQucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfNC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzQucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF80LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI3YzFhNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXR1c19iYXJfYmFja2dyb3VuZC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0dXNfYmFyX2l0ZW1fYXBwX2JhY2tncm91bmRfbm9ybWFsLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdHVzX2Jhcl9pdGVtX2FwcF9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc5NjE1Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdHVzX2Jhcl9pdGVtX2FwcF9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS90aXRsZV9iYXJfcG9ydHJhaXQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS90aXRsZV9iYXJfcG9ydHJhaXQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNiMThkOAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3RpdGxlX2Jhcl9wb3J0cmFpdC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS90aXRsZV9iYXJfc2hhZG93LjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvdGl0bGVfYmFyX3NoYWRvdy45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmNlZmVlCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvdGl0bGVfYmFyX3NoYWRvdy45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvYWxlcnRfYmFyX2JhY2tncm91bmQueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGI2YWEzCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kLnhtbApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiIAorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvYWxlcnRfYmFyX2JhY2tncm91bmRfcHJlc3NlZCIgLz4KKyAgICA8aXRlbQorICAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kX25vcm1hbCIgLz4KKzwvc2VsZWN0b3I+CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbC54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ODVlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGwueG1sCkBAIC0wLDAgKzEsMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxzZWxlY3RvciB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxpdGVtIGFuZHJvaWQ6c3RhdGVfd2luZG93X2ZvY3VzZWQ9ImZhbHNlIiBhbmRyb2lkOnN0YXRlX2VuYWJsZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWwiIC8+CisgICAgPGl0ZW0gYW5kcm9pZDpzdGF0ZV93aW5kb3dfZm9jdXNlZD0iZmFsc2UiIGFuZHJvaWQ6c3RhdGVfZW5hYmxlZD0iZmFsc2UiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZSIgLz4KKyAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiIAorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGxfcHJlc3NlZCIgLz4KKyAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiIGFuZHJvaWQ6c3RhdGVfZW5hYmxlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL2J0bl9kZWZhdWx0X3NtYWxsX3NlbGVjdGVkIiAvPgorICAgIDxpdGVtIGFuZHJvaWQ6c3RhdGVfZW5hYmxlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbCIgLz4KKyAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZV9mb2N1c2VkIiAvPgorICAgIDxpdGVtCisgICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGUiIC8+Cis8L3NlbGVjdG9yPgorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nX2FuaW0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MzY5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLnhtbApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAwOCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorPGFuaW1hdGlvbi1saXN0CisgICAgICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICAgICAgYW5kcm9pZDpvbmVzaG90PSJmYWxzZSI+CisgICAgPGl0ZW0gYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3N0YXRfc3lzX2dwc19hY3F1aXJpbmciIGFuZHJvaWQ6ZHVyYXRpb249IjUwMCIgLz4KKyAgICA8aXRlbSBhbmRyb2lkOmRyYXdhYmxlPSJAKmFuZHJvaWQ6ZHJhd2FibGUvc3RhdF9zeXNfZ3BzX29uIiBhbmRyb2lkOmR1cmF0aW9uPSI1MDAiIC8+Cis8L2FuaW1hdGlvbi1saXN0PgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXRfc3lzX3JvYW1pbmdfY2RtYV9mbGFzaC54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoLnhtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXRfc3lzX3JvYW1pbmdfY2RtYV9mbGFzaC54bWwKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2gueG1sCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L2JhdHRlcnlfbG93LnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvYmF0dGVyeV9sb3cueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvbGF5b3V0L2JhdHRlcnlfbG93LnhtbApyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9iYXR0ZXJ5X2xvdy54bWwKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvaW50cnVkZXJfYWxlcnQueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9pbnRydWRlcl9hbGVydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE0YTc3NAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvaW50cnVkZXJfYWxlcnQueG1sCkBAIC0wLDAgKzEsNTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKiBhcHBzL2NvbW1vbi9hc3NldHMvZGVmYXVsdC9kZWZhdWx0L3NraW5zL1N0YXR1c0Jhci54bWwKKyoqCisqKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzwhLS0gICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9jbG9zZWRfZGVmYXVsdF9iYWNrZ3JvdW5kIiAtLT4KKzxGcmFtZUxheW91dAorICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjMyZGlwIgorICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iOGRpcCIKKyAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iOGRpcCIKKyAgICA+CisgICAgICAgIAorICAgIDxMaW5lYXJMYXlvdXQgCisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvaW50cnVkZXJfYWxlcnRfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIgorICAgICAgICBhbmRyb2lkOmFuaW1hdGlvbkNhY2hlPSJmYWxzZSIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvYWxlcnRfYmFyX2JhY2tncm91bmQiCisgICAgICAgIGFuZHJvaWQ6Y2xpY2thYmxlPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkZXNjZW5kYW50Rm9jdXNhYmlsaXR5PSJhZnRlckRlc2NlbmRhbnRzIgorICAgICAgICA+CisKKyAgICAgICAgPEltYWdlVmlldworICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9hbGVydEljb24iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjVkaXAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjI1ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luTGVmdD0iNmRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblJpZ2h0PSI4ZGlwIgorICAgICAgICAgICAgLz4KKyAgICAgICAgPFRleHRWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL2FsZXJ0VGV4dCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuSW50cnVkZXJBbGVydCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgICAgIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+Cis8L0ZyYW1lTGF5b3V0PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlOGU3OQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhci54bWwKQEAgLTAsMCArMSwxMTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKiBhcHBzL2NvbW1vbi9hc3NldHMvZGVmYXVsdC9kZWZhdWx0L3NraW5zL1N0YXR1c0Jhci54bWwKKyoqCisqKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzwhLS0gICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9jbG9zZWRfZGVmYXVsdF9iYWNrZ3JvdW5kIiAtLT4KKzxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuU3RhdHVzQmFyVmlldworICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2JhY2tncm91bmQiCisgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgYW5kcm9pZDpmb2N1c2FibGU9InRydWUiCisgICAgYW5kcm9pZDpkZXNjZW5kYW50Rm9jdXNhYmlsaXR5PSJhZnRlckRlc2NlbmRhbnRzIgorICAgID4KKworICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9pY29ucyIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiPgorICAgICAgICAgICAgCisgICAgICAgIDxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuSWNvbk1lcmdlciBhbmRyb2lkOmlkPSJAK2lkL25vdGlmaWNhdGlvbkljb25zIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkaXAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50TGVmdD0idHJ1ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjZkaXAiCisgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiLz4gIAorICAgICAgICAgICAgCisgICAgICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9zdGF0dXNJY29ucyIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50UmlnaHQ9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNmRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgorICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIvPiAgICAKKworICAgICAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkNsb2NrCisgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAKmFuZHJvaWQ6c3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkljb24iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNmRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjE2c3AiCisgICAgICAgICAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsfGxlZnQiCisgICAgICAgICAgICAvPgorICAgIDwvTGluZWFyTGF5b3V0PgorICAgICAgICAKKyAgICA8TGluZWFyTGF5b3V0IGFuZHJvaWQ6aWQ9IkAraWQvdGlja2VyIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNmRpcCIKKyAgICAgICAgYW5kcm9pZDphbmltYXRpb25DYWNoZT0iZmFsc2UiCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiID4KKyAgICAgICAgPEltYWdlU3dpdGNoZXIgYW5kcm9pZDppZD0iQCtpZC90aWNrZXJJY29uIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luUmlnaHQ9IjhkaXAiCisgICAgICAgICAgICA+CisgICAgICAgICAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkFuaW1hdGVkSW1hZ2VWaWV3CisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjI1ZGlwIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMjVkaXAiCisgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgIDxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuQW5pbWF0ZWRJbWFnZVZpZXcKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjVkaXAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyNWRpcCIKKyAgICAgICAgICAgICAgICAvPgorICAgICAgICA8L0ltYWdlU3dpdGNoZXI+CisgICAgICAgIDxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuVGlja2VyVmlldyBhbmRyb2lkOmlkPSJAK2lkL3RpY2tlclRleHQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIyZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjEwZGlwIj4KKyAgICAgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkAqYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuVGlja2VyIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgorICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICA8VGV4dFZpZXcKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAKmFuZHJvaWQ6c3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLlRpY2tlciIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgICAgICAgICAvPgorICAgICAgICA8L2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5UaWNrZXJWaWV3PgorICAgIDwvTGluZWFyTGF5b3V0PgorCisgICAgPGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5EYXRlVmlldyBhbmRyb2lkOmlkPSJAK2lkL2RhdGUiCisgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkAqYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuSWNvbiIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfdmVydGljYWx8bGVmdCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNnB4IgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNnB4IgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2JhY2tncm91bmQiCisgICAgICAgIC8+Cis8L2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5TdGF0dXNCYXJWaWV3PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2V4cGFuZGVkLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9leHBhbmRlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjViMWI1MAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9leHBhbmRlZC54bWwKQEAgLTAsMCArMSwxMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKiBhcHBzL2NvbW1vbi9hc3NldHMvZGVmYXVsdC9kZWZhdWx0L3NraW5zL1N0YXR1c0Jhci54bWwKKyoqCisqKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuRXhwYW5kZWRWaWV3IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKKyAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKKyAgICBhbmRyb2lkOmRlc2NlbmRhbnRGb2N1c2FiaWxpdHk9ImFmdGVyRGVzY2VuZGFudHMiCisgICAgPgorCisgICAgPExpbmVhckxheW91dAorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIzZHAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iNWRwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iM2RwIgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zaGFkZV9oZWFkZXJfYmFja2dyb3VuZCIKKyAgICAgICAgPgorICAgICAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkNhcnJpZXJMYWJlbAorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSIxZHAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5MZWZ0PSI1ZHAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjFkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjRkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VMYXJnZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSI/YW5kcm9pZDphdHRyL3RleHRDb2xvclNlY29uZGFyeSIKKyAgICAgICAgICAgIC8+CisgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2NsZWFyX2FsbF9idXR0b24iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjRkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMWRwIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMTRzcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSIjZmYwMDAwMDAiCisgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc3RhdHVzX2Jhcl9jbGVhcl9hbGxfYnV0dG9uIgorICAgICAgICAgICAgc3R5bGU9Ij9hbmRyb2lkOmF0dHIvYnV0dG9uU3R5bGUiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSIxNWRwIgorICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjE1ZHAiCisgICAgICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbCIKKyAgICAgICAgICAgIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+CisKKyAgICA8RnJhbWVMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIgCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCisgICAgICAgID4KKyAgICAgICAgPFNjcm9sbFZpZXcKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2Nyb2xsIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpmYWRpbmdFZGdlPSJub25lIgorICAgICAgICAgICAgPgorICAgICAgICAgICAgPGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL25vdGlmaWNhdGlvbkxpbmVhckxheW91dCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgorICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9ub05vdGlmaWNhdGlvbnNUaXRsZSIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL3RpdGxlX2Jhcl9wb3J0cmFpdCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNWRwIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAc3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLlRpdGxlIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc3RhdHVzX2Jhcl9ub19ub3RpZmljYXRpb25zX3RpdGxlIgorICAgICAgICAgICAgICAgICAgICAvPgorCisgICAgICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvb25nb2luZ1RpdGxlIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvdGl0bGVfYmFyX3BvcnRyYWl0IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI1ZHAiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuVGl0bGUiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zdGF0dXNfYmFyX29uZ29pbmdfZXZlbnRzX3RpdGxlIgorICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9vbmdvaW5nSXRlbXMiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKKyAgICAgICAgICAgICAgICAgICAgLz4KKworICAgICAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2xhdGVzdFRpdGxlIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvdGl0bGVfYmFyX3BvcnRyYWl0IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI1ZHAiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuVGl0bGUiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudHNfdGl0bGUiCisgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgPExpbmVhckxheW91dCBhbmRyb2lkOmlkPSJAK2lkL2xhdGVzdEl0ZW1zIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICA8L2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQ+CisgICAgICAgIDwvU2Nyb2xsVmlldz4KKworICAgICAgICA8SW1hZ2VWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOnNyYz0iQGRyYXdhYmxlL3RpdGxlX2Jhcl9zaGFkb3ciCisgICAgICAgICAgICBhbmRyb2lkOnNjYWxlVHlwZT0iZml0WFkiCisgICAgICAgIC8+CisKKyAgICA8L0ZyYW1lTGF5b3V0PgorPC9jb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuRXhwYW5kZWRWaWV3PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2ljb24ueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2ljb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZDYwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfaWNvbi54bWwKQEAgLTAsMCArMSw0NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qIGFwcHMvY29tbW9uL2Fzc2V0cy9kZWZhdWx0L2RlZmF1bHQvc2tpbnMvU3RhdHVzQmFyLnhtbAorKioKKyoqIENvcHlyaWdodCAyMDA2LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPCEtLSBUaGUgaWNvbnMgYXJlIGEgZml4ZWQgc2l6ZSBzbyBhbiBhcHAgY2FuJ3QgbWVzcyBldmVyeXRoaW5nIHVwIHdpdGggYm9ndXMgaW1hZ2VzIC0tPgorPCEtLSBUT0RPOiB0aGUgaWNvbnMgYXJlIGhhcmQgY29kZWQgdG8gMjV4MjUgcGl4ZWxzLiAgVGhlaXIgc2l6ZSBzaG91bGQgY29tZSBmcm9lbSBhIHRoZW1lIC0tPgorPEZyYW1lTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIgCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjI1ZHAiIAorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMjVkcCIKKyAgICA+CisKKyAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkFuaW1hdGVkSW1hZ2VWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvaW1hZ2UiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiIAorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgLz4KKworICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL251bWJlciIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIgCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJyaWdodHxib3R0b20iCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblJpZ2h0PSIxZHAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMWRwIgorICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIxMHNwIgorICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmZmZmZmZmIgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9pY19ub3RpZmljYXRpb25fb3ZlcmxheSIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCisgICAgICAgIGFuZHJvaWQ6dGV4dFN0eWxlPSJib2xkIgorICAgICAgICAvPgorCis8L0ZyYW1lTGF5b3V0PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudC54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfbGF0ZXN0X2V2ZW50LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGQ5NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudC54bWwKQEAgLTAsMCArMSwyNCBAQAorPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjY1c3AiCisgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgPgorCisgICAgPGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5MYXRlc3RJdGVtVmlldyBhbmRyb2lkOmlkPSJAK2lkL2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSI2NHNwIgorICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAYW5kcm9pZDpkcmF3YWJsZS9zdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZCIKKyAgICAgICAgICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIgorICAgICAgICAgICAgYW5kcm9pZDpjbGlja2FibGU9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNnNwIgorICAgICAgICAgICAgPgorICAgIDwvY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkxhdGVzdEl0ZW1WaWV3PgorCisgICAgPFZpZXcKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIxc3AiCisgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGFuZHJvaWQ6ZHJhd2FibGUvZGl2aWRlcl9ob3Jpem9udGFsX2JyaWdodCIKKyAgICAgICAgLz4KKworPC9MaW5lYXJMYXlvdXQ+CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl90cmFja2luZy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfdHJhY2tpbmcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYjQwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfdHJhY2tpbmcueG1sCkBAIC0wLDAgKzEsNTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuVHJhY2tpbmdWaWV3CisgICAgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgorICAgIGFuZHJvaWQ6dmlzaWJpbGl0eT0iZ29uZSIKKyAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKKyAgICBhbmRyb2lkOmRlc2NlbmRhbnRGb2N1c2FiaWxpdHk9ImFmdGVyRGVzY2VuZGFudHMiCisgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSIwcHgiCisgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iMHB4IgorICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIwcHgiCisgICAgPgorCisgICAgPGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5UcmFja2luZ1BhdHRlcm5WaWV3CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCisgICAgICAgIC8+CisKKyAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkNsb3NlRHJhZ0hhbmRsZSBhbmRyb2lkOmlkPSJAK2lkL2Nsb3NlIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgID4KKyAgICAgICAgPEltYWdlVmlldworICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iYm90dG9tIgorICAgICAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdFhZIgorICAgICAgICAgICAgYW5kcm9pZDpzcmM9IkBkcmF3YWJsZS9zaGFkZV9oYW5kbGViYXIiCisgICAgICAgICAgICAvPgorCisgICAgPC9jb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuQ2xvc2VEcmFnSGFuZGxlPgorCis8L2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5UcmFja2luZ1ZpZXc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2NvbmZpZy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2NvbmZpZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVhNDZlNQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvY29uZmlnLnhtbApAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPCEtLSBUaGVzZSByZXNvdXJjZXMgYXJlIGFyb3VuZCBqdXN0IHRvIGFsbG93IHRoZWlyIHZhbHVlcyB0byBiZSBjdXN0b21pemVkCisgICAgIGZvciBkaWZmZXJlbnQgaGFyZHdhcmUgYW5kIHByb2R1Y3QgYnVpbGRzLiAtLT4KKzxyZXNvdXJjZXM+CisgICAgPCEtLSBDb250cm9sIHdoZXRoZXIgc3RhdHVzIGJhciBzaG91bGQgZGlzdGluZ3Vpc2ggSFNQQSBkYXRhIGljb24gZm9ybSBVTVRTIGRhdGEgaWNvbiBvbiBkZXZpY2VzIC0tPgorICAgIDxib29sIG5hbWU9ImNvbmZpZ19oc3BhX2RhdGFfZGlzdGluZ3Vpc2hhYmxlIj5mYWxzZTwvYm9vbD4KKzwvcmVzb3VyY2VzPgorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2RlZmF1bHRzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvZGVmYXVsdHMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2RlZmF1bHRzLnhtbApAQCAtMCwwICsxLDc4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCistLT4KKzxyZXNvdXJjZXM+CisgICAgPGJvb2wgbmFtZT0iZGVmX2RpbV9zY3JlZW4iPnRydWU8L2Jvb2w+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX3NjcmVlbl9vZmZfdGltZW91dCI+NjAwMDA8L2ludGVnZXI+CisgICAgPGJvb2wgbmFtZT0iZGVmX2FpcnBsYW5lX21vZGVfb24iPmZhbHNlPC9ib29sPgorICAgIDwhLS0gQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYmx1ZXRvb3RoLCB3aWZpLCBhbmQgY2VsbC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfYWlycGxhbmVfbW9kZV9yYWRpb3MiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPmNlbGwsYmx1ZXRvb3RoLHdpZmk8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFpcnBsYW5lX21vZGVfdG9nZ2xlYWJsZV9yYWRpb3MiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPndpZmk8L3N0cmluZz4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfYXV0b190aW1lIj50cnVlPC9ib29sPgorICAgIDxib29sIG5hbWU9ImRlZl9hY2NlbGVyb21ldGVyX3JvdGF0aW9uIj50cnVlPC9ib29sPgorICAgIDwhLS0gRGVmYXVsdCBzY3JlZW4gYnJpZ2h0bmVzcywgZnJvbSAwIHRvIDI1NS4gIDEwMiBpcyA0MCUuIC0tPgorICAgIDxpbnRlZ2VyIG5hbWU9ImRlZl9zY3JlZW5fYnJpZ2h0bmVzcyI+MTAyPC9pbnRlZ2VyPgorICAgIDxib29sIG5hbWU9ImRlZl9zY3JlZW5fYnJpZ2h0bmVzc19hdXRvbWF0aWNfbW9kZSI+ZmFsc2U8L2Jvb2w+CisgICAgPGZyYWN0aW9uIG5hbWU9ImRlZl93aW5kb3dfYW5pbWF0aW9uX3NjYWxlIj4xMDAlPC9mcmFjdGlvbj4KKyAgICA8ZnJhY3Rpb24gbmFtZT0iZGVmX3dpbmRvd190cmFuc2l0aW9uX3NjYWxlIj4xMDAlPC9mcmFjdGlvbj4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfaGFwdGljX2ZlZWRiYWNrIj50cnVlPC9ib29sPgorICAgIAorICAgIDxib29sIG5hbWU9ImRlZl9ibHVldG9vdGhfb24iPmZhbHNlPC9ib29sPgorICAgIDxib29sIG5hbWU9ImRlZl9pbnN0YWxsX25vbl9tYXJrZXRfYXBwcyI+ZmFsc2U8L2Jvb2w+CisgICAgPCEtLSBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsb2NhdGlvbiBwcm92aWRlcnMuIAorICAgICAgICAgTmV0d29yayBsb2NhdGlvbiBpcyBvZmYgYnkgZGVmYXVsdCBiZWNhdXNlIGl0IHJlcXVpcmVzCisgICAgICAgICB1c2VyIG9wdC1pbiB2aWEgU2V0dXAgV2l6YXJkIG9yIFNldHRpbmdzLiAgCisgICAgLS0+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfbG9jYXRpb25fcHJvdmlkZXJzX2FsbG93ZWQiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPmdwczwvc3RyaW5nPgorICAgIDxib29sIG5hbWU9ImFzc2lzdGVkX2dwc19lbmFibGVkIj50cnVlPC9ib29sPgorICAgIDwhLS0gIDAgPT0gbW9iaWxlLCAxID09IHdpZmkuIC0tPgorICAgIDxpbnRlZ2VyIG5hbWU9ImRlZl9uZXR3b3JrX3ByZWZlcmVuY2UiPjE8L2ludGVnZXI+CisgICAgPGJvb2wgbmFtZT0iZGVmX3VzYl9tYXNzX3N0b3JhZ2VfZW5hYmxlZCI+dHJ1ZTwvYm9vbD4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfd2lmaV9vbiI+ZmFsc2U8L2Jvb2w+CisgICAgPGJvb2wgbmFtZT0iZGVmX25ldHdvcmtzX2F2YWlsYWJsZV9ub3RpZmljYXRpb25fb24iPnRydWU8L2Jvb2w+CisgICAgCisgICAgPGJvb2wgbmFtZT0iZGVmX2JhY2t1cF9lbmFibGVkIj5mYWxzZTwvYm9vbD4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZl9iYWNrdXBfdHJhbnNwb3J0IiB0cmFuc2xhdGFibGU9ImZhbHNlIj48L3N0cmluZz4KKyAgICA8IS0tIERlZmF1bHQgdmFsdWUgZm9yIHdoZXRoZXIgb3Igbm90IHRvIHB1bHNlIHRoZSBub3RpZmljYXRpb24gTEVEIHdoZW4gdGhlcmUgaXMgYSAKKyAgICAgICAgIHBlbmRpbmcgbm90aWZpY2F0aW9uIC0tPgorICAgIDxib29sIG5hbWU9ImRlZl9ub3RpZmljYXRpb25fcHVsc2UiPnRydWU8L2Jvb2w+CisKKyAgICA8Ym9vbCBuYW1lPSJkZWZfbW91bnRfcGxheV9ub3RpZmljYXRpb25fc25kIj50cnVlPC9ib29sPgorICAgIDxib29sIG5hbWU9ImRlZl9tb3VudF91bXNfYXV0b3N0YXJ0Ij5mYWxzZTwvYm9vbD4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfbW91bnRfdW1zX3Byb21wdCI+dHJ1ZTwvYm9vbD4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfbW91bnRfdW1zX25vdGlmeV9lbmFibGVkIj50cnVlPC9ib29sPgorICAgIDwhLS0gRW5hYmxlIFVzZXIgcHJlZmVyZW5jZSBmb3Igc2V0dGluZyBpbnN0YWxsIGxvY2F0aW9uIC0tPgorICAgIDxib29sIG5hbWU9InNldF9pbnN0YWxsX2xvY2F0aW9uIj50cnVlPC9ib29sPgorICAgIDwhLS0gRGVmYXVsdCBpbnN0YWxsIGxvY2F0aW9uIGlmIHVzZXIgcHJlZmVyZW5jZSBmb3Igc2V0dGluZyBpbnN0YWxsIGxvY2F0aW9uIGlzIHR1cm5lZCBvbi4gLS0+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX2luc3RhbGxfbG9jYXRpb24iPjI8L2ludGVnZXI+CisKKyAgICA8IS0tIHVzZXIgaW50ZXJmYWNlIHNvdW5kIGVmZmVjdHMgLS0+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX3Bvd2VyX3NvdW5kc19lbmFibGVkIj4xPC9pbnRlZ2VyPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmX2xvd19iYXR0ZXJ5X3NvdW5kIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4vc3lzdGVtL21lZGlhL2F1ZGlvL3VpL0xvd0JhdHRlcnkub2dnPC9zdHJpbmc+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX2RvY2tfc291bmRzX2VuYWJsZWQiPjA8L2ludGVnZXI+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfZGVza19kb2NrX3NvdW5kIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4vc3lzdGVtL21lZGlhL2F1ZGlvL3VpL0RvY2sub2dnPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfZGVza191bmRvY2tfc291bmQiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPi9zeXN0ZW0vbWVkaWEvYXVkaW8vdWkvVW5kb2NrLm9nZzwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmX2Nhcl9kb2NrX3NvdW5kIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4vc3lzdGVtL21lZGlhL2F1ZGlvL3VpL0RvY2sub2dnPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfY2FyX3VuZG9ja19zb3VuZCIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+L3N5c3RlbS9tZWRpYS9hdWRpby91aS9VbmRvY2sub2dnPC9zdHJpbmc+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX2xvY2tzY3JlZW5fc291bmRzX2VuYWJsZWQiPjA8L2ludGVnZXI+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfbG9ja19zb3VuZCIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+L3N5c3RlbS9tZWRpYS9hdWRpby91aS9Mb2NrLm9nZzwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmX3VubG9ja19zb3VuZCIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+L3N5c3RlbS9tZWRpYS9hdWRpby91aS9VbmxvY2sub2dnPC9zdHJpbmc+CisKKyAgICA8IS0tIERlZmF1bHQgZm9yIFNldHRpbmdzLlN5c3RlbS5WSUJSQVRFX0lOX1NJTEVOVCAtLT4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfdmlicmF0ZV9pbl9zaWxlbnQiPnRydWU8L2Jvb2w+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvZGltZW5zLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvZGltZW5zLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2NmMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy9kaW1lbnMueG1sCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorPHJlc291cmNlcz4KKyAgICA8IS0tIE1hcmdpbiBhdCB0aGUgZWRnZSBvZiB0aGUgc2NyZWVuIHRvIGlnbm9yZSB0b3VjaCBldmVudHMgZm9yIGluIHRoZSB3aW5kb3dzaGFkZS4gLS0+CisgICAgPGRpbWVuIG5hbWU9InN0YXR1c19iYXJfZWRnZV9pZ25vcmUiPjVkcDwvZGltZW4+Cis8L3Jlc291cmNlcz4KKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEzYTNkMQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKQEAgLTAsMCArMSw1NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworLS0+Cis8cmVzb3VyY2VzIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8IS0tIE5hbWUgb2YgdGhlIHN0YXR1cyBiYXIgYXMgc2VlbiBpbiB0aGUgYXBwbGljYXRpb25zIGluZm8gc2V0dGluZ3MgcGFnZS4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJhcHBfbGFiZWwiPlN0YXR1cyBCYXI8L3N0cmluZz4KKworICAgIDwhLS0gVGhlIHRleHQgZm9yIHRoZSBidXR0b24gaW4gdGhlIG5vdGlmaWNhdGlvbiB3aW5kb3ctc2hhZGUgdGhhdCBjbGVhcnMKKyAgICAgICAgIGFsbCBvZiB0aGUgY3VycmVudGx5IHZpc2libGUgbm90aWZpY2F0aW9ucy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX2NsZWFyX2FsbF9idXR0b24iPkNsZWFyPC9zdHJpbmc+CisKKyAgICA8IS0tIFRoZSBsYWJlbCBpbiB0aGUgYmFyIGF0IHRoZSB0b3Agb2YgdGhlIHN0YXR1cyBiYXIgd2hlbiB0aGVyZSBhcmUgbm8gbm90aWZpY2F0aW9ucworICAgICAgICAgc2hvd2luZy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vX25vdGlmaWNhdGlvbnNfdGl0bGUiPk5vIG5vdGlmaWNhdGlvbnM8L3N0cmluZz4KKworICAgIDwhLS0gVGhlIGxhYmVsIGZvciB0aGUgZ3JvdXAgb2Ygbm90aWZpY2F0aW9ucyBmb3Igb25nb2luZyBldmVudHMgaW4gdGhlIG9wZW5lZCB2ZXJzaW9uIG9mCisgICAgICAgICB0aGUgc3RhdHVzIGJhci4gIEFuIG9uZ29pbmcgY2FsbCBpcyB0aGUgcHJpbWUgZXhhbXBsZSBvZiB0aGlzLiAgVGhlIE1QMyBtdXNpYyBwbGF5ZXIKKyAgICAgICAgIG1pZ2h0IGJlIGFub3RoZXIgZXhhbXBsZS4gIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9vbmdvaW5nX2V2ZW50c190aXRsZSI+T25nb2luZzwvc3RyaW5nPgorCisgICAgPCEtLSBUaGUgbGFiZWwgZm9yIHRoZSBncm91cCBvZiBub3RpZmljYXRpb25zIGZvciByZWNlbnQgZXZlbnRzIGluIHRoZSBvcGVuZWQgdmVyc2lvbiBvZgorICAgICAgICAgdGhlIHN0YXR1cyBiYXIuICBSZWNlbnRseSByZWNlaXZlZCB0ZXh0IG1lc3NzYWdlcyAoU01TKSwgZW1haWxzLCBjYWxlbmRhciBhbGVydHMsIGV0Yy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX2xhdGVzdF9ldmVudHNfdGl0bGUiPk5vdGlmaWNhdGlvbnM8L3N0cmluZz4KKworICAgIDwhLS0gV2hlbiB0aGUgYmF0dGVyeSBpcyBsb3csIHRoaXMgaXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyIGluIGEgZGlhbG9nLiAgVGhlIHRpdGxlIG9mIHRoZSBsb3cgYmF0dGVyeSBhbGVydC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X2xvd190aXRsZSI+UGxlYXNlIGNvbm5lY3QgY2hhcmdlcjwvc3RyaW5nPgorCisgICAgPCEtLSBXaGVuIHRoZSBiYXR0ZXJ5IGlzIGxvdywgdGhpcyBpcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgaW4gYSBkaWFsb2cuIFRoZSBzdWJ0aXRsZSBvZiB0aGUgbG93IGJhdHRlcnkgYWxlcnQuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9sb3dfc3VidGl0bGUiPlRoZSBiYXR0ZXJ5IGlzIGdldHRpbmcgbG93Ojwvc3RyaW5nPgorCisgICAgPCEtLSBBIG1lc3NhZ2UgdGhhdCBhcHBlYXJzIHdoZW4gdGhlIGJhdHRlcnkgbGV2ZWwgaXMgZ2V0dGluZyBsb3cgaW4gYSBkaWFsb2cuICBUaGlzIGlzIGFwcGVuZWQgdG8gdGhlIHN1YnRpdGxlIG9mIHRoZSBsb3cgYmF0dGVyeSBhbGVydC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X2xvd19wZXJjZW50X2Zvcm1hdCI+PHhsaWZmOmcgaWQ9Im51bWJlciI+JWQlJTwveGxpZmY6Zz4KKyAgICBvciBsZXNzIHJlbWFpbmluZy48L3N0cmluZz4KKworICAgIDwhLS0gV2hlbiB0aGUgYmF0dGVyeSBpcyBsb3csIHRoaXMgaXMgdGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdG8gZ28gdG8gdGhlCisgICAgICAgICBwb3dlciB1c2FnZSBhY3Rpdml0eSB0byBmaW5kIG91dCB3aGF0IGRyYWluZWQgdGhlIGJhdHRlcnkuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9sb3dfd2h5Ij5CYXR0ZXJ5IHVzZTwvc3RyaW5nPgorCis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTZmMzRhNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDYgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorCisgICAgPHN0eWxlIG5hbWU9IlRleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5UaXRsZSIgcGFyZW50PSJAYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIiPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRBcHBlYXJhbmNlIj4/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlU21hbGw8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFN0eWxlIj5ib2xkPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+P2FuZHJvaWQ6YXR0ci90ZXh0Q29sb3JQcmltYXJ5PC9pdGVtPgorICAgIDwvc3R5bGU+CisKKyAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkludHJ1ZGVyQWxlcnQiCisgICAgICAgIHBhcmVudD0iQGFuZHJvaWQ6c3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyIj4KKyAgICA8L3N0eWxlPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMveG1sL2Jvb2ttYXJrcy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMveG1sL2Jvb2ttYXJrcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhZWVhZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy94bWwvYm9va21hcmtzLnhtbApAQCAtMCwwICsxLDU2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGJvb2ttYXJrcz4KKyAgICA8Ym9va21hcmsKKyAgICAgICAgcGFja2FnZT0iY29tLmFuZHJvaWQuYnJvd3NlciIKKyAgICAgICAgY2xhc3M9ImNvbS5hbmRyb2lkLmJyb3dzZXIuQnJvd3NlckFjdGl2aXR5IgorICAgICAgICBzaG9ydGN1dD0iYiIgLz4KKyAgICA8Ym9va21hcmsKKyAgICAgICAgcGFja2FnZT0iY29tLmFuZHJvaWQuY29udGFjdHMiCisgICAgICAgIGNsYXNzPSJjb20uYW5kcm9pZC5jb250YWN0cy5EaWFsdGFjdHNDb250YWN0c0VudHJ5QWN0aXZpdHkiCisgICAgICAgIHNob3J0Y3V0PSJjIiAvPgorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5lbWFpbCIKKyAgICAgICAgY2xhc3M9ImNvbS5hbmRyb2lkLmVtYWlsLmFjdGl2aXR5LldlbGNvbWUiCisgICAgICAgIHNob3J0Y3V0PSJlIiAvPgorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uZ29vZ2xlLmFuZHJvaWQuZ20iCisgICAgICAgIGNsYXNzPSJjb20uZ29vZ2xlLmFuZHJvaWQuZ20uQ29udmVyc2F0aW9uTGlzdEFjdGl2aXR5R21haWwiCisgICAgICAgIHNob3J0Y3V0PSJnIiAvPgorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5pbSIKKyAgICAgICAgY2xhc3M9ImNvbS5hbmRyb2lkLmltLmFwcC5MYW5kaW5nUGFnZSIKKyAgICAgICAgc2hvcnRjdXQ9ImkiIC8+CisgICAgPGJvb2ttYXJrCisgICAgICAgIHBhY2thZ2U9ImNvbS5hbmRyb2lkLmNhbGVuZGFyIgorICAgICAgICBjbGFzcz0iY29tLmFuZHJvaWQuY2FsZW5kYXIuTGF1bmNoQWN0aXZpdHkiCisgICAgICAgIHNob3J0Y3V0PSJsIiAvPgorPCEtLQorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uZ29vZ2xlLmFuZHJvaWQuYXBwcy5tYXBzIgorICAgICAgICBjbGFzcz0iY29tLmdvb2dsZS5hbmRyb2lkLm1hcHMuTWFwc0FjdGl2aXR5IgorICAgICAgICBzaG9ydGN1dD0ibSIgLz4KKy0tPgorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5tdXNpYyIKKyAgICAgICAgY2xhc3M9ImNvbS5hbmRyb2lkLm11c2ljLk11c2ljQnJvd3NlckFjdGl2aXR5IgorICAgICAgICBzaG9ydGN1dD0icCIgLz4KKyAgICA8Ym9va21hcmsKKyAgICAgICAgcGFja2FnZT0iY29tLmFuZHJvaWQubW1zIgorICAgICAgICBjbGFzcz0iY29tLmFuZHJvaWQubW1zLnVpLkNvbnZlcnNhdGlvbkxpc3QiCisgICAgICAgIHNob3J0Y3V0PSJzIiAvPgorPC9ib29rbWFya3M+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0FuaW1hdGVkSW1hZ2VWaWV3LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0FuaW1hdGVkSW1hZ2VWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBkNGQ2YQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQW5pbWF0ZWRJbWFnZVZpZXcuamF2YQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkFuaW1hdGlvbkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MuUmVtb3RlVmlldzsKKworQFJlbW90ZVZpZXcKK3B1YmxpYyBjbGFzcyBBbmltYXRlZEltYWdlVmlldyBleHRlbmRzIEltYWdlVmlldyB7CisgICAgQW5pbWF0aW9uRHJhd2FibGUgbUFuaW07CisgICAgYm9vbGVhbiBtQXR0YWNoZWQ7CisKKyAgICBwdWJsaWMgQW5pbWF0ZWRJbWFnZVZpZXcoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgIH0KKworICAgIHB1YmxpYyBBbmltYXRlZEltYWdlVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUFuaW0oKSB7CisgICAgICAgIERyYXdhYmxlIGRyYXdhYmxlID0gZ2V0RHJhd2FibGUoKTsKKyAgICAgICAgaWYgKG1BdHRhY2hlZCAmJiBtQW5pbSAhPSBudWxsKSB7CisgICAgICAgICAgICBtQW5pbS5zdG9wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRyYXdhYmxlIGluc3RhbmNlb2YgQW5pbWF0aW9uRHJhd2FibGUpIHsKKyAgICAgICAgICAgIG1BbmltID0gKEFuaW1hdGlvbkRyYXdhYmxlKWRyYXdhYmxlOworICAgICAgICAgICAgaWYgKG1BdHRhY2hlZCkgeworICAgICAgICAgICAgICAgIG1BbmltLnN0YXJ0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQW5pbSA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBzZXRJbWFnZURyYXdhYmxlKERyYXdhYmxlIGRyYXdhYmxlKSB7CisgICAgICAgIHN1cGVyLnNldEltYWdlRHJhd2FibGUoZHJhd2FibGUpOworICAgICAgICB1cGRhdGVBbmltKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgQGFuZHJvaWQudmlldy5SZW1vdGFibGVWaWV3TWV0aG9kCisgICAgcHVibGljIHZvaWQgc2V0SW1hZ2VSZXNvdXJjZShpbnQgcmVzaWQpIHsKKyAgICAgICAgc3VwZXIuc2V0SW1hZ2VSZXNvdXJjZShyZXNpZCk7CisgICAgICAgIHVwZGF0ZUFuaW0oKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOworICAgICAgICBpZiAobUFuaW0gIT0gbnVsbCkgeworICAgICAgICAgICAgbUFuaW0uc3RhcnQoKTsKKyAgICAgICAgfQorICAgICAgICBtQXR0YWNoZWQgPSB0cnVlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uRGV0YWNoZWRGcm9tV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkRldGFjaGVkRnJvbVdpbmRvdygpOworICAgICAgICBpZiAobUFuaW0gIT0gbnVsbCkgeworICAgICAgICAgICAgbUFuaW0uc3RvcCgpOworICAgICAgICB9CisgICAgICAgIG1BdHRhY2hlZCA9IGZhbHNlOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9DYXJyaWVyTGFiZWwuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2FycmllckxhYmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg5ZDA5MwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2FycmllckxhYmVsLmphdmEKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnk7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCisvKioKKyAqIFRoaXMgd2lkZ2V0IGRpc3BsYXkgYW4gYW5hbG9naWMgY2xvY2sgd2l0aCB0d28gaGFuZHMgZm9yIGhvdXJzIGFuZAorICogbWludXRlcy4KKyAqLworcHVibGljIGNsYXNzIENhcnJpZXJMYWJlbCBleHRlbmRzIFRleHRWaWV3IHsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUF0dGFjaGVkOworCisgICAgcHVibGljIENhcnJpZXJMYWJlbChDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgdGhpcyhjb250ZXh0LCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2FycmllckxhYmVsKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHRoaXMoY29udGV4dCwgYXR0cnMsIDApOworICAgIH0KKworICAgIHB1YmxpYyBDYXJyaWVyTGFiZWwoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMsIGludCBkZWZTdHlsZSkgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycywgZGVmU3R5bGUpOworICAgICAgICB1cGRhdGVOZXR3b3JrTmFtZShmYWxzZSwgbnVsbCwgZmFsc2UsIG51bGwpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uQXR0YWNoZWRUb1dpbmRvdygpIHsKKyAgICAgICAgc3VwZXIub25BdHRhY2hlZFRvV2luZG93KCk7CisKKyAgICAgICAgaWYgKCFtQXR0YWNoZWQpIHsKKyAgICAgICAgICAgIG1BdHRhY2hlZCA9IHRydWU7CisgICAgICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnkuSW50ZW50cy5TUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTik7CisgICAgICAgICAgICBnZXRDb250ZXh0KCkucmVnaXN0ZXJSZWNlaXZlcihtSW50ZW50UmVjZWl2ZXIsIGZpbHRlciwgbnVsbCwgZ2V0SGFuZGxlcigpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uRGV0YWNoZWRGcm9tV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkRldGFjaGVkRnJvbVdpbmRvdygpOworICAgICAgICBpZiAobUF0dGFjaGVkKSB7CisgICAgICAgICAgICBnZXRDb250ZXh0KCkudW5yZWdpc3RlclJlY2VpdmVyKG1JbnRlbnRSZWNlaXZlcik7CisgICAgICAgICAgICBtQXR0YWNoZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChUZWxlcGhvbnkuSW50ZW50cy5TUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTi5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZU5ldHdvcmtOYW1lKGludGVudC5nZXRCb29sZWFuRXh0cmEoVGVsZXBob255LkludGVudHMuRVhUUkFfU0hPV19TUE4sIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRTdHJpbmdFeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TUE4pLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldEJvb2xlYW5FeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TSE9XX1BMTU4sIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRTdHJpbmdFeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9QTE1OKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgdm9pZCB1cGRhdGVOZXR3b3JrTmFtZShib29sZWFuIHNob3dTcG4sIFN0cmluZyBzcG4sIGJvb2xlYW4gc2hvd1BsbW4sIFN0cmluZyBwbG1uKSB7CisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgU2xvZy5kKCJDYXJyaWVyTGFiZWwiLCAidXBkYXRlTmV0d29ya05hbWUgc2hvd1Nwbj0iICsgc2hvd1NwbiArICIgc3BuPSIgKyBzcG4KKyAgICAgICAgICAgICAgICAgICAgKyAiIHNob3dQbG1uPSIgKyBzaG93UGxtbiArICIgcGxtbj0iICsgcGxtbik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nQnVpbGRlciBzdHIgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworICAgICAgICBib29sZWFuIHNvbWV0aGluZyA9IGZhbHNlOworICAgICAgICBpZiAoc2hvd1BsbW4gJiYgcGxtbiAhPSBudWxsKSB7CisgICAgICAgICAgICBzdHIuYXBwZW5kKHBsbW4pOworICAgICAgICAgICAgc29tZXRoaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2hvd1NwbiAmJiBzcG4gIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHNvbWV0aGluZykgeworICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0ci5hcHBlbmQoc3BuKTsKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNvbWV0aGluZykgeworICAgICAgICAgICAgc2V0VGV4dChzdHIudG9TdHJpbmcoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmxvY2tzY3JlZW5fY2Fycmllcl9kZWZhdWx0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIAorfQorCisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2xvY2suamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2xvY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmM4ZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9DbG9jay5qYXZhCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNhbnZhczsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlNwYW5uYWJsZTsKK2ltcG9ydCBhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuZm9ybWF0LkRhdGVGb3JtYXQ7CitpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLkNoYXJhY3RlclN0eWxlOworaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5Gb3JlZ3JvdW5kQ29sb3JTcGFuOworaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5SZWxhdGl2ZVNpemVTcGFuOworaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5SZWxhdGl2ZVNpemVTcGFuOworaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5TdHlsZVNwYW47CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCisvKioKKyAqIFRoaXMgd2lkZ2V0IGRpc3BsYXkgYW4gYW5hbG9naWMgY2xvY2sgd2l0aCB0d28gaGFuZHMgZm9yIGhvdXJzIGFuZAorICogbWludXRlcy4KKyAqLworcHVibGljIGNsYXNzIENsb2NrIGV4dGVuZHMgVGV4dFZpZXcgeworICAgIHByaXZhdGUgYm9vbGVhbiBtQXR0YWNoZWQ7CisgICAgcHJpdmF0ZSBDYWxlbmRhciBtQ2FsZW5kYXI7CisgICAgcHJpdmF0ZSBTdHJpbmcgbUNsb2NrRm9ybWF0U3RyaW5nOworICAgIHByaXZhdGUgU2ltcGxlRGF0ZUZvcm1hdCBtQ2xvY2tGb3JtYXQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQU1fUE1fU1RZTEVfTk9STUFMICA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFNX1BNX1NUWUxFX1NNQUxMICAgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTV9QTV9TVFlMRV9HT05FICAgID0gMjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTV9QTV9TVFlMRSA9IEFNX1BNX1NUWUxFX0dPTkU7CisKKyAgICBwdWJsaWMgQ2xvY2soQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHRoaXMoY29udGV4dCwgbnVsbCk7CisgICAgfQorCisgICAgcHVibGljIENsb2NrKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHRoaXMoY29udGV4dCwgYXR0cnMsIDApOworICAgIH0KKworICAgIHB1YmxpYyBDbG9jayhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycywgaW50IGRlZlN0eWxlKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzLCBkZWZTdHlsZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKworICAgICAgICBpZiAoIW1BdHRhY2hlZCkgeworICAgICAgICAgICAgbUF0dGFjaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7CisKKyAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX1RJQ0spOworICAgICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVfQ0hBTkdFRCk7CisgICAgICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fVElNRVpPTkVfQ0hBTkdFRCk7CisgICAgICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VEKTsKKworICAgICAgICAgICAgZ2V0Q29udGV4dCgpLnJlZ2lzdGVyUmVjZWl2ZXIobUludGVudFJlY2VpdmVyLCBmaWx0ZXIsIG51bGwsIGdldEhhbmRsZXIoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOT1RFOiBJdCdzIHNhZmUgdG8gZG8gdGhlc2UgYWZ0ZXIgcmVnaXN0ZXJpbmcgdGhlIHJlY2VpdmVyIHNpbmNlIHRoZSByZWNlaXZlciBhbHdheXMgcnVucworICAgICAgICAvLyBpbiB0aGUgbWFpbiB0aHJlYWQsIHRoZXJlZm9yZSB0aGUgcmVjZWl2ZXIgY2FuJ3QgcnVuIGJlZm9yZSB0aGlzIG1ldGhvZCByZXR1cm5zLgorCisgICAgICAgIC8vIFRoZSB0aW1lIHpvbmUgbWF5IGhhdmUgY2hhbmdlZCB3aGlsZSB0aGUgcmVjZWl2ZXIgd2Fzbid0IHJlZ2lzdGVyZWQsIHNvIHVwZGF0ZSB0aGUgVGltZQorICAgICAgICBtQ2FsZW5kYXIgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShUaW1lWm9uZS5nZXREZWZhdWx0KCkpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUgdG8gdGhlIGN1cnJlbnQgdGltZQorICAgICAgICB1cGRhdGVDbG9jaygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uRGV0YWNoZWRGcm9tV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkRldGFjaGVkRnJvbVdpbmRvdygpOworICAgICAgICBpZiAobUF0dGFjaGVkKSB7CisgICAgICAgICAgICBnZXRDb250ZXh0KCkudW5yZWdpc3RlclJlY2VpdmVyKG1JbnRlbnRSZWNlaXZlcik7CisgICAgICAgICAgICBtQXR0YWNoZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRVpPTkVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdHogPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoInRpbWUtem9uZSIpOworICAgICAgICAgICAgICAgIG1DYWxlbmRhciA9IENhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldFRpbWVab25lKHR6KSk7CisgICAgICAgICAgICAgICAgaWYgKG1DbG9ja0Zvcm1hdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1DbG9ja0Zvcm1hdC5zZXRUaW1lWm9uZShtQ2FsZW5kYXIuZ2V0VGltZVpvbmUoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdXBkYXRlQ2xvY2soKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBmaW5hbCB2b2lkIHVwZGF0ZUNsb2NrKCkgeworICAgICAgICBtQ2FsZW5kYXIuc2V0VGltZUluTWlsbGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICAgICAgc2V0VGV4dChnZXRTbWFsbFRpbWUoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBDaGFyU2VxdWVuY2UgZ2V0U21hbGxUaW1lKCkgeworICAgICAgICBDb250ZXh0IGNvbnRleHQgPSBnZXRDb250ZXh0KCk7CisgICAgICAgIGJvb2xlYW4gYjI0ID0gRGF0ZUZvcm1hdC5pczI0SG91ckZvcm1hdChjb250ZXh0KTsKKyAgICAgICAgaW50IHJlczsKKworICAgICAgICBpZiAoYjI0KSB7CisgICAgICAgICAgICByZXMgPSBSLnN0cmluZy50d2VudHlfZm91cl9ob3VyX3RpbWVfZm9ybWF0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzID0gUi5zdHJpbmcudHdlbHZlX2hvdXJfdGltZV9mb3JtYXQ7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBjaGFyIE1BR0lDMSA9ICdcdUVGMDAnOworICAgICAgICBmaW5hbCBjaGFyIE1BR0lDMiA9ICdcdUVGMDEnOworCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmOworICAgICAgICBTdHJpbmcgZm9ybWF0ID0gY29udGV4dC5nZXRTdHJpbmcocmVzKTsKKyAgICAgICAgaWYgKCFmb3JtYXQuZXF1YWxzKG1DbG9ja0Zvcm1hdFN0cmluZykpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBTZWFyY2ggZm9yIGFuIHVucXVvdGVkICJhIiBpbiB0aGUgZm9ybWF0IHN0cmluZywgc28gd2UgY2FuCisgICAgICAgICAgICAgKiBhZGQgZHVtbXkgY2hhcmFjdGVycyBhcm91bmQgaXQgdG8gbGV0IHVzIGZpbmQgaXQgYWdhaW4gYWZ0ZXIKKyAgICAgICAgICAgICAqIGZvcm1hdHRpbmcgYW5kIGNoYW5nZSBpdHMgc2l6ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKEFNX1BNX1NUWUxFICE9IEFNX1BNX1NUWUxFX05PUk1BTCkgeworICAgICAgICAgICAgICAgIGludCBhID0gLTE7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBxdW90ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvcm1hdC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IGZvcm1hdC5jaGFyQXQoaSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1wnJykgeworICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVkID0gIXF1b3RlZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIXF1b3RlZCAmJiBjID09ICdhJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBhIGJhY2sgc28gYW55IHdoaXRlc3BhY2UgYmVmb3JlIEFNL1BNIGlzIGFsc28gaW4gdGhlIGFsdGVybmF0ZSBzaXplLgorICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgYiA9IGE7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhID4gMCAmJiBDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGZvcm1hdC5jaGFyQXQoYS0xKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGEtLTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQuc3Vic3RyaW5nKDAsIGEpICsgTUFHSUMxICsgZm9ybWF0LnN1YnN0cmluZyhhLCBiKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiYSIgKyBNQUdJQzIgKyBmb3JtYXQuc3Vic3RyaW5nKGIgKyAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1DbG9ja0Zvcm1hdCA9IHNkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KGZvcm1hdCk7CisgICAgICAgICAgICBtQ2xvY2tGb3JtYXRTdHJpbmcgPSBmb3JtYXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZGYgPSBtQ2xvY2tGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNkZi5mb3JtYXQobUNhbGVuZGFyLmdldFRpbWUoKSk7CisKKyAgICAgICAgaWYgKEFNX1BNX1NUWUxFICE9IEFNX1BNX1NUWUxFX05PUk1BTCkgeworICAgICAgICAgICAgaW50IG1hZ2ljMSA9IHJlc3VsdC5pbmRleE9mKE1BR0lDMSk7CisgICAgICAgICAgICBpbnQgbWFnaWMyID0gcmVzdWx0LmluZGV4T2YoTUFHSUMyKTsKKyAgICAgICAgICAgIGlmIChtYWdpYzEgPj0gMCAmJiBtYWdpYzIgPiBtYWdpYzEpIHsKKyAgICAgICAgICAgICAgICBTcGFubmFibGVTdHJpbmdCdWlsZGVyIGZvcm1hdHRlZCA9IG5ldyBTcGFubmFibGVTdHJpbmdCdWlsZGVyKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgaWYgKEFNX1BNX1NUWUxFID09IEFNX1BNX1NUWUxFX0dPTkUpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkLmRlbGV0ZShtYWdpYzEsIG1hZ2ljMisxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoQU1fUE1fU1RZTEUgPT0gQU1fUE1fU1RZTEVfU01BTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlclN0eWxlIHN0eWxlID0gbmV3IFJlbGF0aXZlU2l6ZVNwYW4oMC43Zik7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQuc2V0U3BhbihzdHlsZSwgbWFnaWMxLCBtYWdpYzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGFubmFibGUuU1BBTl9FWENMVVNJVkVfSU5DTFVTSVZFKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQuZGVsZXRlKG1hZ2ljMiwgbWFnaWMyICsgMSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZC5kZWxldGUobWFnaWMxLCBtYWdpYzEgKyAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorIAorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgfQorfQorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0Nsb3NlRHJhZ0hhbmRsZS5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9DbG9zZURyYWdIYW5kbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDVjYWY1MQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2xvc2VEcmFnSGFuZGxlLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OworCisKK3B1YmxpYyBjbGFzcyBDbG9zZURyYWdIYW5kbGUgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgeworICAgIFN0YXR1c0JhclNlcnZpY2UgbVNlcnZpY2U7CisKKyAgICBwdWJsaWMgQ2xvc2VEcmFnSGFuZGxlKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbnN1cmUgdGhhdCwgaWYgdGhlcmUgaXMgbm8gdGFyZ2V0IHVuZGVyIHVzIHRvIHJlY2VpdmUgdGhlIHRvdWNoLAorICAgICAqIHRoYXQgd2UgcHJvY2VzcyBpdCBvdXJzZWxmLiAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgb25JbnRlcmNlcHRUb3VjaEV2ZW50KCkKKyAgICAgKiBpcyBhbHdheXMgY2FsbGVkIGZvciB0aGUgZW50aXJlIGdlc3R1cmUuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gb25Ub3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7CisgICAgICAgIGlmIChldmVudC5nZXRBY3Rpb24oKSAhPSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgeworICAgICAgICAgICAgbVNlcnZpY2UuaW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gb25JbnRlcmNlcHRUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7CisgICAgICAgIHJldHVybiBtU2VydmljZS5pbnRlcmNlcHRUb3VjaEV2ZW50KGV2ZW50KQorICAgICAgICAgICAgICAgID8gdHJ1ZSA6IHN1cGVyLm9uSW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0NvbW1hbmRRdWV1ZS5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Db21tYW5kUXVldWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTM0N2IxCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Db21tYW5kUXVldWUuamF2YQpAQCAtMCwwICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuSVN0YXR1c0JhcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbkxpc3Q7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhck5vdGlmaWNhdGlvbjsKKworLyoqCisgKiBUaGlzIGNsYXNzIHRha2VzIHRoZSBmdW5jdGlvbnMgZnJvbSBJU3RhdHVzQmFyIHRoYXQgY29tZSBpbiBvbgorICogYmluZGVyIHBvb2wgdGhyZWFkcyBhbmQgcG9zdHMgbWVzc2FnZXMgdG8gZ2V0IHRoZW0gb250byB0aGUgbWFpbgorICogdGhyZWFkLCBhbmQgY2FsbHMgb250byBDYWxsYmFja3MuICBJdCBhbHNvIHRha2VzIGNhcmUgb2YKKyAqIGNvYWxlc2NpbmcgdGhlc2UgY2FsbHMgc28gdGhleSBkb24ndCBzdGFjayB1cC4gIEZvciB0aGUgY2FsbHMKKyAqIGFyZSBjb2FsZXNjZWQsIG5vdGUgdGhhdCB0aGV5IGFyZSBhbGwgaWRlbXBvdGVudC4KKyAqLworY2xhc3MgQ29tbWFuZFF1ZXVlIGV4dGVuZHMgSVN0YXR1c0Jhci5TdHViIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0YXR1c0Jhci5Db21tYW5kUXVldWUiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19NQVNLID0gMHhmZmZmMDAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfTUFTSyA9IDB4MDAwMGZmZmY7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0lDT04gPSAweDAwMDEwMDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9TRVRfSUNPTiA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX1JFTU9WRV9JQ09OID0gMjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfQUREX05PVElGSUNBVElPTiA9IDB4MDAwMjAwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19VUERBVEVfTk9USUZJQ0FUSU9OID0gMHgwMDAzMDAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX1JFTU9WRV9OT1RJRklDQVRJT04gPSAweDAwMDQwMDAwOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19ESVNBQkxFID0gMHgwMDA1MDAwMDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfU0VUX1ZJU0lCSUxJVFkgPSAweDAwMDYwMDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9FWFBBTkQgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9DT0xMQVBTRSA9IDI7CisKKyAgICBwcml2YXRlIFN0YXR1c0Jhckljb25MaXN0IG1MaXN0OworICAgIHByaXZhdGUgQ2FsbGJhY2tzIG1DYWxsYmFja3M7CisgICAgcHJpdmF0ZSBIYW5kbGVyIG1IYW5kbGVyID0gbmV3IEgoKTsKKworICAgIHByaXZhdGUgY2xhc3MgTm90aWZpY2F0aW9uUXVldWVFbnRyeSB7CisgICAgICAgIElCaW5kZXIga2V5OworICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCBiYWNrIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50ZXJmYWNlIENhbGxiYWNrcyB7CisgICAgICAgIHB1YmxpYyB2b2lkIGFkZEljb24oU3RyaW5nIHNsb3QsIGludCBpbmRleCwgaW50IHZpZXdJbmRleCwgU3RhdHVzQmFySWNvbiBpY29uKTsKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlSWNvbihTdHJpbmcgc2xvdCwgaW50IGluZGV4LCBpbnQgdmlld0luZGV4LAorICAgICAgICAgICAgICAgIFN0YXR1c0Jhckljb24gb2xkLCBTdGF0dXNCYXJJY29uIGljb24pOworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmVJY29uKFN0cmluZyBzbG90LCBpbnQgaW5kZXgsIGludCB2aWV3SW5kZXgpOworICAgICAgICBwdWJsaWMgdm9pZCBhZGROb3RpZmljYXRpb24oSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pOworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVOb3RpZmljYXRpb24oSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pOworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmVOb3RpZmljYXRpb24oSUJpbmRlciBrZXkpOworICAgICAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKGludCBzdGF0ZSk7CisgICAgICAgIHB1YmxpYyB2b2lkIGFuaW1hdGVFeHBhbmQoKTsKKyAgICAgICAgcHVibGljIHZvaWQgYW5pbWF0ZUNvbGxhcHNlKCk7CisgICAgfQorCisgICAgcHVibGljIENvbW1hbmRRdWV1ZShDYWxsYmFja3MgY2FsbGJhY2tzLCBTdGF0dXNCYXJJY29uTGlzdCBsaXN0KSB7CisgICAgICAgIG1DYWxsYmFja3MgPSBjYWxsYmFja3M7CisgICAgICAgIG1MaXN0ID0gbGlzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJY29uKGludCBpbmRleCwgU3RhdHVzQmFySWNvbiBpY29uKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3QpIHsKKyAgICAgICAgICAgIGludCB3aGF0ID0gTVNHX0lDT04gfCBpbmRleDsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKHdoYXQpOworICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZSh3aGF0LCBPUF9TRVRfSUNPTiwgMCwgaWNvbi5jbG9uZSgpKS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUljb24oaW50IGluZGV4KSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3QpIHsKKyAgICAgICAgICAgIGludCB3aGF0ID0gTVNHX0lDT04gfCBpbmRleDsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKHdoYXQpOworICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZSh3aGF0LCBPUF9SRU1PVkVfSUNPTiwgMCwgbnVsbCkuc2VuZFRvVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGROb3RpZmljYXRpb24oSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdCkgeworICAgICAgICAgICAgTm90aWZpY2F0aW9uUXVldWVFbnRyeSBuZSA9IG5ldyBOb3RpZmljYXRpb25RdWV1ZUVudHJ5KCk7CisgICAgICAgICAgICBuZS5rZXkgPSBrZXk7CisgICAgICAgICAgICBuZS5ub3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19BRERfTk9USUZJQ0FUSU9OLCAwLCAwLCBuZSkuc2VuZFRvVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVOb3RpZmljYXRpb24oSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdCkgeworICAgICAgICAgICAgTm90aWZpY2F0aW9uUXVldWVFbnRyeSBuZSA9IG5ldyBOb3RpZmljYXRpb25RdWV1ZUVudHJ5KCk7CisgICAgICAgICAgICBuZS5rZXkgPSBrZXk7CisgICAgICAgICAgICBuZS5ub3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19VUERBVEVfTk9USUZJQ0FUSU9OLCAwLCAwLCBuZSkuc2VuZFRvVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVOb3RpZmljYXRpb24oSUJpbmRlciBrZXkpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdCkgeworICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfUkVNT1ZFX05PVElGSUNBVElPTiwgMCwgMCwga2V5KS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoaW50IHN0YXRlKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3QpIHsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19ESVNBQkxFKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0RJU0FCTEUsIHN0YXRlLCAwLCBudWxsKS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFuaW1hdGVFeHBhbmQoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3QpIHsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19TRVRfVklTSUJJTElUWSk7CisgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19TRVRfVklTSUJJTElUWSwgT1BfRVhQQU5ELCAwLCBudWxsKS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFuaW1hdGVDb2xsYXBzZSgpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdCkgeworICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoTVNHX1NFVF9WSVNJQklMSVRZKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX1NFVF9WSVNJQklMSVRZLCBPUF9DT0xMQVBTRSwgMCwgbnVsbCkuc2VuZFRvVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIEggZXh0ZW5kcyBIYW5kbGVyIHsKKyAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICAgICAgZmluYWwgaW50IHdoYXQgPSBtc2cud2hhdCAmIE1TR19NQVNLOworICAgICAgICAgICAgc3dpdGNoICh3aGF0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfSUNPTjogeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaW5kZXggPSBtc2cud2hhdCAmIElOREVYX01BU0s7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCB2aWV3SW5kZXggPSBtTGlzdC5nZXRWaWV3SW5kZXgoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1zZy5hcmcxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9QX1NFVF9JQ09OOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gKFN0YXR1c0Jhckljb24pbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXNCYXJJY29uIG9sZCA9IG1MaXN0LmdldEljb24oaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGlzdC5zZXRJY29uKGluZGV4LCBpY29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrcy5hZGRJY29uKG1MaXN0LmdldFNsb3QoaW5kZXgpLCBpbmRleCwgdmlld0luZGV4LCBpY29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGlzdC5zZXRJY29uKGluZGV4LCBpY29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrcy51cGRhdGVJY29uKG1MaXN0LmdldFNsb3QoaW5kZXgpLCBpbmRleCwgdmlld0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCwgaWNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPUF9SRU1PVkVfSUNPTjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGlzdC5yZW1vdmVJY29uKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2tzLnJlbW92ZUljb24obUxpc3QuZ2V0U2xvdChpbmRleCksIGluZGV4LCB2aWV3SW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIE1TR19BRERfTk9USUZJQ0FUSU9OOiB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvblF1ZXVlRW50cnkgbmUgPSAoTm90aWZpY2F0aW9uUXVldWVFbnRyeSltc2cub2JqOworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2tzLmFkZE5vdGlmaWNhdGlvbihuZS5rZXksIG5lLm5vdGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIE1TR19VUERBVEVfTk9USUZJQ0FUSU9OOiB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvblF1ZXVlRW50cnkgbmUgPSAoTm90aWZpY2F0aW9uUXVldWVFbnRyeSltc2cub2JqOworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2tzLnVwZGF0ZU5vdGlmaWNhdGlvbihuZS5rZXksIG5lLm5vdGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIE1TR19SRU1PVkVfTk9USUZJQ0FUSU9OOiB7CisgICAgICAgICAgICAgICAgICAgIG1DYWxsYmFja3MucmVtb3ZlTm90aWZpY2F0aW9uKChJQmluZGVyKW1zZy5vYmopOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfRElTQUJMRToKKyAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrcy5kaXNhYmxlKG1zZy5hcmcxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfU0VUX1ZJU0lCSUxJVFk6CisgICAgICAgICAgICAgICAgICAgIGlmIChtc2cuYXJnMSA9PSBPUF9FWFBBTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1DYWxsYmFja3MuYW5pbWF0ZUV4cGFuZCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrcy5hbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0RhdGVWaWV3LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0RhdGVWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZkM2E3ZQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRGF0ZVZpZXcuamF2YQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworCitpbXBvcnQgamF2YS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBEYXRlVmlldyBleHRlbmRzIFRleHRWaWV3IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkRhdGVWaWV3IjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtVXBkYXRpbmcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRV9USUNLKQorICAgICAgICAgICAgICAgICAgICB8fCBhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRVpPTkVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVDbG9jaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyBEYXRlVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25EZXRhY2hlZEZyb21XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uRGV0YWNoZWRGcm9tV2luZG93KCk7CisgICAgICAgIHNldFVwZGF0ZXMoZmFsc2UpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBpbnQgZ2V0U3VnZ2VzdGVkTWluaW11bVdpZHRoKCkgeworICAgICAgICAvLyBtYWtlcyB0aGUgbGFyZ2UgYmFja2dyb3VuZCBiaXRtYXAgbm90IGZvcmNlIHVzIHRvIGZ1bGwgd2lkdGgKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUNsb2NrKCkgeworICAgICAgICBEYXRlIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIHNldFRleHQoRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5MT05HKS5mb3JtYXQobm93KSk7CisgICAgfQorCisgICAgdm9pZCBzZXRVcGRhdGVzKGJvb2xlYW4gdXBkYXRlKSB7CisgICAgICAgIGlmICh1cGRhdGUgIT0gbVVwZGF0aW5nKSB7CisgICAgICAgICAgICBtVXBkYXRpbmcgPSB1cGRhdGU7CisgICAgICAgICAgICBpZiAodXBkYXRlKSB7CisgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZm9yIEludGVudCBicm9hZGNhc3RzIGZvciB0aGUgY2xvY2sgYW5kIGJhdHRlcnkKKyAgICAgICAgICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX1RJQ0spOworICAgICAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FWk9ORV9DSEFOR0VEKTsKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1JbnRlbnRSZWNlaXZlciwgZmlsdGVyLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVDbG9jaygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQ29udGV4dC51bnJlZ2lzdGVyUmVjZWl2ZXIobUludGVudFJlY2VpdmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9FeHBhbmRlZFZpZXcuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRXhwYW5kZWRWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q4NWYyNwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRXhwYW5kZWRWaWV3LmphdmEKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuRGlzcGxheTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKKworCitwdWJsaWMgY2xhc3MgRXhwYW5kZWRWaWV3IGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKKyAgICBTdGF0dXNCYXJTZXJ2aWNlIG1TZXJ2aWNlOworICAgIGludCBtUHJldkhlaWdodCA9IC0xOworCisgICAgcHVibGljIEV4cGFuZGVkVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25GaW5pc2hJbmZsYXRlKCkgeworICAgICAgICBzdXBlci5vbkZpbmlzaEluZmxhdGUoKTsKKyAgICB9CisKKyAgICAvKiogV2Ugd2FudCB0byBzaHJpbmsgZG93biB0byAwLCBhbmQgaWdub3JlIHRoZSBiYWNrZ3JvdW5kLiAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgZ2V0U3VnZ2VzdGVkTWluaW11bUhlaWdodCgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkgeworICAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICAgICAgIGludCBoZWlnaHQgPSBib3R0b20gLSB0b3A7CisgICAgICAgICBpZiAoaGVpZ2h0ICE9IG1QcmV2SGVpZ2h0KSB7CisgICAgICAgICAgICAgLy9TbG9nLmQoU3RhdHVzQmFyU2VydmljZS5UQUcsICJoZWlnaHQgY2hhbmdlZCBvbGQ9IiArIG1QcmV2SGVpZ2h0CisgICAgICAgICAgICAgLy8gICAgICsgIiBuZXc9IiArIGhlaWdodCk7CisgICAgICAgICAgICAgbVByZXZIZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlRXhwYW5kZWRWaWV3UG9zKFN0YXR1c0JhclNlcnZpY2UuRVhQQU5ERURfTEVBVkVfQUxPTkUpOworICAgICAgICAgfQorICAgICB9Cit9CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0ZpeGVkU2l6ZURyYXdhYmxlLmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0ZpeGVkU2l6ZURyYXdhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIyMmI2MQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRml4ZWRTaXplRHJhd2FibGUuamF2YQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWN0OworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworCitjbGFzcyBGaXhlZFNpemVEcmF3YWJsZSBleHRlbmRzIERyYXdhYmxlIHsKKyAgICBEcmF3YWJsZSBtRHJhd2FibGU7CisgICAgaW50IG1MZWZ0OworICAgIGludCBtVG9wOworICAgIGludCBtUmlnaHQ7CisgICAgaW50IG1Cb3R0b207CisKKyAgICBGaXhlZFNpemVEcmF3YWJsZShEcmF3YWJsZSB0aGF0KSB7CisgICAgICAgIG1EcmF3YWJsZSA9IHRoYXQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Rml4ZWRCb3VuZHMoaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIpIHsKKyAgICAgICAgbUxlZnQgPSBsOworICAgICAgICBtVG9wID0gdDsKKyAgICAgICAgbVJpZ2h0ID0gcjsKKyAgICAgICAgbUJvdHRvbSA9IGI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Qm91bmRzKFJlY3QgYm91bmRzKSB7CisgICAgICAgIG1EcmF3YWJsZS5zZXRCb3VuZHMobUxlZnQsIG1Ub3AsIG1SaWdodCwgbUJvdHRvbSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Qm91bmRzKGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiKSB7CisgICAgICAgIG1EcmF3YWJsZS5zZXRCb3VuZHMobUxlZnQsIG1Ub3AsIG1SaWdodCwgbUJvdHRvbSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZHJhdyhDYW52YXMgY2FudmFzKSB7CisgICAgICAgIG1EcmF3YWJsZS5kcmF3KGNhbnZhcyk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRPcGFjaXR5KCkgeworICAgICAgICByZXR1cm4gbURyYXdhYmxlLmdldE9wYWNpdHkoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRBbHBoYShpbnQgYWxwaGEpIHsKKyAgICAgICAgbURyYXdhYmxlLnNldEFscGhhKGFscGhhKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDb2xvckZpbHRlcihDb2xvckZpbHRlciBjZikgeworICAgICAgICBtRHJhd2FibGUuc2V0Q29sb3JGaWx0ZXIoY2YpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvSWNvbk1lcmdlci5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9JY29uTWVyZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI3YmVkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0ljb25NZXJnZXIuamF2YQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OworCitpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkuUjsKKworCitwdWJsaWMgY2xhc3MgSWNvbk1lcmdlciBleHRlbmRzIExpbmVhckxheW91dCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJJY29uTWVyZ2VyIjsKKworICAgIHByaXZhdGUgU3RhdHVzQmFySWNvblZpZXcgbU1vcmVWaWV3OworCisgICAgcHVibGljIEljb25NZXJnZXIoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZE1vcmVWaWV3KFN0YXR1c0Jhckljb25WaWV3IHYsIExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMgbHApIHsKKyAgICAgICAgc3VwZXIuYWRkVmlldyh2LCBscCk7CisgICAgICAgIG1Nb3JlVmlldyA9IHY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkVmlldyhTdGF0dXNCYXJJY29uVmlldyB2LCBpbnQgaW5kZXgsIExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMgbHApIHsKKyAgICAgICAgaWYgKGluZGV4ID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJBdHRlbXB0IHRvIHB1dCB2aWV3IGJlZm9yZSB0aGUgbW9yZSB2aWV3OiAiICsgdik7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIuYWRkVmlldyh2LCBpbmRleCwgbHApOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIpIHsKKyAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbCwgdCwgciwgYik7CisKKyAgICAgICAgZmluYWwgaW50IG1heFdpZHRoID0gciAtIGw7CisgICAgICAgIGZpbmFsIGludCBOID0gZ2V0Q2hpbGRDb3VudCgpOworICAgICAgICBpbnQgaTsKKworICAgICAgICAvLyBnZXQgdGhlIHJpZ2h0bW9zdCBvbmUsIGFuZCBzZWUgaWYgd2UgZXZlbiBuZWVkIHRvIGRvIGFueXRoaW5nCisgICAgICAgIGludCBmaXRSaWdodCA9IC0xOworICAgICAgICBmb3IgKGk9Ti0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgIGZpbmFsIFZpZXcgY2hpbGQgPSBnZXRDaGlsZEF0KGkpOworICAgICAgICAgICAgaWYgKGNoaWxkLmdldFZpc2liaWxpdHkoKSAhPSBHT05FKSB7CisgICAgICAgICAgICAgICAgZml0UmlnaHQgPSBjaGlsZC5nZXRSaWdodCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZmluZCB0aGUgZmlyc3QgdmlzaWJsZSBvbmUgdGhhdCBpc24ndCB0aGUgbW9yZSBpY29uCisgICAgICAgIGZpbmFsIFN0YXR1c0Jhckljb25WaWV3IG1vcmVWaWV3ID0gbU1vcmVWaWV3OworICAgICAgICBpbnQgZml0TGVmdCA9IC0xOworICAgICAgICBpbnQgc3RhcnRJbmRleCA9IC0xOworICAgICAgICBmb3IgKGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIGZpbmFsIFZpZXcgY2hpbGQgPSBnZXRDaGlsZEF0KGkpOworICAgICAgICAgICAgaWYgKGNoaWxkID09IG1vcmVWaWV3KSB7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGkrMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmdldFZpc2liaWxpdHkoKSAhPSBHT05FKSB7CisgICAgICAgICAgICAgICAgZml0TGVmdCA9IGNoaWxkLmdldExlZnQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtb3JlVmlldyA9PSBudWxsIHx8IHN0YXJ0SW5kZXggPCAwKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlN0YXR1cyBCYXIgLyBJY29uTWVyZ2VyIG1vcmVWaWV3ID09ICIgKyBtb3JlVmlldworICAgICAgICAgICAgICAgICAgICArICIgc3RhcnRJbmRleD0iICsgc3RhcnRJbmRleCk7CisgICAgICAgICAgICAqLworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBpZiBpdCBmaXRzIHdpdGhvdXQgdGhlIG1vcmUgaWNvbiwgdGhlbiBoaWRlIHRoZSBtb3JlIGljb24gYW5kIHVwZGF0ZSBmaXRMZWZ0CisgICAgICAgIC8vIHNvIGV2ZXJ5dGhpbmcgZ2V0cyBwdXNoZWQgbGVmdAorICAgICAgICBpbnQgYWRqdXN0ID0gMDsKKyAgICAgICAgaWYgKGZpdFJpZ2h0IC0gZml0TGVmdCA8PSBtYXhXaWR0aCkgeworICAgICAgICAgICAgYWRqdXN0ID0gZml0TGVmdCAtIG1vcmVWaWV3LmdldExlZnQoKTsKKyAgICAgICAgICAgIGZpdExlZnQgLT0gYWRqdXN0OworICAgICAgICAgICAgZml0UmlnaHQgLT0gYWRqdXN0OworICAgICAgICAgICAgbW9yZVZpZXcubGF5b3V0KDAsIG1vcmVWaWV3LmdldFRvcCgpLCAwLCBtb3JlVmlldy5nZXRCb3R0b20oKSk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGV4dHJhID0gZml0UmlnaHQgLSByOworICAgICAgICBpbnQgc2hpZnQgPSAtMTsKKworICAgICAgICBpbnQgYnJlYWtpbmdQb2ludCA9IGZpdExlZnQgKyBleHRyYSArIGFkanVzdDsKKyAgICAgICAgaW50IG51bWJlciA9IDA7CisgICAgICAgIGZvciAoaT1zdGFydEluZGV4OyBpPE47IGkrKykgeworICAgICAgICAgICAgZmluYWwgU3RhdHVzQmFySWNvblZpZXcgY2hpbGQgPSAoU3RhdHVzQmFySWNvblZpZXcpZ2V0Q2hpbGRBdChpKTsKKyAgICAgICAgICAgIGlmIChjaGlsZC5nZXRWaXNpYmlsaXR5KCkgIT0gR09ORSkgeworICAgICAgICAgICAgICAgIGludCBjaGlsZExlZnQgPSBjaGlsZC5nZXRMZWZ0KCk7CisgICAgICAgICAgICAgICAgaW50IGNoaWxkUmlnaHQgPSBjaGlsZC5nZXRSaWdodCgpOworICAgICAgICAgICAgICAgIGlmIChjaGlsZExlZnQgPCBicmVha2luZ1BvaW50KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGhpZGUgdGhpcyBvbmUKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5b3V0KDAsIGNoaWxkLmdldFRvcCgpLCAwLCBjaGlsZC5nZXRCb3R0b20oKSk7CisgICAgICAgICAgICAgICAgICAgIGludCBuID0gY2hpbGQuZ2V0U3RhdHVzQmFySWNvbigpLm51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICs9IDE7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciArPSBuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gZGVjaWRlIGhvdyBtdWNoIHRvIHNoaWZ0IGJ5CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gY2hpbGRMZWZ0IC0gZml0TGVmdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBzaGlmdCB0aGlzIGxlZnQgYnkgc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5b3V0KGNoaWxkTGVmdC1zaGlmdCwgY2hpbGQuZ2V0VG9wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFJpZ2h0LXNoaWZ0LCBjaGlsZC5nZXRCb3R0b20oKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBCVUc6IFVwZGF0aW5nIHRoZSB0ZXh0IGR1cmluZyB0aGUgbGF5b3V0IGhlcmUgZG9lc24ndCBzZWVtIHRvIGNhdXNlCisgICAgICAgIC8vIHRoZSB2aWV3IHRvIGJlIHJlZHJhd24gZnVsbHkuICBUaGUgdGV4dCB2aWV3IGdldHMgcmVzaXplZCBjb3JyZWN0bHksIGJ1dCB0aGUKKyAgICAgICAgLy8gdGV4dCBjb250ZW50cyBhcmVuJ3QgZHJhd24gcHJvcGVybHkuICBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBwb3N0IGEgbWVzc2FnZQorICAgICAgICAvLyBhbmQgcHJvdmlkZSB0aGUgdmFsdWUgbGF0ZXIuICBXZSdyZSB0aGUgb25seSBvbmUgY2hhbmdpbmcgdGhpcyB2YWx1ZSBzaG93IGl0CisgICAgICAgIC8vIHNob3VsZCBiZSBvcmRlcmVkIGNvcnJlY3RseS4KKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAvLyBUT0RPIHRoaXMubW9yZUljb24udXBkYXRlKG51bWJlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQnVnV29ya2Fyb3VuZE51bWJlciA9IG51bWJlcjsKKyAgICAgICAgICAgIG1CdWdXb3JrYXJvdW5kSGFuZGxlci5wb3N0KG1CdWdXb3JrYXJvdW5kUnVubmFibGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgbUJ1Z1dvcmthcm91bmROdW1iZXI7CisgICAgcHJpdmF0ZSBIYW5kbGVyIG1CdWdXb3JrYXJvdW5kSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7CisgICAgcHJpdmF0ZSBSdW5uYWJsZSBtQnVnV29ya2Fyb3VuZFJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAvKiBUT0RPCisgICAgICAgICAgICBJY29uTWVyZ2VyLnRoaXMubW9yZUljb24udXBkYXRlKG1CdWdXb3JrYXJvdW5kTnVtYmVyKTsKKyAgICAgICAgICAgIEljb25NZXJnZXIudGhpcy5tb3JlSWNvbi52aWV3LmludmFsaWRhdGUoKTsKKyAgICAgICAgICAgICovCisgICAgICAgIH0KKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9MYXRlc3RJdGVtVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9MYXRlc3RJdGVtVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlODk2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0xhdGVzdEl0ZW1WaWV3LmphdmEKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CisKK3B1YmxpYyBjbGFzcyBMYXRlc3RJdGVtVmlldyBleHRlbmRzIEZyYW1lTGF5b3V0IHsKKworICAgIHB1YmxpYyBMYXRlc3RJdGVtVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2KSB7CisgICAgICAgIHJldHVybiBvblRvdWNoRXZlbnQoZXYpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uRGF0YS5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Ob3RpZmljYXRpb25EYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4MjI2NwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uRGF0YS5qYXZhCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhck5vdGlmaWNhdGlvbjsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogVGhlIGxpc3Qgb2YgY3VycmVudGx5IGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucy4KKyAqLworcHVibGljIGNsYXNzIE5vdGlmaWNhdGlvbkRhdGEgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgRW50cnkgeworICAgICAgICBwdWJsaWMgSUJpbmRlciBrZXk7CisgICAgICAgIHB1YmxpYyBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uOworICAgICAgICBwdWJsaWMgU3RhdHVzQmFySWNvblZpZXcgaWNvbjsKKyAgICAgICAgcHVibGljIFZpZXcgcm93OyAvLyB0aGUgb3V0ZXIgZXhwYW5kZWQgdmlldworICAgICAgICBwdWJsaWMgVmlldyBjb250ZW50OyAvLyB0YWtlcyB0aGUgY2xpY2sgZXZlbnRzIGFuZCBzZW5kcyB0aGUgUGVuZGluZ0ludGVudAorICAgICAgICBwdWJsaWMgVmlldyBleHBhbmRlZDsgLy8gdGhlIGluZmxhdGVkIFJlbW90ZVZpZXdzCisgICAgfQorICAgIHByaXZhdGUgZmluYWwgQXJyYXlMaXN0PEVudHJ5PiBtRW50cmllcyA9IG5ldyBBcnJheUxpc3Q8RW50cnk+KCk7CisKKyAgICBwdWJsaWMgaW50IHNpemUoKSB7CisgICAgICAgIHJldHVybiBtRW50cmllcy5zaXplKCk7CisgICAgfQorCisgICAgcHVibGljIEVudHJ5IGdldEVudHJ5QXQoaW50IGluZGV4KSB7CisgICAgICAgIHJldHVybiBtRW50cmllcy5nZXQoaW5kZXgpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZmluZEVudHJ5KElCaW5kZXIga2V5KSB7CisgICAgICAgIGZpbmFsIGludCBOID0gbUVudHJpZXMuc2l6ZSgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICBFbnRyeSBlbnRyeSA9IG1FbnRyaWVzLmdldChpKTsKKyAgICAgICAgICAgIGlmIChlbnRyeS5rZXkgPT0ga2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgYWRkKElCaW5kZXIga2V5LCBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uLCBWaWV3IHJvdywgVmlldyBjb250ZW50LAorICAgICAgICAgICAgVmlldyBleHBhbmRlZCwgU3RhdHVzQmFySWNvblZpZXcgaWNvbikgeworICAgICAgICBFbnRyeSBlbnRyeSA9IG5ldyBFbnRyeSgpOworICAgICAgICBlbnRyeS5rZXkgPSBrZXk7CisgICAgICAgIGVudHJ5Lm5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbjsKKyAgICAgICAgZW50cnkucm93ID0gcm93OworICAgICAgICBlbnRyeS5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgZW50cnkuZXhwYW5kZWQgPSBleHBhbmRlZDsKKyAgICAgICAgZW50cnkuaWNvbiA9IGljb247CisgICAgICAgIGZpbmFsIGludCBpbmRleCA9IGNob29zZUluZGV4KG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24ud2hlbik7CisgICAgICAgIG1FbnRyaWVzLmFkZChpbmRleCwgZW50cnkpOworICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorCisgICAgcHVibGljIEVudHJ5IHJlbW92ZShJQmluZGVyIGtleSkgeworICAgICAgICBmaW5hbCBpbnQgTiA9IG1FbnRyaWVzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgRW50cnkgZW50cnkgPSBtRW50cmllcy5nZXQoaSk7CisgICAgICAgICAgICBpZiAoZW50cnkua2V5ID09IGtleSkgeworICAgICAgICAgICAgICAgIG1FbnRyaWVzLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgY2hvb3NlSW5kZXgoZmluYWwgbG9uZyB3aGVuKSB7CisgICAgICAgIGZpbmFsIGludCBOID0gbUVudHJpZXMuc2l6ZSgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICBFbnRyeSBlbnRyeSA9IG1FbnRyaWVzLmdldChpKTsKKyAgICAgICAgICAgIGlmIChlbnRyeS5ub3RpZmljYXRpb24ubm90aWZpY2F0aW9uLndoZW4gPiB3aGVuKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE47CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHdoZXRoZXIgdGhlcmUgYXJlIGFueSB2aXNpYmxlIGl0ZW1zIChpLmUuIGl0ZW1zIHdpdGhvdXQgYW4gZXJyb3IpLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc1Zpc2libGVJdGVtcygpIHsKKyAgICAgICAgZmluYWwgaW50IE4gPSBtRW50cmllcy5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIEVudHJ5IGVudHJ5ID0gbUVudHJpZXMuZ2V0KGkpOworICAgICAgICAgICAgaWYgKGVudHJ5LmV4cGFuZGVkICE9IG51bGwpIHsgLy8gdGhlIHZpZXcgc3VjY2Vzc2Z1bGx5IGluZmxhdGVkCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgY2xlYXJhYmxlIGl0ZW1zICh0aGF0IGFyZW4ndCBlcnJvcnMpLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc0NsZWFyYWJsZUl0ZW1zKCkgeworICAgICAgICBmaW5hbCBpbnQgTiA9IG1FbnRyaWVzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgRW50cnkgZW50cnkgPSBtRW50cmllcy5nZXQoaSk7CisgICAgICAgICAgICBpZiAoZW50cnkuZXhwYW5kZWQgIT0gbnVsbCkgeyAvLyB0aGUgdmlldyBzdWNjZXNzZnVsbHkgaW5mbGF0ZWQKKyAgICAgICAgICAgICAgICBpZiAoKGVudHJ5Lm5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19OT19DTEVBUikgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL05vdGlmaWNhdGlvbkxpbmVhckxheW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMDUzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL05vdGlmaWNhdGlvbkxpbmVhckxheW91dC5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OworCisKK3B1YmxpYyBjbGFzcyBOb3RpZmljYXRpb25MaW5lYXJMYXlvdXQgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgeworICAgIHB1YmxpYyBOb3RpZmljYXRpb25MaW5lYXJMYXlvdXQoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OGJkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0Jhckljb25WaWV3LmphdmEKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3RGVidWc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbjsKKworcHVibGljIGNsYXNzIFN0YXR1c0Jhckljb25WaWV3IGV4dGVuZHMgQW5pbWF0ZWRJbWFnZVZpZXcgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RhdHVzQmFySWNvblZpZXciOworCisgICAgcHJpdmF0ZSBTdGF0dXNCYXJJY29uIG1JY29uOworICAgIEBWaWV3RGVidWcuRXhwb3J0ZWRQcm9wZXJ0eSBwcml2YXRlIFN0cmluZyBtU2xvdDsKKworICAgIHB1YmxpYyBTdGF0dXNCYXJJY29uVmlldyhDb250ZXh0IGNvbnRleHQsIFN0cmluZyBzbG90KSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICBtU2xvdCA9IHNsb3Q7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBzdHJlcShTdHJpbmcgYSwgU3RyaW5nIGIpIHsKKyAgICAgICAgaWYgKGEgPT0gYikgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGEgPT0gbnVsbCAmJiBiICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYSAhPSBudWxsICYmIGIgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBhLmVxdWFscyhiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHNldCBzdWNjZWVkZWQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gc2V0KFN0YXR1c0Jhckljb24gaWNvbikgeworICAgICAgICBmaW5hbCBib29sZWFuIGljb25FcXVhbHMgPSBtSWNvbiAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgc3RyZXEobUljb24uaWNvblBhY2thZ2UsIGljb24uaWNvblBhY2thZ2UpCisgICAgICAgICAgICAgICAgJiYgbUljb24uaWNvbklkID09IGljb24uaWNvbklkOworICAgICAgICBmaW5hbCBib29sZWFuIGxldmVsRXF1YWxzID0gaWNvbkVxdWFscworICAgICAgICAgICAgICAgICYmIG1JY29uLmljb25MZXZlbCA9PSBpY29uLmljb25MZXZlbDsKKyAgICAgICAgZmluYWwgYm9vbGVhbiB2aXNpYmlsaXR5RXF1YWxzID0gbUljb24gIT0gbnVsbAorICAgICAgICAgICAgICAgICYmIG1JY29uLnZpc2libGUgPT0gaWNvbi52aXNpYmxlOworICAgICAgICBpZiAoIWljb25FcXVhbHMpIHsKKyAgICAgICAgICAgIERyYXdhYmxlIGRyYXdhYmxlID0gZ2V0SWNvbihpY29uKTsKKyAgICAgICAgICAgIGlmIChkcmF3YWJsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgU2xvZy53KFN0YXR1c0JhclNlcnZpY2UuVEFHLCAiTm8gaWNvbiBmb3Igc2xvdCAiICsgbVNsb3QpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldEltYWdlRHJhd2FibGUoZHJhd2FibGUpOworICAgICAgICB9CisgICAgICAgIGlmICghbGV2ZWxFcXVhbHMpIHsKKyAgICAgICAgICAgIHNldEltYWdlTGV2ZWwoaWNvbi5pY29uTGV2ZWwpOworICAgICAgICB9CisgICAgICAgIGlmICghdmlzaWJpbGl0eUVxdWFscykgeworICAgICAgICAgICAgc2V0VmlzaWJpbGl0eShpY29uLnZpc2libGUgPyBWSVNJQkxFIDogR09ORSk7CisgICAgICAgIH0KKyAgICAgICAgbUljb24gPSBpY29uLmNsb25lKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgRHJhd2FibGUgZ2V0SWNvbihTdGF0dXNCYXJJY29uIGljb24pIHsKKyAgICAgICAgcmV0dXJuIGdldEljb24oZ2V0Q29udGV4dCgpLCBpY29uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSByaWdodCBpY29uIHRvIHVzZSBmb3IgdGhpcyBpdGVtLCByZXNwZWN0aW5nIHRoZSBpY29uSWQgYW5kCisgICAgICogaWNvblBhY2thZ2UgKGlmIHNldCkKKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IHRvIHVzZSB0byBnZXQgcmVzb3VyY2VzIGlmIGljb25QYWNrYWdlIGlzIG5vdCBzZXQKKyAgICAgKiBAcmV0dXJuIERyYXdhYmxlIGZvciB0aGlzIGl0ZW0sIG9yIG51bGwgaWYgdGhlIHBhY2thZ2Ugb3IgaXRlbSBjb3VsZCBub3QKKyAgICAgKiAgICAgICAgIGJlIGZvdW5kCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBEcmF3YWJsZSBnZXRJY29uKENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFySWNvbiBpY29uKSB7CisgICAgICAgIFJlc291cmNlcyByID0gbnVsbDsKKworICAgICAgICBpZiAoaWNvbi5pY29uUGFja2FnZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHIgPSBjb250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0UmVzb3VyY2VzRm9yQXBwbGljYXRpb24oaWNvbi5pY29uUGFja2FnZSk7CisgICAgICAgICAgICB9IGNhdGNoIChQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoU3RhdHVzQmFyU2VydmljZS5UQUcsICJJY29uIHBhY2thZ2Ugbm90IGZvdW5kOiAiICsgaWNvbi5pY29uUGFja2FnZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpY29uLmljb25JZCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiByLmdldERyYXdhYmxlKGljb24uaWNvbklkKTsKKyAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTbG9nLncoU3RhdHVzQmFyU2VydmljZS5UQUcsICJJY29uIG5vdCBmb3VuZCBpbiAiCisgICAgICAgICAgICAgICAgICArIChpY29uLmljb25QYWNrYWdlICE9IG51bGwgPyBpY29uLmljb25JZCA6ICI8c3lzdGVtPiIpCisgICAgICAgICAgICAgICAgICArICI6ICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGljb24uaWNvbklkKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbiBnZXRTdGF0dXNCYXJJY29uKCkgeworICAgICAgICByZXR1cm4gbUljb247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9TdGF0dXNCYXJQb2xpY3kuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvU3RhdHVzQmFyUG9saWN5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYzOWVlNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvU3RhdHVzQmFyUG9saWN5LmphdmEKQEAgLTAsMCArMSwxMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIucG9saWN5OworCitpbXBvcnQgYW5kcm9pZC5hcHAuU3RhdHVzQmFyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BbGVydERpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhBMmRwOworaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aEFkYXB0ZXI7CitpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoSGVhZHNldDsKK2ltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhQYmFwOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2U7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLlJpbmd0b25lOworaW1wb3J0IGFuZHJvaWQubWVkaWEuUmluZ3RvbmVNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKK2ltcG9ydCBhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVTdGF0ZUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZTsKK2ltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5TaWduYWxTdHJlbmd0aDsKK2ltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGU7CitpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLlJlbGF0aXZlU2l6ZVNwYW47CitpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLkZvcmVncm91bmRDb2xvclNwYW47CitpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLlN0eWxlU3BhbjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuU3Bhbm5hYmxlOworaW1wb3J0IGFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJJbXBsOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSUJhdHRlcnlTdGF0czsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255SW50ZW50czsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuY2RtYS5FcmlJbmZvOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5jZG1hLlR0eUludGVudDsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQmF0dGVyeVN0YXRzU2VydmljZTsKKworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CisKKy8qKgorICogVGhpcyBjbGFzcyBjb250YWlucyBhbGwgb2YgdGhlIHBvbGljeSBhYm91dCB3aGljaCBpY29ucyBhcmUgaW5zdGFsbGVkIGluIHRoZSBzdGF0dXMKKyAqIGJhciBhdCBib290IHRpbWUuICBJdCBnb2VzIHRocm91Z2ggdGhlIG5vcm1hbCBBUEkgZm9yIGljb25zLCBldmVuIHRob3VnaCBpdCBwcm9iYWJseQorICogc3RyaWN0bHkgZG9lc24ndCBuZWVkIHRvLgorICovCitwdWJsaWMgY2xhc3MgU3RhdHVzQmFyUG9saWN5IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0YXR1c0JhclBvbGljeSI7CisKKyAgICAvLyBtZXNzYWdlIGNvZGVzIGZvciB0aGUgaGFuZGxlcgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFVkVOVF9CQVRURVJZX0NMT1NFID0gNDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTV9QTV9TVFlMRV9OT1JNQUwgID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQU1fUE1fU1RZTEVfU01BTEwgICA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFNX1BNX1NUWUxFX0dPTkUgICAgPSAyOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFNX1BNX1NUWUxFID0gQU1fUE1fU1RZTEVfR09ORTsKKworICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIGZpbmFsIFN0YXR1c0Jhck1hbmFnZXIgbVNlcnZpY2U7CisgICAgcHJpdmF0ZSBmaW5hbCBIYW5kbGVyIG1IYW5kbGVyID0gbmV3IFN0YXR1c0JhckhhbmRsZXIoKTsKKyAgICBwcml2YXRlIGZpbmFsIElCYXR0ZXJ5U3RhdHMgbUJhdHRlcnlTdGF0czsKKworICAgIC8vIHN0b3JhZ2UKKyAgICBwcml2YXRlIFN0b3JhZ2VNYW5hZ2VyIG1TdG9yYWdlTWFuYWdlcjsKKworICAgIC8vIGJhdHRlcnkKKyAgICBwcml2YXRlIGJvb2xlYW4gbUJhdHRlcnlGaXJzdCA9IHRydWU7CisgICAgcHJpdmF0ZSBib29sZWFuIG1CYXR0ZXJ5UGx1Z2dlZDsKKyAgICBwcml2YXRlIGludCBtQmF0dGVyeUxldmVsOworICAgIHByaXZhdGUgQWxlcnREaWFsb2cgbUxvd0JhdHRlcnlEaWFsb2c7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQmF0dGVyeUxldmVsVGV4dFZpZXc7CisgICAgcHJpdmF0ZSBWaWV3IG1CYXR0ZXJ5VmlldzsKKyAgICBwcml2YXRlIGludCBtQmF0dGVyeVZpZXdTZXF1ZW5jZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gZmFsc2U7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBTSE9XX0xPV19CQVRURVJZX1dBUk5JTkcgPSB0cnVlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gU0hPV19CQVRURVJZX1dBUk5JTkdTX0lOX0NBTEwgPSB0cnVlOworCisgICAgLy8gcGhvbmUKKyAgICBwcml2YXRlIFRlbGVwaG9ueU1hbmFnZXIgbVBob25lOworICAgIHByaXZhdGUgaW50IG1QaG9uZVNpZ25hbEljb25JZDsKKworICAgIC8vKioqKiogU2lnbmFsIHN0cmVuZ3RoIGljb25zCisgICAgLy9HU00vVU1UUworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNTaWduYWxJbWFnZXMgPSBuZXcgaW50W10geworICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF8wLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF8xLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF8yLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF8zLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF80CisgICAgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzU2lnbmFsSW1hZ2VzX3IgPSBuZXcgaW50W10geworICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jfc2lnbmFsXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcl9zaWduYWxfMSwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yX3NpZ25hbF8yLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jfc2lnbmFsXzMsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcl9zaWduYWxfNAorICAgIH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc1JvYW1pbmdJbmRpY2F0b3JJbWFnZXNfY2RtYSA9IG5ldyBpbnRbXSB7CisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIC8vU3RhbmRhcmQgUm9hbWluZyBJbmRpY2F0b3IKKyAgICAgICAgLy8gMSBpcyBTdGFuZGFyZCBSb2FtaW5nIEluZGljYXRvciBPRkYKKyAgICAgICAgLy8gVE9ETyBUOiBpbWFnZSBuZXZlciB1c2VkLCByZW1vdmUgYW5kIHB1dCAwIGluc3RlYWQ/CisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisKKyAgICAgICAgLy8gMiBpcyBTdGFuZGFyZCBSb2FtaW5nIEluZGljYXRvciBGTEFTSElORworICAgICAgICAvLyBUT0RPIFQ6IGltYWdlIG5ldmVyIHVzZWQsIHJlbW92ZSBhbmQgcHV0IDAgaW5zdGVhZD8KKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKworICAgICAgICAvLyAzLTEyIFN0YW5kYXJkIEVSSQorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLCAvLzMKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKworICAgICAgICAvLyAxMy02MyBSZXNlcnZlZCBmb3IgU3RhbmRhcmQgRVJJCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIC8vMTMKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKworICAgICAgICAvLyA2NC0xMjcgUmVzZXJ2ZWQgZm9yIE5vbiBTdGFuZGFyZCAoT3BlcmF0b3IgU3BlY2lmaWMpIEVSSQorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLCAvLzY0CisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAgLy84MworCisgICAgICAgIC8vIDEyOC0yNTUgUmVzZXJ2ZWQKKyAgICB9OworCisgICAgLy8qKioqKiBEYXRhIGNvbm5lY3Rpb24gaWNvbnMKKyAgICBwcml2YXRlIGludFtdIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfZzsKKyAgICAvL0dTTS9VTVRTCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc0RhdGFOZXRUeXBlX2cgPSBuZXcgaW50W10geworICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLAorICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luX2csCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfb3V0X2csCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5hbmRvdXRfZywKKyAgICAgICAgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzRGF0YU5ldFR5cGVfM2cgPSBuZXcgaW50W10geworICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZywKKyAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbl8zZywKKyAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9vdXRfM2csCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2csCisgICAgICAgIH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc0RhdGFOZXRUeXBlX2UgPSBuZXcgaW50W10geworICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9lLAorICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luX2UsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfb3V0X2UsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5hbmRvdXRfZSwKKyAgICAgICAgfTsKKyAgICAvLzMuNUcKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzRGF0YU5ldFR5cGVfaCA9IG5ldyBpbnRbXSB7CisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2gsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5faCwKKyAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9vdXRfaCwKKyAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLAorICAgIH07CisKKyAgICAvL0NETUEKKyAgICAvLyBVc2UgM0cgaWNvbnMgZm9yIEVWRE8gZGF0YSBhbmQgMXggaWNvbnMgZm9yIDFYUlRUIGRhdGEKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzRGF0YU5ldFR5cGVfMXggPSBuZXcgaW50W10geworICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzF4LAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5fMXgsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9vdXRfMXgsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeCwKKyAgICB9OworCisgICAgLy8gQXNzdW1lIGl0J3MgYWxsIGdvb2QgdW5sZXNzIHdlIGhlYXIgb3RoZXJ3aXNlLiAgV2UgZG9uJ3QgYWx3YXlzIHNlZW0KKyAgICAvLyB0byBnZXQgYnJvYWRjYXN0cyB0aGF0IGl0ICppcyogdGhlcmUuCisgICAgSWNjQ2FyZC5TdGF0ZSBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOworICAgIGludCBtUGhvbmVTdGF0ZSA9IFRlbGVwaG9ueU1hbmFnZXIuQ0FMTF9TVEFURV9JRExFOworICAgIGludCBtRGF0YVN0YXRlID0gVGVsZXBob255TWFuYWdlci5EQVRBX0RJU0NPTk5FQ1RFRDsKKyAgICBpbnQgbURhdGFBY3Rpdml0eSA9IFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9OT05FOworICAgIFNlcnZpY2VTdGF0ZSBtU2VydmljZVN0YXRlOworICAgIFNpZ25hbFN0cmVuZ3RoIG1TaWduYWxTdHJlbmd0aDsKKworICAgIC8vIGRhdGEgY29ubmVjdGlvbgorICAgIHByaXZhdGUgYm9vbGVhbiBtRGF0YUljb25WaXNpYmxlOworICAgIHByaXZhdGUgYm9vbGVhbiBtSHNwYURhdGFEaXN0aW5ndWlzaGFibGU7CisKKyAgICAvLyByaW5nZXIgdm9sdW1lCisgICAgcHJpdmF0ZSBib29sZWFuIG1Wb2x1bWVWaXNpYmxlOworCisgICAgLy8gYmx1ZXRvb3RoIGRldmljZSBzdGF0dXMKKyAgICBwcml2YXRlIGludCBtQmx1ZXRvb3RoSGVhZHNldFN0YXRlOworICAgIHByaXZhdGUgYm9vbGVhbiBtQmx1ZXRvb3RoQTJkcENvbm5lY3RlZDsKKyAgICBwcml2YXRlIGludCBtQmx1ZXRvb3RoUGJhcFN0YXRlOworICAgIHByaXZhdGUgYm9vbGVhbiBtQmx1ZXRvb3RoRW5hYmxlZDsKKworICAgIC8vIHdpZmkKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzV2lmaVNpZ25hbEltYWdlcyA9IG5ldyBpbnRbXSB7CisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzEsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzIsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzMsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzQsCisgICAgICAgIH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IHNXaWZpVGVtcG9yYXJpbHlOb3RDb25uZWN0ZWRJbWFnZSA9CisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzA7CisKKyAgICBwcml2YXRlIGludCBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IC0xOworICAgIHByaXZhdGUgYm9vbGVhbiBtSXNXaWZpQ29ubmVjdGVkID0gZmFsc2U7CisKKyAgICAvLyBzeW5jIHN0YXRlCisgICAgLy8gSWYgc3luYyBpcyBhY3RpdmUgdGhlIFN5bmNBY3RpdmUgaWNvbiBpcyBkaXNwbGF5ZWQuIElmIHN5bmMgaXMgbm90IGFjdGl2ZSBidXQKKyAgICAvLyBzeW5jIGlzIGZhaWxpbmcgdGhlIFN5bmNGYWlsaW5nIGljb24gaXMgZGlzcGxheWVkLiBPdGhlcndpc2UgbmVpdGhlciBhcmUgZGlzcGxheWVkLgorCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtSW50ZW50UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9CQVRURVJZX0NIQU5HRUQpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlQmF0dGVyeShpbnRlbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX0FMQVJNX0NIQU5HRUQpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlQWxhcm0oaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9TWU5DX1NUQVRFX0NIQU5HRUQpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlU3luY1N0YXRlKGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fQkFUVEVSWV9MT1cpKSB7CisgICAgICAgICAgICAgICAgb25CYXR0ZXJ5TG93KGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fQkFUVEVSWV9PS0FZKQorICAgICAgICAgICAgICAgICAgICB8fCBhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fUE9XRVJfQ09OTkVDVEVEKSkgeworICAgICAgICAgICAgICAgIG9uQmF0dGVyeU9rYXkoaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQWRhcHRlci5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkgfHwKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhCbHVldG9vdGhIZWFkc2V0LkFDVElPTl9TVEFURV9DSEFOR0VEKSB8fAorICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCkgfHwKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhCbHVldG9vdGhQYmFwLlBCQVBfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlQmx1ZXRvb3RoKGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLk5FVFdPUktfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pIHx8CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuV0lGSV9TVEFURV9DSEFOR0VEX0FDVElPTikgfHwKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5SU1NJX0NIQU5HRURfQUNUSU9OKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZVdpZmkoaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoTG9jYXRpb25NYW5hZ2VyLkdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pIHx8CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoTG9jYXRpb25NYW5hZ2VyLkdQU19GSVhfQ0hBTkdFX0FDVElPTikpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVHcHMoaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX0NIQU5HRURfQUNUSU9OKSB8fAorICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKEF1ZGlvTWFuYWdlci5WSUJSQVRFX1NFVFRJTkdfQ0hBTkdFRF9BQ1RJT04pKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlVm9sdW1lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZVNpbVN0YXRlKGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFR0eUludGVudC5UVFlfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZVRUWShpbnRlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyBTdGF0dXNCYXJQb2xpY3koQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbVNlcnZpY2UgPSAoU3RhdHVzQmFyTWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TVEFUVVNfQkFSX1NFUlZJQ0UpOworICAgICAgICBtU2lnbmFsU3RyZW5ndGggPSBuZXcgU2lnbmFsU3RyZW5ndGgoKTsKKyAgICAgICAgbUJhdHRlcnlTdGF0cyA9IEJhdHRlcnlTdGF0c1NlcnZpY2UuZ2V0U2VydmljZSgpOworCisgICAgICAgIC8vIHN0b3JhZ2UKKyAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TVE9SQUdFX1NFUlZJQ0UpOworICAgICAgICBtU3RvcmFnZU1hbmFnZXIucmVnaXN0ZXJMaXN0ZW5lcigKKyAgICAgICAgICAgICAgICBuZXcgY29tLmFuZHJvaWQuc3lzdGVtdWkudXNiLlN0b3JhZ2VOb3RpZmljYXRpb24oY29udGV4dCkpOworCisgICAgICAgIC8vIGJhdHRlcnkKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiYmF0dGVyeSIsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfYmF0dGVyeV91bmtub3duLCAwKTsKKworICAgICAgICAvLyBwaG9uZV9zaWduYWwKKyAgICAgICAgbVBob25lID0gKFRlbGVwaG9ueU1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpOworICAgICAgICBtUGhvbmVTaWduYWxJY29uSWQgPSBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF9udWxsOworICAgICAgICBtU2VydmljZS5zZXRJY29uKCJwaG9uZV9zaWduYWwiLCBtUGhvbmVTaWduYWxJY29uSWQsIDApOworCisgICAgICAgIC8vIHJlZ2lzdGVyIGZvciBwaG9uZSBzdGF0ZSBub3RpZmljYXRpb25zLgorICAgICAgICAoKFRlbGVwaG9ueU1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlRFTEVQSE9OWV9TRVJWSUNFKSkKKyAgICAgICAgICAgICAgICAubGlzdGVuKG1QaG9uZVN0YXRlTGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fU0VSVklDRV9TVEFURQorICAgICAgICAgICAgICAgICAgICAgICAgfCBQaG9uZVN0YXRlTGlzdGVuZXIuTElTVEVOX1NJR05BTF9TVFJFTkdUSFMKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgUGhvbmVTdGF0ZUxpc3RlbmVyLkxJU1RFTl9DQUxMX1NUQVRFCisgICAgICAgICAgICAgICAgICAgICAgICB8IFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fREFUQV9DT05ORUNUSU9OX1NUQVRFCisgICAgICAgICAgICAgICAgICAgICAgICB8IFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fREFUQV9BQ1RJVklUWSk7CisKKyAgICAgICAgLy8gZGF0YV9jb25uZWN0aW9uCisgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImRhdGFfY29ubmVjdGlvbiIsIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZywgMCk7CisgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJkYXRhX2Nvbm5lY3Rpb24iLCBmYWxzZSk7CisKKyAgICAgICAgLy8gd2lmaQorICAgICAgICBtU2VydmljZS5zZXRJY29uKCJ3aWZpIiwgc1dpZmlTaWduYWxJbWFnZXNbMF0sIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgid2lmaSIsIGZhbHNlKTsKKyAgICAgICAgLy8gd2lmaSB3aWxsIGdldCB1cGRhdGVkIGJ5IHRoZSBzdGlja3kgaW50ZW50cworCisgICAgICAgIC8vIFRUWSBzdGF0dXMKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigidHR5IiwgIFIuZHJhd2FibGUuc3RhdF9zeXNfdHR5X21vZGUsIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgidHR5IiwgZmFsc2UpOworCisgICAgICAgIC8vIENkbWEgUm9hbWluZyBJbmRpY2F0b3IsIEVSSQorICAgICAgICBtU2VydmljZS5zZXRJY29uKCJjZG1hX2VyaSIsIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiY2RtYV9lcmkiLCBmYWxzZSk7CisKKyAgICAgICAgLy8gYmx1ZXRvb3RoIHN0YXR1cworICAgICAgICBtU2VydmljZS5zZXRJY29uKCJibHVldG9vdGgiLCBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoLCAwKTsKKyAgICAgICAgQmx1ZXRvb3RoQWRhcHRlciBhZGFwdGVyID0gQmx1ZXRvb3RoQWRhcHRlci5nZXREZWZhdWx0QWRhcHRlcigpOworICAgICAgICBpZiAoYWRhcHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICBtQmx1ZXRvb3RoRW5hYmxlZCA9IGFkYXB0ZXIuaXNFbmFibGVkKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQmx1ZXRvb3RoRW5hYmxlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1CbHVldG9vdGhBMmRwQ29ubmVjdGVkID0gZmFsc2U7CisgICAgICAgIG1CbHVldG9vdGhIZWFkc2V0U3RhdGUgPSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRDsKKyAgICAgICAgbUJsdWV0b290aFBiYXBTdGF0ZSA9IEJsdWV0b290aFBiYXAuU1RBVEVfRElTQ09OTkVDVEVEOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiYmx1ZXRvb3RoIiwgbUJsdWV0b290aEVuYWJsZWQpOworCisgICAgICAgIC8vIEdwcyBzdGF0dXMKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiZ3BzIiwgUi5kcmF3YWJsZS5zdGF0X3N5c19ncHNfYWNxdWlyaW5nX2FuaW0sIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiZ3BzIiwgZmFsc2UpOworCisgICAgICAgIC8vIEFsYXJtIGNsb2NrCisgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImFsYXJtX2Nsb2NrIiwgUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9hbGFybSwgMCk7CisgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJhbGFybV9jbG9jayIsIGZhbHNlKTsKKworICAgICAgICAvLyBTeW5jIHN0YXRlCisgICAgICAgIG1TZXJ2aWNlLnNldEljb24oInN5bmNfYWN0aXZlIiwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zeW5jX2FuaW0wLCAwKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigic3luY19mYWlsaW5nIiwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zeW5jX2Vycm9yLCAwKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoInN5bmNfYWN0aXZlIiwgZmFsc2UpOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgic3luY19mYWlsaW5nIiwgZmFsc2UpOworCisgICAgICAgIC8vIHZvbHVtZQorICAgICAgICBtU2VydmljZS5zZXRJY29uKCJ2b2x1bWUiLCBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl9zaWxlbnQsIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgidm9sdW1lIiwgZmFsc2UpOworICAgICAgICB1cGRhdGVWb2x1bWUoKTsKKworICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworCisgICAgICAgIC8vIFJlZ2lzdGVyIGZvciBJbnRlbnQgYnJvYWRjYXN0cyBmb3IuLi4KKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9CQVRURVJZX0xPVyk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9CQVRURVJZX09LQVkpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fUE9XRVJfQ09OTkVDVEVEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0FMQVJNX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fU1lOQ19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihBdWRpb01hbmFnZXIuUklOR0VSX01PREVfQ0hBTkdFRF9BQ1RJT04pOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEF1ZGlvTWFuYWdlci5WSUJSQVRFX1NFVFRJTkdfQ0hBTkdFRF9BQ1RJT04pOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEFkYXB0ZXIuQUNUSU9OX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoUGJhcC5QQkFQX1NUQVRFX0NIQU5HRURfQUNUSU9OKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihXaWZpTWFuYWdlci5XSUZJX1NUQVRFX0NIQU5HRURfQUNUSU9OKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihXaWZpTWFuYWdlci5TVVBQTElDQU5UX0NPTk5FQ1RJT05fQ0hBTkdFX0FDVElPTik7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oV2lmaU1hbmFnZXIuTkVUV09SS19TVEFURV9DSEFOR0VEX0FDVElPTik7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oV2lmaU1hbmFnZXIuUlNTSV9DSEFOR0VEX0FDVElPTik7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oTG9jYXRpb25NYW5hZ2VyLkdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKExvY2F0aW9uTWFuYWdlci5HUFNfRklYX0NIQU5HRV9BQ1RJT04pOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUdHlJbnRlbnQuVFRZX0VOQUJMRURfQ0hBTkdFX0FDVElPTik7CisgICAgICAgIG1Db250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobUludGVudFJlY2VpdmVyLCBmaWx0ZXIsIG51bGwsIG1IYW5kbGVyKTsKKworICAgICAgICAvLyBsb2FkIGNvbmZpZyB0byBkZXRlcm1pbmUgaWYgdG8gZGlzdGluZ3Vpc2ggSHNwYSBkYXRhIGljb24KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Ic3BhRGF0YURpc3Rpbmd1aXNoYWJsZSA9IG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgIFIuYm9vbC5jb25maWdfaHNwYV9kYXRhX2Rpc3Rpbmd1aXNoYWJsZSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBtSHNwYURhdGFEaXN0aW5ndWlzaGFibGUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVBbGFybShJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGJvb2xlYW4gYWxhcm1TZXQgPSBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKCJhbGFybVNldCIsIGZhbHNlKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoImFsYXJtX2Nsb2NrIiwgYWxhcm1TZXQpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVTeW5jU3RhdGUoSW50ZW50IGludGVudCkgeworICAgICAgICBib29sZWFuIGlzQWN0aXZlID0gaW50ZW50LmdldEJvb2xlYW5FeHRyYSgiYWN0aXZlIiwgZmFsc2UpOworICAgICAgICBib29sZWFuIGlzRmFpbGluZyA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoImZhaWxpbmciLCBmYWxzZSk7CisgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJzeW5jX2FjdGl2ZSIsIGlzQWN0aXZlKTsKKyAgICAgICAgLy8gRG9uJ3QgZGlzcGxheSBzeW5jIGZhaWxpbmcgaWNvbjogQlVHIDEyOTc5NjMgU2V0IHN5bmMgZXJyb3IgdGltZW91dCB0byAibmV2ZXIiCisgICAgICAgIC8vbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoInN5bmNfZmFpbGluZyIsIGlzRmFpbGluZyAmJiAhaXNBY3RpdmUpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVCYXR0ZXJ5KEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgZmluYWwgaW50IGlkID0gaW50ZW50LmdldEludEV4dHJhKCJpY29uLXNtYWxsIiwgMCk7CisgICAgICAgIGludCBsZXZlbCA9IGludGVudC5nZXRJbnRFeHRyYSgibGV2ZWwiLCAwKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiYmF0dGVyeSIsIGlkLCBsZXZlbCk7CisKKyAgICAgICAgYm9vbGVhbiBwbHVnZ2VkID0gaW50ZW50LmdldEludEV4dHJhKCJwbHVnZ2VkIiwgMCkgIT0gMDsKKyAgICAgICAgbGV2ZWwgPSBpbnRlbnQuZ2V0SW50RXh0cmEoImxldmVsIiwgLTEpOworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVCYXR0ZXJ5IGxldmVsPSIgKyBsZXZlbAorICAgICAgICAgICAgICAgICAgICArICIgcGx1Z2dlZD0iICsgcGx1Z2dlZAorICAgICAgICAgICAgICAgICAgICArICIgbUJhdHRlcnlQbHVnZ2VkPSIgKyBtQmF0dGVyeVBsdWdnZWQKKyAgICAgICAgICAgICAgICAgICAgKyAiIG1CYXR0ZXJ5TGV2ZWw9IiArIG1CYXR0ZXJ5TGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgKyAiIG1CYXR0ZXJ5Rmlyc3Q9IiArIG1CYXR0ZXJ5Rmlyc3QpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvbGRQbHVnZ2VkID0gbUJhdHRlcnlQbHVnZ2VkOworCisgICAgICAgIG1CYXR0ZXJ5UGx1Z2dlZCA9IHBsdWdnZWQ7CisgICAgICAgIG1CYXR0ZXJ5TGV2ZWwgPSBsZXZlbDsKKworICAgICAgICBpZiAobUJhdHRlcnlGaXJzdCkgeworICAgICAgICAgICAgbUJhdHRlcnlGaXJzdCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqIE5vIGxvbmdlciBzaG93aW5nIHRoZSBiYXR0ZXJ5IHZpZXcgYmVjYXVzZSBpdCBkcmF3cyBhdHRlbnRpb24gYXdheQorICAgICAgICAgKiBmcm9tIHRoZSBVU0Igc3RvcmFnZSBub3RpZmljYXRpb24uIFdlIGNvdWxkIHN0aWxsIHNob3cgaXQgd2hlbgorICAgICAgICAgKiBjb25uZWN0ZWQgdG8gYSBicmljaywgYnV0IHRoYXQgY291bGQgbGVhZCB0byB0aGUgdXNlciBpbnRvIHRoaW5raW5nCisgICAgICAgICAqIHRoZSBkZXZpY2UgZG9lcyBub3QgY2hhcmdlIHdoZW4gcGx1Z2dlZCBpbnRvIFVTQiAoc2luY2UgaGUvc2hlIHdvdWxkCisgICAgICAgICAqIG5vdCBzZWUgdGhlIHNhbWUgYmF0dGVyeSBzY3JlZW4gb24gVVNCIGFzIGhlIHNlZXMgb24gYnJpY2spLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAicGx1Z2dlZD0iICsgcGx1Z2dlZCArICIgb2xkUGx1Z2dlZD0iICsgb2xkUGx1Z2dlZCArICIgbGV2ZWw9IiArIGxldmVsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBvbkJhdHRlcnlMb3coSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoU0hPV19MT1dfQkFUVEVSWV9XQVJOSU5HKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAibVBob25lU3RhdGU9IiArIG1QaG9uZVN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgKyAiIG1Mb3dCYXR0ZXJ5RGlhbG9nPSIgKyBtTG93QmF0dGVyeURpYWxvZworICAgICAgICAgICAgICAgICAgICAgICsgIiBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGw9IiArIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChTSE9XX0JBVFRFUllfV0FSTklOR1NfSU5fQ0FMTCB8fCBtUGhvbmVTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfSURMRSkgeworICAgICAgICAgICAgICAgIHNob3dMb3dCYXR0ZXJ5V2FybmluZygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGwgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG9uQmF0dGVyeU9rYXkoSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAobUxvd0JhdHRlcnlEaWFsb2cgIT0gbnVsbAorICAgICAgICAgICAgICAgICYmIFNIT1dfTE9XX0JBVFRFUllfV0FSTklORykgeworICAgICAgICAgICAgbUxvd0JhdHRlcnlEaWFsb2cuZGlzbWlzcygpOworICAgICAgICAgICAgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0QmF0dGVyeUxldmVsKFZpZXcgcGFyZW50LCBpbnQgaWQsIGludCBoZWlnaHQsIGludCBiYWNrZ3JvdW5kLCBpbnQgbGV2ZWwpIHsKKyAgICAgICAgSW1hZ2VWaWV3IHYgPSAoSW1hZ2VWaWV3KXBhcmVudC5maW5kVmlld0J5SWQoaWQpOworICAgICAgICBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIGxwID0gKExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMpdi5nZXRMYXlvdXRQYXJhbXMoKTsKKyAgICAgICAgbHAud2VpZ2h0ID0gaGVpZ2h0OworICAgICAgICBpZiAoYmFja2dyb3VuZCAhPSAwKSB7CisgICAgICAgICAgICB2LnNldEJhY2tncm91bmRSZXNvdXJjZShiYWNrZ3JvdW5kKTsKKyAgICAgICAgICAgIERyYXdhYmxlIGJrZyA9IHYuZ2V0QmFja2dyb3VuZCgpOworICAgICAgICAgICAgYmtnLnNldExldmVsKGxldmVsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzaG93TG93QmF0dGVyeVdhcm5pbmcoKSB7CisgICAgICAgIGNsb3NlTGFzdEJhdHRlcnlWaWV3KCk7CisKKyAgICAgICAgLy8gU2hvdyBleGFjdCBiYXR0ZXJ5IGxldmVsLgorICAgICAgICBDaGFyU2VxdWVuY2UgbGV2ZWxUZXh0ID0gbUNvbnRleHQuZ2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICBSLnN0cmluZy5iYXR0ZXJ5X2xvd19wZXJjZW50X2Zvcm1hdCwgbUJhdHRlcnlMZXZlbCk7CisKKyAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWxUZXh0VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBtQmF0dGVyeUxldmVsVGV4dFZpZXcuc2V0VGV4dChsZXZlbFRleHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVmlldyB2ID0gVmlldy5pbmZsYXRlKG1Db250ZXh0LCBSLmxheW91dC5iYXR0ZXJ5X2xvdywgbnVsbCk7CisgICAgICAgICAgICBtQmF0dGVyeUxldmVsVGV4dFZpZXc9KFRleHRWaWV3KXYuZmluZFZpZXdCeUlkKFIuaWQubGV2ZWxfcGVyY2VudCk7CisKKyAgICAgICAgICAgIG1CYXR0ZXJ5TGV2ZWxUZXh0Vmlldy5zZXRUZXh0KGxldmVsVGV4dCk7CisKKyAgICAgICAgICAgIEFsZXJ0RGlhbG9nLkJ1aWxkZXIgYiA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKG1Db250ZXh0KTsKKyAgICAgICAgICAgICAgICBiLnNldENhbmNlbGFibGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgYi5zZXRUaXRsZShSLnN0cmluZy5iYXR0ZXJ5X2xvd190aXRsZSk7CisgICAgICAgICAgICAgICAgYi5zZXRWaWV3KHYpOworICAgICAgICAgICAgICAgIGIuc2V0SWNvbihhbmRyb2lkLlIuZHJhd2FibGUuaWNfZGlhbG9nX2FsZXJ0KTsKKyAgICAgICAgICAgICAgICBiLnNldFBvc2l0aXZlQnV0dG9uKGFuZHJvaWQuUi5zdHJpbmcub2ssIG51bGwpOworCisgICAgICAgICAgICAgICAgZmluYWwgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9QT1dFUl9VU0FHRV9TVU1NQVJZKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSworICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUworICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19ISVNUT1JZKTsKKyAgICAgICAgICAgICAgICBpZiAoaW50ZW50LnJlc29sdmVBY3Rpdml0eShtQ29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpKSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGIuc2V0TmVnYXRpdmVCdXR0b24oUi5zdHJpbmcuYmF0dGVyeV9sb3dfd2h5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhEaWFsb2dJbnRlcmZhY2UgZGlhbG9nLCBpbnQgd2hpY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1Mb3dCYXR0ZXJ5RGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxvd0JhdHRlcnlEaWFsb2cuZGlzbWlzcygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBbGVydERpYWxvZyBkID0gYi5jcmVhdGUoKTsKKyAgICAgICAgICAgIGQuc2V0T25EaXNtaXNzTGlzdGVuZXIobUxvd0JhdHRlcnlMaXN0ZW5lcik7CisgICAgICAgICAgICBkLmdldFdpbmRvdygpLnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fQUxFUlQpOworICAgICAgICAgICAgZC5zaG93KCk7CisgICAgICAgICAgICBtTG93QmF0dGVyeURpYWxvZyA9IGQ7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgY3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgaWYgKFNldHRpbmdzLlN5c3RlbS5nZXRJbnQoY3IsCisgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLlBPV0VSX1NPVU5EU19FTkFCTEVELCAxKSA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc291bmRQYXRoID0gU2V0dGluZ3MuU3lzdGVtLmdldFN0cmluZyhjciwKKyAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTE9XX0JBVFRFUllfU09VTkQpOworICAgICAgICAgICAgaWYgKHNvdW5kUGF0aCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZmluYWwgVXJpIHNvdW5kVXJpID0gVXJpLnBhcnNlKCJmaWxlOi8vIiArIHNvdW5kUGF0aCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdW5kVXJpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgUmluZ3RvbmUgc2Z4ID0gUmluZ3RvbmVNYW5hZ2VyLmdldFJpbmd0b25lKG1Db250ZXh0LCBzb3VuZFVyaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZnggIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnNldFN0cmVhbVR5cGUoQXVkaW9NYW5hZ2VyLlNUUkVBTV9TWVNURU0pOworICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnBsYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVDYWxsU3RhdGUoaW50IHN0YXRlKSB7CisgICAgICAgIG1QaG9uZVN0YXRlID0gc3RhdGU7CisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1QaG9uZVN0YXRlPSIgKyBtUGhvbmVTdGF0ZQorICAgICAgICAgICAgICAgICAgICArICIgbUxvd0JhdHRlcnlEaWFsb2c9IiArIG1Mb3dCYXR0ZXJ5RGlhbG9nCisgICAgICAgICAgICAgICAgICAgICsgIiBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGw9IiArIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1QaG9uZVN0YXRlID09IFRlbGVwaG9ueU1hbmFnZXIuQ0FMTF9TVEFURV9JRExFKSB7CisgICAgICAgICAgICBpZiAobUJhdHRlcnlTaG93TG93T25FbmRDYWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtQmF0dGVyeVBsdWdnZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvd0xvd0JhdHRlcnlXYXJuaW5nKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1Mb3dCYXR0ZXJ5RGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTG93QmF0dGVyeURpYWxvZy5kaXNtaXNzKCk7CisgICAgICAgICAgICAgICAgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgRGlhbG9nSW50ZXJmYWNlLk9uRGlzbWlzc0xpc3RlbmVyIG1Mb3dCYXR0ZXJ5TGlzdGVuZXIKKyAgICAgICAgICAgID0gbmV3IERpYWxvZ0ludGVyZmFjZS5PbkRpc21pc3NMaXN0ZW5lcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25EaXNtaXNzKERpYWxvZ0ludGVyZmFjZSBkaWFsb2cpIHsKKyAgICAgICAgICAgIG1Mb3dCYXR0ZXJ5RGlhbG9nID0gbnVsbDsKKyAgICAgICAgICAgIG1CYXR0ZXJ5TGV2ZWxUZXh0VmlldyA9IG51bGw7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSB2b2lkIHNjaGVkdWxlQ2xvc2VCYXR0ZXJ5VmlldygpIHsKKyAgICAgICAgTWVzc2FnZSBtID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShFVkVOVF9CQVRURVJZX0NMT1NFKTsKKyAgICAgICAgbS5hcmcxID0gKCsrbUJhdHRlcnlWaWV3U2VxdWVuY2UpOworICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobSwgMzAwMCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNsb3NlTGFzdEJhdHRlcnlWaWV3KCkgeworICAgICAgICBpZiAobUJhdHRlcnlWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vbUJhdHRlcnlWaWV3LmRlYnVnKCk7CisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCkucmVtb3ZlVmlldyhtQmF0dGVyeVZpZXcpOworICAgICAgICAgICAgbUJhdHRlcnlWaWV3ID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgUGhvbmVTdGF0ZUxpc3RlbmVyIG1QaG9uZVN0YXRlTGlzdGVuZXIgPSBuZXcgUGhvbmVTdGF0ZUxpc3RlbmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25TaWduYWxTdHJlbmd0aHNDaGFuZ2VkKFNpZ25hbFN0cmVuZ3RoIHNpZ25hbFN0cmVuZ3RoKSB7CisgICAgICAgICAgICBtU2lnbmFsU3RyZW5ndGggPSBzaWduYWxTdHJlbmd0aDsKKyAgICAgICAgICAgIHVwZGF0ZVNpZ25hbFN0cmVuZ3RoKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlU3RhdGVDaGFuZ2VkKFNlcnZpY2VTdGF0ZSBzdGF0ZSkgeworICAgICAgICAgICAgbVNlcnZpY2VTdGF0ZSA9IHN0YXRlOworICAgICAgICAgICAgdXBkYXRlU2lnbmFsU3RyZW5ndGgoKTsKKyAgICAgICAgICAgIHVwZGF0ZUNkbWFSb2FtaW5nSWNvbihzdGF0ZSk7CisgICAgICAgICAgICB1cGRhdGVEYXRhSWNvbigpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2FsbFN0YXRlQ2hhbmdlZChpbnQgc3RhdGUsIFN0cmluZyBpbmNvbWluZ051bWJlcikgeworICAgICAgICAgICAgdXBkYXRlQ2FsbFN0YXRlKHN0YXRlKTsKKyAgICAgICAgICAgIC8vIEluIGNkbWEsIGlmIGEgdm9pY2UgY2FsbCBpcyBtYWRlLCBSU1NJIHNob3VsZCBzd2l0Y2ggdG8gMXguCisgICAgICAgICAgICBpZiAoaXNDZG1hKCkpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVTaWduYWxTdHJlbmd0aCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uRGF0YUNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoaW50IHN0YXRlLCBpbnQgbmV0d29ya1R5cGUpIHsKKyAgICAgICAgICAgIG1EYXRhU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgICAgIHVwZGF0ZURhdGFOZXRUeXBlKG5ldHdvcmtUeXBlKTsKKyAgICAgICAgICAgIHVwZGF0ZURhdGFJY29uKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25EYXRhQWN0aXZpdHkoaW50IGRpcmVjdGlvbikgeworICAgICAgICAgICAgbURhdGFBY3Rpdml0eSA9IGRpcmVjdGlvbjsKKyAgICAgICAgICAgIHVwZGF0ZURhdGFJY29uKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVNpbVN0YXRlKEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgU3RyaW5nIHN0YXRlRXh0cmEgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoSWNjQ2FyZC5JTlRFTlRfS0VZX0lDQ19TVEFURSk7CisgICAgICAgIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9JQ0NfQUJTRU5ULmVxdWFscyhzdGF0ZUV4dHJhKSkgeworICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5BQlNFTlQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfSUNDX1JFQURZLmVxdWFscyhzdGF0ZUV4dHJhKSkgeworICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5SRUFEWTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9JQ0NfTE9DS0VELmVxdWFscyhzdGF0ZUV4dHJhKSkgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxvY2tlZFJlYXNvbiA9IGludGVudC5nZXRTdHJpbmdFeHRyYShJY2NDYXJkLklOVEVOVF9LRVlfTE9DS0VEX1JFQVNPTik7CisgICAgICAgICAgICBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfTE9DS0VEX09OX1BJTi5lcXVhbHMobG9ja2VkUmVhc29uKSkgeworICAgICAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUElOX1JFUVVJUkVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfTE9DS0VEX09OX1BVSy5lcXVhbHMobG9ja2VkUmVhc29uKSkgeworICAgICAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5ORVRXT1JLX0xPQ0tFRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuVU5LTk9XTjsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVEYXRhSWNvbigpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc0NkbWEoKSB7CisgICAgICAgIHJldHVybiAobVNpZ25hbFN0cmVuZ3RoICE9IG51bGwpICYmICFtU2lnbmFsU3RyZW5ndGguaXNHc20oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNFdmRvKCkgeworICAgICAgICByZXR1cm4gKCAobVNlcnZpY2VTdGF0ZSAhPSBudWxsKQorICAgICAgICAgICAgICAgICAmJiAoKG1TZXJ2aWNlU3RhdGUuZ2V0UmFkaW9UZWNobm9sb2d5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgID09IFNlcnZpY2VTdGF0ZS5SQURJT19URUNITk9MT0dZX0VWRE9fMCkKKyAgICAgICAgICAgICAgICAgICAgIHx8IChtU2VydmljZVN0YXRlLmdldFJhZGlvVGVjaG5vbG9neSgpCisgICAgICAgICAgICAgICAgICAgICAgICA9PSBTZXJ2aWNlU3RhdGUuUkFESU9fVEVDSE5PTE9HWV9FVkRPX0EpCisgICAgICAgICAgICAgICAgICAgICB8fCAobVNlcnZpY2VTdGF0ZS5nZXRSYWRpb1RlY2hub2xvZ3koKQorICAgICAgICAgICAgICAgICAgICAgICAgPT0gU2VydmljZVN0YXRlLlJBRElPX1RFQ0hOT0xPR1lfRVZET19CKSkpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBoYXNTZXJ2aWNlKCkgeworICAgICAgICBpZiAobVNlcnZpY2VTdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1TZXJ2aWNlU3RhdGUuZ2V0U3RhdGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2VydmljZVN0YXRlLlNUQVRFX09VVF9PRl9TRVJWSUNFOgorICAgICAgICAgICAgICAgIGNhc2UgU2VydmljZVN0YXRlLlNUQVRFX1BPV0VSX09GRjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVNpZ25hbFN0cmVuZ3RoKCkgeworICAgICAgICBpbnQgaWNvbkxldmVsID0gLTE7CisgICAgICAgIGludFtdIGljb25MaXN0OworCisgICAgICAgIC8vIERpc3BsYXkgc2lnbmFsIHN0cmVuZ3RoIHdoaWxlIGluICJlbWVyZ2VuY3kgY2FsbHMgb25seSIgbW9kZQorICAgICAgICBpZiAoIWhhc1NlcnZpY2UoKSAmJiAhbVNlcnZpY2VTdGF0ZS5pc0VtZXJnZW5jeU9ubHkoKSkgeworICAgICAgICAgICAgLy9TbG9nLmQoVEFHLCAidXBkYXRlU2lnbmFsU3RyZW5ndGg6IG5vIHNlcnZpY2UiKTsKKyAgICAgICAgICAgIGlmIChTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uQUlSUExBTkVfTU9ERV9PTiwgMCkgPT0gMSkgeworICAgICAgICAgICAgICAgIG1QaG9uZVNpZ25hbEljb25JZCA9IFIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1QaG9uZVNpZ25hbEljb25JZCA9IFIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsX251bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uKCJwaG9uZV9zaWduYWwiLCBtUGhvbmVTaWduYWxJY29uSWQsIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpc0NkbWEoKSkgeworICAgICAgICAgICAgaW50IGFzdSA9IG1TaWduYWxTdHJlbmd0aC5nZXRHc21TaWduYWxTdHJlbmd0aCgpOworCisgICAgICAgICAgICAvLyBBU1UgcmFuZ2VzIGZyb20gMCB0byAzMSAtIFRTIDI3LjAwNyBTZWMgOC41CisgICAgICAgICAgICAvLyBhc3UgPSAwICgtMTEzZEIgb3IgbGVzcykgaXMgdmVyeSB3ZWFrCisgICAgICAgICAgICAvLyBzaWduYWwsIGl0cyBiZXR0ZXIgdG8gc2hvdyAwIGJhcnMgdG8gdGhlIHVzZXIgaW4gc3VjaCBjYXNlcy4KKyAgICAgICAgICAgIC8vIGFzdSA9IDk5IGlzIGEgc3BlY2lhbCBjYXNlLCB3aGVyZSB0aGUgc2lnbmFsIHN0cmVuZ3RoIGlzIHVua25vd24uCisgICAgICAgICAgICBpZiAoYXN1IDw9IDIgfHwgYXN1ID09IDk5KSBpY29uTGV2ZWwgPSAwOworICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDEyKSBpY29uTGV2ZWwgPSA0OworICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDgpICBpY29uTGV2ZWwgPSAzOworICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDUpICBpY29uTGV2ZWwgPSAyOworICAgICAgICAgICAgZWxzZSBpY29uTGV2ZWwgPSAxOworCisgICAgICAgICAgICAvLyBUaG91Z2ggbVBob25lIGlzIGEgTWFuYWdlciwgdGhpcyBjYWxsIGlzIG5vdCBhbiBJUEMKKyAgICAgICAgICAgIGlmIChtUGhvbmUuaXNOZXR3b3JrUm9hbWluZygpKSB7CisgICAgICAgICAgICAgICAgaWNvbkxpc3QgPSBzU2lnbmFsSW1hZ2VzX3I7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGljb25MaXN0ID0gc1NpZ25hbEltYWdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGljb25MaXN0ID0gdGhpcy5zU2lnbmFsSW1hZ2VzOworCisgICAgICAgICAgICAvLyBJZiAzRyhFVikgYW5kIDF4IG5ldHdvcmsgYXJlIGF2YWlsYWJsZSB0aGFuIDNHIHNob3VsZCBiZQorICAgICAgICAgICAgLy8gZGlzcGxheWVkLCBkaXNwbGF5ZWQgUlNTSSBzaG91bGQgYmUgZnJvbSB0aGUgRVYgc2lkZS4KKyAgICAgICAgICAgIC8vIElmIGEgdm9pY2UgY2FsbCBpcyBtYWRlIHRoZW4gUlNTSSBzaG91bGQgc3dpdGNoIHRvIDF4LgorICAgICAgICAgICAgaWYgKChtUGhvbmVTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfSURMRSkgJiYgaXNFdmRvKCkpeworICAgICAgICAgICAgICAgIGljb25MZXZlbCA9IGdldEV2ZG9MZXZlbCgpOworICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAidXNlIEV2ZG8gbGV2ZWw9IiArIGljb25MZXZlbCArICIgdG8gcmVwbGFjZSBDZG1hIExldmVsPSIgKyBnZXRDZG1hTGV2ZWwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpY29uTGV2ZWwgPSBnZXRDZG1hTGV2ZWwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtUGhvbmVTaWduYWxJY29uSWQgPSBpY29uTGlzdFtpY29uTGV2ZWxdOworICAgICAgICBtU2VydmljZS5zZXRJY29uKCJwaG9uZV9zaWduYWwiLCBtUGhvbmVTaWduYWxJY29uSWQsIDApOworICAgIH0KKworICAgIHByaXZhdGUgaW50IGdldENkbWFMZXZlbCgpIHsKKyAgICAgICAgZmluYWwgaW50IGNkbWFEYm0gPSBtU2lnbmFsU3RyZW5ndGguZ2V0Q2RtYURibSgpOworICAgICAgICBmaW5hbCBpbnQgY2RtYUVjaW8gPSBtU2lnbmFsU3RyZW5ndGguZ2V0Q2RtYUVjaW8oKTsKKyAgICAgICAgaW50IGxldmVsRGJtID0gMDsKKyAgICAgICAgaW50IGxldmVsRWNpbyA9IDA7CisKKyAgICAgICAgaWYgKGNkbWFEYm0gPj0gLTc1KSBsZXZlbERibSA9IDQ7CisgICAgICAgIGVsc2UgaWYgKGNkbWFEYm0gPj0gLTg1KSBsZXZlbERibSA9IDM7CisgICAgICAgIGVsc2UgaWYgKGNkbWFEYm0gPj0gLTk1KSBsZXZlbERibSA9IDI7CisgICAgICAgIGVsc2UgaWYgKGNkbWFEYm0gPj0gLTEwMCkgbGV2ZWxEYm0gPSAxOworICAgICAgICBlbHNlIGxldmVsRGJtID0gMDsKKworICAgICAgICAvLyBFYy9JbyBhcmUgaW4gZEIqMTAKKyAgICAgICAgaWYgKGNkbWFFY2lvID49IC05MCkgbGV2ZWxFY2lvID0gNDsKKyAgICAgICAgZWxzZSBpZiAoY2RtYUVjaW8gPj0gLTExMCkgbGV2ZWxFY2lvID0gMzsKKyAgICAgICAgZWxzZSBpZiAoY2RtYUVjaW8gPj0gLTEzMCkgbGV2ZWxFY2lvID0gMjsKKyAgICAgICAgZWxzZSBpZiAoY2RtYUVjaW8gPj0gLTE1MCkgbGV2ZWxFY2lvID0gMTsKKyAgICAgICAgZWxzZSBsZXZlbEVjaW8gPSAwOworCisgICAgICAgIHJldHVybiAobGV2ZWxEYm0gPCBsZXZlbEVjaW8pID8gbGV2ZWxEYm0gOiBsZXZlbEVjaW87CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZ2V0RXZkb0xldmVsKCkgeworICAgICAgICBpbnQgZXZkb0RibSA9IG1TaWduYWxTdHJlbmd0aC5nZXRFdmRvRGJtKCk7CisgICAgICAgIGludCBldmRvU25yID0gbVNpZ25hbFN0cmVuZ3RoLmdldEV2ZG9TbnIoKTsKKyAgICAgICAgaW50IGxldmVsRXZkb0RibSA9IDA7CisgICAgICAgIGludCBsZXZlbEV2ZG9TbnIgPSAwOworCisgICAgICAgIGlmIChldmRvRGJtID49IC02NSkgbGV2ZWxFdmRvRGJtID0gNDsKKyAgICAgICAgZWxzZSBpZiAoZXZkb0RibSA+PSAtNzUpIGxldmVsRXZkb0RibSA9IDM7CisgICAgICAgIGVsc2UgaWYgKGV2ZG9EYm0gPj0gLTkwKSBsZXZlbEV2ZG9EYm0gPSAyOworICAgICAgICBlbHNlIGlmIChldmRvRGJtID49IC0xMDUpIGxldmVsRXZkb0RibSA9IDE7CisgICAgICAgIGVsc2UgbGV2ZWxFdmRvRGJtID0gMDsKKworICAgICAgICBpZiAoZXZkb1NuciA+PSA3KSBsZXZlbEV2ZG9TbnIgPSA0OworICAgICAgICBlbHNlIGlmIChldmRvU25yID49IDUpIGxldmVsRXZkb1NuciA9IDM7CisgICAgICAgIGVsc2UgaWYgKGV2ZG9TbnIgPj0gMykgbGV2ZWxFdmRvU25yID0gMjsKKyAgICAgICAgZWxzZSBpZiAoZXZkb1NuciA+PSAxKSBsZXZlbEV2ZG9TbnIgPSAxOworICAgICAgICBlbHNlIGxldmVsRXZkb1NuciA9IDA7CisKKyAgICAgICAgcmV0dXJuIChsZXZlbEV2ZG9EYm0gPCBsZXZlbEV2ZG9TbnIpID8gbGV2ZWxFdmRvRGJtIDogbGV2ZWxFdmRvU25yOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVEYXRhTmV0VHlwZShpbnQgbmV0KSB7CisgICAgICAgIHN3aXRjaCAobmV0KSB7CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRURHRToKKyAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX1VNVFM6CisgICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlXzNnOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNEUEE6CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNVUEE6CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNQQToKKyAgICAgICAgICAgIGlmIChtSHNwYURhdGFEaXN0aW5ndWlzaGFibGUpIHsKKyAgICAgICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlX2g7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfM2c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9DRE1BOgorICAgICAgICAgICAgLy8gZGlzcGxheSAxeFJUVCBmb3IgSVM5NUEvQgorICAgICAgICAgICAgbURhdGFJY29uTGlzdCA9IHRoaXMuc0RhdGFOZXRUeXBlXzF4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfMXhSVFQ6CisgICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gdGhpcy5zRGF0YU5ldFR5cGVfMXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9FVkRPXzA6IC8vZmFsbCB0aHJvdWdoCisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRVZET19BOgorICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0VWRE9fQjoKKyAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfM2c7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfZzsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlRGF0YUljb24oKSB7CisgICAgICAgIGludCBpY29uSWQ7CisgICAgICAgIGJvb2xlYW4gdmlzaWJsZSA9IHRydWU7CisKKyAgICAgICAgaWYgKCFpc0NkbWEoKSkgeworICAgICAgICAgICAgLy8gR1NNIGNhc2UsIHdlIGhhdmUgdG8gY2hlY2sgYWxzbyB0aGUgc2ltIHN0YXRlCisgICAgICAgICAgICBpZiAobVNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuUkVBRFkgfHwgbVNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuVU5LTk9XTikgeworICAgICAgICAgICAgICAgIGlmIChoYXNTZXJ2aWNlKCkgJiYgbURhdGFTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobURhdGFBY3Rpdml0eSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfSU46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5EQVRBX0FDVElWSVRZX09VVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBtRGF0YUljb25MaXN0WzJdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfSU5PVVQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFszXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uKCJkYXRhX2Nvbm5lY3Rpb24iLCBpY29uSWQsIDApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGljb25JZCA9IFIuZHJhd2FibGUuc3RhdF9zeXNfbm9fc2ltOworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImRhdGFfY29ubmVjdGlvbiIsIGljb25JZCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDRE1BIGNhc2UsIG1EYXRhQWN0aXZpdHkgY2FuIGJlIGFsc28gREFUQV9BQ1RJVklUWV9ET1JNQU5UCisgICAgICAgICAgICBpZiAoaGFzU2VydmljZSgpICYmIG1EYXRhU3RhdGUgPT0gVGVsZXBob255TWFuYWdlci5EQVRBX0NPTk5FQ1RFRCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobURhdGFBY3Rpdml0eSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9JTjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbMV07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfT1VUOgorICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFsyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9JTk9VVDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbM107CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfRE9STUFOVDoKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbMF07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiZGF0YV9jb25uZWN0aW9uIiwgaWNvbklkLCAwKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9uZyBpZGVudCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUJhdHRlcnlTdGF0cy5ub3RlUGhvbmVEYXRhQ29ubmVjdGlvblN0YXRlKG1QaG9uZS5nZXROZXR3b3JrVHlwZSgpLCB2aXNpYmxlKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtRGF0YUljb25WaXNpYmxlICE9IHZpc2libGUpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJkYXRhX2Nvbm5lY3Rpb24iLCB2aXNpYmxlKTsKKyAgICAgICAgICAgIG1EYXRhSWNvblZpc2libGUgPSB2aXNpYmxlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVZvbHVtZSgpIHsKKyAgICAgICAgQXVkaW9NYW5hZ2VyIGF1ZGlvTWFuYWdlciA9IChBdWRpb01hbmFnZXIpIG1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BVURJT19TRVJWSUNFKTsKKyAgICAgICAgZmluYWwgaW50IHJpbmdlck1vZGUgPSBhdWRpb01hbmFnZXIuZ2V0UmluZ2VyTW9kZSgpOworICAgICAgICBmaW5hbCBib29sZWFuIHZpc2libGUgPSByaW5nZXJNb2RlID09IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9TSUxFTlQgfHwKKyAgICAgICAgICAgICAgICByaW5nZXJNb2RlID09IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFOworICAgICAgICBmaW5hbCBpbnQgaWNvbklkID0gYXVkaW9NYW5hZ2VyLnNob3VsZFZpYnJhdGUoQXVkaW9NYW5hZ2VyLlZJQlJBVEVfVFlQRV9SSU5HRVIpCisgICAgICAgICAgICAgICAgPyBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl92aWJyYXRlCisgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl9zaWxlbnQ7CisKKyAgICAgICAgaWYgKHZpc2libGUpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oInZvbHVtZSIsIGljb25JZCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpc2libGUgIT0gbVZvbHVtZVZpc2libGUpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJ2b2x1bWUiLCB2aXNpYmxlKTsKKyAgICAgICAgICAgIG1Wb2x1bWVWaXNpYmxlID0gdmlzaWJsZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVCbHVldG9vdGgoSW50ZW50IGludGVudCkgeworICAgICAgICBpbnQgaWNvbklkID0gUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2JsdWV0b290aDsKKyAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQWRhcHRlci5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgIGludCBzdGF0ZSA9IGludGVudC5nZXRJbnRFeHRyYShCbHVldG9vdGhBZGFwdGVyLkVYVFJBX1NUQVRFLCBCbHVldG9vdGhBZGFwdGVyLkVSUk9SKTsKKyAgICAgICAgICAgIG1CbHVldG9vdGhFbmFibGVkID0gc3RhdGUgPT0gQmx1ZXRvb3RoQWRhcHRlci5TVEFURV9PTjsKKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpKSB7CisgICAgICAgICAgICBtQmx1ZXRvb3RoSGVhZHNldFN0YXRlID0gaW50ZW50LmdldEludEV4dHJhKEJsdWV0b290aEhlYWRzZXQuRVhUUkFfU1RBVEUsCisgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRVJST1IpOworICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQTJkcC5BQ1RJT05fU0lOS19TVEFURV9DSEFOR0VEKSkgeworICAgICAgICAgICAgQmx1ZXRvb3RoQTJkcCBhMmRwID0gbmV3IEJsdWV0b290aEEyZHAobUNvbnRleHQpOworICAgICAgICAgICAgaWYgKGEyZHAuZ2V0Q29ubmVjdGVkU2lua3MoKS5zaXplKCkgIT0gMCkgeworICAgICAgICAgICAgICAgIG1CbHVldG9vdGhBMmRwQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUJsdWV0b290aEEyZHBDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aFBiYXAuUEJBUF9TVEFURV9DSEFOR0VEX0FDVElPTikpIHsKKyAgICAgICAgICAgIG1CbHVldG9vdGhQYmFwU3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoUGJhcC5QQkFQX1NUQVRFLAorICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhQYmFwLlNUQVRFX0RJU0NPTk5FQ1RFRCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobUJsdWV0b290aEhlYWRzZXRTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RFRCB8fCBtQmx1ZXRvb3RoQTJkcENvbm5lY3RlZCB8fAorICAgICAgICAgICAgICAgIG1CbHVldG9vdGhQYmFwU3RhdGUgPT0gQmx1ZXRvb3RoUGJhcC5TVEFURV9DT05ORUNURUQpIHsKKyAgICAgICAgICAgIGljb25JZCA9IFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9ibHVldG9vdGhfY29ubmVjdGVkOworICAgICAgICB9CisKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiYmx1ZXRvb3RoIiwgaWNvbklkLCAwKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoImJsdWV0b290aCIsIG1CbHVldG9vdGhFbmFibGVkKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlV2lmaShJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pKSB7CisKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRJbnRFeHRyYShXaWZpTWFuYWdlci5FWFRSQV9XSUZJX1NUQVRFLAorICAgICAgICAgICAgICAgICAgICBXaWZpTWFuYWdlci5XSUZJX1NUQVRFX1VOS05PV04pID09IFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfRU5BQkxFRDsKKworICAgICAgICAgICAgaWYgKCFlbmFibGVkKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgZGlzYWJsZWQsIGhpZGUgdGhlIGljb24uIChXZSBzaG93IGljb24gd2hlbiBjb25uZWN0ZWQuKQorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJ3aWZpIiwgZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5TVVBQTElDQU5UX0NPTk5FQ1RJT05fQ0hBTkdFX0FDVElPTikpIHsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfU1VQUExJQ0FOVF9DT05ORUNURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgICAgIGlmICghZW5hYmxlZCkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJ3aWZpIiwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuTkVUV09SS19TVEFURV9DSEFOR0VEX0FDVElPTikpIHsKKworICAgICAgICAgICAgZmluYWwgTmV0d29ya0luZm8gbmV0d29ya0luZm8gPSAoTmV0d29ya0luZm8pCisgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRQYXJjZWxhYmxlRXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfTkVUV09SS19JTkZPKTsKKworICAgICAgICAgICAgaW50IGljb25JZDsKKyAgICAgICAgICAgIGlmIChuZXR3b3JrSW5mbyAhPSBudWxsICYmIG5ldHdvcmtJbmZvLmlzQ29ubmVjdGVkKCkpIHsKKyAgICAgICAgICAgICAgICBtSXNXaWZpQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAobUxhc3RXaWZpU2lnbmFsTGV2ZWwgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gc1dpZmlTaWduYWxJbWFnZXNbMF07CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gc1dpZmlTaWduYWxJbWFnZXNbbUxhc3RXaWZpU2lnbmFsTGV2ZWxdOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFNob3cgdGhlIGljb24gc2luY2Ugd2ktZmkgaXMgY29ubmVjdGVkCisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoIndpZmkiLCB0cnVlKTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IC0xOworICAgICAgICAgICAgICAgIG1Jc1dpZmlDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpY29uSWQgPSBzV2lmaVNpZ25hbEltYWdlc1swXTsKKworICAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIGljb24gc2luY2Ugd2UncmUgbm90IGNvbm5lY3RlZAorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJ3aWZpIiwgZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uKCJ3aWZpIiwgaWNvbklkLCAwKTsKKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLlJTU0lfQ0hBTkdFRF9BQ1RJT04pKSB7CisgICAgICAgICAgICBpbnQgaWNvbklkOworICAgICAgICAgICAgZmluYWwgaW50IG5ld1Jzc2kgPSBpbnRlbnQuZ2V0SW50RXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfTkVXX1JTU0ksIC0yMDApOworICAgICAgICAgICAgaW50IG5ld1NpZ25hbExldmVsID0gV2lmaU1hbmFnZXIuY2FsY3VsYXRlU2lnbmFsTGV2ZWwobmV3UnNzaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNXaWZpU2lnbmFsSW1hZ2VzLmxlbmd0aCk7CisgICAgICAgICAgICBpZiAobmV3U2lnbmFsTGV2ZWwgIT0gbUxhc3RXaWZpU2lnbmFsTGV2ZWwpIHsKKyAgICAgICAgICAgICAgICBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IG5ld1NpZ25hbExldmVsOworICAgICAgICAgICAgICAgIGlmIChtSXNXaWZpQ29ubmVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IHNXaWZpU2lnbmFsSW1hZ2VzW25ld1NpZ25hbExldmVsXTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBzV2lmaVRlbXBvcmFyaWx5Tm90Q29ubmVjdGVkSW1hZ2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oIndpZmkiLCBpY29uSWQsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUdwcyhJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoTG9jYXRpb25NYW5hZ2VyLkVYVFJBX0dQU19FTkFCTEVELCBmYWxzZSk7CisKKyAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoTG9jYXRpb25NYW5hZ2VyLkdQU19GSVhfQ0hBTkdFX0FDVElPTikgJiYgZW5hYmxlZCkgeworICAgICAgICAgICAgLy8gR1BTIGlzIGdldHRpbmcgZml4ZXMKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImdwcyIsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZ3BzX29uLCAwKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJncHMiLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKExvY2F0aW9uTWFuYWdlci5HUFNfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKSAmJiAhZW5hYmxlZCkgeworICAgICAgICAgICAgLy8gR1BTIGlzIG9mZgorICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoImdwcyIsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEdQUyBpcyBvbiwgYnV0IG5vdCByZWNlaXZpbmcgZml4ZXMKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImdwcyIsIFIuZHJhd2FibGUuc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLCAwKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJncHMiLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVUVFkoSW50ZW50IGludGVudCkgeworICAgICAgICBmaW5hbCBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICBmaW5hbCBib29sZWFuIGVuYWJsZWQgPSBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKFR0eUludGVudC5UVFlfRU5BQkxFRCwgZmFsc2UpOworCisgICAgICAgIGlmIChmYWxzZSkgU2xvZy52KFRBRywgInVwZGF0ZVRUWTogZW5hYmxlZDogIiArIGVuYWJsZWQpOworCisgICAgICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgICAgICAvLyBUVFkgaXMgb24KKyAgICAgICAgICAgIGlmIChmYWxzZSkgU2xvZy52KFRBRywgInVwZGF0ZVRUWTogc2V0IFRUWSBvbiIpOworICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigidHR5IiwgUi5kcmF3YWJsZS5zdGF0X3N5c190dHlfbW9kZSwgMCk7CisgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgidHR5IiwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUVFkgaXMgb2ZmCisgICAgICAgICAgICBpZiAoZmFsc2UpIFNsb2cudihUQUcsICJ1cGRhdGVUVFk6IHNldCBUVFkgb2ZmIik7CisgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgidHR5IiwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUNkbWFSb2FtaW5nSWNvbihTZXJ2aWNlU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgaWYgKCFoYXNTZXJ2aWNlKCkpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJjZG1hX2VyaSIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNDZG1hKCkpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJjZG1hX2VyaSIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludFtdIGljb25MaXN0ID0gc1JvYW1pbmdJbmRpY2F0b3JJbWFnZXNfY2RtYTsKKyAgICAgICAgaW50IGljb25JbmRleCA9IHN0YXRlLmdldENkbWFFcmlJY29uSW5kZXgoKTsKKyAgICAgICAgaW50IGljb25Nb2RlID0gc3RhdGUuZ2V0Q2RtYUVyaUljb25Nb2RlKCk7CisKKyAgICAgICAgaWYgKGljb25JbmRleCA9PSAtMSkgeworICAgICAgICAgICAgU2xvZy5lKFRBRywgImdldENkbWFFcmlJY29uSW5kZXggcmV0dXJuZWQgbnVsbCwgc2tpcHBpbmcgRVJJIGljb24gdXBkYXRlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWNvbk1vZGUgPT0gLTEpIHsKKyAgICAgICAgICAgIFNsb2cuZShUQUcsICJnZXRDZG1lRXJpSWNvbk1vZGUgcmV0dXJuZWQgbnVsbCwgc2tpcHBpbmcgRVJJIGljb24gdXBkYXRlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWNvbkluZGV4ID09IEVyaUluZm8uUk9BTUlOR19JTkRJQ0FUT1JfT0ZGKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UpIFNsb2cudihUQUcsICJDZG1hIFJPQU1JTkdfSU5ESUNBVE9SX09GRiwgcmVtb3ZpbmcgRVJJIGljb24iKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJjZG1hX2VyaSIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoaWNvbk1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgRXJpSW5mby5ST0FNSU5HX0lDT05fTU9ERV9OT1JNQUw6CisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiY2RtYV9lcmkiLCBpY29uTGlzdFtpY29uSW5kZXhdLCAwKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiY2RtYV9lcmkiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXJpSW5mby5ST0FNSU5HX0lDT05fTU9ERV9GTEFTSDoKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uKCJjZG1hX2VyaSIsIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoLCAwKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiY2RtYV9lcmkiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICB9CisgICAgICAgIG1TZXJ2aWNlLnNldEljb24oInBob25lX3NpZ25hbCIsIG1QaG9uZVNpZ25hbEljb25JZCwgMCk7CisgICAgfQorCisKKyAgICBwcml2YXRlIGNsYXNzIFN0YXR1c0JhckhhbmRsZXIgZXh0ZW5kcyBIYW5kbGVyIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRVZFTlRfQkFUVEVSWV9DTE9TRToKKyAgICAgICAgICAgICAgICBpZiAobXNnLmFyZzEgPT0gbUJhdHRlcnlWaWV3U2VxdWVuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2VMYXN0QmF0dGVyeVZpZXcoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0JhclNlcnZpY2UuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvU3RhdHVzQmFyU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YmNjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0JhclNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDE2MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuYXBwLlNlcnZpY2U7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXJTZXJ2aWNlOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uTGlzdDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFyTm90aWZpY2F0aW9uOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOworaW1wb3J0IGFuZHJvaWQuYXBwLkRpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb247CitpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5TZXJ2aWNlOworaW1wb3J0IGFuZHJvaWQuYXBwLlN0YXR1c0Jhck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LkRpc3BsYXk7CitpbXBvcnQgYW5kcm9pZC52aWV3LkdyYXZpdHk7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZlbG9jaXR5VHJhY2tlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3c7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJJbXBsOworaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uOworaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uVXRpbHM7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3czsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5TY3JvbGxWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0OworCitpbXBvcnQgamF2YS5pby5GaWxlRGVzY3JpcHRvcjsKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLnBvbGljeS5TdGF0dXNCYXJQb2xpY3k7CisKKworCitwdWJsaWMgY2xhc3MgU3RhdHVzQmFyU2VydmljZSBleHRlbmRzIFNlcnZpY2UgaW1wbGVtZW50cyBDb21tYW5kUXVldWUuQ2FsbGJhY2tzIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJTdGF0dXNCYXJTZXJ2aWNlIjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBTUEVXID0gZmFsc2U7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fU1RBVFVTQkFSX1NUQVJUCisgICAgICAgICAgICA9ICJjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuc3RhdHVzYmFyLlNUQVJUIjsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgRVhQQU5ERURfTEVBVkVfQUxPTkUgPSAtMTAwMDA7CisgICAgc3RhdGljIGZpbmFsIGludCBFWFBBTkRFRF9GVUxMX09QRU4gPSAtMTAwMDE7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0FOSU1BVEUgPSAxMDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfQU5JTUFURV9SRVZFQUwgPSAxMDAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfU0hPV19JTlRSVURFUiA9IDEwMDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19ISURFX0lOVFJVREVSID0gMTAwMzsKKworICAgIC8vIHdpbGwgbGlrZWx5IG1vdmUgdG8gYSByZXNvdXJjZSBvciBvdGhlciB0dW5hYmxlIHBhcmFtIGF0IHNvbWUgcG9pbnQKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5UUlVERVJfQUxFUlRfREVDQVlfTVMgPSAxMDAwMDsKKworICAgIFN0YXR1c0JhclBvbGljeSBtSWNvblBvbGljeTsKKworICAgIENvbW1hbmRRdWV1ZSBtQ29tbWFuZFF1ZXVlOworICAgIElTdGF0dXNCYXJTZXJ2aWNlIG1CYXJTZXJ2aWNlOworCisgICAgaW50IG1JY29uU2l6ZTsKKyAgICBEaXNwbGF5IG1EaXNwbGF5OworICAgIFN0YXR1c0JhclZpZXcgbVN0YXR1c0JhclZpZXc7CisgICAgaW50IG1QaXhlbEZvcm1hdDsKKyAgICBIIG1IYW5kbGVyID0gbmV3IEgoKTsKKyAgICBPYmplY3QgbVF1ZXVlTG9jayA9IG5ldyBPYmplY3QoKTsKKworICAgIC8vIGljb25zCisgICAgTGluZWFyTGF5b3V0IG1JY29uczsKKyAgICBJY29uTWVyZ2VyIG1Ob3RpZmljYXRpb25JY29uczsKKyAgICBMaW5lYXJMYXlvdXQgbVN0YXR1c0ljb25zOworCisgICAgLy8gZXhwYW5kZWQgbm90aWZpY2F0aW9ucworICAgIERpYWxvZyBtRXhwYW5kZWREaWFsb2c7CisgICAgRXhwYW5kZWRWaWV3IG1FeHBhbmRlZFZpZXc7CisgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbUV4cGFuZGVkUGFyYW1zOworICAgIFNjcm9sbFZpZXcgbVNjcm9sbFZpZXc7CisgICAgVmlldyBtTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0OworICAgIFZpZXcgbUV4cGFuZGVkQ29udGVudHM7CisgICAgLy8gdG9wIGJhcgorICAgIFRleHRWaWV3IG1Ob05vdGlmaWNhdGlvbnNUaXRsZTsKKyAgICBUZXh0VmlldyBtQ2xlYXJCdXR0b247CisgICAgLy8gZHJhZyBiYXIKKyAgICBDbG9zZURyYWdIYW5kbGUgbUNsb3NlVmlldzsKKyAgICAvLyBvbmdvaW5nCisgICAgTm90aWZpY2F0aW9uRGF0YSBtT25nb2luZyA9IG5ldyBOb3RpZmljYXRpb25EYXRhKCk7CisgICAgVGV4dFZpZXcgbU9uZ29pbmdUaXRsZTsKKyAgICBMaW5lYXJMYXlvdXQgbU9uZ29pbmdJdGVtczsKKyAgICAvLyBsYXRlc3QKKyAgICBOb3RpZmljYXRpb25EYXRhIG1MYXRlc3QgPSBuZXcgTm90aWZpY2F0aW9uRGF0YSgpOworICAgIFRleHRWaWV3IG1MYXRlc3RUaXRsZTsKKyAgICBMaW5lYXJMYXlvdXQgbUxhdGVzdEl0ZW1zOworICAgIC8vIHBvc2l0aW9uCisgICAgaW50W10gbVBvc2l0aW9uVG1wID0gbmV3IGludFsyXTsKKyAgICBib29sZWFuIG1FeHBhbmRlZDsKKyAgICBib29sZWFuIG1FeHBhbmRlZFZpc2libGU7CisKKyAgICAvLyB0aGUgZGF0ZSB2aWV3CisgICAgRGF0ZVZpZXcgbURhdGVWaWV3OworCisgICAgLy8gdGhlIHRyYWNrZXIgdmlldworICAgIFRyYWNraW5nVmlldyBtVHJhY2tpbmdWaWV3OworICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIG1UcmFja2luZ1BhcmFtczsKKyAgICBpbnQgbVRyYWNraW5nUG9zaXRpb247IC8vIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9wIG9mIHRoZSB0cmFja2luZyB2aWV3LgorICAgIHByaXZhdGUgYm9vbGVhbiBtUGFuZWxTbGlnaHRseVZpc2libGU7CisKKyAgICAvLyB0aWNrZXIKKyAgICBwcml2YXRlIFRpY2tlciBtVGlja2VyOworICAgIHByaXZhdGUgVmlldyBtVGlja2VyVmlldzsKKyAgICBwcml2YXRlIGJvb2xlYW4gbVRpY2tpbmc7CisKKyAgICAvLyBUcmFja2luZyBmaW5nZXIgZm9yIG9wZW5pbmcvY2xvc2luZy4KKyAgICBpbnQgbUVkZ2VCb3JkZXI7IC8vIGNvcnJlc3BvbmRzIHRvIFIuZGltZW4uc3RhdHVzX2Jhcl9lZGdlX2lnbm9yZQorICAgIGJvb2xlYW4gbVRyYWNraW5nOworICAgIFZlbG9jaXR5VHJhY2tlciBtVmVsb2NpdHlUcmFja2VyOworCisgICAgc3RhdGljIGZpbmFsIGludCBBTklNX0ZSQU1FX0RVUkFUSU9OID0gKDEwMDAvNjApOworCisgICAgYm9vbGVhbiBtQW5pbWF0aW5nOworICAgIGxvbmcgbUN1ckFuaW1hdGlvblRpbWU7CisgICAgZmxvYXQgbURpc3BsYXlIZWlnaHQ7CisgICAgZmxvYXQgbUFuaW1ZOworICAgIGZsb2F0IG1BbmltVmVsOworICAgIGZsb2F0IG1BbmltQWNjZWw7CisgICAgbG9uZyBtQW5pbUxhc3RUaW1lOworICAgIGJvb2xlYW4gbUFuaW1hdGluZ1JldmVhbCA9IGZhbHNlOworICAgIGludCBtVmlld0RlbHRhOworICAgIGludFtdIG1BYnNQb3MgPSBuZXcgaW50WzJdOworCisgICAgLy8gZm9yIGRpc2FibGluZyB0aGUgc3RhdHVzIGJhcgorICAgIGludCBtRGlzYWJsZWQgPSAwOworCisgICAgcHJpdmF0ZSBjbGFzcyBFeHBhbmRlZERpYWxvZyBleHRlbmRzIERpYWxvZyB7CisgICAgICAgIEV4cGFuZGVkRGlhbG9nKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAgICAgc3VwZXIoY29udGV4dCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5UaGVtZV9MaWdodF9Ob1RpdGxlQmFyKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaEtleUV2ZW50KEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgICAgICBib29sZWFuIGRvd24gPSBldmVudC5nZXRBY3Rpb24oKSA9PSBLZXlFdmVudC5BQ1RJT05fRE9XTjsKKyAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQuZ2V0S2V5Q29kZSgpKSB7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQkFDSzoKKyAgICAgICAgICAgICAgICBpZiAoIWRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZUNvbGxhcHNlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRpc3BhdGNoS2V5RXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgfQorCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZSgpIHsKKyAgICAgICAgLy8gRmlyc3Qgc2V0IHVwIG91ciB2aWV3cyBhbmQgc3R1ZmYuCisgICAgICAgIG1EaXNwbGF5ID0gKChXaW5kb3dNYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSU5ET1dfU0VSVklDRSkpLmdldERlZmF1bHREaXNwbGF5KCk7CisgICAgICAgIG1ha2VTdGF0dXNCYXJWaWV3KHRoaXMpOworCisgICAgICAgIC8vIENvbm5lY3QgaW4gdG8gdGhlIHN0YXR1cyBiYXIgbWFuYWdlciBzZXJ2aWNlCisgICAgICAgIFN0YXR1c0Jhckljb25MaXN0IGljb25MaXN0ID0gbmV3IFN0YXR1c0Jhckljb25MaXN0KCk7CisgICAgICAgIEFycmF5TGlzdDxJQmluZGVyPiBub3RpZmljYXRpb25LZXlzID0gbmV3IEFycmF5TGlzdDxJQmluZGVyPigpOworICAgICAgICBBcnJheUxpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25zID0gbmV3IEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+KCk7CisgICAgICAgIG1Db21tYW5kUXVldWUgPSBuZXcgQ29tbWFuZFF1ZXVlKHRoaXMsIGljb25MaXN0KTsKKyAgICAgICAgbUJhclNlcnZpY2UgPSBJU3RhdHVzQmFyU2VydmljZS5TdHViLmFzSW50ZXJmYWNlKAorICAgICAgICAgICAgICAgIFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoQ29udGV4dC5TVEFUVVNfQkFSX1NFUlZJQ0UpKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1CYXJTZXJ2aWNlLnJlZ2lzdGVyU3RhdHVzQmFyKG1Db21tYW5kUXVldWUsIGljb25MaXN0LCBub3RpZmljYXRpb25LZXlzLCBub3RpZmljYXRpb25zKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgc3lzdGVtIHByb2Nlc3MgaXNuJ3QgdGhlcmUgd2UncmUgZG9vbWVkIGFueXdheS4KKyAgICAgICAgfQorCisgICAgICAgIC8vIFNldCB1cCB0aGUgaW5pdGlhbCBpY29uIHN0YXRlCisgICAgICAgIGludCBOID0gaWNvbkxpc3Quc2l6ZSgpOworICAgICAgICBpbnQgdmlld0luZGV4ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gaWNvbkxpc3QuZ2V0SWNvbihpKTsKKyAgICAgICAgICAgIGlmIChpY29uICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhZGRJY29uKGljb25MaXN0LmdldFNsb3QoaSksIGksIHZpZXdJbmRleCwgaWNvbik7CisgICAgICAgICAgICAgICAgdmlld0luZGV4Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXQgdXAgdGhlIGluaXRpYWwgbm90aWZpY2F0aW9uIHN0YXRlCisgICAgICAgIE4gPSBub3RpZmljYXRpb25LZXlzLnNpemUoKTsKKyAgICAgICAgaWYgKE4gPT0gbm90aWZpY2F0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgICAgICBhZGROb3RpZmljYXRpb24obm90aWZpY2F0aW9uS2V5cy5nZXQoaSksIG5vdGlmaWNhdGlvbnMuZ2V0KGkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExvZy53dGYoVEFHLCAiTm90aWZpY2F0aW9uIGxpc3QgbGVuZ3RoIG1pc21hdGNoOiBrZXlzPSIgKyBOCisgICAgICAgICAgICAgICAgICAgICsgIiBub3RpZmljYXRpb25zPSIgKyBub3RpZmljYXRpb25zLnNpemUoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQdXQgdXAgdGhlIHZpZXcKKyAgICAgICAgYWRkU3RhdHVzQmFyVmlldygpOworCisgICAgICAgIC8vIExhc3RseSwgY2FsbCB0byB0aGUgaWNvbiBwb2xpY3kgdG8gaW5zdGFsbC91cGRhdGUgYWxsIHRoZSBpY29ucy4KKyAgICAgICAgbUljb25Qb2xpY3kgPSBuZXcgU3RhdHVzQmFyUG9saWN5KHRoaXMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uRGVzdHJveSgpIHsKKyAgICAgICAgLy8gd2UncmUgbmV2ZXIgZGVzdHJveWVkCisgICAgfQorCisgICAgLy8gZm9yIGltbWVyc2l2ZSBhY3Rpdml0aWVzCisgICAgcHJpdmF0ZSBWaWV3IG1JbnRydWRlckFsZXJ0VmlldzsKKworICAgIC8qKgorICAgICAqIE5vYm9keSBiaW5kcyB0byB1cy4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgSUJpbmRlciBvbkJpbmQoSW50ZW50IGludGVudCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENvbnN0cnVjdGluZyB0aGUgdmlldworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcHJpdmF0ZSB2b2lkIG1ha2VTdGF0dXNCYXJWaWV3KENvbnRleHQgY29udGV4dCkgeworICAgICAgICBSZXNvdXJjZXMgcmVzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKKworICAgICAgICBtSWNvblNpemUgPSByZXMuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZGltZW4uc3RhdHVzX2Jhcl9pY29uX3NpemUpOworCisgICAgICAgIEV4cGFuZGVkVmlldyBleHBhbmRlZCA9IChFeHBhbmRlZFZpZXcpVmlldy5pbmZsYXRlKGNvbnRleHQsCisgICAgICAgICAgICAgICAgUi5sYXlvdXQuc3RhdHVzX2Jhcl9leHBhbmRlZCwgbnVsbCk7CisgICAgICAgIGV4cGFuZGVkLm1TZXJ2aWNlID0gdGhpczsKKworICAgICAgICBtSW50cnVkZXJBbGVydFZpZXcgPSBWaWV3LmluZmxhdGUoY29udGV4dCwgUi5sYXlvdXQuaW50cnVkZXJfYWxlcnQsIG51bGwpOworICAgICAgICBtSW50cnVkZXJBbGVydFZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICBtSW50cnVkZXJBbGVydFZpZXcuc2V0Q2xpY2thYmxlKHRydWUpOworCisgICAgICAgIFN0YXR1c0JhclZpZXcgc2IgPSAoU3RhdHVzQmFyVmlldylWaWV3LmluZmxhdGUoY29udGV4dCwgUi5sYXlvdXQuc3RhdHVzX2JhciwgbnVsbCk7CisgICAgICAgIHNiLm1TZXJ2aWNlID0gdGhpczsKKworICAgICAgICAvLyBmaWd1cmUgb3V0IHdoaWNoIHBpeGVsLWZvcm1hdCB0byB1c2UgZm9yIHRoZSBzdGF0dXMgYmFyLgorICAgICAgICBtUGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVDsKKyAgICAgICAgRHJhd2FibGUgYmcgPSBzYi5nZXRCYWNrZ3JvdW5kKCk7CisgICAgICAgIGlmIChiZyAhPSBudWxsKSB7CisgICAgICAgICAgICBtUGl4ZWxGb3JtYXQgPSBiZy5nZXRPcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBtU3RhdHVzQmFyVmlldyA9IHNiOworICAgICAgICBtU3RhdHVzSWNvbnMgPSAoTGluZWFyTGF5b3V0KXNiLmZpbmRWaWV3QnlJZChSLmlkLnN0YXR1c0ljb25zKTsKKyAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zID0gKEljb25NZXJnZXIpc2IuZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uSWNvbnMpOworICAgICAgICBtSWNvbnMgPSAoTGluZWFyTGF5b3V0KXNiLmZpbmRWaWV3QnlJZChSLmlkLmljb25zKTsKKyAgICAgICAgbVRpY2tlclZpZXcgPSBzYi5maW5kVmlld0J5SWQoUi5pZC50aWNrZXIpOworICAgICAgICBtRGF0ZVZpZXcgPSAoRGF0ZVZpZXcpc2IuZmluZFZpZXdCeUlkKFIuaWQuZGF0ZSk7CisKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nID0gbmV3IEV4cGFuZGVkRGlhbG9nKGNvbnRleHQpOworICAgICAgICBtRXhwYW5kZWRWaWV3ID0gZXhwYW5kZWQ7CisgICAgICAgIG1FeHBhbmRlZENvbnRlbnRzID0gZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uTGluZWFyTGF5b3V0KTsKKyAgICAgICAgbU9uZ29pbmdUaXRsZSA9IChUZXh0VmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5vbmdvaW5nVGl0bGUpOworICAgICAgICBtT25nb2luZ0l0ZW1zID0gKExpbmVhckxheW91dClleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5vbmdvaW5nSXRlbXMpOworICAgICAgICBtTGF0ZXN0VGl0bGUgPSAoVGV4dFZpZXcpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubGF0ZXN0VGl0bGUpOworICAgICAgICBtTGF0ZXN0SXRlbXMgPSAoTGluZWFyTGF5b3V0KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLmxhdGVzdEl0ZW1zKTsKKyAgICAgICAgbU5vTm90aWZpY2F0aW9uc1RpdGxlID0gKFRleHRWaWV3KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLm5vTm90aWZpY2F0aW9uc1RpdGxlKTsKKyAgICAgICAgbUNsZWFyQnV0dG9uID0gKFRleHRWaWV3KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLmNsZWFyX2FsbF9idXR0b24pOworICAgICAgICBtQ2xlYXJCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKG1DbGVhckJ1dHRvbkxpc3RlbmVyKTsKKyAgICAgICAgbVNjcm9sbFZpZXcgPSAoU2Nyb2xsVmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5zY3JvbGwpOworICAgICAgICBtTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0ID0gZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uTGluZWFyTGF5b3V0KTsKKworICAgICAgICBtT25nb2luZ1RpdGxlLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgbUxhdGVzdFRpdGxlLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKworICAgICAgICBtVGlja2VyID0gbmV3IE15VGlja2VyKGNvbnRleHQsIHNiKTsKKworICAgICAgICBUaWNrZXJWaWV3IHRpY2tlclZpZXcgPSAoVGlja2VyVmlldylzYi5maW5kVmlld0J5SWQoUi5pZC50aWNrZXJUZXh0KTsKKyAgICAgICAgdGlja2VyVmlldy5tVGlja2VyID0gbVRpY2tlcjsKKworICAgICAgICBtVHJhY2tpbmdWaWV3ID0gKFRyYWNraW5nVmlldylWaWV3LmluZmxhdGUoY29udGV4dCwgUi5sYXlvdXQuc3RhdHVzX2Jhcl90cmFja2luZywgbnVsbCk7CisgICAgICAgIG1UcmFja2luZ1ZpZXcubVNlcnZpY2UgPSB0aGlzOworICAgICAgICBtQ2xvc2VWaWV3ID0gKENsb3NlRHJhZ0hhbmRsZSltVHJhY2tpbmdWaWV3LmZpbmRWaWV3QnlJZChSLmlkLmNsb3NlKTsKKyAgICAgICAgbUNsb3NlVmlldy5tU2VydmljZSA9IHRoaXM7CisKKyAgICAgICAgbUVkZ2VCb3JkZXIgPSByZXMuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKFIuZGltZW4uc3RhdHVzX2Jhcl9lZGdlX2lnbm9yZSk7CisKKyAgICAgICAgLy8gdGhlIG1vcmUgbm90aWZpY2F0aW9ucyBpY29uCisgICAgICAgIFN0YXR1c0Jhckljb25WaWV3IG1vcmVWaWV3ID0gbmV3IFN0YXR1c0Jhckljb25WaWV3KHRoaXMsICJtb3JlIik7CisgICAgICAgIG1vcmVWaWV3LnNldChuZXcgU3RhdHVzQmFySWNvbihudWxsLCBSLmRyYXdhYmxlLnN0YXRfbm90aWZ5X21vcmUsIDApKTsKKyAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zLmFkZE1vcmVWaWV3KG1vcmVWaWV3LAorICAgICAgICAgICAgICAgIG5ldyBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zKG1JY29uU2l6ZSwgbUljb25TaXplKSk7CisKKyAgICAgICAgLy8gc2V0IHRoZSBpbml0YWwgdmlldyB2aXNpYmlsaXR5CisgICAgICAgIHNldEFyZVRoZXJlTm90aWZpY2F0aW9ucygpOworICAgICAgICBtRGF0ZVZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgLy8gcmVjZWl2ZSBicm9hZGNhc3RzCisgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9DT05GSUdVUkFUSU9OX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1MpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fU0NSRUVOX09GRik7CisgICAgICAgIGNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtQnJvYWRjYXN0UmVjZWl2ZXIsIGZpbHRlcik7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgYWRkU3RhdHVzQmFyVmlldygpIHsKKyAgICAgICAgUmVzb3VyY2VzIHJlcyA9IGdldFJlc291cmNlcygpOworICAgICAgICBmaW5hbCBpbnQgaGVpZ2h0PSByZXMuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZGltZW4uc3RhdHVzX2Jhcl9oZWlnaHQpOworCisgICAgICAgIGZpbmFsIFN0YXR1c0JhclZpZXcgdmlldyA9IG1TdGF0dXNCYXJWaWV3OworICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBscCA9IG5ldyBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcygKKyAgICAgICAgICAgICAgICBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVCwKKyAgICAgICAgICAgICAgICBoZWlnaHQsCisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSLAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRQorICAgICAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfVE9VQ0hBQkxFX1dIRU5fV0FLSU5HLAorICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0LlJHQlhfODg4OCk7CisgICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOworICAgICAgICBscC5zZXRUaXRsZSgiU3RhdHVzQmFyIik7CisgICAgICAgIC8vIFRPRE8gbHAud2luZG93QW5pbWF0aW9ucyA9IFIuc3R5bGUuQW5pbWF0aW9uX1N0YXR1c0JhcjsKKworICAgICAgICBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCkuYWRkVmlldyh2aWV3LCBscCk7CisKKyAgICAgICAgbHAgPSBuZXcgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMoCisgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5XUkFQX0NPTlRFTlQsCisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSX1BBTkVMLAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX0lOX1NDUkVFTgorICAgICAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX05PX0xJTUlUUworICAgICAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIX01PREFMCisgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFCisgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNLAorICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0LlRSQU5TTFVDRU5UKTsKKyAgICAgICAgbHAuZ3Jhdml0eSA9IEdyYXZpdHkuVE9QIHwgR3Jhdml0eS5GSUxMX0hPUklaT05UQUw7CisgICAgICAgIGxwLnkgKz0gaGVpZ2h0ICogMS41OyAvLyBGSVhNRQorICAgICAgICBscC5zZXRUaXRsZSgiSW50cnVkZXJBbGVydCIpOworICAgICAgICBscC53aW5kb3dBbmltYXRpb25zID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5BbmltYXRpb25fU3RhdHVzQmFyX0ludHJ1ZGVyQWxlcnQ7CisKKyAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLmFkZFZpZXcobUludHJ1ZGVyQWxlcnRWaWV3LCBscCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkSWNvbihTdHJpbmcgc2xvdCwgaW50IGluZGV4LCBpbnQgdmlld0luZGV4LCBTdGF0dXNCYXJJY29uIGljb24pIHsKKyAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJhZGRJY29uIHNsb3Q9IiArIHNsb3QgKyAiIGluZGV4PSIgKyBpbmRleCArICIgdmlld0luZGV4PSIgKyB2aWV3SW5kZXgKKyAgICAgICAgICAgICAgICArICIgaWNvbj0iICsgaWNvbik7CisgICAgICAgIFN0YXR1c0Jhckljb25WaWV3IHZpZXcgPSBuZXcgU3RhdHVzQmFySWNvblZpZXcodGhpcywgc2xvdCk7CisgICAgICAgIHZpZXcuc2V0KGljb24pOworICAgICAgICBtU3RhdHVzSWNvbnMuYWRkVmlldyh2aWV3LCB2aWV3SW5kZXgsIG5ldyBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zKG1JY29uU2l6ZSwgbUljb25TaXplKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlSWNvbihTdHJpbmcgc2xvdCwgaW50IGluZGV4LCBpbnQgdmlld0luZGV4LAorICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBvbGQsIFN0YXR1c0Jhckljb24gaWNvbikgeworICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgInVwZGF0ZUljb24gc2xvdD0iICsgc2xvdCArICIgaW5kZXg9IiArIGluZGV4ICsgIiB2aWV3SW5kZXg9IiArIHZpZXdJbmRleAorICAgICAgICAgICAgICAgICsgIiBvbGQ9IiArIG9sZCArICIgaWNvbj0iICsgaWNvbik7CisgICAgICAgIFN0YXR1c0Jhckljb25WaWV3IHZpZXcgPSAoU3RhdHVzQmFySWNvblZpZXcpbVN0YXR1c0ljb25zLmdldENoaWxkQXQodmlld0luZGV4KTsKKyAgICAgICAgdmlldy5zZXQoaWNvbik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlSWNvbihTdHJpbmcgc2xvdCwgaW50IGluZGV4LCBpbnQgdmlld0luZGV4KSB7CisgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAicmVtb3ZlSWNvbiBzbG90PSIgKyBzbG90ICsgIiBpbmRleD0iICsgaW5kZXggKyAiIHZpZXdJbmRleD0iICsgdmlld0luZGV4KTsKKyAgICAgICAgbVN0YXR1c0ljb25zLnJlbW92ZVZpZXdBdCh2aWV3SW5kZXgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZE5vdGlmaWNhdGlvbihJQmluZGVyIGtleSwgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgeworICAgICAgICBTdGF0dXNCYXJJY29uVmlldyBpY29uVmlldyA9IGFkZE5vdGlmaWNhdGlvblZpZXdzKGtleSwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgaWYgKGljb25WaWV3ID09IG51bGwpIHJldHVybjsKKworICAgICAgICBib29sZWFuIGltbWVyc2l2ZSA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW1tZXJzaXZlID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS5pc1RvcEFjdGl2aXR5SW1tZXJzaXZlKCk7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAiVG9wIGFjdGl2aXR5IGlzICIgKyAoaW1tZXJzaXZlPyJpbW1lcnNpdmUiOiJub3QgaW1tZXJzaXZlIikpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW1tZXJzaXZlKSB7CisgICAgICAgICAgICBpZiAoKG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19ISUdIX1BSSU9SSVRZKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIlByZXNlbnRpbmcgaGlnaC1wcmlvcml0eSBub3RpZmljYXRpb24gaW4gaW1tZXJzaXZlIGFjdGl2aXR5Iik7CisgICAgICAgICAgICAgICAgLy8gQEBAIHNwZWNpYWwgbmV3IHRyYW5zaWVudCB0aWNrZXIgbW9kZQorICAgICAgICAgICAgICAgIC8vIDEuIFBvcHVsYXRlIG1JbnRydWRlckFsZXJ0VmlldworCisgICAgICAgICAgICAgICAgSW1hZ2VWaWV3IGFsZXJ0SWNvbiA9IChJbWFnZVZpZXcpIG1JbnRydWRlckFsZXJ0Vmlldy5maW5kVmlld0J5SWQoUi5pZC5hbGVydEljb24pOworICAgICAgICAgICAgICAgIFRleHRWaWV3IGFsZXJ0VGV4dCA9IChUZXh0VmlldykgbUludHJ1ZGVyQWxlcnRWaWV3LmZpbmRWaWV3QnlJZChSLmlkLmFsZXJ0VGV4dCk7CisgICAgICAgICAgICAgICAgYWxlcnRJY29uLnNldEltYWdlRHJhd2FibGUoU3RhdHVzQmFySWNvblZpZXcuZ2V0SWNvbigKKyAgICAgICAgICAgICAgICAgICAgYWxlcnRJY29uLmdldENvbnRleHQoKSwKKyAgICAgICAgICAgICAgICAgICAgaWNvblZpZXcuZ2V0U3RhdHVzQmFySWNvbigpKSk7CisgICAgICAgICAgICAgICAgYWxlcnRUZXh0LnNldFRleHQobm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi50aWNrZXJUZXh0KTsKKworICAgICAgICAgICAgICAgIFZpZXcgYnV0dG9uID0gbUludHJ1ZGVyQWxlcnRWaWV3LmZpbmRWaWV3QnlJZChSLmlkLmludHJ1ZGVyX2FsZXJ0X2NvbnRlbnQpOworICAgICAgICAgICAgICAgIGJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIoCisgICAgICAgICAgICAgICAgICAgIG5ldyBMYXVuY2hlcihub3RpZmljYXRpb24ubm90aWZpY2F0aW9uLmNvbnRlbnRJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ucGtnLCBub3RpZmljYXRpb24udGFnLCBub3RpZmljYXRpb24uaWQpKTsKKworICAgICAgICAgICAgICAgIC8vIDIuIEFuaW1hdGUgbUludHJ1ZGVyQWxlcnRWaWV3IGluCisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZShNU0dfU0hPV19JTlRSVURFUik7CisKKyAgICAgICAgICAgICAgICAvLyAzLiBTZXQgYWxhcm0gdG8gYWdlIHRoZSBub3RpZmljYXRpb24gb2ZmIChUT0RPKQorICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19ISURFX0lOVFJVREVSKTsKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlRGVsYXllZChNU0dfSElERV9JTlRSVURFUiwgSU5UUlVERVJfQUxFUlRfREVDQVlfTVMpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uZnVsbFNjcmVlbkludGVudCAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBub3QgaW1tZXJzaXZlICYgYSBmdWxsLXNjcmVlbiBhbGVydCBzaG91bGQgYmUgc2hvd24KKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJOb3RpZmljYXRpb24gaGFzIGZ1bGxTY3JlZW5JbnRlbnQgYW5kIGFjdGl2aXR5IGlzIG5vdCBpbW1lcnNpdmU7IgorICAgICAgICAgICAgICAgICAgICArICIgc2VuZGluZyBmdWxsU2NyZWVuSW50ZW50Iik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uZnVsbFNjcmVlbkludGVudC5zZW5kKCk7CisgICAgICAgICAgICB9IGNhdGNoIChQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHVzdWFsIGNhc2U6IHN0YXR1cyBiYXIgdmlzaWJsZSAmIG5vdCBpbW1lcnNpdmUKKworICAgICAgICAgICAgLy8gc2hvdyB0aGUgdGlja2VyCisgICAgICAgICAgICB0aWNrKG5vdGlmaWNhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIHNsaWRpbmcgd2luZG93cyBhbmQgdGhlIHRpdGxlcy4KKyAgICAgICAgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCk7CisgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9MRUFWRV9BTE9ORSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlTm90aWZpY2F0aW9uKElCaW5kZXIga2V5LCBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7CisgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVOb3RpZmljYXRpb24ga2V5PSIgKyBrZXkgKyAiIG5vdGlmaWNhdGlvbj0iICsgbm90aWZpY2F0aW9uKTsKKworICAgICAgICBOb3RpZmljYXRpb25EYXRhIG9sZExpc3Q7CisgICAgICAgIGludCBvbGRJbmRleCA9IG1PbmdvaW5nLmZpbmRFbnRyeShrZXkpOworICAgICAgICBpZiAob2xkSW5kZXggPj0gMCkgeworICAgICAgICAgICAgb2xkTGlzdCA9IG1PbmdvaW5nOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb2xkSW5kZXggPSBtTGF0ZXN0LmZpbmRFbnRyeShrZXkpOworICAgICAgICAgICAgaWYgKG9sZEluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJ1cGRhdGVOb3RpZmljYXRpb24gZm9yIHVua25vd24ga2V5OiAiICsga2V5KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvbGRMaXN0ID0gbUxhdGVzdDsKKyAgICAgICAgfQorICAgICAgICBmaW5hbCBOb3RpZmljYXRpb25EYXRhLkVudHJ5IG9sZEVudHJ5ID0gb2xkTGlzdC5nZXRFbnRyeUF0KG9sZEluZGV4KTsKKyAgICAgICAgZmluYWwgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG9sZE5vdGlmaWNhdGlvbiA9IG9sZEVudHJ5Lm5vdGlmaWNhdGlvbjsKKyAgICAgICAgZmluYWwgUmVtb3RlVmlld3Mgb2xkQ29udGVudFZpZXcgPSBvbGROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uLmNvbnRlbnRWaWV3OworCisgICAgICAgIGZpbmFsIFJlbW90ZVZpZXdzIGNvbnRlbnRWaWV3ID0gbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5jb250ZW50VmlldzsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJvbGQgbm90aWZpY2F0aW9uOiB3aGVuPSIgKyBvbGROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uLndoZW4KKyAgICAgICAgICAgICAgICAgICAgKyAiIG9uZ29pbmc9IiArIG9sZE5vdGlmaWNhdGlvbi5pc09uZ29pbmcoKQorICAgICAgICAgICAgICAgICAgICArICIgZXhwYW5kZWQ9IiArIG9sZEVudHJ5LmV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgICsgIiBjb250ZW50Vmlldz0iICsgb2xkQ29udGVudFZpZXcpOworICAgICAgICAgICAgU2xvZy5kKFRBRywgIm5ldyBub3RpZmljYXRpb246IHdoZW49IiArIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24ud2hlbgorICAgICAgICAgICAgICAgICAgICArICIgb25nb2luZz0iICsgb2xkTm90aWZpY2F0aW9uLmlzT25nb2luZygpCisgICAgICAgICAgICAgICAgICAgICsgIiBjb250ZW50Vmlldz0iICsgY29udGVudFZpZXcpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FuIHdlIGp1c3QgcmVhcHBseSB0aGUgUmVtb3RlVmlld3MgaW4gcGxhY2U/ICBJZiB3aGVuIGRpZG4ndCBjaGFuZ2UsIHRoZSBvcmRlcgorICAgICAgICAvLyBkaWRuJ3QgY2hhbmdlLgorICAgICAgICBpZiAobm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi53aGVuID09IG9sZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24ud2hlbgorICAgICAgICAgICAgICAgICYmIG5vdGlmaWNhdGlvbi5pc09uZ29pbmcoKSA9PSBvbGROb3RpZmljYXRpb24uaXNPbmdvaW5nKCkKKyAgICAgICAgICAgICAgICAmJiBvbGRFbnRyeS5leHBhbmRlZCAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgY29udGVudFZpZXcgIT0gbnVsbCAmJiBvbGRDb250ZW50VmlldyAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgY29udGVudFZpZXcuZ2V0UGFja2FnZSgpICE9IG51bGwKKyAgICAgICAgICAgICAgICAmJiBvbGRDb250ZW50Vmlldy5nZXRQYWNrYWdlKCkgIT0gbnVsbAorICAgICAgICAgICAgICAgICYmIG9sZENvbnRlbnRWaWV3LmdldFBhY2thZ2UoKS5lcXVhbHMoY29udGVudFZpZXcuZ2V0UGFja2FnZSgpKQorICAgICAgICAgICAgICAgICYmIG9sZENvbnRlbnRWaWV3LmdldExheW91dElkKCkgPT0gY29udGVudFZpZXcuZ2V0TGF5b3V0SWQoKSkgeworICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJyZXVzaW5nIG5vdGlmaWNhdGlvbiIpOworICAgICAgICAgICAgb2xkRW50cnkubm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9uOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBSZWFwcGx5IHRoZSBSZW1vdGVWaWV3cworICAgICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnJlYXBwbHkodGhpcywgb2xkRW50cnkuY29udGVudCk7CisgICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBjb250ZW50SW50ZW50CisgICAgICAgICAgICAgICAgZmluYWwgUGVuZGluZ0ludGVudCBjb250ZW50SW50ZW50ID0gbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5jb250ZW50SW50ZW50OworICAgICAgICAgICAgICAgIGlmIChjb250ZW50SW50ZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgb2xkRW50cnkuY29udGVudC5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IExhdW5jaGVyKGNvbnRlbnRJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5wa2csIG5vdGlmaWNhdGlvbi50YWcsIG5vdGlmaWNhdGlvbi5pZCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGljb24uCisgICAgICAgICAgICAgICAgZmluYWwgU3RhdHVzQmFySWNvbiBpYyA9IG5ldyBTdGF0dXNCYXJJY29uKG5vdGlmaWNhdGlvbi5wa2csCisgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uLmljb24sIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uaWNvbkxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5udW1iZXIpOworICAgICAgICAgICAgICAgIGlmICghb2xkRW50cnkuaWNvbi5zZXQoaWMpKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU5vdGlmaWNhdGlvbkVycm9yKGtleSwgbm90aWZpY2F0aW9uLCAiQ291bGRuJ3QgdXBkYXRlIGljb246ICIgKyBpYyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gSXQgZmFpbGVkIHRvIGFkZCBjbGVhbmx5LiAgTG9nLCBhbmQgcmVtb3ZlIHRoZSB2aWV3IGZyb20gdGhlIHBhbmVsLgorICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJDb3VsZG4ndCByZWFwcGx5IHZpZXdzIGZvciBwYWNrYWdlICIgKyBjb250ZW50Vmlldy5nZXRQYWNrYWdlKCksIGUpOworICAgICAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvblZpZXdzKGtleSk7CisgICAgICAgICAgICAgICAgYWRkTm90aWZpY2F0aW9uVmlld3Moa2V5LCBub3RpZmljYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJub3QgcmV1c2luZyBub3RpZmljYXRpb24iKTsKKyAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvblZpZXdzKGtleSk7CisgICAgICAgICAgICBhZGROb3RpZmljYXRpb25WaWV3cyhrZXksIG5vdGlmaWNhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXN0YXJ0IHRoZSB0aWNrZXIgaWYgaXQncyBzdGlsbCBydW5uaW5nCisgICAgICAgIHRpY2sobm90aWZpY2F0aW9uKTsKKworICAgICAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIHNsaWRpbmcgd2luZG93cyBhbmQgdGhlIHRpdGxlcy4KKyAgICAgICAgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCk7CisgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9MRUFWRV9BTE9ORSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uKElCaW5kZXIga2V5KSB7CisgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAicmVtb3ZlTm90aWZpY2F0aW9uIGtleT0iICsga2V5KTsKKyAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG9sZCA9IHJlbW92ZU5vdGlmaWNhdGlvblZpZXdzKGtleSk7CisKKyAgICAgICAgaWYgKG9sZCAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBDYW5jZWwgdGhlIHRpY2tlciBpZiBpdCdzIHN0aWxsIHJ1bm5pbmcKKyAgICAgICAgICAgIG1UaWNrZXIucmVtb3ZlRW50cnkob2xkKTsKKworICAgICAgICAgICAgLy8gUmVjYWxjdWxhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBzbGlkaW5nIHdpbmRvd3MgYW5kIHRoZSB0aXRsZXMuCisgICAgICAgICAgICBzZXRBcmVUaGVyZU5vdGlmaWNhdGlvbnMoKTsKKyAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9MRUFWRV9BTE9ORSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGludCBjaG9vc2VJY29uSW5kZXgoYm9vbGVhbiBpc09uZ29pbmcsIGludCB2aWV3SW5kZXgpIHsKKyAgICAgICAgZmluYWwgaW50IGxhdGVzdFNpemUgPSBtTGF0ZXN0LnNpemUoKTsKKyAgICAgICAgaWYgKGlzT25nb2luZykgeworICAgICAgICAgICAgcmV0dXJuIGxhdGVzdFNpemUgKyAobU9uZ29pbmcuc2l6ZSgpIC0gdmlld0luZGV4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBsYXRlc3RTaXplIC0gdmlld0luZGV4OworICAgICAgICB9CisgICAgfQorCisgICAgVmlld1tdIG1ha2VOb3RpZmljYXRpb25WaWV3KFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFZpZXdHcm91cCBwYXJlbnQpIHsKKyAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uOworICAgICAgICBSZW1vdGVWaWV3cyByZW1vdGVWaWV3cyA9IG4uY29udGVudFZpZXc7CisgICAgICAgIGlmIChyZW1vdGVWaWV3cyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNyZWF0ZSB0aGUgcm93IHZpZXcKKyAgICAgICAgTGF5b3V0SW5mbGF0ZXIgaW5mbGF0ZXIgPSAoTGF5b3V0SW5mbGF0ZXIpZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkxBWU9VVF9JTkZMQVRFUl9TRVJWSUNFKTsKKyAgICAgICAgVmlldyByb3cgPSBpbmZsYXRlci5pbmZsYXRlKFIubGF5b3V0LnN0YXR1c19iYXJfbGF0ZXN0X2V2ZW50LCBwYXJlbnQsIGZhbHNlKTsKKworICAgICAgICAvLyBiaW5kIHRoZSBjbGljayBldmVudCB0byB0aGUgY29udGVudCBhcmVhCisgICAgICAgIFZpZXdHcm91cCBjb250ZW50ID0gKFZpZXdHcm91cClyb3cuZmluZFZpZXdCeUlkKFIuaWQuY29udGVudCk7CisgICAgICAgIGNvbnRlbnQuc2V0RGVzY2VuZGFudEZvY3VzYWJpbGl0eShWaWV3R3JvdXAuRk9DVVNfQkxPQ0tfREVTQ0VOREFOVFMpOworICAgICAgICBjb250ZW50LnNldE9uRm9jdXNDaGFuZ2VMaXN0ZW5lcihtRm9jdXNDaGFuZ2VMaXN0ZW5lcik7CisgICAgICAgIFBlbmRpbmdJbnRlbnQgY29udGVudEludGVudCA9IG4uY29udGVudEludGVudDsKKyAgICAgICAgaWYgKGNvbnRlbnRJbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgY29udGVudC5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IExhdW5jaGVyKGNvbnRlbnRJbnRlbnQsIG5vdGlmaWNhdGlvbi5wa2csCisgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24udGFnLCBub3RpZmljYXRpb24uaWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIFZpZXcgZXhwYW5kZWQgPSBudWxsOworICAgICAgICBFeGNlcHRpb24gZXhjZXB0aW9uID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGV4cGFuZGVkID0gcmVtb3RlVmlld3MuYXBwbHkodGhpcywgY29udGVudCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXhjZXB0aW9uID0gZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhwYW5kZWQgPT0gbnVsbCkgeworICAgICAgICAgICAgU3RyaW5nIGlkZW50ID0gbm90aWZpY2F0aW9uLnBrZyArICIvMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhub3RpZmljYXRpb24uaWQpOworICAgICAgICAgICAgU2xvZy5lKFRBRywgImNvdWxkbid0IGluZmxhdGUgdmlldyBmb3Igbm90aWZpY2F0aW9uICIgKyBpZGVudCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29udGVudC5hZGRWaWV3KGV4cGFuZGVkKTsKKyAgICAgICAgICAgIHJvdy5zZXREcmF3aW5nQ2FjaGVFbmFibGVkKHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBWaWV3W10geyByb3csIGNvbnRlbnQsIGV4cGFuZGVkIH07CisgICAgfQorCisgICAgU3RhdHVzQmFySWNvblZpZXcgYWRkTm90aWZpY2F0aW9uVmlld3MoSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKKyAgICAgICAgTm90aWZpY2F0aW9uRGF0YSBsaXN0OworICAgICAgICBWaWV3R3JvdXAgcGFyZW50OworICAgICAgICBmaW5hbCBib29sZWFuIGlzT25nb2luZyA9IG5vdGlmaWNhdGlvbi5pc09uZ29pbmcoKTsKKyAgICAgICAgaWYgKGlzT25nb2luZykgeworICAgICAgICAgICAgbGlzdCA9IG1PbmdvaW5nOworICAgICAgICAgICAgcGFyZW50ID0gbU9uZ29pbmdJdGVtczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxpc3QgPSBtTGF0ZXN0OworICAgICAgICAgICAgcGFyZW50ID0gbUxhdGVzdEl0ZW1zOworICAgICAgICB9CisgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgZXhwYW5kZWQgdmlldy4KKyAgICAgICAgZmluYWwgVmlld1tdIHZpZXdzID0gbWFrZU5vdGlmaWNhdGlvblZpZXcobm90aWZpY2F0aW9uLCBwYXJlbnQpOworICAgICAgICBpZiAodmlld3MgPT0gbnVsbCkgeworICAgICAgICAgICAgaGFuZGxlTm90aWZpY2F0aW9uRXJyb3Ioa2V5LCBub3RpZmljYXRpb24sICJDb3VsZG4ndCBleHBhbmQgUmVtb3RlVmlld3MgZm9yOiAiCisgICAgICAgICAgICAgICAgICAgICsgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIGZpbmFsIFZpZXcgcm93ID0gdmlld3NbMF07CisgICAgICAgIGZpbmFsIFZpZXcgY29udGVudCA9IHZpZXdzWzFdOworICAgICAgICBmaW5hbCBWaWV3IGV4cGFuZGVkID0gdmlld3NbMl07CisgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgaWNvbi4KKyAgICAgICAgZmluYWwgU3RhdHVzQmFySWNvblZpZXcgaWNvblZpZXcgPSBuZXcgU3RhdHVzQmFySWNvblZpZXcodGhpcywKKyAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ucGtnICsgIi8weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vdGlmaWNhdGlvbi5pZCkpOworICAgICAgICBmaW5hbCBTdGF0dXNCYXJJY29uIGljID0gbmV3IFN0YXR1c0Jhckljb24obm90aWZpY2F0aW9uLnBrZywgbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5pY29uLAorICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uLmljb25MZXZlbCwgbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5udW1iZXIpOworICAgICAgICBpZiAoIWljb25WaWV3LnNldChpYykpIHsKKyAgICAgICAgICAgIGhhbmRsZU5vdGlmaWNhdGlvbkVycm9yKGtleSwgbm90aWZpY2F0aW9uLCAiQ291bGRpbmcgY3JlYXRlIGljb246ICIgKyBpYyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAvLyBBZGQgdGhlIGV4cGFuZGVkIHZpZXcuCisgICAgICAgIGZpbmFsIGludCB2aWV3SW5kZXggPSBsaXN0LmFkZChrZXksIG5vdGlmaWNhdGlvbiwgcm93LCBjb250ZW50LCBleHBhbmRlZCwgaWNvblZpZXcpOworICAgICAgICBwYXJlbnQuYWRkVmlldyhyb3csIHZpZXdJbmRleCk7CisgICAgICAgIC8vIEFkZCB0aGUgaWNvbi4KKyAgICAgICAgZmluYWwgaW50IGljb25JbmRleCA9IGNob29zZUljb25JbmRleChpc09uZ29pbmcsIHZpZXdJbmRleCk7CisgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5hZGRWaWV3KGljb25WaWV3LCBpY29uSW5kZXgsCisgICAgICAgICAgICAgICAgbmV3IExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMobUljb25TaXplLCBtSWNvblNpemUpKTsKKyAgICAgICAgcmV0dXJuIGljb25WaWV3OworICAgIH0KKworICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiByZW1vdmVOb3RpZmljYXRpb25WaWV3cyhJQmluZGVyIGtleSkgeworICAgICAgICBOb3RpZmljYXRpb25EYXRhLkVudHJ5IGVudHJ5ID0gbU9uZ29pbmcucmVtb3ZlKGtleSk7CisgICAgICAgIGlmIChlbnRyeSA9PSBudWxsKSB7CisgICAgICAgICAgICBlbnRyeSA9IG1MYXRlc3QucmVtb3ZlKGtleSk7CisgICAgICAgICAgICBpZiAoZW50cnkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJyZW1vdmVOb3RpZmljYXRpb24gZm9yIHVua25vd24ga2V5OiAiICsga2V5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBSZW1vdmUgdGhlIGV4cGFuZGVkIHZpZXcuCisgICAgICAgICgoVmlld0dyb3VwKWVudHJ5LnJvdy5nZXRQYXJlbnQoKSkucmVtb3ZlVmlldyhlbnRyeS5yb3cpOworICAgICAgICAvLyBSZW1vdmUgdGhlIGljb24uCisgICAgICAgICgoVmlld0dyb3VwKWVudHJ5Lmljb24uZ2V0UGFyZW50KCkpLnJlbW92ZVZpZXcoZW50cnkuaWNvbik7CisKKyAgICAgICAgcmV0dXJuIGVudHJ5Lm5vdGlmaWNhdGlvbjsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCkgeworICAgICAgICBib29sZWFuIG9uZ29pbmcgPSBtT25nb2luZy5oYXNWaXNpYmxlSXRlbXMoKTsKKyAgICAgICAgYm9vbGVhbiBsYXRlc3QgPSBtTGF0ZXN0Lmhhc1Zpc2libGVJdGVtcygpOworCisgICAgICAgIC8vIChubyBvbmdvaW5nIG5vdGlmaWNhdGlvbnMgYXJlIGNsZWFyYWJsZSkKKyAgICAgICAgaWYgKG1MYXRlc3QuaGFzQ2xlYXJhYmxlSXRlbXMoKSkgeworICAgICAgICAgICAgbUNsZWFyQnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1DbGVhckJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgfQorCisgICAgICAgIG1PbmdvaW5nVGl0bGUuc2V0VmlzaWJpbGl0eShvbmdvaW5nID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKyAgICAgICAgbUxhdGVzdFRpdGxlLnNldFZpc2liaWxpdHkobGF0ZXN0ID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKworICAgICAgICBpZiAob25nb2luZyB8fCBsYXRlc3QpIHsKKyAgICAgICAgICAgIG1Ob05vdGlmaWNhdGlvbnNUaXRsZS5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtTm9Ob3RpZmljYXRpb25zVGl0bGUuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBTdGF0ZSBpcyBvbmUgb3IgbW9yZSBvZiB0aGUgRElTQUJMRSBjb25zdGFudHMgZnJvbSBTdGF0dXNCYXJNYW5hZ2VyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoaW50IHN0YXRlKSB7CisgICAgICAgIGZpbmFsIGludCBvbGQgPSBtRGlzYWJsZWQ7CisgICAgICAgIGZpbmFsIGludCBkaWZmID0gc3RhdGUgXiBvbGQ7CisgICAgICAgIG1EaXNhYmxlZCA9IHN0YXRlOworCisgICAgICAgIGlmICgoZGlmZiAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKKyAgICAgICAgICAgIGlmICgoc3RhdGUgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfRVhQQU5EOiB5ZXMiKTsKKyAgICAgICAgICAgICAgICBhbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoKGRpZmYgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKHN0YXRlICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9JQ09OUykgIT0gMCkgeworICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJESVNBQkxFX05PVElGSUNBVElPTl9JQ09OUzogeWVzIik7CisgICAgICAgICAgICAgICAgaWYgKG1UaWNraW5nKSB7CisgICAgICAgICAgICAgICAgICAgIG1UaWNrZXIuaGFsdCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbkljb25WaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TOiBubyIpOworICAgICAgICAgICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChtVGlja2luZyAmJiAoc3RhdGUgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX1RJQ0tFUikgIT0gMCkgeworICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVI6IHllcyIpOworICAgICAgICAgICAgICAgIG1UaWNrZXIuaGFsdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsIGNoYW5nZXMgdG8gdGhlIHN0YXR1cyBiYXIgYW5kIG5vdGlmaWNhdGlvbnMgZnVubmVsIHRocm91Z2ggaGVyZSBhbmQgYXJlIGJhdGNoZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBIIGV4dGVuZHMgSGFuZGxlciB7CisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG0ud2hhdCkgeworICAgICAgICAgICAgICAgIGNhc2UgTVNHX0FOSU1BVEU6CisgICAgICAgICAgICAgICAgICAgIGRvQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTVNHX0FOSU1BVEVfUkVWRUFMOgorICAgICAgICAgICAgICAgICAgICBkb1JldmVhbEFuaW1hdGlvbigpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1TR19TSE9XX0lOVFJVREVSOgorICAgICAgICAgICAgICAgICAgICBzZXRJbnRydWRlckFsZXJ0VmlzaWJpbGl0eSh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfSElERV9JTlRSVURFUjoKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50cnVkZXJBbGVydFZpc2liaWxpdHkoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFZpZXcuT25Gb2N1c0NoYW5nZUxpc3RlbmVyIG1Gb2N1c0NoYW5nZUxpc3RlbmVyID0gbmV3IFZpZXcuT25Gb2N1c0NoYW5nZUxpc3RlbmVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBvbkZvY3VzQ2hhbmdlKFZpZXcgdiwgYm9vbGVhbiBoYXNGb2N1cykgeworICAgICAgICAgICAgLy8gQmVjYXVzZSAndicgaXMgYSBWaWV3R3JvdXAsIGFsbCBpdHMgY2hpbGRyZW4gd2lsbCBiZSAodW4pc2VsZWN0ZWQKKyAgICAgICAgICAgIC8vIHRvbywgd2hpY2ggYWxsb3dzIG1hcnF1ZWVpbmcgdG8gd29yay4KKyAgICAgICAgICAgIHYuc2V0U2VsZWN0ZWQoaGFzRm9jdXMpOworICAgICAgICB9CisgICAgfTsKKworICAgIHByaXZhdGUgdm9pZCBtYWtlRXhwYW5kZWRWaXNpYmxlKCkgeworICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgIk1ha2UgZXhwYW5kZWQgdmlzaWJsZTogZXhwYW5kZWQgdmlzaWJsZT0iICsgbUV4cGFuZGVkVmlzaWJsZSk7CisgICAgICAgIGlmIChtRXhwYW5kZWRWaXNpYmxlKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbUV4cGFuZGVkVmlzaWJsZSA9IHRydWU7CisgICAgICAgIHZpc2liaWxpdHlDaGFuZ2VkKHRydWUpOworCisgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9MRUFWRV9BTE9ORSk7CisgICAgICAgIG1FeHBhbmRlZFBhcmFtcy5mbGFncyAmPSB+V2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFOworICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNOworICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0QXR0cmlidXRlcyhtRXhwYW5kZWRQYXJhbXMpOworICAgICAgICBtRXhwYW5kZWRWaWV3LnJlcXVlc3RGb2N1cyhWaWV3LkZPQ1VTX0ZPUldBUkQpOworICAgICAgICBtVHJhY2tpbmdWaWV3LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKworICAgICAgICBpZiAoIW1UaWNraW5nKSB7CisgICAgICAgICAgICBzZXREYXRlVmlld1Zpc2liaWxpdHkodHJ1ZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfaW4pOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYW5pbWF0ZUV4cGFuZCgpIHsKKyAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJBbmltYXRlIGV4cGFuZDogZXhwYW5kZWQ9IiArIG1FeHBhbmRlZCk7CisgICAgICAgIGlmICgobURpc2FibGVkICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCkgIT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDsKKyAgICAgICAgfQorICAgICAgICBpZiAobUV4cGFuZGVkKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBwcmVwYXJlVHJhY2tpbmcoMCwgdHJ1ZSk7CisgICAgICAgIHBlcmZvcm1GbGluZygwLCAyMDAwLjBmLCB0cnVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhbmltYXRlQ29sbGFwc2UoKSB7CisgICAgICAgIGlmIChTUEVXKSB7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAiYW5pbWF0ZUNvbGxhcHNlKCk6IG1FeHBhbmRlZD0iICsgbUV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWRWaXNpYmxlPSIgKyBtRXhwYW5kZWRWaXNpYmxlCisgICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWQ9IiArIG1FeHBhbmRlZAorICAgICAgICAgICAgICAgICAgICArICIgbUFuaW1hdGluZz0iICsgbUFuaW1hdGluZworICAgICAgICAgICAgICAgICAgICArICIgbUFuaW1ZPSIgKyBtQW5pbVkKKyAgICAgICAgICAgICAgICAgICAgKyAiIG1BbmltVmVsPSIgKyBtQW5pbVZlbCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1FeHBhbmRlZFZpc2libGUpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCB5OworICAgICAgICBpZiAobUFuaW1hdGluZykgeworICAgICAgICAgICAgeSA9IChpbnQpbUFuaW1ZOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgeSA9IG1EaXNwbGF5LmdldEhlaWdodCgpLTE7CisgICAgICAgIH0KKyAgICAgICAgLy8gTGV0IHRoZSBmbGluZyB0aGluayB0aGF0IHdlJ3JlIG9wZW4gc28gaXQgZ29lcyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uCisgICAgICAgIC8vIGFuZCBkb2Vzbid0IHRyeSB0byByZS1vcGVuIHRoZSB3aW5kb3dzaGFkZS4KKyAgICAgICAgbUV4cGFuZGVkID0gdHJ1ZTsKKyAgICAgICAgcHJlcGFyZVRyYWNraW5nKHksIGZhbHNlKTsKKyAgICAgICAgcGVyZm9ybUZsaW5nKHksIC0yMDAwLjBmLCB0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIHBlcmZvcm1FeHBhbmQoKSB7CisgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAicGVyZm9ybUV4cGFuZDogbUV4cGFuZGVkPSIgKyBtRXhwYW5kZWQpOworICAgICAgICBpZiAoKG1EaXNhYmxlZCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1FeHBhbmRlZCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbUV4cGFuZGVkID0gdHJ1ZTsKKyAgICAgICAgbWFrZUV4cGFuZGVkVmlzaWJsZSgpOworICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoRVhQQU5ERURfRlVMTF9PUEVOKTsKKworICAgICAgICBpZiAoZmFsc2UpIHBvc3RTdGFydFRyYWNpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIHBlcmZvcm1Db2xsYXBzZSgpIHsKKyAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJwZXJmb3JtQ29sbGFwc2U6IG1FeHBhbmRlZD0iICsgbUV4cGFuZGVkCisgICAgICAgICAgICAgICAgKyAiIG1FeHBhbmRlZFZpc2libGU9IiArIG1FeHBhbmRlZFZpc2libGUpOworCisgICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1FeHBhbmRlZFZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgdmlzaWJpbGl0eUNoYW5nZWQoZmFsc2UpOworICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFOworICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgJj0gfldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobUV4cGFuZGVkUGFyYW1zKTsKKyAgICAgICAgbVRyYWNraW5nVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisKKyAgICAgICAgaWYgKChtRGlzYWJsZWQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSA9PSAwKSB7CisgICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7CisgICAgICAgIH0KKyAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQpOworCisgICAgICAgIGlmICghbUV4cGFuZGVkKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbUV4cGFuZGVkID0gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBkb0FuaW1hdGlvbigpIHsKKyAgICAgICAgaWYgKG1BbmltYXRpbmcpIHsKKyAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiZG9BbmltYXRpb24iKTsKKyAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiZG9BbmltYXRpb24gYmVmb3JlIG1BbmltWT0iICsgbUFuaW1ZKTsKKyAgICAgICAgICAgIGluY3JlbWVudEFuaW0oKTsKKyAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiZG9BbmltYXRpb24gYWZ0ZXIgIG1BbmltWT0iICsgbUFuaW1ZKTsKKyAgICAgICAgICAgIGlmIChtQW5pbVkgPj0gbURpc3BsYXkuZ2V0SGVpZ2h0KCktMSkgeworICAgICAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiQW5pbWF0aW9uIGNvbXBsZXRlZCB0byBleHBhbmRlZCBzdGF0ZS4iKTsKKyAgICAgICAgICAgICAgICBtQW5pbWF0aW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKEVYUEFOREVEX0ZVTExfT1BFTik7CisgICAgICAgICAgICAgICAgcGVyZm9ybUV4cGFuZCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobUFuaW1ZIDwgbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgIkFuaW1hdGlvbiBjb21wbGV0ZWQgdG8gY29sbGFwc2VkIHN0YXRlLiIpOworICAgICAgICAgICAgICAgIG1BbmltYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoMCk7CisgICAgICAgICAgICAgICAgcGVyZm9ybUNvbGxhcHNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoKGludCltQW5pbVkpOworICAgICAgICAgICAgICAgIG1DdXJBbmltYXRpb25UaW1lICs9IEFOSU1fRlJBTUVfRFVSQVRJT047CisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VBdFRpbWUobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfQU5JTUFURSksIG1DdXJBbmltYXRpb25UaW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3RvcFRyYWNraW5nKCkgeworICAgICAgICBtVHJhY2tpbmcgPSBmYWxzZTsKKyAgICAgICAgbVZlbG9jaXR5VHJhY2tlci5yZWN5Y2xlKCk7CisgICAgICAgIG1WZWxvY2l0eVRyYWNrZXIgPSBudWxsOworICAgIH0KKworICAgIHZvaWQgaW5jcmVtZW50QW5pbSgpIHsKKyAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgZmxvYXQgdCA9ICgoZmxvYXQpKG5vdyAtIG1BbmltTGFzdFRpbWUpKSAvIDEwMDA7ICAgICAgICAgICAgLy8gbXMgLT4gcworICAgICAgICBmaW5hbCBmbG9hdCB5ID0gbUFuaW1ZOworICAgICAgICBmaW5hbCBmbG9hdCB2ID0gbUFuaW1WZWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBweC9zCisgICAgICAgIGZpbmFsIGZsb2F0IGEgPSBtQW5pbUFjY2VsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB4L3MvcworICAgICAgICBtQW5pbVkgPSB5ICsgKHYqdCkgKyAoMC41ZiphKnQqdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBweAorICAgICAgICBtQW5pbVZlbCA9IHYgKyAoYSp0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBweC9zCisgICAgICAgIG1BbmltTGFzdFRpbWUgPSBub3c7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1zCisgICAgICAgIC8vU2xvZy5kKFRBRywgInk9IiArIHkgKyAiIHY9IiArIHYgKyAiIGE9IiArIGEgKyAiIHQ9IiArIHQgKyAiIG1BbmltWT0iICsgbUFuaW1ZCisgICAgICAgIC8vICAgICAgICArICIgbUFuaW1BY2NlbD0iICsgbUFuaW1BY2NlbCk7CisgICAgfQorCisgICAgdm9pZCBkb1JldmVhbEFuaW1hdGlvbigpIHsKKyAgICAgICAgZmluYWwgaW50IGggPSBtQ2xvc2VWaWV3LmdldEhlaWdodCgpICsgbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCk7CisgICAgICAgIGlmIChtQW5pbWF0aW5nUmV2ZWFsICYmIG1BbmltYXRpbmcgJiYgbUFuaW1ZIDwgaCkgeworICAgICAgICAgICAgaW5jcmVtZW50QW5pbSgpOworICAgICAgICAgICAgaWYgKG1BbmltWSA+PSBoKSB7CisgICAgICAgICAgICAgICAgbUFuaW1ZID0gaDsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoKGludCltQW5pbVkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoKGludCltQW5pbVkpOworICAgICAgICAgICAgICAgIG1DdXJBbmltYXRpb25UaW1lICs9IEFOSU1fRlJBTUVfRFVSQVRJT047CisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VBdFRpbWUobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfQU5JTUFURV9SRVZFQUwpLAorICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckFuaW1hdGlvblRpbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBwcmVwYXJlVHJhY2tpbmcoaW50IHksIGJvb2xlYW4gb3BlbmluZykgeworICAgICAgICBtVHJhY2tpbmcgPSB0cnVlOworICAgICAgICBtVmVsb2NpdHlUcmFja2VyID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBpZiAob3BlbmluZykgeworICAgICAgICAgICAgbUFuaW1BY2NlbCA9IDIwMDAuMGY7CisgICAgICAgICAgICBtQW5pbVZlbCA9IDIwMDsKKyAgICAgICAgICAgIG1BbmltWSA9IG1TdGF0dXNCYXJWaWV3LmdldEhlaWdodCgpOworICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKChpbnQpbUFuaW1ZKTsKKyAgICAgICAgICAgIG1BbmltYXRpbmcgPSB0cnVlOworICAgICAgICAgICAgbUFuaW1hdGluZ1JldmVhbCA9IHRydWU7CisgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURSk7CisgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURV9SRVZFQUwpOworICAgICAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIG1BbmltTGFzdFRpbWUgPSBub3c7CisgICAgICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSA9IG5vdyArIEFOSU1fRlJBTUVfRFVSQVRJT047CisgICAgICAgICAgICBtQW5pbWF0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlQXRUaW1lKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0FOSU1BVEVfUkVWRUFMKSwKKyAgICAgICAgICAgICAgICAgICAgbUN1ckFuaW1hdGlvblRpbWUpOworICAgICAgICAgICAgbWFrZUV4cGFuZGVkVmlzaWJsZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gaXQncyBvcGVuLCBjbG9zZSBpdD8KKyAgICAgICAgICAgIGlmIChtQW5pbWF0aW5nKSB7CisgICAgICAgICAgICAgICAgbUFuaW1hdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19BTklNQVRFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1Bvcyh5ICsgbVZpZXdEZWx0YSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHBlcmZvcm1GbGluZyhpbnQgeSwgZmxvYXQgdmVsLCBib29sZWFuIGFsd2F5cykgeworICAgICAgICBtQW5pbWF0aW5nUmV2ZWFsID0gZmFsc2U7CisgICAgICAgIG1EaXNwbGF5SGVpZ2h0ID0gbURpc3BsYXkuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgbUFuaW1ZID0geTsKKyAgICAgICAgbUFuaW1WZWwgPSB2ZWw7CisKKyAgICAgICAgLy9TbG9nLmQoVEFHLCAic3RhcnRpbmcgd2l0aCBtQW5pbVk9IiArIG1BbmltWSArICIgbUFuaW1WZWw9IiArIG1BbmltVmVsKTsKKworICAgICAgICBpZiAobUV4cGFuZGVkKSB7CisgICAgICAgICAgICBpZiAoIWFsd2F5cyAmJiAoCisgICAgICAgICAgICAgICAgICAgIHZlbCA+IDIwMC4wZgorICAgICAgICAgICAgICAgICAgICB8fCAoeSA+IChtRGlzcGxheUhlaWdodC0yNSkgJiYgdmVsID4gLTIwMC4wZikpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGV4cGFuZGVkLCBidXQgdGhleSBkaWRuJ3QgbW92ZSBzdWZmaWNpZW50bHkgdG8gY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB1cyB0byByZXRyYWN0LiAgQW5pbWF0ZSBiYWNrIHRvIHRoZSBleHBhbmRlZCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gMjAwMC4wZjsKKyAgICAgICAgICAgICAgICBpZiAodmVsIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGV4cGFuZGVkIGFuZCBhcmUgbm93IGdvaW5nIHRvIGFuaW1hdGUgYXdheS4KKyAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gLTIwMDAuMGY7CisgICAgICAgICAgICAgICAgaWYgKHZlbCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbUFuaW1WZWwgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhbHdheXMgfHwgKAorICAgICAgICAgICAgICAgICAgICB2ZWwgPiAyMDAuMGYKKyAgICAgICAgICAgICAgICAgICAgfHwgKHkgPiAobURpc3BsYXlIZWlnaHQvMikgJiYgdmVsID4gLTIwMC4wZikpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGNvbGxhcHNlZCwgYW5kIHRoZXkgbW92ZWQgZW5vdWdoIHRvIGFsbG93IHVzIHRvCisgICAgICAgICAgICAgICAgLy8gZXhwYW5kLiAgQW5pbWF0ZSBpbiB0aGUgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gMjAwMC4wZjsKKyAgICAgICAgICAgICAgICBpZiAodmVsIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGNvbGxhcHNlZCwgYnV0IHRoZXkgZGlkbid0IG1vdmUgc3VmZmljaWVudGx5IHRvIGNhdXNlCisgICAgICAgICAgICAgICAgLy8gdXMgdG8gcmV0cmFjdC4gIEFuaW1hdGUgYmFjayB0byB0aGUgY29sbGFwc2VkIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIG1BbmltQWNjZWwgPSAtMjAwMC4wZjsKKyAgICAgICAgICAgICAgICBpZiAodmVsID4gMCkgeworICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vU2xvZy5kKFRBRywgIm1BbmltWT0iICsgbUFuaW1ZICsgIiBtQW5pbVZlbD0iICsgbUFuaW1WZWwKKyAgICAgICAgLy8gICAgICAgICsgIiBtQW5pbUFjY2VsPSIgKyBtQW5pbUFjY2VsKTsKKworICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICBtQW5pbUxhc3RUaW1lID0gbm93OworICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSA9IG5vdyArIEFOSU1fRlJBTUVfRFVSQVRJT047CisgICAgICAgIG1BbmltYXRpbmcgPSB0cnVlOworICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURSk7CisgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19BTklNQVRFX1JFVkVBTCk7CisgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlQXRUaW1lKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0FOSU1BVEUpLCBtQ3VyQW5pbWF0aW9uVGltZSk7CisgICAgICAgIHN0b3BUcmFja2luZygpOworICAgIH0KKworICAgIGJvb2xlYW4gaW50ZXJjZXB0VG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICBpZiAoU1BFVykgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgIlRvdWNoOiByYXdZPSIgKyBldmVudC5nZXRSYXdZKCkgKyAiIGV2ZW50PSIgKyBldmVudCArICIgbURpc2FibGVkPSIKKyAgICAgICAgICAgICAgICArIG1EaXNhYmxlZCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKG1EaXNhYmxlZCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBzdGF0dXNCYXJTaXplID0gbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCk7CisgICAgICAgIGZpbmFsIGludCBoaXRTaXplID0gc3RhdHVzQmFyU2l6ZSoyOworICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV04pIHsKKyAgICAgICAgICAgIGZpbmFsIGludCB5ID0gKGludClldmVudC5nZXRSYXdZKCk7CisKKyAgICAgICAgICAgIGlmICghbUV4cGFuZGVkKSB7CisgICAgICAgICAgICAgICAgbVZpZXdEZWx0YSA9IHN0YXR1c0JhclNpemUgLSB5OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtVHJhY2tpbmdWaWV3LmdldExvY2F0aW9uT25TY3JlZW4obUFic1Bvcyk7CisgICAgICAgICAgICAgICAgbVZpZXdEZWx0YSA9IG1BYnNQb3NbMV0gKyBtVHJhY2tpbmdWaWV3LmdldEhlaWdodCgpIC0geTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoIW1FeHBhbmRlZCAmJiB5IDwgaGl0U2l6ZSkgfHwKKyAgICAgICAgICAgICAgICAgICAgKG1FeHBhbmRlZCAmJiB5ID4gKG1EaXNwbGF5LmdldEhlaWdodCgpLWhpdFNpemUpKSkgeworCisgICAgICAgICAgICAgICAgLy8gV2UgZHJvcCBldmVudHMgYXQgdGhlIGVkZ2Ugb2YgdGhlIHNjcmVlbiB0byBtYWtlIHRoZSB3aW5kb3dzaGFkZSBjb21lCisgICAgICAgICAgICAgICAgLy8gZG93biBieSBhY2NpZGVudCBsZXNzLCBlc3BlY2lhbGx5IHdoZW4gcHVzaGluZyBvcGVuIGEgZGV2aWNlIHdpdGggYSBrZXlib2FyZAorICAgICAgICAgICAgICAgIC8vIHRoYXQgcm90YXRlcyAobGlrZSBnMSBhbmQgZHJvaWQpCisgICAgICAgICAgICAgICAgaW50IHggPSAoaW50KWV2ZW50LmdldFJhd1goKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZWRnZUJvcmRlciA9IG1FZGdlQm9yZGVyOworICAgICAgICAgICAgICAgIGlmICh4ID49IGVkZ2VCb3JkZXIgJiYgeCA8IG1EaXNwbGF5LmdldFdpZHRoKCkgLSBlZGdlQm9yZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUcmFja2luZyh5LCAhbUV4cGFuZGVkKTsvLyBvcGVuaW5nIGlmIHdlJ3JlIG5vdCBhbHJlYWR5IGZ1bGx5IHZpc2libGUKKyAgICAgICAgICAgICAgICAgICAgbVZlbG9jaXR5VHJhY2tlci5hZGRNb3ZlbWVudChldmVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG1UcmFja2luZykgeworICAgICAgICAgICAgbVZlbG9jaXR5VHJhY2tlci5hZGRNb3ZlbWVudChldmVudCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgbWluWSA9IHN0YXR1c0JhclNpemUgKyBtQ2xvc2VWaWV3LmdldEhlaWdodCgpOworICAgICAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKSB7CisgICAgICAgICAgICAgICAgaW50IHkgPSAoaW50KWV2ZW50LmdldFJhd1koKTsKKyAgICAgICAgICAgICAgICBpZiAobUFuaW1hdGluZ1JldmVhbCAmJiB5IDwgbWluWSkgeworICAgICAgICAgICAgICAgICAgICAvLyBub3RoaW5nCisgICAgICAgICAgICAgICAgfSBlbHNlICB7CisgICAgICAgICAgICAgICAgICAgIG1BbmltYXRpbmdSZXZlYWwgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKHkgKyBtVmlld0RlbHRhKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IE1vdGlvbkV2ZW50LkFDVElPTl9VUCkgeworICAgICAgICAgICAgICAgIG1WZWxvY2l0eVRyYWNrZXIuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxMDAwKTsKKworICAgICAgICAgICAgICAgIGZsb2F0IHlWZWwgPSBtVmVsb2NpdHlUcmFja2VyLmdldFlWZWxvY2l0eSgpOworICAgICAgICAgICAgICAgIGJvb2xlYW4gbmVnYXRpdmUgPSB5VmVsIDwgMDsKKworICAgICAgICAgICAgICAgIGZsb2F0IHhWZWwgPSBtVmVsb2NpdHlUcmFja2VyLmdldFhWZWxvY2l0eSgpOworICAgICAgICAgICAgICAgIGlmICh4VmVsIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB4VmVsID0gLXhWZWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh4VmVsID4gMTUwLjBmKSB7CisgICAgICAgICAgICAgICAgICAgIHhWZWwgPSAxNTAuMGY7IC8vIGxpbWl0IGhvdyBtdWNoIHdlIGNhcmUgYWJvdXQgdGhlIHggYXhpcworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZsb2F0IHZlbCA9IChmbG9hdClNYXRoLmh5cG90KHlWZWwsIHhWZWwpOworICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICB2ZWwgPSAtdmVsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHBlcmZvcm1GbGluZygoaW50KWV2ZW50LmdldFJhd1koKSwgdmVsLCBmYWxzZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBMYXVuY2hlciBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyIHsKKyAgICAgICAgcHJpdmF0ZSBQZW5kaW5nSW50ZW50IG1JbnRlbnQ7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIG1Qa2c7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIG1UYWc7CisgICAgICAgIHByaXZhdGUgaW50IG1JZDsKKworICAgICAgICBMYXVuY2hlcihQZW5kaW5nSW50ZW50IGludGVudCwgU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkKSB7CisgICAgICAgICAgICBtSW50ZW50ID0gaW50ZW50OworICAgICAgICAgICAgbVBrZyA9IHBrZzsKKyAgICAgICAgICAgIG1UYWcgPSB0YWc7CisgICAgICAgICAgICBtSWQgPSBpZDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBpbnRlbnQgd2UgYXJlIHNlbmRpbmcgaXMgZm9yIHRoZSBhcHBsaWNhdGlvbiwgd2hpY2gKKyAgICAgICAgICAgICAgICAvLyB3b24ndCBoYXZlIHBlcm1pc3Npb24gdG8gaW1tZWRpYXRlbHkgc3RhcnQgYW4gYWN0aXZpdHkgYWZ0ZXIKKyAgICAgICAgICAgICAgICAvLyB0aGUgdXNlciBzd2l0Y2hlcyB0byBob21lLiAgV2Uga25vdyBpdCBpcyBzYWZlIHRvIGRvIGF0IHRoaXMKKyAgICAgICAgICAgICAgICAvLyBwb2ludCwgc28gbWFrZSBzdXJlIG5ldyBhY3Rpdml0eSBzd2l0Y2hlcyBhcmUgbm93IGFsbG93ZWQuCisgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS5yZXN1bWVBcHBTd2l0Y2hlcygpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1JbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGludFtdIHBvcyA9IG5ldyBpbnRbMl07CisgICAgICAgICAgICAgICAgdi5nZXRMb2NhdGlvbk9uU2NyZWVuKHBvcyk7CisgICAgICAgICAgICAgICAgSW50ZW50IG92ZXJsYXkgPSBuZXcgSW50ZW50KCk7CisgICAgICAgICAgICAgICAgb3ZlcmxheS5zZXRTb3VyY2VCb3VuZHMoCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVjdChwb3NbMF0sIHBvc1sxXSwgcG9zWzBdK3YuZ2V0V2lkdGgoKSwgcG9zWzFdK3YuZ2V0SGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtSW50ZW50LnNlbmQoU3RhdHVzQmFyU2VydmljZS50aGlzLCAwLCBvdmVybGF5KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHN0YWNrIHRyYWNlIGlzbid0IHZlcnkgaGVscGZ1bCBoZXJlLiAgSnVzdCBsb2cgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiU2VuZGluZyBjb250ZW50SW50ZW50IGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBtQmFyU2VydmljZS5vbk5vdGlmaWNhdGlvbkNsaWNrKG1Qa2csIG1UYWcsIG1JZCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAvLyBzeXN0ZW0gcHJvY2VzcyBpcyBkZWFkIGlmIHdlJ3JlIGhlcmUuCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBzaGFkZSBpZiBpdCB3YXMgb3BlbgorICAgICAgICAgICAgYW5pbWF0ZUNvbGxhcHNlKCk7CisKKyAgICAgICAgICAgIC8vIElmIHRoaXMgY2xpY2sgd2FzIG9uIHRoZSBpbnRydWRlciBhbGVydCwgaGlkZSB0aGF0IGluc3RlYWQKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoTVNHX0hJREVfSU5UUlVERVIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHRpY2soU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4pIHsKKyAgICAgICAgLy8gU2hvdyB0aGUgdGlja2VyIGlmIG9uZSBpcyByZXF1ZXN0ZWQuIEFsc28gZG9uJ3QgZG8gdGhpcworICAgICAgICAvLyB1bnRpbCBzdGF0dXMgYmFyIHdpbmRvdyBpcyBhdHRhY2hlZCB0byB0aGUgd2luZG93IG1hbmFnZXIsCisgICAgICAgIC8vIGJlY2F1c2UuLi4gIHdlbGwsIHdoYXQncyB0aGUgcG9pbnQgb3RoZXJ3aXNlPyAgQW5kIHRyeWluZyB0bworICAgICAgICAvLyBydW4gYSB0aWNrZXIgd2l0aG91dCBiZWluZyBhdHRhY2hlZCB3aWxsIGNyYXNoIQorICAgICAgICBpZiAobi5ub3RpZmljYXRpb24udGlja2VyVGV4dCAhPSBudWxsICYmIG1TdGF0dXNCYXJWaWV3LmdldFdpbmRvd1Rva2VuKCkgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKDAgPT0gKG1EaXNhYmxlZCAmIChTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX1RJQ0tFUikpKSB7CisgICAgICAgICAgICAgICAgbVRpY2tlci5hZGRFbnRyeShuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbmNlbCB0aGlzIG5vdGlmaWNhdGlvbiBhbmQgdGVsbCB0aGUgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UgLyBOb3RpZmljYXRpb25NYW5hZ2VyU2VydmljZQorICAgICAqIGFib3V0IHRoZSBmYWlsdXJlLgorICAgICAqCisgICAgICogV0FSTklORzogdGhpcyB3aWxsIGNhbGwgYmFjayBpbnRvIHVzLiAgRG9uJ3QgaG9sZCBhbnkgbG9ja3MuCisgICAgICovCisgICAgdm9pZCBoYW5kbGVOb3RpZmljYXRpb25FcnJvcihJQmluZGVyIGtleSwgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4sIFN0cmluZyBtZXNzYWdlKSB7CisgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbihrZXkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUJhclNlcnZpY2Uub25Ob3RpZmljYXRpb25FcnJvcihuLnBrZywgbi50YWcsIG4uaWQsIG4udWlkLCBuLmluaXRpYWxQaWQsIG1lc3NhZ2UpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIC8vIFRoZSBlbmQgaXMgbmlnaC4KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgTXlUaWNrZXIgZXh0ZW5kcyBUaWNrZXIgeworICAgICAgICBNeVRpY2tlcihDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclZpZXcgc2IpIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHNiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICB2b2lkIHRpY2tlclN0YXJ0aW5nKCkgeworICAgICAgICAgICAgbVRpY2tpbmcgPSB0cnVlOworICAgICAgICAgICAgbUljb25zLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1UaWNrZXJWaWV3LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1UaWNrZXJWaWV3LnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX2luLCBudWxsKSk7CisgICAgICAgICAgICBtSWNvbnMuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLnB1c2hfdXBfb3V0LCBudWxsKSk7CisgICAgICAgICAgICBpZiAobUV4cGFuZGVkVmlzaWJsZSkgeworICAgICAgICAgICAgICAgIHNldERhdGVWaWV3VmlzaWJpbGl0eShmYWxzZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLnB1c2hfdXBfb3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICB2b2lkIHRpY2tlckRvbmUoKSB7CisgICAgICAgICAgICBtSWNvbnMuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVRpY2tlclZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgbUljb25zLnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX2Rvd25faW4sIG51bGwpKTsKKyAgICAgICAgICAgIG1UaWNrZXJWaWV3LnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX2Rvd25fb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgbVRpY2tpbmdEb25lTGlzdGVuZXIpKTsKKyAgICAgICAgICAgIGlmIChtRXhwYW5kZWRWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KHRydWUsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX2Rvd25faW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0aWNrZXJIYWx0aW5nKCkgeworICAgICAgICAgICAgbUljb25zLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1UaWNrZXJWaWV3LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1JY29ucy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbiwgbnVsbCkpOworICAgICAgICAgICAgbVRpY2tlclZpZXcuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgbVRpY2tpbmdEb25lTGlzdGVuZXIpKTsKKyAgICAgICAgICAgIGlmIChtRXhwYW5kZWRWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KHRydWUsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX2luKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciBtVGlja2luZ0RvbmVMaXN0ZW5lciA9IG5ldyBBbmltYXRpb24uQW5pbWF0aW9uTGlzdGVuZXIoKSB7OworICAgICAgICBwdWJsaWMgdm9pZCBvbkFuaW1hdGlvbkVuZChBbmltYXRpb24gYW5pbWF0aW9uKSB7CisgICAgICAgICAgICBtVGlja2luZyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIG9uQW5pbWF0aW9uUmVwZWF0KEFuaW1hdGlvbiBhbmltYXRpb24pIHsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBvbkFuaW1hdGlvblN0YXJ0KEFuaW1hdGlvbiBhbmltYXRpb24pIHsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIEFuaW1hdGlvbiBsb2FkQW5pbShpbnQgaWQsIEFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICBBbmltYXRpb24gYW5pbSA9IEFuaW1hdGlvblV0aWxzLmxvYWRBbmltYXRpb24oU3RhdHVzQmFyU2VydmljZS50aGlzLCBpZCk7CisgICAgICAgIGlmIChsaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICBhbmltLnNldEFuaW1hdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYW5pbTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHZpZXdJbmZvKFZpZXcgdikgeworICAgICAgICByZXR1cm4gIigiICsgdi5nZXRMZWZ0KCkgKyAiLCIgKyB2LmdldFRvcCgpICsgIikoIiArIHYuZ2V0UmlnaHQoKSArICIsIiArIHYuZ2V0Qm90dG9tKCkKKyAgICAgICAgICAgICAgICArICIgIiArIHYuZ2V0V2lkdGgoKSArICJ4IiArIHYuZ2V0SGVpZ2h0KCkgKyAiKSI7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgZHVtcChGaWxlRGVzY3JpcHRvciBmZCwgUHJpbnRXcml0ZXIgcHcsIFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgaWYgKGNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkRVTVApCisgICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7CisgICAgICAgICAgICBwdy5wcmludGxuKCJQZXJtaXNzaW9uIERlbmlhbDogY2FuJ3QgZHVtcCBTdGF0dXNCYXIgZnJvbSBmcm9tIHBpZD0iCisgICAgICAgICAgICAgICAgICAgICsgQmluZGVyLmdldENhbGxpbmdQaWQoKQorICAgICAgICAgICAgICAgICAgICArICIsIHVpZD0iICsgQmluZGVyLmdldENhbGxpbmdVaWQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1RdWV1ZUxvY2spIHsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIkN1cnJlbnQgU3RhdHVzIEJhciBzdGF0ZToiKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkPSIgKyBtRXhwYW5kZWQKKyAgICAgICAgICAgICAgICAgICAgKyAiLCBtRXhwYW5kZWRWaXNpYmxlPSIgKyBtRXhwYW5kZWRWaXNpYmxlKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRpY2tpbmc9IiArIG1UaWNraW5nKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nPSIgKyBtVHJhY2tpbmcpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBtQW5pbWF0aW5nPSIgKyBtQW5pbWF0aW5nCisgICAgICAgICAgICAgICAgICAgICsgIiwgbUFuaW1ZPSIgKyBtQW5pbVkgKyAiLCBtQW5pbVZlbD0iICsgbUFuaW1WZWwKKyAgICAgICAgICAgICAgICAgICAgKyAiLCBtQW5pbUFjY2VsPSIgKyBtQW5pbUFjY2VsKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUN1ckFuaW1hdGlvblRpbWU9IiArIG1DdXJBbmltYXRpb25UaW1lCisgICAgICAgICAgICAgICAgICAgICsgIiBtQW5pbUxhc3RUaW1lPSIgKyBtQW5pbUxhc3RUaW1lKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbURpc3BsYXlIZWlnaHQ9IiArIG1EaXNwbGF5SGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICsgIiBtQW5pbWF0aW5nUmV2ZWFsPSIgKyBtQW5pbWF0aW5nUmV2ZWFsCisgICAgICAgICAgICAgICAgICAgICsgIiBtVmlld0RlbHRhPSIgKyBtVmlld0RlbHRhKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbURpc3BsYXlIZWlnaHQ9IiArIG1EaXNwbGF5SGVpZ2h0KTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkUGFyYW1zOiAiICsgbUV4cGFuZGVkUGFyYW1zKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkVmlldzogIiArIHZpZXdJbmZvKG1FeHBhbmRlZFZpZXcpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkRGlhbG9nOiAiICsgbUV4cGFuZGVkRGlhbG9nKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nUGFyYW1zOiAiICsgbVRyYWNraW5nUGFyYW1zKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nVmlldzogIiArIHZpZXdJbmZvKG1UcmFja2luZ1ZpZXcpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbU9uZ29pbmdUaXRsZTogIiArIHZpZXdJbmZvKG1PbmdvaW5nVGl0bGUpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbU9uZ29pbmdJdGVtczogIiArIHZpZXdJbmZvKG1PbmdvaW5nSXRlbXMpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUxhdGVzdFRpdGxlOiAiICsgdmlld0luZm8obUxhdGVzdFRpdGxlKSk7CisgICAgICAgICAgICBwdy5wcmludGxuKCIgIG1MYXRlc3RJdGVtczogIiArIHZpZXdJbmZvKG1MYXRlc3RJdGVtcykpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBtTm9Ob3RpZmljYXRpb25zVGl0bGU6ICIgKyB2aWV3SW5mbyhtTm9Ob3RpZmljYXRpb25zVGl0bGUpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUNsb3NlVmlldzogIiArIHZpZXdJbmZvKG1DbG9zZVZpZXcpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRpY2tlclZpZXc6ICIgKyB2aWV3SW5mbyhtVGlja2VyVmlldykpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBtU2Nyb2xsVmlldzogIiArIHZpZXdJbmZvKG1TY3JvbGxWaWV3KQorICAgICAgICAgICAgICAgICAgICArICIgc2Nyb2xsICIgKyBtU2Nyb2xsVmlldy5nZXRTY3JvbGxYKCkgKyAiLCIgKyBtU2Nyb2xsVmlldy5nZXRTY3JvbGxZKCkpOworICAgICAgICAgICAgcHcucHJpbnRsbigibU5vdGlmaWNhdGlvbkxpbmVhckxheW91dDogIiArIHZpZXdJbmZvKG1Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQpKTsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25EYXRhKSB7CisgICAgICAgICAgICBpbnQgTiA9IG1Ob3RpZmljYXRpb25EYXRhLm9uZ29pbmdDb3VudCgpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBvbmdvaW5nQ291bnQuc2l6ZT0iICsgTik7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4gPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRPbmdvaW5nKGkpOworICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgICBbIiArIGkgKyAiXSBrZXk9IiArIG4ua2V5ICsgIiB2aWV3PSIgKyBuLnZpZXcpOworICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgICAgICAgICAgZGF0YT0iICsgbi5kYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE4gPSBtTm90aWZpY2F0aW9uRGF0YS5sYXRlc3RDb3VudCgpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBvbmdvaW5nQ291bnQuc2l6ZT0iICsgTik7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4gPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRMYXRlc3QoaSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgIFsiICsgaSArICJdIGtleT0iICsgbi5rZXkgKyAiIHZpZXc9IiArIG4udmlldyk7CisgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgICAgICAgICBkYXRhPSIgKyBuLmRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICovCisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBwdy5wcmludGxuKCJzZWUgdGhlIGxvZ2NhdCBmb3IgYSBkdW1wIG9mIHRoZSB2aWV3cyB3ZSBoYXZlIGNyZWF0ZWQuIik7CisgICAgICAgICAgICAvLyBtdXN0IGhhcHBlbiBvbiB1aSB0aHJlYWQKKyAgICAgICAgICAgIG1IYW5kbGVyLnBvc3QobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyVmlldy5nZXRMb2NhdGlvbk9uU2NyZWVuKG1BYnNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1TdGF0dXNCYXJWaWV3OiAtLS0tLSAoIiArIG1BYnNQb3NbMF0gKyAiLCIgKyBtQWJzUG9zWzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIikgIiArIG1TdGF0dXNCYXJWaWV3LmdldFdpZHRoKCkgKyAieCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyVmlldy5kZWJ1ZygpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtRXhwYW5kZWRWaWV3LmdldExvY2F0aW9uT25TY3JlZW4obUFic1Bvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAibUV4cGFuZGVkVmlldzogLS0tLS0gKCIgKyBtQWJzUG9zWzBdICsgIiwiICsgbUFic1Bvc1sxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIpICIgKyBtRXhwYW5kZWRWaWV3LmdldFdpZHRoKCkgKyAieCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtRXhwYW5kZWRWaWV3LmdldEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1FeHBhbmRlZFZpZXcuZGVidWcoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbVRyYWNraW5nVmlldy5nZXRMb2NhdGlvbk9uU2NyZWVuKG1BYnNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1UcmFja2luZ1ZpZXc6IC0tLS0tICgiICsgbUFic1Bvc1swXSArICIsIiArIG1BYnNQb3NbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSAiICsgbVRyYWNraW5nVmlldy5nZXRXaWR0aCgpICsgIngiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbVRyYWNraW5nVmlldy5nZXRIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtVHJhY2tpbmdWaWV3LmRlYnVnKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb25CYXJWaWV3QXR0YWNoZWQoKSB7CisgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwOworICAgICAgICBpbnQgcGl4ZWxGb3JtYXQ7CisgICAgICAgIERyYXdhYmxlIGJnOworCisgICAgICAgIC8vLyAtLS0tLS0tLS0tIFRyYWNraW5nIFZpZXcgLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgcGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdC5SR0JYXzg4ODg7CisgICAgICAgIGJnID0gbVRyYWNraW5nVmlldy5nZXRCYWNrZ3JvdW5kKCk7CisgICAgICAgIGlmIChiZyAhPSBudWxsKSB7CisgICAgICAgICAgICBwaXhlbEZvcm1hdCA9IGJnLmdldE9wYWNpdHkoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxwID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKAorICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAorICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1RBVFVTX0JBUl9QQU5FTCwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9JTl9TQ1JFRU4KKyAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX05PX0xJTUlUUworICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNLAorICAgICAgICAgICAgICAgIHBpeGVsRm9ybWF0KTsKKy8vICAgICAgICBscC50b2tlbiA9IG1TdGF0dXNCYXJWaWV3LmdldFdpbmRvd1Rva2VuKCk7CisgICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOworICAgICAgICBscC5zZXRUaXRsZSgiVHJhY2tpbmdWaWV3Iik7CisgICAgICAgIGxwLnkgPSBtVHJhY2tpbmdQb3NpdGlvbjsKKyAgICAgICAgbVRyYWNraW5nUGFyYW1zID0gbHA7CisKKyAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLmFkZFZpZXcobVRyYWNraW5nVmlldywgbHApOworICAgIH0KKworICAgIHZvaWQgb25UcmFja2luZ1ZpZXdBdHRhY2hlZCgpIHsKKyAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHA7CisgICAgICAgIGludCBwaXhlbEZvcm1hdDsKKyAgICAgICAgRHJhd2FibGUgYmc7CisKKyAgICAgICAgLy8vIC0tLS0tLS0tLS0gRXhwYW5kZWQgVmlldyAtLS0tLS0tLS0tLS0tLQorICAgICAgICBwaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0LlRSQU5TTFVDRU5UOworCisgICAgICAgIGZpbmFsIGludCBkaXNwaCA9IG1EaXNwbGF5LmdldEhlaWdodCgpOworICAgICAgICBscCA9IG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgIGxwLndpZHRoID0gVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQ7CisgICAgICAgIGxwLmhlaWdodCA9IGdldEV4cGFuZGVkSGVpZ2h0KCk7CisgICAgICAgIGxwLnggPSAwOworICAgICAgICBtVHJhY2tpbmdQb3NpdGlvbiA9IGxwLnkgPSAtZGlzcGg7IC8vIHN1ZmZpY2llbnRseSBsYXJnZSBuZWdhdGl2ZQorICAgICAgICBscC50eXBlID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSX1BBTkVMOworICAgICAgICBscC5mbGFncyA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX0lOX1NDUkVFTgorICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfTk9fTElNSVRTCisgICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9UT1VDSF9NT0RBTAorICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19ESVRIRVIKKyAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRTsKKyAgICAgICAgbHAuZm9ybWF0ID0gcGl4ZWxGb3JtYXQ7CisgICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOworICAgICAgICBscC5zZXRUaXRsZSgiU3RhdHVzQmFyRXhwYW5kZWQiKTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobHApOworICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0Rm9ybWF0KHBpeGVsRm9ybWF0KTsKKyAgICAgICAgbUV4cGFuZGVkUGFyYW1zID0gbHA7CisKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnJlcXVlc3RGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX05PX1RJVExFKTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLnNldENvbnRlbnRWaWV3KG1FeHBhbmRlZFZpZXcsCisgICAgICAgICAgICAgICAgbmV3IFZpZXdHcm91cC5MYXlvdXRQYXJhbXMoVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpKTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEJhY2tncm91bmREcmF3YWJsZShudWxsKTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLnNob3coKTsKKyAgICAgICAgRnJhbWVMYXlvdXQgaGFjayA9IChGcmFtZUxheW91dCltRXhwYW5kZWRWaWV3LmdldFBhcmVudCgpOworICAgIH0KKworICAgIHZvaWQgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KGJvb2xlYW4gdmlzaWJsZSwgaW50IGFuaW0pIHsKKyAgICAgICAgbURhdGVWaWV3LnNldFVwZGF0ZXModmlzaWJsZSk7CisgICAgICAgIG1EYXRlVmlldy5zZXRWaXNpYmlsaXR5KHZpc2libGUgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRSk7CisgICAgICAgIG1EYXRlVmlldy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShhbmltLCBudWxsKSk7CisgICAgfQorCisgICAgdm9pZCBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eShib29sZWFuIHZpc2libGUsIGludCBhbmltKSB7CisgICAgICAgIGludCBvbGQgPSBtTm90aWZpY2F0aW9uSWNvbnMuZ2V0VmlzaWJpbGl0eSgpOworICAgICAgICBpbnQgdiA9IHZpc2libGUgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRTsKKyAgICAgICAgaWYgKG9sZCAhPSB2KSB7CisgICAgICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuc2V0VmlzaWJpbGl0eSh2KTsKKyAgICAgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShhbmltLCBudWxsKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhpbnQgZXhwYW5kZWRQb3NpdGlvbikgeworICAgICAgICBpZiAoU1BFVykgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgInVwZGF0ZUV4cGFuZGVkVmlld1BvcyBiZWZvcmUgZXhwYW5kZWRQb3NpdGlvbj0iICsgZXhwYW5kZWRQb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICArICIgbVRyYWNraW5nUGFyYW1zLnk9IiArIG1UcmFja2luZ1BhcmFtcy55CisgICAgICAgICAgICAgICAgICAgICsgIiBtVHJhY2tpbmdQb3NpdGlvbj0iICsgbVRyYWNraW5nUG9zaXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaW50IGggPSBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKTsKKyAgICAgICAgaW50IGRpc3BoID0gbURpc3BsYXkuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgLy8gSWYgdGhlIGV4cGFuZGVkIHZpZXcgaXMgbm90IHZpc2libGUsIG1ha2Ugc3VyZSB0aGV5J3JlIHN0aWxsIG9mZiBzY3JlZW4uCisgICAgICAgIC8vIE1heWJlIHRoZSB2aWV3IHdhcyByZXNpemVkLgorICAgICAgICBpZiAoIW1FeHBhbmRlZFZpc2libGUpIHsKKyAgICAgICAgICAgIGlmIChtVHJhY2tpbmdWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtVHJhY2tpbmdQb3NpdGlvbiA9IC1kaXNwaDsKKyAgICAgICAgICAgICAgICBpZiAobVRyYWNraW5nUGFyYW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVRyYWNraW5nUGFyYW1zLnkgPSBtVHJhY2tpbmdQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLnVwZGF0ZVZpZXdMYXlvdXQobVRyYWNraW5nVmlldywgbVRyYWNraW5nUGFyYW1zKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUV4cGFuZGVkUGFyYW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IC1kaXNwaDsKKyAgICAgICAgICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0QXR0cmlidXRlcyhtRXhwYW5kZWRQYXJhbXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gdHJhY2tpbmcgdmlldy4uLgorICAgICAgICBpbnQgcG9zOworICAgICAgICBpZiAoZXhwYW5kZWRQb3NpdGlvbiA9PSBFWFBBTkRFRF9GVUxMX09QRU4pIHsKKyAgICAgICAgICAgIHBvcyA9IGg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXhwYW5kZWRQb3NpdGlvbiA9PSBFWFBBTkRFRF9MRUFWRV9BTE9ORSkgeworICAgICAgICAgICAgcG9zID0gbVRyYWNraW5nUG9zaXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoZXhwYW5kZWRQb3NpdGlvbiA8PSBkaXNwaCkgeworICAgICAgICAgICAgICAgIHBvcyA9IGV4cGFuZGVkUG9zaXRpb247CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBvcyA9IGRpc3BoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zIC09IGRpc3BoLWg7CisgICAgICAgIH0KKyAgICAgICAgbVRyYWNraW5nUG9zaXRpb24gPSBtVHJhY2tpbmdQYXJhbXMueSA9IHBvczsKKyAgICAgICAgbVRyYWNraW5nUGFyYW1zLmhlaWdodCA9IGRpc3BoLWg7CisgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKS51cGRhdGVWaWV3TGF5b3V0KG1UcmFja2luZ1ZpZXcsIG1UcmFja2luZ1BhcmFtcyk7CisKKyAgICAgICAgaWYgKG1FeHBhbmRlZFBhcmFtcyAhPSBudWxsKSB7CisgICAgICAgICAgICBtQ2xvc2VWaWV3LmdldExvY2F0aW9uSW5XaW5kb3cobVBvc2l0aW9uVG1wKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBjbG9zZVBvcyA9IG1Qb3NpdGlvblRtcFsxXTsKKworICAgICAgICAgICAgbUV4cGFuZGVkQ29udGVudHMuZ2V0TG9jYXRpb25JbldpbmRvdyhtUG9zaXRpb25UbXApOworICAgICAgICAgICAgZmluYWwgaW50IGNvbnRlbnRzQm90dG9tID0gbVBvc2l0aW9uVG1wWzFdICsgbUV4cGFuZGVkQ29udGVudHMuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgICAgIG1FeHBhbmRlZFBhcmFtcy55ID0gcG9zICsgbVRyYWNraW5nVmlldy5nZXRIZWlnaHQoKQorICAgICAgICAgICAgICAgICAgICAtIChtVHJhY2tpbmdQYXJhbXMuaGVpZ2h0LWNsb3NlUG9zKSAtIGNvbnRlbnRzQm90dG9tOworICAgICAgICAgICAgaW50IG1heCA9IGg7CisgICAgICAgICAgICBpZiAobUV4cGFuZGVkUGFyYW1zLnkgPiBtYXgpIHsKKyAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IG1heDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBtaW4gPSBtVHJhY2tpbmdQb3NpdGlvbjsKKyAgICAgICAgICAgIGlmIChtRXhwYW5kZWRQYXJhbXMueSA8IG1pbikgeworICAgICAgICAgICAgICAgIG1FeHBhbmRlZFBhcmFtcy55ID0gbWluOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sZWFuIHZpc2libGUgPSAobVRyYWNraW5nUG9zaXRpb24gKyBtVHJhY2tpbmdWaWV3LmdldEhlaWdodCgpKSA+IGg7CisgICAgICAgICAgICBpZiAoIXZpc2libGUpIHsKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY29udGVudHMgYXJlbid0IHZpc2libGUsIG1vdmUgdGhlIGV4cGFuZGVkIHZpZXcgd2F5IG9mZiBzY3JlZW4KKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZSB3aW5kb3cgaXRzZWxmIGV4dGVuZHMgYmVsb3cgdGhlIGNvbnRlbnQgdmlldy4KKyAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IC1kaXNwaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5zZXRBdHRyaWJ1dGVzKG1FeHBhbmRlZFBhcmFtcyk7CisKKyAgICAgICAgICAgIC8vIEFzIGxvbmcgYXMgdGhpcyBpc24ndCBqdXN0IGEgcmVwb3NpdGlvbmluZyB0aGF0J3Mgbm90IHN1cHBvc2VkIHRvIGFmZmVjdAorICAgICAgICAgICAgLy8gdGhlIHVzZXIncyBwZXJjZXB0aW9uIG9mIHdoYXQncyBzaG93aW5nLCBjYWxsIHRvIHNheSB0aGF0IHRoZSB2aXNpYmlsaXR5CisgICAgICAgICAgICAvLyBoYXMgY2hhbmdlZC4gKE90aGVyd2lzZSwgc29tZW9uZSBlbHNlIHdpbGwgY2FsbCB0byBkbyB0aGF0KS4KKyAgICAgICAgICAgIGlmIChleHBhbmRlZFBvc2l0aW9uICE9IEVYUEFOREVEX0xFQVZFX0FMT05FKSB7CisgICAgICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJ1cGRhdGVFeHBhbmRlZFZpZXdQb3MgdmlzaWJpbGl0eUNoYW5nZWQoIiArIHZpc2libGUgKyAiKSIpOworICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDaGFuZ2VkKHZpc2libGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKFNQRVcpIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVFeHBhbmRlZFZpZXdQb3MgYWZ0ZXIgIGV4cGFuZGVkUG9zaXRpb249IiArIGV4cGFuZGVkUG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgKyAiIG1UcmFja2luZ1BhcmFtcy55PSIgKyBtVHJhY2tpbmdQYXJhbXMueQorICAgICAgICAgICAgICAgICAgICArICIgbVRyYWNraW5nUG9zaXRpb249IiArIG1UcmFja2luZ1Bvc2l0aW9uCisgICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWRQYXJhbXMueT0iICsgbUV4cGFuZGVkUGFyYW1zLnkKKyAgICAgICAgICAgICAgICAgICAgKyAiIG1FeHBhbmRlZFBhcmFtcy5oZWlnaHQ9IiArIG1FeHBhbmRlZFBhcmFtcy5oZWlnaHQpOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGdldEV4cGFuZGVkSGVpZ2h0KCkgeworICAgICAgICByZXR1cm4gbURpc3BsYXkuZ2V0SGVpZ2h0KCkgLSBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKSAtIG1DbG9zZVZpZXcuZ2V0SGVpZ2h0KCk7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVFeHBhbmRlZEhlaWdodCgpIHsKKyAgICAgICAgaWYgKG1FeHBhbmRlZFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgbUV4cGFuZGVkUGFyYW1zLmhlaWdodCA9IGdldEV4cGFuZGVkSGVpZ2h0KCk7CisgICAgICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0QXR0cmlidXRlcyhtRXhwYW5kZWRQYXJhbXMpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIExFRHMgYXJlIHR1cm5lZCBvKWZmIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBwYW5lbCBpcyBzaG93biwgZXZlbiBqdXN0IGEgbGl0dGxlIGJpdC4KKyAgICAgKiBUaGlzIHdhcyBhZGRlZCBsYXN0LW1pbnV0ZSBhbmQgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIHdheSB0aGUgcmVzdCBvZiB0aGUgbm90aWZpY2F0aW9ucworICAgICAqIGFyZSBoYW5kbGVkLCBiZWNhdXNlIHRoZSBub3RpZmljYXRpb24gaXNuJ3QgcmVhbGx5IGNhbmNlbGxlZC4gIFRoZSBsaWdodHMgYXJlIGp1c3QKKyAgICAgKiB0dXJuZWQgb2ZmLiAgSWYgYW55IG90aGVyIG5vdGlmaWNhdGlvbnMgaGFwcGVuLCB0aGUgbGlnaHRzIHdpbGwgdHVybiBiYWNrIG9uLiAgU3RldmUgc2F5cworICAgICAqIHRoaXMgaXMgd2hhdCBoZSB3YW50cy4gKHNlZSBidWcgMTEzMTQ2MSkKKyAgICAgKi8KKyAgICB2b2lkIHZpc2liaWxpdHlDaGFuZ2VkKGJvb2xlYW4gdmlzaWJsZSkgeworICAgICAgICBpZiAobVBhbmVsU2xpZ2h0bHlWaXNpYmxlICE9IHZpc2libGUpIHsKKyAgICAgICAgICAgIG1QYW5lbFNsaWdodGx5VmlzaWJsZSA9IHZpc2libGU7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1CYXJTZXJ2aWNlLm9uUGFuZWxSZXZlYWxlZCgpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgLy8gV29uJ3QgZmFpbCB1bmxlc3MgdGhlIHdvcmxkIGhhcyBlbmRlZC4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcGVyZm9ybURpc2FibGVBY3Rpb25zKGludCBuZXQpIHsKKyAgICAgICAgaW50IG9sZCA9IG1EaXNhYmxlZDsKKyAgICAgICAgaW50IGRpZmYgPSBuZXQgXiBvbGQ7CisgICAgICAgIG1EaXNhYmxlZCA9IG5ldDsKKworICAgICAgICAvLyBhY3QgYWNjb3JkaW5nbHkKKyAgICAgICAgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCkgIT0gMCkgeworICAgICAgICAgICAgaWYgKChuZXQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfRVhQQU5EOiB5ZXMiKTsKKyAgICAgICAgICAgICAgICBhbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoKGRpZmYgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKG5ldCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fSUNPTlMpICE9IDApIHsKKyAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAiRElTQUJMRV9OT1RJRklDQVRJT05fSUNPTlM6IHllcyIpOworICAgICAgICAgICAgICAgIGlmIChtVGlja2luZykgeworICAgICAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7CisgICAgICAgICAgICAgICAgICAgIG1UaWNrZXIuaGFsdCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbkljb25WaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TOiBubyIpOworICAgICAgICAgICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChtVGlja2luZyAmJiAobmV0ICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpICE9IDApIHsKKyAgICAgICAgICAgICAgICBtVGlja2VyLmhhbHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgVmlldy5PbkNsaWNrTGlzdGVuZXIgbUNsZWFyQnV0dG9uTGlzdGVuZXIgPSBuZXcgVmlldy5PbkNsaWNrTGlzdGVuZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1CYXJTZXJ2aWNlLm9uQ2xlYXJBbGxOb3RpZmljYXRpb25zKCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAvLyBzeXN0ZW0gcHJvY2VzcyBpcyBkZWFkIGlmIHdlJ3JlIGhlcmUuCisgICAgICAgICAgICB9CisgICAgICAgICAgICBhbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1Ccm9hZGNhc3RSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnRlbnQuQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTLmVxdWFscyhhY3Rpb24pCisgICAgICAgICAgICAgICAgICAgIHx8IEludGVudC5BQ1RJT05fU0NSRUVOX09GRi5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgIC8vY29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKEludGVudC5BQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VELmVxdWFscyhhY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVzb3VyY2VzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSB2b2lkIHNldEludHJ1ZGVyQWxlcnRWaXNpYmlsaXR5KGJvb2xlYW4gdmlzKSB7CisgICAgICAgIG1JbnRydWRlckFsZXJ0Vmlldy5zZXRWaXNpYmlsaXR5KHZpcyA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVsb2FkIHNvbWUgb2Ygb3VyIHJlc291cmNlcyB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMuCisgICAgICoKKyAgICAgKiBXZSBkb24ndCByZWxvYWQgZXZlcnl0aGluZyB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgLS0gd2UgcHJvYmFibHkKKyAgICAgKiBzaG91bGQsIGJ1dCBnZXR0aW5nIHRoYXQgc21vb3RoIGlzIHRvdWdoLiAgU29tZWRheSB3ZSdsbCBmaXggdGhhdC4gIEluIHRoZQorICAgICAqIG1lYW50aW1lLCBqdXN0IHVwZGF0ZSB0aGUgdGhpbmdzIHRoYXQgd2Uga25vdyBjaGFuZ2UuCisgICAgICovCisgICAgdm9pZCB1cGRhdGVSZXNvdXJjZXMoKSB7CisgICAgICAgIFJlc291cmNlcyByZXMgPSBnZXRSZXNvdXJjZXMoKTsKKworICAgICAgICBtQ2xlYXJCdXR0b24uc2V0VGV4dChnZXRUZXh0KFIuc3RyaW5nLnN0YXR1c19iYXJfY2xlYXJfYWxsX2J1dHRvbikpOworICAgICAgICBtT25nb2luZ1RpdGxlLnNldFRleHQoZ2V0VGV4dChSLnN0cmluZy5zdGF0dXNfYmFyX29uZ29pbmdfZXZlbnRzX3RpdGxlKSk7CisgICAgICAgIG1MYXRlc3RUaXRsZS5zZXRUZXh0KGdldFRleHQoUi5zdHJpbmcuc3RhdHVzX2Jhcl9sYXRlc3RfZXZlbnRzX3RpdGxlKSk7CisgICAgICAgIG1Ob05vdGlmaWNhdGlvbnNUaXRsZS5zZXRUZXh0KGdldFRleHQoUi5zdHJpbmcuc3RhdHVzX2Jhcl9ub19ub3RpZmljYXRpb25zX3RpdGxlKSk7CisKKyAgICAgICAgbUVkZ2VCb3JkZXIgPSByZXMuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKFIuZGltZW4uc3RhdHVzX2Jhcl9lZGdlX2lnbm9yZSk7CisKKyAgICAgICAgaWYgKGZhbHNlKSBTbG9nLnYoVEFHLCAidXBkYXRlUmVzb3VyY2VzIik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyB0cmFjaW5nCisgICAgLy8KKworICAgIHZvaWQgcG9zdFN0YXJ0VHJhY2luZygpIHsKKyAgICAgICAgbUhhbmRsZXIucG9zdERlbGF5ZWQobVN0YXJ0VHJhY2luZywgMzAwMCk7CisgICAgfQorCisgICAgdm9pZCB2aWJyYXRlKCkgeworICAgICAgICBhbmRyb2lkLm9zLlZpYnJhdG9yIHZpYiA9IChhbmRyb2lkLm9zLlZpYnJhdG9yKWdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5WSUJSQVRPUl9TRVJWSUNFKTsKKyAgICAgICAgdmliLnZpYnJhdGUoMjUwKTsKKyAgICB9CisKKyAgICBSdW5uYWJsZSBtU3RhcnRUcmFjaW5nID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICB2aWJyYXRlKCk7CisgICAgICAgICAgICBTeXN0ZW1DbG9jay5zbGVlcCgyNTApOworICAgICAgICAgICAgU2xvZy5kKFRBRywgInN0YXJ0VHJhY2luZyIpOworICAgICAgICAgICAgYW5kcm9pZC5vcy5EZWJ1Zy5zdGFydE1ldGhvZFRyYWNpbmcoIi9kYXRhL3N0YXR1c2Jhci10cmFjZXMvdHJhY2UiKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnBvc3REZWxheWVkKG1TdG9wVHJhY2luZywgMTAwMDApOworICAgICAgICB9CisgICAgfTsKKworICAgIFJ1bm5hYmxlIG1TdG9wVHJhY2luZyA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgYW5kcm9pZC5vcy5EZWJ1Zy5zdG9wTWV0aG9kVHJhY2luZygpOworICAgICAgICAgICAgU2xvZy5kKFRBRywgInN0b3BUcmFjaW5nIik7CisgICAgICAgICAgICB2aWJyYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0JhclZpZXcuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvU3RhdHVzQmFyVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMTQwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0JhclZpZXcuamF2YQpAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld1BhcmVudDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CisKK3B1YmxpYyBjbGFzcyBTdGF0dXNCYXJWaWV3IGV4dGVuZHMgRnJhbWVMYXlvdXQgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RhdHVzQmFyVmlldyI7CisKKyAgICBzdGF0aWMgZmluYWwgaW50IERJTV9BTklNX1RJTUUgPSA0MDA7CisgICAgCisgICAgU3RhdHVzQmFyU2VydmljZSBtU2VydmljZTsKKyAgICBib29sZWFuIG1UcmFja2luZzsKKyAgICBpbnQgbVN0YXJ0WCwgbVN0YXJ0WTsKKyAgICBWaWV3R3JvdXAgbU5vdGlmaWNhdGlvbkljb25zOworICAgIFZpZXdHcm91cCBtU3RhdHVzSWNvbnM7CisgICAgVmlldyBtRGF0ZTsKKyAgICBGaXhlZFNpemVEcmF3YWJsZSBtQmFja2dyb3VuZDsKKyAgICAKKyAgICBib29sZWFuIG1OaWdodE1vZGUgPSBmYWxzZTsKKyAgICBpbnQgbVN0YXJ0QWxwaGEgPSAwLCBtRW5kQWxwaGEgPSAwOworICAgIGxvbmcgbUVuZFRpbWUgPSAwOworCisgICAgcHVibGljIFN0YXR1c0JhclZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uRmluaXNoSW5mbGF0ZSgpIHsKKyAgICAgICAgc3VwZXIub25GaW5pc2hJbmZsYXRlKCk7CisgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucyA9IChWaWV3R3JvdXApZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uSWNvbnMpOworICAgICAgICBtU3RhdHVzSWNvbnMgPSAoVmlld0dyb3VwKWZpbmRWaWV3QnlJZChSLmlkLnN0YXR1c0ljb25zKTsKKyAgICAgICAgbURhdGUgPSBmaW5kVmlld0J5SWQoUi5pZC5kYXRlKTsKKworICAgICAgICBtQmFja2dyb3VuZCA9IG5ldyBGaXhlZFNpemVEcmF3YWJsZShtRGF0ZS5nZXRCYWNrZ3JvdW5kKCkpOworICAgICAgICBtQmFja2dyb3VuZC5zZXRGaXhlZEJvdW5kcygwLCAwLCAwLCAwKTsKKyAgICAgICAgbURhdGUuc2V0QmFja2dyb3VuZERyYXdhYmxlKG1CYWNrZ3JvdW5kKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOworICAgICAgICBtU2VydmljZS5vbkJhclZpZXdBdHRhY2hlZCgpOworICAgIH0KKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnKSB7CisgICAgICAgIHN1cGVyLm9uQ29uZmlndXJhdGlvbkNoYW5nZWQobmV3Q29uZmlnKTsKKyAgICAgICAgYm9vbGVhbiBuaWdodE1vZGUgPSAobmV3Q29uZmlnLnVpTW9kZSAmIENvbmZpZ3VyYXRpb24uVUlfTU9ERV9OSUdIVF9NQVNLKQorICAgICAgICAgICAgICAgID09IENvbmZpZ3VyYXRpb24uVUlfTU9ERV9OSUdIVF9ZRVM7CisgICAgICAgIGlmIChtTmlnaHRNb2RlICE9IG5pZ2h0TW9kZSkgeworICAgICAgICAgICAgbU5pZ2h0TW9kZSA9IG5pZ2h0TW9kZTsKKyAgICAgICAgICAgIG1TdGFydEFscGhhID0gZ2V0Q3VyQWxwaGEoKTsKKyAgICAgICAgICAgIG1FbmRBbHBoYSA9IG1OaWdodE1vZGUgPyAweDgwIDogMHgwMDsKKyAgICAgICAgICAgIG1FbmRUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkgKyBESU1fQU5JTV9USU1FOworICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGdldEN1ckFscGhhKCkgeworICAgICAgICBsb25nIHRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgaWYgKHRpbWUgPiBtRW5kVGltZSkgeworICAgICAgICAgICAgcmV0dXJuIG1FbmRBbHBoYTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbUVuZEFscGhhCisgICAgICAgICAgICAgICAgLSAoaW50KSgoKG1FbmRBbHBoYS1tU3RhcnRBbHBoYSkgKiAobUVuZFRpbWUtdGltZSkgLyBESU1fQU5JTV9USU1FKSk7CisgICAgfQorICAgIAorICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uU2l6ZUNoYW5nZWQoaW50IHcsIGludCBoLCBpbnQgb2xkdywgaW50IG9sZGgpIHsKKyAgICAgICAgc3VwZXIub25TaXplQ2hhbmdlZCh3LCBoLCBvbGR3LCBvbGRoKTsKKyAgICAgICAgbVNlcnZpY2UudXBkYXRlRXhwYW5kZWRWaWV3UG9zKFN0YXR1c0JhclNlcnZpY2UuRVhQQU5ERURfTEVBVkVfQUxPTkUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIpIHsKKyAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbCwgdCwgciwgYik7CisKKyAgICAgICAgLy8gcHV0IHRoZSBkYXRlIGRhdGUgdmlldyBxdWFudGl6ZWQgdG8gdGhlIGljb25zCisgICAgICAgIGludCBvbGREYXRlUmlnaHQgPSBtRGF0ZS5nZXRSaWdodCgpOworICAgICAgICBpbnQgbmV3RGF0ZVJpZ2h0OworCisgICAgICAgIG5ld0RhdGVSaWdodCA9IGdldERhdGVTaXplKG1Ob3RpZmljYXRpb25JY29ucywgb2xkRGF0ZVJpZ2h0LAorICAgICAgICAgICAgICAgIGdldFZpZXdPZmZzZXQobU5vdGlmaWNhdGlvbkljb25zKSk7CisgICAgICAgIGlmIChuZXdEYXRlUmlnaHQgPCAwKSB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gZ2V0Vmlld09mZnNldChtU3RhdHVzSWNvbnMpOworICAgICAgICAgICAgaWYgKG9sZERhdGVSaWdodCA8IG9mZnNldCkgeworICAgICAgICAgICAgICAgIG5ld0RhdGVSaWdodCA9IG9sZERhdGVSaWdodDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmV3RGF0ZVJpZ2h0ID0gZ2V0RGF0ZVNpemUobVN0YXR1c0ljb25zLCBvbGREYXRlUmlnaHQsIG9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKG5ld0RhdGVSaWdodCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3RGF0ZVJpZ2h0ID0gcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW50IG1heCA9IHIgLSBnZXRQYWRkaW5nUmlnaHQoKTsKKyAgICAgICAgaWYgKG5ld0RhdGVSaWdodCA+IG1heCkgeworICAgICAgICAgICAgbmV3RGF0ZVJpZ2h0ID0gbWF4OworICAgICAgICB9CisKKyAgICAgICAgbURhdGUubGF5b3V0KG1EYXRlLmdldExlZnQoKSwgbURhdGUuZ2V0VG9wKCksIG5ld0RhdGVSaWdodCwgbURhdGUuZ2V0Qm90dG9tKCkpOworICAgICAgICBtQmFja2dyb3VuZC5zZXRGaXhlZEJvdW5kcygtbURhdGUuZ2V0TGVmdCgpLCAtbURhdGUuZ2V0VG9wKCksIChyLWwpLCAoYi10KSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgZGlzcGF0Y2hEcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgc3VwZXIuZGlzcGF0Y2hEcmF3KGNhbnZhcyk7CisgICAgICAgIGludCBhbHBoYSA9IGdldEN1ckFscGhhKCk7CisgICAgICAgIGlmIChhbHBoYSAhPSAwKSB7CisgICAgICAgICAgICBjYW52YXMuZHJhd0FSR0IoYWxwaGEsIDAsIDAsIDApOworICAgICAgICB9CisgICAgICAgIGlmIChhbHBoYSAhPSBtRW5kQWxwaGEpIHsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGxlZnQgcG9zaXRpb24gb2YgdiBpbiB0aGlzIHZpZXcuICBUaHJvd3MgaWYgdiBpcyBub3QKKyAgICAgKiBhIGNoaWxkIG9mIHRoaXMuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0Vmlld09mZnNldChWaWV3IHYpIHsKKyAgICAgICAgaW50IG9mZnNldCA9IDA7CisgICAgICAgIHdoaWxlICh2ICE9IHRoaXMpIHsKKyAgICAgICAgICAgIG9mZnNldCArPSB2LmdldExlZnQoKTsKKyAgICAgICAgICAgIFZpZXdQYXJlbnQgcCA9IHYuZ2V0UGFyZW50KCk7CisgICAgICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFZpZXcpIHsKKyAgICAgICAgICAgICAgICB2ID0gKFZpZXcpcDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24odiArICIgaXMgbm90IGEgY2hpbGQgb2YgIiArIHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZ2V0RGF0ZVNpemUoVmlld0dyb3VwIGcsIGludCB3LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGZpbmFsIGludCBOID0gZy5nZXRDaGlsZENvdW50KCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIFZpZXcgdiA9IGcuZ2V0Q2hpbGRBdChpKTsKKyAgICAgICAgICAgIGludCBsID0gdi5nZXRMZWZ0KCkgKyBvZmZzZXQ7CisgICAgICAgICAgICBpbnQgciA9IHYuZ2V0UmlnaHQoKSArIG9mZnNldDsKKyAgICAgICAgICAgIGlmICh3ID49IGwgJiYgdyA8PSByKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKgorICAgICAqIEVuc3VyZSB0aGF0LCBpZiB0aGVyZSBpcyBubyB0YXJnZXQgdW5kZXIgdXMgdG8gcmVjZWl2ZSB0aGUgdG91Y2gsCisgICAgICogdGhhdCB3ZSBwcm9jZXNzIGl0IG91cnNlbGYuICBUaGlzIG1ha2VzIHN1cmUgdGhhdCBvbkludGVyY2VwdFRvdWNoRXZlbnQoKQorICAgICAqIGlzIGFsd2F5cyBjYWxsZWQgZm9yIHRoZSBlbnRpcmUgZ2VzdHVyZS4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBvblRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpICE9IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICBtU2VydmljZS5pbnRlcmNlcHRUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBvbkludGVyY2VwdFRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmludGVyY2VwdFRvdWNoRXZlbnQoZXZlbnQpCisgICAgICAgICAgICAgICAgPyB0cnVlIDogc3VwZXIub25JbnRlcmNlcHRUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVGlja2VyLmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1RpY2tlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZTg2NTMKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1RpY2tlci5qYXZhCkBAIC0wLDAgKzEsMjczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuU3RhdGljTGF5b3V0OworaW1wb3J0IGFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50OworaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0UGFpbnQ7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvblV0aWxzOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRTd2l0Y2hlcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVN3aXRjaGVyOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJOb3RpZmljYXRpb247CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5DaGFyU2VxdWVuY2VzOworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBUaWNrZXIgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUSUNLRVJfU0VHTUVOVF9ERUxBWSA9IDMwMDA7CisgICAgCisgICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7CisgICAgcHJpdmF0ZSBBcnJheUxpc3Q8U2VnbWVudD4gbVNlZ21lbnRzID0gbmV3IEFycmF5TGlzdCgpOworICAgIHByaXZhdGUgVGV4dFBhaW50IG1QYWludDsKKyAgICBwcml2YXRlIFZpZXcgbVRpY2tlclZpZXc7CisgICAgcHJpdmF0ZSBJbWFnZVN3aXRjaGVyIG1JY29uU3dpdGNoZXI7CisgICAgcHJpdmF0ZSBUZXh0U3dpdGNoZXIgbVRleHRTd2l0Y2hlcjsKKworICAgIHByaXZhdGUgZmluYWwgY2xhc3MgU2VnbWVudCB7CisgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb247CisgICAgICAgIERyYXdhYmxlIGljb247CisgICAgICAgIENoYXJTZXF1ZW5jZSB0ZXh0OworICAgICAgICBpbnQgY3VycmVudDsKKyAgICAgICAgaW50IG5leHQ7CisgICAgICAgIGJvb2xlYW4gZmlyc3Q7CisKKyAgICAgICAgU3RhdGljTGF5b3V0IGdldExheW91dChDaGFyU2VxdWVuY2Ugc3Vic3RyKSB7CisgICAgICAgICAgICBpbnQgdyA9IG1UZXh0U3dpdGNoZXIuZ2V0V2lkdGgoKSAtIG1UZXh0U3dpdGNoZXIuZ2V0UGFkZGluZ0xlZnQoKQorICAgICAgICAgICAgICAgICAgICAtIG1UZXh0U3dpdGNoZXIuZ2V0UGFkZGluZ1JpZ2h0KCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0YXRpY0xheW91dChzdWJzdHIsIG1QYWludCwgdywgQWxpZ25tZW50LkFMSUdOX05PUk1BTCwgMSwgMCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBDaGFyU2VxdWVuY2UgcnRyaW0oQ2hhclNlcXVlbmNlIHN1YnN0ciwgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgICAgICAgICB3aGlsZSAoZW5kID4gc3RhcnQgJiYgIVRleHRVdGlscy5pc0dyYXBoaWMoc3Vic3RyLmNoYXJBdChlbmQtMSkpKSB7CisgICAgICAgICAgICAgICAgZW5kLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5kID4gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RyLnN1YlNlcXVlbmNlKHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvKiogcmV0dXJucyBudWxsIGlmIHRoZXJlIGlzIG5vIG1vcmUgdGV4dCAqLworICAgICAgICBDaGFyU2VxdWVuY2UgZ2V0VGV4dCgpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnQgPiB0aGlzLnRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBzdWJzdHIgPSB0aGlzLnRleHQuc3ViU2VxdWVuY2UodGhpcy5jdXJyZW50LCB0aGlzLnRleHQubGVuZ3RoKCkpOworICAgICAgICAgICAgU3RhdGljTGF5b3V0IGwgPSBnZXRMYXlvdXQoc3Vic3RyKTsKKyAgICAgICAgICAgIGludCBsaW5lQ291bnQgPSBsLmdldExpbmVDb3VudCgpOworICAgICAgICAgICAgaWYgKGxpbmVDb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBsLmdldExpbmVTdGFydCgwKTsKKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gbC5nZXRMaW5lRW5kKDApOworICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IHRoaXMuY3VycmVudCArIGVuZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnRyaW0oc3Vic3RyLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oImxpbmVDb3VudD0iICsgbGluZUNvdW50ICsgIiBjdXJyZW50PSIgKyBjdXJyZW50ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgdGV4dD0iICsgdGV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiogcmV0dXJucyBudWxsIGlmIHRoZXJlIGlzIG5vIG1vcmUgdGV4dCAqLworICAgICAgICBDaGFyU2VxdWVuY2UgYWR2YW5jZSgpIHsKKyAgICAgICAgICAgIHRoaXMuZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgIGludCBpbmRleCA9IHRoaXMubmV4dDsKKyAgICAgICAgICAgIGZpbmFsIGludCBsZW4gPSB0aGlzLnRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW4gJiYgIVRleHRVdGlscy5pc0dyYXBoaWModGhpcy50ZXh0LmNoYXJBdChpbmRleCkpKSB7CisgICAgICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBsZW4pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHN1YnN0ciA9IHRoaXMudGV4dC5zdWJTZXF1ZW5jZShpbmRleCwgdGhpcy50ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIFN0YXRpY0xheW91dCBsID0gZ2V0TGF5b3V0KHN1YnN0cik7CisgICAgICAgICAgICBmaW5hbCBpbnQgbGluZUNvdW50ID0gbC5nZXRMaW5lQ291bnQoKTsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgZm9yIChpPTA7IGk8bGluZUNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBsLmdldExpbmVTdGFydChpKTsKKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gbC5nZXRMaW5lRW5kKGkpOworICAgICAgICAgICAgICAgIGlmIChpID09IGxpbmVDb3VudC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IGxlbjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBpbmRleCArIGwuZ2V0TGluZVN0YXJ0KGkrMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIENoYXJTZXF1ZW5jZSByZXN1bHQgPSBydHJpbShzdWJzdHIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBpbmRleCArIHN0YXJ0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuY3VycmVudCA9IGxlbjsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgU2VnbWVudChTdGF0dXNCYXJOb3RpZmljYXRpb24gbiwgRHJhd2FibGUgaWNvbiwgQ2hhclNlcXVlbmNlIHRleHQpIHsKKyAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uID0gbjsKKyAgICAgICAgICAgIHRoaXMuaWNvbiA9IGljb247CisgICAgICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICAgICAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgICAgIGZpbmFsIGludCBsZW4gPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuICYmICFUZXh0VXRpbHMuaXNHcmFwaGljKHRleHQuY2hhckF0KGluZGV4KSkpIHsKKyAgICAgICAgICAgICAgICBpbmRleCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gaW5kZXg7CisgICAgICAgICAgICB0aGlzLm5leHQgPSBpbmRleDsKKyAgICAgICAgICAgIHRoaXMuZmlyc3QgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKKworICAgIFRpY2tlcihDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclZpZXcgc2IpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtVGlja2VyVmlldyA9IHNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlcik7CisKKyAgICAgICAgbUljb25Td2l0Y2hlciA9IChJbWFnZVN3aXRjaGVyKXNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlckljb24pOworICAgICAgICBtSWNvblN3aXRjaGVyLnNldEluQW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX2luKSk7CisgICAgICAgIG1JY29uU3dpdGNoZXIuc2V0T3V0QW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX291dCkpOworCisgICAgICAgIG1UZXh0U3dpdGNoZXIgPSAoVGV4dFN3aXRjaGVyKXNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlclRleHQpOworICAgICAgICBtVGV4dFN3aXRjaGVyLnNldEluQW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX2luKSk7CisgICAgICAgIG1UZXh0U3dpdGNoZXIuc2V0T3V0QW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX291dCkpOworCisgICAgICAgIC8vIENvcHkgdGhlIHBhaW50IHN0eWxlIG9mIG9uZSBvZiB0aGUgVGV4dFN3aXRjaGVycyBjaGlsZHJlbiB0byB1c2UgbGF0ZXIgZm9yIG1lYXN1cmluZworICAgICAgICBUZXh0VmlldyB0ZXh0ID0gKFRleHRWaWV3KW1UZXh0U3dpdGNoZXIuZ2V0Q2hpbGRBdCgwKTsKKyAgICAgICAgbVBhaW50ID0gdGV4dC5nZXRQYWludCgpOworICAgIH0KKworCisgICAgdm9pZCBhZGRFbnRyeShTdGF0dXNCYXJOb3RpZmljYXRpb24gbikgeworICAgICAgICBpbnQgaW5pdGlhbENvdW50ID0gbVNlZ21lbnRzLnNpemUoKTsKKworICAgICAgICAvLyBJZiB3aGF0J3MgYmVpbmcgZGlzcGxheWVkIGhhcyB0aGUgc2FtZSB0ZXh0IGFuZCBpY29uLCBqdXN0IGRyb3AgaXQKKyAgICAgICAgLy8gKHdoaWNoIHdpbGwgbGV0IHRoZSBjdXJyZW50IG9uZSBmaW5pc2gsIHRoaXMgaGFwcGVucyB3aGVuIGFwcHMgZG8KKyAgICAgICAgLy8gYSBub3RpZmljYXRpb24gc3Rvcm0pLgorICAgICAgICBpZiAoaW5pdGlhbENvdW50ID4gMCkgeworICAgICAgICAgICAgZmluYWwgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KDApOworICAgICAgICAgICAgaWYgKG4ucGtnLmVxdWFscyhzZWcubm90aWZpY2F0aW9uLnBrZykKKyAgICAgICAgICAgICAgICAgICAgJiYgbi5ub3RpZmljYXRpb24uaWNvbiA9PSBzZWcubm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5pY29uCisgICAgICAgICAgICAgICAgICAgICYmIG4ubm90aWZpY2F0aW9uLmljb25MZXZlbCA9PSBzZWcubm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5pY29uTGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgJiYgQ2hhclNlcXVlbmNlcy5lcXVhbHMoc2VnLm5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24udGlja2VyVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4ubm90aWZpY2F0aW9uLnRpY2tlclRleHQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZmluYWwgRHJhd2FibGUgaWNvbiA9IFN0YXR1c0Jhckljb25WaWV3LmdldEljb24obUNvbnRleHQsCisgICAgICAgICAgICAgICAgbmV3IFN0YXR1c0Jhckljb24obi5wa2csIG4ubm90aWZpY2F0aW9uLmljb24sIG4ubm90aWZpY2F0aW9uLmljb25MZXZlbCwgMCkpOworICAgICAgICBmaW5hbCBTZWdtZW50IG5ld1NlZ21lbnQgPSBuZXcgU2VnbWVudChuLCBpY29uLCBuLm5vdGlmaWNhdGlvbi50aWNrZXJUZXh0KTsKKworICAgICAgICAvLyBJZiB0aGVyZSdzIGFscmVhZHkgYSBub3RpZmljYXRpb24gc2NoZWR1bGUgZm9yIHRoaXMgcGFja2FnZSBhbmQgaWQsIHJlbW92ZSBpdC4KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGluaXRpYWxDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBTZWdtZW50IHNlZyA9IG1TZWdtZW50cy5nZXQoaSk7CisgICAgICAgICAgICBpZiAobi5pZCA9PSBzZWcubm90aWZpY2F0aW9uLmlkICYmIG4ucGtnLmVxdWFscyhzZWcubm90aWZpY2F0aW9uLnBrZykpIHsKKyAgICAgICAgICAgICAgICAvLyBqdXN0IHVwZGF0ZSB0aGF0IG9uZSB0byB1c2UgdGhpcyBuZXcgZGF0YSBpbnN0ZWFkCisgICAgICAgICAgICAgICAgbVNlZ21lbnRzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1TZWdtZW50cy5hZGQobmV3U2VnbWVudCk7CisKKyAgICAgICAgaWYgKGluaXRpYWxDb3VudCA9PSAwICYmIG1TZWdtZW50cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBTZWdtZW50IHNlZyA9IG1TZWdtZW50cy5nZXQoMCk7CisgICAgICAgICAgICBzZWcuZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbUljb25Td2l0Y2hlci5zZXRBbmltYXRlRmlyc3RWaWV3KGZhbHNlKTsKKyAgICAgICAgICAgIG1JY29uU3dpdGNoZXIucmVzZXQoKTsKKyAgICAgICAgICAgIG1JY29uU3dpdGNoZXIuc2V0SW1hZ2VEcmF3YWJsZShzZWcuaWNvbik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1UZXh0U3dpdGNoZXIuc2V0QW5pbWF0ZUZpcnN0VmlldyhmYWxzZSk7CisgICAgICAgICAgICBtVGV4dFN3aXRjaGVyLnJlc2V0KCk7CisgICAgICAgICAgICBtVGV4dFN3aXRjaGVyLnNldFRleHQoc2VnLmdldFRleHQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRpY2tlclN0YXJ0aW5nKCk7CisgICAgICAgICAgICBzY2hlZHVsZUFkdmFuY2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVtb3ZlRW50cnkoU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4pIHsKKyAgICAgICAgZm9yIChpbnQgaT1tU2VnbWVudHMuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KGkpOworICAgICAgICAgICAgaWYgKG4uaWQgPT0gc2VnLm5vdGlmaWNhdGlvbi5pZCAmJiBuLnBrZy5lcXVhbHMoc2VnLm5vdGlmaWNhdGlvbi5wa2cpKSB7CisgICAgICAgICAgICAgICAgbVNlZ21lbnRzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgaGFsdCgpIHsKKyAgICAgICAgbUhhbmRsZXIucmVtb3ZlQ2FsbGJhY2tzKG1BZHZhbmNlVGlja2VyKTsKKyAgICAgICAgbVNlZ21lbnRzLmNsZWFyKCk7CisgICAgICAgIHRpY2tlckhhbHRpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIHJlZmxvd1RleHQoKSB7CisgICAgICAgIGlmIChtU2VnbWVudHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KDApOworICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHRleHQgPSBzZWcuZ2V0VGV4dCgpOworICAgICAgICAgICAgbVRleHRTd2l0Y2hlci5zZXRDdXJyZW50VGV4dCh0ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgUnVubmFibGUgbUFkdmFuY2VUaWNrZXIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIHdoaWxlIChtU2VnbWVudHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgIFNlZ21lbnQgc2VnID0gbVNlZ21lbnRzLmdldCgwKTsKKworICAgICAgICAgICAgICAgIGlmIChzZWcuZmlyc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBtYWtlcyB0aGUgaWNvbiBzbGlkZSBpbiBmb3IgdGhlIGZpcnN0IG9uZSBmb3IgYSBnaXZlbgorICAgICAgICAgICAgICAgICAgICAvLyBub3RpZmljYXRpb24gZXZlbiBpZiB0aGVyZSBhcmUgdHdvIG5vdGlmaWNhdGlvbnMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gc2FtZSBpY29uIGluIGEgcm93CisgICAgICAgICAgICAgICAgICAgIG1JY29uU3dpdGNoZXIuc2V0SW1hZ2VEcmF3YWJsZShzZWcuaWNvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIENoYXJTZXF1ZW5jZSB0ZXh0ID0gc2VnLmFkdmFuY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAodGV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZWdtZW50cy5yZW1vdmUoMCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtVGV4dFN3aXRjaGVyLnNldFRleHQodGV4dCk7CisKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUFkdmFuY2UoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtU2VnbWVudHMuc2l6ZSgpID09IDApIHsKKyAgICAgICAgICAgICAgICB0aWNrZXJEb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSB2b2lkIHNjaGVkdWxlQWR2YW5jZSgpIHsKKyAgICAgICAgbUhhbmRsZXIucG9zdERlbGF5ZWQobUFkdmFuY2VUaWNrZXIsIFRJQ0tFUl9TRUdNRU5UX0RFTEFZKTsKKyAgICB9CisKKyAgICBhYnN0cmFjdCB2b2lkIHRpY2tlclN0YXJ0aW5nKCk7CisgICAgYWJzdHJhY3Qgdm9pZCB0aWNrZXJEb25lKCk7CisgICAgYWJzdHJhY3Qgdm9pZCB0aWNrZXJIYWx0aW5nKCk7Cit9CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVGlja2VyVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9UaWNrZXJWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc0OWFlNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVGlja2VyVmlldy5qYXZhCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFN3aXRjaGVyOworCisKK3B1YmxpYyBjbGFzcyBUaWNrZXJWaWV3IGV4dGVuZHMgVGV4dFN3aXRjaGVyCit7CisgICAgVGlja2VyIG1UaWNrZXI7CisKKyAgICBwdWJsaWMgVGlja2VyVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25TaXplQ2hhbmdlZChpbnQgdywgaW50IGgsIGludCBvbGR3LCBpbnQgb2xkaCkgeworICAgICAgICBzdXBlci5vblNpemVDaGFuZ2VkKHcsIGgsIG9sZHcsIG9sZGgpOworICAgICAgICBtVGlja2VyLnJlZmxvd1RleHQoKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVHJhY2tpbmdQYXR0ZXJuVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9UcmFja2luZ1BhdHRlcm5WaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE2ZjE1ZAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVHJhY2tpbmdQYXR0ZXJuVmlldy5qYXZhCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBhaW50OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworCitwdWJsaWMgY2xhc3MgVHJhY2tpbmdQYXR0ZXJuVmlldyBleHRlbmRzIFZpZXcgeworICAgIHByaXZhdGUgQml0bWFwIG1UZXh0dXJlOworICAgIHByaXZhdGUgUGFpbnQgbVBhaW50OworICAgIHByaXZhdGUgaW50IG1UZXh0dXJlV2lkdGg7CisgICAgcHJpdmF0ZSBpbnQgbVRleHR1cmVIZWlnaHQ7CisgICAgCisgICAgcHVibGljIFRyYWNraW5nUGF0dGVyblZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworCisgICAgICAgIG1UZXh0dXJlID0gQml0bWFwRmFjdG9yeS5kZWNvZGVSZXNvdXJjZShnZXRSZXNvdXJjZXMoKSwgCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0dXNfYmFyX2JhY2tncm91bmQpOworICAgICAgICBtVGV4dHVyZVdpZHRoID0gbVRleHR1cmUuZ2V0V2lkdGgoKTsKKyAgICAgICAgbVRleHR1cmVIZWlnaHQgPSBtVGV4dHVyZS5nZXRIZWlnaHQoKTsKKworICAgICAgICBtUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICAgICAgbVBhaW50LnNldERpdGhlcihmYWxzZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25EcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgZmluYWwgQml0bWFwIHRleHR1cmUgPSBtVGV4dHVyZTsKKyAgICAgICAgZmluYWwgUGFpbnQgcGFpbnQgPSBtUGFpbnQ7CisKKyAgICAgICAgZmluYWwgaW50IHdpZHRoID0gZ2V0V2lkdGgoKTsKKyAgICAgICAgZmluYWwgaW50IGhlaWdodCA9IGdldEhlaWdodCgpOworCisgICAgICAgIGZpbmFsIGludCB0ZXh0dXJlV2lkdGggPSBtVGV4dHVyZVdpZHRoOworICAgICAgICBmaW5hbCBpbnQgdGV4dHVyZUhlaWdodCA9IG1UZXh0dXJlSGVpZ2h0OworCisgICAgICAgIGludCB4ID0gMDsKKyAgICAgICAgaW50IHk7CisKKyAgICAgICAgd2hpbGUgKHggPCB3aWR0aCkgeworICAgICAgICAgICAgeSA9IDA7CisgICAgICAgICAgICB3aGlsZSAoeSA8IGhlaWdodCkgeworICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3Qml0bWFwKHRleHR1cmUsIHgsIHksIHBhaW50KTsKKyAgICAgICAgICAgICAgICB5ICs9IHRleHR1cmVIZWlnaHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB4ICs9IHRleHR1cmVXaWR0aDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVHJhY2tpbmdWaWV3LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1RyYWNraW5nVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMDhlZWUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1RyYWNraW5nVmlldy5qYXZhCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LkRpc3BsYXk7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKKworCitwdWJsaWMgY2xhc3MgVHJhY2tpbmdWaWV3IGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKKyAgICBmaW5hbCBEaXNwbGF5IG1EaXNwbGF5OworICAgIFN0YXR1c0JhclNlcnZpY2UgbVNlcnZpY2U7CisgICAgYm9vbGVhbiBtVHJhY2tpbmc7CisgICAgaW50IG1TdGFydFgsIG1TdGFydFk7CisKKyAgICBwdWJsaWMgVHJhY2tpbmdWaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICAgICAgbURpc3BsYXkgPSAoKFdpbmRvd01hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAorICAgICAgICAgICAgICAgIENvbnRleHQuV0lORE9XX1NFUlZJQ0UpKS5nZXREZWZhdWx0RGlzcGxheSgpOworICAgIH0KKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkxheW91dChib29sZWFuIGNoYW5nZWQsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20pIHsKKyAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICAgICAgbVNlcnZpY2UudXBkYXRlRXhwYW5kZWRIZWlnaHQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaEtleUV2ZW50KEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgIGJvb2xlYW4gZG93biA9IGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9ET1dOOworICAgICAgICBzd2l0Y2ggKGV2ZW50LmdldEtleUNvZGUoKSkgeworICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQkFDSzoKKyAgICAgICAgICAgIGlmIChkb3duKSB7CisgICAgICAgICAgICAgICAgLy9tU2VydmljZS5kZWFjdGl2YXRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3VwZXIuZGlzcGF0Y2hLZXlFdmVudChldmVudCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgbVNlcnZpY2Uub25UcmFja2luZ1ZpZXdBdHRhY2hlZCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS91c2IvU3RvcmFnZU5vdGlmaWNhdGlvbi5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3VzYi9TdG9yYWdlTm90aWZpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhYmM1YQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS91c2IvU3RvcmFnZU5vdGlmaWNhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMzk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkudXNiOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uOworaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbk1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5JTW91bnRTZXJ2aWNlOworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlRXZlbnRMaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VSZXN1bHRDb2RlOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5Ub2FzdDsKKworcHVibGljIGNsYXNzIFN0b3JhZ2VOb3RpZmljYXRpb24gZXh0ZW5kcyBTdG9yYWdlRXZlbnRMaXN0ZW5lciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJTdG9yYWdlTm90aWZpY2F0aW9uIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gUE9QX1VNU19BQ1RJVklUWV9PTl9DT05ORUNUID0gdHJ1ZTsKKworICAgIC8qKgorICAgICAqIEJpbmRlciBjb250ZXh0IGZvciB0aGlzIHNlcnZpY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIG5vdGlmaWNhdGlvbiB0aGF0IGlzIHNob3duIHdoZW4gYSBVU0IgbWFzcyBzdG9yYWdlIGhvc3QKKyAgICAgKiBpcyBjb25uZWN0ZWQuIAorICAgICAqIDxwPgorICAgICAqIFRoaXMgaXMgbGF6aWx5IGNyZWF0ZWQsIHNvIHVzZSB7QGxpbmsgI3NldFVzYlN0b3JhZ2VOb3RpZmljYXRpb24oKX0uCisgICAgICovCisgICAgcHJpdmF0ZSBOb3RpZmljYXRpb24gbVVzYlN0b3JhZ2VOb3RpZmljYXRpb247CisKKyAgICAvKioKKyAgICAgKiBUaGUgbm90aWZpY2F0aW9uIHRoYXQgaXMgc2hvd24gd2hlbiB0aGUgZm9sbG93aW5nIG1lZGlhIGV2ZW50cyBvY2N1cjoKKyAgICAgKiAgICAgLSBNZWRpYSBpcyBiZWluZyBjaGVja2VkCisgICAgICogICAgIC0gTWVkaWEgaXMgYmxhbmsgKG9yIHVua25vd24gZmlsZXN5c3RlbSkKKyAgICAgKiAgICAgLSBNZWRpYSBpcyBjb3JydXB0CisgICAgICogICAgIC0gTWVkaWEgaXMgc2FmZSB0byB1bm1vdW50CisgICAgICogICAgIC0gTWVkaWEgaXMgbWlzc2luZworICAgICAqIDxwPgorICAgICAqIFRoaXMgaXMgbGF6aWx5IGNyZWF0ZWQsIHNvIHVzZSB7QGxpbmsgI3NldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigpfS4KKyAgICAgKi8KKyAgICBwcml2YXRlIE5vdGlmaWNhdGlvbiAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb247CisgICAgcHJpdmF0ZSBib29sZWFuICAgICAgICBtVW1zQXZhaWxhYmxlOworICAgIHByaXZhdGUgU3RvcmFnZU1hbmFnZXIgbVN0b3JhZ2VNYW5hZ2VyOworCisgICAgcHVibGljIFN0b3JhZ2VOb3RpZmljYXRpb24oQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKworICAgICAgICBtU3RvcmFnZU1hbmFnZXIgPSAoU3RvcmFnZU1hbmFnZXIpIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUT1JBR0VfU0VSVklDRSk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gY29ubmVjdGVkID0gbVN0b3JhZ2VNYW5hZ2VyLmlzVXNiTWFzc1N0b3JhZ2VDb25uZWN0ZWQoKTsKKyAgICAgICAgU2xvZy5kKFRBRywgU3RyaW5nLmZvcm1hdCggIlN0YXJ0dXAgd2l0aCBVTVMgY29ubmVjdGlvbiAlcyAobWVkaWEgc3RhdGUgJXMpIiwgbVVtc0F2YWlsYWJsZSwKKyAgICAgICAgICAgICAgICBFbnZpcm9ubWVudC5nZXRFeHRlcm5hbFN0b3JhZ2VTdGF0ZSgpKSk7CisgICAgICAgIG9uVXNiTWFzc1N0b3JhZ2VDb25uZWN0aW9uQ2hhbmdlZChjb25uZWN0ZWQpOworICAgIH0KKworICAgIC8qCisgICAgICogQG92ZXJyaWRlIGNvbS5hbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZUV2ZW50TGlzdGVuZXIKKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblVzYk1hc3NTdG9yYWdlQ29ubmVjdGlvbkNoYW5nZWQoYm9vbGVhbiBjb25uZWN0ZWQpIHsKKyAgICAgICAgbVVtc0F2YWlsYWJsZSA9IGNvbm5lY3RlZDsKKyAgICAgICAgLyoKKyAgICAgICAgICogRXZlbiB0aG91Z2ggd2UgbWF5IGhhdmUgYSBVTVMgaG9zdCBjb25uZWN0ZWQsIHdlIHRoZSBTRCBjYXJkCisgICAgICAgICAqIG1heSBub3QgYmUgaW4gYSBzdGF0ZSBmb3IgZXhwb3J0LgorICAgICAgICAgKi8KKyAgICAgICAgU3RyaW5nIHN0ID0gRW52aXJvbm1lbnQuZ2V0RXh0ZXJuYWxTdG9yYWdlU3RhdGUoKTsKKworICAgICAgICBTbG9nLmkoVEFHLCBTdHJpbmcuZm9ybWF0KCJVTVMgY29ubmVjdGlvbiBjaGFuZ2VkIHRvICVzIChtZWRpYSBzdGF0ZSAlcykiLCBjb25uZWN0ZWQsIHN0KSk7CisKKyAgICAgICAgaWYgKGNvbm5lY3RlZCAmJiAoc3QuZXF1YWxzKAorICAgICAgICAgICAgICAgIEVudmlyb25tZW50Lk1FRElBX1JFTU9WRUQpIHx8IHN0LmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9DSEVDS0lORykpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogTm8gY2FyZCBvciBjYXJkIGJlaW5nIGNoZWNrZWQgPSBkb24ndCBkaXNwbGF5CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGNvbm5lY3RlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKGNvbm5lY3RlZCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBAb3ZlcnJpZGUgY29tLmFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlRXZlbnRMaXN0ZW5lcgorICAgICAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uU3RvcmFnZVN0YXRlQ2hhbmdlZChTdHJpbmcgcGF0aCwgU3RyaW5nIG9sZFN0YXRlLCBTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgU2xvZy5pKFRBRywgU3RyaW5nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAiTWVkaWEgeyVzfSBzdGF0ZSBjaGFuZ2VkIGZyb20geyVzfSAtPiB7JXN9IiwgcGF0aCwgb2xkU3RhdGUsIG5ld1N0YXRlKSk7CisgICAgICAgIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfU0hBUkVEKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFN0b3JhZ2UgaXMgbm93IHNoYXJlZC4gTW9kaWZ5IHRoZSBVTVMgbm90aWZpY2F0aW9uCisgICAgICAgICAgICAgKiBmb3Igc3RvcHBpbmcgVU1TLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOworICAgICAgICAgICAgaW50ZW50LnNldENsYXNzKG1Db250ZXh0LCBjb20uYW5kcm9pZC5zeXN0ZW11aS51c2IuVXNiU3RvcmFnZUFjdGl2aXR5LmNsYXNzKTsKKyAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQgcGkgPSBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KG1Db250ZXh0LCAwLCBpbnRlbnQsIDApOworICAgICAgICAgICAgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfd2FybmluZywgZmFsc2UsIHRydWUsIHBpKTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfQ0hFQ0tJTkcpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogU3RvcmFnZSBpcyBub3cgY2hlY2tpbmcuIFVwZGF0ZSBtZWRpYSBub3RpZmljYXRpb24gYW5kIGRpc2FibGUKKyAgICAgICAgICAgICAqIFVNUyBub3RpZmljYXRpb24uCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZF9wcmVwYXJlLCB0cnVlLCBmYWxzZSwgbnVsbCk7CisgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihmYWxzZSk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX01PVU5URUQpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogU3RvcmFnZSBpcyBub3cgbW91bnRlZC4gRGlzbWlzcyBhbnkgbWVkaWEgbm90aWZpY2F0aW9ucywKKyAgICAgICAgICAgICAqIGFuZCBlbmFibGUgVU1TIG5vdGlmaWNhdGlvbiBpZiBjb25uZWN0ZWQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIG51bGwpOworICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24obVVtc0F2YWlsYWJsZSk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1VOTU9VTlRFRCkpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBTdG9yYWdlIGlzIG5vdyB1bm1vdW50ZWQuIFdlIG1heSBoYXZlIGJlZW4gdW5tb3VudGVkCisgICAgICAgICAgICAgKiBiZWNhdXNlIHRoZSB1c2VyIGlzIGVuYWJsaW5nL2Rpc2FibGluZyBVTVMsIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QKKyAgICAgICAgICAgICAqIHdhbnQgdG8gZGlzcGxheSB0aGUgJ3NhZmUgdG8gdW5tb3VudCcgbm90aWZpY2F0aW9uLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIW1TdG9yYWdlTWFuYWdlci5pc1VzYk1hc3NTdG9yYWdlRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9TSEFSRUQpKSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIFRoZSB1bm1vdW50IHdhcyBkdWUgdG8gVU1TIGJlaW5nIGVuYWJsZWQuIERpc21pc3MgYW55CisgICAgICAgICAgICAgICAgICAgICAqIG1lZGlhIG5vdGlmaWNhdGlvbnMsIGFuZCBlbmFibGUgVU1TIG5vdGlmaWNhdGlvbiBpZiBjb25uZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIG51bGwpOworICAgICAgICAgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihtVW1zQXZhaWxhYmxlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgKiBTaG93IHNhZmUgdG8gdW5tb3VudCBtZWRpYSBub3RpZmljYXRpb24sIGFuZCBlbmFibGUgVU1TCisgICAgICAgICAgICAgICAgICAgICAqIG5vdGlmaWNhdGlvbiBpZiBjb25uZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZCwgdHJ1ZSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKG1VbXNBdmFpbGFibGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBUaGUgdW5tb3VudCB3YXMgZHVlIHRvIFVNUyBiZWluZyBlbmFibGVkLiBEaXNtaXNzIGFueQorICAgICAgICAgICAgICAgICAqIG1lZGlhIG5vdGlmaWNhdGlvbnMsIGFuZCBkaXNhYmxlIHRoZSBVTVMgbm90aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgbnVsbCk7CisgICAgICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24oZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9OT0ZTKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFN0b3JhZ2UgaGFzIG5vIGZpbGVzeXN0ZW0uIFNob3cgYmxhbmsgbWVkaWEgbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICogYW5kIGVuYWJsZSBVTVMgbm90aWZpY2F0aW9uIGlmIGNvbm5lY3RlZC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgIGludGVudC5zZXRDbGFzcyhtQ29udGV4dCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkV4dGVybmFsTWVkaWFGb3JtYXRBY3Rpdml0eS5jbGFzcyk7CisgICAgICAgICAgICBQZW5kaW5nSW50ZW50IHBpID0gUGVuZGluZ0ludGVudC5nZXRBY3Rpdml0eShtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKKworICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZF91c2IsIHRydWUsIGZhbHNlLCBwaSk7CisgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihtVW1zQXZhaWxhYmxlKTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfVU5NT1VOVEFCTEUpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogU3RvcmFnZSBpcyBjb3JydXB0LiBTaG93IGNvcnJ1cHQgbWVkaWEgbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICogYW5kIGVuYWJsZSBVTVMgbm90aWZpY2F0aW9uIGlmIGNvbm5lY3RlZC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgIGludGVudC5zZXRDbGFzcyhtQ29udGV4dCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkV4dGVybmFsTWVkaWFGb3JtYXRBY3Rpdml0eS5jbGFzcyk7CisgICAgICAgICAgICBQZW5kaW5nSW50ZW50IHBpID0gUGVuZGluZ0ludGVudC5nZXRBY3Rpdml0eShtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKKworICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9ub3RpZnlfc2RjYXJkX3VzYiwgdHJ1ZSwgZmFsc2UsIHBpKTsgCisgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihtVW1zQXZhaWxhYmxlKTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfUkVNT1ZFRCkpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBTdG9yYWdlIGhhcyBiZWVuIHJlbW92ZWQuIFNob3cgbm9tZWRpYSBtZWRpYSBub3RpZmljYXRpb24sCisgICAgICAgICAgICAgKiBhbmQgZGlzYWJsZSBVTVMgbm90aWZpY2F0aW9uIHJlZ2FyZGxlc3Mgb2YgY29ubmVjdGlvbiBzdGF0ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZF91c2IsCisgICAgICAgICAgICAgICAgICAgIHRydWUsIGZhbHNlLCBudWxsKTsKKyAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKGZhbHNlKTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfQkFEX1JFTU9WQUwpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogU3RvcmFnZSBoYXMgYmVlbiByZW1vdmVkIHVuc2FmZWx5LiBTaG93IGJhZCByZW1vdmFsIG1lZGlhIG5vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAqIGFuZCBkaXNhYmxlIFVNUyBub3RpZmljYXRpb24gcmVnYXJkbGVzcyBvZiBjb25uZWN0aW9uIHN0YXRlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfd2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTbG9nLncoVEFHLCBTdHJpbmcuZm9ybWF0KCJJZ25vcmluZyB1bmtub3duIHN0YXRlIHslc30iLCBuZXdTdGF0ZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgVVNCIG1hc3Mgc3RvcmFnZSBub3RpZmljYXRpb24KKyAgICAgKi8KKyAgICB2b2lkIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKGJvb2xlYW4gYXZhaWxhYmxlKSB7CisKKyAgICAgICAgaWYgKGF2YWlsYWJsZSkgeworICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgIGludGVudC5zZXRDbGFzcyhtQ29udGV4dCwgY29tLmFuZHJvaWQuc3lzdGVtdWkudXNiLlVzYlN0b3JhZ2VBY3Rpdml0eS5jbGFzcyk7CisgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGFkYk9uID0gMSA9PSBTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KAorICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5BREJfRU5BQkxFRCwKKyAgICAgICAgICAgICAgICAwKTsKKworICAgICAgICAgICAgUGVuZGluZ0ludGVudCBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkobUNvbnRleHQsIDAsIGludGVudCwgMCk7CisgICAgICAgICAgICBzZXRVc2JTdG9yYWdlTm90aWZpY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfdXNiLAorICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZSwgcGkpOworCisgICAgICAgICAgICBpZiAoUE9QX1VNU19BQ1RJVklUWV9PTl9DT05ORUNUICYmICFhZGJPbikgeworICAgICAgICAgICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0IGRldmVsb3BlcnMgZG9uJ3Qgd2FudCB0byBlbmFibGUgVU1TIGV2ZXJ5CisgICAgICAgICAgICAgICAgLy8gdGltZSB0aGV5IGF0dGFjaCBhIGRldmljZSB0byBhIFVTQiBob3N0LiBUaGUgYXZlcmFnZSB1c2VyLAorICAgICAgICAgICAgICAgIC8vIGhvd2V2ZXIsIGlzIGxvb2tpbmcgdG8gY2hhcmdlIHRoZSBwaG9uZSAoaW4gd2hpY2ggY2FzZSB0aGlzCisgICAgICAgICAgICAgICAgLy8gaXMgaGFybWxlc3MpIG9yIHRyYW5zZmVyIGZpbGVzIChpbiB3aGljaCBjYXNlIHRoaXMgY29hY2hlcworICAgICAgICAgICAgICAgIC8vIHRoZSB1c2VyIGFib3V0IGhvdyB0byBjb21wbGV0ZSB0aGF0IHRhc2sgYW5kIHNhdmVzIHNldmVyYWwKKyAgICAgICAgICAgICAgICAvLyBzdGVwcykuCisgICAgICAgICAgICAgICAgbUNvbnRleHQuc3RhcnRBY3Rpdml0eShpbnRlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbigwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIG51bGwpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgVVNCIHN0b3JhZ2Ugbm90aWZpY2F0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbihpbnQgdGl0bGVJZCwgaW50IG1lc3NhZ2VJZCwgaW50IGljb24sCisgICAgICAgICAgICBib29sZWFuIHNvdW5kLCBib29sZWFuIHZpc2libGUsIFBlbmRpbmdJbnRlbnQgcGkpIHsKKworICAgICAgICBpZiAoIXZpc2libGUgJiYgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTm90aWZpY2F0aW9uTWFuYWdlciBub3RpZmljYXRpb25NYW5hZ2VyID0gKE5vdGlmaWNhdGlvbk1hbmFnZXIpIG1Db250ZXh0CisgICAgICAgICAgICAgICAgLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5OT1RJRklDQVRJT05fU0VSVklDRSk7CisKKyAgICAgICAgaWYgKG5vdGlmaWNhdGlvbk1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodmlzaWJsZSkgeworICAgICAgICAgICAgUmVzb3VyY2VzIHIgPSBSZXNvdXJjZXMuZ2V0U3lzdGVtKCk7CisgICAgICAgICAgICBDaGFyU2VxdWVuY2UgdGl0bGUgPSByLmdldFRleHQodGl0bGVJZCk7CisgICAgICAgICAgICBDaGFyU2VxdWVuY2UgbWVzc2FnZSA9IHIuZ2V0VGV4dChtZXNzYWdlSWQpOworCisgICAgICAgICAgICBpZiAobVVzYlN0b3JhZ2VOb3RpZmljYXRpb24gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLmljb24gPSBpY29uOworICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLndoZW4gPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc291bmQpIHsKKyAgICAgICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi5kZWZhdWx0cyB8PSBOb3RpZmljYXRpb24uREVGQVVMVF9TT1VORDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uZGVmYXVsdHMgJj0gfk5vdGlmaWNhdGlvbi5ERUZBVUxUX1NPVU5EOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgPSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOworCisgICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi50aWNrZXJUZXh0ID0gdGl0bGU7CisgICAgICAgICAgICBpZiAocGkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7CisgICAgICAgICAgICAgICAgcGkgPSBQZW5kaW5nSW50ZW50LmdldEJyb2FkY2FzdChtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uc2V0TGF0ZXN0RXZlbnRJbmZvKG1Db250ZXh0LCB0aXRsZSwgbWVzc2FnZSwgcGkpOworICAgICAgICB9CisgICAgCisgICAgICAgIGZpbmFsIGludCBub3RpZmljYXRpb25JZCA9IG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLmljb247CisgICAgICAgIGlmICh2aXNpYmxlKSB7CisgICAgICAgICAgICBub3RpZmljYXRpb25NYW5hZ2VyLm5vdGlmeShub3RpZmljYXRpb25JZCwgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5jYW5jZWwobm90aWZpY2F0aW9uSWQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzeW5jaHJvbml6ZWQgYm9vbGVhbiBnZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb25EaXNtaXNzYWJsZSgpIHsKKyAgICAgICAgaWYgKChtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uICE9IG51bGwpICYmCisgICAgICAgICAgICAoKG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19BVVRPX0NBTkNFTCkgPT0KKyAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1lZGlhIHN0b3JhZ2Ugbm90aWZpY2F0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKGludCB0aXRsZUlkLCBpbnQgbWVzc2FnZUlkLCBpbnQgaWNvbiwgYm9vbGVhbiB2aXNpYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZGlzbWlzc2FibGUsIFBlbmRpbmdJbnRlbnQgcGkpIHsKKworICAgICAgICBpZiAoIXZpc2libGUgJiYgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBOb3RpZmljYXRpb25NYW5hZ2VyIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSAoTm90aWZpY2F0aW9uTWFuYWdlcikgbUNvbnRleHQKKyAgICAgICAgICAgICAgICAuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0Lk5PVElGSUNBVElPTl9TRVJWSUNFKTsKKworICAgICAgICBpZiAobm90aWZpY2F0aW9uTWFuYWdlciA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiAhPSBudWxsICYmIHZpc2libGUpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBEaXNtaXNzIHRoZSBwcmV2aW91cyBub3RpZmljYXRpb24gLSB3ZSdyZSBhYm91dCB0bworICAgICAgICAgICAgICogcmUtdXNlIGl0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBmaW5hbCBpbnQgbm90aWZpY2F0aW9uSWQgPSBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmljb247CisgICAgICAgICAgICBub3RpZmljYXRpb25NYW5hZ2VyLmNhbmNlbChub3RpZmljYXRpb25JZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICh2aXNpYmxlKSB7CisgICAgICAgICAgICBSZXNvdXJjZXMgciA9IFJlc291cmNlcy5nZXRTeXN0ZW0oKTsKKyAgICAgICAgICAgIENoYXJTZXF1ZW5jZSB0aXRsZSA9IHIuZ2V0VGV4dCh0aXRsZUlkKTsKKyAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBtZXNzYWdlID0gci5nZXRUZXh0KG1lc3NhZ2VJZCk7CisKKyAgICAgICAgICAgIGlmIChtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24ud2hlbiA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZGVmYXVsdHMgJj0gfk5vdGlmaWNhdGlvbi5ERUZBVUxUX1NPVU5EOworCisgICAgICAgICAgICBpZiAoZGlzbWlzc2FibGUpIHsKKyAgICAgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmZsYWdzID0gTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgPSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLnRpY2tlclRleHQgPSB0aXRsZTsKKyAgICAgICAgICAgIGlmIChwaSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgICAgICBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QnJvYWRjYXN0KG1Db250ZXh0LCAwLCBpbnRlbnQsIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmljb24gPSBpY29uOworICAgICAgICAgICAgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5zZXRMYXRlc3RFdmVudEluZm8obUNvbnRleHQsIHRpdGxlLCBtZXNzYWdlLCBwaSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZmluYWwgaW50IG5vdGlmaWNhdGlvbklkID0gbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5pY29uOworICAgICAgICBpZiAodmlzaWJsZSkgeworICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5ub3RpZnkobm90aWZpY2F0aW9uSWQsIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5jYW5jZWwobm90aWZpY2F0aW9uSWQpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3VzYi9Vc2JTdG9yYWdlQWN0aXZpdHkuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS91c2IvVXNiU3RvcmFnZUFjdGl2aXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVkMzFlYwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS91c2IvVXNiU3RvcmFnZUFjdGl2aXR5LmphdmEKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgR29vZ2xlIEluYy4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS51c2I7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BbGVydERpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5EaWFsb2c7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DYW5jZWxMaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuSU1vdW50U2VydmljZTsKK2ltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VFdmVudExpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkJ1dHRvbjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBUaGlzIGFjdGl2aXR5IGlzIHNob3duIHRvIHRoZSB1c2VyIGZvciBoaW0vaGVyIHRvIGVuYWJsZSBVU0IgbWFzcyBzdG9yYWdlCisgKiBvbi1kZW1hbmQgKHRoYXQgaXMsIHdoZW4gdGhlIFVTQiBjYWJsZSBpcyBjb25uZWN0ZWQpLiBJdCB1c2VzIHRoZSBhbGVydAorICogZGlhbG9nIHN0eWxlLiBJdCB3aWxsIGJlIGxhdW5jaGVkIGZyb20gYSBub3RpZmljYXRpb24uCisgKi8KK3B1YmxpYyBjbGFzcyBVc2JTdG9yYWdlQWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eQorICAgICAgICBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyLCBPbkNhbmNlbExpc3RlbmVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlVzYlN0b3JhZ2VBY3Rpdml0eSI7CisKKyAgICBwcml2YXRlIEJ1dHRvbiBtTW91bnRCdXR0b247CisgICAgcHJpdmF0ZSBCdXR0b24gbVVubW91bnRCdXR0b247CisgICAgcHJpdmF0ZSBQcm9ncmVzc0JhciBtUHJvZ3Jlc3NCYXI7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQmFubmVyOworICAgIHByaXZhdGUgVGV4dFZpZXcgbU1lc3NhZ2U7CisgICAgcHJpdmF0ZSBJbWFnZVZpZXcgbUljb247CisgICAgcHJpdmF0ZSBTdG9yYWdlTWFuYWdlciBtU3RvcmFnZU1hbmFnZXIgPSBudWxsOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBETEdfQ09ORklSTV9LSUxMX1NUT1JBR0VfVVNFUlMgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBETEdfRVJST1JfU0hBUklORyA9IDI7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gbG9jYWxMT0dWID0gZmFsc2U7CisKKyAgICAvKiogVXNlZCB0byBkZXRlY3Qgd2hlbiB0aGUgVVNCIGNhYmxlIGlzIHVucGx1Z2dlZCwgc28gd2UgY2FuIGNhbGwgZmluaXNoKCkgKi8KKyAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1CYXR0ZXJ5UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBpZiAoaW50ZW50LmdldEFjdGlvbigpID09IEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlQmF0dGVyeUNoYW5nZWQoaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIFN0b3JhZ2VFdmVudExpc3RlbmVyIG1TdG9yYWdlTGlzdGVuZXIgPSBuZXcgU3RvcmFnZUV2ZW50TGlzdGVuZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblN0b3JhZ2VTdGF0ZUNoYW5nZWQoU3RyaW5nIHBhdGgsIFN0cmluZyBvbGRTdGF0ZSwgU3RyaW5nIG5ld1N0YXRlKSB7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIG9uID0gbmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1NIQVJFRCk7CisgICAgICAgICAgICBzd2l0Y2hEaXNwbGF5KG9uKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOworCisgICAgICAgIGlmIChtU3RvcmFnZU1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBnZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RPUkFHRV9TRVJWSUNFKTsKKyAgICAgICAgICAgIGlmIChtU3RvcmFnZU1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byBnZXQgU3RvcmFnZU1hbmFnZXIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlcXVlc3RXaW5kb3dGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpOworICAgICAgICBzZXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVWaXNpYmlsaXR5KHRydWUpOworCisgICAgICAgIHNldFRpdGxlKGdldFN0cmluZyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSkpOworCisgICAgICAgIHNldENvbnRlbnRWaWV3KGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnVzYl9zdG9yYWdlX2FjdGl2aXR5KTsKKworICAgICAgICBtSWNvbiA9IChJbWFnZVZpZXcpIGZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmljb24pOworICAgICAgICBtQmFubmVyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5iYW5uZXIpOworICAgICAgICBtTWVzc2FnZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubWVzc2FnZSk7CisKKyAgICAgICAgbU1vdW50QnV0dG9uID0gKEJ1dHRvbikgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubW91bnRfYnV0dG9uKTsKKyAgICAgICAgbU1vdW50QnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgbVVubW91bnRCdXR0b24gPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC51bm1vdW50X2J1dHRvbik7CisgICAgICAgIG1Vbm1vdW50QnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgbVByb2dyZXNzQmFyID0gKFByb2dyZXNzQmFyKSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5wcm9ncmVzcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHN3aXRjaERpc3BsYXkoYm9vbGVhbiB1c2JTdG9yYWdlSW5Vc2UpIHsKKyAgICAgICAgaWYgKHVzYlN0b3JhZ2VJblVzZSkgeworICAgICAgICAgICAgbVByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1Vbm1vdW50QnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1Nb3VudEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICBtSWNvbi5zZXRJbWFnZVJlc291cmNlKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUudXNiX2FuZHJvaWRfY29ubmVjdGVkKTsKKyAgICAgICAgICAgIG1CYW5uZXIuc2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9zdG9wX3RpdGxlKTsKKyAgICAgICAgICAgIG1NZXNzYWdlLnNldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1Qcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICBtVW5tb3VudEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICBtTW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbUljb24uc2V0SW1hZ2VSZXNvdXJjZShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnVzYl9hbmRyb2lkKTsKKyAgICAgICAgICAgIG1CYW5uZXIuc2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV90aXRsZSk7CisgICAgICAgICAgICBtTWVzc2FnZS5zZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX21lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIHN1cGVyLm9uUmVzdW1lKCk7CisKKyAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLnJlZ2lzdGVyTGlzdGVuZXIobVN0b3JhZ2VMaXN0ZW5lcik7CisgICAgICAgIHJlZ2lzdGVyUmVjZWl2ZXIobUJhdHRlcnlSZWNlaXZlciwgbmV3IEludGVudEZpbHRlcihJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgc3dpdGNoRGlzcGxheShtU3RvcmFnZU1hbmFnZXIuaXNVc2JNYXNzU3RvcmFnZUVuYWJsZWQoKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiRmFpbGVkIHRvIHJlYWQgVU1TIGVuYWJsZSBzdGF0ZSIsIGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uUGF1c2UoKSB7CisgICAgICAgIHN1cGVyLm9uUGF1c2UoKTsKKyAgICAgICAgCisgICAgICAgIHVucmVnaXN0ZXJSZWNlaXZlcihtQmF0dGVyeVJlY2VpdmVyKTsKKyAgICAgICAgaWYgKG1TdG9yYWdlTWFuYWdlciA9PSBudWxsICYmIG1TdG9yYWdlTGlzdGVuZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLnVucmVnaXN0ZXJMaXN0ZW5lcihtU3RvcmFnZUxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVCYXR0ZXJ5Q2hhbmdlZChJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGludCBwbHVnZ2VkVHlwZSA9IGludGVudC5nZXRJbnRFeHRyYSgicGx1Z2dlZCIsIDApOworICAgICAgICBpZiAocGx1Z2dlZFR5cGUgPT0gMCkgeworICAgICAgICAgICAgLy8gSXQgd2FzIGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBwbHVnLCBzbyBmaW5pc2gKKyAgICAgICAgICAgIGZpbmlzaCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBJTW91bnRTZXJ2aWNlIGdldE1vdW50U2VydmljZSgpIHsKKyAgICAgICAgSUJpbmRlciBzZXJ2aWNlID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZSgibW91bnQiKTsKKyAgICAgICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIElNb3VudFNlcnZpY2UuU3R1Yi5hc0ludGVyZmFjZShzZXJ2aWNlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgRGlhbG9nIG9uQ3JlYXRlRGlhbG9nKGludCBpZCwgQnVuZGxlIGFyZ3MpIHsKKyAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICBjYXNlIERMR19DT05GSVJNX0tJTExfU1RPUkFHRV9VU0VSUzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQWxlcnREaWFsb2cuQnVpbGRlcih0aGlzKQorICAgICAgICAgICAgICAgICAgICAuc2V0VGl0bGUoUi5zdHJpbmcuZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RpdGxlKQorICAgICAgICAgICAgICAgICAgICAuc2V0UG9zaXRpdmVCdXR0b24oUi5zdHJpbmcuZGxnX29rLCBuZXcgRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soRGlhbG9nSW50ZXJmYWNlIGRpYWxvZywgaW50IHdoaWNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoVXNiTWFzc1N0b3JhZ2VBc3luYyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH19KQorICAgICAgICAgICAgICAgICAgICAuc2V0TmVnYXRpdmVCdXR0b24oUi5zdHJpbmcuY2FuY2VsLCBudWxsKQorICAgICAgICAgICAgICAgICAgICAuc2V0TWVzc2FnZShSLnN0cmluZy5kbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgLnNldE9uQ2FuY2VsTGlzdGVuZXIodGhpcykKKyAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICBjYXNlIERMR19FUlJPUl9TSEFSSU5HOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKHRoaXMpCisgICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShSLnN0cmluZy5kbGdfZXJyb3JfdGl0bGUpCisgICAgICAgICAgICAgICAgICAgIC5zZXROZXV0cmFsQnV0dG9uKFIuc3RyaW5nLmRsZ19vaywgbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgLnNldE1lc3NhZ2UoUi5zdHJpbmcudXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgLnNldE9uQ2FuY2VsTGlzdGVuZXIodGhpcykKKyAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzaG93RGlhbG9nSW5uZXIoaW50IGlkKSB7CisgICAgICAgIHJlbW92ZURpYWxvZyhpZCk7CisgICAgICAgIHNob3dEaWFsb2coaWQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzd2l0Y2hVc2JNYXNzU3RvcmFnZUFzeW5jKGJvb2xlYW4gb24pIHsKKyAgICAgICAgbVVubW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICBtTW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworCisgICAgICAgIG1Qcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgIC8vIHdpbGwgYmUgaGlkZGVuIG9uY2UgVVNCIG1hc3Mgc3RvcmFnZSBraWNrcyBpbiAob3IgZmFpbHMpCisgICAgICAgIAorICAgICAgICBmaW5hbCBib29sZWFuIF9vbiA9IG9uOworICAgICAgICBuZXcgVGhyZWFkKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGlmIChfb24pIHsKKyAgICAgICAgICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLmVuYWJsZVVzYk1hc3NTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLmRpc2FibGVVc2JNYXNzU3RvcmFnZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfS5zdGFydCgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjaGVja1N0b3JhZ2VVc2VycygpIHsKKyAgICAgICAgSU1vdW50U2VydmljZSBpbXMgPSBnZXRNb3VudFNlcnZpY2UoKTsKKyAgICAgICAgaWYgKGltcyA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyBEaXNwbGF5IGVycm9yIGRpYWxvZworICAgICAgICAgICAgc2hvd0RpYWxvZ0lubmVyKERMR19FUlJPUl9TSEFSSU5HKTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZXh0U3RvcmFnZVBhdGggPSBFbnZpcm9ubWVudC5nZXRFeHRlcm5hbFN0b3JhZ2VEaXJlY3RvcnkoKS50b1N0cmluZygpOworICAgICAgICBib29sZWFuIHNob3dEaWFsb2cgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGludFtdIHN0VXNlcnMgPSBpbXMuZ2V0U3RvcmFnZVVzZXJzKGV4dFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgICAgIGlmIChzdFVzZXJzICE9IG51bGwgJiYgc3RVc2Vycy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgc2hvd0RpYWxvZyA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIExpc3Qgb2YgYXBwbGljYXRpb25zIG9uIHNkY2FyZC4KKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXIgYW0gPSAoQWN0aXZpdHlNYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BQ1RJVklUWV9TRVJWSUNFKTsKKyAgICAgICAgICAgICAgICBMaXN0PEFwcGxpY2F0aW9uSW5mbz4gaW5mb0xpc3QgPSBhbS5nZXRSdW5uaW5nRXh0ZXJuYWxBcHBsaWNhdGlvbnMoKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5mb0xpc3QgIT0gbnVsbCAmJiBpbmZvTGlzdC5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3dEaWFsb2cgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIERpc3BsYXkgZXJyb3IgZGlhbG9nCisgICAgICAgICAgICBzaG93RGlhbG9nSW5uZXIoRExHX0VSUk9SX1NIQVJJTkcpOworICAgICAgICB9CisgICAgICAgIGlmIChzaG93RGlhbG9nKSB7CisgICAgICAgICAgICAvLyBEaXNwbGF5IGRpYWxvZyB0byB1c2VyCisgICAgICAgICAgICBzaG93RGlhbG9nSW5uZXIoRExHX0NPTkZJUk1fS0lMTF9TVE9SQUdFX1VTRVJTKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy5pKFRBRywgIkVuYWJsaW5nIFVNUyIpOworICAgICAgICAgICAgc3dpdGNoVXNiTWFzc1N0b3JhZ2VBc3luYyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgIGlmICh2ID09IG1Nb3VudEJ1dHRvbikgeworICAgICAgICAgICAvLyBDaGVjayBmb3IgbGlzdCBvZiBzdG9yYWdlIHVzZXJzIGFuZCBkaXNwbGF5IGRpYWxvZyBpZiBuZWVkZWQuCisgICAgICAgICAgICBjaGVja1N0b3JhZ2VVc2VycygpOworICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVVubW91bnRCdXR0b24pIHsKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy5pKFRBRywgIkRpc2FibGluZyBVTVMiKTsKKyAgICAgICAgICAgIHN3aXRjaFVzYk1hc3NTdG9yYWdlQXN5bmMoZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25DYW5jZWwoRGlhbG9nSW50ZXJmYWNlIGRpYWxvZykgeworICAgICAgICBmaW5pc2goKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ZwblNlcnZpY2VzL3NyYy9jb20vYW5kcm9pZC9zZXJ2ZXIvdnBuL1ZwblNlcnZpY2VCaW5kZXIuamF2YSBiL3BhY2thZ2VzL1ZwblNlcnZpY2VzL3NyYy9jb20vYW5kcm9pZC9zZXJ2ZXIvdnBuL1ZwblNlcnZpY2VCaW5kZXIuamF2YQppbmRleCA1NjcyYTAxLi5lZWFmZDVhIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9WcG5TZXJ2aWNlcy9zcmMvY29tL2FuZHJvaWQvc2VydmVyL3Zwbi9WcG5TZXJ2aWNlQmluZGVyLmphdmEKKysrIGIvcGFja2FnZXMvVnBuU2VydmljZXMvc3JjL2NvbS9hbmRyb2lkL3NlcnZlci92cG4vVnBuU2VydmljZUJpbmRlci5qYXZhCkBAIC01Miw4ICs1MiwxMSBAQAogICAgIC8vIFRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gaXMgZGVsZWdhdGVkIHRvIHRoZSBWcG5TZXJ2aWNlIGNsYXNzLgogICAgIHByaXZhdGUgVnBuU2VydmljZTw/IGV4dGVuZHMgVnBuUHJvZmlsZT4gbVNlcnZpY2U7CiAKKyAgICAvLyBUT0RPKG9hbSk6IFRlc3QgVlBOIHdoZW4gRUZTIGlzIGVuYWJsZWQgKHdpbGwgZG8gbGF0ZXIpLi4uCiAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldFN0YXRlRmlsZVBhdGgoKSB7Ci0JcmV0dXJuIEVudmlyb25tZW50LmdldERhdGFEaXJlY3RvcnkoKS5nZXRQYXRoKCkgKyBTVEFURVNfRklMRV9SRUxBVElWRV9QQVRIOworICAgICAgICAvLyBUaGlzIGNhbGwgd2lsbCByZXR1cm4gdGhlIGNvcnJlY3UgZGlyZWN0b3J5IHdoZXRoZXIgRW5jcnlwdGVkIEZTIGlzIGVuYWJsZWQgb3Igbm90CisgICAgICAgIC8vIERpc2FibGVkOiAvZGF0YS9taXNjL3Zwbi8uc3RhdGVzICAgRW5hYmxlZDogL2RhdGEvc2VjdXJlL21pc2MvdnBuLy5zdGF0ZXMKKwlyZXR1cm4gRW52aXJvbm1lbnQuZ2V0U2VjdXJlRGF0YURpcmVjdG9yeSgpLmdldFBhdGgoKSArIFNUQVRFU19GSUxFX1JFTEFUSVZFX1BBVEg7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBmaW5hbCBJQmluZGVyIG1CaW5kZXIgPSBuZXcgSVZwblNlcnZpY2UuU3R1YigpIHsKZGlmZiAtLWdpdCBhL3BvbGljeS9BbmRyb2lkLm1rIGIvcG9saWN5L0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdkOGZiOAotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMTQgQEAKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQorCisjIHRoZSBsaWJyYXJ5CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGNhbGwgYWxsLWphdmEtZmlsZXMtdW5kZXIsIHNyYykKKyAgICAgICAgICAgIAorTE9DQUxfTU9EVUxFIDo9IGFuZHJvaWQucG9saWN5CisKK2luY2x1ZGUgJChCVUlMRF9KQVZBX0xJQlJBUlkpCisKKyMgYWRkaXRpb25hbGx5LCBidWlsZCB1bml0IHRlc3RzIGluIGEgc2VwYXJhdGUgLmFwaworaW5jbHVkZSAkKGNhbGwgYWxsLW1ha2VmaWxlcy11bmRlciwkKExPQ0FMX1BBVEgpKQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9BY2NvdW50VW5sb2NrU2NyZWVuLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0FjY291bnRVbmxvY2tTY3JlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDBjNWUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9BY2NvdW50VW5sb2NrU2NyZWVuLmphdmEKQEAgLTAsMCArMSwzNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKKworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuQWNjb3VudDsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckZ1dHVyZTsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLkF1dGhlbnRpY2F0b3JFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckNhbGxiYWNrOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKK2ltcG9ydCBhbmRyb2lkLnRleHQuRWRpdGFibGU7CitpbXBvcnQgYW5kcm9pZC50ZXh0LklucHV0RmlsdGVyOworaW1wb3J0IGFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5CdXR0b247CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRWRpdFRleHQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CitpbXBvcnQgYW5kcm9pZC5hcHAuRGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLlByb2dyZXNzRGlhbG9nOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBXaGVuIHRoZSB1c2VyIGZvcmdldHMgdGhlaXIgcGFzc3dvcmQgYSBidW5jaCBvZiB0aW1lcywgd2UgZmFsbCBiYWNrIG9uIHRoZWlyCisgKiBhY2NvdW50J3MgbG9naW4vcGFzc3dvcmQgdG8gdW5sb2NrIHRoZSBwaG9uZSAoYW5kIHJlc2V0IHRoZWlyIGxvY2sgcGF0dGVybikuCisgKi8KK3B1YmxpYyBjbGFzcyBBY2NvdW50VW5sb2NrU2NyZWVuIGV4dGVuZHMgUmVsYXRpdmVMYXlvdXQgaW1wbGVtZW50cyBLZXlndWFyZFNjcmVlbiwKKyAgICAgICAgS2V5Z3VhcmRVcGRhdGVNb25pdG9yLkluZm9DYWxsYmFjayxWaWV3Lk9uQ2xpY2tMaXN0ZW5lciwgVGV4dFdhdGNoZXIgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBMT0NLX1BBVFRFUk5fUEFDS0FHRSA9ICJjb20uYW5kcm9pZC5zZXR0aW5ncyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0tfUEFUVEVSTl9DTEFTUyA9CisgICAgICAgICAgICAiY29tLmFuZHJvaWQuc2V0dGluZ3MuQ2hvb3NlTG9ja1BhdHRlcm4iOworCisgICAgLyoqCisgICAgICogVGhlIGFtb3VudCBvZiBtaWxsaXMgdG8gc3RheSBhd2FrZSBvbmNlIHRoaXMgc2NyZWVuIGRldGVjdHMgYWN0aXZpdHkKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQVdBS0VfUE9LRV9NSUxMSVMgPSAzMDAwMDsKKworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayBtQ2FsbGJhY2s7CisgICAgcHJpdmF0ZSBmaW5hbCBMb2NrUGF0dGVyblV0aWxzIG1Mb2NrUGF0dGVyblV0aWxzOworICAgIHByaXZhdGUgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworCisgICAgcHJpdmF0ZSBUZXh0VmlldyBtVG9wSGVhZGVyOworICAgIHByaXZhdGUgVGV4dFZpZXcgbUluc3RydWN0aW9uczsKKyAgICBwcml2YXRlIEVkaXRUZXh0IG1Mb2dpbjsKKyAgICBwcml2YXRlIEVkaXRUZXh0IG1QYXNzd29yZDsKKyAgICBwcml2YXRlIEJ1dHRvbiBtT2s7CisgICAgcHJpdmF0ZSBCdXR0b24gbUVtZXJnZW5jeUNhbGw7CisKKyAgICAvKioKKyAgICAgKiBTaG93biB3aGlsZSBtYWtpbmcgYXN5bmNocm9ub3VzIGNoZWNrIG9mIHBhc3N3b3JkLgorICAgICAqLworICAgIHByaXZhdGUgUHJvZ3Jlc3NEaWFsb2cgbUNoZWNraW5nRGlhbG9nOworCisgICAgLyoqCisgICAgICogQWNjb3VudFVubG9ja1NjcmVlbiBjb25zdHJ1Y3Rvci4KKyAgICAgKiBAcGFyYW0gY29uZmlndXJhdGlvbgorICAgICAqIEBwYXJhbSB1cGRhdGVNb25pdG9yCisgICAgICovCisgICAgcHVibGljIEFjY291bnRVbmxvY2tTY3JlZW4oQ29udGV4dCBjb250ZXh0LENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLCBLZXlndWFyZFNjcmVlbkNhbGxiYWNrIGNhbGxiYWNrLAorICAgICAgICAgICAgTG9ja1BhdHRlcm5VdGlscyBsb2NrUGF0dGVyblV0aWxzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMgPSBsb2NrUGF0dGVyblV0aWxzOworCisgICAgICAgIExheW91dEluZmxhdGVyLmZyb20oY29udGV4dCkuaW5mbGF0ZSgKKyAgICAgICAgICAgICAgICBSLmxheW91dC5rZXlndWFyZF9zY3JlZW5fZ2xvZ2luX3VubG9jaywgdGhpcywgdHJ1ZSk7CisKKyAgICAgICAgbVRvcEhlYWRlciA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQudG9wSGVhZGVyKTsKKyAgICAgICAgbVRvcEhlYWRlci5zZXRUZXh0KG1Mb2NrUGF0dGVyblV0aWxzLmlzUGVybWFuZW50bHlMb2NrZWQoKSA/CisgICAgICAgICAgICAgICAgUi5zdHJpbmcubG9ja3NjcmVlbl9nbG9naW5fdG9vX21hbnlfYXR0ZW1wdHMgOgorICAgICAgICAgICAgICAgIFIuc3RyaW5nLmxvY2tzY3JlZW5fZ2xvZ2luX2ZvcmdvdF9wYXR0ZXJuKTsKKworICAgICAgICBtSW5zdHJ1Y3Rpb25zID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5pbnN0cnVjdGlvbnMpOworCisgICAgICAgIG1Mb2dpbiA9IChFZGl0VGV4dCkgZmluZFZpZXdCeUlkKFIuaWQubG9naW4pOworICAgICAgICBtTG9naW4uc2V0RmlsdGVycyhuZXcgSW5wdXRGaWx0ZXJbXSB7IG5ldyBMb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdlbmVyaWMoKSB9ICk7CisgICAgICAgIG1Mb2dpbi5hZGRUZXh0Q2hhbmdlZExpc3RlbmVyKHRoaXMpOworCisgICAgICAgIG1QYXNzd29yZCA9IChFZGl0VGV4dCkgZmluZFZpZXdCeUlkKFIuaWQucGFzc3dvcmQpOworICAgICAgICBtUGFzc3dvcmQuYWRkVGV4dENoYW5nZWRMaXN0ZW5lcih0aGlzKTsKKworICAgICAgICBtT2sgPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5vayk7CisgICAgICAgIG1Pay5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgbUVtZXJnZW5jeUNhbGwgPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5lbWVyZ2VuY3lDYWxsKTsKKyAgICAgICAgbUVtZXJnZW5jeUNhbGwuc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUNhbGwpOworCisgICAgICAgIG1VcGRhdGVNb25pdG9yID0gdXBkYXRlTW9uaXRvcjsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IucmVnaXN0ZXJJbmZvQ2FsbGJhY2sodGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWZ0ZXJUZXh0Q2hhbmdlZChFZGl0YWJsZSBzKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYmVmb3JlVGV4dENoYW5nZWQoQ2hhclNlcXVlbmNlIHMsIGludCBzdGFydCwgaW50IGNvdW50LCBpbnQgYWZ0ZXIpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblRleHRDaGFuZ2VkKENoYXJTZXF1ZW5jZSBzLCBpbnQgc3RhcnQsIGludCBiZWZvcmUsIGludCBjb3VudCkgeworICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKEFXQUtFX1BPS0VfTUlMTElTKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBvblJlcXVlc3RGb2N1c0luRGVzY2VuZGFudHMoaW50IGRpcmVjdGlvbiwKKyAgICAgICAgICAgIFJlY3QgcHJldmlvdXNseUZvY3VzZWRSZWN0KSB7CisgICAgICAgIC8vIHNlbmQgZm9jdXMgdG8gdGhlIGxvZ2luIGZpZWxkCisgICAgICAgIHJldHVybiBtTG9naW4ucmVxdWVzdEZvY3VzKGRpcmVjdGlvbiwgcHJldmlvdXNseUZvY3VzZWRSZWN0KTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBib29sZWFuIG5lZWRzSW5wdXQoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIC8vIHN0YXJ0IGZyZXNoCisgICAgICAgIG1Mb2dpbi5zZXRUZXh0KCIiKTsKKyAgICAgICAgbVBhc3N3b3JkLnNldFRleHQoIiIpOworICAgICAgICBtTG9naW4ucmVxdWVzdEZvY3VzKCk7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLnVwZGF0ZUVtZXJnZW5jeUNhbGxCdXR0b25TdGF0ZShtRW1lcmdlbmN5Q2FsbCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhblVwKCkgeworICAgICAgICBpZiAobUNoZWNraW5nRGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1DaGVja2luZ0RpYWxvZy5oaWRlKCk7CisgICAgICAgIH0KKyAgICAgICAgbVVwZGF0ZU1vbml0b3IucmVtb3ZlQ2FsbGJhY2sodGhpcyk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgICAgIGlmICh2ID09IG1PaykgeworICAgICAgICAgICAgYXN5bmNDaGVja1Bhc3N3b3JkKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodiA9PSBtRW1lcmdlbmN5Q2FsbCkgeworICAgICAgICAgICAgbUNhbGxiYWNrLnRha2VFbWVyZ2VuY3lDYWxsQWN0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcG9zdE9uQ2hlY2tQYXNzd29yZFJlc3VsdChmaW5hbCBib29sZWFuIHN1Y2Nlc3MpIHsKKyAgICAgICAgLy8gZW5zdXJlIHRoaXMgcnVucyBvbiBVSSB0aHJlYWQKKyAgICAgICAgbUxvZ2luLnBvc3QobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIG91dCBmb3Jnb3R0ZW4gcGFzc3dvcmQKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMuc2V0UGVybWFuZW50bHlMb2NrZWQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy5zZXRMb2NrUGF0dGVybkVuYWJsZWQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy5zYXZlTG9ja1BhdHRlcm4obnVsbCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gbGF1bmNoIHRoZSAnY2hvb3NlIGxvY2sgcGF0dGVybicgYWN0aXZpdHkgc28KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHVzZXIgY2FuIHBpY2sgYSBuZXcgb25lIGlmIHRoZXkgd2FudCB0bworICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOworICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0Q2xhc3NOYW1lKExPQ0tfUEFUVEVSTl9QQUNLQUdFLCBMT0NLX1BBVFRFUk5fQ0xBU1MpOworICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgICAgICAgICAgICAgIG1DYWxsYmFjay5yZXBvcnRTdWNjZXNzZnVsVW5sb2NrQXR0ZW1wdCgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBrZXlndWFyZAorICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2sua2V5Z3VhcmREb25lKHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1JbnN0cnVjdGlvbnMuc2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX2dsb2dpbl9pbnZhbGlkX2lucHV0KTsKKyAgICAgICAgICAgICAgICAgICAgbVBhc3N3b3JkLnNldFRleHQoIiIpOworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2sucmVwb3J0RmFpbGVkVW5sb2NrQXR0ZW1wdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hLZXlFdmVudChLZXlFdmVudCBldmVudCkgeworICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gS2V5RXZlbnQuQUNUSU9OX0RPV04KKyAgICAgICAgICAgICAgICAmJiBldmVudC5nZXRLZXlDb2RlKCkgPT0gS2V5RXZlbnQuS0VZQ09ERV9CQUNLKSB7CisgICAgICAgICAgICBpZiAobUxvY2tQYXR0ZXJuVXRpbHMuaXNQZXJtYW5lbnRseUxvY2tlZCgpKSB7CisgICAgICAgICAgICAgICAgbUNhbGxiYWNrLmdvVG9Mb2NrU2NyZWVuKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5mb3Jnb3RQYXR0ZXJuKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdXBlci5kaXNwYXRjaEtleUV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiB0aGUgc3RyaW5nIHRoZSB1c2VyIGVudGVyZWQgaW4gdGhlICd1c2VybmFtZScgZmllbGQsIGZpbmQKKyAgICAgKiB0aGUgc3RvcmVkIGFjY291bnQgdGhhdCB0aGV5IHByb2JhYmx5IGludGVuZGVkLiAgUHJlZmVyLCBpbiBvcmRlcjoKKyAgICAgKgorICAgICAqICAgLSBhbiBleGFjdCBtYXRjaCBmb3Igd2hhdCB3YXMgdHlwZWQsIG9yCisgICAgICogICAtIGEgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3Igd2hhdCB3YXMgdHlwZWQsIG9yCisgICAgICogICAtIGlmIHRoZXkgZGlkbid0IGluY2x1ZGUgYSBkb21haW4sIGFuIGV4YWN0IG1hdGNoIG9mIHRoZSB1c2VybmFtZSwgb3IKKyAgICAgKiAgIC0gaWYgdGhleSBkaWRuJ3QgaW5jbHVkZSBhIGRvbWFpbiwgYSBjYXNlLWluc2Vuc2l0aXZlCisgICAgICogICAgIG1hdGNoIG9mIHRoZSB1c2VybmFtZS4KKyAgICAgKgorICAgICAqIElmIHRoZXJlIGlzIGEgdGllIGZvciB0aGUgYmVzdCBtYXRjaCwgY2hvb3NlIG5laXRoZXIgLS0KKyAgICAgKiB0aGUgdXNlciBuZWVkcyB0byBiZSBtb3JlIHNwZWNpZmljLgorICAgICAqCisgICAgICogQHJldHVybiBhbiBhY2NvdW50IG5hbWUgZnJvbSB0aGUgZGF0YWJhc2UsIG9yIG51bGwgaWYgd2UgY2FuJ3QKKyAgICAgKiBmaW5kIGEgc2luZ2xlIGJlc3QgbWF0Y2guCisgICAgICovCisgICAgcHJpdmF0ZSBBY2NvdW50IGZpbmRJbnRlbmRlZEFjY291bnQoU3RyaW5nIHVzZXJuYW1lKSB7CisgICAgICAgIEFjY291bnRbXSBhY2NvdW50cyA9IEFjY291bnRNYW5hZ2VyLmdldChtQ29udGV4dCkuZ2V0QWNjb3VudHNCeVR5cGUoImNvbS5nb29nbGUiKTsKKworICAgICAgICAvLyBUcnkgdG8gZmlndXJlIG91dCB3aGljaCBhY2NvdW50IHRoZXkgbWVhbnQgaWYgdGhleQorICAgICAgICAvLyB0eXBlZCBvbmx5IHRoZSB1c2VybmFtZSAoYW5kIG5vdCB0aGUgZG9tYWluKSwgb3IgZ290CisgICAgICAgIC8vIHRoZSBjYXNlIHdyb25nLgorCisgICAgICAgIEFjY291bnQgYmVzdEFjY291bnQgPSBudWxsOworICAgICAgICBpbnQgYmVzdFNjb3JlID0gMDsKKyAgICAgICAgZm9yIChBY2NvdW50IGE6IGFjY291bnRzKSB7CisgICAgICAgICAgICBpbnQgc2NvcmUgPSAwOworICAgICAgICAgICAgaWYgKHVzZXJuYW1lLmVxdWFscyhhLm5hbWUpKSB7CisgICAgICAgICAgICAgICAgc2NvcmUgPSA0OworICAgICAgICAgICAgfSBlbHNlIGlmICh1c2VybmFtZS5lcXVhbHNJZ25vcmVDYXNlKGEubmFtZSkpIHsKKyAgICAgICAgICAgICAgICBzY29yZSA9IDM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHVzZXJuYW1lLmluZGV4T2YoJ0AnKSA8IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IGEubmFtZS5pbmRleE9mKCdAJyk7CisgICAgICAgICAgICAgICAgaWYgKGkgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYVVzZXJuYW1lID0gYS5uYW1lLnN1YnN0cmluZygwLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJuYW1lLmVxdWFscyhhVXNlcm5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY29yZSA9IDI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNlcm5hbWUuZXF1YWxzSWdub3JlQ2FzZShhVXNlcm5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY29yZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2NvcmUgPiBiZXN0U2NvcmUpIHsKKyAgICAgICAgICAgICAgICBiZXN0QWNjb3VudCA9IGE7CisgICAgICAgICAgICAgICAgYmVzdFNjb3JlID0gc2NvcmU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNjb3JlID09IGJlc3RTY29yZSkgeworICAgICAgICAgICAgICAgIGJlc3RBY2NvdW50ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYmVzdEFjY291bnQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGFzeW5jQ2hlY2tQYXNzd29yZCgpIHsKKyAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jayhBV0FLRV9QT0tFX01JTExJUyk7CisgICAgICAgIGZpbmFsIFN0cmluZyBsb2dpbiA9IG1Mb2dpbi5nZXRUZXh0KCkudG9TdHJpbmcoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHBhc3N3b3JkID0gbVBhc3N3b3JkLmdldFRleHQoKS50b1N0cmluZygpOworICAgICAgICBBY2NvdW50IGFjY291bnQgPSBmaW5kSW50ZW5kZWRBY2NvdW50KGxvZ2luKTsKKyAgICAgICAgaWYgKGFjY291bnQgPT0gbnVsbCkgeworICAgICAgICAgICAgcG9zdE9uQ2hlY2tQYXNzd29yZFJlc3VsdChmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ2V0UHJvZ3Jlc3NEaWFsb2coKS5zaG93KCk7CisgICAgICAgIEJ1bmRsZSBvcHRpb25zID0gbmV3IEJ1bmRsZSgpOworICAgICAgICBvcHRpb25zLnB1dFN0cmluZyhBY2NvdW50TWFuYWdlci5LRVlfUEFTU1dPUkQsIHBhc3N3b3JkKTsKKyAgICAgICAgQWNjb3VudE1hbmFnZXIuZ2V0KG1Db250ZXh0KS5jb25maXJtQ3JlZGVudGlhbHMoYWNjb3VudCwgb3B0aW9ucywgbnVsbCAvKiBhY3Rpdml0eSAqLywKKyAgICAgICAgICAgICAgICBuZXcgQWNjb3VudE1hbmFnZXJDYWxsYmFjazxCdW5kbGU+KCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKEFjY291bnRNYW5hZ2VyRnV0dXJlPEJ1bmRsZT4gZnV0dXJlKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jayhBV0FLRV9QT0tFX01JTExJUyk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIEJ1bmRsZSByZXN1bHQgPSBmdXR1cmUuZ2V0UmVzdWx0KCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gdmVyaWZpZWQgPSByZXN1bHQuZ2V0Qm9vbGVhbihBY2NvdW50TWFuYWdlci5LRVlfQk9PTEVBTl9SRVNVTFQpOworICAgICAgICAgICAgICAgICAgICBwb3N0T25DaGVja1Bhc3N3b3JkUmVzdWx0KHZlcmlmaWVkKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIHBvc3RPbkNoZWNrUGFzc3dvcmRSZXN1bHQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zdE9uQ2hlY2tQYXNzd29yZFJlc3VsdChmYWxzZSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoQXV0aGVudGljYXRvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIHBvc3RPbkNoZWNrUGFzc3dvcmRSZXN1bHQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIG1Mb2dpbi5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcm9ncmVzc0RpYWxvZygpLmhpZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LCBudWxsIC8qIGhhbmRsZXIgKi8pOworICAgIH0KKworICAgIHByaXZhdGUgRGlhbG9nIGdldFByb2dyZXNzRGlhbG9nKCkgeworICAgICAgICBpZiAobUNoZWNraW5nRGlhbG9nID09IG51bGwpIHsKKyAgICAgICAgICAgIG1DaGVja2luZ0RpYWxvZyA9IG5ldyBQcm9ncmVzc0RpYWxvZyhtQ29udGV4dCk7CisgICAgICAgICAgICBtQ2hlY2tpbmdEaWFsb2cuc2V0TWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fZ2xvZ2luX2NoZWNraW5nX3Bhc3N3b3JkKSk7CisgICAgICAgICAgICBtQ2hlY2tpbmdEaWFsb2cuc2V0SW5kZXRlcm1pbmF0ZSh0cnVlKTsKKyAgICAgICAgICAgIG1DaGVja2luZ0RpYWxvZy5zZXRDYW5jZWxhYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIG1DaGVja2luZ0RpYWxvZy5nZXRXaW5kb3coKS5zZXRUeXBlKAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEX0RJQUxPRyk7CisgICAgICAgICAgICBpZiAoIW1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfc2Zfc2xvd0JsdXIpKSB7CisgICAgICAgICAgICAgICAgbUNoZWNraW5nRGlhbG9nLmdldFdpbmRvdygpLnNldEZsYWdzKAorICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19CTFVSX0JFSElORCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBtQ2hlY2tpbmdEaWFsb2c7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25QaG9uZVN0YXRlQ2hhbmdlZChTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblJlZnJlc2hCYXR0ZXJ5SW5mbyhib29sZWFuIHNob3dCYXR0ZXJ5SW5mbywgYm9vbGVhbiBwbHVnZ2VkSW4sIGludCBiYXR0ZXJ5TGV2ZWwpIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uUmVmcmVzaENhcnJpZXJJbmZvKENoYXJTZXF1ZW5jZSBwbG1uLCBDaGFyU2VxdWVuY2Ugc3BuKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblJpbmdlck1vZGVDaGFuZ2VkKGludCBzdGF0ZSkgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25UaW1lQ2hhbmdlZCgpIHsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvR2xvYmFsQWN0aW9ucy5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9HbG9iYWxBY3Rpb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYwNmRjYwotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvR2xvYmFsQWN0aW9ucy5qYXZhCkBAIC0wLDAgKzEsNTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLlN0YXR1c0Jhck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVTdGF0ZUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZTsKK2ltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQmFzZUFkYXB0ZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLlNodXRkb3duVGhyZWFkOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5UZWxlcGhvbnlJbnRlbnRzOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5UZWxlcGhvbnlQcm9wZXJ0aWVzOworaW1wb3J0IGNvbS5nb29nbGUuYW5kcm9pZC5jb2xsZWN0Lkxpc3RzOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworLyoqCisgKiBIZWxwZXIgdG8gc2hvdyB0aGUgZ2xvYmFsIGFjdGlvbnMgZGlhbG9nLiAgRWFjaCBpdGVtIGlzIGFuIHtAbGluayBBY3Rpb259IHRoYXQKKyAqIG1heSBzaG93IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLCBhbmQgd2hldGhlciB0aGUgZGV2aWNlCisgKiBpcyBwcm92aXNpb25lZC4KKyAqLworY2xhc3MgR2xvYmFsQWN0aW9ucyBpbXBsZW1lbnRzIERpYWxvZ0ludGVyZmFjZS5PbkRpc21pc3NMaXN0ZW5lciwgRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciAgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJHbG9iYWxBY3Rpb25zIjsKKworICAgIHByaXZhdGUgU3RhdHVzQmFyTWFuYWdlciBtU3RhdHVzQmFyOworCisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgZmluYWwgQXVkaW9NYW5hZ2VyIG1BdWRpb01hbmFnZXI7CisKKyAgICBwcml2YXRlIEFycmF5TGlzdDxBY3Rpb24+IG1JdGVtczsKKyAgICBwcml2YXRlIEFsZXJ0RGlhbG9nIG1EaWFsb2c7CisKKyAgICBwcml2YXRlIFRvZ2dsZUFjdGlvbiBtU2lsZW50TW9kZVRvZ2dsZTsKKyAgICBwcml2YXRlIFRvZ2dsZUFjdGlvbiBtQWlycGxhbmVNb2RlT247CisKKyAgICBwcml2YXRlIE15QWRhcHRlciBtQWRhcHRlcjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtS2V5Z3VhcmRTaG93aW5nID0gZmFsc2U7CisgICAgcHJpdmF0ZSBib29sZWFuIG1EZXZpY2VQcm92aXNpb25lZCA9IGZhbHNlOworICAgIHByaXZhdGUgVG9nZ2xlQWN0aW9uLlN0YXRlIG1BaXJwbGFuZVN0YXRlID0gVG9nZ2xlQWN0aW9uLlN0YXRlLk9mZjsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUlzV2FpdGluZ0ZvckVjbUV4aXQgPSBmYWxzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSBjb250ZXh0IGV2ZXJ5dGhpbmcgbmVlZHMgYSBjb250ZXh0IDooCisgICAgICovCisgICAgcHVibGljIEdsb2JhbEFjdGlvbnMoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbUF1ZGlvTWFuYWdlciA9IChBdWRpb01hbmFnZXIpIG1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BVURJT19TRVJWSUNFKTsKKworICAgICAgICAvLyByZWNlaXZlIGJyb2FkY2FzdHMKKyAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1NDUkVFTl9PRkYpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX0VNRVJHRU5DWV9DQUxMQkFDS19NT0RFX0NIQU5HRUQpOworICAgICAgICBjb250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobUJyb2FkY2FzdFJlY2VpdmVyLCBmaWx0ZXIpOworCisgICAgICAgIC8vIGdldCBub3RpZmllZCBvZiBwaG9uZSBzdGF0ZSBjaGFuZ2VzCisgICAgICAgIFRlbGVwaG9ueU1hbmFnZXIgdGVsZXBob255TWFuYWdlciA9CisgICAgICAgICAgICAgICAgKFRlbGVwaG9ueU1hbmFnZXIpIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlRFTEVQSE9OWV9TRVJWSUNFKTsKKyAgICAgICAgdGVsZXBob255TWFuYWdlci5saXN0ZW4obVBob25lU3RhdGVMaXN0ZW5lciwgUGhvbmVTdGF0ZUxpc3RlbmVyLkxJU1RFTl9TRVJWSUNFX1NUQVRFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaG93IHRoZSBnbG9iYWwgYWN0aW9ucyBkaWFsb2cgKGNyZWF0aW5nIGlmIG5lY2Vzc2FyeSkKKyAgICAgKiBAcGFyYW0ga2V5Z3VhcmRTaG93aW5nIFRydWUgaWYga2V5Z3VhcmQgaXMgc2hvd2luZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNob3dEaWFsb2coYm9vbGVhbiBrZXlndWFyZFNob3dpbmcsIGJvb2xlYW4gaXNEZXZpY2VQcm92aXNpb25lZCkgeworICAgICAgICBtS2V5Z3VhcmRTaG93aW5nID0ga2V5Z3VhcmRTaG93aW5nOworICAgICAgICBtRGV2aWNlUHJvdmlzaW9uZWQgPSBpc0RldmljZVByb3Zpc2lvbmVkOworICAgICAgICBpZiAobURpYWxvZyA9PSBudWxsKSB7CisgICAgICAgICAgICBtU3RhdHVzQmFyID0gKFN0YXR1c0Jhck1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUQVRVU19CQVJfU0VSVklDRSk7CisgICAgICAgICAgICBtRGlhbG9nID0gY3JlYXRlRGlhbG9nKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJlcGFyZURpYWxvZygpOworCisgICAgICAgIG1TdGF0dXNCYXIuZGlzYWJsZShTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKTsKKyAgICAgICAgbURpYWxvZy5zaG93KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIHRoZSBnbG9iYWwgYWN0aW9ucyBkaWFsb2cuCisgICAgICogQHJldHVybiBBIG5ldyBkaWFsb2cuCisgICAgICovCisgICAgcHJpdmF0ZSBBbGVydERpYWxvZyBjcmVhdGVEaWFsb2coKSB7CisgICAgICAgIG1TaWxlbnRNb2RlVG9nZ2xlID0gbmV3IFRvZ2dsZUFjdGlvbigKKyAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX2xvY2tfc2lsZW50X21vZGUsCisgICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5pY19sb2NrX3NpbGVudF9tb2RlX29mZiwKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5nbG9iYWxfYWN0aW9uX3RvZ2dsZV9zaWxlbnRfbW9kZSwKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5nbG9iYWxfYWN0aW9uX3NpbGVudF9tb2RlX29uX3N0YXR1cywKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5nbG9iYWxfYWN0aW9uX3NpbGVudF9tb2RlX29mZl9zdGF0dXMpIHsKKworICAgICAgICAgICAgdm9pZCB3aWxsQ3JlYXRlKCkgeworICAgICAgICAgICAgICAgIC8vIFhYWDogRklYTUU6IHN3aXRjaCB0byBpY19sb2NrX3ZpYnJhdGVfbW9kZSB3aGVuIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIG1FbmFibGVkSWNvblJlc0lkID0gKFNldHRpbmdzLlN5c3RlbS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uVklCUkFURV9JTl9TSUxFTlQsIDEpID09IDEpCisgICAgICAgICAgICAgICAgICAgID8gUi5kcmF3YWJsZS5pY19sb2NrX3NpbGVudF9tb2RlX3ZpYnJhdGUKKyAgICAgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmljX2xvY2tfc2lsZW50X21vZGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZvaWQgb25Ub2dnbGUoYm9vbGVhbiBvbikgeworICAgICAgICAgICAgICAgIGlmIChvbikgeworICAgICAgICAgICAgICAgICAgICBtQXVkaW9NYW5hZ2VyLnNldFJpbmdlck1vZGUoKFNldHRpbmdzLlN5c3RlbS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uVklCUkFURV9JTl9TSUxFTlQsIDEpID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICA/IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFCisgICAgICAgICAgICAgICAgICAgICAgICA6IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9TSUxFTlQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1BdWRpb01hbmFnZXIuc2V0UmluZ2VyTW9kZShBdWRpb01hbmFnZXIuUklOR0VSX01PREVfTk9STUFMKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dEdXJpbmdLZXlndWFyZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gc2hvd0JlZm9yZVByb3Zpc2lvbmluZygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgbUFpcnBsYW5lTW9kZU9uID0gbmV3IFRvZ2dsZUFjdGlvbigKKyAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX2xvY2tfYWlycGxhbmVfbW9kZSwKKyAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX2xvY2tfYWlycGxhbmVfbW9kZV9vZmYsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuZ2xvYmFsX2FjdGlvbnNfdG9nZ2xlX2FpcnBsYW5lX21vZGUsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuZ2xvYmFsX2FjdGlvbnNfYWlycGxhbmVfbW9kZV9vbl9zdGF0dXMsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuZ2xvYmFsX2FjdGlvbnNfYWlycGxhbmVfbW9kZV9vZmZfc3RhdHVzKSB7CisKKyAgICAgICAgICAgIHZvaWQgb25Ub2dnbGUoYm9vbGVhbiBvbikgeworICAgICAgICAgICAgICAgIGlmIChCb29sZWFuLnBhcnNlQm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVByb3BlcnRpZXMuZ2V0KFRlbGVwaG9ueVByb3BlcnRpZXMuUFJPUEVSVFlfSU5FQ01fTU9ERSkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1Jc1dhaXRpbmdGb3JFY21FeGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTGF1bmNoIEVDTSBleGl0IGRpYWxvZworICAgICAgICAgICAgICAgICAgICBJbnRlbnQgZWNtRGlhbG9nSW50ZW50ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZW50KFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NIT1dfTk9USUNFX0VDTV9CTE9DS19PVEhFUlMsIG51bGwpOworICAgICAgICAgICAgICAgICAgICBlY21EaWFsb2dJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KGVjbURpYWxvZ0ludGVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlQWlycGxhbmVNb2RlU3lzdGVtU2V0dGluZyhvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHByb3RlY3RlZCB2b2lkIGNoYW5nZVN0YXRlRnJvbVByZXNzKGJvb2xlYW4gYnV0dG9uT24pIHsKKyAgICAgICAgICAgICAgICAvLyBJbiBFQ00gbW9kZSBhaXJwbGFuZSBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZAorICAgICAgICAgICAgICAgIGlmICghKEJvb2xlYW4ucGFyc2VCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtUHJvcGVydGllcy5nZXQoVGVsZXBob255UHJvcGVydGllcy5QUk9QRVJUWV9JTkVDTV9NT0RFKSkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1TdGF0ZSA9IGJ1dHRvbk9uID8gU3RhdGUuVHVybmluZ09uIDogU3RhdGUuVHVybmluZ09mZjsKKyAgICAgICAgICAgICAgICAgICAgbUFpcnBsYW5lU3RhdGUgPSBtU3RhdGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBzaG93RHVyaW5nS2V5Z3VhcmQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dCZWZvcmVQcm92aXNpb25pbmcoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIG1JdGVtcyA9IExpc3RzLm5ld0FycmF5TGlzdCgKKyAgICAgICAgICAgICAgICAvLyBzaWxlbnQgbW9kZQorICAgICAgICAgICAgICAgIG1TaWxlbnRNb2RlVG9nZ2xlLAorICAgICAgICAgICAgICAgIC8vIG5leHQ6IGFpcnBsYW5lIG1vZGUKKyAgICAgICAgICAgICAgICBtQWlycGxhbmVNb2RlT24sCisgICAgICAgICAgICAgICAgLy8gbGFzdDogcG93ZXIgb2ZmCisgICAgICAgICAgICAgICAgbmV3IFNpbmdsZVByZXNzQWN0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5pY19sb2NrX3Bvd2VyX29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFIuc3RyaW5nLmdsb2JhbF9hY3Rpb25fcG93ZXJfb2ZmKSB7CisKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25QcmVzcygpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNodXRkb3duIGJ5IG1ha2luZyBzdXJlIHJhZGlvIGFuZCBwb3dlciBhcmUgaGFuZGxlZCBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNodXRkb3duVGhyZWFkLnNodXRkb3duKG1Db250ZXh0LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dEdXJpbmdLZXlndWFyZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gc2hvd0JlZm9yZVByb3Zpc2lvbmluZygpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgbUFkYXB0ZXIgPSBuZXcgTXlBZGFwdGVyKCk7CisKKyAgICAgICAgZmluYWwgQWxlcnREaWFsb2cuQnVpbGRlciBhYiA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKG1Db250ZXh0KTsKKworICAgICAgICBhYi5zZXRBZGFwdGVyKG1BZGFwdGVyLCB0aGlzKQorICAgICAgICAgICAgICAgIC5zZXRJbnZlcnNlQmFja2dyb3VuZEZvcmNlZCh0cnVlKQorICAgICAgICAgICAgICAgIC5zZXRUaXRsZShSLnN0cmluZy5nbG9iYWxfYWN0aW9ucyk7CisKKyAgICAgICAgZmluYWwgQWxlcnREaWFsb2cgZGlhbG9nID0gYWIuY3JlYXRlKCk7CisgICAgICAgIGRpYWxvZy5nZXRXaW5kb3coKS5zZXRUeXBlKFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1lTVEVNX0RJQUxPRyk7CisgICAgICAgIGlmICghbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX3NmX3Nsb3dCbHVyKSkgeworICAgICAgICAgICAgZGlhbG9nLmdldFdpbmRvdygpLnNldEZsYWdzKFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQsCisgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQpOworICAgICAgICB9CisKKyAgICAgICAgZGlhbG9nLnNldE9uRGlzbWlzc0xpc3RlbmVyKHRoaXMpOworCisgICAgICAgIHJldHVybiBkaWFsb2c7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByZXBhcmVEaWFsb2coKSB7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gc2lsZW50TW9kZU9uID0KKyAgICAgICAgICAgICAgICBtQXVkaW9NYW5hZ2VyLmdldFJpbmdlck1vZGUoKSAhPSBBdWRpb01hbmFnZXIuUklOR0VSX01PREVfTk9STUFMOworICAgICAgICBtU2lsZW50TW9kZVRvZ2dsZS51cGRhdGVTdGF0ZSgKKyAgICAgICAgICAgICAgICBzaWxlbnRNb2RlT24gPyBUb2dnbGVBY3Rpb24uU3RhdGUuT24gOiBUb2dnbGVBY3Rpb24uU3RhdGUuT2ZmKTsKKyAgICAgICAgbUFpcnBsYW5lTW9kZU9uLnVwZGF0ZVN0YXRlKG1BaXJwbGFuZVN0YXRlKTsKKyAgICAgICAgbUFkYXB0ZXIubm90aWZ5RGF0YVNldENoYW5nZWQoKTsKKyAgICAgICAgaWYgKG1LZXlndWFyZFNob3dpbmcpIHsKKyAgICAgICAgICAgIG1EaWFsb2cuZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEX0RJQUxPRyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtRGlhbG9nLmdldFdpbmRvdygpLnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fRElBTE9HKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvbkRpc21pc3MoRGlhbG9nSW50ZXJmYWNlIGRpYWxvZykgeworICAgICAgICBtU3RhdHVzQmFyLmRpc2FibGUoU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PTkUpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25DbGljayhEaWFsb2dJbnRlcmZhY2UgZGlhbG9nLCBpbnQgd2hpY2gpIHsKKyAgICAgICAgZGlhbG9nLmRpc21pc3MoKTsKKyAgICAgICAgbUFkYXB0ZXIuZ2V0SXRlbSh3aGljaCkub25QcmVzcygpOworICAgIH0KKworCisgICAgLyoqCisgICAgICogVGhlIGFkYXB0ZXIgdXNlZCBmb3IgdGhlIGxpc3Qgd2l0aGluIHRoZSBnbG9iYWwgYWN0aW9ucyBkaWFsb2csIHRha2luZworICAgICAqIGludG8gYWNjb3VudCB3aGV0aGVyIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nIHZpYQorICAgICAqIHtAbGluayBHbG9iYWxBY3Rpb25zI21LZXlndWFyZFNob3dpbmd9IGFuZCB3aGV0aGVyIHRoZSBkZXZpY2UgaXMgcHJvdmlzaW9uZWQKKyAgICAgKiB2aWEge0BsaW5rIEdsb2JhbEFjdGlvbnMjbURldmljZVByb3Zpc2lvbmVkfS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIE15QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHsKKworICAgICAgICBwdWJsaWMgaW50IGdldENvdW50KCkgeworICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtSXRlbXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBBY3Rpb24gYWN0aW9uID0gbUl0ZW1zLmdldChpKTsKKworICAgICAgICAgICAgICAgIGlmIChtS2V5Z3VhcmRTaG93aW5nICYmICFhY3Rpb24uc2hvd0R1cmluZ0tleWd1YXJkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghbURldmljZVByb3Zpc2lvbmVkICYmICFhY3Rpb24uc2hvd0JlZm9yZVByb3Zpc2lvbmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNvdW50OworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZChpbnQgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRJdGVtKHBvc2l0aW9uKS5pc0VuYWJsZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBhcmVBbGxJdGVtc0VuYWJsZWQoKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQWN0aW9uIGdldEl0ZW0oaW50IHBvc2l0aW9uKSB7CisKKyAgICAgICAgICAgIGludCBmaWx0ZXJlZFBvcyA9IDA7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1JdGVtcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGZpbmFsIEFjdGlvbiBhY3Rpb24gPSBtSXRlbXMuZ2V0KGkpOworICAgICAgICAgICAgICAgIGlmIChtS2V5Z3VhcmRTaG93aW5nICYmICFhY3Rpb24uc2hvd0R1cmluZ0tleWd1YXJkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghbURldmljZVByb3Zpc2lvbmVkICYmICFhY3Rpb24uc2hvd0JlZm9yZVByb3Zpc2lvbmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRQb3MgPT0gcG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmlsdGVyZWRQb3MrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicG9zaXRpb24gIiArIHBvc2l0aW9uICsgIiBvdXQgb2YgIgorICAgICAgICAgICAgICAgICAgICArICJyYW5nZSBvZiBzaG93YWJsZSBhY3Rpb25zLCBmaWx0ZXJlZCBjb3VudCA9ICIKKyAgICAgICAgICAgICAgICAgICAgKyAiPSAiICsgZ2V0Q291bnQoKSArICIsIGtleWd1YXJkc2hvd2luZz0iICsgbUtleWd1YXJkU2hvd2luZworICAgICAgICAgICAgICAgICAgICArICIsIHByb3Zpc2lvbmVkPSIgKyBtRGV2aWNlUHJvdmlzaW9uZWQpOworICAgICAgICB9CisKKworICAgICAgICBwdWJsaWMgbG9uZyBnZXRJdGVtSWQoaW50IHBvc2l0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVmlldyBnZXRWaWV3KGludCBwb3NpdGlvbiwgVmlldyBjb252ZXJ0VmlldywgVmlld0dyb3VwIHBhcmVudCkgeworICAgICAgICAgICAgQWN0aW9uIGFjdGlvbiA9IGdldEl0ZW0ocG9zaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5jcmVhdGUobUNvbnRleHQsIGNvbnZlcnRWaWV3LCBwYXJlbnQsIExheW91dEluZmxhdGVyLmZyb20obUNvbnRleHQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIG5vdGU6IHRoZSBzY2hlbWUgYmVsb3cgbWFkZSBtb3JlIHNlbnNlIHdoZW4gd2Ugd2VyZSBwbGFubmluZyBvbiBoYXZpbmcKKyAgICAvLyA4IGRpZmZlcmVudCB0aGluZ3MgaW4gdGhlIGdsb2JhbCBhY3Rpb25zIGRpYWxvZy4gIHNlZW1zIG92ZXJraWxsIHdpdGgKKyAgICAvLyBvbmx5IDMgaXRlbXMgbm93LCBidXQgbWF5IGFzIHdlbGwga2VlcCB0aGlzIGZsZXhpYmxlIGFwcHJvYWNoIHNvIGl0IHdpbGwKKyAgICAvLyBiZSBlYXN5IHNob3VsZCBzb21lb25lIGRlY2lkZSBhdCB0aGUgbGFzdCBtaW51dGUgdG8gaW5jbHVkZSBzb21ldGhpbmcKKyAgICAvLyBlbHNlLCBzdWNoIGFzICdlbmFibGUgd2lmaScsIG9yICdlbmFibGUgYmx1ZXRvb3RoJworCisgICAgLyoqCisgICAgICogV2hhdCBlYWNoIGl0ZW0gaW4gdGhlIGdsb2JhbCBhY3Rpb25zIGRpYWxvZyBtdXN0IGJlIGFibGUgdG8gc3VwcG9ydC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludGVyZmFjZSBBY3Rpb24geworICAgICAgICBWaWV3IGNyZWF0ZShDb250ZXh0IGNvbnRleHQsIFZpZXcgY29udmVydFZpZXcsIFZpZXdHcm91cCBwYXJlbnQsIExheW91dEluZmxhdGVyIGluZmxhdGVyKTsKKworICAgICAgICB2b2lkIG9uUHJlc3MoKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybiB3aGV0aGVyIHRoaXMgYWN0aW9uIHNob3VsZCBhcHBlYXIgaW4gdGhlIGRpYWxvZyB3aGVuIHRoZSBrZXlnYXVyZAorICAgICAgICAgKiAgICBpcyBzaG93aW5nLgorICAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiBzaG93RHVyaW5nS2V5Z3VhcmQoKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybiB3aGV0aGVyIHRoaXMgYWN0aW9uIHNob3VsZCBhcHBlYXIgaW4gdGhlIGRpYWxvZyBiZWZvcmUgdGhlCisgICAgICAgICAqICAgZGV2aWNlIGlzIHByb3Zpc2lvbmVkLgorICAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiBzaG93QmVmb3JlUHJvdmlzaW9uaW5nKCk7CisKKyAgICAgICAgYm9vbGVhbiBpc0VuYWJsZWQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIHNpbmdsZSBwcmVzcyBhY3Rpb24gbWFpbnRhaW5zIG5vIHN0YXRlLCBqdXN0IHJlc3BvbmRzIHRvIGEgcHJlc3MKKyAgICAgKiBhbmQgdGFrZXMgYW4gYWN0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGFic3RyYWN0IGNsYXNzIFNpbmdsZVByZXNzQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbUljb25SZXNJZDsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbU1lc3NhZ2VSZXNJZDsKKworICAgICAgICBwcm90ZWN0ZWQgU2luZ2xlUHJlc3NBY3Rpb24oaW50IGljb25SZXNJZCwgaW50IG1lc3NhZ2VSZXNJZCkgeworICAgICAgICAgICAgbUljb25SZXNJZCA9IGljb25SZXNJZDsKKyAgICAgICAgICAgIG1NZXNzYWdlUmVzSWQgPSBtZXNzYWdlUmVzSWQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIG9uUHJlc3MoKTsKKworICAgICAgICBwdWJsaWMgVmlldyBjcmVhdGUoCisgICAgICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0LCBWaWV3IGNvbnZlcnRWaWV3LCBWaWV3R3JvdXAgcGFyZW50LCBMYXlvdXRJbmZsYXRlciBpbmZsYXRlcikgeworICAgICAgICAgICAgVmlldyB2ID0gKGNvbnZlcnRWaWV3ICE9IG51bGwpID8KKyAgICAgICAgICAgICAgICAgICAgY29udmVydFZpZXcgOgorICAgICAgICAgICAgICAgICAgICBpbmZsYXRlci5pbmZsYXRlKFIubGF5b3V0Lmdsb2JhbF9hY3Rpb25zX2l0ZW0sIHBhcmVudCwgZmFsc2UpOworCisgICAgICAgICAgICBJbWFnZVZpZXcgaWNvbiA9IChJbWFnZVZpZXcpIHYuZmluZFZpZXdCeUlkKFIuaWQuaWNvbik7CisgICAgICAgICAgICBUZXh0VmlldyBtZXNzYWdlVmlldyA9IChUZXh0Vmlldykgdi5maW5kVmlld0J5SWQoUi5pZC5tZXNzYWdlKTsKKworICAgICAgICAgICAgdi5maW5kVmlld0J5SWQoUi5pZC5zdGF0dXMpLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKworICAgICAgICAgICAgaWNvbi5zZXRJbWFnZURyYXdhYmxlKGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0RHJhd2FibGUobUljb25SZXNJZCkpOworICAgICAgICAgICAgbWVzc2FnZVZpZXcuc2V0VGV4dChtTWVzc2FnZVJlc0lkKTsKKworICAgICAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIHRvZ2dsZSBhY3Rpb24ga25vd3Mgd2hldGhlciBpdCBpcyBvbiBvciBvZmYsIGFuZCBkaXNwbGF5cyBhbiBpY29uCisgICAgICogYW5kIHN0YXR1cyBtZXNzYWdlIGFjY29yZGluZ2x5LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGFic3RyYWN0IGNsYXNzIFRvZ2dsZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7CisKKyAgICAgICAgZW51bSBTdGF0ZSB7CisgICAgICAgICAgICBPZmYoZmFsc2UpLAorICAgICAgICAgICAgVHVybmluZ09uKHRydWUpLAorICAgICAgICAgICAgVHVybmluZ09mZih0cnVlKSwKKyAgICAgICAgICAgIE9uKGZhbHNlKTsKKworICAgICAgICAgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGluVHJhbnNpdGlvbjsKKworICAgICAgICAgICAgU3RhdGUoYm9vbGVhbiBpbnRlcm1lZGlhdGUpIHsKKyAgICAgICAgICAgICAgICBpblRyYW5zaXRpb24gPSBpbnRlcm1lZGlhdGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGluVHJhbnNpdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5UcmFuc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIFN0YXRlIG1TdGF0ZSA9IFN0YXRlLk9mZjsKKworICAgICAgICAvLyBwcmVmcworICAgICAgICBwcm90ZWN0ZWQgaW50IG1FbmFibGVkSWNvblJlc0lkOworICAgICAgICBwcm90ZWN0ZWQgaW50IG1EaXNhYmxlZEljb25SZXNpZDsKKyAgICAgICAgcHJvdGVjdGVkIGludCBtTWVzc2FnZVJlc0lkOworICAgICAgICBwcm90ZWN0ZWQgaW50IG1FbmFibGVkU3RhdHVzTWVzc2FnZVJlc0lkOworICAgICAgICBwcm90ZWN0ZWQgaW50IG1EaXNhYmxlZFN0YXR1c01lc3NhZ2VSZXNJZDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGVuYWJsZWRJY29uUmVzSWQgVGhlIGljb24gZm9yIHdoZW4gdGhpcyBhY3Rpb24gaXMgb24uCisgICAgICAgICAqIEBwYXJhbSBkaXNhYmxlZEljb25SZXNpZCBUaGUgaWNvbiBmb3Igd2hlbiB0aGlzIGFjdGlvbiBpcyBvZmYuCisgICAgICAgICAqIEBwYXJhbSBlc3NhZ2UgVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gbWVzc2FnZSwgZS5nICdTaWxlbnQgTW9kZScKKyAgICAgICAgICogQHBhcmFtIGVuYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQgVGhlIG9uIHN0YXR1cyBtZXNzYWdlLCBlLmcgJ3NvdW5kIGRpc2FibGVkJworICAgICAgICAgKiBAcGFyYW0gZGlzYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQgVGhlIG9mZiBzdGF0dXMgbWVzc2FnZSwgZS5nLiAnc291bmQgZW5hYmxlZCcKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBUb2dnbGVBY3Rpb24oaW50IGVuYWJsZWRJY29uUmVzSWQsCisgICAgICAgICAgICAgICAgaW50IGRpc2FibGVkSWNvblJlc2lkLAorICAgICAgICAgICAgICAgIGludCBlc3NhZ2UsCisgICAgICAgICAgICAgICAgaW50IGVuYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQsCisgICAgICAgICAgICAgICAgaW50IGRpc2FibGVkU3RhdHVzTWVzc2FnZVJlc0lkKSB7CisgICAgICAgICAgICBtRW5hYmxlZEljb25SZXNJZCA9IGVuYWJsZWRJY29uUmVzSWQ7CisgICAgICAgICAgICBtRGlzYWJsZWRJY29uUmVzaWQgPSBkaXNhYmxlZEljb25SZXNpZDsKKyAgICAgICAgICAgIG1NZXNzYWdlUmVzSWQgPSBlc3NhZ2U7CisgICAgICAgICAgICBtRW5hYmxlZFN0YXR1c01lc3NhZ2VSZXNJZCA9IGVuYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQ7CisgICAgICAgICAgICBtRGlzYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQgPSBkaXNhYmxlZFN0YXR1c01lc3NhZ2VSZXNJZDsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBPdmVycmlkZSB0byBtYWtlIGNoYW5nZXMgdG8gcmVzb3VyY2UgSURzIGp1c3QgYmVmb3JlIGNyZWF0aW5nIHRoZQorICAgICAgICAgKiBWaWV3LgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCB3aWxsQ3JlYXRlKCkgeworCisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVmlldyBjcmVhdGUoQ29udGV4dCBjb250ZXh0LCBWaWV3IGNvbnZlcnRWaWV3LCBWaWV3R3JvdXAgcGFyZW50LAorICAgICAgICAgICAgICAgIExheW91dEluZmxhdGVyIGluZmxhdGVyKSB7CisgICAgICAgICAgICB3aWxsQ3JlYXRlKCk7CisKKyAgICAgICAgICAgIFZpZXcgdiA9IChjb252ZXJ0VmlldyAhPSBudWxsKSA/CisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRWaWV3IDoKKyAgICAgICAgICAgICAgICAgICAgaW5mbGF0ZXIuaW5mbGF0ZShSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxheW91dC5nbG9iYWxfYWN0aW9uc19pdGVtLCBwYXJlbnQsIGZhbHNlKTsKKworICAgICAgICAgICAgSW1hZ2VWaWV3IGljb24gPSAoSW1hZ2VWaWV3KSB2LmZpbmRWaWV3QnlJZChSLmlkLmljb24pOworICAgICAgICAgICAgVGV4dFZpZXcgbWVzc2FnZVZpZXcgPSAoVGV4dFZpZXcpIHYuZmluZFZpZXdCeUlkKFIuaWQubWVzc2FnZSk7CisgICAgICAgICAgICBUZXh0VmlldyBzdGF0dXNWaWV3ID0gKFRleHRWaWV3KSB2LmZpbmRWaWV3QnlJZChSLmlkLnN0YXR1cyk7CisKKyAgICAgICAgICAgIG1lc3NhZ2VWaWV3LnNldFRleHQobU1lc3NhZ2VSZXNJZCk7CisKKyAgICAgICAgICAgIGJvb2xlYW4gb24gPSAoKG1TdGF0ZSA9PSBTdGF0ZS5PbikgfHwgKG1TdGF0ZSA9PSBTdGF0ZS5UdXJuaW5nT24pKTsKKyAgICAgICAgICAgIGljb24uc2V0SW1hZ2VEcmF3YWJsZShjb250ZXh0LmdldFJlc291cmNlcygpLmdldERyYXdhYmxlKAorICAgICAgICAgICAgICAgICAgICAob24gPyBtRW5hYmxlZEljb25SZXNJZCA6IG1EaXNhYmxlZEljb25SZXNpZCkpKTsKKyAgICAgICAgICAgIHN0YXR1c1ZpZXcuc2V0VGV4dChvbiA/IG1FbmFibGVkU3RhdHVzTWVzc2FnZVJlc0lkIDogbURpc2FibGVkU3RhdHVzTWVzc2FnZVJlc0lkKTsKKyAgICAgICAgICAgIHN0YXR1c1ZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGVuYWJsZWQgPSBpc0VuYWJsZWQoKTsKKyAgICAgICAgICAgIG1lc3NhZ2VWaWV3LnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICBzdGF0dXNWaWV3LnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICBpY29uLnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICB2LnNldEVuYWJsZWQoZW5hYmxlZCk7CisKKyAgICAgICAgICAgIHJldHVybiB2OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGZpbmFsIHZvaWQgb25QcmVzcygpIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUuaW5UcmFuc2l0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJzaG91bGRuJ3QgYmUgYWJsZSB0byB0b2dnbGUgd2hlbiBpbiB0cmFuc2l0aW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIG5vd09uID0gIShtU3RhdGUgPT0gU3RhdGUuT24pOworICAgICAgICAgICAgb25Ub2dnbGUobm93T24pOworICAgICAgICAgICAgY2hhbmdlU3RhdGVGcm9tUHJlc3Mobm93T24pOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNFbmFibGVkKCkgeworICAgICAgICAgICAgcmV0dXJuICFtU3RhdGUuaW5UcmFuc2l0aW9uKCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogSW1wbGVtZW50YXRpb25zIG1heSBvdmVycmlkZSB0aGlzIGlmIHRoZWlyIHN0YXRlIGNhbiBiZSBpbiBvbiBvZiB0aGUgaW50ZXJtZWRpYXRlCisgICAgICAgICAqIHN0YXRlcyB1bnRpbCBzb21lIG5vdGlmaWNhdGlvbiBpcyByZWNlaXZlZCAoZS5nIGFpcnBsYW5lIG1vZGUgaXMgJ3R1cm5pbmcgb2ZmJyB1bnRpbAorICAgICAgICAgKiB3ZSBrbm93IHRoZSB3aXJlbGVzcyBjb25uZWN0aW9ucyBhcmUgYmFjayBvbmxpbmUKKyAgICAgICAgICogQHBhcmFtIGJ1dHRvbk9uIFdoZXRoZXIgdGhlIGJ1dHRvbiB3YXMgdHVybmVkIG9uIG9yIG9mZgorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlU3RhdGVGcm9tUHJlc3MoYm9vbGVhbiBidXR0b25PbikgeworICAgICAgICAgICAgbVN0YXRlID0gYnV0dG9uT24gPyBTdGF0ZS5PbiA6IFN0YXRlLk9mZjsKKyAgICAgICAgfQorCisgICAgICAgIGFic3RyYWN0IHZvaWQgb25Ub2dnbGUoYm9vbGVhbiBvbik7CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlU3RhdGUoU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgICAgIG1TdGF0ZSA9IHN0YXRlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgICAgIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgICAgICBpZiAoSW50ZW50LkFDVElPTl9DTE9TRV9TWVNURU1fRElBTE9HUy5lcXVhbHMoYWN0aW9uKQorICAgICAgICAgICAgICAgICAgICB8fCBJbnRlbnQuQUNUSU9OX1NDUkVFTl9PRkYuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVhc29uID0gaW50ZW50LmdldFN0cmluZ0V4dHJhKFBob25lV2luZG93TWFuYWdlci5TWVNURU1fRElBTE9HX1JFQVNPTl9LRVkpOworICAgICAgICAgICAgICAgIGlmICghUGhvbmVXaW5kb3dNYW5hZ2VyLlNZU1RFTV9ESUFMT0dfUkVBU09OX0dMT0JBTF9BQ1RJT05TLmVxdWFscyhyZWFzb24pKSB7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoTUVTU0FHRV9ESVNNSVNTKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX0VNRVJHRU5DWV9DQUxMQkFDS19NT0RFX0NIQU5HRUQuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAvLyBBaXJwbGFuZSBtb2RlIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIEVDTSBleGl0cyBpZiBhaXJwbGFuZSB0b2dnbGUgYnV0dG9uCisgICAgICAgICAgICAgICAgLy8gaXMgcHJlc3NlZCBkdXJpbmcgRUNNIG1vZGUKKyAgICAgICAgICAgICAgICBpZiAoIShpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKCJQSE9ORV9JTl9FQ01fU1RBVEUiLCBmYWxzZSkpICYmCisgICAgICAgICAgICAgICAgICAgICAgICBtSXNXYWl0aW5nRm9yRWNtRXhpdCkgeworICAgICAgICAgICAgICAgICAgICBtSXNXYWl0aW5nRm9yRWNtRXhpdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VBaXJwbGFuZU1vZGVTeXN0ZW1TZXR0aW5nKHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBQaG9uZVN0YXRlTGlzdGVuZXIgbVBob25lU3RhdGVMaXN0ZW5lciA9IG5ldyBQaG9uZVN0YXRlTGlzdGVuZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VTdGF0ZUNoYW5nZWQoU2VydmljZVN0YXRlIHNlcnZpY2VTdGF0ZSkgeworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBpbkFpcnBsYW5lTW9kZSA9IHNlcnZpY2VTdGF0ZS5nZXRTdGF0ZSgpID09IFNlcnZpY2VTdGF0ZS5TVEFURV9QT1dFUl9PRkY7CisgICAgICAgICAgICBtQWlycGxhbmVTdGF0ZSA9IGluQWlycGxhbmVNb2RlID8gVG9nZ2xlQWN0aW9uLlN0YXRlLk9uIDogVG9nZ2xlQWN0aW9uLlN0YXRlLk9mZjsKKyAgICAgICAgICAgIG1BaXJwbGFuZU1vZGVPbi51cGRhdGVTdGF0ZShtQWlycGxhbmVTdGF0ZSk7CisgICAgICAgICAgICBtQWRhcHRlci5ub3RpZnlEYXRhU2V0Q2hhbmdlZCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNRVNTQUdFX0RJU01JU1MgPSAwOworICAgIHByaXZhdGUgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CisgICAgICAgICAgICBpZiAobXNnLndoYXQgPT0gTUVTU0FHRV9ESVNNSVNTKSB7CisgICAgICAgICAgICAgICAgaWYgKG1EaWFsb2cgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtRGlhbG9nLmRpc21pc3MoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQ2hhbmdlIHRoZSBhaXJwbGFuZSBtb2RlIHN5c3RlbSBzZXR0aW5nCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGNoYW5nZUFpcnBsYW5lTW9kZVN5c3RlbVNldHRpbmcoYm9vbGVhbiBvbikgeworICAgICAgICBTZXR0aW5ncy5TeXN0ZW0ucHV0SW50KAorICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5BSVJQTEFORV9NT0RFX09OLAorICAgICAgICAgICAgICAgIG9uID8gMSA6IDApOworICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX0FJUlBMQU5FX01PREVfQ0hBTkdFRCk7CisgICAgICAgIGludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19SRUNFSVZFUl9SRVBMQUNFX1BFTkRJTkcpOworICAgICAgICBpbnRlbnQucHV0RXh0cmEoInN0YXRlIiwgb24pOworICAgICAgICBtQ29udGV4dC5zZW5kQnJvYWRjYXN0KGludGVudCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9JY29uVXRpbGl0aWVzLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0ljb25VdGlsaXRpZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTA1NWNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9JY29uVXRpbGl0aWVzLmphdmEKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5CaXRtYXBEcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuUGFpbnREcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlN0YXRlTGlzdERyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQmx1ck1hc2tGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNvbG9yTWF0cml4Q29sb3JGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QYWludDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBhaW50RmxhZ3NEcmF3RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGl4ZWxGb3JtYXQ7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3RGOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuVGFibGVNYXNrRmlsdGVyOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2U7CitpbXBvcnQgYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlN0YXRpY0xheW91dDsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFBhaW50OworaW1wb3J0IGFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworCisvKioKKyAqIFZhcmlvdXMgdXRpbGl0aWVzIHNoYXJlZCBhbW9uZ3N0IHRoZSBMYXVuY2hlcidzIGNsYXNzZXMuCisgKi8KK2ZpbmFsIGNsYXNzIEljb25VdGlsaXRpZXMgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiSWNvblV0aWxpdGllcyI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgc0NvbG9yc1tdID0geyAweGZmZmYwMDAwLCAweGZmMDBmZjAwLCAweGZmMDAwMGZmIH07CisKKyAgICBwcml2YXRlIGludCBtSWNvbldpZHRoID0gLTE7CisgICAgcHJpdmF0ZSBpbnQgbUljb25IZWlnaHQgPSAtMTsKKyAgICBwcml2YXRlIGludCBtSWNvblRleHR1cmVXaWR0aCA9IC0xOworICAgIHByaXZhdGUgaW50IG1JY29uVGV4dHVyZUhlaWdodCA9IC0xOworCisgICAgcHJpdmF0ZSBmaW5hbCBQYWludCBtUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICBwcml2YXRlIGZpbmFsIFBhaW50IG1CbHVyUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICBwcml2YXRlIGZpbmFsIFBhaW50IG1HbG93Q29sb3JQcmVzc2VkUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICBwcml2YXRlIGZpbmFsIFBhaW50IG1HbG93Q29sb3JGb2N1c2VkUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICBwcml2YXRlIGZpbmFsIFJlY3QgbU9sZEJvdW5kcyA9IG5ldyBSZWN0KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBDYW52YXMgbUNhbnZhcyA9IG5ldyBDYW52YXMoKTsKKyAgICBwcml2YXRlIGZpbmFsIERpc3BsYXlNZXRyaWNzIG1EaXNwbGF5TWV0cmljczsKKworICAgIHByaXZhdGUgaW50IG1Db2xvckluZGV4ID0gMDsKKworICAgIHB1YmxpYyBJY29uVXRpbGl0aWVzKENvbnRleHQgY29udGV4dCkgeworICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzb3VyY2VzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKKyAgICAgICAgRGlzcGxheU1ldHJpY3MgbWV0cmljcyA9IG1EaXNwbGF5TWV0cmljcyA9IHJlc291cmNlcy5nZXREaXNwbGF5TWV0cmljcygpOworICAgICAgICBmaW5hbCBmbG9hdCBkZW5zaXR5ID0gbWV0cmljcy5kZW5zaXR5OworICAgICAgICBmaW5hbCBmbG9hdCBibHVyUHggPSA1ICogZGVuc2l0eTsKKworICAgICAgICBtSWNvbldpZHRoID0gbUljb25IZWlnaHQgPSAoaW50KSByZXNvdXJjZXMuZ2V0RGltZW5zaW9uKGFuZHJvaWQuUi5kaW1lbi5hcHBfaWNvbl9zaXplKTsKKyAgICAgICAgbUljb25UZXh0dXJlV2lkdGggPSBtSWNvblRleHR1cmVIZWlnaHQgPSBtSWNvbldpZHRoICsgKGludCkoYmx1clB4KjIpOworCisgICAgICAgIG1CbHVyUGFpbnQuc2V0TWFza0ZpbHRlcihuZXcgQmx1ck1hc2tGaWx0ZXIoYmx1clB4LCBCbHVyTWFza0ZpbHRlci5CbHVyLk5PUk1BTCkpOworICAgICAgICBtR2xvd0NvbG9yUHJlc3NlZFBhaW50LnNldENvbG9yKDB4ZmZmZmMzMDApOworICAgICAgICBtR2xvd0NvbG9yUHJlc3NlZFBhaW50LnNldE1hc2tGaWx0ZXIoVGFibGVNYXNrRmlsdGVyLkNyZWF0ZUNsaXBUYWJsZSgwLCAzMCkpOworICAgICAgICBtR2xvd0NvbG9yRm9jdXNlZFBhaW50LnNldENvbG9yKDB4ZmZmZjhlMDApOworICAgICAgICBtR2xvd0NvbG9yRm9jdXNlZFBhaW50LnNldE1hc2tGaWx0ZXIoVGFibGVNYXNrRmlsdGVyLkNyZWF0ZUNsaXBUYWJsZSgwLCAzMCkpOworCisgICAgICAgIENvbG9yTWF0cml4IGNtID0gbmV3IENvbG9yTWF0cml4KCk7CisgICAgICAgIGNtLnNldFNhdHVyYXRpb24oMC4yZik7CisKKyAgICAgICAgbUNhbnZhcy5zZXREcmF3RmlsdGVyKG5ldyBQYWludEZsYWdzRHJhd0ZpbHRlcihQYWludC5ESVRIRVJfRkxBRywKKyAgICAgICAgICAgICAgICBQYWludC5GSUxURVJfQklUTUFQX0ZMQUcpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRHJhd2FibGUgY3JlYXRlSWNvbkRyYXdhYmxlKERyYXdhYmxlIHNyYykgeworICAgICAgICBCaXRtYXAgc2NhbGVkID0gY3JlYXRlSWNvbkJpdG1hcChzcmMpOworCisgICAgICAgIFN0YXRlTGlzdERyYXdhYmxlIHJlc3VsdCA9IG5ldyBTdGF0ZUxpc3REcmF3YWJsZSgpOworCisgICAgICAgIHJlc3VsdC5hZGRTdGF0ZShuZXcgaW50W10geyBhbmRyb2lkLlIuYXR0ci5zdGF0ZV9mb2N1c2VkIH0sCisgICAgICAgICAgICAgICAgbmV3IEJpdG1hcERyYXdhYmxlKGNyZWF0ZVNlbGVjdGVkQml0bWFwKHNjYWxlZCwgZmFsc2UpKSk7CisgICAgICAgIHJlc3VsdC5hZGRTdGF0ZShuZXcgaW50W10geyBhbmRyb2lkLlIuYXR0ci5zdGF0ZV9wcmVzc2VkIH0sCisgICAgICAgICAgICAgICAgbmV3IEJpdG1hcERyYXdhYmxlKGNyZWF0ZVNlbGVjdGVkQml0bWFwKHNjYWxlZCwgdHJ1ZSkpKTsKKyAgICAgICAgcmVzdWx0LmFkZFN0YXRlKG5ldyBpbnRbMF0sIG5ldyBCaXRtYXBEcmF3YWJsZShzY2FsZWQpKTsKKworICAgICAgICByZXN1bHQuc2V0Qm91bmRzKDAsIDAsIG1JY29uVGV4dHVyZVdpZHRoLCBtSWNvblRleHR1cmVIZWlnaHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBiaXRtYXAgc3VpdGFibGUgZm9yIHRoZSBhbGwgYXBwcyB2aWV3LiAgVGhlIGJpdG1hcCB3aWxsIGJlIGEgcG93ZXIKKyAgICAgKiBvZiB0d28gc2l6ZWQgQVJHQl84ODg4IGJpdG1hcCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZ2wgdGV4dHVyZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIEJpdG1hcCBjcmVhdGVJY29uQml0bWFwKERyYXdhYmxlIGljb24pIHsKKyAgICAgICAgaW50IHdpZHRoID0gbUljb25XaWR0aDsKKyAgICAgICAgaW50IGhlaWdodCA9IG1JY29uSGVpZ2h0OworCisgICAgICAgIGlmIChpY29uIGluc3RhbmNlb2YgUGFpbnREcmF3YWJsZSkgeworICAgICAgICAgICAgUGFpbnREcmF3YWJsZSBwYWludGVyID0gKFBhaW50RHJhd2FibGUpIGljb247CisgICAgICAgICAgICBwYWludGVyLnNldEludHJpbnNpY1dpZHRoKHdpZHRoKTsKKyAgICAgICAgICAgIHBhaW50ZXIuc2V0SW50cmluc2ljSGVpZ2h0KGhlaWdodCk7CisgICAgICAgIH0gZWxzZSBpZiAoaWNvbiBpbnN0YW5jZW9mIEJpdG1hcERyYXdhYmxlKSB7CisgICAgICAgICAgICAvLyBFbnN1cmUgdGhlIGJpdG1hcCBoYXMgYSBkZW5zaXR5LgorICAgICAgICAgICAgQml0bWFwRHJhd2FibGUgYml0bWFwRHJhd2FibGUgPSAoQml0bWFwRHJhd2FibGUpIGljb247CisgICAgICAgICAgICBCaXRtYXAgYml0bWFwID0gYml0bWFwRHJhd2FibGUuZ2V0Qml0bWFwKCk7CisgICAgICAgICAgICBpZiAoYml0bWFwLmdldERlbnNpdHkoKSA9PSBCaXRtYXAuREVOU0lUWV9OT05FKSB7CisgICAgICAgICAgICAgICAgYml0bWFwRHJhd2FibGUuc2V0VGFyZ2V0RGVuc2l0eShtRGlzcGxheU1ldHJpY3MpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGludCBzb3VyY2VXaWR0aCA9IGljb24uZ2V0SW50cmluc2ljV2lkdGgoKTsKKyAgICAgICAgaW50IHNvdXJjZUhlaWdodCA9IGljb24uZ2V0SW50cmluc2ljSGVpZ2h0KCk7CisKKyAgICAgICAgaWYgKHNvdXJjZVdpZHRoID4gMCAmJiBzb3VyY2VXaWR0aCA+IDApIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBpbnRyaW5zaWMgc2l6ZXMuCisgICAgICAgICAgICBpZiAod2lkdGggPCBzb3VyY2VXaWR0aCB8fCBoZWlnaHQgPCBzb3VyY2VIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAvLyBJdCdzIHRvbyBiaWcsIHNjYWxlIGl0IGRvd24uCisgICAgICAgICAgICAgICAgZmluYWwgZmxvYXQgcmF0aW8gPSAoZmxvYXQpIHNvdXJjZVdpZHRoIC8gc291cmNlSGVpZ2h0OworICAgICAgICAgICAgICAgIGlmIChzb3VyY2VXaWR0aCA+IHNvdXJjZUhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAoaW50KSAod2lkdGggLyByYXRpbyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VIZWlnaHQgPiBzb3VyY2VXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IChpbnQpIChoZWlnaHQgKiByYXRpbyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VXaWR0aCA8IHdpZHRoICYmIHNvdXJjZUhlaWdodCA8IGhlaWdodCkgeworICAgICAgICAgICAgICAgIC8vIEl0J3Mgc21hbGwsIHVzZSB0aGUgc2l6ZSB0aGV5IGdhdmUgdXMuCisgICAgICAgICAgICAgICAgd2lkdGggPSBzb3VyY2VXaWR0aDsKKyAgICAgICAgICAgICAgICBoZWlnaHQgPSBzb3VyY2VIZWlnaHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBubyBpbnRyaW5zaWMgc2l6ZSAtLT4gdXNlIGRlZmF1bHQgc2l6ZQorICAgICAgICBpbnQgdGV4dHVyZVdpZHRoID0gbUljb25UZXh0dXJlV2lkdGg7CisgICAgICAgIGludCB0ZXh0dXJlSGVpZ2h0ID0gbUljb25UZXh0dXJlSGVpZ2h0OworCisgICAgICAgIGZpbmFsIEJpdG1hcCBiaXRtYXAgPSBCaXRtYXAuY3JlYXRlQml0bWFwKHRleHR1cmVXaWR0aCwgdGV4dHVyZUhlaWdodCwKKyAgICAgICAgICAgICAgICBCaXRtYXAuQ29uZmlnLkFSR0JfODg4OCk7CisgICAgICAgIGZpbmFsIENhbnZhcyBjYW52YXMgPSBtQ2FudmFzOworICAgICAgICBjYW52YXMuc2V0Qml0bWFwKGJpdG1hcCk7CisKKyAgICAgICAgZmluYWwgaW50IGxlZnQgPSAodGV4dHVyZVdpZHRoLXdpZHRoKSAvIDI7CisgICAgICAgIGZpbmFsIGludCB0b3AgPSAodGV4dHVyZUhlaWdodC1oZWlnaHQpIC8gMjsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIC8vIGRyYXcgYSBiaWcgYm94IGZvciB0aGUgaWNvbiBmb3IgZGVidWdnaW5nCisgICAgICAgICAgICBjYW52YXMuZHJhd0NvbG9yKHNDb2xvcnNbbUNvbG9ySW5kZXhdKTsKKyAgICAgICAgICAgIGlmICgrK21Db2xvckluZGV4ID49IHNDb2xvcnMubGVuZ3RoKSBtQ29sb3JJbmRleCA9IDA7CisgICAgICAgICAgICBQYWludCBkZWJ1Z1BhaW50ID0gbmV3IFBhaW50KCk7CisgICAgICAgICAgICBkZWJ1Z1BhaW50LnNldENvbG9yKDB4ZmZjY2NjMDApOworICAgICAgICAgICAgY2FudmFzLmRyYXdSZWN0KGxlZnQsIHRvcCwgbGVmdCt3aWR0aCwgdG9wK2hlaWdodCwgZGVidWdQYWludCk7CisgICAgICAgIH0KKworICAgICAgICBtT2xkQm91bmRzLnNldChpY29uLmdldEJvdW5kcygpKTsKKyAgICAgICAgaWNvbi5zZXRCb3VuZHMobGVmdCwgdG9wLCBsZWZ0K3dpZHRoLCB0b3AraGVpZ2h0KTsKKyAgICAgICAgaWNvbi5kcmF3KGNhbnZhcyk7CisgICAgICAgIGljb24uc2V0Qm91bmRzKG1PbGRCb3VuZHMpOworCisgICAgICAgIHJldHVybiBiaXRtYXA7CisgICAgfQorCisgICAgcHJpdmF0ZSBCaXRtYXAgY3JlYXRlU2VsZWN0ZWRCaXRtYXAoQml0bWFwIHNyYywgYm9vbGVhbiBwcmVzc2VkKSB7CisgICAgICAgIGZpbmFsIEJpdG1hcCByZXN1bHQgPSBCaXRtYXAuY3JlYXRlQml0bWFwKG1JY29uVGV4dHVyZVdpZHRoLCBtSWNvblRleHR1cmVIZWlnaHQsCisgICAgICAgICAgICAgICAgQml0bWFwLkNvbmZpZy5BUkdCXzg4ODgpOworICAgICAgICBmaW5hbCBDYW52YXMgZGVzdCA9IG5ldyBDYW52YXMocmVzdWx0KTsKKworICAgICAgICBkZXN0LmRyYXdDb2xvcigwLCBQb3J0ZXJEdWZmLk1vZGUuQ0xFQVIpOworCisgICAgICAgIGludFtdIHh5ID0gbmV3IGludFsyXTsKKyAgICAgICAgQml0bWFwIG1hc2sgPSBzcmMuZXh0cmFjdEFscGhhKG1CbHVyUGFpbnQsIHh5KTsKKworICAgICAgICBkZXN0LmRyYXdCaXRtYXAobWFzaywgeHlbMF0sIHh5WzFdLAorICAgICAgICAgICAgICAgIHByZXNzZWQgPyBtR2xvd0NvbG9yUHJlc3NlZFBhaW50IDogbUdsb3dDb2xvckZvY3VzZWRQYWludCk7CisKKyAgICAgICAgbWFzay5yZWN5Y2xlKCk7CisKKyAgICAgICAgZGVzdC5kcmF3Qml0bWFwKHNyYywgMCwgMCwgbVBhaW50KTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRTY3JlZW4uamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRTY3JlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmI2ODc1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFNjcmVlbi5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCisvKioKKyAqIENvbW1vbiBpbnRlcmZhY2Ugb2YgZWFjaCB7QGxpbmsgYW5kcm9pZC52aWV3LlZpZXd9IHRoYXQgaXMgYSBzY3JlZW4gb2YKKyAqIHtAbGluayBMb2NrUGF0dGVybktleWd1YXJkVmlld30uCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgS2V5Z3VhcmRTY3JlZW4geworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgeW91ciB2aWV3IG5lZWRzIGlucHV0LCBzbyBzaG91bGQgYWxsb3cgdGhlIHNvZnQKKyAgICAgKiBrZXlib2FyZCB0byBiZSBkaXNwbGF5ZWQuCisgICAgICovCisgICAgYm9vbGVhbiBuZWVkc0lucHV0KCk7CisgICAgCisgICAgLyoqCisgICAgICogVGhpcyBzY3JlZW4gaXMgbm8gbG9uZ2VyIGluIGZyb250IG9mIHRoZSB1c2VyLgorICAgICAqLworICAgIHZvaWQgb25QYXVzZSgpOworCisgICAgLyoqCisgICAgICogVGhpcyBzY3JlZW4gaXMgZ29pbmcgdG8gYmUgaW4gZnJvbnQgb2YgdGhlIHVzZXIuCisgICAgICovCisgICAgdm9pZCBvblJlc3VtZSgpOworCisgICAgLyoqCisgICAgICogVGhpcyB2aWV3IGlzIGdvaW5nIGF3YXk7IGEgaG9vayB0byBkbyBjbGVhbnVwLgorICAgICAqLworICAgIHZvaWQgY2xlYW5VcCgpOworfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFNjcmVlbkNhbGxiYWNrLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkU2NyZWVuQ2FsbGJhY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODQzNjAzCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFNjcmVlbkNhbGxiYWNrLmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CisKKy8qKgorICogV2l0aGluIGEga2V5Z3VhcmQsIHRoZXJlIG1heSBiZSBzZXZlcmFsIHNjcmVlbnMgdGhhdCBuZWVkIGEgY2FsbGJhY2sKKyAqIHRvIHRoZSBob3N0IGtleWd1YXJkIHZpZXcuCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayBleHRlbmRzIEtleWd1YXJkVmlld0NhbGxiYWNrIHsKKworICAgIC8qKgorICAgICAqIFRyYW5zaXRpb24gdG8gdGhlIGxvY2sgc2NyZWVuLgorICAgICAqLworICAgIHZvaWQgZ29Ub0xvY2tTY3JlZW4oKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zaXRpb24gdG8gdGhlIHVubG9jayBzY3JlZW4uCisgICAgICovCisgICAgdm9pZCBnb1RvVW5sb2NrU2NyZWVuKCk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdXNlciByZXBvcnRlZCB0aGF0IHRoZXkgZm9yZ290IHRoZWlyIHBhdHRlcm4gKG9yIG5vdCwgd2hlbiB0aGV5IHdhbnQgdG8gYmFjayBvdXQgb2YgdGhlCisgICAgICogZm9yZ290IHBhdHRlcm4gc2NyZWVuKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpc0ZvcmdvdHRlbiBUcnVlIGlmIHRoZSB1c2VyIGhpdCB0aGUgZm9yZ290IHBhdHRlcm4sIGZhbHNlIGlmIHRoZXkgd2FudCB0byBiYWNrIG91dAorICAgICAqICAgICAgICBvZiB0aGUgYWNjb3VudCBzY3JlZW4uCisgICAgICovCisgICAgdm9pZCBmb3Jnb3RQYXR0ZXJuKGJvb2xlYW4gaXNGb3Jnb3R0ZW4pOworCisgICAgLyoqCisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBrZXlndWFyZCByZXF1aXJlcyBzb21lIHNvcnQgb2YgUElOLgorICAgICAqLworICAgIGJvb2xlYW4gaXNTZWN1cmUoKTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4gV2hldGhlciB3ZSBhcmUgaW4gYSBtb2RlIHdoZXJlIHdlIG9ubHkgd2FudCB0byB2ZXJpZnkgdGhlCisgICAgICogICB1c2VyIGNhbiBnZXQgcGFzdCB0aGUga2V5Z3VhcmQuCisgICAgICovCisgICAgYm9vbGVhbiBpc1ZlcmlmeVVubG9ja09ubHkoKTsKKworICAgIC8qKgorICAgICAqIFN0YXkgb24gbWUsIGJ1dCByZWNyZWF0ZSBtZSAoc28gSSBjYW4gdXNlIGEgZGlmZmVyZW50IGxheW91dCkuCisgICAgICovCisgICAgdm9pZCByZWNyZWF0ZU1lKENvbmZpZ3VyYXRpb24gY29uZmlnKTsKKworICAgIC8qKgorICAgICAqIFRha2UgYWN0aW9uIHRvIHNlbmQgYW4gZW1lcmdlbmN5IGNhbGwuCisgICAgICovCisgICAgdm9pZCB0YWtlRW1lcmdlbmN5Q2FsbEFjdGlvbigpOworCisgICAgLyoqCisgICAgICogUmVwb3J0IHRoYXQgdGhlIHVzZXIgaGFkIGEgZmFpbGVkIGF0dGVtcHQgdG8gdW5sb2NrIHdpdGggcGFzc3dvcmQgb3IgcGF0dGVybi4KKyAgICAgKi8KKyAgICB2b2lkIHJlcG9ydEZhaWxlZFVubG9ja0F0dGVtcHQoKTsKKworICAgIC8qKgorICAgICAqIFJlcG9ydCB0aGF0IHRoZSB1c2VyIHN1Y2Nlc3NmdWxseSBlbnRlcmVkIHRoZWlyIHBhc3N3b3JkIG9yIHBhdHRlcm4uCisgICAgICovCisgICAgdm9pZCByZXBvcnRTdWNjZXNzZnVsVW5sb2NrQXR0ZW1wdCgpOworCisgICAgLyoqCisgICAgICogUmVwb3J0IHdoZXRoZXIgd2UgdGhlcmUncyBhbm90aGVyIHdheSB0byB1bmxvY2sgdGhlIGRldmljZS4KKyAgICAgKiBAcmV0dXJuIHRydWUKKyAgICAgKi8KKyAgICBib29sZWFuIGRvZXNGYWxsYmFja1VubG9ja1NjcmVlbkV4aXN0KCk7Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVXBkYXRlTW9uaXRvci5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFVwZGF0ZU1vbml0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjI1ZTU2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFVwZGF0ZU1vbml0b3IuamF2YQpAQCAtMCwwICsxLDUyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlcjsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5vcy5CYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1NUQVRVU19DSEFSR0lORzsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5vcy5CYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1NUQVRVU19GVUxMOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLm9zLkJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfU1RBVFVTX1VOS05PV047CitpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnk7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuVGVsZXBob255LkludGVudHMuRVhUUkFfUExNTjsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TSE9XX1BMTU47CitpbXBvcnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuVGVsZXBob255LkludGVudHMuRVhUUkFfU0hPV19TUE47CitpbXBvcnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuVGVsZXBob255LkludGVudHMuRVhUUkFfU1BOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnByb3ZpZGVyLlRlbGVwaG9ueS5JbnRlbnRzLlNQTl9TVFJJTkdTX1VQREFURURfQUNUSU9OOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkljY0NhcmQ7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueUludGVudHM7CisKK2ltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uZ29vZ2xlLmFuZHJvaWQuY29sbGVjdC5MaXN0czsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogV2F0Y2hlcyBmb3IgdXBkYXRlcyB0aGF0IG1heSBiZSBpbnRlcmVzdGluZyB0byB0aGUga2V5Z3VhcmQsIGFuZCBwcm92aWRlcworICogdGhlIHVwIHRvIGRhdGUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyBhIHJlZ2lzdHJhdGlvbiBmb3IgY2FsbGJhY2tzIHRoYXQgY2FyZQorICogdG8gYmUgdXBkYXRlZC4KKyAqCisgKiBOb3RlOiB1bmRlciB0aW1lIGNydW5jaCwgdGhpcyBoYXMgYmVlbiBleHRlbmRlZCB0byBpbmNsdWRlIHNvbWUgc3R1ZmYgdGhhdAorICogZG9lc24ndCByZWFsbHkgYmVsb25nIGhlcmUuICBzZWUge0BsaW5rICNoYW5kbGVCYXR0ZXJ5VXBkYXRlfSB3aGVyZSBpdCBzaHV0ZG93bnMKKyAqIHRoZSBkZXZpY2UsIGFuZCB7QGxpbmsgI2dldEZhaWxlZEF0dGVtcHRzKCl9LCB7QGxpbmsgI3JlcG9ydEZhaWxlZEF0dGVtcHQoKX0KKyAqIGFuZCB7QGxpbmsgI2NsZWFyRmFpbGVkQXR0ZW1wdHMoKX0uICBNYXliZSB3ZSBzaG91bGQgcmVuYW1lIHRoaXMgJ0tleWd1YXJkQ29udGV4dCcuLi4KKyAqLworcHVibGljIGNsYXNzIEtleWd1YXJkVXBkYXRlTW9uaXRvciB7CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEFHID0gIktleWd1YXJkVXBkYXRlTW9uaXRvciI7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPV19CQVRURVJZX1RIUkVTSE9MRCA9IDIwOworCisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworCisgICAgcHJpdmF0ZSBJY2NDYXJkLlN0YXRlIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUkVBRFk7CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbUtleWd1YXJkQnlwYXNzRW5hYmxlZDsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtRGV2aWNlUGx1Z2dlZEluOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1EZXZpY2VQcm92aXNpb25lZDsKKworICAgIHByaXZhdGUgaW50IG1CYXR0ZXJ5TGV2ZWw7CisKKyAgICBwcml2YXRlIENoYXJTZXF1ZW5jZSBtVGVsZXBob255UGxtbjsKKyAgICBwcml2YXRlIENoYXJTZXF1ZW5jZSBtVGVsZXBob255U3BuOworCisgICAgcHJpdmF0ZSBpbnQgbUZhaWxlZEF0dGVtcHRzID0gMDsKKworICAgIHByaXZhdGUgSGFuZGxlciBtSGFuZGxlcjsKKworICAgIHByaXZhdGUgQXJyYXlMaXN0PEluZm9DYWxsYmFjaz4gbUluZm9DYWxsYmFja3MgPSBMaXN0cy5uZXdBcnJheUxpc3QoKTsKKyAgICBwcml2YXRlIEFycmF5TGlzdDxTaW1TdGF0ZUNhbGxiYWNrPiBtU2ltU3RhdGVDYWxsYmFja3MgPSBMaXN0cy5uZXdBcnJheUxpc3QoKTsKKyAgICBwcml2YXRlIENvbnRlbnRPYnNlcnZlciBtQ29udGVudE9ic2VydmVyOworCisgICAgLy8gbWVzc2FnZXMgZm9yIHRoZSBoYW5kbGVyCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19USU1FX1VQREFURSA9IDMwMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0JBVFRFUllfVVBEQVRFID0gMzAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfQ0FSUklFUl9JTkZPX1VQREFURSA9IDMwMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX1NJTV9TVEFURV9DSEFOR0UgPSAzMDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19SSU5HRVJfTU9ERV9DSEFOR0VEID0gMzA1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfUEhPTkVfU1RBVEVfQ0hBTkdFRCA9IDMwNjsKKworCisgICAgLyoqCisgICAgICogV2hlbiB3ZSByZWNlaXZlIGEKKyAgICAgKiB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueUludGVudHMjQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEfSBicm9hZGNhc3QsCisgICAgICogYW5kIHRoZW4gcGFzcyBhIHJlc3VsdCB2aWEgb3VyIGhhbmRsZXIgdG8ge0BsaW5rIEtleWd1YXJkVXBkYXRlTW9uaXRvciNoYW5kbGVTaW1TdGF0ZUNoYW5nZX0sCisgICAgICogd2UgbmVlZCBhIHNpbmdsZSBvYmplY3QgdG8gcGFzcyB0byB0aGUgaGFuZGxlci4gIFRoaXMgY2xhc3MgaGVscHMgZGVjb2RlCisgICAgICogdGhlIGludGVudCBhbmQgcHJvdmlkZSBhIHtAbGluayBTaW1DYXJkLlN0YXRlfSByZXN1bHQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU2ltQXJncyB7CisKKyAgICAgICAgcHVibGljIGZpbmFsIEljY0NhcmQuU3RhdGUgc2ltU3RhdGU7CisKKyAgICAgICAgcHJpdmF0ZSBTaW1BcmdzKEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgICAgIGlmICghVGVsZXBob255SW50ZW50cy5BQ1RJT05fU0lNX1NUQVRFX0NIQU5HRUQuZXF1YWxzKGludGVudC5nZXRBY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJvbmx5IGhhbmRsZXMgaW50ZW50IEFDVElPTl9TSU1fU1RBVEVfQ0hBTkdFRCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nIHN0YXRlRXh0cmEgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoSWNjQ2FyZC5JTlRFTlRfS0VZX0lDQ19TVEFURSk7CisgICAgICAgICAgICBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfSUNDX0FCU0VOVC5lcXVhbHMoc3RhdGVFeHRyYSkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5BQlNFTlQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKEljY0NhcmQuSU5URU5UX1ZBTFVFX0lDQ19SRUFEWS5lcXVhbHMoc3RhdGVFeHRyYSkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5SRUFEWTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfSUNDX0xPQ0tFRC5lcXVhbHMoc3RhdGVFeHRyYSkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbG9ja2VkUmVhc29uID0gaW50ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0U3RyaW5nRXh0cmEoSWNjQ2FyZC5JTlRFTlRfS0VZX0xPQ0tFRF9SRUFTT04pOworICAgICAgICAgICAgICAgIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9MT0NLRURfT05fUElOLmVxdWFscyhsb2NrZWRSZWFzb24pKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlBJTl9SRVFVSVJFRDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEljY0NhcmQuSU5URU5UX1ZBTFVFX0xPQ0tFRF9PTl9QVUsuZXF1YWxzKGxvY2tlZFJlYXNvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlVOS05PV047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9MT0NLRURfTkVUV09SSy5lcXVhbHMoc3RhdGVFeHRyYSkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5ORVRXT1JLX0xPQ0tFRDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5zaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuVU5LTk9XTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gc2ltU3RhdGUudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBLZXlndWFyZFVwZGF0ZU1vbml0b3IoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKworICAgICAgICBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtc2cud2hhdCkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIE1TR19USU1FX1VQREFURToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVVcGRhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIE1TR19CQVRURVJZX1VQREFURToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUJhdHRlcnlVcGRhdGUobXNnLmFyZzEsICBtc2cuYXJnMik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBNU0dfQ0FSUklFUl9JTkZPX1VQREFURToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNhcnJpZXJJbmZvVXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBNU0dfU0lNX1NUQVRFX0NIQU5HRToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNpbVN0YXRlQ2hhbmdlKChTaW1BcmdzKSBtc2cub2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIE1TR19SSU5HRVJfTU9ERV9DSEFOR0VEOgorICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmluZ2VyTW9kZUNoYW5nZShtc2cuYXJnMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBNU0dfUEhPTkVfU1RBVEVfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVBob25lU3RhdGVDaGFuZ2VkKChTdHJpbmcpbXNnLm9iaik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgbUtleWd1YXJkQnlwYXNzRW5hYmxlZCA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX2J5cGFzc19rZXlndWFyZF9pZl9zbGlkZXJfb3Blbik7CisKKyAgICAgICAgbURldmljZVByb3Zpc2lvbmVkID0gU2V0dGluZ3MuU2VjdXJlLmdldEludCgKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU2VjdXJlLkRFVklDRV9QUk9WSVNJT05FRCwgMCkgIT0gMDsKKworICAgICAgICAvLyBTaW5jZSBkZXZpY2UgY2FuJ3QgYmUgdW4tcHJvdmlzaW9uZWQsIHdlIG9ubHkgbmVlZCB0byByZWdpc3RlciBhIGNvbnRlbnQgb2JzZXJ2ZXIKKyAgICAgICAgLy8gdG8gdXBkYXRlIG1EZXZpY2VQcm92aXNpb25lZCB3aGVuIHdlIGFyZS4uLgorICAgICAgICBpZiAoIW1EZXZpY2VQcm92aXNpb25lZCkgeworICAgICAgICAgICAgbUNvbnRlbnRPYnNlcnZlciA9IG5ldyBDb250ZW50T2JzZXJ2ZXIobUhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkNoYW5nZShib29sZWFuIHNlbGZDaGFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgc3VwZXIub25DaGFuZ2Uoc2VsZkNoYW5nZSk7CisgICAgICAgICAgICAgICAgICAgIG1EZXZpY2VQcm92aXNpb25lZCA9IFNldHRpbmdzLlNlY3VyZS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuREVWSUNFX1BST1ZJU0lPTkVELCAwKSAhPSAwOworICAgICAgICAgICAgICAgICAgICBpZiAobURldmljZVByb3Zpc2lvbmVkICYmIG1Db250ZW50T2JzZXJ2ZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGUgb2JzZXJ2ZXIgYW55bW9yZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCkudW5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcihtQ29udGVudE9ic2VydmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZW50T2JzZXJ2ZXIgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiREVWSUNFX1BST1ZJU0lPTkVEIHN0YXRlID0gIiArIG1EZXZpY2VQcm92aXNpb25lZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCkucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5nZXRVcmlGb3IoU2V0dGluZ3MuU2VjdXJlLkRFVklDRV9QUk9WSVNJT05FRCksCisgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBtQ29udGVudE9ic2VydmVyKTsKKworICAgICAgICAgICAgLy8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gd2hlcmUgd2UgY2hlY2sgdGhlIGZsYWcgYW5kIHdoZXJlIHdlIHJlZ2lzdGVyIHRoZQorICAgICAgICAgICAgLy8gb2JzZXJ2ZXIgYnkgZ3JhYmJpbmcgdGhlIHZhbHVlIG9uY2UgYWdhaW4uLi4KKyAgICAgICAgICAgIG1EZXZpY2VQcm92aXNpb25lZCA9IFNldHRpbmdzLlNlY3VyZS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkRFVklDRV9QUk9WSVNJT05FRCwgMCkgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHRha2UgYSBndWVzcyB0byBzdGFydAorICAgICAgICBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOworICAgICAgICBtRGV2aWNlUGx1Z2dlZEluID0gdHJ1ZTsKKyAgICAgICAgbUJhdHRlcnlMZXZlbCA9IDEwMDsKKworICAgICAgICBtVGVsZXBob255UGxtbiA9IGdldERlZmF1bHRQbG1uKCk7CisKKyAgICAgICAgLy8gc2V0dXAgcmVjZWl2ZXIKKyAgICAgICAgZmluYWwgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVfVElDSyk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVaT05FX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnlNYW5hZ2VyLkFDVElPTl9QSE9ORV9TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihTUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTik7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX0NIQU5HRURfQUNUSU9OKTsKKyAgICAgICAgY29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJyZWNlaXZlZCBicm9hZGNhc3QgIiArIGFjdGlvbik7CisKKyAgICAgICAgICAgICAgICBpZiAoSW50ZW50LkFDVElPTl9USU1FX1RJQ0suZXF1YWxzKGFjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IEludGVudC5BQ1RJT05fVElNRV9DSEFOR0VELmVxdWFscyhhY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBJbnRlbnQuQUNUSU9OX1RJTUVaT05FX0NIQU5HRUQuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfVElNRV9VUERBVEUpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFNQTl9TVFJJTkdTX1VQREFURURfQUNUSU9OLmVxdWFscyhhY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgICAgIG1UZWxlcGhvbnlQbG1uID0gZ2V0VGVsZXBob255UGxtbkZyb20oaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbVRlbGVwaG9ueVNwbiA9IGdldFRlbGVwaG9ueVNwbkZyb20oaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfQ0FSUklFUl9JTkZPX1VQREFURSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoSW50ZW50LkFDVElPTl9CQVRURVJZX0NIQU5HRUQuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHBsdWdnZWRJblN0YXR1cyA9IGludGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRJbnRFeHRyYSgic3RhdHVzIiwgQkFUVEVSWV9TVEFUVVNfVU5LTk9XTik7CisgICAgICAgICAgICAgICAgICAgIGludCBiYXR0ZXJ5TGV2ZWwgPSBpbnRlbnQuZ2V0SW50RXh0cmEoImxldmVsIiwgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfQkFUVEVSWV9VUERBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2dlZEluU3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdHRlcnlMZXZlbCk7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChUZWxlcGhvbnlJbnRlbnRzLkFDVElPTl9TSU1fU1RBVEVfQ0hBTkdFRC5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtSGFuZGxlci5vYnRhaW5NZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19TSU1fU1RBVEVfQ0hBTkdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTaW1BcmdzKGludGVudCkpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9DSEFOR0VEX0FDVElPTi5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19SSU5HRVJfTU9ERV9DSEFOR0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRJbnRFeHRyYShBdWRpb01hbmFnZXIuRVhUUkFfUklOR0VSX01PREUsIC0xKSwgMCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoVGVsZXBob255TWFuYWdlci5BQ1RJT05fUEhPTkVfU1RBVEVfQ0hBTkdFRC5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3RhdGUgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoVGVsZXBob255TWFuYWdlci5FWFRSQV9TVEFURSk7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX1BIT05FX1NUQVRFX0NIQU5HRUQsIHN0YXRlKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LCBmaWx0ZXIpOworICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVBob25lU3RhdGVDaGFuZ2VkKFN0cmluZyBuZXdTdGF0ZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZVBob25lU3RhdGVDaGFuZ2VkKCIgKyBuZXdTdGF0ZSArICIpIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbUluZm9DYWxsYmFja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIG1JbmZvQ2FsbGJhY2tzLmdldChpKS5vblBob25lU3RhdGVDaGFuZ2VkKG5ld1N0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVJpbmdlck1vZGVDaGFuZ2UoaW50IG1vZGUpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJoYW5kbGVSaW5nZXJNb2RlQ2hhbmdlKCIgKyBtb2RlICsgIikiKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtSW5mb0NhbGxiYWNrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgbUluZm9DYWxsYmFja3MuZ2V0KGkpLm9uUmluZ2VyTW9kZUNoYW5nZWQobW9kZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUge0BsaW5rICNNU0dfVElNRV9VUERBVEV9CisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVRpbWVVcGRhdGUoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlVGltZVVwZGF0ZSIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1JbmZvQ2FsbGJhY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBtSW5mb0NhbGxiYWNrcy5nZXQoaSkub25UaW1lQ2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIHtAbGluayAjTVNHX0JBVFRFUllfVVBEQVRFfQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVCYXR0ZXJ5VXBkYXRlKGludCBwbHVnZ2VkSW5TdGF0dXMsIGludCBiYXR0ZXJ5TGV2ZWwpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJoYW5kbGVCYXR0ZXJ5VXBkYXRlIik7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gcGx1Z2dlZEluID0gaXNQbHVnZ2VkSW4ocGx1Z2dlZEluU3RhdHVzKTsKKworICAgICAgICBpZiAoaXNCYXR0ZXJ5VXBkYXRlSW50ZXJlc3RpbmcocGx1Z2dlZEluLCBiYXR0ZXJ5TGV2ZWwpKSB7CisgICAgICAgICAgICBtQmF0dGVyeUxldmVsID0gYmF0dGVyeUxldmVsOworICAgICAgICAgICAgbURldmljZVBsdWdnZWRJbiA9IHBsdWdnZWRJbjsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbUluZm9DYWxsYmFja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBtSW5mb0NhbGxiYWNrcy5nZXQoaSkub25SZWZyZXNoQmF0dGVyeUluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93QmF0dGVyeUluZm8oKSwgcGx1Z2dlZEluLCBiYXR0ZXJ5TGV2ZWwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIHtAbGluayAjTVNHX0NBUlJJRVJfSU5GT19VUERBVEV9CisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUNhcnJpZXJJbmZvVXBkYXRlKCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZUNhcnJpZXJJbmZvVXBkYXRlOiBwbG1uID0gIiArIG1UZWxlcGhvbnlQbG1uCisgICAgICAgICAgICArICIsIHNwbiA9ICIgKyBtVGVsZXBob255U3BuKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1JbmZvQ2FsbGJhY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBtSW5mb0NhbGxiYWNrcy5nZXQoaSkub25SZWZyZXNoQ2FycmllckluZm8obVRlbGVwaG9ueVBsbW4sIG1UZWxlcGhvbnlTcG4pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIHtAbGluayAjTVNHX1NJTV9TVEFURV9DSEFOR0V9CisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNpbVN0YXRlQ2hhbmdlKFNpbUFyZ3Mgc2ltQXJncykgeworICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHN0YXRlID0gc2ltQXJncy5zaW1TdGF0ZTsKKworICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgIExvZy5kKFRBRywgImhhbmRsZVNpbVN0YXRlQ2hhbmdlOiBpbnRlbnRWYWx1ZSA9ICIgKyBzaW1BcmdzICsgIiAiCisgICAgICAgICAgICAgICAgICAgICsgInN0YXRlIHJlc29sdmVkIHRvICIgKyBzdGF0ZS50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGF0ZSAhPSBJY2NDYXJkLlN0YXRlLlVOS05PV04gJiYgc3RhdGUgIT0gbVNpbVN0YXRlKSB7CisgICAgICAgICAgICBtU2ltU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVNpbVN0YXRlQ2FsbGJhY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgbVNpbVN0YXRlQ2FsbGJhY2tzLmdldChpKS5vblNpbVN0YXRlQ2hhbmdlZChzdGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gc3RhdHVzIE9uZSBvZiB0aGUgc3RhdHVzZXMgb2Yge0BsaW5rIGFuZHJvaWQub3MuQmF0dGVyeU1hbmFnZXJ9CisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBzdGF0dXMgbWFwcyB0byBhIHN0YXR1cyBmb3IgYmVpbmcgcGx1Z2dlZCBpbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNQbHVnZ2VkSW4oaW50IHN0YXR1cykgeworICAgICAgICByZXR1cm4gc3RhdHVzID09IEJBVFRFUllfU1RBVFVTX0NIQVJHSU5HIHx8IHN0YXR1cyA9PSBCQVRURVJZX1NUQVRVU19GVUxMOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc0JhdHRlcnlVcGRhdGVJbnRlcmVzdGluZyhib29sZWFuIHBsdWdnZWRJbiwgaW50IGJhdHRlcnlMZXZlbCkgeworICAgICAgICAvLyBjaGFuZ2UgaW4gcGx1ZyBpcyBhbHdheXMgaW50ZXJlc3RpbmcKKyAgICAgICAgaWYgKG1EZXZpY2VQbHVnZ2VkSW4gIT0gcGx1Z2dlZEluKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNoYW5nZSBpbiBiYXR0ZXJ5IGxldmVsIHdoaWxlIHBsdWdnZWQgaW4KKyAgICAgICAgaWYgKHBsdWdnZWRJbiAmJiBtQmF0dGVyeUxldmVsICE9IGJhdHRlcnlMZXZlbCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBsdWdnZWRJbikgeworICAgICAgICAgICAgLy8gbm90IHBsdWdnZWQgaW4gYW5kIGJlbG93IHRocmVzaG9sZAorICAgICAgICAgICAgaWYgKGJhdHRlcnlMZXZlbCA8IExPV19CQVRURVJZX1RIUkVTSE9MRCAmJiBiYXR0ZXJ5TGV2ZWwgIT0gbUJhdHRlcnlMZXZlbCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gaW50ZW50IFRoZSBpbnRlbnQgd2l0aCBhY3Rpb24ge0BsaW5rIFRlbGVwaG9ueS5JbnRlbnRzI1NQTl9TVFJJTkdTX1VQREFURURfQUNUSU9OfQorICAgICAqIEByZXR1cm4gVGhlIHN0cmluZyB0byB1c2UgZm9yIHRoZSBwbG1uLCBvciBudWxsIGlmIGl0IHNob3VsZCBub3QgYmUgc2hvd24uCisgICAgICovCisgICAgcHJpdmF0ZSBDaGFyU2VxdWVuY2UgZ2V0VGVsZXBob255UGxtbkZyb20oSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoaW50ZW50LmdldEJvb2xlYW5FeHRyYShFWFRSQV9TSE9XX1BMTU4sIGZhbHNlKSkgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBsbW4gPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoRVhUUkFfUExNTik7CisgICAgICAgICAgICBpZiAocGxtbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBsbW47CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBnZXREZWZhdWx0UGxtbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEByZXR1cm4gVGhlIGRlZmF1bHQgcGxtbiAobm8gc2VydmljZSkKKyAgICAgKi8KKyAgICBwcml2YXRlIENoYXJTZXF1ZW5jZSBnZXREZWZhdWx0UGxtbigpIHsKKyAgICAgICAgcmV0dXJuIG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldFRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICBSLnN0cmluZy5sb2Nrc2NyZWVuX2NhcnJpZXJfZGVmYXVsdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIGludGVudCBUaGUgaW50ZW50IHdpdGggYWN0aW9uIHtAbGluayBUZWxlcGhvbnkuSW50ZW50cyNTUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTn0KKyAgICAgKiBAcmV0dXJuIFRoZSBzdHJpbmcgdG8gdXNlIGZvciB0aGUgcGxtbiwgb3IgbnVsbCBpZiBpdCBzaG91bGQgbm90IGJlIHNob3duLgorICAgICAqLworICAgIHByaXZhdGUgQ2hhclNlcXVlbmNlIGdldFRlbGVwaG9ueVNwbkZyb20oSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoaW50ZW50LmdldEJvb2xlYW5FeHRyYShFWFRSQV9TSE9XX1NQTiwgZmFsc2UpKSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc3BuID0gaW50ZW50LmdldFN0cmluZ0V4dHJhKEVYVFJBX1NQTik7CisgICAgICAgICAgICBpZiAoc3BuICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSB0aGUgZ2l2ZW4gb2JzZXJ2ZXIgZnJvbSBiZWluZyByZWdpc3RlcmVkIGZyb20gYW55IG9mIHRoZSBraW5kcworICAgICAqIG9mIGNhbGxiYWNrcy4KKyAgICAgKiBAcGFyYW0gb2JzZXJ2ZXIgVGhlIG9ic2VydmVyIHRvIHJlbW92ZSAoYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENvbmZpZ3VyYXRpb25DaGFuZ2VDYWxsYmFja30sCisgICAgICogICB7QGxpbmsgSW5mb0NhbGxiYWNrfSBvciB7QGxpbmsgU2ltU3RhdGVDYWxsYmFja30KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZW1vdmVDYWxsYmFjayhPYmplY3Qgb2JzZXJ2ZXIpIHsKKyAgICAgICAgbUluZm9DYWxsYmFja3MucmVtb3ZlKG9ic2VydmVyKTsKKyAgICAgICAgbVNpbVN0YXRlQ2FsbGJhY2tzLnJlbW92ZShvYnNlcnZlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGJhY2sgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gbG9jayBzY3JlZW4uCisgICAgICovCisgICAgaW50ZXJmYWNlIEluZm9DYWxsYmFjayB7CisgICAgICAgIHZvaWQgb25SZWZyZXNoQmF0dGVyeUluZm8oYm9vbGVhbiBzaG93QmF0dGVyeUluZm8sIGJvb2xlYW4gcGx1Z2dlZEluLCBpbnQgYmF0dGVyeUxldmVsKTsKKyAgICAgICAgdm9pZCBvblRpbWVDaGFuZ2VkKCk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBwbG1uIFRoZSBvcGVyYXRvciBuYW1lIG9mIHRoZSByZWdpc3RlcmVkIG5ldHdvcmsuICBNYXkgYmUgbnVsbCBpZiBpdCBzaG91bGRuJ3QKKyAgICAgICAgICogICBiZSBkaXNwbGF5ZWQuCisgICAgICAgICAqIEBwYXJhbSBzcG4gVGhlIHNlcnZpY2UgcHJvdmlkZXIgbmFtZS4gIE1heSBiZSBudWxsIGlmIGl0IHNob3VsZG4ndCBiZSBkaXNwbGF5ZWQuCisgICAgICAgICAqLworICAgICAgICB2b2lkIG9uUmVmcmVzaENhcnJpZXJJbmZvKENoYXJTZXF1ZW5jZSBwbG1uLCBDaGFyU2VxdWVuY2Ugc3BuKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQ2FsbGVkIHdoZW4gdGhlIHJpbmdlciBtb2RlIGNoYW5nZXMuCisgICAgICAgICAqIEBwYXJhbSBzdGF0ZSB0aGUgY3VycmVudCByaW5nZXIgc3RhdGUsIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICoge0BsaW5rIEF1ZGlvTWFuYWdlciNSSU5HRVJfTU9ERV9DSEFOR0VEX0FDVElPTn0KKyAgICAgICAgICovCisgICAgICAgIHZvaWQgb25SaW5nZXJNb2RlQ2hhbmdlZChpbnQgc3RhdGUpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBDYWxsZWQgd2hlbiB0aGUgcGhvbmUgc3RhdGUgY2hhbmdlcy4gU3RyaW5nIHdpbGwgYmUgb25lIG9mOgorICAgICAgICAgKiB7QGxpbmsgVGVsZXBob255TWFuYWdlciNFWFRSQV9TVEFURV9JRExFfQorICAgICAgICAgKiB7QGxpbmsgVGVsZXBob255TWFuYWdlckBFWFRSQV9TVEFURV9SSU5HSU5HfQorICAgICAgICAgKiB7QGxpbmsgVGVsZXBob255TWFuYWdlciNFWFRSQV9TVEFURV9PRkZIT09LCisgICAgICAgICAqLworICAgICAgICB2b2lkIG9uUGhvbmVTdGF0ZUNoYW5nZWQoU3RyaW5nIG5ld1N0YXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxsYmFjayB0byBub3RpZnkgb2Ygc2ltIHN0YXRlIGNoYW5nZS4KKyAgICAgKi8KKyAgICBpbnRlcmZhY2UgU2ltU3RhdGVDYWxsYmFjayB7CisgICAgICAgIHZvaWQgb25TaW1TdGF0ZUNoYW5nZWQoSWNjQ2FyZC5TdGF0ZSBzaW1TdGF0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgdG8gcmVjZWl2ZSBub3RpZmljYXRpb25zIGFib3V0IGdlbmVyYWwga2V5Z3VhcmQgaW5mb3JtYXRpb24KKyAgICAgKiAoc2VlIHtAbGluayBJbmZvQ2FsbGJhY2t9LgorICAgICAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2suCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVnaXN0ZXJJbmZvQ2FsbGJhY2soSW5mb0NhbGxiYWNrIGNhbGxiYWNrKSB7CisgICAgICAgIGlmICghbUluZm9DYWxsYmFja3MuY29udGFpbnMoY2FsbGJhY2spKSB7CisgICAgICAgICAgICBtSW5mb0NhbGxiYWNrcy5hZGQoY2FsbGJhY2spOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiT2JqZWN0IHRyaWVkIHRvIGFkZCBhbm90aGVyIElORk8gY2FsbGJhY2siLCBuZXcgRXhjZXB0aW9uKCJXaG9vcHMiKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlciB0byBiZSBub3RpZmllZCBvZiBzaW0gc3RhdGUgY2hhbmdlcy4KKyAgICAgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyU2ltU3RhdGVDYWxsYmFjayhTaW1TdGF0ZUNhbGxiYWNrIGNhbGxiYWNrKSB7CisgICAgICAgIGlmICghbVNpbVN0YXRlQ2FsbGJhY2tzLmNvbnRhaW5zKGNhbGxiYWNrKSkgeworICAgICAgICAgICAgbVNpbVN0YXRlQ2FsbGJhY2tzLmFkZChjYWxsYmFjayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJPYmplY3QgdHJpZWQgdG8gYWRkIGFub3RoZXIgU0lNIGNhbGxiYWNrIiwgbmV3IEV4Y2VwdGlvbigiV2hvb3BzIikpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIEljY0NhcmQuU3RhdGUgZ2V0U2ltU3RhdGUoKSB7CisgICAgICAgIHJldHVybiBtU2ltU3RhdGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwb3J0IHRoYXQgdGhlIHVzZXIgc3VjY2VzZnVsbHkgZW50ZXJlZCB0aGUgc2ltIHBpbiBzbyB3ZQorICAgICAqIGhhdmUgdGhlIGluZm9ybWF0aW9uIGVhcmxpZXIgdGhhbiB3YWl0aW5nIGZvciB0aGUgaW50ZW50CisgICAgICogYnJvYWRjYXN0IGZyb20gdGhlIHRlbGVwaG9ueSBjb2RlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcG9ydFNpbVBpblVubG9ja2VkKCkgeworICAgICAgICBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzS2V5Z3VhcmRCeXBhc3NFbmFibGVkKCkgeworICAgICAgICByZXR1cm4gbUtleWd1YXJkQnlwYXNzRW5hYmxlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0RldmljZVBsdWdnZWRJbigpIHsKKyAgICAgICAgcmV0dXJuIG1EZXZpY2VQbHVnZ2VkSW47CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRCYXR0ZXJ5TGV2ZWwoKSB7CisgICAgICAgIHJldHVybiBtQmF0dGVyeUxldmVsOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHNob3VsZFNob3dCYXR0ZXJ5SW5mbygpIHsKKyAgICAgICAgcmV0dXJuIG1EZXZpY2VQbHVnZ2VkSW4gfHwgbUJhdHRlcnlMZXZlbCA8IExPV19CQVRURVJZX1RIUkVTSE9MRDsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2hhclNlcXVlbmNlIGdldFRlbGVwaG9ueVBsbW4oKSB7CisgICAgICAgIHJldHVybiBtVGVsZXBob255UGxtbjsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2hhclNlcXVlbmNlIGdldFRlbGVwaG9ueVNwbigpIHsKKyAgICAgICAgcmV0dXJuIG1UZWxlcGhvbnlTcG47CisgICAgfQorCisgICAgLyoqCisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBkZXZpY2UgaXMgcHJvdmlzaW9uZWQgKHdoZXRoZXIgdGhleSBoYXZlIGdvbmUgdGhyb3VnaAorICAgICAqICAgdGhlIHNldHVwIHdpemFyZCkKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0RldmljZVByb3Zpc2lvbmVkKCkgeworICAgICAgICByZXR1cm4gbURldmljZVByb3Zpc2lvbmVkOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0RmFpbGVkQXR0ZW1wdHMoKSB7CisgICAgICAgIHJldHVybiBtRmFpbGVkQXR0ZW1wdHM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgY2xlYXJGYWlsZWRBdHRlbXB0cygpIHsKKyAgICAgICAgbUZhaWxlZEF0dGVtcHRzID0gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZXBvcnRGYWlsZWRBdHRlbXB0KCkgeworICAgICAgICBtRmFpbGVkQXR0ZW1wdHMrKzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld0Jhc2UuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3QmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkY2JjYjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld0Jhc2UuamF2YQpAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlRlbGVwaG9ueU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5HcmF2aXR5OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CisKKy8qKgorICogQmFzZSBjbGFzcyBmb3Iga2V5Z3VhcmQgdmlld3MuICB7QGxpbmsgI3Jlc2V0fSBpcyB3aGVyZSB5b3Ugc2hvdWxkCisgKiByZXNldCB0aGUgc3RhdGUgb2YgeW91ciB2aWV3LiAgVXNlIHRoZSB7QGxpbmsgS2V5Z3VhcmRWaWV3Q2FsbGJhY2t9IHZpYQorICoge0BsaW5rICNnZXRDYWxsYmFjaygpfSB0byBzZW5kIGluZm9ybWF0aW9uIGJhY2sgKHN1Y2ggYXMgcG9raW5nIHRoZSB3YWtlIGxvY2ssCisgKiBvciBmaW5pc2hpbmcgdGhlIGtleWd1YXJkKS4KKyAqCisgKiBIYW5kbGVzIGludGVyY2VwdGluZyBvZiBtZWRpYSBrZXlzIHRoYXQgc3RpbGwgd29yayB3aGVuIHRoZSBrZXlndWFyZCBpcworICogc2hvd2luZy4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEtleWd1YXJkVmlld0Jhc2UgZXh0ZW5kcyBGcmFtZUxheW91dCB7CisKKyAgICBwcml2YXRlIEtleWd1YXJkVmlld0NhbGxiYWNrIG1DYWxsYmFjazsKKyAgICBwcml2YXRlIEF1ZGlvTWFuYWdlciBtQXVkaW9NYW5hZ2VyOworICAgIHByaXZhdGUgVGVsZXBob255TWFuYWdlciBtVGVsZXBob255TWFuYWdlciA9IG51bGw7CisKKyAgICBwdWJsaWMgS2V5Z3VhcmRWaWV3QmFzZShDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisKKyAgICAgICAgLy8gZHJvcCBzaGFkb3cgYmVsb3cgc3RhdHVzIGJhciBpbiBrZXlndWFyZCB0b28KKyAgICAgICAgbUZvcmVncm91bmRJblBhZGRpbmcgPSBmYWxzZTsKKyAgICAgICAgc2V0Rm9yZWdyb3VuZEdyYXZpdHkoR3Jhdml0eS5GSUxMX0hPUklaT05UQUwgfCBHcmF2aXR5LlRPUCk7CisgICAgICAgIHNldEZvcmVncm91bmQoCisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUudGl0bGVfYmFyX3NoYWRvdykpOworICAgIH0KKworICAgIC8vIHVzZWQgdG8gaW5qZWN0IGNhbGxiYWNrCisgICAgdm9pZCBzZXRDYWxsYmFjayhLZXlndWFyZFZpZXdDYWxsYmFjayBjYWxsYmFjaykgeworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB9CisKKyAgICBwdWJsaWMgS2V5Z3VhcmRWaWV3Q2FsbGJhY2sgZ2V0Q2FsbGJhY2soKSB7CisgICAgICAgIHJldHVybiBtQ2FsbGJhY2s7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGVkIHdoZW4geW91IG5lZWQgdG8gcmVzZXQgdGhlIHN0YXRlIG9mIHlvdXIgdmlldy4KKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwdWJsaWMgdm9pZCByZXNldCgpOworCisgICAgLyoqCisgICAgICogQ2FsbGVkIHdoZW4gdGhlIHNjcmVlbiB0dXJuZWQgb2ZmLgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIG9uU2NyZWVuVHVybmVkT2ZmKCk7CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgd2hlbiB0aGUgc2NyZWVuIHR1cm5lZCBvbi4KKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwdWJsaWMgdm9pZCBvblNjcmVlblR1cm5lZE9uKCk7CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgd2hlbiBhIGtleSBoYXMgd29rZW4gdGhlIGRldmljZSB0byBnaXZlIHVzIGEgY2hhbmNlIHRvIGFkanVzdCBvdXIKKyAgICAgKiBzdGF0ZSBhY2NvcmRpbmcgdGhlIHRoZSBrZXkuICBXZSBhcmUgcmVzcG9uc2libGUgZm9yIHdha2luZyB0aGUgZGV2aWNlCisgICAgICogKGJ5IHBva2luZyB0aGUgd2FrZSBsb2NrKSBvbmNlIHdlIGFyZSByZWFkeS4KKyAgICAgKgorICAgICAqIFRoZSAnVHEnIHN1ZmZpeCBpcyBwZXIgdGhlIGRvY3VtZW50YXRpb24gaW4ge0BsaW5rIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyUG9saWN5fS4KKyAgICAgKiBCZSBzdXJlIG5vdCB0byB0YWtlIGFueSBhY3Rpb24gdGhhdCB0YWtlcyBhIGxvbmcgdGltZTsgYW55IHNpZ25pZmljYW50CisgICAgICogYWN0aW9uIHNob3VsZCBiZSBwb3N0ZWQgdG8gYSBoYW5kbGVyLgorICAgICAqCisgICAgICogQHBhcmFtIGtleUNvZGUgVGhlIHdha2Uga2V5LCB3aGljaCBtYXkgYmUgcmVsZXZhbnQgZm9yIGNvbmZpZ3VyaW5nIHRoZQorICAgICAqICAga2V5Z3VhcmQuCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgd2FrZVdoZW5SZWFkeVRxKGludCBrZXlDb2RlKTsKKworICAgIC8qKgorICAgICAqIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGNhbiBnZXQgcGFzdCB0aGUga2V5Z3VhcmQgc2VjdXJlbHkuICBUaGlzIGlzIGNhbGxlZCwKKyAgICAgKiBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgcGhvbmUgZGlzYWJsZXMgdGhlIGtleWd1YXJkIGJ1dCB0aGVuIHdhbnRzIHRvIGxhdW5jaAorICAgICAqIHNvbWV0aGluZyBlbHNlIHRoYXQgcmVxdWlyZXMgc2VjdXJlIGFjY2Vzcy4KKyAgICAgKgorICAgICAqIFRoZSByZXN1bHQgd2lsbCBiZSBwcm9wb2dhdGVkIGJhY2sgdmlhIHtAbGluayBLZXlndWFyZFZpZXdDYWxsYmFjayNrZXlndWFyZERvbmUoYm9vbGVhbil9CisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgdmVyaWZ5VW5sb2NrKCk7CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgYmVmb3JlIHRoaXMgdmlldyBpcyBiZWluZyByZW1vdmVkLgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIGNsZWFuVXAoKTsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKHNob3VsZEV2ZW50S2VlcFNjcmVlbk9uV2hpbGVLZXlndWFyZFNob3dpbmcoZXZlbnQpKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW50ZXJjZXB0TWVkaWFLZXkoZXZlbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3VwZXIuZGlzcGF0Y2hLZXlFdmVudChldmVudCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHNob3VsZEV2ZW50S2VlcFNjcmVlbk9uV2hpbGVLZXlndWFyZFNob3dpbmcoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpICE9IEtleUV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChldmVudC5nZXRLZXlDb2RlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0RPV046CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfRFBBRF9MRUZUOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0RQQURfUklHSFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfRFBBRF9VUDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb3dzIHRoZSBtZWRpYSBrZXlzIHRvIHdvcmsgd2hlbiB0aGUga2V5Z3VhcmQgaXMgc2hvd2luZy4KKyAgICAgKiBUaGUgbWVkaWEga2V5cyBzaG91bGQgYmUgb2Ygbm8gaW50ZXJlc3QgdG8gdGhlIGFjdHVhbCBrZXlndWFyZCB2aWV3KHMpLAorICAgICAqIHNvIGludGVyY2VwdGluZyB0aGVtIGhlcmUgc2hvdWxkIG5vdCBiZSBvZiBhbnkgaGFybS4KKyAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleSBldmVudAorICAgICAqIEByZXR1cm4gd2hldGhlciB0aGUgZXZlbnQgd2FzIGNvbnN1bWVkIGFzIGEgbWVkaWEga2V5LgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpbnRlcmNlcHRNZWRpYUtleShLZXlFdmVudCBldmVudCkgeworICAgICAgICBmaW5hbCBpbnQga2V5Q29kZSA9IGV2ZW50LmdldEtleUNvZGUoKTsKKyAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUExBWV9QQVVTRToKKyAgICAgICAgICAgICAgICAgICAgLyogU3VwcHJlc3MgUExBWVBBVVNFIHRvZ2dsZSB3aGVuIHBob25lIGlzIHJpbmdpbmcgb3IKKyAgICAgICAgICAgICAgICAgICAgICogaW4tY2FsbCB0byBhdm9pZCBtdXNpYyBwbGF5YmFjayAqLworICAgICAgICAgICAgICAgICAgICBpZiAobVRlbGVwaG9ueU1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVRlbGVwaG9ueU1hbmFnZXIgPSAoVGVsZXBob255TWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChtVGVsZXBob255TWFuYWdlciAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRlbGVwaG9ueU1hbmFnZXIuZ2V0Q2FsbFN0YXRlKCkgIT0gVGVsZXBob255TWFuYWdlci5DQUxMX1NUQVRFX0lETEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gc3VwcHJlc3Mga2V5IGV2ZW50CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfSEVBRFNFVEhPT0s6IAorICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9TVE9QOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfTkVYVDogCisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX1BSRVZJT1VTOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfRkFTVF9GT1JXQVJEOiB7CisgICAgICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fTUVESUFfQlVUVE9OLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9LRVlfRVZFTlQsIGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLnNlbmRPcmRlcmVkQnJvYWRjYXN0KGludGVudCwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVA6CisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9ET1dOOiB7CisgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1BdWRpb01hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BdWRpb01hbmFnZXIgPSAoQXVkaW9NYW5hZ2VyKSBnZXRDb250ZXh0KCkuZ2V0U3lzdGVtU2VydmljZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuQVVESU9fU0VSVklDRSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gVm9sdW1lIGJ1dHRvbnMgc2hvdWxkIG9ubHkgZnVuY3Rpb24gZm9yIG11c2ljLgorICAgICAgICAgICAgICAgICAgICBpZiAobUF1ZGlvTWFuYWdlci5pc011c2ljQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1BdWRpb01hbmFnZXIuYWRqdXN0U3RyZWFtVm9sdW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLlNUUkVBTV9NVVNJQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBBdWRpb01hbmFnZXIuQURKVVNUX1JBSVNFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQXVkaW9NYW5hZ2VyLkFESlVTVF9MT1dFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGV4ZWN1dGUgZGVmYXVsdCB2b2x1bWUgYmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9VUCkgeworICAgICAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01VVEU6CisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0hFQURTRVRIT09LOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUExBWV9QQVVTRTogCisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX1NUT1A6IAorICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9ORVhUOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVM6IAorICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9SRVdJTkQ6IAorICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9GQVNUX0ZPUldBUkQ6IHsKKyAgICAgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9NRURJQV9CVVRUT04sIG51bGwpOworICAgICAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0tFWV9FVkVOVCwgZXZlbnQpOworICAgICAgICAgICAgICAgICAgICBnZXRDb250ZXh0KCkuc2VuZE9yZGVyZWRCcm9hZGNhc3QoaW50ZW50LCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3Q2FsbGJhY2suamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3Q2FsbGJhY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzc2ZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFZpZXdDYWxsYmFjay5qYXZhCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCisvKioKKyAqIFRoZSBjYWxsYmFjayB1c2VkIGJ5IHRoZSBrZXlndWFyZCB2aWV3IHRvIHRlbGwgdGhlIHtAbGluayBLZXlndWFyZFZpZXdNZWRpYXRvcn0gCisgKiB2YXJpb3VzIHRoaW5ncy4KKyAqLworcHVibGljIGludGVyZmFjZSBLZXlndWFyZFZpZXdDYWxsYmFjayB7CisKKyAgICAvKioKKyAgICAgKiBSZXF1ZXN0IHRoZSB3YWtlbG9jayB0byBiZSBwb2tlZCBmb3IgdGhlIGRlZmF1bHQgYW1vdW50IG9mIHRpbWUuCisgICAgICovCisgICAgdm9pZCBwb2tlV2FrZWxvY2soKTsKKworICAgIC8qKgorICAgICAqIFJlcXVlc3QgdGhlIHdha2Vsb2NrIHRvIGJlIHBva2VkIGZvciBhIHNwZWNpZmljIGFtb3VudCBvZiB0aW1lLgorICAgICAqIEBwYXJhbSBtaWxsaXMgVGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpcy4KKyAgICAgKi8KKyAgICB2b2lkIHBva2VXYWtlbG9jayhpbnQgbWlsbGlzKTsKKworICAgIC8qKgorICAgICAqIFJlcG9ydCB0aGF0IHRoZSBrZXlndWFyZCBpcyBkb25lLgorICAgICAqIEBwYXJhbSBhdXRoZW50aWNhdGVkIFdoZXRoZXIgdGhlIHVzZXIgc2VjdXJlbHkgZ290IHBhc3QgdGhlIGtleWd1YXJkLgorICAgICAqICAgdGhlIG9ubHkgcmVhc29uIGZvciB0aGlzIHRvIGJlIGZhbHNlIGlzIGlmIHRoZSBrZXlndWFyZCB3YXMgaW5zdHJ1Y3RlZAorICAgICAqICAgdG8gYXBwZWFyIHRlbXBvcmFyaWx5IHRvIHZlcmlmeSB0aGUgdXNlciBpcyBzdXBwb3NlZCB0byBnZXQgcGFzdCB0aGUKKyAgICAgKiAgIGtleWd1YXJkLCBhbmQgdGhlIHVzZXIgZmFpbHMgdG8gZG8gc28uCisgICAgICovCisgICAgdm9pZCBrZXlndWFyZERvbmUoYm9vbGVhbiBhdXRoZW50aWNhdGVkKTsKKworICAgIC8qKgorICAgICAqIFJlcG9ydCB0aGF0IHRoZSBrZXlndWFyZCBpcyBkb25lIGRyYXdpbmcuCisgICAgICovCisgICAgdm9pZCBrZXlndWFyZERvbmVEcmF3aW5nKCk7Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld01hbmFnZXIuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3TWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWQ3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld01hbmFnZXIuamF2YQpAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CisKKy8qKgorICogTWFuYWdlcyBjcmVhdGluZywgc2hvd2luZywgaGlkaW5nIGFuZCByZXNldHRpbmcgdGhlIGtleWd1YXJkLiAgQ2FsbHMgYmFjaworICogdmlhIHtAbGluayBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5LZXlndWFyZFZpZXdDYWxsYmFja30gdG8gcG9rZQorICogdGhlIHdha2UgbG9jayBhbmQgcmVwb3J0IHRoYXQgdGhlIGtleWd1YXJkIGlzIGRvbmUsIHdoaWNoIGlzIGluIHR1cm4sCisgKiByZXBvcnRlZCB0byB0aGlzIGNsYXNzIGJ5IHRoZSBjdXJyZW50IHtAbGluayBLZXlndWFyZFZpZXdCYXNlfS4KKyAqLworcHVibGljIGNsYXNzIEtleWd1YXJkVmlld01hbmFnZXIgaW1wbGVtZW50cyBLZXlndWFyZFdpbmRvd0NvbnRyb2xsZXIgeworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgVEFHID0gIktleWd1YXJkVmlld01hbmFnZXIiOworCisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgZmluYWwgVmlld01hbmFnZXIgbVZpZXdNYW5hZ2VyOworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRWaWV3Q2FsbGJhY2sgbUNhbGxiYWNrOworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRWaWV3UHJvcGVydGllcyBtS2V5Z3VhcmRWaWV3UHJvcGVydGllczsKKworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworCisgICAgcHJpdmF0ZSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBtV2luZG93TGF5b3V0UGFyYW1zOworICAgIHByaXZhdGUgYm9vbGVhbiBtTmVlZHNJbnB1dCA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBGcmFtZUxheW91dCBtS2V5Z3VhcmRIb3N0OworICAgIHByaXZhdGUgS2V5Z3VhcmRWaWV3QmFzZSBtS2V5Z3VhcmRWaWV3OworCisgICAgcHJpdmF0ZSBib29sZWFuIG1TY3JlZW5PbiA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIGNvbnRleHQgVXNlZCB0byBjcmVhdGUgdmlld3MuCisgICAgICogQHBhcmFtIHZpZXdNYW5hZ2VyIEtleWd1YXJkIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhpcy4KKyAgICAgKiBAcGFyYW0gY2FsbGJhY2sgVXNlZCB0byBub3RpZnkgb2YgY2hhbmdlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgS2V5Z3VhcmRWaWV3TWFuYWdlcihDb250ZXh0IGNvbnRleHQsIFZpZXdNYW5hZ2VyIHZpZXdNYW5hZ2VyLAorICAgICAgICAgICAgS2V5Z3VhcmRWaWV3Q2FsbGJhY2sgY2FsbGJhY2ssIEtleWd1YXJkVmlld1Byb3BlcnRpZXMga2V5Z3VhcmRWaWV3UHJvcGVydGllcywgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIHVwZGF0ZU1vbml0b3IpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtVmlld01hbmFnZXIgPSB2aWV3TWFuYWdlcjsKKyAgICAgICAgbUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIG1LZXlndWFyZFZpZXdQcm9wZXJ0aWVzID0ga2V5Z3VhcmRWaWV3UHJvcGVydGllczsKKworICAgICAgICBtVXBkYXRlTW9uaXRvciA9IHVwZGF0ZU1vbml0b3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogSGVscGVyIGNsYXNzIHRvIGhvc3QgdGhlIGtleWd1YXJkIHZpZXcuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgS2V5Z3VhcmRWaWV3SG9zdCBleHRlbmRzIEZyYW1lTGF5b3V0IHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBLZXlndWFyZFZpZXdDYWxsYmFjayBtQ2FsbGJhY2s7CisKKyAgICAgICAgcHJpdmF0ZSBLZXlndWFyZFZpZXdIb3N0KENvbnRleHQgY29udGV4dCwgS2V5Z3VhcmRWaWV3Q2FsbGJhY2sgY2FsbGJhY2spIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICAgICAgbUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZGlzcGF0Y2hEcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgICAgIHN1cGVyLmRpc3BhdGNoRHJhdyhjYW52YXMpOworICAgICAgICAgICAgbUNhbGxiYWNrLmtleWd1YXJkRG9uZURyYXdpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNob3cgdGhlIGtleWd1YXJkLiAgV2lsbCBoYW5kbGUgY3JlYXRpbmcgYW5kIGF0dGFjaGluZyB0byB0aGUgdmlldyBtYW5hZ2VyCisgICAgICogbGF6aWx5LgorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzaG93KCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNob3coKTsgbUtleWd1YXJkVmlldz09IiArIG1LZXlndWFyZFZpZXcpOworCisgICAgICAgIGlmIChtS2V5Z3VhcmRIb3N0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAia2V5Z3VhcmQgaG9zdCBpcyBudWxsLCBjcmVhdGluZyBpdC4uLiIpOworCisgICAgICAgICAgICBtS2V5Z3VhcmRIb3N0ID0gbmV3IEtleWd1YXJkVmlld0hvc3QobUNvbnRleHQsIG1DYWxsYmFjayk7CisKKyAgICAgICAgICAgIGZpbmFsIGludCBzdHJldGNoID0gVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQ7CisgICAgICAgICAgICBpbnQgZmxhZ3MgPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0ZPUkNFX05PVF9GVUxMU0NSRUVOCisgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19TSE9XX1dBTExQQVBFUgorICAgICAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfS0VFUF9TVVJGQUNFX1dISUxFX0FOSU1BVElORworICAgICAgICAgICAgICAgICAgICAvKnwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5fU0NSRUVOCisgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5TRVRfREVDT1IqLyA7CisgICAgICAgICAgICBpZiAoIW1OZWVkc0lucHV0KSB7CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNOworICAgICAgICAgICAgfQorICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHAgPSBuZXcgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMoCisgICAgICAgICAgICAgICAgICAgIHN0cmV0Y2gsIHN0cmV0Y2gsIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfS0VZR1VBUkQsCisgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVCk7CisgICAgICAgICAgICBscC5zb2Z0SW5wdXRNb2RlID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuU09GVF9JTlBVVF9BREpVU1RfUEFOOworICAgICAgICAgICAgbHAud2luZG93QW5pbWF0aW9ucyA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGUuQW5pbWF0aW9uX0xvY2tTY3JlZW47CisgICAgICAgICAgICBscC5zY3JlZW5PcmllbnRhdGlvbiA9IEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fTk9TRU5TT1I7CisgICAgICAgICAgICBscC5zZXRUaXRsZSgiS2V5Z3VhcmQiKTsKKyAgICAgICAgICAgIG1XaW5kb3dMYXlvdXRQYXJhbXMgPSBscDsKKworICAgICAgICAgICAgbVZpZXdNYW5hZ2VyLmFkZFZpZXcobUtleWd1YXJkSG9zdCwgbHApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1LZXlndWFyZFZpZXcgPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJrZXlndWFyZCB2aWV3IGlzIG51bGwsIGNyZWF0aW5nIGl0Li4uIik7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3ID0gbUtleWd1YXJkVmlld1Byb3BlcnRpZXMuY3JlYXRlS2V5Z3VhcmRWaWV3KG1Db250ZXh0LCBtVXBkYXRlTW9uaXRvciwgdGhpcyk7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3LnNldElkKFIuaWQubG9ja19zY3JlZW4pOworICAgICAgICAgICAgbUtleWd1YXJkVmlldy5zZXRDYWxsYmFjayhtQ2FsbGJhY2spOworCisgICAgICAgICAgICBmaW5hbCBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zIGxwID0gbmV3IEZyYW1lTGF5b3V0LkxheW91dFBhcmFtcygKKyAgICAgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5UKTsKKworICAgICAgICAgICAgbUtleWd1YXJkSG9zdC5hZGRWaWV3KG1LZXlndWFyZFZpZXcsIGxwKTsKKworICAgICAgICAgICAgaWYgKG1TY3JlZW5PbikgeworICAgICAgICAgICAgICAgIG1LZXlndWFyZFZpZXcub25TY3JlZW5UdXJuZWRPbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbUtleWd1YXJkSG9zdC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgIG1LZXlndWFyZFZpZXcucmVxdWVzdEZvY3VzKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TmVlZHNJbnB1dChib29sZWFuIG5lZWRzSW5wdXQpIHsKKyAgICAgICAgbU5lZWRzSW5wdXQgPSBuZWVkc0lucHV0OworICAgICAgICBpZiAobVdpbmRvd0xheW91dFBhcmFtcyAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAobmVlZHNJbnB1dCkgeworICAgICAgICAgICAgICAgIG1XaW5kb3dMYXlvdXRQYXJhbXMuZmxhZ3MgJj0KKyAgICAgICAgICAgICAgICAgICAgfldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVdpbmRvd0xheW91dFBhcmFtcy5mbGFncyB8PQorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtVmlld01hbmFnZXIudXBkYXRlVmlld0xheW91dChtS2V5Z3VhcmRIb3N0LCBtV2luZG93TGF5b3V0UGFyYW1zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgdmlldy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcmVzZXQoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAicmVzZXQoKSIpOworICAgICAgICBpZiAobUtleWd1YXJkVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3LnJlc2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgb25TY3JlZW5UdXJuZWRPZmYoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAib25TY3JlZW5UdXJuZWRPZmYoKSIpOworICAgICAgICBtU2NyZWVuT24gPSBmYWxzZTsKKyAgICAgICAgaWYgKG1LZXlndWFyZFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgbUtleWd1YXJkVmlldy5vblNjcmVlblR1cm5lZE9mZigpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIG9uU2NyZWVuVHVybmVkT24oKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAib25TY3JlZW5UdXJuZWRPbigpIik7CisgICAgICAgIG1TY3JlZW5PbiA9IHRydWU7CisgICAgICAgIGlmIChtS2V5Z3VhcmRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1LZXlndWFyZFZpZXcub25TY3JlZW5UdXJuZWRPbigpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHZlcmlmeVVubG9jaygpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ2ZXJpZnlVbmxvY2soKSIpOworICAgICAgICBzaG93KCk7CisgICAgICAgIG1LZXlndWFyZFZpZXcudmVyaWZ5VW5sb2NrKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQSBrZXkgaGFzIHdva2VuIHRoZSBkZXZpY2UuICBXZSB1c2UgdGhpcyB0byBwb3RlbnRpYWxseSBhZGp1c3QgdGhlIHN0YXRlCisgICAgICogb2YgdGhlIGxvY2sgc2NyZWVuIGJhc2VkIG9uIHRoZSBrZXkuCisgICAgICoKKyAgICAgKiBUaGUgJ1RxJyBzdWZmaXggaXMgcGVyIHRoZSBkb2N1bWVudGF0aW9uIGluIHtAbGluayBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlclBvbGljeX0uCisgICAgICogQmUgc3VyZSBub3QgdG8gdGFrZSBhbnkgYWN0aW9uIHRoYXQgdGFrZXMgYSBsb25nIHRpbWU7IGFueSBzaWduaWZpY2FudAorICAgICAqIGFjdGlvbiBzaG91bGQgYmUgcG9zdGVkIHRvIGEgaGFuZGxlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXlDb2RlIFRoZSB3YWtlIGtleS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiB3YWtlV2hlblJlYWR5VHEoaW50IGtleUNvZGUpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ3YWtlV2hlblJlYWR5KCIgKyBrZXlDb2RlICsgIikiKTsKKyAgICAgICAgaWYgKG1LZXlndWFyZFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgbUtleWd1YXJkVmlldy53YWtlV2hlblJlYWR5VHEoa2V5Q29kZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIm1LZXlndWFyZFZpZXcgaXMgbnVsbCBpbiB3YWtlV2hlblJlYWR5VHEiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhpZGVzIHRoZSBrZXlndWFyZCB2aWV3CisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGhpZGUoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGlkZSgpIik7CisgICAgICAgIGlmIChtS2V5Z3VhcmRIb3N0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1LZXlndWFyZEhvc3Quc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgLy8gRG9uJ3QgZG8gdGhpcyByaWdodCBhd2F5LCBzbyB3ZSBjYW4gbGV0IHRoZSB2aWV3IGNvbnRpbnVlIHRvIGFuaW1hdGUKKyAgICAgICAgICAgIC8vIGFzIGl0IGdvZXMgYXdheS4KKyAgICAgICAgICAgIGlmIChtS2V5Z3VhcmRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBLZXlndWFyZFZpZXdCYXNlIGxhc3RWaWV3ID0gbUtleWd1YXJkVmlldzsKKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRIb3N0LnBvc3REZWxheWVkKG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChLZXlndWFyZFZpZXdNYW5hZ2VyLnRoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRIb3N0LnJlbW92ZVZpZXcobGFzdFZpZXcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWaWV3LmNsZWFuVXAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sIDUwMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhlIGtleWd1YXJkIGlzIHNob3dpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gaXNTaG93aW5nKCkgeworICAgICAgICByZXR1cm4gKG1LZXlndWFyZEhvc3QgIT0gbnVsbCAmJiBtS2V5Z3VhcmRIb3N0LmdldFZpc2liaWxpdHkoKSA9PSBWaWV3LlZJU0lCTEUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3TWVkaWF0b3IuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3TWVkaWF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODIwM2MzCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFZpZXdNZWRpYXRvci5qYXZhCkBAIC0wLDAgKzEsMTEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlck5hdGl2ZTsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BbGFybU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5TdGF0dXNCYXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLlJpbmd0b25lOworaW1wb3J0IGFuZHJvaWQubWVkaWEuUmluZ3RvbmVNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuTG9jYWxQb3dlck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOworaW1wb3J0IGFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQ29uZmlnOworaW1wb3J0IGFuZHJvaWQudXRpbC5FdmVudExvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlckltcGw7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJQb2xpY3k7CisKKworLyoqCisgKiBNZWRpYXRlcyByZXF1ZXN0cyByZWxhdGVkIHRvIHRoZSBrZXlndWFyZC4gIFRoaXMgaW5jbHVkZXMgcXVlcmllcyBhYm91dCB0aGUKKyAqIHN0YXRlIG9mIHRoZSBrZXlndWFyZCwgcG93ZXIgbWFuYWdlbWVudCBldmVudHMgdGhhdCBlZmZlY3Qgd2hldGhlciB0aGUga2V5Z3VhcmQKKyAqIHNob3VsZCBiZSBzaG93biBvciByZXNldCwgY2FsbGJhY2tzIHRvIHRoZSBwaG9uZSB3aW5kb3cgbWFuYWdlciB0byBub3RpZnkKKyAqIGl0IG9mIHdoZW4gdGhlIGtleWd1YXJkIGlzIHNob3dpbmcsIGFuZCBldmVudHMgZnJvbSB0aGUga2V5Z3VhcmQgdmlldyBpdHNlbGYKKyAqIHN0YXRpbmcgdGhhdCB0aGUga2V5Z3VhcmQgd2FzIHN1Y2Nlc2Z1bGx5IHVubG9ja2VkLgorICoKKyAqIE5vdGUgdGhhdCB0aGUga2V5Z3VhcmQgdmlldyBpcyBzaG93biB3aGVuIHRoZSBzY3JlZW4gaXMgb2ZmIChhcyBhcHByb3ByaWF0ZSkKKyAqIHNvIHRoYXQgb25jZSB0aGUgc2NyZWVuIGNvbWVzIG9uLCBpdCB3aWxsIGJlIHJlYWR5IGltbWVkaWF0ZWx5LgorICoKKyAqIEV4YW1wbGUgcXVlcmllcyBhYm91dCB0aGUga2V5Z3VhcmQ6CisgKiAtIGlzIHttb3ZlbWVudCwga2V5fSBvbmUgdGhhdCBzaG91bGQgd2FrZSB0aGUga2V5Z2F1cmQ/CisgKiAtIGlzIHRoZSBrZXlndWFyZCBzaG93aW5nPworICogLSBhcmUgaW5wdXQgZXZlbnRzIHJlc3RyaWN0ZWQgZHVlIHRvIHRoZSBzdGF0ZSBvZiB0aGUga2V5Z3VhcmQ/CisgKgorICogQ2FsbGJhY2tzIHRvIHRoZSBwaG9uZSB3aW5kb3cgbWFuYWdlcjoKKyAqIC0gdGhlIGtleWd1YXJkIGlzIHNob3dpbmcKKyAqCisgKiBFeGFtcGxlIGV4dGVybmFsIGV2ZW50cyB0aGF0IHRyYW5zbGF0ZSB0byBrZXlndWFyZCB2aWV3IGNoYW5nZXM6CisgKiAtIHNjcmVlbiB0dXJuZWQgb2ZmIC0+IHJlc2V0IHRoZSBrZXlndWFyZCwgYW5kIHNob3cgaXQgc28gaXQgd2lsbCBiZSByZWFkeQorICogICBuZXh0IHRpbWUgdGhlIHNjcmVlbiB0dXJucyBvbgorICogLSBrZXlib2FyZCBpcyBzbGlkIG9wZW4gLT4gaWYgdGhlIGtleWd1YXJkIGlzIG5vdCBzZWN1cmUsIGhpZGUgaXQKKyAqCisgKiBFdmVudHMgZnJvbSB0aGUga2V5Z3VhcmQgdmlldzoKKyAqIC0gdXNlciBzdWNjZXNmdWxseSB1bmxvY2tlZCBrZXlndWFyZCAtPiBoaWRlIGtleWd1YXJkIHZpZXcsIGFuZCBubyBsb25nZXIKKyAqICAgcmVzdHJpY3QgaW5wdXQgZXZlbnRzLgorICoKKyAqIE5vdGU6IGluIGFkZGl0aW9uIHRvIG5vcm1hbCBwb3dlciBtYW5hZ21lbnQgZXZlbnRzIHRoYXQgZWZmZWN0IHRoZSBzdGF0ZSBvZgorICogd2hldGhlciB0aGUga2V5Z3VhcmQgc2hvdWxkIGJlIHNob3dpbmcsIGV4dGVybmFsIGFwcHMgYW5kIHNlcnZpY2VzIG1heSByZXF1ZXN0CisgKiB0aGF0IHRoZSBrZXlndWFyZCBiZSBkaXNhYmxlZCB2aWEge0BsaW5rICNzZXRLZXlndWFyZEVuYWJsZWQoYm9vbGVhbil9LiAgV2hlbgorICogZmFsc2UsIHRoaXMgd2lsbCBvdmVycmlkZSBhbGwgb3RoZXIgY29uZGl0aW9ucyBmb3IgdHVybmluZyBvbiB0aGUga2V5Z3VhcmQuCisgKgorICogVGhyZWFkaW5nIGFuZCBzeW5jaHJvbml6YXRpb246CisgKiBUaGlzIGNsYXNzIGlzIGNyZWF0ZWQgYnkgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgb2YgdGhlIHtAbGluayBXaW5kb3dNYW5hZ2VyUG9saWN5fSwKKyAqIGFuZCBydW5zIG9uIGl0cyB0aHJlYWQuICBUaGUga2V5Z3VhcmQgVUkgaXMgY3JlYXRlZCBmcm9tIHRoYXQgdGhyZWFkIGluIHRoZQorICogY29uc3RydWN0b3Igb2YgdGhpcyBjbGFzcy4gIFRoZSBhcGlzIG1heSBiZSBjYWxsZWQgZnJvbSBvdGhlciB0aHJlYWRzLCBpbmNsdWRpbmcgdGhlCisgKiB7QGxpbmsgY29tLmFuZHJvaWQuc2VydmVyLklucHV0TWFuYWdlcn0ncyBhbmQge0BsaW5rIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyfSdzLgorICogVGhlcmVmb3JlLCBtZXRob2RzIG9uIHRoaXMgY2xhc3MgYXJlIHN5bmNocm9uaXplZCwgYW5kIGFueSBhY3Rpb24gdGhhdCBpcyBwb2ludGVkCisgKiBkaXJlY3RseSB0byB0aGUga2V5Z3VhcmQgVUkgaXMgcG9zdGVkIHRvIGEge0BsaW5rIEhhbmRsZXJ9IHRvIGVuc3VyZSBpdCBpcyB0YWtlbiBvbiB0aGUgVUkKKyAqIHRocmVhZCBvZiB0aGUga2V5Z3VhcmQuCisgKi8KK3B1YmxpYyBjbGFzcyBLZXlndWFyZFZpZXdNZWRpYXRvciBpbXBsZW1lbnRzIEtleWd1YXJkVmlld0NhbGxiYWNrLAorICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IuU2ltU3RhdGVDYWxsYmFjayB7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgYm9vbGVhbiBERUJVRyA9IGZhbHNlICYmIENvbmZpZy5MT0dEOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJvb2xlYW4gREJHX1dBS0UgPSBERUJVRyB8fCB0cnVlOworCisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFRBRyA9ICJLZXlndWFyZFZpZXdNZWRpYXRvciI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVMQVlFRF9LRVlHVUFSRF9BQ1RJT04gPQorICAgICAgICAiY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3dNYW5hZ2VyLkRFTEFZRURfS0VZR1VBUkQiOworCisgICAgLy8gdXNlZCBmb3IgaGFuZGxlciBtZXNzYWdlcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUSU1FT1VUID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0hPVyA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhJREUgPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSRVNFVCA9IDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFZFUklGWV9VTkxPQ0sgPSA1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT1RJRllfU0NSRUVOX09GRiA9IDY7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5PVElGWV9TQ1JFRU5fT04gPSA3OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBXQUtFX1dIRU5fUkVBRFkgPSA4OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBLRVlHVUFSRF9ET05FID0gOTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgS0VZR1VBUkRfRE9ORV9EUkFXSU5HID0gMTA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEtFWUdVQVJEX0RPTkVfQVVUSEVOVElDQVRJTkcgPSAxMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VUX0hJRERFTiA9IDEyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBLRVlHVUFSRF9USU1FT1VUID0gMTM7CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGVmYXVsdCBhbW91bnQgb2YgdGltZSB3ZSBzdGF5IGF3YWtlICh1c2VkIGZvciBhbGwga2V5IGlucHV0KQorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEFXQUtFX0lOVEVSVkFMX0RFRkFVTFRfTVMgPSA1MDAwOworCisKKyAgICAvKioKKyAgICAgKiBUaGUgZGVmYXVsdCBhbW91bnQgb2YgdGltZSB3ZSBzdGF5IGF3YWtlICh1c2VkIGZvciBhbGwga2V5IGlucHV0KSB3aGVuCisgICAgICogdGhlIGtleWJvYXJkIGlzIG9wZW4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBBV0FLRV9JTlRFUlZBTF9ERUZBVUxUX0tFWUJPQVJEX09QRU5fTVMgPSAxMDAwMDsKKworICAgIC8qKgorICAgICAqIEhvdyBsb25nIHRvIHdhaXQgYWZ0ZXIgdGhlIHNjcmVlbiB0dXJucyBvZmYgZHVlIHRvIHRpbWVvdXQgYmVmb3JlCisgICAgICogdHVybmluZyBvbiB0aGUga2V5Z3VhcmQgKGkuZSwgdGhlIHVzZXIgaGFzIHRoaXMgbXVjaCB0aW1lIHRvIHR1cm4KKyAgICAgKiB0aGUgc2NyZWVuIGJhY2sgb24gd2l0aG91dCBoYXZpbmcgdG8gZmFjZSB0aGUga2V5Z3VhcmQpLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBLRVlHVUFSRF9ERUxBWV9NUyA9IDUwMDA7CisKKyAgICAvKioKKyAgICAgKiBIb3cgbG9uZyB3ZSdsbCB3YWl0IGZvciB0aGUge0BsaW5rIEtleWd1YXJkVmlld0NhbGxiYWNrI2tleWd1YXJkRG9uZURyYXdpbmcoKX0KKyAgICAgKiBjYWxsYmFjayBiZWZvcmUgdW5ibG9ja2luZyBhIGNhbGwgdG8ge0BsaW5rICNzZXRLZXlndWFyZEVuYWJsZWQoYm9vbGVhbil9CisgICAgICogdGhhdCBpcyByZWVuYWJsaW5nIHRoZSBrZXlndWFyZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgS0VZR1VBUkRfRE9ORV9EUkFXSU5HX1RJTUVPVVRfTVMgPSAyMDAwOworCisgICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgQWxhcm1NYW5hZ2VyIG1BbGFybU1hbmFnZXI7CisgICAgcHJpdmF0ZSBTdGF0dXNCYXJNYW5hZ2VyIG1TdGF0dXNCYXJNYW5hZ2VyOworICAgIHByaXZhdGUgYm9vbGVhbiBtU2hvd0xvY2tJY29uOworICAgIHByaXZhdGUgYm9vbGVhbiBtU2hvd2luZ0xvY2tJY29uOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1TeXN0ZW1SZWFkeTsKKworICAgIC8vIFdoZXRoZXIgdGhlIG5leHQgY2FsbCB0byBwbGF5U291bmRzKCkgc2hvdWxkIGJlIHNraXBwZWQuICBEZWZhdWx0cyB0bworICAgIC8vIHRydWUgYmVjYXVzZSB0aGUgZmlyc3QgbG9jayAob24gYm9vdCkgc2hvdWxkIGJlIHNpbGVudC4KKyAgICBwcml2YXRlIGJvb2xlYW4gbVN1cHByZXNzTmV4dExvY2tTb3VuZCA9IHRydWU7CisKKworICAgIC8qKiBMb3cgbGV2ZWwgYWNjZXNzIHRvIHRoZSBwb3dlciBtYW5hZ2VyIGZvciBlbmFibGVVc2VyQWN0aXZpdHkuICBIYXZpbmcgdGhpcworICAgICAqIHJlcXVpcmVzIHRoYXQgd2UgcnVuIGluIHRoZSBzeXN0ZW0gcHJvY2Vzcy4gICovCisgICAgTG9jYWxQb3dlck1hbmFnZXIgbVJlYWxQb3dlck1hbmFnZXI7CisKKyAgICAvKiogSGlnaCBsZXZlbCBhY2Nlc3MgdG8gdGhlIHBvd2VyIG1hbmFnZXIgZm9yIFdha2VMb2NrcyAqLworICAgIHByaXZhdGUgUG93ZXJNYW5hZ2VyIG1QTTsKKworICAgIC8qKgorICAgICAqIFVzZWQgdG8ga2VlcCB0aGUgZGV2aWNlIGF3YWtlIHdoaWxlIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLCBpLmUgZm9yCisgICAgICogY2FsbHMgdG8ge0BsaW5rICNwb2tlV2FrZWxvY2soKX0KKyAgICAgKi8KKyAgICBwcml2YXRlIFBvd2VyTWFuYWdlci5XYWtlTG9jayBtV2FrZUxvY2s7CisKKyAgICAvKioKKyAgICAgKiBVc2VkIHRvIGtlZXAgdGhlIGRldmljZSBhd2FrZSB3aGlsZSB0byBlbnN1cmUgdGhlIGtleWd1YXJkIGZpbmlzaGVzIG9wZW5pbmcgYmVmb3JlCisgICAgICogd2Ugc2xlZXAuCisgICAgICovCisgICAgcHJpdmF0ZSBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbVNob3dLZXlndWFyZFdha2VMb2NrOworCisgICAgLyoqCisgICAgICogRG9lcyBub3QgdHVybiBvbiBzY3JlZW4sIGhlbGQgd2hpbGUgYSBjYWxsIHRvIHtAbGluayBLZXlndWFyZFZpZXdNYW5hZ2VyI3dha2VXaGVuUmVhZHlUcShpbnQpfQorICAgICAqIGlzIGNhbGxlZCB0byBtYWtlIHN1cmUgdGhlIGRldmljZSBkb2Vzbid0IHNsZWVwIGJlZm9yZSBpdCBoYXMgYSBjaGFuY2UgdG8gcG9rZQorICAgICAqIHRoZSB3YWtlIGxvY2suCisgICAgICogQHNlZSAjd2FrZVdoZW5SZWFkeUxvY2tlZChpbnQpCisgICAgICovCisgICAgcHJpdmF0ZSBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbVdha2VBbmRIYW5kT2ZmOworCisgICAgcHJpdmF0ZSBLZXlndWFyZFZpZXdNYW5hZ2VyIG1LZXlndWFyZFZpZXdNYW5hZ2VyOworCisgICAgLy8gdGhlc2UgYXJlIHByb3RlY3RlZCBieSBzeW5jaHJvbml6ZWQgKHRoaXMpCisKKyAgICAvKioKKyAgICAgKiBFeHRlcm5hbCBhcHBzIChsaWtlIHRoZSBwaG9uZSBhcHApIGNhbiB0ZWxsIHVzIHRvIGRpc2FibGUgdGhlIGtleWdhdXJkLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBtRXh0ZXJuYWxseUVuYWJsZWQgPSB0cnVlOworCisgICAgLyoqCisgICAgICogUmVtZW1iZXIgaWYgYW4gZXh0ZXJuYWwgY2FsbCB0byB7QGxpbmsgI3NldEtleWd1YXJkRW5hYmxlZH0gd2l0aCB2YWx1ZQorICAgICAqIGZhbHNlIGNhdXNlZCB1cyB0byBoaWRlIHRoZSBrZXlndWFyZCwgc28gdGhhdCB3ZSBuZWVkIHRvIHJlc2hvdyBpdCBvbmNlCisgICAgICogdGhlIGtleWdhdXJkIGlzIHJlZW5hYmxlZCB3aXRoIGFub3RoZXIgY2FsbCB3aXRoIHZhbHVlIHRydWUuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIG1OZWVkVG9SZXNob3dXaGVuUmVlbmFibGVkID0gZmFsc2U7CisKKyAgICAvLyBjYWNoZWQgdmFsdWUgb2Ygd2hldGhlciB3ZSBhcmUgc2hvd2luZyAobmVlZCB0byBrbm93IHRoaXMgdG8gcXVpY2tseQorICAgIC8vIGFuc3dlciB3aGV0aGVyIHRoZSBpbnB1dCBzaG91bGQgYmUgcmVzdHJpY3RlZCkKKyAgICBwcml2YXRlIGJvb2xlYW4gbVNob3dpbmcgPSBmYWxzZTsKKworICAgIC8vIHRydWUgaWYgdGhlIGtleWd1YXJkIGlzIGhpZGRlbiBieSBhbm90aGVyIHdpbmRvdworICAgIHByaXZhdGUgYm9vbGVhbiBtSGlkZGVuID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBIZWxwcyByZW1lbWJlciB3aGV0aGVyIHRoZSBzY3JlZW4gaGFzIHR1cm5lZCBvbiBzaW5jZSB0aGUgbGFzdCB0aW1lCisgICAgICogaXQgdHVybmVkIG9mZiBkdWUgdG8gdGltZW91dC4gc2VlIHtAbGluayAjb25TY3JlZW5UdXJuZWRPZmYoaW50KX0KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtRGVsYXllZFNob3dpbmdTZXF1ZW5jZTsKKworICAgIHByaXZhdGUgaW50IG1XYWtlbG9ja1NlcXVlbmNlOworCisgICAgcHJpdmF0ZSBQaG9uZVdpbmRvd01hbmFnZXIgbUNhbGxiYWNrOworCisgICAgLyoqCisgICAgICogSWYgdGhlIHVzZXIgaGFzIGRpc2FibGVkIHRoZSBrZXlndWFyZCwgdGhlbiByZXF1ZXN0cyB0byBleGl0LCB0aGlzIGlzCisgICAgICogaG93IHdlJ2xsIHVsdGltYXRlbHkgbGV0IHRoZW0ga25vdyB3aGV0aGVyIGl0IHdhcyBzdWNjZXNzZnVsLiAgV2UgdXNlIHRoaXMKKyAgICAgKiB2YXIgYmVpbmcgbm9uLW51bGwgYXMgYW4gaW5kaWNhdG9yIHRoYXQgdGhlcmUgaXMgYW4gaW4gcHJvZ3Jlc3MgcmVxdWVzdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFdpbmRvd01hbmFnZXJQb2xpY3kuT25LZXlndWFyZEV4aXRSZXN1bHQgbUV4aXRTZWN1cmVDYWxsYmFjazsKKworICAgIC8vIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBrZXlndWFyZAorICAgIHByaXZhdGUgS2V5Z3VhcmRWaWV3UHJvcGVydGllcyBtS2V5Z3VhcmRWaWV3UHJvcGVydGllczsKKworICAgIHByaXZhdGUgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1LZXlib2FyZE9wZW4gPSBmYWxzZTsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtU2NyZWVuT24gPSBmYWxzZTsKKworICAgIC8vIGxhc3Qga25vd24gc3RhdGUgb2YgdGhlIGNlbGx1bGFyIGNvbm5lY3Rpb24KKyAgICBwcml2YXRlIFN0cmluZyBtUGhvbmVTdGF0ZSA9IFRlbGVwaG9ueU1hbmFnZXIuRVhUUkFfU1RBVEVfSURMRTsKKworICAgIC8qKgorICAgICAqIHdlIHNlbmQgdGhpcyBpbnRlbnQgd2hlbiB0aGUga2V5Z3VhcmQgaXMgZGlzbWlzc2VkLgorICAgICAqLworICAgIHByaXZhdGUgSW50ZW50IG1Vc2VyUHJlc2VudEludGVudDsKKworICAgIC8qKgorICAgICAqIHtAbGluayAjc2V0S2V5Z3VhcmRFbmFibGVkfSB3YWl0cyBvbiB0aGlzIGNvbmRpdGlvbiB3aGVuIGl0IHJlZW5hYmxlcworICAgICAqIHRoZSBrZXlndWFyZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbVdhaXRpbmdVbnRpbEtleWd1YXJkVmlzaWJsZSA9IGZhbHNlOworCisgICAgcHVibGljIEtleWd1YXJkVmlld01lZGlhdG9yKENvbnRleHQgY29udGV4dCwgUGhvbmVXaW5kb3dNYW5hZ2VyIGNhbGxiYWNrLAorICAgICAgICAgICAgTG9jYWxQb3dlck1hbmFnZXIgcG93ZXJNYW5hZ2VyKSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKworICAgICAgICBtUmVhbFBvd2VyTWFuYWdlciA9IHBvd2VyTWFuYWdlcjsKKyAgICAgICAgbVBNID0gKFBvd2VyTWFuYWdlcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuUE9XRVJfU0VSVklDRSk7CisgICAgICAgIG1XYWtlTG9jayA9IG1QTS5uZXdXYWtlTG9jaygKKyAgICAgICAgICAgICAgICBQb3dlck1hbmFnZXIuRlVMTF9XQUtFX0xPQ0sgfCBQb3dlck1hbmFnZXIuQUNRVUlSRV9DQVVTRVNfV0FLRVVQLAorICAgICAgICAgICAgICAgICJrZXlndWFyZCIpOworICAgICAgICBtV2FrZUxvY2suc2V0UmVmZXJlbmNlQ291bnRlZChmYWxzZSk7CisgICAgICAgIG1TaG93S2V5Z3VhcmRXYWtlTG9jayA9IG1QTS5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssICJzaG93IGtleWd1YXJkIik7CisgICAgICAgIG1TaG93S2V5Z3VhcmRXYWtlTG9jay5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKKworICAgICAgICBtV2FrZUFuZEhhbmRPZmYgPSBtUE0ubmV3V2FrZUxvY2soCisgICAgICAgICAgICAgICAgUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLAorICAgICAgICAgICAgICAgICJrZXlndWFyZFdha2VBbmRIYW5kT2ZmIik7CisgICAgICAgIG1XYWtlQW5kSGFuZE9mZi5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKKworICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKERFTEFZRURfS0VZR1VBUkRfQUNUSU9OKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnlNYW5hZ2VyLkFDVElPTl9QSE9ORV9TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgY29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZENhc3RSZWNlaXZlciwgZmlsdGVyKTsKKyAgICAgICAgbUFsYXJtTWFuYWdlciA9IChBbGFybU1hbmFnZXIpIGNvbnRleHQKKyAgICAgICAgICAgICAgICAuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgICAgICBtVXBkYXRlTW9uaXRvciA9IG5ldyBLZXlndWFyZFVwZGF0ZU1vbml0b3IoY29udGV4dCk7CisKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IucmVnaXN0ZXJTaW1TdGF0ZUNhbGxiYWNrKHRoaXMpOworCisgICAgICAgIG1LZXlndWFyZFZpZXdQcm9wZXJ0aWVzID0gbmV3IExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3UHJvcGVydGllcygKKyAgICAgICAgICAgICAgICBuZXcgTG9ja1BhdHRlcm5VdGlscyhtQ29udGV4dCksIG1VcGRhdGVNb25pdG9yKTsKKworICAgICAgICBtS2V5Z3VhcmRWaWV3TWFuYWdlciA9IG5ldyBLZXlndWFyZFZpZXdNYW5hZ2VyKAorICAgICAgICAgICAgICAgIGNvbnRleHQsIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKSwgdGhpcywKKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3UHJvcGVydGllcywgbVVwZGF0ZU1vbml0b3IpOworCisgICAgICAgIG1Vc2VyUHJlc2VudEludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9VU0VSX1BSRVNFTlQpOworICAgICAgICBtVXNlclByZXNlbnRJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfUkVDRUlWRVJfUkVQTEFDRV9QRU5ESU5HKTsKKworICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgY3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgbVNob3dMb2NrSWNvbiA9IChTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KGNyLCAic2hvd19zdGF0dXNfYmFyX2xvY2siLCAwKSA9PSAxKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMZXQgdXMga25vdyB0aGF0IHRoZSBzeXN0ZW0gaXMgcmVhZHkgYWZ0ZXIgc3RhcnR1cC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBvblN5c3RlbVJlYWR5KCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAib25TeXN0ZW1SZWFkeSIpOworICAgICAgICAgICAgbVN5c3RlbVJlYWR5ID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvS2V5Z3VhcmQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGxlZCB0byBsZXQgdXMga25vdyB0aGUgc2NyZWVuIHdhcyB0dXJuZWQgb2ZmLgorICAgICAqIEBwYXJhbSB3aHkgZWl0aGVyIHtAbGluayBXaW5kb3dNYW5hZ2VyUG9saWN5I09GRl9CRUNBVVNFX09GX1VTRVJ9LAorICAgICAqICAge0BsaW5rIFdpbmRvd01hbmFnZXJQb2xpY3kjT0ZGX0JFQ0FVU0VfT0ZfVElNRU9VVH0gb3IKKyAgICAgKiAgIHtAbGluayBXaW5kb3dNYW5hZ2VyUG9saWN5I09GRl9CRUNBVVNFX09GX1BST1hfU0VOU09SfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBvblNjcmVlblR1cm5lZE9mZihpbnQgd2h5KSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgbVNjcmVlbk9uID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uU2NyZWVuVHVybmVkT2ZmKCIgKyB3aHkgKyAiKSIpOworCisgICAgICAgICAgICBpZiAobUV4aXRTZWN1cmVDYWxsYmFjayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJwZW5kaW5nIGV4aXQgc2VjdXJlIGNhbGxiYWNrIGNhbmNlbGxlZCIpOworICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sub25LZXlndWFyZEV4aXRSZXN1bHQoZmFsc2UpOworICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sgPSBudWxsOworICAgICAgICAgICAgICAgIGlmICghbUV4dGVybmFsbHlFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGhpZGVMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1TaG93aW5nKSB7CisgICAgICAgICAgICAgICAgbm90aWZ5U2NyZWVuT2ZmTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgcmVzZXRTdGF0ZUxvY2tlZCgpOworICAgICAgICAgICAgfSBlbHNlIGlmICh3aHkgPT0gV2luZG93TWFuYWdlclBvbGljeS5PRkZfQkVDQVVTRV9PRl9USU1FT1VUKSB7CisgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHNjcmVlbiB0dXJuZWQgb2ZmIGJlY2F1c2Ugb2YgdGltZW91dCwgc2V0IGFuIGFsYXJtCisgICAgICAgICAgICAgICAgLy8gdG8gZW5hYmxlIGl0IGEgbGl0dGxlIGJpdCBsYXRlciAoaS5lLCBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlCisgICAgICAgICAgICAgICAgLy8gdG8gdHVybiB0aGUgc2NyZWVuIGJhY2sgb24gd2l0aGluIGEgY2VydGFpbiB3aW5kb3cgd2l0aG91dAorICAgICAgICAgICAgICAgIC8vIGhhdmluZyB0byB1bmxvY2sgdGhlIHNjcmVlbikKKyAgICAgICAgICAgICAgICBsb25nIHdoZW4gPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSArIEtFWUdVQVJEX0RFTEFZX01TOworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KERFTEFZRURfS0VZR1VBUkRfQUNUSU9OKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoInNlcSIsIG1EZWxheWVkU2hvd2luZ1NlcXVlbmNlKTsKKyAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50IHNlbmRlciA9IFBlbmRpbmdJbnRlbnQuZ2V0QnJvYWRjYXN0KG1Db250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgaW50ZW50LCBQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQpOworICAgICAgICAgICAgICAgIG1BbGFybU1hbmFnZXIuc2V0KEFsYXJtTWFuYWdlci5FTEFQU0VEX1JFQUxUSU1FX1dBS0VVUCwgd2hlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRlcik7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzZXR0aW5nIGFsYXJtIHRvIHR1cm4gb2ZmIGtleWd1YXJkLCBzZXEgPSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG1EZWxheWVkU2hvd2luZ1NlcXVlbmNlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2h5ID09IFdpbmRvd01hbmFnZXJQb2xpY3kuT0ZGX0JFQ0FVU0VfT0ZfUFJPWF9TRU5TT1IpIHsKKyAgICAgICAgICAgICAgICAvLyBEbyBub3QgZW5hYmxlIHRoZSBrZXlndWFyZCBpZiB0aGUgcHJveCBzZW5zb3IgZm9yY2VkIHRoZSBzY3JlZW4gb2ZmLgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkb0tleWd1YXJkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMZXQncyB1cyBrbm93IHRoZSBzY3JlZW4gd2FzIHR1cm5lZCBvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBvblNjcmVlblR1cm5lZE9uKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIG1TY3JlZW5PbiA9IHRydWU7CisgICAgICAgICAgICBtRGVsYXllZFNob3dpbmdTZXF1ZW5jZSsrOworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJvblNjcmVlblR1cm5lZE9uLCBzZXEgPSAiICsgbURlbGF5ZWRTaG93aW5nU2VxdWVuY2UpOworICAgICAgICAgICAgbm90aWZ5U2NyZWVuT25Mb2NrZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNhbWUgc2VtYW50aWNzIGFzIHtAbGluayBXaW5kb3dNYW5hZ2VyUG9saWN5I2VuYWJsZUtleWd1YXJkfTsgcHJvdmlkZQorICAgICAqIGEgd2F5IGZvciBleHRlcm5hbCBzdHVmZiB0byBvdmVycmlkZSBub3JtYWwga2V5Z3VhcmQgYmVoYXZpb3IuICBGb3IgaW5zdGFuY2UKKyAgICAgKiB0aGUgcGhvbmUgYXBwIGRpc2FibGVzIHRoZSBrZXlndWFyZCB3aGVuIGl0IHJlY2VpdmVzIGluY29taW5nIGNhbGxzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEtleWd1YXJkRW5hYmxlZChib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldEtleWd1YXJkRW5hYmxlZCgiICsgZW5hYmxlZCArICIpIik7CisKKworICAgICAgICAgICAgbUV4dGVybmFsbHlFbmFibGVkID0gZW5hYmxlZDsKKworICAgICAgICAgICAgaWYgKCFlbmFibGVkICYmIG1TaG93aW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKG1FeGl0U2VjdXJlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImluIHByb2Nlc3Mgb2YgdmVyaWZ5VW5sb2NrIHJlcXVlc3QsIGlnbm9yaW5nIik7CisgICAgICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgcmVxdWVzdCB0byB2ZXJpZnkgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gY2FuIGdldCBwYXN0IHRoZSBrZXlndWFyZC4gaWdub3JlIGV4dHJhbmVvdXMgcmVxdWVzdHMgdG8gZGlzYWJsZSAvIHJlZW5hYmxlCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBoaWRpbmcga2V5Z3VhcmQgdGhhdCBpcyBzaG93aW5nLCByZW1lbWJlciB0byByZXNob3cgbGF0ZXIKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInJlbWVtYmVyaW5nIHRvIHJlc2hvdywgaGlkaW5nIGtleWd1YXJkLCAiCisgICAgICAgICAgICAgICAgICAgICAgICArICJkaXNhYmxpbmcgc3RhdHVzIGJhciBleHBhbnNpb24iKTsKKyAgICAgICAgICAgICAgICBtTmVlZFRvUmVzaG93V2hlblJlZW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgaGlkZUxvY2tlZCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChlbmFibGVkICYmIG1OZWVkVG9SZXNob3dXaGVuUmVlbmFibGVkKSB7CisgICAgICAgICAgICAgICAgLy8gcmVlbmFibGVkIGFmdGVyIHByZXZpb3VzbHkgaGlkZGVuLCByZXNob3cKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInByZXZpb3VzbHkgaGlkZGVuLCByZXNob3dpbmcsIHJlZW5hYmxpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAic3RhdHVzIGJhciBleHBhbnNpb24iKTsKKyAgICAgICAgICAgICAgICBtTmVlZFRvUmVzaG93V2hlblJlZW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgaWYgKG1FeGl0U2VjdXJlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uS2V5Z3VhcmRFeGl0UmVzdWx0KGZhbHNlKSwgcmVzZXR0aW5nIik7CisgICAgICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sub25LZXlndWFyZEV4aXRSZXN1bHQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBtRXhpdFNlY3VyZUNhbGxiYWNrID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgcmVzZXRTdGF0ZUxvY2tlZCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNob3dMb2NrZWQoKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBibG9jayB1bnRpbCB3ZSBrbm93IHRoZSBrZXlnYXVyZCBpcyBkb25lIGRyYXdpbmcgKGFuZCBwb3N0IGEgbWVzc2FnZQorICAgICAgICAgICAgICAgICAgICAvLyB0byB1bmJsb2NrIHVzIGFmdGVyIGEgdGltZW91dCBzbyB3ZSBkb24ndCByaXNrIGJsb2NraW5nIHRvbyBsb25nCisgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBjYXVzaW5nIGFuIEFOUikuCisgICAgICAgICAgICAgICAgICAgIG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlRGVsYXllZChLRVlHVUFSRF9ET05FX0RSQVdJTkcsIEtFWUdVQVJEX0RPTkVfRFJBV0lOR19USU1FT1VUX01TKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ3YWl0aW5nIHVudGlsIG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUgaXMgZmFsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuaW50ZXJydXB0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJkb25lIHdhaXRpbmcgZm9yIG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlIGFuZHJvaWQuYXBwLktleWd1YXJkTWFuYWdlciNleGl0S2V5Z3VhcmRTZWN1cmVseQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHZlcmlmeVVubG9jayhXaW5kb3dNYW5hZ2VyUG9saWN5Lk9uS2V5Z3VhcmRFeGl0UmVzdWx0IGNhbGxiYWNrKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ2ZXJpZnlVbmxvY2siKTsKKyAgICAgICAgICAgIGlmICghbVVwZGF0ZU1vbml0b3IuaXNEZXZpY2VQcm92aXNpb25lZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgdGhpcyBhcGkgd2hlbiB0aGUgZGV2aWNlIGlzbid0IHByb3Zpc2lvbmVkCisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJpZ25vcmluZyBiZWNhdXNlIGRldmljZSBpc24ndCBwcm92aXNpb25lZCIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrLm9uS2V5Z3VhcmRFeGl0UmVzdWx0KGZhbHNlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobUV4dGVybmFsbHlFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgLy8gdGhpcyBvbmx5IGFwcGxpZXMgd2hlbiB0aGUgdXNlciBoYXMgZXh0ZXJuYWxseSBkaXNhYmxlZCB0aGUKKyAgICAgICAgICAgICAgICAvLyBrZXlndWFyZC4gIHRoaXMgaXMgdW5leHBlY3RlZCBhbmQgbWVhbnMgdGhlIHVzZXIgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gdXNpbmcgdGhlIGFwaSBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJ2ZXJpZnlVbmxvY2sgY2FsbGVkIHdoZW4gbm90IGV4dGVybmFsbHkgZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5vbktleWd1YXJkRXhpdFJlc3VsdChmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1FeGl0U2VjdXJlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaW4gcHJvZ3Jlc3Mgd2l0aCBzb21lb25lIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5vbktleWd1YXJkRXhpdFJlc3VsdChmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgICAgICAgICB2ZXJpZnlVbmxvY2tMb2NrZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIElzIHRoZSBrZXlndWFyZCBjdXJyZW50bHkgc2hvd2luZz8KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc1Nob3dpbmcoKSB7CisgICAgICAgIHJldHVybiBtU2hvd2luZzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJcyB0aGUga2V5Z3VhcmQgY3VycmVudGx5IHNob3dpbmcgYW5kIG5vdCBiZWluZyBmb3JjZSBoaWRkZW4/CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNTaG93aW5nQW5kTm90SGlkZGVuKCkgeworICAgICAgICByZXR1cm4gbVNob3dpbmcgJiYgIW1IaWRkZW47CisgICAgfQorCisgICAgLyoqCisgICAgICogTm90aWZ5IHVzIHdoZW4gdGhlIGtleWd1YXJkIGlzIGhpZGRlbiBieSBhbm90aGVyIHdpbmRvdworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEhpZGRlbihib29sZWFuIGlzSGlkZGVuKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAic2V0SGlkZGVuICIgKyBpc0hpZGRlbik7CisgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFNFVF9ISURERU4pOworICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoU0VUX0hJRERFTiwgKGlzSGlkZGVuID8gMSA6IDApLCAwKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGVzIFNFVF9ISURERU4gbWVzc2FnZSBzZW50IGJ5IHNldEhpZGRlbigpCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNldEhpZGRlbihib29sZWFuIGlzSGlkZGVuKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAoS2V5Z3VhcmRWaWV3TWVkaWF0b3IudGhpcykgeworICAgICAgICAgICAgaWYgKG1IaWRkZW4gIT0gaXNIaWRkZW4pIHsKKyAgICAgICAgICAgICAgICBtSGlkZGVuID0gaXNIaWRkZW47CisgICAgICAgICAgICAgICAgYWRqdXN0VXNlckFjdGl2aXR5TG9ja2VkKCk7CisgICAgICAgICAgICAgICAgYWRqdXN0U3RhdHVzQmFyTG9ja2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVc2VkIGJ5IFBob25lV2luZG93TWFuYWdlciB0byBlbmFibGUgdGhlIGtleWd1YXJkIGR1ZSB0byBhIHVzZXIgYWN0aXZpdHkgdGltZW91dC4KKyAgICAgKiBUaGlzIG11c3QgYmUgc2FmZSB0byBjYWxsIGZyb20gYW55IHRocmVhZCBhbmQgd2l0aCBhbnkgd2luZG93IG1hbmFnZXIgbG9ja3MgaGVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb0tleWd1YXJkVGltZW91dCgpIHsKKyAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoS0VZR1VBUkRfVElNRU9VVCk7CisgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShLRVlHVUFSRF9USU1FT1VUKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiB0aGUgc3RhdGUgb2YgdGhlIGtleWd1YXJkLCBpcyB0aGUgaW5wdXQgcmVzdHJpY3RlZD8KKyAgICAgKiBJbnB1dCBpcyByZXN0cmljdGVkIHdoZW4gdGhlIGtleWd1YXJkIGlzIHNob3dpbmcsIG9yIHdoZW4gdGhlIGtleWd1YXJkCisgICAgICogd2FzIHN1cHByZXNzZWQgYnkgYW4gYXBwIHRoYXQgZGlzYWJsZWQgdGhlIGtleWd1YXJkIG9yIHdlIGhhdmVuJ3QgYmVlbiBwcm92aXNpb25lZCB5ZXQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNJbnB1dFJlc3RyaWN0ZWQoKSB7CisgICAgICAgIHJldHVybiBtU2hvd2luZyB8fCBtTmVlZFRvUmVzaG93V2hlblJlZW5hYmxlZCB8fCAhbVVwZGF0ZU1vbml0b3IuaXNEZXZpY2VQcm92aXNpb25lZCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhbmdlIGlzIHJlc3VsdGluZyBpbiB0aGUga2V5Z3VhcmQgYmVpZ24gZGlzbWlzc2VkLAorICAgICAqIG1lYW5pbmcgdGhlIHNjcmVlbiBjYW4gdHVybiBvbiBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGRvTGlkQ2hhbmdlVHEoYm9vbGVhbiBpc0xpZE9wZW4pIHsKKyAgICAgICAgbUtleWJvYXJkT3BlbiA9IGlzTGlkT3BlbjsKKworICAgICAgICBpZiAobVVwZGF0ZU1vbml0b3IuaXNLZXlndWFyZEJ5cGFzc0VuYWJsZWQoKSAmJiBtS2V5Ym9hcmRPcGVuCisgICAgICAgICAgICAgICAgJiYgIW1LZXlndWFyZFZpZXdQcm9wZXJ0aWVzLmlzU2VjdXJlKCkgJiYgbUtleWd1YXJkVmlld01hbmFnZXIuaXNTaG93aW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiYnlwYXNzaW5nIGtleWd1YXJkIG9uIHNsaWRpbmcgb3BlbiBvZiBrZXlib2FyZCB3aXRoIG5vbi1zZWN1cmUga2V5Z3VhcmQiKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoS0VZR1VBUkRfRE9ORV9BVVRIRU5USUNBVElORyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5hYmxlIHRoZSBrZXlndWFyZCBpZiB0aGUgc2V0dGluZ3MgYXJlIGFwcHJvcHJpYXRlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBkb0tleWd1YXJkKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIC8vIGlmIGFub3RoZXIgYXBwIGlzIGRpc2FibGluZyB1cywgZG9uJ3Qgc2hvdworICAgICAgICAgICAgaWYgKCFtRXh0ZXJuYWxseUVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImRvS2V5Z3VhcmQ6IG5vdCBzaG93aW5nIGJlY2F1c2UgZXh0ZXJuYWxseSBkaXNhYmxlZCIpOworCisgICAgICAgICAgICAgICAgLy8gbm90ZTogd2UgKnNob3VsZCogc2V0IG1OZWVkVG9SZXNob3dXaGVuUmVlbmFibGVkPXRydWUgaGVyZSwgYnV0IHRoYXQgbWFrZXMKKyAgICAgICAgICAgICAgICAvLyBmb3IgYW4gb2NjYXNpb25hbCB1Z2x5IGZsaWNrZXIgaW4gdGhpcyBzaXR1YXRpb246CisgICAgICAgICAgICAgICAgLy8gMSkgcmVjZWl2ZSBhIGNhbGwgd2l0aCB0aGUgc2NyZWVuIG9uIChubyBrZXlndWFyZCkgb3IgbWFrZSBhIGNhbGwKKyAgICAgICAgICAgICAgICAvLyAyKSBzY3JlZW4gdGltZXMgb3V0CisgICAgICAgICAgICAgICAgLy8gMykgdXNlciBoaXRzIGtleSB0byB0dXJuIHNjcmVlbiBiYWNrIG9uCisgICAgICAgICAgICAgICAgLy8gaW5zdGVhZCwgd2UgcmVlbmFibGUgdGhlIGtleWd1YXJkIHdoZW4gd2Uga25vdyB0aGUgc2NyZWVuIGlzIG9mZiBhbmQgdGhlIGNhbGwKKyAgICAgICAgICAgICAgICAvLyBlbmRzIChzZWUgdGhlIGJyb2FkY2FzdCByZWNlaXZlciBiZWxvdykKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBjbGVhbiB0aGlzIHVwIHdoZW4gd2UgaGF2ZSBiZXR0ZXIgc3VwcG9ydCBhdCB0aGUgd2luZG93IG1hbmFnZXIgbGV2ZWwKKyAgICAgICAgICAgICAgICAvLyBmb3IgYXBwcyB0aGF0IHdpc2ggdG8gYmUgb24gdG9wIG9mIHRoZSBrZXlndWFyZAorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhlIGtleWd1YXJkIGlzIGFscmVhZHkgc2hvd2luZywgZG9uJ3QgYm90aGVyCisgICAgICAgICAgICBpZiAobUtleWd1YXJkVmlld01hbmFnZXIuaXNTaG93aW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImRvS2V5Z3VhcmQ6IG5vdCBzaG93aW5nIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBzaG93aW5nIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUgc2V0dXAgd2l6YXJkIGhhc24ndCBydW4geWV0LCBkb24ndCBzaG93CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIHJlcXVpcmVTaW0gPSAhU3lzdGVtUHJvcGVydGllcy5nZXRCb29sZWFuKCJrZXlndWFyZC5ub19yZXF1aXJlX3NpbSIsCisgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gcHJvdmlzaW9uZWQgPSBtVXBkYXRlTW9uaXRvci5pc0RldmljZVByb3Zpc2lvbmVkKCk7CisgICAgICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHN0YXRlID0gbVVwZGF0ZU1vbml0b3IuZ2V0U2ltU3RhdGUoKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gbG9ja2VkT3JNaXNzaW5nID0gc3RhdGUuaXNQaW5Mb2NrZWQoKQorICAgICAgICAgICAgICAgICAgICB8fCAoKHN0YXRlID09IEljY0NhcmQuU3RhdGUuQUJTRU5UKSAmJiByZXF1aXJlU2ltKTsKKworICAgICAgICAgICAgaWYgKCFsb2NrZWRPck1pc3NpbmcgJiYgIXByb3Zpc2lvbmVkKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJkb0tleWd1YXJkOiBub3Qgc2hvd2luZyBiZWNhdXNlIGRldmljZSBpc24ndCBwcm92aXNpb25lZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhbmQgdGhlIHNpbSBpcyBub3QgbG9ja2VkIG9yIG1pc3NpbmciKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiZG9LZXlndWFyZDogc2hvd2luZyB0aGUgbG9jayBzY3JlZW4iKTsKKyAgICAgICAgICAgIHNob3dMb2NrZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbmQgbWVzc2FnZSB0byBrZXlndWFyZCB0ZWxsaW5nIGl0IHRvIHJlc2V0IGl0cyBzdGF0ZS4KKyAgICAgKiBAc2VlICNoYW5kbGVSZXNldCgpCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlc2V0U3RhdGVMb2NrZWQoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAicmVzZXRTdGF0ZUxvY2tlZCIpOworICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoUkVTRVQpOworICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbmQgbWVzc2FnZSB0byBrZXlndWFyZCB0ZWxsaW5nIGl0IHRvIHZlcmlmeSB1bmxvY2sKKyAgICAgKiBAc2VlICNoYW5kbGVWZXJpZnlVbmxvY2soKQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB2ZXJpZnlVbmxvY2tMb2NrZWQoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAidmVyaWZ5VW5sb2NrTG9ja2VkIik7CisgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoVkVSSUZZX1VOTE9DSyk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBTZW5kIGEgbWVzc2FnZSB0byBrZXlndWFyZCB0ZWxsaW5nIGl0IHRoZSBzY3JlZW4ganVzdCB0dXJuZWQgb24uCisgICAgICogQHNlZSAjb25TY3JlZW5UdXJuZWRPZmYoaW50KQorICAgICAqIEBzZWUgI2hhbmRsZU5vdGlmeVNjcmVlbk9mZgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBub3RpZnlTY3JlZW5PZmZMb2NrZWQoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAibm90aWZ5U2NyZWVuT2ZmTG9ja2VkIik7CisgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoTk9USUZZX1NDUkVFTl9PRkYpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbmQgYSBtZXNzYWdlIHRvIGtleWd1YXJkIHRlbGxpbmcgaXQgdGhlIHNjcmVlbiBqdXN0IHR1cm5lZCBvbi4KKyAgICAgKiBAc2VlICNvblNjcmVlblR1cm5lZE9uKCkKKyAgICAgKiBAc2VlICNoYW5kbGVOb3RpZnlTY3JlZW5PbgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBub3RpZnlTY3JlZW5PbkxvY2tlZCgpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJub3RpZnlTY3JlZW5PbkxvY2tlZCIpOworICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKE5PVElGWV9TQ1JFRU5fT04pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbmQgbWVzc2FnZSB0byBrZXlndWFyZCB0ZWxsaW5nIGl0IGFib3V0IGEgd2FrZSBrZXkgc28gaXQgY2FuIGFkanVzdAorICAgICAqIGl0cyBzdGF0ZSBhY2NvcmRpbmdseSBhbmQgdGhlbiBwb2tlIHRoZSB3YWtlIGxvY2sgd2hlbiBpdCBpcyByZWFkeS4KKyAgICAgKiBAcGFyYW0ga2V5Q29kZSBUaGUgd2FrZSBrZXkuCisgICAgICogQHNlZSAjaGFuZGxlV2FrZVdoZW5SZWFkeQorICAgICAqIEBzZWUgI29uV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmdUcShpbnQpCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHdha2VXaGVuUmVhZHlMb2NrZWQoaW50IGtleUNvZGUpIHsKKyAgICAgICAgaWYgKERCR19XQUtFKSBMb2cuZChUQUcsICJ3YWtlV2hlblJlYWR5TG9ja2VkKCIgKyBrZXlDb2RlICsgIikiKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogYWNxdWlyZSB0aGUgaGFuZG9mZiBsb2NrIHRoYXQgd2lsbCBrZWVwIHRoZSBjcHUgcnVubmluZy4gIHRoaXMgd2lsbAorICAgICAgICAgKiBiZSByZWxlYXNlZCBvbmNlIHRoZSBrZXlndWFyZCBoYXMgc2V0IGl0c2VsZiB1cCBhbmQgcG9rZWQgdGhlIG90aGVyIHdha2Vsb2NrCisgICAgICAgICAqIGluIHtAbGluayAjaGFuZGxlV2FrZVdoZW5SZWFkeShpbnQpfQorICAgICAgICAgKi8KKyAgICAgICAgbVdha2VBbmRIYW5kT2ZmLmFjcXVpcmUoKTsKKworICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoV0FLRV9XSEVOX1JFQURZLCBrZXlDb2RlLCAwKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZW5kIG1lc3NhZ2UgdG8ga2V5Z3VhcmQgdGVsbGluZyBpdCB0byBzaG93IGl0c2VsZgorICAgICAqIEBzZWUgI2hhbmRsZVNob3coKQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzaG93TG9ja2VkKCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNob3dMb2NrZWQiKTsKKyAgICAgICAgLy8gZW5zdXJlIHdlIHN0YXkgYXdha2UgdW50aWwgd2UgYXJlIGZpbmlzaGVkIGRpc3BsYXlpbmcgdGhlIGtleWd1YXJkCisgICAgICAgIG1TaG93S2V5Z3VhcmRXYWtlTG9jay5hY3F1aXJlKCk7CisgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShTSE9XKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZW5kIG1lc3NhZ2UgdG8ga2V5Z3VhcmQgdGVsbGluZyBpdCB0byBoaWRlIGl0c2VsZgorICAgICAqIEBzZWUgI2hhbmRsZUhpZGUoKQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoaWRlTG9ja2VkKCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhpZGVMb2NrZWQiKTsKKyAgICAgICAgTWVzc2FnZSBtc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKEhJREUpOworICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25TaW1TdGF0ZUNoYW5nZWQoSWNjQ2FyZC5TdGF0ZSBzaW1TdGF0ZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uU2ltU3RhdGVDaGFuZ2VkOiAiICsgc2ltU3RhdGUpOworCisgICAgICAgIHN3aXRjaCAoc2ltU3RhdGUpIHsKKyAgICAgICAgICAgIGNhc2UgQUJTRU5UOgorICAgICAgICAgICAgICAgIC8vIG9ubHkgZm9yY2UgbG9jayBzY3JlZW4gaW4gY2FzZSBvZiBtaXNzaW5nIHNpbSBpZiB1c2VyIGhhc24ndAorICAgICAgICAgICAgICAgIC8vIGdvbmUgdGhyb3VnaCBzZXR1cCB3aXphcmQKKyAgICAgICAgICAgICAgICBpZiAoIW1VcGRhdGVNb25pdG9yLmlzRGV2aWNlUHJvdmlzaW9uZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzU2hvd2luZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIklOVEVOVF9WQUxVRV9JQ0NfQUJTRU5UIGFuZCBrZXlnYXVyZCBpc24ndCBzaG93aW5nLCB3ZSBuZWVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidG8gc2hvdyB0aGUga2V5Z3VhcmQgc2luY2UgdGhlIGRldmljZSBpc24ndCBwcm92aXNpb25lZCB5ZXQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBkb0tleWd1YXJkKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXNldFN0YXRlTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBJTl9SRVFVSVJFRDoKKyAgICAgICAgICAgIGNhc2UgUFVLX1JFUVVJUkVEOgorICAgICAgICAgICAgICAgIGlmICghaXNTaG93aW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJJTlRFTlRfVkFMVUVfSUNDX0xPQ0tFRCBhbmQga2V5Z2F1cmQgaXNuJ3Qgc2hvd2luZywgd2UgbmVlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidG8gc2hvdyB0aGUga2V5Z3VhcmQgc28gdGhlIHVzZXIgY2FuIGVudGVyIHRoZWlyIHNpbSBwaW4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9LZXlndWFyZCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc2V0U3RhdGVMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUkVBRFk6CisgICAgICAgICAgICAgICAgaWYgKGlzU2hvd2luZygpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc2V0U3RhdGVMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1NlY3VyZSgpIHsKKyAgICAgICAgcmV0dXJuIG1LZXlndWFyZFZpZXdQcm9wZXJ0aWVzLmlzU2VjdXJlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRDYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoREVMQVlFRF9LRVlHVUFSRF9BQ1RJT04pKSB7CisKKyAgICAgICAgICAgICAgICBpbnQgc2VxdWVuY2UgPSBpbnRlbnQuZ2V0SW50RXh0cmEoInNlcSIsIDApOworCisgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSBMb2cuZChUQUcsICJyZWNlaXZlZCBERUxBWUVEX0tFWUdVQVJEX0FDVElPTiB3aXRoIHNlcSA9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgc2VxdWVuY2UgKyAiLCBtRGVsYXllZFNob3dpbmdTZXF1ZW5jZSA9ICIgKyBtRGVsYXllZFNob3dpbmdTZXF1ZW5jZSk7CisKKyAgICAgICAgICAgICAgICBpZiAobURlbGF5ZWRTaG93aW5nU2VxdWVuY2UgPT0gc2VxdWVuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcGxheSBsb2Nrc2NyZWVuIFNGWCBpZiB0aGUgc2NyZWVuIHdlbnQgb2ZmIGR1ZSB0bworICAgICAgICAgICAgICAgICAgICAvLyB0aW1lb3V0LgorICAgICAgICAgICAgICAgICAgICBtU3VwcHJlc3NOZXh0TG9ja1NvdW5kID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICBkb0tleWd1YXJkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChUZWxlcGhvbnlNYW5hZ2VyLkFDVElPTl9QSE9ORV9TVEFURV9DSEFOR0VELmVxdWFscyhhY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgbVBob25lU3RhdGUgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoVGVsZXBob255TWFuYWdlci5FWFRSQV9TVEFURSk7CisKKyAgICAgICAgICAgICAgICBpZiAoVGVsZXBob255TWFuYWdlci5FWFRSQV9TVEFURV9JRExFLmVxdWFscyhtUGhvbmVTdGF0ZSkgIC8vIGNhbGwgZW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbVNjcmVlbk9uICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NyZWVuIG9mZgorICAgICAgICAgICAgICAgICAgICAgICAgJiYgbUV4dGVybmFsbHlFbmFibGVkKSB7ICAgICAgICAgICAgICAgIC8vIG5vdCBkaXNhYmxlZCBieSBhbnkgYXBwCisKKyAgICAgICAgICAgICAgICAgICAgLy8gbm90ZTogdGhpcyBpcyBhIHdheSB0byBncmFjZWZ1bGx5IHJlZW5hYmxlIHRoZSBrZXlndWFyZCB3aGVuIHRoZSBjYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGVuZHMgYW5kIHRoZSBzY3JlZW4gaXMgb2ZmIHdpdGhvdXQgYWx3YXlzIHJlZW5hYmxpbmcgdGhlIGtleWd1YXJkCisgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggdGltZSB0aGUgc2NyZWVuIHR1cm5zIG9mZiB3aGlsZSBpbiBjYWxsIChhbmQgaGF2aW5nIGFuIG9jY2FzaW9uYWwgdWdseQorICAgICAgICAgICAgICAgICAgICAvLyBmbGlja2VyIHdoaWxlIHR1cm5pbmcgYmFjayBvbiB0aGUgc2NyZWVuIGFuZCBkaXNhYmxpbmcgdGhlIGtleWd1YXJkIGFnYWluKS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzY3JlZW4gaXMgb2ZmIGFuZCBjYWxsIGVuZGVkLCBsZXQncyBtYWtlIHN1cmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJrZXlndWFyZCBpcyBzaG93aW5nIik7CisgICAgICAgICAgICAgICAgICAgIGRvS2V5Z3VhcmQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisKKyAgICAvKioKKyAgICAgKiBXaGVuIGEga2V5IGlzIHJlY2VpdmVkIHdoZW4gdGhlIHNjcmVlbiBpcyBvZmYgYW5kIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLAorICAgICAqIHdlIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gYWN0dWFsbHkgdHVybiBvbiB0aGUgc2NyZWVuLCBhbmQgaWYgc28sIHRlbGwKKyAgICAgKiB0aGUga2V5Z3VhcmQgdG8gcHJlcGFyZSBpdHNlbGYgYW5kIHBva2UgdGhlIHdha2UgbG9jayB3aGVuIGl0IGlzIHJlYWR5LgorICAgICAqCisgICAgICogVGhlICdUcScgc3VmZml4IGlzIHBlciB0aGUgZG9jdW1lbnRhdGlvbiBpbiB7QGxpbmsgV2luZG93TWFuYWdlclBvbGljeX0uCisgICAgICogQmUgc3VyZSBub3QgdG8gdGFrZSBhbnkgYWN0aW9uIHRoYXQgdGFrZXMgYSBsb25nIHRpbWU7IGFueSBzaWduaWZpY2FudAorICAgICAqIGFjdGlvbiBzaG91bGQgYmUgcG9zdGVkIHRvIGEgaGFuZGxlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXlDb2RlIFRoZSBrZXljb2RlIG9mIHRoZSBrZXkgdGhhdCB3b2tlIHRoZSBkZXZpY2UKKyAgICAgKiBAcmV0dXJuIFdoZXRoZXIgd2UgcG9rZWQgdGhlIHdha2UgbG9jayAoYW5kIHR1cm5lZCB0aGUgc2NyZWVuIG9uKQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIG9uV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmdUcShpbnQga2V5Q29kZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmcoIiArIGtleUNvZGUgKyAiKSIpOworCisgICAgICAgIGlmIChpc1dha2VLZXlXaGVuS2V5Z3VhcmRTaG93aW5nKGtleUNvZGUpKSB7CisgICAgICAgICAgICAvLyBnaXZlIHRoZSBrZXlndWFyZCB2aWV3IG1hbmFnZXIgYSBjaGFuY2UgdG8gYWRqdXN0IHRoZSBzdGF0ZSBvZiB0aGUKKyAgICAgICAgICAgIC8vIGtleWd1YXJkIGJhc2VkIG9uIHRoZSBrZXkgdGhhdCB3b2tlIHRoZSBkZXZpY2UgYmVmb3JlIHBva2luZworICAgICAgICAgICAgLy8gdGhlIHdha2UgbG9jaworICAgICAgICAgICAgd2FrZVdoZW5SZWFkeUxvY2tlZChrZXlDb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGlzV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmcoaW50IGtleUNvZGUpIHsKKyAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfVk9MVU1FX1VQOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9ET1dOOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01VVEU6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfSEVBRFNFVEhPT0s6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUExBWV9QQVVTRToKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9TVE9QOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX05FWFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVM6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9DQU1FUkE6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGxiYWNrcyBmcm9tIHtAbGluayBLZXlndWFyZFZpZXdNYW5hZ2VyfS4KKyAgICAgKi8KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgcG9rZVdha2Vsb2NrKCkgeworICAgICAgICBwb2tlV2FrZWxvY2sobUtleWJvYXJkT3BlbiA/CisgICAgICAgICAgICAgICAgQVdBS0VfSU5URVJWQUxfREVGQVVMVF9LRVlCT0FSRF9PUEVOX01TIDogQVdBS0VfSU5URVJWQUxfREVGQVVMVF9NUyk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBwb2tlV2FrZWxvY2soaW50IGhvbGRNcykgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIGlmIChEQkdfV0FLRSkgTG9nLmQoVEFHLCAicG9rZVdha2Vsb2NrKCIgKyBob2xkTXMgKyAiKSIpOworICAgICAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFRJTUVPVVQpOworICAgICAgICAgICAgbVdha2Vsb2NrU2VxdWVuY2UrKzsKKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShUSU1FT1VULCBtV2FrZWxvY2tTZXF1ZW5jZSwgMCk7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBob2xkTXMpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICoge0Bpbmhlcml0RG9jfQorICAgICAqCisgICAgICogQHNlZSAjaGFuZGxlS2V5Z3VhcmREb25lCisgICAgICovCisgICAgcHVibGljIHZvaWQga2V5Z3VhcmREb25lKGJvb2xlYW4gYXV0aGVudGljYXRlZCkgeworICAgICAgICBrZXlndWFyZERvbmUoYXV0aGVudGljYXRlZCwgdHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQga2V5Z3VhcmREb25lKGJvb2xlYW4gYXV0aGVudGljYXRlZCwgYm9vbGVhbiB3YWtldXApIHsKKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KDcwMDAwLCAyKTsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAia2V5Z3VhcmREb25lKCIgKyBhdXRoZW50aWNhdGVkICsgIikiKTsKKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShLRVlHVUFSRF9ET05FKTsKKyAgICAgICAgICAgIG1zZy5hcmcxID0gd2FrZXVwID8gMSA6IDA7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworCisgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmNsZWFyRmFpbGVkQXR0ZW1wdHMoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1FeGl0U2VjdXJlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sub25LZXlndWFyZEV4aXRSZXN1bHQoYXV0aGVudGljYXRlZCk7CisgICAgICAgICAgICAgICAgbUV4aXRTZWN1cmVDYWxsYmFjayA9IG51bGw7CisKKyAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBzdWNjZXNmdWxseSBleGl0aW5nIHNlY3VyZWx5LCBubyBuZWVkIHRvIHJlc2hvdworICAgICAgICAgICAgICAgICAgICAvLyB0aGUga2V5Z3VhcmQgd2hlbiB0aGV5J3ZlIHJlbGVhc2VkIHRoZSBsb2NrCisgICAgICAgICAgICAgICAgICAgIG1FeHRlcm5hbGx5RW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1OZWVkVG9SZXNob3dXaGVuUmVlbmFibGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICoge0Bpbmhlcml0RG9jfQorICAgICAqCisgICAgICogQHNlZSAjaGFuZGxlS2V5Z3VhcmREb25lRHJhd2luZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGtleWd1YXJkRG9uZURyYXdpbmcoKSB7CisgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoS0VZR1VBUkRfRE9ORV9EUkFXSU5HKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGhhbmRsZXIgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBvbGljeSB0aHJlYWQsIHdoaWNoIHdpbGwgYWxzbworICAgICAqIGJlIHRoZSBVSSB0aHJlYWQgb2YgdGhlIGtleWd1YXJkLiAgU2luY2UgdGhlIGFwaXMgb2YgdGhlIHBvbGljeSwgYW5kIHRoZXJlZm9yZQorICAgICAqIHRoaXMgY2xhc3MsIGNhbiBiZSBjYWxsZWQgYnkgb3RoZXIgdGhyZWFkcywgYW55IGFjdGlvbiB0aGF0IGRpcmVjdGx5CisgICAgICogaW50ZXJhY3RzIHdpdGggdGhlIGtleWd1YXJkIHVpIHNob3VsZCBiZSBwb3N0ZWQgdG8gdGhpcyBoYW5kbGVyLCByYXRoZXIKKyAgICAgKiB0aGFuIGNhbGxlZCBkaXJlY3RseS4KKyAgICAgKi8KKyAgICBwcml2YXRlIEhhbmRsZXIgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcigpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFRJTUVPVVQ6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVvdXQobXNnLmFyZzEpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gOworICAgICAgICAgICAgICAgIGNhc2UgU0hPVzoKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2hvdygpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gOworICAgICAgICAgICAgICAgIGNhc2UgSElERToKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlSGlkZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gOworICAgICAgICAgICAgICAgIGNhc2UgUkVTRVQ6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA7CisgICAgICAgICAgICAgICAgY2FzZSBWRVJJRllfVU5MT0NLOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVWZXJpZnlVbmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGNhc2UgTk9USUZZX1NDUkVFTl9PRkY6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU5vdGlmeVNjcmVlbk9mZigpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBOT1RJRllfU0NSRUVOX09OOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVOb3RpZnlTY3JlZW5PbigpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBXQUtFX1dIRU5fUkVBRFk6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVdha2VXaGVuUmVhZHkobXNnLmFyZzEpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBLRVlHVUFSRF9ET05FOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVLZXlndWFyZERvbmUobXNnLmFyZzEgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjYXNlIEtFWUdVQVJEX0RPTkVfRFJBV0lORzoKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlS2V5Z3VhcmREb25lRHJhd2luZygpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBLRVlHVUFSRF9ET05FX0FVVEhFTlRJQ0FUSU5HOgorICAgICAgICAgICAgICAgICAgICBrZXlndWFyZERvbmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjYXNlIFNFVF9ISURERU46CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNldEhpZGRlbihtc2cuYXJnMSAhPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBLRVlHVUFSRF9USU1FT1VUOgorICAgICAgICAgICAgICAgICAgICBkb0tleWd1YXJkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBzZWUgI2tleWd1YXJkRG9uZQorICAgICAqIEBzZWUgI0tFWUdVQVJEX0RPTkUKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlS2V5Z3VhcmREb25lKGJvb2xlYW4gd2FrZXVwKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlS2V5Z3VhcmREb25lIik7CisgICAgICAgIGhhbmRsZUhpZGUoKTsKKyAgICAgICAgaWYgKHdha2V1cCkgeworICAgICAgICAgICAgbVBNLnVzZXJBY3Rpdml0eShTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgbVdha2VMb2NrLnJlbGVhc2UoKTsKKyAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChtVXNlclByZXNlbnRJbnRlbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBzZWUgI2tleWd1YXJkRG9uZURyYXdpbmcKKyAgICAgKiBAc2VlICNLRVlHVUFSRF9ET05FX0RSQVdJTkcKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlS2V5Z3VhcmREb25lRHJhd2luZygpIHsKKyAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKKyAgICAgICAgICAgIGlmIChmYWxzZSkgTG9nLmQoVEFHLCAiaGFuZGxlS2V5Z3VhcmREb25lRHJhd2luZyIpOworICAgICAgICAgICAgaWYgKG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZUtleWd1YXJkRG9uZURyYXdpbmc6IG5vdGlmeWluZyBtV2FpdGluZ1VudGlsS2V5Z3VhcmRWaXNpYmxlIik7CisgICAgICAgICAgICAgICAgbVdhaXRpbmdVbnRpbEtleWd1YXJkVmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIG5vdGlmeUFsbCgpOworCisgICAgICAgICAgICAgICAgLy8gdGhlcmUgd2lsbCB1c3VhbGx5IGJlIHR3byBvZiB0aGVzZSBzZW50LCBvbmUgYXMgYSB0aW1lb3V0LCBhbmQgb25lCisgICAgICAgICAgICAgICAgLy8gYXMgYSByZXN1bHQgb2YgdGhlIGNhbGxiYWNrLCBzbyByZW1vdmUgYW55IHJlbWFpbmluZyBtZXNzYWdlcyBmcm9tCisgICAgICAgICAgICAgICAgLy8gdGhlIHF1ZXVlCisgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoS0VZR1VBUkRfRE9ORV9EUkFXSU5HKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhhbmRsZXMgdGhlIG1lc3NhZ2Ugc2VudCBieSB7QGxpbmsgI3Bva2VXYWtlbG9ja30KKyAgICAgKiBAcGFyYW0gc2VxIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBtZXNzYWdlCisgICAgICogICB3YXMgc2VudC4KKyAgICAgKiBAc2VlICNUSU1FT1VUCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVRpbWVvdXQoaW50IHNlcSkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEtleWd1YXJkVmlld01lZGlhdG9yLnRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlVGltZW91dCIpOworICAgICAgICAgICAgaWYgKHNlcSA9PSBtV2FrZWxvY2tTZXF1ZW5jZSkgeworICAgICAgICAgICAgICAgIG1XYWtlTG9jay5yZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcGxheVNvdW5kcyhib29sZWFuIGxvY2tlZCkgeworICAgICAgICAvLyBVc2VyIGZlZWRiYWNrIGZvciBrZXlndWFyZC4KKworICAgICAgICBpZiAobVN1cHByZXNzTmV4dExvY2tTb3VuZCkgeworICAgICAgICAgICAgbVN1cHByZXNzTmV4dExvY2tTb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgQ29udGVudFJlc29sdmVyIGNyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CisgICAgICAgIGlmIChTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KGNyLCBTZXR0aW5ncy5TeXN0ZW0uTE9DS1NDUkVFTl9TT1VORFNfRU5BQkxFRCwgMSkgPT0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHdoaWNoU291bmQgPSBsb2NrZWQKKyAgICAgICAgICAgICAgICA/IFNldHRpbmdzLlN5c3RlbS5MT0NLX1NPVU5ECisgICAgICAgICAgICAgICAgOiBTZXR0aW5ncy5TeXN0ZW0uVU5MT0NLX1NPVU5EOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHNvdW5kUGF0aCA9IFNldHRpbmdzLlN5c3RlbS5nZXRTdHJpbmcoY3IsIHdoaWNoU291bmQpOworICAgICAgICAgICAgaWYgKHNvdW5kUGF0aCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZmluYWwgVXJpIHNvdW5kVXJpID0gVXJpLnBhcnNlKCJmaWxlOi8vIiArIHNvdW5kUGF0aCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdW5kVXJpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgUmluZ3RvbmUgc2Z4ID0gUmluZ3RvbmVNYW5hZ2VyLmdldFJpbmd0b25lKG1Db250ZXh0LCBzb3VuZFVyaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZnggIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnNldFN0cmVhbVR5cGUoQXVkaW9NYW5hZ2VyLlNUUkVBTV9TWVNURU0pOworICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnBsYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgInBsYXlTb3VuZHM6IGZhaWxlZCB0byBsb2FkIHJpbmd0b25lIGZyb20gdXJpOiAiICsgc291bmRVcmkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAicGxheVNvdW5kczogY291bGQgbm90IHBhcnNlIFVyaTogIiArIHNvdW5kUGF0aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJwbGF5U291bmRzOiB3aGljaFNvdW5kID0gIiArIHdoaWNoU291bmQgKyAiOyBzb3VuZFBhdGggd2FzIG51bGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gICAgICAgIAorCisgICAgLyoqCisgICAgICogSGFuZGxlIG1lc3NhZ2Ugc2VudCBieSB7QGxpbmsgI3Nob3dMb2NrZWR9LgorICAgICAqIEBzZWUgI1NIT1cKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlU2hvdygpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChLZXlndWFyZFZpZXdNZWRpYXRvci50aGlzKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZVNob3ciKTsKKyAgICAgICAgICAgIGlmICghbVN5c3RlbVJlYWR5KSByZXR1cm47CisKKyAgICAgICAgICAgIHBsYXlTb3VuZHModHJ1ZSk7CisKKyAgICAgICAgICAgIG1LZXlndWFyZFZpZXdNYW5hZ2VyLnNob3coKTsKKyAgICAgICAgICAgIG1TaG93aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGFkanVzdFVzZXJBY3Rpdml0eUxvY2tlZCgpOworICAgICAgICAgICAgYWRqdXN0U3RhdHVzQmFyTG9ja2VkKCk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuY2xvc2VTeXN0ZW1EaWFsb2dzKCJsb2NrIik7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVNob3dLZXlndWFyZFdha2VMb2NrLnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhhbmRsZSBtZXNzYWdlIHNlbnQgYnkge0BsaW5rICNoaWRlTG9ja2VkKCl9CisgICAgICogQHNlZSAjSElERQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVIaWRlKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEtleWd1YXJkVmlld01lZGlhdG9yLnRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlSGlkZSIpOworICAgICAgICAgICAgaWYgKG1XYWtlQW5kSGFuZE9mZi5pc0hlbGQoKSkgeworICAgICAgICAgICAgICAgIExvZy53KFRBRywgImF0dGVtcHQgdG8gaGlkZSB0aGUga2V5Z3VhcmQgd2hpbGUgd2FraW5nLCBpZ25vcmVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBvbmx5IHBsYXkgInVubG9jayIgbm9pc2VzIGlmIG5vdCBvbiBhIGNhbGwgKHNpbmNlIHRoZSBpbmNhbGwgVUkKKyAgICAgICAgICAgIC8vIGRpc2FibGVzIHRoZSBrZXlndWFyZCkKKyAgICAgICAgICAgIGlmIChUZWxlcGhvbnlNYW5hZ2VyLkVYVFJBX1NUQVRFX0lETEUuZXF1YWxzKG1QaG9uZVN0YXRlKSkgeworICAgICAgICAgICAgICAgIHBsYXlTb3VuZHMoZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3TWFuYWdlci5oaWRlKCk7CisgICAgICAgICAgICBtU2hvd2luZyA9IGZhbHNlOworICAgICAgICAgICAgYWRqdXN0VXNlckFjdGl2aXR5TG9ja2VkKCk7CisgICAgICAgICAgICBhZGp1c3RTdGF0dXNCYXJMb2NrZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhZGp1c3RVc2VyQWN0aXZpdHlMb2NrZWQoKSB7CisgICAgICAgIC8vIGRpc2FibGUgdXNlciBhY3Rpdml0eSBpZiB3ZSBhcmUgc2hvd24gYW5kIG5vdCBoaWRkZW4KKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJhZGp1c3RVc2VyQWN0aXZpdHlMb2NrZWQgbVNob3dpbmc6ICIgKyBtU2hvd2luZyArICIgbUhpZGRlbjogIiArIG1IaWRkZW4pOworICAgICAgICBib29sZWFuIGVuYWJsZWQgPSAhbVNob3dpbmcgfHwgbUhpZGRlbjsKKyAgICAgICAgbVJlYWxQb3dlck1hbmFnZXIuZW5hYmxlVXNlckFjdGl2aXR5KGVuYWJsZWQpOworICAgICAgICBpZiAoIWVuYWJsZWQgJiYgbVNjcmVlbk9uKSB7CisgICAgICAgICAgICAvLyByZWluc3RhdGUgb3VyIHNob3J0IHNjcmVlbiB0aW1lb3V0IHBvbGljeQorICAgICAgICAgICAgcG9rZVdha2Vsb2NrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWRqdXN0U3RhdHVzQmFyTG9ja2VkKCkgeworICAgICAgICBpZiAobVN0YXR1c0Jhck1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbVN0YXR1c0Jhck1hbmFnZXIgPSAoU3RhdHVzQmFyTWFuYWdlcikKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUQVRVU19CQVJfU0VSVklDRSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1TdGF0dXNCYXJNYW5hZ2VyID09IG51bGwpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIkNvdWxkIG5vdCBnZXQgc3RhdHVzIGJhciBtYW5hZ2VyIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobVNob3dMb2NrSWNvbikgeworICAgICAgICAgICAgICAgIC8vIEdpdmUgZmVlZGJhY2sgdG8gdXNlciB3aGVuIHNlY3VyZSBrZXlndWFyZCBpcyBhY3RpdmUgYW5kIGVuZ2FnZWQKKyAgICAgICAgICAgICAgICBpZiAobVNob3dpbmcgJiYgaXNTZWN1cmUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1TaG93aW5nTG9ja0ljb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJNYW5hZ2VyLnNldEljb24oInNlY3VyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2VjdXJlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TaG93aW5nTG9ja0ljb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TaG93aW5nTG9ja0ljb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJNYW5hZ2VyLnJlbW92ZUljb24oInNlY3VyZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgbVNob3dpbmdMb2NrSWNvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUga2V5Z3VhcmQgaXMgc2hvd24sIGFsbG93IHRoZSBzdGF0dXMgYmFyIHRvIG9wZW4KKyAgICAgICAgICAgIC8vIG9ubHkgaWYgdGhlIGtleWd1YXJkIGlzIGluc2VjdXJlIGFuZCBpcyBjb3ZlcmVkIGJ5IGFub3RoZXIgd2luZG93CisgICAgICAgICAgICBib29sZWFuIGVuYWJsZSA9ICFtU2hvd2luZyB8fCAobUhpZGRlbiAmJiAhaXNTZWN1cmUoKSk7CisgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlci5kaXNhYmxlKGVuYWJsZSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PTkUgOgorICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIG1lc3NhZ2Ugc2VudCBieSB7QGxpbmsgI3dha2VXaGVuUmVhZHlMb2NrZWQoaW50KX0KKyAgICAgKiBAcGFyYW0ga2V5Q29kZSBUaGUga2V5IHRoYXQgd29rZSB0aGUgZGV2aWNlLgorICAgICAqIEBzZWUgI1dBS0VfV0hFTl9SRUFEWQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVXYWtlV2hlblJlYWR5KGludCBrZXlDb2RlKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAoS2V5Z3VhcmRWaWV3TWVkaWF0b3IudGhpcykgeworICAgICAgICAgICAgaWYgKERCR19XQUtFKSBMb2cuZChUQUcsICJoYW5kbGVXYWtlV2hlblJlYWR5KCIgKyBrZXlDb2RlICsgIikiKTsKKworICAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgcmVzdWx0IGluIGEgY2FsbCB0byAncG9rZSB3YWtlbG9jaycgd2hpY2ggd2lsbCBzZXQgYSB0aW1lb3V0CisgICAgICAgICAgICAvLyBvbiByZWxlYXNpbmcgdGhlIHdha2Vsb2NrCisgICAgICAgICAgICBpZiAoIW1LZXlndWFyZFZpZXdNYW5hZ2VyLndha2VXaGVuUmVhZHlUcShrZXlDb2RlKSkgeworICAgICAgICAgICAgICAgIC8vIHBva2Ugd2FrZWxvY2sgb3Vyc2VsdmVzIGlmIGtleWd1YXJkIGlzIG5vIGxvbmdlciBhY3RpdmUKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJtS2V5Z3VhcmRWaWV3TWFuYWdlci53YWtlV2hlblJlYWR5VHEgZGlkIG5vdCBwb2tlIHdha2UgbG9jaywgc28gcG9rZSBpdCBvdXJzZWx2ZXMiKTsKKyAgICAgICAgICAgICAgICBwb2tlV2FrZWxvY2soKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBOb3cgdGhhdCB0aGUga2V5Z3VhcmQgaXMgcmVhZHkgYW5kIGhhcyBwb2tlZCB0aGUgd2FrZSBsb2NrLCB3ZSBjYW4KKyAgICAgICAgICAgICAqIHJlbGVhc2UgdGhlIGhhbmRvZmYgd2FrZWxvY2sKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbVdha2VBbmRIYW5kT2ZmLnJlbGVhc2UoKTsKKworICAgICAgICAgICAgaWYgKCFtV2FrZUxvY2suaXNIZWxkKCkpIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJtV2FrZUxvY2sgbm90IGhlbGQgaW4gbUtleWd1YXJkVmlld01hbmFnZXIud2FrZVdoZW5SZWFkeVRxIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgbWVzc2FnZSBzZW50IGJ5IHtAbGluayAjcmVzZXRTdGF0ZUxvY2tlZCgpfQorICAgICAqIEBzZWUgI1JFU0VUCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVJlc2V0KCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEtleWd1YXJkVmlld01lZGlhdG9yLnRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlUmVzZXQiKTsKKyAgICAgICAgICAgIG1LZXlndWFyZFZpZXdNYW5hZ2VyLnJlc2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgbWVzc2FnZSBzZW50IGJ5IHtAbGluayAjdmVyaWZ5VW5sb2NrfQorICAgICAqIEBzZWUgI1JFU0VUCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVZlcmlmeVVubG9jaygpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChLZXlndWFyZFZpZXdNZWRpYXRvci50aGlzKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZVZlcmlmeVVubG9jayIpOworICAgICAgICAgICAgbUtleWd1YXJkVmlld01hbmFnZXIudmVyaWZ5VW5sb2NrKCk7CisgICAgICAgICAgICBtU2hvd2luZyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgbWVzc2FnZSBzZW50IGJ5IHtAbGluayAjbm90aWZ5U2NyZWVuT2ZmTG9ja2VkKCl9CisgICAgICogQHNlZSAjTk9USUZZX1NDUkVFTl9PRkYKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlTm90aWZ5U2NyZWVuT2ZmKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEtleWd1YXJkVmlld01lZGlhdG9yLnRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlTm90aWZ5U2NyZWVuT2ZmIik7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3TWFuYWdlci5vblNjcmVlblR1cm5lZE9mZigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIG1lc3NhZ2Ugc2VudCBieSB7QGxpbmsgI25vdGlmeVNjcmVlbk9uTG9ja2VkKCl9CisgICAgICogQHNlZSAjTk9USUZZX1NDUkVFTl9PTgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVOb3RpZnlTY3JlZW5PbigpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChLZXlndWFyZFZpZXdNZWRpYXRvci50aGlzKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZU5vdGlmeVNjcmVlbk9uIik7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3TWFuYWdlci5vblNjcmVlblR1cm5lZE9uKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFZpZXdQcm9wZXJ0aWVzLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld1Byb3BlcnRpZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGEwOGViCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFZpZXdQcm9wZXJ0aWVzLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKKworLyoqCisgKiBEZWZpbmVzIG9wZXJhdGlvbnMgbmVjZXNzYXJ5IGZvciBzaG93aW5nIGEga2V5Z3VhcmQsIGluY2x1ZGluZyBob3cgdG8gY3JlYXRlCisgKiBpdCwgYW5kIHZhcmlvdXMgcHJvcGVydGllcyB0aGF0IGFyZSB1c2VmdWwgdG8gYmUgYWJsZSB0byBxdWVyeSBpbmRlcGVuZGFudAorICogb2Ygd2hldGhlciB0aGUga2V5Z3VhcmQgaW5zdGFuY2UgaXMgYXJvdW5kIG9yIG5vdC4KKyAqLworcHVibGljIGludGVyZmFjZSBLZXlndWFyZFZpZXdQcm9wZXJ0aWVzIHsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBrZXlndWFyZCB2aWV3LgorICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSB2aWV3LgorICAgICAqIEBwYXJhbSB1cGRhdGVNb25pdG9yIGNvbmZpZ3VyYXRpb24gbWF5IGJlIGJhc2VkIG9uIHRoaXMuCisgICAgICogQHBhcmFtIGNvbnRyb2xsZXIgZm9yIHRhbGtpbmcgYmFjayB3aXRoIHRoZSBjb250YWluaW5nIHdpbmRvdy4KKyAgICAgKiBAcmV0dXJuIHRoZSB2aWV3LgorICAgICAqLworICAgIEtleWd1YXJkVmlld0Jhc2UgY3JlYXRlS2V5Z3VhcmRWaWV3KENvbnRleHQgY29udGV4dCwKKyAgICAgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLAorICAgICAgICAgICAgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyIGNvbnRyb2xsZXIpOworCisgICAgLyoqCisgICAgICogV291bGQgdGhlIGtleWd1YXJkIGJlIHNlY3VyZSByaWdodCBub3c/CisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBrZXlndWFyZCBpcyBjdXJyZW50bHkgc2VjdXJlLCBtZWFuaW5nIGl0IHdpbGwgYmxvY2sKKyAgICAgKiAgIHRoZSB1c2VyIGZyb20gZ2V0dGluZyBwYXN0IGl0IHVudGlsIHRoZSB1c2VyIGVudGVycyBzb21lIHNvcnQgb2YgUElOLgorICAgICAqLworICAgIGJvb2xlYW4gaXNTZWN1cmUoKTsKKworfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFdpbmRvd0NvbnRyb2xsZXIuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFkNDhmYgotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyLmphdmEKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKKy8qKgorICogSW50ZXJmYWNlIHBhc3NlZCB0byB0aGUga2V5Z3VhcmQgdmlldywgZm9yIGl0IHRvIGNhbGwgdXAgdG8gY29udHJvbAorICogaXRzIGNvbnRhaW5pbmcgd2luZG93LgorICovCitwdWJsaWMgaW50ZXJmYWNlIEtleWd1YXJkV2luZG93Q29udHJvbGxlciB7CisgICAgLyoqCisgICAgICogQ29udHJvbCB3aGV0aGVyIHRoZSB3aW5kb3cgbmVlZHMgaW5wdXQgLS0gdGhhdCBpcyBpZiBpdCBoYXMKKyAgICAgKiB0ZXh0IGZpZWxkcyBhbmQgdGh1cyBzaG91bGQgYWxsb3cgaW5wdXQgbWV0aG9kIGludGVyYWN0aW9uLgorICAgICAqLworICAgIHZvaWQgc2V0TmVlZHNJbnB1dChib29sZWFuIG5lZWRzSW5wdXQpOworfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlldy5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NzA2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LmphdmEKQEAgLTAsMCArMSw3OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKKworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuQWNjb3VudDsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJDYWxsYmFjazsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyRnV0dXJlOworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuQXV0aGVudGljYXRvckV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLk9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLmFkbWluLkRldmljZVBvbGljeU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5CaXRtYXA7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbVByb3BlcnRpZXM7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBUaGUgaG9zdCB2aWV3IGZvciBhbGwgb2YgdGhlIHNjcmVlbnMgb2YgdGhlIHBhdHRlcm4gdW5sb2NrIHNjcmVlbi4gIFRoZXJlIGFyZQorICogdHdvIHtAbGluayBNb2RlfXMgb2Ygb3BlcmF0aW9uLCBsb2NrIGFuZCB1bmxvY2suICBUaGlzIHdpbGwgc2hvdyB0aGUgYXBwcm9wcmlhdGUKKyAqIHNjcmVlbiwgYW5kIGxpc3RlbiBmb3IgY2FsbGJhY2tzIHZpYQorICoge0BsaW5rIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLktleWd1YXJkU2NyZWVuQ2FsbGJhY2t9CisgKiBmcm9tIHRoZSBjdXJyZW50IHNjcmVlbi4KKyAqCisgKiBUaGlzIHZpZXcsIGluIHR1cm4sIGNvbW11bmljYXRlcyBiYWNrIHRvCisgKiB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuS2V5Z3VhcmRWaWV3TWFuYWdlcn0KKyAqIHZpYSBpdHMge0BsaW5rIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLktleWd1YXJkVmlld0NhbGxiYWNrfSwgYXMgYXBwcm9wcmlhdGUuCisgKi8KK3B1YmxpYyBjbGFzcyBMb2NrUGF0dGVybktleWd1YXJkVmlldyBleHRlbmRzIEtleWd1YXJkVmlld0Jhc2UgeworCisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfQ09ORklHVVJBVElPTiA9IGZhbHNlOworCisgICAgLy8gdGltZSBhZnRlciBsYXVuY2hpbmcgRW1lcmdlbmN5RGlhbGVyIGJlZm9yZSB0aGUgc2NyZWVuIGdvZXMgYmxhbmsuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVNRVJHRU5DWV9DQUxMX1RJTUVPVVQgPSAxMDAwMDsKKworICAgIC8vIGludGVudCBhY3Rpb24gZm9yIGxhdW5jaGluZyBlbWVyZ2VuY3kgZGlhbGVyIGFjdGl2aXR5LgorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX0VNRVJHRU5DWV9ESUFMID0gImNvbS5hbmRyb2lkLnBob25lLkVtZXJnZW5jeURpYWxlci5ESUFMIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkxvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3IjsKKworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyIG1XaW5kb3dDb250cm9sbGVyOworCisgICAgcHJpdmF0ZSBWaWV3IG1Mb2NrU2NyZWVuOworICAgIHByaXZhdGUgVmlldyBtVW5sb2NrU2NyZWVuOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1TY3JlZW5PbiA9IGZhbHNlOworICAgIHByaXZhdGUgYm9vbGVhbiBtRW5hYmxlRmFsbGJhY2sgPSBmYWxzZTsgLy8gYXNzdW1lIG5vIGZhbGxiYWNrIFVJIHVudGlsIHdlIGtub3cgYmV0dGVyCisKKyAgICAvKioKKyAgICAgKiBUaGUgY3VycmVudCB7QGxpbmsgS2V5Z3VhcmRTY3JlZW59IHdpbGwgdXNlIHRoaXMgdG8gY29tbXVuaWNhdGUgYmFjayB0byB1cy4KKyAgICAgKi8KKyAgICBLZXlndWFyZFNjcmVlbkNhbGxiYWNrIG1LZXlndWFyZFNjcmVlbkNhbGxiYWNrOworCisKKyAgICBwcml2YXRlIGJvb2xlYW4gbVJlcXVpcmVzU2ltOworCisKKyAgICAvKioKKyAgICAgKiBFaXRoZXIgYSBsb2NrIHNjcmVlbiAoYW4gaW5mb3JtYXRpb25hbCBrZXlndWFyZCBzY3JlZW4pLCBvciBhbiB1bmxvY2sKKyAgICAgKiBzY3JlZW4gKGEgbWVhbnMgZm9yIHVubG9ja2luZyB0aGUgZGV2aWNlKSBpcyBzaG93biBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICAgKi8KKyAgICBlbnVtIE1vZGUgeworICAgICAgICBMb2NrU2NyZWVuLAorICAgICAgICBVbmxvY2tTY3JlZW4KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGlmZmVyZW50IHR5cGVzIHNjcmVlbnMgYXZhaWxhYmxlIGZvciB7QGxpbmsgTW9kZSNVbmxvY2tTY3JlZW59LgorICAgICAqIEBzZWUgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcjZ2V0VW5sb2NrTW9kZSgpCisgICAgICovCisgICAgZW51bSBVbmxvY2tNb2RlIHsKKworICAgICAgICAvKioKKyAgICAgICAgICogVW5sb2NrIGJ5IGRyYXdpbmcgYSBwYXR0ZXJuLgorICAgICAgICAgKi8KKyAgICAgICAgUGF0dGVybiwKKworICAgICAgICAvKioKKyAgICAgICAgICogVW5sb2NrIGJ5IGVudGVyaW5nIGEgc2ltIHBpbi4KKyAgICAgICAgICovCisgICAgICAgIFNpbVBpbiwKKworICAgICAgICAvKioKKyAgICAgICAgICogVW5sb2NrIGJ5IGVudGVyaW5nIGFuIGFjY291bnQncyBsb2dpbiBhbmQgcGFzc3dvcmQuCisgICAgICAgICAqLworICAgICAgICBBY2NvdW50LAorCisgICAgICAgIC8qKgorICAgICAgICAgKiBVbmxvY2sgYnkgZW50ZXJpbmcgYSBwYXNzd29yZCBvciBQSU4KKyAgICAgICAgICovCisgICAgICAgIFBhc3N3b3JkLAorCisgICAgICAgIC8qKgorICAgICAgICAgKiBVbmtub3duICh1bmluaXRpYWxpemVkKSB2YWx1ZQorICAgICAgICAgKi8KKyAgICAgICAgVW5rbm93bgorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBjdXJyZW50IG1vZGUuCisgICAgICovCisgICAgcHJpdmF0ZSBNb2RlIG1Nb2RlID0gTW9kZS5Mb2NrU2NyZWVuOworCisgICAgLyoqCisgICAgICogS2VlcHMgdHJhY2sgb2Ygd2hhdCBtb2RlIHRoZSBjdXJyZW50IHVubG9jayBzY3JlZW4gaXMgKGNhY2hlZCBmcm9tIG1vc3QgcmVjZW50IGNvbXB1dGF0aW9uIGluCisgICAgICoge0BsaW5rICNnZXRVbmxvY2tNb2RlfSkuCisgICAgICovCisgICAgcHJpdmF0ZSBVbmxvY2tNb2RlIG1VbmxvY2tTY3JlZW5Nb2RlOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1Gb3Jnb3RQYXR0ZXJuOworCisgICAgLyoqCisgICAgICogSWYgdHJ1ZSwgaXQgbWVhbnMgd2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHZlcmlmeWluZyB0aGF0IHRoZSB1c2VyCisgICAgICogY2FuIGdldCBwYXN0IHRoZSBsb2NrIHNjcmVlbiBwZXIge0BsaW5rICN2ZXJpZnlVbmxvY2soKX0KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbUlzVmVyaWZ5VW5sb2NrT25seSA9IGZhbHNlOworCisKKyAgICAvKioKKyAgICAgKiBVc2VkIHRvIGxvb2t1cCB0aGUgc3RhdGUgb2YgdGhlIGxvY2sgcGF0dGVybgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKworICAgIHByaXZhdGUgVW5sb2NrTW9kZSBtQ3VycmVudFVubG9ja01vZGUgPSBVbmxvY2tNb2RlLlVua25vd247CisKKyAgICAvKioKKyAgICAgKiBUaGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbiBtQ29uZmlndXJhdGlvbjsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4gV2hldGhlciB3ZSBhcmUgc3R1Y2sgb24gdGhlIGxvY2sgc2NyZWVuIGJlY2F1c2UgdGhlIHNpbSBpcworICAgICAqICAgbWlzc2luZy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gc3R1Y2tPbkxvY2tTY3JlZW5CZWNhdXNlU2ltTWlzc2luZygpIHsKKyAgICAgICAgcmV0dXJuIG1SZXF1aXJlc1NpbQorICAgICAgICAgICAgICAgICYmICghbVVwZGF0ZU1vbml0b3IuaXNEZXZpY2VQcm92aXNpb25lZCgpKQorICAgICAgICAgICAgICAgICYmIChtVXBkYXRlTW9uaXRvci5nZXRTaW1TdGF0ZSgpID09IEljY0NhcmQuU3RhdGUuQUJTRU5UKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gY29udGV4dCBVc2VkIHRvIGluZmxhdGUsIGFuZCBjcmVhdGUgdmlld3MuCisgICAgICogQHBhcmFtIHVwZGF0ZU1vbml0b3IgS25vd3MgdGhlIHN0YXRlIG9mIHRoZSB3b3JsZCwgYW5kIHBhc3NlZCBhbG9uZyB0byBlYWNoCisgICAgICogICBzY3JlZW4gc28gdGhleSBjYW4gdXNlIHRoZSBrbm93bGVkZ2UsIGFuZCBhbHNvIHJlZ2lzdGVyIGZvciBjYWxsYmFja3MKKyAgICAgKiAgIG9uIGR5bmFtaWMgaW5mb3JtYXRpb24uCisgICAgICogQHBhcmFtIGxvY2tQYXR0ZXJuVXRpbHMgVXNlZCB0byBsb29rIHVwIHN0YXRlIG9mIGxvY2sgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwdWJsaWMgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcoCisgICAgICAgICAgICBDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgIExvY2tQYXR0ZXJuVXRpbHMgbG9ja1BhdHRlcm5VdGlscywKKyAgICAgICAgICAgIEtleWd1YXJkV2luZG93Q29udHJvbGxlciBjb250cm9sbGVyKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworCisgICAgICAgIG1Db25maWd1cmF0aW9uID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCk7CisgICAgICAgIG1FbmFibGVGYWxsYmFjayA9IGZhbHNlOworCisgICAgICAgIG1SZXF1aXJlc1NpbSA9CisgICAgICAgICAgICAgICAgVGV4dFV0aWxzLmlzRW1wdHkoU3lzdGVtUHJvcGVydGllcy5nZXQoImtleWd1YXJkLm5vX3JlcXVpcmVfc2ltIikpOworCisgICAgICAgIG1VcGRhdGVNb25pdG9yID0gdXBkYXRlTW9uaXRvcjsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMgPSBsb2NrUGF0dGVyblV0aWxzOworICAgICAgICBtV2luZG93Q29udHJvbGxlciA9IGNvbnRyb2xsZXI7CisKKyAgICAgICAgbU1vZGUgPSBnZXRJbml0aWFsTW9kZSgpOworCisgICAgICAgIG1LZXlndWFyZFNjcmVlbkNhbGxiYWNrID0gbmV3IEtleWd1YXJkU2NyZWVuQ2FsbGJhY2soKSB7CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGdvVG9Mb2NrU2NyZWVuKCkgeworICAgICAgICAgICAgICAgIG1Gb3Jnb3RQYXR0ZXJuID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1Jc1ZlcmlmeVVubG9ja09ubHkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbmF2aWdhdGluZyBhd2F5IGZyb20gdW5sb2NrIHNjcmVlbiBkdXJpbmcgdmVyaWZ5IG1vZGUgbWVhbnMKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGRvbmUgYW5kIHRoZSB1c2VyIGZhaWxlZCB0byBhdXRoZW50aWNhdGUuCisgICAgICAgICAgICAgICAgICAgIG1Jc1ZlcmlmeVVubG9ja09ubHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5rZXlndWFyZERvbmUoZmFsc2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNjcmVlbihNb2RlLkxvY2tTY3JlZW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgZ29Ub1VubG9ja1NjcmVlbigpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHNpbVN0YXRlID0gbVVwZGF0ZU1vbml0b3IuZ2V0U2ltU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3R1Y2tPbkxvY2tTY3JlZW5CZWNhdXNlU2ltTWlzc2luZygpCisgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEKSl7CisgICAgICAgICAgICAgICAgICAgIC8vIHN0dWNrIG9uIGxvY2sgc2NyZWVuIHdoZW4gc2ltIG1pc3Npbmcgb3IgcHVrJ2QKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWlzU2VjdXJlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5rZXlndWFyZERvbmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2NyZWVuKE1vZGUuVW5sb2NrU2NyZWVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGZvcmdvdFBhdHRlcm4oYm9vbGVhbiBpc0ZvcmdvdHRlbikgeworICAgICAgICAgICAgICAgIGlmIChtRW5hYmxlRmFsbGJhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgbUZvcmdvdFBhdHRlcm4gPSBpc0ZvcmdvdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2NyZWVuKE1vZGUuVW5sb2NrU2NyZWVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzU2VjdXJlKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBMb2NrUGF0dGVybktleWd1YXJkVmlldy50aGlzLmlzU2VjdXJlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVmVyaWZ5VW5sb2NrT25seSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbUlzVmVyaWZ5VW5sb2NrT25seTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgcmVjcmVhdGVNZShDb25maWd1cmF0aW9uIGNvbmZpZykgeworICAgICAgICAgICAgICAgIG1Db25maWd1cmF0aW9uID0gY29uZmlnOworICAgICAgICAgICAgICAgIHJlY3JlYXRlU2NyZWVucygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCB0YWtlRW1lcmdlbmN5Q2FsbEFjdGlvbigpIHsKKyAgICAgICAgICAgICAgICBwb2tlV2FrZWxvY2soRU1FUkdFTkNZX0NBTExfVElNRU9VVCk7CisgICAgICAgICAgICAgICAgaWYgKFRlbGVwaG9ueU1hbmFnZXIuZ2V0RGVmYXVsdCgpLmdldENhbGxTdGF0ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICA9PSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfT0ZGSE9PSykgeworICAgICAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy5yZXN1bWVDYWxsKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoQUNUSU9OX0VNRVJHRU5DWV9ESUFMKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZW50LnNldEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUyk7CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBwb2tlV2FrZWxvY2soKSB7CisgICAgICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5wb2tlV2FrZWxvY2soKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgcG9rZVdha2Vsb2NrKGludCBtaWxsaXMpIHsKKyAgICAgICAgICAgICAgICBnZXRDYWxsYmFjaygpLnBva2VXYWtlbG9jayhtaWxsaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBrZXlndWFyZERvbmUoYm9vbGVhbiBhdXRoZW50aWNhdGVkKSB7CisgICAgICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5rZXlndWFyZERvbmUoYXV0aGVudGljYXRlZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGtleWd1YXJkRG9uZURyYXdpbmcoKSB7CisgICAgICAgICAgICAgICAgLy8gaXJyZWxldmFudCB0byBrZXlndWFyZCBzY3JlZW4sIHRoZXkgc2hvdWxkbid0IGJlIGNhbGxpbmcgdGhpcworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCByZXBvcnRGYWlsZWRVbmxvY2tBdHRlbXB0KCkgeworICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLnJlcG9ydEZhaWxlZEF0dGVtcHQoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZmFpbGVkQXR0ZW1wdHMgPSBtVXBkYXRlTW9uaXRvci5nZXRGYWlsZWRBdHRlbXB0cygpOworICAgICAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLAorICAgICAgICAgICAgICAgICAgICAicmVwb3J0RmFpbGVkUGF0dGVybkF0dGVtcHQ6ICMiICsgZmFpbGVkQXR0ZW1wdHMgKworICAgICAgICAgICAgICAgICAgICAiIChlbmFibGVGYWxsYmFjaz0iICsgbUVuYWJsZUZhbGxiYWNrICsgIikiKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHVzaW5nTG9ja1BhdHRlcm4gPSBtTG9ja1BhdHRlcm5VdGlscy5nZXRLZXlndWFyZFN0b3JlZFBhc3N3b3JkUXVhbGl0eSgpCisgICAgICAgICAgICAgICAgICAgICAgICA9PSBEZXZpY2VQb2xpY3lNYW5hZ2VyLlBBU1NXT1JEX1FVQUxJVFlfU09NRVRISU5HOworICAgICAgICAgICAgICAgIGlmICh1c2luZ0xvY2tQYXR0ZXJuICYmIG1FbmFibGVGYWxsYmFjayAmJiBmYWlsZWRBdHRlbXB0cyA9PQorICAgICAgICAgICAgICAgICAgICAgICAgKExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9SRVNFVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VUKSkgeworICAgICAgICAgICAgICAgICAgICBzaG93QWxtb3N0QXRBY2NvdW50TG9naW5EaWFsb2coKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVzaW5nTG9ja1BhdHRlcm4gJiYgbUVuYWJsZUZhbGxiYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBmYWlsZWRBdHRlbXB0cyA+PSBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfUkVTRVQpIHsKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMuc2V0UGVybWFuZW50bHlMb2NrZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNjcmVlbihtTW9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZmFpbGVkQXR0ZW1wdHMgJSBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfVElNRU9VVCkKKyAgICAgICAgICAgICAgICAgICAgICAgID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvd1RpbWVvdXREaWFsb2coKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMucmVwb3J0RmFpbGVkUGFzc3dvcmRBdHRlbXB0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGRvZXNGYWxsYmFja1VubG9ja1NjcmVlbkV4aXN0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtRW5hYmxlRmFsbGJhY2s7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlcG9ydFN1Y2Nlc3NmdWxVbmxvY2tBdHRlbXB0KCkgeworICAgICAgICAgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLnJlcG9ydFN1Y2Nlc3NmdWxQYXNzd29yZEF0dGVtcHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogV2UnbGwgZ2V0IGtleSBldmVudHMgdGhlIGN1cnJlbnQgc2NyZWVuIGRvZXNuJ3QgdXNlLiBzZWUKKyAgICAgICAgICoge0BsaW5rIEtleWd1YXJkVmlld0Jhc2Ujb25LZXlEb3duKGludCwgYW5kcm9pZC52aWV3LktleUV2ZW50KX0KKyAgICAgICAgICovCisgICAgICAgIHNldEZvY3VzYWJsZUluVG91Y2hNb2RlKHRydWUpOworICAgICAgICBzZXREZXNjZW5kYW50Rm9jdXNhYmlsaXR5KEZPQ1VTX0FGVEVSX0RFU0NFTkRBTlRTKTsKKworICAgICAgICAvLyBjcmVhdGUgYm90aCB0aGUgbG9jayBhbmQgdW5sb2NrIHNjcmVlbiBzbyB0aGV5IGFyZSBxdWlja2x5IGF2YWlsYWJsZQorICAgICAgICAvLyB3aGVuIHRoZSBzY3JlZW4gdHVybnMgb24KKyAgICAgICAgbUxvY2tTY3JlZW4gPSBjcmVhdGVMb2NrU2NyZWVuKCk7CisgICAgICAgIGFkZFZpZXcobUxvY2tTY3JlZW4pOworICAgICAgICBmaW5hbCBVbmxvY2tNb2RlIHVubG9ja01vZGUgPSBnZXRVbmxvY2tNb2RlKCk7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLAorICAgICAgICAgICAgIkxvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3IGN0b3I6IGFib3V0IHRvIGNyZWF0ZVVubG9ja1NjcmVlbkZvcjsgbUVuYWJsZUZhbGxiYWNrPSIKKyAgICAgICAgICAgICsgbUVuYWJsZUZhbGxiYWNrKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbiA9IGNyZWF0ZVVubG9ja1NjcmVlbkZvcih1bmxvY2tNb2RlKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbk1vZGUgPSB1bmxvY2tNb2RlOworCisgICAgICAgIG1heWJlRW5hYmxlRmFsbGJhY2soY29udGV4dCk7CisKKyAgICAgICAgYWRkVmlldyhtVW5sb2NrU2NyZWVuKTsKKyAgICAgICAgdXBkYXRlU2NyZWVuKG1Nb2RlKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEFjY291bnRBbmFseXplciBpbXBsZW1lbnRzIEFjY291bnRNYW5hZ2VyQ2FsbGJhY2s8QnVuZGxlPiB7CisgICAgICAgIHByaXZhdGUgZmluYWwgQWNjb3VudE1hbmFnZXIgbUFjY291bnRNYW5hZ2VyOworICAgICAgICBwcml2YXRlIGZpbmFsIEFjY291bnRbXSBtQWNjb3VudHM7CisgICAgICAgIHByaXZhdGUgaW50IG1BY2NvdW50SW5kZXg7CisKKyAgICAgICAgcHJpdmF0ZSBBY2NvdW50QW5hbHl6ZXIoQWNjb3VudE1hbmFnZXIgYWNjb3VudE1hbmFnZXIpIHsKKyAgICAgICAgICAgIG1BY2NvdW50TWFuYWdlciA9IGFjY291bnRNYW5hZ2VyOworICAgICAgICAgICAgbUFjY291bnRzID0gYWNjb3VudE1hbmFnZXIuZ2V0QWNjb3VudHNCeVR5cGUoImNvbS5nb29nbGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBuZXh0KCkgeworICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHJlYWR5IHRvIGVuYWJsZSB0aGUgZmFsbGJhY2sgb3IgaWYgd2UgZGVwbGV0ZWQgdGhlIGxpc3Qgb2YgYWNjb3VudHMKKyAgICAgICAgICAgIC8vIHRoZW4gZmluaXNoIGFuZCBnZXQgb3V0CisgICAgICAgICAgICBpZiAobUVuYWJsZUZhbGxiYWNrIHx8IG1BY2NvdW50SW5kZXggPj0gbUFjY291bnRzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChtVW5sb2NrU2NyZWVuID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAibm8gdW5sb2NrIHNjcmVlbiB3aGVuIHRyeWluZyB0byBlbmFibGUgZmFsbGJhY2siKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1VbmxvY2tTY3JlZW4gaW5zdGFuY2VvZiBQYXR0ZXJuVW5sb2NrU2NyZWVuKSB7CisgICAgICAgICAgICAgICAgICAgICgoUGF0dGVyblVubG9ja1NjcmVlbiltVW5sb2NrU2NyZWVuKS5zZXRFbmFibGVGYWxsYmFjayhtRW5hYmxlRmFsbGJhY2spOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGxvb2t1cCB0aGUgY29uZmlybUNyZWRlbnRpYWxzIGludGVudCBmb3IgdGhlIGN1cnJlbnQgYWNjb3VudAorICAgICAgICAgICAgbUFjY291bnRNYW5hZ2VyLmNvbmZpcm1DcmVkZW50aWFscyhtQWNjb3VudHNbbUFjY291bnRJbmRleF0sIG51bGwsIG51bGwsIHRoaXMsIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc3RhcnQoKSB7CisgICAgICAgICAgICBtRW5hYmxlRmFsbGJhY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIG1BY2NvdW50SW5kZXggPSAwOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKEFjY291bnRNYW5hZ2VyRnV0dXJlPEJ1bmRsZT4gZnV0dXJlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEJ1bmRsZSByZXN1bHQgPSBmdXR1cmUuZ2V0UmVzdWx0KCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5nZXRQYXJjZWxhYmxlKEFjY291bnRNYW5hZ2VyLktFWV9JTlRFTlQpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUVuYWJsZUZhbGxiYWNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8ganVzdCBza2lwIHRoZSBhY2NvdW50IGlmIHdlIGFyZSB1bmFibGUgdG8gcXVlcnkgaXQKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBqdXN0IHNraXAgdGhlIGFjY291bnQgaWYgd2UgYXJlIHVuYWJsZSB0byBxdWVyeSBpdAorICAgICAgICAgICAgfSBjYXRjaCAoQXV0aGVudGljYXRvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8ganVzdCBza2lwIHRoZSBhY2NvdW50IGlmIHdlIGFyZSB1bmFibGUgdG8gcXVlcnkgaXQKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgbUFjY291bnRJbmRleCsrOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBtYXliZUVuYWJsZUZhbGxiYWNrKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAvLyBBc2sgdGhlIGFjY291bnQgbWFuYWdlciBpZiB3ZSBoYXZlIGFuIGFjY291bnQgdGhhdCBjYW4gYmUgdXNlZCBhcyBhCisgICAgICAgIC8vIGZhbGxiYWNrIGluIGNhc2UgdGhlIHVzZXIgZm9yZ2V0cyBoaXMgcGF0dGVybi4KKyAgICAgICAgQWNjb3VudEFuYWx5emVyIGFjY291bnRBbmFseXplciA9IG5ldyBBY2NvdW50QW5hbHl6ZXIoQWNjb3VudE1hbmFnZXIuZ2V0KGNvbnRleHQpKTsKKyAgICAgICAgYWNjb3VudEFuYWx5emVyLnN0YXJ0KCk7CisgICAgfQorCisKKyAgICAvLyBUT0RPOgorICAgIC8vIFRoaXMgb3ZlcmxvYWRlZCBtZXRob2Qgd2FzIGFkZGVkIHRvIHdvcmthcm91bmQgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZnJhbWV3b3JrIGJldHdlZW4KKyAgICAvLyBub3RpZmljYXRpb24gZm9yIG9yaWVudGF0aW9uIGNoYW5nZWQsIGxheW91dCgpIGFuZCBzd2l0Y2hpbmcgcmVzb3VyY2VzLiAgVGhpcyBjb2RlIGF0dGVtcHRzCisgICAgLy8gdG8gYXZvaWQgZHJhd2luZyB0aGUgaW5jb3JyZWN0IGxheW91dCB3aGlsZSB0aGluZ3MgYXJlIGluIHRyYW5zaXRpb24uICBUaGUgbWV0aG9kIGNhbiBqdXN0CisgICAgLy8gYmUgcmVtb3ZlZCBvbmNlIHRoZSByYWNlIGNvbmRpdGlvbiBpcyBmaXhlZC4gU2VlIGJ1Z3MgMjI2MjU3OCBhbmQgMjI5MjcxMy4KKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBkaXNwYXRjaERyYXcoQ2FudmFzIGNhbnZhcykgeworICAgICAgICBpZiAoREVCVUcpIExvZy52KFRBRywgIioqKiBkaXNwYXRjaERyYXcoKSB0aW1lOiAiICsgU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOworICAgICAgICBzdXBlci5kaXNwYXRjaERyYXcoY2FudmFzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKKyAgICAgICAgbUlzVmVyaWZ5VW5sb2NrT25seSA9IGZhbHNlOworICAgICAgICBtRm9yZ290UGF0dGVybiA9IGZhbHNlOworICAgICAgICB1cGRhdGVTY3JlZW4oZ2V0SW5pdGlhbE1vZGUoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25TY3JlZW5UdXJuZWRPZmYoKSB7CisgICAgICAgIG1TY3JlZW5PbiA9IGZhbHNlOworICAgICAgICBtRm9yZ290UGF0dGVybiA9IGZhbHNlOworICAgICAgICBpZiAobU1vZGUgPT0gTW9kZS5Mb2NrU2NyZWVuKSB7CisgICAgICAgICAgICgoS2V5Z3VhcmRTY3JlZW4pIG1Mb2NrU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtVW5sb2NrU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblNjcmVlblR1cm5lZE9uKCkgeworICAgICAgICBtU2NyZWVuT24gPSB0cnVlOworICAgICAgICBpZiAobU1vZGUgPT0gTW9kZS5Mb2NrU2NyZWVuKSB7CisgICAgICAgICAgICgoS2V5Z3VhcmRTY3JlZW4pIG1Mb2NrU2NyZWVuKS5vblJlc3VtZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKChLZXlndWFyZFNjcmVlbikgbVVubG9ja1NjcmVlbikub25SZXN1bWUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZWNyZWF0ZUxvY2tTY3JlZW4oKSB7CisgICAgICAgIGlmIChtTG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkgPT0gVmlldy5WSVNJQkxFKSB7CisgICAgICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtTG9ja1NjcmVlbikub25QYXVzZSgpOworICAgICAgICB9CisgICAgICAgICgoS2V5Z3VhcmRTY3JlZW4pIG1Mb2NrU2NyZWVuKS5jbGVhblVwKCk7CisgICAgICAgIHJlbW92ZVZpZXcobUxvY2tTY3JlZW4pOworCisgICAgICAgIG1Mb2NrU2NyZWVuID0gY3JlYXRlTG9ja1NjcmVlbigpOworICAgICAgICBtTG9ja1NjcmVlbi5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgYWRkVmlldyhtTG9ja1NjcmVlbik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlY3JlYXRlVW5sb2NrU2NyZWVuKCkgeworICAgICAgICBpZiAobVVubG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkgPT0gVmlldy5WSVNJQkxFKSB7CisgICAgICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtVW5sb2NrU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgKChLZXlndWFyZFNjcmVlbikgbVVubG9ja1NjcmVlbikuY2xlYW5VcCgpOworICAgICAgICByZW1vdmVWaWV3KG1VbmxvY2tTY3JlZW4pOworCisgICAgICAgIGZpbmFsIFVubG9ja01vZGUgdW5sb2NrTW9kZSA9IGdldFVubG9ja01vZGUoKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbiA9IGNyZWF0ZVVubG9ja1NjcmVlbkZvcih1bmxvY2tNb2RlKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbi5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbk1vZGUgPSB1bmxvY2tNb2RlOworICAgICAgICBhZGRWaWV3KG1VbmxvY2tTY3JlZW4pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZWNyZWF0ZVNjcmVlbnMoKSB7CisgICAgICAgIHJlY3JlYXRlTG9ja1NjcmVlbigpOworICAgICAgICByZWNyZWF0ZVVubG9ja1NjcmVlbigpOworICAgICAgICB1cGRhdGVTY3JlZW4obU1vZGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHdha2VXaGVuUmVhZHlUcShpbnQga2V5Q29kZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uV2FrZUtleSIpOworICAgICAgICBpZiAoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX01FTlUgJiYgaXNTZWN1cmUoKSAmJiAobU1vZGUgPT0gTW9kZS5Mb2NrU2NyZWVuKQorICAgICAgICAgICAgICAgICYmIChtVXBkYXRlTW9uaXRvci5nZXRTaW1TdGF0ZSgpICE9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEKSkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzd2l0Y2hpbmcgc2NyZWVucyB0byB1bmxvY2sgc2NyZWVuIGJlY2F1c2Ugd2FrZSBrZXkgd2FzIE1FTlUiKTsKKyAgICAgICAgICAgIHVwZGF0ZVNjcmVlbihNb2RlLlVubG9ja1NjcmVlbik7CisgICAgICAgICAgICBnZXRDYWxsYmFjaygpLnBva2VXYWtlbG9jaygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJwb2tpbmcgd2FrZSBsb2NrIGltbWVkaWF0ZWx5Iik7CisgICAgICAgICAgICBnZXRDYWxsYmFjaygpLnBva2VXYWtlbG9jaygpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgdmVyaWZ5VW5sb2NrKCkgeworICAgICAgICBpZiAoIWlzU2VjdXJlKCkpIHsKKyAgICAgICAgICAgIC8vIG5vbi1zZWN1cmUga2V5Z3VhcmQgc2NyZWVucyBhcmUgc3VjY2Vzc2Z1bGwgYnkgZGVmYXVsdAorICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5rZXlndWFyZERvbmUodHJ1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAobVVubG9ja1NjcmVlbk1vZGUgIT0gVW5sb2NrTW9kZS5QYXR0ZXJuKSB7CisgICAgICAgICAgICAvLyBjYW4gb25seSB2ZXJpZnkgdW5sb2NrIHdoZW4gaW4gcGF0dGVybiBtb2RlCisgICAgICAgICAgICBnZXRDYWxsYmFjaygpLmtleWd1YXJkRG9uZShmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGdvIHRvIHRoZSB1bmxvY2sgc2NyZWVuLCBzZWUgaWYgdGhleSBjYW4gdmVyaWZ5IGl0CisgICAgICAgICAgICBtSXNWZXJpZnlVbmxvY2tPbmx5ID0gdHJ1ZTsKKyAgICAgICAgICAgIHVwZGF0ZVNjcmVlbihNb2RlLlVubG9ja1NjcmVlbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjbGVhblVwKCkgeworICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtTG9ja1NjcmVlbikub25QYXVzZSgpOworICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtTG9ja1NjcmVlbikuY2xlYW5VcCgpOworICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtVW5sb2NrU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgICgoS2V5Z3VhcmRTY3JlZW4pIG1VbmxvY2tTY3JlZW4pLmNsZWFuVXAoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNTZWN1cmUoKSB7CisgICAgICAgIFVubG9ja01vZGUgdW5sb2NrTW9kZSA9IGdldFVubG9ja01vZGUoKTsKKyAgICAgICAgYm9vbGVhbiBzZWN1cmUgPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoICh1bmxvY2tNb2RlKSB7CisgICAgICAgICAgICBjYXNlIFBhdHRlcm46CisgICAgICAgICAgICAgICAgc2VjdXJlID0gbUxvY2tQYXR0ZXJuVXRpbHMuaXNMb2NrUGF0dGVybkVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltUGluOgorICAgICAgICAgICAgICAgIHNlY3VyZSA9IG1VcGRhdGVNb25pdG9yLmdldFNpbVN0YXRlKCkgPT0gSWNjQ2FyZC5TdGF0ZS5QSU5fUkVRVUlSRUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBtVXBkYXRlTW9uaXRvci5nZXRTaW1TdGF0ZSgpID09IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBY2NvdW50OgorICAgICAgICAgICAgICAgIHNlY3VyZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBhc3N3b3JkOgorICAgICAgICAgICAgICAgIHNlY3VyZSA9IG1Mb2NrUGF0dGVyblV0aWxzLmlzTG9ja1Bhc3N3b3JkRW5hYmxlZCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJ1bmtub3duIHVubG9jayBtb2RlICIgKyB1bmxvY2tNb2RlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VjdXJlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVTY3JlZW4oZmluYWwgTW9kZSBtb2RlKSB7CisKKyAgICAgICAgaWYgKERFQlVHX0NPTkZJR1VSQVRJT04pIExvZy52KFRBRywgIioqKiogVVBEQVRFIFNDUkVFTjogbW9kZT0iICsgbW9kZQorICAgICAgICAgICAgICAgICsgIiBsYXN0IG1vZGU9IiArIG1Nb2RlLCBuZXcgUnVudGltZUV4Y2VwdGlvbigpKTsKKworICAgICAgICBtTW9kZSA9IG1vZGU7CisKKyAgICAgICAgLy8gUmUtY3JlYXRlIHRoZSB1bmxvY2sgc2NyZWVuIGlmIG5lY2Vzc2FyeS4gVGhpcyBpcyBwcmltYXJpbHkgcmVxdWlyZWQgdG8gcHJvcGVybHkgaGFuZGxlCisgICAgICAgIC8vIFNJTSBzdGF0ZSBjaGFuZ2VzLiBUaGlzIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHJlc2V0KCkKKyAgICAgICAgaWYgKG1vZGUgPT0gTW9kZS5VbmxvY2tTY3JlZW4gJiYgbUN1cnJlbnRVbmxvY2tNb2RlICE9IGdldFVubG9ja01vZGUoKSkgeworICAgICAgICAgICAgcmVjcmVhdGVVbmxvY2tTY3JlZW4oKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIFZpZXcgZ29uZVNjcmVlbiA9IChtb2RlID09IE1vZGUuTG9ja1NjcmVlbikgPyBtVW5sb2NrU2NyZWVuIDogbUxvY2tTY3JlZW47CisgICAgICAgIGZpbmFsIFZpZXcgdmlzaWJsZVNjcmVlbiA9IChtb2RlID09IE1vZGUuTG9ja1NjcmVlbikgPyBtTG9ja1NjcmVlbiA6IG1VbmxvY2tTY3JlZW47CisKKyAgICAgICAgLy8gZG8gdGhpcyBiZWZvcmUgY2hhbmdpbmcgdmlzaWJpbGl0eSBzbyBmb2N1cyBpc24ndCByZXF1ZXN0ZWQgYmVmb3JlIHRoZSBpbnB1dAorICAgICAgICAvLyBmbGFnIGlzIHNldAorICAgICAgICBtV2luZG93Q29udHJvbGxlci5zZXROZWVkc0lucHV0KCgoS2V5Z3VhcmRTY3JlZW4pdmlzaWJsZVNjcmVlbikubmVlZHNJbnB1dCgpKTsKKworICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgeworICAgICAgICAgICAgTG9nLnYoVEFHLCAiR29uZT0iICsgZ29uZVNjcmVlbik7CisgICAgICAgICAgICBMb2cudihUQUcsICJWaXNpYmxlPSIgKyB2aXNpYmxlU2NyZWVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU2NyZWVuT24pIHsKKyAgICAgICAgICAgIGlmIChnb25lU2NyZWVuLmdldFZpc2liaWxpdHkoKSA9PSBWaWV3LlZJU0lCTEUpIHsKKyAgICAgICAgICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBnb25lU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmlzaWJsZVNjcmVlbi5nZXRWaXNpYmlsaXR5KCkgIT0gVmlldy5WSVNJQkxFKSB7CisgICAgICAgICAgICAgICAgKChLZXlndWFyZFNjcmVlbikgdmlzaWJsZVNjcmVlbikub25SZXN1bWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGdvbmVTY3JlZW4uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB2aXNpYmxlU2NyZWVuLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgcmVxdWVzdExheW91dCgpOworCisgICAgICAgIGlmICghdmlzaWJsZVNjcmVlbi5yZXF1ZXN0Rm9jdXMoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigia2V5Z3VhcmQgc2NyZWVuIG11c3QgYmUgYWJsZSB0byB0YWtlICIKKyAgICAgICAgICAgICAgICAgICAgKyAiZm9jdXMgd2hlbiBzaG93biAiICsgdmlzaWJsZVNjcmVlbi5nZXRDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBWaWV3IGNyZWF0ZUxvY2tTY3JlZW4oKSB7CisgICAgICAgIHJldHVybiBuZXcgTG9ja1NjcmVlbigKKyAgICAgICAgICAgICAgICBtQ29udGV4dCwKKyAgICAgICAgICAgICAgICBtQ29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscywKKyAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayk7CisgICAgfQorCisgICAgVmlldyBjcmVhdGVVbmxvY2tTY3JlZW5Gb3IoVW5sb2NrTW9kZSB1bmxvY2tNb2RlKSB7CisgICAgICAgIFZpZXcgdW5sb2NrVmlldyA9IG51bGw7CisgICAgICAgIGlmICh1bmxvY2tNb2RlID09IFVubG9ja01vZGUuUGF0dGVybikgeworICAgICAgICAgICAgUGF0dGVyblVubG9ja1NjcmVlbiB2aWV3ID0gbmV3IFBhdHRlcm5VbmxvY2tTY3JlZW4oCisgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LAorICAgICAgICAgICAgICAgICAgICBtQ29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMsCisgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLAorICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRTY3JlZW5DYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgbVVwZGF0ZU1vbml0b3IuZ2V0RmFpbGVkQXR0ZW1wdHMoKSk7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywKKyAgICAgICAgICAgICAgICAiY3JlYXRlVW5sb2NrU2NyZWVuRm9yKCIgKyB1bmxvY2tNb2RlICsgIik6IG1FbmFibGVGYWxsYmFjaz0iICsgbUVuYWJsZUZhbGxiYWNrKTsKKyAgICAgICAgICAgIHZpZXcuc2V0RW5hYmxlRmFsbGJhY2sobUVuYWJsZUZhbGxiYWNrKTsKKyAgICAgICAgICAgIHVubG9ja1ZpZXcgPSB2aWV3OworICAgICAgICB9IGVsc2UgaWYgKHVubG9ja01vZGUgPT0gVW5sb2NrTW9kZS5TaW1QaW4pIHsKKyAgICAgICAgICAgIHVubG9ja1ZpZXcgPSBuZXcgU2ltVW5sb2NrU2NyZWVuKAorICAgICAgICAgICAgICAgICAgICBtQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgbUNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLAorICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRTY3JlZW5DYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMpOworICAgICAgICB9IGVsc2UgaWYgKHVubG9ja01vZGUgPT0gVW5sb2NrTW9kZS5BY2NvdW50KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHVubG9ja1ZpZXcgPSBuZXcgQWNjb3VudFVubG9ja1NjcmVlbigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgbUNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlndWFyZFNjcmVlbkNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMpOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJDb3VsZG4ndCBpbnN0YW50aWF0ZSBBY2NvdW50VW5sb2NrU2NyZWVuIgorICAgICAgICAgICAgICAgICAgICAgICsgIiAoSUFjY291bnRzU2VydmljZSBpc24ndCBhdmFpbGFibGUpIik7CisgICAgICAgICAgICAgICAgLy8gVE9ETzogTmVlZCBhIG1vcmUgZ2VuZXJhbCB3YXkgdG8gcHJvdmlkZSBhCisgICAgICAgICAgICAgICAgLy8gcGxhdGZvcm0tc3BlY2lmaWMgZmFsbGJhY2sgVUkgaGVyZS4KKyAgICAgICAgICAgICAgICAvLyBGb3Igbm93LCBpZiB3ZSBjYW4ndCBkaXNwbGF5IHRoZSBhY2NvdW50IGxvZ2luCisgICAgICAgICAgICAgICAgLy8gdW5sb2NrIFVJLCBqdXN0IGJyaW5nIGJhY2sgdGhlIHJlZ3VsYXIgIlBhdHRlcm4iIHVubG9jayBtb2RlLgorCisgICAgICAgICAgICAgICAgLy8gKFdlIGRvIHRoaXMgYnkgc2ltcGx5IHJldHVybmluZyBhIHJlZ3VsYXIgVW5sb2NrU2NyZWVuCisgICAgICAgICAgICAgICAgLy8gaGVyZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgdXNlciB3aWxsIHN0aWxsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAvLyByZWd1bGFyIHBhdHRlcm4gdW5sb2NrIFVJLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgIC8vIG1VbmxvY2tTY3JlZW5Nb2RlIG9yIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGluIHRoZQorICAgICAgICAgICAgICAgIC8vICJwZXJtYW5lbnRseSBsb2NrZWQiIHN0YXRlLikKKyAgICAgICAgICAgICAgICB1bmxvY2tWaWV3ID0gY3JlYXRlVW5sb2NrU2NyZWVuRm9yKFVubG9ja01vZGUuUGF0dGVybik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodW5sb2NrTW9kZSA9PSBVbmxvY2tNb2RlLlBhc3N3b3JkKSB7CisgICAgICAgICAgICB1bmxvY2tWaWV3ID0gbmV3IFBhc3N3b3JkVW5sb2NrU2NyZWVuKAorICAgICAgICAgICAgICAgICAgICBtQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgbUNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLAorICAgICAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICAgICAgbUtleWd1YXJkU2NyZWVuQ2FsbGJhY2spOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biB1bmxvY2sgbW9kZSAiICsgdW5sb2NrTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgbUN1cnJlbnRVbmxvY2tNb2RlID0gdW5sb2NrTW9kZTsKKyAgICAgICAgcmV0dXJuIHVubG9ja1ZpZXc7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpbmdzLCB3aGF0IHNob3VsZCBiZSB0aGUgaW5pdGlhbCBtb2RlIG9mCisgICAgICogdGhlIGxvY2sgc2NyZWVuIChsb2NrIG9yIHVubG9jaykuCisgICAgICovCisgICAgcHJpdmF0ZSBNb2RlIGdldEluaXRpYWxNb2RlKCkgeworICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHNpbVN0YXRlID0gbVVwZGF0ZU1vbml0b3IuZ2V0U2ltU3RhdGUoKTsKKyAgICAgICAgaWYgKHN0dWNrT25Mb2NrU2NyZWVuQmVjYXVzZVNpbU1pc3NpbmcoKSB8fCAoc2ltU3RhdGUgPT0gSWNjQ2FyZC5TdGF0ZS5QVUtfUkVRVUlSRUQpKSB7CisgICAgICAgICAgICByZXR1cm4gTW9kZS5Mb2NrU2NyZWVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdyBMb2NrU2NyZWVuIGZpcnN0IGZvciBhbnkgc2NyZWVuIG90aGVyIHRoYW4gUGF0dGVybiB1bmxvY2suCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIHVzaW5nTG9ja1BhdHRlcm4gPSBtTG9ja1BhdHRlcm5VdGlscy5nZXRLZXlndWFyZFN0b3JlZFBhc3N3b3JkUXVhbGl0eSgpCisgICAgICAgICAgICAgICAgICAgID09IERldmljZVBvbGljeU1hbmFnZXIuUEFTU1dPUkRfUVVBTElUWV9TT01FVEhJTkc7CisgICAgICAgICAgICBpZiAoaXNTZWN1cmUoKSAmJiB1c2luZ0xvY2tQYXR0ZXJuKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGUuVW5sb2NrU2NyZWVuOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9kZS5Mb2NrU2NyZWVuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpbmdzLCB3aGF0IHNob3VsZCB0aGUgdW5sb2NrIHNjcmVlbiBiZT8KKyAgICAgKi8KKyAgICBwcml2YXRlIFVubG9ja01vZGUgZ2V0VW5sb2NrTW9kZSgpIHsKKyAgICAgICAgZmluYWwgSWNjQ2FyZC5TdGF0ZSBzaW1TdGF0ZSA9IG1VcGRhdGVNb25pdG9yLmdldFNpbVN0YXRlKCk7CisgICAgICAgIFVubG9ja01vZGUgY3VycmVudE1vZGU7CisgICAgICAgIGlmIChzaW1TdGF0ZSA9PSBJY2NDYXJkLlN0YXRlLlBJTl9SRVFVSVJFRCB8fCBzaW1TdGF0ZSA9PSBJY2NDYXJkLlN0YXRlLlBVS19SRVFVSVJFRCkgeworICAgICAgICAgICAgY3VycmVudE1vZGUgPSBVbmxvY2tNb2RlLlNpbVBpbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBtb2RlID0gbUxvY2tQYXR0ZXJuVXRpbHMuZ2V0S2V5Z3VhcmRTdG9yZWRQYXNzd29yZFF1YWxpdHkoKTsKKyAgICAgICAgICAgIHN3aXRjaCAobW9kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgRGV2aWNlUG9saWN5TWFuYWdlci5QQVNTV09SRF9RVUFMSVRZX05VTUVSSUM6CisgICAgICAgICAgICAgICAgY2FzZSBEZXZpY2VQb2xpY3lNYW5hZ2VyLlBBU1NXT1JEX1FVQUxJVFlfQUxQSEFCRVRJQzoKKyAgICAgICAgICAgICAgICBjYXNlIERldmljZVBvbGljeU1hbmFnZXIuUEFTU1dPUkRfUVVBTElUWV9BTFBIQU5VTUVSSUM6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlID0gVW5sb2NrTW9kZS5QYXNzd29yZDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBEZXZpY2VQb2xpY3lNYW5hZ2VyLlBBU1NXT1JEX1FVQUxJVFlfU09NRVRISU5HOgorICAgICAgICAgICAgICAgIGNhc2UgRGV2aWNlUG9saWN5TWFuYWdlci5QQVNTV09SRF9RVUFMSVRZX1VOU1BFQ0lGSUVEOgorICAgICAgICAgICAgICAgICAgICAvLyAiZm9yZ290IHBhdHRlcm4iIGJ1dHRvbiBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgcGF0dGVybiBtb2RlLi4uCisgICAgICAgICAgICAgICAgICAgIGlmIChtRm9yZ290UGF0dGVybiB8fCBtTG9ja1BhdHRlcm5VdGlscy5pc1Blcm1hbmVudGx5TG9ja2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlID0gVW5sb2NrTW9kZS5BY2NvdW50OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vZGUgPSBVbmxvY2tNb2RlLlBhdHRlcm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmtub3duIHVubG9jayBtb2RlOiIgKyBtb2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY3VycmVudE1vZGU7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNob3dUaW1lb3V0RGlhbG9nKCkgeworICAgICAgICBpbnQgdGltZW91dEluU2Vjb25kcyA9IChpbnQpIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRfVElNRU9VVF9NUyAvIDEwMDA7CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbUNvbnRleHQuZ2V0U3RyaW5nKAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLmxvY2tzY3JlZW5fdG9vX21hbnlfZmFpbGVkX2F0dGVtcHRzX2RpYWxvZ19tZXNzYWdlLAorICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldEZhaWxlZEF0dGVtcHRzKCksCisgICAgICAgICAgICAgICAgdGltZW91dEluU2Vjb25kcyk7CisgICAgICAgIGZpbmFsIEFsZXJ0RGlhbG9nIGRpYWxvZyA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKG1Db250ZXh0KQorICAgICAgICAgICAgICAgIC5zZXRUaXRsZShudWxsKQorICAgICAgICAgICAgICAgIC5zZXRNZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgLnNldE5ldXRyYWxCdXR0b24oUi5zdHJpbmcub2ssIG51bGwpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICBkaWFsb2cuZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEX0RJQUxPRyk7CisgICAgICAgIGlmICghbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX3NmX3Nsb3dCbHVyKSkgeworICAgICAgICAgICAgZGlhbG9nLmdldFdpbmRvdygpLnNldEZsYWdzKAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5ELAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5EKTsKKyAgICAgICAgfQorICAgICAgICBkaWFsb2cuc2hvdygpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzaG93QWxtb3N0QXRBY2NvdW50TG9naW5EaWFsb2coKSB7CisgICAgICAgIGludCB0aW1lb3V0SW5TZWNvbmRzID0gKGludCkgTG9ja1BhdHRlcm5VdGlscy5GQUlMRURfQVRURU1QVF9USU1FT1VUX01TIC8gMTAwMDsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtQ29udGV4dC5nZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgUi5zdHJpbmcubG9ja3NjcmVlbl9mYWlsZWRfYXR0ZW1wdHNfYWxtb3N0X2dsb2dpbiwKKyAgICAgICAgICAgICAgICBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfUkVTRVQKKyAgICAgICAgICAgICAgICAtIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VULAorICAgICAgICAgICAgICAgIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VULAorICAgICAgICAgICAgICAgIHRpbWVvdXRJblNlY29uZHMpOworICAgICAgICBmaW5hbCBBbGVydERpYWxvZyBkaWFsb2cgPSBuZXcgQWxlcnREaWFsb2cuQnVpbGRlcihtQ29udGV4dCkKKyAgICAgICAgICAgICAgICAuc2V0VGl0bGUobnVsbCkKKyAgICAgICAgICAgICAgICAuc2V0TWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgICAgIC5zZXROZXV0cmFsQnV0dG9uKFIuc3RyaW5nLm9rLCBudWxsKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKyAgICAgICAgZGlhbG9nLmdldFdpbmRvdygpLnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRF9ESUFMT0cpOworICAgICAgICBpZiAoIW1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5ib29sLmNvbmZpZ19zZl9zbG93Qmx1cikpIHsKKyAgICAgICAgICAgIGRpYWxvZy5nZXRXaW5kb3coKS5zZXRGbGFncygKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19CTFVSX0JFSElORCwKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19CTFVSX0JFSElORCk7CisgICAgICAgIH0KKyAgICAgICAgZGlhbG9nLnNob3coKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVc2VkIHRvIHB1dCB3YWxscGFwZXIgb24gdGhlIGJhY2tncm91bmQgb2YgdGhlIGxvY2sgc2NyZWVuLiAgQ2VudGVycyBpdAorICAgICAqIEhvcml6b250YWxseSBhbmQgcGlucyB0aGUgYm90dG9tIChhc3N1bWluZyB0aGF0IHRoZSBsb2NrIHNjcmVlbiBpcyBhbGlnbmVkCisgICAgICogd2l0aCB0aGUgYm90dG9tLCBzbyB0aGUgd2FsbHBhcGVyIHNob3VsZCBleHRlbmQgYWJvdmUgdGhlIHRvcCBpbnRvIHRoZQorICAgICAqIHN0YXR1cyBiYXIpLgorICAgICAqLworICAgIHN0YXRpYyBwcml2YXRlIGNsYXNzIEZhc3RCaXRtYXBEcmF3YWJsZSBleHRlbmRzIERyYXdhYmxlIHsKKyAgICAgICAgcHJpdmF0ZSBCaXRtYXAgbUJpdG1hcDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbU9wYWNpdHk7CisKKyAgICAgICAgcHJpdmF0ZSBGYXN0Qml0bWFwRHJhd2FibGUoQml0bWFwIGJpdG1hcCkgeworICAgICAgICAgICAgbUJpdG1hcCA9IGJpdG1hcDsKKyAgICAgICAgICAgIG1PcGFjaXR5ID0gbUJpdG1hcC5oYXNBbHBoYSgpID8gUGl4ZWxGb3JtYXQuVFJBTlNMVUNFTlQgOiBQaXhlbEZvcm1hdC5PUEFRVUU7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgZHJhdyhDYW52YXMgY2FudmFzKSB7CisgICAgICAgICAgICBjYW52YXMuZHJhd0JpdG1hcCgKKyAgICAgICAgICAgICAgICAgICAgbUJpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAgKGdldEJvdW5kcygpLndpZHRoKCkgLSBtQml0bWFwLmdldFdpZHRoKCkpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgKGdldEJvdW5kcygpLmhlaWdodCgpIC0gbUJpdG1hcC5nZXRIZWlnaHQoKSksCisgICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0T3BhY2l0eSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtT3BhY2l0eTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXRBbHBoYShpbnQgYWxwaGEpIHsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXRDb2xvckZpbHRlcihDb2xvckZpbHRlciBjZikgeworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW50cmluc2ljV2lkdGgoKSB7CisgICAgICAgICAgICByZXR1cm4gbUJpdG1hcC5nZXRXaWR0aCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW50cmluc2ljSGVpZ2h0KCkgeworICAgICAgICAgICAgcmV0dXJuIG1CaXRtYXAuZ2V0SGVpZ2h0KCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBnZXRNaW5pbXVtV2lkdGgoKSB7CisgICAgICAgICAgICByZXR1cm4gbUJpdG1hcC5nZXRXaWR0aCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0TWluaW11bUhlaWdodCgpIHsKKyAgICAgICAgICAgIHJldHVybiBtQml0bWFwLmdldEhlaWdodCgpOworICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3UHJvcGVydGllcy5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlld1Byb3BlcnRpZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDVhMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlld1Byb3BlcnRpZXMuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Mb2NrUGF0dGVyblV0aWxzOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkljY0NhcmQ7CisKKy8qKgorICogS25vd3MgaG93IHRvIGNyZWF0ZSBhIGxvY2sgcGF0dGVybiBrZXlndWFyZCB2aWV3LCBhbmQgYW5zd2VyIHF1ZXN0aW9ucyBhYm91dAorICogaXQgKGV2ZW4gaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCwgcGVyIHRoZSBpbnRlcmZhY2Ugc3BlY3MpLgorICovCitwdWJsaWMgY2xhc3MgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdQcm9wZXJ0aWVzIGltcGxlbWVudHMgS2V5Z3VhcmRWaWV3UHJvcGVydGllcyB7CisKKyAgICBwcml2YXRlIGZpbmFsIExvY2tQYXR0ZXJuVXRpbHMgbUxvY2tQYXR0ZXJuVXRpbHM7CisgICAgcHJpdmF0ZSBmaW5hbCBLZXlndWFyZFVwZGF0ZU1vbml0b3IgbVVwZGF0ZU1vbml0b3I7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gbG9ja1BhdHRlcm5VdGlscyBVc2VkIHRvIGtub3cgd2hldGhlciB0aGUgcGF0dGVybiBlbmFibGVkLCBhbmQgcGFzc2VkCisgICAgICogICBvbnRvIHRoZSBrZXlnYXVyZCB2aWV3IHdoZW4gaXQgaXMgY3JlYXRlZC4KKyAgICAgKiBAcGFyYW0gdXBkYXRlTW9uaXRvciBVc2VkIHRvIGtub3cgd2hldGhlciB0aGUgc2ltIHBpbiBpcyBlbmFibGVkLCBhbmQgcGFzc2VkCisgICAgICogICBvbnRvIHRoZSBrZXlndWFyZCB2aWV3IHdoZW4gaXQgaXMgY3JlYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdQcm9wZXJ0aWVzKExvY2tQYXR0ZXJuVXRpbHMgbG9ja1BhdHRlcm5VdGlscywKKyAgICAgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yKSB7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbG9ja1BhdHRlcm5VdGlsczsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IgPSB1cGRhdGVNb25pdG9yOworICAgIH0KKworICAgIHB1YmxpYyBLZXlndWFyZFZpZXdCYXNlIGNyZWF0ZUtleWd1YXJkVmlldyhDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgIEtleWd1YXJkV2luZG93Q29udHJvbGxlciBjb250cm9sbGVyKSB7CisgICAgICAgIHJldHVybiBuZXcgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcoY29udGV4dCwgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscywgY29udHJvbGxlcik7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNTZWN1cmUoKSB7CisgICAgICAgIHJldHVybiBtTG9ja1BhdHRlcm5VdGlscy5pc1NlY3VyZSgpIHx8IGlzU2ltUGluU2VjdXJlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGlzU2ltUGluU2VjdXJlKCkgeworICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHNpbVN0YXRlID0gbVVwZGF0ZU1vbml0b3IuZ2V0U2ltU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuIChzaW1TdGF0ZSA9PSBJY2NDYXJkLlN0YXRlLlBJTl9SRVFVSVJFRCB8fCBzaW1TdGF0ZSA9PSBJY2NDYXJkLlN0YXRlLlBVS19SRVFVSVJFRAorICAgICAgICAgICAgfHwgc2ltU3RhdGUgPT0gSWNjQ2FyZC5TdGF0ZS5BQlNFTlQpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrU2NyZWVuLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tTY3JlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWVmMWZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrU2NyZWVuLmphdmEKQEAgLTAsMCArMSw2ODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuU2xpZGluZ1RhYjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0OworaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuKjsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbVByb3BlcnRpZXM7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworLyoqCisgKiBUaGUgc2NyZWVuIHdpdGhpbiB7QGxpbmsgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXd9IHRoYXQgc2hvd3MgZ2VuZXJhbAorICogaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZSBkZXBlbmRpbmcgb24gaXRzIHN0YXRlLCBhbmQgaG93IHRvIGdldAorICogcGFzdCBpdCwgYXMgYXBwbGljYWJsZS4KKyAqLworY2xhc3MgTG9ja1NjcmVlbiBleHRlbmRzIExpbmVhckxheW91dCBpbXBsZW1lbnRzIEtleWd1YXJkU2NyZWVuLCBLZXlndWFyZFVwZGF0ZU1vbml0b3IuSW5mb0NhbGxiYWNrLAorICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IuU2ltU3RhdGVDYWxsYmFjaywgU2xpZGluZ1RhYi5PblRyaWdnZXJMaXN0ZW5lciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERCRyA9IGZhbHNlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTG9ja1NjcmVlbiI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVOQUJMRV9NRU5VX0tFWV9GSUxFID0gIi9kYXRhL2xvY2FsL2VuYWJsZV9tZW51X2tleSI7CisKKyAgICBwcml2YXRlIFN0YXR1cyBtU3RhdHVzID0gU3RhdHVzLk5vcm1hbDsKKworICAgIHByaXZhdGUgZmluYWwgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkVXBkYXRlTW9uaXRvciBtVXBkYXRlTW9uaXRvcjsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkU2NyZWVuQ2FsbGJhY2sgbUNhbGxiYWNrOworCisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQ2FycmllcjsKKyAgICBwcml2YXRlIFNsaWRpbmdUYWIgbVNlbGVjdG9yOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVRpbWU7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtRGF0ZTsKKyAgICBwcml2YXRlIFRleHRWaWV3IG1TdGF0dXMxOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVN0YXR1czI7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtU2NyZWVuTG9ja2VkOworICAgIHByaXZhdGUgVGV4dFZpZXcgbUVtZXJnZW5jeUNhbGxUZXh0OworICAgIHByaXZhdGUgQnV0dG9uIG1FbWVyZ2VuY3lDYWxsQnV0dG9uOworCisgICAgLy8gY3VycmVudCBjb25maWd1cmF0aW9uIHN0YXRlIG9mIGtleWJvYXJkIGFuZCBkaXNwbGF5CisgICAgcHJpdmF0ZSBpbnQgbUtleWJvYXJkSGlkZGVuOworICAgIHByaXZhdGUgaW50IG1DcmVhdGlvbk9yaWVudGF0aW9uOworCisgICAgLy8gYXJlIHdlIHNob3dpbmcgYmF0dGVyeSBpbmZvcm1hdGlvbj8KKyAgICBwcml2YXRlIGJvb2xlYW4gbVNob3dpbmdCYXR0ZXJ5SW5mbyA9IGZhbHNlOworCisgICAgLy8gbGFzdCBrbm93biBwbHVnZ2VkIGluIHN0YXRlCisgICAgcHJpdmF0ZSBib29sZWFuIG1QbHVnZ2VkSW4gPSBmYWxzZTsKKworICAgIC8vIGxhc3Qga25vd24gYmF0dGVyeSBsZXZlbAorICAgIHByaXZhdGUgaW50IG1CYXR0ZXJ5TGV2ZWwgPSAxMDA7CisKKyAgICBwcml2YXRlIFN0cmluZyBtTmV4dEFsYXJtID0gbnVsbDsKKyAgICBwcml2YXRlIERyYXdhYmxlIG1BbGFybUljb24gPSBudWxsOworICAgIHByaXZhdGUgU3RyaW5nIG1DaGFyZ2luZyA9IG51bGw7CisgICAgcHJpdmF0ZSBEcmF3YWJsZSBtQ2hhcmdpbmdJY29uID0gbnVsbDsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtU2lsZW50TW9kZTsKKyAgICBwcml2YXRlIEF1ZGlvTWFuYWdlciBtQXVkaW9NYW5hZ2VyOworICAgIHByaXZhdGUgU3RyaW5nIG1EYXRlRm9ybWF0U3RyaW5nOworICAgIHByaXZhdGUgamF2YS50ZXh0LkRhdGVGb3JtYXQgbVRpbWVGb3JtYXQ7CisgICAgcHJpdmF0ZSBib29sZWFuIG1FbmFibGVNZW51S2V5SW5Mb2NrU2NyZWVuOworCisgICAgLyoqCisgICAgICogVGhlIHN0YXR1cyBvZiB0aGlzIGxvY2sgc2NyZWVuLgorICAgICAqLworICAgIGVudW0gU3RhdHVzIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIE5vcm1hbCBjYXNlIChzaW0gY2FyZCBwcmVzZW50LCBpdCdzIG5vdCBsb2NrZWQpCisgICAgICAgICAqLworICAgICAgICBOb3JtYWwodHJ1ZSksCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBzaW0gY2FyZCBpcyAnbmV0d29yayBsb2NrZWQnLgorICAgICAgICAgKi8KKyAgICAgICAgTmV0d29ya0xvY2tlZCh0cnVlKSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHNpbSBjYXJkIGlzIG1pc3NpbmcuCisgICAgICAgICAqLworICAgICAgICBTaW1NaXNzaW5nKGZhbHNlKSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHNpbSBjYXJkIGlzIG1pc3NpbmcsIGFuZCB0aGlzIGlzIHRoZSBkZXZpY2UgaXNuJ3QgcHJvdmlzaW9uZWQsIHNvIHdlIGRvbid0IGxldAorICAgICAgICAgKiB0aGVtIGdldCBwYXN0IHRoZSBzY3JlZW4uCisgICAgICAgICAqLworICAgICAgICBTaW1NaXNzaW5nTG9ja2VkKGZhbHNlKSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHNpbSBjYXJkIGlzIFBVSyBsb2NrZWQsIG1lYW5pbmcgdGhleSd2ZSBlbnRlcmVkIHRoZSB3cm9uZyBzaW0gdW5sb2NrIGNvZGUgdG9vIG1hbnkKKyAgICAgICAgICogdGltZXMuCisgICAgICAgICAqLworICAgICAgICBTaW1QdWtMb2NrZWQoZmFsc2UpLAorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgc2ltIGNhcmQgaXMgbG9ja2VkLgorICAgICAgICAgKi8KKyAgICAgICAgU2ltTG9ja2VkKHRydWUpOworCisgICAgICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtU2hvd1N0YXR1c0xpbmVzOworCisgICAgICAgIFN0YXR1cyhib29sZWFuIG1TaG93U3RhdHVzTGluZXMpIHsKKyAgICAgICAgICAgIHRoaXMubVNob3dTdGF0dXNMaW5lcyA9IG1TaG93U3RhdHVzTGluZXM7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBzdGF0dXMgbGluZXMgKGJhdHRlcnkgbGV2ZWwgYW5kIC8gb3IgbmV4dCBhbGFybSkgYXJlIHNob3duIHdoaWxlCisgICAgICAgICAqICAgICAgICAgaW4gdGhpcyBzdGF0ZS4gIE1vc3RseSBkaWN0YXRlZCBieSB3aGV0aGVyIHRoaXMgaXMgcm9vbSBmb3IgdGhlbS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dTdGF0dXNMaW5lcygpIHsKKyAgICAgICAgICAgIHJldHVybiBtU2hvd1N0YXR1c0xpbmVzOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSW4gZ2VuZXJhbCwgd2UgZW5hYmxlIHVubG9ja2luZyB0aGUgaW5zZWN1cmUga2V5IGd1YXJkIHdpdGggdGhlIG1lbnUga2V5LiBIb3dldmVyLCB0aGVyZSBhcmUKKyAgICAgKiBzb21lIGNhc2VzIHdoZXJlIHdlIHdpc2ggdG8gZGlzYWJsZSBpdCwgbm90YWJseSB3aGVuIHRoZSBtZW51IGJ1dHRvbiBwbGFjZW1lbnQgb3IgdGVjaG5vbG9neQorICAgICAqIGlzIHByb25lIHRvIGZhbHNlIHBvc2l0aXZlcy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbWVudSBrZXkgc2hvdWxkIGJlIGVuYWJsZWQKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gc2hvdWxkRW5hYmxlTWVudUtleSgpIHsKKyAgICAgICAgZmluYWwgUmVzb3VyY2VzIHJlcyA9IGdldFJlc291cmNlcygpOworICAgICAgICBmaW5hbCBib29sZWFuIGNvbmZpZ0Rpc2FibGVkID0gcmVzLmdldEJvb2xlYW4oUi5ib29sLmNvbmZpZ19kaXNhYmxlTWVudUtleUluTG9ja1NjcmVlbik7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNNb25rZXkgPSBTeXN0ZW1Qcm9wZXJ0aWVzLmdldEJvb2xlYW4oInJvLm1vbmtleSIsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBmaWxlT3ZlcnJpZGUgPSAobmV3IEZpbGUoRU5BQkxFX01FTlVfS0VZX0ZJTEUpKS5leGlzdHMoKTsKKyAgICAgICAgcmV0dXJuICFjb25maWdEaXNhYmxlZCB8fCBpc01vbmtleSB8fCBmaWxlT3ZlcnJpZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIGNvbnRleHQgVXNlZCB0byBzZXR1cCB0aGUgdmlldy4KKyAgICAgKiBAcGFyYW0gY29uZmlndXJhdGlvbiBUaGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBVc2VkIHRvIHVzZSB3aGVuIHNlbGVjdGluZyBsYXlvdXQsIGV0Yy4KKyAgICAgKiBAcGFyYW0gbG9ja1BhdHRlcm5VdGlscyBVc2VkIHRvIGtub3cgdGhlIHN0YXRlIG9mIHRoZSBsb2NrIHBhdHRlcm4gc2V0dGluZ3MuCisgICAgICogQHBhcmFtIHVwZGF0ZU1vbml0b3IgVXNlZCB0byByZWdpc3RlciBmb3IgdXBkYXRlcyBvbiB2YXJpb3VzIGtleWd1YXJkIHJlbGF0ZWQKKyAgICAgKiAgICBzdGF0ZSwgYW5kIHF1ZXJ5IHRoZSBpbml0aWFsIHN0YXRlIGF0IHNldHVwLgorICAgICAqIEBwYXJhbSBjYWxsYmFjayBVc2VkIHRvIGNvbW11bmljYXRlIGJhY2sgdG8gdGhlIGhvc3Qga2V5Z3VhcmQgdmlldy4KKyAgICAgKi8KKyAgICBMb2NrU2NyZWVuKENvbnRleHQgY29udGV4dCwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBMb2NrUGF0dGVyblV0aWxzIGxvY2tQYXR0ZXJuVXRpbHMsCisgICAgICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgIEtleWd1YXJkU2NyZWVuQ2FsbGJhY2sgY2FsbGJhY2spIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbG9ja1BhdHRlcm5VdGlsczsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IgPSB1cGRhdGVNb25pdG9yOworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgICAgICBtRW5hYmxlTWVudUtleUluTG9ja1NjcmVlbiA9IHNob3VsZEVuYWJsZU1lbnVLZXkoKTsKKworICAgICAgICBtQ3JlYXRpb25PcmllbnRhdGlvbiA9IGNvbmZpZ3VyYXRpb24ub3JpZW50YXRpb247CisKKyAgICAgICAgbUtleWJvYXJkSGlkZGVuID0gY29uZmlndXJhdGlvbi5oYXJkS2V5Ym9hcmRIaWRkZW47CisKKyAgICAgICAgaWYgKExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LkRFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIioqKioqIENSRUFUSU5HIExPQ0sgU0NSRUVOIiwgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKSk7CisgICAgICAgICAgICBMb2cudihUQUcsICJDdXIgb3JpZW50PSIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICArICIgcmVzIG9yaWVudD0iICsgY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCkub3JpZW50YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgTGF5b3V0SW5mbGF0ZXIgaW5mbGF0ZXIgPSBMYXlvdXRJbmZsYXRlci5mcm9tKGNvbnRleHQpOworICAgICAgICBpZiAoREJHKSBMb2cudihUQUcsICJDcmVhdGlvbiBvcmllbnRhdGlvbiA9ICIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbik7CisgICAgICAgIGlmIChtQ3JlYXRpb25PcmllbnRhdGlvbiAhPSBDb25maWd1cmF0aW9uLk9SSUVOVEFUSU9OX0xBTkRTQ0FQRSkgeworICAgICAgICAgICAgaW5mbGF0ZXIuaW5mbGF0ZShSLmxheW91dC5rZXlndWFyZF9zY3JlZW5fdGFiX3VubG9jaywgdGhpcywgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbmZsYXRlci5pbmZsYXRlKFIubGF5b3V0LmtleWd1YXJkX3NjcmVlbl90YWJfdW5sb2NrX2xhbmQsIHRoaXMsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgbUNhcnJpZXIgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmNhcnJpZXIpOworICAgICAgICAvLyBSZXF1aXJlZCBmb3IgTWFycXVlZSB0byB3b3JrCisgICAgICAgIG1DYXJyaWVyLnNldFNlbGVjdGVkKHRydWUpOworICAgICAgICBtQ2Fycmllci5zZXRUZXh0Q29sb3IoMHhmZmZmZmZmZik7CisKKyAgICAgICAgbURhdGUgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmRhdGUpOworICAgICAgICBtU3RhdHVzMSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuc3RhdHVzMSk7CisgICAgICAgIG1TdGF0dXMyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5zdGF0dXMyKTsKKworICAgICAgICBtU2NyZWVuTG9ja2VkID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5zY3JlZW5Mb2NrZWQpOworICAgICAgICBtU2VsZWN0b3IgPSAoU2xpZGluZ1RhYikgZmluZFZpZXdCeUlkKFIuaWQudGFiX3NlbGVjdG9yKTsKKyAgICAgICAgbVNlbGVjdG9yLnNldEhvbGRBZnRlclRyaWdnZXIodHJ1ZSwgZmFsc2UpOworICAgICAgICBtU2VsZWN0b3Iuc2V0TGVmdEhpbnRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fdW5sb2NrX2xhYmVsKTsKKworICAgICAgICBtRW1lcmdlbmN5Q2FsbFRleHQgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmVtZXJnZW5jeUNhbGxUZXh0KTsKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24gPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5lbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24uc2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX2VtZXJnZW5jeV9jYWxsKTsKKworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUNhbGxCdXR0b24pOworICAgICAgICBtRW1lcmdlbmN5Q2FsbEJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IFZpZXcuT25DbGlja0xpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sudGFrZUVtZXJnZW5jeUNhbGxBY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKworICAgICAgICBzZXRGb2N1c2FibGUodHJ1ZSk7CisgICAgICAgIHNldEZvY3VzYWJsZUluVG91Y2hNb2RlKHRydWUpOworICAgICAgICBzZXREZXNjZW5kYW50Rm9jdXNhYmlsaXR5KFZpZXdHcm91cC5GT0NVU19CTE9DS19ERVNDRU5EQU5UUyk7CisKKyAgICAgICAgdXBkYXRlTW9uaXRvci5yZWdpc3RlckluZm9DYWxsYmFjayh0aGlzKTsKKyAgICAgICAgdXBkYXRlTW9uaXRvci5yZWdpc3RlclNpbVN0YXRlQ2FsbGJhY2sodGhpcyk7CisKKyAgICAgICAgbUF1ZGlvTWFuYWdlciA9IChBdWRpb01hbmFnZXIpIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQVVESU9fU0VSVklDRSk7CisgICAgICAgIG1TaWxlbnRNb2RlID0gaXNTaWxlbnRNb2RlKCk7CisKKyAgICAgICAgbVNlbGVjdG9yLnNldExlZnRUYWJSZXNvdXJjZXMoCisgICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5pY19qb2dfZGlhbF91bmxvY2ssCisgICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5qb2dfdGFiX3RhcmdldF9ncmVlbiwKKyAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmpvZ190YWJfYmFyX2xlZnRfdW5sb2NrLAorICAgICAgICAgICAgICAgIFIuZHJhd2FibGUuam9nX3RhYl9sZWZ0X3VubG9jayk7CisKKyAgICAgICAgdXBkYXRlUmlnaHRUYWJSZXNvdXJjZXMoKTsKKworICAgICAgICBtU2VsZWN0b3Iuc2V0T25UcmlnZ2VyTGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgcmVzZXRTdGF0dXNJbmZvKHVwZGF0ZU1vbml0b3IpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc1NpbGVudE1vZGUoKSB7CisgICAgICAgIHJldHVybiBtQXVkaW9NYW5hZ2VyLmdldFJpbmdlck1vZGUoKSAhPSBBdWRpb01hbmFnZXIuUklOR0VSX01PREVfTk9STUFMOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVSaWdodFRhYlJlc291cmNlcygpIHsKKyAgICAgICAgYm9vbGVhbiB2aWJlID0gbVNpbGVudE1vZGUKKyAgICAgICAgICAgICYmIChtQXVkaW9NYW5hZ2VyLmdldFJpbmdlck1vZGUoKSA9PSBBdWRpb01hbmFnZXIuUklOR0VSX01PREVfVklCUkFURSk7CisKKyAgICAgICAgbVNlbGVjdG9yLnNldFJpZ2h0VGFiUmVzb3VyY2VzKAorICAgICAgICAgICAgICAgIG1TaWxlbnRNb2RlID8gKCB2aWJlID8gUi5kcmF3YWJsZS5pY19qb2dfZGlhbF92aWJyYXRlX29uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmljX2pvZ19kaWFsX3NvdW5kX29mZiApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmljX2pvZ19kaWFsX3NvdW5kX29uLAorICAgICAgICAgICAgICAgIG1TaWxlbnRNb2RlID8gUi5kcmF3YWJsZS5qb2dfdGFiX3RhcmdldF95ZWxsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFIuZHJhd2FibGUuam9nX3RhYl90YXJnZXRfZ3JheSwKKyAgICAgICAgICAgICAgICBtU2lsZW50TW9kZSA/IFIuZHJhd2FibGUuam9nX3RhYl9iYXJfcmlnaHRfc291bmRfb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFIuZHJhd2FibGUuam9nX3RhYl9iYXJfcmlnaHRfc291bmRfb2ZmLAorICAgICAgICAgICAgICAgIG1TaWxlbnRNb2RlID8gUi5kcmF3YWJsZS5qb2dfdGFiX3JpZ2h0X3NvdW5kX29uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmpvZ190YWJfcmlnaHRfc291bmRfb2ZmKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmVzZXRTdGF0dXNJbmZvKEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yKSB7CisgICAgICAgIG1TaG93aW5nQmF0dGVyeUluZm8gPSB1cGRhdGVNb25pdG9yLnNob3VsZFNob3dCYXR0ZXJ5SW5mbygpOworICAgICAgICBtUGx1Z2dlZEluID0gdXBkYXRlTW9uaXRvci5pc0RldmljZVBsdWdnZWRJbigpOworICAgICAgICBtQmF0dGVyeUxldmVsID0gdXBkYXRlTW9uaXRvci5nZXRCYXR0ZXJ5TGV2ZWwoKTsKKworICAgICAgICBtU3RhdHVzID0gZ2V0Q3VycmVudFN0YXR1cyh1cGRhdGVNb25pdG9yLmdldFNpbVN0YXRlKCkpOworICAgICAgICB1cGRhdGVMYXlvdXQobVN0YXR1cyk7CisKKyAgICAgICAgcmVmcmVzaEJhdHRlcnlTdHJpbmdBbmRJY29uKCk7CisgICAgICAgIHJlZnJlc2hBbGFybURpc3BsYXkoKTsKKworICAgICAgICBtVGltZUZvcm1hdCA9IERhdGVGb3JtYXQuZ2V0VGltZUZvcm1hdChnZXRDb250ZXh0KCkpOworICAgICAgICBtRGF0ZUZvcm1hdFN0cmluZyA9IGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcuZnVsbF93ZGF5X21vbnRoX2RheV9ub195ZWFyKTsKKyAgICAgICAgcmVmcmVzaFRpbWVBbmREYXRlRGlzcGxheSgpOworICAgICAgICB1cGRhdGVTdGF0dXNMaW5lcygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIG9uS2V5RG93bihpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9NRU5VICYmIG1FbmFibGVNZW51S2V5SW5Mb2NrU2NyZWVuKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2suZ29Ub1VubG9ja1NjcmVlbigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uVHJpZ2dlcihWaWV3IHYsIGludCB3aGljaEhhbmRsZSkgeworICAgICAgICBpZiAod2hpY2hIYW5kbGUgPT0gU2xpZGluZ1RhYi5PblRyaWdnZXJMaXN0ZW5lci5MRUZUX0hBTkRMRSkgeworICAgICAgICAgICAgbUNhbGxiYWNrLmdvVG9VbmxvY2tTY3JlZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmICh3aGljaEhhbmRsZSA9PSBTbGlkaW5nVGFiLk9uVHJpZ2dlckxpc3RlbmVyLlJJR0hUX0hBTkRMRSkgeworICAgICAgICAgICAgLy8gdG9nZ2xlIHNpbGVudCBtb2RlCisgICAgICAgICAgICBtU2lsZW50TW9kZSA9ICFtU2lsZW50TW9kZTsKKyAgICAgICAgICAgIGlmIChtU2lsZW50TW9kZSkgeworICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gdmliZSA9IChTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KAorICAgICAgICAgICAgICAgICAgICBnZXRDb250ZXh0KCkuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5WSUJSQVRFX0lOX1NJTEVOVCwgMSkgPT0gMSk7CisKKyAgICAgICAgICAgICAgICBtQXVkaW9NYW5hZ2VyLnNldFJpbmdlck1vZGUodmliZQorICAgICAgICAgICAgICAgICAgICA/IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFCisgICAgICAgICAgICAgICAgICAgIDogQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX1NJTEVOVCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1BdWRpb01hbmFnZXIuc2V0UmluZ2VyTW9kZShBdWRpb01hbmFnZXIuUklOR0VSX01PREVfTk9STUFMKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlUmlnaHRUYWJSZXNvdXJjZXMoKTsKKworICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtU2lsZW50TW9kZSA/CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFsX2FjdGlvbl9zaWxlbnRfbW9kZV9vbl9zdGF0dXMpIDoKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5nbG9iYWxfYWN0aW9uX3NpbGVudF9tb2RlX29mZl9zdGF0dXMpOworCisgICAgICAgICAgICBmaW5hbCBpbnQgdG9hc3RJY29uID0gbVNpbGVudE1vZGUKKyAgICAgICAgICAgICAgICA/IFIuZHJhd2FibGUuaWNfbG9ja19yaW5nZXJfb2ZmCisgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmljX2xvY2tfcmluZ2VyX29uOworCisgICAgICAgICAgICBmaW5hbCBpbnQgdG9hc3RDb2xvciA9IG1TaWxlbnRNb2RlCisgICAgICAgICAgICAgICAgPyBnZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCkuZ2V0Q29sb3IoUi5jb2xvci5rZXlndWFyZF90ZXh0X2NvbG9yX3NvdW5kb2ZmKQorICAgICAgICAgICAgICAgIDogZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldENvbG9yKFIuY29sb3Iua2V5Z3VhcmRfdGV4dF9jb2xvcl9zb3VuZG9uKTsKKyAgICAgICAgICAgIHRvYXN0TWVzc2FnZShtU2NyZWVuTG9ja2VkLCBtZXNzYWdlLCB0b2FzdENvbG9yLCB0b2FzdEljb24pOworICAgICAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jaygpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvbkdyYWJiZWRTdGF0ZUNoYW5nZShWaWV3IHYsIGludCBncmFiYmVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGdyYWJiZWRTdGF0ZSA9PSBTbGlkaW5nVGFiLk9uVHJpZ2dlckxpc3RlbmVyLlJJR0hUX0hBTkRMRSkgeworICAgICAgICAgICAgbVNpbGVudE1vZGUgPSBpc1NpbGVudE1vZGUoKTsKKyAgICAgICAgICAgIG1TZWxlY3Rvci5zZXRSaWdodEhpbnRUZXh0KG1TaWxlbnRNb2RlID8gUi5zdHJpbmcubG9ja3NjcmVlbl9zb3VuZF9vbl9sYWJlbAorICAgICAgICAgICAgICAgICAgICA6IFIuc3RyaW5nLmxvY2tzY3JlZW5fc291bmRfb2ZmX2xhYmVsKTsKKyAgICAgICAgfQorICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGlzcGxheXMgYSBtZXNzYWdlIGluIGEgdGV4dCB2aWV3IGFuZCB0aGVuIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB0ZXh0LgorICAgICAqIEBwYXJhbSB0ZXh0VmlldyBUaGUgdGV4dCB2aWV3LgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBjb2xvciBUaGUgY29sb3IgdG8gYXBwbHkgdG8gdGhlIHRleHQsIG9yIDAgaWYgdGhlIGV4aXN0aW5nIGNvbG9yIHNob3VsZCBiZSB1c2VkLgorICAgICAqIEBwYXJhbSBpY29uUmVzb3VyY2VJZCBUaGUgbGVmdCBoYW5kIGljb24uCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHRvYXN0TWVzc2FnZShmaW5hbCBUZXh0VmlldyB0ZXh0VmlldywgZmluYWwgU3RyaW5nIHRleHQsIGZpbmFsIGludCBjb2xvciwgZmluYWwgaW50IGljb25SZXNvdXJjZUlkKSB7CisgICAgICAgIGlmIChtUGVuZGluZ1IxICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRleHRWaWV3LnJlbW92ZUNhbGxiYWNrcyhtUGVuZGluZ1IxKTsKKyAgICAgICAgICAgIG1QZW5kaW5nUjEgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChtUGVuZGluZ1IyICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1QZW5kaW5nUjIucnVuKCk7IC8vIGZpcmUgaW1tZWRpYXRlbHksIHJlc3RvcmluZyBub24tdG9hc3RlZCBhcHBlYXJhbmNlCisgICAgICAgICAgICB0ZXh0Vmlldy5yZW1vdmVDYWxsYmFja3MobVBlbmRpbmdSMik7CisgICAgICAgICAgICBtUGVuZGluZ1IyID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIFN0cmluZyBvbGRUZXh0ID0gdGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCk7CisgICAgICAgIGZpbmFsIENvbG9yU3RhdGVMaXN0IG9sZENvbG9ycyA9IHRleHRWaWV3LmdldFRleHRDb2xvcnMoKTsKKworICAgICAgICBtUGVuZGluZ1IxID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIHRleHRWaWV3LnNldFRleHQodGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dFZpZXcuc2V0VGV4dENvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4dFZpZXcuc2V0Q29tcG91bmREcmF3YWJsZXNXaXRoSW50cmluc2ljQm91bmRzKGljb25SZXNvdXJjZUlkLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICB0ZXh0Vmlldy5wb3N0RGVsYXllZChtUGVuZGluZ1IxLCAwKTsKKyAgICAgICAgbVBlbmRpbmdSMiA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICB0ZXh0Vmlldy5zZXRUZXh0KG9sZFRleHQpOworICAgICAgICAgICAgICAgIHRleHRWaWV3LnNldFRleHRDb2xvcihvbGRDb2xvcnMpOworICAgICAgICAgICAgICAgIHRleHRWaWV3LnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcygwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgdGV4dFZpZXcucG9zdERlbGF5ZWQobVBlbmRpbmdSMiwgMzUwMCk7CisgICAgfQorICAgIHByaXZhdGUgUnVubmFibGUgbVBlbmRpbmdSMTsKKyAgICBwcml2YXRlIFJ1bm5hYmxlIG1QZW5kaW5nUjI7CisKKyAgICBwcml2YXRlIHZvaWQgcmVmcmVzaEFsYXJtRGlzcGxheSgpIHsKKyAgICAgICAgbU5leHRBbGFybSA9IG1Mb2NrUGF0dGVyblV0aWxzLmdldE5leHRBbGFybSgpOworICAgICAgICBpZiAobU5leHRBbGFybSAhPSBudWxsKSB7CisgICAgICAgICAgICBtQWxhcm1JY29uID0gZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldERyYXdhYmxlKFIuZHJhd2FibGUuaWNfbG9ja19pZGxlX2FsYXJtKTsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVTdGF0dXNMaW5lcygpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25SZWZyZXNoQmF0dGVyeUluZm8oYm9vbGVhbiBzaG93QmF0dGVyeUluZm8sIGJvb2xlYW4gcGx1Z2dlZEluLAorICAgICAgICAgICAgaW50IGJhdHRlcnlMZXZlbCkgeworICAgICAgICBpZiAoREJHKSBMb2cuZChUQUcsICJvblJlZnJlc2hCYXR0ZXJ5SW5mbygiICsgc2hvd0JhdHRlcnlJbmZvICsgIiwgIiArIHBsdWdnZWRJbiArICIpIik7CisgICAgICAgIG1TaG93aW5nQmF0dGVyeUluZm8gPSBzaG93QmF0dGVyeUluZm87CisgICAgICAgIG1QbHVnZ2VkSW4gPSBwbHVnZ2VkSW47CisgICAgICAgIG1CYXR0ZXJ5TGV2ZWwgPSBiYXR0ZXJ5TGV2ZWw7CisKKyAgICAgICAgcmVmcmVzaEJhdHRlcnlTdHJpbmdBbmRJY29uKCk7CisgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlZnJlc2hCYXR0ZXJ5U3RyaW5nQW5kSWNvbigpIHsKKyAgICAgICAgaWYgKCFtU2hvd2luZ0JhdHRlcnlJbmZvKSB7CisgICAgICAgICAgICBtQ2hhcmdpbmcgPSBudWxsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1DaGFyZ2luZ0ljb24gPT0gbnVsbCkgeworICAgICAgICAgICAgbUNoYXJnaW5nSWNvbiA9CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZShSLmRyYXdhYmxlLmljX2xvY2tfaWRsZV9jaGFyZ2luZyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVBsdWdnZWRJbikgeworICAgICAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWwgPj0gMTAwKSB7CisgICAgICAgICAgICAgICAgbUNoYXJnaW5nID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5sb2Nrc2NyZWVuX2NoYXJnZWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQ2hhcmdpbmcgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fcGx1Z2dlZF9pbiwgbUJhdHRlcnlMZXZlbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQ2hhcmdpbmcgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fbG93X2JhdHRlcnkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblRpbWVDaGFuZ2VkKCkgeworICAgICAgICByZWZyZXNoVGltZUFuZERhdGVEaXNwbGF5KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlZnJlc2hUaW1lQW5kRGF0ZURpc3BsYXkoKSB7CisgICAgICAgIG1EYXRlLnNldFRleHQoRGF0ZUZvcm1hdC5mb3JtYXQobURhdGVGb3JtYXRTdHJpbmcsIG5ldyBEYXRlKCkpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU3RhdHVzTGluZXMoKSB7CisgICAgICAgIGlmICghbVN0YXR1cy5zaG93U3RhdHVzTGluZXMoKQorICAgICAgICAgICAgICAgIHx8IChtQ2hhcmdpbmcgPT0gbnVsbCAmJiBtTmV4dEFsYXJtID09IG51bGwpKSB7CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICB9IGVsc2UgaWYgKG1DaGFyZ2luZyAhPSBudWxsICYmIG1OZXh0QWxhcm0gPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gY2hhcmdpbmcgb25seQorICAgICAgICAgICAgbVN0YXR1czEuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVN0YXR1czIuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQobUNoYXJnaW5nKTsKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcyhtQ2hhcmdpbmdJY29uLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgfSBlbHNlIGlmIChtTmV4dEFsYXJtICE9IG51bGwgJiYgbUNoYXJnaW5nID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIG5leHQgYWxhcm0gb25seQorICAgICAgICAgICAgbVN0YXR1czEuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVN0YXR1czIuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQobU5leHRBbGFybSk7CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMobUFsYXJtSWNvbiwgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgIH0gZWxzZSBpZiAobUNoYXJnaW5nICE9IG51bGwgJiYgbU5leHRBbGFybSAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBib3RoIGNoYXJnaW5nIGFuZCBuZXh0IGFsYXJtCisgICAgICAgICAgICBtU3RhdHVzMS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICBtU3RhdHVzMi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQobUNoYXJnaW5nKTsKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcyhtQ2hhcmdpbmdJY29uLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFRleHQobU5leHRBbGFybSk7CisgICAgICAgICAgICBtU3RhdHVzMi5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMobUFsYXJtSWNvbiwgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uUmVmcmVzaENhcnJpZXJJbmZvKENoYXJTZXF1ZW5jZSBwbG1uLCBDaGFyU2VxdWVuY2Ugc3BuKSB7CisgICAgICAgIGlmIChEQkcpIExvZy5kKFRBRywgIm9uUmVmcmVzaENhcnJpZXJJbmZvKCIgKyBwbG1uICsgIiwgIiArIHNwbiArICIpIik7CisgICAgICAgIHVwZGF0ZUxheW91dChtU3RhdHVzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBsb2NrIHNjcmVlbiBnaXZlbiB0aGUgc2ltIHN0YXRlIGFuZCBvdGhlciBzdHVmZi4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0YXR1cyBnZXRDdXJyZW50U3RhdHVzKEljY0NhcmQuU3RhdGUgc2ltU3RhdGUpIHsKKyAgICAgICAgYm9vbGVhbiBtaXNzaW5nQW5kTm90UHJvdmlzaW9uZWQgPSAoIW1VcGRhdGVNb25pdG9yLmlzRGV2aWNlUHJvdmlzaW9uZWQoKQorICAgICAgICAgICAgICAgICYmIHNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuQUJTRU5UKTsKKyAgICAgICAgaWYgKG1pc3NpbmdBbmROb3RQcm92aXNpb25lZCkgeworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cy5TaW1NaXNzaW5nTG9ja2VkOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzaW1TdGF0ZSkgeworICAgICAgICAgICAgY2FzZSBBQlNFTlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cy5TaW1NaXNzaW5nOworICAgICAgICAgICAgY2FzZSBORVRXT1JLX0xPQ0tFRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLlNpbU1pc3NpbmdMb2NrZWQ7CisgICAgICAgICAgICBjYXNlIE5PVF9SRUFEWToKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLlNpbU1pc3Npbmc7CisgICAgICAgICAgICBjYXNlIFBJTl9SRVFVSVJFRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLlNpbUxvY2tlZDsKKyAgICAgICAgICAgIGNhc2UgUFVLX1JFUVVJUkVEOgorICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMuU2ltUHVrTG9ja2VkOworICAgICAgICAgICAgY2FzZSBSRUFEWToKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLk5vcm1hbDsKKyAgICAgICAgICAgIGNhc2UgVU5LTk9XTjoKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLlNpbU1pc3Npbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFN0YXR1cy5TaW1NaXNzaW5nOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVwZGF0ZSB0aGUgbGF5b3V0IHRvIG1hdGNoIHRoZSBjdXJyZW50IHN0YXR1cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlTGF5b3V0KFN0YXR1cyBzdGF0dXMpIHsKKyAgICAgICAgLy8gVGhlIGVtZXJnZW5jeSBjYWxsIGJ1dHRvbiBubyBsb25nZXIgYXBwZWFycyBvbiB0aGlzIHNjcmVlbi4KKyAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCAidXBkYXRlTGF5b3V0OiBzdGF0dXM9IiArIHN0YXR1cyk7CisKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOyAvLyBpbiBhbG1vc3QgYWxsIGNhc2VzCisKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgICAgIGNhc2UgTm9ybWFsOgorICAgICAgICAgICAgICAgIC8vIHRleHQKKyAgICAgICAgICAgICAgICBtQ2Fycmllci5zZXRUZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2FycmllclN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVwZGF0ZU1vbml0b3IuZ2V0VGVsZXBob255UGxtbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvci5nZXRUZWxlcGhvbnlTcG4oKSkpOworCisgICAgICAgICAgICAgICAgLy8gRW1wdHkgbm93LCBidXQgdXNlZCBmb3Igc2xpZGluZyB0YWIgZmVlZGJhY2sKKyAgICAgICAgICAgICAgICBtU2NyZWVuTG9ja2VkLnNldFRleHQoIiIpOworCisgICAgICAgICAgICAgICAgLy8gbGF5b3V0CisgICAgICAgICAgICAgICAgbVNjcmVlbkxvY2tlZC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbVNlbGVjdG9yLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRW1lcmdlbmN5Q2FsbFRleHQuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOZXR3b3JrTG9ja2VkOgorICAgICAgICAgICAgICAgIC8vIFRoZSBjYXJyaWVyIHN0cmluZyBzaG93cyBib3RoIHNpbSBjYXJkIHN0YXR1cyAoaS5lLiBObyBTaW0gQ2FyZCkgYW5kCisgICAgICAgICAgICAgICAgLy8gY2FycmllcidzIG5hbWUgYW5kL29yICJFbWVyZ2VuY3kgQ2FsbHMgT25seSIgc3RhdHVzCisgICAgICAgICAgICAgICAgbUNhcnJpZXIuc2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENhcnJpZXJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVBsbW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldFRleHQoUi5zdHJpbmcubG9ja3NjcmVlbl9uZXR3b3JrX2xvY2tlZF9tZXNzYWdlKSkpOworICAgICAgICAgICAgICAgIG1TY3JlZW5Mb2NrZWQuc2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX2luc3RydWN0aW9uc193aGVuX3BhdHRlcm5fZGlzYWJsZWQpOworCisgICAgICAgICAgICAgICAgLy8gbGF5b3V0CisgICAgICAgICAgICAgICAgbVNjcmVlbkxvY2tlZC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbVNlbGVjdG9yLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRW1lcmdlbmN5Q2FsbFRleHQuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTaW1NaXNzaW5nOgorICAgICAgICAgICAgICAgIC8vIHRleHQKKyAgICAgICAgICAgICAgICBtQ2Fycmllci5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fbWlzc2luZ19zaW1fbWVzc2FnZV9zaG9ydCk7CisgICAgICAgICAgICAgICAgbVNjcmVlbkxvY2tlZC5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fbWlzc2luZ19zaW1faW5zdHJ1Y3Rpb25zKTsKKworICAgICAgICAgICAgICAgIC8vIGxheW91dAorICAgICAgICAgICAgICAgIG1TY3JlZW5Mb2NrZWQuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgICAgIG1TZWxlY3Rvci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbUVtZXJnZW5jeUNhbGxUZXh0LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICAvLyBkbyBub3QgbmVlZCB0byBzaG93IHRoZSBlLWNhbGwgYnV0dG9uOyB1c2VyIG1heSB1bmxvY2sKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltTWlzc2luZ0xvY2tlZDoKKyAgICAgICAgICAgICAgICAvLyB0ZXh0CisgICAgICAgICAgICAgICAgbUNhcnJpZXIuc2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENhcnJpZXJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVBsbW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldFRleHQoUi5zdHJpbmcubG9ja3NjcmVlbl9taXNzaW5nX3NpbV9tZXNzYWdlX3Nob3J0KSkpOworICAgICAgICAgICAgICAgIG1TY3JlZW5Mb2NrZWQuc2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX21pc3Npbmdfc2ltX2luc3RydWN0aW9ucyk7CisKKyAgICAgICAgICAgICAgICAvLyBsYXlvdXQKKyAgICAgICAgICAgICAgICBtU2NyZWVuTG9ja2VkLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtU2VsZWN0b3Iuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOyAvLyBjYW5ub3QgdW5sb2NrCisgICAgICAgICAgICAgICAgbUVtZXJnZW5jeUNhbGxUZXh0LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRW1lcmdlbmN5Q2FsbEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNpbUxvY2tlZDoKKyAgICAgICAgICAgICAgICAvLyB0ZXh0CisgICAgICAgICAgICAgICAgbUNhcnJpZXIuc2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENhcnJpZXJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVBsbW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldFRleHQoUi5zdHJpbmcubG9ja3NjcmVlbl9zaW1fbG9ja2VkX21lc3NhZ2UpKSk7CisKKyAgICAgICAgICAgICAgICAvLyBsYXlvdXQKKyAgICAgICAgICAgICAgICBtU2NyZWVuTG9ja2VkLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICAgICAgICAgIG1TZWxlY3Rvci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbUVtZXJnZW5jeUNhbGxUZXh0LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltUHVrTG9ja2VkOgorICAgICAgICAgICAgICAgIC8vIHRleHQKKyAgICAgICAgICAgICAgICBtQ2Fycmllci5zZXRUZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2FycmllclN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVwZGF0ZU1vbml0b3IuZ2V0VGVsZXBob255UGxtbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb250ZXh0KCkuZ2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX3NpbV9wdWtfbG9ja2VkX21lc3NhZ2UpKSk7CisgICAgICAgICAgICAgICAgbVNjcmVlbkxvY2tlZC5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fc2ltX3B1a19sb2NrZWRfaW5zdHJ1Y3Rpb25zKTsKKworICAgICAgICAgICAgICAgIC8vIGxheW91dAorICAgICAgICAgICAgICAgIG1TY3JlZW5Mb2NrZWQuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgICAgIG1TZWxlY3Rvci5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7IC8vIGNhbm5vdCB1bmxvY2sKKyAgICAgICAgICAgICAgICBtRW1lcmdlbmN5Q2FsbFRleHQuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgICAgIG1FbWVyZ2VuY3lDYWxsQnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBDaGFyU2VxdWVuY2UgZ2V0Q2FycmllclN0cmluZyhDaGFyU2VxdWVuY2UgdGVsZXBob255UGxtbiwgQ2hhclNlcXVlbmNlIHRlbGVwaG9ueVNwbikgeworICAgICAgICBpZiAodGVsZXBob255UGxtbiAhPSBudWxsICYmIHRlbGVwaG9ueVNwbiA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gdGVsZXBob255UGxtbjsKKyAgICAgICAgfSBlbHNlIGlmICh0ZWxlcGhvbnlQbG1uICE9IG51bGwgJiYgdGVsZXBob255U3BuICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiB0ZWxlcGhvbnlQbG1uICsgInwiICsgdGVsZXBob255U3BuOworICAgICAgICB9IGVsc2UgaWYgKHRlbGVwaG9ueVBsbW4gPT0gbnVsbCAmJiB0ZWxlcGhvbnlTcG4gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIHRlbGVwaG9ueVNwbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uU2ltU3RhdGVDaGFuZ2VkKEljY0NhcmQuU3RhdGUgc2ltU3RhdGUpIHsKKyAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCAib25TaW1TdGF0ZUNoYW5nZWQoIiArIHNpbVN0YXRlICsgIikiKTsKKyAgICAgICAgbVN0YXR1cyA9IGdldEN1cnJlbnRTdGF0dXMoc2ltU3RhdGUpOworICAgICAgICB1cGRhdGVMYXlvdXQobVN0YXR1cyk7CisgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVDb25maWd1cmF0aW9uKCkgeworICAgICAgICBDb25maWd1cmF0aW9uIG5ld0NvbmZpZyA9IGdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgaWYgKG5ld0NvbmZpZy5vcmllbnRhdGlvbiAhPSBtQ3JlYXRpb25PcmllbnRhdGlvbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUobmV3Q29uZmlnKTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXdDb25maWcuaGFyZEtleWJvYXJkSGlkZGVuICE9IG1LZXlib2FyZEhpZGRlbikgeworICAgICAgICAgICAgbUtleWJvYXJkSGlkZGVuID0gbmV3Q29uZmlnLmhhcmRLZXlib2FyZEhpZGRlbjsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNLZXlib2FyZE9wZW4gPSBtS2V5Ym9hcmRIaWRkZW4gPT0gQ29uZmlndXJhdGlvbi5IQVJES0VZQk9BUkRISURERU5fTk87CisgICAgICAgICAgICBpZiAobVVwZGF0ZU1vbml0b3IuaXNLZXlndWFyZEJ5cGFzc0VuYWJsZWQoKSAmJiBpc0tleWJvYXJkT3BlbikgeworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5nb1RvVW5sb2NrU2NyZWVuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOworICAgICAgICBpZiAoTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcuREVCVUdfQ09ORklHVVJBVElPTikgeworICAgICAgICAgICAgTG9nLnYoVEFHLCAiKioqKiogTE9DSyBBVFRBQ0hFRCBUTyBXSU5ET1ciKTsKKyAgICAgICAgICAgIExvZy52KFRBRywgIkN1ciBvcmllbnQ9IiArIG1DcmVhdGlvbk9yaWVudGF0aW9uCisgICAgICAgICAgICAgICAgICAgICsgIiwgbmV3IGNvbmZpZz0iICsgZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpKTsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVDb25maWd1cmF0aW9uKCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnKSB7CisgICAgICAgIHN1cGVyLm9uQ29uZmlndXJhdGlvbkNoYW5nZWQobmV3Q29uZmlnKTsKKyAgICAgICAgaWYgKExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LkRFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIioqKioqIExPQ0sgQ09ORklHIENIQU5HSU5HIiwgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKSk7CisgICAgICAgICAgICBMb2cudihUQUcsICJDdXIgb3JpZW50PSIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICArICIsIG5ldyBjb25maWc9IiArIG5ld0NvbmZpZyk7CisgICAgICAgIH0KKyAgICAgICAgdXBkYXRlQ29uZmlndXJhdGlvbigpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gbmVlZHNJbnB1dCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIHJlc2V0U3RhdHVzSW5mbyhtVXBkYXRlTW9uaXRvcik7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLnVwZGF0ZUVtZXJnZW5jeUNhbGxCdXR0b25TdGF0ZShtRW1lcmdlbmN5Q2FsbEJ1dHRvbik7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhblVwKCkgeworICAgICAgICBtVXBkYXRlTW9uaXRvci5yZW1vdmVDYWxsYmFjayh0aGlzKTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uUmluZ2VyTW9kZUNoYW5nZWQoaW50IHN0YXRlKSB7CisgICAgICAgIGJvb2xlYW4gc2lsZW50ID0gQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX05PUk1BTCAhPSBzdGF0ZTsKKyAgICAgICAgaWYgKHNpbGVudCAhPSBtU2lsZW50TW9kZSkgeworICAgICAgICAgICAgbVNpbGVudE1vZGUgPSBzaWxlbnQ7CisgICAgICAgICAgICB1cGRhdGVSaWdodFRhYlJlc291cmNlcygpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25QaG9uZVN0YXRlQ2hhbmdlZChTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bhc3N3b3JkVW5sb2NrU2NyZWVuLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bhc3N3b3JkVW5sb2NrU2NyZWVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmMjkxNwotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGFzc3dvcmRVbmxvY2tTY3JlZW4uamF2YQpAQCAtMCwwICsxLDI2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5hZG1pbi5EZXZpY2VQb2xpY3lNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QYXR0ZXJuVW5sb2NrU2NyZWVuLkZvb3Rlck1vZGU7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0LkxvY2tQYXR0ZXJuVXRpbHM7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0LlBhc3N3b3JkRW50cnlLZXlib2FyZFZpZXc7CisKK2ltcG9ydCBhbmRyb2lkLm9zLkNvdW50RG93blRpbWVyOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQubWV0aG9kLkRpZ2l0c0tleUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudGV4dC5tZXRob2QuVGV4dEtleUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkVkaXRvckluZm87CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0Vmlldy5PbkVkaXRvckFjdGlvbkxpc3RlbmVyOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuUGFzc3dvcmRFbnRyeUtleWJvYXJkSGVscGVyOworCisvKioKKyAqIERpc3BsYXlzIGEgZGlhbGVyLWxpa2UgaW50ZXJmYWNlIG9yIGFscGhhbnVtZXJpYyAobGF0aW4tMSkga2V5IGVudHJ5IGZvciB0aGUgdXNlciB0byBlbnRlcgorICogYW4gdW5sb2NrIHBhc3N3b3JkCisgKi8KK3B1YmxpYyBjbGFzcyBQYXNzd29yZFVubG9ja1NjcmVlbiBleHRlbmRzIExpbmVhckxheW91dCBpbXBsZW1lbnRzIEtleWd1YXJkU2NyZWVuLAorICAgICAgICBWaWV3Lk9uQ2xpY2tMaXN0ZW5lciwgS2V5Z3VhcmRVcGRhdGVNb25pdG9yLkluZm9DYWxsYmFjaywgT25FZGl0b3JBY3Rpb25MaXN0ZW5lciB7CisKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkVXBkYXRlTW9uaXRvciBtVXBkYXRlTW9uaXRvcjsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkU2NyZWVuQ2FsbGJhY2sgbUNhbGxiYWNrOworCisgICAgcHJpdmF0ZSBFZGl0VGV4dCBtUGFzc3dvcmRFbnRyeTsKKyAgICBwcml2YXRlIEJ1dHRvbiBtRW1lcmdlbmN5Q2FsbEJ1dHRvbjsKKyAgICBwcml2YXRlIExvY2tQYXR0ZXJuVXRpbHMgbUxvY2tQYXR0ZXJuVXRpbHM7CisgICAgcHJpdmF0ZSBQYXNzd29yZEVudHJ5S2V5Ym9hcmRWaWV3IG1LZXlib2FyZFZpZXc7CisgICAgcHJpdmF0ZSBQYXNzd29yZEVudHJ5S2V5Ym9hcmRIZWxwZXIgbUtleWJvYXJkSGVscGVyOworCisgICAgcHJpdmF0ZSBpbnQgbUNyZWF0aW9uT3JpZW50YXRpb247CisgICAgcHJpdmF0ZSBpbnQgbUNyZWF0aW9uSGFyZEtleWJvYXJkSGlkZGVuOworICAgIHByaXZhdGUgQ291bnREb3duVGltZXIgbUNvdW50ZG93blRpbWVyOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVRpdGxlOworCisgICAgLy8gVG8gYXZvaWQgYWNjaWRlbnRhbCBsb2Nrb3V0IGR1ZSB0byBldmVudHMgd2hpbGUgdGhlIGRldmljZSBpbiBpbiB0aGUgcG9ja2V0LCBpZ25vcmUKKyAgICAvLyBhbnkgcGFzc3dvcmRzIHdpdGggbGVuZ3RoIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzIGxlbmd0aC4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUlOSU1VTV9QQVNTV09SRF9MRU5HVEhfQkVGT1JFX1JFUE9SVCA9IDM7CisKKyAgICBwdWJsaWMgUGFzc3dvcmRVbmxvY2tTY3JlZW4oQ29udGV4dCBjb250ZXh0LCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBMb2NrUGF0dGVyblV0aWxzIGxvY2tQYXR0ZXJuVXRpbHMsIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLAorICAgICAgICAgICAgS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayBjYWxsYmFjaykgeworICAgICAgICBzdXBlcihjb250ZXh0KTsKKworICAgICAgICBtQ3JlYXRpb25IYXJkS2V5Ym9hcmRIaWRkZW4gPSBjb25maWd1cmF0aW9uLmhhcmRLZXlib2FyZEhpZGRlbjsKKyAgICAgICAgbUNyZWF0aW9uT3JpZW50YXRpb24gPSBjb25maWd1cmF0aW9uLm9yaWVudGF0aW9uOworICAgICAgICBtVXBkYXRlTW9uaXRvciA9IHVwZGF0ZU1vbml0b3I7CisgICAgICAgIG1DYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscyA9IGxvY2tQYXR0ZXJuVXRpbHM7CisKKyAgICAgICAgTGF5b3V0SW5mbGF0ZXIgbGF5b3V0SW5mbGF0ZXIgPSBMYXlvdXRJbmZsYXRlci5mcm9tKGNvbnRleHQpOworICAgICAgICBpZiAobUNyZWF0aW9uT3JpZW50YXRpb24gIT0gQ29uZmlndXJhdGlvbi5PUklFTlRBVElPTl9MQU5EU0NBUEUpIHsKKyAgICAgICAgICAgIGxheW91dEluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3Bhc3N3b3JkX3BvcnRyYWl0LCB0aGlzLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxheW91dEluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3Bhc3N3b3JkX2xhbmRzY2FwZSwgdGhpcywgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgcXVhbGl0eSA9IGxvY2tQYXR0ZXJuVXRpbHMuZ2V0S2V5Z3VhcmRTdG9yZWRQYXNzd29yZFF1YWxpdHkoKTsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc0FscGhhID0gRGV2aWNlUG9saWN5TWFuYWdlci5QQVNTV09SRF9RVUFMSVRZX0FMUEhBQkVUSUMgPT0gcXVhbGl0eQorICAgICAgICAgICAgICAgIHx8IERldmljZVBvbGljeU1hbmFnZXIuUEFTU1dPUkRfUVVBTElUWV9BTFBIQU5VTUVSSUMgPT0gcXVhbGl0eTsKKworICAgICAgICBtS2V5Ym9hcmRWaWV3ID0gKFBhc3N3b3JkRW50cnlLZXlib2FyZFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmtleWJvYXJkKTsKKyAgICAgICAgbVBhc3N3b3JkRW50cnkgPSAoRWRpdFRleHQpIGZpbmRWaWV3QnlJZChSLmlkLnBhc3N3b3JkRW50cnkpOworICAgICAgICBtUGFzc3dvcmRFbnRyeS5zZXRPbkVkaXRvckFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBtRW1lcmdlbmN5Q2FsbEJ1dHRvbiA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLmVtZXJnZW5jeUNhbGwpOworICAgICAgICBtRW1lcmdlbmN5Q2FsbEJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLnVwZGF0ZUVtZXJnZW5jeUNhbGxCdXR0b25TdGF0ZShtRW1lcmdlbmN5Q2FsbEJ1dHRvbik7CisgICAgICAgIG1UaXRsZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuZW50ZXJfcGFzc3dvcmRfbGFiZWwpOworCisgICAgICAgIG1LZXlib2FyZEhlbHBlciA9IG5ldyBQYXNzd29yZEVudHJ5S2V5Ym9hcmRIZWxwZXIoY29udGV4dCwgbUtleWJvYXJkVmlldywgdGhpcyk7CisgICAgICAgIG1LZXlib2FyZEhlbHBlci5zZXRLZXlib2FyZE1vZGUoaXNBbHBoYSA/IFBhc3N3b3JkRW50cnlLZXlib2FyZEhlbHBlci5LRVlCT0FSRF9NT0RFX0FMUEhBCisgICAgICAgICAgICAgICAgOiBQYXNzd29yZEVudHJ5S2V5Ym9hcmRIZWxwZXIuS0VZQk9BUkRfTU9ERV9OVU1FUklDKTsKKworICAgICAgICBtS2V5Ym9hcmRWaWV3LnNldFZpc2liaWxpdHkobUNyZWF0aW9uSGFyZEtleWJvYXJkSGlkZGVuID09IENvbmZpZ3VyYXRpb24uSEFSREtFWUJPQVJESElEREVOX05PCisgICAgICAgICAgICAgICAgPyBWaWV3LklOVklTSUJMRSA6IFZpZXcuVklTSUJMRSk7CisgICAgICAgIG1QYXNzd29yZEVudHJ5LnJlcXVlc3RGb2N1cygpOworCisgICAgICAgIC8vIFRoaXMgYWxsb3dzIGtleWJvYXJkcyB3aXRoIG92ZXJsYXBwaW5nIHF3ZXJ0eS9udW1lcmljIGtleXMgdG8gY2hvb3NlIGp1c3QgdGhlCisgICAgICAgIC8vIG51bWVyaWMga2V5cy4KKyAgICAgICAgaWYgKGlzQWxwaGEpIHsKKyAgICAgICAgICAgIG1QYXNzd29yZEVudHJ5LnNldEtleUxpc3RlbmVyKFRleHRLZXlMaXN0ZW5lci5nZXRJbnN0YW5jZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1QYXNzd29yZEVudHJ5LnNldEtleUxpc3RlbmVyKERpZ2l0c0tleUxpc3RlbmVyLmdldEluc3RhbmNlKCkpOworICAgICAgICB9CisKKyAgICAgICAgbUtleWJvYXJkSGVscGVyLnNldFZpYnJhdGVQYXR0ZXJuKG1Mb2NrUGF0dGVyblV0aWxzLmlzVGFjdGlsZUZlZWRiYWNrRW5hYmxlZCgpID8KKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFycmF5LmNvbmZpZ192aXJ0dWFsS2V5VmliZVBhdHRlcm4gOiAwKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBvblJlcXVlc3RGb2N1c0luRGVzY2VuZGFudHMoaW50IGRpcmVjdGlvbiwgUmVjdCBwcmV2aW91c2x5Rm9jdXNlZFJlY3QpIHsKKyAgICAgICAgLy8gc2VuZCBmb2N1cyB0byB0aGUgcGFzc3dvcmQgZmllbGQKKyAgICAgICAgcmV0dXJuIG1QYXNzd29yZEVudHJ5LnJlcXVlc3RGb2N1cyhkaXJlY3Rpb24sIHByZXZpb3VzbHlGb2N1c2VkUmVjdCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBuZWVkc0lucHV0KCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblBhdXNlKCkgeworCisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblJlc3VtZSgpIHsKKyAgICAgICAgLy8gc3RhcnQgZnJlc2gKKyAgICAgICAgbVBhc3N3b3JkRW50cnkuc2V0VGV4dCgiIik7CisgICAgICAgIG1QYXNzd29yZEVudHJ5LnJlcXVlc3RGb2N1cygpOworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUNhbGxCdXR0b24pOworCisgICAgICAgIC8vIGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBsb2NrZWQgb3V0LCBlbmZvcmNlIGl0LgorICAgICAgICBsb25nIGRlYWRsaW5lID0gbUxvY2tQYXR0ZXJuVXRpbHMuZ2V0TG9ja291dEF0dGVtcHREZWFkbGluZSgpOworICAgICAgICBpZiAoZGVhZGxpbmUgIT0gMCkgeworICAgICAgICAgICAgaGFuZGxlQXR0ZW1wdExvY2tvdXQoZGVhZGxpbmUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhblVwKCkgeworICAgICAgICBtVXBkYXRlTW9uaXRvci5yZW1vdmVDYWxsYmFjayh0aGlzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworICAgICAgICBpZiAodiA9PSBtRW1lcmdlbmN5Q2FsbEJ1dHRvbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnRha2VFbWVyZ2VuY3lDYWxsQWN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jaygpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB2ZXJpZnlQYXNzd29yZEFuZFVubG9jaygpIHsKKyAgICAgICAgU3RyaW5nIGVudHJ5ID0gbVBhc3N3b3JkRW50cnkuZ2V0VGV4dCgpLnRvU3RyaW5nKCk7CisgICAgICAgIGlmIChtTG9ja1BhdHRlcm5VdGlscy5jaGVja1Bhc3N3b3JkKGVudHJ5KSkgeworICAgICAgICAgICAgbUNhbGxiYWNrLmtleWd1YXJkRG9uZSh0cnVlKTsKKyAgICAgICAgICAgIG1DYWxsYmFjay5yZXBvcnRTdWNjZXNzZnVsVW5sb2NrQXR0ZW1wdCgpOworICAgICAgICB9IGVsc2UgaWYgKGVudHJ5Lmxlbmd0aCgpID4gTUlOSU1VTV9QQVNTV09SRF9MRU5HVEhfQkVGT1JFX1JFUE9SVCApIHsKKyAgICAgICAgICAgIC8vIHRvIGF2b2lkIGFjY2lkZW50YWwgbG9ja291dCwgb25seSBjb3VudCBhdHRlbXB0cyB0aGF0IGFyZSBsb25nIGVub3VnaCB0byBiZSBhCisgICAgICAgICAgICAvLyByZWFsIHBhc3N3b3JkLiBUaGlzIG1heSByZXF1aXJlIHNvbWUgdHdlYWtpbmcuCisgICAgICAgICAgICBtQ2FsbGJhY2sucmVwb3J0RmFpbGVkVW5sb2NrQXR0ZW1wdCgpOworICAgICAgICAgICAgaWYgKDAgPT0gKG1VcGRhdGVNb25pdG9yLmdldEZhaWxlZEF0dGVtcHRzKCkKKyAgICAgICAgICAgICAgICAgICAgJSBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfVElNRU9VVCkpIHsKKyAgICAgICAgICAgICAgICBsb25nIGRlYWRsaW5lID0gbUxvY2tQYXR0ZXJuVXRpbHMuc2V0TG9ja291dEF0dGVtcHREZWFkbGluZSgpOworICAgICAgICAgICAgICAgIGhhbmRsZUF0dGVtcHRMb2Nrb3V0KGRlYWRsaW5lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtUGFzc3dvcmRFbnRyeS5zZXRUZXh0KCIiKTsKKyAgICB9CisKKyAgICAvLyBQcmV2ZW50IHVzZXIgZnJvbSB1c2luZyB0aGUgUElOL1Bhc3N3b3JkIGVudHJ5IHVudGlsIHNjaGVkdWxlZCBkZWFkbGluZS4KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlQXR0ZW1wdExvY2tvdXQobG9uZyBlbGFwc2VkUmVhbHRpbWVEZWFkbGluZSkgeworICAgICAgICBtUGFzc3dvcmRFbnRyeS5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbUtleWJvYXJkVmlldy5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbG9uZyBlbGFwc2VkUmVhbHRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKKyAgICAgICAgbUNvdW50ZG93blRpbWVyID0gbmV3IENvdW50RG93blRpbWVyKGVsYXBzZWRSZWFsdGltZURlYWRsaW5lIC0gZWxhcHNlZFJlYWx0aW1lLCAxMDAwKSB7CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25UaWNrKGxvbmcgbWlsbGlzVW50aWxGaW5pc2hlZCkgeworICAgICAgICAgICAgICAgIGludCBzZWNvbmRzUmVtYWluaW5nID0gKGludCkgKG1pbGxpc1VudGlsRmluaXNoZWQgLyAxMDAwKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaW5zdHJ1Y3Rpb25zID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFIuc3RyaW5nLmxvY2tzY3JlZW5fdG9vX21hbnlfZmFpbGVkX2F0dGVtcHRzX2NvdW50ZG93biwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHNSZW1haW5pbmcpOworICAgICAgICAgICAgICAgIG1UaXRsZS5zZXRUZXh0KGluc3RydWN0aW9ucyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25GaW5pc2goKSB7CisgICAgICAgICAgICAgICAgbVBhc3N3b3JkRW50cnkuc2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICBtVGl0bGUuc2V0VGV4dChSLnN0cmluZy5rZXlndWFyZF9wYXNzd29yZF9lbnRlcl9wYXNzd29yZF9jb2RlKTsKKyAgICAgICAgICAgICAgICBtS2V5Ym9hcmRWaWV3LnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0uc3RhcnQoKTsKKyAgICB9CisKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIG9uS2V5RG93bihpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jaygpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgQ29uZmlndXJhdGlvbiBjb25maWcgPSBnZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCk7CisgICAgICAgIGlmIChjb25maWcub3JpZW50YXRpb24gIT0gbUNyZWF0aW9uT3JpZW50YXRpb24KKyAgICAgICAgICAgICAgICB8fCBjb25maWcuaGFyZEtleWJvYXJkSGlkZGVuICE9IG1DcmVhdGlvbkhhcmRLZXlib2FyZEhpZGRlbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUoY29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25Db25maWd1cmF0aW9uQ2hhbmdlZChDb25maWd1cmF0aW9uIG5ld0NvbmZpZykgeworICAgICAgICBzdXBlci5vbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5ld0NvbmZpZyk7CisgICAgICAgIGlmIChuZXdDb25maWcub3JpZW50YXRpb24gIT0gbUNyZWF0aW9uT3JpZW50YXRpb24KKyAgICAgICAgICAgICAgICB8fCBuZXdDb25maWcuaGFyZEtleWJvYXJkSGlkZGVuICE9IG1DcmVhdGlvbkhhcmRLZXlib2FyZEhpZGRlbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUobmV3Q29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uS2V5Ym9hcmRDaGFuZ2UoYm9vbGVhbiBpc0tleWJvYXJkT3BlbikgeworICAgICAgICAvLyBEb24ndCBzaG93IHRoZSBzb2Z0IGtleWJvYXJkIHdoZW4gdGhlIHJlYWwga2V5Ym9hcmQgaXMgb3BlbgorICAgICAgICBtS2V5Ym9hcmRWaWV3LnNldFZpc2liaWxpdHkoaXNLZXlib2FyZE9wZW4gPyBWaWV3LklOVklTSUJMRSA6IFZpZXcuVklTSUJMRSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gb25FZGl0b3JBY3Rpb24oVGV4dFZpZXcgdiwgaW50IGFjdGlvbklkLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHdhcyB0aGUgcmVzdWx0IG9mIGhpdHRpbmcgdGhlIGVudGVyIGtleQorICAgICAgICBpZiAoYWN0aW9uSWQgPT0gRWRpdG9ySW5mby5JTUVfTlVMTCkgeworICAgICAgICAgICAgdmVyaWZ5UGFzc3dvcmRBbmRVbmxvY2soKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblBob25lU3RhdGVDaGFuZ2VkKFN0cmluZyBuZXdTdGF0ZSkgeworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUNhbGxCdXR0b24pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uUmVmcmVzaEJhdHRlcnlJbmZvKGJvb2xlYW4gc2hvd0JhdHRlcnlJbmZvLCBib29sZWFuIHBsdWdnZWRJbiwgaW50IGJhdHRlcnlMZXZlbCkgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25SZWZyZXNoQ2FycmllckluZm8oQ2hhclNlcXVlbmNlIHBsbW4sIENoYXJTZXF1ZW5jZSBzcG4pIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uUmluZ2VyTW9kZUNoYW5nZWQoaW50IHN0YXRlKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblRpbWVDaGFuZ2VkKCkgeworCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1BhdHRlcm5VbmxvY2tTY3JlZW4uamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGF0dGVyblVubG9ja1NjcmVlbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxOGUyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1BhdHRlcm5VbmxvY2tTY3JlZW4uamF2YQpAQCAtMCwwICsxLDU4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5Db3VudERvd25UaW1lcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOworaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5CdXR0b247CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CitpbXBvcnQgYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlRm9ybWF0OworaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NDYXJkOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5MaW5lYXJMYXlvdXRXaXRoRGVmYXVsdFRvdWNoUmVjZXBpZW50OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Mb2NrUGF0dGVyblV0aWxzOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Mb2NrUGF0dGVyblZpZXc7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0LkxvY2tQYXR0ZXJuVmlldy5DZWxsOworCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKKy8qKgorICogVGhpcyBpcyB0aGUgc2NyZWVuIHRoYXQgc2hvd3MgdGhlIDkgY2lyY2xlIHVubG9jayB3aWRnZXQgYW5kIGluc3RydWN0cworICogdGhlIHVzZXIgaG93IHRvIHVubG9jayB0aGVpciBkZXZpY2UsIG9yIG1ha2UgYW4gZW1lcmdlbmN5IGNhbGwuCisgKi8KK2NsYXNzIFBhdHRlcm5VbmxvY2tTY3JlZW4gZXh0ZW5kcyBMaW5lYXJMYXlvdXRXaXRoRGVmYXVsdFRvdWNoUmVjZXBpZW50CisgICAgICAgIGltcGxlbWVudHMgS2V5Z3VhcmRTY3JlZW4sIEtleWd1YXJkVXBkYXRlTW9uaXRvci5JbmZvQ2FsbGJhY2ssCisgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvci5TaW1TdGF0ZUNhbGxiYWNrIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlVubG9ja1NjcmVlbiI7CisKKyAgICAvLyBob3cgbG9uZyBiZWZvcmUgd2UgY2xlYXIgdGhlIHdyb25nIHBhdHRlcm4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUEFUVEVSTl9DTEVBUl9USU1FT1VUX01TID0gMjAwMDsKKworICAgIC8vIGhvdyBsb25nIHdlIHN0YXkgYXdha2UgYWZ0ZXIgZWFjaCBrZXkgYmV5b25kIE1JTl9QQVRURVJOX0JFRk9SRV9QT0tFX1dBS0VMT0NLCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVOTE9DS19QQVRURVJOX1dBS0VfSU5URVJWQUxfTVMgPSA3MDAwOworCisgICAgLy8gaG93IGxvbmcgd2Ugc3RheSBhd2FrZSBhZnRlciB0aGUgdXNlciBoaXRzIHRoZSBmaXJzdCBkb3QuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVOTE9DS19QQVRURVJOX1dBS0VfSU5URVJWQUxfRklSU1RfRE9UU19NUyA9IDIwMDA7CisKKyAgICAvLyBob3cgbWFueSBjZWxscyB0aGUgdXNlciBoYXMgdG8gY3Jvc3MgYmVmb3JlIHdlIHBva2UgdGhlIHdha2Vsb2NrCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1JTl9QQVRURVJOX0JFRk9SRV9QT0tFX1dBS0VMT0NLID0gMjsKKworICAgIHByaXZhdGUgaW50IG1GYWlsZWRQYXR0ZXJuQXR0ZW1wdHNTaW5jZUxhc3RUaW1lb3V0ID0gMDsKKyAgICBwcml2YXRlIGludCBtVG90YWxGYWlsZWRQYXR0ZXJuQXR0ZW1wdHMgPSAwOworICAgIHByaXZhdGUgQ291bnREb3duVGltZXIgbUNvdW50ZG93blRpbWVyID0gbnVsbDsKKworICAgIHByaXZhdGUgZmluYWwgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkVXBkYXRlTW9uaXRvciBtVXBkYXRlTW9uaXRvcjsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkU2NyZWVuQ2FsbGJhY2sgbUNhbGxiYWNrOworCisgICAgLyoqCisgICAgICogd2hldGhlciB0aGVyZSBpcyBhIGZhbGxiYWNrIG9wdGlvbiBhdmFpbGFibGUgd2hlbiB0aGUgcGF0dGVybiBpcyBmb3Jnb3R0ZW4uCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIG1FbmFibGVGYWxsYmFjazsKKworICAgIHByaXZhdGUgU3RyaW5nIG1EYXRlRm9ybWF0U3RyaW5nOworCisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQ2FycmllcjsKKyAgICBwcml2YXRlIFRleHRWaWV3IG1EYXRlOworCisgICAgLy8gYXJlIHdlIHNob3dpbmcgYmF0dGVyeSBpbmZvcm1hdGlvbj8KKyAgICBwcml2YXRlIGJvb2xlYW4gbVNob3dpbmdCYXR0ZXJ5SW5mbyA9IGZhbHNlOworCisgICAgLy8gbGFzdCBrbm93biBwbHVnZ2VkIGluIHN0YXRlCisgICAgcHJpdmF0ZSBib29sZWFuIG1QbHVnZ2VkSW4gPSBmYWxzZTsKKworICAgIC8vIGxhc3Qga25vd24gYmF0dGVyeSBsZXZlbAorICAgIHByaXZhdGUgaW50IG1CYXR0ZXJ5TGV2ZWwgPSAxMDA7CisKKyAgICBwcml2YXRlIFN0cmluZyBtTmV4dEFsYXJtID0gbnVsbDsKKworICAgIHByaXZhdGUgU3RyaW5nIG1JbnN0cnVjdGlvbnMgPSBudWxsOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVN0YXR1czE7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtU3RhdHVzU2VwOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVN0YXR1czI7CisKKworICAgIHByaXZhdGUgTG9ja1BhdHRlcm5WaWV3IG1Mb2NrUGF0dGVyblZpZXc7CisKKyAgICBwcml2YXRlIFZpZXdHcm91cCBtRm9vdGVyTm9ybWFsOworICAgIHByaXZhdGUgVmlld0dyb3VwIG1Gb290ZXJGb3Jnb3RQYXR0ZXJuOworCisgICAgLyoqCisgICAgICogS2VlcHMgdHJhY2sgb2YgdGhlIGxhc3QgdGltZSB3ZSBwb2tlZCB0aGUgd2FrZSBsb2NrIGR1cmluZyBkaXNwYXRjaGluZworICAgICAqIG9mIHRoZSB0b3VjaCBldmVudCwgaW5pdGFsaXplZCB0byBzb21ldGhpbmcgZ2F1cmFudGVlZCB0byBtYWtlIHVzCisgICAgICogcG9rZSBpdCB3aGVuIHRoZSB1c2VyIHN0YXJ0cyBkcmF3aW5nIHRoZSBwYXR0ZXJuLgorICAgICAqIEBzZWUgI2Rpc3BhdGNoVG91Y2hFdmVudChhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQpCisgICAgICovCisgICAgcHJpdmF0ZSBsb25nIG1MYXN0UG9rZVRpbWUgPSAtVU5MT0NLX1BBVFRFUk5fV0FLRV9JTlRFUlZBTF9NUzsKKworICAgIC8qKgorICAgICAqIFVzZWZ1bCBmb3IgY2xlYXJpbmcgb3V0IHRoZSB3cm9uZyBwYXR0ZXJuIGFmdGVyIGEgZGVsYXkKKyAgICAgKi8KKyAgICBwcml2YXRlIFJ1bm5hYmxlIG1DYW5jZWxQYXR0ZXJuUnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcuY2xlYXJQYXR0ZXJuKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBCdXR0b24gbUZvcmdvdFBhdHRlcm5CdXR0b247CisgICAgcHJpdmF0ZSBCdXR0b24gbUVtZXJnZW5jeUFsb25lOworICAgIHByaXZhdGUgQnV0dG9uIG1FbWVyZ2VuY3lUb2dldGhlcjsKKyAgICBwcml2YXRlIGludCBtQ3JlYXRpb25PcmllbnRhdGlvbjsKKworICAgIGVudW0gRm9vdGVyTW9kZSB7CisgICAgICAgIE5vcm1hbCwKKyAgICAgICAgRm9yZ290TG9ja1BhdHRlcm4sCisgICAgICAgIFZlcmlmeVVubG9ja2VkCisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlIG1vZGUpIHsKKyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgICAgICAgICBtRm9vdGVyTm9ybWFsLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRm9vdGVyRm9yZ290UGF0dGVybi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZvcmdvdExvY2tQYXR0ZXJuOgorICAgICAgICAgICAgICAgIG1Gb290ZXJOb3JtYWwuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgIG1Gb290ZXJGb3Jnb3RQYXR0ZXJuLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcmlmeVVubG9ja2VkOgorICAgICAgICAgICAgICAgIG1Gb290ZXJOb3JtYWwuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgIG1Gb290ZXJGb3Jnb3RQYXR0ZXJuLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0LgorICAgICAqIEBwYXJhbSBjb25maWd1cmF0aW9uCisgICAgICogQHBhcmFtIGxvY2tQYXR0ZXJuVXRpbHMgVXNlZCB0byBsb29rdXAgbG9jayBwYXR0ZXJuIHNldHRpbmdzLgorICAgICAqIEBwYXJhbSB1cGRhdGVNb25pdG9yIFVzZWQgdG8gbG9va3VwIHN0YXRlIGFmZmVjdGluZyBrZXlndWFyZC4KKyAgICAgKiBAcGFyYW0gY2FsbGJhY2sgVXNlZCB0byBub3RpZnkgdGhlIG1hbmFnZXIgd2hlbiB3ZSdyZSBkb25lLCBldGMuCisgICAgICogQHBhcmFtIHRvdGFsRmFpbGVkQXR0ZW1wdHMgVGhlIGN1cnJlbnQgbnVtYmVyIG9mIGZhaWxlZCBhdHRlbXB0cy4KKyAgICAgKiBAcGFyYW0gZW5hYmxlRmFsbGJhY2sgVHJ1ZSBpZiBhIGJhY2t1cCB1bmxvY2sgb3B0aW9uIGlzIGF2YWlsYWJsZSB3aGVuIHRoZSB1c2VyIGhhcyBmb3Jnb3R0ZW4KKyAgICAgKiAgICAgICAgdGhlaXIgcGF0dGVybiAoZS5nIHRoZXkgaGF2ZSBhIGdvb2dsZSBhY2NvdW50IHNvIHdlIGNhbiBzaG93IHRoZW0gdGhlIGFjY291bnQgYmFzZWQKKyAgICAgKiAgICAgICAgYmFja3VwIG9wdGlvbikuCisgICAgICovCisgICAgUGF0dGVyblVubG9ja1NjcmVlbihDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgTG9ja1BhdHRlcm5VdGlscyBsb2NrUGF0dGVyblV0aWxzLAorICAgICAgICAgICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICAgS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgaW50IHRvdGFsRmFpbGVkQXR0ZW1wdHMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbG9ja1BhdHRlcm5VdGlsczsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IgPSB1cGRhdGVNb25pdG9yOworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgbVRvdGFsRmFpbGVkUGF0dGVybkF0dGVtcHRzID0gdG90YWxGYWlsZWRBdHRlbXB0czsKKyAgICAgICAgbUZhaWxlZFBhdHRlcm5BdHRlbXB0c1NpbmNlTGFzdFRpbWVvdXQgPQorICAgICAgICAgICAgdG90YWxGYWlsZWRBdHRlbXB0cyAlIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VUOworCisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLAorICAgICAgICAgICAgIlVubG9ja1NjcmVlbigpIGN0b3I6IHRvdGFsRmFpbGVkQXR0ZW1wdHM9IgorICAgICAgICAgICAgICAgICArIHRvdGFsRmFpbGVkQXR0ZW1wdHMgKyAiLCBtRmFpbGVkUGF0Li4uPSIKKyAgICAgICAgICAgICAgICAgKyBtRmFpbGVkUGF0dGVybkF0dGVtcHRzU2luY2VMYXN0VGltZW91dAorICAgICAgICAgICAgICAgICApOworCisgICAgICAgIG1DcmVhdGlvbk9yaWVudGF0aW9uID0gY29uZmlndXJhdGlvbi5vcmllbnRhdGlvbjsKKworICAgICAgICBMYXlvdXRJbmZsYXRlciBpbmZsYXRlciA9IExheW91dEluZmxhdGVyLmZyb20oY29udGV4dCk7CisgICAgICAgIGlmIChtQ3JlYXRpb25PcmllbnRhdGlvbiAhPSBDb25maWd1cmF0aW9uLk9SSUVOVEFUSU9OX0xBTkRTQ0FQRSkgeworICAgICAgICAgICAgaW5mbGF0ZXIuaW5mbGF0ZShSLmxheW91dC5rZXlndWFyZF9zY3JlZW5fdW5sb2NrX3BvcnRyYWl0LCB0aGlzLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3VubG9ja19sYW5kc2NhcGUsIHRoaXMsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgbUNhcnJpZXIgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmNhcnJpZXIpOworICAgICAgICBtRGF0ZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuZGF0ZSk7CisKKyAgICAgICAgbURhdGVGb3JtYXRTdHJpbmcgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmZ1bGxfd2RheV9tb250aF9kYXlfbm9feWVhcik7CisgICAgICAgIHJlZnJlc2hUaW1lQW5kRGF0ZURpc3BsYXkoKTsKKworICAgICAgICBtU3RhdHVzMSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuc3RhdHVzMSk7CisgICAgICAgIG1TdGF0dXNTZXAgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnN0YXR1c1NlcCk7CisgICAgICAgIG1TdGF0dXMyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5zdGF0dXMyKTsKKworICAgICAgICByZXNldFN0YXR1c0luZm8oKTsKKworCisgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcgPSAoTG9ja1BhdHRlcm5WaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5sb2NrUGF0dGVybik7CisKKyAgICAgICAgbUZvb3Rlck5vcm1hbCA9IChWaWV3R3JvdXApIGZpbmRWaWV3QnlJZChSLmlkLmZvb3Rlck5vcm1hbCk7CisgICAgICAgIG1Gb290ZXJGb3Jnb3RQYXR0ZXJuID0gKFZpZXdHcm91cCkgZmluZFZpZXdCeUlkKFIuaWQuZm9vdGVyRm9yZ290UGF0dGVybik7CisKKyAgICAgICAgLy8gZW1lcmdlbmN5IGNhbGwgYnV0dG9ucworICAgICAgICBmaW5hbCBPbkNsaWNrTGlzdGVuZXIgZW1lcmdlbmN5Q2xpY2sgPSBuZXcgT25DbGlja0xpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sudGFrZUVtZXJnZW5jeUNhbGxBY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBtRW1lcmdlbmN5QWxvbmUgPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5lbWVyZ2VuY3lDYWxsQWxvbmUpOworICAgICAgICBtRW1lcmdlbmN5QWxvbmUuc2V0Rm9jdXNhYmxlKGZhbHNlKTsgLy8gdG91Y2ggb25seSEKKyAgICAgICAgbUVtZXJnZW5jeUFsb25lLnNldE9uQ2xpY2tMaXN0ZW5lcihlbWVyZ2VuY3lDbGljayk7CisgICAgICAgIG1FbWVyZ2VuY3lUb2dldGhlciA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLmVtZXJnZW5jeUNhbGxUb2dldGhlcik7CisgICAgICAgIG1FbWVyZ2VuY3lUb2dldGhlci5zZXRGb2N1c2FibGUoZmFsc2UpOworICAgICAgICBtRW1lcmdlbmN5VG9nZXRoZXIuc2V0T25DbGlja0xpc3RlbmVyKGVtZXJnZW5jeUNsaWNrKTsKKyAgICAgICAgcmVmcmVzaEVtZXJnZW5jeUJ1dHRvblRleHQoKTsKKworICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbiA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLmZvcmdvdFBhdHRlcm4pOworICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbi5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fZm9yZ290X3BhdHRlcm5fYnV0dG9uX3RleHQpOworICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IE9uQ2xpY2tMaXN0ZW5lcigpIHsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2suZm9yZ290UGF0dGVybih0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gbWFrZSBpdCBzbyB1bmhhbmRsZWQgdG91Y2ggZXZlbnRzIHdpdGhpbiB0aGUgdW5sb2NrIHNjcmVlbiBnbyB0byB0aGUKKyAgICAgICAgLy8gbG9jayBwYXR0ZXJuIHZpZXcuCisgICAgICAgIHNldERlZmF1bHRUb3VjaFJlY2VwaWVudChtTG9ja1BhdHRlcm5WaWV3KTsKKworICAgICAgICBtTG9ja1BhdHRlcm5WaWV3LnNldFNhdmVFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5zZXRGb2N1c2FibGUoZmFsc2UpOworICAgICAgICBtTG9ja1BhdHRlcm5WaWV3LnNldE9uUGF0dGVybkxpc3RlbmVyKG5ldyBVbmxvY2tQYXR0ZXJuTGlzdGVuZXIoKSk7CisKKyAgICAgICAgLy8gc3RlYWx0aCBtb2RlIHdpbGwgYmUgdGhlIHNhbWUgZm9yIHRoZSBsaWZlIG9mIHRoaXMgc2NyZWVuCisgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcuc2V0SW5TdGVhbHRoTW9kZSghbUxvY2tQYXR0ZXJuVXRpbHMuaXNWaXNpYmxlUGF0dGVybkVuYWJsZWQoKSk7CisKKyAgICAgICAgLy8gdmlicmF0ZSBtb2RlIHdpbGwgYmUgdGhlIHNhbWUgZm9yIHRoZSBsaWZlIG9mIHRoaXMgc2NyZWVuCisgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcuc2V0VGFjdGlsZUZlZWRiYWNrRW5hYmxlZChtTG9ja1BhdHRlcm5VdGlscy5pc1RhY3RpbGVGZWVkYmFja0VuYWJsZWQoKSk7CisKKyAgICAgICAgLy8gYXNzdW1lIG5vcm1hbCBmb290ZXIgbW9kZSBmb3Igbm93CisgICAgICAgIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlLk5vcm1hbCk7CisKKyAgICAgICAgdXBkYXRlTW9uaXRvci5yZWdpc3RlckluZm9DYWxsYmFjayh0aGlzKTsKKyAgICAgICAgdXBkYXRlTW9uaXRvci5yZWdpc3RlclNpbVN0YXRlQ2FsbGJhY2sodGhpcyk7CisgICAgICAgIHNldEZvY3VzYWJsZUluVG91Y2hNb2RlKHRydWUpOworCisgICAgICAgIC8vIFJlcXVpcmVkIHRvIGdldCBNYXJxdWVlIHRvIHdvcmsuCisgICAgICAgIG1DYXJyaWVyLnNldFNlbGVjdGVkKHRydWUpOworICAgICAgICBtQ2Fycmllci5zZXRUZXh0Q29sb3IoMHhmZmZmZmZmZik7CisKKyAgICAgICAgLy8gdW50aWwgd2UgZ2V0IGFuIHVwZGF0ZS4uLgorICAgICAgICBtQ2Fycmllci5zZXRUZXh0KAorICAgICAgICAgICAgICAgIExvY2tTY3JlZW4uZ2V0Q2FycmllclN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVBsbW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVNwbigpKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlZnJlc2hFbWVyZ2VuY3lCdXR0b25UZXh0KCkgeworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUFsb25lKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lUb2dldGhlcik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RW5hYmxlRmFsbGJhY2soYm9vbGVhbiBzdGF0ZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldEVuYWJsZUZhbGxiYWNrKCIgKyBzdGF0ZSArICIpIik7CisgICAgICAgIG1FbmFibGVGYWxsYmFjayA9IHN0YXRlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZXNldFN0YXR1c0luZm8oKSB7CisgICAgICAgIG1JbnN0cnVjdGlvbnMgPSBudWxsOworICAgICAgICBtU2hvd2luZ0JhdHRlcnlJbmZvID0gbVVwZGF0ZU1vbml0b3Iuc2hvdWxkU2hvd0JhdHRlcnlJbmZvKCk7CisgICAgICAgIG1QbHVnZ2VkSW4gPSBtVXBkYXRlTW9uaXRvci5pc0RldmljZVBsdWdnZWRJbigpOworICAgICAgICBtQmF0dGVyeUxldmVsID0gbVVwZGF0ZU1vbml0b3IuZ2V0QmF0dGVyeUxldmVsKCk7CisgICAgICAgIG1OZXh0QWxhcm0gPSBtTG9ja1BhdHRlcm5VdGlscy5nZXROZXh0QWxhcm0oKTsKKyAgICAgICAgdXBkYXRlU3RhdHVzTGluZXMoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU3RhdHVzTGluZXMoKSB7CisgICAgICAgIGlmIChtSW5zdHJ1Y3Rpb25zICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIGluc3RydWN0aW9ucyBvbmx5CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRUZXh0KG1JbnN0cnVjdGlvbnMpOworICAgICAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KG1JbnN0cnVjdGlvbnMpKSB7CisgICAgICAgICAgICAgICAgbVN0YXR1czEuc2V0Q29tcG91bmREcmF3YWJsZXNXaXRoSW50cmluc2ljQm91bmRzKDAsIDAsIDAsIDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtU3RhdHVzMS5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoCisgICAgICAgICAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX2xvY2tfaWRsZV9sb2NrLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbVN0YXR1czEuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVN0YXR1c1NlcC5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICBtU3RhdHVzMi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgIH0gZWxzZSBpZiAobVNob3dpbmdCYXR0ZXJ5SW5mbyAmJiBtTmV4dEFsYXJtID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIGJhdHRlcnkgb25seQorICAgICAgICAgICAgaWYgKG1QbHVnZ2VkSW4pIHsKKyAgICAgICAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWwgPj0gMTAwKSB7CisgICAgICAgICAgICAgICAgbVN0YXR1czEuc2V0VGV4dChnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fY2hhcmdlZCkpOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgbVN0YXR1czEuc2V0VGV4dChnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fcGx1Z2dlZF9pbiwgbUJhdHRlcnlMZXZlbCkpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQoZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5sb2Nrc2NyZWVuX2xvd19iYXR0ZXJ5KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoUi5kcmF3YWJsZS5pY19sb2NrX2lkbGVfY2hhcmdpbmcsIDAsIDAsIDApOworCisgICAgICAgICAgICBtU3RhdHVzMS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICBtU3RhdHVzU2VwLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKworICAgICAgICB9IGVsc2UgaWYgKG1OZXh0QWxhcm0gIT0gbnVsbCAmJiAhbVNob3dpbmdCYXR0ZXJ5SW5mbykgeworICAgICAgICAgICAgLy8gYWxhcm0gb25seQorICAgICAgICAgICAgbVN0YXR1czEuc2V0VGV4dChtTmV4dEFsYXJtKTsKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcyhSLmRyYXdhYmxlLmljX2xvY2tfaWRsZV9hbGFybSwgMCwgMCwgMCk7CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1TdGF0dXNTZXAuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgbVN0YXR1czIuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB9IGVsc2UgaWYgKG1OZXh0QWxhcm0gIT0gbnVsbCAmJiBtU2hvd2luZ0JhdHRlcnlJbmZvKSB7CisgICAgICAgICAgICAvLyBib3RoIGJhdHRlcnkgYW5kIG5leHQgYWxhcm0KKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQobU5leHRBbGFybSk7CisgICAgICAgICAgICBtU3RhdHVzU2VwLnNldFRleHQoInwiKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFRleHQoZ2V0Q29udGV4dCgpLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgUi5zdHJpbmcubG9ja3NjcmVlbl9iYXR0ZXJ5X3Nob3J0LAorICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbigxMDAsIG1CYXR0ZXJ5TGV2ZWwpKSk7CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoUi5kcmF3YWJsZS5pY19sb2NrX2lkbGVfYWxhcm0sIDAsIDAsIDApOworICAgICAgICAgICAgaWYgKG1QbHVnZ2VkSW4pIHsKKyAgICAgICAgICAgICAgICBtU3RhdHVzMi5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoUi5kcmF3YWJsZS5pY19sb2NrX2lkbGVfY2hhcmdpbmcsIDAsIDAsIDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtU3RhdHVzMi5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoMCwgMCwgMCwgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1TdGF0dXNTZXAuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVN0YXR1czIuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gbm90aGluZyBzcGVjaWZpYyB0byBzaG93OyBzaG93IGdlbmVyYWwgaW5zdHJ1Y3Rpb25zCisgICAgICAgICAgICBtU3RhdHVzMS5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fcGF0dGVybl9pbnN0cnVjdGlvbnMpOworICAgICAgICAgICAgbVN0YXR1czEuc2V0Q29tcG91bmREcmF3YWJsZXNXaXRoSW50cmluc2ljQm91bmRzKFIuZHJhd2FibGUuaWNfbG9ja19pZGxlX2xvY2ssIDAsIDAsIDApOworCisgICAgICAgICAgICBtU3RhdHVzMS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICBtU3RhdHVzU2VwLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcHJpdmF0ZSB2b2lkIHJlZnJlc2hUaW1lQW5kRGF0ZURpc3BsYXkoKSB7CisgICAgICAgIG1EYXRlLnNldFRleHQoRGF0ZUZvcm1hdC5mb3JtYXQobURhdGVGb3JtYXRTdHJpbmcsIG5ldyBEYXRlKCkpKTsKKyAgICB9CisKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoVG91Y2hFdmVudChNb3Rpb25FdmVudCBldikgeworICAgICAgICAvLyBhcyBsb25nIGFzIHRoZSB1c2VyIGlzIGVudGVyaW5nIGEgcGF0dGVybiAoaS5lIHNlbmRpbmcgYSB0b3VjaAorICAgICAgICAvLyBldmVudCB0aGF0IHdhcyBoYW5kbGVkIGJ5IHRoaXMgc2NyZWVuKSwga2VlcCBwb2tpbmcgdGhlCisgICAgICAgIC8vIHdha2UgbG9jayBzbyB0aGF0IHRoZSBzY3JlZW4gd2lsbCBzdGF5IG9uLgorICAgICAgICBmaW5hbCBib29sZWFuIHJlc3VsdCA9IHN1cGVyLmRpc3BhdGNoVG91Y2hFdmVudChldik7CisgICAgICAgIGlmIChyZXN1bHQgJiYKKyAgICAgICAgICAgICAgICAoKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpIC0gbUxhc3RQb2tlVGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgID4gIChVTkxPQ0tfUEFUVEVSTl9XQUtFX0lOVEVSVkFMX01TIC0gMTAwKSkpIHsKKyAgICAgICAgICAgIG1MYXN0UG9rZVRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworCisgICAgLy8gLS0tLS0tLS0tLSBJbmZvQ2FsbGJhY2sKKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25SZWZyZXNoQmF0dGVyeUluZm8oYm9vbGVhbiBzaG93QmF0dGVyeUluZm8sIGJvb2xlYW4gcGx1Z2dlZEluLCBpbnQgYmF0dGVyeUxldmVsKSB7CisgICAgICAgIG1TaG93aW5nQmF0dGVyeUluZm8gPSBzaG93QmF0dGVyeUluZm87CisgICAgICAgIG1QbHVnZ2VkSW4gPSBwbHVnZ2VkSW47CisgICAgICAgIG1CYXR0ZXJ5TGV2ZWwgPSBiYXR0ZXJ5TGV2ZWw7CisgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblRpbWVDaGFuZ2VkKCkgeworICAgICAgICByZWZyZXNoVGltZUFuZERhdGVEaXNwbGF5KCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblJlZnJlc2hDYXJyaWVySW5mbyhDaGFyU2VxdWVuY2UgcGxtbiwgQ2hhclNlcXVlbmNlIHNwbikgeworICAgICAgICBtQ2Fycmllci5zZXRUZXh0KExvY2tTY3JlZW4uZ2V0Q2FycmllclN0cmluZyhwbG1uLCBzcG4pKTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uUmluZ2VyTW9kZUNoYW5nZWQoaW50IHN0YXRlKSB7CisgICAgICAgIC8vIG5vdCBjdXJyZW50bHkgdXNlZAorICAgIH0KKworICAgIC8vIC0tLS0tLS0tLS0gU2ltU3RhdGVDYWxsYmFjaworCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblNpbVN0YXRlQ2hhbmdlZChJY2NDYXJkLlN0YXRlIHNpbVN0YXRlKSB7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgaWYgKExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LkRFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIioqKioqIFBBVFRFUk4gQVRUQUNIRUQgVE8gV0lORE9XIik7CisgICAgICAgICAgICBMb2cudihUQUcsICJDdXIgb3JpZW50PSIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICArICIsIG5ldyBjb25maWc9IiArIGdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKS5vcmllbnRhdGlvbiAhPSBtQ3JlYXRpb25PcmllbnRhdGlvbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUoZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnKSB7CisgICAgICAgIHN1cGVyLm9uQ29uZmlndXJhdGlvbkNoYW5nZWQobmV3Q29uZmlnKTsKKyAgICAgICAgaWYgKExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LkRFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIioqKioqIFBBVFRFUk4gQ09ORklHVVJBVElPTiBDSEFOR0VEIik7CisgICAgICAgICAgICBMb2cudihUQUcsICJDdXIgb3JpZW50PSIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICArICIsIG5ldyBjb25maWc9IiArIGdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld0NvbmZpZy5vcmllbnRhdGlvbiAhPSBtQ3JlYXRpb25PcmllbnRhdGlvbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUobmV3Q29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25LZXlib2FyZENoYW5nZShib29sZWFuIGlzS2V5Ym9hcmRPcGVuKSB7fQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBuZWVkc0lucHV0KCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblBhdXNlKCkgeworICAgICAgICBpZiAobUNvdW50ZG93blRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1Db3VudGRvd25UaW1lci5jYW5jZWwoKTsKKyAgICAgICAgICAgIG1Db3VudGRvd25UaW1lciA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICAvLyByZXNldCBoZWFkZXIKKyAgICAgICAgcmVzZXRTdGF0dXNJbmZvKCk7CisKKyAgICAgICAgLy8gcmVzZXQgbG9jayBwYXR0ZXJuCisgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcuZW5hYmxlSW5wdXQoKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5zZXRFbmFibGVkKHRydWUpOworICAgICAgICBtTG9ja1BhdHRlcm5WaWV3LmNsZWFyUGF0dGVybigpOworCisgICAgICAgIC8vIHNob3cgImZvcmdvdCBwYXR0ZXJuPyIgYnV0dG9uIGlmIHdlIGhhdmUgYW4gYWx0ZXJuYXRlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZAorICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbi5zZXRWaXNpYmlsaXR5KG1DYWxsYmFjay5kb2VzRmFsbGJhY2tVbmxvY2tTY3JlZW5FeGlzdCgpCisgICAgICAgICAgICAgICAgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgLy8gaWYgdGhlIHVzZXIgaXMgY3VycmVudGx5IGxvY2tlZCBvdXQsIGVuZm9yY2UgaXQuCisgICAgICAgIGxvbmcgZGVhZGxpbmUgPSBtTG9ja1BhdHRlcm5VdGlscy5nZXRMb2Nrb3V0QXR0ZW1wdERlYWRsaW5lKCk7CisgICAgICAgIGlmIChkZWFkbGluZSAhPSAwKSB7CisgICAgICAgICAgICBoYW5kbGVBdHRlbXB0TG9ja291dChkZWFkbGluZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyB0aGUgZm9vdGVyIGRlcGVuZHMgb24gaG93IG1hbnkgdG90YWwgYXR0ZW1wdHMgdGhlIHVzZXIgaGFzIGZhaWxlZAorICAgICAgICBpZiAobUNhbGxiYWNrLmlzVmVyaWZ5VW5sb2NrT25seSgpKSB7CisgICAgICAgICAgICB1cGRhdGVGb290ZXIoRm9vdGVyTW9kZS5WZXJpZnlVbmxvY2tlZCk7CisgICAgICAgIH0gZWxzZSBpZiAobUVuYWJsZUZhbGxiYWNrICYmCisgICAgICAgICAgICAgICAgKG1Ub3RhbEZhaWxlZFBhdHRlcm5BdHRlbXB0cyA+PSBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfVElNRU9VVCkpIHsKKyAgICAgICAgICAgIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlLkZvcmdvdExvY2tQYXR0ZXJuKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlLk5vcm1hbCk7CisgICAgICAgIH0KKworICAgICAgICByZWZyZXNoRW1lcmdlbmN5QnV0dG9uVGV4dCgpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgY2xlYW5VcCgpIHsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IucmVtb3ZlQ2FsbGJhY2sodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25XaW5kb3dGb2N1c0NoYW5nZWQoYm9vbGVhbiBoYXNXaW5kb3dGb2N1cykgeworICAgICAgICBzdXBlci5vbldpbmRvd0ZvY3VzQ2hhbmdlZChoYXNXaW5kb3dGb2N1cyk7CisgICAgICAgIGlmIChoYXNXaW5kb3dGb2N1cykgeworICAgICAgICAgICAgLy8gd2hlbiB0aW1lb3V0IGRpYWxvZyBjbG9zZXMgd2Ugd2FudCB0byB1cGRhdGUgb3VyIHN0YXRlCisgICAgICAgICAgICBvblJlc3VtZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBVbmxvY2tQYXR0ZXJuTGlzdGVuZXIKKyAgICAgICAgICAgIGltcGxlbWVudHMgTG9ja1BhdHRlcm5WaWV3Lk9uUGF0dGVybkxpc3RlbmVyIHsKKworICAgICAgICBwdWJsaWMgdm9pZCBvblBhdHRlcm5TdGFydCgpIHsKKyAgICAgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcucmVtb3ZlQ2FsbGJhY2tzKG1DYW5jZWxQYXR0ZXJuUnVubmFibGUpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgb25QYXR0ZXJuQ2xlYXJlZCgpIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG9uUGF0dGVybkNlbGxBZGRlZChMaXN0PENlbGw+IHBhdHRlcm4pIHsKKyAgICAgICAgICAgIC8vIFRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbCBwb2tpbmcgb2YgdGhlIHdha2Vsb2NrLCBsb29rIGZvcgorICAgICAgICAgICAgLy8gdGhlIHVzZXIgYWN0dWFsbHkgdHJ5aW5nIHRvIGRyYXcgYSBwYXR0ZXJuIG9mIHNvbWUgbWluaW1hbCBsZW5ndGguCisgICAgICAgICAgICBpZiAocGF0dGVybi5zaXplKCkgPiBNSU5fUEFUVEVSTl9CRUZPUkVfUE9LRV9XQUtFTE9DSykgeworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5wb2tlV2FrZWxvY2soVU5MT0NLX1BBVFRFUk5fV0FLRV9JTlRFUlZBTF9NUyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEdpdmUganVzdCBhIGxpdHRsZSBleHRyYSB0aW1lIGlmIHRoZXkgaGl0IG9uZSBvZiB0aGUgZmlyc3QgZmV3IGRvdHMKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKFVOTE9DS19QQVRURVJOX1dBS0VfSU5URVJWQUxfRklSU1RfRE9UU19NUyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBvblBhdHRlcm5EZXRlY3RlZChMaXN0PExvY2tQYXR0ZXJuVmlldy5DZWxsPiBwYXR0ZXJuKSB7CisgICAgICAgICAgICBpZiAobUxvY2tQYXR0ZXJuVXRpbHMuY2hlY2tQYXR0ZXJuKHBhdHRlcm4pKSB7CisgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVmlldworICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpc3BsYXlNb2RlKExvY2tQYXR0ZXJuVmlldy5EaXNwbGF5TW9kZS5Db3JyZWN0KTsKKyAgICAgICAgICAgICAgICBtSW5zdHJ1Y3Rpb25zID0gIiI7CisgICAgICAgICAgICAgICAgdXBkYXRlU3RhdHVzTGluZXMoKTsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sua2V5Z3VhcmREb25lKHRydWUpOworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5yZXBvcnRTdWNjZXNzZnVsVW5sb2NrQXR0ZW1wdCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5zaXplKCkgPiBNSU5fUEFUVEVSTl9CRUZPUkVfUE9LRV9XQUtFTE9DSykgeworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKFVOTE9DS19QQVRURVJOX1dBS0VfSU5URVJWQUxfTVMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5WaWV3LnNldERpc3BsYXlNb2RlKExvY2tQYXR0ZXJuVmlldy5EaXNwbGF5TW9kZS5Xcm9uZyk7CisgICAgICAgICAgICAgICAgaWYgKHBhdHRlcm4uc2l6ZSgpID49IExvY2tQYXR0ZXJuVXRpbHMuTUlOX1BBVFRFUk5fUkVHSVNURVJfRkFJTCkgeworICAgICAgICAgICAgICAgICAgICBtVG90YWxGYWlsZWRQYXR0ZXJuQXR0ZW1wdHMrKzsKKyAgICAgICAgICAgICAgICAgICAgbUZhaWxlZFBhdHRlcm5BdHRlbXB0c1NpbmNlTGFzdFRpbWVvdXQrKzsKKyAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrLnJlcG9ydEZhaWxlZFVubG9ja0F0dGVtcHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1GYWlsZWRQYXR0ZXJuQXR0ZW1wdHNTaW5jZUxhc3RUaW1lb3V0ID49IExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VUKSB7CisgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVhZGxpbmUgPSBtTG9ja1BhdHRlcm5VdGlscy5zZXRMb2Nrb3V0QXR0ZW1wdERlYWRsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUF0dGVtcHRMb2Nrb3V0KGRlYWRsaW5lKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIG1VbmxvY2tJY29uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICAgICAgbUluc3RydWN0aW9ucyA9IGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcubG9ja3NjcmVlbl9wYXR0ZXJuX3dyb25nKTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdHVzTGluZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5wb3N0RGVsYXllZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2FuY2VsUGF0dGVyblJ1bm5hYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVFRFUk5fQ0xFQVJfVElNRU9VVF9NUyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUF0dGVtcHRMb2Nrb3V0KGxvbmcgZWxhcHNlZFJlYWx0aW1lRGVhZGxpbmUpIHsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5jbGVhclBhdHRlcm4oKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbG9uZyBlbGFwc2VkUmVhbHRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKKyAgICAgICAgbUNvdW50ZG93blRpbWVyID0gbmV3IENvdW50RG93blRpbWVyKGVsYXBzZWRSZWFsdGltZURlYWRsaW5lIC0gZWxhcHNlZFJlYWx0aW1lLCAxMDAwKSB7CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25UaWNrKGxvbmcgbWlsbGlzVW50aWxGaW5pc2hlZCkgeworICAgICAgICAgICAgICAgIGludCBzZWNvbmRzUmVtYWluaW5nID0gKGludCkgKG1pbGxpc1VudGlsRmluaXNoZWQgLyAxMDAwKTsKKyAgICAgICAgICAgICAgICBtSW5zdHJ1Y3Rpb25zID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFIuc3RyaW5nLmxvY2tzY3JlZW5fdG9vX21hbnlfZmFpbGVkX2F0dGVtcHRzX2NvdW50ZG93biwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHNSZW1haW5pbmcpOworICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25GaW5pc2goKSB7CisgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5zZXRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIG1JbnN0cnVjdGlvbnMgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fcGF0dGVybl9pbnN0cnVjdGlvbnMpOworICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgICAgICAgICAgICAgLy8gVE9ETyBtVW5sb2NrSWNvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbUZhaWxlZFBhdHRlcm5BdHRlbXB0c1NpbmNlTGFzdFRpbWVvdXQgPSAwOworICAgICAgICAgICAgICAgIGlmIChtRW5hYmxlRmFsbGJhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlRm9vdGVyKEZvb3Rlck1vZGUuRm9yZ290TG9ja1BhdHRlcm4pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlLk5vcm1hbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LnN0YXJ0KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25QaG9uZVN0YXRlQ2hhbmdlZChTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgcmVmcmVzaEVtZXJnZW5jeUJ1dHRvblRleHQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lTGF5b3V0SW5mbGF0ZXIuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGhvbmVMYXlvdXRJbmZsYXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZjRiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lTGF5b3V0SW5mbGF0ZXIuamF2YQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKKworcHVibGljIGNsYXNzIFBob25lTGF5b3V0SW5mbGF0ZXIgZXh0ZW5kcyBMYXlvdXRJbmZsYXRlciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gc0NsYXNzUHJlZml4TGlzdCA9IHsKKyAgICAgICAgImFuZHJvaWQud2lkZ2V0LiIsCisgICAgICAgICJhbmRyb2lkLndlYmtpdC4iCisgICAgfTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBJbnN0ZWFkIG9mIGluc3RhbnRpYXRpbmcgZGlyZWN0bHksIHlvdSBzaG91bGQgcmV0cmlldmUgYW4gaW5zdGFuY2UKKyAgICAgKiB0aHJvdWdoIHtAbGluayBDb250ZXh0I2dldFN5c3RlbVNlcnZpY2V9CisgICAgICogCisgICAgICogQHBhcmFtIGNvbnRleHQgVGhlIENvbnRleHQgaW4gd2hpY2ggaW4gd2hpY2ggdG8gZmluZCByZXNvdXJjZXMgYW5kIG90aGVyCisgICAgICogICAgICAgICAgICAgICAgYXBwbGljYXRpb24tc3BlY2lmaWMgdGhpbmdzLgorICAgICAqIAorICAgICAqIEBzZWUgQ29udGV4dCNnZXRTeXN0ZW1TZXJ2aWNlCisgICAgICovCisgICAgcHVibGljIFBob25lTGF5b3V0SW5mbGF0ZXIoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgUGhvbmVMYXlvdXRJbmZsYXRlcihMYXlvdXRJbmZsYXRlciBvcmlnaW5hbCwgQ29udGV4dCBuZXdDb250ZXh0KSB7CisgICAgICAgIHN1cGVyKG9yaWdpbmFsLCBuZXdDb250ZXh0KTsKKyAgICB9CisgICAgCisgICAgLyoqIE92ZXJyaWRlIG9uQ3JlYXRlVmlldyB0byBpbnN0YW50aWF0ZSBuYW1lcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlCisgICAgICAgIHdpZGdldHMga25vd24gdG8gdGhlIFdpZGdldCBmYWN0b3J5LiBJZiB3ZSBkb24ndCBmaW5kIGEgbWF0Y2gsCisgICAgICAgIGNhbGwgdGhyb3VnaCB0byBvdXIgc3VwZXIgY2xhc3MuCisgICAgKi8KKyAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIFZpZXcgb25DcmVhdGVWaWV3KFN0cmluZyBuYW1lLCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgZm9yIChTdHJpbmcgcHJlZml4IDogc0NsYXNzUHJlZml4TGlzdCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBWaWV3IHZpZXcgPSBjcmVhdGVWaWV3KG5hbWUsIHByZWZpeCwgYXR0cnMpOworICAgICAgICAgICAgICAgIGlmICh2aWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gbGV0IHRoZSBiYXNlIGNsYXNzIHRha2UgYSBjcmFjaworICAgICAgICAgICAgICAgIC8vIGF0IGl0LgorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN1cGVyLm9uQ3JlYXRlVmlldyhuYW1lLCBhdHRycyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBMYXlvdXRJbmZsYXRlciBjbG9uZUluQ29udGV4dChDb250ZXh0IG5ld0NvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQaG9uZUxheW91dEluZmxhdGVyKHRoaXMsIG5ld0NvbnRleHQpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9QaG9uZVdpbmRvdy5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9QaG9uZVdpbmRvdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NDI1ODgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lV2luZG93LmphdmEKQEAgLTAsMCArMSwyODA4IEBACisvKgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMuV1JBUF9DT05URU5UOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19GVUxMU0NSRUVOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5TRVRfREVDT1I7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9JTl9TQ1JFRU47CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX1NIT1dfV0FMTFBBUEVSOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5CYXNlU3VyZmFjZUhvbGRlcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LlJvb3RWaWV3U3VyZmFjZVRha2VyOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5Db250ZXh0TWVudUJ1aWxkZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5tZW51Lk1lbnVCdWlsZGVyOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5NZW51RGlhbG9nSGVscGVyOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5NZW51VmlldzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuU3ViTWVudUJ1aWxkZXI7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5LZXlndWFyZE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuU2VhcmNoTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQWN0aXZpdHlOb3RGb3VuZEV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlR5cGVkQXJyYXk7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWw7CitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxhYmxlOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC51dGlsLkNvbmZpZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuRXZlbnRMb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXk7CitpbXBvcnQgYW5kcm9pZC52aWV3LkdyYXZpdHk7CitpbXBvcnQgYW5kcm9pZC52aWV3LkhhcHRpY0ZlZWRiYWNrQ29uc3RhbnRzOworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dFF1ZXVlOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlDaGFyYWN0ZXJNYXA7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTWVudTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTWVudUl0ZW07CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudmlldy5Wb2x1bWVQYW5lbDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvblV0aWxzOworaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlByb2dyZXNzQmFyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworCisvKioKKyAqIEFuZHJvaWQtc3BlY2lmaWMgV2luZG93LgorICogPHA+CisgKiB0b2RvOiBuZWVkIHRvIHB1bGwgdGhlIGdlbmVyaWMgZnVuY3Rpb25hbGl0eSBvdXQgaW50byBhIGJhc2UgY2xhc3MKKyAqIGluIGFuZHJvaWQud2lkZ2V0LgorICovCitwdWJsaWMgY2xhc3MgUGhvbmVXaW5kb3cgZXh0ZW5kcyBXaW5kb3cgaW1wbGVtZW50cyBNZW51QnVpbGRlci5DYWxsYmFjayB7CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgVEFHID0gIlBob25lV2luZG93IjsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJvb2xlYW4gU1dFRVBfT1BFTl9NRU5VID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGUgY2FsbGJhY2sgdXNlZCBieSB0aGUgY29udGV4dCBtZW51IGFuZCBpdHMgc3VibWVudXMuIFRoZSBvcHRpb25zCisgICAgICogbWVudSBzdWJtZW51cyBkbyBub3QgdXNlIHRoaXMgKHRoZWlyIGJlaGF2aW9yIGlzIG1vcmUgY29tcGxleCkuCisgICAgICovCisgICAgQ29udGV4dE1lbnVDYWxsYmFjayBtQ29udGV4dE1lbnVDYWxsYmFjayA9IG5ldyBDb250ZXh0TWVudUNhbGxiYWNrKEZFQVRVUkVfQ09OVEVYVF9NRU5VKTsKKworICAgIC8vIFRoaXMgaXMgdGhlIHRvcC1sZXZlbCB2aWV3IG9mIHRoZSB3aW5kb3csIGNvbnRhaW5pbmcgdGhlIHdpbmRvdyBkZWNvci4KKyAgICBwcml2YXRlIERlY29yVmlldyBtRGVjb3I7CisKKyAgICAvLyBUaGlzIGlzIHRoZSB2aWV3IGluIHdoaWNoIHRoZSB3aW5kb3cgY29udGVudHMgYXJlIHBsYWNlZC4gSXQgaXMgZWl0aGVyCisgICAgLy8gbURlY29yIGl0c2VsZiwgb3IgYSBjaGlsZCBvZiBtRGVjb3Igd2hlcmUgdGhlIGNvbnRlbnRzIGdvLgorICAgIHByaXZhdGUgVmlld0dyb3VwIG1Db250ZW50UGFyZW50OworCisgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBtVGFrZVN1cmZhY2VDYWxsYmFjazsKKyAgICBCYXNlU3VyZmFjZUhvbGRlciBtU3VyZmFjZUhvbGRlcjsKKyAgICAKKyAgICBJbnB1dFF1ZXVlLkNhbGxiYWNrIG1UYWtlSW5wdXRRdWV1ZUNhbGxiYWNrOworICAgIAorICAgIHByaXZhdGUgYm9vbGVhbiBtSXNGbG9hdGluZzsKKworICAgIHByaXZhdGUgTGF5b3V0SW5mbGF0ZXIgbUxheW91dEluZmxhdGVyOworCisgICAgcHJpdmF0ZSBUZXh0VmlldyBtVGl0bGVWaWV3OworCisgICAgcHJpdmF0ZSBEcmF3YWJsZUZlYXR1cmVTdGF0ZVtdIG1EcmF3YWJsZXM7CisKKyAgICBwcml2YXRlIFBhbmVsRmVhdHVyZVN0YXRlW10gbVBhbmVsczsKKworICAgIC8qKgorICAgICAqIFRoZSBwYW5lbCB0aGF0IGlzIHByZXBhcmVkIG9yIG9wZW5lZCAodGhlIG1vc3QgcmVjZW50IG9uZSBpZiB0aGVyZSBhcmUKKyAgICAgKiBtdWx0aXBsZSBwYW5lbHMpLiBTaG9ydGN1dHMgd2lsbCBnbyB0byB0aGlzIHBhbmVsLiBJdCBnZXRzIHNldCBpbgorICAgICAqIHtAbGluayAjcHJlcGFyZVBhbmVsfSBhbmQgY2xlYXJlZCBpbiB7QGxpbmsgI2Nsb3NlUGFuZWx9LgorICAgICAqLworICAgIHByaXZhdGUgUGFuZWxGZWF0dXJlU3RhdGUgbVByZXBhcmVkUGFuZWw7CisKKyAgICAvKioKKyAgICAgKiBUaGUga2V5Y29kZSB0aGF0IGlzIGN1cnJlbnRseSBoZWxkIGRvd24gKGFzIGEgbW9kaWZpZXIpIGZvciBjaG9yZGluZy4gSWYKKyAgICAgKiB0aGlzIGlzIDAsIHRoZXJlIGlzIG5vIGtleSBoZWxkIGRvd24uCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbVBhbmVsQ2hvcmRpbmdLZXk7CisgICAgcHJpdmF0ZSBib29sZWFuIG1QYW5lbE1heUxvbmdQcmVzczsKKworICAgIHByaXZhdGUgSW1hZ2VWaWV3IG1MZWZ0SWNvblZpZXc7CisKKyAgICBwcml2YXRlIEltYWdlVmlldyBtUmlnaHRJY29uVmlldzsKKworICAgIHByaXZhdGUgUHJvZ3Jlc3NCYXIgbUNpcmN1bGFyUHJvZ3Jlc3NCYXI7CisKKyAgICBwcml2YXRlIFByb2dyZXNzQmFyIG1Ib3Jpem9udGFsUHJvZ3Jlc3NCYXI7CisKKyAgICBwcml2YXRlIGludCBtQmFja2dyb3VuZFJlc291cmNlID0gMDsKKworICAgIHByaXZhdGUgRHJhd2FibGUgbUJhY2tncm91bmREcmF3YWJsZTsKKworICAgIHByaXZhdGUgaW50IG1GcmFtZVJlc291cmNlID0gMDsKKworICAgIHByaXZhdGUgaW50IG1UZXh0Q29sb3IgPSAwOworCisgICAgcHJpdmF0ZSBDaGFyU2VxdWVuY2UgbVRpdGxlID0gbnVsbDsKKworICAgIHByaXZhdGUgaW50IG1UaXRsZUNvbG9yID0gMDsKKworICAgIHByaXZhdGUgQ29udGV4dE1lbnVCdWlsZGVyIG1Db250ZXh0TWVudTsKKyAgICBwcml2YXRlIE1lbnVEaWFsb2dIZWxwZXIgbUNvbnRleHRNZW51SGVscGVyOworCisgICAgcHJpdmF0ZSBpbnQgbVZvbHVtZUNvbnRyb2xTdHJlYW1UeXBlID0gQXVkaW9NYW5hZ2VyLlVTRV9ERUZBVUxUX1NUUkVBTV9UWVBFOworICAgIHByaXZhdGUgbG9uZyBtVm9sdW1lS2V5VXBUaW1lOworCisgICAgcHJpdmF0ZSBLZXlndWFyZE1hbmFnZXIgbUtleWd1YXJkTWFuYWdlciA9IG51bGw7CisgICAgCisgICAgcHJpdmF0ZSBTZWFyY2hNYW5hZ2VyIG1TZWFyY2hNYW5hZ2VyID0gbnVsbDsKKworICAgIHByaXZhdGUgVGVsZXBob255TWFuYWdlciBtVGVsZXBob255TWFuYWdlciA9IG51bGw7CisgICAgCisgICAgcHVibGljIFBob25lV2luZG93KENvbnRleHQgY29udGV4dCkgeworICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICAgICAgbUxheW91dEluZmxhdGVyID0gTGF5b3V0SW5mbGF0ZXIuZnJvbShjb250ZXh0KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRDb250YWluZXIoV2luZG93IGNvbnRhaW5lcikgeworICAgICAgICBzdXBlci5zZXRDb250YWluZXIoY29udGFpbmVyKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1ZXN0RmVhdHVyZShpbnQgZmVhdHVyZUlkKSB7CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24oInJlcXVlc3RGZWF0dXJlKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFkZGluZyBjb250ZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgaW50IGZlYXR1cmVzID0gZ2V0RmVhdHVyZXMoKTsKKyAgICAgICAgaWYgKChmZWF0dXJlcyAhPSBERUZBVUxUX0ZFQVRVUkVTKSAmJiAoZmVhdHVyZUlkID09IEZFQVRVUkVfQ1VTVE9NX1RJVExFKSkgeworCisgICAgICAgICAgICAvKiBBbm90aGVyIGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIGVuYWJsZSB0aGUgY3VzdG9tIHRpdGxlIGZlYXR1cmUgKi8KKyAgICAgICAgICAgIHRocm93IG5ldyBBbmRyb2lkUnVudGltZUV4Y2VwdGlvbigiWW91IGNhbm5vdCBjb21iaW5lIGN1c3RvbSB0aXRsZXMgd2l0aCBvdGhlciB0aXRsZSBmZWF0dXJlcyIpOworICAgICAgICB9CisgICAgICAgIGlmICgoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9DVVNUT01fVElUTEUpKSAhPSAwKSAmJiAoZmVhdHVyZUlkICE9IEZFQVRVUkVfQ1VTVE9NX1RJVExFKSkgeworCisgICAgICAgICAgICAvKiBDdXN0b20gdGl0bGUgZmVhdHVyZSBpcyBlbmFibGVkIGFuZCB0aGUgdXNlciBpcyB0cnlpbmcgdG8gZW5hYmxlIGFub3RoZXIgZmVhdHVyZSAqLworICAgICAgICAgICAgdGhyb3cgbmV3IEFuZHJvaWRSdW50aW1lRXhjZXB0aW9uKCJZb3UgY2Fubm90IGNvbWJpbmUgY3VzdG9tIHRpdGxlcyB3aXRoIG90aGVyIHRpdGxlIGZlYXR1cmVzIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZlYXR1cmVJZCA9PSBGRUFUVVJFX09QRU5HTCkgeworICAgICAgICAgICAgZ2V0QXR0cmlidXRlcygpLm1lbW9yeVR5cGUgPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5NRU1PUllfVFlQRV9HUFU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1cGVyLnJlcXVlc3RGZWF0dXJlKGZlYXR1cmVJZCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0Q29udGVudFZpZXcoaW50IGxheW91dFJlc0lEKSB7CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1Db250ZW50UGFyZW50LnJlbW92ZUFsbFZpZXdzKCk7CisgICAgICAgIH0KKyAgICAgICAgbUxheW91dEluZmxhdGVyLmluZmxhdGUobGF5b3V0UmVzSUQsIG1Db250ZW50UGFyZW50KTsKKyAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICBpZiAoY2IgIT0gbnVsbCkgeworICAgICAgICAgICAgY2Iub25Db250ZW50Q2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0Q29udGVudFZpZXcoVmlldyB2aWV3KSB7CisgICAgICAgIHNldENvbnRlbnRWaWV3KHZpZXcsIG5ldyBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zKE1BVENIX1BBUkVOVCwgTUFUQ0hfUEFSRU5UKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0Q29udGVudFZpZXcoVmlldyB2aWV3LCBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zIHBhcmFtcykgeworICAgICAgICBpZiAobUNvbnRlbnRQYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgaW5zdGFsbERlY29yKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQ29udGVudFBhcmVudC5yZW1vdmVBbGxWaWV3cygpOworICAgICAgICB9CisgICAgICAgIG1Db250ZW50UGFyZW50LmFkZFZpZXcodmlldywgcGFyYW1zKTsKKyAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICBpZiAoY2IgIT0gbnVsbCkgeworICAgICAgICAgICAgY2Iub25Db250ZW50Q2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgYWRkQ29udGVudFZpZXcoVmlldyB2aWV3LCBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zIHBhcmFtcykgeworICAgICAgICBpZiAobUNvbnRlbnRQYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgaW5zdGFsbERlY29yKCk7CisgICAgICAgIH0KKyAgICAgICAgbUNvbnRlbnRQYXJlbnQuYWRkVmlldyh2aWV3LCBwYXJhbXMpOworICAgICAgICBmaW5hbCBDYWxsYmFjayBjYiA9IGdldENhbGxiYWNrKCk7CisgICAgICAgIGlmIChjYiAhPSBudWxsKSB7CisgICAgICAgICAgICBjYi5vbkNvbnRlbnRDaGFuZ2VkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVmlldyBnZXRDdXJyZW50Rm9jdXMoKSB7CisgICAgICAgIHJldHVybiBtRGVjb3IgIT0gbnVsbCA/IG1EZWNvci5maW5kRm9jdXMoKSA6IG51bGw7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgdGFrZVN1cmZhY2UoU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFjaykgeworICAgICAgICBtVGFrZVN1cmZhY2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0YWtlSW5wdXRRdWV1ZShJbnB1dFF1ZXVlLkNhbGxiYWNrIGNhbGxiYWNrKSB7CisgICAgICAgIG1UYWtlSW5wdXRRdWV1ZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgfQorICAgIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGlzRmxvYXRpbmcoKSB7CisgICAgICAgIHJldHVybiBtSXNGbG9hdGluZzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBMYXlvdXRJbmZsYXRlciBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGluZmxhdGUgWE1MIHZpZXcgbGF5b3V0CisgICAgICogcmVzb3VyY2VzIGZvciB1c2UgaW4gdGhpcyBXaW5kb3cuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIExheW91dEluZmxhdGVyIFRoZSBzaGFyZWQgTGF5b3V0SW5mbGF0ZXIuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIExheW91dEluZmxhdGVyIGdldExheW91dEluZmxhdGVyKCkgeworICAgICAgICByZXR1cm4gbUxheW91dEluZmxhdGVyOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFRpdGxlKENoYXJTZXF1ZW5jZSB0aXRsZSkgeworICAgICAgICBpZiAobVRpdGxlVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBtVGl0bGVWaWV3LnNldFRleHQodGl0bGUpOworICAgICAgICB9CisgICAgICAgIG1UaXRsZSA9IHRpdGxlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFRpdGxlQ29sb3IoaW50IHRleHRDb2xvcikgeworICAgICAgICBpZiAobVRpdGxlVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBtVGl0bGVWaWV3LnNldFRleHRDb2xvcih0ZXh0Q29sb3IpOworICAgICAgICB9CisgICAgICAgIG1UaXRsZUNvbG9yID0gdGV4dENvbG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByZXBhcmVzIHRoZSBwYW5lbCB0byBlaXRoZXIgYmUgb3BlbmVkIG9yIGNob3JkZWQuIFRoaXMgY3JlYXRlcyB0aGUgTWVudQorICAgICAqIGluc3RhbmNlIGZvciB0aGUgcGFuZWwgYW5kIHBvcHVsYXRlcyBpdCB2aWEgdGhlIEFjdGl2aXR5IGNhbGxiYWNrcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdCBUaGUgcGFuZWwgc3RhdGUgdG8gcHJlcGFyZS4KKyAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBwcmVwYXJpbmcgb2YgdGhlIHBhbmVsLgorICAgICAqIEByZXR1cm4gV2hldGhlciB0aGUgcGFuZWwgd2FzIHByZXBhcmVkLiBJZiB0aGUgcGFuZWwgc2hvdWxkIG5vdCBiZSBzaG93biwKKyAgICAgKiAgICAgICAgIHJldHVybnMgZmFsc2UuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gcHJlcGFyZVBhbmVsKFBhbmVsRmVhdHVyZVN0YXRlIHN0LCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBBbHJlYWR5IHByZXBhcmVkIChpc1ByZXBhcmVkIHdpbGwgYmUgcmVzZXQgdG8gZmFsc2UgbGF0ZXIpCisgICAgICAgIGlmIChzdC5pc1ByZXBhcmVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKChtUHJlcGFyZWRQYW5lbCAhPSBudWxsKSAmJiAobVByZXBhcmVkUGFuZWwgIT0gc3QpKSB7CisgICAgICAgICAgICAvLyBBbm90aGVyIFBhbmVsIGlzIHByZXBhcmVkIGFuZCBwb3NzaWJseSBvcGVuLCBzbyBjbG9zZSBpdAorICAgICAgICAgICAgY2xvc2VQYW5lbChtUHJlcGFyZWRQYW5lbCwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworCisgICAgICAgIGlmIChjYiAhPSBudWxsKSB7CisgICAgICAgICAgICBzdC5jcmVhdGVkUGFuZWxWaWV3ID0gY2Iub25DcmVhdGVQYW5lbFZpZXcoc3QuZmVhdHVyZUlkKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdC5jcmVhdGVkUGFuZWxWaWV3ID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIEluaXQgdGhlIHBhbmVsIHN0YXRlJ3MgbWVudS0tcmV0dXJuIGZhbHNlIGlmIGluaXQgZmFpbGVkCisgICAgICAgICAgICBpZiAoc3QubWVudSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplUGFuZWxNZW51KHN0KSB8fCAoc3QubWVudSA9PSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIENhbGwgY2FsbGJhY2ssIGFuZCByZXR1cm4gaWYgaXQgZG9lc24ndCB3YW50IHRvIGRpc3BsYXkgbWVudQorICAgICAgICAgICAgICAgIGlmICgoY2IgPT0gbnVsbCkgfHwgIWNiLm9uQ3JlYXRlUGFuZWxNZW51KHN0LmZlYXR1cmVJZCwgc3QubWVudSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRGl0Y2ggdGhlIG1lbnUgY3JlYXRlZCBhYm92ZQorICAgICAgICAgICAgICAgICAgICBzdC5tZW51ID0gbnVsbDsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDYWxsYmFjayBhbmQgcmV0dXJuIGlmIHRoZSBjYWxsYmFjayBkb2VzIG5vdCB3YW50IHRvIHNob3cgdGhlIG1lbnUKKyAgICAgICAgICAgIGlmICghY2Iub25QcmVwYXJlUGFuZWwoc3QuZmVhdHVyZUlkLCBzdC5jcmVhdGVkUGFuZWxWaWV3LCBzdC5tZW51KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2V0IHRoZSBwcm9wZXIga2V5bWFwCisgICAgICAgICAgICBLZXlDaGFyYWN0ZXJNYXAga21hcCA9IEtleUNoYXJhY3Rlck1hcC5sb2FkKGV2ZW50ICE9IG51bGwgPyBldmVudC5nZXREZXZpY2VJZCgpIDogMCk7CisgICAgICAgICAgICBzdC5xd2VydHlNb2RlID0ga21hcC5nZXRLZXlib2FyZFR5cGUoKSAhPSBLZXlDaGFyYWN0ZXJNYXAuTlVNRVJJQzsKKyAgICAgICAgICAgIHN0Lm1lbnUuc2V0UXdlcnR5TW9kZShzdC5xd2VydHlNb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNldCBvdGhlciBzdGF0ZQorICAgICAgICBzdC5pc1ByZXBhcmVkID0gdHJ1ZTsKKyAgICAgICAgc3QuaXNIYW5kbGVkID0gZmFsc2U7CisgICAgICAgIG1QcmVwYXJlZFBhbmVsID0gc3Q7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25Db25maWd1cmF0aW9uQ2hhbmdlZChDb25maWd1cmF0aW9uIG5ld0NvbmZpZykgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoRkVBVFVSRV9PUFRJT05TX1BBTkVMLCBmYWxzZSk7CisgICAgICAgIGlmICgoc3QgIT0gbnVsbCkgJiYgKHN0Lm1lbnUgIT0gbnVsbCkpIHsKKyAgICAgICAgICAgIGZpbmFsIE1lbnVCdWlsZGVyIG1lbnVCdWlsZGVyID0gKE1lbnVCdWlsZGVyKSBzdC5tZW51OworCisgICAgICAgICAgICBpZiAoc3QuaXNPcGVuKSB7CisgICAgICAgICAgICAgICAgLy8gRnJlZXplIHN0YXRlCisgICAgICAgICAgICAgICAgZmluYWwgQnVuZGxlIHN0YXRlID0gbmV3IEJ1bmRsZSgpOworICAgICAgICAgICAgICAgIG1lbnVCdWlsZGVyLnNhdmVIaWVyYXJjaHlTdGF0ZShzdGF0ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIG1lbnUgdmlld3Mgc2luY2UgdGhleSBuZWVkIHRvIGJlIHJlY3JlYXRlZAorICAgICAgICAgICAgICAgIC8vIGFjY29yZGluZyB0byB0aGUgbmV3IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBjbGVhck1lbnVWaWV3cyhzdCk7CisKKyAgICAgICAgICAgICAgICAvLyBSZS1vcGVuIHRoZSBzYW1lIG1lbnUKKyAgICAgICAgICAgICAgICByZW9wZW5NZW51KGZhbHNlKTsKKworICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgc3RhdGUKKyAgICAgICAgICAgICAgICBtZW51QnVpbGRlci5yZXN0b3JlSGllcmFyY2h5U3RhdGUoc3RhdGUpOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIENsZWFyIG1lbnUgdmlld3Mgc28gb24gbmV4dCBtZW51IG9wZW5pbmcsIGl0IHdpbGwgdXNlCisgICAgICAgICAgICAgICAgLy8gdGhlIHByb3BlciBsYXlvdXQKKyAgICAgICAgICAgICAgICBjbGVhck1lbnVWaWV3cyhzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgY2xlYXJNZW51Vmlld3MoUGFuZWxGZWF0dXJlU3RhdGUgc3QpIHsKKworICAgICAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgb24gY29uZmlnIGNoYW5nZXMsIHNvIHdlIHNob3VsZCBtYWtlIHN1cmUKKyAgICAgICAgLy8gdGhlIHZpZXdzIHdpbGwgYmUgcmVjb25zdHJ1Y3RlZCBiYXNlZCBvbiB0aGUgbmV3IG9yaWVudGF0aW9uLCBldGMuCisKKyAgICAgICAgLy8gQWxsb3cgdGhlIGNhbGxiYWNrIHRvIGNyZWF0ZSBhIG5ldyBwYW5lbCB2aWV3CisgICAgICAgIHN0LmNyZWF0ZWRQYW5lbFZpZXcgPSBudWxsOworCisgICAgICAgIC8vIENhdXNlcyB0aGUgZGVjb3IgdmlldyB0byBiZSByZWNyZWF0ZWQKKyAgICAgICAgc3QucmVmcmVzaERlY29yVmlldyA9IHRydWU7CisKKyAgICAgICAgKChNZW51QnVpbGRlcikgc3QubWVudSkuY2xlYXJNZW51Vmlld3MoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBvcGVuUGFuZWwoaW50IGZlYXR1cmVJZCwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgb3BlblBhbmVsKGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKSwgZXZlbnQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBvcGVuUGFuZWwoUGFuZWxGZWF0dXJlU3RhdGUgc3QsIEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiT3BlbiBwYW5lbDogaXNPcGVuPSIgKyBzdC5pc09wZW4pOworCisgICAgICAgIC8vIEFscmVhZHkgb3BlbiwgcmV0dXJuCisgICAgICAgIGlmIChzdC5pc09wZW4pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgaWYgKChjYiAhPSBudWxsKSAmJiAoIWNiLm9uTWVudU9wZW5lZChzdC5mZWF0dXJlSWQsIHN0Lm1lbnUpKSkgeworICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZG9lc24ndCB3YW50IHRoZSBtZW51IHRvIG9wZW4sIHJlc2V0IGFueSBzdGF0ZQorICAgICAgICAgICAgY2xvc2VQYW5lbChzdCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBXaW5kb3dNYW5hZ2VyIHdtID0gZ2V0V2luZG93TWFuYWdlcigpOworICAgICAgICBpZiAod20gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gUHJlcGFyZSBwYW5lbCAoc2hvdWxkIGhhdmUgYmVlbiBkb25lIGJlZm9yZSwgYnV0IGp1c3QgaW4gY2FzZSkKKyAgICAgICAgaWYgKCFwcmVwYXJlUGFuZWwoc3QsIGV2ZW50KSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0LmRlY29yVmlldyA9PSBudWxsIHx8IHN0LnJlZnJlc2hEZWNvclZpZXcpIHsKKyAgICAgICAgICAgIGlmIChzdC5kZWNvclZpZXcgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHBhbmVsIGRlY29yLCB0aGlzIHdpbGwgcG9wdWxhdGUgc3QuZGVjb3JWaWV3CisgICAgICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplUGFuZWxEZWNvcihzdCkgfHwgKHN0LmRlY29yVmlldyA9PSBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBlbHNlIGlmIChzdC5yZWZyZXNoRGVjb3JWaWV3ICYmIChzdC5kZWNvclZpZXcuZ2V0Q2hpbGRDb3VudCgpID4gMCkpIHsKKyAgICAgICAgICAgICAgICAvLyBEZWNvciBuZWVkcyByZWZyZXNoaW5nLCBzbyByZW1vdmUgaXRzIHZpZXdzCisgICAgICAgICAgICAgICAgc3QuZGVjb3JWaWV3LnJlbW92ZUFsbFZpZXdzKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBwb3B1bGF0ZSBzdC5zaG93blBhbmVsVmlldworICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplUGFuZWxDb250ZW50KHN0KSB8fCAoc3Quc2hvd25QYW5lbFZpZXcgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMgbHAgPSBzdC5zaG93blBhbmVsVmlldy5nZXRMYXlvdXRQYXJhbXMoKTsKKyAgICAgICAgICAgIGlmIChscCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbHAgPSBuZXcgVmlld0dyb3VwLkxheW91dFBhcmFtcyhXUkFQX0NPTlRFTlQsIFdSQVBfQ09OVEVOVCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBiYWNrZ3JvdW5kUmVzSWQ7CisgICAgICAgICAgICBpZiAobHAud2lkdGggPT0gVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29udGVudHMgaXMgZmlsbCBwYXJlbnQgZm9yIHRoZSB3aWR0aCwgc2V0IHRoZQorICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZAorICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXNJZCA9IHN0LmZ1bGxCYWNrZ3JvdW5kOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgbm9ybWFsIHBhbmVsIGJhY2tncm91bmQKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVzSWQgPSBzdC5iYWNrZ3JvdW5kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3QuZGVjb3JWaWV3LnNldFdpbmRvd0JhY2tncm91bmQoZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldERyYXdhYmxlKAorICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVzSWQpKTsKKworCisgICAgICAgICAgICBzdC5kZWNvclZpZXcuYWRkVmlldyhzdC5zaG93blBhbmVsVmlldywgbHApOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogR2l2ZSBmb2N1cyB0byB0aGUgdmlldywgaWYgaXQgb3Igb25lIG9mIGl0cyBjaGlsZHJlbiBkb2VzIG5vdAorICAgICAgICAgICAgICogYWxyZWFkeSBoYXZlIGl0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIXN0LnNob3duUGFuZWxWaWV3Lmhhc0ZvY3VzKCkpIHsKKyAgICAgICAgICAgICAgICBzdC5zaG93blBhbmVsVmlldy5yZXF1ZXN0Rm9jdXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0LmlzT3BlbiA9IHRydWU7CisgICAgICAgIHN0LmlzSGFuZGxlZCA9IGZhbHNlOworCisgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKAorICAgICAgICAgICAgICAgIFdSQVBfQ09OVEVOVCwgV1JBUF9DT05URU5ULAorICAgICAgICAgICAgICAgIHN0LngsIHN0LnksIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fQVRUQUNIRURfRElBTE9HLAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRElUSEVSCisgICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU0sCisgICAgICAgICAgICAgICAgc3QuZGVjb3JWaWV3Lm1EZWZhdWx0T3BhY2l0eSk7CisKKyAgICAgICAgbHAuZ3Jhdml0eSA9IHN0LmdyYXZpdHk7CisgICAgICAgIGxwLndpbmRvd0FuaW1hdGlvbnMgPSBzdC53aW5kb3dBbmltYXRpb25zOworICAgICAgICAKKyAgICAgICAgd20uYWRkVmlldyhzdC5kZWNvclZpZXcsIGxwKTsKKyAgICAgICAgLy8gTG9nLnYoVEFHLCAiQWRkaW5nIG1haW4gbWVudSB0byB3aW5kb3cgbWFuYWdlci4iKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBjbG9zZVBhbmVsKGludCBmZWF0dXJlSWQpIHsKKyAgICAgICAgaWYgKGZlYXR1cmVJZCA9PSBGRUFUVVJFX0NPTlRFWFRfTUVOVSkgeworICAgICAgICAgICAgY2xvc2VDb250ZXh0TWVudSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2xvc2VQYW5lbChnZXRQYW5lbFN0YXRlKGZlYXR1cmVJZCwgdHJ1ZSksIHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xvc2VzIHRoZSBnaXZlbiBwYW5lbC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdCBUaGUgcGFuZWwgdG8gYmUgY2xvc2VkLgorICAgICAqIEBwYXJhbSBkb0NhbGxiYWNrIFdoZXRoZXIgdG8gbm90aWZ5IHRoZSBjYWxsYmFjayB0aGF0IHRoZSBwYW5lbCB3YXMKKyAgICAgKiAgICAgICAgICAgIGNsb3NlZC4gSWYgdGhlIHBhbmVsIGlzIGluIHRoZSBwcm9jZXNzIG9mIHJlLW9wZW5pbmcgb3IKKyAgICAgKiAgICAgICAgICAgIG9wZW5pbmcgYW5vdGhlciBwYW5lbCAoZS5nLiwgbWVudSBvcGVuaW5nIGEgc3ViIG1lbnUpLCB0aGUKKyAgICAgKiAgICAgICAgICAgIGNhbGxiYWNrIHNob3VsZCBub3QgaGFwcGVuIGFuZCB0aGlzIHZhcmlhYmxlIHNob3VsZCBiZSBmYWxzZS4KKyAgICAgKiAgICAgICAgICAgIEluIGFkZGl0aW9uLCB0aGlzIG1ldGhvZCBpbnRlcm5hbGx5IHdpbGwgb25seSBwZXJmb3JtIHRoZQorICAgICAqICAgICAgICAgICAgY2FsbGJhY2sgaWYgdGhlIHBhbmVsIGlzIG9wZW4uCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgY2xvc2VQYW5lbChQYW5lbEZlYXR1cmVTdGF0ZSBzdCwgYm9vbGVhbiBkb0NhbGxiYWNrKSB7CisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiQ2xvc2UgcGFuZWw6IGlzT3Blbj0iICsgc3QuaXNPcGVuKTsKKyAgICAgICAgZmluYWwgVmlld01hbmFnZXIgd20gPSBnZXRXaW5kb3dNYW5hZ2VyKCk7CisgICAgICAgIGlmICgod20gIT0gbnVsbCkgJiYgc3QuaXNPcGVuKSB7CisgICAgICAgICAgICBpZiAoc3QuZGVjb3JWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB3bS5yZW1vdmVWaWV3KHN0LmRlY29yVmlldyk7CisgICAgICAgICAgICAgICAgLy8gTG9nLnYoVEFHLCAiUmVtb3ZpbmcgbWFpbiBtZW51IGZyb20gd2luZG93IG1hbmFnZXIuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkb0NhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgY2FsbE9uUGFuZWxDbG9zZWQoc3QuZmVhdHVyZUlkLCBzdCwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc3QuaXNQcmVwYXJlZCA9IGZhbHNlOworICAgICAgICBzdC5pc0hhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgc3QuaXNPcGVuID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGhpcyB2aWV3IGlzIG5vIGxvbmdlciBzaG93biwgc28gbnVsbCBpdCBvdXQKKyAgICAgICAgc3Quc2hvd25QYW5lbFZpZXcgPSBudWxsOworCisgICAgICAgIGlmIChzdC5pc0luRXhwYW5kZWRNb2RlKSB7CisgICAgICAgICAgICAvLyBOZXh0IHRpbWUgdGhlIG1lbnUgb3BlbnMsIGl0IHNob3VsZCBub3QgYmUgaW4gZXhwYW5kZWQgbW9kZSwgc28KKyAgICAgICAgICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgZGVjb3IKKyAgICAgICAgICAgIHN0LnJlZnJlc2hEZWNvclZpZXcgPSB0cnVlOworICAgICAgICAgICAgc3QuaXNJbkV4cGFuZGVkTW9kZSA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1QcmVwYXJlZFBhbmVsID09IHN0KSB7CisgICAgICAgICAgICBtUHJlcGFyZWRQYW5lbCA9IG51bGw7CisgICAgICAgICAgICBtUGFuZWxDaG9yZGluZ0tleSA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0b2dnbGVQYW5lbChpbnQgZmVhdHVyZUlkLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKTsKKyAgICAgICAgaWYgKHN0LmlzT3BlbikgeworICAgICAgICAgICAgY2xvc2VQYW5lbChzdCwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvcGVuUGFuZWwoc3QsIGV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGxlZCB3aGVuIHRoZSBwYW5lbCBrZXkgaXMgcHVzaGVkIGRvd24uCisgICAgICogQHBhcmFtIGZlYXR1cmVJZCBUaGUgZmVhdHVyZSBJRCBvZiB0aGUgcmVsZXZhbnQgcGFuZWwgKGRlZmF1bHRzIHRvIEZFQVRVUkVfT1BUSU9OU19QQU5FTH0uCisgICAgICogQHBhcmFtIGV2ZW50IFRoZSBrZXkgZXZlbnQuCisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBrZXkgd2FzIGhhbmRsZWQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gb25LZXlEb3duUGFuZWwoaW50IGZlYXR1cmVJZCwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgZmluYWwgaW50IGtleUNvZGUgPSBldmVudC5nZXRLZXlDb2RlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoZXZlbnQuZ2V0UmVwZWF0Q291bnQoKSA9PSAwKSB7CisgICAgICAgICAgICAvLyBUaGUgcGFuZWwga2V5IHdhcyBwdXNoZWQsIHNvIHNldCB0aGUgY2hvcmRpbmcga2V5CisgICAgICAgICAgICBtUGFuZWxDaG9yZGluZ0tleSA9IGtleUNvZGU7CisgICAgICAgICAgICBtUGFuZWxNYXlMb25nUHJlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUGFuZWxGZWF0dXJlU3RhdGUgc3QgPSBnZXRQYW5lbFN0YXRlKGZlYXR1cmVJZCwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoIXN0LmlzT3BlbikgeworICAgICAgICAgICAgICAgIGlmIChnZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpLmtleWJvYXJkCisgICAgICAgICAgICAgICAgICAgICAgICA9PSBDb25maWd1cmF0aW9uLktFWUJPQVJEX05PS0VZUykgeworICAgICAgICAgICAgICAgICAgICBtUGFuZWxNYXlMb25nUHJlc3MgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlcGFyZVBhbmVsKHN0LCBldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmIChtUGFuZWxNYXlMb25nUHJlc3MgJiYgbVBhbmVsQ2hvcmRpbmdLZXkgPT0ga2V5Q29kZQorICAgICAgICAgICAgICAgICYmIChldmVudC5nZXRGbGFncygpJktleUV2ZW50LkZMQUdfTE9OR19QUkVTUykgIT0gMCkgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBoYWQgYSBsb25nIHByZXNzIHdoaWxlIGluIGEgc3RhdGUgd2hlcmUgdGhpcworICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGV4ZWN1dGVkLi4uICBkbyBpdCEKKyAgICAgICAgICAgIG1QYW5lbENob3JkaW5nS2V5ID0gMDsKKyAgICAgICAgICAgIG1QYW5lbE1heUxvbmdQcmVzcyA9IGZhbHNlOworICAgICAgICAgICAgSW5wdXRNZXRob2RNYW5hZ2VyIGltbSA9IChJbnB1dE1ldGhvZE1hbmFnZXIpCisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuSU5QVVRfTUVUSE9EX1NFUlZJQ0UpOworICAgICAgICAgICAgaWYgKGltbSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbURlY29yLnBlcmZvcm1IYXB0aWNGZWVkYmFjayhIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5MT05HX1BSRVNTKTsKKyAgICAgICAgICAgICAgICBpbW0udG9nZ2xlU29mdElucHV0KElucHV0TWV0aG9kTWFuYWdlci5TSE9XX0ZPUkNFRCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgd2hlbiB0aGUgcGFuZWwga2V5IGlzIHJlbGVhc2VkLgorICAgICAqIEBwYXJhbSBmZWF0dXJlSWQgVGhlIGZlYXR1cmUgSUQgb2YgdGhlIHJlbGV2YW50IHBhbmVsIChkZWZhdWx0cyB0byBGRUFUVVJFX09QVElPTlNfUEFORUx9LgorICAgICAqIEBwYXJhbSBldmVudCBUaGUga2V5IGV2ZW50LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIG9uS2V5VXBQYW5lbChpbnQgZmVhdHVyZUlkLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBUaGUgcGFuZWwga2V5IHdhcyByZWxlYXNlZCwgc28gY2xlYXIgdGhlIGNob3JkaW5nIGtleQorICAgICAgICBpZiAobVBhbmVsQ2hvcmRpbmdLZXkgIT0gMCkgeworICAgICAgICAgICAgbVBhbmVsQ2hvcmRpbmdLZXkgPSAwOworICAgICAgICAgICAgbVBhbmVsTWF5TG9uZ1ByZXNzID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChldmVudC5pc0NhbmNlbGVkKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2xlYW4gcGxheVNvdW5kRWZmZWN0ID0gZmFsc2U7CisgICAgICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChzdC5pc09wZW4gfHwgc3QuaXNIYW5kbGVkKSB7CisKKyAgICAgICAgICAgICAgICAvLyBQbGF5IHRoZSBzb3VuZCBlZmZlY3QgaWYgdGhlIHVzZXIgY2xvc2VkIGFuIG9wZW4gbWVudSAoYW5kIG5vdCBpZgorICAgICAgICAgICAgICAgIC8vIHRoZXkganVzdCByZWxlYXNlZCBhIG1lbnUgc2hvcnRjdXQpCisgICAgICAgICAgICAgICAgcGxheVNvdW5kRWZmZWN0ID0gc3QuaXNPcGVuOworCisgICAgICAgICAgICAgICAgLy8gQ2xvc2UgbWVudQorICAgICAgICAgICAgICAgIGNsb3NlUGFuZWwoc3QsIHRydWUpOworCisgICAgICAgICAgICB9IGVsc2UgaWYgKHN0LmlzUHJlcGFyZWQpIHsKKworICAgICAgICAgICAgICAgIC8vIFdyaXRlICdtZW51IG9wZW5lZCcgdG8gZXZlbnQgbG9nCisgICAgICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudCg1MDAwMSwgMCk7CisKKyAgICAgICAgICAgICAgICAvLyBTaG93IG1lbnUKKyAgICAgICAgICAgICAgICBvcGVuUGFuZWwoc3QsIGV2ZW50KTsKKworICAgICAgICAgICAgICAgIHBsYXlTb3VuZEVmZmVjdCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwbGF5U291bmRFZmZlY3QpIHsKKyAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIgYXVkaW9NYW5hZ2VyID0gKEF1ZGlvTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LkFVRElPX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgIGlmIChhdWRpb01hbmFnZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBhdWRpb01hbmFnZXIucGxheVNvdW5kRWZmZWN0KEF1ZGlvTWFuYWdlci5GWF9LRVlfQ0xJQ0spOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkNvdWxkbid0IGdldCBhdWRpbyBtYW5hZ2VyIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGZpbmFsIHZvaWQgY2xvc2VBbGxQYW5lbHMoKSB7CisgICAgICAgIGZpbmFsIFZpZXdNYW5hZ2VyIHdtID0gZ2V0V2luZG93TWFuYWdlcigpOworICAgICAgICBpZiAod20gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgUGFuZWxGZWF0dXJlU3RhdGVbXSBwYW5lbHMgPSBtUGFuZWxzOworICAgICAgICBmaW5hbCBpbnQgTiA9IHBhbmVscyAhPSBudWxsID8gcGFuZWxzLmxlbmd0aCA6IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgICAgICBmaW5hbCBQYW5lbEZlYXR1cmVTdGF0ZSBwYW5lbCA9IHBhbmVsc1tpXTsKKyAgICAgICAgICAgIGlmIChwYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2xvc2VQYW5lbChwYW5lbCwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjbG9zZUNvbnRleHRNZW51KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xvc2VzIHRoZSBjb250ZXh0IG1lbnUuIFRoaXMgbm90aWZpZXMgdGhlIG1lbnUgbG9naWMgb2YgdGhlIGNsb3NlLCBhbG9uZworICAgICAqIHdpdGggZGlzbWlzc2luZyBpdCBmcm9tIHRoZSBVSS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIGNsb3NlQ29udGV4dE1lbnUoKSB7CisgICAgICAgIGlmIChtQ29udGV4dE1lbnUgIT0gbnVsbCkgeworICAgICAgICAgICAgbUNvbnRleHRNZW51LmNsb3NlKCk7CisgICAgICAgICAgICBkaXNtaXNzQ29udGV4dE1lbnUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERpc21pc3NlcyBqdXN0IHRoZSBjb250ZXh0IG1lbnUgVUkuIFRvIGNsb3NlIHRoZSBjb250ZXh0IG1lbnUsIHVzZQorICAgICAqIHtAbGluayAjY2xvc2VDb250ZXh0TWVudSgpfS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIGRpc21pc3NDb250ZXh0TWVudSgpIHsKKyAgICAgICAgbUNvbnRleHRNZW51ID0gbnVsbDsKKworICAgICAgICBpZiAobUNvbnRleHRNZW51SGVscGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1Db250ZXh0TWVudUhlbHBlci5kaXNtaXNzKCk7CisgICAgICAgICAgICBtQ29udGV4dE1lbnVIZWxwZXIgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gcGVyZm9ybVBhbmVsU2hvcnRjdXQoaW50IGZlYXR1cmVJZCwgaW50IGtleUNvZGUsIEtleUV2ZW50IGV2ZW50LCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1QYW5lbFNob3J0Y3V0KGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKSwga2V5Q29kZSwgZXZlbnQsIGZsYWdzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gcGVyZm9ybVBhbmVsU2hvcnRjdXQoUGFuZWxGZWF0dXJlU3RhdGUgc3QsIGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCwKKyAgICAgICAgICAgIGludCBmbGFncykgeworICAgICAgICBpZiAoZXZlbnQuaXNTeXN0ZW0oKSB8fCAoc3QgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIE9ubHkgdHJ5IHRvIHBlcmZvcm0gbWVudSBzaG9ydGN1dHMgaWYgcHJlcGFyZVBhbmVsIHJldHVybmVkIHRydWUgKHBvc3NpYmxlIGZhbHNlCisgICAgICAgIC8vIHJldHVybiB2YWx1ZSBmcm9tIGFwcGxpY2F0aW9uIG5vdCB3YW50aW5nIHRvIHNob3cgdGhlIG1lbnUpLgorICAgICAgICBpZiAoKHN0LmlzUHJlcGFyZWQgfHwgcHJlcGFyZVBhbmVsKHN0LCBldmVudCkpICYmIHN0Lm1lbnUgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gVGhlIG1lbnUgaXMgcHJlcGFyZWQgbm93LCBwZXJmb3JtIHRoZSBzaG9ydGN1dCBvbiBpdAorICAgICAgICAgICAgaGFuZGxlZCA9IHN0Lm1lbnUucGVyZm9ybVNob3J0Y3V0KGtleUNvZGUsIGV2ZW50LCBmbGFncyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFuZGxlZCkgeworICAgICAgICAgICAgLy8gTWFyayBhcyBoYW5kbGVkCisgICAgICAgICAgICBzdC5pc0hhbmRsZWQgPSB0cnVlOworCisgICAgICAgICAgICBpZiAoKGZsYWdzICYgTWVudS5GTEFHX1BFUkZPUk1fTk9fQ0xPU0UpID09IDApIHsKKyAgICAgICAgICAgICAgICBjbG9zZVBhbmVsKHN0LCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoYW5kbGVkOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIHBlcmZvcm1QYW5lbElkZW50aWZpZXJBY3Rpb24oaW50IGZlYXR1cmVJZCwgaW50IGlkLCBpbnQgZmxhZ3MpIHsKKworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKTsKKyAgICAgICAgaWYgKCFwcmVwYXJlUGFuZWwoc3QsIG5ldyBLZXlFdmVudChLZXlFdmVudC5BQ1RJT05fRE9XTiwgS2V5RXZlbnQuS0VZQ09ERV9NRU5VKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3QubWVudSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIHJlcyA9IHN0Lm1lbnUucGVyZm9ybUlkZW50aWZpZXJBY3Rpb24oaWQsIGZsYWdzKTsKKworICAgICAgICBjbG9zZVBhbmVsKHN0LCB0cnVlKTsKKworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIHB1YmxpYyBQYW5lbEZlYXR1cmVTdGF0ZSBmaW5kTWVudVBhbmVsKE1lbnUgbWVudSkgeworICAgICAgICBmaW5hbCBQYW5lbEZlYXR1cmVTdGF0ZVtdIHBhbmVscyA9IG1QYW5lbHM7CisgICAgICAgIGZpbmFsIGludCBOID0gcGFuZWxzICE9IG51bGwgPyBwYW5lbHMubGVuZ3RoIDogMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgICAgIGZpbmFsIFBhbmVsRmVhdHVyZVN0YXRlIHBhbmVsID0gcGFuZWxzW2ldOworICAgICAgICAgICAgaWYgKHBhbmVsICE9IG51bGwgJiYgcGFuZWwubWVudSA9PSBtZW51KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhbmVsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG9uTWVudUl0ZW1TZWxlY3RlZChNZW51QnVpbGRlciBtZW51LCBNZW51SXRlbSBpdGVtKSB7CisgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgaWYgKGNiICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIFBhbmVsRmVhdHVyZVN0YXRlIHBhbmVsID0gZmluZE1lbnVQYW5lbChtZW51LmdldFJvb3RNZW51KCkpOworICAgICAgICAgICAgaWYgKHBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2Iub25NZW51SXRlbVNlbGVjdGVkKHBhbmVsLmZlYXR1cmVJZCwgaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xvc2VNZW51KE1lbnVCdWlsZGVyIG1lbnUsIGJvb2xlYW4gYWxsTWVudXNBcmVDbG9zaW5nKSB7CisgICAgICAgIGZpbmFsIFBhbmVsRmVhdHVyZVN0YXRlIHBhbmVsID0gZmluZE1lbnVQYW5lbChtZW51KTsKKyAgICAgICAgaWYgKHBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIENsb3NlIHRoZSBwYW5lbCBhbmQgb25seSBkbyB0aGUgY2FsbGJhY2sgaWYgdGhlIG1lbnUgaXMgYmVpbmcKKyAgICAgICAgICAgIC8vIGNsb3NlZAorICAgICAgICAgICAgLy8gY29tcGxldGVseSwgbm90IGlmIG9wZW5pbmcgYSBzdWIgbWVudQorICAgICAgICAgICAgY2xvc2VQYW5lbChwYW5lbCwgYWxsTWVudXNBcmVDbG9zaW5nKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xvc2VTdWJNZW51KFN1Yk1lbnVCdWlsZGVyIHN1Yk1lbnUpIHsKKyAgICAgICAgZmluYWwgTWVudSBwYXJlbnRNZW51ID0gc3ViTWVudS5nZXRSb290TWVudSgpOworICAgICAgICBmaW5hbCBQYW5lbEZlYXR1cmVTdGF0ZSBwYW5lbCA9IGZpbmRNZW51UGFuZWwocGFyZW50TWVudSk7CisKKyAgICAgICAgLy8gQ2FsbGJhY2sKKyAgICAgICAgaWYgKHBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNhbGxPblBhbmVsQ2xvc2VkKHBhbmVsLmZlYXR1cmVJZCwgcGFuZWwsIHBhcmVudE1lbnUpOworICAgICAgICAgICAgY2xvc2VQYW5lbChwYW5lbCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBvblN1Yk1lbnVTZWxlY3RlZChmaW5hbCBTdWJNZW51QnVpbGRlciBzdWJNZW51KSB7CisgICAgICAgIGlmICghc3ViTWVudS5oYXNWaXNpYmxlSXRlbXMoKSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgd2luZG93IG1hbmFnZXIgd2lsbCBnaXZlIHVzIGEgdmFsaWQgd2luZG93IHRva2VuCisgICAgICAgIG5ldyBNZW51RGlhbG9nSGVscGVyKHN1Yk1lbnUpLnNob3cobnVsbCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25NZW51TW9kZUNoYW5nZShNZW51QnVpbGRlciBtZW51KSB7CisgICAgICAgIHJlb3Blbk1lbnUodHJ1ZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlb3Blbk1lbnUoYm9vbGVhbiB0b2dnbGVNZW51TW9kZSkgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoRkVBVFVSRV9PUFRJT05TX1BBTkVMLCB0cnVlKTsKKworICAgICAgICAvLyBTYXZlIHRoZSBmdXR1cmUgZXhwYW5kZWQgbW9kZSBzdGF0ZSBzaW5jZSBjbG9zZVBhbmVsIHdpbGwgcmVzZXQgaXQKKyAgICAgICAgYm9vbGVhbiBuZXdFeHBhbmRlZE1vZGUgPSB0b2dnbGVNZW51TW9kZSA/ICFzdC5pc0luRXhwYW5kZWRNb2RlIDogc3QuaXNJbkV4cGFuZGVkTW9kZTsKKworICAgICAgICBzdC5yZWZyZXNoRGVjb3JWaWV3ID0gdHJ1ZTsKKyAgICAgICAgY2xvc2VQYW5lbChzdCwgZmFsc2UpOworCisgICAgICAgIC8vIFNldCB0aGUgZXhwYW5kZWQgbW9kZSBzdGF0ZQorICAgICAgICBzdC5pc0luRXhwYW5kZWRNb2RlID0gbmV3RXhwYW5kZWRNb2RlOworCisgICAgICAgIG9wZW5QYW5lbChzdCwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhlIG1lbnUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwYW5lbCBmZWF0dXJlIHN0YXRlLiBZb3UKKyAgICAgKiBtdXN0IGF0IHRoZSB2ZXJ5IGxlYXN0IHNldCBQYW5lbEZlYXR1cmVTdGF0ZS5tZW51IHRvIHRoZSBNZW51IHRvIGJlCisgICAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwYW5lbCBzdGF0ZS4gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY3JlYXRlcworICAgICAqIGEgbmV3IG1lbnUgZm9yIHRoZSBwYW5lbCBzdGF0ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdCBUaGUgcGFuZWwgd2hvc2UgbWVudSBpcyBiZWluZyBpbml0aWFsaXplZC4KKyAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhlIGluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLgorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIGluaXRpYWxpemVQYW5lbE1lbnUoZmluYWwgUGFuZWxGZWF0dXJlU3RhdGUgc3QpIHsKKyAgICAgICAgZmluYWwgTWVudUJ1aWxkZXIgbWVudSA9IG5ldyBNZW51QnVpbGRlcihnZXRDb250ZXh0KCkpOworCisgICAgICAgIG1lbnUuc2V0Q2FsbGJhY2sodGhpcyk7CisgICAgICAgIHN0LnNldE1lbnUobWVudSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBpbml0aWFsIHNldHVwIG9mIGEgcGFuZWwuIFRoaXMgc2hvdWxkIGF0IHRoZSB2ZXJ5IGxlYXN0IHNldCB0aGUKKyAgICAgKiBzdHlsZSBpbmZvcm1hdGlvbiBpbiB0aGUgUGFuZWxGZWF0dXJlU3RhdGUgYW5kIG11c3Qgc2V0CisgICAgICogUGFuZWxGZWF0dXJlU3RhdGUuZGVjb3IgdG8gdGhlIHBhbmVsJ3Mgd2luZG93IGRlY29yIHZpZXcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3QgVGhlIHBhbmVsIGJlaW5nIGluaXRpYWxpemVkLgorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIGluaXRpYWxpemVQYW5lbERlY29yKFBhbmVsRmVhdHVyZVN0YXRlIHN0KSB7CisgICAgICAgIHN0LmRlY29yVmlldyA9IG5ldyBEZWNvclZpZXcoZ2V0Q29udGV4dCgpLCBzdC5mZWF0dXJlSWQpOworICAgICAgICBzdC5ncmF2aXR5ID0gR3Jhdml0eS5DRU5URVIgfCBHcmF2aXR5LkJPVFRPTTsKKyAgICAgICAgc3Quc2V0U3R5bGUoZ2V0Q29udGV4dCgpKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsaXplcyB0aGUgcGFuZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYW5lbCBmZWF0dXJlIHN0YXRlLiBZb3UgbXVzdAorICAgICAqIGF0IHRoZSB2ZXJ5IGxlYXN0IHNldCBQYW5lbEZlYXR1cmVTdGF0ZS5wYW5lbCB0byB0aGUgVmlldyBpbXBsZW1lbnRpbmcKKyAgICAgKiBpdHMgY29udGVudHMuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGdldHMgdGhlIHBhbmVsIGZyb20gdGhlIG1lbnUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3QgVGhlIHBhbmVsIHN0YXRlIGJlaW5nIGluaXRpYWxpemVkLgorICAgICAqIEByZXR1cm4gV2hldGhlciB0aGUgaW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWwuCisgICAgICovCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaW5pdGlhbGl6ZVBhbmVsQ29udGVudChQYW5lbEZlYXR1cmVTdGF0ZSBzdCkgeworCisgICAgICAgIGlmIChzdC5jcmVhdGVkUGFuZWxWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHN0LnNob3duUGFuZWxWaWV3ID0gc3QuY3JlYXRlZFBhbmVsVmlldzsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgTWVudUJ1aWxkZXIgbWVudSA9IChNZW51QnVpbGRlcilzdC5tZW51OworICAgICAgICBpZiAobWVudSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzdC5zaG93blBhbmVsVmlldyA9IG1lbnUuZ2V0TWVudVZpZXcoKHN0LmlzSW5FeHBhbmRlZE1vZGUpID8gTWVudUJ1aWxkZXIuVFlQRV9FWFBBTkRFRAorICAgICAgICAgICAgICAgIDogTWVudUJ1aWxkZXIuVFlQRV9JQ09OLCBzdC5kZWNvclZpZXcpOworCisgICAgICAgIGlmIChzdC5zaG93blBhbmVsVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBVc2UgdGhlIG1lbnUgVmlldydzIGRlZmF1bHQgYW5pbWF0aW9ucyBpZiBpdCBoYXMgYW55CisgICAgICAgICAgICBmaW5hbCBpbnQgZGVmYXVsdEFuaW1hdGlvbnMgPSAoKE1lbnVWaWV3KSBzdC5zaG93blBhbmVsVmlldykuZ2V0V2luZG93QW5pbWF0aW9ucygpOworICAgICAgICAgICAgaWYgKGRlZmF1bHRBbmltYXRpb25zICE9IDApIHsKKyAgICAgICAgICAgICAgICBzdC53aW5kb3dBbmltYXRpb25zID0gZGVmYXVsdEFuaW1hdGlvbnM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIHBlcmZvcm1Db250ZXh0TWVudUlkZW50aWZpZXJBY3Rpb24oaW50IGlkLCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgcmV0dXJuIChtQ29udGV4dE1lbnUgIT0gbnVsbCkgPyBtQ29udGV4dE1lbnUucGVyZm9ybUlkZW50aWZpZXJBY3Rpb24oaWQsIGZsYWdzKSA6IGZhbHNlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldEJhY2tncm91bmREcmF3YWJsZShEcmF3YWJsZSBkcmF3YWJsZSkgeworICAgICAgICBpZiAoZHJhd2FibGUgIT0gbUJhY2tncm91bmREcmF3YWJsZSB8fCBtQmFja2dyb3VuZFJlc291cmNlICE9IDApIHsKKyAgICAgICAgICAgIG1CYWNrZ3JvdW5kUmVzb3VyY2UgPSAwOworICAgICAgICAgICAgbUJhY2tncm91bmREcmF3YWJsZSA9IGRyYXdhYmxlOworICAgICAgICAgICAgaWYgKG1EZWNvciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbURlY29yLnNldFdpbmRvd0JhY2tncm91bmQoZHJhd2FibGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0RmVhdHVyZURyYXdhYmxlUmVzb3VyY2UoaW50IGZlYXR1cmVJZCwgaW50IHJlc0lkKSB7CisgICAgICAgIGlmIChyZXNJZCAhPSAwKSB7CisgICAgICAgICAgICBEcmF3YWJsZUZlYXR1cmVTdGF0ZSBzdCA9IGdldERyYXdhYmxlU3RhdGUoZmVhdHVyZUlkLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChzdC5yZXNpZCAhPSByZXNJZCkgeworICAgICAgICAgICAgICAgIHN0LnJlc2lkID0gcmVzSWQ7CisgICAgICAgICAgICAgICAgc3QudXJpID0gbnVsbDsKKyAgICAgICAgICAgICAgICBzdC5sb2NhbCA9IGdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZShyZXNJZCk7CisgICAgICAgICAgICAgICAgdXBkYXRlRHJhd2FibGUoZmVhdHVyZUlkLCBzdCwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0RmVhdHVyZURyYXdhYmxlKGZlYXR1cmVJZCwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRGZWF0dXJlRHJhd2FibGVVcmkoaW50IGZlYXR1cmVJZCwgVXJpIHVyaSkgeworICAgICAgICBpZiAodXJpICE9IG51bGwpIHsKKyAgICAgICAgICAgIERyYXdhYmxlRmVhdHVyZVN0YXRlIHN0ID0gZ2V0RHJhd2FibGVTdGF0ZShmZWF0dXJlSWQsIHRydWUpOworICAgICAgICAgICAgaWYgKHN0LnVyaSA9PSBudWxsIHx8ICFzdC51cmkuZXF1YWxzKHVyaSkpIHsKKyAgICAgICAgICAgICAgICBzdC5yZXNpZCA9IDA7CisgICAgICAgICAgICAgICAgc3QudXJpID0gdXJpOworICAgICAgICAgICAgICAgIHN0LmxvY2FsID0gbG9hZEltYWdlVVJJKHVyaSk7CisgICAgICAgICAgICAgICAgdXBkYXRlRHJhd2FibGUoZmVhdHVyZUlkLCBzdCwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0RmVhdHVyZURyYXdhYmxlKGZlYXR1cmVJZCwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRGZWF0dXJlRHJhd2FibGUoaW50IGZlYXR1cmVJZCwgRHJhd2FibGUgZHJhd2FibGUpIHsKKyAgICAgICAgRHJhd2FibGVGZWF0dXJlU3RhdGUgc3QgPSBnZXREcmF3YWJsZVN0YXRlKGZlYXR1cmVJZCwgdHJ1ZSk7CisgICAgICAgIHN0LnJlc2lkID0gMDsKKyAgICAgICAgc3QudXJpID0gbnVsbDsKKyAgICAgICAgaWYgKHN0LmxvY2FsICE9IGRyYXdhYmxlKSB7CisgICAgICAgICAgICBzdC5sb2NhbCA9IGRyYXdhYmxlOworICAgICAgICAgICAgdXBkYXRlRHJhd2FibGUoZmVhdHVyZUlkLCBzdCwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0RmVhdHVyZURyYXdhYmxlQWxwaGEoaW50IGZlYXR1cmVJZCwgaW50IGFscGhhKSB7CisgICAgICAgIERyYXdhYmxlRmVhdHVyZVN0YXRlIHN0ID0gZ2V0RHJhd2FibGVTdGF0ZShmZWF0dXJlSWQsIHRydWUpOworICAgICAgICBpZiAoc3QuYWxwaGEgIT0gYWxwaGEpIHsKKyAgICAgICAgICAgIHN0LmFscGhhID0gYWxwaGE7CisgICAgICAgICAgICB1cGRhdGVEcmF3YWJsZShmZWF0dXJlSWQsIHN0LCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBzZXRGZWF0dXJlRGVmYXVsdERyYXdhYmxlKGludCBmZWF0dXJlSWQsIERyYXdhYmxlIGRyYXdhYmxlKSB7CisgICAgICAgIERyYXdhYmxlRmVhdHVyZVN0YXRlIHN0ID0gZ2V0RHJhd2FibGVTdGF0ZShmZWF0dXJlSWQsIHRydWUpOworICAgICAgICBpZiAoc3QuZGVmICE9IGRyYXdhYmxlKSB7CisgICAgICAgICAgICBzdC5kZWYgPSBkcmF3YWJsZTsKKyAgICAgICAgICAgIHVwZGF0ZURyYXdhYmxlKGZlYXR1cmVJZCwgc3QsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldEZlYXR1cmVJbnQoaW50IGZlYXR1cmVJZCwgaW50IHZhbHVlKSB7CisgICAgICAgIC8vIFhYWCBTaG91bGQgZG8gbW9yZSBtYW5hZ2VtZW50IChhcyB3aXRoIGRyYXdhYmxlIGZlYXR1cmVzKSB0bworICAgICAgICAvLyBkZWFsIHdpdGggaW50ZXJhY3Rpb25zIGJldHdlZW4gbXVsdGlwbGUgd2luZG93IHBvbGljaWVzLgorICAgICAgICB1cGRhdGVJbnQoZmVhdHVyZUlkLCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVwZGF0ZSB0aGUgc3RhdGUgb2YgYSBkcmF3YWJsZSBmZWF0dXJlLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQsIGZvciBldmVyeQorICAgICAqIGRyYXdhYmxlIGZlYXR1cmUgc3VwcG9ydGVkLCBhcyBwYXJ0IG9mIG9uQWN0aXZlKCksIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQorICAgICAqIGNvbnRlbnRzIG9mIGEgY29udGFpbmluZyB3aW5kb3cgaXMgcHJvcGVybHkgdXBkYXRlZC4KKyAgICAgKgorICAgICAqIEBzZWUgI29uQWN0aXZlCisgICAgICogQHBhcmFtIGZlYXR1cmVJZCBUaGUgZGVzaXJlZCBkcmF3YWJsZSBmZWF0dXJlIHRvIGNoYW5nZS4KKyAgICAgKiBAcGFyYW0gZnJvbUFjdGl2ZSBBbHdheXMgdHJ1ZSB3aGVuIGNhbGxlZCBmcm9tIG9uQWN0aXZlKCkuCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgdXBkYXRlRHJhd2FibGUoaW50IGZlYXR1cmVJZCwgYm9vbGVhbiBmcm9tQWN0aXZlKSB7CisgICAgICAgIGZpbmFsIERyYXdhYmxlRmVhdHVyZVN0YXRlIHN0ID0gZ2V0RHJhd2FibGVTdGF0ZShmZWF0dXJlSWQsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHVwZGF0ZURyYXdhYmxlKGZlYXR1cmVJZCwgc3QsIGZyb21BY3RpdmUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGVkIHdoZW4gYSBEcmF3YWJsZSBmZWF0dXJlIGNoYW5nZXMsIGZvciB0aGUgd2luZG93IHRvIHVwZGF0ZSBpdHMKKyAgICAgKiBncmFwaGljcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBmZWF0dXJlSWQgVGhlIGZlYXR1cmUgYmVpbmcgY2hhbmdlZC4KKyAgICAgKiBAcGFyYW0gZHJhd2FibGUgVGhlIG5ldyBEcmF3YWJsZSB0byBzaG93LCBvciBudWxsIGlmIG5vbmUuCisgICAgICogQHBhcmFtIGFscGhhIFRoZSBuZXcgYWxwaGEgYmxlbmRpbmcgb2YgdGhlIERyYXdhYmxlLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIG9uRHJhd2FibGVDaGFuZ2VkKGludCBmZWF0dXJlSWQsIERyYXdhYmxlIGRyYXdhYmxlLCBpbnQgYWxwaGEpIHsKKyAgICAgICAgSW1hZ2VWaWV3IHZpZXc7CisgICAgICAgIGlmIChmZWF0dXJlSWQgPT0gRkVBVFVSRV9MRUZUX0lDT04pIHsKKyAgICAgICAgICAgIHZpZXcgPSBnZXRMZWZ0SWNvblZpZXcoKTsKKyAgICAgICAgfSBlbHNlIGlmIChmZWF0dXJlSWQgPT0gRkVBVFVSRV9SSUdIVF9JQ09OKSB7CisgICAgICAgICAgICB2aWV3ID0gZ2V0UmlnaHRJY29uVmlldygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRyYXdhYmxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRyYXdhYmxlLnNldEFscGhhKGFscGhhKTsKKyAgICAgICAgICAgIHZpZXcuc2V0SW1hZ2VEcmF3YWJsZShkcmF3YWJsZSk7CisgICAgICAgICAgICB2aWV3LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGVkIHdoZW4gYW4gaW50IGZlYXR1cmUgY2hhbmdlcywgZm9yIHRoZSB3aW5kb3cgdG8gdXBkYXRlIGl0cworICAgICAqIGdyYXBoaWNzLgorICAgICAqCisgICAgICogQHBhcmFtIGZlYXR1cmVJZCBUaGUgZmVhdHVyZSBiZWluZyBjaGFuZ2VkLgorICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IGludGVnZXIgdmFsdWUuCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgb25JbnRDaGFuZ2VkKGludCBmZWF0dXJlSWQsIGludCB2YWx1ZSkgeworICAgICAgICBpZiAoZmVhdHVyZUlkID09IEZFQVRVUkVfUFJPR1JFU1MgfHwgZmVhdHVyZUlkID09IEZFQVRVUkVfSU5ERVRFUk1JTkFURV9QUk9HUkVTUykgeworICAgICAgICAgICAgdXBkYXRlUHJvZ3Jlc3NCYXJzKHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChmZWF0dXJlSWQgPT0gRkVBVFVSRV9DVVNUT01fVElUTEUpIHsKKyAgICAgICAgICAgIEZyYW1lTGF5b3V0IHRpdGxlQ29udGFpbmVyID0gKEZyYW1lTGF5b3V0KSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC50aXRsZV9jb250YWluZXIpOworICAgICAgICAgICAgaWYgKHRpdGxlQ29udGFpbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTGF5b3V0SW5mbGF0ZXIuaW5mbGF0ZSh2YWx1ZSwgdGl0bGVDb250YWluZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVXBkYXRlcyB0aGUgcHJvZ3Jlc3MgYmFycyB0aGF0IGFyZSBzaG93biBpbiB0aGUgdGl0bGUgYmFyLgorICAgICAqCisgICAgICogQHBhcmFtIHZhbHVlIENhbiBiZSBvbmUgb2Yge0BsaW5rIFdpbmRvdyNQUk9HUkVTU19WSVNJQklMSVRZX09OfSwKKyAgICAgKiAgICAgICAgICAgIHtAbGluayBXaW5kb3cjUFJPR1JFU1NfVklTSUJJTElUWV9PRkZ9LAorICAgICAqICAgICAgICAgICAge0BsaW5rIFdpbmRvdyNQUk9HUkVTU19JTkRFVEVSTUlOQVRFX09OfSwKKyAgICAgKiAgICAgICAgICAgIHtAbGluayBXaW5kb3cjUFJPR1JFU1NfSU5ERVRFUk1JTkFURV9PRkZ9LCBvciBhIHZhbHVlCisgICAgICogICAgICAgICAgICBzdGFydGluZyBhdCB7QGxpbmsgV2luZG93I1BST0dSRVNTX1NUQVJUfSB0aHJvdWdoCisgICAgICogICAgICAgICAgICB7QGxpbmsgV2luZG93I1BST0dSRVNTX0VORH0gZm9yIHNldHRpbmcgdGhlIGRlZmF1bHQKKyAgICAgKiAgICAgICAgICAgIHByb2dyZXNzIChpZiB7QGxpbmsgV2luZG93I1BST0dSRVNTX0VORH0gaXMgZ2l2ZW4sCisgICAgICogICAgICAgICAgICB0aGUgcHJvZ3Jlc3MgYmFyIHdpZGdldHMgaW4gdGhlIHRpdGxlIHdpbGwgYmUgaGlkZGVuIGFmdGVyIGFuCisgICAgICogICAgICAgICAgICBhbmltYXRpb24pLCBhIHZhbHVlIGJldHdlZW4KKyAgICAgKiAgICAgICAgICAgIHtAbGluayBXaW5kb3cjUFJPR1JFU1NfU0VDT05EQVJZX1NUQVJUfSAtCisgICAgICogICAgICAgICAgICB7QGxpbmsgV2luZG93I1BST0dSRVNTX1NFQ09OREFSWV9FTkR9IGZvciB0aGUKKyAgICAgKiAgICAgICAgICAgIHNlY29uZGFyeSBwcm9ncmVzcyAoaWYKKyAgICAgKiAgICAgICAgICAgIHtAbGluayBXaW5kb3cjUFJPR1JFU1NfU0VDT05EQVJZX0VORH0gaXMgZ2l2ZW4sIHRoZQorICAgICAqICAgICAgICAgICAgcHJvZ3Jlc3MgYmFyIHdpZGdldHMgd2lsbCBzdGlsbCBiZSBzaG93biB3aXRoIHRoZSBzZWNvbmRhcnkKKyAgICAgKiAgICAgICAgICAgIHByb2dyZXNzIGJhciB3aWxsIGJlIGNvbXBsZXRlbHkgZmlsbGVkIGluLikKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlUHJvZ3Jlc3NCYXJzKGludCB2YWx1ZSkgeworICAgICAgICBQcm9ncmVzc0JhciBjaXJjdWxhclByb2dyZXNzQmFyID0gZ2V0Q2lyY3VsYXJQcm9ncmVzc0Jhcih0cnVlKTsKKyAgICAgICAgUHJvZ3Jlc3NCYXIgaG9yaXpvbnRhbFByb2dyZXNzQmFyID0gZ2V0SG9yaXpvbnRhbFByb2dyZXNzQmFyKHRydWUpOworCisgICAgICAgIGZpbmFsIGludCBmZWF0dXJlcyA9IGdldExvY2FsRmVhdHVyZXMoKTsKKyAgICAgICAgaWYgKHZhbHVlID09IFBST0dSRVNTX1ZJU0lCSUxJVFlfT04pIHsKKyAgICAgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX1BST0dSRVNTKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGludCBsZXZlbCA9IGhvcml6b250YWxQcm9ncmVzc0Jhci5nZXRQcm9ncmVzcygpOworICAgICAgICAgICAgICAgIGludCB2aXNpYmlsaXR5ID0gKGhvcml6b250YWxQcm9ncmVzc0Jhci5pc0luZGV0ZXJtaW5hdGUoKSB8fCBsZXZlbCA8IDEwMDAwKSA/CisgICAgICAgICAgICAgICAgICAgICAgICBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRTsKKyAgICAgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eSh2aXNpYmlsaXR5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgY2lyY3VsYXJQcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gUFJPR1JFU1NfVklTSUJJTElUWV9PRkYpIHsKKyAgICAgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX1BST0dSRVNTKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGhvcml6b250YWxQcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9JTkRFVEVSTUlOQVRFX1BST0dSRVNTKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGNpcmN1bGFyUHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IFBST0dSRVNTX0lOREVURVJNSU5BVEVfT04pIHsKKyAgICAgICAgICAgIGhvcml6b250YWxQcm9ncmVzc0Jhci5zZXRJbmRldGVybWluYXRlKHRydWUpOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IFBST0dSRVNTX0lOREVURVJNSU5BVEVfT0ZGKSB7CisgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuc2V0SW5kZXRlcm1pbmF0ZShmYWxzZSk7CisgICAgICAgIH0gZWxzZSBpZiAoUFJPR1JFU1NfU1RBUlQgPD0gdmFsdWUgJiYgdmFsdWUgPD0gUFJPR1JFU1NfRU5EKSB7CisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIHNldCB0aGUgcHJvZ3Jlc3MgdmFsdWUgYmVmb3JlIHRlc3RpbmcgZm9yIHZpc2liaWxpdHkKKyAgICAgICAgICAgIC8vIHNvIHRoYXQgd2hlbiB0aGUgcHJvZ3Jlc3MgYmFyIGJlY29tZXMgdmlzaWJsZSBhZ2FpbiwgaXQgaGFzIHRoZQorICAgICAgICAgICAgLy8gY29ycmVjdCBsZXZlbC4KKyAgICAgICAgICAgIGhvcml6b250YWxQcm9ncmVzc0Jhci5zZXRQcm9ncmVzcyh2YWx1ZSAtIFBST0dSRVNTX1NUQVJUKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlIDwgUFJPR1JFU1NfRU5EKSB7CisgICAgICAgICAgICAgICAgc2hvd1Byb2dyZXNzQmFycyhob3Jpem9udGFsUHJvZ3Jlc3NCYXIsIGNpcmN1bGFyUHJvZ3Jlc3NCYXIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBoaWRlUHJvZ3Jlc3NCYXJzKGhvcml6b250YWxQcm9ncmVzc0JhciwgY2lyY3VsYXJQcm9ncmVzc0Jhcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoUFJPR1JFU1NfU0VDT05EQVJZX1NUQVJUIDw9IHZhbHVlICYmIHZhbHVlIDw9IFBST0dSRVNTX1NFQ09OREFSWV9FTkQpIHsKKyAgICAgICAgICAgIGhvcml6b250YWxQcm9ncmVzc0Jhci5zZXRTZWNvbmRhcnlQcm9ncmVzcyh2YWx1ZSAtIFBST0dSRVNTX1NFQ09OREFSWV9TVEFSVCk7CisKKyAgICAgICAgICAgIHNob3dQcm9ncmVzc0JhcnMoaG9yaXpvbnRhbFByb2dyZXNzQmFyLCBjaXJjdWxhclByb2dyZXNzQmFyKTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNob3dQcm9ncmVzc0JhcnMoUHJvZ3Jlc3NCYXIgaG9yaXpvbnRhbFByb2dyZXNzQmFyLCBQcm9ncmVzc0JhciBzcGlubnlQcm9ncmVzc0JhcikgeworICAgICAgICBmaW5hbCBpbnQgZmVhdHVyZXMgPSBnZXRMb2NhbEZlYXR1cmVzKCk7CisgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpKSAhPSAwICYmCisgICAgICAgICAgICAgICAgc3Bpbm55UHJvZ3Jlc3NCYXIuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuSU5WSVNJQkxFKSB7CisgICAgICAgICAgICBzcGlubnlQcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gT25seSBzaG93IHRoZSBwcm9ncmVzcyBiYXJzIGlmIHRoZSBwcmltYXJ5IHByb2dyZXNzIGlzIG5vdCBjb21wbGV0ZQorICAgICAgICBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9QUk9HUkVTUykpICE9IDAgJiYKKyAgICAgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuZ2V0UHJvZ3Jlc3MoKSA8IDEwMDAwKSB7CisgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhpZGVQcm9ncmVzc0JhcnMoUHJvZ3Jlc3NCYXIgaG9yaXpvbnRhbFByb2dyZXNzQmFyLCBQcm9ncmVzc0JhciBzcGlubnlQcm9ncmVzc0JhcikgeworICAgICAgICBmaW5hbCBpbnQgZmVhdHVyZXMgPSBnZXRMb2NhbEZlYXR1cmVzKCk7CisgICAgICAgIEFuaW1hdGlvbiBhbmltID0gQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihnZXRDb250ZXh0KCksIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX291dCk7CisgICAgICAgIGFuaW0uc2V0RHVyYXRpb24oMTAwMCk7CisgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpKSAhPSAwICYmCisgICAgICAgICAgICAgICAgc3Bpbm55UHJvZ3Jlc3NCYXIuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuVklTSUJMRSkgeworICAgICAgICAgICAgc3Bpbm55UHJvZ3Jlc3NCYXIuc3RhcnRBbmltYXRpb24oYW5pbSk7CisgICAgICAgICAgICBzcGlubnlQcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9QUk9HUkVTUykpICE9IDAgJiYKKyAgICAgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuVklTSUJMRSkgeworICAgICAgICAgICAgaG9yaXpvbnRhbFByb2dyZXNzQmFyLnN0YXJ0QW5pbWF0aW9uKGFuaW0pOworICAgICAgICAgICAgaG9yaXpvbnRhbFByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVxdWVzdCB0aGF0IGtleSBldmVudHMgY29tZSB0byB0aGlzIGFjdGl2aXR5LiBVc2UgdGhpcyBpZiB5b3VyIGFjdGl2aXR5CisgICAgICogaGFzIG5vIHZpZXdzIHdpdGggZm9jdXMsIGJ1dCB0aGUgYWN0aXZpdHkgc3RpbGwgd2FudHMgYSBjaGFuY2UgdG8gcHJvY2VzcworICAgICAqIGtleSBldmVudHMuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgdGFrZUtleUV2ZW50cyhib29sZWFuIGdldCkgeworICAgICAgICBtRGVjb3Iuc2V0Rm9jdXNhYmxlKGdldCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gc3VwZXJEaXNwYXRjaEtleUV2ZW50KEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgIHJldHVybiBtRGVjb3Iuc3VwZXJEaXNwYXRjaEtleUV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBlckRpc3BhdGNoVG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICByZXR1cm4gbURlY29yLnN1cGVyRGlzcGF0Y2hUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBlckRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgcmV0dXJuIG1EZWNvci5zdXBlckRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoZXZlbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEEga2V5IHdhcyBwcmVzc2VkIGRvd24gYW5kIG5vdCBoYW5kbGVkIGJ5IGFueXRoaW5nIGVsc2UgaW4gdGhlIHdpbmRvdy4KKyAgICAgKgorICAgICAqIEBzZWUgI29uS2V5VXAKKyAgICAgKiBAc2VlIGFuZHJvaWQudmlldy5LZXlFdmVudAorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIG9uS2V5RG93bihpbnQgZmVhdHVyZUlkLCBpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgZmluYWwgS2V5RXZlbnQuRGlzcGF0Y2hlclN0YXRlIGRpc3BhdGNoZXIgPQorICAgICAgICAgICAgICAgIG1EZWNvciAhPSBudWxsID8gbURlY29yLmdldEtleURpc3BhdGNoZXJTdGF0ZSgpIDogbnVsbDsKKyAgICAgICAgLy9Mb2cuaShUQUcsICJLZXkgZG93bjogcmVwZWF0PSIgKyBldmVudC5nZXRSZXBlYXRDb3VudCgpCisgICAgICAgIC8vICAgICAgICArICIgZmxhZ3M9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyhldmVudC5nZXRGbGFncygpKSk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVA6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfVk9MVU1FX0RPV046IHsKKyAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIgYXVkaW9NYW5hZ2VyID0gKEF1ZGlvTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LkFVRElPX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgIGlmIChhdWRpb01hbmFnZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgKiBBZGp1c3QgdGhlIHZvbHVtZSBpbiBvbiBrZXkgZG93biBzaW5jZSBpdCBpcyBtb3JlCisgICAgICAgICAgICAgICAgICAgICAqIHJlc3BvbnNpdmUgdG8gdGhlIHVzZXIuCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBhdWRpb01hbmFnZXIuYWRqdXN0U3VnZ2VzdGVkU3RyZWFtVm9sdW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gQXVkaW9NYW5hZ2VyLkFESlVTVF9SQUlTRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBBdWRpb01hbmFnZXIuQURKVVNUX0xPV0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Wb2x1bWVDb250cm9sU3RyZWFtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIuRkxBR19TSE9XX1VJIHwgQXVkaW9NYW5hZ2VyLkZMQUdfVklCUkFURSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9QTEFZX1BBVVNFOgorICAgICAgICAgICAgICAgIC8qIFN1cHByZXNzIFBMQVlQQVVTRSB0b2dnbGUgd2hlbiBwaG9uZSBpcyByaW5naW5nIG9yIGluLWNhbGwKKyAgICAgICAgICAgICAgICAgKiB0byBhdm9pZCBtdXNpYyBwbGF5YmFjayAqLworICAgICAgICAgICAgICAgIGlmIChtVGVsZXBob255TWFuYWdlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1UZWxlcGhvbnlNYW5hZ2VyID0gKFRlbGVwaG9ueU1hbmFnZXIpIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVRlbGVwaG9ueU1hbmFnZXIgIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbVRlbGVwaG9ueU1hbmFnZXIuZ2V0Q2FsbFN0YXRlKCkgIT0gVGVsZXBob255TWFuYWdlci5DQUxMX1NUQVRFX0lETEUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBzdXBwcmVzcyBrZXkgZXZlbnQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTVVURToKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9IRUFEU0VUSE9PSzoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9TVE9QOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX05FWFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVM6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDogeworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fTUVESUFfQlVUVE9OLCBudWxsKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0tFWV9FVkVOVCwgZXZlbnQpOworICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zZW5kT3JkZXJlZEJyb2FkY2FzdChpbnRlbnQsIG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQ0FNRVJBOiB7CisgICAgICAgICAgICAgICAgaWYgKGdldEtleWd1YXJkTWFuYWdlcigpLmluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRpc3BhdGNoZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldFJlcGVhdENvdW50KCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnN0YXJ0VHJhY2tpbmcoZXZlbnQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuaXNMb25nUHJlc3MoKSAmJiBkaXNwYXRjaGVyLmlzVHJhY2tpbmcoZXZlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIucGVyZm9ybWVkTG9uZ1ByZXNzKGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbURlY29yLnBlcmZvcm1IYXB0aWNGZWVkYmFjayhIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5MT05HX1BSRVNTKTsKKyAgICAgICAgICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygpOworICAgICAgICAgICAgICAgICAgICAvLyBCcm9hZGNhc3QgYW4gaW50ZW50IHRoYXQgdGhlIENhbWVyYSBidXR0b24gd2FzIGxvbmdwcmVzc2VkCisgICAgICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fQ0FNRVJBX0JVVFRPTiwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfS0VZX0VWRU5ULCBldmVudCk7CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zZW5kT3JkZXJlZEJyb2FkY2FzdChpbnRlbnQsIG51bGwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FTlU6IHsKKyAgICAgICAgICAgICAgICBvbktleURvd25QYW5lbCgoZmVhdHVyZUlkIDwgMCkgPyBGRUFUVVJFX09QVElPTlNfUEFORUwgOiBmZWF0dXJlSWQsIGV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0JBQ0s6IHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0UmVwZWF0Q291bnQoKSA+IDApIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlSWQgPCAwKSBicmVhazsKKyAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgZG9uJ3QgZG8gYW55dGhpbmcgd2l0aCBsb25nIHByZXNzLgorICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuc3RhcnRUcmFja2luZyhldmVudCwgdGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9DQUxMOiB7CisgICAgICAgICAgICAgICAgaWYgKGdldEtleWd1YXJkTWFuYWdlcigpLmluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRpc3BhdGNoZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldFJlcGVhdENvdW50KCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnN0YXJ0VHJhY2tpbmcoZXZlbnQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuaXNMb25nUHJlc3MoKSAmJiBkaXNwYXRjaGVyLmlzVHJhY2tpbmcoZXZlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIucGVyZm9ybWVkTG9uZ1ByZXNzKGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbURlY29yLnBlcmZvcm1IYXB0aWNGZWVkYmFjayhIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5MT05HX1BSRVNTKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gbGF1bmNoIHRoZSBWb2ljZURpYWxlcgorICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX1ZPSUNFX0NPTU1BTkQpOworICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygpOworICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoQWN0aXZpdHlOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhbGxBY3Rpdml0eSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfU0VBUkNIOiB7CisgICAgICAgICAgICAgICAgaWYgKGdldEtleWd1YXJkTWFuYWdlcigpLmluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRpc3BhdGNoZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldFJlcGVhdENvdW50KCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnN0YXJ0VHJhY2tpbmcoZXZlbnQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuaXNMb25nUHJlc3MoKSAmJiBkaXNwYXRjaGVyLmlzVHJhY2tpbmcoZXZlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnID0gZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKTsgCisgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcua2V5Ym9hcmQgPT0gQ29uZmlndXJhdGlvbi5LRVlCT0FSRF9OT0tFWVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjb25maWcuaGFyZEtleWJvYXJkSGlkZGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBDb25maWd1cmF0aW9uLkhBUkRLRVlCT0FSREhJRERFTl9ZRVMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhdW5jaCB0aGUgc2VhcmNoIGFjdGl2aXR5CisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX1NFQVJDSF9MT05HX1BSRVNTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5zZXRGbGFncyhJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EZWNvci5wZXJmb3JtSGFwdGljRmVlZGJhY2soSGFwdGljRmVlZGJhY2tDb25zdGFudHMuTE9OR19QUkVTUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlYXJjaE1hbmFnZXIoKS5zdG9wU2VhcmNoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNsZWFyIHRoaXMgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHN0YXJ0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5OyBvdGhlcndpc2Ugd2Ugd2lsbCBhbGxvdyB0aGUgbm9ybWFsIHNob3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJlc3MgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnBlcmZvcm1lZExvbmdQcmVzcyhldmVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChBY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIEEgaGFuZGxlIHRvIHRoZSBrZXlndWFyZCBtYW5hZ2VyLgorICAgICAqLworICAgIHByaXZhdGUgS2V5Z3VhcmRNYW5hZ2VyIGdldEtleWd1YXJkTWFuYWdlcigpIHsKKyAgICAgICAgaWYgKG1LZXlndWFyZE1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbUtleWd1YXJkTWFuYWdlciA9IChLZXlndWFyZE1hbmFnZXIpIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuS0VZR1VBUkRfU0VSVklDRSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1LZXlndWFyZE1hbmFnZXI7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEByZXR1cm4gQSBoYW5kbGUgdG8gdGhlIHNlYXJjaCBtYW5hZ2VyLgorICAgICAqLworICAgIHByaXZhdGUgU2VhcmNoTWFuYWdlciBnZXRTZWFyY2hNYW5hZ2VyKCkgeworICAgICAgICBpZiAobVNlYXJjaE1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbVNlYXJjaE1hbmFnZXIgPSAoU2VhcmNoTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TRUFSQ0hfU0VSVklDRSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1TZWFyY2hNYW5hZ2VyOworICAgIH0KKworICAgIC8qKgorICAgICAqIEEga2V5IHdhcyByZWxlYXNlZCBhbmQgbm90IGhhbmRsZWQgYnkgYW55dGhpbmcgZWxzZSBpbiB0aGUgd2luZG93LgorICAgICAqCisgICAgICogQHNlZSAjb25LZXlEb3duCisgICAgICogQHNlZSBhbmRyb2lkLnZpZXcuS2V5RXZlbnQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBvbktleVVwKGludCBmZWF0dXJlSWQsIGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICBmaW5hbCBLZXlFdmVudC5EaXNwYXRjaGVyU3RhdGUgZGlzcGF0Y2hlciA9CisgICAgICAgICAgICAgICAgbURlY29yICE9IG51bGwgPyBtRGVjb3IuZ2V0S2V5RGlzcGF0Y2hlclN0YXRlKCkgOiBudWxsOworICAgICAgICBpZiAoZGlzcGF0Y2hlciAhPSBudWxsKSB7CisgICAgICAgICAgICBkaXNwYXRjaGVyLmhhbmRsZVVwRXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgICAgIC8vTG9nLmkoVEFHLCAiS2V5IHVwOiByZXBlYXQ9IiArIGV2ZW50LmdldFJlcGVhdENvdW50KCkKKyAgICAgICAgLy8gICAgICAgICsgIiBmbGFncz0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGV2ZW50LmdldEZsYWdzKCkpKTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoa2V5Q29kZSkgeworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9VUDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfRE9XTjogeworICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlciBhdWRpb01hbmFnZXIgPSAoQXVkaW9NYW5hZ2VyKSBnZXRDb250ZXh0KCkuZ2V0U3lzdGVtU2VydmljZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuQVVESU9fU0VSVklDRSk7CisgICAgICAgICAgICAgICAgaWYgKGF1ZGlvTWFuYWdlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIFBsYXkgYSBzb3VuZC4gVGhpcyBpcyBkb25lIG9uIGtleSB1cCBzaW5jZSB3ZSBkb24ndCB3YW50IHRoZQorICAgICAgICAgICAgICAgICAgICAgKiBzb3VuZCB0byBwbGF5IHdoZW4gYSB1c2VyIGhvbGRzIGRvd24gdm9sdW1lIGRvd24gdG8gbXV0ZS4KKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgIGF1ZGlvTWFuYWdlci5hZGp1c3RTdWdnZXN0ZWRTdHJlYW1Wb2x1bWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLkFESlVTVF9TQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Wb2x1bWVDb250cm9sU3RyZWFtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIuRkxBR19QTEFZX1NPVU5EKTsKKyAgICAgICAgICAgICAgICAgICAgbVZvbHVtZUtleVVwVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FTlU6IHsKKyAgICAgICAgICAgICAgICBvbktleVVwUGFuZWwoZmVhdHVyZUlkIDwgMCA/IEZFQVRVUkVfT1BUSU9OU19QQU5FTCA6IGZlYXR1cmVJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0JBQ0s6IHsKKyAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZUlkIDwgMCkgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmlzVHJhY2tpbmcoKSAmJiAhZXZlbnQuaXNDYW5jZWxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlSWQgPT0gRkVBVFVSRV9PUFRJT05TX1BBTkVMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QgIT0gbnVsbCAmJiBzdC5pc0luRXhwYW5kZWRNb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgaW4gYW4gZXhwYW5kZWQgbWVudSBhbmQgaGl0cyBiYWNrLCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNob3VsZCBnbyBiYWNrIHRvIHRoZSBpY29uIG1lbnUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW9wZW5NZW51KHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNsb3NlUGFuZWwoZmVhdHVyZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfSEVBRFNFVEhPT0s6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUExBWV9QQVVTRToKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9TVE9QOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX05FWFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVM6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDogeworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fTUVESUFfQlVUVE9OLCBudWxsKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0tFWV9FVkVOVCwgZXZlbnQpOworICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zZW5kT3JkZXJlZEJyb2FkY2FzdChpbnRlbnQsIG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQ0FNRVJBOiB7CisgICAgICAgICAgICAgICAgaWYgKGdldEtleWd1YXJkTWFuYWdlcigpLmluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChldmVudC5pc1RyYWNraW5nKCkgJiYgIWV2ZW50LmlzQ2FuY2VsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBBZGQgc2hvcnQgcHJlc3MgYmVoYXZpb3IgaGVyZSBpZiBkZXNpcmVkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQ0FMTDogeworICAgICAgICAgICAgICAgIGlmIChnZXRLZXlndWFyZE1hbmFnZXIoKS5pbktleWd1YXJkUmVzdHJpY3RlZElucHV0TW9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuaXNUcmFja2luZygpICYmICFldmVudC5pc0NhbmNlbGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRDYWxsQWN0aXZpdHkoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9TRUFSQ0g6IHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIERvIHRoaXMgaW4gb25LZXlVcCBzaW5jZSB0aGUgU2VhcmNoIGtleSBpcyBhbHNvIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICogY2hvcmRpbmcgcXVpY2sgbGF1bmNoIHNob3J0Y3V0cy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoZ2V0S2V5Z3VhcmRNYW5hZ2VyKCkuaW5LZXlndWFyZFJlc3RyaWN0ZWRJbnB1dE1vZGUoKSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmlzVHJhY2tpbmcoKSAmJiAhZXZlbnQuaXNDYW5jZWxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGxhdW5jaERlZmF1bHRTZWFyY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHN0YXJ0Q2FsbEFjdGl2aXR5KCkgeworICAgICAgICBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKCk7CisgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fQ0FMTF9CVVRUT04pOworICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICBnZXRDb250ZXh0KCkuc3RhcnRBY3Rpdml0eShpbnRlbnQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uQWN0aXZlKCkgeworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCBWaWV3IGdldERlY29yVmlldygpIHsKKyAgICAgICAgaWYgKG1EZWNvciA9PSBudWxsKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbURlY29yOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCBWaWV3IHBlZWtEZWNvclZpZXcoKSB7CisgICAgICAgIHJldHVybiBtRGVjb3I7CisgICAgfQorCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgU3RyaW5nIEZPQ1VTRURfSURfVEFHID0gImFuZHJvaWQ6Zm9jdXNlZFZpZXdJZCI7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgU3RyaW5nIFZJRVdTX1RBRyA9ICJhbmRyb2lkOnZpZXdzIjsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgUEFORUxTX1RBRyA9ICJhbmRyb2lkOlBhbmVscyI7CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdW5kbGUgc2F2ZUhpZXJhcmNoeVN0YXRlKCkgeworICAgICAgICBCdW5kbGUgb3V0U3RhdGUgPSBuZXcgQnVuZGxlKCk7CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gb3V0U3RhdGU7CisgICAgICAgIH0KKworICAgICAgICBTcGFyc2VBcnJheTxQYXJjZWxhYmxlPiBzdGF0ZXMgPSBuZXcgU3BhcnNlQXJyYXk8UGFyY2VsYWJsZT4oKTsKKyAgICAgICAgbUNvbnRlbnRQYXJlbnQuc2F2ZUhpZXJhcmNoeVN0YXRlKHN0YXRlcyk7CisgICAgICAgIG91dFN0YXRlLnB1dFNwYXJzZVBhcmNlbGFibGVBcnJheShWSUVXU19UQUcsIHN0YXRlcyk7CisKKyAgICAgICAgLy8gc2F2ZSB0aGUgZm9jdXNlZCB2aWV3IGlkCisgICAgICAgIFZpZXcgZm9jdXNlZFZpZXcgPSBtQ29udGVudFBhcmVudC5maW5kRm9jdXMoKTsKKyAgICAgICAgaWYgKGZvY3VzZWRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChmb2N1c2VkVmlldy5nZXRJZCgpICE9IFZpZXcuTk9fSUQpIHsKKyAgICAgICAgICAgICAgICBvdXRTdGF0ZS5wdXRJbnQoRk9DVVNFRF9JRF9UQUcsIGZvY3VzZWRWaWV3LmdldElkKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR0QpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiY291bGRuJ3Qgc2F2ZSB3aGljaCB2aWV3IGhhcyBmb2N1cyBiZWNhdXNlIHRoZSBmb2N1c2VkIHZpZXcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZm9jdXNlZFZpZXcgKyAiIGhhcyBubyBpZC4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBzYXZlIHRoZSBwYW5lbHMKKyAgICAgICAgU3BhcnNlQXJyYXk8UGFyY2VsYWJsZT4gcGFuZWxTdGF0ZXMgPSBuZXcgU3BhcnNlQXJyYXk8UGFyY2VsYWJsZT4oKTsKKyAgICAgICAgc2F2ZVBhbmVsU3RhdGUocGFuZWxTdGF0ZXMpOworICAgICAgICBpZiAocGFuZWxTdGF0ZXMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgb3V0U3RhdGUucHV0U3BhcnNlUGFyY2VsYWJsZUFycmF5KFBBTkVMU19UQUcsIHBhbmVsU3RhdGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBvdXRTdGF0ZTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJlc3RvcmVIaWVyYXJjaHlTdGF0ZShCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKSB7CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBTcGFyc2VBcnJheTxQYXJjZWxhYmxlPiBzYXZlZFN0YXRlcworICAgICAgICAgICAgICAgID0gc2F2ZWRJbnN0YW5jZVN0YXRlLmdldFNwYXJzZVBhcmNlbGFibGVBcnJheShWSUVXU19UQUcpOworICAgICAgICBpZiAoc2F2ZWRTdGF0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgbUNvbnRlbnRQYXJlbnQucmVzdG9yZUhpZXJhcmNoeVN0YXRlKHNhdmVkU3RhdGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHJlc3RvcmUgdGhlIGZvY3VzZWQgdmlldworICAgICAgICBpbnQgZm9jdXNlZFZpZXdJZCA9IHNhdmVkSW5zdGFuY2VTdGF0ZS5nZXRJbnQoRk9DVVNFRF9JRF9UQUcsIFZpZXcuTk9fSUQpOworICAgICAgICBpZiAoZm9jdXNlZFZpZXdJZCAhPSBWaWV3Lk5PX0lEKSB7CisgICAgICAgICAgICBWaWV3IG5lZWRzRm9jdXMgPSBtQ29udGVudFBhcmVudC5maW5kVmlld0J5SWQoZm9jdXNlZFZpZXdJZCk7CisgICAgICAgICAgICBpZiAobmVlZHNGb2N1cyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbmVlZHNGb2N1cy5yZXF1ZXN0Rm9jdXMoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTG9nLncoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgIlByZXZpb3VzbHkgZm9jdXNlZCB2aWV3IHJlcG9ydGVkIGlkICIgKyBmb2N1c2VkVmlld0lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBkdXJpbmcgc2F2ZSwgYnV0IGNhbid0IGJlIGZvdW5kIGR1cmluZyByZXN0b3JlLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gcmVzdG9yZSB0aGUgcGFuZWxzCisgICAgICAgIFNwYXJzZUFycmF5PFBhcmNlbGFibGU+IHBhbmVsU3RhdGVzID0gc2F2ZWRJbnN0YW5jZVN0YXRlLmdldFNwYXJzZVBhcmNlbGFibGVBcnJheShQQU5FTFNfVEFHKTsKKyAgICAgICAgaWYgKHBhbmVsU3RhdGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3RvcmVQYW5lbFN0YXRlKHBhbmVsU3RhdGVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEludm9rZWQgd2hlbiB0aGUgcGFuZWxzIHNob3VsZCBmcmVlemUgdGhlaXIgc3RhdGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaWNpY2xlcyBTYXZlIHN0YXRlIGludG8gdGhpcy4gVGhpcyBpcyB1c3VhbGx5IGluZGV4ZWQgYnkgdGhlCisgICAgICogICAgICAgICAgICBmZWF0dXJlSWQuIFRoaXMgd2lsbCBiZSBnaXZlbiB0byB7QGxpbmsgI3Jlc3RvcmVQYW5lbFN0YXRlfSBpbiB0aGUKKyAgICAgKiAgICAgICAgICAgIGZ1dHVyZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2F2ZVBhbmVsU3RhdGUoU3BhcnNlQXJyYXk8UGFyY2VsYWJsZT4gaWNpY2xlcykgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZVtdIHBhbmVscyA9IG1QYW5lbHM7CisgICAgICAgIGlmIChwYW5lbHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgY3VyRmVhdHVyZUlkID0gcGFuZWxzLmxlbmd0aCAtIDE7IGN1ckZlYXR1cmVJZCA+PSAwOyBjdXJGZWF0dXJlSWQtLSkgeworICAgICAgICAgICAgaWYgKHBhbmVsc1tjdXJGZWF0dXJlSWRdICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpY2ljbGVzLnB1dChjdXJGZWF0dXJlSWQsIHBhbmVsc1tjdXJGZWF0dXJlSWRdLm9uU2F2ZUluc3RhbmNlU3RhdGUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnZva2VkIHdoZW4gdGhlIHBhbmVscyBzaG91bGQgdGhhdyB0aGVpciBzdGF0ZSBmcm9tIGEgcHJldmlvdXNseSBmcm96ZW4gc3RhdGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaWNpY2xlcyBUaGUgc3RhdGUgc2F2ZWQgYnkge0BsaW5rICNzYXZlUGFuZWxTdGF0ZX0gdGhhdCBuZWVkcyB0byBiZSB0aGF3ZWQuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlc3RvcmVQYW5lbFN0YXRlKFNwYXJzZUFycmF5PFBhcmNlbGFibGU+IGljaWNsZXMpIHsKKyAgICAgICAgUGFuZWxGZWF0dXJlU3RhdGUgc3Q7CisgICAgICAgIGZvciAoaW50IGN1ckZlYXR1cmVJZCA9IGljaWNsZXMuc2l6ZSgpIC0gMTsgY3VyRmVhdHVyZUlkID49IDA7IGN1ckZlYXR1cmVJZC0tKSB7CisgICAgICAgICAgICBzdCA9IGdldFBhbmVsU3RhdGUoY3VyRmVhdHVyZUlkLCBmYWxzZSAvKiByZXF1aXJlZCAqLyk7CisgICAgICAgICAgICBpZiAoc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBwYW5lbCBtdXN0IG5vdCBoYXZlIGJlZW4gcmVxdWlyZWQsIGFuZCBpcyBjdXJyZW50bHkgbm90IGFyb3VuZCwgc2tpcCBpdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdC5vblJlc3RvcmVJbnN0YW5jZVN0YXRlKGljaWNsZXMuZ2V0KGN1ckZlYXR1cmVJZCkpOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogSW1wbGVtZW50YXRpb24gbm90ZTogY2FsbCBvcGVuUGFuZWxzQWZ0ZXJSZXN0b3JlIGxhdGVyIHRvIGFjdHVhbGx5IG9wZW4gdGhlCisgICAgICAgICAqIHJlc3RvcmVkIHBhbmVscy4KKyAgICAgICAgICovCisgICAgfQorCisgICAgLyoqCisgICAgICogT3BlbnMgdGhlIHBhbmVscyB0aGF0IGhhdmUgaGFkIHRoZWlyIHN0YXRlIHJlc3RvcmVkLiBUaGlzIHNob3VsZCBiZQorICAgICAqIGNhbGxlZCBzb21ldGltZSBhZnRlciB7QGxpbmsgI3Jlc3RvcmVQYW5lbFN0YXRlfSB3aGVuIGl0IGlzIHNhZmUgdG8gYWRkCisgICAgICogdG8gdGhlIHdpbmRvdyBtYW5hZ2VyLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBvcGVuUGFuZWxzQWZ0ZXJSZXN0b3JlKCkgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZVtdIHBhbmVscyA9IG1QYW5lbHM7CisKKyAgICAgICAgaWYgKHBhbmVscyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdDsKKyAgICAgICAgZm9yIChpbnQgaSA9IHBhbmVscy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgc3QgPSBwYW5lbHNbaV07CisgICAgICAgICAgICAvLyBXZSByZXN0b3JlIHRoZSBwYW5lbCBpZiBpdCB3YXMgbGFzdCBvcGVuOyB3ZSBza2lwIGl0IGlmIGl0CisgICAgICAgICAgICAvLyBub3cgaXMgb3BlbiwgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUgdXNlciBpbW1lZGlhdGVseQorICAgICAgICAgICAgLy8gb3BlbnMgaXQgd2hlbiB3ZSBhcmUgcmVzdW1pbmcuCisgICAgICAgICAgICBpZiAoKHN0ICE9IG51bGwpICYmICFzdC5pc09wZW4gJiYgc3Qud2FzTGFzdE9wZW4pIHsKKyAgICAgICAgICAgICAgICBzdC5pc0luRXhwYW5kZWRNb2RlID0gc3Qud2FzTGFzdEV4cGFuZGVkOworICAgICAgICAgICAgICAgIG9wZW5QYW5lbChzdCwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIERlY29yVmlldyBleHRlbmRzIEZyYW1lTGF5b3V0IGltcGxlbWVudHMgUm9vdFZpZXdTdXJmYWNlVGFrZXIgeworICAgICAgICAvKiBwYWNrYWdlICovaW50IG1EZWZhdWx0T3BhY2l0eSA9IFBpeGVsRm9ybWF0Lk9QQVFVRTsKKworICAgICAgICAvKiogVGhlIGZlYXR1cmUgSUQgb2YgdGhlIHBhbmVsLCBvciAtMSBpZiB0aGlzIGlzIHRoZSBhcHBsaWNhdGlvbidzIERlY29yVmlldyAqLworICAgICAgICBwcml2YXRlIGZpbmFsIGludCBtRmVhdHVyZUlkOworCisgICAgICAgIHByaXZhdGUgZmluYWwgUmVjdCBtRHJhd2luZ0JvdW5kcyA9IG5ldyBSZWN0KCk7CisKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBSZWN0IG1CYWNrZ3JvdW5kUGFkZGluZyA9IG5ldyBSZWN0KCk7CisKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBSZWN0IG1GcmFtZVBhZGRpbmcgPSBuZXcgUmVjdCgpOworCisgICAgICAgIHByaXZhdGUgZmluYWwgUmVjdCBtRnJhbWVPZmZzZXRzID0gbmV3IFJlY3QoKTsKKworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUNoYW5naW5nOworCisgICAgICAgIHByaXZhdGUgRHJhd2FibGUgbU1lbnVCYWNrZ3JvdW5kOworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbVdhdGNoaW5nRm9yTWVudTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbURvd25ZOworCisgICAgICAgIHB1YmxpYyBEZWNvclZpZXcoQ29udGV4dCBjb250ZXh0LCBpbnQgZmVhdHVyZUlkKSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICAgICAgICAgIG1GZWF0dXJlSWQgPSBmZWF0dXJlSWQ7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hLZXlFdmVudChLZXlFdmVudCBldmVudCkgeworICAgICAgICAgICAgZmluYWwgaW50IGtleUNvZGUgPSBldmVudC5nZXRLZXlDb2RlKCk7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGlzRG93biA9IGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9ET1dOOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSWYgdGhlIHVzZXIgaGl0cyBhbm90aGVyIGtleSB3aXRoaW4gdGhlIHBsYXkgc291bmQgZGVsYXksIHRoZW4KKyAgICAgICAgICAgICAqIGNhbmNlbCB0aGUgc291bmQKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGtleUNvZGUgIT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfRE9XTiAmJiBrZXlDb2RlICE9IEtleUV2ZW50LktFWUNPREVfVk9MVU1FX1VQCisgICAgICAgICAgICAgICAgICAgICYmIG1Wb2x1bWVLZXlVcFRpbWUgKyBWb2x1bWVQYW5lbC5QTEFZX1NPVU5EX0RFTEFZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogVGhlIHVzZXIgaGFzIGhpdCBhbm90aGVyIGtleSBkdXJpbmcgdGhlIGRlbGF5IChlLmcuLCAzMDBtcykKKyAgICAgICAgICAgICAgICAgKiBzaW5jZSB0aGUgbGFzdCB2b2x1bWUga2V5IHVwLCBzbyBjYW5jZWwgYW55IHNvdW5kcy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIgYXVkaW9NYW5hZ2VyID0gKEF1ZGlvTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LkFVRElPX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgIGlmIChhdWRpb01hbmFnZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBhdWRpb01hbmFnZXIuYWRqdXN0U3VnZ2VzdGVkU3RyZWFtVm9sdW1lKEF1ZGlvTWFuYWdlci5BREpVU1RfU0FNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVm9sdW1lQ29udHJvbFN0cmVhbVR5cGUsIEF1ZGlvTWFuYWdlci5GTEFHX1JFTU9WRV9TT1VORF9BTkRfVklCUkFURSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNEb3duICYmIChldmVudC5nZXRSZXBlYXRDb3VudCgpID09IDApKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgaGFuZGxlIGNob3JkaW5nIG9mIHBhbmVsIGtleTogaWYgYSBwYW5lbCBrZXkgaXMgaGVsZAorICAgICAgICAgICAgICAgIC8vIGJ1dCBub3QgcmVsZWFzZWQsIHRyeSB0byBleGVjdXRlIGEgc2hvcnRjdXQgaW4gaXQuCisgICAgICAgICAgICAgICAgaWYgKChtUGFuZWxDaG9yZGluZ0tleSA+IDApICYmIChtUGFuZWxDaG9yZGluZ0tleSAhPSBrZXlDb2RlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQZXJmb3JtIHRoZSBzaG9ydGN1dCAobVByZXBhcmVkUGFuZWwgY2FuIGJlIG51bGwgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsIHNob3J0Y3V0cyAoc3VjaCBhcyBzZWFyY2gpIGRvbid0IHJlbHkgb24gYQorICAgICAgICAgICAgICAgICAgICAvLyBwcmVwYXJlZCBwYW5lbCBvciBtZW51KS4KKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBoYW5kbGVkID0gcGVyZm9ybVBhbmVsU2hvcnRjdXQobVByZXBhcmVkUGFuZWwsIGtleUNvZGUsIGV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnUuRkxBR19QRVJGT1JNX05PX0NMT1NFKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBJZiBub3QgaGFuZGxlZCwgdGhlbiBwYXNzIGl0IHRvIHRoZSB2aWV3IGhpZXJhcmNoeQorICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIGFueW9uZSBlbHNlIHRoYXQgbWF5IGJlIGludGVyZXN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSBkaXNwYXRjaEtleVNob3J0Y3V0RXZlbnQoZXZlbnQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlZCAmJiBtUHJlcGFyZWRQYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVByZXBhcmVkUGFuZWwuaXNIYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIGEgcGFuZWwgaXMgb3BlbiwgcGVyZm9ybSBhIHNob3J0Y3V0IG9uIGl0IHdpdGhvdXQgdGhlCisgICAgICAgICAgICAgICAgLy8gY2hvcmRlZCBwYW5lbCBrZXkKKyAgICAgICAgICAgICAgICBpZiAoKG1QcmVwYXJlZFBhbmVsICE9IG51bGwpICYmIG1QcmVwYXJlZFBhbmVsLmlzT3BlbikgeworICAgICAgICAgICAgICAgICAgICBpZiAocGVyZm9ybVBhbmVsU2hvcnRjdXQobVByZXBhcmVkUGFuZWwsIGtleUNvZGUsIGV2ZW50LCAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFuZGxlZCA9IGNiICE9IG51bGwgJiYgbUZlYXR1cmVJZCA8IDAgPyBjYi5kaXNwYXRjaEtleUV2ZW50KGV2ZW50KQorICAgICAgICAgICAgICAgICAgICA6IHN1cGVyLmRpc3BhdGNoS2V5RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgaWYgKGhhbmRsZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBpc0Rvd24gPyBQaG9uZVdpbmRvdy50aGlzLm9uS2V5RG93bihtRmVhdHVyZUlkLCBldmVudC5nZXRLZXlDb2RlKCksIGV2ZW50KQorICAgICAgICAgICAgICAgICAgICA6IFBob25lV2luZG93LnRoaXMub25LZXlVcChtRmVhdHVyZUlkLCBldmVudC5nZXRLZXlDb2RlKCksIGV2ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaFRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXYpIHsKKyAgICAgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYiAhPSBudWxsICYmIG1GZWF0dXJlSWQgPCAwID8gY2IuZGlzcGF0Y2hUb3VjaEV2ZW50KGV2KSA6IHN1cGVyCisgICAgICAgICAgICAgICAgICAgIC5kaXNwYXRjaFRvdWNoRXZlbnQoZXYpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoTW90aW9uRXZlbnQgZXYpIHsKKyAgICAgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYiAhPSBudWxsICYmIG1GZWF0dXJlSWQgPCAwID8gY2IuZGlzcGF0Y2hUcmFja2JhbGxFdmVudChldikgOiBzdXBlcgorICAgICAgICAgICAgICAgICAgICAuZGlzcGF0Y2hUcmFja2JhbGxFdmVudChldik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBzdXBlckRpc3BhdGNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5kaXNwYXRjaEtleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIHN1cGVyRGlzcGF0Y2hUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZGlzcGF0Y2hUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIHN1cGVyRGlzcGF0Y2hUcmFja2JhbGxFdmVudChNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoZXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIG9uVG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICAgICAgcmV0dXJuIG9uSW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGJvb2xlYW4gaXNPdXRPZkJvdW5kcyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIHJldHVybiB4IDwgLTUgfHwgeSA8IC01IHx8IHggPiAoZ2V0V2lkdGgoKSArIDUpCisgICAgICAgICAgICAgICAgICAgIHx8IHkgPiAoZ2V0SGVpZ2h0KCkgKyA1KTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBvbkludGVyY2VwdFRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgICAgIGludCBhY3Rpb24gPSBldmVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChtRmVhdHVyZUlkID49IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB4ID0gKGludClldmVudC5nZXRYKCk7CisgICAgICAgICAgICAgICAgICAgIGludCB5ID0gKGludClldmVudC5nZXRZKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc091dE9mQm91bmRzKHgsIHkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVBhbmVsKG1GZWF0dXJlSWQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghU1dFRVBfT1BFTl9NRU5VKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUZlYXR1cmVJZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgeworICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJXYXRjaGlpbmchIik7CisgICAgICAgICAgICAgICAgICAgIG1XYXRjaGluZ0Zvck1lbnUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtRG93blkgPSAoaW50KSBldmVudC5nZXRZKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIW1XYXRjaGluZ0Zvck1lbnUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCB5ID0gKGludClldmVudC5nZXRZKCk7CisgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fTU9WRSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoeSA+IChtRG93blkrMzApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJDbG9zaW5nISIpOworICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VQYW5lbChtRmVhdHVyZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1XYXRjaGluZ0Zvck1lbnUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gTW90aW9uRXZlbnQuQUNUSU9OX1VQKSB7CisgICAgICAgICAgICAgICAgICAgIG1XYXRjaGluZ0Zvck1lbnUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vTG9nLmkoVEFHLCAiSW50ZXJjZXB0OiBhY3Rpb249IiArIGFjdGlvbiArICIgeT0iICsgZXZlbnQuZ2V0WSgpCisgICAgICAgICAgICAvLyAgICAgICAgKyAiIChpbiAiICsgZ2V0SGVpZ2h0KCkgKyAiKSIpOworCisgICAgICAgICAgICBpZiAoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICAgICAgaW50IHkgPSAoaW50KWV2ZW50LmdldFkoKTsKKyAgICAgICAgICAgICAgICBpZiAoeSA+PSAoZ2V0SGVpZ2h0KCktNSkgJiYgIWhhc0NoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiV2F0Y2hpaW5nISIpOworICAgICAgICAgICAgICAgICAgICBtV2F0Y2hpbmdGb3JNZW51ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1XYXRjaGluZ0Zvck1lbnUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCB5ID0gKGludClldmVudC5nZXRZKCk7CisgICAgICAgICAgICBpZiAoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKSB7CisgICAgICAgICAgICAgICAgaWYgKHkgPCAoZ2V0SGVpZ2h0KCktMzApKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIk9wZW5pbmchIik7CisgICAgICAgICAgICAgICAgICAgIG9wZW5QYW5lbChGRUFUVVJFX09QVElPTlNfUEFORUwsIG5ldyBLZXlFdmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudC5BQ1RJT05fRE9XTiwgS2V5RXZlbnQuS0VZQ09ERV9NRU5VKSk7CisgICAgICAgICAgICAgICAgICAgIG1XYXRjaGluZ0Zvck1lbnUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gTW90aW9uRXZlbnQuQUNUSU9OX1VQKSB7CisgICAgICAgICAgICAgICAgbVdhdGNoaW5nRm9yTWVudSA9IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgc2VuZEFjY2Vzc2liaWxpdHlFdmVudChpbnQgZXZlbnRUeXBlKSB7CisgICAgICAgICAgICBpZiAoIUFjY2Vzc2liaWxpdHlNYW5hZ2VyLmdldEluc3RhbmNlKG1Db250ZXh0KS5pc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBzaG93aW5nIGEgZmVhdHVyZSB0aGF0IHNob3VsZCBiZSBhbm5vdW5jZWQgYW5kIG9uZSBjaGlsZAorICAgICAgICAgICAgLy8gbWFrZSB0aGlzIGNoaWxkIHRoZSBldmVudCBzb3VyY2Ugc2luY2UgdGhpcyBpcyB0aGUgZmVhdHVyZSBpdHNlbGYKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSB0aGUgY2FsbGJhY2sgd2lsbCB0YWtlIG92ZXIgYW5kIGFubm91bmNlIGl0cyBjbGllbnQKKyAgICAgICAgICAgIGlmICgobUZlYXR1cmVJZCA9PSBGRUFUVVJFX09QVElPTlNfUEFORUwgfHwKKyAgICAgICAgICAgICAgICAgICAgbUZlYXR1cmVJZCA9PSBGRUFUVVJFX0NPTlRFWFRfTUVOVSB8fAorICAgICAgICAgICAgICAgICAgICBtRmVhdHVyZUlkID09IEZFQVRVUkVfUFJPR1JFU1MgfHwKKyAgICAgICAgICAgICAgICAgICAgbUZlYXR1cmVJZCA9PSBGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpCisgICAgICAgICAgICAgICAgICAgICYmIGdldENoaWxkQ291bnQoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgZ2V0Q2hpbGRBdCgwKS5zZW5kQWNjZXNzaWJpbGl0eUV2ZW50KGV2ZW50VHlwZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN1cGVyLnNlbmRBY2Nlc3NpYmlsaXR5RXZlbnQoZXZlbnRUeXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaFBvcHVsYXRlQWNjZXNzaWJpbGl0eUV2ZW50KEFjY2Vzc2liaWxpdHlFdmVudCBldmVudCkgeworICAgICAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICAgICAgaWYgKGNiICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2IuZGlzcGF0Y2hQb3B1bGF0ZUFjY2Vzc2liaWxpdHlFdmVudChldmVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRpc3BhdGNoUG9wdWxhdGVBY2Nlc3NpYmlsaXR5RXZlbnQoZXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIHNldEZyYW1lKGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiKSB7CisgICAgICAgICAgICBib29sZWFuIGNoYW5nZWQgPSBzdXBlci5zZXRGcmFtZShsLCB0LCByLCBiKTsKKyAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVjdCBkcmF3aW5nQm91bmRzID0gbURyYXdpbmdCb3VuZHM7CisgICAgICAgICAgICAgICAgZ2V0RHJhd2luZ1JlY3QoZHJhd2luZ0JvdW5kcyk7CisKKyAgICAgICAgICAgICAgICBEcmF3YWJsZSBmZyA9IGdldEZvcmVncm91bmQoKTsKKyAgICAgICAgICAgICAgICBpZiAoZmcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZWN0IGZyYW1lT2Zmc2V0cyA9IG1GcmFtZU9mZnNldHM7CisgICAgICAgICAgICAgICAgICAgIGRyYXdpbmdCb3VuZHMubGVmdCArPSBmcmFtZU9mZnNldHMubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgZHJhd2luZ0JvdW5kcy50b3AgKz0gZnJhbWVPZmZzZXRzLnRvcDsKKyAgICAgICAgICAgICAgICAgICAgZHJhd2luZ0JvdW5kcy5yaWdodCAtPSBmcmFtZU9mZnNldHMucmlnaHQ7CisgICAgICAgICAgICAgICAgICAgIGRyYXdpbmdCb3VuZHMuYm90dG9tIC09IGZyYW1lT2Zmc2V0cy5ib3R0b207CisgICAgICAgICAgICAgICAgICAgIGZnLnNldEJvdW5kcyhkcmF3aW5nQm91bmRzKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVjdCBmcmFtZVBhZGRpbmcgPSBtRnJhbWVQYWRkaW5nOworICAgICAgICAgICAgICAgICAgICBkcmF3aW5nQm91bmRzLmxlZnQgKz0gZnJhbWVQYWRkaW5nLmxlZnQgLSBmcmFtZU9mZnNldHMubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgZHJhd2luZ0JvdW5kcy50b3AgKz0gZnJhbWVQYWRkaW5nLnRvcCAtIGZyYW1lT2Zmc2V0cy50b3A7CisgICAgICAgICAgICAgICAgICAgIGRyYXdpbmdCb3VuZHMucmlnaHQgLT0gZnJhbWVQYWRkaW5nLnJpZ2h0IC0gZnJhbWVPZmZzZXRzLnJpZ2h0OworICAgICAgICAgICAgICAgICAgICBkcmF3aW5nQm91bmRzLmJvdHRvbSAtPSBmcmFtZVBhZGRpbmcuYm90dG9tIC0gZnJhbWVPZmZzZXRzLmJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBEcmF3YWJsZSBiZyA9IGdldEJhY2tncm91bmQoKTsKKyAgICAgICAgICAgICAgICBpZiAoYmcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBiZy5zZXRCb3VuZHMoZHJhd2luZ0JvdW5kcyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKFNXRUVQX09QRU5fTUVOVSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobU1lbnVCYWNrZ3JvdW5kID09IG51bGwgJiYgbUZlYXR1cmVJZCA8IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBnZXRBdHRyaWJ1dGVzKCkuaGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5UKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtTWVudUJhY2tncm91bmQgPSBnZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCkuZ2V0RHJhd2FibGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUubWVudV9iYWNrZ3JvdW5kKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobU1lbnVCYWNrZ3JvdW5kICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1NZW51QmFja2dyb3VuZC5zZXRCb3VuZHMoZHJhd2luZ0JvdW5kcy5sZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3aW5nQm91bmRzLmJvdHRvbS02LCBkcmF3aW5nQm91bmRzLnJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3aW5nQm91bmRzLmJvdHRvbSsyMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBkcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgICAgIHN1cGVyLmRyYXcoY2FudmFzKTsKKworICAgICAgICAgICAgaWYgKG1NZW51QmFja2dyb3VuZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbU1lbnVCYWNrZ3JvdW5kLmRyYXcoY2FudmFzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dDb250ZXh0TWVudUZvckNoaWxkKFZpZXcgb3JpZ2luYWxWaWV3KSB7CisgICAgICAgICAgICAvLyBSZXVzZSB0aGUgY29udGV4dCBtZW51IGJ1aWxkZXIKKyAgICAgICAgICAgIGlmIChtQ29udGV4dE1lbnUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Db250ZXh0TWVudSA9IG5ldyBDb250ZXh0TWVudUJ1aWxkZXIoZ2V0Q29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICBtQ29udGV4dE1lbnUuc2V0Q2FsbGJhY2sobUNvbnRleHRNZW51Q2FsbGJhY2spOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQ29udGV4dE1lbnUuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUNvbnRleHRNZW51SGVscGVyID0gbUNvbnRleHRNZW51LnNob3cob3JpZ2luYWxWaWV3LCBvcmlnaW5hbFZpZXcuZ2V0V2luZG93VG9rZW4oKSk7CisgICAgICAgICAgICByZXR1cm4gbUNvbnRleHRNZW51SGVscGVyICE9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzdGFydENoYW5naW5nKCkgeworICAgICAgICAgICAgbUNoYW5naW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGZpbmlzaENoYW5naW5nKCkgeworICAgICAgICAgICAgbUNoYW5naW5nID0gZmFsc2U7CisgICAgICAgICAgICBkcmF3YWJsZUNoYW5nZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldFdpbmRvd0JhY2tncm91bmQoRHJhd2FibGUgZHJhd2FibGUpIHsKKyAgICAgICAgICAgIGlmIChnZXRCYWNrZ3JvdW5kKCkgIT0gZHJhd2FibGUpIHsKKyAgICAgICAgICAgICAgICBzZXRCYWNrZ3JvdW5kRHJhd2FibGUoZHJhd2FibGUpOworICAgICAgICAgICAgICAgIGlmIChkcmF3YWJsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlLmdldFBhZGRpbmcobUJhY2tncm91bmRQYWRkaW5nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtQmFja2dyb3VuZFBhZGRpbmcuc2V0RW1wdHkoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZHJhd2FibGVDaGFuZ2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRXaW5kb3dGcmFtZShEcmF3YWJsZSBkcmF3YWJsZSkgeworICAgICAgICAgICAgaWYgKGdldEZvcmVncm91bmQoKSAhPSBkcmF3YWJsZSkgeworICAgICAgICAgICAgICAgIHNldEZvcmVncm91bmQoZHJhd2FibGUpOworICAgICAgICAgICAgICAgIGlmIChkcmF3YWJsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlLmdldFBhZGRpbmcobUZyYW1lUGFkZGluZyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUZyYW1lUGFkZGluZy5zZXRFbXB0eSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkcmF3YWJsZUNoYW5nZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBmaXRTeXN0ZW1XaW5kb3dzKFJlY3QgaW5zZXRzKSB7CisgICAgICAgICAgICBtRnJhbWVPZmZzZXRzLnNldChpbnNldHMpOworICAgICAgICAgICAgaWYgKGdldEZvcmVncm91bmQoKSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZHJhd2FibGVDaGFuZ2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZml0U3lzdGVtV2luZG93cyhpbnNldHMpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGRyYXdhYmxlQ2hhbmdlZCgpIHsKKyAgICAgICAgICAgIGlmIChtQ2hhbmdpbmcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldFBhZGRpbmcobUZyYW1lUGFkZGluZy5sZWZ0ICsgbUJhY2tncm91bmRQYWRkaW5nLmxlZnQsIG1GcmFtZVBhZGRpbmcudG9wCisgICAgICAgICAgICAgICAgICAgICsgbUJhY2tncm91bmRQYWRkaW5nLnRvcCwgbUZyYW1lUGFkZGluZy5yaWdodCArIG1CYWNrZ3JvdW5kUGFkZGluZy5yaWdodCwKKyAgICAgICAgICAgICAgICAgICAgbUZyYW1lUGFkZGluZy5ib3R0b20gKyBtQmFja2dyb3VuZFBhZGRpbmcuYm90dG9tKTsKKyAgICAgICAgICAgIHJlcXVlc3RMYXlvdXQoKTsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKworICAgICAgICAgICAgaW50IG9wYWNpdHkgPSBQaXhlbEZvcm1hdC5PUEFRVUU7CisKKyAgICAgICAgICAgIC8vIE5vdGU6IGlmIHRoZXJlIGlzIG5vIGJhY2tncm91bmQsIHdlIHdpbGwgYXNzdW1lIG9wYXF1ZS4gVGhlCisgICAgICAgICAgICAvLyBjb21tb24gY2FzZSBzZWVtcyB0byBiZSB0aGF0IGFuIGFwcGxpY2F0aW9uIHNldHMgdGhlcmUgdG8gYmUKKyAgICAgICAgICAgIC8vIG5vIGJhY2tncm91bmQgc28gaXQgY2FuIGRyYXcgZXZlcnl0aGluZyBpdHNlbGYuIEZvciB0aGF0LAorICAgICAgICAgICAgLy8gd2Ugd291bGQgbGlrZSB0byBhc3N1bWUgT1BBUVVFIGFuZCBsZXQgdGhlIGFwcCBmb3JjZSBpdCB0bworICAgICAgICAgICAgLy8gdGhlIHNsb3dlciBUUkFOU0xVQ0VOVCBtb2RlIGlmIHRoYXQgaXMgcmVhbGx5IHdoYXQgaXQgd2FudHMuCisgICAgICAgICAgICBEcmF3YWJsZSBiZyA9IGdldEJhY2tncm91bmQoKTsKKyAgICAgICAgICAgIERyYXdhYmxlIGZnID0gZ2V0Rm9yZWdyb3VuZCgpOworICAgICAgICAgICAgaWYgKGJnICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmcgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gYmcuZ2V0T3BhY2l0eSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUZyYW1lUGFkZGluZy5sZWZ0IDw9IDAgJiYgbUZyYW1lUGFkZGluZy50b3AgPD0gMAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgbUZyYW1lUGFkZGluZy5yaWdodCA8PSAwICYmIG1GcmFtZVBhZGRpbmcuYm90dG9tIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZyYW1lIHBhZGRpbmcgaXMgemVybywgdGhlbiB3ZSBjYW4gYmUgb3BhcXVlCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIGVpdGhlciB0aGUgZnJhbWUgLW9yLSB0aGUgYmFja2dyb3VuZCBpcyBvcGFxdWUuCisgICAgICAgICAgICAgICAgICAgIGludCBmb3AgPSBmZy5nZXRPcGFjaXR5KCk7CisgICAgICAgICAgICAgICAgICAgIGludCBib3AgPSBiZy5nZXRPcGFjaXR5KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HVikKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy52KFRBRywgIkJhY2tncm91bmQgb3BhY2l0eTogIiArIGJvcCArICIsIEZyYW1lIG9wYWNpdHk6ICIgKyBmb3ApOworICAgICAgICAgICAgICAgICAgICBpZiAoZm9wID09IFBpeGVsRm9ybWF0Lk9QQVFVRSB8fCBib3AgPT0gUGl4ZWxGb3JtYXQuT1BBUVVFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gUGl4ZWxGb3JtYXQuT1BBUVVFOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcCA9PSBQaXhlbEZvcm1hdC5VTktOT1dOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gYm9wOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvcCA9PSBQaXhlbEZvcm1hdC5VTktOT1dOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gZm9wOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eSA9IERyYXdhYmxlLnJlc29sdmVPcGFjaXR5KGZvcCwgYm9wKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBub3cgd2UgaGF2ZSB0byBhc3N1bWUgdHJhbnNsdWNlbnQgaWYgdGhlcmUgaXMgYQorICAgICAgICAgICAgICAgICAgICAvLyBmcmFtZSB3aXRoIHBhZGRpbmcuLi4gdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGZyYW1lIGFuZCBiYWNrZ3JvdW5kIHRvZ2V0aGVyIHdpbGwgZHJhdyBhbGwgcGl4ZWxzLgorICAgICAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR1YpCisgICAgICAgICAgICAgICAgICAgICAgICBMb2cudihUQUcsICJQYWRkaW5nOiAiICsgbUZyYW1lUGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgPSBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChDb25maWcuTE9HVikKKyAgICAgICAgICAgICAgICBMb2cudihUQUcsICJCYWNrZ3JvdW5kOiAiICsgYmcgKyAiLCBGcmFtZTogIiArIGZnKTsKKyAgICAgICAgICAgIGlmIChDb25maWcuTE9HVikKKyAgICAgICAgICAgICAgICBMb2cudihUQUcsICJTZWxlY3RlZCBkZWZhdWx0IG9wYWNpdHk6ICIgKyBvcGFjaXR5KTsKKworICAgICAgICAgICAgbURlZmF1bHRPcGFjaXR5ID0gb3BhY2l0eTsKKyAgICAgICAgICAgIGlmIChtRmVhdHVyZUlkIDwgMCkgeworICAgICAgICAgICAgICAgIHNldERlZmF1bHRXaW5kb3dGb3JtYXQob3BhY2l0eSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25XaW5kb3dGb2N1c0NoYW5nZWQoYm9vbGVhbiBoYXNXaW5kb3dGb2N1cykgeworICAgICAgICAgICAgc3VwZXIub25XaW5kb3dGb2N1c0NoYW5nZWQoaGFzV2luZG93Rm9jdXMpOworCisgICAgICAgICAgICBtUGFuZWxNYXlMb25nUHJlc3MgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgY2hvcmRpbmcgYSBtZW51IHNob3J0Y3V0LCByZWxlYXNlIHRoZSBjaG9yZCBzaW5jZQorICAgICAgICAgICAgLy8gdGhpcyB3aW5kb3cgbG9zdCBmb2N1cworICAgICAgICAgICAgaWYgKCFoYXNXaW5kb3dGb2N1cyAmJiBtUGFuZWxDaG9yZGluZ0tleSAhPSAwKSB7CisgICAgICAgICAgICAgICAgY2xvc2VQYW5lbChGRUFUVVJFX09QVElPTlNfUEFORUwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBDYWxsYmFjayBjYiA9IGdldENhbGxiYWNrKCk7CisgICAgICAgICAgICBpZiAoY2IgIT0gbnVsbCAmJiBtRmVhdHVyZUlkIDwgMCkgeworICAgICAgICAgICAgICAgIGNiLm9uV2luZG93Rm9jdXNDaGFuZ2VkKGhhc1dpbmRvd0ZvY3VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICAgICAgaWYgKGNiICE9IG51bGwgJiYgbUZlYXR1cmVJZCA8IDApIHsKKyAgICAgICAgICAgICAgICBjYi5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1GZWF0dXJlSWQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRoZSBtYWluIHdpbmRvdyBoYXMgYmVlbiBhdHRhY2hlZCwgdHJ5IHRvIHJlc3RvcmUgYW55IHBhbmVscworICAgICAgICAgICAgICAgICAqIHRoYXQgbWF5IGhhdmUgYmVlbiBvcGVuIGJlZm9yZS4gVGhpcyBpcyBjYWxsZWQgaW4gY2FzZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgKiBhbiBhY3Rpdml0eSBpcyBiZWluZyBraWxsZWQgZm9yIGNvbmZpZ3VyYXRpb24gY2hhbmdlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgKiBtZW51IHdhcyBvcGVuLiBXaGVuIHRoZSBhY3Rpdml0eSBpcyByZWNyZWF0ZWQsIHRoZSBtZW51CisgICAgICAgICAgICAgICAgICogc2hvdWxkIGJlIHNob3duIGFnYWluLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG9wZW5QYW5lbHNBZnRlclJlc3RvcmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBvbkRldGFjaGVkRnJvbVdpbmRvdygpIHsKKyAgICAgICAgICAgIHN1cGVyLm9uRGV0YWNoZWRGcm9tV2luZG93KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIGlmIChjYiAhPSBudWxsICYmIG1GZWF0dXJlSWQgPCAwKSB7CisgICAgICAgICAgICAgICAgY2Iub25EZXRhY2hlZEZyb21XaW5kb3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xvc2VTeXN0ZW1EaWFsb2dzKFN0cmluZyByZWFzb24pIHsKKyAgICAgICAgICAgIGlmIChtRmVhdHVyZUlkID49IDApIHsKKyAgICAgICAgICAgICAgICBjbG9zZUFsbFBhbmVscygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyLkNhbGxiYWNrIHdpbGxZb3VUYWtlVGhlU3VyZmFjZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtRmVhdHVyZUlkIDwgMCA/IG1UYWtlU3VyZmFjZUNhbGxiYWNrIDogbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIElucHV0UXVldWUuQ2FsbGJhY2sgd2lsbFlvdVRha2VUaGVJbnB1dFF1ZXVlKCkgeworICAgICAgICAgICAgcmV0dXJuIG1GZWF0dXJlSWQgPCAwID8gbVRha2VJbnB1dFF1ZXVlQ2FsbGJhY2sgOiBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdXJmYWNlVHlwZShpbnQgdHlwZSkgeworICAgICAgICAgICAgUGhvbmVXaW5kb3cudGhpcy5zZXRUeXBlKHR5cGUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdXJmYWNlRm9ybWF0KGludCBmb3JtYXQpIHsKKyAgICAgICAgICAgIFBob25lV2luZG93LnRoaXMuc2V0Rm9ybWF0KGZvcm1hdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHNldFN1cmZhY2VLZWVwU2NyZWVuT24oYm9vbGVhbiBrZWVwT24pIHsKKyAgICAgICAgICAgIGlmIChrZWVwT24pIFBob25lV2luZG93LnRoaXMuYWRkRmxhZ3MoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19LRUVQX1NDUkVFTl9PTik7CisgICAgICAgICAgICBlbHNlIFBob25lV2luZG93LnRoaXMuY2xlYXJGbGFncyhXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0tFRVBfU0NSRUVOX09OKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBEZWNvclZpZXcgZ2VuZXJhdGVEZWNvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEZWNvclZpZXcoZ2V0Q29udGV4dCgpLCAtMSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0RmVhdHVyZUZyb21BdHRycyhpbnQgZmVhdHVyZUlkLCBUeXBlZEFycmF5IGF0dHJzLAorICAgICAgICAgICAgaW50IGRyYXdhYmxlQXR0ciwgaW50IGFscGhhQXR0cikgeworICAgICAgICBEcmF3YWJsZSBkID0gYXR0cnMuZ2V0RHJhd2FibGUoZHJhd2FibGVBdHRyKTsKKyAgICAgICAgaWYgKGQgIT0gbnVsbCkgeworICAgICAgICAgICAgcmVxdWVzdEZlYXR1cmUoZmVhdHVyZUlkKTsKKyAgICAgICAgICAgIHNldEZlYXR1cmVEZWZhdWx0RHJhd2FibGUoZmVhdHVyZUlkLCBkKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGdldEZlYXR1cmVzKCkgJiAoMSA8PCBmZWF0dXJlSWQpKSAhPSAwKSB7CisgICAgICAgICAgICBpbnQgYWxwaGEgPSBhdHRycy5nZXRJbnQoYWxwaGFBdHRyLCAtMSk7CisgICAgICAgICAgICBpZiAoYWxwaGEgPj0gMCkgeworICAgICAgICAgICAgICAgIHNldEZlYXR1cmVEcmF3YWJsZUFscGhhKGZlYXR1cmVJZCwgYWxwaGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIFZpZXdHcm91cCBnZW5lcmF0ZUxheW91dChEZWNvclZpZXcgZGVjb3IpIHsKKyAgICAgICAgLy8gQXBwbHkgZGF0YSBmcm9tIGN1cnJlbnQgdGhlbWUuCisKKyAgICAgICAgVHlwZWRBcnJheSBhID0gZ2V0V2luZG93U3R5bGUoKTsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRnJvbSBzdHlsZToiKTsKKyAgICAgICAgICAgIFN0cmluZyBzID0gIkF0dHJzOiI7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvdy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHMgPSBzICsgIiAiICsgSW50ZWdlci50b0hleFN0cmluZyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dbaV0pICsgIj0iCisgICAgICAgICAgICAgICAgICAgICAgICArIGEuZ2V0U3RyaW5nKGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICB9CisKKyAgICAgICAgbUlzRmxvYXRpbmcgPSBhLmdldEJvb2xlYW4oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0lzRmxvYXRpbmcsIGZhbHNlKTsKKyAgICAgICAgaW50IGZsYWdzVG9VcGRhdGUgPSAoRkxBR19MQVlPVVRfSU5fU0NSRUVOfEZMQUdfTEFZT1VUX0lOU0VUX0RFQ09SKQorICAgICAgICAgICAgICAgICYgKH5nZXRGb3JjZWRXaW5kb3dGbGFncygpKTsKKyAgICAgICAgaWYgKG1Jc0Zsb2F0aW5nKSB7CisgICAgICAgICAgICBzZXRMYXlvdXQoV1JBUF9DT05URU5ULCBXUkFQX0NPTlRFTlQpOworICAgICAgICAgICAgc2V0RmxhZ3MoMCwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZXRGbGFncyhGTEFHX0xBWU9VVF9JTl9TQ1JFRU58RkxBR19MQVlPVVRfSU5TRVRfREVDT1IsIGZsYWdzVG9VcGRhdGUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGEuZ2V0Qm9vbGVhbihjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dfd2luZG93Tm9UaXRsZSwgZmFsc2UpKSB7CisgICAgICAgICAgICByZXF1ZXN0RmVhdHVyZShGRUFUVVJFX05PX1RJVExFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhLmdldEJvb2xlYW4oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0Z1bGxzY3JlZW4sIGZhbHNlKSkgeworICAgICAgICAgICAgc2V0RmxhZ3MoRkxBR19GVUxMU0NSRUVOLCBGTEFHX0ZVTExTQ1JFRU4mKH5nZXRGb3JjZWRXaW5kb3dGbGFncygpKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYS5nZXRCb29sZWFuKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dTaG93V2FsbHBhcGVyLCBmYWxzZSkpIHsKKyAgICAgICAgICAgIHNldEZsYWdzKEZMQUdfU0hPV19XQUxMUEFQRVIsIEZMQUdfU0hPV19XQUxMUEFQRVImKH5nZXRGb3JjZWRXaW5kb3dGbGFncygpKSk7CisgICAgICAgIH0KKworICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBwYXJhbXMgPSBnZXRBdHRyaWJ1dGVzKCk7CisKKyAgICAgICAgaWYgKCFoYXNTb2Z0SW5wdXRNb2RlKCkpIHsKKyAgICAgICAgICAgIHBhcmFtcy5zb2Z0SW5wdXRNb2RlID0gYS5nZXRJbnQoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dTb2Z0SW5wdXRNb2RlLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc29mdElucHV0TW9kZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYS5nZXRCb29sZWFuKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd19iYWNrZ3JvdW5kRGltRW5hYmxlZCwKKyAgICAgICAgICAgICAgICBtSXNGbG9hdGluZykpIHsKKyAgICAgICAgICAgIC8qIEFsbCBkaWFsb2dzIHNob3VsZCBoYXZlIHRoZSB3aW5kb3cgZGltbWVkICovCisgICAgICAgICAgICBpZiAoKGdldEZvcmNlZFdpbmRvd0ZsYWdzKCkmV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19ESU1fQkVISU5EKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcGFyYW1zLmZsYWdzIHw9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRElNX0JFSElORDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcmFtcy5kaW1BbW91bnQgPSBhLmdldEZsb2F0KAorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLlIuc3R5bGVhYmxlLldpbmRvd19iYWNrZ3JvdW5kRGltQW1vdW50LCAwLjVmKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJhbXMud2luZG93QW5pbWF0aW9ucyA9PSAwKSB7CisgICAgICAgICAgICBwYXJhbXMud2luZG93QW5pbWF0aW9ucyA9IGEuZ2V0UmVzb3VyY2VJZCgKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0FuaW1hdGlvblN0eWxlLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSByZXN0IGFyZSBvbmx5IGRvbmUgaWYgdGhpcyB3aW5kb3cgaXMgbm90IGVtYmVkZGVkOyBvdGhlcndpc2UsCisgICAgICAgIC8vIHRoZSB2YWx1ZXMgYXJlIGluaGVyaXRlZCBmcm9tIG91ciBjb250YWluZXIuCisgICAgICAgIGlmIChnZXRDb250YWluZXIoKSA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAobUJhY2tncm91bmREcmF3YWJsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKG1CYWNrZ3JvdW5kUmVzb3VyY2UgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBtQmFja2dyb3VuZFJlc291cmNlID0gYS5nZXRSZXNvdXJjZUlkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dCYWNrZ3JvdW5kLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1GcmFtZVJlc291cmNlID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbUZyYW1lUmVzb3VyY2UgPSBhLmdldFJlc291cmNlSWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0ZyYW1lLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQmFja2dyb3VuZDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtQmFja2dyb3VuZFJlc291cmNlKSArICIgRnJhbWU6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUZyYW1lUmVzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtVGV4dENvbG9yID0gYS5nZXRDb2xvcihjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dfdGV4dENvbG9yLCAweEZGMDAwMDAwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluZmxhdGUgdGhlIHdpbmRvdyBkZWNvci4KKworICAgICAgICBpbnQgbGF5b3V0UmVzb3VyY2U7CisgICAgICAgIGludCBmZWF0dXJlcyA9IGdldExvY2FsRmVhdHVyZXMoKTsKKyAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJGZWF0dXJlczogMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhmZWF0dXJlcykpOworICAgICAgICBpZiAoKGZlYXR1cmVzICYgKCgxIDw8IEZFQVRVUkVfTEVGVF9JQ09OKSB8ICgxIDw8IEZFQVRVUkVfUklHSFRfSUNPTikpKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAobUlzRmxvYXRpbmcpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LmRpYWxvZ190aXRsZV9pY29uczsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGF5b3V0UmVzb3VyY2UgPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5zY3JlZW5fdGl0bGVfaWNvbnM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlRpdGxlIEljb25zISIpOworICAgICAgICB9IGVsc2UgaWYgKChmZWF0dXJlcyAmICgoMSA8PCBGRUFUVVJFX1BST0dSRVNTKSB8ICgxIDw8IEZFQVRVUkVfSU5ERVRFUk1JTkFURV9QUk9HUkVTUykpKSAhPSAwKSB7CisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgd2luZG93IHdpdGggb25seSBhIHByb2dyZXNzIGJhciAoYW5kIHRpdGxlKS4KKyAgICAgICAgICAgIC8vIFhYWCBOZWVkIHRvIGhhdmUgYSBuby10aXRsZSB2ZXJzaW9uIG9mIGVtYmVkZGVkIHdpbmRvd3MuCisgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNjcmVlbl9wcm9ncmVzczsKKyAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiUHJvZ3Jlc3MhIik7CisgICAgICAgIH0gZWxzZSBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9DVVNUT01fVElUTEUpKSAhPSAwKSB7CisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgd2luZG93IHdpdGggYSBjdXN0b20gdGl0bGUuCisgICAgICAgICAgICAvLyBJZiB0aGUgd2luZG93IGlzIGZsb2F0aW5nLCB3ZSBuZWVkIGEgZGlhbG9nIGxheW91dAorICAgICAgICAgICAgaWYgKG1Jc0Zsb2F0aW5nKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0UmVzb3VyY2UgPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5kaWFsb2dfY3VzdG9tX3RpdGxlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNjcmVlbl9jdXN0b21fdGl0bGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9OT19USVRMRSkpID09IDApIHsKKyAgICAgICAgICAgIC8vIElmIG5vIG90aGVyIGZlYXR1cmVzIGFuZCBub3QgZW1iZWRkZWQsIG9ubHkgbmVlZCBhIHRpdGxlLgorICAgICAgICAgICAgLy8gSWYgdGhlIHdpbmRvdyBpcyBmbG9hdGluZywgd2UgbmVlZCBhIGRpYWxvZyBsYXlvdXQKKyAgICAgICAgICAgIGlmIChtSXNGbG9hdGluZykgeworICAgICAgICAgICAgICAgIGxheW91dFJlc291cmNlID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5sYXlvdXQuZGlhbG9nX3RpdGxlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNjcmVlbl90aXRsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiVGl0bGUhIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFbWJlZGRlZCwgc28gbm8gZGVjb3JhdGlvbiBpcyBuZWVkZWQuCisgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNjcmVlbl9zaW1wbGU7CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlNpbXBsZSEiKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZWNvci5zdGFydENoYW5naW5nKCk7CisKKyAgICAgICAgVmlldyBpbiA9IG1MYXlvdXRJbmZsYXRlci5pbmZsYXRlKGxheW91dFJlc291cmNlLCBudWxsKTsKKyAgICAgICAgZGVjb3IuYWRkVmlldyhpbiwgbmV3IFZpZXdHcm91cC5MYXlvdXRQYXJhbXMoTUFUQ0hfUEFSRU5ULCBNQVRDSF9QQVJFTlQpKTsKKworICAgICAgICBWaWV3R3JvdXAgY29udGVudFBhcmVudCA9IChWaWV3R3JvdXApZmluZFZpZXdCeUlkKElEX0FORFJPSURfQ09OVEVOVCk7CisgICAgICAgIGlmIChjb250ZW50UGFyZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJXaW5kb3cgY291bGRuJ3QgZmluZCBjb250ZW50IGNvbnRhaW5lciB2aWV3Iik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9JTkRFVEVSTUlOQVRFX1BST0dSRVNTKSkgIT0gMCkgeworICAgICAgICAgICAgUHJvZ3Jlc3NCYXIgcHJvZ3Jlc3MgPSBnZXRDaXJjdWxhclByb2dyZXNzQmFyKGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChwcm9ncmVzcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3Muc2V0SW5kZXRlcm1pbmF0ZSh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWFpbmluZyBzZXR1cCAtLSBvZiBiYWNrZ3JvdW5kIGFuZCB0aXRsZSAtLSB0aGF0IG9ubHkgYXBwbGllcworICAgICAgICAvLyB0byB0b3AtbGV2ZWwgd2luZG93cy4KKyAgICAgICAgaWYgKGdldENvbnRhaW5lcigpID09IG51bGwpIHsKKyAgICAgICAgICAgIERyYXdhYmxlIGRyYXdhYmxlID0gbUJhY2tncm91bmREcmF3YWJsZTsKKyAgICAgICAgICAgIGlmIChtQmFja2dyb3VuZFJlc291cmNlICE9IDApIHsKKyAgICAgICAgICAgICAgICBkcmF3YWJsZSA9IGdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZShtQmFja2dyb3VuZFJlc291cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1EZWNvci5zZXRXaW5kb3dCYWNrZ3JvdW5kKGRyYXdhYmxlKTsKKyAgICAgICAgICAgIGRyYXdhYmxlID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChtRnJhbWVSZXNvdXJjZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZHJhd2FibGUgPSBnZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCkuZ2V0RHJhd2FibGUobUZyYW1lUmVzb3VyY2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbURlY29yLnNldFdpbmRvd0ZyYW1lKGRyYXdhYmxlKTsKKworICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJUZXh0PSIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1UZXh0Q29sb3IpICsKKyAgICAgICAgICAgIC8vICIgU2VsPSIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1UZXh0U2VsZWN0ZWRDb2xvcikgKworICAgICAgICAgICAgLy8gIiBUaXRsZT0iICsgSW50ZWdlci50b0hleFN0cmluZyhtVGl0bGVDb2xvcikpOworCisgICAgICAgICAgICBpZiAobVRpdGxlQ29sb3IgPT0gMCkgeworICAgICAgICAgICAgICAgIG1UaXRsZUNvbG9yID0gbVRleHRDb2xvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1UaXRsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2V0VGl0bGUobVRpdGxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldFRpdGxlQ29sb3IobVRpdGxlQ29sb3IpOworICAgICAgICB9CisKKyAgICAgICAgbURlY29yLmZpbmlzaENoYW5naW5nKCk7CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRQYXJlbnQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluc3RhbGxEZWNvcigpIHsKKyAgICAgICAgaWYgKG1EZWNvciA9PSBudWxsKSB7CisgICAgICAgICAgICBtRGVjb3IgPSBnZW5lcmF0ZURlY29yKCk7CisgICAgICAgICAgICBtRGVjb3Iuc2V0RGVzY2VuZGFudEZvY3VzYWJpbGl0eShWaWV3R3JvdXAuRk9DVVNfQUZURVJfREVTQ0VOREFOVFMpOworICAgICAgICAgICAgbURlY29yLnNldElzUm9vdE5hbWVzcGFjZSh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobUNvbnRlbnRQYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgbUNvbnRlbnRQYXJlbnQgPSBnZW5lcmF0ZUxheW91dChtRGVjb3IpOworCisgICAgICAgICAgICBtVGl0bGVWaWV3ID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLnRpdGxlKTsKKyAgICAgICAgICAgIGlmIChtVGl0bGVWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGdldExvY2FsRmVhdHVyZXMoKSAmICgxIDw8IEZFQVRVUkVfTk9fVElUTEUpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFZpZXcgdGl0bGVDb250YWluZXIgPSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC50aXRsZV9jb250YWluZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGVDb250YWluZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVDb250YWluZXIuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbVRpdGxlVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1Db250ZW50UGFyZW50IGluc3RhbmNlb2YgRnJhbWVMYXlvdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoRnJhbWVMYXlvdXQpbUNvbnRlbnRQYXJlbnQpLnNldEZvcmVncm91bmQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtVGl0bGVWaWV3LnNldFRleHQobVRpdGxlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIERyYXdhYmxlIGxvYWRJbWFnZVVSSShVcmkgdXJpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gRHJhd2FibGUuY3JlYXRlRnJvbVN0cmVhbSgKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldENvbnRlbnRSZXNvbHZlcigpLm9wZW5JbnB1dFN0cmVhbSh1cmkpLCBudWxsKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIlVuYWJsZSB0byBvcGVuIGNvbnRlbnQ6ICIgKyB1cmkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgRHJhd2FibGVGZWF0dXJlU3RhdGUgZ2V0RHJhd2FibGVTdGF0ZShpbnQgZmVhdHVyZUlkLCBib29sZWFuIHJlcXVpcmVkKSB7CisgICAgICAgIGlmICgoZ2V0RmVhdHVyZXMoKSAmICgxIDw8IGZlYXR1cmVJZCkpID09IDApIHsKKyAgICAgICAgICAgIGlmICghcmVxdWlyZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJUaGUgZmVhdHVyZSBoYXMgbm90IGJlZW4gcmVxdWVzdGVkIik7CisgICAgICAgIH0KKworICAgICAgICBEcmF3YWJsZUZlYXR1cmVTdGF0ZVtdIGFyOworICAgICAgICBpZiAoKGFyID0gbURyYXdhYmxlcykgPT0gbnVsbCB8fCBhci5sZW5ndGggPD0gZmVhdHVyZUlkKSB7CisgICAgICAgICAgICBEcmF3YWJsZUZlYXR1cmVTdGF0ZVtdIG5hciA9IG5ldyBEcmF3YWJsZUZlYXR1cmVTdGF0ZVtmZWF0dXJlSWQgKyAxXTsKKyAgICAgICAgICAgIGlmIChhciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShhciwgMCwgbmFyLCAwLCBhci5sZW5ndGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbURyYXdhYmxlcyA9IGFyID0gbmFyOworICAgICAgICB9CisKKyAgICAgICAgRHJhd2FibGVGZWF0dXJlU3RhdGUgc3QgPSBhcltmZWF0dXJlSWRdOworICAgICAgICBpZiAoc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgYXJbZmVhdHVyZUlkXSA9IHN0ID0gbmV3IERyYXdhYmxlRmVhdHVyZVN0YXRlKGZlYXR1cmVJZCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0OworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgYSBwYW5lbCdzIHN0YXRlIGJhc2VkIG9uIGl0cyBmZWF0dXJlIElELgorICAgICAqCisgICAgICogQHBhcmFtIGZlYXR1cmVJZCBUaGUgZmVhdHVyZSBJRCBvZiB0aGUgcGFuZWwuCisgICAgICogQHBhcmFtIHJlcXVpcmVkIFdoZXRoZXIgdGhlIHBhbmVsIGlzIHJlcXVpcmVkIChpZiBpdCBpcyByZXF1aXJlZCBhbmQgaXQKKyAgICAgKiAgICAgICAgICAgIGlzbid0IGluIG91ciBmZWF0dXJlcywgdGhpcyB0aHJvd3MgYW4gZXhjZXB0aW9uKS4KKyAgICAgKiBAcmV0dXJuIFRoZSBwYW5lbCBzdGF0ZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFBhbmVsRmVhdHVyZVN0YXRlIGdldFBhbmVsU3RhdGUoaW50IGZlYXR1cmVJZCwgYm9vbGVhbiByZXF1aXJlZCkgeworICAgICAgICByZXR1cm4gZ2V0UGFuZWxTdGF0ZShmZWF0dXJlSWQsIHJlcXVpcmVkLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgcGFuZWwncyBzdGF0ZSBiYXNlZCBvbiBpdHMgZmVhdHVyZSBJRC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBmZWF0dXJlSWQgVGhlIGZlYXR1cmUgSUQgb2YgdGhlIHBhbmVsLgorICAgICAqIEBwYXJhbSByZXF1aXJlZCBXaGV0aGVyIHRoZSBwYW5lbCBpcyByZXF1aXJlZCAoaWYgaXQgaXMgcmVxdWlyZWQgYW5kIGl0CisgICAgICogICAgICAgICAgICBpc24ndCBpbiBvdXIgZmVhdHVyZXMsIHRoaXMgdGhyb3dzIGFuIGV4Y2VwdGlvbikuCisgICAgICogQHBhcmFtIGNvbnZlcnRQYW5lbFN0YXRlIE9wdGlvbmFsOiBJZiB0aGUgcGFuZWwgc3RhdGUgZG9lcyBub3QgZXhpc3QsIHVzZQorICAgICAqICAgICAgICAgICAgdGhpcyBhcyB0aGUgcGFuZWwgc3RhdGUuCisgICAgICogQHJldHVybiBUaGUgcGFuZWwgc3RhdGUuCisgICAgICovCisgICAgcHJpdmF0ZSBQYW5lbEZlYXR1cmVTdGF0ZSBnZXRQYW5lbFN0YXRlKGludCBmZWF0dXJlSWQsIGJvb2xlYW4gcmVxdWlyZWQsCisgICAgICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBjb252ZXJ0UGFuZWxTdGF0ZSkgeworICAgICAgICBpZiAoKGdldEZlYXR1cmVzKCkgJiAoMSA8PCBmZWF0dXJlSWQpKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoIXJlcXVpcmVkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVGhlIGZlYXR1cmUgaGFzIG5vdCBiZWVuIHJlcXVlc3RlZCIpOworICAgICAgICB9CisKKyAgICAgICAgUGFuZWxGZWF0dXJlU3RhdGVbXSBhcjsKKyAgICAgICAgaWYgKChhciA9IG1QYW5lbHMpID09IG51bGwgfHwgYXIubGVuZ3RoIDw9IGZlYXR1cmVJZCkgeworICAgICAgICAgICAgUGFuZWxGZWF0dXJlU3RhdGVbXSBuYXIgPSBuZXcgUGFuZWxGZWF0dXJlU3RhdGVbZmVhdHVyZUlkICsgMV07CisgICAgICAgICAgICBpZiAoYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYXIsIDAsIG5hciwgMCwgYXIubGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1QYW5lbHMgPSBhciA9IG5hcjsKKyAgICAgICAgfQorCisgICAgICAgIFBhbmVsRmVhdHVyZVN0YXRlIHN0ID0gYXJbZmVhdHVyZUlkXTsKKyAgICAgICAgaWYgKHN0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGFyW2ZlYXR1cmVJZF0gPSBzdCA9IChjb252ZXJ0UGFuZWxTdGF0ZSAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICA/IGNvbnZlcnRQYW5lbFN0YXRlCisgICAgICAgICAgICAgICAgICAgIDogbmV3IFBhbmVsRmVhdHVyZVN0YXRlKGZlYXR1cmVJZCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldENoaWxkRHJhd2FibGUoaW50IGZlYXR1cmVJZCwgRHJhd2FibGUgZHJhd2FibGUpIHsKKyAgICAgICAgRHJhd2FibGVGZWF0dXJlU3RhdGUgc3QgPSBnZXREcmF3YWJsZVN0YXRlKGZlYXR1cmVJZCwgdHJ1ZSk7CisgICAgICAgIHN0LmNoaWxkID0gZHJhd2FibGU7CisgICAgICAgIHVwZGF0ZURyYXdhYmxlKGZlYXR1cmVJZCwgc3QsIGZhbHNlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRDaGlsZEludChpbnQgZmVhdHVyZUlkLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgdXBkYXRlSW50KGZlYXR1cmVJZCwgdmFsdWUsIGZhbHNlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1Nob3J0Y3V0S2V5KGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoRkVBVFVSRV9PUFRJT05TX1BBTkVMLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHN0Lm1lbnUgIT0gbnVsbCAmJiBzdC5tZW51LmlzU2hvcnRjdXRLZXkoa2V5Q29kZSwgZXZlbnQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVEcmF3YWJsZShpbnQgZmVhdHVyZUlkLCBEcmF3YWJsZUZlYXR1cmVTdGF0ZSBzdCwgYm9vbGVhbiBmcm9tUmVzdW1lKSB7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaWYgdGhlIGRlY29yIGlzIG5vdCB5ZXQgaW5zdGFsbGVkLi4uIGFuIHVwZGF0ZSB3aWxsCisgICAgICAgIC8vIG5lZWQgdG8gYmUgZm9yY2VkIHdoZW4gd2UgZXZlbnR1YWxseSBiZWNvbWUgYWN0aXZlLgorICAgICAgICBpZiAobUNvbnRlbnRQYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgaW50IGZlYXR1cmVNYXNrID0gMSA8PCBmZWF0dXJlSWQ7CisKKyAgICAgICAgaWYgKChnZXRGZWF0dXJlcygpICYgZmVhdHVyZU1hc2spID09IDAgJiYgIWZyb21SZXN1bWUpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIERyYXdhYmxlIGRyYXdhYmxlID0gbnVsbDsKKyAgICAgICAgaWYgKHN0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRyYXdhYmxlID0gc3QuY2hpbGQ7CisgICAgICAgICAgICBpZiAoZHJhd2FibGUgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICBkcmF3YWJsZSA9IHN0LmxvY2FsOworICAgICAgICAgICAgaWYgKGRyYXdhYmxlID09IG51bGwpCisgICAgICAgICAgICAgICAgZHJhd2FibGUgPSBzdC5kZWY7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChnZXRMb2NhbEZlYXR1cmVzKCkgJiBmZWF0dXJlTWFzaykgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdldENvbnRhaW5lcigpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBY3RpdmUoKSB8fCBmcm9tUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRhaW5lcigpLnNldENoaWxkRHJhd2FibGUoZmVhdHVyZUlkLCBkcmF3YWJsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0ICE9IG51bGwgJiYgKHN0LmN1ciAhPSBkcmF3YWJsZSB8fCBzdC5jdXJBbHBoYSAhPSBzdC5hbHBoYSkpIHsKKyAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiRHJhd2FibGUgY2hhbmdlZDogb2xkPSIgKyBzdC5jdXIKKyAgICAgICAgICAgIC8vICsgIiwgbmV3PSIgKyBkcmF3YWJsZSk7CisgICAgICAgICAgICBzdC5jdXIgPSBkcmF3YWJsZTsKKyAgICAgICAgICAgIHN0LmN1ckFscGhhID0gc3QuYWxwaGE7CisgICAgICAgICAgICBvbkRyYXdhYmxlQ2hhbmdlZChmZWF0dXJlSWQsIGRyYXdhYmxlLCBzdC5hbHBoYSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlSW50KGludCBmZWF0dXJlSWQsIGludCB2YWx1ZSwgYm9vbGVhbiBmcm9tUmVzdW1lKSB7CisKKyAgICAgICAgLy8gRG8gbm90aGluZyBpZiB0aGUgZGVjb3IgaXMgbm90IHlldCBpbnN0YWxsZWQuLi4gYW4gdXBkYXRlIHdpbGwKKyAgICAgICAgLy8gbmVlZCB0byBiZSBmb3JjZWQgd2hlbiB3ZSBldmVudHVhbGx5IGJlY29tZSBhY3RpdmUuCisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgZmVhdHVyZU1hc2sgPSAxIDw8IGZlYXR1cmVJZDsKKworICAgICAgICBpZiAoKGdldEZlYXR1cmVzKCkgJiBmZWF0dXJlTWFzaykgPT0gMCAmJiAhZnJvbVJlc3VtZSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChnZXRMb2NhbEZlYXR1cmVzKCkgJiBmZWF0dXJlTWFzaykgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdldENvbnRhaW5lcigpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBnZXRDb250YWluZXIoKS5zZXRDaGlsZEludChmZWF0dXJlSWQsIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG9uSW50Q2hhbmdlZChmZWF0dXJlSWQsIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgSW1hZ2VWaWV3IGdldExlZnRJY29uVmlldygpIHsKKyAgICAgICAgaWYgKG1MZWZ0SWNvblZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1MZWZ0SWNvblZpZXc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Db250ZW50UGFyZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIGluc3RhbGxEZWNvcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAobUxlZnRJY29uVmlldyA9IChJbWFnZVZpZXcpZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubGVmdF9pY29uKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBQcm9ncmVzc0JhciBnZXRDaXJjdWxhclByb2dyZXNzQmFyKGJvb2xlYW4gc2hvdWxkSW5zdGFsbERlY29yKSB7CisgICAgICAgIGlmIChtQ2lyY3VsYXJQcm9ncmVzc0JhciAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUNpcmN1bGFyUHJvZ3Jlc3NCYXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Db250ZW50UGFyZW50ID09IG51bGwgJiYgc2hvdWxkSW5zdGFsbERlY29yKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfQorICAgICAgICBtQ2lyY3VsYXJQcm9ncmVzc0JhciA9IChQcm9ncmVzc0JhcilmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5wcm9ncmVzc19jaXJjdWxhcik7CisgICAgICAgIG1DaXJjdWxhclByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICByZXR1cm4gbUNpcmN1bGFyUHJvZ3Jlc3NCYXI7CisgICAgfQorCisgICAgcHJpdmF0ZSBQcm9ncmVzc0JhciBnZXRIb3Jpem9udGFsUHJvZ3Jlc3NCYXIoYm9vbGVhbiBzaG91bGRJbnN0YWxsRGVjb3IpIHsKKyAgICAgICAgaWYgKG1Ib3Jpem9udGFsUHJvZ3Jlc3NCYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1Ib3Jpem9udGFsUHJvZ3Jlc3NCYXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Db250ZW50UGFyZW50ID09IG51bGwgJiYgc2hvdWxkSW5zdGFsbERlY29yKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfQorICAgICAgICBtSG9yaXpvbnRhbFByb2dyZXNzQmFyID0gKFByb2dyZXNzQmFyKWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLnByb2dyZXNzX2hvcml6b250YWwpOworICAgICAgICBtSG9yaXpvbnRhbFByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICByZXR1cm4gbUhvcml6b250YWxQcm9ncmVzc0JhcjsKKyAgICB9CisKKyAgICBwcml2YXRlIEltYWdlVmlldyBnZXRSaWdodEljb25WaWV3KCkgeworICAgICAgICBpZiAobVJpZ2h0SWNvblZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1SaWdodEljb25WaWV3OworICAgICAgICB9CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKG1SaWdodEljb25WaWV3ID0gKEltYWdlVmlldylmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5yaWdodF9pY29uKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSGVscGVyIG1ldGhvZCBmb3IgY2FsbGluZyB0aGUge0BsaW5rIENhbGxiYWNrI29uUGFuZWxDbG9zZWQoaW50LCBNZW51KX0KKyAgICAgKiBjYWxsYmFjay4gVGhpcyBtZXRob2Qgd2lsbCBncmFiIHdoYXRldmVyIGV4dHJhIHN0YXRlIGlzIG5lZWRlZCBmb3IgdGhlCisgICAgICogY2FsbGJhY2sgdGhhdCBpc24ndCBnaXZlbiBpbiB0aGUgcGFyYW1ldGVycy4gSWYgdGhlIHBhbmVsIGlzIG5vdCBvcGVuLAorICAgICAqIHRoaXMgd2lsbCBub3QgcGVyZm9ybSB0aGUgY2FsbGJhY2suCisgICAgICoKKyAgICAgKiBAcGFyYW0gZmVhdHVyZUlkIEZlYXR1cmUgSUQgb2YgdGhlIHBhbmVsIHRoYXQgd2FzIGNsb3NlZC4gTXVzdCBiZSBnaXZlbi4KKyAgICAgKiBAcGFyYW0gcGFuZWwgUGFuZWwgdGhhdCB3YXMgY2xvc2VkLiBPcHRpb25hbCBidXQgdXNlZnVsIGlmIHRoZXJlIGlzIG5vCisgICAgICogICAgICAgICAgICBtZW51IGdpdmVuLgorICAgICAqIEBwYXJhbSBtZW51IFRoZSBtZW51IHRoYXQgd2FzIGNsb3NlZC4gT3B0aW9uYWwsIGJ1dCBnaXZlIGlmIHlvdSBoYXZlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjYWxsT25QYW5lbENsb3NlZChpbnQgZmVhdHVyZUlkLCBQYW5lbEZlYXR1cmVTdGF0ZSBwYW5lbCwgTWVudSBtZW51KSB7CisgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgaWYgKGNiID09IG51bGwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVHJ5IHRvIGdldCBhIG1lbnUKKyAgICAgICAgaWYgKG1lbnUgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gTmVlZCBhIHBhbmVsIHRvIGdyYWIgdGhlIG1lbnUsIHNvIHRyeSB0byBnZXQgdGhhdAorICAgICAgICAgICAgaWYgKHBhbmVsID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGZlYXR1cmVJZCA+PSAwKSAmJiAoZmVhdHVyZUlkIDwgbVBhbmVscy5sZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhbmVsID0gbVBhbmVsc1tmZWF0dXJlSWRdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBtZW51IHN0aWxsIG1heSBiZSBudWxsLCB3aGljaCBpcyBva2F5LS13ZSB0cmllZCBvdXIgYmVzdAorICAgICAgICAgICAgICAgIG1lbnUgPSBwYW5lbC5tZW51OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIHBhbmVsIGlzIG5vdCBvcGVuLCBkbyBub3QgY2FsbGJhY2sKKyAgICAgICAgaWYgKChwYW5lbCAhPSBudWxsKSAmJiAoIXBhbmVsLmlzT3BlbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2Iub25QYW5lbENsb3NlZChmZWF0dXJlSWQsIG1lbnUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEhlbHBlciBtZXRob2QgZm9yIGFkZGluZyBsYXVuY2gtc2VhcmNoIHRvIG1vc3QgYXBwbGljYXRpb25zLiBPcGVucyB0aGUKKyAgICAgKiBzZWFyY2ggd2luZG93IHVzaW5nIGRlZmF1bHQgc2V0dGluZ3MuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgc2VhcmNoIHdpbmRvdyBvcGVuZWQKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbGF1bmNoRGVmYXVsdFNlYXJjaCgpIHsKKyAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICBpZiAoY2IgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygic2VhcmNoIik7CisgICAgICAgICAgICByZXR1cm4gY2Iub25TZWFyY2hSZXF1ZXN0ZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFZvbHVtZUNvbnRyb2xTdHJlYW0oaW50IHN0cmVhbVR5cGUpIHsKKyAgICAgICAgbVZvbHVtZUNvbnRyb2xTdHJlYW1UeXBlID0gc3RyZWFtVHlwZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGdldFZvbHVtZUNvbnRyb2xTdHJlYW0oKSB7CisgICAgICAgIHJldHVybiBtVm9sdW1lQ29udHJvbFN0cmVhbVR5cGU7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgRHJhd2FibGVGZWF0dXJlU3RhdGUgeworICAgICAgICBEcmF3YWJsZUZlYXR1cmVTdGF0ZShpbnQgX2ZlYXR1cmVJZCkgeworICAgICAgICAgICAgZmVhdHVyZUlkID0gX2ZlYXR1cmVJZDsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBmZWF0dXJlSWQ7CisKKyAgICAgICAgaW50IHJlc2lkOworCisgICAgICAgIFVyaSB1cmk7CisKKyAgICAgICAgRHJhd2FibGUgbG9jYWw7CisKKyAgICAgICAgRHJhd2FibGUgY2hpbGQ7CisKKyAgICAgICAgRHJhd2FibGUgZGVmOworCisgICAgICAgIERyYXdhYmxlIGN1cjsKKworICAgICAgICBpbnQgYWxwaGEgPSAyNTU7CisKKyAgICAgICAgaW50IGN1ckFscGhhID0gMjU1OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIFBhbmVsRmVhdHVyZVN0YXRlIHsKKworICAgICAgICAvKiogRmVhdHVyZSBJRCBmb3IgdGhpcyBwYW5lbC4gKi8KKyAgICAgICAgaW50IGZlYXR1cmVJZDsKKworICAgICAgICAvLyBJbmZvcm1hdGlvbiBwdWxsZWQgZnJvbSB0aGUgc3R5bGUgZm9yIHRoaXMgcGFuZWwuCisKKyAgICAgICAgaW50IGJhY2tncm91bmQ7CisKKyAgICAgICAgLyoqIFRoZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIHBhbmVsIHNwYW5zIHRoZSBlbnRpcmUgYXZhaWxhYmxlIHdpZHRoLiAqLworICAgICAgICBpbnQgZnVsbEJhY2tncm91bmQ7CisKKyAgICAgICAgaW50IGdyYXZpdHk7CisKKyAgICAgICAgaW50IHg7CisKKyAgICAgICAgaW50IHk7CisKKyAgICAgICAgaW50IHdpbmRvd0FuaW1hdGlvbnM7CisKKyAgICAgICAgLyoqIER5bmFtaWMgc3RhdGUgb2YgdGhlIHBhbmVsLiAqLworICAgICAgICBEZWNvclZpZXcgZGVjb3JWaWV3OworCisgICAgICAgIC8qKiBUaGUgcGFuZWwgdGhhdCB3YXMgcmV0dXJuZWQgYnkgb25DcmVhdGVQYW5lbFZpZXcoKS4gKi8KKyAgICAgICAgVmlldyBjcmVhdGVkUGFuZWxWaWV3OworCisgICAgICAgIC8qKiBUaGUgcGFuZWwgdGhhdCB3ZSBhcmUgYWN0dWFsbHkgc2hvd2luZy4gKi8KKyAgICAgICAgVmlldyBzaG93blBhbmVsVmlldzsKKworICAgICAgICAvKiogVXNlIHtAbGluayAjc2V0TWVudX0gdG8gc2V0IHRoaXMuICovCisgICAgICAgIE1lbnUgbWVudTsKKworICAgICAgICAvKioKKyAgICAgICAgICogV2hldGhlciB0aGUgcGFuZWwgaGFzIGJlZW4gcHJlcGFyZWQgKHNlZQorICAgICAgICAgKiB7QGxpbmsgUGhvbmVXaW5kb3cjcHJlcGFyZVBhbmVsfSkuCisgICAgICAgICAqLworICAgICAgICBib29sZWFuIGlzUHJlcGFyZWQ7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFdoZXRoZXIgYW4gaXRlbSdzIGFjdGlvbiBoYXMgYmVlbiBwZXJmb3JtZWQuIFRoaXMgaGFwcGVucyBpbiBvYnZpb3VzCisgICAgICAgICAqIHNjZW5hcmlvcyAodXNlciBjbGlja3Mgb24gbWVudSBpdGVtKSwgYnV0IGNhbiBhbHNvIGhhcHBlbiB3aXRoCisgICAgICAgICAqIGNob3JkaW5nIG1lbnUrKHNob3J0Y3V0IGtleSkuCisgICAgICAgICAqLworICAgICAgICBib29sZWFuIGlzSGFuZGxlZDsKKworICAgICAgICBib29sZWFuIGlzT3BlbjsKKworICAgICAgICAvKioKKyAgICAgICAgICogVHJ1ZSBpZiB0aGUgbWVudSBpcyBpbiBleHBhbmRlZCBtb2RlLCBmYWxzZSBpZiB0aGUgbWVudSBpcyBpbiBpY29uCisgICAgICAgICAqIG1vZGUKKyAgICAgICAgICovCisgICAgICAgIGJvb2xlYW4gaXNJbkV4cGFuZGVkTW9kZTsKKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBxd2VydHlNb2RlOworCisgICAgICAgIGJvb2xlYW4gcmVmcmVzaERlY29yVmlldzsKKworICAgICAgICBib29sZWFuIHdhc0xhc3RPcGVuOworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiB3YXNMYXN0RXhwYW5kZWQ7CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogQ29udGFpbnMgdGhlIHN0YXRlIG9mIHRoZSBtZW51IHdoZW4gdG9sZCB0byBmcmVlemUuCisgICAgICAgICAqLworICAgICAgICBCdW5kbGUgZnJvemVuTWVudVN0YXRlOworCisgICAgICAgIFBhbmVsRmVhdHVyZVN0YXRlKGludCBmZWF0dXJlSWQpIHsKKyAgICAgICAgICAgIHRoaXMuZmVhdHVyZUlkID0gZmVhdHVyZUlkOworCisgICAgICAgICAgICByZWZyZXNoRGVjb3JWaWV3ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldFN0eWxlKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAgICAgVHlwZWRBcnJheSBhID0gY29udGV4dC5vYnRhaW5TdHlsZWRBdHRyaWJ1dGVzKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLlRoZW1lKTsKKyAgICAgICAgICAgIGJhY2tncm91bmQgPSBhLmdldFJlc291cmNlSWQoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLlRoZW1lX3BhbmVsQmFja2dyb3VuZCwgMCk7CisgICAgICAgICAgICBmdWxsQmFja2dyb3VuZCA9IGEuZ2V0UmVzb3VyY2VJZCgKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuVGhlbWVfcGFuZWxGdWxsQmFja2dyb3VuZCwgMCk7CisgICAgICAgICAgICB3aW5kb3dBbmltYXRpb25zID0gYS5nZXRSZXNvdXJjZUlkKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5UaGVtZV93aW5kb3dBbmltYXRpb25TdHlsZSwgMCk7CisgICAgICAgICAgICBhLnJlY3ljbGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0TWVudShNZW51IG1lbnUpIHsKKyAgICAgICAgICAgIHRoaXMubWVudSA9IG1lbnU7CisKKyAgICAgICAgICAgIGlmIChmcm96ZW5NZW51U3RhdGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICgoTWVudUJ1aWxkZXIpIG1lbnUpLnJlc3RvcmVIaWVyYXJjaHlTdGF0ZShmcm96ZW5NZW51U3RhdGUpOworICAgICAgICAgICAgICAgIGZyb3plbk1lbnVTdGF0ZSA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQYXJjZWxhYmxlIG9uU2F2ZUluc3RhbmNlU3RhdGUoKSB7CisgICAgICAgICAgICBTYXZlZFN0YXRlIHNhdmVkU3RhdGUgPSBuZXcgU2F2ZWRTdGF0ZSgpOworICAgICAgICAgICAgc2F2ZWRTdGF0ZS5mZWF0dXJlSWQgPSBmZWF0dXJlSWQ7CisgICAgICAgICAgICBzYXZlZFN0YXRlLmlzT3BlbiA9IGlzT3BlbjsKKyAgICAgICAgICAgIHNhdmVkU3RhdGUuaXNJbkV4cGFuZGVkTW9kZSA9IGlzSW5FeHBhbmRlZE1vZGU7CisKKyAgICAgICAgICAgIGlmIChtZW51ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzYXZlZFN0YXRlLm1lbnVTdGF0ZSA9IG5ldyBCdW5kbGUoKTsKKyAgICAgICAgICAgICAgICAoKE1lbnVCdWlsZGVyKSBtZW51KS5zYXZlSGllcmFyY2h5U3RhdGUoc2F2ZWRTdGF0ZS5tZW51U3RhdGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gc2F2ZWRTdGF0ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgb25SZXN0b3JlSW5zdGFuY2VTdGF0ZShQYXJjZWxhYmxlIHN0YXRlKSB7CisgICAgICAgICAgICBTYXZlZFN0YXRlIHNhdmVkU3RhdGUgPSAoU2F2ZWRTdGF0ZSkgc3RhdGU7CisgICAgICAgICAgICBmZWF0dXJlSWQgPSBzYXZlZFN0YXRlLmZlYXR1cmVJZDsKKyAgICAgICAgICAgIHdhc0xhc3RPcGVuID0gc2F2ZWRTdGF0ZS5pc09wZW47CisgICAgICAgICAgICB3YXNMYXN0RXhwYW5kZWQgPSBzYXZlZFN0YXRlLmlzSW5FeHBhbmRlZE1vZGU7CisgICAgICAgICAgICBmcm96ZW5NZW51U3RhdGUgPSBzYXZlZFN0YXRlLm1lbnVTdGF0ZTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEEgTG9jYWxBY3Rpdml0eU1hbmFnZXIga2VlcHMgdGhlIHNhbWUgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBhcm91bmQuCisgICAgICAgICAgICAgKiBUaGUgZmlyc3QgdGltZSB0aGUgbWVudSBpcyBiZWluZyBzaG93biBhZnRlciByZXN0b3JpbmcsIHRoZQorICAgICAgICAgICAgICogQWN0aXZpdHkub25DcmVhdGVPcHRpb25zTWVudSBzaG91bGQgYmUgY2FsbGVkLiBCdXQsIGlmIGl0IGlzIHRoZQorICAgICAgICAgICAgICogc2FtZSBpbnN0YW5jZSB0aGVuIG1lbnUgIT0gbnVsbCBhbmQgd2Ugd29uJ3QgY2FsbCB0aGF0IG1ldGhvZC4KKyAgICAgICAgICAgICAqIFNvLCBjbGVhciB0aGlzLiAgQWxzbyBjbGVhciBhbnkgY2FjaGVkIHZpZXdzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBtZW51ID0gbnVsbDsKKyAgICAgICAgICAgIGNyZWF0ZWRQYW5lbFZpZXcgPSBudWxsOworICAgICAgICAgICAgc2hvd25QYW5lbFZpZXcgPSBudWxsOworICAgICAgICAgICAgZGVjb3JWaWV3ID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFNhdmVkU3RhdGUgaW1wbGVtZW50cyBQYXJjZWxhYmxlIHsKKyAgICAgICAgICAgIGludCBmZWF0dXJlSWQ7CisgICAgICAgICAgICBib29sZWFuIGlzT3BlbjsKKyAgICAgICAgICAgIGJvb2xlYW4gaXNJbkV4cGFuZGVkTW9kZTsKKyAgICAgICAgICAgIEJ1bmRsZSBtZW51U3RhdGU7CisKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgZGVzY3JpYmVDb250ZW50cygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgd3JpdGVUb1BhcmNlbChQYXJjZWwgZGVzdCwgaW50IGZsYWdzKSB7CisgICAgICAgICAgICAgICAgZGVzdC53cml0ZUludChmZWF0dXJlSWQpOworICAgICAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoaXNPcGVuID8gMSA6IDApOworICAgICAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoaXNJbkV4cGFuZGVkTW9kZSA/IDEgOiAwKTsKKworICAgICAgICAgICAgICAgIGlmIChpc09wZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdC53cml0ZUJ1bmRsZShtZW51U3RhdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgU2F2ZWRTdGF0ZSByZWFkRnJvbVBhcmNlbChQYXJjZWwgc291cmNlKSB7CisgICAgICAgICAgICAgICAgU2F2ZWRTdGF0ZSBzYXZlZFN0YXRlID0gbmV3IFNhdmVkU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBzYXZlZFN0YXRlLmZlYXR1cmVJZCA9IHNvdXJjZS5yZWFkSW50KCk7CisgICAgICAgICAgICAgICAgc2F2ZWRTdGF0ZS5pc09wZW4gPSBzb3VyY2UucmVhZEludCgpID09IDE7CisgICAgICAgICAgICAgICAgc2F2ZWRTdGF0ZS5pc0luRXhwYW5kZWRNb2RlID0gc291cmNlLnJlYWRJbnQoKSA9PSAxOworCisgICAgICAgICAgICAgICAgaWYgKHNhdmVkU3RhdGUuaXNPcGVuKSB7CisgICAgICAgICAgICAgICAgICAgIHNhdmVkU3RhdGUubWVudVN0YXRlID0gc291cmNlLnJlYWRCdW5kbGUoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gc2F2ZWRTdGF0ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQYXJjZWxhYmxlLkNyZWF0b3I8U2F2ZWRTdGF0ZT4gQ1JFQVRPUgorICAgICAgICAgICAgICAgICAgICA9IG5ldyBQYXJjZWxhYmxlLkNyZWF0b3I8U2F2ZWRTdGF0ZT4oKSB7CisgICAgICAgICAgICAgICAgcHVibGljIFNhdmVkU3RhdGUgY3JlYXRlRnJvbVBhcmNlbChQYXJjZWwgaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRGcm9tUGFyY2VsKGluKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwdWJsaWMgU2F2ZWRTdGF0ZVtdIG5ld0FycmF5KGludCBzaXplKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2F2ZWRTdGF0ZVtzaXplXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgTWVudUJ1aWxkZXIuQ2FsbGJhY2sgdGhhdDoKKyAgICAgKiA8bGk+IE9wZW5zIGEgc3VibWVudSB3aGVuIHNlbGVjdGVkLgorICAgICAqIDxsaT4gQ2FsbHMgYmFjayB0byB0aGUgY2FsbGJhY2sncyBvbk1lbnVJdGVtU2VsZWN0ZWQgd2hlbiBhbiBpdGVtIGlzCisgICAgICogc2VsZWN0ZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBDb250ZXh0TWVudUNhbGxiYWNrIGltcGxlbWVudHMgTWVudUJ1aWxkZXIuQ2FsbGJhY2sgeworICAgICAgICBwcml2YXRlIGludCBtRmVhdHVyZUlkOworICAgICAgICBwcml2YXRlIE1lbnVEaWFsb2dIZWxwZXIgbVN1Yk1lbnVIZWxwZXI7CisKKyAgICAgICAgcHVibGljIENvbnRleHRNZW51Q2FsbGJhY2soaW50IGZlYXR1cmVJZCkgeworICAgICAgICAgICAgbUZlYXR1cmVJZCA9IGZlYXR1cmVJZDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xvc2VNZW51KE1lbnVCdWlsZGVyIG1lbnUsIGJvb2xlYW4gYWxsTWVudXNBcmVDbG9zaW5nKSB7CisgICAgICAgICAgICBpZiAoYWxsTWVudXNBcmVDbG9zaW5nKSB7CisgICAgICAgICAgICAgICAgQ2FsbGJhY2sgY2FsbGJhY2sgPSBnZXRDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKSBjYWxsYmFjay5vblBhbmVsQ2xvc2VkKG1GZWF0dXJlSWQsIG1lbnUpOworCisgICAgICAgICAgICAgICAgaWYgKG1lbnUgPT0gbUNvbnRleHRNZW51KSB7CisgICAgICAgICAgICAgICAgICAgIGRpc21pc3NDb250ZXh0TWVudSgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIERpc21pc3MgdGhlIHN1Ym1lbnUsIGlmIGl0IGlzIHNob3dpbmcKKyAgICAgICAgICAgICAgICBpZiAobVN1Yk1lbnVIZWxwZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtU3ViTWVudUhlbHBlci5kaXNtaXNzKCk7CisgICAgICAgICAgICAgICAgICAgIG1TdWJNZW51SGVscGVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBvbkNsb3NlU3ViTWVudShTdWJNZW51QnVpbGRlciBtZW51KSB7CisgICAgICAgICAgICBDYWxsYmFjayBjYWxsYmFjayA9IGdldENhbGxiYWNrKCk7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgY2FsbGJhY2sub25QYW5lbENsb3NlZChtRmVhdHVyZUlkLCBtZW51LmdldFJvb3RNZW51KCkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gb25NZW51SXRlbVNlbGVjdGVkKE1lbnVCdWlsZGVyIG1lbnUsIE1lbnVJdGVtIGl0ZW0pIHsKKyAgICAgICAgICAgIENhbGxiYWNrIGNhbGxiYWNrID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybiAoY2FsbGJhY2sgIT0gbnVsbCkgJiYgY2FsbGJhY2sub25NZW51SXRlbVNlbGVjdGVkKG1GZWF0dXJlSWQsIGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgb25NZW51TW9kZUNoYW5nZShNZW51QnVpbGRlciBtZW51KSB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBvblN1Yk1lbnVTZWxlY3RlZChTdWJNZW51QnVpbGRlciBzdWJNZW51KSB7CisgICAgICAgICAgICAvLyBTZXQgYSBzaW1wbGUgY2FsbGJhY2sgZm9yIHRoZSBzdWJtZW51CisgICAgICAgICAgICBzdWJNZW51LnNldENhbGxiYWNrKHRoaXMpOworCisgICAgICAgICAgICAvLyBUaGUgd2luZG93IG1hbmFnZXIgd2lsbCBnaXZlIHVzIGEgdmFsaWQgd2luZG93IHRva2VuCisgICAgICAgICAgICBtU3ViTWVudUhlbHBlciA9IG5ldyBNZW51RGlhbG9nSGVscGVyKHN1Yk1lbnUpOworICAgICAgICAgICAgbVN1Yk1lbnVIZWxwZXIuc2hvdyhudWxsKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoKSB7CisgICAgICAgIFBob25lV2luZG93TWFuYWdlci5zZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKGdldENvbnRleHQoKSwgbnVsbCk7CisgICAgfQorCisgICAgdm9pZCBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKFN0cmluZyByZWFzb24pIHsKKyAgICAgICAgUGhvbmVXaW5kb3dNYW5hZ2VyLnNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoZ2V0Q29udGV4dCgpLCByZWFzb24pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGhvbmVXaW5kb3dNYW5hZ2VyLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lV2luZG93TWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmEwMWUyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lV2luZG93TWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsMjQzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXJOYXRpdmU7CitpbXBvcnQgYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5JVWlNb2RlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5VaU1vZGVNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5BY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkxvY2FsUG93ZXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbVByb3BlcnRpZXM7CitpbXBvcnQgYW5kcm9pZC5vcy5WaWJyYXRvcjsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LlBvbGljeU1hbmFnZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXJTZXJ2aWNlOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Qb2ludGVyTG9jYXRpb25WaWV3OworCitpbXBvcnQgYW5kcm9pZC51dGlsLkNvbmZpZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuRXZlbnRMb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuRGlzcGxheTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuR3Jhdml0eTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSGFwdGljRmVlZGJhY2tDb25zdGFudHM7CitpbXBvcnQgYW5kcm9pZC52aWV3LklXaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd09yaWVudGF0aW9uTGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlJhd0lucHV0RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdDb25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3c7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GSVJTVF9BUFBMSUNBVElPTl9XSU5ET1c7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0ZPUkNFX05PVF9GVUxMU0NSRUVOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19GVUxMU0NSRUVOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5fU0NSRUVOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5TRVRfREVDT1I7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9OT19MSU1JVFM7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX1NIT1dfV0hFTl9MT0NLRUQ7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0RJU01JU1NfS0VZR1VBUkQ7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMTE9XX0xPQ0tfV0hJTEVfU0NSRUVOX09OOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuU09GVF9JTlBVVF9NQVNLX0FESlVTVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlNPRlRfSU5QVVRfQURKVVNUX1JFU0laRTsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkxBU1RfQVBQTElDQVRJT05fV0lORE9XOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9BUFBMSUNBVElPTl9NRURJQTsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fTUVESUFfT1ZFUkxBWTsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fUEFORUw7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0FQUExJQ0FUSU9OX1NVQl9QQU5FTDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fQVRUQUNIRURfRElBTE9HOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfS0VZR1VBUkRfRElBTE9HOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9QSE9ORTsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfUFJJT1JJVFlfUEhPTkU7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NFQVJDSF9CQVI7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NUQVRVU19CQVI7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NUQVRVU19CQVJfUEFORUw7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9ESUFMT0c7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9BTEVSVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1lTVEVNX0VSUk9SOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9JTlBVVF9NRVRIT0Q7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0lOUFVUX01FVEhPRF9ESUFMT0c7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9PVkVSTEFZOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9UT0FTVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfV0FMTFBBUEVSOworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VySW1wbDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlclBvbGljeTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvblV0aWxzOworaW1wb3J0IGFuZHJvaWQubWVkaWEuSUF1ZGlvU2VydmljZTsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogV2luZG93TWFuYWdlclBvbGljeSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIEFuZHJvaWQgcGhvbmUgVUkuICBUaGlzCisgKiBpbnRyb2R1Y2VzIGEgbmV3IG1ldGhvZCBzdWZmaXgsIExwLCBmb3IgYW4gaW50ZXJuYWwgbG9jayBvZiB0aGUKKyAqIFBob25lV2luZG93TWFuYWdlci4gIFRoaXMgaXMgdXNlZCB0byBwcm90ZWN0IHNvbWUgaW50ZXJuYWwgc3RhdGUsIGFuZAorICogY2FuIGJlIGFjcXVpcmVkIHdpdGggZWl0aGVyIHRodyBMdyBhbmQgTGkgbG9jayBoZWxkLCBzbyBoYXMgdGhlIHJlc3RyaWN0aW9ucworICogb2YgYm90aCBvZiB0aG9zZSB3aGVuIGhlbGQuCisgKi8KK3B1YmxpYyBjbGFzcyBQaG9uZVdpbmRvd01hbmFnZXIgaW1wbGVtZW50cyBXaW5kb3dNYW5hZ2VyUG9saWN5IHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJXaW5kb3dNYW5hZ2VyIjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIGxvY2FsTE9HViA9IERFQlVHID8gQ29uZmlnLkxPR0QgOiBDb25maWcuTE9HVjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19MQVlPVVQgPSBmYWxzZTsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBTSE9XX1NUQVJUSU5HX0FOSU1BVElPTlMgPSB0cnVlOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFNIT1dfUFJPQ0VTU0VTX09OX0FMVF9NRU5VID0gZmFsc2U7CisgICAgCisgICAgLy8gd2FsbHBhcGVyIGlzIGF0IHRoZSBib3R0b20sIHRob3VnaCB0aGUgd2luZG93IG1hbmFnZXIgbWF5IG1vdmUgaXQuCisgICAgc3RhdGljIGZpbmFsIGludCBXQUxMUEFQRVJfTEFZRVIgPSAyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgQVBQTElDQVRJT05fTEFZRVIgPSAyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgUEhPTkVfTEFZRVIgPSAzOworICAgIHN0YXRpYyBmaW5hbCBpbnQgU0VBUkNIX0JBUl9MQVlFUiA9IDQ7CisgICAgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfQkFSX1BBTkVMX0xBWUVSID0gNTsKKyAgICBzdGF0aWMgZmluYWwgaW50IFNZU1RFTV9ESUFMT0dfTEFZRVIgPSA2OworICAgIC8vIHRvYXN0cyBhbmQgdGhlIHBsdWdnZWQtaW4gYmF0dGVyeSB0aGluZworICAgIHN0YXRpYyBmaW5hbCBpbnQgVE9BU1RfTEFZRVIgPSA3OworICAgIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX0JBUl9MQVlFUiA9IDg7CisgICAgLy8gU0lNIGVycm9ycyBhbmQgdW5sb2NrLiAgTm90IHN1cmUgaWYgdGhpcyByZWFsbHkgc2hvdWxkIGJlIGluIGEgaGlnaCBsYXllci4KKyAgICBzdGF0aWMgZmluYWwgaW50IFBSSU9SSVRZX1BIT05FX0xBWUVSID0gOTsKKyAgICAvLyBsaWtlIHRoZSBBTlIgLyBhcHAgY3Jhc2hlZCBkaWFsb2dzCisgICAgc3RhdGljIGZpbmFsIGludCBTWVNURU1fQUxFUlRfTEFZRVIgPSAxMDsKKyAgICAvLyBzeXN0ZW0tbGV2ZWwgZXJyb3IgZGlhbG9ncworICAgIHN0YXRpYyBmaW5hbCBpbnQgU1lTVEVNX0VSUk9SX0xBWUVSID0gMTE7CisgICAgLy8gb24tc2NyZWVuIGtleWJvYXJkcyBhbmQgb3RoZXIgc3VjaCBpbnB1dCBtZXRob2QgdXNlciBpbnRlcmZhY2VzIGdvIGhlcmUuCisgICAgc3RhdGljIGZpbmFsIGludCBJTlBVVF9NRVRIT0RfTEFZRVIgPSAxMjsKKyAgICAvLyBvbi1zY3JlZW4ga2V5Ym9hcmRzIGFuZCBvdGhlciBzdWNoIGlucHV0IG1ldGhvZCB1c2VyIGludGVyZmFjZXMgZ28gaGVyZS4KKyAgICBzdGF0aWMgZmluYWwgaW50IElOUFVUX01FVEhPRF9ESUFMT0dfTEFZRVIgPSAxMzsKKyAgICAvLyB0aGUga2V5Z3VhcmQ7IG5vdGhpbmcgb24gdG9wIG9mIHRoZXNlIGNhbiB0YWtlIGZvY3VzLCBzaW5jZSB0aGV5IGFyZQorICAgIC8vIHJlc3BvbnNpYmxlIGZvciBwb3dlciBtYW5hZ2VtZW50IHdoZW4gZGlzcGxheWVkLgorICAgIHN0YXRpYyBmaW5hbCBpbnQgS0VZR1VBUkRfTEFZRVIgPSAxNDsKKyAgICBzdGF0aWMgZmluYWwgaW50IEtFWUdVQVJEX0RJQUxPR19MQVlFUiA9IDE1OworICAgIC8vIHRoaW5ncyBpbiBoZXJlIENBTiBOT1QgdGFrZSBmb2N1cywgYnV0IGFyZSBzaG93biBvbiB0b3Agb2YgZXZlcnl0aGluZyBlbHNlLgorICAgIHN0YXRpYyBmaW5hbCBpbnQgU1lTVEVNX09WRVJMQVlfTEFZRVIgPSAxNjsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgQVBQTElDQVRJT05fTUVESUFfU1VCTEFZRVIgPSAtMjsKKyAgICBzdGF0aWMgZmluYWwgaW50IEFQUExJQ0FUSU9OX01FRElBX09WRVJMQVlfU1VCTEFZRVIgPSAtMTsKKyAgICBzdGF0aWMgZmluYWwgaW50IEFQUExJQ0FUSU9OX1BBTkVMX1NVQkxBWUVSID0gMTsKKyAgICBzdGF0aWMgZmluYWwgaW50IEFQUExJQ0FUSU9OX1NVQl9QQU5FTF9TVUJMQVlFUiA9IDI7CisKKyAgICBzdGF0aWMgZmluYWwgZmxvYXQgU0xJREVfVE9VQ0hfRVZFTlRfU0laRV9MSU1JVCA9IDAuNmY7CisgICAgCisgICAgLy8gRGVidWdnaW5nOiBzZXQgdGhpcyB0byBoYXZlIHRoZSBzeXN0ZW0gYWN0IGxpa2UgdGhlcmUgaXMgbm8gaGFyZCBrZXlib2FyZC4KKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBLRVlCT0FSRF9BTFdBWVNfSElEREVOID0gZmFsc2U7CisgICAgCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RJQUxPR19SRUFTT05fS0VZID0gInJlYXNvbiI7CisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RJQUxPR19SRUFTT05fR0xPQkFMX0FDVElPTlMgPSAiZ2xvYmFsYWN0aW9ucyI7CisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RJQUxPR19SRUFTT05fUkVDRU5UX0FQUFMgPSAicmVjZW50YXBwcyI7CisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RJQUxPR19SRUFTT05fSE9NRV9LRVkgPSAiaG9tZWtleSI7CisKKyAgICBmaW5hbCBPYmplY3QgbUxvY2sgPSBuZXcgT2JqZWN0KCk7CisgICAgCisgICAgQ29udGV4dCBtQ29udGV4dDsKKyAgICBJV2luZG93TWFuYWdlciBtV2luZG93TWFuYWdlcjsKKyAgICBMb2NhbFBvd2VyTWFuYWdlciBtUG93ZXJNYW5hZ2VyOworICAgIFZpYnJhdG9yIG1WaWJyYXRvcjsgLy8gVmlicmF0b3IgZm9yIGdpdmluZyBmZWVkYmFjayBvZiBvcmllbnRhdGlvbiBjaGFuZ2VzCisKKyAgICAvLyBWaWJyYXRvciBwYXR0ZXJuIGZvciBoYXB0aWMgZmVlZGJhY2sgb2YgYSBsb25nIHByZXNzLgorICAgIGxvbmdbXSBtTG9uZ1ByZXNzVmliZVBhdHRlcm47CisgICAgCisgICAgLy8gVmlicmF0b3IgcGF0dGVybiBmb3IgaGFwdGljIGZlZWRiYWNrIG9mIHZpcnR1YWwga2V5IHByZXNzLgorICAgIGxvbmdbXSBtVmlydHVhbEtleVZpYmVQYXR0ZXJuOworICAgIAorICAgIC8vIFZpYnJhdG9yIHBhdHRlcm4gZm9yIGEgc2hvcnQgdmlicmF0aW9uLgorICAgIGxvbmdbXSBtS2V5Ym9hcmRUYXBWaWJlUGF0dGVybjsKKworICAgIC8vIFZpYnJhdG9yIHBhdHRlcm4gZm9yIGhhcHRpYyBmZWVkYmFjayBkdXJpbmcgYm9vdCB3aGVuIHNhZmUgbW9kZSBpcyBkaXNhYmxlZC4KKyAgICBsb25nW10gbVNhZmVNb2RlRGlzYWJsZWRWaWJlUGF0dGVybjsKKyAgICAKKyAgICAvLyBWaWJyYXRvciBwYXR0ZXJuIGZvciBoYXB0aWMgZmVlZGJhY2sgZHVyaW5nIGJvb3Qgd2hlbiBzYWZlIG1vZGUgaXMgZW5hYmxlZC4KKyAgICBsb25nW10gbVNhZmVNb2RlRW5hYmxlZFZpYmVQYXR0ZXJuOworCisgICAgLyoqIElmIHRydWUsIGhpdHRpbmcgc2hpZnQgJiBtZW51IHdpbGwgYnJvYWRjYXN0IEludGVudC5BQ1RJT05fQlVHX1JFUE9SVCAqLworICAgIGJvb2xlYW4gbUVuYWJsZVNoaWZ0TWVudUJ1Z1JlcG9ydHMgPSBmYWxzZTsKKyAgICAKKyAgICBib29sZWFuIG1TYWZlTW9kZTsKKyAgICBXaW5kb3dTdGF0ZSBtU3RhdHVzQmFyID0gbnVsbDsKKyAgICBmaW5hbCBBcnJheUxpc3Q8V2luZG93U3RhdGU+IG1TdGF0dXNCYXJQYW5lbHMgPSBuZXcgQXJyYXlMaXN0PFdpbmRvd1N0YXRlPigpOworICAgIFdpbmRvd1N0YXRlIG1LZXlndWFyZCA9IG51bGw7CisgICAgS2V5Z3VhcmRWaWV3TWVkaWF0b3IgbUtleWd1YXJkTWVkaWF0b3I7CisgICAgR2xvYmFsQWN0aW9ucyBtR2xvYmFsQWN0aW9uczsKKyAgICBib29sZWFuIG1TaG91bGRUdXJuT2ZmT25LZXlVcDsKKyAgICBSZWNlbnRBcHBsaWNhdGlvbnNEaWFsb2cgbVJlY2VudEFwcHNEaWFsb2c7CisgICAgSGFuZGxlciBtSGFuZGxlcjsKKyAgICAKKyAgICBib29sZWFuIG1TeXN0ZW1SZWFkeTsKKyAgICBib29sZWFuIG1MaWRPcGVuOworICAgIGludCBtVWlNb2RlID0gQ29uZmlndXJhdGlvbi5VSV9NT0RFX1RZUEVfTk9STUFMOworICAgIGludCBtRG9ja01vZGUgPSBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9VTkRPQ0tFRDsKKyAgICBpbnQgbUxpZE9wZW5Sb3RhdGlvbjsKKyAgICBpbnQgbUNhckRvY2tSb3RhdGlvbjsKKyAgICBpbnQgbURlc2tEb2NrUm90YXRpb247CisgICAgYm9vbGVhbiBtQ2FyRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyOworICAgIGJvb2xlYW4gbURlc2tEb2NrRW5hYmxlc0FjY2VsZXJvbWV0ZXI7CisgICAgaW50IG1MaWRLZXlib2FyZEFjY2Vzc2liaWxpdHk7CisgICAgaW50IG1MaWROYXZpZ2F0aW9uQWNjZXNzaWJpbGl0eTsKKyAgICBib29sZWFuIG1TY3JlZW5PbiA9IGZhbHNlOworICAgIGJvb2xlYW4gbU9yaWVudGF0aW9uU2Vuc29yRW5hYmxlZCA9IGZhbHNlOworICAgIGludCBtQ3VycmVudEFwcE9yaWVudGF0aW9uID0gQWN0aXZpdHlJbmZvLlNDUkVFTl9PUklFTlRBVElPTl9VTlNQRUNJRklFRDsKKyAgICBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfQUNDRUxFUk9NRVRFUl9ST1RBVElPTiA9IDA7CisgICAgaW50IG1BY2NlbGVyb21ldGVyRGVmYXVsdCA9IERFRkFVTFRfQUNDRUxFUk9NRVRFUl9ST1RBVElPTjsKKyAgICBib29sZWFuIG1IYXNTb2Z0SW5wdXQgPSBmYWxzZTsKKyAgICAKKyAgICBpbnQgbVBvaW50ZXJMb2NhdGlvbk1vZGUgPSAwOworICAgIFBvaW50ZXJMb2NhdGlvblZpZXcgbVBvaW50ZXJMb2NhdGlvblZpZXcgPSBudWxsOworICAgIAorICAgIC8vIFRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHNjcmVlbi4KKyAgICBpbnQgbVcsIG1IOworICAgIC8vIER1cmluZyBsYXlvdXQsIHRoZSBjdXJyZW50IHNjcmVlbiBib3JkZXJzIHdpdGggYWxsIG91dGVyIGRlY29yYXRpb24KKyAgICAvLyAoc3RhdHVzIGJhciwgaW5wdXQgbWV0aG9kIGRvY2spIGFjY291bnRlZCBmb3IuCisgICAgaW50IG1DdXJMZWZ0LCBtQ3VyVG9wLCBtQ3VyUmlnaHQsIG1DdXJCb3R0b207CisgICAgLy8gRHVyaW5nIGxheW91dCwgdGhlIGZyYW1lIGluIHdoaWNoIGNvbnRlbnQgc2hvdWxkIGJlIGRpc3BsYXllZAorICAgIC8vIHRvIHRoZSB1c2VyLCBhY2NvdW50aW5nIGZvciBhbGwgc2NyZWVuIGRlY29yYXRpb24gZXhjZXB0IGZvciBhbnkKKyAgICAvLyBzcGFjZSB0aGV5IGRlZW0gYXMgYXZhaWxhYmxlIGZvciBvdGhlciBjb250ZW50LiAgVGhpcyBpcyB1c3VhbGx5CisgICAgLy8gdGhlIHNhbWUgYXMgbUN1ciosIGJ1dCBtYXkgYmUgbGFyZ2VyIGlmIHRoZSBzY3JlZW4gZGVjb3IgaGFzIHN1cHBsaWVkCisgICAgLy8gY29udGVudCBpbnNldHMuCisgICAgaW50IG1Db250ZW50TGVmdCwgbUNvbnRlbnRUb3AsIG1Db250ZW50UmlnaHQsIG1Db250ZW50Qm90dG9tOworICAgIC8vIER1cmluZyBsYXlvdXQsIHRoZSBjdXJyZW50IHNjcmVlbiBib3JkZXJzIGFsb25nIHdpdGggaW5wdXQgbWV0aG9kCisgICAgLy8gd2luZG93cyBhcmUgcGxhY2VkLgorICAgIGludCBtRG9ja0xlZnQsIG1Eb2NrVG9wLCBtRG9ja1JpZ2h0LCBtRG9ja0JvdHRvbTsKKyAgICAvLyBEdXJpbmcgbGF5b3V0LCB0aGUgbGF5ZXIgYXQgd2hpY2ggdGhlIGRvYyB3aW5kb3cgaXMgcGxhY2VkLgorICAgIGludCBtRG9ja0xheWVyOworICAgIAorICAgIHN0YXRpYyBmaW5hbCBSZWN0IG1UbXBQYXJlbnRGcmFtZSA9IG5ldyBSZWN0KCk7CisgICAgc3RhdGljIGZpbmFsIFJlY3QgbVRtcERpc3BsYXlGcmFtZSA9IG5ldyBSZWN0KCk7CisgICAgc3RhdGljIGZpbmFsIFJlY3QgbVRtcENvbnRlbnRGcmFtZSA9IG5ldyBSZWN0KCk7CisgICAgc3RhdGljIGZpbmFsIFJlY3QgbVRtcFZpc2libGVGcmFtZSA9IG5ldyBSZWN0KCk7CisgICAgCisgICAgV2luZG93U3RhdGUgbVRvcEZ1bGxzY3JlZW5PcGFxdWVXaW5kb3dTdGF0ZTsKKyAgICBib29sZWFuIG1Gb3JjZVN0YXR1c0JhcjsKKyAgICBib29sZWFuIG1IaWRlTG9ja1NjcmVlbjsKKyAgICBib29sZWFuIG1EaXNtaXNzS2V5Z3VhcmQ7CisgICAgYm9vbGVhbiBtSG9tZVByZXNzZWQ7CisgICAgSW50ZW50IG1Ib21lSW50ZW50OworICAgIEludGVudCBtQ2FyRG9ja0ludGVudDsKKyAgICBJbnRlbnQgbURlc2tEb2NrSW50ZW50OworICAgIGJvb2xlYW4gbVNlYXJjaEtleVByZXNzZWQ7CisgICAgYm9vbGVhbiBtQ29uc3VtZVNlYXJjaEtleVVwOworCisgICAgLy8gc3VwcG9ydCBmb3IgYWN0aXZhdGluZyB0aGUgbG9jayBzY3JlZW4gd2hpbGUgdGhlIHNjcmVlbiBpcyBvbgorICAgIGJvb2xlYW4gbUFsbG93TG9ja3NjcmVlbldoZW5PbjsKKyAgICBpbnQgbUxvY2tTY3JlZW5UaW1lb3V0OworICAgIGJvb2xlYW4gbUxvY2tTY3JlZW5UaW1lckFjdGl2ZTsKKworICAgIC8vIEJlaGF2aW9yIG9mIEVORENBTEwgQnV0dG9uLiAgKFNlZSBTZXR0aW5ncy5TeXN0ZW0uRU5EX0JVVFRPTl9CRUhBVklPUi4pCisgICAgaW50IG1FbmRjYWxsQmVoYXZpb3I7CisKKyAgICAvLyBCZWhhdmlvciBvZiBQT1dFUiBidXR0b24gd2hpbGUgaW4tY2FsbCBhbmQgc2NyZWVuIG9uLgorICAgIC8vIChTZWUgU2V0dGluZ3MuU2VjdXJlLklOQ0FMTF9QT1dFUl9CVVRUT05fQkVIQVZJT1IuKQorICAgIGludCBtSW5jYWxsUG93ZXJCZWhhdmlvcjsKKworICAgIGludCBtTGFuZHNjYXBlUm90YXRpb24gPSAtMTsKKyAgICBpbnQgbVBvcnRyYWl0Um90YXRpb24gPSAtMTsKKworICAgIC8vIE5vdGhpbmcgdG8gc2VlIGhlcmUsIG1vdmUgYWxvbmcuLi4KKyAgICBpbnQgbUZhbmN5Um90YXRpb25BbmltYXRpb247CisKKyAgICBTaG9ydGN1dE1hbmFnZXIgbVNob3J0Y3V0TWFuYWdlcjsKKyAgICBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbUJyb2FkY2FzdFdha2VMb2NrOworCisgICAgY2xhc3MgU2V0dGluZ3NPYnNlcnZlciBleHRlbmRzIENvbnRlbnRPYnNlcnZlciB7CisgICAgICAgIFNldHRpbmdzT2JzZXJ2ZXIoSGFuZGxlciBoYW5kbGVyKSB7CisgICAgICAgICAgICBzdXBlcihoYW5kbGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgb2JzZXJ2ZSgpIHsKKyAgICAgICAgICAgIENvbnRlbnRSZXNvbHZlciByZXNvbHZlciA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOworICAgICAgICAgICAgcmVzb2x2ZXIucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoU2V0dGluZ3MuU3lzdGVtLmdldFVyaUZvcigKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLkVORF9CVVRUT05fQkVIQVZJT1IpLCBmYWxzZSwgdGhpcyk7CisgICAgICAgICAgICByZXNvbHZlci5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcihTZXR0aW5ncy5TZWN1cmUuZ2V0VXJpRm9yKAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuSU5DQUxMX1BPV0VSX0JVVFRPTl9CRUhBVklPUiksIGZhbHNlLCB0aGlzKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnJlZ2lzdGVyQ29udGVudE9ic2VydmVyKFNldHRpbmdzLlN5c3RlbS5nZXRVcmlGb3IoCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5BQ0NFTEVST01FVEVSX1JPVEFUSU9OKSwgZmFsc2UsIHRoaXMpOworICAgICAgICAgICAgcmVzb2x2ZXIucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoU2V0dGluZ3MuU3lzdGVtLmdldFVyaUZvcigKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLlNDUkVFTl9PRkZfVElNRU9VVCksIGZhbHNlLCB0aGlzKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnJlZ2lzdGVyQ29udGVudE9ic2VydmVyKFNldHRpbmdzLlN5c3RlbS5nZXRVcmlGb3IoCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5QT0lOVEVSX0xPQ0FUSU9OKSwgZmFsc2UsIHRoaXMpOworICAgICAgICAgICAgcmVzb2x2ZXIucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoU2V0dGluZ3MuU2VjdXJlLmdldFVyaUZvcigKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkRFRkFVTFRfSU5QVVRfTUVUSE9EKSwgZmFsc2UsIHRoaXMpOworICAgICAgICAgICAgcmVzb2x2ZXIucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoU2V0dGluZ3MuU3lzdGVtLmdldFVyaUZvcigKKyAgICAgICAgICAgICAgICAgICAgImZhbmN5X3JvdGF0aW9uX2FuaW0iKSwgZmFsc2UsIHRoaXMpOworICAgICAgICAgICAgdXBkYXRlU2V0dGluZ3MoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBvbkNoYW5nZShib29sZWFuIHNlbGZDaGFuZ2UpIHsKKyAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdzKCk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldFJvdGF0aW9uKFVTRV9MQVNUX1JPVEFUSU9OLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1GYW5jeVJvdGF0aW9uQW5pbWF0aW9uKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gSWdub3JlCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgY2xhc3MgTXlPcmllbnRhdGlvbkxpc3RlbmVyIGV4dGVuZHMgV2luZG93T3JpZW50YXRpb25MaXN0ZW5lciB7CisgICAgICAgIE15T3JpZW50YXRpb25MaXN0ZW5lcihDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25PcmllbnRhdGlvbkNoYW5nZWQoaW50IHJvdGF0aW9uKSB7CisgICAgICAgICAgICAvLyBTZW5kIHVwZGF0ZXMgYmFzZWQgb24gb3JpZW50YXRpb24gdmFsdWUKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgIm9uT3JpZW50YXRpb25DaGFuZ2VkLCByb3RhdGlvbiBjaGFuZ2VkIHRvICIgK3JvdGF0aW9uKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0Um90YXRpb24ocm90YXRpb24sIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgbUZhbmN5Um90YXRpb25BbmltYXRpb24pOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZ25vcmUKKworICAgICAgICAgICAgfQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgTXlPcmllbnRhdGlvbkxpc3RlbmVyIG1PcmllbnRhdGlvbkxpc3RlbmVyOworCisgICAgYm9vbGVhbiB1c2VTZW5zb3JGb3JPcmllbnRhdGlvbkxwKGludCBhcHBPcmllbnRhdGlvbikgeworICAgICAgICAvLyBUaGUgYXBwIHNheXMgdXNlIHRoZSBzZW5zb3IuCisgICAgICAgIGlmIChhcHBPcmllbnRhdGlvbiA9PSBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX1NFTlNPUikgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhlIHVzZXIgcHJlZmVyZW5jZSBzYXlzIHdlIGNhbiByb3RhdGUsIGFuZCB0aGUgYXBwIGlzIHdpbGxpbmcgdG8gcm90YXRlLgorICAgICAgICBpZiAobUFjY2VsZXJvbWV0ZXJEZWZhdWx0ICE9IDAgJiYKKyAgICAgICAgICAgICAgICAoYXBwT3JpZW50YXRpb24gPT0gQWN0aXZpdHlJbmZvLlNDUkVFTl9PUklFTlRBVElPTl9VU0VSCisgICAgICAgICAgICAgICAgIHx8IGFwcE9yaWVudGF0aW9uID09IEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fVU5TUEVDSUZJRUQpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBXZSdyZSBpbiBhIGRvY2sgdGhhdCBoYXMgYSByb3RhdGlvbiBhZmZpbml0eSwgYW4gdGhlIGFwcCBpcyB3aWxsaW5nIHRvIHJvdGF0ZS4KKyAgICAgICAgaWYgKChtQ2FyRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyICYmIG1Eb2NrTW9kZSA9PSBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9DQVIpCisgICAgICAgICAgICAgICAgfHwgKG1EZXNrRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyICYmIG1Eb2NrTW9kZSA9PSBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9ERVNLKSkgeworICAgICAgICAgICAgLy8gTm90ZSB3ZSBvdmVycmlkZSB0aGUgbm9zZW5zb3IgZmxhZyBoZXJlLgorICAgICAgICAgICAgaWYgKGFwcE9yaWVudGF0aW9uID09IEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fVVNFUgorICAgICAgICAgICAgICAgICAgICB8fCBhcHBPcmllbnRhdGlvbiA9PSBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX1VOU1BFQ0lGSUVECisgICAgICAgICAgICAgICAgICAgIHx8IGFwcE9yaWVudGF0aW9uID09IEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fTk9TRU5TT1IpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBFbHNlLCBkb24ndCB1c2UgdGhlIHNlbnNvci4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIFdlIGFsd2F5cyBsZXQgdGhlIHNlbnNvciBiZSBzd2l0Y2hlZCBvbiBieSBkZWZhdWx0IGV4Y2VwdCB3aGVuCisgICAgICogdGhlIHVzZXIgaGFzIGV4cGxpY2l0bHkgZGlzYWJsZWQgc2Vuc29yIGJhc2VkIHJvdGF0aW9uIG9yIHdoZW4gdGhlCisgICAgICogc2NyZWVuIGlzIHN3aXRjaGVkIG9mZi4KKyAgICAgKi8KKyAgICBib29sZWFuIG5lZWRTZW5zb3JSdW5uaW5nTHAoKSB7CisgICAgICAgIGlmIChtQ3VycmVudEFwcE9yaWVudGF0aW9uID09IEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fU0VOU09SKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgYXBwbGljYXRpb24gaGFzIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHRvIGZvbGxvdyB0aGUKKyAgICAgICAgICAgIC8vIG9yaWVudGF0aW9uLCB0aGVuIHdlIG5lZWQgdG8gdHVybiB0aGUgc2Vuc29yIG9yLgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChtQ2FyRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyICYmIG1Eb2NrTW9kZSA9PSBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9DQVIpIHx8CisgICAgICAgICAgICAgICAgKG1EZXNrRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyICYmIG1Eb2NrTW9kZSA9PSBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9ERVNLKSkgeworICAgICAgICAgICAgLy8gZW5hYmxlIGFjY2VsZXJvbWV0ZXIgaWYgd2UgYXJlIGRvY2tlZCBpbiBhIGRvY2sgdGhhdCBlbmFibGVzIGFjY2VsZXJvbWV0ZXIKKyAgICAgICAgICAgIC8vIG9yaWVudGF0aW9uIG1hbmFnZW1lbnQsCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobUFjY2VsZXJvbWV0ZXJEZWZhdWx0ID09IDApIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBzZXR0aW5nIGZvciB1c2luZyB0aGUgc2Vuc29yIGJ5IGRlZmF1bHQgaXMgZW5hYmxlZCwgdGhlbgorICAgICAgICAgICAgLy8gd2Ugd2lsbCBhbHdheXMgbGVhdmUgaXQgb24uICBOb3RlIHRoYXQgdGhlIHVzZXIgY291bGQgZ28gdG8KKyAgICAgICAgICAgIC8vIGEgd2luZG93IHRoYXQgZm9yY2VzIGFuIG9yaWVudGF0aW9uIHRoYXQgZG9lcyBub3QgdXNlIHRoZQorICAgICAgICAgICAgLy8gc2Vuc29yIGFuZCBpbiB0aGVvcnkgd2UgY291bGQgdHVybiBpdCBvZmYuLi4gaG93ZXZlciwgd2hlbiBuZXh0CisgICAgICAgICAgICAvLyB0dXJuaW5nIGl0IG9uIHdlIHdvbid0IGhhdmUgYSBnb29kIHZhbHVlIGZvciB0aGUgY3VycmVudAorICAgICAgICAgICAgLy8gb3JpZW50YXRpb24gZm9yIGEgbGl0dGxlIGJpdCwgd2hpY2ggY2FuIGNhdXNlIG9yaWVudGF0aW9uCisgICAgICAgICAgICAvLyBjaGFuZ2VzIHRvIGxhZywgc28gd2UnZCBsaWtlIHRvIGtlZXAgaXQgYWx3YXlzIG9uLiAgKEl0IHdpbGwKKyAgICAgICAgICAgIC8vIHN0aWxsIGJlIHR1cm5lZCBvZmYgd2hlbiB0aGUgc2NyZWVuIGlzIG9mZi4pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogVmFyaW91cyB1c2UgY2FzZXMgZm9yIGludm9raW5nIHRoaXMgZnVuY3Rpb24KKyAgICAgKiBzY3JlZW4gdHVybmluZyBvZmYsIHNob3VsZCBhbHdheXMgZGlzYWJsZSBsaXN0ZW5lcnMgaWYgYWxyZWFkeSBlbmFibGVkCisgICAgICogc2NyZWVuIHR1cm5lZCBvbiBhbmQgY3VycmVudCBhcHAgaGFzIHNlbnNvciBiYXNlZCBvcmllbnRhdGlvbiwgZW5hYmxlIGxpc3RlbmVycyAKKyAgICAgKiBpZiBub3QgYWxyZWFkeSBlbmFibGVkCisgICAgICogc2NyZWVuIHR1cm5lZCBvbiBhbmQgY3VycmVudCBhcHAgZG9lcyBub3QgaGF2ZSBzZW5zb3Igb3JpZW50YXRpb24sIGRpc2FibGUgbGlzdGVuZXJzIGlmCisgICAgICogYWxyZWFkeSBlbmFibGVkCisgICAgICogc2NyZWVuIHR1cm5pbmcgb24gYW5kIGN1cnJlbnQgYXBwIGhhcyBzZW5zb3IgYmFzZWQgb3JpZW50YXRpb24sIGVuYWJsZSBsaXN0ZW5lcnMgaWYgbmVlZGVkCisgICAgICogc2NyZWVuIHR1cm5pbmcgb24gYW5kIGN1cnJlbnQgYXBwIGhhcyBub3NlbnNvciBiYXNlZCBvcmllbnRhdGlvbiwgZG8gbm90aGluZworICAgICAqLworICAgIHZvaWQgdXBkYXRlT3JpZW50YXRpb25MaXN0ZW5lckxwKCkgeworICAgICAgICBpZiAoIW1PcmllbnRhdGlvbkxpc3RlbmVyLmNhbkRldGVjdE9yaWVudGF0aW9uKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHNlbnNvciBpcyB0dXJuZWQgb2ZmIG9yIG5vbmV4aXN0ZW50IGZvciBzb21lIHJlYXNvbgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vQ291bGQgaGF2ZSBiZWVuIGludm9rZWQgZHVlIHRvIHNjcmVlbiB0dXJuaW5nIG9uIG9yIG9mZiBvcgorICAgICAgICAvL2NoYW5nZSBvZiB0aGUgY3VycmVudGx5IHZpc2libGUgd2luZG93J3Mgb3JpZW50YXRpb24KKyAgICAgICAgaWYgKGxvY2FsTE9HVikgTG9nLnYoVEFHLCAiU2NyZWVuIHN0YXR1cz0iK21TY3JlZW5PbisKKyAgICAgICAgICAgICAgICAiLCBjdXJyZW50IG9yaWVudGF0aW9uPSIrbUN1cnJlbnRBcHBPcmllbnRhdGlvbisKKyAgICAgICAgICAgICAgICAiLCBTZW5zb3JFbmFibGVkPSIrbU9yaWVudGF0aW9uU2Vuc29yRW5hYmxlZCk7CisgICAgICAgIGJvb2xlYW4gZGlzYWJsZSA9IHRydWU7CisgICAgICAgIGlmIChtU2NyZWVuT24pIHsKKyAgICAgICAgICAgIGlmIChuZWVkU2Vuc29yUnVubmluZ0xwKCkpIHsKKyAgICAgICAgICAgICAgICBkaXNhYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgLy9lbmFibGUgbGlzdGVuZXIgaWYgbm90IGFscmVhZHkgZW5hYmxlZAorICAgICAgICAgICAgICAgIGlmICghbU9yaWVudGF0aW9uU2Vuc29yRW5hYmxlZCkgeworICAgICAgICAgICAgICAgICAgICBtT3JpZW50YXRpb25MaXN0ZW5lci5lbmFibGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYobG9jYWxMT0dWKSBMb2cudihUQUcsICJFbmFibGluZyBsaXN0ZW5lcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgbU9yaWVudGF0aW9uU2Vuc29yRW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAKKyAgICAgICAgfSAKKyAgICAgICAgLy9jaGVjayBpZiBzZW5zb3JzIG5lZWQgdG8gYmUgZGlzYWJsZWQKKyAgICAgICAgaWYgKGRpc2FibGUgJiYgbU9yaWVudGF0aW9uU2Vuc29yRW5hYmxlZCkgeworICAgICAgICAgICAgbU9yaWVudGF0aW9uTGlzdGVuZXIuZGlzYWJsZSgpOworICAgICAgICAgICAgaWYobG9jYWxMT0dWKSBMb2cudihUQUcsICJEaXNhYmxpbmcgbGlzdGVuZXJzIik7CisgICAgICAgICAgICBtT3JpZW50YXRpb25TZW5zb3JFbmFibGVkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSdW5uYWJsZSBtUG93ZXJMb25nUHJlc3MgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIG1TaG91bGRUdXJuT2ZmT25LZXlVcCA9IGZhbHNlOworICAgICAgICAgICAgcGVyZm9ybUhhcHRpY0ZlZWRiYWNrTHcobnVsbCwgSGFwdGljRmVlZGJhY2tDb25zdGFudHMuTE9OR19QUkVTUywgZmFsc2UpOworICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cyhTWVNURU1fRElBTE9HX1JFQVNPTl9HTE9CQUxfQUNUSU9OUyk7CisgICAgICAgICAgICBzaG93R2xvYmFsQWN0aW9uc0RpYWxvZygpOworICAgICAgICB9CisgICAgfTsKKworICAgIHZvaWQgc2hvd0dsb2JhbEFjdGlvbnNEaWFsb2coKSB7CisgICAgICAgIGlmIChtR2xvYmFsQWN0aW9ucyA9PSBudWxsKSB7CisgICAgICAgICAgICBtR2xvYmFsQWN0aW9ucyA9IG5ldyBHbG9iYWxBY3Rpb25zKG1Db250ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBmaW5hbCBib29sZWFuIGtleWd1YXJkU2hvd2luZyA9IG1LZXlndWFyZE1lZGlhdG9yLmlzU2hvd2luZ0FuZE5vdEhpZGRlbigpOworICAgICAgICBtR2xvYmFsQWN0aW9ucy5zaG93RGlhbG9nKGtleWd1YXJkU2hvd2luZywgaXNEZXZpY2VQcm92aXNpb25lZCgpKTsKKyAgICAgICAgaWYgKGtleWd1YXJkU2hvd2luZykgeworICAgICAgICAgICAgLy8gc2luY2UgaXQgdG9vayB0d28gc2Vjb25kcyBvZiBsb25nIHByZXNzIHRvIGJyaW5nIHRoaXMgdXAsCisgICAgICAgICAgICAvLyBwb2tlIHRoZSB3YWtlIGxvY2sgc28gdGhleSBoYXZlIHNvbWUgdGltZSB0byBzZWUgdGhlIGRpYWxvZy4KKyAgICAgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLnBva2VXYWtlbG9jaygpOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbGVhbiBpc0RldmljZVByb3Zpc2lvbmVkKCkgeworICAgICAgICByZXR1cm4gU2V0dGluZ3MuU2VjdXJlLmdldEludCgKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU2VjdXJlLkRFVklDRV9QUk9WSVNJT05FRCwgMCkgIT0gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXaGVuIGEgaG9tZS1rZXkgbG9uZ3ByZXNzIGV4cGlyZXMsIGNsb3NlIG90aGVyIHN5c3RlbSB3aW5kb3dzIGFuZCBsYXVuY2ggdGhlIHJlY2VudCBhcHBzCisgICAgICovCisgICAgUnVubmFibGUgbUhvbWVMb25nUHJlc3MgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBFYXQgdGhlIGxvbmdwcmVzcyBzbyBpdCB3b24ndCBkaXNtaXNzIHRoZSByZWNlbnQgYXBwcyBkaWFsb2cgd2hlbgorICAgICAgICAgICAgICogdGhlIHVzZXIgbGV0cyBnbyBvZiB0aGUgaG9tZSBrZXkKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbUhvbWVQcmVzc2VkID0gZmFsc2U7CisgICAgICAgICAgICBwZXJmb3JtSGFwdGljRmVlZGJhY2tMdyhudWxsLCBIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5MT05HX1BSRVNTLCBmYWxzZSk7CisgICAgICAgICAgICBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKFNZU1RFTV9ESUFMT0dfUkVBU09OX1JFQ0VOVF9BUFBTKTsKKyAgICAgICAgICAgIHNob3dSZWNlbnRBcHBzRGlhbG9nKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQ3JlYXRlIChpZiBuZWNlc3NhcnkpIGFuZCBsYXVuY2ggdGhlIHJlY2VudCBhcHBzIGRpYWxvZworICAgICAqLworICAgIHZvaWQgc2hvd1JlY2VudEFwcHNEaWFsb2coKSB7CisgICAgICAgIGlmIChtUmVjZW50QXBwc0RpYWxvZyA9PSBudWxsKSB7CisgICAgICAgICAgICBtUmVjZW50QXBwc0RpYWxvZyA9IG5ldyBSZWNlbnRBcHBsaWNhdGlvbnNEaWFsb2cobUNvbnRleHQpOworICAgICAgICB9CisgICAgICAgIG1SZWNlbnRBcHBzRGlhbG9nLnNob3coKTsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBpbml0KENvbnRleHQgY29udGV4dCwgSVdpbmRvd01hbmFnZXIgd2luZG93TWFuYWdlciwKKyAgICAgICAgICAgIExvY2FsUG93ZXJNYW5hZ2VyIHBvd2VyTWFuYWdlcikgeworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1XaW5kb3dNYW5hZ2VyID0gd2luZG93TWFuYWdlcjsKKyAgICAgICAgbVBvd2VyTWFuYWdlciA9IHBvd2VyTWFuYWdlcjsKKyAgICAgICAgbUtleWd1YXJkTWVkaWF0b3IgPSBuZXcgS2V5Z3VhcmRWaWV3TWVkaWF0b3IoY29udGV4dCwgdGhpcywgcG93ZXJNYW5hZ2VyKTsKKyAgICAgICAgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcigpOworICAgICAgICBtT3JpZW50YXRpb25MaXN0ZW5lciA9IG5ldyBNeU9yaWVudGF0aW9uTGlzdGVuZXIobUNvbnRleHQpOworICAgICAgICBTZXR0aW5nc09ic2VydmVyIHNldHRpbmdzT2JzZXJ2ZXIgPSBuZXcgU2V0dGluZ3NPYnNlcnZlcihtSGFuZGxlcik7CisgICAgICAgIHNldHRpbmdzT2JzZXJ2ZXIub2JzZXJ2ZSgpOworICAgICAgICBtU2hvcnRjdXRNYW5hZ2VyID0gbmV3IFNob3J0Y3V0TWFuYWdlcihjb250ZXh0LCBtSGFuZGxlcik7CisgICAgICAgIG1TaG9ydGN1dE1hbmFnZXIub2JzZXJ2ZSgpOworICAgICAgICBtSG9tZUludGVudCA9ICBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fTUFJTiwgbnVsbCk7CisgICAgICAgIG1Ib21lSW50ZW50LmFkZENhdGVnb3J5KEludGVudC5DQVRFR09SWV9IT01FKTsKKyAgICAgICAgbUhvbWVJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sKKyAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKTsKKyAgICAgICAgbUNhckRvY2tJbnRlbnQgPSAgbmV3IEludGVudChJbnRlbnQuQUNUSU9OX01BSU4sIG51bGwpOworICAgICAgICBtQ2FyRG9ja0ludGVudC5hZGRDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfQ0FSX0RPQ0spOworICAgICAgICBtQ2FyRG9ja0ludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSworICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERUQpOworICAgICAgICBtRGVza0RvY2tJbnRlbnQgPSAgbmV3IEludGVudChJbnRlbnQuQUNUSU9OX01BSU4sIG51bGwpOworICAgICAgICBtRGVza0RvY2tJbnRlbnQuYWRkQ2F0ZWdvcnkoSW50ZW50LkNBVEVHT1JZX0RFU0tfRE9DSyk7CisgICAgICAgIG1EZXNrRG9ja0ludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSworICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERUQpOworICAgICAgICBQb3dlck1hbmFnZXIgcG0gPSAoUG93ZXJNYW5hZ2VyKWNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlBPV0VSX1NFUlZJQ0UpOworICAgICAgICBtQnJvYWRjYXN0V2FrZUxvY2sgPSBwbS5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssCisgICAgICAgICAgICAgICAgIlBob25lV2luZG93TWFuYWdlci5tQnJvYWRjYXN0V2FrZUxvY2siKTsKKyAgICAgICAgbUVuYWJsZVNoaWZ0TWVudUJ1Z1JlcG9ydHMgPSAiMSIuZXF1YWxzKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5kZWJ1Z2dhYmxlIikpOworICAgICAgICBtTGlkT3BlblJvdGF0aW9uID0gcmVhZFJvdGF0aW9uKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuaW50ZWdlci5jb25maWdfbGlkT3BlblJvdGF0aW9uKTsKKyAgICAgICAgbUNhckRvY2tSb3RhdGlvbiA9IHJlYWRSb3RhdGlvbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmludGVnZXIuY29uZmlnX2NhckRvY2tSb3RhdGlvbik7CisgICAgICAgIG1EZXNrRG9ja1JvdGF0aW9uID0gcmVhZFJvdGF0aW9uKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuaW50ZWdlci5jb25maWdfZGVza0RvY2tSb3RhdGlvbik7CisgICAgICAgIG1DYXJEb2NrRW5hYmxlc0FjY2VsZXJvbWV0ZXIgPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfY2FyRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyKTsKKyAgICAgICAgbURlc2tEb2NrRW5hYmxlc0FjY2VsZXJvbWV0ZXIgPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfZGVza0RvY2tFbmFibGVzQWNjZWxlcm9tZXRlcik7CisgICAgICAgIG1MaWRLZXlib2FyZEFjY2Vzc2liaWxpdHkgPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRJbnRlZ2VyKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuaW50ZWdlci5jb25maWdfbGlkS2V5Ym9hcmRBY2Nlc3NpYmlsaXR5KTsKKyAgICAgICAgbUxpZE5hdmlnYXRpb25BY2Nlc3NpYmlsaXR5ID0gbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0SW50ZWdlcigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmludGVnZXIuY29uZmlnX2xpZE5hdmlnYXRpb25BY2Nlc3NpYmlsaXR5KTsKKyAgICAgICAgLy8gcmVnaXN0ZXIgZm9yIGRvY2sgZXZlbnRzCisgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oVWlNb2RlTWFuYWdlci5BQ1RJT05fRU5URVJfQ0FSX01PREUpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFVpTW9kZU1hbmFnZXIuQUNUSU9OX0VYSVRfQ0FSX01PREUpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFVpTW9kZU1hbmFnZXIuQUNUSU9OX0VOVEVSX0RFU0tfTU9ERSk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oVWlNb2RlTWFuYWdlci5BQ1RJT05fRVhJVF9ERVNLX01PREUpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fRE9DS19FVkVOVCk7CisgICAgICAgIEludGVudCBpbnRlbnQgPSBjb250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobURvY2tSZWNlaXZlciwgZmlsdGVyKTsKKyAgICAgICAgaWYgKGludGVudCAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBSZXRyaWV2ZSBjdXJyZW50IHN0aWNreSBkb2NrIGV2ZW50IGJyb2FkY2FzdC4KKyAgICAgICAgICAgIG1Eb2NrTW9kZSA9IGludGVudC5nZXRJbnRFeHRyYShJbnRlbnQuRVhUUkFfRE9DS19TVEFURSwKKyAgICAgICAgICAgICAgICAgICAgSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfVU5ET0NLRUQpOworICAgICAgICB9CisgICAgICAgIG1WaWJyYXRvciA9IG5ldyBWaWJyYXRvcigpOworICAgICAgICBtTG9uZ1ByZXNzVmliZVBhdHRlcm4gPSBnZXRMb25nSW50QXJyYXkobUNvbnRleHQuZ2V0UmVzb3VyY2VzKCksCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hcnJheS5jb25maWdfbG9uZ1ByZXNzVmliZVBhdHRlcm4pOworICAgICAgICBtVmlydHVhbEtleVZpYmVQYXR0ZXJuID0gZ2V0TG9uZ0ludEFycmF5KG1Db250ZXh0LmdldFJlc291cmNlcygpLAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYXJyYXkuY29uZmlnX3ZpcnR1YWxLZXlWaWJlUGF0dGVybik7CisgICAgICAgIG1LZXlib2FyZFRhcFZpYmVQYXR0ZXJuID0gZ2V0TG9uZ0ludEFycmF5KG1Db250ZXh0LmdldFJlc291cmNlcygpLAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYXJyYXkuY29uZmlnX2tleWJvYXJkVGFwVmliZVBhdHRlcm4pOworICAgICAgICBtU2FmZU1vZGVEaXNhYmxlZFZpYmVQYXR0ZXJuID0gZ2V0TG9uZ0ludEFycmF5KG1Db250ZXh0LmdldFJlc291cmNlcygpLAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYXJyYXkuY29uZmlnX3NhZmVNb2RlRGlzYWJsZWRWaWJlUGF0dGVybik7CisgICAgICAgIG1TYWZlTW9kZUVuYWJsZWRWaWJlUGF0dGVybiA9IGdldExvbmdJbnRBcnJheShtQ29udGV4dC5nZXRSZXNvdXJjZXMoKSwKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFycmF5LmNvbmZpZ19zYWZlTW9kZUVuYWJsZWRWaWJlUGF0dGVybik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlU2V0dGluZ3MoKSB7CisgICAgICAgIENvbnRlbnRSZXNvbHZlciByZXNvbHZlciA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOworICAgICAgICBib29sZWFuIHVwZGF0ZVJvdGF0aW9uID0gZmFsc2U7CisgICAgICAgIFZpZXcgYWRkVmlldyA9IG51bGw7CisgICAgICAgIFZpZXcgcmVtb3ZlVmlldyA9IG51bGw7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIG1FbmRjYWxsQmVoYXZpb3IgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KHJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uRU5EX0JVVFRPTl9CRUhBVklPUiwKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLkVORF9CVVRUT05fQkVIQVZJT1JfREVGQVVMVCk7CisgICAgICAgICAgICBtSW5jYWxsUG93ZXJCZWhhdmlvciA9IFNldHRpbmdzLlNlY3VyZS5nZXRJbnQocmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5JTkNBTExfUE9XRVJfQlVUVE9OX0JFSEFWSU9SLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuSU5DQUxMX1BPV0VSX0JVVFRPTl9CRUhBVklPUl9ERUZBVUxUKTsKKyAgICAgICAgICAgIG1GYW5jeVJvdGF0aW9uQW5pbWF0aW9uID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChyZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgImZhbmN5X3JvdGF0aW9uX2FuaW0iLCAwKSAhPSAwID8gMHg4MCA6IDA7CisgICAgICAgICAgICBpbnQgYWNjZWxlcm9tZXRlckRlZmF1bHQgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KHJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uQUNDRUxFUk9NRVRFUl9ST1RBVElPTiwgREVGQVVMVF9BQ0NFTEVST01FVEVSX1JPVEFUSU9OKTsKKyAgICAgICAgICAgIGlmIChtQWNjZWxlcm9tZXRlckRlZmF1bHQgIT0gYWNjZWxlcm9tZXRlckRlZmF1bHQpIHsKKyAgICAgICAgICAgICAgICBtQWNjZWxlcm9tZXRlckRlZmF1bHQgPSBhY2NlbGVyb21ldGVyRGVmYXVsdDsKKyAgICAgICAgICAgICAgICB1cGRhdGVPcmllbnRhdGlvbkxpc3RlbmVyTHAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtU3lzdGVtUmVhZHkpIHsKKyAgICAgICAgICAgICAgICBpbnQgcG9pbnRlckxvY2F0aW9uID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChyZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5QT0lOVEVSX0xPQ0FUSU9OLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobVBvaW50ZXJMb2NhdGlvbk1vZGUgIT0gcG9pbnRlckxvY2F0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIG1Qb2ludGVyTG9jYXRpb25Nb2RlID0gcG9pbnRlckxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRlckxvY2F0aW9uICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtUG9pbnRlckxvY2F0aW9uVmlldyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBvaW50ZXJMb2NhdGlvblZpZXcgPSBuZXcgUG9pbnRlckxvY2F0aW9uVmlldyhtQ29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBvaW50ZXJMb2NhdGlvblZpZXcuc2V0UHJpbnRDb29yZHMoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFZpZXcgPSBtUG9pbnRlckxvY2F0aW9uVmlldzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVZpZXcgPSBtUG9pbnRlckxvY2F0aW9uVmlldzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Qb2ludGVyTG9jYXRpb25WaWV3ID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIHVzZSBzY3JlZW4gb2ZmIHRpbWVvdXQgc2V0dGluZyBhcyB0aGUgdGltZW91dCBmb3IgdGhlIGxvY2tzY3JlZW4KKyAgICAgICAgICAgIG1Mb2NrU2NyZWVuVGltZW91dCA9IFNldHRpbmdzLlN5c3RlbS5nZXRJbnQocmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5TQ1JFRU5fT0ZGX1RJTUVPVVQsIDApOworICAgICAgICAgICAgU3RyaW5nIGltSWQgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0U3RyaW5nKHJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuREVGQVVMVF9JTlBVVF9NRVRIT0QpOworICAgICAgICAgICAgYm9vbGVhbiBoYXNTb2Z0SW5wdXQgPSBpbUlkICE9IG51bGwgJiYgaW1JZC5sZW5ndGgoKSA+IDA7CisgICAgICAgICAgICBpZiAobUhhc1NvZnRJbnB1dCAhPSBoYXNTb2Z0SW5wdXQpIHsKKyAgICAgICAgICAgICAgICBtSGFzU29mdElucHV0ID0gaGFzU29mdElucHV0OworICAgICAgICAgICAgICAgIHVwZGF0ZVJvdGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAodXBkYXRlUm90YXRpb24pIHsKKyAgICAgICAgICAgIHVwZGF0ZVJvdGF0aW9uKDApOworICAgICAgICB9CisgICAgICAgIGlmIChhZGRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVCk7CisgICAgICAgICAgICBscC50eXBlID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fT1ZFUkxBWTsKKyAgICAgICAgICAgIGxwLmZsYWdzID0gCisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfVE9VQ0hBQkxFfAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRXwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9JTl9TQ1JFRU47CisgICAgICAgICAgICBscC5mb3JtYXQgPSBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVDsKKyAgICAgICAgICAgIGxwLnNldFRpdGxlKCJQb2ludGVyTG9jYXRpb24iKTsKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsIHdtID0gKFdpbmRvd01hbmFnZXJJbXBsKQorICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuV0lORE9XX1NFUlZJQ0UpOworICAgICAgICAgICAgd20uYWRkVmlldyhhZGRWaWV3LCBscCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlbW92ZVZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgV2luZG93TWFuYWdlckltcGwgd20gPSAoV2luZG93TWFuYWdlckltcGwpCisgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSU5ET1dfU0VSVklDRSk7CisgICAgICAgICAgICB3bS5yZW1vdmVWaWV3KHJlbW92ZVZpZXcpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgaW50IHJlYWRSb3RhdGlvbihpbnQgcmVzSUQpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGludCByb3RhdGlvbiA9IG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEludGVnZXIocmVzSUQpOworICAgICAgICAgICAgc3dpdGNoIChyb3RhdGlvbikgeworICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN1cmZhY2UuUk9UQVRJT05fMDsKKyAgICAgICAgICAgICAgICBjYXNlIDkwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3VyZmFjZS5ST1RBVElPTl85MDsKKyAgICAgICAgICAgICAgICBjYXNlIDE4MDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN1cmZhY2UuUk9UQVRJT05fMTgwOworICAgICAgICAgICAgICAgIGNhc2UgMjcwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3VyZmFjZS5ST1RBVElPTl8yNzA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBmYWxsIHRocm91Z2gKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgaW50IGNoZWNrQWRkUGVybWlzc2lvbihXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycykgeworICAgICAgICBpbnQgdHlwZSA9IGF0dHJzLnR5cGU7CisgICAgICAgIAorICAgICAgICBpZiAodHlwZSA8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZJUlNUX1NZU1RFTV9XSU5ET1cKKyAgICAgICAgICAgICAgICB8fCB0eXBlID4gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuTEFTVF9TWVNURU1fV0lORE9XKSB7CisgICAgICAgICAgICByZXR1cm4gV2luZG93TWFuYWdlckltcGwuQUREX09LQVk7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHBlcm1pc3Npb24gPSBudWxsOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVFlQRV9UT0FTVDoKKyAgICAgICAgICAgICAgICAvLyBYWFggcmlnaHQgbm93IHRoZSBhcHAgcHJvY2VzcyBoYXMgY29tcGxldGUgY29udHJvbCBvdmVyCisgICAgICAgICAgICAgICAgLy8gdGhpcy4uLiAgc2hvdWxkIGludHJvZHVjZSBhIHRva2VuIHRvIGxldCB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgLy8gbW9uaXRvci9jb250cm9sIHdoYXQgdGhleSBhcmUgZG9pbmcuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRZUEVfSU5QVVRfTUVUSE9EOgorICAgICAgICAgICAgY2FzZSBUWVBFX1dBTExQQVBFUjoKKyAgICAgICAgICAgICAgICAvLyBUaGUgd2luZG93IG1hbmFnZXIgd2lsbCBjaGVjayB0aGVzZS4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVFlQRV9QSE9ORToKKyAgICAgICAgICAgIGNhc2UgVFlQRV9QUklPUklUWV9QSE9ORToKKyAgICAgICAgICAgIGNhc2UgVFlQRV9TWVNURU1fQUxFUlQ6CisgICAgICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX0VSUk9SOgorICAgICAgICAgICAgY2FzZSBUWVBFX1NZU1RFTV9PVkVSTEFZOgorICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uU1lTVEVNX0FMRVJUX1dJTkRPVzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5JTlRFUk5BTF9TWVNURU1fV0lORE9XOworICAgICAgICB9CisgICAgICAgIGlmIChwZXJtaXNzaW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChtQ29udGV4dC5jaGVja0NhbGxpbmdPclNlbGZQZXJtaXNzaW9uKHBlcm1pc3Npb24pCisgICAgICAgICAgICAgICAgICAgICE9IFBhY2thZ2VNYW5hZ2VyLlBFUk1JU1NJT05fR1JBTlRFRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBXaW5kb3dNYW5hZ2VySW1wbC5BRERfUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdpbmRvd01hbmFnZXJJbXBsLkFERF9PS0FZOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBhZGp1c3RXaW5kb3dQYXJhbXNMdyhXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycykgeworICAgICAgICBzd2l0Y2ggKGF0dHJzLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVFlQRV9TWVNURU1fT1ZFUkxBWToKKyAgICAgICAgICAgIGNhc2UgVFlQRV9UT0FTVDoKKyAgICAgICAgICAgICAgICAvLyBUaGVzZSB0eXBlcyBvZiB3aW5kb3dzIGNhbid0IHJlY2VpdmUgaW5wdXQgZXZlbnRzLgorICAgICAgICAgICAgICAgIGF0dHJzLmZsYWdzIHw9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9UT1VDSEFCTEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCByZWFkTGlkU3RhdGUoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnQgc3cgPSBtV2luZG93TWFuYWdlci5nZXRTd2l0Y2hTdGF0ZShSYXdJbnB1dEV2ZW50LlNXX0xJRCk7CisgICAgICAgICAgICBpZiAoc3cgPj0gMCkgeworICAgICAgICAgICAgICAgIG1MaWRPcGVuID0gc3cgPT0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIElnbm9yZQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgaW50IGRldGVybWluZUhpZGRlblN0YXRlKGJvb2xlYW4gbGlkT3BlbiwKKyAgICAgICAgICAgIGludCBtb2RlLCBpbnQgaGlkZGVuVmFsdWUsIGludCB2aXNpYmxlVmFsdWUpIHsKKyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxpZE9wZW4gPyB2aXNpYmxlVmFsdWUgOiBoaWRkZW5WYWx1ZTsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlkT3BlbiA/IGhpZGRlblZhbHVlIDogdmlzaWJsZVZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2aXNpYmxlVmFsdWU7CisgICAgfQorICAgIAorICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgYWRqdXN0Q29uZmlndXJhdGlvbkx3KENvbmZpZ3VyYXRpb24gY29uZmlnKSB7CisgICAgICAgIHJlYWRMaWRTdGF0ZSgpOworICAgICAgICBmaW5hbCBib29sZWFuIGxpZE9wZW4gPSAhS0VZQk9BUkRfQUxXQVlTX0hJRERFTiAmJiBtTGlkT3BlbjsKKyAgICAgICAgbVBvd2VyTWFuYWdlci5zZXRLZXlib2FyZFZpc2liaWxpdHkobGlkT3Blbik7CisgICAgICAgIGNvbmZpZy5oYXJkS2V5Ym9hcmRIaWRkZW4gPSBkZXRlcm1pbmVIaWRkZW5TdGF0ZShsaWRPcGVuLAorICAgICAgICAgICAgICAgIG1MaWRLZXlib2FyZEFjY2Vzc2liaWxpdHksIENvbmZpZ3VyYXRpb24uSEFSREtFWUJPQVJESElEREVOX1lFUywKKyAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uLkhBUkRLRVlCT0FSREhJRERFTl9OTyk7CisgICAgICAgIGNvbmZpZy5uYXZpZ2F0aW9uSGlkZGVuID0gZGV0ZXJtaW5lSGlkZGVuU3RhdGUobGlkT3BlbiwKKyAgICAgICAgICAgICAgICBtTGlkTmF2aWdhdGlvbkFjY2Vzc2liaWxpdHksIENvbmZpZ3VyYXRpb24uTkFWSUdBVElPTkhJRERFTl9ZRVMsCisgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5OQVZJR0FUSU9OSElEREVOX05PKTsKKyAgICAgICAgY29uZmlnLmtleWJvYXJkSGlkZGVuID0gKGNvbmZpZy5oYXJkS2V5Ym9hcmRIaWRkZW4KKyAgICAgICAgICAgICAgICAgICAgICAgID09IENvbmZpZ3VyYXRpb24uSEFSREtFWUJPQVJESElEREVOX05PIHx8IG1IYXNTb2Z0SW5wdXQpCisgICAgICAgICAgICAgICAgPyBDb25maWd1cmF0aW9uLktFWUJPQVJESElEREVOX05PCisgICAgICAgICAgICAgICAgOiBDb25maWd1cmF0aW9uLktFWUJPQVJESElEREVOX1lFUzsKKyAgICB9CisgICAgCisgICAgcHVibGljIGJvb2xlYW4gaXNDaGVla1ByZXNzZWRBZ2FpbnN0U2NyZWVuKE1vdGlvbkV2ZW50IGV2KSB7CisgICAgICAgIGlmKGV2LmdldFNpemUoKSA+IFNMSURFX1RPVUNIX0VWRU5UX1NJWkVfTElNSVQpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGludCBzaXplID0gZXYuZ2V0SGlzdG9yeVNpemUoKTsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYoZXYuZ2V0SGlzdG9yaWNhbFNpemUoaSkgPiBTTElERV9UT1VDSF9FVkVOVF9TSVpFX0xJTUlUKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBkaXNwYXRjaGVkUG9pbnRlckV2ZW50THcoTW90aW9uRXZlbnQgZXYsIGludCB0YXJnZXRYLCBpbnQgdGFyZ2V0WSkgeworICAgICAgICBpZiAobVBvaW50ZXJMb2NhdGlvblZpZXcgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIGlmIChtUG9pbnRlckxvY2F0aW9uVmlldyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXYub2Zmc2V0TG9jYXRpb24odGFyZ2V0WCwgdGFyZ2V0WSk7CisgICAgICAgICAgICBtUG9pbnRlckxvY2F0aW9uVmlldy5hZGRUb3VjaEV2ZW50KGV2KTsKKyAgICAgICAgICAgIGV2Lm9mZnNldExvY2F0aW9uKC10YXJnZXRYLCAtdGFyZ2V0WSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgaW50IHdpbmRvd1R5cGVUb0xheWVyTHcoaW50IHR5cGUpIHsKKyAgICAgICAgaWYgKHR5cGUgPj0gRklSU1RfQVBQTElDQVRJT05fV0lORE9XICYmIHR5cGUgPD0gTEFTVF9BUFBMSUNBVElPTl9XSU5ET1cpIHsKKyAgICAgICAgICAgIHJldHVybiBBUFBMSUNBVElPTl9MQVlFUjsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBUWVBFX1NUQVRVU19CQVI6CisgICAgICAgICAgICByZXR1cm4gU1RBVFVTX0JBUl9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1NUQVRVU19CQVJfUEFORUw6CisgICAgICAgICAgICByZXR1cm4gU1RBVFVTX0JBUl9QQU5FTF9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1NZU1RFTV9ESUFMT0c6CisgICAgICAgICAgICByZXR1cm4gU1lTVEVNX0RJQUxPR19MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1NFQVJDSF9CQVI6CisgICAgICAgICAgICByZXR1cm4gU0VBUkNIX0JBUl9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1BIT05FOgorICAgICAgICAgICAgcmV0dXJuIFBIT05FX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfS0VZR1VBUkQ6CisgICAgICAgICAgICByZXR1cm4gS0VZR1VBUkRfTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9LRVlHVUFSRF9ESUFMT0c6CisgICAgICAgICAgICByZXR1cm4gS0VZR1VBUkRfRElBTE9HX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX0FMRVJUOgorICAgICAgICAgICAgcmV0dXJuIFNZU1RFTV9BTEVSVF9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1NZU1RFTV9FUlJPUjoKKyAgICAgICAgICAgIHJldHVybiBTWVNURU1fRVJST1JfTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9JTlBVVF9NRVRIT0Q6CisgICAgICAgICAgICByZXR1cm4gSU5QVVRfTUVUSE9EX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfSU5QVVRfTUVUSE9EX0RJQUxPRzoKKyAgICAgICAgICAgIHJldHVybiBJTlBVVF9NRVRIT0RfRElBTE9HX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX09WRVJMQVk6CisgICAgICAgICAgICByZXR1cm4gU1lTVEVNX09WRVJMQVlfTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9QUklPUklUWV9QSE9ORToKKyAgICAgICAgICAgIHJldHVybiBQUklPUklUWV9QSE9ORV9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1RPQVNUOgorICAgICAgICAgICAgcmV0dXJuIFRPQVNUX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfV0FMTFBBUEVSOgorICAgICAgICAgICAgcmV0dXJuIFdBTExQQVBFUl9MQVlFUjsKKyAgICAgICAgfQorICAgICAgICBMb2cuZShUQUcsICJVbmtub3duIHdpbmRvdyB0eXBlOiAiICsgdHlwZSk7CisgICAgICAgIHJldHVybiBBUFBMSUNBVElPTl9MQVlFUjsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBpbnQgc3ViV2luZG93VHlwZVRvTGF5ZXJMdyhpbnQgdHlwZSkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBUWVBFX0FQUExJQ0FUSU9OX1BBTkVMOgorICAgICAgICBjYXNlIFRZUEVfQVBQTElDQVRJT05fQVRUQUNIRURfRElBTE9HOgorICAgICAgICAgICAgcmV0dXJuIEFQUExJQ0FUSU9OX1BBTkVMX1NVQkxBWUVSOworICAgICAgICBjYXNlIFRZUEVfQVBQTElDQVRJT05fTUVESUE6CisgICAgICAgICAgICByZXR1cm4gQVBQTElDQVRJT05fTUVESUFfU1VCTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9BUFBMSUNBVElPTl9NRURJQV9PVkVSTEFZOgorICAgICAgICAgICAgcmV0dXJuIEFQUExJQ0FUSU9OX01FRElBX09WRVJMQVlfU1VCTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9BUFBMSUNBVElPTl9TVUJfUEFORUw6CisgICAgICAgICAgICByZXR1cm4gQVBQTElDQVRJT05fU1VCX1BBTkVMX1NVQkxBWUVSOworICAgICAgICB9CisgICAgICAgIExvZy5lKFRBRywgIlVua25vd24gc3ViLXdpbmRvdyB0eXBlOiAiICsgdHlwZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0TWF4V2FsbHBhcGVyTGF5ZXIoKSB7CisgICAgICAgIHJldHVybiBTVEFUVVNfQkFSX0xBWUVSOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGRvZXNGb3JjZUhpZGUoV2luZG93U3RhdGUgd2luLCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycykgeworICAgICAgICByZXR1cm4gYXR0cnMudHlwZSA9PSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5CZUZvcmNlSGlkZGVuKFdpbmRvd1N0YXRlIHdpbiwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMpIHsKKyAgICAgICAgcmV0dXJuIGF0dHJzLnR5cGUgIT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSCisgICAgICAgICAgICAgICAgJiYgYXR0cnMudHlwZSAhPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1dBTExQQVBFUjsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgVmlldyBhZGRTdGFydGluZ1dpbmRvdyhJQmluZGVyIGFwcFRva2VuLCBTdHJpbmcgcGFja2FnZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRoZW1lLCBDaGFyU2VxdWVuY2Ugbm9uTG9jYWxpemVkTGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxhYmVsUmVzLCBpbnQgaWNvbikgeworICAgICAgICBpZiAoIVNIT1dfU1RBUlRJTkdfQU5JTUFUSU9OUykgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBhY2thZ2VOYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gbUNvbnRleHQ7CisgICAgICAgICAgICBib29sZWFuIHNldFRoZW1lID0gZmFsc2U7CisgICAgICAgICAgICAvL0xvZy5pKFRBRywgImFkZFN0YXJ0aW5nV2luZG93ICIgKyBwYWNrYWdlTmFtZSArICI6IG5vbkxvY2FsaXplZExhYmVsPSIKKyAgICAgICAgICAgIC8vICAgICAgICArIG5vbkxvY2FsaXplZExhYmVsICsgIiB0aGVtZT0iICsgSW50ZWdlci50b0hleFN0cmluZyh0aGVtZSkpOworICAgICAgICAgICAgaWYgKHRoZW1lICE9IDAgfHwgbGFiZWxSZXMgIT0gMCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNyZWF0ZVBhY2thZ2VDb250ZXh0KHBhY2thZ2VOYW1lLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoZW1lICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGhlbWUodGhlbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGhlbWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFzZXRUaGVtZSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGhlbWUoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5UaGVtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdpbmRvdyB3aW4gPSBQb2xpY3lNYW5hZ2VyLm1ha2VOZXdXaW5kb3coY29udGV4dCk7CisgICAgICAgICAgICBpZiAod2luLmdldFdpbmRvd1N0eWxlKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0Rpc2FibGVQcmV2aWV3LCBmYWxzZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVzb3VyY2VzIHIgPSBjb250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICAgICAgd2luLnNldFRpdGxlKHIuZ2V0VGV4dChsYWJlbFJlcywgbm9uTG9jYWxpemVkTGFiZWwpKTsKKyAgICAKKyAgICAgICAgICAgIHdpbi5zZXRUeXBlKAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fU1RBUlRJTkcpOworICAgICAgICAgICAgLy8gRm9yY2UgdGhlIHdpbmRvdyBmbGFnczogdGhpcyBpcyBhIGZha2Ugd2luZG93LCBzbyBpdCBpcyBub3QgcmVhbGx5CisgICAgICAgICAgICAvLyB0b3VjaGFibGUgb3IgZm9jdXNhYmxlIGJ5IHRoZSB1c2VyLiAgV2UgYWxzbyBhZGQgaW4gdGhlIEFMVF9GT0NVU0FCTEVfSU0KKyAgICAgICAgICAgIC8vIGZsYWcgYmVjYXVzZSB3ZSBkbyBrbm93IHRoYXQgdGhlIG5leHQgd2luZG93IHdpbGwgdGFrZSBpbnB1dAorICAgICAgICAgICAgLy8gZm9jdXMsIHNvIHdlIHdhbnQgdG8gZ2V0IHRoZSBJTUUgd2luZG93IHVwIG9uIHRvcCBvZiB1cyByaWdodCBhd2F5LgorICAgICAgICAgICAgd2luLnNldEZsYWdzKAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIQUJMRXwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEV8CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNLAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIQUJMRXwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEV8CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNKTsKKyAgICAKKyAgICAgICAgICAgIHdpbi5zZXRMYXlvdXQoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpOworICAgIAorICAgICAgICAgICAgZmluYWwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgcGFyYW1zID0gd2luLmdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIHBhcmFtcy50b2tlbiA9IGFwcFRva2VuOworICAgICAgICAgICAgcGFyYW1zLnBhY2thZ2VOYW1lID0gcGFja2FnZU5hbWU7CisgICAgICAgICAgICBwYXJhbXMud2luZG93QW5pbWF0aW9ucyA9IHdpbi5nZXRXaW5kb3dTdHlsZSgpLmdldFJlc291cmNlSWQoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dBbmltYXRpb25TdHlsZSwgMCk7CisgICAgICAgICAgICBwYXJhbXMuc2V0VGl0bGUoIlN0YXJ0aW5nICIgKyBwYWNrYWdlTmFtZSk7CisKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsIHdtID0gKFdpbmRvd01hbmFnZXJJbXBsKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSU5ET1dfU0VSVklDRSk7CisgICAgICAgICAgICBWaWV3IHZpZXcgPSB3aW4uZ2V0RGVjb3JWaWV3KCk7CisKKyAgICAgICAgICAgIGlmICh3aW4uaXNGbG9hdGluZygpKSB7CisgICAgICAgICAgICAgICAgLy8gV2hvb3BzLCB0aGVyZSBpcyBubyB3YXkgdG8gZGlzcGxheSBhbiBhbmltYXRpb24vcHJldmlldworICAgICAgICAgICAgICAgIC8vIG9mIHN1Y2ggYSB0aGluZyEgIEFmdGVyIGFsbCB0aGF0IHdvcmsuLi4gIGxldCdzIHNraXAgaXQuCisgICAgICAgICAgICAgICAgLy8gKE5vdGUgdGhhdCB3ZSBtdXN0IGRvIHRoaXMgaGVyZSBiZWNhdXNlIGl0IGlzIGluCisgICAgICAgICAgICAgICAgLy8gZ2V0RGVjb3JWaWV3KCkgd2hlcmUgdGhlIHRoZW1lIGlzIGV2YWx1YXRlZC4uLiAgbWF5YmUKKyAgICAgICAgICAgICAgICAvLyB3ZSBzaG91bGQgcGVlayB0aGUgZmxvYXRpbmcgYXR0cmlidXRlIGZyb20gdGhlIHRoZW1lCisgICAgICAgICAgICAgICAgLy8gZWFybGllci4pCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KAorICAgICAgICAgICAgICAgIFRBRywgIkFkZGluZyBzdGFydGluZyB3aW5kb3cgZm9yICIgKyBwYWNrYWdlTmFtZQorICAgICAgICAgICAgICAgICsgIiAvICIgKyBhcHBUb2tlbiArICI6ICIKKyAgICAgICAgICAgICAgICArICh2aWV3LmdldFBhcmVudCgpICE9IG51bGwgPyB2aWV3IDogbnVsbCkpOworCisgICAgICAgICAgICB3bS5hZGRWaWV3KHZpZXcsIHBhcmFtcyk7CisKKyAgICAgICAgICAgIC8vIE9ubHkgcmV0dXJuIHRoZSB2aWV3IGlmIGl0IHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlCisgICAgICAgICAgICAvLyB3aW5kb3cgbWFuYWdlci4uLiB3aGljaCB3ZSBjYW4gdGVsbCBieSBpdCBoYXZpbmcgYSBwYXJlbnQuCisgICAgICAgICAgICByZXR1cm4gdmlldy5nZXRQYXJlbnQoKSAhPSBudWxsID8gdmlldyA6IG51bGw7CisgICAgICAgIH0gY2F0Y2ggKFdpbmRvd01hbmFnZXJJbXBsLkJhZFRva2VuRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICAgICAgTG9nLncoVEFHLCBhcHBUb2tlbiArICIgYWxyZWFkeSBydW5uaW5nLCBzdGFydGluZyB3aW5kb3cgbm90IGRpc3BsYXllZCIpOworICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIGRvbid0IGNyYXNoIGlmIHNvbWV0aGluZyBlbHNlIGJhZCBoYXBwZW5zLCBmb3IgZXhhbXBsZSBhCisgICAgICAgICAgICAvLyBmYWlsdXJlIGxvYWRpbmcgcmVzb3VyY2VzIGJlY2F1c2Ugd2UgYXJlIGxvYWRpbmcgZnJvbSBhbiBhcHAKKyAgICAgICAgICAgIC8vIG9uIGV4dGVybmFsIHN0b3JhZ2UgdGhhdCBoYXMgYmVlbiB1bm1vdW50ZWQuCisgICAgICAgICAgICBMb2cudyhUQUcsIGFwcFRva2VuICsgIiBmYWlsZWQgY3JlYXRpbmcgc3RhcnRpbmcgd2luZG93IiwgZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZVN0YXJ0aW5nV2luZG93KElCaW5kZXIgYXBwVG9rZW4sIFZpZXcgd2luZG93KSB7CisgICAgICAgIC8vIFJ1bnRpbWVFeGNlcHRpb24gZSA9IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgICAgIC8vIExvZy5pKFRBRywgInJlbW92ZSAiICsgYXBwVG9rZW4gKyAiICIgKyB3aW5kb3csIGUpOworCisgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KAorICAgICAgICAgICAgVEFHLCAiUmVtb3Zpbmcgc3RhcnRpbmcgd2luZG93IGZvciAiICsgYXBwVG9rZW4gKyAiOiAiICsgd2luZG93KTsKKworICAgICAgICBpZiAod2luZG93ICE9IG51bGwpIHsKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsIHdtID0gKFdpbmRvd01hbmFnZXJJbXBsKSBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuV0lORE9XX1NFUlZJQ0UpOworICAgICAgICAgICAgd20ucmVtb3ZlVmlldyh3aW5kb3cpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJlZmxpZ2h0IGFkZGluZyBhIHdpbmRvdyB0byB0aGUgc3lzdGVtLgorICAgICAqIAorICAgICAqIEN1cnJlbnRseSBlbmZvcmNlcyB0aGF0IHRocmVlIHdpbmRvdyB0eXBlcyBhcmUgc2luZ2xldG9uczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPlNUQVRVU19CQVJfVFlQRTwvbGk+CisgICAgICogPGxpPktFWUdVQVJEX1RZUEU8L2xpPgorICAgICAqIDwvdWw+CisgICAgICogCisgICAgICogQHBhcmFtIHdpbiBUaGUgd2luZG93IHRvIGJlIGFkZGVkCisgICAgICogQHBhcmFtIGF0dHJzIEluZm9ybWF0aW9uIGFib3V0IHRoZSB3aW5kb3cgdG8gYmUgYWRkZWQKKyAgICAgKiAKKyAgICAgKiBAcmV0dXJuIElmIG9rLCBXaW5kb3dNYW5hZ2VySW1wbC5BRERfT0tBWS4gIElmIHRvbyBtYW55IHNpbmdsZXRvbnMsIFdpbmRvd01hbmFnZXJJbXBsLkFERF9NVUxUSVBMRV9TSU5HTEVUT04KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZXBhcmVBZGRXaW5kb3dMdyhXaW5kb3dTdGF0ZSB3aW4sIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzKSB7CisgICAgICAgIHN3aXRjaCAoYXR0cnMudHlwZSkgeworICAgICAgICAgICAgY2FzZSBUWVBFX1NUQVRVU19CQVI6CisgICAgICAgICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLlNUQVRVU19CQVJfU0VSVklDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQaG9uZVdpbmRvd01hbmFnZXIiKTsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBOZWVkIHRvIGhhbmRsZSB0aGUgcmFjZSBjb25kaXRpb24gb2YgdGhlIHN0YXR1cyBiYXIgcHJvYworICAgICAgICAgICAgICAgIC8vIGR5aW5nIGFuZCBjb21pbmcgYmFjayBiZWZvcmUgdGhlIHJlbW92ZVdpbmRvd0x3IGNsZWFudXAgaGFzIGhhcHBlbmVkLgorICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdpbmRvd01hbmFnZXJJbXBsLkFERF9NVUxUSVBMRV9TSU5HTEVUT047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1TdGF0dXNCYXIgPSB3aW47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRZUEVfU1RBVFVTX0JBUl9QQU5FTDoKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCisgICAgICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uU1RBVFVTX0JBUl9TRVJWSUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgIlBob25lV2luZG93TWFuYWdlciIpOworICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJQYW5lbHMuYWRkKHdpbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRZUEVfS0VZR1VBUkQ6CisgICAgICAgICAgICAgICAgaWYgKG1LZXlndWFyZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXaW5kb3dNYW5hZ2VySW1wbC5BRERfTVVMVElQTEVfU0lOR0xFVE9OOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmQgPSB3aW47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdpbmRvd01hbmFnZXJJbXBsLkFERF9PS0FZOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlV2luZG93THcoV2luZG93U3RhdGUgd2luKSB7CisgICAgICAgIGlmIChtU3RhdHVzQmFyID09IHdpbikgeworICAgICAgICAgICAgbVN0YXR1c0JhciA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobUtleWd1YXJkID09IHdpbikgeworICAgICAgICAgICAgbUtleWd1YXJkID0gbnVsbDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TdGF0dXNCYXJQYW5lbHMucmVtb3ZlKHdpbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBQUklOVF9BTklNID0gZmFsc2U7CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgaW50IHNlbGVjdEFuaW1hdGlvbkx3KFdpbmRvd1N0YXRlIHdpbiwgaW50IHRyYW5zaXQpIHsKKyAgICAgICAgaWYgKFBSSU5UX0FOSU0pIExvZy5pKFRBRywgInNlbGVjdEFuaW1hdGlvbiBpbiAiICsgd2luCisgICAgICAgICAgICAgICsgIjogdHJhbnNpdD0iICsgdHJhbnNpdCk7CisgICAgICAgIGlmICh0cmFuc2l0ID09IFRSQU5TSVRfUFJFVklFV19ET05FKSB7CisgICAgICAgICAgICBpZiAod2luLmhhc0FwcFNob3duV2luZG93cygpKSB7CisgICAgICAgICAgICAgICAgaWYgKFBSSU5UX0FOSU0pIExvZy5pKFRBRywgIioqKiogU1RBUlRJTkcgRVhJVCIpOworICAgICAgICAgICAgICAgIHJldHVybiBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uYXBwX3N0YXJ0aW5nX2V4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgQW5pbWF0aW9uIGNyZWF0ZUZvcmNlSGlkZUVudGVyQW5pbWF0aW9uKCkgeworICAgICAgICByZXR1cm4gQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihtQ29udGV4dCwKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ubG9ja19zY3JlZW5fYmVoaW5kX2VudGVyKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIElUZWxlcGhvbnkgZ2V0UGhvbmVJbnRlcmZhY2UoKSB7CisgICAgICAgIHJldHVybiBJVGVsZXBob255LlN0dWIuYXNJbnRlcmZhY2UoU2VydmljZU1hbmFnZXIuY2hlY2tTZXJ2aWNlKENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSUF1ZGlvU2VydmljZSBnZXRBdWRpb0ludGVyZmFjZSgpIHsKKyAgICAgICAgcmV0dXJuIElBdWRpb1NlcnZpY2UuU3R1Yi5hc0ludGVyZmFjZShTZXJ2aWNlTWFuYWdlci5jaGVja1NlcnZpY2UoQ29udGV4dC5BVURJT19TRVJWSUNFKSk7CisgICAgfQorCisgICAgYm9vbGVhbiBrZXlndWFyZE9uKCkgeworICAgICAgICByZXR1cm4ga2V5Z3VhcmRJc1Nob3dpbmdUcSgpIHx8IGluS2V5Z3VhcmRSZXN0cmljdGVkS2V5SW5wdXRNb2RlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gV0lORE9XX1RZUEVTX1dIRVJFX0hPTUVfRE9FU05UX1dPUksgPSB7CisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9BTEVSVCwKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1lTVEVNX0VSUk9SLAorICAgICAgICB9OworCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpbnRlcmNlcHRLZXlUaShXaW5kb3dTdGF0ZSB3aW4sIGludCBjb2RlLCBpbnQgbWV0YUtleXMsIGJvb2xlYW4gZG93biwgCisgICAgICAgICAgICBpbnQgcmVwZWF0Q291bnQsIGludCBmbGFncykgeworICAgICAgICBib29sZWFuIGtleWd1YXJkT24gPSBrZXlndWFyZE9uKCk7CisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBMb2cuZChUQUcsICJpbnRlcmNlcHRLZXlUaSBjb2RlPSIgKyBjb2RlICsgIiBkb3duPSIgKyBkb3duICsgIiByZXBlYXRDb3VudD0iCisgICAgICAgICAgICAgICAgICAgICsgcmVwZWF0Q291bnQgKyAiIGtleWd1YXJkT249IiArIGtleWd1YXJkT24gKyAiIG1Ib21lUHJlc3NlZD0iICsgbUhvbWVQcmVzc2VkKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENsZWFyIGEgcGVuZGluZyBIT01FIGxvbmdwcmVzcyBpZiB0aGUgdXNlciByZWxlYXNlcyBIb21lCisgICAgICAgIC8vIFRPRE86IFRoaXMgY291bGQgcHJvYmFibHkgYmUgaW5zaWRlIHRoZSBuZXh0IGJpdCBvZiBsb2dpYywgYnV0IHRoYXQgY29kZQorICAgICAgICAvLyB0dXJuZWQgb3V0IHRvIGJlIGEgYml0IGZyYWdpbGUgc28gSSdtIGRvaW5nIGl0IGhlcmUgZXhwbGljaXRseSwgZm9yIG5vdy4KKyAgICAgICAgaWYgKChjb2RlID09IEtleUV2ZW50LktFWUNPREVfSE9NRSkgJiYgIWRvd24pIHsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZUNhbGxiYWNrcyhtSG9tZUxvbmdQcmVzcyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgSE9NRSBidXR0b24gaXMgY3VycmVudGx5IGJlaW5nIGhlbGQsIHRoZW4gd2UgZG8gc3BlY2lhbAorICAgICAgICAvLyBjaG9yZGluZyB3aXRoIGl0LgorICAgICAgICBpZiAobUhvbWVQcmVzc2VkKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgcmVsZWFzZWQgdGhlIGhvbWUga2V5LCBhbmQgZGlkbid0IGRvIGFueXRoaW5nIGVsc2UKKyAgICAgICAgICAgIC8vIHdoaWxlIGl0IHdhcyBwcmVzc2VkLCB0aGVuIGl0IGlzIHRpbWUgdG8gZ28gaG9tZSEKKyAgICAgICAgICAgIGlmIChjb2RlID09IEtleUV2ZW50LktFWUNPREVfSE9NRSkgeworICAgICAgICAgICAgICAgIGlmICghZG93bikgeworICAgICAgICAgICAgICAgICAgICBtSG9tZVByZXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MmS2V5RXZlbnQuRkxBR19DQU5DRUxFRCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gaW5jb21pbmcgY2FsbCBpcyByaW5naW5nLCBIT01FIGlzIHRvdGFsbHkgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAoVGhlIHVzZXIgaXMgYWxyZWFkeSBvbiB0aGUgSW5DYWxsU2NyZWVuIGF0IHRoaXMgcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaGlzIE9OTFkgb3B0aW9ucyBhcmUgdG8gYW5zd2VyIG9yIHJlamVjdCB0aGUgY2FsbC4pCisgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGluY29taW5nUmluZ2luZyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVGVsZXBob255IHBob25lU2VydiA9IGdldFBob25lSW50ZXJmYWNlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBob25lU2VydiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nUmluZ2luZyA9IHBob25lU2Vydi5pc1JpbmdpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJVbmFibGUgdG8gZmluZCBJVGVsZXBob255IGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBmcm9tIGdldFBob25lSW50ZXJmYWNlKCkiLCBleCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluY29taW5nUmluZ2luZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIklnbm9yaW5nIEhPTUU7IHRoZXJlJ3MgYSByaW5naW5nIGluY29taW5nIGNhbGwuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaEhvbWVGcm9tSG90S2V5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJJZ25vcmluZyBIT01FOyBldmVudCBjYW5jZWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEZpcnN0IHdlIGFsd2F5cyBoYW5kbGUgdGhlIGhvbWUga2V5IGhlcmUsIHNvIGFwcGxpY2F0aW9ucworICAgICAgICAvLyBjYW4gbmV2ZXIgYnJlYWsgaXQsIGFsdGhvdWdoIGlmIGtleWd1YXJkIGlzIG9uLCB3ZSBkbyBsZXQKKyAgICAgICAgLy8gaXQgaGFuZGxlIGl0LCBiZWNhdXNlIHRoYXQgZ2l2ZXMgdXMgdGhlIGNvcnJlY3QgNSBzZWNvbmQKKyAgICAgICAgLy8gdGltZW91dC4KKyAgICAgICAgaWYgKGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9IT01FKSB7CisKKyAgICAgICAgICAgIC8vIElmIGEgc3lzdGVtIHdpbmRvdyBoYXMgZm9jdXMsIHRoZW4gaXQgZG9lc24ndCBtYWtlIHNlbnNlCisgICAgICAgICAgICAvLyByaWdodCBub3cgdG8gaW50ZXJhY3Qgd2l0aCBhcHBsaWNhdGlvbnMuCisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycyA9IHdpbiAhPSBudWxsID8gd2luLmdldEF0dHJzKCkgOiBudWxsOworICAgICAgICAgICAgaWYgKGF0dHJzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgdHlwZSA9IGF0dHJzLnR5cGU7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdHlwZSA9PSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEX0RJQUxPRykgeworICAgICAgICAgICAgICAgICAgICAvLyB0aGUgImFwcCIgaXMga2V5Z3VhcmQsIHNvIGdpdmUgaXQgdGhlIGtleQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmFsIGludCB0eXBlQ291bnQgPSBXSU5ET1dfVFlQRVNfV0hFUkVfSE9NRV9ET0VTTlRfV09SSy5sZW5ndGg7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPHR5cGVDb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFdJTkRPV19UWVBFU19XSEVSRV9IT01FX0RPRVNOVF9XT1JLW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBkbyBhbnl0aGluZywgYnV0IGFsc28gZG9uJ3QgcGFzcyBpdCB0byB0aGUgYXBwCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGRvd24gJiYgcmVwZWF0Q291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmICgha2V5Z3VhcmRPbikgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtSG9tZUxvbmdQcmVzcywgVmlld0NvbmZpZ3VyYXRpb24uZ2V0R2xvYmFsQWN0aW9uS2V5VGltZW91dCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUhvbWVQcmVzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9NRU5VKSB7CisgICAgICAgICAgICAvLyBIaWphY2sgbW9kaWZpZWQgbWVudSBrZXlzIGZvciBkZWJ1Z2dpbmcgZmVhdHVyZXMKKyAgICAgICAgICAgIGZpbmFsIGludCBjaG9yZEJ1ZyA9IEtleUV2ZW50Lk1FVEFfU0hJRlRfT047CisKKyAgICAgICAgICAgIGlmIChkb3duICYmIHJlcGVhdENvdW50ID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAobUVuYWJsZVNoaWZ0TWVudUJ1Z1JlcG9ydHMgJiYgKG1ldGFLZXlzICYgY2hvcmRCdWcpID09IGNob3JkQnVnKSB7CisgICAgICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fQlVHX1JFUE9SVCk7CisgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnNlbmRPcmRlcmVkQnJvYWRjYXN0KGludGVudCwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoU0hPV19QUk9DRVNTRVNfT05fQUxUX01FTlUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIChtZXRhS2V5cyAmIEtleUV2ZW50Lk1FVEFfQUxUX09OKSA9PSBLZXlFdmVudC5NRVRBX0FMVF9PTikgeworICAgICAgICAgICAgICAgICAgICBJbnRlbnQgc2VydmljZSA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZS5zZXRDbGFzc05hbWUobUNvbnRleHQsICJjb20uYW5kcm9pZC5zZXJ2ZXIuTG9hZEF2ZXJhZ2VTZXJ2aWNlIik7CisgICAgICAgICAgICAgICAgICAgIENvbnRlbnRSZXNvbHZlciByZXMgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzaG93biA9IFNldHRpbmdzLlN5c3RlbS5nZXRJbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLCBTZXR0aW5ncy5TeXN0ZW0uU0hPV19QUk9DRVNTRVMsIDApICE9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICghc2hvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnN0YXJ0U2VydmljZShzZXJ2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnN0b3BTZXJ2aWNlKHNlcnZpY2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5wdXRJbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLCBTZXR0aW5ncy5TeXN0ZW0uU0hPV19QUk9DRVNTRVMsIHNob3duID8gMCA6IDEpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX1NFQVJDSCkgeworICAgICAgICAgICAgaWYgKGRvd24pIHsKKyAgICAgICAgICAgICAgICBpZiAocmVwZWF0Q291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBtU2VhcmNoS2V5UHJlc3NlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtU2VhcmNoS2V5UHJlc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChtQ29uc3VtZVNlYXJjaEtleVVwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENvbnN1bWUgdGhlIHVwLWV2ZW50CisgICAgICAgICAgICAgICAgICAgIG1Db25zdW1lU2VhcmNoS2V5VXAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBTaG9ydGN1dHMgYXJlIGludm9rZWQgdGhyb3VnaCBTZWFyY2gra2V5LCBzbyBpbnRlcmNlcHQgdGhvc2UgaGVyZQorICAgICAgICBpZiAobVNlYXJjaEtleVByZXNzZWQpIHsKKyAgICAgICAgICAgIGlmIChkb3duICYmIHJlcGVhdENvdW50ID09IDAgJiYgIWtleWd1YXJkT24pIHsKKyAgICAgICAgICAgICAgICBJbnRlbnQgc2hvcnRjdXRJbnRlbnQgPSBtU2hvcnRjdXRNYW5hZ2VyLmdldEludGVudChjb2RlLCBtZXRhS2V5cyk7CisgICAgICAgICAgICAgICAgaWYgKHNob3J0Y3V0SW50ZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvcnRjdXRJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KHNob3J0Y3V0SW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIFdlIGxhdW5jaGVkIGFuIGFwcCwgc28gdGhlIHVwLWV2ZW50IG9mIHRoZSBzZWFyY2gga2V5CisgICAgICAgICAgICAgICAgICAgICAqIHNob3VsZCBiZSBjb25zdW1lZAorICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgbUNvbnN1bWVTZWFyY2hLZXlVcCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIGhvbWUga2V5IC0+IGxhdW5jaCBob21lIGFjdGlvbiB3YXMgZGV0ZWN0ZWQuICBUYWtlIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24KKyAgICAgKiBnaXZlbiB0aGUgc2l0dWF0aW9uIHdpdGggdGhlIGtleWd1YXJkLgorICAgICAqLworICAgIHZvaWQgbGF1bmNoSG9tZUZyb21Ib3RLZXkoKSB7CisgICAgICAgIGlmIChtS2V5Z3VhcmRNZWRpYXRvci5pc1Nob3dpbmdBbmROb3RIaWRkZW4oKSkgeworICAgICAgICAgICAgLy8gZG9uJ3QgbGF1bmNoIGhvbWUgaWYga2V5Z3VhcmQgc2hvd2luZworICAgICAgICB9IGVsc2UgaWYgKCFtSGlkZUxvY2tTY3JlZW4gJiYgbUtleWd1YXJkTWVkaWF0b3IuaXNJbnB1dFJlc3RyaWN0ZWQoKSkgeworICAgICAgICAgICAgLy8gd2hlbiBpbiBrZXlndWFyZCByZXN0cmljdGVkIG1vZGUsIG11c3QgZmlyc3QgdmVyaWZ5IHVubG9jaworICAgICAgICAgICAgLy8gYmVmb3JlIGxhdW5jaGluZyBob21lCisgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci52ZXJpZnlVbmxvY2sobmV3IE9uS2V5Z3VhcmRFeGl0UmVzdWx0KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uS2V5Z3VhcmRFeGl0UmVzdWx0KGJvb2xlYW4gc3VjY2VzcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnN0b3BBcHBTd2l0Y2hlcygpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoU1lTVEVNX0RJQUxPR19SRUFTT05fSE9NRV9LRVkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnREb2NrT3JIb21lKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIG5vIGtleWd1YXJkIHN0dWZmIHRvIHdvcnJ5IGFib3V0LCBqdXN0IGxhdW5jaCBob21lIQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnN0b3BBcHBTd2l0Y2hlcygpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoU1lTVEVNX0RJQUxPR19SRUFTT05fSE9NRV9LRVkpOworICAgICAgICAgICAgc3RhcnREb2NrT3JIb21lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBnZXRDb250ZW50SW5zZXRIaW50THcoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMsIFJlY3QgY29udGVudEluc2V0KSB7CisgICAgICAgIGZpbmFsIGludCBmbCA9IGF0dHJzLmZsYWdzOworICAgICAgICAKKyAgICAgICAgaWYgKChmbCAmCisgICAgICAgICAgICAgICAgKEZMQUdfTEFZT1VUX0lOX1NDUkVFTiB8IEZMQUdfRlVMTFNDUkVFTiB8IEZMQUdfTEFZT1VUX0lOU0VUX0RFQ09SKSkKKyAgICAgICAgICAgICAgICA9PSAoRkxBR19MQVlPVVRfSU5fU0NSRUVOIHwgRkxBR19MQVlPVVRfSU5TRVRfREVDT1IpKSB7CisgICAgICAgICAgICBjb250ZW50SW5zZXQuc2V0KG1DdXJMZWZ0LCBtQ3VyVG9wLCBtVyAtIG1DdXJSaWdodCwgbUggLSBtQ3VyQm90dG9tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRlbnRJbnNldC5zZXRFbXB0eSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgYmVnaW5MYXlvdXRMdyhpbnQgZGlzcGxheVdpZHRoLCBpbnQgZGlzcGxheUhlaWdodCkgeworICAgICAgICBtVyA9IGRpc3BsYXlXaWR0aDsKKyAgICAgICAgbUggPSBkaXNwbGF5SGVpZ2h0OworICAgICAgICBtRG9ja0xlZnQgPSBtQ29udGVudExlZnQgPSBtQ3VyTGVmdCA9IDA7CisgICAgICAgIG1Eb2NrVG9wID0gbUNvbnRlbnRUb3AgPSBtQ3VyVG9wID0gMDsKKyAgICAgICAgbURvY2tSaWdodCA9IG1Db250ZW50UmlnaHQgPSBtQ3VyUmlnaHQgPSBkaXNwbGF5V2lkdGg7CisgICAgICAgIG1Eb2NrQm90dG9tID0gbUNvbnRlbnRCb3R0b20gPSBtQ3VyQm90dG9tID0gZGlzcGxheUhlaWdodDsKKyAgICAgICAgbURvY2tMYXllciA9IDB4MTAwMDAwMDA7CisKKyAgICAgICAgLy8gZGVjaWRlIHdoZXJlIHRoZSBzdGF0dXMgYmFyIGdvZXMgYWhlYWQgb2YgdGltZQorICAgICAgICBpZiAobVN0YXR1c0JhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmaW5hbCBSZWN0IHBmID0gbVRtcFBhcmVudEZyYW1lOworICAgICAgICAgICAgZmluYWwgUmVjdCBkZiA9IG1UbXBEaXNwbGF5RnJhbWU7CisgICAgICAgICAgICBmaW5hbCBSZWN0IHZmID0gbVRtcFZpc2libGVGcmFtZTsKKyAgICAgICAgICAgIHBmLmxlZnQgPSBkZi5sZWZ0ID0gdmYubGVmdCA9IDA7CisgICAgICAgICAgICBwZi50b3AgPSBkZi50b3AgPSB2Zi50b3AgPSAwOworICAgICAgICAgICAgcGYucmlnaHQgPSBkZi5yaWdodCA9IHZmLnJpZ2h0ID0gZGlzcGxheVdpZHRoOworICAgICAgICAgICAgcGYuYm90dG9tID0gZGYuYm90dG9tID0gdmYuYm90dG9tID0gZGlzcGxheUhlaWdodDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbVN0YXR1c0Jhci5jb21wdXRlRnJhbWVMdyhwZiwgZGYsIHZmLCB2Zik7CisgICAgICAgICAgICBpZiAobVN0YXR1c0Jhci5pc1Zpc2libGVMdygpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0YXR1cyBiYXIgaXMgaGlkZGVuLCB3ZSBkb24ndCB3YW50IHRvIGNhdXNlCisgICAgICAgICAgICAgICAgLy8gd2luZG93cyBiZWhpbmQgaXQgdG8gc2Nyb2xsLgorICAgICAgICAgICAgICAgIG1Eb2NrVG9wID0gbUNvbnRlbnRUb3AgPSBtQ3VyVG9wID0gbVN0YXR1c0Jhci5nZXRGcmFtZUx3KCkuYm90dG9tOworICAgICAgICAgICAgICAgIGlmIChERUJVR19MQVlPVVQpIExvZy52KFRBRywgIlN0YXR1cyBiYXI6IG1Eb2NrQm90dG9tPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgbURvY2tCb3R0b20gKyAiIG1Db250ZW50Qm90dG9tPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgbUNvbnRlbnRCb3R0b20gKyAiIG1DdXJCb3R0b209IiArIG1DdXJCb3R0b20pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0ZyYW1lcyhXaW5kb3dTdGF0ZSB3aW4sIGludCBmbCwgaW50IHNpbSwKKyAgICAgICAgICAgIFdpbmRvd1N0YXRlIGF0dGFjaGVkLCBib29sZWFuIGluc2V0RGVjb3JzLCBSZWN0IHBmLCBSZWN0IGRmLCBSZWN0IGNmLCBSZWN0IHZmKSB7CisgICAgICAgIGlmICh3aW4uZ2V0U3VyZmFjZUxheWVyKCkgPiBtRG9ja0xheWVyICYmIGF0dGFjaGVkLmdldFN1cmZhY2VMYXllcigpIDwgbURvY2tMYXllcikgeworICAgICAgICAgICAgLy8gSGVyZSdzIGEgc3BlY2lhbCBjYXNlOiBpZiB0aGlzIGF0dGFjaGVkIHdpbmRvdyBpcyBhIHBhbmVsIHRoYXQgaXMKKyAgICAgICAgICAgIC8vIGFib3ZlIHRoZSBkb2NrIHdpbmRvdywgYW5kIHRoZSB3aW5kb3cgaXQgaXMgYXR0YWNoZWQgdG8gaXMgYmVsb3cKKyAgICAgICAgICAgIC8vIHRoZSBkb2NrIHdpbmRvdywgdGhlbiB0aGUgZnJhbWVzIHdlIGNvbXB1dGVkIGZvciB0aGUgd2luZG93IGl0IGlzCisgICAgICAgICAgICAvLyBhdHRhY2hlZCB0byBjYW4gbm90IGJlIHVzZWQgYmVjYXVzZSB0aGUgZG9jayBpcyBlZmZlY3RpdmVseSBwYXJ0CisgICAgICAgICAgICAvLyBvZiB0aGUgdW5kZXJseWluZyB3aW5kb3cgYW5kIHRoZSBhdHRhY2hlZCB3aW5kb3cgaXMgZmxvYXRpbmcgb24gdG9wCisgICAgICAgICAgICAvLyBvZiB0aGUgd2hvbGUgdGhpbmcuICBTbywgd2UgaWdub3JlIHRoZSBhdHRhY2hlZCB3aW5kb3cgYW5kIGV4cGxpY2l0bHkKKyAgICAgICAgICAgIC8vIGNvbXB1dGUgdGhlIGZyYW1lcyB0aGF0IHdvdWxkIGJlIGFwcHJvcHJpYXRlIHdpdGhvdXQgdGhlIGRvY2suCisgICAgICAgICAgICBkZi5sZWZ0ID0gY2YubGVmdCA9IHZmLmxlZnQgPSBtRG9ja0xlZnQ7CisgICAgICAgICAgICBkZi50b3AgPSBjZi50b3AgPSB2Zi50b3AgPSBtRG9ja1RvcDsKKyAgICAgICAgICAgIGRmLnJpZ2h0ID0gY2YucmlnaHQgPSB2Zi5yaWdodCA9IG1Eb2NrUmlnaHQ7CisgICAgICAgICAgICBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSB2Zi5ib3R0b20gPSBtRG9ja0JvdHRvbTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBlZmZlY3RpdmUgZGlzcGxheSBmcmFtZSBvZiB0aGUgYXR0YWNoZWQgd2luZG93IGRlcGVuZHMgb24KKyAgICAgICAgICAgIC8vIHdoZXRoZXIgaXQgaXMgdGFraW5nIGNhcmUgb2YgaW5zZXR0aW5nIGl0cyBjb250ZW50LiAgSWYgbm90LAorICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB1c2UgdGhlIHBhcmVudCdzIGNvbnRlbnQgZnJhbWUgc28gdGhhdCB0aGUgZW50aXJlCisgICAgICAgICAgICAvLyB3aW5kb3cgaXMgcG9zaXRpb25lZCB3aXRoaW4gdGhhdCBjb250ZW50LiAgT3RoZXJ3aXNlIHdlIGNhbiB1c2UKKyAgICAgICAgICAgIC8vIHRoZSBkaXNwbGF5IGZyYW1lIGFuZCBsZXQgdGhlIGF0dGFjaGVkIHdpbmRvdyB0YWtlIGNhcmUgb2YKKyAgICAgICAgICAgIC8vIHBvc2l0aW9uaW5nIGl0cyBjb250ZW50IGFwcHJvcHJpYXRlbHkuCisgICAgICAgICAgICBpZiAoKHNpbSAmIFNPRlRfSU5QVVRfTUFTS19BREpVU1QpICE9IFNPRlRfSU5QVVRfQURKVVNUX1JFU0laRSkgeworICAgICAgICAgICAgICAgIGNmLnNldChhdHRhY2hlZC5nZXREaXNwbGF5RnJhbWVMdygpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHdpbmRvdyBpcyByZXNpemluZywgdGhlbiB3ZSB3YW50IHRvIGJhc2UgdGhlIGNvbnRlbnQKKyAgICAgICAgICAgICAgICAvLyBmcmFtZSBvbiBvdXIgYXR0YWNoZWQgY29udGVudCBmcmFtZSB0byByZXNpemUuLi4gIGhvd2V2ZXIsCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzIGNhbiBiZSB0cmlja3kgaWYgdGhlIGF0dGFjaGVkIHdpbmRvdyBpcyBOT1QgaW4gcmVzaXplCisgICAgICAgICAgICAgICAgLy8gbW9kZSwgaW4gd2hpY2ggY2FzZSBpdHMgY29udGVudCBmcmFtZSB3aWxsIGJlIGxhcmdlci4KKyAgICAgICAgICAgICAgICAvLyBVbmdoLiAgU28gdG8gZGVhbCB3aXRoIHRoYXQsIG1ha2Ugc3VyZSB0aGUgY29udGVudCBmcmFtZQorICAgICAgICAgICAgICAgIC8vIHdlIGVuZCB1cCB1c2luZyBpcyBub3QgY292ZXJpbmcgdGhlIElNIGRvY2suCisgICAgICAgICAgICAgICAgY2Yuc2V0KGF0dGFjaGVkLmdldENvbnRlbnRGcmFtZUx3KCkpOworICAgICAgICAgICAgICAgIGlmIChhdHRhY2hlZC5nZXRTdXJmYWNlTGF5ZXIoKSA8IG1Eb2NrTGF5ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNmLmxlZnQgPCBtQ29udGVudExlZnQpIGNmLmxlZnQgPSBtQ29udGVudExlZnQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChjZi50b3AgPCBtQ29udGVudFRvcCkgY2YudG9wID0gbUNvbnRlbnRUb3A7CisgICAgICAgICAgICAgICAgICAgIGlmIChjZi5yaWdodCA+IG1Db250ZW50UmlnaHQpIGNmLnJpZ2h0ID0gbUNvbnRlbnRSaWdodDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNmLmJvdHRvbSA+IG1Db250ZW50Qm90dG9tKSBjZi5ib3R0b20gPSBtQ29udGVudEJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZi5zZXQoaW5zZXREZWNvcnMgPyBhdHRhY2hlZC5nZXREaXNwbGF5RnJhbWVMdygpIDogY2YpOworICAgICAgICAgICAgdmYuc2V0KGF0dGFjaGVkLmdldFZpc2libGVGcmFtZUx3KCkpOworICAgICAgICB9CisgICAgICAgIC8vIFRoZSBMQVlPVVRfSU5fU0NSRUVOIGZsYWcgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYXR0YWNoZWQKKyAgICAgICAgLy8gd2luZG93IHNob3VsZCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIGl0cyBwYXJlbnQgb3IgdGhlIGVudGlyZQorICAgICAgICAvLyBzY3JlZW4uCisgICAgICAgIHBmLnNldCgoZmwgJiBGTEFHX0xBWU9VVF9JTl9TQ1JFRU4pID09IDAKKyAgICAgICAgICAgICAgICA/IGF0dGFjaGVkLmdldEZyYW1lTHcoKSA6IGRmKTsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBsYXlvdXRXaW5kb3dMdyhXaW5kb3dTdGF0ZSB3aW4sIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzLAorICAgICAgICAgICAgV2luZG93U3RhdGUgYXR0YWNoZWQpIHsKKyAgICAgICAgLy8gd2UndmUgYWxyZWFkeSBkb25lIHRoZSBzdGF0dXMgYmFyCisgICAgICAgIGlmICh3aW4gPT0gbVN0YXR1c0JhcikgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBpZiAoImNvbS5nb29nbGUuYW5kcm9pZC55b3V0dWJlIi5lcXVhbHMoYXR0cnMucGFja2FnZU5hbWUpCisgICAgICAgICAgICAgICAgICAgICYmIGF0dHJzLnR5cGUgPT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9BUFBMSUNBVElPTl9QQU5FTCkgeworICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIkdPVENIQSEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZmluYWwgaW50IGZsID0gYXR0cnMuZmxhZ3M7CisgICAgICAgIGZpbmFsIGludCBzaW0gPSBhdHRycy5zb2Z0SW5wdXRNb2RlOworICAgICAgICAKKyAgICAgICAgZmluYWwgUmVjdCBwZiA9IG1UbXBQYXJlbnRGcmFtZTsKKyAgICAgICAgZmluYWwgUmVjdCBkZiA9IG1UbXBEaXNwbGF5RnJhbWU7CisgICAgICAgIGZpbmFsIFJlY3QgY2YgPSBtVG1wQ29udGVudEZyYW1lOworICAgICAgICBmaW5hbCBSZWN0IHZmID0gbVRtcFZpc2libGVGcmFtZTsKKyAgICAgICAgCisgICAgICAgIGlmIChhdHRycy50eXBlID09IFRZUEVfSU5QVVRfTUVUSE9EKSB7CisgICAgICAgICAgICBwZi5sZWZ0ID0gZGYubGVmdCA9IGNmLmxlZnQgPSB2Zi5sZWZ0ID0gbURvY2tMZWZ0OworICAgICAgICAgICAgcGYudG9wID0gZGYudG9wID0gY2YudG9wID0gdmYudG9wID0gbURvY2tUb3A7CisgICAgICAgICAgICBwZi5yaWdodCA9IGRmLnJpZ2h0ID0gY2YucmlnaHQgPSB2Zi5yaWdodCA9IG1Eb2NrUmlnaHQ7CisgICAgICAgICAgICBwZi5ib3R0b20gPSBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSB2Zi5ib3R0b20gPSBtRG9ja0JvdHRvbTsKKyAgICAgICAgICAgIC8vIElNIGRvY2sgd2luZG93cyBhbHdheXMgZ28gdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLgorICAgICAgICAgICAgYXR0cnMuZ3Jhdml0eSA9IEdyYXZpdHkuQk9UVE9NOworICAgICAgICAgICAgbURvY2tMYXllciA9IHdpbi5nZXRTdXJmYWNlTGF5ZXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICgoZmwgJgorICAgICAgICAgICAgICAgICAgICAoRkxBR19MQVlPVVRfSU5fU0NSRUVOIHwgRkxBR19GVUxMU0NSRUVOIHwgRkxBR19MQVlPVVRfSU5TRVRfREVDT1IpKQorICAgICAgICAgICAgICAgICAgICA9PSAoRkxBR19MQVlPVVRfSU5fU0NSRUVOIHwgRkxBR19MQVlPVVRfSU5TRVRfREVDT1IpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSBmb3IgYSBub3JtYWwgYWN0aXZpdHkgd2luZG93OiB3ZSB3YW50IGl0CisgICAgICAgICAgICAgICAgLy8gdG8gY292ZXIgYWxsIG9mIHRoZSBzY3JlZW4gc3BhY2UsIGFuZCBpdCBjYW4gdGFrZSBjYXJlIG9mCisgICAgICAgICAgICAgICAgLy8gbW92aW5nIGl0cyBjb250ZW50cyB0byBhY2NvdW50IGZvciBzY3JlZW4gZGVjb3JhdGlvbnMgdGhhdAorICAgICAgICAgICAgICAgIC8vIGludHJ1ZGUgaW50byB0aGF0IHNwYWNlLgorICAgICAgICAgICAgICAgIGlmIChhdHRhY2hlZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgd2luZG93IGlzIGF0dGFjaGVkIHRvIGFub3RoZXIsIG91ciBkaXNwbGF5CisgICAgICAgICAgICAgICAgICAgIC8vIGZyYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2UgYXJlIGF0dGFjaGVkIHRvLgorICAgICAgICAgICAgICAgICAgICBzZXRBdHRhY2hlZFdpbmRvd0ZyYW1lcyh3aW4sIGZsLCBzaW0sIGF0dGFjaGVkLCB0cnVlLCBwZiwgZGYsIGNmLCB2Zik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGYubGVmdCA9IGRmLmxlZnQgPSAwOworICAgICAgICAgICAgICAgICAgICBwZi50b3AgPSBkZi50b3AgPSAwOworICAgICAgICAgICAgICAgICAgICBwZi5yaWdodCA9IGRmLnJpZ2h0ID0gbVc7CisgICAgICAgICAgICAgICAgICAgIHBmLmJvdHRvbSA9IGRmLmJvdHRvbSA9IG1IOworICAgICAgICAgICAgICAgICAgICBpZiAoKHNpbSAmIFNPRlRfSU5QVVRfTUFTS19BREpVU1QpICE9IFNPRlRfSU5QVVRfQURKVVNUX1JFU0laRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2YubGVmdCA9IG1Eb2NrTGVmdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNmLnRvcCA9IG1Eb2NrVG9wOworICAgICAgICAgICAgICAgICAgICAgICAgY2YucmlnaHQgPSBtRG9ja1JpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgY2YuYm90dG9tID0gbURvY2tCb3R0b207CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjZi5sZWZ0ID0gbUNvbnRlbnRMZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgY2YudG9wID0gbUNvbnRlbnRUb3A7CisgICAgICAgICAgICAgICAgICAgICAgICBjZi5yaWdodCA9IG1Db250ZW50UmlnaHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjZi5ib3R0b20gPSBtQ29udGVudEJvdHRvbTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB2Zi5sZWZ0ID0gbUN1ckxlZnQ7CisgICAgICAgICAgICAgICAgICAgIHZmLnRvcCA9IG1DdXJUb3A7CisgICAgICAgICAgICAgICAgICAgIHZmLnJpZ2h0ID0gbUN1clJpZ2h0OworICAgICAgICAgICAgICAgICAgICB2Zi5ib3R0b20gPSBtQ3VyQm90dG9tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKGZsICYgRkxBR19MQVlPVVRfSU5fU0NSRUVOKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gQSB3aW5kb3cgdGhhdCBoYXMgcmVxdWVzdGVkIHRvIGZpbGwgdGhlIGVudGlyZSBzY3JlZW4ganVzdAorICAgICAgICAgICAgICAgIC8vIGdldHMgZXZlcnl0aGluZywgcGVyaW9kLgorICAgICAgICAgICAgICAgIHBmLmxlZnQgPSBkZi5sZWZ0ID0gY2YubGVmdCA9IDA7CisgICAgICAgICAgICAgICAgcGYudG9wID0gZGYudG9wID0gY2YudG9wID0gMDsKKyAgICAgICAgICAgICAgICBwZi5yaWdodCA9IGRmLnJpZ2h0ID0gY2YucmlnaHQgPSBtVzsKKyAgICAgICAgICAgICAgICBwZi5ib3R0b20gPSBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSBtSDsKKyAgICAgICAgICAgICAgICB2Zi5sZWZ0ID0gbUN1ckxlZnQ7CisgICAgICAgICAgICAgICAgdmYudG9wID0gbUN1clRvcDsKKyAgICAgICAgICAgICAgICB2Zi5yaWdodCA9IG1DdXJSaWdodDsKKyAgICAgICAgICAgICAgICB2Zi5ib3R0b20gPSBtQ3VyQm90dG9tOworICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRhY2hlZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gQSBjaGlsZCB3aW5kb3cgc2hvdWxkIGJlIHBsYWNlZCBpbnNpZGUgb2YgdGhlIHNhbWUgdmlzaWJsZQorICAgICAgICAgICAgICAgIC8vIGZyYW1lIHRoYXQgaXRzIHBhcmVudCBoYWQuCisgICAgICAgICAgICAgICAgc2V0QXR0YWNoZWRXaW5kb3dGcmFtZXMod2luLCBmbCwgc2ltLCBhdHRhY2hlZCwgZmFsc2UsIHBmLCBkZiwgY2YsIHZmKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBhIG5vcm1hbCB3aW5kb3cgbXVzdCBiZSBwbGFjZWQgaW5zaWRlIHRoZSBjb250ZW50CisgICAgICAgICAgICAgICAgLy8gb2YgYWxsIHNjcmVlbiBkZWNvcmF0aW9ucy4KKyAgICAgICAgICAgICAgICBwZi5sZWZ0ID0gbUNvbnRlbnRMZWZ0OworICAgICAgICAgICAgICAgIHBmLnRvcCA9IG1Db250ZW50VG9wOworICAgICAgICAgICAgICAgIHBmLnJpZ2h0ID0gbUNvbnRlbnRSaWdodDsKKyAgICAgICAgICAgICAgICBwZi5ib3R0b20gPSBtQ29udGVudEJvdHRvbTsKKyAgICAgICAgICAgICAgICBpZiAoKHNpbSAmIFNPRlRfSU5QVVRfTUFTS19BREpVU1QpICE9IFNPRlRfSU5QVVRfQURKVVNUX1JFU0laRSkgeworICAgICAgICAgICAgICAgICAgICBkZi5sZWZ0ID0gY2YubGVmdCA9IG1Eb2NrTGVmdDsKKyAgICAgICAgICAgICAgICAgICAgZGYudG9wID0gY2YudG9wID0gbURvY2tUb3A7CisgICAgICAgICAgICAgICAgICAgIGRmLnJpZ2h0ID0gY2YucmlnaHQgPSBtRG9ja1JpZ2h0OworICAgICAgICAgICAgICAgICAgICBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSBtRG9ja0JvdHRvbTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZi5sZWZ0ID0gY2YubGVmdCA9IG1Db250ZW50TGVmdDsKKyAgICAgICAgICAgICAgICAgICAgZGYudG9wID0gY2YudG9wID0gbUNvbnRlbnRUb3A7CisgICAgICAgICAgICAgICAgICAgIGRmLnJpZ2h0ID0gY2YucmlnaHQgPSBtQ29udGVudFJpZ2h0OworICAgICAgICAgICAgICAgICAgICBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSBtQ29udGVudEJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmYubGVmdCA9IG1DdXJMZWZ0OworICAgICAgICAgICAgICAgIHZmLnRvcCA9IG1DdXJUb3A7CisgICAgICAgICAgICAgICAgdmYucmlnaHQgPSBtQ3VyUmlnaHQ7CisgICAgICAgICAgICAgICAgdmYuYm90dG9tID0gbUN1ckJvdHRvbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKChmbCAmIEZMQUdfTEFZT1VUX05PX0xJTUlUUykgIT0gMCkgeworICAgICAgICAgICAgZGYubGVmdCA9IGRmLnRvcCA9IGNmLmxlZnQgPSBjZi50b3AgPSB2Zi5sZWZ0ID0gdmYudG9wID0gLTEwMDAwOworICAgICAgICAgICAgZGYucmlnaHQgPSBkZi5ib3R0b20gPSBjZi5yaWdodCA9IGNmLmJvdHRvbSA9IHZmLnJpZ2h0ID0gdmYuYm90dG9tID0gMTAwMDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoREVCVUdfTEFZT1VUKSBMb2cudihUQUcsICJDb21wdXRlIGZyYW1lICIgKyBhdHRycy5nZXRUaXRsZSgpCisgICAgICAgICAgICAgICAgKyAiOiBzaW09IyIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHNpbSkKKyAgICAgICAgICAgICAgICArICIgcGY9IiArIHBmLnRvU2hvcnRTdHJpbmcoKSArICIgZGY9IiArIGRmLnRvU2hvcnRTdHJpbmcoKQorICAgICAgICAgICAgICAgICsgIiBjZj0iICsgY2YudG9TaG9ydFN0cmluZygpICsgIiB2Zj0iICsgdmYudG9TaG9ydFN0cmluZygpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgaWYgKCJjb20uZ29vZ2xlLmFuZHJvaWQueW91dHViZSIuZXF1YWxzKGF0dHJzLnBhY2thZ2VOYW1lKQorICAgICAgICAgICAgICAgICAgICAmJiBhdHRycy50eXBlID09IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fUEFORUwpIHsKKyAgICAgICAgICAgICAgICBpZiAodHJ1ZSB8fCBsb2NhbExPR1YpIExvZy52KFRBRywgIkNvbXB1dGluZyBmcmFtZSBvZiAiICsgd2luICsKKyAgICAgICAgICAgICAgICAgICAgICAgICI6IHNpbT0jIiArIEludGVnZXIudG9IZXhTdHJpbmcoc2ltKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHBmPSIgKyBwZi50b1Nob3J0U3RyaW5nKCkgKyAiIGRmPSIgKyBkZi50b1Nob3J0U3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBjZj0iICsgY2YudG9TaG9ydFN0cmluZygpICsgIiB2Zj0iICsgdmYudG9TaG9ydFN0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luLmNvbXB1dGVGcmFtZUx3KHBmLCBkZiwgY2YsIHZmKTsKKyAgICAgICAgCisgICAgICAgIC8vIERvY2sgd2luZG93cyBjYXJ2ZSBvdXQgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLCBzbyBub3JtYWwgd2luZG93cworICAgICAgICAvLyBjYW4ndCBhcHBlYXIgdW5kZXJuZWF0aCB0aGVtLgorICAgICAgICBpZiAoYXR0cnMudHlwZSA9PSBUWVBFX0lOUFVUX01FVEhPRCAmJiAhd2luLmdldEdpdmVuSW5zZXRzUGVuZGluZ0x3KCkpIHsKKyAgICAgICAgICAgIGludCB0b3AgPSB3aW4uZ2V0Q29udGVudEZyYW1lTHcoKS50b3A7CisgICAgICAgICAgICB0b3AgKz0gd2luLmdldEdpdmVuQ29udGVudEluc2V0c0x3KCkudG9wOworICAgICAgICAgICAgaWYgKG1Db250ZW50Qm90dG9tID4gdG9wKSB7CisgICAgICAgICAgICAgICAgbUNvbnRlbnRCb3R0b20gPSB0b3A7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0b3AgPSB3aW4uZ2V0VmlzaWJsZUZyYW1lTHcoKS50b3A7CisgICAgICAgICAgICB0b3AgKz0gd2luLmdldEdpdmVuVmlzaWJsZUluc2V0c0x3KCkudG9wOworICAgICAgICAgICAgaWYgKG1DdXJCb3R0b20gPiB0b3ApIHsKKyAgICAgICAgICAgICAgICBtQ3VyQm90dG9tID0gdG9wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKERFQlVHX0xBWU9VVCkgTG9nLnYoVEFHLCAiSW5wdXQgbWV0aG9kOiBtRG9ja0JvdHRvbT0iCisgICAgICAgICAgICAgICAgICAgICsgbURvY2tCb3R0b20gKyAiIG1Db250ZW50Qm90dG9tPSIKKyAgICAgICAgICAgICAgICAgICAgKyBtQ29udGVudEJvdHRvbSArICIgbUN1ckJvdHRvbT0iICsgbUN1ckJvdHRvbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBpbnQgZmluaXNoTGF5b3V0THcoKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgYmVnaW5BbmltYXRpb25MdyhpbnQgZGlzcGxheVdpZHRoLCBpbnQgZGlzcGxheUhlaWdodCkgeworICAgICAgICBtVG9wRnVsbHNjcmVlbk9wYXF1ZVdpbmRvd1N0YXRlID0gbnVsbDsKKyAgICAgICAgbUZvcmNlU3RhdHVzQmFyID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBtSGlkZUxvY2tTY3JlZW4gPSBmYWxzZTsKKyAgICAgICAgbUFsbG93TG9ja3NjcmVlbldoZW5PbiA9IGZhbHNlOworICAgICAgICBtRGlzbWlzc0tleWd1YXJkID0gZmFsc2U7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBhbmltYXRpbmdXaW5kb3dMdyhXaW5kb3dTdGF0ZSB3aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzKSB7CisgICAgICAgIGlmIChtVG9wRnVsbHNjcmVlbk9wYXF1ZVdpbmRvd1N0YXRlID09IG51bGwgJiYKKyAgICAgICAgICAgICAgICB3aW4uaXNWaXNpYmxlT3JCZWhpbmRLZXlndWFyZEx3KCkpIHsKKyAgICAgICAgICAgIGlmICgoYXR0cnMuZmxhZ3MgJiBGTEFHX0ZPUkNFX05PVF9GVUxMU0NSRUVOKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbUZvcmNlU3RhdHVzQmFyID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBpZiAoYXR0cnMudHlwZSA+PSBGSVJTVF9BUFBMSUNBVElPTl9XSU5ET1cKKyAgICAgICAgICAgICAgICAgICAgJiYgYXR0cnMudHlwZSA8PSBMQVNUX0FQUExJQ0FUSU9OX1dJTkRPVworICAgICAgICAgICAgICAgICAgICAmJiB3aW4uZmlsbHNTY3JlZW5MdyhtVywgbUgsIGZhbHNlLCBmYWxzZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfTEFZT1VUKSBMb2cudihUQUcsICJGdWxsc2NyZWVuIHdpbmRvdzogIiArIHdpbik7CisgICAgICAgICAgICAgICAgbVRvcEZ1bGxzY3JlZW5PcGFxdWVXaW5kb3dTdGF0ZSA9IHdpbjsKKyAgICAgICAgICAgICAgICBpZiAoKGF0dHJzLmZsYWdzICYgRkxBR19TSE9XX1dIRU5fTE9DS0VEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgIlNldHRpbmcgbUhpZGVMb2NrU2NyZWVuIHRvIHRydWUgYnkgd2luICIgKyB3aW4pOworICAgICAgICAgICAgICAgICAgICBtSGlkZUxvY2tTY3JlZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoKGF0dHJzLmZsYWdzICYgRkxBR19ESVNNSVNTX0tFWUdVQVJEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgIlNldHRpbmcgbURpc21pc3NLZXlndWFyZCB0byB0cnVlIGJ5IHdpbiAiICsgd2luKTsKKyAgICAgICAgICAgICAgICAgICAgbURpc21pc3NLZXlndWFyZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgoYXR0cnMuZmxhZ3MgJiBGTEFHX0FMTE9XX0xPQ0tfV0hJTEVfU0NSRUVOX09OKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1BbGxvd0xvY2tzY3JlZW5XaGVuT24gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGludCBmaW5pc2hBbmltYXRpb25MdygpIHsKKyAgICAgICAgaW50IGNoYW5nZXMgPSAwOworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBoaWRpbmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1TdGF0dXNCYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgTG9nLmkoVEFHLCAiZm9yY2U9IiArIG1Gb3JjZVN0YXR1c0JhcgorICAgICAgICAgICAgICAgICAgICArICIgdG9wPSIgKyBtVG9wRnVsbHNjcmVlbk9wYXF1ZVdpbmRvd1N0YXRlKTsKKyAgICAgICAgICAgIGlmIChtRm9yY2VTdGF0dXNCYXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfTEFZT1VUKSBMb2cudihUQUcsICJTaG93aW5nIHN0YXR1cyBiYXIiKTsKKyAgICAgICAgICAgICAgICBpZiAobVN0YXR1c0Jhci5zaG93THcodHJ1ZSkpIGNoYW5nZXMgfD0gRklOSVNIX0xBWU9VVF9SRURPX0xBWU9VVDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobVRvcEZ1bGxzY3JlZW5PcGFxdWVXaW5kb3dTdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy9Mb2cuaShUQUcsICJmcmFtZTogIiArIG1Ub3BGdWxsc2NyZWVuT3BhcXVlV2luZG93U3RhdGUuZ2V0RnJhbWVMdygpCisgICAgICAgICAgICAgICAgLy8gICAgICAgICsgIiBzaG93biBmcmFtZTogIiArIG1Ub3BGdWxsc2NyZWVuT3BhcXVlV2luZG93U3RhdGUuZ2V0U2hvd25GcmFtZUx3KCkpOworICAgICAgICAgICAgICAgIC8vTG9nLmkoVEFHLCAiYXR0cjogIiArIG1Ub3BGdWxsc2NyZWVuT3BhcXVlV2luZG93U3RhdGUuZ2V0QXR0cnMoKSk7CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHAgPQorICAgICAgICAgICAgICAgICAgICBtVG9wRnVsbHNjcmVlbk9wYXF1ZVdpbmRvd1N0YXRlLmdldEF0dHJzKCk7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBoaWRlU3RhdHVzQmFyID0KKyAgICAgICAgICAgICAgICAgICAgKGxwLmZsYWdzICYgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19GVUxMU0NSRUVOKSAhPSAwOworICAgICAgICAgICAgICAgIGlmIChoaWRlU3RhdHVzQmFyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19MQVlPVVQpIExvZy52KFRBRywgIkhpZGluZyBzdGF0dXMgYmFyIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzQmFyLmhpZGVMdyh0cnVlKSkgY2hhbmdlcyB8PSBGSU5JU0hfTEFZT1VUX1JFRE9fTEFZT1VUOworICAgICAgICAgICAgICAgICAgICBoaWRpbmcgPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19MQVlPVVQpIExvZy52KFRBRywgIlNob3dpbmcgc3RhdHVzIGJhciIpOworICAgICAgICAgICAgICAgICAgICBpZiAobVN0YXR1c0Jhci5zaG93THcodHJ1ZSkpIGNoYW5nZXMgfD0gRklOSVNIX0xBWU9VVF9SRURPX0xBWU9VVDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChjaGFuZ2VzICE9IDAgJiYgaGlkaW5nKSB7CisgICAgICAgICAgICBJU3RhdHVzQmFyU2VydmljZSBzYnMgPSBJU3RhdHVzQmFyU2VydmljZS5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoInN0YXR1c2JhciIpKTsKKyAgICAgICAgICAgIGlmIChzYnMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgd2luZG93IHNoYWRlIGlzIGhpZGRlbi4KKyAgICAgICAgICAgICAgICAgICAgc2JzLmNvbGxhcHNlKCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBIaWRlIHRoZSBrZXkgZ3VhcmQgaWYgYSB2aXNpYmxlIHdpbmRvdyBleHBsaWNpdGx5IHNwZWNpZmllcyB0aGF0IGl0IHdhbnRzIHRvIGJlIGRpc3BsYXllZAorICAgICAgICAvLyB3aGVuIHRoZSBzY3JlZW4gaXMgbG9ja2VkCisgICAgICAgIGlmIChtS2V5Z3VhcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgTG9nLnYoVEFHLCAiZmluaXNoTGF5b3V0THc6Om1IaWRlS2V5Z3VhcmQ9IittSGlkZUxvY2tTY3JlZW4pOworICAgICAgICAgICAgaWYgKG1EaXNtaXNzS2V5Z3VhcmQgJiYgIW1LZXlndWFyZE1lZGlhdG9yLmlzU2VjdXJlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobUtleWd1YXJkLmhpZGVMdyh0cnVlKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHw9IEZJTklTSF9MQVlPVVRfUkVET19MQVlPVVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJTklTSF9MQVlPVVRfUkVET19DT05GSUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJTklTSF9MQVlPVVRfUkVET19XQUxMUEFQRVI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtS2V5Z3VhcmRNZWRpYXRvci5pc1Nob3dpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5rZXlndWFyZERvbmUoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChtSGlkZUxvY2tTY3JlZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAobUtleWd1YXJkLmhpZGVMdyh0cnVlKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHw9IEZJTklTSF9MQVlPVVRfUkVET19MQVlPVVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJTklTSF9MQVlPVVRfUkVET19DT05GSUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJTklTSF9MQVlPVVRfUkVET19XQUxMUEFQRVI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLnNldEhpZGRlbih0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG1LZXlndWFyZC5zaG93THcodHJ1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyB8PSBGSU5JU0hfTEFZT1VUX1JFRE9fTEFZT1VUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGSU5JU0hfTEFZT1VUX1JFRE9fQ09ORklHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGSU5JU0hfTEFZT1VUX1JFRE9fV0FMTFBBUEVSOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5zZXRIaWRkZW4oZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyB1cGRhdGUgc2luY2UgbUFsbG93TG9ja3NjcmVlbldoZW5PbiBtaWdodCBoYXZlIGNoYW5nZWQKKyAgICAgICAgdXBkYXRlTG9ja1NjcmVlblRpbWVvdXQoKTsKKyAgICAgICAgcmV0dXJuIGNoYW5nZXM7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gYWxsb3dBcHBBbmltYXRpb25zTHcoKSB7CisgICAgICAgIGlmIChtS2V5Z3VhcmQgIT0gbnVsbCAmJiBtS2V5Z3VhcmQuaXNWaXNpYmxlTHcoKSkgeworICAgICAgICAgICAgLy8gSWYga2V5Z3VhcmQgaXMgY3VycmVudGx5IHZpc2libGUsIG5vIHJlYXNvbiB0byBhbmltYXRlCisgICAgICAgICAgICAvLyBiZWhpbmQgaXQuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1TdGF0dXNCYXIgIT0gbnVsbCAmJiBtU3RhdHVzQmFyLmlzVmlzaWJsZUx3KCkpIHsKKyAgICAgICAgICAgIFJlY3QgcmVjdCA9IG5ldyBSZWN0KG1TdGF0dXNCYXIuZ2V0U2hvd25GcmFtZUx3KCkpOworICAgICAgICAgICAgZm9yIChpbnQgaT1tU3RhdHVzQmFyUGFuZWxzLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSB3ID0gbVN0YXR1c0JhclBhbmVscy5nZXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHcuaXNWaXNpYmxlTHcoKSkgeworICAgICAgICAgICAgICAgICAgICByZWN0LnVuaW9uKHcuZ2V0U2hvd25GcmFtZUx3KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIGludCBpbnNldHcgPSBtVy8xMDsKKyAgICAgICAgICAgIGZpbmFsIGludCBpbnNldGggPSBtSC8xMDsKKyAgICAgICAgICAgIGlmIChyZWN0LmNvbnRhaW5zKGluc2V0dywgaW5zZXRoLCBtVy1pbnNldHcsIG1ILWluc2V0aCkpIHsKKyAgICAgICAgICAgICAgICAvLyBBbGwgb2YgdGhlIHN0YXR1cyBiYXIgd2luZG93cyBwdXQgdG9nZXRoZXIgY292ZXIgdGhlCisgICAgICAgICAgICAgICAgLy8gc2NyZWVuLCBzbyB0aGUgYXBwIGNhbid0IGJlIHNlZW4uICAoTm90ZSB0aGlzIHRlc3QgZG9lc24ndAorICAgICAgICAgICAgICAgIC8vIHdvcmsgaWYgdGhlIHJlY3RzIG9mIHRoZXNlIHdpbmRvd3MgYXJlIGF0IG9mZiBvZmZzZXRzIG9yCisgICAgICAgICAgICAgICAgLy8gc2l6ZXMsIGNhdXNpbmcgZ2FwcyBpbiB0aGUgcmVjdCB1bmlvbiB3ZSBoYXZlIGNvbXB1dGVkLikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBwcmVwcm9jZXNzSW5wdXRFdmVudFRxKFJhd0lucHV0RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJhd0lucHV0RXZlbnQuRVZfU1c6CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleWNvZGUgPT0gUmF3SW5wdXRFdmVudC5TV19MSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbGlkIGNoYW5nZWQgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgbUxpZE9wZW4gPSBldmVudC52YWx1ZSA9PSAwOworICAgICAgICAgICAgICAgICAgICBib29sZWFuIGF3YWtlTm93ID0gbUtleWd1YXJkTWVkaWF0b3IuZG9MaWRDaGFuZ2VUcShtTGlkT3Blbik7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVJvdGF0aW9uKFN1cmZhY2UuRkxBR1NfT1JJRU5UQVRJT05fQU5JTUFUSU9OX0RJU0FCTEUpOworICAgICAgICAgICAgICAgICAgICBpZiAoYXdha2VOb3cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBsaWQgb3BlbmluZyBhbmQgd2UgZG9uJ3QgaGF2ZSB0byBrZWVwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8ga2V5Z3VhcmQgdXAsIHRoZW4gd2UgY2FuIHR1cm4gb24gdGhlIHNjcmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1tZWRpYXRlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5wb2tlV2FrZWxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlndWFyZElzU2hvd2luZ1RxKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtTGlkT3BlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBvcGVuaW5nIHRoZSBsaWQgYW5kIG5vdCBoaWRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ga2V5Z3VhcmQsIHRoZW4gd2UgbmVlZCB0byBoYXZlIGl0IHR1cm4gb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NyZWVuIG9uY2UgaXQgaXMgc2hvd24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUtleWd1YXJkTWVkaWF0b3Iub25XYWtlS2V5V2hlbktleWd1YXJkU2hvd2luZ1RxKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuS0VZQ09ERV9QT1dFUik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMaWdodCB1cCB0aGUga2V5Ym9hcmQgaWYgd2UgYXJlIHNsaWRpbmcgdXAuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUxpZE9wZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnVzZXJBY3Rpdml0eShTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbFBvd2VyTWFuYWdlci5CVVRUT05fRVZFTlQpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnVzZXJBY3Rpdml0eShTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbFBvd2VyTWFuYWdlci5PVEhFUl9FVkVOVCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBub3RpZnlMaWRTd2l0Y2hDaGFuZ2VkKGxvbmcgd2hlbk5hbm9zLCBib29sZWFuIGxpZE9wZW4pIHsKKyAgICAgICAgLy8gbGlkIGNoYW5nZWQgc3RhdGUKKyAgICAgICAgbUxpZE9wZW4gPSBsaWRPcGVuOworICAgICAgICBib29sZWFuIGF3YWtlTm93ID0gbUtleWd1YXJkTWVkaWF0b3IuZG9MaWRDaGFuZ2VUcShtTGlkT3Blbik7CisgICAgICAgIHVwZGF0ZVJvdGF0aW9uKFN1cmZhY2UuRkxBR1NfT1JJRU5UQVRJT05fQU5JTUFUSU9OX0RJU0FCTEUpOworICAgICAgICBpZiAoYXdha2VOb3cpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBsaWQgb3BlbmluZyBhbmQgd2UgZG9uJ3QgaGF2ZSB0byBrZWVwIHRoZQorICAgICAgICAgICAgLy8ga2V5Z3VhcmQgdXAsIHRoZW4gd2UgY2FuIHR1cm4gb24gdGhlIHNjcmVlbgorICAgICAgICAgICAgLy8gaW1tZWRpYXRlbHkuCisgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5wb2tlV2FrZWxvY2soKTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXlndWFyZElzU2hvd2luZ1RxKCkpIHsKKyAgICAgICAgICAgIGlmIChtTGlkT3BlbikgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBvcGVuaW5nIHRoZSBsaWQgYW5kIG5vdCBoaWRpbmcgdGhlCisgICAgICAgICAgICAgICAgLy8ga2V5Z3VhcmQsIHRoZW4gd2UgbmVlZCB0byBoYXZlIGl0IHR1cm4gb24gdGhlCisgICAgICAgICAgICAgICAgLy8gc2NyZWVuIG9uY2UgaXQgaXMgc2hvd24uCisgICAgICAgICAgICAgICAgbUtleWd1YXJkTWVkaWF0b3Iub25XYWtlS2V5V2hlbktleWd1YXJkU2hvd2luZ1RxKAorICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuS0VZQ09ERV9QT1dFUik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMaWdodCB1cCB0aGUga2V5Ym9hcmQgaWYgd2UgYXJlIHNsaWRpbmcgdXAuCisgICAgICAgICAgICBpZiAobUxpZE9wZW4pIHsKKyAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnVzZXJBY3Rpdml0eShTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbFBvd2VyTWFuYWdlci5CVVRUT05fRVZFTlQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnVzZXJBY3Rpdml0eShTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbFBvd2VyTWFuYWdlci5PVEhFUl9FVkVOVCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBib29sZWFuIGlzQXBwU3dpdGNoS2V5VHFUaUx3TGkoaW50IGtleWNvZGUpIHsKKyAgICAgICAgcmV0dXJuIGtleWNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9IT01FCisgICAgICAgICAgICAgICAgfHwga2V5Y29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0VORENBTEw7CisgICAgfQorICAgIAorICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gaXNNb3ZlbWVudEtleVRpKGludCBrZXljb2RlKSB7CisgICAgICAgIHN3aXRjaCAoa2V5Y29kZSkgeworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0RQQURfVVA6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfRFBBRF9ET1dOOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0RQQURfTEVGVDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX1JJR0hUOgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIEByZXR1cm4gV2hldGhlciBhIHRlbGVwaG9uZSBjYWxsIGlzIGluIHByb2dyZXNzIHJpZ2h0IG5vdy4KKyAgICAgKi8KKyAgICBib29sZWFuIGlzSW5DYWxsKCkgeworICAgICAgICBmaW5hbCBJVGVsZXBob255IHBob25lID0gZ2V0UGhvbmVJbnRlcmZhY2UoKTsKKyAgICAgICAgaWYgKHBob25lID09IG51bGwpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgImNvdWxkbid0IGdldCBJVGVsZXBob255IHJlZmVyZW5jZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gcGhvbmUuaXNPZmZob29rKCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJJVGVsZXBob255LmlzT2ZmaGhvb2sgdGhyZXcgUmVtb3RlRXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEByZXR1cm4gV2hldGhlciBtdXNpYyBpcyBiZWluZyBwbGF5ZWQgcmlnaHQgbm93LgorICAgICAqLworICAgIGJvb2xlYW4gaXNNdXNpY0FjdGl2ZSgpIHsKKyAgICAgICAgZmluYWwgQXVkaW9NYW5hZ2VyIGFtID0gKEF1ZGlvTWFuYWdlciltQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQVVESU9fU0VSVklDRSk7CisgICAgICAgIGlmIChhbSA9PSBudWxsKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJpc011c2ljQWN0aXZlOiBjb3VsZG4ndCBnZXQgQXVkaW9NYW5hZ2VyIHJlZmVyZW5jZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBhbS5pc011c2ljQWN0aXZlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVsbCB0aGUgYXVkaW8gc2VydmljZSB0byBhZGp1c3QgdGhlIHZvbHVtZSBhcHByb3ByaWF0ZSB0byB0aGUgZXZlbnQuCisgICAgICogQHBhcmFtIGtleWNvZGUKKyAgICAgKi8KKyAgICB2b2lkIGhhbmRsZVZvbHVtZUtleShpbnQgc3RyZWFtLCBpbnQga2V5Y29kZSkgeworICAgICAgICBmaW5hbCBJQXVkaW9TZXJ2aWNlIGF1ZGlvID0gZ2V0QXVkaW9JbnRlcmZhY2UoKTsKKyAgICAgICAgaWYgKGF1ZGlvID09IG51bGwpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgImhhbmRsZVZvbHVtZUtleTogY291bGRuJ3QgZ2V0IElBdWRpb1NlcnZpY2UgcmVmZXJlbmNlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIHNpbmNlIGF1ZGlvIGlzIHBsYXlpbmcsIHdlIHNob3VsZG4ndCBoYXZlIHRvIGhvbGQgYSB3YWtlIGxvY2sKKyAgICAgICAgICAgIC8vIGR1cmluZyB0aGUgY2FsbCwgYnV0IHdlIGRvIGl0IGFzIGEgcHJlY2F1dGlvbiBmb3IgdGhlIHJhcmUgcG9zc2liaWxpdHkKKyAgICAgICAgICAgIC8vIHRoYXQgdGhlIG11c2ljIHN0b3BzIHJpZ2h0IGJlZm9yZSB3ZSBjYWxsIHRoaXMKKyAgICAgICAgICAgIG1Ccm9hZGNhc3RXYWtlTG9jay5hY3F1aXJlKCk7CisgICAgICAgICAgICBhdWRpby5hZGp1c3RTdHJlYW1Wb2x1bWUoc3RyZWFtLAorICAgICAgICAgICAgICAgIGtleWNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEF1ZGlvTWFuYWdlci5BREpVU1RfUkFJU0UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEF1ZGlvTWFuYWdlci5BREpVU1RfTE9XRVIsCisgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiSUF1ZGlvU2VydmljZS5hZGp1c3RTdHJlYW1Wb2x1bWUoKSB0aHJldyBSZW1vdGVFeGNlcHRpb24gIiArIGUpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgbUJyb2FkY2FzdFdha2VMb2NrLnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbGVhbiBpc01lZGlhS2V5KGludCBjb2RlKSB7CisgICAgICAgIGlmIChjb2RlID09IEtleUV2ZW50LktFWUNPREVfSEVBRFNFVEhPT0sgfHwgCisgICAgICAgICAgICAgICAgY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX01FRElBX1BMQVlfUEFVU0UgfHwKKyAgICAgICAgICAgICAgICBjb2RlID09IEtleUV2ZW50LktFWUNPREVfTUVESUFfU1RPUCB8fCAKKyAgICAgICAgICAgICAgICBjb2RlID09IEtleUV2ZW50LktFWUNPREVfTUVESUFfTkVYVCB8fAorICAgICAgICAgICAgICAgIGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9QUkVWSU9VUyB8fCAKKyAgICAgICAgICAgICAgICBjb2RlID09IEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EIHx8CisgICAgICAgICAgICAgICAgY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAKKyAgICB9CisgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgaW50IGludGVyY2VwdEtleVRxKFJhd0lucHV0RXZlbnQgZXZlbnQsIGJvb2xlYW4gc2NyZWVuSXNPbikgeworICAgICAgICBpbnQgcmVzdWx0ID0gQUNUSU9OX1BBU1NfVE9fVVNFUjsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc1dha2VLZXkgPSBpc1dha2VLZXlUcShldmVudCk7CisgICAgICAgIC8vIElmIHNjcmVlbiBpcyBvZmYgdGhlbiB3ZSB0cmVhdCB0aGUgY2FzZSB3aGVyZSB0aGUga2V5Z3VhcmQgaXMgb3BlbiBidXQgaGlkZGVuCisgICAgICAgIC8vIHRoZSBzYW1lIGFzIGlmIGl0IHdlcmUgb3BlbiBhbmQgaW4gZnJvbnQuCisgICAgICAgIC8vIFRoaXMgd2lsbCBwcmV2ZW50IGFueSBrZXlzIG90aGVyIHRoYW4gdGhlIHBvd2VyIGJ1dHRvbiBmcm9tIHdha2luZyB0aGUgc2NyZWVuCisgICAgICAgIC8vIHdoZW4gdGhlIGtleWd1YXJkIGlzIGhpZGRlbiBieSBhbm90aGVyIGFjdGl2aXR5LgorICAgICAgICBmaW5hbCBib29sZWFuIGtleWd1YXJkQWN0aXZlID0gKHNjcmVlbklzT24gPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLmlzU2hvd2luZ0FuZE5vdEhpZGRlbigpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5pc1Nob3dpbmcoKSk7CisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBMb2cuZChUQUcsICJpbnRlcmNlcHRLZXlUcSBldmVudD0iICsgZXZlbnQgKyAiIGtleWNvZGU9IiArIGV2ZW50LmtleWNvZGUKKyAgICAgICAgICAgICAgICAgICsgIiBzY3JlZW5Jc09uPSIgKyBzY3JlZW5Jc09uICsgIiBrZXlndWFyZEFjdGl2ZT0iICsga2V5Z3VhcmRBY3RpdmUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleWd1YXJkQWN0aXZlKSB7CisgICAgICAgICAgICBpZiAoc2NyZWVuSXNPbikgeworICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlIHNjcmVlbiBpcyBvbiwgYWx3YXlzIGdpdmUgdGhlIGV2ZW50IHRvIHRoZSBrZXlndWFyZAorICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBBQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGRvbid0IHBhc3MgaXQgdG8gdGhlIHVzZXIKKyAgICAgICAgICAgICAgICByZXN1bHQgJj0gfkFDVElPTl9QQVNTX1RPX1VTRVI7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGlzS2V5RG93biA9CisgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQudHlwZSA9PSBSYXdJbnB1dEV2ZW50LkVWX0tFWSkgJiYgKGV2ZW50LnZhbHVlICE9IDApOworICAgICAgICAgICAgICAgIGlmIChpc1dha2VLZXkgJiYgaXNLZXlEb3duKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gdGVsbCB0aGUgbWVkaWF0b3IgYWJvdXQgYSB3YWtlIGtleSwgaXQgbWF5IGRlY2lkZSB0bworICAgICAgICAgICAgICAgICAgICAvLyB0dXJuIG9uIHRoZSBzY3JlZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGtleSBpcworICAgICAgICAgICAgICAgICAgICAvLyBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtS2V5Z3VhcmRNZWRpYXRvci5vbldha2VLZXlXaGVuS2V5Z3VhcmRTaG93aW5nVHEoZXZlbnQua2V5Y29kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoZXZlbnQua2V5Y29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9ET1dOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGV2ZW50LmtleWNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGtleWd1YXJkIGlzIHNob3dpbmcgYW5kIHNjcmVlbiBvZmYsIHdlIG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGhhbmRsZSB0aGUgdm9sdW1lIGtleSBmb3IgY2FsbHMgYW5kICBtdXNpYyBoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkNhbGwoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVZvbHVtZUtleShBdWRpb01hbmFnZXIuU1RSRUFNX1ZPSUNFX0NBTEwsIGV2ZW50LmtleWNvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc011c2ljQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVWb2x1bWVLZXkoQXVkaW9NYW5hZ2VyLlNUUkVBTV9NVVNJQywgZXZlbnQua2V5Y29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIXNjcmVlbklzT24pIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbi1jYWxsIHdpdGggc2NyZWVuIG9mZiBhbmQga2V5Z3VhcmQgaXMgbm90IHNob3dpbmcsCisgICAgICAgICAgICAvLyB0aGVuIGhhbmRsZSB0aGUgdm9sdW1lIGtleSBvdXJzZWx2ZXMuCisgICAgICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBwaG9uZSBhcHAgd2lsbCBkaXNhYmxlIHRoZSBrZXlndWFyZAorICAgICAgICAgICAgLy8gd2hlbiB0aGUgcHJveGltaXR5IHNlbnNvciBpcyBpbiB1c2UuCisgICAgICAgICAgICBpZiAoaXNJbkNhbGwoKSAmJiBldmVudC50eXBlID09IFJhd0lucHV0RXZlbnQuRVZfS0VZICYmCisgICAgICAgICAgICAgICAgICAgICAoZXZlbnQua2V5Y29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9ET1dOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGV2ZW50LmtleWNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVApKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ICY9IH5BQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAgICAgICAgIGhhbmRsZVZvbHVtZUtleShBdWRpb01hbmFnZXIuU1RSRUFNX1ZPSUNFX0NBTEwsIGV2ZW50LmtleWNvZGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzV2FrZUtleSkgeworICAgICAgICAgICAgICAgIC8vIGEgd2FrZSBrZXkgaGFzIGEgc29sZSBwdXJwb3NlIG9mIHdha2luZyB0aGUgZGV2aWNlOyBkb24ndCBwYXNzCisgICAgICAgICAgICAgICAgLy8gaXQgdG8gdGhlIHVzZXIKKyAgICAgICAgICAgICAgICByZXN1bHQgfD0gQUNUSU9OX1BPS0VfVVNFUl9BQ1RJVklUWTsKKyAgICAgICAgICAgICAgICByZXN1bHQgJj0gfkFDVElPTl9QQVNTX1RPX1VTRVI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgdHlwZSA9IGV2ZW50LnR5cGU7CisgICAgICAgIGludCBjb2RlID0gZXZlbnQua2V5Y29kZTsKKyAgICAgICAgYm9vbGVhbiBkb3duID0gZXZlbnQudmFsdWUgIT0gMDsKKworICAgICAgICBpZiAodHlwZSA9PSBSYXdJbnB1dEV2ZW50LkVWX0tFWSkgeworICAgICAgICAgICAgaWYgKGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9FTkRDQUxMCisgICAgICAgICAgICAgICAgICAgIHx8IGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9QT1dFUikgeworICAgICAgICAgICAgICAgIGlmIChkb3duKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBib29sZWFuIGh1bmdVcCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAvLyBrZXkgcmVwZWF0cyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSB3aW5kb3cgbWFuYWdlciwgYW5kIHdlIGRvbid0IHNlZSB0aGVtCisgICAgICAgICAgICAgICAgICAgIC8vIGhlcmUsIHNvIHVubGVzcyB0aGUgZHJpdmVyIGlzIGRvaW5nIHNvbWV0aGluZyBpdCBzaG91bGRuJ3QgYmUsIHdlIGtub3cKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcmVhbCBwcmVzcyBldmVudC4KKyAgICAgICAgICAgICAgICAgICAgSVRlbGVwaG9ueSBwaG9uZVNlcnYgPSBnZXRQaG9uZUludGVyZmFjZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAocGhvbmVTZXJ2ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9FTkRDQUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSBodW5nVXAgPSBwaG9uZVNlcnYuZW5kQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX1BPV0VSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaG9uZVNlcnYuaXNSaW5naW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXNzaW5nIFBvd2VyIHdoaWxlIHRoZXJlJ3MgYSByaW5naW5nIGluY29taW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIHNob3VsZCBzaWxlbmNlIHRoZSByaW5nZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZVNlcnYuc2lsZW5jZVJpbmdlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGhvbmVTZXJ2LmlzT2ZmaG9vaygpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtSW5jYWxsUG93ZXJCZWhhdmlvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBTZXR0aW5ncy5TZWN1cmUuSU5DQUxMX1BPV0VSX0JVVFRPTl9CRUhBVklPUl9IQU5HVVApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmICJQb3dlciBidXR0b24gZW5kcyBjYWxsIiBpcyBlbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFBvd2VyIGJ1dHRvbiB3aWxsIGhhbmcgdXAgYW55IGN1cnJlbnQgYWN0aXZlIGNhbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gaHVuZ1VwID0gcGhvbmVTZXJ2LmVuZENhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIklUZWxlcGhvbnkgdGhyZXcgUmVtb3RlRXhjZXB0aW9uIiArIGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIiEhISBVbmFibGUgdG8gZmluZCBJVGVsZXBob255IGludGVyZmFjZSAhISEiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICghc2NyZWVuSXNPbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChoYW5kbGVkICYmIGNvZGUgIT0gS2V5RXZlbnQuS0VZQ09ERV9QT1dFUikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoaGFuZGxlZCAmJiBodW5nVXAgJiYgY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX1BPV0VSKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVNob3VsZFR1cm5PZmZPbktleVVwID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHRyeSB0byB0dXJuIG9mZiB0aGUgc2NyZWVuIGlmIHdlIGRpZG4ndCBhbHJlYWR5IGhhbmcgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TaG91bGRUdXJuT2ZmT25LZXlVcCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtUG93ZXJMb25nUHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXdDb25maWd1cmF0aW9uLmdldEdsb2JhbEFjdGlvbktleVRpbWVvdXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgJj0gfkFDVElPTl9QQVNTX1RPX1VTRVI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVDYWxsYmFja3MobVBvd2VyTG9uZ1ByZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TaG91bGRUdXJuT2ZmT25LZXlVcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVNob3VsZFR1cm5PZmZPbktleVVwID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGdvaG9tZSwgc2xlZXBzOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9FTkRDQUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29ob21lID0gKG1FbmRjYWxsQmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBTZXR0aW5ncy5TeXN0ZW0uRU5EX0JVVFRPTl9CRUhBVklPUl9IT01FKSAhPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwcyA9IChtRW5kY2FsbEJlaGF2aW9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgU2V0dGluZ3MuU3lzdGVtLkVORF9CVVRUT05fQkVIQVZJT1JfU0xFRVApICE9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvaG9tZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5Z3VhcmRBY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNsZWVwcyAmJiAhZ29ob21lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZ29ob21lICYmICFnb0hvbWUoKSAmJiBzbGVlcHMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhleSBtdXN0IGFscmVhZHkgYmUgb24gdGhlIGtleWd1YWQgb3IgaG9tZSBzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ28gdG8gc2xlZXAgaW5zdGVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkknbSB0aXJlZCBtRW5kY2FsbEJlaGF2aW9yPTB4IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1FbmRjYWxsQmVoYXZpb3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgJj0gfkFDVElPTl9QT0tFX1VTRVJfQUNUSVZJVFk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHw9IEFDVElPTl9HT19UT19TTEVFUDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAmPSB+QUNUSU9OX1BBU1NfVE9fVVNFUjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNNZWRpYUtleShjb2RlKSkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMga2V5IG5lZWRzIHRvIGJlIGhhbmRsZWQgZXZlbiBpZiB0aGUgc2NyZWVuIGlzIG9mZi4KKyAgICAgICAgICAgICAgICAvLyBJZiBvdGhlcnMgbmVlZCB0byBiZSBoYW5kbGVkIHdoaWxlIGl0J3Mgb2ZmLCB0aGlzIGlzIGEgcmVhc29uYWJsZQorICAgICAgICAgICAgICAgIC8vIHBhdHRlcm4gdG8gZm9sbG93LgorICAgICAgICAgICAgICAgIGlmICgocmVzdWx0ICYgQUNUSU9OX1BBU1NfVE9fVVNFUikgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGRvIHRoaXMgaWYgd2Ugd291bGQgb3RoZXJ3aXNlIG5vdCBwYXNzIGl0IHRvIHRoZSB1c2VyLiBJbiB0aGF0CisgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UsIHRoZSBQaG9uZVdpbmRvdyBjbGFzcyB3aWxsIGRvIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgaXQgd2lsbAorICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGRvIGl0IGlmIHRoZSBzaG93aW5nIGFwcCBkb2Vzbid0IHByb2Nlc3MgdGhlIGtleSBvbiBpdHMgb3duLgorICAgICAgICAgICAgICAgICAgICBLZXlFdmVudCBrZXlFdmVudCA9IG5ldyBLZXlFdmVudChldmVudC53aGVuLCBldmVudC53aGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd24gPyBLZXlFdmVudC5BQ1RJT05fRE9XTiA6IEtleUV2ZW50LkFDVElPTl9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbUJyb2FkY2FzdFdha2VMb2NrLmFjcXVpcmUoKTsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIucG9zdChuZXcgUGFzc0hlYWRzZXRLZXkoa2V5RXZlbnQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9DQUxMKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgYW4gaW5jb21pbmcgY2FsbCBpcyByaW5naW5nLCBhbnN3ZXIgaXQhCisgICAgICAgICAgICAgICAgLy8gKFdlIGhhbmRsZSB0aGlzIGtleSBoZXJlLCByYXRoZXIgdGhhbiBpbiB0aGUgSW5DYWxsU2NyZWVuLCB0byBtYWtlCisgICAgICAgICAgICAgICAgLy8gc3VyZSB3ZSdsbCByZXNwb25kIHRvIHRoZSBrZXkgZXZlbiBpZiB0aGUgSW5DYWxsU2NyZWVuIGhhc24ndCBjb21lIHRvCisgICAgICAgICAgICAgICAgLy8gdGhlIGZvcmVncm91bmQgeWV0LikKKworICAgICAgICAgICAgICAgIC8vIFdlIGFuc3dlciB0aGUgY2FsbCBvbiB0aGUgRE9XTiBldmVudCwgdG8gYWdyZWUgd2l0aAorICAgICAgICAgICAgICAgIC8vIHRoZSAiZmFsbGJhY2siIGJlaGF2aW9yIGluIHRoZSBJbkNhbGxTY3JlZW4uCisgICAgICAgICAgICAgICAgaWYgKGRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIElUZWxlcGhvbnkgcGhvbmVTZXJ2ID0gZ2V0UGhvbmVJbnRlcmZhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaG9uZVNlcnYgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaG9uZVNlcnYuaXNSaW5naW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiaW50ZXJjZXB0S2V5VHE6IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgQ0FMTCBrZXktZG93biB3aGlsZSByaW5naW5nOiBBbnN3ZXIgdGhlIGNhbGwhIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lU2Vydi5hbnN3ZXJSaW5naW5nQ2FsbCgpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCAqZG9uJ3QqIHBhc3MgdGhpcyBrZXkgdGhydSB0byB0aGUgY3VycmVudCBhY3Rpdml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2hpY2ggaXMgcHJlc3VtYWJseSB0aGUgSW5DYWxsU2NyZWVuLikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICY9IH5BQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiQ0FMTCBidXR0b246IFVuYWJsZSB0byBmaW5kIElUZWxlcGhvbnkgaW50ZXJmYWNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiQ0FMTCBidXR0b246IFJlbW90ZUV4Y2VwdGlvbiBmcm9tIGdldFBob25lSW50ZXJmYWNlKCkiLCBleCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKChjb2RlID09IEtleUV2ZW50LktFWUNPREVfVk9MVU1FX1VQKQorICAgICAgICAgICAgICAgICAgICAgICB8fCAoY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9ET1dOKSkgeworICAgICAgICAgICAgICAgIC8vIElmIGFuIGluY29taW5nIGNhbGwgaXMgcmluZ2luZywgZWl0aGVyIFZPTFVNRSBrZXkgbWVhbnMKKyAgICAgICAgICAgICAgICAvLyAic2lsZW5jZSByaW5nZXIiLiAgV2UgaGFuZGxlIHRoZXNlIGtleXMgaGVyZSwgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAvLyBpbiB0aGUgSW5DYWxsU2NyZWVuLCB0byBtYWtlIHN1cmUgd2UnbGwgcmVzcG9uZCB0byB0aGVtCisgICAgICAgICAgICAgICAgLy8gZXZlbiBpZiB0aGUgSW5DYWxsU2NyZWVuIGhhc24ndCBjb21lIHRvIHRoZSBmb3JlZ3JvdW5kIHlldC4KKworICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHRoZSBET1dOIGV2ZW50IGhlcmUsIHRvIGFncmVlIHdpdGggdGhlICJmYWxsYmFjayIKKyAgICAgICAgICAgICAgICAvLyBiZWhhdmlvciBpbiB0aGUgSW5DYWxsU2NyZWVuLgorICAgICAgICAgICAgICAgIGlmIChkb3duKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJVGVsZXBob255IHBob25lU2VydiA9IGdldFBob25lSW50ZXJmYWNlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGhvbmVTZXJ2ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGhvbmVTZXJ2LmlzUmluZ2luZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5pKFRBRywgImludGVyY2VwdEtleVRxOiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIFZPTFVNRSBrZXktZG93biB3aGlsZSByaW5naW5nOiBTaWxlbmNlIHJpbmdlciEiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2lsZW5jZSB0aGUgcmluZ2VyLiAgKEl0J3Mgc2FmZSB0byBjYWxsIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlbiBpZiB0aGUgcmluZ2VyIGhhcyBhbHJlYWR5IGJlZW4gc2lsZW5jZWQuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZVNlcnYuc2lsZW5jZVJpbmdlcigpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCAqZG9uJ3QqIHBhc3MgdGhpcyBrZXkgdGhydSB0byB0aGUgY3VycmVudCBhY3Rpdml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2hpY2ggaXMgcHJvYmFibHkgdGhlIEluQ2FsbFNjcmVlbi4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAmPSB+QUNUSU9OX1BBU1NfVE9fVVNFUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlZPTFVNRSBidXR0b246IFVuYWJsZSB0byBmaW5kIElUZWxlcGhvbnkgaW50ZXJmYWNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiVk9MVU1FIGJ1dHRvbjogUmVtb3RlRXhjZXB0aW9uIGZyb20gZ2V0UGhvbmVJbnRlcmZhY2UoKSIsIGV4KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2xhc3MgUGFzc0hlYWRzZXRLZXkgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgICAgICAgIEtleUV2ZW50IG1LZXlFdmVudDsKKworICAgICAgICBQYXNzSGVhZHNldEtleShLZXlFdmVudCBrZXlFdmVudCkgeworICAgICAgICAgICAgbUtleUV2ZW50ID0ga2V5RXZlbnQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmlzU3lzdGVtUmVhZHkoKSkgeworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fTUVESUFfQlVUVE9OLCBudWxsKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0tFWV9FVkVOVCwgbUtleUV2ZW50KTsKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5zZW5kT3JkZXJlZEJyb2FkY2FzdChpbnRlbnQsIG51bGwsIG1Ccm9hZGNhc3REb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIsIEFjdGl2aXR5LlJFU1VMVF9PSywgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0RG9uZSA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgbUJyb2FkY2FzdFdha2VMb2NrLnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBCcm9hZGNhc3RSZWNlaXZlciBtRG9ja1JlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBpZiAoSW50ZW50LkFDVElPTl9ET0NLX0VWRU5ULmVxdWFscyhpbnRlbnQuZ2V0QWN0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgbURvY2tNb2RlID0gaW50ZW50LmdldEludEV4dHJhKEludGVudC5FWFRSQV9ET0NLX1NUQVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfVU5ET0NLRUQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBJVWlNb2RlTWFuYWdlciB1aU1vZGVTZXJ2aWNlID0gSVVpTW9kZU1hbmFnZXIuU3R1Yi5hc0ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlTWFuYWdlci5nZXRTZXJ2aWNlKENvbnRleHQuVUlfTU9ERV9TRVJWSUNFKSk7CisgICAgICAgICAgICAgICAgICAgIG1VaU1vZGUgPSB1aU1vZGVTZXJ2aWNlLmdldEN1cnJlbnRNb2RlVHlwZSgpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdXBkYXRlUm90YXRpb24oU3VyZmFjZS5GTEFHU19PUklFTlRBVElPTl9BTklNQVRJT05fRElTQUJMRSk7CisgICAgICAgICAgICB1cGRhdGVPcmllbnRhdGlvbkxpc3RlbmVyTHAoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBib29sZWFuIGlzV2FrZVJlbE1vdmVtZW50VHEoaW50IGRldmljZSwgaW50IGNsYXNzZXMsCisgICAgICAgICAgICBSYXdJbnB1dEV2ZW50IGV2ZW50KSB7CisgICAgICAgIC8vIGlmIGl0J3MgdGFnZ2VkIHdpdGggb25lIG9mIHRoZSB3YWtlIGJpdHMsIGl0IHdha2VzIHVwIHRoZSBkZXZpY2UKKyAgICAgICAgcmV0dXJuICgoZXZlbnQuZmxhZ3MgJiAoRkxBR19XQUtFIHwgRkxBR19XQUtFX0RST1BQRUQpKSAhPSAwKTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBib29sZWFuIGlzV2FrZUFic01vdmVtZW50VHEoaW50IGRldmljZSwgaW50IGNsYXNzZXMsCisgICAgICAgICAgICBSYXdJbnB1dEV2ZW50IGV2ZW50KSB7CisgICAgICAgIC8vIGlmIGl0J3MgdGFnZ2VkIHdpdGggb25lIG9mIHRoZSB3YWtlIGJpdHMsIGl0IHdha2VzIHVwIHRoZSBkZXZpY2UKKyAgICAgICAgcmV0dXJuICgoZXZlbnQuZmxhZ3MgJiAoRkxBR19XQUtFIHwgRkxBR19XQUtFX0RST1BQRUQpKSAhPSAwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgd29ybGQsIHNob3VsZCB0aGlzIGtleSB3YWtlIHVwIHRoZSBkZXZpY2U/CisgICAgICovCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNXYWtlS2V5VHEoUmF3SW5wdXRFdmVudCBldmVudCkgeworICAgICAgICAvLyBUaGVyZSBhcmUgbm90IGtleSBtYXBzIGZvciB0cmFja2JhbGwgZGV2aWNlcywgYnV0IHdlJ2Qgc3RpbGwKKyAgICAgICAgLy8gbGlrZSB0byBoYXZlIHByZXNzaW5nIGl0IHdha2UgdGhlIGRldmljZSB1cCwgc28gZm9yY2UgaXQgaGVyZS4KKyAgICAgICAgaW50IGtleWNvZGUgPSBldmVudC5rZXljb2RlOworICAgICAgICBpbnQgZmxhZ3MgPSBldmVudC5mbGFnczsKKyAgICAgICAgaWYgKGtleWNvZGUgPT0gUmF3SW5wdXRFdmVudC5CVE5fTU9VU0UpIHsKKyAgICAgICAgICAgIGZsYWdzIHw9IFdpbmRvd01hbmFnZXJQb2xpY3kuRkxBR19XQUtFOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoZmxhZ3MKKyAgICAgICAgICAgICAgICAmIChXaW5kb3dNYW5hZ2VyUG9saWN5LkZMQUdfV0FLRSB8IFdpbmRvd01hbmFnZXJQb2xpY3kuRkxBR19XQUtFX0RST1BQRUQpKSAhPSAwOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgc2NyZWVuVHVybmVkT2ZmKGludCB3aHkpIHsKKyAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudCg3MDAwMCwgMCk7CisgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLm9uU2NyZWVuVHVybmVkT2ZmKHdoeSk7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIG1TY3JlZW5PbiA9IGZhbHNlOworICAgICAgICAgICAgdXBkYXRlT3JpZW50YXRpb25MaXN0ZW5lckxwKCk7CisgICAgICAgICAgICB1cGRhdGVMb2NrU2NyZWVuVGltZW91dCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBzY3JlZW5UdXJuZWRPbigpIHsKKyAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudCg3MDAwMCwgMSk7CisgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLm9uU2NyZWVuVHVybmVkT24oKTsKKyAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgeworICAgICAgICAgICAgbVNjcmVlbk9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHVwZGF0ZU9yaWVudGF0aW9uTGlzdGVuZXJMcCgpOworICAgICAgICAgICAgdXBkYXRlTG9ja1NjcmVlblRpbWVvdXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gaXNTY3JlZW5PbigpIHsKKyAgICAgICAgcmV0dXJuIG1TY3JlZW5PbjsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBlbmFibGVLZXlndWFyZChib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgbUtleWd1YXJkTWVkaWF0b3Iuc2V0S2V5Z3VhcmRFbmFibGVkKGVuYWJsZWQpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgZXhpdEtleWd1YXJkU2VjdXJlbHkoT25LZXlndWFyZEV4aXRSZXN1bHQgY2FsbGJhY2spIHsKKyAgICAgICAgbUtleWd1YXJkTWVkaWF0b3IudmVyaWZ5VW5sb2NrKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4ga2V5Z3VhcmRJc1Nob3dpbmdUcSgpIHsKKyAgICAgICAgcmV0dXJuIG1LZXlndWFyZE1lZGlhdG9yLmlzU2hvd2luZ0FuZE5vdEhpZGRlbigpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gaW5LZXlndWFyZFJlc3RyaWN0ZWRLZXlJbnB1dE1vZGUoKSB7CisgICAgICAgIHJldHVybiBtS2V5Z3VhcmRNZWRpYXRvci5pc0lucHV0UmVzdHJpY3RlZCgpOworICAgIH0KKworICAgIHZvaWQgc2VuZENsb3NlU3lzdGVtV2luZG93cygpIHsKKyAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cyhtQ29udGV4dCwgbnVsbCk7CisgICAgfQorCisgICAgdm9pZCBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKFN0cmluZyByZWFzb24pIHsKKyAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cyhtQ29udGV4dCwgcmVhc29uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKENvbnRleHQgY29udGV4dCwgU3RyaW5nIHJlYXNvbikgeworICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmlzU3lzdGVtUmVhZHkoKSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLmNsb3NlU3lzdGVtRGlhbG9ncyhyZWFzb24pOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnQgcm90YXRpb25Gb3JPcmllbnRhdGlvbkx3KGludCBvcmllbnRhdGlvbiwgaW50IGxhc3RSb3RhdGlvbiwKKyAgICAgICAgICAgIGJvb2xlYW4gZGlzcGxheUVuYWJsZWQpIHsKKworICAgICAgICBpZiAobVBvcnRyYWl0Um90YXRpb24gPCAwKSB7CisgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSByb3RhdGlvbiBhbmdsZXMgZm9yIGVhY2ggb3JpZW50YXRpb24gb25jZS4KKyAgICAgICAgICAgIERpc3BsYXkgZCA9ICgoV2luZG93TWFuYWdlciltQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuV0lORE9XX1NFUlZJQ0UpKQorICAgICAgICAgICAgICAgICAgICAuZ2V0RGVmYXVsdERpc3BsYXkoKTsKKyAgICAgICAgICAgIGlmIChkLmdldFdpZHRoKCkgPiBkLmdldEhlaWdodCgpKSB7CisgICAgICAgICAgICAgICAgbVBvcnRyYWl0Um90YXRpb24gPSBTdXJmYWNlLlJPVEFUSU9OXzkwOworICAgICAgICAgICAgICAgIG1MYW5kc2NhcGVSb3RhdGlvbiA9IFN1cmZhY2UuUk9UQVRJT05fMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVBvcnRyYWl0Um90YXRpb24gPSBTdXJmYWNlLlJPVEFUSU9OXzA7CisgICAgICAgICAgICAgICAgbUxhbmRzY2FwZVJvdGF0aW9uID0gU3VyZmFjZS5ST1RBVElPTl85MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fTEFORFNDQVBFOgorICAgICAgICAgICAgICAgICAgICAvL2Fsd2F5cyByZXR1cm4gbGFuZHNjYXBlIGlmIG9yaWVudGF0aW9uIHNldCB0byBsYW5kc2NhcGUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1MYW5kc2NhcGVSb3RhdGlvbjsKKyAgICAgICAgICAgICAgICBjYXNlIEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fUE9SVFJBSVQ6CisgICAgICAgICAgICAgICAgICAgIC8vYWx3YXlzIHJldHVybiBwb3J0cmFpdCBpZiBvcmllbnRhdGlvbiBzZXQgdG8gcG9ydHJhaXQKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1Qb3J0cmFpdFJvdGF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gY2FzZSBmb3Igbm9zZW5zb3IgbWVhbmluZyBpZ25vcmUgc2Vuc29yIGFuZCBjb25zaWRlciBvbmx5IGxpZAorICAgICAgICAgICAgLy8gb3Igb3JpZW50YXRpb24gc2Vuc29yIGRpc2FibGVkCisgICAgICAgICAgICAvL29yIGNhc2UudW5zcGVjaWZpZWQKKyAgICAgICAgICAgIGlmIChtTGlkT3BlbikgeworICAgICAgICAgICAgICAgIHJldHVybiBtTGlkT3BlblJvdGF0aW9uOworICAgICAgICAgICAgfSBlbHNlIGlmIChtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfQ0FSICYmIG1DYXJEb2NrUm90YXRpb24gPj0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtQ2FyRG9ja1JvdGF0aW9uOworICAgICAgICAgICAgfSBlbHNlIGlmIChtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfREVTSyAmJiBtRGVza0RvY2tSb3RhdGlvbiA+PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1EZXNrRG9ja1JvdGF0aW9uOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodXNlU2Vuc29yRm9yT3JpZW50YXRpb25McChvcmllbnRhdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgYXV0byByb3RhdGlvbiBieSBkZWZhdWx0LCBkbyBpdC4KKyAgICAgICAgICAgICAgICAgICAgaW50IGN1clJvdGF0aW9uID0gbU9yaWVudGF0aW9uTGlzdGVuZXIuZ2V0Q3VycmVudFJvdGF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJSb3RhdGlvbiA+PSAwID8gY3VyUm90YXRpb24gOiBsYXN0Um90YXRpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBTdXJmYWNlLlJPVEFUSU9OXzA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBkZXRlY3RTYWZlTW9kZSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGludCBtZW51U3RhdGUgPSBtV2luZG93TWFuYWdlci5nZXRLZXljb2RlU3RhdGUoS2V5RXZlbnQuS0VZQ09ERV9NRU5VKTsKKyAgICAgICAgICAgIGludCBzU3RhdGUgPSBtV2luZG93TWFuYWdlci5nZXRLZXljb2RlU3RhdGUoS2V5RXZlbnQuS0VZQ09ERV9TKTsKKyAgICAgICAgICAgIGludCBkcGFkU3RhdGUgPSBtV2luZG93TWFuYWdlci5nZXREUGFkS2V5Y29kZVN0YXRlKEtleUV2ZW50LktFWUNPREVfRFBBRF9DRU5URVIpOworICAgICAgICAgICAgaW50IHRyYWNrYmFsbFN0YXRlID0gbVdpbmRvd01hbmFnZXIuZ2V0VHJhY2tiYWxsU2NhbmNvZGVTdGF0ZShSYXdJbnB1dEV2ZW50LkJUTl9NT1VTRSk7CisgICAgICAgICAgICBtU2FmZU1vZGUgPSBtZW51U3RhdGUgPiAwIHx8IHNTdGF0ZSA+IDAgfHwgZHBhZFN0YXRlID4gMCB8fCB0cmFja2JhbGxTdGF0ZSA+IDA7CisgICAgICAgICAgICBwZXJmb3JtSGFwdGljRmVlZGJhY2tMdyhudWxsLCBtU2FmZU1vZGUKKyAgICAgICAgICAgICAgICAgICAgPyBIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5TQUZFX01PREVfRU5BQkxFRAorICAgICAgICAgICAgICAgICAgICA6IEhhcHRpY0ZlZWRiYWNrQ29uc3RhbnRzLlNBRkVfTU9ERV9ESVNBQkxFRCwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAobVNhZmVNb2RlKSB7CisgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiU0FGRSBNT0RFIEVOQUJMRUQgKG1lbnU9IiArIG1lbnVTdGF0ZSArICIgcz0iICsgc1N0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICArICIgZHBhZD0iICsgZHBhZFN0YXRlICsgIiB0cmFja2JhbGw9IiArIHRyYWNrYmFsbFN0YXRlICsgIikiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiU0FGRSBNT0RFIG5vdCBlbmFibGVkIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbVNhZmVNb2RlOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gRG9vbSEgKGl0J3MgYWxzbyBsb2NhbCkKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJ3aW5kb3cgbWFuYWdlciBkZWFkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIGxvbmdbXSBnZXRMb25nSW50QXJyYXkoUmVzb3VyY2VzIHIsIGludCByZXNpZCkgeworICAgICAgICBpbnRbXSBhciA9IHIuZ2V0SW50QXJyYXkocmVzaWQpOworICAgICAgICBpZiAoYXIgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgbG9uZ1tdIG91dCA9IG5ldyBsb25nW2FyLmxlbmd0aF07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxhci5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgb3V0W2ldID0gYXJbaV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBzeXN0ZW1SZWFkeSgpIHsKKyAgICAgICAgLy8gdGVsbCB0aGUga2V5Z3VhcmQKKyAgICAgICAgbUtleWd1YXJkTWVkaWF0b3Iub25TeXN0ZW1SZWFkeSgpOworICAgICAgICBhbmRyb2lkLm9zLlN5c3RlbVByb3BlcnRpZXMuc2V0KCJkZXYuYm9vdGNvbXBsZXRlIiwgIjEiKTsgCisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIHVwZGF0ZU9yaWVudGF0aW9uTGlzdGVuZXJMcCgpOworICAgICAgICAgICAgbVN5c3RlbVJlYWR5ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnBvc3QobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKyAgIAorICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgdXNlckFjdGl2aXR5KCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TY3JlZW5Mb2NrVGltZW91dCkgeworICAgICAgICAgICAgaWYgKG1Mb2NrU2NyZWVuVGltZXJBY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAvLyByZXNldCB0aGUgdGltZXIKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVDYWxsYmFja3MobVNjcmVlbkxvY2tUaW1lb3V0KTsKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtU2NyZWVuTG9ja1RpbWVvdXQsIG1Mb2NrU2NyZWVuVGltZW91dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSdW5uYWJsZSBtU2NyZWVuTG9ja1RpbWVvdXQgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgIm1TY3JlZW5Mb2NrVGltZW91dCBhY3RpdmF0aW5nIGtleWd1YXJkIik7CisgICAgICAgICAgICAgICAgbUtleWd1YXJkTWVkaWF0b3IuZG9LZXlndWFyZFRpbWVvdXQoKTsKKyAgICAgICAgICAgICAgICBtTG9ja1NjcmVlblRpbWVyQWN0aXZlID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUxvY2tTY3JlZW5UaW1lb3V0KCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TY3JlZW5Mb2NrVGltZW91dCkgeworICAgICAgICAgICAgYm9vbGVhbiBlbmFibGUgPSAobUFsbG93TG9ja3NjcmVlbldoZW5PbiAmJiBtU2NyZWVuT24gJiYgbUtleWd1YXJkTWVkaWF0b3IuaXNTZWN1cmUoKSk7CisgICAgICAgICAgICBpZiAobUxvY2tTY3JlZW5UaW1lckFjdGl2ZSAhPSBlbmFibGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW5hYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgInNldHRpbmcgbG9ja3NjcmVlbiB0aW1lciIpOworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtU2NyZWVuTG9ja1RpbWVvdXQsIG1Mb2NrU2NyZWVuVGltZW91dCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgTG9nLnYoVEFHLCAiY2xlYXJpbmcgbG9ja3NjcmVlbiB0aW1lciIpOworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVDYWxsYmFja3MobVNjcmVlbkxvY2tUaW1lb3V0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUxvY2tTY3JlZW5UaW1lckFjdGl2ZSA9IGVuYWJsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgZW5hYmxlU2NyZWVuQWZ0ZXJCb290KCkgeworICAgICAgICByZWFkTGlkU3RhdGUoKTsKKyAgICAgICAgdXBkYXRlUm90YXRpb24oU3VyZmFjZS5GTEFHU19PUklFTlRBVElPTl9BTklNQVRJT05fRElTQUJMRSk7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVSb3RhdGlvbihpbnQgYW5pbUZsYWdzKSB7CisgICAgICAgIG1Qb3dlck1hbmFnZXIuc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KG1MaWRPcGVuKTsKKyAgICAgICAgaW50IHJvdGF0aW9uID0gU3VyZmFjZS5ST1RBVElPTl8wOworICAgICAgICBpZiAobUxpZE9wZW4pIHsKKyAgICAgICAgICAgIHJvdGF0aW9uID0gbUxpZE9wZW5Sb3RhdGlvbjsKKyAgICAgICAgfSBlbHNlIGlmIChtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfQ0FSICYmIG1DYXJEb2NrUm90YXRpb24gPj0gMCkgeworICAgICAgICAgICAgcm90YXRpb24gPSBtQ2FyRG9ja1JvdGF0aW9uOworICAgICAgICB9IGVsc2UgaWYgKG1Eb2NrTW9kZSA9PSBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9ERVNLICYmIG1EZXNrRG9ja1JvdGF0aW9uID49IDApIHsKKyAgICAgICAgICAgIHJvdGF0aW9uID0gbURlc2tEb2NrUm90YXRpb247CisgICAgICAgIH0KKyAgICAgICAgLy9pZiBsaWQgaXMgY2xvc2VkIG9yaWVudGF0aW9uIHdpbGwgYmUgcG9ydHJhaXQKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vc2V0IG9yaWVudGF0aW9uIG9uIFdpbmRvd01hbmFnZXIKKyAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldFJvdGF0aW9uKHJvdGF0aW9uLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICBtRmFuY3lSb3RhdGlvbkFuaW1hdGlvbiB8IGFuaW1GbGFncyk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBJZ25vcmUKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBJbnRlbnQgdG8gbGF1bmNoIHRoZSBjdXJyZW50bHkgYWN0aXZlIGRvY2sgYXMgaG9tZS4gIFJldHVybnMKKyAgICAgKiBudWxsIGlmIHRoZSBzdGFuZGFyZCBob21lIHNob3VsZCBiZSBsYXVuY2hlZC4KKyAgICAgKiBAcmV0dXJuCisgICAgICovCisgICAgSW50ZW50IGNyZWF0ZUhvbWVEb2NrSW50ZW50KCkgeworICAgICAgICBJbnRlbnQgaW50ZW50OworICAgICAgICAKKyAgICAgICAgLy8gV2hhdCBob21lIGRvZXMgaXMgYmFzZWQgb24gdGhlIG1vZGUsIG5vdCB0aGUgZG9jayBzdGF0ZS4gIFRoYXQKKyAgICAgICAgLy8gaXMsIHdoZW4gaW4gY2FyIG1vZGUgeW91IHNob3VsZCBiZSB0YWtlbiB0byBjYXIgaG9tZSByZWdhcmRsZXNzCisgICAgICAgIC8vIG9mIHdoZXRoZXIgd2UgYXJlIGFjdHVhbGx5IGluIGEgY2FyIGRvY2suCisgICAgICAgIGlmIChtVWlNb2RlID09IENvbmZpZ3VyYXRpb24uVUlfTU9ERV9UWVBFX0NBUikgeworICAgICAgICAgICAgaW50ZW50ID0gbUNhckRvY2tJbnRlbnQ7CisgICAgICAgIH0gZWxzZSBpZiAobVVpTW9kZSA9PSBDb25maWd1cmF0aW9uLlVJX01PREVfVFlQRV9ERVNLKSB7CisgICAgICAgICAgICBpbnRlbnQgPSBtRGVza0RvY2tJbnRlbnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQWN0aXZpdHlJbmZvIGFpID0gaW50ZW50LnJlc29sdmVBY3Rpdml0eUluZm8oCisgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKSwgUGFja2FnZU1hbmFnZXIuR0VUX01FVEFfREFUQSk7CisgICAgICAgIGlmIChhaSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGFpLm1ldGFEYXRhICE9IG51bGwgJiYgYWkubWV0YURhdGEuZ2V0Qm9vbGVhbihJbnRlbnQuTUVUQURBVEFfRE9DS19IT01FKSkgeworICAgICAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChpbnRlbnQpOworICAgICAgICAgICAgaW50ZW50LnNldENsYXNzTmFtZShhaS5wYWNrYWdlTmFtZSwgYWkubmFtZSk7CisgICAgICAgICAgICByZXR1cm4gaW50ZW50OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdGFydERvY2tPckhvbWUoKSB7CisgICAgICAgIEludGVudCBkb2NrID0gY3JlYXRlSG9tZURvY2tJbnRlbnQoKTsKKyAgICAgICAgaWYgKGRvY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KGRvY2spOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1Db250ZXh0LnN0YXJ0QWN0aXZpdHkobUhvbWVJbnRlbnQpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBnb2VzIHRvIHRoZSBob21lIHNjcmVlbgorICAgICAqIEByZXR1cm4gd2hldGhlciBpdCBkaWQgYW55dGhpbmcKKyAgICAgKi8KKyAgICBib29sZWFuIGdvSG9tZSgpIHsKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAvLyBUaGlzIGNvZGUgYWx3YXlzIGJyaW5ncyBob21lIHRvIHRoZSBmcm9udC4KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS5zdG9wQXBwU3dpdGNoZXMoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKCk7CisgICAgICAgICAgICBzdGFydERvY2tPckhvbWUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMgY29kZSBicmluZ3MgaG9tZSB0byB0aGUgZnJvbnQgb3IsIGlmIGl0IGlzIGFscmVhZHkKKyAgICAgICAgICAgIC8vIGF0IHRoZSBmcm9udCwgcHV0cyB0aGUgZGV2aWNlIHRvIHNsZWVwLgorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoU3lzdGVtUHJvcGVydGllcy5nZXRJbnQoInBlcnNpc3Quc3lzLnV0cy10ZXN0LW1vZGUiLCAwKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8vLyBSb2xsIGJhY2sgRW5kY2FsbEJlaGF2aW9yIGFzIHRoZSBjdXBjYWtlIGRlc2lnbiB0byBwYXNzIFAxIGxhYiBlbnRyeS4KKyAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiVVRTLVRFU1QtTU9ERSIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuc3RvcEFwcFN3aXRjaGVzKCk7CisgICAgICAgICAgICAgICAgICAgIHNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoKTsKKyAgICAgICAgICAgICAgICAgICAgSW50ZW50IGRvY2sgPSBjcmVhdGVIb21lRG9ja0ludGVudCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9jayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRBY3Rpdml0eShudWxsLCBkb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY2sucmVzb2x2ZVR5cGVJZk5lZWRlZChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgMCwgbnVsbCwgbnVsbCwgMCwgdHJ1ZSAvKiBvbmx5SWZOZWVkZWQqLywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9JTlRFTlRfVE9fQ0FMTEVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRBY3Rpdml0eShudWxsLCBtSG9tZUludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhvbWVJbnRlbnQucmVzb2x2ZVR5cGVJZk5lZWRlZChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIDAsIG51bGwsIG51bGwsIDAsIHRydWUgLyogb25seUlmTmVlZGVkKi8sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IElBY3Rpdml0eU1hbmFnZXIuU1RBUlRfUkVUVVJOX0lOVEVOVF9UT19DQUxMRVIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIC8vIGJ1bW1lciwgdGhlIGFjdGl2aXR5IG1hbmFnZXIsIHdoaWNoIGlzIGluIHRoaXMgcHJvY2VzcywgaXMgZGVhZAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXRDdXJyZW50T3JpZW50YXRpb25MdyhpbnQgbmV3T3JpZW50YXRpb24pIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgeworICAgICAgICAgICAgaWYgKG5ld09yaWVudGF0aW9uICE9IG1DdXJyZW50QXBwT3JpZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICBtQ3VycmVudEFwcE9yaWVudGF0aW9uID0gbmV3T3JpZW50YXRpb247CisgICAgICAgICAgICAgICAgdXBkYXRlT3JpZW50YXRpb25MaXN0ZW5lckxwKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBwZXJmb3JtSGFwdGljRmVlZGJhY2tMdyhXaW5kb3dTdGF0ZSB3aW4sIGludCBlZmZlY3RJZCwgYm9vbGVhbiBhbHdheXMpIHsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBoYXB0aWNzRGlzYWJsZWQgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5IQVBUSUNfRkVFREJBQ0tfRU5BQkxFRCwgMCkgPT0gMDsKKyAgICAgICAgaWYgKCFhbHdheXMgJiYgKGhhcHRpY3NEaXNhYmxlZCB8fCBtS2V5Z3VhcmRNZWRpYXRvci5pc1Nob3dpbmdBbmROb3RIaWRkZW4oKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBsb25nW10gcGF0dGVybiA9IG51bGw7CisgICAgICAgIHN3aXRjaCAoZWZmZWN0SWQpIHsKKyAgICAgICAgICAgIGNhc2UgSGFwdGljRmVlZGJhY2tDb25zdGFudHMuTE9OR19QUkVTUzoKKyAgICAgICAgICAgICAgICBwYXR0ZXJuID0gbUxvbmdQcmVzc1ZpYmVQYXR0ZXJuOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5WSVJUVUFMX0tFWToKKyAgICAgICAgICAgICAgICBwYXR0ZXJuID0gbVZpcnR1YWxLZXlWaWJlUGF0dGVybjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSGFwdGljRmVlZGJhY2tDb25zdGFudHMuS0VZQk9BUkRfVEFQOgorICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBtS2V5Ym9hcmRUYXBWaWJlUGF0dGVybjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSGFwdGljRmVlZGJhY2tDb25zdGFudHMuU0FGRV9NT0RFX0RJU0FCTEVEOgorICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBtU2FmZU1vZGVEaXNhYmxlZFZpYmVQYXR0ZXJuOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5TQUZFX01PREVfRU5BQkxFRDoKKyAgICAgICAgICAgICAgICBwYXR0ZXJuID0gbVNhZmVNb2RlRW5hYmxlZFZpYmVQYXR0ZXJuOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBhdHRlcm4ubGVuZ3RoID09IDEpIHsKKyAgICAgICAgICAgIC8vIE9uZS1zaG90IHZpYnJhdGlvbgorICAgICAgICAgICAgbVZpYnJhdG9yLnZpYnJhdGUocGF0dGVyblswXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBQYXR0ZXJuIHZpYnJhdGlvbgorICAgICAgICAgICAgbVZpYnJhdG9yLnZpYnJhdGUocGF0dGVybiwgLTEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBrZXlGZWVkYmFja0Zyb21JbnB1dChLZXlFdmVudCBldmVudCkgeworICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gS2V5RXZlbnQuQUNUSU9OX0RPV04KKyAgICAgICAgICAgICAgICAmJiAoZXZlbnQuZ2V0RmxhZ3MoKSZLZXlFdmVudC5GTEFHX1ZJUlRVQUxfSEFSRF9LRVkpICE9IDApIHsKKyAgICAgICAgICAgIHBlcmZvcm1IYXB0aWNGZWVkYmFja0x3KG51bGwsIEhhcHRpY0ZlZWRiYWNrQ29uc3RhbnRzLlZJUlRVQUxfS0VZLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2NyZWVuT25TdG9wcGVkTHcoKSB7CisgICAgICAgIGlmICghbUtleWd1YXJkTWVkaWF0b3IuaXNTaG93aW5nQW5kTm90SGlkZGVuKCkgJiYgbVBvd2VyTWFuYWdlci5pc1NjcmVlbk9uKCkpIHsKKyAgICAgICAgICAgIGxvbmcgY3VyVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgbVBvd2VyTWFuYWdlci51c2VyQWN0aXZpdHkoY3VyVGltZSwgZmFsc2UsIExvY2FsUG93ZXJNYW5hZ2VyLk9USEVSX0VWRU5UKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGFsbG93S2V5UmVwZWF0KCkgeworICAgICAgICAvLyBkaXNhYmxlIGtleSByZXBlYXQgd2hlbiBzY3JlZW4gaXMgb2ZmCisgICAgICAgIHJldHVybiBtU2NyZWVuT247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Qb2xpY3kuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUG9saWN5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdmM2U5MQotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUG9saWN5LmphdmEKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LklQb2xpY3k7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVMYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZVdpbmRvdzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZVdpbmRvd01hbmFnZXI7CisKKy8qKgorICoge0BoaWRlfQorICovCisKKy8vIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcG9saWN5IGludGVyZmFjZSB0aGF0IHNwYXducyB0aGUgcmlnaHQKKy8vIHNldCBvZiBvYmplY3RzCitwdWJsaWMgY2xhc3MgUG9saWN5IGltcGxlbWVudHMgSVBvbGljeSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJQaG9uZVBvbGljeSI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBwcmVsb2FkX2NsYXNzZXMgPSB7CisgICAgICAgICJjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZUxheW91dEluZmxhdGVyIiwKKyAgICAgICAgImNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLlBob25lV2luZG93IiwKKyAgICAgICAgImNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLlBob25lV2luZG93JDEiLAorICAgICAgICAiY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckQ29udGV4dE1lbnVDYWxsYmFjayIsCisgICAgICAgICJjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZVdpbmRvdyREZWNvclZpZXciLAorICAgICAgICAiY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckUGFuZWxGZWF0dXJlU3RhdGUiLAorICAgICAgICAiY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckUGFuZWxGZWF0dXJlU3RhdGUkU2F2ZWRTdGF0ZSIsCisgICAgfTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBwcmVsb2FkIHNvbWUgcG9saWN5IHNwZWNpZmljIGNsYXNzZXMgd2hlbgorICAgICAgICAvLyB0aGUgcG9saWN5IGdldHMgbG9hZGVkLgorICAgICAgICBmb3IgKFN0cmluZyBzIDogcHJlbG9hZF9jbGFzc2VzKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIENsYXNzLmZvck5hbWUocyk7CisgICAgICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiQ291bGQgbm90IHByZWxvYWQgY2xhc3MgZm9yIHBob25lIHBvbGljeTogIiArIHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIFBob25lV2luZG93IG1ha2VOZXdXaW5kb3coQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiBuZXcgUGhvbmVXaW5kb3coY29udGV4dCk7CisgICAgfQorCisgICAgcHVibGljIFBob25lTGF5b3V0SW5mbGF0ZXIgbWFrZU5ld0xheW91dEluZmxhdGVyKENvbnRleHQgY29udGV4dCkgeworICAgICAgICByZXR1cm4gbmV3IFBob25lTGF5b3V0SW5mbGF0ZXIoY29udGV4dCk7CisgICAgfQorCisgICAgcHVibGljIFBob25lV2luZG93TWFuYWdlciBtYWtlTmV3V2luZG93TWFuYWdlcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQaG9uZVdpbmRvd01hbmFnZXIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bvd2VyRGlhbG9nLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bvd2VyRGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUzNWJkNwotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUG93ZXJEaWFsb2cuamF2YQpAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCitpbXBvcnQgYW5kcm9pZC5hcHAuRGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLlN0YXR1c0Jhck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5Mb2NhbFBvd2VyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuU2h1dGRvd25UaHJlYWQ7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LklUZWxlcGhvbnk7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3Lk9uS2V5TGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworCisvKioKKyAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgR2xvYmFsQWN0aW9uc30gaW5zdGVhZC4KKyAqLworcHVibGljIGNsYXNzIFBvd2VyRGlhbG9nIGV4dGVuZHMgRGlhbG9nIGltcGxlbWVudHMgT25DbGlja0xpc3RlbmVyLAorICAgICAgICBPbktleUxpc3RlbmVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlBvd2VyRGlhbG9nIjsKKworICAgIHN0YXRpYyBwcml2YXRlIFN0YXR1c0Jhck1hbmFnZXIgc1N0YXR1c0JhcjsKKyAgICBwcml2YXRlIEJ1dHRvbiBtS2V5Z3VhcmQ7CisgICAgcHJpdmF0ZSBCdXR0b24gbVBvd2VyOworICAgIHByaXZhdGUgQnV0dG9uIG1SYWRpb1Bvd2VyOworICAgIHByaXZhdGUgQnV0dG9uIG1TaWxlbnQ7CisKKyAgICBwcml2YXRlIExvY2FsUG93ZXJNYW5hZ2VyIG1Qb3dlck1hbmFnZXI7CisKKyAgICBwdWJsaWMgUG93ZXJEaWFsb2coQ29udGV4dCBjb250ZXh0LCBMb2NhbFBvd2VyTWFuYWdlciBwb3dlck1hbmFnZXIpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIG1Qb3dlck1hbmFnZXIgPSBwb3dlck1hbmFnZXI7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOworCisgICAgICAgIENvbnRleHQgY29udGV4dCA9IGdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoc1N0YXR1c0JhciA9PSBudWxsKSB7CisgICAgICAgICAgICBzU3RhdHVzQmFyID0gKFN0YXR1c0Jhck1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RBVFVTX0JBUl9TRVJWSUNFKTsKKyAgICAgICAgfQorCisgICAgICAgIHNldENvbnRlbnRWaWV3KGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnBvd2VyX2RpYWxvZyk7CisKKyAgICAgICAgZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9ESUFMT0cpOworICAgICAgICBpZiAoIWdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfc2Zfc2xvd0JsdXIpKSB7CisgICAgICAgICAgICBnZXRXaW5kb3coKS5zZXRGbGFncyhXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5ELAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5EKTsKKyAgICAgICAgfQorICAgICAgICBnZXRXaW5kb3coKS5zZXRGbGFncyhXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU0sCisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNKTsKKworICAgICAgICBzZXRUaXRsZShjb250ZXh0LmdldFRleHQoUi5zdHJpbmcucG93ZXJfZGlhbG9nKSk7CisKKyAgICAgICAgbUtleWd1YXJkID0gKEJ1dHRvbikgZmluZFZpZXdCeUlkKFIuaWQua2V5Z3VhcmQpOworICAgICAgICBtUG93ZXIgPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5vZmYpOworICAgICAgICBtUmFkaW9Qb3dlciA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLnJhZGlvX3Bvd2VyKTsKKyAgICAgICAgbVNpbGVudCA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLnNpbGVudCk7CisKKyAgICAgICAgaWYgKG1LZXlndWFyZCAhPSBudWxsKSB7CisgICAgICAgICAgICBtS2V5Z3VhcmQuc2V0T25LZXlMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1LZXlndWFyZC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Qb3dlciAhPSBudWxsKSB7CisgICAgICAgICAgICBtUG93ZXIuc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICB9CisgICAgICAgIGlmIChtUmFkaW9Qb3dlciAhPSBudWxsKSB7CisgICAgICAgICAgICBtUmFkaW9Qb3dlci5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1TaWxlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgbVNpbGVudC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICAvLyBYWFg6IEhBQ0sgZm9yIG5vdyBoaWRlIHRoZSBzaWxlbnQgdW50aWwgd2UgZ2V0IG11dGUgc3VwcG9ydAorICAgICAgICAgICAgbVNpbGVudC5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgIH0KKworICAgICAgICBDaGFyU2VxdWVuY2UgdGV4dDsKKworICAgICAgICAvLyBzZXQgdGhlIGtleWd1YXJkIGJ1dHRvbidzIHRleHQKKyAgICAgICAgdGV4dCA9IGNvbnRleHQuZ2V0VGV4dChSLnN0cmluZy5zY3JlZW5fbG9jayk7CisgICAgICAgIG1LZXlndWFyZC5zZXRUZXh0KHRleHQpOworICAgICAgICBtS2V5Z3VhcmQucmVxdWVzdEZvY3VzKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIElUZWxlcGhvbnkgcGhvbmUgPSBJVGVsZXBob255LlN0dWIuYXNJbnRlcmZhY2UoU2VydmljZU1hbmFnZXIuY2hlY2tTZXJ2aWNlKCJwaG9uZSIpKTsKKyAgICAgICAgICAgIGlmIChwaG9uZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGV4dCA9IHBob25lLmlzUmFkaW9PbigpID8gY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgLmdldFRleHQoUi5zdHJpbmcudHVybl9vZmZfcmFkaW8pIDogY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgLmdldFRleHQoUi5zdHJpbmcudHVybl9vbl9yYWRpbyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgLy8gaWdub3JlIGl0CisgICAgICAgIH0KKworICAgICAgICBtUmFkaW9Qb3dlci5zZXRUZXh0KHRleHQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgIHRoaXMuZGlzbWlzcygpOworICAgICAgICBpZiAodiA9PSBtUG93ZXIpIHsKKyAgICAgICAgICAgIC8vIHNodXRkb3duIGJ5IG1ha2luZyBzdXJlIHJhZGlvIGFuZCBwb3dlciBhcmUgaGFuZGxlZCBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgIFNodXRkb3duVGhyZWFkLnNodXRkb3duKGdldENvbnRleHQoKSwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtUmFkaW9Qb3dlcikgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBJVGVsZXBob255IHBob25lID0gSVRlbGVwaG9ueS5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyLmNoZWNrU2VydmljZSgicGhvbmUiKSk7CisgICAgICAgICAgICAgICAgaWYgKHBob25lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcGhvbmUudG9nZ2xlUmFkaW9Pbk9mZigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBpdAorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVNpbGVudCkgeworICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nCisgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtS2V5Z3VhcmQpIHsKKyAgICAgICAgICAgIGlmICh2LmlzSW5Ub3VjaE1vZGUoKSkgeworICAgICAgICAgICAgICAgIC8vIG9ubHkgaW4gdG91Y2ggbW9kZSBmb3IgdGhlIHJlYXNvbnMgZXhwbGFpbmVkIGluIG9uS2V5LgorICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpOworICAgICAgICAgICAgICAgIG1Qb3dlck1hbmFnZXIuZ29Ub1NsZWVwKFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpICsgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBvbktleShWaWV3IHYsIGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBUaGUgYWN0aXZhdGUga2V5Z3VhcmQgYnV0dG9uIG5lZWRzIHRvIHB1dCB0aGUgZGV2aWNlIHRvIHNsZWVwIG9uIHRoZQorICAgICAgICAvLyBrZXkgdXAgZXZlbnQuIElmIHdlIHRyeSB0byBwdXQgaXQgdG8gc2xlZXAgb24gdGhlIGNsaWNrIG9yIGRvd24KKyAgICAgICAgLy8gYWN0aW9uCisgICAgICAgIC8vIHRoZSB0aGUgdXAgYWN0aW9uIHdpbGwgY2F1c2UgdGhlIGRldmljZSB0byB3YWtlIGJhY2sgdXAuCisKKyAgICAgICAgLy8gTG9nLmkoVEFHLCAia2V5Q29kZTogIiArIGtleUNvZGUgKyAiIGFjdGlvbjogIiArIGV2ZW50LmdldEFjdGlvbigpKTsKKyAgICAgICAgaWYgKGtleUNvZGUgIT0gS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0NFTlRFUgorICAgICAgICAgICAgICAgIHx8IGV2ZW50LmdldEFjdGlvbigpICE9IEtleUV2ZW50LkFDVElPTl9VUCkgeworICAgICAgICAgICAgLy8gTG9nLmkoVEFHLCAiZ2V0dGluZyBvdXQgb2YgZG9kZ2UuLi4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExvZy5pKFRBRywgIkNsaWNrZWQgbUtleWd1YXJkISBkaW1pc3NpbmcgZGlhbG9nIik7CisgICAgICAgIHRoaXMuZGlzbWlzcygpOworICAgICAgICAvLyBMb2cuaShUQUcsICJvbktleTogdHVybmluZyBvZmYgdGhlIHNjcmVlbi4uLiIpOworICAgICAgICAvLyBYWFg6IFRoaXMgaXMgYSBoYWNrIGZvciBub3cKKyAgICAgICAgbVBvd2VyTWFuYWdlci5nb1RvU2xlZXAoZXZlbnQuZ2V0RXZlbnRUaW1lKCkgKyAxKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2hvdygpIHsKKyAgICAgICAgc3VwZXIuc2hvdygpOworICAgICAgICBMb2cuZChUQUcsICJzaG93Li4uIGRpc2FibGluZyBleHBhbmQiKTsKKyAgICAgICAgc1N0YXR1c0Jhci5kaXNhYmxlKFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRpc21pc3MoKSB7CisgICAgICAgIHN1cGVyLmRpc21pc3MoKTsKKyAgICAgICAgTG9nLmQoVEFHLCAiZGlzbWlzcy4uLiByZWVuYWJsaW5nIGV4cGFuZCIpOworICAgICAgICBzU3RhdHVzQmFyLmRpc2FibGUoU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PTkUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUmVjZW50QXBwbGljYXRpb25zQmFja2dyb3VuZC5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9SZWNlbnRBcHBsaWNhdGlvbnNCYWNrZ3JvdW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M5OWU4NwotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUmVjZW50QXBwbGljYXRpb25zQmFja2dyb3VuZC5qYXZhCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuR3Jhdml0eTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7CisKKy8qKgorICogQSB2ZXJ0aWNhbCBsaW5lYXIgbGF5b3V0LiAgSG93ZXZlciwgaW5zdGVhZCBvZiBkcmF3aW5nIHRoZSBiYWNrZ3JvdW5kCisgKiBiZWhuZCB0aGUgaXRlbXMsIGl0IGRyYXdzIHRoZSBiYWNrZ3JvdW5kIG91dHNpZGUgdGhlIGl0ZW1zIGJhc2VkIG9uIHRoZQorICogcGFkZGluZy4gIElmIHRoZXJlIGlzbid0IGVub3VnaCByb29tIHRvIGRyYXcgYm90aCwgaXQgY2xpcHMgdGhlIGJhY2tncm91bmQKKyAqIGluc3RlYWQgb2YgdGhlIGNvbnRlbnRzLgorICovCitwdWJsaWMgY2xhc3MgUmVjZW50QXBwbGljYXRpb25zQmFja2dyb3VuZCBleHRlbmRzIExpbmVhckxheW91dCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJSZWNlbnRBcHBsaWNhdGlvbnNCYWNrZ3JvdW5kIjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtQmFja2dyb3VuZFNpemVDaGFuZ2VkOworICAgIHByaXZhdGUgRHJhd2FibGUgbUJhY2tncm91bmQ7CisgICAgcHJpdmF0ZSBSZWN0IG1UbXAwID0gbmV3IFJlY3QoKTsKKyAgICBwcml2YXRlIFJlY3QgbVRtcDEgPSBuZXcgUmVjdCgpOworCisgICAgcHVibGljIFJlY2VudEFwcGxpY2F0aW9uc0JhY2tncm91bmQoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHRoaXMoY29udGV4dCwgbnVsbCk7CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUmVjZW50QXBwbGljYXRpb25zQmFja2dyb3VuZChDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdCgpIHsKKyAgICAgICAgbUJhY2tncm91bmQgPSBnZXRCYWNrZ3JvdW5kKCk7CisgICAgICAgIHNldEJhY2tncm91bmREcmF3YWJsZShudWxsKTsKKyAgICAgICAgc2V0UGFkZGluZygwLCAwLCAwLCAwKTsKKyAgICAgICAgc2V0R3Jhdml0eShHcmF2aXR5LkNFTlRFUik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gc2V0RnJhbWUoaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkgeworICAgICAgICBzZXRXaWxsTm90RHJhdyhmYWxzZSk7CisgICAgICAgIGlmIChtTGVmdCAhPSBsZWZ0IHx8IG1SaWdodCAhPSByaWdodCB8fCBtVG9wICE9IHRvcCB8fCBtQm90dG9tICE9IGJvdHRvbSkgeworICAgICAgICAgICAgbUJhY2tncm91bmRTaXplQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1cGVyLnNldEZyYW1lKGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gdmVyaWZ5RHJhd2FibGUoRHJhd2FibGUgd2hvKSB7CisgICAgICAgIHJldHVybiB3aG8gPT0gbUJhY2tncm91bmQgfHwgc3VwZXIudmVyaWZ5RHJhd2FibGUod2hvKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBkcmF3YWJsZVN0YXRlQ2hhbmdlZCgpIHsKKyAgICAgICAgRHJhd2FibGUgZCA9IG1CYWNrZ3JvdW5kOworICAgICAgICBpZiAoZCAhPSBudWxsICYmIGQuaXNTdGF0ZWZ1bCgpKSB7CisgICAgICAgICAgICBkLnNldFN0YXRlKGdldERyYXdhYmxlU3RhdGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIuZHJhd2FibGVTdGF0ZUNoYW5nZWQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBkcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgZmluYWwgRHJhd2FibGUgYmFja2dyb3VuZCA9IG1CYWNrZ3JvdW5kOworICAgICAgICBpZiAoYmFja2dyb3VuZCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAobUJhY2tncm91bmRTaXplQ2hhbmdlZCkgeworICAgICAgICAgICAgICAgIG1CYWNrZ3JvdW5kU2l6ZUNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBSZWN0IGNobGQgPSBtVG1wMDsKKyAgICAgICAgICAgICAgICBSZWN0IGJrZyA9IG1UbXAxOworICAgICAgICAgICAgICAgIG1CYWNrZ3JvdW5kLmdldFBhZGRpbmcoYmtnKTsKKyAgICAgICAgICAgICAgICBnZXRDaGlsZEJvdW5kcyhjaGxkKTsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgY2xhbXAgdG8gdGhpcyB2aWV3J3MgYm91bmRzLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQsCisgICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgZHJhd2luZyBpcyBjbGlwcGVkLgorICAgICAgICAgICAgICAgIGZpbmFsIGludCB0b3AgPSBjaGxkLnRvcCAtIGJrZy50b3A7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IGJvdHRvbSA9IGNobGQuYm90dG9tICsgYmtnLmJvdHRvbTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgYmFja2dyb3VuZCBoZXJlIGlzIGEgZ3JhZGllbnQgdGhhdCB3YW50cyB0bworICAgICAgICAgICAgICAgIC8vIGV4dGVuZCB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgc2NyZWVuICh3aGF0ZXZlciB0aGF0CisgICAgICAgICAgICAgICAgLy8gbWF5IGJlKS4KKyAgICAgICAgICAgICAgICBpbnQgbGVmdCwgcmlnaHQ7CisgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbGltaXRzIHRoZSB3aWR0aCBvZiB0aGUgZHJhd2FibGUuCisgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBjaGxkLmxlZnQgLSBia2cubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBjaGxkLnJpZ2h0ICsgYmtnLnJpZ2h0OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZXhwYW5kcyBpdCB0byBmdWxsIHdpZHRoLgorICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBnZXRSaWdodCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLnNldEJvdW5kcyhsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1CYWNrZ3JvdW5kLmRyYXcoY2FudmFzKTsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIGFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQgcCA9IG5ldyBhbmRyb2lkLmdyYXBoaWNzLlBhaW50KCk7CisgICAgICAgICAgICBwLnNldENvbG9yKDB4ODhmZmZmMDApOworICAgICAgICAgICAgY2FudmFzLmRyYXdSZWN0KGJhY2tncm91bmQuZ2V0Qm91bmRzKCksIHApOworICAgICAgICB9CisgICAgICAgIGNhbnZhcy5kcmF3QVJHQigoaW50KSgwLjc1KjB4ZmYpLCAwLCAwLCAwKTsKKworICAgICAgICBzdXBlci5kcmF3KGNhbnZhcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgbUJhY2tncm91bmQuc2V0Q2FsbGJhY2sodGhpcyk7CisgICAgICAgIHNldFdpbGxOb3REcmF3KGZhbHNlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkRldGFjaGVkRnJvbVdpbmRvdygpIHsKKyAgICAgICAgc3VwZXIub25EZXRhY2hlZEZyb21XaW5kb3coKTsKKyAgICAgICAgbUJhY2tncm91bmQuc2V0Q2FsbGJhY2sobnVsbCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBnZXRDaGlsZEJvdW5kcyhSZWN0IHIpIHsKKyAgICAgICAgci5sZWZ0ID0gci50b3AgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICAgICAgci5ib3R0b20gPSByLnJpZ2h0ID0gSW50ZWdlci5NSU5fVkFMVUU7CisgICAgICAgIGZpbmFsIGludCBOID0gZ2V0Q2hpbGRDb3VudCgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICBWaWV3IHYgPSBnZXRDaGlsZEF0KGkpOworICAgICAgICAgICAgaWYgKHYuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuVklTSUJMRSkgeworICAgICAgICAgICAgICAgIHIubGVmdCA9IE1hdGgubWluKHIubGVmdCwgdi5nZXRMZWZ0KCkpOworICAgICAgICAgICAgICAgIHIudG9wID0gTWF0aC5taW4oci50b3AsIHYuZ2V0VG9wKCkpOworICAgICAgICAgICAgICAgIHIucmlnaHQgPSBNYXRoLm1heChyLnJpZ2h0LCB2LmdldFJpZ2h0KCkpOworICAgICAgICAgICAgICAgIHIuYm90dG9tID0gTWF0aC5tYXgoci5ib3R0b20sIHYuZ2V0Qm90dG9tKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9SZWNlbnRBcHBsaWNhdGlvbnNEaWFsb2cuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUmVjZW50QXBwbGljYXRpb25zRGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYwOGI5YQotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUmVjZW50QXBwbGljYXRpb25zRGlhbG9nLmphdmEKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYXBwLkRpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5TdGF0dXNCYXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5BY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgUmVjZW50QXBwbGljYXRpb25zRGlhbG9nIGV4dGVuZHMgRGlhbG9nIGltcGxlbWVudHMgT25DbGlja0xpc3RlbmVyIHsKKyAgICAvLyBFbGVtZW50cyBmb3IgZGVidWdnaW5nIHN1cHBvcnQKKy8vICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9HX1RBRyA9ICJSZWNlbnRBcHBsaWNhdGlvbnNEaWFsb2ciOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREJHX0ZPUkNFX0VNUFRZX0xJU1QgPSBmYWxzZTsKKworICAgIHN0YXRpYyBwcml2YXRlIFN0YXR1c0Jhck1hbmFnZXIgc1N0YXR1c0JhcjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOVU1fQlVUVE9OUyA9IDg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9SRUNFTlRfVEFTS1MgPSBOVU1fQlVUVE9OUyAqIDI7ICAgIC8vIGFsbG93IGZvciBzb21lIGRpc2NhcmRzCisKKyAgICBmaW5hbCBUZXh0Vmlld1tdIG1JY29ucyA9IG5ldyBUZXh0Vmlld1tOVU1fQlVUVE9OU107CisgICAgVmlldyBtTm9BcHBzVGV4dDsKKyAgICBJbnRlbnRGaWx0ZXIgbUJyb2FkY2FzdEludGVudEZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoSW50ZW50LkFDVElPTl9DTE9TRV9TWVNURU1fRElBTE9HUyk7CisKKyAgICBwcml2YXRlIGludCBtSWNvblNpemU7CisKKyAgICBwdWJsaWMgUmVjZW50QXBwbGljYXRpb25zRGlhbG9nKENvbnRleHQgY29udGV4dCkgeworICAgICAgICBzdXBlcihjb250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlLlRoZW1lX0RpYWxvZ19SZWNlbnRBcHBsaWNhdGlvbnMpOworCisgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXNvdXJjZXMgPSBjb250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICBtSWNvblNpemUgPSAoaW50KSByZXNvdXJjZXMuZ2V0RGltZW5zaW9uKGFuZHJvaWQuUi5kaW1lbi5hcHBfaWNvbl9zaXplKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXZSBjcmVhdGUgdGhlIHJlY2VudCBhcHBsaWNhdGlvbnMgZGlhbG9nIGp1c3Qgb25jZSwgYW5kIGl0IHN0YXlzIGFyb3VuZCAoaGlkZGVuKQorICAgICAqIHVudGlsIGFjdGl2YXRlZCBieSB0aGUgdXNlci4KKyAgICAgKgorICAgICAqIEBzZWUgUGhvbmVXaW5kb3dNYW5hZ2VyI3Nob3dSZWNlbnRBcHBzRGlhbG9nCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOworCisgICAgICAgIENvbnRleHQgY29udGV4dCA9IGdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoc1N0YXR1c0JhciA9PSBudWxsKSB7CisgICAgICAgICAgICBzU3RhdHVzQmFyID0gKFN0YXR1c0Jhck1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RBVFVTX0JBUl9TRVJWSUNFKTsKKyAgICAgICAgfQorCisgICAgICAgIFdpbmRvdyB3aW5kb3cgPSBnZXRXaW5kb3coKTsKKyAgICAgICAgd2luZG93LnJlcXVlc3RGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX05PX1RJVExFKTsKKyAgICAgICAgd2luZG93LnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fRElBTE9HKTsKKyAgICAgICAgd2luZG93LnNldEZsYWdzKFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTSwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU0pOworICAgICAgICB3aW5kb3cuc2V0VGl0bGUoIlJlY2VudHMiKTsKKworICAgICAgICBzZXRDb250ZW50Vmlldyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5yZWNlbnRfYXBwc19kaWFsb2cpOworCisgICAgICAgIGZpbmFsIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIHBhcmFtcyA9IHdpbmRvdy5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgIHBhcmFtcy53aWR0aCA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVDsKKyAgICAgICAgcGFyYW1zLmhlaWdodCA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVDsKKyAgICAgICAgd2luZG93LnNldEF0dHJpYnV0ZXMocGFyYW1zKTsKKyAgICAgICAgd2luZG93LnNldEZsYWdzKDAsIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRElNX0JFSElORCk7CisKKyAgICAgICAgbUljb25zWzBdID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmJ1dHRvbjApOworICAgICAgICBtSWNvbnNbMV0gPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuYnV0dG9uMSk7CisgICAgICAgIG1JY29uc1syXSA9IChUZXh0VmlldylmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5idXR0b24yKTsKKyAgICAgICAgbUljb25zWzNdID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmJ1dHRvbjMpOworICAgICAgICBtSWNvbnNbNF0gPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuYnV0dG9uNCk7CisgICAgICAgIG1JY29uc1s1XSA9IChUZXh0VmlldylmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5idXR0b241KTsKKyAgICAgICAgbUljb25zWzZdID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmJ1dHRvbjYpOworICAgICAgICBtSWNvbnNbN10gPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuYnV0dG9uNyk7CisgICAgICAgIG1Ob0FwcHNUZXh0ID0gZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubm9fYXBwbGljYXRpb25zX21lc3NhZ2UpOworCisgICAgICAgIGZvciAoVGV4dFZpZXcgYjogbUljb25zKSB7CisgICAgICAgICAgICBiLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhhbmRsZXIgZm9yIHVzZXIgY2xpY2tzLiAgSWYgYSBidXR0b24gd2FzIGNsaWNrZWQsIGxhdW5jaCB0aGUgY29ycmVzcG9uZGluZyBhY3Rpdml0eS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworCisgICAgICAgIGZvciAoVGV4dFZpZXcgYjogbUljb25zKSB7CisgICAgICAgICAgICBpZiAoYiA9PSB2KSB7CisgICAgICAgICAgICAgICAgLy8gcHJlcGFyZSBhIGxhdW5jaCBpbnRlbnQgYW5kIHNlbmQgaXQKKyAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gKEludGVudCliLmdldFRhZygpOworICAgICAgICAgICAgICAgIGlmIChpbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTEFVTkNIRURfRlJPTV9ISVNUT1JZKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoIlJlY2VudCIsICJVbmFibGUgdG8gbGF1bmNoIHJlY2VudCB0YXNrIiwgZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGlzbWlzcygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB1cCBhbmQgc2hvdyB0aGUgcmVjZW50IGFjdGl2aXRpZXMgZGlhbG9nLgorICAgICAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uU3RhcnQoKSB7CisgICAgICAgIHN1cGVyLm9uU3RhcnQoKTsKKyAgICAgICAgcmVsb2FkQnV0dG9ucygpOworICAgICAgICBpZiAoc1N0YXR1c0JhciAhPSBudWxsKSB7CisgICAgICAgICAgICBzU3RhdHVzQmFyLmRpc2FibGUoU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCk7CisgICAgICAgIH0KKworICAgICAgICAvLyByZWNlaXZlIGJyb2FkY2FzdHMKKyAgICAgICAgZ2V0Q29udGV4dCgpLnJlZ2lzdGVyUmVjZWl2ZXIobUJyb2FkY2FzdFJlY2VpdmVyLCBtQnJvYWRjYXN0SW50ZW50RmlsdGVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXNtaXNzIHRoZSByZWNlbnQgYWN0aXZpdGllcyBkaWFsb2cuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25TdG9wKCkgeworICAgICAgICBzdXBlci5vblN0b3AoKTsKKworICAgICAgICAvLyBkdW1wIGV4dHJhIG1lbW9yeSB3ZSdyZSBoYW5naW5nIG9uIHRvCisgICAgICAgIGZvciAoVGV4dFZpZXcgaWNvbjogbUljb25zKSB7CisgICAgICAgICAgICBpY29uLnNldENvbXBvdW5kRHJhd2FibGVzKG51bGwsIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICAgICAgaWNvbi5zZXRUYWcobnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc1N0YXR1c0JhciAhPSBudWxsKSB7CisgICAgICAgICAgICBzU3RhdHVzQmFyLmRpc2FibGUoU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PTkUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gc3RvcCByZWNlaXZpbmcgYnJvYWRjYXN0cworICAgICAgICBnZXRDb250ZXh0KCkudW5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZGNhc3RSZWNlaXZlcik7CisgICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbG9hZCB0aGUgNiBidXR0b25zIHdpdGggcmVjZW50IGFjdGl2aXRpZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVsb2FkQnV0dG9ucygpIHsKKworICAgICAgICBmaW5hbCBDb250ZXh0IGNvbnRleHQgPSBnZXRDb250ZXh0KCk7CisgICAgICAgIGZpbmFsIFBhY2thZ2VNYW5hZ2VyIHBtID0gY29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICBmaW5hbCBBY3Rpdml0eU1hbmFnZXIgYW0gPSAoQWN0aXZpdHlNYW5hZ2VyKQorICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFDVElWSVRZX1NFUlZJQ0UpOworICAgICAgICBmaW5hbCBMaXN0PEFjdGl2aXR5TWFuYWdlci5SZWNlbnRUYXNrSW5mbz4gcmVjZW50VGFza3MgPQorICAgICAgICAgICAgICAgIGFtLmdldFJlY2VudFRhc2tzKE1BWF9SRUNFTlRfVEFTS1MsIEFjdGl2aXR5TWFuYWdlci5SRUNFTlRfSUdOT1JFX1VOQVZBSUxBQkxFKTsKKworICAgICAgICBBY3Rpdml0eUluZm8gaG9tZUluZm8gPSAKKyAgICAgICAgICAgIG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9NQUlOKS5hZGRDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfSE9NRSkKKyAgICAgICAgICAgICAgICAgICAgLnJlc29sdmVBY3Rpdml0eUluZm8ocG0sIDApOworCisgICAgICAgIEljb25VdGlsaXRpZXMgaWNvblV0aWxpdGllcyA9IG5ldyBJY29uVXRpbGl0aWVzKGdldENvbnRleHQoKSk7CisKKyAgICAgICAgLy8gUGVyZm9ybWFuY2Ugbm90ZTogIE91ciBhbmRyb2lkIHBlcmZvcm1hbmNlIGd1aWRlIHNheXMgdG8gcHJlZmVyIEl0ZXJhdG9yIHdoZW4KKyAgICAgICAgLy8gdXNpbmcgYSBMaXN0IGNsYXNzLCBidXQgYmVjYXVzZSB3ZSBrbm93IHRoYXQgZ2V0UmVjZW50VGFza3MoKSBhbHdheXMgcmV0dXJucworICAgICAgICAvLyBhbiBBcnJheUxpc3Q8Piwgd2UnbGwgdXNlIGEgc2ltcGxlIGluZGV4IGluc3RlYWQuCisgICAgICAgIGludCBpbmRleCA9IDA7CisgICAgICAgIGludCBudW1UYXNrcyA9IHJlY2VudFRhc2tzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UYXNrcyAmJiAoaW5kZXggPCBOVU1fQlVUVE9OUyk7ICsraSkgeworICAgICAgICAgICAgZmluYWwgQWN0aXZpdHlNYW5hZ2VyLlJlY2VudFRhc2tJbmZvIGluZm8gPSByZWNlbnRUYXNrcy5nZXQoaSk7CisKKyAgICAgICAgICAgIC8vIGZvciBkZWJ1ZyBwdXJwb3NlcyBvbmx5LCBkaXNhbGxvdyBmaXJzdCByZXN1bHQgdG8gY3JlYXRlIGVtcHR5IGxpc3RzCisgICAgICAgICAgICBpZiAoREJHX0ZPUkNFX0VNUFRZX0xJU1QgJiYgKGkgPT0gMCkpIGNvbnRpbnVlOworCisgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChpbmZvLmJhc2VJbnRlbnQpOworICAgICAgICAgICAgaWYgKGluZm8ub3JpZ0FjdGl2aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KGluZm8ub3JpZ0FjdGl2aXR5KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2tpcCB0aGUgY3VycmVudCBob21lIGFjdGl2aXR5LgorICAgICAgICAgICAgaWYgKGhvbWVJbmZvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoaG9tZUluZm8ucGFja2FnZU5hbWUuZXF1YWxzKAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldENvbXBvbmVudCgpLmdldFBhY2thZ2VOYW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBob21lSW5mby5uYW1lLmVxdWFscygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldENvbXBvbmVudCgpLmdldENsYXNzTmFtZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludGVudC5zZXRGbGFncygoaW50ZW50LmdldEZsYWdzKCkmfkludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKQorICAgICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKTsKKyAgICAgICAgICAgIGZpbmFsIFJlc29sdmVJbmZvIHJlc29sdmVJbmZvID0gcG0ucmVzb2x2ZUFjdGl2aXR5KGludGVudCwgMCk7CisgICAgICAgICAgICBpZiAocmVzb2x2ZUluZm8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5SW5mbyBhY3Rpdml0eUluZm8gPSByZXNvbHZlSW5mby5hY3Rpdml0eUluZm87CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHRpdGxlID0gYWN0aXZpdHlJbmZvLmxvYWRMYWJlbChwbSkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBEcmF3YWJsZSBpY29uID0gYWN0aXZpdHlJbmZvLmxvYWRJY29uKHBtKTsKKworICAgICAgICAgICAgICAgIGlmICh0aXRsZSAhPSBudWxsICYmIHRpdGxlLmxlbmd0aCgpID4gMCAmJiBpY29uICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgdHYgPSBtSWNvbnNbaW5kZXhdOworICAgICAgICAgICAgICAgICAgICB0di5zZXRUZXh0KHRpdGxlKTsKKyAgICAgICAgICAgICAgICAgICAgaWNvbiA9IGljb25VdGlsaXRpZXMuY3JlYXRlSWNvbkRyYXdhYmxlKGljb24pOworICAgICAgICAgICAgICAgICAgICB0di5zZXRDb21wb3VuZERyYXdhYmxlcyhudWxsLCBpY29uLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgdHYuc2V0VGFnKGludGVudCk7CisgICAgICAgICAgICAgICAgICAgIHR2LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICAgICAgdHYuc2V0UHJlc3NlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHR2LmNsZWFyRm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBoYW5kbGUgdGhlIGNhc2Ugb2YgIm5vIGljb25zIHRvIHNob3ciCisgICAgICAgIG1Ob0FwcHNUZXh0LnNldFZpc2liaWxpdHkoKGluZGV4ID09IDApID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKworICAgICAgICAvLyBoaWRlIHRoZSByZXN0CisgICAgICAgIGZvciAoOyBpbmRleCA8IE5VTV9CVVRUT05TOyArK2luZGV4KSB7CisgICAgICAgICAgICBtSWNvbnNbaW5kZXhdLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgdGhlIGxpc3RlbmVyIGZvciB0aGUgQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTIGludGVudC4gIEl0J3MgYW4gaW5kaWNhdGlvbiB0aGF0CisgICAgICogd2Ugc2hvdWxkIGNsb3NlIG91cnNlbHZlcyBpbW1lZGlhdGVseSwgaW4gb3JkZXIgdG8gYWxsb3cgYSBoaWdoZXItcHJpb3JpdHkgVUkgdG8gdGFrZSBvdmVyCisgICAgICogKGUuZy4gcGhvbmUgY2FsbCByZWNlaXZlZCkuCisgICAgICovCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgaWYgKEludGVudC5BQ1RJT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1MuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVhc29uID0gaW50ZW50LmdldFN0cmluZ0V4dHJhKFBob25lV2luZG93TWFuYWdlci5TWVNURU1fRElBTE9HX1JFQVNPTl9LRVkpOworICAgICAgICAgICAgICAgIGlmICghIFBob25lV2luZG93TWFuYWdlci5TWVNURU1fRElBTE9HX1JFQVNPTl9SRUNFTlRfQVBQUy5lcXVhbHMocmVhc29uKSkgeworICAgICAgICAgICAgICAgICAgICBkaXNtaXNzKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvU2hvcnRjdXRNYW5hZ2VyLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Nob3J0Y3V0TWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NmFjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Nob3J0Y3V0TWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXI7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3I7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXk7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUNoYXJhY3Rlck1hcDsKKworaW1wb3J0IGphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbjsKKworLyoqCisgKiBNYW5hZ2VzIHF1aWNrIGxhdW5jaCBzaG9ydGN1dHMgYnk6CisgKiA8bGk+IEtlZXBpbmcgdGhlIGxvY2FsIGNvcHkgaW4gc3luYyB3aXRoIHRoZSBkYXRhYmFzZSAodGhpcyBpcyBhbiBvYnNlcnZlcikKKyAqIDxsaT4gUmV0dXJuaW5nIGEgc2hvcnRjdXQtbWF0Y2hpbmcgaW50ZW50IHRvIGNsaWVudHMKKyAqLworY2xhc3MgU2hvcnRjdXRNYW5hZ2VyIGV4dGVuZHMgQ29udGVudE9ic2VydmVyIHsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlNob3J0Y3V0TWFuYWdlciI7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTFVNTl9TSE9SVENVVCA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTFVNTl9JTlRFTlQgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHNQcm9qZWN0aW9uID0gbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgU2V0dGluZ3MuQm9va21hcmtzLlNIT1JUQ1VULCBTZXR0aW5ncy5Cb29rbWFya3MuSU5URU5UCisgICAgfTsKKworICAgIHByaXZhdGUgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIEN1cnNvciBtQ3Vyc29yOworICAgIC8qKiBNYXAgb2YgYSBzaG9ydGN1dCB0byBpdHMgaW50ZW50LiAqLworICAgIHByaXZhdGUgU3BhcnNlQXJyYXk8SW50ZW50PiBtU2hvcnRjdXRJbnRlbnRzOworICAgIAorICAgIHB1YmxpYyBTaG9ydGN1dE1hbmFnZXIoQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIpIHsKKyAgICAgICAgc3VwZXIoaGFuZGxlcik7CisgICAgICAgIAorICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1TaG9ydGN1dEludGVudHMgPSBuZXcgU3BhcnNlQXJyYXk8SW50ZW50PigpOworICAgIH0KKworICAgIC8qKiBPYnNlcnZlcyB0aGUgcHJvdmlkZXIgb2Ygc2hvcnRjdXQraW50ZW50cyAqLworICAgIHB1YmxpYyB2b2lkIG9ic2VydmUoKSB7CisgICAgICAgIG1DdXJzb3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKS5xdWVyeSgKKyAgICAgICAgICAgICAgICBTZXR0aW5ncy5Cb29rbWFya3MuQ09OVEVOVF9VUkksIHNQcm9qZWN0aW9uLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgbUN1cnNvci5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgdXBkYXRlU2hvcnRjdXRzKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25DaGFuZ2UoYm9vbGVhbiBzZWxmQ2hhbmdlKSB7CisgICAgICAgIHVwZGF0ZVNob3J0Y3V0cygpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU2hvcnRjdXRzKCkgeworICAgICAgICBDdXJzb3IgYyA9IG1DdXJzb3I7CisgICAgICAgIGlmICghYy5yZXF1ZXJ5KCkpIHsKKyAgICAgICAgICAgIExvZy5lKFRBRywgIlNob3J0Y3V0T2JzZXJ2ZXIgY291bGQgbm90IHJlLXF1ZXJ5IHNob3J0Y3V0cy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1TaG9ydGN1dEludGVudHMuY2xlYXIoKTsKKyAgICAgICAgd2hpbGUgKGMubW92ZVRvTmV4dCgpKSB7CisgICAgICAgICAgICBpbnQgc2hvcnRjdXQgPSBjLmdldEludChDT0xVTU5fU0hPUlRDVVQpOworICAgICAgICAgICAgaWYgKHNob3J0Y3V0ID09IDApIGNvbnRpbnVlOworICAgICAgICAgICAgU3RyaW5nIGludGVudFVSSSA9IGMuZ2V0U3RyaW5nKENPTFVNTl9JTlRFTlQpOworICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGludGVudCA9IEludGVudC5nZXRJbnRlbnQoaW50ZW50VVJJKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFVSSVN5bnRheEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiSW50ZW50IFVSSSBmb3Igc2hvcnRjdXQgaW52YWxpZC4iLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbnRlbnQgPT0gbnVsbCkgY29udGludWU7CisgICAgICAgICAgICBtU2hvcnRjdXRJbnRlbnRzLnB1dChzaG9ydGN1dCwgaW50ZW50KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBzaG9ydGN1dCBpbnRlbnQgZm9yIGEgZ2l2ZW4ga2V5Y29kZSttb2RpZmllci4gTWFrZSBzdXJlIHlvdQorICAgICAqIHN0cmlwIHdoYXRldmVyIG1vZGlmaWVyIGlzIHVzZWQgZm9yIGludm9raW5nIHNob3J0Y3V0cyAoZm9yIGV4YW1wbGUsCisgICAgICogaWYgJ1N5bStBJyBzaG91bGQgaW52b2tlIGEgc2hvcnRjdXQgb24gJ0EnLCB5b3Ugc2hvdWxkIHN0cmlwIHRoZQorICAgICAqICdTeW0nIGJpdCBmcm9tIHRoZSBtb2RpZmllcnMgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QuCisgICAgICogPHA+CisgICAgICogVGhpcyB3aWxsIGZpcnN0IHRyeSBhbiBleGFjdCBtYXRjaCAod2l0aCBtb2RpZmllcnMpLCBhbmQgdGhlbiB0cnkgYQorICAgICAqIG1hdGNoIHdpdGhvdXQgbW9kaWZpZXJzIChwcmltYXJ5IGNoYXJhY3RlciBvbiBhIGtleSkuCisgICAgICogCisgICAgICogQHBhcmFtIGtleUNvZGUgVGhlIGtleWNvZGUgb2YgdGhlIGtleSBwdXNoZWQuCisgICAgICogQHBhcmFtIG1vZGlmaWVycyBUaGUgbW9kaWZpZXJzIHdpdGhvdXQgYW55IHRoYXQgYXJlIHVzZWQgZm9yIGNob3JkaW5nCisgICAgICogICAgICAgICAgICB0byBpbnZva2UgYSBzaG9ydGN1dC4KKyAgICAgKiBAcmV0dXJuIFRoZSBpbnRlbnQgdGhhdCBtYXRjaGVzIHRoZSBzaG9ydGN1dCwgb3IgbnVsbCBpZiBub3QgZm91bmQuCisgICAgICovCisgICAgcHVibGljIEludGVudCBnZXRJbnRlbnQoaW50IGtleUNvZGUsIGludCBtb2RpZmllcnMpIHsKKyAgICAgICAgS2V5Q2hhcmFjdGVyTWFwIGtjbSA9IEtleUNoYXJhY3Rlck1hcC5sb2FkKEtleUNoYXJhY3Rlck1hcC5CVUlMVF9JTl9LRVlCT0FSRCk7CisgICAgICAgIC8vIEZpcnN0IHRyeSB0aGUgZXhhY3Qga2V5Y29kZSAod2l0aCBtb2RpZmllcnMpCisgICAgICAgIGludCBzaG9ydGN1dCA9IGtjbS5nZXQoa2V5Q29kZSwgbW9kaWZpZXJzKTsKKyAgICAgICAgSW50ZW50IGludGVudCA9IHNob3J0Y3V0ICE9IDAgPyBtU2hvcnRjdXRJbnRlbnRzLmdldChzaG9ydGN1dCkgOiBudWxsOyAKKyAgICAgICAgaWYgKGludGVudCAhPSBudWxsKSByZXR1cm4gaW50ZW50OworICAgICAgICAKKyAgICAgICAgLy8gTmV4dCB0cnkgdGhlIGtleWNvZGUgd2l0aG91dCBtb2RpZmllcnMgKHRoZSBwcmltYXJ5IGNoYXJhY3RlciBvbiB0aGF0IGtleSkKKyAgICAgICAgc2hvcnRjdXQgPSBDaGFyYWN0ZXIudG9Mb3dlckNhc2Uoa2NtLmdldChrZXlDb2RlLCAwKSk7CisgICAgICAgIHJldHVybiBzaG9ydGN1dCAhPSAwID8gbVNob3J0Y3V0SW50ZW50cy5nZXQoc2hvcnRjdXQpIDogbnVsbDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvU2ltVW5sb2NrU2NyZWVuLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1NpbVVubG9ja1NjcmVlbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MThlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1NpbVVubG9ja1NjcmVlbi5qYXZhCkBAIC0wLDAgKzEsNDIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkRpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5Qcm9ncmVzc0RpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Mb2NrUGF0dGVyblV0aWxzOworCitpbXBvcnQgYW5kcm9pZC50ZXh0LkVkaXRhYmxlOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCisvKioKKyAqIERpc3BsYXlzIGEgZGlhbGVyIGxpa2UgaW50ZXJmYWNlIHRvIHVubG9jayB0aGUgU0lNIFBJTi4KKyAqLworcHVibGljIGNsYXNzIFNpbVVubG9ja1NjcmVlbiBleHRlbmRzIExpbmVhckxheW91dCBpbXBsZW1lbnRzIEtleWd1YXJkU2NyZWVuLCBWaWV3Lk9uQ2xpY2tMaXN0ZW5lciwKKyAgICAgICAgS2V5Z3VhcmRVcGRhdGVNb25pdG9yLkluZm9DYWxsYmFjayB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRfUFJFU1NfV0FLRV9NSUxMSVMgPSA1MDAwOworCisgICAgcHJpdmF0ZSBmaW5hbCBLZXlndWFyZFVwZGF0ZU1vbml0b3IgbVVwZGF0ZU1vbml0b3I7CisgICAgcHJpdmF0ZSBmaW5hbCBLZXlndWFyZFNjcmVlbkNhbGxiYWNrIG1DYWxsYmFjazsKKworICAgIHByaXZhdGUgVGV4dFZpZXcgbUhlYWRlclRleHQ7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtUGluVGV4dDsKKworICAgIHByaXZhdGUgVGV4dFZpZXcgbU9rQnV0dG9uOworICAgIHByaXZhdGUgQnV0dG9uIG1FbWVyZ2VuY3lDYWxsQnV0dG9uOworCisgICAgcHJpdmF0ZSBWaWV3IG1CYWNrU3BhY2VCdXR0b247CisKKyAgICBwcml2YXRlIGZpbmFsIGludFtdIG1FbnRlcmVkUGluID0gezAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9OworICAgIHByaXZhdGUgaW50IG1FbnRlcmVkRGlnaXRzID0gMDsKKworICAgIHByaXZhdGUgUHJvZ3Jlc3NEaWFsb2cgbVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nID0gbnVsbDsKKworICAgIHByaXZhdGUgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKworICAgIHByaXZhdGUgaW50IG1DcmVhdGlvbk9yaWVudGF0aW9uOworCisgICAgcHJpdmF0ZSBpbnQgbUtleWJvYXJkSGlkZGVuOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhcltdIERJR0lUUyA9IHsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOSd9OworCisgICAgcHVibGljIFNpbVVubG9ja1NjcmVlbihDb250ZXh0IGNvbnRleHQsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLCBLZXlndWFyZFNjcmVlbkNhbGxiYWNrIGNhbGxiYWNrLAorICAgICAgICAgICAgTG9ja1BhdHRlcm5VdGlscyBsb2NrcGF0dGVybnV0aWxzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICBtVXBkYXRlTW9uaXRvciA9IHVwZGF0ZU1vbml0b3I7CisgICAgICAgIG1DYWxsYmFjayA9IGNhbGxiYWNrOworCisgICAgICAgIG1DcmVhdGlvbk9yaWVudGF0aW9uID0gY29uZmlndXJhdGlvbi5vcmllbnRhdGlvbjsKKyAgICAgICAgbUtleWJvYXJkSGlkZGVuID0gY29uZmlndXJhdGlvbi5oYXJkS2V5Ym9hcmRIaWRkZW47CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbG9ja3BhdHRlcm51dGlsczsKKworICAgICAgICBMYXlvdXRJbmZsYXRlciBpbmZsYXRlciA9IExheW91dEluZmxhdGVyLmZyb20oY29udGV4dCk7CisgICAgICAgIGlmIChtS2V5Ym9hcmRIaWRkZW4gPT0gQ29uZmlndXJhdGlvbi5IQVJES0VZQk9BUkRISURERU5fTk8pIHsKKyAgICAgICAgICAgIGluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3NpbV9waW5fbGFuZHNjYXBlLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3NpbV9waW5fcG9ydHJhaXQsIHRoaXMsIHRydWUpOworICAgICAgICAgICAgbmV3IFRvdWNoSW5wdXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1IZWFkZXJUZXh0ID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5oZWFkZXJUZXh0KTsKKyAgICAgICAgbVBpblRleHQgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnBpbkRpc3BsYXkpOworICAgICAgICBtQmFja1NwYWNlQnV0dG9uID0gZmluZFZpZXdCeUlkKFIuaWQuYmFja3NwYWNlKTsKKyAgICAgICAgbUJhY2tTcGFjZUJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24gPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5lbWVyZ2VuY3lDYWxsKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICAgICAgbU9rQnV0dG9uID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5vayk7CisKKyAgICAgICAgbUhlYWRlclRleHQuc2V0VGV4dChSLnN0cmluZy5rZXlndWFyZF9wYXNzd29yZF9lbnRlcl9waW5fY29kZSk7CisgICAgICAgIG1QaW5UZXh0LnNldEZvY3VzYWJsZShmYWxzZSk7CisKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICBtT2tCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworCisgICAgICAgIHNldEZvY3VzYWJsZUluVG91Y2hNb2RlKHRydWUpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gbmVlZHNJbnB1dCgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblBhdXNlKCkgeworCisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblJlc3VtZSgpIHsKKyAgICAgICAgLy8gc3RhcnQgZnJlc2gKKyAgICAgICAgbUhlYWRlclRleHQuc2V0VGV4dChSLnN0cmluZy5rZXlndWFyZF9wYXNzd29yZF9lbnRlcl9waW5fY29kZSk7CisKKyAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIG51bWJlciBvZiBlbnRlcmVkIGRpZ2l0cyBpcyBjb25zaXN0ZW50IHdoZW4gd2UKKyAgICAgICAgLy8gZXJhc2UgdGhlIFNJTSB1bmxvY2sgY29kZSwgaW5jbHVkaW5nIG9yaWVudGF0aW9uIGNoYW5nZXMuCisgICAgICAgIG1QaW5UZXh0LnNldFRleHQoIiIpOworICAgICAgICBtRW50ZXJlZERpZ2l0cyA9IDA7CisKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFuVXAoKSB7CisgICAgICAgIC8vIGhpZGUgdGhlIGRpYWxvZy4KKyAgICAgICAgaWYgKG1TaW1VbmxvY2tQcm9ncmVzc0RpYWxvZyAhPSBudWxsKSB7CisgICAgICAgICAgICBtU2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2cuaGlkZSgpOworICAgICAgICB9CisgICAgICAgIG1VcGRhdGVNb25pdG9yLnJlbW92ZUNhbGxiYWNrKHRoaXMpOworICAgIH0KKworCisgICAgLyoqCisgICAgICogU2luY2UgdGhlIElQQyBjYW4gYmxvY2ssIHdlIHdhbnQgdG8gcnVuIHRoZSByZXF1ZXN0IGluIGEgc2VwYXJhdGUgdGhyZWFkCisgICAgICogd2l0aCBhIGNhbGxiYWNrLgorICAgICAqLworICAgIHByaXZhdGUgYWJzdHJhY3QgY2xhc3MgQ2hlY2tTaW1QaW4gZXh0ZW5kcyBUaHJlYWQgeworCisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1QaW47CisKKyAgICAgICAgcHJvdGVjdGVkIENoZWNrU2ltUGluKFN0cmluZyBwaW4pIHsKKyAgICAgICAgICAgIG1QaW4gPSBwaW47CisgICAgICAgIH0KKworICAgICAgICBhYnN0cmFjdCB2b2lkIG9uU2ltTG9ja0NoYW5nZWRSZXNwb25zZShib29sZWFuIHN1Y2Nlc3MpOworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gcmVzdWx0ID0gSVRlbGVwaG9ueS5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAuY2hlY2tTZXJ2aWNlKCJwaG9uZSIpKS5zdXBwbHlQaW4obVBpbik7CisgICAgICAgICAgICAgICAgcG9zdChuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uU2ltTG9ja0NoYW5nZWRSZXNwb25zZShyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHBvc3QobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvblNpbUxvY2tDaGFuZ2VkUmVzcG9uc2UoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworICAgICAgICBpZiAodiA9PSBtQmFja1NwYWNlQnV0dG9uKSB7CisgICAgICAgICAgICBmaW5hbCBFZGl0YWJsZSBkaWdpdHMgPSBtUGluVGV4dC5nZXRFZGl0YWJsZVRleHQoKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBsZW4gPSBkaWdpdHMubGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAobGVuID4gMCkgeworICAgICAgICAgICAgICAgIGRpZ2l0cy5kZWxldGUobGVuLTEsIGxlbik7CisgICAgICAgICAgICAgICAgbUVudGVyZWREaWdpdHMtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1DYWxsYmFjay5wb2tlV2FrZWxvY2soKTsKKyAgICAgICAgfSBlbHNlIGlmICh2ID09IG1FbWVyZ2VuY3lDYWxsQnV0dG9uKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2sudGFrZUVtZXJnZW5jeUNhbGxBY3Rpb24oKTsKKyAgICAgICAgfSBlbHNlIGlmICh2ID09IG1Pa0J1dHRvbikgeworICAgICAgICAgICAgY2hlY2tQaW4oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgRGlhbG9nIGdldFNpbVVubG9ja1Byb2dyZXNzRGlhbG9nKCkgeworICAgICAgICBpZiAobVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nID09IG51bGwpIHsKKyAgICAgICAgICAgIG1TaW1VbmxvY2tQcm9ncmVzc0RpYWxvZyA9IG5ldyBQcm9ncmVzc0RpYWxvZyhtQ29udGV4dCk7CisgICAgICAgICAgICBtU2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2cuc2V0TWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fc2ltX3VubG9ja19wcm9ncmVzc19kaWFsb2dfbWVzc2FnZSkpOworICAgICAgICAgICAgbVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nLnNldEluZGV0ZXJtaW5hdGUodHJ1ZSk7CisgICAgICAgICAgICBtU2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2cuc2V0Q2FuY2VsYWJsZShmYWxzZSk7CisgICAgICAgICAgICBtU2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2cuZ2V0V2luZG93KCkuc2V0VHlwZSgKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRF9ESUFMT0cpOworICAgICAgICAgICAgaWYgKCFtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX3NmX3Nsb3dCbHVyKSkgeworICAgICAgICAgICAgICAgIG1TaW1VbmxvY2tQcm9ncmVzc0RpYWxvZy5nZXRXaW5kb3coKS5zZXRGbGFncygKKyAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5EKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjaGVja1BpbigpIHsKKworICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgcGluIGlzIGF0IGxlYXN0IDQgZGlnaXRzIGxvbmcuCisgICAgICAgIGlmIChtRW50ZXJlZERpZ2l0cyA8IDQpIHsKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgZGlzcGxheSBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIsIGFuZCBkb24ndCBzdWJtaXQuCisgICAgICAgICAgICBtSGVhZGVyVGV4dC5zZXRUZXh0KFIuc3RyaW5nLmludmFsaWRQaW4pOworICAgICAgICAgICAgbVBpblRleHQuc2V0VGV4dCgiIik7CisgICAgICAgICAgICBtRW50ZXJlZERpZ2l0cyA9IDA7CisgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ2V0U2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2coKS5zaG93KCk7CisKKyAgICAgICAgbmV3IENoZWNrU2ltUGluKG1QaW5UZXh0LmdldFRleHQoKS50b1N0cmluZygpKSB7CisgICAgICAgICAgICB2b2lkIG9uU2ltTG9ja0NoYW5nZWRSZXNwb25zZShib29sZWFuIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAobVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nLmhpZGUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVmb3JlIGNsb3NpbmcgdGhlIGtleWd1YXJkLCByZXBvcnQgYmFjayB0aGF0CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzaW0gaXMgdW5sb2NrZWQgc28gaXQga25vd3MgcmlnaHQgYXdheQorICAgICAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvci5yZXBvcnRTaW1QaW5VbmxvY2tlZCgpOworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2suZ29Ub1VubG9ja1NjcmVlbigpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1IZWFkZXJUZXh0LnNldFRleHQoUi5zdHJpbmcua2V5Z3VhcmRfcGFzc3dvcmRfd3JvbmdfcGluX2NvZGUpOworICAgICAgICAgICAgICAgICAgICBtUGluVGV4dC5zZXRUZXh0KCIiKTsKKyAgICAgICAgICAgICAgICAgICAgbUVudGVyZWREaWdpdHMgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0uc3RhcnQoKTsKKyAgICB9CisKKworICAgIHB1YmxpYyBib29sZWFuIG9uS2V5RG93bihpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9CQUNLKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2suZ29Ub0xvY2tTY3JlZW4oKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgY2hhciBtYXRjaCA9IGV2ZW50LmdldE1hdGNoKERJR0lUUyk7CisgICAgICAgIGlmIChtYXRjaCAhPSAwKSB7CisgICAgICAgICAgICByZXBvcnREaWdpdChtYXRjaCAtICcwJyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0RFTCkgeworICAgICAgICAgICAgaWYgKG1FbnRlcmVkRGlnaXRzID4gMCkgeworICAgICAgICAgICAgICAgIG1QaW5UZXh0Lm9uS2V5RG93bihrZXlDb2RlLCBldmVudCk7CisgICAgICAgICAgICAgICAgbUVudGVyZWREaWdpdHMtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9FTlRFUikgeworICAgICAgICAgICAgY2hlY2tQaW4oKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZXBvcnREaWdpdChpbnQgZGlnaXQpIHsKKyAgICAgICAgaWYgKG1FbnRlcmVkRGlnaXRzID09IDApIHsKKyAgICAgICAgICAgIG1QaW5UZXh0LnNldFRleHQoIiIpOworICAgICAgICB9CisgICAgICAgIGlmIChtRW50ZXJlZERpZ2l0cyA9PSA4KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbVBpblRleHQuYXBwZW5kKEludGVnZXIudG9TdHJpbmcoZGlnaXQpKTsKKyAgICAgICAgbUVudGVyZWRQaW5bbUVudGVyZWREaWdpdHMrK10gPSBkaWdpdDsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKSB7CisgICAgICAgIENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnID0gZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpOworICAgICAgICBpZiAobmV3Q29uZmlnLm9yaWVudGF0aW9uICE9IG1DcmVhdGlvbk9yaWVudGF0aW9uKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2sucmVjcmVhdGVNZShuZXdDb25maWcpOworICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbmZpZy5oYXJkS2V5Ym9hcmRIaWRkZW4gIT0gbUtleWJvYXJkSGlkZGVuKSB7CisgICAgICAgICAgICBtS2V5Ym9hcmRIaWRkZW4gPSBuZXdDb25maWcuaGFyZEtleWJvYXJkSGlkZGVuOworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBpc0tleWJvYXJkT3BlbiA9IG1LZXlib2FyZEhpZGRlbiA9PSBDb25maWd1cmF0aW9uLkhBUkRLRVlCT0FSREhJRERFTl9OTzsKKyAgICAgICAgICAgIGlmIChtVXBkYXRlTW9uaXRvci5pc0tleWd1YXJkQnlwYXNzRW5hYmxlZCgpICYmIGlzS2V5Ym9hcmRPcGVuKSB7CisgICAgICAgICAgICAgICAgbUNhbGxiYWNrLmdvVG9VbmxvY2tTY3JlZW4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgdXBkYXRlQ29uZmlndXJhdGlvbigpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25Db25maWd1cmF0aW9uQ2hhbmdlZChDb25maWd1cmF0aW9uIG5ld0NvbmZpZykgeworICAgICAgICBzdXBlci5vbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5ld0NvbmZpZyk7CisgICAgICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIZWxwZXIgY2xhc3MgdG8gaGFuZGxlIGlucHV0IGZyb20gdG91Y2ggZGlhbGVyLiAgT25seSByZWxldmFudCB3aGVuCisgICAgICogdGhlIGtleWJvYXJkIGlzIHNodXQuCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBUb3VjaElucHV0IGltcGxlbWVudHMgVmlldy5PbkNsaWNrTGlzdGVuZXIgeworICAgICAgICBwcml2YXRlIFRleHRWaWV3IG1aZXJvOworICAgICAgICBwcml2YXRlIFRleHRWaWV3IG1PbmU7CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbVR3bzsKKyAgICAgICAgcHJpdmF0ZSBUZXh0VmlldyBtVGhyZWU7CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbUZvdXI7CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbUZpdmU7CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbVNpeDsKKyAgICAgICAgcHJpdmF0ZSBUZXh0VmlldyBtU2V2ZW47CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbUVpZ2h0OworICAgICAgICBwcml2YXRlIFRleHRWaWV3IG1OaW5lOworICAgICAgICBwcml2YXRlIFRleHRWaWV3IG1DYW5jZWxCdXR0b247CisKKyAgICAgICAgcHJpdmF0ZSBUb3VjaElucHV0KCkgeworICAgICAgICAgICAgbVplcm8gPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnplcm8pOworICAgICAgICAgICAgbU9uZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQub25lKTsKKyAgICAgICAgICAgIG1Ud28gPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnR3byk7CisgICAgICAgICAgICBtVGhyZWUgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnRocmVlKTsKKyAgICAgICAgICAgIG1Gb3VyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5mb3VyKTsKKyAgICAgICAgICAgIG1GaXZlID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5maXZlKTsKKyAgICAgICAgICAgIG1TaXggPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnNpeCk7CisgICAgICAgICAgICBtU2V2ZW4gPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnNldmVuKTsKKyAgICAgICAgICAgIG1FaWdodCA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuZWlnaHQpOworICAgICAgICAgICAgbU5pbmUgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLm5pbmUpOworICAgICAgICAgICAgbUNhbmNlbEJ1dHRvbiA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuY2FuY2VsKTsKKworICAgICAgICAgICAgbVplcm8uc2V0VGV4dCgiMCIpOworICAgICAgICAgICAgbU9uZS5zZXRUZXh0KCIxIik7CisgICAgICAgICAgICBtVHdvLnNldFRleHQoIjIiKTsKKyAgICAgICAgICAgIG1UaHJlZS5zZXRUZXh0KCIzIik7CisgICAgICAgICAgICBtRm91ci5zZXRUZXh0KCI0Iik7CisgICAgICAgICAgICBtRml2ZS5zZXRUZXh0KCI1Iik7CisgICAgICAgICAgICBtU2l4LnNldFRleHQoIjYiKTsKKyAgICAgICAgICAgIG1TZXZlbi5zZXRUZXh0KCI3Iik7CisgICAgICAgICAgICBtRWlnaHQuc2V0VGV4dCgiOCIpOworICAgICAgICAgICAgbU5pbmUuc2V0VGV4dCgiOSIpOworCisgICAgICAgICAgICBtWmVyby5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBtT25lLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1Ud28uc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgbVRocmVlLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1Gb3VyLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1GaXZlLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1TaXguc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgbVNldmVuLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1FaWdodC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBtTmluZS5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBtQ2FuY2VsQnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgfQorCisKKyAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgIGlmICh2ID09IG1DYW5jZWxCdXR0b24pIHsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2suZ29Ub0xvY2tTY3JlZW4oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIGludCBkaWdpdCA9IGNoZWNrRGlnaXQodik7CisgICAgICAgICAgICBpZiAoZGlnaXQgPj0gMCkgeworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5wb2tlV2FrZWxvY2soRElHSVRfUFJFU1NfV0FLRV9NSUxMSVMpOworICAgICAgICAgICAgICAgIHJlcG9ydERpZ2l0KGRpZ2l0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgaW50IGNoZWNrRGlnaXQoVmlldyB2KSB7CisgICAgICAgICAgICBpbnQgZGlnaXQgPSAtMTsKKyAgICAgICAgICAgIGlmICh2ID09IG1aZXJvKSB7CisgICAgICAgICAgICAgICAgZGlnaXQgPSAwOworICAgICAgICAgICAgfSBlbHNlIGlmICh2ID09IG1PbmUpIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVR3bykgeworICAgICAgICAgICAgICAgIGRpZ2l0ID0gMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtVGhyZWUpIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbUZvdXIpIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbUZpdmUpIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVNpeCkgeworICAgICAgICAgICAgICAgIGRpZ2l0ID0gNjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtU2V2ZW4pIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbUVpZ2h0KSB7CisgICAgICAgICAgICAgICAgZGlnaXQgPSA4OworICAgICAgICAgICAgfSBlbHNlIGlmICh2ID09IG1OaW5lKSB7CisgICAgICAgICAgICAgICAgZGlnaXQgPSA5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGRpZ2l0OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25QaG9uZVN0YXRlQ2hhbmdlZChTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblJlZnJlc2hCYXR0ZXJ5SW5mbyhib29sZWFuIHNob3dCYXR0ZXJ5SW5mbywgYm9vbGVhbiBwbHVnZ2VkSW4sIGludCBiYXR0ZXJ5TGV2ZWwpIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uUmVmcmVzaENhcnJpZXJJbmZvKENoYXJTZXF1ZW5jZSBwbG1uLCBDaGFyU2VxdWVuY2Ugc3BuKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblJpbmdlck1vZGVDaGFuZ2VkKGludCBzdGF0ZSkgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25UaW1lQ2hhbmdlZCgpIHsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9wYWNrYWdlLmh0bWwgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL3BhY2thZ2UuaHRtbApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvcGFja2FnZS5odG1sCnJlbmFtZSB0byBwb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL3BhY2thZ2UuaHRtbApkaWZmIC0tZ2l0IGEvcG9saWN5L3Rlc3RzL0FuZHJvaWQubWsgYi9wb2xpY3kvdGVzdHMvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmI2MGIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3Rlc3RzL0FuZHJvaWQubWsKQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCisjIFdlIG9ubHkgd2FudCB0aGlzIGFwayBidWlsZCBmb3IgdGVzdHMuCitMT0NBTF9NT0RVTEVfVEFHUyA6PSB0ZXN0cworCitMT0NBTF9KQVZBX0xJQlJBUklFUyA6PSBhbmRyb2lkLnBvbGljeSBhbmRyb2lkLnRlc3QucnVubmVyCisKKyMgSW5jbHVkZSBhbGwgdGVzdCBqYXZhIGZpbGVzLgorTE9DQUxfU1JDX0ZJTEVTIDo9ICQoY2FsbCBhbGwtamF2YS1maWxlcy11bmRlciwgc3JjKQorCitMT0NBTF9QQUNLQUdFX05BTUUgOj0gRnJhbWV3b3JrUG9saWN5VGVzdHMKKworaW5jbHVkZSAkKEJVSUxEX1BBQ0tBR0UpCisKZGlmZiAtLWdpdCBhL3BvbGljeS90ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sIGIvcG9saWN5L3Rlc3RzL0FuZHJvaWRNYW5pZmVzdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJkYWJmYQotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS90ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0wLDAgKzEsMzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxtYW5pZmVzdCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgICAgcGFja2FnZT0iY29tLmFuZHJvaWQuZnJhbWV3b3Jrcy5wb2xpY3kudGVzdHMiPgorCisgICAgPGFwcGxpY2F0aW9uPgorICAgICAgICA8dXNlcy1saWJyYXJ5IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC50ZXN0LnJ1bm5lciIgLz4KKyAgICA8L2FwcGxpY2F0aW9uPgorCisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5HRVRfQUNDT1VOVFMiIC8+CisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5NQU5BR0VfQUNDT1VOVFMiIC8+CisgICAgCisgICAgPGluc3RydW1lbnRhdGlvbgorICAgICAgICBhbmRyb2lkOm5hbWU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0UnVubmVyIgorICAgICAgICBhbmRyb2lkOnRhcmdldFBhY2thZ2U9ImNvbS5hbmRyb2lkLmZyYW1ld29ya3MucG9saWN5LnRlc3RzIgorICAgICAgICBhbmRyb2lkOmxhYmVsPSJGcmFtZXdvcmsgcG9saWN5IHRlc3RzIiAvPgorPC9tYW5pZmVzdD4KZGlmZiAtLWdpdCBhL3BvbGljeS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0LmphdmEgYi9wb2xpY3kvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZmU2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3VGVzdC5qYXZhCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NDYXJkOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKK2ltcG9ydCBjb20uZ29vZ2xlLmFuZHJvaWQuY29sbGVjdC5MaXN0czsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIFRlc3RzIGZvciB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuTG9ja1BhdHRlcm5LZXlndWFyZFZpZXd9LAorICogd2hpY2ggaGFuZGxlcyB0aGUgbWFuYWdlbWVudCBvZiBzY3JlZW5zIHdoaWxlIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLgorICovCitwdWJsaWMgY2xhc3MgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0IGV4dGVuZHMgQW5kcm9pZFRlc3RDYXNlIHsKKyAgICBwcml2YXRlIE1vY2tVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworICAgIHByaXZhdGUgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKyAgICBwcml2YXRlIFRlc3RhYmxlTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcgbUxQS1Y7CisgICAgcHJpdmF0ZSBNb2NrS2V5Z3VhcmRDYWxsYmFjayBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2s7CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrVXBkYXRlTW9uaXRvciBleHRlbmRzIEtleWd1YXJkVXBkYXRlTW9uaXRvciB7CisKKyAgICAgICAgcHVibGljIEljY0NhcmQuU3RhdGUgc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOworCisgICAgICAgIHByaXZhdGUgTW9ja1VwZGF0ZU1vbml0b3IoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgSWNjQ2FyZC5TdGF0ZSBnZXRTaW1TdGF0ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBzaW1TdGF0ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIE1vY2tMb2NrUGF0dGVyblV0aWxzIGV4dGVuZHMgTG9ja1BhdHRlcm5VdGlscyB7CisgICAgICAgIGJvb2xlYW4gaXNMb2NrUGF0dGVybkVuYWJsZWQgPSB0cnVlOworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1Blcm1hbmVudGx5TG9ja2VkID0gZmFsc2U7CisKKyAgICAgICAgcHVibGljIE1vY2tMb2NrUGF0dGVyblV0aWxzKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNMb2NrUGF0dGVybkVuYWJsZWQoKSB7CisgICAgICAgICAgICByZXR1cm4gaXNMb2NrUGF0dGVybkVuYWJsZWQ7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgc2V0TG9ja1BhdHRlcm5FbmFibGVkKGJvb2xlYW4gbG9ja1BhdHRlcm5FbmFibGVkKSB7CisgICAgICAgICAgICBpc0xvY2tQYXR0ZXJuRW5hYmxlZCA9IGxvY2tQYXR0ZXJuRW5hYmxlZDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1Blcm1hbmVudGx5TG9ja2VkKCkgeworICAgICAgICAgICAgcmV0dXJuIGlzUGVybWFuZW50bHlMb2NrZWQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRQZXJtYW5lbnRseUxvY2tlZChib29sZWFuIHBlcm1hbmVudGx5TG9ja2VkKSB7CisgICAgICAgICAgICBpc1Blcm1hbmVudGx5TG9ja2VkID0gcGVybWFuZW50bHlMb2NrZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrS2V5Z3VhcmRTY3JlZW4gZXh0ZW5kcyBWaWV3IGltcGxlbWVudHMgS2V5Z3VhcmRTY3JlZW4geworCisgICAgICAgIHByaXZhdGUgaW50IG1PblBhdXNlQ291bnQgPSAwOworICAgICAgICBwcml2YXRlIGludCBtT25SZXN1bWVDb3VudCA9IDA7CisgICAgICAgIHByaXZhdGUgaW50IG1DbGVhbnVwQ291bnQgPSAwOworCisgICAgICAgIHByaXZhdGUgTW9ja0tleWd1YXJkU2NyZWVuKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgICAgICBzZXRGb2N1c2FibGUodHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBuZWVkc0lucHV0KCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICAgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKyAgICAgICAgICAgIG1PblBhdXNlQ291bnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICAgICAgbU9uUmVzdW1lQ291bnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgICAgIHB1YmxpYyB2b2lkIGNsZWFuVXAoKSB7CisgICAgICAgICAgICBtQ2xlYW51cENvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldE9uUGF1c2VDb3VudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBtT25QYXVzZUNvdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRPblJlc3VtZUNvdW50KCkgeworICAgICAgICAgICAgcmV0dXJuIG1PblJlc3VtZUNvdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRDbGVhbnVwQ291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gbUNsZWFudXBDb3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFsbG93cyB1cyB0byBpbmplY3QgdGhlIGxvY2sgYW5kIHVubG9jayB2aWV3cyB0byBzaW11bGF0ZSB0aGVpciBiZWhhdmlvcgorICAgICAqIGFuZCBkZXRlY3QgdGhlaXIgY3JlYXRpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyBleHRlbmRzIExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3IHsKKyAgICAgICAgcHJpdmF0ZSBMaXN0PE1vY2tLZXlndWFyZFNjcmVlbj4gbUluamVjdGVkTG9ja1NjcmVlbnM7CisgICAgICAgIHByaXZhdGUgTGlzdDxNb2NrS2V5Z3VhcmRTY3JlZW4+IG1JbmplY3RlZFVubG9ja1NjcmVlbnM7CisKKworCisgICAgICAgIHByaXZhdGUgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyhDb250ZXh0IGNvbnRleHQsIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLAorICAgICAgICAgICAgICAgIExvY2tQYXR0ZXJuVXRpbHMgbG9ja1BhdHRlcm5VdGlscywgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHVwZGF0ZU1vbml0b3IsIGxvY2tQYXR0ZXJuVXRpbHMsIGNvbnRyb2xsZXIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIFZpZXcgY3JlYXRlTG9ja1NjcmVlbigpIHsKKyAgICAgICAgICAgIGZpbmFsIE1vY2tLZXlndWFyZFNjcmVlbiBuZXdWaWV3ID0gbmV3IE1vY2tLZXlndWFyZFNjcmVlbihnZXRDb250ZXh0KCkpOworICAgICAgICAgICAgaWYgKG1JbmplY3RlZExvY2tTY3JlZW5zID09IG51bGwpIG1JbmplY3RlZExvY2tTY3JlZW5zID0gTGlzdHMubmV3QXJyYXlMaXN0KCk7CisgICAgICAgICAgICBtSW5qZWN0ZWRMb2NrU2NyZWVucy5hZGQobmV3Vmlldyk7CisgICAgICAgICAgICByZXR1cm4gbmV3VmlldzsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBWaWV3IGNyZWF0ZVVubG9ja1NjcmVlbkZvcihVbmxvY2tNb2RlIHVubG9ja01vZGUpIHsKKyAgICAgICAgICAgIGZpbmFsIE1vY2tLZXlndWFyZFNjcmVlbiBuZXdWaWV3ID0gbmV3IE1vY2tLZXlndWFyZFNjcmVlbihnZXRDb250ZXh0KCkpOworICAgICAgICAgICAgaWYgKG1JbmplY3RlZFVubG9ja1NjcmVlbnMgPT0gbnVsbCkgbUluamVjdGVkVW5sb2NrU2NyZWVucyA9IExpc3RzLm5ld0FycmF5TGlzdCgpOworICAgICAgICAgICAgbUluamVjdGVkVW5sb2NrU2NyZWVucy5hZGQobmV3Vmlldyk7CisgICAgICAgICAgICByZXR1cm4gbmV3VmlldzsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBMaXN0PE1vY2tLZXlndWFyZFNjcmVlbj4gZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5qZWN0ZWRMb2NrU2NyZWVuczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBMaXN0PE1vY2tLZXlndWFyZFNjcmVlbj4gZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkgeworICAgICAgICAgICAgcmV0dXJuIG1JbmplY3RlZFVubG9ja1NjcmVlbnM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrS2V5Z3VhcmRDYWxsYmFjayBpbXBsZW1lbnRzIEtleWd1YXJkVmlld0NhbGxiYWNrIHsKKworICAgICAgICBwcml2YXRlIGludCBtUG9rZVdha2Vsb2NrQ291bnQgPSAwOworICAgICAgICBwcml2YXRlIGludCBtS2V5Z3VhcmREb25lQ291bnQgPSAwOworCisgICAgICAgIHB1YmxpYyB2b2lkIHBva2VXYWtlbG9jaygpIHsKKyAgICAgICAgICAgIG1Qb2tlV2FrZWxvY2tDb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcG9rZVdha2Vsb2NrKGludCBtaWxsaXMpIHsKKyAgICAgICAgICAgIG1Qb2tlV2FrZWxvY2tDb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQga2V5Z3VhcmREb25lKGJvb2xlYW4gYXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAgbUtleWd1YXJkRG9uZUNvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBrZXlndWFyZERvbmVEcmF3aW5nKCkgeworCisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldFBva2VXYWtlbG9ja0NvdW50KCkgeworICAgICAgICAgICAgcmV0dXJuIG1Qb2tlV2FrZWxvY2tDb3VudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0S2V5Z3VhcmREb25lQ291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gbUtleWd1YXJkRG9uZUNvdW50OworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIuc2V0VXAoKTsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IgPSBuZXcgTW9ja1VwZGF0ZU1vbml0b3IoZ2V0Q29udGV4dCgpKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMgPSBuZXcgTW9ja0xvY2tQYXR0ZXJuVXRpbHMoZ2V0Q29udGV4dCgpKTsKKworICAgICAgICBtTFBLViA9IG5ldyBUZXN0YWJsZUxvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3KGdldENvbnRleHQoKSwgbVVwZGF0ZU1vbml0b3IsCisgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMsIG5ldyBLZXlndWFyZFdpbmRvd0NvbnRyb2xsZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXROZWVkc0lucHV0KGJvb2xlYW4gbmVlZHNJbnB1dCkgeworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgbUtleWd1YXJkVmlld0NhbGxiYWNrID0gbmV3IE1vY2tLZXlndWFyZENhbGxiYWNrKCk7CisgICAgICAgIG1MUEtWLnNldENhbGxiYWNrKG1LZXlndWFyZFZpZXdDYWxsYmFjayk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdFN0YXRlQWZ0ZXJDcmVhdGVkV2hpbGVTY3JlZW5PZmYoKSB7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKKworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiB1bmxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRDbGVhbnVwQ291bnQoKSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0T25SZXN1bWVDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRDbGVhbnVwQ291bnQoKSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1LZXlndWFyZFZpZXdDYWxsYmFjay5nZXRQb2tlV2FrZWxvY2tDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1LZXlndWFyZFZpZXdDYWxsYmFjay5nZXRLZXlndWFyZERvbmVDb3VudCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0V29rZW5CeU5vbk1lbnVLZXkoKSB7CisgICAgICAgIG1MUEtWLndha2VXaGVuUmVhZHlUcSgwKTsKKworICAgICAgICAvLyBzaG91bGQgaGF2ZSBwb2tlZCB0aGUgd2FrZWxvY2sgdG8gdHVybiBvbiB0aGUgc2NyZWVuCisgICAgICAgIGFzc2VydEVxdWFscygxLCBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2suZ2V0UG9rZVdha2Vsb2NrQ291bnQoKSk7CisKKyAgICAgICAgLy8gc2hvdWxkbid0IGJlIGFueSBhZGRpdGlvbmFsIHZpZXdzIGNyZWF0ZWQKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKKyAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOworCisgICAgICAgIC8vIGxvY2sgc2NyZWVuIHNob3VsZCBiZSBvbmx5IHZpc2libGUgb25lCisgICAgICAgIGFzc2VydEVxdWFscyhWaWV3LlZJU0lCTEUsIGxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuR09ORSwgdW5sb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7CisKKyAgICAgICAgLy8gb24gcmVzdW1lIG5vdCBjYWxsZWQgdW50aWwgc2NyZWVuIHR1cm5zIG9uCisgICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldE9uUGF1c2VDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25SZXN1bWVDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0Q2xlYW51cENvdW50KCkpOworCisgICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0Q2xlYW51cENvdW50KCkpOworCisgICAgICAgIC8vIHNpbXVsYXRlIHNjcmVlbiB0dXJuaW5nIG9uCisgICAgICAgIG1MUEtWLm9uU2NyZWVuVHVybmVkT24oKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBsb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldENsZWFudXBDb3VudCgpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldE9uUGF1c2VDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldENsZWFudXBDb3VudCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0V29rZW5CeU1lbnVLZXlXaGVuUGF0dGVyblNldCgpIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHRydWUsIG1Mb2NrUGF0dGVyblV0aWxzLmlzTG9ja1BhdHRlcm5FbmFibGVkKCkpOworCisgICAgICAgIG1MUEtWLndha2VXaGVuUmVhZHlUcShLZXlFdmVudC5LRVlDT0RFX01FTlUpOworCisgICAgICAgIC8vIHNob3VsZCBoYXZlIHBva2VkIHRoZSB3YWtlbG9jayB0byB0dXJuIG9uIHRoZSBzY3JlZW4KKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1LZXlndWFyZFZpZXdDYWxsYmFjay5nZXRQb2tlV2FrZWxvY2tDb3VudCgpKTsKKworICAgICAgICAvLyBzaG91bGRuJ3QgYmUgYW55IGFkZGl0aW9uYWwgdmlld3MgY3JlYXRlZAorICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiB1bmxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCk7CisKKyAgICAgICAgLy8gdW5sb2NrIHNjcmVlbiBzaG91bGQgYmUgb25seSB2aXNpYmxlIG9uZQorICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5HT05FLCBsb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhWaWV3LlZJU0lCTEUsIHVubG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RTY3JlZW5SZXF1ZXN0c1JlY3JlYXRpb24oKSB7CisgICAgICAgIG1MUEtWLndha2VXaGVuUmVhZHlUcSgwKTsKKyAgICAgICAgbUxQS1Yub25TY3JlZW5UdXJuZWRPbigpOworCisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiBsb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgwKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBsb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7CisKKyAgICAgICAgLy8gc2ltdWxhdGUgc2NyZWVuIGFza2luZyB0byBiZSByZWNyZWF0ZWQKKyAgICAgICAgbUxQS1YubUtleWd1YXJkU2NyZWVuQ2FsbGJhY2sucmVjcmVhdGVNZShuZXcgQ29uZmlndXJhdGlvbigpKTsKKworICAgICAgICAvLyBzaG91bGQgaGF2ZSBiZWVuIHJlY3JlYXRlZAorICAgICAgICBhc3NlcnRFcXVhbHMoMiwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygyLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOworCisgICAgICAgIC8vIGJvdGggb2xkIHNjcmVlbnMgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkIHVwCisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApLmdldENsZWFudXBDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLmdldCgwKS5nZXRDbGVhbnVwQ291bnQoKSk7CisKKyAgICAgICAgLy8gb2xkIGxvY2sgc2NyZWVuIHNob3VsZCBoYXZlIGJlZW4gcGF1c2VkCisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApLmdldE9uUGF1c2VDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLmdldCgwKS5nZXRPblBhdXNlQ291bnQoKSk7CisKKyAgICAgICAgLy8gbmV3IGxvY2sgc2NyZWVuIHNob3VsZCBoYXZlIGJlZW4gcmVzdW1lZAorICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgxKS5nZXRPblJlc3VtZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDEpLmdldE9uUmVzdW1lQ291bnQoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdE1lbnVEb2VzbnRHb1RvVW5sb2NrU2NyZWVuT25XYWtlV2hlblB1a0xvY2tlZCgpIHsKKyAgICAgICAgLy8gUFVLIGxvY2tlZAorICAgICAgICBtVXBkYXRlTW9uaXRvci5zaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOworCisgICAgICAgIC8vIHdha2UgYnkgbWVudQorICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoS2V5RXZlbnQuS0VZQ09ERV9NRU5VKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiB1bmxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCk7CisKKyAgICAgICAgLy8gbG9jayBzY3JlZW4gc2hvdWxkIGJlIG9ubHkgdmlzaWJsZSBvbmUKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuVklTSUJMRSwgbG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5HT05FLCB1bmxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0TWVudUdvZXNUb0xvY2tTY3JlZW5XaGVuRGV2aWNlTm90U2VjdXJlKCkgeworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy5zZXRMb2NrUGF0dGVybkVuYWJsZWQoZmFsc2UpOworCisgICAgICAgIC8vIHdha2UgYnkgbWVudQorICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoS2V5RXZlbnQuS0VZQ09ERV9NRU5VKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiB1bmxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCk7CisKKyAgICAgICAgLy8gbG9jayBzY3JlZW4gc2hvdWxkIGJlIG9ubHkgdmlzaWJsZSBvbmUKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuVklTSUJMRSwgbG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5HT05FLCB1bmxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wcmVsb2FkZWQtY2xhc3NlcyBiL3ByZWxvYWRlZC1jbGFzc2VzCmluZGV4IDFhMDU4ZmQuLmI2MDIwMzkgMTAwNjQ0Ci0tLSBhL3ByZWxvYWRlZC1jbGFzc2VzCisrKyBiL3ByZWxvYWRlZC1jbGFzc2VzCkBAIC0zMSw3ICszMSw2IEBACiBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyCiBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyJENvbnRlbnRQcm92aWRlckhvbGRlcgogYW5kcm9pZC5hcHAuSUFsYXJtTWFuYWdlciRTdHViCi1hbmRyb2lkLmFwcC5JU3RhdHVzQmFyJFN0dWIKIGFuZHJvaWQuYXBwLklUcmFuc2llbnROb3RpZmljYXRpb24kU3R1YgogYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uCiBhbmRyb2lkLmFwcC5JbnRlbnRTZXJ2aWNlCkBAIC0yNjksNyArMjY4LDYgQEAKIGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlciRTdHViJFByb3h5CiBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uCiBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcgotYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlCiBhbmRyb2lkLm1lZGlhLkF1ZGlvRm9ybWF0CiBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcgogYW5kcm9pZC5tZWRpYS5BdWRpb1JlY29yZApAQCAtNjMzLDcgKzYzMSw2IEBACiBjb20uYW5kcm9pZC5pbnRlcm5hbC5jb250ZW50LlN5bmNTdGF0ZUNvbnRlbnRQcm92aWRlckhlbHBlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwuZ3JhcGhpY3MuTmF0aXZlVXRpbHMKIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkR1bW15TG9jYXRpb25Qcm92aWRlcgotY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR3BzTG9jYXRpb25Qcm92aWRlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwubG9nZ2luZy5BbmRyb2lkSGFuZGxlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuQW5kcm9pZFByaW50U3RyZWFtCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5CaW5kZXJJbnRlcm5hbApAQCAtNjU2LDYgKzY1MywxMSBAQAogY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckUGFuZWxGZWF0dXJlU3RhdGUkU2F2ZWRTdGF0ZQogY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3dNYW5hZ2VyCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5Qb2xpY3kKK2NvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5JU3RhdHVzQmFyCitjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuSVN0YXR1c0JhciRTdHViCitjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuSVN0YXR1c0JhclNlcnZpY2UkU3R1YgorY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXJTZXJ2aWNlJFN0dWIKK2NvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uCiBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuR3NtQWxwaGFiZXQKIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255JFN0dWIKIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255JFN0dWIkUHJveHkKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvQW5kcm9pZC5tayBiL3NlcnZpY2VzL2phdmEvQW5kcm9pZC5tawppbmRleCA5MzQ3MTJjLi5jNzU2ZDI5IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL0FuZHJvaWQubWsKKysrIGIvc2VydmljZXMvamF2YS9BbmRyb2lkLm1rCkBAIC0xMyw3ICsxMyw5IEBACiAKIExPQ0FMX0pBVkFfTElCUkFSSUVTIDo9IGFuZHJvaWQucG9saWN5CiAKK0xPQ0FMX05PX0VNTUFfSU5TVFJVTUVOVCA6PSB0cnVlCitMT0NBTF9OT19FTU1BX0NPTVBJTEUgOj0gdHJ1ZQorCiBpbmNsdWRlICQoQlVJTERfSkFWQV9MSUJSQVJZKQogCiBpbmNsdWRlICQoQlVJTERfRFJPSURET0MpCi0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0FwcFdpZGdldFNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0FwcFdpZGdldFNlcnZpY2UuamF2YQppbmRleCAyNDUyNmFmLi4zZWQ2YzEyIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9BcHBXaWRnZXRTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvQXBwV2lkZ2V0U2VydmljZS5qYXZhCkBAIC04NjksNyArODY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3V0LnN0YXJ0VGFnKG51bGwsICJwIik7CiAgICAgICAgICAgICAgICAgICAgIG91dC5hdHRyaWJ1dGUobnVsbCwgInBrZyIsIHAuaW5mby5wcm92aWRlci5nZXRQYWNrYWdlTmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAgb3V0LmF0dHJpYnV0ZShudWxsLCAiY2wiLCBwLmluZm8ucHJvdmlkZXIuZ2V0Q2xhc3NOYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBvdXQuZW5kVGFnKG51bGwsICJoIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5lbmRUYWcobnVsbCwgInAiKTsKICAgICAgICAgICAgICAgICAgICAgcC50YWcgPSBwcm92aWRlckluZGV4OwogICAgICAgICAgICAgICAgICAgICBwcm92aWRlckluZGV4Kys7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTIwNCw2ICsxMjA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIGN1cnJlbnRseSBzaG93aW5nLCBjYWxsIGJhY2sgd2l0aCB0aGUgbmV3IEFwcFdpZGdldFByb3ZpZGVySW5mby4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8TTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcFdpZGdldElkIGlkID0gcC5pbnN0YW5jZXMuZ2V0KGopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZC52aWV3cyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZC5ob3N0ICE9IG51bGwgJiYgaWQuaG9zdC5jYWxsYmFja3MgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZC5ob3N0LmNhbGxiYWNrcy5wcm92aWRlckNoYW5nZWQoaWQuYXBwV2lkZ2V0SWQsIHAuaW5mbyk7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYWNrdXBNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvQmFja3VwTWFuYWdlclNlcnZpY2UuamF2YQppbmRleCA2ZTMwN2E1Li4zZGI1ZGMxIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYWNrdXBNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0JhY2t1cE1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTE3LDggKzE3LDggQEAKIHBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOwogCiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOwotaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkOwogaW1wb3J0IGFuZHJvaWQuYXBwLkFsYXJtTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BcHBHbG9iYWxzOwogaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuSUFwcGxpY2F0aW9uVGhyZWFkOwogaW1wb3J0IGFuZHJvaWQuYXBwLklCYWNrdXBBZ2VudDsKQEAgLTM5OSw3ICszOTksNyBAQAogICAgIHB1YmxpYyBCYWNrdXBNYW5hZ2VyU2VydmljZShDb250ZXh0IGNvbnRleHQpIHsKICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwogICAgICAgICBtUGFja2FnZU1hbmFnZXIgPSBjb250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCk7Ci0gICAgICAgIG1QYWNrYWdlTWFuYWdlckJpbmRlciA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgIG1QYWNrYWdlTWFuYWdlckJpbmRlciA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKTsKICAgICAgICAgbUFjdGl2aXR5TWFuYWdlciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7CiAKICAgICAgICAgbUFsYXJtTWFuYWdlciA9IChBbGFybU1hbmFnZXIpIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOwpAQCAtNDIxLDcgKzQyMSw3IEBACiAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkJBQ0tVUF9BVVRPX1JFU1RPUkUsIDEpICE9IDA7CiAgICAgICAgIC8vIElmIEVuY3J5cHRlZCBmaWxlIHN5c3RlbXMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwgdGhpcyBjYWxsIHdpbGwgcmV0dXJuIHRoZQogICAgICAgICAvLyBjb3JyZWN0IGRpcmVjdG9yeS4KLSAgICAgICAgbUJhc2VTdGF0ZURpciA9IG5ldyBGaWxlKEVudmlyb25tZW50LmdldERhdGFEaXJlY3RvcnkoKSwgImJhY2t1cCIpOworICAgICAgICBtQmFzZVN0YXRlRGlyID0gbmV3IEZpbGUoRW52aXJvbm1lbnQuZ2V0U2VjdXJlRGF0YURpcmVjdG9yeSgpLCAiYmFja3VwIik7CiAgICAgICAgIG1CYXNlU3RhdGVEaXIubWtkaXJzKCk7CiAgICAgICAgIG1EYXRhRGlyID0gRW52aXJvbm1lbnQuZ2V0RG93bmxvYWRDYWNoZURpcmVjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYXR0ZXJ5U2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvQmF0dGVyeVNlcnZpY2UuamF2YQppbmRleCA1Y2Y2MWJkLi5lNmMzMmQ5IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYXR0ZXJ5U2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0JhdHRlcnlTZXJ2aWNlLmphdmEKQEAgLTIxMCw5ICsyMTAsNiBAQAogICAgICAgICBib29sZWFuIGxvZ091dGxpZXIgPSBmYWxzZTsKICAgICAgICAgbG9uZyBkaXNjaGFyZ2VEdXJhdGlvbiA9IDA7CiAKLSAgICAgICAgc2h1dGRvd25JZk5vUG93ZXIoKTsKLSAgICAgICAgc2h1dGRvd25JZk92ZXJUZW1wKCk7Ci0KICAgICAgICAgbUJhdHRlcnlMZXZlbENyaXRpY2FsID0gbUJhdHRlcnlMZXZlbCA8PSBDUklUSUNBTF9CQVRURVJZX0xFVkVMOwogICAgICAgICBpZiAobUFjT25saW5lKSB7CiAgICAgICAgICAgICBtUGx1Z1R5cGUgPSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1BMVUdHRURfQUM7CkBAIC0yMjEsNiArMjE4LDE5IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtUGx1Z1R5cGUgPSBCQVRURVJZX1BMVUdHRURfTk9ORTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTGV0IHRoZSBiYXR0ZXJ5IHN0YXRzIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgbGV2ZWwuCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLnNldEJhdHRlcnlTdGF0ZShtQmF0dGVyeVN0YXR1cywgbUJhdHRlcnlIZWFsdGgsCisgICAgICAgICAgICAgICAgICAgIG1QbHVnVHlwZSwgbUJhdHRlcnlMZXZlbCwgbUJhdHRlcnlUZW1wZXJhdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgbUJhdHRlcnlWb2x0YWdlKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNodXRkb3duSWZOb1Bvd2VyKCk7CisgICAgICAgIHNodXRkb3duSWZPdmVyVGVtcCgpOworCiAgICAgICAgIGlmIChtQmF0dGVyeVN0YXR1cyAhPSBtTGFzdEJhdHRlcnlTdGF0dXMgfHwKICAgICAgICAgICAgICAgICBtQmF0dGVyeUhlYWx0aCAhPSBtTGFzdEJhdHRlcnlIZWFsdGggfHwKICAgICAgICAgICAgICAgICBtQmF0dGVyeVByZXNlbnQgIT0gbUxhc3RCYXR0ZXJ5UHJlc2VudCB8fApAQCAtMjYzLDE2ICsyNzMsNiBAQAogICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkJBVFRFUllfTEVWRUwsCiAgICAgICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeUxldmVsLCBtQmF0dGVyeVZvbHRhZ2UsIG1CYXR0ZXJ5VGVtcGVyYXR1cmUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWwgIT0gbUxhc3RCYXR0ZXJ5TGV2ZWwgJiYgbVBsdWdUeXBlID09IEJBVFRFUllfUExVR0dFRF9OT05FKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJhdHRlcnkgbGV2ZWwgaGFzIGNoYW5nZWQgYW5kIHdlIGFyZSBvbiBiYXR0ZXJ5LCB1cGRhdGUgdGhlIGN1cnJlbnQgbGV2ZWwuCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBkaXNjaGFyZ2UgY3ljbGUgdHJhY2tpbmcgc28gdGhpcyBzaG91bGRuJ3QgYmUgdXBkYXRlZCB3aGlsZSB0aGUKLSAgICAgICAgICAgICAgICAvLyBiYXR0ZXJ5IGlzIGNoYXJnaW5nLgotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMucmVjb3JkQ3VycmVudExldmVsKG1CYXR0ZXJ5TGV2ZWwpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWxDcml0aWNhbCAmJiAhbUxhc3RCYXR0ZXJ5TGV2ZWxDcml0aWNhbCAmJgogICAgICAgICAgICAgICAgICAgICBtUGx1Z1R5cGUgPT0gQkFUVEVSWV9QTFVHR0VEX05PTkUpIHsKICAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBsb2cgZGlzY2hhcmdlIGN5Y2xlIG91dGxpZXJzCkBAIC0zNDIsMTEgKzM0Miw2IEBACiAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKTsKICAgICAgICAgaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX1JFQ0VJVkVSX1JFR0lTVEVSRURfT05MWQogICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfUkVDRUlWRVJfUkVQTEFDRV9QRU5ESU5HKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMuc2V0T25CYXR0ZXJ5KG1QbHVnVHlwZSA9PSBCQVRURVJZX1BMVUdHRURfTk9ORSwgbUJhdHRlcnlMZXZlbCk7Ci0gICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLgotICAgICAgICB9CiAKICAgICAgICAgaW50IGljb24gPSBnZXRJY29uKG1CYXR0ZXJ5TGV2ZWwpOwogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dEFwcGxpY2F0aW9uLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dEFwcGxpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg0MjBkNAotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0lucHV0QXBwbGljYXRpb24uamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXI7CisKKy8qKgorICogRGVzY3JpYmVzIGlucHV0LXJlbGF0ZWQgYXBwbGljYXRpb24gcHJvcGVydGllcyBmb3IgdXNlIGJ5IHRoZSBpbnB1dCBkaXNwYXRjaGVyLgorICogCisgKiBAaGlkZQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgSW5wdXRBcHBsaWNhdGlvbiB7CisgICAgLy8gQXBwbGljYXRpb24gbmFtZS4KKyAgICBwdWJsaWMgU3RyaW5nIG5hbWU7CisgICAgCisgICAgLy8gRGlzcGF0Y2hpbmcgdGltZW91dC4KKyAgICBwdWJsaWMgbG9uZyBkaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKKyAgICAKKyAgICAvLyBUaGUgYXBwbGljYXRpb24gd2luZG93IHRva2VuLgorICAgIHB1YmxpYyBPYmplY3QgdG9rZW47Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dE1hbmFnZXIuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYTI5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dE1hbmFnZXIuamF2YQpAQCAtMCwwICsxLDUxNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5YbWxVdGlsczsKKworaW1wb3J0IG9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5Mb2NhbFBvd2VyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlBvd2VyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuWG1sOworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dENoYW5uZWw7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuU3VyZmFjZTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlclBvbGljeTsKKworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCisvKgorICogV3JhcHMgdGhlIEMrKyBJbnB1dE1hbmFnZXIgYW5kIHByb3ZpZGVzIGl0cyBjYWxsYmFja3MuCisgKiAKKyAqIFhYWCBUZW1wdGVkIHRvIHByb21vdGUgdGhpcyB0byBhIGZpcnN0LWNsYXNzIHNlcnZpY2UsIGllLiBJbnB1dE1hbmFnZXJTZXJ2aWNlLCB0bworICogICAgIGltcHJvdmUgc2VwYXJhdGlvbiBvZiBjb25jZXJucyB3aXRoIHJlc3BlY3QgdG8gdGhlIHdpbmRvdyBtYW5hZ2VyLgorICovCitwdWJsaWMgY2xhc3MgSW5wdXRNYW5hZ2VyIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJJbnB1dE1hbmFnZXIiOworICAgIAorICAgIHByaXZhdGUgZmluYWwgQ2FsbGJhY2tzIG1DYWxsYmFja3M7CisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgZmluYWwgV2luZG93TWFuYWdlclNlcnZpY2UgbVdpbmRvd01hbmFnZXJTZXJ2aWNlOworICAgIHByaXZhdGUgZmluYWwgV2luZG93TWFuYWdlclBvbGljeSBtV2luZG93TWFuYWdlclBvbGljeTsKKyAgICBwcml2YXRlIGZpbmFsIFBvd2VyTWFuYWdlciBtUG93ZXJNYW5hZ2VyOworICAgIHByaXZhdGUgZmluYWwgUG93ZXJNYW5hZ2VyU2VydmljZSBtUG93ZXJNYW5hZ2VyU2VydmljZTsKKyAgICAKKyAgICBwcml2YXRlIGludCBtVG91Y2hTY3JlZW5Db25maWc7CisgICAgcHJpdmF0ZSBpbnQgbUtleWJvYXJkQ29uZmlnOworICAgIHByaXZhdGUgaW50IG1OYXZpZ2F0aW9uQ29uZmlnOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZUluaXQoQ2FsbGJhY2tzIGNhbGxiYWNrcyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU3RhcnQoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVTZXREaXNwbGF5U2l6ZShpbnQgZGlzcGxheUlkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZVNldERpc3BsYXlPcmllbnRhdGlvbihpbnQgZGlzcGxheUlkLCBpbnQgcm90YXRpb24pOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBpbnQgbmF0aXZlR2V0U2NhbkNvZGVTdGF0ZShpbnQgZGV2aWNlSWQsIGludCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50IHNjYW5Db2RlKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgaW50IG5hdGl2ZUdldEtleUNvZGVTdGF0ZShpbnQgZGV2aWNlSWQsIGludCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50IGtleUNvZGUpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBpbnQgbmF0aXZlR2V0U3dpdGNoU3RhdGUoaW50IGRldmljZUlkLCBpbnQgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludCBzdyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gbmF0aXZlSGFzS2V5cyhpbnRbXSBrZXlDb2RlcywgYm9vbGVhbltdIGtleUV4aXN0cyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlUmVnaXN0ZXJJbnB1dENoYW5uZWwoSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgaW50IG5hdGl2ZUluamVjdEtleUV2ZW50KEtleUV2ZW50IGV2ZW50LCBpbnQgbmF0dXJlLAorICAgICAgICAgICAgaW50IGluamVjdG9yUGlkLCBpbnQgaW5qZWN0b3JVaWQsIGJvb2xlYW4gc3luYywgaW50IHRpbWVvdXRNaWxsaXMpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBpbnQgbmF0aXZlSW5qZWN0TW90aW9uRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQsIGludCBuYXR1cmUsCisgICAgICAgICAgICBpbnQgaW5qZWN0b3JQaWQsIGludCBpbmplY3RvclVpZCwgYm9vbGVhbiBzeW5jLCBpbnQgdGltZW91dE1pbGxpcyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU2V0SW5wdXRXaW5kb3dzKElucHV0V2luZG93W10gd2luZG93cyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU2V0SW5wdXREaXNwYXRjaE1vZGUoYm9vbGVhbiBlbmFibGVkLCBib29sZWFuIGZyb3plbik7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU2V0Rm9jdXNlZEFwcGxpY2F0aW9uKElucHV0QXBwbGljYXRpb24gYXBwbGljYXRpb24pOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZVByZWVtcHRJbnB1dERpc3BhdGNoKCk7CisgICAgCisgICAgLy8gRGV2aWNlIGNsYXNzIGFzIGRlZmluZWQgYnkgRXZlbnRIdWIuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENMQVNTX0tFWUJPQVJEID0gMHgwMDAwMDAwMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0xBU1NfQUxQSEFLRVkgPSAweDAwMDAwMDAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDTEFTU19UT1VDSFNDUkVFTiA9IDB4MDAwMDAwMDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENMQVNTX1RSQUNLQkFMTCA9IDB4MDAwMDAwMDg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENMQVNTX1RPVUNIU0NSRUVOX01UID0gMHgwMDAwMDAxMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0xBU1NfRFBBRCA9IDB4MDAwMDAwMjA7CisgICAgCisgICAgLy8gSW5wdXQgZXZlbnQgaW5qZWN0aW9uIGNvbnN0YW50cyBkZWZpbmVkIGluIElucHV0RGlzcGF0Y2hlci5oLgorICAgIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCA9IDA7CisgICAgc3RhdGljIGZpbmFsIGludCBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQgPSAxOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRCA9IDI7CisgICAgc3RhdGljIGZpbmFsIGludCBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fVElNRURfT1VUID0gMzsKKyAgICAKKyAgICBwdWJsaWMgSW5wdXRNYW5hZ2VyKENvbnRleHQgY29udGV4dCwKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXJTZXJ2aWNlIHdpbmRvd01hbmFnZXJTZXJ2aWNlLAorICAgICAgICAgICAgV2luZG93TWFuYWdlclBvbGljeSB3aW5kb3dNYW5hZ2VyUG9saWN5LAorICAgICAgICAgICAgUG93ZXJNYW5hZ2VyIHBvd2VyTWFuYWdlciwKKyAgICAgICAgICAgIFBvd2VyTWFuYWdlclNlcnZpY2UgcG93ZXJNYW5hZ2VyU2VydmljZSkgeworICAgICAgICB0aGlzLm1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgdGhpcy5tV2luZG93TWFuYWdlclNlcnZpY2UgPSB3aW5kb3dNYW5hZ2VyU2VydmljZTsKKyAgICAgICAgdGhpcy5tV2luZG93TWFuYWdlclBvbGljeSA9IHdpbmRvd01hbmFnZXJQb2xpY3k7CisgICAgICAgIHRoaXMubVBvd2VyTWFuYWdlciA9IHBvd2VyTWFuYWdlcjsKKyAgICAgICAgdGhpcy5tUG93ZXJNYW5hZ2VyU2VydmljZSA9IHBvd2VyTWFuYWdlclNlcnZpY2U7CisgICAgICAgIAorICAgICAgICB0aGlzLm1DYWxsYmFja3MgPSBuZXcgQ2FsbGJhY2tzKCk7CisgICAgICAgIAorICAgICAgICBtVG91Y2hTY3JlZW5Db25maWcgPSBDb25maWd1cmF0aW9uLlRPVUNIU0NSRUVOX05PVE9VQ0g7CisgICAgICAgIG1LZXlib2FyZENvbmZpZyA9IENvbmZpZ3VyYXRpb24uS0VZQk9BUkRfTk9LRVlTOworICAgICAgICBtTmF2aWdhdGlvbkNvbmZpZyA9IENvbmZpZ3VyYXRpb24uTkFWSUdBVElPTl9OT05BVjsKKyAgICAgICAgCisgICAgICAgIGluaXQoKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGluaXQoKSB7CisgICAgICAgIFNsb2cuaShUQUcsICJJbml0aWFsaXppbmcgaW5wdXQgbWFuYWdlciIpOworICAgICAgICBuYXRpdmVJbml0KG1DYWxsYmFja3MpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzdGFydCgpIHsKKyAgICAgICAgU2xvZy5pKFRBRywgIlN0YXJ0aW5nIGlucHV0IG1hbmFnZXIiKTsKKyAgICAgICAgbmF0aXZlU3RhcnQoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0RGlzcGxheVNpemUoaW50IGRpc3BsYXlJZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisgICAgICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGRpc3BsYXkgaWQgb3IgZGltZW5zaW9ucy4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU2xvZy5pKFRBRywgIlNldHRpbmcgZGlzcGxheSAjIiArIGRpc3BsYXlJZCArICIgc2l6ZSB0byAiICsgd2lkdGggKyAieCIgKyBoZWlnaHQpOworICAgICAgICBuYXRpdmVTZXREaXNwbGF5U2l6ZShkaXNwbGF5SWQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXREaXNwbGF5T3JpZW50YXRpb24oaW50IGRpc3BsYXlJZCwgaW50IHJvdGF0aW9uKSB7CisgICAgICAgIGlmIChyb3RhdGlvbiA8IFN1cmZhY2UuUk9UQVRJT05fMCB8fCByb3RhdGlvbiA+IFN1cmZhY2UuUk9UQVRJT05fMjcwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHJvdGF0aW9uLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTbG9nLmkoVEFHLCAiU2V0dGluZyBkaXNwbGF5ICMiICsgZGlzcGxheUlkICsgIiBvcmllbnRhdGlvbiB0byAiICsgcm90YXRpb24pOworICAgICAgICBuYXRpdmVTZXREaXNwbGF5T3JpZW50YXRpb24oZGlzcGxheUlkLCByb3RhdGlvbik7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGdldElucHV0Q29uZmlndXJhdGlvbihDb25maWd1cmF0aW9uIGNvbmZpZykgeworICAgICAgICBpZiAoY29uZmlnID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImNvbmZpZyBtdXN0IG5vdCBiZSBudWxsLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25maWcudG91Y2hzY3JlZW4gPSBtVG91Y2hTY3JlZW5Db25maWc7CisgICAgICAgIGNvbmZpZy5rZXlib2FyZCA9IG1LZXlib2FyZENvbmZpZzsKKyAgICAgICAgY29uZmlnLm5hdmlnYXRpb24gPSBtTmF2aWdhdGlvbkNvbmZpZzsKKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBnZXRTY2FuY29kZVN0YXRlKGludCBjb2RlKSB7CisgICAgICAgIHJldHVybiBuYXRpdmVHZXRTY2FuQ29kZVN0YXRlKDAsIC0xLCBjb2RlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBnZXRTY2FuY29kZVN0YXRlKGludCBkZXZpY2VJZCwgaW50IGNvZGUpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldFNjYW5Db2RlU3RhdGUoZGV2aWNlSWQsIC0xLCBjb2RlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBnZXRUcmFja2JhbGxTY2FuY29kZVN0YXRlKGludCBjb2RlKSB7CisgICAgICAgIHJldHVybiBuYXRpdmVHZXRTY2FuQ29kZVN0YXRlKC0xLCBDTEFTU19UUkFDS0JBTEwsIGNvZGUpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldERQYWRTY2FuY29kZVN0YXRlKGludCBjb2RlKSB7CisgICAgICAgIHJldHVybiBuYXRpdmVHZXRTY2FuQ29kZVN0YXRlKC0xLCBDTEFTU19EUEFELCBjb2RlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBnZXRLZXljb2RlU3RhdGUoaW50IGNvZGUpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldEtleUNvZGVTdGF0ZSgwLCAtMSwgY29kZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgZ2V0S2V5Y29kZVN0YXRlKGludCBkZXZpY2VJZCwgaW50IGNvZGUpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldEtleUNvZGVTdGF0ZShkZXZpY2VJZCwgLTEsIGNvZGUpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldFRyYWNrYmFsbEtleWNvZGVTdGF0ZShpbnQgY29kZSkgeworICAgICAgICByZXR1cm4gbmF0aXZlR2V0S2V5Q29kZVN0YXRlKC0xLCBDTEFTU19UUkFDS0JBTEwsIGNvZGUpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldERQYWRLZXljb2RlU3RhdGUoaW50IGNvZGUpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldEtleUNvZGVTdGF0ZSgtMSwgQ0xBU1NfRFBBRCwgY29kZSk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRTd2l0Y2hTdGF0ZShpbnQgc3cpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldFN3aXRjaFN0YXRlKC0xLCAtMSwgc3cpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldFN3aXRjaFN0YXRlKGludCBkZXZpY2VJZCwgaW50IHN3KSB7CisgICAgICAgIHJldHVybiBuYXRpdmVHZXRTd2l0Y2hTdGF0ZShkZXZpY2VJZCwgLTEsIHN3KTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNLZXlzKGludFtdIGtleUNvZGVzLCBib29sZWFuW10ga2V5RXhpc3RzKSB7CisgICAgICAgIGlmIChrZXlDb2RlcyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJrZXlDb2RlcyBtdXN0IG5vdCBiZSBudWxsLiIpOworICAgICAgICB9CisgICAgICAgIGlmIChrZXlFeGlzdHMgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigia2V5RXhpc3RzIG11c3Qgbm90IGJlIG51bGwuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBuYXRpdmVIYXNLZXlzKGtleUNvZGVzLCBrZXlFeGlzdHMpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCByZWdpc3RlcklucHV0Q2hhbm5lbChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKSB7CisgICAgICAgIGlmIChpbnB1dENoYW5uZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW5wdXRDaGFubmVsIG11c3Qgbm90IGJlIG51bGwuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5hdGl2ZVJlZ2lzdGVySW5wdXRDaGFubmVsKGlucHV0Q2hhbm5lbCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHVucmVnaXN0ZXJJbnB1dENoYW5uZWwoSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCkgeworICAgICAgICBpZiAoaW5wdXRDaGFubmVsID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImlucHV0Q2hhbm5lbCBtdXN0IG5vdCBiZSBudWxsLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBuYXRpdmVVbnJlZ2lzdGVySW5wdXRDaGFubmVsKGlucHV0Q2hhbm5lbCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEluamVjdHMgYSBrZXkgZXZlbnQgaW50byB0aGUgZXZlbnQgc3lzdGVtIG9uIGJlaGFsZiBvZiBhbiBhcHBsaWNhdGlvbi4KKyAgICAgKiBUaGlzIG1ldGhvZCBtYXkgYmxvY2sgZXZlbiBpZiBzeW5jIGlzIGZhbHNlIGJlY2F1c2UgaXQgbXVzdCB3YWl0IGZvciBwcmV2aW91cyBldmVudHMKKyAgICAgKiB0byBiZSBkaXNwYXRjaGVkIGJlZm9yZSBpdCBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgaW5wdXQgZXZlbnQgaW5qZWN0aW9uIHdpbGwgYmUKKyAgICAgKiBwZXJtaXR0ZWQgYmFzZWQgb24gdGhlIGN1cnJlbnQgaW5wdXQgZm9jdXMuCisgICAgICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCB0byBpbmplY3QuCisgICAgICogQHBhcmFtIG5hdHVyZSBUaGUgbmF0dXJlIG9mIHRoZSBldmVudC4KKyAgICAgKiBAcGFyYW0gaW5qZWN0b3JQaWQgVGhlIHBpZCBvZiB0aGUgaW5qZWN0aW5nIGFwcGxpY2F0aW9uLgorICAgICAqIEBwYXJhbSBpbmplY3RvclVpZCBUaGUgdWlkIG9mIHRoZSBpbmplY3RpbmcgYXBwbGljYXRpb24uCisgICAgICogQHBhcmFtIHN5bmMgSWYgdHJ1ZSwgd2FpdHMgZm9yIHRoZSBldmVudCB0byBiZSBjb21wbGV0ZWQgYmVmb3JlIHJldHVybmluZy4KKyAgICAgKiBAcGFyYW0gdGltZW91dE1pbGxpcyBUaGUgaW5qZWN0aW9uIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLgorICAgICAqIEByZXR1cm4gT25lIG9mIHRoZSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fWFhYIGNvbnN0YW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGluamVjdEtleUV2ZW50KEtleUV2ZW50IGV2ZW50LCBpbnQgbmF0dXJlLCBpbnQgaW5qZWN0b3JQaWQsIGludCBpbmplY3RvclVpZCwKKyAgICAgICAgICAgIGJvb2xlYW4gc3luYywgaW50IHRpbWVvdXRNaWxsaXMpIHsKKyAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImV2ZW50IG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5qZWN0b3JQaWQgPCAwIHx8IGluamVjdG9yVWlkIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW5qZWN0b3JQaWQgYW5kIGluamVjdG9yVWlkIG11c3Qgbm90IGJlIG5lZ2F0aXZlLiIpOworICAgICAgICB9CisgICAgICAgIGlmICh0aW1lb3V0TWlsbGlzIDw9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInRpbWVvdXRNaWxsaXMgbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbmF0aXZlSW5qZWN0S2V5RXZlbnQoZXZlbnQsIG5hdHVyZSwgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLAorICAgICAgICAgICAgICAgIHN5bmMsIHRpbWVvdXRNaWxsaXMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBJbmplY3RzIGEgbW90aW9uIGV2ZW50IGludG8gdGhlIGV2ZW50IHN5c3RlbSBvbiBiZWhhbGYgb2YgYW4gYXBwbGljYXRpb24uCisgICAgICogVGhpcyBtZXRob2QgbWF5IGJsb2NrIGV2ZW4gaWYgc3luYyBpcyBmYWxzZSBiZWNhdXNlIGl0IG11c3Qgd2FpdCBmb3IgcHJldmlvdXMgZXZlbnRzCisgICAgICogdG8gYmUgZGlzcGF0Y2hlZCBiZWZvcmUgaXQgY2FuIGRldGVybWluZSB3aGV0aGVyIGlucHV0IGV2ZW50IGluamVjdGlvbiB3aWxsIGJlCisgICAgICogcGVybWl0dGVkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGlucHV0IGZvY3VzLgorICAgICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgdG8gaW5qZWN0LgorICAgICAqIEBwYXJhbSBuYXR1cmUgVGhlIG5hdHVyZSBvZiB0aGUgZXZlbnQuCisgICAgICogQHBhcmFtIHN5bmMgSWYgdHJ1ZSwgd2FpdHMgZm9yIHRoZSBldmVudCB0byBiZSBjb21wbGV0ZWQgYmVmb3JlIHJldHVybmluZy4KKyAgICAgKiBAcGFyYW0gaW5qZWN0b3JQaWQgVGhlIHBpZCBvZiB0aGUgaW5qZWN0aW5nIGFwcGxpY2F0aW9uLgorICAgICAqIEBwYXJhbSBpbmplY3RvclVpZCBUaGUgdWlkIG9mIHRoZSBpbmplY3RpbmcgYXBwbGljYXRpb24uCisgICAgICogQHBhcmFtIHN5bmMgSWYgdHJ1ZSwgd2FpdHMgZm9yIHRoZSBldmVudCB0byBiZSBjb21wbGV0ZWQgYmVmb3JlIHJldHVybmluZy4KKyAgICAgKiBAcGFyYW0gdGltZW91dE1pbGxpcyBUaGUgaW5qZWN0aW9uIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLgorICAgICAqIEByZXR1cm4gT25lIG9mIHRoZSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fWFhYIGNvbnN0YW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGluamVjdE1vdGlvbkV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50LCBpbnQgbmF0dXJlLCBpbnQgaW5qZWN0b3JQaWQsIGludCBpbmplY3RvclVpZCwKKyAgICAgICAgICAgIGJvb2xlYW4gc3luYywgaW50IHRpbWVvdXRNaWxsaXMpIHsKKyAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImV2ZW50IG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5qZWN0b3JQaWQgPCAwIHx8IGluamVjdG9yVWlkIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW5qZWN0b3JQaWQgYW5kIGluamVjdG9yVWlkIG11c3Qgbm90IGJlIG5lZ2F0aXZlLiIpOworICAgICAgICB9CisgICAgICAgIGlmICh0aW1lb3V0TWlsbGlzIDw9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInRpbWVvdXRNaWxsaXMgbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbmF0aXZlSW5qZWN0TW90aW9uRXZlbnQoZXZlbnQsIG5hdHVyZSwgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLAorICAgICAgICAgICAgICAgIHN5bmMsIHRpbWVvdXRNaWxsaXMpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXRJbnB1dFdpbmRvd3MoSW5wdXRXaW5kb3dbXSB3aW5kb3dzKSB7CisgICAgICAgIG5hdGl2ZVNldElucHV0V2luZG93cyh3aW5kb3dzKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0Rm9jdXNlZEFwcGxpY2F0aW9uKElucHV0QXBwbGljYXRpb24gYXBwbGljYXRpb24pIHsKKyAgICAgICAgbmF0aXZlU2V0Rm9jdXNlZEFwcGxpY2F0aW9uKGFwcGxpY2F0aW9uKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgcHJlZW1wdElucHV0RGlzcGF0Y2goKSB7CisgICAgICAgIG5hdGl2ZVByZWVtcHRJbnB1dERpc3BhdGNoKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNldElucHV0RGlzcGF0Y2hNb2RlKGJvb2xlYW4gZW5hYmxlZCwgYm9vbGVhbiBmcm96ZW4pIHsKKyAgICAgICAgbmF0aXZlU2V0SW5wdXREaXNwYXRjaE1vZGUoZW5hYmxlZCwgZnJvemVuKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgZHVtcChQcmludFdyaXRlciBwdykgeworICAgICAgICAvLyBUT0RPCisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIFZpcnR1YWxLZXlEZWZpbml0aW9uIHsKKyAgICAgICAgcHVibGljIGludCBzY2FuQ29kZTsKKyAgICAgICAgCisgICAgICAgIC8vIGNvbmZpZ3VyZWQgcG9zaXRpb24gZGF0YSwgc3BlY2lmaWVkIGluIGRpc3BsYXkgY29vcmRzCisgICAgICAgIHB1YmxpYyBpbnQgY2VudGVyWDsKKyAgICAgICAgcHVibGljIGludCBjZW50ZXJZOworICAgICAgICBwdWJsaWMgaW50IHdpZHRoOworICAgICAgICBwdWJsaWMgaW50IGhlaWdodDsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBDYWxsYmFja3MgZnJvbSBuYXRpdmUuCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBDYWxsYmFja3MgeworICAgICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJJbnB1dE1hbmFnZXItQ2FsbGJhY2tzIjsKKyAgICAgICAgCisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfVklSVFVBTF9LRVlTID0gZmFsc2U7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFWENMVURFRF9ERVZJQ0VTX1BBVEggPSAiZXRjL2V4Y2x1ZGVkLWlucHV0LWRldmljZXMueG1sIjsKKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1NjcmVlbk9uKCkgeworICAgICAgICAgICAgcmV0dXJuIG1Qb3dlck1hbmFnZXJTZXJ2aWNlLmlzU2NyZWVuT24oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzU2NyZWVuQnJpZ2h0KCkgeworICAgICAgICAgICAgcmV0dXJuIG1Qb3dlck1hbmFnZXJTZXJ2aWNlLmlzU2NyZWVuQnJpZ2h0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCB2aXJ0dWFsS2V5RmVlZGJhY2sobG9uZyB3aGVuTmFub3MsIGludCBkZXZpY2VJZCwgaW50IGFjdGlvbiwgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgIGludCBrZXlDb2RlLCBpbnQgc2NhbkNvZGUsIGludCBtZXRhU3RhdGUsIGxvbmcgZG93blRpbWVOYW5vcykgeworICAgICAgICAgICAgS2V5RXZlbnQga2V5RXZlbnQgPSBuZXcgS2V5RXZlbnQoZG93blRpbWVOYW5vcyAvIDEwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIHdoZW5OYW5vcyAvIDEwMDAwMDAsIGFjdGlvbiwga2V5Q29kZSwgMCwgbWV0YVN0YXRlLCBzY2FuQ29kZSwgZGV2aWNlSWQsCisgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbVdpbmRvd01hbmFnZXJTZXJ2aWNlLnZpcnR1YWxLZXlGZWVkYmFjayhrZXlFdmVudCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZChsb25nIHdoZW5OYW5vcywKKyAgICAgICAgICAgICAgICBpbnQgdG91Y2hTY3JlZW5Db25maWcsIGludCBrZXlib2FyZENvbmZpZywgaW50IG5hdmlnYXRpb25Db25maWcpIHsKKyAgICAgICAgICAgIG1Ub3VjaFNjcmVlbkNvbmZpZyA9IHRvdWNoU2NyZWVuQ29uZmlnOworICAgICAgICAgICAgbUtleWJvYXJkQ29uZmlnID0ga2V5Ym9hcmRDb25maWc7CisgICAgICAgICAgICBtTmF2aWdhdGlvbkNvbmZpZyA9IG5hdmlnYXRpb25Db25maWc7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyU2VydmljZS5zZW5kTmV3Q29uZmlndXJhdGlvbigpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIHZvaWQgbm90aWZ5TGlkU3dpdGNoQ2hhbmdlZChsb25nIHdoZW5OYW5vcywgYm9vbGVhbiBsaWRPcGVuKSB7CisgICAgICAgICAgICBtV2luZG93TWFuYWdlclBvbGljeS5ub3RpZnlMaWRTd2l0Y2hDaGFuZ2VkKHdoZW5OYW5vcywgbGlkT3Blbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlJbnB1dENoYW5uZWxCcm9rZW4oSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCkgeworICAgICAgICAgICAgbVdpbmRvd01hbmFnZXJTZXJ2aWNlLm1JbnB1dE1vbml0b3Iubm90aWZ5SW5wdXRDaGFubmVsQnJva2VuKGlucHV0Q2hhbm5lbCk7CisgICAgICAgIH0KKworICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIGxvbmcgbm90aWZ5SW5wdXRDaGFubmVsQU5SKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIHJldHVybiBtV2luZG93TWFuYWdlclNlcnZpY2UubUlucHV0TW9uaXRvci5ub3RpZnlJbnB1dENoYW5uZWxBTlIoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgfQorCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5SKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyU2VydmljZS5tSW5wdXRNb25pdG9yLm5vdGlmeUlucHV0Q2hhbm5lbFJlY292ZXJlZEZyb21BTlIoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyBsb25nIG5vdGlmeUFOUihPYmplY3QgdG9rZW4pIHsKKyAgICAgICAgICAgIHJldHVybiBtV2luZG93TWFuYWdlclNlcnZpY2UubUlucHV0TW9uaXRvci5ub3RpZnlBTlIodG9rZW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIGludCBpbnRlcmNlcHRLZXlCZWZvcmVRdWV1ZWluZyhpbnQgZGV2aWNlSWQsIGludCB0eXBlLCBpbnQgc2NhbkNvZGUsCisgICAgICAgICAgICAgICAgaW50IGtleUNvZGUsIGludCBwb2xpY3lGbGFncywgaW50IHZhbHVlLCBsb25nIHdoZW5OYW5vcywgYm9vbGVhbiBpc1NjcmVlbk9uKSB7CisgICAgICAgICAgICByZXR1cm4gbVdpbmRvd01hbmFnZXJTZXJ2aWNlLm1JbnB1dE1vbml0b3IuaW50ZXJjZXB0S2V5QmVmb3JlUXVldWVpbmcoZGV2aWNlSWQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgIHNjYW5Db2RlLCBrZXlDb2RlLCBwb2xpY3lGbGFncywgdmFsdWUsIHdoZW5OYW5vcywgaXNTY3JlZW5Pbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZyhJbnB1dENoYW5uZWwgZm9jdXMsIGludCBrZXlDb2RlLAorICAgICAgICAgICAgICAgIGludCBtZXRhU3RhdGUsIGJvb2xlYW4gZG93biwgaW50IHJlcGVhdENvdW50LCBpbnQgcG9saWN5RmxhZ3MpIHsKKyAgICAgICAgICAgIHJldHVybiBtV2luZG93TWFuYWdlclNlcnZpY2UubUlucHV0TW9uaXRvci5pbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZyhmb2N1cywKKyAgICAgICAgICAgICAgICAgICAga2V5Q29kZSwgbWV0YVN0YXRlLCBkb3duLCByZXBlYXRDb3VudCwgcG9saWN5RmxhZ3MpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIGJvb2xlYW4gY2hlY2tJbmplY3RFdmVudHNQZXJtaXNzaW9uKGludCBpbmplY3RvclBpZCwgaW50IGluamVjdG9yVWlkKSB7CisgICAgICAgICAgICByZXR1cm4gbUNvbnRleHQuY2hlY2tQZXJtaXNzaW9uKAorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uSU5KRUNUX0VWRU5UUywgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkKQorICAgICAgICAgICAgICAgICAgICA9PSBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCBnb1RvU2xlZXAobG9uZyB3aGVuTmFub3MpIHsKKyAgICAgICAgICAgIGxvbmcgd2hlbiA9IHdoZW5OYW5vcyAvIDEwMDAwMDA7CisgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLmdvVG9TbGVlcCh3aGVuKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyB2b2lkIHBva2VVc2VyQWN0aXZpdHkobG9uZyBldmVudFRpbWVOYW5vcywgaW50IGV2ZW50VHlwZSkgeworICAgICAgICAgICAgbG9uZyBldmVudFRpbWUgPSBldmVudFRpbWVOYW5vcyAvIDEwMDAwMDA7CisgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyU2VydmljZS51c2VyQWN0aXZpdHkoZXZlbnRUaW1lLCBmYWxzZSwgZXZlbnRUeXBlLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlBcHBTd2l0Y2hDb21pbmcoKSB7CisgICAgICAgICAgICBtV2luZG93TWFuYWdlclNlcnZpY2UubUlucHV0TW9uaXRvci5ub3RpZnlBcHBTd2l0Y2hDb21pbmcoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyBib29sZWFuIGZpbHRlclRvdWNoRXZlbnRzKCkgeworICAgICAgICAgICAgcmV0dXJuIG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfZmlsdGVyVG91Y2hFdmVudHMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZmlsdGVySnVtcHlUb3VjaEV2ZW50cygpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX2ZpbHRlckp1bXB5VG91Y2hFdmVudHMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIFZpcnR1YWxLZXlEZWZpbml0aW9uW10gZ2V0VmlydHVhbEtleURlZmluaXRpb25zKFN0cmluZyBkZXZpY2VOYW1lKSB7CisgICAgICAgICAgICBBcnJheUxpc3Q8VmlydHVhbEtleURlZmluaXRpb24+IGtleXMgPSBuZXcgQXJyYXlMaXN0PFZpcnR1YWxLZXlEZWZpbml0aW9uPigpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAgICAgIi9zeXMvYm9hcmRfcHJvcGVydGllcy92aXJ0dWFsa2V5cy4iICsgZGV2aWNlTmFtZSk7CisgICAgICAgICAgICAgICAgSW5wdXRTdHJlYW1SZWFkZXIgaXNyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKGZpcyk7CisgICAgICAgICAgICAgICAgQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIoaXNyLCAyMDQ4KTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyID0gYnIucmVhZExpbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gaXQgPSBzdHIuc3BsaXQoIjoiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJUlRVQUxfS0VZUykgU2xvZy52KFRBRywgIioqKioqIFZJUlRVQUwgS0VZUzogIiArIGl0KTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IE4gPSBpdC5sZW5ndGgtNjsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPD1OOyBpKz02KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISIweDAxIi5lcXVhbHMoaXRbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlVua25vd24gdmlydHVhbCBrZXkgdHlwZSBhdCBlbGVtICMiICsgaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiAiICsgaXRbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsS2V5RGVmaW5pdGlvbiBrZXkgPSBuZXcgVmlydHVhbEtleURlZmluaXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkuc2NhbkNvZGUgPSBJbnRlZ2VyLnBhcnNlSW50KGl0W2krMV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5jZW50ZXJYID0gSW50ZWdlci5wYXJzZUludChpdFtpKzJdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkuY2VudGVyWSA9IEludGVnZXIucGFyc2VJbnQoaXRbaSszXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LndpZHRoID0gSW50ZWdlci5wYXJzZUludChpdFtpKzRdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkuaGVpZ2h0ID0gSW50ZWdlci5wYXJzZUludChpdFtpKzVdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklSVFVBTF9LRVlTKSBTbG9nLnYoVEFHLCAiVmlydHVhbCBrZXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBrZXkuc2NhbkNvZGUgKyAiOiBjZW50ZXI9IiArIGtleS5jZW50ZXJYICsgIiwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGtleS5jZW50ZXJZICsgIiBzaXplPSIgKyBrZXkud2lkdGggKyAieCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsga2V5LmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cy5hZGQoa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkJhZCBudW1iZXIgYXQgcmVnaW9uICIgKyBpICsgIiBpbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzdHIsIGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyLmNsb3NlKCk7CisgICAgICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJObyB2aXJ0dWFsIGtleXMgZm91bmQiKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXJyb3IgcmVhZGluZyB2aXJ0dWFsIGtleXMiLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGtleXMudG9BcnJheShuZXcgVmlydHVhbEtleURlZmluaXRpb25ba2V5cy5zaXplKCldKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyBTdHJpbmdbXSBnZXRFeGNsdWRlZERldmljZU5hbWVzKCkgeworICAgICAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gbmFtZXMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gUmVhZCBwYXJ0bmVyLXByb3ZpZGVkIGxpc3Qgb2YgZXhjbHVkZWQgaW5wdXQgZGV2aWNlcworICAgICAgICAgICAgWG1sUHVsbFBhcnNlciBwYXJzZXIgPSBudWxsOworICAgICAgICAgICAgLy8gRW52aXJvbm1lbnQuZ2V0Um9vdERpcmVjdG9yeSgpIGlzIGEgZmFuY3kgd2F5IG9mIHNheWluZyBBTkRST0lEX1JPT1Qgb3IgIi9zeXN0ZW0iLgorICAgICAgICAgICAgRmlsZSBjb25mRmlsZSA9IG5ldyBGaWxlKEVudmlyb25tZW50LmdldFJvb3REaXJlY3RvcnkoKSwgRVhDTFVERURfREVWSUNFU19QQVRIKTsKKyAgICAgICAgICAgIEZpbGVSZWFkZXIgY29uZnJlYWRlciA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNvbmZyZWFkZXIgPSBuZXcgRmlsZVJlYWRlcihjb25mRmlsZSk7CisgICAgICAgICAgICAgICAgcGFyc2VyID0gWG1sLm5ld1B1bGxQYXJzZXIoKTsKKyAgICAgICAgICAgICAgICBwYXJzZXIuc2V0SW5wdXQoY29uZnJlYWRlcik7CisgICAgICAgICAgICAgICAgWG1sVXRpbHMuYmVnaW5Eb2N1bWVudChwYXJzZXIsICJkZXZpY2VzIik7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICBYbWxVdGlscy5uZXh0RWxlbWVudChwYXJzZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAoISJkZXZpY2UiLmVxdWFscyhwYXJzZXIuZ2V0TmFtZSgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBwYXJzZXIuZ2V0QXR0cmlidXRlVmFsdWUobnVsbCwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJdCdzIG9rIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LgorICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRXhjZXB0aW9uIHdoaWxlIHBhcnNpbmcgJyIgKyBjb25mRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSArICInIiwgZSk7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIHRyeSB7IGlmIChjb25mcmVhZGVyICE9IG51bGwpIGNvbmZyZWFkZXIuY2xvc2UoKTsgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeyB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBuYW1lcy50b0FycmF5KG5ldyBTdHJpbmdbbmFtZXMuc2l6ZSgpXSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dE1ldGhvZE1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dE1ldGhvZE1hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggMGMyMDVjYS4uNGQzNWJlYyAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNZXRob2RNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWV0aG9kTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMjYsOCArMjYsNyBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kU2Vzc2lvbjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LklucHV0QmluZFJlc3VsdDsKIAotaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuSWNvbkRhdGE7Ci1pbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5TdGF0dXNCYXJTZXJ2aWNlOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5TdGF0dXNCYXJNYW5hZ2VyU2VydmljZTsKIAogaW1wb3J0IG9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb247CiAKQEAgLTExMCw5ICsxMDksNyBAQAogICAgIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CiAgICAgZmluYWwgSGFuZGxlciBtSGFuZGxlcjsKICAgICBmaW5hbCBTZXR0aW5nc09ic2VydmVyIG1TZXR0aW5nc09ic2VydmVyOwotICAgIGZpbmFsIFN0YXR1c0JhclNlcnZpY2UgbVN0YXR1c0JhcjsKLSAgICBmaW5hbCBJQmluZGVyIG1JbnB1dE1ldGhvZEljb247Ci0gICAgZmluYWwgSWNvbkRhdGEgbUlucHV0TWV0aG9kRGF0YTsKKyAgICBmaW5hbCBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSBtU3RhdHVzQmFyOwogICAgIGZpbmFsIElXaW5kb3dNYW5hZ2VyIG1JV2luZG93TWFuYWdlcjsKICAgICBmaW5hbCBIYW5kbGVyQ2FsbGVyIG1DYWxsZXI7CiAKQEAgLTQ0Nyw3ICs0NDQsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHVibGljIElucHV0TWV0aG9kTWFuYWdlclNlcnZpY2UoQ29udGV4dCBjb250ZXh0LCBTdGF0dXNCYXJTZXJ2aWNlIHN0YXR1c0JhcikgeworICAgIHB1YmxpYyBJbnB1dE1ldGhvZE1hbmFnZXJTZXJ2aWNlKENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2Ugc3RhdHVzQmFyKSB7CiAgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKICAgICAgICAgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcih0aGlzKTsKICAgICAgICAgbUlXaW5kb3dNYW5hZ2VyID0gSVdpbmRvd01hbmFnZXIuU3R1Yi5hc0ludGVyZmFjZSgKQEAgLTUwOCw5ICs1MDUsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgbVN0YXR1c0JhciA9IHN0YXR1c0JhcjsKLSAgICAgICAgbUlucHV0TWV0aG9kRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJpbWUiLCBudWxsLCAwLCAwLCAwKTsKLSAgICAgICAgbUlucHV0TWV0aG9kSWNvbiA9IHN0YXR1c0Jhci5hZGRJY29uKG1JbnB1dE1ldGhvZERhdGEsIG51bGwpOwotICAgICAgICBzdGF0dXNCYXIuc2V0SWNvblZpc2liaWxpdHkobUlucHV0TWV0aG9kSWNvbiwgZmFsc2UpOworICAgICAgICBzdGF0dXNCYXIuc2V0SWNvblZpc2liaWxpdHkoImltZSIsIGZhbHNlKTsKIAogICAgICAgICBtU2V0dGluZ3NPYnNlcnZlciA9IG5ldyBTZXR0aW5nc09ic2VydmVyKG1IYW5kbGVyKTsKICAgICAgICAgdXBkYXRlRnJvbVNldHRpbmdzTG9ja2VkKCk7CkBAIC04ODksMTYgKzg4NCwzMCBAQAogICAgICAgICAgICAgICAgICAgICBNU0dfVU5CSU5EX01FVEhPRCwgbUN1clNlcSwgbUN1ckNsaWVudC5jbGllbnQpKTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgZmluaXNoU2Vzc2lvbihTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKSB7CisgICAgICAgIGlmIChzZXNzaW9uU3RhdGUgIT0gbnVsbCAmJiBzZXNzaW9uU3RhdGUuc2Vzc2lvbiAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHNlc3Npb25TdGF0ZS5zZXNzaW9uLmZpbmlzaFNlc3Npb24oKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlNlc3Npb24gZmFpbGVkIHRvIGNsb3NlIGR1ZSB0byByZW1vdGUgZXhjZXB0aW9uIiwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKICAgICB2b2lkIGNsZWFyQ3VyTWV0aG9kTG9ja2VkKCkgewogICAgICAgICBpZiAobUN1ck1ldGhvZCAhPSBudWxsKSB7CiAgICAgICAgICAgICBmb3IgKENsaWVudFN0YXRlIGNzIDogbUNsaWVudHMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBjcy5zZXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZmluaXNoU2Vzc2lvbihjcy5jdXJTZXNzaW9uKTsKICAgICAgICAgICAgICAgICBjcy5jdXJTZXNzaW9uID0gbnVsbDsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmluaXNoU2Vzc2lvbihtRW5hYmxlZFNlc3Npb24pOworICAgICAgICAgICAgbUVuYWJsZWRTZXNzaW9uID0gbnVsbDsKICAgICAgICAgICAgIG1DdXJNZXRob2QgPSBudWxsOwogICAgICAgICB9Ci0gICAgICAgIG1TdGF0dXNCYXIuc2V0SWNvblZpc2liaWxpdHkobUlucHV0TWV0aG9kSWNvbiwgZmFsc2UpOworICAgICAgICBtU3RhdHVzQmFyLnNldEljb25WaXNpYmlsaXR5KCJpbWUiLCBmYWxzZSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlRGlzY29ubmVjdGVkKENvbXBvbmVudE5hbWUgbmFtZSkgewpAQCAtOTMyLDEzICs5NDEsMTEgQEAKICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobU1ldGhvZE1hcCkgewogICAgICAgICAgICAgICAgIGlmIChpY29uSWQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFNsb2cuZChUQUcsICJoaWRlIHRoZSBzbWFsbCBpY29uIGZvciB0aGUgaW5wdXQgbWV0aG9kIik7Ci0gICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXIuc2V0SWNvblZpc2liaWxpdHkobUlucHV0TWV0aG9kSWNvbiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyLnNldEljb25WaXNpYmlsaXR5KCJpbWUiLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYWNrYWdlTmFtZSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU2xvZy5kKFRBRywgInNob3cgYSBzbWFsbCBpY29uIGZvciB0aGUgaW5wdXQgbWV0aG9kIik7Ci0gICAgICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZERhdGEuaWNvbklkID0gaWNvbklkOwotICAgICAgICAgICAgICAgICAgICBtSW5wdXRNZXRob2REYXRhLmljb25QYWNrYWdlID0gcGFja2FnZU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXIudXBkYXRlSWNvbihtSW5wdXRNZXRob2RJY29uLCBtSW5wdXRNZXRob2REYXRhLCBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhci5zZXRJY29uVmlzaWJpbGl0eShtSW5wdXRNZXRob2RJY29uLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhci5zZXRJY29uKCJpbWUiLCBwYWNrYWdlTmFtZSwgaWNvbklkLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhci5zZXRJY29uVmlzaWJpbGl0eSgiaW1lIiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGZpbmFsbHkgewpAQCAtMTcyMCw4ICsxNzI3LDYgQEAKICAgICAgICAgICAgICAgICBwLnByaW50bG4oIiAgICBzZXNzaW9uUmVxdWVzdGVkPSIgKyBjaS5zZXNzaW9uUmVxdWVzdGVkKTsKICAgICAgICAgICAgICAgICBwLnByaW50bG4oIiAgICBjdXJTZXNzaW9uPSIgKyBjaS5jdXJTZXNzaW9uKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHAucHJpbnRsbigiICBtSW5wdXRNZXRob2RJY29uPSIgKyBtSW5wdXRNZXRob2RJY29uKTsKLSAgICAgICAgICAgIHAucHJpbnRsbigiICBtSW5wdXRNZXRob2REYXRhPSIgKyBtSW5wdXRNZXRob2REYXRhKTsKICAgICAgICAgICAgIHAucHJpbnRsbigiICBtQ3VyTWV0aG9kSWQ9IiArIG1DdXJNZXRob2RJZCk7CiAgICAgICAgICAgICBjbGllbnQgPSBtQ3VyQ2xpZW50OwogICAgICAgICAgICAgcC5wcmludGxuKCIgIG1DdXJDbGllbnQ9IiArIGNsaWVudCArICIgbUN1clNlcT0iICsgbUN1clNlcSk7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dFdpbmRvdy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRXaW5kb3cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGEwY2YxCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRXaW5kb3cuamF2YQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXI7CisKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSW5wdXRDaGFubmVsOworCisvKioKKyAqIERlc2NyaWJlcyBpbnB1dC1yZWxhdGVkIHdpbmRvdyBwcm9wZXJ0aWVzIGZvciB1c2UgYnkgdGhlIGlucHV0IGRpc3BhdGNoZXIuCisgKiAKKyAqIEBoaWRlCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBJbnB1dFdpbmRvdyB7CisgICAgLy8gVGhlIGlucHV0IGNoYW5uZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB3aW5kb3cuCisgICAgcHVibGljIElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWw7CisgICAgCisgICAgLy8gV2luZG93IGxheW91dCBwYXJhbXMgYXR0cmlidXRlcy4gIChXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcykKKyAgICBwdWJsaWMgaW50IGxheW91dFBhcmFtc0ZsYWdzOworICAgIHB1YmxpYyBpbnQgbGF5b3V0UGFyYW1zVHlwZTsKKyAgICAKKyAgICAvLyBEaXNwYXRjaGluZyB0aW1lb3V0LgorICAgIHB1YmxpYyBsb25nIGRpc3BhdGNoaW5nVGltZW91dE5hbm9zOworICAgIAorICAgIC8vIFdpbmRvdyBmcmFtZSBwb3NpdGlvbi4KKyAgICBwdWJsaWMgaW50IGZyYW1lTGVmdDsKKyAgICBwdWJsaWMgaW50IGZyYW1lVG9wOworICAgIAorICAgIC8vIFdpbmRvdyB0b3VjaGFibGUgYXJlYS4KKyAgICBwdWJsaWMgaW50IHRvdWNoYWJsZUFyZWFMZWZ0OworICAgIHB1YmxpYyBpbnQgdG91Y2hhYmxlQXJlYVRvcDsKKyAgICBwdWJsaWMgaW50IHRvdWNoYWJsZUFyZWFSaWdodDsKKyAgICBwdWJsaWMgaW50IHRvdWNoYWJsZUFyZWFCb3R0b207CisgICAgCisgICAgLy8gV2luZG93IGlzIHZpc2libGUuCisgICAgcHVibGljIGJvb2xlYW4gdmlzaWJsZTsKKyAgICAKKyAgICAvLyBXaW5kb3cgaGFzIGZvY3VzLgorICAgIHB1YmxpYyBib29sZWFuIGhhc0ZvY3VzOworICAgIAorICAgIC8vIFdpbmRvdyBoYXMgd2FsbHBhcGVyLiAgKHdpbmRvdyBpcyB0aGUgY3VycmVudCB3YWxscGFwZXIgdGFyZ2V0KQorICAgIHB1YmxpYyBib29sZWFuIGhhc1dhbGxwYXBlcjsKKyAgICAKKyAgICAvLyBJbnB1dCBldmVudCBkaXNwYXRjaGluZyBpcyBwYXVzZWQuCisgICAgcHVibGljIGJvb2xlYW4gcGF1c2VkOworICAgIAorICAgIC8vIElkIG9mIHByb2Nlc3MgYW5kIHVzZXIgdGhhdCBvd25zIHRoZSB3aW5kb3cuCisgICAgcHVibGljIGludCBvd25lclBpZDsKKyAgICBwdWJsaWMgaW50IG93bmVyVWlkOworICAgIAorICAgIHB1YmxpYyB2b2lkIHJlY3ljbGUoKSB7CisgICAgICAgIGlucHV0Q2hhbm5lbCA9IG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRXaW5kb3dMaXN0LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dFdpbmRvd0xpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2JiMmNjCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRXaW5kb3dMaXN0LmphdmEKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOworCisKKy8qKgorICogQSBzcGVjaWFsaXplZCBsaXN0IG9mIHdpbmRvdyBpbmZvcm1hdGlvbiBvYmplY3RzIGJhY2tlZCBieSBhbiBhcnJheS4KKyAqIAorICogVGhpcyBjbGFzcyBpcyBwYXJ0IG9mIGFuIElucHV0TWFuYWdlciBvcHRpbWl6YXRpb24gdG8gYXZvaWQgYWxsb2NhdGluZyBvYmplY3RzIGFuZCBhcnJheXMKKyAqIHVubmVjZXNzYXJpbHkuICBJbnRlcm5hbGx5LCBpdCBrZWVwcyBhbiBhcnJheSBmdWxsIG9mIGRlbWFuZC1hbGxvY2F0ZWQgb2JqZWN0cyB0aGF0IGl0CisgKiByZWN5Y2xlcyBlYWNoIHRpbWUgdGhlIGxpc3QgaXMgY2xlYXJlZC4gIFRoZSB1c2VkIHBvcnRpb24gb2YgdGhlIGFycmF5IGlzIHBhZGRlZCB3aXRoIGEgbnVsbC4KKyAqIAorICogVGhlIGNvbnRlbnRzIG9mIHRoZSBsaXN0IGFyZSBpbnRlbmRlZCB0byBiZSBaLW9yZGVyZWQgZnJvbSB0b3AgdG8gYm90dG9tLgorICogCisgKiBAaGlkZQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgSW5wdXRXaW5kb3dMaXN0IHsKKyAgICBwcml2YXRlIElucHV0V2luZG93W10gbUFycmF5OworICAgIHByaXZhdGUgaW50IG1Db3VudDsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIGVtcHR5IGxpc3QuCisgICAgICovCisgICAgcHVibGljIElucHV0V2luZG93TGlzdCgpIHsKKyAgICAgICAgbUFycmF5ID0gbmV3IElucHV0V2luZG93WzhdOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDbGVhcnMgdGhlIGxpc3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2xlYXIoKSB7CisgICAgICAgIGlmIChtQ291bnQgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgY291bnQgPSBtQ291bnQ7CisgICAgICAgIG1Db3VudCA9IDA7CisgICAgICAgIG1BcnJheVtjb3VudF0gPSBtQXJyYXlbMF07CisgICAgICAgIHdoaWxlIChjb3VudCA+IDApIHsKKyAgICAgICAgICAgIGNvdW50IC09IDE7CisgICAgICAgICAgICBtQXJyYXlbY291bnRdLnJlY3ljbGUoKTsKKyAgICAgICAgfQorICAgICAgICBtQXJyYXlbMF0gPSBudWxsOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGRzIGFuIHVuaW5pdGlhbGl6ZWQgaW5wdXQgd2luZG93IG9iamVjdCB0byB0aGUgbGlzdCBhbmQgcmV0dXJucyBpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSW5wdXRXaW5kb3cgYWRkKCkgeworICAgICAgICBpZiAobUNvdW50ICsgMSA9PSBtQXJyYXkubGVuZ3RoKSB7CisgICAgICAgICAgICBJbnB1dFdpbmRvd1tdIG9sZEFycmF5ID0gbUFycmF5OworICAgICAgICAgICAgbUFycmF5ID0gbmV3IElucHV0V2luZG93W29sZEFycmF5Lmxlbmd0aCAqIDJdOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShvbGRBcnJheSwgMCwgbUFycmF5LCAwLCBtQ291bnQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBHcmFiIG9iamVjdCBmcm9tIHRhaWwgKGFmdGVyIHVzZWQgc2VjdGlvbikgaWYgYXZhaWxhYmxlLgorICAgICAgICBJbnB1dFdpbmRvdyBpdGVtID0gbUFycmF5W21Db3VudCArIDFdOworICAgICAgICBpZiAoaXRlbSA9PSBudWxsKSB7CisgICAgICAgICAgICBpdGVtID0gbmV3IElucHV0V2luZG93KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1BcnJheVttQ291bnRdID0gaXRlbTsKKyAgICAgICAgbUNvdW50ICs9IDE7CisgICAgICAgIG1BcnJheVttQ291bnRdID0gbnVsbDsKKyAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIGlucHV0IHdpbmRvdyBvYmplY3RzIGFzIGEgbnVsbC10ZXJtaW5hdGVkIGFycmF5LgorICAgICAqIEByZXR1cm4gVGhlIGlucHV0IHdpbmRvdyBhcnJheS4KKyAgICAgKi8KKyAgICBwdWJsaWMgSW5wdXRXaW5kb3dbXSB0b051bGxUZXJtaW5hdGVkQXJyYXkoKSB7CisgICAgICAgIHJldHVybiBtQXJyYXk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0luc3RhbGxlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5zdGFsbGVyLmphdmEKaW5kZXggMmVhYTU4Yy4uMWYzNGViYSAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5zdGFsbGVyLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5zdGFsbGVyLmphdmEKQEAgLTE2NiwxMSArMTY2LDE3IEBACiAJCX0KIAl9CiAKLSAgICBwdWJsaWMgaW50IGluc3RhbGwoU3RyaW5nIG5hbWUsIGludCB1aWQsIGludCBnaWQpIHsKKyAgICBwdWJsaWMgaW50IGluc3RhbGwoU3RyaW5nIG5hbWUsIGJvb2xlYW4gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbSwgaW50IHVpZCwgaW50IGdpZCkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigiaW5zdGFsbCIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChuYW1lKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgaWYgKHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcxJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVpZCk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGdpZCk7CkBAIC0yMDMsMzMgKzIwOSw1NyBAQAogICAgICAgICByZXR1cm4gZXhlY3V0ZShidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIH0KIAotICAgIHB1YmxpYyBpbnQgcmVtb3ZlKFN0cmluZyBuYW1lKSB7CisgICAgcHVibGljIGludCByZW1vdmUoU3RyaW5nIG5hbWUsIGJvb2xlYW4gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigicmVtb3ZlIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBpZiAodXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzEnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGV4ZWN1dGUoYnVpbGRlci50b1N0cmluZygpKTsKICAgICB9CiAKLSAgICBwdWJsaWMgaW50IHJlbmFtZShTdHJpbmcgb2xkbmFtZSwgU3RyaW5nIG5ld25hbWUpIHsKKyAgICBwdWJsaWMgaW50IHJlbmFtZShTdHJpbmcgb2xkbmFtZSwgU3RyaW5nIG5ld25hbWUsIGJvb2xlYW4gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigicmVuYW1lIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG9sZG5hbWUpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChuZXduYW1lKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgaWYgKHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcxJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBleGVjdXRlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgfQogCi0gICAgcHVibGljIGludCBkZWxldGVDYWNoZUZpbGVzKFN0cmluZyBuYW1lKSB7CisgICAgcHVibGljIGludCBkZWxldGVDYWNoZUZpbGVzKFN0cmluZyBuYW1lLCBib29sZWFuIHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW0pIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoInJtY2FjaGUiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQobmFtZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGlmICh1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMScpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gZXhlY3V0ZShidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIH0KICAgICAKLSAgICBwdWJsaWMgaW50IGNsZWFyVXNlckRhdGEoU3RyaW5nIG5hbWUpIHsKKyAgICBwdWJsaWMgaW50IGNsZWFyVXNlckRhdGEoU3RyaW5nIG5hbWUsIGJvb2xlYW4gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigicm11c2VyZGF0YSIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChuYW1lKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgaWYgKHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcxJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBleGVjdXRlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgfQogICAgIApAQCAtMjYzLDcgKzI5Myw3IEBACiAgICAgfQogICAgIAogICAgIHB1YmxpYyBpbnQgZ2V0U2l6ZUluZm8oU3RyaW5nIHBrZ05hbWUsIFN0cmluZyBhcGtQYXRoLAotICAgICAgICAgICAgU3RyaW5nIGZ3ZExvY2tBcGtQYXRoLCBQYWNrYWdlU3RhdHMgcFN0YXRzKSB7CisgICAgICAgICAgICBTdHJpbmcgZndkTG9ja0Fwa1BhdGgsIFBhY2thZ2VTdGF0cyBwU3RhdHMsIGJvb2xlYW4gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigiZ2V0c2l6ZSIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChwa2dOYW1lKTsKQEAgLTI3MSw2ICszMDEsMTMgQEAKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXBrUGF0aCk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ3ZExvY2tBcGtQYXRoICE9IG51bGwgPyBmd2RMb2NrQXBrUGF0aCA6ICIhIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGlmICh1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMScpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgfQorCiAgICAgICAgIFN0cmluZyBzID0gdHJhbnNhY3Rpb24oYnVpbGRlci50b1N0cmluZygpKTsKICAgICAgICAgU3RyaW5nIHJlc1tdID0gcy5zcGxpdCgiICIpOwogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9LZXlJbnB1dFF1ZXVlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9LZXlJbnB1dFF1ZXVlLmphdmEKaW5kZXggZjMwMzQ2Yi4uZjYyYzdlZSAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvS2V5SW5wdXRRdWV1ZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0tleUlucHV0UXVldWUuamF2YQpAQCAtMjk4LDcgKzI5OCw5IEBACiAgICAgICAgIAogICAgICAgICBtSGFwdGljRmVlZGJhY2tDYWxsYmFjayA9IGhhcHRpY0ZlZWRiYWNrQ2FsbGJhY2s7CiAgICAgICAgIAotICAgICAgICByZWFkRXhjbHVkZWREZXZpY2VzKCk7CisgICAgICAgIGlmICghIFdpbmRvd01hbmFnZXJTZXJ2aWNlLkVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHJlYWRFeGNsdWRlZERldmljZXMoKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUG93ZXJNYW5hZ2VyIHBtID0gKFBvd2VyTWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuUE9XRVJfU0VSVklDRSk7CkBAIC0zMTEsNyArMzEzLDkgQEAKICAgICAgICAgbUZpcnN0Lm5leHQgPSBtTGFzdDsKICAgICAgICAgbUxhc3QucHJldiA9IG1GaXJzdDsKIAotICAgICAgICBtVGhyZWFkLnN0YXJ0KCk7CisgICAgICAgIGlmICghIFdpbmRvd01hbmFnZXJTZXJ2aWNlLkVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIG1UaHJlYWQuc3RhcnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHNldERpc3BsYXkoRGlzcGxheSBkaXNwbGF5KSB7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Mb2NhdGlvbk1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Mb2NhdGlvbk1hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggNjVmNDE5NC4uODUxOWUyYyAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTG9jYXRpb25NYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0xvY2F0aW9uTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMTYsMTcgKzE2LDYgQEAKIAogcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXI7CiAKLWltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5PYnNlcnZhYmxlOwotaW1wb3J0IGphdmEudXRpbC5PYnNlcnZlcjsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CiBpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CkBAIC00MSw2ICszMCw3IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CiBpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3I7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlclBhcmFtczsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklHcHNTdGF0dXNMaXN0ZW5lcjsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklHcHNTdGF0dXNQcm92aWRlcjsKQEAgLTUwLDcgKzQwLDYgQEAKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOwogaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2U7CiBpbXBvcnQgYW5kcm9pZC5uZXQuQ29ubmVjdGl2aXR5TWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKIGltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CkBAIC02OCwxMiArNTcsMjcgQEAKIGltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuUHJpbnRXcml0ZXJQcmludGVyOwogCi1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR2VvY29kZXJQcm94eTsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5HcHNMb2NhdGlvblByb3ZpZGVyOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkdwc05ldEluaXRpYXRlZEhhbmRsZXI7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlclByb3h5OwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLk1vY2tQcm92aWRlcjsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5QYXNzaXZlUHJvdmlkZXI7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb24uR2VvY29kZXJQcm94eTsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb24uR3BzTG9jYXRpb25Qcm92aWRlcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlckludGVyZmFjZTsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlclByb3h5OworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5sb2NhdGlvbi5Nb2NrUHJvdmlkZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uLlBhc3NpdmVQcm92aWRlcjsKKworaW1wb3J0IGphdmEuaW8uRmlsZURlc2NyaXB0b3I7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5PYnNlcnZhYmxlOworaW1wb3J0IGphdmEudXRpbC5PYnNlcnZlcjsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiAvKioKICAqIFRoZSBzZXJ2aWNlIGNsYXNzIHRoYXQgbWFuYWdlcyBMb2NhdGlvblByb3ZpZGVycyBhbmQgaXNzdWVzIGxvY2F0aW9uCkBAIC02MDksMTAgKzYxMywxMCBAQAogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0KIAotICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0UHJvdmlkZXJzKGJvb2xlYW4gZW5hYmxlZE9ubHkpIHsKKyAgICBwdWJsaWMgTGlzdDxTdHJpbmc+IGdldFByb3ZpZGVycyhDcml0ZXJpYSBjcml0ZXJpYSwgYm9vbGVhbiBlbmFibGVkT25seSkgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgewotICAgICAgICAgICAgICAgIHJldHVybiBfZ2V0UHJvdmlkZXJzTG9ja2VkKGVuYWJsZWRPbmx5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gX2dldFByb3ZpZGVyc0xvY2tlZChjcml0ZXJpYSwgZW5hYmxlZE9ubHkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBzZSkgewogICAgICAgICAgICAgdGhyb3cgc2U7CkBAIC02MjIsNyArNjI2LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IF9nZXRQcm92aWRlcnNMb2NrZWQoYm9vbGVhbiBlbmFibGVkT25seSkgeworICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IF9nZXRQcm92aWRlcnNMb2NrZWQoQ3JpdGVyaWEgY3JpdGVyaWEsIGJvb2xlYW4gZW5hYmxlZE9ubHkpIHsKICAgICAgICAgaWYgKExPQ0FMX0xPR1YpIHsKICAgICAgICAgICAgIFNsb2cudihUQUcsICJnZXRQcm92aWRlcnMiKTsKICAgICAgICAgfQpAQCAtNjM0LDEyICs2MzgsMjI1IEBACiAgICAgICAgICAgICAgICAgaWYgKGVuYWJsZWRPbmx5ICYmICFpc0FsbG93ZWRCeVNldHRpbmdzTG9ja2VkKG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY3JpdGVyaWEgIT0gbnVsbCAmJiAhcC5tZWV0c0NyaXRlcmlhKGNyaXRlcmlhKSkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3V0LmFkZChuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0KIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5leHQgbG9vc2VyIHBvd2VyIHJlcXVpcmVtZW50LCBpbiB0aGUgc2VxdWVuY2U6CisgICAgICoKKyAgICAgKiBQT1dFUl9MT1cgLT4gUE9XRVJfTUVESVVNIC0+IFBPV0VSX0hJR0ggLT4gTk9fUkVRVUlSRU1FTlQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBuZXh0UG93ZXIoaW50IHBvd2VyKSB7CisgICAgICAgIHN3aXRjaCAocG93ZXIpIHsKKyAgICAgICAgY2FzZSBDcml0ZXJpYS5QT1dFUl9MT1c6CisgICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuUE9XRVJfTUVESVVNOworICAgICAgICBjYXNlIENyaXRlcmlhLlBPV0VSX01FRElVTToKKyAgICAgICAgICAgIHJldHVybiBDcml0ZXJpYS5QT1dFUl9ISUdIOworICAgICAgICBjYXNlIENyaXRlcmlhLlBPV0VSX0hJR0g6CisgICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7CisgICAgICAgIGNhc2UgQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGxvb3NlciBhY2N1cmFjeSByZXF1aXJlbWVudCwgaW4gdGhlIHNlcXVlbmNlOgorICAgICAqCisgICAgICogQUNDVVJBQ1lfRklORSAtPiBBQ0NVUkFDWV9BUFBST1hJTUFURS0+IE5PX1JFUVVJUkVNRU5UCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbmV4dEFjY3VyYWN5KGludCBhY2N1cmFjeSkgeworICAgICAgICBpZiAoYWNjdXJhY3kgPT0gQ3JpdGVyaWEuQUNDVVJBQ1lfRklORSkgeworICAgICAgICAgICAgcmV0dXJuIENyaXRlcmlhLkFDQ1VSQUNZX0NPQVJTRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgTHBQb3dlckNvbXBhcmF0b3IgaW1wbGVtZW50cyBDb21wYXJhdG9yPExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2U+IHsKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlKExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgbDEsIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgbDIpIHsKKyAgICAgICAgICAgIC8vIFNtYWxsZXIgaXMgYmV0dGVyCisgICAgICAgICAgICByZXR1cm4gKGwxLmdldFBvd2VyUmVxdWlyZW1lbnQoKSAtIGwyLmdldFBvd2VyUmVxdWlyZW1lbnQoKSk7CisgICAgICAgICB9CisKKyAgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwxLCBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwyKSB7CisgICAgICAgICAgICAgcmV0dXJuIChsMS5nZXRQb3dlclJlcXVpcmVtZW50KCkgPT0gbDIuZ2V0UG93ZXJSZXF1aXJlbWVudCgpKTsKKyAgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIExwQWNjdXJhY3lDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlPiB7CisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwxLCBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwyKSB7CisgICAgICAgICAgICAvLyBTbWFsbGVyIGlzIGJldHRlcgorICAgICAgICAgICAgcmV0dXJuIChsMS5nZXRBY2N1cmFjeSgpIC0gbDIuZ2V0QWNjdXJhY3koKSk7CisgICAgICAgICB9CisKKyAgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwxLCBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwyKSB7CisgICAgICAgICAgICAgcmV0dXJuIChsMS5nZXRBY2N1cmFjeSgpID09IGwyLmdldEFjY3VyYWN5KCkpOworICAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgTHBDYXBhYmlsaXR5Q29tcGFyYXRvciBpbXBsZW1lbnRzIENvbXBhcmF0b3I8TG9jYXRpb25Qcm92aWRlckludGVyZmFjZT4geworCisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTFRJVFVERV9TQ09SRSA9IDQ7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBCRUFSSU5HX1NDT1JFID0gNDsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNQRUVEX1NDT1JFID0gNDsKKworICAgICAgICBwcml2YXRlIGludCBzY29yZShMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIHApIHsKKyAgICAgICAgICAgIHJldHVybiAocC5zdXBwb3J0c0FsdGl0dWRlKCkgPyBBTFRJVFVERV9TQ09SRSA6IDApICsKKyAgICAgICAgICAgICAgICAocC5zdXBwb3J0c0JlYXJpbmcoKSA/IEJFQVJJTkdfU0NPUkUgOiAwKSArCisgICAgICAgICAgICAgICAgKHAuc3VwcG9ydHNTcGVlZCgpID8gU1BFRURfU0NPUkUgOiAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwxLCBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwyKSB7CisgICAgICAgICAgICByZXR1cm4gKHNjb3JlKGwyKSAtIHNjb3JlKGwxKSk7IC8vIEJpZ2dlciBpcyBiZXR0ZXIKKyAgICAgICAgIH0KKworICAgICAgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgbDEsIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgbDIpIHsKKyAgICAgICAgICAgICByZXR1cm4gKHNjb3JlKGwxKSA9PSBzY29yZShsMikpOworICAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBiZXN0KExpc3Q8U3RyaW5nPiBwcm92aWRlck5hbWVzKSB7CisgICAgICAgIEFycmF5TGlzdDxMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlPiBwcm92aWRlcnM7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIHByb3ZpZGVycyA9IG5ldyBBcnJheUxpc3Q8TG9jYXRpb25Qcm92aWRlckludGVyZmFjZT4obVByb3ZpZGVycy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IG1Qcm92aWRlcnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBwcm92aWRlcnMuYWRkKG1Qcm92aWRlcnMuZ2V0KGkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcm92aWRlcnMuc2l6ZSgpIDwgMikgeworICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5nZXQoMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaXJzdCwgc29ydCBieSBwb3dlciByZXF1aXJlbWVudAorICAgICAgICBDb2xsZWN0aW9ucy5zb3J0KHByb3ZpZGVycywgbmV3IExwUG93ZXJDb21wYXJhdG9yKCkpOworICAgICAgICBpbnQgcG93ZXIgPSBwcm92aWRlcnMuZ2V0KDApLmdldFBvd2VyUmVxdWlyZW1lbnQoKTsKKyAgICAgICAgaWYgKHBvd2VyIDwgcHJvdmlkZXJzLmdldCgxKS5nZXRQb3dlclJlcXVpcmVtZW50KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBwcm92aWRlcnMuZ2V0KDApOworICAgICAgICB9CisKKyAgICAgICAgaW50IGlkeCwgc2l6ZTsKKworICAgICAgICBBcnJheUxpc3Q8TG9jYXRpb25Qcm92aWRlckludGVyZmFjZT4gdG1wID0gbmV3IEFycmF5TGlzdDxMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlPigpOworICAgICAgICBpZHggPSAwOworICAgICAgICBzaXplID0gcHJvdmlkZXJzLnNpemUoKTsKKyAgICAgICAgd2hpbGUgKChpZHggPCBzaXplKSAmJiAocHJvdmlkZXJzLmdldChpZHgpLmdldFBvd2VyUmVxdWlyZW1lbnQoKSA9PSBwb3dlcikpIHsKKyAgICAgICAgICAgIHRtcC5hZGQocHJvdmlkZXJzLmdldChpZHgpKTsKKyAgICAgICAgICAgIGlkeCsrOworICAgICAgICB9CisKKyAgICAgICAgLy8gTmV4dCwgc29ydCBieSBhY2N1cmFjeQorICAgICAgICBDb2xsZWN0aW9ucy5zb3J0KHRtcCwgbmV3IExwQWNjdXJhY3lDb21wYXJhdG9yKCkpOworICAgICAgICBpbnQgYWNjID0gdG1wLmdldCgwKS5nZXRBY2N1cmFjeSgpOworICAgICAgICBpZiAoYWNjIDwgdG1wLmdldCgxKS5nZXRBY2N1cmFjeSgpKSB7CisgICAgICAgICAgICByZXR1cm4gdG1wLmdldCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIEFycmF5TGlzdDxMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlPiB0bXAyID0gbmV3IEFycmF5TGlzdDxMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlPigpOworICAgICAgICBpZHggPSAwOworICAgICAgICBzaXplID0gdG1wLnNpemUoKTsKKyAgICAgICAgd2hpbGUgKChpZHggPCBzaXplKSAmJiAodG1wLmdldChpZHgpLmdldEFjY3VyYWN5KCkgPT0gYWNjKSkgeworICAgICAgICAgICAgdG1wMi5hZGQodG1wLmdldChpZHgpKTsKKyAgICAgICAgICAgIGlkeCsrOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmluYWxseSwgc29ydCBieSBjYXBhYmlsaXR5ICJzY29yZSIKKyAgICAgICAgQ29sbGVjdGlvbnMuc29ydCh0bXAyLCBuZXcgTHBDYXBhYmlsaXR5Q29tcGFyYXRvcigpKTsKKyAgICAgICAgcmV0dXJuIHRtcDIuZ2V0KDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHByb3ZpZGVyIHRoYXQgYmVzdCBtZWV0cyB0aGUgZ2l2ZW4gY3JpdGVyaWEuIE9ubHkgcHJvdmlkZXJzCisgICAgICogdGhhdCBhcmUgcGVybWl0dGVkIHRvIGJlIGFjY2Vzc2VkIGJ5IHRoZSBjYWxsaW5nIGFjdGl2aXR5IHdpbGwgYmUKKyAgICAgKiByZXR1cm5lZC4gIElmIHNldmVyYWwgcHJvdmlkZXJzIG1lZXQgdGhlIGNyaXRlcmlhLCB0aGUgb25lIHdpdGggdGhlIGJlc3QKKyAgICAgKiBhY2N1cmFjeSBpcyByZXR1cm5lZC4gIElmIG5vIHByb3ZpZGVyIG1lZXRzIHRoZSBjcml0ZXJpYSwKKyAgICAgKiB0aGUgY3JpdGVyaWEgYXJlIGxvb3NlbmVkIGluIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2U6CisgICAgICoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPiBwb3dlciByZXF1aXJlbWVudAorICAgICAqIDxsaT4gYWNjdXJhY3kKKyAgICAgKiA8bGk+IGJlYXJpbmcKKyAgICAgKiA8bGk+IHNwZWVkCisgICAgICogPGxpPiBhbHRpdHVkZQorICAgICAqIDwvdWw+CisgICAgICoKKyAgICAgKiA8cD4gTm90ZSB0aGF0IHRoZSByZXF1aXJlbWVudCBvbiBtb25ldGFyeSBjb3N0IGlzIG5vdCByZW1vdmVkCisgICAgICogaW4gdGhpcyBwcm9jZXNzLgorICAgICAqCisgICAgICogQHBhcmFtIGNyaXRlcmlhIHRoZSBjcml0ZXJpYSB0aGF0IG5lZWQgdG8gYmUgbWF0Y2hlZAorICAgICAqIEBwYXJhbSBlbmFibGVkT25seSBpZiB0cnVlIHRoZW4gb25seSBhIHByb3ZpZGVyIHRoYXQgaXMgY3VycmVudGx5IGVuYWJsZWQgaXMgcmV0dXJuZWQKKyAgICAgKiBAcmV0dXJuIG5hbWUgb2YgdGhlIHByb3ZpZGVyIHRoYXQgYmVzdCBtYXRjaGVzIHRoZSByZXF1aXJlbWVudHMKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlc3RQcm92aWRlcihDcml0ZXJpYSBjcml0ZXJpYSwgYm9vbGVhbiBlbmFibGVkT25seSkgeworICAgICAgICBMaXN0PFN0cmluZz4gZ29vZFByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhjcml0ZXJpYSwgZW5hYmxlZE9ubHkpOworICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXR1cm4gYmVzdChnb29kUHJvdmlkZXJzKS5nZXROYW1lKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgY3JpdGVyaWEgdGhhdCB3ZSBjYW4gbW9kaWZ5CisgICAgICAgIGNyaXRlcmlhID0gbmV3IENyaXRlcmlhKGNyaXRlcmlhKTsKKworICAgICAgICAvLyBMb29zZW4gcG93ZXIgcmVxdWlyZW1lbnQKKyAgICAgICAgaW50IHBvd2VyID0gY3JpdGVyaWEuZ2V0UG93ZXJSZXF1aXJlbWVudCgpOworICAgICAgICB3aGlsZSAoZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkgJiYgKHBvd2VyICE9IENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UKSkgeworICAgICAgICAgICAgcG93ZXIgPSBuZXh0UG93ZXIocG93ZXIpOworICAgICAgICAgICAgY3JpdGVyaWEuc2V0UG93ZXJSZXF1aXJlbWVudChwb3dlcik7CisgICAgICAgICAgICBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTG9vc2VuIGFjY3VyYWN5IHJlcXVpcmVtZW50CisgICAgICAgIGludCBhY2N1cmFjeSA9IGNyaXRlcmlhLmdldEFjY3VyYWN5KCk7CisgICAgICAgIHdoaWxlIChnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSAmJiAoYWNjdXJhY3kgIT0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQpKSB7CisgICAgICAgICAgICBhY2N1cmFjeSA9IG5leHRBY2N1cmFjeShhY2N1cmFjeSk7CisgICAgICAgICAgICBjcml0ZXJpYS5zZXRBY2N1cmFjeShhY2N1cmFjeSk7CisgICAgICAgICAgICBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIGJlYXJpbmcgcmVxdWlyZW1lbnQKKyAgICAgICAgY3JpdGVyaWEuc2V0QmVhcmluZ1JlcXVpcmVkKGZhbHNlKTsKKyAgICAgICAgZ29vZFByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhjcml0ZXJpYSwgZW5hYmxlZE9ubHkpOworICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXR1cm4gYmVzdChnb29kUHJvdmlkZXJzKS5nZXROYW1lKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1vdmUgc3BlZWQgcmVxdWlyZW1lbnQKKyAgICAgICAgY3JpdGVyaWEuc2V0U3BlZWRSZXF1aXJlZChmYWxzZSk7CisgICAgICAgIGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEsIGVuYWJsZWRPbmx5KTsKKyAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIGFsdGl0dWRlIHJlcXVpcmVtZW50CisgICAgICAgIGNyaXRlcmlhLnNldEFsdGl0dWRlUmVxdWlyZWQoZmFsc2UpOworICAgICAgICBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIGlmICghZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpLmdldE5hbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHByb3ZpZGVyTWVldHNDcml0ZXJpYShTdHJpbmcgcHJvdmlkZXIsIENyaXRlcmlhIGNyaXRlcmlhKSB7CisgICAgICAgIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgcCA9IG1Qcm92aWRlcnNCeU5hbWUuZ2V0KHByb3ZpZGVyKTsKKyAgICAgICAgaWYgKHAgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicHJvdmlkZXI9IiArIHByb3ZpZGVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcC5tZWV0c0NyaXRlcmlhKGNyaXRlcmlhKTsKKyAgICB9CisKICAgICBwcml2YXRlIHZvaWQgdXBkYXRlUHJvdmlkZXJzTG9ja2VkKCkgewogICAgICAgICBmb3IgKGludCBpID0gbVByb3ZpZGVycy5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBwID0gbVByb3ZpZGVycy5nZXQoaSk7CkBAIC03MTYsNiArOTMzLDcgQEAKICAgICAgICAgZmluYWwgUmVjZWl2ZXIgbVJlY2VpdmVyOwogICAgICAgICBmaW5hbCBsb25nIG1NaW5UaW1lOwogICAgICAgICBmaW5hbCBmbG9hdCBtTWluRGlzdGFuY2U7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gbVNpbmdsZVNob3Q7CiAgICAgICAgIGZpbmFsIGludCBtVWlkOwogICAgICAgICBMb2NhdGlvbiBtTGFzdEZpeEJyb2FkY2FzdDsKICAgICAgICAgbG9uZyBtTGFzdFN0YXR1c0Jyb2FkY2FzdDsKQEAgLTcyMywxMiArOTQxLDEzIEBACiAgICAgICAgIC8qKgogICAgICAgICAgKiBOb3RlOiBtdXN0IGJlIGNvbnN0cnVjdGVkIHdpdGggbG9jayBoZWxkLgogICAgICAgICAgKi8KLSAgICAgICAgVXBkYXRlUmVjb3JkKFN0cmluZyBwcm92aWRlciwgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwKKyAgICAgICAgVXBkYXRlUmVjb3JkKFN0cmluZyBwcm92aWRlciwgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwgYm9vbGVhbiBzaW5nbGVTaG90LAogICAgICAgICAgICAgUmVjZWl2ZXIgcmVjZWl2ZXIsIGludCB1aWQpIHsKICAgICAgICAgICAgIG1Qcm92aWRlciA9IHByb3ZpZGVyOwogICAgICAgICAgICAgbVJlY2VpdmVyID0gcmVjZWl2ZXI7CiAgICAgICAgICAgICBtTWluVGltZSA9IG1pblRpbWU7CiAgICAgICAgICAgICBtTWluRGlzdGFuY2UgPSBtaW5EaXN0YW5jZTsKKyAgICAgICAgICAgIG1TaW5nbGVTaG90ID0gc2luZ2xlU2hvdDsKICAgICAgICAgICAgIG1VaWQgPSB1aWQ7CiAKICAgICAgICAgICAgIEFycmF5TGlzdDxVcGRhdGVSZWNvcmQ+IHJlY29yZHMgPSBtUmVjb3Jkc0J5UHJvdmlkZXIuZ2V0KHByb3ZpZGVyKTsKQEAgLTc2Myw2ICs5ODIsNyBAQAogICAgICAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyB0aGlzKTsKICAgICAgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1Qcm92aWRlcj0iICsgbVByb3ZpZGVyICsgIiBtUmVjZWl2ZXI9IiArIG1SZWNlaXZlcik7CiAgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtTWluVGltZT0iICsgbU1pblRpbWUgKyAiIG1NaW5EaXN0YW5jZT0iICsgbU1pbkRpc3RhbmNlKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1TaW5nbGVTaG90PSIgKyBtU2luZ2xlU2hvdCk7CiAgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtVWlkPSIgKyBtVWlkKTsKICAgICAgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1MYXN0Rml4QnJvYWRjYXN0OiIpOwogICAgICAgICAgICAgaWYgKG1MYXN0Rml4QnJvYWRjYXN0ICE9IG51bGwpIHsKQEAgLTgxOCwxMiArMTAzOCwyMSBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhTdHJpbmcgcHJvdmlkZXIsCi0gICAgICAgIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIElMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKSB7Ci0KKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0TG9jYXRpb25VcGRhdGVzKFN0cmluZyBwcm92aWRlciwgQ3JpdGVyaWEgY3JpdGVyaWEsCisgICAgICAgIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIGJvb2xlYW4gc2luZ2xlU2hvdCwgSUxvY2F0aW9uTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgaWYgKGNyaXRlcmlhICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIC0gc2hvdWxkIHdlIGNvbnNpZGVyIHVzaW5nIG11bHRpcGxlIHByb3ZpZGVycyBzaW11bHRhbmVvdXNseQorICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gb25seSB0aGUgYmVzdCBvbmU/CisgICAgICAgICAgICAvLyBTaG91bGQgd2UgZG8gYW55dGhpbmcgZGlmZmVyZW50IGZvciBzaW5nbGUgc2hvdCBmaXhlcz8KKyAgICAgICAgICAgIHByb3ZpZGVyID0gZ2V0QmVzdFByb3ZpZGVyKGNyaXRlcmlhLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChwcm92aWRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibm8gcHJvdmlkZXJzIGZvdW5kIGZvciBjcml0ZXJpYSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdExvY2F0aW9uVXBkYXRlc0xvY2tlZChwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIGdldFJlY2VpdmVyKGxpc3RlbmVyKSk7CisgICAgICAgICAgICAgICAgcmVxdWVzdExvY2F0aW9uVXBkYXRlc0xvY2tlZChwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIHNpbmdsZVNob3QsCisgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZWNlaXZlcihsaXN0ZW5lcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBzZSkgewogICAgICAgICAgICAgdGhyb3cgc2U7CkBAIC04MzQsMTEgKzEwNjMsMjEgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNQSShTdHJpbmcgcHJvdmlkZXIsCi0gICAgICAgICAgICBsb25nIG1pblRpbWUsIGZsb2F0IG1pbkRpc3RhbmNlLCBQZW5kaW5nSW50ZW50IGludGVudCkgeworICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNQSShTdHJpbmcgcHJvdmlkZXIsIENyaXRlcmlhIGNyaXRlcmlhLAorICAgICAgICAgICAgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwgYm9vbGVhbiBzaW5nbGVTaG90LCBQZW5kaW5nSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoY3JpdGVyaWEgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gRklYTUUgLSBzaG91bGQgd2UgY29uc2lkZXIgdXNpbmcgbXVsdGlwbGUgcHJvdmlkZXJzIHNpbXVsdGFuZW91c2x5CisgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiBvbmx5IHRoZSBiZXN0IG9uZT8KKyAgICAgICAgICAgIC8vIFNob3VsZCB3ZSBkbyBhbnl0aGluZyBkaWZmZXJlbnQgZm9yIHNpbmdsZSBzaG90IGZpeGVzPworICAgICAgICAgICAgcHJvdmlkZXIgPSBnZXRCZXN0UHJvdmlkZXIoY3JpdGVyaWEsIHRydWUpOworICAgICAgICAgICAgaWYgKHByb3ZpZGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJubyBwcm92aWRlcnMgZm91bmQgZm9yIGNyaXRlcmlhIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKLSAgICAgICAgICAgICAgICByZXF1ZXN0TG9jYXRpb25VcGRhdGVzTG9ja2VkKHByb3ZpZGVyLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZ2V0UmVjZWl2ZXIoaW50ZW50KSk7CisgICAgICAgICAgICAgICAgcmVxdWVzdExvY2F0aW9uVXBkYXRlc0xvY2tlZChwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIHNpbmdsZVNob3QsCisgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZWNlaXZlcihpbnRlbnQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gc2UpIHsKICAgICAgICAgICAgIHRocm93IHNlOwpAQCAtODQ5LDggKzEwODgsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNMb2NrZWQoU3RyaW5nIHByb3ZpZGVyLAotICAgICAgICAgICAgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwgUmVjZWl2ZXIgcmVjZWl2ZXIpIHsKKyAgICBwcml2YXRlIHZvaWQgcmVxdWVzdExvY2F0aW9uVXBkYXRlc0xvY2tlZChTdHJpbmcgcHJvdmlkZXIsIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsCisgICAgICAgICAgICBib29sZWFuIHNpbmdsZVNob3QsIFJlY2VpdmVyIHJlY2VpdmVyKSB7CiAgICAgICAgIGlmIChMT0NBTF9MT0dWKSB7CiAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiX3JlcXVlc3RMb2NhdGlvblVwZGF0ZXM6IGxpc3RlbmVyID0gIiArIHJlY2VpdmVyKTsKICAgICAgICAgfQpAQCAtODY3LDcgKzExMDYsOCBAQAogICAgICAgICBib29sZWFuIG5ld1VpZCA9ICFwcm92aWRlckhhc0xpc3RlbmVyKHByb3ZpZGVyLCBjYWxsaW5nVWlkLCBudWxsKTsKICAgICAgICAgbG9uZyBpZGVudGl0eSA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogICAgICAgICB0cnkgewotICAgICAgICAgICAgVXBkYXRlUmVjb3JkIHIgPSBuZXcgVXBkYXRlUmVjb3JkKHByb3ZpZGVyLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgcmVjZWl2ZXIsIGNhbGxpbmdVaWQpOworICAgICAgICAgICAgVXBkYXRlUmVjb3JkIHIgPSBuZXcgVXBkYXRlUmVjb3JkKHByb3ZpZGVyLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgc2luZ2xlU2hvdCwKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIsIGNhbGxpbmdVaWQpOwogICAgICAgICAgICAgVXBkYXRlUmVjb3JkIG9sZFJlY29yZCA9IHJlY2VpdmVyLm1VcGRhdGVSZWNvcmRzLnB1dChwcm92aWRlciwgcik7CiAgICAgICAgICAgICBpZiAob2xkUmVjb3JkICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICBvbGRSZWNvcmQuZGlzcG9zZUxvY2tlZCgpOwpAQCAtODgxLDcgKzExMjEsMTEgQEAKICAgICAgICAgICAgIGlmIChpc1Byb3ZpZGVyRW5hYmxlZCkgewogICAgICAgICAgICAgICAgIGxvbmcgbWluVGltZUZvclByb3ZpZGVyID0gZ2V0TWluVGltZUxvY2tlZChwcm92aWRlcik7CiAgICAgICAgICAgICAgICAgcC5zZXRNaW5UaW1lKG1pblRpbWVGb3JQcm92aWRlcik7Ci0gICAgICAgICAgICAgICAgcC5lbmFibGVMb2NhdGlvblRyYWNraW5nKHRydWUpOworICAgICAgICAgICAgICAgIC8vIHRyeSByZXF1ZXN0aW5nIHNpbmdsZSBzaG90IGlmIHNpbmdsZVNob3QgaXMgdHJ1ZSwgYW5kIGZhbGwgYmFjayB0bworICAgICAgICAgICAgICAgIC8vIHJlZ3VsYXIgbG9jYXRpb24gdHJhY2tpbmcgaWYgcmVxdWVzdFNpbmdsZVNob3RGaXgoKSBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgaWYgKCFzaW5nbGVTaG90IHx8ICFwLnJlcXVlc3RTaW5nbGVTaG90Rml4KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcC5lbmFibGVMb2NhdGlvblRyYWNraW5nKHRydWUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gTm90aWZ5IHRoZSBsaXN0ZW5lciB0aGF0IHVwZGF0ZXMgYXJlIGN1cnJlbnRseSBkaXNhYmxlZAogICAgICAgICAgICAgICAgIHJlY2VpdmVyLmNhbGxQcm92aWRlckVuYWJsZWRMb2NrZWQocHJvdmlkZXIsIGZhbHNlKTsKQEAgLTEyODcsNyArMTUzMSw4IEBACiAKICAgICAgICAgICAgIGZvciAoaW50IGkgPSBtUHJvdmlkZXJzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBwcm92aWRlciA9IG1Qcm92aWRlcnMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNMb2NrZWQocHJvdmlkZXIuZ2V0TmFtZSgpLCAxMDAwTCwgMS4wZiwgbVByb3hpbWl0eVJlY2VpdmVyKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0TG9jYXRpb25VcGRhdGVzTG9ja2VkKHByb3ZpZGVyLmdldE5hbWUoKSwgMTAwMEwsIDEuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgbVByb3hpbWl0eVJlY2VpdmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE0ODUsNiArMTczMCw3IEBACiAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKICAgICAgICAgICAgIFVwZGF0ZVJlY29yZCByID0gcmVjb3Jkcy5nZXQoaSk7CiAgICAgICAgICAgICBSZWNlaXZlciByZWNlaXZlciA9IHIubVJlY2VpdmVyOworICAgICAgICAgICAgYm9vbGVhbiByZWNlaXZlckRlYWQgPSBmYWxzZTsKIAogICAgICAgICAgICAgTG9jYXRpb24gbGFzdExvYyA9IHIubUxhc3RGaXhCcm9hZGNhc3Q7CiAgICAgICAgICAgICBpZiAoKGxhc3RMb2MgPT0gbnVsbCkgfHwgc2hvdWxkQnJvYWRjYXN0U2FmZShsb2NhdGlvbiwgbGFzdExvYywgcikpIHsKQEAgLTE0OTYsMTAgKzE3NDIsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXJlY2VpdmVyLmNhbGxMb2NhdGlvbkNoYW5nZWRMb2NrZWQobG9jYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyBvbkxvY2F0aW9uQ2hhbmdlZCBvbiAiICsgcmVjZWl2ZXIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGVhZFJlY2VpdmVycyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWFkUmVjZWl2ZXJzID0gbmV3IEFycmF5TGlzdDxSZWNlaXZlcj4oKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkZWFkUmVjZWl2ZXJzLmFkZChyZWNlaXZlcik7CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyRGVhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0xNTA5LDEzICsxNzUyLDE4IEBACiAKICAgICAgICAgICAgICAgICByLm1MYXN0U3RhdHVzQnJvYWRjYXN0ID0gbmV3U3RhdHVzVXBkYXRlVGltZTsKICAgICAgICAgICAgICAgICBpZiAoIXJlY2VpdmVyLmNhbGxTdGF0dXNDaGFuZ2VkTG9ja2VkKHByb3ZpZGVyLCBzdGF0dXMsIGV4dHJhcykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJEZWFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBjYWxsaW5nIG9uU3RhdHVzQ2hhbmdlZCBvbiAiICsgcmVjZWl2ZXIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGVhZFJlY2VpdmVycyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWFkUmVjZWl2ZXJzID0gbmV3IEFycmF5TGlzdDxSZWNlaXZlcj4oKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIWRlYWRSZWNlaXZlcnMuY29udGFpbnMocmVjZWl2ZXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWFkUmVjZWl2ZXJzLmFkZChyZWNlaXZlcik7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHJlbW92ZSByZWNlaXZlciBpZiBpdCBpcyBkZWFkIG9yIHdlIGp1c3QgcHJvY2Vzc2VkIGEgc2luZ2xlIHNob3QgcmVxdWVzdAorICAgICAgICAgICAgaWYgKHJlY2VpdmVyRGVhZCB8fCByLm1TaW5nbGVTaG90KSB7CisgICAgICAgICAgICAgICAgaWYgKGRlYWRSZWNlaXZlcnMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBkZWFkUmVjZWl2ZXJzID0gbmV3IEFycmF5TGlzdDxSZWNlaXZlcj4oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFkZWFkUmVjZWl2ZXJzLmNvbnRhaW5zKHJlY2VpdmVyKSkgeworICAgICAgICAgICAgICAgICAgICBkZWFkUmVjZWl2ZXJzLmFkZChyZWNlaXZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjkyLDYgKzE5NDAsMTAgQEAKIAogICAgIC8vIEdlb2NvZGVyCiAKKyAgICBwdWJsaWMgYm9vbGVhbiBnZW9jb2RlcklzSW1wbGVtZW50ZWQoKSB7CisgICAgICAgIHJldHVybiBtR2VvY29kZVByb3ZpZGVyICE9IG51bGw7CisgICAgfQorCiAgICAgcHVibGljIFN0cmluZyBnZXRGcm9tTG9jYXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBpbnQgbWF4UmVzdWx0cywKICAgICAgICAgICAgIEdlb2NvZGVyUGFyYW1zIHBhcmFtcywgTGlzdDxBZGRyZXNzPiBhZGRycykgewogICAgICAgICBpZiAobUdlb2NvZGVQcm92aWRlciAhPSBudWxsKSB7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9NYXN0ZXJDbGVhclJlY2VpdmVyLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9NYXN0ZXJDbGVhclJlY2VpdmVyLmphdmEKaW5kZXggMjdhOGE3NC4uNGQwNGNlZSAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTWFzdGVyQ2xlYXJSZWNlaXZlci5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL01hc3RlckNsZWFyUmVjZWl2ZXIuamF2YQpAQCAtMzksNyArMzksMTEgQEAKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgU2xvZy53KFRBRywgIiEhISBGQUNUT1JZIFJFU0VUICEhISIpOwotICAgICAgICAgICAgUmVjb3ZlcnlTeXN0ZW0ucmVib290V2lwZVVzZXJEYXRhKGNvbnRleHQpOworICAgICAgICAgICAgaWYgKGludGVudC5oYXNFeHRyYSgiZW5hYmxlRUZTIikpIHsKKyAgICAgICAgICAgICAgICBSZWNvdmVyeVN5c3RlbS5yZWJvb3RUb2dnbGVFRlMoY29udGV4dCwgaW50ZW50LmdldEJvb2xlYW5FeHRyYSgiZW5hYmxlRUZTIiwgZmFsc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUmVjb3ZlcnlTeXN0ZW0ucmVib290V2lwZVVzZXJEYXRhKGNvbnRleHQpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgTG9nLnd0ZihUQUcsICJTdGlsbCBydW5uaW5nIGFmdGVyIG1hc3RlciBjbGVhcj8hIik7CiAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIFNsb2cuZShUQUcsICJDYW4ndCBwZXJmb3JtIG1hc3RlciBjbGVhci9mYWN0b3J5IHJlc2V0IiwgZSk7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Nb3VudFNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL01vdW50U2VydmljZS5qYXZhCmluZGV4IDZjZWViOTUuLjZjMmYxYjIgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL01vdW50U2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL01vdW50U2VydmljZS5qYXZhCkBAIC02NDIsMTAgKzY0MiwyMSBAQAogICAgIH0KIAogICAgIHByaXZhdGUgYm9vbGVhbiBkb0dldFNoYXJlTWV0aG9kQXZhaWxhYmxlKFN0cmluZyBtZXRob2QpIHsKLSAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoInNoYXJlIHN0YXR1cyAiICsgbWV0aG9kKTsKKyAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gcnNwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoInNoYXJlIHN0YXR1cyAiICsgbWV0aG9kKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbGVkIHRvIGRldGVybWluZSB3aGV0aGVyIHNoYXJlIG1ldGhvZCAiICsgbWV0aG9kICsgIiBpcyBhdmFpbGFibGUuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBmb3IgKFN0cmluZyBsaW5lIDogcnNwKSB7Ci0gICAgICAgICAgICBTdHJpbmcgW110b2sgPSBsaW5lLnNwbGl0KCIgIik7CisgICAgICAgICAgICBTdHJpbmdbXSB0b2sgPSBsaW5lLnNwbGl0KCIgIik7CisgICAgICAgICAgICBpZiAodG9rLmxlbmd0aCA8IDMpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiTWFsZm9ybWVkIHJlc3BvbnNlIHRvIHNoYXJlIHN0YXR1cyAiICsgbWV0aG9kKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGludCBjb2RlOwogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBjb2RlID0gSW50ZWdlci5wYXJzZUludCh0b2tbMF0pOwpAQCAtNzcwLDEwICs3ODEsMjIgQEAKIAogICAgIHByaXZhdGUgYm9vbGVhbiBkb0dldFZvbHVtZVNoYXJlZChTdHJpbmcgcGF0aCwgU3RyaW5nIG1ldGhvZCkgewogICAgICAgICBTdHJpbmcgY21kID0gU3RyaW5nLmZvcm1hdCgidm9sdW1lIHNoYXJlZCAlcyAlcyIsIHBhdGgsIG1ldGhvZCk7Ci0gICAgICAgIEFycmF5TGlzdDxTdHJpbmc+IHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKGNtZCk7CisgICAgICAgIEFycmF5TGlzdDxTdHJpbmc+IHJzcDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoY21kKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbGVkIHRvIHJlYWQgcmVzcG9uc2UgdG8gdm9sdW1lIHNoYXJlZCAiICsgcGF0aCArICIgIiArIG1ldGhvZCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBmb3IgKFN0cmluZyBsaW5lIDogcnNwKSB7Ci0gICAgICAgICAgICBTdHJpbmcgW110b2sgPSBsaW5lLnNwbGl0KCIgIik7CisgICAgICAgICAgICBTdHJpbmdbXSB0b2sgPSBsaW5lLnNwbGl0KCIgIik7CisgICAgICAgICAgICBpZiAodG9rLmxlbmd0aCA8IDMpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiTWFsZm9ybWVkIHJlc3BvbnNlIHRvIHZvbHVtZSBzaGFyZWQgIiArIHBhdGggKyAiICIgKyBtZXRob2QgKyAiIGNvbW1hbmQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGludCBjb2RlOwogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBjb2RlID0gSW50ZWdlci5wYXJzZUludCh0b2tbMF0pOwpAQCAtNzgyLDkgKzgwNSw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNvZGUgPT0gVm9sZFJlc3BvbnNlQ29kZS5TaGFyZUVuYWJsZWRSZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBpZiAodG9rWzJdLmVxdWFscygiZW5hYmxlZCIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuICJlbmFibGVkIi5lcXVhbHModG9rWzJdKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgU3RyaW5nLmZvcm1hdCgiVW5leHBlY3RlZCByZXNwb25zZSBjb2RlICVkIiwgY29kZSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05hdGl2ZURhZW1vbkNvbm5lY3Rvci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTmF0aXZlRGFlbW9uQ29ubmVjdG9yLmphdmEKaW5kZXggMDhkN2NlNi4uYzQ1MjU5MCAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTmF0aXZlRGFlbW9uQ29ubmVjdG9yLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTmF0aXZlRGFlbW9uQ29ubmVjdG9yLmphdmEKQEAgLTEyOCwxMiArMTI4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCBTdHJpbmcuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgaGFuZGxpbmcgJyVzJyIsIGV2ZW50KSwgZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZXNwb25zZVF1ZXVlLnB1dChldmVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbGVkIHRvIHB1dCByZXNwb25zZSBvbnRvIHF1ZXVlIiwgZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZXNwb25zZVF1ZXVlLnB1dChldmVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWxlZCB0byBwdXQgcmVzcG9uc2Ugb250byBxdWV1ZSIsIGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgU3RyaW5nLmZvcm1hdCgiQmFkIG1zZyAoJXMpIiwgZXZlbnQpKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05ldHdvcmtNYW5hZ2VtZW50U2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlLmphdmEKaW5kZXggY2JiYzdiZS4uYzE1NjE1MCAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlLmphdmEKQEAgLTM1LDYgKzM1LDcgQEAKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247CiBpbXBvcnQgamF2YS51dGlsLlN0cmluZ1Rva2VuaXplcjsKIGltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXI7CkBAIC0yMjYsNDQgKzIyNyw2MSBAQAogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7CiAKLSAgICAgICAgcmV0dXJuIG1Db25uZWN0b3IuZG9MaXN0Q29tbWFuZCgiaW50ZXJmYWNlIGxpc3QiLCBOZXRkUmVzcG9uc2VDb2RlLkludGVyZmFjZUxpc3RSZXN1bHQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG1Db25uZWN0b3IuZG9MaXN0Q29tbWFuZCgiaW50ZXJmYWNlIGxpc3QiLCBOZXRkUmVzcG9uc2VDb2RlLkludGVyZmFjZUxpc3RSZXN1bHQpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIG5hdGl2ZSBkYWVtb24gdG8gbGlzdCBpbnRlcmZhY2VzIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgSW50ZXJmYWNlQ29uZmlndXJhdGlvbiBnZXRJbnRlcmZhY2VDb25maWcoU3RyaW5nIGlmYWNlKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKLSAgICAgICAgU3RyaW5nIHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKCJpbnRlcmZhY2UgZ2V0Y2ZnICIgKyBpZmFjZSkuZ2V0KDApOworICAgICAgICBTdHJpbmcgcnNwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoImludGVyZmFjZSBnZXRjZmcgIiArIGlmYWNlKS5nZXQoMCk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGNvbW11bmljYXRlIHdpdGggbmF0aXZlIGRhZW1vbiB0byBnZXQgaW50ZXJmYWNlIGNvbmZpZyIpOworICAgICAgICB9CiAgICAgICAgIFNsb2cuZChUQUcsIFN0cmluZy5mb3JtYXQoInJzcCA8JXM+IiwgcnNwKSk7CiAKICAgICAgICAgLy8gUnNwOiAyMTMgeHg6eHg6eHg6eHg6eHg6eHggeXl5Lnl5eS55eXkueXl5IHp6ei56enouenp6Lnp6eiBbZmxhZzEgZmxhZzIgZmxhZzNdCiAgICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIocnNwKTsKIAorICAgICAgICBJbnRlcmZhY2VDb25maWd1cmF0aW9uIGNmZzsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGludCBjb2RlID0gSW50ZWdlci5wYXJzZUludChzdC5uZXh0VG9rZW4oIiAiKSk7Ci0gICAgICAgICAgICBpZiAoY29kZSAhPSBOZXRkUmVzcG9uc2VDb2RlLkludGVyZmFjZUdldENmZ1Jlc3VsdCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbnQgY29kZSA9IEludGVnZXIucGFyc2VJbnQoc3QubmV4dFRva2VuKCIgIikpOworICAgICAgICAgICAgICAgIGlmIChjb2RlICE9IE5ldGRSZXNwb25zZUNvZGUuSW50ZXJmYWNlR2V0Q2ZnUmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJFeHBlY3RlZCBjb2RlICVkLCBidXQgZ290ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0ZFJlc3BvbnNlQ29kZS5JbnRlcmZhY2VHZXRDZmdSZXN1bHQsIGNvZGUpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgiRXhwZWN0ZWQgY29kZSAlZCwgYnV0IGdvdCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0ZFJlc3BvbnNlQ29kZS5JbnRlcmZhY2VHZXRDZmdSZXN1bHQsIGNvZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoIkludmFsaWQgcmVzcG9uc2UgZnJvbSBkYWVtb24gKCVzKSIsIHJzcCkpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKSB7CisKKyAgICAgICAgICAgIGNmZyA9IG5ldyBJbnRlcmZhY2VDb25maWd1cmF0aW9uKCk7CisgICAgICAgICAgICBjZmcuaHdBZGRyID0gc3QubmV4dFRva2VuKCIgIik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNmZy5pcEFkZHIgPSBzdHJpbmdUb0lwQWRkcihzdC5uZXh0VG9rZW4oIiAiKSk7CisgICAgICAgICAgICB9IGNhdGNoIChVbmtub3duSG9zdEV4Y2VwdGlvbiB1aGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbGVkIHRvIHBhcnNlIGlwYWRkciIsIHVoZSk7CisgICAgICAgICAgICAgICAgY2ZnLmlwQWRkciA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY2ZnLm5ldG1hc2sgPSBzdHJpbmdUb0lwQWRkcihzdC5uZXh0VG9rZW4oIiAiKSk7CisgICAgICAgICAgICB9IGNhdGNoIChVbmtub3duSG9zdEV4Y2VwdGlvbiB1aGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbGVkIHRvIHBhcnNlIG5ldG1hc2siLCB1aGUpOworICAgICAgICAgICAgICAgIGNmZy5uZXRtYXNrID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNmZy5pbnRlcmZhY2VGbGFncyA9IHN0Lm5leHRUb2tlbigiXSIpLnRyaW0oKSArIl0iOworICAgICAgICB9IGNhdGNoIChOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIG5zZWUpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoIkludmFsaWQgcmVzcG9uc2UgZnJvbSBkYWVtb24gKCVzKSIsIHJzcCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgSW50ZXJmYWNlQ29uZmlndXJhdGlvbiBjZmcgPSBuZXcgSW50ZXJmYWNlQ29uZmlndXJhdGlvbigpOwotICAgICAgICBjZmcuaHdBZGRyID0gc3QubmV4dFRva2VuKCIgIik7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjZmcuaXBBZGRyID0gc3RyaW5nVG9JcEFkZHIoc3QubmV4dFRva2VuKCIgIikpOwotICAgICAgICB9IGNhdGNoIChVbmtub3duSG9zdEV4Y2VwdGlvbiB1aGUpIHsKLSAgICAgICAgICAgIFNsb2cuZShUQUcsICJGYWlsZWQgdG8gcGFyc2UgaXBhZGRyIiwgdWhlKTsKLSAgICAgICAgICAgIGNmZy5pcEFkZHIgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNmZy5uZXRtYXNrID0gc3RyaW5nVG9JcEFkZHIoc3QubmV4dFRva2VuKCIgIikpOwotICAgICAgICB9IGNhdGNoIChVbmtub3duSG9zdEV4Y2VwdGlvbiB1aGUpIHsKLSAgICAgICAgICAgIFNsb2cuZShUQUcsICJGYWlsZWQgdG8gcGFyc2UgbmV0bWFzayIsIHVoZSk7Ci0gICAgICAgICAgICBjZmcubmV0bWFzayA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgY2ZnLmludGVyZmFjZUZsYWdzID0gc3QubmV4dFRva2VuKCJdIikudHJpbSgpICsiXSI7CiAgICAgICAgIFNsb2cuZChUQUcsIFN0cmluZy5mb3JtYXQoImZsYWdzIDwlcz4iLCBjZmcuaW50ZXJmYWNlRmxhZ3MpKTsKICAgICAgICAgcmV0dXJuIGNmZzsKICAgICB9CkBAIC0yNzIsNyArMjkwLDEyIEBACiAgICAgICAgICAgICBTdHJpbmcgaWZhY2UsIEludGVyZmFjZUNvbmZpZ3VyYXRpb24gY2ZnKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKICAgICAgICAgU3RyaW5nIGNtZCA9IFN0cmluZy5mb3JtYXQoImludGVyZmFjZSBzZXRjZmcgJXMgJXMgJXMgJXMiLCBpZmFjZSwKICAgICAgICAgICAgICAgICBpbnRUb0lwU3RyaW5nKGNmZy5pcEFkZHIpLCBpbnRUb0lwU3RyaW5nKGNmZy5uZXRtYXNrKSwgY2ZnLmludGVyZmFjZUZsYWdzKTsKLSAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoY21kKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKGNtZCk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNvbW11bmljYXRlIHdpdGggbmF0aXZlIGRhZW1vbiB0byBpbnRlcmZhY2Ugc2V0Y2ZnIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBzaHV0ZG93bigpIHsKQEAgLTI4OSwyMCArMzEyLDI1IEBACiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKIAotICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgiaXBmd2Qgc3RhdHVzIik7CisgICAgICAgIEFycmF5TGlzdDxTdHJpbmc+IHJzcDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKCJpcGZ3ZCBzdGF0dXMiKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gY29tbXVuaWNhdGUgd2l0aCBuYXRpdmUgZGFlbW9uIHRvIGlwZndkIHN0YXR1cyIpOworICAgICAgICB9CiAKICAgICAgICAgZm9yIChTdHJpbmcgbGluZSA6IHJzcCkgewotICAgICAgICAgICAgU3RyaW5nIFtddG9rID0gbGluZS5zcGxpdCgiICIpOworICAgICAgICAgICAgU3RyaW5nW10gdG9rID0gbGluZS5zcGxpdCgiICIpOworICAgICAgICAgICAgaWYgKHRvay5sZW5ndGggPCAzKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIk1hbGZvcm1lZCByZXNwb25zZSBmcm9tIG5hdGl2ZSBkYWVtb246ICIgKyBsaW5lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGludCBjb2RlID0gSW50ZWdlci5wYXJzZUludCh0b2tbMF0pOwogICAgICAgICAgICAgaWYgKGNvZGUgPT0gTmV0ZFJlc3BvbnNlQ29kZS5JcEZ3ZFN0YXR1c1Jlc3VsdCkgewogICAgICAgICAgICAgICAgIC8vIDIxMSBGb3J3YXJkaW5nIDxlbmFibGVkL2Rpc2FibGVkPgotICAgICAgICAgICAgICAgIGlmICh0b2subGVuZ3RoICE9MikgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoIk1hbGZvcm1hdHRlZCBsaXN0IGVudHJ5ICclcyciLCBsaW5lKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0b2tbMl0uZXF1YWxzKCJlbmFibGVkIikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gImVuYWJsZWQiLmVxdWFscyh0b2tbMl0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlZCIsIGNvZGUpKTsKICAgICAgICAgICAgIH0KQEAgLTMyNiwyOSArMzU0LDQ1IEBACiAgICAgICAgIGZvciAoU3RyaW5nIGQgOiBkaGNwUmFuZ2UpIHsKICAgICAgICAgICAgIGNtZCArPSAiICIgKyBkOwogICAgICAgICB9Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKGNtZCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKGNtZCk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmFibGUgdG8gY29tbXVuaWNhdGUgdG8gbmF0aXZlIGRhZW1vbiIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc3RvcFRldGhlcmluZygpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ0ZXRoZXIgc3RvcCIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoInRldGhlciBzdG9wIik7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmFibGUgdG8gY29tbXVuaWNhdGUgdG8gbmF0aXZlIGRhZW1vbiB0byBzdG9wIHRldGhlciIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIGJvb2xlYW4gaXNUZXRoZXJpbmdTdGFydGVkKCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKIAotICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgidGV0aGVyIHN0YXR1cyIpOworICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiByc3A7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgidGV0aGVyIHN0YXR1cyIpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjb21tdW5pY2F0ZSB0byBuYXRpdmUgZGFlbW9uIHRvIGdldCB0ZXRoZXIgc3RhdHVzIik7CisgICAgICAgIH0KIAogICAgICAgICBmb3IgKFN0cmluZyBsaW5lIDogcnNwKSB7Ci0gICAgICAgICAgICBTdHJpbmcgW110b2sgPSBsaW5lLnNwbGl0KCIgIik7CisgICAgICAgICAgICBTdHJpbmdbXSB0b2sgPSBsaW5lLnNwbGl0KCIgIik7CisgICAgICAgICAgICBpZiAodG9rLmxlbmd0aCA8IDMpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJNYWxmb3JtZWQgcmVzcG9uc2UgZm9yIHRldGhlciBzdGF0dXM6ICIgKyBsaW5lKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGludCBjb2RlID0gSW50ZWdlci5wYXJzZUludCh0b2tbMF0pOwogICAgICAgICAgICAgaWYgKGNvZGUgPT0gTmV0ZFJlc3BvbnNlQ29kZS5UZXRoZXJTdGF0dXNSZXN1bHQpIHsKICAgICAgICAgICAgICAgICAvLyBYWFg6IFRldGhlcmluZyBzZXJ2aWNlcyA8c3RhcnRlZC9zdG9wcGVkPiA8VEJEPi4uLgotICAgICAgICAgICAgICAgIGlmICh0b2tbMl0uZXF1YWxzKCJzdGFydGVkIikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gInN0YXJ0ZWQiLmVxdWFscyh0b2tbMl0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlZCIsIGNvZGUpKTsKICAgICAgICAgICAgIH0KQEAgLTM1OSwyMCArNDAzLDM1IEBACiAgICAgcHVibGljIHZvaWQgdGV0aGVySW50ZXJmYWNlKFN0cmluZyBpZmFjZSkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoInRldGhlciBpbnRlcmZhY2UgYWRkICIgKyBpZmFjZSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgidGV0aGVyIGludGVyZmFjZSBhZGQgIiArIGlmYWNlKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gY29tbXVuaWNhdGUgdG8gbmF0aXZlIGRhZW1vbiBmb3IgYWRkaW5nIHRldGhlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHVudGV0aGVySW50ZXJmYWNlKFN0cmluZyBpZmFjZSkgewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ0ZXRoZXIgaW50ZXJmYWNlIHJlbW92ZSAiICsgaWZhY2UpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoInRldGhlciBpbnRlcmZhY2UgcmVtb3ZlICIgKyBpZmFjZSk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNvbW11bmljYXRlIHRvIG5hdGl2ZSBkYWVtb24gZm9yIHJlbW92aW5nIHRldGhlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBTdHJpbmdbXSBsaXN0VGV0aGVyZWRJbnRlcmZhY2VzKCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgcmV0dXJuIG1Db25uZWN0b3IuZG9MaXN0Q29tbWFuZCgKLSAgICAgICAgICAgICAgICAidGV0aGVyIGludGVyZmFjZSBsaXN0IiwgTmV0ZFJlc3BvbnNlQ29kZS5UZXRoZXJJbnRlcmZhY2VMaXN0UmVzdWx0KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBtQ29ubmVjdG9yLmRvTGlzdENvbW1hbmQoCisgICAgICAgICAgICAgICAgICAgICJ0ZXRoZXIgaW50ZXJmYWNlIGxpc3QiLCBOZXRkUmVzcG9uc2VDb2RlLlRldGhlckludGVyZmFjZUxpc3RSZXN1bHQpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjb21tdW5pY2F0ZSB0byBuYXRpdmUgZGFlbW9uIGZvciBsaXN0aW5nIHRldGhlciBpbnRlcmZhY2VzIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBzZXREbnNGb3J3YXJkZXJzKFN0cmluZ1tdIGRucykgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CkBAIC0zODMsNyArNDQyLDEyIEBACiAgICAgICAgICAgICBmb3IgKFN0cmluZyBzIDogZG5zKSB7CiAgICAgICAgICAgICAgICAgY21kICs9ICIgIiArIEluZXRBZGRyZXNzLmdldEJ5TmFtZShzKS5nZXRIb3N0QWRkcmVzcygpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoY21kKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoY21kKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gY29tbXVuaWNhdGUgdG8gbmF0aXZlIGRhZW1vbiBmb3Igc2V0dGluZyB0ZXRoZXIgZG5zIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gY2F0Y2ggKFVua25vd25Ib3N0RXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkVycm9yIHJlc29sdmluZyBkbnMgbmFtZSIsIGUpOwogICAgICAgICB9CkBAIC0zOTIsMzAgKzQ1Niw1MCBAQAogICAgIHB1YmxpYyBTdHJpbmdbXSBnZXREbnNGb3J3YXJkZXJzKCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgcmV0dXJuIG1Db25uZWN0b3IuZG9MaXN0Q29tbWFuZCgKLSAgICAgICAgICAgICAgICAidGV0aGVyIGRucyBsaXN0IiwgTmV0ZFJlc3BvbnNlQ29kZS5UZXRoZXJEbnNGd2RUZ3RMaXN0UmVzdWx0KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBtQ29ubmVjdG9yLmRvTGlzdENvbW1hbmQoCisgICAgICAgICAgICAgICAgICAgICJ0ZXRoZXIgZG5zIGxpc3QiLCBOZXRkUmVzcG9uc2VDb2RlLlRldGhlckRuc0Z3ZFRndExpc3RSZXN1bHQpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjb21tdW5pY2F0ZSB0byBuYXRpdmUgZGFlbW9uIGZvciBsaXN0aW5nIHRldGhlciBkbnMiKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIGVuYWJsZU5hdChTdHJpbmcgaW50ZXJuYWxJbnRlcmZhY2UsIFN0cmluZyBleHRlcm5hbEludGVyZmFjZSkKICAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKAotICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoIm5hdCBlbmFibGUgJXMgJXMiLCBpbnRlcm5hbEludGVyZmFjZSwgZXh0ZXJuYWxJbnRlcmZhY2UpKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKAorICAgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJuYXQgZW5hYmxlICVzICVzIiwgaW50ZXJuYWxJbnRlcmZhY2UsIGV4dGVybmFsSW50ZXJmYWNlKSk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNvbW11bmljYXRlIHRvIG5hdGl2ZSBkYWVtb24gZm9yIGVuYWJsaW5nIE5BVCBpbnRlcmZhY2UiKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIGRpc2FibGVOYXQoU3RyaW5nIGludGVybmFsSW50ZXJmYWNlLCBTdHJpbmcgZXh0ZXJuYWxJbnRlcmZhY2UpCiAgICAgICAgICAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgKLSAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJuYXQgZGlzYWJsZSAlcyAlcyIsIGludGVybmFsSW50ZXJmYWNlLCBleHRlcm5hbEludGVyZmFjZSkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoCisgICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoIm5hdCBkaXNhYmxlICVzICVzIiwgaW50ZXJuYWxJbnRlcmZhY2UsIGV4dGVybmFsSW50ZXJmYWNlKSk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNvbW11bmljYXRlIHRvIG5hdGl2ZSBkYWVtb24gZm9yIGRpc2FibGluZyBOQVQgaW50ZXJmYWNlIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgU3RyaW5nW10gbGlzdFR0eXMoKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5BQ0NFU1NfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICByZXR1cm4gbUNvbm5lY3Rvci5kb0xpc3RDb21tYW5kKCJsaXN0X3R0eXMiLCBOZXRkUmVzcG9uc2VDb2RlLlR0eUxpc3RSZXN1bHQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG1Db25uZWN0b3IuZG9MaXN0Q29tbWFuZCgibGlzdF90dHlzIiwgTmV0ZFJlc3BvbnNlQ29kZS5UdHlMaXN0UmVzdWx0KTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gY29tbXVuaWNhdGUgdG8gbmF0aXZlIGRhZW1vbiBmb3IgbGlzdGluZyBUVFlzIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBhdHRhY2hQcHBkKFN0cmluZyB0dHksIFN0cmluZyBsb2NhbEFkZHIsIFN0cmluZyByZW1vdGVBZGRyLCBTdHJpbmcgZG5zMUFkZHIsCkBAIC00MzAsMzEgKzUxNCw1MiBAQAogICAgICAgICAgICAgICAgICAgICBJbmV0QWRkcmVzcy5nZXRCeU5hbWUoZG5zMkFkZHIpLmdldEhvc3RBZGRyZXNzKCkpKTsKICAgICAgICAgfSBjYXRjaCAoVW5rbm93bkhvc3RFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRXJyb3IgcmVzb2x2aW5nIGFkZHIiLCBlKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkVycm9yIGNvbW11bmljYXRpbmcgdG8gbmF0aXZlIGRhZW1vbiB0byBhdHRhY2ggcHBwZCIsIGUpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgZGV0YWNoUHBwZChTdHJpbmcgdHR5KSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KCJwcHBkIGRldGFjaCAlcyIsIHR0eSkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgicHBwZCBkZXRhY2ggJXMiLCB0dHkpKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkVycm9yIGNvbW11bmljYXRpbmcgdG8gbmF0aXZlIGRhZW1vbiB0byBkZXRhY2ggcHBwZCIsIGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc3RhcnRVc2JSTkRJUygpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ1c2Igc3RhcnRybmRpcyIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoInVzYiBzdGFydHJuZGlzIik7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiRXJyb3IgY29tbXVuaWNhdGluZyB0byBuYXRpdmUgZGFlbW9uIGZvciBzdGFydGluZyBSTkRJUyIsIGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc3RvcFVzYlJORElTKCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoInVzYiBzdG9wcm5kaXMiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ1c2Igc3RvcHJuZGlzIik7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJFcnJvciBjb21tdW5pY2F0aW5nIHRvIG5hdGl2ZSBkYWVtb24iLCBlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBib29sZWFuIGlzVXNiUk5ESVNTdGFydGVkKCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoInVzYiBybmRpc3N0YXR1cyIpOworICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiByc3A7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgidXNiIHJuZGlzc3RhdHVzIik7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiRXJyb3IgY29tbXVuaWNhdGluZyB0byBuYXRpdmUgZGFlbW9uIHRvIGNoZWNrIFJORElTIHN0YXR1cyIsIGUpOworICAgICAgICB9CiAKICAgICAgICAgZm9yIChTdHJpbmcgbGluZSA6IHJzcCkgewogICAgICAgICAgICAgU3RyaW5nIFtddG9rID0gbGluZS5zcGxpdCgiICIpOwpAQCAtNDc2LDMxICs1ODEsMzUgQEAKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfV0lGSV9TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgc3RvcCAiICsgd2xhbklmYWNlKSk7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInNvZnRhcCBmd3JlbG9hZCAiICsgd2xhbklmYWNlICsgIiBBUCIpKTsKLSAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIHN0YXJ0ICIgKyB3bGFuSWZhY2UpKTsKLSAgICAgICAgaWYgKHdpZmlDb25maWcgPT0gbnVsbCkgewotICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIHNldCAiICsgd2xhbklmYWNlICsgIiAiICsgc29mdGFwSWZhY2UpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qKgotICAgICAgICAgICAgICogc29mdGFwIHNldCBhcmcxIGFyZzIgYXJnMyBbYXJnNCBhcmc1IGFyZzYgYXJnNyBhcmc4XQotICAgICAgICAgICAgICogYXJndjEgLSB3bGFuIGludGVyZmFjZQotICAgICAgICAgICAgICogYXJndjIgLSBzb2Z0YXAgaW50ZXJmYWNlCi0gICAgICAgICAgICAgKiBhcmd2MyAtIFNTSUQKLSAgICAgICAgICAgICAqIGFyZ3Y0IC0gU2VjdXJpdHkKLSAgICAgICAgICAgICAqIGFyZ3Y1IC0gS2V5Ci0gICAgICAgICAgICAgKiBhcmd2NiAtIENoYW5uZWwKLSAgICAgICAgICAgICAqIGFyZ3Y3IC0gUHJlYW1ibGUKLSAgICAgICAgICAgICAqIGFyZ3Y4IC0gTWF4IFNDQgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBTdHJpbmcgc3RyID0gU3RyaW5nLmZvcm1hdCgic29mdGFwIHNldCAiICsgd2xhbklmYWNlICsgIiAiICsgc29mdGFwSWZhY2UgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAlcyAlcyAlcyIsIGNvbnZlcnRRdW90ZWRTdHJpbmcod2lmaUNvbmZpZy5TU0lEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZmlDb25maWcuYWxsb3dlZEtleU1hbmFnZW1lbnQuZ2V0KEtleU1nbXQuV1BBX1BTSykgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndwYTItcHNrIiA6ICJvcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRRdW90ZWRTdHJpbmcod2lmaUNvbmZpZy5wcmVTaGFyZWRLZXkpKTsKLSAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKHN0cik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgc3RvcCAiICsgd2xhbklmYWNlKSk7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgZndyZWxvYWQgIiArIHdsYW5JZmFjZSArICIgQVAiKSk7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgc3RhcnQgIiArIHdsYW5JZmFjZSkpOworICAgICAgICAgICAgaWYgKHdpZmlDb25maWcgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInNvZnRhcCBzZXQgIiArIHdsYW5JZmFjZSArICIgIiArIHNvZnRhcElmYWNlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICAgICAqIHNvZnRhcCBzZXQgYXJnMSBhcmcyIGFyZzMgW2FyZzQgYXJnNSBhcmc2IGFyZzcgYXJnOF0KKyAgICAgICAgICAgICAgICAgKiBhcmd2MSAtIHdsYW4gaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICogYXJndjIgLSBzb2Z0YXAgaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICogYXJndjMgLSBTU0lECisgICAgICAgICAgICAgICAgICogYXJndjQgLSBTZWN1cml0eQorICAgICAgICAgICAgICAgICAqIGFyZ3Y1IC0gS2V5CisgICAgICAgICAgICAgICAgICogYXJndjYgLSBDaGFubmVsCisgICAgICAgICAgICAgICAgICogYXJndjcgLSBQcmVhbWJsZQorICAgICAgICAgICAgICAgICAqIGFyZ3Y4IC0gTWF4IFNDQgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgc2V0ICIgKyB3bGFuSWZhY2UgKyAiICIgKyBzb2Z0YXBJZmFjZSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAlcyAlcyAlcyIsIGNvbnZlcnRRdW90ZWRTdHJpbmcod2lmaUNvbmZpZy5TU0lEKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWZpQ29uZmlnLmFsbG93ZWRLZXlNYW5hZ2VtZW50LmdldChLZXlNZ210LldQQV9QU0spID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3BhMi1wc2siIDogIm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRRdW90ZWRTdHJpbmcod2lmaUNvbmZpZy5wcmVTaGFyZWRLZXkpKTsKKyAgICAgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChzdHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIHN0YXJ0YXAiKSk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJFcnJvciBjb21tdW5pY2F0aW5nIHRvIG5hdGl2ZSBkYWVtb24gdG8gc3RhcnQgc29mdGFwIiwgZSk7CiAgICAgICAgIH0KLSAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIHN0YXJ0YXAiKSk7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBTdHJpbmcgY29udmVydFF1b3RlZFN0cmluZyhTdHJpbmcgcykgewpAQCAtNTE2LDcgKzYyNSwxMiBAQAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9XSUZJX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJzb2Z0YXAgc3RvcGFwIik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgic29mdGFwIHN0b3BhcCIpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRXJyb3IgY29tbXVuaWNhdGluZyB0byBuYXRpdmUgZGFlbW9uIHRvIHN0b3Agc29mdCBBUCIsCisgICAgICAgICAgICAgICAgICAgIGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0QWNjZXNzUG9pbnQoV2lmaUNvbmZpZ3VyYXRpb24gd2lmaUNvbmZpZywgU3RyaW5nIHdsYW5JZmFjZSwgU3RyaW5nIHNvZnRhcElmYWNlKQpAQCAtNTI1LDE1ICs2MzksMTkgQEAKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9XSUZJX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIGlmICh3aWZpQ29uZmlnID09IG51bGwpIHsKLSAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInNvZnRhcCBzZXQgIiArIHdsYW5JZmFjZSArICIgIiArIHNvZnRhcElmYWNlKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTdHJpbmcgc3RyID0gU3RyaW5nLmZvcm1hdCgic29mdGFwIHNldCAiICsgd2xhbklmYWNlICsgIiAiICsgc29mdGFwSWZhY2UgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAlcyAlcyAlcyIsIGNvbnZlcnRRdW90ZWRTdHJpbmcod2lmaUNvbmZpZy5TU0lEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZmlDb25maWcuYWxsb3dlZEtleU1hbmFnZW1lbnQuZ2V0KEtleU1nbXQuV1BBX1BTSykgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndwYTItcHNrIiA6ICJvcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRRdW90ZWRTdHJpbmcod2lmaUNvbmZpZy5wcmVTaGFyZWRLZXkpKTsKLSAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKHN0cik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAod2lmaUNvbmZpZyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIHNldCAiICsgd2xhbklmYWNlICsgIiAiICsgc29mdGFwSWZhY2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZy5mb3JtYXQoInNvZnRhcCBzZXQgIiArIHdsYW5JZmFjZSArICIgIiArIHNvZnRhcElmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICArICIgJXMgJXMgJXMiLCBjb252ZXJ0UXVvdGVkU3RyaW5nKHdpZmlDb25maWcuU1NJRCksCisgICAgICAgICAgICAgICAgICAgICAgICB3aWZpQ29uZmlnLmFsbG93ZWRLZXlNYW5hZ2VtZW50LmdldChLZXlNZ210LldQQV9QU0spID8gIndwYTItcHNrIiA6ICJvcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRRdW90ZWRTdHJpbmcod2lmaUNvbmZpZy5wcmVTaGFyZWRLZXkpKTsKKyAgICAgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChzdHIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRXJyb3IgY29tbXVuaWNhdGluZyB0byBuYXRpdmUgZGFlbW9uIHRvIHNldCBzb2Z0IEFQIiwKKyAgICAgICAgICAgICAgICAgICAgZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU0MSw5ICs2NTksMjIgQEAKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5BQ0NFU1NfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwogICAgICAgICB0cnkgewotICAgICAgICAgICAgU3RyaW5nIHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKAotICAgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJpbnRlcmZhY2UgcmVhZCVzY291bnRlciAlcyIsIChyeCA/ICJyeCIgOiAidHgiKSwgaWZhY2UpKS5nZXQoMCk7Ci0gICAgICAgICAgICBTdHJpbmcgW110b2sgPSByc3Auc3BsaXQoIiAiKTsKKyAgICAgICAgICAgIFN0cmluZyByc3A7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgiaW50ZXJmYWNlIHJlYWQlc2NvdW50ZXIgJXMiLCAocnggPyAicngiIDogInR4IiksIGlmYWNlKSkuZ2V0KDApOworICAgICAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUxKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkVycm9yIGNvbW11bmljYXRpbmcgd2l0aCBuYXRpdmUgZGFlbW9uIiwgZTEpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RyaW5nW10gdG9rID0gcnNwLnNwbGl0KCIgIik7CisgICAgICAgICAgICBpZiAodG9rLmxlbmd0aCA8IDIpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCBTdHJpbmcuZm9ybWF0KCJNYWxmb3JtZWQgcmVzcG9uc2UgZm9yIHJlYWRpbmcgJXMgaW50ZXJmYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIChyeCA/ICJyeCIgOiAidHgiKSkpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaW50IGNvZGU7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIGNvZGUgPSBJbnRlZ2VyLnBhcnNlSW50KHRva1swXSk7CkBAIC01NzUsMTcgKzcwNiwzNCBAQAogICAgIHB1YmxpYyB2b2lkIHNldEludGVyZmFjZVRocm90dGxlKFN0cmluZyBpZmFjZSwgaW50IHJ4S2JwcywgaW50IHR4S2JwcykgewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgImludGVyZmFjZSBzZXR0aHJvdHRsZSAlcyAlZCAlZCIsIGlmYWNlLCByeEticHMsIHR4S2JwcykpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSBzZXR0aHJvdHRsZSAlcyAlZCAlZCIsIGlmYWNlLCByeEticHMsIHR4S2JwcykpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU2xvZy5lKFRBRywgIkVycm9yIGNvbW11bmljYXRpbmcgd2l0aCBuYXRpdmUgZGFlbW9uIHRvIHNldCB0aHJvdHRsZSIsIGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHJpdmF0ZSBpbnQgZ2V0SW50ZXJmYWNlVGhyb3R0bGUoU3RyaW5nIGlmYWNlLCBib29sZWFuIHJ4KSB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIFN0cmluZyByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgiaW50ZXJmYWNlIGdldHRocm90dGxlICVzICVzIiwgaWZhY2UsKHJ4ID8gInJ4IiA6ICJ0eCIpKSkuZ2V0KDApOwotICAgICAgICAgICAgU3RyaW5nIFtddG9rID0gcnNwLnNwbGl0KCIgIik7CisgICAgICAgICAgICBTdHJpbmcgcnNwOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoImludGVyZmFjZSBnZXR0aHJvdHRsZSAlcyAlcyIsIGlmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnggPyAicngiIDogInR4IikpKS5nZXQoMCk7CisgICAgICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJFcnJvciBjb21tdW5pY2F0aW5nIHdpdGggbmF0aXZlIGRhZW1vbiB0byBnZXR0aHJvdHRsZSIsIGUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RyaW5nW10gdG9rID0gcnNwLnNwbGl0KCIgIik7CisgICAgICAgICAgICBpZiAodG9rLmxlbmd0aCA8IDIpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiTWFsZm9ybWVkIHJlc3BvbnNlIHRvIGdldHRocm90dGxlIGNvbW1hbmQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGludCBjb2RlOwogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBjb2RlID0gSW50ZWdlci5wYXJzZUludCh0b2tbMF0pOwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTm90aWZpY2F0aW9uTWFuYWdlclNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05vdGlmaWNhdGlvbk1hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggNzNkMTdlYS4uMjVkZThiMCAxMDA3NTUKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTm90aWZpY2F0aW9uTWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Ob3RpZmljYXRpb25NYW5hZ2VyU2VydmljZS5qYXZhCkBAIC0xNiw5ICsxNiw4IEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOwogCi1pbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5JY29uRGF0YTsKLWltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLk5vdGlmaWNhdGlvbkRhdGE7Ci1pbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5TdGF0dXNCYXJTZXJ2aWNlOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJOb3RpZmljYXRpb247CitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLlN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlOwogCiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOwogaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXI7CkBAIC0zOSw5ICszOCwxMSBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CiBpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXI7CitpbXBvcnQgYW5kcm9pZC5oYXJkd2FyZS5Vc2I7CiBpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOwogaW1wb3J0IGFuZHJvaWQub3MuQmF0dGVyeU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CiBpbXBvcnQgYW5kcm9pZC5vcy5CaW5kZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKQEAgLTcxLDYgKzcyLDggQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIk5vdGlmaWNhdGlvblNlcnZpY2UiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREJHID0gZmFsc2U7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX1BBQ0tBR0VfTk9USUZJQ0FUSU9OUyA9IDUwOworCiAgICAgLy8gbWVzc2FnZSBjb2RlcwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNRVNTQUdFX1RJTUVPVVQgPSAyOwogCkBAIC04Niw3ICs4OSw3IEBACiAgICAgZmluYWwgSUJpbmRlciBtRm9yZWdyb3VuZFRva2VuID0gbmV3IEJpbmRlcigpOwogCiAgICAgcHJpdmF0ZSBXb3JrZXJIYW5kbGVyIG1IYW5kbGVyOwotICAgIHByaXZhdGUgU3RhdHVzQmFyU2VydmljZSBtU3RhdHVzQmFyU2VydmljZTsKKyAgICBwcml2YXRlIFN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIG1TdGF0dXNCYXI7CiAgICAgcHJpdmF0ZSBMaWdodHNTZXJ2aWNlIG1MaWdodHNTZXJ2aWNlOwogICAgIHByaXZhdGUgTGlnaHRzU2VydmljZS5MaWdodCBtQmF0dGVyeUxpZ2h0OwogICAgIHByaXZhdGUgTGlnaHRzU2VydmljZS5MaWdodCBtTm90aWZpY2F0aW9uTGlnaHQ7CkBAIC0xMTAsOCArMTEzLDYgQEAKICAgICBwcml2YXRlIGJvb2xlYW4gbU5vdGlmaWNhdGlvblB1bHNlRW5hYmxlZDsKIAogICAgIC8vIGZvciBhZGIgY29ubmVjdGVkIG5vdGlmaWNhdGlvbnMKLSAgICBwcml2YXRlIGJvb2xlYW4gbVVzYkNvbm5lY3RlZDsKLSAgICBwcml2YXRlIGJvb2xlYW4gbUFkYkVuYWJsZWQgPSBmYWxzZTsKICAgICBwcml2YXRlIGJvb2xlYW4gbUFkYk5vdGlmaWNhdGlvblNob3duID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBOb3RpZmljYXRpb24gbUFkYk5vdGlmaWNhdGlvbjsKIApAQCAtMTYzLDE2ICsxNjQsMjEgQEAKICAgICAgICAgZmluYWwgU3RyaW5nIHBrZzsKICAgICAgICAgZmluYWwgU3RyaW5nIHRhZzsKICAgICAgICAgZmluYWwgaW50IGlkOworICAgICAgICBmaW5hbCBpbnQgdWlkOworICAgICAgICBmaW5hbCBpbnQgaW5pdGlhbFBpZDsKICAgICAgICAgSVRyYW5zaWVudE5vdGlmaWNhdGlvbiBjYWxsYmFjazsKICAgICAgICAgaW50IGR1cmF0aW9uOwogICAgICAgICBmaW5hbCBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uOwogICAgICAgICBJQmluZGVyIHN0YXR1c0JhcktleTsKIAotICAgICAgICBOb3RpZmljYXRpb25SZWNvcmQoU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkLCBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorICAgICAgICBOb3RpZmljYXRpb25SZWNvcmQoU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkLCBpbnQgdWlkLCBpbnQgaW5pdGlhbFBpZCwKKyAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogICAgICAgICB7CiAgICAgICAgICAgICB0aGlzLnBrZyA9IHBrZzsKICAgICAgICAgICAgIHRoaXMudGFnID0gdGFnOwogICAgICAgICAgICAgdGhpcy5pZCA9IGlkOworICAgICAgICAgICAgdGhpcy51aWQgPSB1aWQ7CisgICAgICAgICAgICB0aGlzLmluaXRpYWxQaWQgPSBpbml0aWFsUGlkOwogICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CiAgICAgICAgIH0KIApAQCAtMjM4LDggKzI0NCw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIFN0YXR1c0JhclNlcnZpY2UuTm90aWZpY2F0aW9uQ2FsbGJhY2tzIG1Ob3RpZmljYXRpb25DYWxsYmFja3MKLSAgICAgICAgICAgID0gbmV3IFN0YXR1c0JhclNlcnZpY2UuTm90aWZpY2F0aW9uQ2FsbGJhY2tzKCkgeworICAgIHByaXZhdGUgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UuTm90aWZpY2F0aW9uQ2FsbGJhY2tzIG1Ob3RpZmljYXRpb25DYWxsYmFja3MKKyAgICAgICAgICAgID0gbmV3IFN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlLk5vdGlmaWNhdGlvbkNhbGxiYWNrcygpIHsKIAogICAgICAgICBwdWJsaWMgdm9pZCBvblNldERpc2FibGVkKGludCBzdGF0dXMpIHsKICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobU5vdGlmaWNhdGlvbkxpc3QpIHsKQEAgLTMwMiw2ICszMDgsMjAgQEAKICAgICAgICAgICAgICAgICB1cGRhdGVMaWdodHNMb2NrZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG9uTm90aWZpY2F0aW9uRXJyb3IoU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkLAorICAgICAgICAgICAgICAgIGludCB1aWQsIGludCBpbml0aWFsUGlkLCBTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgIm9uTm90aWZpY2F0aW9uIGVycm9yIHBrZz0iICsgcGtnICsgIiB0YWc9IiArIHRhZyArICIgaWQ9IiArIGlkKTsKKyAgICAgICAgICAgIGNhbmNlbE5vdGlmaWNhdGlvbihwa2csIHRhZywgaWQsIDAsIDApOworICAgICAgICAgICAgbG9uZyBpZGVudCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLmNyYXNoQXBwbGljYXRpb24odWlkLCBpbml0aWFsUGlkLCBwa2csCisgICAgICAgICAgICAgICAgICAgICAgICAiQmFkIG5vdGlmaWNhdGlvbiBwb3N0ZWQgZnJvbSBwYWNrYWdlICIgKyBwa2cKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIjogIiArIG1lc3NhZ2UpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50KTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1JbnRlbnRSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKQEAgLTMyNiwxMiArMzQ2LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5RnVsbCA9IGJhdHRlcnlGdWxsOwogICAgICAgICAgICAgICAgICAgICB1cGRhdGVMaWdodHMoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9VTVNfQ09OTkVDVEVEKSkgewotICAgICAgICAgICAgICAgIG1Vc2JDb25uZWN0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHVwZGF0ZUFkYk5vdGlmaWNhdGlvbigpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVU1TX0RJU0NPTk5FQ1RFRCkpIHsKLSAgICAgICAgICAgICAgICBtVXNiQ29ubmVjdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQWRiTm90aWZpY2F0aW9uKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoVXNiLkFDVElPTl9VU0JfU1RBVEUpKSB7CisgICAgICAgICAgICAgICAgQnVuZGxlIGV4dHJhcyA9IGludGVudC5nZXRFeHRyYXMoKTsKKyAgICAgICAgICAgICAgICBib29sZWFuIHVzYkNvbm5lY3RlZCA9IGV4dHJhcy5nZXRCb29sZWFuKFVzYi5VU0JfQ09OTkVDVEVEKTsKKyAgICAgICAgICAgICAgICBib29sZWFuIGFkYkVuYWJsZWQgPSAoVXNiLlVTQl9GVU5DVElPTl9FTkFCTEVELmVxdWFscygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhcy5nZXRTdHJpbmcoVXNiLlVTQl9GVU5DVElPTl9BREIpKSk7CisgICAgICAgICAgICAgICAgdXBkYXRlQWRiTm90aWZpY2F0aW9uKHVzYkNvbm5lY3RlZCAmJiBhZGJFbmFibGVkKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhVc2IuQUNUSU9OX1VTQl9ESVNDT05ORUNURUQpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlQWRiTm90aWZpY2F0aW9uKGZhbHNlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX1BBQ0tBR0VfUkVNT1ZFRCkKICAgICAgICAgICAgICAgICAgICAgfHwgYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX1BBQ0tBR0VfUkVTVEFSVEVEKQogICAgICAgICAgICAgICAgICAgICB8fCAocXVlcnlSZXN0YXJ0PWFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9RVUVSWV9QQUNLQUdFX1JFU1RBUlQpKQpAQCAtMzc3LDggKzM5OSw2IEBACiAKICAgICAgICAgdm9pZCBvYnNlcnZlKCkgewogICAgICAgICAgICAgQ29udGVudFJlc29sdmVyIHJlc29sdmVyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7Ci0gICAgICAgICAgICByZXNvbHZlci5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcihTZXR0aW5ncy5TZWN1cmUuZ2V0VXJpRm9yKAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuQURCX0VOQUJMRUQpLCBmYWxzZSwgdGhpcyk7CiAgICAgICAgICAgICByZXNvbHZlci5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcihTZXR0aW5ncy5TeXN0ZW0uZ2V0VXJpRm9yKAogICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTk9USUZJQ0FUSU9OX0xJR0hUX1BVTFNFKSwgZmFsc2UsIHRoaXMpOwogICAgICAgICAgICAgdXBkYXRlKCk7CkBAIC0zOTAsMTIgKzQxMCw2IEBACiAKICAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlKCkgewogICAgICAgICAgICAgQ29udGVudFJlc29sdmVyIHJlc29sdmVyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7Ci0gICAgICAgICAgICBib29sZWFuIGFkYkVuYWJsZWQgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KHJlc29sdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkFEQl9FTkFCTEVELCAwKSAhPSAwOwotICAgICAgICAgICAgaWYgKG1BZGJFbmFibGVkICE9IGFkYkVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICBtQWRiRW5hYmxlZCA9IGFkYkVuYWJsZWQ7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQWRiTm90aWZpY2F0aW9uKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBib29sZWFuIHB1bHNlRW5hYmxlZCA9IFNldHRpbmdzLlN5c3RlbS5nZXRJbnQocmVzb2x2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTk9USUZJQ0FUSU9OX0xJR0hUX1BVTFNFLCAwKSAhPSAwOwogICAgICAgICAgICAgaWYgKG1Ob3RpZmljYXRpb25QdWxzZUVuYWJsZWQgIT0gcHVsc2VFbmFibGVkKSB7CkBAIC00MDUsNyArNDE5LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIE5vdGlmaWNhdGlvbk1hbmFnZXJTZXJ2aWNlKENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFyU2VydmljZSBzdGF0dXNCYXIsCisgICAgTm90aWZpY2F0aW9uTWFuYWdlclNlcnZpY2UoQ29udGV4dCBjb250ZXh0LCBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSBzdGF0dXNCYXIsCiAgICAgICAgICAgICBMaWdodHNTZXJ2aWNlIGxpZ2h0cykKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CkBAIC00MTcsNyArNDMxLDcgQEAKICAgICAgICAgbVRvYXN0UXVldWUgPSBuZXcgQXJyYXlMaXN0PFRvYXN0UmVjb3JkPigpOwogICAgICAgICBtSGFuZGxlciA9IG5ldyBXb3JrZXJIYW5kbGVyKCk7CiAKLSAgICAgICAgbVN0YXR1c0JhclNlcnZpY2UgPSBzdGF0dXNCYXI7CisgICAgICAgIG1TdGF0dXNCYXIgPSBzdGF0dXNCYXI7CiAgICAgICAgIHN0YXR1c0Jhci5zZXROb3RpZmljYXRpb25DYWxsYmFja3MobU5vdGlmaWNhdGlvbkNhbGxiYWNrcyk7CiAKICAgICAgICAgbUJhdHRlcnlMaWdodCA9IGxpZ2h0cy5nZXRMaWdodChMaWdodHNTZXJ2aWNlLkxJR0hUX0lEX0JBVFRFUlkpOwpAQCAtNDQ0LDggKzQ1OCw3IEBACiAgICAgICAgIC8vIHJlZ2lzdGVyIGZvciBiYXR0ZXJ5IGNoYW5nZWQgbm90aWZpY2F0aW9ucwogICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOwogICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1VNU19DT05ORUNURUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fVU1TX0RJU0NPTk5FQ1RFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oVXNiLkFDVElPTl9VU0JfU1RBVEUpOwogICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fU0NSRUVOX09OKTsKICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1NDUkVFTl9PRkYpOwogICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFRlbGVwaG9ueU1hbmFnZXIuQUNUSU9OX1BIT05FX1NUQVRFX0NIQU5HRUQpOwpAQCAtNjU2LDggKzY2OSwzMSBAQAogICAgIHB1YmxpYyB2b2lkIGVucXVldWVOb3RpZmljYXRpb25XaXRoVGFnKFN0cmluZyBwa2csIFN0cmluZyB0YWcsIGludCBpZCwKICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIGludFtdIGlkT3V0KQogICAgIHsKKyAgICAgICAgZmluYWwgaW50IGNhbGxpbmdVaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOworICAgICAgICBmaW5hbCBpbnQgY2FsbGluZ1BpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CisgICAgICAgIAogICAgICAgICBjaGVja0luY29taW5nQ2FsbChwa2cpOwogCisgICAgICAgIC8vIExpbWl0IHRoZSBudW1iZXIgb2Ygbm90aWZpY2F0aW9ucyB0aGF0IGFueSBnaXZlbiBwYWNrYWdlIGV4Y2VwdCB0aGUgYW5kcm9pZAorICAgICAgICAvLyBwYWNrYWdlIGNhbiBlbnF1ZXVlLiAgUHJldmVudHMgRE9TIGF0dGFja3MgYW5kIGRlYWxzIHdpdGggbGVha3MuCisgICAgICAgIGlmICghImFuZHJvaWQiLmVxdWFscyhwa2cpKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25MaXN0KSB7CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1Ob3RpZmljYXRpb25MaXN0LnNpemUoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvblJlY29yZCByID0gbU5vdGlmaWNhdGlvbkxpc3QuZ2V0KGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoci5wa2cuZXF1YWxzKHBrZykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPj0gTUFYX1BBQ0tBR0VfTk9USUZJQ0FUSU9OUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJQYWNrYWdlIGhhcyBhbHJlYWR5IHBvc3RlZCAiICsgY291bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBub3RpZmljYXRpb25zLiAgTm90IHNob3dpbmcgbW9yZS4gIHBhY2thZ2U9IiArIHBrZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgLy8gVGhpcyBjb25kaXRpb25hbCBpcyBhIGRpcnR5IGhhY2sgdG8gbGltaXQgdGhlIGxvZ2dpbmcgZG9uZSBvbgogICAgICAgICAvLyAgICAgYmVoYWxmIG9mIHRoZSBkb3dubG9hZCBtYW5hZ2VyIHdpdGhvdXQgYWZmZWN0aW5nIG90aGVyIGFwcHMuCiAgICAgICAgIGlmICghcGtnLmVxdWFscygiY29tLmFuZHJvaWQucHJvdmlkZXJzLmRvd25sb2FkcyIpCkBAIC02ODEsNyArNzE3LDggQEAKICAgICAgICAgfQogCiAgICAgICAgIHN5bmNocm9uaXplZCAobU5vdGlmaWNhdGlvbkxpc3QpIHsKLSAgICAgICAgICAgIE5vdGlmaWNhdGlvblJlY29yZCByID0gbmV3IE5vdGlmaWNhdGlvblJlY29yZChwa2csIHRhZywgaWQsIG5vdGlmaWNhdGlvbik7CisgICAgICAgICAgICBOb3RpZmljYXRpb25SZWNvcmQgciA9IG5ldyBOb3RpZmljYXRpb25SZWNvcmQocGtnLCB0YWcsIGlkLAorICAgICAgICAgICAgICAgICAgICBjYWxsaW5nVWlkLCBjYWxsaW5nUGlkLCBub3RpZmljYXRpb24pOwogICAgICAgICAgICAgTm90aWZpY2F0aW9uUmVjb3JkIG9sZCA9IG51bGw7CiAKICAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZOb3RpZmljYXRpb25Mb2NrZWQocGtnLCB0YWcsIGlkKTsKQEAgLTcwNSwzNiArNzQyLDEzIEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChub3RpZmljYXRpb24uaWNvbiAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgSWNvbkRhdGEgaWNvbiA9IEljb25EYXRhLm1ha2VJY29uKG51bGwsIHBrZywgbm90aWZpY2F0aW9uLmljb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmljb25MZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ubnVtYmVyKTsKLSAgICAgICAgICAgICAgICBDaGFyU2VxdWVuY2UgdHJ1bmNhdGVkVGlja2VyID0gbm90aWZpY2F0aW9uLnRpY2tlclRleHQ7Ci0KLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBtYWtlIHRoaXMgcmVzdHJpY3Rpb24gZG8gc29tZXRoaW5nIHNtYXJ0ZXIgbGlrZSBuZXZlciBmaWxsCi0gICAgICAgICAgICAgICAgLy8gbW9yZSB0aGFuIHR3byBzY3JlZW5zLiAgIldoeSB3b3VsZCBhbnlvbmUgbmVlZCBtb3JlIHRoYW4gODAgY2hhcmFjdGVycy4iIDotLwotICAgICAgICAgICAgICAgIGZpbmFsIGludCBtYXhUaWNrZXJMZW4gPSA4MDsKLSAgICAgICAgICAgICAgICBpZiAodHJ1bmNhdGVkVGlja2VyICE9IG51bGwgJiYgdHJ1bmNhdGVkVGlja2VyLmxlbmd0aCgpID4gbWF4VGlja2VyTGVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRydW5jYXRlZFRpY2tlciA9IHRydW5jYXRlZFRpY2tlci5zdWJTZXF1ZW5jZSgwLCBtYXhUaWNrZXJMZW4pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbkRhdGEgbiA9IG5ldyBOb3RpZmljYXRpb25EYXRhKCk7Ci0gICAgICAgICAgICAgICAgbi5wa2cgPSBwa2c7Ci0gICAgICAgICAgICAgICAgbi50YWcgPSB0YWc7Ci0gICAgICAgICAgICAgICAgbi5pZCA9IGlkOwotICAgICAgICAgICAgICAgIG4ud2hlbiA9IG5vdGlmaWNhdGlvbi53aGVuOwotICAgICAgICAgICAgICAgIG4udGlja2VyVGV4dCA9IHRydW5jYXRlZFRpY2tlcjsKLSAgICAgICAgICAgICAgICBuLm9uZ29pbmdFdmVudCA9IChub3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UKSAhPSAwOwotICAgICAgICAgICAgICAgIGlmICghbi5vbmdvaW5nRXZlbnQgJiYgKG5vdGlmaWNhdGlvbi5mbGFncyAmIE5vdGlmaWNhdGlvbi5GTEFHX05PX0NMRUFSKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIG4uY2xlYXJhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbi5jb250ZW50VmlldyA9IG5vdGlmaWNhdGlvbi5jb250ZW50VmlldzsKLSAgICAgICAgICAgICAgICBuLmNvbnRlbnRJbnRlbnQgPSBub3RpZmljYXRpb24uY29udGVudEludGVudDsKLSAgICAgICAgICAgICAgICBuLmRlbGV0ZUludGVudCA9IG5vdGlmaWNhdGlvbi5kZWxldGVJbnRlbnQ7CisgICAgICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4gPSBuZXcgU3RhdHVzQmFyTm90aWZpY2F0aW9uKHBrZywgaWQsIHRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgIHIudWlkLCByLmluaXRpYWxQaWQsIG5vdGlmaWNhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKG9sZCAhPSBudWxsICYmIG9sZC5zdGF0dXNCYXJLZXkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICByLnN0YXR1c0JhcktleSA9IG9sZC5zdGF0dXNCYXJLZXk7CiAgICAgICAgICAgICAgICAgICAgIGxvbmcgaWRlbnRpdHkgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJTZXJ2aWNlLnVwZGF0ZUljb24oci5zdGF0dXNCYXJLZXksIGljb24sIG4pOworICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhci51cGRhdGVOb3RpZmljYXRpb24oci5zdGF0dXNCYXJLZXksIG4pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkoaWRlbnRpdHkpOwpAQCAtNzQyLDIxICs3NTYsMTkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBsb25nIGlkZW50aXR5ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByLnN0YXR1c0JhcktleSA9IG1TdGF0dXNCYXJTZXJ2aWNlLmFkZEljb24oaWNvbiwgbik7CisgICAgICAgICAgICAgICAgICAgICAgICByLnN0YXR1c0JhcktleSA9IG1TdGF0dXNCYXIuYWRkTm90aWZpY2F0aW9uKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgbUF0dGVudGlvbkxpZ2h0LnB1bHNlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudGl0eSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICBzZW5kQWNjZXNzaWJpbGl0eUV2ZW50KG5vdGlmaWNhdGlvbiwgcGtnKTsKLQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAob2xkICE9IG51bGwgJiYgb2xkLnN0YXR1c0JhcktleSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIGxvbmcgaWRlbnRpdHkgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJTZXJ2aWNlLnJlbW92ZUljb24ob2xkLnN0YXR1c0JhcktleSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyLnJlbW92ZU5vdGlmaWNhdGlvbihvbGQuc3RhdHVzQmFyS2V5KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50aXR5KTsKQEAgLTg2NCw3ICs4NzYsNyBAQAogICAgICAgICBpZiAoci5ub3RpZmljYXRpb24uaWNvbiAhPSAwKSB7CiAgICAgICAgICAgICBsb25nIGlkZW50aXR5ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJTZXJ2aWNlLnJlbW92ZUljb24oci5zdGF0dXNCYXJLZXkpOworICAgICAgICAgICAgICAgIG1TdGF0dXNCYXIucmVtb3ZlTm90aWZpY2F0aW9uKHIuc3RhdHVzQmFyS2V5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpbmFsbHkgewogICAgICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50aXR5KTsKQEAgLTExMTgsOCArMTEzMCw4IEBACiAgICAgLy8gVGhpcyBpcyBoZXJlIGluc3RlYWQgb2YgU3RhdHVzQmFyUG9saWN5IGJlY2F1c2UgaXQgaXMgYW4gaW1wb3J0YW50CiAgICAgLy8gc2VjdXJpdHkgZmVhdHVyZSB0aGF0IHdlIGRvbid0IHdhbnQgcGVvcGxlIGN1c3RvbWl6aW5nIHRoZSBwbGF0Zm9ybQogICAgIC8vIHRvIGFjY2lkZW50YWxseSBsb3NlLgotICAgIHByaXZhdGUgdm9pZCB1cGRhdGVBZGJOb3RpZmljYXRpb24oKSB7Ci0gICAgICAgIGlmIChtQWRiRW5hYmxlZCAmJiBtVXNiQ29ubmVjdGVkKSB7CisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUFkYk5vdGlmaWNhdGlvbihib29sZWFuIGFkYkVuYWJsZWQpIHsKKyAgICAgICAgaWYgKGFkYkVuYWJsZWQpIHsKICAgICAgICAgICAgIGlmICgiMCIuZXF1YWxzKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJwZXJzaXN0LmFkYi5ub3RpZnkiKSkpIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9QYWNrYWdlTWFuYWdlclNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1BhY2thZ2VNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IDQ5ZDJhNzYuLmI0ZmMxNWEgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1BhY2thZ2VNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1BhY2thZ2VNYW5hZ2VyU2VydmljZS5qYXZhCkBAIC0xNTAsNiArMTUwLDggQEAKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gR0VUX0NFUlRJRklDQVRFUyA9IHRydWU7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX1BST1BFUlRZX0VGU19FTkFCTEVEID0gInBlcnNpc3Quc2VjdXJpdHkuZWZzLmVuYWJsZWQiOworCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFJFTU9WRV9FVkVOVFMgPQogICAgICAgICBGaWxlT2JzZXJ2ZXIuQ0xPU0VfV1JJVEUgfCBGaWxlT2JzZXJ2ZXIuREVMRVRFIHwgRmlsZU9ic2VydmVyLk1PVkVEX0ZST007CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFERF9FVkVOVFMgPQpAQCAtMjA0LDYgKzIwNiwxMCBAQAogICAgIC8vIFRoaXMgaXMgd2hlcmUgYWxsIGFwcGxpY2F0aW9uIHBlcnNpc3RlbnQgZGF0YSBnb2VzLgogICAgIGZpbmFsIEZpbGUgbUFwcERhdGFEaXI7CiAKKyAgICAvLyBJZiBFbmNyeXB0ZWQgRmlsZSBTeXN0ZW0gZmVhdHVyZSBpcyBlbmFibGVkLCBhbGwgYXBwbGljYXRpb24gcGVyc2lzdGVudCBkYXRhCisgICAgLy8gc2hvdWxkIGdvIGhlcmUgaW5zdGVhZC4KKyAgICBmaW5hbCBGaWxlIG1TZWN1cmVBcHBEYXRhRGlyOworCiAgICAgLy8gVGhpcyBpcyB0aGUgb2JqZWN0IG1vbml0b3JpbmcgdGhlIGZyYW1ld29yayBkaXIuCiAgICAgZmluYWwgRmlsZU9ic2VydmVyIG1GcmFtZXdvcmtJbnN0YWxsT2JzZXJ2ZXI7CiAKQEAgLTc2OCw2ICs3NzQsNyBAQAogCiAgICAgICAgICAgICBGaWxlIGRhdGFEaXIgPSBFbnZpcm9ubWVudC5nZXREYXRhRGlyZWN0b3J5KCk7CiAgICAgICAgICAgICBtQXBwRGF0YURpciA9IG5ldyBGaWxlKGRhdGFEaXIsICJkYXRhIik7CisgICAgICAgICAgICBtU2VjdXJlQXBwRGF0YURpciA9IG5ldyBGaWxlKGRhdGFEaXIsICJzZWN1cmUvZGF0YSIpOwogICAgICAgICAgICAgbURybUFwcFByaXZhdGVJbnN0YWxsRGlyID0gbmV3IEZpbGUoZGF0YURpciwgImFwcC1wcml2YXRlIik7CiAKICAgICAgICAgICAgIGlmIChtSW5zdGFsbGVyID09IG51bGwpIHsKQEAgLTc3Nyw2ICs3ODQsNyBAQAogICAgICAgICAgICAgICAgIEZpbGUgbWlzY0RpciA9IG5ldyBGaWxlKGRhdGFEaXIsICJtaXNjIik7CiAgICAgICAgICAgICAgICAgbWlzY0Rpci5ta2RpcnMoKTsKICAgICAgICAgICAgICAgICBtQXBwRGF0YURpci5ta2RpcnMoKTsKKyAgICAgICAgICAgICAgICBtU2VjdXJlQXBwRGF0YURpci5ta2RpcnMoKTsKICAgICAgICAgICAgICAgICBtRHJtQXBwUHJpdmF0ZUluc3RhbGxEaXIubWtkaXJzKCk7CiAgICAgICAgICAgICB9CiAKQEAgLTkzNyw3ICs5NDUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBubyBsb25nZXIgZXhpc3RzOyB3aXBpbmcgaXRzIGRhdGEiOwogICAgICAgICAgICAgICAgICAgICByZXBvcnRTZXR0aW5nc1Byb2JsZW0oTG9nLldBUk4sIG1zZyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtSW5zdGFsbGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1JbnN0YWxsZXIucmVtb3ZlKHBzLm5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gWFhYIGhvdyB0byBzZXQgdXNlRW5jcnlwdGVkRlNEaXIgZm9yIHBhY2thZ2VzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBub3QgZW5jcnlwdGVkPworICAgICAgICAgICAgICAgICAgICAgICAgbUluc3RhbGxlci5yZW1vdmUocHMubmFtZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMDIwLDcgKzEwMzAsOCBAQAogICAgIHZvaWQgY2xlYW51cEluc3RhbGxGYWlsZWRQYWNrYWdlKFBhY2thZ2VTZXR0aW5nIHBzKSB7CiAgICAgICAgIFNsb2cuaShUQUcsICJDbGVhbmluZyB1cCBpbmNvbXBsZXRlbHkgaW5zdGFsbGVkIGFwcDogIiArIHBzLm5hbWUpOwogICAgICAgICBpZiAobUluc3RhbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpbnQgcmV0Q29kZSA9IG1JbnN0YWxsZXIucmVtb3ZlKHBzLm5hbWUpOworICAgICAgICAgICAgYm9vbGVhbiB1c2VTZWN1cmVGUyA9IHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW1Gb3JQYWNrYWdlKHBzLnBrZyk7CisgICAgICAgICAgICBpbnQgcmV0Q29kZSA9IG1JbnN0YWxsZXIucmVtb3ZlKHBzLm5hbWUsIHVzZVNlY3VyZUZTKTsKICAgICAgICAgICAgIGlmIChyZXRDb2RlIDwgMCkgewogICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJDb3VsZG4ndCByZW1vdmUgYXBwIGRhdGEgZGlyZWN0b3J5IGZvciBwYWNrYWdlOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHBzLm5hbWUgKyAiLCByZXRjb2RlPSIgKyByZXRDb2RlKTsKQEAgLTE3MTgsNiArMTcyOSw3IEBACiAgICAgCiAgICAgc3RhdGljIGJvb2xlYW4gY29tcGFyZVBlcm1pc3Npb25JbmZvcyhQZXJtaXNzaW9uSW5mbyBwaTEsIFBlcm1pc3Npb25JbmZvIHBpMikgewogICAgICAgICBpZiAocGkxLmljb24gIT0gcGkyLmljb24pIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHBpMS5sb2dvICE9IHBpMi5sb2dvKSByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChwaTEucHJvdGVjdGlvbkxldmVsICE9IHBpMi5wcm90ZWN0aW9uTGV2ZWwpIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFjb21wYXJlU3RyaW5ncyhwaTEubmFtZSwgcGkyLm5hbWUpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghY29tcGFyZVN0cmluZ3MocGkxLm5vbkxvY2FsaXplZExhYmVsLCBwaTIubm9uTG9jYWxpemVkTGFiZWwpKSByZXR1cm4gZmFsc2U7CkBAIC0yMzYzLDcgKzIzNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHAuYXBwbGljYXRpb25JbmZvLmZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX1BFUlNJU1RFTlQpICE9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICYmICghbVNhZmVNb2RlIHx8IChwLmFwcGxpY2F0aW9uSW5mby5mbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQXBwbGljYXRpb25JbmZvLkZMQUdfU1lTVEVNKSAhPSAwKSkgewotICAgICAgICAgICAgICAgICAgICBmaW5hbExpc3QuYWRkKHAuYXBwbGljYXRpb25JbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWxMaXN0LmFkZChQYWNrYWdlUGFyc2VyLmdlbmVyYXRlQXBwbGljYXRpb25JbmZvKHAsIGZsYWdzKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNzQzLDYgKzI3NTUsMTEgQEAKIAogICAgICAgICByZXR1cm4gcGVyZm9ybWVkID8gREVYX09QVF9QRVJGT1JNRUQgOiBERVhfT1BUX1NLSVBQRUQ7CiAgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtRm9yUGFja2FnZShQYWNrYWdlUGFyc2VyLlBhY2thZ2UgcGtnKSB7CisgICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5pc0VuY3J5cHRlZEZpbGVzeXN0ZW1FbmFibGVkKCkgJiYKKyAgICAgICAgICAgICAgICAoKHBrZy5hcHBsaWNhdGlvbkluZm8uZmxhZ3MgJiBBcHBsaWNhdGlvbkluZm8uRkxBR19ORVZFUl9FTkNSWVBUKSA9PSAwKTsKKyAgICB9CiAgICAgCiAgICAgcHJpdmF0ZSBib29sZWFuIHZlcmlmeVBhY2thZ2VVcGRhdGUoUGFja2FnZVNldHRpbmcgb2xkUGtnLCBQYWNrYWdlUGFyc2VyLlBhY2thZ2UgbmV3UGtnKSB7CiAgICAgICAgIGlmICgob2xkUGtnLnBrZ0ZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX1NZU1RFTSkgPT0gMCkgewpAQCAtMjc2MCw3ICsyNzc3LDE0IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSBGaWxlIGdldERhdGFQYXRoRm9yUGFja2FnZShQYWNrYWdlUGFyc2VyLlBhY2thZ2UgcGtnKSB7Ci0gICAgICAgIHJldHVybiBuZXcgRmlsZShtQXBwRGF0YURpciwgcGtnLnBhY2thZ2VOYW1lKTsKKyAgICAgICAgYm9vbGVhbiB1c2VFbmNyeXB0ZWRGU0RpciA9IHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW1Gb3JQYWNrYWdlKHBrZyk7CisgICAgICAgIEZpbGUgZGF0YVBhdGg7CisgICAgICAgIGlmICh1c2VFbmNyeXB0ZWRGU0RpcikgeworICAgICAgICAgICAgZGF0YVBhdGggPSBuZXcgRmlsZShtU2VjdXJlQXBwRGF0YURpciwgcGtnLnBhY2thZ2VOYW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRhdGFQYXRoID0gbmV3IEZpbGUobUFwcERhdGFEaXIsIHBrZy5wYWNrYWdlTmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRhdGFQYXRoOwogICAgIH0KICAgICAKICAgICBwcml2YXRlIFBhY2thZ2VQYXJzZXIuUGFja2FnZSBzY2FuUGFja2FnZUxJKFBhY2thZ2VQYXJzZXIuUGFja2FnZSBwa2csCkBAIC0zMTExLDYgKzMxMzUsNyBAQAogICAgICAgICAgICAgcGtnLmFwcGxpY2F0aW9uSW5mby5kYXRhRGlyID0gZGF0YVBhdGguZ2V0UGF0aCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG5vcm1hbCBwYWNrYWdlLCBuZWVkIHRvIG1ha2UgaXRzIGRhdGEgZGlyZWN0b3J5LgorICAgICAgICAgICAgYm9vbGVhbiB1c2VFbmNyeXB0ZWRGU0RpciA9IHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW1Gb3JQYWNrYWdlKHBrZyk7CiAgICAgICAgICAgICBkYXRhUGF0aCA9IGdldERhdGFQYXRoRm9yUGFja2FnZShwa2cpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBib29sZWFuIHVpZEVycm9yID0gZmFsc2U7CkBAIC0zMTI3LDcgKzMxNTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHN5c3RlbSBhcHAsIHdlIGNhbiBhdCBsZWFzdCBkZWxldGUgaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50IGRhdGEgc28gdGhlIGFwcGxpY2F0aW9uIHdpbGwgc3RpbGwgd29yay4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtSW5zdGFsbGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gbUluc3RhbGxlci5yZW1vdmUocGtnTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IG1JbnN0YWxsZXIucmVtb3ZlKHBrZ05hbWUsIHVzZUVuY3J5cHRlZEZTRGlyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT2xkIGRhdGEgZ29uZSEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1zZyA9ICJTeXN0ZW0gcGFja2FnZSAiICsgcGtnLnBhY2thZ2VOYW1lCkBAIC0zMTM4LDcgKzMxNjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyZWQgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCBub3cgcmUtaW5zdGFsbCB0aGUgYXBwLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBtSW5zdGFsbGVyLmluc3RhbGwocGtnTmFtZSwgcGtnLmFwcGxpY2F0aW9uSW5mby51aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IG1JbnN0YWxsZXIuaW5zdGFsbChwa2dOYW1lLCB1c2VFbmNyeXB0ZWRGU0RpciwgcGtnLmFwcGxpY2F0aW9uSW5mby51aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnLmFwcGxpY2F0aW9uSW5mby51aWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY2sgc2hvdWxkIG5vdCBoYXBwZW4hCkBAIC0zMTc4LDcgKzMyMDMsNyBAQAogICAgICAgICAgICAgICAgICAgICBMb2cudihUQUcsICJXYW50IHRoaXMgZGF0YSBkaXI6ICIgKyBkYXRhUGF0aCk7CiAgICAgICAgICAgICAgICAgLy9pbnZva2UgaW5zdGFsbGVyIHRvIGRvIHRoZSBhY3R1YWwgaW5zdGFsbGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKG1JbnN0YWxsZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gbUluc3RhbGxlci5pbnN0YWxsKHBrZ05hbWUsIHBrZy5hcHBsaWNhdGlvbkluZm8udWlkLAorICAgICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gbUluc3RhbGxlci5pbnN0YWxsKHBrZ05hbWUsIHVzZUVuY3J5cHRlZEZTRGlyLCBwa2cuYXBwbGljYXRpb25JbmZvLnVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2cuYXBwbGljYXRpb25JbmZvLnVpZCk7CiAgICAgICAgICAgICAgICAgICAgIGlmKHJldCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVycm9yIGZyb20gaW5zdGFsbGVyCkBAIC0zNjIzLDIxICszNjQ4LDE5IEBACiAKICAgICAgICAgICAgIGluc3RhbGxlZE5hdGl2ZUxpYnJhcmllcyA9IHRydWU7CiAKKyAgICAgICAgICAgIC8vIEFsd2F5cyBleHRyYWN0IHRoZSBzaGFyZWQgbGlicmFyeQogICAgICAgICAgICAgU3RyaW5nIHNoYXJlZExpYnJhcnlGaWxlUGF0aCA9IHNoYXJlZExpYnJhcnlEaXIuZ2V0UGF0aCgpICsKICAgICAgICAgICAgICAgICBGaWxlLnNlcGFyYXRvciArIGxpYkZpbGVOYW1lOwogICAgICAgICAgICAgRmlsZSBzaGFyZWRMaWJyYXJ5RmlsZSA9IG5ldyBGaWxlKHNoYXJlZExpYnJhcnlGaWxlUGF0aCk7Ci0gICAgICAgICAgICBpZiAoISBzaGFyZWRMaWJyYXJ5RmlsZS5leGlzdHMoKSB8fAotICAgICAgICAgICAgICAgIHNoYXJlZExpYnJhcnlGaWxlLmxlbmd0aCgpICE9IGVudHJ5LmdldFNpemUoKSB8fAotICAgICAgICAgICAgICAgIHNoYXJlZExpYnJhcnlGaWxlLmxhc3RNb2RpZmllZCgpICE9IGVudHJ5LmdldFRpbWUoKSkgewotICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HRCkgewotICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJDYWNoaW5nIHNoYXJlZCBsaWIgIiArIGVudHJ5LmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtSW5zdGFsbGVyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hhcmVkTGlicmFyeURpci5ta2RpcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYWNoZU5hdGl2ZUJpbmFyeUxJKHBrZywgemlwRmlsZSwgZW50cnksIHNoYXJlZExpYnJhcnlEaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRMaWJyYXJ5RmlsZSk7CisKKyAgICAgICAgICAgIGlmIChDb25maWcuTE9HRCkgeworICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkNhY2hpbmcgc2hhcmVkIGxpYiAiICsgZW50cnkuZ2V0TmFtZSgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtSW5zdGFsbGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzaGFyZWRMaWJyYXJ5RGlyLm1rZGlyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYWNoZU5hdGl2ZUJpbmFyeUxJKHBrZywgemlwRmlsZSwgZW50cnksIHNoYXJlZExpYnJhcnlEaXIsCisgICAgICAgICAgICAgICAgICAgIHNoYXJlZExpYnJhcnlGaWxlKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWhhc05hdGl2ZUxpYnJhcmllcykKICAgICAgICAgICAgIHJldHVybiBQQUNLQUdFX0lOU1RBTExfTkFUSVZFX05PX0xJQlJBUklFUzsKQEAgLTM2NzksMTggKzM3MDIsMTYgQEAKICAgICAgICAgICAgIFN0cmluZyBpbnN0YWxsR2RiU2VydmVyUGF0aCA9IGluc3RhbGxHZGJTZXJ2ZXJEaXIuZ2V0UGF0aCgpICsKICAgICAgICAgICAgICAgICAiLyIgKyBHREJTRVJWRVI7CiAgICAgICAgICAgICBGaWxlIGluc3RhbGxHZGJTZXJ2ZXJGaWxlID0gbmV3IEZpbGUoaW5zdGFsbEdkYlNlcnZlclBhdGgpOwotICAgICAgICAgICAgaWYgKCEgaW5zdGFsbEdkYlNlcnZlckZpbGUuZXhpc3RzKCkgfHwKLSAgICAgICAgICAgICAgICBpbnN0YWxsR2RiU2VydmVyRmlsZS5sZW5ndGgoKSAhPSBlbnRyeS5nZXRTaXplKCkgfHwKLSAgICAgICAgICAgICAgICBpbnN0YWxsR2RiU2VydmVyRmlsZS5sYXN0TW9kaWZpZWQoKSAhPSBlbnRyeS5nZXRUaW1lKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR0QpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiQ2FjaGluZyBnZGJzZXJ2ZXIgIiArIGVudHJ5LmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtSW5zdGFsbGVyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbEdkYlNlcnZlckRpci5ta2RpcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYWNoZU5hdGl2ZUJpbmFyeUxJKHBrZywgemlwRmlsZSwgZW50cnksIGluc3RhbGxHZGJTZXJ2ZXJEaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsR2RiU2VydmVyRmlsZSk7CisKKyAgICAgICAgICAgIGlmIChDb25maWcuTE9HRCkgeworICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkNhY2hpbmcgZ2Ric2VydmVyICIgKyBlbnRyeS5nZXROYW1lKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1JbnN0YWxsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGluc3RhbGxHZGJTZXJ2ZXJEaXIubWtkaXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhY2hlTmF0aXZlQmluYXJ5TEkocGtnLCB6aXBGaWxlLCBlbnRyeSwgaW5zdGFsbEdkYlNlcnZlckRpciwKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbEdkYlNlcnZlckZpbGUpOworCiAgICAgICAgICAgICByZXR1cm4gUEFDS0FHRV9JTlNUQUxMX05BVElWRV9GT1VORF9MSUJSQVJJRVM7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFBBQ0tBR0VfSU5TVEFMTF9OQVRJVkVfTk9fTElCUkFSSUVTOwpAQCAtMzcwNCw2ICszNzI1LDE2IEBACiAgICAgLy8gb25lIGlmIHJvLnByb2R1Y3QuY3B1LmFiaTIgaXMgZGVmaW5lZC4KICAgICAvLwogICAgIHByaXZhdGUgaW50IGNhY2hlUGFja2FnZVNoYXJlZExpYnNMSShQYWNrYWdlUGFyc2VyLlBhY2thZ2UgcGtnLCBGaWxlIHNjYW5GaWxlKSB7CisgICAgICAgIC8vIFJlbW92ZSBhbGwgbmF0aXZlIGJpbmFyaWVzIGZyb20gYSBkaXJlY3RvcnkuIFRoaXMgaXMgdXNlZCB3aGVuIHVwZ3JhZGluZworICAgICAgICAvLyBhIHBhY2thZ2U6IGluIGNhc2UgdGhlIG5ldyAuYXBrIGRvZXNuJ3QgY29udGFpbiBhIG5hdGl2ZSBiaW5hcnkgdGhhdCB3YXMKKyAgICAgICAgLy8gaW4gdGhlIG9sZCBvbmUgKGFuZCB0aHVzIGluc3RhbGxlZCksIHdlIG5lZWQgdG8gcmVtb3ZlIGl0IGZyb20KKyAgICAgICAgLy8gL2RhdGEvZGF0YS88YXBwbmFtZT4vbGliCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZSBzaW1wbGVzdCB3YXkgdG8gZG8gdGhhdCBpcyB0byByZW1vdmUgYWxsIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LAorICAgICAgICAvLyBzaW5jZSBpdCBpcyBvd25lZCBieSAic3lzdGVtIiwgYXBwbGljYXRpb25zIGFyZSBub3Qgc3VwcG9zZWQgdG8gd3JpdGUKKyAgICAgICAgLy8gYW55dGhpbmcgdGhlcmUuCisgICAgICAgIHJlbW92ZU5hdGl2ZUJpbmFyaWVzTEkocGtnKTsKKwogICAgICAgICBTdHJpbmcgY3B1QWJpID0gQnVpbGQuQ1BVX0FCSTsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGludCByZXN1bHQgPSBjYWNoZVBhY2thZ2VTaGFyZWRMaWJzRm9yQWJpTEkocGtnLCBzY2FuRmlsZSwgY3B1QWJpKTsKQEAgLTYyMDksOCArNjI0MCw5IEBACiAgICAgICAgICAgICBkZWxldGVkUHMgPSBtU2V0dGluZ3MubVBhY2thZ2VzLmdldChwYWNrYWdlTmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKChmbGFncyZQYWNrYWdlTWFuYWdlci5ET05UX0RFTEVURV9EQVRBKSA9PSAwKSB7CisgICAgICAgICAgICBib29sZWFuIHVzZUVuY3J5cHRlZEZTRGlyID0gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbUZvclBhY2thZ2UocCk7CiAgICAgICAgICAgICBpZiAobUluc3RhbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLnJlbW92ZShwYWNrYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLnJlbW92ZShwYWNrYWdlTmFtZSwgdXNlRW5jcnlwdGVkRlNEaXIpOwogICAgICAgICAgICAgICAgIGlmIChyZXRDb2RlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQ291bGRuJ3QgcmVtb3ZlIGFwcCBkYXRhIG9yIGNhY2hlIGRpcmVjdG9yeSBmb3IgcGFja2FnZTogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcGFja2FnZU5hbWUgKyAiLCByZXRjb2RlPSIgKyByZXRDb2RlKTsKQEAgLTY0NTEsNiArNjQ4Myw3IEBACiAgICAgICAgICAgICAgICAgcCA9IHBzLnBrZzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBib29sZWFuIHVzZUVuY3J5cHRlZEZTRGlyID0gZmFsc2U7CiAKICAgICAgICAgaWYoIWRhdGFPbmx5KSB7CiAgICAgICAgICAgICAvL25lZWQgdG8gY2hlY2sgdGhpcyBvbmx5IGZvciBmdWxseSBpbnN0YWxsZWQgYXBwbGljYXRpb25zCkBAIC02NDYzLDkgKzY0OTYsMTAgQEAKICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiUGFja2FnZSAiICsgcGFja2FnZU5hbWUgKyAiIGhhcyBubyBhcHBsaWNhdGlvbkluZm8uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgdXNlRW5jcnlwdGVkRlNEaXIgPSB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtRm9yUGFja2FnZShwKTsKICAgICAgICAgfQogICAgICAgICBpZiAobUluc3RhbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpbnQgcmV0Q29kZSA9IG1JbnN0YWxsZXIuY2xlYXJVc2VyRGF0YShwYWNrYWdlTmFtZSk7CisgICAgICAgICAgICBpbnQgcmV0Q29kZSA9IG1JbnN0YWxsZXIuY2xlYXJVc2VyRGF0YShwYWNrYWdlTmFtZSwgdXNlRW5jcnlwdGVkRlNEaXIpOwogICAgICAgICAgICAgaWYgKHJldENvZGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkNvdWxkbid0IHJlbW92ZSBjYWNoZSBmaWxlcyBmb3IgcGFja2FnZTogIgogICAgICAgICAgICAgICAgICAgICAgICAgKyBwYWNrYWdlTmFtZSk7CkBAIC02NTE2LDggKzY1NTAsOSBAQAogICAgICAgICAgICAgU2xvZy53KFRBRywgIlBhY2thZ2UgIiArIHBhY2thZ2VOYW1lICsgIiBoYXMgbm8gYXBwbGljYXRpb25JbmZvLiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIGJvb2xlYW4gdXNlRW5jcnlwdGVkRlNEaXIgPSB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtRm9yUGFja2FnZShwKTsKICAgICAgICAgaWYgKG1JbnN0YWxsZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLmRlbGV0ZUNhY2hlRmlsZXMocGFja2FnZU5hbWUpOworICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLmRlbGV0ZUNhY2hlRmlsZXMocGFja2FnZU5hbWUsIHVzZUVuY3J5cHRlZEZTRGlyKTsKICAgICAgICAgICAgIGlmIChyZXRDb2RlIDwgMCkgewogICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJDb3VsZG4ndCByZW1vdmUgY2FjaGUgZmlsZXMgZm9yIHBhY2thZ2U6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcGFja2FnZU5hbWUpOwpAQCAtNjU3OSw5ICs2NjE0LDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdWJsaWNTcmNEaXIgPSBpc0ZvcndhcmRMb2NrZWQocCkgPyBhcHBsaWNhdGlvbkluZm8ucHVibGljU291cmNlRGlyIDogbnVsbDsKICAgICAgICAgfQorICAgICAgICBib29sZWFuIHVzZUVuY3J5cHRlZEZTRGlyID0gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbUZvclBhY2thZ2UocCk7CiAgICAgICAgIGlmIChtSW5zdGFsbGVyICE9IG51bGwpIHsKICAgICAgICAgICAgIGludCByZXMgPSBtSW5zdGFsbGVyLmdldFNpemVJbmZvKHBhY2thZ2VOYW1lLCBwLm1QYXRoLAotICAgICAgICAgICAgICAgICAgICBwdWJsaWNTcmNEaXIsIHBTdGF0cyk7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpY1NyY0RpciwgcFN0YXRzLCB1c2VFbmNyeXB0ZWRGU0Rpcik7CiAgICAgICAgICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC03MDg4LDYgKzcxMjQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgICAgc3VwcG9ydHNTY3JlZW5zPVsiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZmlyc3QgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcy5wa2cuYXBwbGljYXRpb25JbmZvLmZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfU01BTExfU0NSRUVOUykgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3QpIHB3LnByaW50KCIsICIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoInNtYWxsIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBzLnBrZy5hcHBsaWNhdGlvbkluZm8uZmxhZ3MgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19OT1JNQUxfU0NSRUVOUykgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3QpIHB3LnByaW50KCIsICIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CkBAIC03MTAwLDEwICs3MTQyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoImxhcmdlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBzLnBrZy5hcHBsaWNhdGlvbkluZm8uZmxhZ3MgJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19TTUFMTF9TQ1JFRU5TKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX1hMQVJHRV9TQ1JFRU5TKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkgcHcucHJpbnQoIiwgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgic21hbGwiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgieGxhcmdlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBzLnBrZy5hcHBsaWNhdGlvbkluZm8uZmxhZ3MgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8uRkxBR19SRVNJWkVBQkxFX0ZPUl9TQ1JFRU5TKSAhPSAwKSB7CkBAIC03NjI3LDcgKzc2NjksOCBAQAogICAgICAgICAgICAgdGhpcy5wa2dGbGFncyA9IHBrZ0ZsYWdzICYgKAogICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8uRkxBR19TWVNURU0gfAogICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8uRkxBR19GT1JXQVJEX0xPQ0sgfAotICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8uRkxBR19FWFRFUk5BTF9TVE9SQUdFKTsKKyAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvLkZMQUdfRVhURVJOQUxfU1RPUkFHRSB8CisgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX05FVkVSX0VOQ1JZUFQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03ODk0LDExICs3OTM3LDE3IEBACiAgICAgICAgICAgICBGaWxlIGRhdGFEaXIgPSBFbnZpcm9ubWVudC5nZXREYXRhRGlyZWN0b3J5KCk7CiAgICAgICAgICAgICBGaWxlIHN5c3RlbURpciA9IG5ldyBGaWxlKGRhdGFEaXIsICJzeXN0ZW0iKTsKICAgICAgICAgICAgIC8vIFRPRE8ob2FtKTogVGhpcyBzZWN1cmUgZGlyIGNyZWF0aW9uIG5lZWRzIHRvIGJlIG1vdmVkIHNvbWV3aGVyZSBlbHNlIChsYXRlcikKKyAgICAgICAgICAgIEZpbGUgc3lzdGVtU2VjdXJlRGlyID0gbmV3IEZpbGUoZGF0YURpciwgInNlY3VyZS9zeXN0ZW0iKTsKICAgICAgICAgICAgIHN5c3RlbURpci5ta2RpcnMoKTsKKyAgICAgICAgICAgIHN5c3RlbVNlY3VyZURpci5ta2RpcnMoKTsKICAgICAgICAgICAgIEZpbGVVdGlscy5zZXRQZXJtaXNzaW9ucyhzeXN0ZW1EaXIudG9TdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgRmlsZVV0aWxzLlNfSVJXWFV8RmlsZVV0aWxzLlNfSVJXWEcKICAgICAgICAgICAgICAgICAgICAgfEZpbGVVdGlscy5TX0lST1RIfEZpbGVVdGlscy5TX0lYT1RILAogICAgICAgICAgICAgICAgICAgICAtMSwgLTEpOworICAgICAgICAgICAgRmlsZVV0aWxzLnNldFBlcm1pc3Npb25zKHN5c3RlbVNlY3VyZURpci50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICAgICBGaWxlVXRpbHMuU19JUldYVXxGaWxlVXRpbHMuU19JUldYRworICAgICAgICAgICAgICAgICAgICB8RmlsZVV0aWxzLlNfSVJPVEh8RmlsZVV0aWxzLlNfSVhPVEgsCisgICAgICAgICAgICAgICAgICAgIC0xLCAtMSk7CiAgICAgICAgICAgICBtU2V0dGluZ3NGaWxlbmFtZSA9IG5ldyBGaWxlKHN5c3RlbURpciwgInBhY2thZ2VzLnhtbCIpOwogICAgICAgICAgICAgbUJhY2t1cFNldHRpbmdzRmlsZW5hbWUgPSBuZXcgRmlsZShzeXN0ZW1EaXIsICJwYWNrYWdlcy1iYWNrdXAueG1sIik7CiAgICAgICAgICAgICBtUGFja2FnZUxpc3RGaWxlbmFtZSA9IG5ldyBGaWxlKHN5c3RlbURpciwgInBhY2thZ2VzLmxpc3QiKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9TdGF0dXNCYXJNYW5hZ2VyU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNzc0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9TdGF0dXNCYXJNYW5hZ2VyU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsNDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXI7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50OworaW1wb3J0IGFuZHJvaWQuYXBwLlN0YXR1c0Jhck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CitpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm9zLkJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5JU3RhdHVzQmFyOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5JU3RhdHVzQmFyU2VydmljZTsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbkxpc3Q7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhck5vdGlmaWNhdGlvbjsKKworaW1wb3J0IGphdmEuaW8uRmlsZURlc2NyaXB0b3I7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKworLyoqCisgKiBBIG5vdGUgb24gbG9ja2luZzogIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBjYWxscyBvbnRvIG1CYXIgYXJlIG9uZXdheSBvcgorICogaWYgdGhleSBhcmUgbG9jYWwsIHRoYXQgdGhleSBqdXN0IGVucXVldWUgbWVzc2FnZXMgdG8gbm90IGRlYWRsb2NrLgorICovCitwdWJsaWMgY2xhc3MgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UgZXh0ZW5kcyBJU3RhdHVzQmFyU2VydmljZS5TdHViCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UiOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFNQRVcgPSB0cnVlOworCisgICAgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKKyAgICBIYW5kbGVyIG1IYW5kbGVyID0gbmV3IEhhbmRsZXIoKTsKKyAgICBOb3RpZmljYXRpb25DYWxsYmFja3MgbU5vdGlmaWNhdGlvbkNhbGxiYWNrczsKKyAgICB2b2xhdGlsZSBJU3RhdHVzQmFyIG1CYXI7CisgICAgU3RhdHVzQmFySWNvbkxpc3QgbUljb25zID0gbmV3IFN0YXR1c0Jhckljb25MaXN0KCk7CisgICAgSGFzaE1hcDxJQmluZGVyLFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gbU5vdGlmaWNhdGlvbnMKKyAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8SUJpbmRlcixTdGF0dXNCYXJOb3RpZmljYXRpb24+KCk7CisKKyAgICAvLyBmb3IgZGlzYWJsaW5nIHRoZSBzdGF0dXMgYmFyCisgICAgQXJyYXlMaXN0PERpc2FibGVSZWNvcmQ+IG1EaXNhYmxlUmVjb3JkcyA9IG5ldyBBcnJheUxpc3Q8RGlzYWJsZVJlY29yZD4oKTsKKyAgICBpbnQgbURpc2FibGVkID0gMDsKKworICAgIHByaXZhdGUgY2xhc3MgRGlzYWJsZVJlY29yZCBpbXBsZW1lbnRzIElCaW5kZXIuRGVhdGhSZWNpcGllbnQgeworICAgICAgICBTdHJpbmcgcGtnOworICAgICAgICBpbnQgd2hhdDsKKyAgICAgICAgSUJpbmRlciB0b2tlbjsKKworICAgICAgICBwdWJsaWMgdm9pZCBiaW5kZXJEaWVkKCkgeworICAgICAgICAgICAgU2xvZy5pKFRBRywgImJpbmRlciBkaWVkIGZvciBwa2c9IiArIHBrZyk7CisgICAgICAgICAgICBkaXNhYmxlKDAsIHRva2VuLCBwa2cpOworICAgICAgICAgICAgdG9rZW4udW5saW5rVG9EZWF0aCh0aGlzLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnRlcmZhY2UgTm90aWZpY2F0aW9uQ2FsbGJhY2tzIHsKKyAgICAgICAgdm9pZCBvblNldERpc2FibGVkKGludCBzdGF0dXMpOworICAgICAgICB2b2lkIG9uQ2xlYXJBbGwoKTsKKyAgICAgICAgdm9pZCBvbk5vdGlmaWNhdGlvbkNsaWNrKFN0cmluZyBwa2csIFN0cmluZyB0YWcsIGludCBpZCk7CisgICAgICAgIHZvaWQgb25QYW5lbFJldmVhbGVkKCk7CisgICAgICAgIHZvaWQgb25Ob3RpZmljYXRpb25FcnJvcihTdHJpbmcgcGtnLCBTdHJpbmcgdGFnLCBpbnQgaWQsCisgICAgICAgICAgICAgICAgaW50IHVpZCwgaW50IGluaXRpYWxQaWQsIFN0cmluZyBtZXNzYWdlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgdGhlIHNlcnZpY2UsIGFkZCB0aGUgc3RhdHVzIGJhciB2aWV3IHRvIHRoZSB3aW5kb3cgbWFuYWdlcgorICAgICAqLworICAgIHB1YmxpYyBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZShDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworCisgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMgPSBjb250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICBtSWNvbnMuZGVmaW5lU2xvdHMocmVzLmdldFN0cmluZ0FycmF5KGNvbS5hbmRyb2lkLmludGVybmFsLlIuYXJyYXkuY29uZmlnX3N0YXR1c0Jhckljb25zKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2tzKE5vdGlmaWNhdGlvbkNhbGxiYWNrcyBsaXN0ZW5lcikgeworICAgICAgICBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzID0gbGlzdGVuZXI7CisgICAgfQorCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDb25zdHJ1Y3RpbmcgdGhlIHZpZXcKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgcHVibGljIHZvaWQgc3lzdGVtUmVhZHkoKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc3lzdGVtUmVhZHkyKCkgeworICAgICAgICBDb21wb25lbnROYW1lIGNuID0gQ29tcG9uZW50TmFtZS51bmZsYXR0ZW5Gcm9tU3RyaW5nKAorICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldFN0cmluZyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5jb25maWdfc3RhdHVzQmFyQ29tcG9uZW50KSk7CisgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7CisgICAgICAgIGludGVudC5zZXRDb21wb25lbnQoY24pOworICAgICAgICBTbG9nLmkoVEFHLCAiU3RhcnRpbmcgc2VydmljZTogIiArIGNuKTsKKyAgICAgICAgbUNvbnRleHQuc3RhcnRTZXJ2aWNlKGludGVudCk7CisgICAgfQorCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBGcm9tIElTdGF0dXNCYXJTZXJ2aWNlCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwdWJsaWMgdm9pZCBleHBhbmQoKSB7CisgICAgICAgIGVuZm9yY2VFeHBhbmRTdGF0dXNCYXIoKTsKKworICAgICAgICBpZiAobUJhciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1CYXIuYW5pbWF0ZUV4cGFuZCgpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjb2xsYXBzZSgpIHsKKyAgICAgICAgZW5mb3JjZUV4cGFuZFN0YXR1c0JhcigpOworCisgICAgICAgIGlmIChtQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbUJhci5hbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZGlzYWJsZShpbnQgd2hhdCwgSUJpbmRlciB0b2tlbiwgU3RyaW5nIHBrZykgeworICAgICAgICBlbmZvcmNlU3RhdHVzQmFyKCk7CisKKyAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGUgdGhlIGNhbGxiYWNrIGFuZCB0aGUgY2FsbCB0byBtQmFyIGdldCBkb25lCisgICAgICAgIC8vIGluIHRoZSBzYW1lIG9yZGVyIHdoZW4gbXVsdGlwbGUgdGhyZWFkcyBhcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIHNvIHRoZXkgYXJlIHBhaXJlZCBjb3JyZWN0bHkuICBUaGUgbWVzc2FnZXMgb24gdGhlIGhhbmRsZXIgd2lsbCBiZQorICAgICAgICAvLyBoYW5kbGVkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgZW5xdWV1ZWQsIGJ1dCB3aWxsIGJlIG91dHNpZGUgdGhlIGxvY2suCisgICAgICAgIHN5bmNocm9uaXplZCAobURpc2FibGVSZWNvcmRzKSB7CisgICAgICAgICAgICBtYW5hZ2VEaXNhYmxlTGlzdExvY2tlZCh3aGF0LCB0b2tlbiwgcGtnKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBuZXQgPSBnYXRoZXJEaXNhYmxlQWN0aW9uc0xvY2tlZCgpOworICAgICAgICAgICAgU2xvZy5kKFRBRywgImRpc2FibGUuLi4gbmV0PTB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobmV0KSk7CisgICAgICAgICAgICBpZiAobmV0ICE9IG1EaXNhYmxlZCkgeworICAgICAgICAgICAgICAgIG1EaXNhYmxlZCA9IG5ldDsKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzLm9uU2V0RGlzYWJsZWQobmV0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgaWYgKG1CYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUJhci5kaXNhYmxlKG5ldCk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SWNvbihTdHJpbmcgc2xvdCwgU3RyaW5nIGljb25QYWNrYWdlLCBpbnQgaWNvbklkLCBpbnQgaWNvbkxldmVsKSB7CisgICAgICAgIGVuZm9yY2VTdGF0dXNCYXIoKTsKKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1JY29ucykgeworICAgICAgICAgICAgaW50IGluZGV4ID0gbUljb25zLmdldFNsb3RJbmRleChzbG90KTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oImludmFsaWQgc3RhdHVzIGJhciBpY29uIHNsb3Q6ICIgKyBzbG90KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gbmV3IFN0YXR1c0Jhckljb24oaWNvblBhY2thZ2UsIGljb25JZCwgaWNvbkxldmVsKTsKKyAgICAgICAgICAgIC8vU2xvZy5kKFRBRywgInNldEljb24gc2xvdD0iICsgc2xvdCArICIgaW5kZXg9IiArIGluZGV4ICsgIiBpY29uPSIgKyBpY29uKTsKKyAgICAgICAgICAgIG1JY29ucy5zZXRJY29uKGluZGV4LCBpY29uKTsKKworICAgICAgICAgICAgaWYgKG1CYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1CYXIuc2V0SWNvbihpbmRleCwgaWNvbik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SWNvblZpc2liaWxpdHkoU3RyaW5nIHNsb3QsIGJvb2xlYW4gdmlzaWJsZSkgeworICAgICAgICBlbmZvcmNlU3RhdHVzQmFyKCk7CisKKyAgICAgICAgc3luY2hyb25pemVkIChtSWNvbnMpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IG1JY29ucy5nZXRTbG90SW5kZXgoc2xvdCk7CisgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCJpbnZhbGlkIHN0YXR1cyBiYXIgaWNvbiBzbG90OiAiICsgc2xvdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0YXR1c0Jhckljb24gaWNvbiA9IG1JY29ucy5nZXRJY29uKGluZGV4KTsKKyAgICAgICAgICAgIGlmIChpY29uID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpY29uLnZpc2libGUgIT0gdmlzaWJsZSkgeworICAgICAgICAgICAgICAgIGljb24udmlzaWJsZSA9IHZpc2libGU7CisKKyAgICAgICAgICAgICAgICBpZiAobUJhciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtQmFyLnNldEljb24oaW5kZXgsIGljb24pOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUljb24oU3RyaW5nIHNsb3QpIHsKKyAgICAgICAgZW5mb3JjZVN0YXR1c0JhcigpOworCisgICAgICAgIHN5bmNocm9uaXplZCAobUljb25zKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtSWNvbnMuZ2V0U2xvdEluZGV4KHNsb3QpOworICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiaW52YWxpZCBzdGF0dXMgYmFyIGljb24gc2xvdDogIiArIHNsb3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtSWNvbnMucmVtb3ZlSWNvbihpbmRleCk7CisKKyAgICAgICAgICAgIGlmIChtQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtQmFyLnJlbW92ZUljb24oaW5kZXgpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBlbmZvcmNlU3RhdHVzQmFyKCkgeworICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLlNUQVRVU19CQVIsCisgICAgICAgICAgICAgICAgIlN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGVuZm9yY2VFeHBhbmRTdGF0dXNCYXIoKSB7CisgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uRVhQQU5EX1NUQVRVU19CQVIsCisgICAgICAgICAgICAgICAgIlN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGVuZm9yY2VTdGF0dXNCYXJTZXJ2aWNlKCkgeworICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLlNUQVRVU19CQVJfU0VSVklDRSwKKyAgICAgICAgICAgICAgICAiU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UiKTsKKyAgICB9CisKKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIHN0YXR1cyBiYXIgc2VydmljZS4KKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyU3RhdHVzQmFyKElTdGF0dXNCYXIgYmFyLCBTdGF0dXNCYXJJY29uTGlzdCBpY29uTGlzdCwKKyAgICAgICAgICAgIExpc3Q8SUJpbmRlcj4gbm90aWZpY2F0aW9uS2V5cywgTGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgZW5mb3JjZVN0YXR1c0JhclNlcnZpY2UoKTsKKworICAgICAgICBTbG9nLmkoVEFHLCAicmVnaXN0ZXJTdGF0dXNCYXIgYmFyPSIgKyBiYXIpOworICAgICAgICBtQmFyID0gYmFyOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1JY29ucykgeworICAgICAgICAgICAgaWNvbkxpc3QuY29weUZyb20obUljb25zKTsKKyAgICAgICAgfQorICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25zKSB7CisgICAgICAgICAgICBmb3IgKE1hcC5FbnRyeTxJQmluZGVyLFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gZTogbU5vdGlmaWNhdGlvbnMuZW50cnlTZXQoKSkgeworICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbktleXMuYWRkKGUuZ2V0S2V5KCkpOworICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbnMuYWRkKGUuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3RhdHVzIGJhciBzZXJ2aWNlIHNob3VsZCBjYWxsIHRoaXMgZWFjaCB0aW1lIHRoZSB1c2VyIGJyaW5ncyB0aGUgcGFuZWwgZnJvbQorICAgICAqIGludmlzaWJsZSB0byB2aXNpYmxlIGluIG9yZGVyIHRvIGNsZWFyIHRoZSBub3RpZmljYXRpb24gbGlnaHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgb25QYW5lbFJldmVhbGVkKCkgeworICAgICAgICBlbmZvcmNlU3RhdHVzQmFyU2VydmljZSgpOworCisgICAgICAgIC8vIHRlbGwgdGhlIG5vdGlmaWNhdGlvbiBtYW5hZ2VyIHRvIHR1cm4gb2ZmIHRoZSBsaWdodHMuCisgICAgICAgIG1Ob3RpZmljYXRpb25DYWxsYmFja3Mub25QYW5lbFJldmVhbGVkKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25Ob3RpZmljYXRpb25DbGljayhTdHJpbmcgcGtnLCBTdHJpbmcgdGFnLCBpbnQgaWQpIHsKKyAgICAgICAgZW5mb3JjZVN0YXR1c0JhclNlcnZpY2UoKTsKKworICAgICAgICBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzLm9uTm90aWZpY2F0aW9uQ2xpY2socGtnLCB0YWcsIGlkKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvbk5vdGlmaWNhdGlvbkVycm9yKFN0cmluZyBwa2csIFN0cmluZyB0YWcsIGludCBpZCwKKyAgICAgICAgICAgIGludCB1aWQsIGludCBpbml0aWFsUGlkLCBTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBlbmZvcmNlU3RhdHVzQmFyU2VydmljZSgpOworCisgICAgICAgIC8vIFdBUk5JTkc6IHRoaXMgd2lsbCBjYWxsIGJhY2sgaW50byB1cyB0byBkbyB0aGUgcmVtb3ZlLiAgRG9uJ3QgaG9sZCBhbnkgbG9ja3MuCisgICAgICAgIG1Ob3RpZmljYXRpb25DYWxsYmFja3Mub25Ob3RpZmljYXRpb25FcnJvcihwa2csIHRhZywgaWQsIHVpZCwgaW5pdGlhbFBpZCwgbWVzc2FnZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25DbGVhckFsbE5vdGlmaWNhdGlvbnMoKSB7CisgICAgICAgIGVuZm9yY2VTdGF0dXNCYXJTZXJ2aWNlKCk7CisKKyAgICAgICAgbU5vdGlmaWNhdGlvbkNhbGxiYWNrcy5vbkNsZWFyQWxsKCk7CisgICAgfQorCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDYWxsYmFja3MgZm9yIE5vdGlmaWNhdGlvbk1hbmFnZXJTZXJ2aWNlLgorICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcHVibGljIElCaW5kZXIgYWRkTm90aWZpY2F0aW9uKFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9ucykgeworICAgICAgICAgICAgSUJpbmRlciBrZXkgPSBuZXcgQmluZGVyKCk7CisgICAgICAgICAgICBtTm90aWZpY2F0aW9ucy5wdXQoa2V5LCBub3RpZmljYXRpb24pOworICAgICAgICAgICAgaWYgKG1CYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1CYXIuYWRkTm90aWZpY2F0aW9uKGtleSwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4ga2V5OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlTm90aWZpY2F0aW9uKElCaW5kZXIga2V5LCBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobU5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgICAgIGlmICghbU5vdGlmaWNhdGlvbnMuY29udGFpbnNLZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInVwZGF0ZU5vdGlmaWNhdGlvbiBrZXkgbm90IGZvdW5kOiAiICsga2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1Ob3RpZmljYXRpb25zLnB1dChrZXksIG5vdGlmaWNhdGlvbik7CisgICAgICAgICAgICBpZiAobUJhciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbUJhci51cGRhdGVOb3RpZmljYXRpb24oa2V5LCBub3RpZmljYXRpb24pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbihJQmluZGVyIGtleSkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25zKSB7CisgICAgICAgICAgICBmaW5hbCBTdGF0dXNCYXJOb3RpZmljYXRpb24gbiA9IG1Ob3RpZmljYXRpb25zLnJlbW92ZShrZXkpOworICAgICAgICAgICAgaWYgKG4gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInJlbW92ZU5vdGlmaWNhdGlvbiBrZXkgbm90IGZvdW5kOiAiICsga2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtQmFyLnJlbW92ZU5vdGlmaWNhdGlvbihrZXkpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLy8gbG9jayBvbiBtRGlzYWJsZVJlY29yZHMKKyAgICB2b2lkIG1hbmFnZURpc2FibGVMaXN0TG9ja2VkKGludCB3aGF0LCBJQmluZGVyIHRva2VuLCBTdHJpbmcgcGtnKSB7CisgICAgICAgIGlmIChTUEVXKSB7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAibWFuYWdlRGlzYWJsZUxpc3Qgd2hhdD0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHdoYXQpICsgIiBwa2c9IiArIHBrZyk7CisgICAgICAgIH0KKyAgICAgICAgLy8gdXBkYXRlIHRoZSBsaXN0CisgICAgICAgIHN5bmNocm9uaXplZCAobURpc2FibGVSZWNvcmRzKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1EaXNhYmxlUmVjb3Jkcy5zaXplKCk7CisgICAgICAgICAgICBEaXNhYmxlUmVjb3JkIHRvayA9IG51bGw7CisgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgICAgIERpc2FibGVSZWNvcmQgdCA9IG1EaXNhYmxlUmVjb3Jkcy5nZXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHQudG9rZW4gPT0gdG9rZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gdDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdoYXQgPT0gMCB8fCAhdG9rZW4uaXNCaW5kZXJBbGl2ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRvayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1EaXNhYmxlUmVjb3Jkcy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgICAgIHRvay50b2tlbi51bmxpbmtUb0RlYXRoKHRvaywgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodG9rID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gbmV3IERpc2FibGVSZWNvcmQoKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLmxpbmtUb0RlYXRoKHRvaywgMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBnaXZlIHVwCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbURpc2FibGVSZWNvcmRzLmFkZCh0b2spOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0b2sud2hhdCA9IHdoYXQ7CisgICAgICAgICAgICAgICAgdG9rLnRva2VuID0gdG9rZW47CisgICAgICAgICAgICAgICAgdG9rLnBrZyA9IHBrZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGxvY2sgb24gbURpc2FibGVSZWNvcmRzCisgICAgaW50IGdhdGhlckRpc2FibGVBY3Rpb25zTG9ja2VkKCkgeworICAgICAgICBmaW5hbCBpbnQgTiA9IG1EaXNhYmxlUmVjb3Jkcy5zaXplKCk7CisgICAgICAgIC8vIGdhdGhlciB0aGUgbmV3IG5ldCBmbGFncworICAgICAgICBpbnQgbmV0ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgbmV0IHw9IG1EaXNhYmxlUmVjb3Jkcy5nZXQoaSkud2hhdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV0OworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQWx3YXlzIGNhbGxlZCBmcm9tIFVJIHRocmVhZAorICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBkdW1wKEZpbGVEZXNjcmlwdG9yIGZkLCBQcmludFdyaXRlciBwdywgU3RyaW5nW10gYXJncykgeworICAgICAgICBpZiAobUNvbnRleHQuY2hlY2tDYWxsaW5nT3JTZWxmUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uRFVNUCkKKyAgICAgICAgICAgICAgICAhPSBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQpIHsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIlBlcm1pc3Npb24gRGVuaWFsOiBjYW4ndCBkdW1wIFN0YXR1c0JhciBmcm9tIGZyb20gcGlkPSIKKyAgICAgICAgICAgICAgICAgICAgKyBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpCisgICAgICAgICAgICAgICAgICAgICsgIiwgdWlkPSIgKyBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN5bmNocm9uaXplZCAobUljb25zKSB7CisgICAgICAgICAgICBtSWNvbnMuZHVtcChwdyk7CisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25zKSB7CisgICAgICAgICAgICBpbnQgaT0wOworICAgICAgICAgICAgcHcucHJpbnRsbigiTm90aWZpY2F0aW9uIGxpc3Q6Iik7CisgICAgICAgICAgICBmb3IgKE1hcC5FbnRyeTxJQmluZGVyLFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gZTogbU5vdGlmaWNhdGlvbnMuZW50cnlTZXQoKSkgeworICAgICAgICAgICAgICAgIHB3LnByaW50ZigiICAlMmQ6ICVzXG4iLCBpLCBlLmdldFZhbHVlKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3luY2hyb25pemVkIChtRGlzYWJsZVJlY29yZHMpIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBOID0gbURpc2FibGVSZWNvcmRzLnNpemUoKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbURpc2FibGVSZWNvcmRzLnNpemU9IiArIE4KKyAgICAgICAgICAgICAgICAgICAgKyAiIG1EaXNhYmxlZD0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1EaXNhYmxlZCkpOworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgICAgIERpc2FibGVSZWNvcmQgdG9rID0gbURpc2FibGVSZWNvcmRzLmdldChpKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgICAgWyIgKyBpICsgIl0gd2hhdD0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHRvay53aGF0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgcGtnPSIgKyB0b2sucGtnICsgIiB0b2tlbj0iICsgdG9rLnRva2VuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgQnJvYWRjYXN0UmVjZWl2ZXIgbUJyb2FkY2FzdFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgaWYgKEludGVudC5BQ1RJT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1MuZXF1YWxzKGFjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgfHwgSW50ZW50LkFDVElPTl9TQ1JFRU5fT0ZGLmVxdWFscyhhY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgY29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICBlbHNlIGlmIChUZWxlcGhvbnkuSW50ZW50cy5TUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTi5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZU5ldHdvcmtOYW1lKGludGVudC5nZXRCb29sZWFuRXh0cmEoVGVsZXBob255LkludGVudHMuRVhUUkFfU0hPV19TUE4sIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRTdHJpbmdFeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TUE4pLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldEJvb2xlYW5FeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TSE9XX1BMTU4sIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRTdHJpbmdFeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9QTE1OKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChJbnRlbnQuQUNUSU9OX0NPTkZJR1VSQVRJT05fQ0hBTkdFRC5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZVJlc291cmNlcygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKi8KKyAgICAgICAgfQorICAgIH07CisKK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvU3lzdGVtU2VydmVyLmphdmEKaW5kZXggOWQ1ZDAzNS4uYzAxNjgwZSAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvU3lzdGVtU2VydmVyLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvU3lzdGVtU2VydmVyLmphdmEKQEAgLTE3LDcgKzE3LDYgQEAKIHBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOwogCiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlclNlcnZpY2U7Ci1pbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5TdGF0dXNCYXJTZXJ2aWNlOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLkJpbmRlckludGVybmFsOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlNhbXBsaW5nUHJvZmlsZXJJbnRlZ3JhdGlvbjsKIApAQCAtODEsNyArODAsOCBAQAogICAgICAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5USFJFQURfUFJJT1JJVFlfRk9SRUdST1VORCk7CiAKICAgICAgICAgQmluZGVySW50ZXJuYWwuZGlzYWJsZUJhY2tncm91bmRTY2hlZHVsaW5nKHRydWUpOwotICAgICAgICAKKyAgICAgICAgYW5kcm9pZC5vcy5Qcm9jZXNzLnNldENhblNlbGZCYWNrZ3JvdW5kKGZhbHNlKTsKKwogICAgICAgICBTdHJpbmcgZmFjdG9yeVRlc3RTdHIgPSBTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uZmFjdG9yeXRlc3QiKTsKICAgICAgICAgaW50IGZhY3RvcnlUZXN0ID0gIiIuZXF1YWxzKGZhY3RvcnlUZXN0U3RyKSA/IFN5c3RlbVNlcnZlci5GQUNUT1JZX1RFU1RfT0ZGCiAgICAgICAgICAgICAgICAgOiBJbnRlZ2VyLnBhcnNlSW50KGZhY3RvcnlUZXN0U3RyKTsKQEAgLTk3LDYgKzk3LDcgQEAKICAgICAgICAgQmx1ZXRvb3RoQTJkcFNlcnZpY2UgYmx1ZXRvb3RoQTJkcCA9IG51bGw7CiAgICAgICAgIEhlYWRzZXRPYnNlcnZlciBoZWFkc2V0ID0gbnVsbDsKICAgICAgICAgRG9ja09ic2VydmVyIGRvY2sgPSBudWxsOworICAgICAgICBVc2JPYnNlcnZlciB1c2IgPSBudWxsOwogICAgICAgICBVaU1vZGVNYW5hZ2VyU2VydmljZSB1aU1vZGUgPSBudWxsOwogICAgICAgICBSZWNvZ25pdGlvbk1hbmFnZXJTZXJ2aWNlIHJlY29nbml0aW9uID0gbnVsbDsKICAgICAgICAgVGhyb3R0bGVTZXJ2aWNlIHRocm90dGxlID0gbnVsbDsKQEAgLTIwNiw3ICsyMDcsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgRGV2aWNlUG9saWN5TWFuYWdlclNlcnZpY2UgZGV2aWNlUG9saWN5ID0gbnVsbDsKLSAgICAgICAgU3RhdHVzQmFyU2VydmljZSBzdGF0dXNCYXIgPSBudWxsOworICAgICAgICBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSBzdGF0dXNCYXIgPSBudWxsOwogICAgICAgICBJbnB1dE1ldGhvZE1hbmFnZXJTZXJ2aWNlIGltbSA9IG51bGw7CiAgICAgICAgIEFwcFdpZGdldFNlcnZpY2UgYXBwV2lkZ2V0ID0gbnVsbDsKICAgICAgICAgTm90aWZpY2F0aW9uTWFuYWdlclNlcnZpY2Ugbm90aWZpY2F0aW9uID0gbnVsbDsKQEAgLTIyNCwxMCArMjI1LDEwIEBACiAKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIlN0YXR1cyBCYXIiKTsKLSAgICAgICAgICAgICAgICBzdGF0dXNCYXIgPSBuZXcgU3RhdHVzQmFyU2VydmljZShjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBzdGF0dXNCYXIgPSBuZXcgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgU2VydmljZU1hbmFnZXIuYWRkU2VydmljZShDb250ZXh0LlNUQVRVU19CQVJfU0VSVklDRSwgc3RhdHVzQmFyKTsKICAgICAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSBlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWx1cmUgc3RhcnRpbmcgU3RhdHVzQmFyU2VydmljZSIsIGUpOworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJGYWlsdXJlIHN0YXJ0aW5nIFN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIiwgZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRyeSB7CkBAIC0zNzQsOCArMzc1LDE2IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIlVTQiBPYnNlcnZlciIpOworICAgICAgICAgICAgICAgIC8vIExpc3RlbiBmb3IgVVNCIGNoYW5nZXMKKyAgICAgICAgICAgICAgICB1c2IgPSBuZXcgVXNiT2JzZXJ2ZXIoY29udGV4dCk7CisgICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgeworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJGYWlsdXJlIHN0YXJ0aW5nIFVzYk9ic2VydmVyIiwgZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIlVJIE1vZGUgTWFuYWdlciBTZXJ2aWNlIik7Ci0gICAgICAgICAgICAgICAgLy8gTGlzdGVuIGZvciBkb2NrIHN0YXRpb24gY2hhbmdlcworICAgICAgICAgICAgICAgIC8vIExpc3RlbiBmb3IgVUkgbW9kZSBjaGFuZ2VzCiAgICAgICAgICAgICAgICAgdWlNb2RlID0gbmV3IFVpTW9kZU1hbmFnZXJTZXJ2aWNlKGNvbnRleHQpOwogICAgICAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbHVyZSBzdGFydGluZyBVaU1vZGVNYW5hZ2VyU2VydmljZSIsIGUpOwpAQCAtNDA1LDEyICs0MTQsNiBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuU3RhdHVzQmFyUG9saWN5Lmluc3RhbGxJY29ucyhjb250ZXh0LCBzdGF0dXNCYXIpOwotICAgICAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKLSAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbHVyZSBpbnN0YWxsaW5nIHN0YXR1cyBiYXIgaWNvbnMiLCBlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiRGlza1N0YXRzIFNlcnZpY2UiKTsKICAgICAgICAgICAgICAgICBTZXJ2aWNlTWFuYWdlci5hZGRTZXJ2aWNlKCJkaXNrc3RhdHMiLCBuZXcgRGlza1N0YXRzU2VydmljZShjb250ZXh0KSk7CiAgICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgewpAQCAtNDY0LDkgKzQ2NywxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlc2UgYXJlIG5lZWRlZCB0byBwcm9wYWdhdGUgdG8gdGhlIHJ1bm5hYmxlIGJlbG93LgorICAgICAgICBmaW5hbCBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSBzdGF0dXNCYXJGID0gc3RhdHVzQmFyOwogICAgICAgICBmaW5hbCBCYXR0ZXJ5U2VydmljZSBiYXR0ZXJ5RiA9IGJhdHRlcnk7CiAgICAgICAgIGZpbmFsIENvbm5lY3Rpdml0eVNlcnZpY2UgY29ubmVjdGl2aXR5RiA9IGNvbm5lY3Rpdml0eTsKICAgICAgICAgZmluYWwgRG9ja09ic2VydmVyIGRvY2tGID0gZG9jazsKKyAgICAgICAgZmluYWwgVXNiT2JzZXJ2ZXIgdXNiRiA9IHVzYjsKICAgICAgICAgZmluYWwgVGhyb3R0bGVTZXJ2aWNlIHRocm90dGxlRiA9IHRocm90dGxlOwogICAgICAgICBmaW5hbCBVaU1vZGVNYW5hZ2VyU2VydmljZSB1aU1vZGVGID0gdWlNb2RlOwogICAgICAgICBmaW5hbCBBcHBXaWRnZXRTZXJ2aWNlIGFwcFdpZGdldEYgPSBhcHBXaWRnZXQ7CkBAIC00ODUsOSArNDkwLDExIEBACiAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIk1ha2luZyBzZXJ2aWNlcyByZWFkeSIpOwogCisgICAgICAgICAgICAgICAgaWYgKHN0YXR1c0JhckYgIT0gbnVsbCkgc3RhdHVzQmFyRi5zeXN0ZW1SZWFkeTIoKTsKICAgICAgICAgICAgICAgICBpZiAoYmF0dGVyeUYgIT0gbnVsbCkgYmF0dGVyeUYuc3lzdGVtUmVhZHkoKTsKICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGl2aXR5RiAhPSBudWxsKSBjb25uZWN0aXZpdHlGLnN5c3RlbVJlYWR5KCk7CiAgICAgICAgICAgICAgICAgaWYgKGRvY2tGICE9IG51bGwpIGRvY2tGLnN5c3RlbVJlYWR5KCk7CisgICAgICAgICAgICAgICAgaWYgKHVzYkYgIT0gbnVsbCkgdXNiRi5zeXN0ZW1SZWFkeSgpOwogICAgICAgICAgICAgICAgIGlmICh1aU1vZGVGICE9IG51bGwpIHVpTW9kZUYuc3lzdGVtUmVhZHkoKTsKICAgICAgICAgICAgICAgICBpZiAocmVjb2duaXRpb25GICE9IG51bGwpIHJlY29nbml0aW9uRi5zeXN0ZW1SZWFkeSgpOwogICAgICAgICAgICAgICAgIFdhdGNoZG9nLmdldEluc3RhbmNlKCkuc3RhcnQoKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1VpTW9kZU1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9VaU1vZGVNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IDAxOTI0NWYuLjQzMWNjMzkgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1VpTW9kZU1hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvVWlNb2RlTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtNTY2LDcgKzU2Niw3IEBACiAgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlciA9IChTdGF0dXNCYXJNYW5hZ2VyKSBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RBVFVTX0JBUl9TRVJWSUNFKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZlYXIgbm90OiBTdGF0dXNCYXJTZXJ2aWNlIG1hbmFnZXMgYSBsaXN0IG9mIHJlcXVlc3RzIHRvIGRpc2FibGUKKyAgICAgICAgLy8gRmVhciBub3Q6IFN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIG1hbmFnZXMgYSBsaXN0IG9mIHJlcXVlc3RzIHRvIGRpc2FibGUKICAgICAgICAgLy8gZmVhdHVyZXMgb2YgdGhlIHN0YXR1cyBiYXI7IHRoZXNlIGFyZSBPUmVkIHRvZ2V0aGVyIHRvIGZvcm0gdGhlCiAgICAgICAgIC8vIGFjdGl2ZSBkaXNhYmxlZCBsaXN0LiBTbyBpZiAoZm9yIGV4YW1wbGUpIHRoZSBkZXZpY2UgaXMgbG9ja2VkIGFuZAogICAgICAgICAvLyB0aGUgc3RhdHVzIGJhciBzaG91bGQgYmUgdG90YWxseSBkaXNhYmxlZCwgdGhlIGNhbGxzIGJlbG93IHdpbGwKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1VzYk9ic2VydmVyLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Vc2JPYnNlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwOGZlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Vc2JPYnNlcnZlci5qYXZhCkBAIC0wLDAgKzEsMjA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5oYXJkd2FyZS5Vc2I7CitpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5VRXZlbnRPYnNlcnZlcjsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogPHA+VXNiT2JzZXJ2ZXIgbW9uaXRvcnMgZm9yIGNoYW5nZXMgdG8gVVNCIHN0YXRlLgorICovCitjbGFzcyBVc2JPYnNlcnZlciBleHRlbmRzIFVFdmVudE9ic2VydmVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gVXNiT2JzZXJ2ZXIuY2xhc3MuZ2V0U2ltcGxlTmFtZSgpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gTE9HID0gZmFsc2U7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVNCX0NPTkZJR1VSQVRJT05fTUFUQ0ggPSAiREVWUEFUSD0vZGV2aWNlcy92aXJ0dWFsL3N3aXRjaC91c2JfY29uZmlndXJhdGlvbiI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQl9GVU5DVElPTlNfTUFUQ0ggPSAiREVWUEFUSD0vZGV2aWNlcy92aXJ0dWFsL3VzYl9jb21wb3NpdGUvIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVNCX0NPTkZJR1VSQVRJT05fUEFUSCA9ICIvc3lzL2NsYXNzL3N3aXRjaC91c2JfY29uZmlndXJhdGlvbi9zdGF0ZSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQl9DT01QT1NJVEVfQ0xBU1NfUEFUSCA9ICIvc3lzL2NsYXNzL3VzYl9jb21wb3NpdGUiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19VUERBVEUgPSAwOworCisgICAgcHJpdmF0ZSBpbnQgbVVzYkNvbmZpZyA9IDA7CisgICAgcHJpdmF0ZSBpbnQgbVByZXZpb3VzVXNiQ29uZmlnID0gMDsKKworICAgIC8vIGxpc3RzIG9mIGVuYWJsZWQgYW5kIGRpc2FibGVkIFVTQiBmdW5jdGlvbnMKKyAgICBwcml2YXRlIGZpbmFsIEFycmF5TGlzdDxTdHJpbmc+IG1FbmFibGVkRnVuY3Rpb25zID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3Q8U3RyaW5nPiBtRGlzYWJsZWRGdW5jdGlvbnMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtU3lzdGVtUmVhZHk7CisKKyAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisKKyAgICBwcml2YXRlIFBvd2VyTWFuYWdlclNlcnZpY2UgbVBvd2VyTWFuYWdlcjsKKworICAgIHB1YmxpYyBVc2JPYnNlcnZlcihDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBpbml0KCk7ICAvLyBzZXQgaW5pdGlhbCBzdGF0dXMKKworICAgICAgICBzdGFydE9ic2VydmluZyhVU0JfQ09ORklHVVJBVElPTl9NQVRDSCk7CisgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKFVTQl9GVU5DVElPTlNfTUFUQ0gpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uVUV2ZW50KFVFdmVudE9ic2VydmVyLlVFdmVudCBldmVudCkgeworICAgICAgICBpZiAoTG9nLmlzTG9nZ2FibGUoVEFHLCBMb2cuVkVSQk9TRSkpIHsKKyAgICAgICAgICAgIFNsb2cudihUQUcsICJVU0IgVUVWRU5UOiAiICsgZXZlbnQudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIFN0cmluZyBzd2l0Y2hTdGF0ZSA9IGV2ZW50LmdldCgiU1dJVENIX1NUQVRFIik7CisgICAgICAgICAgICBpZiAoc3dpdGNoU3RhdGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGludCBuZXdDb25maWcgPSBJbnRlZ2VyLnBhcnNlSW50KHN3aXRjaFN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0NvbmZpZyAhPSBtVXNiQ29uZmlnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtUHJldmlvdXNVc2JDb25maWcgPSBtVXNiQ29uZmlnOworICAgICAgICAgICAgICAgICAgICAgICAgbVVzYkNvbmZpZyA9IG5ld0NvbmZpZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgYW4gSW50ZW50IGJyb2FkY2FzdAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1TeXN0ZW1SZWFkeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkNvdWxkIG5vdCBwYXJzZSBzd2l0Y2ggc3RhdGUgZnJvbSBldmVudCAiICsgZXZlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uID0gZXZlbnQuZ2V0KCJGVU5DVElPTiIpOworICAgICAgICAgICAgICAgIFN0cmluZyBlbmFibGVkU3RyID0gZXZlbnQuZ2V0KCJFTkFCTEVEIik7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uICE9IG51bGwgJiYgZW5hYmxlZFN0ciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IHdlIGRvIG5vdCBicm9hZGNhc3QgYSBjaGFuZ2Ugd2hlbiBhIGZ1bmN0aW9uIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGp1c3QgcmVjb3JkIHRoZSBzdGF0ZSBjaGFuZ2UgZm9yIHRoZSBuZXh0IGJyb2FkY2FzdC4KKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBlbmFibGVkID0gIjEiLmVxdWFscyhlbmFibGVkU3RyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbUVuYWJsZWRGdW5jdGlvbnMuY29udGFpbnMoZnVuY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUVuYWJsZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1EaXNhYmxlZEZ1bmN0aW9ucy5yZW1vdmUoZnVuY3Rpb24pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtRGlzYWJsZWRGdW5jdGlvbnMuY29udGFpbnMoZnVuY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURpc2FibGVkRnVuY3Rpb25zLmFkZChmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBtRW5hYmxlZEZ1bmN0aW9ucy5yZW1vdmUoZnVuY3Rpb24pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHByaXZhdGUgZmluYWwgdm9pZCBpbml0KCkgeworICAgICAgICBjaGFyW10gYnVmZmVyID0gbmV3IGNoYXJbMTAyNF07CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEZpbGVSZWFkZXIgZmlsZSA9IG5ldyBGaWxlUmVhZGVyKFVTQl9DT05GSUdVUkFUSU9OX1BBVEgpOworICAgICAgICAgICAgaW50IGxlbiA9IGZpbGUucmVhZChidWZmZXIsIDAsIDEwMjQpOworICAgICAgICAgICAgbVByZXZpb3VzVXNiQ29uZmlnID0gbVVzYkNvbmZpZyA9IEludGVnZXIudmFsdWVPZigobmV3IFN0cmluZyhidWZmZXIsIDAsIGxlbikpLnRyaW0oKSk7CisKKyAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFNsb2cudyhUQUcsICJUaGlzIGtlcm5lbCBkb2VzIG5vdCBoYXZlIFVTQiBjb25maWd1cmF0aW9uIHN3aXRjaCBzdXBwb3J0Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTbG9nLmUoVEFHLCAiIiAsIGUpOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEZpbGVbXSBmaWxlcyA9IG5ldyBGaWxlKFVTQl9DT01QT1NJVEVfQ0xBU1NfUEFUSCkubGlzdEZpbGVzKCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgRmlsZSBmaWxlID0gbmV3IEZpbGUoZmlsZXNbaV0sICJlbmFibGUiKTsKKyAgICAgICAgICAgICAgICBGaWxlUmVhZGVyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKGZpbGUpOworICAgICAgICAgICAgICAgIGludCBsZW4gPSByZWFkZXIucmVhZChidWZmZXIsIDAsIDEwMjQpOworICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IEludGVnZXIudmFsdWVPZigobmV3IFN0cmluZyhidWZmZXIsIDAsIGxlbikpLnRyaW0oKSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IGZpbGVzW2ldLmdldE5hbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBtRW5hYmxlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtRGlzYWJsZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU2xvZy53KFRBRywgIlRoaXMga2VybmVsIGRvZXMgbm90IGhhdmUgVVNCIGNvbXBvc2l0ZSBjbGFzcyBzdXBwb3J0Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTbG9nLmUoVEFHLCAiIiAsIGUpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzeXN0ZW1SZWFkeSgpIHsKKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgICAgIG1TeXN0ZW1SZWFkeSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlKCkgeworICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKE1TR19VUERBVEUpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCkgeworICAgICAgICBwcml2YXRlIHZvaWQgYWRkRW5hYmxlZEZ1bmN0aW9ucyhJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICAvLyBpbmNsdWRlIHN0YXRlIG9mIGFsbCBVU0IgZnVuY3Rpb25zIGluIG91ciBleHRyYXMKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbUVuYWJsZWRGdW5jdGlvbnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEobUVuYWJsZWRGdW5jdGlvbnMuZ2V0KGkpLCBVc2IuVVNCX0ZVTkNUSU9OX0VOQUJMRUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtRGlzYWJsZWRGdW5jdGlvbnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEobURpc2FibGVkRnVuY3Rpb25zLmdldChpKSwgVXNiLlVTQl9GVU5DVElPTl9ESVNBQkxFRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICAgICAgc3dpdGNoIChtc2cud2hhdCkgeworICAgICAgICAgICAgICAgIGNhc2UgTVNHX1VQREFURToKKyAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgY3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNldHRpbmdzLlNlY3VyZS5nZXRJbnQoY3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5ERVZJQ0VfUFJPVklTSU9ORUQsIDApID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiRGV2aWNlIG5vdCBwcm92aXNpb25lZCwgc2tpcHBpbmcgVVNCIGJyb2FkY2FzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbmQgYW4gSW50ZW50IGNvbnRhaW5pbmcgY29ubmVjdGVkL2Rpc2Nvbm5lY3RlZCBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBlbmFibGVkL2Rpc2FibGVkIHN0YXRlIG9mIGFsbCBVU0IgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50OworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB1c2JDb25uZWN0ZWQgPSAobVVzYkNvbmZpZyAhPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2JDb25uZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQgPSBuZXcgSW50ZW50KFVzYi5BQ1RJT05fVVNCX0NPTk5FQ1RFRCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRW5hYmxlZEZ1bmN0aW9ucyhpbnRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQgPSBuZXcgSW50ZW50KFVzYi5BQ1RJT05fVVNCX0RJU0NPTk5FQ1RFRCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zZW5kQnJvYWRjYXN0KGludGVudCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgYSBzdGlja3kgYnJvYWRjYXN0IGZvciBjbGllbnRzIGludGVyZXN0ZWQgaW4gYm90aCBjb25uZWN0IGFuZCBkaXNjb25uZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQgPSBuZXcgSW50ZW50KFVzYi5BQ1RJT05fVVNCX1NUQVRFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19SRUNFSVZFUl9SRVBMQUNFX1BFTkRJTkcpOworICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKFVzYi5VU0JfQ09OTkVDVEVELCB1c2JDb25uZWN0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkRW5hYmxlZEZ1bmN0aW9ucyhpbnRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuc2VuZFN0aWNreUJyb2FkY2FzdChpbnRlbnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dhdGNoZG9nLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XYXRjaGRvZy5qYXZhCmluZGV4IGQ0MTMzZjMuLmE3NDIwOTMgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dhdGNoZG9nLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2F0Y2hkb2cuamF2YQpAQCAtNTcsMjAgKzU3LDEwIEBACiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gUkVDT1JEX0tFUk5FTF9USFJFQURTID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBmaW5hbCBpbnQgTU9OSVRPUiA9IDI3MTg7Ci0gICAgc3RhdGljIGZpbmFsIGludCBHTE9CQUxfUFNTID0gMjcxOTsKIAogICAgIHN0YXRpYyBmaW5hbCBpbnQgVElNRV9UT19SRVNUQVJUID0gREIgPyAxNSoxMDAwIDogNjAqMTAwMDsKICAgICBzdGF0aWMgZmluYWwgaW50IFRJTUVfVE9fV0FJVCA9IFRJTUVfVE9fUkVTVEFSVCAvIDI7CiAKLSAgICBzdGF0aWMgZmluYWwgaW50IE1FTUNIRUNLX0RFRkFVTFRfSU5URVJWQUwgPSBEQiA/IDMwIDogMzAqNjA7IC8vIDMwIG1pbnV0ZXMKLSAgICBzdGF0aWMgZmluYWwgaW50IE1FTUNIRUNLX0RFRkFVTFRfTE9HX1JFQUxUSU1FX0lOVEVSVkFMID0gREIgPyA2MCA6IDIqNjAqNjA7ICAgICAgLy8gMiBob3VycwotICAgIHN0YXRpYyBmaW5hbCBpbnQgTUVNQ0hFQ0tfREVGQVVMVF9TWVNURU1fU09GVF9USFJFU0hPTEQgPSAoREIgPyAxMDoxNikqMTAyNCoxMDI0OyAvLyAxNk1CCi0gICAgc3RhdGljIGZpbmFsIGludCBNRU1DSEVDS19ERUZBVUxUX1NZU1RFTV9IQVJEX1RIUkVTSE9MRCA9IChEQiA/IDE0OjIwKSoxMDI0KjEwMjQ7IC8vIDIwTUIKLSAgICBzdGF0aWMgZmluYWwgaW50IE1FTUNIRUNLX0RFRkFVTFRfUEhPTkVfU09GVF9USFJFU0hPTEQgPSAoREIgPyA0OjgpKjEwMjQqMTAyNDsgICAgLy8gOE1CCi0gICAgc3RhdGljIGZpbmFsIGludCBNRU1DSEVDS19ERUZBVUxUX1BIT05FX0hBUkRfVEhSRVNIT0xEID0gKERCID8gODoxMikqMTAyNCoxMDI0OyAgIC8vIDEyTUIKLQotICAgIHN0YXRpYyBmaW5hbCBpbnQgTUVNQ0hFQ0tfREVGQVVMVF9FWEVDX1NUQVJUX1RJTUUgPSAxKjYwKjYwOyAgICAgICAgICAgLy8gMTowMGFtCi0gICAgc3RhdGljIGZpbmFsIGludCBNRU1DSEVDS19ERUZBVUxUX0VYRUNfRU5EX1RJTUUgPSA1KjYwKjYwOyAgICAgICAgICAgICAvLyA1OjAwYW0KICAgICBzdGF0aWMgZmluYWwgaW50IE1FTUNIRUNLX0RFRkFVTFRfTUlOX1NDUkVFTl9PRkYgPSBEQiA/IDEqNjAgOiA1KjYwOyAgIC8vIDUgbWludXRlcwogICAgIHN0YXRpYyBmaW5hbCBpbnQgTUVNQ0hFQ0tfREVGQVVMVF9NSU5fQUxBUk0gPSBEQiA/IDEqNjAgOiAzKjYwOyAgICAgICAgLy8gMyBtaW51dGVzCiAgICAgc3RhdGljIGZpbmFsIGludCBNRU1DSEVDS19ERUZBVUxUX1JFQ0hFQ0tfSU5URVJWQUwgPSBEQiA/IDEqNjAgOiA1KjYwOyAvLyA1IG1pbnV0ZXMKQEAgLTc5LDE0ICs2OSwxMiBAQAogICAgIHN0YXRpYyBmaW5hbCBpbnQgUkVCT09UX0RFRkFVTFRfU1RBUlRfVElNRSA9IDMqNjAqNjA7ICAgICAgICAgICAgICAgICAgLy8gMzowMGFtCiAgICAgc3RhdGljIGZpbmFsIGludCBSRUJPT1RfREVGQVVMVF9XSU5ET1cgPSA2MCo2MDsgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoaW4gMSBob3VyCiAKLSAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENIRUNLVVBfQUNUSU9OID0gImNvbS5hbmRyb2lkLnNlcnZpY2UuV2F0Y2hkb2cuQ0hFQ0tVUCI7CiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBSRUJPT1RfQUNUSU9OID0gImNvbS5hbmRyb2lkLnNlcnZpY2UuV2F0Y2hkb2cuUkVCT09UIjsKIAogICAgIHN0YXRpYyBXYXRjaGRvZyBzV2F0Y2hkb2c7CiAKICAgICAvKiBUaGlzIGhhbmRsZXIgd2lsbCBiZSB1c2VkIHRvIHBvc3QgbWVzc2FnZSBiYWNrIG9udG8gdGhlIG1haW4gdGhyZWFkICovCiAgICAgZmluYWwgSGFuZGxlciBtSGFuZGxlcjsKLSAgICBmaW5hbCBSdW5uYWJsZSBtR2xvYmFsUHNzQ29sbGVjdGVkOwogICAgIGZpbmFsIEFycmF5TGlzdDxNb25pdG9yPiBtTW9uaXRvcnMgPSBuZXcgQXJyYXlMaXN0PE1vbml0b3I+KCk7CiAgICAgQ29udGVudFJlc29sdmVyIG1SZXNvbHZlcjsKICAgICBCYXR0ZXJ5U2VydmljZSBtQmF0dGVyeTsKQEAgLTk3LDMxICs4NSw5IEBACiAgICAgYm9vbGVhbiBtRm9yY2VLaWxsU3lzdGVtOwogICAgIE1vbml0b3IgbUN1cnJlbnRNb25pdG9yOwogCi0gICAgUHNzUmVxdWVzdG9yIG1QaG9uZVJlcTsKICAgICBpbnQgbVBob25lUGlkOwotICAgIGludCBtUGhvbmVQc3M7Ci0KLSAgICBsb25nIG1MYXN0TWVtQ2hlY2tUaW1lID0gLShNRU1DSEVDS19ERUZBVUxUX0lOVEVSVkFMKjEwMDApOwotICAgIGJvb2xlYW4gbUhhdmVQc3M7Ci0gICAgbG9uZyBtTGFzdE1lbUNoZWNrUmVhbHRpbWUgPSAtKE1FTUNIRUNLX0RFRkFVTFRfTE9HX1JFQUxUSU1FX0lOVEVSVkFMKjEwMDApOwotICAgIGJvb2xlYW4gbUhhdmVHbG9iYWxQc3M7Ci0gICAgZmluYWwgTWVtTW9uaXRvciBtU3lzdGVtTWVtTW9uaXRvciA9IG5ldyBNZW1Nb25pdG9yKCJzeXN0ZW0iLAotICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX1NZU1RFTV9FTkFCTEVELAotICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX1NZU1RFTV9TT0ZUX1RIUkVTSE9MRCwKLSAgICAgICAgICAgIE1FTUNIRUNLX0RFRkFVTFRfU1lTVEVNX1NPRlRfVEhSRVNIT0xELAotICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX1NZU1RFTV9IQVJEX1RIUkVTSE9MRCwKLSAgICAgICAgICAgIE1FTUNIRUNLX0RFRkFVTFRfU1lTVEVNX0hBUkRfVEhSRVNIT0xEKTsKLSAgICBmaW5hbCBNZW1Nb25pdG9yIG1QaG9uZU1lbU1vbml0b3IgPSBuZXcgTWVtTW9uaXRvcigiY29tLmFuZHJvaWQucGhvbmUiLAotICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX1BIT05FX0VOQUJMRUQsCi0gICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuTUVNQ0hFQ0tfUEhPTkVfU09GVF9USFJFU0hPTEQsCi0gICAgICAgICAgICBNRU1DSEVDS19ERUZBVUxUX1BIT05FX1NPRlRfVEhSRVNIT0xELAotICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX1BIT05FX0hBUkRfVEhSRVNIT0xELAotICAgICAgICAgICAgTUVNQ0hFQ0tfREVGQVVMVF9QSE9ORV9IQVJEX1RIUkVTSE9MRCk7CiAKICAgICBmaW5hbCBDYWxlbmRhciBtQ2FsZW5kYXIgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOwotICAgIGxvbmcgbU1lbWNoZWNrTGFzdFRpbWU7Ci0gICAgbG9uZyBtTWVtY2hlY2tFeGVjU3RhcnRUaW1lOwotICAgIGxvbmcgbU1lbWNoZWNrRXhlY0VuZFRpbWU7CiAgICAgaW50IG1NaW5TY3JlZW5PZmYgPSBNRU1DSEVDS19ERUZBVUxUX01JTl9TQ1JFRU5fT0ZGOwogICAgIGludCBtTWluQWxhcm0gPSBNRU1DSEVDS19ERUZBVUxUX01JTl9BTEFSTTsKICAgICBib29sZWFuIG1OZWVkU2NoZWR1bGVkQ2hlY2s7CkBAIC0xNDAsMTI2ICsxMDYsMTMgQEAKICAgICBpbnQgbVJlcVJlY2hlY2tJbnRlcnZhbD0gLTE7ICAvLyA+PSAwIGlmIGEgc3BlY2lmaWMgcmVjaGVjayBpbnRlcnZhbCBoYXMgYmVlbiByZXF1ZXN0ZWQKIAogICAgIC8qKgotICAgICAqIFRoaXMgY2xhc3MgbW9uaXRvcnMgdGhlIG1lbW9yeSBpbiBhIHBhcnRpY3VsYXIgcHJvY2Vzcy4KLSAgICAgKi8KLSAgICBmaW5hbCBjbGFzcyBNZW1Nb25pdG9yIHsKLSAgICAgICAgZmluYWwgU3RyaW5nIG1Qcm9jZXNzTmFtZTsKLSAgICAgICAgZmluYWwgU3RyaW5nIG1FbmFibGVkU2V0dGluZzsKLSAgICAgICAgZmluYWwgU3RyaW5nIG1Tb2Z0U2V0dGluZzsKLSAgICAgICAgZmluYWwgU3RyaW5nIG1IYXJkU2V0dGluZzsKLQotICAgICAgICBpbnQgbVNvZnRUaHJlc2hvbGQ7Ci0gICAgICAgIGludCBtSGFyZFRocmVzaG9sZDsKLSAgICAgICAgYm9vbGVhbiBtRW5hYmxlZDsKLSAgICAgICAgbG9uZyBtTGFzdFBzczsKLQotICAgICAgICBzdGF0aWMgZmluYWwgaW50IFNUQVRFX09LID0gMDsKLSAgICAgICAgc3RhdGljIGZpbmFsIGludCBTVEFURV9TT0ZUID0gMTsKLSAgICAgICAgc3RhdGljIGZpbmFsIGludCBTVEFURV9IQVJEID0gMjsKLSAgICAgICAgaW50IG1TdGF0ZTsKLQotICAgICAgICBNZW1Nb25pdG9yKFN0cmluZyBwcm9jZXNzTmFtZSwgU3RyaW5nIGVuYWJsZWRTZXR0aW5nLAotICAgICAgICAgICAgICAgIFN0cmluZyBzb2Z0U2V0dGluZywgaW50IGRlZlNvZnRUaHJlc2hvbGQsCi0gICAgICAgICAgICAgICAgU3RyaW5nIGhhcmRTZXR0aW5nLCBpbnQgZGVmSGFyZFRocmVzaG9sZCkgewotICAgICAgICAgICAgbVByb2Nlc3NOYW1lID0gcHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICBtRW5hYmxlZFNldHRpbmcgPSBlbmFibGVkU2V0dGluZzsKLSAgICAgICAgICAgIG1Tb2Z0U2V0dGluZyA9IHNvZnRTZXR0aW5nOwotICAgICAgICAgICAgbUhhcmRTZXR0aW5nID0gaGFyZFNldHRpbmc7Ci0gICAgICAgICAgICBtU29mdFRocmVzaG9sZCA9IGRlZlNvZnRUaHJlc2hvbGQ7Ci0gICAgICAgICAgICBtSGFyZFRocmVzaG9sZCA9IGRlZkhhcmRUaHJlc2hvbGQ7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHJldHJpZXZlU2V0dGluZ3MoQ29udGVudFJlc29sdmVyIHJlc29sdmVyKSB7Ci0gICAgICAgICAgICBtU29mdFRocmVzaG9sZCA9IFNldHRpbmdzLlNlY3VyZS5nZXRJbnQoCi0gICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLCBtU29mdFNldHRpbmcsIG1Tb2Z0VGhyZXNob2xkKTsKLSAgICAgICAgICAgIG1IYXJkVGhyZXNob2xkID0gU2V0dGluZ3MuU2VjdXJlLmdldEludCgKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIsIG1IYXJkU2V0dGluZywgbUhhcmRUaHJlc2hvbGQpOwotICAgICAgICAgICAgbUVuYWJsZWQgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KAotICAgICAgICAgICAgICAgICAgICByZXNvbHZlciwgbUVuYWJsZWRTZXR0aW5nLCAwKSAhPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbGVhbiBjaGVja0xvY2tlZChsb25nIGN1clRpbWUsIGludCBwaWQsIGludCBwc3MpIHsKLSAgICAgICAgICAgIG1MYXN0UHNzID0gcHNzOwotICAgICAgICAgICAgaWYgKG1MYXN0UHNzIDwgbVNvZnRUaHJlc2hvbGQpIHsKLSAgICAgICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9PSzsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobUxhc3RQc3MgPCBtSGFyZFRocmVzaG9sZCkgewotICAgICAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX1NPRlQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX0hBUkQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5XQVRDSERPR19QUk9DX1BTUywgbVByb2Nlc3NOYW1lLCBwaWQsIG1MYXN0UHNzKTsKLQotICAgICAgICAgICAgaWYgKG1TdGF0ZSA9PSBTVEFURV9PSykgewotICAgICAgICAgICAgICAgIC8vIE1lbW9yeSBpcyBnb29kLCBkb24ndCByZWNvdmVyLgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1TdGF0ZSA9PSBTVEFURV9IQVJEKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWVtb3J5IGlzIHJlYWxseSBiYWQsIGtpbGwgcmlnaHQgbm93LgotICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLldBVENIRE9HX0hBUkRfUkVTRVQsIG1Qcm9jZXNzTmFtZSwgcGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgbUhhcmRUaHJlc2hvbGQsIG1MYXN0UHNzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbUVuYWJsZWQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEl0IGlzIHRpbWUgdG8gc2NoZWR1bGUgYSByZXNldC4uLgotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYXJlIGN1cnJlbnRseSB3aXRoaW4gdGhlIHRpbWUgdG8ga2lsbCBwcm9jZXNzZXMgZHVlCi0gICAgICAgICAgICAvLyB0byBtZW1vcnkgdXNlLgotICAgICAgICAgICAgY29tcHV0ZU1lbWNoZWNrVGltZXNMb2NrZWQoY3VyVGltZSk7Ci0gICAgICAgICAgICBTdHJpbmcgc2tpcFJlYXNvbiA9IG51bGw7Ci0gICAgICAgICAgICBpZiAoY3VyVGltZSA8IG1NZW1jaGVja0V4ZWNTdGFydFRpbWUgfHwgY3VyVGltZSA+IG1NZW1jaGVja0V4ZWNFbmRUaW1lKSB7Ci0gICAgICAgICAgICAgICAgc2tpcFJlYXNvbiA9ICJ0aW1lIjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2tpcFJlYXNvbiA9IHNob3VsZFdlQmVCcnV0YWxMb2NrZWQoY3VyVGltZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5XQVRDSERPR19TT0ZUX1JFU0VULCBtUHJvY2Vzc05hbWUsIHBpZCwKLSAgICAgICAgICAgICAgICAgICAgbVNvZnRUaHJlc2hvbGQsIG1MYXN0UHNzLCBza2lwUmVhc29uICE9IG51bGwgPyBza2lwUmVhc29uIDogIiIpOwotICAgICAgICAgICAgaWYgKHNraXBSZWFzb24gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1OZWVkU2NoZWR1bGVkQ2hlY2sgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtRW5hYmxlZDsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKSB7Ci0gICAgICAgICAgICBtTGFzdFBzcyA9IDA7Ci0gICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9PSzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgogICAgICAqIFVzZWQgZm9yIHNjaGVkdWxpbmcgbW9uaXRvciBjYWxsYmFja3MgYW5kIGNoZWNraW5nIG1lbW9yeSB1c2FnZS4KICAgICAgKi8KICAgICBmaW5hbCBjbGFzcyBIZWFydGJlYXRIYW5kbGVyIGV4dGVuZHMgSGFuZGxlciB7CiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1zZy53aGF0KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBHTE9CQUxfUFNTOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtSGF2ZUdsb2JhbFBzcykgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRHVyaW5nIHRoZSBsYXN0IHBhc3Mgd2UgY29sbGVjdGVkIHBzcyBpbmZvcm1hdGlvbiwgc28KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdyBpdCBpcyB0aW1lIHRvIHJlcG9ydCBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIG1IYXZlR2xvYmFsUHNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUmVjZWl2ZWQgZ2xvYmFsIHBzcywgbG9nZ2luZy4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0dsb2JhbE1lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBicmVhazsKLQogICAgICAgICAgICAgICAgIGNhc2UgTU9OSVRPUjogewotICAgICAgICAgICAgICAgICAgICBpZiAobUhhdmVQc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIER1cmluZyB0aGUgbGFzdCBwYXNzIHdlIGNvbGxlY3RlZCBwc3MgaW5mb3JtYXRpb24sIHNvCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3cgaXQgaXMgdGltZSB0byByZXBvcnQgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBtSGF2ZVBzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkhhdmUgcHNzLCBjaGVja2luZyBtZW1vcnkuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGVja01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1IYXZlR2xvYmFsUHNzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBEdXJpbmcgdGhlIGxhc3QgcGFzcyB3ZSBjb2xsZWN0ZWQgcHNzIGluZm9ybWF0aW9uLCBzbwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm93IGl0IGlzIHRpbWUgdG8gcmVwb3J0IGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgbUhhdmVHbG9iYWxQc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJIYXZlIGdsb2JhbCBwc3MsIGxvZ2dpbmcuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dHbG9iYWxNZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgICAgIGxvbmcgbm93ID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHdlIHNob3VsZCBmb3JjZSBhIHJlYm9vdC4KQEAgLTI3NCwzMiArMTI3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrUmVib290KGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB3ZSBzaG91bGQgY2hlY2sgbWVtb3J5IGNvbmRpdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIGxvbmcgbWVtQ2hlY2tJbnRlcnZhbCA9IFNldHRpbmdzLlNlY3VyZS5nZXRMb25nKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZXNvbHZlciwgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FTUNIRUNLX0RFRkFVTFRfSU5URVJWQUwpICogMTAwMDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChtTGFzdE1lbUNoZWNrVGltZSttZW1DaGVja0ludGVydmFsKSA8IG5vdykgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgbm93IHRpbWUgdG8gY29sbGVjdCBwc3MgaW5mb3JtYXRpb24uICBUaGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBhc3luYyBzbyB3ZSB3b24ndCByZXBvcnQgaXQgbm93LiAgQW5kIHRvIGtlZXAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaW5ncyBzaW1wbGUsIHdlIHdpbGwgYXNzdW1lIHRoYXQgZXZlcnlvbmUgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyByZXBvcnRlZCBiYWNrIGJ5IHRoZSBuZXh0IE1PTklUT1IgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIG1MYXN0TWVtQ2hlY2tUaW1lID0gbm93OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkNvbGxlY3RpbmcgbWVtb3J5IHVzYWdlLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdE1lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUhhdmVQc3MgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1lbUNoZWNrUmVhbHRpbWVJbnRlcnZhbCA9IFNldHRpbmdzLlNlY3VyZS5nZXRMb25nKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzb2x2ZXIsIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19MT0dfUkVBTFRJTUVfSU5URVJWQUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FTUNIRUNLX0RFRkFVTFRfTE9HX1JFQUxUSU1FX0lOVEVSVkFMKSAqIDEwMDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb25nIHJlYWx0aW1lTm93ID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG1MYXN0TWVtQ2hlY2tSZWFsdGltZSttZW1DaGVja1JlYWx0aW1lSW50ZXJ2YWwpIDwgcmVhbHRpbWVOb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGFzdE1lbUNoZWNrUmVhbHRpbWUgPSByZWFsdGltZU5vdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiQ29sbGVjdGluZyBnbG9iYWwgbWVtb3J5IHVzYWdlLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3RHbG9iYWxNZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGF2ZUdsb2JhbFBzcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgc2l6ZSA9IG1Nb25pdG9ycy5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IHNpemUgOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50TW9uaXRvciA9IG1Nb25pdG9ycy5nZXQoaSk7CkBAIC0zMTUsMjAgKzE0Miw2IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmaW5hbCBjbGFzcyBHbG9iYWxQc3NDb2xsZWN0ZWQgaW1wbGVtZW50cyBSdW5uYWJsZSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoR0xPQkFMX1BTUyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmaW5hbCBjbGFzcyBDaGVja3VwUmVjZWl2ZXIgZXh0ZW5kcyBCcm9hZGNhc3RSZWNlaXZlciB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjLCBJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiQWxhcm0gd2VudCBvZmYsIGNoZWNraW5nIG1lbW9yeS4iKTsKLSAgICAgICAgICAgIGNoZWNrTWVtb3J5KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBmaW5hbCBjbGFzcyBSZWJvb3RSZWNlaXZlciBleHRlbmRzIEJyb2FkY2FzdFJlY2VpdmVyIHsKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGMsIEludGVudCBpbnRlbnQpIHsKQEAgLTM1OSwyNyArMTcyLDYgQEAKICAgICAgICAgdm9pZCBtb25pdG9yKCk7CiAgICAgfQogCi0gICAgcHVibGljIGludGVyZmFjZSBQc3NSZXF1ZXN0b3IgewotICAgICAgICB2b2lkIHJlcXVlc3RQc3MoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgY2xhc3MgUHNzU3RhdHMgewotICAgICAgICBwdWJsaWMgaW50IG1FbXB0eVBzczsKLSAgICAgICAgcHVibGljIGludCBtRW1wdHlDb3VudDsKLSAgICAgICAgcHVibGljIGludCBtQmFja2dyb3VuZFBzczsKLSAgICAgICAgcHVibGljIGludCBtQmFja2dyb3VuZENvdW50OwotICAgICAgICBwdWJsaWMgaW50IG1TZXJ2aWNlUHNzOwotICAgICAgICBwdWJsaWMgaW50IG1TZXJ2aWNlQ291bnQ7Ci0gICAgICAgIHB1YmxpYyBpbnQgbVZpc2libGVQc3M7Ci0gICAgICAgIHB1YmxpYyBpbnQgbVZpc2libGVDb3VudDsKLSAgICAgICAgcHVibGljIGludCBtRm9yZWdyb3VuZFBzczsKLSAgICAgICAgcHVibGljIGludCBtRm9yZWdyb3VuZENvdW50OwotCi0gICAgICAgIHB1YmxpYyBpbnQgbU5vUHNzQ291bnQ7Ci0KLSAgICAgICAgcHVibGljIGludCBtUHJvY0RlYXRoc1tdID0gbmV3IGludFsxMF07Ci0gICAgfQotCiAgICAgcHVibGljIHN0YXRpYyBXYXRjaGRvZyBnZXRJbnN0YW5jZSgpIHsKICAgICAgICAgaWYgKHNXYXRjaGRvZyA9PSBudWxsKSB7CiAgICAgICAgICAgICBzV2F0Y2hkb2cgPSBuZXcgV2F0Y2hkb2coKTsKQEAgLTM5MSw3ICsxODMsNiBAQAogICAgIHByaXZhdGUgV2F0Y2hkb2coKSB7CiAgICAgICAgIHN1cGVyKCJ3YXRjaGRvZyIpOwogICAgICAgICBtSGFuZGxlciA9IG5ldyBIZWFydGJlYXRIYW5kbGVyKCk7Ci0gICAgICAgIG1HbG9iYWxQc3NDb2xsZWN0ZWQgPSBuZXcgR2xvYmFsUHNzQ29sbGVjdGVkKCk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgaW5pdChDb250ZXh0IGNvbnRleHQsIEJhdHRlcnlTZXJ2aWNlIGJhdHRlcnksCkBAIC00MDMsMTEgKzE5NCw2IEBACiAgICAgICAgIG1BbGFybSA9IGFsYXJtOwogICAgICAgICBtQWN0aXZpdHkgPSBhY3Rpdml0eTsKIAotICAgICAgICBjb250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobmV3IENoZWNrdXBSZWNlaXZlcigpLAotICAgICAgICAgICAgICAgIG5ldyBJbnRlbnRGaWx0ZXIoQ0hFQ0tVUF9BQ1RJT04pKTsKLSAgICAgICAgbUNoZWNrdXBJbnRlbnQgPSBQZW5kaW5nSW50ZW50LmdldEJyb2FkY2FzdChjb250ZXh0LAotICAgICAgICAgICAgICAgIDAsIG5ldyBJbnRlbnQoQ0hFQ0tVUF9BQ1RJT04pLCAwKTsKLQogICAgICAgICBjb250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobmV3IFJlYm9vdFJlY2VpdmVyKCksCiAgICAgICAgICAgICAgICAgbmV3IEludGVudEZpbHRlcihSRUJPT1RfQUNUSU9OKSk7CiAgICAgICAgIG1SZWJvb3RJbnRlbnQgPSBQZW5kaW5nSW50ZW50LmdldEJyb2FkY2FzdChjb250ZXh0LApAQCAtNDIwLDIwICsyMDYsMTAgQEAKICAgICAgICAgbUJvb3RUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgcHJvY2Vzc1N0YXJ0ZWQoUHNzUmVxdWVzdG9yIHJlcSwgU3RyaW5nIG5hbWUsIGludCBwaWQpIHsKKyAgICBwdWJsaWMgdm9pZCBwcm9jZXNzU3RhcnRlZChTdHJpbmcgbmFtZSwgaW50IHBpZCkgewogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKICAgICAgICAgICAgIGlmICgiY29tLmFuZHJvaWQucGhvbmUiLmVxdWFscyhuYW1lKSkgewotICAgICAgICAgICAgICAgIG1QaG9uZVJlcSA9IHJlcTsKICAgICAgICAgICAgICAgICBtUGhvbmVQaWQgPSBwaWQ7Ci0gICAgICAgICAgICAgICAgbVBob25lUHNzID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHJlcG9ydFBzcyhQc3NSZXF1ZXN0b3IgcmVxLCBTdHJpbmcgbmFtZSwgaW50IHBzcykgewotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGlmIChtUGhvbmVSZXEgPT0gcmVxKSB7Ci0gICAgICAgICAgICAgICAgbVBob25lUHNzID0gcHNzOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3LDE1MiArMjIzLDYgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qKgotICAgICAqIFJldHJpZXZlIG1lbW9yeSB1c2FnZSBpbmZvcm1hdGlvbiBmcm9tIHNwZWNpZmljIHByb2Nlc3NlcyBiZWluZwotICAgICAqIG1vbml0b3JlZC4gIFRoaXMgaXMgYW4gYXN5bmMgb3BlcmF0aW9uLCBzbyBtdXN0IGJlIGRvbmUgYmVmb3JlIGRvaW5nCi0gICAgICogbWVtb3J5IGNoZWNrcy4KLSAgICAgKi8KLSAgICB2b2lkIGNvbGxlY3RNZW1vcnkoKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaWYgKG1QaG9uZVJlcSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbVBob25lUmVxLnJlcXVlc3RQc3MoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHJpZXZlIG1lbW9yeSB1c2FnZSBvdmVyIGFsbCBhcHBsaWNhdGlvbiBwcm9jZXNzZXMuICBUaGlzIGlzIGFuCi0gICAgICogYXN5bmMgb3BlcmF0aW9uLCBzbyBtdXN0IGJlIGRvbmUgYmVmb3JlIGRvaW5nIG1lbW9yeSBjaGVja3MuCi0gICAgICovCi0gICAgdm9pZCBjb2xsZWN0R2xvYmFsTWVtb3J5KCkgewotICAgICAgICBtQWN0aXZpdHkucmVxdWVzdFBzcyhtR2xvYmFsUHNzQ29sbGVjdGVkKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDaGVjayBtZW1vcnkgdXNhZ2UgaW4gdGhlIHN5c3RlbSwgc2NoZWR1bGluZyBraWxscy9yZWJvb3RzIGFzIG5lZWRlZC4KLSAgICAgKiBUaGlzIGFsd2F5cyBydW5zIG9uIHRoZSBtSGFuZGxlciB0aHJlYWQuCi0gICAgICovCi0gICAgdm9pZCBjaGVja01lbW9yeSgpIHsKLSAgICAgICAgYm9vbGVhbiBuZWVkU2NoZWR1bGVkQ2hlY2s7Ci0gICAgICAgIGxvbmcgY3VyVGltZTsKLSAgICAgICAgbG9uZyBuZXh0VGltZSA9IDA7Ci0KLSAgICAgICAgbG9uZyByZWNoZWNrSW50ZXJ2YWwgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0TG9uZygKLSAgICAgICAgICAgICAgICBtUmVzb2x2ZXIsIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19SRUNIRUNLX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgIE1FTUNIRUNLX0RFRkFVTFRfUkVDSEVDS19JTlRFUlZBTCkgKiAxMDAwOwotCi0gICAgICAgIG1TeXN0ZW1NZW1Nb25pdG9yLnJldHJpZXZlU2V0dGluZ3MobVJlc29sdmVyKTsKLSAgICAgICAgbVBob25lTWVtTW9uaXRvci5yZXRyaWV2ZVNldHRpbmdzKG1SZXNvbHZlcik7Ci0gICAgICAgIHJldHJpZXZlQnJ1dGFsaXR5QW1vdW50KCk7Ci0KLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBjdXJUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7Ci0gICAgICAgICAgICBtTmVlZFNjaGVkdWxlZENoZWNrID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIEhvdyBpcyB0aGUgc3lzdGVtIGRvaW5nPwotICAgICAgICAgICAgaWYgKG1TeXN0ZW1NZW1Nb25pdG9yLmNoZWNrTG9ja2VkKGN1clRpbWUsIFByb2Nlc3MubXlQaWQoKSwKLSAgICAgICAgICAgICAgICAgICAgKGludClQcm9jZXNzLmdldFBzcyhQcm9jZXNzLm15UGlkKCkpKSkgewotICAgICAgICAgICAgICAgIC8vIE5vdCBnb29kISAgVGltZSB0byBzdWljaWRlLgotICAgICAgICAgICAgICAgIG1Gb3JjZUtpbGxTeXN0ZW0gPSB0cnVlOwotICAgICAgICAgICAgICAgIG5vdGlmeUFsbCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSG93IGlzIHRoZSBwaG9uZSBwcm9jZXNzIGRvaW5nPwotICAgICAgICAgICAgaWYgKG1QaG9uZVJlcSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1QaG9uZU1lbU1vbml0b3IuY2hlY2tMb2NrZWQoY3VyVGltZSwgbVBob25lUGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgbVBob25lUHNzKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IGtpbGwgdGhlIHBob25lIHByb2Nlc3MgYW5kIGxldCBpdCByZXN0YXJ0LgotICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiV2F0Y2hkb2cgaXMga2lsbGluZyB0aGUgcGhvbmUgcHJvY2VzcyIpOwotICAgICAgICAgICAgICAgICAgICBQcm9jZXNzLmtpbGxQcm9jZXNzKG1QaG9uZVBpZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtUGhvbmVNZW1Nb25pdG9yLmNsZWFyKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5lZWRTY2hlZHVsZWRDaGVjayA9IG1OZWVkU2NoZWR1bGVkQ2hlY2s7Ci0gICAgICAgICAgICBpZiAobmVlZFNjaGVkdWxlZENoZWNrKSB7Ci0gICAgICAgICAgICAgICAgLy8gU29tZXRoaW5nIGlzIGdvaW5nIGJhZCwgYnV0IG5vdyBpcyBub3QgYSBnb29kIHRpbWUgdG8KLSAgICAgICAgICAgICAgICAvLyB0ZWFyIHRoaW5ncyBkb3duLi4uICBzY2hlZHVsZSBhbiBhbGFybSB0byBjaGVjayBhZ2FpbiBzb29uLgotICAgICAgICAgICAgICAgIG5leHRUaW1lID0gY3VyVGltZSArIHJlY2hlY2tJbnRlcnZhbDsKLSAgICAgICAgICAgICAgICBpZiAobmV4dFRpbWUgPCBtTWVtY2hlY2tFeGVjU3RhcnRUaW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRUaW1lID0gbU1lbWNoZWNrRXhlY1N0YXJ0VGltZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5leHRUaW1lID49IG1NZW1jaGVja0V4ZWNFbmRUaW1lKXsKLSAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBjaGVjayBkdXJpbmcgbmV4dCBleGVjIHRpbWUuLi4gIHNvIHRoYXQgbmVlZHMKLSAgICAgICAgICAgICAgICAgICAgLy8gdG8gYmUgY29tcHV0ZWQuCi0gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJDb21wdXRpbmcgbmV4dCB0aW1lIHJhbmdlIik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVNZW1jaGVja1RpbWVzTG9ja2VkKG5leHRUaW1lKTsKLSAgICAgICAgICAgICAgICAgICAgbmV4dFRpbWUgPSBtTWVtY2hlY2tFeGVjU3RhcnRUaW1lOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIHsKLSAgICAgICAgICAgICAgICAgICAgbUNhbGVuZGFyLnNldFRpbWVJbk1pbGxpcyhuZXh0VGltZSk7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJOZXh0IEFsYXJtIFRpbWU6ICIgKyBtQ2FsZW5kYXIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuZWVkU2NoZWR1bGVkQ2hlY2spIHsKLSAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJTY2hlZHVsaW5nIG5leHQgbWVtY2hlY2sgYWxhcm0gZm9yICIKLSAgICAgICAgICAgICAgICAgICAgKyAoKG5leHRUaW1lLWN1clRpbWUpLzEwMDAvNjApICsgIm0gZnJvbSBub3ciKTsKLSAgICAgICAgICAgIG1BbGFybS5yZW1vdmUobUNoZWNrdXBJbnRlbnQpOwotICAgICAgICAgICAgbUFsYXJtLnNldChBbGFybU1hbmFnZXIuUlRDX1dBS0VVUCwgbmV4dFRpbWUsIG1DaGVja3VwSW50ZW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJObyBuZWVkIHRvIHNjaGVkdWxlIGEgbWVtY2hlY2sgYWxhcm0hIik7Ci0gICAgICAgICAgICBtQWxhcm0ucmVtb3ZlKG1DaGVja3VwSW50ZW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZpbmFsIFBzc1N0YXRzIG1Qc3NTdGF0cyA9IG5ldyBQc3NTdGF0cygpOwotICAgIGZpbmFsIFN0cmluZ1tdIG1NZW1JbmZvRmllbGRzID0gbmV3IFN0cmluZ1tdIHsKLSAgICAgICAgICAgICJNZW1GcmVlOiIsICJCdWZmZXJzOiIsICJDYWNoZWQ6IiwKLSAgICAgICAgICAgICJBY3RpdmU6IiwgIkluYWN0aXZlOiIsCi0gICAgICAgICAgICAiQW5vblBhZ2VzOiIsICJNYXBwZWQ6IiwgIlNsYWI6IiwKLSAgICAgICAgICAgICJTUmVjbGFpbWFibGU6IiwgIlNVbnJlY2xhaW06IiwgIlBhZ2VUYWJsZXM6IiB9OwotICAgIGZpbmFsIGxvbmdbXSBtTWVtSW5mb1NpemVzID0gbmV3IGxvbmdbbU1lbUluZm9GaWVsZHMubGVuZ3RoXTsKLSAgICBmaW5hbCBTdHJpbmdbXSBtVk1TdGF0RmllbGRzID0gbmV3IFN0cmluZ1tdIHsKLSAgICAgICAgICAgICJwZ2ZyZWUgIiwgInBnYWN0aXZhdGUgIiwgInBnZGVhY3RpdmF0ZSAiLAotICAgICAgICAgICAgInBnZmF1bHQgIiwgInBnbWFqZmF1bHQgIiB9OwotICAgIGZpbmFsIGxvbmdbXSBtVk1TdGF0U2l6ZXMgPSBuZXcgbG9uZ1ttVk1TdGF0RmllbGRzLmxlbmd0aF07Ci0gICAgZmluYWwgbG9uZ1tdIG1QcmV2Vk1TdGF0U2l6ZXMgPSBuZXcgbG9uZ1ttVk1TdGF0RmllbGRzLmxlbmd0aF07Ci0gICAgbG9uZyBtTGFzdExvZ0dsb2JhbE1lbW9yeVRpbWU7Ci0KLSAgICB2b2lkIGxvZ0dsb2JhbE1lbW9yeSgpIHsKLSAgICAgICAgUHNzU3RhdHMgc3RhdHMgPSBtUHNzU3RhdHM7Ci0gICAgICAgIG1BY3Rpdml0eS5jb2xsZWN0UHNzKHN0YXRzKTsKLSAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuV0FUQ0hET0dfUFNTX1NUQVRTLAotICAgICAgICAgICAgICAgIHN0YXRzLm1FbXB0eVBzcywgc3RhdHMubUVtcHR5Q291bnQsCi0gICAgICAgICAgICAgICAgc3RhdHMubUJhY2tncm91bmRQc3MsIHN0YXRzLm1CYWNrZ3JvdW5kQ291bnQsCi0gICAgICAgICAgICAgICAgc3RhdHMubVNlcnZpY2VQc3MsIHN0YXRzLm1TZXJ2aWNlQ291bnQsCi0gICAgICAgICAgICAgICAgc3RhdHMubVZpc2libGVQc3MsIHN0YXRzLm1WaXNpYmxlQ291bnQsCi0gICAgICAgICAgICAgICAgc3RhdHMubUZvcmVncm91bmRQc3MsIHN0YXRzLm1Gb3JlZ3JvdW5kQ291bnQsCi0gICAgICAgICAgICAgICAgc3RhdHMubU5vUHNzQ291bnQpOwotICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5XQVRDSERPR19QUk9DX1NUQVRTLAotICAgICAgICAgICAgICAgIHN0YXRzLm1Qcm9jRGVhdGhzWzBdLCBzdGF0cy5tUHJvY0RlYXRoc1sxXSwgc3RhdHMubVByb2NEZWF0aHNbMl0sCi0gICAgICAgICAgICAgICAgc3RhdHMubVByb2NEZWF0aHNbM10sIHN0YXRzLm1Qcm9jRGVhdGhzWzRdKTsKLSAgICAgICAgUHJvY2Vzcy5yZWFkUHJvY0xpbmVzKCIvcHJvYy9tZW1pbmZvIiwgbU1lbUluZm9GaWVsZHMsIG1NZW1JbmZvU2l6ZXMpOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8bU1lbUluZm9TaXplcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgbU1lbUluZm9TaXplc1tpXSAqPSAxMDI0OwotICAgICAgICB9Ci0gICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLldBVENIRE9HX01FTUlORk8sCi0gICAgICAgICAgICAgICAgKGludCltTWVtSW5mb1NpemVzWzBdLCAoaW50KW1NZW1JbmZvU2l6ZXNbMV0sIChpbnQpbU1lbUluZm9TaXplc1syXSwKLSAgICAgICAgICAgICAgICAoaW50KW1NZW1JbmZvU2l6ZXNbM10sIChpbnQpbU1lbUluZm9TaXplc1s0XSwKLSAgICAgICAgICAgICAgICAoaW50KW1NZW1JbmZvU2l6ZXNbNV0sIChpbnQpbU1lbUluZm9TaXplc1s2XSwgKGludCltTWVtSW5mb1NpemVzWzddLAotICAgICAgICAgICAgICAgIChpbnQpbU1lbUluZm9TaXplc1s4XSwgKGludCltTWVtSW5mb1NpemVzWzldLCAoaW50KW1NZW1JbmZvU2l6ZXNbMTBdKTsKLSAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgbG9uZyBkdXIgPSBub3cgLSBtTGFzdExvZ0dsb2JhbE1lbW9yeVRpbWU7Ci0gICAgICAgIG1MYXN0TG9nR2xvYmFsTWVtb3J5VGltZSA9IG5vdzsKLSAgICAgICAgUHJvY2Vzcy5yZWFkUHJvY0xpbmVzKCIvcHJvYy92bXN0YXQiLCBtVk1TdGF0RmllbGRzLCBtVk1TdGF0U2l6ZXMpOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8bVZNU3RhdFNpemVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBsb25nIHYgPSBtVk1TdGF0U2l6ZXNbaV07Ci0gICAgICAgICAgICBtVk1TdGF0U2l6ZXNbaV0gLT0gbVByZXZWTVN0YXRTaXplc1tpXTsKLSAgICAgICAgICAgIG1QcmV2Vk1TdGF0U2l6ZXNbaV0gPSB2OwotICAgICAgICB9Ci0gICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLldBVENIRE9HX1ZNU1RBVCwgZHVyLAotICAgICAgICAgICAgICAgIChpbnQpbVZNU3RhdFNpemVzWzBdLCAoaW50KW1WTVN0YXRTaXplc1sxXSwgKGludCltVk1TdGF0U2l6ZXNbMl0sCi0gICAgICAgICAgICAgICAgKGludCltVk1TdGF0U2l6ZXNbM10sIChpbnQpbVZNU3RhdFNpemVzWzRdKTsKLSAgICB9Ci0KICAgICB2b2lkIGNoZWNrUmVib290KGJvb2xlYW4gZnJvbUFsYXJtKSB7CiAgICAgICAgIGludCByZWJvb3RJbnRlcnZhbCA9IG1SZXFSZWJvb3RJbnRlcnZhbCA+PSAwID8gbVJlcVJlYm9vdEludGVydmFsCiAgICAgICAgICAgICAgICAgOiBTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KApAQCAtNzMwLDQ3ICszNjAsNiBAQAogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKLSAgICAvKioKLSAgICAgKiBDb21wdXRlIHRoZSB0aW1lcyBkdXJpbmcgd2hpY2ggd2UgbmV4dCB3b3VsZCBsaWtlIHRvIHBlcmZvcm0gcHJvY2VzcwotICAgICAqIHJlc3RhcnRzLgotICAgICAqCi0gICAgICogQHBhcmFtIGN1clRpbWUgVGhlIGN1cnJlbnQgc3lzdGVtIHRpbWUuCi0gICAgICovCi0gICAgdm9pZCBjb21wdXRlTWVtY2hlY2tUaW1lc0xvY2tlZChsb25nIGN1clRpbWUpIHsKLSAgICAgICAgaWYgKG1NZW1jaGVja0xhc3RUaW1lID09IGN1clRpbWUpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1NZW1jaGVja0xhc3RUaW1lID0gY3VyVGltZTsKLQotICAgICAgICBsb25nIG1lbWNoZWNrRXhlY1N0YXJ0VGltZSA9IFNldHRpbmdzLlNlY3VyZS5nZXRMb25nKAotICAgICAgICAgICAgICAgIG1SZXNvbHZlciwgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX0VYRUNfU1RBUlRfVElNRSwKLSAgICAgICAgICAgICAgICBNRU1DSEVDS19ERUZBVUxUX0VYRUNfU1RBUlRfVElNRSk7Ci0gICAgICAgIGxvbmcgbWVtY2hlY2tFeGVjRW5kVGltZSA9IFNldHRpbmdzLlNlY3VyZS5nZXRMb25nKAotICAgICAgICAgICAgICAgIG1SZXNvbHZlciwgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX0VYRUNfRU5EX1RJTUUsCi0gICAgICAgICAgICAgICAgTUVNQ0hFQ0tfREVGQVVMVF9FWEVDX0VORF9USU1FKTsKLQotICAgICAgICBtTWVtY2hlY2tFeGVjRW5kVGltZSA9IGNvbXB1dGVDYWxlbmRhclRpbWUobUNhbGVuZGFyLCBjdXJUaW1lLAotICAgICAgICAgICAgICAgIG1lbWNoZWNrRXhlY0VuZFRpbWUpOwotICAgICAgICBpZiAobU1lbWNoZWNrRXhlY0VuZFRpbWUgPCBjdXJUaW1lKSB7Ci0gICAgICAgICAgICBtZW1jaGVja0V4ZWNTdGFydFRpbWUgKz0gMjQqNjAqNjA7Ci0gICAgICAgICAgICBtZW1jaGVja0V4ZWNFbmRUaW1lICs9IDI0KjYwKjYwOwotICAgICAgICAgICAgbU1lbWNoZWNrRXhlY0VuZFRpbWUgPSBjb21wdXRlQ2FsZW5kYXJUaW1lKG1DYWxlbmRhciwgY3VyVGltZSwKLSAgICAgICAgICAgICAgICAgICAgbWVtY2hlY2tFeGVjRW5kVGltZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbU1lbWNoZWNrRXhlY1N0YXJ0VGltZSA9IGNvbXB1dGVDYWxlbmRhclRpbWUobUNhbGVuZGFyLCBjdXJUaW1lLAotICAgICAgICAgICAgICAgIG1lbWNoZWNrRXhlY1N0YXJ0VGltZSk7Ci0KLSAgICAgICAgaWYgKGxvY2FsTE9HVikgewotICAgICAgICAgICAgbUNhbGVuZGFyLnNldFRpbWVJbk1pbGxpcyhjdXJUaW1lKTsKLSAgICAgICAgICAgIFNsb2cudihUQUcsICJDdXJyZW50IFRpbWU6ICIgKyBtQ2FsZW5kYXIpOwotICAgICAgICAgICAgbUNhbGVuZGFyLnNldFRpbWVJbk1pbGxpcyhtTWVtY2hlY2tFeGVjU3RhcnRUaW1lKTsKLSAgICAgICAgICAgIFNsb2cudihUQUcsICJTdGFydCBDaGVjayBUaW1lOiAiICsgbUNhbGVuZGFyKTsKLSAgICAgICAgICAgIG1DYWxlbmRhci5zZXRUaW1lSW5NaWxsaXMobU1lbWNoZWNrRXhlY0VuZFRpbWUpOwotICAgICAgICAgICAgU2xvZy52KFRBRywgIkVuZCBDaGVjayBUaW1lOiAiICsgbUNhbGVuZGFyKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIHN0YXRpYyBsb25nIGNvbXB1dGVDYWxlbmRhclRpbWUoQ2FsZW5kYXIgYywgbG9uZyBjdXJUaW1lLAogICAgICAgICAgICAgbG9uZyBzZWNvbmRzU2luY2VNaWRuaWdodCkgewogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XaWZpU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2lmaVNlcnZpY2UuamF2YQppbmRleCA4ZDZhZDkzLi41MDljNzg5IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XaWZpU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dpZmlTZXJ2aWNlLmphdmEKQEAgLTYzMSw2ICs2MzEsNyBAQAogICAgIH0KIAogICAgIHB1YmxpYyBXaWZpQ29uZmlndXJhdGlvbiBnZXRXaWZpQXBDb25maWd1cmF0aW9uKCkgeworICAgICAgICBlbmZvcmNlQWNjZXNzUGVybWlzc2lvbigpOwogICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgY3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKICAgICAgICAgV2lmaUNvbmZpZ3VyYXRpb24gd2lmaUNvbmZpZyA9IG5ldyBXaWZpQ29uZmlndXJhdGlvbigpOwogICAgICAgICBpbnQgYXV0aFR5cGU7CkBAIC02NDgsNyArNjQ5LDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBwZXJzaXN0QXBDb25maWd1cmF0aW9uKFdpZmlDb25maWd1cmF0aW9uIHdpZmlDb25maWcpIHsKKyAgICBwdWJsaWMgdm9pZCBzZXRXaWZpQXBDb25maWd1cmF0aW9uKFdpZmlDb25maWd1cmF0aW9uIHdpZmlDb25maWcpIHsKKyAgICAgICAgZW5mb3JjZUNoYW5nZVBlcm1pc3Npb24oKTsKICAgICAgICAgZmluYWwgQ29udGVudFJlc29sdmVyIGNyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CiAgICAgICAgIGJvb2xlYW4gaXNXcGE7CiAgICAgICAgIGlmICh3aWZpQ29uZmlnID09IG51bGwpCkBAIC02NzksOSArNjgxLDkgQEAKICAgICAgICAgICAgIC8qIENvbmZpZ3VyYXRpb24gY2hhbmdlZCBvbiBhIHJ1bm5pbmcgYWNjZXNzIHBvaW50ICovCiAgICAgICAgICAgICBpZihlbmFibGUgJiYgKHdpZmlDb25maWcgIT0gbnVsbCkpIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBwZXJzaXN0QXBDb25maWd1cmF0aW9uKHdpZmlDb25maWcpOwogICAgICAgICAgICAgICAgICAgICBud1NlcnZpY2Uuc2V0QWNjZXNzUG9pbnQod2lmaUNvbmZpZywgbVdpZmlTdGF0ZVRyYWNrZXIuZ2V0SW50ZXJmYWNlTmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09GVEFQX0lGQUNFKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0V2lmaUFwQ29uZmlndXJhdGlvbih3aWZpQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfSBjYXRjaChFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRXhjZXB0aW9uIGluIG53U2VydmljZSBkdXJpbmcgQVAgcmVzdGFydCIpOwpAQCAtNzE3LDcgKzcxOSw2IEBACiAgICAgICAgICAgICAgICAgd2lmaUNvbmZpZy5TU0lEID0gbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLndpZmlfdGV0aGVyX2NvbmZpZ3VyZV9zc2lkX2RlZmF1bHQpOwogICAgICAgICAgICAgICAgIHdpZmlDb25maWcuYWxsb3dlZEtleU1hbmFnZW1lbnQuc2V0KEtleU1nbXQuTk9ORSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwZXJzaXN0QXBDb25maWd1cmF0aW9uKHdpZmlDb25maWcpOwogCiAgICAgICAgICAgICBpZiAoIW1XaWZpU3RhdGVUcmFja2VyLmxvYWREcml2ZXIoKSkgewogICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJGYWlsZWQgdG8gbG9hZCBXaS1GaSBkcml2ZXIgZm9yIEFQIG1vZGUiKTsKQEAgLTczNCw2ICs3MzUsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgc2V0V2lmaUFwQ29uZmlndXJhdGlvbih3aWZpQ29uZmlnKTsKKwogICAgICAgICB9IGVsc2UgewogCiAgICAgICAgICAgICB0cnkgewpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2luZG93TWFuYWdlclNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dpbmRvd01hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggYThkYWQ4OC4uNDgzZjllYiAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2luZG93TWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XaW5kb3dNYW5hZ2VyU2VydmljZS5qYXZhCkBAIC0xMDEsNiArMTAxLDggQEAKIGltcG9ydCBhbmRyb2lkLnZpZXcuSVdpbmRvdzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuSVdpbmRvd01hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC52aWV3LklXaW5kb3dTZXNzaW9uOworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dENoYW5uZWw7CitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0UXVldWU7CiBpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OwogaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuUmF3SW5wdXRFdmVudDsKQEAgLTE1Nyw2ICsxNTksOCBAQAogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFNIT1dfVFJBTlNBQ1RJT05TID0gZmFsc2U7CiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gSElERV9TVEFDS19DUkFXTFMgPSB0cnVlOwogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIE1FQVNVUkVfTEFURU5DWSA9IGZhbHNlOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0ggPQorICAgICAgICBXaW5kb3dNYW5hZ2VyUG9saWN5LkVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0g7CiAgICAgc3RhdGljIHByaXZhdGUgTGF0ZW5jeVRpbWVyIGx0OwogCiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gUFJPRklMRV9PUklFTlRBVElPTiA9IGZhbHNlOwpAQCAtMTk4LDYgKzIwMiwxMyBAQAogICAgIC8qKiBBZGp1c3RtZW50IHRvIHRpbWUgdG8gcGVyZm9ybSBhIGRpbSwgdG8gbWFrZSBpdCBtb3JlIGRyYW1hdGljLgogICAgICAqLwogICAgIHN0YXRpYyBmaW5hbCBpbnQgRElNX0RVUkFUSU9OX01VTFRJUExJRVIgPSA2OworICAgIAorICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciBpbnB1dCBldmVudCBpbmplY3Rpb24uCisgICAgLy8gRklYTUUgaXMgdGhpcyB2YWx1ZSByZWFzb25hYmxlPworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTkpFQ1RJT05fVElNRU9VVF9NSUxMSVMgPSAzMCAqIDEwMDA7CisgICAgCisgICAgLy8gRGVmYXVsdCBpbnB1dCBkaXNwYXRjaGluZyB0aW1lb3V0IGluIG5hbm9zZWNvbmRzLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgREVGQVVMVF9JTlBVVF9ESVNQQVRDSElOR19USU1FT1VUX05BTk9TID0gNTAwMCAqIDEwMDAwMDBMOwogCiAgICAgc3RhdGljIGZpbmFsIGludCBJTkpFQ1RfRkFJTEVEID0gMDsKICAgICBzdGF0aWMgZmluYWwgaW50IElOSkVDVF9TVUNDRUVERUQgPSAxOwpAQCAtNDQyLDggKzQ1Myw2IEBACiAgICAgZmluYWwgQXJyYXlMaXN0PEFwcFdpbmRvd1Rva2VuPiBtVG9Ub3BBcHBzID0gbmV3IEFycmF5TGlzdDxBcHBXaW5kb3dUb2tlbj4oKTsKICAgICBmaW5hbCBBcnJheUxpc3Q8QXBwV2luZG93VG9rZW4+IG1Ub0JvdHRvbUFwcHMgPSBuZXcgQXJyYXlMaXN0PEFwcFdpbmRvd1Rva2VuPigpOwogCi0gICAgLy9mbGFnIHRvIGRldGVjdCBmYXQgdG91Y2ggZXZlbnRzCi0gICAgYm9vbGVhbiBtRmF0VG91Y2ggPSBmYWxzZTsKICAgICBEaXNwbGF5IG1EaXNwbGF5OwogCiAgICAgSCBtSCA9IG5ldyBIKCk7CkBAIC00OTcsMTAgKzUwNiwxMiBAQAogCiAgICAgZmluYWwgS2V5V2FpdGVyIG1LZXlXYWl0ZXIgPSBuZXcgS2V5V2FpdGVyKCk7CiAgICAgZmluYWwgS2V5USBtUXVldWU7CisgICAgZmluYWwgSW5wdXRNYW5hZ2VyIG1JbnB1dE1hbmFnZXI7CiAgICAgZmluYWwgSW5wdXREaXNwYXRjaGVyVGhyZWFkIG1JbnB1dFRocmVhZDsKIAogICAgIC8vIFdobyBpcyBob2xkaW5nIHRoZSBzY3JlZW4gb24uCiAgICAgU2Vzc2lvbiBtSG9sZGluZ1NjcmVlbk9uOworICAgIFBvd2VyTWFuYWdlci5XYWtlTG9jayBtSG9sZGluZ1NjcmVlbldha2VMb2NrOwogCiAgICAgYm9vbGVhbiBtVHVybk9uU2NyZWVuOwogCkBAIC01NjEsNiArNTcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgbUhhdmVJbnB1dE1ldGhvZHMpOwogICAgICAgICAgICAgYW5kcm9pZC5vcy5Qcm9jZXNzLnNldFRocmVhZFByaW9yaXR5KAogICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLm9zLlByb2Nlc3MuVEhSRUFEX1BSSU9SSVRZX0RJU1BMQVkpOworICAgICAgICAgICAgYW5kcm9pZC5vcy5Qcm9jZXNzLnNldENhblNlbGZCYWNrZ3JvdW5kKGZhbHNlKTsKIAogICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CiAgICAgICAgICAgICAgICAgbVNlcnZpY2UgPSBzOwpAQCAtNTk2LDYgKzYwOCw3IEBACiAgICAgICAgICAgICAvLyAgICAgICAgTG9nLlZFUkJPU0UsICJXaW5kb3dNYW5hZ2VyUG9saWN5IiwgTG9nLkxPR19JRF9TWVNURU0pKTsKICAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eSgKICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5vcy5Qcm9jZXNzLlRIUkVBRF9QUklPUklUWV9GT1JFR1JPVU5EKTsKKyAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRDYW5TZWxmQmFja2dyb3VuZChmYWxzZSk7CiAgICAgICAgICAgICBtUG9saWN5LmluaXQobUNvbnRleHQsIG1TZXJ2aWNlLCBtUE0pOwogCiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKQEAgLTY1MCw4ICs2NjMsMTYgQEAKICAgICAgICAgfQogICAgICAgICBtTWluV2FpdFRpbWVCZXR3ZWVuVG91Y2hFdmVudHMgPSAxMDAwIC8gbWF4X2V2ZW50c19wZXJfc2VjOwogCi0gICAgICAgIG1RdWV1ZSA9IG5ldyBLZXlRKCk7CisgICAgICAgIG1Ib2xkaW5nU2NyZWVuV2FrZUxvY2sgPSBwbWMubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlNDUkVFTl9CUklHSFRfV0FLRV9MT0NLLAorICAgICAgICAgICAgICAgICJLRUVQX1NDUkVFTl9PTl9GTEFHIik7CisgICAgICAgIG1Ib2xkaW5nU2NyZWVuV2FrZUxvY2suc2V0UmVmZXJlbmNlQ291bnRlZChmYWxzZSk7CiAKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIG1JbnB1dE1hbmFnZXIgPSBuZXcgSW5wdXRNYW5hZ2VyKGNvbnRleHQsIHRoaXMsIG1Qb2xpY3ksIHBtYywgbVBvd2VyTWFuYWdlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBtUXVldWUgPSBuZXcgS2V5USgpOwogICAgICAgICBtSW5wdXRUaHJlYWQgPSBuZXcgSW5wdXREaXNwYXRjaGVyVGhyZWFkKCk7CiAKICAgICAgICAgUG9saWN5VGhyZWFkIHRociA9IG5ldyBQb2xpY3lUaHJlYWQobVBvbGljeSwgdGhpcywgY29udGV4dCwgcG0pOwpAQCAtNjY2LDcgKzY4NywxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgbUlucHV0VGhyZWFkLnN0YXJ0KCk7CisgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyLnN0YXJ0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtSW5wdXRUaHJlYWQuc3RhcnQoKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIEFkZCBvdXJzZWxmIHRvIHRoZSBXYXRjaGRvZyBtb25pdG9ycy4KICAgICAgICAgV2F0Y2hkb2cuZ2V0SW5zdGFuY2UoKS5hZGRNb25pdG9yKHRoaXMpOwpAQCAtMTg1OSw3ICsxODg0LDcgQEAKICAgICAKICAgICBwdWJsaWMgaW50IGFkZFdpbmRvdyhTZXNzaW9uIHNlc3Npb24sIElXaW5kb3cgY2xpZW50LAogICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMsIGludCB2aWV3VmlzaWJpbGl0eSwKLSAgICAgICAgICAgIFJlY3Qgb3V0Q29udGVudEluc2V0cykgeworICAgICAgICAgICAgUmVjdCBvdXRDb250ZW50SW5zZXRzLCBJbnB1dENoYW5uZWwgb3V0SW5wdXRDaGFubmVsKSB7CiAgICAgICAgIGludCByZXMgPSBtUG9saWN5LmNoZWNrQWRkUGVybWlzc2lvbihhdHRycyk7CiAgICAgICAgIGlmIChyZXMgIT0gV2luZG93TWFuYWdlckltcGwuQUREX09LQVkpIHsKICAgICAgICAgICAgIHJldHVybiByZXM7CkBAIC0xODc4LDcgKzE5MDMsMTIgQEAKICAgICAgICAgICAgICAgICBtRGlzcGxheSA9IHdtLmdldERlZmF1bHREaXNwbGF5KCk7CiAgICAgICAgICAgICAgICAgbUluaXRpYWxEaXNwbGF5V2lkdGggPSBtRGlzcGxheS5nZXRXaWR0aCgpOwogICAgICAgICAgICAgICAgIG1Jbml0aWFsRGlzcGxheUhlaWdodCA9IG1EaXNwbGF5LmdldEhlaWdodCgpOwotICAgICAgICAgICAgICAgIG1RdWV1ZS5zZXREaXNwbGF5KG1EaXNwbGF5KTsKKyAgICAgICAgICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyLnNldERpc3BsYXlTaXplKDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUluaXRpYWxEaXNwbGF5V2lkdGgsIG1Jbml0aWFsRGlzcGxheUhlaWdodCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbVF1ZXVlLnNldERpc3BsYXkobURpc3BsYXkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXBvcnROZXdDb25maWcgPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC0xOTcxLDYgKzIwMDEsMTcgQEAKICAgICAgICAgICAgIGlmIChyZXMgIT0gV2luZG93TWFuYWdlckltcGwuQUREX09LQVkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgICAgIGlmIChvdXRJbnB1dENoYW5uZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHdpbi5tYWtlSW5wdXRDaGFubmVsTmFtZSgpOworICAgICAgICAgICAgICAgICAgICBJbnB1dENoYW5uZWxbXSBpbnB1dENoYW5uZWxzID0gSW5wdXRDaGFubmVsLm9wZW5JbnB1dENoYW5uZWxQYWlyKG5hbWUpOworICAgICAgICAgICAgICAgICAgICB3aW4ubUlucHV0Q2hhbm5lbCA9IGlucHV0Q2hhbm5lbHNbMF07CisgICAgICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbHNbMV0udHJhbnNmZXJUb0JpbmRlck91dFBhcmFtZXRlcihvdXRJbnB1dENoYW5uZWwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0TWFuYWdlci5yZWdpc3RlcklucHV0Q2hhbm5lbCh3aW4ubUlucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBGcm9tIG5vdyBvbiwgbm8gZXhjZXB0aW9ucyBvciBlcnJvcnMgYWxsb3dlZCEKIApAQCAtMjAyNCw4ICsyMDY1LDggQEAKIAogICAgICAgICAgICAgYm9vbGVhbiBmb2N1c0NoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmICh3aW4uY2FuUmVjZWl2ZUtleXMoKSkgewotICAgICAgICAgICAgICAgIGlmICgoZm9jdXNDaGFuZ2VkPXVwZGF0ZUZvY3VzZWRXaW5kb3dMb2NrZWQoVVBEQVRFX0ZPQ1VTX1dJTExfQVNTSUdOX0xBWUVSUykpCi0gICAgICAgICAgICAgICAgICAgICAgICA9PSB0cnVlKSB7CisgICAgICAgICAgICAgICAgZm9jdXNDaGFuZ2VkID0gdXBkYXRlRm9jdXNlZFdpbmRvd0xvY2tlZChVUERBVEVfRk9DVVNfV0lMTF9BU1NJR05fTEFZRVJTKTsKKyAgICAgICAgICAgICAgICBpZiAoZm9jdXNDaGFuZ2VkKSB7CiAgICAgICAgICAgICAgICAgICAgIGltTWF5TW92ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIwNDEsMTAgKzIwODIsOSBAQAogICAgICAgICAgICAgLy9kdW1wKCk7CiAKICAgICAgICAgICAgIGlmIChmb2N1c0NoYW5nZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAobUN1cnJlbnRGb2N1cyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIuaGFuZGxlTmV3V2luZG93TG9ja2VkKG1DdXJyZW50Rm9jdXMpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hVcGRhdGVGb2N1c2VkV2luZG93QWZ0ZXJBc3NpZ25MYXllcnNMb2NrZWQoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAogICAgICAgICAgICAgICAgIFRBRywgIk5ldyBjbGllbnQgIiArIGNsaWVudC5hc0JpbmRlcigpCiAgICAgICAgICAgICAgICAgKyAiOiB3aW5kb3c9IiArIHdpbik7CkBAIC0yMTQ2LDEwICsyMTg2LDE0IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIHJlbW92ZVdpbmRvd0lubmVyTG9ja2VkKFNlc3Npb24gc2Vzc2lvbiwgV2luZG93U3RhdGUgd2luKSB7Ci0gICAgICAgIG1LZXlXYWl0ZXIuZmluaXNoZWRLZXkoc2Vzc2lvbiwgd2luLm1DbGllbnQsIHRydWUsCi0gICAgICAgICAgICAgICAgS2V5V2FpdGVyLlJFVFVSTl9OT1RISU5HKTsKLSAgICAgICAgbUtleVdhaXRlci5yZWxlYXNlUGVuZGluZ1BvaW50ZXJMb2NrZWQod2luLm1TZXNzaW9uKTsKLSAgICAgICAgbUtleVdhaXRlci5yZWxlYXNlUGVuZGluZ1RyYWNrYmFsbExvY2tlZCh3aW4ubVNlc3Npb24pOworICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlaW5nUmVtb3ZlZEx3KHdpbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtS2V5V2FpdGVyLmZpbmlzaGVkS2V5KHNlc3Npb24sIHdpbi5tQ2xpZW50LCB0cnVlLAorICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX05PVEhJTkcpOworICAgICAgICAgICAgbUtleVdhaXRlci5yZWxlYXNlUGVuZGluZ1BvaW50ZXJMb2NrZWQod2luLm1TZXNzaW9uKTsKKyAgICAgICAgICAgIG1LZXlXYWl0ZXIucmVsZWFzZVBlbmRpbmdUcmFja2JhbGxMb2NrZWQod2luLm1TZXNzaW9uKTsKKyAgICAgICAgfQogCiAgICAgICAgIHdpbi5tUmVtb3ZlZCA9IHRydWU7CiAKQEAgLTI1MTcsOCArMjU2MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlBbmltYXRpb25Mb2NrZWQod2luLCB0cmFuc2l0LCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c01heUNoYW5nZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luLm1FeGl0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLmZpbmlzaGVkS2V5KHNlc3Npb24sIGNsaWVudCwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVdhaXRlci5SRVRVUk5fTk9USElORyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlY29taW5nSW52aXNpYmxlTHcod2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLmZpbmlzaGVkS2V5KHNlc3Npb24sIGNsaWVudCwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX05PVEhJTkcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luLmlzQW5pbWF0aW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgaW4gYSBoaWRlIGFuaW1hdGlvbi4uLiB0dXJuIHRoaXMgaW50bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIGV4aXQuCkBAIC0yOTc5LDggKzMwMjcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW4uaXNWaXNpYmxlTm93KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseUFuaW1hdGlvbkxvY2tlZCh3aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfRVhJVCwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIuZmluaXNoZWRLZXkod2luLm1TZXNzaW9uLCB3aW4ubUNsaWVudCwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVdhaXRlci5SRVRVUk5fTk9USElORyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlaW5nUmVtb3ZlZEx3KHdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci5maW5pc2hlZEtleSh3aW4ubVNlc3Npb24sIHdpbi5tQ2xpZW50LCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVdhaXRlci5SRVRVUk5fTk9USElORyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0zMDExLDYgKzMwNjMsMjAgQEAKICAgICAgICAgICAgICAgICAiYWRkQXBwVG9rZW4oKSIpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlJlcXVpcmVzIE1BTkFHRV9BUFBfVE9LRU5TIHBlcm1pc3Npb24iKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gR2V0IHRoZSBkaXNwYXRjaGluZyB0aW1lb3V0IGhlcmUgd2hpbGUgd2UgYXJlIG5vdCBob2xkaW5nIGFueSBsb2NrcyBzbyB0aGF0IGl0CisgICAgICAgIC8vIGNhbiBiZSBjYWNoZWQgYnkgdGhlIEFwcFdpbmRvd1Rva2VuLiAgVGhlIHRpbWVvdXQgdmFsdWUgaXMgdXNlZCBsYXRlciBieSB0aGUKKyAgICAgICAgLy8gaW5wdXQgZGlzcGF0Y2hlciBpbiBjb2RlIHRoYXQgZG9lcyBob2xkIGxvY2tzLiAgSWYgd2UgZGlkIG5vdCBjYWNoZSB0aGUgdmFsdWUKKyAgICAgICAgLy8gaGVyZSB3ZSB3b3VsZCBydW4gdGhlIGNoYW5jZSBvZiBpbnRyb2R1Y2luZyBhIGRlYWRsb2NrIGJldHdlZW4gdGhlIHdpbmRvdyBtYW5hZ2VyCisgICAgICAgIC8vICh3aGljaCBob2xkcyBsb2NrcyB3aGlsZSB1cGRhdGluZyB0aGUgaW5wdXQgZGlzcGF0Y2hlciBzdGF0ZSkgYW5kIHRoZSBhY3Rpdml0eSBtYW5hZ2VyCisgICAgICAgIC8vICh3aGljaCBob2xkcyBsb2NrcyB3aGlsZSBxdWVyeWluZyB0aGUgYXBwbGljYXRpb24gdG9rZW4pLgorICAgICAgICBsb25nIGlucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3M7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnB1dERpc3BhdGNoaW5nVGltZW91dE5hbm9zID0gdG9rZW4uZ2V0S2V5RGlzcGF0Y2hpbmdUaW1lb3V0KCkgKiAxMDAwMDAwTDsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBTbG9nLncoVEFHLCAiQ291bGQgbm90IGdldCBkaXNwYXRjaGluZyB0aW1lb3V0LiIsIGV4KTsKKyAgICAgICAgICAgIGlucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MgPSBERUZBVUxUX0lOUFVUX0RJU1BBVENISU5HX1RJTUVPVVRfTkFOT1M7CisgICAgICAgIH0KIAogICAgICAgICBzeW5jaHJvbml6ZWQobVdpbmRvd01hcCkgewogICAgICAgICAgICAgQXBwV2luZG93VG9rZW4gd3Rva2VuID0gZmluZEFwcFdpbmRvd1Rva2VuKHRva2VuLmFzQmluZGVyKCkpOwpAQCAtMzAxOSw2ICszMDg1LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3dG9rZW4gPSBuZXcgQXBwV2luZG93VG9rZW4odG9rZW4pOworICAgICAgICAgICAgd3Rva2VuLmlucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MgPSBpbnB1dERpc3BhdGNoaW5nVGltZW91dE5hbm9zOwogICAgICAgICAgICAgd3Rva2VuLmdyb3VwSWQgPSBncm91cElkOwogICAgICAgICAgICAgd3Rva2VuLmFwcEZ1bGxzY3JlZW4gPSBmdWxsc2NyZWVuOwogICAgICAgICAgICAgd3Rva2VuLnJlcXVlc3RlZE9yaWVudGF0aW9uID0gcmVxdWVzdGVkT3JpZW50YXRpb247CkBAIC0zMjgyLDcgKzMzNDksMTMgQEAKICAgICAgICAgICAgICAgICBpZiAoREVCVUdfRk9DVVMpIFNsb2cudihUQUcsICJDbGVhcmluZyBmb2N1c2VkIGFwcCwgd2FzICIgKyBtRm9jdXNlZEFwcCk7CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IG1Gb2N1c2VkQXBwICE9IG51bGw7CiAgICAgICAgICAgICAgICAgbUZvY3VzZWRBcHAgPSBudWxsOwotICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIudGlja2xlKCk7CisgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iuc2V0Rm9jdXNlZEFwcEx3KG51bGwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci50aWNrbGUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFwcFdpbmRvd1Rva2VuIG5ld0ZvY3VzID0gZmluZEFwcFdpbmRvd1Rva2VuKHRva2VuKTsKICAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMgPT0gbnVsbCkgewpAQCAtMzI5Miw3ICszMzY1LDEzIEBACiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IG1Gb2N1c2VkQXBwICE9IG5ld0ZvY3VzOwogICAgICAgICAgICAgICAgIG1Gb2N1c2VkQXBwID0gbmV3Rm9jdXM7CiAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0ZPQ1VTKSBTbG9nLnYoVEFHLCAiU2V0IGZvY3VzZWQgYXBwIHRvOiAiICsgbUZvY3VzZWRBcHApOwotICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIudGlja2xlKCk7CisgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iuc2V0Rm9jdXNlZEFwcEx3KG5ld0ZvY3VzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIudGlja2xlKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobW92ZUZvY3VzTm93ICYmIGNoYW5nZWQpIHsKQEAgLTM2MDMsOCArMzY4MiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlBbmltYXRpb25Mb2NrZWQod2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfRVhJVCwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIuZmluaXNoZWRLZXkod2luLm1TZXNzaW9uLCB3aW4ubUNsaWVudCwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX05PVEhJTkcpOworICAgICAgICAgICAgICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlY29taW5nSW52aXNpYmxlTHcod2luKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIuZmluaXNoZWRLZXkod2luLm1TZXNzaW9uLCB3aW4ubUNsaWVudCwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5V2FpdGVyLlJFVFVSTl9OT1RISU5HKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zODg5LDcgKzM5NzIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0ZPQ1VTKSBTbG9nLnYoVEFHLCAiUmVtb3ZpbmcgZm9jdXNlZCBhcHAgdG9rZW46IiArIHd0b2tlbik7CiAgICAgICAgICAgICAgICAgICAgIG1Gb2N1c2VkQXBwID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRm9jdXNlZFdpbmRvd0xvY2tlZChVUERBVEVfRk9DVVNfTk9STUFMKTsKLSAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci50aWNrbGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iuc2V0Rm9jdXNlZEFwcEx3KG51bGwpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci50aWNrbGUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkF0dGVtcHRlZCB0byByZW1vdmUgbm9uLWV4aXN0aW5nIGFwcCB0b2tlbjogIiArIHRva2VuKTsKQEAgLTQzNTQsNyArNDQ0MSwxMSBAQAogICAgICAgICAgICAgICAgICJnZXRTd2l0Y2hTdGF0ZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIEtleUlucHV0UXVldWUuZ2V0U3dpdGNoU3RhdGUoc3cpOworICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXIuZ2V0U3dpdGNoU3RhdGUoc3cpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIEtleUlucHV0UXVldWUuZ2V0U3dpdGNoU3RhdGUoc3cpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIGludCBnZXRTd2l0Y2hTdGF0ZUZvckRldmljZShpbnQgZGV2aWQsIGludCBzdykgewpAQCAtNDM2Miw3ICs0NDUzLDExIEBACiAgICAgICAgICAgICAgICAgImdldFN3aXRjaFN0YXRlRm9yRGV2aWNlKCkiKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCJSZXF1aXJlcyBSRUFEX0lOUFVUX1NUQVRFIHBlcm1pc3Npb24iKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gS2V5SW5wdXRRdWV1ZS5nZXRTd2l0Y2hTdGF0ZShkZXZpZCwgc3cpOworICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXIuZ2V0U3dpdGNoU3RhdGUoZGV2aWQsIHN3KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBLZXlJbnB1dFF1ZXVlLmdldFN3aXRjaFN0YXRlKGRldmlkLCBzdyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgaW50IGdldFNjYW5jb2RlU3RhdGUoaW50IHN3KSB7CkBAIC00MzcwLDcgKzQ0NjUsMTEgQEAKICAgICAgICAgICAgICAgICAiZ2V0U2NhbmNvZGVTdGF0ZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRTY2FuY29kZVN0YXRlKHN3KTsKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5wdXRNYW5hZ2VyLmdldFNjYW5jb2RlU3RhdGUoc3cpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRTY2FuY29kZVN0YXRlKHN3KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0U2NhbmNvZGVTdGF0ZUZvckRldmljZShpbnQgZGV2aWQsIGludCBzdykgewpAQCAtNDM3OCw3ICs0NDc3LDExIEBACiAgICAgICAgICAgICAgICAgImdldFNjYW5jb2RlU3RhdGVGb3JEZXZpY2UoKSIpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlJlcXVpcmVzIFJFQURfSU5QVVRfU1RBVEUgcGVybWlzc2lvbiIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtUXVldWUuZ2V0U2NhbmNvZGVTdGF0ZShkZXZpZCwgc3cpOworICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXIuZ2V0U2NhbmNvZGVTdGF0ZShkZXZpZCwgc3cpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRTY2FuY29kZVN0YXRlKGRldmlkLCBzdyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgaW50IGdldFRyYWNrYmFsbFNjYW5jb2RlU3RhdGUoaW50IHN3KSB7CkBAIC00Mzg2LDcgKzQ0ODksMTEgQEAKICAgICAgICAgICAgICAgICAiZ2V0VHJhY2tiYWxsU2NhbmNvZGVTdGF0ZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRUcmFja2JhbGxTY2FuY29kZVN0YXRlKHN3KTsKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5wdXRNYW5hZ2VyLmdldFRyYWNrYmFsbFNjYW5jb2RlU3RhdGUoc3cpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRUcmFja2JhbGxTY2FuY29kZVN0YXRlKHN3KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0RFBhZFNjYW5jb2RlU3RhdGUoaW50IHN3KSB7CkBAIC00Mzk0LDcgKzQ1MDEsMTEgQEAKICAgICAgICAgICAgICAgICAiZ2V0RFBhZFNjYW5jb2RlU3RhdGUoKSIpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlJlcXVpcmVzIFJFQURfSU5QVVRfU1RBVEUgcGVybWlzc2lvbiIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtUXVldWUuZ2V0RFBhZFNjYW5jb2RlU3RhdGUoc3cpOworICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXIuZ2V0RFBhZFNjYW5jb2RlU3RhdGUoc3cpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXREUGFkU2NhbmNvZGVTdGF0ZShzdyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgaW50IGdldEtleWNvZGVTdGF0ZShpbnQgc3cpIHsKQEAgLTQ0MDIsNyArNDUxMywxMSBAQAogICAgICAgICAgICAgICAgICJnZXRLZXljb2RlU3RhdGUoKSIpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlJlcXVpcmVzIFJFQURfSU5QVVRfU1RBVEUgcGVybWlzc2lvbiIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtUXVldWUuZ2V0S2V5Y29kZVN0YXRlKHN3KTsKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5wdXRNYW5hZ2VyLmdldEtleWNvZGVTdGF0ZShzdyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbVF1ZXVlLmdldEtleWNvZGVTdGF0ZShzdyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgaW50IGdldEtleWNvZGVTdGF0ZUZvckRldmljZShpbnQgZGV2aWQsIGludCBzdykgewpAQCAtNDQxMCw3ICs0NTI1LDExIEBACiAgICAgICAgICAgICAgICAgImdldEtleWNvZGVTdGF0ZUZvckRldmljZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRLZXljb2RlU3RhdGUoZGV2aWQsIHN3KTsKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5wdXRNYW5hZ2VyLmdldEtleWNvZGVTdGF0ZShkZXZpZCwgc3cpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRLZXljb2RlU3RhdGUoZGV2aWQsIHN3KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0VHJhY2tiYWxsS2V5Y29kZVN0YXRlKGludCBzdykgewpAQCAtNDQxOCw3ICs0NTM3LDExIEBACiAgICAgICAgICAgICAgICAgImdldFRyYWNrYmFsbEtleWNvZGVTdGF0ZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRUcmFja2JhbGxLZXljb2RlU3RhdGUoc3cpOworICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXIuZ2V0VHJhY2tiYWxsS2V5Y29kZVN0YXRlKHN3KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBtUXVldWUuZ2V0VHJhY2tiYWxsS2V5Y29kZVN0YXRlKHN3KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0RFBhZEtleWNvZGVTdGF0ZShpbnQgc3cpIHsKQEAgLTQ0MjYsMTEgKzQ1NDksMTkgQEAKICAgICAgICAgICAgICAgICAiZ2V0RFBhZEtleWNvZGVTdGF0ZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXREUGFkS2V5Y29kZVN0YXRlKHN3KTsKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5wdXRNYW5hZ2VyLmdldERQYWRLZXljb2RlU3RhdGUoc3cpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXREUGFkS2V5Y29kZVN0YXRlKHN3KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBib29sZWFuIGhhc0tleXMoaW50W10ga2V5Y29kZXMsIGJvb2xlYW5bXSBrZXlFeGlzdHMpIHsKLSAgICAgICAgcmV0dXJuIEtleUlucHV0UXVldWUuaGFzS2V5cyhrZXljb2Rlcywga2V5RXhpc3RzKTsKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5wdXRNYW5hZ2VyLmhhc0tleXMoa2V5Y29kZXMsIGtleUV4aXN0cyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gS2V5SW5wdXRRdWV1ZS5oYXNLZXlzKGtleWNvZGVzLCBrZXlFeGlzdHMpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgZW5hYmxlU2NyZWVuQWZ0ZXJCb290KCkgewpAQCAtNDU3NSw3ICs0NzA2LDExIEBACiAgICAgICAgICAgICBtTGF5b3V0TmVlZGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHN0YXJ0RnJlZXppbmdEaXNwbGF5TG9ja2VkKCk7CiAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiU2V0dGluZyByb3RhdGlvbiB0byAiICsgcm90YXRpb24gKyAiLCBhbmltRmxhZ3M9IiArIGFuaW1GbGFncyk7Ci0gICAgICAgICAgICBtUXVldWUuc2V0T3JpZW50YXRpb24ocm90YXRpb24pOworICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyLnNldERpc3BsYXlPcmllbnRhdGlvbigwLCByb3RhdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1RdWV1ZS5zZXRPcmllbnRhdGlvbihyb3RhdGlvbik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobURpc3BsYXlFbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgU3VyZmFjZS5zZXRPcmllbnRhdGlvbigwLCByb3RhdGlvbiwgYW5pbUZsYWdzKTsKICAgICAgICAgICAgIH0KQEAgLTQ5MDYsNyArNTA0MSwxMSBAQAogICAgICAgICBpZiAobURpc3BsYXkgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIG1RdWV1ZS5nZXRJbnB1dENvbmZpZ3VyYXRpb24oY29uZmlnKTsKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIG1JbnB1dE1hbmFnZXIuZ2V0SW5wdXRDb25maWd1cmF0aW9uKGNvbmZpZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtUXVldWUuZ2V0SW5wdXRDb25maWd1cmF0aW9uKGNvbmZpZyk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBVc2UgdGhlIGVmZmVjdGl2ZSAidmlzdWFsIiBkaW1lbnNpb25zIGJhc2VkIG9uIGN1cnJlbnQgcm90YXRpb24KICAgICAgICAgZmluYWwgYm9vbGVhbiByb3RhdGVkID0gKG1Sb3RhdGlvbiA9PSBTdXJmYWNlLlJPVEFUSU9OXzkwCkBAIC00OTQ5LDggKzUwODgsMTIgQEAKICAgICAgICAgICAgICAgICBtU2NyZWVuTGF5b3V0ID0gQ29uZmlndXJhdGlvbi5TQ1JFRU5MQVlPVVRfU0laRV9TTUFMTAogICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25maWd1cmF0aW9uLlNDUkVFTkxBWU9VVF9MT05HX05POwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBJcyB0aGlzIGEgbGFyZ2Ugc2NyZWVuPwotICAgICAgICAgICAgICAgIGlmIChsb25nU2l6ZSA+IDY0MCAmJiBzaG9ydFNpemUgPj0gNDgwKSB7CisgICAgICAgICAgICAgICAgLy8gV2hhdCBzaXplIGlzIHRoaXMgc2NyZWVuIHNjcmVlbj8KKyAgICAgICAgICAgICAgICBpZiAobG9uZ1NpemUgPj0gODAwICYmIHNob3J0U2l6ZSA+PSA2MDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU1ZHQSBvciBsYXJnZXIgc2NyZWVucyBhdCBtZWRpdW0gZGVuc2l0eSBhcmUgdGhlIHBvaW50CisgICAgICAgICAgICAgICAgICAgIC8vIGF0IHdoaWNoIHdlIGNvbnNpZGVyIGl0IHRvIGJlIGFuIGV4dHJhIGxhcmdlIHNjcmVlbi4KKyAgICAgICAgICAgICAgICAgICAgbVNjcmVlbkxheW91dCA9IENvbmZpZ3VyYXRpb24uU0NSRUVOTEFZT1VUX1NJWkVfWExBUkdFOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9uZ1NpemUgPj0gNjQwICYmIHNob3J0U2l6ZSA+PSA0ODApIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVkdBIG9yIGxhcmdlciBzY3JlZW5zIGF0IG1lZGl1bSBkZW5zaXR5IGFyZSB0aGUgcG9pbnQKICAgICAgICAgICAgICAgICAgICAgLy8gYXQgd2hpY2ggd2UgY29uc2lkZXIgaXQgdG8gYmUgYSBsYXJnZSBzY3JlZW4uCiAgICAgICAgICAgICAgICAgICAgIG1TY3JlZW5MYXlvdXQgPSBDb25maWd1cmF0aW9uLlNDUkVFTkxBWU9VVF9TSVpFX0xBUkdFOwpAQCAtNDk4MSwxMCArNTEyNCwzNzcgQEAKICAgICAgICAgbVBvbGljeS5hZGp1c3RDb25maWd1cmF0aW9uTHcoY29uZmlnKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCisgICAgCiAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIElucHV0IEV2ZW50cyBhbmQgRm9jdXMgTWFuYWdlbWVudAogICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBJbnB1dE1vbml0b3IgbUlucHV0TW9uaXRvciA9IG5ldyBJbnB1dE1vbml0b3IoKTsKKyAgICAKKyAgICAvKiBUcmFja3MgdGhlIHByb2dyZXNzIG9mIGlucHV0IGRpc3BhdGNoIGFuZCBlbnN1cmVzIHRoYXQgaW5wdXQgZGlzcGF0Y2ggc3RhdGUKKyAgICAgKiBpcyBrZXB0IGluIHN5bmMgd2l0aCBjaGFuZ2VzIGluIHdpbmRvdyBmb2N1cywgdmlzaWJpbGl0eSwgcmVnaXN0cmF0aW9uLCBhbmQKKyAgICAgKiBvdGhlciByZWxldmFudCBXaW5kb3cgTWFuYWdlciBzdGF0ZSB0cmFuc2l0aW9ucy4gKi8KKyAgICBmaW5hbCBjbGFzcyBJbnB1dE1vbml0b3IgeworICAgICAgICAvLyBDdXJyZW50IHdpbmRvdyB3aXRoIGlucHV0IGZvY3VzIGZvciBrZXlzIGFuZCBvdGhlciBub24tdG91Y2ggZXZlbnRzLiAgTWF5IGJlIG51bGwuCisgICAgICAgIHByaXZhdGUgV2luZG93U3RhdGUgbUlucHV0Rm9jdXM7CisgICAgICAgIAorICAgICAgICAvLyBXaGVuIHRydWUsIHByZXZlbnRzIGlucHV0IGRpc3BhdGNoIGZyb20gcHJvY2VlZGluZyB1bnRpbCBzZXQgdG8gZmFsc2UgYWdhaW4uCisgICAgICAgIHByaXZhdGUgYm9vbGVhbiBtSW5wdXREaXNwYXRjaEZyb3plbjsKKyAgICAgICAgCisgICAgICAgIC8vIFdoZW4gdHJ1ZSwgaW5wdXQgZGlzcGF0Y2ggcHJvY2VlZHMgbm9ybWFsbHkuICBPdGhlcndpc2UgYWxsIGV2ZW50cyBhcmUgZHJvcHBlZC4KKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1JbnB1dERpc3BhdGNoRW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgLy8gVGVtcG9yYXJ5IGxpc3Qgb2Ygd2luZG93cyBpbmZvcm1hdGlvbiB0byBwcm92aWRlIHRvIHRoZSBpbnB1dCBkaXNwYXRjaGVyLgorICAgICAgICBwcml2YXRlIElucHV0V2luZG93TGlzdCBtVGVtcElucHV0V2luZG93cyA9IG5ldyBJbnB1dFdpbmRvd0xpc3QoKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRlbXBvcmFyeSBpbnB1dCBhcHBsaWNhdGlvbiBvYmplY3QgdG8gcHJvdmlkZSB0byB0aGUgaW5wdXQgZGlzcGF0Y2hlci4KKyAgICAgICAgcHJpdmF0ZSBJbnB1dEFwcGxpY2F0aW9uIG1UZW1wSW5wdXRBcHBsaWNhdGlvbiA9IG5ldyBJbnB1dEFwcGxpY2F0aW9uKCk7CisgICAgICAgIAorICAgICAgICAvKiBOb3RpZmllcyB0aGUgd2luZG93IG1hbmFnZXIgYWJvdXQgYSBicm9rZW4gaW5wdXQgY2hhbm5lbC4KKyAgICAgICAgICogCisgICAgICAgICAqIENhbGxlZCBieSB0aGUgSW5wdXRNYW5hZ2VyLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgbm90aWZ5SW5wdXRDaGFubmVsQnJva2VuKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVdpbmRvd01hcCkgeworICAgICAgICAgICAgICAgIFdpbmRvd1N0YXRlIHdpbmRvd1N0YXRlID0gZ2V0V2luZG93U3RhdGVGb3JJbnB1dENoYW5uZWxMb2NrZWQoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93U3RhdGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGlycmVsZXZhbnQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIldJTkRPVyBESUVEICIgKyB3aW5kb3dTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVtb3ZlV2luZG93TG9ja2VkKHdpbmRvd1N0YXRlLm1TZXNzaW9uLCB3aW5kb3dTdGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qIE5vdGlmaWVzIHRoZSB3aW5kb3cgbWFuYWdlciBhYm91dCBhbiBpbnB1dCBjaGFubmVsIHRoYXQgaXMgbm90IHJlc3BvbmRpbmcuCisgICAgICAgICAqIFRoZSBtZXRob2QgY2FuIGVpdGhlciBjYXVzZSBkaXNwYXRjaGluZyB0byBiZSBhYm9ydGVkIGJ5IHJldHVybmluZyAtMiBvcgorICAgICAgICAgKiByZXR1cm4gYSBuZXcgdGltZW91dCBpbiBuYW5vc2Vjb25kcy4KKyAgICAgICAgICogCisgICAgICAgICAqIENhbGxlZCBieSB0aGUgSW5wdXRNYW5hZ2VyLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGxvbmcgbm90aWZ5SW5wdXRDaGFubmVsQU5SKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIEFwcFdpbmRvd1Rva2VuIHRva2VuOworICAgICAgICAgICAgc3luY2hyb25pemVkIChtV2luZG93TWFwKSB7CisgICAgICAgICAgICAgICAgV2luZG93U3RhdGUgd2luZG93U3RhdGUgPSBnZXRXaW5kb3dTdGF0ZUZvcklucHV0Q2hhbm5lbExvY2tlZChpbnB1dENoYW5uZWwpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3dTdGF0ZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMjsgLy8gaXJyZWxldmFudCwgYWJvcnQgZGlzcGF0Y2hpbmcgKC0yKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiSW5wdXQgZXZlbnQgZGlzcGF0Y2hpbmcgdGltZWQgb3V0IHNlbmRpbmcgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgKyB3aW5kb3dTdGF0ZS5tQXR0cnMuZ2V0VGl0bGUoKSk7CisgICAgICAgICAgICAgICAgdG9rZW4gPSB3aW5kb3dTdGF0ZS5tQXBwVG9rZW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBub3RpZnlBTlJJbnRlcm5hbCh0b2tlbik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLyogTm90aWZpZXMgdGhlIHdpbmRvdyBtYW5hZ2VyIGFib3V0IGFuIGlucHV0IGNoYW5uZWwgc3BvbnRhbmVvdXNseSByZWNvdmVyaW5nIGZyb20gQU5SCisgICAgICAgICAqIGJ5IHN1Y2Nlc3NmdWxseSBkZWxpdmVyaW5nIHRoZSBldmVudCB0aGF0IG9yaWdpbmFsbHkgdGltZWQgb3V0LgorICAgICAgICAgKiAKKyAgICAgICAgICogQ2FsbGVkIGJ5IHRoZSBJbnB1dE1hbmFnZXIuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5SKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8ganVzdCBub3cuCisgICAgICAgICAgICAvLyBKdXN0IHdhaXQgZm9yIHRoZSB1c2VyIHRvIGRpc21pc3MgdGhlIEFOUiBkaWFsb2cuCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qIE5vdGlmaWVzIHRoZSB3aW5kb3cgbWFuYWdlciBhYm91dCBhbiBhcHBsaWNhdGlvbiB0aGF0IGlzIG5vdCByZXNwb25kaW5nCisgICAgICAgICAqIGluIGdlbmVyYWwgcmF0aGVyIHRoYW4gd2l0aCByZXNwZWN0IHRvIGEgcGFydGljdWxhciBpbnB1dCBjaGFubmVsLgorICAgICAgICAgKiBUaGUgbWV0aG9kIGNhbiBlaXRoZXIgY2F1c2UgZGlzcGF0Y2hpbmcgdG8gYmUgYWJvcnRlZCBieSByZXR1cm5pbmcgLTIgb3IKKyAgICAgICAgICogcmV0dXJuIGEgbmV3IHRpbWVvdXQgaW4gbmFub3NlY29uZHMuCisgICAgICAgICAqIAorICAgICAgICAgKiBDYWxsZWQgYnkgdGhlIElucHV0TWFuYWdlci4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBsb25nIG5vdGlmeUFOUihPYmplY3QgdG9rZW4pIHsKKyAgICAgICAgICAgIEFwcFdpbmRvd1Rva2VuIGFwcFdpbmRvd1Rva2VuID0gKEFwcFdpbmRvd1Rva2VuKSB0b2tlbjsKKworICAgICAgICAgICAgU2xvZy5pKFRBRywgIklucHV0IGV2ZW50IGRpc3BhdGNoaW5nIHRpbWVkIG91dCBzZW5kaW5nIHRvIGFwcGxpY2F0aW9uICIKKyAgICAgICAgICAgICAgICAgICAgKyBhcHBXaW5kb3dUb2tlbi5zdHJpbmdOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBub3RpZnlBTlJJbnRlcm5hbChhcHBXaW5kb3dUb2tlbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaXZhdGUgbG9uZyBub3RpZnlBTlJJbnRlcm5hbChBcHBXaW5kb3dUb2tlbiB0b2tlbikgeworICAgICAgICAgICAgaWYgKHRva2VuICE9IG51bGwgJiYgdG9rZW4uYXBwVG9rZW4gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vdGlmeSB0aGUgYWN0aXZpdHkgbWFuYWdlciBhYm91dCB0aGUgdGltZW91dCBhbmQgbGV0IGl0IGRlY2lkZSB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgIC8vIHRvIGFib3J0IGRpc3BhdGNoaW5nIG9yIGtlZXAgd2FpdGluZy4KKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBhYm9ydCA9IHRva2VuLmFwcFRva2VuLmtleURpc3BhdGNoaW5nVGltZWRPdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEgYWJvcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBhY3Rpdml0eSBtYW5hZ2VyIGRlY2xpbmVkIHRvIGFib3J0IGRpc3BhdGNoaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FpdCBhIGJpdCBsb25nZXIgYW5kIHRpbWVvdXQgYWdhaW4gbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4uaW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMjsgLy8gYWJvcnQgZGlzcGF0Y2hpbmcKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBXaW5kb3dTdGF0ZSBnZXRXaW5kb3dTdGF0ZUZvcklucHV0Q2hhbm5lbChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1XaW5kb3dNYXApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V2luZG93U3RhdGVGb3JJbnB1dENoYW5uZWxMb2NrZWQoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBXaW5kb3dTdGF0ZSBnZXRXaW5kb3dTdGF0ZUZvcklucHV0Q2hhbm5lbExvY2tlZChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKSB7CisgICAgICAgICAgICBpbnQgd2luZG93Q291bnQgPSBtV2luZG93cy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpbmRvd0NvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSB3aW5kb3dTdGF0ZSA9IChXaW5kb3dTdGF0ZSkgbVdpbmRvd3MuZ2V0KGkpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3dTdGF0ZS5tSW5wdXRDaGFubmVsID09IGlucHV0Q2hhbm5lbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93U3RhdGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogVXBkYXRlcyB0aGUgY2FjaGVkIHdpbmRvdyBpbmZvcm1hdGlvbiBwcm92aWRlZCB0byB0aGUgaW5wdXQgZGlzcGF0Y2hlci4gKi8KKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlSW5wdXRXaW5kb3dzTHcoKSB7CisgICAgICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgaW5wdXQgd2luZG93IGxpc3Qgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBhbGwgb2YgdGhlIHdpbmRvd3MgdGhhdAorICAgICAgICAgICAgLy8gY291bGQgcG90ZW50aWFsbHkgcmVjZWl2ZSBpbnB1dC4KKyAgICAgICAgICAgIC8vIEFzIGFuIG9wdGltaXphdGlvbiwgd2UgY291bGQgdHJ5IHRvIHBydW5lIHRoZSBsaXN0IG9mIHdpbmRvd3MgYnV0IHRoaXMgdHVybnMKKyAgICAgICAgICAgIC8vIG91dCB0byBiZSBkaWZmaWN1bHQgYmVjYXVzZSBvbmx5IHRoZSBuYXRpdmUgY29kZSBrbm93cyBmb3Igc3VyZSB3aGljaCB3aW5kb3cKKyAgICAgICAgICAgIC8vIGN1cnJlbnRseSBoYXMgdG91Y2ggZm9jdXMuCisgICAgICAgICAgICBmaW5hbCBBcnJheUxpc3Qgd2luZG93cyA9IG1XaW5kb3dzOworICAgICAgICAgICAgZmluYWwgaW50IE4gPSB3aW5kb3dzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBOIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBXaW5kb3dTdGF0ZSBjaGlsZCA9IChXaW5kb3dTdGF0ZSkgd2luZG93cy5nZXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkLm1JbnB1dENoYW5uZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIHRoaXMgd2luZG93IGJlY2F1c2UgaXQgY2Fubm90IHBvc3NpYmx5IHJlY2VpdmUgaW5wdXQuCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZmxhZ3MgPSBjaGlsZC5tQXR0cnMuZmxhZ3M7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IHR5cGUgPSBjaGlsZC5tQXR0cnMudHlwZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGhhc0ZvY3VzID0gKGNoaWxkID09IG1JbnB1dEZvY3VzKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGlzVmlzaWJsZSA9IGNoaWxkLmlzVmlzaWJsZUx3KCk7CisgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBoYXNXYWxscGFwZXIgPSAoY2hpbGQgPT0gbVdhbGxwYXBlclRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICh0eXBlICE9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfS0VZR1VBUkQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEFkZCBhIHdpbmRvdyB0byBvdXIgbGlzdCBvZiBpbnB1dCB3aW5kb3dzLgorICAgICAgICAgICAgICAgIGZpbmFsIElucHV0V2luZG93IGlucHV0V2luZG93ID0gbVRlbXBJbnB1dFdpbmRvd3MuYWRkKCk7CisgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cuaW5wdXRDaGFubmVsID0gY2hpbGQubUlucHV0Q2hhbm5lbDsKKyAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy5sYXlvdXRQYXJhbXNGbGFncyA9IGZsYWdzOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93LmxheW91dFBhcmFtc1R5cGUgPSB0eXBlOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93LmRpc3BhdGNoaW5nVGltZW91dE5hbm9zID0gY2hpbGQuZ2V0SW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vcygpOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnZpc2libGUgPSBpc1Zpc2libGU7CisgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cuaGFzRm9jdXMgPSBoYXNGb2N1czsKKyAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy5oYXNXYWxscGFwZXIgPSBoYXNXYWxscGFwZXI7CisgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cucGF1c2VkID0gY2hpbGQubUFwcFRva2VuICE9IG51bGwgPyBjaGlsZC5tQXBwVG9rZW4ucGF1c2VkIDogZmFsc2U7CisgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cub3duZXJQaWQgPSBjaGlsZC5tU2Vzc2lvbi5tUGlkOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93Lm93bmVyVWlkID0gY2hpbGQubVNlc3Npb24ubVVpZDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWN0IGZyYW1lID0gY2hpbGQubUZyYW1lOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93LmZyYW1lTGVmdCA9IGZyYW1lLmxlZnQ7CisgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cuZnJhbWVUb3AgPSBmcmFtZS50b3A7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3dpdGNoIChjaGlsZC5tVG91Y2hhYmxlSW5zZXRzKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVmlld1RyZWVPYnNlcnZlci5JbnRlcm5hbEluc2V0c0luZm8uVE9VQ0hBQkxFX0lOU0VUU19GUkFNRToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnRvdWNoYWJsZUFyZWFMZWZ0ID0gZnJhbWUubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnRvdWNoYWJsZUFyZWFUb3AgPSBmcmFtZS50b3A7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhUmlnaHQgPSBmcmFtZS5yaWdodDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnRvdWNoYWJsZUFyZWFCb3R0b20gPSBmcmFtZS5ib3R0b207CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjYXNlIFZpZXdUcmVlT2JzZXJ2ZXIuSW50ZXJuYWxJbnNldHNJbmZvLlRPVUNIQUJMRV9JTlNFVFNfQ09OVEVOVDogeworICAgICAgICAgICAgICAgICAgICAgICAgUmVjdCBpbnNldCA9IGNoaWxkLm1HaXZlbkNvbnRlbnRJbnNldHM7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhTGVmdCA9IGZyYW1lLmxlZnQgKyBpbnNldC5sZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cudG91Y2hhYmxlQXJlYVRvcCA9IGZyYW1lLnRvcCArIGluc2V0LnRvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnRvdWNoYWJsZUFyZWFSaWdodCA9IGZyYW1lLnJpZ2h0IC0gaW5zZXQucmlnaHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhQm90dG9tID0gZnJhbWUuYm90dG9tIC0gaW5zZXQuYm90dG9tOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjYXNlIFZpZXdUcmVlT2JzZXJ2ZXIuSW50ZXJuYWxJbnNldHNJbmZvLlRPVUNIQUJMRV9JTlNFVFNfVklTSUJMRTogeworICAgICAgICAgICAgICAgICAgICAgICAgUmVjdCBpbnNldCA9IGNoaWxkLm1HaXZlblZpc2libGVJbnNldHM7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhTGVmdCA9IGZyYW1lLmxlZnQgKyBpbnNldC5sZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cudG91Y2hhYmxlQXJlYVRvcCA9IGZyYW1lLnRvcCArIGluc2V0LnRvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnRvdWNoYWJsZUFyZWFSaWdodCA9IGZyYW1lLnJpZ2h0IC0gaW5zZXQucmlnaHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhQm90dG9tID0gZnJhbWUuYm90dG9tIC0gaW5zZXQuYm90dG9tOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNlbmQgd2luZG93cyB0byBuYXRpdmUgY29kZS4KKyAgICAgICAgICAgIG1JbnB1dE1hbmFnZXIuc2V0SW5wdXRXaW5kb3dzKG1UZW1wSW5wdXRXaW5kb3dzLnRvTnVsbFRlcm1pbmF0ZWRBcnJheSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3QgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBuZXh0IHJvdW5kLgorICAgICAgICAgICAgLy8gQWxzbyBhdm9pZHMga2VlcGluZyBJbnB1dENoYW5uZWwgb2JqZWN0cyByZWZlcmVuY2VkIHVubmVjZXNzYXJpbHkuCisgICAgICAgICAgICBtVGVtcElucHV0V2luZG93cy5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiBOb3RpZmllcyB0aGF0IGFuIGFwcCBzd2l0Y2gga2V5IChCQUNLIC8gSE9NRSkgaGFzIGp1c3QgYmVlbiBwcmVzc2VkLgorICAgICAgICAgKiBUaGlzIGVzc2VudGlhbGx5IHN0YXJ0cyBhIC41IHNlY29uZCB0aW1lb3V0IGZvciB0aGUgYXBwbGljYXRpb24gdG8gcHJvY2VzcworICAgICAgICAgKiBzdWJzZXF1ZW50IGlucHV0IGV2ZW50cyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgYXBwIHN3aXRjaCB0byBvY2N1ci4gIElmIGl0IHRha2VzIGxvbmdlcgorICAgICAgICAgKiB0aGFuIHRoaXMsIHRoZSBwZW5kaW5nIGV2ZW50cyB3aWxsIGJlIGRyb3BwZWQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlBcHBTd2l0Y2hDb21pbmcoKSB7CisgICAgICAgICAgICAvLyBUT0RPIE5vdCBpbXBsZW1lbnRlZCB5ZXQuICBTaG91bGQgZ28gaW4gdGhlIG5hdGl2ZSBzaWRlLgorICAgICAgICB9CisKKyAgICAgICAgLyogUHJvdmlkZXMgYW4gb3Bwb3J0dW5pdHkgZm9yIHRoZSB3aW5kb3cgbWFuYWdlciBwb2xpY3kgdG8gaW50ZXJjZXB0IGVhcmx5IGtleQorICAgICAgICAgKiBwcm9jZXNzaW5nIGFzIHNvb24gYXMgdGhlIGtleSBoYXMgYmVlbiByZWFkIGZyb20gdGhlIGRldmljZS4gKi8KKyAgICAgICAgcHVibGljIGludCBpbnRlcmNlcHRLZXlCZWZvcmVRdWV1ZWluZyhpbnQgZGV2aWNlSWQsIGludCB0eXBlLCBpbnQgc2NhbkNvZGUsCisgICAgICAgICAgICAgICAgaW50IGtleUNvZGUsIGludCBwb2xpY3lGbGFncywgaW50IHZhbHVlLCBsb25nIHdoZW5OYW5vcywgYm9vbGVhbiBpc1NjcmVlbk9uKSB7CisgICAgICAgICAgICBSYXdJbnB1dEV2ZW50IGV2ZW50ID0gbmV3IFJhd0lucHV0RXZlbnQoKTsKKyAgICAgICAgICAgIGV2ZW50LmRldmljZUlkID0gZGV2aWNlSWQ7CisgICAgICAgICAgICBldmVudC50eXBlID0gdHlwZTsKKyAgICAgICAgICAgIGV2ZW50LnNjYW5jb2RlID0gc2NhbkNvZGU7CisgICAgICAgICAgICBldmVudC5rZXljb2RlID0ga2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50LmZsYWdzID0gcG9saWN5RmxhZ3M7CisgICAgICAgICAgICBldmVudC52YWx1ZSA9IHZhbHVlOworICAgICAgICAgICAgZXZlbnQud2hlbiA9IHdoZW5OYW5vcyAvIDEwMDAwMDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBtUG9saWN5LmludGVyY2VwdEtleVRxKGV2ZW50LCBpc1NjcmVlbk9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogUHJvdmlkZXMgYW4gb3Bwb3J0dW5pdHkgZm9yIHRoZSB3aW5kb3cgbWFuYWdlciBwb2xpY3kgdG8gcHJvY2VzcyBhIGtleSBiZWZvcmUKKyAgICAgICAgICogb3JkaW5hcnkgZGlzcGF0Y2guICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nKElucHV0Q2hhbm5lbCBmb2N1cywgaW50IGtleUNvZGUsCisgICAgICAgICAgICAgICAgaW50IG1ldGFTdGF0ZSwgYm9vbGVhbiBkb3duLCBpbnQgcmVwZWF0Q291bnQsIGludCBwb2xpY3lGbGFncykgeworICAgICAgICAgICAgV2luZG93U3RhdGUgd2luZG93U3RhdGUgPSBnZXRXaW5kb3dTdGF0ZUZvcklucHV0Q2hhbm5lbChmb2N1cyk7CisgICAgICAgICAgICByZXR1cm4gbVBvbGljeS5pbnRlcmNlcHRLZXlUaSh3aW5kb3dTdGF0ZSwga2V5Q29kZSwgbWV0YVN0YXRlLCBkb3duLCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgcG9saWN5RmxhZ3MpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiBDYWxsZWQgd2hlbiB0aGUgY3VycmVudCBpbnB1dCBmb2N1cyBjaGFuZ2VzLgorICAgICAgICAgKiBMYXllciBhc3NpZ25tZW50IGlzIGFzc3VtZWQgdG8gYmUgY29tcGxldGUgYnkgdGhlIHRpbWUgdGhpcyBpcyBjYWxsZWQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBzZXRJbnB1dEZvY3VzTHcoV2luZG93U3RhdGUgbmV3V2luZG93KSB7CisgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAiSW5wdXQgZm9jdXMgaGFzIGNoYW5nZWQgdG8gIiArIG5ld1dpbmRvdyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChuZXdXaW5kb3cgIT0gbUlucHV0Rm9jdXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3V2luZG93ICE9IG51bGwgJiYgbmV3V2luZG93LmNhblJlY2VpdmVLZXlzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyBpbnB1dCBmb2N1cyBpcyBhbiBlcnJvciB3aW5kb3cgb3IgYXBwZWFycyBhYm92ZSB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dCBmb2N1cywgcHJlZW1wdCBhbnkgcGVuZGluZyBzeW5jaHJvbm91cyBkaXNwYXRjaCBzbyB0aGF0IHdlIGNhbgorICAgICAgICAgICAgICAgICAgICAvLyBzdGFydCBkZWxpdmVyaW5nIGV2ZW50cyB0byB0aGUgbmV3IGlucHV0IGZvY3VzIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgICAgIGlmICgobmV3V2luZG93Lm1BdHRycy5mbGFncyAmIEZMQUdfU1lTVEVNX0VSUk9SKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiTmV3IFNZU1RFTV9FUlJPUiB3aW5kb3c7IHJlc2V0dGluZyBzdGF0ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdElucHV0RGlzcGF0Y2hMdygpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1JbnB1dEZvY3VzICE9IG51bGwgJiYgbmV3V2luZG93Lm1MYXllciA+IG1JbnB1dEZvY3VzLm1MYXllcikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy52KFRBRywgIlRyYW5zZmVycmluZyBmb2N1cyB0byBuZXcgd2luZG93IGF0IGhpZ2hlciBsYXllcjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAib2xkIHdpbiBsYXllcj0iICsgbUlucHV0Rm9jdXMubUxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIG5ldyB3aW4gbGF5ZXI9IiArIG5ld1dpbmRvdy5tTGF5ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdElucHV0RGlzcGF0Y2hMdygpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBEaXNwbGF5aW5nIGEgd2luZG93IGltcGxpY2l0bHkgY2F1c2VzIGRpc3BhdGNoaW5nIHRvIGJlIHVucGF1c2VkLgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRvIHByb3RlY3QgYWdhaW5zdCBidWdzIGlmIHNvbWVvbmUgcGF1c2VzIGRpc3BhdGNoaW5nIGJ1dAorICAgICAgICAgICAgICAgICAgICAvLyBmb3JnZXRzIHRvIHJlc3VtZS4KKyAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93Lm1Ub2tlbi5wYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtSW5wdXRGb2N1cyA9IG5ld1dpbmRvdzsKKyAgICAgICAgICAgICAgICB1cGRhdGVJbnB1dFdpbmRvd3NMdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dJc0JlY29taW5nSW52aXNpYmxlTHcoV2luZG93U3RhdGUgd2luZG93KSB7CisgICAgICAgICAgICAvLyBUaGUgd2luZG93IGlzIGJlY29taW5nIGludmlzaWJsZS4gIFByZWVtcHQgaW5wdXQgZGlzcGF0Y2ggaW4gcHJvZ3Jlc3MKKyAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIG5leHQgd2luZG93IGJlbG93IGNhbiByZWNlaXZlIGZvY3VzLgorICAgICAgICAgICAgaWYgKHdpbmRvdyA9PSBtSW5wdXRGb2N1cykgeworICAgICAgICAgICAgICAgIG1JbnB1dEZvY3VzID0gbnVsbDsKKyAgICAgICAgICAgICAgICBwcmVlbXB0SW5wdXREaXNwYXRjaEx3KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVwZGF0ZUlucHV0V2luZG93c0x3KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qIFRlbGxzIHRoZSBkaXNwYXRjaGVyIHRvIHN0b3Agd2FpdGluZyBmb3IgaXRzIGN1cnJlbnQgc3luY2hyb25vdXMgZXZlbnQgdGFyZ2V0cy4KKyAgICAgICAgICogRXNzZW50aWFsbHksIGp1c3QgbWFrZXMgdGhvc2UgZGlzcGF0Y2hlcyBhc3luY2hyb25vdXMgc28gYSBuZXcgZGlzcGF0Y2ggY3ljbGUKKyAgICAgICAgICogY2FuIGJlZ2luLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIHByZWVtcHRJbnB1dERpc3BhdGNoTHcoKSB7CisgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyLnByZWVtcHRJbnB1dERpc3BhdGNoKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEZvY3VzZWRBcHBMdyhBcHBXaW5kb3dUb2tlbiBuZXdBcHApIHsKKyAgICAgICAgICAgIC8vIEZvY3VzZWQgYXBwIGhhcyBjaGFuZ2VkLgorICAgICAgICAgICAgaWYgKG5ld0FwcCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUlucHV0TWFuYWdlci5zZXRGb2N1c2VkQXBwbGljYXRpb24obnVsbCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1UZW1wSW5wdXRBcHBsaWNhdGlvbi5uYW1lID0gbmV3QXBwLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgbVRlbXBJbnB1dEFwcGxpY2F0aW9uLmRpc3BhdGNoaW5nVGltZW91dE5hbm9zID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FwcC5pbnB1dERpc3BhdGNoaW5nVGltZW91dE5hbm9zOworICAgICAgICAgICAgICAgIG1UZW1wSW5wdXRBcHBsaWNhdGlvbi50b2tlbiA9IG5ld0FwcDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyLnNldEZvY3VzZWRBcHBsaWNhdGlvbihtVGVtcElucHV0QXBwbGljYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dJc0JlaW5nUmVtb3ZlZEx3KFdpbmRvd1N0YXRlIHdpbmRvdykgeworICAgICAgICAgICAgLy8gV2luZG93IGlzIGJlaW5nIHJlbW92ZWQuCisgICAgICAgICAgICB1cGRhdGVJbnB1dFdpbmRvd3NMdygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBwYXVzZURpc3BhdGNoaW5nTHcoV2luZG93VG9rZW4gd2luZG93KSB7CisgICAgICAgICAgICBpZiAoISB3aW5kb3cucGF1c2VkKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSB7CisgICAgICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJQYXVzaW5nIFdpbmRvd1Rva2VuICIgKyB3aW5kb3cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB3aW5kb3cucGF1c2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB1cGRhdGVJbnB1dFdpbmRvd3NMdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCByZXN1bWVEaXNwYXRjaGluZ0x3KFdpbmRvd1Rva2VuIHdpbmRvdykgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5wYXVzZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy52KFRBRywgIlJlc3VtaW5nIFdpbmRvd1Rva2VuICIgKyB3aW5kb3cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB3aW5kb3cucGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdXBkYXRlSW5wdXRXaW5kb3dzTHcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIHZvaWQgZnJlZXplSW5wdXREaXNwYXRjaGluZ0x3KCkgeworICAgICAgICAgICAgaWYgKCEgbUlucHV0RGlzcGF0Y2hGcm96ZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy52KFRBRywgIkZyZWV6aW5nIGlucHV0IGRpc3BhdGNoaW5nIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1JbnB1dERpc3BhdGNoRnJvemVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB1cGRhdGVJbnB1dERpc3BhdGNoTW9kZUx3KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHRoYXdJbnB1dERpc3BhdGNoaW5nTHcoKSB7CisgICAgICAgICAgICBpZiAobUlucHV0RGlzcGF0Y2hGcm96ZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy52KFRBRywgIlRoYXdpbmcgaW5wdXQgZGlzcGF0Y2hpbmciKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbUlucHV0RGlzcGF0Y2hGcm96ZW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB1cGRhdGVJbnB1dERpc3BhdGNoTW9kZUx3KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEV2ZW50RGlzcGF0Y2hpbmdMdyhib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgICAgIGlmIChtSW5wdXREaXNwYXRjaEVuYWJsZWQgIT0gZW5hYmxlZCkgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgeworICAgICAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiU2V0dGluZyBldmVudCBkaXNwYXRjaGluZyB0byAiICsgZW5hYmxlZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1JbnB1dERpc3BhdGNoRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgICAgICAgICAgICAgdXBkYXRlSW5wdXREaXNwYXRjaE1vZGVMdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcml2YXRlIHZvaWQgdXBkYXRlSW5wdXREaXNwYXRjaE1vZGVMdygpIHsKKyAgICAgICAgICAgIG1JbnB1dE1hbmFnZXIuc2V0SW5wdXREaXNwYXRjaE1vZGUobUlucHV0RGlzcGF0Y2hFbmFibGVkLCBtSW5wdXREaXNwYXRjaEZyb3plbik7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBwcml2YXRlIGZpbmFsIHZvaWQgd2FrZXVwSWZOZWVkZWQoV2luZG93U3RhdGUgdGFyZ2V0V2luLCBpbnQgZXZlbnRUeXBlKSB7CiAgICAgICAgIGxvbmcgY3VyVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwpAQCAtNTA0MSw2ICs1NTUxLDggQEAKICAgICAgICAgICAgIHJldHVybiBPVEhFUl9FVkVOVDsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGJvb2xlYW4gbUZhdFRvdWNoOyAvLyByZW1vdmUgbWUgdG9nZXRoZXIgd2l0aCBkaXNwYXRjaFBvaW50ZXIKIAogICAgIC8qKgogICAgICAqIEByZXR1cm4gUmV0dXJucyB0cnVlIGlmIGV2ZW50IHdhcyBkaXNwYXRjaGVkLCBmYWxzZSBpZiBpdCB3YXMgZHJvcHBlZCBmb3IgYW55IHJlYXNvbgpAQCAtNTQzNyw3ICs1OTQ5LDExIEBACiAgICAgICAgIHN5bmNocm9uaXplZCAobVdpbmRvd01hcCkgewogICAgICAgICAgICAgV2luZG93VG9rZW4gdG9rZW4gPSBtVG9rZW5NYXAuZ2V0KF90b2tlbik7CiAgICAgICAgICAgICBpZiAodG9rZW4gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIucGF1c2VEaXNwYXRjaGluZ0xvY2tlZCh0b2tlbik7CisgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci5wYXVzZURpc3BhdGNoaW5nTHcodG9rZW4pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIucGF1c2VEaXNwYXRjaGluZ0xvY2tlZCh0b2tlbik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNTQ1MSw3ICs1OTY3LDExIEBACiAgICAgICAgIHN5bmNocm9uaXplZCAobVdpbmRvd01hcCkgewogICAgICAgICAgICAgV2luZG93VG9rZW4gdG9rZW4gPSBtVG9rZW5NYXAuZ2V0KF90b2tlbik7CiAgICAgICAgICAgICBpZiAodG9rZW4gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIucmVzdW1lRGlzcGF0Y2hpbmdMb2NrZWQodG9rZW4pOworICAgICAgICAgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3IucmVzdW1lRGlzcGF0Y2hpbmdMdyh0b2tlbik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci5yZXN1bWVEaXNwYXRjaGluZ0xvY2tlZCh0b2tlbik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNTQ2Myw3ICs1OTgzLDExIEBACiAgICAgICAgIH0KIAogICAgICAgICBzeW5jaHJvbml6ZWQgKG1XaW5kb3dNYXApIHsKLSAgICAgICAgICAgIG1LZXlXYWl0ZXIuc2V0RXZlbnREaXNwYXRjaGluZ0xvY2tlZChlbmFibGVkKTsKKyAgICAgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci5zZXRFdmVudERpc3BhdGNoaW5nTHcoZW5hYmxlZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIuc2V0RXZlbnREaXNwYXRjaGluZ0xvY2tlZChlbmFibGVkKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNTQ5NSwxOSArNjAxOSwyMCBAQAogICAgICAgICBmaW5hbCBpbnQgcGlkID0gQmluZGVyLmdldENhbGxpbmdQaWQoKTsKICAgICAgICAgZmluYWwgaW50IHVpZCA9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCk7CiAgICAgICAgIGZpbmFsIGxvbmcgaWRlbnQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKLSAgICAgICAgZmluYWwgaW50IHJlc3VsdCA9IGRpc3BhdGNoS2V5KG5ld0V2ZW50LCBwaWQsIHVpZCk7Ci0gICAgICAgIGlmIChzeW5jKSB7Ci0gICAgICAgICAgICBtS2V5V2FpdGVyLndhaXRGb3JOZXh0RXZlbnRUYXJnZXQobnVsbCwgbnVsbCwgbnVsbCwgZmFsc2UsIHRydWUsIHBpZCwgdWlkKTsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIGludCByZXN1bHQ7CisgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtSW5wdXRNYW5hZ2VyLmluamVjdEtleUV2ZW50KG5ld0V2ZW50LCBJbnB1dFF1ZXVlLklOUFVUX0VWRU5UX05BVFVSRV9LRVksCisgICAgICAgICAgICAgICAgICAgIHBpZCwgdWlkLCBzeW5jLCBJTkpFQ1RJT05fVElNRU9VVF9NSUxMSVMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gZGlzcGF0Y2hLZXkobmV3RXZlbnQsIHBpZCwgdWlkKTsKKyAgICAgICAgICAgIGlmIChzeW5jKSB7CisgICAgICAgICAgICAgICAgbUtleVdhaXRlci53YWl0Rm9yTmV4dEV2ZW50VGFyZ2V0KG51bGwsIG51bGwsIG51bGwsIGZhbHNlLCB0cnVlLCBwaWQsIHVpZCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50KTsKLSAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKLSAgICAgICAgICAgIGNhc2UgSU5KRUNUX05PX1BFUk1JU1NJT046Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgIkluamVjdGluZyB0byBhbm90aGVyIGFwcGxpY2F0aW9uIHJlcXVpcmVzIElOSkVDVF9FVkVOVFMgcGVybWlzc2lvbiIpOwotICAgICAgICAgICAgY2FzZSBJTkpFQ1RfU1VDQ0VFREVEOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHJlcG9ydEluamVjdGlvblJlc3VsdChyZXN1bHQpOwogICAgIH0KIAogICAgIC8qKgpAQCAtNTUyMywxOSArNjA0OCwyMCBAQAogICAgICAgICBmaW5hbCBpbnQgcGlkID0gQmluZGVyLmdldENhbGxpbmdQaWQoKTsKICAgICAgICAgZmluYWwgaW50IHVpZCA9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCk7CiAgICAgICAgIGZpbmFsIGxvbmcgaWRlbnQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKLSAgICAgICAgZmluYWwgaW50IHJlc3VsdCA9IGRpc3BhdGNoUG9pbnRlcihudWxsLCBldiwgcGlkLCB1aWQpOwotICAgICAgICBpZiAoc3luYykgewotICAgICAgICAgICAgbUtleVdhaXRlci53YWl0Rm9yTmV4dEV2ZW50VGFyZ2V0KG51bGwsIG51bGwsIG51bGwsIGZhbHNlLCB0cnVlLCBwaWQsIHVpZCk7CisgICAgICAgIAorICAgICAgICBmaW5hbCBpbnQgcmVzdWx0OworICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgcmVzdWx0ID0gbUlucHV0TWFuYWdlci5pbmplY3RNb3Rpb25FdmVudChldiwgSW5wdXRRdWV1ZS5JTlBVVF9FVkVOVF9OQVRVUkVfVE9VQ0gsCisgICAgICAgICAgICAgICAgICAgIHBpZCwgdWlkLCBzeW5jLCBJTkpFQ1RJT05fVElNRU9VVF9NSUxMSVMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gZGlzcGF0Y2hQb2ludGVyKG51bGwsIGV2LCBwaWQsIHVpZCk7CisgICAgICAgICAgICBpZiAoc3luYykgeworICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIud2FpdEZvck5leHRFdmVudFRhcmdldChudWxsLCBudWxsLCBudWxsLCBmYWxzZSwgdHJ1ZSwgcGlkLCB1aWQpOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudCk7Ci0gICAgICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXNlIElOSkVDVF9OT19QRVJNSVNTSU9OOgotICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICJJbmplY3RpbmcgdG8gYW5vdGhlciBhcHBsaWNhdGlvbiByZXF1aXJlcyBJTkpFQ1RfRVZFTlRTIHBlcm1pc3Npb24iKTsKLSAgICAgICAgICAgIGNhc2UgSU5KRUNUX1NVQ0NFRURFRDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiByZXBvcnRJbmplY3Rpb25SZXN1bHQocmVzdWx0KTsKICAgICB9CiAKICAgICAvKioKQEAgLTU1NTEsMTkgKzYwNzcsNTAgQEAKICAgICAgICAgZmluYWwgaW50IHBpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CiAgICAgICAgIGZpbmFsIGludCB1aWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOwogICAgICAgICBmaW5hbCBsb25nIGlkZW50ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgIGZpbmFsIGludCByZXN1bHQgPSBkaXNwYXRjaFRyYWNrYmFsbChudWxsLCBldiwgcGlkLCB1aWQpOwotICAgICAgICBpZiAoc3luYykgewotICAgICAgICAgICAgbUtleVdhaXRlci53YWl0Rm9yTmV4dEV2ZW50VGFyZ2V0KG51bGwsIG51bGwsIG51bGwsIGZhbHNlLCB0cnVlLCBwaWQsIHVpZCk7CisgICAgICAgIAorICAgICAgICBmaW5hbCBpbnQgcmVzdWx0OworICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgcmVzdWx0ID0gbUlucHV0TWFuYWdlci5pbmplY3RNb3Rpb25FdmVudChldiwgSW5wdXRRdWV1ZS5JTlBVVF9FVkVOVF9OQVRVUkVfVFJBQ0tCQUxMLAorICAgICAgICAgICAgICAgICAgICBwaWQsIHVpZCwgc3luYywgSU5KRUNUSU9OX1RJTUVPVVRfTUlMTElTKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRpc3BhdGNoVHJhY2tiYWxsKG51bGwsIGV2LCBwaWQsIHVpZCk7CisgICAgICAgICAgICBpZiAoc3luYykgeworICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIud2FpdEZvck5leHRFdmVudFRhcmdldChudWxsLCBudWxsLCBudWxsLCBmYWxzZSwgdHJ1ZSwgcGlkLCB1aWQpOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudCk7Ci0gICAgICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXNlIElOSkVDVF9OT19QRVJNSVNTSU9OOgotICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICJJbmplY3RpbmcgdG8gYW5vdGhlciBhcHBsaWNhdGlvbiByZXF1aXJlcyBJTkpFQ1RfRVZFTlRTIHBlcm1pc3Npb24iKTsKLSAgICAgICAgICAgIGNhc2UgSU5KRUNUX1NVQ0NFRURFRDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJlcG9ydEluamVjdGlvblJlc3VsdChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGJvb2xlYW4gcmVwb3J0SW5qZWN0aW9uUmVzdWx0KGludCByZXN1bHQpIHsKKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbnB1dE1hbmFnZXIuSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1BFUk1JU1NJT05fREVOSUVEOgorICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiSW5wdXQgZXZlbnQgaW5qZWN0aW9uIHBlcm1pc3Npb24gZGVuaWVkLiIpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluamVjdGluZyB0byBhbm90aGVyIGFwcGxpY2F0aW9uIHJlcXVpcmVzIElOSkVDVF9FVkVOVFMgcGVybWlzc2lvbiIpOworICAgICAgICAgICAgICAgIGNhc2UgSW5wdXRNYW5hZ2VyLklOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQ6CisgICAgICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJJbnB1dCBldmVudCBpbmplY3Rpb24gc3VjY2VlZGVkLiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYXNlIElucHV0TWFuYWdlci5JTlBVVF9FVkVOVF9JTkpFQ1RJT05fVElNRURfT1VUOgorICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiSW5wdXQgZXZlbnQgaW5qZWN0aW9uIHRpbWVkIG91dC4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGNhc2UgSW5wdXRNYW5hZ2VyLklOUFVUX0VWRU5UX0lOSkVDVElPTl9GQUlMRUQ6CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIklucHV0IGV2ZW50IGluamVjdGlvbiBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBJTkpFQ1RfTk9fUEVSTUlTU0lPTjoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmplY3RpbmcgdG8gYW5vdGhlciBhcHBsaWNhdGlvbiByZXF1aXJlcyBJTkpFQ1RfRVZFTlRTIHBlcm1pc3Npb24iKTsKKyAgICAgICAgICAgICAgICBjYXNlIElOSkVDVF9TVUNDRUVERUQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBwcml2YXRlIFdpbmRvd1N0YXRlIGdldEZvY3VzZWRXaW5kb3coKSB7CkBAIC02MzIyLDE0ICs2ODc5LDggQEAKIAogICAgIHByaXZhdGUgY2xhc3MgS2V5USBleHRlbmRzIEtleUlucHV0UXVldWUKICAgICAgICAgICAgIGltcGxlbWVudHMgS2V5SW5wdXRRdWV1ZS5GaWx0ZXJDYWxsYmFjayB7Ci0gICAgICAgIFBvd2VyTWFuYWdlci5XYWtlTG9jayBtSG9sZGluZ1NjcmVlbjsKLQogICAgICAgICBLZXlRKCkgewogICAgICAgICAgICAgc3VwZXIobUNvbnRleHQsIFdpbmRvd01hbmFnZXJTZXJ2aWNlLnRoaXMpOwotICAgICAgICAgICAgUG93ZXJNYW5hZ2VyIHBtID0gKFBvd2VyTWFuYWdlciltQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuUE9XRVJfU0VSVklDRSk7Ci0gICAgICAgICAgICBtSG9sZGluZ1NjcmVlbiA9IHBtLm5ld1dha2VMb2NrKFBvd2VyTWFuYWdlci5TQ1JFRU5fQlJJR0hUX1dBS0VfTE9DSywKLSAgICAgICAgICAgICAgICAgICAgIktFRVBfU0NSRUVOX09OX0ZMQUciKTsKLSAgICAgICAgICAgIG1Ib2xkaW5nU2NyZWVuLnNldFJlZmVyZW5jZUNvdW50ZWQoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCkBAIC02NDQxLDIxICs2OTkyLDYgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZJTFRFUl9LRUVQOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIE11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG1haW4gd2luZG93IG1hbmFnZXIgbG9jayBoZWxkLgotICAgICAgICAgKi8KLSAgICAgICAgdm9pZCBzZXRIb2xkU2NyZWVuTG9ja2VkKGJvb2xlYW4gaG9sZGluZykgewotICAgICAgICAgICAgYm9vbGVhbiBzdGF0ZSA9IG1Ib2xkaW5nU2NyZWVuLmlzSGVsZCgpOwotICAgICAgICAgICAgaWYgKGhvbGRpbmcgIT0gc3RhdGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoaG9sZGluZykgewotICAgICAgICAgICAgICAgICAgICBtSG9sZGluZ1NjcmVlbi5hY3F1aXJlKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbVBvbGljeS5zY3JlZW5PblN0b3BwZWRMdygpOwotICAgICAgICAgICAgICAgICAgICBtSG9sZGluZ1NjcmVlbi5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIGJvb2xlYW4gZGV0ZWN0U2FmZU1vZGUoKSB7CkBAIC02NTc1LDE4ICs3MTExLDMwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBSYXdJbnB1dEV2ZW50LkNMQVNTX0tFWUJPQVJEOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudCBrZSA9IChLZXlFdmVudClldi5ldmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtlLmlzRG93bigpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0S2V5ID0ga2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duVGltZSA9IGN1clRpbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlSZXBlYXRDb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0S2V5VGltZSA9IGN1clRpbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0S2V5VGltZSA9IGxhc3RLZXlUaW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVmlld0NvbmZpZ3VyYXRpb24uZ2V0TG9uZ1ByZXNzVGltZW91dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiUmVjZWl2ZWQga2V5IGRvd246IGZpcnN0IHJlcGVhdCBAICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG5leHRLZXlUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0S2V5ICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2UuZ2V0S2V5Q29kZSgpID09IGxhc3RLZXkuZ2V0S2V5Q29kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5UmVwZWF0Q291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcmJpdHJhcnkgbG9uZyB0aW1lb3V0IHRvIGJsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwZWF0aW5nIGhlcmUgc2luY2Ugd2Uga25vdyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGRldmljZSBkcml2ZXIgdGFrZXMgY2FyZSBvZiBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0S2V5VGltZSA9IGxhc3RLZXlUaW1lICsgTE9OR19XQUlUOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiUmVjZWl2ZWQgcmVwZWF0ZWQga2V5IGRvd24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93blRpbWUgPSBjdXJUaW1lOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleVJlcGVhdENvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0S2V5VGltZSA9IGxhc3RLZXlUaW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFZpZXdDb25maWd1cmF0aW9uLmdldExvbmdQcmVzc1RpbWVvdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiUmVjZWl2ZWQga2V5IGRvd246IGZpcnN0IHJlcGVhdCBAICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBuZXh0S2V5VGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0S2V5ID0ga2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0S2V5ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25UaW1lID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleVJlcGVhdENvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFyYml0cmFyeSBsb25nIHRpbWVvdXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0S2V5VGltZSA9IGN1clRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0S2V5VGltZSA9IGN1clRpbWUgKyBMT05HX1dBSVQ7CkBAIC02NTk0LDcgKzcxNDIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJSZWNlaXZlZCBrZXkgdXA6IGlnbm9yZSByZXBlYXQgQCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBuZXh0S2V5VGltZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hLZXkoKEtleUV2ZW50KWV2LmV2ZW50LCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleVJlcGVhdENvdW50ID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hLZXkoS2V5RXZlbnQuY2hhbmdlVGltZVJlcGVhdChrZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2UuZ2V0RXZlbnRUaW1lKCksIGtleVJlcGVhdENvdW50KSwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEtleShrZSwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVF1ZXVlLnJlY3ljbGVFdmVudChldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUmF3SW5wdXRFdmVudC5DTEFTU19UT1VDSFNDUkVFTjoKQEAgLTY3NjcsOCArNzMyMCwxNCBAQAogICAgICAgICB9CiAKICAgICAgICAgcHVibGljIGludCBhZGQoSVdpbmRvdyB3aW5kb3csIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzLAorICAgICAgICAgICAgICAgIGludCB2aWV3VmlzaWJpbGl0eSwgUmVjdCBvdXRDb250ZW50SW5zZXRzLCBJbnB1dENoYW5uZWwgb3V0SW5wdXRDaGFubmVsKSB7CisgICAgICAgICAgICByZXR1cm4gYWRkV2luZG93KHRoaXMsIHdpbmRvdywgYXR0cnMsIHZpZXdWaXNpYmlsaXR5LCBvdXRDb250ZW50SW5zZXRzLAorICAgICAgICAgICAgICAgICAgICBvdXRJbnB1dENoYW5uZWwpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgaW50IGFkZFdpdGhvdXRJbnB1dENoYW5uZWwoSVdpbmRvdyB3aW5kb3csIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzLAogICAgICAgICAgICAgICAgIGludCB2aWV3VmlzaWJpbGl0eSwgUmVjdCBvdXRDb250ZW50SW5zZXRzKSB7Ci0gICAgICAgICAgICByZXR1cm4gYWRkV2luZG93KHRoaXMsIHdpbmRvdywgYXR0cnMsIHZpZXdWaXNpYmlsaXR5LCBvdXRDb250ZW50SW5zZXRzKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRXaW5kb3codGhpcywgd2luZG93LCBhdHRycywgdmlld1Zpc2liaWxpdHksIG91dENvbnRlbnRJbnNldHMsIG51bGwpOwogICAgICAgICB9CiAKICAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlKElXaW5kb3cgd2luZG93KSB7CkBAIC02ODA3LDYgKzczNjYsOSBAQAogICAgICAgICBwdWJsaWMgdm9pZCBmaW5pc2hLZXkoSVdpbmRvdyB3aW5kb3cpIHsKICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKICAgICAgICAgICAgICAgICBUQUcsICJJV2luZG93IGZpbmlzaEtleSBjYWxsZWQgZm9yICIgKyB3aW5kb3cpOworICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJTaG91bGQgbm90IGJlIGNhbGxlZCBhbnltb3JlLiIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbUtleVdhaXRlci5maW5pc2hlZEtleSh0aGlzLCB3aW5kb3csIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX05PVEhJTkcpOwogICAgICAgICB9CkBAIC02ODE0LDYgKzczNzYsOSBAQAogICAgICAgICBwdWJsaWMgTW90aW9uRXZlbnQgZ2V0UGVuZGluZ1BvaW50ZXJNb3ZlKElXaW5kb3cgd2luZG93KSB7CiAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCiAgICAgICAgICAgICAgICAgICAgIFRBRywgIklXaW5kb3cgZ2V0UGVuZGluZ01vdGlvbkV2ZW50IGNhbGxlZCBmb3IgIiArIHdpbmRvdyk7CisgICAgICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlNob3VsZCBub3QgYmUgY2FsbGVkIGFueW1vcmUuIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbUtleVdhaXRlci5maW5pc2hlZEtleSh0aGlzLCB3aW5kb3csIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX1BFTkRJTkdfUE9JTlRFUik7CiAgICAgICAgIH0KQEAgLTY4MjEsNiArNzM4Niw5IEBACiAgICAgICAgIHB1YmxpYyBNb3Rpb25FdmVudCBnZXRQZW5kaW5nVHJhY2tiYWxsTW92ZShJV2luZG93IHdpbmRvdykgewogICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAogICAgICAgICAgICAgICAgICAgICBUQUcsICJJV2luZG93IGdldFBlbmRpbmdNb3Rpb25FdmVudCBjYWxsZWQgZm9yICIgKyB3aW5kb3cpOworICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJTaG91bGQgbm90IGJlIGNhbGxlZCBhbnltb3JlLiIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG1LZXlXYWl0ZXIuZmluaXNoZWRLZXkodGhpcywgd2luZG93LCBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgS2V5V2FpdGVyLlJFVFVSTl9QRU5ESU5HX1RSQUNLQkFMTCk7CiAgICAgICAgIH0KQEAgLTcxMzcsNiArNzcwNSw5IEBACiAgICAgICAgIGludCBtU3VyZmFjZUxheWVyOwogICAgICAgICBmbG9hdCBtU3VyZmFjZUFscGhhOwogICAgICAgICAKKyAgICAgICAgLy8gSW5wdXQgY2hhbm5lbAorICAgICAgICBJbnB1dENoYW5uZWwgbUlucHV0Q2hhbm5lbDsKKyAgICAgICAgCiAgICAgICAgIFdpbmRvd1N0YXRlKFNlc3Npb24gcywgSVdpbmRvdyBjLCBXaW5kb3dUb2tlbiB0b2tlbiwKICAgICAgICAgICAgICAgIFdpbmRvd1N0YXRlIGF0dGFjaGVkV2luZG93LCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhLAogICAgICAgICAgICAgICAgaW50IHZpZXdWaXNpYmlsaXR5KSB7CkBAIC03MzY0LDYgKzc5MzUsMTIgQEAKICAgICAgICAgcHVibGljIElBcHBsaWNhdGlvblRva2VuIGdldEFwcFRva2VuKCkgewogICAgICAgICAgICAgcmV0dXJuIG1BcHBUb2tlbiAhPSBudWxsID8gbUFwcFRva2VuLmFwcFRva2VuIDogbnVsbDsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIGxvbmcgZ2V0SW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vcygpIHsKKyAgICAgICAgICAgIHJldHVybiBtQXBwVG9rZW4gIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICA/IG1BcHBUb2tlbi5pbnB1dERpc3BhdGNoaW5nVGltZW91dE5hbm9zCisgICAgICAgICAgICAgICAgICAgIDogREVGQVVMVF9JTlBVVF9ESVNQQVRDSElOR19USU1FT1VUX05BTk9TOworICAgICAgICB9CiAKICAgICAgICAgcHVibGljIGJvb2xlYW4gaGFzQXBwU2hvd25XaW5kb3dzKCkgewogICAgICAgICAgICAgcmV0dXJuIG1BcHBUb2tlbiAhPSBudWxsID8gbUFwcFRva2VuLmZpcnN0V2luZG93RHJhd24gOiBmYWxzZTsKQEAgLTc1MDAsMTAgKzgwNzcsMTIgQEAKICAgICAgICAgICAgIC8vIFdpbmRvdyBpcyBubyBsb25nZXIgb24tc2NyZWVuLCBzbyBjYW4gbm8gbG9uZ2VyIHJlY2VpdmUKICAgICAgICAgICAgIC8vIGtleSBldmVudHMuLi4gIGlmIHdlIHdlcmUgd2FpdGluZyBmb3IgaXQgdG8gZmluaXNoCiAgICAgICAgICAgICAvLyBoYW5kbGluZyBhIGtleSBldmVudCwgdGhlIHdhaXQgaXMgb3ZlciEKLSAgICAgICAgICAgIG1LZXlXYWl0ZXIuZmluaXNoZWRLZXkobVNlc3Npb24sIG1DbGllbnQsIHRydWUsCi0gICAgICAgICAgICAgICAgICAgIEtleVdhaXRlci5SRVRVUk5fTk9USElORyk7Ci0gICAgICAgICAgICBtS2V5V2FpdGVyLnJlbGVhc2VQZW5kaW5nUG9pbnRlckxvY2tlZChtU2Vzc2lvbik7Ci0gICAgICAgICAgICBtS2V5V2FpdGVyLnJlbGVhc2VQZW5kaW5nVHJhY2tiYWxsTG9ja2VkKG1TZXNzaW9uKTsKKyAgICAgICAgICAgIGlmICghIEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLmZpbmlzaGVkS2V5KG1TZXNzaW9uLCBtQ2xpZW50LCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgS2V5V2FpdGVyLlJFVFVSTl9OT1RISU5HKTsKKyAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLnJlbGVhc2VQZW5kaW5nUG9pbnRlckxvY2tlZChtU2Vzc2lvbik7CisgICAgICAgICAgICAgICAgbUtleVdhaXRlci5yZWxlYXNlUGVuZGluZ1RyYWNrYmFsbExvY2tlZChtU2Vzc2lvbik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtQXBwVG9rZW4gIT0gbnVsbCAmJiB0aGlzID09IG1BcHBUb2tlbi5zdGFydGluZ1dpbmRvdykgewogICAgICAgICAgICAgICAgIG1BcHBUb2tlbi5zdGFydGluZ0Rpc3BsYXllZCA9IGZhbHNlOwpAQCAtNzUxOSw2ICs4MDk4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgICAgICAgICAgV2luZG93U3RhdGUgYyA9IChXaW5kb3dTdGF0ZSltQ2hpbGRXaW5kb3dzLmdldChpKTsKICAgICAgICAgICAgICAgICAgICAgYy5tQXR0YWNoZWRIaWRkZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iud2luZG93SXNCZWNvbWluZ0ludmlzaWJsZUx3KGMpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKG1SZXBvcnREZXN0cm95U3VyZmFjZSkgewpAQCAtNzgyNiw3ICs4NDA5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFcnJvciBoaWRpbmcgc3VyZmFjZSBpbiAiICsgdGhpcywgZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1MYXN0SGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLnJlbGVhc2VQZW5kaW5nUG9pbnRlckxvY2tlZChtU2Vzc2lvbik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlY29taW5nSW52aXNpYmxlTHcoKFdpbmRvd1N0YXRlKW1DaGlsZFdpbmRvd3MuZ2V0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIucmVsZWFzZVBlbmRpbmdQb2ludGVyTG9ja2VkKG1TZXNzaW9uKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtRXhpdGluZyA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKG1SZW1vdmVPbkV4aXQpIHsKQEAgLTgxNjEsNiArODc1MSwxNSBAQAogICAgICAgICAgICAgICAgIC8vIElnbm9yZSBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQgKHVzdWFsbHkgYmVjYXVzZQogICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBkb2luZyB0aGlzIGFzIHBhcnQgb2YgcHJvY2Vzc2luZyBhIGRlYXRoIG5vdGUuKQogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoRU5BQkxFX05BVElWRV9JTlBVVF9ESVNQQVRDSCkgeworICAgICAgICAgICAgICAgIGlmIChtSW5wdXRDaGFubmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0TWFuYWdlci51bnJlZ2lzdGVySW5wdXRDaGFubmVsKG1JbnB1dENoYW5uZWwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0Q2hhbm5lbC5kaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgICAgIG1JbnB1dENoYW5uZWwgPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHByaXZhdGUgY2xhc3MgRGVhdGhSZWNpcGllbnQgaW1wbGVtZW50cyBJQmluZGVyLkRlYXRoUmVjaXBpZW50IHsKQEAgLTg0MDMsNiArOTAwMiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtV2FsbHBhcGVyWVN0ZXA9Iik7IHB3LnByaW50bG4obVdhbGxwYXBlcllTdGVwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIG1ha2VJbnB1dENoYW5uZWxOYW1lKCkgeworICAgICAgICAgICAgcmV0dXJuIEludGVnZXIudG9IZXhTdHJpbmcoU3lzdGVtLmlkZW50aXR5SGFzaENvZGUodGhpcykpCisgICAgICAgICAgICAgICAgKyAiICIgKyBtQXR0cnMuZ2V0VGl0bGUoKTsKKyAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewpAQCAtODUwNSw2ICs5MTA5LDkgQEAKICAgICAgICAgaW50IGdyb3VwSWQgPSAtMTsKICAgICAgICAgYm9vbGVhbiBhcHBGdWxsc2NyZWVuOwogICAgICAgICBpbnQgcmVxdWVzdGVkT3JpZW50YXRpb24gPSBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX1VOU1BFQ0lGSUVEOworICAgICAgICAKKyAgICAgICAgLy8gVGhlIGlucHV0IGRpc3BhdGNoaW5nIHRpbWVvdXQgZm9yIHRoaXMgYXBwbGljYXRpb24gdG9rZW4gaW4gbmFub3NlY29uZHMuCisgICAgICAgIGxvbmcgaW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKIAogICAgICAgICAvLyBUaGVzZSBhcmUgdXNlZCBmb3IgZGV0ZXJtaW5pbmcgd2hlbiBhbGwgd2luZG93cyBhc3NvY2lhdGVkIHdpdGgKICAgICAgICAgLy8gYW4gYWN0aXZpdHkgaGF2ZSBiZWVuIGRyYXduLCBzbyB0aGV5IGNhbiBiZSBtYWRlIHZpc2libGUgdG9nZXRoZXIKQEAgLTg3MzMsNyArOTM0MCw4IEBACiAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgV2luZG93U3RhdGUgd2luID0gYWxsQXBwV2luZG93cy5nZXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKHdpbiA9PSBzdGFydGluZ1dpbmRvdyB8fCB3aW4ubUFwcEZyZWV6aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCB3aW4ubVZpZXdWaXNpYmlsaXR5ICE9IFZpZXcuVklTSUJMRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgfHwgd2luLm1WaWV3VmlzaWJpbGl0eSAhPSBWaWV3LlZJU0lCTEUKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHdpbi5tQXR0cnMudHlwZSA9PSBUWVBFX0FQUExJQ0FUSU9OX1NUQVJUSU5HKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTSUJJTElUWSkgewpAQCAtOTI1Myw3ICs5ODYxLDggQEAKICAgICAgICAgICAgIElJbnB1dENvbnRleHQgaW5wdXRDb250ZXh0KSB7CiAgICAgICAgIGlmIChjbGllbnQgPT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibnVsbCBjbGllbnQiKTsKICAgICAgICAgaWYgKGlucHV0Q29udGV4dCA9PSBudWxsKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJudWxsIGlucHV0Q29udGV4dCIpOwotICAgICAgICByZXR1cm4gbmV3IFNlc3Npb24oY2xpZW50LCBpbnB1dENvbnRleHQpOworICAgICAgICBTZXNzaW9uIHNlc3Npb24gPSBuZXcgU2Vzc2lvbihjbGllbnQsIGlucHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBzZXNzaW9uOwogICAgIH0KIAogICAgIHB1YmxpYyBib29sZWFuIGlucHV0TWV0aG9kQ2xpZW50SGFzRm9jdXMoSUlucHV0TWV0aG9kQ2xpZW50IGNsaWVudCkgewpAQCAtOTU2Myw2ICsxMDE3MiwxMSBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gV2luZG93IGZyYW1lcyBtYXkgaGF2ZSBjaGFuZ2VkLiAgVGVsbCB0aGUgaW5wdXQgZGlzcGF0Y2hlciBhYm91dCBpdC4KKyAgICAgICAgaWYgKEVOQUJMRV9OQVRJVkVfSU5QVVRfRElTUEFUQ0gpIHsKKyAgICAgICAgICAgIG1JbnB1dE1vbml0b3IudXBkYXRlSW5wdXRXaW5kb3dzTHcoKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBtUG9saWN5LmZpbmlzaExheW91dEx3KCk7CiAgICAgfQpAQCAtMTAzNjMsNyArMTA5NzcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gaGlkaW5nIHN1cmZhY2UgaW4gIiArIHcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIucmVsZWFzZVBlbmRpbmdQb2ludGVyTG9ja2VkKHcubVNlc3Npb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iud2luZG93SXNCZWNvbWluZ0ludmlzaWJsZUx3KHcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIucmVsZWFzZVBlbmRpbmdQb2ludGVyTG9ja2VkKHcubVNlc3Npb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSB3YWl0aW5nIGZvciB0aGlzIHdpbmRvdyB0byBoYW5kbGUgYW4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yaWVudGF0aW9uIGNoYW5nZSwgd2VsbCwgaXQgaXMgaGlkZGVuLCBzbwpAQCAtMTA3NTEsNyArMTEzNjksNyBAQAogICAgICAgICBpZiAoREVCVUdfRlJFRVpFKSBTbG9nLnYoVEFHLCAiTGF5b3V0OiBtRGlzcGxheUZyb3plbj0iICsgbURpc3BsYXlGcm96ZW4KICAgICAgICAgICAgICAgICArICIgaG9sZFNjcmVlbj0iICsgaG9sZFNjcmVlbik7CiAgICAgICAgIGlmICghbURpc3BsYXlGcm96ZW4pIHsKLSAgICAgICAgICAgIG1RdWV1ZS5zZXRIb2xkU2NyZWVuTG9ja2VkKGhvbGRTY3JlZW4gIT0gbnVsbCk7CisgICAgICAgICAgICBzZXRIb2xkU2NyZWVuTG9ja2VkKGhvbGRTY3JlZW4gIT0gbnVsbCk7CiAgICAgICAgICAgICBpZiAoc2NyZWVuQnJpZ2h0bmVzcyA8IDAgfHwgc2NyZWVuQnJpZ2h0bmVzcyA+IDEuMGYpIHsKICAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnNldFNjcmVlbkJyaWdodG5lc3NPdmVycmlkZSgtMSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTA3ODIsNiArMTE0MDAsMjEgQEAKICAgICAgICAgLy8gYmUgZW5hYmxlZCwgYmVjYXVzZSB0aGUgd2luZG93IG9ic2N1cmVkIGZsYWdzIGhhdmUgY2hhbmdlZC4KICAgICAgICAgZW5hYmxlU2NyZWVuSWZOZWVkZWRMb2NrZWQoKTsKICAgICB9CisgICAgCisgICAgLyoqCisgICAgICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbWFpbiB3aW5kb3cgbWFuYWdlciBsb2NrIGhlbGQuCisgICAgICovCisgICAgdm9pZCBzZXRIb2xkU2NyZWVuTG9ja2VkKGJvb2xlYW4gaG9sZGluZykgeworICAgICAgICBib29sZWFuIHN0YXRlID0gbUhvbGRpbmdTY3JlZW5XYWtlTG9jay5pc0hlbGQoKTsKKyAgICAgICAgaWYgKGhvbGRpbmcgIT0gc3RhdGUpIHsKKyAgICAgICAgICAgIGlmIChob2xkaW5nKSB7CisgICAgICAgICAgICAgICAgbUhvbGRpbmdTY3JlZW5XYWtlTG9jay5hY3F1aXJlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1Qb2xpY3kuc2NyZWVuT25TdG9wcGVkTHcoKTsKKyAgICAgICAgICAgICAgICBtSG9sZGluZ1NjcmVlbldha2VMb2NrLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAogICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvbkxvY2tlZChsb25nIGRlbGF5KSB7CiAgICAgICAgIGlmICghbUFuaW1hdGlvblBlbmRpbmcpIHsKQEAgLTEwOTM4LDE0ICsxMTU3MSwyNiBAQAogICAgICAgICAgICAgICAgICAgICBhc3NpZ25MYXllcnNMb2NrZWQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChuZXdGb2N1cyAhPSBudWxsICYmIG1vZGUgIT0gVVBEQVRFX0ZPQ1VTX1dJTExfQVNTSUdOX0xBWUVSUykgewotICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIuaGFuZGxlTmV3V2luZG93TG9ja2VkKG5ld0ZvY3VzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1vZGUgIT0gVVBEQVRFX0ZPQ1VTX1dJTExfQVNTSUdOX0xBWUVSUykgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGRlZmVyIGFzc2lnbmluZyBsYXllcnMsIHRoZW4gdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IKKyAgICAgICAgICAgICAgICAvLyBkb2luZyB0aGlzIHBhcnQuCisgICAgICAgICAgICAgICAgZmluaXNoVXBkYXRlRm9jdXNlZFdpbmRvd0FmdGVyQXNzaWduTGF5ZXJzTG9ja2VkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBmaW5pc2hVcGRhdGVGb2N1c2VkV2luZG93QWZ0ZXJBc3NpZ25MYXllcnNMb2NrZWQoKSB7CisgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICBtSW5wdXRNb25pdG9yLnNldElucHV0Rm9jdXNMdyhtQ3VycmVudEZvY3VzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtQ3VycmVudEZvY3VzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLmhhbmRsZU5ld1dpbmRvd0xvY2tlZChtQ3VycmVudEZvY3VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAogICAgIHByaXZhdGUgV2luZG93U3RhdGUgY29tcHV0ZUZvY3VzZWRXaW5kb3dMb2NrZWQoKSB7CiAgICAgICAgIFdpbmRvd1N0YXRlIHJlc3VsdCA9IG51bGw7CkBAIC0xMTAyNCw4ICsxMTY2OSwxMCBAQAogICAgICAgICAgICAgLy8gc3RpbGwgZnJvemVuLCB0aGUgZXZlbnRzIHdpbGwgY29udGludWUgdG8gYmUgYmxvY2tlZCB3aGlsZSB0aGUKICAgICAgICAgICAgIC8vIHN1Y2Nlc3NpdmUgb3JpZW50YXRpb24gY2hhbmdlIGlzIHByb2Nlc3NlZC4gIFRvIHByZXZlbnQgc3B1cmlvdXMKICAgICAgICAgICAgIC8vIEFOUnMsIHdlIHJlc2V0IHRoZSBldmVudCBkaXNwYXRjaCB0aW1lb3V0IGluIHRoaXMgY2FzZS4KLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUtleVdhaXRlcikgewotICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIubVdhc0Zyb3plbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoISBFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtS2V5V2FpdGVyKSB7CisgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIubVdhc0Zyb3plbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMTA0OCw2ICsxMTY5NSwxMSBAQAogICAgICAgICBpZiAoREVCVUdfRlJFRVpFKSBTbG9nLnYoVEFHLCAiKioqIEZSRUVaSU5HIERJU1BMQVkiLCBuZXcgUnVudGltZUV4Y2VwdGlvbigpKTsKICAgICAgICAgCiAgICAgICAgIG1EaXNwbGF5RnJvemVuID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICBtSW5wdXRNb25pdG9yLmZyZWV6ZUlucHV0RGlzcGF0Y2hpbmdMdygpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAobU5leHRBcHBUcmFuc2l0aW9uICE9IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9VTlNFVCkgewogICAgICAgICAgICAgbU5leHRBcHBUcmFuc2l0aW9uID0gV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1VOU0VUOwogICAgICAgICAgICAgbU5leHRBcHBUcmFuc2l0aW9uUGFja2FnZSA9IG51bGw7CkBAIC0xMTA4MSw5ICsxMTczMywxMyBAQAogCiAgICAgICAgIC8vIFJlc2V0IHRoZSBrZXkgZGVsaXZlcnkgdGltZW91dCBvbiB1bmZyZWV6ZSwgdG9vLiAgV2UgZm9yY2UgYSB3YWtldXAgaGVyZQogICAgICAgICAvLyB0b28gYmVjYXVzZSByZWd1bGFyIGtleSBkZWxpdmVyeSBwcm9jZXNzaW5nIHNob3VsZCByZXN1bWUgaW1tZWRpYXRlbHkuCi0gICAgICAgIHN5bmNocm9uaXplZCAobUtleVdhaXRlcikgewotICAgICAgICAgICAgbUtleVdhaXRlci5tV2FzRnJvemVuID0gdHJ1ZTsKLSAgICAgICAgICAgIG1LZXlXYWl0ZXIubm90aWZ5QWxsKCk7CisgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICBtSW5wdXRNb25pdG9yLnRoYXdJbnB1dERpc3BhdGNoaW5nTHcoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUtleVdhaXRlcikgeworICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIubVdhc0Zyb3plbiA9IHRydWU7CisgICAgICAgICAgICAgICAgbUtleVdhaXRlci5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIFdoaWxlIHRoZSBkaXNwbGF5IGlzIGZyb3plbiB3ZSBkb24ndCByZS1jb21wdXRlIHRoZSBvcmllbnRhdGlvbgpAQCAtMTExMTYsOCArMTE3NzIsMTMgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHB3LnByaW50bG4oIklucHV0IFN0YXRlOiIpOwotICAgICAgICBtUXVldWUuZHVtcChwdywgIiAgIik7CisgICAgICAgIGlmIChFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICBwdy5wcmludGxuKCJJbnB1dCBEaXNwYXRjaGVyIFN0YXRlOiIpOworICAgICAgICAgICAgbUlucHV0TWFuYWdlci5kdW1wKHB3KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIklucHV0IFN0YXRlOiIpOworICAgICAgICAgICAgbVF1ZXVlLmR1bXAocHcsICIgICIpOworICAgICAgICB9CiAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKICAgICAgICAgCiAgICAgICAgIHN5bmNocm9uaXplZChtV2luZG93TWFwKSB7CkBAIC0xMTMzNCwyMCArMTE5OTUsMjUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB3LnByaW50KCIgIERpc3BsYXlXaWR0aD0iKTsgcHcucHJpbnQobURpc3BsYXkuZ2V0V2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgRGlzcGxheUhlaWdodD0iKTsgcHcucHJpbnRsbihtRGlzcGxheS5nZXRIZWlnaHQoKSk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIEtleVdhaXRlciBzdGF0ZToiKTsKLSAgICAgICAgICAgIHB3LnByaW50KCIgICAgbUxhc3RXaW49Iik7IHB3LnByaW50KG1LZXlXYWl0ZXIubUxhc3RXaW4pOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIG1MYXN0QmluZGVyPSIpOyBwdy5wcmludGxuKG1LZXlXYWl0ZXIubUxhc3RCaW5kZXIpOwotICAgICAgICAgICAgcHcucHJpbnQoIiAgICBtRmluaXNoZWQ9Iik7IHB3LnByaW50KG1LZXlXYWl0ZXIubUZpbmlzaGVkKTsKLSAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtR290Rmlyc3RXaW5kb3c9Iik7IHB3LnByaW50KG1LZXlXYWl0ZXIubUdvdEZpcnN0V2luZG93KTsKLSAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtRXZlbnREaXNwYXRjaGluZz0iKTsgcHcucHJpbnQobUtleVdhaXRlci5tRXZlbnREaXNwYXRjaGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgbVRpbWVUb1N3aXRjaD0iKTsgcHcucHJpbnRsbihtS2V5V2FpdGVyLm1UaW1lVG9Td2l0Y2gpOworCisgICAgICAgICAgICBpZiAoISBFTkFCTEVfTkFUSVZFX0lOUFVUX0RJU1BBVENIKSB7CisgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICBLZXlXYWl0ZXIgc3RhdGU6Iik7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiAgICBtTGFzdFdpbj0iKTsgcHcucHJpbnQobUtleVdhaXRlci5tTGFzdFdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIG1MYXN0QmluZGVyPSIpOyBwdy5wcmludGxuKG1LZXlXYWl0ZXIubUxhc3RCaW5kZXIpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgICAgbUZpbmlzaGVkPSIpOyBwdy5wcmludChtS2V5V2FpdGVyLm1GaW5pc2hlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIG1Hb3RGaXJzdFdpbmRvdz0iKTsgcHcucHJpbnQobUtleVdhaXRlci5tR290Rmlyc3RXaW5kb3cpOworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtRXZlbnREaXNwYXRjaGluZz0iKTsgcHcucHJpbnQobUtleVdhaXRlci5tRXZlbnREaXNwYXRjaGluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIG1UaW1lVG9Td2l0Y2g9Iik7IHB3LnByaW50bG4obUtleVdhaXRlci5tVGltZVRvU3dpdGNoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIENhbGxlZCBieSB0aGUgaGVhcnRiZWF0IHRvIGVuc3VyZSBsb2NrcyBhcmUgbm90IGhlbGQgaW5kZWZuaXRlbHkgKGZvciBkZWFkbG9jayBkZXRlY3Rpb24pLgogICAgIHB1YmxpYyB2b2lkIG1vbml0b3IoKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAobVdpbmRvd01hcCkgeyB9CiAgICAgICAgIHN5bmNocm9uaXplZCAobUtleWd1YXJkVG9rZW5XYXRjaGVyKSB7IH0KICAgICAgICAgc3luY2hyb25pemVkIChtS2V5V2FpdGVyKSB7IH0KKyAgICAgICAgc3luY2hyb25pemVkIChtSW5wdXRNb25pdG9yKSB7IH0KICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB2aXJ0dWFsS2V5RmVlZGJhY2soS2V5RXZlbnQgZXZlbnQpIHsKQEAgLTExMzc3LDYgKzEyMDQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGltU3VyZmFjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIDE2LCAxNiwgUGl4ZWxGb3JtYXQuT1BBUVVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cmZhY2UuRlhfU1VSRkFDRV9ESU0pOworICAgICAgICAgICAgICAgICAgICBtRGltU3VyZmFjZS5zZXRBbHBoYSgwLjBmKTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRXhjZXB0aW9uIGNyZWF0aW5nIERpbSBzdXJmYWNlIiwgZSk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IDBjMTE5NDAuLjkzMTIyYzQgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5TWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTE2LDYgKzE2LDggQEAKIAogcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuYW07CiAKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5IZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHk7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuQmF0dGVyeVN0YXRzSW1wbDsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuQXR0cmlidXRlQ2FjaGU7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLkludGVudFJlc29sdmVyOwpAQCAtMjQsNiArMjYsNyBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5TeXN0ZW1TZXJ2ZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLldhdGNoZG9nOwogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5XaW5kb3dNYW5hZ2VyU2VydmljZTsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlTdGFjay5BY3Rpdml0eVN0YXRlOwogCiBpbXBvcnQgZGFsdmlrLnN5c3RlbS5aeWdvdGU7CiAKQEAgLTMyLDYgKzM1LDcgQEAKIGltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXJOYXRpdmU7CiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQ7CiBpbXBvcnQgYW5kcm9pZC5hcHAuQWxlcnREaWFsb2c7CitpbXBvcnQgYW5kcm9pZC5hcHAuQXBwR2xvYmFsczsKIGltcG9ydCBhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbkVycm9yUmVwb3J0OwogaW1wb3J0IGFuZHJvaWQuYXBwLkRpYWxvZzsKIGltcG9ydCBhbmRyb2lkLmFwcC5JQWN0aXZpdHlDb250cm9sbGVyOwpAQCAtMzksMTAgKzQzLDEyIEBACiBpbXBvcnQgYW5kcm9pZC5hcHAuSUFjdGl2aXR5V2F0Y2hlcjsKIGltcG9ydCBhbmRyb2lkLmFwcC5JQXBwbGljYXRpb25UaHJlYWQ7CiBpbXBvcnQgYW5kcm9pZC5hcHAuSUluc3RydW1lbnRhdGlvbldhdGNoZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuSU5vdGlmaWNhdGlvbk1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuSVNlcnZpY2VDb25uZWN0aW9uOwogaW1wb3J0IGFuZHJvaWQuYXBwLklUaHVtYm5haWxSZWNlaXZlcjsKIGltcG9ydCBhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb247CiBpbXBvcnQgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uOworaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbk1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKIGltcG9ydCBhbmRyb2lkLmFwcC5SZXN1bHRJbmZvOwogaW1wb3J0IGFuZHJvaWQuYXBwLlNlcnZpY2U7CkBAIC02OSw2ICs3NSw3IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlByb3ZpZGVySW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlNlcnZpY2VJbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwOwogaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKQEAgLTkyLDYgKzk5LDcgQEAKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUNhbGxiYWNrTGlzdDsKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuU3RyaWN0TW9kZTsKIGltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOwogaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtUHJvcGVydGllczsKIGltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOwpAQCAtMTc2LDQ3ICsxODQsMjEgQEAKIAogICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIHJlY2VudCB0YXNrcyB0aGF0IHdlIGNhbiByZW1lbWJlci4KICAgICBzdGF0aWMgZmluYWwgaW50IE1BWF9SRUNFTlRfVEFTS1MgPSAyMDsKLQorICAgIAogICAgIC8vIEFtb3VudCBvZiB0aW1lIGFmdGVyIGEgY2FsbCB0byBzdG9wQXBwU3dpdGNoZXMoKSBkdXJpbmcgd2hpY2ggd2Ugd2lsbAogICAgIC8vIHByZXZlbnQgZnVydGhlciB1bnRydXN0ZWQgc3dpdGNoZXMgZnJvbSBoYXBwZW5pbmcuCiAgICAgc3RhdGljIGZpbmFsIGxvbmcgQVBQX1NXSVRDSF9ERUxBWV9USU1FID0gNSoxMDAwOwotICAgIAotICAgIC8vIEhvdyBsb25nIHVudGlsIHdlIHJlc2V0IGEgdGFzayB3aGVuIHRoZSB1c2VyIHJldHVybnMgdG8gaXQuICBDdXJyZW50bHkKLSAgICAvLyAzMCBtaW51dGVzLgotICAgIHN0YXRpYyBmaW5hbCBsb25nIEFDVElWSVRZX0lOQUNUSVZFX1JFU0VUX1RJTUUgPSAxMDAwKjYwKjMwOwotICAgIAotICAgIC8vIFNldCB0byB0cnVlIHRvIGRpc2FibGUgdGhlIGljb24gdGhhdCBpcyBzaG93biB3aGlsZSBhIG5ldyBhY3Rpdml0eQotICAgIC8vIGlzIGJlaW5nIHN0YXJ0ZWQuCi0gICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gU0hPV19BUFBfU1RBUlRJTkdfSUNPTiA9IHRydWU7Ci0KLSAgICAvLyBIb3cgbG9uZyB3ZSB3YWl0IHVudGlsIGdpdmluZyB1cCBvbiB0aGUgbGFzdCBhY3Rpdml0eSB0byBwYXVzZS4gIFRoaXMKLSAgICAvLyBpcyBzaG9ydCBiZWNhdXNlIGl0IGRpcmVjdGx5IGltcGFjdHMgdGhlIHJlc3BvbnNpdmVuZXNzIG9mIHN0YXJ0aW5nIHRoZQotICAgIC8vIG5leHQgYWN0aXZpdHkuCi0gICAgc3RhdGljIGZpbmFsIGludCBQQVVTRV9USU1FT1VUID0gNTAwOwotCi0gICAgLyoqCi0gICAgICogSG93IGxvbmcgd2UgY2FuIGhvbGQgdGhlIGxhdW5jaCB3YWtlIGxvY2sgYmVmb3JlIGdpdmluZyB1cC4KLSAgICAgKi8KLSAgICBzdGF0aWMgZmluYWwgaW50IExBVU5DSF9USU1FT1VUID0gMTAqMTAwMDsKIAogICAgIC8vIEhvdyBsb25nIHdlIHdhaXQgZm9yIGEgbGF1bmNoZWQgcHJvY2VzcyB0byBhdHRhY2ggdG8gdGhlIGFjdGl2aXR5IG1hbmFnZXIKICAgICAvLyBiZWZvcmUgd2UgZGVjaWRlIGl0J3MgbmV2ZXIgZ29pbmcgdG8gY29tZSB1cCBmb3IgcmVhbC4KICAgICBzdGF0aWMgZmluYWwgaW50IFBST0NfU1RBUlRfVElNRU9VVCA9IDEwKjEwMDA7CiAKLSAgICAvLyBIb3cgbG9uZyB3ZSB3YWl0IHVudGlsIGdpdmluZyB1cCBvbiB0aGUgbGFzdCBhY3Rpdml0eSB0ZWxsaW5nIHVzIGl0Ci0gICAgLy8gaXMgaWRsZS4KLSAgICBzdGF0aWMgZmluYWwgaW50IElETEVfVElNRU9VVCA9IDEwKjEwMDA7Ci0KICAgICAvLyBIb3cgbG9uZyB0byB3YWl0IGFmdGVyIGdvaW5nIGlkbGUgYmVmb3JlIGZvcmNpbmcgYXBwcyB0byBHQy4KICAgICBzdGF0aWMgZmluYWwgaW50IEdDX1RJTUVPVVQgPSA1KjEwMDA7CiAKICAgICAvLyBUaGUgbWluaW11bSBhbW91bnQgb2YgdGltZSBiZXR3ZWVuIHN1Y2Nlc3NpdmUgR0MgcmVxdWVzdHMgZm9yIGEgcHJvY2Vzcy4KICAgICBzdGF0aWMgZmluYWwgaW50IEdDX01JTl9JTlRFUlZBTCA9IDYwKjEwMDA7CiAKLSAgICAvLyBIb3cgbG9uZyB3ZSB3YWl0IHVudGlsIGdpdmluZyB1cCBvbiBhbiBhY3Rpdml0eSB0ZWxsaW5nIHVzIGl0IGhhcwotICAgIC8vIGZpbmlzaGVkIGRlc3Ryb3lpbmcgaXRzZWxmLgotICAgIHN0YXRpYyBmaW5hbCBpbnQgREVTVFJPWV9USU1FT1VUID0gMTAqMTAwMDsKLSAgICAKICAgICAvLyBIb3cgbG9uZyB3ZSBhbGxvdyBhIHJlY2VpdmVyIHRvIHJ1biBiZWZvcmUgZ2l2aW5nIHVwIG9uIGl0LgogICAgIHN0YXRpYyBmaW5hbCBpbnQgQlJPQURDQVNUX1RJTUVPVVQgPSAxMCoxMDAwOwogCkBAIC0yODMsNiArMjY1LDE3IEBACiAgICAgLy8gc3lzdGVtL3Jvb3RkaXIvaW5pdC5yYyBvbiBzdGFydHVwLgogICAgIHN0YXRpYyBmaW5hbCBpbnQgU0VDT05EQVJZX1NFUlZFUl9BREo7CiAKKyAgICAvLyBUaGlzIGlzIGEgcHJvY2VzcyB3aXRoIGEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uLiAgSXQgaXMgaW4gdGhlCisgICAgLy8gYmFja2dyb3VuZCwgYnV0IHdlIHdhbnQgdG8gdHJ5IHRvIGF2b2lkIGtpbGxpbmcgaXQuICBWYWx1ZSBzZXQgaW4KKyAgICAvLyBzeXN0ZW0vcm9vdGRpci9pbml0LnJjIG9uIHN0YXJ0dXAuCisgICAgc3RhdGljIGZpbmFsIGludCBIRUFWWV9XRUlHSFRfQVBQX0FESjsKKworICAgIC8vIFRoaXMgaXMgYSBwcm9jZXNzIG9ubHkgaG9zdGluZyBjb21wb25lbnRzIHRoYXQgYXJlIHBlcmNlcHRpYmxlIHRvIHRoZQorICAgIC8vIHVzZXIsIGFuZCB3ZSByZWFsbHkgd2FudCB0byBhdm9pZCBraWxsaW5nIHRoZW0sIGJ1dCB0aGV5IGFyZSBub3QKKyAgICAvLyBpbW1lZGlhdGVseSB2aXNpYmxlLiBBbiBleGFtcGxlIGlzIGJhY2tncm91bmQgbXVzaWMgcGxheWJhY2suICBWYWx1ZSBzZXQgaW4KKyAgICAvLyBzeXN0ZW0vcm9vdGRpci9pbml0LnJjIG9uIHN0YXJ0dXAuCisgICAgc3RhdGljIGZpbmFsIGludCBQRVJDRVBUSUJMRV9BUFBfQURKOworCiAgICAgLy8gVGhpcyBpcyBhIHByb2Nlc3Mgb25seSBob3N0aW5nIGFjdGl2aXRpZXMgdGhhdCBhcmUgdmlzaWJsZSB0byB0aGUKICAgICAvLyB1c2VyLCBzbyB3ZSdkIHByZWZlciB0aGV5IGRvbid0IGRpc2FwcGVhci4gVmFsdWUgc2V0IGluCiAgICAgLy8gc3lzdGVtL3Jvb3RkaXIvaW5pdC5yYyBvbiBzdGFydHVwLgpAQCAtMzA4LDYgKzMwMSw4IEBACiAgICAgc3RhdGljIGZpbmFsIGludCBIT01FX0FQUF9NRU07CiAgICAgc3RhdGljIGZpbmFsIGludCBCQUNLVVBfQVBQX01FTTsKICAgICBzdGF0aWMgZmluYWwgaW50IFNFQ09OREFSWV9TRVJWRVJfTUVNOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSEVBVllfV0VJR0hUX0FQUF9NRU07CisgICAgc3RhdGljIGZpbmFsIGludCBQRVJDRVBUSUJMRV9BUFBfTUVNOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgVklTSUJMRV9BUFBfTUVNOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgRk9SRUdST1VORF9BUFBfTUVNOwogCkBAIC0zMjgsNjggKzMyMyw1NSBAQAogICAgIC8vIGJlZW4gaWRsZSBmb3IgbGVzcyB0aGFuIDEyMCBzZWNvbmRzLgogICAgIHN0YXRpYyBmaW5hbCBsb25nIEVNUFRZX0FQUF9JRExFX09GRlNFVCA9IDEyMCoxMDAwOwogICAgIAorICAgIHN0YXRpYyBpbnQgZ2V0SW50UHJvcChTdHJpbmcgbmFtZSwgYm9vbGVhbiBhbGxvd1plcm8pIHsKKyAgICAgICAgU3RyaW5nIHN0ciA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0KG5hbWUpOworICAgICAgICBpZiAoc3RyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlByb3BlcnR5IG5vdCBkZWZpbmVkOiAiICsgbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50IHZhbCA9IEludGVnZXIudmFsdWVPZihzdHIpOworICAgICAgICBpZiAodmFsID09IDAgJiYgIWFsbG93WmVybykgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUHJvcGVydHkgbXVzdCBub3QgYmUgemVybzogIiArIG5hbWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWw7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB7CiAgICAgICAgIC8vIFRoZXNlIHZhbHVlcyBhcmUgc2V0IGluIHN5c3RlbS9yb290ZGlyL2luaXQucmMgb24gc3RhcnR1cC4KLSAgICAgICAgRk9SRUdST1VORF9BUFBfQURKID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uRk9SRUdST1VORF9BUFBfQURKIikpOwotICAgICAgICBWSVNJQkxFX0FQUF9BREogPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5WSVNJQkxFX0FQUF9BREoiKSk7Ci0gICAgICAgIFNFQ09OREFSWV9TRVJWRVJfQURKID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uU0VDT05EQVJZX1NFUlZFUl9BREoiKSk7Ci0gICAgICAgIEJBQ0tVUF9BUFBfQURKID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uQkFDS1VQX0FQUF9BREoiKSk7Ci0gICAgICAgIEhPTUVfQVBQX0FESiA9Ci0gICAgICAgICAgICBJbnRlZ2VyLnZhbHVlT2YoU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLkhPTUVfQVBQX0FESiIpKTsKLSAgICAgICAgSElEREVOX0FQUF9NSU5fQURKID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uSElEREVOX0FQUF9NSU5fQURKIikpOwotICAgICAgICBFTVBUWV9BUFBfQURKID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uRU1QVFlfQVBQX0FESiIpKTsKLSAgICAgICAgSElEREVOX0FQUF9NQVhfQURKID0gRU1QVFlfQVBQX0FESi0xOwotICAgICAgICBGT1JFR1JPVU5EX0FQUF9NRU0gPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5GT1JFR1JPVU5EX0FQUF9NRU0iKSkqUEFHRV9TSVpFOwotICAgICAgICBWSVNJQkxFX0FQUF9NRU0gPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5WSVNJQkxFX0FQUF9NRU0iKSkqUEFHRV9TSVpFOwotICAgICAgICBTRUNPTkRBUllfU0VSVkVSX01FTSA9Ci0gICAgICAgICAgICBJbnRlZ2VyLnZhbHVlT2YoU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLlNFQ09OREFSWV9TRVJWRVJfTUVNIikpKlBBR0VfU0laRTsKLSAgICAgICAgQkFDS1VQX0FQUF9NRU0gPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5CQUNLVVBfQVBQX01FTSIpKSpQQUdFX1NJWkU7Ci0gICAgICAgIEhPTUVfQVBQX01FTSA9Ci0gICAgICAgICAgICBJbnRlZ2VyLnZhbHVlT2YoU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLkhPTUVfQVBQX01FTSIpKSpQQUdFX1NJWkU7Ci0gICAgICAgIEhJRERFTl9BUFBfTUVNID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uSElEREVOX0FQUF9NRU0iKSkqUEFHRV9TSVpFOwotICAgICAgICBFTVBUWV9BUFBfTUVNID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uRU1QVFlfQVBQX01FTSIpKSpQQUdFX1NJWkU7CisgICAgICAgIEZPUkVHUk9VTkRfQVBQX0FESiA9IGdldEludFByb3AoInJvLkZPUkVHUk9VTkRfQVBQX0FESiIsIHRydWUpOworICAgICAgICBWSVNJQkxFX0FQUF9BREogPSBnZXRJbnRQcm9wKCJyby5WSVNJQkxFX0FQUF9BREoiLCB0cnVlKTsKKyAgICAgICAgUEVSQ0VQVElCTEVfQVBQX0FESiA9IGdldEludFByb3AoInJvLlBFUkNFUFRJQkxFX0FQUF9BREoiLCB0cnVlKTsKKyAgICAgICAgSEVBVllfV0VJR0hUX0FQUF9BREogPSBnZXRJbnRQcm9wKCJyby5IRUFWWV9XRUlHSFRfQVBQX0FESiIsIHRydWUpOworICAgICAgICBTRUNPTkRBUllfU0VSVkVSX0FESiA9IGdldEludFByb3AoInJvLlNFQ09OREFSWV9TRVJWRVJfQURKIiwgdHJ1ZSk7CisgICAgICAgIEJBQ0tVUF9BUFBfQURKID0gZ2V0SW50UHJvcCgicm8uQkFDS1VQX0FQUF9BREoiLCB0cnVlKTsKKyAgICAgICAgSE9NRV9BUFBfQURKID0gZ2V0SW50UHJvcCgicm8uSE9NRV9BUFBfQURKIiwgdHJ1ZSk7CisgICAgICAgIEhJRERFTl9BUFBfTUlOX0FESiA9IGdldEludFByb3AoInJvLkhJRERFTl9BUFBfTUlOX0FESiIsIHRydWUpOworICAgICAgICBFTVBUWV9BUFBfQURKID0gZ2V0SW50UHJvcCgicm8uRU1QVFlfQVBQX0FESiIsIHRydWUpOworICAgICAgICAvLyBUaGVzZSBkYXlzIHdlIHVzZSB0aGUgbGFzdCBlbXB0eSBzbG90IGZvciBoaWRkZW4gYXBwcyBhcyB3ZWxsLgorICAgICAgICBISURERU5fQVBQX01BWF9BREogPSBFTVBUWV9BUFBfQURKOworICAgICAgICBGT1JFR1JPVU5EX0FQUF9NRU0gPSBnZXRJbnRQcm9wKCJyby5GT1JFR1JPVU5EX0FQUF9NRU0iLCBmYWxzZSkqUEFHRV9TSVpFOworICAgICAgICBWSVNJQkxFX0FQUF9NRU0gPSBnZXRJbnRQcm9wKCJyby5WSVNJQkxFX0FQUF9NRU0iLCBmYWxzZSkqUEFHRV9TSVpFOworICAgICAgICBQRVJDRVBUSUJMRV9BUFBfTUVNID0gZ2V0SW50UHJvcCgicm8uUEVSQ0VQVElCTEVfQVBQX01FTSIsIGZhbHNlKSpQQUdFX1NJWkU7CisgICAgICAgIEhFQVZZX1dFSUdIVF9BUFBfTUVNID0gZ2V0SW50UHJvcCgicm8uSEVBVllfV0VJR0hUX0FQUF9NRU0iLCBmYWxzZSkqUEFHRV9TSVpFOworICAgICAgICBTRUNPTkRBUllfU0VSVkVSX01FTSA9IGdldEludFByb3AoInJvLlNFQ09OREFSWV9TRVJWRVJfTUVNIiwgZmFsc2UpKlBBR0VfU0laRTsKKyAgICAgICAgQkFDS1VQX0FQUF9NRU0gPSBnZXRJbnRQcm9wKCJyby5CQUNLVVBfQVBQX01FTSIsIGZhbHNlKSpQQUdFX1NJWkU7CisgICAgICAgIEhPTUVfQVBQX01FTSA9IGdldEludFByb3AoInJvLkhPTUVfQVBQX01FTSIsIGZhbHNlKSpQQUdFX1NJWkU7CisgICAgICAgIEhJRERFTl9BUFBfTUVNID0gZ2V0SW50UHJvcCgicm8uSElEREVOX0FQUF9NRU0iLCBmYWxzZSkqUEFHRV9TSVpFOworICAgICAgICBFTVBUWV9BUFBfTUVNID0gZ2V0SW50UHJvcCgicm8uRU1QVFlfQVBQX01FTSIsIGZhbHNlKSpQQUdFX1NJWkU7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBmaW5hbCBpbnQgTVlfUElEID0gUHJvY2Vzcy5teVBpZCgpOwogICAgIAogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBFTVBUWV9TVFJJTkdfQVJSQVkgPSBuZXcgU3RyaW5nWzBdOwogCi0gICAgZW51bSBBY3Rpdml0eVN0YXRlIHsKLSAgICAgICAgSU5JVElBTElaSU5HLAotICAgICAgICBSRVNVTUVELAotICAgICAgICBQQVVTSU5HLAotICAgICAgICBQQVVTRUQsCi0gICAgICAgIFNUT1BQSU5HLAotICAgICAgICBTVE9QUEVELAotICAgICAgICBGSU5JU0hJTkcsCi0gICAgICAgIERFU1RST1lJTkcsCi0gICAgICAgIERFU1RST1lFRAotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoZSBiYWNrIGhpc3Rvcnkgb2YgYWxsIHByZXZpb3VzIChhbmQgcG9zc2libHkgc3RpbGwKLSAgICAgKiBydW5uaW5nKSBhY3Rpdml0aWVzLiAgSXQgY29udGFpbnMgSGlzdG9yeVJlY29yZCBvYmplY3RzLgotICAgICAqLwotICAgIGZpbmFsIEFycmF5TGlzdCBtSGlzdG9yeSA9IG5ldyBBcnJheUxpc3QoKTsKLQorICAgIHB1YmxpYyBBY3Rpdml0eVN0YWNrIG1NYWluU3RhY2s7CisgICAgCiAgICAgLyoqCiAgICAgICogRGVzY3JpcHRpb24gb2YgYSByZXF1ZXN0IHRvIHN0YXJ0IGEgbmV3IGFjdGl2aXR5LCB3aGljaCBoYXMgYmVlbiBoZWxkCiAgICAgICogZHVlIHRvIGFwcCBzd2l0Y2hlcyBiZWluZyBkaXNhYmxlZC4KICAgICAgKi8KLSAgICBjbGFzcyBQZW5kaW5nQWN0aXZpdHlMYXVuY2ggewotICAgICAgICBIaXN0b3J5UmVjb3JkIHI7Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgc291cmNlUmVjb3JkOworICAgIHN0YXRpYyBjbGFzcyBQZW5kaW5nQWN0aXZpdHlMYXVuY2ggeworICAgICAgICBBY3Rpdml0eVJlY29yZCByOworICAgICAgICBBY3Rpdml0eVJlY29yZCBzb3VyY2VSZWNvcmQ7CiAgICAgICAgIFVyaVtdIGdyYW50ZWRVcmlQZXJtaXNzaW9uczsKICAgICAgICAgaW50IGdyYW50ZWRNb2RlOwogICAgICAgICBib29sZWFuIG9ubHlJZk5lZWRlZDsKQEAgLTM5OSwxOCArMzgxLDYgQEAKICAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxQZW5kaW5nQWN0aXZpdHlMYXVuY2g+KCk7CiAgICAgCiAgICAgLyoqCi0gICAgICogTGlzdCBvZiBwZW9wbGUgd2FpdGluZyB0byBmaW5kIG91dCBhYm91dCB0aGUgbmV4dCBsYXVuY2hlZCBhY3Rpdml0eS4KLSAgICAgKi8KLSAgICBmaW5hbCBBcnJheUxpc3Q8SUFjdGl2aXR5TWFuYWdlci5XYWl0UmVzdWx0PiBtV2FpdGluZ0FjdGl2aXR5TGF1bmNoZWQKLSAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ+KCk7Ci0gICAgCi0gICAgLyoqCi0gICAgICogTGlzdCBvZiBwZW9wbGUgd2FpdGluZyB0byBmaW5kIG91dCBhYm91dCB0aGUgbmV4dCB2aXNpYmxlIGFjdGl2aXR5LgotICAgICAqLwotICAgIGZpbmFsIEFycmF5TGlzdDxJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ+IG1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlCi0gICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8SUFjdGl2aXR5TWFuYWdlci5XYWl0UmVzdWx0PigpOwotICAgIAotICAgIC8qKgogICAgICAqIExpc3Qgb2YgYWxsIGFjdGl2ZSBicm9hZGNhc3RzIHRoYXQgYXJlIHRvIGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5CiAgICAgICogKHdpdGhvdXQgd2FpdGluZyBmb3IgYW5vdGhlciBicm9hZGNhc3QgdG8gZmluaXNoKS4gIEN1cnJlbnRseSB0aGlzIG9ubHkKICAgICAgKiBjb250YWlucyBicm9hZGNhc3RzIHRvIHJlZ2lzdGVyZWQgcmVjZWl2ZXJzLCB0byBhdm9pZCBzcGlubmluZyB1cApAQCAtNDQwLDU2ICs0MTAsOSBAQAogICAgIGJvb2xlYW4gbUJyb2FkY2FzdHNTY2hlZHVsZWQgPSBmYWxzZTsKIAogICAgIC8qKgotICAgICAqIFNldCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGlzc3VlIGFuIG9uVXNlckxlYXZpbmcgY2FsbGJhY2sgd2hlbiBhCi0gICAgICogbmV3bHkgbGF1bmNoZWQgYWN0aXZpdHkgaXMgYmVpbmcgYnJvdWdodCBpbiBmcm9udCBvZiB1cy4KLSAgICAgKi8KLSAgICBib29sZWFuIG1Vc2VyTGVhdmluZyA9IGZhbHNlOwotCi0gICAgLyoqCi0gICAgICogV2hlbiB3ZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcGF1c2luZyBhbiBhY3Rpdml0eSwgYmVmb3JlIHN0YXJ0aW5nIHRoZQotICAgICAqIG5leHQgb25lLCB0aGlzIHZhcmlhYmxlIGhvbGRzIHRoZSBhY3Rpdml0eSB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBwYXVzZWQuCi0gICAgICovCi0gICAgSGlzdG9yeVJlY29yZCBtUGF1c2luZ0FjdGl2aXR5ID0gbnVsbDsKLQotICAgIC8qKgotICAgICAqIEN1cnJlbnQgYWN0aXZpdHkgdGhhdCBpcyByZXN1bWVkLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vbmUuCi0gICAgICovCi0gICAgSGlzdG9yeVJlY29yZCBtUmVzdW1lZEFjdGl2aXR5ID0gbnVsbDsKLQotICAgIC8qKgogICAgICAqIEFjdGl2aXR5IHdlIGhhdmUgdG9sZCB0aGUgd2luZG93IG1hbmFnZXIgdG8gaGF2ZSBrZXkgZm9jdXMuCiAgICAgICovCi0gICAgSGlzdG9yeVJlY29yZCBtRm9jdXNlZEFjdGl2aXR5ID0gbnVsbDsKLQotICAgIC8qKgotICAgICAqIFRoaXMgaXMgdGhlIGxhc3QgYWN0aXZpdHkgdGhhdCB3ZSBwdXQgaW50byB0aGUgcGF1c2VkIHN0YXRlLiAgVGhpcyBpcwotICAgICAqIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gZG8gYW4gYWN0aXZpdHkgdHJhbnNpdGlvbiB3aGlsZSBzbGVlcGluZywKLSAgICAgKiB3aGVuIHdlIG5vcm1hbGx5IGhvbGQgdGhlIHRvcCBhY3Rpdml0eSBwYXVzZWQuCi0gICAgICovCi0gICAgSGlzdG9yeVJlY29yZCBtTGFzdFBhdXNlZEFjdGl2aXR5ID0gbnVsbDsKLQotICAgIC8qKgotICAgICAqIExpc3Qgb2YgYWN0aXZpdGllcyB0aGF0IGFyZSB3YWl0aW5nIGZvciBhIG5ldyBhY3Rpdml0eQotICAgICAqIHRvIGJlY29tZSB2aXNpYmxlIGJlZm9yZSBjb21wbGV0aW5nIHdoYXRldmVyIG9wZXJhdGlvbiB0aGV5IGFyZQotICAgICAqIHN1cHBvc2VkIHRvIGRvLgotICAgICAqLwotICAgIGZpbmFsIEFycmF5TGlzdCBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgLyoqCi0gICAgICogTGlzdCBvZiBhY3Rpdml0aWVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHN0b3BwZWQsIGJ1dCB3YWl0aW5nCi0gICAgICogZm9yIHRoZSBuZXh0IGFjdGl2aXR5IHRvIHNldHRsZSBkb3duIGJlZm9yZSBkb2luZyBzby4gIEl0IGNvbnRhaW5zCi0gICAgICogSGlzdG9yeVJlY29yZCBvYmplY3RzLgotICAgICAqLwotICAgIGZpbmFsIEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPiBtU3RvcHBpbmdBY3Rpdml0aWVzCi0gICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4oKTsKLQotICAgIC8qKgotICAgICAqIEFuaW1hdGlvbnMgdGhhdCBmb3IgdGhlIGN1cnJlbnQgdHJhbnNpdGlvbiBoYXZlIHJlcXVlc3RlZCBub3QgdG8KLSAgICAgKiBiZSBjb25zaWRlcmVkIGZvciB0aGUgdHJhbnNpdGlvbiBhbmltYXRpb24uCi0gICAgICovCi0gICAgZmluYWwgQXJyYXlMaXN0PEhpc3RvcnlSZWNvcmQ+IG1Ob0FuaW1BY3Rpdml0aWVzCi0gICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4oKTsKLSAgICAKKyAgICBBY3Rpdml0eVJlY29yZCBtRm9jdXNlZEFjdGl2aXR5ID0gbnVsbDsKICAgICAvKioKICAgICAgKiBMaXN0IG9mIGludGVudHMgdGhhdCB3ZXJlIHVzZWQgdG8gc3RhcnQgdGhlIG1vc3QgcmVjZW50IHRhc2tzLgogICAgICAqLwpAQCAtNDk3LDEzICs0MjAsNiBAQAogICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PFRhc2tSZWNvcmQ+KCk7CiAKICAgICAvKioKLSAgICAgKiBMaXN0IG9mIGFjdGl2aXRpZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgZmluaXNoZWQsIGJ1dCB3YWl0aW5nCi0gICAgICogZm9yIHRoZSBwcmV2aW91cyBhY3Rpdml0eSB0byBzZXR0bGUgZG93biBiZWZvcmUgZG9pbmcgc28uICBJdCBjb250YWlucwotICAgICAqIEhpc3RvcnlSZWNvcmQgb2JqZWN0cy4KLSAgICAgKi8KLSAgICBmaW5hbCBBcnJheUxpc3QgbUZpbmlzaGluZ0FjdGl2aXRpZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICAvKioKICAgICAgKiBBbGwgb2YgdGhlIGFwcGxpY2F0aW9ucyB3ZSBjdXJyZW50bHkgaGF2ZSBydW5uaW5nIG9yZ2FuaXplZCBieSBuYW1lLgogICAgICAqIFRoZSBrZXlzIGFyZSBzdHJpbmdzIG9mIHRoZSBhcHBsaWNhdGlvbiBwYWNrYWdlIG5hbWUgKGFzCiAgICAgICogcmV0dXJuZWQgYnkgdGhlIHBhY2thZ2UgbWFuYWdlciksIGFuZCB0aGUga2V5cyBhcmUgQXBwbGljYXRpb25SZWNvcmQKQEAgLTUxMyw2ICs0MjksMTEgQEAKICAgICAgICAgICAgID0gbmV3IFByb2Nlc3NNYXA8UHJvY2Vzc1JlY29yZD4oKTsKIAogICAgIC8qKgorICAgICAqIFRoZSBjdXJyZW50bHkgcnVubmluZyBoZWF2eS13ZWlnaHQgcHJvY2VzcywgaWYgYW55LgorICAgICAqLworICAgIFByb2Nlc3NSZWNvcmQgbUhlYXZ5V2VpZ2h0UHJvY2VzcyA9IG51bGw7CisgICAgCisgICAgLyoqCiAgICAgICogVGhlIGxhc3QgdGltZSB0aGF0IHZhcmlvdXMgcHJvY2Vzc2VzIGhhdmUgY3Jhc2hlZC4KICAgICAgKi8KICAgICBmaW5hbCBQcm9jZXNzTWFwPExvbmc+IG1Qcm9jZXNzQ3Jhc2hUaW1lcyA9IG5ldyBQcm9jZXNzTWFwPExvbmc+KCk7CkBAIC01OTgsMTYgKzUxOSw5IEBACiAgICAgICogVGhpcyBpcyB0aGUgcHJvY2VzcyBob2xkaW5nIHdoYXQgd2UgY3VycmVudGx5IGNvbnNpZGVyIHRvIGJlCiAgICAgICogdGhlICJob21lIiBhY3Rpdml0eS4KICAgICAgKi8KLSAgICBwcml2YXRlIFByb2Nlc3NSZWNvcmQgbUhvbWVQcm9jZXNzOworICAgIFByb2Nlc3NSZWNvcmQgbUhvbWVQcm9jZXNzOwogICAgIAogICAgIC8qKgotICAgICAqIExpc3Qgb2YgcnVubmluZyBhY3Rpdml0aWVzLCBzb3J0ZWQgYnkgcmVjZW50IHVzYWdlLgotICAgICAqIFRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgbGlzdCBpcyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZC4KLSAgICAgKiBJdCBjb250YWlucyBIaXN0b3J5UmVjb3JkIG9iamVjdHMuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3QgbUxSVUFjdGl2aXRpZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICAvKioKICAgICAgKiBTZXQgb2YgUGVuZGluZ1Jlc3VsdFJlY29yZCBvYmplY3RzIHRoYXQgYXJlIGN1cnJlbnRseSBhY3RpdmUuCiAgICAgICovCiAgICAgZmluYWwgSGFzaFNldCBtUGVuZGluZ1Jlc3VsdFJlY29yZHMgPSBuZXcgSGFzaFNldCgpOwpAQCAtNjE5LDYgKzUzMywxNSBAQAogICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxQZW5kaW5nSW50ZW50UmVjb3JkLktleSwgV2Vha1JlZmVyZW5jZTxQZW5kaW5nSW50ZW50UmVjb3JkPj4oKTsKIAogICAgIC8qKgorICAgICAqIEZpbmdlcnByaW50cyAoU3RyaW5nLmhhc2hDb2RlKCkpIG9mIHN0YWNrIHRyYWNlcyB0aGF0IHdlJ3ZlCisgICAgICogYWxyZWFkeSBsb2dnZWQgRHJvcEJveCBlbnRyaWVzIGZvci4gIEd1YXJkZWQgYnkgaXRzZWxmLiAgSWYKKyAgICAgKiBzb21ldGhpbmcgKHJvZ3VlIHVzZXIgYXBwKSBmb3JjZXMgdGhpcyBvdmVyCisgICAgICogTUFYX0RVUF9TVVBQUkVTU0VEX1NUQUNLUyBlbnRyaWVzLCB0aGUgY29udGVudHMgYXJlIGNsZWFyZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBIYXNoU2V0PEludGVnZXI+IG1BbHJlYWR5TG9nZ2VkVmlvbGF0ZWRTdGFja3MgPSBuZXcgSGFzaFNldDxJbnRlZ2VyPigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfRFVQX1NVUFBSRVNTRURfU1RBQ0tTID0gNTAwMDsKKworICAgIC8qKgogICAgICAqIEludGVudCBicm9hZGNhc3QgdGhhdCB3ZSBoYXZlIHRyaWVkIHRvIHN0YXJ0LCBidXQgYXJlCiAgICAgICogd2FpdGluZyBmb3IgaXRzIGFwcGxpY2F0aW9uJ3MgcHJvY2VzcyB0byBiZSBjcmVhdGVkLiAgV2Ugb25seQogICAgICAqIG5lZWQgb25lIChpbnN0ZWFkIG9mIGEgbGlzdCkgYmVjYXVzZSB3ZSBhbHdheXMgcHJvY2VzcyBicm9hZGNhc3RzCkBAIC03MjYsMjEgKzY0OSwyNCBAQAogICAgICAqIHRoYXQgYSBzaW5nbGUgcHJvdmlkZXIgbWF5IGJlIHB1Ymxpc2hlZCB1bmRlciBtdWx0aXBsZSBuYW1lcywgc28KICAgICAgKiB0aGVyZSBtYXkgYmUgbXVsdGlwbGUgZW50cmllcyBoZXJlIGZvciBhIHNpbmdsZSBvbmUgaW4gbVByb3ZpZGVyc0J5Q2xhc3MuCiAgICAgICovCi0gICAgZmluYWwgSGFzaE1hcCBtUHJvdmlkZXJzQnlOYW1lID0gbmV3IEhhc2hNYXAoKTsKKyAgICBmaW5hbCBIYXNoTWFwPFN0cmluZywgQ29udGVudFByb3ZpZGVyUmVjb3JkPiBtUHJvdmlkZXJzQnlOYW1lCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgQ29udGVudFByb3ZpZGVyUmVjb3JkPigpOwogCiAgICAgLyoqCiAgICAgICogQWxsIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBnbG9iYWwgY29udGVudCBwcm92aWRlcnMuICBLZXlzIGFyZSBhCiAgICAgICogc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHByb3ZpZGVyJ3MgaW1wbGVtZW50YXRpb24gY2xhc3MgYW5kIHZhbHVlcyBhcmUgYQogICAgICAqIENvbnRlbnRQcm92aWRlclJlY29yZCBvYmplY3QgY29udGFpbmluZyB0aGUgZGF0YSBhYm91dCBpdC4KICAgICAgKi8KLSAgICBmaW5hbCBIYXNoTWFwIG1Qcm92aWRlcnNCeUNsYXNzID0gbmV3IEhhc2hNYXAoKTsKKyAgICBmaW5hbCBIYXNoTWFwPFN0cmluZywgQ29udGVudFByb3ZpZGVyUmVjb3JkPiBtUHJvdmlkZXJzQnlDbGFzcworICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIENvbnRlbnRQcm92aWRlclJlY29yZD4oKTsKIAogICAgIC8qKgogICAgICAqIExpc3Qgb2YgY29udGVudCBwcm92aWRlcnMgd2hvIGhhdmUgY2xpZW50cyB3YWl0aW5nIGZvciB0aGVtLiAgVGhlCiAgICAgICogYXBwbGljYXRpb24gaXMgY3VycmVudGx5IGJlaW5nIGxhdW5jaGVkIGFuZCB0aGUgcHJvdmlkZXIgd2lsbCBiZQogICAgICAqIHJlbW92ZWQgZnJvbSB0aGlzIGxpc3Qgb25jZSBpdCBpcyBwdWJsaXNoZWQuCiAgICAgICovCi0gICAgZmluYWwgQXJyYXlMaXN0IG1MYXVuY2hpbmdQcm92aWRlcnMgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgZmluYWwgQXJyYXlMaXN0PENvbnRlbnRQcm92aWRlclJlY29yZD4gbUxhdW5jaGluZ1Byb3ZpZGVycworICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PENvbnRlbnRQcm92aWRlclJlY29yZD4oKTsKIAogICAgIC8qKgogICAgICAqIEdsb2JhbCBzZXQgb2Ygc3BlY2lmaWMgVXJpIHBlcm1pc3Npb25zIHRoYXQgaGF2ZSBiZWVuIGdyYW50ZWQuCkBAIC03ODksMTIgKzcxNSw2IEBACiAgICAgaW50IG1Db25maWd1cmF0aW9uU2VxID0gMDsKICAgICAKICAgICAvKioKLSAgICAgKiBTZXQgd2hlbiB3ZSBrbm93IHdlIGFyZSBnb2luZyB0byBiZSBjYWxsaW5nIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKQotICAgICAqIHNvb24sIHNvIHdhbnQgdG8gc2tpcCBpbnRlcm1lZGlhdGUgY29uZmlnIGNoZWNrcy4KLSAgICAgKi8KLSAgICBib29sZWFuIG1Db25maWdXaWxsQ2hhbmdlOwotICAgIAotICAgIC8qKgogICAgICAqIEhhcmR3YXJlLXJlcG9ydGVkIE9wZW5HTEVTIHZlcnNpb24uCiAgICAgICovCiAgICAgZmluYWwgaW50IEdMX0VTX1ZFUlNJT047CkBAIC04NTAsMjEgKzc3MCw2IEBACiAgICAgICogU2V0IGlmIHdlIGFyZSBzaHV0dGluZyBkb3duIHRoZSBzeXN0ZW0sIHNpbWlsYXIgdG8gc2xlZXBpbmcuCiAgICAgICovCiAgICAgYm9vbGVhbiBtU2h1dHRpbmdEb3duID0gZmFsc2U7Ci0gICAgCi0gICAgLyoqCi0gICAgICogU2V0IHdoZW4gdGhlIHN5c3RlbSBpcyBnb2luZyB0byBzbGVlcCwgdW50aWwgd2UgaGF2ZQotICAgICAqIHN1Y2Nlc3NmdWxseSBwYXVzZWQgdGhlIGN1cnJlbnQgYWN0aXZpdHkgYW5kIHJlbGVhc2VkIG91ciB3YWtlIGxvY2suCi0gICAgICogQXQgdGhhdCBwb2ludCB0aGUgc3lzdGVtIGlzIGFsbG93ZWQgdG8gYWN0dWFsbHkgc2xlZXAuCi0gICAgICovCi0gICAgUG93ZXJNYW5hZ2VyLldha2VMb2NrIG1Hb2luZ1RvU2xlZXA7Ci0KLSAgICAvKioKLSAgICAgKiBXZSBkb24ndCB3YW50IHRvIGFsbG93IHRoZSBkZXZpY2UgdG8gZ28gdG8gc2xlZXAgd2hpbGUgaW4gdGhlIHByb2Nlc3MKLSAgICAgKiBvZiBsYXVuY2hpbmcgYW4gYWN0aXZpdHkuICBUaGlzIGlzIHByaW1hcmlseSB0byBhbGxvdyBhbGFybSBpbnRlbnQKLSAgICAgKiByZWNlaXZlcnMgdG8gbGF1bmNoIGFuIGFjdGl2aXR5IGFuZCBnZXQgdGhhdCB0byBydW4gYmVmb3JlIHRoZSBkZXZpY2UKLSAgICAgKiBnb2VzIGJhY2sgdG8gc2xlZXAuCi0gICAgICovCi0gICAgUG93ZXJNYW5hZ2VyLldha2VMb2NrIG1MYXVuY2hpbmdBY3Rpdml0eTsKIAogICAgIC8qKgogICAgICAqIFRhc2sgaWRlbnRpZmllciB0aGF0IGFjdGl2aXRpZXMgYXJlIGN1cnJlbnRseSBiZWluZyBzdGFydGVkCkBAIC05NDQsOCArODQ5LDYgQEAKIAogICAgIGxvbmcgbUxhc3RXcml0ZVRpbWUgPSAwOwogCi0gICAgbG9uZyBtSW5pdGlhbFN0YXJ0VGltZSA9IDA7Ci0gICAgCiAgICAgLyoqCiAgICAgICogU2V0IHRvIHRydWUgYWZ0ZXIgdGhlIHN5c3RlbSBoYXMgZmluaXNoZWQgYm9vdGluZy4KICAgICAgKi8KQEAgLTk3Nyw3ICs4ODAsNiBAQAogICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAogICAgICAgICAgICAgICAgIFRBRywgIkRlYXRoIHJlY2VpdmVkIGluICIgKyB0aGlzCiAgICAgICAgICAgICAgICAgKyAiIGZvciB0aHJlYWQgIiArIG1BcHBUaHJlYWQuYXNCaW5kZXIoKSk7Ci0gICAgICAgICAgICByZW1vdmVSZXF1ZXN0ZWRQc3MobUFwcCk7CiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS50aGlzKSB7CiAgICAgICAgICAgICAgICAgYXBwRGllZExvY2tlZChtQXBwLCBtUGlkLCBtQXBwVGhyZWFkKTsKICAgICAgICAgICAgIH0KQEAgLTk5MiwyMCArODk0LDE3IEBACiAgICAgc3RhdGljIGZpbmFsIGludCBXQUlUX0ZPUl9ERUJVR0dFUl9NU0cgPSA2OwogICAgIHN0YXRpYyBmaW5hbCBpbnQgQlJPQURDQVNUX0lOVEVOVF9NU0cgPSA3OwogICAgIHN0YXRpYyBmaW5hbCBpbnQgQlJPQURDQVNUX1RJTUVPVVRfTVNHID0gODsKLSAgICBzdGF0aWMgZmluYWwgaW50IFBBVVNFX1RJTUVPVVRfTVNHID0gOTsKLSAgICBzdGF0aWMgZmluYWwgaW50IElETEVfVElNRU9VVF9NU0cgPSAxMDsKLSAgICBzdGF0aWMgZmluYWwgaW50IElETEVfTk9XX01TRyA9IDExOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgU0VSVklDRV9USU1FT1VUX01TRyA9IDEyOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgVVBEQVRFX1RJTUVfWk9ORSA9IDEzOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgU0hPV19VSURfRVJST1JfTVNHID0gMTQ7CiAgICAgc3RhdGljIGZpbmFsIGludCBJTV9GRUVMSU5HX0xVQ0tZX01TRyA9IDE1OwotICAgIHN0YXRpYyBmaW5hbCBpbnQgTEFVTkNIX1RJTUVPVVRfTVNHID0gMTY7Ci0gICAgc3RhdGljIGZpbmFsIGludCBERVNUUk9ZX1RJTUVPVVRfTVNHID0gMTc7Ci0gICAgc3RhdGljIGZpbmFsIGludCBSRVNVTUVfVE9QX0FDVElWSVRZX01TRyA9IDE5OwogICAgIHN0YXRpYyBmaW5hbCBpbnQgUFJPQ19TVEFSVF9USU1FT1VUX01TRyA9IDIwOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgRE9fUEVORElOR19BQ1RJVklUWV9MQVVOQ0hFU19NU0cgPSAyMTsKICAgICBzdGF0aWMgZmluYWwgaW50IEtJTExfQVBQTElDQVRJT05fTVNHID0gMjI7CiAgICAgc3RhdGljIGZpbmFsIGludCBGSU5BTElaRV9QRU5ESU5HX0lOVEVOVF9NU0cgPSAyMzsKKyAgICBzdGF0aWMgZmluYWwgaW50IFBPU1RfSEVBVllfTk9USUZJQ0FUSU9OX01TRyA9IDI0OworICAgIHN0YXRpYyBmaW5hbCBpbnQgQ0FOQ0VMX0hFQVZZX05PVElGSUNBVElPTl9NU0cgPSAyNTsKKyAgICBzdGF0aWMgZmluYWwgaW50IFNIT1dfU1RSSUNUX01PREVfVklPTEFUSU9OX01TRyA9IDI2OwogCiAgICAgQWxlcnREaWFsb2cgbVVpZEFsZXJ0OwogCkBAIC0xMDUyLDEzICs5NTEsMzggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgZmFsc2UsIE1ZX1BJRCwgUHJvY2Vzcy5TWVNURU1fVUlEKTsKIAogICAgICAgICAgICAgICAgICAgICBEaWFsb2cgZCA9IG5ldyBBcHBOb3RSZXNwb25kaW5nRGlhbG9nKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UudGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dCwgcHJvYywgKEhpc3RvcnlSZWNvcmQpZGF0YS5nZXQoImFjdGl2aXR5IikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LCBwcm9jLCAoQWN0aXZpdHlSZWNvcmQpZGF0YS5nZXQoImFjdGl2aXR5IikpOwogICAgICAgICAgICAgICAgICAgICBkLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgcHJvYy5hbnJEaWFsb2cgPSBkOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBlbnN1cmVCb290Q29tcGxldGVkKCk7CiAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgY2FzZSBTSE9XX1NUUklDVF9NT0RFX1ZJT0xBVElPTl9NU0c6IHsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBkYXRhID0gKEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KSBtc2cub2JqOworICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS50aGlzKSB7CisgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcHJvYyA9IChQcm9jZXNzUmVjb3JkKSBkYXRhLmdldCgiYXBwIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9jID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJBcHAgbm90IGZvdW5kIHdoZW4gc2hvd2luZyBzdHJpY3QgbW9kZSBkaWFsb2cuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAocHJvYy5jcmFzaERpYWxvZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiQXBwIGFscmVhZHkgaGFzIHN0cmljdCBtb2RlIGRpYWxvZzogIiArIHByb2MpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFwcEVycm9yUmVzdWx0IHJlcyA9IChBcHBFcnJvclJlc3VsdCkgZGF0YS5nZXQoInJlc3VsdCIpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW1TbGVlcGluZyAmJiAhbVNodXR0aW5nRG93bikgeworICAgICAgICAgICAgICAgICAgICAgICAgRGlhbG9nIGQgPSBuZXcgU3RyaWN0TW9kZVZpb2xhdGlvbkRpYWxvZyhtQ29udGV4dCwgcmVzLCBwcm9jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGQuc2hvdygpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvYy5jcmFzaERpYWxvZyA9IGQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZGV2aWNlIGlzIGFzbGVlcCwgc28ganVzdCBwcmV0ZW5kIHRoYXQgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdyBhIGNyYXNoIGRpYWxvZyBhbmQgaGl0ICJmb3JjZSBxdWl0Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXQoMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZW5zdXJlQm9vdENvbXBsZXRlZCgpOworICAgICAgICAgICAgfSBicmVhazsKICAgICAgICAgICAgIGNhc2UgU0hPV19GQUNUT1JZX0VSUk9SX01TRzogewogICAgICAgICAgICAgICAgIERpYWxvZyBkID0gbmV3IEZhY3RvcnlFcnJvckRpYWxvZygKICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQsIG1zZy5nZXREYXRhKCkuZ2V0Q2hhclNlcXVlbmNlKCJtc2ciKSk7CkBAIC0xMTEzLDM4ICsxMDM3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgYnJvYWRjYXN0VGltZW91dCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBBVVNFX1RJTUVPVVRfTVNHOiB7Ci0gICAgICAgICAgICAgICAgSUJpbmRlciB0b2tlbiA9IChJQmluZGVyKW1zZy5vYmo7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgYXQgdGhpcyBwb2ludCBrbm93IGlmIHRoZSBhY3Rpdml0eSBpcyBmdWxsc2NyZWVuLAotICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gYmUgY29uc2VydmF0aXZlIGFuZCBhc3N1bWUgaXQgaXNuJ3QuCi0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5IHBhdXNlIHRpbWVvdXQgZm9yICIgKyB0b2tlbik7Ci0gICAgICAgICAgICAgICAgYWN0aXZpdHlQYXVzZWQodG9rZW4sIG51bGwsIHRydWUpOwotICAgICAgICAgICAgfSBicmVhazsKLSAgICAgICAgICAgIGNhc2UgSURMRV9USU1FT1VUX01TRzogewotICAgICAgICAgICAgICAgIGlmIChtRGlkRGV4T3B0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1EaWREZXhPcHQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBubXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShJRExFX1RJTUVPVVRfTVNHKTsKLSAgICAgICAgICAgICAgICAgICAgbm1zZy5vYmogPSBtc2cub2JqOwotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobm1zZywgSURMRV9USU1FT1VUKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBhdCB0aGlzIHBvaW50IGtub3cgaWYgdGhlIGFjdGl2aXR5IGlzIGZ1bGxzY3JlZW4sCi0gICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBiZSBjb25zZXJ2YXRpdmUgYW5kIGFzc3VtZSBpdCBpc24ndC4KLSAgICAgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gKElCaW5kZXIpbXNnLm9iajsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgaWRsZSB0aW1lb3V0IGZvciAiICsgdG9rZW4pOwotICAgICAgICAgICAgICAgIGFjdGl2aXR5SWRsZUludGVybmFsKHRva2VuLCB0cnVlLCBudWxsKTsKLSAgICAgICAgICAgIH0gYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIERFU1RST1lfVElNRU9VVF9NU0c6IHsKLSAgICAgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gKElCaW5kZXIpbXNnLm9iajsKLSAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBhdCB0aGlzIHBvaW50IGtub3cgaWYgdGhlIGFjdGl2aXR5IGlzIGZ1bGxzY3JlZW4sCi0gICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBiZSBjb25zZXJ2YXRpdmUgYW5kIGFzc3VtZSBpdCBpc24ndC4KLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgZGVzdHJveSB0aW1lb3V0IGZvciAiICsgdG9rZW4pOwotICAgICAgICAgICAgICAgIGFjdGl2aXR5RGVzdHJveWVkKHRva2VuKTsKLSAgICAgICAgICAgIH0gYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIElETEVfTk9XX01TRzogewotICAgICAgICAgICAgICAgIElCaW5kZXIgdG9rZW4gPSAoSUJpbmRlciltc2cub2JqOwotICAgICAgICAgICAgICAgIGFjdGl2aXR5SWRsZSh0b2tlbiwgbnVsbCk7Ci0gICAgICAgICAgICB9IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTRVJWSUNFX1RJTUVPVVRfTVNHOiB7CiAgICAgICAgICAgICAgICAgaWYgKG1EaWREZXhPcHQpIHsKICAgICAgICAgICAgICAgICAgICAgbURpZERleE9wdCA9IGZhbHNlOwpAQCAtMTE4NywyNSArMTA3OSw2IEBACiAgICAgICAgICAgICAgICAgICAgIG1VaWRBbGVydCA9IG51bGw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTEFVTkNIX1RJTUVPVVRfTVNHOiB7Ci0gICAgICAgICAgICAgICAgaWYgKG1EaWREZXhPcHQpIHsKLSAgICAgICAgICAgICAgICAgICAgbURpZERleE9wdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG5tc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKExBVU5DSF9USU1FT1VUX01TRyk7Ci0gICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChubXNnLCBMQVVOQ0hfVElNRU9VVCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLnRoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1MYXVuY2hpbmdBY3Rpdml0eS5pc0hlbGQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkxhdW5jaCB0aW1lb3V0IGhhcyBleHBpcmVkLCBnaXZpbmcgdXAgd2FrZSBsb2NrISIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUxhdW5jaGluZ0FjdGl2aXR5LnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFJFU1VNRV9UT1BfQUNUSVZJVFlfTVNHOiB7Ci0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLnRoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBicmVhazsKICAgICAgICAgICAgIGNhc2UgUFJPQ19TVEFSVF9USU1FT1VUX01TRzogewogICAgICAgICAgICAgICAgIGlmIChtRGlkRGV4T3B0KSB7CiAgICAgICAgICAgICAgICAgICAgIG1EaWREZXhPcHQgPSBmYWxzZTsKQEAgLTEyMzUsNiArMTEwOCw2MiBAQAogICAgICAgICAgICAgY2FzZSBGSU5BTElaRV9QRU5ESU5HX0lOVEVOVF9NU0c6IHsKICAgICAgICAgICAgICAgICAoKFBlbmRpbmdJbnRlbnRSZWNvcmQpbXNnLm9iaikuY29tcGxldGVGaW5hbGl6ZSgpOwogICAgICAgICAgICAgfSBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUE9TVF9IRUFWWV9OT1RJRklDQVRJT05fTVNHOiB7CisgICAgICAgICAgICAgICAgSU5vdGlmaWNhdGlvbk1hbmFnZXIgaW5tID0gTm90aWZpY2F0aW9uTWFuYWdlci5nZXRTZXJ2aWNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlubSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcm9vdCA9IChBY3Rpdml0eVJlY29yZCltc2cub2JqOworICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcHJvY2VzcyA9IHJvb3QuYXBwOworICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBDb250ZXh0IGNvbnRleHQgPSBtQ29udGV4dC5jcmVhdGVQYWNrYWdlQ29udGV4dChwcm9jZXNzLmluZm8ucGFja2FnZU5hbWUsIDApOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IG1Db250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5oZWF2eV93ZWlnaHRfbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0QXBwbGljYXRpb25JbmZvKCkubG9hZExhYmVsKGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKSkpOworICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uaWNvbiA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfYWRiOyAvL2NvbnRleHQuZ2V0QXBwbGljYXRpb25JbmZvKCkuaWNvbjsKKyAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLndoZW4gPSAwOworICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uZmxhZ3MgPSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOworICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24udGlja2VyVGV4dCA9IHRleHQ7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5kZWZhdWx0cyA9IDA7IC8vIHBsZWFzZSBiZSBxdWlldAorICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uc291bmQgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24udmlicmF0ZSA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5zZXRMYXRlc3RFdmVudEluZm8oY29udGV4dCwgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRUZXh0KFIuc3RyaW5nLmhlYXZ5X3dlaWdodF9ub3RpZmljYXRpb25fZGV0YWlsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KG1Db250ZXh0LCAwLCByb290LmludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIG91dElkID0gbmV3IGludFsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlubS5lbnF1ZXVlTm90aWZpY2F0aW9uKCJhbmRyb2lkIiwgUi5zdHJpbmcuaGVhdnlfd2VpZ2h0X25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLCBvdXRJZCk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igc2hvd2luZyBub3RpZmljYXRpb24gZm9yIGhlYXZ5LXdlaWdodCBhcHAiLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlVuYWJsZSB0byBjcmVhdGUgY29udGV4dCBmb3IgaGVhdnkgbm90aWZpY2F0aW9uIiwgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ0FOQ0VMX0hFQVZZX05PVElGSUNBVElPTl9NU0c6IHsKKyAgICAgICAgICAgICAgICBJTm90aWZpY2F0aW9uTWFuYWdlciBpbm0gPSBOb3RpZmljYXRpb25NYW5hZ2VyLmdldFNlcnZpY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5tID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpbm0uY2FuY2VsTm90aWZpY2F0aW9uKCJhbmRyb2lkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSLnN0cmluZy5oZWF2eV93ZWlnaHRfbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy53KEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciBjYW5jZWxpbmcgbm90aWZpY2F0aW9uIGZvciBzZXJ2aWNlIiwgZSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfTsKQEAgLTEyOTgsMTEgKzEyMjcsNyBAQAogICAgICAgICBDb250ZXh0IGNvbnRleHQgPSBhdC5nZXRTeXN0ZW1Db250ZXh0KCk7CiAgICAgICAgIG0ubUNvbnRleHQgPSBjb250ZXh0OwogICAgICAgICBtLm1GYWN0b3J5VGVzdCA9IGZhY3RvcnlUZXN0OwotICAgICAgICBQb3dlck1hbmFnZXIgcG0gPQotICAgICAgICAgICAgKFBvd2VyTWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5QT1dFUl9TRVJWSUNFKTsKLSAgICAgICAgbS5tR29pbmdUb1NsZWVwID0gcG0ubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLCAiQWN0aXZpdHlNYW5hZ2VyLVNsZWVwIik7Ci0gICAgICAgIG0ubUxhdW5jaGluZ0FjdGl2aXR5ID0gcG0ubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLCAiQWN0aXZpdHlNYW5hZ2VyLUxhdW5jaCIpOwotICAgICAgICBtLm1MYXVuY2hpbmdBY3Rpdml0eS5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKKyAgICAgICAgbS5tTWFpblN0YWNrID0gbmV3IEFjdGl2aXR5U3RhY2sobSwgY29udGV4dCwgdHJ1ZSk7CiAgICAgICAgIAogICAgICAgICBtLm1CYXR0ZXJ5U3RhdHNTZXJ2aWNlLnB1Ymxpc2goY29udGV4dCk7CiAgICAgICAgIG0ubVVzYWdlU3RhdHNTZXJ2aWNlLnB1Ymxpc2goY29udGV4dCk7CkBAIC0xMzM0LDYgKzEyNTksNyBAQAogCiAgICAgICAgICAgICBhbmRyb2lkLm9zLlByb2Nlc3Muc2V0VGhyZWFkUHJpb3JpdHkoCiAgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5USFJFQURfUFJJT1JJVFlfRk9SRUdST1VORCk7CisgICAgICAgICAgICBhbmRyb2lkLm9zLlByb2Nlc3Muc2V0Q2FuU2VsZkJhY2tncm91bmQoZmFsc2UpOwogCiAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIG0gPSBuZXcgQWN0aXZpdHlNYW5hZ2VyU2VydmljZSgpOwogCkBAIC0xNTkxLDcgKzE1MTcsNyBAQAogICAgICAgICByZXR1cm4gbUFwcEJpbmRBcmdzOwogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBzZXRGb2N1c2VkQWN0aXZpdHlMb2NrZWQoSGlzdG9yeVJlY29yZCByKSB7CisgICAgZmluYWwgdm9pZCBzZXRGb2N1c2VkQWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgcikgewogICAgICAgICBpZiAobUZvY3VzZWRBY3Rpdml0eSAhPSByKSB7CiAgICAgICAgICAgICBtRm9jdXNlZEFjdGl2aXR5ID0gcjsKICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEZvY3VzZWRBcHAociwgdHJ1ZSk7CkBAIC0xNjc2LDY1ICsxNjAyLDEzIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlTHJ1UHJvY2Vzc0xvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCwKKyAgICBmaW5hbCB2b2lkIHVwZGF0ZUxydVByb2Nlc3NMb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHAsCiAgICAgICAgICAgICBib29sZWFuIG9vbUFkaiwgYm9vbGVhbiB1cGRhdGVBY3Rpdml0eVRpbWUpIHsKICAgICAgICAgbUxydVNlcSsrOwogICAgICAgICB1cGRhdGVMcnVQcm9jZXNzSW50ZXJuYWxMb2NrZWQoYXBwLCBvb21BZGosIHVwZGF0ZUFjdGl2aXR5VGltZSwgMCk7CiAgICAgfQogICAgIAotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiB1cGRhdGVMUlVMaXN0TG9ja2VkKEhpc3RvcnlSZWNvcmQgcikgewotICAgICAgICBmaW5hbCBib29sZWFuIGhhZGl0ID0gbUxSVUFjdGl2aXRpZXMucmVtb3ZlKHIpOwotICAgICAgICBtTFJVQWN0aXZpdGllcy5hZGQocik7Ci0gICAgICAgIHJldHVybiBoYWRpdDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIEhpc3RvcnlSZWNvcmQgdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgbm90VG9wKSB7Ci0gICAgICAgIGludCBpID0gbUhpc3Rvcnkuc2l6ZSgpLTE7Ci0gICAgICAgIHdoaWxlIChpID49IDApIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcgJiYgciAhPSBub3RUb3ApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGktLTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIEhpc3RvcnlSZWNvcmQgdG9wUnVubmluZ05vbkRlbGF5ZWRBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIG5vdFRvcCkgewotICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKS0xOwotICAgICAgICB3aGlsZSAoaSA+PSAwKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nICYmICFyLmRlbGF5ZWRSZXN1bWUgJiYgciAhPSBub3RUb3ApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGktLTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZCB0aGF0IHByb3ZpZGVzIGEgbnVtYmVyIG9mCi0gICAgICogb3B0aW9uYWwgc2tpcC1vdmVyIG1vZGVzLiAgSXQgaXMgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIHRoZSBBY3Rpdml0eUNvbnRyb2xsZXIgaG9vayBvbmx5LgotICAgICAqIAotICAgICAqIEBwYXJhbSB0b2tlbiBJZiBub24tbnVsbCwgYW55IGhpc3RvcnkgcmVjb3JkcyBtYXRjaGluZyB0aGlzIHRva2VuIHdpbGwgYmUgc2tpcHBlZC4KLSAgICAgKiBAcGFyYW0gdGFza0lkIElmIG5vbi16ZXJvLCB3ZSdsbCBhdHRlbXB0IHRvIHNraXAgb3ZlciByZWNvcmRzIHdpdGggdGhlIHNhbWUgdGFzayBJRC4KLSAgICAgKiAKLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIEhpc3RvcnlSZWNvcmQgb2YgdGhlIG5leHQgYWN0aXZpdHkgb24gdGhlIHN0YWNrLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQoSUJpbmRlciB0b2tlbiwgaW50IHRhc2tJZCkgewotICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKS0xOwotICAgICAgICB3aGlsZSAoaSA+PSAwKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICAvLyBOb3RlOiB0aGUgdGFza0lkIGNoZWNrIGRlcGVuZHMgb24gcmVhbCB0YXNrSWQgZmllbGRzIGJlaW5nIG5vbi16ZXJvCi0gICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nICYmICh0b2tlbiAhPSByKSAmJiAodGFza0lkICE9IHIudGFzay50YXNrSWQpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpLS07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCBQcm9jZXNzUmVjb3JkIGdldFByb2Nlc3NSZWNvcmRMb2NrZWQoCisgICAgZmluYWwgUHJvY2Vzc1JlY29yZCBnZXRQcm9jZXNzUmVjb3JkTG9ja2VkKAogICAgICAgICAgICAgU3RyaW5nIHByb2Nlc3NOYW1lLCBpbnQgdWlkKSB7CiAgICAgICAgIGlmICh1aWQgPT0gUHJvY2Vzcy5TWVNURU1fVUlEKSB7CiAgICAgICAgICAgICAvLyBUaGUgc3lzdGVtIGdldHMgdG8gcnVuIGluIGFueSBwcm9jZXNzLiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlCkBAIC0xNzQ4LDggKzE2MjIsOCBAQAogICAgICAgICByZXR1cm4gcHJvYzsKICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgZW5zdXJlUGFja2FnZURleE9wdChTdHJpbmcgcGFja2FnZU5hbWUpIHsKLSAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKyAgICB2b2lkIGVuc3VyZVBhY2thZ2VEZXhPcHQoU3RyaW5nIHBhY2thZ2VOYW1lKSB7CisgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKTsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGlmIChwbS5wZXJmb3JtRGV4T3B0KHBhY2thZ2VOYW1lKSkgewogICAgICAgICAgICAgICAgIG1EaWREZXhPcHQgPSB0cnVlOwpAQCAtMTc1OCwxNTcgKzE2MzIsMTQgQEAKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBwcml2YXRlIGJvb2xlYW4gaXNOZXh0VHJhbnNpdGlvbkZvcndhcmQoKSB7CisgICAgYm9vbGVhbiBpc05leHRUcmFuc2l0aW9uRm9yd2FyZCgpIHsKICAgICAgICAgaW50IHRyYW5zaXQgPSBtV2luZG93TWFuYWdlci5nZXRQZW5kaW5nQXBwVHJhbnNpdGlvbigpOwogICAgICAgICByZXR1cm4gdHJhbnNpdCA9PSBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfQUNUSVZJVFlfT1BFTgogICAgICAgICAgICAgICAgIHx8IHRyYW5zaXQgPT0gV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfT1BFTgogICAgICAgICAgICAgICAgIHx8IHRyYW5zaXQgPT0gV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfVE9fRlJPTlQ7CiAgICAgfQogICAgIAotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiByZWFsU3RhcnRBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBQcm9jZXNzUmVjb3JkIGFwcCwgYm9vbGVhbiBhbmRSZXN1bWUsIGJvb2xlYW4gY2hlY2tDb25maWcpCi0gICAgICAgICAgICB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLQotICAgICAgICByLnN0YXJ0RnJlZXppbmdTY3JlZW5Mb2NrZWQoYXBwLCAwKTsKLSAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCB0cnVlKTsKLQotICAgICAgICAvLyBIYXZlIHRoZSB3aW5kb3cgbWFuYWdlciByZS1ldmFsdWF0ZSB0aGUgb3JpZW50YXRpb24gb2YKLSAgICAgICAgLy8gdGhlIHNjcmVlbiBiYXNlZCBvbiB0aGUgbmV3IGFjdGl2aXR5IG9yZGVyLiAgTm90ZSB0aGF0Ci0gICAgICAgIC8vIGFzIGEgcmVzdWx0IG9mIHRoaXMsIGl0IGNhbiBjYWxsIGJhY2sgaW50byB0aGUgYWN0aXZpdHkKLSAgICAgICAgLy8gbWFuYWdlciB3aXRoIGEgbmV3IG9yaWVudGF0aW9uLiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGF0LAotICAgICAgICAvLyBiZWNhdXNlIHRoZSBhY3Rpdml0eSBpcyBub3QgY3VycmVudGx5IHJ1bm5pbmcgc28gd2UgYXJlCi0gICAgICAgIC8vIGp1c3QgcmVzdGFydGluZyBpdCBhbnl3YXkuCi0gICAgICAgIGlmIChjaGVja0NvbmZpZykgewotICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBjb25maWcgPSBtV2luZG93TWFuYWdlci51cGRhdGVPcmllbnRhdGlvbkZyb21BcHBUb2tlbnMoCi0gICAgICAgICAgICAgICAgICAgIG1Db25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICByLm1heUZyZWV6ZVNjcmVlbkxvY2tlZChhcHApID8gciA6IG51bGwpOwotICAgICAgICAgICAgdXBkYXRlQ29uZmlndXJhdGlvbkxvY2tlZChjb25maWcsIHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgci5hcHAgPSBhcHA7Ci0KLSAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkxhdW5jaGluZzogIiArIHIpOwotCi0gICAgICAgIGludCBpZHggPSBhcHAuYWN0aXZpdGllcy5pbmRleE9mKHIpOwotICAgICAgICBpZiAoaWR4IDwgMCkgewotICAgICAgICAgICAgYXBwLmFjdGl2aXRpZXMuYWRkKHIpOwotICAgICAgICB9Ci0gICAgICAgIHVwZGF0ZUxydVByb2Nlc3NMb2NrZWQoYXBwLCB0cnVlLCB0cnVlKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKGFwcC50aHJlYWQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZW1vdGVFeGNlcHRpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIExpc3Q8UmVzdWx0SW5mbz4gcmVzdWx0cyA9IG51bGw7Ci0gICAgICAgICAgICBMaXN0PEludGVudD4gbmV3SW50ZW50cyA9IG51bGw7Ci0gICAgICAgICAgICBpZiAoYW5kUmVzdW1lKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHIucmVzdWx0czsKLSAgICAgICAgICAgICAgICBuZXdJbnRlbnRzID0gci5uZXdJbnRlbnRzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIkxhdW5jaGluZzogIiArIHIKLSAgICAgICAgICAgICAgICAgICAgKyAiIGljaWNsZT0iICsgci5pY2ljbGUKLSAgICAgICAgICAgICAgICAgICAgKyAiIHdpdGggcmVzdWx0cz0iICsgcmVzdWx0cyArICIgbmV3SW50ZW50cz0iICsgbmV3SW50ZW50cwotICAgICAgICAgICAgICAgICAgICArICIgYW5kUmVzdW1lPSIgKyBhbmRSZXN1bWUpOwotICAgICAgICAgICAgaWYgKGFuZFJlc3VtZSkgewotICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX1JFU1RBUlRfQUNUSVZJVFksCi0gICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHIudGFzay50YXNrSWQsIHIuc2hvcnRDb21wb25lbnROYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyLmlzSG9tZUFjdGl2aXR5KSB7Ci0gICAgICAgICAgICAgICAgbUhvbWVQcm9jZXNzID0gYXBwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZW5zdXJlUGFja2FnZURleE9wdChyLmludGVudC5nZXRDb21wb25lbnQoKS5nZXRQYWNrYWdlTmFtZSgpKTsKLSAgICAgICAgICAgIGFwcC50aHJlYWQuc2NoZWR1bGVMYXVuY2hBY3Rpdml0eShuZXcgSW50ZW50KHIuaW50ZW50KSwgciwKLSAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksCi0gICAgICAgICAgICAgICAgICAgIHIuaW5mbywgci5pY2ljbGUsIHJlc3VsdHMsIG5ld0ludGVudHMsICFhbmRSZXN1bWUsCi0gICAgICAgICAgICAgICAgICAgIGlzTmV4dFRyYW5zaXRpb25Gb3J3YXJkKCkpOwotICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgaWYgKHIubGF1bmNoRmFpbGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2Vjb25kIHRpbWUgd2UgZmFpbGVkIC0tIGZpbmlzaCBhY3Rpdml0eQotICAgICAgICAgICAgICAgIC8vIGFuZCBnaXZlIHVwLgotICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJTZWNvbmQgZmFpbHVyZSBsYXVuY2hpbmcgIgotICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKQotICAgICAgICAgICAgICAgICAgICAgICsgIiwgZ2l2aW5nIHVwIiwgZSk7Ci0gICAgICAgICAgICAgICAgYXBwRGllZExvY2tlZChhcHAsIGFwcC5waWQsIGFwcC50aHJlYWQpOwotICAgICAgICAgICAgICAgIHJlcXVlc3RGaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAiMm5kLWNyYXNoIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlIGZhaWxlZCAtLSByZXN0YXJ0IHByb2Nlc3MgYW5kCi0gICAgICAgICAgICAvLyByZXRyeS4KLSAgICAgICAgICAgIGFwcC5hY3Rpdml0aWVzLnJlbW92ZShyKTsKLSAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0KLQotICAgICAgICByLmxhdW5jaEZhaWxlZCA9IGZhbHNlOwotICAgICAgICBpZiAodXBkYXRlTFJVTGlzdExvY2tlZChyKSkgewotICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5ICIgKyByCi0gICAgICAgICAgICAgICAgICArICIgYmVpbmcgbGF1bmNoZWQsIGJ1dCBhbHJlYWR5IGluIExSVSBsaXN0Iik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYW5kUmVzdW1lKSB7Ci0gICAgICAgICAgICAvLyBBcyBwYXJ0IG9mIHRoZSBwcm9jZXNzIG9mIGxhdW5jaGluZywgQWN0aXZpdHlUaHJlYWQgYWxzbyBwZXJmb3JtcwotICAgICAgICAgICAgLy8gYSByZXN1bWUuCi0gICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5SRVNVTUVEOwotICAgICAgICAgICAgci5pY2ljbGUgPSBudWxsOwotICAgICAgICAgICAgci5oYXZlU3RhdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIHIuc3RvcHBlZCA9IGZhbHNlOwotICAgICAgICAgICAgbVJlc3VtZWRBY3Rpdml0eSA9IHI7Ci0gICAgICAgICAgICByLnRhc2sudG91Y2hBY3RpdmVUaW1lKCk7Ci0gICAgICAgICAgICBjb21wbGV0ZVJlc3VtZUxvY2tlZChyKTsKLSAgICAgICAgICAgIHBhdXNlSWZTbGVlcGluZ0xvY2tlZCgpOyAgICAgICAgICAgICAgICAKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRoaXMgYWN0aXZpdHkgaXMgbm90IHN0YXJ0aW5nIGluIHRoZSByZXN1bWVkIHN0YXRlLi4uIHdoaWNoCi0gICAgICAgICAgICAvLyBzaG91bGQgbG9vayBsaWtlIHdlIGFza2VkIGl0IHRvIHBhdXNlK3N0b3AgKGJ1dCByZW1haW4gdmlzaWJsZSksCi0gICAgICAgICAgICAvLyBhbmQgaXQgaGFzIGRvbmUgc28gYW5kIHJlcG9ydGVkIGJhY2sgdGhlIGN1cnJlbnQgaWNpY2xlIGFuZAotICAgICAgICAgICAgLy8gb3RoZXIgc3RhdGUuCi0gICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5TVE9QUEVEOwotICAgICAgICAgICAgci5zdG9wcGVkID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIExhdW5jaCB0aGUgbmV3IHZlcnNpb24gc2V0dXAgc2NyZWVuIGlmIG5lZWRlZC4gIFdlIGRvIHRoaXMgLWFmdGVyLQotICAgICAgICAvLyBsYXVuY2hpbmcgdGhlIGluaXRpYWwgYWN0aXZpdHkgKHRoYXQgaXMsIGhvbWUpLCBzbyB0aGF0IGl0IGNhbiBoYXZlCi0gICAgICAgIC8vIGEgY2hhbmNlIHRvIGluaXRpYWxpemUgaXRzZWxmIHdoaWxlIGluIHRoZSBiYWNrZ3JvdW5kLCBtYWtpbmcgdGhlCi0gICAgICAgIC8vIHN3aXRjaCBiYWNrIHRvIGl0IGZhc3RlciBhbmQgbG9vayBiZXR0ZXIuCi0gICAgICAgIHN0YXJ0U2V0dXBBY3Rpdml0eUxvY2tlZCgpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHN0YXJ0U3BlY2lmaWNBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBib29sZWFuIGFuZFJlc3VtZSwgYm9vbGVhbiBjaGVja0NvbmZpZykgewotICAgICAgICAvLyBJcyB0aGlzIGFjdGl2aXR5J3MgYXBwbGljYXRpb24gYWxyZWFkeSBydW5uaW5nPwotICAgICAgICBQcm9jZXNzUmVjb3JkIGFwcCA9IGdldFByb2Nlc3NSZWNvcmRMb2NrZWQoci5wcm9jZXNzTmFtZSwKLSAgICAgICAgICAgICAgICByLmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoci5zdGFydFRpbWUgPT0gMCkgewotICAgICAgICAgICAgci5zdGFydFRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgIGlmIChtSW5pdGlhbFN0YXJ0VGltZSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgbUluaXRpYWxTdGFydFRpbWUgPSByLnN0YXJ0VGltZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChtSW5pdGlhbFN0YXJ0VGltZSA9PSAwKSB7Ci0gICAgICAgICAgICBtSW5pdGlhbFN0YXJ0VGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoYXBwICE9IG51bGwgJiYgYXBwLnRocmVhZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJlYWxTdGFydEFjdGl2aXR5TG9ja2VkKHIsIGFwcCwgYW5kUmVzdW1lLCBjaGVja0NvbmZpZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHdoZW4gc3RhcnRpbmcgYWN0aXZpdHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpLCBlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSWYgYSBkZWFkIG9iamVjdCBleGNlcHRpb24gd2FzIHRocm93biAtLSBmYWxsIHRocm91Z2ggdG8KLSAgICAgICAgICAgIC8vIHJlc3RhcnQgdGhlIGFwcGxpY2F0aW9uLgotICAgICAgICB9Ci0KLSAgICAgICAgc3RhcnRQcm9jZXNzTG9ja2VkKHIucHJvY2Vzc05hbWUsIHIuaW5mby5hcHBsaWNhdGlvbkluZm8sIHRydWUsIDAsCi0gICAgICAgICAgICAgICAgImFjdGl2aXR5Iiwgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCksIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIFByb2Nlc3NSZWNvcmQgc3RhcnRQcm9jZXNzTG9ja2VkKFN0cmluZyBwcm9jZXNzTmFtZSwKKyAgICBmaW5hbCBQcm9jZXNzUmVjb3JkIHN0YXJ0UHJvY2Vzc0xvY2tlZChTdHJpbmcgcHJvY2Vzc05hbWUsCiAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8gaW5mbywgYm9vbGVhbiBrbm93blRvQmVEZWFkLCBpbnQgaW50ZW50RmxhZ3MsCiAgICAgICAgICAgICBTdHJpbmcgaG9zdGluZ1R5cGUsIENvbXBvbmVudE5hbWUgaG9zdGluZ05hbWUsIGJvb2xlYW4gYWxsb3dXaGlsZUJvb3RpbmcpIHsKICAgICAgICAgUHJvY2Vzc1JlY29yZCBhcHAgPSBnZXRQcm9jZXNzUmVjb3JkTG9ja2VkKHByb2Nlc3NOYW1lLCBpbmZvLnVpZCk7CkBAIC0yMDU0LDcgKzE3ODUsNyBAQAogICAgICAgICAgICAgICAgICAgICBob3N0aW5nTmFtZVN0ciAhPSBudWxsID8gaG9zdGluZ05hbWVTdHIgOiAiIik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChhcHAucGVyc2lzdGVudCkgewotICAgICAgICAgICAgICAgIFdhdGNoZG9nLmdldEluc3RhbmNlKCkucHJvY2Vzc1N0YXJ0ZWQoYXBwLCBhcHAucHJvY2Vzc05hbWUsIHBpZCk7CisgICAgICAgICAgICAgICAgV2F0Y2hkb2cuZ2V0SW5zdGFuY2UoKS5wcm9jZXNzU3RhcnRlZChhcHAucHJvY2Vzc05hbWUsIHBpZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVmID0gbVN0cmluZ0J1aWxkZXI7CkBAIC0yMTA5LDM2NSArMTg0MCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgc3RhcnRQYXVzaW5nTG9ja2VkKGJvb2xlYW4gdXNlckxlYXZpbmcsIGJvb2xlYW4gdWlTbGVlcGluZykgewotICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIGUgPSBuZXcgUnVudGltZUV4Y2VwdGlvbigpOwotICAgICAgICAgICAgU2xvZy5lKFRBRywgIlRyeWluZyB0byBwYXVzZSB3aGVuIHBhdXNlIGlzIGFscmVhZHkgcGVuZGluZyBmb3IgIgotICAgICAgICAgICAgICAgICAgKyBtUGF1c2luZ0FjdGl2aXR5LCBlKTsKLSAgICAgICAgfQotICAgICAgICBIaXN0b3J5UmVjb3JkIHByZXYgPSBtUmVzdW1lZEFjdGl2aXR5OwotICAgICAgICBpZiAocHJldiA9PSBudWxsKSB7Ci0gICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIGUgPSBuZXcgUnVudGltZUV4Y2VwdGlvbigpOwotICAgICAgICAgICAgU2xvZy5lKFRBRywgIlRyeWluZyB0byBwYXVzZSB3aGVuIG5vdGhpbmcgaXMgcmVzdW1lZCIsIGUpOwotICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiU3RhcnQgcGF1c2luZzogIiArIHByZXYpOwotICAgICAgICBtUmVzdW1lZEFjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgbVBhdXNpbmdBY3Rpdml0eSA9IHByZXY7Ci0gICAgICAgIG1MYXN0UGF1c2VkQWN0aXZpdHkgPSBwcmV2OwotICAgICAgICBwcmV2LnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5QQVVTSU5HOwotICAgICAgICBwcmV2LnRhc2sudG91Y2hBY3RpdmVUaW1lKCk7Ci0KLSAgICAgICAgdXBkYXRlQ3B1U3RhdHMoKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChwcmV2LmFwcCAhPSBudWxsICYmIHByZXYuYXBwLnRocmVhZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJFbnF1ZXVlaW5nIHBlbmRpbmcgcGF1c2U6ICIgKyBwcmV2KTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fUEFVU0VfQUNUSVZJVFksCi0gICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShwcmV2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZXYuc2hvcnRDb21wb25lbnROYW1lKTsKLSAgICAgICAgICAgICAgICBwcmV2LmFwcC50aHJlYWQuc2NoZWR1bGVQYXVzZUFjdGl2aXR5KHByZXYsIHByZXYuZmluaXNoaW5nLCB1c2VyTGVhdmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZXYuY29uZmlnQ2hhbmdlRmxhZ3MpOwotICAgICAgICAgICAgICAgIHVwZGF0ZVVzYWdlU3RhdHMocHJldiwgZmFsc2UpOwotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZXhjZXB0aW9uLCBpZiBwcm9jZXNzIGRpZWQgb3RoZXIgY29kZSB3aWxsIGNsZWFudXAuCi0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gZHVyaW5nIHBhdXNlIiwgZSk7Ci0gICAgICAgICAgICAgICAgbVBhdXNpbmdBY3Rpdml0eSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgbUxhc3RQYXVzZWRBY3Rpdml0eSA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtUGF1c2luZ0FjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgICAgIG1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBnb2luZyB0byBzbGVlcCwgd2Ugd2FudCB0byBlbnN1cmUgdGhlIGRldmljZSBpcwotICAgICAgICAvLyBhd2FrZSB1bnRpbCB0aGUgbmV4dCBhY3Rpdml0eSBpcyBzdGFydGVkLgotICAgICAgICBpZiAoIW1TbGVlcGluZyAmJiAhbVNodXR0aW5nRG93bikgewotICAgICAgICAgICAgbUxhdW5jaGluZ0FjdGl2aXR5LmFjcXVpcmUoKTsKLSAgICAgICAgICAgIGlmICghbUhhbmRsZXIuaGFzTWVzc2FnZXMoTEFVTkNIX1RJTUVPVVRfTVNHKSkgewotICAgICAgICAgICAgICAgIC8vIFRvIGJlIHNhZmUsIGRvbid0IGFsbG93IHRoZSB3YWtlIGxvY2sgdG8gYmUgaGVsZCBmb3IgdG9vIGxvbmcuCi0gICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKExBVU5DSF9USU1FT1VUX01TRyk7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG1zZywgTEFVTkNIX1RJTUVPVVQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLQotICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBIYXZlIHRoZSB3aW5kb3cgbWFuYWdlciBwYXVzZSBpdHMga2V5IGRpc3BhdGNoaW5nIHVudGlsIHRoZSBuZXcKLSAgICAgICAgICAgIC8vIGFjdGl2aXR5IGhhcyBzdGFydGVkLiAgSWYgd2UncmUgcGF1c2luZyB0aGUgYWN0aXZpdHkganVzdCBiZWNhdXNlCi0gICAgICAgICAgICAvLyB0aGUgc2NyZWVuIGlzIGJlaW5nIHR1cm5lZCBvZmYgYW5kIHRoZSBVSSBpcyBzbGVlcGluZywgZG9uJ3QgaW50ZXJydXB0Ci0gICAgICAgICAgICAvLyBrZXkgZGlzcGF0Y2g7IHRoZSBzYW1lIGFjdGl2aXR5IHdpbGwgcGljayBpdCB1cCBhZ2FpbiBvbiB3YWtldXAuCi0gICAgICAgICAgICBpZiAoIXVpU2xlZXBpbmcpIHsKLSAgICAgICAgICAgICAgICBwcmV2LnBhdXNlS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiS2V5IGRpc3BhdGNoIG5vdCBwYXVzZWQgZm9yIHNjcmVlbiBvZmYiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU2NoZWR1bGUgYSBwYXVzZSB0aW1lb3V0IGluIGNhc2UgdGhlIGFwcCBkb2Vzbid0IHJlc3BvbmQuCi0gICAgICAgICAgICAvLyBXZSBkb24ndCBnaXZlIGl0IG11Y2ggdGltZSBiZWNhdXNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUKLSAgICAgICAgICAgIC8vIHJlc3BvbnNpdmVuZXNzIHNlZW4gYnkgdGhlIHVzZXIuCi0gICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoUEFVU0VfVElNRU9VVF9NU0cpOwotICAgICAgICAgICAgbXNnLm9iaiA9IHByZXY7Ci0gICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBQQVVTRV9USU1FT1VUKTsKLSAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIldhaXRpbmcgZm9yIHBhdXNlIHRvIGNvbXBsZXRlLi4uIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGUKLSAgICAgICAgICAgIC8vIHBhdXNlLCBzbyBqdXN0IHRyZWF0IGl0IGFzIGJlaW5nIHBhdXNlZCBub3cuCi0gICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJBY3Rpdml0eSBub3QgcnVubmluZywgcmVzdW1pbmcgbmV4dC4iKTsKLSAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNvbXBsZXRlUGF1c2VMb2NrZWQoKSB7Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgcHJldiA9IG1QYXVzaW5nQWN0aXZpdHk7Ci0gICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkNvbXBsZXRlIHBhdXNlOiAiICsgcHJldik7Ci0gICAgICAgIAotICAgICAgICBpZiAocHJldiAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAocHJldi5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJFeGVjdXRpbmcgZmluaXNoIG9mIGFjdGl2aXR5OiAiICsgcHJldik7Ci0gICAgICAgICAgICAgICAgcHJldiA9IGZpbmlzaEN1cnJlbnRBY3Rpdml0eUxvY2tlZChwcmV2LCBGSU5JU0hfQUZURVJfVklTSUJMRSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHByZXYuYXBwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJFbnF1ZXVlaW5nIHBlbmRpbmcgc3RvcDogIiArIHByZXYpOwotICAgICAgICAgICAgICAgIGlmIChwcmV2LndhaXRpbmdWaXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByZXYud2FpdGluZ1Zpc2libGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5yZW1vdmUocHJldik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfUEFVU0UpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJDb21wbGV0ZSBwYXVzZSwgbm8gbG9uZ2VyIHdhaXRpbmc6ICIgKyBwcmV2KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHByZXYuY29uZmlnRGVzdHJveSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcHJldmlvdXMgaXMgYmVpbmcgcGF1c2VkIGJlY2F1c2UgdGhlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgLy8gaXMgY2hhbmdpbmcsIHdoaWNoIG1lYW5zIGl0IGlzIGFjdHVhbGx5IHN0b3BwaW5nLi4uCi0gICAgICAgICAgICAgICAgICAgIC8vIFRvIGp1Z2dsZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBhbHNvIHN0YXJ0aW5nIGEgbmV3Ci0gICAgICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlIHJpZ2h0IG5vdywgd2UgbmVlZCB0byBmaXJzdCBjb21wbGV0ZWx5IHN0b3AKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgaW5zdGFuY2UgYmVmb3JlIHN0YXJ0aW5nIHRoZSBuZXcgb25lLgotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJEZXN0cm95aW5nIGFmdGVyIHBhdXNlOiAiICsgcHJldik7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChwcmV2LCB0cnVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtU3RvcHBpbmdBY3Rpdml0aWVzLmFkZChwcmV2KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1TdG9wcGluZ0FjdGl2aXRpZXMuc2l6ZSgpID4gMykgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgZmV3IGFjdGl2aXRpZXMgd2FpdGluZyB0byBzdG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBnaXZlIHVwIG9uIHRoaW5ncyBnb2luZyBpZGxlIGFuZCBzdGFydCBjbGVhcmluZwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbSBvdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJUbyBtYW55IHBlbmRpbmcgc3RvcHMsIGZvcmNpbmcgaWRsZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBNZXNzYWdlLm9idGFpbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgbXNnLndoYXQgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLklETEVfTk9XX01TRzsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkFwcCBkaWVkIGR1cmluZyBwYXVzZSwgbm90IHN0b3BwaW5nOiAiICsgcHJldik7Ci0gICAgICAgICAgICAgICAgcHJldiA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtUGF1c2luZ0FjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbVNsZWVwaW5nICYmICFtU2h1dHRpbmdEb3duKSB7Ci0gICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChwcmV2KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtR29pbmdUb1NsZWVwLmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgbUdvaW5nVG9TbGVlcC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobVNodXR0aW5nRG93bikgewotICAgICAgICAgICAgICAgIG5vdGlmeUFsbCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocHJldiAhPSBudWxsKSB7Ci0gICAgICAgICAgICBwcmV2LnJlc3VtZUtleURpc3BhdGNoaW5nTG9ja2VkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJldi5hcHAgIT0gbnVsbCAmJiBwcmV2LmNwdVRpbWVBdFJlc3VtZSA+IDAgJiYgbUJhdHRlcnlTdGF0c1NlcnZpY2UuaXNPbkJhdHRlcnkoKSkgewotICAgICAgICAgICAgbG9uZyBkaWZmID0gMDsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVByb2Nlc3NTdGF0c1RocmVhZCkgewotICAgICAgICAgICAgICAgIGRpZmYgPSBtUHJvY2Vzc1N0YXRzLmdldENwdVRpbWVGb3JQaWQocHJldi5hcHAucGlkKSAtIHByZXYuY3B1VGltZUF0UmVzdW1lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRpZmYgPiAwKSB7Ci0gICAgICAgICAgICAgICAgQmF0dGVyeVN0YXRzSW1wbCBic2kgPSBtQmF0dGVyeVN0YXRzU2VydmljZS5nZXRBY3RpdmVTdGF0aXN0aWNzKCk7Ci0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChic2kpIHsKLSAgICAgICAgICAgICAgICAgICAgQmF0dGVyeVN0YXRzSW1wbC5VaWQuUHJvYyBwcyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnNpLmdldFByb2Nlc3NTdGF0c0xvY2tlZChwcmV2LmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LmluZm8ucGFja2FnZU5hbWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAocHMgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHMuYWRkRm9yZWdyb3VuZFRpbWVMb2NrZWQoZGlmZik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcHJldi5jcHVUaW1lQXRSZXN1bWUgPSAwOyAvLyByZXNldCBpdAotICAgIH0KLQotICAgIC8qKgotICAgICAqIE9uY2Ugd2Uga25vdyB0aGF0IHdlIGhhdmUgYXNrZWQgYW4gYXBwbGljYXRpb24gdG8gcHV0IGFuIGFjdGl2aXR5IGluCi0gICAgICogdGhlIHJlc3VtZWQgc3RhdGUgKGVpdGhlciBieSBsYXVuY2hpbmcgaXQgb3IgZXhwbGljaXRseSB0ZWxsaW5nIGl0KSwKLSAgICAgKiB0aGlzIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIHJlc3Qgb2Ygb3VyIHN0YXRlIHRvIG1hdGNoIHRoYXQgZmFjdC4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgY29tcGxldGVSZXN1bWVMb2NrZWQoSGlzdG9yeVJlY29yZCBuZXh0KSB7Ci0gICAgICAgIG5leHQuaWRsZSA9IGZhbHNlOwotICAgICAgICBuZXh0LnJlc3VsdHMgPSBudWxsOwotICAgICAgICBuZXh0Lm5ld0ludGVudHMgPSBudWxsOwotCi0gICAgICAgIC8vIHNjaGVkdWxlIGFuIGlkbGUgdGltZW91dCBpbiBjYXNlIHRoZSBhcHAgZG9lc24ndCBkbyBpdCBmb3IgdXMuCi0gICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShJRExFX1RJTUVPVVRfTVNHKTsKLSAgICAgICAgbXNnLm9iaiA9IG5leHQ7Ci0gICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChtc2csIElETEVfVElNRU9VVCk7Ci0KLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgd2FzIG5ldmVyIHRvbGQgdG8gcGF1c2UsIHNvIGp1c3Qga2VlcAotICAgICAgICAgICAgLy8gdGhpbmdzIGdvaW5nIGFzLWlzLiAgVG8gbWFpbnRhaW4gb3VyIG93biBzdGF0ZSwKLSAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gZW11bGF0ZSBpdCBjb21pbmcgYmFjayBhbmQgc2F5aW5nIGl0IGlzCi0gICAgICAgICAgICAvLyBpZGxlLgotICAgICAgICAgICAgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShJRExFX05PV19NU0cpOwotICAgICAgICAgICAgbXNnLm9iaiA9IG5leHQ7Ci0gICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVwb3J0UmVzdW1lZEFjdGl2aXR5TG9ja2VkKG5leHQpOwotICAgICAgICAKLSAgICAgICAgbmV4dC50aHVtYm5haWwgPSBudWxsOwotICAgICAgICBzZXRGb2N1c2VkQWN0aXZpdHlMb2NrZWQobmV4dCk7Ci0gICAgICAgIG5leHQucmVzdW1lS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKLSAgICAgICAgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQobnVsbCwgMCk7Ci0gICAgICAgIG1XaW5kb3dNYW5hZ2VyLmV4ZWN1dGVBcHBUcmFuc2l0aW9uKCk7Ci0gICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmNsZWFyKCk7Ci0KLSAgICAgICAgLy8gTWFyayB0aGUgcG9pbnQgd2hlbiB0aGUgYWN0aXZpdHkgaXMgcmVzdW1pbmcKLSAgICAgICAgLy8gVE9ETzogVG8gYmUgbW9yZSBhY2N1cmF0ZSwgdGhlIG1hcmsgc2hvdWxkIGJlIGJlZm9yZSB0aGUgb25DcmVhdGUsCi0gICAgICAgIC8vICAgICAgIG5vdCBhZnRlciB0aGUgb25SZXN1bWUuIEJ1dCBmb3Igc3Vic2VxdWVudCBzdGFydHMsIG9uUmVzdW1lIGlzIGZpbmUuCi0gICAgICAgIGlmIChuZXh0LmFwcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Qcm9jZXNzU3RhdHNUaHJlYWQpIHsKLSAgICAgICAgICAgICAgICBuZXh0LmNwdVRpbWVBdFJlc3VtZSA9IG1Qcm9jZXNzU3RhdHMuZ2V0Q3B1VGltZUZvclBpZChuZXh0LmFwcC5waWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV4dC5jcHVUaW1lQXRSZXN1bWUgPSAwOyAvLyBDb3VsZG4ndCBnZXQgdGhlIGNwdSB0aW1lIG9mIHByb2Nlc3MKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIE1ha2Ugc3VyZSB0aGF0IGFsbCBhY3Rpdml0aWVzIHRoYXQgbmVlZCB0byBiZSB2aXNpYmxlICh0aGF0IGlzLCB0aGV5Ci0gICAgICogY3VycmVudGx5IGNhbiBiZSBzZWVuIGJ5IHRoZSB1c2VyKSBhY3R1YWxseSBhcmUuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKEhpc3RvcnlSZWNvcmQgdG9wLAotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBzdGFydGluZywgU3RyaW5nIG9ubHlUaGlzUHJvY2VzcywgaW50IGNvbmZpZ0NoYW5nZXMpIHsKLSAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAotICAgICAgICAgICAgICAgIFRBRywgImVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlIGJlaGluZCAiICsgdG9wCi0gICAgICAgICAgICAgICAgKyAiIGNvbmZpZ0NoYW5nZXM9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjb25maWdDaGFuZ2VzKSk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIHRvcCBhY3Rpdml0eSBpcyBub3QgZnVsbHNjcmVlbiwgdGhlbiB3ZSBuZWVkIHRvCi0gICAgICAgIC8vIG1ha2Ugc3VyZSBhbnkgYWN0aXZpdGllcyB1bmRlciBpdCBhcmUgbm93IHZpc2libGUuCi0gICAgICAgIGZpbmFsIGludCBjb3VudCA9IG1IaXN0b3J5LnNpemUoKTsKLSAgICAgICAgaW50IGkgPSBjb3VudC0xOwotICAgICAgICB3aGlsZSAobUhpc3RvcnkuZ2V0KGkpICE9IHRvcCkgewotICAgICAgICAgICAgaS0tOwotICAgICAgICB9Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgcjsKLSAgICAgICAgYm9vbGVhbiBiZWhpbmRGdWxsc2NyZWVuID0gZmFsc2U7Ci0gICAgICAgIGZvciAoOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgIFRBRywgIk1ha2UgdmlzaWJsZT8gIiArIHIgKyAiIGZpbmlzaGluZz0iICsgci5maW5pc2hpbmcKLSAgICAgICAgICAgICAgICAgICAgKyAiIHN0YXRlPSIgKyByLnN0YXRlKTsKLSAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGRvVGhpc1Byb2Nlc3MgPSBvbmx5VGhpc1Byb2Nlc3MgPT0gbnVsbAotICAgICAgICAgICAgICAgICAgICB8fCBvbmx5VGhpc1Byb2Nlc3MuZXF1YWxzKHIucHJvY2Vzc05hbWUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBGaXJzdDogaWYgdGhpcyBpcyBub3QgdGhlIGN1cnJlbnQgYWN0aXZpdHkgYmVpbmcgc3RhcnRlZCwgbWFrZQotICAgICAgICAgICAgLy8gc3VyZSBpdCBtYXRjaGVzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICBpZiAociAhPSBzdGFydGluZyAmJiBkb1RoaXNQcm9jZXNzKSB7Ci0gICAgICAgICAgICAgICAgZW5zdXJlQWN0aXZpdHlDb25maWd1cmF0aW9uTG9ja2VkKHIsIDApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoci5hcHAgPT0gbnVsbCB8fCByLmFwcC50aHJlYWQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChvbmx5VGhpc1Byb2Nlc3MgPT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgb25seVRoaXNQcm9jZXNzLmVxdWFscyhyLnByb2Nlc3NOYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IG5lZWRzIHRvIGJlIHZpc2libGUsIGJ1dCBpc24ndCBldmVuCi0gICAgICAgICAgICAgICAgICAgIC8vIHJ1bm5pbmcuLi4gIGdldCBpdCBzdGFydGVkLCBidXQgZG9uJ3QgcmVzdW1lIGl0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTdGFydCBhbmQgZnJlZXplIHNjcmVlbiBmb3IgIiArIHIpOwotICAgICAgICAgICAgICAgICAgICBpZiAociAhPSBzdGFydGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgci5zdGFydEZyZWV6aW5nU2NyZWVuTG9ja2VkKHIuYXBwLCBjb25maWdDaGFuZ2VzKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIXIudmlzaWJsZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTdGFydGluZyBhbmQgbWFraW5nIHZpc2libGU6ICIgKyByKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkociwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHIgIT0gc3RhcnRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U3BlY2lmaWNBY3Rpdml0eUxvY2tlZChyLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB9IGVsc2UgaWYgKHIudmlzaWJsZSkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgYWxyZWFkeSB2aXNpYmxlLCB0aGVuIHRoZXJlIGlzIG5vdGhpbmcKLSAgICAgICAgICAgICAgICAvLyBlbHNlIHRvIGRvIGhlcmUuCi0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiU2tpcHBpbmc6IGFscmVhZHkgdmlzaWJsZSBhdCAiICsgcik7Ci0gICAgICAgICAgICAgICAgci5zdG9wRnJlZXppbmdTY3JlZW5Mb2NrZWQoZmFsc2UpOwotCi0gICAgICAgICAgICB9IGVsc2UgaWYgKG9ubHlUaGlzUHJvY2VzcyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBub3QgY3VycmVudGx5IHZpc2libGUsIGJ1dCBpcyBydW5uaW5nLgotICAgICAgICAgICAgICAgIC8vIFRlbGwgaXQgdG8gYmVjb21lIHZpc2libGUuCi0gICAgICAgICAgICAgICAgci52aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoci5zdGF0ZSAhPSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQgJiYgciAhPSBzdGFydGluZykgewotICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIHBhdXNlZCwgdGVsbCBpdAotICAgICAgICAgICAgICAgICAgICAvLyB0byBub3cgc2hvdyBpdHMgd2luZG93LgotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiTWFraW5nIHZpc2libGUgYW5kIHNjaGVkdWxpbmcgdmlzaWJpbGl0eTogIiArIHIpOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVdpbmRvd1Zpc2liaWxpdHkociwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IHNraXAgb24gYW55IGZhaWx1cmU7IHdlJ2xsIG1ha2UgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZpc2libGUgd2hlbiBpdCBuZXh0IHJlc3RhcnRzLgotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gbWFraW5nIHZpc2liaWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCksIGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBBZ2dyZWdhdGUgY3VycmVudCBjaGFuZ2UgZmxhZ3MuCi0gICAgICAgICAgICBjb25maWdDaGFuZ2VzIHw9IHIuY29uZmlnQ2hhbmdlRmxhZ3M7Ci0KLSAgICAgICAgICAgIGlmIChyLmZ1bGxzY3JlZW4pIHsKLSAgICAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBub3RoaW5nIGVsc2UgbmVlZHMgdG8gYmUgc2hvd24KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTdG9wcGluZzogZnVsbHNjcmVlbiBhdCAiICsgcik7Ci0gICAgICAgICAgICAgICAgYmVoaW5kRnVsbHNjcmVlbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTm93IGZvciBhbnkgYWN0aXZpdGllcyB0aGF0IGFyZW4ndCB2aXNpYmxlIHRvIHRoZSB1c2VyLCBtYWtlCi0gICAgICAgIC8vIHN1cmUgdGhleSBubyBsb25nZXIgYXJlIGtlZXBpbmcgdGhlIHNjcmVlbiBmcm96ZW4uCi0gICAgICAgIHdoaWxlIChpID49IDApIHsKLSAgICAgICAgICAgIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgIFRBRywgIk1ha2UgaW52aXNpYmxlPyAiICsgciArICIgZmluaXNoaW5nPSIgKyByLmZpbmlzaGluZwotICAgICAgICAgICAgICAgICAgICArICIgc3RhdGU9IiArIHIuc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgKyAiIGJlaGluZEZ1bGxzY3JlZW49IiArIGJlaGluZEZ1bGxzY3JlZW4pOwotICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgIGlmIChiZWhpbmRGdWxsc2NyZWVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyLnZpc2libGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiTWFraW5nIGludmlzaWJsZTogIiArIHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgci52aXNpYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkociwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlNUT1BQSU5HCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuU1RPUFBFRCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHIuYXBwICE9IG51bGwgJiYgci5hcHAudGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlNjaGVkdWxpbmcgaW52aXNpYmlsaXR5OiAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVdpbmRvd1Zpc2liaWxpdHkociwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCBza2lwIG9uIGFueSBmYWlsdXJlOyB3ZSdsbCBtYWtlIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmlzaWJsZSB3aGVuIGl0IG5leHQgcmVzdGFydHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gbWFraW5nIGhpZGRlbjogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKSwgZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIkFscmVhZHkgaW52aXNpYmxlOiAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIuZnVsbHNjcmVlbikgewotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiTm93IGJlaGluZEZ1bGxzY3JlZW46ICIgKyByKTsKLSAgICAgICAgICAgICAgICAgICAgYmVoaW5kRnVsbHNjcmVlbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaS0tOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogVmVyc2lvbiBvZiBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZSB0aGF0IGNhbiBlYXNpbHkgYmUgY2FsbGVkIGFueXdoZXJlLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgdm9pZCBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChIaXN0b3J5UmVjb3JkIHN0YXJ0aW5nLAotICAgICAgICAgICAgaW50IGNvbmZpZ0NoYW5nZXMpIHsKLSAgICAgICAgSGlzdG9yeVJlY29yZCByID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICBpZiAociAhPSBudWxsKSB7Ci0gICAgICAgICAgICBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChyLCBzdGFydGluZywgbnVsbCwgY29uZmlnQ2hhbmdlcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVVzYWdlU3RhdHMoSGlzdG9yeVJlY29yZCByZXN1bWVkQ29tcG9uZW50LCBib29sZWFuIHJlc3VtZWQpIHsKKyAgICB2b2lkIHVwZGF0ZVVzYWdlU3RhdHMoQWN0aXZpdHlSZWNvcmQgcmVzdW1lZENvbXBvbmVudCwgYm9vbGVhbiByZXN1bWVkKSB7CiAgICAgICAgIGlmIChyZXN1bWVkKSB7CiAgICAgICAgICAgICBtVXNhZ2VTdGF0c1NlcnZpY2Uubm90ZVJlc3VtZUNvbXBvbmVudChyZXN1bWVkQ29tcG9uZW50LnJlYWxBY3Rpdml0eSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yNDc1LDcgKzE4NDgsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBib29sZWFuIHN0YXJ0SG9tZUFjdGl2aXR5TG9ja2VkKCkgeworICAgIGJvb2xlYW4gc3RhcnRIb21lQWN0aXZpdHlMb2NrZWQoKSB7CiAgICAgICAgIGlmIChtRmFjdG9yeVRlc3QgPT0gU3lzdGVtU2VydmVyLkZBQ1RPUllfVEVTVF9MT1dfTEVWRUwKICAgICAgICAgICAgICAgICAmJiBtVG9wQWN0aW9uID09IG51bGwpIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBydW5uaW5nIGluIGZhY3RvcnkgdGVzdCBtb2RlLCBidXQgdW5hYmxlIHRvIGZpbmQKQEAgLTI1MDIsNyArMTg3NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFJbmZvLmFwcGxpY2F0aW9uSW5mby51aWQpOwogICAgICAgICAgICAgaWYgKGFwcCA9PSBudWxsIHx8IGFwcC5pbnN0cnVtZW50YXRpb25DbGFzcyA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgaW50ZW50LnNldEZsYWdzKGludGVudC5nZXRGbGFncygpIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwotICAgICAgICAgICAgICAgIHN0YXJ0QWN0aXZpdHlMb2NrZWQobnVsbCwgaW50ZW50LCBudWxsLCBudWxsLCAwLCBhSW5mbywKKyAgICAgICAgICAgICAgICBtTWFpblN0YWNrLnN0YXJ0QWN0aXZpdHlMb2NrZWQobnVsbCwgaW50ZW50LCBudWxsLCBudWxsLCAwLCBhSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG51bGwsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI1MTQsNyArMTg4Nyw3IEBACiAgICAgLyoqCiAgICAgICogU3RhcnRzIHRoZSAibmV3IHZlcnNpb24gc2V0dXAgc2NyZWVuIiBpZiBhcHByb3ByaWF0ZS4KICAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgc3RhcnRTZXR1cEFjdGl2aXR5TG9ja2VkKCkgeworICAgIHZvaWQgc3RhcnRTZXR1cEFjdGl2aXR5TG9ja2VkKCkgewogICAgICAgICAvLyBPbmx5IGRvIHRoaXMgb25jZSBwZXIgYm9vdC4KICAgICAgICAgaWYgKG1DaGVja2VkRm9yU2V0dXApIHsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1NTgsMTQgKzE5MzEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgaW50ZW50LnNldEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKTsKICAgICAgICAgICAgICAgICAgICAgaW50ZW50LnNldENvbXBvbmVudChuZXcgQ29tcG9uZW50TmFtZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaS5hY3Rpdml0eUluZm8ucGFja2FnZU5hbWUsIHJpLmFjdGl2aXR5SW5mby5uYW1lKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0QWN0aXZpdHlMb2NrZWQobnVsbCwgaW50ZW50LCBudWxsLCBudWxsLCAwLCByaS5hY3Rpdml0eUluZm8sCisgICAgICAgICAgICAgICAgICAgIG1NYWluU3RhY2suc3RhcnRBY3Rpdml0eUxvY2tlZChudWxsLCBpbnRlbnQsIG51bGwsIG51bGwsIDAsIHJpLmFjdGl2aXR5SW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBudWxsLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBwcml2YXRlIHZvaWQgcmVwb3J0UmVzdW1lZEFjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgcikgeworICAgIHZvaWQgcmVwb3J0UmVzdW1lZEFjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIpIHsKICAgICAgICAgLy9TbG9nLmkoVEFHLCAiKioqKiBSRVBPUlQgUkVTVU1FOiAiICsgcik7CiAgICAgICAgIAogICAgICAgICBmaW5hbCBpbnQgaWRlbnRIYXNoID0gU3lzdGVtLmlkZW50aXR5SGFzaENvZGUocik7CkBAIC0yNTg0LDEyMTAgKzE5NTcsMjcgQEAKICAgICAgICAgfQogICAgICAgICBtV2F0Y2hlcnMuZmluaXNoQnJvYWRjYXN0KCk7CiAgICAgfQotICAgIAotICAgIC8qKgotICAgICAqIEVuc3VyZSB0aGF0IHRoZSB0b3AgYWN0aXZpdHkgaW4gdGhlIHN0YWNrIGlzIHJlc3VtZWQuCi0gICAgICoKLSAgICAgKiBAcGFyYW0gcHJldiBUaGUgcHJldmlvdXNseSByZXN1bWVkIGFjdGl2aXR5LCBmb3Igd2hlbiBpbiB0aGUgcHJvY2VzcwotICAgICAqIG9mIHBhdXNpbmc7IGNhbiBiZSBudWxsIHRvIGNhbGwgZnJvbSBlbHNld2hlcmUuCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiBzb21ldGhpbmcgaXMgYmVpbmcgcmVzdW1lZCwgb3IgZmFsc2UgaWYKLSAgICAgKiBub3RoaW5nIGhhcHBlbmVkLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHByZXYpIHsKLSAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgYWN0aXZpdHkgdGhhdCBpcyBub3QgZmluaXNoaW5nLgotICAgICAgICBIaXN0b3J5UmVjb3JkIG5leHQgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CiAKLSAgICAgICAgLy8gUmVtZW1iZXIgaG93IHdlJ2xsIHByb2Nlc3MgdGhpcyBwYXVzZS9yZXN1bWUgc2l0dWF0aW9uLCBhbmQgZW5zdXJlCi0gICAgICAgIC8vIHRoYXQgdGhlIHN0YXRlIGlzIHJlc2V0IGhvd2V2ZXIgd2Ugd2luZCB1cCBwcm9jZWVkaW5nLgotICAgICAgICBmaW5hbCBib29sZWFuIHVzZXJMZWF2aW5nID0gbVVzZXJMZWF2aW5nOwotICAgICAgICBtVXNlckxlYXZpbmcgPSBmYWxzZTsKLQotICAgICAgICBpZiAobmV4dCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBhY3Rpdml0aWVzISAgTGV0J3MganVzdCBzdGFydCB1cCB0aGUKLSAgICAgICAgICAgIC8vIExhdW5jaGVyLi4uCi0gICAgICAgICAgICByZXR1cm4gc3RhcnRIb21lQWN0aXZpdHlMb2NrZWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5leHQuZGVsYXllZFJlc3VtZSA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgdGhlIHRvcCBhY3Rpdml0eSBpcyB0aGUgcmVzdW1lZCBvbmUsIG5vdGhpbmcgdG8gZG8uCi0gICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IG5leHQgJiYgbmV4dC5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQpIHsKLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGV4ZWN1dGVkIGFueSBwZW5kaW5nIHRyYW5zaXRpb25zLCBzaW5jZSB0aGVyZQotICAgICAgICAgICAgLy8gc2hvdWxkIGJlIG5vdGhpbmcgbGVmdCB0byBkbyBhdCB0aGlzIHBvaW50LgotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuZXhlY3V0ZUFwcFRyYW5zaXRpb24oKTsKLSAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB3ZSBhcmUgc2xlZXBpbmcsIGFuZCB0aGVyZSBpcyBubyByZXN1bWVkIGFjdGl2aXR5LCBhbmQgdGhlIHRvcAotICAgICAgICAvLyBhY3Rpdml0eSBpcyBwYXVzZWQsIHdlbGwgdGhhdCBpcyB0aGUgc3RhdGUgd2Ugd2FudC4KLSAgICAgICAgaWYgKChtU2xlZXBpbmcgfHwgbVNodXR0aW5nRG93bikKLSAgICAgICAgICAgICAgICAmJiBtTGFzdFBhdXNlZEFjdGl2aXR5ID09IG5leHQgJiYgbmV4dC5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlBBVVNFRCkgewotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgZXhlY3V0ZWQgYW55IHBlbmRpbmcgdHJhbnNpdGlvbnMsIHNpbmNlIHRoZXJlCi0gICAgICAgICAgICAvLyBzaG91bGQgYmUgbm90aGluZyBsZWZ0IHRvIGRvIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5leGVjdXRlQXBwVHJhbnNpdGlvbigpOwotICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gVGhlIGFjdGl2aXR5IG1heSBiZSB3YWl0aW5nIGZvciBzdG9wLCBidXQgdGhhdCBpcyBubyBsb25nZXIKLSAgICAgICAgLy8gYXBwcm9wcmlhdGUgZm9yIGl0LgotICAgICAgICBtU3RvcHBpbmdBY3Rpdml0aWVzLnJlbW92ZShuZXh0KTsKLSAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5yZW1vdmUobmV4dCk7Ci0KLSAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlJlc3VtaW5nICIgKyBuZXh0KTsKLQotICAgICAgICAvLyBJZiB3ZSBhcmUgY3VycmVudGx5IHBhdXNpbmcgYW4gYWN0aXZpdHksIHRoZW4gZG9uJ3QgZG8gYW55dGhpbmcKLSAgICAgICAgLy8gdW50aWwgdGhhdCBpcyBkb25lLgotICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiU2tpcCByZXN1bWU6IHBhdXNpbmc9IiArIG1QYXVzaW5nQWN0aXZpdHkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgbmVlZCB0byBzdGFydCBwYXVzaW5nIHRoZSBjdXJyZW50IGFjdGl2aXR5IHNvIHRoZSB0b3Agb25lCi0gICAgICAgIC8vIGNhbiBiZSByZXN1bWVkLi4uCi0gICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJTa2lwIHJlc3VtZTogbmVlZCB0byBzdGFydCBwYXVzaW5nIik7Ci0gICAgICAgICAgICBzdGFydFBhdXNpbmdMb2NrZWQodXNlckxlYXZpbmcsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHByZXYgIT0gbnVsbCAmJiBwcmV2ICE9IG5leHQpIHsKLSAgICAgICAgICAgIGlmICghcHJldi53YWl0aW5nVmlzaWJsZSAmJiBuZXh0ICE9IG51bGwgJiYgIW5leHQubm93VmlzaWJsZSkgewotICAgICAgICAgICAgICAgIHByZXYud2FpdGluZ1Zpc2libGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMuYWRkKHByZXYpOwotICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlJlc3VtaW5nIHRvcCwgd2FpdGluZyB2aXNpYmxlIHRvIGhpZGU6ICIgKyBwcmV2KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIG5leHQgYWN0aXZpdHkgaXMgYWxyZWFkeSB2aXNpYmxlLCBzbyBoaWRlIHRoZSBwcmV2aW91cwotICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5J3Mgd2luZG93cyByaWdodCBub3cgc28gd2UgY2FuIHNob3cgdGhlIG5ldyBvbmUgQVNBUC4KLSAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgaWYgdGhlIHByZXZpb3VzIGlzIGZpbmlzaGluZywgd2hpY2ggc2hvdWxkIG1lYW4KLSAgICAgICAgICAgICAgICAvLyBpdCBpcyBvbiB0b3Agb2YgdGhlIG9uZSBiZWluZyByZXN1bWVkIHNvIGhpZGluZyBpdCBxdWlja2x5Ci0gICAgICAgICAgICAgICAgLy8gaXMgZ29vZC4gIE90aGVyd2lzZSwgd2Ugd2FudCB0byBkbyB0aGUgbm9ybWFsIHJvdXRlIG9mIGFsbG93aW5nCi0gICAgICAgICAgICAgICAgLy8gdGhlIHJlc3VtZWQgYWN0aXZpdHkgdG8gYmUgc2hvd24gc28gd2UgY2FuIGRlY2lkZSBpZiB0aGUKLSAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBzaG91bGQgYWN0dWFsbHkgYmUgaGlkZGVuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQotICAgICAgICAgICAgICAgIC8vIG5ldyBvbmUgaXMgZm91bmQgdG8gYmUgZnVsbC1zY3JlZW4gb3Igbm90LgotICAgICAgICAgICAgICAgIGlmIChwcmV2LmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHByZXYsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIk5vdCB3YWl0aW5nIGZvciB2aXNpYmxlIHRvIGhpZGU6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHByZXYgKyAiLCB3YWl0aW5nVmlzaWJsZT0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAocHJldiAhPSBudWxsID8gcHJldi53YWl0aW5nVmlzaWJsZSA6IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBub3dWaXNpYmxlPSIgKyBuZXh0Lm5vd1Zpc2libGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJQcmV2aW91cyBhbHJlYWR5IHZpc2libGUgYnV0IHN0aWxsIHdhaXRpbmcgdG8gaGlkZTogIgotICAgICAgICAgICAgICAgICAgICAgICAgKyBwcmV2ICsgIiwgd2FpdGluZ1Zpc2libGU9IgotICAgICAgICAgICAgICAgICAgICAgICAgKyAocHJldiAhPSBudWxsID8gcHJldi53YWl0aW5nVmlzaWJsZSA6IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICArICIsIG5vd1Zpc2libGU9IiArIG5leHQubm93VmlzaWJsZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgYXJlIHN0YXJ0aW5nIHVwIHRoZSBuZXh0IGFjdGl2aXR5LCBzbyB0ZWxsIHRoZSB3aW5kb3cgbWFuYWdlcgotICAgICAgICAvLyB0aGF0IHRoZSBwcmV2aW91cyBvbmUgd2lsbCBiZSBoaWRkZW4gc29vbi4gIFRoaXMgd2F5IGl0IGNhbiBrbm93Ci0gICAgICAgIC8vIHRvIGlnbm9yZSBpdCB3aGVuIGNvbXB1dGluZyB0aGUgZGVzaXJlZCBzY3JlZW4gb3JpZW50YXRpb24uCi0gICAgICAgIGlmIChwcmV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChwcmV2LmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19UUkFOU0lUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgIlByZXBhcmUgY2xvc2UgdHJhbnNpdGlvbjogcHJldj0iICsgcHJldik7Ci0gICAgICAgICAgICAgICAgaWYgKG1Ob0FuaW1BY3Rpdml0aWVzLmNvbnRhaW5zKHByZXYpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihwcmV2LnRhc2sgPT0gbmV4dC50YXNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfQUNUSVZJVFlfQ0xPU0UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9UQVNLX0NMT1NFKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwV2lsbEJlSGlkZGVuKHByZXYpOwotICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkocHJldiwgZmFsc2UpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICJQcmVwYXJlIG9wZW4gdHJhbnNpdGlvbjogcHJldj0iICsgcHJldik7Ci0gICAgICAgICAgICAgICAgaWYgKG1Ob0FuaW1BY3Rpdml0aWVzLmNvbnRhaW5zKG5leHQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihwcmV2LnRhc2sgPT0gbmV4dC50YXNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfQUNUSVZJVFlfT1BFTgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfT1BFTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwV2lsbEJlSGlkZGVuKHByZXYpOwotICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkocHJldiwgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG1IaXN0b3J5LnNpemUoKSA+IDEpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19UUkFOU0lUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAiUHJlcGFyZSBvcGVuIHRyYW5zaXRpb246IG5vIHByZXZpb3VzIik7Ci0gICAgICAgICAgICBpZiAobU5vQW5pbUFjdGl2aXRpZXMuY29udGFpbnMobmV4dCkpIHsKLSAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfTk9ORSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9PUEVOKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuZXh0LmFwcCAhPSBudWxsICYmIG5leHQuYXBwLnRocmVhZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiUmVzdW1lIHJ1bm5pbmc6ICIgKyBuZXh0KTsKLQotICAgICAgICAgICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBub3cgYmVjb21pbmcgdmlzaWJsZS4KLSAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkobmV4dCwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgbGFzdFJlc3VtZWRBY3Rpdml0eSA9IG1SZXN1bWVkQWN0aXZpdHk7Ci0gICAgICAgICAgICBBY3Rpdml0eVN0YXRlIGxhc3RTdGF0ZSA9IG5leHQuc3RhdGU7Ci0KLSAgICAgICAgICAgIHVwZGF0ZUNwdVN0YXRzKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG5leHQuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQ7Ci0gICAgICAgICAgICBtUmVzdW1lZEFjdGl2aXR5ID0gbmV4dDsKLSAgICAgICAgICAgIG5leHQudGFzay50b3VjaEFjdGl2ZVRpbWUoKTsKLSAgICAgICAgICAgIHVwZGF0ZUxydVByb2Nlc3NMb2NrZWQobmV4dC5hcHAsIHRydWUsIHRydWUpOwotICAgICAgICAgICAgdXBkYXRlTFJVTGlzdExvY2tlZChuZXh0KTsKLQotICAgICAgICAgICAgLy8gSGF2ZSB0aGUgd2luZG93IG1hbmFnZXIgcmUtZXZhbHVhdGUgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAgICAgICAvLyB0aGUgc2NyZWVuIGJhc2VkIG9uIHRoZSBuZXcgYWN0aXZpdHkgb3JkZXIuCi0gICAgICAgICAgICBib29sZWFuIHVwZGF0ZWQ7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGNvbmZpZyA9IG1XaW5kb3dNYW5hZ2VyLnVwZGF0ZU9yaWVudGF0aW9uRnJvbUFwcFRva2VucygKLSAgICAgICAgICAgICAgICAgICAgICAgIG1Db25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5tYXlGcmVlemVTY3JlZW5Mb2NrZWQobmV4dC5hcHApID8gbmV4dCA6IG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBuZXh0LmZyb3plbkJlZm9yZURlc3Ryb3kgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB1cGRhdGVkID0gdXBkYXRlQ29uZmlndXJhdGlvbkxvY2tlZChjb25maWcsIG5leHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCF1cGRhdGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGNvbmZpZ3VyYXRpb24gdXBkYXRlIHdhc24ndCBhYmxlIHRvIGtlZXAgdGhlIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgLy8gaW5zdGFuY2Ugb2YgdGhlIGFjdGl2aXR5LCBhbmQgaW5zdGVhZCBzdGFydGVkIGEgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgYmUgYWxsIGRvbmUsIGJ1dCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBvdXIgYWN0aXZpdHkKLSAgICAgICAgICAgICAgICAvLyBpcyBzdGlsbCBhdCB0aGUgdG9wIGFuZCBzY2hlZHVsZSBhbm90aGVyIHJ1biBpZiBzb21ldGhpbmcKLSAgICAgICAgICAgICAgICAvLyB3ZWlyZCBoYXBwZW5lZC4KLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIG5leHROZXh0ID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cuaShUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZpdHkgY29uZmlnIGNoYW5nZWQgZHVyaW5nIHJlc3VtZTogIiArIG5leHQKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgbmV3IG5leHQ6ICIgKyBuZXh0TmV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHROZXh0ICE9IG5leHQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRG8gb3ZlciEKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZShSRVNVTUVfVE9QX0FDVElWSVRZX01TRyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNldEZvY3VzZWRBY3Rpdml0eUxvY2tlZChuZXh0KTsKLSAgICAgICAgICAgICAgICBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChudWxsLCAwKTsKLSAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5leGVjdXRlQXBwVHJhbnNpdGlvbigpOwotICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgLy8gRGVsaXZlciBhbGwgcGVuZGluZyByZXN1bHRzLgotICAgICAgICAgICAgICAgIEFycmF5TGlzdCBhID0gbmV4dC5yZXN1bHRzOwotICAgICAgICAgICAgICAgIGlmIChhICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IE4gPSBhLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0LmZpbmlzaGluZyAmJiBOID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiRGVsaXZlcmluZyByZXN1bHRzIHRvICIgKyBuZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjogIiArIGEpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHAudGhyZWFkLnNjaGVkdWxlU2VuZFJlc3VsdChuZXh0LCBhKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChuZXh0Lm5ld0ludGVudHMgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBuZXh0LmFwcC50aHJlYWQuc2NoZWR1bGVOZXdJbnRlbnQobmV4dC5uZXdJbnRlbnRzLCBuZXh0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9SRVNVTUVfQUNUSVZJVFksCi0gICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShuZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQudGFzay50YXNrSWQsIG5leHQuc2hvcnRDb21wb25lbnROYW1lKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBuZXh0LmFwcC50aHJlYWQuc2NoZWR1bGVSZXN1bWVBY3Rpdml0eShuZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXh0VHJhbnNpdGlvbkZvcndhcmQoKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcGF1c2VJZlNsZWVwaW5nTG9ja2VkKCk7Ci0KLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2hvb3BzLCBuZWVkIHRvIHJlc3RhcnQgdGhpcyBhY3Rpdml0eSEKLSAgICAgICAgICAgICAgICBuZXh0LnN0YXRlID0gbGFzdFN0YXRlOwotICAgICAgICAgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBsYXN0UmVzdW1lZEFjdGl2aXR5OwotICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJSZXN0YXJ0aW5nIGJlY2F1c2UgcHJvY2VzcyBkaWVkOiAiICsgbmV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFuZXh0Lmhhc0JlZW5MYXVuY2hlZCkgewotICAgICAgICAgICAgICAgICAgICBuZXh0Lmhhc0JlZW5MYXVuY2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFNIT1dfQVBQX1NUQVJUSU5HX0lDT04pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFN0YXJ0aW5nV2luZG93KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LCBuZXh0LnBhY2thZ2VOYW1lLCBuZXh0LnRoZW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Lm5vbkxvY2FsaXplZExhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmxhYmVsUmVzLCBuZXh0Lmljb24sIG51bGwsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXJ0U3BlY2lmaWNBY3Rpdml0eUxvY2tlZChuZXh0LCB0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZyb20gdGhpcyBwb2ludCBvbiwgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcgdGhlcmUgaXMgbm8gd2F5Ci0gICAgICAgICAgICAvLyB0byByZWNvdmVyIHRoZSBhY3Rpdml0eS4KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbmV4dC52aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb21wbGV0ZVJlc3VtZUxvY2tlZChuZXh0KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgYW55IGV4Y2VwdGlvbiBnZXRzIHRocm93biwgdG9zcyBhd2F5IHRoaXMKLSAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSBhbmQgdHJ5IHRoZSBuZXh0IG9uZS4KLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBkdXJpbmcgcmVzdW1lIG9mICIgKyBuZXh0LCBlKTsKLSAgICAgICAgICAgICAgICByZXF1ZXN0RmluaXNoQWN0aXZpdHlMb2NrZWQobmV4dCwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlc3VtZS1leGNlcHRpb24iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRGlkbid0IG5lZWQgdG8gdXNlIHRoZSBpY2ljbGUsIGFuZCBpdCBpcyBub3cgb3V0IG9mIGRhdGUuCi0gICAgICAgICAgICBuZXh0LmljaWNsZSA9IG51bGw7Ci0gICAgICAgICAgICBuZXh0LmhhdmVTdGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgbmV4dC5zdG9wcGVkID0gZmFsc2U7Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdob29wcywgbmVlZCB0byByZXN0YXJ0IHRoaXMgYWN0aXZpdHkhCi0gICAgICAgICAgICBpZiAoIW5leHQuaGFzQmVlbkxhdW5jaGVkKSB7Ci0gICAgICAgICAgICAgICAgbmV4dC5oYXNCZWVuTGF1bmNoZWQgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoU0hPV19BUFBfU1RBUlRJTkdfSUNPTikgewotICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBTdGFydGluZ1dpbmRvdygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LCBuZXh0LnBhY2thZ2VOYW1lLCBuZXh0LnRoZW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQubm9uTG9jYWxpemVkTGFiZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5sYWJlbFJlcywgbmV4dC5pY29uLCBudWxsLCB0cnVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlJlc3RhcnRpbmc6ICIgKyBuZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXJ0U3BlY2lmaWNBY3Rpdml0eUxvY2tlZChuZXh0LCB0cnVlLCB0cnVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCBzdGFydEFjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgciwgYm9vbGVhbiBuZXdUYXNrLAotICAgICAgICAgICAgYm9vbGVhbiBkb1Jlc3VtZSkgewotICAgICAgICBmaW5hbCBpbnQgTkggPSBtSGlzdG9yeS5zaXplKCk7Ci0KLSAgICAgICAgaW50IGFkZFBvcyA9IC0xOwotICAgICAgICAKLSAgICAgICAgaWYgKCFuZXdUYXNrKSB7Ci0gICAgICAgICAgICAvLyBJZiBzdGFydGluZyBpbiBhbiBleGlzdGluZyB0YXNrLCBmaW5kIHdoZXJlIHRoYXQgaXMuLi4KLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgbmV4dCA9IG51bGw7Ci0gICAgICAgICAgICBib29sZWFuIHN0YXJ0SXQgPSB0cnVlOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IE5ILTE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBwID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHAudGFzayA9PSByLnRhc2spIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gSGVyZSBpdCBpcyEgIE5vdywgaWYgdGhpcyBpcyBub3QgeWV0IHZpc2libGUgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIC8vIHVzZXIsIHRoZW4ganVzdCBhZGQgaXQgd2l0aG91dCBzdGFydGluZzsgaXQgd2lsbAotICAgICAgICAgICAgICAgICAgICAvLyBnZXQgc3RhcnRlZCB3aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyBiYWNrIHRvIGl0LgotICAgICAgICAgICAgICAgICAgICBhZGRQb3MgPSBpKzE7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RhcnRJdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnkuYWRkKGFkZFBvcywgcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByLmluSGlzdG9yeSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICByLnRhc2subnVtQWN0aXZpdGllcysrOwotICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuYWRkQXBwVG9rZW4oYWRkUG9zLCByLCByLnRhc2sudGFza0lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmluZm8uc2NyZWVuT3JpZW50YXRpb24sIHIuZnVsbHNjcmVlbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocC5mdWxsc2NyZWVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0SXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV4dCA9IHA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQbGFjZSBhIG5ldyBhY3Rpdml0eSBhdCB0b3Agb2Ygc3RhY2ssIHNvIGl0IGlzIG5leHQgdG8gaW50ZXJhY3QKLSAgICAgICAgLy8gd2l0aCB0aGUgdXNlci4KLSAgICAgICAgaWYgKGFkZFBvcyA8IDApIHsKLSAgICAgICAgICAgIGFkZFBvcyA9IG1IaXN0b3J5LnNpemUoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBwbGFjaW5nIHRoZSBuZXcgYWN0aXZpdHkgZnJvbnRtb3N0LCB3ZSBkbyBub3Qgd2FudAotICAgICAgICAvLyB0byBkZWxpdmVyIHRoZSBvblVzZXJMZWF2aW5nIGNhbGxiYWNrIHRvIHRoZSBhY3R1YWwgZnJvbnRtb3N0Ci0gICAgICAgIC8vIGFjdGl2aXR5Ci0gICAgICAgIGlmIChhZGRQb3MgPCBOSCkgewotICAgICAgICAgICAgbVVzZXJMZWF2aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHLCAic3RhcnRBY3Rpdml0eSgpIGJlaGluZCBmcm9udCwgbVVzZXJMZWF2aW5nPWZhbHNlIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIFNsb3QgdGhlIGFjdGl2aXR5IGludG8gdGhlIGhpc3Rvcnkgc3RhY2sgYW5kIHByb2NlZWQKLSAgICAgICAgbUhpc3RvcnkuYWRkKGFkZFBvcywgcik7Ci0gICAgICAgIHIuaW5IaXN0b3J5ID0gdHJ1ZTsKLSAgICAgICAgci5mcm9udE9mVGFzayA9IG5ld1Rhc2s7Ci0gICAgICAgIHIudGFzay5udW1BY3Rpdml0aWVzKys7Ci0gICAgICAgIGlmIChOSCA+IDApIHsKLSAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2hvdyB0aGUgc3RhcnRpbmcgcHJldmlldyB3aW5kb3cgaWYgd2UgYXJlCi0gICAgICAgICAgICAvLyBzd2l0Y2hpbmcgdG8gYSBuZXcgdGFzaywgb3IgdGhlIG5leHQgYWN0aXZpdHkncyBwcm9jZXNzIGlzCi0gICAgICAgICAgICAvLyBub3QgY3VycmVudGx5IHJ1bm5pbmcuCi0gICAgICAgICAgICBib29sZWFuIHNob3dTdGFydGluZ0ljb24gPSBuZXdUYXNrOwotICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwcm9jID0gci5hcHA7Ci0gICAgICAgICAgICBpZiAocHJvYyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcHJvYyA9IG1Qcm9jZXNzTmFtZXMuZ2V0KHIucHJvY2Vzc05hbWUsIHIuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwcm9jID09IG51bGwgfHwgcHJvYy50aHJlYWQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHNob3dTdGFydGluZ0ljb24gPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICJQcmVwYXJlIG9wZW4gdHJhbnNpdGlvbjogc3RhcnRpbmcgIiArIHIpOwotICAgICAgICAgICAgaWYgKChyLmludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX05PX0FOSU1BVElPTikgIT0gMCkgewotICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKLSAgICAgICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5hZGQocik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKChyLmludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1dIRU5fVEFTS19SRVNFVCkgIT0gMCkgewotICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9UQVNLX09QRU4pOwotICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLnJlbW92ZShyKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24obmV3VGFzawotICAgICAgICAgICAgICAgICAgICAgICAgPyBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19PUEVOCi0gICAgICAgICAgICAgICAgICAgICAgICA6IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9PUEVOKTsKLSAgICAgICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5yZW1vdmUocik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5hZGRBcHBUb2tlbigKLSAgICAgICAgICAgICAgICAgICAgYWRkUG9zLCByLCByLnRhc2sudGFza0lkLCByLmluZm8uc2NyZWVuT3JpZW50YXRpb24sIHIuZnVsbHNjcmVlbik7Ci0gICAgICAgICAgICBib29sZWFuIGRvU2hvdyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAobmV3VGFzaykgewotICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoaXMgYWN0aXZpdHkgaXMgc3RhcnRpbmcgZnJlc2gsIHdlIHN0aWxsIG5lZWQKLSAgICAgICAgICAgICAgICAvLyB0byByZXNldCBpdCB0byBtYWtlIHN1cmUgd2UgYXBwbHkgYWZmaW5pdGllcyB0byBtb3ZlIGFueQotICAgICAgICAgICAgICAgIC8vIGV4aXN0aW5nIGFjdGl2aXRpZXMgZnJvbSBvdGhlciB0YXNrcyBpbiB0byBpdC4KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGhhcyByZXF1ZXN0ZWQgdGhhdCB0aGUgdGFyZ2V0IHRhc2sgYmUKLSAgICAgICAgICAgICAgICAvLyByZXNldCwgdGhlbiBkbyBzby4KLSAgICAgICAgICAgICAgICBpZiAoKHIuaW50ZW50LmdldEZsYWdzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICZJbnRlbnQuRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICByZXNldFRhc2tJZk5lZWRlZExvY2tlZChyLCByKTsKLSAgICAgICAgICAgICAgICAgICAgZG9TaG93ID0gdG9wUnVubmluZ05vbkRlbGF5ZWRBY3Rpdml0eUxvY2tlZChudWxsKSA9PSByOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChTSE9XX0FQUF9TVEFSVElOR19JQ09OICYmIGRvU2hvdykgewotICAgICAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UgYXJlIHRyYW5zaXRpb25pbmcgZnJvbSBhbm90aGVyIGFjdGl2aXR5IHRoYXQgaXMKLSAgICAgICAgICAgICAgICAvLyAiaGFzIHRoZSBzYW1lIHN0YXJ0aW5nIGljb24iIGFzIHRoZSBuZXh0IG9uZS4gIFRoaXMgYWxsb3dzIHRoZQotICAgICAgICAgICAgICAgIC8vIHdpbmRvdyBtYW5hZ2VyIHRvIGtlZXAgdGhlIHByZXZpb3VzIHdpbmRvdyBpdCBoYWQgcHJldmlvdXNseQotICAgICAgICAgICAgICAgIC8vIGNyZWF0ZWQsIGlmIGl0IHN0aWxsIGhhZCBvbmUuCi0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBwcmV2ID0gbVJlc3VtZWRBY3Rpdml0eTsKLSAgICAgICAgICAgICAgICBpZiAocHJldiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmV1c2UgdGhlIHByZXZpb3VzIHN0YXJ0aW5nIHByZXZpZXcgaWY6Ci0gICAgICAgICAgICAgICAgICAgIC8vICgxKSBUaGUgY3VycmVudCBhY3Rpdml0eSBpcyBpbiBhIGRpZmZlcmVudCB0YXNrLgotICAgICAgICAgICAgICAgICAgICBpZiAocHJldi50YXNrICE9IHIudGFzaykgcHJldiA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIC8vICgyKSBUaGUgY3VycmVudCBhY3Rpdml0eSBpcyBhbHJlYWR5IGRpc3BsYXllZC4KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocHJldi5ub3dWaXNpYmxlKSBwcmV2ID0gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwU3RhcnRpbmdXaW5kb3coCi0gICAgICAgICAgICAgICAgICAgICAgICByLCByLnBhY2thZ2VOYW1lLCByLnRoZW1lLCByLm5vbkxvY2FsaXplZExhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgci5sYWJlbFJlcywgci5pY29uLCBwcmV2LCBzaG93U3RhcnRpbmdJY29uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IGFjdGl2aXR5LCBkb24ndCBkbyBhbnkgZmFuY3kgYW5pbWF0aW9ucywKLSAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgaXMgbm90aGluZyBmb3IgaXQgdG8gYW5pbWF0ZSBvbiB0b3Agb2YuCi0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5hZGRBcHBUb2tlbihhZGRQb3MsIHIsIHIudGFzay50YXNrSWQsCi0gICAgICAgICAgICAgICAgICAgIHIuaW5mby5zY3JlZW5PcmllbnRhdGlvbiwgci5mdWxsc2NyZWVuKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZG9SZXN1bWUpIHsKLSAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUGVyZm9ybSBjbGVhciBvcGVyYXRpb24gYXMgcmVxdWVzdGVkIGJ5Ci0gICAgICoge0BsaW5rIEludGVudCNGTEFHX0FDVElWSVRZX0NMRUFSX1RPUH06IHNlYXJjaCBmcm9tIHRoZSB0b3Agb2YgdGhlCi0gICAgICogc3RhY2sgdG8gdGhlIGdpdmVuIHRhc2ssIHRoZW4gbG9vayBmb3IKLSAgICAgKiBhbiBpbnN0YW5jZSBvZiB0aGF0IGFjdGl2aXR5IGluIHRoZSBzdGFjayBhbmQsIGlmIGZvdW5kLCBmaW5pc2ggYWxsCi0gICAgICogYWN0aXZpdGllcyBvbiB0b3Agb2YgaXQgYW5kIHJldHVybiB0aGUgaW5zdGFuY2UuCi0gICAgICoKLSAgICAgKiBAcGFyYW0gbmV3UiBEZXNjcmlwdGlvbiBvZiB0aGUgbmV3IGFjdGl2aXR5IGJlaW5nIHN0YXJ0ZWQuCi0gICAgICogQHJldHVybiBSZXR1cm5zIHRoZSBvbGQgYWN0aXZpdHkgdGhhdCBzaG91bGQgYmUgY29udGludWUgdG8gYmUgdXNlZCwKLSAgICAgKiBvciBudWxsIGlmIG5vbmUgd2FzIGZvdW5kLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCBwZXJmb3JtQ2xlYXJUYXNrTG9ja2VkKGludCB0YXNrSWQsCi0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIG5ld1IsIGludCBsYXVuY2hGbGFncywgYm9vbGVhbiBkb0NsZWFyKSB7Ci0gICAgICAgIGludCBpID0gbUhpc3Rvcnkuc2l6ZSgpOwotICAgICAgICAKLSAgICAgICAgLy8gRmlyc3QgZmluZCB0aGUgcmVxdWVzdGVkIHRhc2suCi0gICAgICAgIHdoaWxlIChpID4gMCkgewotICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKHIudGFzay50YXNrSWQgPT0gdGFza0lkKSB7Ci0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBOb3cgY2xlYXIgaXQuCi0gICAgICAgIHdoaWxlIChpID4gMCkgewotICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoci50YXNrLnRhc2tJZCAhPSB0YXNrSWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyLnJlYWxBY3Rpdml0eS5lcXVhbHMobmV3Ui5yZWFsQWN0aXZpdHkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSGVyZSBpdCBpcyEgIE5vdyBmaW5pc2ggZXZlcnl0aGluZyBpbiBmcm9udC4uLgotICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgcmV0ID0gcjsKLSAgICAgICAgICAgICAgICBpZiAoZG9DbGVhcikgewotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IChtSGlzdG9yeS5zaXplKCktMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsICJjbGVhciIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIEZpbmFsbHksIGlmIHRoaXMgaXMgYSBub3JtYWwgbGF1bmNoIG1vZGUgKHRoYXQgaXMsIG5vdAotICAgICAgICAgICAgICAgIC8vIGV4cGVjdGluZyBvbk5ld0ludGVudCgpKSwgdGhlbiB3ZSB3aWxsIGZpbmlzaCB0aGUgY3VycmVudAotICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlIG9mIHRoZSBhY3Rpdml0eSBzbyBhIG5ldyBmcmVzaCBvbmUgY2FuIGJlIHN0YXJ0ZWQuCi0gICAgICAgICAgICAgICAgaWYgKHJldC5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfTVVMVElQTEUKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmV0LmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHJldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEFjdGl2aXR5TG9ja2VkKHJldCwgaW5kZXgsIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsICJjbGVhciIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEZpbmQgdGhlIGFjdGl2aXR5IGluIHRoZSBoaXN0b3J5IHN0YWNrIHdpdGhpbiB0aGUgZ2l2ZW4gdGFzay4gIFJldHVybnMKLSAgICAgKiB0aGUgaW5kZXggd2l0aGluIHRoZSBoaXN0b3J5IGF0IHdoaWNoIGl0J3MgZm91bmQsIG9yIDwgMCBpZiBub3QgZm91bmQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgZmluZEFjdGl2aXR5SW5IaXN0b3J5TG9ja2VkKEhpc3RvcnlSZWNvcmQgciwgaW50IHRhc2spIHsKLSAgICAgICAgaW50IGkgPSBtSGlzdG9yeS5zaXplKCk7Ci0gICAgICAgIHdoaWxlIChpID4gMCkgewotICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBjYW5kaWRhdGUgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnRhc2sudGFza0lkICE9IHRhc2spIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUucmVhbEFjdGl2aXR5LmVxdWFscyhyLnJlYWxBY3Rpdml0eSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZW9yZGVyIHRoZSBoaXN0b3J5IHN0YWNrIHNvIHRoYXQgdGhlIGFjdGl2aXR5IGF0IHRoZSBnaXZlbiBpbmRleCBpcwotICAgICAqIGJyb3VnaHQgdG8gdGhlIGZyb250LgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCBtb3ZlQWN0aXZpdHlUb0Zyb250TG9ja2VkKGludCB3aGVyZSkgewotICAgICAgICBIaXN0b3J5UmVjb3JkIG5ld1RvcCA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LnJlbW92ZSh3aGVyZSk7Ci0gICAgICAgIGludCB0b3AgPSBtSGlzdG9yeS5zaXplKCk7Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgb2xkVG9wID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KHRvcC0xKTsKLSAgICAgICAgbUhpc3RvcnkuYWRkKHRvcCwgbmV3VG9wKTsKLSAgICAgICAgb2xkVG9wLmZyb250T2ZUYXNrID0gZmFsc2U7Ci0gICAgICAgIG5ld1RvcC5mcm9udE9mVGFzayA9IHRydWU7Ci0gICAgICAgIHJldHVybiBuZXdUb3A7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRGVsaXZlciBhIG5ldyBJbnRlbnQgdG8gYW4gZXhpc3RpbmcgYWN0aXZpdHksIHNvIHRoYXQgaXRzIG9uTmV3SW50ZW50KCkKLSAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYXQgdGhlIHByb3BlciB0aW1lLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgdm9pZCBkZWxpdmVyTmV3SW50ZW50TG9ja2VkKEhpc3RvcnlSZWNvcmQgciwgSW50ZW50IGludGVudCkgewotICAgICAgICBib29sZWFuIHNlbnQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHIuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5SRVNVTUVECi0gICAgICAgICAgICAgICAgJiYgci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBBcnJheUxpc3Q8SW50ZW50PiBhciA9IG5ldyBBcnJheUxpc3Q8SW50ZW50PigpOwotICAgICAgICAgICAgICAgIGFyLmFkZChuZXcgSW50ZW50KGludGVudCkpOwotICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZU5ld0ludGVudChhciwgcik7Ci0gICAgICAgICAgICAgICAgc2VudCA9IHRydWU7Ci0gICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIHNlbmRpbmcgbmV3IGludGVudCB0byAiICsgciwgZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFzZW50KSB7Ci0gICAgICAgICAgICByLmFkZE5ld0ludGVudExvY2tlZChuZXcgSW50ZW50KGludGVudCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGxvZ1N0YXJ0QWN0aXZpdHkoaW50IHRhZywgSGlzdG9yeVJlY29yZCByLAotICAgICAgICAgICAgVGFza1JlY29yZCB0YXNrKSB7Ci0gICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQodGFnLAotICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLCB0YXNrLnRhc2tJZCwKLSAgICAgICAgICAgICAgICByLnNob3J0Q29tcG9uZW50TmFtZSwgci5pbnRlbnQuZ2V0QWN0aW9uKCksCi0gICAgICAgICAgICAgICAgci5pbnRlbnQuZ2V0VHlwZSgpLCByLmludGVudC5nZXREYXRhU3RyaW5nKCksCi0gICAgICAgICAgICAgICAgci5pbnRlbnQuZ2V0RmxhZ3MoKSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0eUxvY2tlZChJQXBwbGljYXRpb25UaHJlYWQgY2FsbGVyLAotICAgICAgICAgICAgSW50ZW50IGludGVudCwgU3RyaW5nIHJlc29sdmVkVHlwZSwKLSAgICAgICAgICAgIFVyaVtdIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywKLSAgICAgICAgICAgIGludCBncmFudGVkTW9kZSwgQWN0aXZpdHlJbmZvIGFJbmZvLCBJQmluZGVyIHJlc3VsdFRvLAotICAgICAgICAgICAgU3RyaW5nIHJlc3VsdFdobywgaW50IHJlcXVlc3RDb2RlLAotICAgICAgICAgICAgaW50IGNhbGxpbmdQaWQsIGludCBjYWxsaW5nVWlkLCBib29sZWFuIG9ubHlJZk5lZWRlZCwKLSAgICAgICAgICAgIGJvb2xlYW4gY29tcG9uZW50U3BlY2lmaWVkKSB7Ci0gICAgICAgIFNsb2cuaShUQUcsICJTdGFydGluZyBhY3Rpdml0eTogIiArIGludGVudCk7Ci0KLSAgICAgICAgSGlzdG9yeVJlY29yZCBzb3VyY2VSZWNvcmQgPSBudWxsOwotICAgICAgICBIaXN0b3J5UmVjb3JkIHJlc3VsdFJlY29yZCA9IG51bGw7Ci0gICAgICAgIGlmIChyZXN1bHRUbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQocmVzdWx0VG8pOwotICAgICAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudigKLSAgICAgICAgICAgICAgICBUQUcsICJTZW5kaW5nIHJlc3VsdCB0byAiICsgcmVzdWx0VG8gKyAiIChpbmRleCAiICsgaW5kZXggKyAiKSIpOwotICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0Q29kZSA+PSAwICYmICFzb3VyY2VSZWNvcmQuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCA9IHNvdXJjZVJlY29yZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgbGF1bmNoRmxhZ3MgPSBpbnRlbnQuZ2V0RmxhZ3MoKTsKLQotICAgICAgICBpZiAoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX0ZPUldBUkRfUkVTVUxUKSAhPSAwCi0gICAgICAgICAgICAgICAgJiYgc291cmNlUmVjb3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgIC8vIFRyYW5zZmVyIHRoZSByZXN1bHQgdGFyZ2V0IGZyb20gdGhlIHNvdXJjZSBhY3Rpdml0eSB0byB0aGUgbmV3Ci0gICAgICAgICAgICAvLyBvbmUgYmVpbmcgc3RhcnRlZCwgaW5jbHVkaW5nIGFueSBmYWlsdXJlcy4KLSAgICAgICAgICAgIGlmIChyZXF1ZXN0Q29kZSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNUQVJUX0ZPUldBUkRfQU5EX1JFUVVFU1RfQ09ORkxJQ1Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN1bHRSZWNvcmQgPSBzb3VyY2VSZWNvcmQucmVzdWx0VG87Ci0gICAgICAgICAgICByZXN1bHRXaG8gPSBzb3VyY2VSZWNvcmQucmVzdWx0V2hvOwotICAgICAgICAgICAgcmVxdWVzdENvZGUgPSBzb3VyY2VSZWNvcmQucmVxdWVzdENvZGU7Ci0gICAgICAgICAgICBzb3VyY2VSZWNvcmQucmVzdWx0VG8gPSBudWxsOwotICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkLnJlbW92ZVJlc3VsdHNMb2NrZWQoCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgZXJyID0gU1RBUlRfU1VDQ0VTUzsKLQotICAgICAgICBpZiAoaW50ZW50LmdldENvbXBvbmVudCgpID09IG51bGwpIHsKLSAgICAgICAgICAgIC8vIFdlIGNvdWxkbid0IGZpbmQgYSBjbGFzcyB0aGF0IGNhbiBoYW5kbGUgdGhlIGdpdmVuIEludGVudC4KLSAgICAgICAgICAgIC8vIFRoYXQncyB0aGUgZW5kIG9mIHRoYXQhCi0gICAgICAgICAgICBlcnIgPSBTVEFSVF9JTlRFTlRfTk9UX1JFU09MVkVEOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVyciA9PSBTVEFSVF9TVUNDRVNTICYmIGFJbmZvID09IG51bGwpIHsKLSAgICAgICAgICAgIC8vIFdlIGNvdWxkbid0IGZpbmQgdGhlIHNwZWNpZmljIGNsYXNzIHNwZWNpZmllZCBpbiB0aGUgSW50ZW50LgotICAgICAgICAgICAgLy8gQWxzbyB0aGUgZW5kIG9mIHRoZSBsaW5lLgotICAgICAgICAgICAgZXJyID0gU1RBUlRfQ0xBU1NfTk9UX0ZPVU5EOwotICAgICAgICB9Ci0KLSAgICAgICAgUHJvY2Vzc1JlY29yZCBjYWxsZXJBcHAgPSBudWxsOwotICAgICAgICBpZiAoZXJyID09IFNUQVJUX1NVQ0NFU1MgJiYgY2FsbGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIGNhbGxlckFwcCA9IGdldFJlY29yZEZvckFwcExvY2tlZChjYWxsZXIpOwotICAgICAgICAgICAgaWYgKGNhbGxlckFwcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGluZ1BpZCA9IGNhbGxlckFwcC5waWQ7Ci0gICAgICAgICAgICAgICAgY2FsbGluZ1VpZCA9IGNhbGxlckFwcC5pbmZvLnVpZDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlVuYWJsZSB0byBmaW5kIGFwcCBmb3IgY2FsbGVyICIgKyBjYWxsZXIKLSAgICAgICAgICAgICAgICAgICAgICArICIgKHBpZD0iICsgY2FsbGluZ1BpZCArICIpIHdoZW4gc3RhcnRpbmc6ICIKLSAgICAgICAgICAgICAgICAgICAgICArIGludGVudC50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBlcnIgPSBTVEFSVF9QRVJNSVNTSU9OX0RFTklFRDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChlcnIgIT0gU1RBUlRfU1VDQ0VTUykgewotICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKC0xLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsCi0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZXJyOwotICAgICAgICB9Ci0KLSAgICAgICAgZmluYWwgaW50IHBlcm0gPSBjaGVja0NvbXBvbmVudFBlcm1pc3Npb24oYUluZm8ucGVybWlzc2lvbiwgY2FsbGluZ1BpZCwKLSAgICAgICAgICAgICAgICBjYWxsaW5nVWlkLCBhSW5mby5leHBvcnRlZCA/IC0xIDogYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZCk7Ci0gICAgICAgIGlmIChwZXJtICE9IFBhY2thZ2VNYW5hZ2VyLlBFUk1JU1NJT05fR1JBTlRFRCkgewotICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKC0xLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsCi0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTdHJpbmcgbXNnID0gIlBlcm1pc3Npb24gRGVuaWFsOiBzdGFydGluZyAiICsgaW50ZW50LnRvU3RyaW5nKCkKLSAgICAgICAgICAgICAgICAgICAgKyAiIGZyb20gIiArIGNhbGxlckFwcCArICIgKHBpZD0iICsgY2FsbGluZ1BpZAotICAgICAgICAgICAgICAgICAgICArICIsIHVpZD0iICsgY2FsbGluZ1VpZCArICIpIgotICAgICAgICAgICAgICAgICAgICArICIgcmVxdWlyZXMgIiArIGFJbmZvLnBlcm1pc3Npb247Ci0gICAgICAgICAgICBTbG9nLncoVEFHLCBtc2cpOwotICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKG1zZyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobUNvbnRyb2xsZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgYm9vbGVhbiBhYm9ydCA9IGZhbHNlOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgSW50ZW50IHdlIGdpdmUgdG8gdGhlIHdhdGNoZXIgaGFzIHRoZSBleHRyYSBkYXRhCi0gICAgICAgICAgICAgICAgLy8gc3RyaXBwZWQgb2ZmLCBzaW5jZSBpdCBjYW4gY29udGFpbiBwcml2YXRlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgIEludGVudCB3YXRjaEludGVudCA9IGludGVudC5jbG9uZUZpbHRlcigpOwotICAgICAgICAgICAgICAgIGFib3J0ID0gIW1Db250cm9sbGVyLmFjdGl2aXR5U3RhcnRpbmcod2F0Y2hJbnRlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBhSW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBtQ29udHJvbGxlciA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChhYm9ydCkgewotICAgICAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBzZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBXZSBwcmV0ZW5kIHRvIHRoZSBjYWxsZXIgdGhhdCBpdCB3YXMgcmVhbGx5IHN0YXJ0ZWQsIGJ1dAotICAgICAgICAgICAgICAgIC8vIHRoZXkgd2lsbCBqdXN0IGdldCBhIGNhbmNlbCByZXN1bHQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNUQVJUX1NVQ0NFU1M7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSBuZXcgSGlzdG9yeVJlY29yZCh0aGlzLCBjYWxsZXJBcHAsIGNhbGxpbmdVaWQsCi0gICAgICAgICAgICAgICAgaW50ZW50LCByZXNvbHZlZFR5cGUsIGFJbmZvLCBtQ29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIGNvbXBvbmVudFNwZWNpZmllZCk7Ci0KLSAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gbnVsbAotICAgICAgICAgICAgICAgIHx8IG1SZXN1bWVkQWN0aXZpdHkuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkICE9IGNhbGxpbmdVaWQpIHsKLSAgICAgICAgICAgIGlmICghY2hlY2tBcHBTd2l0Y2hBbGxvd2VkTG9ja2VkKGNhbGxpbmdQaWQsIGNhbGxpbmdVaWQsICJBY3Rpdml0eSBzdGFydCIpKSB7Ci0gICAgICAgICAgICAgICAgUGVuZGluZ0FjdGl2aXR5TGF1bmNoIHBhbCA9IG5ldyBQZW5kaW5nQWN0aXZpdHlMYXVuY2goKTsKLSAgICAgICAgICAgICAgICBwYWwuciA9IHI7Ci0gICAgICAgICAgICAgICAgcGFsLnNvdXJjZVJlY29yZCA9IHNvdXJjZVJlY29yZDsKLSAgICAgICAgICAgICAgICBwYWwuZ3JhbnRlZFVyaVBlcm1pc3Npb25zID0gZ3JhbnRlZFVyaVBlcm1pc3Npb25zOwotICAgICAgICAgICAgICAgIHBhbC5ncmFudGVkTW9kZSA9IGdyYW50ZWRNb2RlOwotICAgICAgICAgICAgICAgIHBhbC5vbmx5SWZOZWVkZWQgPSBvbmx5SWZOZWVkZWQ7Ci0gICAgICAgICAgICAgICAgbVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzLmFkZChwYWwpOwotICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9TV0lUQ0hFU19DQU5DRUxFRDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG1EaWRBcHBTd2l0Y2gpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHNlY29uZCBhbGxvd2VkIHN3aXRjaCBzaW5jZSB3ZSBzdG9wcGVkIHN3aXRjaGVzLAotICAgICAgICAgICAgLy8gc28gbm93IGp1c3QgZ2VuZXJhbGx5IGFsbG93IHN3aXRjaGVzLiAgVXNlIGNhc2U6IHVzZXIgcHJlc3NlcwotICAgICAgICAgICAgLy8gaG9tZSAoc3dpdGNoZXMgZGlzYWJsZWQsIHN3aXRjaCB0byBob21lLCBtRGlkQXBwU3dpdGNoIG5vdyB0cnVlKTsKLSAgICAgICAgICAgIC8vIHVzZXIgdGFwcyBhIGhvbWUgaWNvbiAoY29taW5nIGZyb20gaG9tZSBzbyBhbGxvd2VkLCB3ZSBoaXQgaGVyZQotICAgICAgICAgICAgLy8gYW5kIG5vdyBhbGxvdyBhbnlvbmUgdG8gc3dpdGNoIGFnYWluKS4KLSAgICAgICAgICAgIG1BcHBTd2l0Y2hlc0FsbG93ZWRUaW1lID0gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1EaWRBcHBTd2l0Y2ggPSB0cnVlOwotICAgICAgICB9Ci0gICAgIAotICAgICAgICBkb1BlbmRpbmdBY3Rpdml0eUxhdW5jaGVzTG9ja2VkKGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGFydEFjdGl2aXR5VW5jaGVja2VkTG9ja2VkKHIsIHNvdXJjZVJlY29yZCwKLSAgICAgICAgICAgICAgICBncmFudGVkVXJpUGVybWlzc2lvbnMsIGdyYW50ZWRNb2RlLCBvbmx5SWZOZWVkZWQsIHRydWUpOwotICAgIH0KLSAgCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGRvUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXNMb2NrZWQoYm9vbGVhbiBkb1Jlc3VtZSkgeworICAgIGZpbmFsIHZvaWQgZG9QZW5kaW5nQWN0aXZpdHlMYXVuY2hlc0xvY2tlZChib29sZWFuIGRvUmVzdW1lKSB7CiAgICAgICAgIGZpbmFsIGludCBOID0gbVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzLnNpemUoKTsKICAgICAgICAgaWYgKE4gPD0gMCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKICAgICAgICAgICAgIFBlbmRpbmdBY3Rpdml0eUxhdW5jaCBwYWwgPSBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuZ2V0KGkpOwotICAgICAgICAgICAgc3RhcnRBY3Rpdml0eVVuY2hlY2tlZExvY2tlZChwYWwuciwgcGFsLnNvdXJjZVJlY29yZCwKKyAgICAgICAgICAgIG1NYWluU3RhY2suc3RhcnRBY3Rpdml0eVVuY2hlY2tlZExvY2tlZChwYWwuciwgcGFsLnNvdXJjZVJlY29yZCwKICAgICAgICAgICAgICAgICAgICAgcGFsLmdyYW50ZWRVcmlQZXJtaXNzaW9ucywgcGFsLmdyYW50ZWRNb2RlLCBwYWwub25seUlmTmVlZGVkLAogICAgICAgICAgICAgICAgICAgICBkb1Jlc3VtZSAmJiBpID09IChOLTEpKTsKICAgICAgICAgfQogICAgICAgICBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuY2xlYXIoKTsKICAgICB9CiAgICAgCi0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0eVVuY2hlY2tlZExvY2tlZChIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHNvdXJjZVJlY29yZCwgVXJpW10gZ3JhbnRlZFVyaVBlcm1pc3Npb25zLAotICAgICAgICAgICAgaW50IGdyYW50ZWRNb2RlLCBib29sZWFuIG9ubHlJZk5lZWRlZCwgYm9vbGVhbiBkb1Jlc3VtZSkgewotICAgICAgICBmaW5hbCBJbnRlbnQgaW50ZW50ID0gci5pbnRlbnQ7Ci0gICAgICAgIGZpbmFsIGludCBjYWxsaW5nVWlkID0gci5sYXVuY2hlZEZyb21VaWQ7Ci0gICAgICAgIAotICAgICAgICBpbnQgbGF1bmNoRmxhZ3MgPSBpbnRlbnQuZ2V0RmxhZ3MoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFdlJ2xsIGludm9rZSBvblVzZXJMZWF2aW5nIGJlZm9yZSBvblBhdXNlIG9ubHkgaWYgdGhlIGxhdW5jaGluZwotICAgICAgICAvLyBhY3Rpdml0eSBkaWQgbm90IGV4cGxpY2l0bHkgc3RhdGUgdGhhdCB0aGlzIGlzIGFuIGF1dG9tYXRlZCBsYXVuY2guCi0gICAgICAgIG1Vc2VyTGVhdmluZyA9IChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19VU0VSX0FDVElPTikgPT0gMDsKLSAgICAgICAgaWYgKERFQlVHX1VTRVJfTEVBVklORykgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAic3RhcnRBY3Rpdml0eSgpID0+IG1Vc2VyTGVhdmluZz0iICsgbVVzZXJMZWF2aW5nKTsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHRoZSBjYWxsZXIgaGFzIGFza2VkIG5vdCB0byByZXN1bWUgYXQgdGhpcyBwb2ludCwgd2UgbWFrZSBub3RlCi0gICAgICAgIC8vIG9mIHRoaXMgaW4gdGhlIHJlY29yZCBzbyB0aGF0IHdlIGNhbiBza2lwIGl0IHdoZW4gdHJ5aW5nIHRvIGZpbmQKLSAgICAgICAgLy8gdGhlIHRvcCBydW5uaW5nIGFjdGl2aXR5LgotICAgICAgICBpZiAoIWRvUmVzdW1lKSB7Ci0gICAgICAgICAgICByLmRlbGF5ZWRSZXN1bWUgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBIaXN0b3J5UmVjb3JkIG5vdFRvcCA9IChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9QUkVWSU9VU19JU19UT1ApCi0gICAgICAgICAgICAgICAgIT0gMCA/IHIgOiBudWxsOwotCi0gICAgICAgIC8vIElmIHRoZSBvbmx5SWZOZWVkZWQgZmxhZyBpcyBzZXQsIHRoZW4gd2UgY2FuIGRvIHRoaXMgaWYgdGhlIGFjdGl2aXR5Ci0gICAgICAgIC8vIGJlaW5nIGxhdW5jaGVkIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgbWFraW5nIHRoZSBjYWxsLi4uICBvciwgYXMKLSAgICAgICAgLy8gYSBzcGVjaWFsIGNhc2UsIGlmIHdlIGRvIG5vdCBrbm93IHRoZSBjYWxsZXIgdGhlbiB3ZSBjb3VudCB0aGUKLSAgICAgICAgLy8gY3VycmVudCB0b3AgYWN0aXZpdHkgYXMgdGhlIGNhbGxlci4KLSAgICAgICAgaWYgKG9ubHlJZk5lZWRlZCkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBjaGVja2VkQ2FsbGVyID0gc291cmNlUmVjb3JkOwotICAgICAgICAgICAgaWYgKGNoZWNrZWRDYWxsZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGNoZWNrZWRDYWxsZXIgPSB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG5vdFRvcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNoZWNrZWRDYWxsZXIucmVhbEFjdGl2aXR5LmVxdWFscyhyLnJlYWxBY3Rpdml0eSkpIHsKLSAgICAgICAgICAgICAgICAvLyBDYWxsZXIgaXMgbm90IHRoZSBzYW1lIGFzIGxhdW5jaGVyLCBzbyBhbHdheXMgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9ubHlJZk5lZWRlZCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGdyYW50ZWRVcmlQZXJtaXNzaW9ucyAhPSBudWxsICYmIGNhbGxpbmdVaWQgPiAwKSB7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Z3JhbnRlZFVyaVBlcm1pc3Npb25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgZ3JhbnRVcmlQZXJtaXNzaW9uTG9ja2VkKGNhbGxpbmdVaWQsIHIucGFja2FnZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBncmFudGVkVXJpUGVybWlzc2lvbnNbaV0sIGdyYW50ZWRNb2RlLCByKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGdyYW50VXJpUGVybWlzc2lvbkZyb21JbnRlbnRMb2NrZWQoY2FsbGluZ1VpZCwgci5wYWNrYWdlTmFtZSwKLSAgICAgICAgICAgICAgICBpbnRlbnQsIHIpOwotCi0gICAgICAgIGlmIChzb3VyY2VSZWNvcmQgPT0gbnVsbCkgewotICAgICAgICAgICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBub3QgYmVpbmcgc3RhcnRlZCBmcm9tIGFub3RoZXIuLi4gIGluIHRoaXMKLSAgICAgICAgICAgIC8vIGNhc2Ugd2UgLWFsd2F5cy0gc3RhcnQgYSBuZXcgdGFzay4KLSAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spID09IDApIHsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAic3RhcnRBY3Rpdml0eSBjYWxsZWQgZnJvbSBub24tQWN0aXZpdHkgY29udGV4dDsgZm9yY2luZyBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSyBmb3I6ICIKLSAgICAgICAgICAgICAgICAgICAgICArIGludGVudCk7Ci0gICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoc291cmNlUmVjb3JkLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0UpIHsKLSAgICAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBhY3Rpdml0eSB3aG8gaXMgc3RhcnRpbmcgdXMgaXMgcnVubmluZyBhcyBhIHNpbmdsZQotICAgICAgICAgICAgLy8gaW5zdGFuY2UuLi4gIHRoaXMgbmV3IGFjdGl2aXR5IGl0IGlzIHN0YXJ0aW5nIG11c3QgZ28gb24gaXRzCi0gICAgICAgICAgICAvLyBvd24gdGFzay4KLSAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLOwotICAgICAgICB9IGVsc2UgaWYgKHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRQotICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UQVNLKSB7Ci0gICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgYmVpbmcgc3RhcnRlZCBpcyBhIHNpbmdsZSBpbnN0YW5jZS4uLiAgaXQgYWx3YXlzCi0gICAgICAgICAgICAvLyBnZXRzIGxhdW5jaGVkIGludG8gaXRzIG93biB0YXNrLgotICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoci5yZXN1bHRUbyAhPSBudWxsICYmIChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCkgewotICAgICAgICAgICAgLy8gRm9yIHdoYXRldmVyIHJlYXNvbiB0aGlzIGFjdGl2aXR5IGlzIGJlaW5nIGxhdW5jaGVkIGludG8gYSBuZXcKLSAgICAgICAgICAgIC8vIHRhc2suLi4gIHlldCB0aGUgY2FsbGVyIGhhcyByZXF1ZXN0ZWQgYSByZXN1bHQgYmFjay4gIFdlbGwsIHRoYXQKLSAgICAgICAgICAgIC8vIGlzIHByZXR0eSBtZXNzZWQgdXAsIHNvIGluc3RlYWQgaW1tZWRpYXRlbHkgc2VuZCBiYWNrIGEgY2FuY2VsCi0gICAgICAgICAgICAvLyBhbmQgbGV0IHRoZSBuZXcgdGFzayBjb250aW51ZSBsYXVuY2hlZCBhcyBub3JtYWwgd2l0aG91dCBhCi0gICAgICAgICAgICAvLyBkZXBlbmRlbmN5IG9uIGl0cyBvcmlnaW5hdG9yLgotICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5IGlzIGxhdW5jaGluZyBhcyBhIG5ldyB0YXNrLCBzbyBjYW5jZWxsaW5nIGFjdGl2aXR5IHJlc3VsdC4iKTsKLSAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKLSAgICAgICAgICAgICAgICAgICAgci5yZXN1bHRUbywgci5yZXN1bHRXaG8sIHIucmVxdWVzdENvZGUsCi0gICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKLSAgICAgICAgICAgIHIucmVzdWx0VG8gPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbGVhbiBhZGRpbmdUb1Rhc2sgPSBmYWxzZTsKLSAgICAgICAgaWYgKCgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spICE9IDAgJiYKLSAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSykgPT0gMCkKLSAgICAgICAgICAgICAgICB8fCByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVEFTSwotICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRSkgewotICAgICAgICAgICAgLy8gSWYgYnJpbmcgdG8gZnJvbnQgaXMgcmVxdWVzdGVkLCBhbmQgbm8gcmVzdWx0IGlzIHJlcXVlc3RlZCwgYW5kCi0gICAgICAgICAgICAvLyB3ZSBjYW4gZmluZCBhIHRhc2sgdGhhdCB3YXMgc3RhcnRlZCB3aXRoIHRoaXMgc2FtZQotICAgICAgICAgICAgLy8gY29tcG9uZW50LCB0aGVuIGluc3RlYWQgb2YgbGF1bmNoaW5nIGJyaW5nIHRoYXQgb25lIHRvIHRoZSBmcm9udC4KLSAgICAgICAgICAgIGlmIChyLnJlc3VsdFRvID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBTZWUgaWYgdGhlcmUgaXMgYSB0YXNrIHRvIGJyaW5nIHRvIHRoZSBmcm9udC4gIElmIHRoaXMgaXMKLSAgICAgICAgICAgICAgICAvLyBhIFNJTkdMRV9JTlNUQU5DRSBhY3Rpdml0eSwgdGhlcmUgY2FuIGJlIG9uZSBhbmQgb25seSBvbmUKLSAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZSBvZiBpdCBpbiB0aGUgaGlzdG9yeSwgYW5kIGl0IGlzIGFsd2F5cyBpbiBpdHMgb3duCi0gICAgICAgICAgICAgICAgLy8gdW5pcXVlIHRhc2ssIHNvIHdlIGRvIGEgc3BlY2lhbCBzZWFyY2guCi0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCB0YXNrVG9wID0gci5sYXVuY2hNb2RlICE9IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFCi0gICAgICAgICAgICAgICAgICAgICAgICA/IGZpbmRUYXNrTG9ja2VkKGludGVudCwgci5pbmZvKQotICAgICAgICAgICAgICAgICAgICAgICAgOiBmaW5kQWN0aXZpdHlMb2NrZWQoaW50ZW50LCByLmluZm8pOwotICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3AudGFzay5pbnRlbnQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB0YXNrIHdhcyBzdGFydGVkIGJlY2F1c2Ugb2YgbW92ZW1lbnQgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBhY3Rpdml0eSBiYXNlZCBvbiBhZmZpbml0eS4uLiAgbm93IHRoYXQgd2UKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBhY3R1YWxseSBsYXVuY2hpbmcgaXQsIHdlIGNhbiBhc3NpZ24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIGludGVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AudGFzay5zZXRJbnRlbnQoaW50ZW50LCByLmluZm8pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgdGFzayBpcyBub3QgaW4gdGhlIGZyb250LCB0aGVuIHdlIG5lZWQKLSAgICAgICAgICAgICAgICAgICAgLy8gdG8gYnJpbmcgaXQgdG8gdGhlIGZyb250Li4uICBleGNlcHQuLi4gIHdlbGwsIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgLy8gU0lOR0xFX1RBU0tfTEFVTkNIIGl0J3Mgbm90IGVudGlyZWx5IGNsZWFyLiAgV2UnZCBsaWtlCi0gICAgICAgICAgICAgICAgICAgIC8vIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3IgYXMgaWYgYSBuZXcgaW5zdGFuY2Ugd2FzCi0gICAgICAgICAgICAgICAgICAgIC8vIGJlaW5nIHN0YXJ0ZWQsIHdoaWNoIG1lYW5zIG5vdCBicmluZ2luZyBpdCB0byB0aGUgZnJvbnQKLSAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNhbGxlciBpcyBub3QgaXRzZWxmIGluIHRoZSBmcm9udC4KLSAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBjdXJUb3AgPSB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG5vdFRvcCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjdXJUb3AudGFzayAhPSB0YXNrVG9wLnRhc2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIuaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX0JST1VHSFRfVE9fRlJPTlQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjYWxsZXJBdEZyb250ID0gc291cmNlUmVjb3JkID09IG51bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgY3VyVG9wLnRhc2sgPT0gc291cmNlUmVjb3JkLnRhc2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVyQXRGcm9udCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHJlYWxseSBkbyB3YW50IHRvIHB1c2ggdGhpcyBvbmUgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyJ3MgZmFjZSwgcmlnaHQgbm93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVUYXNrVG9Gcm9udExvY2tlZCh0YXNrVG9wLnRhc2ssIHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgaGFzIHJlcXVlc3RlZCB0aGF0IHRoZSB0YXJnZXQgdGFzayBiZQotICAgICAgICAgICAgICAgICAgICAvLyByZXNldCwgdGhlbiBkbyBzby4KLSAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcCA9IHJlc2V0VGFza0lmTmVlZGVkTG9ja2VkKHRhc2tUb3AsIHIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvbmx5SWZOZWVkZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gc3RhcnQgYSBuZXcgYWN0aXZpdHksIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNsaWVudCBzYWlkIG5vdCB0byBkbyBhbnl0aGluZyBpZiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB0aGUgY2FzZSwgc28gdGhpcyBpcyBpdCEgIEFuZCBmb3IgcGFyYW5vaWEsIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkgcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfUkVUVVJOX0lOVEVOVF9UT19DQUxMRVI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9DTEVBUl9UT1ApICE9IDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVEFTSwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBzaXR1YXRpb24gd2Ugd2FudCB0byByZW1vdmUgYWxsIGFjdGl2aXRpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gdGhlIHRhc2sgdXAgdG8gdGhlIG9uZSBiZWluZyBzdGFydGVkLiAgSW4gbW9zdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZXMgdGhpcyBtZWFucyB3ZSBhcmUgcmVzZXR0aW5nIHRoZSB0YXNrIHRvIGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbCBzdGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgdG9wID0gcGVyZm9ybUNsZWFyVGFza0xvY2tlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcC50YXNrLnRhc2tJZCwgciwgbGF1bmNoRmxhZ3MsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvcC5mcm9udE9mVGFzaykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3Rpdml0eSBhbGlhc2VzIG1heSBtZWFuIHdlIHVzZSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZW50cyBmb3IgdGhlIHRvcCBhY3Rpdml0eSwgc28gbWFrZSBzdXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB0YXNrIG5vdyBoYXMgdGhlIGlkZW50aXR5IG9mIHRoZSBuZXcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AudGFzay5zZXRJbnRlbnQoci5pbnRlbnQsIHIuaW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHIsIHRvcC50YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyTmV3SW50ZW50TG9ja2VkKHRvcCwgci5pbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIHNwZWNpYWwgY2FzZTogd2UgbmVlZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHRoZSBhY3Rpdml0eSBiZWNhdXNlIGl0IGlzIG5vdCBjdXJyZW50bHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBydW5uaW5nLCBhbmQgdGhlIGNhbGxlciBoYXMgYXNrZWQgdG8gY2xlYXIgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCB0YXNrIHRvIGhhdmUgdGhpcyBhY3Rpdml0eSBhdCB0aGUgdG9wLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IHByZXRlbmQgbGlrZSB0aGlzIGFjdGl2aXR5IGlzIGJlaW5nIHN0YXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSB0aGUgdG9wIG9mIGl0cyB0YXNrLCBzbyBpdCBpcyBwdXQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgcGxhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gdGFza1RvcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnJlYWxBY3Rpdml0eS5lcXVhbHModGFza1RvcC50YXNrLnJlYWxBY3Rpdml0eSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgdG9wIGFjdGl2aXR5IG9uIHRoZSB0YXNrIGlzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2FtZSBhcyB0aGUgb25lIGJlaW5nIGxhdW5jaGVkLCBzbyB3ZSB0YWtlIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcmVxdWVzdCB0byBicmluZyB0aGUgdGFzayB0byB0aGUgZm9yZWdyb3VuZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0b3AgYWN0aXZpdHkgaW4gdGhlIHRhc2sgaXMgdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5LCBkZWxpdmVyIHRoaXMgbmV3IGludGVudCB0byBpdCBpZiBpdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVzaXJlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfU0lOR0xFX1RPUCkgIT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXNrVG9wLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgciwgdGFza1RvcC50YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFza1RvcC5mcm9udE9mVGFzaykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wLnRhc2suc2V0SW50ZW50KHIuaW50ZW50LCByLmluZm8pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyTmV3SW50ZW50TG9ja2VkKHRhc2tUb3AsIHIuaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXIuaW50ZW50LmZpbHRlckVxdWFscyh0YXNrVG9wLnRhc2suaW50ZW50KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBhcmUgbGF1bmNoaW5nIHRoZSByb290IGFjdGl2aXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIHRhc2ssIGJ1dCB3aXRoIGEgZGlmZmVyZW50IGludGVudC4gIFdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIHN0YXJ0IGEgbmV3IGluc3RhbmNlIG9uIHRvcC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpbmdUb1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZCA9IHRhc2tUb3A7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UgYW4gYWN0aXZpdHkgaXMgYmVpbmcgbGF1bmNoZWQgaW4gdG8gYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4aXN0aW5nIHRhc2ssIHdpdGhvdXQgcmVzZXR0aW5nIHRoYXQgdGFzay4gIFRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHR5cGljYWxseSB0aGUgc2l0dWF0aW9uIG9mIGxhdW5jaGluZyBhbiBhY3Rpdml0eQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBhIG5vdGlmaWNhdGlvbiBvciBzaG9ydGN1dC4gIFdlIHdhbnQgdG8gcGxhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBuZXcgYWN0aXZpdHkgb24gdG9wIG9mIHRoZSBjdXJyZW50IHRhc2suCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRpbmdUb1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gdGFza1RvcDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGFza1RvcC50YXNrLnJvb3RXYXNSZXNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGFyZSBsYXVuY2hpbmcgaW4gdG8gYW4gZXhpc3RpbmcgdGFzawotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBoYXMgbm90IHlldCBiZWVuIHN0YXJ0ZWQgZnJvbSBpdHMgZnJvbnQgZG9vci4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjdXJyZW50IHRhc2sgaGFzIGJlZW4gYnJvdWdodCB0byB0aGUgZnJvbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZGVhbGx5LCB3ZSdkIHByb2JhYmx5IGxpa2UgdG8gcGxhY2UgdGhpcyBuZXcgdGFzawotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgdGhlIGJvdHRvbSBvZiBpdHMgc3RhY2ssIGJ1dCB0aGF0J3MgYSBsaXR0bGUgaGFyZAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZG8gd2l0aCB0aGUgY3VycmVudCBvcmdhbml6YXRpb24gb2YgdGhlIGNvZGUgc28KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBub3cgd2UnbGwganVzdCBkcm9wIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcC50YXNrLnNldEludGVudChyLmludGVudCwgci5pbmZvKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZGluZ1RvVGFzaykgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZGlkbid0IGRvIGFueXRoaW5nLi4uICBidXQgaXQgd2FzIG5lZWRlZCAoYS5rLmEuLCBjbGllbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHVzZSB0aGF0IGludGVudCEpICBBbmQgZm9yIHBhcmFub2lhLCBtYWtlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdXJlIHdlIGhhdmUgY29ycmVjdGx5IHJlc3VtZWQgdGhlIHRvcCBhY3Rpdml0eS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNUQVJUX1RBU0tfVE9fRlJPTlQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvL1N0cmluZyB1cmkgPSByLmludGVudC50b1VSSSgpOwotICAgICAgICAvL0ludGVudCBpbnRlbnQyID0gbmV3IEludGVudCh1cmkpOwotICAgICAgICAvL1Nsb2cuaShUQUcsICJHaXZlbiBpbnRlbnQ6ICIgKyByLmludGVudCk7Ci0gICAgICAgIC8vU2xvZy5pKFRBRywgIlVSSSBpczogIiArIHVyaSk7Ci0gICAgICAgIC8vU2xvZy5pKFRBRywgIlRvIGludGVudDogIiArIGludGVudDIpOwotCi0gICAgICAgIGlmIChyLnBhY2thZ2VOYW1lICE9IG51bGwpIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBiZWluZyBsYXVuY2hlZCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGN1cnJlbnRseQotICAgICAgICAgICAgLy8gYXQgdGhlIHRvcCwgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGlmIGl0IHNob3VsZCBvbmx5IGJlIGxhdW5jaGVkCi0gICAgICAgICAgICAvLyBvbmNlLgotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCB0b3AgPSB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG5vdFRvcCk7Ci0gICAgICAgICAgICBpZiAodG9wICE9IG51bGwgJiYgci5yZXN1bHRUbyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRvcC5yZWFsQWN0aXZpdHkuZXF1YWxzKHIucmVhbEFjdGl2aXR5KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodG9wLmFwcCAhPSBudWxsICYmIHRvcC5hcHAudGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfU0lOR0xFX1RPUCkgIT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UT1AKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVEFTSykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHRvcCwgdG9wLnRhc2spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBwYXJhbm9pYSwgbWFrZSBzdXJlIHdlIGhhdmUgY29ycmVjdGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9ubHlJZk5lZWRlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHN0YXJ0IGEgbmV3IGFjdGl2aXR5LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNsaWVudCBzYWlkIG5vdCB0byBkbyBhbnl0aGluZyBpZiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHRoZSBjYXNlLCBzbyB0aGlzIGlzIGl0IQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfUkVUVVJOX0lOVEVOVF9UT19DQUxMRVI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQodG9wLCByLmludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNUQVJUX0RFTElWRVJFRF9UT19UT1A7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChyLnJlc3VsdFRvICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBzZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsCi0gICAgICAgICAgICAgICAgICAgICAgICByLnJlc3VsdFRvLCByLnJlc3VsdFdobywgci5yZXF1ZXN0Q29kZSwKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTVEFSVF9DTEFTU19OT1RfRk9VTkQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sZWFuIG5ld1Rhc2sgPSBmYWxzZTsKLQotICAgICAgICAvLyBTaG91bGQgdGhpcyBiZSBjb25zaWRlcmVkIGEgbmV3IHRhc2s/Ci0gICAgICAgIGlmIChyLnJlc3VsdFRvID09IG51bGwgJiYgIWFkZGluZ1RvVGFzawotICAgICAgICAgICAgICAgICYmIChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCkgewotICAgICAgICAgICAgLy8gdG9kbzogc2hvdWxkIGRvIGJldHRlciBtYW5hZ2VtZW50IG9mIGludGVnZXJzLgotICAgICAgICAgICAgbUN1clRhc2srKzsKLSAgICAgICAgICAgIGlmIChtQ3VyVGFzayA8PSAwKSB7Ci0gICAgICAgICAgICAgICAgbUN1clRhc2sgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgci50YXNrID0gbmV3IFRhc2tSZWNvcmQobUN1clRhc2ssIHIuaW5mbywgaW50ZW50LAotICAgICAgICAgICAgICAgICAgICAoci5pbmZvLmZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIKSAhPSAwKTsKLSAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBRywgIlN0YXJ0aW5nIG5ldyBhY3Rpdml0eSAiICsgcgotICAgICAgICAgICAgICAgICAgICArICIgaW4gbmV3IHRhc2sgIiArIHIudGFzayk7Ci0gICAgICAgICAgICBuZXdUYXNrID0gdHJ1ZTsKLSAgICAgICAgICAgIGFkZFJlY2VudFRhc2tMb2NrZWQoci50YXNrKTsKLSAgICAgICAgICAgIAotICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVJlY29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoIWFkZGluZ1RvVGFzayAmJgotICAgICAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfVE9QKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBhcmUgYWRkaW5nIHRoZSBhY3Rpdml0eSB0byBhbiBleGlzdGluZwotICAgICAgICAgICAgICAgIC8vIHRhc2ssIGJ1dCB0aGUgY2FsbGVyIGhhcyBhc2tlZCB0byBjbGVhciB0aGF0IHRhc2sgaWYgdGhlCi0gICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgaXMgYWxyZWFkeSBydW5uaW5nLgotICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgdG9wID0gcGVyZm9ybUNsZWFyVGFza0xvY2tlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZC50YXNrLnRhc2tJZCwgciwgbGF1bmNoRmxhZ3MsIHRydWUpOwotICAgICAgICAgICAgICAgIGlmICh0b3AgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBsb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0b3AudGFzayk7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQodG9wLCByLmludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZvciBwYXJhbm9pYSwgbWFrZSBzdXJlIHdlIGhhdmUgY29ycmVjdGx5Ci0gICAgICAgICAgICAgICAgICAgIC8vIHJlc3VtZWQgdGhlIHRvcCBhY3Rpdml0eS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfREVMSVZFUkVEX1RPX1RPUDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFhZGRpbmdUb1Rhc2sgJiYKLSAgICAgICAgICAgICAgICAgICAgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1JFT1JERVJfVE9fRlJPTlQpICE9IDApIHsKLSAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIGFyZSBsYXVuY2hpbmcgYW4gYWN0aXZpdHkgaW4gb3VyIG93biB0YXNrCi0gICAgICAgICAgICAgICAgLy8gdGhhdCBtYXkgYWxyZWFkeSBiZSBydW5uaW5nIHNvbWV3aGVyZSBpbiB0aGUgaGlzdG9yeSwgYW5kCi0gICAgICAgICAgICAgICAgLy8gd2Ugd2FudCB0byBzaHVmZmxlIGl0IHRvIHRoZSBmcm9udCBvZiB0aGUgc3RhY2sgaWYgc28uCi0gICAgICAgICAgICAgICAgaW50IHdoZXJlID0gZmluZEFjdGl2aXR5SW5IaXN0b3J5TG9ja2VkKHIsIHNvdXJjZVJlY29yZC50YXNrLnRhc2tJZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdoZXJlID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCB0b3AgPSBtb3ZlQWN0aXZpdHlUb0Zyb250TG9ja2VkKHdoZXJlKTsKLSAgICAgICAgICAgICAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgciwgdG9wLnRhc2spOwotICAgICAgICAgICAgICAgICAgICBkZWxpdmVyTmV3SW50ZW50TG9ja2VkKHRvcCwgci5pbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9ERUxJVkVSRURfVE9fVE9QOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEFuIGV4aXN0aW5nIGFjdGl2aXR5IGlzIHN0YXJ0aW5nIHRoaXMgbmV3IGFjdGl2aXR5LCBzbyB3ZSB3YW50Ci0gICAgICAgICAgICAvLyB0byBrZWVwIHRoZSBuZXcgb25lIGluIHRoZSBzYW1lIHRhc2sgYXMgdGhlIG9uZSB0aGF0IGlzIHN0YXJ0aW5nCi0gICAgICAgICAgICAvLyBpdC4KLSAgICAgICAgICAgIHIudGFzayA9IHNvdXJjZVJlY29yZC50YXNrOwotICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiU3RhcnRpbmcgbmV3IGFjdGl2aXR5ICIgKyByCi0gICAgICAgICAgICAgICAgICAgICsgIiBpbiBleGlzdGluZyB0YXNrICIgKyByLnRhc2spOwotCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIG5vdCBiZWluZyBzdGFydGVkIGZyb20gYW4gZXhpc3RpbmcgYWN0aXZpdHksIGFuZCBub3QgcGFydAotICAgICAgICAgICAgLy8gb2YgYSBuZXcgdGFzay4uLiAganVzdCBwdXQgaXQgaW4gdGhlIHRvcCB0YXNrLCB0aG91Z2ggdGhlc2UgZGF5cwotICAgICAgICAgICAgLy8gdGhpcyBjYXNlIHNob3VsZCBuZXZlciBoYXBwZW4uCi0gICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgcHJldiA9Ci0gICAgICAgICAgICAgICAgTiA+IDAgPyAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoTi0xKSA6IG51bGw7Ci0gICAgICAgICAgICByLnRhc2sgPSBwcmV2ICE9IG51bGwKLSAgICAgICAgICAgICAgICA/IHByZXYudGFzawotICAgICAgICAgICAgICAgIDogbmV3IFRhc2tSZWNvcmQobUN1clRhc2ssIHIuaW5mbywgaW50ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgKHIuaW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19DTEVBUl9UQVNLX09OX0xBVU5DSCkgIT0gMCk7Ci0gICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJTdGFydGluZyBuZXcgYWN0aXZpdHkgIiArIHIKLSAgICAgICAgICAgICAgICAgICAgKyAiIGluIG5ldyBndWVzc2VkICIgKyByLnRhc2spOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXdUYXNrKSB7Ci0gICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9DUkVBVEVfVEFTSywgci50YXNrLnRhc2tJZCk7Ci0gICAgICAgIH0KLSAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fQ1JFQVRFX0FDVElWSVRZLCByLCByLnRhc2spOwotICAgICAgICBzdGFydEFjdGl2aXR5TG9ja2VkKHIsIG5ld1Rhc2ssIGRvUmVzdW1lKTsKLSAgICAgICAgcmV0dXJuIFNUQVJUX1NVQ0NFU1M7Ci0gICAgfQotCi0gICAgdm9pZCByZXBvcnRBY3Rpdml0eUxhdW5jaGVkTG9ja2VkKGJvb2xlYW4gdGltZW91dCwgSGlzdG9yeVJlY29yZCByLAotICAgICAgICAgICAgbG9uZyB0aGlzVGltZSwgbG9uZyB0b3RhbFRpbWUpIHsKLSAgICAgICAgZm9yIChpbnQgaT1tV2FpdGluZ0FjdGl2aXR5TGF1bmNoZWQuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgV2FpdFJlc3VsdCB3ID0gbVdhaXRpbmdBY3Rpdml0eUxhdW5jaGVkLmdldChpKTsKLSAgICAgICAgICAgIHcudGltZW91dCA9IHRpbWVvdXQ7Ci0gICAgICAgICAgICBpZiAociAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdy53aG8gPSBuZXcgQ29tcG9uZW50TmFtZShyLmluZm8ucGFja2FnZU5hbWUsIHIuaW5mby5uYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHcudGhpc1RpbWUgPSB0aGlzVGltZTsKLSAgICAgICAgICAgIHcudG90YWxUaW1lID0gdG90YWxUaW1lOwotICAgICAgICB9Ci0gICAgICAgIG5vdGlmeSgpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHJlcG9ydEFjdGl2aXR5VmlzaWJsZUxvY2tlZChIaXN0b3J5UmVjb3JkIHIpIHsKLSAgICAgICAgZm9yIChpbnQgaT1tV2FpdGluZ0FjdGl2aXR5VmlzaWJsZS5zaXplKCktMTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICBXYWl0UmVzdWx0IHcgPSBtV2FpdGluZ0FjdGl2aXR5VmlzaWJsZS5nZXQoaSk7Ci0gICAgICAgICAgICB3LnRpbWVvdXQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB3LndobyA9IG5ldyBDb21wb25lbnROYW1lKHIuaW5mby5wYWNrYWdlTmFtZSwgci5pbmZvLm5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdy50b3RhbFRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSAtIHcudGhpc1RpbWU7Ci0gICAgICAgICAgICB3LnRoaXNUaW1lID0gdy50b3RhbFRpbWU7Ci0gICAgICAgIH0KLSAgICAgICAgbm90aWZ5KCk7Ci0gICAgfQotICAgIAotICAgIHByaXZhdGUgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHlNYXlXYWl0KElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsCi0gICAgICAgICAgICBJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlLCBVcmlbXSBncmFudGVkVXJpUGVybWlzc2lvbnMsCi0gICAgICAgICAgICBpbnQgZ3JhbnRlZE1vZGUsIElCaW5kZXIgcmVzdWx0VG8sCi0gICAgICAgICAgICBTdHJpbmcgcmVzdWx0V2hvLCBpbnQgcmVxdWVzdENvZGUsIGJvb2xlYW4gb25seUlmTmVlZGVkLAotICAgICAgICAgICAgYm9vbGVhbiBkZWJ1ZywgV2FpdFJlc3VsdCBvdXRSZXN1bHQsIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7Ci0gICAgICAgIC8vIFJlZnVzZSBwb3NzaWJsZSBsZWFrZWQgZmlsZSBkZXNjcmlwdG9ycwotICAgICAgICBpZiAoaW50ZW50ICE9IG51bGwgJiYgaW50ZW50Lmhhc0ZpbGVEZXNjcmlwdG9ycygpKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJGaWxlIGRlc2NyaXB0b3JzIHBhc3NlZCBpbiBJbnRlbnQiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbmFsIGJvb2xlYW4gY29tcG9uZW50U3BlY2lmaWVkID0gaW50ZW50LmdldENvbXBvbmVudCgpICE9IG51bGw7Ci0gICAgICAgIAotICAgICAgICAvLyBEb24ndCBtb2RpZnkgdGhlIGNsaWVudCdzIG9iamVjdCEKLSAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChpbnRlbnQpOwotCi0gICAgICAgIC8vIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhcmdldCBvZiB0aGUgSW50ZW50LgotICAgICAgICBBY3Rpdml0eUluZm8gYUluZm87Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBSZXNvbHZlSW5mbyBySW5mbyA9Ci0gICAgICAgICAgICAgICAgQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlSW50ZW50KAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LCByZXNvbHZlZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5NQVRDSF9ERUZBVUxUX09OTFkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgU1RPQ0tfUE1fRkxBR1MpOwotICAgICAgICAgICAgYUluZm8gPSBySW5mbyAhPSBudWxsID8gckluZm8uYWN0aXZpdHlJbmZvIDogbnVsbDsKLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIGFJbmZvID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhSW5mbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBTdG9yZSB0aGUgZm91bmQgdGFyZ2V0IGJhY2sgaW50byB0aGUgaW50ZW50LCBiZWNhdXNlIG5vdyB0aGF0Ci0gICAgICAgICAgICAvLyB3ZSBoYXZlIGl0IHdlIG5ldmVyIHdhbnQgdG8gZG8gdGhpcyBhZ2Fpbi4gIEZvciBleGFtcGxlLCBpZiB0aGUKLSAgICAgICAgICAgIC8vIHVzZXIgbmF2aWdhdGVzIGJhY2sgdG8gdGhpcyBwb2ludCBpbiB0aGUgaGlzdG9yeSwgd2Ugc2hvdWxkCi0gICAgICAgICAgICAvLyBhbHdheXMgcmVzdGFydCB0aGUgZXhhY3Qgc2FtZSBhY3Rpdml0eS4KLSAgICAgICAgICAgIGludGVudC5zZXRDb21wb25lbnQobmV3IENvbXBvbmVudE5hbWUoCi0gICAgICAgICAgICAgICAgICAgIGFJbmZvLmFwcGxpY2F0aW9uSW5mby5wYWNrYWdlTmFtZSwgYUluZm8ubmFtZSkpOwotCi0gICAgICAgICAgICAvLyBEb24ndCBkZWJ1ZyB0aGluZ3MgaW4gdGhlIHN5c3RlbSBwcm9jZXNzCi0gICAgICAgICAgICBpZiAoZGVidWcpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWFJbmZvLnByb2Nlc3NOYW1lLmVxdWFscygic3lzdGVtIikpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0RGVidWdBcHAoYUluZm8ucHJvY2Vzc05hbWUsIHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGludCBjYWxsaW5nUGlkOwotICAgICAgICAgICAgaW50IGNhbGxpbmdVaWQ7Ci0gICAgICAgICAgICBpZiAoY2FsbGVyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gQmluZGVyLmdldENhbGxpbmdQaWQoKTsKLSAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGluZ1BpZCA9IGNhbGxpbmdVaWQgPSAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgbUNvbmZpZ1dpbGxDaGFuZ2UgPSBjb25maWcgIT0gbnVsbCAmJiBtQ29uZmlndXJhdGlvbi5kaWZmKGNvbmZpZykgIT0gMDsKLSAgICAgICAgICAgIGlmIChERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAiU3RhcnRpbmcgYWN0aXZpdHkgd2hlbiBjb25maWcgd2lsbCBjaGFuZ2UgPSAiICsgbUNvbmZpZ1dpbGxDaGFuZ2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpbnQgcmVzID0gc3RhcnRBY3Rpdml0eUxvY2tlZChjYWxsZXIsIGludGVudCwgcmVzb2x2ZWRUeXBlLAotICAgICAgICAgICAgICAgICAgICBncmFudGVkVXJpUGVybWlzc2lvbnMsIGdyYW50ZWRNb2RlLCBhSW5mbywKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0VG8sIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIGNhbGxpbmdQaWQsIGNhbGxpbmdVaWQsCi0gICAgICAgICAgICAgICAgICAgIG9ubHlJZk5lZWRlZCwgY29tcG9uZW50U3BlY2lmaWVkKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1Db25maWdXaWxsQ2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBhbHNvIHdhbnRzIHRvIHN3aXRjaCB0byBhIG5ldyBjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgIC8vIGRvIHNvIG5vdy4gIFRoaXMgYWxsb3dzIGEgY2xlYW4gc3dpdGNoLCBhcyB3ZSBhcmUgd2FpdGluZwotICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgY3VycmVudCBhY3Rpdml0eSB0byBwYXVzZSAoc28gd2Ugd2lsbCBub3QgZGVzdHJveQotICAgICAgICAgICAgICAgIC8vIGl0KSwgYW5kIGhhdmUgbm90IHlldCBzdGFydGVkIHRoZSBuZXh0IGFjdGl2aXR5LgotICAgICAgICAgICAgICAgIGVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX0NPTkZJR1VSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAidXBkYXRlQ29uZmlndXJhdGlvbigpIik7Ci0gICAgICAgICAgICAgICAgbUNvbmZpZ1dpbGxDaGFuZ2UgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICJVcGRhdGluZyB0byBuZXcgY29uZmlndXJhdGlvbiBhZnRlciBzdGFydGluZyBhY3Rpdml0eS4iKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVDb25maWd1cmF0aW9uTG9ja2VkKGNvbmZpZywgbnVsbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChvdXRSZXN1bHQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG91dFJlc3VsdC5yZXN1bHQgPSByZXM7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBJQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICAgICAgbVdhaXRpbmdBY3Rpdml0eUxhdW5jaGVkLmFkZChvdXRSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIW91dFJlc3VsdC50aW1lb3V0ICYmIG91dFJlc3VsdC53aG8gPT0gbnVsbCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9UQVNLX1RPX0ZST05UKSB7Ci0gICAgICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IHRoaXMudG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoci5ub3dWaXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudGltZW91dCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgb3V0UmVzdWx0LndobyA9IG5ldyBDb21wb25lbnROYW1lKHIuaW5mby5wYWNrYWdlTmFtZSwgci5pbmZvLm5hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgb3V0UmVzdWx0LnRvdGFsVGltZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudGhpc1RpbWUgPSAwOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0UmVzdWx0LnRoaXNUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtV2FpdGluZ0FjdGl2aXR5VmlzaWJsZS5hZGQob3V0UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKCFvdXRSZXN1bHQudGltZW91dCAmJiBvdXRSZXN1bHQud2hvID09IG51bGwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHVibGljIGZpbmFsIGludCBzdGFydEFjdGl2aXR5KElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsCiAgICAgICAgICAgICBJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlLCBVcmlbXSBncmFudGVkVXJpUGVybWlzc2lvbnMsCiAgICAgICAgICAgICBpbnQgZ3JhbnRlZE1vZGUsIElCaW5kZXIgcmVzdWx0VG8sCiAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0V2hvLCBpbnQgcmVxdWVzdENvZGUsIGJvb2xlYW4gb25seUlmTmVlZGVkLAogICAgICAgICAgICAgYm9vbGVhbiBkZWJ1ZykgewotICAgICAgICByZXR1cm4gc3RhcnRBY3Rpdml0eU1heVdhaXQoY2FsbGVyLCBpbnRlbnQsIHJlc29sdmVkVHlwZSwKKyAgICAgICAgcmV0dXJuIG1NYWluU3RhY2suc3RhcnRBY3Rpdml0eU1heVdhaXQoY2FsbGVyLCBpbnRlbnQsIHJlc29sdmVkVHlwZSwKICAgICAgICAgICAgICAgICBncmFudGVkVXJpUGVybWlzc2lvbnMsIGdyYW50ZWRNb2RlLCByZXN1bHRUbywgcmVzdWx0V2hvLAogICAgICAgICAgICAgICAgIHJlcXVlc3RDb2RlLCBvbmx5SWZOZWVkZWQsIGRlYnVnLCBudWxsLCBudWxsKTsKICAgICB9CkBAIC0zNzk4LDcgKzE5ODgsNyBAQAogICAgICAgICAgICAgU3RyaW5nIHJlc3VsdFdobywgaW50IHJlcXVlc3RDb2RlLCBib29sZWFuIG9ubHlJZk5lZWRlZCwKICAgICAgICAgICAgIGJvb2xlYW4gZGVidWcpIHsKICAgICAgICAgV2FpdFJlc3VsdCByZXMgPSBuZXcgV2FpdFJlc3VsdCgpOwotICAgICAgICBzdGFydEFjdGl2aXR5TWF5V2FpdChjYWxsZXIsIGludGVudCwgcmVzb2x2ZWRUeXBlLAorICAgICAgICBtTWFpblN0YWNrLnN0YXJ0QWN0aXZpdHlNYXlXYWl0KGNhbGxlciwgaW50ZW50LCByZXNvbHZlZFR5cGUsCiAgICAgICAgICAgICAgICAgZ3JhbnRlZFVyaVBlcm1pc3Npb25zLCBncmFudGVkTW9kZSwgcmVzdWx0VG8sIHJlc3VsdFdobywKICAgICAgICAgICAgICAgICByZXF1ZXN0Q29kZSwgb25seUlmTmVlZGVkLCBkZWJ1ZywgcmVzLCBudWxsKTsKICAgICAgICAgcmV0dXJuIHJlczsKQEAgLTM4MDksNyArMTk5OSw3IEBACiAgICAgICAgICAgICBpbnQgZ3JhbnRlZE1vZGUsIElCaW5kZXIgcmVzdWx0VG8sCiAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0V2hvLCBpbnQgcmVxdWVzdENvZGUsIGJvb2xlYW4gb25seUlmTmVlZGVkLAogICAgICAgICAgICAgYm9vbGVhbiBkZWJ1ZywgQ29uZmlndXJhdGlvbiBjb25maWcpIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0QWN0aXZpdHlNYXlXYWl0KGNhbGxlciwgaW50ZW50LCByZXNvbHZlZFR5cGUsCisgICAgICAgIHJldHVybiBtTWFpblN0YWNrLnN0YXJ0QWN0aXZpdHlNYXlXYWl0KGNhbGxlciwgaW50ZW50LCByZXNvbHZlZFR5cGUsCiAgICAgICAgICAgICAgICAgZ3JhbnRlZFVyaVBlcm1pc3Npb25zLCBncmFudGVkTW9kZSwgcmVzdWx0VG8sIHJlc3VsdFdobywKICAgICAgICAgICAgICAgICByZXF1ZXN0Q29kZSwgb25seUlmTmVlZGVkLCBkZWJ1ZywgbnVsbCwgY29uZmlnKTsKICAgICB9CkBAIC0zODMzLDggKzIwMjMsOCBAQAogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgY29taW5nIGZyb20gdGhlIGN1cnJlbnRseSByZXN1bWVkIGFjdGl2aXR5LCBpdCBpcwogICAgICAgICAgICAgLy8gZWZmZWN0aXZlbHkgc2F5aW5nIHRoYXQgYXBwIHN3aXRjaGVzIGFyZSBhbGxvd2VkIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICYmIG1SZXN1bWVkQWN0aXZpdHkuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkID09CisgICAgICAgICAgICBpZiAobU1haW5TdGFjay5tUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgJiYgbU1haW5TdGFjay5tUmVzdW1lZEFjdGl2aXR5LmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmRlci5nZXRDYWxsaW5nVWlkKCkpIHsKICAgICAgICAgICAgICAgICBtQXBwU3dpdGNoZXNBbGxvd2VkVGltZSA9IDA7CiAgICAgICAgICAgICB9CkBAIC0zODUyLDExICsyMDQyLDExIEBACiAgICAgICAgIH0KIAogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZChjYWxsaW5nQWN0aXZpdHkpOworICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQoY2FsbGluZ0FjdGl2aXR5KTsKICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpbmRleCk7CiAgICAgICAgICAgICBpZiAoci5hcHAgPT0gbnVsbCB8fCByLmFwcC50aHJlYWQgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBjYWxsZXIgaXMgbm90IHJ1bm5pbmcuLi4gIGQnb2ghCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzg3MCw3ICsyMDYwLDcgQEAKICAgICAgICAgICAgIEFjdGl2aXR5SW5mbyBhSW5mbyA9IG51bGw7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIExpc3Q8UmVzb2x2ZUluZm8+IHJlc29sdmVzID0KLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5xdWVyeUludGVudEFjdGl2aXRpZXMoCisgICAgICAgICAgICAgICAgICAgIEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5xdWVyeUludGVudEFjdGl2aXRpZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LCByLnJlc29sdmVkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5NQVRDSF9ERUZBVUxUX09OTFkgfCBTVE9DS19QTV9GTEFHUyk7CiAKQEAgLTM5MTQsNyArMjEwNCw3IEBACiAgICAgICAgICAgICByLmZpbmlzaGluZyA9IHRydWU7CiAKICAgICAgICAgICAgIC8vIFByb3BhZ2F0ZSByZXBseSBpbmZvcm1hdGlvbiBvdmVyIHRvIHRoZSBuZXcgYWN0aXZpdHkuCi0gICAgICAgICAgICBmaW5hbCBIaXN0b3J5UmVjb3JkIHJlc3VsdFRvID0gci5yZXN1bHRUbzsKKyAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHJlc3VsdFRvID0gci5yZXN1bHRUbzsKICAgICAgICAgICAgIGZpbmFsIFN0cmluZyByZXN1bHRXaG8gPSByLnJlc3VsdFdobzsKICAgICAgICAgICAgIGZpbmFsIGludCByZXF1ZXN0Q29kZSA9IHIucmVxdWVzdENvZGU7CiAgICAgICAgICAgICByLnJlc3VsdFRvID0gbnVsbDsKQEAgLTM5MjUsNyArMjExNSw3IEBACiAgICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogICAgICAgICAgICAgLy8gWFhYIHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIHByb3BhZ2F0aW5nIGdyYW50ZWRVcmlQZXJtaXNzaW9ucy4uLgogICAgICAgICAgICAgLy8gdGhvc2UgYXJlIG5vdCB5ZXQgZXhwb3NlZCB0byB1c2VyIGNvZGUsIHNvIHRoZXJlIGlzIG5vIG5lZWQuCi0gICAgICAgICAgICBpbnQgcmVzID0gc3RhcnRBY3Rpdml0eUxvY2tlZChyLmFwcC50aHJlYWQsIGludGVudCwKKyAgICAgICAgICAgIGludCByZXMgPSBtTWFpblN0YWNrLnN0YXJ0QWN0aXZpdHlMb2NrZWQoci5hcHAudGhyZWFkLCBpbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgIHIucmVzb2x2ZWRUeXBlLCBudWxsLCAwLCBhSW5mbywgcmVzdWx0VG8sIHJlc3VsdFdobywKICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdENvZGUsIC0xLCByLmxhdW5jaGVkRnJvbVVpZCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CkBAIC0zOTU5LDcgKzIxNDksNyBAQAogICAgICAgICBBY3Rpdml0eUluZm8gYUluZm87CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBSZXNvbHZlSW5mbyBySW5mbyA9Ci0gICAgICAgICAgICAgICAgQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlSW50ZW50KAorICAgICAgICAgICAgICAgIEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlSW50ZW50KAogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LCByZXNvbHZlZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5NQVRDSF9ERUZBVUxUX09OTFkgfCBTVE9DS19QTV9GTEFHUyk7CiAgICAgICAgICAgICBhSW5mbyA9IHJJbmZvICE9IG51bGwgPyBySW5mby5hY3Rpdml0eUluZm8gOiBudWxsOwpAQCAtMzk3NywxMyArMjE2NywxMyBAQAogICAgICAgICB9CiAKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFydEFjdGl2aXR5TG9ja2VkKG51bGwsIGludGVudCwgcmVzb2x2ZWRUeXBlLAorICAgICAgICAgICAgcmV0dXJuIG1NYWluU3RhY2suc3RhcnRBY3Rpdml0eUxvY2tlZChudWxsLCBpbnRlbnQsIHJlc29sdmVkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgbnVsbCwgMCwgYUluZm8sIHJlc3VsdFRvLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLCAtMSwgdWlkLAogICAgICAgICAgICAgICAgICAgICBvbmx5SWZOZWVkZWQsIGNvbXBvbmVudFNwZWNpZmllZCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgYWRkUmVjZW50VGFza0xvY2tlZChUYXNrUmVjb3JkIHRhc2spIHsKKyAgICBmaW5hbCB2b2lkIGFkZFJlY2VudFRhc2tMb2NrZWQoVGFza1JlY29yZCB0YXNrKSB7CiAgICAgICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgZW50cmllcyB0aGF0IGFyZSB0aGUgc2FtZSBraW5kIG9mIHRhc2suCiAgICAgICAgIGludCBOID0gbVJlY2VudFRhc2tzLnNpemUoKTsKICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewpAQCAtNDAwOSwxMSArMjE5OSwxMSBAQAogICAgIHB1YmxpYyB2b2lkIHNldFJlcXVlc3RlZE9yaWVudGF0aW9uKElCaW5kZXIgdG9rZW4sCiAgICAgICAgICAgICBpbnQgcmVxdWVzdGVkT3JpZW50YXRpb24pIHsKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKICAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBPcmllbnRhdGlvbihyLCByZXF1ZXN0ZWRPcmllbnRhdGlvbik7CiAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGNvbmZpZyA9IG1XaW5kb3dNYW5hZ2VyLnVwZGF0ZU9yaWVudGF0aW9uRnJvbUFwcFRva2VucygKQEAgLTQwMjIsNyArMjIxMiw3IEBACiAgICAgICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICByLmZyb3plbkJlZm9yZURlc3Ryb3kgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmICghdXBkYXRlQ29uZmlndXJhdGlvbkxvY2tlZChjb25maWcsIHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICBtTWFpblN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CkBAIC00MDMxLDI1MCArMjIyMSwxNSBAQAogCiAgICAgcHVibGljIGludCBnZXRSZXF1ZXN0ZWRPcmllbnRhdGlvbihJQmluZGVyIHRva2VuKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgIGludCBpbmRleCA9IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlJbmZvLlNDUkVFTl9PUklFTlRBVElPTl9VTlNQRUNJRklFRDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKICAgICAgICAgICAgIHJldHVybiBtV2luZG93TWFuYWdlci5nZXRBcHBPcmllbnRhdGlvbihyKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBzdG9wQWN0aXZpdHlMb2NrZWQoSGlzdG9yeVJlY29yZCByKSB7Ci0gICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cuZChUQUcsICJTdG9wcGluZzogIiArIHIpOwotICAgICAgICBpZiAoKHIuaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfTk9fSElTVE9SWSkgIT0gMAotICAgICAgICAgICAgICAgIHx8IChyLmluZm8uZmxhZ3MmQWN0aXZpdHlJbmZvLkZMQUdfTk9fSElTVE9SWSkgIT0gMCkgewotICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgIHJlcXVlc3RGaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAibm8taGlzdG9yeSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHIuYXBwICE9IG51bGwgJiYgci5hcHAudGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChtRm9jdXNlZEFjdGl2aXR5ID09IHIpIHsKLSAgICAgICAgICAgICAgICBzZXRGb2N1c2VkQWN0aXZpdHlMb2NrZWQodG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHIucmVzdW1lS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgci5zdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuU1RPUFBJTkc7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiU3RvcHBpbmcgdmlzaWJsZT0iICsgci52aXNpYmxlICsgIiBmb3IgIiArIHIpOwotICAgICAgICAgICAgICAgIGlmICghci52aXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkociwgZmFsc2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVTdG9wQWN0aXZpdHkociwgci52aXNpYmxlLCByLmNvbmZpZ0NoYW5nZUZsYWdzKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWF5YmUganVzdCBpZ25vcmUgZXhjZXB0aW9ucyBoZXJlLi4uICBpZiB0aGUgcHJvY2VzcwotICAgICAgICAgICAgICAgIC8vIGhhcyBjcmFzaGVkLCBvdXIgZGVhdGggbm90aWZpY2F0aW9uIHdpbGwgY2xlYW4gdGhpbmdzCi0gICAgICAgICAgICAgICAgLy8gdXAuCi0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gZHVyaW5nIHBhdXNlIiwgZSk7Ci0gICAgICAgICAgICAgICAgLy8gSnVzdCBpbiBjYXNlLCBhc3N1bWUgaXQgdG8gYmUgc3RvcHBlZC4KLSAgICAgICAgICAgICAgICByLnN0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlNUT1BQRUQ7Ci0gICAgICAgICAgICAgICAgaWYgKHIuY29uZmlnRGVzdHJveSkgewotICAgICAgICAgICAgICAgICAgICBkZXN0cm95QWN0aXZpdHlMb2NrZWQociwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHJldHVybiBSZXR1cm5zIHRydWUgaWYgdGhlIGFjdGl2aXR5IGlzIGJlaW5nIGZpbmlzaGVkLCBmYWxzZSBpZiBmb3IKLSAgICAgKiBzb21lIHJlYXNvbiBpdCBpcyBiZWluZyBsZWZ0IGFzLWlzLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiByZXF1ZXN0RmluaXNoQWN0aXZpdHlMb2NrZWQoSUJpbmRlciB0b2tlbiwgaW50IHJlc3VsdENvZGUsCi0gICAgICAgICAgICBJbnRlbnQgcmVzdWx0RGF0YSwgU3RyaW5nIHJlYXNvbikgewotICAgICAgICBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KAotICAgICAgICAgICAgVEFHLCAiRmluaXNoaW5nIGFjdGl2aXR5OiB0b2tlbj0iICsgdG9rZW4KLSAgICAgICAgICAgICsgIiwgcmVzdWx0PSIgKyByZXN1bHRDb2RlICsgIiwgZGF0YT0iICsgcmVzdWx0RGF0YSk7Ci0KLSAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKLSAgICAgICAgaWYgKGluZGV4IDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7Ci0KLSAgICAgICAgLy8gSXMgdGhpcyB0aGUgbGFzdCBhY3Rpdml0eSBsZWZ0PwotICAgICAgICBib29sZWFuIGxhc3RBY3Rpdml0eSA9IHRydWU7Ci0gICAgICAgIGZvciAoaW50IGk9bUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBwID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKCFwLmZpbmlzaGluZyAmJiBwICE9IHIpIHsKLSAgICAgICAgICAgICAgICBsYXN0QWN0aXZpdHkgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgbGFzdCBhY3Rpdml0eSwgYnV0IGl0IGlzIHRoZSBob21lIGFjdGl2aXR5LCB0aGVuCi0gICAgICAgIC8vIGp1c3QgZG9uJ3QgZmluaXNoIGl0LgotICAgICAgICBpZiAobGFzdEFjdGl2aXR5KSB7Ci0gICAgICAgICAgICBpZiAoci5pbnRlbnQuaGFzQ2F0ZWdvcnkoSW50ZW50LkNBVEVHT1JZX0hPTUUpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpbmRleCwgcmVzdWx0Q29kZSwgcmVzdWx0RGF0YSwgcmVhc29uKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHJldHVybiBSZXR1cm5zIHRydWUgaWYgdGhpcyBhY3Rpdml0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGhpc3RvcnkKLSAgICAgKiBsaXN0LCBvciBmYWxzZSBpZiBpdCBpcyBzdGlsbCBpbiB0aGUgbGlzdCBhbmQgd2lsbCBiZSByZW1vdmVkIGxhdGVyLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBmaW5pc2hBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIsIGludCBpbmRleCwKLSAgICAgICAgICAgIGludCByZXN1bHRDb2RlLCBJbnRlbnQgcmVzdWx0RGF0YSwgU3RyaW5nIHJlYXNvbikgewotICAgICAgICBpZiAoci5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgIFNsb2cudyhUQUcsICJEdXBsaWNhdGUgZmluaXNoIHJlcXVlc3QgZm9yICIgKyByKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHIuZmluaXNoaW5nID0gdHJ1ZTsKLSAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fRklOSVNIX0FDVElWSVRZLAotICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLAotICAgICAgICAgICAgICAgIHIudGFzay50YXNrSWQsIHIuc2hvcnRDb21wb25lbnROYW1lLCByZWFzb24pOwotICAgICAgICByLnRhc2subnVtQWN0aXZpdGllcy0tOwotICAgICAgICBpZiAoaW5kZXggPCAobUhpc3Rvcnkuc2l6ZSgpLTEpKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIG5leHQgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgrMSk7Ci0gICAgICAgICAgICBpZiAobmV4dC50YXNrID09IHIudGFzaykgewotICAgICAgICAgICAgICAgIGlmIChyLmZyb250T2ZUYXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuZXh0IGFjdGl2aXR5IGlzIG5vdyB0aGUgZnJvbnQgb2YgdGhlIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIG5leHQuZnJvbnRPZlRhc2sgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKHIuaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfV0hFTl9UQVNLX1JFU0VUKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgYXNrZWQgdGhhdCB0aGlzIGFjdGl2aXR5IChhbmQgYWxsIGFib3ZlIGl0KQotICAgICAgICAgICAgICAgICAgICAvLyBiZSBjbGVhcmVkIHdoZW4gdGhlIHRhc2sgaXMgcmVzZXQsIGRvbid0IGxvc2UgdGhhdCBpbmZvcm1hdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHByb3BhZ2F0ZSBpdCB1cCB0byB0aGUgbmV4dCBhY3Rpdml0eS4KLSAgICAgICAgICAgICAgICAgICAgbmV4dC5pbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfV0hFTl9UQVNLX1JFU0VUKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByLnBhdXNlS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKLSAgICAgICAgaWYgKG1Gb2N1c2VkQWN0aXZpdHkgPT0gcikgewotICAgICAgICAgICAgc2V0Rm9jdXNlZEFjdGl2aXR5TG9ja2VkKHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBzZW5kIHRoZSByZXN1bHQKLSAgICAgICAgSGlzdG9yeVJlY29yZCByZXN1bHRUbyA9IHIucmVzdWx0VG87Ci0gICAgICAgIGlmIChyZXN1bHRUbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KFRBRywgIkFkZGluZyByZXN1bHQgdG8gIiArIHJlc3VsdFRvCi0gICAgICAgICAgICAgICAgICAgICsgIiB3aG89IiArIHIucmVzdWx0V2hvICsgIiByZXE9IiArIHIucmVxdWVzdENvZGUKLSAgICAgICAgICAgICAgICAgICAgKyAiIHJlcz0iICsgcmVzdWx0Q29kZSArICIgZGF0YT0iICsgcmVzdWx0RGF0YSk7Ci0gICAgICAgICAgICBpZiAoci5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgZ3JhbnRVcmlQZXJtaXNzaW9uRnJvbUludGVudExvY2tlZChyLmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHIucGFja2FnZU5hbWUsIHJlc3VsdERhdGEsIHIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzdWx0VG8uYWRkUmVzdWx0TG9ja2VkKHIsIHIucmVzdWx0V2hvLCByLnJlcXVlc3RDb2RlLCByZXN1bHRDb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdERhdGEpOwotICAgICAgICAgICAgci5yZXN1bHRUbyA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KFRBRywgIk5vIHJlc3VsdCBkZXN0aW5hdGlvbiBmcm9tICIgKyByKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhpcyBIaXN0b3J5UmVjb3JkIGlzIG5vdCBob2xkaW5nIG9uIHRvIG90aGVyIHJlc291cmNlcywKLSAgICAgICAgLy8gYmVjYXVzZSBjbGllbnRzIGhhdmUgcmVtb3RlIElQQyByZWZlcmVuY2VzIHRvIHRoaXMgb2JqZWN0IHNvIHdlCi0gICAgICAgIC8vIGNhbid0IGFzc3VtZSB0aGF0IHdpbGwgZ28gYXdheSBhbmQgd2FudCB0byBhdm9pZCBjaXJjdWxhciBJUEMgcmVmcy4KLSAgICAgICAgci5yZXN1bHRzID0gbnVsbDsKLSAgICAgICAgci5wZW5kaW5nUmVzdWx0cyA9IG51bGw7Ci0gICAgICAgIHIubmV3SW50ZW50cyA9IG51bGw7Ci0gICAgICAgIHIuaWNpY2xlID0gbnVsbDsKLSAgICAgICAgCi0gICAgICAgIGlmIChtUGVuZGluZ1RodW1ibmFpbHMuc2l6ZSgpID4gMCkgewotICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGNsaWVudHMgd2FpdGluZyB0byByZWNlaXZlIHRodW1ibmFpbHMgc28sIGluIGNhc2UKLSAgICAgICAgICAgIC8vIHRoaXMgaXMgYW4gYWN0aXZpdHkgdGhhdCBzb21lb25lIGlzIHdhaXRpbmcgZm9yLCBhZGQgaXQKLSAgICAgICAgICAgIC8vIHRvIHRoZSBwZW5kaW5nIGxpc3Qgc28gd2UgY2FuIGNvcnJlY3RseSB1cGRhdGUgdGhlIGNsaWVudHMuCi0gICAgICAgICAgICBtQ2FuY2VsbGVkVGh1bWJuYWlscy5hZGQocik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSByKSB7Ci0gICAgICAgICAgICBib29sZWFuIGVuZFRhc2sgPSBpbmRleCA8PSAwCi0gICAgICAgICAgICAgICAgICAgIHx8ICgoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgtMSkpLnRhc2sgIT0gci50YXNrOwotICAgICAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICJQcmVwYXJlIGNsb3NlIHRyYW5zaXRpb246IGZpbmlzaGluZyAiICsgcik7Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihlbmRUYXNrCi0gICAgICAgICAgICAgICAgICAgID8gV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfQ0xPU0UKLSAgICAgICAgICAgICAgICAgICAgOiBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfQUNUSVZJVFlfQ0xPU0UpOwotICAgIAotICAgICAgICAgICAgLy8gVGVsbCB3aW5kb3cgbWFuYWdlciB0byBwcmVwYXJlIGZvciB0aGlzIG9uZSB0byBiZSByZW1vdmVkLgotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiRmluaXNoIG5lZWRzIHRvIHBhdXNlOiAiICsgcik7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1VTRVJfTEVBVklORykgU2xvZy52KFRBRywgImZpbmlzaCgpID0+IHBhdXNlIHdpdGggdXNlckxlYXZpbmc9ZmFsc2UiKTsKLSAgICAgICAgICAgICAgICBzdGFydFBhdXNpbmdMb2NrZWQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB9IGVsc2UgaWYgKHIuc3RhdGUgIT0gQWN0aXZpdHlTdGF0ZS5QQVVTSU5HKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgYWN0aXZpdHkgaXMgUEFVU0lORywgd2Ugd2lsbCBjb21wbGV0ZSB0aGUgZmluaXNoIG9uY2UKLSAgICAgICAgICAgIC8vIGl0IGlzIGRvbmUgcGF1c2luZzsgZWxzZSB3ZSBjYW4ganVzdCBkaXJlY3RseSBmaW5pc2ggaXQgaGVyZS4KLSAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkZpbmlzaCBub3QgcGF1c2luZzogIiArIHIpOwotICAgICAgICAgICAgcmV0dXJuIGZpbmlzaEN1cnJlbnRBY3Rpdml0eUxvY2tlZChyLCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgRklOSVNIX0FGVEVSX1BBVVNFKSA9PSBudWxsOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiRmluaXNoIHdhaXRpbmcgZm9yIHBhdXNlIG9mOiAiICsgcik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZJTklTSF9JTU1FRElBVEVMWSA9IDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZJTklTSF9BRlRFUl9QQVVTRSA9IDE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZJTklTSF9BRlRFUl9WSVNJQkxFID0gMjsKLQotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQoSGlzdG9yeVJlY29yZCByLAotICAgICAgICAgICAgaW50IG1vZGUpIHsKLSAgICAgICAgZmluYWwgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHIpOwotICAgICAgICBpZiAoaW5kZXggPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQociwgaW5kZXgsIG1vZGUpOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQoSGlzdG9yeVJlY29yZCByLAotICAgICAgICAgICAgaW50IGluZGV4LCBpbnQgbW9kZSkgewotICAgICAgICAvLyBGaXJzdCB0aGluZ3MgZmlyc3Q6IGlmIHRoaXMgYWN0aXZpdHkgaXMgY3VycmVudGx5IHZpc2libGUsCi0gICAgICAgIC8vIGFuZCB0aGUgcmVzdW1lZCBhY3Rpdml0eSBpcyBub3QgeWV0IHZpc2libGUsIHRoZW4gaG9sZCBvZmYgb24KLSAgICAgICAgLy8gZmluaXNoaW5nIHVudGlsIHRoZSByZXN1bWVkIG9uZSBiZWNvbWVzIHZpc2libGUuCi0gICAgICAgIGlmIChtb2RlID09IEZJTklTSF9BRlRFUl9WSVNJQkxFICYmIHIubm93VmlzaWJsZSkgewotICAgICAgICAgICAgaWYgKCFtU3RvcHBpbmdBY3Rpdml0aWVzLmNvbnRhaW5zKHIpKSB7Ci0gICAgICAgICAgICAgICAgbVN0b3BwaW5nQWN0aXZpdGllcy5hZGQocik7Ci0gICAgICAgICAgICAgICAgaWYgKG1TdG9wcGluZ0FjdGl2aXRpZXMuc2l6ZSgpID4gMykgewotICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBmZXcgYWN0aXZpdGllcyB3YWl0aW5nIHRvIHN0b3AsCi0gICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gZ2l2ZSB1cCBvbiB0aGluZ3MgZ29pbmcgaWRsZSBhbmQgc3RhcnQgY2xlYXJpbmcKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlbSBvdXQuCi0gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4oKTsKLSAgICAgICAgICAgICAgICAgICAgbXNnLndoYXQgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLklETEVfTk9XX01TRzsKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5TVE9QUElORzsKLSAgICAgICAgICAgIHVwZGF0ZU9vbUFkakxvY2tlZCgpOwotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIHJlY29yZCBpcyBjbGVhbmVkIG91dCBvZiBvdGhlciBwbGFjZXMuCi0gICAgICAgIG1TdG9wcGluZ0FjdGl2aXRpZXMucmVtb3ZlKHIpOwotICAgICAgICBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnJlbW92ZShyKTsKLSAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gcikgewotICAgICAgICAgICAgbVJlc3VtZWRBY3Rpdml0eSA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgZmluYWwgQWN0aXZpdHlTdGF0ZSBwcmV2U3RhdGUgPSByLnN0YXRlOwotICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5GSU5JU0hJTkc7Ci0KLSAgICAgICAgaWYgKG1vZGUgPT0gRklOSVNIX0lNTUVESUFURUxZCi0gICAgICAgICAgICAgICAgfHwgcHJldlN0YXRlID09IEFjdGl2aXR5U3RhdGUuU1RPUFBFRAotICAgICAgICAgICAgICAgIHx8IHByZXZTdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLklOSVRJQUxJWklORykgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBhbHJlYWR5IHN0b3BwZWQsIHdlIGNhbiBqdXN0IGZpbmlzaAotICAgICAgICAgICAgLy8gaXQgcmlnaHQgbm93LgotICAgICAgICAgICAgcmV0dXJuIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKSA/IG51bGwgOiByOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTmVlZCB0byBnbyB0aHJvdWdoIHRoZSBmdWxsIHBhdXNlIGN5Y2xlIHRvIGdldCB0aGlzCi0gICAgICAgICAgICAvLyBhY3Rpdml0eSBpbnRvIHRoZSBzdG9wcGVkIHN0YXRlIGFuZCB0aGVuIGZpbmlzaCBpdC4KLSAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJFbnF1ZXVlaW5nIHBlbmRpbmcgZmluaXNoOiAiICsgcik7Ci0gICAgICAgICAgICBtRmluaXNoaW5nQWN0aXZpdGllcy5hZGQocik7Ci0gICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcjsKLSAgICB9Ci0KICAgICAvKioKICAgICAgKiBUaGlzIGlzIHRoZSBpbnRlcm5hbCBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgQWN0aXZpdHkuZmluaXNoKCkuCiAgICAgICogCkBAIC00MjkzLDcgKzIyNDgsNyBAQAogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewogICAgICAgICAgICAgaWYgKG1Db250cm9sbGVyICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBhY3Rpdml0eSB0aGF0IGlzIG5vdCBmaW5pc2hpbmcuCi0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBuZXh0ID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKHRva2VuLCAwKTsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBuZXh0ID0gbU1haW5TdGFjay50b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQodG9rZW4sIDApOwogICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gYXNrIHdhdGNoZXIgaWYgdGhpcyBpcyBhbGxvd2VkCiAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gcmVzdW1lT0sgPSB0cnVlOwpAQCAtNDMwOSw1NyArMjI2NCwxMTkgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwotICAgICAgICAgICAgYm9vbGVhbiByZXMgPSByZXF1ZXN0RmluaXNoQWN0aXZpdHlMb2NrZWQodG9rZW4sIHJlc3VsdENvZGUsCisgICAgICAgICAgICBib29sZWFuIHJlcyA9IG1NYWluU3RhY2sucmVxdWVzdEZpbmlzaEFjdGl2aXR5TG9ja2VkKHRva2VuLCByZXN1bHRDb2RlLAogICAgICAgICAgICAgICAgICAgICByZXN1bHREYXRhLCAiYXBwLXJlcXVlc3QiKTsKICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBzZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoaW50IGNhbGxpbmdVaWQsIEhpc3RvcnlSZWNvcmQgciwKLSAgICAgICAgICAgIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwgaW50IHJlc3VsdENvZGUsIEludGVudCBkYXRhKSB7Ci0KLSAgICAgICAgaWYgKGNhbGxpbmdVaWQgPiAwKSB7Ci0gICAgICAgICAgICBncmFudFVyaVBlcm1pc3Npb25Gcm9tSW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIucGFja2FnZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgIGRhdGEsIHIpOworICAgIHB1YmxpYyBmaW5hbCB2b2lkIGZpbmlzaEhlYXZ5V2VpZ2h0QXBwKCkgeworICAgICAgICBpZiAoY2hlY2tDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uRk9SQ0VfU1RPUF9QQUNLQUdFUykKKyAgICAgICAgICAgICAgICAhPSBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQpIHsKKyAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiUGVybWlzc2lvbiBEZW5pYWw6IGZpbmlzaEhlYXZ5V2VpZ2h0QXBwKCkgZnJvbSBwaWQ9IgorICAgICAgICAgICAgICAgICAgICArIEJpbmRlci5nZXRDYWxsaW5nUGlkKCkKKyAgICAgICAgICAgICAgICAgICAgKyAiLCB1aWQ9IiArIEJpbmRlci5nZXRDYWxsaW5nVWlkKCkKKyAgICAgICAgICAgICAgICAgICAgKyAiIHJlcXVpcmVzICIgKyBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uRk9SQ0VfU1RPUF9QQUNLQUdFUzsKKyAgICAgICAgICAgIFNsb2cudyhUQUcsIG1zZyk7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24obXNnKTsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChERUJVR19SRVNVTFRTKSBTbG9nLnYoVEFHLCAiU2VuZCBhY3Rpdml0eSByZXN1bHQgdG8gIiArIHIKLSAgICAgICAgICAgICAgICArICIgOiB3aG89IiArIHJlc3VsdFdobyArICIgcmVxPSIgKyByZXF1ZXN0Q29kZQotICAgICAgICAgICAgICAgICsgIiByZXM9IiArIHJlc3VsdENvZGUgKyAiIGRhdGE9IiArIGRhdGEpOwotICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSByICYmIHIuYXBwICE9IG51bGwgJiYgci5hcHAudGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgQXJyYXlMaXN0PFJlc3VsdEluZm8+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PFJlc3VsdEluZm8+KCk7Ci0gICAgICAgICAgICAgICAgbGlzdC5hZGQobmV3IFJlc3VsdEluZm8ocmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENvZGUsIGRhdGEpKTsKLSAgICAgICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVTZW5kUmVzdWx0KHIsIGxpc3QpOworICAgICAgICAKKyAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKKyAgICAgICAgICAgIGlmIChtSGVhdnlXZWlnaHRQcm9jZXNzID09IG51bGwpIHsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIHNlbmRpbmcgcmVzdWx0IHRvICIgKyByLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiBhY3Rpdml0aWVzID0gbmV3IEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4oCisgICAgICAgICAgICAgICAgICAgIG1IZWF2eVdlaWdodFByb2Nlc3MuYWN0aXZpdGllcyk7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8YWN0aXZpdGllcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBhY3Rpdml0aWVzLmdldChpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCA9IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHIpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbU1haW5TdGFjay5maW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpbmRleCwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCAiZmluaXNoLWhlYXZ5Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1IZWF2eVdlaWdodFByb2Nlc3MgPSBudWxsOworICAgICAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZShDQU5DRUxfSEVBVllfTk9USUZJQ0FUSU9OX01TRyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgY3Jhc2hBcHBsaWNhdGlvbihpbnQgdWlkLCBpbnQgaW5pdGlhbFBpZCwgU3RyaW5nIHBhY2thZ2VOYW1lLAorICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKGNoZWNrQ2FsbGluZ1Blcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkZPUkNFX1NUT1BfUEFDS0FHRVMpCisgICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7CisgICAgICAgICAgICBTdHJpbmcgbXNnID0gIlBlcm1pc3Npb24gRGVuaWFsOiBjcmFzaEFwcGxpY2F0aW9uKCkgZnJvbSBwaWQ9IgorICAgICAgICAgICAgICAgICAgICArIEJpbmRlci5nZXRDYWxsaW5nUGlkKCkKKyAgICAgICAgICAgICAgICAgICAgKyAiLCB1aWQ9IiArIEJpbmRlci5nZXRDYWxsaW5nVWlkKCkKKyAgICAgICAgICAgICAgICAgICAgKyAiIHJlcXVpcmVzICIgKyBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uRk9SQ0VfU1RPUF9QQUNLQUdFUzsKKyAgICAgICAgICAgIFNsb2cudyhUQUcsIG1zZyk7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24obXNnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKKyAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcHJvYyA9IG51bGw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hpY2ggcHJvY2VzcyB0byBraWxsLiAgV2UgZG9uJ3QgdHJ1c3QgdGhhdCBpbml0aWFsUGlkCisgICAgICAgICAgICAvLyBzdGlsbCBoYXMgYW55IHJlbGF0aW9uIHRvIGN1cnJlbnQgcGlkcywgc28gbXVzdCBzY2FuIHRocm91Z2ggdGhlCisgICAgICAgICAgICAvLyBsaXN0LgorICAgICAgICAgICAgc3luY2hyb25pemVkIChtUGlkc1NlbGZMb2NrZWQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bVBpZHNTZWxmTG9ja2VkLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcCA9IG1QaWRzU2VsZkxvY2tlZC52YWx1ZUF0KGkpOworICAgICAgICAgICAgICAgICAgICBpZiAocC5pbmZvLnVpZCAhPSB1aWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChwLnBpZCA9PSBpbml0aWFsUGlkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jID0gcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIHN0ciA6IHAucGtnTGlzdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ci5lcXVhbHMocGFja2FnZU5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYyA9IHA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwcm9jID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJjcmFzaEFwcGxpY2F0aW9uOiBub3RoaW5nIGZvciB1aWQ9IiArIHVpZAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGluaXRpYWxQaWQ9IiArIGluaXRpYWxQaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBwYWNrYWdlTmFtZT0iICsgcGFja2FnZU5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHByb2MudGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBsb25nIGlkZW50ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvYy50aHJlYWQuc2NoZWR1bGVDcmFzaChtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICByLmFkZFJlc3VsdExvY2tlZChudWxsLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLCByZXN1bHRDb2RlLCBkYXRhKTsKICAgICB9Ci0KKyAgICAKICAgICBwdWJsaWMgZmluYWwgdm9pZCBmaW5pc2hTdWJBY3Rpdml0eShJQmluZGVyIHRva2VuLCBTdHJpbmcgcmVzdWx0V2hvLAogICAgICAgICAgICAgaW50IHJlcXVlc3RDb2RlKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgc2VsZiA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBzZWxmID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKIAogICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKIAogICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICBmb3IgKGk9bUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGZvciAoaT1tTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGkpOwogICAgICAgICAgICAgICAgIGlmIChyLnJlc3VsdFRvID09IHNlbGYgJiYgci5yZXF1ZXN0Q29kZSA9PSByZXF1ZXN0Q29kZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoKHIucmVzdWx0V2hvID09IG51bGwgJiYgcmVzdWx0V2hvID09IG51bGwpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAoci5yZXN1bHRXaG8gIT0gbnVsbCAmJiByLnJlc3VsdFdoby5lcXVhbHMocmVzdWx0V2hvKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksCisgICAgICAgICAgICAgICAgICAgICAgICBtTWFpblN0YWNrLmZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgInJlcXVlc3Qtc3ViIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC00MzcyLDggKzIzODksOCBAQAogICAgIHB1YmxpYyBib29sZWFuIHdpbGxBY3Rpdml0eUJlVmlzaWJsZShJQmluZGVyIHRva2VuKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CiAgICAgICAgICAgICBpbnQgaTsKLSAgICAgICAgICAgIGZvciAoaT1tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgZm9yIChpPW1NYWluU3RhY2subUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKHIgPT0gdG9rZW4pIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDM4OCwxMSArMjQwNSwxMSBAQAogICAgIHB1YmxpYyB2b2lkIG92ZXJyaWRlUGVuZGluZ1RyYW5zaXRpb24oSUJpbmRlciB0b2tlbiwgU3RyaW5nIHBhY2thZ2VOYW1lLAogICAgICAgICAgICAgaW50IGVudGVyQW5pbSwgaW50IGV4aXRBbmltKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgc2VsZiA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBzZWxmID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKIAogICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgICAgIApAQCAtNDQwNywxODggKzI0MjQsNiBAQAogICAgIH0KICAgICAKICAgICAvKioKLSAgICAgKiBQZXJmb3JtIGNsZWFuLXVwIG9mIHNlcnZpY2UgY29ubmVjdGlvbnMgaW4gYW4gYWN0aXZpdHkgcmVjb3JkLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgdm9pZCBjbGVhblVwQWN0aXZpdHlTZXJ2aWNlc0xvY2tlZChIaXN0b3J5UmVjb3JkIHIpIHsKLSAgICAgICAgLy8gVGhyb3cgYXdheSBhbnkgc2VydmljZXMgdGhhdCBoYXZlIGJlZW4gYm91bmQgYnkgdGhpcyBhY3Rpdml0eS4KLSAgICAgICAgaWYgKHIuY29ubmVjdGlvbnMgIT0gbnVsbCkgewotICAgICAgICAgICAgSXRlcmF0b3I8Q29ubmVjdGlvblJlY29yZD4gaXQgPSByLmNvbm5lY3Rpb25zLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgQ29ubmVjdGlvblJlY29yZCBjID0gaXQubmV4dCgpOwotICAgICAgICAgICAgICAgIHJlbW92ZUNvbm5lY3Rpb25Mb2NrZWQoYywgbnVsbCwgcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByLmNvbm5lY3Rpb25zID0gbnVsbDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvKioKLSAgICAgKiBQZXJmb3JtIHRoZSBjb21tb24gY2xlYW4tdXAgb2YgYW4gYWN0aXZpdHkgcmVjb3JkLiAgVGhpcyBpcyBjYWxsZWQgYm90aAotICAgICAqIGFzIHBhcnQgb2YgZGVzdHJveUFjdGl2aXR5TG9ja2VkKCkgKHdoZW4gZGVzdHJveWluZyB0aGUgY2xpZW50LXNpZGUKLSAgICAgKiByZXByZXNlbnRhdGlvbikgYW5kIGNsZWFuaW5nIHRoaW5ncyB1cCBhcyBhIHJlc3VsdCBvZiBpdHMgaG9zdGluZwotICAgICAqIHByb2Nlc3NpbmcgZ29pbmcgYXdheSwgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBubyByZW1haW5pbmcgY2xpZW50LXNpZGUKLSAgICAgKiBzdGF0ZSB0byBkZXN0cm95IHNvIG9ubHkgdGhlIGNsZWFudXAgaGVyZSBpcyBuZWVkZWQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNsZWFuVXBBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIsIGJvb2xlYW4gY2xlYW5TZXJ2aWNlcykgewotICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSByKSB7Ci0gICAgICAgICAgICBtUmVzdW1lZEFjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBpZiAobUZvY3VzZWRBY3Rpdml0eSA9PSByKSB7Ci0gICAgICAgICAgICBtRm9jdXNlZEFjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIHIuY29uZmlnRGVzdHJveSA9IGZhbHNlOwotICAgICAgICByLmZyb3plbkJlZm9yZURlc3Ryb3kgPSBmYWxzZTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhpcyByZWNvcmQgaXMgbm8gbG9uZ2VyIGluIHRoZSBwZW5kaW5nIGZpbmlzaGVzIGxpc3QuCi0gICAgICAgIC8vIFRoaXMgY291bGQgaGFwcGVuLCBmb3IgZXhhbXBsZSwgaWYgd2UgYXJlIHRyaW1taW5nIGFjdGl2aXRpZXMKLSAgICAgICAgLy8gZG93biB0byB0aGUgbWF4IGxpbWl0IHdoaWxlIHRoZXkgYXJlIHN0aWxsIHdhaXRpbmcgdG8gZmluaXNoLgotICAgICAgICBtRmluaXNoaW5nQWN0aXZpdGllcy5yZW1vdmUocik7Ci0gICAgICAgIG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMucmVtb3ZlKHIpOwotICAgICAgICAKLSAgICAgICAgLy8gUmVtb3ZlIGFueSBwZW5kaW5nIHJlc3VsdHMuCi0gICAgICAgIGlmIChyLmZpbmlzaGluZyAmJiByLnBlbmRpbmdSZXN1bHRzICE9IG51bGwpIHsKLSAgICAgICAgICAgIGZvciAoV2Vha1JlZmVyZW5jZTxQZW5kaW5nSW50ZW50UmVjb3JkPiBhcHIgOiByLnBlbmRpbmdSZXN1bHRzKSB7Ci0gICAgICAgICAgICAgICAgUGVuZGluZ0ludGVudFJlY29yZCByZWMgPSBhcHIuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlYyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbmNlbEludGVudFNlbmRlckxvY2tlZChyZWMsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByLnBlbmRpbmdSZXN1bHRzID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjbGVhblNlcnZpY2VzKSB7Ci0gICAgICAgICAgICBjbGVhblVwQWN0aXZpdHlTZXJ2aWNlc0xvY2tlZChyKTsgICAgICAgICAgICAKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtUGVuZGluZ1RodW1ibmFpbHMuc2l6ZSgpID4gMCkgewotICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGNsaWVudHMgd2FpdGluZyB0byByZWNlaXZlIHRodW1ibmFpbHMgc28sIGluIGNhc2UKLSAgICAgICAgICAgIC8vIHRoaXMgaXMgYW4gYWN0aXZpdHkgdGhhdCBzb21lb25lIGlzIHdhaXRpbmcgZm9yLCBhZGQgaXQKLSAgICAgICAgICAgIC8vIHRvIHRoZSBwZW5kaW5nIGxpc3Qgc28gd2UgY2FuIGNvcnJlY3RseSB1cGRhdGUgdGhlIGNsaWVudHMuCi0gICAgICAgICAgICBtQ2FuY2VsbGVkVGh1bWJuYWlscy5hZGQocik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgcmlkIG9mIGFueSBwZW5kaW5nIGlkbGUgdGltZW91dHMuCi0gICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFBBVVNFX1RJTUVPVVRfTVNHLCByKTsKLSAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoSURMRV9USU1FT1VUX01TRywgcik7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHJlbW92ZUFjdGl2aXR5RnJvbUhpc3RvcnlMb2NrZWQoSGlzdG9yeVJlY29yZCByKSB7Ci0gICAgICAgIGlmIChyLnN0YXRlICE9IEFjdGl2aXR5U3RhdGUuREVTVFJPWUVEKSB7Ci0gICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUocik7Ci0gICAgICAgICAgICByLmluSGlzdG9yeSA9IGZhbHNlOwotICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuREVTVFJPWUVEOwotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucmVtb3ZlQXBwVG9rZW4ocik7Ci0gICAgICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2xlYW5VcEFjdGl2aXR5U2VydmljZXNMb2NrZWQocik7Ci0gICAgICAgICAgICByZW1vdmVBY3Rpdml0eVVyaVBlcm1pc3Npb25zTG9ja2VkKHIpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8qKgotICAgICAqIERlc3Ryb3kgdGhlIGN1cnJlbnQgQ0xJRU5UIFNJREUgaW5zdGFuY2Ugb2YgYW4gYWN0aXZpdHkuICBUaGlzIG1heSBiZQotICAgICAqIGNhbGxlZCBib3RoIHdoZW4gYWN0dWFsbHkgZmluaXNoaW5nIGFuIGFjdGl2aXR5LCBvciB3aGVuIHBlcmZvcm1pbmcKLSAgICAgKiBhIGNvbmZpZ3VyYXRpb24gc3dpdGNoIHdoZXJlIHdlIGRlc3Ryb3kgdGhlIGN1cnJlbnQgY2xpZW50LXNpZGUgb2JqZWN0Ci0gICAgICogYnV0IHRoZW4gY3JlYXRlIGEgbmV3IGNsaWVudC1zaWRlIG9iamVjdCBmb3IgdGhpcyBzYW1lIEhpc3RvcnlSZWNvcmQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBib29sZWFuIHJlbW92ZUZyb21BcHApIHsKLSAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KAotICAgICAgICAgICAgVEFHLCAiUmVtb3ZpbmcgYWN0aXZpdHk6IHRva2VuPSIgKyByCi0gICAgICAgICAgICAgICsgIiwgYXBwPSIgKyAoci5hcHAgIT0gbnVsbCA/IHIuYXBwLnByb2Nlc3NOYW1lIDogIihudWxsKSIpKTsKLSAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fREVTVFJPWV9BQ1RJVklUWSwKLSAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwKLSAgICAgICAgICAgICAgICByLnRhc2sudGFza0lkLCByLnNob3J0Q29tcG9uZW50TmFtZSk7Ci0KLSAgICAgICAgYm9vbGVhbiByZW1vdmVkRnJvbUhpc3RvcnkgPSBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGNsZWFuVXBBY3Rpdml0eUxvY2tlZChyLCBmYWxzZSk7Ci0KLSAgICAgICAgZmluYWwgYm9vbGVhbiBoYWRBcHAgPSByLmFwcCAhPSBudWxsOwotICAgICAgICAKLSAgICAgICAgaWYgKGhhZEFwcCkgewotICAgICAgICAgICAgaWYgKHJlbW92ZUZyb21BcHApIHsKLSAgICAgICAgICAgICAgICBpbnQgaWR4ID0gci5hcHAuYWN0aXZpdGllcy5pbmRleE9mKHIpOwotICAgICAgICAgICAgICAgIGlmIChpZHggPj0gMCkgewotICAgICAgICAgICAgICAgICAgICByLmFwcC5hY3Rpdml0aWVzLnJlbW92ZShpZHgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoci5wZXJzaXN0ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlY1BlcnNpc3RlbnRDb3VudExvY2tlZChyLmFwcCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyLmFwcC5hY3Rpdml0aWVzLnNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE5vIGxvbmdlciBoYXZlIGFjdGl2aXRpZXMsIHNvIHVwZGF0ZSBsb2NhdGlvbiBpbgotICAgICAgICAgICAgICAgICAgICAvLyBMUlUgbGlzdC4KLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlTHJ1UHJvY2Vzc0xvY2tlZChyLmFwcCwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbGVhbiBza2lwRGVzdHJveSA9IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cuaShUQUcsICJEZXN0cm95aW5nOiAiICsgcik7Ci0gICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlRGVzdHJveUFjdGl2aXR5KHIsIHIuZmluaXNoaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IGlnbm9yZSBleGNlcHRpb25zIGhlcmUuLi4gIGlmIHRoZSBwcm9jZXNzCi0gICAgICAgICAgICAgICAgLy8gaGFzIGNyYXNoZWQsIG91ciBkZWF0aCBub3RpZmljYXRpb24gd2lsbCBjbGVhbiB0aGluZ3MKLSAgICAgICAgICAgICAgICAvLyB1cC4KLSAgICAgICAgICAgICAgICAvL1Nsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIGR1cmluZyBmaW5pc2giLCBlKTsKLSAgICAgICAgICAgICAgICBpZiAoci5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQWN0aXZpdHlGcm9tSGlzdG9yeUxvY2tlZChyKTsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZEZyb21IaXN0b3J5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgc2tpcERlc3Ryb3kgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgci5hcHAgPSBudWxsOwotICAgICAgICAgICAgci5ub3dWaXNpYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZyAmJiAhc2tpcERlc3Ryb3kpIHsKLSAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5ERVNUUk9ZSU5HOwotICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShERVNUUk9ZX1RJTUVPVVRfTVNHKTsKLSAgICAgICAgICAgICAgICBtc2cub2JqID0gcjsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBERVNUUk9ZX1RJTUVPVVQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5ERVNUUk9ZRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyByZW1vdmUgdGhpcyByZWNvcmQgZnJvbSB0aGUgaGlzdG9yeS4KLSAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgIHJlbW92ZUFjdGl2aXR5RnJvbUhpc3RvcnlMb2NrZWQocik7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlZEZyb21IaXN0b3J5ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuREVTVFJPWUVEOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyA9IDA7Ci0gICAgICAgIAotICAgICAgICBpZiAoIW1MUlVBY3Rpdml0aWVzLnJlbW92ZShyKSAmJiBoYWRBcHApIHsKLSAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSAiICsgciArICIgYmVpbmcgZmluaXNoZWQsIGJ1dCBub3QgaW4gTFJVIGxpc3QiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHJlbW92ZWRGcm9tSGlzdG9yeTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHJlbW92ZUhpc3RvcnlSZWNvcmRzRm9yQXBwTG9ja2VkKEFycmF5TGlzdCBsaXN0LCBQcm9jZXNzUmVjb3JkIGFwcCkgewotICAgICAgICBpbnQgaSA9IGxpc3Quc2l6ZSgpOwotICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCi0gICAgICAgICAgICBUQUcsICJSZW1vdmluZyBhcHAgIiArIGFwcCArICIgZnJvbSBsaXN0ICIgKyBsaXN0Ci0gICAgICAgICAgICArICIgd2l0aCAiICsgaSArICIgZW50cmllcyIpOwotICAgICAgICB3aGlsZSAoaSA+IDApIHsKLSAgICAgICAgICAgIGktLTsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKWxpc3QuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAotICAgICAgICAgICAgICAgIFRBRywgIlJlY29yZCAjIiArIGkgKyAiICIgKyByICsgIjogYXBwPSIgKyByLmFwcCk7Ci0gICAgICAgICAgICBpZiAoci5hcHAgPT0gYXBwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlJlbW92aW5nIHRoaXMgZW50cnkhIik7Ci0gICAgICAgICAgICAgICAgbGlzdC5yZW1vdmUoaSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKICAgICAgKiBNYWluIGZ1bmN0aW9uIGZvciByZW1vdmluZyBhbiBleGlzdGluZyBwcm9jZXNzIGZyb20gdGhlIGFjdGl2aXR5IG1hbmFnZXIKICAgICAgKiBhcyBhIHJlc3VsdCBvZiB0aGF0IHByb2Nlc3MgZ29pbmcgYXdheS4gIENsZWFycyBvdXQgYWxsIGNvbm5lY3Rpb25zCiAgICAgICogdG8gdGhlIHByb2Nlc3MuCkBAIC00NjAxLDMwICsyNDM2LDI3IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLyBKdXN0IGluIGNhc2UuLi4KLSAgICAgICAgaWYgKG1QYXVzaW5nQWN0aXZpdHkgIT0gbnVsbCAmJiBtUGF1c2luZ0FjdGl2aXR5LmFwcCA9PSBhcHApIHsKLSAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkFwcCBkaWVkIHdoaWxlIHBhdXNpbmc6ICIgKyBtUGF1c2luZ0FjdGl2aXR5KTsKLSAgICAgICAgICAgIG1QYXVzaW5nQWN0aXZpdHkgPSBudWxsOworICAgICAgICBpZiAobU1haW5TdGFjay5tUGF1c2luZ0FjdGl2aXR5ICE9IG51bGwgJiYgbU1haW5TdGFjay5tUGF1c2luZ0FjdGl2aXR5LmFwcCA9PSBhcHApIHsKKyAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkFwcCBkaWVkIHdoaWxlIHBhdXNpbmc6ICIgK21NYWluU3RhY2subVBhdXNpbmdBY3Rpdml0eSk7CisgICAgICAgICAgICBtTWFpblN0YWNrLm1QYXVzaW5nQWN0aXZpdHkgPSBudWxsOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtTGFzdFBhdXNlZEFjdGl2aXR5ICE9IG51bGwgJiYgbUxhc3RQYXVzZWRBY3Rpdml0eS5hcHAgPT0gYXBwKSB7Ci0gICAgICAgICAgICBtTGFzdFBhdXNlZEFjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgaWYgKG1NYWluU3RhY2subUxhc3RQYXVzZWRBY3Rpdml0eSAhPSBudWxsICYmIG1NYWluU3RhY2subUxhc3RQYXVzZWRBY3Rpdml0eS5hcHAgPT0gYXBwKSB7CisgICAgICAgICAgICBtTWFpblN0YWNrLm1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOwogICAgICAgICB9CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoaXMgYXBwbGljYXRpb24ncyBhY3Rpdml0aWVzIGZyb20gYWN0aXZlIGxpc3RzLgotICAgICAgICByZW1vdmVIaXN0b3J5UmVjb3Jkc0ZvckFwcExvY2tlZChtTFJVQWN0aXZpdGllcywgYXBwKTsKLSAgICAgICAgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQobVN0b3BwaW5nQWN0aXZpdGllcywgYXBwKTsKLSAgICAgICAgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQobVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcywgYXBwKTsKLSAgICAgICAgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQobUZpbmlzaGluZ0FjdGl2aXRpZXMsIGFwcCk7CisgICAgICAgIG1NYWluU3RhY2sucmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQoYXBwKTsKIAogICAgICAgICBib29sZWFuIGF0VG9wID0gdHJ1ZTsKICAgICAgICAgYm9vbGVhbiBoYXNWaXNpYmxlQWN0aXZpdGllcyA9IGZhbHNlOwogCiAgICAgICAgIC8vIENsZWFuIG91dCB0aGUgaGlzdG9yeSBsaXN0LgotICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgaW50IGkgPSBtTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKTsKICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAogICAgICAgICAgICAgVEFHLCAiUmVtb3ZpbmcgYXBwICIgKyBhcHAgKyAiIGZyb20gaGlzdG9yeSB3aXRoICIgKyBpICsgIiBlbnRyaWVzIik7CiAgICAgICAgIHdoaWxlIChpID4gMCkgewogICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpKTsKICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKICAgICAgICAgICAgICAgICBUQUcsICJSZWNvcmQgIyIgKyBpICsgIiAiICsgciArICI6IGFwcD0iICsgci5hcHApOwogICAgICAgICAgICAgaWYgKHIuYXBwID09IGFwcCkgewpAQCAtNDYzMiwxNCArMjQ2NCwxNCBAQAogICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCiAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJSZW1vdmluZyB0aGlzIGVudHJ5ISAgZnJvemVuPSIgKyByLmhhdmVTdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGZpbmlzaGluZz0iICsgci5maW5pc2hpbmcpOwotICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgICAgIG1NYWluU3RhY2subUhpc3RvcnkucmVtb3ZlKGkpOwogCiAgICAgICAgICAgICAgICAgICAgIHIuaW5IaXN0b3J5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnJlbW92ZUFwcFRva2VuKHIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtTWFpblN0YWNrLm1IaXN0b3J5KTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZW1vdmVBY3Rpdml0eVVyaVBlcm1pc3Npb25zTG9ja2VkKHIpOworICAgICAgICAgICAgICAgICAgICByLnJlbW92ZVVyaVBlcm1pc3Npb25zTG9ja2VkKCk7CiAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRoZSBjdXJyZW50IHN0YXRlIGZvciB0aGlzIGFjdGl2aXR5LCBzbwpAQCAtNDY1Niw3ICsyNDg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGNsZWFuVXBBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICByLnN0YWNrLmNsZWFuVXBBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKICAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5TVE9QUEVEOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXRUb3AgPSBmYWxzZTsKQEAgLTQ2NzMsMTQgKzI1MDUsMTQgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcmVzdGFydGluZykgewotICAgICAgICAgICAgaWYgKCFyZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKSkgeworICAgICAgICAgICAgaWYgKCFtTWFpblN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIG5vdGhpbmcgdG8gcmVzdW1lLCBhbmQgd2UgYXJlIG5vdCBhbHJlYWR5CiAgICAgICAgICAgICAgICAgLy8gcmVzdGFydGluZyB0aGlzIHByb2Nlc3MsIGJ1dCB0aGVyZSBpcyBhIHZpc2libGUgYWN0aXZpdHkgdGhhdAogICAgICAgICAgICAgICAgIC8vIGlzIGhvc3RlZCBieSB0aGUgcHJvY2Vzcy4uLiAgdGhlbiBtYWtlIHN1cmUgYWxsIHZpc2libGUKICAgICAgICAgICAgICAgICAvLyBhY3Rpdml0aWVzIGFyZSBydW5uaW5nLCB0YWtpbmcgY2FyZSBvZiByZXN0YXJ0aW5nIHRoaXMKICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzLgogICAgICAgICAgICAgICAgIGlmIChoYXNWaXNpYmxlQWN0aXZpdGllcykgewotICAgICAgICAgICAgICAgICAgICBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChudWxsLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbU1haW5TdGFjay5lbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChudWxsLCAwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2OTksNyArMjUzMSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIFByb2Nlc3NSZWNvcmQgZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKAorICAgIGZpbmFsIFByb2Nlc3NSZWNvcmQgZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKAogICAgICAgICAgICAgSUFwcGxpY2F0aW9uVGhyZWFkIHRocmVhZCkgewogICAgICAgICBpZiAodGhyZWFkID09IG51bGwpIHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNDcwOSw3ICsyNTQxLDcgQEAKICAgICAgICAgcmV0dXJuIGFwcEluZGV4ID49IDAgPyBtTHJ1UHJvY2Vzc2VzLmdldChhcHBJbmRleCkgOiBudWxsOwogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBhcHBEaWVkTG9ja2VkKFByb2Nlc3NSZWNvcmQgYXBwLCBpbnQgcGlkLAorICAgIGZpbmFsIHZvaWQgYXBwRGllZExvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCwgaW50IHBpZCwKICAgICAgICAgICAgIElBcHBsaWNhdGlvblRocmVhZCB0aHJlYWQpIHsKIAogICAgICAgICBtUHJvY0RlYXRoc1swXSsrOwpAQCAtNDc1MSw4ICsyNTgzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYy5sYXN0TG93TWVtb3J5K0dDX01JTl9JTlRFUlZBTCkgPD0gbm93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGxvdyBtZW1vcnkgcmVwb3J0IGlzIG92ZXJyaWRpbmcgYW55IGN1cnJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSBmb3IgYSBHQyByZXF1ZXN0LiAgTWFrZSBzdXJlIHRvIGRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmlzaWJsZS9mb3JlZ3JvdW5kIHByb2Nlc3NlcyBmaXJzdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjLnNldEFkaiA8PSBWSVNJQkxFX0FQUF9BREopIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoZWF2eS9pbXBvcnRhbnQvdmlzaWJsZS9mb3JlZ3JvdW5kIHByb2Nlc3NlcyBmaXJzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjLnNldEFkaiA8PSBIRUFWWV9XRUlHSFRfQVBQX0FESikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWMubGFzdFJlcXVlc3RlZEdjID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWMubGFzdFJlcXVlc3RlZEdjID0gcmVjLmxhc3RMb3dNZW1vcnk7CkBAIC00ODI5LDggKzI2NjEsOCBAQAogICAgICAgICByZXR1cm4gdHJhY2VzRmlsZTsKICAgICB9CiAKLSAgICBmaW5hbCB2b2lkIGFwcE5vdFJlc3BvbmRpbmcoUHJvY2Vzc1JlY29yZCBhcHAsIEhpc3RvcnlSZWNvcmQgYWN0aXZpdHksCi0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHBhcmVudCwgZmluYWwgU3RyaW5nIGFubm90YXRpb24pIHsKKyAgICBmaW5hbCB2b2lkIGFwcE5vdFJlc3BvbmRpbmcoUHJvY2Vzc1JlY29yZCBhcHAsIEFjdGl2aXR5UmVjb3JkIGFjdGl2aXR5LAorICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcGFyZW50LCBmaW5hbCBTdHJpbmcgYW5ub3RhdGlvbikgewogICAgICAgICBBcnJheUxpc3Q8SW50ZWdlcj4gcGlkcyA9IG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oMjApOwogICAgICAgICAKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CkBAIC00OTQ5LDggKzI3ODEsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGRlY1BlcnNpc3RlbnRDb3VudExvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCkKLSAgICB7CisgICAgZmluYWwgdm9pZCBkZWNQZXJzaXN0ZW50Q291bnRMb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHApIHsKICAgICAgICAgYXBwLnBlcnNpc3RlbnRBY3Rpdml0aWVzLS07CiAgICAgICAgIGlmIChhcHAucGVyc2lzdGVudEFjdGl2aXRpZXMgPiAwKSB7CiAgICAgICAgICAgICAvLyBTdGlsbCBtb3JlIG9mICdlbS4uLgpAQCAtNDk3OCwxMSArMjgwOSwxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBhcHAgPSByLmFwcDsKIAogICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KApAQCAtNTAzNCw3ICsyODY1LDcgQEAKICAgICAgICAgaW50IHBpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CiAgICAgICAgIGxvbmcgY2FsbGluZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpOwogICAgICAgICAgICAgaW50IHBrZ1VpZCA9IC0xOwogICAgICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKICAgICAgICAgICAgICAgICB0cnkgewpAQCAtNTA5MSw3ICsyOTIyLDcgQEAKICAgICAgICAgCiAgICAgICAgIGxvbmcgY2FsbGluZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpOwogICAgICAgICAgICAgaW50IHBrZ1VpZCA9IC0xOwogICAgICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKICAgICAgICAgICAgICAgICB0cnkgewpAQCAtNTEyMyw3ICsyOTU0LDcgQEAKICAgICAgICAgCiAgICAgICAgIGxvbmcgY2FsbGluZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpOwogICAgICAgICAgICAgaW50IHBrZ1VpZCA9IC0xOwogICAgICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKICAgICAgICAgICAgICAgICB0cnkgewpAQCAtNTE5MywxMCArMzAyNCwxMCBAQAogICAgICAgICAgICAgCiAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5jbG9zZVN5c3RlbURpYWxvZ3MocmVhc29uKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChpPW1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBmb3IgKGk9bU1haW5TdGFjay5tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpKTsKICAgICAgICAgICAgICAgICBpZiAoKHIuaW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19GSU5JU0hfT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1MpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaSwKKyAgICAgICAgICAgICAgICAgICAgci5zdGFjay5maW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgImNsb3NlLXN5cyIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTUyOTcsNyArMzEyOCw3IEBACiAKICAgICAgICAgaWYgKHVpZCA8IDApIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdWlkID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRQYWNrYWdlVWlkKG5hbWUpOworICAgICAgICAgICAgICAgIHVpZCA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRQYWNrYWdlVWlkKG5hbWUpOwogICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTMxNyw4ICszMTQ4LDggQEAKICAgICAgICAgYm9vbGVhbiBkaWRTb21ldGhpbmcgPSBraWxsUGFja2FnZVByb2Nlc3Nlc0xvY2tlZChuYW1lLCB1aWQsIC0xMDAsCiAgICAgICAgICAgICAgICAgY2FsbGVyV2lsbFJlc3RhcnQsIGRvaXQpOwogICAgICAgICAKLSAgICAgICAgZm9yIChpPW1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgZm9yIChpPW1NYWluU3RhY2subUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpKTsKICAgICAgICAgICAgIGlmIChyLnBhY2thZ2VOYW1lLmVxdWFscyhuYW1lKSkgewogICAgICAgICAgICAgICAgIGlmICghZG9pdCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUzMjksNyArMzE2MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHIuYXBwLnJlbW92ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByLmFwcCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaSwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAidW5pbnN0YWxsIik7CisgICAgICAgICAgICAgICAgci5zdGFjay5maW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJ1bmluc3RhbGwiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC01MzYxLDcgKzMxOTIsNyBAQAogICAgICAgICAgICAgICAgICAgICBhYy5yZW1vdmVQYWNrYWdlKG5hbWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgbU1haW5TdGFjay5yZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIGRpZFNvbWV0aGluZzsKQEAgLTUzNzUsNiArMzIwNiwxMCBAQAogICAgICAgICAgICAgKyAiLyIgKyB1aWQgKyAiKSIpOwogCiAgICAgICAgIG1Qcm9jZXNzTmFtZXMucmVtb3ZlKG5hbWUsIHVpZCk7CisgICAgICAgIGlmIChtSGVhdnlXZWlnaHRQcm9jZXNzID09IGFwcCkgeworICAgICAgICAgICAgbUhlYXZ5V2VpZ2h0UHJvY2VzcyA9IG51bGw7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKENBTkNFTF9IRUFWWV9OT1RJRklDQVRJT05fTVNHKTsKKyAgICAgICAgfQogICAgICAgICBib29sZWFuIG5lZWRSZXN0YXJ0ID0gZmFsc2U7CiAgICAgICAgIGlmIChhcHAucGlkID4gMCAmJiBhcHAucGlkICE9IE1ZX1BJRCkgewogICAgICAgICAgICAgaW50IHBpZCA9IGFwcC5waWQ7CkBAIC01NDE2LDYgKzMyNTEsMTAgQEAKICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX1BST0NFU1NfU1RBUlRfVElNRU9VVCwgcGlkLCBhcHAuaW5mby51aWQsCiAgICAgICAgICAgICAgICAgICAgIGFwcC5wcm9jZXNzTmFtZSk7CiAgICAgICAgICAgICBtUHJvY2Vzc05hbWVzLnJlbW92ZShhcHAucHJvY2Vzc05hbWUsIGFwcC5pbmZvLnVpZCk7CisgICAgICAgICAgICBpZiAobUhlYXZ5V2VpZ2h0UHJvY2VzcyA9PSBhcHApIHsKKyAgICAgICAgICAgICAgICBtSGVhdnlXZWlnaHRQcm9jZXNzID0gbnVsbDsKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKENBTkNFTF9IRUFWWV9OT1RJRklDQVRJT05fTVNHKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIFRha2UgY2FyZSBvZiBhbnkgbGF1bmNoaW5nIHByb3ZpZGVycyB3YWl0aW5nIGZvciB0aGlzIHByb2Nlc3MuCiAgICAgICAgICAgICBjaGVja0FwcEluTGF1bmNoaW5nUHJvdmlkZXJzTG9ja2VkKGFwcCwgdHJ1ZSk7CiAgICAgICAgICAgICAvLyBUYWtlIGNhcmUgb2YgYW55IHNlcnZpY2VzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoZSBwcm9jZXNzLgpAQCAtNTU4MiwxMiArMzQyMSwxMiBAQAogICAgICAgICBib29sZWFuIGRpZFNvbWV0aGluZyA9IGZhbHNlOwogCiAgICAgICAgIC8vIFNlZSBpZiB0aGUgdG9wIHZpc2libGUgYWN0aXZpdHkgaXMgd2FpdGluZyB0byBydW4gaW4gdGhpcyBwcm9jZXNzLi4uCi0gICAgICAgIEhpc3RvcnlSZWNvcmQgaHIgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIGhyID0gbU1haW5TdGFjay50b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CiAgICAgICAgIGlmIChociAhPSBudWxsICYmIG5vcm1hbE1vZGUpIHsKICAgICAgICAgICAgIGlmIChoci5hcHAgPT0gbnVsbCAmJiBhcHAuaW5mby51aWQgPT0gaHIuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkCiAgICAgICAgICAgICAgICAgICAgICYmIHByb2Nlc3NOYW1lLmVxdWFscyhoci5wcm9jZXNzTmFtZSkpIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVhbFN0YXJ0QWN0aXZpdHlMb2NrZWQoaHIsIGFwcCwgdHJ1ZSwgdHJ1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1NYWluU3RhY2sucmVhbFN0YXJ0QWN0aXZpdHlMb2NrZWQoaHIsIGFwcCwgdHJ1ZSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFNvbWV0aGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewpAQCAtNTU5Niw3ICszNDM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYmFkQXBwID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKGhyLCBudWxsLCBwcm9jZXNzTmFtZSwgMCk7CisgICAgICAgICAgICAgICAgbU1haW5TdGFjay5lbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChociwgbnVsbCwgcHJvY2Vzc05hbWUsIDApOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTU2ODAsMTk1ICszNTE5LDE2IEBACiAKICAgICBwdWJsaWMgZmluYWwgdm9pZCBhY3Rpdml0eUlkbGUoSUJpbmRlciB0b2tlbiwgQ29uZmlndXJhdGlvbiBjb25maWcpIHsKICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKLSAgICAgICAgYWN0aXZpdHlJZGxlSW50ZXJuYWwodG9rZW4sIGZhbHNlLCBjb25maWcpOworICAgICAgICBtTWFpblN0YWNrLmFjdGl2aXR5SWRsZUludGVybmFsKHRva2VuLCBmYWxzZSwgY29uZmlnKTsKICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKICAgICB9CiAKLSAgICBmaW5hbCBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4gcHJvY2Vzc1N0b3BwaW5nQWN0aXZpdGllc0xvY2tlZCgKLSAgICAgICAgICAgIGJvb2xlYW4gcmVtb3ZlKSB7Ci0gICAgICAgIGludCBOID0gbVN0b3BwaW5nQWN0aXZpdGllcy5zaXplKCk7Ci0gICAgICAgIGlmIChOIDw9IDApIHJldHVybiBudWxsOwotCi0gICAgICAgIEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPiBzdG9wcyA9IG51bGw7Ci0KLSAgICAgICAgZmluYWwgYm9vbGVhbiBub3dWaXNpYmxlID0gbVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsCi0gICAgICAgICAgICAgICAgJiYgbVJlc3VtZWRBY3Rpdml0eS5ub3dWaXNpYmxlCi0gICAgICAgICAgICAgICAgJiYgIW1SZXN1bWVkQWN0aXZpdHkud2FpdGluZ1Zpc2libGU7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgcyA9IG1TdG9wcGluZ0FjdGl2aXRpZXMuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlN0b3BwaW5nICIgKyBzICsgIjogbm93VmlzaWJsZT0iCi0gICAgICAgICAgICAgICAgICAgICsgbm93VmlzaWJsZSArICIgd2FpdGluZ1Zpc2libGU9IiArIHMud2FpdGluZ1Zpc2libGUKLSAgICAgICAgICAgICAgICAgICAgKyAiIGZpbmlzaGluZz0iICsgcy5maW5pc2hpbmcpOwotICAgICAgICAgICAgaWYgKHMud2FpdGluZ1Zpc2libGUgJiYgbm93VmlzaWJsZSkgewotICAgICAgICAgICAgICAgIG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMucmVtb3ZlKHMpOwotICAgICAgICAgICAgICAgIHMud2FpdGluZ1Zpc2libGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAocy5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBmaW5pc2hpbmcsIGl0IGlzIHNpdHRpbmcgb24gdG9wIG9mCi0gICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5b25lIGVsc2UgYnV0IHdlIG5vdyBrbm93IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuLi4KLSAgICAgICAgICAgICAgICAgICAgLy8gc28gZ2V0IHJpZCBvZiBpdC4gIE90aGVyd2lzZSwgd2UgbmVlZCB0byBnbyB0aHJvdWdoIHRoZQotICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWwgZmxvdyBhbmQgaGlkZSBpdCBvbmNlIHdlIGRldGVybWluZSB0aGF0IGl0IGlzCi0gICAgICAgICAgICAgICAgICAgIC8vIGhpZGRlbiBieSB0aGUgYWN0aXZpdGllcyBpbiBmcm9udCBvZiBpdC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkJlZm9yZSBzdG9wcGluZywgY2FuIGhpZGU6ICIgKyBzKTsKLSAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShzLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzLndhaXRpbmdWaXNpYmxlICYmIHJlbW92ZSkgewotICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJSZWFkeSB0byBzdG9wOiAiICsgcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0b3BzID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RvcHMgPSBuZXcgQXJyYXlMaXN0PEhpc3RvcnlSZWNvcmQ+KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0b3BzLmFkZChzKTsKLSAgICAgICAgICAgICAgICBtU3RvcHBpbmdBY3Rpdml0aWVzLnJlbW92ZShpKTsKLSAgICAgICAgICAgICAgICBOLS07Ci0gICAgICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHN0b3BzOwotICAgIH0KLQogICAgIHZvaWQgZW5hYmxlU2NyZWVuQWZ0ZXJCb290KCkgewogICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5CT09UX1BST0dSRVNTX0VOQUJMRV9TQ1JFRU4sCiAgICAgICAgICAgICAgICAgU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkpOwogICAgICAgICBtV2luZG93TWFuYWdlci5lbmFibGVTY3JlZW5BZnRlckJvb3QoKTsKICAgICB9CiAKLSAgICBmaW5hbCB2b2lkIGFjdGl2aXR5SWRsZUludGVybmFsKElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gZnJvbVRpbWVvdXQsCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uIGNvbmZpZykgewotICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiQWN0aXZpdHkgaWRsZTogIiArIHRva2VuKTsKLQotICAgICAgICBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4gc3RvcHMgPSBudWxsOwotICAgICAgICBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4gZmluaXNoZXMgPSBudWxsOwotICAgICAgICBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4gdGh1bWJuYWlscyA9IG51bGw7Ci0gICAgICAgIGludCBOUyA9IDA7Ci0gICAgICAgIGludCBORiA9IDA7Ci0gICAgICAgIGludCBOVCA9IDA7Ci0gICAgICAgIElBcHBsaWNhdGlvblRocmVhZCBzZW5kVGh1bWJuYWlsID0gbnVsbDsKLSAgICAgICAgYm9vbGVhbiBib290aW5nID0gZmFsc2U7Ci0gICAgICAgIGJvb2xlYW4gZW5hYmxlU2NyZWVuID0gZmFsc2U7Ci0KLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBpZiAodG9rZW4gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKElETEVfVElNRU9VVF9NU0csIHRva2VuKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gR2V0IHRoZSBhY3Rpdml0eSByZWNvcmQuCi0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwotICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOwotCi0gICAgICAgICAgICAgICAgaWYgKGZyb21UaW1lb3V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcG9ydEFjdGl2aXR5TGF1bmNoZWRMb2NrZWQoZnJvbVRpbWVvdXQsIHIsIC0xLCAtMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBoYWNrIHRvIHNlbWktZGVhbCB3aXRoIGEgcmFjZSBjb25kaXRpb24KLSAgICAgICAgICAgICAgICAvLyBpbiB0aGUgY2xpZW50IHdoZXJlIGl0IGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIGEKLSAgICAgICAgICAgICAgICAvLyBuZXdlciBjb25maWd1cmF0aW9uIGZyb20gd2hlbiB3ZSBhc2tlZCBpdCB0byBsYXVuY2guCi0gICAgICAgICAgICAgICAgLy8gV2UnbGwgdXBkYXRlIHdpdGggd2hhdGV2ZXIgY29uZmlndXJhdGlvbiBpdCBub3cgc2F5cwotICAgICAgICAgICAgICAgIC8vIGl0IHVzZWQgdG8gbGF1bmNoLgotICAgICAgICAgICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByLmNvbmZpZ3VyYXRpb24gPSBjb25maWc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIE5vIGxvbmdlciBuZWVkIHRvIGtlZXAgdGhlIGRldmljZSBhd2FrZS4KLSAgICAgICAgICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSByICYmIG1MYXVuY2hpbmdBY3Rpdml0eS5pc0hlbGQoKSkgewotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhMQVVOQ0hfVElNRU9VVF9NU0cpOwotICAgICAgICAgICAgICAgICAgICBtTGF1bmNoaW5nQWN0aXZpdHkucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBub3cgaWRsZS4gIElmIHNvbWVvbmUgaXMgd2FpdGluZyBmb3IgYSB0aHVtYm5haWwgZnJvbQotICAgICAgICAgICAgICAgIC8vIHVzLCB3ZSBjYW4gbm93IGRlbGl2ZXIuCi0gICAgICAgICAgICAgICAgci5pZGxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBzY2hlZHVsZUFwcEdjc0xvY2tlZCgpOwotICAgICAgICAgICAgICAgIGlmIChyLnRodW1ibmFpbE5lZWRlZCAmJiByLmFwcCAhPSBudWxsICYmIHIuYXBwLnRocmVhZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbmRUaHVtYm5haWwgPSByLmFwcC50aHJlYWQ7Ci0gICAgICAgICAgICAgICAgICAgIHIudGh1bWJuYWlsTmVlZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBmdWxsc2NyZWVuLCBzZXQgdXAgdG8gaGlkZSB0aG9zZSB1bmRlciBpdC4KLQotICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudihUQUcsICJJZGxlIGFjdGl2aXR5IGZvciAiICsgcik7Ci0gICAgICAgICAgICAgICAgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQobnVsbCwgMCk7Ci0KLSAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJJRExFOiBtQm9vdGVkPSIgKyBtQm9vdGVkICsgIiwgZnJvbVRpbWVvdXQ9IiArIGZyb21UaW1lb3V0KTsKLSAgICAgICAgICAgICAgICBpZiAoIW1Cb290ZWQgJiYgIWZyb21UaW1lb3V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Cb290ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbmFibGVTY3JlZW4gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZnJvbVRpbWVvdXQpIHsKLSAgICAgICAgICAgICAgICByZXBvcnRBY3Rpdml0eUxhdW5jaGVkTG9ja2VkKGZyb21UaW1lb3V0LCBudWxsLCAtMSwgLTEpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBBdG9taWNhbGx5IHJldHJpZXZlIGFsbCBvZiB0aGUgb3RoZXIgdGhpbmdzIHRvIGRvLgotICAgICAgICAgICAgc3RvcHMgPSBwcm9jZXNzU3RvcHBpbmdBY3Rpdml0aWVzTG9ja2VkKHRydWUpOwotICAgICAgICAgICAgTlMgPSBzdG9wcyAhPSBudWxsID8gc3RvcHMuc2l6ZSgpIDogMDsKLSAgICAgICAgICAgIGlmICgoTkY9bUZpbmlzaGluZ0FjdGl2aXRpZXMuc2l6ZSgpKSA+IDApIHsKLSAgICAgICAgICAgICAgICBmaW5pc2hlcyA9IG5ldyBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4obUZpbmlzaGluZ0FjdGl2aXRpZXMpOwotICAgICAgICAgICAgICAgIG1GaW5pc2hpbmdBY3Rpdml0aWVzLmNsZWFyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKE5UPW1DYW5jZWxsZWRUaHVtYm5haWxzLnNpemUoKSkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgdGh1bWJuYWlscyA9IG5ldyBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4obUNhbmNlbGxlZFRodW1ibmFpbHMpOwotICAgICAgICAgICAgICAgIG1DYW5jZWxsZWRUaHVtYm5haWxzLmNsZWFyKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb3RpbmcgPSBtQm9vdGluZzsKLSAgICAgICAgICAgIG1Cb290aW5nID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaTsKLQotICAgICAgICAvLyBTZW5kIHRodW1ibmFpbCBpZiByZXF1ZXN0ZWQuCi0gICAgICAgIGlmIChzZW5kVGh1bWJuYWlsICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgc2VuZFRodW1ibmFpbC5yZXF1ZXN0VGh1bWJuYWlsKHRva2VuKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gd2hlbiByZXF1ZXN0aW5nIHRodW1ibmFpbCIsIGUpOwotICAgICAgICAgICAgICAgIHNlbmRQZW5kaW5nVGh1bWJuYWlsKG51bGwsIHRva2VuLCBudWxsLCBudWxsLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFN0b3AgYW55IGFjdGl2aXRpZXMgdGhhdCBhcmUgc2NoZWR1bGVkIHRvIGRvIHNvIGJ1dCBoYXZlIGJlZW4KLSAgICAgICAgLy8gd2FpdGluZyBmb3IgdGhlIG5leHQgb25lIHRvIHN0YXJ0LgotICAgICAgICBmb3IgKGk9MDsgaTxOUzsgaSsrKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZClzdG9wcy5nZXQoaSk7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoci5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoQ3VycmVudEFjdGl2aXR5TG9ja2VkKHIsIEZJTklTSF9JTU1FRElBVEVMWSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc3RvcEFjdGl2aXR5TG9ja2VkKHIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbmlzaCBhbnkgYWN0aXZpdGllcyB0aGF0IGFyZSBzY2hlZHVsZWQgdG8gZG8gc28gYnV0IGhhdmUgYmVlbgotICAgICAgICAvLyB3YWl0aW5nIGZvciB0aGUgbmV4dCBvbmUgdG8gc3RhcnQuCi0gICAgICAgIGZvciAoaT0wOyBpPE5GOyBpKyspIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKWZpbmlzaGVzLmdldChpKTsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlcG9ydCBiYWNrIHRvIGFueSB0aHVtYm5haWwgcmVjZWl2ZXJzLgotICAgICAgICBmb3IgKGk9MDsgaTxOVDsgaSsrKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCl0aHVtYm5haWxzLmdldChpKTsKLSAgICAgICAgICAgIHNlbmRQZW5kaW5nVGh1bWJuYWlsKHIsIG51bGwsIG51bGwsIG51bGwsIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJvb3RpbmcpIHsKLSAgICAgICAgICAgIGZpbmlzaEJvb3RpbmcoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRyaW1BcHBsaWNhdGlvbnMoKTsKLSAgICAgICAgLy9kdW1wKCk7Ci0gICAgICAgIC8vbVdpbmRvd01hbmFnZXIuZHVtcCgpOwotCi0gICAgICAgIGlmIChlbmFibGVTY3JlZW4pIHsKLSAgICAgICAgICAgIGVuYWJsZVNjcmVlbkFmdGVyQm9vdCgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgZmluYWwgdm9pZCBmaW5pc2hCb290aW5nKCkgewogICAgICAgICBJbnRlbnRGaWx0ZXIgcGtnRmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOwogICAgICAgICBwa2dGaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fUVVFUllfUEFDS0FHRV9SRVNUQVJUKTsKQEAgLTU5MzcsNjAgKzM1OTcsMzEgQEAKICAgICAgICAgfQogCiAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgIGFjdGl2aXR5UGF1c2VkKHRva2VuLCBpY2ljbGUsIGZhbHNlKTsKKyAgICAgICAgbU1haW5TdGFjay5hY3Rpdml0eVBhdXNlZCh0b2tlbiwgaWNpY2xlLCBmYWxzZSk7CiAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CiAgICAgfQogCi0gICAgZmluYWwgdm9pZCBhY3Rpdml0eVBhdXNlZChJQmluZGVyIHRva2VuLCBCdW5kbGUgaWNpY2xlLCBib29sZWFuIHRpbWVvdXQpIHsKLSAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoCi0gICAgICAgICAgICBUQUcsICJBY3Rpdml0eSBwYXVzZWQ6IHRva2VuPSIgKyB0b2tlbiArICIsIGljaWNsZT0iICsgaWNpY2xlCi0gICAgICAgICAgICArICIsIHRpbWVvdXQ9IiArIHRpbWVvdXQpOwotCi0gICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IG51bGw7Ci0KLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwotICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoIXRpbWVvdXQpIHsKLSAgICAgICAgICAgICAgICAgICAgci5pY2ljbGUgPSBpY2ljbGU7Ci0gICAgICAgICAgICAgICAgICAgIHIuaGF2ZVN0YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoUEFVU0VfVElNRU9VVF9NU0csIHIpOwotICAgICAgICAgICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ID09IHIpIHsKLSAgICAgICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuUEFVU0VEOwotICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZVBhdXNlTG9ja2VkKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAJRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fRkFJTEVEX1RPX1BBVVNFLAotICAgICAgICAgICAgICAgIAkgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLCByLnNob3J0Q29tcG9uZW50TmFtZSwgCi0gICAgICAgICAgICAgICAgCQkJbVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsCi0gICAgICAgICAgICAgICAgCQkJICAgID8gbVBhdXNpbmdBY3Rpdml0eS5zaG9ydENvbXBvbmVudE5hbWUgOiAiKG5vbmUpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHVibGljIGZpbmFsIHZvaWQgYWN0aXZpdHlTdG9wcGVkKElCaW5kZXIgdG9rZW4sIEJpdG1hcCB0aHVtYm5haWwsCiAgICAgICAgICAgICBDaGFyU2VxdWVuY2UgZGVzY3JpcHRpb24pIHsKICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAogICAgICAgICAgICAgVEFHLCAiQWN0aXZpdHkgc3RvcHBlZDogdG9rZW49IiArIHRva2VuKTsKIAotICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSBudWxsOworICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbnVsbDsKIAogICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogCiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgIGludCBpbmRleCA9IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICAgICAgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpbmRleCk7CiAgICAgICAgICAgICAgICAgci50aHVtYm5haWwgPSB0aHVtYm5haWw7CiAgICAgICAgICAgICAgICAgci5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwogICAgICAgICAgICAgICAgIHIuc3RvcHBlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuU1RPUFBFRDsKICAgICAgICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyLmNvbmZpZ0Rlc3Ryb3kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgci5zdGFjay5kZXN0cm95QWN0aXZpdHlMb2NrZWQociwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByLnN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNjAwNywzOSArMzYzOCwyNyBAQAogCiAgICAgcHVibGljIGZpbmFsIHZvaWQgYWN0aXZpdHlEZXN0cm95ZWQoSUJpbmRlciB0b2tlbikgewogICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiQUNUSVZJVFkgREVTVFJPWUVEOiAiICsgdG9rZW4pOwotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKERFU1RST1lfVElNRU9VVF9NU0csIHRva2VuKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLkRFU1RST1lJTkcpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQWN0aXZpdHlGcm9tSGlzdG9yeUxvY2tlZChyKTsKLSAgICAgICAgICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgbU1haW5TdGFjay5hY3Rpdml0eURlc3Ryb3llZCh0b2tlbik7CiAgICAgfQogICAgIAogICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q2FsbGluZ1BhY2thZ2UoSUJpbmRlciB0b2tlbikgewogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IGdldENhbGxpbmdSZWNvcmRMb2NrZWQodG9rZW4pOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IGdldENhbGxpbmdSZWNvcmRMb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuIHIgIT0gbnVsbCAmJiByLmFwcCAhPSBudWxsID8gci5pbmZvLnBhY2thZ2VOYW1lIDogbnVsbDsKICAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBDb21wb25lbnROYW1lIGdldENhbGxpbmdBY3Rpdml0eShJQmluZGVyIHRva2VuKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gZ2V0Q2FsbGluZ1JlY29yZExvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gZ2V0Q2FsbGluZ1JlY29yZExvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICByZXR1cm4gciAhPSBudWxsID8gci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkgOiBudWxsOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBIaXN0b3J5UmVjb3JkIGdldENhbGxpbmdSZWNvcmRMb2NrZWQoSUJpbmRlciB0b2tlbikgewotICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgIHByaXZhdGUgQWN0aXZpdHlSZWNvcmQgZ2V0Q2FsbGluZ1JlY29yZExvY2tlZChJQmluZGVyIHRva2VuKSB7CisgICAgICAgIGludCBpbmRleCA9IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKICAgICAgICAgICAgIGlmIChyICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gci5yZXN1bHRUbzsKICAgICAgICAgICAgIH0KQEAgLTYwNDksOSArMzY2OCw5IEBACiAKICAgICBwdWJsaWMgQ29tcG9uZW50TmFtZSBnZXRBY3Rpdml0eUNsYXNzRm9yVG9rZW4oSUJpbmRlciB0b2tlbikgewogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewotICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgIGludCBpbmRleCA9IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKICAgICAgICAgICAgICAgICByZXR1cm4gci5pbnRlbnQuZ2V0Q29tcG9uZW50KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTYwNjAsOSArMzY3OSw5IEBACiAKICAgICBwdWJsaWMgU3RyaW5nIGdldFBhY2thZ2VGb3JUb2tlbihJQmluZGVyIHRva2VuKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiByLnBhY2thZ2VOYW1lOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC02MDg5LDcgKzM3MDgsNyBAQAogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBpZiAoY2FsbGluZ1VpZCAhPSAwICYmIGNhbGxpbmdVaWQgIT0gUHJvY2Vzcy5TWVNURU1fVUlEICYmCiAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZXNzLnN1cHBvcnRzUHJvY2Vzc2VzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHVpZCA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkKKyAgICAgICAgICAgICAgICAgICAgaW50IHVpZCA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRQYWNrYWdlVWlkKHBhY2thZ2VOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHVpZCAhPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gIlBlcm1pc3Npb24gRGVuaWFsOiBnZXRJbnRlbnRTZW5kZXIoKSBmcm9tIHBpZD0iCkBAIC02MTAxLDU3ICszNzIwLDY2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24obXNnKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW50ZW50U2VuZGVyTG9ja2VkKHR5cGUsIHBhY2thZ2VOYW1lLCBjYWxsaW5nVWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIGludGVudCwgcmVzb2x2ZWRUeXBlLCBmbGFncyk7CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgYWN0aXZpdHkgPSBudWxsOwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gSU5URU5UX1NFTkRFUl9BQ1RJVklUWV9SRVNVTFQpIHsKLSAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwotICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFjdGl2aXR5ID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdHkuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBJSW50ZW50U2VuZGVyIGdldEludGVudFNlbmRlckxvY2tlZChpbnQgdHlwZSwKKyAgICAgICAgICAgIFN0cmluZyBwYWNrYWdlTmFtZSwgaW50IGNhbGxpbmdVaWQsIElCaW5kZXIgdG9rZW4sIFN0cmluZyByZXN1bHRXaG8sCisgICAgICAgICAgICBpbnQgcmVxdWVzdENvZGUsIEludGVudCBpbnRlbnQsIFN0cmluZyByZXNvbHZlZFR5cGUsIGludCBmbGFncykgeworICAgICAgICBBY3Rpdml0eVJlY29yZCBhY3Rpdml0eSA9IG51bGw7CisgICAgICAgIGlmICh0eXBlID09IElOVEVOVF9TRU5ERVJfQUNUSVZJVFlfUkVTVUxUKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gbm9DcmVhdGUgPSAoZmxhZ3MmUGVuZGluZ0ludGVudC5GTEFHX05PX0NSRUFURSkgIT0gMDsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gY2FuY2VsQ3VycmVudCA9IChmbGFncyZQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQpICE9IDA7Ci0gICAgICAgICAgICBmaW5hbCBib29sZWFuIHVwZGF0ZUN1cnJlbnQgPSAoZmxhZ3MmUGVuZGluZ0ludGVudC5GTEFHX1VQREFURV9DVVJSRU5UKSAhPSAwOwotICAgICAgICAgICAgZmxhZ3MgJj0gfihQZW5kaW5nSW50ZW50LkZMQUdfTk9fQ1JFQVRFfFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVAotICAgICAgICAgICAgICAgICAgICB8UGVuZGluZ0ludGVudC5GTEFHX1VQREFURV9DVVJSRU5UKTsKLQotICAgICAgICAgICAgUGVuZGluZ0ludGVudFJlY29yZC5LZXkga2V5ID0gbmV3IFBlbmRpbmdJbnRlbnRSZWNvcmQuS2V5KAotICAgICAgICAgICAgICAgICAgICB0eXBlLCBwYWNrYWdlTmFtZSwgYWN0aXZpdHksIHJlc3VsdFdobywKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdENvZGUsIGludGVudCwgcmVzb2x2ZWRUeXBlLCBmbGFncyk7Ci0gICAgICAgICAgICBXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+IHJlZjsKLSAgICAgICAgICAgIHJlZiA9IG1JbnRlbnRTZW5kZXJSZWNvcmRzLmdldChrZXkpOwotICAgICAgICAgICAgUGVuZGluZ0ludGVudFJlY29yZCByZWMgPSByZWYgIT0gbnVsbCA/IHJlZi5nZXQoKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiAocmVjICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbEN1cnJlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVwZGF0ZUN1cnJlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5rZXkucmVxdWVzdEludGVudC5yZXBsYWNlRXh0cmFzKGludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVjLmNhbmNlbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBtSW50ZW50U2VuZGVyUmVjb3Jkcy5yZW1vdmUoa2V5KTsKKyAgICAgICAgICAgIGFjdGl2aXR5ID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIGlmIChhY3Rpdml0eS5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub0NyZWF0ZSkgeworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBub0NyZWF0ZSA9IChmbGFncyZQZW5kaW5nSW50ZW50LkZMQUdfTk9fQ1JFQVRFKSAhPSAwOworICAgICAgICBmaW5hbCBib29sZWFuIGNhbmNlbEN1cnJlbnQgPSAoZmxhZ3MmUGVuZGluZ0ludGVudC5GTEFHX0NBTkNFTF9DVVJSRU5UKSAhPSAwOworICAgICAgICBmaW5hbCBib29sZWFuIHVwZGF0ZUN1cnJlbnQgPSAoZmxhZ3MmUGVuZGluZ0ludGVudC5GTEFHX1VQREFURV9DVVJSRU5UKSAhPSAwOworICAgICAgICBmbGFncyAmPSB+KFBlbmRpbmdJbnRlbnQuRkxBR19OT19DUkVBVEV8UGVuZGluZ0ludGVudC5GTEFHX0NBTkNFTF9DVVJSRU5UCisgICAgICAgICAgICAgICAgfFBlbmRpbmdJbnRlbnQuRkxBR19VUERBVEVfQ1VSUkVOVCk7CisKKyAgICAgICAgUGVuZGluZ0ludGVudFJlY29yZC5LZXkga2V5ID0gbmV3IFBlbmRpbmdJbnRlbnRSZWNvcmQuS2V5KAorICAgICAgICAgICAgICAgIHR5cGUsIHBhY2thZ2VOYW1lLCBhY3Rpdml0eSwgcmVzdWx0V2hvLAorICAgICAgICAgICAgICAgIHJlcXVlc3RDb2RlLCBpbnRlbnQsIHJlc29sdmVkVHlwZSwgZmxhZ3MpOworICAgICAgICBXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+IHJlZjsKKyAgICAgICAgcmVmID0gbUludGVudFNlbmRlclJlY29yZHMuZ2V0KGtleSk7CisgICAgICAgIFBlbmRpbmdJbnRlbnRSZWNvcmQgcmVjID0gcmVmICE9IG51bGwgPyByZWYuZ2V0KCkgOiBudWxsOworICAgICAgICBpZiAocmVjICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghY2FuY2VsQ3VycmVudCkgeworICAgICAgICAgICAgICAgIGlmICh1cGRhdGVDdXJyZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHJlYy5rZXkucmVxdWVzdEludGVudC5yZXBsYWNlRXh0cmFzKGludGVudCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiByZWM7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZWMgPSBuZXcgUGVuZGluZ0ludGVudFJlY29yZCh0aGlzLCBrZXksIGNhbGxpbmdVaWQpOwotICAgICAgICAgICAgbUludGVudFNlbmRlclJlY29yZHMucHV0KGtleSwgcmVjLnJlZik7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBJTlRFTlRfU0VOREVSX0FDVElWSVRZX1JFU1VMVCkgewotICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0eS5wZW5kaW5nUmVzdWx0cyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5LnBlbmRpbmdSZXN1bHRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgSGFzaFNldDxXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+PigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhY3Rpdml0eS5wZW5kaW5nUmVzdWx0cy5hZGQocmVjLnJlZik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZWMuY2FuY2VsZWQgPSB0cnVlOworICAgICAgICAgICAgbUludGVudFNlbmRlclJlY29yZHMucmVtb3ZlKGtleSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vQ3JlYXRlKSB7CiAgICAgICAgICAgICByZXR1cm4gcmVjOwogICAgICAgICB9CisgICAgICAgIHJlYyA9IG5ldyBQZW5kaW5nSW50ZW50UmVjb3JkKHRoaXMsIGtleSwgY2FsbGluZ1VpZCk7CisgICAgICAgIG1JbnRlbnRTZW5kZXJSZWNvcmRzLnB1dChrZXksIHJlYy5yZWYpOworICAgICAgICBpZiAodHlwZSA9PSBJTlRFTlRfU0VOREVSX0FDVElWSVRZX1JFU1VMVCkgeworICAgICAgICAgICAgaWYgKGFjdGl2aXR5LnBlbmRpbmdSZXN1bHRzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhY3Rpdml0eS5wZW5kaW5nUmVzdWx0cworICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgSGFzaFNldDxXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+PigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWN0aXZpdHkucGVuZGluZ1Jlc3VsdHMuYWRkKHJlYy5yZWYpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZWM7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgY2FuY2VsSW50ZW50U2VuZGVyKElJbnRlbnRTZW5kZXIgc2VuZGVyKSB7CkBAIC02MTYxLDcgKzM3ODksNyBAQAogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewogICAgICAgICAgICAgUGVuZGluZ0ludGVudFJlY29yZCByZWMgPSAoUGVuZGluZ0ludGVudFJlY29yZClzZW5kZXI7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGludCB1aWQgPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpCisgICAgICAgICAgICAgICAgaW50IHVpZCA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgLmdldFBhY2thZ2VVaWQocmVjLmtleS5wYWNrYWdlTmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHVpZCAhPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiUGVybWlzc2lvbiBEZW5pYWw6IGNhbmNlbEludGVudFNlbmRlcigpIGZyb20gcGlkPSIKQEAgLTYzMjAsNyArMzk0OCw3IEBACiAgICAgICAgICAgICByZXR1cm4gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEOwogICAgICAgICB9CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKQorICAgICAgICAgICAgcmV0dXJuIEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKQogICAgICAgICAgICAgICAgICAgICAuY2hlY2tVaWRQZXJtaXNzaW9uKHBlcm1pc3Npb24sIHVpZCk7CiAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQgaWYgaXQgZG9lcy4uLiBkZW55IQpAQCAtNjQyOCw4ICs0MDU2LDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBncmFudFVyaVBlcm1pc3Npb25Mb2NrZWQoaW50IGNhbGxpbmdVaWQsCi0gICAgICAgICAgICBTdHJpbmcgdGFyZ2V0UGtnLCBVcmkgdXJpLCBpbnQgbW9kZUZsYWdzLCBIaXN0b3J5UmVjb3JkIGFjdGl2aXR5KSB7CisgICAgdm9pZCBncmFudFVyaVBlcm1pc3Npb25Mb2NrZWQoaW50IGNhbGxpbmdVaWQsCisgICAgICAgICAgICBTdHJpbmcgdGFyZ2V0UGtnLCBVcmkgdXJpLCBpbnQgbW9kZUZsYWdzLCBBY3Rpdml0eVJlY29yZCBhY3Rpdml0eSkgewogICAgICAgICBtb2RlRmxhZ3MgJj0gKEludGVudC5GTEFHX0dSQU5UX1JFQURfVVJJX1BFUk1JU1NJT04KICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0dSQU5UX1dSSVRFX1VSSV9QRVJNSVNTSU9OKTsKICAgICAgICAgaWYgKG1vZGVGbGFncyA9PSAwKSB7CkBAIC02NDM5LDcgKzQwNjcsNyBAQAogICAgICAgICBpZiAoREVCVUdfVVJJX1BFUk1JU1NJT04pIFNsb2cudihUQUcsIAogICAgICAgICAgICAgICAgICJSZXF1ZXN0ZWQgZ3JhbnQgIiArIHRhcmdldFBrZyArICIgcGVybWlzc2lvbiB0byAiICsgdXJpKTsKICAgICAgICAgCi0gICAgICAgIGZpbmFsIElQYWNrYWdlTWFuYWdlciBwbSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgIGZpbmFsIElQYWNrYWdlTWFuYWdlciBwbSA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKTsKIAogICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIGNvbnRlbnQ6IHVyaSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCBpdC4KICAgICAgICAgaWYgKCFDb250ZW50UmVzb2x2ZXIuU0NIRU1FX0NPTlRFTlQuZXF1YWxzKHVyaS5nZXRTY2hlbWUoKSkpIHsKQEAgLTY0NTAsOCArNDA3OCw3IEBACiAKICAgICAgICAgU3RyaW5nIG5hbWUgPSB1cmkuZ2V0QXV0aG9yaXR5KCk7CiAgICAgICAgIFByb3ZpZGVySW5mbyBwaSA9IG51bGw7Ci0gICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIKLSAgICAgICAgICAgICAgICA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpbVByb3ZpZGVyc0J5TmFtZS5nZXQobmFtZSk7CisgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSBtUHJvdmlkZXJzQnlOYW1lLmdldChuYW1lKTsKICAgICAgICAgaWYgKGNwciAhPSBudWxsKSB7CiAgICAgICAgICAgICBwaSA9IGNwci5pbmZvOwogICAgICAgICB9IGVsc2UgewpAQCAtNjU1OCw4ICs0MTg1LDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBncmFudFVyaVBlcm1pc3Npb25Gcm9tSW50ZW50TG9ja2VkKGludCBjYWxsaW5nVWlkLAotICAgICAgICAgICAgU3RyaW5nIHRhcmdldFBrZywgSW50ZW50IGludGVudCwgSGlzdG9yeVJlY29yZCBhY3Rpdml0eSkgeworICAgIHZvaWQgZ3JhbnRVcmlQZXJtaXNzaW9uRnJvbUludGVudExvY2tlZChpbnQgY2FsbGluZ1VpZCwKKyAgICAgICAgICAgIFN0cmluZyB0YXJnZXRQa2csIEludGVudCBpbnRlbnQsIEFjdGl2aXR5UmVjb3JkIGFjdGl2aXR5KSB7CiAgICAgICAgIGlmIChpbnRlbnQgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02NTk0LDcgKzQyMjEsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSB2b2lkIHJlbW92ZVVyaVBlcm1pc3Npb25JZk5lZWRlZExvY2tlZChVcmlQZXJtaXNzaW9uIHBlcm0pIHsKKyAgICB2b2lkIHJlbW92ZVVyaVBlcm1pc3Npb25JZk5lZWRlZExvY2tlZChVcmlQZXJtaXNzaW9uIHBlcm0pIHsKICAgICAgICAgaWYgKChwZXJtLm1vZGVGbGFncyYoSW50ZW50LkZMQUdfR1JBTlRfUkVBRF9VUklfUEVSTUlTU0lPTgogICAgICAgICAgICAgICAgIHxJbnRlbnQuRkxBR19HUkFOVF9XUklURV9VUklfUEVSTUlTU0lPTikpID09IDApIHsKICAgICAgICAgICAgIEhhc2hNYXA8VXJpLCBVcmlQZXJtaXNzaW9uPiBwZXJtcwpAQCAtNjYxMCwyOSArNDIzNyw2IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgcmVtb3ZlQWN0aXZpdHlVcmlQZXJtaXNzaW9uc0xvY2tlZChIaXN0b3J5UmVjb3JkIGFjdGl2aXR5KSB7Ci0gICAgICAgIGlmIChhY3Rpdml0eS5yZWFkVXJpUGVybWlzc2lvbnMgIT0gbnVsbCkgewotICAgICAgICAgICAgZm9yIChVcmlQZXJtaXNzaW9uIHBlcm0gOiBhY3Rpdml0eS5yZWFkVXJpUGVybWlzc2lvbnMpIHsKLSAgICAgICAgICAgICAgICBwZXJtLnJlYWRBY3Rpdml0aWVzLnJlbW92ZShhY3Rpdml0eSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBlcm0ucmVhZEFjdGl2aXRpZXMuc2l6ZSgpID09IDAgJiYgKHBlcm0uZ2xvYmFsTW9kZUZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICAmSW50ZW50LkZMQUdfR1JBTlRfUkVBRF9VUklfUEVSTUlTU0lPTikgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBwZXJtLm1vZGVGbGFncyAmPSB+SW50ZW50LkZMQUdfR1JBTlRfUkVBRF9VUklfUEVSTUlTU0lPTjsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlVXJpUGVybWlzc2lvbklmTmVlZGVkTG9ja2VkKHBlcm0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoYWN0aXZpdHkud3JpdGVVcmlQZXJtaXNzaW9ucyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBmb3IgKFVyaVBlcm1pc3Npb24gcGVybSA6IGFjdGl2aXR5LndyaXRlVXJpUGVybWlzc2lvbnMpIHsKLSAgICAgICAgICAgICAgICBwZXJtLndyaXRlQWN0aXZpdGllcy5yZW1vdmUoYWN0aXZpdHkpOwotICAgICAgICAgICAgICAgIGlmIChwZXJtLndyaXRlQWN0aXZpdGllcy5zaXplKCkgPT0gMCAmJiAocGVybS5nbG9iYWxNb2RlRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICZJbnRlbnQuRkxBR19HUkFOVF9XUklURV9VUklfUEVSTUlTU0lPTikgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBwZXJtLm1vZGVGbGFncyAmPSB+SW50ZW50LkZMQUdfR1JBTlRfV1JJVEVfVVJJX1BFUk1JU1NJT047Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZVVyaVBlcm1pc3Npb25JZk5lZWRlZExvY2tlZChwZXJtKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBwcml2YXRlIHZvaWQgcmV2b2tlVXJpUGVybWlzc2lvbkxvY2tlZChpbnQgY2FsbGluZ1VpZCwgVXJpIHVyaSwKICAgICAgICAgICAgIGludCBtb2RlRmxhZ3MpIHsKICAgICAgICAgbW9kZUZsYWdzICY9IChJbnRlbnQuRkxBR19HUkFOVF9SRUFEX1VSSV9QRVJNSVNTSU9OCkBAIC02NjQ0LDEyICs0MjQ4LDExIEBACiAgICAgICAgIGlmIChERUJVR19VUklfUEVSTUlTU0lPTikgU2xvZy52KFRBRywgCiAgICAgICAgICAgICAgICAgIlJldm9raW5nIGFsbCBncmFudGVkIHBlcm1pc3Npb25zIHRvICIgKyB1cmkpOwogICAgICAgICAKLSAgICAgICAgZmluYWwgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKyAgICAgICAgZmluYWwgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpOwogCiAgICAgICAgIGZpbmFsIFN0cmluZyBhdXRob3JpdHkgPSB1cmkuZ2V0QXV0aG9yaXR5KCk7CiAgICAgICAgIFByb3ZpZGVySW5mbyBwaSA9IG51bGw7Ci0gICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIKLSAgICAgICAgICAgICAgICA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpbVByb3ZpZGVyc0J5TmFtZS5nZXQoYXV0aG9yaXR5KTsKKyAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IG1Qcm92aWRlcnNCeU5hbWUuZ2V0KGF1dGhvcml0eSk7CiAgICAgICAgIGlmIChjcHIgIT0gbnVsbCkgewogICAgICAgICAgICAgcGkgPSBjcHIuaW5mbzsKICAgICAgICAgfSBlbHNlIHsKQEAgLTY3MzksMTIgKzQzNDIsMTEgQEAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZpbmFsIElQYWNrYWdlTWFuYWdlciBwbSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgICAgICBmaW5hbCBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAKICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBhdXRob3JpdHkgPSB1cmkuZ2V0QXV0aG9yaXR5KCk7CiAgICAgICAgICAgICBQcm92aWRlckluZm8gcGkgPSBudWxsOwotICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwcgotICAgICAgICAgICAgICAgICAgICA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpbVByb3ZpZGVyc0J5TmFtZS5nZXQoYXV0aG9yaXR5KTsKKyAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSBtUHJvdmlkZXJzQnlOYW1lLmdldChhdXRob3JpdHkpOwogICAgICAgICAgICAgaWYgKGNwciAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgcGkgPSBjcHIuaW5mbzsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC02Nzk0LDcgKzQzOTYsNyBAQAogCiAgICAgICAgIFBlbmRpbmdUaHVtYm5haWxzUmVjb3JkIHBlbmRpbmcgPSBudWxsOwogICAgICAgICBJQXBwbGljYXRpb25UaHJlYWQgdG9wVGh1bWJuYWlsID0gbnVsbDsKLSAgICAgICAgSGlzdG9yeVJlY29yZCB0b3BSZWNvcmQgPSBudWxsOworICAgICAgICBBY3Rpdml0eVJlY29yZCB0b3BSZWNvcmQgPSBudWxsOwogCiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CiAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCkBAIC02ODE5LDE4ICs0NDIxLDE4IEBACiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKG1zZyk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGludCBwb3MgPSBtSGlzdG9yeS5zaXplKCktMTsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgbmV4dCA9Ci0gICAgICAgICAgICAgICAgcG9zID49IDAgPyAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQocG9zKSA6IG51bGw7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHRvcCA9IG51bGw7CisgICAgICAgICAgICBpbnQgcG9zID0gbU1haW5TdGFjay5tSGlzdG9yeS5zaXplKCktMTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5leHQgPQorICAgICAgICAgICAgICAgIHBvcyA+PSAwID8gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KHBvcykgOiBudWxsOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgdG9wID0gbnVsbDsKICAgICAgICAgICAgIENoYXJTZXF1ZW5jZSB0b3BEZXNjcmlwdGlvbiA9IG51bGw7CiAgICAgICAgICAgICBUYXNrUmVjb3JkIGN1clRhc2sgPSBudWxsOwogICAgICAgICAgICAgaW50IG51bUFjdGl2aXRpZXMgPSAwOwogICAgICAgICAgICAgaW50IG51bVJ1bm5pbmcgPSAwOwogICAgICAgICAgICAgd2hpbGUgKHBvcyA+PSAwICYmIG1heE51bSA+IDApIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBIaXN0b3J5UmVjb3JkIHIgPSBuZXh0OworICAgICAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHIgPSBuZXh0OwogICAgICAgICAgICAgICAgIHBvcy0tOwotICAgICAgICAgICAgICAgIG5leHQgPSBwb3MgPj0gMCA/IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChwb3MpIDogbnVsbDsKKyAgICAgICAgICAgICAgICBuZXh0ID0gcG9zID49IDAgPyAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQocG9zKSA6IG51bGw7CiAKICAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHN0YXRlIGZvciBuZXh0IHRhc2sgaWYgbmVlZGVkLgogICAgICAgICAgICAgICAgIGlmICh0b3AgPT0gbnVsbCB8fApAQCAtNjkzMiw3ICs0NTM0LDcgQEAKICAgICAgICAgICAgIGVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uR0VUX1RBU0tTLAogICAgICAgICAgICAgICAgICAgICAiZ2V0UmVjZW50VGFza3MoKSIpOwogCi0gICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1SZWNlbnRUYXNrcy5zaXplKCk7CiAgICAgICAgICAgICBBcnJheUxpc3Q8QWN0aXZpdHlNYW5hZ2VyLlJlY2VudFRhc2tJbmZvPiByZXMKQEAgLTY5NzksMTIgKzQ1ODEsMTIgQEAKIAogICAgIHByaXZhdGUgZmluYWwgaW50IGZpbmRBZmZpbml0eVRhc2tUb3BMb2NrZWQoaW50IHN0YXJ0SW5kZXgsIFN0cmluZyBhZmZpbml0eSkgewogICAgICAgICBpbnQgajsKLSAgICAgICAgVGFza1JlY29yZCBzdGFydFRhc2sgPSAoKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KHN0YXJ0SW5kZXgpKS50YXNrOyAKKyAgICAgICAgVGFza1JlY29yZCBzdGFydFRhc2sgPSAoKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KHN0YXJ0SW5kZXgpKS50YXNrOyAKICAgICAgICAgVGFza1JlY29yZCBqdCA9IHN0YXJ0VGFzazsKICAgICAgICAgCiAgICAgICAgIC8vIEZpcnN0IGxvb2sgYmFja3dhcmRzCiAgICAgICAgIGZvciAoaj1zdGFydEluZGV4LTE7IGo+PTA7IGotLSkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGopOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChqKTsKICAgICAgICAgICAgIGlmIChyLnRhc2sgIT0ganQpIHsKICAgICAgICAgICAgICAgICBqdCA9IHIudGFzazsKICAgICAgICAgICAgICAgICBpZiAoYWZmaW5pdHkuZXF1YWxzKGp0LmFmZmluaXR5KSkgewpAQCAtNjk5NCwxMCArNDU5NiwxMCBAQAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBOb3cgbG9vayBmb3J3YXJkcwotICAgICAgICBmaW5hbCBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgZmluYWwgaW50IE4gPSBtTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKTsKICAgICAgICAganQgPSBzdGFydFRhc2s7CiAgICAgICAgIGZvciAoaj1zdGFydEluZGV4KzE7IGo8TjsgaisrKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaik7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGopOwogICAgICAgICAgICAgaWYgKHIudGFzayAhPSBqdCkgewogICAgICAgICAgICAgICAgIGlmIChhZmZpbml0eS5lcXVhbHMoanQuYWZmaW5pdHkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqOwpAQCAtNzAwNyw3ICs0NjA5LDcgQEAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gTWlnaHQgaXQgYmUgYXQgdGhlIHRvcD8KLSAgICAgICAgaWYgKGFmZmluaXR5LmVxdWFscygoKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KE4tMSkpLnRhc2suYWZmaW5pdHkpKSB7CisgICAgICAgIGlmIChhZmZpbml0eS5lcXVhbHMoKChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChOLTEpKS50YXNrLmFmZmluaXR5KSkgewogICAgICAgICAgICAgcmV0dXJuIE4tMTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTcwMTUsMjkzICs0NjE3LDYgQEAKICAgICB9CiAgICAgCiAgICAgLyoqCi0gICAgICogUGVyZm9ybSBhIHJlc2V0IG9mIHRoZSBnaXZlbiB0YXNrLCBpZiBuZWVkZWQgYXMgcGFydCBvZiBsYXVuY2hpbmcgaXQuCi0gICAgICogUmV0dXJucyB0aGUgbmV3IEhpc3RvcnlSZWNvcmQgYXQgdGhlIHRvcCBvZiB0aGUgdGFzay4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIEhpc3RvcnlSZWNvcmQgcmVzZXRUYXNrSWZOZWVkZWRMb2NrZWQoSGlzdG9yeVJlY29yZCB0YXNrVG9wLAotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBuZXdBY3Rpdml0eSkgewotICAgICAgICBib29sZWFuIGZvcmNlUmVzZXQgPSAobmV3QWN0aXZpdHkuaW5mby5mbGFncwotICAgICAgICAgICAgICAgICZBY3Rpdml0eUluZm8uRkxBR19DTEVBUl9UQVNLX09OX0xBVU5DSCkgIT0gMDsKLSAgICAgICAgaWYgKHRhc2tUb3AudGFzay5nZXRJbmFjdGl2ZUR1cmF0aW9uKCkgPiBBQ1RJVklUWV9JTkFDVElWRV9SRVNFVF9USU1FKSB7Ci0gICAgICAgICAgICBpZiAoKG5ld0FjdGl2aXR5LmluZm8uZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgJkFjdGl2aXR5SW5mby5GTEFHX0FMV0FZU19SRVRBSU5fVEFTS19TVEFURSkgPT0gMCkgewotICAgICAgICAgICAgICAgIGZvcmNlUmVzZXQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmaW5hbCBUYXNrUmVjb3JkIHRhc2sgPSB0YXNrVG9wLnRhc2s7Ci0gICAgICAgIAotICAgICAgICAvLyBXZSBhcmUgZ29pbmcgdG8gbW92ZSB0aHJvdWdoIHRoZSBoaXN0b3J5IGxpc3Qgc28gdGhhdCB3ZSBjYW4gbG9vawotICAgICAgICAvLyBhdCBlYWNoIGFjdGl2aXR5ICd0YXJnZXQnIHdpdGggJ2JlbG93JyBlaXRoZXIgdGhlIGludGVyZXN0aW5nCi0gICAgICAgIC8vIGFjdGl2aXR5IGltbWVkaWF0ZWx5IGJlbG93IGl0IGluIHRoZSBzdGFjayBvciBudWxsLgotICAgICAgICBIaXN0b3J5UmVjb3JkIHRhcmdldCA9IG51bGw7Ci0gICAgICAgIGludCB0YXJnZXRJID0gMDsKLSAgICAgICAgaW50IHRhc2tUb3BJID0gLTE7Ci0gICAgICAgIGludCByZXBseUNoYWluRW5kID0gLTE7Ci0gICAgICAgIGludCBsYXN0UmVwYXJlbnRQb3MgPSAtMTsKLSAgICAgICAgZm9yIChpbnQgaT1tSGlzdG9yeS5zaXplKCktMTsgaT49LTE7IGktLSkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBiZWxvdyA9IGkgPj0gMCA/IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKSA6IG51bGw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChiZWxvdyAhPSBudWxsICYmIGJlbG93LmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gYmVsb3c7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0SSA9IGk7Ci0gICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSBpbiB0aGUgbWlkZGxlIG9mIGEgcmVwbHkgY2hhaW4gYmVmb3JlIHRoaXMKLSAgICAgICAgICAgICAgICAvLyB0YXNrLCBpdCBkb2Vzbid0IGFwcGVhciBsaWtlIHRoZSByb290IG9mIHRoZSBjaGFpbiB3YW50cwotICAgICAgICAgICAgICAgIC8vIGFueXRoaW5nIGludGVyZXN0aW5nLCBzbyBkcm9wIGl0LgotICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBmaW5hbCBpbnQgZmxhZ3MgPSB0YXJnZXQuaW5mby5mbGFnczsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBmaW5pc2hPblRhc2tMYXVuY2ggPQotICAgICAgICAgICAgICAgIChmbGFncyZBY3Rpdml0eUluZm8uRkxBR19GSU5JU0hfT05fVEFTS19MQVVOQ0gpICE9IDA7Ci0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGFsbG93VGFza1JlcGFyZW50aW5nID0KLSAgICAgICAgICAgICAgICAoZmxhZ3MmQWN0aXZpdHlJbmZvLkZMQUdfQUxMT1dfVEFTS19SRVBBUkVOVElORykgIT0gMDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHRhcmdldC50YXNrID09IHRhc2spIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIG9mIHRoZSB0YXNrIGJlaW5nIHJlc2V0Li4uICB3ZSdsbCBlaXRoZXIKLSAgICAgICAgICAgICAgICAvLyBmaW5pc2ggdGhpcyBhY3Rpdml0eSwgcHVzaCBpdCBvdXQgZm9yIGFub3RoZXIgdGFzaywKLSAgICAgICAgICAgICAgICAvLyBvciBsZWF2ZSBpdCBhcy1pcy4gIFdlIG9ubHkgZG8gdGhpcwotICAgICAgICAgICAgICAgIC8vIGZvciBhY3Rpdml0aWVzIHRoYXQgYXJlIG5vdCB0aGUgcm9vdCBvZiB0aGUgdGFzayAoc2luY2UKLSAgICAgICAgICAgICAgICAvLyBpZiB3ZSBmaW5pc2ggdGhlIHJvb3QsIHdlIG1heSBubyBsb25nZXIgaGF2ZSB0aGUgdGFzayEpLgotICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wSSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgdGFza1RvcEkgPSB0YXJnZXRJOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYmVsb3cgIT0gbnVsbCAmJiBiZWxvdy50YXNrID09IHRhc2spIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBjbGVhcldoZW5UYXNrUmVzZXQgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXQuaW50ZW50LmdldEZsYWdzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZJbnRlbnQuRkxBR19BQ1RJVklUWV9DTEVBUl9XSEVOX1RBU0tfUkVTRVQpICE9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZmluaXNoT25UYXNrTGF1bmNoICYmICFjbGVhcldoZW5UYXNrUmVzZXQgJiYgdGFyZ2V0LnJlc3VsdFRvICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgc2VuZGluZyBhIHJlcGx5IHRvIGEgcHJldmlvdXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5LCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIGl0IG5vdyB1bnRpbAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgcmVhY2ggdGhlIHN0YXJ0IG9mIHRoZSByZXBseSBjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhYWCBub3RlIHRoYXQgd2UgYXJlIGFzc3VtaW5nIHRoZSByZXN1bHQgaXMgYWx3YXlzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGUgcHJldmlvdXMgYWN0aXZpdHksIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIGJ1dCB3ZSByZWFsbHkgc2hvdWxkbid0IGNvdW50IG9uLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZpbmlzaE9uVGFza0xhdW5jaCAmJiAhY2xlYXJXaGVuVGFza1Jlc2V0ICYmIGFsbG93VGFza1JlcGFyZW50aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0LnRhc2tBZmZpbml0eSAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXRhcmdldC50YXNrQWZmaW5pdHkuZXF1YWxzKHRhc2suYWZmaW5pdHkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGhhcyBhbiBhZmZpbml0eSBmb3IgYW5vdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFzaywgdGhlbiB3ZSBuZWVkIHRvIG1vdmUgaXQgb3V0IG9mIGhlcmUuICBXZSB3aWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGl0IGFzIGZhciBvdXQgb2YgdGhlIHdheSBhcyBwb3NzaWJsZSwgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBib3R0b20gb2YgdGhlIGFjdGl2aXR5IHN0YWNrLiAgVGhpcyBhbHNvIGtlZXBzIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZWN0bHkgb3JkZXJlZCB3aXRoIGFueSBhY3Rpdml0aWVzIHdlIHByZXZpb3VzbHkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vdmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBwID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KDApOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC50YXNrQWZmaW5pdHkgIT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXQudGFza0FmZmluaXR5LmVxdWFscyhwLnRhc2suYWZmaW5pdHkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGFjdGl2aXR5IGN1cnJlbnRseSBhdCB0aGUgYm90dG9tIGhhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYW1lIHRhc2sgYWZmaW5pdHkgYXMgdGhlIG9uZSB3ZSBhcmUgbW92aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gbWVyZ2UgaXQgaW50byB0aGUgc2FtZSB0YXNrLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50YXNrID0gcC50YXNrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBRywgIlN0YXJ0IHB1c2hpbmcgYWN0aXZpdHkgIiArIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIG91dCB0byBib3R0b20gdGFzayAiICsgcC50YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1clRhc2srKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUN1clRhc2sgPD0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ3VyVGFzayA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50YXNrID0gbmV3IFRhc2tSZWNvcmQobUN1clRhc2ssIHRhcmdldC5pbmZvLCBudWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldC5pbmZvLmZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIKSAhPSAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQudGFzay5hZmZpbml0eUludGVudCA9IHRhcmdldC5pbnRlbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiU3RhcnQgcHVzaGluZyBhY3Rpdml0eSAiICsgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgb3V0IHRvIG5ldyB0YXNrICIgKyB0YXJnZXQudGFzayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBHcm91cElkKHRhcmdldCwgdGFzay50YXNrSWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHN0UG9zID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHNyY1Bvcz10YXJnZXRJOyBzcmNQb3M8PXJlcGx5Q2hhaW5FbmQ7IHNyY1BvcysrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChzcmNQb3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiUHVzaGluZyBuZXh0IGFjdGl2aXR5ICIgKyBwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgb3V0IHRvIHRhcmdldCdzIHRhc2sgIiArIHRhcmdldC50YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLm51bUFjdGl2aXRpZXMtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnRhc2sgPSB0YXJnZXQudGFzazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQudGFzay5udW1BY3Rpdml0aWVzKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnkucmVtb3ZlKHNyY1Bvcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnkuYWRkKGRzdFBvcywgcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIubW92ZUFwcFRva2VuKGRzdFBvcywgcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwR3JvdXBJZChwLCBwLnRhc2sudGFza0lkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RQb3MrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3AgPT0gcCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AgPSBiZWxvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wSSA9PSByZXBseUNoYWluRW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcEkgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJlY2VudFRhc2tMb2NrZWQodGFyZ2V0LnRhc2spOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcmNlUmVzZXQgfHwgZmluaXNoT25UYXNrTGF1bmNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgY2xlYXJXaGVuVGFza1Jlc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYWN0aXZpdHkgc2hvdWxkIGp1c3QgYmUgcmVtb3ZlZCAtLSBlaXRoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgaXQgYXNrcyBmb3IgaXQsIG9yIHRoZSB0YXNrIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXJlZCAtLSB0aGVuIGZpbmlzaCBpdCBhbmQgYW55dGhpbmcgdGhhdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFydCBvZiBpdHMgcmVwbHkgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xlYXJXaGVuVGFza1Jlc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSB3YW50IHRvIGZpbmlzaCB0aGlzIGFjdGl2aXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGV2ZXJ5dGhpbmcgYWJvdmUgaXQsIHNvIGJlIHNuZWFreSBhbmQgcHJldGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2UgdGhlc2UgYXJlIGFsbCBpbiB0aGUgcmVwbHkgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEkrMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmVwbHlDaGFpbkVuZCA8IG1IaXN0b3J5LnNpemUoKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQpKS50YXNrID09IHRhc2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCsrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHAgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgc3JjUG9zPXRhcmdldEk7IHNyY1Bvczw9cmVwbHlDaGFpbkVuZDsgc3JjUG9zKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KHNyY1Bvcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluaXNoQWN0aXZpdHlMb2NrZWQocCwgc3JjUG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAicmVzZXQiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1Bvcy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wID09IHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wID0gYmVsb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFza1RvcEkgPT0gcmVwbHlDaGFpbkVuZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3BJID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFpbiwgd2VsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IHRoYXQgc3RhcnRlZCBpdCBhbGwgZG9lc24ndCB3YW50IGFueXRoaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsLCBzbyBsZWF2ZSBpdCBhbGwgYXMtaXMuCi0gICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBSZWFjaGVkIHRoZSBib3R0b20gb2YgdGhlIHRhc2sgLS0gYW55IHJlcGx5IGNoYWluCi0gICAgICAgICAgICAgICAgICAgIC8vIHNob3VsZCBiZSBsZWZ0IGFzLWlzLgotICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQucmVzdWx0VG8gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgc2VuZGluZyBhIHJlcGx5IHRvIGEgcHJldmlvdXMKLSAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCBpdCBub3cgdW50aWwKLSAgICAgICAgICAgICAgICAvLyB3ZSByZWFjaCB0aGUgc3RhcnQgb2YgdGhlIHJlcGx5IGNoYWluLgotICAgICAgICAgICAgICAgIC8vIFhYWCBub3RlIHRoYXQgd2UgYXJlIGFzc3VtaW5nIHRoZSByZXN1bHQgaXMgYWx3YXlzCi0gICAgICAgICAgICAgICAgLy8gdG8gdGhlIHByZXZpb3VzIGFjdGl2aXR5LCB3aGljaCBpcyBhbG1vc3QgYWx3YXlzCi0gICAgICAgICAgICAgICAgLy8gdGhlIGNhc2UgYnV0IHdlIHJlYWxseSBzaG91bGRuJ3QgY291bnQgb24uCi0gICAgICAgICAgICAgICAgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSB0YXJnZXRJOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgfSBlbHNlIGlmICh0YXNrVG9wSSA+PSAwICYmIGFsbG93VGFza1JlcGFyZW50aW5nCi0gICAgICAgICAgICAgICAgICAgICYmIHRhc2suYWZmaW5pdHkgIT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAmJiB0YXNrLmFmZmluaXR5LmVxdWFscyh0YXJnZXQudGFza0FmZmluaXR5KSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBpbnNpZGUgb2YgYW5vdGhlciB0YXNrLi4uICBpZiB0aGlzIGFjdGl2aXR5IGhhcwotICAgICAgICAgICAgICAgIC8vIGFuIGFmZmluaXR5IGZvciBvdXIgdGFzaywgdGhlbiBlaXRoZXIgcmVtb3ZlIGl0IGlmIHdlIGFyZQotICAgICAgICAgICAgICAgIC8vIGNsZWFyaW5nIG9yIG1vdmUgaXQgb3ZlciB0byBvdXIgdGFzay4gIE5vdGUgdGhhdAotICAgICAgICAgICAgICAgIC8vIHdlIGN1cnJlbnRseSBwdW50IG9uIHRoZSBjYXNlIHdoZXJlIHdlIGFyZSByZXNldHRpbmcgYQotICAgICAgICAgICAgICAgIC8vIHRhc2sgdGhhdCBpcyBub3QgYXQgdGhlIHRvcCBidXQgd2hvIGhhcyBhY3Rpdml0aWVzIGFib3ZlCi0gICAgICAgICAgICAgICAgLy8gd2l0aCBhbiBhZmZpbml0eSB0byBpdC4uLiAgdGhpcyBpcyByZWFsbHkgbm90IGEgbm9ybWFsCi0gICAgICAgICAgICAgICAgLy8gY2FzZSwgYW5kIHdlIHdpbGwgbmVlZCB0byBsYXRlciBwdWxsIHRoYXQgdGFzayB0byB0aGUgZnJvbnQKLSAgICAgICAgICAgICAgICAvLyBhbmQgdXN1YWxseSBhdCB0aGF0IHBvaW50IHdlIHdpbGwgZG8gdGhlIHJlc2V0IGFuZCBwaWNrCi0gICAgICAgICAgICAgICAgLy8gdXAgdGhvc2UgcmVtYWluaW5nIGFjdGl2aXRpZXMuICAoVGhpcyBvbmx5IGhhcHBlbnMgaWYKLSAgICAgICAgICAgICAgICAvLyBzb21lb25lIHN0YXJ0cyBhbiBhY3Rpdml0eSBpbiBhIG5ldyB0YXNrIGZyb20gYW4gYWN0aXZpdHkKLSAgICAgICAgICAgICAgICAvLyBpbiBhIHRhc2sgdGhhdCBpcyBub3QgY3VycmVudGx5IG9uIHRvcC4pCi0gICAgICAgICAgICAgICAgaWYgKGZvcmNlUmVzZXQgfHwgZmluaXNoT25UYXNrTGF1bmNoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXBseUNoYWluRW5kIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBwID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgc3JjUG9zPXRhcmdldEk7IHNyY1Bvczw9cmVwbHlDaGFpbkVuZDsgc3JjUG9zKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoc3JjUG9zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaEFjdGl2aXR5TG9ja2VkKHAsIHNyY1BvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAicmVzZXQiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3BJLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFJlcGFyZW50UG9zLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZC0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1Bvcy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSB0YXJnZXRJOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHNyY1Bvcz1yZXBseUNoYWluRW5kOyBzcmNQb3M+PXRhcmdldEk7IHNyY1Bvcy0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHAgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoc3JjUG9zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RSZXBhcmVudFBvcyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVwYXJlbnRQb3MgPSB0YXNrVG9wSTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wID0gcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFJlcGFyZW50UG9zLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUoc3JjUG9zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHAudGFzay5udW1BY3Rpdml0aWVzLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICBwLnRhc2sgPSB0YXNrOwotICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnkuYWRkKGxhc3RSZXBhcmVudFBvcywgcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJQdWxsaW5nIGFjdGl2aXR5ICIgKyBwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBpbiB0byByZXNldHRpbmcgdGFzayAiICsgdGFzayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLm51bUFjdGl2aXRpZXMrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLm1vdmVBcHBUb2tlbihsYXN0UmVwYXJlbnRQb3MsIHApOwotICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwR3JvdXBJZChwLCBwLnRhc2sudGFza0lkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgLy8gTm93IHdlJ3ZlIG1vdmVkIGl0IGluIHRvIHBsYWNlLi4uICBidXQgd2hhdCBpZiB0aGlzIGlzCi0gICAgICAgICAgICAgICAgICAgIC8vIGEgc2luZ2xlVG9wIGFjdGl2aXR5IGFuZCB3ZSBoYXZlIHB1dCBpdCBvbiB0b3Agb2YgYW5vdGhlcgotICAgICAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZSBvZiB0aGUgc2FtZSBhY3Rpdml0eT8gIFRoZW4gd2UgZHJvcCB0aGUgaW5zdGFuY2UKLSAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgc28gaXQgcmVtYWlucyBzaW5nbGVUb3AuCi0gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuaW5mby5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX1RPUCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj1sYXN0UmVwYXJlbnRQb3MtMTsgaj49MDsgai0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBwID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGopOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuaW50ZW50LmdldENvbXBvbmVudCgpLmVxdWFscyh0YXJnZXQuaW50ZW50LmdldENvbXBvbmVudCgpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluaXNoQWN0aXZpdHlMb2NrZWQocCwgaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJyZXBsYWNlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3BJLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVwYXJlbnRQb3MtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGFyZ2V0ID0gYmVsb3c7Ci0gICAgICAgICAgICB0YXJnZXRJID0gaTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRhc2tUb3A7Ci0gICAgfQotICAgIAotICAgIC8qKgogICAgICAqIFRPRE86IEFkZCBtQ29udHJvbGxlciBob29rCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgbW92ZVRhc2tUb0Zyb250KGludCB0YXNrKSB7CkBAIC03MzE5LDE0ICs0NjM0LDE0IEBACiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewogICAgICAgICAgICAgICAgICAgICBUYXNrUmVjb3JkIHRyID0gbVJlY2VudFRhc2tzLmdldChpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyLnRhc2tJZCA9PSB0YXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlVGFza1RvRnJvbnRMb2NrZWQodHIsIG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgbU1haW5TdGFjay5tb3ZlVGFza1RvRnJvbnRMb2NrZWQodHIsIG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAoaW50IGk9bUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIGhyID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9bU1haW5TdGFjay5tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIGhyID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaHIudGFzay50YXNrSWQgPT0gdGFzaykgewotICAgICAgICAgICAgICAgICAgICAgICAgbW92ZVRhc2tUb0Zyb250TG9ja2VkKGhyLnRhc2ssIG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgbU1haW5TdGFjay5tb3ZlVGFza1RvRnJvbnRMb2NrZWQoaHIudGFzaywgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC03MzM2LDg0ICs0NjUxLDIwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgbW92ZVRhc2tUb0Zyb250TG9ja2VkKFRhc2tSZWNvcmQgdHIsIEhpc3RvcnlSZWNvcmQgcmVhc29uKSB7Ci0gICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJtb3ZlVGFza1RvRnJvbnQ6ICIgKyB0cik7Ci0KLSAgICAgICAgZmluYWwgaW50IHRhc2sgPSB0ci50YXNrSWQ7Ci0gICAgICAgIGludCB0b3AgPSBtSGlzdG9yeS5zaXplKCktMTsKLQotICAgICAgICBpZiAodG9wIDwgMCB8fCAoKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KHRvcCkpLnRhc2sudGFza0lkID09IHRhc2spIHsKLSAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8hCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBcnJheUxpc3QgbW92ZWQgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICAgICAgLy8gQXBwbHlpbmcgdGhlIGFmZmluaXRpZXMgbWF5IGhhdmUgcmVtb3ZlZCBlbnRyaWVzIGZyb20gdGhlIGhpc3RvcnksCi0gICAgICAgIC8vIHNvIGdldCB0aGUgc2l6ZSBhZ2Fpbi4KLSAgICAgICAgdG9wID0gbUhpc3Rvcnkuc2l6ZSgpLTE7Ci0gICAgICAgIGludCBwb3MgPSB0b3A7Ci0KLSAgICAgICAgLy8gU2hpZnQgYWxsIGFjdGl2aXRpZXMgd2l0aCB0aGlzIHRhc2sgdXAgdG8gdGhlIHRvcAotICAgICAgICAvLyBvZiB0aGUgc3RhY2ssIGtlZXBpbmcgdGhlbSBpbiB0aGUgc2FtZSBpbnRlcm5hbCBvcmRlci4KLSAgICAgICAgd2hpbGUgKHBvcyA+PSAwKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQocG9zKTsKLSAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKLSAgICAgICAgICAgICAgICBUQUcsICJBdCAiICsgcG9zICsgIiBja3AgIiArIHIudGFzayArICI6ICIgKyByKTsKLSAgICAgICAgICAgIGJvb2xlYW4gZmlyc3QgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHIudGFzay50YXNrSWQgPT0gdGFzaykgewotICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJSZW1vdmluZyBhbmQgYWRkaW5nIGF0ICIgKyB0b3ApOwotICAgICAgICAgICAgICAgIG1IaXN0b3J5LnJlbW92ZShwb3MpOwotICAgICAgICAgICAgICAgIG1IaXN0b3J5LmFkZCh0b3AsIHIpOwotICAgICAgICAgICAgICAgIG1vdmVkLmFkZCgwLCByKTsKLSAgICAgICAgICAgICAgICB0b3AtLTsKLSAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkUmVjZW50VGFza0xvY2tlZChyLnRhc2spOwotICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcy0tOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgIlByZXBhcmUgdG8gZnJvbnQgdHJhbnNpdGlvbjogdGFzaz0iICsgdHIpOwotICAgICAgICBpZiAocmVhc29uICE9IG51bGwgJiYKLSAgICAgICAgICAgICAgICAocmVhc29uLmludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX05PX0FOSU1BVElPTikgIT0gMCkgewotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOwotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmFkZChyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9UQVNLX1RPX0ZST05UKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbVdpbmRvd01hbmFnZXIubW92ZUFwcFRva2Vuc1RvVG9wKG1vdmVkKTsKLSAgICAgICAgaWYgKFZBTElEQVRFX1RPS0VOUykgewotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmluaXNoVGFza01vdmVMb2NrZWQodGFzayk7Ci0gICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX1RBU0tfVE9fRlJPTlQsIHRhc2spOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCBmaW5pc2hUYXNrTW92ZUxvY2tlZChpbnQgdGFzaykgewotICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKLSAgICB9Ci0KICAgICBwdWJsaWMgdm9pZCBtb3ZlVGFza1RvQmFjayhpbnQgdGFzaykgewogICAgICAgICBlbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLlJFT1JERVJfVEFTS1MsCiAgICAgICAgICAgICAgICAgIm1vdmVUYXNrVG9CYWNrKCkiKTsKIAogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewotICAgICAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbCAmJiBtUmVzdW1lZEFjdGl2aXR5LnRhc2sudGFza0lkID09IHRhc2spIHsKKyAgICAgICAgICAgIGlmIChtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAmJiBtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkudGFzay50YXNrSWQgPT0gdGFzaykgewogICAgICAgICAgICAgICAgIGlmICghY2hlY2tBcHBTd2l0Y2hBbGxvd2VkTG9ja2VkKEJpbmRlci5nZXRDYWxsaW5nUGlkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpLCAiVGFzayB0byBiYWNrIikpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgICAgICBtb3ZlVGFza1RvQmFja0xvY2tlZCh0YXNrLCBudWxsKTsKKyAgICAgICAgICAgIG1NYWluU3RhY2subW92ZVRhc2tUb0JhY2tMb2NrZWQodGFzaywgbnVsbCk7CiAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzQzMiw5MyArNDY4MywxMyBAQAogICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgICAgIGludCB0YXNrSWQgPSBnZXRUYXNrRm9yQWN0aXZpdHlMb2NrZWQodG9rZW4sICFub25Sb290KTsKICAgICAgICAgICAgIGlmICh0YXNrSWQgPj0gMCkgewotICAgICAgICAgICAgICAgIHJldHVybiBtb3ZlVGFza1RvQmFja0xvY2tlZCh0YXNrSWQsIG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybiBtTWFpblN0YWNrLm1vdmVUYXNrVG9CYWNrTG9ja2VkKHRhc2tJZCwgbnVsbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvKioKLSAgICAgKiBXb3JrZXIgbWV0aG9kIGZvciByZWFycmFuZ2luZyBoaXN0b3J5IHN0YWNrLiAgSW1wbGVtZW50cyB0aGUgZnVuY3Rpb24gb2YgbW92aW5nIGFsbCAKLSAgICAgKiBhY3Rpdml0aWVzIGZvciBhIHNwZWNpZmljIHRhc2sgKGdhdGhlcmluZyB0aGVtIGlmIGRpc2pvaW50KSBpbnRvIGEgc2luZ2xlIGdyb3VwIGF0IHRoZSAKLSAgICAgKiBib3R0b20gb2YgdGhlIHN0YWNrLgotICAgICAqIAotICAgICAqIElmIGEgd2F0Y2hlciBpcyBpbnN0YWxsZWQsIHRoZSBhY3Rpb24gaXMgcHJlZmxpZ2h0ZWQgYW5kIHRoZSB3YXRjaGVyIGhhcyBhbiBvcHBvcnR1bml0eQotICAgICAqIHRvIHByZW1lcHRpdmVseSBjYW5jZWwgdGhlIG1vdmUuCi0gICAgICogCi0gICAgICogQHBhcmFtIHRhc2sgVGhlIHRhc2tJZCB0byBjb2xsZWN0IGFuZCBtb3ZlIHRvIHRoZSBib3R0b20uCi0gICAgICogQHJldHVybiBSZXR1cm5zIHRydWUgaWYgdGhlIG1vdmUgY29tcGxldGVkLCBmYWxzZSBpZiBub3QuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1vdmVUYXNrVG9CYWNrTG9ja2VkKGludCB0YXNrLCBIaXN0b3J5UmVjb3JkIHJlYXNvbikgewotICAgICAgICBTbG9nLmkoVEFHLCAibW92ZVRhc2tUb0JhY2s6ICIgKyB0YXNrKTsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHdlIGhhdmUgYSB3YXRjaGVyLCBwcmVmbGlnaHQgdGhlIG1vdmUgYmVmb3JlIGNvbW1pdHRpbmcgdG8gaXQuICBGaXJzdCBjaGVjawotICAgICAgICAvLyBmb3IgKm90aGVyKiBhdmFpbGFibGUgdGFza3MsIGJ1dCBpZiBub25lIGFyZSBhdmFpbGFibGUsIHRoZW4gdHJ5IGFnYWluIGFsbG93aW5nIHRoZQotICAgICAgICAvLyBjdXJyZW50IHRhc2sgdG8gYmUgc2VsZWN0ZWQuCi0gICAgICAgIGlmIChtQ29udHJvbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIG5leHQgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCwgdGFzayk7Ci0gICAgICAgICAgICBpZiAobmV4dCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbmV4dCA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsLCAwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuZXh0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBhc2sgd2F0Y2hlciBpZiB0aGlzIGlzIGFsbG93ZWQKLSAgICAgICAgICAgICAgICBib29sZWFuIG1vdmVPSyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbW92ZU9LID0gbUNvbnRyb2xsZXIuYWN0aXZpdHlSZXN1bWluZyhuZXh0LnBhY2thZ2VOYW1lKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBtQ29udHJvbGxlciA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghbW92ZU9LKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBBcnJheUxpc3QgbW92ZWQgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgIlByZXBhcmUgdG8gYmFjayB0cmFuc2l0aW9uOiB0YXNrPSIgKyB0YXNrKTsKLSAgICAgICAgCi0gICAgICAgIGZpbmFsIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOwotICAgICAgICBpbnQgYm90dG9tID0gMDsKLSAgICAgICAgaW50IHBvcyA9IDA7Ci0KLSAgICAgICAgLy8gU2hpZnQgYWxsIGFjdGl2aXRpZXMgd2l0aCB0aGlzIHRhc2sgZG93biB0byB0aGUgYm90dG9tCi0gICAgICAgIC8vIG9mIHRoZSBzdGFjaywga2VlcGluZyB0aGVtIGluIHRoZSBzYW1lIGludGVybmFsIG9yZGVyLgotICAgICAgICB3aGlsZSAocG9zIDwgTikgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KHBvcyk7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgVEFHLCAiQXQgIiArIHBvcyArICIgY2twICIgKyByLnRhc2sgKyAiOiAiICsgcik7Ci0gICAgICAgICAgICBpZiAoci50YXNrLnRhc2tJZCA9PSB0YXNrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlJlbW92aW5nIGFuZCBhZGRpbmcgYXQgIiArIChOLTEpKTsKLSAgICAgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUocG9zKTsKLSAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQoYm90dG9tLCByKTsKLSAgICAgICAgICAgICAgICBtb3ZlZC5hZGQocik7Ci0gICAgICAgICAgICAgICAgYm90dG9tKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3MrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZWFzb24gIT0gbnVsbCAmJgotICAgICAgICAgICAgICAgIChyZWFzb24uaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfTk9fQU5JTUFUSU9OKSAhPSAwKSB7Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfTk9ORSk7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICBpZiAociAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuYWRkKHIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfVE9fQkFDSyk7Ci0gICAgICAgIH0KLSAgICAgICAgbVdpbmRvd01hbmFnZXIubW92ZUFwcFRva2Vuc1RvQm90dG9tKG1vdmVkKTsKLSAgICAgICAgaWYgKFZBTElEQVRFX1RPS0VOUykgewotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmluaXNoVGFza01vdmVMb2NrZWQodGFzayk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIHB1YmxpYyB2b2lkIG1vdmVUYXNrQmFja3dhcmRzKGludCB0YXNrKSB7CiAgICAgICAgIGVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uUkVPUkRFUl9UQVNLUywKICAgICAgICAgICAgICAgICAibW92ZVRhc2tCYWNrd2FyZHMoKSIpOwpAQCAtNzU0NSwxMCArNDcxNiwxMCBAQAogICAgIH0KIAogICAgIGludCBnZXRUYXNrRm9yQWN0aXZpdHlMb2NrZWQoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBvbmx5Um9vdCkgewotICAgICAgICBmaW5hbCBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgZmluYWwgaW50IE4gPSBtTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKTsKICAgICAgICAgVGFza1JlY29yZCBsYXN0VGFzayA9IG51bGw7CiAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaSk7CiAgICAgICAgICAgICBpZiAociA9PSB0b2tlbikgewogICAgICAgICAgICAgICAgIGlmICghb25seVJvb3QgfHwgbGFzdFRhc2sgIT0gci50YXNrKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnRhc2sudGFza0lkOwpAQCAtNzU2MSw4OSArNDczMiwxNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgdG9wIGFjdGl2aXR5IGluIGFueSBleGlzdGluZyB0YXNrIG1hdGNoaW5nIHRoZSBnaXZlbgotICAgICAqIEludGVudC4gIFJldHVybnMgbnVsbCBpZiBubyBzdWNoIHRhc2sgaXMgZm91bmQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBIaXN0b3J5UmVjb3JkIGZpbmRUYXNrTG9ja2VkKEludGVudCBpbnRlbnQsIEFjdGl2aXR5SW5mbyBpbmZvKSB7Ci0gICAgICAgIENvbXBvbmVudE5hbWUgY2xzID0gaW50ZW50LmdldENvbXBvbmVudCgpOwotICAgICAgICBpZiAoaW5mby50YXJnZXRBY3Rpdml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBjbHMgPSBuZXcgQ29tcG9uZW50TmFtZShpbmZvLnBhY2thZ2VOYW1lLCBpbmZvLnRhcmdldEFjdGl2aXR5KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRhc2tSZWNvcmQgY3AgPSBudWxsOwotCi0gICAgICAgIGZpbmFsIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpPShOLTEpOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcgJiYgci50YXNrICE9IGNwCi0gICAgICAgICAgICAgICAgICAgICYmIHIubGF1bmNoTW9kZSAhPSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRSkgewotICAgICAgICAgICAgICAgIGNwID0gci50YXNrOwotICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkNvbXBhcmluZyBleGlzdGluZyBjbHM9IiArIHIudGFzay5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKQotICAgICAgICAgICAgICAgIC8vICAgICAgICArICIvYWZmPSIgKyByLnRhc2suYWZmaW5pdHkgKyAiIHRvIG5ldyBjbHM9IgotICAgICAgICAgICAgICAgIC8vICAgICAgICArIGludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpICsgIi9hZmY9IiArIHRhc2tBZmZpbml0eSk7Ci0gICAgICAgICAgICAgICAgaWYgKHIudGFzay5hZmZpbml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyLnRhc2suYWZmaW5pdHkuZXF1YWxzKGluZm8udGFza0FmZmluaXR5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm91bmQgbWF0Y2hpbmcgYWZmaW5pdHkhIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci50YXNrLmludGVudCAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiByLnRhc2suaW50ZW50LmdldENvbXBvbmVudCgpLmVxdWFscyhjbHMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkZvdW5kIG1hdGNoaW5nIGNsYXNzISIpOwotICAgICAgICAgICAgICAgICAgICAvL2R1bXAoKTsKLSAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm9yIEludGVudCAiICsgaW50ZW50ICsgIiBicmluZ2luZyB0byB0b3A6ICIgKyByLmludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci50YXNrLmFmZmluaXR5SW50ZW50ICE9IG51bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIHIudGFzay5hZmZpbml0eUludGVudC5nZXRDb21wb25lbnQoKS5lcXVhbHMoY2xzKSkgewotICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJGb3VuZCBtYXRjaGluZyBjbGFzcyEiKTsKLSAgICAgICAgICAgICAgICAgICAgLy9kdW1wKCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkZvciBJbnRlbnQgIiArIGludGVudCArICIgYnJpbmdpbmcgdG8gdG9wOiAiICsgci5pbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBhY3Rpdml0eSAoc3RhcnRpbmcgZnJvbSB0aGUgdG9wIG9mIHRoZSBzdGFjaykgdGhhdAotICAgICAqIGlzIHRoZSBzYW1lIGFzIHRoZSBnaXZlbiBhY3Rpdml0eS4gIFJldHVybnMgbnVsbCBpZiBubyBzdWNoIGFjdGl2aXR5Ci0gICAgICogaXMgZm91bmQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBIaXN0b3J5UmVjb3JkIGZpbmRBY3Rpdml0eUxvY2tlZChJbnRlbnQgaW50ZW50LCBBY3Rpdml0eUluZm8gaW5mbykgewotICAgICAgICBDb21wb25lbnROYW1lIGNscyA9IGludGVudC5nZXRDb21wb25lbnQoKTsKLSAgICAgICAgaWYgKGluZm8udGFyZ2V0QWN0aXZpdHkgIT0gbnVsbCkgewotICAgICAgICAgICAgY2xzID0gbmV3IENvbXBvbmVudE5hbWUoaW5mby5wYWNrYWdlTmFtZSwgaW5mby50YXJnZXRBY3Rpdml0eSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5hbCBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaT0oTi0xKTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHIuaW50ZW50LmdldENvbXBvbmVudCgpLmVxdWFscyhjbHMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkZvdW5kIG1hdGNoaW5nIGNsYXNzISIpOwotICAgICAgICAgICAgICAgICAgICAvL2R1bXAoKTsKLSAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm9yIEludGVudCAiICsgaW50ZW50ICsgIiBicmluZ2luZyB0byB0b3A6ICIgKyByLmludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQogICAgIHB1YmxpYyB2b2lkIGZpbmlzaE90aGVySW5zdGFuY2VzKElCaW5kZXIgdG9rZW4sIENvbXBvbmVudE5hbWUgY2xhc3NOYW1lKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CiAgICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogCi0gICAgICAgICAgICBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgICAgIGludCBOID0gbU1haW5TdGFjay5tSGlzdG9yeS5zaXplKCk7CiAgICAgICAgICAgICBUYXNrUmVjb3JkIGxhc3RUYXNrID0gbnVsbDsKICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpKTsKICAgICAgICAgICAgICAgICBpZiAoci5yZWFsQWN0aXZpdHkuZXF1YWxzKGNsYXNzTmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICYmIHIgIT0gdG9rZW4gJiYgbGFzdFRhc2sgIT0gci50YXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsCisgICAgICAgICAgICAgICAgICAgIGlmIChyLnN0YWNrLmZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCAib3RoZXJzIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgICAgICAgICAgICAgIE4tLTsKQEAgLTc2NjgsNyArNDc2Nyw3IEBACiAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CiAgICAgfQogCi0gICAgZmluYWwgdm9pZCBzZW5kUGVuZGluZ1RodW1ibmFpbChIaXN0b3J5UmVjb3JkIHIsIElCaW5kZXIgdG9rZW4sCisgICAgZmluYWwgdm9pZCBzZW5kUGVuZGluZ1RodW1ibmFpbChBY3Rpdml0eVJlY29yZCByLCBJQmluZGVyIHRva2VuLAogICAgICAgICAgICAgQml0bWFwIHRodW1ibmFpbCwgQ2hhclNlcXVlbmNlIGRlc2NyaXB0aW9uLCBib29sZWFuIGFsd2F5cykgewogICAgICAgICBUYXNrUmVjb3JkIHRhc2sgPSBudWxsOwogICAgICAgICBBcnJheUxpc3QgcmVjZWl2ZXJzID0gbnVsbDsKQEAgLTc2NzcsMTEgKzQ3NzYsMTEgQEAKIAogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewogICAgICAgICAgICAgaWYgKHIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0aHVtYm5haWwgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHRodW1ibmFpbCA9IHIudGh1bWJuYWlsOwpAQCAtNzc0Miw3ICs0ODQxLDcgQEAKICAgICBwcml2YXRlIGZpbmFsIExpc3QgZ2VuZXJhdGVBcHBsaWNhdGlvblByb3ZpZGVyc0xvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCkgewogICAgICAgICBMaXN0IHByb3ZpZGVycyA9IG51bGw7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBwcm92aWRlcnMgPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLgorICAgICAgICAgICAgcHJvdmlkZXJzID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLgogICAgICAgICAgICAgICAgIHF1ZXJ5Q29udGVudFByb3ZpZGVycyhhcHAucHJvY2Vzc05hbWUsIGFwcC5pbmZvLnVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgIFNUT0NLX1BNX0ZMQUdTIHwgUGFja2FnZU1hbmFnZXIuR0VUX1VSSV9QRVJNSVNTSU9OX1BBVFRFUk5TKTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CkBAIC03NzUyLDggKzQ4NTEsNyBAQAogICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewogICAgICAgICAgICAgICAgIFByb3ZpZGVySW5mbyBjcGkgPQogICAgICAgICAgICAgICAgICAgICAoUHJvdmlkZXJJbmZvKXByb3ZpZGVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9Ci0gICAgICAgICAgICAgICAgICAgIChDb250ZW50UHJvdmlkZXJSZWNvcmQpbVByb3ZpZGVyc0J5Q2xhc3MuZ2V0KGNwaS5uYW1lKTsKKyAgICAgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0gbVByb3ZpZGVyc0J5Q2xhc3MuZ2V0KGNwaS5uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoY3ByID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgY3ByID0gbmV3IENvbnRlbnRQcm92aWRlclJlY29yZChjcGksIGFwcC5pbmZvKTsKICAgICAgICAgICAgICAgICAgICAgbVByb3ZpZGVyc0J5Q2xhc3MucHV0KGNwaS5uYW1lLCBjcHIpOwpAQCAtNzgyOCw3ICs0OTI2LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBjb250ZW50IHByb3ZpZGVyIGhhcyBiZWVuIHB1Ymxpc2hlZC4uLgotICAgICAgICAgICAgY3ByID0gKENvbnRlbnRQcm92aWRlclJlY29yZCltUHJvdmlkZXJzQnlOYW1lLmdldChuYW1lKTsKKyAgICAgICAgICAgIGNwciA9IG1Qcm92aWRlcnNCeU5hbWUuZ2V0KG5hbWUpOwogICAgICAgICAgICAgaWYgKGNwciAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgY3BpID0gY3ByLmluZm87CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrQ29udGVudFByb3ZpZGVyUGVybWlzc2lvbkxvY2tlZChjcGksIHIsIC0xKSAhPSBudWxsKSB7CkBAIC03ODY2LDggKzQ5NjQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgci5jb25Qcm92aWRlcnMucHV0KGNwciwgbmV3IEludGVnZXIoY250LmludFZhbHVlKCkrMSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNwci5jbGllbnRzLmFkZChyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNwci5hcHAgIT0gbnVsbCAmJiByLnNldEFkaiA+PSBWSVNJQkxFX0FQUF9BREopIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSB2aXNpYmxlIGFwcCBhY2Nlc3NpbmcgdGhlIHByb3ZpZGVyLAorICAgICAgICAgICAgICAgICAgICBpZiAoY3ByLmFwcCAhPSBudWxsICYmIHIuc2V0QWRqIDw9IFBFUkNFUFRJQkxFX0FQUF9BREopIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwZXJjZXB0aWJsZSBhcHAgYWNjZXNzaW5nIHRoZSBwcm92aWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0byBjb3VudCBpdCBhcyBiZWluZyBhY2Nlc3NlZCBhbmQgdGh1cwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFjayB1cCBvbiB0aGUgTFJVIGxpc3QuICBUaGlzIGlzIGdvb2QgYmVjYXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudCBwcm92aWRlcnMgYXJlIG9mdGVuIGV4cGVuc2l2ZSB0byBzdGFydC4KQEAgLTc4ODUsNyArNDk4Myw3IEBACiAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgY3BpID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS4KKyAgICAgICAgICAgICAgICAgICAgY3BpID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLgogICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUNvbnRlbnRQcm92aWRlcihuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE9DS19QTV9GTEFHUyB8IFBhY2thZ2VNYW5hZ2VyLkdFVF9VUklfUEVSTUlTU0lPTl9QQVRURVJOUyk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CkBAIC03OTA5LDEyICs1MDA3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gbGF1bmNoIGNvbnRlbnQgcHJvdmlkZXIgYmVmb3JlIHN5c3RlbSByZWFkeSIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjcHIgPSAoQ29udGVudFByb3ZpZGVyUmVjb3JkKW1Qcm92aWRlcnNCeUNsYXNzLmdldChjcGkubmFtZSk7CisgICAgICAgICAgICAgICAgY3ByID0gbVByb3ZpZGVyc0J5Q2xhc3MuZ2V0KGNwaS5uYW1lKTsKICAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGZpcnN0Q2xhc3MgPSBjcHIgPT0gbnVsbDsKICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDbGFzcykgewogICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvIGFpID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QXBwbGljYXRpb25JbmZvKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwaS5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RPQ0tfUE1fRkxBR1MpOwpAQCAtODA0Myw3ICs1MTQxLDcgQEAKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCByZW1vdmVDb250ZW50UHJvdmlkZXIoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwgU3RyaW5nIG5hbWUpIHsKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0gKENvbnRlbnRQcm92aWRlclJlY29yZCltUHJvdmlkZXJzQnlOYW1lLmdldChuYW1lKTsKKyAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSBtUHJvdmlkZXJzQnlOYW1lLmdldChuYW1lKTsKICAgICAgICAgICAgIGlmKGNwciA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gbVByb3ZpZGVyc0J5Q2xhc3MKICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUFJPVklERVIpIFNsb2cudihUQUcsIG5hbWUgKwpAQCAtODA1Nyw4ICs1MTU1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICIgd2hlbiByZW1vdmluZyBjb250ZW50IHByb3ZpZGVyICIgKyBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vdXBkYXRlIGNvbnRlbnQgcHJvdmlkZXIgcmVjb3JkIGVudHJ5IGluZm8KLSAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBsb2NhbENwciA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpCi0gICAgICAgICAgICAgICAgICAgIG1Qcm92aWRlcnNCeUNsYXNzLmdldChjcHIuaW5mby5uYW1lKTsKKyAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBsb2NhbENwciA9IG1Qcm92aWRlcnNCeUNsYXNzLmdldChjcHIuaW5mby5uYW1lKTsKICAgICAgICAgICAgIGlmIChERUJVR19QUk9WSURFUikgU2xvZy52KFRBRywgIlJlbW92aW5nIHByb3ZpZGVyIHJlcXVlc3RlZCBieSAiCiAgICAgICAgICAgICAgICAgICAgICsgci5pbmZvLnByb2Nlc3NOYW1lICsgIiBmcm9tIHByb2Nlc3MgIgogICAgICAgICAgICAgICAgICAgICArIGxvY2FsQ3ByLmFwcEluZm8ucHJvY2Vzc05hbWUpOwpAQCAtODA4Miw3ICs1MTc5LDcgQEAKIAogICAgIHByaXZhdGUgdm9pZCByZW1vdmVDb250ZW50UHJvdmlkZXJFeHRlcm5hbChTdHJpbmcgbmFtZSkgewogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSAoQ29udGVudFByb3ZpZGVyUmVjb3JkKW1Qcm92aWRlcnNCeU5hbWUuZ2V0KG5hbWUpOworICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IG1Qcm92aWRlcnNCeU5hbWUuZ2V0KG5hbWUpOwogICAgICAgICAgICAgaWYoY3ByID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAvL3JlbW92ZSBmcm9tIG1Qcm92aWRlcnNCeUNsYXNzCiAgICAgICAgICAgICAgICAgaWYobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCBuYW1lKyIgY29udGVudCBwcm92aWRlciBub3QgZm91bmQgaW4gcHJvdmlkZXJzIGxpc3QiKTsKQEAgLTgwOTAsNyArNTE4Nyw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vdXBkYXRlIGNvbnRlbnQgcHJvdmlkZXIgcmVjb3JkIGVudHJ5IGluZm8KLSAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBsb2NhbENwciA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpIG1Qcm92aWRlcnNCeUNsYXNzLmdldChjcHIuaW5mby5uYW1lKTsKKyAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBsb2NhbENwciA9IG1Qcm92aWRlcnNCeUNsYXNzLmdldChjcHIuaW5mby5uYW1lKTsKICAgICAgICAgICAgIGxvY2FsQ3ByLmV4dGVybmFscy0tOwogICAgICAgICAgICAgaWYgKGxvY2FsQ3ByLmV4dGVybmFscyA8IDApIHsKICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRXh0ZXJuYWxzIDwgMCBmb3IgY29udGVudCBwcm92aWRlciAiICsgbG9jYWxDcHIpOwpAQCAtODEyMiw4ICs1MjE5LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoc3JjID09IG51bGwgfHwgc3JjLmluZm8gPT0gbnVsbCB8fCBzcmMucHJvdmlkZXIgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGRzdCA9Ci0gICAgICAgICAgICAgICAgICAgIChDb250ZW50UHJvdmlkZXJSZWNvcmQpci5wdWJQcm92aWRlcnMuZ2V0KHNyYy5pbmZvLm5hbWUpOworICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBkc3QgPSByLnB1YlByb3ZpZGVycy5nZXQoc3JjLmluZm8ubmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKGRzdCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIG1Qcm92aWRlcnNCeUNsYXNzLnB1dChkc3QuaW5mby5uYW1lLCBkc3QpOwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZXNbXSA9IGRzdC5pbmZvLmF1dGhvcml0eS5zcGxpdCgiOyIpOwpAQCAtODIxNiwxMiArNTMxMiwxMiBAQAogICAgICAgICAgICAgICAgICJ1bmhhbmRsZWRCYWNrKCkiKTsKIAogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewotICAgICAgICAgICAgaW50IGNvdW50ID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICAgICAgaW50IGNvdW50ID0gbU1haW5TdGFjay5tSGlzdG9yeS5zaXplKCk7CiAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLmQoCiAgICAgICAgICAgICAgICAgVEFHLCAiUGVyZm9ybWluZyB1bmhhbmRsZWRCYWNrKCk6IHN0YWNrIHNpemUgPSAiICsgY291bnQpOwogICAgICAgICAgICAgaWYgKGNvdW50ID4gMSkgewogICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQoKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGNvdW50LTEpLAorICAgICAgICAgICAgICAgIG1NYWluU3RhY2suZmluaXNoQWN0aXZpdHlMb2NrZWQoKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGNvdW50LTEpLAogICAgICAgICAgICAgICAgICAgICAgICAgY291bnQtMSwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAidW5oYW5kbGVkLWJhY2siKTsKICAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOwogICAgICAgICAgICAgfQpAQCAtODI2NCw4ICs1MzYwLDggQEAKICAgICAgICAgICAgIG1TbGVlcGluZyA9IHRydWU7CiAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRFdmVudERpc3BhdGNoaW5nKGZhbHNlKTsKIAotICAgICAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHBhdXNlSWZTbGVlcGluZ0xvY2tlZCgpOworICAgICAgICAgICAgaWYgKG1NYWluU3RhY2subVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbU1haW5TdGFjay5wYXVzZUlmU2xlZXBpbmdMb2NrZWQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgImdvaW5nVG9TbGVlcCB3aXRoIG5vIHJlc3VtZWQgYWN0aXZpdHkhIik7CiAgICAgICAgICAgICB9CkBAIC04Mjg1LDEwICs1MzgxLDExIEBACiAgICAgICAgICAgICBtU2h1dHRpbmdEb3duID0gdHJ1ZTsKICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEV2ZW50RGlzcGF0Y2hpbmcoZmFsc2UpOwogCi0gICAgICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcGF1c2VJZlNsZWVwaW5nTG9ja2VkKCk7CisgICAgICAgICAgICBpZiAobU1haW5TdGFjay5tUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTWFpblN0YWNrLnBhdXNlSWZTbGVlcGluZ0xvY2tlZCgpOwogICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgZW5kVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpICsgdGltZW91dDsKLSAgICAgICAgICAgICAgICB3aGlsZSAobVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsIHx8IG1QYXVzaW5nQWN0aXZpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHdoaWxlIChtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbU1haW5TdGFjay5tUGF1c2luZ0FjdGl2aXR5ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgbG9uZyBkZWxheSA9IGVuZFRpbWUgLSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGF5IDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSBtYW5hZ2VyIHNodXRkb3duIHRpbWVkIG91dCIpOwpAQCAtODMwOSwzNSArNTQwNiwxNCBAQAogICAgICAgICByZXR1cm4gdGltZWRvdXQ7CiAgICAgfQogICAgIAotICAgIHZvaWQgcGF1c2VJZlNsZWVwaW5nTG9ja2VkKCkgewotICAgICAgICBpZiAobVNsZWVwaW5nIHx8IG1TaHV0dGluZ0Rvd24pIHsKLSAgICAgICAgICAgIGlmICghbUdvaW5nVG9TbGVlcC5pc0hlbGQoKSkgewotICAgICAgICAgICAgICAgIG1Hb2luZ1RvU2xlZXAuYWNxdWlyZSgpOwotICAgICAgICAgICAgICAgIGlmIChtTGF1bmNoaW5nQWN0aXZpdHkuaXNIZWxkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbUxhdW5jaGluZ0FjdGl2aXR5LnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoTEFVTkNIX1RJTUVPVVRfTVNHKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIGFyZSBub3QgY3VycmVudGx5IHBhdXNpbmcgYW4gYWN0aXZpdHksIGdldCB0aGUgY3VycmVudAotICAgICAgICAgICAgLy8gb25lIHRvIHBhdXNlLiAgSWYgd2UgYXJlIHBhdXNpbmcgb25lLCB3ZSB3aWxsIGp1c3QgbGV0IHRoYXQgc3R1ZmYKLSAgICAgICAgICAgIC8vIHJ1biBhbmQgcmVsZWFzZSB0aGUgd2FrZSBsb2NrIHdoZW4gYWxsIGRvbmUuCi0gICAgICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiU2xlZXAgbmVlZHMgdG8gcGF1c2UuLi4iKTsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHLCAiU2xlZXAgPT4gcGF1c2Ugd2l0aCB1c2VyTGVhdmluZz1mYWxzZSIpOwotICAgICAgICAgICAgICAgIHN0YXJ0UGF1c2luZ0xvY2tlZChmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCiAgICAgcHVibGljIHZvaWQgd2FraW5nVXAoKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICBpZiAobUdvaW5nVG9TbGVlcC5pc0hlbGQoKSkgewotICAgICAgICAgICAgICAgIG1Hb2luZ1RvU2xlZXAucmVsZWFzZSgpOworICAgICAgICAgICAgaWYgKG1NYWluU3RhY2subUdvaW5nVG9TbGVlcC5pc0hlbGQoKSkgeworICAgICAgICAgICAgICAgIG1NYWluU3RhY2subUdvaW5nVG9TbGVlcC5yZWxlYXNlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRFdmVudERpc3BhdGNoaW5nKHRydWUpOwogICAgICAgICAgICAgbVNsZWVwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgIG1NYWluU3RhY2sucmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg0NjUsMTMgKzU1NDEsNDIgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHB1YmxpYyB2b2lkIHNldEltbWVyc2l2ZShJQmluZGVyIHRva2VuLCBib29sZWFuIGltbWVyc2l2ZSkgeworICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworICAgICAgICAgICAgaW50IGluZGV4ID0gKHRva2VuICE9IG51bGwpID8gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pIDogLTE7CisgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICByLmltbWVyc2l2ZSA9IGltbWVyc2l2ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzSW1tZXJzaXZlKElCaW5kZXIgdG9rZW4pIHsKKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAodG9rZW4gIT0gbnVsbCkgPyBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbikgOiAtMTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiByLmltbWVyc2l2ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzVG9wQWN0aXZpdHlJbW1lcnNpdmUoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1NYWluU3RhY2sudG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgcmV0dXJuIChyICE9IG51bGwpID8gci5pbW1lcnNpdmUgOiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHB1YmxpYyBmaW5hbCB2b2lkIGVudGVyU2FmZU1vZGUoKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CiAgICAgICAgICAgICAvLyBJdCBvbmx5IG1ha2VzIHNlbnNlIHRvIGRvIHRoaXMgYmVmb3JlIHRoZSBzeXN0ZW0gaXMgcmVhZHkKICAgICAgICAgICAgIC8vIGFuZCBzdGFydGVkIGxhdW5jaGluZyBvdGhlciBwYWNrYWdlcy4KICAgICAgICAgICAgIGlmICghbVN5c3RlbVJlYWR5KSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5lbnRlclNhZmVNb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5lbnRlclNhZmVNb2RlKCk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTg1NTcsMTIzICs1NjYyLDYgQEAKICAgICAgICAgcmV0dXJuIGtpbGxlZDsKICAgICB9CiAgICAgCi0gICAgcHVibGljIHZvaWQgcmVwb3J0UHNzKElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsIGludCBwc3MpIHsKLSAgICAgICAgV2F0Y2hkb2cuUHNzUmVxdWVzdG9yIHJlcTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIFByb2Nlc3NSZWNvcmQgY2FsbGVyQXBwOwotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGlmIChjYWxsZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhbGxlckFwcCA9IGdldFJlY29yZEZvckFwcExvY2tlZChjYWxsZXIpOwotICAgICAgICAgICAgaWYgKGNhbGxlckFwcCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FsbGVyQXBwLmxhc3RQc3MgPSBwc3M7Ci0gICAgICAgICAgICByZXEgPSBjYWxsZXJBcHA7Ci0gICAgICAgICAgICBuYW1lID0gY2FsbGVyQXBwLnByb2Nlc3NOYW1lOwotICAgICAgICB9Ci0gICAgICAgIFdhdGNoZG9nLmdldEluc3RhbmNlKCkucmVwb3J0UHNzKHJlcSwgbmFtZSwgcHNzKTsKLSAgICAgICAgaWYgKCFjYWxsZXJBcHAucGVyc2lzdGVudCkgewotICAgICAgICAgICAgcmVtb3ZlUmVxdWVzdGVkUHNzKGNhbGxlckFwcCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgcmVxdWVzdFBzcyhSdW5uYWJsZSBjb21wbGV0ZUNhbGxiYWNrKSB7Ci0gICAgICAgIEFycmF5TGlzdDxQcm9jZXNzUmVjb3JkPiBwcm9jczsKLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBtUmVxdWVzdFBzc0NhbGxiYWNrID0gY29tcGxldGVDYWxsYmFjazsKLSAgICAgICAgICAgIG1SZXF1ZXN0UHNzTGlzdC5jbGVhcigpOwotICAgICAgICAgICAgZm9yIChpbnQgaT1tTHJ1UHJvY2Vzc2VzLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBQcm9jZXNzUmVjb3JkIHByb2MgPSBtTHJ1UHJvY2Vzc2VzLmdldChpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXByb2MucGVyc2lzdGVudCkgewotICAgICAgICAgICAgICAgICAgICBtUmVxdWVzdFBzc0xpc3QuYWRkKHByb2MpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByb2NzID0gbmV3IEFycmF5TGlzdDxQcm9jZXNzUmVjb3JkPihtUmVxdWVzdFBzc0xpc3QpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpbnQgb2xkUHJpID0gUHJvY2Vzcy5nZXRUaHJlYWRQcmlvcml0eShQcm9jZXNzLm15VGlkKCkpOyAKLSAgICAgICAgUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eShQcm9jZXNzLlRIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EKTsKLSAgICAgICAgZm9yIChpbnQgaT1wcm9jcy5zaXplKCktMTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICBQcm9jZXNzUmVjb3JkIHByb2MgPSBwcm9jcy5nZXQoaSk7Ci0gICAgICAgICAgICBwcm9jLmxhc3RQc3MgPSAwOwotICAgICAgICAgICAgcHJvYy5yZXF1ZXN0UHNzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eShvbGRQcmkpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHJlbW92ZVJlcXVlc3RlZFBzcyhQcm9jZXNzUmVjb3JkIHByb2MpIHsKLSAgICAgICAgUnVubmFibGUgY2FsbGJhY2sgPSBudWxsOwotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGlmIChtUmVxdWVzdFBzc0xpc3QucmVtb3ZlKHByb2MpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1SZXF1ZXN0UHNzTGlzdC5zaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IG1SZXF1ZXN0UHNzQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgICAgIG1SZXF1ZXN0UHNzQ2FsbGJhY2sgPSBudWxsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrLnJ1bigpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIGNvbGxlY3RQc3MoV2F0Y2hkb2cuUHNzU3RhdHMgc3RhdHMpIHsKLSAgICAgICAgc3RhdHMubUVtcHR5UHNzID0gMDsKLSAgICAgICAgc3RhdHMubUVtcHR5Q291bnQgPSAwOwotICAgICAgICBzdGF0cy5tQmFja2dyb3VuZFBzcyA9IDA7Ci0gICAgICAgIHN0YXRzLm1CYWNrZ3JvdW5kQ291bnQgPSAwOwotICAgICAgICBzdGF0cy5tU2VydmljZVBzcyA9IDA7Ci0gICAgICAgIHN0YXRzLm1TZXJ2aWNlQ291bnQgPSAwOwotICAgICAgICBzdGF0cy5tVmlzaWJsZVBzcyA9IDA7Ci0gICAgICAgIHN0YXRzLm1WaXNpYmxlQ291bnQgPSAwOwotICAgICAgICBzdGF0cy5tRm9yZWdyb3VuZFBzcyA9IDA7Ci0gICAgICAgIHN0YXRzLm1Gb3JlZ3JvdW5kQ291bnQgPSAwOwotICAgICAgICBzdGF0cy5tTm9Qc3NDb3VudCA9IDA7Ci0gICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICBpbnQgTlBEID0gbVByb2NEZWF0aHMubGVuZ3RoIDwgc3RhdHMubVByb2NEZWF0aHMubGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgID8gbVByb2NEZWF0aHMubGVuZ3RoIDogc3RhdHMubVByb2NEZWF0aHMubGVuZ3RoOwotICAgICAgICAgICAgaW50IGFnZ3IgPSAwOwotICAgICAgICAgICAgZm9yIChpPTA7IGk8TlBEOyBpKyspIHsKLSAgICAgICAgICAgICAgICBhZ2dyICs9IG1Qcm9jRGVhdGhzW2ldOwotICAgICAgICAgICAgICAgIHN0YXRzLm1Qcm9jRGVhdGhzW2ldID0gYWdncjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlIChpPHN0YXRzLm1Qcm9jRGVhdGhzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHN0YXRzLm1Qcm9jRGVhdGhzW2ldID0gMDsKLSAgICAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoaT1tTHJ1UHJvY2Vzc2VzLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBQcm9jZXNzUmVjb3JkIHByb2MgPSBtTHJ1UHJvY2Vzc2VzLmdldChpKTsKLSAgICAgICAgICAgICAgICBpZiAocHJvYy5wZXJzaXN0ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJQcm9jICIgKyBwcm9jICsgIjogcHNzPSIgKyBwcm9jLmxhc3RQc3MpOwotICAgICAgICAgICAgICAgIGlmIChwcm9jLmxhc3RQc3MgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBzdGF0cy5tTm9Qc3NDb3VudCsrOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHByb2Muc2V0QWRqID49IEhJRERFTl9BUFBfTUlOX0FESikgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvYy5lbXB0eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHMubUVtcHR5UHNzICs9IHByb2MubGFzdFBzczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLm1FbXB0eUNvdW50Kys7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy5tQmFja2dyb3VuZFBzcyArPSBwcm9jLmxhc3RQc3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy5tQmFja2dyb3VuZENvdW50Kys7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb2Muc2V0QWRqID49IFZJU0lCTEVfQVBQX0FESikgewotICAgICAgICAgICAgICAgICAgICBzdGF0cy5tVmlzaWJsZVBzcyArPSBwcm9jLmxhc3RQc3M7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzLm1WaXNpYmxlQ291bnQrKzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzdGF0cy5tRm9yZWdyb3VuZFBzcyArPSBwcm9jLmxhc3RQc3M7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzLm1Gb3JlZ3JvdW5kQ291bnQrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCiAgICAgcHVibGljIGZpbmFsIHZvaWQgc3RhcnRSdW5uaW5nKFN0cmluZyBwa2csIFN0cmluZyBjbHMsIFN0cmluZyBhY3Rpb24sCiAgICAgICAgICAgICBTdHJpbmcgZGF0YSkgewogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewpAQCAtODc0NCw3ICs1NzMyLDcgQEAKICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX1BSRV9CT09UX0NPTVBMRVRFRCk7CiAgICAgICAgICAgICAgICAgTGlzdDxSZXNvbHZlSW5mbz4gcmlzID0gbnVsbDsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICByaXMgPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLnF1ZXJ5SW50ZW50UmVjZWl2ZXJzKAorICAgICAgICAgICAgICAgICAgICByaXMgPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkucXVlcnlJbnRlbnRSZWNlaXZlcnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudCwgbnVsbCwgMCk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICB9CkBAIC04ODYzLDcgKzU4NTEsNyBAQAogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKICAgICAgICAgICAgIGlmIChtRmFjdG9yeVRlc3QgIT0gU3lzdGVtU2VydmVyLkZBQ1RPUllfVEVTVF9MT1dfTEVWRUwpIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBMaXN0IGFwcHMgPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLgorICAgICAgICAgICAgICAgICAgICBMaXN0IGFwcHMgPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkuCiAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQZXJzaXN0ZW50QXBwbGljYXRpb25zKFNUT0NLX1BNX0ZMQUdTKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcHMgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IE4gPSBhcHBzLnNpemUoKTsKQEAgLTg4ODYsNyArNTg3NCw3IEBACiAgICAgICAgICAgICBtQm9vdGluZyA9IHRydWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgaWYgKEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkuaGFzU3lzdGVtVWlkRXJyb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLmhhc1N5c3RlbVVpZEVycm9ycygpKSB7CiAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4oKTsKICAgICAgICAgICAgICAgICAgICAgbXNnLndoYXQgPSBTSE9XX1VJRF9FUlJPUl9NU0c7CiAgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7CkBAIC04ODk0LDcgKzU4ODIsNyBAQAogICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICBtTWFpblN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04OTgyLDEyICs1OTcwLDEyIEBACiAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9QUk9DRVNTX0NSQVNIRURfVE9PX01VQ0gsCiAgICAgICAgICAgICAgICAgICAgIGFwcC5pbmZvLnByb2Nlc3NOYW1lLCBhcHAuaW5mby51aWQpOwogICAgICAgICAgICAga2lsbFNlcnZpY2VzTG9ja2VkKGFwcCwgZmFsc2UpOwotICAgICAgICAgICAgZm9yIChpbnQgaT1tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgZm9yIChpbnQgaT1tTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGkpOwogICAgICAgICAgICAgICAgIGlmIChyLmFwcCA9PSBhcHApIHsKICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIiAgRm9yY2UgZmluaXNoaW5nIGFjdGl2aXR5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgImNyYXNoZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgci5zdGFjay5maW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJjcmFzaGVkIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFhcHAucGVyc2lzdGVudCkgewpAQCAtOTAwNSwyOCArNTk5MywyOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtTWFpblN0YWNrLnRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKICAgICAgICAgICAgIGlmIChyLmFwcCA9PSBhcHApIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdG9wIHJ1bm5pbmcgYWN0aXZpdHkgaXMgZnJvbSB0aGlzIGNyYXNoaW5nCiAgICAgICAgICAgICAgICAgLy8gcHJvY2VzcywgdGhlbiB0ZXJtaW5hdGUgaXQgdG8gYXZvaWQgZ2V0dGluZyBpbiBhIGxvb3AuCiAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIiAgRm9yY2UgZmluaXNoaW5nIGFjdGl2aXR5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHIpOwotICAgICAgICAgICAgICAgIGZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGluZGV4LAorICAgICAgICAgICAgICAgIGludCBpbmRleCA9IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHIpOworICAgICAgICAgICAgICAgIHIuc3RhY2suZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJjcmFzaGVkIik7CiAgICAgICAgICAgICAgICAgLy8gQWxzbyB0ZXJtaW5hdGUgYW4gYWN0aXZpdGllcyBiZWxvdyBpdCB0aGF0IGFyZW4ndCB5ZXQKICAgICAgICAgICAgICAgICAvLyBzdG9wcGVkLCB0byBhdm9pZCBhIHNpdHVhdGlvbiB3aGVyZSBvbmUgd2lsbCBnZXQKICAgICAgICAgICAgICAgICAvLyByZS1zdGFydCBvdXIgY3Jhc2hpbmcgYWN0aXZpdHkgb25jZSBpdCBnZXRzIHJlc3VtZWQgYWdhaW4uCiAgICAgICAgICAgICAgICAgaW5kZXgtLTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgICAgICByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuUkVTVU1FRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5QQVVTSU5HCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlBBVVNFRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyLmlzSG9tZUFjdGl2aXR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIiAgRm9yY2UgZmluaXNoaW5nIGFjdGl2aXR5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5zdGFjay5maW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgImNyYXNoZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQpAQCAtOTAzOCw5ICs2MDI2LDkgQEAKICAgICAgICAgaWYgKGFwcC5zZXJ2aWNlcy5zaXplKCkgIT0gMCkgewogICAgICAgICAgICAgLy8gQW55IHNlcnZpY2VzIHJ1bm5pbmcgaW4gdGhlIGFwcGxpY2F0aW9uIG5lZWQgdG8gYmUgcGxhY2VkCiAgICAgICAgICAgICAvLyBiYWNrIGluIHRoZSBwZW5kaW5nIGxpc3QuCi0gICAgICAgICAgICBJdGVyYXRvciBpdCA9IGFwcC5zZXJ2aWNlcy5pdGVyYXRvcigpOworICAgICAgICAgICAgSXRlcmF0b3I8U2VydmljZVJlY29yZD4gaXQgPSBhcHAuc2VydmljZXMuaXRlcmF0b3IoKTsKICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBTZXJ2aWNlUmVjb3JkIHNyID0gKFNlcnZpY2VSZWNvcmQpaXQubmV4dCgpOworICAgICAgICAgICAgICAgIFNlcnZpY2VSZWNvcmQgc3IgPSBpdC5uZXh0KCk7CiAgICAgICAgICAgICAgICAgc3IuY3Jhc2hDb3VudCsrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MTAzLDYgKzYwOTEsNTYgQEAKICAgICAgICAgY3Jhc2hBcHBsaWNhdGlvbihyLCBjcmFzaEluZm8pOwogICAgIH0KIAorICAgIHB1YmxpYyB2b2lkIGhhbmRsZUFwcGxpY2F0aW9uU3RyaWN0TW9kZVZpb2xhdGlvbigKKyAgICAgICAgSUJpbmRlciBhcHAsIGludCB2aW9sYXRpb25NYXNrLCBBcHBsaWNhdGlvbkVycm9yUmVwb3J0LkNyYXNoSW5mbyBjcmFzaEluZm8pIHsKKyAgICAgICAgUHJvY2Vzc1JlY29yZCByID0gZmluZEFwcFByb2Nlc3MoYXBwKTsKKworICAgICAgICBpZiAoKHZpb2xhdGlvbk1hc2sgJiBTdHJpY3RNb2RlLlBFTkFMVFlfRFJPUEJPWCkgIT0gMCkgeworICAgICAgICAgICAgSW50ZWdlciBzdGFja0ZpbmdlcnByaW50ID0gY3Jhc2hJbmZvLnN0YWNrVHJhY2UuaGFzaENvZGUoKTsKKyAgICAgICAgICAgIGJvb2xlYW4gbG9nSXQgPSB0cnVlOworICAgICAgICAgICAgc3luY2hyb25pemVkIChtQWxyZWFkeUxvZ2dlZFZpb2xhdGVkU3RhY2tzKSB7CisgICAgICAgICAgICAgICAgaWYgKG1BbHJlYWR5TG9nZ2VkVmlvbGF0ZWRTdGFja3MuY29udGFpbnMoc3RhY2tGaW5nZXJwcmludCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nSXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogc3ViLXNhbXBsZSBpbnRvIEV2ZW50TG9nIGZvciB0aGVzZSwgd2l0aAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY3Jhc2hJbmZvLmR1cmF0aW9uTWlsbGlzPyAgVGhlbiB3ZSdkIGdldAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVsYXRpdmUgcGFpbiBudW1iZXJzLCB3aXRob3V0IGxvZ2dpbmcgYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzdGFjayB0cmFjZXMgcmVwZWF0ZWRseS4gIFdlJ2Qgd2FudCB0byBkbworICAgICAgICAgICAgICAgICAgICAvLyBsaWtld2lzZSBpbiB0aGUgY2xpZW50IGNvZGUsIHdoaWNoIGFsc28gZG9lcworICAgICAgICAgICAgICAgICAgICAvLyBkdXAgc3VwcHJlc3Npb24sIGJlZm9yZSB0aGUgQmluZGVyIGNhbGwuCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1BbHJlYWR5TG9nZ2VkVmlvbGF0ZWRTdGFja3Muc2l6ZSgpID49IE1BWF9EVVBfU1VQUFJFU1NFRF9TVEFDS1MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1BbHJlYWR5TG9nZ2VkVmlvbGF0ZWRTdGFja3MuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtQWxyZWFkeUxvZ2dlZFZpb2xhdGVkU3RhY2tzLmFkZChzdGFja0ZpbmdlcnByaW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobG9nSXQpIHsKKyAgICAgICAgICAgICAgICBhZGRFcnJvclRvRHJvcEJveCgic3RyaWN0bW9kZSIsIHIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIGNyYXNoSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoKHZpb2xhdGlvbk1hc2sgJiBTdHJpY3RNb2RlLlBFTkFMVFlfRElBTE9HKSAhPSAwKSB7CisgICAgICAgICAgICBBcHBFcnJvclJlc3VsdCByZXN1bHQgPSBuZXcgQXBwRXJyb3JSZXN1bHQoKTsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisKKyAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IE1lc3NhZ2Uub2J0YWluKCk7CisgICAgICAgICAgICAgICAgbXNnLndoYXQgPSBTSE9XX1NUUklDVF9NT0RFX1ZJT0xBVElPTl9NU0c7CisgICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4gZGF0YSA9IG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpOworICAgICAgICAgICAgICAgIGRhdGEucHV0KCJyZXN1bHQiLCByZXN1bHQpOworICAgICAgICAgICAgICAgIGRhdGEucHV0KCJhcHAiLCByKTsKKyAgICAgICAgICAgICAgICBkYXRhLnB1dCgidmlvbGF0aW9uTWFzayIsIHZpb2xhdGlvbk1hc2spOworICAgICAgICAgICAgICAgIGRhdGEucHV0KCJjcmFzaEluZm8iLCBjcmFzaEluZm8pOworICAgICAgICAgICAgICAgIG1zZy5vYmogPSBkYXRhOworICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7CisKKyAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IHJlcyA9IHJlc3VsdC5nZXQoKTsKKyAgICAgICAgICAgIExvZy53KFRBRywgImhhbmRsZUFwcGxpY2F0aW9uU3RyaWN0TW9kZVZpb2xhdGlvbjsgcmVzPSIgKyByZXMpOworICAgICAgICB9CisgICAgfQorCiAgICAgLyoqCiAgICAgICogVXNlZCBieSB7QGxpbmsgTG9nfSB2aWEge0BsaW5rIGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlJ1bnRpbWVJbml0fSB0byByZXBvcnQgc2VyaW91cyBlcnJvcnMuCiAgICAgICogQHBhcmFtIGFwcCBvYmplY3Qgb2YgdGhlIGNyYXNoaW5nIGFwcCwgbnVsbCBmb3IgdGhlIHN5c3RlbSBzZXJ2ZXIKQEAgLTkxNjcsNyArNjIwNSw3IEBACiAgICAgICogQHBhcmFtIGNyYXNoSW5mbyBnaXZpbmcgYW4gYXBwbGljYXRpb24gc3RhY2sgdHJhY2UsIG51bGwgaWYgYWJzZW50CiAgICAgICovCiAgICAgcHVibGljIHZvaWQgYWRkRXJyb3JUb0Ryb3BCb3goU3RyaW5nIGV2ZW50VHlwZSwKLSAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcHJvY2VzcywgSGlzdG9yeVJlY29yZCBhY3Rpdml0eSwgSGlzdG9yeVJlY29yZCBwYXJlbnQsIFN0cmluZyBzdWJqZWN0LAorICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwcm9jZXNzLCBBY3Rpdml0eVJlY29yZCBhY3Rpdml0eSwgQWN0aXZpdHlSZWNvcmQgcGFyZW50LCBTdHJpbmcgc3ViamVjdCwKICAgICAgICAgICAgIGZpbmFsIFN0cmluZyByZXBvcnQsIGZpbmFsIEZpbGUgbG9nRmlsZSwKICAgICAgICAgICAgIGZpbmFsIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgewogICAgICAgICAvLyBOT1RFIC0tIHRoaXMgbXVzdCBuZXZlciBhY3F1aXJlIHRoZSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIGxvY2ssCkBAIC05MTk3LDcgKzYyMzUsNyBAQAogICAgICAgICB9CiAgICAgICAgIGlmIChwcm9jZXNzICE9IG51bGwpIHsKICAgICAgICAgICAgIGludCBmbGFncyA9IHByb2Nlc3MuaW5mby5mbGFnczsKLSAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgICAgICBzYi5hcHBlbmQoIkZsYWdzOiAweCIpLmFwcGVuZChJbnRlZ2VyLnRvU3RyaW5nKGZsYWdzLCAxNikpLmFwcGVuZCgiXG4iKTsKICAgICAgICAgICAgIGZvciAoU3RyaW5nIHBrZyA6IHByb2Nlc3MucGtnTGlzdCkgewogICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiUGFja2FnZTogIikuYXBwZW5kKHBrZyk7CkBAIC05MjI4LDYgKzYyNjYsOSBAQAogICAgICAgICAgICAgc2IuYXBwZW5kKCJTdWJqZWN0OiAiKS5hcHBlbmQoc3ViamVjdCkuYXBwZW5kKCJcbiIpOwogICAgICAgICB9CiAgICAgICAgIHNiLmFwcGVuZCgiQnVpbGQ6ICIpLmFwcGVuZChCdWlsZC5GSU5HRVJQUklOVCkuYXBwZW5kKCJcbiIpOworICAgICAgICBpZiAoY3Jhc2hJbmZvICE9IG51bGwgJiYgY3Jhc2hJbmZvLmR1cmF0aW9uTWlsbGlzICE9IC0xKSB7CisgICAgICAgICAgICBzYi5hcHBlbmQoIkR1cmF0aW9uLU1pbGxpczogIikuYXBwZW5kKGNyYXNoSW5mby5kdXJhdGlvbk1pbGxpcykuYXBwZW5kKCJcbiIpOworICAgICAgICB9CiAgICAgICAgIHNiLmFwcGVuZCgiXG4iKTsKIAogICAgICAgICAvLyBEbyB0aGUgcmVzdCBpbiBhIHdvcmtlciB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIGNhbGxlciBvbiBJL08KQEAgLTk0NzIsNiArNjUxMyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbyhhcHAucHJvY2Vzc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5waWQsIGFwcC5nZXRQYWNrYWdlTGlzdCgpKTsKICAgICAgICAgICAgICAgICAgICAgY3VyckFwcC51aWQgPSBhcHAuaW5mby51aWQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChtSGVhdnlXZWlnaHRQcm9jZXNzID09IGFwcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3VyckFwcC5mbGFncyB8PSBBY3Rpdml0eU1hbmFnZXIuUnVubmluZ0FwcFByb2Nlc3NJbmZvLkZMQUdfSEVBVllfV0VJR0hUOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGludCBhZGogPSBhcHAuY3VyQWRqOwogICAgICAgICAgICAgICAgICAgICBpZiAoYWRqID49IEVNUFRZX0FQUF9BREopIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJBcHAuaW1wb3J0YW5jZSA9IEFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8uSU1QT1JUQU5DRV9FTVBUWTsKQEAgLTk0ODMsNiArNjUyNywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY3VyckFwcC5scnUgPSAwOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFkaiA+PSBTRUNPTkRBUllfU0VSVkVSX0FESikgewogICAgICAgICAgICAgICAgICAgICAgICAgY3VyckFwcC5pbXBvcnRhbmNlID0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mby5JTVBPUlRBTkNFX1NFUlZJQ0U7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWRqID49IEhFQVZZX1dFSUdIVF9BUFBfQURKKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyQXBwLmltcG9ydGFuY2UgPSBBY3Rpdml0eU1hbmFnZXIuUnVubmluZ0FwcFByb2Nlc3NJbmZvLklNUE9SVEFOQ0VfSEVBVllfV0VJR0hUOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFkaiA+PSBQRVJDRVBUSUJMRV9BUFBfQURKKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyQXBwLmltcG9ydGFuY2UgPSBBY3Rpdml0eU1hbmFnZXIuUnVubmluZ0FwcFByb2Nlc3NJbmZvLklNUE9SVEFOQ0VfUEVSQ0VQVElCTEU7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWRqID49IFZJU0lCTEVfQVBQX0FESikgewogICAgICAgICAgICAgICAgICAgICAgICAgY3VyckFwcC5pbXBvcnRhbmNlID0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mby5JTVBPUlRBTkNFX1ZJU0lCTEU7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC05NDkxLDggKzY1MzksOCBAQAogICAgICAgICAgICAgICAgICAgICBjdXJyQXBwLmltcG9ydGFuY2VSZWFzb25Db2RlID0gYXBwLmFkalR5cGVDb2RlOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXBwLmFkalNvdXJjZSBpbnN0YW5jZW9mIFByb2Nlc3NSZWNvcmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJBcHAuaW1wb3J0YW5jZVJlYXNvblBpZCA9ICgoUHJvY2Vzc1JlY29yZClhcHAuYWRqU291cmNlKS5waWQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwLmFkalNvdXJjZSBpbnN0YW5jZW9mIEhpc3RvcnlSZWNvcmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKWFwcC5hZGpTb3VyY2U7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwLmFkalNvdXJjZSBpbnN0YW5jZW9mIEFjdGl2aXR5UmVjb3JkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKWFwcC5hZGpTb3VyY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5hcHAgIT0gbnVsbCkgY3VyckFwcC5pbXBvcnRhbmNlUmVhc29uUGlkID0gci5hcHAucGlkOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChhcHAuYWRqVGFyZ2V0IGluc3RhbmNlb2YgQ29tcG9uZW50TmFtZSkgewpAQCAtOTUyMiw3ICs2NTcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgICAgICBmb3IgKFN0cmluZyBwa2cgOiBleHRMaXN0KSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvIGluZm8gPSBwbS5nZXRBcHBsaWNhdGlvbkluZm8ocGtnLCAwKTsKQEAgLTk2NzEsMzEgKzY3MTksMzEgQEAKICAgICAgICAgaWYgKG5lZWRIZWFkZXIpIHsKICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgQWN0aXZpdHkgc3RhY2s6Iik7CiAgICAgICAgIH0KLSAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtSGlzdG9yeSwgIiAgIiwgIkhpc3QiLCB0cnVlKTsKKyAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtTWFpblN0YWNrLm1IaXN0b3J5LCAiICAiLCAiSGlzdCIsIHRydWUpOwogICAgICAgICBwdy5wcmludGxuKCIgIik7CiAgICAgICAgIHB3LnByaW50bG4oIiAgUnVubmluZyBhY3Rpdml0aWVzIChtb3N0IHJlY2VudCBmaXJzdCk6Iik7Ci0gICAgICAgIGR1bXBIaXN0b3J5TGlzdChwdywgbUxSVUFjdGl2aXRpZXMsICIgICIsICJSdW4iLCBmYWxzZSk7Ci0gICAgICAgIGlmIChtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnNpemUoKSA+IDApIHsKKyAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtTWFpblN0YWNrLm1MUlVBY3Rpdml0aWVzLCAiICAiLCAiUnVuIiwgZmFsc2UpOworICAgICAgICBpZiAobU1haW5TdGFjay5tV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgQWN0aXZpdGllcyB3YWl0aW5nIGZvciBhbm90aGVyIHRvIGJlY29tZSB2aXNpYmxlOiIpOwotICAgICAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLCAiICAiLCAiV2FpdCIsIGZhbHNlKTsKKyAgICAgICAgICAgIGR1bXBIaXN0b3J5TGlzdChwdywgbU1haW5TdGFjay5tV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLCAiICAiLCAiV2FpdCIsIGZhbHNlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobVN0b3BwaW5nQWN0aXZpdGllcy5zaXplKCkgPiAwKSB7CisgICAgICAgIGlmIChtTWFpblN0YWNrLm1TdG9wcGluZ0FjdGl2aXRpZXMuc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgcHcucHJpbnRsbigiICIpOwogICAgICAgICAgICAgcHcucHJpbnRsbigiICBBY3Rpdml0aWVzIHdhaXRpbmcgdG8gc3RvcDoiKTsKLSAgICAgICAgICAgIGR1bXBIaXN0b3J5TGlzdChwdywgbVN0b3BwaW5nQWN0aXZpdGllcywgIiAgIiwgIlN0b3AiLCBmYWxzZSk7CisgICAgICAgICAgICBkdW1wSGlzdG9yeUxpc3QocHcsIG1NYWluU3RhY2subVN0b3BwaW5nQWN0aXZpdGllcywgIiAgIiwgIlN0b3AiLCBmYWxzZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1GaW5pc2hpbmdBY3Rpdml0aWVzLnNpemUoKSA+IDApIHsKKyAgICAgICAgaWYgKG1NYWluU3RhY2subUZpbmlzaGluZ0FjdGl2aXRpZXMuc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgcHcucHJpbnRsbigiICIpOwogICAgICAgICAgICAgcHcucHJpbnRsbigiICBBY3Rpdml0aWVzIHdhaXRpbmcgdG8gZmluaXNoOiIpOwotICAgICAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtRmluaXNoaW5nQWN0aXZpdGllcywgIiAgIiwgIkZpbiIsIGZhbHNlKTsKKyAgICAgICAgICAgIGR1bXBIaXN0b3J5TGlzdChwdywgbU1haW5TdGFjay5tRmluaXNoaW5nQWN0aXZpdGllcywgIiAgIiwgIkZpbiIsIGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKLSAgICAgICAgcHcucHJpbnRsbigiICBtUGF1c2luZ0FjdGl2aXR5OiAiICsgbVBhdXNpbmdBY3Rpdml0eSk7Ci0gICAgICAgIHB3LnByaW50bG4oIiAgbVJlc3VtZWRBY3Rpdml0eTogIiArIG1SZXN1bWVkQWN0aXZpdHkpOworICAgICAgICBwdy5wcmludGxuKCIgIG1QYXVzaW5nQWN0aXZpdHk6ICIgKyBtTWFpblN0YWNrLm1QYXVzaW5nQWN0aXZpdHkpOworICAgICAgICBwdy5wcmludGxuKCIgIG1SZXN1bWVkQWN0aXZpdHk6ICIgKyBtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkpOwogICAgICAgICBwdy5wcmludGxuKCIgIG1Gb2N1c2VkQWN0aXZpdHk6ICIgKyBtRm9jdXNlZEFjdGl2aXR5KTsKLSAgICAgICAgcHcucHJpbnRsbigiICBtTGFzdFBhdXNlZEFjdGl2aXR5OiAiICsgbUxhc3RQYXVzZWRBY3Rpdml0eSk7CisgICAgICAgIHB3LnByaW50bG4oIiAgbUxhc3RQYXVzZWRBY3Rpdml0eTogIiArIG1NYWluU3RhY2subUxhc3RQYXVzZWRBY3Rpdml0eSk7CiAKICAgICAgICAgaWYgKGR1bXBBbGwgJiYgbVJlY2VudFRhc2tzLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKQEAgLTk3NDYsNyArNjc5NCw3IEBACiAgICAgICAgICAgICBuZWVkU2VwID0gdHJ1ZTsKICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgUnVubmluZyBwcm9jZXNzZXMgKG1vc3QgcmVjZW50IGZpcnN0KToiKTsKICAgICAgICAgICAgIGR1bXBQcm9jZXNzTGlzdChwdywgdGhpcywgbUxydVByb2Nlc3NlcywgIiAgICAiLAotICAgICAgICAgICAgICAgICAgICAiQXBwICIsICJQRVJTIiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICJQcm9jIiwgIlBFUlMiLCB0cnVlKTsKICAgICAgICAgICAgIG5lZWRTZXAgPSB0cnVlOwogICAgICAgICB9CiAKQEAgLTk4NjAsOCArNjkwOCwxMSBAQAogCiAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKICAgICAgICAgcHcucHJpbnRsbigiICBtSG9tZVByb2Nlc3M6ICIgKyBtSG9tZVByb2Nlc3MpOworICAgICAgICBpZiAobUhlYXZ5V2VpZ2h0UHJvY2VzcyAhPSBudWxsKSB7CisgICAgICAgICAgICBwdy5wcmludGxuKCIgIG1IZWF2eVdlaWdodFByb2Nlc3M6ICIgKyBtSGVhdnlXZWlnaHRQcm9jZXNzKTsKKyAgICAgICAgfQogICAgICAgICBwdy5wcmludGxuKCIgIG1Db25maWd1cmF0aW9uOiAiICsgbUNvbmZpZ3VyYXRpb24pOwotICAgICAgICBwdy5wcmludGxuKCIgIG1Db25maWdXaWxsQ2hhbmdlOiAiICsgbUNvbmZpZ1dpbGxDaGFuZ2UpOworICAgICAgICBwdy5wcmludGxuKCIgIG1Db25maWdXaWxsQ2hhbmdlOiAiICsgbU1haW5TdGFjay5tQ29uZmlnV2lsbENoYW5nZSk7CiAgICAgICAgIHB3LnByaW50bG4oIiAgbVNsZWVwaW5nPSIgKyBtU2xlZXBpbmcgKyAiIG1TaHV0dGluZ0Rvd249IiArIG1TaHV0dGluZ0Rvd24pOwogICAgICAgICBpZiAobURlYnVnQXBwICE9IG51bGwgfHwgbU9yaWdEZWJ1Z0FwcCAhPSBudWxsIHx8IG1EZWJ1Z1RyYW5zaWVudAogICAgICAgICAgICAgICAgIHx8IG1PcmlnV2FpdEZvckRlYnVnZ2VyKSB7CkBAIC05ODgwLDggKzY5MzEsOCBAQAogICAgICAgICAgICAgICAgICAgICArICIgbUJvb3Rpbmc9IiArIG1Cb290aW5nCiAgICAgICAgICAgICAgICAgICAgICsgIiBtQm9vdGVkPSIgKyBtQm9vdGVkCiAgICAgICAgICAgICAgICAgICAgICsgIiBtRmFjdG9yeVRlc3Q9IiArIG1GYWN0b3J5VGVzdCk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1Hb2luZ1RvU2xlZXA9IiArIG1Hb2luZ1RvU2xlZXApOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtTGF1bmNoaW5nQWN0aXZpdHk9IiArIG1MYXVuY2hpbmdBY3Rpdml0eSk7CisgICAgICAgICAgICBwdy5wcmludGxuKCIgIG1Hb2luZ1RvU2xlZXA9IiArIG1NYWluU3RhY2subUdvaW5nVG9TbGVlcCk7CisgICAgICAgICAgICBwdy5wcmludGxuKCIgIG1MYXVuY2hpbmdBY3Rpdml0eT0iICsgbU1haW5TdGFjay5tTGF1bmNoaW5nQWN0aXZpdHkpOwogICAgICAgICAgICAgcHcucHJpbnRsbigiICBtQWRqU2VxPSIgKyBtQWRqU2VxICsgIiBtTHJ1U2VxPSIgKyBtTHJ1U2VxKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEwMTIxLDEwICs3MTcyLDExIEBACiAgICAgICAgICAgICBpZiAobVByb3ZpZGVyc0J5Q2xhc3Muc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgICAgIGlmIChuZWVkU2VwKSBwdy5wcmludGxuKCIgIik7CiAgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICBQdWJsaXNoZWQgY29udGVudCBwcm92aWRlcnMgKGJ5IGNsYXNzKToiKTsKLSAgICAgICAgICAgICAgICBJdGVyYXRvciBpdCA9IG1Qcm92aWRlcnNCeUNsYXNzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICBJdGVyYXRvcjxNYXAuRW50cnk8U3RyaW5nLCBDb250ZW50UHJvdmlkZXJSZWNvcmQ+PiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgPSBtUHJvdmlkZXJzQnlDbGFzcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgICAgICAgICBNYXAuRW50cnkgZSA9IChNYXAuRW50cnkpaXQubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgciA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpZS5nZXRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBNYXAuRW50cnk8U3RyaW5nLCBDb250ZW50UHJvdmlkZXJSZWNvcmQ+IGUgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCByID0gZS5nZXRWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiICAqICIpOyBwdy5wcmludGxuKHIpOwogICAgICAgICAgICAgICAgICAgICByLmR1bXAocHcsICIgICAgIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTAxMzQsMTAgKzcxODYsMTEgQEAKICAgICAgICAgICAgIGlmIChtUHJvdmlkZXJzQnlOYW1lLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgIik7CiAgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICBBdXRob3JpdHkgdG8gcHJvdmlkZXIgbWFwcGluZ3M6Iik7Ci0gICAgICAgICAgICAgICAgSXRlcmF0b3IgaXQgPSBtUHJvdmlkZXJzQnlOYW1lLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICBJdGVyYXRvcjxNYXAuRW50cnk8U3RyaW5nLCBDb250ZW50UHJvdmlkZXJSZWNvcmQ+PiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgPSBtUHJvdmlkZXJzQnlOYW1lLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKICAgICAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE1hcC5FbnRyeSBlID0gKE1hcC5FbnRyeSlpdC5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCByID0gKENvbnRlbnRQcm92aWRlclJlY29yZCllLmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIE1hcC5FbnRyeTxTdHJpbmcsIENvbnRlbnRQcm92aWRlclJlY29yZD4gZSA9IGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIHIgPSBlLmdldFZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgICIpOyBwdy5wcmludChlLmdldEtleSgpKTsgcHcucHJpbnQoIjogIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbihyKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDIwNCw3ICs3MjU3LDcgQEAKICAgICAgICAgICAgIFN0cmluZyBwcmVmaXgsIFN0cmluZyBsYWJlbCwgYm9vbGVhbiBjb21wbGV0ZSkgewogICAgICAgICBUYXNrUmVjb3JkIGxhc3RUYXNrID0gbnVsbDsKICAgICAgICAgZm9yIChpbnQgaT1saXN0LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKWxpc3QuZ2V0KGkpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZClsaXN0LmdldChpKTsKICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZnVsbCA9IGNvbXBsZXRlIHx8ICFyLmluSGlzdG9yeTsKICAgICAgICAgICAgIGlmIChsYXN0VGFzayAhPSByLnRhc2spIHsKICAgICAgICAgICAgICAgICBsYXN0VGFzayA9IHIudGFzazsKQEAgLTEwMjM3LDcgKzcyOTAsOCBAQAogICAgICAgICAgICAgU3RyaW5nIHByZWZpeCwgU3RyaW5nIG5vcm1hbExhYmVsLCBTdHJpbmcgcGVyc2lzdGVudExhYmVsLAogICAgICAgICAgICAgYm9vbGVhbiBpbmNsT29tQWRqKSB7CiAgICAgICAgIGludCBudW1QZXJzID0gMDsKLSAgICAgICAgZm9yIChpbnQgaT1saXN0LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgZmluYWwgaW50IE4gPSBsaXN0LnNpemUoKS0xOworICAgICAgICBmb3IgKGludCBpPU47IGk+PTA7IGktLSkgewogICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCByID0gKFByb2Nlc3NSZWNvcmQpbGlzdC5nZXQoaSk7CiAgICAgICAgICAgICBpZiAoZmFsc2UpIHsKICAgICAgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArIChyLnBlcnNpc3RlbnQgPyBwZXJzaXN0ZW50TGFiZWwgOiBub3JtYWxMYWJlbCkKQEAgLTEwMjU1LDYgKzczMDksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgb29tQWRqID0gYnVpbGRPb21UYWcoInN2YyIsICIgICIsIHIuc2V0QWRqLCBTRUNPTkRBUllfU0VSVkVSX0FESik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnNldEFkaiA+PSBCQUNLVVBfQVBQX0FESikgewogICAgICAgICAgICAgICAgICAgICBvb21BZGogPSBidWlsZE9vbVRhZygiYmNrdXAiLCBudWxsLCByLnNldEFkaiwgQkFDS1VQX0FQUF9BREopOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5zZXRBZGogPj0gSEVBVllfV0VJR0hUX0FQUF9BREopIHsKKyAgICAgICAgICAgICAgICAgICAgb29tQWRqID0gYnVpbGRPb21UYWcoImh2eSAgIiwgbnVsbCwgci5zZXRBZGosIEhFQVZZX1dFSUdIVF9BUFBfQURKKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIuc2V0QWRqID49IFBFUkNFUFRJQkxFX0FQUF9BREopIHsKKyAgICAgICAgICAgICAgICAgICAgb29tQWRqID0gYnVpbGRPb21UYWcoInByY3AgIiwgbnVsbCwgci5zZXRBZGosIFBFUkNFUFRJQkxFX0FQUF9BREopOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5zZXRBZGogPj0gVklTSUJMRV9BUFBfQURKKSB7CiAgICAgICAgICAgICAgICAgICAgIG9vbUFkaiA9IGJ1aWxkT29tVGFnKCJ2aXMgICIsIG51bGwsIHIuc2V0QWRqLCBWSVNJQkxFX0FQUF9BREopOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5zZXRBZGogPj0gRk9SRUdST1VORF9BUFBfQURKKSB7CkBAIC0xMDI4MCwxMCArNzMzOCwyNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdy5wcmludGxuKFN0cmluZy5mb3JtYXQoIiVzJXMgIyUyZDogYWRqPSVzLyVzICVzICglcykiLAogICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCAoci5wZXJzaXN0ZW50ID8gcGVyc2lzdGVudExhYmVsIDogbm9ybWFsTGFiZWwpLAotICAgICAgICAgICAgICAgICAgICAgICAgaSwgb29tQWRqLCBzY2hlZEdyb3VwLCByLnRvU2hvcnRTdHJpbmcoKSwgci5hZGpUeXBlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBOLWksIG9vbUFkaiwgc2NoZWRHcm91cCwgci50b1Nob3J0U3RyaW5nKCksIHIuYWRqVHlwZSkpOwogICAgICAgICAgICAgICAgIGlmIChyLmFkalNvdXJjZSAhPSBudWxsIHx8IHIuYWRqVGFyZ2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAiICAgICAgICAgICIgKyByLmFkalRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjw9IiArIHIuYWRqU291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiAgICAgICAgICAiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHIuYWRqVGFyZ2V0IGluc3RhbmNlb2YgQ29tcG9uZW50TmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoKChDb21wb25lbnROYW1lKXIuYWRqVGFyZ2V0KS5mbGF0dGVuVG9TaG9ydFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLmFkalRhcmdldCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChyLmFkalRhcmdldC50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJ7bnVsbH0iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiPD0iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHIuYWRqU291cmNlIGluc3RhbmNlb2YgUHJvY2Vzc1JlY29yZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIlByb2N7Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgoKFByb2Nlc3NSZWNvcmQpci5hZGpTb3VyY2UpLnRvU2hvcnRTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCJ9Iik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5hZGpTb3VyY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbihyLmFkalNvdXJjZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIntudWxsfSIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdy5wcmludGxuKFN0cmluZy5mb3JtYXQoIiVzJXMgIyUyZDogJXMiLApAQCAtMTAzNDcsMjIgKzc0MjIsNiBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgaW5kZXhPZlRva2VuTG9ja2VkKElCaW5kZXIgdG9rZW4pIHsKLSAgICAgICAgaW50IGNvdW50ID0gbUhpc3Rvcnkuc2l6ZSgpOwotCi0gICAgICAgIC8vIGNvbnZlcnQgdGhlIHRva2VuIHRvIGFuIGVudHJ5IGluIHRoZSBoaXN0b3J5LgotICAgICAgICBpbnQgaW5kZXggPSAtMTsKLSAgICAgICAgZm9yIChpbnQgaT1jb3VudC0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIE9iamVjdCBvID0gbUhpc3RvcnkuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKG8gPT0gdG9rZW4pIHsKLSAgICAgICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgfQotCiAgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGtpbGxTZXJ2aWNlc0xvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCwKICAgICAgICAgICAgIGJvb2xlYW4gYWxsb3dSZXN0YXJ0KSB7CiAgICAgICAgIC8vIFJlcG9ydCBkaXNjb25uZWN0ZWQgc2VydmljZXMuCkBAIC0xMDM3MCw5ICs3NDI5LDkgQEAKICAgICAgICAgICAgIC8vIFhYWCB3ZSBhcmUgbGV0dGluZyB0aGUgY2xpZW50IGxpbmsgdG8gdGhlIHNlcnZpY2UgZm9yCiAgICAgICAgICAgICAvLyBkZWF0aCBub3RpZmljYXRpb25zLgogICAgICAgICAgICAgaWYgKGFwcC5zZXJ2aWNlcy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgSXRlcmF0b3IgaXQgPSBhcHAuc2VydmljZXMuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICBJdGVyYXRvcjxTZXJ2aWNlUmVjb3JkPiBpdCA9IGFwcC5zZXJ2aWNlcy5pdGVyYXRvcigpOwogICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU2VydmljZVJlY29yZCByID0gKFNlcnZpY2VSZWNvcmQpaXQubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlUmVjb3JkIHIgPSBpdC5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyLmNvbm5lY3Rpb25zLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yPENvbm5lY3Rpb25SZWNvcmQ+IGp0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gci5jb25uZWN0aW9ucy52YWx1ZXMoKS5pdGVyYXRvcigpOwpAQCAtMTA0MDcsOSArNzQ2Niw5IEBACiAgICAgICAgIGlmIChhcHAuc2VydmljZXMuc2l6ZSgpICE9IDApIHsKICAgICAgICAgICAgIC8vIEFueSBzZXJ2aWNlcyBydW5uaW5nIGluIHRoZSBhcHBsaWNhdGlvbiBuZWVkIHRvIGJlIHBsYWNlZAogICAgICAgICAgICAgLy8gYmFjayBpbiB0aGUgcGVuZGluZyBsaXN0LgotICAgICAgICAgICAgSXRlcmF0b3IgaXQgPSBhcHAuc2VydmljZXMuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIEl0ZXJhdG9yPFNlcnZpY2VSZWNvcmQ+IGl0ID0gYXBwLnNlcnZpY2VzLml0ZXJhdG9yKCk7CiAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgU2VydmljZVJlY29yZCBzciA9IChTZXJ2aWNlUmVjb3JkKWl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICBTZXJ2aWNlUmVjb3JkIHNyID0gaXQubmV4dCgpOwogICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAoc3Iuc3RhdHMuZ2V0QmF0dGVyeVN0YXRzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgc3Iuc3RhdHMuc3RvcExhdW5jaGVkTG9ja2VkKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTA1NDgsOSArNzYwNyw5IEBACiAgICAgICAgIAogICAgICAgICAvLyBSZW1vdmUgcHVibGlzaGVkIGNvbnRlbnQgcHJvdmlkZXJzLgogICAgICAgICBpZiAoIWFwcC5wdWJQcm92aWRlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBJdGVyYXRvciBpdCA9IGFwcC5wdWJQcm92aWRlcnMudmFsdWVzKCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIEl0ZXJhdG9yPENvbnRlbnRQcm92aWRlclJlY29yZD4gaXQgPSBhcHAucHViUHJvdmlkZXJzLnZhbHVlcygpLml0ZXJhdG9yKCk7CiAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpaXQubmV4dCgpOworICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSBpdC5uZXh0KCk7CiAgICAgICAgICAgICAgICAgY3ByLnByb3ZpZGVyID0gbnVsbDsKICAgICAgICAgICAgICAgICBjcHIuYXBwID0gbnVsbDsKIApAQCAtMTA2NDIsNiArNzcwMSwxMCBAQAogICAgICAgICAgICAgaWYgKERFQlVHX1BST0NFU1NFUykgU2xvZy52KFRBRywKICAgICAgICAgICAgICAgICAgICAgIlJlbW92aW5nIG5vbi1wZXJzaXN0ZW50IHByb2Nlc3MgZHVyaW5nIGNsZWFudXA6ICIgKyBhcHApOwogICAgICAgICAgICAgbVByb2Nlc3NOYW1lcy5yZW1vdmUoYXBwLnByb2Nlc3NOYW1lLCBhcHAuaW5mby51aWQpOworICAgICAgICAgICAgaWYgKG1IZWF2eVdlaWdodFByb2Nlc3MgPT0gYXBwKSB7CisgICAgICAgICAgICAgICAgbUhlYXZ5V2VpZ2h0UHJvY2VzcyA9IG51bGw7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZShDQU5DRUxfSEVBVllfTk9USUZJQ0FUSU9OX01TRyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIWFwcC5yZW1vdmVkKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGFwcCBpcyBwZXJzaXN0ZW50LCBzbyB3ZSBuZWVkIHRvIGtlZXAgaXRzIHJlY29yZCBhcm91bmQuCiAgICAgICAgICAgICAvLyBJZiBpdCBpcyBub3QgYWxyZWFkeSBvbiB0aGUgcGVuZGluZyBhcHAgbGlzdCwgYWRkIGl0IHRoZXJlCkBAIC0xMDY4Myw4ICs3NzQ2LDcgQEAKICAgICAgICAgaW50IE5MID0gbUxhdW5jaGluZ1Byb3ZpZGVycy5zaXplKCk7CiAgICAgICAgIGJvb2xlYW4gcmVzdGFydCA9IGZhbHNlOwogICAgICAgICBmb3IgKGludCBpPTA7IGk8Tkw7IGkrKykgewotICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpCi0gICAgICAgICAgICAgICAgICAgIG1MYXVuY2hpbmdQcm92aWRlcnMuZ2V0KGkpOworICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IG1MYXVuY2hpbmdQcm92aWRlcnMuZ2V0KGkpOwogICAgICAgICAgICAgaWYgKGNwci5sYXVuY2hpbmdBcHAgPT0gYXBwKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFhbHdheXNCYWQgJiYgIWFwcC5iYWQpIHsKICAgICAgICAgICAgICAgICAgICAgcmVzdGFydCA9IHRydWU7CkBAIC0xMDgwNyw3ICs3ODY5LDcgQEAKICAgICAgICAgaWYgKHIgPT0gbnVsbCkgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBSZXNvbHZlSW5mbyBySW5mbyA9Ci0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkucmVzb2x2ZVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgIEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlU2VydmljZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLCByZXNvbHZlZFR5cGUsIDApOwogICAgICAgICAgICAgICAgIFNlcnZpY2VJbmZvIHNJbmZvID0KICAgICAgICAgICAgICAgICAgICAgckluZm8gIT0gbnVsbCA/IHJJbmZvLnNlcnZpY2VJbmZvIDogbnVsbDsKQEAgLTEwODY0LDcgKzc5MjYsNyBAQAogICAgICAgICBpZiAociA9PSBudWxsKSB7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIFJlc29sdmVJbmZvIHJJbmZvID0KLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlU2VydmljZSgKKyAgICAgICAgICAgICAgICAgICAgQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLnJlc29sdmVTZXJ2aWNlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UsIHJlc29sdmVkVHlwZSwgU1RPQ0tfUE1fRkxBR1MpOwogICAgICAgICAgICAgICAgIFNlcnZpY2VJbmZvIHNJbmZvID0KICAgICAgICAgICAgICAgICAgICAgckluZm8gIT0gbnVsbCA/IHJJbmZvLnNlcnZpY2VJbmZvIDogbnVsbDsKQEAgLTExNjAxLDcgKzg2NjMsNyBAQAogCiAgICAgcHVibGljIHZvaWQgdXBkYXRlU2VydmljZUZvcmVncm91bmRMb2NrZWQoUHJvY2Vzc1JlY29yZCBwcm9jLCBib29sZWFuIG9vbUFkaikgewogICAgICAgICBib29sZWFuIGFueUZvcmVncm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChTZXJ2aWNlUmVjb3JkIHNyIDogKEhhc2hTZXQ8U2VydmljZVJlY29yZD4pcHJvYy5zZXJ2aWNlcykgeworICAgICAgICBmb3IgKFNlcnZpY2VSZWNvcmQgc3IgOiBwcm9jLnNlcnZpY2VzKSB7CiAgICAgICAgICAgICBpZiAoc3IuaXNGb3JlZ3JvdW5kKSB7CiAgICAgICAgICAgICAgICAgYW55Rm9yZWdyb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTYzNSwxNCArODY5NywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSB3aGVuIGJpbmRpbmcgc2VydmljZSAiICsgc2VydmljZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgYWN0aXZpdHkgPSBudWxsOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgYWN0aXZpdHkgPSBudWxsOwogICAgICAgICAgICAgaWYgKHRva2VuICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpbnQgYWluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgICAgICBpbnQgYWluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgICAgIGlmIChhaW5kZXggPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJCaW5kaW5nIHdpdGggdW5rbm93biBhY3Rpdml0eTogIiArIHRva2VuKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFjdGl2aXR5ID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGFpbmRleCk7CisgICAgICAgICAgICAgICAgYWN0aXZpdHkgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoYWluZGV4KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW50IGNsaWVudExhYmVsID0gMDsKQEAgLTExNzQ2LDggKzg4MDgsOCBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgcmVtb3ZlQ29ubmVjdGlvbkxvY2tlZCgKLSAgICAgICAgQ29ubmVjdGlvblJlY29yZCBjLCBQcm9jZXNzUmVjb3JkIHNraXBBcHAsIEhpc3RvcnlSZWNvcmQgc2tpcEFjdCkgeworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlvbkxvY2tlZCgKKyAgICAgICAgQ29ubmVjdGlvblJlY29yZCBjLCBQcm9jZXNzUmVjb3JkIHNraXBBcHAsIEFjdGl2aXR5UmVjb3JkIHNraXBBY3QpIHsKICAgICAgICAgSUJpbmRlciBiaW5kZXIgPSBjLmNvbm4uYXNCaW5kZXIoKTsKICAgICAgICAgQXBwQmluZFJlY29yZCBiID0gYy5iaW5kaW5nOwogICAgICAgICBTZXJ2aWNlUmVjb3JkIHMgPSBiLnNlcnZpY2U7CkBAIC0xMjQyOCw3ICs5NDkwLDcgQEAKICAgICAgICAgICAgIC8vIEFsd2F5cyBva2F5LgogICAgICAgICB9IGVsc2UgaWYgKGNhbGxlckFwcCA9PSBudWxsIHx8ICFjYWxsZXJBcHAucGVyc2lzdGVudCkgewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5pc1Byb3RlY3RlZEJyb2FkY2FzdCgKKyAgICAgICAgICAgICAgICBpZiAoQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLmlzUHJvdGVjdGVkQnJvYWRjYXN0KAogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldEFjdGlvbigpKSkgewogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gIlBlcm1pc3Npb24gRGVuaWFsOiBub3QgYWxsb3dlZCB0byBzZW5kIGJyb2FkY2FzdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBpbnRlbnQuZ2V0QWN0aW9uKCkgKyAiIGZyb20gcGlkPSIKQEAgLTEyNDg3LDcgKzk1NDksNyBAQAogICAgICAgICB0cnkgewogICAgICAgICAgICAgaWYgKGludGVudC5nZXRDb21wb25lbnQoKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgLy8gQnJvYWRjYXN0IGlzIGdvaW5nIHRvIG9uZSBzcGVjaWZpYyByZWNlaXZlciBjbGFzcy4uLgotICAgICAgICAgICAgICAgIEFjdGl2aXR5SW5mbyBhaSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkuCisgICAgICAgICAgICAgICAgQWN0aXZpdHlJbmZvIGFpID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLgogICAgICAgICAgICAgICAgICAgICBnZXRSZWNlaXZlckluZm8oaW50ZW50LmdldENvbXBvbmVudCgpLCBTVE9DS19QTV9GTEFHUyk7CiAgICAgICAgICAgICAgICAgaWYgKGFpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJzID0gbmV3IEFycmF5TGlzdCgpOwpAQCAtMTI1MDAsNyArOTU2Miw3IEBACiAgICAgICAgICAgICAgICAgaWYgKChpbnRlbnQuZ2V0RmxhZ3MoKSZJbnRlbnQuRkxBR19SRUNFSVZFUl9SRUdJU1RFUkVEX09OTFkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICByZWNlaXZlcnMgPQotICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5xdWVyeUludGVudFJlY2VpdmVycygKKyAgICAgICAgICAgICAgICAgICAgICAgIEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5xdWVyeUludGVudFJlY2VpdmVycygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LCByZXNvbHZlZFR5cGUsIFNUT0NLX1BNX0ZMQUdTKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZFJlY2VpdmVycyA9IG1SZWNlaXZlclJlc29sdmVyLnF1ZXJ5SW50ZW50KGludGVudCwgcmVzb2x2ZWRUeXBlLCBmYWxzZSk7CkBAIC0xMzI1Miw3ICsxMDMxNCw3IEBACiAgICAgICAgICAgICBpZiAoci5jYWxsaW5nVWlkICE9IFByb2Nlc3MuU1lTVEVNX1VJRCAmJgogICAgICAgICAgICAgICAgIHIucmVxdWlyZWRQZXJtaXNzaW9uICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBwZXJtID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS4KKyAgICAgICAgICAgICAgICAgICAgcGVybSA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Blcm1pc3Npb24oci5yZXF1aXJlZFBlcm1pc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmFjdGl2aXR5SW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUpOwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CkBAIC0xMzUwOSw3ICsxMDU3MSw3IEBACiAgICAgICogY29uZmlndXJhdGlvbi4KICAgICAgKi8KICAgICBwdWJsaWMgYm9vbGVhbiB1cGRhdGVDb25maWd1cmF0aW9uTG9ja2VkKENvbmZpZ3VyYXRpb24gdmFsdWVzLAotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBzdGFydGluZykgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgc3RhcnRpbmcpIHsKICAgICAgICAgaW50IGNoYW5nZXMgPSAwOwogICAgICAgICAKICAgICAgICAgYm9vbGVhbiBrZXB0ID0gdHJ1ZTsKQEAgLTEzNTc4LDE4ICsxMDY0MCwxOCBAQAogICAgICAgICAgICAgLy8gSWYgdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlZCwgYW5kIHRoZSBjYWxsZXIgaXMgbm90IGFscmVhZHkKICAgICAgICAgICAgIC8vIGluIHRoZSBwcm9jZXNzIG9mIHN0YXJ0aW5nIGFuIGFjdGl2aXR5LCB0aGVuIGZpbmQgdGhlIHRvcAogICAgICAgICAgICAgLy8gYWN0aXZpdHkgdG8gY2hlY2sgaWYgaXRzIGNvbmZpZ3VyYXRpb24gbmVlZHMgdG8gY2hhbmdlLgotICAgICAgICAgICAgc3RhcnRpbmcgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICBzdGFydGluZyA9IG1NYWluU3RhY2sudG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoc3RhcnRpbmcgIT0gbnVsbCkgewotICAgICAgICAgICAga2VwdCA9IGVuc3VyZUFjdGl2aXR5Q29uZmlndXJhdGlvbkxvY2tlZChzdGFydGluZywgY2hhbmdlcyk7CisgICAgICAgICAgICBrZXB0ID0gbU1haW5TdGFjay5lbnN1cmVBY3Rpdml0eUNvbmZpZ3VyYXRpb25Mb2NrZWQoc3RhcnRpbmcsIGNoYW5nZXMpOwogICAgICAgICAgICAgaWYgKGtlcHQpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGRpZG4ndCByZXN1bHQgaW4gdGhlIHN0YXJ0aW5nIGFjdGl2aXR5IGJlaW5nCiAgICAgICAgICAgICAgICAgLy8gZGVzdHJveWVkLCB0aGVuIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGF0IHRoaXMgcG9pbnQgdGhhdCBhbGwKICAgICAgICAgICAgICAgICAvLyBvdGhlciBhY3Rpdml0aWVzIGFyZSBtYWRlIHZpc2libGUuCiAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy5pKFRBRywgIkNvbmZpZyBkaWRuJ3QgZGVzdHJveSAiICsgc3RhcnRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgZW5zdXJpbmcgb3RoZXJzIGFyZSBjb3JyZWN0LiIpOwotICAgICAgICAgICAgICAgIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKHN0YXJ0aW5nLCBjaGFuZ2VzKTsKKyAgICAgICAgICAgICAgICBtTWFpblN0YWNrLmVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKHN0YXJ0aW5nLCBjaGFuZ2VzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTEzNTk5LDE2MCArMTA2NjEsNiBAQAogICAgICAgICAKICAgICAgICAgcmV0dXJuIGtlcHQ7CiAgICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHJlbGF1bmNoQWN0aXZpdHlMb2NrZWQoSGlzdG9yeVJlY29yZCByLAotICAgICAgICAgICAgaW50IGNoYW5nZXMsIGJvb2xlYW4gYW5kUmVzdW1lKSB7Ci0gICAgICAgIExpc3Q8UmVzdWx0SW5mbz4gcmVzdWx0cyA9IG51bGw7Ci0gICAgICAgIExpc3Q8SW50ZW50PiBuZXdJbnRlbnRzID0gbnVsbDsKLSAgICAgICAgaWYgKGFuZFJlc3VtZSkgewotICAgICAgICAgICAgcmVzdWx0cyA9IHIucmVzdWx0czsKLSAgICAgICAgICAgIG5ld0ludGVudHMgPSByLm5ld0ludGVudHM7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlJlbGF1bmNoaW5nOiAiICsgcgotICAgICAgICAgICAgICAgICsgIiB3aXRoIHJlc3VsdHM9IiArIHJlc3VsdHMgKyAiIG5ld0ludGVudHM9IiArIG5ld0ludGVudHMKLSAgICAgICAgICAgICAgICArICIgYW5kUmVzdW1lPSIgKyBhbmRSZXN1bWUpOwotICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KGFuZFJlc3VtZSA/IEV2ZW50TG9nVGFncy5BTV9SRUxBVU5DSF9SRVNVTUVfQUNUSVZJVFkKLSAgICAgICAgICAgICAgICA6IEV2ZW50TG9nVGFncy5BTV9SRUxBVU5DSF9BQ1RJVklUWSwgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksCi0gICAgICAgICAgICAgICAgci50YXNrLnRhc2tJZCwgci5zaG9ydENvbXBvbmVudE5hbWUpOwotICAgICAgICAKLSAgICAgICAgci5zdGFydEZyZWV6aW5nU2NyZWVuTG9ja2VkKHIuYXBwLCAwKTsKLSAgICAgICAgCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLmkoVEFHLCAiU3dpdGNoIGlzIHJlc3RhcnRpbmcgcmVzdW1lZCAiICsgcik7Ci0gICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVSZWxhdW5jaEFjdGl2aXR5KHIsIHJlc3VsdHMsIG5ld0ludGVudHMsCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMsICFhbmRSZXN1bWUsIG1Db25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgIC8vIE5vdGU6IGRvbid0IG5lZWQgdG8gY2FsbCBwYXVzZUlmU2xlZXBpbmdMb2NrZWQoKSBoZXJlLCBiZWNhdXNlCi0gICAgICAgICAgICAvLyB0aGUgY2FsbGVyIHdpbGwgb25seSBwYXNzIGluICdhbmRSZXN1bWUnIGlmIHRoaXMgYWN0aXZpdHkgaXMKLSAgICAgICAgICAgIC8vIGN1cnJlbnRseSByZXN1bWVkLCB3aGljaCBpbXBsaWVzIHdlIGFyZW4ndCBzbGVlcGluZy4KLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhbmRSZXN1bWUpIHsKLSAgICAgICAgICAgIHIucmVzdWx0cyA9IG51bGw7Ci0gICAgICAgICAgICByLm5ld0ludGVudHMgPSBudWxsOwotICAgICAgICAgICAgcmVwb3J0UmVzdW1lZEFjdGl2aXR5TG9ja2VkKHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogTWFrZSBzdXJlIHRoZSBnaXZlbiBhY3Rpdml0eSBtYXRjaGVzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uICBSZXR1cm5zCi0gICAgICogZmFsc2UgaWYgdGhlIGFjdGl2aXR5IGhhZCB0byBiZSBkZXN0cm95ZWQuICBSZXR1cm5zIHRydWUgaWYgdGhlCi0gICAgICogY29uZmlndXJhdGlvbiBpcyB0aGUgc2FtZSwgb3IgdGhlIGFjdGl2aXR5IHdpbGwgcmVtYWluIHJ1bm5pbmcgYXMtaXMKLSAgICAgKiBmb3Igd2hhdGV2ZXIgcmVhc29uLiAgRW5zdXJlcyB0aGUgSGlzdG9yeVJlY29yZCBpcyB1cGRhdGVkIHdpdGggdGhlCi0gICAgICogY29ycmVjdCBjb25maWd1cmF0aW9uIGFuZCBhbGwgb3RoZXIgYm9va2tlZXBpbmcgaXMgaGFuZGxlZC4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gZW5zdXJlQWN0aXZpdHlDb25maWd1cmF0aW9uTG9ja2VkKEhpc3RvcnlSZWNvcmQgciwKLSAgICAgICAgICAgIGludCBnbG9iYWxDaGFuZ2VzKSB7Ci0gICAgICAgIGlmIChtQ29uZmlnV2lsbENoYW5nZSkgewotICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAiU2tpcHBpbmcgY29uZmlnIGNoZWNrICh3aWxsIGNoYW5nZSk6ICIgKyByKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgIkVuc3VyaW5nIGNvcnJlY3QgY29uZmlndXJhdGlvbjogIiArIHIpOwotICAgICAgICAKLSAgICAgICAgLy8gU2hvcnQgY2lyY3VpdDogaWYgdGhlIHR3byBjb25maWd1cmF0aW9ucyBhcmUgdGhlIGV4YWN0IHNhbWUKLSAgICAgICAgLy8gb2JqZWN0ICh0aGUgY29tbW9uIGNhc2UpLCB0aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uCi0gICAgICAgIENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnID0gbUNvbmZpZ3VyYXRpb247Ci0gICAgICAgIGlmIChyLmNvbmZpZ3VyYXRpb24gPT0gbmV3Q29uZmlnKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIHVuY2hhbmdlZCBpbiAiICsgcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgYWN0aXZpdGllcyB0aGF0IGFyZSBmaW5pc2hpbmcuCi0gICAgICAgIGlmIChyLmZpbmlzaGluZykgewotICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAiQ29uZmlndXJhdGlvbiBkb2Vzbid0IG1hdHRlciBpbiBmaW5pc2hpbmcgIiArIHIpOwotICAgICAgICAgICAgci5zdG9wRnJlZXppbmdTY3JlZW5Mb2NrZWQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIE9rYXkgd2Ugbm93IGFyZSBnb2luZyB0byBtYWtlIHRoaXMgYWN0aXZpdHkgaGF2ZSB0aGUgbmV3IGNvbmZpZy4KLSAgICAgICAgLy8gQnV0IHRoZW4gd2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCBuZWVkcyB0byBkZWFsIHdpdGggdGhhdC4KLSAgICAgICAgQ29uZmlndXJhdGlvbiBvbGRDb25maWcgPSByLmNvbmZpZ3VyYXRpb247Ci0gICAgICAgIHIuY29uZmlndXJhdGlvbiA9IG5ld0NvbmZpZzsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBpc24ndCBjdXJyZW50bHkgcnVubmluZywganVzdCBsZWF2ZSB0aGUgbmV3Ci0gICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gYW5kIGl0IHdpbGwgcGljayB0aGF0IHVwIG5leHQgdGltZSBpdCBzdGFydHMuCi0gICAgICAgIGlmIChyLmFwcCA9PSBudWxsIHx8IHIuYXBwLnRocmVhZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIGRvZXNuJ3QgbWF0dGVyIG5vdCBydW5uaW5nICIgKyByKTsKLSAgICAgICAgICAgIHIuc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGUgYWN0aXZpdHkgaXNuJ3QgcGVyc2lzdGVudCwgdGhlcmUgaXMgYSBjaGFuY2Ugd2Ugd2lsbAotICAgICAgICAvLyBuZWVkIHRvIHJlc3RhcnQgaXQuCi0gICAgICAgIGlmICghci5wZXJzaXN0ZW50KSB7Ci0KLSAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBoYXMgY2hhbmdlZCBiZXR3ZWVuIHRoZSB0d28gY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICBpbnQgY2hhbmdlcyA9IG9sZENvbmZpZy5kaWZmKG5ld0NvbmZpZyk7Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIHsKLSAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiQ2hlY2tpbmcgdG8gcmVzdGFydCAiICsgci5pbmZvLm5hbWUgKyAiOiBjaGFuZ2VkPTB4IgotICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGNoYW5nZXMpICsgIiwgaGFuZGxlcz0weCIKLSAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhyLmluZm8uY29uZmlnQ2hhbmdlcykKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgbmV3Q29uZmlnPSIgKyBuZXdDb25maWcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKChjaGFuZ2VzJih+ci5pbmZvLmNvbmZpZ0NoYW5nZXMpKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gQWhhLCB0aGUgYWN0aXZpdHkgaXNuJ3QgaGFuZGxpbmcgdGhlIGNoYW5nZSwgc28gRElFIERJRSBESUUuCi0gICAgICAgICAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyB8PSBjaGFuZ2VzOwotICAgICAgICAgICAgICAgIHIuc3RhcnRGcmVlemluZ1NjcmVlbkxvY2tlZChyLmFwcCwgZ2xvYmFsQ2hhbmdlcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHIuYXBwID09IG51bGwgfHwgci5hcHAudGhyZWFkID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2l0Y2ggaXMgZGVzdHJveWluZyBub24tcnVubmluZyAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5QQVVTSU5HKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEEgbGl0dGxlIGFubm95aW5nOiB3ZSBhcmUgd2FpdGluZyBmb3IgdGhpcyBhY3Rpdml0eSB0bwotICAgICAgICAgICAgICAgICAgICAvLyBmaW5pc2ggcGF1c2luZy4gIExldCdzIG5vdCBkbyBhbnl0aGluZyBub3csIGJ1dCBqdXN0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGZsYWcgdGhhdCBpdCBuZWVkcyB0byBiZSByZXN0YXJ0ZWQgd2hlbiBkb25lIHBhdXNpbmcuCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3dpdGNoIGlzIHNraXBwaW5nIGFscmVhZHkgcGF1c2luZyAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgIHIuY29uZmlnRGVzdHJveSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIG9wdGltaXplIHRoaXMgY2FzZTogdGhlIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdpbmcKLSAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gcmVzdGFydCB0aGUgdG9wLCByZXN1bWVkIGFjdGl2aXR5LgotICAgICAgICAgICAgICAgICAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHRoZSBub3JtYWwgaGFuZHNoYWtpbmcsIGp1c3Qgc2F5Ci0gICAgICAgICAgICAgICAgICAgIC8vICJyZXN0YXJ0ISIuCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3dpdGNoIGlzIHJlc3RhcnRpbmcgcmVzdW1lZCAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgIHJlbGF1bmNoQWN0aXZpdHlMb2NrZWQociwgci5jb25maWdDaGFuZ2VGbGFncywgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHIuY29uZmlnQ2hhbmdlRmxhZ3MgPSAwOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3dpdGNoIGlzIHJlc3RhcnRpbmcgbm9uLXJlc3VtZWQgIiArIHIpOwotICAgICAgICAgICAgICAgICAgICByZWxhdW5jaEFjdGl2aXR5TG9ja2VkKHIsIHIuY29uZmlnQ2hhbmdlRmxhZ3MsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIEFsbCBkb25lLi4uICB0ZWxsIHRoZSBjYWxsZXIgd2Ugd2VyZW4ndCBhYmxlIHRvIGtlZXAgdGhpcwotICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGFyb3VuZC4KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIERlZmF1bHQgY2FzZTogdGhlIGFjdGl2aXR5IGNhbiBoYW5kbGUgdGhpcyBuZXcgY29uZmlndXJhdGlvbiwgc28KLSAgICAgICAgLy8gaGFuZCBpdCBvdmVyLiAgTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZ2l2ZSBpdCB0aGUgbmV3Ci0gICAgICAgIC8vIGNvbmZpZ3VyYXRpb24sIHNpbmNlIHdlIGFsd2F5cyBzZW5kIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB0byBhbGwKLSAgICAgICAgLy8gcHJvY2VzcyB3aGVuIHRoZXkgaGFwcGVuIHNvIGl0IGNhbiBqdXN0IHVzZSB3aGF0ZXZlciBjb25maWd1cmF0aW9uCi0gICAgICAgIC8vIGl0IGxhc3QgZ290LgotICAgICAgICBpZiAoci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywgIlNlbmRpbmcgbmV3IGNvbmZpZyB0byAiICsgcik7Ci0gICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlQWN0aXZpdHlDb25maWd1cmF0aW9uQ2hhbmdlZChyKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgcHJvY2VzcyBkaWVkLCB3aGF0ZXZlci4KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChmYWxzZSk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAgICAgCiAgICAgLyoqCiAgICAgICogU2F2ZSB0aGUgbG9jYWxlLiAgWW91IG11c3QgYmUgaW5zaWRlIGEgc3luY2hyb25pemVkICh0aGlzKSBibG9jay4KQEAgLTEzODQ0LDE1ICsxMDc1MiwyMCBAQAogICAgICAgICAgICAgYXBwLmFkalR5cGUgPSAiZXhlYy1zZXJ2aWNlIjsKICAgICAgICAgfSBlbHNlIGlmIChhcHAuZm9yZWdyb3VuZFNlcnZpY2VzKSB7CiAgICAgICAgICAgICAvLyBUaGUgdXNlciBpcyBhd2FyZSBvZiB0aGlzIGFwcCwgc28gbWFrZSBpdCB2aXNpYmxlLgotICAgICAgICAgICAgYWRqID0gVklTSUJMRV9BUFBfQURKOworICAgICAgICAgICAgYWRqID0gUEVSQ0VQVElCTEVfQVBQX0FESjsKICAgICAgICAgICAgIHNjaGVkR3JvdXAgPSBQcm9jZXNzLlRIUkVBRF9HUk9VUF9ERUZBVUxUOwogICAgICAgICAgICAgYXBwLmFkalR5cGUgPSAiZm9yZWdyb3VuZC1zZXJ2aWNlIjsKICAgICAgICAgfSBlbHNlIGlmIChhcHAuZm9yY2luZ1RvRm9yZWdyb3VuZCAhPSBudWxsKSB7CiAgICAgICAgICAgICAvLyBUaGUgdXNlciBpcyBhd2FyZSBvZiB0aGlzIGFwcCwgc28gbWFrZSBpdCB2aXNpYmxlLgotICAgICAgICAgICAgYWRqID0gVklTSUJMRV9BUFBfQURKOworICAgICAgICAgICAgYWRqID0gUEVSQ0VQVElCTEVfQVBQX0FESjsKICAgICAgICAgICAgIHNjaGVkR3JvdXAgPSBQcm9jZXNzLlRIUkVBRF9HUk9VUF9ERUZBVUxUOwogICAgICAgICAgICAgYXBwLmFkalR5cGUgPSAiZm9yY2UtZm9yZWdyb3VuZCI7CiAgICAgICAgICAgICBhcHAuYWRqU291cmNlID0gYXBwLmZvcmNpbmdUb0ZvcmVncm91bmQ7CisgICAgICAgIH0gZWxzZSBpZiAoYXBwID09IG1IZWF2eVdlaWdodFByb2Nlc3MpIHsKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8ga2lsbCB0aGUgY3VycmVudCBoZWF2eS13ZWlnaHQgcHJvY2Vzcy4KKyAgICAgICAgICAgIGFkaiA9IEhFQVZZX1dFSUdIVF9BUFBfQURKOworICAgICAgICAgICAgc2NoZWRHcm91cCA9IFByb2Nlc3MuVEhSRUFEX0dST1VQX0RFRkFVTFQ7CisgICAgICAgICAgICBhcHAuYWRqVHlwZSA9ICJoZWF2eSI7CiAgICAgICAgIH0gZWxzZSBpZiAoYXBwID09IG1Ib21lUHJvY2VzcykgewogICAgICAgICAgICAgLy8gVGhpcyBwcm9jZXNzIGlzIGhvc3Rpbmcgd2hhdCB3ZSBjdXJyZW50bHkgY29uc2lkZXIgdG8gYmUgdGhlCiAgICAgICAgICAgICAvLyBob21lIGFwcCwgc28gd2UgZG9uJ3Qgd2FudCB0byBsZXQgaXQgZ28gaW50byB0aGUgYmFja2dyb3VuZC4KQEAgLTEzODY3LDcgKzEwNzgwLDcgQEAKICAgICAgICAgICAgIGFwcC5hZGpUeXBlID0gImJnLWFjdGl2aXRpZXMiOwogICAgICAgICAgICAgTiA9IGFwcC5hY3Rpdml0aWVzLnNpemUoKTsKICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxOOyBqKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoKChIaXN0b3J5UmVjb3JkKWFwcC5hY3Rpdml0aWVzLmdldChqKSkudmlzaWJsZSkgeworICAgICAgICAgICAgICAgIGlmIChhcHAuYWN0aXZpdGllcy5nZXQoaikudmlzaWJsZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGFwcCBoYXMgYSB2aXNpYmxlIGFjdGl2aXR5IQogICAgICAgICAgICAgICAgICAgICBhcHAuaGlkZGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGFkaiA9IFZJU0lCTEVfQVBQX0FESjsKQEAgLTEzOTEwLDkgKzEwODIzLDkgQEAKICAgICAgICAgICAgIGZpbmFsIGxvbmcgbm93ID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CiAgICAgICAgICAgICAvLyBUaGlzIHByb2Nlc3MgaXMgbW9yZSBpbXBvcnRhbnQgaWYgdGhlIHRvcCBhY3Rpdml0eSBpcwogICAgICAgICAgICAgLy8gYm91bmQgdG8gdGhlIHNlcnZpY2UuCi0gICAgICAgICAgICBJdGVyYXRvciBqdCA9IGFwcC5zZXJ2aWNlcy5pdGVyYXRvcigpOworICAgICAgICAgICAgSXRlcmF0b3I8U2VydmljZVJlY29yZD4ganQgPSBhcHAuc2VydmljZXMuaXRlcmF0b3IoKTsKICAgICAgICAgICAgIHdoaWxlIChqdC5oYXNOZXh0KCkgJiYgYWRqID4gRk9SRUdST1VORF9BUFBfQURKKSB7Ci0gICAgICAgICAgICAgICAgU2VydmljZVJlY29yZCBzID0gKFNlcnZpY2VSZWNvcmQpanQubmV4dCgpOworICAgICAgICAgICAgICAgIFNlcnZpY2VSZWNvcmQgcyA9IGp0Lm5leHQoKTsKICAgICAgICAgICAgICAgICBpZiAocy5zdGFydFJlcXVlc3RlZCkgewogICAgICAgICAgICAgICAgICAgICBpZiAobm93IDwgKHMubGFzdEFjdGl2aXR5K01BWF9TRVJWSUNFX0lOQUNUSVZJVFkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHNlcnZpY2UgaGFzIHNlZW4gc29tZSBhY3Rpdml0eSB3aXRoaW4KQEAgLTEzOTQ3LDcgKzEwODYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZXNzUmVjb3JkIGNsaWVudCA9IGNyLmJpbmRpbmcuY2xpZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBteUhpZGRlbkFkaiA9IGhpZGRlbkFkajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlIaWRkZW5BZGogPiBjbGllbnQuaGlkZGVuQWRqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnQuaGlkZGVuQWRqID4gVklTSUJMRV9BUFBfQURKKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnQuaGlkZGVuQWRqID49IFZJU0lCTEVfQVBQX0FESikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlIaWRkZW5BZGogPSBjbGllbnQuaGlkZGVuQWRqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlIaWRkZW5BZGogPSBWSVNJQkxFX0FQUF9BREo7CkBAIC0xMzk1Niw3ICsxMDg2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsaWVudEFkaiA9IGNvbXB1dGVPb21BZGpMb2NrZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCwgbXlIaWRkZW5BZGosIFRPUF9BUFAsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGogPiBjbGllbnRBZGopIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqID0gY2xpZW50QWRqID4gVklTSUJMRV9BUFBfQURKCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkaiA9IGNsaWVudEFkaiA+PSBWSVNJQkxFX0FQUF9BREoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNsaWVudEFkaiA6IFZJU0lCTEVfQVBQX0FESjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbGllbnQuaGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuaGlkZGVuID0gZmFsc2U7CkBAIC0xMzk2NSw3ICsxMDg3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUeXBlQ29kZSA9IEFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuUkVBU09OX1NFUlZJQ0VfSU5fVVNFOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqU291cmNlID0gY3IuYmluZGluZy5jbGllbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUYXJnZXQgPSBzLnNlcnZpY2VJbmZvLm5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUYXJnZXQgPSBzLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY3IuZmxhZ3MmQ29udGV4dC5CSU5EX05PVF9GT1JFR1JPVU5EKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnQuY3VyU2NoZWRHcm91cCA9PSBQcm9jZXNzLlRIUkVBRF9HUk9VUF9ERUZBVUxUKSB7CkBAIC0xMzk3Myw3ICsxMDg4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIGEgPSBjci5hY3Rpdml0eTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIGEgPSBjci5hY3Rpdml0eTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKGEgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgU2xvZy5pKFRBRywgIkNvbm5lY3Rpb24gdG8gIiArIGEgIjogc3RhdGU9IiArIGEuc3RhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy99CkBAIC0xMzk4Nyw3ICsxMDkwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmFkalR5cGVDb2RlID0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlJFQVNPTl9TRVJWSUNFX0lOX1VTRTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqU291cmNlID0gYTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqVGFyZ2V0ID0gcy5zZXJ2aWNlSW5mby5uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUYXJnZXQgPSBzLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xNDAwNywxMCArMTA5MjAsMTAgQEAKIAogICAgICAgICBpZiAoYXBwLnB1YlByb3ZpZGVycy5zaXplKCkgIT0gMCAmJiAoYWRqID4gRk9SRUdST1VORF9BUFBfQURKCiAgICAgICAgICAgICAgICAgfHwgc2NoZWRHcm91cCA9PSBQcm9jZXNzLlRIUkVBRF9HUk9VUF9CR19OT05JTlRFUkFDVElWRSkpIHsKLSAgICAgICAgICAgIEl0ZXJhdG9yIGp0ID0gYXBwLnB1YlByb3ZpZGVycy52YWx1ZXMoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgSXRlcmF0b3I8Q29udGVudFByb3ZpZGVyUmVjb3JkPiBqdCA9IGFwcC5wdWJQcm92aWRlcnMudmFsdWVzKCkuaXRlcmF0b3IoKTsKICAgICAgICAgICAgIHdoaWxlIChqdC5oYXNOZXh0KCkgJiYgKGFkaiA+IEZPUkVHUk9VTkRfQVBQX0FESgogICAgICAgICAgICAgICAgICAgICB8fCBzY2hlZEdyb3VwID09IFByb2Nlc3MuVEhSRUFEX0dST1VQX0JHX05PTklOVEVSQUNUSVZFKSkgewotICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSAoQ29udGVudFByb3ZpZGVyUmVjb3JkKWp0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0ganQubmV4dCgpOwogICAgICAgICAgICAgICAgIGlmIChjcHIuY2xpZW50cy5zaXplKCkgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBJdGVyYXRvcjxQcm9jZXNzUmVjb3JkPiBrdCA9IGNwci5jbGllbnRzLml0ZXJhdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChrdC5oYXNOZXh0KCkgJiYgYWRqID4gRk9SRUdST1VORF9BUFBfQURKKSB7CkBAIC0xNDAzOSw3ICsxMDk1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmFkalR5cGVDb2RlID0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlJFQVNPTl9QUk9WSURFUl9JTl9VU0U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmFkalNvdXJjZSA9IGNsaWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqVGFyZ2V0ID0gY3ByLmluZm8ubmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqVGFyZ2V0ID0gY3ByLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50LmN1clNjaGVkR3JvdXAgPT0gUHJvY2Vzcy5USFJFQURfR1JPVVBfREVGQVVMVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkR3JvdXAgPSBQcm9jZXNzLlRIUkVBRF9HUk9VUF9ERUZBVUxUOwpAQCAtMTQwNTUsNyArMTA5NjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWRHcm91cCA9IFByb2Nlc3MuVEhSRUFEX0dST1VQX0RFRkFVTFQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuaGlkZGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqVHlwZSA9ICJwcm92aWRlciI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqVGFyZ2V0ID0gY3ByLmluZm8ubmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUYXJnZXQgPSBjcHIubmFtZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE0MDY3LDcgKzEwOTgwLDcgQEAKICAgICAgICAgLy8gICAgICAiIGFkaj0iICsgYWRqICsgIiBjdXJBZGo9IiArIGFwcC5jdXJBZGogKyAiIG1heEFkaj0iICsgYXBwLm1heEFkaik7CiAgICAgICAgIGlmIChhZGogPiBhcHAubWF4QWRqKSB7CiAgICAgICAgICAgICBhZGogPSBhcHAubWF4QWRqOwotICAgICAgICAgICAgaWYgKGFwcC5tYXhBZGogPD0gVklTSUJMRV9BUFBfQURKKSB7CisgICAgICAgICAgICBpZiAoYXBwLm1heEFkaiA8PSBQRVJDRVBUSUJMRV9BUFBfQURKKSB7CiAgICAgICAgICAgICAgICAgc2NoZWRHcm91cCA9IFByb2Nlc3MuVEhSRUFEX0dST1VQX0RFRkFVTFQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0MTAzLDggKzExMDE2LDggQEAKICAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gY2FuR2NOb3dMb2NrZWQoKSB7CiAgICAgICAgIHJldHVybiBtUGFyYWxsZWxCcm9hZGNhc3RzLnNpemUoKSA9PSAwCiAgICAgICAgICAgICAgICAgJiYgbU9yZGVyZWRCcm9hZGNhc3RzLnNpemUoKSA9PSAwCi0gICAgICAgICAgICAgICAgJiYgKG1TbGVlcGluZyB8fCAobVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBtUmVzdW1lZEFjdGl2aXR5LmlkbGUpKTsKKyAgICAgICAgICAgICAgICAmJiAobVNsZWVwaW5nIHx8IChtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbU1haW5TdGFjay5tUmVzdW1lZEFjdGl2aXR5LmlkbGUpKTsKICAgICB9CiAgICAgCiAgICAgLyoqCkBAIC0xNDExOSw3ICsxMTAzMiw3IEBACiAgICAgICAgIGlmIChjYW5HY05vd0xvY2tlZCgpKSB7CiAgICAgICAgICAgICB3aGlsZSAobVByb2Nlc3Nlc1RvR2Muc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcHJvYyA9IG1Qcm9jZXNzZXNUb0djLnJlbW92ZSgwKTsKLSAgICAgICAgICAgICAgICBpZiAocHJvYy5jdXJSYXdBZGogPiBWSVNJQkxFX0FQUF9BREogfHwgcHJvYy5yZXBvcnRMb3dNZW1vcnkpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvYy5jdXJSYXdBZGogPiBQRVJDRVBUSUJMRV9BUFBfQURKIHx8IHByb2MucmVwb3J0TG93TWVtb3J5KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvYy5sYXN0UmVxdWVzdGVkR2MrR0NfTUlOX0lOVEVSVkFMKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUbyBhdm9pZCBzcGFtbWluZyB0aGUgc3lzdGVtLCB3ZSB3aWxsIEdDIHByb2Nlc3NlcyBvbmUKQEAgLTE0Mjc0LDE5ICsxMTE4NywxOSBAQAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIEhpc3RvcnlSZWNvcmQgcmVzdW1lZEFwcExvY2tlZCgpIHsKLSAgICAgICAgSGlzdG9yeVJlY29yZCByZXN1bWVkQWN0aXZpdHkgPSBtUmVzdW1lZEFjdGl2aXR5OworICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHlSZWNvcmQgcmVzdW1lZEFwcExvY2tlZCgpIHsKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgcmVzdW1lZEFjdGl2aXR5ID0gbU1haW5TdGFjay5tUmVzdW1lZEFjdGl2aXR5OwogICAgICAgICBpZiAocmVzdW1lZEFjdGl2aXR5ID09IG51bGwgfHwgcmVzdW1lZEFjdGl2aXR5LmFwcCA9PSBudWxsKSB7Ci0gICAgICAgICAgICByZXN1bWVkQWN0aXZpdHkgPSBtUGF1c2luZ0FjdGl2aXR5OworICAgICAgICAgICAgcmVzdW1lZEFjdGl2aXR5ID0gbU1haW5TdGFjay5tUGF1c2luZ0FjdGl2aXR5OwogICAgICAgICAgICAgaWYgKHJlc3VtZWRBY3Rpdml0eSA9PSBudWxsIHx8IHJlc3VtZWRBY3Rpdml0eS5hcHAgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJlc3VtZWRBY3Rpdml0eSA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICByZXN1bWVkQWN0aXZpdHkgPSBtTWFpblN0YWNrLnRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdW1lZEFjdGl2aXR5OwogICAgIH0KIAogICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiB1cGRhdGVPb21BZGpMb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHApIHsKLSAgICAgICAgZmluYWwgSGlzdG9yeVJlY29yZCBUT1BfQUNUID0gcmVzdW1lZEFwcExvY2tlZCgpOworICAgICAgICBmaW5hbCBBY3Rpdml0eVJlY29yZCBUT1BfQUNUID0gcmVzdW1lZEFwcExvY2tlZCgpOwogICAgICAgICBmaW5hbCBQcm9jZXNzUmVjb3JkIFRPUF9BUFAgPSBUT1BfQUNUICE9IG51bGwgPyBUT1BfQUNULmFwcCA6IG51bGw7CiAgICAgICAgIGludCBjdXJBZGogPSBhcHAuY3VyQWRqOwogICAgICAgICBmaW5hbCBib29sZWFuIHdhc0hpZGRlbiA9IGFwcC5jdXJBZGogPj0gSElEREVOX0FQUF9NSU5fQURKCkBAIC0xNDMwNyw5ICsxMTIyMCw5IEBACiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHVwZGF0ZU9vbUFkakxvY2tlZCgpIHsKKyAgICBmaW5hbCBib29sZWFuIHVwZGF0ZU9vbUFkakxvY2tlZCgpIHsKICAgICAgICAgYm9vbGVhbiBkaWRPb21BZGogPSB0cnVlOwotICAgICAgICBmaW5hbCBIaXN0b3J5UmVjb3JkIFRPUF9BQ1QgPSByZXN1bWVkQXBwTG9ja2VkKCk7CisgICAgICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIFRPUF9BQ1QgPSByZXN1bWVkQXBwTG9ja2VkKCk7CiAgICAgICAgIGZpbmFsIFByb2Nlc3NSZWNvcmQgVE9QX0FQUCA9IFRPUF9BQ1QgIT0gbnVsbCA/IFRPUF9BQ1QuYXBwIDogbnVsbDsKIAogICAgICAgICBpZiAoZmFsc2UpIHsKQEAgLTE0MzcxLDcgKzExMjg0LDcgQEAKICAgICAgICAgcmV0dXJuIEVORk9SQ0VfUFJPQ0VTU19MSU1JVCB8fCBtUHJvY2Vzc0xpbWl0ID4gMCA/IGZhbHNlIDogZGlkT29tQWRqOwogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCB0cmltQXBwbGljYXRpb25zKCkgeworICAgIGZpbmFsIHZvaWQgdHJpbUFwcGxpY2F0aW9ucygpIHsKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CiAgICAgICAgICAgICBpbnQgaTsKIApAQCAtMTQ0OTEsNyArMTE0MDQsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR1YpIFNsb2cudigKICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIkxvb2tpbmcgdG8gcXVpdCAiICsgYXBwLnByb2Nlc3NOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8TlVNQSAmJiBjYW5RdWl0OyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKWFwcC5hY3Rpdml0aWVzLmdldChqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBhcHAuYWN0aXZpdGllcy5nZXQoaik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR1YpIFNsb2cudigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICIgICIgKyByLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiBmcm96ZW49IiArIHIuaGF2ZVN0YXRlICsgIiwgdmlzaWJsZT0iICsgci52aXNpYmxlKTsKQEAgLTE0NTAxLDkgKzExNDE0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKGNhblF1aXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmlzaCBhbGwgb2YgdGhlIGFjdGl2aXRpZXMsIGFuZCB0aGVuIHRoZSBhcHAgaXRzZWxmLgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8TlVNQTsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpYXBwLmFjdGl2aXRpZXMuZ2V0KGopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBhcHAuYWN0aXZpdGllcy5nZXQoaik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95QWN0aXZpdHlMb2NrZWQociwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnN0YWNrLmRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzdWx0VG8gPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQ1NDAsMjUgKzExNDUzLDI1IEBACiAgICAgICAgICAgICAvLyBGaW5hbGx5LCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZpdGllcyBub3cgcnVubmluZywgdHJ5IHRvCiAgICAgICAgICAgICAvLyBmaW5pc2ggYXMgbWFueSBhcyB3ZSBjYW4gdG8gZ2V0IGJhY2sgZG93biB0byB0aGUgbGltaXQuCiAgICAgICAgICAgICBmb3IgKCAgIGk9MDsKLSAgICAgICAgICAgICAgICAgICAgaTxtTFJVQWN0aXZpdGllcy5zaXplKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIG1MUlVBY3Rpdml0aWVzLnNpemUoKSA+IGN1ck1heEFjdGl2aXRpZXM7CisgICAgICAgICAgICAgICAgICAgIGk8bU1haW5TdGFjay5tTFJVQWN0aXZpdGllcy5zaXplKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG1NYWluU3RhY2subUxSVUFjdGl2aXRpZXMuc2l6ZSgpID4gY3VyTWF4QWN0aXZpdGllczsKICAgICAgICAgICAgICAgICAgICAgaSsrKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgSGlzdG9yeVJlY29yZCByCi0gICAgICAgICAgICAgICAgICAgID0gKEhpc3RvcnlSZWNvcmQpbUxSVUFjdGl2aXRpZXMuZ2V0KGkpOworICAgICAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHIKKyAgICAgICAgICAgICAgICAgICAgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tTFJVQWN0aXZpdGllcy5nZXQoaSk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSBjYW4gZmluaXNoIHRoaXMgb25lIGlmIHdlIGhhdmUgaXRzIGljaWNsZSBzYXZlZCBhbmQKICAgICAgICAgICAgICAgICAvLyBpdCBpcyBub3QgcGVyc2lzdGVudC4KICAgICAgICAgICAgICAgICBpZiAoKHIuaGF2ZVN0YXRlIHx8ICFyLnN0YXRlTm90TmVlZGVkKSAmJiAhci52aXNpYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiByLnN0b3BwZWQgJiYgIXIucGVyc2lzdGVudCAmJiAhci5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IG9yaWdTaXplID0gbUxSVUFjdGl2aXRpZXMuc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBkZXN0cm95QWN0aXZpdHlMb2NrZWQociwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBvcmlnU2l6ZSA9IG1NYWluU3RhY2subUxSVUFjdGl2aXRpZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICByLnN0YWNrLmRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmVtb3ZlIGl0IGZyb20gdGhlIExSVSBsaXN0LCBzbyBrZWVwCiAgICAgICAgICAgICAgICAgICAgIC8vIG91ciBpbmRleCBhdCB0aGUgc2FtZSB2YWx1ZS4gIE5vdGUgdGhhdCB0aGlzIGNoZWNrIHRvCiAgICAgICAgICAgICAgICAgICAgIC8vIHNlZSBpZiB0aGUgc2l6ZSBjaGFuZ2VzIGlzIGp1c3QgcGFyYW5vaWEgLS0gaWYKICAgICAgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIHVuZXhwZWN0ZWQgaGFwcGVucywgd2UgZG9uJ3Qgd2FudCB0byBlbmQgdXAKICAgICAgICAgICAgICAgICAgICAgLy8gaW4gYW4gaW5maW5pdGUgbG9vcC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdTaXplID4gbUxSVUFjdGl2aXRpZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnU2l6ZSA+IG1NYWluU3RhY2subUxSVUFjdGl2aXRpZXMuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVJlY29yZC5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlSZWNvcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTc1NmE3Ci0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlSZWNvcmQuamF2YQpAQCAtMCwwICsxLDU4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLmFtOworCitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLkF0dHJpYnV0ZUNhY2hlOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eVN0YWNrLkFjdGl2aXR5U3RhdGU7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5CaXRtYXA7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOworaW1wb3J0IGFuZHJvaWQub3MuUHJvY2VzczsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQudXRpbC5FdmVudExvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5JQXBwbGljYXRpb25Ub2tlbjsKKworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CisKKy8qKgorICogQW4gZW50cnkgaW4gdGhlIGhpc3Rvcnkgc3RhY2ssIHJlcHJlc2VudGluZyBhbiBhY3Rpdml0eS4KKyAqLworY2xhc3MgQWN0aXZpdHlSZWNvcmQgZXh0ZW5kcyBJQXBwbGljYXRpb25Ub2tlbi5TdHViIHsKKyAgICBmaW5hbCBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIHNlcnZpY2U7IC8vIG93bmVyCisgICAgZmluYWwgQWN0aXZpdHlTdGFjayBzdGFjazsgLy8gb3duZXIKKyAgICBmaW5hbCBBY3Rpdml0eUluZm8gaW5mbzsgLy8gYWxsIGFib3V0IG1lCisgICAgZmluYWwgaW50IGxhdW5jaGVkRnJvbVVpZDsgLy8gYWx3YXlzIHRoZSB1aWQgd2hvIHN0YXJ0ZWQgdGhlIGFjdGl2aXR5LgorICAgIGZpbmFsIEludGVudCBpbnRlbnQ7ICAgIC8vIHRoZSBvcmlnaW5hbCBpbnRlbnQgdGhhdCBnZW5lcmF0ZWQgdXMKKyAgICBmaW5hbCBDb21wb25lbnROYW1lIHJlYWxBY3Rpdml0eTsgIC8vIHRoZSBpbnRlbnQgY29tcG9uZW50LCBvciB0YXJnZXQgb2YgYW4gYWxpYXMuCisgICAgZmluYWwgU3RyaW5nIHNob3J0Q29tcG9uZW50TmFtZTsgLy8gdGhlIHNob3J0IGNvbXBvbmVudCBuYW1lIG9mIHRoZSBpbnRlbnQKKyAgICBmaW5hbCBTdHJpbmcgcmVzb2x2ZWRUeXBlOyAvLyBhcyBwZXIgb3JpZ2luYWwgY2FsbGVyOworICAgIGZpbmFsIFN0cmluZyBwYWNrYWdlTmFtZTsgLy8gdGhlIHBhY2thZ2UgaW1wbGVtZW50aW5nIGludGVudCdzIGNvbXBvbmVudAorICAgIGZpbmFsIFN0cmluZyBwcm9jZXNzTmFtZTsgLy8gcHJvY2VzcyB3aGVyZSB0aGlzIGNvbXBvbmVudCB3YW50cyB0byBydW4KKyAgICBmaW5hbCBTdHJpbmcgdGFza0FmZmluaXR5OyAvLyBhcyBwZXIgQWN0aXZpdHlJbmZvLnRhc2tBZmZpbml0eQorICAgIGZpbmFsIGJvb2xlYW4gc3RhdGVOb3ROZWVkZWQ7IC8vIEFzIHBlciBBY3Rpdml0eUluZm8uZmxhZ3MKKyAgICBmaW5hbCBib29sZWFuIGZ1bGxzY3JlZW47ICAgICAvLyBjb3ZlcnMgdGhlIGZ1bGwgc2NyZWVuPworICAgIGZpbmFsIGJvb2xlYW4gY29tcG9uZW50U3BlY2lmaWVkOyAgLy8gZGlkIGNhbGxlciBzcGVjaWZpeSBhbiBleHBsaWNpdCBjb21wb25lbnQ/CisgICAgZmluYWwgYm9vbGVhbiBpc0hvbWVBY3Rpdml0eTsgLy8gZG8gd2UgY29uc2lkZXIgdGhpcyB0byBiZSBhIGhvbWUgYWN0aXZpdHk/CisgICAgZmluYWwgU3RyaW5nIGJhc2VEaXI7ICAgLy8gd2hlcmUgYWN0aXZpdHkgc291cmNlIChyZXNvdXJjZXMgZXRjKSBsb2NhdGVkCisgICAgZmluYWwgU3RyaW5nIHJlc0RpcjsgICAvLyB3aGVyZSBwdWJsaWMgYWN0aXZpdHkgc291cmNlIChwdWJsaWMgcmVzb3VyY2VzIGV0YykgbG9jYXRlZAorICAgIGZpbmFsIFN0cmluZyBkYXRhRGlyOyAgIC8vIHdoZXJlIGFjdGl2aXR5IGRhdGEgc2hvdWxkIGdvCisgICAgQ2hhclNlcXVlbmNlIG5vbkxvY2FsaXplZExhYmVsOyAgLy8gdGhlIGxhYmVsIGluZm9ybWF0aW9uIGZyb20gdGhlIHBhY2thZ2UgbWdyLgorICAgIGludCBsYWJlbFJlczsgICAgICAgICAgIC8vIHRoZSBsYWJlbCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYWNrYWdlIG1nci4KKyAgICBpbnQgaWNvbjsgICAgICAgICAgICAgICAvLyByZXNvdXJjZSBpZGVudGlmaWVyIG9mIGFjdGl2aXR5J3MgaWNvbi4KKyAgICBpbnQgdGhlbWU7ICAgICAgICAgICAgICAvLyByZXNvdXJjZSBpZGVudGlmaWVyIG9mIGFjdGl2aXR5J3MgdGhlbWUuCisgICAgVGFza1JlY29yZCB0YXNrOyAgICAgICAgLy8gdGhlIHRhc2sgdGhpcyBpcyBpbi4KKyAgICBsb25nIHN0YXJ0VGltZTsgICAgICAgICAvLyB3aGVuIHdlIHN0YXJ0aW5nIGxhdW5jaGluZyB0aGlzIGFjdGl2aXR5CisgICAgbG9uZyBjcHVUaW1lQXRSZXN1bWU7ICAgLy8gdGhlIGNwdSB0aW1lIG9mIGhvc3QgcHJvY2VzcyBhdCB0aGUgdGltZSBvZiByZXN1bWluZyBhY3Rpdml0eQorICAgIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsgLy8gY29uZmlndXJhdGlvbiBhY3Rpdml0eSB3YXMgbGFzdCBydW5uaW5nIGluCisgICAgQWN0aXZpdHlSZWNvcmQgcmVzdWx0VG87IC8vIHdobyBzdGFydGVkIHRoaXMgZW50cnksIHNvIHdpbGwgZ2V0IG91ciByZXBseQorICAgIGZpbmFsIFN0cmluZyByZXN1bHRXaG87IC8vIGFkZGl0aW9uYWwgaWRlbnRpZmllciBmb3IgdXNlIGJ5IHJlc3VsdFRvLgorICAgIGZpbmFsIGludCByZXF1ZXN0Q29kZTsgIC8vIGNvZGUgZ2l2ZW4gYnkgcmVxdWVzdGVyIChyZXN1bHRUbykKKyAgICBBcnJheUxpc3QgcmVzdWx0czsgICAgICAvLyBwZW5kaW5nIEFjdGl2aXR5UmVzdWx0IG9ianMgd2UgaGF2ZSByZWNlaXZlZAorICAgIEhhc2hTZXQ8V2Vha1JlZmVyZW5jZTxQZW5kaW5nSW50ZW50UmVjb3JkPj4gcGVuZGluZ1Jlc3VsdHM7IC8vIGFsbCBwZW5kaW5nIGludGVudHMgZm9yIHRoaXMgYWN0CisgICAgQXJyYXlMaXN0IG5ld0ludGVudHM7ICAgLy8gYW55IHBlbmRpbmcgbmV3IGludGVudHMgZm9yIHNpbmdsZS10b3AgbW9kZQorICAgIEhhc2hTZXQ8Q29ubmVjdGlvblJlY29yZD4gY29ubmVjdGlvbnM7IC8vIEFsbCBDb25uZWN0aW9uUmVjb3JkIHdlIGhvbGQKKyAgICBIYXNoU2V0PFVyaVBlcm1pc3Npb24+IHJlYWRVcmlQZXJtaXNzaW9uczsgLy8gc3BlY2lhbCBhY2Nlc3MgdG8gcmVhZGluZyB1cmlzLgorICAgIEhhc2hTZXQ8VXJpUGVybWlzc2lvbj4gd3JpdGVVcmlQZXJtaXNzaW9uczsgLy8gc3BlY2lhbCBhY2Nlc3MgdG8gd3JpdGluZyB1cmlzLgorICAgIFByb2Nlc3NSZWNvcmQgYXBwOyAgLy8gaWYgbm9uLW51bGwsIGhvc3RpbmcgYXBwbGljYXRpb24KKyAgICBCaXRtYXAgdGh1bWJuYWlsOyAgICAgICAvLyBpY29uIHJlcHJlc2VudGF0aW9uIG9mIHBhdXNlZCBzY3JlZW4KKyAgICBDaGFyU2VxdWVuY2UgZGVzY3JpcHRpb247IC8vIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgcGF1c2VkIHNjcmVlbgorICAgIEFjdGl2aXR5U3RhdGUgc3RhdGU7ICAgIC8vIGN1cnJlbnQgc3RhdGUgd2UgYXJlIGluCisgICAgQnVuZGxlICBpY2ljbGU7ICAgICAgICAgLy8gbGFzdCBzYXZlZCBhY3Rpdml0eSBzdGF0ZQorICAgIGJvb2xlYW4gZnJvbnRPZlRhc2s7ICAgIC8vIGlzIHRoaXMgdGhlIHJvb3QgYWN0aXZpdHkgb2YgaXRzIHRhc2s/CisgICAgYm9vbGVhbiBsYXVuY2hGYWlsZWQ7ICAgLy8gc2V0IGlmIGEgbGF1bmNoZWQgZmFpbGVkLCB0byBhYm9ydCBvbiAybmQgdHJ5CisgICAgYm9vbGVhbiBoYXZlU3RhdGU7ICAgICAgLy8gaGF2ZSB3ZSBnb3R0ZW4gdGhlIGxhc3QgYWN0aXZpdHkgc3RhdGU/CisgICAgYm9vbGVhbiBzdG9wcGVkOyAgICAgICAgLy8gaXMgYWN0aXZpdHkgcGF1c2UgZmluaXNoZWQ/CisgICAgYm9vbGVhbiBkZWxheWVkUmVzdW1lOyAgLy8gbm90IHlldCByZXN1bWVkIGJlY2F1c2Ugb2Ygc3RvcHBlZCBhcHAgc3dpdGNoZXM/CisgICAgYm9vbGVhbiBmaW5pc2hpbmc7ICAgICAgLy8gYWN0aXZpdHkgaW4gcGVuZGluZyBmaW5pc2ggbGlzdD8KKyAgICBib29sZWFuIGNvbmZpZ0Rlc3Ryb3k7ICAvLyBuZWVkIHRvIGRlc3Ryb3kgZHVlIHRvIGNvbmZpZyBjaGFuZ2U/CisgICAgaW50IGNvbmZpZ0NoYW5nZUZsYWdzOyAgLy8gd2hpY2ggY29uZmlnIHZhbHVlcyBoYXZlIGNoYW5nZWQKKyAgICBib29sZWFuIGtleXNQYXVzZWQ7ICAgICAvLyBoYXMga2V5IGRpc3BhdGNoaW5nIGJlZW4gcGF1c2VkIGZvciBpdD8KKyAgICBib29sZWFuIGluSGlzdG9yeTsgICAgICAvLyBhcmUgd2UgaW4gdGhlIGhpc3Rvcnkgc3RhY2s/CisgICAgYm9vbGVhbiBwZXJzaXN0ZW50OyAgICAgLy8gcmVxdWVzdGVkIHRvIGJlIHBlcnNpc3RlbnQ/CisgICAgaW50IGxhdW5jaE1vZGU7ICAgICAgICAgLy8gdGhlIGxhdW5jaCBtb2RlIGFjdGl2aXR5IGF0dHJpYnV0ZS4KKyAgICBib29sZWFuIHZpc2libGU7ICAgICAgICAvLyBkb2VzIHRoaXMgYWN0aXZpdHkncyB3aW5kb3cgbmVlZCB0byBiZSBzaG93bj8KKyAgICBib29sZWFuIHdhaXRpbmdWaXNpYmxlOyAvLyB0cnVlIGlmIHdhaXRpbmcgZm9yIGEgbmV3IGFjdCB0byBiZWNvbWUgdmlzCisgICAgYm9vbGVhbiBub3dWaXNpYmxlOyAgICAgLy8gaXMgdGhpcyBhY3Rpdml0eSdzIHdpbmRvdyB2aXNpYmxlPworICAgIGJvb2xlYW4gdGh1bWJuYWlsTmVlZGVkOy8vIGhhcyBzb21lb25lIHJlcXVlc3RlZCBhIHRodW1ibmFpbD8KKyAgICBib29sZWFuIGlkbGU7ICAgICAgICAgICAvLyBoYXMgdGhlIGFjdGl2aXR5IGdvbmUgaWRsZT8KKyAgICBib29sZWFuIGhhc0JlZW5MYXVuY2hlZDsvLyBoYXMgdGhpcyBhY3Rpdml0eSBldmVyIGJlZW4gbGF1bmNoZWQ/CisgICAgYm9vbGVhbiBmcm96ZW5CZWZvcmVEZXN0cm95Oy8vIGhhcyBiZWVuIGZyb3plbiBidXQgbm90IHlldCBkZXN0cm95ZWQuCisgICAgYm9vbGVhbiBpbW1lcnNpdmU7ICAgICAgLy8gaW1tZXJzaXZlIG1vZGUgKGRvbid0IGludGVycnVwdCBpZiBwb3NzaWJsZSkKKworICAgIFN0cmluZyBzdHJpbmdOYW1lOyAgICAgIC8vIGZvciBjYWNoaW5nIG9mIHRvU3RyaW5nKCkuCisgICAgCisgICAgdm9pZCBkdW1wKFByaW50V3JpdGVyIHB3LCBTdHJpbmcgcHJlZml4KSB7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJwYWNrYWdlTmFtZT0iKTsgcHcucHJpbnQocGFja2FnZU5hbWUpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgcHJvY2Vzc05hbWU9Iik7IHB3LnByaW50bG4ocHJvY2Vzc05hbWUpOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgibGF1bmNoZWRGcm9tVWlkPSIpOyBwdy5wcmludChsYXVuY2hlZEZyb21VaWQpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgYXBwPSIpOyBwdy5wcmludGxuKGFwcCk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50bG4oaW50ZW50KTsKKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImZyb250T2ZUYXNrPSIpOyBwdy5wcmludChmcm9udE9mVGFzayk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiB0YXNrPSIpOyBwdy5wcmludGxuKHRhc2spOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgidGFza0FmZmluaXR5PSIpOyBwdy5wcmludGxuKHRhc2tBZmZpbml0eSk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJyZWFsQWN0aXZpdHk9Iik7CisgICAgICAgICAgICAgICAgcHcucHJpbnRsbihyZWFsQWN0aXZpdHkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKSk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJiYXNlPSIpOyBwdy5wcmludChiYXNlRGlyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc0Rpci5lcXVhbHMoYmFzZURpcikpIHB3LnByaW50KCIgcmVzPSIpOyBwdy5wcmludChyZXNEaXIpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgZGF0YT0iKTsgcHcucHJpbnRsbihkYXRhRGlyKTsKKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImxhYmVsUmVzPTB4Iik7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoSW50ZWdlci50b0hleFN0cmluZyhsYWJlbFJlcykpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaWNvbj0weCIpOyBwdy5wcmludChJbnRlZ2VyLnRvSGV4U3RyaW5nKGljb24pKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIHRoZW1lPTB4Iik7IHB3LnByaW50bG4oSW50ZWdlci50b0hleFN0cmluZyh0aGVtZSkpOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgic3RhdGVOb3ROZWVkZWQ9Iik7IHB3LnByaW50KHN0YXRlTm90TmVlZGVkKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIGNvbXBvbmVudFNwZWNpZmllZD0iKTsgcHcucHJpbnQoY29tcG9uZW50U3BlY2lmaWVkKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIGlzSG9tZUFjdGl2aXR5PSIpOyBwdy5wcmludGxuKGlzSG9tZUFjdGl2aXR5KTsKKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImNvbmZpZ3VyYXRpb249Iik7IHB3LnByaW50bG4oY29uZmlndXJhdGlvbik7CisgICAgICAgIGlmIChyZXN1bHRUbyAhPSBudWxsIHx8IHJlc3VsdFdobyAhPSBudWxsKSB7CisgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgicmVzdWx0VG89Iik7IHB3LnByaW50KHJlc3VsdFRvKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiByZXN1bHRXaG89Iik7IHB3LnByaW50KHJlc3VsdFdobyk7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgcmVzdWx0Q29kZT0iKTsgcHcucHJpbnRsbihyZXF1ZXN0Q29kZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdHMgIT0gbnVsbCkgeworICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInJlc3VsdHM9Iik7IHB3LnByaW50bG4ocmVzdWx0cyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBlbmRpbmdSZXN1bHRzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJwZW5kaW5nUmVzdWx0cz0iKTsgcHcucHJpbnRsbihwZW5kaW5nUmVzdWx0cyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlYWRVcmlQZXJtaXNzaW9ucyAhPSBudWxsKSB7CisgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgicmVhZFVyaVBlcm1pc3Npb25zPSIpOyBwdy5wcmludGxuKHJlYWRVcmlQZXJtaXNzaW9ucyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdyaXRlVXJpUGVybWlzc2lvbnMgIT0gbnVsbCkgeworICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIndyaXRlVXJpUGVybWlzc2lvbnM9Iik7IHB3LnByaW50bG4od3JpdGVVcmlQZXJtaXNzaW9ucyk7CisgICAgICAgIH0KKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImxhdW5jaEZhaWxlZD0iKTsgcHcucHJpbnQobGF1bmNoRmFpbGVkKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIGhhdmVTdGF0ZT0iKTsgcHcucHJpbnQoaGF2ZVN0YXRlKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIGljaWNsZT0iKTsgcHcucHJpbnRsbihpY2ljbGUpOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgic3RhdGU9Iik7IHB3LnByaW50KHN0YXRlKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIHN0b3BwZWQ9Iik7IHB3LnByaW50KHN0b3BwZWQpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgZGVsYXllZFJlc3VtZT0iKTsgcHcucHJpbnQoZGVsYXllZFJlc3VtZSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBmaW5pc2hpbmc9Iik7IHB3LnByaW50bG4oZmluaXNoaW5nKTsKKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImtleXNQYXVzZWQ9Iik7IHB3LnByaW50KGtleXNQYXVzZWQpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaW5IaXN0b3J5PSIpOyBwdy5wcmludChpbkhpc3RvcnkpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgcGVyc2lzdGVudD0iKTsgcHcucHJpbnQocGVyc2lzdGVudCk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBpbW1lcnNpdmU9Iik7IHB3LnByaW50KGltbWVyc2l2ZSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBsYXVuY2hNb2RlPSIpOyBwdy5wcmludGxuKGxhdW5jaE1vZGUpOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiZnVsbHNjcmVlbj0iKTsgcHcucHJpbnQoZnVsbHNjcmVlbik7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiB2aXNpYmxlPSIpOyBwdy5wcmludCh2aXNpYmxlKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIGZyb3plbkJlZm9yZURlc3Ryb3k9Iik7IHB3LnByaW50KGZyb3plbkJlZm9yZURlc3Ryb3kpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgdGh1bWJuYWlsTmVlZGVkPSIpOyBwdy5wcmludCh0aHVtYm5haWxOZWVkZWQpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaWRsZT0iKTsgcHcucHJpbnRsbihpZGxlKTsKKyAgICAgICAgaWYgKHdhaXRpbmdWaXNpYmxlIHx8IG5vd1Zpc2libGUpIHsKKyAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJ3YWl0aW5nVmlzaWJsZT0iKTsgcHcucHJpbnQod2FpdGluZ1Zpc2libGUpOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIG5vd1Zpc2libGU9Iik7IHB3LnByaW50bG4obm93VmlzaWJsZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmZpZ0Rlc3Ryb3kgfHwgY29uZmlnQ2hhbmdlRmxhZ3MgIT0gMCkgeworICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImNvbmZpZ0Rlc3Ryb3k9Iik7IHB3LnByaW50KGNvbmZpZ0Rlc3Ryb3kpOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIGNvbmZpZ0NoYW5nZUZsYWdzPSIpOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKEludGVnZXIudG9IZXhTdHJpbmcoY29uZmlnQ2hhbmdlRmxhZ3MpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29ubmVjdGlvbnMgIT0gbnVsbCkgeworICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImNvbm5lY3Rpb25zPSIpOyBwdy5wcmludGxuKGNvbm5lY3Rpb25zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFjdGl2aXR5UmVjb3JkKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UgX3NlcnZpY2UsIEFjdGl2aXR5U3RhY2sgX3N0YWNrLCBQcm9jZXNzUmVjb3JkIF9jYWxsZXIsCisgICAgICAgICAgICBpbnQgX2xhdW5jaGVkRnJvbVVpZCwgSW50ZW50IF9pbnRlbnQsIFN0cmluZyBfcmVzb2x2ZWRUeXBlLAorICAgICAgICAgICAgQWN0aXZpdHlJbmZvIGFJbmZvLCBDb25maWd1cmF0aW9uIF9jb25maWd1cmF0aW9uLAorICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgX3Jlc3VsdFRvLCBTdHJpbmcgX3Jlc3VsdFdobywgaW50IF9yZXFDb2RlLAorICAgICAgICAgICAgYm9vbGVhbiBfY29tcG9uZW50U3BlY2lmaWVkKSB7CisgICAgICAgIHNlcnZpY2UgPSBfc2VydmljZTsKKyAgICAgICAgc3RhY2sgPSBfc3RhY2s7CisgICAgICAgIGluZm8gPSBhSW5mbzsKKyAgICAgICAgbGF1bmNoZWRGcm9tVWlkID0gX2xhdW5jaGVkRnJvbVVpZDsKKyAgICAgICAgaW50ZW50ID0gX2ludGVudDsKKyAgICAgICAgc2hvcnRDb21wb25lbnROYW1lID0gX2ludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpOworICAgICAgICByZXNvbHZlZFR5cGUgPSBfcmVzb2x2ZWRUeXBlOworICAgICAgICBjb21wb25lbnRTcGVjaWZpZWQgPSBfY29tcG9uZW50U3BlY2lmaWVkOworICAgICAgICBjb25maWd1cmF0aW9uID0gX2NvbmZpZ3VyYXRpb247CisgICAgICAgIHJlc3VsdFRvID0gX3Jlc3VsdFRvOworICAgICAgICByZXN1bHRXaG8gPSBfcmVzdWx0V2hvOworICAgICAgICByZXF1ZXN0Q29kZSA9IF9yZXFDb2RlOworICAgICAgICBzdGF0ZSA9IEFjdGl2aXR5U3RhdGUuSU5JVElBTElaSU5HOworICAgICAgICBmcm9udE9mVGFzayA9IGZhbHNlOworICAgICAgICBsYXVuY2hGYWlsZWQgPSBmYWxzZTsKKyAgICAgICAgaGF2ZVN0YXRlID0gZmFsc2U7CisgICAgICAgIHN0b3BwZWQgPSBmYWxzZTsKKyAgICAgICAgZGVsYXllZFJlc3VtZSA9IGZhbHNlOworICAgICAgICBmaW5pc2hpbmcgPSBmYWxzZTsKKyAgICAgICAgY29uZmlnRGVzdHJveSA9IGZhbHNlOworICAgICAgICBrZXlzUGF1c2VkID0gZmFsc2U7CisgICAgICAgIGluSGlzdG9yeSA9IGZhbHNlOworICAgICAgICBwZXJzaXN0ZW50ID0gZmFsc2U7CisgICAgICAgIHZpc2libGUgPSB0cnVlOworICAgICAgICB3YWl0aW5nVmlzaWJsZSA9IGZhbHNlOworICAgICAgICBub3dWaXNpYmxlID0gZmFsc2U7CisgICAgICAgIHRodW1ibmFpbE5lZWRlZCA9IGZhbHNlOworICAgICAgICBpZGxlID0gZmFsc2U7CisgICAgICAgIGhhc0JlZW5MYXVuY2hlZCA9IGZhbHNlOworCisgICAgICAgIGlmIChhSW5mbyAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoYUluZm8udGFyZ2V0QWN0aXZpdHkgPT0gbnVsbAorICAgICAgICAgICAgICAgICAgICB8fCBhSW5mby5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfTVVMVElQTEUKKyAgICAgICAgICAgICAgICAgICAgfHwgYUluZm8ubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UT1ApIHsKKyAgICAgICAgICAgICAgICByZWFsQWN0aXZpdHkgPSBfaW50ZW50LmdldENvbXBvbmVudCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWFsQWN0aXZpdHkgPSBuZXcgQ29tcG9uZW50TmFtZShhSW5mby5wYWNrYWdlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFJbmZvLnRhcmdldEFjdGl2aXR5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhc2tBZmZpbml0eSA9IGFJbmZvLnRhc2tBZmZpbml0eTsKKyAgICAgICAgICAgIHN0YXRlTm90TmVlZGVkID0gKGFJbmZvLmZsYWdzJgorICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eUluZm8uRkxBR19TVEFURV9OT1RfTkVFREVEKSAhPSAwOworICAgICAgICAgICAgYmFzZURpciA9IGFJbmZvLmFwcGxpY2F0aW9uSW5mby5zb3VyY2VEaXI7CisgICAgICAgICAgICByZXNEaXIgPSBhSW5mby5hcHBsaWNhdGlvbkluZm8ucHVibGljU291cmNlRGlyOworICAgICAgICAgICAgZGF0YURpciA9IGFJbmZvLmFwcGxpY2F0aW9uSW5mby5kYXRhRGlyOworICAgICAgICAgICAgbm9uTG9jYWxpemVkTGFiZWwgPSBhSW5mby5ub25Mb2NhbGl6ZWRMYWJlbDsKKyAgICAgICAgICAgIGxhYmVsUmVzID0gYUluZm8ubGFiZWxSZXM7CisgICAgICAgICAgICBpZiAobm9uTG9jYWxpemVkTGFiZWwgPT0gbnVsbCAmJiBsYWJlbFJlcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvIGFwcCA9IGFJbmZvLmFwcGxpY2F0aW9uSW5mbzsKKyAgICAgICAgICAgICAgICBub25Mb2NhbGl6ZWRMYWJlbCA9IGFwcC5ub25Mb2NhbGl6ZWRMYWJlbDsKKyAgICAgICAgICAgICAgICBsYWJlbFJlcyA9IGFwcC5sYWJlbFJlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGljb24gPSBhSW5mby5nZXRJY29uUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIHRoZW1lID0gYUluZm8uZ2V0VGhlbWVSZXNvdXJjZSgpOworICAgICAgICAgICAgaWYgKChhSW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19NVUxUSVBST0NFU1MpICE9IDAKKyAgICAgICAgICAgICAgICAgICAgJiYgX2NhbGxlciAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICYmIChhSW5mby5hcHBsaWNhdGlvbkluZm8udWlkID09IFByb2Nlc3MuU1lTVEVNX1VJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGFJbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgPT0gX2NhbGxlci5pbmZvLnVpZCkpIHsKKyAgICAgICAgICAgICAgICBwcm9jZXNzTmFtZSA9IF9jYWxsZXIucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByb2Nlc3NOYW1lID0gYUluZm8ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbnRlbnQgIT0gbnVsbCAmJiAoYUluZm8uZmxhZ3MgJiBBY3Rpdml0eUluZm8uRkxBR19FWENMVURFX0ZST01fUkVDRU5UUykgIT0gMCkgeworICAgICAgICAgICAgICAgIGludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBhY2thZ2VOYW1lID0gYUluZm8uYXBwbGljYXRpb25JbmZvLnBhY2thZ2VOYW1lOworICAgICAgICAgICAgbGF1bmNoTW9kZSA9IGFJbmZvLmxhdW5jaE1vZGU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEF0dHJpYnV0ZUNhY2hlLkVudHJ5IGVudCA9IEF0dHJpYnV0ZUNhY2hlLmluc3RhbmNlKCkuZ2V0KHBhY2thZ2VOYW1lLAorICAgICAgICAgICAgICAgICAgICB0aGVtZSAhPSAwID8gdGhlbWUgOiBhbmRyb2lkLlIuc3R5bGUuVGhlbWUsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvdyk7CisgICAgICAgICAgICBmdWxsc2NyZWVuID0gZW50ICE9IG51bGwgJiYgIWVudC5hcnJheS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dfd2luZG93SXNGbG9hdGluZywgZmFsc2UpCisgICAgICAgICAgICAgICAgICAgICYmICFlbnQuYXJyYXkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0lzVHJhbnNsdWNlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFfY29tcG9uZW50U3BlY2lmaWVkIHx8IF9sYXVuY2hlZEZyb21VaWQgPT0gUHJvY2Vzcy5teVVpZCgpCisgICAgICAgICAgICAgICAgICAgIHx8IF9sYXVuY2hlZEZyb21VaWQgPT0gMCkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhlIHN5c3RlbSBoYXMgZGV0ZXJtaW5lZCB0aGUgY29tcG9uZW50LCB0aGVuCisgICAgICAgICAgICAgICAgLy8gd2UgY2FuIGNvbnNpZGVyIHRoaXMgdG8gYmUgYSBob21lIGFjdGl2aXR5Li4uCisgICAgICAgICAgICAgICAgaWYgKEludGVudC5BQ1RJT05fTUFJTi5lcXVhbHMoX2ludGVudC5nZXRBY3Rpb24oKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIF9pbnRlbnQuaGFzQ2F0ZWdvcnkoSW50ZW50LkNBVEVHT1JZX0hPTUUpICYmCisgICAgICAgICAgICAgICAgICAgICAgICBfaW50ZW50LmdldENhdGVnb3JpZXMoKS5zaXplKCkgPT0gMSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgX2ludGVudC5nZXREYXRhKCkgPT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgX2ludGVudC5nZXRUeXBlKCkgPT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKGludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhImFuZHJvaWQiLmVxdWFscyhyZWFsQWN0aXZpdHkuZ2V0Q2xhc3NOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3VyZSBsb29rcyBsaWtlIGEgaG9tZSBhY3Rpdml0eSEKKyAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGUgbGFzdCBjaGVjayBpcyBzbyB3ZSBkb24ndCBjb3VudCB0aGUgcmVzb2x2ZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgYXMgYmVpbmcgaG9tZS4uLiAgcmVhbGx5LCB3ZSBkb24ndCBjYXJlIGFib3V0CisgICAgICAgICAgICAgICAgICAgIC8vIGRvaW5nIGFueXRoaW5nIHNwZWNpYWwgd2l0aCBzb21ldGhpbmcgdGhhdCBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb3JlIGZyYW1ld29yayBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBpc0hvbWVBY3Rpdml0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaXNIb21lQWN0aXZpdHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlzSG9tZUFjdGl2aXR5ID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGltbWVyc2l2ZSA9IChhSW5mby5mbGFncyAmIEFjdGl2aXR5SW5mby5GTEFHX0lNTUVSU0lWRSkgIT0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlYWxBY3Rpdml0eSA9IG51bGw7CisgICAgICAgICAgICB0YXNrQWZmaW5pdHkgPSBudWxsOworICAgICAgICAgICAgc3RhdGVOb3ROZWVkZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJhc2VEaXIgPSBudWxsOworICAgICAgICAgICAgcmVzRGlyID0gbnVsbDsKKyAgICAgICAgICAgIGRhdGFEaXIgPSBudWxsOworICAgICAgICAgICAgcHJvY2Vzc05hbWUgPSBudWxsOworICAgICAgICAgICAgcGFja2FnZU5hbWUgPSBudWxsOworICAgICAgICAgICAgZnVsbHNjcmVlbiA9IHRydWU7CisgICAgICAgICAgICBpc0hvbWVBY3Rpdml0eSA9IGZhbHNlOworICAgICAgICAgICAgaW1tZXJzaXZlID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFkZFJlc3VsdExvY2tlZChBY3Rpdml0eVJlY29yZCBmcm9tLCBTdHJpbmcgcmVzdWx0V2hvLAorICAgICAgICAgICAgaW50IHJlcXVlc3RDb2RlLCBpbnQgcmVzdWx0Q29kZSwKKyAgICAgICAgICAgIEludGVudCByZXN1bHREYXRhKSB7CisgICAgICAgIEFjdGl2aXR5UmVzdWx0IHIgPSBuZXcgQWN0aXZpdHlSZXN1bHQoZnJvbSwgcmVzdWx0V2hvLAorICAgICAgICAJCXJlcXVlc3RDb2RlLCByZXN1bHRDb2RlLCByZXN1bHREYXRhKTsKKyAgICAgICAgaWYgKHJlc3VsdHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHRzLmFkZChyKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZVJlc3VsdHNMb2NrZWQoQWN0aXZpdHlSZWNvcmQgZnJvbSwgU3RyaW5nIHJlc3VsdFdobywKKyAgICAgICAgICAgIGludCByZXF1ZXN0Q29kZSkgeworICAgICAgICBpZiAocmVzdWx0cyAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPXJlc3VsdHMuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVzdWx0IHIgPSAoQWN0aXZpdHlSZXN1bHQpcmVzdWx0cy5nZXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHIubUZyb20gIT0gZnJvbSkgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKHIubVJlc3VsdFdobyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRXaG8gIT0gbnVsbCkgY29udGludWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyLm1SZXN1bHRXaG8uZXF1YWxzKHJlc3VsdFdobykpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoci5tUmVxdWVzdENvZGUgIT0gcmVxdWVzdENvZGUpIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgcmVzdWx0cy5yZW1vdmUoaSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFkZE5ld0ludGVudExvY2tlZChJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGlmIChuZXdJbnRlbnRzID09IG51bGwpIHsKKyAgICAgICAgICAgIG5ld0ludGVudHMgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgbmV3SW50ZW50cy5hZGQoaW50ZW50KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRGVsaXZlciBhIG5ldyBJbnRlbnQgdG8gYW4gZXhpc3RpbmcgYWN0aXZpdHksIHNvIHRoYXQgaXRzIG9uTmV3SW50ZW50KCkKKyAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYXQgdGhlIHByb3BlciB0aW1lLgorICAgICAqLworICAgIGZpbmFsIHZvaWQgZGVsaXZlck5ld0ludGVudExvY2tlZChJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGJvb2xlYW4gc2VudCA9IGZhbHNlOworICAgICAgICBpZiAoc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5SRVNVTUVECisgICAgICAgICAgICAgICAgJiYgYXBwICE9IG51bGwgJiYgYXBwLnRocmVhZCAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEFycmF5TGlzdDxJbnRlbnQ+IGFyID0gbmV3IEFycmF5TGlzdDxJbnRlbnQ+KCk7CisgICAgICAgICAgICAgICAgYXIuYWRkKG5ldyBJbnRlbnQoaW50ZW50KSk7CisgICAgICAgICAgICAgICAgYXBwLnRocmVhZC5zY2hlZHVsZU5ld0ludGVudChhciwgdGhpcyk7CisgICAgICAgICAgICAgICAgc2VudCA9IHRydWU7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFNsb2cudyhBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICJFeGNlcHRpb24gdGhyb3duIHNlbmRpbmcgbmV3IGludGVudCB0byAiICsgdGhpcywgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFzZW50KSB7CisgICAgICAgICAgICBhZGROZXdJbnRlbnRMb2NrZWQobmV3IEludGVudChpbnRlbnQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVtb3ZlVXJpUGVybWlzc2lvbnNMb2NrZWQoKSB7CisgICAgICAgIGlmIChyZWFkVXJpUGVybWlzc2lvbnMgIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChVcmlQZXJtaXNzaW9uIHBlcm0gOiByZWFkVXJpUGVybWlzc2lvbnMpIHsKKyAgICAgICAgICAgICAgICBwZXJtLnJlYWRBY3Rpdml0aWVzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAocGVybS5yZWFkQWN0aXZpdGllcy5zaXplKCkgPT0gMCAmJiAocGVybS5nbG9iYWxNb2RlRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICZJbnRlbnQuRkxBR19HUkFOVF9SRUFEX1VSSV9QRVJNSVNTSU9OKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHBlcm0ubW9kZUZsYWdzICY9IH5JbnRlbnQuRkxBR19HUkFOVF9SRUFEX1VSSV9QRVJNSVNTSU9OOworICAgICAgICAgICAgICAgICAgIHNlcnZpY2UucmVtb3ZlVXJpUGVybWlzc2lvbklmTmVlZGVkTG9ja2VkKHBlcm0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAod3JpdGVVcmlQZXJtaXNzaW9ucyAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKFVyaVBlcm1pc3Npb24gcGVybSA6IHdyaXRlVXJpUGVybWlzc2lvbnMpIHsKKyAgICAgICAgICAgICAgICBwZXJtLndyaXRlQWN0aXZpdGllcy5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKHBlcm0ud3JpdGVBY3Rpdml0aWVzLnNpemUoKSA9PSAwICYmIChwZXJtLmdsb2JhbE1vZGVGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgJkludGVudC5GTEFHX0dSQU5UX1dSSVRFX1VSSV9QRVJNSVNTSU9OKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHBlcm0ubW9kZUZsYWdzICY9IH5JbnRlbnQuRkxBR19HUkFOVF9XUklURV9VUklfUEVSTUlTU0lPTjsKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZS5yZW1vdmVVcmlQZXJtaXNzaW9uSWZOZWVkZWRMb2NrZWQocGVybSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBwYXVzZUtleURpc3BhdGNoaW5nTG9ja2VkKCkgeworICAgICAgICBpZiAoIWtleXNQYXVzZWQpIHsKKyAgICAgICAgICAgIGtleXNQYXVzZWQgPSB0cnVlOworICAgICAgICAgICAgc2VydmljZS5tV2luZG93TWFuYWdlci5wYXVzZUtleURpc3BhdGNoaW5nKHRoaXMpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCByZXN1bWVLZXlEaXNwYXRjaGluZ0xvY2tlZCgpIHsKKyAgICAgICAgaWYgKGtleXNQYXVzZWQpIHsKKyAgICAgICAgICAgIGtleXNQYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHNlcnZpY2UubVdpbmRvd01hbmFnZXIucmVzdW1lS2V5RGlzcGF0Y2hpbmcodGhpcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJQXBwbGljYXRpb25Ub2tlbgorCisgICAgcHVibGljIGJvb2xlYW4gbWF5RnJlZXplU2NyZWVuTG9ja2VkKFByb2Nlc3NSZWNvcmQgYXBwKSB7CisgICAgICAgIC8vIE9ubHkgZnJlZXplIHRoZSBzY3JlZW4gaWYgdGhpcyBhY3Rpdml0eSBpcyBjdXJyZW50bHkgYXR0YWNoZWQgdG8KKyAgICAgICAgLy8gYW4gYXBwbGljYXRpb24sIGFuZCB0aGF0IGFwcGxpY2F0aW9uIGlzIG5vdCBibG9ja2VkIG9yIHVucmVzcG9uZGluZy4KKyAgICAgICAgLy8gSW4gYW55IG90aGVyIGNhc2UsIHdlIGNhbid0IGNvdW50IG9uIGdldHRpbmcgdGhlIHNjcmVlbiB1bmZyb3plbiwKKyAgICAgICAgLy8gc28gaXQgaXMgYmVzdCB0byBsZWF2ZSBhcy1pcy4KKyAgICAgICAgcmV0dXJuIGFwcCA9PSBudWxsIHx8ICghYXBwLmNyYXNoaW5nICYmICFhcHAubm90UmVzcG9uZGluZyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHN0YXJ0RnJlZXppbmdTY3JlZW5Mb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHAsIGludCBjb25maWdDaGFuZ2VzKSB7CisgICAgICAgIGlmIChtYXlGcmVlemVTY3JlZW5Mb2NrZWQoYXBwKSkgeworICAgICAgICAgICAgc2VydmljZS5tV2luZG93TWFuYWdlci5zdGFydEFwcEZyZWV6aW5nU2NyZWVuKHRoaXMsIGNvbmZpZ0NoYW5nZXMpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChib29sZWFuIGZvcmNlKSB7CisgICAgICAgIGlmIChmb3JjZSB8fCBmcm96ZW5CZWZvcmVEZXN0cm95KSB7CisgICAgICAgICAgICBmcm96ZW5CZWZvcmVEZXN0cm95ID0gZmFsc2U7CisgICAgICAgICAgICBzZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnN0b3BBcHBGcmVlemluZ1NjcmVlbih0aGlzLCBmb3JjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgd2luZG93c1Zpc2libGUoKSB7CisgICAgICAgIHN5bmNocm9uaXplZChzZXJ2aWNlKSB7CisgICAgICAgICAgICBpZiAoc3RhcnRUaW1lICE9IDApIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBsb25nIGN1clRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBsb25nIHRoaXNUaW1lID0gY3VyVGltZSAtIHN0YXJ0VGltZTsKKyAgICAgICAgICAgICAgICBmaW5hbCBsb25nIHRvdGFsVGltZSA9IHN0YWNrLm1Jbml0aWFsU3RhcnRUaW1lICE9IDAKKyAgICAgICAgICAgICAgICAgICAgICAgID8gKGN1clRpbWUgLSBzdGFjay5tSW5pdGlhbFN0YXJ0VGltZSkgOiB0aGlzVGltZTsKKyAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5TSE9XX0FDVElWSVRZX1NUQVJUX1RJTUUpIHsKKyAgICAgICAgICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQUNUSVZJVFlfTEFVTkNIX1RJTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUodGhpcyksIHNob3J0Q29tcG9uZW50TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzVGltZSwgdG90YWxUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IHNlcnZpY2UubVN0cmluZ0J1aWxkZXI7CisgICAgICAgICAgICAgICAgICAgIHNiLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCJEaXNwbGF5ZWQgYWN0aXZpdHkgIik7CisgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZChzaG9ydENvbXBvbmVudE5hbWUpOworICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIjogIik7CisgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCh0aGlzVGltZSk7CisgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiIG1zICh0b3RhbCAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKHRvdGFsVGltZSk7CisgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiIG1zKSIpOworICAgICAgICAgICAgICAgICAgICBMb2cuaShBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlRBRywgc2IudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YWNrLnJlcG9ydEFjdGl2aXR5TGF1bmNoZWRMb2NrZWQoZmFsc2UsIHRoaXMsIHRoaXNUaW1lLCB0b3RhbFRpbWUpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFRpbWUgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UubVVzYWdlU3RhdHNTZXJ2aWNlLm5vdGVMYXVuY2hUaW1lKHJlYWxBY3Rpdml0eSwgKGludCl0b3RhbFRpbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSAwOworICAgICAgICAgICAgICAgIHN0YWNrLm1Jbml0aWFsU3RhcnRUaW1lID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YWNrLnJlcG9ydEFjdGl2aXR5VmlzaWJsZUxvY2tlZCh0aGlzKTsKKyAgICAgICAgICAgIGlmIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1NXSVRDSCkgTG9nLnYoCisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLCAid2luZG93c1Zpc2libGUoKTogIiArIHRoaXMpOworICAgICAgICAgICAgaWYgKCFub3dWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgbm93VmlzaWJsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKCFpZGxlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEluc3RlYWQgb2YgZG9pbmcgdGhlIGZ1bGwgc3RvcCByb3V0aW5lIGhlcmUsIGxldCdzIGp1c3QKKyAgICAgICAgICAgICAgICAgICAgLy8gaGlkZSBhbnkgYWN0aXZpdGllcyB3ZSBub3cgY2FuLCBhbmQgbGV0IHRoZW0gc3RvcCB3aGVuCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBub3JtYWwgaWRsZSBoYXBwZW5zLgorICAgICAgICAgICAgICAgICAgICBzdGFjay5wcm9jZXNzU3RvcHBpbmdBY3Rpdml0aWVzTG9ja2VkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IHdhcyBhbHJlYWR5IGlkbGUsIHRoZW4gd2Ugbm93IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIHBlcmZvcm0gdGhlIGZ1bGwgc3RvcCBvZiBhbnkgYWN0aXZpdGllcworICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGFyZSB3YWl0aW5nIHRvIGRvIHNvLiAgVGhpcyBpcyBiZWNhdXNlIHdlIHdvbid0CisgICAgICAgICAgICAgICAgICAgIC8vIGRvIHRoYXQgd2hpbGUgdGhleSBhcmUgc3RpbGwgd2FpdGluZyBmb3IgdGhpcyBvbmUgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8gYmVjb21lIHZpc2libGUuCisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBOID0gc3RhY2subVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChOID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLm1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMuZ2V0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIud2FpdGluZ1Zpc2libGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19TV0lUQ0gpIExvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5UQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2FzIHdhaXRpbmcgZm9yIHZpc2libGU6ICIgKyByKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLm1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZy53aGF0ID0gQWN0aXZpdHlTdGFjay5JRExFX05PV19NU0c7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5tSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNlcnZpY2Uuc2NoZWR1bGVBcHBHY3NMb2NrZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdpbmRvd3NHb25lKCkgeworICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19TV0lUQ0gpIExvZy52KAorICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLCAid2luZG93c0dvbmUoKTogIiArIHRoaXMpOworICAgICAgICBub3dWaXNpYmxlID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgQWN0aXZpdHlSZWNvcmQgZ2V0V2FpdGluZ0hpc3RvcnlSZWNvcmRMb2NrZWQoKSB7CisgICAgICAgIC8vIEZpcnN0IGZpbmQgdGhlIHJlYWwgY3VscHJpdC4uLiAgaWYgd2UgYXJlIHdhaXRpbmcKKyAgICAgICAgLy8gZm9yIGFub3RoZXIgYXBwIHRvIHN0YXJ0LCB0aGVuIHdlIGhhdmUgcGF1c2VkIGRpc3BhdGNoaW5nCisgICAgICAgIC8vIGZvciB0aGlzIGFjdGl2aXR5LgorICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gdGhpczsKKyAgICAgICAgaWYgKHIud2FpdGluZ1Zpc2libGUpIHsKKyAgICAgICAgICAgIC8vIEhtbW0sIHdobyBtaWdodCB3ZSBiZSB3YWl0aW5nIGZvcj8KKyAgICAgICAgICAgIHIgPSBzdGFjay5tUmVzdW1lZEFjdGl2aXR5OworICAgICAgICAgICAgaWYgKHIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHIgPSBzdGFjay5tUGF1c2luZ0FjdGl2aXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQm90aCBvZiB0aG9zZSBudWxsPyAgRmFsbCBiYWNrIHRvICd0aGlzJyBhZ2FpbgorICAgICAgICAgICAgaWYgKHIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHIgPSB0aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcjsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlEaXNwYXRjaGluZ1RpbWVkT3V0KCkgeworICAgICAgICBBY3Rpdml0eVJlY29yZCByOworICAgICAgICBQcm9jZXNzUmVjb3JkIGFuckFwcCA9IG51bGw7CisgICAgICAgIHN5bmNocm9uaXplZChzZXJ2aWNlKSB7CisgICAgICAgICAgICByID0gZ2V0V2FpdGluZ0hpc3RvcnlSZWNvcmRMb2NrZWQoKTsKKyAgICAgICAgICAgIGlmIChyICE9IG51bGwgJiYgci5hcHAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmIChyLmFwcC5kZWJ1Z2dpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoc2VydmljZS5tRGlkRGV4T3B0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEdpdmUgbW9yZSB0aW1lIHNpbmNlIHdlIHdlcmUgZGV4b3B0aW5nLgorICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLm1EaWREZXhPcHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoci5hcHAuaW5zdHJ1bWVudGF0aW9uQ2xhc3MgPT0gbnVsbCkgeyAKKyAgICAgICAgICAgICAgICAgICAgYW5yQXBwID0gci5hcHA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQnVuZGxlIGluZm8gPSBuZXcgQnVuZGxlKCk7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHV0U3RyaW5nKCJzaG9ydE1zZyIsICJrZXlEaXNwYXRjaGluZ1RpbWVkT3V0Iik7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHV0U3RyaW5nKCJsb25nTXNnIiwgIlRpbWVkIG91dCB3aGlsZSBkaXNwYXRjaGluZyBrZXkgZXZlbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZS5maW5pc2hJbnN0cnVtZW50YXRpb25Mb2NrZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5hcHAsIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgaW5mbyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYW5yQXBwICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNlcnZpY2UuYXBwTm90UmVzcG9uZGluZyhhbnJBcHAsIHIsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICJrZXlEaXNwYXRjaGluZ1RpbWVkT3V0Iik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvKiogUmV0dXJucyB0aGUga2V5IGRpc3BhdGNoaW5nIHRpbWVvdXQgZm9yIHRoaXMgYXBwbGljYXRpb24gdG9rZW4uICovCisgICAgcHVibGljIGxvbmcgZ2V0S2V5RGlzcGF0Y2hpbmdUaW1lb3V0KCkgeworICAgICAgICBzeW5jaHJvbml6ZWQoc2VydmljZSkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IGdldFdhaXRpbmdIaXN0b3J5UmVjb3JkTG9ja2VkKCk7CisgICAgICAgICAgICBpZiAociA9PSBudWxsIHx8IHIuYXBwID09IG51bGwKKyAgICAgICAgICAgICAgICAgICAgfHwgci5hcHAuaW5zdHJ1bWVudGF0aW9uQ2xhc3MgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLktFWV9ESVNQQVRDSElOR19USU1FT1VUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5JTlNUUlVNRU5UQVRJT05fS0VZX0RJU1BBVENISU5HX1RJTUVPVVQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBhY3Rpdml0eSBpcyBlaXRoZXIgdmlzaWJsZSwgaXMgYmVjb21pbmcgdmlzaWJsZSwgaXMKKyAgICAgKiBjdXJyZW50bHkgcGF1c2luZywgb3IgaXMgcmVzdW1lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0ludGVyZXN0aW5nVG9Vc2VyTG9ja2VkKCkgeworICAgICAgICByZXR1cm4gdmlzaWJsZSB8fCBub3dWaXNpYmxlIHx8IHN0YXRlID09IEFjdGl2aXR5U3RhdGUuUEFVU0lORyB8fCAKKyAgICAgICAgICAgICAgICBzdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQ7CisgICAgIH0KKyAgICAKKyAgICAKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICBpZiAoc3RyaW5nTmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nTmFtZTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoMTI4KTsKKyAgICAgICAgc2IuYXBwZW5kKCJIaXN0b3J5UmVjb3JkeyIpOworICAgICAgICBzYi5hcHBlbmQoSW50ZWdlci50b0hleFN0cmluZyhTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZSh0aGlzKSkpOworICAgICAgICBzYi5hcHBlbmQoJyAnKTsKKyAgICAgICAgc2IuYXBwZW5kKGludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpKTsKKyAgICAgICAgc2IuYXBwZW5kKCd9Jyk7CisgICAgICAgIHJldHVybiBzdHJpbmdOYW1lID0gc2IudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVJlc3VsdC5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlSZXN1bHQuamF2YQppbmRleCAzY2MyNzI1Li4xMmViYTM0IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVJlc3VsdC5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5UmVzdWx0LmphdmEKQEAgLTI0LDkgKzI0LDkgQEAKICAqIFBlbmRpbmcgcmVzdWx0IGluZm9ybWF0aW9uIHRvIHNlbmQgYmFjayB0byBhbiBhY3Rpdml0eS4KICAqLwogY2xhc3MgQWN0aXZpdHlSZXN1bHQgZXh0ZW5kcyBSZXN1bHRJbmZvIHsKLSAgICBmaW5hbCBIaXN0b3J5UmVjb3JkIG1Gcm9tOworICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIG1Gcm9tOwogICAgIAotICAgIHB1YmxpYyBBY3Rpdml0eVJlc3VsdChIaXN0b3J5UmVjb3JkIGZyb20sIFN0cmluZyByZXN1bHRXaG8sCisgICAgcHVibGljIEFjdGl2aXR5UmVzdWx0KEFjdGl2aXR5UmVjb3JkIGZyb20sIFN0cmluZyByZXN1bHRXaG8sCiAgICAgICAgICAgICBpbnQgcmVxdWVzdENvZGUsIGludCByZXN1bHRDb2RlLCBJbnRlbnQgZGF0YSkgewogICAgICAgICBzdXBlcihyZXN1bHRXaG8sIHJlcXVlc3RDb2RlLCByZXN1bHRDb2RlLCBkYXRhKTsKICAgICAgICAgbUZyb20gPSBmcm9tOwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlTdGFjay5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlTdGFjay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlN2IxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrLmphdmEKQEAgLTAsMCArMSwzNTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuYW07CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLkJhdHRlcnlTdGF0c0ltcGw7CitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlclNlcnZpY2UuUGVuZGluZ0FjdGl2aXR5TGF1bmNoOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5hcHAuQXBwR2xvYmFsczsKK2ltcG9ydCBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0NMQVNTX05PVF9GT1VORDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9ERUxJVkVSRURfVE9fVE9QOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0ZPUldBUkRfQU5EX1JFUVVFU1RfQ09ORkxJQ1Q7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXIuU1RBUlRfSU5URU5UX05PVF9SRVNPTFZFRDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9QRVJNSVNTSU9OX0RFTklFRDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9SRVRVUk5fSU5URU5UX1RPX0NBTExFUjsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9TVUNDRVNTOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NXSVRDSEVTX0NBTkNFTEVEOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1RBU0tfVE9fRlJPTlQ7CitpbXBvcnQgYW5kcm9pZC5hcHAuSUFwcGxpY2F0aW9uVGhyZWFkOworaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5hcHAuUmVzdWx0SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWU7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LklJbnRlbnRTZW5kZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CitpbXBvcnQgYW5kcm9pZC5vcy5CaW5kZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5Qb3dlck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuRXZlbnRMb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlclBvbGljeTsKKworaW1wb3J0IGphdmEubGFuZy5yZWYuV2Vha1JlZmVyZW5jZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBTdGF0ZSBhbmQgbWFuYWdlbWVudCBvZiBhIHNpbmdsZSBzdGFjayBvZiBhY3Rpdml0aWVzLgorICovCitwdWJsaWMgY2xhc3MgQWN0aXZpdHlTdGFjayB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlRBRzsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBsb2NhbExPR1YgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLmxvY2FsTE9HVjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19TV0lUQ0ggPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1NXSVRDSDsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19QQVVTRSA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuREVCVUdfUEFVU0U7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfVklTQklMSVRZID0gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19WSVNCSUxJVFk7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfVVNFUl9MRUFWSU5HID0gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19VU0VSX0xFQVZJTkc7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfVFJBTlNJVElPTiA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuREVCVUdfVFJBTlNJVElPTjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19SRVNVTFRTID0gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19SRVNVTFRTOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0NPTkZJR1VSQVRJT04gPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX0NPTkZJR1VSQVRJT047CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfVEFTS1MgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1RBU0tTOworICAgIAorICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFZBTElEQVRFX1RPS0VOUyA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVkFMSURBVEVfVE9LRU5TOworICAgIAorICAgIC8vIEhvdyBsb25nIHdlIHdhaXQgdW50aWwgZ2l2aW5nIHVwIG9uIHRoZSBsYXN0IGFjdGl2aXR5IHRlbGxpbmcgdXMgaXQKKyAgICAvLyBpcyBpZGxlLgorICAgIHN0YXRpYyBmaW5hbCBpbnQgSURMRV9USU1FT1VUID0gMTAqMTAwMDsKKyAgICAKKyAgICAvLyBIb3cgbG9uZyB3ZSB3YWl0IHVudGlsIGdpdmluZyB1cCBvbiB0aGUgbGFzdCBhY3Rpdml0eSB0byBwYXVzZS4gIFRoaXMKKyAgICAvLyBpcyBzaG9ydCBiZWNhdXNlIGl0IGRpcmVjdGx5IGltcGFjdHMgdGhlIHJlc3BvbnNpdmVuZXNzIG9mIHN0YXJ0aW5nIHRoZQorICAgIC8vIG5leHQgYWN0aXZpdHkuCisgICAgc3RhdGljIGZpbmFsIGludCBQQVVTRV9USU1FT1VUID0gNTAwOworCisgICAgLy8gSG93IGxvbmcgd2UgY2FuIGhvbGQgdGhlIGxhdW5jaCB3YWtlIGxvY2sgYmVmb3JlIGdpdmluZyB1cC4KKyAgICBzdGF0aWMgZmluYWwgaW50IExBVU5DSF9USU1FT1VUID0gMTAqMTAwMDsKKworICAgIC8vIEhvdyBsb25nIHdlIHdhaXQgdW50aWwgZ2l2aW5nIHVwIG9uIGFuIGFjdGl2aXR5IHRlbGxpbmcgdXMgaXQgaGFzCisgICAgLy8gZmluaXNoZWQgZGVzdHJveWluZyBpdHNlbGYuCisgICAgc3RhdGljIGZpbmFsIGludCBERVNUUk9ZX1RJTUVPVVQgPSAxMCoxMDAwOworICAgIAorICAgIC8vIEhvdyBsb25nIHVudGlsIHdlIHJlc2V0IGEgdGFzayB3aGVuIHRoZSB1c2VyIHJldHVybnMgdG8gaXQuICBDdXJyZW50bHkKKyAgICAvLyAzMCBtaW51dGVzLgorICAgIHN0YXRpYyBmaW5hbCBsb25nIEFDVElWSVRZX0lOQUNUSVZFX1JFU0VUX1RJTUUgPSAxMDAwKjYwKjMwOworICAgIAorICAgIC8vIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIHRoZSBwcmV2aWV3IHRoYXQgaXMgc2hvd24gd2hpbGUgYSBuZXcgYWN0aXZpdHkKKyAgICAvLyBpcyBiZWluZyBzdGFydGVkLgorICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFNIT1dfQVBQX1NUQVJUSU5HX1BSRVZJRVcgPSB0cnVlOworICAgIAorICAgIGVudW0gQWN0aXZpdHlTdGF0ZSB7CisgICAgICAgIElOSVRJQUxJWklORywKKyAgICAgICAgUkVTVU1FRCwKKyAgICAgICAgUEFVU0lORywKKyAgICAgICAgUEFVU0VELAorICAgICAgICBTVE9QUElORywKKyAgICAgICAgU1RPUFBFRCwKKyAgICAgICAgRklOSVNISU5HLAorICAgICAgICBERVNUUk9ZSU5HLAorICAgICAgICBERVNUUk9ZRUQKKyAgICB9CisKKyAgICBmaW5hbCBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIG1TZXJ2aWNlOworICAgIGZpbmFsIGJvb2xlYW4gbU1haW5TdGFjazsKKyAgICAKKyAgICBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBiYWNrIGhpc3Rvcnkgb2YgYWxsIHByZXZpb3VzIChhbmQgcG9zc2libHkgc3RpbGwKKyAgICAgKiBydW5uaW5nKSBhY3Rpdml0aWVzLiAgSXQgY29udGFpbnMgSGlzdG9yeVJlY29yZCBvYmplY3RzLgorICAgICAqLworICAgIGZpbmFsIEFycmF5TGlzdCBtSGlzdG9yeSA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBMaXN0IG9mIHJ1bm5pbmcgYWN0aXZpdGllcywgc29ydGVkIGJ5IHJlY2VudCB1c2FnZS4KKyAgICAgKiBUaGUgZmlyc3QgZW50cnkgaW4gdGhlIGxpc3QgaXMgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQuCisgICAgICogSXQgY29udGFpbnMgSGlzdG9yeVJlY29yZCBvYmplY3RzLgorICAgICAqLworICAgIGZpbmFsIEFycmF5TGlzdCBtTFJVQWN0aXZpdGllcyA9IG5ldyBBcnJheUxpc3QoKTsKKworICAgIC8qKgorICAgICAqIExpc3Qgb2YgYWN0aXZpdGllcyB0aGF0IGFyZSB3YWl0aW5nIGZvciBhIG5ldyBhY3Rpdml0eQorICAgICAqIHRvIGJlY29tZSB2aXNpYmxlIGJlZm9yZSBjb21wbGV0aW5nIHdoYXRldmVyIG9wZXJhdGlvbiB0aGV5IGFyZQorICAgICAqIHN1cHBvc2VkIHRvIGRvLgorICAgICAqLworICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcworICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPigpOworCisgICAgLyoqCisgICAgICogTGlzdCBvZiBhY3Rpdml0aWVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHN0b3BwZWQsIGJ1dCB3YWl0aW5nCisgICAgICogZm9yIHRoZSBuZXh0IGFjdGl2aXR5IHRvIHNldHRsZSBkb3duIGJlZm9yZSBkb2luZyBzby4gIEl0IGNvbnRhaW5zCisgICAgICogSGlzdG9yeVJlY29yZCBvYmplY3RzLgorICAgICAqLworICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gbVN0b3BwaW5nQWN0aXZpdGllcworICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPigpOworCisgICAgLyoqCisgICAgICogQW5pbWF0aW9ucyB0aGF0IGZvciB0aGUgY3VycmVudCB0cmFuc2l0aW9uIGhhdmUgcmVxdWVzdGVkIG5vdCB0bworICAgICAqIGJlIGNvbnNpZGVyZWQgZm9yIHRoZSB0cmFuc2l0aW9uIGFuaW1hdGlvbi4KKyAgICAgKi8KKyAgICBmaW5hbCBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+IG1Ob0FuaW1BY3Rpdml0aWVzCisgICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KCk7CisKKyAgICAvKioKKyAgICAgKiBMaXN0IG9mIGFjdGl2aXRpZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgZmluaXNoZWQsIGJ1dCB3YWl0aW5nCisgICAgICogZm9yIHRoZSBwcmV2aW91cyBhY3Rpdml0eSB0byBzZXR0bGUgZG93biBiZWZvcmUgZG9pbmcgc28uICBJdCBjb250YWlucworICAgICAqIEhpc3RvcnlSZWNvcmQgb2JqZWN0cy4KKyAgICAgKi8KKyAgICBmaW5hbCBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+IG1GaW5pc2hpbmdBY3Rpdml0aWVzCisgICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KCk7CisgICAgCisgICAgLyoqCisgICAgICogTGlzdCBvZiBwZW9wbGUgd2FpdGluZyB0byBmaW5kIG91dCBhYm91dCB0aGUgbmV4dCBsYXVuY2hlZCBhY3Rpdml0eS4KKyAgICAgKi8KKyAgICBmaW5hbCBBcnJheUxpc3Q8SUFjdGl2aXR5TWFuYWdlci5XYWl0UmVzdWx0PiBtV2FpdGluZ0FjdGl2aXR5TGF1bmNoZWQKKyAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ+KCk7CisgICAgCisgICAgLyoqCisgICAgICogTGlzdCBvZiBwZW9wbGUgd2FpdGluZyB0byBmaW5kIG91dCBhYm91dCB0aGUgbmV4dCB2aXNpYmxlIGFjdGl2aXR5LgorICAgICAqLworICAgIGZpbmFsIEFycmF5TGlzdDxJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ+IG1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlCisgICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8SUFjdGl2aXR5TWFuYWdlci5XYWl0UmVzdWx0PigpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB3aGVuIHRoZSBzeXN0ZW0gaXMgZ29pbmcgdG8gc2xlZXAsIHVudGlsIHdlIGhhdmUKKyAgICAgKiBzdWNjZXNzZnVsbHkgcGF1c2VkIHRoZSBjdXJyZW50IGFjdGl2aXR5IGFuZCByZWxlYXNlZCBvdXIgd2FrZSBsb2NrLgorICAgICAqIEF0IHRoYXQgcG9pbnQgdGhlIHN5c3RlbSBpcyBhbGxvd2VkIHRvIGFjdHVhbGx5IHNsZWVwLgorICAgICAqLworICAgIGZpbmFsIFBvd2VyTWFuYWdlci5XYWtlTG9jayBtR29pbmdUb1NsZWVwOworCisgICAgLyoqCisgICAgICogV2UgZG9uJ3Qgd2FudCB0byBhbGxvdyB0aGUgZGV2aWNlIHRvIGdvIHRvIHNsZWVwIHdoaWxlIGluIHRoZSBwcm9jZXNzCisgICAgICogb2YgbGF1bmNoaW5nIGFuIGFjdGl2aXR5LiAgVGhpcyBpcyBwcmltYXJpbHkgdG8gYWxsb3cgYWxhcm0gaW50ZW50CisgICAgICogcmVjZWl2ZXJzIHRvIGxhdW5jaCBhbiBhY3Rpdml0eSBhbmQgZ2V0IHRoYXQgdG8gcnVuIGJlZm9yZSB0aGUgZGV2aWNlCisgICAgICogZ29lcyBiYWNrIHRvIHNsZWVwLgorICAgICAqLworICAgIGZpbmFsIFBvd2VyTWFuYWdlci5XYWtlTG9jayBtTGF1bmNoaW5nQWN0aXZpdHk7CisKKyAgICAvKioKKyAgICAgKiBXaGVuIHdlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwYXVzaW5nIGFuIGFjdGl2aXR5LCBiZWZvcmUgc3RhcnRpbmcgdGhlCisgICAgICogbmV4dCBvbmUsIHRoaXMgdmFyaWFibGUgaG9sZHMgdGhlIGFjdGl2aXR5IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHBhdXNlZC4KKyAgICAgKi8KKyAgICBBY3Rpdml0eVJlY29yZCBtUGF1c2luZ0FjdGl2aXR5ID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgdGhlIGxhc3QgYWN0aXZpdHkgdGhhdCB3ZSBwdXQgaW50byB0aGUgcGF1c2VkIHN0YXRlLiAgVGhpcyBpcworICAgICAqIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gZG8gYW4gYWN0aXZpdHkgdHJhbnNpdGlvbiB3aGlsZSBzbGVlcGluZywKKyAgICAgKiB3aGVuIHdlIG5vcm1hbGx5IGhvbGQgdGhlIHRvcCBhY3Rpdml0eSBwYXVzZWQuCisgICAgICovCisgICAgQWN0aXZpdHlSZWNvcmQgbUxhc3RQYXVzZWRBY3Rpdml0eSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBDdXJyZW50IGFjdGl2aXR5IHRoYXQgaXMgcmVzdW1lZCwgb3IgbnVsbCBpZiB0aGVyZSBpcyBub25lLgorICAgICAqLworICAgIEFjdGl2aXR5UmVjb3JkIG1SZXN1bWVkQWN0aXZpdHkgPSBudWxsOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB3aGVuIHdlIGtub3cgd2UgYXJlIGdvaW5nIHRvIGJlIGNhbGxpbmcgdXBkYXRlQ29uZmlndXJhdGlvbigpCisgICAgICogc29vbiwgc28gd2FudCB0byBza2lwIGludGVybWVkaWF0ZSBjb25maWcgY2hlY2tzLgorICAgICAqLworICAgIGJvb2xlYW4gbUNvbmZpZ1dpbGxDaGFuZ2U7CisKKyAgICAvKioKKyAgICAgKiBTZXQgdG8gaW5kaWNhdGUgd2hldGhlciB0byBpc3N1ZSBhbiBvblVzZXJMZWF2aW5nIGNhbGxiYWNrIHdoZW4gYQorICAgICAqIG5ld2x5IGxhdW5jaGVkIGFjdGl2aXR5IGlzIGJlaW5nIGJyb3VnaHQgaW4gZnJvbnQgb2YgdXMuCisgICAgICovCisgICAgYm9vbGVhbiBtVXNlckxlYXZpbmcgPSBmYWxzZTsKKyAgICAKKyAgICBsb25nIG1Jbml0aWFsU3RhcnRUaW1lID0gMDsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgaW50IFBBVVNFX1RJTUVPVVRfTVNHID0gOTsKKyAgICBzdGF0aWMgZmluYWwgaW50IElETEVfVElNRU9VVF9NU0cgPSAxMDsKKyAgICBzdGF0aWMgZmluYWwgaW50IElETEVfTk9XX01TRyA9IDExOworICAgIHN0YXRpYyBmaW5hbCBpbnQgTEFVTkNIX1RJTUVPVVRfTVNHID0gMTY7CisgICAgc3RhdGljIGZpbmFsIGludCBERVNUUk9ZX1RJTUVPVVRfTVNHID0gMTc7CisgICAgc3RhdGljIGZpbmFsIGludCBSRVNVTUVfVE9QX0FDVElWSVRZX01TRyA9IDE5OworICAgIAorICAgIGZpbmFsIEhhbmRsZXIgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcigpIHsKKyAgICAgICAgLy9wdWJsaWMgSGFuZGxlcigpIHsKKyAgICAgICAgLy8gICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkhhbmRsZXIgc3RhcnRlZCEiKTsKKyAgICAgICAgLy99CisKKyAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICAgICAgc3dpdGNoIChtc2cud2hhdCkgeworICAgICAgICAgICAgICAgIGNhc2UgUEFVU0VfVElNRU9VVF9NU0c6IHsKKyAgICAgICAgICAgICAgICAgICAgSUJpbmRlciB0b2tlbiA9IChJQmluZGVyKW1zZy5vYmo7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGF0IHRoaXMgcG9pbnQga25vdyBpZiB0aGUgYWN0aXZpdHkgaXMgZnVsbHNjcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBiZSBjb25zZXJ2YXRpdmUgYW5kIGFzc3VtZSBpdCBpc24ndC4KKyAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5IHBhdXNlIHRpbWVvdXQgZm9yICIgKyB0b2tlbik7CisgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5UGF1c2VkKHRva2VuLCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSURMRV9USU1FT1VUX01TRzogeworICAgICAgICAgICAgICAgICAgICBpZiAobVNlcnZpY2UubURpZERleE9wdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubURpZERleE9wdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBubXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShJRExFX1RJTUVPVVRfTVNHKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5tc2cub2JqID0gbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChubXNnLCBJRExFX1RJTUVPVVQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGF0IHRoaXMgcG9pbnQga25vdyBpZiB0aGUgYWN0aXZpdHkgaXMgZnVsbHNjcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBiZSBjb25zZXJ2YXRpdmUgYW5kIGFzc3VtZSBpdCBpc24ndC4KKyAgICAgICAgICAgICAgICAgICAgSUJpbmRlciB0b2tlbiA9IChJQmluZGVyKW1zZy5vYmo7CisgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSBpZGxlIHRpbWVvdXQgZm9yICIgKyB0b2tlbik7CisgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5SWRsZUludGVybmFsKHRva2VuLCB0cnVlLCBudWxsKTsKKyAgICAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgREVTVFJPWV9USU1FT1VUX01TRzogeworICAgICAgICAgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gKElCaW5kZXIpbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgYXQgdGhpcyBwb2ludCBrbm93IGlmIHRoZSBhY3Rpdml0eSBpcyBmdWxsc2NyZWVuLAorICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGJlIGNvbnNlcnZhdGl2ZSBhbmQgYXNzdW1lIGl0IGlzbid0LgorICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgZGVzdHJveSB0aW1lb3V0IGZvciAiICsgdG9rZW4pOworICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eURlc3Ryb3llZCh0b2tlbik7CisgICAgICAgICAgICAgICAgfSBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIElETEVfTk9XX01TRzogeworICAgICAgICAgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gKElCaW5kZXIpbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlJZGxlSW50ZXJuYWwodG9rZW4sIGZhbHNlLCBudWxsKTsKKyAgICAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTEFVTkNIX1RJTUVPVVRfTVNHOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtU2VydmljZS5tRGlkRGV4T3B0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tRGlkRGV4T3B0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG5tc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKExBVU5DSF9USU1FT1VUX01TRyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobm1zZywgTEFVTkNIX1RJTUVPVVQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtTGF1bmNoaW5nQWN0aXZpdHkuaXNIZWxkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiTGF1bmNoIHRpbWVvdXQgaGFzIGV4cGlyZWQsIGdpdmluZyB1cCB3YWtlIGxvY2shIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxhdW5jaGluZ0FjdGl2aXR5LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBSRVNVTUVfVE9QX0FDVElWSVRZX01TRzogeworICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIEFjdGl2aXR5U3RhY2soQWN0aXZpdHlNYW5hZ2VyU2VydmljZSBzZXJ2aWNlLCBDb250ZXh0IGNvbnRleHQsIGJvb2xlYW4gbWFpblN0YWNrKSB7CisgICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtTWFpblN0YWNrID0gbWFpblN0YWNrOworICAgICAgICBQb3dlck1hbmFnZXIgcG0gPQorICAgICAgICAgICAgKFBvd2VyTWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5QT1dFUl9TRVJWSUNFKTsKKyAgICAgICAgbUdvaW5nVG9TbGVlcCA9IHBtLm5ld1dha2VMb2NrKFBvd2VyTWFuYWdlci5QQVJUSUFMX1dBS0VfTE9DSywgIkFjdGl2aXR5TWFuYWdlci1TbGVlcCIpOworICAgICAgICBtTGF1bmNoaW5nQWN0aXZpdHkgPSBwbS5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssICJBY3Rpdml0eU1hbmFnZXItTGF1bmNoIik7CisgICAgICAgIG1MYXVuY2hpbmdBY3Rpdml0eS5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKKyAgICB9CisgICAgCisgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIG5vdFRvcCkgeworICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKS0xOworICAgICAgICB3aGlsZSAoaSA+PSAwKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcgJiYgciAhPSBub3RUb3ApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBmaW5hbCBBY3Rpdml0eVJlY29yZCB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIG5vdFRvcCkgeworICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKS0xOworICAgICAgICB3aGlsZSAoaSA+PSAwKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcgJiYgIXIuZGVsYXllZFJlc3VtZSAmJiByICE9IG5vdFRvcCkgeworICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaS0tOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkIHRoYXQgcHJvdmlkZXMgYSBudW1iZXIgb2YKKyAgICAgKiBvcHRpb25hbCBza2lwLW92ZXIgbW9kZXMuICBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIHdpdGggdGhlIEFjdGl2aXR5Q29udHJvbGxlciBob29rIG9ubHkuCisgICAgICogCisgICAgICogQHBhcmFtIHRva2VuIElmIG5vbi1udWxsLCBhbnkgaGlzdG9yeSByZWNvcmRzIG1hdGNoaW5nIHRoaXMgdG9rZW4gd2lsbCBiZSBza2lwcGVkLgorICAgICAqIEBwYXJhbSB0YXNrSWQgSWYgbm9uLXplcm8sIHdlJ2xsIGF0dGVtcHQgdG8gc2tpcCBvdmVyIHJlY29yZHMgd2l0aCB0aGUgc2FtZSB0YXNrIElELgorICAgICAqIAorICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgSGlzdG9yeVJlY29yZCBvZiB0aGUgbmV4dCBhY3Rpdml0eSBvbiB0aGUgc3RhY2suCisgICAgICovCisgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKElCaW5kZXIgdG9rZW4sIGludCB0YXNrSWQpIHsKKyAgICAgICAgaW50IGkgPSBtSGlzdG9yeS5zaXplKCktMTsKKyAgICAgICAgd2hpbGUgKGkgPj0gMCkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICAvLyBOb3RlOiB0aGUgdGFza0lkIGNoZWNrIGRlcGVuZHMgb24gcmVhbCB0YXNrSWQgZmllbGRzIGJlaW5nIG5vbi16ZXJvCisgICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nICYmICh0b2tlbiAhPSByKSAmJiAodGFza0lkICE9IHIudGFzay50YXNrSWQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpLS07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgZmluYWwgaW50IGluZGV4T2ZUb2tlbkxvY2tlZChJQmluZGVyIHRva2VuKSB7CisgICAgICAgIGludCBjb3VudCA9IG1IaXN0b3J5LnNpemUoKTsKKworICAgICAgICAvLyBjb252ZXJ0IHRoZSB0b2tlbiB0byBhbiBlbnRyeSBpbiB0aGUgaGlzdG9yeS4KKyAgICAgICAgaW50IGluZGV4ID0gLTE7CisgICAgICAgIGZvciAoaW50IGk9Y291bnQtMTsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICBPYmplY3QgbyA9IG1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGlmIChvID09IHRva2VuKSB7CisgICAgICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiB1cGRhdGVMUlVMaXN0TG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIpIHsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBoYWRpdCA9IG1MUlVBY3Rpdml0aWVzLnJlbW92ZShyKTsKKyAgICAgICAgbUxSVUFjdGl2aXRpZXMuYWRkKHIpOworICAgICAgICByZXR1cm4gaGFkaXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdG9wIGFjdGl2aXR5IGluIGFueSBleGlzdGluZyB0YXNrIG1hdGNoaW5nIHRoZSBnaXZlbgorICAgICAqIEludGVudC4gIFJldHVybnMgbnVsbCBpZiBubyBzdWNoIHRhc2sgaXMgZm91bmQuCisgICAgICovCisgICAgcHJpdmF0ZSBBY3Rpdml0eVJlY29yZCBmaW5kVGFza0xvY2tlZChJbnRlbnQgaW50ZW50LCBBY3Rpdml0eUluZm8gaW5mbykgeworICAgICAgICBDb21wb25lbnROYW1lIGNscyA9IGludGVudC5nZXRDb21wb25lbnQoKTsKKyAgICAgICAgaWYgKGluZm8udGFyZ2V0QWN0aXZpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xzID0gbmV3IENvbXBvbmVudE5hbWUoaW5mby5wYWNrYWdlTmFtZSwgaW5mby50YXJnZXRBY3Rpdml0eSk7CisgICAgICAgIH0KKworICAgICAgICBUYXNrUmVjb3JkIGNwID0gbnVsbDsKKworICAgICAgICBmaW5hbCBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0oTi0xKTsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcgJiYgci50YXNrICE9IGNwCisgICAgICAgICAgICAgICAgICAgICYmIHIubGF1bmNoTW9kZSAhPSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRSkgeworICAgICAgICAgICAgICAgIGNwID0gci50YXNrOworICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkNvbXBhcmluZyBleGlzdGluZyBjbHM9IiArIHIudGFzay5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKQorICAgICAgICAgICAgICAgIC8vICAgICAgICArICIvYWZmPSIgKyByLnRhc2suYWZmaW5pdHkgKyAiIHRvIG5ldyBjbHM9IgorICAgICAgICAgICAgICAgIC8vICAgICAgICArIGludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpICsgIi9hZmY9IiArIHRhc2tBZmZpbml0eSk7CisgICAgICAgICAgICAgICAgaWYgKHIudGFzay5hZmZpbml0eSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyLnRhc2suYWZmaW5pdHkuZXF1YWxzKGluZm8udGFza0FmZmluaXR5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm91bmQgbWF0Y2hpbmcgYWZmaW5pdHkhIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci50YXNrLmludGVudCAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICAmJiByLnRhc2suaW50ZW50LmdldENvbXBvbmVudCgpLmVxdWFscyhjbHMpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkZvdW5kIG1hdGNoaW5nIGNsYXNzISIpOworICAgICAgICAgICAgICAgICAgICAvL2R1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm9yIEludGVudCAiICsgaW50ZW50ICsgIiBicmluZ2luZyB0byB0b3A6ICIgKyByLmludGVudCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci50YXNrLmFmZmluaXR5SW50ZW50ICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHIudGFzay5hZmZpbml0eUludGVudC5nZXRDb21wb25lbnQoKS5lcXVhbHMoY2xzKSkgeworICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJGb3VuZCBtYXRjaGluZyBjbGFzcyEiKTsKKyAgICAgICAgICAgICAgICAgICAgLy9kdW1wKCk7CisgICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkZvciBJbnRlbnQgIiArIGludGVudCArICIgYnJpbmdpbmcgdG8gdG9wOiAiICsgci5pbnRlbnQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBhY3Rpdml0eSAoc3RhcnRpbmcgZnJvbSB0aGUgdG9wIG9mIHRoZSBzdGFjaykgdGhhdAorICAgICAqIGlzIHRoZSBzYW1lIGFzIHRoZSBnaXZlbiBhY3Rpdml0eS4gIFJldHVybnMgbnVsbCBpZiBubyBzdWNoIGFjdGl2aXR5CisgICAgICogaXMgZm91bmQuCisgICAgICovCisgICAgcHJpdmF0ZSBBY3Rpdml0eVJlY29yZCBmaW5kQWN0aXZpdHlMb2NrZWQoSW50ZW50IGludGVudCwgQWN0aXZpdHlJbmZvIGluZm8pIHsKKyAgICAgICAgQ29tcG9uZW50TmFtZSBjbHMgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCk7CisgICAgICAgIGlmIChpbmZvLnRhcmdldEFjdGl2aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNscyA9IG5ldyBDb21wb25lbnROYW1lKGluZm8ucGFja2FnZU5hbWUsIGluZm8udGFyZ2V0QWN0aXZpdHkpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgaW50IE4gPSBtSGlzdG9yeS5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGk9KE4tMSk7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKHIuaW50ZW50LmdldENvbXBvbmVudCgpLmVxdWFscyhjbHMpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkZvdW5kIG1hdGNoaW5nIGNsYXNzISIpOworICAgICAgICAgICAgICAgICAgICAvL2R1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm9yIEludGVudCAiICsgaW50ZW50ICsgIiBicmluZ2luZyB0byB0b3A6ICIgKyByLmludGVudCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIGZpbmFsIGJvb2xlYW4gcmVhbFN0YXJ0QWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgciwKKyAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgYXBwLCBib29sZWFuIGFuZFJlc3VtZSwgYm9vbGVhbiBjaGVja0NvbmZpZykKKyAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworCisgICAgICAgIHIuc3RhcnRGcmVlemluZ1NjcmVlbkxvY2tlZChhcHAsIDApOworICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHIsIHRydWUpOworCisgICAgICAgIC8vIEhhdmUgdGhlIHdpbmRvdyBtYW5hZ2VyIHJlLWV2YWx1YXRlIHRoZSBvcmllbnRhdGlvbiBvZgorICAgICAgICAvLyB0aGUgc2NyZWVuIGJhc2VkIG9uIHRoZSBuZXcgYWN0aXZpdHkgb3JkZXIuICBOb3RlIHRoYXQKKyAgICAgICAgLy8gYXMgYSByZXN1bHQgb2YgdGhpcywgaXQgY2FuIGNhbGwgYmFjayBpbnRvIHRoZSBhY3Rpdml0eQorICAgICAgICAvLyBtYW5hZ2VyIHdpdGggYSBuZXcgb3JpZW50YXRpb24uICBXZSBkb24ndCBjYXJlIGFib3V0IHRoYXQsCisgICAgICAgIC8vIGJlY2F1c2UgdGhlIGFjdGl2aXR5IGlzIG5vdCBjdXJyZW50bHkgcnVubmluZyBzbyB3ZSBhcmUKKyAgICAgICAgLy8ganVzdCByZXN0YXJ0aW5nIGl0IGFueXdheS4KKyAgICAgICAgaWYgKGNoZWNrQ29uZmlnKSB7CisgICAgICAgICAgICBDb25maWd1cmF0aW9uIGNvbmZpZyA9IG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnVwZGF0ZU9yaWVudGF0aW9uRnJvbUFwcFRva2VucygKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubUNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgIHIubWF5RnJlZXplU2NyZWVuTG9ja2VkKGFwcCkgPyByIDogbnVsbCk7CisgICAgICAgICAgICBtU2VydmljZS51cGRhdGVDb25maWd1cmF0aW9uTG9ja2VkKGNvbmZpZywgcik7CisgICAgICAgIH0KKworICAgICAgICByLmFwcCA9IGFwcDsKKworICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiTGF1bmNoaW5nOiAiICsgcik7CisKKyAgICAgICAgaW50IGlkeCA9IGFwcC5hY3Rpdml0aWVzLmluZGV4T2Yocik7CisgICAgICAgIGlmIChpZHggPCAwKSB7CisgICAgICAgICAgICBhcHAuYWN0aXZpdGllcy5hZGQocik7CisgICAgICAgIH0KKyAgICAgICAgbVNlcnZpY2UudXBkYXRlTHJ1UHJvY2Vzc0xvY2tlZChhcHAsIHRydWUsIHRydWUpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoYXBwLnRocmVhZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbW90ZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTGlzdDxSZXN1bHRJbmZvPiByZXN1bHRzID0gbnVsbDsKKyAgICAgICAgICAgIExpc3Q8SW50ZW50PiBuZXdJbnRlbnRzID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChhbmRSZXN1bWUpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRzID0gci5yZXN1bHRzOworICAgICAgICAgICAgICAgIG5ld0ludGVudHMgPSByLm5ld0ludGVudHM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiTGF1bmNoaW5nOiAiICsgcgorICAgICAgICAgICAgICAgICAgICArICIgaWNpY2xlPSIgKyByLmljaWNsZQorICAgICAgICAgICAgICAgICAgICArICIgd2l0aCByZXN1bHRzPSIgKyByZXN1bHRzICsgIiBuZXdJbnRlbnRzPSIgKyBuZXdJbnRlbnRzCisgICAgICAgICAgICAgICAgICAgICsgIiBhbmRSZXN1bWU9IiArIGFuZFJlc3VtZSk7CisgICAgICAgICAgICBpZiAoYW5kUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fUkVTVEFSVF9BQ1RJVklUWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgci50YXNrLnRhc2tJZCwgci5zaG9ydENvbXBvbmVudE5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHIuaXNIb21lQWN0aXZpdHkpIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tSG9tZVByb2Nlc3MgPSBhcHA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU2VydmljZS5lbnN1cmVQYWNrYWdlRGV4T3B0KHIuaW50ZW50LmdldENvbXBvbmVudCgpLmdldFBhY2thZ2VOYW1lKCkpOworICAgICAgICAgICAgYXBwLnRocmVhZC5zY2hlZHVsZUxhdW5jaEFjdGl2aXR5KG5ldyBJbnRlbnQoci5pbnRlbnQpLCByLAorICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwKKyAgICAgICAgICAgICAgICAgICAgci5pbmZvLCByLmljaWNsZSwgcmVzdWx0cywgbmV3SW50ZW50cywgIWFuZFJlc3VtZSwKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UuaXNOZXh0VHJhbnNpdGlvbkZvcndhcmQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgoYXBwLmluZm8uZmxhZ3MmQXBwbGljYXRpb25JbmZvLkZMQUdfSEVBVllfV0VJR0hUKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBtYXkgYmUgYSBoZWF2eS13ZWlnaHQgcHJvY2VzcyEgIE5vdGUgdGhhdCB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgIC8vIG1hbmFnZXIgd2lsbCBlbnN1cmUgdGhhdCBvbmx5IGFjdGl2aXR5IGNhbiBydW4gaW4gdGhlIG1haW4KKyAgICAgICAgICAgICAgICAvLyBwcm9jZXNzIG9mIHRoZSAuYXBrLCB3aGljaCBpcyB0aGUgb25seSB0aGluZyB0aGF0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAvLyBjb25zaWRlcmVkIGhlYXZ5LXdlaWdodC4KKyAgICAgICAgICAgICAgICBpZiAoYXBwLnByb2Nlc3NOYW1lLmVxdWFscyhhcHAuaW5mby5wYWNrYWdlTmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MgIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MgIT0gYXBwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJTdGFydGluZyBuZXcgaGVhdnkgd2VpZ2h0IHByb2Nlc3MgIiArIGFwcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgd2hlbiBhbHJlYWR5IHJ1bm5pbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MgPSBhcHA7CisgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbVNlcnZpY2UubUhhbmRsZXIub2J0YWluTWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlBPU1RfSEVBVllfTk9USUZJQ0FUSU9OX01TRyk7CisgICAgICAgICAgICAgICAgICAgIG1zZy5vYmogPSByOworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgaWYgKHIubGF1bmNoRmFpbGVkKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2Vjb25kIHRpbWUgd2UgZmFpbGVkIC0tIGZpbmlzaCBhY3Rpdml0eQorICAgICAgICAgICAgICAgIC8vIGFuZCBnaXZlIHVwLgorICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJTZWNvbmQgZmFpbHVyZSBsYXVuY2hpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICAgICsgIiwgZ2l2aW5nIHVwIiwgZSk7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UuYXBwRGllZExvY2tlZChhcHAsIGFwcC5waWQsIGFwcC50aHJlYWQpOworICAgICAgICAgICAgICAgIHJlcXVlc3RGaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAiMm5kLWNyYXNoIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlIGZhaWxlZCAtLSByZXN0YXJ0IHByb2Nlc3MgYW5kCisgICAgICAgICAgICAvLyByZXRyeS4KKyAgICAgICAgICAgIGFwcC5hY3Rpdml0aWVzLnJlbW92ZShyKTsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKworICAgICAgICByLmxhdW5jaEZhaWxlZCA9IGZhbHNlOworICAgICAgICBpZiAodXBkYXRlTFJVTGlzdExvY2tlZChyKSkgeworICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5ICIgKyByCisgICAgICAgICAgICAgICAgICArICIgYmVpbmcgbGF1bmNoZWQsIGJ1dCBhbHJlYWR5IGluIExSVSBsaXN0Iik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYW5kUmVzdW1lKSB7CisgICAgICAgICAgICAvLyBBcyBwYXJ0IG9mIHRoZSBwcm9jZXNzIG9mIGxhdW5jaGluZywgQWN0aXZpdHlUaHJlYWQgYWxzbyBwZXJmb3JtcworICAgICAgICAgICAgLy8gYSByZXN1bWUuCisgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5SRVNVTUVEOworICAgICAgICAgICAgci5pY2ljbGUgPSBudWxsOworICAgICAgICAgICAgci5oYXZlU3RhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHIuc3RvcHBlZCA9IGZhbHNlOworICAgICAgICAgICAgbVJlc3VtZWRBY3Rpdml0eSA9IHI7CisgICAgICAgICAgICByLnRhc2sudG91Y2hBY3RpdmVUaW1lKCk7CisgICAgICAgICAgICBjb21wbGV0ZVJlc3VtZUxvY2tlZChyKTsKKyAgICAgICAgICAgIHBhdXNlSWZTbGVlcGluZ0xvY2tlZCgpOyAgICAgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMgYWN0aXZpdHkgaXMgbm90IHN0YXJ0aW5nIGluIHRoZSByZXN1bWVkIHN0YXRlLi4uIHdoaWNoCisgICAgICAgICAgICAvLyBzaG91bGQgbG9vayBsaWtlIHdlIGFza2VkIGl0IHRvIHBhdXNlK3N0b3AgKGJ1dCByZW1haW4gdmlzaWJsZSksCisgICAgICAgICAgICAvLyBhbmQgaXQgaGFzIGRvbmUgc28gYW5kIHJlcG9ydGVkIGJhY2sgdGhlIGN1cnJlbnQgaWNpY2xlIGFuZAorICAgICAgICAgICAgLy8gb3RoZXIgc3RhdGUuCisgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5TVE9QUEVEOworICAgICAgICAgICAgci5zdG9wcGVkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExhdW5jaCB0aGUgbmV3IHZlcnNpb24gc2V0dXAgc2NyZWVuIGlmIG5lZWRlZC4gIFdlIGRvIHRoaXMgLWFmdGVyLQorICAgICAgICAvLyBsYXVuY2hpbmcgdGhlIGluaXRpYWwgYWN0aXZpdHkgKHRoYXQgaXMsIGhvbWUpLCBzbyB0aGF0IGl0IGNhbiBoYXZlCisgICAgICAgIC8vIGEgY2hhbmNlIHRvIGluaXRpYWxpemUgaXRzZWxmIHdoaWxlIGluIHRoZSBiYWNrZ3JvdW5kLCBtYWtpbmcgdGhlCisgICAgICAgIC8vIHN3aXRjaCBiYWNrIHRvIGl0IGZhc3RlciBhbmQgbG9vayBiZXR0ZXIuCisgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICBtU2VydmljZS5zdGFydFNldHVwQWN0aXZpdHlMb2NrZWQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHN0YXJ0U3BlY2lmaWNBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgYm9vbGVhbiBhbmRSZXN1bWUsIGJvb2xlYW4gY2hlY2tDb25maWcpIHsKKyAgICAgICAgLy8gSXMgdGhpcyBhY3Rpdml0eSdzIGFwcGxpY2F0aW9uIGFscmVhZHkgcnVubmluZz8KKyAgICAgICAgUHJvY2Vzc1JlY29yZCBhcHAgPSBtU2VydmljZS5nZXRQcm9jZXNzUmVjb3JkTG9ja2VkKHIucHJvY2Vzc05hbWUsCisgICAgICAgICAgICAgICAgci5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQpOworICAgICAgICAKKyAgICAgICAgaWYgKHIuc3RhcnRUaW1lID09IDApIHsKKyAgICAgICAgICAgIHIuc3RhcnRUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CisgICAgICAgICAgICBpZiAobUluaXRpYWxTdGFydFRpbWUgPT0gMCkgeworICAgICAgICAgICAgICAgIG1Jbml0aWFsU3RhcnRUaW1lID0gci5zdGFydFRpbWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobUluaXRpYWxTdGFydFRpbWUgPT0gMCkgeworICAgICAgICAgICAgbUluaXRpYWxTdGFydFRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGFwcCAhPSBudWxsICYmIGFwcC50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZWFsU3RhcnRBY3Rpdml0eUxvY2tlZChyLCBhcHAsIGFuZFJlc3VtZSwgY2hlY2tDb25maWcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB3aGVuIHN0YXJ0aW5nIGFjdGl2aXR5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKSwgZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIGEgZGVhZCBvYmplY3QgZXhjZXB0aW9uIHdhcyB0aHJvd24gLS0gZmFsbCB0aHJvdWdoIHRvCisgICAgICAgICAgICAvLyByZXN0YXJ0IHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgICAgfQorCisgICAgICAgIG1TZXJ2aWNlLnN0YXJ0UHJvY2Vzc0xvY2tlZChyLnByb2Nlc3NOYW1lLCByLmluZm8uYXBwbGljYXRpb25JbmZvLCB0cnVlLCAwLAorICAgICAgICAgICAgICAgICJhY3Rpdml0eSIsIHIuaW50ZW50LmdldENvbXBvbmVudCgpLCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgcGF1c2VJZlNsZWVwaW5nTG9ja2VkKCkgeworICAgICAgICBpZiAobVNlcnZpY2UubVNsZWVwaW5nIHx8IG1TZXJ2aWNlLm1TaHV0dGluZ0Rvd24pIHsKKyAgICAgICAgICAgIGlmICghbUdvaW5nVG9TbGVlcC5pc0hlbGQoKSkgeworICAgICAgICAgICAgICAgIG1Hb2luZ1RvU2xlZXAuYWNxdWlyZSgpOworICAgICAgICAgICAgICAgIGlmIChtTGF1bmNoaW5nQWN0aXZpdHkuaXNIZWxkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbUxhdW5jaGluZ0FjdGl2aXR5LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoTEFVTkNIX1RJTUVPVVRfTVNHKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSBub3QgY3VycmVudGx5IHBhdXNpbmcgYW4gYWN0aXZpdHksIGdldCB0aGUgY3VycmVudAorICAgICAgICAgICAgLy8gb25lIHRvIHBhdXNlLiAgSWYgd2UgYXJlIHBhdXNpbmcgb25lLCB3ZSB3aWxsIGp1c3QgbGV0IHRoYXQgc3R1ZmYKKyAgICAgICAgICAgIC8vIHJ1biBhbmQgcmVsZWFzZSB0aGUgd2FrZSBsb2NrIHdoZW4gYWxsIGRvbmUuCisgICAgICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiU2xlZXAgbmVlZHMgdG8gcGF1c2UuLi4iKTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHLCAiU2xlZXAgPT4gcGF1c2Ugd2l0aCB1c2VyTGVhdmluZz1mYWxzZSIpOworICAgICAgICAgICAgICAgIHN0YXJ0UGF1c2luZ0xvY2tlZChmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHN0YXJ0UGF1c2luZ0xvY2tlZChib29sZWFuIHVzZXJMZWF2aW5nLCBib29sZWFuIHVpU2xlZXBpbmcpIHsKKyAgICAgICAgaWYgKG1QYXVzaW5nQWN0aXZpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBlID0gbmV3IFJ1bnRpbWVFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIFNsb2cuZShUQUcsICJUcnlpbmcgdG8gcGF1c2Ugd2hlbiBwYXVzZSBpcyBhbHJlYWR5IHBlbmRpbmcgZm9yICIKKyAgICAgICAgICAgICAgICAgICsgbVBhdXNpbmdBY3Rpdml0eSwgZSk7CisgICAgICAgIH0KKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgcHJldiA9IG1SZXN1bWVkQWN0aXZpdHk7CisgICAgICAgIGlmIChwcmV2ID09IG51bGwpIHsKKyAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZSA9IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBTbG9nLmUoVEFHLCAiVHJ5aW5nIHRvIHBhdXNlIHdoZW4gbm90aGluZyBpcyByZXN1bWVkIiwgZSk7CisgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJTdGFydCBwYXVzaW5nOiAiICsgcHJldik7CisgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBudWxsOworICAgICAgICBtUGF1c2luZ0FjdGl2aXR5ID0gcHJldjsKKyAgICAgICAgbUxhc3RQYXVzZWRBY3Rpdml0eSA9IHByZXY7CisgICAgICAgIHByZXYuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlBBVVNJTkc7CisgICAgICAgIHByZXYudGFzay50b3VjaEFjdGl2ZVRpbWUoKTsKKworICAgICAgICBtU2VydmljZS51cGRhdGVDcHVTdGF0cygpOworICAgICAgICAKKyAgICAgICAgaWYgKHByZXYuYXBwICE9IG51bGwgJiYgcHJldi5hcHAudGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkVucXVldWVpbmcgcGVuZGluZyBwYXVzZTogIiArIHByZXYpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9QQVVTRV9BQ1RJVklUWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHByZXYpLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5zaG9ydENvbXBvbmVudE5hbWUpOworICAgICAgICAgICAgICAgIHByZXYuYXBwLnRocmVhZC5zY2hlZHVsZVBhdXNlQWN0aXZpdHkocHJldiwgcHJldi5maW5pc2hpbmcsIHVzZXJMZWF2aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5jb25maWdDaGFuZ2VGbGFncyk7CisgICAgICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlVXNhZ2VTdGF0cyhwcmV2LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZXhjZXB0aW9uLCBpZiBwcm9jZXNzIGRpZWQgb3RoZXIgY29kZSB3aWxsIGNsZWFudXAuCisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gZHVyaW5nIHBhdXNlIiwgZSk7CisgICAgICAgICAgICAgICAgbVBhdXNpbmdBY3Rpdml0eSA9IG51bGw7CisgICAgICAgICAgICAgICAgbUxhc3RQYXVzZWRBY3Rpdml0eSA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtUGF1c2luZ0FjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgICAgIG1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBnb2luZyB0byBzbGVlcCwgd2Ugd2FudCB0byBlbnN1cmUgdGhlIGRldmljZSBpcworICAgICAgICAvLyBhd2FrZSB1bnRpbCB0aGUgbmV4dCBhY3Rpdml0eSBpcyBzdGFydGVkLgorICAgICAgICBpZiAoIW1TZXJ2aWNlLm1TbGVlcGluZyAmJiAhbVNlcnZpY2UubVNodXR0aW5nRG93bikgeworICAgICAgICAgICAgbUxhdW5jaGluZ0FjdGl2aXR5LmFjcXVpcmUoKTsKKyAgICAgICAgICAgIGlmICghbUhhbmRsZXIuaGFzTWVzc2FnZXMoTEFVTkNIX1RJTUVPVVRfTVNHKSkgeworICAgICAgICAgICAgICAgIC8vIFRvIGJlIHNhZmUsIGRvbid0IGFsbG93IHRoZSB3YWtlIGxvY2sgdG8gYmUgaGVsZCBmb3IgdG9vIGxvbmcuCisgICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKExBVU5DSF9USU1FT1VUX01TRyk7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG1zZywgTEFVTkNIX1RJTUVPVVQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKworICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBIYXZlIHRoZSB3aW5kb3cgbWFuYWdlciBwYXVzZSBpdHMga2V5IGRpc3BhdGNoaW5nIHVudGlsIHRoZSBuZXcKKyAgICAgICAgICAgIC8vIGFjdGl2aXR5IGhhcyBzdGFydGVkLiAgSWYgd2UncmUgcGF1c2luZyB0aGUgYWN0aXZpdHkganVzdCBiZWNhdXNlCisgICAgICAgICAgICAvLyB0aGUgc2NyZWVuIGlzIGJlaW5nIHR1cm5lZCBvZmYgYW5kIHRoZSBVSSBpcyBzbGVlcGluZywgZG9uJ3QgaW50ZXJydXB0CisgICAgICAgICAgICAvLyBrZXkgZGlzcGF0Y2g7IHRoZSBzYW1lIGFjdGl2aXR5IHdpbGwgcGljayBpdCB1cCBhZ2FpbiBvbiB3YWtldXAuCisgICAgICAgICAgICBpZiAoIXVpU2xlZXBpbmcpIHsKKyAgICAgICAgICAgICAgICBwcmV2LnBhdXNlS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiS2V5IGRpc3BhdGNoIG5vdCBwYXVzZWQgZm9yIHNjcmVlbiBvZmYiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2NoZWR1bGUgYSBwYXVzZSB0aW1lb3V0IGluIGNhc2UgdGhlIGFwcCBkb2Vzbid0IHJlc3BvbmQuCisgICAgICAgICAgICAvLyBXZSBkb24ndCBnaXZlIGl0IG11Y2ggdGltZSBiZWNhdXNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUKKyAgICAgICAgICAgIC8vIHJlc3BvbnNpdmVuZXNzIHNlZW4gYnkgdGhlIHVzZXIuCisgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoUEFVU0VfVElNRU9VVF9NU0cpOworICAgICAgICAgICAgbXNnLm9iaiA9IHByZXY7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBQQVVTRV9USU1FT1VUKTsKKyAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIldhaXRpbmcgZm9yIHBhdXNlIHRvIGNvbXBsZXRlLi4uIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGUKKyAgICAgICAgICAgIC8vIHBhdXNlLCBzbyBqdXN0IHRyZWF0IGl0IGFzIGJlaW5nIHBhdXNlZCBub3cuCisgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJBY3Rpdml0eSBub3QgcnVubmluZywgcmVzdW1pbmcgbmV4dC4iKTsKKyAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGZpbmFsIHZvaWQgYWN0aXZpdHlQYXVzZWQoSUJpbmRlciB0b2tlbiwgQnVuZGxlIGljaWNsZSwgYm9vbGVhbiB0aW1lb3V0KSB7CisgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KAorICAgICAgICAgICAgVEFHLCAiQWN0aXZpdHkgcGF1c2VkOiB0b2tlbj0iICsgdG9rZW4gKyAiLCBpY2ljbGU9IiArIGljaWNsZQorICAgICAgICAgICAgKyAiLCB0aW1lb3V0PSIgKyB0aW1lb3V0KTsKKworICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbnVsbDsKKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAgICAgICAgICAgICByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKCF0aW1lb3V0KSB7CisgICAgICAgICAgICAgICAgICAgIHIuaWNpY2xlID0gaWNpY2xlOworICAgICAgICAgICAgICAgICAgICByLmhhdmVTdGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFBBVVNFX1RJTUVPVVRfTVNHLCByKTsKKyAgICAgICAgICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSA9PSByKSB7CisgICAgICAgICAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlBBVVNFRDsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGVQYXVzZUxvY2tlZCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX0ZBSUxFRF9UT19QQVVTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwgci5zaG9ydENvbXBvbmVudE5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1QYXVzaW5nQWN0aXZpdHkgIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG1QYXVzaW5nQWN0aXZpdHkuc2hvcnRDb21wb25lbnROYW1lIDogIihub25lKSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCBjb21wbGV0ZVBhdXNlTG9ja2VkKCkgeworICAgICAgICBBY3Rpdml0eVJlY29yZCBwcmV2ID0gbVBhdXNpbmdBY3Rpdml0eTsKKyAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiQ29tcGxldGUgcGF1c2U6ICIgKyBwcmV2KTsKKyAgICAgICAgCisgICAgICAgIGlmIChwcmV2ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChwcmV2LmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkV4ZWN1dGluZyBmaW5pc2ggb2YgYWN0aXZpdHk6ICIgKyBwcmV2KTsKKyAgICAgICAgICAgICAgICBwcmV2ID0gZmluaXNoQ3VycmVudEFjdGl2aXR5TG9ja2VkKHByZXYsIEZJTklTSF9BRlRFUl9WSVNJQkxFKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldi5hcHAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkVucXVldWVpbmcgcGVuZGluZyBzdG9wOiAiICsgcHJldik7CisgICAgICAgICAgICAgICAgaWYgKHByZXYud2FpdGluZ1Zpc2libGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJldi53YWl0aW5nVmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnJlbW92ZShwcmV2KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19QQVVTRSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIkNvbXBsZXRlIHBhdXNlLCBubyBsb25nZXIgd2FpdGluZzogIiArIHByZXYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJldi5jb25maWdEZXN0cm95KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwcmV2aW91cyBpcyBiZWluZyBwYXVzZWQgYmVjYXVzZSB0aGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAvLyBpcyBjaGFuZ2luZywgd2hpY2ggbWVhbnMgaXQgaXMgYWN0dWFsbHkgc3RvcHBpbmcuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gVG8ganVnZ2xlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGFsc28gc3RhcnRpbmcgYSBuZXcKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2UgcmlnaHQgbm93LCB3ZSBuZWVkIHRvIGZpcnN0IGNvbXBsZXRlbHkgc3RvcAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBpbnN0YW5jZSBiZWZvcmUgc3RhcnRpbmcgdGhlIG5ldyBvbmUuCisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkRlc3Ryb3lpbmcgYWZ0ZXIgcGF1c2U6ICIgKyBwcmV2KTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdHJveUFjdGl2aXR5TG9ja2VkKHByZXYsIHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1TdG9wcGluZ0FjdGl2aXRpZXMuYWRkKHByZXYpOworICAgICAgICAgICAgICAgICAgICBpZiAobVN0b3BwaW5nQWN0aXZpdGllcy5zaXplKCkgPiAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBmZXcgYWN0aXZpdGllcyB3YWl0aW5nIHRvIHN0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIGdpdmUgdXAgb24gdGhpbmdzIGdvaW5nIGlkbGUgYW5kIHN0YXJ0IGNsZWFyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVtIG91dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIlRvIG1hbnkgcGVuZGluZyBzdG9wcywgZm9yY2luZyBpZGxlIik7CisgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IE1lc3NhZ2Uub2J0YWluKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cud2hhdCA9IElETEVfTk9XX01TRzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkFwcCBkaWVkIGR1cmluZyBwYXVzZSwgbm90IHN0b3BwaW5nOiAiICsgcHJldik7CisgICAgICAgICAgICAgICAgcHJldiA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtUGF1c2luZ0FjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbVNlcnZpY2UubVNsZWVwaW5nICYmICFtU2VydmljZS5tU2h1dHRpbmdEb3duKSB7CisgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChwcmV2KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtR29pbmdUb1NsZWVwLmlzSGVsZCgpKSB7CisgICAgICAgICAgICAgICAgbUdvaW5nVG9TbGVlcC5yZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVNlcnZpY2UubVNodXR0aW5nRG93bikgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAocHJldiAhPSBudWxsKSB7CisgICAgICAgICAgICBwcmV2LnJlc3VtZUtleURpc3BhdGNoaW5nTG9ja2VkKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJldi5hcHAgIT0gbnVsbCAmJiBwcmV2LmNwdVRpbWVBdFJlc3VtZSA+IDAKKyAgICAgICAgICAgICAgICAmJiBtU2VydmljZS5tQmF0dGVyeVN0YXRzU2VydmljZS5pc09uQmF0dGVyeSgpKSB7CisgICAgICAgICAgICBsb25nIGRpZmYgPSAwOworICAgICAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZS5tUHJvY2Vzc1N0YXRzVGhyZWFkKSB7CisgICAgICAgICAgICAgICAgZGlmZiA9IG1TZXJ2aWNlLm1Qcm9jZXNzU3RhdHMuZ2V0Q3B1VGltZUZvclBpZChwcmV2LmFwcC5waWQpCisgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXYuY3B1VGltZUF0UmVzdW1lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpZmYgPiAwKSB7CisgICAgICAgICAgICAgICAgQmF0dGVyeVN0YXRzSW1wbCBic2kgPSBtU2VydmljZS5tQmF0dGVyeVN0YXRzU2VydmljZS5nZXRBY3RpdmVTdGF0aXN0aWNzKCk7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChic2kpIHsKKyAgICAgICAgICAgICAgICAgICAgQmF0dGVyeVN0YXRzSW1wbC5VaWQuUHJvYyBwcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnNpLmdldFByb2Nlc3NTdGF0c0xvY2tlZChwcmV2LmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LmluZm8ucGFja2FnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAocHMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHMuYWRkRm9yZWdyb3VuZFRpbWVMb2NrZWQoZGlmZik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJldi5jcHVUaW1lQXRSZXN1bWUgPSAwOyAvLyByZXNldCBpdAorICAgIH0KKworICAgIC8qKgorICAgICAqIE9uY2Ugd2Uga25vdyB0aGF0IHdlIGhhdmUgYXNrZWQgYW4gYXBwbGljYXRpb24gdG8gcHV0IGFuIGFjdGl2aXR5IGluCisgICAgICogdGhlIHJlc3VtZWQgc3RhdGUgKGVpdGhlciBieSBsYXVuY2hpbmcgaXQgb3IgZXhwbGljaXRseSB0ZWxsaW5nIGl0KSwKKyAgICAgKiB0aGlzIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIHJlc3Qgb2Ygb3VyIHN0YXRlIHRvIG1hdGNoIHRoYXQgZmFjdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgY29tcGxldGVSZXN1bWVMb2NrZWQoQWN0aXZpdHlSZWNvcmQgbmV4dCkgeworICAgICAgICBuZXh0LmlkbGUgPSBmYWxzZTsKKyAgICAgICAgbmV4dC5yZXN1bHRzID0gbnVsbDsKKyAgICAgICAgbmV4dC5uZXdJbnRlbnRzID0gbnVsbDsKKworICAgICAgICAvLyBzY2hlZHVsZSBhbiBpZGxlIHRpbWVvdXQgaW4gY2FzZSB0aGUgYXBwIGRvZXNuJ3QgZG8gaXQgZm9yIHVzLgorICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoSURMRV9USU1FT1VUX01TRyk7CisgICAgICAgIG1zZy5vYmogPSBuZXh0OworICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBJRExFX1RJTUVPVVQpOworCisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgLy8gVGhlIGFjdGl2aXR5IHdhcyBuZXZlciB0b2xkIHRvIHBhdXNlLCBzbyBqdXN0IGtlZXAKKyAgICAgICAgICAgIC8vIHRoaW5ncyBnb2luZyBhcy1pcy4gIFRvIG1haW50YWluIG91ciBvd24gc3RhdGUsCisgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGVtdWxhdGUgaXQgY29taW5nIGJhY2sgYW5kIHNheWluZyBpdCBpcworICAgICAgICAgICAgLy8gaWRsZS4KKyAgICAgICAgICAgIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoSURMRV9OT1dfTVNHKTsKKyAgICAgICAgICAgIG1zZy5vYmogPSBuZXh0OworICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICBtU2VydmljZS5yZXBvcnRSZXN1bWVkQWN0aXZpdHlMb2NrZWQobmV4dCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5leHQudGh1bWJuYWlsID0gbnVsbDsKKyAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEZvY3VzZWRBY3Rpdml0eUxvY2tlZChuZXh0KTsKKyAgICAgICAgfQorICAgICAgICBuZXh0LnJlc3VtZUtleURpc3BhdGNoaW5nTG9ja2VkKCk7CisgICAgICAgIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKG51bGwsIDApOworICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5leGVjdXRlQXBwVHJhbnNpdGlvbigpOworICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5jbGVhcigpOworCisgICAgICAgIC8vIE1hcmsgdGhlIHBvaW50IHdoZW4gdGhlIGFjdGl2aXR5IGlzIHJlc3VtaW5nCisgICAgICAgIC8vIFRPRE86IFRvIGJlIG1vcmUgYWNjdXJhdGUsIHRoZSBtYXJrIHNob3VsZCBiZSBiZWZvcmUgdGhlIG9uQ3JlYXRlLAorICAgICAgICAvLyAgICAgICBub3QgYWZ0ZXIgdGhlIG9uUmVzdW1lLiBCdXQgZm9yIHN1YnNlcXVlbnQgc3RhcnRzLCBvblJlc3VtZSBpcyBmaW5lLgorICAgICAgICBpZiAobmV4dC5hcHAgIT0gbnVsbCkgeworICAgICAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZS5tUHJvY2Vzc1N0YXRzVGhyZWFkKSB7CisgICAgICAgICAgICAgICAgbmV4dC5jcHVUaW1lQXRSZXN1bWUgPSBtU2VydmljZS5tUHJvY2Vzc1N0YXRzLmdldENwdVRpbWVGb3JQaWQobmV4dC5hcHAucGlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5leHQuY3B1VGltZUF0UmVzdW1lID0gMDsgLy8gQ291bGRuJ3QgZ2V0IHRoZSBjcHUgdGltZSBvZiBwcm9jZXNzCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYWtlIHN1cmUgdGhhdCBhbGwgYWN0aXZpdGllcyB0aGF0IG5lZWQgdG8gYmUgdmlzaWJsZSAodGhhdCBpcywgdGhleQorICAgICAqIGN1cnJlbnRseSBjYW4gYmUgc2VlbiBieSB0aGUgdXNlcikgYWN0dWFsbHkgYXJlLgorICAgICAqLworICAgIGZpbmFsIHZvaWQgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQoQWN0aXZpdHlSZWNvcmQgdG9wLAorICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgc3RhcnRpbmcsIFN0cmluZyBvbmx5VGhpc1Byb2Nlc3MsIGludCBjb25maWdDaGFuZ2VzKSB7CisgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKKyAgICAgICAgICAgICAgICBUQUcsICJlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZSBiZWhpbmQgIiArIHRvcAorICAgICAgICAgICAgICAgICsgIiBjb25maWdDaGFuZ2VzPTB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoY29uZmlnQ2hhbmdlcykpOworCisgICAgICAgIC8vIElmIHRoZSB0b3AgYWN0aXZpdHkgaXMgbm90IGZ1bGxzY3JlZW4sIHRoZW4gd2UgbmVlZCB0bworICAgICAgICAvLyBtYWtlIHN1cmUgYW55IGFjdGl2aXRpZXMgdW5kZXIgaXQgYXJlIG5vdyB2aXNpYmxlLgorICAgICAgICBmaW5hbCBpbnQgY291bnQgPSBtSGlzdG9yeS5zaXplKCk7CisgICAgICAgIGludCBpID0gY291bnQtMTsKKyAgICAgICAgd2hpbGUgKG1IaXN0b3J5LmdldChpKSAhPSB0b3ApIHsKKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgfQorICAgICAgICBBY3Rpdml0eVJlY29yZCByOworICAgICAgICBib29sZWFuIGJlaGluZEZ1bGxzY3JlZW4gPSBmYWxzZTsKKyAgICAgICAgZm9yICg7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgciA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgIFRBRywgIk1ha2UgdmlzaWJsZT8gIiArIHIgKyAiIGZpbmlzaGluZz0iICsgci5maW5pc2hpbmcKKyAgICAgICAgICAgICAgICAgICAgKyAiIHN0YXRlPSIgKyByLnN0YXRlKTsKKyAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGRvVGhpc1Byb2Nlc3MgPSBvbmx5VGhpc1Byb2Nlc3MgPT0gbnVsbAorICAgICAgICAgICAgICAgICAgICB8fCBvbmx5VGhpc1Byb2Nlc3MuZXF1YWxzKHIucHJvY2Vzc05hbWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBGaXJzdDogaWYgdGhpcyBpcyBub3QgdGhlIGN1cnJlbnQgYWN0aXZpdHkgYmVpbmcgc3RhcnRlZCwgbWFrZQorICAgICAgICAgICAgLy8gc3VyZSBpdCBtYXRjaGVzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICBpZiAociAhPSBzdGFydGluZyAmJiBkb1RoaXNQcm9jZXNzKSB7CisgICAgICAgICAgICAgICAgZW5zdXJlQWN0aXZpdHlDb25maWd1cmF0aW9uTG9ja2VkKHIsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoci5hcHAgPT0gbnVsbCB8fCByLmFwcC50aHJlYWQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmIChvbmx5VGhpc1Byb2Nlc3MgPT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgb25seVRoaXNQcm9jZXNzLmVxdWFscyhyLnByb2Nlc3NOYW1lKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IG5lZWRzIHRvIGJlIHZpc2libGUsIGJ1dCBpc24ndCBldmVuCisgICAgICAgICAgICAgICAgICAgIC8vIHJ1bm5pbmcuLi4gIGdldCBpdCBzdGFydGVkLCBidXQgZG9uJ3QgcmVzdW1lIGl0CisgICAgICAgICAgICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTdGFydCBhbmQgZnJlZXplIHNjcmVlbiBmb3IgIiArIHIpOworICAgICAgICAgICAgICAgICAgICBpZiAociAhPSBzdGFydGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgci5zdGFydEZyZWV6aW5nU2NyZWVuTG9ja2VkKHIuYXBwLCBjb25maWdDaGFuZ2VzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIXIudmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTdGFydGluZyBhbmQgbWFraW5nIHZpc2libGU6ICIgKyByKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkociwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHIgIT0gc3RhcnRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U3BlY2lmaWNBY3Rpdml0eUxvY2tlZChyLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9IGVsc2UgaWYgKHIudmlzaWJsZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgYWxyZWFkeSB2aXNpYmxlLCB0aGVuIHRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAgICAgICAgICAvLyBlbHNlIHRvIGRvIGhlcmUuCisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiU2tpcHBpbmc6IGFscmVhZHkgdmlzaWJsZSBhdCAiICsgcik7CisgICAgICAgICAgICAgICAgci5zdG9wRnJlZXppbmdTY3JlZW5Mb2NrZWQoZmFsc2UpOworCisgICAgICAgICAgICB9IGVsc2UgaWYgKG9ubHlUaGlzUHJvY2VzcyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBub3QgY3VycmVudGx5IHZpc2libGUsIGJ1dCBpcyBydW5uaW5nLgorICAgICAgICAgICAgICAgIC8vIFRlbGwgaXQgdG8gYmVjb21lIHZpc2libGUuCisgICAgICAgICAgICAgICAgci52aXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoci5zdGF0ZSAhPSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQgJiYgciAhPSBzdGFydGluZykgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIHBhdXNlZCwgdGVsbCBpdAorICAgICAgICAgICAgICAgICAgICAvLyB0byBub3cgc2hvdyBpdHMgd2luZG93LgorICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiTWFraW5nIHZpc2libGUgYW5kIHNjaGVkdWxpbmcgdmlzaWJpbGl0eTogIiArIHIpOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVdpbmRvd1Zpc2liaWxpdHkociwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IHNraXAgb24gYW55IGZhaWx1cmU7IHdlJ2xsIG1ha2UgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZpc2libGUgd2hlbiBpdCBuZXh0IHJlc3RhcnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gbWFraW5nIHZpc2liaWxlOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCksIGUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBZ2dyZWdhdGUgY3VycmVudCBjaGFuZ2UgZmxhZ3MuCisgICAgICAgICAgICBjb25maWdDaGFuZ2VzIHw9IHIuY29uZmlnQ2hhbmdlRmxhZ3M7CisKKyAgICAgICAgICAgIGlmIChyLmZ1bGxzY3JlZW4pIHsKKyAgICAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBub3RoaW5nIGVsc2UgbmVlZHMgdG8gYmUgc2hvd24KKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTdG9wcGluZzogZnVsbHNjcmVlbiBhdCAiICsgcik7CisgICAgICAgICAgICAgICAgYmVoaW5kRnVsbHNjcmVlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTm93IGZvciBhbnkgYWN0aXZpdGllcyB0aGF0IGFyZW4ndCB2aXNpYmxlIHRvIHRoZSB1c2VyLCBtYWtlCisgICAgICAgIC8vIHN1cmUgdGhleSBubyBsb25nZXIgYXJlIGtlZXBpbmcgdGhlIHNjcmVlbiBmcm96ZW4uCisgICAgICAgIHdoaWxlIChpID49IDApIHsKKyAgICAgICAgICAgIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICBUQUcsICJNYWtlIGludmlzaWJsZT8gIiArIHIgKyAiIGZpbmlzaGluZz0iICsgci5maW5pc2hpbmcKKyAgICAgICAgICAgICAgICAgICAgKyAiIHN0YXRlPSIgKyByLnN0YXRlCisgICAgICAgICAgICAgICAgICAgICsgIiBiZWhpbmRGdWxsc2NyZWVuPSIgKyBiZWhpbmRGdWxsc2NyZWVuKTsKKyAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoYmVoaW5kRnVsbHNjcmVlbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoci52aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIk1ha2luZyBpbnZpc2libGU6ICIgKyByKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHIudmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5TVE9QUElORworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlNUT1BQRUQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByLmFwcCAhPSBudWxsICYmIHIuYXBwLnRocmVhZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTY2hlZHVsaW5nIGludmlzaWJpbGl0eTogIiArIHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVXaW5kb3dWaXNpYmlsaXR5KHIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEp1c3Qgc2tpcCBvbiBhbnkgZmFpbHVyZTsgd2UnbGwgbWFrZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZpc2libGUgd2hlbiBpdCBuZXh0IHJlc3RhcnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIG1ha2luZyBoaWRkZW46ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCksIGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJBbHJlYWR5IGludmlzaWJsZTogIiArIHIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLmZ1bGxzY3JlZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIk5vdyBiZWhpbmRGdWxsc2NyZWVuOiAiICsgcik7CisgICAgICAgICAgICAgICAgICAgIGJlaGluZEZ1bGxzY3JlZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFZlcnNpb24gb2YgZW5zdXJlQWN0aXZpdGllc1Zpc2libGUgdGhhdCBjYW4gZWFzaWx5IGJlIGNhbGxlZCBhbnl3aGVyZS4KKyAgICAgKi8KKyAgICBmaW5hbCB2b2lkIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKEFjdGl2aXR5UmVjb3JkIHN0YXJ0aW5nLAorICAgICAgICAgICAgaW50IGNvbmZpZ0NoYW5nZXMpIHsKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgaWYgKHIgIT0gbnVsbCkgeworICAgICAgICAgICAgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQociwgc3RhcnRpbmcsIG51bGwsIGNvbmZpZ0NoYW5nZXMpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEVuc3VyZSB0aGF0IHRoZSB0b3AgYWN0aXZpdHkgaW4gdGhlIHN0YWNrIGlzIHJlc3VtZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJldiBUaGUgcHJldmlvdXNseSByZXN1bWVkIGFjdGl2aXR5LCBmb3Igd2hlbiBpbiB0aGUgcHJvY2VzcworICAgICAqIG9mIHBhdXNpbmc7IGNhbiBiZSBudWxsIHRvIGNhbGwgZnJvbSBlbHNld2hlcmUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiBzb21ldGhpbmcgaXMgYmVpbmcgcmVzdW1lZCwgb3IgZmFsc2UgaWYKKyAgICAgKiBub3RoaW5nIGhhcHBlbmVkLgorICAgICAqLworICAgIGZpbmFsIGJvb2xlYW4gcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgcHJldikgeworICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBhY3Rpdml0eSB0aGF0IGlzIG5vdCBmaW5pc2hpbmcuCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5leHQgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CisKKyAgICAgICAgLy8gUmVtZW1iZXIgaG93IHdlJ2xsIHByb2Nlc3MgdGhpcyBwYXVzZS9yZXN1bWUgc2l0dWF0aW9uLCBhbmQgZW5zdXJlCisgICAgICAgIC8vIHRoYXQgdGhlIHN0YXRlIGlzIHJlc2V0IGhvd2V2ZXIgd2Ugd2luZCB1cCBwcm9jZWVkaW5nLgorICAgICAgICBmaW5hbCBib29sZWFuIHVzZXJMZWF2aW5nID0gbVVzZXJMZWF2aW5nOworICAgICAgICBtVXNlckxlYXZpbmcgPSBmYWxzZTsKKworICAgICAgICBpZiAobmV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBhY3Rpdml0aWVzISAgTGV0J3MganVzdCBzdGFydCB1cCB0aGUKKyAgICAgICAgICAgIC8vIExhdW5jaGVyLi4uCisgICAgICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgIHJldHVybiBtU2VydmljZS5zdGFydEhvbWVBY3Rpdml0eUxvY2tlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbmV4dC5kZWxheWVkUmVzdW1lID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUgdG9wIGFjdGl2aXR5IGlzIHRoZSByZXN1bWVkIG9uZSwgbm90aGluZyB0byBkby4KKyAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gbmV4dCAmJiBuZXh0LnN0YXRlID09IEFjdGl2aXR5U3RhdGUuUkVTVU1FRCkgeworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgZXhlY3V0ZWQgYW55IHBlbmRpbmcgdHJhbnNpdGlvbnMsIHNpbmNlIHRoZXJlCisgICAgICAgICAgICAvLyBzaG91bGQgYmUgbm90aGluZyBsZWZ0IHRvIGRvIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5leGVjdXRlQXBwVHJhbnNpdGlvbigpOworICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHdlIGFyZSBzbGVlcGluZywgYW5kIHRoZXJlIGlzIG5vIHJlc3VtZWQgYWN0aXZpdHksIGFuZCB0aGUgdG9wCisgICAgICAgIC8vIGFjdGl2aXR5IGlzIHBhdXNlZCwgd2VsbCB0aGF0IGlzIHRoZSBzdGF0ZSB3ZSB3YW50LgorICAgICAgICBpZiAoKG1TZXJ2aWNlLm1TbGVlcGluZyB8fCBtU2VydmljZS5tU2h1dHRpbmdEb3duKQorICAgICAgICAgICAgICAgICYmIG1MYXN0UGF1c2VkQWN0aXZpdHkgPT0gbmV4dCAmJiBuZXh0LnN0YXRlID09IEFjdGl2aXR5U3RhdGUuUEFVU0VEKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBleGVjdXRlZCBhbnkgcGVuZGluZyB0cmFuc2l0aW9ucywgc2luY2UgdGhlcmUKKyAgICAgICAgICAgIC8vIHNob3VsZCBiZSBub3RoaW5nIGxlZnQgdG8gZG8gYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLmV4ZWN1dGVBcHBUcmFuc2l0aW9uKCk7CisgICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGUgYWN0aXZpdHkgbWF5IGJlIHdhaXRpbmcgZm9yIHN0b3AsIGJ1dCB0aGF0IGlzIG5vIGxvbmdlcgorICAgICAgICAvLyBhcHByb3ByaWF0ZSBmb3IgaXQuCisgICAgICAgIG1TdG9wcGluZ0FjdGl2aXRpZXMucmVtb3ZlKG5leHQpOworICAgICAgICBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnJlbW92ZShuZXh0KTsKKworICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiUmVzdW1pbmcgIiArIG5leHQpOworCisgICAgICAgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgcGF1c2luZyBhbiBhY3Rpdml0eSwgdGhlbiBkb24ndCBkbyBhbnl0aGluZworICAgICAgICAvLyB1bnRpbCB0aGF0IGlzIGRvbmUuCisgICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJTa2lwIHJlc3VtZTogcGF1c2luZz0iICsgbVBhdXNpbmdBY3Rpdml0eSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBuZWVkIHRvIHN0YXJ0IHBhdXNpbmcgdGhlIGN1cnJlbnQgYWN0aXZpdHkgc28gdGhlIHRvcCBvbmUKKyAgICAgICAgLy8gY2FuIGJlIHJlc3VtZWQuLi4KKyAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlNraXAgcmVzdW1lOiBuZWVkIHRvIHN0YXJ0IHBhdXNpbmciKTsKKyAgICAgICAgICAgIHN0YXJ0UGF1c2luZ0xvY2tlZCh1c2VyTGVhdmluZywgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJldiAhPSBudWxsICYmIHByZXYgIT0gbmV4dCkgeworICAgICAgICAgICAgaWYgKCFwcmV2LndhaXRpbmdWaXNpYmxlICYmIG5leHQgIT0gbnVsbCAmJiAhbmV4dC5ub3dWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgcHJldi53YWl0aW5nVmlzaWJsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5hZGQocHJldik7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiUmVzdW1pbmcgdG9wLCB3YWl0aW5nIHZpc2libGUgdG8gaGlkZTogIiArIHByZXYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBhY3Rpdml0eSBpcyBhbHJlYWR5IHZpc2libGUsIHNvIGhpZGUgdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkncyB3aW5kb3dzIHJpZ2h0IG5vdyBzbyB3ZSBjYW4gc2hvdyB0aGUgbmV3IG9uZSBBU0FQLgorICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgcHJldmlvdXMgaXMgZmluaXNoaW5nLCB3aGljaCBzaG91bGQgbWVhbgorICAgICAgICAgICAgICAgIC8vIGl0IGlzIG9uIHRvcCBvZiB0aGUgb25lIGJlaW5nIHJlc3VtZWQgc28gaGlkaW5nIGl0IHF1aWNrbHkKKyAgICAgICAgICAgICAgICAvLyBpcyBnb29kLiAgT3RoZXJ3aXNlLCB3ZSB3YW50IHRvIGRvIHRoZSBub3JtYWwgcm91dGUgb2YgYWxsb3dpbmcKKyAgICAgICAgICAgICAgICAvLyB0aGUgcmVzdW1lZCBhY3Rpdml0eSB0byBiZSBzaG93biBzbyB3ZSBjYW4gZGVjaWRlIGlmIHRoZQorICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHNob3VsZCBhY3R1YWxseSBiZSBoaWRkZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCisgICAgICAgICAgICAgICAgLy8gbmV3IG9uZSBpcyBmb3VuZCB0byBiZSBmdWxsLXNjcmVlbiBvciBub3QuCisgICAgICAgICAgICAgICAgaWYgKHByZXYuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkocHJldiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiTm90IHdhaXRpbmcgZm9yIHZpc2libGUgdG8gaGlkZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcHJldiArICIsIHdhaXRpbmdWaXNpYmxlPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChwcmV2ICE9IG51bGwgPyBwcmV2LndhaXRpbmdWaXNpYmxlIDogbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIG5vd1Zpc2libGU9IiArIG5leHQubm93VmlzaWJsZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlByZXZpb3VzIGFscmVhZHkgdmlzaWJsZSBidXQgc3RpbGwgd2FpdGluZyB0byBoaWRlOiAiCisgICAgICAgICAgICAgICAgICAgICAgICArIHByZXYgKyAiLCB3YWl0aW5nVmlzaWJsZT0iCisgICAgICAgICAgICAgICAgICAgICAgICArIChwcmV2ICE9IG51bGwgPyBwcmV2LndhaXRpbmdWaXNpYmxlIDogbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgbm93VmlzaWJsZT0iICsgbmV4dC5ub3dWaXNpYmxlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBhcmUgc3RhcnRpbmcgdXAgdGhlIG5leHQgYWN0aXZpdHksIHNvIHRlbGwgdGhlIHdpbmRvdyBtYW5hZ2VyCisgICAgICAgIC8vIHRoYXQgdGhlIHByZXZpb3VzIG9uZSB3aWxsIGJlIGhpZGRlbiBzb29uLiAgVGhpcyB3YXkgaXQgY2FuIGtub3cKKyAgICAgICAgLy8gdG8gaWdub3JlIGl0IHdoZW4gY29tcHV0aW5nIHRoZSBkZXNpcmVkIHNjcmVlbiBvcmllbnRhdGlvbi4KKyAgICAgICAgaWYgKHByZXYgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHByZXYuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGFyZSBjbG9zZSB0cmFuc2l0aW9uOiBwcmV2PSIgKyBwcmV2KTsKKyAgICAgICAgICAgICAgICBpZiAobU5vQW5pbUFjdGl2aXRpZXMuY29udGFpbnMocHJldikpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKHByZXYudGFzayA9PSBuZXh0LnRhc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9DTE9TRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfQ0xPU0UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBXaWxsQmVIaWRkZW4ocHJldik7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShwcmV2LCBmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19UUkFOU0lUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgIlByZXBhcmUgb3BlbiB0cmFuc2l0aW9uOiBwcmV2PSIgKyBwcmV2KTsKKyAgICAgICAgICAgICAgICBpZiAobU5vQW5pbUFjdGl2aXRpZXMuY29udGFpbnMobmV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKHByZXYudGFzayA9PSBuZXh0LnRhc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9PUEVOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19PUEVOKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBXaWxsQmVIaWRkZW4ocHJldik7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShwcmV2LCBmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobUhpc3Rvcnkuc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICJQcmVwYXJlIG9wZW4gdHJhbnNpdGlvbjogbm8gcHJldmlvdXMiKTsKKyAgICAgICAgICAgIGlmIChtTm9BbmltQWN0aXZpdGllcy5jb250YWlucyhuZXh0KSkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX0FDVElWSVRZX09QRU4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG5leHQuYXBwICE9IG51bGwgJiYgbmV4dC5hcHAudGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJSZXN1bWUgcnVubmluZzogIiArIG5leHQpOworCisgICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IGlzIG5vdyBiZWNvbWluZyB2aXNpYmxlLgorICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShuZXh0LCB0cnVlKTsKKworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgbGFzdFJlc3VtZWRBY3Rpdml0eSA9IG1SZXN1bWVkQWN0aXZpdHk7CisgICAgICAgICAgICBBY3Rpdml0eVN0YXRlIGxhc3RTdGF0ZSA9IG5leHQuc3RhdGU7CisKKyAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUNwdVN0YXRzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5leHQuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQ7CisgICAgICAgICAgICBtUmVzdW1lZEFjdGl2aXR5ID0gbmV4dDsKKyAgICAgICAgICAgIG5leHQudGFzay50b3VjaEFjdGl2ZVRpbWUoKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUxydVByb2Nlc3NMb2NrZWQobmV4dC5hcHAsIHRydWUsIHRydWUpOworICAgICAgICAgICAgdXBkYXRlTFJVTGlzdExvY2tlZChuZXh0KTsKKworICAgICAgICAgICAgLy8gSGF2ZSB0aGUgd2luZG93IG1hbmFnZXIgcmUtZXZhbHVhdGUgdGhlIG9yaWVudGF0aW9uIG9mCisgICAgICAgICAgICAvLyB0aGUgc2NyZWVuIGJhc2VkIG9uIHRoZSBuZXcgYWN0aXZpdHkgb3JkZXIuCisgICAgICAgICAgICBib29sZWFuIHVwZGF0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZSkgeworICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGNvbmZpZyA9IG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnVwZGF0ZU9yaWVudGF0aW9uRnJvbUFwcFRva2VucygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tQ29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Lm1heUZyZWV6ZVNjcmVlbkxvY2tlZChuZXh0LmFwcCkgPyBuZXh0IDogbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5mcm96ZW5CZWZvcmVEZXN0cm95ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB1cGRhdGVkID0gbVNlcnZpY2UudXBkYXRlQ29uZmlndXJhdGlvbkxvY2tlZChjb25maWcsIG5leHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdXBkYXRlZCkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBjb25maWd1cmF0aW9uIHVwZGF0ZSB3YXNuJ3QgYWJsZSB0byBrZWVwIHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlIG9mIHRoZSBhY3Rpdml0eSwgYW5kIGluc3RlYWQgc3RhcnRlZCBhIG5ldyBvbmUuCisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGFsbCBkb25lLCBidXQgbGV0J3MganVzdCBtYWtlIHN1cmUgb3VyIGFjdGl2aXR5CisgICAgICAgICAgICAgICAgLy8gaXMgc3RpbGwgYXQgdGhlIHRvcCBhbmQgc2NoZWR1bGUgYW5vdGhlciBydW4gaWYgc29tZXRoaW5nCisgICAgICAgICAgICAgICAgLy8gd2VpcmQgaGFwcGVuZWQuCisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgbmV4dE5leHQgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy5pKFRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICJBY3Rpdml0eSBjb25maWcgY2hhbmdlZCBkdXJpbmcgcmVzdW1lOiAiICsgbmV4dAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBuZXcgbmV4dDogIiArIG5leHROZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dE5leHQgIT0gbmV4dCkgeworICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdmVyIQorICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKFJFU1VNRV9UT1BfQUNUSVZJVFlfTVNHKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0Rm9jdXNlZEFjdGl2aXR5TG9ja2VkKG5leHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChudWxsLCAwKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5leGVjdXRlQXBwVHJhbnNpdGlvbigpOworICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgLy8gRGVsaXZlciBhbGwgcGVuZGluZyByZXN1bHRzLgorICAgICAgICAgICAgICAgIEFycmF5TGlzdCBhID0gbmV4dC5yZXN1bHRzOworICAgICAgICAgICAgICAgIGlmIChhICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IE4gPSBhLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0LmZpbmlzaGluZyAmJiBOID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiRGVsaXZlcmluZyByZXN1bHRzIHRvICIgKyBuZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjogIiArIGEpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHAudGhyZWFkLnNjaGVkdWxlU2VuZFJlc3VsdChuZXh0LCBhKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChuZXh0Lm5ld0ludGVudHMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0LmFwcC50aHJlYWQuc2NoZWR1bGVOZXdJbnRlbnQobmV4dC5uZXdJbnRlbnRzLCBuZXh0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9SRVNVTUVfQUNUSVZJVFksCisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShuZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQudGFzay50YXNrSWQsIG5leHQuc2hvcnRDb21wb25lbnROYW1lKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXh0LmFwcC50aHJlYWQuc2NoZWR1bGVSZXN1bWVBY3Rpdml0eShuZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UuaXNOZXh0VHJhbnNpdGlvbkZvcndhcmQoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcGF1c2VJZlNsZWVwaW5nTG9ja2VkKCk7CisKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gV2hvb3BzLCBuZWVkIHRvIHJlc3RhcnQgdGhpcyBhY3Rpdml0eSEKKyAgICAgICAgICAgICAgICBuZXh0LnN0YXRlID0gbGFzdFN0YXRlOworICAgICAgICAgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBsYXN0UmVzdW1lZEFjdGl2aXR5OworICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJSZXN0YXJ0aW5nIGJlY2F1c2UgcHJvY2VzcyBkaWVkOiAiICsgbmV4dCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXh0Lmhhc0JlZW5MYXVuY2hlZCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0Lmhhc0JlZW5MYXVuY2hlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFNIT1dfQVBQX1NUQVJUSU5HX1BSRVZJRVcgJiYgbU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwU3RhcnRpbmdXaW5kb3coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsIG5leHQucGFja2FnZU5hbWUsIG5leHQudGhlbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQubm9uTG9jYWxpemVkTGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQubGFiZWxSZXMsIG5leHQuaWNvbiwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhcnRTcGVjaWZpY0FjdGl2aXR5TG9ja2VkKG5leHQsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRnJvbSB0aGlzIHBvaW50IG9uLCBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyB0aGVyZSBpcyBubyB3YXkKKyAgICAgICAgICAgIC8vIHRvIHJlY292ZXIgdGhlIGFjdGl2aXR5LgorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBuZXh0LnZpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbXBsZXRlUmVzdW1lTG9ja2VkKG5leHQpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiBhbnkgZXhjZXB0aW9uIGdldHMgdGhyb3duLCB0b3NzIGF3YXkgdGhpcworICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGFuZCB0cnkgdGhlIG5leHQgb25lLgorICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIGR1cmluZyByZXN1bWUgb2YgIiArIG5leHQsIGUpOworICAgICAgICAgICAgICAgIHJlcXVlc3RGaW5pc2hBY3Rpdml0eUxvY2tlZChuZXh0LCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVzdW1lLWV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBEaWRuJ3QgbmVlZCB0byB1c2UgdGhlIGljaWNsZSwgYW5kIGl0IGlzIG5vdyBvdXQgb2YgZGF0ZS4KKyAgICAgICAgICAgIG5leHQuaWNpY2xlID0gbnVsbDsKKyAgICAgICAgICAgIG5leHQuaGF2ZVN0YXRlID0gZmFsc2U7CisgICAgICAgICAgICBuZXh0LnN0b3BwZWQgPSBmYWxzZTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gV2hvb3BzLCBuZWVkIHRvIHJlc3RhcnQgdGhpcyBhY3Rpdml0eSEKKyAgICAgICAgICAgIGlmICghbmV4dC5oYXNCZWVuTGF1bmNoZWQpIHsKKyAgICAgICAgICAgICAgICBuZXh0Lmhhc0JlZW5MYXVuY2hlZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChTSE9XX0FQUF9TVEFSVElOR19QUkVWSUVXKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFN0YXJ0aW5nV2luZG93KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsIG5leHQucGFja2FnZU5hbWUsIG5leHQudGhlbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5ub25Mb2NhbGl6ZWRMYWJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmxhYmVsUmVzLCBuZXh0Lmljb24sIG51bGwsIHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiUmVzdGFydGluZzogIiArIG5leHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhcnRTcGVjaWZpY0FjdGl2aXR5TG9ja2VkKG5leHQsIHRydWUsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHN0YXJ0QWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgciwgYm9vbGVhbiBuZXdUYXNrLAorICAgICAgICAgICAgYm9vbGVhbiBkb1Jlc3VtZSkgeworICAgICAgICBmaW5hbCBpbnQgTkggPSBtSGlzdG9yeS5zaXplKCk7CisKKyAgICAgICAgaW50IGFkZFBvcyA9IC0xOworICAgICAgICAKKyAgICAgICAgaWYgKCFuZXdUYXNrKSB7CisgICAgICAgICAgICAvLyBJZiBzdGFydGluZyBpbiBhbiBleGlzdGluZyB0YXNrLCBmaW5kIHdoZXJlIHRoYXQgaXMuLi4KKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5leHQgPSBudWxsOworICAgICAgICAgICAgYm9vbGVhbiBzdGFydEl0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBOSC0xOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHAgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHAudGFzayA9PSByLnRhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSGVyZSBpdCBpcyEgIE5vdywgaWYgdGhpcyBpcyBub3QgeWV0IHZpc2libGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHVzZXIsIHRoZW4ganVzdCBhZGQgaXQgd2l0aG91dCBzdGFydGluZzsgaXQgd2lsbAorICAgICAgICAgICAgICAgICAgICAvLyBnZXQgc3RhcnRlZCB3aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyBiYWNrIHRvIGl0LgorICAgICAgICAgICAgICAgICAgICBhZGRQb3MgPSBpKzE7CisgICAgICAgICAgICAgICAgICAgIGlmICghc3RhcnRJdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnkuYWRkKGFkZFBvcywgcik7CisgICAgICAgICAgICAgICAgICAgICAgICByLmluSGlzdG9yeSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICByLnRhc2subnVtQWN0aXZpdGllcysrOworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuYWRkQXBwVG9rZW4oYWRkUG9zLCByLCByLnRhc2sudGFza0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmluZm8uc2NyZWVuT3JpZW50YXRpb24sIHIuZnVsbHNjcmVlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocC5mdWxsc2NyZWVuKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0SXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV4dCA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQbGFjZSBhIG5ldyBhY3Rpdml0eSBhdCB0b3Agb2Ygc3RhY2ssIHNvIGl0IGlzIG5leHQgdG8gaW50ZXJhY3QKKyAgICAgICAgLy8gd2l0aCB0aGUgdXNlci4KKyAgICAgICAgaWYgKGFkZFBvcyA8IDApIHsKKyAgICAgICAgICAgIGFkZFBvcyA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBwbGFjaW5nIHRoZSBuZXcgYWN0aXZpdHkgZnJvbnRtb3N0LCB3ZSBkbyBub3Qgd2FudAorICAgICAgICAvLyB0byBkZWxpdmVyIHRoZSBvblVzZXJMZWF2aW5nIGNhbGxiYWNrIHRvIHRoZSBhY3R1YWwgZnJvbnRtb3N0CisgICAgICAgIC8vIGFjdGl2aXR5CisgICAgICAgIGlmIChhZGRQb3MgPCBOSCkgeworICAgICAgICAgICAgbVVzZXJMZWF2aW5nID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHLCAic3RhcnRBY3Rpdml0eSgpIGJlaGluZCBmcm9udCwgbVVzZXJMZWF2aW5nPWZhbHNlIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFNsb3QgdGhlIGFjdGl2aXR5IGludG8gdGhlIGhpc3Rvcnkgc3RhY2sgYW5kIHByb2NlZWQKKyAgICAgICAgbUhpc3RvcnkuYWRkKGFkZFBvcywgcik7CisgICAgICAgIHIuaW5IaXN0b3J5ID0gdHJ1ZTsKKyAgICAgICAgci5mcm9udE9mVGFzayA9IG5ld1Rhc2s7CisgICAgICAgIHIudGFzay5udW1BY3Rpdml0aWVzKys7CisgICAgICAgIGlmIChOSCA+IDApIHsKKyAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2hvdyB0aGUgc3RhcnRpbmcgcHJldmlldyB3aW5kb3cgaWYgd2UgYXJlCisgICAgICAgICAgICAvLyBzd2l0Y2hpbmcgdG8gYSBuZXcgdGFzaywgb3IgdGhlIG5leHQgYWN0aXZpdHkncyBwcm9jZXNzIGlzCisgICAgICAgICAgICAvLyBub3QgY3VycmVudGx5IHJ1bm5pbmcuCisgICAgICAgICAgICBib29sZWFuIHNob3dTdGFydGluZ0ljb24gPSBuZXdUYXNrOworICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwcm9jID0gci5hcHA7CisgICAgICAgICAgICBpZiAocHJvYyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcHJvYyA9IG1TZXJ2aWNlLm1Qcm9jZXNzTmFtZXMuZ2V0KHIucHJvY2Vzc05hbWUsIHIuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwcm9jID09IG51bGwgfHwgcHJvYy50aHJlYWQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNob3dTdGFydGluZ0ljb24gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICJQcmVwYXJlIG9wZW4gdHJhbnNpdGlvbjogc3RhcnRpbmcgIiArIHIpOworICAgICAgICAgICAgaWYgKChyLmludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX05PX0FOSU1BVElPTikgIT0gMCkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKKyAgICAgICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5hZGQocik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKChyLmludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1dIRU5fVEFTS19SRVNFVCkgIT0gMCkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfT1BFTik7CisgICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMucmVtb3ZlKHIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihuZXdUYXNrCisgICAgICAgICAgICAgICAgICAgICAgICA/IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9UQVNLX09QRU4KKyAgICAgICAgICAgICAgICAgICAgICAgIDogV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX0FDVElWSVRZX09QRU4pOworICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLnJlbW92ZShyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLmFkZEFwcFRva2VuKAorICAgICAgICAgICAgICAgICAgICBhZGRQb3MsIHIsIHIudGFzay50YXNrSWQsIHIuaW5mby5zY3JlZW5PcmllbnRhdGlvbiwgci5mdWxsc2NyZWVuKTsKKyAgICAgICAgICAgIGJvb2xlYW4gZG9TaG93ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChuZXdUYXNrKSB7CisgICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggdGhpcyBhY3Rpdml0eSBpcyBzdGFydGluZyBmcmVzaCwgd2Ugc3RpbGwgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHJlc2V0IGl0IHRvIG1ha2Ugc3VyZSB3ZSBhcHBseSBhZmZpbml0aWVzIHRvIG1vdmUgYW55CisgICAgICAgICAgICAgICAgLy8gZXhpc3RpbmcgYWN0aXZpdGllcyBmcm9tIG90aGVyIHRhc2tzIGluIHRvIGl0LgorICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgaGFzIHJlcXVlc3RlZCB0aGF0IHRoZSB0YXJnZXQgdGFzayBiZQorICAgICAgICAgICAgICAgIC8vIHJlc2V0LCB0aGVuIGRvIHNvLgorICAgICAgICAgICAgICAgIGlmICgoci5pbnRlbnQuZ2V0RmxhZ3MoKQorICAgICAgICAgICAgICAgICAgICAgICAgJkludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc2V0VGFza0lmTmVlZGVkTG9ja2VkKHIsIHIpOworICAgICAgICAgICAgICAgICAgICBkb1Nob3cgPSB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG51bGwpID09IHI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFNIT1dfQVBQX1NUQVJUSU5HX1BSRVZJRVcgJiYgZG9TaG93KSB7CisgICAgICAgICAgICAgICAgLy8gRmlndXJlIG91dCBpZiB3ZSBhcmUgdHJhbnNpdGlvbmluZyBmcm9tIGFub3RoZXIgYWN0aXZpdHkgdGhhdCBpcworICAgICAgICAgICAgICAgIC8vICJoYXMgdGhlIHNhbWUgc3RhcnRpbmcgaWNvbiIgYXMgdGhlIG5leHQgb25lLiAgVGhpcyBhbGxvd3MgdGhlCisgICAgICAgICAgICAgICAgLy8gd2luZG93IG1hbmFnZXIgdG8ga2VlcCB0aGUgcHJldmlvdXMgd2luZG93IGl0IGhhZCBwcmV2aW91c2x5CisgICAgICAgICAgICAgICAgLy8gY3JlYXRlZCwgaWYgaXQgc3RpbGwgaGFkIG9uZS4KKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwcmV2ID0gbVJlc3VtZWRBY3Rpdml0eTsKKyAgICAgICAgICAgICAgICBpZiAocHJldiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmV1c2UgdGhlIHByZXZpb3VzIHN0YXJ0aW5nIHByZXZpZXcgaWY6CisgICAgICAgICAgICAgICAgICAgIC8vICgxKSBUaGUgY3VycmVudCBhY3Rpdml0eSBpcyBpbiBhIGRpZmZlcmVudCB0YXNrLgorICAgICAgICAgICAgICAgICAgICBpZiAocHJldi50YXNrICE9IHIudGFzaykgcHJldiA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIC8vICgyKSBUaGUgY3VycmVudCBhY3Rpdml0eSBpcyBhbHJlYWR5IGRpc3BsYXllZC4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocHJldi5ub3dWaXNpYmxlKSBwcmV2ID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwU3RhcnRpbmdXaW5kb3coCisgICAgICAgICAgICAgICAgICAgICAgICByLCByLnBhY2thZ2VOYW1lLCByLnRoZW1lLCByLm5vbkxvY2FsaXplZExhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgci5sYWJlbFJlcywgci5pY29uLCBwcmV2LCBzaG93U3RhcnRpbmdJY29uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IGFjdGl2aXR5LCBkb24ndCBkbyBhbnkgZmFuY3kgYW5pbWF0aW9ucywKKyAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgaXMgbm90aGluZyBmb3IgaXQgdG8gYW5pbWF0ZSBvbiB0b3Agb2YuCisgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5hZGRBcHBUb2tlbihhZGRQb3MsIHIsIHIudGFzay50YXNrSWQsCisgICAgICAgICAgICAgICAgICAgIHIuaW5mby5zY3JlZW5PcmllbnRhdGlvbiwgci5mdWxsc2NyZWVuKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7CisgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZG9SZXN1bWUpIHsKKyAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhIHJlc2V0IG9mIHRoZSBnaXZlbiB0YXNrLCBpZiBuZWVkZWQgYXMgcGFydCBvZiBsYXVuY2hpbmcgaXQuCisgICAgICogUmV0dXJucyB0aGUgbmV3IEhpc3RvcnlSZWNvcmQgYXQgdGhlIHRvcCBvZiB0aGUgdGFzay4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHJlc2V0VGFza0lmTmVlZGVkTG9ja2VkKEFjdGl2aXR5UmVjb3JkIHRhc2tUb3AsCisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBuZXdBY3Rpdml0eSkgeworICAgICAgICBib29sZWFuIGZvcmNlUmVzZXQgPSAobmV3QWN0aXZpdHkuaW5mby5mbGFncworICAgICAgICAgICAgICAgICZBY3Rpdml0eUluZm8uRkxBR19DTEVBUl9UQVNLX09OX0xBVU5DSCkgIT0gMDsKKyAgICAgICAgaWYgKHRhc2tUb3AudGFzay5nZXRJbmFjdGl2ZUR1cmF0aW9uKCkgPiBBQ1RJVklUWV9JTkFDVElWRV9SRVNFVF9USU1FKSB7CisgICAgICAgICAgICBpZiAoKG5ld0FjdGl2aXR5LmluZm8uZmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgJkFjdGl2aXR5SW5mby5GTEFHX0FMV0FZU19SRVRBSU5fVEFTS19TVEFURSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGZvcmNlUmVzZXQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmaW5hbCBUYXNrUmVjb3JkIHRhc2sgPSB0YXNrVG9wLnRhc2s7CisgICAgICAgIAorICAgICAgICAvLyBXZSBhcmUgZ29pbmcgdG8gbW92ZSB0aHJvdWdoIHRoZSBoaXN0b3J5IGxpc3Qgc28gdGhhdCB3ZSBjYW4gbG9vaworICAgICAgICAvLyBhdCBlYWNoIGFjdGl2aXR5ICd0YXJnZXQnIHdpdGggJ2JlbG93JyBlaXRoZXIgdGhlIGludGVyZXN0aW5nCisgICAgICAgIC8vIGFjdGl2aXR5IGltbWVkaWF0ZWx5IGJlbG93IGl0IGluIHRoZSBzdGFjayBvciBudWxsLgorICAgICAgICBBY3Rpdml0eVJlY29yZCB0YXJnZXQgPSBudWxsOworICAgICAgICBpbnQgdGFyZ2V0SSA9IDA7CisgICAgICAgIGludCB0YXNrVG9wSSA9IC0xOworICAgICAgICBpbnQgcmVwbHlDaGFpbkVuZCA9IC0xOworICAgICAgICBpbnQgbGFzdFJlcGFyZW50UG9zID0gLTE7CisgICAgICAgIGZvciAoaW50IGk9bUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PS0xOyBpLS0pIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIGJlbG93ID0gaSA+PSAwID8gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKSA6IG51bGw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChiZWxvdyAhPSBudWxsICYmIGJlbG93LmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gYmVsb3c7CisgICAgICAgICAgICAgICAgdGFyZ2V0SSA9IGk7CisgICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSBpbiB0aGUgbWlkZGxlIG9mIGEgcmVwbHkgY2hhaW4gYmVmb3JlIHRoaXMKKyAgICAgICAgICAgICAgICAvLyB0YXNrLCBpdCBkb2Vzbid0IGFwcGVhciBsaWtlIHRoZSByb290IG9mIHRoZSBjaGFpbiB3YW50cworICAgICAgICAgICAgICAgIC8vIGFueXRoaW5nIGludGVyZXN0aW5nLCBzbyBkcm9wIGl0LgorICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBmaW5hbCBpbnQgZmxhZ3MgPSB0YXJnZXQuaW5mby5mbGFnczsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBmaW5pc2hPblRhc2tMYXVuY2ggPQorICAgICAgICAgICAgICAgIChmbGFncyZBY3Rpdml0eUluZm8uRkxBR19GSU5JU0hfT05fVEFTS19MQVVOQ0gpICE9IDA7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGFsbG93VGFza1JlcGFyZW50aW5nID0KKyAgICAgICAgICAgICAgICAoZmxhZ3MmQWN0aXZpdHlJbmZvLkZMQUdfQUxMT1dfVEFTS19SRVBBUkVOVElORykgIT0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRhcmdldC50YXNrID09IHRhc2spIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIG9mIHRoZSB0YXNrIGJlaW5nIHJlc2V0Li4uICB3ZSdsbCBlaXRoZXIKKyAgICAgICAgICAgICAgICAvLyBmaW5pc2ggdGhpcyBhY3Rpdml0eSwgcHVzaCBpdCBvdXQgZm9yIGFub3RoZXIgdGFzaywKKyAgICAgICAgICAgICAgICAvLyBvciBsZWF2ZSBpdCBhcy1pcy4gIFdlIG9ubHkgZG8gdGhpcworICAgICAgICAgICAgICAgIC8vIGZvciBhY3Rpdml0aWVzIHRoYXQgYXJlIG5vdCB0aGUgcm9vdCBvZiB0aGUgdGFzayAoc2luY2UKKyAgICAgICAgICAgICAgICAvLyBpZiB3ZSBmaW5pc2ggdGhlIHJvb3QsIHdlIG1heSBubyBsb25nZXIgaGF2ZSB0aGUgdGFzayEpLgorICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wSSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFza1RvcEkgPSB0YXJnZXRJOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYmVsb3cgIT0gbnVsbCAmJiBiZWxvdy50YXNrID09IHRhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBjbGVhcldoZW5UYXNrUmVzZXQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXQuaW50ZW50LmdldEZsYWdzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZJbnRlbnQuRkxBR19BQ1RJVklUWV9DTEVBUl9XSEVOX1RBU0tfUkVTRVQpICE9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICghZmluaXNoT25UYXNrTGF1bmNoICYmICFjbGVhcldoZW5UYXNrUmVzZXQgJiYgdGFyZ2V0LnJlc3VsdFRvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgc2VuZGluZyBhIHJlcGx5IHRvIGEgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5LCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIGl0IG5vdyB1bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgcmVhY2ggdGhlIHN0YXJ0IG9mIHRoZSByZXBseSBjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhYWCBub3RlIHRoYXQgd2UgYXJlIGFzc3VtaW5nIHRoZSByZXN1bHQgaXMgYWx3YXlzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGUgcHJldmlvdXMgYWN0aXZpdHksIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIGJ1dCB3ZSByZWFsbHkgc2hvdWxkbid0IGNvdW50IG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZpbmlzaE9uVGFza0xhdW5jaCAmJiAhY2xlYXJXaGVuVGFza1Jlc2V0ICYmIGFsbG93VGFza1JlcGFyZW50aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0LnRhc2tBZmZpbml0eSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXRhcmdldC50YXNrQWZmaW5pdHkuZXF1YWxzKHRhc2suYWZmaW5pdHkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGhhcyBhbiBhZmZpbml0eSBmb3IgYW5vdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFzaywgdGhlbiB3ZSBuZWVkIHRvIG1vdmUgaXQgb3V0IG9mIGhlcmUuICBXZSB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGl0IGFzIGZhciBvdXQgb2YgdGhlIHdheSBhcyBwb3NzaWJsZSwgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3R0b20gb2YgdGhlIGFjdGl2aXR5IHN0YWNrLiAgVGhpcyBhbHNvIGtlZXBzIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZWN0bHkgb3JkZXJlZCB3aXRoIGFueSBhY3Rpdml0aWVzIHdlIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LnRhc2tBZmZpbml0eSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldC50YXNrQWZmaW5pdHkuZXF1YWxzKHAudGFzay5hZmZpbml0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYWN0aXZpdHkgY3VycmVudGx5IGF0IHRoZSBib3R0b20gaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhbWUgdGFzayBhZmZpbml0eSBhcyB0aGUgb25lIHdlIGFyZSBtb3ZpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBtZXJnZSBpdCBpbnRvIHRoZSBzYW1lIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnRhc2sgPSBwLnRhc2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiU3RhcnQgcHVzaGluZyBhY3Rpdml0eSAiICsgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgb3V0IHRvIGJvdHRvbSB0YXNrICIgKyBwLnRhc2spOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tQ3VyVGFzaysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtU2VydmljZS5tQ3VyVGFzayA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1DdXJUYXNrID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnRhc2sgPSBuZXcgVGFza1JlY29yZChtU2VydmljZS5tQ3VyVGFzaywgdGFyZ2V0LmluZm8sIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LmluZm8uZmxhZ3MmQWN0aXZpdHlJbmZvLkZMQUdfQ0xFQVJfVEFTS19PTl9MQVVOQ0gpICE9IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50YXNrLmFmZmluaXR5SW50ZW50ID0gdGFyZ2V0LmludGVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJTdGFydCBwdXNoaW5nIGFjdGl2aXR5ICIgKyB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBvdXQgdG8gbmV3IHRhc2sgIiArIHRhcmdldC50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcEdyb3VwSWQodGFyZ2V0LCB0YXNrLnRhc2tJZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBkc3RQb3MgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgc3JjUG9zPXRhcmdldEk7IHNyY1Bvczw9cmVwbHlDaGFpbkVuZDsgc3JjUG9zKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChzcmNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiUHVzaGluZyBuZXh0IGFjdGl2aXR5ICIgKyBwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgb3V0IHRvIHRhcmdldCdzIHRhc2sgIiArIHRhcmdldC50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLm51bUFjdGl2aXRpZXMtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnRhc2sgPSB0YXJnZXQudGFzazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQudGFzay5udW1BY3Rpdml0aWVzKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnkucmVtb3ZlKHNyY1Bvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnkuYWRkKGRzdFBvcywgcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIubW92ZUFwcFRva2VuKGRzdFBvcywgcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwR3JvdXBJZChwLCBwLnRhc2sudGFza0lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RQb3MrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3AgPT0gcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AgPSBiZWxvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wSSA9PSByZXBseUNoYWluRW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcEkgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UuYWRkUmVjZW50VGFza0xvY2tlZCh0YXJnZXQudGFzayk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yY2VSZXNldCB8fCBmaW5pc2hPblRhc2tMYXVuY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjbGVhcldoZW5UYXNrUmVzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBzaG91bGQganVzdCBiZSByZW1vdmVkIC0tIGVpdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBpdCBhc2tzIGZvciBpdCwgb3IgdGhlIHRhc2sgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcmVkIC0tIHRoZW4gZmluaXNoIGl0IGFuZCBhbnl0aGluZyB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJ0IG9mIGl0cyByZXBseSBjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGVhcldoZW5UYXNrUmVzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHdhbnQgdG8gZmluaXNoIHRoaXMgYWN0aXZpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZXZlcnl0aGluZyBhYm92ZSBpdCwgc28gYmUgc25lYWt5IGFuZCBwcmV0ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGlrZSB0aGVzZSBhcmUgYWxsIGluIHRoZSByZXBseSBjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0SSsxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChyZXBseUNoYWluRW5kIDwgbUhpc3Rvcnkuc2l6ZSgpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQpKS50YXNrID09IHRhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kLS07CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHNyY1Bvcz10YXJnZXRJOyBzcmNQb3M8PXJlcGx5Q2hhaW5FbmQ7IHNyY1BvcysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoc3JjUG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hBY3Rpdml0eUxvY2tlZChwLCBzcmNQb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJyZXNldCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUG9zLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3AgPT0gcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AgPSBiZWxvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wSSA9PSByZXBseUNoYWluRW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcEkgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYWluLCB3ZWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgdGhhdCBzdGFydGVkIGl0IGFsbCBkb2Vzbid0IHdhbnQgYW55dGhpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwsIHNvIGxlYXZlIGl0IGFsbCBhcy1pcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJlYWNoZWQgdGhlIGJvdHRvbSBvZiB0aGUgdGFzayAtLSBhbnkgcmVwbHkgY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGxlZnQgYXMtaXMuCisgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgaWYgKHRhcmdldC5yZXN1bHRUbyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBzZW5kaW5nIGEgcmVwbHkgdG8gYSBwcmV2aW91cworICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5LCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIGl0IG5vdyB1bnRpbAorICAgICAgICAgICAgICAgIC8vIHdlIHJlYWNoIHRoZSBzdGFydCBvZiB0aGUgcmVwbHkgY2hhaW4uCisgICAgICAgICAgICAgICAgLy8gWFhYIG5vdGUgdGhhdCB3ZSBhcmUgYXNzdW1pbmcgdGhlIHJlc3VsdCBpcyBhbHdheXMKKyAgICAgICAgICAgICAgICAvLyB0byB0aGUgcHJldmlvdXMgYWN0aXZpdHksIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMKKyAgICAgICAgICAgICAgICAvLyB0aGUgY2FzZSBidXQgd2UgcmVhbGx5IHNob3VsZG4ndCBjb3VudCBvbi4KKyAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9IGVsc2UgaWYgKHRhc2tUb3BJID49IDAgJiYgYWxsb3dUYXNrUmVwYXJlbnRpbmcKKyAgICAgICAgICAgICAgICAgICAgJiYgdGFzay5hZmZpbml0eSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICYmIHRhc2suYWZmaW5pdHkuZXF1YWxzKHRhcmdldC50YXNrQWZmaW5pdHkpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGluc2lkZSBvZiBhbm90aGVyIHRhc2suLi4gIGlmIHRoaXMgYWN0aXZpdHkgaGFzCisgICAgICAgICAgICAgICAgLy8gYW4gYWZmaW5pdHkgZm9yIG91ciB0YXNrLCB0aGVuIGVpdGhlciByZW1vdmUgaXQgaWYgd2UgYXJlCisgICAgICAgICAgICAgICAgLy8gY2xlYXJpbmcgb3IgbW92ZSBpdCBvdmVyIHRvIG91ciB0YXNrLiAgTm90ZSB0aGF0CisgICAgICAgICAgICAgICAgLy8gd2UgY3VycmVudGx5IHB1bnQgb24gdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIHJlc2V0dGluZyBhCisgICAgICAgICAgICAgICAgLy8gdGFzayB0aGF0IGlzIG5vdCBhdCB0aGUgdG9wIGJ1dCB3aG8gaGFzIGFjdGl2aXRpZXMgYWJvdmUKKyAgICAgICAgICAgICAgICAvLyB3aXRoIGFuIGFmZmluaXR5IHRvIGl0Li4uICB0aGlzIGlzIHJlYWxseSBub3QgYSBub3JtYWwKKyAgICAgICAgICAgICAgICAvLyBjYXNlLCBhbmQgd2Ugd2lsbCBuZWVkIHRvIGxhdGVyIHB1bGwgdGhhdCB0YXNrIHRvIHRoZSBmcm9udAorICAgICAgICAgICAgICAgIC8vIGFuZCB1c3VhbGx5IGF0IHRoYXQgcG9pbnQgd2Ugd2lsbCBkbyB0aGUgcmVzZXQgYW5kIHBpY2sKKyAgICAgICAgICAgICAgICAvLyB1cCB0aG9zZSByZW1haW5pbmcgYWN0aXZpdGllcy4gIChUaGlzIG9ubHkgaGFwcGVucyBpZgorICAgICAgICAgICAgICAgIC8vIHNvbWVvbmUgc3RhcnRzIGFuIGFjdGl2aXR5IGluIGEgbmV3IHRhc2sgZnJvbSBhbiBhY3Rpdml0eQorICAgICAgICAgICAgICAgIC8vIGluIGEgdGFzayB0aGF0IGlzIG5vdCBjdXJyZW50bHkgb24gdG9wLikKKyAgICAgICAgICAgICAgICBpZiAoZm9yY2VSZXNldCB8fCBmaW5pc2hPblRhc2tMYXVuY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgc3JjUG9zPXRhcmdldEk7IHNyY1Bvczw9cmVwbHlDaGFpbkVuZDsgc3JjUG9zKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KHNyY1Bvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hBY3Rpdml0eUxvY2tlZChwLCBzcmNQb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgInJlc2V0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wSS0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXBhcmVudFBvcy0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gLTE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBzcmNQb3M9cmVwbHlDaGFpbkVuZDsgc3JjUG9zPj10YXJnZXRJOyBzcmNQb3MtLSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoc3JjUG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RSZXBhcmVudFBvcyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVwYXJlbnRQb3MgPSB0YXNrVG9wSTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wID0gcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFJlcGFyZW50UG9zLS07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUoc3JjUG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAudGFzay5udW1BY3Rpdml0aWVzLS07CisgICAgICAgICAgICAgICAgICAgICAgICBwLnRhc2sgPSB0YXNrOworICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnkuYWRkKGxhc3RSZXBhcmVudFBvcywgcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJQdWxsaW5nIGFjdGl2aXR5ICIgKyBwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBpbiB0byByZXNldHRpbmcgdGFzayAiICsgdGFzayk7CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLm51bUFjdGl2aXRpZXMrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLm1vdmVBcHBUb2tlbihsYXN0UmVwYXJlbnRQb3MsIHApOworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwR3JvdXBJZChwLCBwLnRhc2sudGFza0lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gTm93IHdlJ3ZlIG1vdmVkIGl0IGluIHRvIHBsYWNlLi4uICBidXQgd2hhdCBpZiB0aGlzIGlzCisgICAgICAgICAgICAgICAgICAgIC8vIGEgc2luZ2xlVG9wIGFjdGl2aXR5IGFuZCB3ZSBoYXZlIHB1dCBpdCBvbiB0b3Agb2YgYW5vdGhlcgorICAgICAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZSBvZiB0aGUgc2FtZSBhY3Rpdml0eT8gIFRoZW4gd2UgZHJvcCB0aGUgaW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgc28gaXQgcmVtYWlucyBzaW5nbGVUb3AuCisgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuaW5mby5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX1RPUCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj1sYXN0UmVwYXJlbnRQb3MtMTsgaj49MDsgai0tKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZXF1YWxzKHRhcmdldC5pbnRlbnQuZ2V0Q29tcG9uZW50KCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hBY3Rpdml0eUxvY2tlZChwLCBqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgInJlcGxhY2UiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcEktLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXBhcmVudFBvcy0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0YXJnZXQgPSBiZWxvdzsKKyAgICAgICAgICAgIHRhcmdldEkgPSBpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gdGFza1RvcDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUGVyZm9ybSBjbGVhciBvcGVyYXRpb24gYXMgcmVxdWVzdGVkIGJ5CisgICAgICoge0BsaW5rIEludGVudCNGTEFHX0FDVElWSVRZX0NMRUFSX1RPUH06IHNlYXJjaCBmcm9tIHRoZSB0b3Agb2YgdGhlCisgICAgICogc3RhY2sgdG8gdGhlIGdpdmVuIHRhc2ssIHRoZW4gbG9vayBmb3IKKyAgICAgKiBhbiBpbnN0YW5jZSBvZiB0aGF0IGFjdGl2aXR5IGluIHRoZSBzdGFjayBhbmQsIGlmIGZvdW5kLCBmaW5pc2ggYWxsCisgICAgICogYWN0aXZpdGllcyBvbiB0b3Agb2YgaXQgYW5kIHJldHVybiB0aGUgaW5zdGFuY2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmV3UiBEZXNjcmlwdGlvbiBvZiB0aGUgbmV3IGFjdGl2aXR5IGJlaW5nIHN0YXJ0ZWQuCisgICAgICogQHJldHVybiBSZXR1cm5zIHRoZSBvbGQgYWN0aXZpdHkgdGhhdCBzaG91bGQgYmUgY29udGludWUgdG8gYmUgdXNlZCwKKyAgICAgKiBvciBudWxsIGlmIG5vbmUgd2FzIGZvdW5kLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHlSZWNvcmQgcGVyZm9ybUNsZWFyVGFza0xvY2tlZChpbnQgdGFza0lkLAorICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgbmV3UiwgaW50IGxhdW5jaEZsYWdzLCBib29sZWFuIGRvQ2xlYXIpIHsKKyAgICAgICAgaW50IGkgPSBtSGlzdG9yeS5zaXplKCk7CisgICAgICAgIAorICAgICAgICAvLyBGaXJzdCBmaW5kIHRoZSByZXF1ZXN0ZWQgdGFzay4KKyAgICAgICAgd2hpbGUgKGkgPiAwKSB7CisgICAgICAgICAgICBpLS07CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGlmIChyLnRhc2sudGFza0lkID09IHRhc2tJZCkgeworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTm93IGNsZWFyIGl0LgorICAgICAgICB3aGlsZSAoaSA+IDApIHsKKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoci50YXNrLnRhc2tJZCAhPSB0YXNrSWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyLnJlYWxBY3Rpdml0eS5lcXVhbHMobmV3Ui5yZWFsQWN0aXZpdHkpKSB7CisgICAgICAgICAgICAgICAgLy8gSGVyZSBpdCBpcyEgIE5vdyBmaW5pc2ggZXZlcnl0aGluZyBpbiBmcm9udC4uLgorICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHJldCA9IHI7CisgICAgICAgICAgICAgICAgaWYgKGRvQ2xlYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCAobUhpc3Rvcnkuc2l6ZSgpLTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgImNsZWFyIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gRmluYWxseSwgaWYgdGhpcyBpcyBhIG5vcm1hbCBsYXVuY2ggbW9kZSAodGhhdCBpcywgbm90CisgICAgICAgICAgICAgICAgLy8gZXhwZWN0aW5nIG9uTmV3SW50ZW50KCkpLCB0aGVuIHdlIHdpbGwgZmluaXNoIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2Ugb2YgdGhlIGFjdGl2aXR5IHNvIGEgbmV3IGZyZXNoIG9uZSBjYW4gYmUgc3RhcnRlZC4KKyAgICAgICAgICAgICAgICBpZiAocmV0LmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9NVUxUSVBMRQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1NJTkdMRV9UT1ApID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXQuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQocmV0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQocmV0LCBpbmRleCwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgImNsZWFyIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmluZCB0aGUgYWN0aXZpdHkgaW4gdGhlIGhpc3Rvcnkgc3RhY2sgd2l0aGluIHRoZSBnaXZlbiB0YXNrLiAgUmV0dXJucworICAgICAqIHRoZSBpbmRleCB3aXRoaW4gdGhlIGhpc3RvcnkgYXQgd2hpY2ggaXQncyBmb3VuZCwgb3IgPCAwIGlmIG5vdCBmb3VuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIGludCBmaW5kQWN0aXZpdHlJbkhpc3RvcnlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgciwgaW50IHRhc2spIHsKKyAgICAgICAgaW50IGkgPSBtSGlzdG9yeS5zaXplKCk7CisgICAgICAgIHdoaWxlIChpID4gMCkgeworICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgY2FuZGlkYXRlID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUudGFzay50YXNrSWQgIT0gdGFzaykgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5yZWFsQWN0aXZpdHkuZXF1YWxzKHIucmVhbEFjdGl2aXR5KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlb3JkZXIgdGhlIGhpc3Rvcnkgc3RhY2sgc28gdGhhdCB0aGUgYWN0aXZpdHkgYXQgdGhlIGdpdmVuIGluZGV4IGlzCisgICAgICogYnJvdWdodCB0byB0aGUgZnJvbnQuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eVJlY29yZCBtb3ZlQWN0aXZpdHlUb0Zyb250TG9ja2VkKGludCB3aGVyZSkgeworICAgICAgICBBY3Rpdml0eVJlY29yZCBuZXdUb3AgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkucmVtb3ZlKHdoZXJlKTsKKyAgICAgICAgaW50IHRvcCA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgb2xkVG9wID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldCh0b3AtMSk7CisgICAgICAgIG1IaXN0b3J5LmFkZCh0b3AsIG5ld1RvcCk7CisgICAgICAgIG9sZFRvcC5mcm9udE9mVGFzayA9IGZhbHNlOworICAgICAgICBuZXdUb3AuZnJvbnRPZlRhc2sgPSB0cnVlOworICAgICAgICByZXR1cm4gbmV3VG9wOworICAgIH0KKworICAgIGZpbmFsIGludCBzdGFydEFjdGl2aXR5TG9ja2VkKElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsCisgICAgICAgICAgICBJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlLAorICAgICAgICAgICAgVXJpW10gZ3JhbnRlZFVyaVBlcm1pc3Npb25zLAorICAgICAgICAgICAgaW50IGdyYW50ZWRNb2RlLCBBY3Rpdml0eUluZm8gYUluZm8sIElCaW5kZXIgcmVzdWx0VG8sCisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0V2hvLCBpbnQgcmVxdWVzdENvZGUsCisgICAgICAgICAgICBpbnQgY2FsbGluZ1BpZCwgaW50IGNhbGxpbmdVaWQsIGJvb2xlYW4gb25seUlmTmVlZGVkLAorICAgICAgICAgICAgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQpIHsKKyAgICAgICAgU2xvZy5pKFRBRywgIlN0YXJ0aW5nIGFjdGl2aXR5OiAiICsgaW50ZW50KTsKKworICAgICAgICBBY3Rpdml0eVJlY29yZCBzb3VyY2VSZWNvcmQgPSBudWxsOworICAgICAgICBBY3Rpdml0eVJlY29yZCByZXN1bHRSZWNvcmQgPSBudWxsOworICAgICAgICBpZiAocmVzdWx0VG8gIT0gbnVsbCkgeworICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHJlc3VsdFRvKTsKKyAgICAgICAgICAgIGlmIChERUJVR19SRVNVTFRTKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgVEFHLCAiU2VuZGluZyByZXN1bHQgdG8gIiArIHJlc3VsdFRvICsgIiAoaW5kZXggIiArIGluZGV4ICsgIikiKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RDb2RlID49IDAgJiYgIXNvdXJjZVJlY29yZC5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkID0gc291cmNlUmVjb3JkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGludCBsYXVuY2hGbGFncyA9IGludGVudC5nZXRGbGFncygpOworCisgICAgICAgIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfRk9SV0FSRF9SRVNVTFQpICE9IDAKKyAgICAgICAgICAgICAgICAmJiBzb3VyY2VSZWNvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gVHJhbnNmZXIgdGhlIHJlc3VsdCB0YXJnZXQgZnJvbSB0aGUgc291cmNlIGFjdGl2aXR5IHRvIHRoZSBuZXcKKyAgICAgICAgICAgIC8vIG9uZSBiZWluZyBzdGFydGVkLCBpbmNsdWRpbmcgYW55IGZhaWx1cmVzLgorICAgICAgICAgICAgaWYgKHJlcXVlc3RDb2RlID49IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfRk9SV0FSRF9BTkRfUkVRVUVTVF9DT05GTElDVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdFJlY29yZCA9IHNvdXJjZVJlY29yZC5yZXN1bHRUbzsKKyAgICAgICAgICAgIHJlc3VsdFdobyA9IHNvdXJjZVJlY29yZC5yZXN1bHRXaG87CisgICAgICAgICAgICByZXF1ZXN0Q29kZSA9IHNvdXJjZVJlY29yZC5yZXF1ZXN0Q29kZTsKKyAgICAgICAgICAgIHNvdXJjZVJlY29yZC5yZXN1bHRUbyA9IG51bGw7CisgICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQucmVtb3ZlUmVzdWx0c0xvY2tlZCgKKyAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGludCBlcnIgPSBTVEFSVF9TVUNDRVNTOworCisgICAgICAgIGlmIChpbnRlbnQuZ2V0Q29tcG9uZW50KCkgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmluZCBhIGNsYXNzIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4gSW50ZW50LgorICAgICAgICAgICAgLy8gVGhhdCdzIHRoZSBlbmQgb2YgdGhhdCEKKyAgICAgICAgICAgIGVyciA9IFNUQVJUX0lOVEVOVF9OT1RfUkVTT0xWRUQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXJyID09IFNUQVJUX1NVQ0NFU1MgJiYgYUluZm8gPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWMgY2xhc3Mgc3BlY2lmaWVkIGluIHRoZSBJbnRlbnQuCisgICAgICAgICAgICAvLyBBbHNvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgICAgICAgICBlcnIgPSBTVEFSVF9DTEFTU19OT1RfRk9VTkQ7CisgICAgICAgIH0KKworICAgICAgICBQcm9jZXNzUmVjb3JkIGNhbGxlckFwcCA9IG51bGw7CisgICAgICAgIGlmIChlcnIgPT0gU1RBUlRfU1VDQ0VTUyAmJiBjYWxsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgY2FsbGVyQXBwID0gbVNlcnZpY2UuZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKGNhbGxlcik7CisgICAgICAgICAgICBpZiAoY2FsbGVyQXBwICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gY2FsbGVyQXBwLnBpZDsKKyAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gY2FsbGVyQXBwLmluZm8udWlkOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5hYmxlIHRvIGZpbmQgYXBwIGZvciBjYWxsZXIgIiArIGNhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICsgIiAocGlkPSIgKyBjYWxsaW5nUGlkICsgIikgd2hlbiBzdGFydGluZzogIgorICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGVyciA9IFNUQVJUX1BFUk1JU1NJT05fREVOSUVEOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGVyciAhPSBTVEFSVF9TVUNDRVNTKSB7CisgICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgcGVybSA9IG1TZXJ2aWNlLmNoZWNrQ29tcG9uZW50UGVybWlzc2lvbihhSW5mby5wZXJtaXNzaW9uLCBjYWxsaW5nUGlkLAorICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQsIGFJbmZvLmV4cG9ydGVkID8gLTEgOiBhSW5mby5hcHBsaWNhdGlvbkluZm8udWlkKTsKKyAgICAgICAgaWYgKHBlcm0gIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7CisgICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiUGVybWlzc2lvbiBEZW5pYWw6IHN0YXJ0aW5nICIgKyBpbnRlbnQudG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICArICIgZnJvbSAiICsgY2FsbGVyQXBwICsgIiAocGlkPSIgKyBjYWxsaW5nUGlkCisgICAgICAgICAgICAgICAgICAgICsgIiwgdWlkPSIgKyBjYWxsaW5nVWlkICsgIikiCisgICAgICAgICAgICAgICAgICAgICsgIiByZXF1aXJlcyAiICsgYUluZm8ucGVybWlzc2lvbjsKKyAgICAgICAgICAgIFNsb2cudyhUQUcsIG1zZyk7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24obXNnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICBpZiAobVNlcnZpY2UubUNvbnRyb2xsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJvb2xlYW4gYWJvcnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgSW50ZW50IHdlIGdpdmUgdG8gdGhlIHdhdGNoZXIgaGFzIHRoZSBleHRyYSBkYXRhCisgICAgICAgICAgICAgICAgICAgIC8vIHN0cmlwcGVkIG9mZiwgc2luY2UgaXQgY2FuIGNvbnRhaW4gcHJpdmF0ZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSW50ZW50IHdhdGNoSW50ZW50ID0gaW50ZW50LmNsb25lRmlsdGVyKCk7CisgICAgICAgICAgICAgICAgICAgIGFib3J0ID0gIW1TZXJ2aWNlLm1Db250cm9sbGVyLmFjdGl2aXR5U3RhcnRpbmcod2F0Y2hJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUluZm8uYXBwbGljYXRpb25JbmZvLnBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tQ29udHJvbGxlciA9IG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgIGlmIChhYm9ydCkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBXZSBwcmV0ZW5kIHRvIHRoZSBjYWxsZXIgdGhhdCBpdCB3YXMgcmVhbGx5IHN0YXJ0ZWQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAvLyB0aGV5IHdpbGwganVzdCBnZXQgYSBjYW5jZWwgcmVzdWx0LgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfU1VDQ0VTUzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBuZXcgQWN0aXZpdHlSZWNvcmQobVNlcnZpY2UsIHRoaXMsIGNhbGxlckFwcCwgY2FsbGluZ1VpZCwKKyAgICAgICAgICAgICAgICBpbnRlbnQsIHJlc29sdmVkVHlwZSwgYUluZm8sIG1TZXJ2aWNlLm1Db25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwgY29tcG9uZW50U3BlY2lmaWVkKTsKKworICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gbnVsbAorICAgICAgICAgICAgICAgICAgICB8fCBtUmVzdW1lZEFjdGl2aXR5LmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCAhPSBjYWxsaW5nVWlkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtU2VydmljZS5jaGVja0FwcFN3aXRjaEFsbG93ZWRMb2NrZWQoY2FsbGluZ1BpZCwgY2FsbGluZ1VpZCwgIkFjdGl2aXR5IHN0YXJ0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0FjdGl2aXR5TGF1bmNoIHBhbCA9IG5ldyBQZW5kaW5nQWN0aXZpdHlMYXVuY2goKTsKKyAgICAgICAgICAgICAgICAgICAgcGFsLnIgPSByOworICAgICAgICAgICAgICAgICAgICBwYWwuc291cmNlUmVjb3JkID0gc291cmNlUmVjb3JkOworICAgICAgICAgICAgICAgICAgICBwYWwuZ3JhbnRlZFVyaVBlcm1pc3Npb25zID0gZ3JhbnRlZFVyaVBlcm1pc3Npb25zOworICAgICAgICAgICAgICAgICAgICBwYWwuZ3JhbnRlZE1vZGUgPSBncmFudGVkTW9kZTsKKyAgICAgICAgICAgICAgICAgICAgcGFsLm9ubHlJZk5lZWRlZCA9IG9ubHlJZk5lZWRlZDsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzLmFkZChwYWwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfU1dJVENIRVNfQ0FOQ0VMRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGlmIChtU2VydmljZS5tRGlkQXBwU3dpdGNoKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2Vjb25kIGFsbG93ZWQgc3dpdGNoIHNpbmNlIHdlIHN0b3BwZWQgc3dpdGNoZXMsCisgICAgICAgICAgICAgICAgLy8gc28gbm93IGp1c3QgZ2VuZXJhbGx5IGFsbG93IHN3aXRjaGVzLiAgVXNlIGNhc2U6IHVzZXIgcHJlc3NlcworICAgICAgICAgICAgICAgIC8vIGhvbWUgKHN3aXRjaGVzIGRpc2FibGVkLCBzd2l0Y2ggdG8gaG9tZSwgbURpZEFwcFN3aXRjaCBub3cgdHJ1ZSk7CisgICAgICAgICAgICAgICAgLy8gdXNlciB0YXBzIGEgaG9tZSBpY29uIChjb21pbmcgZnJvbSBob21lIHNvIGFsbG93ZWQsIHdlIGhpdCBoZXJlCisgICAgICAgICAgICAgICAgLy8gYW5kIG5vdyBhbGxvdyBhbnlvbmUgdG8gc3dpdGNoIGFnYWluKS4KKyAgICAgICAgICAgICAgICBtU2VydmljZS5tQXBwU3dpdGNoZXNBbGxvd2VkVGltZSA9IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1EaWRBcHBTd2l0Y2ggPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgCisgICAgICAgICAgICBtU2VydmljZS5kb1BlbmRpbmdBY3Rpdml0eUxhdW5jaGVzTG9ja2VkKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHN0YXJ0QWN0aXZpdHlVbmNoZWNrZWRMb2NrZWQociwgc291cmNlUmVjb3JkLAorICAgICAgICAgICAgICAgIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywgZ3JhbnRlZE1vZGUsIG9ubHlJZk5lZWRlZCwgdHJ1ZSk7CisgICAgfQorICAKKyAgICBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0eVVuY2hlY2tlZExvY2tlZChBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgc291cmNlUmVjb3JkLCBVcmlbXSBncmFudGVkVXJpUGVybWlzc2lvbnMsCisgICAgICAgICAgICBpbnQgZ3JhbnRlZE1vZGUsIGJvb2xlYW4gb25seUlmTmVlZGVkLCBib29sZWFuIGRvUmVzdW1lKSB7CisgICAgICAgIGZpbmFsIEludGVudCBpbnRlbnQgPSByLmludGVudDsKKyAgICAgICAgZmluYWwgaW50IGNhbGxpbmdVaWQgPSByLmxhdW5jaGVkRnJvbVVpZDsKKyAgICAgICAgCisgICAgICAgIGludCBsYXVuY2hGbGFncyA9IGludGVudC5nZXRGbGFncygpOworICAgICAgICAKKyAgICAgICAgLy8gV2UnbGwgaW52b2tlIG9uVXNlckxlYXZpbmcgYmVmb3JlIG9uUGF1c2Ugb25seSBpZiB0aGUgbGF1bmNoaW5nCisgICAgICAgIC8vIGFjdGl2aXR5IGRpZCBub3QgZXhwbGljaXRseSBzdGF0ZSB0aGF0IHRoaXMgaXMgYW4gYXV0b21hdGVkIGxhdW5jaC4KKyAgICAgICAgbVVzZXJMZWF2aW5nID0gKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX05PX1VTRVJfQUNUSU9OKSA9PSAwOworICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICJzdGFydEFjdGl2aXR5KCkgPT4gbVVzZXJMZWF2aW5nPSIgKyBtVXNlckxlYXZpbmcpOworICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBoYXMgYXNrZWQgbm90IHRvIHJlc3VtZSBhdCB0aGlzIHBvaW50LCB3ZSBtYWtlIG5vdGUKKyAgICAgICAgLy8gb2YgdGhpcyBpbiB0aGUgcmVjb3JkIHNvIHRoYXQgd2UgY2FuIHNraXAgaXQgd2hlbiB0cnlpbmcgdG8gZmluZAorICAgICAgICAvLyB0aGUgdG9wIHJ1bm5pbmcgYWN0aXZpdHkuCisgICAgICAgIGlmICghZG9SZXN1bWUpIHsKKyAgICAgICAgICAgIHIuZGVsYXllZFJlc3VtZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5vdFRvcCA9IChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9QUkVWSU9VU19JU19UT1ApCisgICAgICAgICAgICAgICAgIT0gMCA/IHIgOiBudWxsOworCisgICAgICAgIC8vIElmIHRoZSBvbmx5SWZOZWVkZWQgZmxhZyBpcyBzZXQsIHRoZW4gd2UgY2FuIGRvIHRoaXMgaWYgdGhlIGFjdGl2aXR5CisgICAgICAgIC8vIGJlaW5nIGxhdW5jaGVkIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgbWFraW5nIHRoZSBjYWxsLi4uICBvciwgYXMKKyAgICAgICAgLy8gYSBzcGVjaWFsIGNhc2UsIGlmIHdlIGRvIG5vdCBrbm93IHRoZSBjYWxsZXIgdGhlbiB3ZSBjb3VudCB0aGUKKyAgICAgICAgLy8gY3VycmVudCB0b3AgYWN0aXZpdHkgYXMgdGhlIGNhbGxlci4KKyAgICAgICAgaWYgKG9ubHlJZk5lZWRlZCkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgY2hlY2tlZENhbGxlciA9IHNvdXJjZVJlY29yZDsKKyAgICAgICAgICAgIGlmIChjaGVja2VkQ2FsbGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjaGVja2VkQ2FsbGVyID0gdG9wUnVubmluZ05vbkRlbGF5ZWRBY3Rpdml0eUxvY2tlZChub3RUb3ApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjaGVja2VkQ2FsbGVyLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpKSB7CisgICAgICAgICAgICAgICAgLy8gQ2FsbGVyIGlzIG5vdCB0aGUgc2FtZSBhcyBsYXVuY2hlciwgc28gYWx3YXlzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICBvbmx5SWZOZWVkZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChncmFudGVkVXJpUGVybWlzc2lvbnMgIT0gbnVsbCAmJiBjYWxsaW5nVWlkID4gMCkgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGdyYW50ZWRVcmlQZXJtaXNzaW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmdyYW50VXJpUGVybWlzc2lvbkxvY2tlZChjYWxsaW5nVWlkLCByLnBhY2thZ2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRlZFVyaVBlcm1pc3Npb25zW2ldLCBncmFudGVkTW9kZSwgcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtU2VydmljZS5ncmFudFVyaVBlcm1pc3Npb25Gcm9tSW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIucGFja2FnZU5hbWUsCisgICAgICAgICAgICAgICAgaW50ZW50LCByKTsKKworICAgICAgICBpZiAoc291cmNlUmVjb3JkID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgYWN0aXZpdHkgaXMgbm90IGJlaW5nIHN0YXJ0ZWQgZnJvbSBhbm90aGVyLi4uICBpbiB0aGlzCisgICAgICAgICAgICAvLyBjYXNlIHdlIC1hbHdheXMtIHN0YXJ0IGEgbmV3IHRhc2suCisgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgInN0YXJ0QWN0aXZpdHkgY2FsbGVkIGZyb20gbm9uLUFjdGl2aXR5IGNvbnRleHQ7IGZvcmNpbmcgSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgZm9yOiAiCisgICAgICAgICAgICAgICAgICAgICAgKyBpbnRlbnQpOworICAgICAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVJlY29yZC5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFKSB7CisgICAgICAgICAgICAvLyBUaGUgb3JpZ2luYWwgYWN0aXZpdHkgd2hvIGlzIHN0YXJ0aW5nIHVzIGlzIHJ1bm5pbmcgYXMgYSBzaW5nbGUKKyAgICAgICAgICAgIC8vIGluc3RhbmNlLi4uICB0aGlzIG5ldyBhY3Rpdml0eSBpdCBpcyBzdGFydGluZyBtdXN0IGdvIG9uIGl0cworICAgICAgICAgICAgLy8gb3duIHRhc2suCisgICAgICAgICAgICBsYXVuY2hGbGFncyB8PSBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSzsKKyAgICAgICAgfSBlbHNlIGlmIChyLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0UKKyAgICAgICAgICAgICAgICB8fCByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVEFTSykgeworICAgICAgICAgICAgLy8gVGhlIGFjdGl2aXR5IGJlaW5nIHN0YXJ0ZWQgaXMgYSBzaW5nbGUgaW5zdGFuY2UuLi4gIGl0IGFsd2F5cworICAgICAgICAgICAgLy8gZ2V0cyBsYXVuY2hlZCBpbnRvIGl0cyBvd24gdGFzay4KKyAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHIucmVzdWx0VG8gIT0gbnVsbCAmJiAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spICE9IDApIHsKKyAgICAgICAgICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24gdGhpcyBhY3Rpdml0eSBpcyBiZWluZyBsYXVuY2hlZCBpbnRvIGEgbmV3CisgICAgICAgICAgICAvLyB0YXNrLi4uICB5ZXQgdGhlIGNhbGxlciBoYXMgcmVxdWVzdGVkIGEgcmVzdWx0IGJhY2suICBXZWxsLCB0aGF0CisgICAgICAgICAgICAvLyBpcyBwcmV0dHkgbWVzc2VkIHVwLCBzbyBpbnN0ZWFkIGltbWVkaWF0ZWx5IHNlbmQgYmFjayBhIGNhbmNlbAorICAgICAgICAgICAgLy8gYW5kIGxldCB0aGUgbmV3IHRhc2sgY29udGludWUgbGF1bmNoZWQgYXMgbm9ybWFsIHdpdGhvdXQgYQorICAgICAgICAgICAgLy8gZGVwZW5kZW5jeSBvbiBpdHMgb3JpZ2luYXRvci4KKyAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSBpcyBsYXVuY2hpbmcgYXMgYSBuZXcgdGFzaywgc28gY2FuY2VsbGluZyBhY3Rpdml0eSByZXN1bHQuIik7CisgICAgICAgICAgICBzZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsCisgICAgICAgICAgICAgICAgICAgIHIucmVzdWx0VG8sIHIucmVzdWx0V2hvLCByLnJlcXVlc3RDb2RlLAorICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCk7CisgICAgICAgICAgICByLnJlc3VsdFRvID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gYWRkaW5nVG9UYXNrID0gZmFsc2U7CisgICAgICAgIGlmICgoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwICYmCisgICAgICAgICAgICAgICAgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX01VTFRJUExFX1RBU0spID09IDApCisgICAgICAgICAgICAgICAgfHwgci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX1RBU0sKKyAgICAgICAgICAgICAgICB8fCByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0UpIHsKKyAgICAgICAgICAgIC8vIElmIGJyaW5nIHRvIGZyb250IGlzIHJlcXVlc3RlZCwgYW5kIG5vIHJlc3VsdCBpcyByZXF1ZXN0ZWQsIGFuZAorICAgICAgICAgICAgLy8gd2UgY2FuIGZpbmQgYSB0YXNrIHRoYXQgd2FzIHN0YXJ0ZWQgd2l0aCB0aGlzIHNhbWUKKyAgICAgICAgICAgIC8vIGNvbXBvbmVudCwgdGhlbiBpbnN0ZWFkIG9mIGxhdW5jaGluZyBicmluZyB0aGF0IG9uZSB0byB0aGUgZnJvbnQuCisgICAgICAgICAgICBpZiAoci5yZXN1bHRUbyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHRoZXJlIGlzIGEgdGFzayB0byBicmluZyB0byB0aGUgZnJvbnQuICBJZiB0aGlzIGlzCisgICAgICAgICAgICAgICAgLy8gYSBTSU5HTEVfSU5TVEFOQ0UgYWN0aXZpdHksIHRoZXJlIGNhbiBiZSBvbmUgYW5kIG9ubHkgb25lCisgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2Ugb2YgaXQgaW4gdGhlIGhpc3RvcnksIGFuZCBpdCBpcyBhbHdheXMgaW4gaXRzIG93bgorICAgICAgICAgICAgICAgIC8vIHVuaXF1ZSB0YXNrLCBzbyB3ZSBkbyBhIHNwZWNpYWwgc2VhcmNoLgorICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRhc2tUb3AgPSByLmxhdW5jaE1vZGUgIT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0UKKyAgICAgICAgICAgICAgICAgICAgICAgID8gZmluZFRhc2tMb2NrZWQoaW50ZW50LCByLmluZm8pCisgICAgICAgICAgICAgICAgICAgICAgICA6IGZpbmRBY3Rpdml0eUxvY2tlZChpbnRlbnQsIHIuaW5mbyk7CisgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3AgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGFza1RvcC50YXNrLmludGVudCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHRhc2sgd2FzIHN0YXJ0ZWQgYmVjYXVzZSBvZiBtb3ZlbWVudCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGFjdGl2aXR5IGJhc2VkIG9uIGFmZmluaXR5Li4uICBub3cgdGhhdCB3ZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGFjdHVhbGx5IGxhdW5jaGluZyBpdCwgd2UgY2FuIGFzc2lnbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhc2UgaW50ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcC50YXNrLnNldEludGVudChpbnRlbnQsIHIuaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCB0YXNrIGlzIG5vdCBpbiB0aGUgZnJvbnQsIHRoZW4gd2UgbmVlZAorICAgICAgICAgICAgICAgICAgICAvLyB0byBicmluZyBpdCB0byB0aGUgZnJvbnQuLi4gIGV4Y2VwdC4uLiAgd2VsbCwgd2l0aAorICAgICAgICAgICAgICAgICAgICAvLyBTSU5HTEVfVEFTS19MQVVOQ0ggaXQncyBub3QgZW50aXJlbHkgY2xlYXIuICBXZSdkIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvciBhcyBpZiBhIG5ldyBpbnN0YW5jZSB3YXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVpbmcgc3RhcnRlZCwgd2hpY2ggbWVhbnMgbm90IGJyaW5naW5nIGl0IHRvIHRoZSBmcm9udAorICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2FsbGVyIGlzIG5vdCBpdHNlbGYgaW4gdGhlIGZyb250LgorICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBjdXJUb3AgPSB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG5vdFRvcCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJUb3AudGFzayAhPSB0YXNrVG9wLnRhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHIuaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX0JST1VHSFRfVE9fRlJPTlQpOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjYWxsZXJBdEZyb250ID0gc291cmNlUmVjb3JkID09IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgY3VyVG9wLnRhc2sgPT0gc291cmNlUmVjb3JkLnRhc2s7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVyQXRGcm9udCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHJlYWxseSBkbyB3YW50IHRvIHB1c2ggdGhpcyBvbmUgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyJ3MgZmFjZSwgcmlnaHQgbm93LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVUYXNrVG9Gcm9udExvY2tlZCh0YXNrVG9wLnRhc2ssIHIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgaGFzIHJlcXVlc3RlZCB0aGF0IHRoZSB0YXJnZXQgdGFzayBiZQorICAgICAgICAgICAgICAgICAgICAvLyByZXNldCwgdGhlbiBkbyBzby4KKyAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRCkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcCA9IHJlc2V0VGFza0lmTmVlZGVkTG9ja2VkKHRhc2tUb3AsIHIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvbmx5SWZOZWVkZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gc3RhcnQgYSBuZXcgYWN0aXZpdHksIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNsaWVudCBzYWlkIG5vdCB0byBkbyBhbnl0aGluZyBpZiB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB0aGUgY2FzZSwgc28gdGhpcyBpcyBpdCEgIEFuZCBmb3IgcGFyYW5vaWEsIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkgcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfUkVUVVJOX0lOVEVOVF9UT19DQUxMRVI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9DTEVBUl9UT1ApICE9IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVEFTSworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBzaXR1YXRpb24gd2Ugd2FudCB0byByZW1vdmUgYWxsIGFjdGl2aXRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gdGhlIHRhc2sgdXAgdG8gdGhlIG9uZSBiZWluZyBzdGFydGVkLiAgSW4gbW9zdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZXMgdGhpcyBtZWFucyB3ZSBhcmUgcmVzZXR0aW5nIHRoZSB0YXNrIHRvIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRvcCA9IHBlcmZvcm1DbGVhclRhc2tMb2NrZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AudGFzay50YXNrSWQsIHIsIGxhdW5jaEZsYWdzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b3AgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b3AuZnJvbnRPZlRhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWN0aXZpdHkgYWxpYXNlcyBtYXkgbWVhbiB3ZSB1c2UgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVudHMgZm9yIHRoZSB0b3AgYWN0aXZpdHksIHNvIG1ha2Ugc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdGFzayBub3cgaGFzIHRoZSBpZGVudGl0eSBvZiB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wLnRhc2suc2V0SW50ZW50KHIuaW50ZW50LCByLmluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0b3AudGFzayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wLmRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoci5pbnRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIHNwZWNpYWwgY2FzZTogd2UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHRoZSBhY3Rpdml0eSBiZWNhdXNlIGl0IGlzIG5vdCBjdXJyZW50bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBydW5uaW5nLCBhbmQgdGhlIGNhbGxlciBoYXMgYXNrZWQgdG8gY2xlYXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCB0YXNrIHRvIGhhdmUgdGhpcyBhY3Rpdml0eSBhdCB0aGUgdG9wLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IHByZXRlbmQgbGlrZSB0aGlzIGFjdGl2aXR5IGlzIGJlaW5nIHN0YXJ0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSB0aGUgdG9wIG9mIGl0cyB0YXNrLCBzbyBpdCBpcyBwdXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgcGxhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gdGFza1RvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnJlYWxBY3Rpdml0eS5lcXVhbHModGFza1RvcC50YXNrLnJlYWxBY3Rpdml0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgdG9wIGFjdGl2aXR5IG9uIHRoZSB0YXNrIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2FtZSBhcyB0aGUgb25lIGJlaW5nIGxhdW5jaGVkLCBzbyB3ZSB0YWtlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcmVxdWVzdCB0byBicmluZyB0aGUgdGFzayB0byB0aGUgZm9yZWdyb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0b3AgYWN0aXZpdHkgaW4gdGhlIHRhc2sgaXMgdGhlIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5LCBkZWxpdmVyIHRoaXMgbmV3IGludGVudCB0byBpdCBpZiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVzaXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfU0lOR0xFX1RPUCkgIT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXNrVG9wLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgciwgdGFza1RvcC50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFza1RvcC5mcm9udE9mVGFzaykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wLnRhc2suc2V0SW50ZW50KHIuaW50ZW50LCByLmluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wLmRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoci5pbnRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghci5pbnRlbnQuZmlsdGVyRXF1YWxzKHRhc2tUb3AudGFzay5pbnRlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGFyZSBsYXVuY2hpbmcgdGhlIHJvb3QgYWN0aXZpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgdGFzaywgYnV0IHdpdGggYSBkaWZmZXJlbnQgaW50ZW50LiAgV2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaG91bGQgc3RhcnQgYSBuZXcgaW5zdGFuY2Ugb24gdG9wLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gdGFza1RvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERUQpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBhbiBhY3Rpdml0eSBpcyBiZWluZyBsYXVuY2hlZCBpbiB0byBhbgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhpc3RpbmcgdGFzaywgd2l0aG91dCByZXNldHRpbmcgdGhhdCB0YXNrLiAgVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdHlwaWNhbGx5IHRoZSBzaXR1YXRpb24gb2YgbGF1bmNoaW5nIGFuIGFjdGl2aXR5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGEgbm90aWZpY2F0aW9uIG9yIHNob3J0Y3V0LiAgV2Ugd2FudCB0byBwbGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5ldyBhY3Rpdml0eSBvbiB0b3Agb2YgdGhlIGN1cnJlbnQgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSB0YXNrVG9wOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0YXNrVG9wLnRhc2sucm9vdFdhc1Jlc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgYXJlIGxhdW5jaGluZyBpbiB0byBhbiBleGlzdGluZyB0YXNrCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGhhcyBub3QgeWV0IGJlZW4gc3RhcnRlZCBmcm9tIGl0cyBmcm9udCBkb29yLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGN1cnJlbnQgdGFzayBoYXMgYmVlbiBicm91Z2h0IHRvIHRoZSBmcm9udC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZWFsbHksIHdlJ2QgcHJvYmFibHkgbGlrZSB0byBwbGFjZSB0aGlzIG5ldyB0YXNrCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGUgYm90dG9tIG9mIGl0cyBzdGFjaywgYnV0IHRoYXQncyBhIGxpdHRsZSBoYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBkbyB3aXRoIHRoZSBjdXJyZW50IG9yZ2FuaXphdGlvbiBvZiB0aGUgY29kZSBzbworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSdsbCBqdXN0IGRyb3AgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wLnRhc2suc2V0SW50ZW50KHIuaW50ZW50LCByLmluZm8pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkaW5nVG9UYXNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkaWRuJ3QgZG8gYW55dGhpbmcuLi4gIGJ1dCBpdCB3YXMgbmVlZGVkIChhLmsuYS4sIGNsaWVudAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgdXNlIHRoYXQgaW50ZW50ISkgIEFuZCBmb3IgcGFyYW5vaWEsIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkgcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfVEFTS19UT19GUk9OVDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vU3RyaW5nIHVyaSA9IHIuaW50ZW50LnRvVVJJKCk7CisgICAgICAgIC8vSW50ZW50IGludGVudDIgPSBuZXcgSW50ZW50KHVyaSk7CisgICAgICAgIC8vU2xvZy5pKFRBRywgIkdpdmVuIGludGVudDogIiArIHIuaW50ZW50KTsKKyAgICAgICAgLy9TbG9nLmkoVEFHLCAiVVJJIGlzOiAiICsgdXJpKTsKKyAgICAgICAgLy9TbG9nLmkoVEFHLCAiVG8gaW50ZW50OiAiICsgaW50ZW50Mik7CisKKyAgICAgICAgaWYgKHIucGFja2FnZU5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gSWYgdGhlIGFjdGl2aXR5IGJlaW5nIGxhdW5jaGVkIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgY3VycmVudGx5CisgICAgICAgICAgICAvLyBhdCB0aGUgdG9wLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgaWYgaXQgc2hvdWxkIG9ubHkgYmUgbGF1bmNoZWQKKyAgICAgICAgICAgIC8vIG9uY2UuCisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCB0b3AgPSB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG5vdFRvcCk7CisgICAgICAgICAgICBpZiAodG9wICE9IG51bGwgJiYgci5yZXN1bHRUbyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKHRvcC5yZWFsQWN0aXZpdHkuZXF1YWxzKHIucmVhbEFjdGl2aXR5KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodG9wLmFwcCAhPSBudWxsICYmIHRvcC5hcHAudGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfU0lOR0xFX1RPUCkgIT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UT1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVEFTSykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHRvcCwgdG9wLnRhc2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBwYXJhbm9pYSwgbWFrZSBzdXJlIHdlIGhhdmUgY29ycmVjdGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9ubHlJZk5lZWRlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHN0YXJ0IGEgbmV3IGFjdGl2aXR5LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNsaWVudCBzYWlkIG5vdCB0byBkbyBhbnl0aGluZyBpZiB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHRoZSBjYXNlLCBzbyB0aGlzIGlzIGl0IQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfUkVUVVJOX0lOVEVOVF9UT19DQUxMRVI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5kZWxpdmVyTmV3SW50ZW50TG9ja2VkKHIuaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfREVMSVZFUkVEX1RPX1RPUDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHIucmVzdWx0VG8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzdWx0VG8sIHIucmVzdWx0V2hvLCByLnJlcXVlc3RDb2RlLAorICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFNUQVJUX0NMQVNTX05PVF9GT1VORDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gbmV3VGFzayA9IGZhbHNlOworCisgICAgICAgIC8vIFNob3VsZCB0aGlzIGJlIGNvbnNpZGVyZWQgYSBuZXcgdGFzaz8KKyAgICAgICAgaWYgKHIucmVzdWx0VG8gPT0gbnVsbCAmJiAhYWRkaW5nVG9UYXNrCisgICAgICAgICAgICAgICAgJiYgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwKSB7CisgICAgICAgICAgICAvLyB0b2RvOiBzaG91bGQgZG8gYmV0dGVyIG1hbmFnZW1lbnQgb2YgaW50ZWdlcnMuCisgICAgICAgICAgICBtU2VydmljZS5tQ3VyVGFzaysrOworICAgICAgICAgICAgaWYgKG1TZXJ2aWNlLm1DdXJUYXNrIDw9IDApIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tQ3VyVGFzayA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByLnRhc2sgPSBuZXcgVGFza1JlY29yZChtU2VydmljZS5tQ3VyVGFzaywgci5pbmZvLCBpbnRlbnQsCisgICAgICAgICAgICAgICAgICAgIChyLmluZm8uZmxhZ3MmQWN0aXZpdHlJbmZvLkZMQUdfQ0xFQVJfVEFTS19PTl9MQVVOQ0gpICE9IDApOworICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiU3RhcnRpbmcgbmV3IGFjdGl2aXR5ICIgKyByCisgICAgICAgICAgICAgICAgICAgICsgIiBpbiBuZXcgdGFzayAiICsgci50YXNrKTsKKyAgICAgICAgICAgIG5ld1Rhc2sgPSB0cnVlOworICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5hZGRSZWNlbnRUYXNrTG9ja2VkKHIudGFzayk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VSZWNvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFhZGRpbmdUb1Rhc2sgJiYKKyAgICAgICAgICAgICAgICAgICAgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1RPUCkgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgYXJlIGFkZGluZyB0aGUgYWN0aXZpdHkgdG8gYW4gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAvLyB0YXNrLCBidXQgdGhlIGNhbGxlciBoYXMgYXNrZWQgdG8gY2xlYXIgdGhhdCB0YXNrIGlmIHRoZQorICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGlzIGFscmVhZHkgcnVubmluZy4KKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCB0b3AgPSBwZXJmb3JtQ2xlYXJUYXNrTG9ja2VkKAorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkLnRhc2sudGFza0lkLCByLCBsYXVuY2hGbGFncywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHRvcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHIsIHRvcC50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgdG9wLmRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoci5pbnRlbnQpOworICAgICAgICAgICAgICAgICAgICAvLyBGb3IgcGFyYW5vaWEsIG1ha2Ugc3VyZSB3ZSBoYXZlIGNvcnJlY3RseQorICAgICAgICAgICAgICAgICAgICAvLyByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNUQVJUX0RFTElWRVJFRF9UT19UT1A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICghYWRkaW5nVG9UYXNrICYmCisgICAgICAgICAgICAgICAgICAgIChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9SRU9SREVSX1RPX0ZST05UKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBhcmUgbGF1bmNoaW5nIGFuIGFjdGl2aXR5IGluIG91ciBvd24gdGFzaworICAgICAgICAgICAgICAgIC8vIHRoYXQgbWF5IGFscmVhZHkgYmUgcnVubmluZyBzb21ld2hlcmUgaW4gdGhlIGhpc3RvcnksIGFuZAorICAgICAgICAgICAgICAgIC8vIHdlIHdhbnQgdG8gc2h1ZmZsZSBpdCB0byB0aGUgZnJvbnQgb2YgdGhlIHN0YWNrIGlmIHNvLgorICAgICAgICAgICAgICAgIGludCB3aGVyZSA9IGZpbmRBY3Rpdml0eUluSGlzdG9yeUxvY2tlZChyLCBzb3VyY2VSZWNvcmQudGFzay50YXNrSWQpOworICAgICAgICAgICAgICAgIGlmICh3aGVyZSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRvcCA9IG1vdmVBY3Rpdml0eVRvRnJvbnRMb2NrZWQod2hlcmUpOworICAgICAgICAgICAgICAgICAgICBsb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0b3AudGFzayk7CisgICAgICAgICAgICAgICAgICAgIHRvcC5kZWxpdmVyTmV3SW50ZW50TG9ja2VkKHIuaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfREVMSVZFUkVEX1RPX1RPUDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBBbiBleGlzdGluZyBhY3Rpdml0eSBpcyBzdGFydGluZyB0aGlzIG5ldyBhY3Rpdml0eSwgc28gd2Ugd2FudAorICAgICAgICAgICAgLy8gdG8ga2VlcCB0aGUgbmV3IG9uZSBpbiB0aGUgc2FtZSB0YXNrIGFzIHRoZSBvbmUgdGhhdCBpcyBzdGFydGluZworICAgICAgICAgICAgLy8gaXQuCisgICAgICAgICAgICByLnRhc2sgPSBzb3VyY2VSZWNvcmQudGFzazsKKyAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBRywgIlN0YXJ0aW5nIG5ldyBhY3Rpdml0eSAiICsgcgorICAgICAgICAgICAgICAgICAgICArICIgaW4gZXhpc3RpbmcgdGFzayAiICsgci50YXNrKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyBub3QgYmVpbmcgc3RhcnRlZCBmcm9tIGFuIGV4aXN0aW5nIGFjdGl2aXR5LCBhbmQgbm90IHBhcnQKKyAgICAgICAgICAgIC8vIG9mIGEgbmV3IHRhc2suLi4gIGp1c3QgcHV0IGl0IGluIHRoZSB0b3AgdGFzaywgdGhvdWdoIHRoZXNlIGRheXMKKyAgICAgICAgICAgIC8vIHRoaXMgY2FzZSBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtSGlzdG9yeS5zaXplKCk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwcmV2ID0KKyAgICAgICAgICAgICAgICBOID4gMCA/IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoTi0xKSA6IG51bGw7CisgICAgICAgICAgICByLnRhc2sgPSBwcmV2ICE9IG51bGwKKyAgICAgICAgICAgICAgICA/IHByZXYudGFzaworICAgICAgICAgICAgICAgIDogbmV3IFRhc2tSZWNvcmQobVNlcnZpY2UubUN1clRhc2ssIHIuaW5mbywgaW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgKHIuaW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19DTEVBUl9UQVNLX09OX0xBVU5DSCkgIT0gMCk7CisgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJTdGFydGluZyBuZXcgYWN0aXZpdHkgIiArIHIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGluIG5ldyBndWVzc2VkICIgKyByLnRhc2spOworICAgICAgICB9CisgICAgICAgIGlmIChuZXdUYXNrKSB7CisgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9DUkVBVEVfVEFTSywgci50YXNrLnRhc2tJZCk7CisgICAgICAgIH0KKyAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fQ1JFQVRFX0FDVElWSVRZLCByLCByLnRhc2spOworICAgICAgICBzdGFydEFjdGl2aXR5TG9ja2VkKHIsIG5ld1Rhc2ssIGRvUmVzdW1lKTsKKyAgICAgICAgcmV0dXJuIFNUQVJUX1NVQ0NFU1M7CisgICAgfQorCisgICAgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHlNYXlXYWl0KElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsCisgICAgICAgICAgICBJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlLCBVcmlbXSBncmFudGVkVXJpUGVybWlzc2lvbnMsCisgICAgICAgICAgICBpbnQgZ3JhbnRlZE1vZGUsIElCaW5kZXIgcmVzdWx0VG8sCisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0V2hvLCBpbnQgcmVxdWVzdENvZGUsIGJvb2xlYW4gb25seUlmTmVlZGVkLAorICAgICAgICAgICAgYm9vbGVhbiBkZWJ1ZywgV2FpdFJlc3VsdCBvdXRSZXN1bHQsIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7CisgICAgICAgIC8vIFJlZnVzZSBwb3NzaWJsZSBsZWFrZWQgZmlsZSBkZXNjcmlwdG9ycworICAgICAgICBpZiAoaW50ZW50ICE9IG51bGwgJiYgaW50ZW50Lmhhc0ZpbGVEZXNjcmlwdG9ycygpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJGaWxlIGRlc2NyaXB0b3JzIHBhc3NlZCBpbiBJbnRlbnQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gY29tcG9uZW50U3BlY2lmaWVkID0gaW50ZW50LmdldENvbXBvbmVudCgpICE9IG51bGw7CisgICAgICAgIAorICAgICAgICAvLyBEb24ndCBtb2RpZnkgdGhlIGNsaWVudCdzIG9iamVjdCEKKyAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChpbnRlbnQpOworCisgICAgICAgIC8vIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhcmdldCBvZiB0aGUgSW50ZW50LgorICAgICAgICBBY3Rpdml0eUluZm8gYUluZm87CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZXNvbHZlSW5mbyBySW5mbyA9CisgICAgICAgICAgICAgICAgQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLnJlc29sdmVJbnRlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQsIHJlc29sdmVkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLk1BVENIX0RFRkFVTFRfT05MWQorICAgICAgICAgICAgICAgICAgICAgICAgfCBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlNUT0NLX1BNX0ZMQUdTKTsKKyAgICAgICAgICAgIGFJbmZvID0gckluZm8gIT0gbnVsbCA/IHJJbmZvLmFjdGl2aXR5SW5mbyA6IG51bGw7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBhSW5mbyA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYUluZm8gIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGZvdW5kIHRhcmdldCBiYWNrIGludG8gdGhlIGludGVudCwgYmVjYXVzZSBub3cgdGhhdAorICAgICAgICAgICAgLy8gd2UgaGF2ZSBpdCB3ZSBuZXZlciB3YW50IHRvIGRvIHRoaXMgYWdhaW4uICBGb3IgZXhhbXBsZSwgaWYgdGhlCisgICAgICAgICAgICAvLyB1c2VyIG5hdmlnYXRlcyBiYWNrIHRvIHRoaXMgcG9pbnQgaW4gdGhlIGhpc3RvcnksIHdlIHNob3VsZAorICAgICAgICAgICAgLy8gYWx3YXlzIHJlc3RhcnQgdGhlIGV4YWN0IHNhbWUgYWN0aXZpdHkuCisgICAgICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KG5ldyBDb21wb25lbnROYW1lKAorICAgICAgICAgICAgICAgICAgICBhSW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUsIGFJbmZvLm5hbWUpKTsKKworICAgICAgICAgICAgLy8gRG9uJ3QgZGVidWcgdGhpbmdzIGluIHRoZSBzeXN0ZW0gcHJvY2VzcworICAgICAgICAgICAgaWYgKGRlYnVnKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhSW5mby5wcm9jZXNzTmFtZS5lcXVhbHMoInN5c3RlbSIpKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldERlYnVnQXBwKGFJbmZvLnByb2Nlc3NOYW1lLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZSkgeworICAgICAgICAgICAgaW50IGNhbGxpbmdQaWQ7CisgICAgICAgICAgICBpbnQgY2FsbGluZ1VpZDsKKyAgICAgICAgICAgIGlmIChjYWxsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpOworICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gY2FsbGluZ1VpZCA9IC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtQ29uZmlnV2lsbENoYW5nZSA9IGNvbmZpZyAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICYmIG1TZXJ2aWNlLm1Db25maWd1cmF0aW9uLmRpZmYoY29uZmlnKSAhPSAwOworICAgICAgICAgICAgaWYgKERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICJTdGFydGluZyBhY3Rpdml0eSB3aGVuIGNvbmZpZyB3aWxsIGNoYW5nZSA9ICIgKyBtQ29uZmlnV2lsbENoYW5nZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtTWFpblN0YWNrICYmIGFJbmZvICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICAgICAgKGFJbmZvLmFwcGxpY2F0aW9uSW5mby5mbGFncyZBcHBsaWNhdGlvbkluZm8uRkxBR19IRUFWWV9XRUlHSFQpICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIG1heSBiZSBhIGhlYXZ5LXdlaWdodCBwcm9jZXNzISAgQ2hlY2sgdG8gc2VlIGlmIHdlIGFscmVhZHkKKyAgICAgICAgICAgICAgICAvLyBoYXZlIGFub3RoZXIsIGRpZmZlcmVudCBoZWF2eS13ZWlnaHQgcHJvY2VzcyBydW5uaW5nLgorICAgICAgICAgICAgICAgIGlmIChhSW5mby5wcm9jZXNzTmFtZS5lcXVhbHMoYUluZm8uYXBwbGljYXRpb25JbmZvLnBhY2thZ2VOYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2VzcyAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MuaW5mby51aWQgIT0gYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFtU2VydmljZS5tSGVhdnlXZWlnaHRQcm9jZXNzLnByb2Nlc3NOYW1lLmVxdWFscyhhSW5mby5wcm9jZXNzTmFtZSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVhbENhbGxpbmdQaWQgPSBjYWxsaW5nUGlkOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlYWxDYWxsaW5nVWlkID0gY2FsbGluZ1VpZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgY2FsbGVyQXBwID0gbVNlcnZpY2UuZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKGNhbGxlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxlckFwcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxDYWxsaW5nUGlkID0gY2FsbGVyQXBwLnBpZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbENhbGxpbmdVaWQgPSBjYWxsZXJBcHAuaW5mby51aWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlVuYWJsZSB0byBmaW5kIGFwcCBmb3IgY2FsbGVyICIgKyBjYWxsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIChwaWQ9IiArIHJlYWxDYWxsaW5nUGlkICsgIikgd2hlbiBzdGFydGluZzogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGludGVudC50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNUQVJUX1BFUk1JU1NJT05fREVOSUVEOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgSUludGVudFNlbmRlciB0YXJnZXQgPSBtU2VydmljZS5nZXRJbnRlbnRTZW5kZXJMb2NrZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElBY3Rpdml0eU1hbmFnZXIuSU5URU5UX1NFTkRFUl9BQ1RJVklUWSwgImFuZHJvaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsQ2FsbGluZ1VpZCwgbnVsbCwgbnVsbCwgMCwgaW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFR5cGUsIFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlbmRpbmdJbnRlbnQuRkxBR19PTkVfU0hPVCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVudCBuZXdJbnRlbnQgPSBuZXcgSW50ZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdENvZGUgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGxlciBpcyByZXF1ZXN0aW5nIGEgcmVzdWx0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5wdXRFeHRyYShIZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuS0VZX0hBU19SRVNVTFQsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5LRVlfSU5URU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZW50U2VuZGVyKHRhcmdldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MuYWN0aXZpdGllcy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgaGlzdCA9IG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MuYWN0aXZpdGllcy5nZXQoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5LRVlfQ1VSX0FQUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3QucGFja2FnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5wdXRFeHRyYShIZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuS0VZX0NVUl9UQVNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdC50YXNrLnRhc2tJZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQucHV0RXh0cmEoSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5LktFWV9ORVdfQVBQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhSW5mby5wYWNrYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQuc2V0RmxhZ3MoaW50ZW50LmdldEZsYWdzKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnNldENsYXNzTmFtZSgiYW5kcm9pZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50ID0gbmV3SW50ZW50OworICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRUeXBlID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlciA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50U3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZUluZm8gckluZm8gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkucmVzb2x2ZUludGVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZU1hbmFnZXIuTUFUQ0hfREVGQVVMVF9PTkxZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlNUT0NLX1BNX0ZMQUdTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhSW5mbyA9IHJJbmZvICE9IG51bGwgPyBySW5mby5hY3Rpdml0eUluZm8gOiBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhSW5mbyA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCByZXMgPSBzdGFydEFjdGl2aXR5TG9ja2VkKGNhbGxlciwgaW50ZW50LCByZXNvbHZlZFR5cGUsCisgICAgICAgICAgICAgICAgICAgIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywgZ3JhbnRlZE1vZGUsIGFJbmZvLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRUbywgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwgY2FsbGluZ1BpZCwgY2FsbGluZ1VpZCwKKyAgICAgICAgICAgICAgICAgICAgb25seUlmTmVlZGVkLCBjb21wb25lbnRTcGVjaWZpZWQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobUNvbmZpZ1dpbGxDaGFuZ2UgJiYgbU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgYWxzbyB3YW50cyB0byBzd2l0Y2ggdG8gYSBuZXcgY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAvLyBkbyBzbyBub3cuICBUaGlzIGFsbG93cyBhIGNsZWFuIHN3aXRjaCwgYXMgd2UgYXJlIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIGN1cnJlbnQgYWN0aXZpdHkgdG8gcGF1c2UgKHNvIHdlIHdpbGwgbm90IGRlc3Ryb3kKKyAgICAgICAgICAgICAgICAvLyBpdCksIGFuZCBoYXZlIG5vdCB5ZXQgc3RhcnRlZCB0aGUgbmV4dCBhY3Rpdml0eS4KKyAgICAgICAgICAgICAgICBtU2VydmljZS5lbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9DT05GSUdVUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgInVwZGF0ZUNvbmZpZ3VyYXRpb24oKSIpOworICAgICAgICAgICAgICAgIG1Db25maWdXaWxsQ2hhbmdlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAiVXBkYXRpbmcgdG8gbmV3IGNvbmZpZ3VyYXRpb24gYWZ0ZXIgc3RhcnRpbmcgYWN0aXZpdHkuIik7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlQ29uZmlndXJhdGlvbkxvY2tlZChjb25maWcsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob3V0UmVzdWx0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXRSZXN1bHQucmVzdWx0ID0gcmVzOworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgICAgIG1XYWl0aW5nQWN0aXZpdHlMYXVuY2hlZC5hZGQob3V0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKCFvdXRSZXN1bHQudGltZW91dCAmJiBvdXRSZXN1bHQud2hvID09IG51bGwpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IElBY3Rpdml0eU1hbmFnZXIuU1RBUlRfVEFTS19UT19GUk9OVCkgeworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gdGhpcy50b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyLm5vd1Zpc2libGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC50aW1lb3V0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQud2hvID0gbmV3IENvbXBvbmVudE5hbWUoci5pbmZvLnBhY2thZ2VOYW1lLCByLmluZm8ubmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudG90YWxUaW1lID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC50aGlzVGltZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudGhpc1RpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlLmFkZChvdXRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIW91dFJlc3VsdC50aW1lb3V0ICYmIG91dFJlc3VsdC53aG8gPT0gbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCByZXBvcnRBY3Rpdml0eUxhdW5jaGVkTG9ja2VkKGJvb2xlYW4gdGltZW91dCwgQWN0aXZpdHlSZWNvcmQgciwKKyAgICAgICAgICAgIGxvbmcgdGhpc1RpbWUsIGxvbmcgdG90YWxUaW1lKSB7CisgICAgICAgIGZvciAoaW50IGk9bVdhaXRpbmdBY3Rpdml0eUxhdW5jaGVkLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgIFdhaXRSZXN1bHQgdyA9IG1XYWl0aW5nQWN0aXZpdHlMYXVuY2hlZC5nZXQoaSk7CisgICAgICAgICAgICB3LnRpbWVvdXQgPSB0aW1lb3V0OworICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHcud2hvID0gbmV3IENvbXBvbmVudE5hbWUoci5pbmZvLnBhY2thZ2VOYW1lLCByLmluZm8ubmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3LnRoaXNUaW1lID0gdGhpc1RpbWU7CisgICAgICAgICAgICB3LnRvdGFsVGltZSA9IHRvdGFsVGltZTsKKyAgICAgICAgfQorICAgICAgICBtU2VydmljZS5ub3RpZnlBbGwoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCByZXBvcnRBY3Rpdml0eVZpc2libGVMb2NrZWQoQWN0aXZpdHlSZWNvcmQgcikgeworICAgICAgICBmb3IgKGludCBpPW1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgIFdhaXRSZXN1bHQgdyA9IG1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlLmdldChpKTsKKyAgICAgICAgICAgIHcudGltZW91dCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHcud2hvID0gbmV3IENvbXBvbmVudE5hbWUoci5pbmZvLnBhY2thZ2VOYW1lLCByLmluZm8ubmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3LnRvdGFsVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpIC0gdy50aGlzVGltZTsKKyAgICAgICAgICAgIHcudGhpc1RpbWUgPSB3LnRvdGFsVGltZTsKKyAgICAgICAgfQorICAgICAgICBtU2VydmljZS5ub3RpZnlBbGwoKTsKKyAgICB9CisKKyAgICB2b2lkIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZChpbnQgY2FsbGluZ1VpZCwgQWN0aXZpdHlSZWNvcmQgciwKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwgaW50IHJlc3VsdENvZGUsIEludGVudCBkYXRhKSB7CisKKyAgICAgICAgaWYgKGNhbGxpbmdVaWQgPiAwKSB7CisgICAgICAgICAgICBtU2VydmljZS5ncmFudFVyaVBlcm1pc3Npb25Gcm9tSW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIucGFja2FnZU5hbWUsCisgICAgICAgICAgICAgICAgICAgIGRhdGEsIHIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudihUQUcsICJTZW5kIGFjdGl2aXR5IHJlc3VsdCB0byAiICsgcgorICAgICAgICAgICAgICAgICsgIiA6IHdobz0iICsgcmVzdWx0V2hvICsgIiByZXE9IiArIHJlcXVlc3RDb2RlCisgICAgICAgICAgICAgICAgKyAiIHJlcz0iICsgcmVzdWx0Q29kZSArICIgZGF0YT0iICsgZGF0YSk7CisgICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IHIgJiYgci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBBcnJheUxpc3Q8UmVzdWx0SW5mbz4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8UmVzdWx0SW5mbz4oKTsKKyAgICAgICAgICAgICAgICBsaXN0LmFkZChuZXcgUmVzdWx0SW5mbyhyZXN1bHRXaG8sIHJlcXVlc3RDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29kZSwgZGF0YSkpOworICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVNlbmRSZXN1bHQociwgbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBzZW5kaW5nIHJlc3VsdCB0byAiICsgciwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByLmFkZFJlc3VsdExvY2tlZChudWxsLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLCByZXN1bHRDb2RlLCBkYXRhKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgc3RvcEFjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIpIHsKKyAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy5kKFRBRywgIlN0b3BwaW5nOiAiICsgcik7CisgICAgICAgIGlmICgoci5pbnRlbnQuZ2V0RmxhZ3MoKSZJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19ISVNUT1JZKSAhPSAwCisgICAgICAgICAgICAgICAgfHwgKHIuaW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19OT19ISVNUT1JZKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdEZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJuby1oaXN0b3J5Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICBpZiAobVNlcnZpY2UubUZvY3VzZWRBY3Rpdml0eSA9PSByKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEZvY3VzZWRBY3Rpdml0eUxvY2tlZCh0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHIucmVzdW1lS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgci5zdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuU1RPUFBJTkc7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiU3RvcHBpbmcgdmlzaWJsZT0iICsgci52aXNpYmxlICsgIiBmb3IgIiArIHIpOworICAgICAgICAgICAgICAgIGlmICghci52aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkociwgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVTdG9wQWN0aXZpdHkociwgci52aXNpYmxlLCByLmNvbmZpZ0NoYW5nZUZsYWdzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gTWF5YmUganVzdCBpZ25vcmUgZXhjZXB0aW9ucyBoZXJlLi4uICBpZiB0aGUgcHJvY2VzcworICAgICAgICAgICAgICAgIC8vIGhhcyBjcmFzaGVkLCBvdXIgZGVhdGggbm90aWZpY2F0aW9uIHdpbGwgY2xlYW4gdGhpbmdzCisgICAgICAgICAgICAgICAgLy8gdXAuCisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gZHVyaW5nIHBhdXNlIiwgZSk7CisgICAgICAgICAgICAgICAgLy8gSnVzdCBpbiBjYXNlLCBhc3N1bWUgaXQgdG8gYmUgc3RvcHBlZC4KKyAgICAgICAgICAgICAgICByLnN0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlNUT1BQRUQ7CisgICAgICAgICAgICAgICAgaWYgKHIuY29uZmlnRGVzdHJveSkgeworICAgICAgICAgICAgICAgICAgICBkZXN0cm95QWN0aXZpdHlMb2NrZWQociwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gcHJvY2Vzc1N0b3BwaW5nQWN0aXZpdGllc0xvY2tlZCgKKyAgICAgICAgICAgIGJvb2xlYW4gcmVtb3ZlKSB7CisgICAgICAgIGludCBOID0gbVN0b3BwaW5nQWN0aXZpdGllcy5zaXplKCk7CisgICAgICAgIGlmIChOIDw9IDApIHJldHVybiBudWxsOworCisgICAgICAgIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gc3RvcHMgPSBudWxsOworCisgICAgICAgIGZpbmFsIGJvb2xlYW4gbm93VmlzaWJsZSA9IG1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbAorICAgICAgICAgICAgICAgICYmIG1SZXN1bWVkQWN0aXZpdHkubm93VmlzaWJsZQorICAgICAgICAgICAgICAgICYmICFtUmVzdW1lZEFjdGl2aXR5LndhaXRpbmdWaXNpYmxlOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBzID0gbVN0b3BwaW5nQWN0aXZpdGllcy5nZXQoaSk7CisgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiU3RvcHBpbmcgIiArIHMgKyAiOiBub3dWaXNpYmxlPSIKKyAgICAgICAgICAgICAgICAgICAgKyBub3dWaXNpYmxlICsgIiB3YWl0aW5nVmlzaWJsZT0iICsgcy53YWl0aW5nVmlzaWJsZQorICAgICAgICAgICAgICAgICAgICArICIgZmluaXNoaW5nPSIgKyBzLmZpbmlzaGluZyk7CisgICAgICAgICAgICBpZiAocy53YWl0aW5nVmlzaWJsZSAmJiBub3dWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5yZW1vdmUocyk7CisgICAgICAgICAgICAgICAgcy53YWl0aW5nVmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChzLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIGZpbmlzaGluZywgaXQgaXMgc2l0dGluZyBvbiB0b3Agb2YKKyAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnlvbmUgZWxzZSBidXQgd2Ugbm93IGtub3cgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4uLgorICAgICAgICAgICAgICAgICAgICAvLyBzbyBnZXQgcmlkIG9mIGl0LiAgT3RoZXJ3aXNlLCB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbCBmbG93IGFuZCBoaWRlIGl0IG9uY2Ugd2UgZGV0ZXJtaW5lIHRoYXQgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gaGlkZGVuIGJ5IHRoZSBhY3Rpdml0aWVzIGluIGZyb250IG9mIGl0LgorICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiQmVmb3JlIHN0b3BwaW5nLCBjYW4gaGlkZTogIiArIHMpOworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXMud2FpdGluZ1Zpc2libGUgJiYgcmVtb3ZlKSB7CisgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlJlYWR5IHRvIHN0b3A6ICIgKyBzKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RvcHMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBzdG9wcyA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0b3BzLmFkZChzKTsKKyAgICAgICAgICAgICAgICBtU3RvcHBpbmdBY3Rpdml0aWVzLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICBOLS07CisgICAgICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0b3BzOworICAgIH0KKworICAgIGZpbmFsIHZvaWQgYWN0aXZpdHlJZGxlSW50ZXJuYWwoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBmcm9tVGltZW91dCwKKyAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7CisgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJBY3Rpdml0eSBpZGxlOiAiICsgdG9rZW4pOworCisgICAgICAgIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gc3RvcHMgPSBudWxsOworICAgICAgICBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+IGZpbmlzaGVzID0gbnVsbDsKKyAgICAgICAgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiB0aHVtYm5haWxzID0gbnVsbDsKKyAgICAgICAgaW50IE5TID0gMDsKKyAgICAgICAgaW50IE5GID0gMDsKKyAgICAgICAgaW50IE5UID0gMDsKKyAgICAgICAgSUFwcGxpY2F0aW9uVGhyZWFkIHNlbmRUaHVtYm5haWwgPSBudWxsOworICAgICAgICBib29sZWFuIGJvb3RpbmcgPSBmYWxzZTsKKyAgICAgICAgYm9vbGVhbiBlbmFibGVTY3JlZW4gPSBmYWxzZTsKKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7CisgICAgICAgICAgICBpZiAodG9rZW4gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKElETEVfVElNRU9VVF9NU0csIHRva2VuKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gR2V0IHRoZSBhY3Rpdml0eSByZWNvcmQuCisgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisKKyAgICAgICAgICAgICAgICBpZiAoZnJvbVRpbWVvdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwb3J0QWN0aXZpdHlMYXVuY2hlZExvY2tlZChmcm9tVGltZW91dCwgciwgLTEsIC0xKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gc2VtaS1kZWFsIHdpdGggYSByYWNlIGNvbmRpdGlvbgorICAgICAgICAgICAgICAgIC8vIGluIHRoZSBjbGllbnQgd2hlcmUgaXQgY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggYQorICAgICAgICAgICAgICAgIC8vIG5ld2VyIGNvbmZpZ3VyYXRpb24gZnJvbSB3aGVuIHdlIGFza2VkIGl0IHRvIGxhdW5jaC4KKyAgICAgICAgICAgICAgICAvLyBXZSdsbCB1cGRhdGUgd2l0aCB3aGF0ZXZlciBjb25maWd1cmF0aW9uIGl0IG5vdyBzYXlzCisgICAgICAgICAgICAgICAgLy8gaXQgdXNlZCB0byBsYXVuY2guCisgICAgICAgICAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHIuY29uZmlndXJhdGlvbiA9IGNvbmZpZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gTm8gbG9uZ2VyIG5lZWQgdG8ga2VlcCB0aGUgZGV2aWNlIGF3YWtlLgorICAgICAgICAgICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IHIgJiYgbUxhdW5jaGluZ0FjdGl2aXR5LmlzSGVsZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKExBVU5DSF9USU1FT1VUX01TRyk7CisgICAgICAgICAgICAgICAgICAgIG1MYXVuY2hpbmdBY3Rpdml0eS5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIG5vdyBpZGxlLiAgSWYgc29tZW9uZSBpcyB3YWl0aW5nIGZvciBhIHRodW1ibmFpbCBmcm9tCisgICAgICAgICAgICAgICAgLy8gdXMsIHdlIGNhbiBub3cgZGVsaXZlci4KKyAgICAgICAgICAgICAgICByLmlkbGUgPSB0cnVlOworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNjaGVkdWxlQXBwR2NzTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgaWYgKHIudGh1bWJuYWlsTmVlZGVkICYmIHIuYXBwICE9IG51bGwgJiYgci5hcHAudGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VuZFRodW1ibmFpbCA9IHIuYXBwLnRocmVhZDsKKyAgICAgICAgICAgICAgICAgICAgci50aHVtYm5haWxOZWVkZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIGZ1bGxzY3JlZW4sIHNldCB1cCB0byBoaWRlIHRob3NlIHVuZGVyIGl0LgorCisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KFRBRywgIklkbGUgYWN0aXZpdHkgZm9yICIgKyByKTsKKyAgICAgICAgICAgICAgICBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChudWxsLCAwKTsKKworICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIklETEU6IG1Cb290ZWQ9IiArIG1Cb290ZWQgKyAiLCBmcm9tVGltZW91dD0iICsgZnJvbVRpbWVvdXQpOworICAgICAgICAgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbVNlcnZpY2UubUJvb3RlZCAmJiAhZnJvbVRpbWVvdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1Cb290ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlU2NyZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZnJvbVRpbWVvdXQpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRBY3Rpdml0eUxhdW5jaGVkTG9ja2VkKGZyb21UaW1lb3V0LCBudWxsLCAtMSwgLTEpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBdG9taWNhbGx5IHJldHJpZXZlIGFsbCBvZiB0aGUgb3RoZXIgdGhpbmdzIHRvIGRvLgorICAgICAgICAgICAgc3RvcHMgPSBwcm9jZXNzU3RvcHBpbmdBY3Rpdml0aWVzTG9ja2VkKHRydWUpOworICAgICAgICAgICAgTlMgPSBzdG9wcyAhPSBudWxsID8gc3RvcHMuc2l6ZSgpIDogMDsKKyAgICAgICAgICAgIGlmICgoTkY9bUZpbmlzaGluZ0FjdGl2aXRpZXMuc2l6ZSgpKSA+IDApIHsKKyAgICAgICAgICAgICAgICBmaW5pc2hlcyA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KG1GaW5pc2hpbmdBY3Rpdml0aWVzKTsKKyAgICAgICAgICAgICAgICBtRmluaXNoaW5nQWN0aXZpdGllcy5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChOVD1tU2VydmljZS5tQ2FuY2VsbGVkVGh1bWJuYWlscy5zaXplKCkpID4gMCkgeworICAgICAgICAgICAgICAgIHRodW1ibmFpbHMgPSBuZXcgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPihtU2VydmljZS5tQ2FuY2VsbGVkVGh1bWJuYWlscyk7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubUNhbmNlbGxlZFRodW1ibmFpbHMuY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICBib290aW5nID0gbVNlcnZpY2UubUJvb3Rpbmc7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubUJvb3RpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGludCBpOworCisgICAgICAgIC8vIFNlbmQgdGh1bWJuYWlsIGlmIHJlcXVlc3RlZC4KKyAgICAgICAgaWYgKHNlbmRUaHVtYm5haWwgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBzZW5kVGh1bWJuYWlsLnJlcXVlc3RUaHVtYm5haWwodG9rZW4pOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biB3aGVuIHJlcXVlc3RpbmcgdGh1bWJuYWlsIiwgZSk7CisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2VuZFBlbmRpbmdUaHVtYm5haWwobnVsbCwgdG9rZW4sIG51bGwsIG51bGwsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3RvcCBhbnkgYWN0aXZpdGllcyB0aGF0IGFyZSBzY2hlZHVsZWQgdG8gZG8gc28gYnV0IGhhdmUgYmVlbgorICAgICAgICAvLyB3YWl0aW5nIGZvciB0aGUgbmV4dCBvbmUgdG8gc3RhcnQuCisgICAgICAgIGZvciAoaT0wOyBpPE5TOyBpKyspIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpc3RvcHMuZ2V0KGkpOworICAgICAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZSkgeworICAgICAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQociwgRklOSVNIX0lNTUVESUFURUxZKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdG9wQWN0aXZpdHlMb2NrZWQocik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gRmluaXNoIGFueSBhY3Rpdml0aWVzIHRoYXQgYXJlIHNjaGVkdWxlZCB0byBkbyBzbyBidXQgaGF2ZSBiZWVuCisgICAgICAgIC8vIHdhaXRpbmcgZm9yIHRoZSBuZXh0IG9uZSB0byBzdGFydC4KKyAgICAgICAgZm9yIChpPTA7IGk8TkY7IGkrKykgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZClmaW5pc2hlcy5nZXQoaSk7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgZGVzdHJveUFjdGl2aXR5TG9ja2VkKHIsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmVwb3J0IGJhY2sgdG8gYW55IHRodW1ibmFpbCByZWNlaXZlcnMuCisgICAgICAgIGZvciAoaT0wOyBpPE5UOyBpKyspIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpdGh1bWJuYWlscy5nZXQoaSk7CisgICAgICAgICAgICBtU2VydmljZS5zZW5kUGVuZGluZ1RodW1ibmFpbChyLCBudWxsLCBudWxsLCBudWxsLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChib290aW5nKSB7CisgICAgICAgICAgICBtU2VydmljZS5maW5pc2hCb290aW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBtU2VydmljZS50cmltQXBwbGljYXRpb25zKCk7CisgICAgICAgIC8vZHVtcCgpOworICAgICAgICAvL21XaW5kb3dNYW5hZ2VyLmR1bXAoKTsKKworICAgICAgICBpZiAoZW5hYmxlU2NyZWVuKSB7CisgICAgICAgICAgICBtU2VydmljZS5lbmFibGVTY3JlZW5BZnRlckJvb3QoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEByZXR1cm4gUmV0dXJucyB0cnVlIGlmIHRoZSBhY3Rpdml0eSBpcyBiZWluZyBmaW5pc2hlZCwgZmFsc2UgaWYgZm9yCisgICAgICogc29tZSByZWFzb24gaXQgaXMgYmVpbmcgbGVmdCBhcy1pcy4KKyAgICAgKi8KKyAgICBmaW5hbCBib29sZWFuIHJlcXVlc3RGaW5pc2hBY3Rpdml0eUxvY2tlZChJQmluZGVyIHRva2VuLCBpbnQgcmVzdWx0Q29kZSwKKyAgICAgICAgICAgIEludGVudCByZXN1bHREYXRhLCBTdHJpbmcgcmVhc29uKSB7CisgICAgICAgIGlmIChERUJVR19SRVNVTFRTKSBTbG9nLnYoCisgICAgICAgICAgICBUQUcsICJGaW5pc2hpbmcgYWN0aXZpdHk6IHRva2VuPSIgKyB0b2tlbgorICAgICAgICAgICAgKyAiLCByZXN1bHQ9IiArIHJlc3VsdENvZGUgKyAiLCBkYXRhPSIgKyByZXN1bHREYXRhKTsKKworICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOworCisgICAgICAgIC8vIElzIHRoaXMgdGhlIGxhc3QgYWN0aXZpdHkgbGVmdD8KKyAgICAgICAgYm9vbGVhbiBsYXN0QWN0aXZpdHkgPSB0cnVlOworICAgICAgICBmb3IgKGludCBpPW1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHAgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKCFwLmZpbmlzaGluZyAmJiBwICE9IHIpIHsKKyAgICAgICAgICAgICAgICBsYXN0QWN0aXZpdHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgbGFzdCBhY3Rpdml0eSwgYnV0IGl0IGlzIHRoZSBob21lIGFjdGl2aXR5LCB0aGVuCisgICAgICAgIC8vIGp1c3QgZG9uJ3QgZmluaXNoIGl0LgorICAgICAgICBpZiAobGFzdEFjdGl2aXR5KSB7CisgICAgICAgICAgICBpZiAoci5pbnRlbnQuaGFzQ2F0ZWdvcnkoSW50ZW50LkNBVEVHT1JZX0hPTUUpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpbmRleCwgcmVzdWx0Q29kZSwgcmVzdWx0RGF0YSwgcmVhc29uKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHJldHVybiBSZXR1cm5zIHRydWUgaWYgdGhpcyBhY3Rpdml0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGhpc3RvcnkKKyAgICAgKiBsaXN0LCBvciBmYWxzZSBpZiBpdCBpcyBzdGlsbCBpbiB0aGUgbGlzdCBhbmQgd2lsbCBiZSByZW1vdmVkIGxhdGVyLgorICAgICAqLworICAgIGZpbmFsIGJvb2xlYW4gZmluaXNoQWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgciwgaW50IGluZGV4LAorICAgICAgICAgICAgaW50IHJlc3VsdENvZGUsIEludGVudCByZXN1bHREYXRhLCBTdHJpbmcgcmVhc29uKSB7CisgICAgICAgIGlmIChyLmZpbmlzaGluZykgeworICAgICAgICAgICAgU2xvZy53KFRBRywgIkR1cGxpY2F0ZSBmaW5pc2ggcmVxdWVzdCBmb3IgIiArIHIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgci5maW5pc2hpbmcgPSB0cnVlOworICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9GSU5JU0hfQUNUSVZJVFksCisgICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksCisgICAgICAgICAgICAgICAgci50YXNrLnRhc2tJZCwgci5zaG9ydENvbXBvbmVudE5hbWUsIHJlYXNvbik7CisgICAgICAgIHIudGFzay5udW1BY3Rpdml0aWVzLS07CisgICAgICAgIGlmIChpbmRleCA8IChtSGlzdG9yeS5zaXplKCktMSkpIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5leHQgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KzEpOworICAgICAgICAgICAgaWYgKG5leHQudGFzayA9PSByLnRhc2spIHsKKyAgICAgICAgICAgICAgICBpZiAoci5mcm9udE9mVGFzaykgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBhY3Rpdml0eSBpcyBub3cgdGhlIGZyb250IG9mIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICBuZXh0LmZyb250T2ZUYXNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKChyLmludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1dIRU5fVEFTS19SRVNFVCkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGFza2VkIHRoYXQgdGhpcyBhY3Rpdml0eSAoYW5kIGFsbCBhYm92ZSBpdCkKKyAgICAgICAgICAgICAgICAgICAgLy8gYmUgY2xlYXJlZCB3aGVuIHRoZSB0YXNrIGlzIHJlc2V0LCBkb24ndCBsb3NlIHRoYXQgaW5mb3JtYXRpb24sCisgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBwcm9wYWdhdGUgaXQgdXAgdG8gdGhlIG5leHQgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgIG5leHQuaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1dIRU5fVEFTS19SRVNFVCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgci5wYXVzZUtleURpc3BhdGNoaW5nTG9ja2VkKCk7CisgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICBpZiAobVNlcnZpY2UubUZvY3VzZWRBY3Rpdml0eSA9PSByKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0Rm9jdXNlZEFjdGl2aXR5TG9ja2VkKHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBzZW5kIHRoZSByZXN1bHQKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgcmVzdWx0VG8gPSByLnJlc3VsdFRvOworICAgICAgICBpZiAocmVzdWx0VG8gIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudihUQUcsICJBZGRpbmcgcmVzdWx0IHRvICIgKyByZXN1bHRUbworICAgICAgICAgICAgICAgICAgICArICIgd2hvPSIgKyByLnJlc3VsdFdobyArICIgcmVxPSIgKyByLnJlcXVlc3RDb2RlCisgICAgICAgICAgICAgICAgICAgICsgIiByZXM9IiArIHJlc3VsdENvZGUgKyAiIGRhdGE9IiArIHJlc3VsdERhdGEpOworICAgICAgICAgICAgaWYgKHIuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkID4gMCkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmdyYW50VXJpUGVybWlzc2lvbkZyb21JbnRlbnRMb2NrZWQoci5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQsCisgICAgICAgICAgICAgICAgICAgICAgICByLnBhY2thZ2VOYW1lLCByZXN1bHREYXRhLCByKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdFRvLmFkZFJlc3VsdExvY2tlZChyLCByLnJlc3VsdFdobywgci5yZXF1ZXN0Q29kZSwgcmVzdWx0Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHREYXRhKTsKKyAgICAgICAgICAgIHIucmVzdWx0VG8gPSBudWxsOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudihUQUcsICJObyByZXN1bHQgZGVzdGluYXRpb24gZnJvbSAiICsgcik7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoaXMgSGlzdG9yeVJlY29yZCBpcyBub3QgaG9sZGluZyBvbiB0byBvdGhlciByZXNvdXJjZXMsCisgICAgICAgIC8vIGJlY2F1c2UgY2xpZW50cyBoYXZlIHJlbW90ZSBJUEMgcmVmZXJlbmNlcyB0byB0aGlzIG9iamVjdCBzbyB3ZQorICAgICAgICAvLyBjYW4ndCBhc3N1bWUgdGhhdCB3aWxsIGdvIGF3YXkgYW5kIHdhbnQgdG8gYXZvaWQgY2lyY3VsYXIgSVBDIHJlZnMuCisgICAgICAgIHIucmVzdWx0cyA9IG51bGw7CisgICAgICAgIHIucGVuZGluZ1Jlc3VsdHMgPSBudWxsOworICAgICAgICByLm5ld0ludGVudHMgPSBudWxsOworICAgICAgICByLmljaWNsZSA9IG51bGw7CisgICAgICAgIAorICAgICAgICBpZiAobVNlcnZpY2UubVBlbmRpbmdUaHVtYm5haWxzLnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBjbGllbnRzIHdhaXRpbmcgdG8gcmVjZWl2ZSB0aHVtYm5haWxzIHNvLCBpbiBjYXNlCisgICAgICAgICAgICAvLyB0aGlzIGlzIGFuIGFjdGl2aXR5IHRoYXQgc29tZW9uZSBpcyB3YWl0aW5nIGZvciwgYWRkIGl0CisgICAgICAgICAgICAvLyB0byB0aGUgcGVuZGluZyBsaXN0IHNvIHdlIGNhbiBjb3JyZWN0bHkgdXBkYXRlIHRoZSBjbGllbnRzLgorICAgICAgICAgICAgbVNlcnZpY2UubUNhbmNlbGxlZFRodW1ibmFpbHMuYWRkKHIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gcikgeworICAgICAgICAgICAgYm9vbGVhbiBlbmRUYXNrID0gaW5kZXggPD0gMAorICAgICAgICAgICAgICAgICAgICB8fCAoKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleC0xKSkudGFzayAhPSByLnRhc2s7CisgICAgICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgIlByZXBhcmUgY2xvc2UgdHJhbnNpdGlvbjogZmluaXNoaW5nICIgKyByKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKGVuZFRhc2sKKyAgICAgICAgICAgICAgICAgICAgPyBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19DTE9TRQorICAgICAgICAgICAgICAgICAgICA6IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9DTE9TRSk7CisgICAgCisgICAgICAgICAgICAvLyBUZWxsIHdpbmRvdyBtYW5hZ2VyIHRvIHByZXBhcmUgZm9yIHRoaXMgb25lIHRvIGJlIHJlbW92ZWQuCisgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJGaW5pc2ggbmVlZHMgdG8gcGF1c2U6ICIgKyByKTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHLCAiZmluaXNoKCkgPT4gcGF1c2Ugd2l0aCB1c2VyTGVhdmluZz1mYWxzZSIpOworICAgICAgICAgICAgICAgIHN0YXJ0UGF1c2luZ0xvY2tlZChmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoci5zdGF0ZSAhPSBBY3Rpdml0eVN0YXRlLlBBVVNJTkcpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBpcyBQQVVTSU5HLCB3ZSB3aWxsIGNvbXBsZXRlIHRoZSBmaW5pc2ggb25jZQorICAgICAgICAgICAgLy8gaXQgaXMgZG9uZSBwYXVzaW5nOyBlbHNlIHdlIGNhbiBqdXN0IGRpcmVjdGx5IGZpbmlzaCBpdCBoZXJlLgorICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiRmluaXNoIG5vdCBwYXVzaW5nOiAiICsgcik7CisgICAgICAgICAgICByZXR1cm4gZmluaXNoQ3VycmVudEFjdGl2aXR5TG9ja2VkKHIsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICBGSU5JU0hfQUZURVJfUEFVU0UpID09IG51bGw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJGaW5pc2ggd2FpdGluZyBmb3IgcGF1c2Ugb2Y6ICIgKyByKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklOSVNIX0lNTUVESUFURUxZID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklOSVNIX0FGVEVSX1BBVVNFID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklOSVNIX0FGVEVSX1ZJU0lCTEUgPSAyOworCisgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eVJlY29yZCBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgciwKKyAgICAgICAgICAgIGludCBtb2RlKSB7CisgICAgICAgIGZpbmFsIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZChyKTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmluaXNoQ3VycmVudEFjdGl2aXR5TG9ja2VkKHIsIGluZGV4LCBtb2RlKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIEFjdGl2aXR5UmVjb3JkIGZpbmlzaEN1cnJlbnRBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgaW50IGluZGV4LCBpbnQgbW9kZSkgeworICAgICAgICAvLyBGaXJzdCB0aGluZ3MgZmlyc3Q6IGlmIHRoaXMgYWN0aXZpdHkgaXMgY3VycmVudGx5IHZpc2libGUsCisgICAgICAgIC8vIGFuZCB0aGUgcmVzdW1lZCBhY3Rpdml0eSBpcyBub3QgeWV0IHZpc2libGUsIHRoZW4gaG9sZCBvZmYgb24KKyAgICAgICAgLy8gZmluaXNoaW5nIHVudGlsIHRoZSByZXN1bWVkIG9uZSBiZWNvbWVzIHZpc2libGUuCisgICAgICAgIGlmIChtb2RlID09IEZJTklTSF9BRlRFUl9WSVNJQkxFICYmIHIubm93VmlzaWJsZSkgeworICAgICAgICAgICAgaWYgKCFtU3RvcHBpbmdBY3Rpdml0aWVzLmNvbnRhaW5zKHIpKSB7CisgICAgICAgICAgICAgICAgbVN0b3BwaW5nQWN0aXZpdGllcy5hZGQocik7CisgICAgICAgICAgICAgICAgaWYgKG1TdG9wcGluZ0FjdGl2aXRpZXMuc2l6ZSgpID4gMykgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBmZXcgYWN0aXZpdGllcyB3YWl0aW5nIHRvIHN0b3AsCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gZ2l2ZSB1cCBvbiB0aGluZ3MgZ29pbmcgaWRsZSBhbmQgc3RhcnQgY2xlYXJpbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlbSBvdXQuCisgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4oKTsKKyAgICAgICAgICAgICAgICAgICAgbXNnLndoYXQgPSBJRExFX05PV19NU0c7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuU1RPUFBJTkc7CisgICAgICAgICAgICBtU2VydmljZS51cGRhdGVPb21BZGpMb2NrZWQoKTsKKyAgICAgICAgICAgIHJldHVybiByOworICAgICAgICB9CisKKyAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSByZWNvcmQgaXMgY2xlYW5lZCBvdXQgb2Ygb3RoZXIgcGxhY2VzLgorICAgICAgICBtU3RvcHBpbmdBY3Rpdml0aWVzLnJlbW92ZShyKTsKKyAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5yZW1vdmUocik7CisgICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IHIpIHsKKyAgICAgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhdGUgcHJldlN0YXRlID0gci5zdGF0ZTsKKyAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuRklOSVNISU5HOworCisgICAgICAgIGlmIChtb2RlID09IEZJTklTSF9JTU1FRElBVEVMWQorICAgICAgICAgICAgICAgIHx8IHByZXZTdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlNUT1BQRUQKKyAgICAgICAgICAgICAgICB8fCBwcmV2U3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5JTklUSUFMSVpJTkcpIHsKKyAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgYWxyZWFkeSBzdG9wcGVkLCB3ZSBjYW4ganVzdCBmaW5pc2gKKyAgICAgICAgICAgIC8vIGl0IHJpZ2h0IG5vdy4KKyAgICAgICAgICAgIHJldHVybiBkZXN0cm95QWN0aXZpdHlMb2NrZWQociwgdHJ1ZSkgPyBudWxsIDogcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgZnVsbCBwYXVzZSBjeWNsZSB0byBnZXQgdGhpcworICAgICAgICAgICAgLy8gYWN0aXZpdHkgaW50byB0aGUgc3RvcHBlZCBzdGF0ZSBhbmQgdGhlbiBmaW5pc2ggaXQuCisgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiRW5xdWV1ZWluZyBwZW5kaW5nIGZpbmlzaDogIiArIHIpOworICAgICAgICAgICAgbUZpbmlzaGluZ0FjdGl2aXRpZXMuYWRkKHIpOworICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSB0aGUgY29tbW9uIGNsZWFuLXVwIG9mIGFuIGFjdGl2aXR5IHJlY29yZC4gIFRoaXMgaXMgY2FsbGVkIGJvdGgKKyAgICAgKiBhcyBwYXJ0IG9mIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZCgpICh3aGVuIGRlc3Ryb3lpbmcgdGhlIGNsaWVudC1zaWRlCisgICAgICogcmVwcmVzZW50YXRpb24pIGFuZCBjbGVhbmluZyB0aGluZ3MgdXAgYXMgYSByZXN1bHQgb2YgaXRzIGhvc3RpbmcKKyAgICAgKiBwcm9jZXNzaW5nIGdvaW5nIGF3YXksIGluIHdoaWNoIGNhc2UgdGhlcmUgaXMgbm8gcmVtYWluaW5nIGNsaWVudC1zaWRlCisgICAgICogc3RhdGUgdG8gZGVzdHJveSBzbyBvbmx5IHRoZSBjbGVhbnVwIGhlcmUgaXMgbmVlZGVkLgorICAgICAqLworICAgIGZpbmFsIHZvaWQgY2xlYW5VcEFjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIsIGJvb2xlYW4gY2xlYW5TZXJ2aWNlcykgeworICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSByKSB7CisgICAgICAgICAgICBtUmVzdW1lZEFjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobVNlcnZpY2UubUZvY3VzZWRBY3Rpdml0eSA9PSByKSB7CisgICAgICAgICAgICBtU2VydmljZS5tRm9jdXNlZEFjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHIuY29uZmlnRGVzdHJveSA9IGZhbHNlOworICAgICAgICByLmZyb3plbkJlZm9yZURlc3Ryb3kgPSBmYWxzZTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhpcyByZWNvcmQgaXMgbm8gbG9uZ2VyIGluIHRoZSBwZW5kaW5nIGZpbmlzaGVzIGxpc3QuCisgICAgICAgIC8vIFRoaXMgY291bGQgaGFwcGVuLCBmb3IgZXhhbXBsZSwgaWYgd2UgYXJlIHRyaW1taW5nIGFjdGl2aXRpZXMKKyAgICAgICAgLy8gZG93biB0byB0aGUgbWF4IGxpbWl0IHdoaWxlIHRoZXkgYXJlIHN0aWxsIHdhaXRpbmcgdG8gZmluaXNoLgorICAgICAgICBtRmluaXNoaW5nQWN0aXZpdGllcy5yZW1vdmUocik7CisgICAgICAgIG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMucmVtb3ZlKHIpOworICAgICAgICAKKyAgICAgICAgLy8gUmVtb3ZlIGFueSBwZW5kaW5nIHJlc3VsdHMuCisgICAgICAgIGlmIChyLmZpbmlzaGluZyAmJiByLnBlbmRpbmdSZXN1bHRzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZvciAoV2Vha1JlZmVyZW5jZTxQZW5kaW5nSW50ZW50UmVjb3JkPiBhcHIgOiByLnBlbmRpbmdSZXN1bHRzKSB7CisgICAgICAgICAgICAgICAgUGVuZGluZ0ludGVudFJlY29yZCByZWMgPSBhcHIuZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKHJlYyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmNhbmNlbEludGVudFNlbmRlckxvY2tlZChyZWMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByLnBlbmRpbmdSZXN1bHRzID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjbGVhblNlcnZpY2VzKSB7CisgICAgICAgICAgICBjbGVhblVwQWN0aXZpdHlTZXJ2aWNlc0xvY2tlZChyKTsgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU2VydmljZS5tUGVuZGluZ1RodW1ibmFpbHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGNsaWVudHMgd2FpdGluZyB0byByZWNlaXZlIHRodW1ibmFpbHMgc28sIGluIGNhc2UKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgYW4gYWN0aXZpdHkgdGhhdCBzb21lb25lIGlzIHdhaXRpbmcgZm9yLCBhZGQgaXQKKyAgICAgICAgICAgIC8vIHRvIHRoZSBwZW5kaW5nIGxpc3Qgc28gd2UgY2FuIGNvcnJlY3RseSB1cGRhdGUgdGhlIGNsaWVudHMuCisgICAgICAgICAgICBtU2VydmljZS5tQ2FuY2VsbGVkVGh1bWJuYWlscy5hZGQocik7CisgICAgICAgIH0KKworICAgICAgICAvLyBHZXQgcmlkIG9mIGFueSBwZW5kaW5nIGlkbGUgdGltZW91dHMuCisgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFBBVVNFX1RJTUVPVVRfTVNHLCByKTsKKyAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoSURMRV9USU1FT1VUX01TRywgcik7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHJlbW92ZUFjdGl2aXR5RnJvbUhpc3RvcnlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgcikgeworICAgICAgICBpZiAoci5zdGF0ZSAhPSBBY3Rpdml0eVN0YXRlLkRFU1RST1lFRCkgeworICAgICAgICAgICAgbUhpc3RvcnkucmVtb3ZlKHIpOworICAgICAgICAgICAgci5pbkhpc3RvcnkgPSBmYWxzZTsKKyAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLkRFU1RST1lFRDsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnJlbW92ZUFwcFRva2VuKHIpOworICAgICAgICAgICAgaWYgKFZBTElEQVRFX1RPS0VOUykgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNsZWFuVXBBY3Rpdml0eVNlcnZpY2VzTG9ja2VkKHIpOworICAgICAgICAgICAgci5yZW1vdmVVcmlQZXJtaXNzaW9uc0xvY2tlZCgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFBlcmZvcm0gY2xlYW4tdXAgb2Ygc2VydmljZSBjb25uZWN0aW9ucyBpbiBhbiBhY3Rpdml0eSByZWNvcmQuCisgICAgICovCisgICAgZmluYWwgdm9pZCBjbGVhblVwQWN0aXZpdHlTZXJ2aWNlc0xvY2tlZChBY3Rpdml0eVJlY29yZCByKSB7CisgICAgICAgIC8vIFRocm93IGF3YXkgYW55IHNlcnZpY2VzIHRoYXQgaGF2ZSBiZWVuIGJvdW5kIGJ5IHRoaXMgYWN0aXZpdHkuCisgICAgICAgIGlmIChyLmNvbm5lY3Rpb25zICE9IG51bGwpIHsKKyAgICAgICAgICAgIEl0ZXJhdG9yPENvbm5lY3Rpb25SZWNvcmQ+IGl0ID0gci5jb25uZWN0aW9ucy5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIENvbm5lY3Rpb25SZWNvcmQgYyA9IGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5yZW1vdmVDb25uZWN0aW9uTG9ja2VkKGMsIG51bGwsIHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgci5jb25uZWN0aW9ucyA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRGVzdHJveSB0aGUgY3VycmVudCBDTElFTlQgU0lERSBpbnN0YW5jZSBvZiBhbiBhY3Rpdml0eS4gIFRoaXMgbWF5IGJlCisgICAgICogY2FsbGVkIGJvdGggd2hlbiBhY3R1YWxseSBmaW5pc2hpbmcgYW4gYWN0aXZpdHksIG9yIHdoZW4gcGVyZm9ybWluZworICAgICAqIGEgY29uZmlndXJhdGlvbiBzd2l0Y2ggd2hlcmUgd2UgZGVzdHJveSB0aGUgY3VycmVudCBjbGllbnQtc2lkZSBvYmplY3QKKyAgICAgKiBidXQgdGhlbiBjcmVhdGUgYSBuZXcgY2xpZW50LXNpZGUgb2JqZWN0IGZvciB0aGlzIHNhbWUgSGlzdG9yeVJlY29yZC4KKyAgICAgKi8KKyAgICBmaW5hbCBib29sZWFuIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgYm9vbGVhbiByZW1vdmVGcm9tQXBwKSB7CisgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudigKKyAgICAgICAgICAgIFRBRywgIlJlbW92aW5nIGFjdGl2aXR5OiB0b2tlbj0iICsgcgorICAgICAgICAgICAgICArICIsIGFwcD0iICsgKHIuYXBwICE9IG51bGwgPyByLmFwcC5wcm9jZXNzTmFtZSA6ICIobnVsbCkiKSk7CisgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX0RFU1RST1lfQUNUSVZJVFksCisgICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksCisgICAgICAgICAgICAgICAgci50YXNrLnRhc2tJZCwgci5zaG9ydENvbXBvbmVudE5hbWUpOworCisgICAgICAgIGJvb2xlYW4gcmVtb3ZlZEZyb21IaXN0b3J5ID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBjbGVhblVwQWN0aXZpdHlMb2NrZWQociwgZmFsc2UpOworCisgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFkQXBwID0gci5hcHAgIT0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIGlmIChoYWRBcHApIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVGcm9tQXBwKSB7CisgICAgICAgICAgICAgICAgaW50IGlkeCA9IHIuYXBwLmFjdGl2aXRpZXMuaW5kZXhPZihyKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgci5hcHAuYWN0aXZpdGllcy5yZW1vdmUoaWR4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MgPT0gci5hcHAgJiYgci5hcHAuYWN0aXZpdGllcy5zaXplKCkgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tSGVhdnlXZWlnaHRQcm9jZXNzID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkNBTkNFTF9IRUFWWV9OT1RJRklDQVRJT05fTVNHKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHIucGVyc2lzdGVudCkgeworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5kZWNQZXJzaXN0ZW50Q291bnRMb2NrZWQoci5hcHApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoci5hcHAuYWN0aXZpdGllcy5zaXplKCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBObyBsb25nZXIgaGF2ZSBhY3Rpdml0aWVzLCBzbyB1cGRhdGUgbG9jYXRpb24gaW4KKyAgICAgICAgICAgICAgICAgICAgLy8gTFJVIGxpc3QuCisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUxydVByb2Nlc3NMb2NrZWQoci5hcHAsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2xlYW4gc2tpcERlc3Ryb3kgPSBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLmkoVEFHLCAiRGVzdHJveWluZzogIiArIHIpOworICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZURlc3Ryb3lBY3Rpdml0eShyLCByLmZpbmlzaGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIHIuY29uZmlnQ2hhbmdlRmxhZ3MpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBjYW4ganVzdCBpZ25vcmUgZXhjZXB0aW9ucyBoZXJlLi4uICBpZiB0aGUgcHJvY2VzcworICAgICAgICAgICAgICAgIC8vIGhhcyBjcmFzaGVkLCBvdXIgZGVhdGggbm90aWZpY2F0aW9uIHdpbGwgY2xlYW4gdGhpbmdzCisgICAgICAgICAgICAgICAgLy8gdXAuCisgICAgICAgICAgICAgICAgLy9TbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBkdXJpbmcgZmluaXNoIiwgZSk7CisgICAgICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZUFjdGl2aXR5RnJvbUhpc3RvcnlMb2NrZWQocik7CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRGcm9tSGlzdG9yeSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHNraXBEZXN0cm95ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHIuYXBwID0gbnVsbDsKKyAgICAgICAgICAgIHIubm93VmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoci5maW5pc2hpbmcgJiYgIXNraXBEZXN0cm95KSB7CisgICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuREVTVFJPWUlORzsKKyAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoREVTVFJPWV9USU1FT1VUX01TRyk7CisgICAgICAgICAgICAgICAgbXNnLm9iaiA9IHI7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG1zZywgREVTVFJPWV9USU1FT1VUKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuREVTVFJPWUVEOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gcmVtb3ZlIHRoaXMgcmVjb3JkIGZyb20gdGhlIGhpc3RvcnkuCisgICAgICAgICAgICBpZiAoci5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICByZW1vdmVBY3Rpdml0eUZyb21IaXN0b3J5TG9ja2VkKHIpOworICAgICAgICAgICAgICAgIHJlbW92ZWRGcm9tSGlzdG9yeSA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLkRFU1RST1lFRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHIuY29uZmlnQ2hhbmdlRmxhZ3MgPSAwOworICAgICAgICAKKyAgICAgICAgaWYgKCFtTFJVQWN0aXZpdGllcy5yZW1vdmUocikgJiYgaGFkQXBwKSB7CisgICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgIiArIHIgKyAiIGJlaW5nIGZpbmlzaGVkLCBidXQgbm90IGluIExSVSBsaXN0Iik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZW1vdmVkRnJvbUhpc3Rvcnk7CisgICAgfQorCisgICAgZmluYWwgdm9pZCBhY3Rpdml0eURlc3Ryb3llZChJQmluZGVyIHRva2VuKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKERFU1RST1lfVElNRU9VVF9NU0csIHRva2VuKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChyLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuREVTVFJPWUlORykgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOworICAgICAgICAgICAgICAgICAgICByZW1vdmVBY3Rpdml0eUZyb21IaXN0b3J5TG9ja2VkKHIpOworICAgICAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHJlbW92ZUhpc3RvcnlSZWNvcmRzRm9yQXBwTG9ja2VkKEFycmF5TGlzdCBsaXN0LCBQcm9jZXNzUmVjb3JkIGFwcCkgeworICAgICAgICBpbnQgaSA9IGxpc3Quc2l6ZSgpOworICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCisgICAgICAgICAgICBUQUcsICJSZW1vdmluZyBhcHAgIiArIGFwcCArICIgZnJvbSBsaXN0ICIgKyBsaXN0CisgICAgICAgICAgICArICIgd2l0aCAiICsgaSArICIgZW50cmllcyIpOworICAgICAgICB3aGlsZSAoaSA+IDApIHsKKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbGlzdC5nZXQoaSk7CisgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgVEFHLCAiUmVjb3JkICMiICsgaSArICIgIiArIHIgKyAiOiBhcHA9IiArIHIuYXBwKTsKKyAgICAgICAgICAgIGlmIChyLmFwcCA9PSBhcHApIHsKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUmVtb3ZpbmcgdGhpcyBlbnRyeSEiKTsKKyAgICAgICAgICAgICAgICBsaXN0LnJlbW92ZShpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHApIHsKKyAgICAgICAgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQobUxSVUFjdGl2aXRpZXMsIGFwcCk7CisgICAgICAgIHJlbW92ZUhpc3RvcnlSZWNvcmRzRm9yQXBwTG9ja2VkKG1TdG9wcGluZ0FjdGl2aXRpZXMsIGFwcCk7CisgICAgICAgIHJlbW92ZUhpc3RvcnlSZWNvcmRzRm9yQXBwTG9ja2VkKG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMsIGFwcCk7CisgICAgICAgIHJlbW92ZUhpc3RvcnlSZWNvcmRzRm9yQXBwTG9ja2VkKG1GaW5pc2hpbmdBY3Rpdml0aWVzLCBhcHApOworICAgIH0KKyAgICAKKyAgICBmaW5hbCB2b2lkIG1vdmVUYXNrVG9Gcm9udExvY2tlZChUYXNrUmVjb3JkIHRyLCBBY3Rpdml0eVJlY29yZCByZWFzb24pIHsKKyAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIm1vdmVUYXNrVG9Gcm9udDogIiArIHRyKTsKKworICAgICAgICBmaW5hbCBpbnQgdGFzayA9IHRyLnRhc2tJZDsKKyAgICAgICAgaW50IHRvcCA9IG1IaXN0b3J5LnNpemUoKS0xOworCisgICAgICAgIGlmICh0b3AgPCAwIHx8ICgoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KHRvcCkpLnRhc2sudGFza0lkID09IHRhc2spIHsKKyAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8hCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBcnJheUxpc3QgbW92ZWQgPSBuZXcgQXJyYXlMaXN0KCk7CisKKyAgICAgICAgLy8gQXBwbHlpbmcgdGhlIGFmZmluaXRpZXMgbWF5IGhhdmUgcmVtb3ZlZCBlbnRyaWVzIGZyb20gdGhlIGhpc3RvcnksCisgICAgICAgIC8vIHNvIGdldCB0aGUgc2l6ZSBhZ2Fpbi4KKyAgICAgICAgdG9wID0gbUhpc3Rvcnkuc2l6ZSgpLTE7CisgICAgICAgIGludCBwb3MgPSB0b3A7CisKKyAgICAgICAgLy8gU2hpZnQgYWxsIGFjdGl2aXRpZXMgd2l0aCB0aGlzIHRhc2sgdXAgdG8gdGhlIHRvcAorICAgICAgICAvLyBvZiB0aGUgc3RhY2ssIGtlZXBpbmcgdGhlbSBpbiB0aGUgc2FtZSBpbnRlcm5hbCBvcmRlci4KKyAgICAgICAgd2hpbGUgKHBvcyA+PSAwKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChwb3MpOworICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAorICAgICAgICAgICAgICAgIFRBRywgIkF0ICIgKyBwb3MgKyAiIGNrcCAiICsgci50YXNrICsgIjogIiArIHIpOworICAgICAgICAgICAgYm9vbGVhbiBmaXJzdCA9IHRydWU7CisgICAgICAgICAgICBpZiAoci50YXNrLnRhc2tJZCA9PSB0YXNrKSB7CisgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlJlbW92aW5nIGFuZCBhZGRpbmcgYXQgIiArIHRvcCk7CisgICAgICAgICAgICAgICAgbUhpc3RvcnkucmVtb3ZlKHBvcyk7CisgICAgICAgICAgICAgICAgbUhpc3RvcnkuYWRkKHRvcCwgcik7CisgICAgICAgICAgICAgICAgbW92ZWQuYWRkKDAsIHIpOworICAgICAgICAgICAgICAgIHRvcC0tOworICAgICAgICAgICAgICAgIGlmIChmaXJzdCAmJiBtTWFpblN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmFkZFJlY2VudFRhc2tMb2NrZWQoci50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwb3MtLTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChERUJVR19UUkFOU0lUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICJQcmVwYXJlIHRvIGZyb250IHRyYW5zaXRpb246IHRhc2s9IiArIHRyKTsKKyAgICAgICAgaWYgKHJlYXNvbiAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgKHJlYXNvbi5pbnRlbnQuZ2V0RmxhZ3MoKSZJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19BTklNQVRJT04pICE9IDApIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICBpZiAociAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuYWRkKHIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfVE9fRlJPTlQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5tb3ZlQXBwVG9rZW5zVG9Ub3AobW92ZWQpOworICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7CisgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5pc2hUYXNrTW92ZUxvY2tlZCh0YXNrKTsKKyAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fVEFTS19UT19GUk9OVCwgdGFzayk7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGZpbmlzaFRhc2tNb3ZlTG9ja2VkKGludCB0YXNrKSB7CisgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFdvcmtlciBtZXRob2QgZm9yIHJlYXJyYW5naW5nIGhpc3Rvcnkgc3RhY2suICBJbXBsZW1lbnRzIHRoZSBmdW5jdGlvbiBvZiBtb3ZpbmcgYWxsIAorICAgICAqIGFjdGl2aXRpZXMgZm9yIGEgc3BlY2lmaWMgdGFzayAoZ2F0aGVyaW5nIHRoZW0gaWYgZGlzam9pbnQpIGludG8gYSBzaW5nbGUgZ3JvdXAgYXQgdGhlIAorICAgICAqIGJvdHRvbSBvZiB0aGUgc3RhY2suCisgICAgICogCisgICAgICogSWYgYSB3YXRjaGVyIGlzIGluc3RhbGxlZCwgdGhlIGFjdGlvbiBpcyBwcmVmbGlnaHRlZCBhbmQgdGhlIHdhdGNoZXIgaGFzIGFuIG9wcG9ydHVuaXR5CisgICAgICogdG8gcHJlbWVwdGl2ZWx5IGNhbmNlbCB0aGUgbW92ZS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gdGFzayBUaGUgdGFza0lkIHRvIGNvbGxlY3QgYW5kIG1vdmUgdG8gdGhlIGJvdHRvbS4KKyAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGUgbW92ZSBjb21wbGV0ZWQsIGZhbHNlIGlmIG5vdC4KKyAgICAgKi8KKyAgICBmaW5hbCBib29sZWFuIG1vdmVUYXNrVG9CYWNrTG9ja2VkKGludCB0YXNrLCBBY3Rpdml0eVJlY29yZCByZWFzb24pIHsKKyAgICAgICAgU2xvZy5pKFRBRywgIm1vdmVUYXNrVG9CYWNrOiAiICsgdGFzayk7CisgICAgICAgIAorICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgd2F0Y2hlciwgcHJlZmxpZ2h0IHRoZSBtb3ZlIGJlZm9yZSBjb21taXR0aW5nIHRvIGl0LiAgRmlyc3QgY2hlY2sKKyAgICAgICAgLy8gZm9yICpvdGhlciogYXZhaWxhYmxlIHRhc2tzLCBidXQgaWYgbm9uZSBhcmUgYXZhaWxhYmxlLCB0aGVuIHRyeSBhZ2FpbiBhbGxvd2luZyB0aGUKKyAgICAgICAgLy8gY3VycmVudCB0YXNrIHRvIGJlIHNlbGVjdGVkLgorICAgICAgICBpZiAobU1haW5TdGFjayAmJiBtU2VydmljZS5tQ29udHJvbGxlciAhPSBudWxsKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBuZXh0ID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwsIHRhc2spOworICAgICAgICAgICAgaWYgKG5leHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG5leHQgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobmV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gYXNrIHdhdGNoZXIgaWYgdGhpcyBpcyBhbGxvd2VkCisgICAgICAgICAgICAgICAgYm9vbGVhbiBtb3ZlT0sgPSB0cnVlOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1vdmVPSyA9IG1TZXJ2aWNlLm1Db250cm9sbGVyLmFjdGl2aXR5UmVzdW1pbmcobmV4dC5wYWNrYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubUNvbnRyb2xsZXIgPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIW1vdmVPSykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQXJyYXlMaXN0IG1vdmVkID0gbmV3IEFycmF5TGlzdCgpOworCisgICAgICAgIGlmIChERUJVR19UUkFOU0lUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICJQcmVwYXJlIHRvIGJhY2sgdHJhbnNpdGlvbjogdGFzaz0iICsgdGFzayk7CisgICAgICAgIAorICAgICAgICBmaW5hbCBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgaW50IGJvdHRvbSA9IDA7CisgICAgICAgIGludCBwb3MgPSAwOworCisgICAgICAgIC8vIFNoaWZ0IGFsbCBhY3Rpdml0aWVzIHdpdGggdGhpcyB0YXNrIGRvd24gdG8gdGhlIGJvdHRvbQorICAgICAgICAvLyBvZiB0aGUgc3RhY2ssIGtlZXBpbmcgdGhlbSBpbiB0aGUgc2FtZSBpbnRlcm5hbCBvcmRlci4KKyAgICAgICAgd2hpbGUgKHBvcyA8IE4pIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KHBvcyk7CisgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgVEFHLCAiQXQgIiArIHBvcyArICIgY2twICIgKyByLnRhc2sgKyAiOiAiICsgcik7CisgICAgICAgICAgICBpZiAoci50YXNrLnRhc2tJZCA9PSB0YXNrKSB7CisgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlJlbW92aW5nIGFuZCBhZGRpbmcgYXQgIiArIChOLTEpKTsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUocG9zKTsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQoYm90dG9tLCByKTsKKyAgICAgICAgICAgICAgICBtb3ZlZC5hZGQocik7CisgICAgICAgICAgICAgICAgYm90dG9tKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWFzb24gIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgIChyZWFzb24uaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfTk9fQU5JTUFUSU9OKSAhPSAwKSB7CisgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfTk9ORSk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmFkZChyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9UQVNLX1RPX0JBQ0spOworICAgICAgICB9CisgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLm1vdmVBcHBUb2tlbnNUb0JvdHRvbShtb3ZlZCk7CisgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmlzaFRhc2tNb3ZlTG9ja2VkKHRhc2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGxvZ1N0YXJ0QWN0aXZpdHkoaW50IHRhZywgQWN0aXZpdHlSZWNvcmQgciwKKyAgICAgICAgICAgIFRhc2tSZWNvcmQgdGFzaykgeworICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KHRhZywKKyAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwgdGFzay50YXNrSWQsCisgICAgICAgICAgICAgICAgci5zaG9ydENvbXBvbmVudE5hbWUsIHIuaW50ZW50LmdldEFjdGlvbigpLAorICAgICAgICAgICAgICAgIHIuaW50ZW50LmdldFR5cGUoKSwgci5pbnRlbnQuZ2V0RGF0YVN0cmluZygpLAorICAgICAgICAgICAgICAgIHIuaW50ZW50LmdldEZsYWdzKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSB0aGUgZ2l2ZW4gYWN0aXZpdHkgbWF0Y2hlcyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiAgUmV0dXJucworICAgICAqIGZhbHNlIGlmIHRoZSBhY3Rpdml0eSBoYWQgdG8gYmUgZGVzdHJveWVkLiAgUmV0dXJucyB0cnVlIGlmIHRoZQorICAgICAqIGNvbmZpZ3VyYXRpb24gaXMgdGhlIHNhbWUsIG9yIHRoZSBhY3Rpdml0eSB3aWxsIHJlbWFpbiBydW5uaW5nIGFzLWlzCisgICAgICogZm9yIHdoYXRldmVyIHJlYXNvbi4gIEVuc3VyZXMgdGhlIEhpc3RvcnlSZWNvcmQgaXMgdXBkYXRlZCB3aXRoIHRoZQorICAgICAqIGNvcnJlY3QgY29uZmlndXJhdGlvbiBhbmQgYWxsIG90aGVyIGJvb2trZWVwaW5nIGlzIGhhbmRsZWQuCisgICAgICovCisgICAgZmluYWwgYm9vbGVhbiBlbnN1cmVBY3Rpdml0eUNvbmZpZ3VyYXRpb25Mb2NrZWQoQWN0aXZpdHlSZWNvcmQgciwKKyAgICAgICAgICAgIGludCBnbG9iYWxDaGFuZ2VzKSB7CisgICAgICAgIGlmIChtQ29uZmlnV2lsbENoYW5nZSkgeworICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICAgICAiU2tpcHBpbmcgY29uZmlnIGNoZWNrICh3aWxsIGNoYW5nZSk6ICIgKyByKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgIkVuc3VyaW5nIGNvcnJlY3QgY29uZmlndXJhdGlvbjogIiArIHIpOworICAgICAgICAKKyAgICAgICAgLy8gU2hvcnQgY2lyY3VpdDogaWYgdGhlIHR3byBjb25maWd1cmF0aW9ucyBhcmUgdGhlIGV4YWN0IHNhbWUKKyAgICAgICAgLy8gb2JqZWN0ICh0aGUgY29tbW9uIGNhc2UpLCB0aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uCisgICAgICAgIENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnID0gbVNlcnZpY2UubUNvbmZpZ3VyYXRpb247CisgICAgICAgIGlmIChyLmNvbmZpZ3VyYXRpb24gPT0gbmV3Q29uZmlnKSB7CisgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIHVuY2hhbmdlZCBpbiAiICsgcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgYWN0aXZpdGllcyB0aGF0IGFyZSBmaW5pc2hpbmcuCisgICAgICAgIGlmIChyLmZpbmlzaGluZykgeworICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICAgICAiQ29uZmlndXJhdGlvbiBkb2Vzbid0IG1hdHRlciBpbiBmaW5pc2hpbmcgIiArIHIpOworICAgICAgICAgICAgci5zdG9wRnJlZXppbmdTY3JlZW5Mb2NrZWQoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE9rYXkgd2Ugbm93IGFyZSBnb2luZyB0byBtYWtlIHRoaXMgYWN0aXZpdHkgaGF2ZSB0aGUgbmV3IGNvbmZpZy4KKyAgICAgICAgLy8gQnV0IHRoZW4gd2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCBuZWVkcyB0byBkZWFsIHdpdGggdGhhdC4KKyAgICAgICAgQ29uZmlndXJhdGlvbiBvbGRDb25maWcgPSByLmNvbmZpZ3VyYXRpb247CisgICAgICAgIHIuY29uZmlndXJhdGlvbiA9IG5ld0NvbmZpZzsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBpc24ndCBjdXJyZW50bHkgcnVubmluZywganVzdCBsZWF2ZSB0aGUgbmV3CisgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gYW5kIGl0IHdpbGwgcGljayB0aGF0IHVwIG5leHQgdGltZSBpdCBzdGFydHMuCisgICAgICAgIGlmIChyLmFwcCA9PSBudWxsIHx8IHIuYXBwLnRocmVhZCA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIGRvZXNuJ3QgbWF0dGVyIG5vdCBydW5uaW5nICIgKyByKTsKKyAgICAgICAgICAgIHIuc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUgYWN0aXZpdHkgaXNuJ3QgcGVyc2lzdGVudCwgdGhlcmUgaXMgYSBjaGFuY2Ugd2Ugd2lsbAorICAgICAgICAvLyBuZWVkIHRvIHJlc3RhcnQgaXQuCisgICAgICAgIGlmICghci5wZXJzaXN0ZW50KSB7CisKKyAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBoYXMgY2hhbmdlZCBiZXR3ZWVuIHRoZSB0d28gY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICBpbnQgY2hhbmdlcyA9IG9sZENvbmZpZy5kaWZmKG5ld0NvbmZpZyk7CisgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiQ2hlY2tpbmcgdG8gcmVzdGFydCAiICsgci5pbmZvLm5hbWUgKyAiOiBjaGFuZ2VkPTB4IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGNoYW5nZXMpICsgIiwgaGFuZGxlcz0weCIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhyLmluZm8uY29uZmlnQ2hhbmdlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgbmV3Q29uZmlnPSIgKyBuZXdDb25maWcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChjaGFuZ2VzJih+ci5pbmZvLmNvbmZpZ0NoYW5nZXMpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gQWhhLCB0aGUgYWN0aXZpdHkgaXNuJ3QgaGFuZGxpbmcgdGhlIGNoYW5nZSwgc28gRElFIERJRSBESUUuCisgICAgICAgICAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyB8PSBjaGFuZ2VzOworICAgICAgICAgICAgICAgIHIuc3RhcnRGcmVlemluZ1NjcmVlbkxvY2tlZChyLmFwcCwgZ2xvYmFsQ2hhbmdlcyk7CisgICAgICAgICAgICAgICAgaWYgKHIuYXBwID09IG51bGwgfHwgci5hcHAudGhyZWFkID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2l0Y2ggaXMgZGVzdHJveWluZyBub24tcnVubmluZyAiICsgcik7CisgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5QQVVTSU5HKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEEgbGl0dGxlIGFubm95aW5nOiB3ZSBhcmUgd2FpdGluZyBmb3IgdGhpcyBhY3Rpdml0eSB0bworICAgICAgICAgICAgICAgICAgICAvLyBmaW5pc2ggcGF1c2luZy4gIExldCdzIG5vdCBkbyBhbnl0aGluZyBub3csIGJ1dCBqdXN0CisgICAgICAgICAgICAgICAgICAgIC8vIGZsYWcgdGhhdCBpdCBuZWVkcyB0byBiZSByZXN0YXJ0ZWQgd2hlbiBkb25lIHBhdXNpbmcuCisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3dpdGNoIGlzIHNraXBwaW5nIGFscmVhZHkgcGF1c2luZyAiICsgcik7CisgICAgICAgICAgICAgICAgICAgIHIuY29uZmlnRGVzdHJveSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIG9wdGltaXplIHRoaXMgY2FzZTogdGhlIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdpbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gcmVzdGFydCB0aGUgdG9wLCByZXN1bWVkIGFjdGl2aXR5LgorICAgICAgICAgICAgICAgICAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHRoZSBub3JtYWwgaGFuZHNoYWtpbmcsIGp1c3Qgc2F5CisgICAgICAgICAgICAgICAgICAgIC8vICJyZXN0YXJ0ISIuCisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3dpdGNoIGlzIHJlc3RhcnRpbmcgcmVzdW1lZCAiICsgcik7CisgICAgICAgICAgICAgICAgICAgIHJlbGF1bmNoQWN0aXZpdHlMb2NrZWQociwgci5jb25maWdDaGFuZ2VGbGFncywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHIuY29uZmlnQ2hhbmdlRmxhZ3MgPSAwOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3dpdGNoIGlzIHJlc3RhcnRpbmcgbm9uLXJlc3VtZWQgIiArIHIpOworICAgICAgICAgICAgICAgICAgICByZWxhdW5jaEFjdGl2aXR5TG9ja2VkKHIsIHIuY29uZmlnQ2hhbmdlRmxhZ3MsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEFsbCBkb25lLi4uICB0ZWxsIHRoZSBjYWxsZXIgd2Ugd2VyZW4ndCBhYmxlIHRvIGtlZXAgdGhpcworICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGFyb3VuZC4KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIERlZmF1bHQgY2FzZTogdGhlIGFjdGl2aXR5IGNhbiBoYW5kbGUgdGhpcyBuZXcgY29uZmlndXJhdGlvbiwgc28KKyAgICAgICAgLy8gaGFuZCBpdCBvdmVyLiAgTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZ2l2ZSBpdCB0aGUgbmV3CisgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24sIHNpbmNlIHdlIGFsd2F5cyBzZW5kIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB0byBhbGwKKyAgICAgICAgLy8gcHJvY2VzcyB3aGVuIHRoZXkgaGFwcGVuIHNvIGl0IGNhbiBqdXN0IHVzZSB3aGF0ZXZlciBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGl0IGxhc3QgZ290LgorICAgICAgICBpZiAoci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywgIlNlbmRpbmcgbmV3IGNvbmZpZyB0byAiICsgcik7CisgICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlQWN0aXZpdHlDb25maWd1cmF0aW9uQ2hhbmdlZChyKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgcHJvY2VzcyBkaWVkLCB3aGF0ZXZlci4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChmYWxzZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gcmVsYXVuY2hBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgaW50IGNoYW5nZXMsIGJvb2xlYW4gYW5kUmVzdW1lKSB7CisgICAgICAgIExpc3Q8UmVzdWx0SW5mbz4gcmVzdWx0cyA9IG51bGw7CisgICAgICAgIExpc3Q8SW50ZW50PiBuZXdJbnRlbnRzID0gbnVsbDsKKyAgICAgICAgaWYgKGFuZFJlc3VtZSkgeworICAgICAgICAgICAgcmVzdWx0cyA9IHIucmVzdWx0czsKKyAgICAgICAgICAgIG5ld0ludGVudHMgPSByLm5ld0ludGVudHM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlJlbGF1bmNoaW5nOiAiICsgcgorICAgICAgICAgICAgICAgICsgIiB3aXRoIHJlc3VsdHM9IiArIHJlc3VsdHMgKyAiIG5ld0ludGVudHM9IiArIG5ld0ludGVudHMKKyAgICAgICAgICAgICAgICArICIgYW5kUmVzdW1lPSIgKyBhbmRSZXN1bWUpOworICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KGFuZFJlc3VtZSA/IEV2ZW50TG9nVGFncy5BTV9SRUxBVU5DSF9SRVNVTUVfQUNUSVZJVFkKKyAgICAgICAgICAgICAgICA6IEV2ZW50TG9nVGFncy5BTV9SRUxBVU5DSF9BQ1RJVklUWSwgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksCisgICAgICAgICAgICAgICAgci50YXNrLnRhc2tJZCwgci5zaG9ydENvbXBvbmVudE5hbWUpOworICAgICAgICAKKyAgICAgICAgci5zdGFydEZyZWV6aW5nU2NyZWVuTG9ja2VkKHIuYXBwLCAwKTsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLmkoVEFHLCAiU3dpdGNoIGlzIHJlc3RhcnRpbmcgcmVzdW1lZCAiICsgcik7CisgICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVSZWxhdW5jaEFjdGl2aXR5KHIsIHJlc3VsdHMsIG5ld0ludGVudHMsCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMsICFhbmRSZXN1bWUsIG1TZXJ2aWNlLm1Db25maWd1cmF0aW9uKTsKKyAgICAgICAgICAgIC8vIE5vdGU6IGRvbid0IG5lZWQgdG8gY2FsbCBwYXVzZUlmU2xlZXBpbmdMb2NrZWQoKSBoZXJlLCBiZWNhdXNlCisgICAgICAgICAgICAvLyB0aGUgY2FsbGVyIHdpbGwgb25seSBwYXNzIGluICdhbmRSZXN1bWUnIGlmIHRoaXMgYWN0aXZpdHkgaXMKKyAgICAgICAgICAgIC8vIGN1cnJlbnRseSByZXN1bWVkLCB3aGljaCBpbXBsaWVzIHdlIGFyZW4ndCBzbGVlcGluZy4KKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhbmRSZXN1bWUpIHsKKyAgICAgICAgICAgIHIucmVzdWx0cyA9IG51bGw7CisgICAgICAgICAgICByLm5ld0ludGVudHMgPSBudWxsOworICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5yZXBvcnRSZXN1bWVkQWN0aXZpdHlMb2NrZWQocik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BcHBFcnJvckRpYWxvZy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQXBwRXJyb3JEaWFsb2cuamF2YQppbmRleCAzYTFhYWQ2Li5hNzY5YzA1IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BcHBFcnJvckRpYWxvZy5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FwcEVycm9yRGlhbG9nLmphdmEKQEAgLTgwLDkgKzgwLDYgQEAKICAgICAgICAgICAgICAgICBESVNNSVNTX1RJTUVPVVQpOwogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIG9uU3RvcCgpIHsKLSAgICB9Ci0KICAgICBwcml2YXRlIGZpbmFsIEhhbmRsZXIgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcigpIHsKICAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgewogICAgICAgICAgICAgc3luY2hyb25pemVkIChtUHJvYykgewpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQXBwTm90UmVzcG9uZGluZ0RpYWxvZy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQXBwTm90UmVzcG9uZGluZ0RpYWxvZy5qYXZhCmluZGV4IDk3MDJmOTEuLmIyNzM3ZGMgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FwcE5vdFJlc3BvbmRpbmdEaWFsb2cuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BcHBOb3RSZXNwb25kaW5nRGlhbG9nLmphdmEKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBwcml2YXRlIGZpbmFsIFByb2Nlc3NSZWNvcmQgbVByb2M7CiAgICAgCiAgICAgcHVibGljIEFwcE5vdFJlc3BvbmRpbmdEaWFsb2coQWN0aXZpdHlNYW5hZ2VyU2VydmljZSBzZXJ2aWNlLCBDb250ZXh0IGNvbnRleHQsCi0gICAgICAgICAgICBQcm9jZXNzUmVjb3JkIGFwcCwgSGlzdG9yeVJlY29yZCBhY3Rpdml0eSkgeworICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBhcHAsIEFjdGl2aXR5UmVjb3JkIGFjdGl2aXR5KSB7CiAgICAgICAgIHN1cGVyKGNvbnRleHQpOwogICAgICAgICAKICAgICAgICAgbVNlcnZpY2UgPSBzZXJ2aWNlOwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQmF0dGVyeVN0YXRzU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQmF0dGVyeVN0YXRzU2VydmljZS5qYXZhCmluZGV4IDMzYmJjMTMuLjM3ZGE2ZjcgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0JhdHRlcnlTdGF0c1NlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9CYXR0ZXJ5U3RhdHNTZXJ2aWNlLmphdmEKQEAgLTU5LDcgKzU5LDcgQEAKICAgICBwdWJsaWMgdm9pZCBzaHV0ZG93bigpIHsKICAgICAgICAgU2xvZy53KCJCYXR0ZXJ5U3RhdHMiLCAiV3JpdGluZyBiYXR0ZXJ5IHN0YXRzIGJlZm9yZSBzaHV0ZG93bi4uLiIpOwogICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdGF0cykgewotICAgICAgICAgICAgbVN0YXRzLndyaXRlTG9ja2VkKCk7CisgICAgICAgICAgICBtU3RhdHMuc2h1dGRvd25Mb2NrZWQoKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTEyNCwxNCArMTI0LDE0IEBACiAgICAgcHVibGljIHZvaWQgbm90ZVN0YXJ0R3BzKGludCB1aWQpIHsKICAgICAgICAgZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKCk7CiAgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRzKSB7Ci0gICAgICAgICAgICBtU3RhdHMubm90ZVN0YXJ0R3BzKHVpZCk7CisgICAgICAgICAgICBtU3RhdHMubm90ZVN0YXJ0R3BzTG9ja2VkKHVpZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcHVibGljIHZvaWQgbm90ZVN0b3BHcHMoaW50IHVpZCkgewogICAgICAgICBlbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oKTsKICAgICAgICAgc3luY2hyb25pemVkIChtU3RhdHMpIHsKLSAgICAgICAgICAgIG1TdGF0cy5ub3RlU3RvcEdwcyh1aWQpOworICAgICAgICAgICAgbVN0YXRzLm5vdGVTdG9wR3BzTG9ja2VkKHVpZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgICAgIApAQCAtMzIxLDE0ICszMjEsMTAgQEAKICAgICAgICAgcmV0dXJuIG1TdGF0cy5pc09uQmF0dGVyeSgpOwogICAgIH0KICAgICAKLSAgICBwdWJsaWMgdm9pZCBzZXRPbkJhdHRlcnkoYm9vbGVhbiBvbkJhdHRlcnksIGludCBsZXZlbCkgeworICAgIHB1YmxpYyB2b2lkIHNldEJhdHRlcnlTdGF0ZShpbnQgc3RhdHVzLCBpbnQgaGVhbHRoLCBpbnQgcGx1Z1R5cGUsIGludCBsZXZlbCwKKyAgICAgICAgICAgIGludCB0ZW1wLCBpbnQgdm9sdCkgewogICAgICAgICBlbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oKTsKLSAgICAgICAgbVN0YXRzLnNldE9uQmF0dGVyeShvbkJhdHRlcnksIGxldmVsKTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgcmVjb3JkQ3VycmVudExldmVsKGludCBsZXZlbCkgewotICAgICAgICBlbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oKTsKLSAgICAgICAgbVN0YXRzLnJlY29yZEN1cnJlbnRMZXZlbChsZXZlbCk7CisgICAgICAgIG1TdGF0cy5zZXRCYXR0ZXJ5U3RhdGUoc3RhdHVzLCBoZWFsdGgsIHBsdWdUeXBlLCBsZXZlbCwgdGVtcCwgdm9sdCk7CiAgICAgfQogICAgIAogICAgIHB1YmxpYyBsb25nIGdldEF3YWtlVGltZUJhdHRlcnkoKSB7CkBAIC0zNTksNyArMzU1LDggQEAKICAgICAgICAgICAgICAgICBmb3IgKFN0cmluZyBhcmcgOiBhcmdzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgiLS1jaGVja2luIi5lcXVhbHMoYXJnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGVja2luID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCItLXJlc2V0Ii5lcXVhbHMoYXJnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRzLnJlc2V0QWxsU3RhdHNMb2NrZWQoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0Nvbm5lY3Rpb25SZWNvcmQuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0Nvbm5lY3Rpb25SZWNvcmQuamF2YQppbmRleCBmNjEzYjAwLi4yMmFjZGE5IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Db25uZWN0aW9uUmVjb3JkLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQ29ubmVjdGlvblJlY29yZC5qYXZhCkBAIC0yNiw3ICsyNiw3IEBACiAgKi8KIGNsYXNzIENvbm5lY3Rpb25SZWNvcmQgewogICAgIGZpbmFsIEFwcEJpbmRSZWNvcmQgYmluZGluZzsgICAgLy8gVGhlIGFwcGxpY2F0aW9uL3NlcnZpY2UgYmluZGluZy4KLSAgICBmaW5hbCBIaXN0b3J5UmVjb3JkIGFjdGl2aXR5OyAgIC8vIElmIG5vbi1udWxsLCB0aGUgb3duaW5nIGFjdGl2aXR5LgorICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIGFjdGl2aXR5OyAgIC8vIElmIG5vbi1udWxsLCB0aGUgb3duaW5nIGFjdGl2aXR5LgogICAgIGZpbmFsIElTZXJ2aWNlQ29ubmVjdGlvbiBjb25uOyAgLy8gVGhlIGNsaWVudCBjb25uZWN0aW9uLgogICAgIGZpbmFsIGludCBmbGFnczsgICAgICAgICAgICAgICAgLy8gQmluZGluZyBvcHRpb25zLgogICAgIGZpbmFsIGludCBjbGllbnRMYWJlbDsgICAgICAgICAgLy8gU3RyaW5nIHJlc291cmNlIGxhYmVsaW5nIHRoaXMgY2xpZW50LgpAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICAgICAgICAgICsgIiBmbGFncz0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGZsYWdzKSk7CiAgICAgfQogICAgIAotICAgIENvbm5lY3Rpb25SZWNvcmQoQXBwQmluZFJlY29yZCBfYmluZGluZywgSGlzdG9yeVJlY29yZCBfYWN0aXZpdHksCisgICAgQ29ubmVjdGlvblJlY29yZChBcHBCaW5kUmVjb3JkIF9iaW5kaW5nLCBBY3Rpdml0eVJlY29yZCBfYWN0aXZpdHksCiAgICAgICAgICAgICAgICBJU2VydmljZUNvbm5lY3Rpb24gX2Nvbm4sIGludCBfZmxhZ3MsCiAgICAgICAgICAgICAgICBpbnQgX2NsaWVudExhYmVsLCBQZW5kaW5nSW50ZW50IF9jbGllbnRJbnRlbnQpIHsKICAgICAgICAgYmluZGluZyA9IF9iaW5kaW5nOwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQ29udGVudFByb3ZpZGVyUmVjb3JkLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Db250ZW50UHJvdmlkZXJSZWNvcmQuamF2YQppbmRleCBjNzY0NjM1Li40NGM5NzQyIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Db250ZW50UHJvdmlkZXJSZWNvcmQuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Db250ZW50UHJvdmlkZXJSZWNvcmQuamF2YQpAQCAtMTcsNiArMTcsNyBAQAogcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuYW07CiAKIGltcG9ydCBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLkNvbnRlbnRQcm92aWRlckhvbGRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm87CiBpbXBvcnQgYW5kcm9pZC5vcy5Qcm9jZXNzOwpAQCAtMjksNiArMzAsNyBAQAogICAgIGZpbmFsIEhhc2hTZXQ8UHJvY2Vzc1JlY29yZD4gY2xpZW50cyA9IG5ldyBIYXNoU2V0PFByb2Nlc3NSZWNvcmQ+KCk7CiAgICAgZmluYWwgaW50IHVpZDsKICAgICBmaW5hbCBBcHBsaWNhdGlvbkluZm8gYXBwSW5mbzsKKyAgICBmaW5hbCBDb21wb25lbnROYW1lIG5hbWU7CiAgICAgaW50IGV4dGVybmFsczsgICAgIC8vIG51bWJlciBvZiBub24tZnJhbWV3b3JrIHByb2Nlc3NlcyBzdXBwb3J0ZWQgYnkgdGhpcyBwcm92aWRlcgogICAgIFByb2Nlc3NSZWNvcmQgYXBwOyAvLyBpZiBub24tbnVsbCwgaG9zdGluZyBhcHBsaWNhdGlvbgogICAgIFByb2Nlc3NSZWNvcmQgbGF1bmNoaW5nQXBwOyAvLyBpZiBub24tbnVsbCwgd2FpdGluZyBmb3IgdGhpcyBhcHAgdG8gYmUgbGF1bmNoZWQuCkBAIC0zOCw2ICs0MCw3IEBACiAgICAgICAgIHN1cGVyKF9pbmZvKTsKICAgICAgICAgdWlkID0gYWkudWlkOwogICAgICAgICBhcHBJbmZvID0gYWk7CisgICAgICAgIG5hbWUgPSBuZXcgQ29tcG9uZW50TmFtZShfaW5mby5wYWNrYWdlTmFtZSwgX2luZm8ubmFtZSk7CiAgICAgICAgIG5vUmVsZWFzZU5lZWRlZCA9IHVpZCA9PSAwIHx8IHVpZCA9PSBQcm9jZXNzLlNZU1RFTV9VSUQ7CiAgICAgfQogCkBAIC00NSw2ICs0OCw3IEBACiAgICAgICAgIHN1cGVyKGNwci5pbmZvKTsKICAgICAgICAgdWlkID0gY3ByLnVpZDsKICAgICAgICAgYXBwSW5mbyA9IGNwci5hcHBJbmZvOworICAgICAgICBuYW1lID0gY3ByLm5hbWU7CiAgICAgICAgIG5vUmVsZWFzZU5lZWRlZCA9IGNwci5ub1JlbGVhc2VOZWVkZWQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9IaXN0b3J5UmVjb3JkLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9IaXN0b3J5UmVjb3JkLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYTdhOTkuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vSGlzdG9yeVJlY29yZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5hbTsKLQotaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5BdHRyaWJ1dGVDYWNoZTsKLWltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5BY3Rpdml0eVN0YXRlOwotCi1pbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWU7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm87Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKLWltcG9ydCBhbmRyb2lkLm9zLlByb2Nlc3M7Ci1pbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKLWltcG9ydCBhbmRyb2lkLnV0aWwuRXZlbnRMb2c7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuSUFwcGxpY2F0aW9uVG9rZW47Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEubGFuZy5yZWYuV2Vha1JlZmVyZW5jZTsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotCi0vKioKLSAqIEFuIGVudHJ5IGluIHRoZSBoaXN0b3J5IHN0YWNrLCByZXByZXNlbnRpbmcgYW4gYWN0aXZpdHkuCi0gKi8KLWNsYXNzIEhpc3RvcnlSZWNvcmQgZXh0ZW5kcyBJQXBwbGljYXRpb25Ub2tlbi5TdHViIHsKLSAgICBmaW5hbCBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIHNlcnZpY2U7IC8vIG93bmVyCi0gICAgZmluYWwgQWN0aXZpdHlJbmZvIGluZm87IC8vIGFsbCBhYm91dCBtZQotICAgIGZpbmFsIGludCBsYXVuY2hlZEZyb21VaWQ7IC8vIGFsd2F5cyB0aGUgdWlkIHdobyBzdGFydGVkIHRoZSBhY3Rpdml0eS4KLSAgICBmaW5hbCBJbnRlbnQgaW50ZW50OyAgICAvLyB0aGUgb3JpZ2luYWwgaW50ZW50IHRoYXQgZ2VuZXJhdGVkIHVzCi0gICAgZmluYWwgQ29tcG9uZW50TmFtZSByZWFsQWN0aXZpdHk7ICAvLyB0aGUgaW50ZW50IGNvbXBvbmVudCwgb3IgdGFyZ2V0IG9mIGFuIGFsaWFzLgotICAgIGZpbmFsIFN0cmluZyBzaG9ydENvbXBvbmVudE5hbWU7IC8vIHRoZSBzaG9ydCBjb21wb25lbnQgbmFtZSBvZiB0aGUgaW50ZW50Ci0gICAgZmluYWwgU3RyaW5nIHJlc29sdmVkVHlwZTsgLy8gYXMgcGVyIG9yaWdpbmFsIGNhbGxlcjsKLSAgICBmaW5hbCBTdHJpbmcgcGFja2FnZU5hbWU7IC8vIHRoZSBwYWNrYWdlIGltcGxlbWVudGluZyBpbnRlbnQncyBjb21wb25lbnQKLSAgICBmaW5hbCBTdHJpbmcgcHJvY2Vzc05hbWU7IC8vIHByb2Nlc3Mgd2hlcmUgdGhpcyBjb21wb25lbnQgd2FudHMgdG8gcnVuCi0gICAgZmluYWwgU3RyaW5nIHRhc2tBZmZpbml0eTsgLy8gYXMgcGVyIEFjdGl2aXR5SW5mby50YXNrQWZmaW5pdHkKLSAgICBmaW5hbCBib29sZWFuIHN0YXRlTm90TmVlZGVkOyAvLyBBcyBwZXIgQWN0aXZpdHlJbmZvLmZsYWdzCi0gICAgZmluYWwgYm9vbGVhbiBmdWxsc2NyZWVuOyAgICAgLy8gY292ZXJzIHRoZSBmdWxsIHNjcmVlbj8KLSAgICBmaW5hbCBib29sZWFuIGNvbXBvbmVudFNwZWNpZmllZDsgIC8vIGRpZCBjYWxsZXIgc3BlY2lmaXkgYW4gZXhwbGljaXQgY29tcG9uZW50PwotICAgIGZpbmFsIGJvb2xlYW4gaXNIb21lQWN0aXZpdHk7IC8vIGRvIHdlIGNvbnNpZGVyIHRoaXMgdG8gYmUgYSBob21lIGFjdGl2aXR5PwotICAgIGZpbmFsIFN0cmluZyBiYXNlRGlyOyAgIC8vIHdoZXJlIGFjdGl2aXR5IHNvdXJjZSAocmVzb3VyY2VzIGV0YykgbG9jYXRlZAotICAgIGZpbmFsIFN0cmluZyByZXNEaXI7ICAgLy8gd2hlcmUgcHVibGljIGFjdGl2aXR5IHNvdXJjZSAocHVibGljIHJlc291cmNlcyBldGMpIGxvY2F0ZWQKLSAgICBmaW5hbCBTdHJpbmcgZGF0YURpcjsgICAvLyB3aGVyZSBhY3Rpdml0eSBkYXRhIHNob3VsZCBnbwotICAgIENoYXJTZXF1ZW5jZSBub25Mb2NhbGl6ZWRMYWJlbDsgIC8vIHRoZSBsYWJlbCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYWNrYWdlIG1nci4KLSAgICBpbnQgbGFiZWxSZXM7ICAgICAgICAgICAvLyB0aGUgbGFiZWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFja2FnZSBtZ3IuCi0gICAgaW50IGljb247ICAgICAgICAgICAgICAgLy8gcmVzb3VyY2UgaWRlbnRpZmllciBvZiBhY3Rpdml0eSdzIGljb24uCi0gICAgaW50IHRoZW1lOyAgICAgICAgICAgICAgLy8gcmVzb3VyY2UgaWRlbnRpZmllciBvZiBhY3Rpdml0eSdzIHRoZW1lLgotICAgIFRhc2tSZWNvcmQgdGFzazsgICAgICAgIC8vIHRoZSB0YXNrIHRoaXMgaXMgaW4uCi0gICAgbG9uZyBzdGFydFRpbWU7ICAgICAgICAgLy8gd2hlbiB3ZSBzdGFydGluZyBsYXVuY2hpbmcgdGhpcyBhY3Rpdml0eQotICAgIGxvbmcgY3B1VGltZUF0UmVzdW1lOyAgIC8vIHRoZSBjcHUgdGltZSBvZiBob3N0IHByb2Nlc3MgYXQgdGhlIHRpbWUgb2YgcmVzdW1pbmcgYWN0aXZpdHkKLSAgICBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247IC8vIGNvbmZpZ3VyYXRpb24gYWN0aXZpdHkgd2FzIGxhc3QgcnVubmluZyBpbgotICAgIEhpc3RvcnlSZWNvcmQgcmVzdWx0VG87IC8vIHdobyBzdGFydGVkIHRoaXMgZW50cnksIHNvIHdpbGwgZ2V0IG91ciByZXBseQotICAgIGZpbmFsIFN0cmluZyByZXN1bHRXaG87IC8vIGFkZGl0aW9uYWwgaWRlbnRpZmllciBmb3IgdXNlIGJ5IHJlc3VsdFRvLgotICAgIGZpbmFsIGludCByZXF1ZXN0Q29kZTsgIC8vIGNvZGUgZ2l2ZW4gYnkgcmVxdWVzdGVyIChyZXN1bHRUbykKLSAgICBBcnJheUxpc3QgcmVzdWx0czsgICAgICAvLyBwZW5kaW5nIEFjdGl2aXR5UmVzdWx0IG9ianMgd2UgaGF2ZSByZWNlaXZlZAotICAgIEhhc2hTZXQ8V2Vha1JlZmVyZW5jZTxQZW5kaW5nSW50ZW50UmVjb3JkPj4gcGVuZGluZ1Jlc3VsdHM7IC8vIGFsbCBwZW5kaW5nIGludGVudHMgZm9yIHRoaXMgYWN0Ci0gICAgQXJyYXlMaXN0IG5ld0ludGVudHM7ICAgLy8gYW55IHBlbmRpbmcgbmV3IGludGVudHMgZm9yIHNpbmdsZS10b3AgbW9kZQotICAgIEhhc2hTZXQ8Q29ubmVjdGlvblJlY29yZD4gY29ubmVjdGlvbnM7IC8vIEFsbCBDb25uZWN0aW9uUmVjb3JkIHdlIGhvbGQKLSAgICBIYXNoU2V0PFVyaVBlcm1pc3Npb24+IHJlYWRVcmlQZXJtaXNzaW9uczsgLy8gc3BlY2lhbCBhY2Nlc3MgdG8gcmVhZGluZyB1cmlzLgotICAgIEhhc2hTZXQ8VXJpUGVybWlzc2lvbj4gd3JpdGVVcmlQZXJtaXNzaW9uczsgLy8gc3BlY2lhbCBhY2Nlc3MgdG8gd3JpdGluZyB1cmlzLgotICAgIFByb2Nlc3NSZWNvcmQgYXBwOyAgLy8gaWYgbm9uLW51bGwsIGhvc3RpbmcgYXBwbGljYXRpb24KLSAgICBCaXRtYXAgdGh1bWJuYWlsOyAgICAgICAvLyBpY29uIHJlcHJlc2VudGF0aW9uIG9mIHBhdXNlZCBzY3JlZW4KLSAgICBDaGFyU2VxdWVuY2UgZGVzY3JpcHRpb247IC8vIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgcGF1c2VkIHNjcmVlbgotICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuQWN0aXZpdHlTdGF0ZSBzdGF0ZTsgICAgLy8gY3VycmVudCBzdGF0ZSB3ZSBhcmUgaW4KLSAgICBCdW5kbGUgIGljaWNsZTsgICAgICAgICAvLyBsYXN0IHNhdmVkIGFjdGl2aXR5IHN0YXRlCi0gICAgYm9vbGVhbiBmcm9udE9mVGFzazsgICAgLy8gaXMgdGhpcyB0aGUgcm9vdCBhY3Rpdml0eSBvZiBpdHMgdGFzaz8KLSAgICBib29sZWFuIGxhdW5jaEZhaWxlZDsgICAvLyBzZXQgaWYgYSBsYXVuY2hlZCBmYWlsZWQsIHRvIGFib3J0IG9uIDJuZCB0cnkKLSAgICBib29sZWFuIGhhdmVTdGF0ZTsgICAgICAvLyBoYXZlIHdlIGdvdHRlbiB0aGUgbGFzdCBhY3Rpdml0eSBzdGF0ZT8KLSAgICBib29sZWFuIHN0b3BwZWQ7ICAgICAgICAvLyBpcyBhY3Rpdml0eSBwYXVzZSBmaW5pc2hlZD8KLSAgICBib29sZWFuIGRlbGF5ZWRSZXN1bWU7ICAvLyBub3QgeWV0IHJlc3VtZWQgYmVjYXVzZSBvZiBzdG9wcGVkIGFwcCBzd2l0Y2hlcz8KLSAgICBib29sZWFuIGZpbmlzaGluZzsgICAgICAvLyBhY3Rpdml0eSBpbiBwZW5kaW5nIGZpbmlzaCBsaXN0PwotICAgIGJvb2xlYW4gY29uZmlnRGVzdHJveTsgIC8vIG5lZWQgdG8gZGVzdHJveSBkdWUgdG8gY29uZmlnIGNoYW5nZT8KLSAgICBpbnQgY29uZmlnQ2hhbmdlRmxhZ3M7ICAvLyB3aGljaCBjb25maWcgdmFsdWVzIGhhdmUgY2hhbmdlZAotICAgIGJvb2xlYW4ga2V5c1BhdXNlZDsgICAgIC8vIGhhcyBrZXkgZGlzcGF0Y2hpbmcgYmVlbiBwYXVzZWQgZm9yIGl0PwotICAgIGJvb2xlYW4gaW5IaXN0b3J5OyAgICAgIC8vIGFyZSB3ZSBpbiB0aGUgaGlzdG9yeSBzdGFjaz8KLSAgICBib29sZWFuIHBlcnNpc3RlbnQ7ICAgICAvLyByZXF1ZXN0ZWQgdG8gYmUgcGVyc2lzdGVudD8KLSAgICBpbnQgbGF1bmNoTW9kZTsgICAgICAgICAvLyB0aGUgbGF1bmNoIG1vZGUgYWN0aXZpdHkgYXR0cmlidXRlLgotICAgIGJvb2xlYW4gdmlzaWJsZTsgICAgICAgIC8vIGRvZXMgdGhpcyBhY3Rpdml0eSdzIHdpbmRvdyBuZWVkIHRvIGJlIHNob3duPwotICAgIGJvb2xlYW4gd2FpdGluZ1Zpc2libGU7IC8vIHRydWUgaWYgd2FpdGluZyBmb3IgYSBuZXcgYWN0IHRvIGJlY29tZSB2aXMKLSAgICBib29sZWFuIG5vd1Zpc2libGU7ICAgICAvLyBpcyB0aGlzIGFjdGl2aXR5J3Mgd2luZG93IHZpc2libGU/Ci0gICAgYm9vbGVhbiB0aHVtYm5haWxOZWVkZWQ7Ly8gaGFzIHNvbWVvbmUgcmVxdWVzdGVkIGEgdGh1bWJuYWlsPwotICAgIGJvb2xlYW4gaWRsZTsgICAgICAgICAgIC8vIGhhcyB0aGUgYWN0aXZpdHkgZ29uZSBpZGxlPwotICAgIGJvb2xlYW4gaGFzQmVlbkxhdW5jaGVkOy8vIGhhcyB0aGlzIGFjdGl2aXR5IGV2ZXIgYmVlbiBsYXVuY2hlZD8KLSAgICBib29sZWFuIGZyb3plbkJlZm9yZURlc3Ryb3k7Ly8gaGFzIGJlZW4gZnJvemVuIGJ1dCBub3QgeWV0IGRlc3Ryb3llZC4KLQotICAgIFN0cmluZyBzdHJpbmdOYW1lOyAgICAgIC8vIGZvciBjYWNoaW5nIG9mIHRvU3RyaW5nKCkuCi0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50V3JpdGVyIHB3LCBTdHJpbmcgcHJlZml4KSB7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJwYWNrYWdlTmFtZT0iKTsgcHcucHJpbnQocGFja2FnZU5hbWUpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgcHJvY2Vzc05hbWU9Iik7IHB3LnByaW50bG4ocHJvY2Vzc05hbWUpOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgibGF1bmNoZWRGcm9tVWlkPSIpOyBwdy5wcmludChsYXVuY2hlZEZyb21VaWQpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgYXBwPSIpOyBwdy5wcmludGxuKGFwcCk7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50bG4oaW50ZW50KTsKLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImZyb250T2ZUYXNrPSIpOyBwdy5wcmludChmcm9udE9mVGFzayk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiB0YXNrPSIpOyBwdy5wcmludGxuKHRhc2spOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgidGFza0FmZmluaXR5PSIpOyBwdy5wcmludGxuKHRhc2tBZmZpbml0eSk7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJyZWFsQWN0aXZpdHk9Iik7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbihyZWFsQWN0aXZpdHkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKSk7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJiYXNlPSIpOyBwdy5wcmludChiYXNlRGlyKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc0Rpci5lcXVhbHMoYmFzZURpcikpIHB3LnByaW50KCIgcmVzPSIpOyBwdy5wcmludChyZXNEaXIpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgZGF0YT0iKTsgcHcucHJpbnRsbihkYXRhRGlyKTsKLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImxhYmVsUmVzPTB4Iik7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoSW50ZWdlci50b0hleFN0cmluZyhsYWJlbFJlcykpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaWNvbj0weCIpOyBwdy5wcmludChJbnRlZ2VyLnRvSGV4U3RyaW5nKGljb24pKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIHRoZW1lPTB4Iik7IHB3LnByaW50bG4oSW50ZWdlci50b0hleFN0cmluZyh0aGVtZSkpOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgic3RhdGVOb3ROZWVkZWQ9Iik7IHB3LnByaW50KHN0YXRlTm90TmVlZGVkKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIGNvbXBvbmVudFNwZWNpZmllZD0iKTsgcHcucHJpbnQoY29tcG9uZW50U3BlY2lmaWVkKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIGlzSG9tZUFjdGl2aXR5PSIpOyBwdy5wcmludGxuKGlzSG9tZUFjdGl2aXR5KTsKLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImNvbmZpZ3VyYXRpb249Iik7IHB3LnByaW50bG4oY29uZmlndXJhdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHRUbyAhPSBudWxsIHx8IHJlc3VsdFdobyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgicmVzdWx0VG89Iik7IHB3LnByaW50KHJlc3VsdFRvKTsKLSAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiByZXN1bHRXaG89Iik7IHB3LnByaW50KHJlc3VsdFdobyk7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgcmVzdWx0Q29kZT0iKTsgcHcucHJpbnRsbihyZXF1ZXN0Q29kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdHMgIT0gbnVsbCkgewotICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInJlc3VsdHM9Iik7IHB3LnByaW50bG4ocmVzdWx0cyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBlbmRpbmdSZXN1bHRzICE9IG51bGwpIHsKLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJwZW5kaW5nUmVzdWx0cz0iKTsgcHcucHJpbnRsbihwZW5kaW5nUmVzdWx0cyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlYWRVcmlQZXJtaXNzaW9ucyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgicmVhZFVyaVBlcm1pc3Npb25zPSIpOyBwdy5wcmludGxuKHJlYWRVcmlQZXJtaXNzaW9ucyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHdyaXRlVXJpUGVybWlzc2lvbnMgIT0gbnVsbCkgewotICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIndyaXRlVXJpUGVybWlzc2lvbnM9Iik7IHB3LnByaW50bG4od3JpdGVVcmlQZXJtaXNzaW9ucyk7Ci0gICAgICAgIH0KLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImxhdW5jaEZhaWxlZD0iKTsgcHcucHJpbnQobGF1bmNoRmFpbGVkKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIGhhdmVTdGF0ZT0iKTsgcHcucHJpbnQoaGF2ZVN0YXRlKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIGljaWNsZT0iKTsgcHcucHJpbnRsbihpY2ljbGUpOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgic3RhdGU9Iik7IHB3LnByaW50KHN0YXRlKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIHN0b3BwZWQ9Iik7IHB3LnByaW50KHN0b3BwZWQpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgZGVsYXllZFJlc3VtZT0iKTsgcHcucHJpbnQoZGVsYXllZFJlc3VtZSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBmaW5pc2hpbmc9Iik7IHB3LnByaW50bG4oZmluaXNoaW5nKTsKLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImtleXNQYXVzZWQ9Iik7IHB3LnByaW50KGtleXNQYXVzZWQpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaW5IaXN0b3J5PSIpOyBwdy5wcmludChpbkhpc3RvcnkpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgcGVyc2lzdGVudD0iKTsgcHcucHJpbnQocGVyc2lzdGVudCk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBsYXVuY2hNb2RlPSIpOyBwdy5wcmludGxuKGxhdW5jaE1vZGUpOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiZnVsbHNjcmVlbj0iKTsgcHcucHJpbnQoZnVsbHNjcmVlbik7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiB2aXNpYmxlPSIpOyBwdy5wcmludCh2aXNpYmxlKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIGZyb3plbkJlZm9yZURlc3Ryb3k9Iik7IHB3LnByaW50KGZyb3plbkJlZm9yZURlc3Ryb3kpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgdGh1bWJuYWlsTmVlZGVkPSIpOyBwdy5wcmludCh0aHVtYm5haWxOZWVkZWQpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaWRsZT0iKTsgcHcucHJpbnRsbihpZGxlKTsKLSAgICAgICAgaWYgKHdhaXRpbmdWaXNpYmxlIHx8IG5vd1Zpc2libGUpIHsKLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJ3YWl0aW5nVmlzaWJsZT0iKTsgcHcucHJpbnQod2FpdGluZ1Zpc2libGUpOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIG5vd1Zpc2libGU9Iik7IHB3LnByaW50bG4obm93VmlzaWJsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbmZpZ0Rlc3Ryb3kgfHwgY29uZmlnQ2hhbmdlRmxhZ3MgIT0gMCkgewotICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImNvbmZpZ0Rlc3Ryb3k9Iik7IHB3LnByaW50KGNvbmZpZ0Rlc3Ryb3kpOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIGNvbmZpZ0NoYW5nZUZsYWdzPSIpOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKEludGVnZXIudG9IZXhTdHJpbmcoY29uZmlnQ2hhbmdlRmxhZ3MpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29ubmVjdGlvbnMgIT0gbnVsbCkgewotICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImNvbm5lY3Rpb25zPSIpOyBwdy5wcmludGxuKGNvbm5lY3Rpb25zKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEhpc3RvcnlSZWNvcmQoQWN0aXZpdHlNYW5hZ2VyU2VydmljZSBfc2VydmljZSwgUHJvY2Vzc1JlY29yZCBfY2FsbGVyLAotICAgICAgICAgICAgaW50IF9sYXVuY2hlZEZyb21VaWQsIEludGVudCBfaW50ZW50LCBTdHJpbmcgX3Jlc29sdmVkVHlwZSwKLSAgICAgICAgICAgIEFjdGl2aXR5SW5mbyBhSW5mbywgQ29uZmlndXJhdGlvbiBfY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgX3Jlc3VsdFRvLCBTdHJpbmcgX3Jlc3VsdFdobywgaW50IF9yZXFDb2RlLAotICAgICAgICAgICAgYm9vbGVhbiBfY29tcG9uZW50U3BlY2lmaWVkKSB7Ci0gICAgICAgIHNlcnZpY2UgPSBfc2VydmljZTsKLSAgICAgICAgaW5mbyA9IGFJbmZvOwotICAgICAgICBsYXVuY2hlZEZyb21VaWQgPSBfbGF1bmNoZWRGcm9tVWlkOwotICAgICAgICBpbnRlbnQgPSBfaW50ZW50OwotICAgICAgICBzaG9ydENvbXBvbmVudE5hbWUgPSBfaW50ZW50LmdldENvbXBvbmVudCgpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCk7Ci0gICAgICAgIHJlc29sdmVkVHlwZSA9IF9yZXNvbHZlZFR5cGU7Ci0gICAgICAgIGNvbXBvbmVudFNwZWNpZmllZCA9IF9jb21wb25lbnRTcGVjaWZpZWQ7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24gPSBfY29uZmlndXJhdGlvbjsKLSAgICAgICAgcmVzdWx0VG8gPSBfcmVzdWx0VG87Ci0gICAgICAgIHJlc3VsdFdobyA9IF9yZXN1bHRXaG87Ci0gICAgICAgIHJlcXVlc3RDb2RlID0gX3JlcUNvZGU7Ci0gICAgICAgIHN0YXRlID0gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5BY3Rpdml0eVN0YXRlLklOSVRJQUxJWklORzsKLSAgICAgICAgZnJvbnRPZlRhc2sgPSBmYWxzZTsKLSAgICAgICAgbGF1bmNoRmFpbGVkID0gZmFsc2U7Ci0gICAgICAgIGhhdmVTdGF0ZSA9IGZhbHNlOwotICAgICAgICBzdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgIGRlbGF5ZWRSZXN1bWUgPSBmYWxzZTsKLSAgICAgICAgZmluaXNoaW5nID0gZmFsc2U7Ci0gICAgICAgIGNvbmZpZ0Rlc3Ryb3kgPSBmYWxzZTsKLSAgICAgICAga2V5c1BhdXNlZCA9IGZhbHNlOwotICAgICAgICBpbkhpc3RvcnkgPSBmYWxzZTsKLSAgICAgICAgcGVyc2lzdGVudCA9IGZhbHNlOwotICAgICAgICB2aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgd2FpdGluZ1Zpc2libGUgPSBmYWxzZTsKLSAgICAgICAgbm93VmlzaWJsZSA9IGZhbHNlOwotICAgICAgICB0aHVtYm5haWxOZWVkZWQgPSBmYWxzZTsKLSAgICAgICAgaWRsZSA9IGZhbHNlOwotICAgICAgICBoYXNCZWVuTGF1bmNoZWQgPSBmYWxzZTsKLQotICAgICAgICBpZiAoYUluZm8gIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKGFJbmZvLnRhcmdldEFjdGl2aXR5ID09IG51bGwKLSAgICAgICAgICAgICAgICAgICAgfHwgYUluZm8ubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX01VTFRJUExFCi0gICAgICAgICAgICAgICAgICAgIHx8IGFJbmZvLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVE9QKSB7Ci0gICAgICAgICAgICAgICAgcmVhbEFjdGl2aXR5ID0gX2ludGVudC5nZXRDb21wb25lbnQoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVhbEFjdGl2aXR5ID0gbmV3IENvbXBvbmVudE5hbWUoYUluZm8ucGFja2FnZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBhSW5mby50YXJnZXRBY3Rpdml0eSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0YXNrQWZmaW5pdHkgPSBhSW5mby50YXNrQWZmaW5pdHk7Ci0gICAgICAgICAgICBzdGF0ZU5vdE5lZWRlZCA9IChhSW5mby5mbGFncyYKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlJbmZvLkZMQUdfU1RBVEVfTk9UX05FRURFRCkgIT0gMDsKLSAgICAgICAgICAgIGJhc2VEaXIgPSBhSW5mby5hcHBsaWNhdGlvbkluZm8uc291cmNlRGlyOwotICAgICAgICAgICAgcmVzRGlyID0gYUluZm8uYXBwbGljYXRpb25JbmZvLnB1YmxpY1NvdXJjZURpcjsKLSAgICAgICAgICAgIGRhdGFEaXIgPSBhSW5mby5hcHBsaWNhdGlvbkluZm8uZGF0YURpcjsKLSAgICAgICAgICAgIG5vbkxvY2FsaXplZExhYmVsID0gYUluZm8ubm9uTG9jYWxpemVkTGFiZWw7Ci0gICAgICAgICAgICBsYWJlbFJlcyA9IGFJbmZvLmxhYmVsUmVzOwotICAgICAgICAgICAgaWYgKG5vbkxvY2FsaXplZExhYmVsID09IG51bGwgJiYgbGFiZWxSZXMgPT0gMCkgewotICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mbyBhcHAgPSBhSW5mby5hcHBsaWNhdGlvbkluZm87Ci0gICAgICAgICAgICAgICAgbm9uTG9jYWxpemVkTGFiZWwgPSBhcHAubm9uTG9jYWxpemVkTGFiZWw7Ci0gICAgICAgICAgICAgICAgbGFiZWxSZXMgPSBhcHAubGFiZWxSZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpY29uID0gYUluZm8uZ2V0SWNvblJlc291cmNlKCk7Ci0gICAgICAgICAgICB0aGVtZSA9IGFJbmZvLmdldFRoZW1lUmVzb3VyY2UoKTsKLSAgICAgICAgICAgIGlmICgoYUluZm8uZmxhZ3MmQWN0aXZpdHlJbmZvLkZMQUdfTVVMVElQUk9DRVNTKSAhPSAwCi0gICAgICAgICAgICAgICAgICAgICYmIF9jYWxsZXIgIT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAmJiAoYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZCA9PSBQcm9jZXNzLlNZU1RFTV9VSUQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhSW5mby5hcHBsaWNhdGlvbkluZm8udWlkID09IF9jYWxsZXIuaW5mby51aWQpKSB7Ci0gICAgICAgICAgICAgICAgcHJvY2Vzc05hbWUgPSBfY2FsbGVyLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcm9jZXNzTmFtZSA9IGFJbmZvLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaW50ZW50ICE9IG51bGwgJiYgKGFJbmZvLmZsYWdzICYgQWN0aXZpdHlJbmZvLkZMQUdfRVhDTFVERV9GUk9NX1JFQ0VOVFMpICE9IDApIHsKLSAgICAgICAgICAgICAgICBpbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfRVhDTFVERV9GUk9NX1JFQ0VOVFMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBwYWNrYWdlTmFtZSA9IGFJbmZvLmFwcGxpY2F0aW9uSW5mby5wYWNrYWdlTmFtZTsKLSAgICAgICAgICAgIGxhdW5jaE1vZGUgPSBhSW5mby5sYXVuY2hNb2RlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBBdHRyaWJ1dGVDYWNoZS5FbnRyeSBlbnQgPSBBdHRyaWJ1dGVDYWNoZS5pbnN0YW5jZSgpLmdldChwYWNrYWdlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgdGhlbWUgIT0gMCA/IHRoZW1lIDogYW5kcm9pZC5SLnN0eWxlLlRoZW1lLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3cpOwotICAgICAgICAgICAgZnVsbHNjcmVlbiA9IGVudCAhPSBudWxsICYmICFlbnQuYXJyYXkuZ2V0Qm9vbGVhbigKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0lzRmxvYXRpbmcsIGZhbHNlKQotICAgICAgICAgICAgICAgICAgICAmJiAhZW50LmFycmF5LmdldEJvb2xlYW4oCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dJc1RyYW5zbHVjZW50LCBmYWxzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghX2NvbXBvbmVudFNwZWNpZmllZCB8fCBfbGF1bmNoZWRGcm9tVWlkID09IFByb2Nlc3MubXlVaWQoKQotICAgICAgICAgICAgICAgICAgICB8fCBfbGF1bmNoZWRGcm9tVWlkID09IDApIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBrbm93IHRoZSBzeXN0ZW0gaGFzIGRldGVybWluZWQgdGhlIGNvbXBvbmVudCwgdGhlbgotICAgICAgICAgICAgICAgIC8vIHdlIGNhbiBjb25zaWRlciB0aGlzIHRvIGJlIGEgaG9tZSBhY3Rpdml0eS4uLgotICAgICAgICAgICAgICAgIGlmIChJbnRlbnQuQUNUSU9OX01BSU4uZXF1YWxzKF9pbnRlbnQuZ2V0QWN0aW9uKCkpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBfaW50ZW50Lmhhc0NhdGVnb3J5KEludGVudC5DQVRFR09SWV9IT01FKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgX2ludGVudC5nZXRDYXRlZ29yaWVzKCkuc2l6ZSgpID09IDEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIF9pbnRlbnQuZ2V0RGF0YSgpID09IG51bGwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIF9pbnRlbnQuZ2V0VHlwZSgpID09IG51bGwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlbnQuZ2V0RmxhZ3MoKSZJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgISJhbmRyb2lkIi5lcXVhbHMocmVhbEFjdGl2aXR5LmdldENsYXNzTmFtZSgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHN1cmUgbG9va3MgbGlrZSBhIGhvbWUgYWN0aXZpdHkhCi0gICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhlIGxhc3QgY2hlY2sgaXMgc28gd2UgZG9uJ3QgY291bnQgdGhlIHJlc29sdmVyCi0gICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGFzIGJlaW5nIGhvbWUuLi4gIHJlYWxseSwgd2UgZG9uJ3QgY2FyZSBhYm91dAotICAgICAgICAgICAgICAgICAgICAvLyBkb2luZyBhbnl0aGluZyBzcGVjaWFsIHdpdGggc29tZXRoaW5nIHRoYXQgY29tZXMgZnJvbQotICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY29yZSBmcmFtZXdvcmsgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgaXNIb21lQWN0aXZpdHkgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlzSG9tZUFjdGl2aXR5ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpc0hvbWVBY3Rpdml0eSA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVhbEFjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgICAgIHRhc2tBZmZpbml0eSA9IG51bGw7Ci0gICAgICAgICAgICBzdGF0ZU5vdE5lZWRlZCA9IGZhbHNlOwotICAgICAgICAgICAgYmFzZURpciA9IG51bGw7Ci0gICAgICAgICAgICByZXNEaXIgPSBudWxsOwotICAgICAgICAgICAgZGF0YURpciA9IG51bGw7Ci0gICAgICAgICAgICBwcm9jZXNzTmFtZSA9IG51bGw7Ci0gICAgICAgICAgICBwYWNrYWdlTmFtZSA9IG51bGw7Ci0gICAgICAgICAgICBmdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgIGlzSG9tZUFjdGl2aXR5ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGFkZFJlc3VsdExvY2tlZChIaXN0b3J5UmVjb3JkIGZyb20sIFN0cmluZyByZXN1bHRXaG8sCi0gICAgICAgICAgICBpbnQgcmVxdWVzdENvZGUsIGludCByZXN1bHRDb2RlLAotICAgICAgICAgICAgSW50ZW50IHJlc3VsdERhdGEpIHsKLSAgICAgICAgQWN0aXZpdHlSZXN1bHQgciA9IG5ldyBBY3Rpdml0eVJlc3VsdChmcm9tLCByZXN1bHRXaG8sCi0gICAgICAgIAkJcmVxdWVzdENvZGUsIHJlc3VsdENvZGUsIHJlc3VsdERhdGEpOwotICAgICAgICBpZiAocmVzdWx0cyA9PSBudWxsKSB7Ci0gICAgICAgICAgICByZXN1bHRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdHMuYWRkKHIpOwotICAgIH0KLQotICAgIHZvaWQgcmVtb3ZlUmVzdWx0c0xvY2tlZChIaXN0b3J5UmVjb3JkIGZyb20sIFN0cmluZyByZXN1bHRXaG8sCi0gICAgICAgICAgICBpbnQgcmVxdWVzdENvZGUpIHsKLSAgICAgICAgaWYgKHJlc3VsdHMgIT0gbnVsbCkgewotICAgICAgICAgICAgZm9yIChpbnQgaT1yZXN1bHRzLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBBY3Rpdml0eVJlc3VsdCByID0gKEFjdGl2aXR5UmVzdWx0KXJlc3VsdHMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmIChyLm1Gcm9tICE9IGZyb20pIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChyLm1SZXN1bHRXaG8gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0V2hvICE9IG51bGwpIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghci5tUmVzdWx0V2hvLmVxdWFscyhyZXN1bHRXaG8pKSBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHIubVJlcXVlc3RDb2RlICE9IHJlcXVlc3RDb2RlKSBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdHMucmVtb3ZlKGkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBhZGROZXdJbnRlbnRMb2NrZWQoSW50ZW50IGludGVudCkgewotICAgICAgICBpZiAobmV3SW50ZW50cyA9PSBudWxsKSB7Ci0gICAgICAgICAgICBuZXdJbnRlbnRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICB9Ci0gICAgICAgIG5ld0ludGVudHMuYWRkKGludGVudCk7Ci0gICAgfQotCi0gICAgdm9pZCBwYXVzZUtleURpc3BhdGNoaW5nTG9ja2VkKCkgewotICAgICAgICBpZiAoIWtleXNQYXVzZWQpIHsKLSAgICAgICAgICAgIGtleXNQYXVzZWQgPSB0cnVlOwotICAgICAgICAgICAgc2VydmljZS5tV2luZG93TWFuYWdlci5wYXVzZUtleURpc3BhdGNoaW5nKHRoaXMpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCByZXN1bWVLZXlEaXNwYXRjaGluZ0xvY2tlZCgpIHsKLSAgICAgICAgaWYgKGtleXNQYXVzZWQpIHsKLSAgICAgICAgICAgIGtleXNQYXVzZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHNlcnZpY2UubVdpbmRvd01hbmFnZXIucmVzdW1lS2V5RGlzcGF0Y2hpbmcodGhpcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJQXBwbGljYXRpb25Ub2tlbgotCi0gICAgcHVibGljIGJvb2xlYW4gbWF5RnJlZXplU2NyZWVuTG9ja2VkKFByb2Nlc3NSZWNvcmQgYXBwKSB7Ci0gICAgICAgIC8vIE9ubHkgZnJlZXplIHRoZSBzY3JlZW4gaWYgdGhpcyBhY3Rpdml0eSBpcyBjdXJyZW50bHkgYXR0YWNoZWQgdG8KLSAgICAgICAgLy8gYW4gYXBwbGljYXRpb24sIGFuZCB0aGF0IGFwcGxpY2F0aW9uIGlzIG5vdCBibG9ja2VkIG9yIHVucmVzcG9uZGluZy4KLSAgICAgICAgLy8gSW4gYW55IG90aGVyIGNhc2UsIHdlIGNhbid0IGNvdW50IG9uIGdldHRpbmcgdGhlIHNjcmVlbiB1bmZyb3plbiwKLSAgICAgICAgLy8gc28gaXQgaXMgYmVzdCB0byBsZWF2ZSBhcy1pcy4KLSAgICAgICAgcmV0dXJuIGFwcCA9PSBudWxsIHx8ICghYXBwLmNyYXNoaW5nICYmICFhcHAubm90UmVzcG9uZGluZyk7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIHN0YXJ0RnJlZXppbmdTY3JlZW5Mb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHAsIGludCBjb25maWdDaGFuZ2VzKSB7Ci0gICAgICAgIGlmIChtYXlGcmVlemVTY3JlZW5Mb2NrZWQoYXBwKSkgewotICAgICAgICAgICAgc2VydmljZS5tV2luZG93TWFuYWdlci5zdGFydEFwcEZyZWV6aW5nU2NyZWVuKHRoaXMsIGNvbmZpZ0NoYW5nZXMpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIHN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChib29sZWFuIGZvcmNlKSB7Ci0gICAgICAgIGlmIChmb3JjZSB8fCBmcm96ZW5CZWZvcmVEZXN0cm95KSB7Ci0gICAgICAgICAgICBmcm96ZW5CZWZvcmVEZXN0cm95ID0gZmFsc2U7Ci0gICAgICAgICAgICBzZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnN0b3BBcHBGcmVlemluZ1NjcmVlbih0aGlzLCBmb3JjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgd2luZG93c1Zpc2libGUoKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZChzZXJ2aWNlKSB7Ci0gICAgICAgICAgICBpZiAoc3RhcnRUaW1lICE9IDApIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBsb25nIGN1clRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBsb25nIHRoaXNUaW1lID0gY3VyVGltZSAtIHN0YXJ0VGltZTsKLSAgICAgICAgICAgICAgICBmaW5hbCBsb25nIHRvdGFsVGltZSA9IHNlcnZpY2UubUluaXRpYWxTdGFydFRpbWUgIT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgPyAoY3VyVGltZSAtIHNlcnZpY2UubUluaXRpYWxTdGFydFRpbWUpIDogdGhpc1RpbWU7Ci0gICAgICAgICAgICAgICAgaWYgKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuU0hPV19BQ1RJVklUWV9TVEFSVF9USU1FKSB7Ci0gICAgICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFDVElWSVRZX0xBVU5DSF9USU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHRoaXMpLCBzaG9ydENvbXBvbmVudE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1RpbWUsIHRvdGFsVGltZSk7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBzZXJ2aWNlLm1TdHJpbmdCdWlsZGVyOwotICAgICAgICAgICAgICAgICAgICBzYi5zZXRMZW5ndGgoMCk7Ci0gICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiRGlzcGxheWVkIGFjdGl2aXR5ICIpOwotICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoc2hvcnRDb21wb25lbnROYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCI6ICIpOwotICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQodGhpc1RpbWUpOwotICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIiBtcyAodG90YWwgIik7Ci0gICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCh0b3RhbFRpbWUpOwotICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIiBtcykiKTsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmkoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5UQUcsIHNiLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZXJ2aWNlLnJlcG9ydEFjdGl2aXR5TGF1bmNoZWRMb2NrZWQoZmFsc2UsIHRoaXMsIHRoaXNUaW1lLCB0b3RhbFRpbWUpOwotICAgICAgICAgICAgICAgIGlmICh0b3RhbFRpbWUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlcnZpY2UubVVzYWdlU3RhdHNTZXJ2aWNlLm5vdGVMYXVuY2hUaW1lKHJlYWxBY3Rpdml0eSwgKGludCl0b3RhbFRpbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSAwOwotICAgICAgICAgICAgICAgIHNlcnZpY2UubUluaXRpYWxTdGFydFRpbWUgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VydmljZS5yZXBvcnRBY3Rpdml0eVZpc2libGVMb2NrZWQodGhpcyk7Ci0gICAgICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19TV0lUQ0gpIExvZy52KAotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlRBRywgIndpbmRvd3NWaXNpYmxlKCk6ICIgKyB0aGlzKTsKLSAgICAgICAgICAgIGlmICghbm93VmlzaWJsZSkgewotICAgICAgICAgICAgICAgIG5vd1Zpc2libGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmICghaWRsZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHRoZSBmdWxsIHN0b3Agcm91dGluZSBoZXJlLCBsZXQncyBqdXN0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGhpZGUgYW55IGFjdGl2aXRpZXMgd2Ugbm93IGNhbiwgYW5kIGxldCB0aGVtIHN0b3Agd2hlbgotICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbm9ybWFsIGlkbGUgaGFwcGVucy4KLSAgICAgICAgICAgICAgICAgICAgc2VydmljZS5wcm9jZXNzU3RvcHBpbmdBY3Rpdml0aWVzTG9ja2VkKGZhbHNlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IHdhcyBhbHJlYWR5IGlkbGUsIHRoZW4gd2Ugbm93IG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIHBlcmZvcm0gdGhlIGZ1bGwgc3RvcCBvZiBhbnkgYWN0aXZpdGllcwotICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGFyZSB3YWl0aW5nIHRvIGRvIHNvLiAgVGhpcyBpcyBiZWNhdXNlIHdlIHdvbid0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGRvIHRoYXQgd2hpbGUgdGhleSBhcmUgc3RpbGwgd2FpdGluZyBmb3IgdGhpcyBvbmUgdG8KLSAgICAgICAgICAgICAgICAgICAgLy8gYmVjb21lIHZpc2libGUuCi0gICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBOID0gc2VydmljZS5tV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE4gPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UubVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgci53YWl0aW5nVmlzaWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1NXSVRDSCkgTG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYXMgd2FpdGluZyBmb3IgdmlzaWJsZTogIiArIHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZS5tV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IE1lc3NhZ2Uub2J0YWluKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtc2cud2hhdCA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuSURMRV9OT1dfTVNHOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZS5tSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNlcnZpY2Uuc2NoZWR1bGVBcHBHY3NMb2NrZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHdpbmRvd3NHb25lKCkgewotICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19TV0lUQ0gpIExvZy52KAotICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLCAid2luZG93c0dvbmUoKTogIiArIHRoaXMpOwotICAgICAgICBub3dWaXNpYmxlID0gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIHByaXZhdGUgSGlzdG9yeVJlY29yZCBnZXRXYWl0aW5nSGlzdG9yeVJlY29yZExvY2tlZCgpIHsKLSAgICAgICAgLy8gRmlyc3QgZmluZCB0aGUgcmVhbCBjdWxwcml0Li4uICBpZiB3ZSBhcmUgd2FpdGluZwotICAgICAgICAvLyBmb3IgYW5vdGhlciBhcHAgdG8gc3RhcnQsIHRoZW4gd2UgaGF2ZSBwYXVzZWQgZGlzcGF0Y2hpbmcKLSAgICAgICAgLy8gZm9yIHRoaXMgYWN0aXZpdHkuCi0gICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IHRoaXM7Ci0gICAgICAgIGlmIChyLndhaXRpbmdWaXNpYmxlKSB7Ci0gICAgICAgICAgICAvLyBIbW1tLCB3aG8gbWlnaHQgd2UgYmUgd2FpdGluZyBmb3I/Ci0gICAgICAgICAgICByID0gc2VydmljZS5tUmVzdW1lZEFjdGl2aXR5OwotICAgICAgICAgICAgaWYgKHIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHIgPSBzZXJ2aWNlLm1QYXVzaW5nQWN0aXZpdHk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBCb3RoIG9mIHRob3NlIG51bGw/ICBGYWxsIGJhY2sgdG8gJ3RoaXMnIGFnYWluCi0gICAgICAgICAgICBpZiAociA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgciA9IHRoaXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiByOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGtleURpc3BhdGNoaW5nVGltZWRPdXQoKSB7Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgcjsKLSAgICAgICAgUHJvY2Vzc1JlY29yZCBhbnJBcHAgPSBudWxsOwotICAgICAgICBzeW5jaHJvbml6ZWQoc2VydmljZSkgewotICAgICAgICAgICAgciA9IGdldFdhaXRpbmdIaXN0b3J5UmVjb3JkTG9ja2VkKCk7Ci0gICAgICAgICAgICBpZiAociAhPSBudWxsICYmIHIuYXBwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoci5hcHAuZGVidWdnaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UubURpZERleE9wdCkgewotICAgICAgICAgICAgICAgICAgICAvLyBHaXZlIG1vcmUgdGltZSBzaW5jZSB3ZSB3ZXJlIGRleG9wdGluZy4KLSAgICAgICAgICAgICAgICAgICAgc2VydmljZS5tRGlkRGV4T3B0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHIuYXBwLmluc3RydW1lbnRhdGlvbkNsYXNzID09IG51bGwpIHsgCi0gICAgICAgICAgICAgICAgICAgIGFuckFwcCA9IHIuYXBwOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIEJ1bmRsZSBpbmZvID0gbmV3IEJ1bmRsZSgpOwotICAgICAgICAgICAgICAgICAgICBpbmZvLnB1dFN0cmluZygic2hvcnRNc2ciLCAia2V5RGlzcGF0Y2hpbmdUaW1lZE91dCIpOwotICAgICAgICAgICAgICAgICAgICBpbmZvLnB1dFN0cmluZygibG9uZ01zZyIsICJUaW1lZCBvdXQgd2hpbGUgZGlzcGF0Y2hpbmcga2V5IGV2ZW50Iik7Ci0gICAgICAgICAgICAgICAgICAgIHNlcnZpY2UuZmluaXNoSW5zdHJ1bWVudGF0aW9uTG9ja2VkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIGluZm8pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGFuckFwcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBzZXJ2aWNlLmFwcE5vdFJlc3BvbmRpbmcoYW5yQXBwLCByLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAia2V5RGlzcGF0Y2hpbmdUaW1lZE91dCIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgLyoqIFJldHVybnMgdGhlIGtleSBkaXNwYXRjaGluZyB0aW1lb3V0IGZvciB0aGlzIGFwcGxpY2F0aW9uIHRva2VuLiAqLwotICAgIHB1YmxpYyBsb25nIGdldEtleURpc3BhdGNoaW5nVGltZW91dCgpIHsKLSAgICAgICAgc3luY2hyb25pemVkKHNlcnZpY2UpIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IGdldFdhaXRpbmdIaXN0b3J5UmVjb3JkTG9ja2VkKCk7Ci0gICAgICAgICAgICBpZiAociA9PSBudWxsIHx8IHIuYXBwID09IG51bGwKLSAgICAgICAgICAgICAgICAgICAgfHwgci5hcHAuaW5zdHJ1bWVudGF0aW9uQ2xhc3MgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLktFWV9ESVNQQVRDSElOR19USU1FT1VUOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5JTlNUUlVNRU5UQVRJT05fS0VZX0RJU1BBVENISU5HX1RJTUVPVVQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBhY3Rpdml0eSBpcyBlaXRoZXIgdmlzaWJsZSwgaXMgYmVjb21pbmcgdmlzaWJsZSwgaXMKLSAgICAgKiBjdXJyZW50bHkgcGF1c2luZywgb3IgaXMgcmVzdW1lZC4KLSAgICAgKi8KLSAgICBwdWJsaWMgYm9vbGVhbiBpc0ludGVyZXN0aW5nVG9Vc2VyTG9ja2VkKCkgewotICAgICAgICByZXR1cm4gdmlzaWJsZSB8fCBub3dWaXNpYmxlIHx8IHN0YXRlID09IEFjdGl2aXR5U3RhdGUuUEFVU0lORyB8fCAKLSAgICAgICAgICAgICAgICBzdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQ7Ci0gICAgIH0KLSAgICAKLSAgICAKLSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICBpZiAoc3RyaW5nTmFtZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RyaW5nTmFtZTsKLSAgICAgICAgfQotICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoMTI4KTsKLSAgICAgICAgc2IuYXBwZW5kKCJIaXN0b3J5UmVjb3JkeyIpOwotICAgICAgICBzYi5hcHBlbmQoSW50ZWdlci50b0hleFN0cmluZyhTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZSh0aGlzKSkpOwotICAgICAgICBzYi5hcHBlbmQoJyAnKTsKLSAgICAgICAgc2IuYXBwZW5kKGludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpKTsKLSAgICAgICAgc2IuYXBwZW5kKCd9Jyk7Ci0gICAgICAgIHJldHVybiBzdHJpbmdOYW1lID0gc2IudG9TdHJpbmcoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9QZW5kaW5nSW50ZW50UmVjb3JkLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9QZW5kaW5nSW50ZW50UmVjb3JkLmphdmEKaW5kZXggODQ3ZTkxYi4uN2E4NWViOCAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vUGVuZGluZ0ludGVudFJlY29yZC5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1BlbmRpbmdJbnRlbnRSZWNvcmQuamF2YQpAQCAtNDIsNyArNDIsNyBAQAogICAgIGZpbmFsIHN0YXRpYyBjbGFzcyBLZXkgewogICAgICAgICBmaW5hbCBpbnQgdHlwZTsKICAgICAgICAgZmluYWwgU3RyaW5nIHBhY2thZ2VOYW1lOwotICAgICAgICBmaW5hbCBIaXN0b3J5UmVjb3JkIGFjdGl2aXR5OworICAgICAgICBmaW5hbCBBY3Rpdml0eVJlY29yZCBhY3Rpdml0eTsKICAgICAgICAgZmluYWwgU3RyaW5nIHdobzsKICAgICAgICAgZmluYWwgaW50IHJlcXVlc3RDb2RlOwogICAgICAgICBmaW5hbCBJbnRlbnQgcmVxdWVzdEludGVudDsKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgICAgCiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPRERfUFJJTUVfTlVNQkVSID0gMzc7CiAgICAgICAgIAotICAgICAgICBLZXkoaW50IF90LCBTdHJpbmcgX3AsIEhpc3RvcnlSZWNvcmQgX2EsIFN0cmluZyBfdywKKyAgICAgICAgS2V5KGludCBfdCwgU3RyaW5nIF9wLCBBY3Rpdml0eVJlY29yZCBfYSwgU3RyaW5nIF93LAogICAgICAgICAgICAgICAgIGludCBfciwgSW50ZW50IF9pLCBTdHJpbmcgX2l0LCBpbnQgX2YpIHsKICAgICAgICAgICAgIHR5cGUgPSBfdDsKICAgICAgICAgICAgIHBhY2thZ2VOYW1lID0gX3A7CkBAIC0yMTgsNyArMjE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIElBY3Rpdml0eU1hbmFnZXIuSU5URU5UX1NFTkRFUl9BQ1RJVklUWV9SRVNVTFQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvd25lci5zZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsIGtleS5hY3Rpdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleS5hY3Rpdml0eS5zdGFjay5zZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsIGtleS5hY3Rpdml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Lndobywga2V5LnJlcXVlc3RDb2RlLCBjb2RlLCBmaW5hbEludGVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBJQWN0aXZpdHlNYW5hZ2VyLklOVEVOVF9TRU5ERVJfQlJPQURDQVNUOgpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vUHJvY2Vzc1JlY29yZC5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vUHJvY2Vzc1JlY29yZC5qYXZhCmluZGV4IGY0OWExODIuLjE4YjFhY2IgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1Byb2Nlc3NSZWNvcmQuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Qcm9jZXNzUmVjb3JkLmphdmEKQEAgLTI4LDcgKzI4LDYgQEAKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKIGltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247Ci1pbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKIGltcG9ydCBhbmRyb2lkLnV0aWwuUHJpbnRXcml0ZXJQcmludGVyOwogCiBpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKQEAgLTQwLDEyICszOSwxMiBAQAogICogRnVsbCBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcHJvY2VzcyB0aGF0CiAgKiBpcyBjdXJyZW50bHkgcnVubmluZy4KICAqLwotY2xhc3MgUHJvY2Vzc1JlY29yZCBpbXBsZW1lbnRzIFdhdGNoZG9nLlBzc1JlcXVlc3RvciB7CitjbGFzcyBQcm9jZXNzUmVjb3JkIHsKICAgICBmaW5hbCBCYXR0ZXJ5U3RhdHNJbXBsLlVpZC5Qcm9jIGJhdHRlcnlTdGF0czsgLy8gd2hlcmUgdG8gY29sbGVjdCBydW50aW1lIHN0YXRpc3RpY3MKICAgICBmaW5hbCBBcHBsaWNhdGlvbkluZm8gaW5mbzsgLy8gYWxsIGFib3V0IHRoZSBmaXJzdCBhcHAgaW4gdGhlIHByb2Nlc3MKICAgICBmaW5hbCBTdHJpbmcgcHJvY2Vzc05hbWU7ICAgLy8gbmFtZSBvZiB0aGUgcHJvY2VzcwogICAgIC8vIExpc3Qgb2YgcGFja2FnZXMgcnVubmluZyBpbiB0aGUgcHJvY2VzcwotICAgIGZpbmFsIEhhc2hTZXQ8U3RyaW5nPiBwa2dMaXN0ID0gbmV3IEhhc2hTZXQoKTsKKyAgICBmaW5hbCBIYXNoU2V0PFN0cmluZz4gcGtnTGlzdCA9IG5ldyBIYXNoU2V0PFN0cmluZz4oKTsKICAgICBJQXBwbGljYXRpb25UaHJlYWQgdGhyZWFkOyAgLy8gdGhlIGFjdHVhbCBwcm9jLi4uICBtYXkgYmUgbnVsbCBvbmx5IGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICdwZXJzaXN0ZW50JyBpcyB0cnVlIChpbiB3aGljaCBjYXNlIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBsYXVuY2hpbmcgdGhlIGFwcCkKQEAgLTg3LDkgKzg2LDkgQEAKICAgICBPYmplY3QgYWRqVGFyZ2V0OyAgICAgICAgICAgLy8gRGVidWdnaW5nOiB0YXJnZXQgY29tcG9uZW50IGltcGFjdGluZyBvb21fYWRqLgogICAgIAogICAgIC8vIGNvbnRhaW5zIEhpc3RvcnlSZWNvcmQgb2JqZWN0cwotICAgIGZpbmFsIEFycmF5TGlzdCBhY3Rpdml0aWVzID0gbmV3IEFycmF5TGlzdCgpOworICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gYWN0aXZpdGllcyA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KCk7CiAgICAgLy8gYWxsIFNlcnZpY2VSZWNvcmQgcnVubmluZyBpbiB0aGlzIHByb2Nlc3MKLSAgICBmaW5hbCBIYXNoU2V0IHNlcnZpY2VzID0gbmV3IEhhc2hTZXQoKTsKKyAgICBmaW5hbCBIYXNoU2V0PFNlcnZpY2VSZWNvcmQ+IHNlcnZpY2VzID0gbmV3IEhhc2hTZXQ8U2VydmljZVJlY29yZD4oKTsKICAgICAvLyBzZXJ2aWNlcyB0aGF0IGFyZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvZGUgKG5lZWQgdG8gcmVtYWluIGZvcmVncm91bmQpLgogICAgIGZpbmFsIEhhc2hTZXQ8U2VydmljZVJlY29yZD4gZXhlY3V0aW5nU2VydmljZXMKICAgICAgICAgICAgICA9IG5ldyBIYXNoU2V0PFNlcnZpY2VSZWNvcmQ+KCk7CkBAIC05OSw3ICs5OCw4IEBACiAgICAgLy8gYWxsIElJbnRlbnRSZWNlaXZlcnMgdGhhdCBhcmUgcmVnaXN0ZXJlZCBmcm9tIHRoaXMgcHJvY2Vzcy4KICAgICBmaW5hbCBIYXNoU2V0PFJlY2VpdmVyTGlzdD4gcmVjZWl2ZXJzID0gbmV3IEhhc2hTZXQ8UmVjZWl2ZXJMaXN0PigpOwogICAgIC8vIGNsYXNzIChTdHJpbmcpIC0+IENvbnRlbnRQcm92aWRlclJlY29yZAotICAgIGZpbmFsIEhhc2hNYXAgcHViUHJvdmlkZXJzID0gbmV3IEhhc2hNYXAoKTsgCisgICAgZmluYWwgSGFzaE1hcDxTdHJpbmcsIENvbnRlbnRQcm92aWRlclJlY29yZD4gcHViUHJvdmlkZXJzCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgQ29udGVudFByb3ZpZGVyUmVjb3JkPigpOyAKICAgICAvLyBBbGwgQ29udGVudFByb3ZpZGVyUmVjb3JkIHByb2Nlc3MgaXMgdXNpbmcKICAgICBmaW5hbCBIYXNoTWFwPENvbnRlbnRQcm92aWRlclJlY29yZCwgSW50ZWdlcj4gY29uUHJvdmlkZXJzCiAgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPENvbnRlbnRQcm92aWRlclJlY29yZCwgSW50ZWdlcj4oKTsgCkBAIC0xMjgsNyArMTI4LDYgQEAKICAgICBDb21wb25lbnROYW1lIGVycm9yUmVwb3J0UmVjZWl2ZXI7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRXcml0ZXIgcHcsIFN0cmluZyBwcmVmaXgpIHsKLSAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKICAgICAgICAgaWYgKGluZm8uY2xhc3NOYW1lICE9IG51bGwpIHsKICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJjbGFzcz0iKTsgcHcucHJpbnRsbihpbmZvLmNsYXNzTmFtZSk7CiAgICAgICAgIH0KQEAgLTI0OSw3ICsyNDgsNyBAQAogICAgIHB1YmxpYyBib29sZWFuIGlzSW50ZXJlc3RpbmdUb1VzZXJMb2NrZWQoKSB7CiAgICAgICAgIGZpbmFsIGludCBzaXplID0gYWN0aXZpdGllcy5zaXplKCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IHNpemUgOyBpKyspIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKSBhY3Rpdml0aWVzLmdldChpKTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBhY3Rpdml0aWVzLmdldChpKTsKICAgICAgICAgICAgIGlmIChyLmlzSW50ZXJlc3RpbmdUb1VzZXJMb2NrZWQoKSkgewogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjYxLDE3ICsyNjAsNyBAQAogICAgICAgICBpbnQgaSA9IGFjdGl2aXRpZXMuc2l6ZSgpOwogICAgICAgICB3aGlsZSAoaSA+IDApIHsKICAgICAgICAgICAgIGktLTsKLSAgICAgICAgICAgICgoSGlzdG9yeVJlY29yZClhY3Rpdml0aWVzLmdldChpKSkuc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKHRydWUpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RQc3MoKSB7Ci0gICAgICAgIElBcHBsaWNhdGlvblRocmVhZCBsb2NhbFRocmVhZCA9IHRocmVhZDsKLSAgICAgICAgaWYgKGxvY2FsVGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbG9jYWxUaHJlYWQucmVxdWVzdFBzcygpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFjdGl2aXRpZXMuZ2V0KGkpLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZCh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1N0cmljdE1vZGVWaW9sYXRpb25EaWFsb2cuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1N0cmljdE1vZGVWaW9sYXRpb25EaWFsb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTc2ZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vU3RyaWN0TW9kZVZpb2xhdGlvbkRpYWxvZy5qYXZhCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5hbTsKKworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19TWVNURU1fRVJST1I7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CisKK2NsYXNzIFN0cmljdE1vZGVWaW9sYXRpb25EaWFsb2cgZXh0ZW5kcyBCYXNlRXJyb3JEaWFsb2cgeworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBUQUcgPSAiU3RyaWN0TW9kZVZpb2xhdGlvbkRpYWxvZyI7CisKKyAgICBwcml2YXRlIGZpbmFsIEFwcEVycm9yUmVzdWx0IG1SZXN1bHQ7CisgICAgcHJpdmF0ZSBmaW5hbCBQcm9jZXNzUmVjb3JkIG1Qcm9jOworCisgICAgLy8gRXZlbnQgJ3doYXQnIGNvZGVzCisgICAgc3RhdGljIGZpbmFsIGludCBBQ1RJT05fT0sgPSAwOworICAgIHN0YXRpYyBmaW5hbCBpbnQgQUNUSU9OX09LX0FORF9SRVBPUlQgPSAxOworCisgICAgLy8gMS1taW51dGUgdGltZW91dCwgdGhlbiB3ZSBhdXRvbWF0aWNhbGx5IGRpc21pc3MgdGhlIHZpb2xhdGlvbgorICAgIC8vIGRpYWxvZworICAgIHN0YXRpYyBmaW5hbCBsb25nIERJU01JU1NfVElNRU9VVCA9IDEwMDAgKiA2MCAqIDE7CisKKyAgICBwdWJsaWMgU3RyaWN0TW9kZVZpb2xhdGlvbkRpYWxvZyhDb250ZXh0IGNvbnRleHQsIEFwcEVycm9yUmVzdWx0IHJlc3VsdCwgUHJvY2Vzc1JlY29yZCBhcHApIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisKKyAgICAgICAgUmVzb3VyY2VzIHJlcyA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCk7CisKKyAgICAgICAgbVByb2MgPSBhcHA7CisgICAgICAgIG1SZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIENoYXJTZXF1ZW5jZSBuYW1lOworICAgICAgICBpZiAoKGFwcC5wa2dMaXN0LnNpemUoKSA9PSAxKSAmJgorICAgICAgICAgICAgICAgIChuYW1lPWNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRBcHBsaWNhdGlvbkxhYmVsKGFwcC5pbmZvKSkgIT0gbnVsbCkgeworICAgICAgICAgICAgc2V0TWVzc2FnZShyZXMuZ2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5zbXZfYXBwbGljYXRpb24sCisgICAgICAgICAgICAgICAgICAgIG5hbWUudG9TdHJpbmcoKSwgYXBwLmluZm8ucHJvY2Vzc05hbWUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5hbWUgPSBhcHAucHJvY2Vzc05hbWU7CisgICAgICAgICAgICBzZXRNZXNzYWdlKHJlcy5nZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnNtdl9wcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICBuYW1lLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHNldENhbmNlbGFibGUoZmFsc2UpOworCisgICAgICAgIHNldEJ1dHRvbihEaWFsb2dJbnRlcmZhY2UuQlVUVE9OX1BPU0lUSVZFLAorICAgICAgICAgICAgICAgICAgcmVzLmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZGxnX29rKSwKKyAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoQUNUSU9OX09LKSk7CisKKyAgICAgICAgaWYgKGFwcC5lcnJvclJlcG9ydFJlY2VpdmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNldEJ1dHRvbihEaWFsb2dJbnRlcmZhY2UuQlVUVE9OX05FR0FUSVZFLAorICAgICAgICAgICAgICAgICAgICAgIHJlcy5nZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnJlcG9ydCksCisgICAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShBQ1RJT05fT0tfQU5EX1JFUE9SVCkpOworICAgICAgICB9CisKKyAgICAgICAgc2V0VGl0bGUocmVzLmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuYWVycl90aXRsZSkpOworICAgICAgICBnZXRXaW5kb3coKS5hZGRGbGFncyhGTEFHX1NZU1RFTV9FUlJPUik7CisgICAgICAgIGdldFdpbmRvdygpLnNldFRpdGxlKCJTdHJpY3QgTW9kZSBWaW9sYXRpb246ICIgKyBhcHAuaW5mby5wcm9jZXNzTmFtZSk7CisKKyAgICAgICAgLy8gQWZ0ZXIgdGhlIHRpbWVvdXQsIHByZXRlbmQgdGhlIHVzZXIgY2xpY2tlZCB0aGUgcXVpdCBidXR0b24KKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKAorICAgICAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoQUNUSU9OX09LKSwKKyAgICAgICAgICAgICAgICBESVNNSVNTX1RJTUVPVVQpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Qcm9jKSB7CisgICAgICAgICAgICAgICAgaWYgKG1Qcm9jICE9IG51bGwgJiYgbVByb2MuY3Jhc2hEaWFsb2cgPT0gU3RyaWN0TW9kZVZpb2xhdGlvbkRpYWxvZy50aGlzKSB7CisgICAgICAgICAgICAgICAgICAgIG1Qcm9jLmNyYXNoRGlhbG9nID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtUmVzdWx0LnNldChtc2cud2hhdCk7CisKKyAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSB0aW1lb3V0IHdlIHdvbid0IGJlIGF1dG9tYXRpY2FsbHkgY2xvc2VkLCBzbyBnbworICAgICAgICAgICAgLy8gYWhlYWQgYW5kIGV4cGxpY2l0bHkgZGlzbWlzcyBvdXJzZWx2ZXMganVzdCBpbiBjYXNlLgorICAgICAgICAgICAgZGlzbWlzcygpOworICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1VyaVBlcm1pc3Npb24uamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1VyaVBlcm1pc3Npb24uamF2YQppbmRleCBmZmE4YTJhLi44MTQ1MGM1IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9VcmlQZXJtaXNzaW9uLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vVXJpUGVybWlzc2lvbi5qYXZhCkBAIC0yNyw4ICsyNyw4IEBACiAgICAgZmluYWwgVXJpIHVyaTsKICAgICBpbnQgbW9kZUZsYWdzID0gMDsKICAgICBpbnQgZ2xvYmFsTW9kZUZsYWdzID0gMDsKLSAgICBmaW5hbCBIYXNoU2V0PEhpc3RvcnlSZWNvcmQ+IHJlYWRBY3Rpdml0aWVzID0gbmV3IEhhc2hTZXQ8SGlzdG9yeVJlY29yZD4oKTsKLSAgICBmaW5hbCBIYXNoU2V0PEhpc3RvcnlSZWNvcmQ+IHdyaXRlQWN0aXZpdGllcyA9IG5ldyBIYXNoU2V0PEhpc3RvcnlSZWNvcmQ+KCk7CisgICAgZmluYWwgSGFzaFNldDxBY3Rpdml0eVJlY29yZD4gcmVhZEFjdGl2aXRpZXMgPSBuZXcgSGFzaFNldDxBY3Rpdml0eVJlY29yZD4oKTsKKyAgICBmaW5hbCBIYXNoU2V0PEFjdGl2aXR5UmVjb3JkPiB3cml0ZUFjdGl2aXRpZXMgPSBuZXcgSGFzaFNldDxBY3Rpdml0eVJlY29yZD4oKTsKICAgICAKICAgICBTdHJpbmcgc3RyaW5nTmFtZTsKICAgICAKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAgICAgICAgIGdsb2JhbE1vZGVGbGFncyAmPSB+SW50ZW50LkZMQUdfR1JBTlRfUkVBRF9VUklfUEVSTUlTU0lPTjsKICAgICAgICAgICAgIG1vZGVGbGFncyAmPSB+SW50ZW50LkZMQUdfR1JBTlRfUkVBRF9VUklfUEVSTUlTU0lPTjsKICAgICAgICAgICAgIGlmIChyZWFkQWN0aXZpdGllcy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChIaXN0b3J5UmVjb3JkIHIgOiByZWFkQWN0aXZpdGllcykgeworICAgICAgICAgICAgICAgIGZvciAoQWN0aXZpdHlSZWNvcmQgciA6IHJlYWRBY3Rpdml0aWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIHIucmVhZFVyaVBlcm1pc3Npb25zLnJlbW92ZSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHIucmVhZFVyaVBlcm1pc3Npb25zLnNpemUoKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByLnJlYWRVcmlQZXJtaXNzaW9ucyA9IG51bGw7CkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgICAgICBnbG9iYWxNb2RlRmxhZ3MgJj0gfkludGVudC5GTEFHX0dSQU5UX1dSSVRFX1VSSV9QRVJNSVNTSU9OOwogICAgICAgICAgICAgbW9kZUZsYWdzICY9IH5JbnRlbnQuRkxBR19HUkFOVF9XUklURV9VUklfUEVSTUlTU0lPTjsKICAgICAgICAgICAgIGlmIChyZWFkQWN0aXZpdGllcy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChIaXN0b3J5UmVjb3JkIHIgOiByZWFkQWN0aXZpdGllcykgeworICAgICAgICAgICAgICAgIGZvciAoQWN0aXZpdHlSZWNvcmQgciA6IHJlYWRBY3Rpdml0aWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIHIud3JpdGVVcmlQZXJtaXNzaW9ucy5yZW1vdmUodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyLndyaXRlVXJpUGVybWlzc2lvbnMuc2l6ZSgpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHIud3JpdGVVcmlQZXJtaXNzaW9ucyA9IG51bGw7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9HZW9jb2RlclByb3h5LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9HZW9jb2RlclByb3h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwNWRhMgotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0dlb2NvZGVyUHJveHkuamF2YQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWU7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb247CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uR2VvY29kZXJQYXJhbXM7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR2VvY29kZVByb3ZpZGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBBIGNsYXNzIGZvciBwcm94eWluZyBJR2VvY29kZVByb3ZpZGVyIGltcGxlbWVudGF0aW9ucy4KKyAqCisgKiB7QGhpZGV9CisgKi8KK3B1YmxpYyBjbGFzcyBHZW9jb2RlclByb3h5IHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiR2VvY29kZXJQcm94eSI7CisKKyAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisgICAgcHJpdmF0ZSBmaW5hbCBJbnRlbnQgbUludGVudDsKKyAgICBwcml2YXRlIGZpbmFsIENvbm5lY3Rpb24gbVNlcnZpY2VDb25uZWN0aW9uID0gbmV3IENvbm5lY3Rpb24oKTsKKyAgICBwcml2YXRlIElHZW9jb2RlUHJvdmlkZXIgbVByb3ZpZGVyOworCisgICAgcHVibGljIEdlb2NvZGVyUHJveHkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgc2VydmljZU5hbWUpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtSW50ZW50ID0gbmV3IEludGVudChzZXJ2aWNlTmFtZSk7CisgICAgICAgIG1Db250ZXh0LmJpbmRTZXJ2aWNlKG1JbnRlbnQsIG1TZXJ2aWNlQ29ubmVjdGlvbiwgQ29udGV4dC5CSU5EX0FVVE9fQ1JFQVRFKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIENvbm5lY3Rpb24gaW1wbGVtZW50cyBTZXJ2aWNlQ29ubmVjdGlvbiB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZUNvbm5lY3RlZChDb21wb25lbnROYW1lIGNsYXNzTmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB7CisgICAgICAgICAgICBMb2cuZChUQUcsICJvblNlcnZpY2VDb25uZWN0ZWQgIiArIGNsYXNzTmFtZSk7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgICAgICBtUHJvdmlkZXIgPSBJR2VvY29kZVByb3ZpZGVyLlN0dWIuYXNJbnRlcmZhY2Uoc2VydmljZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUpIHsKKyAgICAgICAgICAgIExvZy5kKFRBRywgIm9uU2VydmljZURpc2Nvbm5lY3RlZCAiICsgY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgIG1Qcm92aWRlciA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEZyb21Mb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGludCBtYXhSZXN1bHRzLAorICAgICAgICAgICAgR2VvY29kZXJQYXJhbXMgcGFyYW1zLCBMaXN0PEFkZHJlc3M+IGFkZHJzKSB7CisgICAgICAgIElHZW9jb2RlUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuZ2V0RnJvbUxvY2F0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIG1heFJlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIGFkZHJzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiZ2V0RnJvbUxvY2F0aW9uIGZhaWxlZCIsIGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAiU2VydmljZSBub3QgQXZhaWxhYmxlIjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEZyb21Mb2NhdGlvbk5hbWUoU3RyaW5nIGxvY2F0aW9uTmFtZSwKKyAgICAgICAgICAgIGRvdWJsZSBsb3dlckxlZnRMYXRpdHVkZSwgZG91YmxlIGxvd2VyTGVmdExvbmdpdHVkZSwKKyAgICAgICAgICAgIGRvdWJsZSB1cHBlclJpZ2h0TGF0aXR1ZGUsIGRvdWJsZSB1cHBlclJpZ2h0TG9uZ2l0dWRlLCBpbnQgbWF4UmVzdWx0cywKKyAgICAgICAgICAgIEdlb2NvZGVyUGFyYW1zIHBhcmFtcywgTGlzdDxBZGRyZXNzPiBhZGRycykgeworICAgICAgICBJR2VvY29kZVByb3ZpZGVyIHByb3ZpZGVyOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgeworICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLmdldEZyb21Mb2NhdGlvbk5hbWUobG9jYXRpb25OYW1lLCBsb3dlckxlZnRMYXRpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyTGVmdExvbmdpdHVkZSwgdXBwZXJSaWdodExhdGl0dWRlLCB1cHBlclJpZ2h0TG9uZ2l0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4UmVzdWx0cywgcGFyYW1zLCBhZGRycyk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgImdldEZyb21Mb2NhdGlvbk5hbWUgZmFpbGVkIiwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICJTZXJ2aWNlIG5vdCBBdmFpbGFibGUiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0dwc0xvY2F0aW9uUHJvdmlkZXIuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0dwc0xvY2F0aW9uUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40YjRjNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vR3BzTG9jYXRpb25Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTQ2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWxhcm1NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUdwc1N0YXR1c0xpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUdwc1N0YXR1c1Byb3ZpZGVyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklOZXRJbml0aWF0ZWRMaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Db25uZWN0aXZpdHlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOworaW1wb3J0IGFuZHJvaWQubmV0LlNudHBDbGllbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5CaW5kZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkxvb3BlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5Qb3dlck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5Qcm9jZXNzOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNwYXJzZUludEFycmF5OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLklCYXR0ZXJ5U3RhdHM7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlBob25lOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkdwc05ldEluaXRpYXRlZEhhbmRsZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR3BzTmV0SW5pdGlhdGVkSGFuZGxlci5HcHNOaU5vdGlmaWNhdGlvbjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uU3RyaW5nQnVmZmVySW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5uZXQuSW5ldEFkZHJlc3M7CitpbXBvcnQgamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuUHJvcGVydGllczsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwLkVudHJ5OworaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoOworCisvKioKKyAqIEEgR1BTIGltcGxlbWVudGF0aW9uIG9mIExvY2F0aW9uUHJvdmlkZXIgdXNlZCBieSBMb2NhdGlvbk1hbmFnZXIuCisgKgorICoge0BoaWRlfQorICovCitwdWJsaWMgY2xhc3MgR3BzTG9jYXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJHcHNMb2NhdGlvblByb3ZpZGVyIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFZFUkJPU0UgPSBmYWxzZTsKKworICAgIC8vIHRoZXNlIG5lZWQgdG8gbWF0Y2ggR3BzUG9zaXRpb25Nb2RlIGVudW0gaW4gZ3BzLmgKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1BPU0lUSU9OX01PREVfU1RBTkRBTE9ORSA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19QT1NJVElPTl9NT0RFX01TX0JBU0VEID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1BPU0lUSU9OX01PREVfTVNfQVNTSVNURUQgPSAyOworCisgICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBHcHNQb3NpdGlvblJlY3VycmVuY2UgZW51bSBpbiBncHMuaAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUE9TSVRJT05fUkVDVVJSRU5DRV9QRVJJT0RJQyA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19QT1NJVElPTl9SRUNVUlJFTkNFX1NJTkdMRSA9IDE7CisKKyAgICAvLyB0aGVzZSBuZWVkIHRvIG1hdGNoIEdwc1N0YXR1c1ZhbHVlIGRlZmluZXMgaW4gZ3BzLmgKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19OT05FID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19TRVNTSU9OX0JFR0lOID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19TRVNTSU9OX0VORCA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19TVEFUVVNfRU5HSU5FX09OID0gMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19FTkdJTkVfT0ZGID0gNDsKKworICAgIC8vIHRoZXNlIG5lZWQgdG8gbWF0Y2ggR3BzQXBnc1N0YXR1c1ZhbHVlIGRlZmluZXMgaW4gZ3BzLmgKKyAgICAvKiogQUdQUyBzdGF0dXMgZXZlbnQgdmFsdWVzLiAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUkVRVUVTVF9BR1BTX0RBVEFfQ09OTiA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19SRUxFQVNFX0FHUFNfREFUQV9DT05OID0gMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0FHUFNfREFUQV9DT05ORUNURUQgPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfQUdQU19EQVRBX0NPTk5fRE9ORSA9IDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19BR1BTX0RBVEFfQ09OTl9GQUlMRUQgPSA1OworCisgICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBHcHNMb2NhdGlvbkZsYWdzIGVudW0gaW4gZ3BzLmgKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSU5WQUxJRCA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19MQVRfTE9ORyA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19BTFRJVFVERSA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19TUEVFRCA9IDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19CRUFSSU5HID0gODsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSEFTX0FDQ1VSQUNZID0gMTY7CisKKy8vIElNUE9SVEFOVCAtIHRoZSBHUFNfREVMRVRFXyogc3ltYm9scyBoZXJlIG11c3QgbWF0Y2ggY29uc3RhbnRzIGluIGdwcy5oCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfRVBIRU1FUklTID0gMHgwMDAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0FMTUFOQUMgPSAweDAwMDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfUE9TSVRJT04gPSAweDAwMDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfVElNRSA9IDB4MDAwODsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9JT05PID0gMHgwMDEwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX1VUQyA9IDB4MDAyMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9IRUFMVEggPSAweDAwNDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfU1ZESVIgPSAweDAwODA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfU1ZTVEVFUiA9IDB4MDEwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9TQURBVEEgPSAweDAyMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfUlRJID0gMHgwNDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0NFTExEQl9JTkZPID0gMHg4MDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0FMTCA9IDB4RkZGRjsKKworICAgIC8vIFRoZSBHUFNfQ0FQQUJJTElUWV8qIGZsYWdzIG11c3QgbWF0Y2ggdGhlIHZhbHVlcyBpbiBncHMuaAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfQ0FQQUJJTElUWV9TQ0hFRFVMSU5HID0gMHgwMDAwMDAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfQ0FQQUJJTElUWV9NU0IgPSAweDAwMDAwMDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19DQVBBQklMSVRZX01TQSA9IDB4MDAwMDAwNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0NBUEFCSUxJVFlfU0lOR0xFX1NIT1QgPSAweDAwMDAwMDg7CisKKworICAgIC8vIHRoZXNlIG5lZWQgdG8gbWF0Y2ggQUdwc1R5cGUgZW51bSBpbiBncHMuaAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX1RZUEVfU1VQTCA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFHUFNfVFlQRV9DMksgPSAyOworCisgICAgLy8gZm9yIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX0RBVEFfQ09OTkVDVElPTl9DTE9TRUQgPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOSU5HID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUdQU19EQVRBX0NPTk5FQ1RJT05fT1BFTiA9IDI7CisKKyAgICAvLyBIYW5kbGVyIG1lc3NhZ2VzCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENIRUNLX0xPQ0FUSU9OID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRU5BQkxFID0gMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRU5BQkxFX1RSQUNLSU5HID0gMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVVBEQVRFX05FVFdPUktfU1RBVEUgPSA0OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTkpFQ1RfTlRQX1RJTUUgPSA1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET1dOTE9BRF9YVFJBX0RBVEEgPSA2OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVUERBVEVfTE9DQVRJT04gPSA3OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBRERfTElTVEVORVIgPSA4OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSRU1PVkVfTElTVEVORVIgPSA5OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSRVFVRVNUX1NJTkdMRV9TSE9UID0gMTA7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUEVSVElFU19GSUxFID0gIi9ldGMvZ3BzLmNvbmYiOworCisgICAgcHJpdmF0ZSBpbnQgbUxvY2F0aW9uRmxhZ3MgPSBMT0NBVElPTl9JTlZBTElEOworCisgICAgLy8gY3VycmVudCBzdGF0dXMKKyAgICBwcml2YXRlIGludCBtU3RhdHVzID0gTG9jYXRpb25Qcm92aWRlci5URU1QT1JBUklMWV9VTkFWQUlMQUJMRTsKKworICAgIC8vIHRpbWUgZm9yIGxhc3Qgc3RhdHVzIHVwZGF0ZQorICAgIHByaXZhdGUgbG9uZyBtU3RhdHVzVXBkYXRlVGltZSA9IFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpOworCisgICAgLy8gdHVybiBvZmYgR1BTIGZpeCBpY29uIGlmIHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYSBmaXggaW4gMTAgc2Vjb25kcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgUkVDRU5UX0ZJWF9USU1FT1VUID0gMTAgKiAxMDAwOworCisgICAgLy8gc3RvcCB0cnlpbmcgaWYgd2UgZG8gbm90IHJlY2VpdmUgYSBmaXggd2l0aGluIDYwIHNlY29uZHMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9fRklYX1RJTUVPVVQgPSA2MCAqIDEwMDA7CisKKyAgICAvLyB0cnVlIGlmIHdlIGFyZSBlbmFibGVkCisgICAgcHJpdmF0ZSB2b2xhdGlsZSBib29sZWFuIG1FbmFibGVkOworICAgIAorICAgIC8vIHRydWUgaWYgd2UgaGF2ZSBuZXR3b3JrIGNvbm5lY3Rpdml0eQorICAgIHByaXZhdGUgYm9vbGVhbiBtTmV0d29ya0F2YWlsYWJsZTsKKworICAgIC8vIGZsYWdzIHRvIHRyaWdnZXIgTlRQIG9yIFhUUkEgZGF0YSBkb3dubG9hZCB3aGVuIG5ldHdvcmsgYmVjb21lcyBhdmFpbGFibGUKKyAgICAvLyBpbml0aWFsaXplZCB0byB0cnVlIHNvIHdlIGRvIE5UUCBhbmQgWFRSQSB3aGVuIHRoZSBuZXR3b3JrIGNvbWVzIHVwIGFmdGVyIGJvb3RpbmcKKyAgICBwcml2YXRlIGJvb2xlYW4gbUluamVjdE50cFRpbWVQZW5kaW5nID0gdHJ1ZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gbURvd25sb2FkWHRyYURhdGFQZW5kaW5nID0gdHJ1ZTsKKworICAgIC8vIHRydWUgaWYgR1BTIGlzIG5hdmlnYXRpbmcKKyAgICBwcml2YXRlIGJvb2xlYW4gbU5hdmlnYXRpbmc7CisKKyAgICAvLyB0cnVlIGlmIEdQUyBlbmdpbmUgaXMgb24KKyAgICBwcml2YXRlIGJvb2xlYW4gbUVuZ2luZU9uOworICAgIAorICAgIC8vIHJlcXVlc3RlZCBmcmVxdWVuY3kgb2YgZml4ZXMsIGluIG1pbGxpc2Vjb25kcworICAgIHByaXZhdGUgaW50IG1GaXhJbnRlcnZhbCA9IDEwMDA7CisKKyAgICAvLyB0cnVlIGlmIHdlIHN0YXJ0ZWQgbmF2aWdhdGlvbgorICAgIHByaXZhdGUgYm9vbGVhbiBtU3RhcnRlZDsKKworICAgIC8vIHRydWUgaWYgc2luZ2xlIHNob3QgcmVxdWVzdCBpcyBpbiBwcm9ncmVzcworICAgIHByaXZhdGUgYm9vbGVhbiBtU2luZ2xlU2hvdDsKKworICAgIC8vIGNhcGFiaWxpdGllcyBvZiB0aGUgR1BTIGVuZ2luZQorICAgIHByaXZhdGUgaW50IG1FbmdpbmVDYXBhYmlsaXRpZXM7CisKKyAgICAvLyBmb3IgY2FsY3VsYXRpbmcgdGltZSB0byBmaXJzdCBmaXgKKyAgICBwcml2YXRlIGxvbmcgbUZpeFJlcXVlc3RUaW1lID0gMDsKKyAgICAvLyB0aW1lIHRvIGZpcnN0IGZpeCBmb3IgbW9zdCByZWNlbnQgc2Vzc2lvbgorICAgIHByaXZhdGUgaW50IG1UVEZGID0gMDsKKyAgICAvLyB0aW1lIHdlIHJlY2VpdmVkIG91ciBsYXN0IGZpeAorICAgIHByaXZhdGUgbG9uZyBtTGFzdEZpeFRpbWU7CisKKyAgICBwcml2YXRlIGludCBtUG9zaXRpb25Nb2RlOworCisgICAgLy8gcHJvcGVydGllcyBsb2FkZWQgZnJvbSBQUk9QRVJUSUVTX0ZJTEUKKyAgICBwcml2YXRlIFByb3BlcnRpZXMgbVByb3BlcnRpZXM7CisgICAgcHJpdmF0ZSBTdHJpbmcgbU50cFNlcnZlcjsKKyAgICBwcml2YXRlIFN0cmluZyBtU3VwbFNlcnZlckhvc3Q7CisgICAgcHJpdmF0ZSBpbnQgbVN1cGxTZXJ2ZXJQb3J0OworICAgIHByaXZhdGUgU3RyaW5nIG1DMktTZXJ2ZXJIb3N0OworICAgIHByaXZhdGUgaW50IG1DMktTZXJ2ZXJQb3J0OworCisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgZmluYWwgSUxvY2F0aW9uTWFuYWdlciBtTG9jYXRpb25NYW5hZ2VyOworICAgIHByaXZhdGUgTG9jYXRpb24gbUxvY2F0aW9uID0gbmV3IExvY2F0aW9uKExvY2F0aW9uTWFuYWdlci5HUFNfUFJPVklERVIpOworICAgIHByaXZhdGUgQnVuZGxlIG1Mb2NhdGlvbkV4dHJhcyA9IG5ldyBCdW5kbGUoKTsKKyAgICBwcml2YXRlIEFycmF5TGlzdDxMaXN0ZW5lcj4gbUxpc3RlbmVycyA9IG5ldyBBcnJheUxpc3Q8TGlzdGVuZXI+KCk7CisKKyAgICAvLyBHcHNMb2NhdGlvblByb3ZpZGVyJ3MgaGFuZGxlciB0aHJlYWQKKyAgICBwcml2YXRlIGZpbmFsIFRocmVhZCBtVGhyZWFkOworICAgIC8vIEhhbmRsZXIgZm9yIHByb2Nlc3NpbmcgZXZlbnRzIGluIG1UaHJlYWQuCisgICAgcHJpdmF0ZSBIYW5kbGVyIG1IYW5kbGVyOworICAgIC8vIFVzZWQgdG8gc2lnbmFsIHdoZW4gb3VyIG1haW4gdGhyZWFkIGhhcyBpbml0aWFsaXplZCBldmVyeXRoaW5nCisgICAgcHJpdmF0ZSBmaW5hbCBDb3VudERvd25MYXRjaCBtSW5pdGlhbGl6ZWRMYXRjaCA9IG5ldyBDb3VudERvd25MYXRjaCgxKTsKKworICAgIHByaXZhdGUgU3RyaW5nIG1BR3BzQXBuOworICAgIHByaXZhdGUgaW50IG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZTsKKyAgICBwcml2YXRlIGZpbmFsIENvbm5lY3Rpdml0eU1hbmFnZXIgbUNvbm5NZ3I7CisgICAgcHJpdmF0ZSBmaW5hbCBHcHNOZXRJbml0aWF0ZWRIYW5kbGVyIG1OSUhhbmRsZXI7IAorCisgICAgLy8gV2FrZWxvY2tzCisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFdBS0VMT0NLX0tFWSA9ICJHcHNMb2NhdGlvblByb3ZpZGVyIjsKKyAgICBwcml2YXRlIGZpbmFsIFBvd2VyTWFuYWdlci5XYWtlTG9jayBtV2FrZUxvY2s7CisgICAgLy8gYml0ZmllbGQgb2YgcGVuZGluZyBtZXNzYWdlcyB0byBvdXIgSGFuZGxlcgorICAgIC8vIHVzZWQgb25seSBmb3IgbWVzc2FnZXMgdGhhdCBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBpbnN0YW5jZXMgcXVldWVkCisgICAgcHJpdmF0ZSBpbnQgbVBlbmRpbmdNZXNzYWdlQml0czsKKyAgICAvLyBzZXBhcmF0ZSBjb3VudGVyIGZvciBBRERfTElTVEVORVIgYW5kIFJFTU9WRV9MSVNURU5FUiBtZXNzYWdlcywKKyAgICAvLyB3aGljaCBtaWdodCBoYXZlIG11bHRpcGxlIGluc3RhbmNlcyBxdWV1ZWQKKyAgICBwcml2YXRlIGludCBtUGVuZGluZ0xpc3RlbmVyTWVzc2FnZXM7CisKKyAgICAvLyBBbGFybXMKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgQUxBUk1fV0FLRVVQID0gImNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkFMQVJNX1dBS0VVUCI7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIEFMQVJNX1RJTUVPVVQgPSAiY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uQUxBUk1fVElNRU9VVCI7CisgICAgcHJpdmF0ZSBmaW5hbCBBbGFybU1hbmFnZXIgbUFsYXJtTWFuYWdlcjsKKyAgICBwcml2YXRlIGZpbmFsIFBlbmRpbmdJbnRlbnQgbVdha2V1cEludGVudDsKKyAgICBwcml2YXRlIGZpbmFsIFBlbmRpbmdJbnRlbnQgbVRpbWVvdXRJbnRlbnQ7CisKKyAgICBwcml2YXRlIGZpbmFsIElCYXR0ZXJ5U3RhdHMgbUJhdHRlcnlTdGF0czsKKyAgICBwcml2YXRlIGZpbmFsIFNwYXJzZUludEFycmF5IG1DbGllbnRVaWRzID0gbmV3IFNwYXJzZUludEFycmF5KCk7CisKKyAgICAvLyBob3cgb2Z0ZW4gdG8gcmVxdWVzdCBOVFAgdGltZSwgaW4gbWlsbGlzZWNvbmRzCisgICAgLy8gY3VycmVudCBzZXR0aW5nIDQgaG91cnMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIE5UUF9JTlRFUlZBTCA9IDQqNjAqNjAqMTAwMDsKKyAgICAvLyBob3cgbG9uZyB0byB3YWl0IGlmIHdlIGhhdmUgYSBuZXR3b3JrIGVycm9yIGluIE5UUCBvciBYVFJBIGRvd25sb2FkaW5nCisgICAgLy8gY3VycmVudCBzZXR0aW5nIC0gNSBtaW51dGVzCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBSRVRSWV9JTlRFUlZBTCA9IDUqNjAqMTAwMDsKKworICAgIC8vIHRvIGF2b2lkIGluamVjdGluZyBiYWQgTlRQIHRpbWUsIHdlIHJlamVjdCBhbnkgdGltZSBmaXhlcyB0aGF0IGRpZmZlciBmcm9tIHN5c3RlbSB0aW1lCisgICAgLy8gYnkgbW9yZSB0aGFuIDUgbWludXRlcy4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIE1BWF9OVFBfU1lTVEVNX1RJTUVfT0ZGU0VUID0gNSo2MCoxMDAwOworCisgICAgcHJpdmF0ZSBmaW5hbCBJR3BzU3RhdHVzUHJvdmlkZXIgbUdwc1N0YXR1c1Byb3ZpZGVyID0gbmV3IElHcHNTdGF0dXNQcm92aWRlci5TdHViKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBhZGRHcHNTdGF0dXNMaXN0ZW5lcihJR3BzU3RhdHVzTGlzdGVuZXIgbGlzdGVuZXIpIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworICAgICAgICAgICAgaWYgKGxpc3RlbmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImxpc3RlbmVyIGlzIG51bGwgaW4gYWRkR3BzU3RhdHVzTGlzdGVuZXIiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKKyAgICAgICAgICAgICAgICBJQmluZGVyIGJpbmRlciA9IGxpc3RlbmVyLmFzQmluZGVyKCk7CisgICAgICAgICAgICAgICAgaW50IHNpemUgPSBtTGlzdGVuZXJzLnNpemUoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBMaXN0ZW5lciB0ZXN0ID0gbUxpc3RlbmVycy5nZXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kZXIuZXF1YWxzKHRlc3QubUxpc3RlbmVyLmFzQmluZGVyKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaXN0ZW5lciBhbHJlYWR5IGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBMaXN0ZW5lciBsID0gbmV3IExpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICBiaW5kZXIubGlua1RvRGVhdGgobCwgMCk7CisgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5hZGQobCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmVHcHNTdGF0dXNMaXN0ZW5lcihJR3BzU3RhdHVzTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJsaXN0ZW5lciBpcyBudWxsIGluIGFkZEdwc1N0YXR1c0xpc3RlbmVyIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7CisgICAgICAgICAgICAgICAgSUJpbmRlciBiaW5kZXIgPSBsaXN0ZW5lci5hc0JpbmRlcigpOworICAgICAgICAgICAgICAgIExpc3RlbmVyIGwgPSBudWxsOworICAgICAgICAgICAgICAgIGludCBzaXplID0gbUxpc3RlbmVycy5zaXplKCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplICYmIGwgPT0gbnVsbDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIExpc3RlbmVyIHRlc3QgPSBtTGlzdGVuZXJzLmdldChpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRlci5lcXVhbHModGVzdC5tTGlzdGVuZXIuYXNCaW5kZXIoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0ZXN0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtTGlzdGVuZXJzLnJlbW92ZShsKTsKKyAgICAgICAgICAgICAgICAgICAgYmluZGVyLnVubGlua1RvRGVhdGgobCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyBJR3BzU3RhdHVzUHJvdmlkZXIgZ2V0R3BzU3RhdHVzUHJvdmlkZXIoKSB7CisgICAgICAgIHJldHVybiBtR3BzU3RhdHVzUHJvdmlkZXI7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0UmVjaWV2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworCisgICAgICAgICAgICBpZiAoYWN0aW9uLmVxdWFscyhBTEFSTV9XQUtFVVApKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJBTEFSTV9XQUtFVVAiKTsKKyAgICAgICAgICAgICAgICBzdGFydE5hdmlnYXRpbmcoZmFsc2UpOworICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEFMQVJNX1RJTUVPVVQpKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJBTEFSTV9USU1FT1VUIik7CisgICAgICAgICAgICAgICAgaGliZXJuYXRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU3VwcG9ydGVkKCkgeworICAgICAgICByZXR1cm4gbmF0aXZlX2lzX3N1cHBvcnRlZCgpOworICAgIH0KKworICAgIHB1YmxpYyBHcHNMb2NhdGlvblByb3ZpZGVyKENvbnRleHQgY29udGV4dCwgSUxvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXIpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtTG9jYXRpb25NYW5hZ2VyID0gbG9jYXRpb25NYW5hZ2VyOworICAgICAgICBtTklIYW5kbGVyID0gbmV3IEdwc05ldEluaXRpYXRlZEhhbmRsZXIoY29udGV4dCk7CisKKyAgICAgICAgbUxvY2F0aW9uLnNldEV4dHJhcyhtTG9jYXRpb25FeHRyYXMpOworCisgICAgICAgIC8vIENyZWF0ZSBhIHdha2UgbG9jaworICAgICAgICBQb3dlck1hbmFnZXIgcG93ZXJNYW5hZ2VyID0gKFBvd2VyTWFuYWdlcikgbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlBPV0VSX1NFUlZJQ0UpOworICAgICAgICBtV2FrZUxvY2sgPSBwb3dlck1hbmFnZXIubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLCBXQUtFTE9DS19LRVkpOworICAgICAgICBtV2FrZUxvY2suc2V0UmVmZXJlbmNlQ291bnRlZChmYWxzZSk7CisKKyAgICAgICAgbUFsYXJtTWFuYWdlciA9IChBbGFybU1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOworICAgICAgICBtV2FrZXVwSW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIG5ldyBJbnRlbnQoQUxBUk1fV0FLRVVQKSwgMCk7CisgICAgICAgIG1UaW1lb3V0SW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIG5ldyBJbnRlbnQoQUxBUk1fVElNRU9VVCksIDApOworCisgICAgICAgIG1Db25uTWdyID0gKENvbm5lY3Rpdml0eU1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQ09OTkVDVElWSVRZX1NFUlZJQ0UpOworCisgICAgICAgIC8vIEJhdHRlcnkgc3RhdGlzdGljcyBzZXJ2aWNlIHRvIGJlIG5vdGlmaWVkIHdoZW4gR1BTIHR1cm5zIG9uIG9yIG9mZgorICAgICAgICBtQmF0dGVyeVN0YXRzID0gSUJhdHRlcnlTdGF0cy5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoImJhdHRlcnlpbmZvIikpOworCisgICAgICAgIG1Qcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXMoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKFBST1BFUlRJRVNfRklMRSk7CisgICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gc3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsKKyAgICAgICAgICAgIG1Qcm9wZXJ0aWVzLmxvYWQoc3RyZWFtKTsKKyAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAgbU50cFNlcnZlciA9IG1Qcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJOVFBfU0VSVkVSIiwgbnVsbCk7CisKKyAgICAgICAgICAgIG1TdXBsU2VydmVySG9zdCA9IG1Qcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJTVVBMX0hPU1QiKTsKKyAgICAgICAgICAgIFN0cmluZyBwb3J0U3RyaW5nID0gbVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIlNVUExfUE9SVCIpOworICAgICAgICAgICAgaWYgKG1TdXBsU2VydmVySG9zdCAhPSBudWxsICYmIHBvcnRTdHJpbmcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1TdXBsU2VydmVyUG9ydCA9IEludGVnZXIucGFyc2VJbnQocG9ydFN0cmluZyk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAidW5hYmxlIHRvIHBhcnNlIFNVUExfUE9SVDogIiArIHBvcnRTdHJpbmcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUMyS1NlcnZlckhvc3QgPSBtUHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiQzJLX0hPU1QiKTsKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBtUHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiQzJLX1BPUlQiKTsKKyAgICAgICAgICAgIGlmIChtQzJLU2VydmVySG9zdCAhPSBudWxsICYmIHBvcnRTdHJpbmcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1DMktTZXJ2ZXJQb3J0ID0gSW50ZWdlci5wYXJzZUludChwb3J0U3RyaW5nKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJ1bmFibGUgdG8gcGFyc2UgQzJLX1BPUlQ6ICIgKyBwb3J0U3RyaW5nKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIkNvdWxkIG5vdCBvcGVuIEdQUyBjb25maWd1cmF0aW9uIGZpbGUgIiArIFBST1BFUlRJRVNfRklMRSk7CisgICAgICAgIH0KKworICAgICAgICAvLyB3YWl0IHVudGlsIHdlIGFyZSBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgcmV0dXJuaW5nCisgICAgICAgIG1UaHJlYWQgPSBuZXcgR3BzTG9jYXRpb25Qcm92aWRlclRocmVhZCgpOworICAgICAgICBtVGhyZWFkLnN0YXJ0KCk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1Jbml0aWFsaXplZExhdGNoLmF3YWl0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5pbnRlcnJ1cHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplKCkgeworICAgICAgICAvLyByZWdpc3RlciBvdXIgcmVjZWl2ZXIgb24gb3VyIHRocmVhZCByYXRoZXIgdGhhbiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgSW50ZW50RmlsdGVyIGludGVudEZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKKyAgICAgICAgaW50ZW50RmlsdGVyLmFkZEFjdGlvbihBTEFSTV9XQUtFVVApOworICAgICAgICBpbnRlbnRGaWx0ZXIuYWRkQWN0aW9uKEFMQVJNX1RJTUVPVVQpOworICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZGNhc3RSZWNpZXZlciwgaW50ZW50RmlsdGVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoaXMgcHJvdmlkZXIuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICByZXR1cm4gTG9jYXRpb25NYW5hZ2VyLkdQU19QUk9WSURFUjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIHJlcXVpcmVzIGFjY2VzcyB0byBhCisgICAgICogZGF0YSBuZXR3b3JrIChlLmcuLCB0aGUgSW50ZXJuZXQpLCBmYWxzZSBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVOZXR3b3JrU3RhdGUoaW50IHN0YXRlLCBOZXR3b3JrSW5mbyBpbmZvKSB7CisgICAgICAgIHNlbmRNZXNzYWdlKFVQREFURV9ORVRXT1JLX1NUQVRFLCBzdGF0ZSwgaW5mbyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKKyAgICAgICAgbU5ldHdvcmtBdmFpbGFibGUgPSAoc3RhdGUgPT0gTG9jYXRpb25Qcm92aWRlci5BVkFJTEFCTEUpOworCisgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgTG9nLmQoVEFHLCAidXBkYXRlTmV0d29ya1N0YXRlICIgKyAobU5ldHdvcmtBdmFpbGFibGUgPyAiYXZhaWxhYmxlIiA6ICJ1bmF2YWlsYWJsZSIpCisgICAgICAgICAgICAgICAgKyAiIGluZm86ICIgKyBpbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmZvICE9IG51bGwgJiYgaW5mby5nZXRUeXBlKCkgPT0gQ29ubmVjdGl2aXR5TWFuYWdlci5UWVBFX01PQklMRV9TVVBMCisgICAgICAgICAgICAgICAgJiYgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID09IEFHUFNfREFUQV9DT05ORUNUSU9OX09QRU5JTkcpIHsKKyAgICAgICAgICAgIFN0cmluZyBhcG5OYW1lID0gaW5mby5nZXRFeHRyYUluZm8oKTsKKyAgICAgICAgICAgIGlmIChtTmV0d29ya0F2YWlsYWJsZSAmJiBhcG5OYW1lICE9IG51bGwgJiYgYXBuTmFtZS5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICBtQUdwc0FwbiA9IGFwbk5hbWU7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJjYWxsIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9vcGVuIik7CisgICAgICAgICAgICAgICAgbmF0aXZlX2FncHNfZGF0YV9jb25uX29wZW4oYXBuTmFtZSk7CisgICAgICAgICAgICAgICAgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID0gQUdQU19EQVRBX0NPTk5FQ1RJT05fT1BFTjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJjYWxsIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQiKTsKKyAgICAgICAgICAgICAgICBtQUdwc0FwbiA9IG51bGw7CisgICAgICAgICAgICAgICAgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID0gQUdQU19EQVRBX0NPTk5FQ1RJT05fQ0xPU0VEOworICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtTmV0d29ya0F2YWlsYWJsZSkgeworICAgICAgICAgICAgaWYgKG1JbmplY3ROdHBUaW1lUGVuZGluZykgeworICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKElOSkVDVF9OVFBfVElNRSwgMCwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobURvd25sb2FkWHRyYURhdGFQZW5kaW5nKSB7CisgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoRE9XTkxPQURfWFRSQV9EQVRBLCAwLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVJbmplY3ROdHBUaW1lKCkgeworICAgICAgICBpZiAoIW1OZXR3b3JrQXZhaWxhYmxlKSB7CisgICAgICAgICAgICAvLyB0cnkgYWdhaW4gd2hlbiBuZXR3b3JrIGlzIHVwCisgICAgICAgICAgICBtSW5qZWN0TnRwVGltZVBlbmRpbmcgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1JbmplY3ROdHBUaW1lUGVuZGluZyA9IGZhbHNlOworCisgICAgICAgIFNudHBDbGllbnQgY2xpZW50ID0gbmV3IFNudHBDbGllbnQoKTsKKyAgICAgICAgbG9uZyBkZWxheTsKKworICAgICAgICBpZiAoY2xpZW50LnJlcXVlc3RUaW1lKG1OdHBTZXJ2ZXIsIDEwMDAwKSkgeworICAgICAgICAgICAgbG9uZyB0aW1lID0gY2xpZW50LmdldE50cFRpbWUoKTsKKyAgICAgICAgICAgIGxvbmcgdGltZVJlZmVyZW5jZSA9IGNsaWVudC5nZXROdHBUaW1lUmVmZXJlbmNlKCk7CisgICAgICAgICAgICBpbnQgY2VydGFpbnR5ID0gKGludCkoY2xpZW50LmdldFJvdW5kVHJpcFRpbWUoKS8yKTsKKyAgICAgICAgICAgIGxvbmcgbm93ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisKKyAgICAgICAgICAgIExvZy5kKFRBRywgIk5UUCBzZXJ2ZXIgcmV0dXJuZWQ6ICIKKyAgICAgICAgICAgICAgICAgICAgKyB0aW1lICsgIiAoIiArIG5ldyBEYXRlKHRpbWUpCisgICAgICAgICAgICAgICAgICAgICsgIikgcmVmZXJlbmNlOiAiICsgdGltZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICArICIgY2VydGFpbnR5OiAiICsgY2VydGFpbnR5CisgICAgICAgICAgICAgICAgICAgICsgIiBzeXN0ZW0gdGltZSBvZmZzZXQ6ICIgKyAodGltZSAtIG5vdykpOworCisgICAgICAgICAgICBuYXRpdmVfaW5qZWN0X3RpbWUodGltZSwgdGltZVJlZmVyZW5jZSwgY2VydGFpbnR5KTsKKyAgICAgICAgICAgIGRlbGF5ID0gTlRQX0lOVEVSVkFMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJyZXF1ZXN0VGltZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIGRlbGF5ID0gUkVUUllfSU5URVJWQUw7CisgICAgICAgIH0KKworICAgICAgICAvLyBzZW5kIGRlbGF5ZWQgbWVzc2FnZSBmb3IgbmV4dCBOVFAgaW5qZWN0aW9uCisgICAgICAgIC8vIHNpbmNlIHRoaXMgaXMgZGVsYXllZCBhbmQgbm90IHVyZ2VudCB3ZSBkbyBub3QgaG9sZCBhIHdha2UgbG9jayBoZXJlCisgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKElOSkVDVF9OVFBfVElNRSk7CisgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgSU5KRUNUX05UUF9USU1FKSwgZGVsYXkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVEb3dubG9hZFh0cmFEYXRhKCkgeworICAgICAgICBpZiAoIW1Eb3dubG9hZFh0cmFEYXRhUGVuZGluZykgeworICAgICAgICAgICAgLy8gdHJ5IGFnYWluIHdoZW4gbmV0d29yayBpcyB1cAorICAgICAgICAgICAgbURvd25sb2FkWHRyYURhdGFQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtRG93bmxvYWRYdHJhRGF0YVBlbmRpbmcgPSBmYWxzZTsKKworCisgICAgICAgIEdwc1h0cmFEb3dubG9hZGVyIHh0cmFEb3dubG9hZGVyID0gbmV3IEdwc1h0cmFEb3dubG9hZGVyKG1Db250ZXh0LCBtUHJvcGVydGllcyk7CisgICAgICAgIGJ5dGVbXSBkYXRhID0geHRyYURvd25sb2FkZXIuZG93bmxvYWRYdHJhRGF0YSgpOworICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJjYWxsaW5nIG5hdGl2ZV9pbmplY3RfeHRyYV9kYXRhIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuYXRpdmVfaW5qZWN0X3h0cmFfZGF0YShkYXRhLCBkYXRhLmxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB0cnkgYWdhaW4gbGF0ZXIKKyAgICAgICAgICAgIC8vIHNpbmNlIHRoaXMgaXMgZGVsYXllZCBhbmQgbm90IHVyZ2VudCB3ZSBkbyBub3QgaG9sZCBhIHdha2UgbG9jayBoZXJlCisgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhET1dOTE9BRF9YVFJBX0RBVEEpOworICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBET1dOTE9BRF9YVFJBX0RBVEEpLCBSRVRSWV9JTlRFUlZBTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGlzIGNhbGxlZCB0byBpbmZvcm0gdXMgd2hlbiBhbm90aGVyIGxvY2F0aW9uIHByb3ZpZGVyIHJldHVybnMgYSBsb2NhdGlvbi4KKyAgICAgKiBTb21lZGF5IHdlIG1pZ2h0IHVzZSB0aGlzIGZvciBuZXR3b3JrIGxvY2F0aW9uIGluamVjdGlvbiB0byBhaWQgdGhlIEdQUworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKSB7CisgICAgICAgIHNlbmRNZXNzYWdlKFVQREFURV9MT0NBVElPTiwgMCwgbG9jYXRpb24pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVVcGRhdGVMb2NhdGlvbihMb2NhdGlvbiBsb2NhdGlvbikgeworICAgICAgICBpZiAobG9jYXRpb24uaGFzQWNjdXJhY3koKSkgeworICAgICAgICAgICAgbmF0aXZlX2luamVjdF9sb2NhdGlvbihsb2NhdGlvbi5nZXRMYXRpdHVkZSgpLCBsb2NhdGlvbi5nZXRMb25naXR1ZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uZ2V0QWNjdXJhY3koKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIHJlcXVpcmVzIGFjY2VzcyB0byBhCisgICAgICogc2F0ZWxsaXRlLWJhc2VkIHBvc2l0aW9uaW5nIHN5c3RlbSAoZS5nLiwgR1BTKSwgZmFsc2UKKyAgICAgKiBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZXIgcmVxdWlyZXMgYWNjZXNzIHRvIGFuIGFwcHJvcHJpYXRlCisgICAgICogY2VsbHVsYXIgbmV0d29yayAoZS5nLiwgdG8gbWFrZSB1c2Ugb2YgY2VsbCB0b3dlciBJRHMpLCBmYWxzZQorICAgICAqIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc0NlbGwoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHVzZSBvZiB0aGlzIHByb3ZpZGVyIG1heSByZXN1bHQgaW4gYQorICAgICAqIG1vbmV0YXJ5IGNoYXJnZSB0byB0aGUgdXNlciwgZmFsc2UgaWYgdXNlIGlzIGZyZWUuICBJdCBpcyB1cCB0bworICAgICAqIGVhY2ggcHJvdmlkZXIgdG8gZ2l2ZSBhY2N1cmF0ZSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNNb25ldGFyeUNvc3QoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIGlzIGFibGUgdG8gcHJvdmlkZSBhbHRpdHVkZQorICAgICAqIGluZm9ybWF0aW9uLCBmYWxzZSBvdGhlcndpc2UuICBBIHByb3ZpZGVyIHRoYXQgcmVwb3J0cyBhbHRpdHVkZQorICAgICAqIHVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcyBidXQgbWF5IG9jY2Fzc2lvbmFsbHkgbm90IHJlcG9ydCBpdAorICAgICAqIHNob3VsZCByZXR1cm4gdHJ1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c0FsdGl0dWRlKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIGlzIGFibGUgdG8gcHJvdmlkZSBzcGVlZAorICAgICAqIGluZm9ybWF0aW9uLCBmYWxzZSBvdGhlcndpc2UuICBBIHByb3ZpZGVyIHRoYXQgcmVwb3J0cyBzcGVlZAorICAgICAqIHVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcyBidXQgbWF5IG9jY2Fzc2lvbmFsbHkgbm90IHJlcG9ydCBpdAorICAgICAqIHNob3VsZCByZXR1cm4gdHJ1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIGlzIGFibGUgdG8gcHJvdmlkZSBiZWFyaW5nCisgICAgICogaW5mb3JtYXRpb24sIGZhbHNlIG90aGVyd2lzZS4gIEEgcHJvdmlkZXIgdGhhdCByZXBvcnRzIGJlYXJpbmcKKyAgICAgKiB1bmRlciBtb3N0IGNpcmN1bXN0YW5jZXMgYnV0IG1heSBvY2Nhc3Npb25hbGx5IG5vdCByZXBvcnQgaXQKKyAgICAgKiBzaG91bGQgcmV0dXJuIHRydWUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBwb3dlciByZXF1aXJlbWVudCBmb3IgdGhpcyBwcm92aWRlci4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHBvd2VyIHJlcXVpcmVtZW50IGZvciB0aGlzIHByb3ZpZGVyLCBhcyBvbmUgb2YgdGhlCisgICAgICogY29uc3RhbnRzIENyaXRlcmlhLlBPV0VSX1JFUVVJUkVNRU5UXyouCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgeworICAgICAgICByZXR1cm4gQ3JpdGVyaWEuUE9XRVJfSElHSDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBwcm92aWRlciBtZWV0cyB0aGUgZ2l2ZW4gY3JpdGVyaWEsCisgICAgICogZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIG1lZXRzQ3JpdGVyaWEoQ3JpdGVyaWEgY3JpdGVyaWEpIHsKKyAgICAgICAgcmV0dXJuIChjcml0ZXJpYS5nZXRQb3dlclJlcXVpcmVtZW50KCkgIT0gQ3JpdGVyaWEuUE9XRVJfTE9XKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBob3Jpem9udGFsIGFjY3VyYWN5IG9mIHRoaXMgcHJvdmlkZXIKKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGFjY3VyYWN5IG9mIGxvY2F0aW9uIGZyb20gdGhpcyBwcm92aWRlciwgYXMgb25lCisgICAgICogb2YgdGhlIGNvbnN0YW50cyBDcml0ZXJpYS5BQ0NVUkFDWV8qLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7CisgICAgICAgIHJldHVybiBDcml0ZXJpYS5BQ0NVUkFDWV9GSU5FOworICAgIH0KKworICAgIC8qKgorICAgICAqIEVuYWJsZXMgdGhpcyBwcm92aWRlci4gIFdoZW4gZW5hYmxlZCwgY2FsbHMgdG8gZ2V0U3RhdHVzKCkKKyAgICAgKiBtdXN0IGJlIGhhbmRsZWQuICBIYXJkd2FyZSBtYXkgYmUgc3RhcnRlZCB1cAorICAgICAqIHdoZW4gdGhlIHByb3ZpZGVyIGlzIGVuYWJsZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZW5hYmxlKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1IYW5kbGVyKSB7CisgICAgICAgICAgICBzZW5kTWVzc2FnZShFTkFCTEUsIDEsIG51bGwpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUVuYWJsZSgpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJoYW5kbGVFbmFibGUiKTsKKyAgICAgICAgaWYgKG1FbmFibGVkKSByZXR1cm47CisgICAgICAgIG1FbmFibGVkID0gbmF0aXZlX2luaXQoKTsKKworICAgICAgICBpZiAobUVuYWJsZWQpIHsKKyAgICAgICAgICAgIGlmIChtU3VwbFNlcnZlckhvc3QgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG5hdGl2ZV9zZXRfYWdwc19zZXJ2ZXIoQUdQU19UWVBFX1NVUEwsIG1TdXBsU2VydmVySG9zdCwgbVN1cGxTZXJ2ZXJQb3J0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtQzJLU2VydmVySG9zdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbmF0aXZlX3NldF9hZ3BzX3NlcnZlcihBR1BTX1RZUEVfQzJLLCBtQzJLU2VydmVySG9zdCwgbUMyS1NlcnZlclBvcnQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiRmFpbGVkIHRvIGVuYWJsZSBsb2NhdGlvbiBwcm92aWRlciIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRGlzYWJsZXMgdGhpcyBwcm92aWRlci4gIFdoZW4gZGlzYWJsZWQsIGNhbGxzIHRvIGdldFN0YXR1cygpCisgICAgICogbmVlZCBub3QgYmUgaGFuZGxlZC4gIEhhcmR3YXJlIG1heSBiZSBzaHV0CisgICAgICogZG93biB3aGlsZSB0aGUgcHJvdmlkZXIgaXMgZGlzYWJsZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZGlzYWJsZSgpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtSGFuZGxlcikgeworICAgICAgICAgICAgc2VuZE1lc3NhZ2UoRU5BQkxFLCAwLCBudWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVEaXNhYmxlKCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZURpc2FibGUiKTsKKyAgICAgICAgaWYgKCFtRW5hYmxlZCkgcmV0dXJuOworCisgICAgICAgIG1FbmFibGVkID0gZmFsc2U7CisgICAgICAgIHN0b3BOYXZpZ2F0aW5nKCk7CisKKyAgICAgICAgLy8gZG8gdGhpcyBiZWZvcmUgcmVsZWFzaW5nIHdha2Vsb2NrCisgICAgICAgIG5hdGl2ZV9jbGVhbnVwKCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNFbmFibGVkKCkgeworICAgICAgICByZXR1cm4gbUVuYWJsZWQ7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRTdGF0dXMoQnVuZGxlIGV4dHJhcykgeworICAgICAgICBpZiAoZXh0cmFzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGV4dHJhcy5wdXRJbnQoInNhdGVsbGl0ZXMiLCBtU3ZDb3VudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1TdGF0dXM7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVN0YXR1cyhpbnQgc3RhdHVzLCBpbnQgc3ZDb3VudCkgeworICAgICAgICBpZiAoc3RhdHVzICE9IG1TdGF0dXMgfHwgc3ZDb3VudCAhPSBtU3ZDb3VudCkgeworICAgICAgICAgICAgbVN0YXR1cyA9IHN0YXR1czsKKyAgICAgICAgICAgIG1TdkNvdW50ID0gc3ZDb3VudDsKKyAgICAgICAgICAgIG1Mb2NhdGlvbkV4dHJhcy5wdXRJbnQoInNhdGVsbGl0ZXMiLCBzdkNvdW50KTsKKyAgICAgICAgICAgIG1TdGF0dXNVcGRhdGVUaW1lID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgbG9uZyBnZXRTdGF0dXNVcGRhdGVUaW1lKCkgeworICAgICAgICByZXR1cm4gbVN0YXR1c1VwZGF0ZVRpbWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSkgeworICAgICAgICAvLyBGSVhNRSAtIHNob3VsZCBzZXQgYSBmbGFnIGhlcmUgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIHdpdGggc2luZ2xlIHNob3QgcmVxdWVzdAorICAgICAgICBzeW5jaHJvbml6ZWQgKG1IYW5kbGVyKSB7CisgICAgICAgICAgICBzZW5kTWVzc2FnZShFTkFCTEVfVFJBQ0tJTkcsIChlbmFibGUgPyAxIDogMCksIG51bGwpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKKyAgICAgICAgaWYgKGVuYWJsZSkgeworICAgICAgICAgICAgbVRURkYgPSAwOworICAgICAgICAgICAgbUxhc3RGaXhUaW1lID0gMDsKKyAgICAgICAgICAgIHN0YXJ0TmF2aWdhdGluZyhmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWhhc0NhcGFiaWxpdHkoR1BTX0NBUEFCSUxJVFlfU0NIRURVTElORykpIHsKKyAgICAgICAgICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtV2FrZXVwSW50ZW50KTsKKyAgICAgICAgICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtVGltZW91dEludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdG9wTmF2aWdhdGluZygpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWVzdFNpbmdsZVNob3RGaXgoKSB7CisgICAgICAgIGlmIChtU3RhcnRlZCkgeworICAgICAgICAgICAgLy8gY2Fubm90IGRvIHNpbmdsZSBzaG90IGlmIGFscmVhZHkgbmF2aWdhdGluZworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHN5bmNocm9uaXplZCAobUhhbmRsZXIpIHsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFJFUVVFU1RfU0lOR0xFX1NIT1QpOworICAgICAgICAgICAgTWVzc2FnZSBtID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIFJFUVVFU1RfU0lOR0xFX1NIT1QpOworICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVJlcXVlc3RTaW5nbGVTaG90KCkgeworICAgICAgICBtVFRGRiA9IDA7CisgICAgICAgIG1MYXN0Rml4VGltZSA9IDA7CisgICAgICAgIHN0YXJ0TmF2aWdhdGluZyh0cnVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldE1pblRpbWUgIiArIG1pblRpbWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG1pblRpbWUgPj0gMCkgeworICAgICAgICAgICAgbUZpeEludGVydmFsID0gKGludCltaW5UaW1lOworCisgICAgICAgICAgICBpZiAobVN0YXJ0ZWQgJiYgaGFzQ2FwYWJpbGl0eShHUFNfQ0FQQUJJTElUWV9TQ0hFRFVMSU5HKSkgeworICAgICAgICAgICAgICAgIGlmICghbmF0aXZlX3NldF9wb3NpdGlvbl9tb2RlKG1Qb3NpdGlvbk1vZGUsIEdQU19QT1NJVElPTl9SRUNVUlJFTkNFX1BFUklPRElDLAorICAgICAgICAgICAgICAgICAgICAgICAgbUZpeEludGVydmFsLCAwLCAwKSkgeworICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJzZXRfcG9zaXRpb25fbW9kZSBmYWlsZWQgaW4gc2V0TWluVGltZSgpIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRJbnRlcm5hbFN0YXRlKCkgeworICAgICAgICByZXR1cm4gbmF0aXZlX2dldF9pbnRlcm5hbF9zdGF0ZSgpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgY2xhc3MgTGlzdGVuZXIgaW1wbGVtZW50cyBJQmluZGVyLkRlYXRoUmVjaXBpZW50IHsKKyAgICAgICAgZmluYWwgSUdwc1N0YXR1c0xpc3RlbmVyIG1MaXN0ZW5lcjsKKyAgICAgICAgCisgICAgICAgIGludCBtU2Vuc29ycyA9IDA7CisgICAgICAgIAorICAgICAgICBMaXN0ZW5lcihJR3BzU3RhdHVzTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgICAgIG1MaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBiaW5kZXJEaWVkKCkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJHUFMgc3RhdHVzIGxpc3RlbmVyIGRpZWQiKTsKKworICAgICAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKKyAgICAgICAgICAgICAgICBtTGlzdGVuZXJzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtTGlzdGVuZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1MaXN0ZW5lci5hc0JpbmRlcigpLnVubGlua1RvRGVhdGgodGhpcywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihpbnQgdWlkKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVdha2VMb2NrKSB7CisgICAgICAgICAgICBtUGVuZGluZ0xpc3RlbmVyTWVzc2FnZXMrKzsKKyAgICAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoKTsKKyAgICAgICAgICAgIE1lc3NhZ2UgbSA9IE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBBRERfTElTVEVORVIpOworICAgICAgICAgICAgbS5hcmcxID0gdWlkOworICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlQWRkTGlzdGVuZXIoaW50IHVpZCkgeworICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgeworICAgICAgICAgICAgaWYgKG1DbGllbnRVaWRzLmluZGV4T2ZLZXkodWlkKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGJlIGhlcmUgLS0gYWxyZWFkeSBoYXZlIHRoaXMgdWlkLgorICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkR1cGxpY2F0ZSBhZGQgbGlzdGVuZXIgZm9yIHVpZCAiICsgdWlkKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtQ2xpZW50VWlkcy5wdXQodWlkLCAwKTsKKyAgICAgICAgICAgIGlmIChtTmF2aWdhdGluZykgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMubm90ZVN0YXJ0R3BzKHVpZCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIGFkZExpc3RlbmVyIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoaW50IHVpZCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1XYWtlTG9jaykgeworICAgICAgICAgICAgbVBlbmRpbmdMaXN0ZW5lck1lc3NhZ2VzKys7CisgICAgICAgICAgICBtV2FrZUxvY2suYWNxdWlyZSgpOworICAgICAgICAgICAgTWVzc2FnZSBtID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIFJFTU9WRV9MSVNURU5FUik7CisgICAgICAgICAgICBtLmFyZzEgPSB1aWQ7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVSZW1vdmVMaXN0ZW5lcihpbnQgdWlkKSB7CisgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7CisgICAgICAgICAgICBpZiAobUNsaWVudFVpZHMuaW5kZXhPZktleSh1aWQpIDwgMCkgeworICAgICAgICAgICAgICAgIC8vIFNob3VsZG4ndCBiZSBoZXJlIC0tIGRvbid0IGhhdmUgdGhpcyB1aWQuCisgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiVW5uZWVkZWQgcmVtb3ZlIGxpc3RlbmVyIGZvciB1aWQgIiArIHVpZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbUNsaWVudFVpZHMuZGVsZXRlKHVpZCk7CisgICAgICAgICAgICBpZiAobU5hdmlnYXRpbmcpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLm5vdGVTdG9wR3BzKHVpZCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIHJlbW92ZUxpc3RlbmVyIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcykgeworICAgICAgICAKKyAgICAgICAgbG9uZyBpZGVudGl0eSA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOworICAgICAgICBib29sZWFuIHJlc3VsdCA9IGZhbHNlOworCisgICAgICAgIGlmICgiZGVsZXRlX2FpZGluZ19kYXRhIi5lcXVhbHMoY29tbWFuZCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRlbGV0ZUFpZGluZ0RhdGEoZXh0cmFzKTsKKyAgICAgICAgfSBlbHNlIGlmICgiZm9yY2VfdGltZV9pbmplY3Rpb24iLmVxdWFscyhjb21tYW5kKSkgeworICAgICAgICAgICAgc2VuZE1lc3NhZ2UoSU5KRUNUX05UUF9USU1FLCAwLCBudWxsKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoImZvcmNlX3h0cmFfaW5qZWN0aW9uIi5lcXVhbHMoY29tbWFuZCkpIHsKKyAgICAgICAgICAgIGlmIChuYXRpdmVfc3VwcG9ydHNfeHRyYSgpKSB7CisgICAgICAgICAgICAgICAgeHRyYURvd25sb2FkUmVxdWVzdCgpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJzZW5kRXh0cmFDb21tYW5kOiB1bmtub3duIGNvbW1hbmQgIiArIGNvbW1hbmQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudGl0eSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGRlbGV0ZUFpZGluZ0RhdGEoQnVuZGxlIGV4dHJhcykgeworICAgICAgICBpbnQgZmxhZ3M7CisKKyAgICAgICAgaWYgKGV4dHJhcyA9PSBudWxsKSB7CisgICAgICAgICAgICBmbGFncyA9IEdQU19ERUxFVEVfQUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZmxhZ3MgPSAwOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJlcGhlbWVyaXMiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9FUEhFTUVSSVM7CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oImFsbWFuYWMiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9BTE1BTkFDOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJwb3NpdGlvbiIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1BPU0lUSU9OOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJ0aW1lIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfVElNRTsKKyAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigiaW9ubyIpKSBmbGFncyB8PSBHUFNfREVMRVRFX0lPTk87CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oInV0YyIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1VUQzsKKyAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigiaGVhbHRoIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfSEVBTFRIOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJzdmRpciIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1NWRElSOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJzdnN0ZWVyIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfU1ZTVEVFUjsKKyAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigic2FkYXRhIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfU0FEQVRBOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJydGkiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9SVEk7CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oImNlbGxkYi1pbmZvIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfQ0VMTERCX0lORk87CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oImFsbCIpKSBmbGFncyB8PSBHUFNfREVMRVRFX0FMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmbGFncyAhPSAwKSB7CisgICAgICAgICAgICBuYXRpdmVfZGVsZXRlX2FpZGluZ19kYXRhKGZsYWdzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzdGFydE5hdmlnYXRpbmcoYm9vbGVhbiBzaW5nbGVTaG90KSB7CisgICAgICAgIGlmICghbVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAic3RhcnROYXZpZ2F0aW5nIik7CisgICAgICAgICAgICBtU3RhcnRlZCA9IHRydWU7CisgICAgICAgICAgICBtU2luZ2xlU2hvdCA9IHNpbmdsZVNob3Q7CisgICAgICAgICAgICBtUG9zaXRpb25Nb2RlID0gR1BTX1BPU0lUSU9OX01PREVfU1RBTkRBTE9ORTsKKworICAgICAgICAgICAgIGlmIChTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuQVNTSVNURURfR1BTX0VOQUJMRUQsIDEpICE9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoc2luZ2xlU2hvdCAmJiBoYXNDYXBhYmlsaXR5KEdQU19DQVBBQklMSVRZX01TQSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbVBvc2l0aW9uTW9kZSA9IEdQU19QT1NJVElPTl9NT0RFX01TX0FTU0lTVEVEOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2FwYWJpbGl0eShHUFNfQ0FQQUJJTElUWV9NU0EpKSB7CisgICAgICAgICAgICAgICAgICAgIG1Qb3NpdGlvbk1vZGUgPSBHUFNfUE9TSVRJT05fTU9ERV9NU19CQVNFRDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBpbnRlcnZhbCA9IChoYXNDYXBhYmlsaXR5KEdQU19DQVBBQklMSVRZX1NDSEVEVUxJTkcpID8gbUZpeEludGVydmFsIDogMTAwMCk7CisgICAgICAgICAgICBpZiAoIW5hdGl2ZV9zZXRfcG9zaXRpb25fbW9kZShtUG9zaXRpb25Nb2RlLCBHUFNfUE9TSVRJT05fUkVDVVJSRU5DRV9QRVJJT0RJQywKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwsIDAsIDApKSB7CisgICAgICAgICAgICAgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJzZXRfcG9zaXRpb25fbW9kZSBmYWlsZWQgaW4gc3RhcnROYXZpZ2F0aW5nKCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW5hdGl2ZV9zdGFydCgpKSB7CisgICAgICAgICAgICAgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJuYXRpdmVfc3RhcnQgZmFpbGVkIGluIHN0YXJ0TmF2aWdhdGluZygpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyByZXNldCBTViBjb3VudCB0byB6ZXJvCisgICAgICAgICAgICB1cGRhdGVTdGF0dXMoTG9jYXRpb25Qcm92aWRlci5URU1QT1JBUklMWV9VTkFWQUlMQUJMRSwgMCk7CisgICAgICAgICAgICBtRml4UmVxdWVzdFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIGlmICghaGFzQ2FwYWJpbGl0eShHUFNfQ0FQQUJJTElUWV9TQ0hFRFVMSU5HKSkgeworICAgICAgICAgICAgICAgIC8vIHNldCB0aW1lciB0byBnaXZlIHVwIGlmIHdlIGRvIG5vdCByZWNlaXZlIGEgZml4IHdpdGhpbiBOT19GSVhfVElNRU9VVAorICAgICAgICAgICAgICAgIC8vIGFuZCBvdXIgZml4IGludGVydmFsIGlzIG5vdCBzaG9ydAorICAgICAgICAgICAgICAgIGlmIChtRml4SW50ZXJ2YWwgPj0gTk9fRklYX1RJTUVPVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgbUFsYXJtTWFuYWdlci5zZXQoQWxhcm1NYW5hZ2VyLkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpICsgTk9fRklYX1RJTUVPVVQsIG1UaW1lb3V0SW50ZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc3RvcE5hdmlnYXRpbmcoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAic3RvcE5hdmlnYXRpbmciKTsKKyAgICAgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgICAgICBtU3RhcnRlZCA9IGZhbHNlOworICAgICAgICAgICAgbVNpbmdsZVNob3QgPSBmYWxzZTsKKyAgICAgICAgICAgIG5hdGl2ZV9zdG9wKCk7CisgICAgICAgICAgICBtVFRGRiA9IDA7CisgICAgICAgICAgICBtTGFzdEZpeFRpbWUgPSAwOworICAgICAgICAgICAgbUxvY2F0aW9uRmxhZ3MgPSBMT0NBVElPTl9JTlZBTElEOworCisgICAgICAgICAgICAvLyByZXNldCBTViBjb3VudCB0byB6ZXJvCisgICAgICAgICAgICB1cGRhdGVTdGF0dXMoTG9jYXRpb25Qcm92aWRlci5URU1QT1JBUklMWV9VTkFWQUlMQUJMRSwgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGliZXJuYXRlKCkgeworICAgICAgICAvLyBzdG9wIEdQUyB1bnRpbCBvdXIgbmV4dCBmaXggaW50ZXJ2YWwgYXJyaXZlcworICAgICAgICBzdG9wTmF2aWdhdGluZygpOworICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtVGltZW91dEludGVudCk7CisgICAgICAgIG1BbGFybU1hbmFnZXIuY2FuY2VsKG1XYWtldXBJbnRlbnQpOworICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpOworICAgICAgICBtQWxhcm1NYW5hZ2VyLnNldChBbGFybU1hbmFnZXIuRUxBUFNFRF9SRUFMVElNRV9XQUtFVVAsCisgICAgICAgICAgICAgICAgU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkgKyBtRml4SW50ZXJ2YWwsIG1XYWtldXBJbnRlbnQpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBoYXNDYXBhYmlsaXR5KGludCBjYXBhYmlsaXR5KSB7CisgICAgICAgIHJldHVybiAoKG1FbmdpbmVDYXBhYmlsaXRpZXMgJiBjYXBhYmlsaXR5KSAhPSAwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjYWxsZWQgZnJvbSBuYXRpdmUgY29kZSB0byB1cGRhdGUgb3VyIHBvc2l0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZXBvcnRMb2NhdGlvbihpbnQgZmxhZ3MsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFsdGl0dWRlLAorICAgICAgICAgICAgZmxvYXQgc3BlZWQsIGZsb2F0IGJlYXJpbmcsIGZsb2F0IGFjY3VyYWN5LCBsb25nIHRpbWVzdGFtcCkgeworICAgICAgICBpZiAoVkVSQk9TRSkgTG9nLnYoVEFHLCAicmVwb3J0TG9jYXRpb24gbGF0OiAiICsgbGF0aXR1ZGUgKyAiIGxvbmc6ICIgKyBsb25naXR1ZGUgKworICAgICAgICAgICAgICAgICIgdGltZXN0YW1wOiAiICsgdGltZXN0YW1wKTsKKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NhdGlvbikgeworICAgICAgICAgICAgbUxvY2F0aW9uRmxhZ3MgPSBmbGFnczsKKyAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBMT0NBVElPTl9IQVNfTEFUX0xPTkcpID09IExPQ0FUSU9OX0hBU19MQVRfTE9ORykgeworICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRMYXRpdHVkZShsYXRpdHVkZSk7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uLnNldExvbmdpdHVkZShsb25naXR1ZGUpOworICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRUaW1lKHRpbWVzdGFtcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGZsYWdzICYgTE9DQVRJT05fSEFTX0FMVElUVURFKSA9PSBMT0NBVElPTl9IQVNfQUxUSVRVREUpIHsKKyAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0QWx0aXR1ZGUoYWx0aXR1ZGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtTG9jYXRpb24ucmVtb3ZlQWx0aXR1ZGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBMT0NBVElPTl9IQVNfU1BFRUQpID09IExPQ0FUSU9OX0hBU19TUEVFRCkgeworICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRTcGVlZChzcGVlZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5yZW1vdmVTcGVlZCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChmbGFncyAmIExPQ0FUSU9OX0hBU19CRUFSSU5HKSA9PSBMT0NBVElPTl9IQVNfQkVBUklORykgeworICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRCZWFyaW5nKGJlYXJpbmcpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtTG9jYXRpb24ucmVtb3ZlQmVhcmluZygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChmbGFncyAmIExPQ0FUSU9OX0hBU19BQ0NVUkFDWSkgPT0gTE9DQVRJT05fSEFTX0FDQ1VSQUNZKSB7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uLnNldEFjY3VyYWN5KGFjY3VyYWN5KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uLnJlbW92ZUFjY3VyYWN5KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uTWFuYWdlci5yZXBvcnRMb2NhdGlvbihtTG9jYXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGNhbGxpbmcgcmVwb3J0TG9jYXRpb24iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1MYXN0Rml4VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAvLyByZXBvcnQgdGltZSB0byBmaXJzdCBmaXgKKyAgICAgICAgaWYgKG1UVEZGID09IDAgJiYgKGZsYWdzICYgTE9DQVRJT05fSEFTX0xBVF9MT05HKSA9PSBMT0NBVElPTl9IQVNfTEFUX0xPTkcpIHsKKyAgICAgICAgICAgIG1UVEZGID0gKGludCkobUxhc3RGaXhUaW1lIC0gbUZpeFJlcXVlc3RUaW1lKTsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiVFRGRjogIiArIG1UVEZGKTsKKworICAgICAgICAgICAgLy8gbm90aWZ5IHN0YXR1cyBsaXN0ZW5lcnMKKyAgICAgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7CisgICAgICAgICAgICAgICAgaW50IHNpemUgPSBtTGlzdGVuZXJzLnNpemUoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBMaXN0ZW5lciBsaXN0ZW5lciA9IG1MaXN0ZW5lcnMuZ2V0KGkpOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubUxpc3RlbmVyLm9uRmlyc3RGaXgobVRURkYpOyAKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiBzdG9wTmF2aWdhdGluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRqdXN0IGZvciBzaXplIG9mIGxpc3QgY2hhbmdpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtLTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU2luZ2xlU2hvdCkgeworICAgICAgICAgICAgc3RvcE5hdmlnYXRpbmcoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobVN0YXJ0ZWQgJiYgbVN0YXR1cyAhPSBMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSkgeworICAgICAgICAgICAgLy8gd2Ugd2FudCB0byB0aW1lIG91dCBpZiB3ZSBkbyBub3QgcmVjZWl2ZSBhIGZpeAorICAgICAgICAgICAgLy8gd2l0aGluIHRoZSB0aW1lIG91dCBhbmQgd2UgYXJlIHJlcXVlc3RpbmcgaW5mcmVxdWVudCBmaXhlcworICAgICAgICAgICAgaWYgKCFoYXNDYXBhYmlsaXR5KEdQU19DQVBBQklMSVRZX1NDSEVEVUxJTkcpICYmIG1GaXhJbnRlcnZhbCA8IE5PX0ZJWF9USU1FT1VUKSB7CisgICAgICAgICAgICAgICAgbUFsYXJtTWFuYWdlci5jYW5jZWwobVRpbWVvdXRJbnRlbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBzZW5kIGFuIGludGVudCB0byBub3RpZnkgdGhhdCB0aGUgR1BTIGlzIHJlY2VpdmluZyBmaXhlcy4KKyAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KExvY2F0aW9uTWFuYWdlci5HUFNfRklYX0NIQU5HRV9BQ1RJT04pOworICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKExvY2F0aW9uTWFuYWdlci5FWFRSQV9HUFNfRU5BQkxFRCwgdHJ1ZSk7CisgICAgICAgICAgICBtQ29udGV4dC5zZW5kQnJvYWRjYXN0KGludGVudCk7CisgICAgICAgICAgICB1cGRhdGVTdGF0dXMoTG9jYXRpb25Qcm92aWRlci5BVkFJTEFCTEUsIG1TdkNvdW50KTsKKyAgICAgICAgfQorCisgICAgICAgaWYgKCFoYXNDYXBhYmlsaXR5KEdQU19DQVBBQklMSVRZX1NDSEVEVUxJTkcpICYmIG1TdGFydGVkICYmIG1GaXhJbnRlcnZhbCA+IDEwMDApIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiZ290IGZpeCwgaGliZXJuYXRpbmciKTsKKyAgICAgICAgICAgIGhpYmVybmF0ZSgpOworICAgICAgICB9CisgICB9CisKKyAgICAvKioKKyAgICAgKiBjYWxsZWQgZnJvbSBuYXRpdmUgY29kZSB0byB1cGRhdGUgb3VyIHN0YXR1cworICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZXBvcnRTdGF0dXMoaW50IHN0YXR1cykgeworICAgICAgICBpZiAoVkVSQk9TRSkgTG9nLnYoVEFHLCAicmVwb3J0U3RhdHVzIHN0YXR1czogIiArIHN0YXR1cyk7CisKKyAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gd2FzTmF2aWdhdGluZyA9IG1OYXZpZ2F0aW5nOworCisgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICAgICAgICAgIGNhc2UgR1BTX1NUQVRVU19TRVNTSU9OX0JFR0lOOgorICAgICAgICAgICAgICAgICAgICBtTmF2aWdhdGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1FbmdpbmVPbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR1BTX1NUQVRVU19TRVNTSU9OX0VORDoKKyAgICAgICAgICAgICAgICAgICAgbU5hdmlnYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHUFNfU1RBVFVTX0VOR0lORV9PTjoKKyAgICAgICAgICAgICAgICAgICAgbUVuZ2luZU9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHUFNfU1RBVFVTX0VOR0lORV9PRkY6CisgICAgICAgICAgICAgICAgICAgIG1FbmdpbmVPbiA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBtTmF2aWdhdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdhc05hdmlnYXRpbmcgIT0gbU5hdmlnYXRpbmcpIHsKKyAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIExpc3RlbmVyIGxpc3RlbmVyID0gbUxpc3RlbmVycy5nZXQoaSk7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobU5hdmlnYXRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25HcHNTdGFydGVkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLm1MaXN0ZW5lci5vbkdwc1N0b3BwZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZXBvcnRTdGF0dXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1MaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkanVzdCBmb3Igc2l6ZSBvZiBsaXN0IGNoYW5naW5nCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplLS07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgYmF0dGVyeSBzdGF0cworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPW1DbGllbnRVaWRzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdWlkID0gbUNsaWVudFVpZHMua2V5QXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobU5hdmlnYXRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLm5vdGVTdGFydEdwcyh1aWQpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLm5vdGVTdG9wR3BzKHVpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gcmVwb3J0U3RhdHVzIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gc2VuZCBhbiBpbnRlbnQgdG8gbm90aWZ5IHRoYXQgdGhlIEdQUyBoYXMgYmVlbiBlbmFibGVkIG9yIGRpc2FibGVkLgorICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KExvY2F0aW9uTWFuYWdlci5HUFNfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoTG9jYXRpb25NYW5hZ2VyLkVYVFJBX0dQU19FTkFCTEVELCBtTmF2aWdhdGluZyk7CisgICAgICAgICAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChpbnRlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gdXBkYXRlIFNWIGluZm8KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0U3ZTdGF0dXMoKSB7CisKKyAgICAgICAgaW50IHN2Q291bnQgPSBuYXRpdmVfcmVhZF9zdl9zdGF0dXMobVN2cywgbVNucnMsIG1TdkVsZXZhdGlvbnMsIG1TdkF6aW11dGhzLCBtU3ZNYXNrcyk7CisgICAgICAgIAorICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgeworICAgICAgICAgICAgaW50IHNpemUgPSBtTGlzdGVuZXJzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgTGlzdGVuZXIgbGlzdGVuZXIgPSBtTGlzdGVuZXJzLmdldChpKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25TdlN0YXR1c0NoYW5nZWQoc3ZDb3VudCwgbVN2cywgbVNucnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdkVsZXZhdGlvbnMsIG1TdkF6aW11dGhzLCBtU3ZNYXNrc1tFUEhFTUVSSVNfTUFTS10sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10sIG1Tdk1hc2tzW1VTRURfRk9SX0ZJWF9NQVNLXSk7IAorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZXBvcnRTdkluZm8iKTsKKyAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworICAgICAgICAgICAgICAgICAgICAvLyBhZGp1c3QgZm9yIHNpemUgb2YgbGlzdCBjaGFuZ2luZworICAgICAgICAgICAgICAgICAgICBzaXplLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKFZFUkJPU0UpIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIlNWIGNvdW50OiAiICsgc3ZDb3VudCArCisgICAgICAgICAgICAgICAgICAgICIgZXBoZW1lcmlzTWFzazogIiArIEludGVnZXIudG9IZXhTdHJpbmcobVN2TWFza3NbRVBIRU1FUklTX01BU0tdKSArCisgICAgICAgICAgICAgICAgICAgICIgYWxtYW5hY01hc2s6ICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10pKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3ZDb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgTG9nLnYoVEFHLCAic3Y6ICIgKyBtU3ZzW2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgc25yOiAiICsgKGZsb2F0KW1TbnJzW2ldLzEwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgZWxldjogIiArIG1TdkVsZXZhdGlvbnNbaV0gKworICAgICAgICAgICAgICAgICAgICAgICAgIiBhemltdXRoOiAiICsgbVN2QXppbXV0aHNbaV0gKworICAgICAgICAgICAgICAgICAgICAgICAgKChtU3ZNYXNrc1tFUEhFTUVSSVNfTUFTS10gJiAoMSA8PCAobVN2c1tpXSAtIDEpKSkgPT0gMCA/ICIgICIgOiAiIEUiKSArCisgICAgICAgICAgICAgICAgICAgICAgICAoKG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10gJiAoMSA8PCAobVN2c1tpXSAtIDEpKSkgPT0gMCA/ICIgICIgOiAiIEEiKSArCisgICAgICAgICAgICAgICAgICAgICAgICAoKG1Tdk1hc2tzW1VTRURfRk9SX0ZJWF9NQVNLXSAmICgxIDw8IChtU3ZzW2ldIC0gMSkpKSA9PSAwID8gIiIgOiAiVSIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIHJldHVybiBudW1iZXIgb2Ygc2V0cyB1c2VkIGluIGZpeCBpbnN0ZWFkIG9mIHRvdGFsCisgICAgICAgIHVwZGF0ZVN0YXR1cyhtU3RhdHVzLCBJbnRlZ2VyLmJpdENvdW50KG1Tdk1hc2tzW1VTRURfRk9SX0ZJWF9NQVNLXSkpOworCisgICAgICAgIGlmIChtTmF2aWdhdGluZyAmJiBtU3RhdHVzID09IExvY2F0aW9uUHJvdmlkZXIuQVZBSUxBQkxFICYmIG1MYXN0Rml4VGltZSA+IDAgJiYKKyAgICAgICAgICAgIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gbUxhc3RGaXhUaW1lID4gUkVDRU5UX0ZJWF9USU1FT1VUKSB7CisgICAgICAgICAgICAvLyBzZW5kIGFuIGludGVudCB0byBub3RpZnkgdGhhdCB0aGUgR1BTIGlzIG5vIGxvbmdlciByZWNlaXZpbmcgZml4ZXMuCisgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChMb2NhdGlvbk1hbmFnZXIuR1BTX0ZJWF9DSEFOR0VfQUNUSU9OKTsKKyAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShMb2NhdGlvbk1hbmFnZXIuRVhUUkFfR1BTX0VOQUJMRUQsIGZhbHNlKTsKKyAgICAgICAgICAgIG1Db250ZXh0LnNlbmRCcm9hZGNhc3QoaW50ZW50KTsKKyAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhMb2NhdGlvblByb3ZpZGVyLlRFTVBPUkFSSUxZX1VOQVZBSUxBQkxFLCBtU3ZDb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjYWxsZWQgZnJvbSBuYXRpdmUgY29kZSB0byB1cGRhdGUgQUdQUyBzdGF0dXMKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0QUdwc1N0YXR1cyhpbnQgdHlwZSwgaW50IHN0YXR1cykgeworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICAgICAgY2FzZSBHUFNfUkVRVUVTVF9BR1BTX0RBVEFfQ09OTjoKKyAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IG1Db25uTWdyLnN0YXJ0VXNpbmdOZXR3b3JrRmVhdHVyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpdml0eU1hbmFnZXIuVFlQRV9NT0JJTEUsIFBob25lLkZFQVRVUkVfRU5BQkxFX1NVUEwpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUGhvbmUuQVBOX0FMUkVBRFlfQUNUSVZFKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtQUdwc0FwbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fb3BlbihtQUdwc0Fwbik7CisgICAgICAgICAgICAgICAgICAgICAgICBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgPSBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAibUFHcHNBcG4gbm90IHNldCB3aGVuIHJlY2VpdmluZyBQaG9uZS5BUE5fQUxSRUFEWV9BQ1RJVkUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFBob25lLkFQTl9SRVFVRVNUX1NUQVJURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID0gQUdQU19EQVRBX0NPTk5FQ1RJT05fT1BFTklORzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fZmFpbGVkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHUFNfUkVMRUFTRV9BR1BTX0RBVEFfQ09OTjoKKyAgICAgICAgICAgICAgICBpZiAobUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlICE9IEFHUFNfREFUQV9DT05ORUNUSU9OX0NMT1NFRCkgeworICAgICAgICAgICAgICAgICAgICBtQ29ubk1nci5zdG9wVXNpbmdOZXR3b3JrRmVhdHVyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0aXZpdHlNYW5hZ2VyLlRZUEVfTU9CSUxFLCBQaG9uZS5GRUFUVVJFX0VOQUJMRV9TVVBMKTsKKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlX2FncHNfZGF0YV9jb25uX2Nsb3NlZCgpOworICAgICAgICAgICAgICAgICAgICBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgPSBBR1BTX0RBVEFfQ09OTkVDVElPTl9DTE9TRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHUFNfQUdQU19EQVRBX0NPTk5FQ1RFRDoKKyAgICAgICAgICAgICAgICAvLyBMb2cuZChUQUcsICJHUFNfQUdQU19EQVRBX0NPTk5FQ1RFRCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHUFNfQUdQU19EQVRBX0NPTk5fRE9ORToKKyAgICAgICAgICAgICAgICAvLyBMb2cuZChUQUcsICJHUFNfQUdQU19EQVRBX0NPTk5fRE9ORSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHUFNfQUdQU19EQVRBX0NPTk5fRkFJTEVEOgorICAgICAgICAgICAgICAgIC8vIExvZy5kKFRBRywgIkdQU19BR1BTX0RBVEFfQ09OTl9GQUlMRUQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIHJlcG9ydCBOTUVBIGRhdGEgcmVjZWl2ZWQKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0Tm1lYShsb25nIHRpbWVzdGFtcCkgeworICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgeworICAgICAgICAgICAgaW50IHNpemUgPSBtTGlzdGVuZXJzLnNpemUoKTsKKyAgICAgICAgICAgIGlmIChzaXplID4gMCkgeworICAgICAgICAgICAgICAgIC8vIGRvbid0IGJvdGhlciBjcmVhdGluZyB0aGUgU3RyaW5nIGlmIHdlIGhhdmUgbm8gbGlzdGVuZXJzCisgICAgICAgICAgICAgICAgaW50IGxlbmd0aCA9IG5hdGl2ZV9yZWFkX25tZWEobU5tZWFCdWZmZXIsIG1ObWVhQnVmZmVyLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIG5tZWEgPSBuZXcgU3RyaW5nKG1ObWVhQnVmZmVyLCAwLCBsZW5ndGgpOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgTGlzdGVuZXIgbGlzdGVuZXIgPSBtTGlzdGVuZXJzLmdldChpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLm1MaXN0ZW5lci5vbk5tZWFSZWNlaXZlZCh0aW1lc3RhbXAsIG5tZWEpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIHJlcG9ydE5tZWEiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1MaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkanVzdCBmb3Igc2l6ZSBvZiBsaXN0IGNoYW5naW5nCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplLS07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjYWxsZWQgZnJvbSBuYXRpdmUgY29kZSB0byBpbmZvcm0gdXMgd2hhdCB0aGUgR1BTIGVuZ2luZSBjYXBhYmlsaXRpZXMgYXJlCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNldEVuZ2luZUNhcGFiaWxpdGllcyhpbnQgY2FwYWJpbGl0aWVzKSB7CisgICAgICAgIG1FbmdpbmVDYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gcmVxdWVzdCBYVFJBIGRhdGEKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgeHRyYURvd25sb2FkUmVxdWVzdCgpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ4dHJhRG93bmxvYWRSZXF1ZXN0Iik7CisgICAgICAgIHNlbmRNZXNzYWdlKERPV05MT0FEX1hUUkFfREFUQSwgMCwgbnVsbCk7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTkkgQ2xpZW50IHN1cHBvcnQKKwkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwcml2YXRlIGZpbmFsIElOZXRJbml0aWF0ZWRMaXN0ZW5lciBtTmV0SW5pdGlhdGVkTGlzdGVuZXIgPSBuZXcgSU5ldEluaXRpYXRlZExpc3RlbmVyLlN0dWIoKSB7CisgICAgCS8vIFNlbmRzIGEgcmVzcG9uc2UgZm9yIGFuIE5JIHJlcWV1c3QgdG8gSEFMLgorICAgIAlwdWJsaWMgYm9vbGVhbiBzZW5kTmlSZXNwb25zZShpbnQgbm90aWZpY2F0aW9uSWQsIGludCB1c2VyUmVzcG9uc2UpCisgICAgCXsKKyAgICAgICAgCS8vIFRPRE8gQWRkIFBlcm1pc3Npb24gY2hlY2sKKyAgICAJCQorICAgIAkJU3RyaW5nQnVpbGRlciBleHRyYXNCdWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworCisgICAgCQlpZiAoREVCVUcpIExvZy5kKFRBRywgInNlbmROaVJlc3BvbnNlLCBub3RpZklkOiAiICsgbm90aWZpY2F0aW9uSWQgKworICAgIAkJCQkiLCByZXNwb25zZTogIiArIHVzZXJSZXNwb25zZSk7CisgICAgCQkKKyAgICAJCW5hdGl2ZV9zZW5kX25pX3Jlc3BvbnNlKG5vdGlmaWNhdGlvbklkLCB1c2VyUmVzcG9uc2UpOworICAgIAkJCisgICAgCQlyZXR1cm4gdHJ1ZTsKKyAgICAJfSAgICAgICAgCisgICAgfTsKKyAgICAgICAgCisgICAgcHVibGljIElOZXRJbml0aWF0ZWRMaXN0ZW5lciBnZXROZXRJbml0aWF0ZWRMaXN0ZW5lcigpIHsKKyAgICAgICAgcmV0dXJuIG1OZXRJbml0aWF0ZWRMaXN0ZW5lcjsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYnkgSk5JIGZ1bmN0aW9uIHRvIHJlcG9ydCBhbiBOSSByZXF1ZXN0LgorCUBTdXBwcmVzc1dhcm5pbmdzKCJkZXByZWNhdGlvbiIpCisJcHVibGljIHZvaWQgcmVwb3J0TmlOb3RpZmljYXRpb24oCisgICAgICAgIAlpbnQgbm90aWZpY2F0aW9uSWQsCisgICAgICAgIAlpbnQgbmlUeXBlLAorICAgICAgICAJaW50IG5vdGlmeUZsYWdzLAorICAgICAgICAJaW50IHRpbWVvdXQsCisgICAgICAgIAlpbnQgZGVmYXVsdFJlc3BvbnNlLAorICAgICAgICAJU3RyaW5nIHJlcXVlc3RvcklkLAorICAgICAgICAJU3RyaW5nIHRleHQsCisgICAgICAgIAlpbnQgcmVxdWVzdG9ySWRFbmNvZGluZywKKyAgICAgICAgCWludCB0ZXh0RW5jb2RpbmcsCisgICAgICAgIAlTdHJpbmcgZXh0cmFzICAvLyBFbmNvZGVkIGV4dHJhIGRhdGEKKyAgICAgICAgKQorCXsKKwkJTG9nLmkoVEFHLCAicmVwb3J0TmlOb3RpZmljYXRpb246IGVudGVyZWQiKTsKKwkJTG9nLmkoVEFHLCAibm90aWZpY2F0aW9uSWQ6ICIgKyBub3RpZmljYXRpb25JZCArCisJCQkJIiwgbmlUeXBlOiAiICsgbmlUeXBlICsKKwkJCQkiLCBub3RpZnlGbGFnczogIiArIG5vdGlmeUZsYWdzICsKKwkJCQkiLCB0aW1lb3V0OiAiICsgdGltZW91dCArCisJCQkJIiwgZGVmYXVsdFJlc3BvbnNlOiAiICsgZGVmYXVsdFJlc3BvbnNlKTsKKwkJCisJCUxvZy5pKFRBRywgInJlcXVlc3RvcklkOiAiICsgcmVxdWVzdG9ySWQgKworCQkJCSIsIHRleHQ6ICIgKyB0ZXh0ICsKKwkJCQkiLCByZXF1ZXN0b3JJZEVuY29kaW5nOiAiICsgcmVxdWVzdG9ySWRFbmNvZGluZyArCisJCQkJIiwgdGV4dEVuY29kaW5nOiAiICsgdGV4dEVuY29kaW5nKTsKKwkJCisJCUdwc05pTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IG5ldyBHcHNOaU5vdGlmaWNhdGlvbigpOworCQkKKwkJbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbklkID0gbm90aWZpY2F0aW9uSWQ7CisJCW5vdGlmaWNhdGlvbi5uaVR5cGUgPSBuaVR5cGU7CisJCW5vdGlmaWNhdGlvbi5uZWVkTm90aWZ5ID0gKG5vdGlmeUZsYWdzICYgR3BzTmV0SW5pdGlhdGVkSGFuZGxlci5HUFNfTklfTkVFRF9OT1RJRlkpICE9IDA7CisJCW5vdGlmaWNhdGlvbi5uZWVkVmVyaWZ5ID0gKG5vdGlmeUZsYWdzICYgR3BzTmV0SW5pdGlhdGVkSGFuZGxlci5HUFNfTklfTkVFRF9WRVJJRlkpICE9IDA7CisJCW5vdGlmaWNhdGlvbi5wcml2YWN5T3ZlcnJpZGUgPSAobm90aWZ5RmxhZ3MgJiBHcHNOZXRJbml0aWF0ZWRIYW5kbGVyLkdQU19OSV9QUklWQUNZX09WRVJSSURFKSAhPSAwOworCQlub3RpZmljYXRpb24udGltZW91dCA9IHRpbWVvdXQ7CisJCW5vdGlmaWNhdGlvbi5kZWZhdWx0UmVzcG9uc2UgPSBkZWZhdWx0UmVzcG9uc2U7CisJCW5vdGlmaWNhdGlvbi5yZXF1ZXN0b3JJZCA9IHJlcXVlc3RvcklkOworCQlub3RpZmljYXRpb24udGV4dCA9IHRleHQ7CisJCW5vdGlmaWNhdGlvbi5yZXF1ZXN0b3JJZEVuY29kaW5nID0gcmVxdWVzdG9ySWRFbmNvZGluZzsKKwkJbm90aWZpY2F0aW9uLnRleHRFbmNvZGluZyA9IHRleHRFbmNvZGluZzsKKwkJCisJCS8vIFByb2Nlc3MgZXh0cmFzLCBhc3N1bWluZyB0aGUgZm9ybWF0IGlzCisJCS8vIG9uZSBvZiBtb3JlIGxpbmVzIG9mICJrZXkgPSB2YWx1ZSIKKwkJQnVuZGxlIGJ1bmRsZSA9IG5ldyBCdW5kbGUoKTsKKwkJCisJCWlmIChleHRyYXMgPT0gbnVsbCkgZXh0cmFzID0gIiI7CisJCVByb3BlcnRpZXMgZXh0cmFQcm9wID0gbmV3IFByb3BlcnRpZXMoKTsKKwkJCisJCXRyeSB7CisJCQlleHRyYVByb3AubG9hZChuZXcgU3RyaW5nQnVmZmVySW5wdXRTdHJlYW0oZXh0cmFzKSk7CisJCX0KKwkJY2F0Y2ggKElPRXhjZXB0aW9uIGUpCisJCXsKKwkJCUxvZy5lKFRBRywgInJlcG9ydE5pTm90aWZpY2F0aW9uIGNhbm5vdCBwYXJzZSBleHRyYXMgZGF0YTogIiArIGV4dHJhcyk7CisJCX0KKwkJCisJCWZvciAoRW50cnk8T2JqZWN0LCBPYmplY3Q+IGVudCA6IGV4dHJhUHJvcC5lbnRyeVNldCgpKQorCQl7CisJCQlidW5kbGUucHV0U3RyaW5nKChTdHJpbmcpIGVudC5nZXRLZXkoKSwgKFN0cmluZykgZW50LmdldFZhbHVlKCkpOworCQl9CQkKKwkJCisJCW5vdGlmaWNhdGlvbi5leHRyYXMgPSBidW5kbGU7CisJCQorCQltTklIYW5kbGVyLmhhbmRsZU5pTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7CQkKKwl9CisKKyAgICBwcml2YXRlIHZvaWQgc2VuZE1lc3NhZ2UoaW50IG1lc3NhZ2UsIGludCBhcmcsIE9iamVjdCBvYmopIHsKKyAgICAgICAgLy8gaG9sZCBhIHdha2UgbG9jayB3aGlsZSBtZXNzYWdlcyBhcmUgcGVuZGluZworICAgICAgICBzeW5jaHJvbml6ZWQgKG1XYWtlTG9jaykgeworICAgICAgICAgICAgbVBlbmRpbmdNZXNzYWdlQml0cyB8PSAoMSA8PCBtZXNzYWdlKTsKKyAgICAgICAgICAgIG1XYWtlTG9jay5hY3F1aXJlKCk7CisgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhtZXNzYWdlKTsKKyAgICAgICAgICAgIE1lc3NhZ2UgbSA9IE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBtZXNzYWdlKTsKKyAgICAgICAgICAgIG0uYXJnMSA9IGFyZzsKKyAgICAgICAgICAgIG0ub2JqID0gb2JqOworICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFByb3ZpZGVySGFuZGxlciBleHRlbmRzIEhhbmRsZXIgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykKKyAgICAgICAgeworICAgICAgICAgICAgaW50IG1lc3NhZ2UgPSBtc2cud2hhdDsKKyAgICAgICAgICAgIHN3aXRjaCAobWVzc2FnZSkgeworICAgICAgICAgICAgICAgIGNhc2UgRU5BQkxFOgorICAgICAgICAgICAgICAgICAgICBpZiAobXNnLmFyZzEgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRW5hYmxlKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEaXNhYmxlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFTkFCTEVfVFJBQ0tJTkc6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUVuYWJsZUxvY2F0aW9uVHJhY2tpbmcobXNnLmFyZzEgPT0gMSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUkVRVUVTVF9TSU5HTEVfU0hPVDoKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmVxdWVzdFNpbmdsZVNob3QoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBVUERBVEVfTkVUV09SS19TVEFURToKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlVXBkYXRlTmV0d29ya1N0YXRlKG1zZy5hcmcxLCAoTmV0d29ya0luZm8pbXNnLm9iaik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSU5KRUNUX05UUF9USU1FOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmplY3ROdHBUaW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRE9XTkxPQURfWFRSQV9EQVRBOgorICAgICAgICAgICAgICAgICAgICBpZiAobmF0aXZlX3N1cHBvcnRzX3h0cmEoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRG93bmxvYWRYdHJhRGF0YSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVVBEQVRFX0xPQ0FUSU9OOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVVcGRhdGVMb2NhdGlvbigoTG9jYXRpb24pbXNnLm9iaik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQUREX0xJU1RFTkVSOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVBZGRMaXN0ZW5lcihtc2cuYXJnMSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUkVNT1ZFX0xJU1RFTkVSOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZW1vdmVMaXN0ZW5lcihtc2cuYXJnMSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gcmVsZWFzZSB3YWtlIGxvY2sgaWYgbm8gbWVzc2FnZXMgYXJlIHBlbmRpbmcKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVdha2VMb2NrKSB7CisgICAgICAgICAgICAgICAgbVBlbmRpbmdNZXNzYWdlQml0cyAmPSB+KDEgPDwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UgPT0gQUREX0xJU1RFTkVSIHx8IG1lc3NhZ2UgPT0gUkVNT1ZFX0xJU1RFTkVSKSB7CisgICAgICAgICAgICAgICAgICAgIG1QZW5kaW5nTGlzdGVuZXJNZXNzYWdlcy0tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVBlbmRpbmdNZXNzYWdlQml0cyA9PSAwICYmIG1QZW5kaW5nTGlzdGVuZXJNZXNzYWdlcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1XYWtlTG9jay5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHByaXZhdGUgZmluYWwgY2xhc3MgR3BzTG9jYXRpb25Qcm92aWRlclRocmVhZCBleHRlbmRzIFRocmVhZCB7CisKKyAgICAgICAgcHVibGljIEdwc0xvY2F0aW9uUHJvdmlkZXJUaHJlYWQoKSB7CisgICAgICAgICAgICBzdXBlcigiR3BzTG9jYXRpb25Qcm92aWRlciIpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eShQcm9jZXNzLlRIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EKTsKKyAgICAgICAgICAgIGluaXRpYWxpemUoKTsKKyAgICAgICAgICAgIExvb3Blci5wcmVwYXJlKCk7CisgICAgICAgICAgICBtSGFuZGxlciA9IG5ldyBQcm92aWRlckhhbmRsZXIoKTsKKyAgICAgICAgICAgIC8vIHNpZ25hbCB3aGVuIHdlIGFyZSBpbml0aWFsaXplZCBhbmQgcmVhZHkgdG8gZ28KKyAgICAgICAgICAgIG1Jbml0aWFsaXplZExhdGNoLmNvdW50RG93bigpOworICAgICAgICAgICAgTG9vcGVyLmxvb3AoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGZvciBHUFMgU1Ygc3RhdGlzdGljcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfU1ZTID0gMzI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVQSEVNRVJJU19NQVNLID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUxNQU5BQ19NQVNLID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVVNFRF9GT1JfRklYX01BU0sgPSAyOworCisgICAgLy8gcHJlYWxsb2NhdGVkIGFycmF5cywgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gcmVwb3J0U3RhdHVzKCkKKyAgICBwcml2YXRlIGludCBtU3ZzW10gPSBuZXcgaW50W01BWF9TVlNdOworICAgIHByaXZhdGUgZmxvYXQgbVNucnNbXSA9IG5ldyBmbG9hdFtNQVhfU1ZTXTsKKyAgICBwcml2YXRlIGZsb2F0IG1TdkVsZXZhdGlvbnNbXSA9IG5ldyBmbG9hdFtNQVhfU1ZTXTsKKyAgICBwcml2YXRlIGZsb2F0IG1TdkF6aW11dGhzW10gPSBuZXcgZmxvYXRbTUFYX1NWU107CisgICAgcHJpdmF0ZSBpbnQgbVN2TWFza3NbXSA9IG5ldyBpbnRbM107CisgICAgcHJpdmF0ZSBpbnQgbVN2Q291bnQ7CisgICAgLy8gcHJlYWxsb2NhdGVkIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluIHJlcG9ydE5tZWEoKQorICAgIHByaXZhdGUgYnl0ZVtdIG1ObWVhQnVmZmVyID0gbmV3IGJ5dGVbMTIwXTsKKworICAgIHN0YXRpYyB7IGNsYXNzX2luaXRfbmF0aXZlKCk7IH0KKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBjbGFzc19pbml0X25hdGl2ZSgpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBib29sZWFuIG5hdGl2ZV9pc19zdXBwb3J0ZWQoKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX2luaXQoKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9jbGVhbnVwKCk7CisgICAgcHJpdmF0ZSBuYXRpdmUgYm9vbGVhbiBuYXRpdmVfc2V0X3Bvc2l0aW9uX21vZGUoaW50IG1vZGUsIGludCByZWN1cnJlbmNlLCBpbnQgbWluX2ludGVydmFsLAorICAgICAgICAgICAgaW50IHByZWZlcnJlZF9hY2N1cmFjeSwgaW50IHByZWZlcnJlZF90aW1lKTsKKyAgICBwcml2YXRlIG5hdGl2ZSBib29sZWFuIG5hdGl2ZV9zdGFydCgpOworICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N0b3AoKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9kZWxldGVfYWlkaW5nX2RhdGEoaW50IGZsYWdzKTsKKyAgICAvLyByZXR1cm5zIG51bWJlciBvZiBTVnMKKyAgICAvLyBtYXNrWzBdIGlzIGVwaGVtZXJpcyBtYXNrIGFuZCBtYXNrWzFdIGlzIGFsbWFuYWMgbWFzaworICAgIHByaXZhdGUgbmF0aXZlIGludCBuYXRpdmVfcmVhZF9zdl9zdGF0dXMoaW50W10gc3ZzLCBmbG9hdFtdIHNucnMsCisgICAgICAgICAgICBmbG9hdFtdIGVsZXZhdGlvbnMsIGZsb2F0W10gYXppbXV0aHMsIGludFtdIG1hc2tzKTsKKyAgICBwcml2YXRlIG5hdGl2ZSBpbnQgbmF0aXZlX3JlYWRfbm1lYShieXRlW10gYnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfaW5qZWN0X2xvY2F0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZmxvYXQgYWNjdXJhY3kpOworCisgICAgLy8gWFRSQSBTdXBwb3J0CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfaW5qZWN0X3RpbWUobG9uZyB0aW1lLCBsb25nIHRpbWVSZWZlcmVuY2UsIGludCB1bmNlcnRhaW50eSk7CisgICAgcHJpdmF0ZSBuYXRpdmUgYm9vbGVhbiBuYXRpdmVfc3VwcG9ydHNfeHRyYSgpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2luamVjdF94dHJhX2RhdGEoYnl0ZVtdIGRhdGEsIGludCBsZW5ndGgpOworCisgICAgLy8gREVCVUcgU3VwcG9ydAorICAgIHByaXZhdGUgbmF0aXZlIFN0cmluZyBuYXRpdmVfZ2V0X2ludGVybmFsX3N0YXRlKCk7CisKKyAgICAvLyBBR1BTIFN1cHBvcnQKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9vcGVuKFN0cmluZyBhcG4pOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2FncHNfZGF0YV9jb25uX2Nsb3NlZCgpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2FncHNfZGF0YV9jb25uX2ZhaWxlZCgpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX3NldF9hZ3BzX3NlcnZlcihpbnQgdHlwZSwgU3RyaW5nIGhvc3RuYW1lLCBpbnQgcG9ydCk7CisKKyAgICAvLyBOZXR3b3JrLWluaXRpYXRlZCAoTkkpIFN1cHBvcnQKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9zZW5kX25pX3Jlc3BvbnNlKGludCBub3RpZmljYXRpb25JZCwgaW50IHVzZXJSZXNwb25zZSk7Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9HcHNYdHJhRG93bmxvYWRlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vR3BzWHRyYURvd25sb2FkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzk2OTgwCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vR3BzWHRyYURvd25sb2FkZXIuamF2YQpAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5uZXQuUHJveHk7CitpbXBvcnQgYW5kcm9pZC5uZXQuaHR0cC5BbmRyb2lkSHR0cENsaWVudDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQ29uZmlnOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBDbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBHZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBVcmlSZXF1ZXN0OworaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUm91dGVQYXJhbXM7CisKK2ltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CisKKy8qKgorICogQSBjbGFzcyBmb3IgZG93bmxvYWRpbmcgR1BTIFhUUkEgZGF0YS4KKyAqCisgKiB7QGhpZGV9CisgKi8KK3B1YmxpYyBjbGFzcyBHcHNYdHJhRG93bmxvYWRlciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkdwc1h0cmFEb3dubG9hZGVyIjsKKyAgICAKKyAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7CisgICAgcHJpdmF0ZSBTdHJpbmdbXSBtWHRyYVNlcnZlcnM7CisgICAgLy8gdG8gbG9hZCBiYWxhbmNlIG91ciBzZXJ2ZXIgcmVxdWVzdHMKKyAgICBwcml2YXRlIGludCBtTmV4dFNlcnZlckluZGV4OworCisgICAgR3BzWHRyYURvd25sb2FkZXIoQ29udGV4dCBjb250ZXh0LCBQcm9wZXJ0aWVzIHByb3BlcnRpZXMpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworCisgICAgICAgIC8vIHJlYWQgWFRSQSBzZXJ2ZXJzIGZyb20gdGhlIFByb3BlcnRpZXMgb2JqZWN0CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIFN0cmluZyBzZXJ2ZXIxID0gcHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiWFRSQV9TRVJWRVJfMSIpOworICAgICAgICBTdHJpbmcgc2VydmVyMiA9IHByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIlhUUkFfU0VSVkVSXzIiKTsKKyAgICAgICAgU3RyaW5nIHNlcnZlcjMgPSBwcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJYVFJBX1NFUlZFUl8zIik7CisgICAgICAgIGlmIChzZXJ2ZXIxICE9IG51bGwpIGNvdW50Kys7CisgICAgICAgIGlmIChzZXJ2ZXIyICE9IG51bGwpIGNvdW50Kys7CisgICAgICAgIGlmIChzZXJ2ZXIzICE9IG51bGwpIGNvdW50Kys7CisgICAgICAgIAorICAgICAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiTm8gWFRSQSBzZXJ2ZXJzIHdlcmUgc3BlY2lmaWVkIGluIHRoZSBHUFMgY29uZmlndXJhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbVh0cmFTZXJ2ZXJzID0gbmV3IFN0cmluZ1tjb3VudF07CisgICAgICAgICAgICBjb3VudCA9IDA7CisgICAgICAgICAgICBpZiAoc2VydmVyMSAhPSBudWxsKSBtWHRyYVNlcnZlcnNbY291bnQrK10gPSBzZXJ2ZXIxOworICAgICAgICAgICAgaWYgKHNlcnZlcjIgIT0gbnVsbCkgbVh0cmFTZXJ2ZXJzW2NvdW50KytdID0gc2VydmVyMjsKKyAgICAgICAgICAgIGlmIChzZXJ2ZXIzICE9IG51bGwpIG1YdHJhU2VydmVyc1tjb3VudCsrXSA9IHNlcnZlcjM7CisKKyAgICAgICAgICAgIC8vIHJhbmRvbWl6ZSBmaXJzdCBzZXJ2ZXIKKyAgICAgICAgICAgIFJhbmRvbSByYW5kb20gPSBuZXcgUmFuZG9tKCk7CisgICAgICAgICAgICBtTmV4dFNlcnZlckluZGV4ID0gcmFuZG9tLm5leHRJbnQoY291bnQpOworICAgICAgICB9ICAgICAgIAorICAgIH0KKworICAgIGJ5dGVbXSBkb3dubG9hZFh0cmFEYXRhKCkgeworICAgICAgICBTdHJpbmcgcHJveHlIb3N0ID0gUHJveHkuZ2V0SG9zdChtQ29udGV4dCk7CisgICAgICAgIGludCBwcm94eVBvcnQgPSBQcm94eS5nZXRQb3J0KG1Db250ZXh0KTsKKyAgICAgICAgYm9vbGVhbiB1c2VQcm94eSA9IChwcm94eUhvc3QgIT0gbnVsbCAmJiBwcm94eVBvcnQgIT0gLTEpOworICAgICAgICBieXRlW10gcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgaW50IHN0YXJ0SW5kZXggPSBtTmV4dFNlcnZlckluZGV4OworCisgICAgICAgIGlmIChtWHRyYVNlcnZlcnMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvLyBsb2FkIGJhbGFuY2Ugb3VyIHJlcXVlc3RzIGFtb25nIHRoZSBhdmFpbGFibGUgc2VydmVycworICAgICAgICB3aGlsZSAocmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvRG93bmxvYWQobVh0cmFTZXJ2ZXJzW21OZXh0U2VydmVySW5kZXhdLCB1c2VQcm94eSwgcHJveHlIb3N0LCBwcm94eVBvcnQpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBpbmNyZW1lbnQgbU5leHRTZXJ2ZXJJbmRleCBhbmQgd3JhcCBhcm91bmQgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICBtTmV4dFNlcnZlckluZGV4Kys7CisgICAgICAgICAgICBpZiAobU5leHRTZXJ2ZXJJbmRleCA9PSBtWHRyYVNlcnZlcnMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgbU5leHRTZXJ2ZXJJbmRleCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBicmVhayBpZiB3ZSBoYXZlIHRyaWVkIGFsbCB0aGUgc2VydmVycworICAgICAgICAgICAgaWYgKG1OZXh0U2VydmVySW5kZXggPT0gc3RhcnRJbmRleCkgYnJlYWs7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGJ5dGVbXSBkb0Rvd25sb2FkKFN0cmluZyB1cmwsIGJvb2xlYW4gaXNQcm94eVNldCwgCisgICAgICAgICAgICBTdHJpbmcgcHJveHlIb3N0LCBpbnQgcHJveHlQb3J0KSB7CisgICAgICAgIGlmIChDb25maWcuTE9HRCkgTG9nLmQoVEFHLCAiRG93bmxvYWRpbmcgWFRSQSBkYXRhIGZyb20gIiArIHVybCk7CisKKyAgICAgICAgQW5kcm9pZEh0dHBDbGllbnQgY2xpZW50ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsaWVudCA9IEFuZHJvaWRIdHRwQ2xpZW50Lm5ld0luc3RhbmNlKCJBbmRyb2lkIik7CisgICAgICAgICAgICBIdHRwVXJpUmVxdWVzdCByZXEgPSBuZXcgSHR0cEdldCh1cmwpOworCisgICAgICAgICAgICBpZiAoaXNQcm94eVNldCkgeworICAgICAgICAgICAgICAgIEh0dHBIb3N0IHByb3h5ID0gbmV3IEh0dHBIb3N0KHByb3h5SG9zdCwgcHJveHlQb3J0KTsKKyAgICAgICAgICAgICAgICBDb25uUm91dGVQYXJhbXMuc2V0RGVmYXVsdFByb3h5KHJlcS5nZXRQYXJhbXMoKSwgcHJveHkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXEuYWRkSGVhZGVyKAorICAgICAgICAgICAgICAgICAgICAiQWNjZXB0IiwKKyAgICAgICAgICAgICAgICAgICAgIiovKiwgYXBwbGljYXRpb24vdm5kLndhcC5tbXMtbWVzc2FnZSwgYXBwbGljYXRpb24vdm5kLndhcC5zaWMiKTsKKworICAgICAgICAgICAgcmVxLmFkZEhlYWRlcigKKyAgICAgICAgICAgICAgICAgICAgIngtd2FwLXByb2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5vcGVubW9iaWxlYWxsaWFuY2Uub3JnL3RlY2gvcHJvZmlsZXMvVUFQUk9GL2NjcHBzY2hlbWEtMjAwMjEyMTIjIik7CisKKyAgICAgICAgICAgIEh0dHBSZXNwb25zZSByZXNwb25zZSA9IGNsaWVudC5leGVjdXRlKHJlcSk7CisgICAgICAgICAgICBTdGF0dXNMaW5lIHN0YXR1cyA9IHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzQ29kZSgpICE9IDIwMCkgeyAvLyBIVFRQIDIwMCBpcyBzdWNjZXNzLgorICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HRCkgTG9nLmQoVEFHLCAiSFRUUCBlcnJvcjogIiArIHN0YXR1cy5nZXRSZWFzb25QaHJhc2UoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEh0dHBFbnRpdHkgZW50aXR5ID0gcmVzcG9uc2UuZ2V0RW50aXR5KCk7CisgICAgICAgICAgICBieXRlW10gYm9keSA9IG51bGw7CisgICAgICAgICAgICBpZiAoZW50aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5LmdldENvbnRlbnRMZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBuZXcgYnl0ZVsoaW50KSBlbnRpdHkuZ2V0Q29udGVudExlbmd0aCgpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGFJbnB1dFN0cmVhbSBkaXMgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGVudGl0eS5nZXRDb250ZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXMucmVhZEZ1bGx5KGJvZHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXMuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlVuZXhwZWN0ZWQgSU9FeGNlcHRpb24uIiwgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuY29uc3VtZUNvbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBib2R5OworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgaWYgKENvbmZpZy5MT0dEKSBMb2cuZChUQUcsICJlcnJvciAiICsgZSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBpZiAoY2xpZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODRhYjgxCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlckludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5sb2NhdGlvbjsKKworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKKworLyoqCisgKiBMb2NhdGlvbiBNYW5hZ2VyJ3MgaW50ZXJmYWNlIGZvciBsb2NhdGlvbiBwcm92aWRlcnMuCisgKgorICoge0BoaWRlfQorICovCitwdWJsaWMgaW50ZXJmYWNlIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgeworICAgIFN0cmluZyBnZXROYW1lKCk7CisgICAgYm9vbGVhbiByZXF1aXJlc05ldHdvcmsoKTsKKyAgICBib29sZWFuIHJlcXVpcmVzU2F0ZWxsaXRlKCk7CisgICAgYm9vbGVhbiByZXF1aXJlc0NlbGwoKTsKKyAgICBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpOworICAgIGJvb2xlYW4gc3VwcG9ydHNBbHRpdHVkZSgpOworICAgIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpOworICAgIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nKCk7CisgICAgaW50IGdldFBvd2VyUmVxdWlyZW1lbnQoKTsKKyAgICBib29sZWFuIG1lZXRzQ3JpdGVyaWEoQ3JpdGVyaWEgY3JpdGVyaWEpOworICAgIGludCBnZXRBY2N1cmFjeSgpOworICAgIGJvb2xlYW4gaXNFbmFibGVkKCk7CisgICAgdm9pZCBlbmFibGUoKTsKKyAgICB2b2lkIGRpc2FibGUoKTsKKyAgICBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpOworICAgIGxvbmcgZ2V0U3RhdHVzVXBkYXRlVGltZSgpOworICAgIHZvaWQgZW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSk7CisgICAgLyogcmV0dXJucyBmYWxzZSBpZiBzaW5nbGUgc2hvdCBpcyBub3Qgc3VwcG9ydGVkICovCisgICAgYm9vbGVhbiByZXF1ZXN0U2luZ2xlU2hvdEZpeCgpOworICAgIFN0cmluZyBnZXRJbnRlcm5hbFN0YXRlKCk7CisgICAgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSk7CisgICAgdm9pZCB1cGRhdGVOZXR3b3JrU3RhdGUoaW50IHN0YXRlLCBOZXR3b3JrSW5mbyBpbmZvKTsKKyAgICB2b2lkIHVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKTsKKyAgICBib29sZWFuIHNlbmRFeHRyYUNvbW1hbmQoU3RyaW5nIGNvbW1hbmQsIEJ1bmRsZSBleHRyYXMpOworICAgIHZvaWQgYWRkTGlzdGVuZXIoaW50IHVpZCk7CisgICAgdm9pZCByZW1vdmVMaXN0ZW5lcihpbnQgdWlkKTsKK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJQcm94eS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlclByb3h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRkNzczNwotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJQcm94eS5qYXZhCkBAIC0wLDAgKzEsNDIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb247CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uUHJvdmlkZXI7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkR1bW15TG9jYXRpb25Qcm92aWRlcjsKKworLyoqCisgKiBBIGNsYXNzIGZvciBwcm94eWluZyBsb2NhdGlvbiBwcm92aWRlcnMgaW1wbGVtZW50ZWQgYXMgc2VydmljZXMuCisgKgorICoge0BoaWRlfQorICovCitwdWJsaWMgY2xhc3MgTG9jYXRpb25Qcm92aWRlclByb3h5IGltcGxlbWVudHMgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkxvY2F0aW9uUHJvdmlkZXJQcm94eSI7CisKKyAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbU5hbWU7CisgICAgcHJpdmF0ZSBJTG9jYXRpb25Qcm92aWRlciBtUHJvdmlkZXI7CisgICAgcHJpdmF0ZSBIYW5kbGVyIG1IYW5kbGVyOworICAgIHByaXZhdGUgZmluYWwgQ29ubmVjdGlvbiBtU2VydmljZUNvbm5lY3Rpb24gPSBuZXcgQ29ubmVjdGlvbigpOworCisgICAgLy8gY2FjaGVkIHZhbHVlcyBzZXQgYnkgdGhlIGxvY2F0aW9uIG1hbmFnZXIKKyAgICBwcml2YXRlIGJvb2xlYW4gbUxvY2F0aW9uVHJhY2tpbmcgPSBmYWxzZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUVuYWJsZWQgPSBmYWxzZTsKKyAgICBwcml2YXRlIGxvbmcgbU1pblRpbWUgPSAtMTsKKyAgICBwcml2YXRlIGludCBtTmV0d29ya1N0YXRlOworICAgIHByaXZhdGUgTmV0d29ya0luZm8gbU5ldHdvcmtJbmZvOworCisgICAgLy8gZm9yIGNhY2hpbmcgcmVxdWlyZXNOZXR3b3JrLCByZXF1aXJlc1NhdGVsbGl0ZSwgZXRjLgorICAgIHByaXZhdGUgRHVtbXlMb2NhdGlvblByb3ZpZGVyIG1DYWNoZWRBdHRyaWJ1dGVzOworCisgICAgLy8gY29uc3RydWN0b3IgZm9yIHByb3h5aW5nIGxvY2F0aW9uIHByb3ZpZGVycyBpbXBsZW1lbnRlZCBpbiBhIHNlcGFyYXRlIHNlcnZpY2UKKyAgICBwdWJsaWMgTG9jYXRpb25Qcm92aWRlclByb3h5KENvbnRleHQgY29udGV4dCwgU3RyaW5nIG5hbWUsIFN0cmluZyBzZXJ2aWNlTmFtZSwKKyAgICAgICAgICAgIEhhbmRsZXIgaGFuZGxlcikgeworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1OYW1lID0gbmFtZTsKKyAgICAgICAgbUhhbmRsZXIgPSBoYW5kbGVyOworICAgICAgICBtQ29udGV4dC5iaW5kU2VydmljZShuZXcgSW50ZW50KHNlcnZpY2VOYW1lKSwgbVNlcnZpY2VDb25uZWN0aW9uLCBDb250ZXh0LkJJTkRfQVVUT19DUkVBVEUpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgQ29ubmVjdGlvbiBpbXBsZW1lbnRzIFNlcnZpY2VDb25uZWN0aW9uIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlQ29ubmVjdGVkKENvbXBvbmVudE5hbWUgY2xhc3NOYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKKyAgICAgICAgICAgIExvZy5kKFRBRywgIkxvY2F0aW9uUHJvdmlkZXJQcm94eS5vblNlcnZpY2VDb25uZWN0ZWQgIiArIGNsYXNzTmFtZSk7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgICAgICBtUHJvdmlkZXIgPSBJTG9jYXRpb25Qcm92aWRlci5TdHViLmFzSW50ZXJmYWNlKHNlcnZpY2UpOworICAgICAgICAgICAgICAgIGlmIChtUHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0KG1TZXJ2aWNlQ29ubmVjdGVkVGFzayk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlRGlzY29ubmVjdGVkKENvbXBvbmVudE5hbWUgY2xhc3NOYW1lKSB7CisgICAgICAgICAgICBMb2cuZChUQUcsICJMb2NhdGlvblByb3ZpZGVyUHJveHkub25TZXJ2aWNlRGlzY29ubmVjdGVkICIgKyBjbGFzc05hbWUpOworICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICAgICAgbVByb3ZpZGVyID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgUnVubmFibGUgbVNlcnZpY2VDb25uZWN0ZWRUYXNrID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7CisgICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcyA9IG5ldyBEdW1teUxvY2F0aW9uUHJvdmlkZXIobU5hbWUsIG51bGwpOworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRSZXF1aXJlc05ldHdvcmsocHJvdmlkZXIucmVxdWlyZXNOZXR3b3JrKCkpOworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRSZXF1aXJlc1NhdGVsbGl0ZShwcm92aWRlci5yZXF1aXJlc1NhdGVsbGl0ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0UmVxdWlyZXNDZWxsKHByb3ZpZGVyLnJlcXVpcmVzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0SGFzTW9uZXRhcnlDb3N0KHByb3ZpZGVyLmhhc01vbmV0YXJ5Q29zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0U3VwcG9ydHNBbHRpdHVkZShwcm92aWRlci5zdXBwb3J0c0FsdGl0dWRlKCkpOworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRTdXBwb3J0c1NwZWVkKHByb3ZpZGVyLnN1cHBvcnRzU3BlZWQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFN1cHBvcnRzQmVhcmluZyhwcm92aWRlci5zdXBwb3J0c0JlYXJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFBvd2VyUmVxdWlyZW1lbnQocHJvdmlkZXIuZ2V0UG93ZXJSZXF1aXJlbWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0QWNjdXJhY3kocHJvdmlkZXIuZ2V0QWNjdXJhY3koKSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMgPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gcmVzZW5kIHByZXZpb3VzIHZhbHVlcyBmcm9tIHRoZSBsb2NhdGlvbiBtYW5hZ2VyIGlmIHRoZSBzZXJ2aWNlIGhhcyByZXN0YXJ0ZWQKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKG1FbmFibGVkKSB7CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyLmVuYWJsZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobUxvY2F0aW9uVHJhY2tpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIuZW5hYmxlTG9jYXRpb25UcmFja2luZyh0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1NaW5UaW1lID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIuc2V0TWluVGltZShtTWluVGltZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtTmV0d29ya0luZm8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBwcm92aWRlci51cGRhdGVOZXR3b3JrU3RhdGUobU5ldHdvcmtTdGF0ZSwgbU5ldHdvcmtJbmZvKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG1OYW1lOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzTmV0d29yaygpIHsKKyAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5yZXF1aXJlc05ldHdvcmsoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzU2F0ZWxsaXRlKCkgeworICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLnJlcXVpcmVzU2F0ZWxsaXRlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc0NlbGwoKSB7CisgICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMucmVxdWlyZXNDZWxsKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNNb25ldGFyeUNvc3QoKSB7CisgICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMuaGFzTW9uZXRhcnlDb3N0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c0FsdGl0dWRlKCkgeworICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLnN1cHBvcnRzQWx0aXR1ZGUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzU3BlZWQoKSB7CisgICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMuc3VwcG9ydHNTcGVlZCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQmVhcmluZygpIHsKKyAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5zdXBwb3J0c0JlYXJpbmcoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpIHsKKyAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5nZXRQb3dlclJlcXVpcmVtZW50KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtZWV0c0NyaXRlcmlhKENyaXRlcmlhIGNyaXRlcmlhKSB7CisgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIubWVldHNDcml0ZXJpYShjcml0ZXJpYSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaWYgd2UgbG9zdCBjb25uZWN0aW9uIHRvIHRoZSBwcm92aWRlcgorICAgICAgICBpZiAoKGNyaXRlcmlhLmdldEFjY3VyYWN5KCkgIT0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQpICYmCisgICAgICAgICAgICAoY3JpdGVyaWEuZ2V0QWNjdXJhY3koKSA8IGdldEFjY3VyYWN5KCkpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaW50IGNyaXRlcmlhUG93ZXIgPSBjcml0ZXJpYS5nZXRQb3dlclJlcXVpcmVtZW50KCk7CisgICAgICAgIGlmICgoY3JpdGVyaWFQb3dlciAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkgJiYKKyAgICAgICAgICAgIChjcml0ZXJpYVBvd2VyIDwgZ2V0UG93ZXJSZXF1aXJlbWVudCgpKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChjcml0ZXJpYS5pc0FsdGl0dWRlUmVxdWlyZWQoKSAmJiAhc3VwcG9ydHNBbHRpdHVkZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNyaXRlcmlhLmlzU3BlZWRSZXF1aXJlZCgpICYmICFzdXBwb3J0c1NwZWVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3JpdGVyaWEuaXNCZWFyaW5nUmVxdWlyZWQoKSAmJiAhc3VwcG9ydHNCZWFyaW5nKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEFjY3VyYWN5KCkgeworICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLmdldEFjY3VyYWN5KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlbmFibGUoKSB7CisgICAgICAgIG1FbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBwcm92aWRlci5lbmFibGUoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKCkgeworICAgICAgICBtRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLmRpc2FibGUoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgIHJldHVybiBtRW5hYmxlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFN0YXR1cyhCdW5kbGUgZXh0cmFzKSB7CisgICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgeworICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLmdldFN0YXR1cyhleHRyYXMpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgbG9uZyBnZXRTdGF0dXNVcGRhdGVUaW1lKCkgeworICAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuZ2V0U3RhdHVzVXBkYXRlVGltZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRJbnRlcm5hbFN0YXRlKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG1Qcm92aWRlci5nZXRJbnRlcm5hbFN0YXRlKCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJnZXRJbnRlcm5hbFN0YXRlIGZhaWxlZCIsIGUpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0xvY2F0aW9uVHJhY2tpbmcoKSB7CisgICAgICAgIHJldHVybiBtTG9jYXRpb25UcmFja2luZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlbmFibGVMb2NhdGlvblRyYWNraW5nKGJvb2xlYW4gZW5hYmxlKSB7CisgICAgICAgIG1Mb2NhdGlvblRyYWNraW5nID0gZW5hYmxlOworICAgICAgICBpZiAoIWVuYWJsZSkgeworICAgICAgICAgICAgbU1pblRpbWUgPSAtMTsKKyAgICAgICAgfQorICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLmVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoZW5hYmxlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1ZXN0U2luZ2xlU2hvdEZpeCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBsb25nIGdldE1pblRpbWUoKSB7CisgICAgICAgIHJldHVybiBtTWluVGltZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgeworICAgICAgIG1NaW5UaW1lID0gbWluVGltZTsKKyAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBwcm92aWRlci5zZXRNaW5UaW1lKG1pblRpbWUpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKKyAgICAgICAgbU5ldHdvcmtTdGF0ZSA9IHN0YXRlOworICAgICAgICBtTmV0d29ya0luZm8gPSBpbmZvOworICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLnVwZGF0ZU5ldHdvcmtTdGF0ZShzdGF0ZSwgaW5mbyk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pIHsKKyAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBwcm92aWRlci51cGRhdGVMb2NhdGlvbihsb2NhdGlvbik7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcykgeworICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLnNlbmRFeHRyYUNvbW1hbmQoY29tbWFuZCwgZXh0cmFzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKGludCB1aWQpIHsKKyAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBwcm92aWRlci5hZGRMaXN0ZW5lcih1aWQpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpIHsKKyAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBwcm92aWRlci5yZW1vdmVMaXN0ZW5lcih1aWQpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL01vY2tQcm92aWRlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTW9ja1Byb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFiMzRiNwotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL01vY2tQcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMjMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb247CisKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudXRpbC5QcmludFdyaXRlclByaW50ZXI7CisKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworCisvKioKKyAqIEEgbW9jayBsb2NhdGlvbiBwcm92aWRlciB1c2VkIGJ5IExvY2F0aW9uTWFuYWdlclNlcnZpY2UgdG8gaW1wbGVtZW50IHRlc3QgcHJvdmlkZXJzLgorICoKKyAqIHtAaGlkZX0KKyAqLworcHVibGljIGNsYXNzIE1vY2tQcm92aWRlciBpbXBsZW1lbnRzIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgeworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1OYW1lOworICAgIHByaXZhdGUgZmluYWwgSUxvY2F0aW9uTWFuYWdlciBtTG9jYXRpb25NYW5hZ2VyOworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtUmVxdWlyZXNOZXR3b3JrOworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtUmVxdWlyZXNTYXRlbGxpdGU7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1SZXF1aXJlc0NlbGw7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1IYXNNb25ldGFyeUNvc3Q7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1TdXBwb3J0c0FsdGl0dWRlOworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtU3VwcG9ydHNTcGVlZDsKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbVN1cHBvcnRzQmVhcmluZzsKKyAgICBwcml2YXRlIGZpbmFsIGludCBtUG93ZXJSZXF1aXJlbWVudDsKKyAgICBwcml2YXRlIGZpbmFsIGludCBtQWNjdXJhY3k7CisgICAgcHJpdmF0ZSBmaW5hbCBMb2NhdGlvbiBtTG9jYXRpb247CisgICAgcHJpdmF0ZSBpbnQgbVN0YXR1czsKKyAgICBwcml2YXRlIGxvbmcgbVN0YXR1c1VwZGF0ZVRpbWU7CisgICAgcHJpdmF0ZSBmaW5hbCBCdW5kbGUgbUV4dHJhcyA9IG5ldyBCdW5kbGUoKTsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUhhc0xvY2F0aW9uOworICAgIHByaXZhdGUgYm9vbGVhbiBtSGFzU3RhdHVzOworICAgIHByaXZhdGUgYm9vbGVhbiBtRW5hYmxlZDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTW9ja1Byb3ZpZGVyIjsKKworICAgIHB1YmxpYyBNb2NrUHJvdmlkZXIoU3RyaW5nIG5hbWUsICBJTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlciwKKyAgICAgICAgYm9vbGVhbiByZXF1aXJlc05ldHdvcmssIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUsCisgICAgICAgIGJvb2xlYW4gcmVxdWlyZXNDZWxsLCBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCwgYm9vbGVhbiBzdXBwb3J0c0FsdGl0dWRlLAorICAgICAgICBib29sZWFuIHN1cHBvcnRzU3BlZWQsIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nLCBpbnQgcG93ZXJSZXF1aXJlbWVudCwgaW50IGFjY3VyYWN5KSB7CisgICAgICAgIG1OYW1lID0gbmFtZTsKKyAgICAgICAgbUxvY2F0aW9uTWFuYWdlciA9IGxvY2F0aW9uTWFuYWdlcjsKKyAgICAgICAgbVJlcXVpcmVzTmV0d29yayA9IHJlcXVpcmVzTmV0d29yazsKKyAgICAgICAgbVJlcXVpcmVzU2F0ZWxsaXRlID0gcmVxdWlyZXNTYXRlbGxpdGU7CisgICAgICAgIG1SZXF1aXJlc0NlbGwgPSByZXF1aXJlc0NlbGw7CisgICAgICAgIG1IYXNNb25ldGFyeUNvc3QgPSBoYXNNb25ldGFyeUNvc3Q7CisgICAgICAgIG1TdXBwb3J0c0FsdGl0dWRlID0gc3VwcG9ydHNBbHRpdHVkZTsKKyAgICAgICAgbVN1cHBvcnRzQmVhcmluZyA9IHN1cHBvcnRzQmVhcmluZzsKKyAgICAgICAgbVN1cHBvcnRzU3BlZWQgPSBzdXBwb3J0c1NwZWVkOworICAgICAgICBtUG93ZXJSZXF1aXJlbWVudCA9IHBvd2VyUmVxdWlyZW1lbnQ7CisgICAgICAgIG1BY2N1cmFjeSA9IGFjY3VyYWN5OworICAgICAgICBtTG9jYXRpb24gPSBuZXcgTG9jYXRpb24obmFtZSk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICByZXR1cm4gbU5hbWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZGlzYWJsZSgpIHsKKyAgICAgICAgbUVuYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlbmFibGUoKSB7CisgICAgICAgIG1FbmFibGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgIHJldHVybiBtRW5hYmxlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFN0YXR1cyhCdW5kbGUgZXh0cmFzKSB7CisgICAgICAgIGlmIChtSGFzU3RhdHVzKSB7CisgICAgICAgICAgICBleHRyYXMuY2xlYXIoKTsKKyAgICAgICAgICAgIGV4dHJhcy5wdXRBbGwobUV4dHJhcyk7CisgICAgICAgICAgICByZXR1cm4gbVN0YXR1czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBsb25nIGdldFN0YXR1c1VwZGF0ZVRpbWUoKSB7CisgICAgICAgIHJldHVybiBtU3RhdHVzVXBkYXRlVGltZTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEFjY3VyYWN5KCkgeworICAgICAgICByZXR1cm4gbUFjY3VyYWN5OworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpIHsKKyAgICAgICAgcmV0dXJuIG1Qb3dlclJlcXVpcmVtZW50OworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpIHsKKyAgICAgICAgcmV0dXJuIG1IYXNNb25ldGFyeUNvc3Q7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNDZWxsKCkgeworICAgICAgICByZXR1cm4gbVJlcXVpcmVzQ2VsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc05ldHdvcmsoKSB7CisgICAgICAgIHJldHVybiBtUmVxdWlyZXNOZXR3b3JrOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzU2F0ZWxsaXRlKCkgeworICAgICAgICByZXR1cm4gbVJlcXVpcmVzU2F0ZWxsaXRlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUoKSB7CisgICAgICAgIHJldHVybiBtU3VwcG9ydHNBbHRpdHVkZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcoKSB7CisgICAgICAgIHJldHVybiBtU3VwcG9ydHNCZWFyaW5nOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzU3BlZWQoKSB7CisgICAgICAgIHJldHVybiBtU3VwcG9ydHNTcGVlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtZWV0c0NyaXRlcmlhKENyaXRlcmlhIGNyaXRlcmlhKSB7CisgICAgICAgIGlmICgoY3JpdGVyaWEuZ2V0QWNjdXJhY3koKSAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkgJiYKKyAgICAgICAgICAgIChjcml0ZXJpYS5nZXRBY2N1cmFjeSgpIDwgbUFjY3VyYWN5KSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGludCBjcml0ZXJpYVBvd2VyID0gY3JpdGVyaWEuZ2V0UG93ZXJSZXF1aXJlbWVudCgpOworICAgICAgICBpZiAoKGNyaXRlcmlhUG93ZXIgIT0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQpICYmCisgICAgICAgICAgICAoY3JpdGVyaWFQb3dlciA8IG1Qb3dlclJlcXVpcmVtZW50KSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChjcml0ZXJpYS5pc0FsdGl0dWRlUmVxdWlyZWQoKSAmJiAhbVN1cHBvcnRzQWx0aXR1ZGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3JpdGVyaWEuaXNTcGVlZFJlcXVpcmVkKCkgJiYgIW1TdXBwb3J0c1NwZWVkKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNyaXRlcmlhLmlzQmVhcmluZ1JlcXVpcmVkKCkgJiYgIW1TdXBwb3J0c0JlYXJpbmcpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRMb2NhdGlvbihMb2NhdGlvbiBsKSB7CisgICAgICAgIG1Mb2NhdGlvbi5zZXQobCk7CisgICAgICAgIG1IYXNMb2NhdGlvbiA9IHRydWU7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtTG9jYXRpb25NYW5hZ2VyLnJlcG9ydExvY2F0aW9uKG1Mb2NhdGlvbiwgZmFsc2UpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGNhbGxpbmcgcmVwb3J0TG9jYXRpb24iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNsZWFyTG9jYXRpb24oKSB7CisgICAgICAgIG1IYXNMb2NhdGlvbiA9IGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN0YXR1cyhpbnQgc3RhdHVzLCBCdW5kbGUgZXh0cmFzLCBsb25nIHVwZGF0ZVRpbWUpIHsKKyAgICAgICAgbVN0YXR1cyA9IHN0YXR1czsKKyAgICAgICAgbVN0YXR1c1VwZGF0ZVRpbWUgPSB1cGRhdGVUaW1lOworICAgICAgICBtRXh0cmFzLmNsZWFyKCk7CisgICAgICAgIGlmIChleHRyYXMgIT0gbnVsbCkgeworICAgICAgICAgICAgbUV4dHJhcy5wdXRBbGwoZXh0cmFzKTsKKyAgICAgICAgfQorICAgICAgICBtSGFzU3RhdHVzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjbGVhclN0YXR1cygpIHsKKyAgICAgICAgbUhhc1N0YXR1cyA9IGZhbHNlOworICAgICAgICBtU3RhdHVzVXBkYXRlVGltZSA9IDA7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRJbnRlcm5hbFN0YXRlKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlbmFibGVMb2NhdGlvblRyYWNraW5nKGJvb2xlYW4gZW5hYmxlKSB7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWVzdFNpbmdsZVNob3RGaXgoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVMb2NhdGlvbihMb2NhdGlvbiBsb2NhdGlvbikgeworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHNlbmRFeHRyYUNvbW1hbmQoU3RyaW5nIGNvbW1hbmQsIEJ1bmRsZSBleHRyYXMpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKGludCB1aWQpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVMaXN0ZW5lcihpbnQgdWlkKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZHVtcChQcmludFdyaXRlciBwdywgU3RyaW5nIHByZWZpeCkgeworICAgICAgICBwdy5wcmludGxuKHByZWZpeCArIG1OYW1lKTsKKyAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibUhhc0xvY2F0aW9uPSIgKyBtSGFzTG9jYXRpb24pOworICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtTG9jYXRpb246Iik7CisgICAgICAgIG1Mb2NhdGlvbi5kdW1wKG5ldyBQcmludFdyaXRlclByaW50ZXIocHcpLCBwcmVmaXggKyAiICAiKTsKKyAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibUhhc1N0YXR1cz0iICsgbUhhc1N0YXR1cyk7CisgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1TdGF0dXM9IiArIG1TdGF0dXMpOworICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtU3RhdHVzVXBkYXRlVGltZT0iICsgbVN0YXR1c1VwZGF0ZVRpbWUpOworICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtRXh0cmFzPSIgKyBtRXh0cmFzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9QYXNzaXZlUHJvdmlkZXIuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL1Bhc3NpdmVQcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYzkzZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9QYXNzaXZlUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uOworCitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYTsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklMb2NhdGlvbk1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXI7CitpbXBvcnQgYW5kcm9pZC5uZXQuTmV0d29ya0luZm87CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworLyoqCisgKiBBIHBhc3NpdmUgbG9jYXRpb24gcHJvdmlkZXIgcmVwb3J0cyBsb2NhdGlvbnMgcmVjZWl2ZWQgZnJvbSBvdGhlciBwcm92aWRlcnMKKyAqIGZvciBjbGllbnRzIHRoYXQgd2FudCB0byBsaXN0ZW4gcGFzc2l2ZWx5IHdpdGhvdXQgYWN0dWFsbHkgdHJpZ2dlcmluZworICogbG9jYXRpb24gdXBkYXRlcy4KKyAqCisgKiB7QGhpZGV9CisgKi8KK3B1YmxpYyBjbGFzcyBQYXNzaXZlUHJvdmlkZXIgaW1wbGVtZW50cyBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiUGFzc2l2ZVByb3ZpZGVyIjsKKworICAgIHByaXZhdGUgZmluYWwgSUxvY2F0aW9uTWFuYWdlciBtTG9jYXRpb25NYW5hZ2VyOworICAgIHByaXZhdGUgYm9vbGVhbiBtVHJhY2tpbmc7CisKKyAgICBwdWJsaWMgUGFzc2l2ZVByb3ZpZGVyKElMb2NhdGlvbk1hbmFnZXIgbG9jYXRpb25NYW5hZ2VyKSB7CisgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIgPSBsb2NhdGlvbk1hbmFnZXI7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICByZXR1cm4gTG9jYXRpb25NYW5hZ2VyLlBBU1NJVkVfUFJPVklERVI7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc0NlbGwoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNNb25ldGFyeUNvc3QoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c0FsdGl0dWRlKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQmVhcmluZygpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1lZXRzQ3JpdGVyaWEoQ3JpdGVyaWEgY3JpdGVyaWEpIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gbWF0Y2ggdGhlIHNwZWNpYWwgcGFzc2l2ZSBwcm92aWRlciBiYXNlZCBvbiBjcml0ZXJpYS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKCkgeworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpIHsKKyAgICAgICAgaWYgKG1UcmFja2luZykgeworICAgICAgICAgICAgcmV0dXJuIExvY2F0aW9uUHJvdmlkZXIuQVZBSUxBQkxFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIExvY2F0aW9uUHJvdmlkZXIuVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgbG9uZyBnZXRTdGF0dXNVcGRhdGVUaW1lKCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRJbnRlcm5hbFN0YXRlKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlbmFibGVMb2NhdGlvblRyYWNraW5nKGJvb2xlYW4gZW5hYmxlKSB7CisgICAgICAgIG1UcmFja2luZyA9IGVuYWJsZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1ZXN0U2luZ2xlU2hvdEZpeCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlTmV0d29ya1N0YXRlKGludCBzdGF0ZSwgTmV0d29ya0luZm8gaW5mbykgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKSB7CisgICAgICAgIGlmIChtVHJhY2tpbmcpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUgbG9jYXRpb24gYmFjayB0byB0aGUgbG9jYXRpb24gbWFuYWdlcgorICAgICAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIucmVwb3J0TG9jYXRpb24obG9jYXRpb24sIHRydWUpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyByZXBvcnRMb2NhdGlvbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoaW50IHVpZCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvQW5pbWF0ZWRJbWFnZVZpZXcuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9BbmltYXRlZEltYWdlVmlldy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RmMDY1Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9BbmltYXRlZEltYWdlVmlldy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQW5pbWF0aW9uRHJhd2FibGU7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cy5SZW1vdGVWaWV3OwotCi1AUmVtb3RlVmlldwotcHVibGljIGNsYXNzIEFuaW1hdGVkSW1hZ2VWaWV3IGV4dGVuZHMgSW1hZ2VWaWV3IHsKLSAgICBBbmltYXRpb25EcmF3YWJsZSBtQW5pbTsKLSAgICBib29sZWFuIG1BdHRhY2hlZDsKLQotICAgIHB1YmxpYyBBbmltYXRlZEltYWdlVmlldyhDb250ZXh0IGNvbnRleHQpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCk7Ci0gICAgfQotCi0gICAgcHVibGljIEFuaW1hdGVkSW1hZ2VWaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgdXBkYXRlQW5pbSgpIHsKLSAgICAgICAgRHJhd2FibGUgZHJhd2FibGUgPSBnZXREcmF3YWJsZSgpOwotICAgICAgICBpZiAobUF0dGFjaGVkICYmIG1BbmltICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1BbmltLnN0b3AoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZHJhd2FibGUgaW5zdGFuY2VvZiBBbmltYXRpb25EcmF3YWJsZSkgewotICAgICAgICAgICAgbUFuaW0gPSAoQW5pbWF0aW9uRHJhd2FibGUpZHJhd2FibGU7Ci0gICAgICAgICAgICBpZiAobUF0dGFjaGVkKSB7Ci0gICAgICAgICAgICAgICAgbUFuaW0uc3RhcnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1BbmltID0gbnVsbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldEltYWdlRHJhd2FibGUoRHJhd2FibGUgZHJhd2FibGUpIHsKLSAgICAgICAgc3VwZXIuc2V0SW1hZ2VEcmF3YWJsZShkcmF3YWJsZSk7Ci0gICAgICAgIHVwZGF0ZUFuaW0oKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBAYW5kcm9pZC52aWV3LlJlbW90YWJsZVZpZXdNZXRob2QKLSAgICBwdWJsaWMgdm9pZCBzZXRJbWFnZVJlc291cmNlKGludCByZXNpZCkgewotICAgICAgICBzdXBlci5zZXRJbWFnZVJlc291cmNlKHJlc2lkKTsKLSAgICAgICAgdXBkYXRlQW5pbSgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIG9uQXR0YWNoZWRUb1dpbmRvdygpIHsKLSAgICAgICAgc3VwZXIub25BdHRhY2hlZFRvV2luZG93KCk7Ci0gICAgICAgIGlmIChtQW5pbSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtQW5pbS5zdGFydCgpOwotICAgICAgICB9Ci0gICAgICAgIG1BdHRhY2hlZCA9IHRydWU7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgb25EZXRhY2hlZEZyb21XaW5kb3coKSB7Ci0gICAgICAgIHN1cGVyLm9uRGV0YWNoZWRGcm9tV2luZG93KCk7Ci0gICAgICAgIGlmIChtQW5pbSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtQW5pbS5zdG9wKCk7Ci0gICAgICAgIH0KLSAgICAgICAgbUF0dGFjaGVkID0gZmFsc2U7Ci0gICAgfQotfQotCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvQ2xvc2VEcmFnSGFuZGxlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvQ2xvc2VEcmFnSGFuZGxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMWFjNGQuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0Nsb3NlRHJhZ0hhbmRsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKLQotCi1wdWJsaWMgY2xhc3MgQ2xvc2VEcmFnSGFuZGxlIGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKLSAgICBTdGF0dXNCYXJTZXJ2aWNlIG1TZXJ2aWNlOwotCi0gICAgcHVibGljIENsb3NlRHJhZ0hhbmRsZShDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgewotICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRW5zdXJlIHRoYXQsIGlmIHRoZXJlIGlzIG5vIHRhcmdldCB1bmRlciB1cyB0byByZWNlaXZlIHRoZSB0b3VjaCwKLSAgICAgKiB0aGF0IHdlIHByb2Nlc3MgaXQgb3Vyc2VsZi4gIFRoaXMgbWFrZXMgc3VyZSB0aGF0IG9uSW50ZXJjZXB0VG91Y2hFdmVudCgpCi0gICAgICogaXMgYWx3YXlzIGNhbGxlZCBmb3IgdGhlIGVudGlyZSBnZXN0dXJlLgotICAgICAqLwotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIG9uVG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgewotICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgIT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV04pIHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLmludGVyY2VwdFRvdWNoRXZlbnQoZXZlbnQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIG9uSW50ZXJjZXB0VG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgewotICAgICAgICByZXR1cm4gbVNlcnZpY2UuaW50ZXJjZXB0VG91Y2hFdmVudChldmVudCkKLSAgICAgICAgICAgICAgICA/IHRydWUgOiBzdXBlci5vbkludGVyY2VwdFRvdWNoRXZlbnQoZXZlbnQpOwotICAgIH0KLX0KLQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0RhdGVWaWV3LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvRGF0ZVZpZXcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA0ZmI0NS4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvRGF0ZVZpZXcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7Ci1pbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OwotCi1pbXBvcnQgamF2YS50ZXh0LkRhdGVGb3JtYXQ7Ci1pbXBvcnQgamF2YS51dGlsLkRhdGU7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBEYXRlVmlldyBleHRlbmRzIFRleHRWaWV3IHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkRhdGVWaWV3IjsKLQotICAgIHByaXZhdGUgYm9vbGVhbiBtVXBkYXRpbmcgPSBmYWxzZTsKLQotICAgIHByaXZhdGUgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgewotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKLSAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRV9USUNLKQotICAgICAgICAgICAgICAgICAgICB8fCBhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRVpPTkVfQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVDbG9jaygpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHB1YmxpYyBEYXRlVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgewotICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgewotICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKLSAgICB9Ci0gICAgCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25EZXRhY2hlZEZyb21XaW5kb3coKSB7Ci0gICAgICAgIHN1cGVyLm9uRGV0YWNoZWRGcm9tV2luZG93KCk7Ci0gICAgICAgIHNldFVwZGF0ZXMoZmFsc2UpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCBpbnQgZ2V0U3VnZ2VzdGVkTWluaW11bVdpZHRoKCkgewotICAgICAgICAvLyBtYWtlcyB0aGUgbGFyZ2UgYmFja2dyb3VuZCBiaXRtYXAgbm90IGZvcmNlIHVzIHRvIGZ1bGwgd2lkdGgKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUNsb2NrKCkgewotICAgICAgICBEYXRlIG5vdyA9IG5ldyBEYXRlKCk7Ci0gICAgICAgIHNldFRleHQoRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5MT05HKS5mb3JtYXQobm93KSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcGRhdGVzKGJvb2xlYW4gdXBkYXRlKSB7Ci0gICAgICAgIGlmICh1cGRhdGUgIT0gbVVwZGF0aW5nKSB7Ci0gICAgICAgICAgICBtVXBkYXRpbmcgPSB1cGRhdGU7Ci0gICAgICAgICAgICBpZiAodXBkYXRlKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZm9yIEludGVudCBicm9hZGNhc3RzIGZvciB0aGUgY2xvY2sgYW5kIGJhdHRlcnkKLSAgICAgICAgICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOwotICAgICAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX1RJQ0spOwotICAgICAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FWk9ORV9DSEFOR0VEKTsKLSAgICAgICAgICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1JbnRlbnRSZWNlaXZlciwgZmlsdGVyLCBudWxsLCBudWxsKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVDbG9jaygpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtQ29udGV4dC51bnJlZ2lzdGVyUmVjZWl2ZXIobUludGVudFJlY2VpdmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0V4cGFuZGVkVmlldy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0V4cGFuZGVkVmlldy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjM3ZjkwLi4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9FeHBhbmRlZFZpZXcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQudmlldy5EaXNwbGF5OwotaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotCi0KLXB1YmxpYyBjbGFzcyBFeHBhbmRlZFZpZXcgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgewotICAgIFN0YXR1c0JhclNlcnZpY2UgbVNlcnZpY2U7Ci0gICAgaW50IG1QcmV2SGVpZ2h0ID0gLTE7Ci0KLSAgICBwdWJsaWMgRXhwYW5kZWRWaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBvbkZpbmlzaEluZmxhdGUoKSB7Ci0gICAgICAgIHN1cGVyLm9uRmluaXNoSW5mbGF0ZSgpOwotICAgIH0KLQotICAgIC8qKiBXZSB3YW50IHRvIHNocmluayBkb3duIHRvIDAsIGFuZCBpZ25vcmUgdGhlIGJhY2tncm91bmQuICovCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGludCBnZXRTdWdnZXN0ZWRNaW5pbXVtSGVpZ2h0KCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICAgcHJvdGVjdGVkIHZvaWQgb25MYXlvdXQoYm9vbGVhbiBjaGFuZ2VkLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKSB7Ci0gICAgICAgICBzdXBlci5vbkxheW91dChjaGFuZ2VkLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwotICAgICAgICAgaW50IGhlaWdodCA9IGJvdHRvbSAtIHRvcDsKLSAgICAgICAgIGlmIChoZWlnaHQgIT0gbVByZXZIZWlnaHQpIHsKLSAgICAgICAgICAgICAvL1Nsb2cuZChTdGF0dXNCYXJTZXJ2aWNlLlRBRywgImhlaWdodCBjaGFuZ2VkIG9sZD0iICsgbVByZXZIZWlnaHQgKyAiIG5ldz0iICsgaGVpZ2h0KTsKLSAgICAgICAgICAgICBtUHJldkhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgICAgICBtU2VydmljZS51cGRhdGVFeHBhbmRlZFZpZXdQb3MoU3RhdHVzQmFyU2VydmljZS5FWFBBTkRFRF9MRUFWRV9BTE9ORSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9GaXhlZFNpemVEcmF3YWJsZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0ZpeGVkU2l6ZURyYXdhYmxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiZmNiMmMuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0ZpeGVkU2l6ZURyYXdhYmxlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNhbnZhczsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKLWltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKLQotY2xhc3MgRml4ZWRTaXplRHJhd2FibGUgZXh0ZW5kcyBEcmF3YWJsZSB7Ci0gICAgRHJhd2FibGUgbURyYXdhYmxlOwotICAgIGludCBtTGVmdDsKLSAgICBpbnQgbVRvcDsKLSAgICBpbnQgbVJpZ2h0OwotICAgIGludCBtQm90dG9tOwotCi0gICAgRml4ZWRTaXplRHJhd2FibGUoRHJhd2FibGUgdGhhdCkgewotICAgICAgICBtRHJhd2FibGUgPSB0aGF0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEZpeGVkQm91bmRzKGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiKSB7Ci0gICAgICAgIG1MZWZ0ID0gbDsKLSAgICAgICAgbVRvcCA9IHQ7Ci0gICAgICAgIG1SaWdodCA9IHI7Ci0gICAgICAgIG1Cb3R0b20gPSBiOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJvdW5kcyhSZWN0IGJvdW5kcykgewotICAgICAgICBtRHJhd2FibGUuc2V0Qm91bmRzKG1MZWZ0LCBtVG9wLCBtUmlnaHQsIG1Cb3R0b20pOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJvdW5kcyhpbnQgbCwgaW50IHQsIGludCByLCBpbnQgYikgewotICAgICAgICBtRHJhd2FibGUuc2V0Qm91bmRzKG1MZWZ0LCBtVG9wLCBtUmlnaHQsIG1Cb3R0b20pOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRyYXcoQ2FudmFzIGNhbnZhcykgewotICAgICAgICBtRHJhd2FibGUuZHJhdyhjYW52YXMpOwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0T3BhY2l0eSgpIHsKLSAgICAgICAgcmV0dXJuIG1EcmF3YWJsZS5nZXRPcGFjaXR5KCk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QWxwaGEoaW50IGFscGhhKSB7Ci0gICAgICAgIG1EcmF3YWJsZS5zZXRBbHBoYShhbHBoYSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Q29sb3JGaWx0ZXIoQ29sb3JGaWx0ZXIgY2YpIHsKLSAgICAgICAgbURyYXdhYmxlLnNldENvbG9yRmlsdGVyKGNmKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvSWNvbkRhdGEuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9JY29uRGF0YS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDIyNmY5Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9JY29uRGF0YS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKLQotcHVibGljIGNsYXNzIEljb25EYXRhIHsKLSAgICAvKioKLSAgICAgKiBJbmRpY2F0ZXMgdGhzIGl0ZW0gcmVwcmVzZW50cyBhIHBpZWNlIG9mIHRleHQuCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVYVCA9IDE7Ci0gICAgCi0gICAgLyoqCi0gICAgICogSW5kaWNhdGVzIHRocyBpdGVtIHJlcHJlc2VudHMgYW4gaWNvbi4KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJQ09OID0gMjsKLQotICAgIC8qKgotICAgICAqIFRoZSB0eXBlIG9mIHRoaXMgaXRlbS4gT25lIG9mIFRFWFQsIElDT04sIG9yIExFVkVMX0lDT04uCi0gICAgICovCi0gICAgcHVibGljIGludCB0eXBlOwotCi0gICAgLyoqCi0gICAgICogVGhlIHNsb3QgdGhhdCB0aGlzIGljb24gd2lsbCBiZSBpbiBpZiBpdCBpcyBub3QgYSBub3RpZmljYXRpb24KLSAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIHNsb3Q7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgcGFja2FnZSBjb250YWludGluZyB0aGUgaWNvbiB0byBkcmF3IGZvciB0aGlzIGl0ZW0uIFZhbGlkIGlmIHRoaXMgaXMKLSAgICAgKiBhbiBJQ09OIHR5cGUuCi0gICAgICovCi0gICAgcHVibGljIFN0cmluZyBpY29uUGFja2FnZTsKLSAgICAKLSAgICAvKioKLSAgICAgKiBUaGUgaWNvbiB0byBkcmF3IGZvciB0aGlzIGl0ZW0uIFZhbGlkIGlmIHRoaXMgaXMgYW4gSUNPTiB0eXBlLgotICAgICAqLwotICAgIHB1YmxpYyBpbnQgaWNvbklkOwotICAgIAotICAgIC8qKgotICAgICAqIFRoZSBsZXZlbCBhc3NvY2lhdGVkIHdpdGggdGhlIGljb24uIFZhbGlkIGlmIHRoaXMgaXMgYSBMRVZFTF9JQ09OIHR5cGUuCi0gICAgICovCi0gICAgcHVibGljIGludCBpY29uTGV2ZWw7Ci0gICAgCi0gICAgLyoqCi0gICAgICogVGhlICJjb3VudCIgbnVtYmVyLgotICAgICAqLwotICAgIHB1YmxpYyBpbnQgbnVtYmVyOwotCi0gICAgLyoqCi0gICAgICogVGhlIHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoZSBpY29uLiBWYWxpZCBpZiB0aGlzIGlzIGEgVEVYVCB0eXBlLgotICAgICAqLwotICAgIHB1YmxpYyBDaGFyU2VxdWVuY2UgdGV4dDsKLQotICAgIHByaXZhdGUgSWNvbkRhdGEoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBJY29uRGF0YSBtYWtlSWNvbihTdHJpbmcgc2xvdCwKLSAgICAgICAgICAgIFN0cmluZyBpY29uUGFja2FnZSwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCwgaW50IG51bWJlcikgewotICAgICAgICBJY29uRGF0YSBkYXRhID0gbmV3IEljb25EYXRhKCk7Ci0gICAgICAgIGRhdGEudHlwZSA9IElDT047Ci0gICAgICAgIGRhdGEuc2xvdCA9IHNsb3Q7Ci0gICAgICAgIGRhdGEuaWNvblBhY2thZ2UgPSBpY29uUGFja2FnZTsKLSAgICAgICAgZGF0YS5pY29uSWQgPSBpY29uSWQ7Ci0gICAgICAgIGRhdGEuaWNvbkxldmVsID0gaWNvbkxldmVsOwotICAgICAgICBkYXRhLm51bWJlciA9IG51bWJlcjsKLSAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBzdGF0aWMgSWNvbkRhdGEgbWFrZVRleHQoU3RyaW5nIHNsb3QsIENoYXJTZXF1ZW5jZSB0ZXh0KSB7Ci0gICAgICAgIEljb25EYXRhIGRhdGEgPSBuZXcgSWNvbkRhdGEoKTsKLSAgICAgICAgZGF0YS50eXBlID0gVEVYVDsKLSAgICAgICAgZGF0YS5zbG90ID0gc2xvdDsKLSAgICAgICAgZGF0YS50ZXh0ID0gdGV4dDsKLSAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgY29weUZyb20oSWNvbkRhdGEgdGhhdCkgewotICAgICAgICB0aGlzLnR5cGUgPSB0aGF0LnR5cGU7Ci0gICAgICAgIHRoaXMuc2xvdCA9IHRoYXQuc2xvdDsKLSAgICAgICAgdGhpcy5pY29uUGFja2FnZSA9IHRoYXQuaWNvblBhY2thZ2U7Ci0gICAgICAgIHRoaXMuaWNvbklkID0gdGhhdC5pY29uSWQ7Ci0gICAgICAgIHRoaXMuaWNvbkxldmVsID0gdGhhdC5pY29uTGV2ZWw7Ci0gICAgICAgIHRoaXMubnVtYmVyID0gdGhhdC5udW1iZXI7Ci0gICAgICAgIHRoaXMudGV4dCA9IHRoYXQudGV4dDsgLy8gc2hvdWxkIHdlIGNsb25lIHRoaXM/Ci0gICAgfQotCi0gICAgcHVibGljIEljb25EYXRhIGNsb25lKCkgewotICAgICAgICBJY29uRGF0YSB0aGF0ID0gbmV3IEljb25EYXRhKCk7Ci0gICAgICAgIHRoYXQuY29weUZyb20odGhpcyk7Ci0gICAgICAgIHJldHVybiB0aGF0OwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gVEVYVCkgewotICAgICAgICAgICAgcmV0dXJuICJJY29uRGF0YShzbG90PSIgKyAodGhpcy5zbG90ICE9IG51bGwgPyAiJyIgKyB0aGlzLnNsb3QgKyAiJyIgOiAibnVsbCIpCi0gICAgICAgICAgICAgICAgICAgICsgIiB0ZXh0PSciICsgdGhpcy50ZXh0ICsgIicpIjsgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09IElDT04pIHsKLSAgICAgICAgICAgIHJldHVybiAiSWNvbkRhdGEoc2xvdD0iICsgKHRoaXMuc2xvdCAhPSBudWxsID8gIiciICsgdGhpcy5zbG90ICsgIiciIDogIm51bGwiKQotICAgICAgICAgICAgICAgICAgICArICIgcGFja2FnZT0iICsgdGhpcy5pY29uUGFja2FnZQotICAgICAgICAgICAgICAgICAgICArICIgaWNvbklkPSIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHRoaXMuaWNvbklkKQotICAgICAgICAgICAgICAgICAgICArICIgaWNvbkxldmVsPSIgKyB0aGlzLmljb25MZXZlbCArICIpIjsgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gIkljb25EYXRhKHR5cGU9IiArIHR5cGUgKyAiKSI7Ci0gICAgICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvSWNvbk1lcmdlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0ljb25NZXJnZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE3MDJhZS4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvSWNvbk1lcmdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7Ci0KLQotcHVibGljIGNsYXNzIEljb25NZXJnZXIgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgewotICAgIFN0YXR1c0JhclNlcnZpY2Ugc2VydmljZTsKLSAgICBTdGF0dXNCYXJJY29uIG1vcmVJY29uOwotCi0gICAgcHVibGljIEljb25NZXJnZXIoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIpIHsKLSAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbCwgdCwgciwgYik7Ci0KLSAgICAgICAgZmluYWwgaW50IG1heFdpZHRoID0gciAtIGw7Ci0gICAgICAgIGZpbmFsIGludCBOID0gZ2V0Q2hpbGRDb3VudCgpOwotICAgICAgICBpbnQgaTsKLQotICAgICAgICAvLyBnZXQgdGhlIHJpZ2h0bW9zdCBvbmUsIGFuZCBzZWUgaWYgd2UgZXZlbiBuZWVkIHRvIGRvIGFueXRoaW5nCi0gICAgICAgIGludCBmaXRSaWdodCA9IC0xOwotICAgICAgICBmb3IgKGk9Ti0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIGZpbmFsIFZpZXcgY2hpbGQgPSBnZXRDaGlsZEF0KGkpOwotICAgICAgICAgICAgaWYgKGNoaWxkLmdldFZpc2liaWxpdHkoKSAhPSBHT05FKSB7Ci0gICAgICAgICAgICAgICAgZml0UmlnaHQgPSBjaGlsZC5nZXRSaWdodCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZmluZCB0aGUgZmlyc3QgdmlzaWJsZSBvbmUgdGhhdCBpc24ndCB0aGUgbW9yZSBpY29uCi0gICAgICAgIFZpZXcgbW9yZVZpZXcgPSBudWxsOwotICAgICAgICBpbnQgZml0TGVmdCA9IC0xOwotICAgICAgICBpbnQgc3RhcnRJbmRleCA9IC0xOwotICAgICAgICBmb3IgKGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIGZpbmFsIFZpZXcgY2hpbGQgPSBnZXRDaGlsZEF0KGkpOwotICAgICAgICAgICAgaWYgKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9ub3RpZnlfbW9yZSA9PSBjaGlsZC5nZXRJZCgpKSB7Ci0gICAgICAgICAgICAgICAgbW9yZVZpZXcgPSBjaGlsZDsKLSAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gaSsxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuZ2V0VmlzaWJpbGl0eSgpICE9IEdPTkUpIHsKLSAgICAgICAgICAgICAgICBmaXRMZWZ0ID0gY2hpbGQuZ2V0TGVmdCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1vcmVWaWV3ID09IG51bGwgfHwgc3RhcnRJbmRleCA8IDApIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJTdGF0dXMgQmFyIC8gSWNvbk1lcmdlciBtb3JlVmlldyA9PSBudWxsIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIGlmIGl0IGZpdHMgd2l0aG91dCB0aGUgbW9yZSBpY29uLCB0aGVuIGhpZGUgdGhlIG1vcmUgaWNvbiBhbmQgdXBkYXRlIGZpdExlZnQKLSAgICAgICAgLy8gc28gZXZlcnl0aGluZyBnZXRzIHB1c2hlZCBsZWZ0Ci0gICAgICAgIGludCBhZGp1c3QgPSAwOwotICAgICAgICBpZiAoZml0UmlnaHQgLSBmaXRMZWZ0IDw9IG1heFdpZHRoKSB7Ci0gICAgICAgICAgICBhZGp1c3QgPSBmaXRMZWZ0IC0gbW9yZVZpZXcuZ2V0TGVmdCgpOwotICAgICAgICAgICAgZml0TGVmdCAtPSBhZGp1c3Q7Ci0gICAgICAgICAgICBmaXRSaWdodCAtPSBhZGp1c3Q7Ci0gICAgICAgICAgICBtb3JlVmlldy5sYXlvdXQoMCwgbW9yZVZpZXcuZ2V0VG9wKCksIDAsIG1vcmVWaWV3LmdldEJvdHRvbSgpKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgZXh0cmEgPSBmaXRSaWdodCAtIHI7Ci0gICAgICAgIGludCBzaGlmdCA9IC0xOwotCi0gICAgICAgIGludCBicmVha2luZ1BvaW50ID0gZml0TGVmdCArIGV4dHJhICsgYWRqdXN0OwotICAgICAgICBpbnQgbnVtYmVyID0gMDsKLSAgICAgICAgZm9yIChpPXN0YXJ0SW5kZXg7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBmaW5hbCBWaWV3IGNoaWxkID0gZ2V0Q2hpbGRBdChpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZC5nZXRWaXNpYmlsaXR5KCkgIT0gR09ORSkgewotICAgICAgICAgICAgICAgIGludCBjaGlsZExlZnQgPSBjaGlsZC5nZXRMZWZ0KCk7Ci0gICAgICAgICAgICAgICAgaW50IGNoaWxkUmlnaHQgPSBjaGlsZC5nZXRSaWdodCgpOwotICAgICAgICAgICAgICAgIGlmIChjaGlsZExlZnQgPCBicmVha2luZ1BvaW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGhpZGUgdGhpcyBvbmUKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5b3V0KDAsIGNoaWxkLmdldFRvcCgpLCAwLCBjaGlsZC5nZXRCb3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBuID0gdGhpcy5zZXJ2aWNlLmdldEljb25OdW1iZXJGb3JWaWV3KGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICs9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobiA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciArPSBuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gZGVjaWRlIGhvdyBtdWNoIHRvIHNoaWZ0IGJ5Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gY2hpbGRMZWZ0IC0gZml0TGVmdDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAvLyBzaGlmdCB0aGlzIGxlZnQgYnkgc2hpZnQKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5b3V0KGNoaWxkTGVmdC1zaGlmdCwgY2hpbGQuZ2V0VG9wKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFJpZ2h0LXNoaWZ0LCBjaGlsZC5nZXRCb3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBCVUc6IFVwZGF0aW5nIHRoZSB0ZXh0IGR1cmluZyB0aGUgbGF5b3V0IGhlcmUgZG9lc24ndCBzZWVtIHRvIGNhdXNlCi0gICAgICAgIC8vIHRoZSB2aWV3IHRvIGJlIHJlZHJhd24gZnVsbHkuICBUaGUgdGV4dCB2aWV3IGdldHMgcmVzaXplZCBjb3JyZWN0bHksIGJ1dCB0aGUKLSAgICAgICAgLy8gdGV4dCBjb250ZW50cyBhcmVuJ3QgZHJhd24gcHJvcGVybHkuICBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBwb3N0IGEgbWVzc2FnZQotICAgICAgICAvLyBhbmQgcHJvdmlkZSB0aGUgdmFsdWUgbGF0ZXIuICBXZSdyZSB0aGUgb25seSBvbmUgY2hhbmdpbmcgdGhpcyB2YWx1ZSBzaG93IGl0Ci0gICAgICAgIC8vIHNob3VsZCBiZSBvcmRlcmVkIGNvcnJlY3RseS4KLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICB0aGlzLm1vcmVJY29uLnVwZGF0ZShudW1iZXIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbUJ1Z1dvcmthcm91bmROdW1iZXIgPSBudW1iZXI7Ci0gICAgICAgICAgICBtQnVnV29ya2Fyb3VuZEhhbmRsZXIucG9zdChtQnVnV29ya2Fyb3VuZFJ1bm5hYmxlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgaW50IG1CdWdXb3JrYXJvdW5kTnVtYmVyOwotICAgIHByaXZhdGUgSGFuZGxlciBtQnVnV29ya2Fyb3VuZEhhbmRsZXIgPSBuZXcgSGFuZGxlcigpOwotICAgIHByaXZhdGUgUnVubmFibGUgbUJ1Z1dvcmthcm91bmRSdW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKLSAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgSWNvbk1lcmdlci50aGlzLm1vcmVJY29uLnVwZGF0ZShtQnVnV29ya2Fyb3VuZE51bWJlcik7Ci0gICAgICAgICAgICBJY29uTWVyZ2VyLnRoaXMubW9yZUljb24udmlldy5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0xhdGVzdEl0ZW1WaWV3LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTGF0ZXN0SXRlbVZpZXcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU4ZDE2NC4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTGF0ZXN0SXRlbVZpZXcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dDsKLQotcHVibGljIGNsYXNzIExhdGVzdEl0ZW1WaWV3IGV4dGVuZHMgRnJhbWVMYXlvdXQgewotCi0gICAgcHVibGljIExhdGVzdEl0ZW1WaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaFRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXYpIHsKLSAgICAgICAgcmV0dXJuIG9uVG91Y2hFdmVudChldik7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvbkRhdGEuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9Ob3RpZmljYXRpb25EYXRhLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZjAxY2EuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvbkRhdGEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzOwotCi1wdWJsaWMgY2xhc3MgTm90aWZpY2F0aW9uRGF0YSB7Ci0gICAgcHVibGljIFN0cmluZyBwa2c7Ci0gICAgcHVibGljIFN0cmluZyB0YWc7Ci0gICAgcHVibGljIGludCBpZDsKLSAgICBwdWJsaWMgQ2hhclNlcXVlbmNlIHRpY2tlclRleHQ7Ci0KLSAgICBwdWJsaWMgbG9uZyB3aGVuOwotICAgIHB1YmxpYyBib29sZWFuIG9uZ29pbmdFdmVudDsKLSAgICBwdWJsaWMgYm9vbGVhbiBjbGVhcmFibGU7Ci0KLSAgICBwdWJsaWMgUmVtb3RlVmlld3MgY29udGVudFZpZXc7Ci0gICAgcHVibGljIFBlbmRpbmdJbnRlbnQgY29udGVudEludGVudDsKLQotICAgIHB1YmxpYyBQZW5kaW5nSW50ZW50IGRlbGV0ZUludGVudDsKLQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiAiTm90aWZpY2F0aW9uRGF0YShwYWNrYWdlPSIgKyBwa2cgKyAiIGlkPSIgKyBpZCArICIgdGlja2VyVGV4dD0iICsgdGlja2VyVGV4dAotICAgICAgICAgICAgICAgICsgIiBvbmdvaW5nRXZlbnQ9IiArIG9uZ29pbmdFdmVudCArICIgY29udGVudEludGVudD0iICsgY29udGVudEludGVudAotICAgICAgICAgICAgICAgICsgIiBkZWxldGVJbnRlbnQ9IiArIGRlbGV0ZUludGVudAotICAgICAgICAgICAgICAgICsgIiBjbGVhcmFibGU9IiArIGNsZWFyYWJsZQotICAgICAgICAgICAgICAgICsgIiBjb250ZW50Vmlldz0iICsgY29udGVudFZpZXcgKyAiIHdoZW49IiArIHdoZW4gKyAiKSI7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvbkxpbmVhckxheW91dC5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvbkxpbmVhckxheW91dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmRmOTU2Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKLQotCi1wdWJsaWMgY2xhc3MgTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0IGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKLSAgICBwdWJsaWMgTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKLSAgICB9Ci19Ci0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9Ob3RpZmljYXRpb25WaWV3TGlzdC5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvblZpZXdMaXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYjU2YTcuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvblZpZXdMaXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKLWltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCi1jbGFzcyBOb3RpZmljYXRpb25WaWV3TGlzdCB7Ci0gICAgcHJpdmF0ZSBBcnJheUxpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBtT25nb2luZyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBwcml2YXRlIEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+IG1MYXRlc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICBOb3RpZmljYXRpb25WaWV3TGlzdCgpIHsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgaW5kZXhJbkxpc3QoQXJyYXlMaXN0PFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gbGlzdCwgTm90aWZpY2F0aW9uRGF0YSBuKXsKLSAgICAgICAgZmluYWwgaW50IE4gPSBsaXN0LnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIHRoYXQgPSBsaXN0LmdldChpKTsKLSAgICAgICAgICAgIGlmICh0aGF0LmRhdGEgPT0gbikgewotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBpbnQgZ2V0SWNvbkluZGV4KE5vdGlmaWNhdGlvbkRhdGEgbikgewotICAgICAgICBmaW5hbCBpbnQgb25nb2luZ1NpemUgPSBtT25nb2luZy5zaXplKCk7Ci0gICAgICAgIGZpbmFsIGludCBsYXRlc3RTaXplID0gbUxhdGVzdC5zaXplKCk7Ci0gICAgICAgIGlmIChuLm9uZ29pbmdFdmVudCkgewotICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhJbkxpc3QobU9uZ29pbmcsIG4pOwotICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbGF0ZXN0U2l6ZSArIGluZGV4ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGluZGV4SW5MaXN0KG1MYXRlc3QsIG4pICsgMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgcmVtb3ZlKFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKLSAgICAgICAgTm90aWZpY2F0aW9uRGF0YSBuID0gbm90aWZpY2F0aW9uLmRhdGE7Ci0gICAgICAgIGludCBpbmRleDsKLSAgICAgICAgaW5kZXggPSBpbmRleEluTGlzdChtT25nb2luZywgbik7Ci0gICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICBtT25nb2luZy5yZW1vdmUoaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGluZGV4ID0gaW5kZXhJbkxpc3QobUxhdGVzdCwgbik7Ci0gICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICBtTGF0ZXN0LnJlbW92ZShpbmRleCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBcnJheUxpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25zRm9yUGFja2FnZShTdHJpbmcgcGFja2FnZU5hbWUpIHsKLSAgICAgICAgQXJyYXlMaXN0PFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPigpOwotICAgICAgICBpbnQgTiA9IG1PbmdvaW5nLnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgaWYgKG1hdGNoUGFja2FnZShtT25nb2luZy5nZXQoaSksIHBhY2thZ2VOYW1lKSkgewotICAgICAgICAgICAgICAgIGxpc3QuYWRkKG1PbmdvaW5nLmdldChpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgTiA9IG1MYXRlc3Quc2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hQYWNrYWdlKG1MYXRlc3QuZ2V0KGkpLCBwYWNrYWdlTmFtZSkpIHsKLSAgICAgICAgICAgICAgICBsaXN0LmFkZChtTGF0ZXN0LmdldChpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGxpc3Q7Ci0gICAgfQotICAgIAotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtYXRjaFBhY2thZ2UoU3RhdHVzQmFyTm90aWZpY2F0aW9uIHNuYiwgU3RyaW5nIHBhY2thZ2VOYW1lKSB7Ci0gICAgICAgIGlmIChzbmIuZGF0YS5jb250ZW50SW50ZW50ICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChzbmIuZGF0YS5jb250ZW50SW50ZW50LmdldFRhcmdldFBhY2thZ2UoKS5lcXVhbHMocGFja2FnZU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoc25iLmRhdGEucGtnICE9IG51bGwgJiYgc25iLmRhdGEucGtnLmVxdWFscyhwYWNrYWdlTmFtZSkpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGluZGV4Rm9yS2V5KEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+IGxpc3QsIElCaW5kZXIga2V5KSB7Ci0gICAgICAgIGZpbmFsIGludCBOID0gbGlzdC5zaXplKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChsaXN0LmdldChpKS5rZXkgPT0ga2V5KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBnZXQoSUJpbmRlciBrZXkpIHsKLSAgICAgICAgaW50IGluZGV4OwotICAgICAgICBpbmRleCA9IGluZGV4Rm9yS2V5KG1PbmdvaW5nLCBrZXkpOwotICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgcmV0dXJuIG1PbmdvaW5nLmdldChpbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgaW5kZXggPSBpbmRleEZvcktleShtTGF0ZXN0LCBrZXkpOwotICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgcmV0dXJuIG1MYXRlc3QuZ2V0KGluZGV4KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICAvLyBnZXRzIHRoZSBpbmRleCBvZiB0aGUgbm90aWZpY2F0aW9uJ3MgdmlldyBpbiBpdHMgZXhwYW5kZWQgcGFyZW50IHZpZXcKLSAgICBpbnQgZ2V0RXhwYW5kZWRJbmRleChTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+IGxpc3QgPSBub3RpZmljYXRpb24uZGF0YS5vbmdvaW5nRXZlbnQgPyBtT25nb2luZyA6IG1MYXRlc3Q7Ci0gICAgICAgIGZpbmFsIElCaW5kZXIga2V5ID0gbm90aWZpY2F0aW9uLmtleTsKLSAgICAgICAgaW50IGluZGV4ID0gMDsKLSAgICAgICAgLy8gKHRoZSB2aWV3IG9yZGVyIGlzIGJhY2t3YXJkcyBmcm9tIHRoaXMgbGlzdCBvcmRlcikKLSAgICAgICAgZm9yIChpbnQgaT1saXN0LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBpdGVtID0gbGlzdC5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoaXRlbS5rZXkgPT0ga2V5KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGl0ZW0udmlldyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBTbG9nLmUoU3RhdHVzQmFyU2VydmljZS5UQUcsICJDb3VsZG4ndCBmaW5kIG5vdGlmaWNhdGlvbiBpbiBOb3RpZmljYXRpb25WaWV3TGlzdC4iKTsKLSAgICAgICAgU2xvZy5lKFN0YXR1c0JhclNlcnZpY2UuVEFHLCAibm90aWZpY2F0aW9uPSIgKyBub3RpZmljYXRpb24pOwotICAgICAgICBkdW1wKG5vdGlmaWNhdGlvbik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJWaWV3cygpIHsKLSAgICAgICAgaW50IE4gPSBtT25nb2luZy5zaXplKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIG1PbmdvaW5nLmdldChpKS52aWV3ID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBOID0gbUxhdGVzdC5zaXplKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIG1MYXRlc3QuZ2V0KGkpLnZpZXcgPSBudWxsOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGludCBvbmdvaW5nQ291bnQoKSB7Ci0gICAgICAgIHJldHVybiBtT25nb2luZy5zaXplKCk7Ci0gICAgfQotCi0gICAgaW50IGxhdGVzdENvdW50KCkgewotICAgICAgICByZXR1cm4gbUxhdGVzdC5zaXplKCk7Ci0gICAgfQotCi0gICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIGdldE9uZ29pbmcoaW50IGluZGV4KSB7Ci0gICAgICAgIHJldHVybiBtT25nb2luZy5nZXQoaW5kZXgpOwotICAgIH0KLQotICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBnZXRMYXRlc3QoaW50IGluZGV4KSB7Ci0gICAgICAgIHJldHVybiBtTGF0ZXN0LmdldChpbmRleCk7Ci0gICAgfQotCi0gICAgaW50IHNpemUoKSB7Ci0gICAgICAgIHJldHVybiBtT25nb2luZy5zaXplKCkgKyBtTGF0ZXN0LnNpemUoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZChTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIGlmIChTdGF0dXNCYXJTZXJ2aWNlLlNQRVcpIHsKLSAgICAgICAgICAgIFNsb2cuZChTdGF0dXNCYXJTZXJ2aWNlLlRBRywgImJlZm9yZSBhZGQgTm90aWZpY2F0aW9uVmlld0xpc3QiCi0gICAgICAgICAgICAgICAgICAgICsgIiBub3RpZmljYXRpb24uZGF0YS5vbmdvaW5nRXZlbnQ9IiArIG5vdGlmaWNhdGlvbi5kYXRhLm9uZ29pbmdFdmVudCk7Ci0gICAgICAgICAgICBkdW1wKG5vdGlmaWNhdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICBBcnJheUxpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBsaXN0ID0gbm90aWZpY2F0aW9uLmRhdGEub25nb2luZ0V2ZW50ID8gbU9uZ29pbmcgOiBtTGF0ZXN0OwotICAgICAgICBsb25nIHdoZW4gPSBub3RpZmljYXRpb24uZGF0YS53aGVuOwotICAgICAgICBmaW5hbCBpbnQgTiA9IGxpc3Quc2l6ZSgpOwotICAgICAgICBpbnQgaW5kZXggPSBOOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gdGhhdCA9IGxpc3QuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKHRoYXQuZGF0YS53aGVuID4gd2hlbikgewotICAgICAgICAgICAgICAgIGluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBsaXN0LmFkZChpbmRleCwgbm90aWZpY2F0aW9uKTsKLQotICAgICAgICBpZiAoU3RhdHVzQmFyU2VydmljZS5TUEVXKSB7Ci0gICAgICAgICAgICBTbG9nLmQoU3RhdHVzQmFyU2VydmljZS5UQUcsICJhZnRlciBhZGQgTm90aWZpY2F0aW9uVmlld0xpc3QgaW5kZXg9IiArIGluZGV4KTsKLSAgICAgICAgICAgIGR1bXAobm90aWZpY2F0aW9uKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgZHVtcChTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIGlmIChTdGF0dXNCYXJTZXJ2aWNlLlNQRVcpIHsKLSAgICAgICAgICAgIGJvb2xlYW4gc2hvd1RpbWUgPSBmYWxzZTsKLSAgICAgICAgICAgIFN0cmluZyBzID0gIiI7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bU9uZ29pbmcuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gdGhhdCA9IG1PbmdvaW5nLmdldChpKTsKLSAgICAgICAgICAgICAgICBpZiAodGhhdC5rZXkgPT0gbm90aWZpY2F0aW9uLmtleSkgewotICAgICAgICAgICAgICAgICAgICBzICs9ICJbIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNob3dUaW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0gdGhhdC5kYXRhLndoZW47Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcyArPSB0aGF0LmRhdGEucGtnICsgIi8iICsgdGhhdC5kYXRhLmlkICsgIi8iICsgdGhhdC52aWV3OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodGhhdC5rZXkgPT0gbm90aWZpY2F0aW9uLmtleSkgewotICAgICAgICAgICAgICAgICAgICBzICs9ICJdIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcyArPSAiICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTbG9nLmQoU3RhdHVzQmFyU2VydmljZS5UQUcsICJOb3RpZmljYXRpb25WaWV3TGlzdCBvbmdvaW5nOiAiICsgcyk7Ci0KLSAgICAgICAgICAgIHMgPSAiIjsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxtTGF0ZXN0LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIHRoYXQgPSBtTGF0ZXN0LmdldChpKTsKLSAgICAgICAgICAgICAgICBpZiAodGhhdC5rZXkgPT0gbm90aWZpY2F0aW9uLmtleSkgewotICAgICAgICAgICAgICAgICAgICBzICs9ICJbIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNob3dUaW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0gdGhhdC5kYXRhLndoZW47Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcyArPSB0aGF0LmRhdGEucGtnICsgIi8iICsgdGhhdC5kYXRhLmlkICsgIi8iICsgdGhhdC52aWV3OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodGhhdC5rZXkgPT0gbm90aWZpY2F0aW9uLmtleSkgewotICAgICAgICAgICAgICAgICAgICBzICs9ICJdIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcyArPSAiICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTbG9nLmQoU3RhdHVzQmFyU2VydmljZS5UQUcsICJOb3RpZmljYXRpb25WaWV3TGlzdCBsYXRlc3Q6ICAiICsgcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gZ2V0KFZpZXcgdmlldykgewotICAgICAgICBpbnQgTiA9IG1PbmdvaW5nLnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IG1PbmdvaW5nLmdldChpKTsKLSAgICAgICAgICAgIFZpZXcgdiA9IG5vdGlmaWNhdGlvbi52aWV3OwotICAgICAgICAgICAgaWYgKHYgPT0gdmlldykgewotICAgICAgICAgICAgICAgIHJldHVybiBub3RpZmljYXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgTiA9IG1MYXRlc3Quc2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uID0gbUxhdGVzdC5nZXQoaSk7Ci0gICAgICAgICAgICBWaWV3IHYgPSBub3RpZmljYXRpb24udmlldzsKLSAgICAgICAgICAgIGlmICh2ID09IHZpZXcpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlKFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKLSAgICAgICAgcmVtb3ZlKG5vdGlmaWNhdGlvbik7Ci0gICAgICAgIGFkZChub3RpZmljYXRpb24pOwotICAgIH0KLQotICAgIGJvb2xlYW4gaGFzQ2xlYXJhYmxlSXRlbXMoKSB7Ci0gICAgICAgIGludCBOID0gbUxhdGVzdC5zaXplKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChtTGF0ZXN0LmdldChpKS5kYXRhLmNsZWFyYWJsZSkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyRXhjZXB0aW9uLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyRXhjZXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNThmNTkuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0JhckV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotcHVibGljIGNsYXNzIFN0YXR1c0JhckV4Y2VwdGlvbiBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24gewotICAgIFN0YXR1c0JhckV4Y2VwdGlvbihTdHJpbmcgbXNnKSB7Ci0gICAgICAgIHN1cGVyKG1zZyk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0Jhckljb24uamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJJY29uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmOGI4YTguLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0Jhckljb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2U7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKLWltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotaW1wb3J0IGFuZHJvaWQudmlldy5HcmF2aXR5OwotaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7Ci0KLWNsYXNzIFN0YXR1c0Jhckljb24gewotICAgIC8vIFRPRE86IGdldCB0aGlzIGZyb20gYSByZXNvdXJjZQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJQ09OX0dBUCA9IDg7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElDT05fV0lEVEggPSAyNTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSUNPTl9IRUlHSFQgPSAyNTsKLQotICAgIHB1YmxpYyBWaWV3IHZpZXc7Ci0KLSAgICBJY29uRGF0YSBtRGF0YTsKLSAgICAKLSAgICBwcml2YXRlIFRleHRWaWV3IG1UZXh0VmlldzsKLSAgICBwcml2YXRlIEFuaW1hdGVkSW1hZ2VWaWV3IG1JbWFnZVZpZXc7Ci0gICAgcHJpdmF0ZSBUZXh0VmlldyBtTnVtYmVyVmlldzsKLQotICAgIHB1YmxpYyBTdGF0dXNCYXJJY29uKENvbnRleHQgY29udGV4dCwgSWNvbkRhdGEgZGF0YSwgVmlld0dyb3VwIHBhcmVudCkgewotICAgICAgICBtRGF0YSA9IGRhdGEuY2xvbmUoKTsKLQotICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkgewotICAgICAgICAgICAgY2FzZSBJY29uRGF0YS5URVhUOiB7Ci0gICAgICAgICAgICAgICAgVGV4dFZpZXcgdDsKLSAgICAgICAgICAgICAgICB0ID0gbmV3IFRleHRWaWV3KGNvbnRleHQpOwotICAgICAgICAgICAgICAgIG1UZXh0VmlldyA9IHQ7Ci0gICAgICAgICAgICAgICAgTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyBsYXlvdXRQYXJhbXMgPSBuZXcgTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcygKLSAgICAgICAgICAgICAgICAgICAgICAgIExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMuV1JBUF9DT05URU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpOwotICAgICAgICAgICAgICAgIHQuc2V0VGV4dFNpemUoMTYpOwotICAgICAgICAgICAgICAgIHQuc2V0VGV4dENvbG9yKDB4ZmYwMDAwMDApOwotICAgICAgICAgICAgICAgIHQuc2V0VHlwZWZhY2UoVHlwZWZhY2UuREVGQVVMVF9CT0xEKTsKLSAgICAgICAgICAgICAgICB0LnNldEdyYXZpdHkoR3Jhdml0eS5DRU5URVJfVkVSVElDQUwgfCBHcmF2aXR5LkxFRlQpOwotICAgICAgICAgICAgICAgIHQuc2V0UGFkZGluZyg2LCAwLCAwLCAwKTsKLSAgICAgICAgICAgICAgICB0LnNldExheW91dFBhcmFtcyhsYXlvdXRQYXJhbXMpOwotICAgICAgICAgICAgICAgIHQuc2V0VGV4dChkYXRhLnRleHQpOwotICAgICAgICAgICAgICAgIHRoaXMudmlldyA9IHQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgSWNvbkRhdGEuSUNPTjogewotICAgICAgICAgICAgICAgIC8vIGNvbnRhaW5lcgotICAgICAgICAgICAgICAgIExheW91dEluZmxhdGVyIGluZmxhdGVyID0gKExheW91dEluZmxhdGVyKWNvbnRleHQuZ2V0U3lzdGVtU2VydmljZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuTEFZT1VUX0lORkxBVEVSX1NFUlZJQ0UpOwotICAgICAgICAgICAgICAgIFZpZXcgdiA9IGluZmxhdGVyLmluZmxhdGUoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5sYXlvdXQuc3RhdHVzX2Jhcl9pY29uLCBwYXJlbnQsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICB0aGlzLnZpZXcgPSB2OwotCi0gICAgICAgICAgICAgICAgLy8gaWNvbgotICAgICAgICAgICAgICAgIEFuaW1hdGVkSW1hZ2VWaWV3IGltID0gKEFuaW1hdGVkSW1hZ2VWaWV3KXYuZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuaW1hZ2UpOwotICAgICAgICAgICAgICAgIGltLnNldEltYWdlRHJhd2FibGUoZ2V0SWNvbihjb250ZXh0LCBkYXRhKSk7Ci0gICAgICAgICAgICAgICAgaW0uc2V0SW1hZ2VMZXZlbChkYXRhLmljb25MZXZlbCk7Ci0gICAgICAgICAgICAgICAgbUltYWdlVmlldyA9IGltOwotCi0gICAgICAgICAgICAgICAgLy8gbnVtYmVyCi0gICAgICAgICAgICAgICAgVGV4dFZpZXcgbnYgPSAoVGV4dFZpZXcpdi5maW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5udW1iZXIpOwotICAgICAgICAgICAgICAgIG1OdW1iZXJWaWV3ID0gbnY7Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGEubnVtYmVyID4gMCkgewotICAgICAgICAgICAgICAgICAgICBudi5zZXRUZXh0KCIiICsgZGF0YS5udW1iZXIpOwotICAgICAgICAgICAgICAgICAgICBudi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbnYuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZShDb250ZXh0IGNvbnRleHQsIEljb25EYXRhIGRhdGEpIHRocm93cyBTdGF0dXNCYXJFeGNlcHRpb24gewotICAgICAgICBpZiAobURhdGEudHlwZSAhPSBkYXRhLnR5cGUpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBTdGF0dXNCYXJFeGNlcHRpb24oInN0YXR1cyBiYXIgZW50cnkgdHlwZSBjYW4ndCBjaGFuZ2UiKTsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkgewotICAgICAgICBjYXNlIEljb25EYXRhLlRFWFQ6Ci0gICAgICAgICAgICBpZiAoIVRleHRVdGlscy5lcXVhbHMobURhdGEudGV4dCwgZGF0YS50ZXh0KSkgewotICAgICAgICAgICAgICAgIFRleHRWaWV3IHR2ID0gbVRleHRWaWV3OwotICAgICAgICAgICAgICAgIHR2LnNldFRleHQoZGF0YS50ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEljb25EYXRhLklDT046Ci0gICAgICAgICAgICBpZiAoKChtRGF0YS5pY29uUGFja2FnZSAhPSBudWxsICYmIGRhdGEuaWNvblBhY2thZ2UgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmICFtRGF0YS5pY29uUGFja2FnZS5lcXVhbHMoZGF0YS5pY29uUGFja2FnZSkpCi0gICAgICAgICAgICAgICAgICAgIHx8IG1EYXRhLmljb25JZCAhPSBkYXRhLmljb25JZAotICAgICAgICAgICAgICAgICAgICB8fCBtRGF0YS5pY29uTGV2ZWwgIT0gZGF0YS5pY29uTGV2ZWwpIHsKLSAgICAgICAgICAgICAgICBJbWFnZVZpZXcgaW0gPSBtSW1hZ2VWaWV3OwotICAgICAgICAgICAgICAgIGltLnNldEltYWdlRHJhd2FibGUoZ2V0SWNvbihjb250ZXh0LCBkYXRhKSk7Ci0gICAgICAgICAgICAgICAgaW0uc2V0SW1hZ2VMZXZlbChkYXRhLmljb25MZXZlbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobURhdGEubnVtYmVyICE9IGRhdGEubnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgVGV4dFZpZXcgbnYgPSBtTnVtYmVyVmlldzsKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5udW1iZXIgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIG52LnNldFRleHQoIiIgKyBkYXRhLm51bWJlcik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbnYuc2V0VGV4dCgiIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgbURhdGEuY29weUZyb20oZGF0YSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdXBkYXRlKGludCBudW1iZXIpIHsKLSAgICAgICAgaWYgKG1EYXRhLm51bWJlciAhPSBudW1iZXIpIHsKLSAgICAgICAgICAgIFRleHRWaWV3IG52ID0gbU51bWJlclZpZXc7Ci0gICAgICAgICAgICBpZiAobnVtYmVyID4gMCkgewotICAgICAgICAgICAgICAgIG52LnNldFRleHQoIiIgKyBudW1iZXIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBudi5zZXRUZXh0KCIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtRGF0YS5udW1iZXIgPSBudW1iZXI7Ci0gICAgfQotCi0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSByaWdodCBpY29uIHRvIHVzZSBmb3IgdGhpcyBpdGVtLCByZXNwZWN0aW5nIHRoZSBpY29uSWQgYW5kCi0gICAgICogaWNvblBhY2thZ2UgKGlmIHNldCkKLSAgICAgKiAKLSAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IHRvIHVzZSB0byBnZXQgcmVzb3VyY2VzIGlmIGljb25QYWNrYWdlIGlzIG5vdCBzZXQKLSAgICAgKiBAcmV0dXJuIERyYXdhYmxlIGZvciB0aGlzIGl0ZW0sIG9yIG51bGwgaWYgdGhlIHBhY2thZ2Ugb3IgaXRlbSBjb3VsZCBub3QKLSAgICAgKiAgICAgICAgIGJlIGZvdW5kCi0gICAgICovCi0gICAgc3RhdGljIERyYXdhYmxlIGdldEljb24oQ29udGV4dCBjb250ZXh0LCBJY29uRGF0YSBkYXRhKSB7Ci0KLSAgICAgICAgUmVzb3VyY2VzIHIgPSBudWxsOwotCi0gICAgICAgIGlmIChkYXRhLmljb25QYWNrYWdlICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgciA9IGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRSZXNvdXJjZXNGb3JBcHBsaWNhdGlvbihkYXRhLmljb25QYWNrYWdlKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgICAgIFNsb2cuZShTdGF0dXNCYXJTZXJ2aWNlLlRBRywgIkljb24gcGFja2FnZSBub3QgZm91bmQ6ICIgKyBkYXRhLmljb25QYWNrYWdlLCBleCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkYXRhLmljb25JZCA9PSAwKSB7Ci0gICAgICAgICAgICBTbG9nLncoU3RhdHVzQmFyU2VydmljZS5UQUcsICJObyBpY29uIElEIGZvciBzbG90ICIgKyBkYXRhLnNsb3QpOwotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gci5nZXREcmF3YWJsZShkYXRhLmljb25JZCk7Ci0gICAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgU2xvZy53KFN0YXR1c0JhclNlcnZpY2UuVEFHLCAiSWNvbiBub3QgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgKyAoZGF0YS5pY29uUGFja2FnZSAhPSBudWxsID8gZGF0YS5pY29uSWQgOiAiPHN5c3RlbT4iKQotICAgICAgICAgICAgICAgICAgKyAiOiAiICsgSW50ZWdlci50b0hleFN0cmluZyhkYXRhLmljb25JZCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgaW50IGdldE51bWJlcigpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhLm51bWJlcjsKLSAgICB9Ci19Ci0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJOb3RpZmljYXRpb24uamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJOb3RpZmljYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU3NzNmNy4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyTm90aWZpY2F0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotCi1jbGFzcyBTdGF0dXNCYXJOb3RpZmljYXRpb24gewotICAgIElCaW5kZXIga2V5OwotICAgIE5vdGlmaWNhdGlvbkRhdGEgZGF0YTsKLSAgICBWaWV3IHZpZXc7Ci0gICAgVmlldyBjb250ZW50VmlldzsKLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJQb2xpY3kuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJQb2xpY3kuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRkMWNiNC4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyUG9saWN5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmFwcC5BbGVydERpYWxvZzsKLWltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhBMmRwOwotaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aEFkYXB0ZXI7Ci1pbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoSGVhZHNldDsKLWltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhQYmFwOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheTsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0OwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7Ci1pbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5tZWRpYS5SaW5ndG9uZTsKLWltcG9ydCBhbmRyb2lkLm1lZGlhLlJpbmd0b25lTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKLWltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7Ci1pbXBvcnQgYW5kcm9pZC5uZXQud2lmaS5XaWZpTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLm9zLkJpbmRlcjsKLWltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOwotaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKLWltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5QaG9uZVN0YXRlTGlzdGVuZXI7Ci1pbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlOwotaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlNpZ25hbFN0cmVuZ3RoOwotaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlRlbGVwaG9ueU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlRm9ybWF0OwotaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5SZWxhdGl2ZVNpemVTcGFuOwotaW1wb3J0IGFuZHJvaWQudGV4dC5TcGFubmFibGU7Ci1pbXBvcnQgYW5kcm9pZC50ZXh0LlNwYW5uYWJsZVN0cmluZ0J1aWxkZXI7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlckltcGw7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKLQotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLlI7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLklCYXR0ZXJ5U3RhdHM7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR3BzTG9jYXRpb25Qcm92aWRlcjsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255SW50ZW50czsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuY2RtYS5FcmlJbmZvOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5jZG1hLlR0eUludGVudDsKLWltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQmF0dGVyeVN0YXRzU2VydmljZTsKLQotaW1wb3J0IGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0OwotaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKLWltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjb250YWlucyBhbGwgb2YgdGhlIHBvbGljeSBhYm91dCB3aGljaCBpY29ucyBhcmUgaW5zdGFsbGVkIGluIHRoZSBzdGF0dXMKLSAqIGJhciBhdCBib290IHRpbWUuICBJbiByZWFsaXR5LCBpdCBzaG91bGQgZ28gaW50byB0aGUgYW5kcm9pZC5wb2xpY3kgcGFja2FnZSwgYnV0Ci0gKiBwdXR0aW5nIGl0IGhlcmUgaXMgdGhlIGZpcnN0IHN0ZXAgZnJvbSBleHRyYWN0aW5nIGl0LgotICovCi1wdWJsaWMgY2xhc3MgU3RhdHVzQmFyUG9saWN5IHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0YXR1c0JhclBvbGljeSI7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBTdGF0dXNCYXJQb2xpY3kgc0luc3RhbmNlOwotCi0gICAgLy8gbWVzc2FnZSBjb2RlcyBmb3IgdGhlIGhhbmRsZXIKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVZFTlRfQkFUVEVSWV9DTE9TRSA9IDQ7Ci0KLSAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgcHJpdmF0ZSBmaW5hbCBTdGF0dXNCYXJTZXJ2aWNlIG1TZXJ2aWNlOwotICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBTdGF0dXNCYXJIYW5kbGVyKCk7Ci0gICAgcHJpdmF0ZSBmaW5hbCBJQmF0dGVyeVN0YXRzIG1CYXR0ZXJ5U3RhdHM7Ci0KLSAgICAvLyBjbG9jawotICAgIHByaXZhdGUgQ2FsZW5kYXIgbUNhbGVuZGFyOwotICAgIHByaXZhdGUgU3RyaW5nIG1DbG9ja0Zvcm1hdFN0cmluZzsKLSAgICBwcml2YXRlIFNpbXBsZURhdGVGb3JtYXQgbUNsb2NrRm9ybWF0OwotICAgIHByaXZhdGUgSUJpbmRlciBtQ2xvY2tJY29uOwotICAgIHByaXZhdGUgSWNvbkRhdGEgbUNsb2NrRGF0YTsKLQotICAgIC8vIHN0b3JhZ2UKLSAgICBwcml2YXRlIFN0b3JhZ2VNYW5hZ2VyIG1TdG9yYWdlTWFuYWdlcjsKLQotICAgIC8vIGJhdHRlcnkKLSAgICBwcml2YXRlIElCaW5kZXIgbUJhdHRlcnlJY29uOwotICAgIHByaXZhdGUgSWNvbkRhdGEgbUJhdHRlcnlEYXRhOwotICAgIHByaXZhdGUgYm9vbGVhbiBtQmF0dGVyeUZpcnN0ID0gdHJ1ZTsKLSAgICBwcml2YXRlIGJvb2xlYW4gbUJhdHRlcnlQbHVnZ2VkOwotICAgIHByaXZhdGUgaW50IG1CYXR0ZXJ5TGV2ZWw7Ci0gICAgcHJpdmF0ZSBBbGVydERpYWxvZyBtTG93QmF0dGVyeURpYWxvZzsKLSAgICBwcml2YXRlIFRleHRWaWV3IG1CYXR0ZXJ5TGV2ZWxUZXh0VmlldzsKLSAgICBwcml2YXRlIFZpZXcgbUJhdHRlcnlWaWV3OwotICAgIHByaXZhdGUgaW50IG1CYXR0ZXJ5Vmlld1NlcXVlbmNlOwotICAgIHByaXZhdGUgYm9vbGVhbiBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGwgPSBmYWxzZTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFNIT1dfTE9XX0JBVFRFUllfV0FSTklORyA9IHRydWU7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBTSE9XX0JBVFRFUllfV0FSTklOR1NfSU5fQ0FMTCA9IHRydWU7Ci0KLSAgICAvLyBwaG9uZQotICAgIHByaXZhdGUgVGVsZXBob255TWFuYWdlciBtUGhvbmU7Ci0gICAgcHJpdmF0ZSBJQmluZGVyIG1QaG9uZUljb247Ci0KLSAgICAvLyoqKioqIFNpZ25hbCBzdHJlbmd0aCBpY29ucwotICAgIHByaXZhdGUgSWNvbkRhdGEgbVBob25lRGF0YTsKLSAgICAvL0dTTS9VTVRTCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc1NpZ25hbEltYWdlcyA9IG5ldyBpbnRbXSB7Ci0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsXzEsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsXzIsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsXzMsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsXzQKLSAgICB9OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNTaWduYWxJbWFnZXNfciA9IG5ldyBpbnRbXSB7Ci0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcl9zaWduYWxfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yX3NpZ25hbF8xLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3Jfc2lnbmFsXzIsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcl9zaWduYWxfMywKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yX3NpZ25hbF80Ci0gICAgfTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzUm9hbWluZ0luZGljYXRvckltYWdlc19jZG1hID0gbmV3IGludFtdIHsKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwgLy9TdGFuZGFyZCBSb2FtaW5nIEluZGljYXRvcgotICAgICAgICAvLyAxIGlzIFN0YW5kYXJkIFJvYW1pbmcgSW5kaWNhdG9yIE9GRgotICAgICAgICAvLyBUT0RPIFQ6IGltYWdlIG5ldmVyIHVzZWQsIHJlbW92ZSBhbmQgcHV0IDAgaW5zdGVhZD8KLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLQotICAgICAgICAvLyAyIGlzIFN0YW5kYXJkIFJvYW1pbmcgSW5kaWNhdG9yIEZMQVNISU5HCi0gICAgICAgIC8vIFRPRE8gVDogaW1hZ2UgbmV2ZXIgdXNlZCwgcmVtb3ZlIGFuZCBwdXQgMCBpbnN0ZWFkPwotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotCi0gICAgICAgIC8vIDMtMTIgU3RhbmRhcmQgRVJJCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIC8vMwotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotCi0gICAgICAgIC8vIDEzLTYzIFJlc2VydmVkIGZvciBTdGFuZGFyZCBFUkkKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwgLy8xMwotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotCi0gICAgICAgIC8vIDY0LTEyNyBSZXNlcnZlZCBmb3IgTm9uIFN0YW5kYXJkIChPcGVyYXRvciBTcGVjaWZpYykgRVJJCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIC8vNjQKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCAvLzgzCi0KLSAgICAgICAgLy8gMTI4LTI1NSBSZXNlcnZlZAotICAgIH07Ci0KLSAgICAvLyoqKioqIERhdGEgY29ubmVjdGlvbiBpY29ucwotICAgIHByaXZhdGUgaW50W10gbURhdGFJY29uTGlzdCA9IHNEYXRhTmV0VHlwZV9nOwotICAgIC8vR1NNL1VNVFMKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzRGF0YU5ldFR5cGVfZyA9IG5ldyBpbnRbXSB7Ci0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2csCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5fZywKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9vdXRfZywKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLAotICAgICAgICB9OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNEYXRhTmV0VHlwZV8zZyA9IG5ldyBpbnRbXSB7Ci0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzNnLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luXzNnLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX291dF8zZywKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8zZywKLSAgICAgICAgfTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzRGF0YU5ldFR5cGVfZSA9IG5ldyBpbnRbXSB7Ci0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UsCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5fZSwKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9vdXRfZSwKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLAotICAgICAgICB9OwotICAgIC8vMy41RwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNEYXRhTmV0VHlwZV9oID0gbmV3IGludFtdIHsKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaCwKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbl9oLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX291dF9oLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luYW5kb3V0X2gsCi0gICAgfTsKLQotICAgIC8vQ0RNQQotICAgIC8vIFVzZSAzRyBpY29ucyBmb3IgRVZETyBkYXRhIGFuZCAxeCBpY29ucyBmb3IgMVhSVFQgZGF0YQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNEYXRhTmV0VHlwZV8xeCA9IG5ldyBpbnRbXSB7Ci0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbl8xeCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX291dF8xeCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luYW5kb3V0XzF4LAotICAgIH07Ci0KLSAgICAvLyBBc3N1bWUgaXQncyBhbGwgZ29vZCB1bmxlc3Mgd2UgaGVhciBvdGhlcndpc2UuICBXZSBkb24ndCBhbHdheXMgc2VlbQotICAgIC8vIHRvIGdldCBicm9hZGNhc3RzIHRoYXQgaXQgKmlzKiB0aGVyZS4KLSAgICBJY2NDYXJkLlN0YXRlIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUkVBRFk7Ci0gICAgaW50IG1QaG9uZVN0YXRlID0gVGVsZXBob255TWFuYWdlci5DQUxMX1NUQVRFX0lETEU7Ci0gICAgaW50IG1EYXRhU3RhdGUgPSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfRElTQ09OTkVDVEVEOwotICAgIGludCBtRGF0YUFjdGl2aXR5ID0gVGVsZXBob255TWFuYWdlci5EQVRBX0FDVElWSVRZX05PTkU7Ci0gICAgU2VydmljZVN0YXRlIG1TZXJ2aWNlU3RhdGU7Ci0gICAgU2lnbmFsU3RyZW5ndGggbVNpZ25hbFN0cmVuZ3RoOwotCi0gICAgLy8gZGF0YSBjb25uZWN0aW9uCi0gICAgcHJpdmF0ZSBJQmluZGVyIG1EYXRhSWNvbjsKLSAgICBwcml2YXRlIEljb25EYXRhIG1EYXRhRGF0YTsKLSAgICBwcml2YXRlIGJvb2xlYW4gbURhdGFJY29uVmlzaWJsZTsKLSAgICBwcml2YXRlIGJvb2xlYW4gbUhzcGFEYXRhRGlzdGluZ3Vpc2hhYmxlOwotCi0gICAgLy8gcmluZ2VyIHZvbHVtZQotICAgIHByaXZhdGUgSUJpbmRlciBtVm9sdW1lSWNvbjsKLSAgICBwcml2YXRlIEljb25EYXRhIG1Wb2x1bWVEYXRhOwotICAgIHByaXZhdGUgYm9vbGVhbiBtVm9sdW1lVmlzaWJsZTsKLQotICAgIC8vIGJsdWV0b290aCBkZXZpY2Ugc3RhdHVzCi0gICAgcHJpdmF0ZSBJQmluZGVyIG1CbHVldG9vdGhJY29uOwotICAgIHByaXZhdGUgSWNvbkRhdGEgbUJsdWV0b290aERhdGE7Ci0gICAgcHJpdmF0ZSBpbnQgbUJsdWV0b290aEhlYWRzZXRTdGF0ZTsKLSAgICBwcml2YXRlIGJvb2xlYW4gbUJsdWV0b290aEEyZHBDb25uZWN0ZWQ7Ci0gICAgcHJpdmF0ZSBpbnQgbUJsdWV0b290aFBiYXBTdGF0ZTsKLSAgICBwcml2YXRlIGJvb2xlYW4gbUJsdWV0b290aEVuYWJsZWQ7Ci0KLSAgICAvLyB3aWZpCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc1dpZmlTaWduYWxJbWFnZXMgPSBuZXcgaW50W10gewotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c193aWZpX3NpZ25hbF8xLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c193aWZpX3NpZ25hbF8yLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c193aWZpX3NpZ25hbF8zLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c193aWZpX3NpZ25hbF80LAotICAgICAgICB9OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBzV2lmaVRlbXBvcmFyaWx5Tm90Q29ubmVjdGVkSW1hZ2UgPQotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c193aWZpX3NpZ25hbF8wOwotCi0gICAgcHJpdmF0ZSBpbnQgbUxhc3RXaWZpU2lnbmFsTGV2ZWwgPSAtMTsKLSAgICBwcml2YXRlIGJvb2xlYW4gbUlzV2lmaUNvbm5lY3RlZCA9IGZhbHNlOwotICAgIHByaXZhdGUgSUJpbmRlciBtV2lmaUljb247Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtV2lmaURhdGE7Ci0KLSAgICAvLyBncHMKLSAgICBwcml2YXRlIElCaW5kZXIgbUdwc0ljb247Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtR3BzRW5hYmxlZEljb25EYXRhOwotICAgIHByaXZhdGUgSWNvbkRhdGEgbUdwc0ZpeEljb25EYXRhOwotCi0gICAgLy8gYWxhcm0gY2xvY2sKLSAgICAvLyBJY29uIGxpdCB3aGVuIGNsb2NrIGlzIHNldAotICAgIHByaXZhdGUgSUJpbmRlciBtQWxhcm1DbG9ja0ljb247Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtQWxhcm1DbG9ja0ljb25EYXRhOwotCi0gICAgLy8gc3luYyBzdGF0ZQotICAgIC8vIElmIHN5bmMgaXMgYWN0aXZlIHRoZSBTeW5jQWN0aXZlIGljb24gaXMgZGlzcGxheWVkLiBJZiBzeW5jIGlzIG5vdCBhY3RpdmUgYnV0Ci0gICAgLy8gc3luYyBpcyBmYWlsaW5nIHRoZSBTeW5jRmFpbGluZyBpY29uIGlzIGRpc3BsYXllZC4gT3RoZXJ3aXNlIG5laXRoZXIgYXJlIGRpc3BsYXllZC4KLSAgICBwcml2YXRlIElCaW5kZXIgbVN5bmNBY3RpdmVJY29uOwotICAgIHByaXZhdGUgSUJpbmRlciBtU3luY0ZhaWxpbmdJY29uOwotCi0gICAgLy8gVFRZIG1vZGUKLSAgICAvLyBJY29uIGxpdCB3aGVuIFRUWSBtb2RlIGlzIGVuYWJsZWQKLSAgICBwcml2YXRlIElCaW5kZXIgbVRUWU1vZGVJY29uOwotICAgIHByaXZhdGUgSWNvbkRhdGEgbVRUWU1vZGVFbmFibGVJY29uRGF0YTsKLQotICAgIC8vIENkbWEgUm9hbWluZyBJbmRpY2F0b3IsIEVSSQotICAgIHByaXZhdGUgSUJpbmRlciBtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uOwotICAgIHByaXZhdGUgSWNvbkRhdGEgbUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbkRhdGE7Ci0KLSAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1JbnRlbnRSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgICAgIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX1RJTUVfVElDSykpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVDbG9jaygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX1RJTUVfQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVDbG9jaygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVCYXR0ZXJ5KGludGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VEKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZUNsb2NrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRVpPTkVfQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgdHogPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoInRpbWUtem9uZSIpOwotICAgICAgICAgICAgICAgIG1DYWxlbmRhciA9IENhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldFRpbWVab25lKHR6KSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1DbG9ja0Zvcm1hdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1DbG9ja0Zvcm1hdC5zZXRUaW1lWm9uZShtQ2FsZW5kYXIuZ2V0VGltZVpvbmUoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVwZGF0ZUNsb2NrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fQUxBUk1fQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVBbGFybShpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX1NZTkNfU1RBVEVfQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVTeW5jU3RhdGUoaW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9CQVRURVJZX0xPVykpIHsKLSAgICAgICAgICAgICAgICBvbkJhdHRlcnlMb3coaW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9CQVRURVJZX09LQVkpCi0gICAgICAgICAgICAgICAgICAgIHx8IGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9QT1dFUl9DT05ORUNURUQpKSB7Ci0gICAgICAgICAgICAgICAgb25CYXR0ZXJ5T2theShpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhCbHVldG9vdGhBZGFwdGVyLkFDVElPTl9TVEFURV9DSEFOR0VEKSB8fAotICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpIHx8Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQTJkcC5BQ1RJT05fU0lOS19TVEFURV9DSEFOR0VEKSB8fAotICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKEJsdWV0b290aFBiYXAuUEJBUF9TVEFURV9DSEFOR0VEX0FDVElPTikpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVCbHVldG9vdGgoaW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuTkVUV09SS19TVEFURV9DSEFOR0VEX0FDVElPTikgfHwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5XSUZJX1NUQVRFX0NIQU5HRURfQUNUSU9OKSB8fAotICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLlJTU0lfQ0hBTkdFRF9BQ1RJT04pKSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlV2lmaShpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhHcHNMb2NhdGlvblByb3ZpZGVyLkdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pIHx8Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoR3BzTG9jYXRpb25Qcm92aWRlci5HUFNfRklYX0NIQU5HRV9BQ1RJT04pKSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlR3BzKGludGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9DSEFOR0VEX0FDVElPTikgfHwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX0NIQU5HRURfQUNUSU9OKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZVZvbHVtZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhUZWxlcGhvbnlJbnRlbnRzLkFDVElPTl9TSU1fU1RBVEVfQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVTaW1TdGF0ZShpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhUdHlJbnRlbnQuVFRZX0VOQUJMRURfQ0hBTkdFX0FDVElPTikpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVUVFkoaW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwcml2YXRlIFN0YXR1c0JhclBvbGljeShDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclNlcnZpY2Ugc2VydmljZSkgewotICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKLSAgICAgICAgbVNpZ25hbFN0cmVuZ3RoID0gbmV3IFNpZ25hbFN0cmVuZ3RoKCk7Ci0gICAgICAgIG1CYXR0ZXJ5U3RhdHMgPSBCYXR0ZXJ5U3RhdHNTZXJ2aWNlLmdldFNlcnZpY2UoKTsKLQotICAgICAgICAvLyBjbG9jawotICAgICAgICBtQ2FsZW5kYXIgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShUaW1lWm9uZS5nZXREZWZhdWx0KCkpOwotICAgICAgICBtQ2xvY2tEYXRhID0gSWNvbkRhdGEubWFrZVRleHQoImNsb2NrIiwgIiIpOwotICAgICAgICBtQ2xvY2tJY29uID0gc2VydmljZS5hZGRJY29uKG1DbG9ja0RhdGEsIG51bGwpOwotICAgICAgICB1cGRhdGVDbG9jaygpOwotCi0gICAgICAgIC8vIHN0b3JhZ2UKLSAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TVE9SQUdFX1NFUlZJQ0UpOwotICAgICAgICBtU3RvcmFnZU1hbmFnZXIucmVnaXN0ZXJMaXN0ZW5lcigKLSAgICAgICAgICAgICAgICBuZXcgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5TdG9yYWdlTm90aWZpY2F0aW9uKGNvbnRleHQpKTsKLQotICAgICAgICAvLyBiYXR0ZXJ5Ci0gICAgICAgIG1CYXR0ZXJ5RGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJiYXR0ZXJ5IiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2JhdHRlcnlfdW5rbm93biwgMCwgMCk7Ci0gICAgICAgIG1CYXR0ZXJ5SWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtQmF0dGVyeURhdGEsIG51bGwpOwotCi0gICAgICAgIC8vIHBob25lX3NpZ25hbAotICAgICAgICBtUGhvbmUgPSAoVGVsZXBob255TWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5URUxFUEhPTllfU0VSVklDRSk7Ci0gICAgICAgIG1QaG9uZURhdGEgPSBJY29uRGF0YS5tYWtlSWNvbigicGhvbmVfc2lnbmFsIiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF9udWxsLCAwLCAwKTsKLSAgICAgICAgbVBob25lSWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtUGhvbmVEYXRhLCBudWxsKTsKLQotICAgICAgICAvLyByZWdpc3RlciBmb3IgcGhvbmUgc3RhdGUgbm90aWZpY2F0aW9ucy4KLSAgICAgICAgKChUZWxlcGhvbnlNYW5hZ2VyKW1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5URUxFUEhPTllfU0VSVklDRSkpCi0gICAgICAgICAgICAgICAgLmxpc3RlbihtUGhvbmVTdGF0ZUxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQaG9uZVN0YXRlTGlzdGVuZXIuTElTVEVOX1NFUlZJQ0VfU1RBVEUKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgUGhvbmVTdGF0ZUxpc3RlbmVyLkxJU1RFTl9TSUdOQUxfU1RSRU5HVEhTCi0gICAgICAgICAgICAgICAgICAgICAgICB8IFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fQ0FMTF9TVEFURQotICAgICAgICAgICAgICAgICAgICAgICAgfCBQaG9uZVN0YXRlTGlzdGVuZXIuTElTVEVOX0RBVEFfQ09OTkVDVElPTl9TVEFURQotICAgICAgICAgICAgICAgICAgICAgICAgfCBQaG9uZVN0YXRlTGlzdGVuZXIuTElTVEVOX0RBVEFfQUNUSVZJVFkpOwotCi0gICAgICAgIC8vIGRhdGFfY29ubmVjdGlvbgotICAgICAgICBtRGF0YURhdGEgPSBJY29uRGF0YS5tYWtlSWNvbigiZGF0YV9jb25uZWN0aW9uIiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2csIDAsIDApOwotICAgICAgICBtRGF0YUljb24gPSBzZXJ2aWNlLmFkZEljb24obURhdGFEYXRhLCBudWxsKTsKLSAgICAgICAgc2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtRGF0YUljb24sIGZhbHNlKTsKLQotICAgICAgICAvLyB3aWZpCi0gICAgICAgIG1XaWZpRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJ3aWZpIiwgbnVsbCwgc1dpZmlTaWduYWxJbWFnZXNbMF0sIDAsIDApOwotICAgICAgICBtV2lmaUljb24gPSBzZXJ2aWNlLmFkZEljb24obVdpZmlEYXRhLCBudWxsKTsKLSAgICAgICAgc2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtV2lmaUljb24sIGZhbHNlKTsKLSAgICAgICAgLy8gd2lmaSB3aWxsIGdldCB1cGRhdGVkIGJ5IHRoZSBzdGlja3kgaW50ZW50cwotCi0gICAgICAgIC8vIFRUWSBzdGF0dXMKLSAgICAgICAgbVRUWU1vZGVFbmFibGVJY29uRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJ0dHkiLAotICAgICAgICAgICAgICAgIG51bGwsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfdHR5X21vZGUsIDAsIDApOwotICAgICAgICBtVFRZTW9kZUljb24gPSBzZXJ2aWNlLmFkZEljb24obVRUWU1vZGVFbmFibGVJY29uRGF0YSwgbnVsbCk7Ci0gICAgICAgIHNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVRUWU1vZGVJY29uLCBmYWxzZSk7Ci0KLSAgICAgICAgLy8gQ2RtYSBSb2FtaW5nIEluZGljYXRvciwgRVJJCi0gICAgICAgIG1DZG1hUm9hbWluZ0luZGljYXRvckljb25EYXRhID0gSWNvbkRhdGEubWFrZUljb24oImNkbWFfZXJpIiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLCAwLCAwKTsKLSAgICAgICAgbUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uRGF0YSwgbnVsbCk7Ci0gICAgICAgIHNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbiwgZmFsc2UpOwotCi0gICAgICAgIC8vIGJsdWV0b290aCBzdGF0dXMKLSAgICAgICAgbUJsdWV0b290aERhdGEgPSBJY29uRGF0YS5tYWtlSWNvbigiYmx1ZXRvb3RoIiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoLCAwLCAwKTsKLSAgICAgICAgbUJsdWV0b290aEljb24gPSBzZXJ2aWNlLmFkZEljb24obUJsdWV0b290aERhdGEsIG51bGwpOwotICAgICAgICBCbHVldG9vdGhBZGFwdGVyIGFkYXB0ZXIgPSBCbHVldG9vdGhBZGFwdGVyLmdldERlZmF1bHRBZGFwdGVyKCk7Ci0gICAgICAgIGlmIChhZGFwdGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1CbHVldG9vdGhFbmFibGVkID0gYWRhcHRlci5pc0VuYWJsZWQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1CbHVldG9vdGhFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgbUJsdWV0b290aEEyZHBDb25uZWN0ZWQgPSBmYWxzZTsKLSAgICAgICAgbUJsdWV0b290aEhlYWRzZXRTdGF0ZSA9IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRElTQ09OTkVDVEVEOwotICAgICAgICBtQmx1ZXRvb3RoUGJhcFN0YXRlID0gQmx1ZXRvb3RoUGJhcC5TVEFURV9ESVNDT05ORUNURUQ7Ci0gICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1CbHVldG9vdGhJY29uLCBtQmx1ZXRvb3RoRW5hYmxlZCk7Ci0KLSAgICAgICAgLy8gR3BzIHN0YXR1cwotICAgICAgICBtR3BzRW5hYmxlZEljb25EYXRhID0gSWNvbkRhdGEubWFrZUljb24oImdwcyIsCi0gICAgICAgICAgICAgICAgbnVsbCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19ncHNfYWNxdWlyaW5nX2FuaW0sIDAsIDApOwotICAgICAgICBtR3BzRml4SWNvbkRhdGEgPSBJY29uRGF0YS5tYWtlSWNvbigiZ3BzIiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2dwc19vbiwgMCwgMCk7Ci0gICAgICAgIG1HcHNJY29uID0gc2VydmljZS5hZGRJY29uKG1HcHNFbmFibGVkSWNvbkRhdGEsIG51bGwpOwotICAgICAgICBzZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1HcHNJY29uLCBmYWxzZSk7Ci0KLSAgICAgICAgLy8gQWxhcm0gY2xvY2sKLSAgICAgICAgbUFsYXJtQ2xvY2tJY29uRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKAotICAgICAgICAgICAgICAgICJhbGFybV9jbG9jayIsCi0gICAgICAgICAgICAgICAgbnVsbCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9hbGFybSwgMCwgMCk7Ci0gICAgICAgIG1BbGFybUNsb2NrSWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtQWxhcm1DbG9ja0ljb25EYXRhLCBudWxsKTsKLSAgICAgICAgc2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtQWxhcm1DbG9ja0ljb24sIGZhbHNlKTsKLQotICAgICAgICAvLyBTeW5jIHN0YXRlCi0gICAgICAgIG1TeW5jQWN0aXZlSWNvbiA9IHNlcnZpY2UuYWRkSWNvbihJY29uRGF0YS5tYWtlSWNvbigic3luY19hY3RpdmUiLAotICAgICAgICAgICAgICAgIG51bGwsIFIuZHJhd2FibGUuc3RhdF9ub3RpZnlfc3luY19hbmltMCwgMCwgMCksIG51bGwpOwotICAgICAgICBtU3luY0ZhaWxpbmdJY29uID0gc2VydmljZS5hZGRJY29uKEljb25EYXRhLm1ha2VJY29uKCJzeW5jX2ZhaWxpbmciLAotICAgICAgICAgICAgICAgIG51bGwsIFIuZHJhd2FibGUuc3RhdF9ub3RpZnlfc3luY19lcnJvciwgMCwgMCksIG51bGwpOwotICAgICAgICBzZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1TeW5jQWN0aXZlSWNvbiwgZmFsc2UpOwotICAgICAgICBzZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1TeW5jRmFpbGluZ0ljb24sIGZhbHNlKTsKLQotICAgICAgICAvLyB2b2x1bWUKLSAgICAgICAgbVZvbHVtZURhdGEgPSBJY29uRGF0YS5tYWtlSWNvbigidm9sdW1lIiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl9zaWxlbnQsIDAsIDApOwotICAgICAgICBtVm9sdW1lSWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtVm9sdW1lRGF0YSwgbnVsbCk7Ci0gICAgICAgIHNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVZvbHVtZUljb24sIGZhbHNlKTsKLSAgICAgICAgdXBkYXRlVm9sdW1lKCk7Ci0KLSAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKLQotICAgICAgICAvLyBSZWdpc3RlciBmb3IgSW50ZW50IGJyb2FkY2FzdHMgZm9yLi4uCi0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX1RJQ0spOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fVElNRV9DSEFOR0VEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0NPTkZJR1VSQVRJT05fQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9CQVRURVJZX0NIQU5HRUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQkFUVEVSWV9MT1cpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQkFUVEVSWV9PS0FZKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1BPV0VSX0NPTk5FQ1RFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FWk9ORV9DSEFOR0VEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0FMQVJNX0NIQU5HRUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fU1lOQ19TVEFURV9DSEFOR0VEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihBdWRpb01hbmFnZXIuUklOR0VSX01PREVfQ0hBTkdFRF9BQ1RJT04pOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEF1ZGlvTWFuYWdlci5WSUJSQVRFX1NFVFRJTkdfQ0hBTkdFRF9BQ1RJT04pOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEFkYXB0ZXIuQUNUSU9OX1NUQVRFX0NIQU5HRUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoUGJhcC5QQkFQX1NUQVRFX0NIQU5HRURfQUNUSU9OKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihXaWZpTWFuYWdlci5XSUZJX1NUQVRFX0NIQU5HRURfQUNUSU9OKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihXaWZpTWFuYWdlci5TVVBQTElDQU5UX0NPTk5FQ1RJT05fQ0hBTkdFX0FDVElPTik7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oV2lmaU1hbmFnZXIuTkVUV09SS19TVEFURV9DSEFOR0VEX0FDVElPTik7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oV2lmaU1hbmFnZXIuUlNTSV9DSEFOR0VEX0FDVElPTik7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oR3BzTG9jYXRpb25Qcm92aWRlci5HUFNfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihHcHNMb2NhdGlvblByb3ZpZGVyLkdQU19GSVhfQ0hBTkdFX0FDVElPTik7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oVGVsZXBob255SW50ZW50cy5BQ1RJT05fU0lNX1NUQVRFX0NIQU5HRUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFR0eUludGVudC5UVFlfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKTsKLSAgICAgICAgbUNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtSW50ZW50UmVjZWl2ZXIsIGZpbHRlciwgbnVsbCwgbUhhbmRsZXIpOwotCi0gICAgICAgIC8vIGxvYWQgY29uZmlnIHRvIGRldGVybWluZSBpZiB0byBkaXN0aW5ndWlzaCBIc3BhIGRhdGEgaWNvbgotICAgICAgICB0cnkgewotICAgICAgICAgICAgbUhzcGFEYXRhRGlzdGluZ3Vpc2hhYmxlID0gbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5ib29sLmNvbmZpZ19oc3BhX2RhdGFfZGlzdGluZ3Vpc2hhYmxlKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIG1Ic3BhRGF0YURpc3Rpbmd1aXNoYWJsZSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyB2b2lkIGluc3RhbGxJY29ucyhDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclNlcnZpY2Ugc2VydmljZSkgewotICAgICAgICBzSW5zdGFuY2UgPSBuZXcgU3RhdHVzQmFyUG9saWN5KGNvbnRleHQsIHNlcnZpY2UpOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgQ2hhclNlcXVlbmNlIGdldFNtYWxsVGltZSgpIHsKLSAgICAgICAgYm9vbGVhbiBiMjQgPSBEYXRlRm9ybWF0LmlzMjRIb3VyRm9ybWF0KG1Db250ZXh0KTsKLSAgICAgICAgaW50IHJlczsKLQotICAgICAgICBpZiAoYjI0KSB7Ci0gICAgICAgICAgICByZXMgPSBSLnN0cmluZy50d2VudHlfZm91cl9ob3VyX3RpbWVfZm9ybWF0OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzID0gUi5zdHJpbmcudHdlbHZlX2hvdXJfdGltZV9mb3JtYXQ7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5hbCBjaGFyIE1BR0lDMSA9ICdcdUVGMDAnOwotICAgICAgICBmaW5hbCBjaGFyIE1BR0lDMiA9ICdcdUVGMDEnOwotCi0gICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmOwotICAgICAgICBTdHJpbmcgZm9ybWF0ID0gbUNvbnRleHQuZ2V0U3RyaW5nKHJlcyk7Ci0gICAgICAgIGlmICghZm9ybWF0LmVxdWFscyhtQ2xvY2tGb3JtYXRTdHJpbmcpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogU2VhcmNoIGZvciBhbiB1bnF1b3RlZCAiYSIgaW4gdGhlIGZvcm1hdCBzdHJpbmcsIHNvIHdlIGNhbgotICAgICAgICAgICAgICogYWRkIGR1bW15IGNoYXJhY3RlcnMgYXJvdW5kIGl0IHRvIGxldCB1cyBmaW5kIGl0IGFnYWluIGFmdGVyCi0gICAgICAgICAgICAgKiBmb3JtYXR0aW5nIGFuZCBjaGFuZ2UgaXRzIHNpemUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGludCBhID0gLTE7Ci0gICAgICAgICAgICBib29sZWFuIHF1b3RlZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb3JtYXQubGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAgICAgIGNoYXIgYyA9IGZvcm1hdC5jaGFyQXQoaSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1b3RlZCA9ICFxdW90ZWQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFxdW90ZWQgJiYgYyA9PSAnYScpIHsKLSAgICAgICAgICAgICAgICAgICAgYSA9IGk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGEgPj0gMCkgewotICAgICAgICAgICAgICAgIC8vIE1vdmUgYSBiYWNrIHNvIGFueSB3aGl0ZXNwYWNlIGJlZm9yZSB0aGUgQU0vUE0gaXMgYWxzbyBpbiB0aGUgYWx0ZXJuYXRlIHNpemUuCi0gICAgICAgICAgICAgICAgZmluYWwgaW50IGIgPSBhOwotICAgICAgICAgICAgICAgIHdoaWxlIChhID4gMCAmJiBDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGZvcm1hdC5jaGFyQXQoYS0xKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYS0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQuc3Vic3RyaW5nKDAsIGEpICsgTUFHSUMxICsgZm9ybWF0LnN1YnN0cmluZyhhLCBiKQotICAgICAgICAgICAgICAgICAgICAgICAgKyAiYSIgKyBNQUdJQzIgKyBmb3JtYXQuc3Vic3RyaW5nKGIgKyAxKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbUNsb2NrRm9ybWF0ID0gc2RmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoZm9ybWF0KTsKLSAgICAgICAgICAgIG1DbG9ja0Zvcm1hdFN0cmluZyA9IGZvcm1hdDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNkZiA9IG1DbG9ja0Zvcm1hdDsKLSAgICAgICAgfQotICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc2RmLmZvcm1hdChtQ2FsZW5kYXIuZ2V0VGltZSgpKTsKLQotICAgICAgICBpbnQgbWFnaWMxID0gcmVzdWx0LmluZGV4T2YoTUFHSUMxKTsKLSAgICAgICAgaW50IG1hZ2ljMiA9IHJlc3VsdC5pbmRleE9mKE1BR0lDMik7Ci0KLSAgICAgICAgaWYgKG1hZ2ljMSA+PSAwICYmIG1hZ2ljMiA+IG1hZ2ljMSkgewotICAgICAgICAgICAgU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciBmb3JtYXR0ZWQgPSBuZXcgU3Bhbm5hYmxlU3RyaW5nQnVpbGRlcihyZXN1bHQpOwotCi0gICAgICAgICAgICBmb3JtYXR0ZWQuc2V0U3BhbihuZXcgUmVsYXRpdmVTaXplU3BhbigwLjdmKSwgbWFnaWMxLCBtYWdpYzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGFubmFibGUuU1BBTl9FWENMVVNJVkVfSU5DTFVTSVZFKTsKLQotICAgICAgICAgICAgZm9ybWF0dGVkLmRlbGV0ZShtYWdpYzIsIG1hZ2ljMiArIDEpOwotICAgICAgICAgICAgZm9ybWF0dGVkLmRlbGV0ZShtYWdpYzEsIG1hZ2ljMSArIDEpOwotCi0gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVDbG9jaygpIHsKLSAgICAgICAgbUNhbGVuZGFyLnNldFRpbWVJbk1pbGxpcyhTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7Ci0gICAgICAgIG1DbG9ja0RhdGEudGV4dCA9IGdldFNtYWxsVGltZSgpOwotICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1DbG9ja0ljb24sIG1DbG9ja0RhdGEsIG51bGwpOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVBbGFybShJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGJvb2xlYW4gYWxhcm1TZXQgPSBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKCJhbGFybVNldCIsIGZhbHNlKTsKLSAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUFsYXJtQ2xvY2tJY29uLCBhbGFybVNldCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVN5bmNTdGF0ZShJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGJvb2xlYW4gaXNBY3RpdmUgPSBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKCJhY3RpdmUiLCBmYWxzZSk7Ci0gICAgICAgIGJvb2xlYW4gaXNGYWlsaW5nID0gaW50ZW50LmdldEJvb2xlYW5FeHRyYSgiZmFpbGluZyIsIGZhbHNlKTsKLSAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVN5bmNBY3RpdmVJY29uLCBpc0FjdGl2ZSk7Ci0gICAgICAgIC8vIERvbid0IGRpc3BsYXkgc3luYyBmYWlsaW5nIGljb246IEJVRyAxMjk3OTYzIFNldCBzeW5jIGVycm9yIHRpbWVvdXQgdG8gIm5ldmVyIgotICAgICAgICAvL21TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1TeW5jRmFpbGluZ0ljb24sIGlzRmFpbGluZyAmJiAhaXNBY3RpdmUpOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVCYXR0ZXJ5KEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgbUJhdHRlcnlEYXRhLmljb25JZCA9IGludGVudC5nZXRJbnRFeHRyYSgiaWNvbi1zbWFsbCIsIDApOwotICAgICAgICBtQmF0dGVyeURhdGEuaWNvbkxldmVsID0gaW50ZW50LmdldEludEV4dHJhKCJsZXZlbCIsIDApOwotICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1CYXR0ZXJ5SWNvbiwgbUJhdHRlcnlEYXRhLCBudWxsKTsKLQotICAgICAgICBib29sZWFuIHBsdWdnZWQgPSBpbnRlbnQuZ2V0SW50RXh0cmEoInBsdWdnZWQiLCAwKSAhPSAwOwotICAgICAgICBpbnQgbGV2ZWwgPSBpbnRlbnQuZ2V0SW50RXh0cmEoImxldmVsIiwgLTEpOwotICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVCYXR0ZXJ5IGxldmVsPSIgKyBsZXZlbAotICAgICAgICAgICAgICAgICAgICArICIgcGx1Z2dlZD0iICsgcGx1Z2dlZAotICAgICAgICAgICAgICAgICAgICArICIgbUJhdHRlcnlQbHVnZ2VkPSIgKyBtQmF0dGVyeVBsdWdnZWQKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1CYXR0ZXJ5TGV2ZWw9IiArIG1CYXR0ZXJ5TGV2ZWwKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1CYXR0ZXJ5Rmlyc3Q9IiArIG1CYXR0ZXJ5Rmlyc3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbGVhbiBvbGRQbHVnZ2VkID0gbUJhdHRlcnlQbHVnZ2VkOwotCi0gICAgICAgIG1CYXR0ZXJ5UGx1Z2dlZCA9IHBsdWdnZWQ7Ci0gICAgICAgIG1CYXR0ZXJ5TGV2ZWwgPSBsZXZlbDsKLQotICAgICAgICBpZiAobUJhdHRlcnlGaXJzdCkgewotICAgICAgICAgICAgbUJhdHRlcnlGaXJzdCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIC8qCi0gICAgICAgICAqIE5vIGxvbmdlciBzaG93aW5nIHRoZSBiYXR0ZXJ5IHZpZXcgYmVjYXVzZSBpdCBkcmF3cyBhdHRlbnRpb24gYXdheQotICAgICAgICAgKiBmcm9tIHRoZSBVU0Igc3RvcmFnZSBub3RpZmljYXRpb24uIFdlIGNvdWxkIHN0aWxsIHNob3cgaXQgd2hlbgotICAgICAgICAgKiBjb25uZWN0ZWQgdG8gYSBicmljaywgYnV0IHRoYXQgY291bGQgbGVhZCB0byB0aGUgdXNlciBpbnRvIHRoaW5raW5nCi0gICAgICAgICAqIHRoZSBkZXZpY2UgZG9lcyBub3QgY2hhcmdlIHdoZW4gcGx1Z2dlZCBpbnRvIFVTQiAoc2luY2UgaGUvc2hlIHdvdWxkCi0gICAgICAgICAqIG5vdCBzZWUgdGhlIHNhbWUgYmF0dGVyeSBzY3JlZW4gb24gVVNCIGFzIGhlIHNlZXMgb24gYnJpY2spLgotICAgICAgICAgKi8KLSAgICAgICAgLyogZWxzZSB7Ci0gICAgICAgICAgICBpZiAocGx1Z2dlZCAmJiAhb2xkUGx1Z2dlZCkgewotICAgICAgICAgICAgICAgIHNob3dCYXR0ZXJ5VmlldygpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgICovCi0gICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgU2xvZy5kKFRBRywgInBsdWdnZWQ9IiArIHBsdWdnZWQgKyAiIG9sZFBsdWdnZWQ9IiArIG9sZFBsdWdnZWQgKyAiIGxldmVsPSIgKyBsZXZlbCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgb25CYXR0ZXJ5TG93KEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgaWYgKFNIT1dfTE9XX0JBVFRFUllfV0FSTklORykgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1QaG9uZVN0YXRlPSIgKyBtUGhvbmVTdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICsgIiBtTG93QmF0dGVyeURpYWxvZz0iICsgbUxvd0JhdHRlcnlEaWFsb2cKLSAgICAgICAgICAgICAgICAgICAgICArICIgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsPSIgKyBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGwpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoU0hPV19CQVRURVJZX1dBUk5JTkdTX0lOX0NBTEwgfHwgbVBob25lU3RhdGUgPT0gVGVsZXBob255TWFuYWdlci5DQUxMX1NUQVRFX0lETEUpIHsKLSAgICAgICAgICAgICAgICBzaG93TG93QmF0dGVyeVdhcm5pbmcoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBvbkJhdHRlcnlPa2F5KEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgaWYgKG1Mb3dCYXR0ZXJ5RGlhbG9nICE9IG51bGwKLSAgICAgICAgICAgICAgICAmJiBTSE9XX0xPV19CQVRURVJZX1dBUk5JTkcpIHsKLSAgICAgICAgICAgIG1Mb3dCYXR0ZXJ5RGlhbG9nLmRpc21pc3MoKTsKLSAgICAgICAgICAgIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHNob3dCYXR0ZXJ5VmlldygpIHsKLSAgICAgICAgY2xvc2VMYXN0QmF0dGVyeVZpZXcoKTsKLSAgICAgICAgaWYgKG1Mb3dCYXR0ZXJ5RGlhbG9nICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1Mb3dCYXR0ZXJ5RGlhbG9nLmRpc21pc3MoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBsZXZlbCA9IG1CYXR0ZXJ5TGV2ZWw7Ci0KLSAgICAgICAgVmlldyB2ID0gVmlldy5pbmZsYXRlKG1Db250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5iYXR0ZXJ5X3N0YXR1cywgbnVsbCk7Ci0gICAgICAgIG1CYXR0ZXJ5VmlldyA9IHY7Ci0gICAgICAgIGludCBwaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0LlRSQU5TTFVDRU5UOwotICAgICAgICBEcmF3YWJsZSBiZyA9IHYuZ2V0QmFja2dyb3VuZCgpOwotICAgICAgICBpZiAoYmcgIT0gbnVsbCkgewotICAgICAgICAgICAgcGl4ZWxGb3JtYXQgPSBiZy5nZXRPcGFjaXR5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgZmxhZ3MgPSAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFCi0gICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9UT1VDSEFCTEUKLSAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRElNX0JFSElORDsKLQotICAgICAgICBpZiAoIW1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCi0gICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5ib29sLmNvbmZpZ19zZl9zbG93Qmx1cikpIHsKLSAgICAgICAgICAgIGZsYWdzIHw9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQ7Ci0gICAgICAgIH0KLQotICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBscCA9IG5ldyBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcygKLSAgICAgICAgICAgICAgICBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zLldSQVBfQ09OVEVOVCwKLSAgICAgICAgICAgICAgICBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zLldSQVBfQ09OVEVOVCwKLSAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1RPQVNULAotICAgICAgICAgICAgICAgIGZsYWdzLCBwaXhlbEZvcm1hdCk7Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBkaW0gYW1vdW50IGZyb20gdGhlIHRoZW1lCi0gICAgICAgIFR5cGVkQXJyYXkgYSA9IG1Db250ZXh0Lm9idGFpblN0eWxlZEF0dHJpYnV0ZXMoCi0gICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuVGhlbWUpOwotICAgICAgICBscC5kaW1BbW91bnQgPSBhLmdldEZsb2F0KGFuZHJvaWQuUi5zdHlsZWFibGUuVGhlbWVfYmFja2dyb3VuZERpbUFtb3VudCwgMC41Zik7Ci0gICAgICAgIGEucmVjeWNsZSgpOwotCi0gICAgICAgIGxwLnNldFRpdGxlKCJCYXR0ZXJ5Iik7Ci0KLSAgICAgICAgVGV4dFZpZXcgbGV2ZWxUZXh0VmlldyA9IChUZXh0Vmlldyl2LmZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmxldmVsX3BlcmNlbnQpOwotICAgICAgICBsZXZlbFRleHRWaWV3LnNldFRleHQobUNvbnRleHQuZ2V0U3RyaW5nKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5iYXR0ZXJ5X3N0YXR1c190ZXh0X3BlcmNlbnRfZm9ybWF0LCBsZXZlbCkpOwotCi0gICAgICAgIHNldEJhdHRlcnlMZXZlbCh2LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLnNwYWNlciwgMTAwLWxldmVsLCAwLCAwKTsKLSAgICAgICAgc2V0QmF0dGVyeUxldmVsKHYsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubGV2ZWwsIGxldmVsLAotICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuYmF0dGVyeV9jaGFyZ2VfZmlsbCwgbGV2ZWwpOwotCi0gICAgICAgIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKS5hZGRWaWV3KHYsIGxwKTsKLQotICAgICAgICBzY2hlZHVsZUNsb3NlQmF0dGVyeVZpZXcoKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgc2V0QmF0dGVyeUxldmVsKFZpZXcgcGFyZW50LCBpbnQgaWQsIGludCBoZWlnaHQsIGludCBiYWNrZ3JvdW5kLCBpbnQgbGV2ZWwpIHsKLSAgICAgICAgSW1hZ2VWaWV3IHYgPSAoSW1hZ2VWaWV3KXBhcmVudC5maW5kVmlld0J5SWQoaWQpOwotICAgICAgICBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIGxwID0gKExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMpdi5nZXRMYXlvdXRQYXJhbXMoKTsKLSAgICAgICAgbHAud2VpZ2h0ID0gaGVpZ2h0OwotICAgICAgICBpZiAoYmFja2dyb3VuZCAhPSAwKSB7Ci0gICAgICAgICAgICB2LnNldEJhY2tncm91bmRSZXNvdXJjZShiYWNrZ3JvdW5kKTsKLSAgICAgICAgICAgIERyYXdhYmxlIGJrZyA9IHYuZ2V0QmFja2dyb3VuZCgpOwotICAgICAgICAgICAgYmtnLnNldExldmVsKGxldmVsKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzaG93TG93QmF0dGVyeVdhcm5pbmcoKSB7Ci0gICAgICAgIGNsb3NlTGFzdEJhdHRlcnlWaWV3KCk7Ci0KLSAgICAgICAgLy8gU2hvdyBleGFjdCBiYXR0ZXJ5IGxldmVsLgotICAgICAgICBDaGFyU2VxdWVuY2UgbGV2ZWxUZXh0ID0gbUNvbnRleHQuZ2V0U3RyaW5nKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5iYXR0ZXJ5X2xvd19wZXJjZW50X2Zvcm1hdCwgbUJhdHRlcnlMZXZlbCk7Ci0KLSAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWxUZXh0VmlldyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtQmF0dGVyeUxldmVsVGV4dFZpZXcuc2V0VGV4dChsZXZlbFRleHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVmlldyB2ID0gVmlldy5pbmZsYXRlKG1Db250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5iYXR0ZXJ5X2xvdywgbnVsbCk7Ci0gICAgICAgICAgICBtQmF0dGVyeUxldmVsVGV4dFZpZXc9KFRleHRWaWV3KXYuZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubGV2ZWxfcGVyY2VudCk7Ci0KLSAgICAgICAgICAgIG1CYXR0ZXJ5TGV2ZWxUZXh0Vmlldy5zZXRUZXh0KGxldmVsVGV4dCk7Ci0KLSAgICAgICAgICAgIEFsZXJ0RGlhbG9nLkJ1aWxkZXIgYiA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKG1Db250ZXh0KTsKLSAgICAgICAgICAgICAgICBiLnNldENhbmNlbGFibGUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYi5zZXRUaXRsZShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5iYXR0ZXJ5X2xvd190aXRsZSk7Ci0gICAgICAgICAgICAgICAgYi5zZXRWaWV3KHYpOwotICAgICAgICAgICAgICAgIGIuc2V0SWNvbihhbmRyb2lkLlIuZHJhd2FibGUuaWNfZGlhbG9nX2FsZXJ0KTsKLSAgICAgICAgICAgICAgICBiLnNldFBvc2l0aXZlQnV0dG9uKGFuZHJvaWQuUi5zdHJpbmcub2ssIG51bGwpOwotCi0gICAgICAgICAgICAgICAgZmluYWwgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9QT1dFUl9VU0FHRV9TVU1NQVJZKTsKLSAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSwotICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUwotICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19ISVNUT1JZKTsKLSAgICAgICAgICAgICAgICBpZiAoaW50ZW50LnJlc29sdmVBY3Rpdml0eShtQ29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpKSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGIuc2V0TmVnYXRpdmVCdXR0b24oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuYmF0dGVyeV9sb3dfd2h5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhEaWFsb2dJbnRlcmZhY2UgZGlhbG9nLCBpbnQgd2hpY2gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KGludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1Mb3dCYXR0ZXJ5RGlhbG9nICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxvd0JhdHRlcnlEaWFsb2cuZGlzbWlzcygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBBbGVydERpYWxvZyBkID0gYi5jcmVhdGUoKTsKLSAgICAgICAgICAgIGQuc2V0T25EaXNtaXNzTGlzdGVuZXIobUxvd0JhdHRlcnlMaXN0ZW5lcik7Ci0gICAgICAgICAgICBkLmdldFdpbmRvdygpLnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fQUxFUlQpOwotICAgICAgICAgICAgZC5zaG93KCk7Ci0gICAgICAgICAgICBtTG93QmF0dGVyeURpYWxvZyA9IGQ7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgY3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKLSAgICAgICAgaWYgKFNldHRpbmdzLlN5c3RlbS5nZXRJbnQoY3IsCi0gICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLlBPV0VSX1NPVU5EU19FTkFCTEVELCAxKSA9PSAxKQotICAgICAgICB7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgc291bmRQYXRoID0gU2V0dGluZ3MuU3lzdGVtLmdldFN0cmluZyhjciwKLSAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTE9XX0JBVFRFUllfU09VTkQpOwotICAgICAgICAgICAgaWYgKHNvdW5kUGF0aCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgVXJpIHNvdW5kVXJpID0gVXJpLnBhcnNlKCJmaWxlOi8vIiArIHNvdW5kUGF0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNvdW5kVXJpICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgUmluZ3RvbmUgc2Z4ID0gUmluZ3RvbmVNYW5hZ2VyLmdldFJpbmd0b25lKG1Db250ZXh0LCBzb3VuZFVyaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzZnggIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnNldFN0cmVhbVR5cGUoQXVkaW9NYW5hZ2VyLlNUUkVBTV9TWVNURU0pOwotICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnBsYXkoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVDYWxsU3RhdGUoaW50IHN0YXRlKSB7Ci0gICAgICAgIG1QaG9uZVN0YXRlID0gc3RhdGU7Ci0gICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1QaG9uZVN0YXRlPSIgKyBtUGhvbmVTdGF0ZQotICAgICAgICAgICAgICAgICAgICArICIgbUxvd0JhdHRlcnlEaWFsb2c9IiArIG1Mb3dCYXR0ZXJ5RGlhbG9nCi0gICAgICAgICAgICAgICAgICAgICsgIiBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGw9IiArIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1QaG9uZVN0YXRlID09IFRlbGVwaG9ueU1hbmFnZXIuQ0FMTF9TVEFURV9JRExFKSB7Ci0gICAgICAgICAgICBpZiAobUJhdHRlcnlTaG93TG93T25FbmRDYWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtQmF0dGVyeVBsdWdnZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hvd0xvd0JhdHRlcnlXYXJuaW5nKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1Mb3dCYXR0ZXJ5RGlhbG9nICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtTG93QmF0dGVyeURpYWxvZy5kaXNtaXNzKCk7Ci0gICAgICAgICAgICAgICAgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgRGlhbG9nSW50ZXJmYWNlLk9uRGlzbWlzc0xpc3RlbmVyIG1Mb3dCYXR0ZXJ5TGlzdGVuZXIKLSAgICAgICAgICAgID0gbmV3IERpYWxvZ0ludGVyZmFjZS5PbkRpc21pc3NMaXN0ZW5lcigpIHsKLSAgICAgICAgcHVibGljIHZvaWQgb25EaXNtaXNzKERpYWxvZ0ludGVyZmFjZSBkaWFsb2cpIHsKLSAgICAgICAgICAgIG1Mb3dCYXR0ZXJ5RGlhbG9nID0gbnVsbDsKLSAgICAgICAgICAgIG1CYXR0ZXJ5TGV2ZWxUZXh0VmlldyA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSB2b2lkIHNjaGVkdWxlQ2xvc2VCYXR0ZXJ5VmlldygpIHsKLSAgICAgICAgTWVzc2FnZSBtID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShFVkVOVF9CQVRURVJZX0NMT1NFKTsKLSAgICAgICAgbS5hcmcxID0gKCsrbUJhdHRlcnlWaWV3U2VxdWVuY2UpOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobSwgMzAwMCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGNsb3NlTGFzdEJhdHRlcnlWaWV3KCkgewotICAgICAgICBpZiAobUJhdHRlcnlWaWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgIC8vbUJhdHRlcnlWaWV3LmRlYnVnKCk7Ci0gICAgICAgICAgICBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCkucmVtb3ZlVmlldyhtQmF0dGVyeVZpZXcpOwotICAgICAgICAgICAgbUJhdHRlcnlWaWV3ID0gbnVsbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgUGhvbmVTdGF0ZUxpc3RlbmVyIG1QaG9uZVN0YXRlTGlzdGVuZXIgPSBuZXcgUGhvbmVTdGF0ZUxpc3RlbmVyKCkgewotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25TaWduYWxTdHJlbmd0aHNDaGFuZ2VkKFNpZ25hbFN0cmVuZ3RoIHNpZ25hbFN0cmVuZ3RoKSB7Ci0gICAgICAgICAgICBtU2lnbmFsU3RyZW5ndGggPSBzaWduYWxTdHJlbmd0aDsKLSAgICAgICAgICAgIHVwZGF0ZVNpZ25hbFN0cmVuZ3RoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlU3RhdGVDaGFuZ2VkKFNlcnZpY2VTdGF0ZSBzdGF0ZSkgewotICAgICAgICAgICAgbVNlcnZpY2VTdGF0ZSA9IHN0YXRlOwotICAgICAgICAgICAgdXBkYXRlU2lnbmFsU3RyZW5ndGgoKTsKLSAgICAgICAgICAgIHVwZGF0ZUNkbWFSb2FtaW5nSWNvbihzdGF0ZSk7Ci0gICAgICAgICAgICB1cGRhdGVEYXRhSWNvbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIG9uQ2FsbFN0YXRlQ2hhbmdlZChpbnQgc3RhdGUsIFN0cmluZyBpbmNvbWluZ051bWJlcikgewotICAgICAgICAgICAgdXBkYXRlQ2FsbFN0YXRlKHN0YXRlKTsKLSAgICAgICAgICAgIC8vIEluIGNkbWEsIGlmIGEgdm9pY2UgY2FsbCBpcyBtYWRlLCBSU1NJIHNob3VsZCBzd2l0Y2ggdG8gMXguCi0gICAgICAgICAgICBpZiAoaXNDZG1hKCkpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVTaWduYWxTdHJlbmd0aCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIG9uRGF0YUNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoaW50IHN0YXRlLCBpbnQgbmV0d29ya1R5cGUpIHsKLSAgICAgICAgICAgIG1EYXRhU3RhdGUgPSBzdGF0ZTsKLSAgICAgICAgICAgIHVwZGF0ZURhdGFOZXRUeXBlKG5ldHdvcmtUeXBlKTsKLSAgICAgICAgICAgIHVwZGF0ZURhdGFJY29uKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25EYXRhQWN0aXZpdHkoaW50IGRpcmVjdGlvbikgewotICAgICAgICAgICAgbURhdGFBY3Rpdml0eSA9IGRpcmVjdGlvbjsKLSAgICAgICAgICAgIHVwZGF0ZURhdGFJY29uKCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVNpbVN0YXRlKEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgU3RyaW5nIHN0YXRlRXh0cmEgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoSWNjQ2FyZC5JTlRFTlRfS0VZX0lDQ19TVEFURSk7Ci0gICAgICAgIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9JQ0NfQUJTRU5ULmVxdWFscyhzdGF0ZUV4dHJhKSkgewotICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5BQlNFTlQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfSUNDX1JFQURZLmVxdWFscyhzdGF0ZUV4dHJhKSkgewotICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5SRUFEWTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9JQ0NfTE9DS0VELmVxdWFscyhzdGF0ZUV4dHJhKSkgewotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxvY2tlZFJlYXNvbiA9IGludGVudC5nZXRTdHJpbmdFeHRyYShJY2NDYXJkLklOVEVOVF9LRVlfTE9DS0VEX1JFQVNPTik7Ci0gICAgICAgICAgICBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfTE9DS0VEX09OX1BJTi5lcXVhbHMobG9ja2VkUmVhc29uKSkgewotICAgICAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUElOX1JFUVVJUkVEOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfTE9DS0VEX09OX1BVSy5lcXVhbHMobG9ja2VkUmVhc29uKSkgewotICAgICAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5ORVRXT1JLX0xPQ0tFRDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuVU5LTk9XTjsKLSAgICAgICAgfQotICAgICAgICB1cGRhdGVEYXRhSWNvbigpOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBpc0NkbWEoKSB7Ci0gICAgICAgIHJldHVybiAobVNpZ25hbFN0cmVuZ3RoICE9IG51bGwpICYmICFtU2lnbmFsU3RyZW5ndGguaXNHc20oKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGJvb2xlYW4gaXNFdmRvKCkgewotICAgICAgICByZXR1cm4gKCAobVNlcnZpY2VTdGF0ZSAhPSBudWxsKQotICAgICAgICAgICAgICAgICAmJiAoKG1TZXJ2aWNlU3RhdGUuZ2V0UmFkaW9UZWNobm9sb2d5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgID09IFNlcnZpY2VTdGF0ZS5SQURJT19URUNITk9MT0dZX0VWRE9fMCkKLSAgICAgICAgICAgICAgICAgICAgIHx8IChtU2VydmljZVN0YXRlLmdldFJhZGlvVGVjaG5vbG9neSgpCi0gICAgICAgICAgICAgICAgICAgICAgICA9PSBTZXJ2aWNlU3RhdGUuUkFESU9fVEVDSE5PTE9HWV9FVkRPX0EpKSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBib29sZWFuIGhhc1NlcnZpY2UoKSB7Ci0gICAgICAgIGlmIChtU2VydmljZVN0YXRlICE9IG51bGwpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobVNlcnZpY2VTdGF0ZS5nZXRTdGF0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBTZXJ2aWNlU3RhdGUuU1RBVEVfT1VUX09GX1NFUlZJQ0U6Ci0gICAgICAgICAgICAgICAgY2FzZSBTZXJ2aWNlU3RhdGUuU1RBVEVfUE9XRVJfT0ZGOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlU2lnbmFsU3RyZW5ndGgoKSB7Ci0gICAgICAgIGludCBpY29uTGV2ZWwgPSAtMTsKLSAgICAgICAgaW50W10gaWNvbkxpc3Q7Ci0KLSAgICAgICAgLy8gRGlzcGxheSBzaWduYWwgc3RyZW5ndGggd2hpbGUgaW4gImVtZXJnZW5jeSBjYWxscyBvbmx5IiBtb2RlCi0gICAgICAgIGlmICghaGFzU2VydmljZSgpICYmICFtU2VydmljZVN0YXRlLmlzRW1lcmdlbmN5T25seSgpKSB7Ci0gICAgICAgICAgICAvL1Nsb2cuZChUQUcsICJ1cGRhdGVTaWduYWxTdHJlbmd0aDogbm8gc2VydmljZSIpOwotICAgICAgICAgICAgaWYgKFNldHRpbmdzLlN5c3RlbS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCi0gICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5BSVJQTEFORV9NT0RFX09OLCAwKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgbVBob25lRGF0YS5pY29uSWQgPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF9mbGlnaHRtb2RlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtUGhvbmVEYXRhLmljb25JZCA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsX251bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1QaG9uZUljb24sIG1QaG9uZURhdGEsIG51bGwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpc0NkbWEoKSkgewotICAgICAgICAgICAgaW50IGFzdSA9IG1TaWduYWxTdHJlbmd0aC5nZXRHc21TaWduYWxTdHJlbmd0aCgpOwotCi0gICAgICAgICAgICAvLyBBU1UgcmFuZ2VzIGZyb20gMCB0byAzMSAtIFRTIDI3LjAwNyBTZWMgOC41Ci0gICAgICAgICAgICAvLyBhc3UgPSAwICgtMTEzZEIgb3IgbGVzcykgaXMgdmVyeSB3ZWFrCi0gICAgICAgICAgICAvLyBzaWduYWwsIGl0cyBiZXR0ZXIgdG8gc2hvdyAwIGJhcnMgdG8gdGhlIHVzZXIgaW4gc3VjaCBjYXNlcy4KLSAgICAgICAgICAgIC8vIGFzdSA9IDk5IGlzIGEgc3BlY2lhbCBjYXNlLCB3aGVyZSB0aGUgc2lnbmFsIHN0cmVuZ3RoIGlzIHVua25vd24uCi0gICAgICAgICAgICBpZiAoYXN1IDw9IDIgfHwgYXN1ID09IDk5KSBpY29uTGV2ZWwgPSAwOwotICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDEyKSBpY29uTGV2ZWwgPSA0OwotICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDgpICBpY29uTGV2ZWwgPSAzOwotICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDUpICBpY29uTGV2ZWwgPSAyOwotICAgICAgICAgICAgZWxzZSBpY29uTGV2ZWwgPSAxOwotCi0gICAgICAgICAgICAvLyBUaG91Z2ggbVBob25lIGlzIGEgTWFuYWdlciwgdGhpcyBjYWxsIGlzIG5vdCBhbiBJUEMKLSAgICAgICAgICAgIGlmIChtUGhvbmUuaXNOZXR3b3JrUm9hbWluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWNvbkxpc3QgPSBzU2lnbmFsSW1hZ2VzX3I7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGljb25MaXN0ID0gc1NpZ25hbEltYWdlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGljb25MaXN0ID0gdGhpcy5zU2lnbmFsSW1hZ2VzOwotCi0gICAgICAgICAgICAvLyBJZiAzRyhFVikgYW5kIDF4IG5ldHdvcmsgYXJlIGF2YWlsYWJsZSB0aGFuIDNHIHNob3VsZCBiZQotICAgICAgICAgICAgLy8gZGlzcGxheWVkLCBkaXNwbGF5ZWQgUlNTSSBzaG91bGQgYmUgZnJvbSB0aGUgRVYgc2lkZS4KLSAgICAgICAgICAgIC8vIElmIGEgdm9pY2UgY2FsbCBpcyBtYWRlIHRoZW4gUlNTSSBzaG91bGQgc3dpdGNoIHRvIDF4LgotICAgICAgICAgICAgaWYgKChtUGhvbmVTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfSURMRSkgJiYgaXNFdmRvKCkpewotICAgICAgICAgICAgICAgIGljb25MZXZlbCA9IGdldEV2ZG9MZXZlbCgpOwotICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAidXNlIEV2ZG8gbGV2ZWw9IiArIGljb25MZXZlbCArICIgdG8gcmVwbGFjZSBDZG1hIExldmVsPSIgKyBnZXRDZG1hTGV2ZWwoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpY29uTGV2ZWwgPSBnZXRDZG1hTGV2ZWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtUGhvbmVEYXRhLmljb25JZCA9IGljb25MaXN0W2ljb25MZXZlbF07Ci0gICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obVBob25lSWNvbiwgbVBob25lRGF0YSwgbnVsbCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBpbnQgZ2V0Q2RtYUxldmVsKCkgewotICAgICAgICBmaW5hbCBpbnQgY2RtYURibSA9IG1TaWduYWxTdHJlbmd0aC5nZXRDZG1hRGJtKCk7Ci0gICAgICAgIGZpbmFsIGludCBjZG1hRWNpbyA9IG1TaWduYWxTdHJlbmd0aC5nZXRDZG1hRWNpbygpOwotICAgICAgICBpbnQgbGV2ZWxEYm0gPSAwOwotICAgICAgICBpbnQgbGV2ZWxFY2lvID0gMDsKLQotICAgICAgICBpZiAoY2RtYURibSA+PSAtNzUpIGxldmVsRGJtID0gNDsKLSAgICAgICAgZWxzZSBpZiAoY2RtYURibSA+PSAtODUpIGxldmVsRGJtID0gMzsKLSAgICAgICAgZWxzZSBpZiAoY2RtYURibSA+PSAtOTUpIGxldmVsRGJtID0gMjsKLSAgICAgICAgZWxzZSBpZiAoY2RtYURibSA+PSAtMTAwKSBsZXZlbERibSA9IDE7Ci0gICAgICAgIGVsc2UgbGV2ZWxEYm0gPSAwOwotCi0gICAgICAgIC8vIEVjL0lvIGFyZSBpbiBkQioxMAotICAgICAgICBpZiAoY2RtYUVjaW8gPj0gLTkwKSBsZXZlbEVjaW8gPSA0OwotICAgICAgICBlbHNlIGlmIChjZG1hRWNpbyA+PSAtMTEwKSBsZXZlbEVjaW8gPSAzOwotICAgICAgICBlbHNlIGlmIChjZG1hRWNpbyA+PSAtMTMwKSBsZXZlbEVjaW8gPSAyOwotICAgICAgICBlbHNlIGlmIChjZG1hRWNpbyA+PSAtMTUwKSBsZXZlbEVjaW8gPSAxOwotICAgICAgICBlbHNlIGxldmVsRWNpbyA9IDA7Ci0KLSAgICAgICAgcmV0dXJuIChsZXZlbERibSA8IGxldmVsRWNpbykgPyBsZXZlbERibSA6IGxldmVsRWNpbzsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGludCBnZXRFdmRvTGV2ZWwoKSB7Ci0gICAgICAgIGludCBldmRvRGJtID0gbVNpZ25hbFN0cmVuZ3RoLmdldEV2ZG9EYm0oKTsKLSAgICAgICAgaW50IGV2ZG9TbnIgPSBtU2lnbmFsU3RyZW5ndGguZ2V0RXZkb1NucigpOwotICAgICAgICBpbnQgbGV2ZWxFdmRvRGJtID0gMDsKLSAgICAgICAgaW50IGxldmVsRXZkb1NuciA9IDA7Ci0KLSAgICAgICAgaWYgKGV2ZG9EYm0gPj0gLTY1KSBsZXZlbEV2ZG9EYm0gPSA0OwotICAgICAgICBlbHNlIGlmIChldmRvRGJtID49IC03NSkgbGV2ZWxFdmRvRGJtID0gMzsKLSAgICAgICAgZWxzZSBpZiAoZXZkb0RibSA+PSAtOTApIGxldmVsRXZkb0RibSA9IDI7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZG9EYm0gPj0gLTEwNSkgbGV2ZWxFdmRvRGJtID0gMTsKLSAgICAgICAgZWxzZSBsZXZlbEV2ZG9EYm0gPSAwOwotCi0gICAgICAgIGlmIChldmRvU25yID49IDcpIGxldmVsRXZkb1NuciA9IDQ7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZG9TbnIgPj0gNSkgbGV2ZWxFdmRvU25yID0gMzsKLSAgICAgICAgZWxzZSBpZiAoZXZkb1NuciA+PSAzKSBsZXZlbEV2ZG9TbnIgPSAyOwotICAgICAgICBlbHNlIGlmIChldmRvU25yID49IDEpIGxldmVsRXZkb1NuciA9IDE7Ci0gICAgICAgIGVsc2UgbGV2ZWxFdmRvU25yID0gMDsKLQotICAgICAgICByZXR1cm4gKGxldmVsRXZkb0RibSA8IGxldmVsRXZkb1NucikgPyBsZXZlbEV2ZG9EYm0gOiBsZXZlbEV2ZG9TbnI7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZURhdGFOZXRUeXBlKGludCBuZXQpIHsKLQotICAgICAgICBzd2l0Y2ggKG5ldCkgewotICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0VER0U6Ci0gICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlX2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9VTVRTOgotICAgICAgICAgICAgbURhdGFJY29uTGlzdCA9IHNEYXRhTmV0VHlwZV8zZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0hTRFBBOgotICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0hTVVBBOgotICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0hTUEE6Ci0gICAgICAgICAgICBpZiAobUhzcGFEYXRhRGlzdGluZ3Vpc2hhYmxlKSB7Ci0gICAgICAgICAgICAgICAgbURhdGFJY29uTGlzdCA9IHNEYXRhTmV0VHlwZV9oOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlXzNnOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfQ0RNQToKLSAgICAgICAgICAgIC8vIGRpc3BsYXkgMXhSVFQgZm9yIElTOTVBL0IKLSAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSB0aGlzLnNEYXRhTmV0VHlwZV8xeDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFXzF4UlRUOgotICAgICAgICAgICAgbURhdGFJY29uTGlzdCA9IHRoaXMuc0RhdGFOZXRUeXBlXzF4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRVZET18wOiAvL2ZhbGwgdGhyb3VnaAotICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0VWRE9fQToKLSAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfM2c7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfZzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlRGF0YUljb24oKSB7Ci0gICAgICAgIGludCBpY29uSWQ7Ci0gICAgICAgIGJvb2xlYW4gdmlzaWJsZSA9IHRydWU7Ci0KLSAgICAgICAgaWYgKCFpc0NkbWEoKSkgewotICAgICAgICAgICAgLy8gR1NNIGNhc2UsIHdlIGhhdmUgdG8gY2hlY2sgYWxzbyB0aGUgc2ltIHN0YXRlCi0gICAgICAgICAgICBpZiAobVNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuUkVBRFkgfHwgbVNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuVU5LTk9XTikgewotICAgICAgICAgICAgICAgIGlmIChoYXNTZXJ2aWNlKCkgJiYgbURhdGFTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQ09OTkVDVEVEKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobURhdGFBY3Rpdml0eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfSU46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFsxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5EQVRBX0FDVElWSVRZX09VVDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBtRGF0YUljb25MaXN0WzJdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfSU5PVVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFszXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtRGF0YURhdGEuaWNvbklkID0gaWNvbklkOwotICAgICAgICAgICAgICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1EYXRhSWNvbiwgbURhdGFEYXRhLCBudWxsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtRGF0YURhdGEuaWNvbklkID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19ub19zaW07Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlSWNvbihtRGF0YUljb24sIG1EYXRhRGF0YSwgbnVsbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBDRE1BIGNhc2UsIG1EYXRhQWN0aXZpdHkgY2FuIGJlIGFsc28gREFUQV9BQ1RJVklUWV9ET1JNQU5UCi0gICAgICAgICAgICBpZiAoaGFzU2VydmljZSgpICYmIG1EYXRhU3RhdGUgPT0gVGVsZXBob255TWFuYWdlci5EQVRBX0NPTk5FQ1RFRCkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobURhdGFBY3Rpdml0eSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9JTjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfT1VUOgotICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFsyXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9JTk9VVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbM107Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfRE9STUFOVDoKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbURhdGFEYXRhLmljb25JZCA9IGljb25JZDsKLSAgICAgICAgICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1EYXRhSWNvbiwgbURhdGFEYXRhLCBudWxsKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmlzaWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbG9uZyBpZGVudCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgbUJhdHRlcnlTdGF0cy5ub3RlUGhvbmVEYXRhQ29ubmVjdGlvblN0YXRlKG1QaG9uZS5nZXROZXR3b3JrVHlwZSgpLCB2aXNpYmxlKTsKLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtRGF0YUljb25WaXNpYmxlICE9IHZpc2libGUpIHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1EYXRhSWNvbiwgdmlzaWJsZSk7Ci0gICAgICAgICAgICBtRGF0YUljb25WaXNpYmxlID0gdmlzaWJsZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVWb2x1bWUoKSB7Ci0gICAgICAgIEF1ZGlvTWFuYWdlciBhdWRpb01hbmFnZXIgPSAoQXVkaW9NYW5hZ2VyKSBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQVVESU9fU0VSVklDRSk7Ci0gICAgICAgIGZpbmFsIGludCByaW5nZXJNb2RlID0gYXVkaW9NYW5hZ2VyLmdldFJpbmdlck1vZGUoKTsKLSAgICAgICAgZmluYWwgYm9vbGVhbiB2aXNpYmxlID0gcmluZ2VyTW9kZSA9PSBBdWRpb01hbmFnZXIuUklOR0VSX01PREVfU0lMRU5UIHx8Ci0gICAgICAgICAgICAgICAgcmluZ2VyTW9kZSA9PSBBdWRpb01hbmFnZXIuUklOR0VSX01PREVfVklCUkFURTsKLSAgICAgICAgZmluYWwgaW50IGljb25JZCA9IChyaW5nZXJNb2RlID09IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFKQotICAgICAgICAgICAgICAgID8gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yaW5nZXJfdmlicmF0ZQotICAgICAgICAgICAgICAgIDogY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yaW5nZXJfc2lsZW50OwotCi0gICAgICAgIGlmICh2aXNpYmxlKSB7Ci0gICAgICAgICAgICBtVm9sdW1lRGF0YS5pY29uSWQgPSBpY29uSWQ7Ci0gICAgICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1Wb2x1bWVJY29uLCBtVm9sdW1lRGF0YSwgbnVsbCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZpc2libGUgIT0gbVZvbHVtZVZpc2libGUpIHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1Wb2x1bWVJY29uLCB2aXNpYmxlKTsKLSAgICAgICAgICAgIG1Wb2x1bWVWaXNpYmxlID0gdmlzaWJsZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVCbHVldG9vdGgoSW50ZW50IGludGVudCkgewotICAgICAgICBpbnQgaWNvbklkID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2JsdWV0b290aDsKLSAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKLSAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQWRhcHRlci5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgIGludCBzdGF0ZSA9IGludGVudC5nZXRJbnRFeHRyYShCbHVldG9vdGhBZGFwdGVyLkVYVFJBX1NUQVRFLCBCbHVldG9vdGhBZGFwdGVyLkVSUk9SKTsKLSAgICAgICAgICAgIG1CbHVldG9vdGhFbmFibGVkID0gc3RhdGUgPT0gQmx1ZXRvb3RoQWRhcHRlci5TVEFURV9PTjsKLSAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpKSB7Ci0gICAgICAgICAgICBtQmx1ZXRvb3RoSGVhZHNldFN0YXRlID0gaW50ZW50LmdldEludEV4dHJhKEJsdWV0b290aEhlYWRzZXQuRVhUUkFfU1RBVEUsCi0gICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRVJST1IpOwotICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQTJkcC5BQ1RJT05fU0lOS19TVEFURV9DSEFOR0VEKSkgewotICAgICAgICAgICAgQmx1ZXRvb3RoQTJkcCBhMmRwID0gbmV3IEJsdWV0b290aEEyZHAobUNvbnRleHQpOwotICAgICAgICAgICAgaWYgKGEyZHAuZ2V0Q29ubmVjdGVkU2lua3MoKS5zaXplKCkgIT0gMCkgewotICAgICAgICAgICAgICAgIG1CbHVldG9vdGhBMmRwQ29ubmVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUJsdWV0b290aEEyZHBDb25uZWN0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aFBiYXAuUEJBUF9TVEFURV9DSEFOR0VEX0FDVElPTikpIHsKLSAgICAgICAgICAgIG1CbHVldG9vdGhQYmFwU3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoUGJhcC5QQkFQX1NUQVRFLAotICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhQYmFwLlNUQVRFX0RJU0NPTk5FQ1RFRCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobUJsdWV0b290aEhlYWRzZXRTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RFRCB8fCBtQmx1ZXRvb3RoQTJkcENvbm5lY3RlZCB8fAotICAgICAgICAgICAgICAgIG1CbHVldG9vdGhQYmFwU3RhdGUgPT0gQmx1ZXRvb3RoUGJhcC5TVEFURV9DT05ORUNURUQpIHsKLSAgICAgICAgICAgIGljb25JZCA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9ibHVldG9vdGhfY29ubmVjdGVkOwotICAgICAgICB9Ci0KLSAgICAgICAgbUJsdWV0b290aERhdGEuaWNvbklkID0gaWNvbklkOwotICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1CbHVldG9vdGhJY29uLCBtQmx1ZXRvb3RoRGF0YSwgbnVsbCk7Ci0gICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1CbHVldG9vdGhJY29uLCBtQmx1ZXRvb3RoRW5hYmxlZCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVdpZmkoSW50ZW50IGludGVudCkgewotICAgICAgICBmaW5hbCBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOwotICAgICAgICBpZiAoYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5XSUZJX1NUQVRFX0NIQU5HRURfQUNUSU9OKSkgewotCi0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGVuYWJsZWQgPSBpbnRlbnQuZ2V0SW50RXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfV0lGSV9TVEFURSwKLSAgICAgICAgICAgICAgICAgICAgV2lmaU1hbmFnZXIuV0lGSV9TVEFURV9VTktOT1dOKSA9PSBXaWZpTWFuYWdlci5XSUZJX1NUQVRFX0VOQUJMRUQ7Ci0KLSAgICAgICAgICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICAgICAgICAgIC8vIElmIGRpc2FibGVkLCBoaWRlIHRoZSBpY29uLiAoV2Ugc2hvdyBpY29uIHdoZW4gY29ubmVjdGVkLikKLSAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtV2lmaUljb24sIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuU1VQUExJQ0FOVF9DT05ORUNUSU9OX0NIQU5HRV9BQ1RJT04pKSB7Ci0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGVuYWJsZWQgPSBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKFdpZmlNYW5hZ2VyLkVYVFJBX1NVUFBMSUNBTlRfQ09OTkVDVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIWVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtV2lmaUljb24sIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLk5FVFdPUktfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pKSB7Ci0KLSAgICAgICAgICAgIGZpbmFsIE5ldHdvcmtJbmZvIG5ldHdvcmtJbmZvID0gKE5ldHdvcmtJbmZvKQotICAgICAgICAgICAgICAgICAgICBpbnRlbnQuZ2V0UGFyY2VsYWJsZUV4dHJhKFdpZmlNYW5hZ2VyLkVYVFJBX05FVFdPUktfSU5GTyk7Ci0KLSAgICAgICAgICAgIGludCBpY29uSWQ7Ci0gICAgICAgICAgICBpZiAobmV0d29ya0luZm8gIT0gbnVsbCAmJiBuZXR3b3JrSW5mby5pc0Nvbm5lY3RlZCgpKSB7Ci0gICAgICAgICAgICAgICAgbUlzV2lmaUNvbm5lY3RlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKG1MYXN0V2lmaVNpZ25hbExldmVsID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIGljb25JZCA9IHNXaWZpU2lnbmFsSW1hZ2VzWzBdOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGljb25JZCA9IHNXaWZpU2lnbmFsSW1hZ2VzW21MYXN0V2lmaVNpZ25hbExldmVsXTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBTaG93IHRoZSBpY29uIHNpbmNlIHdpLWZpIGlzIGNvbm5lY3RlZAotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1XaWZpSWNvbiwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUxhc3RXaWZpU2lnbmFsTGV2ZWwgPSAtMTsKLSAgICAgICAgICAgICAgICBtSXNXaWZpQ29ubmVjdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWNvbklkID0gc1dpZmlTaWduYWxJbWFnZXNbMF07Ci0KLSAgICAgICAgICAgICAgICAvLyBIaWRlIHRoZSBpY29uIHNpbmNlIHdlJ3JlIG5vdCBjb25uZWN0ZWQKLSAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtV2lmaUljb24sIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbVdpZmlEYXRhLmljb25JZCA9IGljb25JZDsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obVdpZmlJY29uLCBtV2lmaURhdGEsIG51bGwpOwotICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuUlNTSV9DSEFOR0VEX0FDVElPTikpIHsKLSAgICAgICAgICAgIGZpbmFsIGludCBuZXdSc3NpID0gaW50ZW50LmdldEludEV4dHJhKFdpZmlNYW5hZ2VyLkVYVFJBX05FV19SU1NJLCAtMjAwKTsKLSAgICAgICAgICAgIGludCBuZXdTaWduYWxMZXZlbCA9IFdpZmlNYW5hZ2VyLmNhbGN1bGF0ZVNpZ25hbExldmVsKG5ld1Jzc2ksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzV2lmaVNpZ25hbEltYWdlcy5sZW5ndGgpOwotICAgICAgICAgICAgaWYgKG5ld1NpZ25hbExldmVsICE9IG1MYXN0V2lmaVNpZ25hbExldmVsKSB7Ci0gICAgICAgICAgICAgICAgbUxhc3RXaWZpU2lnbmFsTGV2ZWwgPSBuZXdTaWduYWxMZXZlbDsKLSAgICAgICAgICAgICAgICBpZiAobUlzV2lmaUNvbm5lY3RlZCkgewotICAgICAgICAgICAgICAgICAgICBtV2lmaURhdGEuaWNvbklkID0gc1dpZmlTaWduYWxJbWFnZXNbbmV3U2lnbmFsTGV2ZWxdOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaWZpRGF0YS5pY29uSWQgPSBzV2lmaVRlbXBvcmFyaWx5Tm90Q29ubmVjdGVkSW1hZ2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obVdpZmlJY29uLCBtV2lmaURhdGEsIG51bGwpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUdwcyhJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7Ci0gICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoR3BzTG9jYXRpb25Qcm92aWRlci5FWFRSQV9FTkFCTEVELCBmYWxzZSk7Ci0KLSAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoR3BzTG9jYXRpb25Qcm92aWRlci5HUFNfRklYX0NIQU5HRV9BQ1RJT04pICYmIGVuYWJsZWQpIHsKLSAgICAgICAgICAgIC8vIEdQUyBpcyBnZXR0aW5nIGZpeGVzCi0gICAgICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1HcHNJY29uLCBtR3BzRml4SWNvbkRhdGEsIG51bGwpOwotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUdwc0ljb24sIHRydWUpOwotICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoR3BzTG9jYXRpb25Qcm92aWRlci5HUFNfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKSAmJiAhZW5hYmxlZCkgewotICAgICAgICAgICAgLy8gR1BTIGlzIG9mZgotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUdwc0ljb24sIGZhbHNlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEdQUyBpcyBvbiwgYnV0IG5vdCByZWNlaXZpbmcgZml4ZXMKLSAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obUdwc0ljb24sIG1HcHNFbmFibGVkSWNvbkRhdGEsIG51bGwpOwotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUdwc0ljb24sIHRydWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVRUWShJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7Ci0gICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoVHR5SW50ZW50LlRUWV9FTkFCTEVELCBmYWxzZSk7Ci0KLSAgICAgICAgaWYgKGZhbHNlKSBTbG9nLnYoVEFHLCAidXBkYXRlVFRZOiBlbmFibGVkOiAiICsgZW5hYmxlZCk7Ci0KLSAgICAgICAgaWYgKGVuYWJsZWQpIHsKLSAgICAgICAgICAgIC8vIFRUWSBpcyBvbgotICAgICAgICAgICAgaWYgKGZhbHNlKSBTbG9nLnYoVEFHLCAidXBkYXRlVFRZOiBzZXQgVFRZIG9uIik7Ci0gICAgICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1UVFlNb2RlSWNvbiwgbVRUWU1vZGVFbmFibGVJY29uRGF0YSwgbnVsbCk7Ci0gICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtVFRZTW9kZUljb24sIHRydWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gVFRZIGlzIG9mZgotICAgICAgICAgICAgaWYgKGZhbHNlKSBTbG9nLnYoVEFHLCAidXBkYXRlVFRZOiBzZXQgVFRZIG9mZiIpOwotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVRUWU1vZGVJY29uLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlQ2RtYVJvYW1pbmdJY29uKFNlcnZpY2VTdGF0ZSBzdGF0ZSkgewotICAgICAgICBpZiAoIWhhc1NlcnZpY2UoKSkgewotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbiwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpc0NkbWEoKSkgewotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbiwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50W10gaWNvbkxpc3QgPSBzUm9hbWluZ0luZGljYXRvckltYWdlc19jZG1hOwotICAgICAgICBpbnQgaWNvbkluZGV4ID0gc3RhdGUuZ2V0Q2RtYUVyaUljb25JbmRleCgpOwotICAgICAgICBpbnQgaWNvbk1vZGUgPSBzdGF0ZS5nZXRDZG1hRXJpSWNvbk1vZGUoKTsKLQotICAgICAgICBpZiAoaWNvbkluZGV4ID09IC0xKSB7Ci0gICAgICAgICAgICBTbG9nLmUoVEFHLCAiZ2V0Q2RtYUVyaUljb25JbmRleCByZXR1cm5lZCBudWxsLCBza2lwcGluZyBFUkkgaWNvbiB1cGRhdGUiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpY29uTW9kZSA9PSAtMSkgewotICAgICAgICAgICAgU2xvZy5lKFRBRywgImdldENkbWVFcmlJY29uTW9kZSByZXR1cm5lZCBudWxsLCBza2lwcGluZyBFUkkgaWNvbiB1cGRhdGUiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpY29uSW5kZXggPT0gRXJpSW5mby5ST0FNSU5HX0lORElDQVRPUl9PRkYpIHsKLSAgICAgICAgICAgIGlmIChmYWxzZSkgU2xvZy52KFRBRywgIkNkbWEgUk9BTUlOR19JTkRJQ0FUT1JfT0ZGLCByZW1vdmluZyBFUkkgaWNvbiIpOwotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbiwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChpY29uTW9kZSkgewotICAgICAgICAgICAgY2FzZSBFcmlJbmZvLlJPQU1JTkdfSUNPTl9NT0RFX05PUk1BTDoKLSAgICAgICAgICAgICAgICBtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uRGF0YS5pY29uSWQgPSBpY29uTGlzdFtpY29uSW5kZXhdOwotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbiwgbUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbkRhdGEsIG51bGwpOwotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1DZG1hUm9hbWluZ0luZGljYXRvckljb24sIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBFcmlJbmZvLlJPQU1JTkdfSUNPTl9NT0RFX0ZMQVNIOgotICAgICAgICAgICAgICAgIG1DZG1hUm9hbWluZ0luZGljYXRvckljb25EYXRhLmljb25JZCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV9mbGFzaDsKLSAgICAgICAgICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1DZG1hUm9hbWluZ0luZGljYXRvckljb24sIG1DZG1hUm9hbWluZ0luZGljYXRvckljb25EYXRhLCBudWxsKTsKLSAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICB9Ci0gICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obVBob25lSWNvbiwgbVBob25lRGF0YSwgbnVsbCk7Ci0gICAgfQotCi0KLSAgICBwcml2YXRlIGNsYXNzIFN0YXR1c0JhckhhbmRsZXIgZXh0ZW5kcyBIYW5kbGVyIHsKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKLSAgICAgICAgICAgIGNhc2UgRVZFTlRfQkFUVEVSWV9DTE9TRToKLSAgICAgICAgICAgICAgICBpZiAobXNnLmFyZzEgPT0gbUJhdHRlcnlWaWV3U2VxdWVuY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgY2xvc2VMYXN0QmF0dGVyeVZpZXcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0JhclNlcnZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjOGQzNC4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyU2VydmljZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTg4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLkNoYXJTZXF1ZW5jZXM7Ci0KLWltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXJOYXRpdmU7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuRGlhbG9nOwotaW1wb3J0IGFuZHJvaWQuYXBwLklTdGF0dXNCYXI7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKLWltcG9ydCBhbmRyb2lkLmFwcC5TdGF0dXNCYXJNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGl4ZWxGb3JtYXQ7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWN0OwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7Ci1pbXBvcnQgYW5kcm9pZC5uZXQuVXJpOwotaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLkJpbmRlcjsKLWltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7Ci1pbXBvcnQgYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnk7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LkRpc3BsYXk7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LkdyYXZpdHk7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OwotaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKLWltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlZlbG9jaXR5VHJhY2tlcjsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOwotaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3c7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJJbXBsOwotaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uOwotaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uVXRpbHM7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzOwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlNjcm9sbFZpZXc7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi0KLS8qKgotICogVGhlIHB1YmxpYyAob2ssIHNlbWktcHVibGljKSBzZXJ2aWNlIGZvciB0aGUgc3RhdHVzIGJhci4KLSAqIDxwPgotICogVGhpcyBpbnRlcmVzdGluZyB0aGluZyB0byBub3RlIGFib3V0IHRoaXMgY2xhc3MgaXMgdGhhdCBtb3N0IG9mIHRoZSBtZXRob2RzIHRoYXQKLSAqIGFyZSBjYWxsZWQgZnJvbSBvdGhlciBjbGFzc2VzIGp1c3QgcG9zdCBhIG1lc3NhZ2UsIGFuZCBldmVyeXRoaW5nIGVsc2UgaXMgYmF0Y2hlZAotICogYW5kIGNvYWxlc2NlZCBpbnRvIGEgc2VyaWVzIG9mIGNhbGxzIHRvIG1ldGhvZHMgdGhhdCBhbGwgc3RhcnQgd2l0aCAicGVyZm9ybS4iCi0gKiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yIHRoaXMuICBUaGUgZmlyc3QgaXMgdGhhdCBzb21lIG9mIHRoZSBtZXRob2RzIChhY3RpdmF0ZS9kZWFjdGl2YXRlKQotICogYXJlIG9uIElTdGF0dXNCYXIsIHNvIHRoZXkncmUgY2FsbGVkIGZyb20gdGhlIHRocmVhZCBwb29sIGFuZCB0aGV5IG5lZWQgdG8gbWFrZSB0aGVpcgotICogd2F5IG9udG8gdGhlIFVJIHRocmVhZC4gIFRoZSBzZWNvbmQgaXMgdGhhdCB0aGUgbWVzc2FnZSBxdWV1ZSBpcyBzdG9wcGVkIHdoaWxlIGFuaW1hdGlvbnMKLSAqIGFyZSBoYXBwZW5pbmcgaW4gb3JkZXIgdG8gbWFrZSBmb3Igc21vb3RoZXIgdHJhbnNpdGlvbnMuCi0gKiA8cD4KLSAqIEVhY2ggaWNvbiBpcyBlaXRoZXIgYW4gaWNvbiBvciBhbiBpY29uIGFuZCBhIG5vdGlmaWNhdGlvbi4gIFRoZXkncmUgdHJlYXRlZCBtb3N0bHkKLSAqIHNlcGFyYXRlbHkgdGhyb3VnaG91dCB0aGUgY29kZSwgYWx0aG91Z2ggdGhleSBib3RoIHVzZSB0aGUgc2FtZSBrZXksIHdoaWNoIGlzIGFzc2lnbmVkCi0gKiB3aGVuIHRoZXkgYXJlIGNyZWF0ZWQuCi0gKi8KLXB1YmxpYyBjbGFzcyBTdGF0dXNCYXJTZXJ2aWNlIGV4dGVuZHMgSVN0YXR1c0Jhci5TdHViCi17Ci0gICAgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RhdHVzQmFyIjsKLSAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBTUEVXID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMgZmluYWwgaW50IEVYUEFOREVEX0xFQVZFX0FMT05FID0gLTEwMDAwOwotICAgIHN0YXRpYyBmaW5hbCBpbnQgRVhQQU5ERURfRlVMTF9PUEVOID0gLTEwMDAxOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19BTklNQVRFID0gMTAwMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0FOSU1BVEVfUkVWRUFMID0gMTAwMTsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9BRERfSUNPTiA9IDE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX1VQREFURV9JQ09OID0gMjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1BfUkVNT1ZFX0lDT04gPSAzOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9TRVRfVklTSUJMRSA9IDQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX0VYUEFORCA9IDU7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX1RPR0dMRSA9IDY7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX0RJU0FCTEUgPSA3OwotICAgIHByaXZhdGUgY2xhc3MgUGVuZGluZ09wIHsKLSAgICAgICAgSUJpbmRlciBrZXk7Ci0gICAgICAgIGludCBjb2RlOwotICAgICAgICBJY29uRGF0YSBpY29uRGF0YTsKLSAgICAgICAgTm90aWZpY2F0aW9uRGF0YSBub3RpZmljYXRpb25EYXRhOwotICAgICAgICBib29sZWFuIHZpc2libGU7Ci0gICAgICAgIGludCBpbnRlZ2VyOwotICAgIH0KLQotICAgIHByaXZhdGUgY2xhc3MgRGlzYWJsZVJlY29yZCBpbXBsZW1lbnRzIElCaW5kZXIuRGVhdGhSZWNpcGllbnQgewotICAgICAgICBTdHJpbmcgcGtnOwotICAgICAgICBpbnQgd2hhdDsKLSAgICAgICAgSUJpbmRlciB0b2tlbjsKLQotICAgICAgICBwdWJsaWMgdm9pZCBiaW5kZXJEaWVkKCkgewotICAgICAgICAgICAgU2xvZy5pKFRBRywgImJpbmRlciBkaWVkIGZvciBwa2c9IiArIHBrZyk7Ci0gICAgICAgICAgICBkaXNhYmxlKDAsIHRva2VuLCBwa2cpOwotICAgICAgICAgICAgdG9rZW4udW5saW5rVG9EZWF0aCh0aGlzLCAwKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBpbnRlcmZhY2UgTm90aWZpY2F0aW9uQ2FsbGJhY2tzIHsKLSAgICAgICAgdm9pZCBvblNldERpc2FibGVkKGludCBzdGF0dXMpOwotICAgICAgICB2b2lkIG9uQ2xlYXJBbGwoKTsKLSAgICAgICAgdm9pZCBvbk5vdGlmaWNhdGlvbkNsaWNrKFN0cmluZyBwa2csIFN0cmluZyB0YWcsIGludCBpZCk7Ci0gICAgICAgIHZvaWQgb25QYW5lbFJldmVhbGVkKCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBFeHBhbmRlZERpYWxvZyBleHRlbmRzIERpYWxvZyB7Ci0gICAgICAgIEV4cGFuZGVkRGlhbG9nKENvbnRleHQgY29udGV4dCkgewotICAgICAgICAgICAgc3VwZXIoY29udGV4dCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5UaGVtZV9MaWdodF9Ob1RpdGxlQmFyKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaEtleUV2ZW50KEtleUV2ZW50IGV2ZW50KSB7Ci0gICAgICAgICAgICBib29sZWFuIGRvd24gPSBldmVudC5nZXRBY3Rpb24oKSA9PSBLZXlFdmVudC5BQ1RJT05fRE9XTjsKLSAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQuZ2V0S2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQkFDSzoKLSAgICAgICAgICAgICAgICBpZiAoIWRvd24pIHsKLSAgICAgICAgICAgICAgICAgICAgU3RhdHVzQmFyU2VydmljZS50aGlzLmRlYWN0aXZhdGUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIuZGlzcGF0Y2hLZXlFdmVudChldmVudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKLSAgICBmaW5hbCBEaXNwbGF5IG1EaXNwbGF5OwotICAgIFN0YXR1c0JhclZpZXcgbVN0YXR1c0JhclZpZXc7Ci0gICAgaW50IG1QaXhlbEZvcm1hdDsKLSAgICBIIG1IYW5kbGVyID0gbmV3IEgoKTsKLSAgICBPYmplY3QgbVF1ZXVlTG9jayA9IG5ldyBPYmplY3QoKTsKLSAgICBBcnJheUxpc3Q8UGVuZGluZ09wPiBtUXVldWUgPSBuZXcgQXJyYXlMaXN0PFBlbmRpbmdPcD4oKTsKLSAgICBOb3RpZmljYXRpb25DYWxsYmFja3MgbU5vdGlmaWNhdGlvbkNhbGxiYWNrczsKLSAgICAKLSAgICAvLyBBbGwgYWNjZXNzZXMgdG8gbUljb25NYXAgYW5kIG1Ob3RpZmljYXRpb25EYXRhIGFyZSBzeW5jcm9uaXplZCBvbiB0aG9zZSBvYmplY3RzLAotICAgIC8vIGJ1dCB0aGlzIGlzIG9ubHkgc28gZHVtcCgpIGNhbiB3b3JrIGNvcnJlY3RseS4gIE1vZGlmeWluZyB0aGVzZSBvdXRzaWRlIG9mIHRoZSBVSQotICAgIC8vIHRocmVhZCB3aWxsIG5vdCB3b3JrLCB0aGVyZSBhcmUgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgdW5sb2NrIGFuZCByZWFxdWlyZSBiZXR3ZWVuCi0gICAgLy8gcmVhZHMgYW5kIHJlcXVpcmUgdGhlbSB0byBub3QgYmUgbW9kaWZpZWQuCi0KLSAgICAvLyBpY29ucwotICAgIEhhc2hNYXA8SUJpbmRlcixTdGF0dXNCYXJJY29uPiBtSWNvbk1hcCA9IG5ldyBIYXNoTWFwPElCaW5kZXIsU3RhdHVzQmFySWNvbj4oKTsKLSAgICBBcnJheUxpc3Q8U3RhdHVzQmFySWNvbj4gbUljb25MaXN0ID0gbmV3IEFycmF5TGlzdDxTdGF0dXNCYXJJY29uPigpOwotICAgIFN0cmluZ1tdIG1SaWdodEljb25TbG90czsKLSAgICBTdGF0dXNCYXJJY29uW10gbVJpZ2h0SWNvbnM7Ci0gICAgTGluZWFyTGF5b3V0IG1JY29uczsKLSAgICBJY29uTWVyZ2VyIG1Ob3RpZmljYXRpb25JY29uczsKLSAgICBMaW5lYXJMYXlvdXQgbVN0YXR1c0ljb25zOwotICAgIFN0YXR1c0Jhckljb24gbU1vcmVJY29uOwotICAgIHByaXZhdGUgVW5pbnN0YWxsUmVjZWl2ZXIgbVVuaW5zdGFsbFJlY2VpdmVyOwotCi0gICAgLy8gZXhwYW5kZWQgbm90aWZpY2F0aW9ucwotICAgIE5vdGlmaWNhdGlvblZpZXdMaXN0IG1Ob3RpZmljYXRpb25EYXRhID0gbmV3IE5vdGlmaWNhdGlvblZpZXdMaXN0KCk7Ci0gICAgRGlhbG9nIG1FeHBhbmRlZERpYWxvZzsKLSAgICBFeHBhbmRlZFZpZXcgbUV4cGFuZGVkVmlldzsKLSAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBtRXhwYW5kZWRQYXJhbXM7Ci0gICAgU2Nyb2xsVmlldyBtU2Nyb2xsVmlldzsKLSAgICBWaWV3IG1Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQ7Ci0gICAgVGV4dFZpZXcgbU9uZ29pbmdUaXRsZTsKLSAgICBMaW5lYXJMYXlvdXQgbU9uZ29pbmdJdGVtczsKLSAgICBUZXh0VmlldyBtTGF0ZXN0VGl0bGU7Ci0gICAgTGluZWFyTGF5b3V0IG1MYXRlc3RJdGVtczsKLSAgICBUZXh0VmlldyBtTm9Ob3RpZmljYXRpb25zVGl0bGU7Ci0gICAgVGV4dFZpZXcgbVNwbkxhYmVsOwotICAgIFRleHRWaWV3IG1QbG1uTGFiZWw7Ci0gICAgVGV4dFZpZXcgbUNsZWFyQnV0dG9uOwotICAgIFZpZXcgbUV4cGFuZGVkQ29udGVudHM7Ci0gICAgQ2xvc2VEcmFnSGFuZGxlIG1DbG9zZVZpZXc7Ci0gICAgaW50W10gbVBvc2l0aW9uVG1wID0gbmV3IGludFsyXTsKLSAgICBib29sZWFuIG1FeHBhbmRlZDsKLSAgICBib29sZWFuIG1FeHBhbmRlZFZpc2libGU7Ci0KLSAgICAvLyB0aGUgZGF0ZSB2aWV3Ci0gICAgRGF0ZVZpZXcgbURhdGVWaWV3OwotCi0gICAgLy8gdGhlIHRyYWNrZXIgdmlldwotICAgIFRyYWNraW5nVmlldyBtVHJhY2tpbmdWaWV3OwotICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIG1UcmFja2luZ1BhcmFtczsKLSAgICBpbnQgbVRyYWNraW5nUG9zaXRpb247IC8vIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9wIG9mIHRoZSB0cmFja2luZyB2aWV3LgotCi0gICAgLy8gdGlja2VyCi0gICAgcHJpdmF0ZSBUaWNrZXIgbVRpY2tlcjsKLSAgICBwcml2YXRlIFZpZXcgbVRpY2tlclZpZXc7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1UaWNraW5nOwotICAgIAotICAgIC8vIFRyYWNraW5nIGZpbmdlciBmb3Igb3BlbmluZy9jbG9zaW5nLgotICAgIGludCBtRWRnZUJvcmRlcjsgLy8gY29ycmVzcG9uZHMgdG8gUi5kaW1lbi5zdGF0dXNfYmFyX2VkZ2VfaWdub3JlCi0gICAgYm9vbGVhbiBtVHJhY2tpbmc7Ci0gICAgVmVsb2NpdHlUcmFja2VyIG1WZWxvY2l0eVRyYWNrZXI7Ci0gICAgCi0gICAgc3RhdGljIGZpbmFsIGludCBBTklNX0ZSQU1FX0RVUkFUSU9OID0gKDEwMDAvNjApOwotICAgIAotICAgIGJvb2xlYW4gbUFuaW1hdGluZzsKLSAgICBsb25nIG1DdXJBbmltYXRpb25UaW1lOwotICAgIGZsb2F0IG1EaXNwbGF5SGVpZ2h0OwotICAgIGZsb2F0IG1BbmltWTsKLSAgICBmbG9hdCBtQW5pbVZlbDsKLSAgICBmbG9hdCBtQW5pbUFjY2VsOwotICAgIGxvbmcgbUFuaW1MYXN0VGltZTsKLSAgICBib29sZWFuIG1BbmltYXRpbmdSZXZlYWwgPSBmYWxzZTsKLSAgICBpbnQgbVZpZXdEZWx0YTsKLSAgICBpbnRbXSBtQWJzUG9zID0gbmV3IGludFsyXTsKLSAgICAKLSAgICAvLyBmb3IgZGlzYWJsaW5nIHRoZSBzdGF0dXMgYmFyCi0gICAgQXJyYXlMaXN0PERpc2FibGVSZWNvcmQ+IG1EaXNhYmxlUmVjb3JkcyA9IG5ldyBBcnJheUxpc3Q8RGlzYWJsZVJlY29yZD4oKTsKLSAgICBpbnQgbURpc2FibGVkID0gMDsKLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdCB0aGUgc2VydmljZSwgYWRkIHRoZSBzdGF0dXMgYmFyIHZpZXcgdG8gdGhlIHdpbmRvdyBtYW5hZ2VyCi0gICAgICovCi0gICAgcHVibGljIFN0YXR1c0JhclNlcnZpY2UoQ29udGV4dCBjb250ZXh0KSB7Ci0gICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgbURpc3BsYXkgPSAoKFdpbmRvd01hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAotICAgICAgICAgICAgICAgIENvbnRleHQuV0lORE9XX1NFUlZJQ0UpKS5nZXREZWZhdWx0RGlzcGxheSgpOwotICAgICAgICBtYWtlU3RhdHVzQmFyVmlldyhjb250ZXh0KTsKLSAgICAgICAgbVVuaW5zdGFsbFJlY2VpdmVyID0gbmV3IFVuaW5zdGFsbFJlY2VpdmVyKCk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2tzKE5vdGlmaWNhdGlvbkNhbGxiYWNrcyBsaXN0ZW5lcikgewotICAgICAgICBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzID0gbGlzdGVuZXI7Ci0gICAgfQotCi0gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAvLyBDb25zdHJ1Y3RpbmcgdGhlIHZpZXcKLSAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHByaXZhdGUgdm9pZCBtYWtlU3RhdHVzQmFyVmlldyhDb250ZXh0IGNvbnRleHQpIHsKLSAgICAgICAgUmVzb3VyY2VzIHJlcyA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCk7Ci0gICAgICAgIG1SaWdodEljb25TbG90cyA9IHJlcy5nZXRTdHJpbmdBcnJheShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFycmF5LnN0YXR1c19iYXJfaWNvbl9vcmRlcik7Ci0gICAgICAgIG1SaWdodEljb25zID0gbmV3IFN0YXR1c0Jhckljb25bbVJpZ2h0SWNvblNsb3RzLmxlbmd0aF07Ci0KLSAgICAgICAgRXhwYW5kZWRWaWV3IGV4cGFuZGVkID0gKEV4cGFuZGVkVmlldylWaWV3LmluZmxhdGUoY29udGV4dCwKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5zdGF0dXNfYmFyX2V4cGFuZGVkLCBudWxsKTsKLSAgICAgICAgZXhwYW5kZWQubVNlcnZpY2UgPSB0aGlzOwotICAgICAgICBTdGF0dXNCYXJWaWV3IHNiID0gKFN0YXR1c0JhclZpZXcpVmlldy5pbmZsYXRlKGNvbnRleHQsCi0gICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5sYXlvdXQuc3RhdHVzX2JhciwgbnVsbCk7Ci0gICAgICAgIHNiLm1TZXJ2aWNlID0gdGhpczsKLQotICAgICAgICAvLyBmaWd1cmUgb3V0IHdoaWNoIHBpeGVsLWZvcm1hdCB0byB1c2UgZm9yIHRoZSBzdGF0dXMgYmFyLgotICAgICAgICBtUGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVDsKLSAgICAgICAgRHJhd2FibGUgYmcgPSBzYi5nZXRCYWNrZ3JvdW5kKCk7Ci0gICAgICAgIGlmIChiZyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtUGl4ZWxGb3JtYXQgPSBiZy5nZXRPcGFjaXR5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBtU3RhdHVzQmFyVmlldyA9IHNiOwotICAgICAgICBtU3RhdHVzSWNvbnMgPSAoTGluZWFyTGF5b3V0KXNiLmZpbmRWaWV3QnlJZChSLmlkLnN0YXR1c0ljb25zKTsKLSAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zID0gKEljb25NZXJnZXIpc2IuZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uSWNvbnMpOwotICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuc2VydmljZSA9IHRoaXM7Ci0gICAgICAgIG1JY29ucyA9IChMaW5lYXJMYXlvdXQpc2IuZmluZFZpZXdCeUlkKFIuaWQuaWNvbnMpOwotICAgICAgICBtVGlja2VyVmlldyA9IHNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlcik7Ci0gICAgICAgIG1EYXRlVmlldyA9IChEYXRlVmlldylzYi5maW5kVmlld0J5SWQoUi5pZC5kYXRlKTsKLQotICAgICAgICBtRXhwYW5kZWREaWFsb2cgPSBuZXcgRXhwYW5kZWREaWFsb2coY29udGV4dCk7Ci0gICAgICAgIG1FeHBhbmRlZFZpZXcgPSBleHBhbmRlZDsKLSAgICAgICAgbUV4cGFuZGVkQ29udGVudHMgPSBleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5ub3RpZmljYXRpb25MaW5lYXJMYXlvdXQpOwotICAgICAgICBtT25nb2luZ1RpdGxlID0gKFRleHRWaWV3KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLm9uZ29pbmdUaXRsZSk7Ci0gICAgICAgIG1PbmdvaW5nSXRlbXMgPSAoTGluZWFyTGF5b3V0KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLm9uZ29pbmdJdGVtcyk7Ci0gICAgICAgIG1MYXRlc3RUaXRsZSA9IChUZXh0VmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5sYXRlc3RUaXRsZSk7Ci0gICAgICAgIG1MYXRlc3RJdGVtcyA9IChMaW5lYXJMYXlvdXQpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubGF0ZXN0SXRlbXMpOwotICAgICAgICBtTm9Ob3RpZmljYXRpb25zVGl0bGUgPSAoVGV4dFZpZXcpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubm9Ob3RpZmljYXRpb25zVGl0bGUpOwotICAgICAgICBtQ2xlYXJCdXR0b24gPSAoVGV4dFZpZXcpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQuY2xlYXJfYWxsX2J1dHRvbik7Ci0gICAgICAgIG1DbGVhckJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIobUNsZWFyQnV0dG9uTGlzdGVuZXIpOwotICAgICAgICBtU3BuTGFiZWwgPSAoVGV4dFZpZXcpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQuc3BuTGFiZWwpOwotICAgICAgICBtUGxtbkxhYmVsID0gKFRleHRWaWV3KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLnBsbW5MYWJlbCk7Ci0gICAgICAgIG1TY3JvbGxWaWV3ID0gKFNjcm9sbFZpZXcpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQuc2Nyb2xsKTsKLSAgICAgICAgbU5vdGlmaWNhdGlvbkxpbmVhckxheW91dCA9IGV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLm5vdGlmaWNhdGlvbkxpbmVhckxheW91dCk7Ci0KLSAgICAgICAgbU9uZ29pbmdUaXRsZS5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgIG1MYXRlc3RUaXRsZS5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgIAotICAgICAgICBtVGlja2VyID0gbmV3IE15VGlja2VyKGNvbnRleHQsIHNiKTsKLQotICAgICAgICBUaWNrZXJWaWV3IHRpY2tlclZpZXcgPSAoVGlja2VyVmlldylzYi5maW5kVmlld0J5SWQoUi5pZC50aWNrZXJUZXh0KTsKLSAgICAgICAgdGlja2VyVmlldy5tVGlja2VyID0gbVRpY2tlcjsKLQotICAgICAgICBtVHJhY2tpbmdWaWV3ID0gKFRyYWNraW5nVmlldylWaWV3LmluZmxhdGUoY29udGV4dCwKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5zdGF0dXNfYmFyX3RyYWNraW5nLCBudWxsKTsKLSAgICAgICAgbVRyYWNraW5nVmlldy5tU2VydmljZSA9IHRoaXM7Ci0gICAgICAgIG1DbG9zZVZpZXcgPSAoQ2xvc2VEcmFnSGFuZGxlKW1UcmFja2luZ1ZpZXcuZmluZFZpZXdCeUlkKFIuaWQuY2xvc2UpOwotICAgICAgICBtQ2xvc2VWaWV3Lm1TZXJ2aWNlID0gdGhpczsKLQotICAgICAgICBtRWRnZUJvcmRlciA9IHJlcy5nZXREaW1lbnNpb25QaXhlbFNpemUoUi5kaW1lbi5zdGF0dXNfYmFyX2VkZ2VfaWdub3JlKTsKLQotICAgICAgICAvLyBhZGQgdGhlIG1vcmUgaWNvbiBmb3IgdGhlIG5vdGlmaWNhdGlvbnMKLSAgICAgICAgSWNvbkRhdGEgbW9yZURhdGEgPSBJY29uRGF0YS5tYWtlSWNvbihudWxsLCBjb250ZXh0LmdldFBhY2thZ2VOYW1lKCksCi0gICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9tb3JlLCAwLCA0Mik7Ci0gICAgICAgIG1Nb3JlSWNvbiA9IG5ldyBTdGF0dXNCYXJJY29uKGNvbnRleHQsIG1vcmVEYXRhLCBtTm90aWZpY2F0aW9uSWNvbnMpOwotICAgICAgICBtTW9yZUljb24udmlldy5zZXRJZChSLmRyYXdhYmxlLnN0YXRfbm90aWZ5X21vcmUpOwotICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMubW9yZUljb24gPSBtTW9yZUljb247Ci0gICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5hZGRWaWV3KG1Nb3JlSWNvbi52aWV3KTsKLQotICAgICAgICAvLyBzZXQgdGhlIGluaXRhbCB2aWV3IHZpc2liaWxpdHkKLSAgICAgICAgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCk7Ci0gICAgICAgIG1EYXRlVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKLQotICAgICAgICAvLyBiZWZvcmUgd2UgcmVnaXN0ZXIgZm9yIGJyb2FkY2FzdHMKLSAgICAgICAgbVBsbW5MYWJlbC5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fY2Fycmllcl9kZWZhdWx0KTsKLSAgICAgICAgbVBsbW5MYWJlbC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgIG1TcG5MYWJlbC5zZXRUZXh0KCIiKTsKLSAgICAgICAgbVNwbkxhYmVsLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLQotICAgICAgICAvLyByZWNlaXZlIGJyb2FkY2FzdHMKLSAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0NPTkZJR1VSQVRJT05fQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9DTE9TRV9TWVNURU1fRElBTE9HUyk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9TQ1JFRU5fT0ZGKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnkuSW50ZW50cy5TUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTik7Ci0gICAgICAgIGNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtQnJvYWRjYXN0UmVjZWl2ZXIsIGZpbHRlcik7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc3lzdGVtUmVhZHkoKSB7Ci0gICAgICAgIGZpbmFsIFN0YXR1c0JhclZpZXcgdmlldyA9IG1TdGF0dXNCYXJWaWV3OwotICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBscCA9IG5ldyBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcygKLSAgICAgICAgICAgICAgICBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVCwKLSAgICAgICAgICAgICAgICB2aWV3LmdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXREaW1lbnNpb25QaXhlbFNpemUoCi0gICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRpbWVuLnN0YXR1c19iYXJfaGVpZ2h0KSwKLSAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NUQVRVU19CQVIsCi0gICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFfAotICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfVE9VQ0hBQkxFX1dIRU5fV0FLSU5HLAotICAgICAgICAgICAgICAgIG1QaXhlbEZvcm1hdCk7Ci0gICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOwotICAgICAgICBscC5zZXRUaXRsZSgiU3RhdHVzQmFyIik7Ci0gICAgICAgIGxwLndpbmRvd0FuaW1hdGlvbnMgPSBSLnN0eWxlLkFuaW1hdGlvbl9TdGF0dXNCYXI7Ci0KLSAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLmFkZFZpZXcodmlldywgbHApOwotICAgIH0KLSAgICAKLSAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIC8vIEZyb20gSVN0YXR1c0JhcgotICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcHVibGljIHZvaWQgYWN0aXZhdGUoKSB7Ci0gICAgICAgIGVuZm9yY2VFeHBhbmRTdGF0dXNCYXIoKTsKLSAgICAgICAgYWRkUGVuZGluZ09wKE9QX0VYUEFORCwgbnVsbCwgdHJ1ZSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZGVhY3RpdmF0ZSgpIHsKLSAgICAgICAgZW5mb3JjZUV4cGFuZFN0YXR1c0JhcigpOwotICAgICAgICBhZGRQZW5kaW5nT3AoT1BfRVhQQU5ELCBudWxsLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdG9nZ2xlKCkgewotICAgICAgICBlbmZvcmNlRXhwYW5kU3RhdHVzQmFyKCk7Ci0gICAgICAgIGFkZFBlbmRpbmdPcChPUF9UT0dHTEUsIG51bGwsIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKGludCB3aGF0LCBJQmluZGVyIHRva2VuLCBTdHJpbmcgcGtnKSB7Ci0gICAgICAgIGVuZm9yY2VTdGF0dXNCYXIoKTsKLSAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9uQ2FsbGJhY2tzKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIGEgbGl0dGxlIGdyb3NzLCBidXQgSSB0aGluayBpdCdzIHNhZmUgYXMgbG9uZyBhcyBub2JvZHkgZWxzZQotICAgICAgICAgICAgLy8gc3luY2hyb25pemVzIG9uIG1Ob3RpZmljYXRpb25DYWxsYmFja3MuICBJdCdzIGltcG9ydGFudCB0aGF0IHRoZSB0aGUgY2FsbGJhY2sKLSAgICAgICAgICAgIC8vIGFuZCB0aGUgcGVuZGluZyBvcCBnZXQgZG9uZSBpbiB0aGUgY29ycmVjdCBvcmRlciBhbmQgbm90IGludGVybGVhdmVkIHdpdGgKLSAgICAgICAgICAgIC8vIG90aGVyIGNhbGxzLCBvdGhlcndpc2UgdGhleSdsbCBnZXQgb3V0IG9mIHN5bmMuCi0gICAgICAgICAgICBpbnQgbmV0OwotICAgICAgICAgICAgc3luY2hyb25pemVkIChtRGlzYWJsZVJlY29yZHMpIHsKLSAgICAgICAgICAgICAgICBtYW5hZ2VEaXNhYmxlTGlzdExvY2tlZCh3aGF0LCB0b2tlbiwgcGtnKTsKLSAgICAgICAgICAgICAgICBuZXQgPSBnYXRoZXJEaXNhYmxlQWN0aW9uc0xvY2tlZCgpOwotICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25DYWxsYmFja3Mub25TZXREaXNhYmxlZChuZXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYWRkUGVuZGluZ09wKE9QX0RJU0FCTEUsIG5ldCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgSUJpbmRlciBhZGRJY29uKFN0cmluZyBzbG90LCBTdHJpbmcgaWNvblBhY2thZ2UsIGludCBpY29uSWQsIGludCBpY29uTGV2ZWwpIHsKLSAgICAgICAgZW5mb3JjZVN0YXR1c0JhcigpOwotICAgICAgICByZXR1cm4gYWRkSWNvbihJY29uRGF0YS5tYWtlSWNvbihzbG90LCBpY29uUGFja2FnZSwgaWNvbklkLCBpY29uTGV2ZWwsIDApLCBudWxsKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB1cGRhdGVJY29uKElCaW5kZXIga2V5LAotICAgICAgICAgICAgU3RyaW5nIHNsb3QsIFN0cmluZyBpY29uUGFja2FnZSwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCkgewotICAgICAgICBlbmZvcmNlU3RhdHVzQmFyKCk7Ci0gICAgICAgIHVwZGF0ZUljb24oa2V5LCBJY29uRGF0YS5tYWtlSWNvbihzbG90LCBpY29uUGFja2FnZSwgaWNvbklkLCBpY29uTGV2ZWwsIDApLCBudWxsKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCByZW1vdmVJY29uKElCaW5kZXIga2V5KSB7Ci0gICAgICAgIGVuZm9yY2VTdGF0dXNCYXIoKTsKLSAgICAgICAgYWRkUGVuZGluZ09wKE9QX1JFTU9WRV9JQ09OLCBrZXksIG51bGwsIG51bGwsIC0xKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgZW5mb3JjZVN0YXR1c0JhcigpIHsKLSAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAotICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5TVEFUVVNfQkFSLAotICAgICAgICAgICAgICAgICJTdGF0dXNCYXJTZXJ2aWNlIik7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGVuZm9yY2VFeHBhbmRTdGF0dXNCYXIoKSB7Ci0gICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKLSAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uRVhQQU5EX1NUQVRVU19CQVIsCi0gICAgICAgICAgICAgICAgIlN0YXR1c0JhclNlcnZpY2UiKTsKLSAgICB9Ci0KLSAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkCi0gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwdWJsaWMgSUJpbmRlciBhZGRJY29uKEljb25EYXRhIGRhdGEsIE5vdGlmaWNhdGlvbkRhdGEgbikgewotICAgICAgICBpbnQgc2xvdDsKLSAgICAgICAgLy8gYXNzZXJ0IGVhcmx5LW9uIGlmIHRoZXkgdXNpbmcgYSBzbG90IHRoYXQgZG9lc24ndCBleGlzdC4KLSAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiBuID09IG51bGwpIHsKLSAgICAgICAgICAgIHNsb3QgPSBnZXRSaWdodEljb25JbmRleChkYXRhLnNsb3QpOwotICAgICAgICAgICAgaWYgKHNsb3QgPCAwKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCJpbnZhbGlkIHN0YXR1cyBiYXIgaWNvbiBzbG90OiAiCi0gICAgICAgICAgICAgICAgICAgICAgICArIChkYXRhLnNsb3QgIT0gbnVsbCA/ICInIiArIGRhdGEuc2xvdCArICInIiA6ICJudWxsIikpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2xvdCA9IC0xOwotICAgICAgICB9Ci0gICAgICAgIElCaW5kZXIga2V5ID0gbmV3IEJpbmRlcigpOwotICAgICAgICBhZGRQZW5kaW5nT3AoT1BfQUREX0lDT04sIGtleSwgZGF0YSwgbiwgLTEpOwotICAgICAgICByZXR1cm4ga2V5OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUljb24oSUJpbmRlciBrZXksIEljb25EYXRhIGRhdGEsIE5vdGlmaWNhdGlvbkRhdGEgbikgewotICAgICAgICBhZGRQZW5kaW5nT3AoT1BfVVBEQVRFX0lDT04sIGtleSwgZGF0YSwgbiwgLTEpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEljb25WaXNpYmlsaXR5KElCaW5kZXIga2V5LCBib29sZWFuIHZpc2libGUpIHsKLSAgICAgICAgYWRkUGVuZGluZ09wKE9QX1NFVF9WSVNJQkxFLCBrZXksIHZpc2libGUpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBhZGRQZW5kaW5nT3AoaW50IGNvZGUsIElCaW5kZXIga2V5LCBJY29uRGF0YSBkYXRhLCBOb3RpZmljYXRpb25EYXRhIG4sIGludCBpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVF1ZXVlTG9jaykgewotICAgICAgICAgICAgUGVuZGluZ09wIG9wID0gbmV3IFBlbmRpbmdPcCgpOwotICAgICAgICAgICAgb3Aua2V5ID0ga2V5OwotICAgICAgICAgICAgb3AuY29kZSA9IGNvZGU7Ci0gICAgICAgICAgICBvcC5pY29uRGF0YSA9IGRhdGEgPT0gbnVsbCA/IG51bGwgOiBkYXRhLmNsb25lKCk7Ci0gICAgICAgICAgICBvcC5ub3RpZmljYXRpb25EYXRhID0gbjsKLSAgICAgICAgICAgIG9wLmludGVnZXIgPSBpOwotICAgICAgICAgICAgbVF1ZXVlLmFkZChvcCk7Ci0gICAgICAgICAgICBpZiAobVF1ZXVlLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZSgyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBhZGRQZW5kaW5nT3AoaW50IGNvZGUsIElCaW5kZXIga2V5LCBib29sZWFuIHZpc2libGUpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtUXVldWVMb2NrKSB7Ci0gICAgICAgICAgICBQZW5kaW5nT3Agb3AgPSBuZXcgUGVuZGluZ09wKCk7Ci0gICAgICAgICAgICBvcC5rZXkgPSBrZXk7Ci0gICAgICAgICAgICBvcC5jb2RlID0gY29kZTsKLSAgICAgICAgICAgIG9wLnZpc2libGUgPSB2aXNpYmxlOwotICAgICAgICAgICAgbVF1ZXVlLmFkZChvcCk7Ci0gICAgICAgICAgICBpZiAobVF1ZXVlLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZSgxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBhZGRQZW5kaW5nT3AoaW50IGNvZGUsIGludCBpbnRlZ2VyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVF1ZXVlTG9jaykgewotICAgICAgICAgICAgUGVuZGluZ09wIG9wID0gbmV3IFBlbmRpbmdPcCgpOwotICAgICAgICAgICAgb3AuY29kZSA9IGNvZGU7Ci0gICAgICAgICAgICBvcC5pbnRlZ2VyID0gaW50ZWdlcjsKLSAgICAgICAgICAgIG1RdWV1ZS5hZGQob3ApOwotICAgICAgICAgICAgaWYgKG1RdWV1ZS5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBsb2NrIG9uIG1EaXNhYmxlUmVjb3JkcwotICAgIHZvaWQgbWFuYWdlRGlzYWJsZUxpc3RMb2NrZWQoaW50IHdoYXQsIElCaW5kZXIgdG9rZW4sIFN0cmluZyBwa2cpIHsKLSAgICAgICAgaWYgKFNQRVcpIHsKLSAgICAgICAgICAgIFNsb2cuZChUQUcsICJtYW5hZ2VEaXNhYmxlTGlzdCB3aGF0PTB4IiArIEludGVnZXIudG9IZXhTdHJpbmcod2hhdCkKLSAgICAgICAgICAgICAgICAgICAgKyAiIHBrZz0iICsgcGtnKTsKLSAgICAgICAgfQotICAgICAgICAvLyB1cGRhdGUgdGhlIGxpc3QKLSAgICAgICAgc3luY2hyb25pemVkIChtRGlzYWJsZVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZpbmFsIGludCBOID0gbURpc2FibGVSZWNvcmRzLnNpemUoKTsKLSAgICAgICAgICAgIERpc2FibGVSZWNvcmQgdG9rID0gbnVsbDsKLSAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgZm9yIChpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgRGlzYWJsZVJlY29yZCB0ID0gbURpc2FibGVSZWNvcmRzLmdldChpKTsKLSAgICAgICAgICAgICAgICBpZiAodC50b2tlbiA9PSB0b2tlbikgewotICAgICAgICAgICAgICAgICAgICB0b2sgPSB0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAod2hhdCA9PSAwIHx8ICF0b2tlbi5pc0JpbmRlckFsaXZlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodG9rICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbURpc2FibGVSZWNvcmRzLnJlbW92ZShpKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rLnRva2VuLnVubGlua1RvRGVhdGgodG9rLCAwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICh0b2sgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB0b2sgPSBuZXcgRGlzYWJsZVJlY29yZCgpOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4ubGlua1RvRGVhdGgodG9rLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGdpdmUgdXAKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtRGlzYWJsZVJlY29yZHMuYWRkKHRvayk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRvay53aGF0ID0gd2hhdDsKLSAgICAgICAgICAgICAgICB0b2sudG9rZW4gPSB0b2tlbjsKLSAgICAgICAgICAgICAgICB0b2sucGtnID0gcGtnOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gbG9jayBvbiBtRGlzYWJsZVJlY29yZHMKLSAgICBpbnQgZ2F0aGVyRGlzYWJsZUFjdGlvbnNMb2NrZWQoKSB7Ci0gICAgICAgIGZpbmFsIGludCBOID0gbURpc2FibGVSZWNvcmRzLnNpemUoKTsKLSAgICAgICAgLy8gZ2F0aGVyIHRoZSBuZXcgbmV0IGZsYWdzCi0gICAgICAgIGludCBuZXQgPSAwOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBuZXQgfD0gbURpc2FibGVSZWNvcmRzLmdldChpKS53aGF0OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXQ7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBpbnQgZ2V0UmlnaHRJY29uSW5kZXgoU3RyaW5nIHNsb3QpIHsKLSAgICAgICAgZmluYWwgaW50IE4gPSBtUmlnaHRJY29uU2xvdHMubGVuZ3RoOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAobVJpZ2h0SWNvblNsb3RzW2ldLmVxdWFscyhzbG90KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIC8vIEFsd2F5cyBjYWxsZWQgZnJvbSBVSSB0aHJlYWQKLSAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIC8qKgotICAgICAqIEFsbCBjaGFuZ2VzIHRvIHRoZSBzdGF0dXMgYmFyIGFuZCBub3RpZmljYXRpb25zIGZ1bm5lbCB0aHJvdWdoIGhlcmUgYW5kIGFyZSBiYXRjaGVkLgotICAgICAqLwotICAgIHByaXZhdGUgY2xhc3MgSCBleHRlbmRzIEhhbmRsZXIgewotICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbSkgewotICAgICAgICAgICAgaWYgKG0ud2hhdCA9PSBNU0dfQU5JTUFURSkgewotICAgICAgICAgICAgICAgIGRvQW5pbWF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG0ud2hhdCA9PSBNU0dfQU5JTUFURV9SRVZFQUwpIHsKLSAgICAgICAgICAgICAgICBkb1JldmVhbEFuaW1hdGlvbigpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQXJyYXlMaXN0PFBlbmRpbmdPcD4gcXVldWU7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1RdWV1ZUxvY2spIHsKLSAgICAgICAgICAgICAgICBxdWV1ZSA9IG1RdWV1ZTsKLSAgICAgICAgICAgICAgICBtUXVldWUgPSBuZXcgQXJyYXlMaXN0PFBlbmRpbmdPcD4oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbGVhbiB3YXNFeHBhbmRlZCA9IG1FeHBhbmRlZDsKLQotICAgICAgICAgICAgLy8gZm9yIGVhY2ggb25lIGluIHRoZSBxdWV1ZSwgZmluZCBhbGwgb2YgdGhlIG9uZXMgd2l0aCB0aGUgc2FtZSBrZXkKLSAgICAgICAgICAgIC8vIGFuZCBjb2xsYXBzZSB0aGF0IGRvd24gaW50byBhIGZpbmFsIG9wIGFuZC9vciBjYWxsIHRvIHNldFZpc2liaWxpdHksIGV0YwotICAgICAgICAgICAgYm9vbGVhbiBleHBhbmQgPSB3YXNFeHBhbmRlZDsKLSAgICAgICAgICAgIGJvb2xlYW4gZG9FeHBhbmQgPSBmYWxzZTsKLSAgICAgICAgICAgIGJvb2xlYW4gZG9EaXNhYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICBpbnQgZGlzYWJsZVdoYXQgPSAwOwotICAgICAgICAgICAgaW50IE4gPSBxdWV1ZS5zaXplKCk7Ci0gICAgICAgICAgICB3aGlsZSAoTiA+IDApIHsKLSAgICAgICAgICAgICAgICBQZW5kaW5nT3Agb3AgPSBxdWV1ZS5nZXQoMCk7Ci0gICAgICAgICAgICAgICAgYm9vbGVhbiBkb09wID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYm9vbGVhbiB2aXNpYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYm9vbGVhbiBkb1Zpc2liaWxpdHkgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAob3AuY29kZSA9PSBPUF9TRVRfVklTSUJMRSkgewotICAgICAgICAgICAgICAgICAgICBkb1Zpc2liaWxpdHkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gb3AudmlzaWJsZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAob3AuY29kZSA9PSBPUF9FWFBBTkQpIHsKLSAgICAgICAgICAgICAgICAgICAgZG9FeHBhbmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSBvcC52aXNpYmxlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC5jb2RlID09IE9QX1RPR0dMRSkgewotICAgICAgICAgICAgICAgICAgICBkb0V4cGFuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9ICFleHBhbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkb09wID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoYWx3YXlzSGFuZGxlKG9wLmNvZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGNvYWxlc2NlIHRoZXNlCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MTsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdPcCBvID0gcXVldWUuZ2V0KGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhbHdheXNIYW5kbGUoby5jb2RlKSAmJiBvLmtleSA9PSBvcC5rZXkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5jb2RlID09IE9QX1NFVF9WSVNJQkxFKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGUgPSBvLnZpc2libGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvVmlzaWJpbGl0eSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG8uY29kZSA9PSBPUF9FWFBBTkQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gby52aXNpYmxlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb0V4cGFuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5jb2RlID0gby5jb2RlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5pY29uRGF0YSA9IG8uaWNvbkRhdGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm5vdGlmaWNhdGlvbkRhdGEgPSBvLm5vdGlmaWNhdGlvbkRhdGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlLnJlbW92ZShpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTi0tOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcXVldWUucmVtb3ZlKDApOwotICAgICAgICAgICAgICAgIE4tLTsKLQotICAgICAgICAgICAgICAgIGlmIChkb09wKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob3AuY29kZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPUF9BRERfSUNPTjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT1BfVVBEQVRFX0lDT046Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybUFkZFVwZGF0ZUljb24ob3Aua2V5LCBvcC5pY29uRGF0YSwgb3Aubm90aWZpY2F0aW9uRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9QX1JFTU9WRV9JQ09OOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1SZW1vdmVJY29uKG9wLmtleSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9QX0RJU0FCTEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9EaXNhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlV2hhdCA9IG9wLmludGVnZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGRvVmlzaWJpbGl0eSAmJiBvcC5jb2RlICE9IE9QX1JFTU9WRV9JQ09OKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBlcmZvcm1TZXRJY29uVmlzaWJpbGl0eShvcC5rZXksIHZpc2libGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHF1ZXVlLnNpemUoKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkFzc2VydGlvbiBmYWlsZWQ6IHF1ZXVlLnNpemU9IiArIHF1ZXVlLnNpemUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZG9FeHBhbmQpIHsKLSAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGxhc3Qgc28gdGhhdCB3ZSBjYXB0dXJlIGFsbCBvZiB0aGUgcGVuZGluZyBjaGFuZ2VzIGJlZm9yZSBkb2luZyBpdAotICAgICAgICAgICAgICAgIGlmIChleHBhbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZUV4cGFuZCgpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFuaW1hdGVDb2xsYXBzZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChkb0Rpc2FibGUpIHsKLSAgICAgICAgICAgICAgICBwZXJmb3JtRGlzYWJsZUFjdGlvbnMoZGlzYWJsZVdoYXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBib29sZWFuIGFsd2F5c0hhbmRsZShpbnQgY29kZSkgewotICAgICAgICByZXR1cm4gY29kZSA9PSBPUF9ESVNBQkxFOwotICAgIH0KLQotICAgIC8qIHByaXZhdGUgKi8gdm9pZCBwZXJmb3JtQWRkVXBkYXRlSWNvbihJQmluZGVyIGtleSwgSWNvbkRhdGEgZGF0YSwgTm90aWZpY2F0aW9uRGF0YSBuKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIFN0YXR1c0JhckV4Y2VwdGlvbiB7Ci0gICAgICAgIGlmIChTUEVXKSB7Ci0gICAgICAgICAgICBTbG9nLmQoVEFHLCAicGVyZm9ybUFkZFVwZGF0ZUljb24gaWNvbj0iICsgZGF0YSArICIgbm90aWZpY2F0aW9uPSIgKyBuICsgIiBrZXk9IiArIGtleSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gbm90aWZpY2F0aW9uCi0gICAgICAgIGlmIChuICE9IG51bGwpIHsKLSAgICAgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gPSBnZXROb3RpZmljYXRpb24oa2V5KTsKLSAgICAgICAgICAgIE5vdGlmaWNhdGlvbkRhdGEgb2xkRGF0YSA9IG51bGw7Ci0gICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBhZGQKLSAgICAgICAgICAgICAgICBub3RpZmljYXRpb24gPSBuZXcgU3RhdHVzQmFyTm90aWZpY2F0aW9uKCk7Ci0gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmtleSA9IGtleTsKLSAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uZGF0YSA9IG47Ci0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9uRGF0YSkgewotICAgICAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uRGF0YS5hZGQobm90aWZpY2F0aW9uKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYWRkTm90aWZpY2F0aW9uVmlldyhub3RpZmljYXRpb24pOwotICAgICAgICAgICAgICAgIHNldEFyZVRoZXJlTm90aWZpY2F0aW9ucygpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyB1cGRhdGUKLSAgICAgICAgICAgICAgICBvbGREYXRhID0gbm90aWZpY2F0aW9uLmRhdGE7Ci0gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmRhdGEgPSBuOwotICAgICAgICAgICAgICAgIHVwZGF0ZU5vdGlmaWNhdGlvblZpZXcobm90aWZpY2F0aW9uLCBvbGREYXRhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIFNob3cgdGhlIHRpY2tlciBpZiBvbmUgaXMgcmVxdWVzdGVkLCBhbmQgdGhlIHRleHQgaXMgZGlmZmVyZW50Ci0gICAgICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIHRpY2tlci4gIEFsc28gZG9uJ3QgZG8gdGhpcwotICAgICAgICAgICAgLy8gdW50aWwgc3RhdHVzIGJhciB3aW5kb3cgaXMgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdyBtYW5hZ2VyLAotICAgICAgICAgICAgLy8gYmVjYXVzZS4uLiAgd2VsbCwgd2hhdCdzIHRoZSBwb2ludCBvdGhlcndpc2U/ICBBbmQgdHJ5aW5nIHRvCi0gICAgICAgICAgICAvLyBydW4gYSB0aWNrZXIgd2l0aG91dCBiZWluZyBhdHRhY2hlZCB3aWxsIGNyYXNoIQotICAgICAgICAgICAgaWYgKG4udGlja2VyVGV4dCAhPSBudWxsICYmIG1TdGF0dXNCYXJWaWV3LmdldFdpbmRvd1Rva2VuKCkgIT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAmJiAob2xkRGF0YSA9PSBudWxsCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBvbGREYXRhLnRpY2tlclRleHQgPT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgIUNoYXJTZXF1ZW5jZXMuZXF1YWxzKG9sZERhdGEudGlja2VyVGV4dCwgbi50aWNrZXJUZXh0KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoMCA9PSAobURpc2FibGVkICYgCi0gICAgICAgICAgICAgICAgICAgIChTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TIHwgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpKSkgewotICAgICAgICAgICAgICAgICAgICBtVGlja2VyLmFkZEVudHJ5KG4sIFN0YXR1c0Jhckljb24uZ2V0SWNvbihtQ29udGV4dCwgZGF0YSksIG4udGlja2VyVGV4dCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKEVYUEFOREVEX0xFQVZFX0FMT05FKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGljb24KLSAgICAgICAgc3luY2hyb25pemVkIChtSWNvbk1hcCkgewotICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gbUljb25NYXAuZ2V0KGtleSk7Ci0gICAgICAgICAgICBpZiAoaWNvbiA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgLy8gYWRkCi0gICAgICAgICAgICAgICAgTGluZWFyTGF5b3V0IHYgPSBuID09IG51bGwgPyBtU3RhdHVzSWNvbnMgOiBtTm90aWZpY2F0aW9uSWNvbnM7Ci0KLSAgICAgICAgICAgICAgICBpY29uID0gbmV3IFN0YXR1c0Jhckljb24obUNvbnRleHQsIGRhdGEsIHYpOwotICAgICAgICAgICAgICAgIG1JY29uTWFwLnB1dChrZXksIGljb24pOwotICAgICAgICAgICAgICAgIG1JY29uTGlzdC5hZGQoaWNvbik7Ci0KLSAgICAgICAgICAgICAgICBpZiAobiA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBzbG90SW5kZXggPSBnZXRSaWdodEljb25JbmRleChkYXRhLnNsb3QpOwotICAgICAgICAgICAgICAgICAgICBTdGF0dXNCYXJJY29uW10gcmlnaHRJY29ucyA9IG1SaWdodEljb25zOwotICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRJY29uc1tzbG90SW5kZXhdID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3MgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT1tUmlnaHRJY29ucy5sZW5ndGgtMTsgaT5zbG90SW5kZXg7IGktLSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1c0Jhckljb24gaWMgPSByaWdodEljb25zW2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpYyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcysrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0SWNvbnNbc2xvdEluZGV4XSA9IGljb247Ci0gICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzSWNvbnMuYWRkVmlldyhpY29uLnZpZXcsIHBvcyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiZHVwbGljYXRlIGljb24gaW4gc2xvdCAiICsgc2xvdEluZGV4ICsgIi8iICsgZGF0YS5zbG90KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1JY29uTWFwLnJlbW92ZShrZXkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUljb25MaXN0LnJlbW92ZShpY29uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpbnQgaWNvbkluZGV4ID0gbU5vdGlmaWNhdGlvbkRhdGEuZ2V0SWNvbkluZGV4KG4pOwotICAgICAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuYWRkVmlldyhpY29uLnZpZXcsIGljb25JbmRleCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobiA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0IGhhbmQgc2lkZSBpY29ucyAtLSB0aGVzZSBkb24ndCByZW9yZGVyCi0gICAgICAgICAgICAgICAgICAgIGljb24udXBkYXRlKG1Db250ZXh0LCBkYXRhKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgb2xkCi0gICAgICAgICAgICAgICAgICAgIFZpZXdHcm91cCBwYXJlbnQgPSAoVmlld0dyb3VwKWljb24udmlldy5nZXRQYXJlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LnJlbW92ZVZpZXcoaWNvbi52aWV3KTsKLSAgICAgICAgICAgICAgICAgICAgLy8gYWRkIG5ldwotICAgICAgICAgICAgICAgICAgICBpY29uLnVwZGF0ZShtQ29udGV4dCwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBpY29uSW5kZXggPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRJY29uSW5kZXgobik7Ci0gICAgICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5hZGRWaWV3KGljb24udmlldywgaWNvbkluZGV4KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBwcml2YXRlICovIHZvaWQgcGVyZm9ybVNldEljb25WaXNpYmlsaXR5KElCaW5kZXIga2V5LCBib29sZWFuIHZpc2libGUpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtSWNvbk1hcCkgewotICAgICAgICAgICAgaWYgKFNQRVcpIHsKLSAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAicGVyZm9ybVNldEljb25WaXNpYmlsaXR5IGtleT0iICsga2V5ICsgIiB2aXNpYmxlPSIgKyB2aXNpYmxlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFN0YXR1c0Jhckljb24gaWNvbiA9IG1JY29uTWFwLmdldChrZXkpOwotICAgICAgICAgICAgaWNvbi52aWV3LnNldFZpc2liaWxpdHkodmlzaWJsZSA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLyogcHJpdmF0ZSAqLyB2b2lkIHBlcmZvcm1SZW1vdmVJY29uKElCaW5kZXIga2V5KSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaWYgKFNQRVcpIHsKLSAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAicGVyZm9ybVJlbW92ZUljb24ga2V5PSIgKyBrZXkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gbUljb25NYXAucmVtb3ZlKGtleSk7Ci0gICAgICAgICAgICBtSWNvbkxpc3QucmVtb3ZlKGljb24pOwotICAgICAgICAgICAgaWYgKGljb24gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIFZpZXdHcm91cCBwYXJlbnQgPSAoVmlld0dyb3VwKWljb24udmlldy5nZXRQYXJlbnQoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlVmlldyhpY29uLnZpZXcpOwotICAgICAgICAgICAgICAgIGludCBzbG90SW5kZXggPSBnZXRSaWdodEljb25JbmRleChpY29uLm1EYXRhLnNsb3QpOwotICAgICAgICAgICAgICAgIGlmIChzbG90SW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBtUmlnaHRJY29uc1tzbG90SW5kZXhdID0gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uID0gZ2V0Tm90aWZpY2F0aW9uKGtleSk7Ci0gICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZW1vdmVOb3RpZmljYXRpb25WaWV3KG5vdGlmaWNhdGlvbik7Ci0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9uRGF0YSkgewotICAgICAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uRGF0YS5yZW1vdmUobm90aWZpY2F0aW9uKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnQgZ2V0SWNvbk51bWJlckZvclZpZXcoVmlldyB2KSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobUljb25NYXApIHsKLSAgICAgICAgICAgIFN0YXR1c0Jhckljb24gaWNvbiA9IG51bGw7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1JY29uTGlzdC5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpYyA9IG1JY29uTGlzdC5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGljLnZpZXcgPT0gdikgewotICAgICAgICAgICAgICAgICAgICBpY29uID0gaWM7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpY29uICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaWNvbi5nZXROdW1iZXIoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0KLSAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gZ2V0Tm90aWZpY2F0aW9uKElCaW5kZXIga2V5KSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobU5vdGlmaWNhdGlvbkRhdGEpIHsKLSAgICAgICAgICAgIHJldHVybiBtTm90aWZpY2F0aW9uRGF0YS5nZXQoa2V5KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFZpZXcuT25Gb2N1c0NoYW5nZUxpc3RlbmVyIG1Gb2N1c0NoYW5nZUxpc3RlbmVyID0gbmV3IFZpZXcuT25Gb2N1c0NoYW5nZUxpc3RlbmVyKCkgewotICAgICAgICBwdWJsaWMgdm9pZCBvbkZvY3VzQ2hhbmdlKFZpZXcgdiwgYm9vbGVhbiBoYXNGb2N1cykgewotICAgICAgICAgICAgLy8gQmVjYXVzZSAndicgaXMgYSBWaWV3R3JvdXAsIGFsbCBpdHMgY2hpbGRyZW4gd2lsbCBiZSAodW4pc2VsZWN0ZWQKLSAgICAgICAgICAgIC8vIHRvbywgd2hpY2ggYWxsb3dzIG1hcnF1ZWVpbmcgdG8gd29yay4KLSAgICAgICAgICAgIHYuc2V0U2VsZWN0ZWQoaGFzRm9jdXMpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICBWaWV3IG1ha2VOb3RpZmljYXRpb25WaWV3KFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFZpZXdHcm91cCBwYXJlbnQpIHsKLSAgICAgICAgTm90aWZpY2F0aW9uRGF0YSBuID0gbm90aWZpY2F0aW9uLmRhdGE7Ci0gICAgICAgIFJlbW90ZVZpZXdzIHJlbW90ZVZpZXdzID0gbi5jb250ZW50VmlldzsKLSAgICAgICAgaWYgKHJlbW90ZVZpZXdzID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gY3JlYXRlIHRoZSByb3cgdmlldwotICAgICAgICBMYXlvdXRJbmZsYXRlciBpbmZsYXRlciA9IChMYXlvdXRJbmZsYXRlciltQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAotICAgICAgICAgICAgICAgIENvbnRleHQuTEFZT1VUX0lORkxBVEVSX1NFUlZJQ0UpOwotICAgICAgICBWaWV3IHJvdyA9IGluZmxhdGVyLmluZmxhdGUoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5sYXlvdXQuc3RhdHVzX2Jhcl9sYXRlc3RfZXZlbnQsIHBhcmVudCwgZmFsc2UpOwotCi0gICAgICAgIC8vIGJpbmQgdGhlIGNsaWNrIGV2ZW50IHRvIHRoZSBjb250ZW50IGFyZWEKLSAgICAgICAgVmlld0dyb3VwIGNvbnRlbnQgPSAoVmlld0dyb3VwKXJvdy5maW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5jb250ZW50KTsKLSAgICAgICAgY29udGVudC5zZXREZXNjZW5kYW50Rm9jdXNhYmlsaXR5KFZpZXdHcm91cC5GT0NVU19CTE9DS19ERVNDRU5EQU5UUyk7Ci0gICAgICAgIGNvbnRlbnQuc2V0T25Gb2N1c0NoYW5nZUxpc3RlbmVyKG1Gb2N1c0NoYW5nZUxpc3RlbmVyKTsKLSAgICAgICAgUGVuZGluZ0ludGVudCBjb250ZW50SW50ZW50ID0gbi5jb250ZW50SW50ZW50OwotICAgICAgICBpZiAoY29udGVudEludGVudCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBjb250ZW50LnNldE9uQ2xpY2tMaXN0ZW5lcihuZXcgTGF1bmNoZXIoY29udGVudEludGVudCwgbi5wa2csIG4udGFnLCBuLmlkKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWaWV3IGNoaWxkID0gbnVsbDsKLSAgICAgICAgRXhjZXB0aW9uIGV4Y2VwdGlvbiA9IG51bGw7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjaGlsZCA9IHJlbW90ZVZpZXdzLmFwcGx5KG1Db250ZXh0LCBjb250ZW50KTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBleGNlcHRpb24gPSBlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGlsZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICBTbG9nLmUoVEFHLCAiY291bGRuJ3QgaW5mbGF0ZSB2aWV3IGZvciBwYWNrYWdlICIgKyBuLnBrZywgZXhjZXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQuYWRkVmlldyhjaGlsZCk7Ci0KLSAgICAgICAgcm93LnNldERyYXdpbmdDYWNoZUVuYWJsZWQodHJ1ZSk7Ci0KLSAgICAgICAgbm90aWZpY2F0aW9uLnZpZXcgPSByb3c7Ci0gICAgICAgIG5vdGlmaWNhdGlvbi5jb250ZW50VmlldyA9IGNoaWxkOwotCi0gICAgICAgIHJldHVybiByb3c7Ci0gICAgfQotCi0gICAgdm9pZCBhZGROb3RpZmljYXRpb25WaWV3KFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKLSAgICAgICAgaWYgKG5vdGlmaWNhdGlvbi52aWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJBc3NlcnRpb24gZmFpbGVkOiBub3RpZmljYXRpb24udmlldz0iCi0gICAgICAgICAgICAgICAgICAgICsgbm90aWZpY2F0aW9uLnZpZXcpOwotICAgICAgICB9Ci0KLSAgICAgICAgTGluZWFyTGF5b3V0IHBhcmVudCA9IG5vdGlmaWNhdGlvbi5kYXRhLm9uZ29pbmdFdmVudCA/IG1PbmdvaW5nSXRlbXMgOiBtTGF0ZXN0SXRlbXM7Ci0KLSAgICAgICAgVmlldyBjaGlsZCA9IG1ha2VOb3RpZmljYXRpb25WaWV3KG5vdGlmaWNhdGlvbiwgcGFyZW50KTsKLSAgICAgICAgaWYgKGNoaWxkID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiA7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaW5kZXggPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRFeHBhbmRlZEluZGV4KG5vdGlmaWNhdGlvbik7Ci0gICAgICAgIHBhcmVudC5hZGRWaWV3KGNoaWxkLCBpbmRleCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmVtb3ZlIHRoZSBvbGQgb25lIGFuZCBwdXQgdGhlIG5ldyBvbmUgaW4gaXRzIHBsYWNlLgotICAgICAqIEBwYXJhbSBub3RpZmljYXRpb24gdGhlIG5vdGlmaWNhdGlvbgotICAgICAqLwotICAgIHZvaWQgdXBkYXRlTm90aWZpY2F0aW9uVmlldyhTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uLCBOb3RpZmljYXRpb25EYXRhIG9sZERhdGEpIHsKLSAgICAgICAgTm90aWZpY2F0aW9uRGF0YSBuID0gbm90aWZpY2F0aW9uLmRhdGE7Ci0gICAgICAgIGlmIChvbGREYXRhICE9IG51bGwgJiYgbiAhPSBudWxsCi0gICAgICAgICAgICAgICAgJiYgbi53aGVuID09IG9sZERhdGEud2hlbgotICAgICAgICAgICAgICAgICYmIG4ub25nb2luZ0V2ZW50ID09IG9sZERhdGEub25nb2luZ0V2ZW50Ci0gICAgICAgICAgICAgICAgJiYgbi5jb250ZW50VmlldyAhPSBudWxsICYmIG9sZERhdGEuY29udGVudFZpZXcgIT0gbnVsbAotICAgICAgICAgICAgICAgICYmIG4uY29udGVudFZpZXcuZ2V0UGFja2FnZSgpICE9IG51bGwKLSAgICAgICAgICAgICAgICAmJiBvbGREYXRhLmNvbnRlbnRWaWV3LmdldFBhY2thZ2UoKSAhPSBudWxsCi0gICAgICAgICAgICAgICAgJiYgb2xkRGF0YS5jb250ZW50Vmlldy5nZXRQYWNrYWdlKCkuZXF1YWxzKG4uY29udGVudFZpZXcuZ2V0UGFja2FnZSgpKQotICAgICAgICAgICAgICAgICYmIG9sZERhdGEuY29udGVudFZpZXcuZ2V0TGF5b3V0SWQoKSA9PSBuLmNvbnRlbnRWaWV3LmdldExheW91dElkKCkKLSAgICAgICAgICAgICAgICAmJiBub3RpZmljYXRpb24udmlldyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtTm90aWZpY2F0aW9uRGF0YS51cGRhdGUobm90aWZpY2F0aW9uKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbi5jb250ZW50Vmlldy5yZWFwcGx5KG1Db250ZXh0LCBub3RpZmljYXRpb24uY29udGVudFZpZXcpOwotCi0gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBjb250ZW50SW50ZW50Ci0gICAgICAgICAgICAgICAgVmlld0dyb3VwIGNvbnRlbnQgPSAoVmlld0dyb3VwKW5vdGlmaWNhdGlvbi52aWV3LmZpbmRWaWV3QnlJZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuY29udGVudCk7Ci0gICAgICAgICAgICAgICAgUGVuZGluZ0ludGVudCBjb250ZW50SW50ZW50ID0gbi5jb250ZW50SW50ZW50OwotICAgICAgICAgICAgICAgIGlmIChjb250ZW50SW50ZW50ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGVudC5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IExhdW5jaGVyKGNvbnRlbnRJbnRlbnQsIG4ucGtnLCBuLnRhZywgbi5pZCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAvLyBJdCBmYWlsZWQgdG8gYWRkIGNsZWFubHkuICBMb2csIGFuZCByZW1vdmUgdGhlIHZpZXcgZnJvbSB0aGUgcGFuZWwuCi0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgImNvdWxkbid0IHJlYXBwbHkgdmlld3MgZm9yIHBhY2thZ2UgIiArIG4uY29udGVudFZpZXcuZ2V0UGFja2FnZSgpLCBlKTsKLSAgICAgICAgICAgICAgICByZW1vdmVOb3RpZmljYXRpb25WaWV3KG5vdGlmaWNhdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtTm90aWZpY2F0aW9uRGF0YS51cGRhdGUobm90aWZpY2F0aW9uKTsKLSAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvblZpZXcobm90aWZpY2F0aW9uKTsKLSAgICAgICAgICAgIGFkZE5vdGlmaWNhdGlvblZpZXcobm90aWZpY2F0aW9uKTsKLSAgICAgICAgfQotICAgICAgICBzZXRBcmVUaGVyZU5vdGlmaWNhdGlvbnMoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvblZpZXcoU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgewotICAgICAgICBWaWV3IHYgPSBub3RpZmljYXRpb24udmlldzsKLSAgICAgICAgaWYgKHYgIT0gbnVsbCkgewotICAgICAgICAgICAgVmlld0dyb3VwIHBhcmVudCA9IChWaWV3R3JvdXApdi5nZXRQYXJlbnQoKTsKLSAgICAgICAgICAgIHBhcmVudC5yZW1vdmVWaWV3KHYpOwotICAgICAgICAgICAgbm90aWZpY2F0aW9uLnZpZXcgPSBudWxsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHNldEFyZVRoZXJlTm90aWZpY2F0aW9ucygpIHsKLSAgICAgICAgYm9vbGVhbiBvbmdvaW5nID0gbU9uZ29pbmdJdGVtcy5nZXRDaGlsZENvdW50KCkgIT0gMDsKLSAgICAgICAgYm9vbGVhbiBsYXRlc3QgPSBtTGF0ZXN0SXRlbXMuZ2V0Q2hpbGRDb3VudCgpICE9IDA7Ci0KLSAgICAgICAgaWYgKG1Ob3RpZmljYXRpb25EYXRhLmhhc0NsZWFyYWJsZUl0ZW1zKCkpIHsKLSAgICAgICAgICAgIG1DbGVhckJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtQ2xlYXJCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtT25nb2luZ1RpdGxlLnNldFZpc2liaWxpdHkob25nb2luZyA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7Ci0gICAgICAgIG1MYXRlc3RUaXRsZS5zZXRWaXNpYmlsaXR5KGxhdGVzdCA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7Ci0KLSAgICAgICAgaWYgKG9uZ29pbmcgfHwgbGF0ZXN0KSB7Ci0gICAgICAgICAgICBtTm9Ob3RpZmljYXRpb25zVGl0bGUuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbU5vTm90aWZpY2F0aW9uc1RpdGxlLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBtYWtlRXhwYW5kZWRWaXNpYmxlKCkgewotICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgIk1ha2UgZXhwYW5kZWQgdmlzaWJsZTogZXhwYW5kZWQgdmlzaWJsZT0iICsgbUV4cGFuZGVkVmlzaWJsZSk7Ci0gICAgICAgIGlmIChtRXhwYW5kZWRWaXNpYmxlKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbUV4cGFuZGVkVmlzaWJsZSA9IHRydWU7Ci0gICAgICAgIHBhbmVsU2xpZ2h0bHlWaXNpYmxlKHRydWUpOwotICAgICAgICAKLSAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKEVYUEFOREVEX0xFQVZFX0FMT05FKTsKLSAgICAgICAgbUV4cGFuZGVkUGFyYW1zLmZsYWdzICY9IH5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEU7Ci0gICAgICAgIG1FeHBhbmRlZFBhcmFtcy5mbGFncyB8PSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU07Ci0gICAgICAgIG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5zZXRBdHRyaWJ1dGVzKG1FeHBhbmRlZFBhcmFtcyk7Ci0gICAgICAgIG1FeHBhbmRlZFZpZXcucmVxdWVzdEZvY3VzKFZpZXcuRk9DVVNfRk9SV0FSRCk7Ci0gICAgICAgIG1UcmFja2luZ1ZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFtVGlja2luZykgewotICAgICAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KHRydWUsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX2luKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIGFuaW1hdGVFeHBhbmQoKSB7Ci0gICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiQW5pbWF0ZSBleHBhbmQ6IGV4cGFuZGVkPSIgKyBtRXhwYW5kZWQpOwotICAgICAgICBpZiAoKG1EaXNhYmxlZCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKLSAgICAgICAgICAgIHJldHVybiA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1FeHBhbmRlZCkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgcHJlcGFyZVRyYWNraW5nKDAsIHRydWUpOwotICAgICAgICBwZXJmb3JtRmxpbmcoMCwgMjAwMC4wZiwgdHJ1ZSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgYW5pbWF0ZUNvbGxhcHNlKCkgewotICAgICAgICBpZiAoU1BFVykgewotICAgICAgICAgICAgU2xvZy5kKFRBRywgImFuaW1hdGVDb2xsYXBzZSgpOiBtRXhwYW5kZWQ9IiArIG1FeHBhbmRlZAotICAgICAgICAgICAgICAgICAgICArICIgbUV4cGFuZGVkVmlzaWJsZT0iICsgbUV4cGFuZGVkVmlzaWJsZQotICAgICAgICAgICAgICAgICAgICArICIgbUV4cGFuZGVkPSIgKyBtRXhwYW5kZWQKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1BbmltYXRpbmc9IiArIG1BbmltYXRpbmcKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1BbmltWT0iICsgbUFuaW1ZCi0gICAgICAgICAgICAgICAgICAgICsgIiBtQW5pbVZlbD0iICsgbUFuaW1WZWwpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIW1FeHBhbmRlZFZpc2libGUpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGludCB5OwotICAgICAgICBpZiAobUFuaW1hdGluZykgewotICAgICAgICAgICAgeSA9IChpbnQpbUFuaW1ZOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgeSA9IG1EaXNwbGF5LmdldEhlaWdodCgpLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gTGV0IHRoZSBmbGluZyB0aGluayB0aGF0IHdlJ3JlIG9wZW4gc28gaXQgZ29lcyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uCi0gICAgICAgIC8vIGFuZCBkb2Vzbid0IHRyeSB0byByZS1vcGVuIHRoZSB3aW5kb3dzaGFkZS4KLSAgICAgICAgbUV4cGFuZGVkID0gdHJ1ZTsKLSAgICAgICAgcHJlcGFyZVRyYWNraW5nKHksIGZhbHNlKTsKLSAgICAgICAgcGVyZm9ybUZsaW5nKHksIC0yMDAwLjBmLCB0cnVlKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBwZXJmb3JtRXhwYW5kKCkgewotICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgInBlcmZvcm1FeHBhbmQ6IG1FeHBhbmRlZD0iICsgbUV4cGFuZGVkKTsKLSAgICAgICAgaWYgKChtRGlzYWJsZWQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtRXhwYW5kZWQpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEl0IHNlZW1zIHN0cmFuZ2UgdG8gc29tZXRpbWVzIG5vdCBleHBhbmQuLi4KLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25EYXRhKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1Ob3RpZmljYXRpb25EYXRhLnNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1FeHBhbmRlZCA9IHRydWU7Ci0gICAgICAgIG1ha2VFeHBhbmRlZFZpc2libGUoKTsKLSAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKEVYUEFOREVEX0ZVTExfT1BFTik7Ci0KLSAgICAgICAgaWYgKGZhbHNlKSBwb3N0U3RhcnRUcmFjaW5nKCk7Ci0gICAgfQotCi0gICAgdm9pZCBwZXJmb3JtQ29sbGFwc2UoKSB7Ci0gICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAicGVyZm9ybUNvbGxhcHNlOiBtRXhwYW5kZWQ9IiArIG1FeHBhbmRlZAotICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWRWaXNpYmxlPSIgKyBtRXhwYW5kZWRWaXNpYmxlKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1FeHBhbmRlZFZpc2libGUgPSBmYWxzZTsKLSAgICAgICAgcGFuZWxTbGlnaHRseVZpc2libGUoZmFsc2UpOwotICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFOwotICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgJj0gfldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTTsKLSAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobUV4cGFuZGVkUGFyYW1zKTsKLSAgICAgICAgbVRyYWNraW5nVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0KLSAgICAgICAgaWYgKChtRGlzYWJsZWQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSA9PSAwKSB7Ci0gICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFtRXhwYW5kZWQpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtRXhwYW5kZWQgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICB2b2lkIGRvQW5pbWF0aW9uKCkgewotICAgICAgICBpZiAobUFuaW1hdGluZykgewotICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJkb0FuaW1hdGlvbiIpOwotICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJkb0FuaW1hdGlvbiBiZWZvcmUgbUFuaW1ZPSIgKyBtQW5pbVkpOwotICAgICAgICAgICAgaW5jcmVtZW50QW5pbSgpOwotICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJkb0FuaW1hdGlvbiBhZnRlciAgbUFuaW1ZPSIgKyBtQW5pbVkpOwotICAgICAgICAgICAgaWYgKG1BbmltWSA+PSBtRGlzcGxheS5nZXRIZWlnaHQoKS0xKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJBbmltYXRpb24gY29tcGxldGVkIHRvIGV4cGFuZGVkIHN0YXRlLiIpOwotICAgICAgICAgICAgICAgIG1BbmltYXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoRVhQQU5ERURfRlVMTF9PUEVOKTsKLSAgICAgICAgICAgICAgICBwZXJmb3JtRXhwYW5kKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtQW5pbVkgPCBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiQW5pbWF0aW9uIGNvbXBsZXRlZCB0byBjb2xsYXBzZWQgc3RhdGUuIik7Ci0gICAgICAgICAgICAgICAgbUFuaW1hdGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcygwKTsKLSAgICAgICAgICAgICAgICBwZXJmb3JtQ29sbGFwc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcygoaW50KW1BbmltWSk7Ci0gICAgICAgICAgICAgICAgbUN1ckFuaW1hdGlvblRpbWUgKz0gQU5JTV9GUkFNRV9EVVJBVElPTjsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZUF0VGltZShtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19BTklNQVRFKSwgbUN1ckFuaW1hdGlvblRpbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBzdG9wVHJhY2tpbmcoKSB7Ci0gICAgICAgIG1UcmFja2luZyA9IGZhbHNlOwotICAgICAgICBtVmVsb2NpdHlUcmFja2VyLnJlY3ljbGUoKTsKLSAgICAgICAgbVZlbG9jaXR5VHJhY2tlciA9IG51bGw7Ci0gICAgfQotCi0gICAgdm9pZCBpbmNyZW1lbnRBbmltKCkgewotICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICBmbG9hdCB0ID0gKChmbG9hdCkobm93IC0gbUFuaW1MYXN0VGltZSkpIC8gMTAwMDsgICAgICAgICAgICAvLyBtcyAtPiBzCi0gICAgICAgIGZpbmFsIGZsb2F0IHkgPSBtQW5pbVk7Ci0gICAgICAgIGZpbmFsIGZsb2F0IHYgPSBtQW5pbVZlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB4L3MKLSAgICAgICAgZmluYWwgZmxvYXQgYSA9IG1BbmltQWNjZWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHgvcy9zCi0gICAgICAgIG1BbmltWSA9IHkgKyAodip0KSArICgwLjVmKmEqdCp0KTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB4Ci0gICAgICAgIG1BbmltVmVsID0gdiArIChhKnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB4L3MKLSAgICAgICAgbUFuaW1MYXN0VGltZSA9IG5vdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbXMKLSAgICAgICAgLy9TbG9nLmQoVEFHLCAieT0iICsgeSArICIgdj0iICsgdiArICIgYT0iICsgYSArICIgdD0iICsgdCArICIgbUFuaW1ZPSIgKyBtQW5pbVkKLSAgICAgICAgLy8gICAgICAgICsgIiBtQW5pbUFjY2VsPSIgKyBtQW5pbUFjY2VsKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRvUmV2ZWFsQW5pbWF0aW9uKCkgewotICAgICAgICBmaW5hbCBpbnQgaCA9IG1DbG9zZVZpZXcuZ2V0SGVpZ2h0KCkgKyBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKTsKLSAgICAgICAgaWYgKG1BbmltYXRpbmdSZXZlYWwgJiYgbUFuaW1hdGluZyAmJiBtQW5pbVkgPCBoKSB7Ci0gICAgICAgICAgICBpbmNyZW1lbnRBbmltKCk7Ci0gICAgICAgICAgICBpZiAobUFuaW1ZID49IGgpIHsKLSAgICAgICAgICAgICAgICBtQW5pbVkgPSBoOwotICAgICAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcygoaW50KW1BbmltWSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcygoaW50KW1BbmltWSk7Ci0gICAgICAgICAgICAgICAgbUN1ckFuaW1hdGlvblRpbWUgKz0gQU5JTV9GUkFNRV9EVVJBVElPTjsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZUF0VGltZShtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19BTklNQVRFX1JFVkVBTCksCi0gICAgICAgICAgICAgICAgICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgdm9pZCBwcmVwYXJlVHJhY2tpbmcoaW50IHksIGJvb2xlYW4gb3BlbmluZykgewotICAgICAgICBtVHJhY2tpbmcgPSB0cnVlOwotICAgICAgICBtVmVsb2NpdHlUcmFja2VyID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOwotICAgICAgICBpZiAob3BlbmluZykgewotICAgICAgICAgICAgbUFuaW1BY2NlbCA9IDIwMDAuMGY7Ci0gICAgICAgICAgICBtQW5pbVZlbCA9IDIwMDsKLSAgICAgICAgICAgIG1BbmltWSA9IG1TdGF0dXNCYXJWaWV3LmdldEhlaWdodCgpOwotICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKChpbnQpbUFuaW1ZKTsKLSAgICAgICAgICAgIG1BbmltYXRpbmcgPSB0cnVlOwotICAgICAgICAgICAgbUFuaW1hdGluZ1JldmVhbCA9IHRydWU7Ci0gICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURSk7Ci0gICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURV9SRVZFQUwpOwotICAgICAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgIG1BbmltTGFzdFRpbWUgPSBub3c7Ci0gICAgICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSA9IG5vdyArIEFOSU1fRlJBTUVfRFVSQVRJT047Ci0gICAgICAgICAgICBtQW5pbWF0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlQXRUaW1lKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0FOSU1BVEVfUkVWRUFMKSwKLSAgICAgICAgICAgICAgICAgICAgbUN1ckFuaW1hdGlvblRpbWUpOwotICAgICAgICAgICAgbWFrZUV4cGFuZGVkVmlzaWJsZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gaXQncyBvcGVuLCBjbG9zZSBpdD8KLSAgICAgICAgICAgIGlmIChtQW5pbWF0aW5nKSB7Ci0gICAgICAgICAgICAgICAgbUFuaW1hdGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19BTklNQVRFKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1Bvcyh5ICsgbVZpZXdEZWx0YSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgdm9pZCBwZXJmb3JtRmxpbmcoaW50IHksIGZsb2F0IHZlbCwgYm9vbGVhbiBhbHdheXMpIHsKLSAgICAgICAgbUFuaW1hdGluZ1JldmVhbCA9IGZhbHNlOwotICAgICAgICBtRGlzcGxheUhlaWdodCA9IG1EaXNwbGF5LmdldEhlaWdodCgpOwotCi0gICAgICAgIG1BbmltWSA9IHk7Ci0gICAgICAgIG1BbmltVmVsID0gdmVsOwotCi0gICAgICAgIC8vU2xvZy5kKFRBRywgInN0YXJ0aW5nIHdpdGggbUFuaW1ZPSIgKyBtQW5pbVkgKyAiIG1BbmltVmVsPSIgKyBtQW5pbVZlbCk7Ci0KLSAgICAgICAgaWYgKG1FeHBhbmRlZCkgewotICAgICAgICAgICAgaWYgKCFhbHdheXMgJiYgKAotICAgICAgICAgICAgICAgICAgICB2ZWwgPiAyMDAuMGYKLSAgICAgICAgICAgICAgICAgICAgfHwgKHkgPiAobURpc3BsYXlIZWlnaHQtMjUpICYmIHZlbCA+IC0yMDAuMGYpKSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBleHBhbmRlZCwgYnV0IHRoZXkgZGlkbid0IG1vdmUgc3VmZmljaWVudGx5IHRvIGNhdXNlCi0gICAgICAgICAgICAgICAgLy8gdXMgdG8gcmV0cmFjdC4gIEFuaW1hdGUgYmFjayB0byB0aGUgZXhwYW5kZWQgcG9zaXRpb24uCi0gICAgICAgICAgICAgICAgbUFuaW1BY2NlbCA9IDIwMDAuMGY7Ci0gICAgICAgICAgICAgICAgaWYgKHZlbCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbUFuaW1WZWwgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBleHBhbmRlZCBhbmQgYXJlIG5vdyBnb2luZyB0byBhbmltYXRlIGF3YXkuCi0gICAgICAgICAgICAgICAgbUFuaW1BY2NlbCA9IC0yMDAwLjBmOwotICAgICAgICAgICAgICAgIGlmICh2ZWwgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1BbmltVmVsID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoYWx3YXlzIHx8ICgKLSAgICAgICAgICAgICAgICAgICAgdmVsID4gMjAwLjBmCi0gICAgICAgICAgICAgICAgICAgIHx8ICh5ID4gKG1EaXNwbGF5SGVpZ2h0LzIpICYmIHZlbCA+IC0yMDAuMGYpKSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBjb2xsYXBzZWQsIGFuZCB0aGV5IG1vdmVkIGVub3VnaCB0byBhbGxvdyB1cyB0bwotICAgICAgICAgICAgICAgIC8vIGV4cGFuZC4gIEFuaW1hdGUgaW4gdGhlIG5vdGlmaWNhdGlvbnMuCi0gICAgICAgICAgICAgICAgbUFuaW1BY2NlbCA9IDIwMDAuMGY7Ci0gICAgICAgICAgICAgICAgaWYgKHZlbCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbUFuaW1WZWwgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBjb2xsYXBzZWQsIGJ1dCB0aGV5IGRpZG4ndCBtb3ZlIHN1ZmZpY2llbnRseSB0byBjYXVzZQotICAgICAgICAgICAgICAgIC8vIHVzIHRvIHJldHJhY3QuICBBbmltYXRlIGJhY2sgdG8gdGhlIGNvbGxhcHNlZCBwb3NpdGlvbi4KLSAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gLTIwMDAuMGY7Ci0gICAgICAgICAgICAgICAgaWYgKHZlbCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbUFuaW1WZWwgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvL1Nsb2cuZChUQUcsICJtQW5pbVk9IiArIG1BbmltWSArICIgbUFuaW1WZWw9IiArIG1BbmltVmVsCi0gICAgICAgIC8vICAgICAgICArICIgbUFuaW1BY2NlbD0iICsgbUFuaW1BY2NlbCk7Ci0KLSAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgbUFuaW1MYXN0VGltZSA9IG5vdzsKLSAgICAgICAgbUN1ckFuaW1hdGlvblRpbWUgPSBub3cgKyBBTklNX0ZSQU1FX0RVUkFUSU9OOwotICAgICAgICBtQW5pbWF0aW5nID0gdHJ1ZTsKLSAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoTVNHX0FOSU1BVEUpOwotICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURV9SRVZFQUwpOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZUF0VGltZShtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19BTklNQVRFKSwgbUN1ckFuaW1hdGlvblRpbWUpOwotICAgICAgICBzdG9wVHJhY2tpbmcoKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbGVhbiBpbnRlcmNlcHRUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGlmIChTUEVXKSB7Ci0gICAgICAgICAgICBTbG9nLmQoVEFHLCAiVG91Y2g6IHJhd1k9IiArIGV2ZW50LmdldFJhd1koKSArICIgZXZlbnQ9IiArIGV2ZW50ICsgIiBtRGlzYWJsZWQ9IgotICAgICAgICAgICAgICAgICsgbURpc2FibGVkKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgobURpc2FibGVkICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCkgIT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmaW5hbCBpbnQgc3RhdHVzQmFyU2l6ZSA9IG1TdGF0dXNCYXJWaWV3LmdldEhlaWdodCgpOwotICAgICAgICBmaW5hbCBpbnQgaGl0U2l6ZSA9IHN0YXR1c0JhclNpemUqMjsKLSAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgeSA9IChpbnQpZXZlbnQuZ2V0UmF3WSgpOwotCi0gICAgICAgICAgICBpZiAoIW1FeHBhbmRlZCkgewotICAgICAgICAgICAgICAgIG1WaWV3RGVsdGEgPSBzdGF0dXNCYXJTaXplIC0geTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbVRyYWNraW5nVmlldy5nZXRMb2NhdGlvbk9uU2NyZWVuKG1BYnNQb3MpOwotICAgICAgICAgICAgICAgIG1WaWV3RGVsdGEgPSBtQWJzUG9zWzFdICsgbVRyYWNraW5nVmlldy5nZXRIZWlnaHQoKSAtIHk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKCFtRXhwYW5kZWQgJiYgeSA8IGhpdFNpemUpIHx8Ci0gICAgICAgICAgICAgICAgICAgIChtRXhwYW5kZWQgJiYgeSA+IChtRGlzcGxheS5nZXRIZWlnaHQoKS1oaXRTaXplKSkpIHsKLQotICAgICAgICAgICAgICAgIC8vIFdlIGRyb3AgZXZlbnRzIGF0IHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4gdG8gbWFrZSB0aGUgd2luZG93c2hhZGUgY29tZQotICAgICAgICAgICAgICAgIC8vIGRvd24gYnkgYWNjaWRlbnQgbGVzcywgZXNwZWNpYWxseSB3aGVuIHB1c2hpbmcgb3BlbiBhIGRldmljZSB3aXRoIGEga2V5Ym9hcmQKLSAgICAgICAgICAgICAgICAvLyB0aGF0IHJvdGF0ZXMgKGxpa2UgZzEgYW5kIGRyb2lkKQotICAgICAgICAgICAgICAgIGludCB4ID0gKGludClldmVudC5nZXRSYXdYKCk7Ci0gICAgICAgICAgICAgICAgZmluYWwgaW50IGVkZ2VCb3JkZXIgPSBtRWRnZUJvcmRlcjsKLSAgICAgICAgICAgICAgICBpZiAoeCA+PSBlZGdlQm9yZGVyICYmIHggPCBtRGlzcGxheS5nZXRXaWR0aCgpIC0gZWRnZUJvcmRlcikgewotICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVHJhY2tpbmcoeSwgIW1FeHBhbmRlZCk7Ly8gb3BlbmluZyBpZiB3ZSdyZSBub3QgYWxyZWFkeSBmdWxseSB2aXNpYmxlCi0gICAgICAgICAgICAgICAgICAgIG1WZWxvY2l0eVRyYWNrZXIuYWRkTW92ZW1lbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChtVHJhY2tpbmcpIHsKLSAgICAgICAgICAgIG1WZWxvY2l0eVRyYWNrZXIuYWRkTW92ZW1lbnQoZXZlbnQpOwotICAgICAgICAgICAgZmluYWwgaW50IG1pblkgPSBzdGF0dXNCYXJTaXplICsgbUNsb3NlVmlldy5nZXRIZWlnaHQoKTsKLSAgICAgICAgICAgIGlmIChldmVudC5nZXRBY3Rpb24oKSA9PSBNb3Rpb25FdmVudC5BQ1RJT05fTU9WRSkgewotICAgICAgICAgICAgICAgIGludCB5ID0gKGludClldmVudC5nZXRSYXdZKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1BbmltYXRpbmdSZXZlYWwgJiYgeSA8IG1pblkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gbm90aGluZwotICAgICAgICAgICAgICAgIH0gZWxzZSAgewotICAgICAgICAgICAgICAgICAgICBtQW5pbWF0aW5nUmV2ZWFsID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1Bvcyh5ICsgbVZpZXdEZWx0YSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5nZXRBY3Rpb24oKSA9PSBNb3Rpb25FdmVudC5BQ1RJT05fVVApIHsKLSAgICAgICAgICAgICAgICBtVmVsb2NpdHlUcmFja2VyLmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMTAwMCk7Ci0KLSAgICAgICAgICAgICAgICBmbG9hdCB5VmVsID0gbVZlbG9jaXR5VHJhY2tlci5nZXRZVmVsb2NpdHkoKTsKLSAgICAgICAgICAgICAgICBib29sZWFuIG5lZ2F0aXZlID0geVZlbCA8IDA7Ci0KLSAgICAgICAgICAgICAgICBmbG9hdCB4VmVsID0gbVZlbG9jaXR5VHJhY2tlci5nZXRYVmVsb2NpdHkoKTsKLSAgICAgICAgICAgICAgICBpZiAoeFZlbCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgeFZlbCA9IC14VmVsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoeFZlbCA+IDE1MC4wZikgewotICAgICAgICAgICAgICAgICAgICB4VmVsID0gMTUwLjBmOyAvLyBsaW1pdCBob3cgbXVjaCB3ZSBjYXJlIGFib3V0IHRoZSB4IGF4aXMKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmbG9hdCB2ZWwgPSAoZmxvYXQpTWF0aC5oeXBvdCh5VmVsLCB4VmVsKTsKLSAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmVsID0gLXZlbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcGVyZm9ybUZsaW5nKChpbnQpZXZlbnQuZ2V0UmF3WSgpLCB2ZWwsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGNsYXNzIExhdW5jaGVyIGltcGxlbWVudHMgVmlldy5PbkNsaWNrTGlzdGVuZXIgewotICAgICAgICBwcml2YXRlIFBlbmRpbmdJbnRlbnQgbUludGVudDsKLSAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbVBrZzsKLSAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbVRhZzsKLSAgICAgICAgcHJpdmF0ZSBpbnQgbUlkOwotCi0gICAgICAgIExhdW5jaGVyKFBlbmRpbmdJbnRlbnQgaW50ZW50LCBTdHJpbmcgcGtnLCBTdHJpbmcgdGFnLCBpbnQgaWQpIHsKLSAgICAgICAgICAgIG1JbnRlbnQgPSBpbnRlbnQ7Ci0gICAgICAgICAgICBtUGtnID0gcGtnOwotICAgICAgICAgICAgbVRhZyA9IHRhZzsKLSAgICAgICAgICAgIG1JZCA9IGlkOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGludGVudCB3ZSBhcmUgc2VuZGluZyBpcyBmb3IgdGhlIGFwcGxpY2F0aW9uLCB3aGljaAotICAgICAgICAgICAgICAgIC8vIHdvbid0IGhhdmUgcGVybWlzc2lvbiB0byBpbW1lZGlhdGVseSBzdGFydCBhbiBhY3Rpdml0eSBhZnRlcgotICAgICAgICAgICAgICAgIC8vIHRoZSB1c2VyIHN3aXRjaGVzIHRvIGhvbWUuICBXZSBrbm93IGl0IGlzIHNhZmUgdG8gZG8gYXQgdGhpcwotICAgICAgICAgICAgICAgIC8vIHBvaW50LCBzbyBtYWtlIHN1cmUgbmV3IGFjdGl2aXR5IHN3aXRjaGVzIGFyZSBub3cgYWxsb3dlZC4KLSAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnJlc3VtZUFwcFN3aXRjaGVzKCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50W10gcG9zID0gbmV3IGludFsyXTsKLSAgICAgICAgICAgIHYuZ2V0TG9jYXRpb25PblNjcmVlbihwb3MpOwotICAgICAgICAgICAgSW50ZW50IG92ZXJsYXkgPSBuZXcgSW50ZW50KCk7Ci0gICAgICAgICAgICBvdmVybGF5LnNldFNvdXJjZUJvdW5kcygKLSAgICAgICAgICAgICAgICAgICAgbmV3IFJlY3QocG9zWzBdLCBwb3NbMV0sIHBvc1swXSt2LmdldFdpZHRoKCksIHBvc1sxXSt2LmdldEhlaWdodCgpKSk7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIG1JbnRlbnQuc2VuZChtQ29udGV4dCwgMCwgb3ZlcmxheSk7Ci0gICAgICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkNhbGxiYWNrcy5vbk5vdGlmaWNhdGlvbkNsaWNrKG1Qa2csIG1UYWcsIG1JZCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAvLyB0aGUgc3RhY2sgdHJhY2UgaXNuJ3QgdmVyeSBoZWxwZnVsIGhlcmUuICBKdXN0IGxvZyB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UuCi0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlNlbmRpbmcgY29udGVudEludGVudCBmYWlsZWQ6ICIgKyBlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlYWN0aXZhdGUoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgY2xhc3MgTXlUaWNrZXIgZXh0ZW5kcyBUaWNrZXIgewotICAgICAgICBNeVRpY2tlcihDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclZpZXcgc2IpIHsKLSAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHNiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHZvaWQgdGlja2VyU3RhcnRpbmcoKSB7Ci0gICAgICAgICAgICBtVGlja2luZyA9IHRydWU7Ci0gICAgICAgICAgICBtSWNvbnMuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICAgICAgbVRpY2tlclZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgbVRpY2tlclZpZXcuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLnB1c2hfdXBfaW4sIG51bGwpKTsKLSAgICAgICAgICAgIG1JY29ucy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF91cF9vdXQsIG51bGwpKTsKLSAgICAgICAgICAgIGlmIChtRXhwYW5kZWRWaXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF91cF9vdXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHZvaWQgdGlja2VyRG9uZSgpIHsKLSAgICAgICAgICAgIG1JY29ucy5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICBtVGlja2VyVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICBtSWNvbnMuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLnB1c2hfZG93bl9pbiwgbnVsbCkpOwotICAgICAgICAgICAgbVRpY2tlclZpZXcuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLnB1c2hfZG93bl9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBtVGlja2luZ0RvbmVMaXN0ZW5lcikpOwotICAgICAgICAgICAgaWYgKG1FeHBhbmRlZFZpc2libGUpIHsKLSAgICAgICAgICAgICAgICBzZXREYXRlVmlld1Zpc2liaWxpdHkodHJ1ZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLnB1c2hfZG93bl9pbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHRpY2tlckhhbHRpbmcoKSB7Ci0gICAgICAgICAgICBtSWNvbnMuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgbVRpY2tlclZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICAgICAgbUljb25zLnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX2luLCBudWxsKSk7Ci0gICAgICAgICAgICBtVGlja2VyVmlldy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBtVGlja2luZ0RvbmVMaXN0ZW5lcikpOwotICAgICAgICAgICAgaWYgKG1FeHBhbmRlZFZpc2libGUpIHsKLSAgICAgICAgICAgICAgICBzZXREYXRlVmlld1Zpc2liaWxpdHkodHJ1ZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfaW4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgQW5pbWF0aW9uLkFuaW1hdGlvbkxpc3RlbmVyIG1UaWNraW5nRG9uZUxpc3RlbmVyID0gbmV3IEFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lcigpIHs7Ci0gICAgICAgIHB1YmxpYyB2b2lkIG9uQW5pbWF0aW9uRW5kKEFuaW1hdGlvbiBhbmltYXRpb24pIHsKLSAgICAgICAgICAgIG1UaWNraW5nID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcHVibGljIHZvaWQgb25BbmltYXRpb25SZXBlYXQoQW5pbWF0aW9uIGFuaW1hdGlvbikgewotICAgICAgICB9Ci0gICAgICAgIHB1YmxpYyB2b2lkIG9uQW5pbWF0aW9uU3RhcnQoQW5pbWF0aW9uIGFuaW1hdGlvbikgewotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHByaXZhdGUgQW5pbWF0aW9uIGxvYWRBbmltKGludCBpZCwgQW5pbWF0aW9uLkFuaW1hdGlvbkxpc3RlbmVyIGxpc3RlbmVyKSB7Ci0gICAgICAgIEFuaW1hdGlvbiBhbmltID0gQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihtQ29udGV4dCwgaWQpOwotICAgICAgICBpZiAobGlzdGVuZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgYW5pbS5zZXRBbmltYXRpb25MaXN0ZW5lcihsaXN0ZW5lcik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFuaW07Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyB2aWV3SW5mbyhWaWV3IHYpIHsKLSAgICAgICAgcmV0dXJuICIoIiArIHYuZ2V0TGVmdCgpICsgIiwiICsgdi5nZXRUb3AoKSArICIpKCIgKyB2LmdldFJpZ2h0KCkgKyAiLCIgKyB2LmdldEJvdHRvbSgpCi0gICAgICAgICAgICAgICAgKyAiICIgKyB2LmdldFdpZHRoKCkgKyAieCIgKyB2LmdldEhlaWdodCgpICsgIikiOwotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIGR1bXAoRmlsZURlc2NyaXB0b3IgZmQsIFByaW50V3JpdGVyIHB3LCBTdHJpbmdbXSBhcmdzKSB7Ci0gICAgICAgIGlmIChtQ29udGV4dC5jaGVja0NhbGxpbmdPclNlbGZQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5EVU1QKQotICAgICAgICAgICAgICAgICE9IFBhY2thZ2VNYW5hZ2VyLlBFUk1JU1NJT05fR1JBTlRFRCkgewotICAgICAgICAgICAgcHcucHJpbnRsbigiUGVybWlzc2lvbiBEZW5pYWw6IGNhbid0IGR1bXAgU3RhdHVzQmFyIGZyb20gZnJvbSBwaWQ9IgotICAgICAgICAgICAgICAgICAgICArIEJpbmRlci5nZXRDYWxsaW5nUGlkKCkKLSAgICAgICAgICAgICAgICAgICAgKyAiLCB1aWQ9IiArIEJpbmRlci5nZXRDYWxsaW5nVWlkKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzeW5jaHJvbml6ZWQgKG1RdWV1ZUxvY2spIHsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIkN1cnJlbnQgU3RhdHVzIEJhciBzdGF0ZToiKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkPSIgKyBtRXhwYW5kZWQKLSAgICAgICAgICAgICAgICAgICAgKyAiLCBtRXhwYW5kZWRWaXNpYmxlPSIgKyBtRXhwYW5kZWRWaXNpYmxlKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRpY2tpbmc9IiArIG1UaWNraW5nKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nPSIgKyBtVHJhY2tpbmcpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtQW5pbWF0aW5nPSIgKyBtQW5pbWF0aW5nCi0gICAgICAgICAgICAgICAgICAgICsgIiwgbUFuaW1ZPSIgKyBtQW5pbVkgKyAiLCBtQW5pbVZlbD0iICsgbUFuaW1WZWwKLSAgICAgICAgICAgICAgICAgICAgKyAiLCBtQW5pbUFjY2VsPSIgKyBtQW5pbUFjY2VsKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUN1ckFuaW1hdGlvblRpbWU9IiArIG1DdXJBbmltYXRpb25UaW1lCi0gICAgICAgICAgICAgICAgICAgICsgIiBtQW5pbUxhc3RUaW1lPSIgKyBtQW5pbUxhc3RUaW1lKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbURpc3BsYXlIZWlnaHQ9IiArIG1EaXNwbGF5SGVpZ2h0Ci0gICAgICAgICAgICAgICAgICAgICsgIiBtQW5pbWF0aW5nUmV2ZWFsPSIgKyBtQW5pbWF0aW5nUmV2ZWFsCi0gICAgICAgICAgICAgICAgICAgICsgIiBtVmlld0RlbHRhPSIgKyBtVmlld0RlbHRhKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbURpc3BsYXlIZWlnaHQ9IiArIG1EaXNwbGF5SGVpZ2h0KTsKLSAgICAgICAgICAgIGZpbmFsIGludCBOID0gbVF1ZXVlLnNpemUoKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVF1ZXVlLnNpemU9IiArIE4pOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgICAgIFBlbmRpbmdPcCBvcCA9IG1RdWV1ZS5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgIFsiICsgaSArICJdIGtleT0iICsgb3Aua2V5ICsgIiBjb2RlPSIgKyBvcC5jb2RlICsgIiB2aXNpYmxlPSIKLSAgICAgICAgICAgICAgICAgICAgICAgICsgb3AudmlzaWJsZSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgICAgICAgICBpY29uRGF0YT0iICsgb3AuaWNvbkRhdGEpOwotICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgICAgICAgICAgbm90aWZpY2F0aW9uRGF0YT0iICsgb3Aubm90aWZpY2F0aW9uRGF0YSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1FeHBhbmRlZFBhcmFtczogIiArIG1FeHBhbmRlZFBhcmFtcyk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1FeHBhbmRlZFZpZXc6ICIgKyB2aWV3SW5mbyhtRXhwYW5kZWRWaWV3KSk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1FeHBhbmRlZERpYWxvZzogIiArIG1FeHBhbmRlZERpYWxvZyk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1UcmFja2luZ1BhcmFtczogIiArIG1UcmFja2luZ1BhcmFtcyk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1UcmFja2luZ1ZpZXc6ICIgKyB2aWV3SW5mbyhtVHJhY2tpbmdWaWV3KSk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1PbmdvaW5nVGl0bGU6ICIgKyB2aWV3SW5mbyhtT25nb2luZ1RpdGxlKSk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1PbmdvaW5nSXRlbXM6ICIgKyB2aWV3SW5mbyhtT25nb2luZ0l0ZW1zKSk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1MYXRlc3RUaXRsZTogIiArIHZpZXdJbmZvKG1MYXRlc3RUaXRsZSkpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtTGF0ZXN0SXRlbXM6ICIgKyB2aWV3SW5mbyhtTGF0ZXN0SXRlbXMpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbU5vTm90aWZpY2F0aW9uc1RpdGxlOiAiICsgdmlld0luZm8obU5vTm90aWZpY2F0aW9uc1RpdGxlKSk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1DbG9zZVZpZXc6ICIgKyB2aWV3SW5mbyhtQ2xvc2VWaWV3KSk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1UaWNrZXJWaWV3OiAiICsgdmlld0luZm8obVRpY2tlclZpZXcpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVNjcm9sbFZpZXc6ICIgKyB2aWV3SW5mbyhtU2Nyb2xsVmlldykKLSAgICAgICAgICAgICAgICAgICAgKyAiIHNjcm9sbCAiICsgbVNjcm9sbFZpZXcuZ2V0U2Nyb2xsWCgpICsgIiwiICsgbVNjcm9sbFZpZXcuZ2V0U2Nyb2xsWSgpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIm1Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQ6ICIgKyB2aWV3SW5mbyhtTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0KSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3luY2hyb25pemVkIChtSWNvbk1hcCkgewotICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtSWNvbk1hcC5zaXplKCk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1JY29uTWFwLnNpemU9IiArIE4pOwotICAgICAgICAgICAgU2V0PElCaW5kZXI+IGtleXMgPSBtSWNvbk1hcC5rZXlTZXQoKTsKLSAgICAgICAgICAgIGludCBpPTA7Ci0gICAgICAgICAgICBmb3IgKElCaW5kZXIga2V5OiBrZXlzKSB7Ci0gICAgICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gbUljb25NYXAuZ2V0KGtleSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgIFsiICsgaSArICJdIGtleT0iICsga2V5KTsKLSAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgICAgICAgICAgIGRhdGE9IiArIGljb24ubURhdGEpOwotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25EYXRhKSB7Ci0gICAgICAgICAgICBpbnQgTiA9IG1Ob3RpZmljYXRpb25EYXRhLm9uZ29pbmdDb3VudCgpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBvbmdvaW5nQ291bnQuc2l6ZT0iICsgTik7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4gPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRPbmdvaW5nKGkpOwotICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgICBbIiArIGkgKyAiXSBrZXk9IiArIG4ua2V5ICsgIiB2aWV3PSIgKyBuLnZpZXcpOwotICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgICAgICAgICAgZGF0YT0iICsgbi5kYXRhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIE4gPSBtTm90aWZpY2F0aW9uRGF0YS5sYXRlc3RDb3VudCgpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBvbmdvaW5nQ291bnQuc2l6ZT0iICsgTik7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4gPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRMYXRlc3QoaSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgIFsiICsgaSArICJdIGtleT0iICsgbi5rZXkgKyAiIHZpZXc9IiArIG4udmlldyk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgICAgICAgICBkYXRhPSIgKyBuLmRhdGEpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHN5bmNocm9uaXplZCAobURpc2FibGVSZWNvcmRzKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1EaXNhYmxlUmVjb3Jkcy5zaXplKCk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1EaXNhYmxlUmVjb3Jkcy5zaXplPSIgKyBOCi0gICAgICAgICAgICAgICAgICAgICsgIiBtRGlzYWJsZWQ9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyhtRGlzYWJsZWQpKTsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBEaXNhYmxlUmVjb3JkIHRvayA9IG1EaXNhYmxlUmVjb3Jkcy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgIFsiICsgaSArICJdIHdoYXQ9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyh0b2sud2hhdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHBrZz0iICsgdG9rLnBrZyArICIgdG9rZW49IiArIHRvay50b2tlbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgcHcucHJpbnRsbigic2VlIHRoZSBsb2djYXQgZm9yIGEgZHVtcCBvZiB0aGUgdmlld3Mgd2UgaGF2ZSBjcmVhdGVkLiIpOwotICAgICAgICAgICAgLy8gbXVzdCBoYXBwZW4gb24gdWkgdGhyZWFkCi0gICAgICAgICAgICBtSGFuZGxlci5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0JhclZpZXcuZ2V0TG9jYXRpb25PblNjcmVlbihtQWJzUG9zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJtU3RhdHVzQmFyVmlldzogLS0tLS0gKCIgKyBtQWJzUG9zWzBdICsgIiwiICsgbUFic1Bvc1sxXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIpICIgKyBtU3RhdHVzQmFyVmlldy5nZXRXaWR0aCgpICsgIngiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0JhclZpZXcuZGVidWcoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbUV4cGFuZGVkVmlldy5nZXRMb2NhdGlvbk9uU2NyZWVuKG1BYnNQb3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1FeHBhbmRlZFZpZXc6IC0tLS0tICgiICsgbUFic1Bvc1swXSArICIsIiArIG1BYnNQb3NbMV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSAiICsgbUV4cGFuZGVkVmlldy5nZXRXaWR0aCgpICsgIngiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbUV4cGFuZGVkVmlldy5nZXRIZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtRXhwYW5kZWRWaWV3LmRlYnVnKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1UcmFja2luZ1ZpZXcuZ2V0TG9jYXRpb25PblNjcmVlbihtQWJzUG9zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJtVHJhY2tpbmdWaWV3OiAtLS0tLSAoIiArIG1BYnNQb3NbMF0gKyAiLCIgKyBtQWJzUG9zWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIikgIiArIG1UcmFja2luZ1ZpZXcuZ2V0V2lkdGgoKSArICJ4IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG1UcmFja2luZ1ZpZXcuZ2V0SGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbVRyYWNraW5nVmlldy5kZWJ1ZygpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIG9uQmFyVmlld0F0dGFjaGVkKCkgewotICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBscDsKLSAgICAgICAgaW50IHBpeGVsRm9ybWF0OwotICAgICAgICBEcmF3YWJsZSBiZzsKLQotICAgICAgICAvLy8gLS0tLS0tLS0tLSBUcmFja2luZyBWaWV3IC0tLS0tLS0tLS0tLS0tCi0gICAgICAgIHBpeGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQuUkdCWF84ODg4OwotICAgICAgICBiZyA9IG1UcmFja2luZ1ZpZXcuZ2V0QmFja2dyb3VuZCgpOwotICAgICAgICBpZiAoYmcgIT0gbnVsbCkgewotICAgICAgICAgICAgcGl4ZWxGb3JtYXQgPSBiZy5nZXRPcGFjaXR5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBscCA9IG5ldyBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcygKLSAgICAgICAgICAgICAgICBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVCwKLSAgICAgICAgICAgICAgICBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVCwKLSAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NUQVRVU19CQVJfUEFORUwsCi0gICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5fU0NSRUVOCi0gICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9OT19MSU1JVFMKLSAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTSwKLSAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCk7Ci0vLyAgICAgICAgbHAudG9rZW4gPSBtU3RhdHVzQmFyVmlldy5nZXRXaW5kb3dUb2tlbigpOwotICAgICAgICBscC5ncmF2aXR5ID0gR3Jhdml0eS5UT1AgfCBHcmF2aXR5LkZJTExfSE9SSVpPTlRBTDsKLSAgICAgICAgbHAuc2V0VGl0bGUoIlRyYWNraW5nVmlldyIpOwotICAgICAgICBscC55ID0gbVRyYWNraW5nUG9zaXRpb247Ci0gICAgICAgIG1UcmFja2luZ1BhcmFtcyA9IGxwOwotCi0gICAgICAgIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKS5hZGRWaWV3KG1UcmFja2luZ1ZpZXcsIGxwKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9uVHJhY2tpbmdWaWV3QXR0YWNoZWQoKSB7Ci0gICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwOwotICAgICAgICBpbnQgcGl4ZWxGb3JtYXQ7Ci0gICAgICAgIERyYXdhYmxlIGJnOwotCi0gICAgICAgIC8vLyAtLS0tLS0tLS0tIEV4cGFuZGVkIFZpZXcgLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgcGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVDsKLQotICAgICAgICBmaW5hbCBpbnQgZGlzcGggPSBtRGlzcGxheS5nZXRIZWlnaHQoKTsKLSAgICAgICAgbHAgPSBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuZ2V0QXR0cmlidXRlcygpOwotICAgICAgICBscC53aWR0aCA9IFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5UOwotICAgICAgICBscC5oZWlnaHQgPSBnZXRFeHBhbmRlZEhlaWdodCgpOwotICAgICAgICBscC54ID0gMDsKLSAgICAgICAgbVRyYWNraW5nUG9zaXRpb24gPSBscC55ID0gLWRpc3BoOyAvLyBzdWZmaWNpZW50bHkgbGFyZ2UgbmVnYXRpdmUKLSAgICAgICAgbHAudHlwZSA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1RBVFVTX0JBUl9QQU5FTDsKLSAgICAgICAgbHAuZmxhZ3MgPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9JTl9TQ1JFRU4KLSAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX05PX0xJTUlUUwotICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfVE9VQ0hfTU9EQUwKLSAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRElUSEVSCi0gICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEU7Ci0gICAgICAgIGxwLmZvcm1hdCA9IHBpeGVsRm9ybWF0OwotICAgICAgICBscC5ncmF2aXR5ID0gR3Jhdml0eS5UT1AgfCBHcmF2aXR5LkZJTExfSE9SSVpPTlRBTDsKLSAgICAgICAgbHAuc2V0VGl0bGUoIlN0YXR1c0JhckV4cGFuZGVkIik7Ci0gICAgICAgIG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5zZXRBdHRyaWJ1dGVzKGxwKTsKLSAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEZvcm1hdChwaXhlbEZvcm1hdCk7Ci0gICAgICAgIG1FeHBhbmRlZFBhcmFtcyA9IGxwOwotCi0gICAgICAgIG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5yZXF1ZXN0RmVhdHVyZShXaW5kb3cuRkVBVFVSRV9OT19USVRMRSk7Ci0gICAgICAgIG1FeHBhbmRlZERpYWxvZy5zZXRDb250ZW50VmlldyhtRXhwYW5kZWRWaWV3LAotICAgICAgICAgICAgICAgIG5ldyBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zKFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5UKSk7Ci0gICAgICAgIG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5zZXRCYWNrZ3JvdW5kRHJhd2FibGUobnVsbCk7Ci0gICAgICAgIG1FeHBhbmRlZERpYWxvZy5zaG93KCk7Ci0gICAgICAgIEZyYW1lTGF5b3V0IGhhY2sgPSAoRnJhbWVMYXlvdXQpbUV4cGFuZGVkVmlldy5nZXRQYXJlbnQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldERhdGVWaWV3VmlzaWJpbGl0eShib29sZWFuIHZpc2libGUsIGludCBhbmltKSB7Ci0gICAgICAgIG1EYXRlVmlldy5zZXRVcGRhdGVzKHZpc2libGUpOwotICAgICAgICBtRGF0ZVZpZXcuc2V0VmlzaWJpbGl0eSh2aXNpYmxlID8gVmlldy5WSVNJQkxFIDogVmlldy5JTlZJU0lCTEUpOwotICAgICAgICBtRGF0ZVZpZXcuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oYW5pbSwgbnVsbCkpOwotICAgIH0KLQotICAgIHZvaWQgc2V0Tm90aWZpY2F0aW9uSWNvblZpc2liaWxpdHkoYm9vbGVhbiB2aXNpYmxlLCBpbnQgYW5pbSkgewotICAgICAgICBpbnQgb2xkID0gbU5vdGlmaWNhdGlvbkljb25zLmdldFZpc2liaWxpdHkoKTsKLSAgICAgICAgaW50IHYgPSB2aXNpYmxlID8gVmlldy5WSVNJQkxFIDogVmlldy5JTlZJU0lCTEU7Ci0gICAgICAgIGlmIChvbGQgIT0gdikgewotICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zLnNldFZpc2liaWxpdHkodik7Ci0gICAgICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oYW5pbSwgbnVsbCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoaW50IGV4cGFuZGVkUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKFNQRVcpIHsKLSAgICAgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVFeHBhbmRlZFZpZXdQb3MgYmVmb3JlIGV4cGFuZGVkUG9zaXRpb249IiArIGV4cGFuZGVkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgKyAiIG1UcmFja2luZ1BhcmFtcy55PSIgKyBtVHJhY2tpbmdQYXJhbXMueQotICAgICAgICAgICAgICAgICAgICArICIgbVRyYWNraW5nUG9zaXRpb249IiArIG1UcmFja2luZ1Bvc2l0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBoID0gbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCk7Ci0gICAgICAgIGludCBkaXNwaCA9IG1EaXNwbGF5LmdldEhlaWdodCgpOwotCi0gICAgICAgIC8vIElmIHRoZSBleHBhbmRlZCB2aWV3IGlzIG5vdCB2aXNpYmxlLCBtYWtlIHN1cmUgdGhleSdyZSBzdGlsbCBvZmYgc2NyZWVuLgotICAgICAgICAvLyBNYXliZSB0aGUgdmlldyB3YXMgcmVzaXplZC4KLSAgICAgICAgaWYgKCFtRXhwYW5kZWRWaXNpYmxlKSB7Ci0gICAgICAgICAgICBpZiAobVRyYWNraW5nVmlldyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbVRyYWNraW5nUG9zaXRpb24gPSAtZGlzcGg7Ci0gICAgICAgICAgICAgICAgaWYgKG1UcmFja2luZ1BhcmFtcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1UcmFja2luZ1BhcmFtcy55ID0gbVRyYWNraW5nUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKS51cGRhdGVWaWV3TGF5b3V0KG1UcmFja2luZ1ZpZXcsIG1UcmFja2luZ1BhcmFtcyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1FeHBhbmRlZFBhcmFtcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbUV4cGFuZGVkUGFyYW1zLnkgPSAtZGlzcGg7Ci0gICAgICAgICAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobUV4cGFuZGVkUGFyYW1zKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHRyYWNraW5nIHZpZXcuLi4KLSAgICAgICAgaW50IHBvczsKLSAgICAgICAgaWYgKGV4cGFuZGVkUG9zaXRpb24gPT0gRVhQQU5ERURfRlVMTF9PUEVOKSB7Ci0gICAgICAgICAgICBwb3MgPSBoOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGV4cGFuZGVkUG9zaXRpb24gPT0gRVhQQU5ERURfTEVBVkVfQUxPTkUpIHsKLSAgICAgICAgICAgIHBvcyA9IG1UcmFja2luZ1Bvc2l0aW9uOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGV4cGFuZGVkUG9zaXRpb24gPD0gZGlzcGgpIHsKLSAgICAgICAgICAgICAgICBwb3MgPSBleHBhbmRlZFBvc2l0aW9uOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwb3MgPSBkaXNwaDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcyAtPSBkaXNwaC1oOwotICAgICAgICB9Ci0gICAgICAgIG1UcmFja2luZ1Bvc2l0aW9uID0gbVRyYWNraW5nUGFyYW1zLnkgPSBwb3M7Ci0gICAgICAgIG1UcmFja2luZ1BhcmFtcy5oZWlnaHQgPSBkaXNwaC1oOwotICAgICAgICBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCkudXBkYXRlVmlld0xheW91dChtVHJhY2tpbmdWaWV3LCBtVHJhY2tpbmdQYXJhbXMpOwotCi0gICAgICAgIGlmIChtRXhwYW5kZWRQYXJhbXMgIT0gbnVsbCkgewotICAgICAgICAgICAgbUNsb3NlVmlldy5nZXRMb2NhdGlvbkluV2luZG93KG1Qb3NpdGlvblRtcCk7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgY2xvc2VQb3MgPSBtUG9zaXRpb25UbXBbMV07Ci0KLSAgICAgICAgICAgIG1FeHBhbmRlZENvbnRlbnRzLmdldExvY2F0aW9uSW5XaW5kb3cobVBvc2l0aW9uVG1wKTsKLSAgICAgICAgICAgIGZpbmFsIGludCBjb250ZW50c0JvdHRvbSA9IG1Qb3NpdGlvblRtcFsxXSArIG1FeHBhbmRlZENvbnRlbnRzLmdldEhlaWdodCgpOwotCi0gICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IHBvcyArIG1UcmFja2luZ1ZpZXcuZ2V0SGVpZ2h0KCkKLSAgICAgICAgICAgICAgICAgICAgLSAobVRyYWNraW5nUGFyYW1zLmhlaWdodC1jbG9zZVBvcykgLSBjb250ZW50c0JvdHRvbTsKLSAgICAgICAgICAgIGludCBtYXggPSBoOwotICAgICAgICAgICAgaWYgKG1FeHBhbmRlZFBhcmFtcy55ID4gbWF4KSB7Ci0gICAgICAgICAgICAgICAgbUV4cGFuZGVkUGFyYW1zLnkgPSBtYXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgbWluID0gbVRyYWNraW5nUG9zaXRpb247Ci0gICAgICAgICAgICBpZiAobUV4cGFuZGVkUGFyYW1zLnkgPCBtaW4pIHsKLSAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IG1pbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbGVhbiB2aXNpYmxlID0gKG1UcmFja2luZ1Bvc2l0aW9uICsgbVRyYWNraW5nVmlldy5nZXRIZWlnaHQoKSkgPiBoOwotICAgICAgICAgICAgaWYgKCF2aXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNvbnRlbnRzIGFyZW4ndCB2aXNpYmxlLCBtb3ZlIHRoZSBleHBhbmRlZCB2aWV3IHdheSBvZmYgc2NyZWVuCi0gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgd2luZG93IGl0c2VsZiBleHRlbmRzIGJlbG93IHRoZSBjb250ZW50IHZpZXcuCi0gICAgICAgICAgICAgICAgbUV4cGFuZGVkUGFyYW1zLnkgPSAtZGlzcGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwYW5lbFNsaWdodGx5VmlzaWJsZSh2aXNpYmxlKTsKLSAgICAgICAgICAgIG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5zZXRBdHRyaWJ1dGVzKG1FeHBhbmRlZFBhcmFtcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoU1BFVykgewotICAgICAgICAgICAgU2xvZy5kKFRBRywgInVwZGF0ZUV4cGFuZGVkVmlld1BvcyBhZnRlciAgZXhwYW5kZWRQb3NpdGlvbj0iICsgZXhwYW5kZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICArICIgbVRyYWNraW5nUGFyYW1zLnk9IiArIG1UcmFja2luZ1BhcmFtcy55Ci0gICAgICAgICAgICAgICAgICAgICsgIiBtVHJhY2tpbmdQb3NpdGlvbj0iICsgbVRyYWNraW5nUG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgKyAiIG1FeHBhbmRlZFBhcmFtcy55PSIgKyBtRXhwYW5kZWRQYXJhbXMueQotICAgICAgICAgICAgICAgICAgICArICIgbUV4cGFuZGVkUGFyYW1zLmhlaWdodD0iICsgbUV4cGFuZGVkUGFyYW1zLmhlaWdodCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnQgZ2V0RXhwYW5kZWRIZWlnaHQoKSB7Ci0gICAgICAgIHJldHVybiBtRGlzcGxheS5nZXRIZWlnaHQoKSAtIG1TdGF0dXNCYXJWaWV3LmdldEhlaWdodCgpIC0gbUNsb3NlVmlldy5nZXRIZWlnaHQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHVwZGF0ZUV4cGFuZGVkSGVpZ2h0KCkgewotICAgICAgICBpZiAobUV4cGFuZGVkVmlldyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMuaGVpZ2h0ID0gZ2V0RXhwYW5kZWRIZWlnaHQoKTsKLSAgICAgICAgICAgIG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5zZXRBdHRyaWJ1dGVzKG1FeHBhbmRlZFBhcmFtcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgTEVEcyBhcmUgdHVybmVkIG8pZmYgd2hlbiB0aGUgbm90aWZpY2F0aW9uIHBhbmVsIGlzIHNob3duLCBldmVuIGp1c3QgYSBsaXR0bGUgYml0LgotICAgICAqIFRoaXMgd2FzIGFkZGVkIGxhc3QtbWludXRlIGFuZCBpcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgd2F5IHRoZSByZXN0IG9mIHRoZSBub3RpZmljYXRpb25zCi0gICAgICogYXJlIGhhbmRsZWQsIGJlY2F1c2UgdGhlIG5vdGlmaWNhdGlvbiBpc24ndCByZWFsbHkgY2FuY2VsbGVkLiAgVGhlIGxpZ2h0cyBhcmUganVzdAotICAgICAqIHR1cm5lZCBvZmYuICBJZiBhbnkgb3RoZXIgbm90aWZpY2F0aW9ucyBoYXBwZW4sIHRoZSBsaWdodHMgd2lsbCB0dXJuIGJhY2sgb24uICBTdGV2ZSBzYXlzCi0gICAgICogdGhpcyBpcyB3aGF0IGhlIHdhbnRzLiAoc2VlIGJ1ZyAxMTMxNDYxKQotICAgICAqLwotICAgIHByaXZhdGUgYm9vbGVhbiBtUGFuZWxTbGlnaHRseVZpc2libGU7Ci0gICAgdm9pZCBwYW5lbFNsaWdodGx5VmlzaWJsZShib29sZWFuIHZpc2libGUpIHsKLSAgICAgICAgaWYgKG1QYW5lbFNsaWdodGx5VmlzaWJsZSAhPSB2aXNpYmxlKSB7Ci0gICAgICAgICAgICBtUGFuZWxTbGlnaHRseVZpc2libGUgPSB2aXNpYmxlOwotICAgICAgICAgICAgaWYgKHZpc2libGUpIHsKLSAgICAgICAgICAgICAgICAvLyB0ZWxsIHRoZSBub3RpZmljYXRpb24gbWFuYWdlciB0byB0dXJuIG9mZiB0aGUgbGlnaHRzLgotICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25DYWxsYmFja3Mub25QYW5lbFJldmVhbGVkKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHBlcmZvcm1EaXNhYmxlQWN0aW9ucyhpbnQgbmV0KSB7Ci0gICAgICAgIGludCBvbGQgPSBtRGlzYWJsZWQ7Ci0gICAgICAgIGludCBkaWZmID0gbmV0IF4gb2xkOwotICAgICAgICBtRGlzYWJsZWQgPSBuZXQ7Ci0KLSAgICAgICAgLy8gYWN0IGFjY29yZGluZ2x5Ci0gICAgICAgIGlmICgoZGlmZiAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKLSAgICAgICAgICAgIGlmICgobmV0ICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCkgIT0gMCkgewotICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJESVNBQkxFX0VYUEFORDogeWVzIik7Ci0gICAgICAgICAgICAgICAgYW5pbWF0ZUNvbGxhcHNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9JQ09OUykgIT0gMCkgewotICAgICAgICAgICAgaWYgKChuZXQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TOiB5ZXMiKTsKLSAgICAgICAgICAgICAgICBpZiAobVRpY2tpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOwotICAgICAgICAgICAgICAgICAgICBtVGlja2VyLmhhbHQoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eShmYWxzZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfb3V0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJESVNBQkxFX05PVElGSUNBVElPTl9JQ09OUzogbm8iKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1FeHBhbmRlZFZpc2libGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uSWNvblZpc2liaWxpdHkodHJ1ZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfaW4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICgoZGlmZiAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fVElDS0VSKSAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAobVRpY2tpbmcgJiYgKG5ldCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fVElDS0VSKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgbVRpY2tlci5oYWx0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIFZpZXcuT25DbGlja0xpc3RlbmVyIG1DbGVhckJ1dHRvbkxpc3RlbmVyID0gbmV3IFZpZXcuT25DbGlja0xpc3RlbmVyKCkgewotICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgewotICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkNhbGxiYWNrcy5vbkNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBhZGRQZW5kaW5nT3AoT1BfRVhQQU5ELCBudWxsLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgICAgIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoSW50ZW50LkFDVElPTl9DTE9TRV9TWVNURU1fRElBTE9HUy5lcXVhbHMoYWN0aW9uKQotICAgICAgICAgICAgICAgICAgICB8fCBJbnRlbnQuQUNUSU9OX1NDUkVFTl9PRkYuZXF1YWxzKGFjdGlvbikpIHsKLSAgICAgICAgICAgICAgICBkZWFjdGl2YXRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChUZWxlcGhvbnkuSW50ZW50cy5TUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTi5lcXVhbHMoYWN0aW9uKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZU5ldHdvcmtOYW1lKGludGVudC5nZXRCb29sZWFuRXh0cmEoVGVsZXBob255LkludGVudHMuRVhUUkFfU0hPV19TUE4sIGZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRTdHJpbmdFeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TUE4pLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldEJvb2xlYW5FeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TSE9XX1BMTU4sIGZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRTdHJpbmdFeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9QTE1OKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChJbnRlbnQuQUNUSU9OX0NPTkZJR1VSQVRJT05fQ0hBTkdFRC5lcXVhbHMoYWN0aW9uKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZVJlc291cmNlcygpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHZvaWQgdXBkYXRlTmV0d29ya05hbWUoYm9vbGVhbiBzaG93U3BuLCBTdHJpbmcgc3BuLCBib29sZWFuIHNob3dQbG1uLCBTdHJpbmcgcGxtbikgewotICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVOZXR3b3JrTmFtZSBzaG93U3BuPSIgKyBzaG93U3BuICsgIiBzcG49IiArIHNwbgotICAgICAgICAgICAgICAgICAgICArICIgc2hvd1BsbW49IiArIHNob3dQbG1uICsgIiBwbG1uPSIgKyBwbG1uKTsKLSAgICAgICAgfQotICAgICAgICBib29sZWFuIHNvbWV0aGluZyA9IGZhbHNlOwotICAgICAgICBpZiAoc2hvd1BsbW4pIHsKLSAgICAgICAgICAgIG1QbG1uTGFiZWwuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgaWYgKHBsbW4gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1QbG1uTGFiZWwuc2V0VGV4dChwbG1uKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbVBsbW5MYWJlbC5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fY2Fycmllcl9kZWZhdWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1QbG1uTGFiZWwuc2V0VGV4dCgiIik7Ci0gICAgICAgICAgICBtUGxtbkxhYmVsLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2hvd1NwbiAmJiBzcG4gIT0gbnVsbCkgewotICAgICAgICAgICAgbVNwbkxhYmVsLnNldFRleHQoc3BuKTsKLSAgICAgICAgICAgIG1TcG5MYWJlbC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICBzb21ldGhpbmcgPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbVNwbkxhYmVsLnNldFRleHQoIiIpOwotICAgICAgICAgICAgbVNwbkxhYmVsLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJlbG9hZCBzb21lIG9mIG91ciByZXNvdXJjZXMgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzLgotICAgICAqIAotICAgICAqIFdlIGRvbid0IHJlbG9hZCBldmVyeXRoaW5nIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyAtLSB3ZSBwcm9iYWJseQotICAgICAqIHNob3VsZCwgYnV0IGdldHRpbmcgdGhhdCBzbW9vdGggaXMgdG91Z2guICBTb21lZGF5IHdlJ2xsIGZpeCB0aGF0LiAgSW4gdGhlCi0gICAgICogbWVhbnRpbWUsIGp1c3QgdXBkYXRlIHRoZSB0aGluZ3MgdGhhdCB3ZSBrbm93IGNoYW5nZS4KLSAgICAgKi8KLSAgICB2b2lkIHVwZGF0ZVJlc291cmNlcygpIHsKLSAgICAgICAgUmVzb3VyY2VzIHJlcyA9IG1Db250ZXh0LmdldFJlc291cmNlcygpOwotCi0gICAgICAgIG1DbGVhckJ1dHRvbi5zZXRUZXh0KG1Db250ZXh0LmdldFRleHQoUi5zdHJpbmcuc3RhdHVzX2Jhcl9jbGVhcl9hbGxfYnV0dG9uKSk7Ci0gICAgICAgIG1PbmdvaW5nVGl0bGUuc2V0VGV4dChtQ29udGV4dC5nZXRUZXh0KFIuc3RyaW5nLnN0YXR1c19iYXJfb25nb2luZ19ldmVudHNfdGl0bGUpKTsKLSAgICAgICAgbUxhdGVzdFRpdGxlLnNldFRleHQobUNvbnRleHQuZ2V0VGV4dChSLnN0cmluZy5zdGF0dXNfYmFyX2xhdGVzdF9ldmVudHNfdGl0bGUpKTsKLSAgICAgICAgbU5vTm90aWZpY2F0aW9uc1RpdGxlLnNldFRleHQobUNvbnRleHQuZ2V0VGV4dChSLnN0cmluZy5zdGF0dXNfYmFyX25vX25vdGlmaWNhdGlvbnNfdGl0bGUpKTsKLQotICAgICAgICBtRWRnZUJvcmRlciA9IHJlcy5nZXREaW1lbnNpb25QaXhlbFNpemUoUi5kaW1lbi5zdGF0dXNfYmFyX2VkZ2VfaWdub3JlKTsKLQotICAgICAgICBpZiAoZmFsc2UpIFNsb2cudihUQUcsICJ1cGRhdGVSZXNvdXJjZXMiKTsKLSAgICB9Ci0KLSAgICAvLwotICAgIC8vIHRyYWNpbmcKLSAgICAvLwotCi0gICAgdm9pZCBwb3N0U3RhcnRUcmFjaW5nKCkgewotICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtU3RhcnRUcmFjaW5nLCAzMDAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpYnJhdGUoKSB7Ci0gICAgICAgIGFuZHJvaWQub3MuVmlicmF0b3IgdmliID0gKGFuZHJvaWQub3MuVmlicmF0b3IpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZSgKLSAgICAgICAgICAgICAgICBDb250ZXh0LlZJQlJBVE9SX1NFUlZJQ0UpOwotICAgICAgICB2aWIudmlicmF0ZSgyNTApOwotICAgIH0KLQotICAgIFJ1bm5hYmxlIG1TdGFydFRyYWNpbmcgPSBuZXcgUnVubmFibGUoKSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgIHZpYnJhdGUoKTsKLSAgICAgICAgICAgIFN5c3RlbUNsb2NrLnNsZWVwKDI1MCk7Ci0gICAgICAgICAgICBTbG9nLmQoVEFHLCAic3RhcnRUcmFjaW5nIik7Ci0gICAgICAgICAgICBhbmRyb2lkLm9zLkRlYnVnLnN0YXJ0TWV0aG9kVHJhY2luZygiL2RhdGEvc3RhdHVzYmFyLXRyYWNlcy90cmFjZSIpOwotICAgICAgICAgICAgbUhhbmRsZXIucG9zdERlbGF5ZWQobVN0b3BUcmFjaW5nLCAxMDAwMCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgUnVubmFibGUgbVN0b3BUcmFjaW5nID0gbmV3IFJ1bm5hYmxlKCkgewotICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICBhbmRyb2lkLm9zLkRlYnVnLnN0b3BNZXRob2RUcmFjaW5nKCk7Ci0gICAgICAgICAgICBTbG9nLmQoVEFHLCAic3RvcFRyYWNpbmciKTsKLSAgICAgICAgICAgIHZpYnJhdGUoKTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgY2xhc3MgVW5pbnN0YWxsUmVjZWl2ZXIgZXh0ZW5kcyBCcm9hZGNhc3RSZWNlaXZlciB7Ci0gICAgICAgIHB1YmxpYyBVbmluc3RhbGxSZWNlaXZlcigpIHsKLSAgICAgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7Ci0gICAgICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fUEFDS0FHRV9SRU1PVkVEKTsKLSAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9QQUNLQUdFX1JFU1RBUlRFRCk7Ci0gICAgICAgICAgICBmaWx0ZXIuYWRkRGF0YVNjaGVtZSgicGFja2FnZSIpOwotICAgICAgICAgICAgbUNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcih0aGlzLCBmaWx0ZXIpOwotICAgICAgICAgICAgSW50ZW50RmlsdGVyIHNkRmlsdGVyID0gbmV3IEludGVudEZpbHRlcihJbnRlbnQuQUNUSU9OX0VYVEVSTkFMX0FQUExJQ0FUSU9OU19VTkFWQUlMQUJMRSk7Ci0gICAgICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKHRoaXMsIHNkRmlsdGVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgICAgIFN0cmluZyBwa2dMaXN0W10gPSBudWxsOwotICAgICAgICAgICAgaWYgKEludGVudC5BQ1RJT05fRVhURVJOQUxfQVBQTElDQVRJT05TX1VOQVZBSUxBQkxFLmVxdWFscyhpbnRlbnQuZ2V0QWN0aW9uKCkpKSB7Ci0gICAgICAgICAgICAgICAgcGtnTGlzdCA9IGludGVudC5nZXRTdHJpbmdBcnJheUV4dHJhKEludGVudC5FWFRSQV9DSEFOR0VEX1BBQ0tBR0VfTElTVCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFVyaSBkYXRhID0gaW50ZW50LmdldERhdGEoKTsKLSAgICAgICAgICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBwa2cgPSBkYXRhLmdldFNjaGVtZVNwZWNpZmljUGFydCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGtnICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBrZ0xpc3QgPSBuZXcgU3RyaW5nW117cGtnfTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+IGxpc3QgPSBudWxsOwotICAgICAgICAgICAgaWYgKHBrZ0xpc3QgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAoU3RhdHVzQmFyU2VydmljZS50aGlzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIHBrZyA6IHBrZ0xpc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBtTm90aWZpY2F0aW9uRGF0YS5ub3RpZmljYXRpb25zRm9yUGFja2FnZShwa2cpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobGlzdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgaW50IE4gPSBsaXN0LnNpemUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZUljb24obGlzdC5nZXQoaSkua2V5KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyVmlldy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0JhclZpZXcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxZjU3Mi4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyVmlldy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7Ci1pbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3UGFyZW50OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0OwotCi1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKLQotcHVibGljIGNsYXNzIFN0YXR1c0JhclZpZXcgZXh0ZW5kcyBGcmFtZUxheW91dCB7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJTdGF0dXNCYXJWaWV3IjsKLQotICAgIHN0YXRpYyBmaW5hbCBpbnQgRElNX0FOSU1fVElNRSA9IDQwMDsKLSAgICAKLSAgICBTdGF0dXNCYXJTZXJ2aWNlIG1TZXJ2aWNlOwotICAgIGJvb2xlYW4gbVRyYWNraW5nOwotICAgIGludCBtU3RhcnRYLCBtU3RhcnRZOwotICAgIFZpZXdHcm91cCBtTm90aWZpY2F0aW9uSWNvbnM7Ci0gICAgVmlld0dyb3VwIG1TdGF0dXNJY29uczsKLSAgICBWaWV3IG1EYXRlOwotICAgIEZpeGVkU2l6ZURyYXdhYmxlIG1CYWNrZ3JvdW5kOwotICAgIAotICAgIGJvb2xlYW4gbU5pZ2h0TW9kZSA9IGZhbHNlOwotICAgIGludCBtU3RhcnRBbHBoYSA9IDAsIG1FbmRBbHBoYSA9IDA7Ci0gICAgbG9uZyBtRW5kVGltZSA9IDA7Ci0KLSAgICBwdWJsaWMgU3RhdHVzQmFyVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgewotICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25GaW5pc2hJbmZsYXRlKCkgewotICAgICAgICBzdXBlci5vbkZpbmlzaEluZmxhdGUoKTsKLSAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zID0gKFZpZXdHcm91cClmaW5kVmlld0J5SWQoUi5pZC5ub3RpZmljYXRpb25JY29ucyk7Ci0gICAgICAgIG1TdGF0dXNJY29ucyA9IChWaWV3R3JvdXApZmluZFZpZXdCeUlkKFIuaWQuc3RhdHVzSWNvbnMpOwotICAgICAgICBtRGF0ZSA9IGZpbmRWaWV3QnlJZChSLmlkLmRhdGUpOwotCi0gICAgICAgIG1CYWNrZ3JvdW5kID0gbmV3IEZpeGVkU2l6ZURyYXdhYmxlKG1EYXRlLmdldEJhY2tncm91bmQoKSk7Ci0gICAgICAgIG1CYWNrZ3JvdW5kLnNldEZpeGVkQm91bmRzKDAsIDAsIDAsIDApOwotICAgICAgICBtRGF0ZS5zZXRCYWNrZ3JvdW5kRHJhd2FibGUobUJhY2tncm91bmQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uQXR0YWNoZWRUb1dpbmRvdygpIHsKLSAgICAgICAgc3VwZXIub25BdHRhY2hlZFRvV2luZG93KCk7Ci0gICAgICAgIG1TZXJ2aWNlLm9uQmFyVmlld0F0dGFjaGVkKCk7Ci0gICAgfQotICAgIAotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQoQ29uZmlndXJhdGlvbiBuZXdDb25maWcpIHsKLSAgICAgICAgc3VwZXIub25Db25maWd1cmF0aW9uQ2hhbmdlZChuZXdDb25maWcpOwotICAgICAgICBib29sZWFuIG5pZ2h0TW9kZSA9IChuZXdDb25maWcudWlNb2RlICYgQ29uZmlndXJhdGlvbi5VSV9NT0RFX05JR0hUX01BU0spCi0gICAgICAgICAgICAgICAgPT0gQ29uZmlndXJhdGlvbi5VSV9NT0RFX05JR0hUX1lFUzsKLSAgICAgICAgaWYgKG1OaWdodE1vZGUgIT0gbmlnaHRNb2RlKSB7Ci0gICAgICAgICAgICBtTmlnaHRNb2RlID0gbmlnaHRNb2RlOwotICAgICAgICAgICAgbVN0YXJ0QWxwaGEgPSBnZXRDdXJBbHBoYSgpOwotICAgICAgICAgICAgbUVuZEFscGhhID0gbU5pZ2h0TW9kZSA/IDB4ODAgOiAweDAwOwotICAgICAgICAgICAgbUVuZFRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSArIERJTV9BTklNX1RJTUU7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnQgZ2V0Q3VyQWxwaGEoKSB7Ci0gICAgICAgIGxvbmcgdGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICBpZiAodGltZSA+IG1FbmRUaW1lKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUVuZEFscGhhOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtRW5kQWxwaGEKLSAgICAgICAgICAgICAgICAtIChpbnQpKCgobUVuZEFscGhhLW1TdGFydEFscGhhKSAqIChtRW5kVGltZS10aW1lKSAvIERJTV9BTklNX1RJTUUpKTsKLSAgICB9Ci0gICAgCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25TaXplQ2hhbmdlZChpbnQgdywgaW50IGgsIGludCBvbGR3LCBpbnQgb2xkaCkgewotICAgICAgICBzdXBlci5vblNpemVDaGFuZ2VkKHcsIGgsIG9sZHcsIG9sZGgpOwotICAgICAgICBtU2VydmljZS51cGRhdGVFeHBhbmRlZFZpZXdQb3MoU3RhdHVzQmFyU2VydmljZS5FWFBBTkRFRF9MRUFWRV9BTE9ORSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25MYXlvdXQoYm9vbGVhbiBjaGFuZ2VkLCBpbnQgbCwgaW50IHQsIGludCByLCBpbnQgYikgewotICAgICAgICBzdXBlci5vbkxheW91dChjaGFuZ2VkLCBsLCB0LCByLCBiKTsKLQotICAgICAgICAvLyBwdXQgdGhlIGRhdGUgZGF0ZSB2aWV3IHF1YW50aXplZCB0byB0aGUgaWNvbnMKLSAgICAgICAgaW50IG9sZERhdGVSaWdodCA9IG1EYXRlLmdldFJpZ2h0KCk7Ci0gICAgICAgIGludCBuZXdEYXRlUmlnaHQ7Ci0KLSAgICAgICAgbmV3RGF0ZVJpZ2h0ID0gZ2V0RGF0ZVNpemUobU5vdGlmaWNhdGlvbkljb25zLCBvbGREYXRlUmlnaHQsCi0gICAgICAgICAgICAgICAgZ2V0Vmlld09mZnNldChtTm90aWZpY2F0aW9uSWNvbnMpKTsKLSAgICAgICAgaWYgKG5ld0RhdGVSaWdodCA8IDApIHsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBnZXRWaWV3T2Zmc2V0KG1TdGF0dXNJY29ucyk7Ci0gICAgICAgICAgICBpZiAob2xkRGF0ZVJpZ2h0IDwgb2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgbmV3RGF0ZVJpZ2h0ID0gb2xkRGF0ZVJpZ2h0OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZXdEYXRlUmlnaHQgPSBnZXREYXRlU2l6ZShtU3RhdHVzSWNvbnMsIG9sZERhdGVSaWdodCwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAobmV3RGF0ZVJpZ2h0IDwgMCkgewotICAgICAgICAgICAgICAgICAgICBuZXdEYXRlUmlnaHQgPSByOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpbnQgbWF4ID0gciAtIGdldFBhZGRpbmdSaWdodCgpOwotICAgICAgICBpZiAobmV3RGF0ZVJpZ2h0ID4gbWF4KSB7Ci0gICAgICAgICAgICBuZXdEYXRlUmlnaHQgPSBtYXg7Ci0gICAgICAgIH0KLQotICAgICAgICBtRGF0ZS5sYXlvdXQobURhdGUuZ2V0TGVmdCgpLCBtRGF0ZS5nZXRUb3AoKSwgbmV3RGF0ZVJpZ2h0LCBtRGF0ZS5nZXRCb3R0b20oKSk7Ci0gICAgICAgIG1CYWNrZ3JvdW5kLnNldEZpeGVkQm91bmRzKC1tRGF0ZS5nZXRMZWZ0KCksIC1tRGF0ZS5nZXRUb3AoKSwgKHItbCksIChiLXQpKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBkaXNwYXRjaERyYXcoQ2FudmFzIGNhbnZhcykgewotICAgICAgICBzdXBlci5kaXNwYXRjaERyYXcoY2FudmFzKTsKLSAgICAgICAgaW50IGFscGhhID0gZ2V0Q3VyQWxwaGEoKTsKLSAgICAgICAgaWYgKGFscGhhICE9IDApIHsKLSAgICAgICAgICAgIGNhbnZhcy5kcmF3QVJHQihhbHBoYSwgMCwgMCwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFscGhhICE9IG1FbmRBbHBoYSkgewotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogR2V0cyB0aGUgbGVmdCBwb3NpdGlvbiBvZiB2IGluIHRoaXMgdmlldy4gIFRocm93cyBpZiB2IGlzIG5vdAotICAgICAqIGEgY2hpbGQgb2YgdGhpcy4KLSAgICAgKi8KLSAgICBwcml2YXRlIGludCBnZXRWaWV3T2Zmc2V0KFZpZXcgdikgewotICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKLSAgICAgICAgd2hpbGUgKHYgIT0gdGhpcykgewotICAgICAgICAgICAgb2Zmc2V0ICs9IHYuZ2V0TGVmdCgpOwotICAgICAgICAgICAgVmlld1BhcmVudCBwID0gdi5nZXRQYXJlbnQoKTsKLSAgICAgICAgICAgIGlmICh2IGluc3RhbmNlb2YgVmlldykgewotICAgICAgICAgICAgICAgIHYgPSAoVmlldylwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbih2ICsgIiBpcyBub3QgYSBjaGlsZCBvZiAiICsgdGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG9mZnNldDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGludCBnZXREYXRlU2l6ZShWaWV3R3JvdXAgZywgaW50IHcsIGludCBvZmZzZXQpIHsKLSAgICAgICAgZmluYWwgaW50IE4gPSBnLmdldENoaWxkQ291bnQoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgVmlldyB2ID0gZy5nZXRDaGlsZEF0KGkpOwotICAgICAgICAgICAgaW50IGwgPSB2LmdldExlZnQoKSArIG9mZnNldDsKLSAgICAgICAgICAgIGludCByID0gdi5nZXRSaWdodCgpICsgb2Zmc2V0OwotICAgICAgICAgICAgaWYgKHcgPj0gbCAmJiB3IDw9IHIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRW5zdXJlIHRoYXQsIGlmIHRoZXJlIGlzIG5vIHRhcmdldCB1bmRlciB1cyB0byByZWNlaXZlIHRoZSB0b3VjaCwKLSAgICAgKiB0aGF0IHdlIHByb2Nlc3MgaXQgb3Vyc2VsZi4gIFRoaXMgbWFrZXMgc3VyZSB0aGF0IG9uSW50ZXJjZXB0VG91Y2hFdmVudCgpCi0gICAgICogaXMgYWx3YXlzIGNhbGxlZCBmb3IgdGhlIGVudGlyZSBnZXN0dXJlLgotICAgICAqLwotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIG9uVG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgewotICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgIT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV04pIHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLmludGVyY2VwdFRvdWNoRXZlbnQoZXZlbnQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIG9uSW50ZXJjZXB0VG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgewotICAgICAgICByZXR1cm4gbVNlcnZpY2UuaW50ZXJjZXB0VG91Y2hFdmVudChldmVudCkKLSAgICAgICAgICAgICAgICA/IHRydWUgOiBzdXBlci5vbkludGVyY2VwdFRvdWNoRXZlbnQoZXZlbnQpOwotICAgIH0KLX0KLQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0b3JhZ2VOb3RpZmljYXRpb24uamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdG9yYWdlTm90aWZpY2F0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYThjZDMuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0b3JhZ2VOb3RpZmljYXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OwotaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbjsKLWltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb25NYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKLWltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKLWltcG9ydCBhbmRyb2lkLm9zLkVudmlyb25tZW50OwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuSU1vdW50U2VydmljZTsKLWltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7Ci1pbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZUV2ZW50TGlzdGVuZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlUmVzdWx0Q29kZTsKLWltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkJ1dHRvbjsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVZpZXc7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVG9hc3Q7Ci0KLXB1YmxpYyBjbGFzcyBTdG9yYWdlTm90aWZpY2F0aW9uIGV4dGVuZHMgU3RvcmFnZUV2ZW50TGlzdGVuZXIgewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RvcmFnZU5vdGlmaWNhdGlvbiI7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFBPUF9VTVNfQUNUSVZJVFlfT05fQ09OTkVDVCA9IHRydWU7Ci0KLSAgICAvKioKLSAgICAgKiBCaW5kZXIgY29udGV4dCBmb3IgdGhpcyBzZXJ2aWNlCi0gICAgICovCi0gICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OwotICAgIAotICAgIC8qKgotICAgICAqIFRoZSBub3RpZmljYXRpb24gdGhhdCBpcyBzaG93biB3aGVuIGEgVVNCIG1hc3Mgc3RvcmFnZSBob3N0Ci0gICAgICogaXMgY29ubmVjdGVkLiAKLSAgICAgKiA8cD4KLSAgICAgKiBUaGlzIGlzIGxhemlseSBjcmVhdGVkLCBzbyB1c2Uge0BsaW5rICNzZXRVc2JTdG9yYWdlTm90aWZpY2F0aW9uKCl9LgotICAgICAqLwotICAgIHByaXZhdGUgTm90aWZpY2F0aW9uIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uOwotCi0gICAgLyoqCi0gICAgICogVGhlIG5vdGlmaWNhdGlvbiB0aGF0IGlzIHNob3duIHdoZW4gdGhlIGZvbGxvd2luZyBtZWRpYSBldmVudHMgb2NjdXI6Ci0gICAgICogICAgIC0gTWVkaWEgaXMgYmVpbmcgY2hlY2tlZAotICAgICAqICAgICAtIE1lZGlhIGlzIGJsYW5rIChvciB1bmtub3duIGZpbGVzeXN0ZW0pCi0gICAgICogICAgIC0gTWVkaWEgaXMgY29ycnVwdAotICAgICAqICAgICAtIE1lZGlhIGlzIHNhZmUgdG8gdW5tb3VudAotICAgICAqICAgICAtIE1lZGlhIGlzIG1pc3NpbmcKLSAgICAgKiA8cD4KLSAgICAgKiBUaGlzIGlzIGxhemlseSBjcmVhdGVkLCBzbyB1c2Uge0BsaW5rICNzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oKX0uCi0gICAgICovCi0gICAgcHJpdmF0ZSBOb3RpZmljYXRpb24gICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uOwotICAgIHByaXZhdGUgYm9vbGVhbiAgICAgICAgbVVtc0F2YWlsYWJsZTsKLSAgICBwcml2YXRlIFN0b3JhZ2VNYW5hZ2VyIG1TdG9yYWdlTWFuYWdlcjsKLQotICAgIHB1YmxpYyBTdG9yYWdlTm90aWZpY2F0aW9uKENvbnRleHQgY29udGV4dCkgewotICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0KLSAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TVE9SQUdFX1NFUlZJQ0UpOwotICAgICAgICBtVW1zQXZhaWxhYmxlID0gbVN0b3JhZ2VNYW5hZ2VyLmlzVXNiTWFzc1N0b3JhZ2VDb25uZWN0ZWQoKTsKLSAgICAgICAgU2xvZy5kKFRBRywgU3RyaW5nLmZvcm1hdCggIlN0YXJ0dXAgd2l0aCBVTVMgY29ubmVjdGlvbiAlcyAobWVkaWEgc3RhdGUgJXMpIiwgbVVtc0F2YWlsYWJsZSwKLSAgICAgICAgICAgICAgICBFbnZpcm9ubWVudC5nZXRFeHRlcm5hbFN0b3JhZ2VTdGF0ZSgpKSk7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBAb3ZlcnJpZGUgY29tLmFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlRXZlbnRMaXN0ZW5lcgotICAgICAqLwotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIG9uVXNiTWFzc1N0b3JhZ2VDb25uZWN0aW9uQ2hhbmdlZChib29sZWFuIGNvbm5lY3RlZCkgewotICAgICAgICBtVW1zQXZhaWxhYmxlID0gY29ubmVjdGVkOwotICAgICAgICAvKgotICAgICAgICAgKiBFdmVuIHRob3VnaCB3ZSBtYXkgaGF2ZSBhIFVNUyBob3N0IGNvbm5lY3RlZCwgd2UgdGhlIFNEIGNhcmQKLSAgICAgICAgICogbWF5IG5vdCBiZSBpbiBhIHN0YXRlIGZvciBleHBvcnQuCi0gICAgICAgICAqLwotICAgICAgICBTdHJpbmcgc3QgPSBFbnZpcm9ubWVudC5nZXRFeHRlcm5hbFN0b3JhZ2VTdGF0ZSgpOwotCi0gICAgICAgIFNsb2cuaShUQUcsIFN0cmluZy5mb3JtYXQoIlVNUyBjb25uZWN0aW9uIGNoYW5nZWQgdG8gJXMgKG1lZGlhIHN0YXRlICVzKSIsIGNvbm5lY3RlZCwgc3QpKTsKLQotICAgICAgICBpZiAoY29ubmVjdGVkICYmIChzdC5lcXVhbHMoCi0gICAgICAgICAgICAgICAgRW52aXJvbm1lbnQuTUVESUFfUkVNT1ZFRCkgfHwgc3QuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX0NIRUNLSU5HKSkpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBObyBjYXJkIG9yIGNhcmQgYmVpbmcgY2hlY2tlZCA9IGRvbid0IGRpc3BsYXkKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgY29ubmVjdGVkID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24oY29ubmVjdGVkKTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIEBvdmVycmlkZSBjb20uYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VFdmVudExpc3RlbmVyCi0gICAgICovCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgb25TdG9yYWdlU3RhdGVDaGFuZ2VkKFN0cmluZyBwYXRoLCBTdHJpbmcgb2xkU3RhdGUsIFN0cmluZyBuZXdTdGF0ZSkgewotICAgICAgICBTbG9nLmkoVEFHLCBTdHJpbmcuZm9ybWF0KAotICAgICAgICAgICAgICAgICJNZWRpYSB7JXN9IHN0YXRlIGNoYW5nZWQgZnJvbSB7JXN9IC0+IHslc30iLCBwYXRoLCBvbGRTdGF0ZSwgbmV3U3RhdGUpKTsKLSAgICAgICAgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9TSEFSRUQpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogU3RvcmFnZSBpcyBub3cgc2hhcmVkLiBNb2RpZnkgdGhlIFVNUyBub3RpZmljYXRpb24KLSAgICAgICAgICAgICAqIGZvciBzdG9wcGluZyBVTVMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgICAgICAgICBpbnRlbnQuc2V0Q2xhc3MobUNvbnRleHQsIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuVXNiU3RvcmFnZUFjdGl2aXR5LmNsYXNzKTsKLSAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQgcGkgPSBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KG1Db250ZXh0LCAwLCBpbnRlbnQsIDApOwotICAgICAgICAgICAgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfd2FybmluZywgZmFsc2UsIHRydWUsIHBpKTsKLSAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfQ0hFQ0tJTkcpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogU3RvcmFnZSBpcyBub3cgY2hlY2tpbmcuIFVwZGF0ZSBtZWRpYSBub3RpZmljYXRpb24gYW5kIGRpc2FibGUKLSAgICAgICAgICAgICAqIFVNUyBub3RpZmljYXRpb24uCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZF9wcmVwYXJlLCB0cnVlLCBmYWxzZSwgbnVsbCk7Ci0gICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihmYWxzZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX01PVU5URUQpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogU3RvcmFnZSBpcyBub3cgbW91bnRlZC4gRGlzbWlzcyBhbnkgbWVkaWEgbm90aWZpY2F0aW9ucywKLSAgICAgICAgICAgICAqIGFuZCBlbmFibGUgVU1TIG5vdGlmaWNhdGlvbiBpZiBjb25uZWN0ZWQuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIG51bGwpOwotICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24obVVtc0F2YWlsYWJsZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1VOTU9VTlRFRCkpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBTdG9yYWdlIGlzIG5vdyB1bm1vdW50ZWQuIFdlIG1heSBoYXZlIGJlZW4gdW5tb3VudGVkCi0gICAgICAgICAgICAgKiBiZWNhdXNlIHRoZSB1c2VyIGlzIGVuYWJsaW5nL2Rpc2FibGluZyBVTVMsIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QKLSAgICAgICAgICAgICAqIHdhbnQgdG8gZGlzcGxheSB0aGUgJ3NhZmUgdG8gdW5tb3VudCcgbm90aWZpY2F0aW9uLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoIW1TdG9yYWdlTWFuYWdlci5pc1VzYk1hc3NTdG9yYWdlRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9sZFN0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9TSEFSRUQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAqIFRoZSB1bm1vdW50IHdhcyBkdWUgdG8gVU1TIGJlaW5nIGVuYWJsZWQuIERpc21pc3MgYW55Ci0gICAgICAgICAgICAgICAgICAgICAqIG1lZGlhIG5vdGlmaWNhdGlvbnMsIGFuZCBlbmFibGUgVU1TIG5vdGlmaWNhdGlvbiBpZiBjb25uZWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIG51bGwpOwotICAgICAgICAgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihtVW1zQXZhaWxhYmxlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgKiBTaG93IHNhZmUgdG8gdW5tb3VudCBtZWRpYSBub3RpZmljYXRpb24sIGFuZCBlbmFibGUgVU1TCi0gICAgICAgICAgICAgICAgICAgICAqIG5vdGlmaWNhdGlvbiBpZiBjb25uZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZCwgdHJ1ZSwgdHJ1ZSwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKG1VbXNBdmFpbGFibGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBUaGUgdW5tb3VudCB3YXMgZHVlIHRvIFVNUyBiZWluZyBlbmFibGVkLiBEaXNtaXNzIGFueQotICAgICAgICAgICAgICAgICAqIG1lZGlhIG5vdGlmaWNhdGlvbnMsIGFuZCBkaXNhYmxlIHRoZSBVTVMgbm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24oZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9OT0ZTKSkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFN0b3JhZ2UgaGFzIG5vIGZpbGVzeXN0ZW0uIFNob3cgYmxhbmsgbWVkaWEgbm90aWZpY2F0aW9uLAotICAgICAgICAgICAgICogYW5kIGVuYWJsZSBVTVMgbm90aWZpY2F0aW9uIGlmIGNvbm5lY3RlZC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgIGludGVudC5zZXRDbGFzcyhtQ29udGV4dCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkV4dGVybmFsTWVkaWFGb3JtYXRBY3Rpdml0eS5jbGFzcyk7Ci0gICAgICAgICAgICBQZW5kaW5nSW50ZW50IHBpID0gUGVuZGluZ0ludGVudC5nZXRBY3Rpdml0eShtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKLQotICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZF91c2IsIHRydWUsIGZhbHNlLCBwaSk7Ci0gICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihtVW1zQXZhaWxhYmxlKTsKLSAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfVU5NT1VOVEFCTEUpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogU3RvcmFnZSBpcyBjb3JydXB0LiBTaG93IGNvcnJ1cHQgbWVkaWEgbm90aWZpY2F0aW9uLAotICAgICAgICAgICAgICogYW5kIGVuYWJsZSBVTVMgbm90aWZpY2F0aW9uIGlmIGNvbm5lY3RlZC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgIGludGVudC5zZXRDbGFzcyhtQ29udGV4dCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkV4dGVybmFsTWVkaWFGb3JtYXRBY3Rpdml0eS5jbGFzcyk7Ci0gICAgICAgICAgICBQZW5kaW5nSW50ZW50IHBpID0gUGVuZGluZ0ludGVudC5nZXRBY3Rpdml0eShtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKLQotICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9ub3RpZnlfc2RjYXJkX3VzYiwgdHJ1ZSwgZmFsc2UsIHBpKTsgCi0gICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihtVW1zQXZhaWxhYmxlKTsKLSAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfUkVNT1ZFRCkpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBTdG9yYWdlIGhhcyBiZWVuIHJlbW92ZWQuIFNob3cgbm9tZWRpYSBtZWRpYSBub3RpZmljYXRpb24sCi0gICAgICAgICAgICAgKiBhbmQgZGlzYWJsZSBVTVMgbm90aWZpY2F0aW9uIHJlZ2FyZGxlc3Mgb2YgY29ubmVjdGlvbiBzdGF0ZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZF91c2IsCi0gICAgICAgICAgICAgICAgICAgIHRydWUsIGZhbHNlLCBudWxsKTsKLSAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKGZhbHNlKTsKLSAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfQkFEX1JFTU9WQUwpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogU3RvcmFnZSBoYXMgYmVlbiByZW1vdmVkIHVuc2FmZWx5LiBTaG93IGJhZCByZW1vdmFsIG1lZGlhIG5vdGlmaWNhdGlvbiwKLSAgICAgICAgICAgICAqIGFuZCBkaXNhYmxlIFVNUyBub3RpZmljYXRpb24gcmVnYXJkbGVzcyBvZiBjb25uZWN0aW9uIHN0YXRlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfd2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgdHJ1ZSwgbnVsbCk7Ci0gICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihmYWxzZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTbG9nLncoVEFHLCBTdHJpbmcuZm9ybWF0KCJJZ25vcmluZyB1bmtub3duIHN0YXRlIHslc30iLCBuZXdTdGF0ZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogVXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgVVNCIG1hc3Mgc3RvcmFnZSBub3RpZmljYXRpb24KLSAgICAgKi8KLSAgICB2b2lkIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKGJvb2xlYW4gYXZhaWxhYmxlKSB7Ci0KLSAgICAgICAgaWYgKGF2YWlsYWJsZSkgewotICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgIGludGVudC5zZXRDbGFzcyhtQ29udGV4dCwgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5Vc2JTdG9yYWdlQWN0aXZpdHkuY2xhc3MpOwotICAgICAgICAgICAgaW50ZW50LnNldEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKTsKLQotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBhZGJPbiA9IDEgPT0gU2V0dGluZ3MuU2VjdXJlLmdldEludCgKLSAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuQURCX0VOQUJMRUQsCi0gICAgICAgICAgICAgICAgMCk7Ci0KLSAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQgcGkgPSBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KG1Db250ZXh0LCAwLCBpbnRlbnQsIDApOwotICAgICAgICAgICAgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX3RpdGxlLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX3VzYiwKLSAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRydWUsIHBpKTsKLQotICAgICAgICAgICAgaWYgKFBPUF9VTVNfQUNUSVZJVFlfT05fQ09OTkVDVCAmJiAhYWRiT24pIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCBkZXZlbG9wZXJzIGRvbid0IHdhbnQgdG8gZW5hYmxlIFVNUyBldmVyeQotICAgICAgICAgICAgICAgIC8vIHRpbWUgdGhleSBhdHRhY2ggYSBkZXZpY2UgdG8gYSBVU0IgaG9zdC4gVGhlIGF2ZXJhZ2UgdXNlciwKLSAgICAgICAgICAgICAgICAvLyBob3dldmVyLCBpcyBsb29raW5nIHRvIGNoYXJnZSB0aGUgcGhvbmUgKGluIHdoaWNoIGNhc2UgdGhpcwotICAgICAgICAgICAgICAgIC8vIGlzIGhhcm1sZXNzKSBvciB0cmFuc2ZlciBmaWxlcyAoaW4gd2hpY2ggY2FzZSB0aGlzIGNvYWNoZXMKLSAgICAgICAgICAgICAgICAvLyB0aGUgdXNlciBhYm91dCBob3cgdG8gY29tcGxldGUgdGhhdCB0YXNrIGFuZCBzYXZlcyBzZXZlcmFsCi0gICAgICAgICAgICAgICAgLy8gc3RlcHMpLgotICAgICAgICAgICAgICAgIG1Db250ZXh0LnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNldFVzYlN0b3JhZ2VOb3RpZmljYXRpb24oMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBudWxsKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFNldHMgdGhlIFVTQiBzdG9yYWdlIG5vdGlmaWNhdGlvbi4KLSAgICAgKi8KLSAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIHNldFVzYlN0b3JhZ2VOb3RpZmljYXRpb24oaW50IHRpdGxlSWQsIGludCBtZXNzYWdlSWQsIGludCBpY29uLAotICAgICAgICAgICAgYm9vbGVhbiBzb3VuZCwgYm9vbGVhbiB2aXNpYmxlLCBQZW5kaW5nSW50ZW50IHBpKSB7Ci0KLSAgICAgICAgaWYgKCF2aXNpYmxlICYmIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIE5vdGlmaWNhdGlvbk1hbmFnZXIgbm90aWZpY2F0aW9uTWFuYWdlciA9IChOb3RpZmljYXRpb25NYW5hZ2VyKSBtQ29udGV4dAotICAgICAgICAgICAgICAgIC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTk9USUZJQ0FUSU9OX1NFUlZJQ0UpOwotCi0gICAgICAgIGlmIChub3RpZmljYXRpb25NYW5hZ2VyID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHZpc2libGUpIHsKLSAgICAgICAgICAgIFJlc291cmNlcyByID0gUmVzb3VyY2VzLmdldFN5c3RlbSgpOwotICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHRpdGxlID0gci5nZXRUZXh0KHRpdGxlSWQpOwotICAgICAgICAgICAgQ2hhclNlcXVlbmNlIG1lc3NhZ2UgPSByLmdldFRleHQobWVzc2FnZUlkKTsKLQotICAgICAgICAgICAgaWYgKG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKLSAgICAgICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi5pY29uID0gaWNvbjsKLSAgICAgICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi53aGVuID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHNvdW5kKSB7Ci0gICAgICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uZGVmYXVsdHMgfD0gTm90aWZpY2F0aW9uLkRFRkFVTFRfU09VTkQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLmRlZmF1bHRzICY9IH5Ob3RpZmljYXRpb24uREVGQVVMVF9TT1VORDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLmZsYWdzID0gTm90aWZpY2F0aW9uLkZMQUdfT05HT0lOR19FVkVOVDsKLQotICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24udGlja2VyVGV4dCA9IHRpdGxlOwotICAgICAgICAgICAgaWYgKHBpID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOwotICAgICAgICAgICAgICAgIHBpID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIGludGVudCwgMCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLnNldExhdGVzdEV2ZW50SW5mbyhtQ29udGV4dCwgdGl0bGUsIG1lc3NhZ2UsIHBpKTsKLSAgICAgICAgfQotICAgIAotICAgICAgICBmaW5hbCBpbnQgbm90aWZpY2F0aW9uSWQgPSBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi5pY29uOwotICAgICAgICBpZiAodmlzaWJsZSkgewotICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5ub3RpZnkobm90aWZpY2F0aW9uSWQsIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbk1hbmFnZXIuY2FuY2VsKG5vdGlmaWNhdGlvbklkKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gZ2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uRGlzbWlzc2FibGUoKSB7Ci0gICAgICAgIGlmICgobU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiAhPSBudWxsKSAmJgotICAgICAgICAgICAgKChtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmZsYWdzICYgTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUwpID09Ci0gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbi5GTEFHX0FVVE9fQ0FOQ0VMKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBTZXRzIHRoZSBtZWRpYSBzdG9yYWdlIG5vdGlmaWNhdGlvbi4KLSAgICAgKi8KLSAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbihpbnQgdGl0bGVJZCwgaW50IG1lc3NhZ2VJZCwgaW50IGljb24sIGJvb2xlYW4gdmlzaWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGRpc21pc3NhYmxlLCBQZW5kaW5nSW50ZW50IHBpKSB7Ci0KLSAgICAgICAgaWYgKCF2aXNpYmxlICYmIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24gPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgTm90aWZpY2F0aW9uTWFuYWdlciBub3RpZmljYXRpb25NYW5hZ2VyID0gKE5vdGlmaWNhdGlvbk1hbmFnZXIpIG1Db250ZXh0Ci0gICAgICAgICAgICAgICAgLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5OT1RJRklDQVRJT05fU0VSVklDRSk7Ci0KLSAgICAgICAgaWYgKG5vdGlmaWNhdGlvbk1hbmFnZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24gIT0gbnVsbCAmJiB2aXNpYmxlKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogRGlzbWlzcyB0aGUgcHJldmlvdXMgbm90aWZpY2F0aW9uIC0gd2UncmUgYWJvdXQgdG8KLSAgICAgICAgICAgICAqIHJlLXVzZSBpdC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgZmluYWwgaW50IG5vdGlmaWNhdGlvbklkID0gbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5pY29uOwotICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5jYW5jZWwobm90aWZpY2F0aW9uSWQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodmlzaWJsZSkgewotICAgICAgICAgICAgUmVzb3VyY2VzIHIgPSBSZXNvdXJjZXMuZ2V0U3lzdGVtKCk7Ci0gICAgICAgICAgICBDaGFyU2VxdWVuY2UgdGl0bGUgPSByLmdldFRleHQodGl0bGVJZCk7Ci0gICAgICAgICAgICBDaGFyU2VxdWVuY2UgbWVzc2FnZSA9IHIuZ2V0VGV4dChtZXNzYWdlSWQpOwotCi0gICAgICAgICAgICBpZiAobU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKLSAgICAgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLndoZW4gPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmRlZmF1bHRzICY9IH5Ob3RpZmljYXRpb24uREVGQVVMVF9TT1VORDsKLQotICAgICAgICAgICAgaWYgKGRpc21pc3NhYmxlKSB7Ci0gICAgICAgICAgICAgICAgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5mbGFncyA9IE5vdGlmaWNhdGlvbi5GTEFHX0FVVE9fQ0FOQ0VMOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmZsYWdzID0gTm90aWZpY2F0aW9uLkZMQUdfT05HT0lOR19FVkVOVDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi50aWNrZXJUZXh0ID0gdGl0bGU7Ci0gICAgICAgICAgICBpZiAocGkgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgICAgICAgICAgICAgcGkgPSBQZW5kaW5nSW50ZW50LmdldEJyb2FkY2FzdChtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5pY29uID0gaWNvbjsKLSAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uc2V0TGF0ZXN0RXZlbnRJbmZvKG1Db250ZXh0LCB0aXRsZSwgbWVzc2FnZSwgcGkpOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIGZpbmFsIGludCBub3RpZmljYXRpb25JZCA9IG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uaWNvbjsKLSAgICAgICAgaWYgKHZpc2libGUpIHsKLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbk1hbmFnZXIubm90aWZ5KG5vdGlmaWNhdGlvbklkLCBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbk1hbmFnZXIuY2FuY2VsKG5vdGlmaWNhdGlvbklkKTsKLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UaWNrZXIuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UaWNrZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ3MTg1Yi4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvVGlja2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLlI7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLnRleHQuU3RhdGljTGF5b3V0OwotaW1wb3J0IGFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50OwotaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0UGFpbnQ7Ci1pbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKLWltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbjsKLWltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvblV0aWxzOwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRTd2l0Y2hlcjsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVN3aXRjaGVyOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLQotCi1hYnN0cmFjdCBjbGFzcyBUaWNrZXIgewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUSUNLRVJfU0VHTUVOVF9ERUxBWSA9IDMwMDA7Ci0gICAgCi0gICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBTZWdtZW50IHsKLSAgICAgICAgTm90aWZpY2F0aW9uRGF0YSBub3RpZmljYXRpb25EYXRhOwotICAgICAgICBEcmF3YWJsZSBpY29uOwotICAgICAgICBDaGFyU2VxdWVuY2UgdGV4dDsKLSAgICAgICAgaW50IGN1cnJlbnQ7Ci0gICAgICAgIGludCBuZXh0OwotICAgICAgICBib29sZWFuIGZpcnN0OwotCi0gICAgICAgIFN0YXRpY0xheW91dCBnZXRMYXlvdXQoQ2hhclNlcXVlbmNlIHN1YnN0cikgewotICAgICAgICAgICAgaW50IHcgPSBtVGV4dFN3aXRjaGVyLmdldFdpZHRoKCkgLSBtVGV4dFN3aXRjaGVyLmdldFBhZGRpbmdMZWZ0KCkKLSAgICAgICAgICAgICAgICAgICAgLSBtVGV4dFN3aXRjaGVyLmdldFBhZGRpbmdSaWdodCgpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBTdGF0aWNMYXlvdXQoc3Vic3RyLCBtUGFpbnQsIHcsIEFsaWdubWVudC5BTElHTl9OT1JNQUwsIDEsIDAsIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgQ2hhclNlcXVlbmNlIHJ0cmltKENoYXJTZXF1ZW5jZSBzdWJzdHIsIGludCBzdGFydCwgaW50IGVuZCkgewotICAgICAgICAgICAgd2hpbGUgKGVuZCA+IHN0YXJ0ICYmICFUZXh0VXRpbHMuaXNHcmFwaGljKHN1YnN0ci5jaGFyQXQoZW5kLTEpKSkgewotICAgICAgICAgICAgICAgIGVuZC0tOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVuZCA+IHN0YXJ0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0ci5zdWJTZXF1ZW5jZShzdGFydCwgZW5kKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqIHJldHVybnMgbnVsbCBpZiB0aGVyZSBpcyBubyBtb3JlIHRleHQgKi8KLSAgICAgICAgQ2hhclNlcXVlbmNlIGdldFRleHQoKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ID4gdGhpcy50ZXh0Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBDaGFyU2VxdWVuY2Ugc3Vic3RyID0gdGhpcy50ZXh0LnN1YlNlcXVlbmNlKHRoaXMuY3VycmVudCwgdGhpcy50ZXh0Lmxlbmd0aCgpKTsKLSAgICAgICAgICAgIFN0YXRpY0xheW91dCBsID0gZ2V0TGF5b3V0KHN1YnN0cik7Ci0gICAgICAgICAgICBpbnQgbGluZUNvdW50ID0gbC5nZXRMaW5lQ291bnQoKTsKLSAgICAgICAgICAgIGlmIChsaW5lQ291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gbC5nZXRMaW5lU3RhcnQoMCk7Ci0gICAgICAgICAgICAgICAgaW50IGVuZCA9IGwuZ2V0TGluZUVuZCgwKTsKLSAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSB0aGlzLmN1cnJlbnQgKyBlbmQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJ0cmltKHN1YnN0ciwgc3RhcnQsIGVuZCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJsaW5lQ291bnQ9IiArIGxpbmVDb3VudCArICIgY3VycmVudD0iICsgY3VycmVudCArCi0gICAgICAgICAgICAgICAgICAgICAgICAiIHRleHQ9IiArIHRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyoqIHJldHVybnMgbnVsbCBpZiB0aGVyZSBpcyBubyBtb3JlIHRleHQgKi8KLSAgICAgICAgQ2hhclNlcXVlbmNlIGFkdmFuY2UoKSB7Ci0gICAgICAgICAgICB0aGlzLmZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSB0aGlzLm5leHQ7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgbGVuID0gdGhpcy50ZXh0Lmxlbmd0aCgpOwotICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuICYmICFUZXh0VXRpbHMuaXNHcmFwaGljKHRoaXMudGV4dC5jaGFyQXQoaW5kZXgpKSkgewotICAgICAgICAgICAgICAgIGluZGV4Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBzdWJzdHIgPSB0aGlzLnRleHQuc3ViU2VxdWVuY2UoaW5kZXgsIHRoaXMudGV4dC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBTdGF0aWNMYXlvdXQgbCA9IGdldExheW91dChzdWJzdHIpOwotICAgICAgICAgICAgZmluYWwgaW50IGxpbmVDb3VudCA9IGwuZ2V0TGluZUNvdW50KCk7Ci0gICAgICAgICAgICBpbnQgaTsKLSAgICAgICAgICAgIGZvciAoaT0wOyBpPGxpbmVDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gbC5nZXRMaW5lU3RhcnQoaSk7Ci0gICAgICAgICAgICAgICAgaW50IGVuZCA9IGwuZ2V0TGluZUVuZChpKTsKLSAgICAgICAgICAgICAgICBpZiAoaSA9PSBsaW5lQ291bnQtMSkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBsZW47Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0ID0gaW5kZXggKyBsLmdldExpbmVTdGFydChpKzEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBDaGFyU2VxdWVuY2UgcmVzdWx0ID0gcnRyaW0oc3Vic3RyLCBzdGFydCwgZW5kKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gaW5kZXggKyBzdGFydDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBsZW47Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIFNlZ21lbnQoTm90aWZpY2F0aW9uRGF0YSBuLCBEcmF3YWJsZSBpY29uLCBDaGFyU2VxdWVuY2UgdGV4dCkgewotICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25EYXRhID0gbjsKLSAgICAgICAgICAgIHRoaXMuaWNvbiA9IGljb247Ci0gICAgICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OwotICAgICAgICAgICAgaW50IGluZGV4ID0gMDsKLSAgICAgICAgICAgIGZpbmFsIGludCBsZW4gPSB0ZXh0Lmxlbmd0aCgpOwotICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuICYmICFUZXh0VXRpbHMuaXNHcmFwaGljKHRleHQuY2hhckF0KGluZGV4KSkpIHsKLSAgICAgICAgICAgICAgICBpbmRleCsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gaW5kZXg7Ci0gICAgICAgICAgICB0aGlzLm5leHQgPSBpbmRleDsKLSAgICAgICAgICAgIHRoaXMuZmlyc3QgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHByaXZhdGUgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7Ci0gICAgcHJpdmF0ZSBBcnJheUxpc3Q8U2VnbWVudD4gbVNlZ21lbnRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIHByaXZhdGUgVGV4dFBhaW50IG1QYWludDsKLSAgICBwcml2YXRlIFZpZXcgbVRpY2tlclZpZXc7Ci0gICAgcHJpdmF0ZSBJbWFnZVN3aXRjaGVyIG1JY29uU3dpdGNoZXI7Ci0gICAgcHJpdmF0ZSBUZXh0U3dpdGNoZXIgbVRleHRTd2l0Y2hlcjsKLQotICAgIFRpY2tlcihDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclZpZXcgc2IpIHsKLSAgICAgICAgbVRpY2tlclZpZXcgPSBzYi5maW5kVmlld0J5SWQoUi5pZC50aWNrZXIpOwotCi0gICAgICAgIG1JY29uU3dpdGNoZXIgPSAoSW1hZ2VTd2l0Y2hlcilzYi5maW5kVmlld0J5SWQoUi5pZC50aWNrZXJJY29uKTsKLSAgICAgICAgbUljb25Td2l0Y2hlci5zZXRJbkFuaW1hdGlvbigKLSAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihjb250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF91cF9pbikpOwotICAgICAgICBtSWNvblN3aXRjaGVyLnNldE91dEFuaW1hdGlvbigKLSAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihjb250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF91cF9vdXQpKTsKLQotICAgICAgICBtVGV4dFN3aXRjaGVyID0gKFRleHRTd2l0Y2hlcilzYi5maW5kVmlld0J5SWQoUi5pZC50aWNrZXJUZXh0KTsKLSAgICAgICAgbVRleHRTd2l0Y2hlci5zZXRJbkFuaW1hdGlvbigKLSAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihjb250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF91cF9pbikpOwotICAgICAgICBtVGV4dFN3aXRjaGVyLnNldE91dEFuaW1hdGlvbigKLSAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihjb250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF91cF9vdXQpKTsKLQotICAgICAgICAvLyBDb3B5IHRoZSBwYWludCBzdHlsZSBvZiBvbmUgb2YgdGhlIFRleHRTd2l0Y2hlcnMgY2hpbGRyZW4gdG8gdXNlIGxhdGVyIGZvciBtZWFzdXJpbmcKLSAgICAgICAgVGV4dFZpZXcgdGV4dCA9IChUZXh0VmlldyltVGV4dFN3aXRjaGVyLmdldENoaWxkQXQoMCk7Ci0gICAgICAgIG1QYWludCA9IHRleHQuZ2V0UGFpbnQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZEVudHJ5KE5vdGlmaWNhdGlvbkRhdGEgbiwgRHJhd2FibGUgaWNvbiwgQ2hhclNlcXVlbmNlIHRleHQpIHsKLSAgICAgICAgaW50IGluaXRpYWxDb3VudCA9IG1TZWdtZW50cy5zaXplKCk7Ci0KLSAgICAgICAgU2VnbWVudCBuZXdTZWdtZW50ID0gbmV3IFNlZ21lbnQobiwgaWNvbiwgdGV4dCk7Ci0KLSAgICAgICAgLy8gcHJ1bmUgb3V0IGFueSBwcmVleGlzdGluZyBvbmVzIGZvciB0aGlzIG5vdGlmaWNhdGlvbiwgYnV0IG5vdCB0aGUgY3VycmVudCBvbmUuCi0gICAgICAgIC8vIGxldCB0aGF0IGZpbmlzaCwgZXZlbiBpZiBpdCdzIHRoZSBzYW1lIGlkCi0gICAgICAgIGZvciAoaW50IGk9MTsgaTxpbml0aWFsQ291bnQ7IGkrKykgewotICAgICAgICAgICAgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKG4uaWQgPT0gc2VnLm5vdGlmaWNhdGlvbkRhdGEuaWQgJiYgbi5wa2cuZXF1YWxzKHNlZy5ub3RpZmljYXRpb25EYXRhLnBrZykpIHsKLSAgICAgICAgICAgICAgICAvLyBqdXN0IHVwZGF0ZSB0aGF0IG9uZSB0byB1c2UgdGhpcyBuZXcgZGF0YSBpbnN0ZWFkCi0gICAgICAgICAgICAgICAgbVNlZ21lbnRzLnNldChpLCBuZXdTZWdtZW50KTsKLSAgICAgICAgICAgICAgICAvLyBhbmQgc2luY2Ugd2Uga25vdyBpbml0aWFsQ291bnQgIT0gMCwganVzdCByZXR1cm4KLSAgICAgICAgICAgICAgICByZXR1cm4gOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbVNlZ21lbnRzLmFkZChuZXdTZWdtZW50KTsKLQotICAgICAgICBpZiAoaW5pdGlhbENvdW50ID09IDAgJiYgbVNlZ21lbnRzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgIFNlZ21lbnQgc2VnID0gbVNlZ21lbnRzLmdldCgwKTsKLSAgICAgICAgICAgIHNlZy5maXJzdCA9IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtSWNvblN3aXRjaGVyLnNldEFuaW1hdGVGaXJzdFZpZXcoZmFsc2UpOwotICAgICAgICAgICAgbUljb25Td2l0Y2hlci5yZXNldCgpOwotICAgICAgICAgICAgbUljb25Td2l0Y2hlci5zZXRJbWFnZURyYXdhYmxlKHNlZy5pY29uKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbVRleHRTd2l0Y2hlci5zZXRBbmltYXRlRmlyc3RWaWV3KGZhbHNlKTsKLSAgICAgICAgICAgIG1UZXh0U3dpdGNoZXIucmVzZXQoKTsKLSAgICAgICAgICAgIG1UZXh0U3dpdGNoZXIuc2V0VGV4dChzZWcuZ2V0VGV4dCgpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGlja2VyU3RhcnRpbmcoKTsKLSAgICAgICAgICAgIHNjaGVkdWxlQWR2YW5jZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBoYWx0KCkgewotICAgICAgICBtSGFuZGxlci5yZW1vdmVDYWxsYmFja3MobUFkdmFuY2VUaWNrZXIpOwotICAgICAgICBtU2VnbWVudHMuY2xlYXIoKTsKLSAgICAgICAgdGlja2VySGFsdGluZygpOwotICAgIH0KLQotICAgIHZvaWQgcmVmbG93VGV4dCgpIHsKLSAgICAgICAgaWYgKG1TZWdtZW50cy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICBTZWdtZW50IHNlZyA9IG1TZWdtZW50cy5nZXQoMCk7Ci0gICAgICAgICAgICBDaGFyU2VxdWVuY2UgdGV4dCA9IHNlZy5nZXRUZXh0KCk7Ci0gICAgICAgICAgICBtVGV4dFN3aXRjaGVyLnNldEN1cnJlbnRUZXh0KHRleHQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBSdW5uYWJsZSBtQWR2YW5jZVRpY2tlciA9IG5ldyBSdW5uYWJsZSgpIHsKLSAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgd2hpbGUgKG1TZWdtZW50cy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KDApOwotCi0gICAgICAgICAgICAgICAgaWYgKHNlZy5maXJzdCkgewotICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIG1ha2VzIHRoZSBpY29uIHNsaWRlIGluIGZvciB0aGUgZmlyc3Qgb25lIGZvciBhIGdpdmVuCi0gICAgICAgICAgICAgICAgICAgIC8vIG5vdGlmaWNhdGlvbiBldmVuIGlmIHRoZXJlIGFyZSB0d28gbm90aWZpY2F0aW9ucyB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICAvLyBzYW1lIGljb24gaW4gYSByb3cKLSAgICAgICAgICAgICAgICAgICAgbUljb25Td2l0Y2hlci5zZXRJbWFnZURyYXdhYmxlKHNlZy5pY29uKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHRleHQgPSBzZWcuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAgIGlmICh0ZXh0ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbVNlZ21lbnRzLnJlbW92ZSgwKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1UZXh0U3dpdGNoZXIuc2V0VGV4dCh0ZXh0KTsKLQotICAgICAgICAgICAgICAgIHNjaGVkdWxlQWR2YW5jZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1TZWdtZW50cy5zaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgIHRpY2tlckRvbmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwcml2YXRlIHZvaWQgc2NoZWR1bGVBZHZhbmNlKCkgewotICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtQWR2YW5jZVRpY2tlciwgVElDS0VSX1NFR01FTlRfREVMQVkpOwotICAgIH0KLQotICAgIGFic3RyYWN0IHZvaWQgdGlja2VyU3RhcnRpbmcoKTsKLSAgICBhYnN0cmFjdCB2b2lkIHRpY2tlckRvbmUoKTsKLSAgICBhYnN0cmFjdCB2b2lkIHRpY2tlckhhbHRpbmcoKTsKLX0KLQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1RpY2tlclZpZXcuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UaWNrZXJWaWV3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5OWRmZmIuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1RpY2tlclZpZXcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRTd2l0Y2hlcjsKLQotCi1wdWJsaWMgY2xhc3MgVGlja2VyVmlldyBleHRlbmRzIFRleHRTd2l0Y2hlcgotewotICAgIFRpY2tlciBtVGlja2VyOwotCi0gICAgcHVibGljIFRpY2tlclZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uU2l6ZUNoYW5nZWQoaW50IHcsIGludCBoLCBpbnQgb2xkdywgaW50IG9sZGgpIHsKLSAgICAgICAgc3VwZXIub25TaXplQ2hhbmdlZCh3LCBoLCBvbGR3LCBvbGRoKTsKLSAgICAgICAgbVRpY2tlci5yZWZsb3dUZXh0KCk7Ci0gICAgfQotfQotCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvVHJhY2tpbmdQYXR0ZXJuVmlldy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1RyYWNraW5nUGF0dGVyblZpZXcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM5MWFhNC4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvVHJhY2tpbmdQYXR0ZXJuVmlldy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheTsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeTsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcDsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBhaW50OwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOwotCi1wdWJsaWMgY2xhc3MgVHJhY2tpbmdQYXR0ZXJuVmlldyBleHRlbmRzIFZpZXcgewotICAgIHByaXZhdGUgQml0bWFwIG1UZXh0dXJlOwotICAgIHByaXZhdGUgUGFpbnQgbVBhaW50OwotICAgIHByaXZhdGUgaW50IG1UZXh0dXJlV2lkdGg7Ci0gICAgcHJpdmF0ZSBpbnQgbVRleHR1cmVIZWlnaHQ7Ci0gICAgCi0gICAgcHVibGljIFRyYWNraW5nUGF0dGVyblZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotCi0gICAgICAgIG1UZXh0dXJlID0gQml0bWFwRmFjdG9yeS5kZWNvZGVSZXNvdXJjZShnZXRSZXNvdXJjZXMoKSwgCi0gICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0dXNfYmFyX2JhY2tncm91bmQpOwotICAgICAgICBtVGV4dHVyZVdpZHRoID0gbVRleHR1cmUuZ2V0V2lkdGgoKTsKLSAgICAgICAgbVRleHR1cmVIZWlnaHQgPSBtVGV4dHVyZS5nZXRIZWlnaHQoKTsKLQotICAgICAgICBtUGFpbnQgPSBuZXcgUGFpbnQoKTsKLSAgICAgICAgbVBhaW50LnNldERpdGhlcihmYWxzZSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgb25EcmF3KENhbnZhcyBjYW52YXMpIHsKLSAgICAgICAgZmluYWwgQml0bWFwIHRleHR1cmUgPSBtVGV4dHVyZTsKLSAgICAgICAgZmluYWwgUGFpbnQgcGFpbnQgPSBtUGFpbnQ7Ci0KLSAgICAgICAgZmluYWwgaW50IHdpZHRoID0gZ2V0V2lkdGgoKTsKLSAgICAgICAgZmluYWwgaW50IGhlaWdodCA9IGdldEhlaWdodCgpOwotCi0gICAgICAgIGZpbmFsIGludCB0ZXh0dXJlV2lkdGggPSBtVGV4dHVyZVdpZHRoOwotICAgICAgICBmaW5hbCBpbnQgdGV4dHVyZUhlaWdodCA9IG1UZXh0dXJlSGVpZ2h0OwotCi0gICAgICAgIGludCB4ID0gMDsKLSAgICAgICAgaW50IHk7Ci0KLSAgICAgICAgd2hpbGUgKHggPCB3aWR0aCkgewotICAgICAgICAgICAgeSA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoeSA8IGhlaWdodCkgewotICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3Qml0bWFwKHRleHR1cmUsIHgsIHksIHBhaW50KTsKLSAgICAgICAgICAgICAgICB5ICs9IHRleHR1cmVIZWlnaHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ICs9IHRleHR1cmVXaWR0aDsKLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UcmFja2luZ1ZpZXcuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UcmFja2luZ1ZpZXcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVjMzljMC4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvVHJhY2tpbmdWaWV3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuRGlzcGxheTsKLWltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OwotCi0KLXB1YmxpYyBjbGFzcyBUcmFja2luZ1ZpZXcgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgewotICAgIGZpbmFsIERpc3BsYXkgbURpc3BsYXk7Ci0gICAgU3RhdHVzQmFyU2VydmljZSBtU2VydmljZTsKLSAgICBib29sZWFuIG1UcmFja2luZzsKLSAgICBpbnQgbVN0YXJ0WCwgbVN0YXJ0WTsKLQotICAgIHB1YmxpYyBUcmFja2luZ1ZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotICAgICAgICBtRGlzcGxheSA9ICgoV2luZG93TWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoCi0gICAgICAgICAgICAgICAgQ29udGV4dC5XSU5ET1dfU0VSVklDRSkpLmdldERlZmF1bHREaXNwbGF5KCk7Ci0gICAgfQotICAgIAotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkgewotICAgICAgICBzdXBlci5vbkxheW91dChjaGFuZ2VkLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwotICAgICAgICBtU2VydmljZS51cGRhdGVFeHBhbmRlZEhlaWdodCgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKLSAgICAgICAgYm9vbGVhbiBkb3duID0gZXZlbnQuZ2V0QWN0aW9uKCkgPT0gS2V5RXZlbnQuQUNUSU9OX0RPV047Ci0gICAgICAgIHN3aXRjaCAoZXZlbnQuZ2V0S2V5Q29kZSgpKSB7Ci0gICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9CQUNLOgotICAgICAgICAgICAgaWYgKGRvd24pIHsKLSAgICAgICAgICAgICAgICBtU2VydmljZS5kZWFjdGl2YXRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3VwZXIuZGlzcGF0Y2hLZXlFdmVudChldmVudCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgewotICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKLSAgICAgICAgbVNlcnZpY2Uub25UcmFja2luZ1ZpZXdBdHRhY2hlZCgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9Vc2JTdG9yYWdlQWN0aXZpdHkuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9Vc2JTdG9yYWdlQWN0aXZpdHkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg2MzFjNTMuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1VzYlN0b3JhZ2VBY3Rpdml0eS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgR29vZ2xlIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKLWltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKLWltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuQWxlcnREaWFsb2c7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuRGlhbG9nOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKLWltcG9ydCBhbmRyb2lkLm9zLkVudmlyb25tZW50OwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLklNb3VudFNlcnZpY2U7Ci1pbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlRXZlbnRMaXN0ZW5lcjsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5CdXR0b247Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuUHJvZ3Jlc3NCYXI7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvdzsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLS8qKgotICogVGhpcyBhY3Rpdml0eSBpcyBzaG93biB0byB0aGUgdXNlciBmb3IgaGltL2hlciB0byBlbmFibGUgVVNCIG1hc3Mgc3RvcmFnZQotICogb24tZGVtYW5kICh0aGF0IGlzLCB3aGVuIHRoZSBVU0IgY2FibGUgaXMgY29ubmVjdGVkKS4gSXQgdXNlcyB0aGUgYWxlcnQKLSAqIGRpYWxvZyBzdHlsZS4gSXQgd2lsbCBiZSBsYXVuY2hlZCBmcm9tIGEgbm90aWZpY2F0aW9uLgotICovCi1wdWJsaWMgY2xhc3MgVXNiU3RvcmFnZUFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkKLSAgICAgICAgaW1wbGVtZW50cyBWaWV3Lk9uQ2xpY2tMaXN0ZW5lciwgT25DYW5jZWxMaXN0ZW5lciB7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJVc2JTdG9yYWdlQWN0aXZpdHkiOwotCi0gICAgcHJpdmF0ZSBCdXR0b24gbU1vdW50QnV0dG9uOwotICAgIHByaXZhdGUgQnV0dG9uIG1Vbm1vdW50QnV0dG9uOwotICAgIHByaXZhdGUgUHJvZ3Jlc3NCYXIgbVByb2dyZXNzQmFyOwotICAgIHByaXZhdGUgVGV4dFZpZXcgbUJhbm5lcjsKLSAgICBwcml2YXRlIFRleHRWaWV3IG1NZXNzYWdlOwotICAgIHByaXZhdGUgSW1hZ2VWaWV3IG1JY29uOwotICAgIHByaXZhdGUgU3RvcmFnZU1hbmFnZXIgbVN0b3JhZ2VNYW5hZ2VyID0gbnVsbDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRExHX0NPTkZJUk1fS0lMTF9TVE9SQUdFX1VTRVJTID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRExHX0VSUk9SX1NIQVJJTkcgPSAyOwotICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIGxvY2FsTE9HViA9IGZhbHNlOwotCi0gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IHdoZW4gdGhlIFVTQiBjYWJsZSBpcyB1bnBsdWdnZWQsIHNvIHdlIGNhbiBjYWxsIGZpbmlzaCgpICovCi0gICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQmF0dGVyeVJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgewotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgaWYgKGludGVudC5nZXRBY3Rpb24oKSA9PSBJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCkgewotICAgICAgICAgICAgICAgIGhhbmRsZUJhdHRlcnlDaGFuZ2VkKGludGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBTdG9yYWdlRXZlbnRMaXN0ZW5lciBtU3RvcmFnZUxpc3RlbmVyID0gbmV3IFN0b3JhZ2VFdmVudExpc3RlbmVyKCkgewotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25TdG9yYWdlU3RhdGVDaGFuZ2VkKFN0cmluZyBwYXRoLCBTdHJpbmcgb2xkU3RhdGUsIFN0cmluZyBuZXdTdGF0ZSkgewotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBvbiA9IG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9TSEFSRUQpOwotICAgICAgICAgICAgc3dpdGNoRGlzcGxheShvbik7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uQ3JlYXRlKEJ1bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUpIHsKLSAgICAgICAgc3VwZXIub25DcmVhdGUoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKLQotICAgICAgICBpZiAobVN0b3JhZ2VNYW5hZ2VyID09IG51bGwpIHsKLSAgICAgICAgICAgIG1TdG9yYWdlTWFuYWdlciA9IChTdG9yYWdlTWFuYWdlcikgZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUT1JBR0VfU0VSVklDRSk7Ci0gICAgICAgICAgICBpZiAobVN0b3JhZ2VNYW5hZ2VyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJGYWlsZWQgdG8gZ2V0IFN0b3JhZ2VNYW5hZ2VyIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXF1ZXN0V2luZG93RmVhdHVyZShXaW5kb3cuRkVBVFVSRV9JTkRFVEVSTUlOQVRFX1BST0dSRVNTKTsKLSAgICAgICAgc2V0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlVmlzaWJpbGl0eSh0cnVlKTsKLQotICAgICAgICBzZXRUaXRsZShnZXRTdHJpbmcoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2VfYWN0aXZpdHlfdGl0bGUpKTsKLQotICAgICAgICBzZXRDb250ZW50Vmlldyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC51c2Jfc3RvcmFnZV9hY3Rpdml0eSk7Ci0KLSAgICAgICAgbUljb24gPSAoSW1hZ2VWaWV3KSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5pY29uKTsKLSAgICAgICAgbUJhbm5lciA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuYmFubmVyKTsKLSAgICAgICAgbU1lc3NhZ2UgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLm1lc3NhZ2UpOwotCi0gICAgICAgIG1Nb3VudEJ1dHRvbiA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLm1vdW50X2J1dHRvbik7Ci0gICAgICAgIG1Nb3VudEJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7Ci0gICAgICAgIG1Vbm1vdW50QnV0dG9uID0gKEJ1dHRvbikgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQudW5tb3VudF9idXR0b24pOwotICAgICAgICBtVW5tb3VudEJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7Ci0gICAgICAgIG1Qcm9ncmVzc0JhciA9IChQcm9ncmVzc0JhcikgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQucHJvZ3Jlc3MpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzd2l0Y2hEaXNwbGF5KGJvb2xlYW4gdXNiU3RvcmFnZUluVXNlKSB7Ci0gICAgICAgIGlmICh1c2JTdG9yYWdlSW5Vc2UpIHsKLSAgICAgICAgICAgIG1Qcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICBtVW5tb3VudEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICBtTW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICAgICAgbUljb24uc2V0SW1hZ2VSZXNvdXJjZShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnVzYl9hbmRyb2lkX2Nvbm5lY3RlZCk7Ci0gICAgICAgICAgICBtQmFubmVyLnNldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSk7Ci0gICAgICAgICAgICBtTWVzc2FnZS5zZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtUHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICAgICAgbVVubW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICAgICAgbU1vdW50QnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgICAgIG1JY29uLnNldEltYWdlUmVzb3VyY2UoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS51c2JfYW5kcm9pZCk7Ci0gICAgICAgICAgICBtQmFubmVyLnNldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2VfdGl0bGUpOwotICAgICAgICAgICAgbU1lc3NhZ2Uuc2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9tZXNzYWdlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uUmVzdW1lKCkgewotICAgICAgICBzdXBlci5vblJlc3VtZSgpOwotCi0gICAgICAgIG1TdG9yYWdlTWFuYWdlci5yZWdpc3Rlckxpc3RlbmVyKG1TdG9yYWdlTGlzdGVuZXIpOwotICAgICAgICByZWdpc3RlclJlY2VpdmVyKG1CYXR0ZXJ5UmVjZWl2ZXIsIG5ldyBJbnRlbnRGaWx0ZXIoSW50ZW50LkFDVElPTl9CQVRURVJZX0NIQU5HRUQpKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHN3aXRjaERpc3BsYXkobVN0b3JhZ2VNYW5hZ2VyLmlzVXNiTWFzc1N0b3JhZ2VFbmFibGVkKCkpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgIExvZy5lKFRBRywgIkZhaWxlZCB0byByZWFkIFVNUyBlbmFibGUgc3RhdGUiLCBleCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBvblBhdXNlKCkgewotICAgICAgICBzdXBlci5vblBhdXNlKCk7Ci0gICAgICAgIAotICAgICAgICB1bnJlZ2lzdGVyUmVjZWl2ZXIobUJhdHRlcnlSZWNlaXZlcik7Ci0gICAgICAgIGlmIChtU3RvcmFnZU1hbmFnZXIgPT0gbnVsbCAmJiBtU3RvcmFnZUxpc3RlbmVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1TdG9yYWdlTWFuYWdlci51bnJlZ2lzdGVyTGlzdGVuZXIobVN0b3JhZ2VMaXN0ZW5lcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlQmF0dGVyeUNoYW5nZWQoSW50ZW50IGludGVudCkgewotICAgICAgICBpbnQgcGx1Z2dlZFR5cGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoInBsdWdnZWQiLCAwKTsKLSAgICAgICAgaWYgKHBsdWdnZWRUeXBlID09IDApIHsKLSAgICAgICAgICAgIC8vIEl0IHdhcyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgcGx1Zywgc28gZmluaXNoCi0gICAgICAgICAgICBmaW5pc2goKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgSU1vdW50U2VydmljZSBnZXRNb3VudFNlcnZpY2UoKSB7Ci0gICAgICAgIElCaW5kZXIgc2VydmljZSA9IFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoIm1vdW50Iik7Ci0gICAgICAgIGlmIChzZXJ2aWNlICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBJTW91bnRTZXJ2aWNlLlN0dWIuYXNJbnRlcmZhY2Uoc2VydmljZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIERpYWxvZyBvbkNyZWF0ZURpYWxvZyhpbnQgaWQsIEJ1bmRsZSBhcmdzKSB7Ci0gICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBETEdfQ09ORklSTV9LSUxMX1NUT1JBR0VfVVNFUlM6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IEFsZXJ0RGlhbG9nLkJ1aWxkZXIodGhpcykKLSAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKFIuc3RyaW5nLmRsZ19jb25maXJtX2tpbGxfc3RvcmFnZV91c2Vyc190aXRsZSkKLSAgICAgICAgICAgICAgICAgICAgLnNldFBvc2l0aXZlQnV0dG9uKFIuc3RyaW5nLmRsZ19vaywgbmV3IERpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKERpYWxvZ0ludGVyZmFjZSBkaWFsb2csIGludCB3aGljaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaFVzYk1hc3NTdG9yYWdlQXN5bmModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9fSkKLSAgICAgICAgICAgICAgICAgICAgLnNldE5lZ2F0aXZlQnV0dG9uKFIuc3RyaW5nLmNhbmNlbCwgbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgLnNldE1lc3NhZ2UoUi5zdHJpbmcuZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RleHQpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRPbkNhbmNlbExpc3RlbmVyKHRoaXMpCi0gICAgICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKLSAgICAgICAgY2FzZSBETEdfRVJST1JfU0hBUklORzoKLSAgICAgICAgICAgIHJldHVybiBuZXcgQWxlcnREaWFsb2cuQnVpbGRlcih0aGlzKQotICAgICAgICAgICAgICAgICAgICAuc2V0VGl0bGUoUi5zdHJpbmcuZGxnX2Vycm9yX3RpdGxlKQotICAgICAgICAgICAgICAgICAgICAuc2V0TmV1dHJhbEJ1dHRvbihSLnN0cmluZy5kbGdfb2ssIG51bGwpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRNZXNzYWdlKFIuc3RyaW5nLnVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRPbkNhbmNlbExpc3RlbmVyKHRoaXMpCi0gICAgICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgc2hvd0RpYWxvZ0lubmVyKGludCBpZCkgewotICAgICAgICByZW1vdmVEaWFsb2coaWQpOwotICAgICAgICBzaG93RGlhbG9nKGlkKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgc3dpdGNoVXNiTWFzc1N0b3JhZ2VBc3luYyhib29sZWFuIG9uKSB7Ci0gICAgICAgIG1Vbm1vdW50QnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgbU1vdW50QnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLQotICAgICAgICBtUHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAvLyB3aWxsIGJlIGhpZGRlbiBvbmNlIFVTQiBtYXNzIHN0b3JhZ2Uga2lja3MgaW4gKG9yIGZhaWxzKQotICAgICAgICAKLSAgICAgICAgZmluYWwgYm9vbGVhbiBfb24gPSBvbjsKLSAgICAgICAgbmV3IFRocmVhZCgpIHsKLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICBpZiAoX29uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TdG9yYWdlTWFuYWdlci5lbmFibGVVc2JNYXNzU3RvcmFnZSgpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TdG9yYWdlTWFuYWdlci5kaXNhYmxlVXNiTWFzc1N0b3JhZ2UoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0uc3RhcnQoKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgY2hlY2tTdG9yYWdlVXNlcnMoKSB7Ci0gICAgICAgIElNb3VudFNlcnZpY2UgaW1zID0gZ2V0TW91bnRTZXJ2aWNlKCk7Ci0gICAgICAgIGlmIChpbXMgPT0gbnVsbCkgewotICAgICAgICAgICAgLy8gRGlzcGxheSBlcnJvciBkaWFsb2cKLSAgICAgICAgICAgIHNob3dEaWFsb2dJbm5lcihETEdfRVJST1JfU0hBUklORyk7Ci0gICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGV4dFN0b3JhZ2VQYXRoID0gRW52aXJvbm1lbnQuZ2V0RXh0ZXJuYWxTdG9yYWdlRGlyZWN0b3J5KCkudG9TdHJpbmcoKTsKLSAgICAgICAgYm9vbGVhbiBzaG93RGlhbG9nID0gZmFsc2U7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpbnRbXSBzdFVzZXJzID0gaW1zLmdldFN0b3JhZ2VVc2VycyhleHRTdG9yYWdlUGF0aCk7Ci0gICAgICAgICAgICBpZiAoc3RVc2VycyAhPSBudWxsICYmIHN0VXNlcnMubGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAgIHNob3dEaWFsb2cgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBMaXN0IG9mIGFwcGxpY2F0aW9ucyBvbiBzZGNhcmQuCi0gICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyIGFtID0gKEFjdGl2aXR5TWFuYWdlcilnZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQUNUSVZJVFlfU0VSVklDRSk7Ci0gICAgICAgICAgICAgICAgTGlzdDxBcHBsaWNhdGlvbkluZm8+IGluZm9MaXN0ID0gYW0uZ2V0UnVubmluZ0V4dGVybmFsQXBwbGljYXRpb25zKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGluZm9MaXN0ICE9IG51bGwgJiYgaW5mb0xpc3Quc2l6ZSgpID4gMCkgewotICAgICAgICAgICAgICAgICAgICBzaG93RGlhbG9nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAvLyBEaXNwbGF5IGVycm9yIGRpYWxvZwotICAgICAgICAgICAgc2hvd0RpYWxvZ0lubmVyKERMR19FUlJPUl9TSEFSSU5HKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2hvd0RpYWxvZykgewotICAgICAgICAgICAgLy8gRGlzcGxheSBkaWFsb2cgdG8gdXNlcgotICAgICAgICAgICAgc2hvd0RpYWxvZ0lubmVyKERMR19DT05GSVJNX0tJTExfU1RPUkFHRV9VU0VSUyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBMb2cuaShUQUcsICJFbmFibGluZyBVTVMiKTsKLSAgICAgICAgICAgIHN3aXRjaFVzYk1hc3NTdG9yYWdlQXN5bmModHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgewotICAgICAgICBpZiAodiA9PSBtTW91bnRCdXR0b24pIHsKLSAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGxpc3Qgb2Ygc3RvcmFnZSB1c2VycyBhbmQgZGlzcGxheSBkaWFsb2cgaWYgbmVlZGVkLgotICAgICAgICAgICAgY2hlY2tTdG9yYWdlVXNlcnMoKTsKLSAgICAgICAgfSBlbHNlIGlmICh2ID09IG1Vbm1vdW50QnV0dG9uKSB7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBMb2cuaShUQUcsICJEaXNhYmxpbmcgVU1TIik7Ci0gICAgICAgICAgICBzd2l0Y2hVc2JNYXNzU3RvcmFnZUFzeW5jKGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIG9uQ2FuY2VsKERpYWxvZ0ludGVyZmFjZSBkaWFsb2cpIHsKLSAgICAgICAgZmluaXNoKCk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qbmkvQW5kcm9pZC5tayBiL3NlcnZpY2VzL2puaS9BbmRyb2lkLm1rCmluZGV4IDlkMjc2MGUuLjQ5OWNhODYgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2puaS9BbmRyb2lkLm1rCisrKyBiL3NlcnZpY2VzL2puaS9BbmRyb2lkLm1rCkBAIC01LDE2ICs1LDE5IEBACiAgICAgY29tX2FuZHJvaWRfc2VydmVyX0FsYXJtTWFuYWdlclNlcnZpY2UuY3BwIFwKICAgICBjb21fYW5kcm9pZF9zZXJ2ZXJfQmF0dGVyeVNlcnZpY2UuY3BwIFwKICAgICBjb21fYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZS5jcHAgXAorICAgIGNvbV9hbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXIuY3BwIFwKICAgICBjb21fYW5kcm9pZF9zZXJ2ZXJfTGlnaHRzU2VydmljZS5jcHAgXAogICAgIGNvbV9hbmRyb2lkX3NlcnZlcl9TZW5zb3JTZXJ2aWNlLmNwcCBcCiAgICAgY29tX2FuZHJvaWRfc2VydmVyX1N5c3RlbVNlcnZlci5jcHAgXAogICAgIGNvbV9hbmRyb2lkX3NlcnZlcl9WaWJyYXRvclNlcnZpY2UuY3BwIFwKKwljb21fYW5kcm9pZF9zZXJ2ZXJfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlci5jcHAgXAogICAgIG9ubG9hZC5jcHAKIAogTE9DQUxfQ19JTkNMVURFUyArPSBcCiAJJChKTklfSF9JTkNMVURFKQogCiBMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKKyAgICBsaWJhbmRyb2lkX3J1bnRpbWUgXAogCWxpYmN1dGlscyBcCiAJbGliaGFyZHdhcmUgXAogCWxpYmhhcmR3YXJlX2xlZ2FjeSBcCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlci5jcHAgYi9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBmODU2YgotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2puaS9jb21fYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDIyMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIklucHV0TWFuYWdlci1KTkkiCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IElucHV0UmVhZGVyUG9saWN5CisjZGVmaW5lIERFQlVHX0lOUFVUX1JFQURFUl9QT0xJQ1kgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgSW5wdXREaXNwYXRjaGVyUG9saWN5CisjZGVmaW5lIERFQlVHX0lOUFVUX0RJU1BBVENIRVJfUE9MSUNZIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IGlucHV0IGZvY3VzIHRyYWNraW5nCisjZGVmaW5lIERFQlVHX0ZPQ1VTIDAKKworI2luY2x1ZGUgIkpOSUhlbHAuaCIKKyNpbmNsdWRlICJqbmkuaCIKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dFJlYWRlci5oPgorI2luY2x1ZGUgPHVpL0lucHV0RGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHVpL0lucHV0TWFuYWdlci5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorI2luY2x1ZGUgIi4uLy4uL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5oIgorI2luY2x1ZGUgIi4uLy4uL2NvcmUvam5pL2FuZHJvaWRfdmlld19Nb3Rpb25FdmVudC5oIgorI2luY2x1ZGUgIi4uLy4uL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBXaW5kb3cgZmxhZ3MgZnJvbSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcworZW51bSB7CisgICAgRkxBR19BTExPV19MT0NLX1dISUxFX1NDUkVFTl9PTiAgICAgPSAweDAwMDAwMDAxLAorICAgIEZMQUdfRElNX0JFSElORCAgICAgICAgPSAweDAwMDAwMDAyLAorICAgIEZMQUdfQkxVUl9CRUhJTkQgICAgICAgID0gMHgwMDAwMDAwNCwKKyAgICBGTEFHX05PVF9GT0NVU0FCTEUgICAgICA9IDB4MDAwMDAwMDgsCisgICAgRkxBR19OT1RfVE9VQ0hBQkxFICAgICAgPSAweDAwMDAwMDEwLAorICAgIEZMQUdfTk9UX1RPVUNIX01PREFMICAgID0gMHgwMDAwMDAyMCwKKyAgICBGTEFHX1RPVUNIQUJMRV9XSEVOX1dBS0lORyA9IDB4MDAwMDAwNDAsCisgICAgRkxBR19LRUVQX1NDUkVFTl9PTiAgICAgPSAweDAwMDAwMDgwLAorICAgIEZMQUdfTEFZT1VUX0lOX1NDUkVFTiAgID0gMHgwMDAwMDEwMCwKKyAgICBGTEFHX0xBWU9VVF9OT19MSU1JVFMgICA9IDB4MDAwMDAyMDAsCisgICAgRkxBR19GVUxMU0NSRUVOICAgICAgPSAweDAwMDAwNDAwLAorICAgIEZMQUdfRk9SQ0VfTk9UX0ZVTExTQ1JFRU4gICA9IDB4MDAwMDA4MDAsCisgICAgRkxBR19ESVRIRVIgICAgICAgICAgICAgPSAweDAwMDAxMDAwLAorICAgIEZMQUdfU0VDVVJFICAgICAgICAgICAgID0gMHgwMDAwMjAwMCwKKyAgICBGTEFHX1NDQUxFRCAgICAgICAgICAgICA9IDB4MDAwMDQwMDAsCisgICAgRkxBR19JR05PUkVfQ0hFRUtfUFJFU1NFUyAgICA9IDB4MDAwMDgwMDAsCisgICAgRkxBR19MQVlPVVRfSU5TRVRfREVDT1IgPSAweDAwMDEwMDAwLAorICAgIEZMQUdfQUxUX0ZPQ1VTQUJMRV9JTSA9IDB4MDAwMjAwMDAsCisgICAgRkxBR19XQVRDSF9PVVRTSURFX1RPVUNIID0gMHgwMDA0MDAwMCwKKyAgICBGTEFHX1NIT1dfV0hFTl9MT0NLRUQgPSAweDAwMDgwMDAwLAorICAgIEZMQUdfU0hPV19XQUxMUEFQRVIgPSAweDAwMTAwMDAwLAorICAgIEZMQUdfVFVSTl9TQ1JFRU5fT04gPSAweDAwMjAwMDAwLAorICAgIEZMQUdfRElTTUlTU19LRVlHVUFSRCA9IDB4MDA0MDAwMDAsCisgICAgRkxBR19JTU1FUlNJVkUgPSAweDAwODAwMDAwLAorICAgIEZMQUdfS0VFUF9TVVJGQUNFX1dISUxFX0FOSU1BVElORyA9IDB4MTAwMDAwMDAsCisgICAgRkxBR19DT01QQVRJQkxFX1dJTkRPVyA9IDB4MjAwMDAwMDAsCisgICAgRkxBR19TWVNURU1fRVJST1IgPSAweDQwMDAwMDAwLAorfTsKKworLy8gV2luZG93IHR5cGVzIGZyb20gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMKK2VudW0geworICAgIEZJUlNUX0FQUExJQ0FUSU9OX1dJTkRPVyA9IDEsCisgICAgVFlQRV9CQVNFX0FQUExJQ0FUSU9OICAgPSAxLAorICAgIFRZUEVfQVBQTElDQVRJT04gICAgICAgID0gMiwKKyAgICBUWVBFX0FQUExJQ0FUSU9OX1NUQVJUSU5HID0gMywKKyAgICBMQVNUX0FQUExJQ0FUSU9OX1dJTkRPVyA9IDk5LAorICAgIEZJUlNUX1NVQl9XSU5ET1cgICAgICAgID0gMTAwMCwKKyAgICBUWVBFX0FQUExJQ0FUSU9OX1BBTkVMICA9IEZJUlNUX1NVQl9XSU5ET1csCisgICAgVFlQRV9BUFBMSUNBVElPTl9NRURJQSAgPSBGSVJTVF9TVUJfV0lORE9XKzEsCisgICAgVFlQRV9BUFBMSUNBVElPTl9TVUJfUEFORUwgPSBGSVJTVF9TVUJfV0lORE9XKzIsCisgICAgVFlQRV9BUFBMSUNBVElPTl9BVFRBQ0hFRF9ESUFMT0cgPSBGSVJTVF9TVUJfV0lORE9XKzMsCisgICAgVFlQRV9BUFBMSUNBVElPTl9NRURJQV9PVkVSTEFZICA9IEZJUlNUX1NVQl9XSU5ET1crNCwKKyAgICBMQVNUX1NVQl9XSU5ET1cgICAgICAgICA9IDE5OTksCisgICAgRklSU1RfU1lTVEVNX1dJTkRPVyAgICAgPSAyMDAwLAorICAgIFRZUEVfU1RBVFVTX0JBUiAgICAgICAgID0gRklSU1RfU1lTVEVNX1dJTkRPVywKKyAgICBUWVBFX1NFQVJDSF9CQVIgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMSwKKyAgICBUWVBFX1BIT05FICAgICAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMiwKKyAgICBUWVBFX1NZU1RFTV9BTEVSVCAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMywKKyAgICBUWVBFX0tFWUdVQVJEICAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crNCwKKyAgICBUWVBFX1RPQVNUICAgICAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crNSwKKyAgICBUWVBFX1NZU1RFTV9PVkVSTEFZICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crNiwKKyAgICBUWVBFX1BSSU9SSVRZX1BIT05FICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crNywKKyAgICBUWVBFX1NZU1RFTV9ESUFMT0cgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crOCwKKyAgICBUWVBFX0tFWUdVQVJEX0RJQUxPRyAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crOSwKKyAgICBUWVBFX1NZU1RFTV9FUlJPUiAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMTAsCisgICAgVFlQRV9JTlBVVF9NRVRIT0QgICAgICAgPSBGSVJTVF9TWVNURU1fV0lORE9XKzExLAorICAgIFRZUEVfSU5QVVRfTUVUSE9EX0RJQUxPRz0gRklSU1RfU1lTVEVNX1dJTkRPVysxMiwKKyAgICBUWVBFX1dBTExQQVBFUiAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMTMsCisgICAgVFlQRV9TVEFUVVNfQkFSX1BBTkVMICAgPSBGSVJTVF9TWVNURU1fV0lORE9XKzE0LAorICAgIExBU1RfU1lTVEVNX1dJTkRPVyAgICAgID0gMjk5OSwKK307CisKK2VudW0geworICAgIFBPV0VSX01BTkFHRVJfT1RIRVJfRVZFTlQgPSAwLAorICAgIFBPV0VSX01BTkFHRVJfQ0hFRUtfRVZFTlQgPSAxLAorICAgIFBPV0VSX01BTkFHRVJfVE9VQ0hfRVZFTlQgPSAyLCAvLyB0b3VjaCBldmVudHMgYXJlIFRPVUNIIGZvciAzMDBtcywgYW5kIHRoZW4gZWl0aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwIGV2ZW50cyBvciBMT05HX1RPVUNIIGV2ZW50cy4KKyAgICBQT1dFUl9NQU5BR0VSX0xPTkdfVE9VQ0hfRVZFTlQgPSAzLAorICAgIFBPV0VSX01BTkFHRVJfVE9VQ0hfVVBfRVZFTlQgPSA0LAorICAgIFBPV0VSX01BTkFHRVJfQlVUVE9OX0VWRU5UID0gNSwgLy8gQnV0dG9uIGFuZCB0cmFja2JhbGwgZXZlbnRzLgorfTsKKworLy8gRGVsYXkgYmV0d2VlbiByZXBvcnRpbmcgbG9uZyB0b3VjaCBldmVudHMgdG8gdGhlIHBvd2VyIG1hbmFnZXIuCitjb25zdCBuc2Vjc190IEVWRU5UX0lHTk9SRV9EVVJBVElPTiA9IDMwMCAqIDEwMDAwMDBMTDsgLy8gMzAwIG1zCisKKy8vIERlZmF1bHQgaW5wdXQgZGlzcGF0Y2hpbmcgdGltZW91dCBpZiB0aGVyZSBpcyBubyBmb2N1c2VkIGFwcGxpY2F0aW9uIG9yIHBhdXNlZCB3aW5kb3cKKy8vIGZyb20gd2hpY2ggdG8gZGV0ZXJtaW5lIGFuIGFwcHJvcHJpYXRlIGRpc3BhdGNoaW5nIHRpbWVvdXQuCitjb25zdCBuc2Vjc190IERFRkFVTFRfSU5QVVRfRElTUEFUQ0hJTkdfVElNRU9VVCA9IDUwMDAgKiAxMDAwMDAwTEw7IC8vIDUgc2VjCisKKy8vIE1pbmltdW0gYW1vdW50IG9mIHRpbWUgdG8gcHJvdmlkZSB0byB0aGUgaW5wdXQgZGlzcGF0Y2hlciBmb3IgZGVsaXZlcnkgb2YgYW4gZXZlbnQKKy8vIHJlZ2FyZGxlc3Mgb2YgaG93IGxvbmcgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdyB3YXMgcGF1c2VkLgorY29uc3QgbnNlY3NfdCBNSU5fSU5QVVRfRElTUEFUQ0hJTkdfVElNRU9VVCA9IDEwMDAgKiAxMDAwMDAwTEw7IC8vIDEgc2VjCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIHN0cnVjdCB7CisgICAgamNsYXNzIGNsYXp6OworCisgICAgam1ldGhvZElEIGlzU2NyZWVuT247CisgICAgam1ldGhvZElEIGlzU2NyZWVuQnJpZ2h0OworICAgIGptZXRob2RJRCBub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZDsKKyAgICBqbWV0aG9kSUQgbm90aWZ5TGlkU3dpdGNoQ2hhbmdlZDsKKyAgICBqbWV0aG9kSUQgbm90aWZ5SW5wdXRDaGFubmVsQnJva2VuOworICAgIGptZXRob2RJRCBub3RpZnlJbnB1dENoYW5uZWxBTlI7CisgICAgam1ldGhvZElEIG5vdGlmeUlucHV0Q2hhbm5lbFJlY292ZXJlZEZyb21BTlI7CisgICAgam1ldGhvZElEIG5vdGlmeUFOUjsKKyAgICBqbWV0aG9kSUQgdmlydHVhbEtleUZlZWRiYWNrOworICAgIGptZXRob2RJRCBpbnRlcmNlcHRLZXlCZWZvcmVRdWV1ZWluZzsKKyAgICBqbWV0aG9kSUQgaW50ZXJjZXB0S2V5QmVmb3JlRGlzcGF0Y2hpbmc7CisgICAgam1ldGhvZElEIGNoZWNrSW5qZWN0RXZlbnRzUGVybWlzc2lvbjsKKyAgICBqbWV0aG9kSUQgZ29Ub1NsZWVwOworICAgIGptZXRob2RJRCBwb2tlVXNlckFjdGl2aXR5OworICAgIGptZXRob2RJRCBub3RpZnlBcHBTd2l0Y2hDb21pbmc7CisgICAgam1ldGhvZElEIGZpbHRlclRvdWNoRXZlbnRzOworICAgIGptZXRob2RJRCBmaWx0ZXJKdW1weVRvdWNoRXZlbnRzOworICAgIGptZXRob2RJRCBnZXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnM7CisgICAgam1ldGhvZElEIGdldEV4Y2x1ZGVkRGV2aWNlTmFtZXM7Cit9IGdDYWxsYmFja3NDbGFzc0luZm87CisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGpjbGFzcyBjbGF6ejsKKworICAgIGpmaWVsZElEIHNjYW5Db2RlOworICAgIGpmaWVsZElEIGNlbnRlclg7CisgICAgamZpZWxkSUQgY2VudGVyWTsKKyAgICBqZmllbGRJRCB3aWR0aDsKKyAgICBqZmllbGRJRCBoZWlnaHQ7Cit9IGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mbzsKKworc3RhdGljIHN0cnVjdCB7CisgICAgamNsYXNzIGNsYXp6OworCisgICAgamZpZWxkSUQgaW5wdXRDaGFubmVsOworICAgIGpmaWVsZElEIGxheW91dFBhcmFtc0ZsYWdzOworICAgIGpmaWVsZElEIGxheW91dFBhcmFtc1R5cGU7CisgICAgamZpZWxkSUQgZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3M7CisgICAgamZpZWxkSUQgZnJhbWVMZWZ0OworICAgIGpmaWVsZElEIGZyYW1lVG9wOworICAgIGpmaWVsZElEIHRvdWNoYWJsZUFyZWFMZWZ0OworICAgIGpmaWVsZElEIHRvdWNoYWJsZUFyZWFUb3A7CisgICAgamZpZWxkSUQgdG91Y2hhYmxlQXJlYVJpZ2h0OworICAgIGpmaWVsZElEIHRvdWNoYWJsZUFyZWFCb3R0b207CisgICAgamZpZWxkSUQgdmlzaWJsZTsKKyAgICBqZmllbGRJRCBoYXNGb2N1czsKKyAgICBqZmllbGRJRCBoYXNXYWxscGFwZXI7CisgICAgamZpZWxkSUQgcGF1c2VkOworICAgIGpmaWVsZElEIG93bmVyUGlkOworICAgIGpmaWVsZElEIG93bmVyVWlkOworfSBnSW5wdXRXaW5kb3dDbGFzc0luZm87CisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGpjbGFzcyBjbGF6ejsKKworICAgIGpmaWVsZElEIG5hbWU7CisgICAgamZpZWxkSUQgZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3M7CisgICAgamZpZWxkSUQgdG9rZW47Cit9IGdJbnB1dEFwcGxpY2F0aW9uQ2xhc3NJbmZvOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBpbmxpbmUgbnNlY3NfdCBub3coKSB7CisgICAgcmV0dXJuIHN5c3RlbVRpbWUoU1lTVEVNX1RJTUVfTU9OT1RPTklDKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBOYXRpdmVJbnB1dE1hbmFnZXIgOiBwdWJsaWMgdmlydHVhbCBSZWZCYXNlLAorICAgIHB1YmxpYyB2aXJ0dWFsIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlLAorICAgIHB1YmxpYyB2aXJ0dWFsIElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZSB7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TmF0aXZlSW5wdXRNYW5hZ2VyKCk7CisKK3B1YmxpYzoKKyAgICBOYXRpdmVJbnB1dE1hbmFnZXIoam9iamVjdCBjYWxsYmFja3NPYmopOworCisgICAgaW5saW5lIHNwPElucHV0TWFuYWdlcj4gZ2V0SW5wdXRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbUlucHV0TWFuYWdlcjsgfQorCisgICAgdm9pZCBzZXREaXNwbGF5U2l6ZShpbnQzMl90IGRpc3BsYXlJZCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQgc2V0RGlzcGxheU9yaWVudGF0aW9uKGludDMyX3QgZGlzcGxheUlkLCBpbnQzMl90IG9yaWVudGF0aW9uKTsKKworICAgIHN0YXR1c190IHJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsCisgICAgICAgICAgICBqd2VhayBpbnB1dENoYW5uZWxPYmpXZWFrKTsKKyAgICBzdGF0dXNfdCB1bnJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpOworCisgICAgdm9pZCBzZXRJbnB1dFdpbmRvd3MoSk5JRW52KiBlbnYsIGpvYmplY3RBcnJheSB3aW5kb3dPYmpBcnJheSk7CisgICAgdm9pZCBzZXRGb2N1c2VkQXBwbGljYXRpb24oSk5JRW52KiBlbnYsIGpvYmplY3QgYXBwbGljYXRpb25PYmopOworICAgIHZvaWQgc2V0SW5wdXREaXNwYXRjaE1vZGUoYm9vbCBlbmFibGVkLCBib29sIGZyb3plbik7CisgICAgdm9pZCBwcmVlbXB0SW5wdXREaXNwYXRjaCgpOworCisgICAgLyogLS0tIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIC0tLSAqLworCisgICAgdmlydHVhbCBib29sIGdldERpc3BsYXlJbmZvKGludDMyX3QgZGlzcGxheUlkLAorICAgICAgICAgICAgaW50MzJfdCogd2lkdGgsIGludDMyX3QqIGhlaWdodCwgaW50MzJfdCogb3JpZW50YXRpb24pOworICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsS2V5RmVlZGJhY2sobnNlY3NfdCB3aGVuLCBpbnQzMl90IGRldmljZUlkLAorICAgICAgICAgICAgaW50MzJfdCBhY3Rpb24sIGludDMyX3QgZmxhZ3MsIGludDMyX3Qga2V5Q29kZSwKKyAgICAgICAgICAgIGludDMyX3Qgc2NhbkNvZGUsIGludDMyX3QgbWV0YVN0YXRlLCBuc2Vjc190IGRvd25UaW1lKTsKKyAgICB2aXJ0dWFsIGludDMyX3QgaW50ZXJjZXB0S2V5KG5zZWNzX3Qgd2hlbiwgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgICAgIGJvb2wgZG93biwgaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IHNjYW5Db2RlLCB1aW50MzJfdCBwb2xpY3lGbGFncyk7CisgICAgdmlydHVhbCBpbnQzMl90IGludGVyY2VwdFRyYWNrYmFsbChuc2Vjc190IHdoZW4sIGJvb2wgYnV0dG9uQ2hhbmdlZCwgYm9vbCBidXR0b25Eb3duLAorICAgICAgICAgICAgYm9vbCByb2xsZWQpOworICAgIHZpcnR1YWwgaW50MzJfdCBpbnRlcmNlcHRUb3VjaChuc2Vjc190IHdoZW4pOworICAgIHZpcnR1YWwgaW50MzJfdCBpbnRlcmNlcHRTd2l0Y2gobnNlY3NfdCB3aGVuLCBpbnQzMl90IHN3aXRjaENvZGUsIGludDMyX3Qgc3dpdGNoVmFsdWUpOworICAgIHZpcnR1YWwgYm9vbCBmaWx0ZXJUb3VjaEV2ZW50cygpOworICAgIHZpcnR1YWwgYm9vbCBmaWx0ZXJKdW1weVRvdWNoRXZlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIGdldFZpcnR1YWxLZXlEZWZpbml0aW9ucyhjb25zdCBTdHJpbmc4JiBkZXZpY2VOYW1lLAorICAgICAgICAgICAgVmVjdG9yPElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpWaXJ0dWFsS2V5RGVmaW5pdGlvbj4mIG91dFZpcnR1YWxLZXlEZWZpbml0aW9ucyk7CisgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkRGV2aWNlTmFtZXMoVmVjdG9yPFN0cmluZzg+JiBvdXRFeGNsdWRlZERldmljZU5hbWVzKTsKKworICAgIC8qIC0tLSBJbnB1dERpc3BhdGNoZXJQb2xpY3lJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gLS0tICovCisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQobnNlY3NfdCB3aGVuKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDaGFubmVsQnJva2VuKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCk7CisgICAgdmlydHVhbCBib29sIG5vdGlmeUlucHV0Q2hhbm5lbEFOUihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsCisgICAgICAgICAgICBuc2Vjc190JiBvdXROZXdUaW1lb3V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpOworICAgIHZpcnR1YWwgbnNlY3NfdCBnZXRLZXlSZXBlYXRUaW1lb3V0KCk7CisgICAgdmlydHVhbCBpbnQzMl90IHdhaXRGb3JLZXlFdmVudFRhcmdldHMoS2V5RXZlbnQqIGtleUV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpOworICAgIHZpcnR1YWwgaW50MzJfdCB3YWl0Rm9yTW90aW9uRXZlbnRUYXJnZXRzKE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCwgdWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW5wdXRXaW5kb3cgeworICAgICAgICBzcDxJbnB1dENoYW5uZWw+IGlucHV0Q2hhbm5lbDsKKyAgICAgICAgaW50MzJfdCBsYXlvdXRQYXJhbXNGbGFnczsKKyAgICAgICAgaW50MzJfdCBsYXlvdXRQYXJhbXNUeXBlOworICAgICAgICBuc2Vjc190IGRpc3BhdGNoaW5nVGltZW91dDsKKyAgICAgICAgaW50MzJfdCBmcmFtZUxlZnQ7CisgICAgICAgIGludDMyX3QgZnJhbWVUb3A7CisgICAgICAgIGludDMyX3QgdG91Y2hhYmxlQXJlYUxlZnQ7CisgICAgICAgIGludDMyX3QgdG91Y2hhYmxlQXJlYVRvcDsKKyAgICAgICAgaW50MzJfdCB0b3VjaGFibGVBcmVhUmlnaHQ7CisgICAgICAgIGludDMyX3QgdG91Y2hhYmxlQXJlYUJvdHRvbTsKKyAgICAgICAgYm9vbCB2aXNpYmxlOworICAgICAgICBib29sIGhhc0ZvY3VzOworICAgICAgICBib29sIGhhc1dhbGxwYXBlcjsKKyAgICAgICAgYm9vbCBwYXVzZWQ7CisgICAgICAgIGludDMyX3Qgb3duZXJQaWQ7CisgICAgICAgIGludDMyX3Qgb3duZXJVaWQ7CisKKyAgICAgICAgaW5saW5lIGJvb2wgdG91Y2hhYmxlQXJlYUNvbnRhaW5zUG9pbnQoaW50MzJfdCB4LCBpbnQzMl90IHkpIHsKKyAgICAgICAgICAgIHJldHVybiB4ID49IHRvdWNoYWJsZUFyZWFMZWZ0ICYmIHggPD0gdG91Y2hhYmxlQXJlYVJpZ2h0CisgICAgICAgICAgICAgICAgICAgICYmIHkgPj0gdG91Y2hhYmxlQXJlYVRvcCAmJiB5IDw9IHRvdWNoYWJsZUFyZWFCb3R0b207CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3RydWN0IElucHV0QXBwbGljYXRpb24geworICAgICAgICBTdHJpbmc4IG5hbWU7CisgICAgICAgIG5zZWNzX3QgZGlzcGF0Y2hpbmdUaW1lb3V0OworICAgICAgICBqd2VhayB0b2tlbk9ialdlYWs7CisgICAgfTsKKworICAgIGNsYXNzIEFOUlRpbWVyIHsKKyAgICAgICAgZW51bSBCdWRnZXQgeworICAgICAgICAgICAgU1lTVEVNID0gMCwKKyAgICAgICAgICAgIEFQUExJQ0FUSU9OID0gMQorICAgICAgICB9OworCisgICAgICAgIEJ1ZGdldCBtQnVkZ2V0OworICAgICAgICBuc2Vjc190IG1TdGFydFRpbWU7CisgICAgICAgIGJvb2wgbUZyb3plbjsKKyAgICAgICAgSW5wdXRXaW5kb3cqIG1QYXVzZWRXaW5kb3c7CisKKyAgICBwdWJsaWM6CisgICAgICAgIEFOUlRpbWVyKCk7CisKKyAgICAgICAgdm9pZCBkaXNwYXRjaEZyb3plbkJ5U3lzdGVtKCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hQYXVzZWRCeUFwcGxpY2F0aW9uKElucHV0V2luZG93KiBwYXVzZWRXaW5kb3cpOworICAgICAgICBib29sIHdhaXRGb3JEaXNwYXRjaFN0YXRlQ2hhbmdlTGQoTmF0aXZlSW5wdXRNYW5hZ2VyKiBpbnB1dE1hbmFnZXIpOworCisgICAgICAgIG5zZWNzX3QgZ2V0VGltZVNwZW50V2FpdGluZ0ZvckFwcGxpY2F0aW9uKCkgY29uc3Q7CisgICAgfTsKKworICAgIHNwPElucHV0TWFuYWdlcj4gbUlucHV0TWFuYWdlcjsKKworICAgIGpvYmplY3QgbUNhbGxiYWNrc09iajsKKworICAgIC8vIENhY2hlZCBmaWx0ZXJpbmcgcG9saWNpZXMuCisgICAgaW50MzJfdCBtRmlsdGVyVG91Y2hFdmVudHM7CisgICAgaW50MzJfdCBtRmlsdGVySnVtcHlUb3VjaEV2ZW50czsKKworICAgIC8vIENhY2hlZCBkaXNwbGF5IHN0YXRlLiAgKGxvY2sgbURpc3BsYXlMb2NrKQorICAgIE11dGV4IG1EaXNwbGF5TG9jazsKKyAgICBpbnQzMl90IG1EaXNwbGF5V2lkdGgsIG1EaXNwbGF5SGVpZ2h0OworICAgIGludDMyX3QgbURpc3BsYXlPcmllbnRhdGlvbjsKKworICAgIC8vIENhbGxiYWNrcy4KKyAgICBib29sIGlzU2NyZWVuT24oKTsKKyAgICBib29sIGlzU2NyZWVuQnJpZ2h0KCk7CisKKyAgICAvLyBXZWFrIHJlZmVyZW5jZXMgdG8gYWxsIGN1cnJlbnRseSByZWdpc3RlcmVkIGlucHV0IGNoYW5uZWxzIGJ5IHJlY2VpdmUgZmQuCisgICAgTXV0ZXggbUlucHV0Q2hhbm5lbFJlZ2lzdHJ5TG9jazsKKyAgICBLZXllZFZlY3RvcjxpbnQsIGp3ZWFrPiBtSW5wdXRDaGFubmVsT2JqV2Vha0J5UmVjZWl2ZUZkOworCisgICAgam9iamVjdCBnZXRJbnB1dENoYW5uZWxPYmpMb2NhbChKTklFbnYqIGVudiwgY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKTsKKworICAgIC8vIElucHV0IHRhcmdldCBhbmQgZm9jdXMgdHJhY2tpbmcuICAobG9jayBtRGlzcGF0Y2hMb2NrKQorICAgIE11dGV4IG1EaXNwYXRjaExvY2s7CisgICAgQ29uZGl0aW9uIG1EaXNwYXRjaFN0YXRlQ2hhbmdlZDsKKworICAgIGJvb2wgbURpc3BhdGNoRW5hYmxlZDsKKyAgICBib29sIG1EaXNwYXRjaEZyb3plbjsKKyAgICBib29sIG1XaW5kb3dzUmVhZHk7CisgICAgVmVjdG9yPElucHV0V2luZG93PiBtV2luZG93czsKKyAgICBWZWN0b3I8SW5wdXRXaW5kb3cqPiBtV2FsbHBhcGVyV2luZG93czsKKworICAgIC8vIEZvY3VzIHRyYWNraW5nIGZvciBrZXlzLCB0cmFja2JhbGwsIGV0Yy4KKyAgICBJbnB1dFdpbmRvdyogbUZvY3VzZWRXaW5kb3c7CisKKyAgICAvLyBGb2N1cyB0cmFja2luZyBmb3IgdG91Y2guCisgICAgYm9vbCBtVG91Y2hEb3duOworICAgIElucHV0V2luZG93KiBtVG91Y2hlZFdpbmRvdzsgICAgICAgICAgICAgICAgICAgLy8gcHJpbWFyeSB0YXJnZXQgZm9yIGN1cnJlbnQgZG93bgorICAgIFZlY3RvcjxJbnB1dFdpbmRvdyo+IG1Ub3VjaGVkV2FsbHBhcGVyV2luZG93czsgLy8gd2FsbHBhcGVyIHRhcmdldHMKKworICAgIFZlY3RvcjxJbnB1dFdpbmRvdyo+IG1UZW1wVG91Y2hlZE91dHNpZGVXaW5kb3dzOyAvLyB0ZW1wb3Jhcnkgb3V0c2lkZSB0b3VjaCB0YXJnZXRzCisgICAgVmVjdG9yPHNwPElucHV0Q2hhbm5lbD4gPiBtVGVtcFRvdWNoZWRXYWxscGFwZXJDaGFubmVsczsgLy8gdGVtcG9yYXJ5IHdhbGxwYXBlciB0YXJnZXRzCisKKyAgICAvLyBGb2N1c2VkIGFwcGxpY2F0aW9uLgorICAgIElucHV0QXBwbGljYXRpb24qIG1Gb2N1c2VkQXBwbGljYXRpb247CisgICAgSW5wdXRBcHBsaWNhdGlvbiBtRm9jdXNlZEFwcGxpY2F0aW9uU3RvcmFnZTsgLy8gcHJlYWxsb2NhdGVkIHN0b3JhZ2UgZm9yIG1Gb2N1c2VkQXBwbGljYXRpb24KKworICAgIHZvaWQgZHVtcERpc3BhdGNoU3RhdGVMZCgpOworCisgICAgYm9vbCBub3RpZnlBTlIoam9iamVjdCB0b2tlbk9iaiwgbnNlY3NfdCYgb3V0TmV3VGltZW91dCk7CisgICAgdm9pZCByZWxlYXNlRm9jdXNlZEFwcGxpY2F0aW9uTGQoSk5JRW52KiBlbnYpOworCisgICAgaW50MzJfdCB3YWl0Rm9yRm9jdXNlZFdpbmRvd0xkKHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLAorICAgICAgICAgICAgVmVjdG9yPElucHV0VGFyZ2V0PiYgb3V0VGFyZ2V0cywgSW5wdXRXaW5kb3cqJiBvdXRGb2N1c2VkV2luZG93KTsKKyAgICBpbnQzMl90IHdhaXRGb3JUb3VjaGVkV2luZG93TGQoTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsCisgICAgICAgICAgICBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzLCBJbnB1dFdpbmRvdyomIG91dFRvdWNoZWRXaW5kb3cpOworCisgICAgdm9pZCByZWxlYXNlVG91Y2hlZFdpbmRvd0xkKCk7CisKKyAgICBpbnQzMl90IGlkZW50aWZ5VHJhY2tiYWxsRXZlbnRUYXJnZXRzKE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCwgdWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzKTsKKyAgICBpbnQzMl90IGlkZW50aWZ5VG91Y2hFdmVudFRhcmdldHMoTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpOworCisgICAgYm9vbCBpbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZyhjb25zdCBJbnB1dFRhcmdldCYgdGFyZ2V0LAorICAgICAgICAgICAgY29uc3QgS2V5RXZlbnQqIGtleUV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncyk7CisKKyAgICB2b2lkIHBva2VVc2VyQWN0aXZpdHlJZk5lZWRlZChpbnQzMl90IHdpbmRvd1R5cGUsIGludDMyX3QgZXZlbnRUeXBlKTsKKyAgICB2b2lkIHBva2VVc2VyQWN0aXZpdHkobnNlY3NfdCBldmVudFRpbWUsIGludDMyX3QgZXZlbnRUeXBlKTsKKyAgICBib29sIGNoZWNrSW5qZWN0aW9uUGVybWlzc2lvbihjb25zdCBJbnB1dFdpbmRvdyogd2luZG93LAorICAgICAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCk7CisKKyAgICBzdGF0aWMgYm9vbCBwb3B1bGF0ZVdpbmRvdyhKTklFbnYqIGVudiwgam9iamVjdCB3aW5kb3dPYmosIElucHV0V2luZG93JiBvdXRXaW5kb3cpOworICAgIHN0YXRpYyB2b2lkIGFkZFRhcmdldChjb25zdCBJbnB1dFdpbmRvdyogd2luZG93LCBpbnQzMl90IHRhcmdldEZsYWdzLAorICAgICAgICAgICAgbnNlY3NfdCB0aW1lU3BlbnRXYWl0aW5nRm9yQXBwbGljYXRpb24sIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpOworCisgICAgc3RhdGljIGlubGluZSBKTklFbnYqIGpuaUVudigpIHsKKyAgICAgICAgcmV0dXJuIEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0FwcFN3aXRjaEtleShpbnQzMl90IGtleUNvZGUpOworICAgIHN0YXRpYyBib29sIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soSk5JRW52KiBlbnYsIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUpOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYXRpdmVJbnB1dE1hbmFnZXI6Ok5hdGl2ZUlucHV0TWFuYWdlcihqb2JqZWN0IGNhbGxiYWNrc09iaikgOgorICAgIG1GaWx0ZXJUb3VjaEV2ZW50cygtMSksIG1GaWx0ZXJKdW1weVRvdWNoRXZlbnRzKC0xKSwKKyAgICBtRGlzcGxheVdpZHRoKC0xKSwgbURpc3BsYXlIZWlnaHQoLTEpLCBtRGlzcGxheU9yaWVudGF0aW9uKFJPVEFUSU9OXzApLAorICAgIG1EaXNwYXRjaEVuYWJsZWQodHJ1ZSksIG1EaXNwYXRjaEZyb3plbihmYWxzZSksIG1XaW5kb3dzUmVhZHkodHJ1ZSksCisgICAgbUZvY3VzZWRXaW5kb3coTlVMTCksIG1Ub3VjaERvd24oZmFsc2UpLCBtVG91Y2hlZFdpbmRvdyhOVUxMKSwKKyAgICBtRm9jdXNlZEFwcGxpY2F0aW9uKE5VTEwpIHsKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgbUNhbGxiYWNrc09iaiA9IGVudi0+TmV3R2xvYmFsUmVmKGNhbGxiYWNrc09iaik7CisKKyAgICBzcDxFdmVudEh1Yj4gZXZlbnRIdWIgPSBuZXcgRXZlbnRIdWIoKTsKKyAgICBtSW5wdXRNYW5hZ2VyID0gbmV3IElucHV0TWFuYWdlcihldmVudEh1YiwgdGhpcywgdGhpcyk7Cit9CisKK05hdGl2ZUlucHV0TWFuYWdlcjo6fk5hdGl2ZUlucHV0TWFuYWdlcigpIHsKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgZW52LT5EZWxldGVHbG9iYWxSZWYobUNhbGxiYWNrc09iaik7CisKKyAgICByZWxlYXNlRm9jdXNlZEFwcGxpY2F0aW9uTGQoZW52KTsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OmlzQXBwU3dpdGNoS2V5KGludDMyX3Qga2V5Q29kZSkgeworICAgIHJldHVybiBrZXlDb2RlID09IEtFWUNPREVfSE9NRSB8fCBrZXlDb2RlID09IEtFWUNPREVfRU5EQ0FMTDsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OmNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soSk5JRW52KiBlbnYsIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUpIHsKKyAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgIExPR0UoIkFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGJ5IGNhbGxiYWNrICclcycuIiwgbWV0aG9kTmFtZSk7CisgICAgICAgIExPR0VfRVgoZW52KTsKKyAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6c2V0RGlzcGxheVNpemUoaW50MzJfdCBkaXNwbGF5SWQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSB7CisgICAgaWYgKGRpc3BsYXlJZCA9PSAwKSB7CisgICAgICAgIEF1dG9NdXRleCBfbChtRGlzcGxheUxvY2spOworCisgICAgICAgIG1EaXNwbGF5V2lkdGggPSB3aWR0aDsKKyAgICAgICAgbURpc3BsYXlIZWlnaHQgPSBoZWlnaHQ7CisgICAgfQorfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6c2V0RGlzcGxheU9yaWVudGF0aW9uKGludDMyX3QgZGlzcGxheUlkLCBpbnQzMl90IG9yaWVudGF0aW9uKSB7CisgICAgaWYgKGRpc3BsYXlJZCA9PSAwKSB7CisgICAgICAgIEF1dG9NdXRleCBfbChtRGlzcGxheUxvY2spOworCisgICAgICAgIG1EaXNwbGF5T3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKKyAgICB9Cit9CisKK3N0YXR1c190IE5hdGl2ZUlucHV0TWFuYWdlcjo6cmVnaXN0ZXJJbnB1dENoYW5uZWwoSk5JRW52KiBlbnYsCisgICAgICAgIGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCwgam9iamVjdCBpbnB1dENoYW5uZWxPYmopIHsKKyAgICBqd2VhayBpbnB1dENoYW5uZWxPYmpXZWFrID0gZW52LT5OZXdXZWFrR2xvYmFsUmVmKGlucHV0Q2hhbm5lbE9iaik7CisgICAgaWYgKCEgaW5wdXRDaGFubmVsT2JqV2VhaykgeworICAgICAgICBMT0dFKCJDb3VsZCBub3QgY3JlYXRlIHdlYWsgcmVmZXJlbmNlIGZvciBpbnB1dCBjaGFubmVsLiIpOworICAgICAgICBMT0dFX0VYKGVudik7CisgICAgICAgIHJldHVybiBOT19NRU1PUlk7CisgICAgfQorCisgICAgc3RhdHVzX3Qgc3RhdHVzOworICAgIHsKKyAgICAgICAgQXV0b011dGV4IF9sKG1JbnB1dENoYW5uZWxSZWdpc3RyeUxvY2spOworCisgICAgICAgIHNzaXplX3QgaW5kZXggPSBtSW5wdXRDaGFubmVsT2JqV2Vha0J5UmVjZWl2ZUZkLmluZGV4T2ZLZXkoCisgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCkpOworICAgICAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgICAgICAgTE9HRSgiSW5wdXQgY2hhbm5lbCBvYmplY3QgJyVzJyBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiLAorICAgICAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICBzdGF0dXMgPSBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgIGdvdG8gRGVsZXRlV2Vha1JlZjsKKyAgICAgICAgfQorCisgICAgICAgIG1JbnB1dENoYW5uZWxPYmpXZWFrQnlSZWNlaXZlRmQuYWRkKGlucHV0Q2hhbm5lbC0+Z2V0UmVjZWl2ZVBpcGVGZCgpLAorICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbE9ialdlYWspOworICAgIH0KKworICAgIHN0YXR1cyA9IG1JbnB1dE1hbmFnZXItPnJlZ2lzdGVySW5wdXRDaGFubmVsKGlucHV0Q2hhbm5lbCk7CisgICAgaWYgKCEgc3RhdHVzKSB7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEF1dG9NdXRleCBfbChtSW5wdXRDaGFubmVsUmVnaXN0cnlMb2NrKTsKKyAgICAgICAgbUlucHV0Q2hhbm5lbE9ialdlYWtCeVJlY2VpdmVGZC5yZW1vdmVJdGVtKGlucHV0Q2hhbm5lbC0+Z2V0UmVjZWl2ZVBpcGVGZCgpKTsKKyAgICB9CisKK0RlbGV0ZVdlYWtSZWY6CisgICAgZW52LT5EZWxldGVXZWFrR2xvYmFsUmVmKGlucHV0Q2hhbm5lbE9ialdlYWspOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXR1c190IE5hdGl2ZUlucHV0TWFuYWdlcjo6dW5yZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwKKyAgICAgICAgY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKSB7CisgICAgandlYWsgaW5wdXRDaGFubmVsT2JqV2VhazsKKyAgICB7CisgICAgICAgIEF1dG9NdXRleCBfbChtSW5wdXRDaGFubmVsUmVnaXN0cnlMb2NrKTsKKworICAgICAgICBzc2l6ZV90IGluZGV4ID0gbUlucHV0Q2hhbm5lbE9ialdlYWtCeVJlY2VpdmVGZC5pbmRleE9mS2V5KAorICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbC0+Z2V0UmVjZWl2ZVBpcGVGZCgpKTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgTE9HRSgiSW5wdXQgY2hhbm5lbCBvYmplY3QgJyVzJyBpcyBub3QgY3VycmVudGx5IHJlZ2lzdGVyZWQiLAorICAgICAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgIH0KKworICAgICAgICBpbnB1dENoYW5uZWxPYmpXZWFrID0gbUlucHV0Q2hhbm5lbE9ialdlYWtCeVJlY2VpdmVGZC52YWx1ZUF0KGluZGV4KTsKKyAgICAgICAgbUlucHV0Q2hhbm5lbE9ialdlYWtCeVJlY2VpdmVGZC5yZW1vdmVJdGVtc0F0KGluZGV4KTsKKyAgICB9CisKKyAgICBlbnYtPkRlbGV0ZVdlYWtHbG9iYWxSZWYoaW5wdXRDaGFubmVsT2JqV2Vhayk7CisKKyAgICByZXR1cm4gbUlucHV0TWFuYWdlci0+dW5yZWdpc3RlcklucHV0Q2hhbm5lbChpbnB1dENoYW5uZWwpOworfQorCitqb2JqZWN0IE5hdGl2ZUlucHV0TWFuYWdlcjo6Z2V0SW5wdXRDaGFubmVsT2JqTG9jYWwoSk5JRW52KiBlbnYsCisgICAgICAgIGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgeworICAgIHsKKyAgICAgICAgQXV0b011dGV4IF9sKG1JbnB1dENoYW5uZWxSZWdpc3RyeUxvY2spOworCisgICAgICAgIHNzaXplX3QgaW5kZXggPSBtSW5wdXRDaGFubmVsT2JqV2Vha0J5UmVjZWl2ZUZkLmluZGV4T2ZLZXkoCisgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCkpOworICAgICAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGp3ZWFrIGlucHV0Q2hhbm5lbE9ialdlYWsgPSBtSW5wdXRDaGFubmVsT2JqV2Vha0J5UmVjZWl2ZUZkLnZhbHVlQXQoaW5kZXgpOworICAgICAgICByZXR1cm4gZW52LT5OZXdMb2NhbFJlZihpbnB1dENoYW5uZWxPYmpXZWFrKTsKKyAgICB9Cit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjpnZXREaXNwbGF5SW5mbyhpbnQzMl90IGRpc3BsYXlJZCwKKyAgICAgICAgaW50MzJfdCogd2lkdGgsIGludDMyX3QqIGhlaWdodCwgaW50MzJfdCogb3JpZW50YXRpb24pIHsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIGlmIChkaXNwbGF5SWQgPT0gMCkgeworICAgICAgICBBdXRvTXV0ZXggX2wobURpc3BsYXlMb2NrKTsKKworICAgICAgICBpZiAobURpc3BsYXlXaWR0aCA+IDApIHsKKyAgICAgICAgICAgICp3aWR0aCA9IG1EaXNwbGF5V2lkdGg7CisgICAgICAgICAgICAqaGVpZ2h0ID0gbURpc3BsYXlIZWlnaHQ7CisgICAgICAgICAgICAqb3JpZW50YXRpb24gPSBtRGlzcGxheU9yaWVudGF0aW9uOworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIE5hdGl2ZUlucHV0TWFuYWdlcjo6aXNTY3JlZW5PbigpIHsKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgamJvb2xlYW4gcmVzdWx0ID0gZW52LT5DYWxsQm9vbGVhbk1ldGhvZChtQ2FsbGJhY2tzT2JqLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmlzU2NyZWVuT24pOworICAgIGlmIChjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgImlzU2NyZWVuT24iKSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OmlzU2NyZWVuQnJpZ2h0KCkgeworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqYm9vbGVhbiByZXN1bHQgPSBlbnYtPkNhbGxCb29sZWFuTWV0aG9kKG1DYWxsYmFja3NPYmosIGdDYWxsYmFja3NDbGFzc0luZm8uaXNTY3JlZW5CcmlnaHQpOworICAgIGlmIChjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgImlzU2NyZWVuQnJpZ2h0IikpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjp2aXJ0dWFsS2V5RmVlZGJhY2sobnNlY3NfdCB3aGVuLCBpbnQzMl90IGRldmljZUlkLAorICAgICAgICBpbnQzMl90IGFjdGlvbiwgaW50MzJfdCBmbGFncywgaW50MzJfdCBrZXlDb2RlLAorICAgICAgICBpbnQzMl90IHNjYW5Db2RlLCBpbnQzMl90IG1ldGFTdGF0ZSwgbnNlY3NfdCBkb3duVGltZSkgeworI2lmIERFQlVHX0lOUFVUX1JFQURFUl9QT0xJQ1kKKyAgICBMT0dEKCJ2aXJ0dWFsS2V5RmVlZGJhY2sgLSB3aGVuPSVsbGQsIGRldmljZUlkPSVkLCBhY3Rpb249JWQsIGZsYWdzPSVkLCBrZXlDb2RlPSVkLCAiCisgICAgICAgICAgICAic2NhbkNvZGU9JWQsIG1ldGFTdGF0ZT0lZCwgZG93blRpbWU9JWxsZCIsCisgICAgICAgICAgICB3aGVuLCBkZXZpY2VJZCwgYWN0aW9uLCBmbGFncywga2V5Q29kZSwgc2NhbkNvZGUsIG1ldGFTdGF0ZSwgZG93blRpbWUpOworI2VuZGlmCisKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgZW52LT5DYWxsVm9pZE1ldGhvZChtQ2FsbGJhY2tzT2JqLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLnZpcnR1YWxLZXlGZWVkYmFjaywKKyAgICAgICAgICAgIHdoZW4sIGRldmljZUlkLCBhY3Rpb24sIGZsYWdzLCBrZXlDb2RlLCBzY2FuQ29kZSwgbWV0YVN0YXRlLCBkb3duVGltZSk7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJ2aXJ0dWFsS2V5RmVlZGJhY2siKTsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OmludGVyY2VwdEtleShuc2Vjc190IHdoZW4sCisgICAgICAgIGludDMyX3QgZGV2aWNlSWQsIGJvb2wgZG93biwgaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IHNjYW5Db2RlLCB1aW50MzJfdCBwb2xpY3lGbGFncykgeworI2lmIERFQlVHX0lOUFVUX1JFQURFUl9QT0xJQ1kKKyAgICBMT0dEKCJpbnRlcmNlcHRLZXkgLSB3aGVuPSVsbGQsIGRldmljZUlkPSVkLCBkb3duPSVkLCBrZXlDb2RlPSVkLCBzY2FuQ29kZT0lZCwgIgorICAgICAgICAgICAgInBvbGljeUZsYWdzPTB4JXgiLAorICAgICAgICAgICAgd2hlbiwgZGV2aWNlSWQsIGRvd24sIGtleUNvZGUsIHNjYW5Db2RlLCBwb2xpY3lGbGFncyk7CisjZW5kaWYKKworICAgIGNvbnN0IGludDMyX3QgV01fQUNUSU9OX1BBU1NfVE9fVVNFUiA9IDE7CisgICAgY29uc3QgaW50MzJfdCBXTV9BQ1RJT05fUE9LRV9VU0VSX0FDVElWSVRZID0gMjsKKyAgICBjb25zdCBpbnQzMl90IFdNX0FDVElPTl9HT19UT19TTEVFUCA9IDQ7CisKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgYm9vbCBpc1NjcmVlbk9uID0gdGhpcy0+aXNTY3JlZW5PbigpOworICAgIGJvb2wgaXNTY3JlZW5CcmlnaHQgPSB0aGlzLT5pc1NjcmVlbkJyaWdodCgpOworCisgICAgamludCB3bUFjdGlvbnMgPSBlbnYtPkNhbGxJbnRNZXRob2QobUNhbGxiYWNrc09iaiwKKyAgICAgICAgICAgIGdDYWxsYmFja3NDbGFzc0luZm8uaW50ZXJjZXB0S2V5QmVmb3JlUXVldWVpbmcsCisgICAgICAgICAgICBkZXZpY2VJZCwgRVZfS0VZLCBzY2FuQ29kZSwga2V5Q29kZSwgcG9saWN5RmxhZ3MsIGRvd24gPyAxIDogMCwgd2hlbiwgaXNTY3JlZW5Pbik7CisgICAgaWYgKGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAiaW50ZXJjZXB0S2V5QmVmb3JlUXVldWVpbmciKSkgeworICAgICAgICB3bUFjdGlvbnMgPSAwOworICAgIH0KKworICAgIGludDMyX3QgYWN0aW9ucyA9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fTk9ORTsKKyAgICBpZiAoISBpc1NjcmVlbk9uKSB7CisgICAgICAgIC8vIEtleSBwcmVzc2VzIGFuZCByZWxlYXNlcyB3YWtlIHRoZSBkZXZpY2UuCisgICAgICAgIGFjdGlvbnMgfD0gSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OkFDVElPTl9XT0tFX0hFUkU7CisgICAgfQorCisgICAgaWYgKCEgaXNTY3JlZW5CcmlnaHQpIHsKKyAgICAgICAgLy8gS2V5IHByZXNzZXMgYW5kIHJlbGVhc2VzIGJyaWdodGVuIHRoZSBzY3JlZW4gaWYgZGltbWVkLgorICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fQlJJR0hUX0hFUkU7CisgICAgfQorCisgICAgaWYgKHdtQWN0aW9ucyAmIFdNX0FDVElPTl9HT19UT19TTEVFUCkgeworICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIGdDYWxsYmFja3NDbGFzc0luZm8uZ29Ub1NsZWVwLCB3aGVuKTsKKyAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJnb1RvU2xlZXAiKTsKKyAgICB9CisKKyAgICBpZiAod21BY3Rpb25zICYgV01fQUNUSU9OX1BPS0VfVVNFUl9BQ1RJVklUWSkgeworICAgICAgICBwb2tlVXNlckFjdGl2aXR5KHdoZW4sIFBPV0VSX01BTkFHRVJfQlVUVE9OX0VWRU5UKTsKKyAgICB9CisKKyAgICBpZiAod21BY3Rpb25zICYgV01fQUNUSU9OX1BBU1NfVE9fVVNFUikgeworICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fRElTUEFUQ0g7CisKKyAgICAgICAgaWYgKGRvd24gJiYgaXNBcHBTd2l0Y2hLZXkoa2V5Q29kZSkpIHsKKyAgICAgICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlBcHBTd2l0Y2hDb21pbmcpOworICAgICAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJub3RpZnlBcHBTd2l0Y2hDb21pbmciKTsKKworICAgICAgICAgICAgYWN0aW9ucyB8PSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX0FQUF9TV0lUQ0hfQ09NSU5HOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGFjdGlvbnM7Cit9CisKK2ludDMyX3QgTmF0aXZlSW5wdXRNYW5hZ2VyOjppbnRlcmNlcHRUb3VjaChuc2Vjc190IHdoZW4pIHsKKyNpZiBERUJVR19JTlBVVF9SRUFERVJfUE9MSUNZCisgICAgTE9HRCgiaW50ZXJjZXB0VG91Y2ggLSB3aGVuPSVsbGQiLCB3aGVuKTsKKyNlbmRpZgorCisgICAgaW50MzJfdCBhY3Rpb25zID0gSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OkFDVElPTl9OT05FOworICAgIGlmIChpc1NjcmVlbk9uKCkpIHsKKyAgICAgICAgLy8gT25seSBkaXNwYXRjaCB0b3VjaCBldmVudHMgd2hlbiB0aGUgZGV2aWNlIGlzIGF3YWtlLgorICAgICAgICAvLyBEbyBub3Qgd2FrZSB0aGUgZGV2aWNlLgorICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fRElTUEFUQ0g7CisKKyAgICAgICAgaWYgKCEgaXNTY3JlZW5CcmlnaHQoKSkgeworICAgICAgICAgICAgLy8gQnJpZ2h0ZW4gdGhlIHNjcmVlbiBpZiBkaW1tZWQuCisgICAgICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fQlJJR0hUX0hFUkU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYWN0aW9uczsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OmludGVyY2VwdFRyYWNrYmFsbChuc2Vjc190IHdoZW4sCisgICAgICAgIGJvb2wgYnV0dG9uQ2hhbmdlZCwgYm9vbCBidXR0b25Eb3duLCBib29sIHJvbGxlZCkgeworI2lmIERFQlVHX0lOUFVUX1JFQURFUl9QT0xJQ1kKKyAgICBMT0dEKCJpbnRlcmNlcHRUcmFja2JhbGwgLSB3aGVuPSVsbGQsIGJ1dHRvbkNoYW5nZWQ9JWQsIGJ1dHRvbkRvd249JWQsIHJvbGxlZD0lZCIsCisgICAgICAgICAgICB3aGVuLCBidXR0b25DaGFuZ2VkLCBidXR0b25Eb3duLCByb2xsZWQpOworI2VuZGlmCisKKyAgICBpbnQzMl90IGFjdGlvbnMgPSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX05PTkU7CisgICAgaWYgKGlzU2NyZWVuT24oKSkgeworICAgICAgICAvLyBPbmx5IGRpc3BhdGNoIHRyYWNrYmFsbCBldmVudHMgd2hlbiB0aGUgZGV2aWNlIGlzIGF3YWtlLgorICAgICAgICAvLyBEbyBub3Qgd2FrZSB0aGUgZGV2aWNlLgorICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fRElTUEFUQ0g7CisKKyAgICAgICAgaWYgKCEgaXNTY3JlZW5CcmlnaHQoKSkgeworICAgICAgICAgICAgLy8gQnJpZ2h0ZW4gdGhlIHNjcmVlbiBpZiBkaW1tZWQuCisgICAgICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fQlJJR0hUX0hFUkU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYWN0aW9uczsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OmludGVyY2VwdFN3aXRjaChuc2Vjc190IHdoZW4sIGludDMyX3Qgc3dpdGNoQ29kZSwKKyAgICAgICAgaW50MzJfdCBzd2l0Y2hWYWx1ZSkgeworI2lmIERFQlVHX0lOUFVUX1JFQURFUl9QT0xJQ1kKKyAgICBMT0dEKCJpbnRlcmNlcHRTd2l0Y2ggLSB3aGVuPSVsbGQsIHN3aXRjaENvZGU9JWQsIHN3aXRjaFZhbHVlPSVkIiwKKyAgICAgICAgICAgIHdoZW4sIHN3aXRjaENvZGUsIHN3aXRjaFZhbHVlKTsKKyNlbmRpZgorCisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIHN3aXRjaCAoc3dpdGNoQ29kZSkgeworICAgIGNhc2UgU1dfTElEOgorICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5TGlkU3dpdGNoQ2hhbmdlZCwKKyAgICAgICAgICAgICAgICB3aGVuLCBzd2l0Y2hWYWx1ZSA9PSAwKTsKKyAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJub3RpZnlMaWRTd2l0Y2hDaGFuZ2VkIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX05PTkU7Cit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjpmaWx0ZXJUb3VjaEV2ZW50cygpIHsKKyAgICBpZiAobUZpbHRlclRvdWNoRXZlbnRzIDwgMCkgeworICAgICAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgICAgIGpib29sZWFuIHJlc3VsdCA9IGVudi0+Q2FsbEJvb2xlYW5NZXRob2QobUNhbGxiYWNrc09iaiwKKyAgICAgICAgICAgICAgICBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmZpbHRlclRvdWNoRXZlbnRzKTsKKyAgICAgICAgaWYgKGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAiZmlsdGVyVG91Y2hFdmVudHMiKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBtRmlsdGVyVG91Y2hFdmVudHMgPSByZXN1bHQgPyAxIDogMDsKKyAgICB9CisgICAgcmV0dXJuIG1GaWx0ZXJUb3VjaEV2ZW50czsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OmZpbHRlckp1bXB5VG91Y2hFdmVudHMoKSB7CisgICAgaWYgKG1GaWx0ZXJKdW1weVRvdWNoRXZlbnRzIDwgMCkgeworICAgICAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgICAgIGpib29sZWFuIHJlc3VsdCA9IGVudi0+Q2FsbEJvb2xlYW5NZXRob2QobUNhbGxiYWNrc09iaiwKKyAgICAgICAgICAgICAgICBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmZpbHRlckp1bXB5VG91Y2hFdmVudHMpOworICAgICAgICBpZiAoY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJmaWx0ZXJKdW1weVRvdWNoRXZlbnRzIikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgbUZpbHRlckp1bXB5VG91Y2hFdmVudHMgPSByZXN1bHQgPyAxIDogMDsKKyAgICB9CisgICAgcmV0dXJuIG1GaWx0ZXJKdW1weVRvdWNoRXZlbnRzOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6Z2V0VmlydHVhbEtleURlZmluaXRpb25zKGNvbnN0IFN0cmluZzgmIGRldmljZU5hbWUsCisgICAgICAgIFZlY3RvcjxJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6VmlydHVhbEtleURlZmluaXRpb24+JiBvdXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMpIHsKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAganN0cmluZyBkZXZpY2VOYW1lU3RyID0gZW52LT5OZXdTdHJpbmdVVEYoZGV2aWNlTmFtZS5zdHJpbmcoKSk7CisgICAgaWYgKCEgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJnZXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMiKSkgeworICAgICAgICBqb2JqZWN0QXJyYXkgcmVzdWx0ID0gam9iamVjdEFycmF5KGVudi0+Q2FsbE9iamVjdE1ldGhvZChtQ2FsbGJhY2tzT2JqLAorICAgICAgICAgICAgICAgIGdDYWxsYmFja3NDbGFzc0luZm8uZ2V0VmlydHVhbEtleURlZmluaXRpb25zLCBkZXZpY2VOYW1lU3RyKSk7CisgICAgICAgIGlmICghIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAiZ2V0VmlydHVhbEtleURlZmluaXRpb25zIikgJiYgcmVzdWx0KSB7CisgICAgICAgICAgICBqc2l6ZSBsZW5ndGggPSBlbnYtPkdldEFycmF5TGVuZ3RoKHJlc3VsdCk7CisgICAgICAgICAgICBmb3IgKGpzaXplIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBqb2JqZWN0IGl0ZW0gPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudChyZXN1bHQsIGkpOworCisgICAgICAgICAgICAgICAgb3V0VmlydHVhbEtleURlZmluaXRpb25zLmFkZCgpOworICAgICAgICAgICAgICAgIG91dFZpcnR1YWxLZXlEZWZpbml0aW9ucy5lZGl0VG9wKCkuc2NhbkNvZGUgPQorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdChlbnYtPkdldEludEZpZWxkKGl0ZW0sIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5zY2FuQ29kZSkpOworICAgICAgICAgICAgICAgIG91dFZpcnR1YWxLZXlEZWZpbml0aW9ucy5lZGl0VG9wKCkuY2VudGVyWCA9CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KGVudi0+R2V0SW50RmllbGQoaXRlbSwgZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLmNlbnRlclgpKTsKKyAgICAgICAgICAgICAgICBvdXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMuZWRpdFRvcCgpLmNlbnRlclkgPQorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdChlbnYtPkdldEludEZpZWxkKGl0ZW0sIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5jZW50ZXJZKSk7CisgICAgICAgICAgICAgICAgb3V0VmlydHVhbEtleURlZmluaXRpb25zLmVkaXRUb3AoKS53aWR0aCA9CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KGVudi0+R2V0SW50RmllbGQoaXRlbSwgZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLndpZHRoKSk7CisgICAgICAgICAgICAgICAgb3V0VmlydHVhbEtleURlZmluaXRpb25zLmVkaXRUb3AoKS5oZWlnaHQgPQorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdChlbnYtPkdldEludEZpZWxkKGl0ZW0sIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5oZWlnaHQpKTsKKworICAgICAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihkZXZpY2VOYW1lU3RyKTsKKyAgICB9Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpnZXRFeGNsdWRlZERldmljZU5hbWVzKFZlY3RvcjxTdHJpbmc4PiYgb3V0RXhjbHVkZWREZXZpY2VOYW1lcykgeworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqb2JqZWN0QXJyYXkgcmVzdWx0ID0gam9iamVjdEFycmF5KGVudi0+Q2FsbE9iamVjdE1ldGhvZChtQ2FsbGJhY2tzT2JqLAorICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5nZXRFeGNsdWRlZERldmljZU5hbWVzKSk7CisgICAgaWYgKCEgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJnZXRFeGNsdWRlZERldmljZU5hbWVzIikgJiYgcmVzdWx0KSB7CisgICAgICAgIGpzaXplIGxlbmd0aCA9IGVudi0+R2V0QXJyYXlMZW5ndGgocmVzdWx0KTsKKyAgICAgICAgZm9yIChqc2l6ZSBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBqc3RyaW5nIGl0ZW0gPSBqc3RyaW5nKGVudi0+R2V0T2JqZWN0QXJyYXlFbGVtZW50KHJlc3VsdCwgaSkpOworCisgICAgICAgICAgICBjb25zdCBjaGFyKiBkZXZpY2VOYW1lQ2hhcnMgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGl0ZW0sIE5VTEwpOworICAgICAgICAgICAgb3V0RXhjbHVkZWREZXZpY2VOYW1lcy5hZGQoU3RyaW5nOChkZXZpY2VOYW1lQ2hhcnMpKTsKKyAgICAgICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKGl0ZW0sIGRldmljZU5hbWVDaGFycyk7CisKKyAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaXRlbSk7CisgICAgICAgIH0KKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihyZXN1bHQpOworICAgIH0KK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6Om5vdGlmeUNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5zZWNzX3Qgd2hlbikgeworI2lmIERFQlVHX0lOUFVUX0RJU1BBVENIRVJfUE9MSUNZCisgICAgTE9HRCgibm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQgLSB3aGVuPSVsbGQiLCB3aGVuKTsKKyNlbmRpZgorCisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIElucHV0Q29uZmlndXJhdGlvbiBjb25maWc7CisgICAgbUlucHV0TWFuYWdlci0+Z2V0SW5wdXRDb25maWd1cmF0aW9uKCYgY29uZmlnKTsKKworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZCwKKyAgICAgICAgICAgIHdoZW4sIGNvbmZpZy50b3VjaFNjcmVlbiwgY29uZmlnLmtleWJvYXJkLCBjb25maWcubmF2aWdhdGlvbik7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZCIpOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6bm90aWZ5SW5wdXRDaGFubmVsQnJva2VuKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgeworI2lmIERFQlVHX0lOUFVUX0RJU1BBVENIRVJfUE9MSUNZCisgICAgTE9HRCgibm90aWZ5SW5wdXRDaGFubmVsQnJva2VuIC0gaW5wdXRDaGFubmVsPSclcyciLCBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iakxvY2FsID0gZ2V0SW5wdXRDaGFubmVsT2JqTG9jYWwoZW52LCBpbnB1dENoYW5uZWwpOworICAgIGlmIChpbnB1dENoYW5uZWxPYmpMb2NhbCkgeworICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5SW5wdXRDaGFubmVsQnJva2VuLAorICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbE9iakxvY2FsKTsKKyAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJub3RpZnlJbnB1dENoYW5uZWxCcm9rZW4iKTsKKworICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGlucHV0Q2hhbm5lbE9iakxvY2FsKTsKKyAgICB9Cit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjpub3RpZnlJbnB1dENoYW5uZWxBTlIoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsLAorICAgICAgICBuc2Vjc190JiBvdXROZXdUaW1lb3V0KSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICBMT0dEKCJub3RpZnlJbnB1dENoYW5uZWxBTlIgLSBpbnB1dENoYW5uZWw9JyVzJyIsCisgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqbG9uZyBuZXdUaW1lb3V0OworICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqTG9jYWwgPSBnZXRJbnB1dENoYW5uZWxPYmpMb2NhbChlbnYsIGlucHV0Q2hhbm5lbCk7CisgICAgaWYgKGlucHV0Q2hhbm5lbE9iakxvY2FsKSB7CisgICAgICAgIG5ld1RpbWVvdXQgPSBlbnYtPkNhbGxMb25nTWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlJbnB1dENoYW5uZWxBTlIsIGlucHV0Q2hhbm5lbE9iakxvY2FsKTsKKyAgICAgICAgaWYgKGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAibm90aWZ5SW5wdXRDaGFubmVsQU5SIikpIHsKKyAgICAgICAgICAgIG5ld1RpbWVvdXQgPSAtMjsKKyAgICAgICAgfQorCisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaW5wdXRDaGFubmVsT2JqTG9jYWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5ld1RpbWVvdXQgPSAtMjsKKyAgICB9CisKKyAgICBpZiAobmV3VGltZW91dCA9PSAtMikgeworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGFib3J0CisgICAgfQorCisgICAgb3V0TmV3VGltZW91dCA9IG5ld1RpbWVvdXQ7CisgICAgcmV0dXJuIHRydWU7IC8vIHJlc3VtZQorfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6bm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgIExPR0QoIm5vdGlmeUlucHV0Q2hhbm5lbFJlY292ZXJlZEZyb21BTlIgLSBpbnB1dENoYW5uZWw9JyVzJyIsCisgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iakxvY2FsID0gZ2V0SW5wdXRDaGFubmVsT2JqTG9jYWwoZW52LCBpbnB1dENoYW5uZWwpOworICAgIGlmIChpbnB1dENoYW5uZWxPYmpMb2NhbCkgeworICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUiwKKyAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmpMb2NhbCk7CisgICAgICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAibm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUiIpOworCisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaW5wdXRDaGFubmVsT2JqTG9jYWwpOworICAgIH0KK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6Om5vdGlmeUFOUihqb2JqZWN0IHRva2VuT2JqLCBuc2Vjc190JiBvdXROZXdUaW1lb3V0KSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICBMT0dEKCJub3RpZnlBTlIiKTsKKyNlbmRpZgorCisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIGpsb25nIG5ld1RpbWVvdXQgPSBlbnYtPkNhbGxMb25nTWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICBnQ2FsbGJhY2tzQ2xhc3NJbmZvLm5vdGlmeUFOUiwgdG9rZW5PYmopOworICAgIGlmIChjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgIm5vdGlmeUFOUiIpKSB7CisgICAgICAgIG5ld1RpbWVvdXQgPSAtMjsKKyAgICB9CisKKyAgICBpZiAobmV3VGltZW91dCA9PSAtMikgeworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGFib3J0CisgICAgfQorCisgICAgb3V0TmV3VGltZW91dCA9IG5ld1RpbWVvdXQ7CisgICAgcmV0dXJuIHRydWU7IC8vIHJlc3VtZQorfQorCituc2Vjc190IE5hdGl2ZUlucHV0TWFuYWdlcjo6Z2V0S2V5UmVwZWF0VGltZW91dCgpIHsKKyAgICBpZiAoISBpc1NjcmVlbk9uKCkpIHsKKyAgICAgICAgLy8gRGlzYWJsZSBrZXkgcmVwZWF0IHdoZW4gdGhlIHNjcmVlbiBpcyBvZmYuCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUT0RPIHVzZSBWaWV3Q29uZmlndXJhdGlvbi5nZXRMb25nUHJlc3NUaW1lb3V0KCkKKyAgICAgICAgcmV0dXJuIG1pbGxpc2Vjb25kc190b19uYW5vc2Vjb25kcyg1MDApOworICAgIH0KK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnNldElucHV0V2luZG93cyhKTklFbnYqIGVudiwgam9iamVjdEFycmF5IHdpbmRvd09iakFycmF5KSB7CisjaWYgREVCVUdfRk9DVVMKKyAgICBMT0dEKCJzZXRJbnB1dFdpbmRvd3MiKTsKKyNlbmRpZgorICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtRGlzcGF0Y2hMb2NrKTsKKworICAgICAgICBzcDxJbnB1dENoYW5uZWw+IHRvdWNoZWRXaW5kb3dDaGFubmVsOworICAgICAgICBpZiAobVRvdWNoZWRXaW5kb3cpIHsKKyAgICAgICAgICAgIHRvdWNoZWRXaW5kb3dDaGFubmVsID0gbVRvdWNoZWRXaW5kb3ctPmlucHV0Q2hhbm5lbDsKKyAgICAgICAgICAgIG1Ub3VjaGVkV2luZG93ID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzaXplX3QgbnVtVG91Y2hlZFdhbGxwYXBlcnMgPSBtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3Muc2l6ZSgpOworICAgICAgICBpZiAobnVtVG91Y2hlZFdhbGxwYXBlcnMgIT0gMCkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Ub3VjaGVkV2FsbHBhcGVyczsgaSsrKSB7CisgICAgICAgICAgICAgICAgbVRlbXBUb3VjaGVkV2FsbHBhcGVyQ2hhbm5lbHMucHVzaChtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3NbaV0tPmlucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3MuY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1XaW5kb3dzLmNsZWFyKCk7CisgICAgICAgIG1Gb2N1c2VkV2luZG93ID0gTlVMTDsKKyAgICAgICAgbVdhbGxwYXBlcldpbmRvd3MuY2xlYXIoKTsKKworICAgICAgICBpZiAod2luZG93T2JqQXJyYXkpIHsKKyAgICAgICAgICAgIG1XaW5kb3dzUmVhZHkgPSB0cnVlOworCisgICAgICAgICAgICBqc2l6ZSBsZW5ndGggPSBlbnYtPkdldEFycmF5TGVuZ3RoKHdpbmRvd09iakFycmF5KTsKKyAgICAgICAgICAgIGZvciAoanNpemUgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGpvYmplY3QgaW5wdXRUYXJnZXRPYmogPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudCh3aW5kb3dPYmpBcnJheSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKCEgaW5wdXRUYXJnZXRPYmopIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZvdW5kIG51bGwgZWxlbWVudCBpbmRpY2F0aW5nIGVuZCBvZiB1c2VkIHBvcnRpb24gb2YgdGhlIGFycmF5CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbVdpbmRvd3MucHVzaCgpOworICAgICAgICAgICAgICAgIElucHV0V2luZG93JiB3aW5kb3cgPSBtV2luZG93cy5lZGl0VG9wKCk7CisgICAgICAgICAgICAgICAgYm9vbCB2YWxpZCA9IHBvcHVsYXRlV2luZG93KGVudiwgaW5wdXRUYXJnZXRPYmosIHdpbmRvdyk7CisgICAgICAgICAgICAgICAgaWYgKCEgdmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbVdpbmRvd3MucG9wKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihpbnB1dFRhcmdldE9iaik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBudW1XaW5kb3dzID0gbVdpbmRvd3Muc2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1XaW5kb3dzOyBpKyspIHsKKyAgICAgICAgICAgICAgICBJbnB1dFdpbmRvdyogd2luZG93ID0gJiBtV2luZG93cy5lZGl0SXRlbUF0KGkpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3ctPmhhc0ZvY3VzKSB7CisgICAgICAgICAgICAgICAgICAgIG1Gb2N1c2VkV2luZG93ID0gd2luZG93OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh3aW5kb3ctPmxheW91dFBhcmFtc1R5cGUgPT0gVFlQRV9XQUxMUEFQRVIpIHsKKyAgICAgICAgICAgICAgICAgICAgbVdhbGxwYXBlcldpbmRvd3MucHVzaCh3aW5kb3cpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbnVtVG91Y2hlZFdhbGxwYXBlcnM7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy0+aW5wdXRDaGFubmVsID09IG1UZW1wVG91Y2hlZFdhbGxwYXBlckNoYW5uZWxzW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRvdWNoZWRXYWxscGFwZXJXaW5kb3dzLnB1c2god2luZG93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh3aW5kb3ctPmlucHV0Q2hhbm5lbCA9PSB0b3VjaGVkV2luZG93Q2hhbm5lbCkgeworICAgICAgICAgICAgICAgICAgICBtVG91Y2hlZFdpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtV2luZG93c1JlYWR5ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBtVGVtcFRvdWNoZWRXYWxscGFwZXJDaGFubmVscy5jbGVhcigpOworCisgICAgICAgIG1EaXNwYXRjaFN0YXRlQ2hhbmdlZC5icm9hZGNhc3QoKTsKKworI2lmIERFQlVHX0ZPQ1VTCisgICAgICAgIGR1bXBEaXNwYXRjaFN0YXRlTGQoKTsKKyNlbmRpZgorICAgIH0gLy8gcmVsZWFzZSBsb2NrCit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjpwb3B1bGF0ZVdpbmRvdyhKTklFbnYqIGVudiwgam9iamVjdCB3aW5kb3dPYmosCisgICAgICAgIElucHV0V2luZG93JiBvdXRXaW5kb3cpIHsKKyAgICBib29sIHZhbGlkID0gZmFsc2U7CisKKyAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaiA9IGVudi0+R2V0T2JqZWN0RmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmlucHV0Q2hhbm5lbCk7CisgICAgaWYgKGlucHV0Q2hhbm5lbE9iaikgeworICAgICAgICBzcDxJbnB1dENoYW5uZWw+IGlucHV0Q2hhbm5lbCA9CisgICAgICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LCBpbnB1dENoYW5uZWxPYmopOworICAgICAgICBpZiAoaW5wdXRDaGFubmVsICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGppbnQgbGF5b3V0UGFyYW1zRmxhZ3MgPSBlbnYtPkdldEludEZpZWxkKHdpbmRvd09iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmxheW91dFBhcmFtc0ZsYWdzKTsKKyAgICAgICAgICAgIGppbnQgbGF5b3V0UGFyYW1zVHlwZSA9IGVudi0+R2V0SW50RmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8ubGF5b3V0UGFyYW1zVHlwZSk7CisgICAgICAgICAgICBqbG9uZyBkaXNwYXRjaGluZ1RpbWVvdXROYW5vcyA9IGVudi0+R2V0TG9uZ0ZpZWxkKHdpbmRvd09iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmRpc3BhdGNoaW5nVGltZW91dE5hbm9zKTsKKyAgICAgICAgICAgIGppbnQgZnJhbWVMZWZ0ID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5mcmFtZUxlZnQpOworICAgICAgICAgICAgamludCBmcmFtZVRvcCA9IGVudi0+R2V0SW50RmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8uZnJhbWVUb3ApOworICAgICAgICAgICAgamludCB0b3VjaGFibGVBcmVhTGVmdCA9IGVudi0+R2V0SW50RmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8udG91Y2hhYmxlQXJlYUxlZnQpOworICAgICAgICAgICAgamludCB0b3VjaGFibGVBcmVhVG9wID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhVG9wKTsKKyAgICAgICAgICAgIGppbnQgdG91Y2hhYmxlQXJlYVJpZ2h0ID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhUmlnaHQpOworICAgICAgICAgICAgamludCB0b3VjaGFibGVBcmVhQm90dG9tID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhQm90dG9tKTsKKyAgICAgICAgICAgIGpib29sZWFuIHZpc2libGUgPSBlbnYtPkdldEJvb2xlYW5GaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby52aXNpYmxlKTsKKyAgICAgICAgICAgIGpib29sZWFuIGhhc0ZvY3VzID0gZW52LT5HZXRCb29sZWFuRmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8uaGFzRm9jdXMpOworICAgICAgICAgICAgamJvb2xlYW4gaGFzV2FsbHBhcGVyID0gZW52LT5HZXRCb29sZWFuRmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8uaGFzV2FsbHBhcGVyKTsKKyAgICAgICAgICAgIGpib29sZWFuIHBhdXNlZCA9IGVudi0+R2V0Qm9vbGVhbkZpZWxkKHdpbmRvd09iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0V2luZG93Q2xhc3NJbmZvLnBhdXNlZCk7CisgICAgICAgICAgICBqaW50IG93bmVyUGlkID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5vd25lclBpZCk7CisgICAgICAgICAgICBqaW50IG93bmVyVWlkID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5vd25lclVpZCk7CisKKyAgICAgICAgICAgIG91dFdpbmRvdy5pbnB1dENoYW5uZWwgPSBpbnB1dENoYW5uZWw7CisgICAgICAgICAgICBvdXRXaW5kb3cubGF5b3V0UGFyYW1zRmxhZ3MgPSBsYXlvdXRQYXJhbXNGbGFnczsKKyAgICAgICAgICAgIG91dFdpbmRvdy5sYXlvdXRQYXJhbXNUeXBlID0gbGF5b3V0UGFyYW1zVHlwZTsKKyAgICAgICAgICAgIG91dFdpbmRvdy5kaXNwYXRjaGluZ1RpbWVvdXQgPSBkaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKKyAgICAgICAgICAgIG91dFdpbmRvdy5mcmFtZUxlZnQgPSBmcmFtZUxlZnQ7CisgICAgICAgICAgICBvdXRXaW5kb3cuZnJhbWVUb3AgPSBmcmFtZVRvcDsKKyAgICAgICAgICAgIG91dFdpbmRvdy50b3VjaGFibGVBcmVhTGVmdCA9IHRvdWNoYWJsZUFyZWFMZWZ0OworICAgICAgICAgICAgb3V0V2luZG93LnRvdWNoYWJsZUFyZWFUb3AgPSB0b3VjaGFibGVBcmVhVG9wOworICAgICAgICAgICAgb3V0V2luZG93LnRvdWNoYWJsZUFyZWFSaWdodCA9IHRvdWNoYWJsZUFyZWFSaWdodDsKKyAgICAgICAgICAgIG91dFdpbmRvdy50b3VjaGFibGVBcmVhQm90dG9tID0gdG91Y2hhYmxlQXJlYUJvdHRvbTsKKyAgICAgICAgICAgIG91dFdpbmRvdy52aXNpYmxlID0gdmlzaWJsZTsKKyAgICAgICAgICAgIG91dFdpbmRvdy5oYXNGb2N1cyA9IGhhc0ZvY3VzOworICAgICAgICAgICAgb3V0V2luZG93Lmhhc1dhbGxwYXBlciA9IGhhc1dhbGxwYXBlcjsKKyAgICAgICAgICAgIG91dFdpbmRvdy5wYXVzZWQgPSBwYXVzZWQ7CisgICAgICAgICAgICBvdXRXaW5kb3cub3duZXJQaWQgPSBvd25lclBpZDsKKyAgICAgICAgICAgIG91dFdpbmRvdy5vd25lclVpZCA9IG93bmVyVWlkOworICAgICAgICAgICAgdmFsaWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTE9HVygiRHJvcHBpbmcgaW5wdXQgdGFyZ2V0IGJlY2F1c2UgaXRzIGlucHV0IGNoYW5uZWwgaXMgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICB9CisKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihpbnB1dENoYW5uZWxPYmopOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR1coIkRyb3BwaW5nIGlucHV0IHRhcmdldCBiZWNhdXNlIHRoZSBpbnB1dCBjaGFubmVsIG9iamVjdCB3YXMgbnVsbC4iKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbGlkOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6c2V0Rm9jdXNlZEFwcGxpY2F0aW9uKEpOSUVudiogZW52LCBqb2JqZWN0IGFwcGxpY2F0aW9uT2JqKSB7CisjaWYgREVCVUdfRk9DVVMKKyAgICBMT0dEKCJzZXRGb2N1c2VkQXBwbGljYXRpb24iKTsKKyNlbmRpZgorICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtRGlzcGF0Y2hMb2NrKTsKKworICAgICAgICByZWxlYXNlRm9jdXNlZEFwcGxpY2F0aW9uTGQoZW52KTsKKworICAgICAgICBpZiAoYXBwbGljYXRpb25PYmopIHsKKyAgICAgICAgICAgIGpzdHJpbmcgbmFtZU9iaiA9IGpzdHJpbmcoZW52LT5HZXRPYmplY3RGaWVsZChhcHBsaWNhdGlvbk9iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8ubmFtZSkpOworICAgICAgICAgICAgamxvbmcgZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MgPSBlbnYtPkdldExvbmdGaWVsZChhcHBsaWNhdGlvbk9iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8uZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MpOworICAgICAgICAgICAgam9iamVjdCB0b2tlbk9iaiA9IGVudi0+R2V0T2JqZWN0RmllbGQoYXBwbGljYXRpb25PYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dEFwcGxpY2F0aW9uQ2xhc3NJbmZvLnRva2VuKTsKKyAgICAgICAgICAgIGp3ZWFrIHRva2VuT2JqV2VhayA9IGVudi0+TmV3V2Vha0dsb2JhbFJlZih0b2tlbk9iaik7CisgICAgICAgICAgICBpZiAoISB0b2tlbk9ialdlYWspIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJDb3VsZCBub3QgY3JlYXRlIHdlYWsgcmVmZXJlbmNlIGZvciBhcHBsaWNhdGlvbiB0b2tlbi4iKTsKKyAgICAgICAgICAgICAgICBMT0dFX0VYKGVudik7CisgICAgICAgICAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZih0b2tlbk9iaik7CisKKyAgICAgICAgICAgIG1Gb2N1c2VkQXBwbGljYXRpb24gPSAmIG1Gb2N1c2VkQXBwbGljYXRpb25TdG9yYWdlOworCisgICAgICAgICAgICBpZiAobmFtZU9iaikgeworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWVTdHIgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKG5hbWVPYmosIE5VTEwpOworICAgICAgICAgICAgICAgIG1Gb2N1c2VkQXBwbGljYXRpb24tPm5hbWUuc2V0VG8obmFtZVN0cik7CisgICAgICAgICAgICAgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMobmFtZU9iaiwgbmFtZVN0cik7CisgICAgICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihuYW1lT2JqKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTE9HRSgiSW5wdXRBcHBsaWNhdGlvbi5uYW1lIHNob3VsZCBub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uLT5uYW1lLnNldFRvKCJ1bmtub3duIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1Gb2N1c2VkQXBwbGljYXRpb24tPmRpc3BhdGNoaW5nVGltZW91dCA9IGRpc3BhdGNoaW5nVGltZW91dE5hbm9zOworICAgICAgICAgICAgbUZvY3VzZWRBcHBsaWNhdGlvbi0+dG9rZW5PYmpXZWFrID0gdG9rZW5PYmpXZWFrOworICAgICAgICB9CisKKyAgICAgICAgbURpc3BhdGNoU3RhdGVDaGFuZ2VkLmJyb2FkY2FzdCgpOworCisjaWYgREVCVUdfRk9DVVMKKyAgICAgICAgZHVtcERpc3BhdGNoU3RhdGVMZCgpOworI2VuZGlmCisgICAgfSAvLyByZWxlYXNlIGxvY2sKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnJlbGVhc2VGb2N1c2VkQXBwbGljYXRpb25MZChKTklFbnYqIGVudikgeworICAgIGlmIChtRm9jdXNlZEFwcGxpY2F0aW9uKSB7CisgICAgICAgIGVudi0+RGVsZXRlV2Vha0dsb2JhbFJlZihtRm9jdXNlZEFwcGxpY2F0aW9uLT50b2tlbk9ialdlYWspOworICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uID0gTlVMTDsKKyAgICB9Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpzZXRJbnB1dERpc3BhdGNoTW9kZShib29sIGVuYWJsZWQsIGJvb2wgZnJvemVuKSB7CisjaWYgREVCVUdfRk9DVVMKKyAgICBMT0dEKCJzZXRJbnB1dERpc3BhdGNoTW9kZTogZW5hYmxlZD0lZCwgZnJvemVuPSVkIiwgZW5hYmxlZCwgZnJvemVuKTsKKyNlbmRpZgorCisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1EaXNwYXRjaExvY2spOworCisgICAgICAgIGlmIChtRGlzcGF0Y2hFbmFibGVkICE9IGVuYWJsZWQgfHwgbURpc3BhdGNoRnJvemVuICE9IGZyb3plbikgeworICAgICAgICAgICAgbURpc3BhdGNoRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgICAgICAgICBtRGlzcGF0Y2hGcm96ZW4gPSBmcm96ZW47CisKKyAgICAgICAgICAgIG1EaXNwYXRjaFN0YXRlQ2hhbmdlZC5icm9hZGNhc3QoKTsKKyAgICAgICAgfQorCisjaWYgREVCVUdfRk9DVVMKKyAgICAgICAgZHVtcERpc3BhdGNoU3RhdGVMZCgpOworI2VuZGlmCisgICAgfSAvLyByZWxlYXNlIGxvY2sKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnByZWVtcHRJbnB1dERpc3BhdGNoKCkgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgTE9HRCgicHJlZW1wdElucHV0RGlzcGF0Y2giKTsKKyNlbmRpZgorCisgICAgbUlucHV0TWFuYWdlci0+cHJlZW1wdElucHV0RGlzcGF0Y2goKTsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OndhaXRGb3JGb2N1c2VkV2luZG93TGQodWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMsCisgICAgICAgIElucHV0V2luZG93KiYgb3V0Rm9jdXNlZFdpbmRvdykgeworCisgICAgaW50MzJfdCBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEOworICAgIGJvb2wgZmlyc3RJdGVyYXRpb24gPSB0cnVlOworICAgIEFOUlRpbWVyIGFuclRpbWVyOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKGZpcnN0SXRlcmF0aW9uKSB7CisgICAgICAgICAgICBmaXJzdEl0ZXJhdGlvbiA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCEgYW5yVGltZXIud2FpdEZvckRpc3BhdGNoU3RhdGVDaGFuZ2VMZCh0aGlzKSkgeworICAgICAgICAgICAgICAgIExPR1coIkRyb3BwaW5nIGV2ZW50IGJlY2F1c2UgdGhlIGRpc3BhdGNoZXIgdGltZWQgb3V0IHdhaXRpbmcgdG8gaWRlbnRpZnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB3aW5kb3cgdGhhdCBzaG91bGQgcmVjZWl2ZSBpdC4iKTsKKyAgICAgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fVElNRURfT1VUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgZGlzcGF0Y2ggaXMgbm90IGVuYWJsZWQgdGhlbiBmYWlsLgorICAgICAgICBpZiAoISBtRGlzcGF0Y2hFbmFibGVkKSB7CisgICAgICAgICAgICBMT0dJKCJEcm9wcGluZyBldmVudCBiZWNhdXNlIGlucHV0IGRpc3BhdGNoIGlzIGRpc2FibGVkLiIpOworICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgZGlzcGF0Y2ggaXMgZnJvemVuIG9yIHdlIGRvbid0IGhhdmUgdmFsaWQgd2luZG93IGRhdGEgeWV0IHRoZW4gd2FpdC4KKyAgICAgICAgaWYgKG1EaXNwYXRjaEZyb3plbiB8fCAhIG1XaW5kb3dzUmVhZHkpIHsKKyNpZiBERUJVR19GT0NVUworICAgICAgICAgICAgTE9HRCgiV2FpdGluZyBiZWNhdXNlIGRpc3BhdGNoIGlzIGZyb3plbiBvciB3aW5kb3dzIGFyZSBub3QgcmVhZHkuIik7CisjZW5kaWYKKyAgICAgICAgICAgIGFuclRpbWVyLmRpc3BhdGNoRnJvemVuQnlTeXN0ZW0oKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY3VycmVudGx5IGZvY3VzZWQgd2luZG93IGFuZCBubyBmb2N1c2VkIGFwcGxpY2F0aW9uCisgICAgICAgIC8vIHRoZW4gZHJvcCB0aGUgZXZlbnQuCisgICAgICAgIGlmICghIG1Gb2N1c2VkV2luZG93KSB7CisgICAgICAgICAgICBpZiAobUZvY3VzZWRBcHBsaWNhdGlvbikgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgICAgICAgICAgICAgTE9HRCgiV2FpdGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZvY3VzZWQgd2luZG93IGJ1dCB0aGVyZSBpcyBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb2N1c2VkIGFwcGxpY2F0aW9uIHRoYXQgbWF5IHlldCBpbnRyb2R1Y2UgYSBuZXcgdGFyZ2V0OiAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uLT5uYW1lLnN0cmluZygpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMT0dJKCJEcm9wcGluZyBldmVudCBiZWNhdXNlIHRoZXJlIGlzIG5vIGZvY3VzZWQgd2luZG93IG9yIGZvY3VzZWQgYXBwbGljYXRpb24uIik7CisgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fRkFJTEVEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayBwZXJtaXNzaW9ucy4KKyAgICAgICAgaWYgKCEgY2hlY2tJbmplY3Rpb25QZXJtaXNzaW9uKG1Gb2N1c2VkV2luZG93LCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpKSB7CisgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50bHkgZm9jdXNlZCB3aW5kb3cgaXMgcGF1c2VkIHRoZW4ga2VlcCB3YWl0aW5nLgorICAgICAgICBpZiAobUZvY3VzZWRXaW5kb3ctPnBhdXNlZCkgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgICAgICAgICBMT0dEKCJXYWl0aW5nIGJlY2F1c2UgZm9jdXNlZCB3aW5kb3cgaXMgcGF1c2VkLiIpOworI2VuZGlmCisgICAgICAgICAgICBhbnJUaW1lci5kaXNwYXRjaFBhdXNlZEJ5QXBwbGljYXRpb24obUZvY3VzZWRXaW5kb3cpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdWNjZXNzIQorICAgICAgICBicmVhazsgLy8gZG9uZSB3YWl0aW5nLCBleGl0IGxvb3AKKyAgICB9CisKKyAgICAvLyBPdXRwdXQgdGFyZ2V0cy4KKyAgICBpZiAoaW5qZWN0aW9uUmVzdWx0ID09IElOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQpIHsKKyAgICAgICAgYWRkVGFyZ2V0KG1Gb2N1c2VkV2luZG93LCBJbnB1dFRhcmdldDo6RkxBR19TWU5DLAorICAgICAgICAgICAgICAgIGFuclRpbWVyLmdldFRpbWVTcGVudFdhaXRpbmdGb3JBcHBsaWNhdGlvbigpLCBvdXRUYXJnZXRzKTsKKworICAgICAgICBvdXRGb2N1c2VkV2luZG93ID0gbUZvY3VzZWRXaW5kb3c7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb3V0Rm9jdXNlZFdpbmRvdyA9IE5VTEw7CisgICAgfQorCisjaWYgREVCVUdfRk9DVVMKKyAgICBMT0dEKCJ3YWl0Rm9yRm9jdXNlZFdpbmRvdyBmaW5pc2hlZDogaW5qZWN0aW9uUmVzdWx0PSVkIiwKKyAgICAgICAgICAgIGluamVjdGlvblJlc3VsdCk7CisgICAgZHVtcERpc3BhdGNoU3RhdGVMZCgpOworI2VuZGlmCisgICAgcmV0dXJuIGluamVjdGlvblJlc3VsdDsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OndhaXRGb3JUb3VjaGVkV2luZG93TGQoTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCwgVmVjdG9yPElucHV0VGFyZ2V0PiYgb3V0VGFyZ2V0cywKKyAgICAgICAgSW5wdXRXaW5kb3cqJiBvdXRUb3VjaGVkV2luZG93KSB7CisgICAgbnNlY3NfdCBzdGFydFRpbWUgPSBub3coKTsKKworICAgIGludDMyX3QgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRDsKKyAgICBpbnQzMl90IGFjdGlvbiA9IG1vdGlvbkV2ZW50LT5nZXRBY3Rpb24oKTsKKworICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zLCB3ZSBkZWZlciB1cGRhdGluZyB0aGUgdG91Y2ggc3RhdGUgdW50aWwgd2UgYXJlIHN1cmUgdGhhdAorICAgIC8vIGV2ZW50IGluamVjdGlvbiB3aWxsIGJlIGFsbG93ZWQuCisgICAgLy8KKyAgICAvLyBGSVhNRSBJbiB0aGUgb3JpZ2luYWwgY29kZSwgc2NyZWVuV2FzT2ZmIGNvdWxkIG5ldmVyIGJlIHNldCB0byB0cnVlLgorICAgIC8vICAgICAgIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgUE9MSUNZX0ZMQUdfV09LRV9IRVJFCisgICAgLy8gICAgICAgYW5kIFBPTElDWV9GTEFHX0JSSUdIVF9IRVJFIGZsYWdzIHdlcmUgc2V0IG9ubHkgd2hlbiBwcmVwcm9jZXNzaW5nIHJhdworICAgIC8vICAgICAgIEVWX0tFWSwgRVZfUkVMIGFuZCBFVl9BQlMgZXZlbnRzLiAgQXMgaXQgaGFwcGVucywgdGhlIHRvdWNoIGV2ZW50IHdhcworICAgIC8vICAgICAgIGFjdHVhbGx5IGVucXVldWVkIHVzaW5nIHRoZSBwb2xpY3lGbGFncyB0aGF0IGFwcGVhcmVkIGluIHRoZSBmaW5hbCBFVl9TWU4KKyAgICAvLyAgICAgICBldmVudHMgdXBvbiB3aGljaCBubyBwcmVwcm9jZXNzaW5nIHRvb2sgcGxhY2UuICBTbyBwb2xpY3lGbGFncyB3YXMgYWx3YXlzIDAuCisgICAgLy8gICAgICAgSW4gdGhlIG5ldyBuYXRpdmUgaW5wdXQgZGlzcGF0Y2hlciB3ZSdyZSBhIGJpdCBtb3JlIGNhcmVmdWwgYWJvdXQgZXZlbnQKKyAgICAvLyAgICAgICBwcmVwcm9jZXNzaW5nIHNvIHRoZSB0b3VjaGVzIHdlIHJlY2VpdmUgY2FuIGFjdHVhbGx5IGhhdmUgbm9uLXplcm8gcG9saWN5RmxhZ3MuCisgICAgLy8gICAgICAgVW5mb3J0dW5hdGVseSB3ZSBvYnRhaW4gdW5kZXNpcmFibGUgYmVoYXZpb3IuCisgICAgLy8KKyAgICAvLyAgICAgICBIZXJlJ3Mgd2hhdCBoYXBwZW5zOgorICAgIC8vCisgICAgLy8gICAgICAgV2hlbiB0aGUgZGV2aWNlIGRpbXMgaW4gYW50aWNpcGF0aW9uIG9mIGdvaW5nIHRvIHNsZWVwLCB0b3VjaGVzCisgICAgLy8gICAgICAgaW4gd2luZG93cyB3aGljaCBoYXZlIEZMQUdfVE9VQ0hBQkxFX1dIRU5fV0FLSU5HIGNhdXNlCisgICAgLy8gICAgICAgdGhlIGRldmljZSB0byBicmlnaHRlbiBhbmQgcmVzZXQgdGhlIHVzZXIgYWN0aXZpdHkgdGltZXIuCisgICAgLy8gICAgICAgVG91Y2hlcyBvbiBvdGhlciB3aW5kb3dzIChzdWNoIGFzIHRoZSBsYXVuY2hlciB3aW5kb3cpCisgICAgLy8gICAgICAgYXJlIGRyb3BwZWQuICBUaGVuIGFmdGVyIGEgbW9tZW50LCB0aGUgZGV2aWNlIGdvZXMgdG8gc2xlZXAuICBPb3BzLgorICAgIC8vCisgICAgLy8gICAgICAgQWxzbyBub3RpY2UgaG93IHNjcmVlbldhc09mZiB3YXMgYmVpbmcgaW5pdGlhbGl6ZWQgdXNpbmcgUE9MSUNZX0ZMQUdfQlJJR0hUX0hFUkUKKyAgICAvLyAgICAgICBpbnN0ZWFkIG9mIFBPTElDWV9GTEFHX1dPS0VfSEVSRS4uLgorICAgIC8vCisgICAgYm9vbCBzY3JlZW5XYXNPZmYgPSBmYWxzZTsgLy8gb3JpZ2luYWwgcG9saWN5OiBwb2xpY3lGbGFncyAmIFBPTElDWV9GTEFHX0JSSUdIVF9IRVJFOworICAgIGJvb2wgZmlyc3RJdGVyYXRpb24gPSB0cnVlOworICAgIEFOUlRpbWVyIGFuclRpbWVyOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKGZpcnN0SXRlcmF0aW9uKSB7CisgICAgICAgICAgICBmaXJzdEl0ZXJhdGlvbiA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCEgYW5yVGltZXIud2FpdEZvckRpc3BhdGNoU3RhdGVDaGFuZ2VMZCh0aGlzKSkgeworICAgICAgICAgICAgICAgIExPR1coIkRyb3BwaW5nIGV2ZW50IGJlY2F1c2UgdGhlIGRpc3BhdGNoZXIgdGltZWQgb3V0IHdhaXRpbmcgdG8gaWRlbnRpZnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB3aW5kb3cgdGhhdCBzaG91bGQgcmVjZWl2ZSBpdC4iKTsKKyAgICAgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fVElNRURfT1VUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgZGlzcGF0Y2ggaXMgbm90IGVuYWJsZWQgdGhlbiBmYWlsLgorICAgICAgICBpZiAoISBtRGlzcGF0Y2hFbmFibGVkKSB7CisgICAgICAgICAgICBMT0dJKCJEcm9wcGluZyBldmVudCBiZWNhdXNlIGlucHV0IGRpc3BhdGNoIGlzIGRpc2FibGVkLiIpOworICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDsKKyAgICAgICAgICAgIGJyZWFrOyAvLyBmYWlsZWQsIGV4aXQgd2FpdCBsb29wCisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBkaXNwYXRjaCBpcyBmcm96ZW4gb3Igd2UgZG9uJ3QgaGF2ZSB2YWxpZCB3aW5kb3cgZGF0YSB5ZXQgdGhlbiB3YWl0LgorICAgICAgICBpZiAobURpc3BhdGNoRnJvemVuIHx8ICEgbVdpbmRvd3NSZWFkeSkgeworI2lmIERFQlVHX0lOUFVUX0RJU1BBVENIRVJfUE9MSUNZCisgICAgICAgICAgICBMT0dEKCJXYWl0aW5nIGJlY2F1c2UgZGlzcGF0Y2ggaXMgZnJvemVuIG9yIHdpbmRvd3MgYXJlIG5vdCByZWFkeS4iKTsKKyNlbmRpZgorICAgICAgICAgICAgYW5yVGltZXIuZGlzcGF0Y2hGcm96ZW5CeVN5c3RlbSgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBVcGRhdGUgdGhlIHRvdWNoIHN0YXRlIGFzIG5lZWRlZCBiYXNlZCBvbiB0aGUgcHJvcGVydGllcyBvZiB0aGUgdG91Y2ggZXZlbnQuCisgICAgICAgIGlmIChhY3Rpb24gPT0gTU9USU9OX0VWRU5UX0FDVElPTl9ET1dOKSB7CisgICAgICAgICAgICBJbnB1dFdpbmRvdyogbmV3VG91Y2hlZFdpbmRvdyA9IE5VTEw7CisgICAgICAgICAgICBtVGVtcFRvdWNoZWRPdXRzaWRlV2luZG93cy5jbGVhcigpOworCisgICAgICAgICAgICBpbnQzMl90IHggPSBpbnQzMl90KG1vdGlvbkV2ZW50LT5nZXRYKDApKTsKKyAgICAgICAgICAgIGludDMyX3QgeSA9IGludDMyX3QobW90aW9uRXZlbnQtPmdldFkoMCkpOworICAgICAgICAgICAgSW5wdXRXaW5kb3cqIHRvcEVycm9yV2luZG93ID0gTlVMTDsKKworICAgICAgICAgICAgLy8gVHJhdmVyc2Ugd2luZG93cyBmcm9tIGZyb250IHRvIGJhY2sgdG8gZmluZCB0b3VjaGVkIHdpbmRvdyBhbmQgb3V0c2lkZSB0YXJnZXRzLgorICAgICAgICAgICAgc2l6ZV90IG51bVdpbmRvd3MgPSBtV2luZG93cy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVdpbmRvd3M7IGkrKykgeworICAgICAgICAgICAgICAgIElucHV0V2luZG93KiB3aW5kb3cgPSAmIG1XaW5kb3dzLmVkaXRJdGVtQXQoaSk7CisgICAgICAgICAgICAgICAgaW50MzJfdCBmbGFncyA9IHdpbmRvdy0+bGF5b3V0UGFyYW1zRmxhZ3M7CisKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGTEFHX1NZU1RFTV9FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBpZiAoISB0b3BFcnJvcldpbmRvdykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9wRXJyb3JXaW5kb3cgPSB3aW5kb3c7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LT52aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghIChmbGFncyAmIEZMQUdfTk9UX1RPVUNIQUJMRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNUb3VjaE1vZGFsID0gKGZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZMQUdfTk9UX0ZPQ1VTQUJMRSB8IEZMQUdfTk9UX1RPVUNIX01PREFMKSkgPT0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1RvdWNoTW9kYWwgfHwgd2luZG93LT50b3VjaGFibGVBcmVhQ29udGFpbnNQb2ludCh4LCB5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIHNjcmVlbldhc09mZiB8fCBmbGFncyAmIEZMQUdfVE9VQ0hBQkxFX1dIRU5fV0FLSU5HKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RvdWNoZWRXaW5kb3cgPSB3aW5kb3c7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBmb3VuZCB0b3VjaGVkIHdpbmRvdywgZXhpdCB3aW5kb3cgbG9vcAorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRkxBR19XQVRDSF9PVVRTSURFX1RPVUNIKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVGVtcFRvdWNoZWRPdXRzaWRlV2luZG93cy5wdXNoKHdpbmRvdyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHdpbmRvdyBidXQgaXQgaXMgbm90IHRha2luZyBmb2N1cyAodHlwaWNhbGx5IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGl0IGlzIGludmlzaWJsZSkgdGhlbiB3YWl0IGZvciBpdC4gIEFueSBvdGhlciBmb2N1c2VkIHdpbmRvdyBtYXkgaW4KKyAgICAgICAgICAgIC8vIGZhY3QgYmUgaW4gQU5SIHN0YXRlLgorICAgICAgICAgICAgaWYgKHRvcEVycm9yV2luZG93ICYmIG5ld1RvdWNoZWRXaW5kb3cgIT0gdG9wRXJyb3JXaW5kb3cpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgICAgICAgICAgICAgIExPR0QoIldhaXRpbmcgYmVjYXVzZSBzeXN0ZW0gZXJyb3Igd2luZG93IGlzIHBlbmRpbmcuIik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBhbnJUaW1lci5kaXNwYXRjaEZyb3plbkJ5U3lzdGVtKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7IC8vIHdhaXQgc29tZSBtb3JlCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRpZCBub3QgZmluZCBhIHRvdWNoZWQgd2luZG93IHRoZW4gZmFpbC4KKyAgICAgICAgICAgIGlmICghIG5ld1RvdWNoZWRXaW5kb3cpIHsKKyAgICAgICAgICAgICAgICBpZiAobUZvY3VzZWRBcHBsaWNhdGlvbikgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgICAgICAgICAgICAgICAgIExPR0QoIldhaXRpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmb2N1c2VkIHdpbmRvdyBidXQgdGhlcmUgaXMgYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvY3VzZWQgYXBwbGljYXRpb24gdGhhdCBtYXkgeWV0IGludHJvZHVjZSBhIG5ldyB0YXJnZXQ6ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uLT5uYW1lLnN0cmluZygpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBMT0dJKCJEcm9wcGluZyBldmVudCBiZWNhdXNlIHRoZXJlIGlzIG5vIHRvdWNoZWQgd2luZG93IG9yIGZvY3VzZWQgYXBwbGljYXRpb24uIik7CisgICAgICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBicmVhazsgLy8gZmFpbGVkLCBleGl0IHdhaXQgbG9vcAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDaGVjayBwZXJtaXNzaW9ucy4KKyAgICAgICAgICAgIGlmICghIGNoZWNrSW5qZWN0aW9uUGVybWlzc2lvbihuZXdUb3VjaGVkV2luZG93LCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpKSB7CisgICAgICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1BFUk1JU1NJT05fREVOSUVEOworICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBmYWlsZWQsIGV4aXQgd2FpdCBsb29wCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZSB0b3VjaGVkIHdpbmRvdyBpcyBwYXVzZWQgdGhlbiBrZWVwIHdhaXRpbmcuCisgICAgICAgICAgICBpZiAobmV3VG91Y2hlZFdpbmRvdy0+cGF1c2VkKSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICAgICAgICAgICAgICBMT0dEKCJXYWl0aW5nIGJlY2F1c2UgdG91Y2hlZCB3aW5kb3cgaXMgcGF1c2VkLiIpOworI2VuZGlmCisgICAgICAgICAgICAgICAgYW5yVGltZXIuZGlzcGF0Y2hQYXVzZWRCeUFwcGxpY2F0aW9uKG5ld1RvdWNoZWRXaW5kb3cpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyB3YWl0IHNvbWUgbW9yZQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdWNjZXNzISAgVXBkYXRlIHRoZSB0b3VjaCBkaXNwYXRjaCBzdGF0ZSBmb3IgcmVhbC4KKyAgICAgICAgICAgIHJlbGVhc2VUb3VjaGVkV2luZG93TGQoKTsKKworICAgICAgICAgICAgbVRvdWNoZWRXaW5kb3cgPSBuZXdUb3VjaGVkV2luZG93OworCisgICAgICAgICAgICBpZiAobmV3VG91Y2hlZFdpbmRvdy0+aGFzV2FsbHBhcGVyKSB7CisgICAgICAgICAgICAgICAgbVRvdWNoZWRXYWxscGFwZXJXaW5kb3dzLmFwcGVuZFZlY3RvcihtV2FsbHBhcGVyV2luZG93cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsgLy8gZG9uZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgcGVybWlzc2lvbnMuCisgICAgICAgICAgICBpZiAoISBjaGVja0luamVjdGlvblBlcm1pc3Npb24obVRvdWNoZWRXaW5kb3csIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCkpIHsKKyAgICAgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZhaWxlZCwgZXhpdCB3YWl0IGxvb3AKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY3VycmVudGx5IHRvdWNoZWQgd2luZG93IHRoZW4gZmFpbC4KKyAgICAgICAgICAgIGlmICghIG1Ub3VjaGVkV2luZG93IHx8ICEgbVRvdWNoRG93bikgeworICAgICAgICAgICAgICAgIExPR0koIkRyb3BwaW5nIGV2ZW50IGJlY2F1c2UgdG91Y2hlZCB3aW5kb3cgaXMgbm8gbG9uZ2VyIHZhbGlkLiIpOworICAgICAgICAgICAgICAgIGluamVjdGlvblJlc3VsdCA9IElOUFVUX0VWRU5UX0lOSkVDVElPTl9GQUlMRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZhaWxlZCwgZXhpdCB3YWl0IGxvb3AKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgdGhlIHRvdWNoZWQgd2luZG93IGlzIHBhdXNlZCB0aGVuIGtlZXAgd2FpdGluZy4KKyAgICAgICAgICAgIGlmIChtVG91Y2hlZFdpbmRvdy0+cGF1c2VkKSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICAgICAgICAgICAgICBMT0dEKCJXYWl0aW5nIGJlY2F1c2UgdG91Y2hlZCB3aW5kb3cgaXMgcGF1c2VkLiIpOworI2VuZGlmCisgICAgICAgICAgICAgICAgYW5yVGltZXIuZGlzcGF0Y2hQYXVzZWRCeUFwcGxpY2F0aW9uKG1Ub3VjaGVkV2luZG93KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gd2FpdCBzb21lIG1vcmUKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VjY2VzcyEKKyAgICAgICAgICAgIGJyZWFrOyAvLyBkb25lCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBPdXRwdXQgdGFyZ2V0cy4KKyAgICBib29sIGhhdmVQZXJtaXNzaW9uOworICAgIGlmIChpbmplY3Rpb25SZXN1bHQgPT0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCkgeworICAgICAgICAvLyBJbmplY3Rpb24gc3VjY2VlZGVkIHNvIHRoZSBpbmplY3RvciBtdXN0IGhhdmUgcGVybWlzc2lvbi4KKyAgICAgICAgaGF2ZVBlcm1pc3Npb24gPSB0cnVlOworCisgICAgICAgIHNpemVfdCBudW1XYWxscGFwZXJXaW5kb3dzID0gbVRvdWNoZWRXYWxscGFwZXJXaW5kb3dzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1XYWxscGFwZXJXaW5kb3dzOyBpKyspIHsKKyAgICAgICAgICAgIGFkZFRhcmdldChtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3NbaV0sIDAsIDAsIG91dFRhcmdldHMpOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IG51bU91dHNpZGVXaW5kb3dzID0gbVRlbXBUb3VjaGVkT3V0c2lkZVdpbmRvd3Muc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU91dHNpZGVXaW5kb3dzOyBpKyspIHsKKyAgICAgICAgICAgIGFkZFRhcmdldChtVGVtcFRvdWNoZWRPdXRzaWRlV2luZG93c1tpXSwgSW5wdXRUYXJnZXQ6OkZMQUdfT1VUU0lERSwgMCwgb3V0VGFyZ2V0cyk7CisgICAgICAgIH0KKworICAgICAgICBhZGRUYXJnZXQobVRvdWNoZWRXaW5kb3csIElucHV0VGFyZ2V0OjpGTEFHX1NZTkMsCisgICAgICAgICAgICAgICAgYW5yVGltZXIuZ2V0VGltZVNwZW50V2FpdGluZ0ZvckFwcGxpY2F0aW9uKCksIG91dFRhcmdldHMpOworICAgICAgICBvdXRUb3VjaGVkV2luZG93ID0gbVRvdWNoZWRXaW5kb3c7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGluamVjdGlvblJlc3VsdCAhPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQKKyAgICAgICAgICAgICAgICAmJiBjaGVja0luamVjdGlvblBlcm1pc3Npb24oTlVMTCwgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkKSkgeworICAgICAgICAgICAgLy8gSW5qZWN0aW9uIGZhaWxlZCBidXQgdGhlIGluamVjdG9yIGRvZXMgaGF2ZSBwZXJtaXNzaW9uIHRvIGluamVjdCBldmVudHMuCisgICAgICAgICAgICAvLyBXaGlsZSB3ZSBtaWdodCBub3QgaGF2ZSBmb3VuZCBhIHZhbGlkIHRhcmdldCBmb3IgdGhlIGluamVjdGVkIGV2ZW50LCB3ZQorICAgICAgICAgICAgLy8gc3RpbGwgd2FudCB0byB1cGRhdGUgdGhlIGRpc3BhdGNoIHN0YXRlIHRvIHRha2UgaXQgaW50byBhY2NvdW50LgorICAgICAgICAgICAgaGF2ZVBlcm1pc3Npb24gPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSW5qZWN0b3IgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGluamVjdCBldmVudHMuCisgICAgICAgICAgICAvLyBXZSBtYWtlIHN1cmUgdG8gbGVhdmUgdGhlIGRpc3BhdGNoIHN0YXRlIHVuY2hhbmdlZC4KKyAgICAgICAgICAgIGhhdmVQZXJtaXNzaW9uID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgb3V0VG91Y2hlZFdpbmRvdyA9IE5VTEw7CisgICAgfQorICAgIG1UZW1wVG91Y2hlZE91dHNpZGVXaW5kb3dzLmNsZWFyKCk7CisKKyAgICAvLyBVcGRhdGUgZmluYWwgcGllY2VzIG9mIHRvdWNoIHN0YXRlIG5vdyB0aGF0IHdlIGtub3cgZm9yIHN1cmUgd2hldGhlciB0aGUgaW5qZWN0b3IKKyAgICAvLyBoYWQgcGVybWlzc2lvbiB0byBwZXJmb3JtIHRoZSBpbmplY3Rpb24uCisgICAgaWYgKGhhdmVQZXJtaXNzaW9uKSB7CisgICAgICAgIGlmIChhY3Rpb24gPT0gTU9USU9OX0VWRU5UX0FDVElPTl9ET1dOKSB7CisgICAgICAgICAgICBpZiAobVRvdWNoRG93bikgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgd2VpcmQuICBXZSBnb3QgYSBkb3duIGJ1dCB3ZSB0aG91Z2h0IGl0IHdhcyBhbHJlYWR5IGRvd24hCisgICAgICAgICAgICAgICAgTE9HVygiUG9pbnRlciBkb3duIHJlY2VpdmVkIHdoaWxlIGFscmVhZHkgZG93bi4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVRvdWNoRG93biA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbmplY3Rpb25SZXN1bHQgIT0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCkgeworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGZhaWxlZCB0byBpZGVudGlmeSBhIHRhcmdldCBmb3IgdGhpcyB0b3VjaCBkb3duLCB3ZSBtYXkgc3RpbGwKKyAgICAgICAgICAgICAgICAvLyBiZSBob2xkaW5nIG9uIHRvIGFuIGVhcmxpZXIgdGFyZ2V0IGZyb20gYSBwcmV2aW91cyB0b3VjaCBkb3duLiAgUmVsZWFzZSBpdC4KKyAgICAgICAgICAgICAgICByZWxlYXNlVG91Y2hlZFdpbmRvd0xkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IE1PVElPTl9FVkVOVF9BQ1RJT05fVVApIHsKKyAgICAgICAgICAgIG1Ub3VjaERvd24gPSBmYWxzZTsKKyAgICAgICAgICAgIHJlbGVhc2VUb3VjaGVkV2luZG93TGQoKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmIERFQlVHX0ZPQ1VTCisgICAgTE9HRCgid2FpdEZvclRvdWNoZWRXaW5kb3cgZmluaXNoZWQ6IGluamVjdGlvblJlc3VsdD0lZCIsCisgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQpOworICAgIGR1bXBEaXNwYXRjaFN0YXRlTGQoKTsKKyNlbmRpZgorICAgIHJldHVybiBpbmplY3Rpb25SZXN1bHQ7Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpyZWxlYXNlVG91Y2hlZFdpbmRvd0xkKCkgeworICAgIG1Ub3VjaGVkV2luZG93ID0gTlVMTDsKKyAgICBtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3MuY2xlYXIoKTsKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OmFkZFRhcmdldChjb25zdCBJbnB1dFdpbmRvdyogd2luZG93LCBpbnQzMl90IHRhcmdldEZsYWdzLAorICAgICAgICBuc2Vjc190IHRpbWVTcGVudFdhaXRpbmdGb3JBcHBsaWNhdGlvbiwgVmVjdG9yPElucHV0VGFyZ2V0PiYgb3V0VGFyZ2V0cykgeworICAgIG5zZWNzX3QgdGltZW91dCA9IHdpbmRvdy0+ZGlzcGF0Y2hpbmdUaW1lb3V0IC0gdGltZVNwZW50V2FpdGluZ0ZvckFwcGxpY2F0aW9uOworICAgIGlmICh0aW1lb3V0IDwgTUlOX0lOUFVUX0RJU1BBVENISU5HX1RJTUVPVVQpIHsKKyAgICAgICAgdGltZW91dCA9IE1JTl9JTlBVVF9ESVNQQVRDSElOR19USU1FT1VUOworICAgIH0KKworICAgIG91dFRhcmdldHMucHVzaCgpOworCisgICAgSW5wdXRUYXJnZXQmIHRhcmdldCA9IG91dFRhcmdldHMuZWRpdFRvcCgpOworICAgIHRhcmdldC5pbnB1dENoYW5uZWwgPSB3aW5kb3ctPmlucHV0Q2hhbm5lbDsKKyAgICB0YXJnZXQuZmxhZ3MgPSB0YXJnZXRGbGFnczsKKyAgICB0YXJnZXQudGltZW91dCA9IHRpbWVvdXQ7CisgICAgdGFyZ2V0LnhPZmZzZXQgPSAtIHdpbmRvdy0+ZnJhbWVMZWZ0OworICAgIHRhcmdldC55T2Zmc2V0ID0gLSB3aW5kb3ctPmZyYW1lVG9wOworfQorCitib29sIE5hdGl2ZUlucHV0TWFuYWdlcjo6Y2hlY2tJbmplY3Rpb25QZXJtaXNzaW9uKGNvbnN0IElucHV0V2luZG93KiB3aW5kb3csCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQpIHsKKyAgICBpZiAoaW5qZWN0b3JVaWQgPiAwICYmICh3aW5kb3cgPT0gTlVMTCB8fCB3aW5kb3ctPm93bmVyVWlkICE9IGluamVjdG9yVWlkKSkgeworICAgICAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworICAgICAgICBqYm9vbGVhbiByZXN1bHQgPSBlbnYtPkNhbGxCb29sZWFuTWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5jaGVja0luamVjdEV2ZW50c1Blcm1pc3Npb24sIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCk7CisgICAgICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAiY2hlY2tJbmplY3RFdmVudHNQZXJtaXNzaW9uIik7CisKKyAgICAgICAgaWYgKCEgcmVzdWx0KSB7CisgICAgICAgICAgICBpZiAod2luZG93KSB7CisgICAgICAgICAgICAgICAgTE9HVygiUGVybWlzc2lvbiBkZW5pZWQ6IGluamVjdGluZyBldmVudCBmcm9tIHBpZCAlZCB1aWQgJWQgdG8gd2luZG93ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIGlucHV0IGNoYW5uZWwgJXMgb3duZWQgYnkgdWlkICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCwgd2luZG93LT5pbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+b3duZXJVaWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJQZXJtaXNzaW9uIGRlbmllZDogaW5qZWN0aW5nIGV2ZW50IGZyb20gcGlkICVkIHVpZCAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2ludDMyX3QgTmF0aXZlSW5wdXRNYW5hZ2VyOjp3YWl0Rm9yS2V5RXZlbnRUYXJnZXRzKEtleUV2ZW50KiBrZXlFdmVudCwgdWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgIExPR0QoIndhaXRGb3JLZXlFdmVudFRhcmdldHMgLSBwb2xpY3lGbGFncz0lZCwgaW5qZWN0b3JQaWQ9JWQsIGluamVjdG9yVWlkPSVkIiwKKyAgICAgICAgICAgIHBvbGljeUZsYWdzLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpOworI2VuZGlmCisKKyAgICBpbnQzMl90IHdpbmRvd1R5cGU7CisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1EaXNwYXRjaExvY2spOworCisgICAgICAgIElucHV0V2luZG93KiBmb2N1c2VkV2luZG93OworICAgICAgICBpbnQzMl90IGluamVjdGlvblJlc3VsdCA9IHdhaXRGb3JGb2N1c2VkV2luZG93TGQocG9saWN5RmxhZ3MsCisgICAgICAgICAgICAgICAgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLCBvdXRUYXJnZXRzLCAvKm91dCovIGZvY3VzZWRXaW5kb3cpOworICAgICAgICBpZiAoaW5qZWN0aW9uUmVzdWx0ICE9IElOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQpIHsKKyAgICAgICAgICAgIHJldHVybiBpbmplY3Rpb25SZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3dUeXBlID0gZm9jdXNlZFdpbmRvdy0+bGF5b3V0UGFyYW1zVHlwZTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgY29uc3QgSW5wdXRUYXJnZXQmIHRhcmdldCA9IG91dFRhcmdldHMudG9wKCk7CisgICAgYm9vbCBjb25zdW1lZCA9IGludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nKHRhcmdldCwga2V5RXZlbnQsIHBvbGljeUZsYWdzKTsKKyAgICBpZiAoY29uc3VtZWQpIHsKKyAgICAgICAgb3V0VGFyZ2V0cy5jbGVhcigpOworICAgICAgICByZXR1cm4gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRDsKKyAgICB9CisKKyAgICBwb2tlVXNlckFjdGl2aXR5SWZOZWVkZWQod2luZG93VHlwZSwgUE9XRVJfTUFOQUdFUl9CVVRUT05fRVZFTlQpOworICAgIHJldHVybiBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEOworfQorCitpbnQzMl90IE5hdGl2ZUlucHV0TWFuYWdlcjo6d2FpdEZvck1vdGlvbkV2ZW50VGFyZ2V0cyhNb3Rpb25FdmVudCogbW90aW9uRXZlbnQsCisgICAgICAgIHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLAorICAgICAgICBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzKSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICBMT0dEKCJ3YWl0Rm9yTW90aW9uRXZlbnRUYXJnZXRzIC0gcG9saWN5RmxhZ3M9JWQsIGluamVjdG9yUGlkPSVkLCBpbmplY3RvclVpZD0lZCIsCisgICAgICAgICAgICBwb2xpY3lGbGFncywgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkKTsKKyNlbmRpZgorCisgICAgc3dpdGNoIChtb3Rpb25FdmVudC0+Z2V0TmF0dXJlKCkpIHsKKyAgICBjYXNlIElOUFVUX0VWRU5UX05BVFVSRV9UUkFDS0JBTEw6CisgICAgICAgIHJldHVybiBpZGVudGlmeVRyYWNrYmFsbEV2ZW50VGFyZ2V0cyhtb3Rpb25FdmVudCwgcG9saWN5RmxhZ3MsIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCwKKyAgICAgICAgICAgICAgICBvdXRUYXJnZXRzKTsKKworICAgIGNhc2UgSU5QVVRfRVZFTlRfTkFUVVJFX1RPVUNIOgorICAgICAgICByZXR1cm4gaWRlbnRpZnlUb3VjaEV2ZW50VGFyZ2V0cyhtb3Rpb25FdmVudCwgcG9saWN5RmxhZ3MsIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCwKKyAgICAgICAgICAgICAgICBvdXRUYXJnZXRzKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgIHJldHVybiBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fRkFJTEVEOworICAgIH0KK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OmlkZW50aWZ5VHJhY2tiYWxsRXZlbnRUYXJnZXRzKE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCwKKyAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsCisgICAgICAgIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgIExPR0QoImlkZW50aWZ5VHJhY2tiYWxsRXZlbnRUYXJnZXRzIC0gcG9saWN5RmxhZ3M9JWQsIGluamVjdG9yUGlkPSVkLCBpbmplY3RvclVpZD0lZCIsCisgICAgICAgICAgICBwb2xpY3lGbGFncywgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkKTsKKyNlbmRpZgorCisgICAgaW50MzJfdCB3aW5kb3dUeXBlOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtRGlzcGF0Y2hMb2NrKTsKKworICAgICAgICBJbnB1dFdpbmRvdyogZm9jdXNlZFdpbmRvdzsKKyAgICAgICAgaW50MzJfdCBpbmplY3Rpb25SZXN1bHQgPSB3YWl0Rm9yRm9jdXNlZFdpbmRvd0xkKHBvbGljeUZsYWdzLAorICAgICAgICAgICAgICAgIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCwgb3V0VGFyZ2V0cywgLypvdXQqLyBmb2N1c2VkV2luZG93KTsKKyAgICAgICAgaWYgKGluamVjdGlvblJlc3VsdCAhPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEKSB7CisgICAgICAgICAgICByZXR1cm4gaW5qZWN0aW9uUmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgd2luZG93VHlwZSA9IGZvY3VzZWRXaW5kb3ctPmxheW91dFBhcmFtc1R5cGU7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIHBva2VVc2VyQWN0aXZpdHlJZk5lZWRlZCh3aW5kb3dUeXBlLCBQT1dFUl9NQU5BR0VSX0JVVFRPTl9FVkVOVCk7CisgICAgcmV0dXJuIElOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQ7Cit9CisKK2ludDMyX3QgTmF0aXZlSW5wdXRNYW5hZ2VyOjppZGVudGlmeVRvdWNoRXZlbnRUYXJnZXRzKE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCwKKyAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsCisgICAgICAgIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgIExPR0QoImlkZW50aWZ5VG91Y2hFdmVudFRhcmdldHMgLSBwb2xpY3lGbGFncz0lZCwgaW5qZWN0b3JQaWQ9JWQsIGluamVjdG9yVWlkPSVkIiwKKyAgICAgICAgICAgIHBvbGljeUZsYWdzLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpOworI2VuZGlmCisKKyAgICBpbnQzMl90IHdpbmRvd1R5cGU7CisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1EaXNwYXRjaExvY2spOworCisgICAgICAgIElucHV0V2luZG93KiB0b3VjaGVkV2luZG93OworICAgICAgICBpbnQzMl90IGluamVjdGlvblJlc3VsdCA9IHdhaXRGb3JUb3VjaGVkV2luZG93TGQobW90aW9uRXZlbnQsIHBvbGljeUZsYWdzLAorICAgICAgICAgICAgICAgIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCwgb3V0VGFyZ2V0cywgLypvdXQqLyB0b3VjaGVkV2luZG93KTsKKyAgICAgICAgaWYgKGluamVjdGlvblJlc3VsdCAhPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEKSB7CisgICAgICAgICAgICByZXR1cm4gaW5qZWN0aW9uUmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgd2luZG93VHlwZSA9IHRvdWNoZWRXaW5kb3ctPmxheW91dFBhcmFtc1R5cGU7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIGludDMyX3QgZXZlbnRUeXBlOworICAgIHN3aXRjaCAobW90aW9uRXZlbnQtPmdldEFjdGlvbigpKSB7CisgICAgY2FzZSBNT1RJT05fRVZFTlRfQUNUSU9OX0RPV046CisgICAgICAgIGV2ZW50VHlwZSA9IFBPV0VSX01BTkFHRVJfVE9VQ0hfRVZFTlQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTU9USU9OX0VWRU5UX0FDVElPTl9VUDoKKyAgICAgICAgZXZlbnRUeXBlID0gUE9XRVJfTUFOQUdFUl9UT1VDSF9VUF9FVkVOVDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKG1vdGlvbkV2ZW50LT5nZXRFdmVudFRpbWUoKSAtIG1vdGlvbkV2ZW50LT5nZXREb3duVGltZSgpCisgICAgICAgICAgICAgICAgPj0gRVZFTlRfSUdOT1JFX0RVUkFUSU9OKSB7CisgICAgICAgICAgICBldmVudFR5cGUgPSBQT1dFUl9NQU5BR0VSX1RPVUNIX0VWRU5UOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXZlbnRUeXBlID0gUE9XRVJfTUFOQUdFUl9MT05HX1RPVUNIX0VWRU5UOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBwb2tlVXNlckFjdGl2aXR5SWZOZWVkZWQod2luZG93VHlwZSwgZXZlbnRUeXBlKTsKKyAgICByZXR1cm4gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRDsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OmludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nKGNvbnN0IElucHV0VGFyZ2V0JiB0YXJnZXQsCisgICAgICAgIGNvbnN0IEtleUV2ZW50KiBrZXlFdmVudCwgdWludDMyX3QgcG9saWN5RmxhZ3MpIHsKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgam9iamVjdCBpbnB1dENoYW5uZWxPYmogPSBnZXRJbnB1dENoYW5uZWxPYmpMb2NhbChlbnYsIHRhcmdldC5pbnB1dENoYW5uZWwpOworICAgIGlmIChpbnB1dENoYW5uZWxPYmopIHsKKyAgICAgICAgamJvb2xlYW4gY29uc3VtZWQgPSBlbnYtPkNhbGxCb29sZWFuTWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5pbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZywKKyAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmosIGtleUV2ZW50LT5nZXRLZXlDb2RlKCksIGtleUV2ZW50LT5nZXRNZXRhU3RhdGUoKSwKKyAgICAgICAgICAgICAgICBrZXlFdmVudC0+Z2V0QWN0aW9uKCkgPT0gS0VZX0VWRU5UX0FDVElPTl9ET1dOLAorICAgICAgICAgICAgICAgIGtleUV2ZW50LT5nZXRSZXBlYXRDb3VudCgpLCBwb2xpY3lGbGFncyk7CisgICAgICAgIGJvb2wgZXJyb3IgPSBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgImludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nIik7CisKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihpbnB1dENoYW5uZWxPYmopOworCisgICAgICAgIHJldHVybiBjb25zdW1lZCAmJiAhIGVycm9yOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR1coIkNvdWxkIG5vdCBhcHBseSBrZXkgZGlzcGF0Y2ggcG9saWN5IGJlY2F1c2UgaW5wdXQgY2hhbm5lbCAnJXMnIGlzICIKKyAgICAgICAgICAgICAgICAibm8gbG9uZ2VyIHZhbGlkLiIsIHRhcmdldC5pbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpwb2tlVXNlckFjdGl2aXR5SWZOZWVkZWQoaW50MzJfdCB3aW5kb3dUeXBlLCBpbnQzMl90IGV2ZW50VHlwZSkgeworICAgIGlmICh3aW5kb3dUeXBlICE9IFRZUEVfS0VZR1VBUkQpIHsKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWUgPSBub3coKTsKKyAgICAgICAgcG9rZVVzZXJBY3Rpdml0eShldmVudFRpbWUsIGV2ZW50VHlwZSk7CisgICAgfQorfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6cG9rZVVzZXJBY3Rpdml0eShuc2Vjc190IGV2ZW50VGltZSwgaW50MzJfdCBldmVudFR5cGUpIHsKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5wb2tlVXNlckFjdGl2aXR5LAorICAgICAgICAgICAgZXZlbnRUaW1lLCBldmVudFR5cGUpOworICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAicG9rZVVzZXJBY3Rpdml0eSIpOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6ZHVtcERpc3BhdGNoU3RhdGVMZCgpIHsKKyNpZiBERUJVR19GT0NVUworICAgIExPR0QoIiAgZGlzcGF0Y2hlclN0YXRlOiBkaXNwYXRjaEVuYWJsZWQ9JWQsIGRpc3BhdGNoRnJvemVuPSVkLCB3aW5kb3dzUmVhZHk9JWQiLAorICAgICAgICAgICAgbURpc3BhdGNoRW5hYmxlZCwgbURpc3BhdGNoRnJvemVuLCBtV2luZG93c1JlYWR5KTsKKyAgICBpZiAobUZvY3VzZWRBcHBsaWNhdGlvbikgeworICAgICAgICBMT0dEKCIgIGZvY3VzZWRBcHBsaWNhdGlvbjogbmFtZT0nJXMnLCBkaXNwYXRjaGluZ1RpbWVvdXQ9JTAuM2ZtcyIsCisgICAgICAgICAgICAgICAgbUZvY3VzZWRBcHBsaWNhdGlvbi0+bmFtZS5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uLT5kaXNwYXRjaGluZ1RpbWVvdXQgLyAxMDAwMDAwLjApOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR0QoIiAgZm9jdXNlZEFwcGxpY2F0aW9uOiA8bnVsbD4iKTsKKyAgICB9CisgICAgTE9HRCgiICBmb2N1c2VkV2luZG93OiAnJXMnIiwKKyAgICAgICAgICAgIG1Gb2N1c2VkV2luZG93ICE9IE5VTEwgPyBtRm9jdXNlZFdpbmRvdy0+aW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkgOiAiPG51bGw+Iik7CisgICAgTE9HRCgiICB0b3VjaGVkV2luZG93OiAnJXMnLCB0b3VjaERvd249JWQiLAorICAgICAgICAgICAgbVRvdWNoZWRXaW5kb3cgIT0gTlVMTCA/IG1Ub3VjaGVkV2luZG93LT5pbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSA6ICI8bnVsbD4iLAorICAgICAgICAgICAgbVRvdWNoRG93bik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgTE9HRCgiICB0b3VjaGVkV2FsbHBhcGVyV2luZG93c1slZF06ICclcyciLAorICAgICAgICAgICAgICAgIGksIG1Ub3VjaGVkV2FsbHBhcGVyV2luZG93c1tpXS0+aW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1XaW5kb3dzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIExPR0QoIiAgd2luZG93c1slZF06ICclcycsIHBhdXNlZD0lZCwgaGFzRm9jdXM9JWQsIGhhc1dhbGxwYXBlcj0lZCwgdmlzaWJsZT0lZCwgIgorICAgICAgICAgICAgICAgICJmbGFncz0weCUwOHgsIHR5cGU9MHglMDh4LCAiCisgICAgICAgICAgICAgICAgImZyYW1lPVslZCwlZF0sIHRvdWNoYWJsZUFyZWE9WyVkLCVkXVslZCwlZF0sICIKKyAgICAgICAgICAgICAgICAib3duZXJQaWQ9JWQsIG93bmVyVWlkPSVkLCBkaXNwYXRjaGluZ1RpbWVvdXQ9JTAuM2ZtcyIsCisgICAgICAgICAgICAgICAgaSwgbVdpbmRvd3NbaV0uaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksCisgICAgICAgICAgICAgICAgbVdpbmRvd3NbaV0ucGF1c2VkLCBtV2luZG93c1tpXS5oYXNGb2N1cywgbVdpbmRvd3NbaV0uaGFzV2FsbHBhcGVyLAorICAgICAgICAgICAgICAgIG1XaW5kb3dzW2ldLnZpc2libGUsIG1XaW5kb3dzW2ldLmxheW91dFBhcmFtc0ZsYWdzLCBtV2luZG93c1tpXS5sYXlvdXRQYXJhbXNUeXBlLAorICAgICAgICAgICAgICAgIG1XaW5kb3dzW2ldLmZyYW1lTGVmdCwgbVdpbmRvd3NbaV0uZnJhbWVUb3AsCisgICAgICAgICAgICAgICAgbVdpbmRvd3NbaV0udG91Y2hhYmxlQXJlYUxlZnQsIG1XaW5kb3dzW2ldLnRvdWNoYWJsZUFyZWFUb3AsCisgICAgICAgICAgICAgICAgbVdpbmRvd3NbaV0udG91Y2hhYmxlQXJlYVJpZ2h0LCBtV2luZG93c1tpXS50b3VjaGFibGVBcmVhQm90dG9tLAorICAgICAgICAgICAgICAgIG1XaW5kb3dzW2ldLm93bmVyUGlkLCBtV2luZG93c1tpXS5vd25lclVpZCwKKyAgICAgICAgICAgICAgICBtV2luZG93c1tpXS5kaXNwYXRjaGluZ1RpbWVvdXQgLyAxMDAwMDAwLjApOworICAgIH0KKyNlbmRpZgorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hdGl2ZUlucHV0TWFuYWdlcjo6QU5SVGltZXI6OkFOUlRpbWVyKCkgOgorICAgICAgICBtQnVkZ2V0KEFQUExJQ0FUSU9OKSwgbVN0YXJ0VGltZShub3coKSksIG1Gcm96ZW4oZmFsc2UpLCBtUGF1c2VkV2luZG93KE5VTEwpIHsKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OkFOUlRpbWVyOjpkaXNwYXRjaEZyb3plbkJ5U3lzdGVtKCkgeworICAgIG1Gcm96ZW4gPSB0cnVlOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6QU5SVGltZXI6OmRpc3BhdGNoUGF1c2VkQnlBcHBsaWNhdGlvbihJbnB1dFdpbmRvdyogcGF1c2VkV2luZG93KSB7CisgICAgbVBhdXNlZFdpbmRvdyA9IHBhdXNlZFdpbmRvdzsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OkFOUlRpbWVyOjp3YWl0Rm9yRGlzcGF0Y2hTdGF0ZUNoYW5nZUxkKE5hdGl2ZUlucHV0TWFuYWdlciogaW5wdXRNYW5hZ2VyKSB7CisgICAgbnNlY3NfdCBjdXJyZW50VGltZSA9IG5vdygpOworCisgICAgQnVkZ2V0IG5ld0J1ZGdldDsKKyAgICBuc2Vjc190IGRpc3BhdGNoaW5nVGltZW91dDsKKyAgICBzcDxJbnB1dENoYW5uZWw+IHBhdXNlZENoYW5uZWwgPSBOVUxMOworICAgIGpvYmplY3QgdG9rZW5PYmogPSBOVUxMOworICAgIGlmIChtRnJvemVuKSB7CisgICAgICAgIG5ld0J1ZGdldCA9IFNZU1RFTTsKKyAgICAgICAgZGlzcGF0Y2hpbmdUaW1lb3V0ID0gREVGQVVMVF9JTlBVVF9ESVNQQVRDSElOR19USU1FT1VUOworICAgICAgICBtRnJvemVuID0gZmFsc2U7CisgICAgfSBlbHNlIGlmIChtUGF1c2VkV2luZG93KSB7CisgICAgICAgIG5ld0J1ZGdldCA9IEFQUExJQ0FUSU9OOworICAgICAgICBkaXNwYXRjaGluZ1RpbWVvdXQgPSBtUGF1c2VkV2luZG93LT5kaXNwYXRjaGluZ1RpbWVvdXQ7CisgICAgICAgIHBhdXNlZENoYW5uZWwgPSBtUGF1c2VkV2luZG93LT5pbnB1dENoYW5uZWw7CisgICAgICAgIG1QYXVzZWRXaW5kb3cgPSBOVUxMOworICAgIH0gZWxzZSBpZiAoaW5wdXRNYW5hZ2VyLT5tRm9jdXNlZEFwcGxpY2F0aW9uKSB7CisgICAgICAgIG5ld0J1ZGdldCA9IEFQUExJQ0FUSU9OOworICAgICAgICBkaXNwYXRjaGluZ1RpbWVvdXQgPSBpbnB1dE1hbmFnZXItPm1Gb2N1c2VkQXBwbGljYXRpb24tPmRpc3BhdGNoaW5nVGltZW91dDsKKyAgICAgICAgdG9rZW5PYmogPSBqbmlFbnYoKS0+TmV3TG9jYWxSZWYoaW5wdXRNYW5hZ2VyLT5tRm9jdXNlZEFwcGxpY2F0aW9uLT50b2tlbk9ialdlYWspOworICAgIH0gZWxzZSB7CisgICAgICAgIG5ld0J1ZGdldCA9IEFQUExJQ0FUSU9OOworICAgICAgICBkaXNwYXRjaGluZ1RpbWVvdXQgPSBERUZBVUxUX0lOUFVUX0RJU1BBVENISU5HX1RJTUVPVVQ7CisgICAgfQorCisgICAgaWYgKG1CdWRnZXQgIT0gbmV3QnVkZ2V0KSB7CisgICAgICAgIG1CdWRnZXQgPSBuZXdCdWRnZXQ7CisgICAgICAgIG1TdGFydFRpbWUgPSBjdXJyZW50VGltZTsKKyAgICB9CisKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIG5zZWNzX3QgdGltZW91dFJlbWFpbmluZyA9IG1TdGFydFRpbWUgKyBkaXNwYXRjaGluZ1RpbWVvdXQgLSBjdXJyZW50VGltZTsKKyAgICBpZiAodGltZW91dFJlbWFpbmluZyA+IDAKKyAgICAgICAgICAgICYmIGlucHV0TWFuYWdlci0+bURpc3BhdGNoU3RhdGVDaGFuZ2VkLndhaXRSZWxhdGl2ZShpbnB1dE1hbmFnZXItPm1EaXNwYXRjaExvY2ssCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRSZW1haW5pbmcpID09IE9LKSB7CisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHBhdXNlZENoYW5uZWwgIT0gTlVMTCB8fCB0b2tlbk9iaiAhPSBOVUxMKSB7CisgICAgICAgICAgICBib29sIHJlc3VtZWQ7CisgICAgICAgICAgICBuc2Vjc190IG5ld1RpbWVvdXQgPSAwOworCisgICAgICAgICAgICBpbnB1dE1hbmFnZXItPm1EaXNwYXRjaExvY2sudW5sb2NrKCk7IC8vIHJlbGVhc2UgbG9jaworICAgICAgICAgICAgaWYgKHBhdXNlZENoYW5uZWwgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJlc3VtZWQgPSBpbnB1dE1hbmFnZXItPm5vdGlmeUlucHV0Q2hhbm5lbEFOUihwYXVzZWRDaGFubmVsLCAvKm91dCovIG5ld1RpbWVvdXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bWVkID0gaW5wdXRNYW5hZ2VyLT5ub3RpZnlBTlIodG9rZW5PYmosIC8qb3V0Ki8gbmV3VGltZW91dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnB1dE1hbmFnZXItPm1EaXNwYXRjaExvY2subG9jaygpOyAvLyByZS1hY3F1aXJlIGxvY2sKKworICAgICAgICAgICAgaWYgKHJlc3VtZWQpIHsKKyAgICAgICAgICAgICAgICBtU3RhcnRUaW1lID0gbm93KCkgLSBkaXNwYXRjaGluZ1RpbWVvdXQgKyBuZXdUaW1lb3V0OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodG9rZW5PYmopIHsKKyAgICAgICAgam5pRW52KCktPkRlbGV0ZUxvY2FsUmVmKHRva2VuT2JqKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCituc2Vjc190IE5hdGl2ZUlucHV0TWFuYWdlcjo6QU5SVGltZXI6OmdldFRpbWVTcGVudFdhaXRpbmdGb3JBcHBsaWNhdGlvbigpIGNvbnN0IHsKKyAgICByZXR1cm4gbUJ1ZGdldCA9PSBBUFBMSUNBVElPTiA/IG5vdygpIC0gbVN0YXJ0VGltZSA6IDA7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIHNwPE5hdGl2ZUlucHV0TWFuYWdlcj4gZ05hdGl2ZUlucHV0TWFuYWdlcjsKKworc3RhdGljIGJvb2wgY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChKTklFbnYqIGVudikgeworICAgIGlmIChnTmF0aXZlSW5wdXRNYW5hZ2VyID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiSW5wdXQgbWFuYWdlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIGpuaVRocm93UnVudGltZUV4Y2VwdGlvbihlbnYsICJJbnB1dCBtYW5hZ2VyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZUluaXQoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eiwKKyAgICAgICAgam9iamVjdCBjYWxsYmFja3MpIHsKKyAgICBpZiAoZ05hdGl2ZUlucHV0TWFuYWdlciA9PSBOVUxMKSB7CisgICAgICAgIGdOYXRpdmVJbnB1dE1hbmFnZXIgPSBuZXcgTmF0aXZlSW5wdXRNYW5hZ2VyKGNhbGxiYWNrcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HRSgiSW5wdXQgbWFuYWdlciBhbHJlYWR5IGluaXRpYWxpemVkLiIpOworICAgICAgICBqbmlUaHJvd1J1bnRpbWVFeGNlcHRpb24oZW52LCAiSW5wdXQgbWFuYWdlciBhbHJlYWR5IGluaXRpYWxpemVkLiIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVN0YXJ0KEpOSUVudiogZW52LCBqY2xhc3MgY2xhenopIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5nZXRJbnB1dE1hbmFnZXIoKS0+c3RhcnQoKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIGpuaVRocm93UnVudGltZUV4Y2VwdGlvbihlbnYsICJJbnB1dCBtYW5hZ2VyIGNvdWxkIG5vdCBiZSBzdGFydGVkLiIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVNldERpc3BsYXlTaXplKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGppbnQgZGlzcGxheUlkLCBqaW50IHdpZHRoLCBqaW50IGhlaWdodCkgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFhYWCB3ZSBjb3VsZCBnZXQgdGhpcyBmcm9tIHRoZSBTdXJmYWNlRmxpbmdlciBkaXJlY3RseSBpbnN0ZWFkIG9mIHJlcXVpcmluZyBpdAorICAgIC8vIHRvIGJlIHBhc3NlZCBpbiBsaWtlIHRoaXMsIG5vdCBzdXJlIHdoaWNoIGlzIGJldHRlciBidXQgbGVhdmluZyBpdCBsaWtlIHRoaXMKKyAgICAvLyBrZWVwcyB0aGUgd2luZG93IG1hbmFnZXIgaW4gZGlyZWN0IGNvbnRyb2wgb2Ygd2hlbiBkaXNwbGF5IHRyYW5zaXRpb25zIHByb3BhZ2F0ZSBkb3duCisgICAgLy8gdG8gdGhlIGlucHV0IGRpc3BhdGNoZXIKKyAgICBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5zZXREaXNwbGF5U2l6ZShkaXNwbGF5SWQsIHdpZHRoLCBoZWlnaHQpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU2V0RGlzcGxheU9yaWVudGF0aW9uKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGppbnQgZGlzcGxheUlkLCBqaW50IG9yaWVudGF0aW9uKSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ05hdGl2ZUlucHV0TWFuYWdlci0+c2V0RGlzcGxheU9yaWVudGF0aW9uKGRpc3BsYXlJZCwgb3JpZW50YXRpb24pOworfQorCitzdGF0aWMgamludCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlR2V0U2NhbkNvZGVTdGF0ZShKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqaW50IGRldmljZUlkLCBqaW50IGRldmljZUNsYXNzZXMsIGppbnQgc2NhbkNvZGUpIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybiBLRVlfU1RBVEVfVU5LTk9XTjsKKyAgICB9CisKKyAgICByZXR1cm4gZ05hdGl2ZUlucHV0TWFuYWdlci0+Z2V0SW5wdXRNYW5hZ2VyKCktPmdldFNjYW5Db2RlU3RhdGUoCisgICAgICAgICAgICBkZXZpY2VJZCwgZGV2aWNlQ2xhc3Nlcywgc2NhbkNvZGUpOworfQorCitzdGF0aWMgamludCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlR2V0S2V5Q29kZVN0YXRlKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGppbnQgZGV2aWNlSWQsIGppbnQgZGV2aWNlQ2xhc3NlcywgamludCBrZXlDb2RlKSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm4gS0VZX1NUQVRFX1VOS05PV047CisgICAgfQorCisgICAgcmV0dXJuIGdOYXRpdmVJbnB1dE1hbmFnZXItPmdldElucHV0TWFuYWdlcigpLT5nZXRLZXlDb2RlU3RhdGUoCisgICAgICAgICAgICBkZXZpY2VJZCwgZGV2aWNlQ2xhc3Nlcywga2V5Q29kZSk7Cit9CisKK3N0YXRpYyBqaW50IGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVHZXRTd2l0Y2hTdGF0ZShKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqaW50IGRldmljZUlkLCBqaW50IGRldmljZUNsYXNzZXMsIGppbnQgc3cpIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybiBLRVlfU1RBVEVfVU5LTk9XTjsKKyAgICB9CisKKyAgICByZXR1cm4gZ05hdGl2ZUlucHV0TWFuYWdlci0+Z2V0SW5wdXRNYW5hZ2VyKCktPmdldFN3aXRjaFN0YXRlKGRldmljZUlkLCBkZXZpY2VDbGFzc2VzLCBzdyk7Cit9CisKK3N0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlSGFzS2V5cyhKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqaW50QXJyYXkga2V5Q29kZXMsIGpib29sZWFuQXJyYXkgb3V0RmxhZ3MpIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybiBKTklfRkFMU0U7CisgICAgfQorCisgICAgaW50MzJfdCogY29kZXMgPSBlbnYtPkdldEludEFycmF5RWxlbWVudHMoa2V5Q29kZXMsIE5VTEwpOworICAgIHVpbnQ4X3QqIGZsYWdzID0gZW52LT5HZXRCb29sZWFuQXJyYXlFbGVtZW50cyhvdXRGbGFncywgTlVMTCk7CisgICAganNpemUgbnVtQ29kZXMgPSBlbnYtPkdldEFycmF5TGVuZ3RoKGtleUNvZGVzKTsKKyAgICBqYm9vbGVhbiByZXN1bHQ7CisgICAgaWYgKG51bUNvZGVzID09IGVudi0+R2V0QXJyYXlMZW5ndGgob3V0RmxhZ3MpKSB7CisgICAgICAgIHJlc3VsdCA9IGdOYXRpdmVJbnB1dE1hbmFnZXItPmdldElucHV0TWFuYWdlcigpLT5oYXNLZXlzKG51bUNvZGVzLCBjb2RlcywgZmxhZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IEpOSV9GQUxTRTsKKyAgICB9CisKKyAgICBlbnYtPlJlbGVhc2VCb29sZWFuQXJyYXlFbGVtZW50cyhvdXRGbGFncywgZmxhZ3MsIDApOworICAgIGVudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMoa2V5Q29kZXMsIGNvZGVzLCAwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCB0aHJvd0lucHV0Q2hhbm5lbE5vdEluaXRpYWxpemVkKEpOSUVudiogZW52KSB7CisgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgImlucHV0Q2hhbm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQiKTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX2hhbmRsZUlucHV0Q2hhbm5lbERpc3Bvc2VkKEpOSUVudiogZW52LAorICAgICAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaiwgY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsLCB2b2lkKiBkYXRhKSB7CisgICAgTE9HVygiSW5wdXQgY2hhbm5lbCBvYmplY3QgJyVzJyB3YXMgZGlzcG9zZWQgd2l0aG91dCBmaXJzdCBiZWluZyB1bnJlZ2lzdGVyZWQgd2l0aCAiCisgICAgICAgICAgICAidGhlIGlucHV0IG1hbmFnZXIhIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworCisgICAgaWYgKGdOYXRpdmVJbnB1dE1hbmFnZXIgIT0gTlVMTCkgeworICAgICAgICBnTmF0aXZlSW5wdXRNYW5hZ2VyLT51bnJlZ2lzdGVySW5wdXRDaGFubmVsKGVudiwgaW5wdXRDaGFubmVsKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVSZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaikgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNwPElucHV0Q2hhbm5lbD4gaW5wdXRDaGFubmVsID0gYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LAorICAgICAgICAgICAgaW5wdXRDaGFubmVsT2JqKTsKKyAgICBpZiAoaW5wdXRDaGFubmVsID09IE5VTEwpIHsKKyAgICAgICAgdGhyb3dJbnB1dENoYW5uZWxOb3RJbml0aWFsaXplZChlbnYpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5yZWdpc3RlcklucHV0Q2hhbm5lbCgKKyAgICAgICAgICAgIGVudiwgaW5wdXRDaGFubmVsLCBpbnB1dENoYW5uZWxPYmopOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIkZhaWxlZCB0byByZWdpc3RlciBpbnB1dCBjaGFubmVsLiAgIgorICAgICAgICAgICAgICAgICJDaGVjayBsb2dzIGZvciBkZXRhaWxzLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXREaXNwb3NlQ2FsbGJhY2soZW52LCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgICAgICBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfaGFuZGxlSW5wdXRDaGFubmVsRGlzcG9zZWQsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaikgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNwPElucHV0Q2hhbm5lbD4gaW5wdXRDaGFubmVsID0gYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LAorICAgICAgICAgICAgaW5wdXRDaGFubmVsT2JqKTsKKyAgICBpZiAoaW5wdXRDaGFubmVsID09IE5VTEwpIHsKKyAgICAgICAgdGhyb3dJbnB1dENoYW5uZWxOb3RJbml0aWFsaXplZChlbnYpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXREaXNwb3NlQ2FsbGJhY2soZW52LCBpbnB1dENoYW5uZWxPYmosIE5VTEwsIE5VTEwpOworCisgICAgc3RhdHVzX3Qgc3RhdHVzID0gZ05hdGl2ZUlucHV0TWFuYWdlci0+dW5yZWdpc3RlcklucHV0Q2hhbm5lbChlbnYsIGlucHV0Q2hhbm5lbCk7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBqbmlUaHJvd1J1bnRpbWVFeGNlcHRpb24oZW52LCAiRmFpbGVkIHRvIHVucmVnaXN0ZXIgaW5wdXQgY2hhbm5lbC4gICIKKyAgICAgICAgICAgICAgICAiQ2hlY2sgbG9ncyBmb3IgZGV0YWlscy4iKTsKKyAgICB9Cit9CisKK3N0YXRpYyBqaW50IGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVJbmplY3RLZXlFdmVudChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGtleUV2ZW50T2JqLCBqaW50IG5hdHVyZSwgamludCBpbmplY3RvclBpZCwgamludCBpbmplY3RvclVpZCwKKyAgICAgICAgamJvb2xlYW4gc3luYywgamludCB0aW1lb3V0TWlsbGlzKSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm4gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDsKKyAgICB9CisKKyAgICBLZXlFdmVudCBrZXlFdmVudDsKKyAgICBhbmRyb2lkX3ZpZXdfS2V5RXZlbnRfdG9OYXRpdmUoZW52LCBrZXlFdmVudE9iaiwgbmF0dXJlLCAmIGtleUV2ZW50KTsKKworICAgIHJldHVybiBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5nZXRJbnB1dE1hbmFnZXIoKS0+aW5qZWN0SW5wdXRFdmVudCgmIGtleUV2ZW50LAorICAgICAgICAgICAgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLCBzeW5jLCB0aW1lb3V0TWlsbGlzKTsKK30KKworc3RhdGljIGppbnQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZUluamVjdE1vdGlvbkV2ZW50KEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGpvYmplY3QgbW90aW9uRXZlbnRPYmosIGppbnQgbmF0dXJlLCBqaW50IGluamVjdG9yUGlkLCBqaW50IGluamVjdG9yVWlkLAorICAgICAgICBqYm9vbGVhbiBzeW5jLCBqaW50IHRpbWVvdXRNaWxsaXMpIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybiBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fRkFJTEVEOworICAgIH0KKworICAgIE1vdGlvbkV2ZW50IG1vdGlvbkV2ZW50OworICAgIGFuZHJvaWRfdmlld19Nb3Rpb25FdmVudF90b05hdGl2ZShlbnYsIG1vdGlvbkV2ZW50T2JqLCBuYXR1cmUsICYgbW90aW9uRXZlbnQpOworCisgICAgcmV0dXJuIGdOYXRpdmVJbnB1dE1hbmFnZXItPmdldElucHV0TWFuYWdlcigpLT5pbmplY3RJbnB1dEV2ZW50KCYgbW90aW9uRXZlbnQsCisgICAgICAgICAgICBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQsIHN5bmMsIHRpbWVvdXRNaWxsaXMpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU2V0SW5wdXRXaW5kb3dzKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGpvYmplY3RBcnJheSB3aW5kb3dPYmpBcnJheSkgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdOYXRpdmVJbnB1dE1hbmFnZXItPnNldElucHV0V2luZG93cyhlbnYsIHdpbmRvd09iakFycmF5KTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVNldEZvY3VzZWRBcHBsaWNhdGlvbihKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGFwcGxpY2F0aW9uT2JqKSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ05hdGl2ZUlucHV0TWFuYWdlci0+c2V0Rm9jdXNlZEFwcGxpY2F0aW9uKGVudiwgYXBwbGljYXRpb25PYmopOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU2V0SW5wdXREaXNwYXRjaE1vZGUoSk5JRW52KiBlbnYsCisgICAgICAgIGpjbGFzcyBjbGF6eiwgamJvb2xlYW4gZW5hYmxlZCwgamJvb2xlYW4gZnJvemVuKSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ05hdGl2ZUlucHV0TWFuYWdlci0+c2V0SW5wdXREaXNwYXRjaE1vZGUoZW5hYmxlZCwgZnJvemVuKTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVByZWVtcHRJbnB1dERpc3BhdGNoKEpOSUVudiogZW52LAorICAgICAgICBqY2xhc3MgY2xhenopIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5wcmVlbXB0SW5wdXREaXNwYXRjaCgpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBKTklOYXRpdmVNZXRob2QgZ0lucHV0TWFuYWdlck1ldGhvZHNbXSA9IHsKKyAgICAvKiBuYW1lLCBzaWduYXR1cmUsIGZ1bmNQdHIgKi8KKyAgICB7ICJuYXRpdmVJbml0IiwgIihMY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWFuYWdlciRDYWxsYmFja3M7KVYiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlSW5pdCB9LAorICAgIHsgIm5hdGl2ZVN0YXJ0IiwgIigpViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTdGFydCB9LAorICAgIHsgIm5hdGl2ZVNldERpc3BsYXlTaXplIiwgIihJSUkpViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTZXREaXNwbGF5U2l6ZSB9LAorICAgIHsgIm5hdGl2ZVNldERpc3BsYXlPcmllbnRhdGlvbiIsICIoSUkpViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTZXREaXNwbGF5T3JpZW50YXRpb24gfSwKKyAgICB7ICJuYXRpdmVHZXRTY2FuQ29kZVN0YXRlIiwgIihJSUkpSSIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVHZXRTY2FuQ29kZVN0YXRlIH0sCisgICAgeyAibmF0aXZlR2V0S2V5Q29kZVN0YXRlIiwgIihJSUkpSSIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVHZXRLZXlDb2RlU3RhdGUgfSwKKyAgICB7ICJuYXRpdmVHZXRTd2l0Y2hTdGF0ZSIsICIoSUlJKUkiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlR2V0U3dpdGNoU3RhdGUgfSwKKyAgICB7ICJuYXRpdmVIYXNLZXlzIiwgIihbSVtaKVoiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlSGFzS2V5cyB9LAorICAgIHsgIm5hdGl2ZVJlZ2lzdGVySW5wdXRDaGFubmVsIiwgIihMYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbDspViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVSZWdpc3RlcklucHV0Q2hhbm5lbCB9LAorICAgIHsgIm5hdGl2ZVVucmVnaXN0ZXJJbnB1dENoYW5uZWwiLCAiKExhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsOylWIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVVucmVnaXN0ZXJJbnB1dENoYW5uZWwgfSwKKyAgICB7ICJuYXRpdmVJbmplY3RLZXlFdmVudCIsICIoTGFuZHJvaWQvdmlldy9LZXlFdmVudDtJSUlaSSlJIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZUluamVjdEtleUV2ZW50IH0sCisgICAgeyAibmF0aXZlSW5qZWN0TW90aW9uRXZlbnQiLCAiKExhbmRyb2lkL3ZpZXcvTW90aW9uRXZlbnQ7SUlJWkkpSSIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVJbmplY3RNb3Rpb25FdmVudCB9LAorICAgIHsgIm5hdGl2ZVNldElucHV0V2luZG93cyIsICIoW0xjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRXaW5kb3c7KVYiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU2V0SW5wdXRXaW5kb3dzIH0sCisgICAgeyAibmF0aXZlU2V0Rm9jdXNlZEFwcGxpY2F0aW9uIiwgIihMY29tL2FuZHJvaWQvc2VydmVyL0lucHV0QXBwbGljYXRpb247KVYiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU2V0Rm9jdXNlZEFwcGxpY2F0aW9uIH0sCisgICAgeyAibmF0aXZlU2V0SW5wdXREaXNwYXRjaE1vZGUiLCAiKFpaKVYiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU2V0SW5wdXREaXNwYXRjaE1vZGUgfSwKKyAgICB7ICJuYXRpdmVQcmVlbXB0SW5wdXREaXNwYXRjaCIsICIoKVYiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlUHJlZW1wdElucHV0RGlzcGF0Y2ggfQorfTsKKworI2RlZmluZSBGSU5EX0NMQVNTKHZhciwgY2xhc3NOYW1lKSBcCisgICAgICAgIHZhciA9IGVudi0+RmluZENsYXNzKGNsYXNzTmFtZSk7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgY2xhc3MgIiBjbGFzc05hbWUpOyBcCisgICAgICAgIHZhciA9IGpjbGFzcyhlbnYtPk5ld0dsb2JhbFJlZih2YXIpKTsKKworI2RlZmluZSBHRVRfTUVUSE9EX0lEKHZhciwgY2xhenosIG1ldGhvZE5hbWUsIG1ldGhvZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgbWV0aG9kTmFtZSwgbWV0aG9kRGVzY3JpcHRvcik7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgbWV0aG9kICIgbWV0aG9kTmFtZSk7CisKKyNkZWZpbmUgR0VUX0ZJRUxEX0lEKHZhciwgY2xhenosIGZpZWxkTmFtZSwgZmllbGREZXNjcmlwdG9yKSBcCisgICAgICAgIHZhciA9IGVudi0+R2V0RmllbGRJRChjbGF6eiwgZmllbGROYW1lLCBmaWVsZERlc2NyaXB0b3IpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIGZpZWxkICIgZmllbGROYW1lKTsKKworaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcihKTklFbnYqIGVudikgeworICAgIGludCByZXMgPSBqbmlSZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LCAiY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWFuYWdlciIsCisgICAgICAgICAgICBnSW5wdXRNYW5hZ2VyTWV0aG9kcywgTkVMRU0oZ0lucHV0TWFuYWdlck1ldGhvZHMpKTsKKyAgICBMT0dfRkFUQUxfSUYocmVzIDwgMCwgIlVuYWJsZSB0byByZWdpc3RlciBuYXRpdmUgbWV0aG9kcy4iKTsKKworICAgIC8vIENhbGxiYWNrcworCisgICAgRklORF9DTEFTUyhnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LCAiY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWFuYWdlciRDYWxsYmFja3MiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5pc1NjcmVlbk9uLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImlzU2NyZWVuT24iLCAiKClaIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8uaXNTY3JlZW5CcmlnaHQsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiaXNTY3JlZW5CcmlnaHQiLCAiKClaIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQiLCAiKEpJSUkpViIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLm5vdGlmeUxpZFN3aXRjaENoYW5nZWQsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibm90aWZ5TGlkU3dpdGNoQ2hhbmdlZCIsICIoSlopViIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLm5vdGlmeUlucHV0Q2hhbm5lbEJyb2tlbiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJub3RpZnlJbnB1dENoYW5uZWxCcm9rZW4iLCAiKExhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsOylWIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5SW5wdXRDaGFubmVsQU5SLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm5vdGlmeUlucHV0Q2hhbm5lbEFOUiIsICIoTGFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWw7KUoiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5SLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm5vdGlmeUlucHV0Q2hhbm5lbFJlY292ZXJlZEZyb21BTlIiLCAiKExhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsOylWIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5QU5SLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm5vdGlmeUFOUiIsICIoTGphdmEvbGFuZy9PYmplY3Q7KUoiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby52aXJ0dWFsS2V5RmVlZGJhY2ssIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAidmlydHVhbEtleUZlZWRiYWNrIiwgIihKSUlJSUlJSilWIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8uaW50ZXJjZXB0S2V5QmVmb3JlUXVldWVpbmcsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiaW50ZXJjZXB0S2V5QmVmb3JlUXVldWVpbmciLCAiKElJSUlJSUpaKUkiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5pbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZywgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJpbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZyIsICIoTGFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWw7SUlaSUkpWiIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNoZWNrSW5qZWN0RXZlbnRzUGVybWlzc2lvbiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJjaGVja0luamVjdEV2ZW50c1Blcm1pc3Npb24iLCAiKElJKVoiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5nb1RvU2xlZXAsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiZ29Ub1NsZWVwIiwgIihKKVYiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5wb2tlVXNlckFjdGl2aXR5LCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInBva2VVc2VyQWN0aXZpdHkiLCAiKEpJKVYiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlBcHBTd2l0Y2hDb21pbmcsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibm90aWZ5QXBwU3dpdGNoQ29taW5nIiwgIigpViIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLmZpbHRlclRvdWNoRXZlbnRzLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImZpbHRlclRvdWNoRXZlbnRzIiwgIigpWiIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLmZpbHRlckp1bXB5VG91Y2hFdmVudHMsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiZmlsdGVySnVtcHlUb3VjaEV2ZW50cyIsICIoKVoiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5nZXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiZ2V0VmlydHVhbEtleURlZmluaXRpb25zIiwKKyAgICAgICAgICAgICIoTGphdmEvbGFuZy9TdHJpbmc7KVtMY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWFuYWdlciRWaXJ0dWFsS2V5RGVmaW5pdGlvbjsiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5nZXRFeGNsdWRlZERldmljZU5hbWVzLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImdldEV4Y2x1ZGVkRGV2aWNlTmFtZXMiLCAiKClbTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgICAvLyBWaXJ0dWFsS2V5RGVmaW5pdGlvbgorCisgICAgRklORF9DTEFTUyhnVmlydHVhbEtleURlZmluaXRpb25DbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWFuYWdlciRWaXJ0dWFsS2V5RGVmaW5pdGlvbiIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5zY2FuQ29kZSwgZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInNjYW5Db2RlIiwgIkkiKTsKKworICAgIEdFVF9GSUVMRF9JRChnVmlydHVhbEtleURlZmluaXRpb25DbGFzc0luZm8uY2VudGVyWCwgZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImNlbnRlclgiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5jZW50ZXJZLCBnVmlydHVhbEtleURlZmluaXRpb25DbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiY2VudGVyWSIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLndpZHRoLCBnVmlydHVhbEtleURlZmluaXRpb25DbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAid2lkdGgiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5oZWlnaHQsIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJoZWlnaHQiLCAiSSIpOworCisgICAgLy8gSW5wdXRXaW5kb3cKKworICAgIEZJTkRfQ0xBU1MoZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LCAiY29tL2FuZHJvaWQvc2VydmVyL0lucHV0V2luZG93Iik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLmlucHV0Q2hhbm5lbCwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImlucHV0Q2hhbm5lbCIsICJMYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbDsiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8ubGF5b3V0UGFyYW1zRmxhZ3MsIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJsYXlvdXRQYXJhbXNGbGFncyIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLmxheW91dFBhcmFtc1R5cGUsIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJsYXlvdXRQYXJhbXNUeXBlIiwgIkkiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8uZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MsIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJkaXNwYXRjaGluZ1RpbWVvdXROYW5vcyIsICJKIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLmZyYW1lTGVmdCwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImZyYW1lTGVmdCIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLmZyYW1lVG9wLCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiZnJhbWVUb3AiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhTGVmdCwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInRvdWNoYWJsZUFyZWFMZWZ0IiwgIkkiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8udG91Y2hhYmxlQXJlYVRvcCwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInRvdWNoYWJsZUFyZWFUb3AiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhUmlnaHQsIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJ0b3VjaGFibGVBcmVhUmlnaHQiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhQm90dG9tLCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAidG91Y2hhYmxlQXJlYUJvdHRvbSIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLnZpc2libGUsIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJ2aXNpYmxlIiwgIloiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8uaGFzRm9jdXMsIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJoYXNGb2N1cyIsICJaIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLmhhc1dhbGxwYXBlciwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImhhc1dhbGxwYXBlciIsICJaIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLnBhdXNlZCwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInBhdXNlZCIsICJaIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLm93bmVyUGlkLCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAib3duZXJQaWQiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dFdpbmRvd0NsYXNzSW5mby5vd25lclVpZCwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm93bmVyVWlkIiwgIkkiKTsKKworICAgIC8vIElucHV0QXBwbGljYXRpb24KKworICAgIEZJTkRfQ0xBU1MoZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8uY2xhenosICJjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRBcHBsaWNhdGlvbiIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dEFwcGxpY2F0aW9uQ2xhc3NJbmZvLm5hbWUsIGdJbnB1dEFwcGxpY2F0aW9uQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm5hbWUiLCAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8uZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MsCisgICAgICAgICAgICBnSW5wdXRBcHBsaWNhdGlvbkNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJkaXNwYXRjaGluZ1RpbWVvdXROYW5vcyIsICJKIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8udG9rZW4sIGdJbnB1dEFwcGxpY2F0aW9uQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInRva2VuIiwgIkxqYXZhL2xhbmcvT2JqZWN0OyIpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30gLyogbmFtZXNwYWNlIGFuZHJvaWQgKi8KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2puaS9jb21fYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZS5jcHAgYi9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWUuY3BwCmluZGV4IGM5MmY4ZGYuLmY5ZTM1ODUgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2puaS9jb21fYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZS5jcHAKKysrIGIvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBACiB7CiAgICAgamludCBzdCA9IC0xOwogICAgIGdMb2NrLmxvY2soKTsKLSAgICBpZiAoZ0h1YiAhPSBOVUxMKSBzdCA9IGdIdWItPmdldFN3aXRjaFN0YXRlKHN3KTsKKyAgICBpZiAoZ0h1YiAhPSBOVUxMKSBzdCA9IGdIdWItPmdldFN3aXRjaFN0YXRlKC0xLCAtMSwgc3cpOwogICAgIGdMb2NrLnVubG9jaygpOwogICAgIAogICAgIHJldHVybiBzdDsKQEAgLTE2OCw3ICsxNjgsNyBAQAogewogICAgIGppbnQgc3QgPSAtMTsKICAgICBnTG9jay5sb2NrKCk7Ci0gICAgaWYgKGdIdWIgIT0gTlVMTCkgc3QgPSBnSHViLT5nZXRTd2l0Y2hTdGF0ZShkZXZpY2VJZCwgc3cpOworICAgIGlmIChnSHViICE9IE5VTEwpIHN0ID0gZ0h1Yi0+Z2V0U3dpdGNoU3RhdGUoZGV2aWNlSWQsIC0xLCBzdyk7CiAgICAgZ0xvY2sudW5sb2NrKCk7CiAgICAgCiAgICAgcmV0dXJuIHN0OwpAQCAtMTgwLDcgKzE4MCw3IEBACiB7CiAgICAgamludCBzdCA9IC0xOwogICAgIGdMb2NrLmxvY2soKTsKLSAgICBpZiAoZ0h1YiAhPSBOVUxMKSBzdCA9IGdIdWItPmdldFNjYW5jb2RlU3RhdGUoc3cpOworICAgIGlmIChnSHViICE9IE5VTEwpIHN0ID0gZ0h1Yi0+Z2V0U2NhbkNvZGVTdGF0ZSgwLCAtMSwgc3cpOwogICAgIGdMb2NrLnVubG9jaygpOwogICAgIAogICAgIHJldHVybiBzdDsKQEAgLTE5Miw3ICsxOTIsNyBAQAogewogICAgIGppbnQgc3QgPSAtMTsKICAgICBnTG9jay5sb2NrKCk7Ci0gICAgaWYgKGdIdWIgIT0gTlVMTCkgc3QgPSBnSHViLT5nZXRTY2FuY29kZVN0YXRlKGRldmljZUlkLCBzdyk7CisgICAgaWYgKGdIdWIgIT0gTlVMTCkgc3QgPSBnSHViLT5nZXRTY2FuQ29kZVN0YXRlKGRldmljZUlkLCAtMSwgc3cpOwogICAgIGdMb2NrLnVubG9jaygpOwogICAgIAogICAgIHJldHVybiBzdDsKQEAgLTIwNCw3ICsyMDQsNyBAQAogewogICAgIGppbnQgc3QgPSAtMTsKICAgICBnTG9jay5sb2NrKCk7Ci0gICAgaWYgKGdIdWIgIT0gTlVMTCkgc3QgPSBnSHViLT5nZXRLZXljb2RlU3RhdGUoc3cpOworICAgIGlmIChnSHViICE9IE5VTEwpIHN0ID0gZ0h1Yi0+Z2V0S2V5Q29kZVN0YXRlKDAsIC0xLCBzdyk7CiAgICAgZ0xvY2sudW5sb2NrKCk7CiAgICAgCiAgICAgcmV0dXJuIHN0OwpAQCAtMjE2LDcgKzIxNiw3IEBACiB7CiAgICAgamludCBzdCA9IC0xOwogICAgIGdMb2NrLmxvY2soKTsKLSAgICBpZiAoZ0h1YiAhPSBOVUxMKSBzdCA9IGdIdWItPmdldEtleWNvZGVTdGF0ZShkZXZpY2VJZCwgc3cpOworICAgIGlmIChnSHViICE9IE5VTEwpIHN0ID0gZ0h1Yi0+Z2V0S2V5Q29kZVN0YXRlKGRldmljZUlkLC0xLCBzdyk7CiAgICAgZ0xvY2sudW5sb2NrKCk7CiAgICAgCiAgICAgcmV0dXJuIHN0OwpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAKICAgICBpbnQzMl90KiBjb2RlcyA9IGVudi0+R2V0SW50QXJyYXlFbGVtZW50cyhrZXlDb2RlcywgTlVMTCk7CiAgICAgdWludDhfdCogZmxhZ3MgPSBlbnYtPkdldEJvb2xlYW5BcnJheUVsZW1lbnRzKG91dEZsYWdzLCBOVUxMKTsKLSAgICBzaXplX3QgbnVtQ29kZXMgPSBlbnYtPkdldEFycmF5TGVuZ3RoKGtleUNvZGVzKTsKKyAgICBqc2l6ZSBudW1Db2RlcyA9IGVudi0+R2V0QXJyYXlMZW5ndGgoa2V5Q29kZXMpOwogICAgIGlmIChudW1Db2RlcyA9PSBlbnYtPkdldEFycmF5TGVuZ3RoKG91dEZsYWdzKSkgewogICAgICAgICBnTG9jay5sb2NrKCk7CiAgICAgICAgIGlmIChnSHViICE9IE5VTEwpIHJldCA9IGdIdWItPmhhc0tleXMobnVtQ29kZXMsIGNvZGVzLCBmbGFncyk7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIuY3BwIGIvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41OWQ3Y2RlCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDQ2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiR3BzTG9jYXRpb25Qcm92aWRlciIKKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorI2luY2x1ZGUgImpuaS5oIgorI2luY2x1ZGUgImhhcmR3YXJlL2hhcmR3YXJlLmgiCisjaW5jbHVkZSAiaGFyZHdhcmUvZ3BzLmgiCisjaW5jbHVkZSAiaGFyZHdhcmVfbGVnYWN5L3Bvd2VyLmgiCisjaW5jbHVkZSAidXRpbHMvTG9nLmgiCisjaW5jbHVkZSAidXRpbHMvbWlzYy5oIgorI2luY2x1ZGUgImFuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorCitzdGF0aWMgam9iamVjdCBtQ2FsbGJhY2tzT2JqID0gTlVMTDsKKworc3RhdGljIGptZXRob2RJRCBtZXRob2RfcmVwb3J0TG9jYXRpb247CitzdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnRTdGF0dXM7CitzdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnRTdlN0YXR1czsKK3N0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3JlcG9ydEFHcHNTdGF0dXM7CitzdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnRObWVhOworc3RhdGljIGptZXRob2RJRCBtZXRob2Rfc2V0RW5naW5lQ2FwYWJpbGl0aWVzOworc3RhdGljIGptZXRob2RJRCBtZXRob2RfeHRyYURvd25sb2FkUmVxdWVzdDsKK3N0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3JlcG9ydE5pTm90aWZpY2F0aW9uOworCitzdGF0aWMgY29uc3QgR3BzSW50ZXJmYWNlKiBzR3BzSW50ZXJmYWNlID0gTlVMTDsKK3N0YXRpYyBjb25zdCBHcHNYdHJhSW50ZXJmYWNlKiBzR3BzWHRyYUludGVyZmFjZSA9IE5VTEw7CitzdGF0aWMgY29uc3QgQUdwc0ludGVyZmFjZSogc0FHcHNJbnRlcmZhY2UgPSBOVUxMOworc3RhdGljIGNvbnN0IEdwc05pSW50ZXJmYWNlKiBzR3BzTmlJbnRlcmZhY2UgPSBOVUxMOworc3RhdGljIGNvbnN0IEdwc0RlYnVnSW50ZXJmYWNlKiBzR3BzRGVidWdJbnRlcmZhY2UgPSBOVUxMOworCisvLyB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgR1BTIGNhbGxiYWNrcworc3RhdGljIEdwc1N2U3RhdHVzICBzR3BzU3ZTdGF0dXM7CitzdGF0aWMgY29uc3QgY2hhciogc05tZWFTdHJpbmc7CitzdGF0aWMgaW50IHNObWVhU3RyaW5nTGVuZ3RoOworCisjZGVmaW5lIFdBS0VfTE9DS19OQU1FICAiR1BTIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0YXRpYyB2b2lkIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soSk5JRW52KiBlbnYsIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUpIHsKKyAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgIExPR0UoIkFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGJ5IGNhbGxiYWNrICclcycuIiwgbWV0aG9kTmFtZSk7CisgICAgICAgIExPR0VfRVgoZW52KTsKKyAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgbG9jYXRpb25fY2FsbGJhY2soR3BzTG9jYXRpb24qIGxvY2F0aW9uKQoreworICAgIEpOSUVudiogZW52ID0gQW5kcm9pZFJ1bnRpbWU6OmdldEpOSUVudigpOworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgbWV0aG9kX3JlcG9ydExvY2F0aW9uLCBsb2NhdGlvbi0+ZmxhZ3MsCisgICAgICAgICAgICAoamRvdWJsZSlsb2NhdGlvbi0+bGF0aXR1ZGUsIChqZG91YmxlKWxvY2F0aW9uLT5sb25naXR1ZGUsCisgICAgICAgICAgICAoamRvdWJsZSlsb2NhdGlvbi0+YWx0aXR1ZGUsCisgICAgICAgICAgICAoamZsb2F0KWxvY2F0aW9uLT5zcGVlZCwgKGpmbG9hdClsb2NhdGlvbi0+YmVhcmluZywKKyAgICAgICAgICAgIChqZmxvYXQpbG9jYXRpb24tPmFjY3VyYWN5LCAoamxvbmcpbG9jYXRpb24tPnRpbWVzdGFtcCk7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsIF9fRlVOQ1RJT05fXyk7Cit9CisKK3N0YXRpYyB2b2lkIHN0YXR1c19jYWxsYmFjayhHcHNTdGF0dXMqIHN0YXR1cykKK3sKKyAgICBKTklFbnYqIGVudiA9IEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIG1ldGhvZF9yZXBvcnRTdGF0dXMsIHN0YXR1cy0+c3RhdHVzKTsKKyAgICBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgX19GVU5DVElPTl9fKTsKK30KKworc3RhdGljIHZvaWQgc3Zfc3RhdHVzX2NhbGxiYWNrKEdwc1N2U3RhdHVzKiBzdl9zdGF0dXMpCit7CisgICAgSk5JRW52KiBlbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisgICAgbWVtY3B5KCZzR3BzU3ZTdGF0dXMsIHN2X3N0YXR1cywgc2l6ZW9mKHNHcHNTdlN0YXR1cykpOworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgbWV0aG9kX3JlcG9ydFN2U3RhdHVzKTsKKyAgICBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgX19GVU5DVElPTl9fKTsKK30KKworc3RhdGljIHZvaWQgbm1lYV9jYWxsYmFjayhHcHNVdGNUaW1lIHRpbWVzdGFtcCwgY29uc3QgY2hhciogbm1lYSwgaW50IGxlbmd0aCkKK3sKKyAgICBKTklFbnYqIGVudiA9IEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICAvLyBUaGUgSmF2YSBjb2RlIHdpbGwgY2FsbCBiYWNrIHRvIHJlYWQgdGhlc2UgdmFsdWVzCisgICAgLy8gV2UgZG8gdGhpcyB0byBhdm9pZCBjcmVhdGluZyB1bm5lY2Vzc2FyeSBTdHJpbmcgb2JqZWN0cworICAgIHNObWVhU3RyaW5nID0gbm1lYTsKKyAgICBzTm1lYVN0cmluZ0xlbmd0aCA9IGxlbmd0aDsKKyAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIG1ldGhvZF9yZXBvcnRObWVhLCB0aW1lc3RhbXApOworICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCBfX0ZVTkNUSU9OX18pOworfQorCitzdGF0aWMgdm9pZCBzZXRfY2FwYWJpbGl0aWVzX2NhbGxiYWNrKHVpbnQzMl90IGNhcGFiaWxpdGllcykKK3sKKyAgICBKTklFbnYqIGVudiA9IEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIG1ldGhvZF9zZXRFbmdpbmVDYXBhYmlsaXRpZXMsIGNhcGFiaWxpdGllcyk7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsIF9fRlVOQ1RJT05fXyk7Cit9CisKK3N0YXRpYyB2b2lkIGFjcXVpcmVfd2FrZWxvY2tfY2FsbGJhY2soKQoreworICAgIGFjcXVpcmVfd2FrZV9sb2NrKFBBUlRJQUxfV0FLRV9MT0NLLCBXQUtFX0xPQ0tfTkFNRSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2Vfd2FrZWxvY2tfY2FsbGJhY2soKQoreworICAgIHJlbGVhc2Vfd2FrZV9sb2NrKFdBS0VfTE9DS19OQU1FKTsKK30KKworc3RhdGljIHB0aHJlYWRfdCBjcmVhdGVfdGhyZWFkX2NhbGxiYWNrKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQgKCpzdGFydCkodm9pZCAqKSwgdm9pZCogYXJnKQoreworICAgIHJldHVybiAocHRocmVhZF90KUFuZHJvaWRSdW50aW1lOjpjcmVhdGVKYXZhVGhyZWFkKG5hbWUsIHN0YXJ0LCBhcmcpOworfQorCitHcHNDYWxsYmFja3Mgc0dwc0NhbGxiYWNrcyA9IHsKKyAgICBzaXplb2YoR3BzQ2FsbGJhY2tzKSwKKyAgICBsb2NhdGlvbl9jYWxsYmFjaywKKyAgICBzdGF0dXNfY2FsbGJhY2ssCisgICAgc3Zfc3RhdHVzX2NhbGxiYWNrLAorICAgIG5tZWFfY2FsbGJhY2ssCisgICAgc2V0X2NhcGFiaWxpdGllc19jYWxsYmFjaywKKyAgICBhY3F1aXJlX3dha2Vsb2NrX2NhbGxiYWNrLAorICAgIHJlbGVhc2Vfd2FrZWxvY2tfY2FsbGJhY2ssCisgICAgY3JlYXRlX3RocmVhZF9jYWxsYmFjaywKK307CisKK3N0YXRpYyB2b2lkIHh0cmFfZG93bmxvYWRfcmVxdWVzdF9jYWxsYmFjaygpCit7CisgICAgSk5JRW52KiBlbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisgICAgZW52LT5DYWxsVm9pZE1ldGhvZChtQ2FsbGJhY2tzT2JqLCBtZXRob2RfeHRyYURvd25sb2FkUmVxdWVzdCk7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsIF9fRlVOQ1RJT05fXyk7Cit9CisKK0dwc1h0cmFDYWxsYmFja3Mgc0dwc1h0cmFDYWxsYmFja3MgPSB7CisgICAgeHRyYV9kb3dubG9hZF9yZXF1ZXN0X2NhbGxiYWNrLAorICAgIGNyZWF0ZV90aHJlYWRfY2FsbGJhY2ssCit9OworCitzdGF0aWMgdm9pZCBhZ3BzX3N0YXR1c19jYWxsYmFjayhBR3BzU3RhdHVzKiBhZ3BzX3N0YXR1cykKK3sKKyAgICBKTklFbnYqIGVudiA9IEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIG1ldGhvZF9yZXBvcnRBR3BzU3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgYWdwc19zdGF0dXMtPnR5cGUsIGFncHNfc3RhdHVzLT5zdGF0dXMpOworICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCBfX0ZVTkNUSU9OX18pOworfQorCitBR3BzQ2FsbGJhY2tzIHNBR3BzQ2FsbGJhY2tzID0geworICAgIGFncHNfc3RhdHVzX2NhbGxiYWNrLAorICAgIGNyZWF0ZV90aHJlYWRfY2FsbGJhY2ssCit9OworCitzdGF0aWMgdm9pZCBncHNfbmlfbm90aWZ5X2NhbGxiYWNrKEdwc05pTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pCit7CisgICAgTE9HRCgiZ3BzX25pX25vdGlmeV9jYWxsYmFja1xuIik7CisgICAgSk5JRW52KiBlbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisgICAganN0cmluZyByZXF1ZXN0b3JfaWQgPSBlbnYtPk5ld1N0cmluZ1VURihub3RpZmljYXRpb24tPnJlcXVlc3Rvcl9pZCk7CisgICAganN0cmluZyB0ZXh0ID0gZW52LT5OZXdTdHJpbmdVVEYobm90aWZpY2F0aW9uLT50ZXh0KTsKKyAgICBqc3RyaW5nIGV4dHJhcyA9IGVudi0+TmV3U3RyaW5nVVRGKG5vdGlmaWNhdGlvbi0+ZXh0cmFzKTsKKworICAgIGlmIChyZXF1ZXN0b3JfaWQgJiYgdGV4dCAmJiBleHRyYXMpIHsKKyAgICAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChtQ2FsbGJhY2tzT2JqLCBtZXRob2RfcmVwb3J0TmlOb3RpZmljYXRpb24sCisgICAgICAgICAgICBub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbl9pZCwgbm90aWZpY2F0aW9uLT5uaV90eXBlLAorICAgICAgICAgICAgbm90aWZpY2F0aW9uLT5ub3RpZnlfZmxhZ3MsIG5vdGlmaWNhdGlvbi0+dGltZW91dCwKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGVmYXVsdF9yZXNwb25zZSwgcmVxdWVzdG9yX2lkLCB0ZXh0LAorICAgICAgICAgICAgbm90aWZpY2F0aW9uLT5yZXF1ZXN0b3JfaWRfZW5jb2RpbmcsCisgICAgICAgICAgICBub3RpZmljYXRpb24tPnRleHRfZW5jb2RpbmcsIGV4dHJhcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HRSgib3V0IG9mIG1lbW9yeSBpbiBncHNfbmlfbm90aWZ5X2NhbGxiYWNrXG4iKTsKKyAgICB9CisKKyAgICBpZiAocmVxdWVzdG9yX2lkKQorICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHJlcXVlc3Rvcl9pZCk7CisgICAgaWYgKHRleHQpCisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYodGV4dCk7CisgICAgaWYgKGV4dHJhcykKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihleHRyYXMpOworICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCBfX0ZVTkNUSU9OX18pOworfQorCitHcHNOaUNhbGxiYWNrcyBzR3BzTmlDYWxsYmFja3MgPSB7CisgICAgZ3BzX25pX25vdGlmeV9jYWxsYmFjaywKKyAgICBjcmVhdGVfdGhyZWFkX2NhbGxiYWNrLAorfTsKKworc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2NsYXNzX2luaXRfbmF0aXZlKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenopIHsKKyAgICBtZXRob2RfcmVwb3J0TG9jYXRpb24gPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAicmVwb3J0TG9jYXRpb24iLCAiKElERERGRkZKKVYiKTsKKyAgICBtZXRob2RfcmVwb3J0U3RhdHVzID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydFN0YXR1cyIsICIoSSlWIik7CisgICAgbWV0aG9kX3JlcG9ydFN2U3RhdHVzID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydFN2U3RhdHVzIiwgIigpViIpOworICAgIG1ldGhvZF9yZXBvcnRBR3BzU3RhdHVzID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydEFHcHNTdGF0dXMiLCAiKElJKVYiKTsKKyAgICBtZXRob2RfcmVwb3J0Tm1lYSA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosICJyZXBvcnRObWVhIiwgIihKKVYiKTsKKyAgICBtZXRob2Rfc2V0RW5naW5lQ2FwYWJpbGl0aWVzID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInNldEVuZ2luZUNhcGFiaWxpdGllcyIsICIoSSlWIik7CisgICAgbWV0aG9kX3h0cmFEb3dubG9hZFJlcXVlc3QgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAieHRyYURvd25sb2FkUmVxdWVzdCIsICIoKVYiKTsKKyAgICBtZXRob2RfcmVwb3J0TmlOb3RpZmljYXRpb24gPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAicmVwb3J0TmlOb3RpZmljYXRpb24iLCAiKElJSUlJTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7SUlMamF2YS9sYW5nL1N0cmluZzspViIpOworfQorCitzdGF0aWMgY29uc3QgR3BzSW50ZXJmYWNlKiBnZXRfZ3BzX2ludGVyZmFjZSgpIHsKKyAgICBpbnQgZXJyOworICAgIGh3X21vZHVsZV90KiBtb2R1bGU7CisgICAgY29uc3QgR3BzSW50ZXJmYWNlKiBpbnRlcmZhY2UgPSBOVUxMOworCisgICAgZXJyID0gaHdfZ2V0X21vZHVsZShHUFNfSEFSRFdBUkVfTU9EVUxFX0lELCAoaHdfbW9kdWxlX3QgY29uc3QqKikmbW9kdWxlKTsKKyAgICBpZiAoZXJyID09IDApIHsKKyAgICAgICAgaHdfZGV2aWNlX3QqIGRldmljZTsKKyAgICAgICAgZXJyID0gbW9kdWxlLT5tZXRob2RzLT5vcGVuKG1vZHVsZSwgR1BTX0hBUkRXQVJFX01PRFVMRV9JRCwgJmRldmljZSk7CisgICAgICAgIGlmIChlcnIgPT0gMCkgeworICAgICAgICAgICAgZ3BzX2RldmljZV90KiBncHNfZGV2aWNlID0gKGdwc19kZXZpY2VfdCAqKWRldmljZTsKKyAgICAgICAgICAgIGludGVyZmFjZSA9IGdwc19kZXZpY2UtPmdldF9ncHNfaW50ZXJmYWNlKGdwc19kZXZpY2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGludGVyZmFjZTsKK30KKworc3RhdGljIGpib29sZWFuIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pc19zdXBwb3J0ZWQoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eikgeworICAgIGlmICghc0dwc0ludGVyZmFjZSkKKyAgICAgICAgc0dwc0ludGVyZmFjZSA9IGdldF9ncHNfaW50ZXJmYWNlKCk7CisgICAgcmV0dXJuIChzR3BzSW50ZXJmYWNlICE9IE5VTEwpOworfQorCitzdGF0aWMgamJvb2xlYW4gYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luaXQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQoreworICAgIC8vIHRoaXMgbXVzdCBiZSBzZXQgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUgSEFMIGxpYnJhcnkKKyAgICBpZiAoIW1DYWxsYmFja3NPYmopCisgICAgICAgIG1DYWxsYmFja3NPYmogPSBlbnYtPk5ld0dsb2JhbFJlZihvYmopOworCisgICAgaWYgKCFzR3BzSW50ZXJmYWNlKQorICAgICAgICBzR3BzSW50ZXJmYWNlID0gZ2V0X2dwc19pbnRlcmZhY2UoKTsKKyAgICBpZiAoIXNHcHNJbnRlcmZhY2UgfHwgc0dwc0ludGVyZmFjZS0+aW5pdCgmc0dwc0NhbGxiYWNrcykgIT0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFzQUdwc0ludGVyZmFjZSkKKyAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7CisgICAgaWYgKHNBR3BzSW50ZXJmYWNlKQorICAgICAgICBzQUdwc0ludGVyZmFjZS0+aW5pdCgmc0FHcHNDYWxsYmFja3MpOworCisgICAgaWYgKCFzR3BzTmlJbnRlcmZhY2UpCisgICAgICAgc0dwc05pSW50ZXJmYWNlID0gKGNvbnN0IEdwc05pSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEdQU19OSV9JTlRFUkZBQ0UpOworICAgIGlmIChzR3BzTmlJbnRlcmZhY2UpCisgICAgICAgc0dwc05pSW50ZXJmYWNlLT5pbml0KCZzR3BzTmlDYWxsYmFja3MpOworCisgICAgaWYgKCFzR3BzRGVidWdJbnRlcmZhY2UpCisgICAgICAgc0dwc0RlYnVnSW50ZXJmYWNlID0gKGNvbnN0IEdwc0RlYnVnSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEdQU19ERUJVR19JTlRFUkZBQ0UpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9jbGVhbnVwKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAgICBzR3BzSW50ZXJmYWNlLT5jbGVhbnVwKCk7Cit9CisKK3N0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc2V0X3Bvc2l0aW9uX21vZGUoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAorICAgICAgICBqaW50IG1vZGUsIGppbnQgcmVjdXJyZW5jZSwgamludCBtaW5faW50ZXJ2YWwsIGppbnQgcHJlZmVycmVkX2FjY3VyYWN5LCBqaW50IHByZWZlcnJlZF90aW1lKQoreworICAgIHJldHVybiAoc0dwc0ludGVyZmFjZS0+c2V0X3Bvc2l0aW9uX21vZGUobW9kZSwgcmVjdXJyZW5jZSwgbWluX2ludGVydmFsLCBwcmVmZXJyZWRfYWNjdXJhY3ksCisgICAgICAgICAgICBwcmVmZXJyZWRfdGltZSkgPT0gMCk7Cit9CisKK3N0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3RhcnQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQoreworICAgIHJldHVybiAoc0dwc0ludGVyZmFjZS0+c3RhcnQoKSA9PSAwKTsKK30KKworc3RhdGljIGpib29sZWFuIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdG9wKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gKHNHcHNJbnRlcmZhY2UtPnN0b3AoKSA9PSAwKTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2RlbGV0ZV9haWRpbmdfZGF0YShKTklFbnYqIGVudiwgam9iamVjdCBvYmosIGppbnQgZmxhZ3MpCit7CisgICAgc0dwc0ludGVyZmFjZS0+ZGVsZXRlX2FpZGluZ19kYXRhKGZsYWdzKTsKK30KKworc3RhdGljIGppbnQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3JlYWRfc3Zfc3RhdHVzKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKKyAgICAgICAgamludEFycmF5IHBybkFycmF5LCBqZmxvYXRBcnJheSBzbnJBcnJheSwgamZsb2F0QXJyYXkgZWxldkFycmF5LCBqZmxvYXRBcnJheSBhenVtQXJyYXksCisgICAgICAgIGppbnRBcnJheSBtYXNrQXJyYXkpCit7CisgICAgLy8gdGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYSBjYWxsIHRvIHJlcG9ydFN2U3RhdHVzCisKKyAgICBqaW50KiBwcm5zID0gZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKHBybkFycmF5LCAwKTsKKyAgICBqZmxvYXQqIHNucnMgPSBlbnYtPkdldEZsb2F0QXJyYXlFbGVtZW50cyhzbnJBcnJheSwgMCk7CisgICAgamZsb2F0KiBlbGV2ID0gZW52LT5HZXRGbG9hdEFycmF5RWxlbWVudHMoZWxldkFycmF5LCAwKTsKKyAgICBqZmxvYXQqIGF6aW0gPSBlbnYtPkdldEZsb2F0QXJyYXlFbGVtZW50cyhhenVtQXJyYXksIDApOworICAgIGppbnQqIG1hc2sgPSBlbnYtPkdldEludEFycmF5RWxlbWVudHMobWFza0FycmF5LCAwKTsKKworICAgIGludCBudW1fc3ZzID0gc0dwc1N2U3RhdHVzLm51bV9zdnM7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3ZzOyBpKyspIHsKKyAgICAgICAgcHJuc1tpXSA9IHNHcHNTdlN0YXR1cy5zdl9saXN0W2ldLnBybjsKKyAgICAgICAgc25yc1tpXSA9IHNHcHNTdlN0YXR1cy5zdl9saXN0W2ldLnNucjsKKyAgICAgICAgZWxldltpXSA9IHNHcHNTdlN0YXR1cy5zdl9saXN0W2ldLmVsZXZhdGlvbjsKKyAgICAgICAgYXppbVtpXSA9IHNHcHNTdlN0YXR1cy5zdl9saXN0W2ldLmF6aW11dGg7CisgICAgfQorICAgIG1hc2tbMF0gPSBzR3BzU3ZTdGF0dXMuZXBoZW1lcmlzX21hc2s7CisgICAgbWFza1sxXSA9IHNHcHNTdlN0YXR1cy5hbG1hbmFjX21hc2s7CisgICAgbWFza1syXSA9IHNHcHNTdlN0YXR1cy51c2VkX2luX2ZpeF9tYXNrOworCisgICAgZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhwcm5BcnJheSwgcHJucywgMCk7CisgICAgZW52LT5SZWxlYXNlRmxvYXRBcnJheUVsZW1lbnRzKHNuckFycmF5LCBzbnJzLCAwKTsKKyAgICBlbnYtPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoZWxldkFycmF5LCBlbGV2LCAwKTsKKyAgICBlbnYtPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoYXp1bUFycmF5LCBhemltLCAwKTsKKyAgICBlbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKG1hc2tBcnJheSwgbWFzaywgMCk7CisgICAgcmV0dXJuIG51bV9zdnM7Cit9CisKK3N0YXRpYyBqaW50IGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9yZWFkX25tZWEoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYnl0ZUFycmF5IG5tZWFBcnJheSwgamludCBidWZmZXJfc2l6ZSkKK3sKKyAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhIGNhbGwgdG8gcmVwb3J0Tm1lYQorICAgIGpieXRlKiBubWVhID0gKGpieXRlICopZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKG5tZWFBcnJheSwgMCk7CisgICAgaW50IGxlbmd0aCA9IHNObWVhU3RyaW5nTGVuZ3RoOworICAgIGlmIChsZW5ndGggPiBidWZmZXJfc2l6ZSkKKyAgICAgICAgbGVuZ3RoID0gYnVmZmVyX3NpemU7CisgICAgbWVtY3B5KG5tZWEsIHNObWVhU3RyaW5nLCBsZW5ndGgpOworICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwobm1lYUFycmF5LCBubWVhLCBKTklfQUJPUlQpOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfdGltZShKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICAgIGpsb25nIHRpbWUsIGpsb25nIHRpbWVSZWZlcmVuY2UsIGppbnQgdW5jZXJ0YWludHkpCit7CisgICAgc0dwc0ludGVyZmFjZS0+aW5qZWN0X3RpbWUodGltZSwgdGltZVJlZmVyZW5jZSwgdW5jZXJ0YWludHkpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5qZWN0X2xvY2F0aW9uKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKKyAgICAgICAgamRvdWJsZSBsYXRpdHVkZSwgamRvdWJsZSBsb25naXR1ZGUsIGpmbG9hdCBhY2N1cmFjeSkKK3sKKyAgICBzR3BzSW50ZXJmYWNlLT5pbmplY3RfbG9jYXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOworfQorCitzdGF0aWMgamJvb2xlYW4gYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3N1cHBvcnRzX3h0cmEoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQoreworICAgIGlmICghc0dwc1h0cmFJbnRlcmZhY2UpIHsKKyAgICAgICAgc0dwc1h0cmFJbnRlcmZhY2UgPSAoY29uc3QgR3BzWHRyYUludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihHUFNfWFRSQV9JTlRFUkZBQ0UpOworICAgICAgICBpZiAoc0dwc1h0cmFJbnRlcmZhY2UpIHsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBzR3BzWHRyYUludGVyZmFjZS0+aW5pdCgmc0dwc1h0cmFDYWxsYmFja3MpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIHNHcHNYdHJhSW50ZXJmYWNlID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAoc0dwc1h0cmFJbnRlcmZhY2UgIT0gTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfeHRyYV9kYXRhKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKKyAgICAgICAgamJ5dGVBcnJheSBkYXRhLCBqaW50IGxlbmd0aCkKK3sKKyAgICBqYnl0ZSogYnl0ZXMgPSAoamJ5dGUgKillbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwoZGF0YSwgMCk7CisgICAgc0dwc1h0cmFJbnRlcmZhY2UtPmluamVjdF94dHJhX2RhdGEoKGNoYXIgKilieXRlcywgbGVuZ3RoKTsKKyAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKGRhdGEsIGJ5dGVzLCBKTklfQUJPUlQpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfYWdwc19kYXRhX2Nvbm5fb3BlbihKTklFbnYqIGVudiwgam9iamVjdCBvYmosIGpzdHJpbmcgYXBuKQoreworICAgIGlmICghc0FHcHNJbnRlcmZhY2UpIHsKKyAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7CisgICAgfQorICAgIGlmIChzQUdwc0ludGVyZmFjZSkgeworICAgICAgICBpZiAoYXBuID09IE5VTEwpIHsKKyAgICAgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iLCBOVUxMKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBjaGFyICphcG5TdHIgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGFwbiwgTlVMTCk7CisgICAgICAgIHNBR3BzSW50ZXJmYWNlLT5kYXRhX2Nvbm5fb3BlbihhcG5TdHIpOworICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhhcG4sIGFwblN0cik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfYWdwc19kYXRhX2Nvbm5fY2xvc2VkKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAgICBpZiAoIXNBR3BzSW50ZXJmYWNlKSB7CisgICAgICAgIHNBR3BzSW50ZXJmYWNlID0gKGNvbnN0IEFHcHNJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oQUdQU19JTlRFUkZBQ0UpOworICAgIH0KKyAgICBpZiAoc0FHcHNJbnRlcmZhY2UpIHsKKyAgICAgICAgc0FHcHNJbnRlcmZhY2UtPmRhdGFfY29ubl9jbG9zZWQoKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQoreworICAgIGlmICghc0FHcHNJbnRlcmZhY2UpIHsKKyAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7CisgICAgfQorICAgIGlmIChzQUdwc0ludGVyZmFjZSkgeworICAgICAgICBzQUdwc0ludGVyZmFjZS0+ZGF0YV9jb25uX2ZhaWxlZCgpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3NldF9hZ3BzX3NlcnZlcihKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICAgIGppbnQgdHlwZSwganN0cmluZyBob3N0bmFtZSwgamludCBwb3J0KQoreworICAgIGlmICghc0FHcHNJbnRlcmZhY2UpIHsKKyAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7CisgICAgfQorICAgIGlmIChzQUdwc0ludGVyZmFjZSkgeworICAgICAgICBjb25zdCBjaGFyICpjX2hvc3RuYW1lID0gZW52LT5HZXRTdHJpbmdVVEZDaGFycyhob3N0bmFtZSwgTlVMTCk7CisgICAgICAgIHNBR3BzSW50ZXJmYWNlLT5zZXRfc2VydmVyKHR5cGUsIGNfaG9zdG5hbWUsIHBvcnQpOworICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhob3N0bmFtZSwgY19ob3N0bmFtZSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc2VuZF9uaV9yZXNwb25zZShKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICBqaW50IG5vdGlmSWQsIGppbnQgcmVzcG9uc2UpCit7CisgICAgaWYgKCFzR3BzTmlJbnRlcmZhY2UpIHsKKyAgICAgICAgc0dwc05pSW50ZXJmYWNlID0gKGNvbnN0IEdwc05pSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEdQU19OSV9JTlRFUkZBQ0UpOworICAgIH0KKyAgICBpZiAoc0dwc05pSW50ZXJmYWNlKSB7CisgICAgICAgIHNHcHNOaUludGVyZmFjZS0+cmVzcG9uZChub3RpZklkLCByZXNwb25zZSk7CisgICAgfQorfQorCitzdGF0aWMganN0cmluZyBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZ2V0X2ludGVybmFsX3N0YXRlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAgICBqc3RyaW5nIHJlc3VsdCA9IE5VTEw7CisgICAgaWYgKHNHcHNEZWJ1Z0ludGVyZmFjZSkgeworICAgICAgICBjb25zdCBzaXplX3QgbWF4TGVuZ3RoID0gMjA0NzsKKyAgICAgICAgY2hhciBidWZmZXJbbWF4TGVuZ3RoKzFdOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gc0dwc0RlYnVnSW50ZXJmYWNlLT5nZXRfaW50ZXJuYWxfc3RhdGUoYnVmZmVyLCBtYXhMZW5ndGgpOworICAgICAgICBpZiAobGVuZ3RoID4gbWF4TGVuZ3RoKSBsZW5ndGggPSBtYXhMZW5ndGg7CisgICAgICAgIGJ1ZmZlcltsZW5ndGhdID0gMDsKKyAgICAgICAgcmVzdWx0ID0gZW52LT5OZXdTdHJpbmdVVEYoYnVmZmVyKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBzTWV0aG9kc1tdID0geworICAgICAvKiBuYW1lLCBzaWduYXR1cmUsIGZ1bmNQdHIgKi8KKyAgICB7ImNsYXNzX2luaXRfbmF0aXZlIiwgIigpViIsICh2b2lkICopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2NsYXNzX2luaXRfbmF0aXZlfSwKKyAgICB7Im5hdGl2ZV9pc19zdXBwb3J0ZWQiLCAiKClaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pc19zdXBwb3J0ZWR9LAorICAgIHsibmF0aXZlX2luaXQiLCAiKClaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbml0fSwKKyAgICB7Im5hdGl2ZV9jbGVhbnVwIiwgIigpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfY2xlYW51cH0sCisgICAgeyJuYXRpdmVfc2V0X3Bvc2l0aW9uX21vZGUiLCAiKElJSUlJKVoiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3NldF9wb3NpdGlvbl9tb2RlfSwKKyAgICB7Im5hdGl2ZV9zdGFydCIsICIoKVoiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3N0YXJ0fSwKKyAgICB7Im5hdGl2ZV9zdG9wIiwgIigpWiIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3RvcH0sCisgICAgeyJuYXRpdmVfZGVsZXRlX2FpZGluZ19kYXRhIiwgIihJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2RlbGV0ZV9haWRpbmdfZGF0YX0sCisgICAgeyJuYXRpdmVfcmVhZF9zdl9zdGF0dXMiLCAiKFtJW0ZbRltGW0kpSSIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfcmVhZF9zdl9zdGF0dXN9LAorICAgIHsibmF0aXZlX3JlYWRfbm1lYSIsICIoW0JJKUkiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3JlYWRfbm1lYX0sCisgICAgeyJuYXRpdmVfaW5qZWN0X3RpbWUiLCAiKEpKSSlWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfdGltZX0sCisgICAgeyJuYXRpdmVfaW5qZWN0X2xvY2F0aW9uIiwgIihEREYpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5qZWN0X2xvY2F0aW9ufSwKKyAgICB7Im5hdGl2ZV9zdXBwb3J0c194dHJhIiwgIigpWiIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3VwcG9ydHNfeHRyYX0sCisgICAgeyJuYXRpdmVfaW5qZWN0X3h0cmFfZGF0YSIsICIoW0JJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luamVjdF94dHJhX2RhdGF9LAorICAgIHsibmF0aXZlX2FncHNfZGF0YV9jb25uX29wZW4iLCAiKExqYXZhL2xhbmcvU3RyaW5nOylWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9vcGVufSwKKyAgICB7Im5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9jbG9zZWQiLCAiKClWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9jbG9zZWR9LAorICAgIHsibmF0aXZlX2FncHNfZGF0YV9jb25uX2ZhaWxlZCIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2FncHNfZGF0YV9jb25uX2ZhaWxlZH0sCisgICAgeyJuYXRpdmVfc2V0X2FncHNfc2VydmVyIiwgIihJTGphdmEvbGFuZy9TdHJpbmc7SSlWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zZXRfYWdwc19zZXJ2ZXJ9LAorICAgIHsibmF0aXZlX3NlbmRfbmlfcmVzcG9uc2UiLCAiKElJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3NlbmRfbmlfcmVzcG9uc2V9LAorICAgIHsibmF0aXZlX2dldF9pbnRlcm5hbF9zdGF0ZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZ2V0X2ludGVybmFsX3N0YXRlfSwKK307CisKK2ludCByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyKEpOSUVudiogZW52KQoreworICAgIHJldHVybiBqbmlSZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LCAiY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0dwc0xvY2F0aW9uUHJvdmlkZXIiLCBzTWV0aG9kcywgTkVMRU0oc01ldGhvZHMpKTsKK30KKworfSAvKiBuYW1lc3BhY2UgYW5kcm9pZCAqLwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvam5pL29ubG9hZC5jcHAgYi9zZXJ2aWNlcy9qbmkvb25sb2FkLmNwcAppbmRleCBjMTZmZGI4Li5hMWE2ODM4IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qbmkvb25sb2FkLmNwcAorKysgYi9zZXJ2aWNlcy9qbmkvb25sb2FkLmNwcApAQCAtNywxMCArNywxMiBAQAogaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0FsYXJtTWFuYWdlclNlcnZpY2UoSk5JRW52KiBlbnYpOwogaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0JhdHRlcnlTZXJ2aWNlKEpOSUVudiogZW52KTsKIGludCByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlKEpOSUVudiogZW52KTsKK2ludCByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXIoSk5JRW52KiBlbnYpOwogaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0xpZ2h0c1NlcnZpY2UoSk5JRW52KiBlbnYpOwogaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX1NlbnNvclNlcnZpY2UoSk5JRW52KiBlbnYpOwogaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX1ZpYnJhdG9yU2VydmljZShKTklFbnYqIGVudik7CiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfU3lzdGVtU2VydmVyKEpOSUVudiogZW52KTsKK2ludCByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyKEpOSUVudiogZW52KTsKIH07CiAKIHVzaW5nIG5hbWVzcGFjZSBhbmRyb2lkOwpAQCAtMjcsMTIgKzI5LDE0IEBACiAgICAgTE9HX0FTU0VSVChlbnYsICJDb3VsZCBub3QgcmV0cmlldmUgdGhlIGVudiEiKTsKIAogICAgIHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWUoZW52KTsKKyAgICByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXIoZW52KTsKICAgICByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9MaWdodHNTZXJ2aWNlKGVudik7CiAgICAgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfQWxhcm1NYW5hZ2VyU2VydmljZShlbnYpOwogICAgIHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0JhdHRlcnlTZXJ2aWNlKGVudik7CiAgICAgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfU2Vuc29yU2VydmljZShlbnYpOwogICAgIHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX1ZpYnJhdG9yU2VydmljZShlbnYpOwogICAgIHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX1N5c3RlbVNlcnZlcihlbnYpOworICAgIHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIoZW52KTsKIAogICAgIHJldHVybiBKTklfVkVSU0lPTl8xXzQ7CiB9CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9OZWlnaGJvcmluZ0NlbGxJbmZvLmphdmEgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9OZWlnaGJvcmluZ0NlbGxJbmZvLmphdmEKaW5kZXggYWQ3ZGZjOS4uMmY3NjY2ZCAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvTmVpZ2hib3JpbmdDZWxsSW5mby5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L05laWdoYm9yaW5nQ2VsbEluZm8uamF2YQpAQCAtMTMzLDggKzEzMywxMSBAQAogICAgICAgICAgICAgY2FzZSBORVRXT1JLX1RZUEVfR1BSUzoKICAgICAgICAgICAgIGNhc2UgTkVUV09SS19UWVBFX0VER0U6CiAgICAgICAgICAgICAgICAgbU5ldHdvcmtUeXBlID0gcmFkaW9UeXBlOwotICAgICAgICAgICAgICAgIG1MYWMgPSBJbnRlZ2VyLnZhbHVlT2YobG9jYXRpb24uc3Vic3RyaW5nKDAsIDQpLCAxNik7Ci0gICAgICAgICAgICAgICAgbUNpZCA9IEludGVnZXIudmFsdWVPZihsb2NhdGlvbi5zdWJzdHJpbmcoNCksIDE2KTsKKyAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiAweEZGRkZGRkZGIGZvciBVTktOT1dOX0NJRAorICAgICAgICAgICAgICAgIGlmICghbG9jYXRpb24uZXF1YWxzSWdub3JlQ2FzZSgiRkZGRkZGRkYiKSkgeworICAgICAgICAgICAgICAgICAgICBtQ2lkID0gSW50ZWdlci52YWx1ZU9mKGxvY2F0aW9uLnN1YnN0cmluZyg0KSwgMTYpOworICAgICAgICAgICAgICAgICAgICBtTGFjID0gSW50ZWdlci52YWx1ZU9mKGxvY2F0aW9uLnN1YnN0cmluZygwLCA0KSwgMTYpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTkVUV09SS19UWVBFX1VNVFM6CiAgICAgICAgICAgICBjYXNlIE5FVFdPUktfVFlQRV9IU0RQQToKQEAgLTI5Myw0ICsyOTYsNCBAQAogICAgICAgICAgICAgcmV0dXJuIG5ldyBOZWlnaGJvcmluZ0NlbGxJbmZvW3NpemVdOwogICAgICAgICB9CiAgICAgfTsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9QaG9uZU51bWJlclV0aWxzLmphdmEgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9QaG9uZU51bWJlclV0aWxzLmphdmEKaW5kZXggMzJlNzE3Ni4uYTYwZDJiZSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvUGhvbmVOdW1iZXJVdGlscy5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1Bob25lTnVtYmVyVXRpbHMuamF2YQpAQCAtNzMyLDcgKzczMiw4IEBACiAgICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKGJ5dGVzW29mZnNldF0gJiAweGZmKSA9PSBUT0FfSW50ZXJuYXRpb25hbCkgeworICAgICAgICAvL09ubHkgVE9OIGZpZWxkIHNob3VsZCBiZSB0YWtlbiBpbiBjb25zaWRlcmF0aW9uCisgICAgICAgIGlmICgoYnl0ZXNbb2Zmc2V0XSAmIDB4ZjApID09IChUT0FfSW50ZXJuYXRpb25hbCAmIDB4ZjApKSB7CiAgICAgICAgICAgICBwcmVwZW5kUGx1cyA9IHRydWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvU2VydmljZVN0YXRlLmphdmEgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9TZXJ2aWNlU3RhdGUuamF2YQppbmRleCA2YzY2NTU5Li4zNWEyYzE5IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9TZXJ2aWNlU3RhdGUuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9TZXJ2aWNlU3RhdGUuamF2YQpAQCAtNTcsNyArNTcsNyBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX0VNRVJHRU5DWV9PTkxZID0gMjsKIAogICAgIC8qKgotICAgICAqIFJhZGlvIG9mIHRlbGVwaG9ueSBpcyBleHBsaWN0bHkgcG93ZXJlZCBvZmYuCisgICAgICogUmFkaW8gb2YgdGVsZXBob255IGlzIGV4cGxpY2l0bHkgcG93ZXJlZCBvZmYuCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfUE9XRVJfT0ZGID0gMzsKIApAQCAtODksNiArODksOCBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBRElPX1RFQ0hOT0xPR1lfSFNVUEEgPSAxMDsKICAgICAvKiogQGhpZGUgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQURJT19URUNITk9MT0dZX0hTUEEgPSAxMTsKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQURJT19URUNITk9MT0dZX0VWRE9fQiA9IDEyOwogCiAgICAgLyoqCiAgICAgICogQXZhaWxhYmxlIHJlZ2lzdHJhdGlvbiBzdGF0ZXMgZm9yIEdTTSwgVU1UUyBhbmQgQ0RNQS4KQEAgLTIxOCw3ICsyMjAsOCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFBhcmNlbGFibGUuQ3JlYXRvcjxTZXJ2aWNlU3RhdGU+IENSRUFUT1IgPSBuZXcgUGFyY2VsYWJsZS5DcmVhdG9yKCkgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUGFyY2VsYWJsZS5DcmVhdG9yPFNlcnZpY2VTdGF0ZT4gQ1JFQVRPUiA9CisgICAgICAgICAgICBuZXcgUGFyY2VsYWJsZS5DcmVhdG9yPFNlcnZpY2VTdGF0ZT4oKSB7CiAgICAgICAgIHB1YmxpYyBTZXJ2aWNlU3RhdGUgY3JlYXRlRnJvbVBhcmNlbChQYXJjZWwgaW4pIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgU2VydmljZVN0YXRlKGluKTsKICAgICAgICAgfQpAQCAtMjI5LDcgKzIzMiw3IEBACiAgICAgfTsKIAogICAgIC8qKgotICAgICAqIEdldCBjdXJyZW50IHNlcnZjaWUgc3RhdGUgb2YgcGhvbmUKKyAgICAgKiBHZXQgY3VycmVudCBzZXJ2aWNlIHN0YXRlIG9mIHBob25lCiAgICAgICoKICAgICAgKiBAc2VlICNTVEFURV9JTl9TRVJWSUNFCiAgICAgICogQHNlZSAjU1RBVEVfT1VUX09GX1NFUlZJQ0UKQEAgLTI4OCwxMCArMjkxLDEwIEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogR2V0IGN1cnJlbnQgcmVnaXN0ZXJlZCBvcGVyYXRvciBuYW1lIGluIGxvbmcgYWxwaGFudW1lcmljIGZvcm1hdAorICAgICAqIEdldCBjdXJyZW50IHJlZ2lzdGVyZWQgb3BlcmF0b3IgbmFtZSBpbiBsb25nIGFscGhhbnVtZXJpYyBmb3JtYXQuCiAgICAgICoKLSAgICAgKiBJbiBHU00vVU1UUywgbG9uZyBmb3JtYXQgY2FuIGJlIHVwdG8gMTYgY2hhcmFjdGVycyBsb25nCi0gICAgICogSW4gQ0RNQSwgcmV0dXJucyB0aGUgRVJJIHRleHQsIGlmIHNldCwgb3RoZXJ3aXNlIHRoZSBPTlMKKyAgICAgKiBJbiBHU00vVU1UUywgbG9uZyBmb3JtYXQgY2FuIGJlIHVwIHRvIDE2IGNoYXJhY3RlcnMgbG9uZy4KKyAgICAgKiBJbiBDRE1BLCByZXR1cm5zIHRoZSBFUkkgdGV4dCwgaWYgc2V0LiBPdGhlcndpc2UsIHJldHVybnMgdGhlIE9OUy4KICAgICAgKgogICAgICAqIEByZXR1cm4gbG9uZyBuYW1lIG9mIG9wZXJhdG9yLCBudWxsIGlmIHVucmVnaXN0ZXJlZCBvciB1bmtub3duCiAgICAgICovCkBAIC0zMDAsOSArMzAzLDkgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBHZXQgY3VycmVudCByZWdpc3RlcmVkIG9wZXJhdG9yIG5hbWUgaW4gc2hvcnQgbHBoYW51bWVyaWMgZm9ybWF0CisgICAgICogR2V0IGN1cnJlbnQgcmVnaXN0ZXJlZCBvcGVyYXRvciBuYW1lIGluIHNob3J0IGFscGhhbnVtZXJpYyBmb3JtYXQuCiAgICAgICoKLSAgICAgKiBJbiBHU00vVU1TVCwgc2hvcnQgZm9ybWF0IGNhbiBiZSB1cHRvIDggY2hhcmFjdGVycyBsb25nCisgICAgICogSW4gR1NNL1VNVFMsIHNob3J0IGZvcm1hdCBjYW4gYmUgdXAgdG8gOCBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgICoKICAgICAgKiBAcmV0dXJuIHNob3J0IG5hbWUgb2Ygb3BlcmF0b3IsIG51bGwgaWYgdW5yZWdpc3RlcmVkIG9yIHVua25vd24KICAgICAgKi8KQEAgLTMxMSwyMSArMzE0LDIzIEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogR2V0IGN1cnJlbnQgcmVnaXN0ZXJlZCBvcGVyYXRvciBudW1lcmljIGlkCisgICAgICogR2V0IGN1cnJlbnQgcmVnaXN0ZXJlZCBvcGVyYXRvciBudW1lcmljIGlkLgogICAgICAqCiAgICAgICogSW4gR1NNL1VNVFMsIG51bWVyaWMgZm9ybWF0IGlzIDMgZGlnaXQgY291bnRyeSBjb2RlIHBsdXMgMiBvciAzIGRpZ2l0Ci0gICAgICogbmV0d29yayBjb2RlCi0gICAgICoKLSAgICAgKiBUaGUgY291bnRyeSBjb2RlIGNhbiBiZSBkZWNvZGVkIHVzaW5nIE1jY1RhYmxlLmNvdW50cnlDb2RlRm9yTWNjKCkKKyAgICAgKiBuZXR3b3JrIGNvZGUuCiAgICAgICoKICAgICAgKiBAcmV0dXJuIG51bWVyaWMgZm9ybWF0IG9mIG9wZXJhdG9yLCBudWxsIGlmIHVucmVnaXN0ZXJlZCBvciB1bmtub3duCiAgICAgICovCisgICAgLyoKKyAgICAgKiBUaGUgY291bnRyeSBjb2RlIGNhbiBiZSBkZWNvZGVkIHVzaW5nCisgICAgICoge0BsaW5rIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5NY2NUYWJsZSNjb3VudHJ5Q29kZUZvck1jYyhpbnQpfS4KKyAgICAgKi8KICAgICBwdWJsaWMgU3RyaW5nIGdldE9wZXJhdG9yTnVtZXJpYygpIHsKICAgICAgICAgcmV0dXJuIG1PcGVyYXRvck51bWVyaWM7CiAgICAgfQogCiAgICAgLyoqCi0gICAgICogR2V0IGN1cnJlbnQgbmV0d29yayBzZWxlY3Rpb24gbW9kZQorICAgICAqIEdldCBjdXJyZW50IG5ldHdvcmsgc2VsZWN0aW9uIG1vZGUuCiAgICAgICoKICAgICAgKiBAcmV0dXJuIHRydWUgaWYgbWFudWFsIG1vZGUsIGZhbHNlIGlmIGF1dG9tYXRpYyBtb2RlCiAgICAgICovCkBAIC0zNzksNyArMzg0LDYgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewogICAgICAgICBTdHJpbmcgcmFkaW9UZWNobm9sb2d5ID0gbmV3IFN0cmluZygiRXJyb3IgaW4gcmFkaW9UZWNobm9sb2d5Iik7Ci0KICAgICAgICAgc3dpdGNoKHRoaXMubVJhZGlvVGVjaG5vbG9neSkgewogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICByYWRpb1RlY2hub2xvZ3kgPSAiVW5rbm93biI7CkBAIC00MTcsNiArNDIxLDkgQEAKICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgIHJhZGlvVGVjaG5vbG9neSA9ICJIU1BBIjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDEyOgorICAgICAgICAgICAgcmFkaW9UZWNobm9sb2d5ID0gIkV2RG8gcmV2LiBCIjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgTG9nLncoTE9HX1RBRywgIm1SYWRpb1RlY2hub2xvZ3kgdmFyaWFibGUgb3V0IG9mIHJhbmdlLiIpOwogICAgICAgICBicmVhazsKQEAgLTQ1NCw3ICs0NjEsNyBAQAogICAgICAgICBtSXNFbWVyZ2VuY3lPbmx5ID0gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gVE9ETyAtIGNhbid0IHRoaXMgYmUgY29tYmluZWQgd2l0aCB0aGUgYWJvdmUgZnVuYy4uCisgICAgLy8gVE9ETyAtIGNhbid0IHRoaXMgYmUgY29tYmluZWQgd2l0aCB0aGUgYWJvdmUgbWV0aG9kPwogICAgIHB1YmxpYyB2b2lkIHNldFN0YXRlT2ZmKCkgewogICAgICAgICBtU3RhdGUgPSBTVEFURV9QT1dFUl9PRkY7CiAgICAgICAgIG1Sb2FtaW5nID0gZmFsc2U7CkBAIC01MjQsOCArNTMxLDggQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBJbiBDRE1BIG1PcGVyYXRvckFscGhhTG9uZyBjYW4gYmUgc2V0IGZyb20gdGhlIEVSSQotICAgICAqIHRleHQsIHRoaXMgaXMgZG9uZSBmcm9tIHRoZSBDRE1BUGhvbmUgYW5kIG5vdCBmcm9tIHRoZSBDZG1hU2VydmljZVN0YXRlVHJhY2tlcgorICAgICAqIEluIENETUEsIG1PcGVyYXRvckFscGhhTG9uZyBjYW4gYmUgc2V0IGZyb20gdGhlIEVSSSB0ZXh0LgorICAgICAqIFRoaXMgaXMgZG9uZSBmcm9tIHRoZSBDRE1BUGhvbmUgYW5kIG5vdCBmcm9tIHRoZSBDZG1hU2VydmljZVN0YXRlVHJhY2tlci4KICAgICAgKgogICAgICAqIEBoaWRlCiAgICAgICovCkBAIC01MzgsNyArNTQ1LDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBUZXN0IHdoZXRoZXIgdHdvIG9iamVjdHMgaG9sZCB0aGUgc2FtZSBkYXRhIHZhbHVlcyBvciBib3RoIGFyZSBudWxsCisgICAgICogVGVzdCB3aGV0aGVyIHR3byBvYmplY3RzIGhvbGQgdGhlIHNhbWUgZGF0YSB2YWx1ZXMgb3IgYm90aCBhcmUgbnVsbC4KICAgICAgKgogICAgICAqIEBwYXJhbSBhIGZpcnN0IG9iagogICAgICAqIEBwYXJhbSBiIHNlY29uZCBvYmoKQEAgLTU0OSw3ICs1NTYsNyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIFNldCBTZXJ2aWNlU3RhdGUgYmFzZWQgb24gaW50ZW50IG5vdGlmaWVyIG1hcAorICAgICAqIFNldCBTZXJ2aWNlU3RhdGUgYmFzZWQgb24gaW50ZW50IG5vdGlmaWVyIG1hcC4KICAgICAgKgogICAgICAqIEBwYXJhbSBtIGludGVudCBub3RpZmllciBtYXAKICAgICAgKiBAaGlkZQpAQCAtNTcxLDcgKzU3OCw3IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogU2V0IGludGVudCBub3RpZmllciBCdW5kbGUgYmFzZWQgb24gc2VydmljZSBzdGF0ZQorICAgICAqIFNldCBpbnRlbnQgbm90aWZpZXIgQnVuZGxlIGJhc2VkIG9uIHNlcnZpY2Ugc3RhdGUuCiAgICAgICoKICAgICAgKiBAcGFyYW0gbSBpbnRlbnQgbm90aWZpZXIgQnVuZGxlCiAgICAgICogQGhpZGUKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1Ntc01hbmFnZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1Ntc01hbmFnZXIuamF2YQppbmRleCAzMTIyNzIyLi5mNWU5NzUxIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9TbXNNYW5hZ2VyLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvU21zTWFuYWdlci5qYXZhCkBAIC0zOTgsNCArMzk4LDYgQEAKICAgICBzdGF0aWMgcHVibGljIGZpbmFsIGludCBSRVNVTFRfRVJST1JfTk9fU0VSVklDRSAgICAgICAgID0gNDsKICAgICAvKiogRmFpbGVkIGJlY2F1c2Ugd2UgcmVhY2hlZCB0aGUgc2VuZGluZyBxdWV1ZSBsaW1pdC4gIHtAaGlkZX0gKi8KICAgICBzdGF0aWMgcHVibGljIGZpbmFsIGludCBSRVNVTFRfRVJST1JfTElNSVRfRVhDRUVERUQgICAgID0gNTsKKyAgICAvKiogRmFpbGVkIGJlY2F1c2UgRkROIGlzIGVuYWJsZWQuIHtAaGlkZX0gKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIGludCBSRVNVTFRfRVJST1JfRkROX0NIRUNLX0ZBSUxVUkUgID0gNjsKIH0KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1RlbGVwaG9ueU1hbmFnZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1RlbGVwaG9ueU1hbmFnZXIuamF2YQppbmRleCBmMDE4ZDEwNy4uYWI2MzAxNyAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvVGVsZXBob255TWFuYWdlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1RlbGVwaG9ueU1hbmFnZXIuamF2YQpAQCAtMzkxLDYgKzM5MSw5IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTkVUV09SS19UWVBFX0hTUEEgPSAxMDsKICAgICAvKiogQ3VycmVudCBuZXR3b3JrIGlzIGlEZW4gKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBORVRXT1JLX1RZUEVfSURFTiA9IDExOworICAgIC8qKiBDdXJyZW50IG5ldHdvcmsgaXMgRVZETyByZXZpc2lvbiBCKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBORVRXT1JLX1RZUEVfRVZET19CID0gMTI7CisKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgYSBjb25zdGFudCBpbmRpY2F0aW5nIHRoZSByYWRpbyB0ZWNobm9sb2d5IChuZXR3b3JrIHR5cGUpCkBAIC00MDcsNiArNDEwLDcgQEAKICAgICAgKiBAc2VlICNORVRXT1JLX1RZUEVfQ0RNQQogICAgICAqIEBzZWUgI05FVFdPUktfVFlQRV9FVkRPXzAKICAgICAgKiBAc2VlICNORVRXT1JLX1RZUEVfRVZET19BCisgICAgICogQHNlZSAjTkVUV09SS19UWVBFX0VWRE9fQgogICAgICAqIEBzZWUgI05FVFdPUktfVFlQRV8xeFJUVAogICAgICAqLwogICAgIHB1YmxpYyBpbnQgZ2V0TmV0d29ya1R5cGUoKSB7CkBAIC00NTQsNiArNDU4LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gIkNETUEgLSBFdkRvIHJldi4gMCI7CiAgICAgICAgICAgICBjYXNlIE5FVFdPUktfVFlQRV9FVkRPX0E6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJDRE1BIC0gRXZEbyByZXYuIEEiOworICAgICAgICAgICAgY2FzZSBORVRXT1JLX1RZUEVfRVZET19COgorICAgICAgICAgICAgICAgIHJldHVybiAiQ0RNQSAtIEV2RG8gcmV2LiBCIjsKICAgICAgICAgICAgIGNhc2UgTkVUV09SS19UWVBFXzF4UlRUOgogICAgICAgICAgICAgICAgIHJldHVybiAiQ0RNQSAtIDF4UlRUIjsKICAgICAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9nc20vU21zTWFuYWdlci5qYXZhIGIvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvZ3NtL1Ntc01hbmFnZXIuamF2YQppbmRleCAyNDFjNDg1Li4zYjc1Mjk4IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9nc20vU21zTWFuYWdlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L2dzbS9TbXNNYW5hZ2VyLmphdmEKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgKiAgdGhlIGN1cnJlbnQgZGVmYXVsdCBTTVNDCiAgICAgICogQHBhcmFtIHRleHQgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UgdG8gc2VuZAogICAgICAqIEBwYXJhbSBzZW50SW50ZW50IGlmIG5vdCBOVUxMIHRoaXMgPGNvZGU+UGVuZGluZ0ludGVudDwvY29kZT4gaXMKLSAgICAgKiAgYnJvYWRjYXN0IHdoZW4gdGhlIG1lc3NhZ2UgaXMgc3VjZXNzZnVsbHkgc2VudCwgb3IgZmFpbGVkLgorICAgICAqICBicm9hZGNhc3Qgd2hlbiB0aGUgbWVzc2FnZSBpcyBzdWNjZXNzZnVsbHkgc2VudCwgb3IgZmFpbGVkLgogICAgICAqICBUaGUgcmVzdWx0IGNvZGUgd2lsbCBiZSA8Y29kZT5BY3Rpdml0eS5SRVNVTFRfT0s8Y29kZT4gZm9yIHN1Y2Nlc3MsCiAgICAgICogIG9yIG9uZSBvZiB0aGVzZSBlcnJvcnM6CiAgICAgICogIDxjb2RlPlJFU1VMVF9FUlJPUl9HRU5FUklDX0ZBSUxVUkU8L2NvZGU+CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQWRuUmVjb3JkLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQWRuUmVjb3JkLmphdmEKaW5kZXggMDg5NmJhNi4uMWJmMmQzYyAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0FkblJlY29yZC5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9BZG5SZWNvcmQuamF2YQpAQCAtMTksMTAgKzE5LDkgQEAKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CiBpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVOdW1iZXJVdGlsczsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiAKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuR3NtQWxwaGFiZXQ7Ci0KIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogCiAKQEAgLTM4LDggKzM3LDggQEAKIAogICAgIC8vKioqKiogSW5zdGFuY2UgVmFyaWFibGVzCiAKLSAgICBTdHJpbmcgYWxwaGFUYWcgPSAiIjsKLSAgICBTdHJpbmcgbnVtYmVyID0gIiI7CisgICAgU3RyaW5nIGFscGhhVGFnID0gbnVsbDsKKyAgICBTdHJpbmcgbnVtYmVyID0gbnVsbDsKICAgICBTdHJpbmdbXSBlbWFpbHM7CiAgICAgaW50IGV4dFJlY29yZCA9IDB4ZmY7CiAgICAgaW50IGVmaWQ7ICAgICAgICAgICAgICAgICAgIC8vIG9yIDAgaWYgbm9uZQpAQCAtNjMsOCArNjIsOCBAQAogICAgIC8vIEFETiBvZmZzZXQKICAgICBzdGF0aWMgZmluYWwgaW50IEFETl9CQ0RfTlVNQkVSX0xFTkdUSCA9IDA7CiAgICAgc3RhdGljIGZpbmFsIGludCBBRE5fVE9OX0FORF9OUEkgPSAxOwotICAgIHN0YXRpYyBmaW5hbCBpbnQgQUROX0RBSUxJTkdfTlVNQkVSX1NUQVJUID0gMjsKLSAgICBzdGF0aWMgZmluYWwgaW50IEFETl9EQUlMSU5HX05VTUJFUl9FTkQgPSAxMTsKKyAgICBzdGF0aWMgZmluYWwgaW50IEFETl9ESUFMSU5HX05VTUJFUl9TVEFSVCA9IDI7CisgICAgc3RhdGljIGZpbmFsIGludCBBRE5fRElBTElOR19OVU1CRVJfRU5EID0gMTE7CiAgICAgc3RhdGljIGZpbmFsIGludCBBRE5fQ0FQQUJJTElUWV9JRCA9IDEyOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgQUROX0VYVEVOU0lPTl9JRCA9IDEzOwogCkBAIC0xNTIsMTcgKzE1MSwzMSBAQAogICAgIH0KIAogICAgIHB1YmxpYyBib29sZWFuIGlzRW1wdHkoKSB7Ci0gICAgICAgIHJldHVybiBhbHBoYVRhZy5lcXVhbHMoIiIpICYmIG51bWJlci5lcXVhbHMoIiIpICYmIGVtYWlscyA9PSBudWxsOworICAgICAgICByZXR1cm4gVGV4dFV0aWxzLmlzRW1wdHkoYWxwaGFUYWcpICYmIFRleHRVdGlscy5pc0VtcHR5KG51bWJlcikgJiYgZW1haWxzID09IG51bGw7CiAgICAgfQogCiAgICAgcHVibGljIGJvb2xlYW4gaGFzRXh0ZW5kZWRSZWNvcmQoKSB7CiAgICAgICAgIHJldHVybiBleHRSZWNvcmQgIT0gMCAmJiBleHRSZWNvcmQgIT0gMHhmZjsKICAgICB9CiAKKyAgICAvKiogSGVscGVyIGZ1bmN0aW9uIGZvciB7QGxpbmsgI2lzRXF1YWx9LiAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gc3RyaW5nQ29tcGFyZU51bGxFcXVhbHNFbXB0eShTdHJpbmcgczEsIFN0cmluZyBzMikgeworICAgICAgICBpZiAoczEgPT0gczIpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChzMSA9PSBudWxsKSB7CisgICAgICAgICAgICBzMSA9ICIiOworICAgICAgICB9CisgICAgICAgIGlmIChzMiA9PSBudWxsKSB7CisgICAgICAgICAgICBzMiA9ICIiOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoczEuZXF1YWxzKHMyKSk7CisgICAgfQorCiAgICAgcHVibGljIGJvb2xlYW4gaXNFcXVhbChBZG5SZWNvcmQgYWRuKSB7Ci0gICAgICAgIHJldHVybiAoIGFscGhhVGFnLmVxdWFscyhhZG4uZ2V0QWxwaGFUYWcoKSkgJiYKLSAgICAgICAgICAgICAgICBudW1iZXIuZXF1YWxzKGFkbi5nZXROdW1iZXIoKSkgJiYKLSAgICAgICAgICAgICAgICBBcnJheXMuZXF1YWxzKGVtYWlscywgYWRuLmdldEVtYWlscygpKSk7CisgICAgICAgIHJldHVybiAoIHN0cmluZ0NvbXBhcmVOdWxsRXF1YWxzRW1wdHkoYWxwaGFUYWcsIGFkbi5hbHBoYVRhZykgJiYKKyAgICAgICAgICAgICAgICBzdHJpbmdDb21wYXJlTnVsbEVxdWFsc0VtcHR5KG51bWJlciwgYWRuLm51bWJlcikgJiYKKyAgICAgICAgICAgICAgICBBcnJheXMuZXF1YWxzKGVtYWlscywgYWRuLmVtYWlscykpOwogICAgIH0KICAgICAvLyoqKioqIFBhcmNlbGFibGUgSW1wbGVtZW50YXRpb24KIApAQCAtMTg0LDM2ICsxOTcsMzMgQEAKICAgICAgKgogICAgICAqIEBwYXJhbSByZWNvcmRTaXplIGlzIHRoZSBzaXplIFggb2YgRUYgcmVjb3JkCiAgICAgICogQHJldHVybiBoZXggYnl0ZVtyZWNvcmRTaXplXSB0byBiZSB3cml0dGVuIHRvIEVGIHJlY29yZAotICAgICAqICAgICAgICAgIHJldHVybiBudWxsbCBmb3Igd3JvbmcgZm9ybWF0IG9mIGRpYWxpbmcgbnVibWVyIG9yIHRhZworICAgICAqICAgICAgICAgIHJldHVybiBudWxsIGZvciB3cm9uZyBmb3JtYXQgb2YgZGlhbGluZyBudW1iZXIgb3IgdGFnCiAgICAgICovCiAgICAgcHVibGljIGJ5dGVbXSBidWlsZEFkblN0cmluZyhpbnQgcmVjb3JkU2l6ZSkgewogICAgICAgICBieXRlW10gYmNkTnVtYmVyOwogICAgICAgICBieXRlW10gYnl0ZVRhZzsKLSAgICAgICAgYnl0ZVtdIGFkblN0cmluZyA9IG51bGw7CisgICAgICAgIGJ5dGVbXSBhZG5TdHJpbmc7CiAgICAgICAgIGludCBmb290ZXJPZmZzZXQgPSByZWNvcmRTaXplIC0gRk9PVEVSX1NJWkVfQllURVM7CiAKLSAgICAgICAgaWYgKG51bWJlciA9PSBudWxsIHx8IG51bWJlci5lcXVhbHMoIiIpIHx8Ci0gICAgICAgICAgICAgICAgYWxwaGFUYWcgPT0gbnVsbCB8fCBhbHBoYVRhZy5lcXVhbHMoIiIpKSB7CisgICAgICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSByZWNvcmQKKyAgICAgICAgYWRuU3RyaW5nID0gbmV3IGJ5dGVbcmVjb3JkU2l6ZV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjb3JkU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBhZG5TdHJpbmdbaV0gPSAoYnl0ZSkgMHhGRjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBMb2cudyhMT0dfVEFHLCAiW2J1aWxkQWRuU3RyaW5nXSBFbXB0eSBhbHBoYSB0YWcgb3IgbnVtYmVyIik7Ci0gICAgICAgICAgICBhZG5TdHJpbmcgPSBuZXcgYnl0ZVtyZWNvcmRTaXplXTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjb3JkU2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYWRuU3RyaW5nW2ldID0gKGJ5dGUpIDB4RkY7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eShudW1iZXIpKSB7CisgICAgICAgICAgICBMb2cudyhMT0dfVEFHLCAiW2J1aWxkQWRuU3RyaW5nXSBFbXB0eSBkaWFsaW5nIG51bWJlciIpOworICAgICAgICAgICAgcmV0dXJuIGFkblN0cmluZzsgICAvLyByZXR1cm4gdGhlIGVtcHR5IHJlY29yZCAoZm9yIGRlbGV0ZSkKICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIubGVuZ3RoKCkKLSAgICAgICAgICAgICAgICA+IChBRE5fREFJTElOR19OVU1CRVJfRU5EIC0gQUROX0RBSUxJTkdfTlVNQkVSX1NUQVJUICsgMSkgKiAyKSB7CisgICAgICAgICAgICAgICAgPiAoQUROX0RJQUxJTkdfTlVNQkVSX0VORCAtIEFETl9ESUFMSU5HX05VTUJFUl9TVEFSVCArIDEpICogMikgewogICAgICAgICAgICAgTG9nLncoTE9HX1RBRywKLSAgICAgICAgICAgICAgICAgICAgIltidWlsZEFkblN0cmluZ10gTWF4IGxlbmd0aCBvZiBkYWlsaW5nIG51bWJlciBpcyAyMCIpOwotICAgICAgICB9IGVsc2UgaWYgKGFscGhhVGFnLmxlbmd0aCgpID4gZm9vdGVyT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICJbYnVpbGRBZG5TdHJpbmddIE1heCBsZW5ndGggb2YgZGlhbGluZyBudW1iZXIgaXMgMjAiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UgaWYgKGFscGhhVGFnICE9IG51bGwgJiYgYWxwaGFUYWcubGVuZ3RoKCkgPiBmb290ZXJPZmZzZXQpIHsKICAgICAgICAgICAgIExvZy53KExPR19UQUcsCiAgICAgICAgICAgICAgICAgICAgICJbYnVpbGRBZG5TdHJpbmddIE1heCBsZW5ndGggb2YgdGFnIGlzICIgKyBmb290ZXJPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICAgIGFkblN0cmluZyA9IG5ldyBieXRlW3JlY29yZFNpemVdOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWNvcmRTaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBhZG5TdHJpbmdbaV0gPSAoYnl0ZSkgMHhGRjsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgYmNkTnVtYmVyID0gUGhvbmVOdW1iZXJVdGlscy5udW1iZXJUb0NhbGxlZFBhcnR5QkNEKG51bWJlcik7CiAKICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYmNkTnVtYmVyLCAwLCBhZG5TdHJpbmcsCkBAIC0yMjIsMTYgKzIzMiwxNyBAQAogICAgICAgICAgICAgYWRuU3RyaW5nW2Zvb3Rlck9mZnNldCArIEFETl9CQ0RfTlVNQkVSX0xFTkdUSF0KICAgICAgICAgICAgICAgICAgICAgPSAoYnl0ZSkgKGJjZE51bWJlci5sZW5ndGgpOwogICAgICAgICAgICAgYWRuU3RyaW5nW2Zvb3Rlck9mZnNldCArIEFETl9DQVBBQklMSVRZX0lEXQotICAgICAgICAgICAgICAgICAgICA9IChieXRlKSAweEZGOyAvLyBDYXBhY2lsaXR5IElkCisgICAgICAgICAgICAgICAgICAgID0gKGJ5dGUpIDB4RkY7IC8vIENhcGFiaWxpdHkgSWQKICAgICAgICAgICAgIGFkblN0cmluZ1tmb290ZXJPZmZzZXQgKyBBRE5fRVhURU5TSU9OX0lEXQogICAgICAgICAgICAgICAgICAgICA9IChieXRlKSAweEZGOyAvLyBFeHRlbnNpb24gUmVjb3JkIElkCiAKLSAgICAgICAgICAgIGJ5dGVUYWcgPSBHc21BbHBoYWJldC5zdHJpbmdUb0dzbThCaXRQYWNrZWQoYWxwaGFUYWcpOwotICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShieXRlVGFnLCAwLCBhZG5TdHJpbmcsIDAsIGJ5dGVUYWcubGVuZ3RoKTsKKyAgICAgICAgICAgIGlmICghVGV4dFV0aWxzLmlzRW1wdHkoYWxwaGFUYWcpKSB7CisgICAgICAgICAgICAgICAgYnl0ZVRhZyA9IEdzbUFscGhhYmV0LnN0cmluZ1RvR3NtOEJpdFBhY2tlZChhbHBoYVRhZyk7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShieXRlVGFnLCAwLCBhZG5TdHJpbmcsIDAsIGJ5dGVUYWcubGVuZ3RoKTsKKyAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgcmV0dXJuIGFkblN0cmluZzsKICAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBhZG5TdHJpbmc7CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQWRuUmVjb3JkTG9hZGVyLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQWRuUmVjb3JkTG9hZGVyLmphdmEKaW5kZXggY2ZiNWFhYS4uNTViZGMwNiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0FkblJlY29yZExvYWRlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9BZG5SZWNvcmRMb2FkZXIuamF2YQpAQCAtMTA2LDcgKzEwNiw3IEBACiAgICAgICogSXQgd2lsbCBnZXQgdGhlIHJlY29yZCBzaXplIG9mIEVGIHJlY29yZCBhbmQgY29tcG9zZSBoZXggYWRuIGFycmF5CiAgICAgICogdGhlbiB3cml0ZSB0aGUgaGV4IGFycmF5IHRvIEVGIHJlY29yZAogICAgICAqCi0gICAgICogQHBhcmFtIGFkbiBpcyBzZXQgd2l0aCBhbHBoYVRhZyBhbmQgcGhvbmVOdWJtZXIKKyAgICAgKiBAcGFyYW0gYWRuIGlzIHNldCB3aXRoIGFscGhhVGFnIGFuZCBwaG9uZSBudW1iZXIKICAgICAgKiBAcGFyYW0gZWYgRUYgZmlsZWlkCiAgICAgICogQHBhcmFtIGV4dGVuc2lvbkVGIGV4dGVuc2lvbiBFRiBmaWxlaWQKICAgICAgKiBAcGFyYW0gcmVjb3JkTnVtYmVyIDEtYmFzZWQgcmVjb3JkIGluZGV4CkBAIC0xNTksNyArMTU5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGFkbi5idWlsZEFkblN0cmluZyhyZWNvcmRTaXplWzBdKTsKIAogICAgICAgICAgICAgICAgICAgICBpZihkYXRhID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJ3b3JvbmcgQUROIGZvcm1hdCIsCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigid3JvbmcgQUROIGZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyLmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtMjE4LDcgKzIxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigibG9hZCBmYWlsZWQiLCBhci5leGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgTG9nLmQoTE9HX1RBRywiQUROIGV4dGVudGlvbiBFRjogMHgiCisgICAgICAgICAgICAgICAgICAgIExvZy5kKExPR19UQUcsIkFETiBleHRlbnNpb24gRUY6IDB4IgogICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGV4dGVuc2lvbkVGKQogICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiIgKyBhZG4uZXh0UmVjb3JkCiAgICAgICAgICAgICAgICAgICAgICAgICArICJcbiIgKyBJY2NVdGlscy5ieXRlc1RvSGV4U3RyaW5nKGRhdGEpKTsKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9DYWxsZXJJbmZvQXN5bmNRdWVyeS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NhbGxlckluZm9Bc3luY1F1ZXJ5LmphdmEKaW5kZXggODAyZTc5Yi4uNzk4YTVhNSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NhbGxlckluZm9Bc3luY1F1ZXJ5LmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NhbGxlckluZm9Bc3luY1F1ZXJ5LmphdmEKQEAgLTI4NCw3ICsyODQsNyBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgQ2FsbGVySW5mb0FzeW5jUXVlcnkgc3RhcnRRdWVyeShpbnQgdG9rZW4sIENvbnRleHQgY29udGV4dCwgU3RyaW5nIG51bWJlciwKICAgICAgICAgICAgIE9uUXVlcnlDb21wbGV0ZUxpc3RlbmVyIGxpc3RlbmVyLCBPYmplY3QgY29va2llKSB7Ci0gICAgICAgIC8vY29udHJ1Y3QgdGhlIFVSSSBvYmplY3QgYW5kIHN0YXJ0IFF1ZXJ5LgorICAgICAgICAvL2NvbnN0cnVjdCB0aGUgVVJJIG9iamVjdCBhbmQgc3RhcnQgUXVlcnkuCiAgICAgICAgIFVyaSBjb250YWN0UmVmID0gVXJpLndpdGhBcHBlbmRlZFBhdGgoUGhvbmVMb29rdXAuQ09OVEVOVF9GSUxURVJfVVJJLCBVcmkuZW5jb2RlKG51bWJlcikpOwogCiAgICAgICAgIENhbGxlckluZm9Bc3luY1F1ZXJ5IGMgPSBuZXcgQ2FsbGVySW5mb0FzeW5jUXVlcnkoKTsKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db21tYW5kRXhjZXB0aW9uLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ29tbWFuZEV4Y2VwdGlvbi5qYXZhCmluZGV4IGViMGE0NDAuLjk0YzU0NGUgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db21tYW5kRXhjZXB0aW9uLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NvbW1hbmRFeGNlcHRpb24uamF2YQpAQCAtMzcsNiArMzcsMTAgQEAKICAgICAgICAgT1BfTk9UX0FMTE9XRURfRFVSSU5HX1ZPSUNFX0NBTEwsCiAgICAgICAgIE9QX05PVF9BTExPV0VEX0JFRk9SRV9SRUdfTlcsCiAgICAgICAgIFNNU19GQUlMX1JFVFJZLAorICAgICAgICBTSU1fQUJTRU5ULAorICAgICAgICBTVUJTQ1JJUFRJT05fTk9UX0FWQUlMQUJMRSwKKyAgICAgICAgTU9ERV9OT1RfU1VQUE9SVEVELAorICAgICAgICBGRE5fQ0hFQ0tfRkFJTFVSRSwKICAgICAgICAgSUxMRUdBTF9TSU1fT1JfTUUsCiAgICAgfQogCkBAIC02OSw2ICs3MywxNCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEV4Y2VwdGlvbihFcnJvci5PUF9OT1RfQUxMT1dFRF9CRUZPUkVfUkVHX05XKTsKICAgICAgICAgICAgIGNhc2UgUklMQ29uc3RhbnRzLlNNU19TRU5EX0ZBSUxfUkVUUlk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kRXhjZXB0aW9uKEVycm9yLlNNU19GQUlMX1JFVFJZKTsKKyAgICAgICAgICAgIGNhc2UgUklMQ29uc3RhbnRzLlNJTV9BQlNFTlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kRXhjZXB0aW9uKEVycm9yLlNJTV9BQlNFTlQpOworICAgICAgICAgICAgY2FzZSBSSUxDb25zdGFudHMuU1VCU0NSSVBUSU9OX05PVF9BVkFJTEFCTEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kRXhjZXB0aW9uKEVycm9yLlNVQlNDUklQVElPTl9OT1RfQVZBSUxBQkxFKTsKKyAgICAgICAgICAgIGNhc2UgUklMQ29uc3RhbnRzLk1PREVfTk9UX1NVUFBPUlRFRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRFeGNlcHRpb24oRXJyb3IuTU9ERV9OT1RfU1VQUE9SVEVEKTsKKyAgICAgICAgICAgIGNhc2UgUklMQ29uc3RhbnRzLkZETl9DSEVDS19GQUlMVVJFOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEV4Y2VwdGlvbihFcnJvci5GRE5fQ0hFQ0tfRkFJTFVSRSk7CiAgICAgICAgICAgICBjYXNlIFJJTENvbnN0YW50cy5JTExFR0FMX1NJTV9PUl9NRToKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRFeGNlcHRpb24oRXJyb3IuSUxMRUdBTF9TSU1fT1JfTUUpOwogICAgICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db21tYW5kc0ludGVyZmFjZS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NvbW1hbmRzSW50ZXJmYWNlLmphdmEKaW5kZXggZDkwYzMwNS4uOGUwM2M1YSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NvbW1hbmRzSW50ZXJmYWNlLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NvbW1hbmRzSW50ZXJmYWNlLmphdmEKQEAgLTY2NCw2ICs2NjQsMTkgQEAKICAgICAgKiAgcmV0TXNnLm9iaiA9IEFzeW5jUmVzdWx0IGFyCiAgICAgICogIGFyLmV4Y2VwdGlvbiBjYXJyaWVzIGV4Y2VwdGlvbiBvbiBmYWlsdXJlCiAgICAgICogIGFyLnVzZXJPYmplY3QgY29udGFpbnMgdGhlIG9yaWduYWwgdmFsdWUgb2YgcmVzdWx0Lm9iagorICAgICAqICBhci5yZXN1bHQgaXMgbnVsbCBvbiBzdWNjZXNzIGFuZCBmYWlsdXJlCisgICAgICoKKyAgICAgKiBDTElSX0RFRkFVTFQgICAgID09IG9uICJ1c2Ugc3Vic2NyaXB0aW9uIGRlZmF1bHQgdmFsdWUiCisgICAgICogQ0xJUl9TVVBQUkVTU0lPTiA9PSBvbiAiQ0xJUiBzdXBwcmVzc2lvbiIgKGFsbG93IENMSSBwcmVzZW50YXRpb24pCisgICAgICogQ0xJUl9JTlZPQ0FUSU9OICA9PSBvbiAiQ0xJUiBpbnZvY2F0aW9uIiAocmVzdHJpY3QgQ0xJIHByZXNlbnRhdGlvbikKKyAgICAgKi8KKyAgICB2b2lkIGRpYWwoU3RyaW5nIGFkZHJlc3MsIGludCBjbGlyTW9kZSwgVVVTSW5mbyB1dXNJbmZvLCBNZXNzYWdlIHJlc3VsdCk7CisKKyAgICAvKioKKyAgICAgKiAgcmV0dXJuZWQgbWVzc2FnZQorICAgICAqICByZXRNc2cub2JqID0gQXN5bmNSZXN1bHQgYXIKKyAgICAgKiAgYXIuZXhjZXB0aW9uIGNhcnJpZXMgZXhjZXB0aW9uIG9uIGZhaWx1cmUKKyAgICAgKiAgYXIudXNlck9iamVjdCBjb250YWlucyB0aGUgb3JpZ25hbCB2YWx1ZSBvZiByZXN1bHQub2JqCiAgICAgICogIGFyLnJlc3VsdCBpcyBTdHJpbmcgY29udGFpbmluZyBJTVNJIG9uIHN1Y2Nlc3MKICAgICAgKi8KICAgICB2b2lkIGdldElNU0koTWVzc2FnZSByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0Nvbm5lY3Rpb24uamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db25uZWN0aW9uLmphdmEKaW5kZXggMzdlOGE5OS4uMTFkMGIxYiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0Nvbm5lY3Rpb24uamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ29ubmVjdGlvbi5qYXZhCkBAIC00NSwxNyArNDUsMTggQEAKICAgICAgICAgUE9XRVJfT0ZGLCAgICAgICAgICAgICAgICAgICAgICAvKiByYWRpbyBpcyB0dXJuZWQgb2ZmIGV4cGxpY2l0bHkgKi8KICAgICAgICAgT1VUX09GX1NFUlZJQ0UsICAgICAgICAgICAgICAgICAvKiBvdXQgb2Ygc2VydmljZSAqLwogICAgICAgICBJQ0NfRVJST1IsICAgICAgICAgICAgICAgICAgICAgIC8qIE5vIElDQywgSUNDIGxvY2tlZCwgb3Igb3RoZXIgSUNDIGVycm9yICovCi0gICAgICAgIENBTExfQkFSUkVELCAgICAgICAgICAgICAgICAgICAgLyogY2FsbCB3YXMgYmxvY2tlZCBieSBjYWxsIGJhcnJyaW5nICovCisgICAgICAgIENBTExfQkFSUkVELCAgICAgICAgICAgICAgICAgICAgLyogY2FsbCB3YXMgYmxvY2tlZCBieSBjYWxsIGJhcnJpbmcgKi8KICAgICAgICAgRkROX0JMT0NLRUQsICAgICAgICAgICAgICAgICAgICAvKiBjYWxsIHdhcyBibG9ja2VkIGJ5IGZpeGVkIGRpYWwgbnVtYmVyICovCiAgICAgICAgIENTX1JFU1RSSUNURUQsICAgICAgICAgICAgICAgICAgLyogY2FsbCB3YXMgYmxvY2tlZCBieSByZXN0cmljdGVkIGFsbCB2b2ljZSBhY2Nlc3MgKi8KICAgICAgICAgQ1NfUkVTVFJJQ1RFRF9OT1JNQUwsICAgICAgICAgICAvKiBjYWxsIHdhcyBibG9ja2VkIGJ5IHJlc3RyaWN0ZWQgbm9ybWFsIHZvaWNlIGFjY2VzcyAqLwogICAgICAgICBDU19SRVNUUklDVEVEX0VNRVJHRU5DWSwgICAgICAgIC8qIGNhbGwgd2FzIGJsb2NrZWQgYnkgcmVzdHJpY3RlZCBlbWVyZ2VuY3kgdm9pY2UgYWNjZXNzICovCisgICAgICAgIFVOT0JUQUlOQUJMRV9OVU1CRVIsICAgICAgICAgICAgLyogVW5hc3NpZ25lZCBudW1iZXIgKDNHUFAgVFMgMjQuMDA4IHRhYmxlIDEwLjUuMTIzKSAqLwogICAgICAgICBDRE1BX0xPQ0tFRF9VTlRJTF9QT1dFUl9DWUNMRSwgIC8qIE1TIGlzIGxvY2tlZCB1bnRpbCBuZXh0IHBvd2VyIGN5Y2xlICovCiAgICAgICAgIENETUFfRFJPUCwKICAgICAgICAgQ0RNQV9JTlRFUkNFUFQsICAgICAgICAgICAgICAgICAvKiBJTlRFUkNFUFQgb3JkZXIgcmVjZWl2ZWQsIE1TIHN0YXRlIGlkbGUgZW50ZXJlZCAqLwogICAgICAgICBDRE1BX1JFT1JERVIsICAgICAgICAgICAgICAgICAgIC8qIE1TIGhhcyBiZWVuIHJlZGlyZWN0ZWQsIGNhbGwgaXMgY2FuY2VsbGVkICovCiAgICAgICAgIENETUFfU09fUkVKRUNULCAgICAgICAgICAgICAgICAgLyogc2VydmljZSBvcHRpb24gcmVqZWN0aW9uICovCi0gICAgICAgIENETUFfUkVUUllfT1JERVIsICAgICAgICAgICAgICAgLyogcmVxdWVzZXRlZCBzZXJ2aWNlIGlzIHJlamVjdGVkLCByZXRyeSBkZWxheSBpcyBzZXQgKi8KKyAgICAgICAgQ0RNQV9SRVRSWV9PUkRFUiwgICAgICAgICAgICAgICAvKiByZXF1ZXN0ZWQgc2VydmljZSBpcyByZWplY3RlZCwgcmV0cnkgZGVsYXkgaXMgc2V0ICovCiAgICAgICAgIENETUFfQUNDRVNTX0ZBSUxVUkUsCiAgICAgICAgIENETUFfUFJFRU1QVEVELAogICAgICAgICBDRE1BX05PVF9FTUVSR0VOQ1ksICAgICAgICAgICAgICAvKiBub3QgYW4gZW1lcmdlbmN5IGNhbGwgKi8KQEAgLTY4LDggKzY5LDggQEAKICAgICAvKiBJbnN0YW5jZSBNZXRob2RzICovCiAKICAgICAvKioKLSAgICAgKiBHZXRzIGFkZHJlc3MgKGUuZy4sIHBob25lIG51bWJlcikgYXNzb2NpYXRlZCB3aXRoIGNvbm5lY3Rpb24KLSAgICAgKiBUT0RPOiBkaXN0aW5ndWlzaCByZWFzb25zIGZvciB1bmF2YWlsYWJsaXR5CisgICAgICogR2V0cyBhZGRyZXNzIChlLmcuIHBob25lIG51bWJlcikgYXNzb2NpYXRlZCB3aXRoIGNvbm5lY3Rpb24uCisgICAgICogVE9ETzogZGlzdGluZ3Vpc2ggcmVhc29ucyBmb3IgdW5hdmFpbGFiaWxpdHkKICAgICAgKgogICAgICAqIEByZXR1cm4gYWRkcmVzcyBvciBudWxsIGlmIHVuYXZhaWxhYmxlCiAgICAgICovCkBAIC03Nyw3ICs3OCw3IEBACiAgICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRBZGRyZXNzKCk7CiAKICAgICAvKioKLSAgICAgKiBHZXRzIGNkbWEgQ05BUCBuYW1lICBhc3NvY2lhdGVkIHdpdGggY29ubmVjdGlvbgorICAgICAqIEdldHMgQ0RNQSBDTkFQIG5hbWUgYXNzb2NpYXRlZCB3aXRoIGNvbm5lY3Rpb24uCiAgICAgICogQHJldHVybiBjbmFwIG5hbWUgb3IgbnVsbCBpZiB1bmF2YWlsYWJsZQogICAgICAqLwogICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q25hcE5hbWUoKSB7CkBAIC04NSwxNSArODYsMTUgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBHZXQgb3JpZ25hbCBkaWFsIHN0cmluZwotICAgICAqIEByZXR1cm4gb3JpZ25hbCBkaWFsIHN0cmluZyBvciBudWxsIGlmIHVuYXZhaWxhYmxlCisgICAgICogR2V0IG9yaWdpbmFsIGRpYWwgc3RyaW5nLgorICAgICAqIEByZXR1cm4gb3JpZ2luYWwgZGlhbCBzdHJpbmcgb3IgbnVsbCBpZiB1bmF2YWlsYWJsZQogICAgICAqLwogICAgIHB1YmxpYyBTdHJpbmcgZ2V0T3JpZ0RpYWxTdHJpbmcoKXsKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCiAgICAgLyoqCi0gICAgICogR2V0cyBjZG1hIENOQVAgcHJlc2VudGF0aW9uIGFzc29jaWF0ZWQgd2l0aCBjb25uZWN0aW9uCisgICAgICogR2V0cyBDRE1BIENOQVAgcHJlc2VudGF0aW9uIGFzc29jaWF0ZWQgd2l0aCBjb25uZWN0aW9uLgogICAgICAqIEByZXR1cm4gY25hcCBuYW1lIG9yIG51bGwgaWYgdW5hdmFpbGFibGUKICAgICAgKi8KIApAQCAtMTE1LDQ1ICsxMTYsNDUgQEAKICAgICBwdWJsaWMgYWJzdHJhY3QgbG9uZyBnZXRDcmVhdGVUaW1lKCk7CiAKICAgICAvKioKLSAgICAgKiBDb25uZWN0aW9uIGNvbm5lY3QgdGltZSBpbiBjdXJyZW50VGltZU1pbGxpcygpIGZvcm1hdAotICAgICAqIEZvciBvdXRnb2luZyBjYWxsczogQmVnaW5zIGF0IChESUFMSU5HfEFMRVJUSU5HKSAtPiBBQ1RJVkUgdHJhbnNpdGlvbgotICAgICAqIEZvciBpbmNvbWluZyBjYWxsczogQmVnaW5zIGF0IChJTkNPTUlOR3xXQUlUSU5HKSAtPiBBQ1RJVkUgdHJhbnNpdGlvbgotICAgICAqIFJldHVybnMgMCBiZWZvcmUgdGhlbgorICAgICAqIENvbm5lY3Rpb24gY29ubmVjdCB0aW1lIGluIGN1cnJlbnRUaW1lTWlsbGlzKCkgZm9ybWF0LgorICAgICAqIEZvciBvdXRnb2luZyBjYWxsczogQmVnaW5zIGF0IChESUFMSU5HfEFMRVJUSU5HKSAtPiBBQ1RJVkUgdHJhbnNpdGlvbi4KKyAgICAgKiBGb3IgaW5jb21pbmcgY2FsbHM6IEJlZ2lucyBhdCAoSU5DT01JTkd8V0FJVElORykgLT4gQUNUSVZFIHRyYW5zaXRpb24uCisgICAgICogUmV0dXJucyAwIGJlZm9yZSB0aGVuLgogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBsb25nIGdldENvbm5lY3RUaW1lKCk7CiAKICAgICAvKioKLSAgICAgKiBEaXNjb25uZWN0IHRpbWUgaW4gY3VycmVudFRpbWVNaWxsaXMoKSBmb3JtYXQKLSAgICAgKiBUaGUgdGltZSB3aGVuIHRoaXMgQ29ubmVjdGlvbiBtYWtlcyBhIHRyYW5zaXRpb24gaW50byBFTkRFRCBvciBGQUlMCi0gICAgICogUmV0dXJucyAwIGJlZm9yZSB0aGVuCisgICAgICogRGlzY29ubmVjdCB0aW1lIGluIGN1cnJlbnRUaW1lTWlsbGlzKCkgZm9ybWF0LgorICAgICAqIFRoZSB0aW1lIHdoZW4gdGhpcyBDb25uZWN0aW9uIG1ha2VzIGEgdHJhbnNpdGlvbiBpbnRvIEVOREVEIG9yIEZBSUwuCisgICAgICogUmV0dXJucyAwIGJlZm9yZSB0aGVuLgogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBsb25nIGdldERpc2Nvbm5lY3RUaW1lKCk7CiAKICAgICAvKioKLSAgICAgKiByZXR1cm5zIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoZSBjYWxsIGhhcyBiZWVuIGNvbm5lY3RlZCwKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoZSBjYWxsIGhhcyBiZWVuIGNvbm5lY3RlZCwKICAgICAgKiBvciAwIGlmIHRoZSBjYWxsIGhhcyBuZXZlciBjb25uZWN0ZWQuCiAgICAgICogSWYgdGhlIGNhbGwgaXMgc3RpbGwgY29ubmVjdGVkLCB0aGVuIHJldHVybnMgdGhlIGVsYXBzZWQKLSAgICAgKiB0aW1lIHNpbmNlIGNvbm5lY3QKKyAgICAgKiB0aW1lIHNpbmNlIGNvbm5lY3QuCiAgICAgICovCiAgICAgcHVibGljIGFic3RyYWN0IGxvbmcgZ2V0RHVyYXRpb25NaWxsaXMoKTsKIAogICAgIC8qKgogICAgICAqIElmIHRoaXMgY29ubmVjdGlvbiBpcyBIT0xESU5HLCByZXR1cm4gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMKLSAgICAgKiB0aGF0IGl0IGhhcyBiZWVuIG9uIGhvbGQgZm9yIChhcHByb3hpbWVudGx5KQotICAgICAqIElmIHRoaXMgY29ubmVjdGlvbiBpcyBpbiBhbnkgb3RoZXIgc3RhdGUsIHJldHVybiAwCisgICAgICogdGhhdCBpdCBoYXMgYmVlbiBvbiBob2xkIGZvciAoYXBwcm94aW1hdGVseSkuCisgICAgICogSWYgdGhpcyBjb25uZWN0aW9uIGlzIGluIGFueSBvdGhlciBzdGF0ZSwgcmV0dXJuIDAuCiAgICAgICovCiAKICAgICBwdWJsaWMgYWJzdHJhY3QgbG9uZyBnZXRIb2xkRHVyYXRpb25NaWxsaXMoKTsKIAogICAgIC8qKgotICAgICAqIFJldHVybnMgIk5PVF9ESVNDT05ORUNURUQiIGlmIG5vdCB5ZXQgZGlzY29ubmVjdGVkCisgICAgICogUmV0dXJucyAiTk9UX0RJU0NPTk5FQ1RFRCIgaWYgbm90IHlldCBkaXNjb25uZWN0ZWQuCiAgICAgICovCiAgICAgcHVibGljIGFic3RyYWN0IERpc2Nvbm5lY3RDYXVzZSBnZXREaXNjb25uZWN0Q2F1c2UoKTsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgdHJ1ZSBvZiB0aGlzIGNvbm5lY3Rpb24gb3JpZ2luYXRlZCBlbHNld2hlcmUKICAgICAgKiAoIk1UIiBvciBtb2JpbGUgdGVybWluYXRlZDsgYW5vdGhlciBwYXJ0eSBjYWxsZWQgdGhpcyB0ZXJtaW5hbCkKLSAgICAgKiBvciBmYWxzZSBpZiB0aGlzIGNhbGwgb3JpZ2luYXRlZCBoZXJlIChNTyBvciBtb2JpbGUgb3JpZ2luYXRlZCkKKyAgICAgKiBvciBmYWxzZSBpZiB0aGlzIGNhbGwgb3JpZ2luYXRlZCBoZXJlIChNTyBvciBtb2JpbGUgb3JpZ2luYXRlZCkuCiAgICAgICovCiAgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gaXNJbmNvbWluZygpOwogCkBAIC0yNzMsNiArMjc0LDEzIEBACiAgICAgcHVibGljIGFic3RyYWN0IGludCBnZXROdW1iZXJQcmVzZW50YXRpb24oKTsKIAogICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFVzZXIgdG8gVXNlciBTaWduYWxpbmcgKFVVUykgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoCisgICAgICogaW5jb21pbmcgYW5kIHdhaXRpbmcgY2FsbHMKKyAgICAgKiBAcmV0dXJuIFVVU0luZm8gY29udGFpbmluZyB0aGUgVVVTIHVzZXJkYXRhLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBVVVNJbmZvIGdldFVVU0luZm8oKTsKKworICAgIC8qKgogICAgICAqIEJ1aWxkIGEgaHVtYW4gcmVwcmVzZW50YXRpb24gb2YgYSBjb25uZWN0aW9uIGluc3RhbmNlLCBzdWl0YWJsZSBmb3IgZGVidWdnaW5nLgogICAgICAqIERvbid0IGxvZyBwZXJzb25hbCBzdHVmZiB1bmxlc3MgaW4gZGVidWcgbW9kZS4KICAgICAgKiBAcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhpcyBjb25uZWN0aW9uLgpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0RhdGFDb25uZWN0aW9uLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvRGF0YUNvbm5lY3Rpb24uamF2YQppbmRleCAxZjhiYmNmLi42NjM0MDE3IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvRGF0YUNvbm5lY3Rpb24uamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvRGF0YUNvbm5lY3Rpb24uamF2YQpAQCAtMTY0LDcgKzE2NCw3IEBACiAgICAgICAgIE5PTkUsCiAgICAgICAgIE9QRVJBVE9SX0JBUlJFRCwKICAgICAgICAgSU5TVUZGSUNJRU5UX1JFU09VUkNFUywKLSAgICAgICAgTUlTU0lOR19VS05PV05fQVBOLAorICAgICAgICBNSVNTSU5HX1VOS05PV05fQVBOLAogICAgICAgICBVTktOT1dOX1BEUF9BRERSRVNTLAogICAgICAgICBVU0VSX0FVVEhFTlRJQ0FUSU9OLAogICAgICAgICBBQ1RJVkFUSU9OX1JFSkVDVF9HR1NOLApAQCAtMTgxLDcgKzE4MSw3IEBACiAgICAgICAgIFJBRElPX05PVF9BVkFJTEFCTEU7CiAKICAgICAgICAgcHVibGljIGJvb2xlYW4gaXNQZXJtYW5lbnRGYWlsKCkgewotICAgICAgICAgICAgcmV0dXJuICh0aGlzID09IE9QRVJBVE9SX0JBUlJFRCkgfHwgKHRoaXMgPT0gTUlTU0lOR19VS05PV05fQVBOKSB8fAorICAgICAgICAgICAgcmV0dXJuICh0aGlzID09IE9QRVJBVE9SX0JBUlJFRCkgfHwgKHRoaXMgPT0gTUlTU0lOR19VTktOT1dOX0FQTikgfHwKICAgICAgICAgICAgICAgICAgICAodGhpcyA9PSBVTktOT1dOX1BEUF9BRERSRVNTKSB8fCAodGhpcyA9PSBVU0VSX0FVVEhFTlRJQ0FUSU9OKSB8fAogICAgICAgICAgICAgICAgICAgICh0aGlzID09IEFDVElWQVRJT05fUkVKRUNUX0dHU04pIHx8ICh0aGlzID09IEFDVElWQVRJT05fUkVKRUNUX1VOU1BFQ0lGSUVEKSB8fAogICAgICAgICAgICAgICAgICAgICh0aGlzID09IFNFUlZJQ0VfT1BUSU9OX05PVF9TVVBQT1JURUQpIHx8CkBAIC0yMDgsMTIgKzIwOCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiAiT3BlcmF0b3IgQmFycmVkIjsKICAgICAgICAgICAgIGNhc2UgSU5TVUZGSUNJRU5UX1JFU09VUkNFUzoKICAgICAgICAgICAgICAgICByZXR1cm4gIkluc3VmZmljaWVudCBSZXNvdXJjZXMiOwotICAgICAgICAgICAgY2FzZSBNSVNTSU5HX1VLTk9XTl9BUE46CisgICAgICAgICAgICBjYXNlIE1JU1NJTkdfVU5LTk9XTl9BUE46CiAgICAgICAgICAgICAgICAgcmV0dXJuICJNaXNzaW5nIC8gVW5rbm93biBBUE4iOwogICAgICAgICAgICAgY2FzZSBVTktOT1dOX1BEUF9BRERSRVNTOgogICAgICAgICAgICAgICAgIHJldHVybiAiVW5rbm93biBQRFAgQWRkcmVzcyI7CiAgICAgICAgICAgICBjYXNlIFVTRVJfQVVUSEVOVElDQVRJT046Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJFcnJvciBVc2VyIEF1dGVudGljYXRpb24iOworICAgICAgICAgICAgICAgIHJldHVybiAiRXJyb3IgVXNlciBBdXRoZW50aWNhdGlvbiI7CiAgICAgICAgICAgICBjYXNlIEFDVElWQVRJT05fUkVKRUNUX0dHU046CiAgICAgICAgICAgICAgICAgcmV0dXJuICJBY3RpdmF0aW9uIFJlamVjdCBHR1NOIjsKICAgICAgICAgICAgIGNhc2UgQUNUSVZBVElPTl9SRUpFQ1RfVU5TUEVDSUZJRUQ6CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvRHJpdmVyQ2FsbC5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0RyaXZlckNhbGwuamF2YQppbmRleCA2NmY2YjljLi42NjNjMjg0IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvRHJpdmVyQ2FsbC5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Ecml2ZXJDYWxsLmphdmEKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICBwdWJsaWMgaW50IG51bWJlclByZXNlbnRhdGlvbjsKICAgICBwdWJsaWMgU3RyaW5nIG5hbWU7CiAgICAgcHVibGljIGludCBuYW1lUHJlc2VudGF0aW9uOworICAgIHB1YmxpYyBVVVNJbmZvIHV1c0luZm87CiAKICAgICAvKiogcmV0dXJucyBudWxsIG9uIGVycm9yICovCiAgICAgc3RhdGljIERyaXZlckNhbGwKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9JY2NQcm92aWRlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0ljY1Byb3ZpZGVyLmphdmEKaW5kZXggZmE5MTQ1Ny4uMzQ3MWVjMiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0ljY1Byb3ZpZGVyLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0ljY1Byb3ZpZGVyLmphdmEKQEAgLTQxNywxMSArNDE3LDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkodGFnKSkgeworICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkobnVtYmVyKSkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZWZUeXBlID09IEZETiAmJiBUZXh0VXRpbHMuaXNFbXB0eShwaW4yKSkgeworICAgICAgICBpZiAoZWZUeXBlID09IEljY0NvbnN0YW50cy5FRl9GRE4gJiYgVGV4dFV0aWxzLmlzRW1wdHkocGluMikpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lLmphdmEKaW5kZXggNzE3OWJlZi4uMjMzMjVmNiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lLmphdmEKQEAgLTI0MywxNSArMjQzLDE0IEBACiAgICAgLyoqCiAgICAgICogR2V0IHRoZSBjdXJyZW50IERhdGFTdGF0ZS4gTm8gY2hhbmdlIG5vdGlmaWNhdGlvbiBleGlzdHMgYXQgdGhpcwogICAgICAqIGludGVyZmFjZSAtLSB1c2UKLSAgICAgKiB7QGxpbmsgY29tLmFuZHJvaWQudGVsZXBob255LlBob25lU3RhdGVMaXN0ZW5lciBQaG9uZVN0YXRlTGlzdGVuZXJ9Ci0gICAgICogaW5zdGVhZC4KKyAgICAgKiB7QGxpbmsgYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVTdGF0ZUxpc3RlbmVyfSBpbnN0ZWFkLgogICAgICAqLwogICAgIERhdGFTdGF0ZSBnZXREYXRhQ29ubmVjdGlvblN0YXRlKCk7CiAKICAgICAvKioKICAgICAgKiBHZXQgdGhlIGN1cnJlbnQgRGF0YUFjdGl2aXR5U3RhdGUuIE5vIGNoYW5nZSBub3RpZmljYXRpb24gZXhpc3RzIGF0IHRoaXMKICAgICAgKiBpbnRlcmZhY2UgLS0gdXNlCi0gICAgICoge0BsaW5rIFRlbGVwaG9ueU1hbmFnZXJ9IGluc3RlYWQuCisgICAgICoge0BsaW5rIGFuZHJvaWQudGVsZXBob255LlRlbGVwaG9ueU1hbmFnZXJ9IGluc3RlYWQuCiAgICAgICovCiAgICAgRGF0YUFjdGl2aXR5U3RhdGUgZ2V0RGF0YUFjdGl2aXR5U3RhdGUoKTsKIApAQCAtNzg5LDYgKzc4OCwxOSBAQAogICAgIENvbm5lY3Rpb24gZGlhbChTdHJpbmcgZGlhbFN0cmluZykgdGhyb3dzIENhbGxTdGF0ZUV4Y2VwdGlvbjsKIAogICAgIC8qKgorICAgICAqIEluaXRpYXRlIGEgbmV3IHZvaWNlIGNvbm5lY3Rpb24gd2l0aCBzdXBwbGVtZW50YXJ5IFVzZXIgdG8gVXNlcgorICAgICAqIEluZm9ybWF0aW9uLiBUaGlzIGhhcHBlbnMgYXN5bmNocm9ub3VzbHksIHNvIHlvdSBjYW5ub3QgYXNzdW1lIHRoZSBhdWRpbworICAgICAqIHBhdGggaXMgY29ubmVjdGVkIChvciBhIGNhbGwgaW5kZXggaGFzIGJlZW4gYXNzaWduZWQpIHVudGlsCisgICAgICogUGhvbmVTdGF0ZUNoYW5nZWQgbm90aWZpY2F0aW9uIGhhcyBvY2N1cnJlZC4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gQ2FsbFN0YXRlRXhjZXB0aW9uIGlmIGEgbmV3IG91dGdvaW5nIGNhbGwgaXMgbm90IGN1cnJlbnRseQorICAgICAqICAgICAgICAgICAgICAgIHBvc3NpYmxlIGJlY2F1c2Ugbm8gbW9yZSBjYWxsIHNsb3RzIGV4aXN0IG9yIGEgY2FsbCBleGlzdHMKKyAgICAgKiAgICAgICAgICAgICAgICB0aGF0IGlzIGRpYWxpbmcsIGFsZXJ0aW5nLCByaW5naW5nLCBvciB3YWl0aW5nLiBPdGhlcgorICAgICAqICAgICAgICAgICAgICAgIGVycm9ycyBhcmUgaGFuZGxlZCBhc3luY2hyb25vdXNseS4KKyAgICAgKi8KKyAgICBDb25uZWN0aW9uIGRpYWwoU3RyaW5nIGRpYWxTdHJpbmcsIFVVU0luZm8gdXVzSW5mbykgdGhyb3dzIENhbGxTdGF0ZUV4Y2VwdGlvbjsKKworICAgIC8qKgogICAgICAqIEhhbmRsZXMgUElOIE1NSSBjb21tYW5kcyAoUElOL1BJTjIvUFVLL1BVSzIpLCB3aGljaCBhcmUgaW5pdGlhdGVkCiAgICAgICogd2l0aG91dCBTRU5EIChzbyA8Y29kZT5kaWFsPC9jb2RlPiBpcyBub3QgYXBwcm9wcmlhdGUpLgogICAgICAqCkBAIC04NDAsNyArODUyLDcgQEAKICAgICAgKiBAcGFyYW0gZHRtZlN0cmluZyBpcyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkaWFsaW5nIGRpZ2l0KHMpIGluIHRoZSBhY3RpdmUgY2FsbAogICAgICAqIEBwYXJhbSBvbiB0aGUgRFRNRiBPTiBsZW5ndGggaW4gbWlsbGlzZWNvbmRzLCBvciAwIGZvciBkZWZhdWx0CiAgICAgICogQHBhcmFtIG9mZiB0aGUgRFRNRiBPRkYgbGVuZ3RoIGluIG1pbGxpc2Vjb25kcywgb3IgMCBmb3IgZGVmYXVsdAotICAgICAqIEBwYXJhbSBvbkNvbXBlbHRlIGlzIHRoZSBjYWxsYmFjayBtZXNzYWdlIHdoZW4gdGhlIGFjdGlvbiBpcyBwcm9jZXNzZWQgYnkgQlAKKyAgICAgKiBAcGFyYW0gb25Db21wbGV0ZSBpcyB0aGUgY2FsbGJhY2sgbWVzc2FnZSB3aGVuIHRoZSBhY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IEJQCiAgICAgICoKICAgICAgKi8KICAgICB2b2lkIHNlbmRCdXJzdER0bWYoU3RyaW5nIGR0bWZTdHJpbmcsIGludCBvbiwgaW50IG9mZiwgTWVzc2FnZSBvbkNvbXBsZXRlKTsKQEAgLTk4MCw3ICs5OTIsNyBAQAogICAgICAqICgoQXN5bmNSZXN1bHQpb25Db21wbGV0ZS5vYmopIGlzIGFuIGFycmF5IG9mIGludCwgd2l0aCBhIGxlbmd0aCBvZiAyLgogICAgICAqCiAgICAgICogQHBhcmFtIG9uQ29tcGxldGUgYSBjYWxsYmFjayBtZXNzYWdlIHdoZW4gdGhlIGFjdGlvbiBpcyBjb21wbGV0ZWQuCi0gICAgICogICAgICAgIEBzZWUgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkNvbW1hbmRzSW50ZXJmYWNlLmdldENMSVIgZm9yIGRldGFpbHMuCisgICAgICogICAgICAgIEBzZWUgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkNvbW1hbmRzSW50ZXJmYWNlI2dldENMSVIgZm9yIGRldGFpbHMuCiAgICAgICovCiAgICAgdm9pZCBnZXRPdXRnb2luZ0NhbGxlcklkRGlzcGxheShNZXNzYWdlIG9uQ29tcGxldGUpOwogCkBAIC0xMDAyLDcgKzEwMTQsNyBAQAogICAgICAqICgoQXN5bmNSZXN1bHQpb25Db21wbGV0ZS5vYmopIGlzIGFuIGFycmF5IG9mIGludCwgd2l0aCBhIGxlbmd0aCBvZiAxLgogICAgICAqCiAgICAgICogQHBhcmFtIG9uQ29tcGxldGUgYSBjYWxsYmFjayBtZXNzYWdlIHdoZW4gdGhlIGFjdGlvbiBpcyBjb21wbGV0ZWQuCi0gICAgICogICAgICAgIEBzZWUgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkNvbW1hbmRzSW50ZXJmYWNlLnF1ZXJ5Q2FsbFdhaXRpbmcgZm9yIGRldGFpbHMuCisgICAgICogICAgICAgIEBzZWUgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkNvbW1hbmRzSW50ZXJmYWNlI3F1ZXJ5Q2FsbFdhaXRpbmcgZm9yIGRldGFpbHMuCiAgICAgICovCiAgICAgdm9pZCBnZXRDYWxsV2FpdGluZyhNZXNzYWdlIG9uQ29tcGxldGUpOwogCkBAIC0xNDQ1LDcgKzE0NTcsNyBAQAogICAgICAqIHNldFRUWU1vZGUKICAgICAgKiBzZXRzIGEgVFRZIG1vZGUgb3B0aW9uLgogICAgICAqCi0gICAgICogQHBhcmFtIGVuYWJsZSBpcyBhIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSB0aGF0IHlvdSBhcmUKKyAgICAgKiBAcGFyYW0gdHR5TW9kZSBpcyBhIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSB0aGF0IHlvdSBhcmUKICAgICAgKiAgICAgICAgcmVxdWVzdGluZywgdHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2UgZm9yIGRpc2FibGVkLgogICAgICAqIEBwYXJhbSBvbkNvbXBsZXRlIGEgY2FsbGJhY2sgbWVzc2FnZSB3aGVuIHRoZSBhY3Rpb24gaXMgY29tcGxldGVkCiAgICAgICovCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVCYXNlLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVCYXNlLmphdmEKaW5kZXggYThmNDE0My4uNzQ2MDFlNiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lQmFzZS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZUJhc2UuamF2YQpAQCAtNTQzLDcgKzU0Myw3IEBACiAgICAgcHJpdmF0ZSB2b2lkIHNldFByb3BlcnRpZXNCeUNhcnJpZXIoKSB7CiAgICAgICAgIFN0cmluZyBjYXJyaWVyID0gU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLmNhcnJpZXIiKTsKIAotICAgICAgICBpZiAobnVsbCA9PSBjYXJyaWVyIHx8IDAgPT0gY2Fycmllci5sZW5ndGgoKSkgeworICAgICAgICBpZiAobnVsbCA9PSBjYXJyaWVyIHx8IDAgPT0gY2Fycmllci5sZW5ndGgoKSB8fCAidW5rbm93biIuZXF1YWxzKGNhcnJpZXIpKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lRmFjdG9yeS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lRmFjdG9yeS5qYXZhCmluZGV4IGNkNzI3NTIuLjgwM2I3MzYgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZUZhY3RvcnkuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVGYWN0b3J5LmphdmEKQEAgLTEwOSwxMyArMTA5LDEzIEBACiAKICAgICAgICAgICAgICAgICBpbnQgcGhvbmVUeXBlID0gZ2V0UGhvbmVUeXBlKG5ldHdvcmtNb2RlKTsKICAgICAgICAgICAgICAgICBpZiAocGhvbmVUeXBlID09IFBob25lLlBIT05FX1RZUEVfR1NNKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5pKExPR19UQUcsICJDcmVhdGluZyBHU01QaG9uZSIpOwogICAgICAgICAgICAgICAgICAgICBzUHJveHlQaG9uZSA9IG5ldyBQaG9uZVByb3h5KG5ldyBHU01QaG9uZShjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNDb21tYW5kc0ludGVyZmFjZSwgc1Bob25lTm90aWZpZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmkoTE9HX1RBRywgIkNyZWF0aW5nIEdTTVBob25lIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwaG9uZVR5cGUgPT0gUGhvbmUuUEhPTkVfVFlQRV9DRE1BKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5pKExPR19UQUcsICJDcmVhdGluZyBDRE1BUGhvbmUiKTsKICAgICAgICAgICAgICAgICAgICAgc1Byb3h5UGhvbmUgPSBuZXcgUGhvbmVQcm94eShuZXcgQ0RNQVBob25lKGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc0NvbW1hbmRzSW50ZXJmYWNlLCBzUGhvbmVOb3RpZmllcikpOwotICAgICAgICAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAiQ3JlYXRpbmcgQ0RNQVBob25lIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgc01hZGVEZWZhdWx0cyA9IHRydWU7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVQcm94eS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lUHJveHkuamF2YQppbmRleCA2ZDM3OThlLi5lMTUxMWU2IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVQcm94eS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZVByb3h5LmphdmEKQEAgLTQyMyw2ICs0MjMsMTAgQEAKICAgICAgICAgcmV0dXJuIG1BY3RpdmVQaG9uZS5kaWFsKGRpYWxTdHJpbmcpOwogICAgIH0KIAorICAgIHB1YmxpYyBDb25uZWN0aW9uIGRpYWwoU3RyaW5nIGRpYWxTdHJpbmcsIFVVU0luZm8gdXVzSW5mbykgdGhyb3dzIENhbGxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBtQWN0aXZlUGhvbmUuZGlhbChkaWFsU3RyaW5nLCB1dXNJbmZvKTsKKyAgICB9CisKICAgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVQaW5NbWkoU3RyaW5nIGRpYWxTdHJpbmcpIHsKICAgICAgICAgcmV0dXJuIG1BY3RpdmVQaG9uZS5oYW5kbGVQaW5NbWkoZGlhbFN0cmluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lU3ViSW5mby5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lU3ViSW5mby5qYXZhCmluZGV4IDFhYzJkYTMuLjRmNzFiYjEgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZVN1YkluZm8uamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVTdWJJbmZvLmphdmEKQEAgLTY1LDcgKzY1LDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBSZXRyaWV2ZXMgdGhlIHVuaXF1ZSBzYnVzY3JpYmVyIElELCBlLmcuLCBJTVNJIGZvciBHU00gcGhvbmVzLgorICAgICAqIFJldHJpZXZlcyB0aGUgdW5pcXVlIHN1YnNjcmliZXIgSUQsIGUuZy4sIElNU0kgZm9yIEdTTSBwaG9uZXMuCiAgICAgICovCiAgICAgcHVibGljIFN0cmluZyBnZXRTdWJzY3JpYmVySWQoKSB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbihSRUFEX1BIT05FX1NUQVRFLCAiUmVxdWlyZXMgUkVBRF9QSE9ORV9TVEFURSIpOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lU3ViSW5mb1Byb3h5LmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVTdWJJbmZvUHJveHkuamF2YQppbmRleCBhZGZiZTIwLi4yMDJkZWQyIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVTdWJJbmZvUHJveHkuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVTdWJJbmZvUHJveHkuamF2YQpAQCAtNDcsNyArNDcsNyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIFJldHJpZXZlcyB0aGUgdW5pcXVlIHNidXNjcmliZXIgSUQsIGUuZy4sIElNU0kgZm9yIEdTTSBwaG9uZXMuCisgICAgICogUmV0cmlldmVzIHRoZSB1bmlxdWUgc3Vic2NyaWJlciBJRCwgZS5nLiwgSU1TSSBmb3IgR1NNIHBob25lcy4KICAgICAgKi8KICAgICBwdWJsaWMgU3RyaW5nIGdldFN1YnNjcmliZXJJZCgpIHsKICAgICAgICAgcmV0dXJuIG1QaG9uZVN1YkluZm8uZ2V0U3Vic2NyaWJlcklkKCk7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUklMLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUklMLmphdmEKaW5kZXggZDhlMzEzYTcuLjNkNDEwZmQgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9SSUwuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUklMLmphdmEKQEAgLTc5NiwxMiArNzk2LDI2IEBACiAKICAgICBwdWJsaWMgdm9pZAogICAgIGRpYWwgKFN0cmluZyBhZGRyZXNzLCBpbnQgY2xpck1vZGUsIE1lc3NhZ2UgcmVzdWx0KSB7CisgICAgICAgIGRpYWwoYWRkcmVzcywgY2xpck1vZGUsIG51bGwsIHJlc3VsdCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQKKyAgICBkaWFsKFN0cmluZyBhZGRyZXNzLCBpbnQgY2xpck1vZGUsIFVVU0luZm8gdXVzSW5mbywgTWVzc2FnZSByZXN1bHQpIHsKICAgICAgICAgUklMUmVxdWVzdCByciA9IFJJTFJlcXVlc3Qub2J0YWluKFJJTF9SRVFVRVNUX0RJQUwsIHJlc3VsdCk7CiAKICAgICAgICAgcnIubXAud3JpdGVTdHJpbmcoYWRkcmVzcyk7CiAgICAgICAgIHJyLm1wLndyaXRlSW50KGNsaXJNb2RlKTsKICAgICAgICAgcnIubXAud3JpdGVJbnQoMCk7IC8vIFVVUyBpbmZvcm1hdGlvbiBpcyBhYnNlbnQKIAorICAgICAgICBpZiAodXVzSW5mbyA9PSBudWxsKSB7CisgICAgICAgICAgICByci5tcC53cml0ZUludCgwKTsgLy8gVVVTIGluZm9ybWF0aW9uIGlzIGFic2VudAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcnIubXAud3JpdGVJbnQoMSk7IC8vIFVVUyBpbmZvcm1hdGlvbiBpcyBwcmVzZW50CisgICAgICAgICAgICByci5tcC53cml0ZUludCh1dXNJbmZvLmdldFR5cGUoKSk7CisgICAgICAgICAgICByci5tcC53cml0ZUludCh1dXNJbmZvLmdldERjcygpKTsKKyAgICAgICAgICAgIHJyLm1wLndyaXRlQnl0ZUFycmF5KHV1c0luZm8uZ2V0VXNlckRhdGEoKSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoUklMSl9MT0dEKSByaWxqTG9nKHJyLnNlcmlhbFN0cmluZygpICsgIj4gIiArIHJlcXVlc3RUb1N0cmluZyhyci5tUmVxdWVzdCkpOwogCiAgICAgICAgIHNlbmQocnIpOwpAQCAtMjgzNywxMCArMjg1MSwyMSBAQAogICAgICAgICAgICAgZGMubmFtZVByZXNlbnRhdGlvbiA9IHAucmVhZEludCgpOwogICAgICAgICAgICAgaW50IHV1c0luZm9QcmVzZW50ID0gcC5yZWFkSW50KCk7CiAgICAgICAgICAgICBpZiAodXVzSW5mb1ByZXNlbnQgPT0gMSkgewotICAgICAgICAgICAgICAgIC8vIFRPRE86IENvcHkgdGhlIGRhdGEgdG8gZGMgdG8gZm9yd2FyZCB0byB0aGUgYXBwcy4KLSAgICAgICAgICAgICAgICBwLnJlYWRJbnQoKTsKLSAgICAgICAgICAgICAgICBwLnJlYWRJbnQoKTsKLSAgICAgICAgICAgICAgICBwLmNyZWF0ZUJ5dGVBcnJheSgpOworICAgICAgICAgICAgICAgIGRjLnV1c0luZm8gPSBuZXcgVVVTSW5mbygpOworICAgICAgICAgICAgICAgIGRjLnV1c0luZm8uc2V0VHlwZShwLnJlYWRJbnQoKSk7CisgICAgICAgICAgICAgICAgZGMudXVzSW5mby5zZXREY3MocC5yZWFkSW50KCkpOworICAgICAgICAgICAgICAgIGJ5dGVbXSB1c2VyRGF0YSA9IHAuY3JlYXRlQnl0ZUFycmF5KCk7CisgICAgICAgICAgICAgICAgZGMudXVzSW5mby5zZXRVc2VyRGF0YSh1c2VyRGF0YSk7CisgICAgICAgICAgICAgICAgTG9nCisgICAgICAgICAgICAgICAgICAgICAgICAudihMT0dfVEFHLCBTdHJpbmcuZm9ybWF0KCJJbmNvbWluZyBVVVMgOiB0eXBlPSVkLCBkY3M9JWQsIGxlbmd0aD0lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjLnV1c0luZm8uZ2V0VHlwZSgpLCBkYy51dXNJbmZvLmdldERjcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYy51dXNJbmZvLmdldFVzZXJEYXRhKCkubGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgTG9nLnYoTE9HX1RBRywgIkluY29taW5nIFVVUyA6IGRhdGEgKHN0cmluZyk9IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBuZXcgU3RyaW5nKGRjLnV1c0luZm8uZ2V0VXNlckRhdGEoKSkpOworICAgICAgICAgICAgICAgIExvZy52KExPR19UQUcsICJJbmNvbWluZyBVVVMgOiBkYXRhIChoZXgpOiAiCisgICAgICAgICAgICAgICAgICAgICAgICArIEljY1V0aWxzLmJ5dGVzVG9IZXhTdHJpbmcoZGMudXVzSW5mby5nZXRVc2VyRGF0YSgpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIExvZy52KExPR19UQUcsICJJbmNvbWluZyBVVVMgOiBOT1QgcHJlc2VudCEiKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBsZWFkaW5nICsgb24gYWRkcmVzc2VzIHdpdGggYSBUT0Egb2YgMTQ1CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUklMQ29uc3RhbnRzLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUklMQ29uc3RhbnRzLmphdmEKaW5kZXggMDFmNGFiMi4uNzFhODBlMCAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1JJTENvbnN0YW50cy5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9SSUxDb25zdGFudHMuamF2YQpAQCAtNDUsNiArNDUsMTEgQEAKICAgICBpbnQgT1BfTk9UX0FMTE9XRURfQkVGT1JFX1JFR19OVyA9IDk7ICAgICAvKiByZXF1ZXN0IGlzIG5vdCBhbGxvd2VkIGJlZm9yZSBkZXZpY2UgcmVnaXN0ZXJzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yayAqLwogICAgIGludCBTTVNfU0VORF9GQUlMX1JFVFJZID0gMTA7ICAgICAgICAgICAgIC8qIHNlbmQgc21zIGZhaWwgYW5kIG5lZWQgcmV0cnkgKi8KKyAgICBpbnQgU0lNX0FCU0VOVCA9IDExOyAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0MgY2FyZCBpcyBhYnNlbnQgKi8KKyAgICBpbnQgU1VCU0NSSVBUSU9OX05PVF9BVkFJTEFCTEUgPSAxMjsgICAgICAvKiBmYWlsIHRvIGZpbmQgQ0RNQSBzdWJzY3JpcHRpb24gZnJvbSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiAqLworICAgIGludCBNT0RFX05PVF9TVVBQT1JURUQgPSAxMzsgICAgICAgICAgICAgIC8qIEhXIGRvZXMgbm90IHN1cHBvcnQgcHJlZmVycmVkIG5ldHdvcmsgdHlwZSAqLworICAgIGludCBGRE5fQ0hFQ0tfRkFJTFVSRSA9IDE0OyAgICAgICAgICAgICAgIC8qIHNlbmQgb3BlcmF0aW9uIGJhcnJlZCBlcnJvciB3aGVuIEZETiBpcyBlbmFibGVkICovCiAgICAgaW50IElMTEVHQUxfU0lNX09SX01FID0gMTU7ICAgICAgICAgICAgICAgLyogbmV0d29yayBzZWxlY3Rpb24gZmFpbHVyZSBkdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB3cm9uZyBTSU0vTUUgYW5kIG5vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cmllcyBuZWVkZWQgKi8KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9SZXRyeU1hbmFnZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9SZXRyeU1hbmFnZXIuamF2YQppbmRleCA3NzlmMzU4Li5iMTA0OWEyIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUmV0cnlNYW5hZ2VyLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1JldHJ5TWFuYWdlci5qYXZhCkBAIC0yNSw3ICsyNSw3IEBACiAKIC8qKgogICogUmV0cnkgbWFuYWdlciBhbGxvd3MgYSBzaW1wbGUgd2F5IHRvIGRlY2xhcmUgYSBzZXJpZXMgb2YKLSAqIHJldGlyZXMgdGltZW91dHMuIEFmdGVyIGNyZWF0aW5nIGEgUmV0cnlNYW5hZ2VyIHRoZSBjb25maWd1cmUKKyAqIHJldHJ5IHRpbWVvdXRzLiBBZnRlciBjcmVhdGluZyBhIFJldHJ5TWFuYWdlciB0aGUgY29uZmlndXJlCiAgKiBtZXRob2QgaXMgdXNlZCB0byBkZWZpbmUgdGhlIHNlcXVlbmNlLiBBIHNpbXBsZSBsaW5lYXIgc2VyaWVzCiAgKiBtYXkgYmUgaW5pdGlhbGl6ZWQgdXNpbmcgY29uZmlndXJlIHdpdGggdGhyZWUgaW50ZWdlciBwYXJhbWV0ZXJzCiAgKiBUaGUgb3RoZXIgY29uZmlndXJlIG1ldGhvZCBhbGxvd3MgYSBzZXJpZXMgdG8gYmUgZGVjbGFyZWQgdXNpbmcKQEAgLTU0LDE4ICs1NCwxOCBAQAogICo8cD4KICAqIEV4YW1wbGVzOgogICogPHVsPgotICogPGxpPjMgcmV0aXJlcyB3aXRoIG5vIHJhbmRvbWl6YXRpb24gdmFsdWUgd2hpY2ggbWVhbnMgaXRzIDA6CisgKiA8bGk+MyByZXRyaWVzIHdpdGggbm8gcmFuZG9taXphdGlvbiB2YWx1ZSB3aGljaCBtZWFucyBpdHMgMDoKICAqIDx1bD48bGk+PGNvZGU+IjEwMDAsIDIwMDAsIDMwMDAiPC9jb2RlPjwvdWw+CiAgKgotICogPGxpPjEwIHJldGlyZXMgd2l0aCBhIDUwMCBkZWZhdWx0IHJhbmRvbWl6YXRpb24gdmFsdWUgZm9yIGVhY2ggYW5kCisgKiA8bGk+MTAgcmV0cmllcyB3aXRoIGEgNTAwIGRlZmF1bHQgcmFuZG9taXphdGlvbiB2YWx1ZSBmb3IgZWFjaCBhbmQKICAqIHRoZSA0Li4xMCByZXRyaWVzIGFsbCB1c2luZyAzMDAwIGFzIHRoZSBkZWxheToKICAqIDx1bD48bGk+PGNvZGU+Im1heF9yZXRyaWVzPTEwLCBkZWZhdWx0X3JhbmRvbWl6YXRpb249NTAwLCAxMDAwLCAyMDAwLCAzMDAwIjwvY29kZT48L3VsPgogICoKLSAqIDxsaT40IHJldGlyZXMgd2l0aCBhIDEwMCBhcyB0aGUgZGVmYXVsdCByYW5kb21pemF0aW9uIHZhbHVlIGZvciB0aGUgZmlyc3QgMiB2YWx1ZXMgYW5kCisgKiA8bGk+NCByZXRyaWVzIHdpdGggYSAxMDAgYXMgdGhlIGRlZmF1bHQgcmFuZG9taXphdGlvbiB2YWx1ZSBmb3IgdGhlIGZpcnN0IDIgdmFsdWVzIGFuZAogICogdGhlIG90aGVyIHR3byBoYXZpbmcgc3BlY2lmaWVkIHZhbHVlcyBvZiA1MDA6CiAgKiA8dWw+PGxpPjxjb2RlPiJkZWZhdWx0X3JhbmRvbWl6YXRpb249MTAwLCAxMDAwLCAyMDAwLCA0MDAwOjUwMCwgNTAwMDo1MDAiPC9jb2RlPjwvdWw+CiAgKgotICogPGxpPkluZmluaXRlIG51bWJlciBvZiByZXRpcmVzIHdpdGggdGhlIGZpcnN0IG9uZSBhdCAxMDAwLCB0aGUgc2Vjb25kIGF0IDIwMDAgYWxsCisgKiA8bGk+SW5maW5pdGUgbnVtYmVyIG9mIHJldHJpZXMgd2l0aCB0aGUgZmlyc3Qgb25lIGF0IDEwMDAsIHRoZSBzZWNvbmQgYXQgMjAwMCBhbGwKICAqIG90aGVycyB3aWxsIGJlIGF0IDMwMDAuCiAgKiA8dWw+PGxpPjxjb2RlPiJtYXhfcmV0cmllcz1pbmZpbml0ZSwxMDAwLDIwMDAsMzAwMDwvY29kZT48L3VsPgogICogPC91bD4KQEAgLTc1LDkgKzc1LDYgQEAKIHB1YmxpYyBjbGFzcyBSZXRyeU1hbmFnZXIgewogICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgU3RyaW5nIExPR19UQUcgPSAiUmV0cnlNYW5hZ2VyIjsKICAgICBzdGF0aWMgcHVibGljIGZpbmFsIGJvb2xlYW4gREJHID0gZmFsc2U7Ci0gICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgUkVUUllJRVNfTk9UX1NUQVJURUQgPSAwOwotICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgaW50IFJFVFJZSUVTX09OX0dPSU5HID0gMTsKLSAgICBzdGF0aWMgcHVibGljIGZpbmFsIGludCBSRVRSWUlFU19DT01QTEVURUQgPSAyOwogCiAgICAgLyoqCiAgICAgICogUmV0cnkgcmVjb3JkIHdpdGggdGltZXMgaW4gbWlsbGktc2Vjb25kcwpAQCAtMTA0LDcgKzEwMSw3IEBACiAgICAgICovCiAgICAgcHJpdmF0ZSBpbnQgbU1heFJldHJ5Q291bnQ7CiAKLSAgICAvKiogVGhlIGN1cnJlbnQgbnVtYmVyIG9mIHJldGlyZXMgKi8KKyAgICAvKiogVGhlIGN1cnJlbnQgbnVtYmVyIG9mIHJldHJpZXMgKi8KICAgICBwcml2YXRlIGludCBtUmV0cnlDb3VudDsKIAogICAgIC8qKiBSYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqLwpAQCAtMTI1LDcgKzEyMiw3IEBACiAgICAgICogQHBhcmFtIHJhbmRvbWl6YXRpb25UaW1lIGEgcmFuZG9tIHZhbHVlIGJldHdlZW4gMCBhbmQKICAgICAgKiAgICAgICAgcmFuZG9taXphdGlvblRpbWUgd2lsbCBiZSBhZGRlZCB0byByZXRyeVRpbWUuIHRoaXMKICAgICAgKiAgICAgICAgcGFyYW1ldGVyIG1heSBiZSAwLgotICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsbAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsCiAgICAgICovCiAgICAgcHVibGljIGJvb2xlYW4gY29uZmlndXJlKGludCBtYXhSZXRyeUNvdW50LCBpbnQgcmV0cnlUaW1lLCBpbnQgcmFuZG9taXphdGlvblRpbWUpIHsKICAgICAgICAgUGFpcjxCb29sZWFuLCBJbnRlZ2VyPiB2YWx1ZTsKQEAgLTI0Miw3ICsyMzksNyBAQAogICAgIC8qKgogICAgICAqIFJlcG9ydCB3aGV0aGVyIGRhdGEgcmVjb25uZWN0aW9uIHNob3VsZCBiZSByZXRyaWVkCiAgICAgICoKLSAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiB0aGUgbWF4IHJldGlyZXMgaGFzIG5vdCBiZWVuIHJlYWNoZWQuIHtAY29kZQorICAgICAqIEByZXR1cm4ge0Bjb2RlIHRydWV9IGlmIHRoZSBtYXggcmV0cmllcyBoYXMgbm90IGJlZW4gcmVhY2hlZC4ge0Bjb2RlCiAgICAgICogICAgICAgICBmYWxzZX0gb3RoZXJ3aXNlLgogICAgICAqLwogICAgIHB1YmxpYyBib29sZWFuIGlzUmV0cnlOZWVkZWQoKSB7CkBAIC0yODksNyArMjg2LDcgQEAKICAgICAgICAgaWYgKG1SZXRyeUNvdW50ID4gbU1heFJldHJ5Q291bnQpIHsKICAgICAgICAgICAgIG1SZXRyeUNvdW50ID0gbU1heFJldHJ5Q291bnQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKERCRykgbG9nKCJpbmNyZXNlUmV0cnlDb3VudDogIiArIG1SZXRyeUNvdW50KTsKKyAgICAgICAgaWYgKERCRykgbG9nKCJpbmNyZWFzZVJldHJ5Q291bnQ6ICIgKyBtUmV0cnlDb3VudCk7CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvU01TRGlzcGF0Y2hlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1NNU0Rpc3BhdGNoZXIuamF2YQppbmRleCA3NjRkMTJlLi5jYTUyNmE1IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvU01TRGlzcGF0Y2hlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9TTVNEaXNwYXRjaGVyLmphdmEKQEAgLTYyLDYgKzYyLDcgQEAKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC50ZWxlcGhvbnkuU21zTWFuYWdlci5SRVNVTFRfRVJST1JfTlVMTF9QRFU7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudGVsZXBob255LlNtc01hbmFnZXIuUkVTVUxUX0VSUk9SX1JBRElPX09GRjsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC50ZWxlcGhvbnkuU21zTWFuYWdlci5SRVNVTFRfRVJST1JfTElNSVRfRVhDRUVERUQ7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudGVsZXBob255LlNtc01hbmFnZXIuUkVTVUxUX0VSUk9SX0ZETl9DSEVDS19GQUlMVVJFOwogCiAKIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBTTVNEaXNwYXRjaGVyIGV4dGVuZHMgSGFuZGxlciB7CkBAIC00OTksMTMgKzUwMCwyMCBAQAogICAgICAgICAgICAgICAgIE1lc3NhZ2UgcmV0cnlNc2cgPSBvYnRhaW5NZXNzYWdlKEVWRU5UX1NFTkRfUkVUUlksIHRyYWNrZXIpOwogICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlRGVsYXllZChyZXRyeU1zZywgU0VORF9SRVRSWV9ERUxBWSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHRyYWNrZXIubVNlbnRJbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGludCBlcnJvciA9IFJFU1VMVF9FUlJPUl9HRU5FUklDX0ZBSUxVUkU7CisKKyAgICAgICAgICAgICAgICBpZiAoKChDb21tYW5kRXhjZXB0aW9uKShhci5leGNlcHRpb24pKS5nZXRDb21tYW5kRXJyb3IoKQorICAgICAgICAgICAgICAgICAgICAgICAgPT0gQ29tbWFuZEV4Y2VwdGlvbi5FcnJvci5GRE5fQ0hFQ0tfRkFJTFVSRSkgeworICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFJFU1VMVF9FUlJPUl9GRE5fQ0hFQ0tfRkFJTFVSRTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gRG9uZSByZXRyeWluZzsgcmV0dXJuIGFuIGVycm9yIHRvIHRoZSBhcHAuCiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgSW50ZW50IGZpbGxJbiA9IG5ldyBJbnRlbnQoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGFyLnJlc3VsdCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsSW4ucHV0RXh0cmEoImVycm9yQ29kZSIsICgoU21zUmVzcG9uc2UpYXIucmVzdWx0KS5lcnJvckNvZGUpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRyYWNrZXIubVNlbnRJbnRlbnQuc2VuZChtQ29udGV4dCwgUkVTVUxUX0VSUk9SX0dFTkVSSUNfRkFJTFVSRSwgZmlsbEluKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tlci5tU2VudEludGVudC5zZW5kKG1Db250ZXh0LCBlcnJvciwgZmlsbEluKTsKKwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKENhbmNlbGVkRXhjZXB0aW9uIGV4KSB7fQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvU2VydmljZVN0YXRlVHJhY2tlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1NlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YQppbmRleCA3MzgzNjQ5Li5lOGJiZTVlIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvU2VydmljZVN0YXRlVHJhY2tlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9TZXJ2aWNlU3RhdGVUcmFja2VyLmphdmEKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBEQVRBX0FDQ0VTU19IU0RQQSA9IDk7CiAgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9BQ0NFU1NfSFNVUEEgPSAxMDsKICAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBEQVRBX0FDQ0VTU19IU1BBID0gMTE7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9BQ0NFU1NfQ0RNQV9FdkRvX0IgPSAxMjsKIAogICAgIHByb3RlY3RlZCBDb21tYW5kc0ludGVyZmFjZSBjbTsKIApAQCAtMjA2LDggKzIwNyw4IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogUmVyZWdpc3RlciBuZXR3b3JrIHRocm91Z2ggdG9nZ2xlIHBlcmZlcnJlZCBuZXR3b3JrIHR5cGUKLSAgICAgKiBUaGlzIGlzIGEgd29yayBhb3J1bmQgdG8gZGVyZWdpc3RlciBhbmQgcmVnaXN0ZXIgbmV0d29yayBzaW5jZSB0aGVyZSBpcworICAgICAqIFJlLXJlZ2lzdGVyIG5ldHdvcmsgYnkgdG9nZ2xpbmcgcHJlZmVycmVkIG5ldHdvcmsgdHlwZS4KKyAgICAgKiBUaGlzIGlzIGEgd29yay1hcm91bmQgdG8gZGVyZWdpc3RlciBhbmQgcmVnaXN0ZXIgbmV0d29yayBzaW5jZSB0aGVyZSBpcwogICAgICAqIG5vIHJpbCBhcGkgdG8gc2V0IENPUFM9MiAoZGVyZWdpc3Rlcikgb25seS4KICAgICAgKgogICAgICAqIEBwYXJhbSBvbkNvbXBsZXRlIGlzIGRpc3BhdGNoZWQgd2hlbiB0aGlzIGlzIGNvbXBsZXRlLiAgaXQgd2lsbCBiZQpAQCAtMjI5LDcgKzIzMCw3IEBACiAgICAgLyoqCiAgICAgICogVGhlc2UgdHdvIGZsYWdzIG1hbmFnZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGNlbGwgbG9jayAtLSB0aGUKICAgICAgKiBsb2NrIHNob3VsZCBiZSBoZWxkIGlmIGVpdGhlciBmbGFnIGlzIHRydWUuICBUaGUgaW50ZW50aW9uIGlzCi0gICAgICogdG8gYWxsb3cgdGVtcG9yYXJ5IGFxdWlzaXRpb24gb2YgdGhlIGxvY2sgdG8gZ2V0IGEgc2luZ2xlCisgICAgICogdG8gYWxsb3cgdGVtcG9yYXJ5IGFjcXVpc2l0aW9uIG9mIHRoZSBsb2NrIHRvIGdldCBhIHNpbmdsZQogICAgICAqIHVwZGF0ZS4gIFN1Y2ggYSBsb2NrIGdyYWIgYW5kIHJlbGVhc2UgY2FuIHRodXMgYmUgbWFkZSB0byBub3QKICAgICAgKiBpbnRlcmZlcmUgd2l0aCBtb3JlIHBlcm1hbmVudCBsb2NrIGhvbGRzIC0tIGluIG90aGVyIHdvcmRzLCB0aGUKICAgICAgKiBsb2NrIHdpbGwgb25seSBiZSByZWxlYXNlZCBpZiBib3RoIGZsYWdzIGFyZSBmYWxzZSwgYW5kIHNvCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvVVVTSW5mby5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1VVU0luZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDFiODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1VVU0luZm8uamF2YQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255OworCitwdWJsaWMgY2xhc3MgVVVTSW5mbyB7CisKKyAgICAvKgorICAgICAqIFVzZXItdG8tVXNlciBzaWduYWxpbmcgSW5mbyBhY3RpdmF0aW9uIHR5cGVzIGRlcml2ZWQgZnJvbSAzR1BQIDIzLjA4NworICAgICAqIHY4LjAKKyAgICAgKi8KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVVU19UWVBFMV9JTVBMSUNJVCA9IDA7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVVVNfVFlQRTFfUkVRVUlSRUQgPSAxOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX1RZUEUxX05PVF9SRVFVSVJFRCA9IDI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVVVNfVFlQRTJfUkVRVUlSRUQgPSAzOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX1RZUEUyX05PVF9SRVFVSVJFRCA9IDQ7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVVVNfVFlQRTNfUkVRVUlSRUQgPSA1OworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX1RZUEUzX05PVF9SRVFVSVJFRCA9IDY7CisKKyAgICAvKgorICAgICAqIFVzZXItdG8tVXNlciBTaWduYWxpbmcgSW5mb3JtYXRpb24gZGF0YSBjb2Rpbmcgc2NoZW1lcy4gUG9zc2libGUgdmFsdWVzCisgICAgICogZm9yIE9jdGV0IDMgKFByb3RvY29sIERpc2NyaW1pbmF0b3IgZmllbGQpIGluIHRoZSBVVUlFLiBUaGUgdmFsdWVzIGhhdmUKKyAgICAgKiBiZWVuIHNwZWNpZmllZCBpbiBzZWN0aW9uIDEwLjUuNC4yNSBvZiAzR1BQIFRTIDI0LjAwOAorICAgICAqLworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX0RDU19VU1AgPSAwOyAvKiBVc2VyIHNwZWNpZmllZCBwcm90b2NvbCAqLworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX0RDU19PU0lITFAgPSAxOyAvKiBPU0kgaGlnaGVyIGxheWVyIHByb3RvY29sICovCisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVVVNfRENTX1gyNDQgPSAyOyAvKiBYLjI0NCAqLworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX0RDU19STUNGID0gMzsgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBSZXNlcnZlZCBmb3Igc3lzdGVtIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjb252ZXJnZW5jZSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX0RDU19JQTVjID0gNDsgLyogSUE1IGNoYXJhY3RlcnMgKi8KKworICAgIHByaXZhdGUgaW50IHV1c1R5cGU7CisKKyAgICBwcml2YXRlIGludCB1dXNEY3M7CisKKyAgICBwcml2YXRlIGJ5dGVbXSB1dXNEYXRhOworCisgICAgcHVibGljIFVVU0luZm8oKSB7CisgICAgICAgIHRoaXMudXVzVHlwZSA9IFVVU19UWVBFMV9JTVBMSUNJVDsKKyAgICAgICAgdGhpcy51dXNEY3MgPSBVVVNfRENTX0lBNWM7CisgICAgICAgIHRoaXMudXVzRGF0YSA9IG51bGw7CisgICAgfQorCisgICAgcHVibGljIFVVU0luZm8oaW50IHV1c1R5cGUsIGludCB1dXNEY3MsIGJ5dGVbXSB1dXNEYXRhKSB7CisgICAgICAgIHRoaXMudXVzVHlwZSA9IHV1c1R5cGU7CisgICAgICAgIHRoaXMudXVzRGNzID0gdXVzRGNzOworICAgICAgICB0aGlzLnV1c0RhdGEgPSB1dXNEYXRhOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0RGNzKCkgeworICAgICAgICByZXR1cm4gdXVzRGNzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERjcyhpbnQgdXVzRGNzKSB7CisgICAgICAgIHRoaXMudXVzRGNzID0gdXVzRGNzOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0VHlwZSgpIHsKKyAgICAgICAgcmV0dXJuIHV1c1R5cGU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VHlwZShpbnQgdXVzVHlwZSkgeworICAgICAgICB0aGlzLnV1c1R5cGUgPSB1dXNUeXBlOworICAgIH0KKworICAgIHB1YmxpYyBieXRlW10gZ2V0VXNlckRhdGEoKSB7CisgICAgICAgIHJldHVybiB1dXNEYXRhOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVzZXJEYXRhKGJ5dGVbXSB1dXNEYXRhKSB7CisgICAgICAgIHRoaXMudXVzRGF0YSA9IHV1c0RhdGE7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ0RNQVBob25lLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DRE1BUGhvbmUuamF2YQppbmRleCAxZjVhY2NmLi4wYzU5MWU0IDEwMDc1NQotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DRE1BUGhvbmUuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DRE1BUGhvbmUuamF2YQpAQCAtNjIsMTEgKzYyLDEzIEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlBob25lU3ViSW5mbzsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255SW50ZW50czsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255UHJvcGVydGllczsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVVVTSW5mbzsKIAogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255UHJvcGVydGllcy5QUk9QRVJUWV9JQ0NfT1BFUkFUT1JfQUxQSEE7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5UZWxlcGhvbnlQcm9wZXJ0aWVzLlBST1BFUlRZX0lDQ19PUEVSQVRPUl9OVU1FUklDOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255UHJvcGVydGllcy5QUk9QRVJUWV9JQ0NfT1BFUkFUT1JfSVNPX0NPVU5UUlk7CiAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogCiAKQEAgLTEwMSw2ICsxMDMsNyBAQAogICAgIFJ1aW1GaWxlSGFuZGxlciBtUnVpbUZpbGVIYW5kbGVyOwogICAgIFJ1aW1SZWNvcmRzIG1SdWltUmVjb3JkczsKICAgICBSdWltQ2FyZCBtUnVpbUNhcmQ7CisgICAgQXJyYXlMaXN0IDxDZG1hTW1pQ29kZT4gbVBlbmRpbmdNbWlzID0gbmV3IEFycmF5TGlzdDxDZG1hTW1pQ29kZT4oKTsKICAgICBSdWltUGhvbmVCb29rSW50ZXJmYWNlTWFuYWdlciBtUnVpbVBob25lQm9va0ludGVyZmFjZU1hbmFnZXI7CiAgICAgUnVpbVNtc0ludGVyZmFjZU1hbmFnZXIgbVJ1aW1TbXNJbnRlcmZhY2VNYW5hZ2VyOwogICAgIFBob25lU3ViSW5mbyBtU3ViSW5mbzsKQEAgLTIxOSw2ICsyMjIsOCBAQAogICAgICAgICAgICAgbVNTVC51bnJlZ2lzdGVyRm9yTmV0d29ya0F0dGFjaCh0aGlzKTsgLy9FVkVOVF9SRUdJU1RFUkVEX1RPX05FVFdPUksKICAgICAgICAgICAgIG1DTS51blNldE9uU3VwcFNlcnZpY2VOb3RpZmljYXRpb24odGhpcyk7CiAKKyAgICAgICAgICAgIG1QZW5kaW5nTW1pcy5jbGVhcigpOworCiAgICAgICAgICAgICAvL0ZvcmNlIGFsbCByZWZlcmVuY2VkIGNsYXNzZXMgdG8gdW5yZWdpc3RlciB0aGVpciBmb3JtZXIgcmVnaXN0ZXJlZCBldmVudHMKICAgICAgICAgICAgIG1DVC5kaXNwb3NlKCk7CiAgICAgICAgICAgICBtRGF0YUNvbm5lY3Rpb24uZGlzcG9zZSgpOwpAQCAtMzQ0LDYgKzM0OSwxMCBAQAogICAgICAgICByZXR1cm4gbUNULmRpYWwobmV3RGlhbFN0cmluZyk7CiAgICAgfQogCisgICAgcHVibGljIENvbm5lY3Rpb24gZGlhbChTdHJpbmcgZGlhbFN0cmluZywgVVVTSW5mbyB1dXNJbmZvKSB0aHJvd3MgQ2FsbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IENhbGxTdGF0ZUV4Y2VwdGlvbigiU2VuZGluZyBVVVMgaW5mb3JtYXRpb24gTk9UIHN1cHBvcnRlZCBpbiBDRE1BISIpOworICAgIH0KKwogICAgIHB1YmxpYyBTaWduYWxTdHJlbmd0aCBnZXRTaWduYWxTdHJlbmd0aCgpIHsKICAgICAgICAgcmV0dXJuIG1TU1QubVNpZ25hbFN0cmVuZ3RoOwogICAgIH0KQEAgLTM1NSw4ICszNjQsNyBAQAogCiAgICAgcHVibGljIExpc3Q8PyBleHRlbmRzIE1taUNvZGU+CiAgICAgZ2V0UGVuZGluZ01taUNvZGVzKCkgewotICAgICAgICBMb2cuZShMT0dfVEFHLCAibWV0aG9kIGdldFBlbmRpbmdNbWlDb2RlcyBpcyBOT1Qgc3VwcG9ydGVkIGluIENETUEhIik7Ci0gICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gbVBlbmRpbmdNbWlzOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRm9yU3VwcFNlcnZpY2VOb3RpZmljYXRpb24oCkBAIC0zNzMsNiArMzgxLDE1IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBib29sZWFuIGlzSW5DYWxsKCkgeworICAgICAgICBDZG1hQ2FsbC5TdGF0ZSBmb3JlZ3JvdW5kQ2FsbFN0YXRlID0gZ2V0Rm9yZWdyb3VuZENhbGwoKS5nZXRTdGF0ZSgpOworICAgICAgICBDZG1hQ2FsbC5TdGF0ZSBiYWNrZ3JvdW5kQ2FsbFN0YXRlID0gZ2V0QmFja2dyb3VuZENhbGwoKS5nZXRTdGF0ZSgpOworICAgICAgICBDZG1hQ2FsbC5TdGF0ZSByaW5naW5nQ2FsbFN0YXRlID0gZ2V0UmluZ2luZ0NhbGwoKS5nZXRTdGF0ZSgpOworCisgICAgICAgIHJldHVybiAoZm9yZWdyb3VuZENhbGxTdGF0ZS5pc0FsaXZlKCkgfHwgYmFja2dyb3VuZENhbGxTdGF0ZS5pc0FsaXZlKCkgfHwgcmluZ2luZ0NhbGxTdGF0ZQorICAgICAgICAgICAgICAgIC5pc0FsaXZlKCkpOworICAgIH0KKwogICAgIHB1YmxpYyB2b2lkCiAgICAgc2V0TmV0d29ya1NlbGVjdGlvbk1vZGVBdXRvbWF0aWMoTWVzc2FnZSByZXNwb25zZSkgewogICAgICAgICBMb2cuZShMT0dfVEFHLCAibWV0aG9kIHNldE5ldHdvcmtTZWxlY3Rpb25Nb2RlQXV0b21hdGljIGlzIE5PVCBzdXBwb3J0ZWQgaW4gQ0RNQSEiKTsKQEAgLTQ3Miw3ICs0ODksMTggQEAKICAgICB9CiAKICAgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVQaW5NbWkoU3RyaW5nIGRpYWxTdHJpbmcpIHsKLSAgICAgICAgTG9nLmUoTE9HX1RBRywgIm1ldGhvZCBoYW5kbGVQaW5NbWkgaXMgTk9UIHN1cHBvcnRlZCBpbiBDRE1BISIpOworICAgICAgICBDZG1hTW1pQ29kZSBtbWkgPSBDZG1hTW1pQ29kZS5uZXdGcm9tRGlhbFN0cmluZyhkaWFsU3RyaW5nLCB0aGlzKTsKKworICAgICAgICBpZiAobW1pID09IG51bGwpIHsKKyAgICAgICAgICAgIExvZy5lKExPR19UQUcsICJNbWkgaXMgTlVMTCEiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChtbWkuaXNQdWtDb21tYW5kKCkpIHsKKyAgICAgICAgICAgIG1QZW5kaW5nTW1pcy5hZGQobW1pKTsKKyAgICAgICAgICAgIG1NbWlSZWdpc3RyYW50cy5ub3RpZnlSZWdpc3RyYW50cyhuZXcgQXN5bmNSZXN1bHQobnVsbCwgbW1pLCBudWxsKSk7CisgICAgICAgICAgICBtbWkucHJvY2Vzc0NvZGUoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIExvZy5lKExPR19UQUcsICJVbnJlY29nbml6ZWQgbW1pISIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC00ODQsNiArNTEyLDIyIEBACiAgICAgICAgICAgICAgICAgKG1EYXRhQ29ubmVjdGlvbi5nZXREYXRhT25Sb2FtaW5nRW5hYmxlZCgpIHx8ICFnZXRTZXJ2aWNlU3RhdGUoKS5nZXRSb2FtaW5nKCkpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIFJlbW92ZXMgdGhlIGdpdmVuIE1NSSBmcm9tIHRoZSBwZW5kaW5nIGxpc3QgYW5kIG5vdGlmaWVzIHJlZ2lzdHJhbnRzIHRoYXQKKyAgICAgKiBpdCBpcyBjb21wbGV0ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtbWkgTU1JIHRoYXQgaXMgZG9uZQorICAgICAqLworICAgIHZvaWQgb25NTUlEb25lKENkbWFNbWlDb2RlIG1taSkgeworICAgICAgICAvKgorICAgICAgICAgKiBPbmx5IG5vdGlmeSBjb21wbGV0ZSBpZiBpdCdzIG9uIHRoZSBwZW5kaW5nIGxpc3QuIE90aGVyd2lzZSwgaXQncworICAgICAgICAgKiBhbHJlYWR5IGJlZW4gaGFuZGxlZCAoZWcsIHByZXZpb3VzbHkgY2FuY2VsZWQpLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKG1QZW5kaW5nTW1pcy5yZW1vdmUobW1pKSkgeworICAgICAgICAgICAgbU1taUNvbXBsZXRlUmVnaXN0cmFudHMubm90aWZ5UmVnaXN0cmFudHMobmV3IEFzeW5jUmVzdWx0KG51bGwsIG1taSwgbnVsbCkpOworICAgICAgICB9CisgICAgfQorCiAgICAgcHVibGljIHZvaWQgc2V0TGluZTFOdW1iZXIoU3RyaW5nIGFscGhhVGFnLCBTdHJpbmcgbnVtYmVyLCBNZXNzYWdlIG9uQ29tcGxldGUpIHsKICAgICAgICAgTG9nLmUoTE9HX1RBRywgInNldExpbmUxTnVtYmVyOiBub3QgcG9zc2libGUgaW4gQ0RNQSIpOwogICAgIH0KQEAgLTE0MDUsNSArMTQ0OSw0IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQogfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYUNhbGxUcmFja2VyLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hQ2FsbFRyYWNrZXIuamF2YQppbmRleCAxMDA1ZDIwLi4zNjY5ZTYwIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hQ2FsbFRyYWNrZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hQ2FsbFRyYWNrZXIuamF2YQpAQCAtNjEsNyArNjEsNyBAQAogICAgIFJlZ2lzdHJhbnRMaXN0IGNhbGxXYWl0aW5nUmVnaXN0cmFudHMgPSAgbmV3IFJlZ2lzdHJhbnRMaXN0KCk7CiAKIAotICAgIC8vIGNvbm5lY3Rpb25zIGRyb3BwZWQgZHVyaW4gbGFzdCBwb2xsCisgICAgLy8gY29ubmVjdGlvbnMgZHJvcHBlZCBkdXJpbmcgbGFzdCBwb2xsCiAgICAgQXJyYXlMaXN0PENkbWFDb25uZWN0aW9uPiBkcm9wcGVkRHVyaW5nUG9sbAogICAgICAgICA9IG5ldyBBcnJheUxpc3Q8Q2RtYUNvbm5lY3Rpb24+KE1BWF9DT05ORUNUSU9OUyk7CiAKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFDb25uZWN0aW9uLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hQ29ubmVjdGlvbi5qYXZhCmluZGV4IDE4ODE0NWIuLmZiZTQ1NWUgMTAwNzU1Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFDb25uZWN0aW9uLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYUNvbm5lY3Rpb24uamF2YQpAQCAtOTQ1LDQgKzk0NSwxMCBAQAogICAgIHB1YmxpYyBpbnQgZ2V0TnVtYmVyUHJlc2VudGF0aW9uKCkgewogICAgICAgICByZXR1cm4gbnVtYmVyUHJlc2VudGF0aW9uOwogICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBVVVNJbmZvIGdldFVVU0luZm8oKSB7CisgICAgICAgIC8vIFVVUyBpbmZvcm1hdGlvbiBub3Qgc3VwcG9ydGVkIGluIENETUEKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYURhdGFDb25uZWN0aW9uVHJhY2tlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYURhdGFDb25uZWN0aW9uVHJhY2tlci5qYXZhCmluZGV4IDIxN2UxZTguLjlmMmE0NGIgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFEYXRhQ29ubmVjdGlvblRyYWNrZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hRGF0YUNvbm5lY3Rpb25UcmFja2VyLmphdmEKQEAgLTExNCw3ICsxMTQsNyBAQAogICAgIC8vIGlmIHdlIGhhdmUgbm8gYWN0aXZlIEFwbiB0aGlzIGlzIG51bGwKICAgICBwcm90ZWN0ZWQgQXBuU2V0dGluZyBtQWN0aXZlQXBuOwogCi0gICAgLy8gUG9zc2libHkgcHJvbW9hdGUgdG8gYmFzZSBjbGFzcywgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcworICAgIC8vIFBvc3NpYmx5IHByb21vdGUgdG8gYmFzZSBjbGFzcywgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcwogICAgIC8vIHRoZSBJTlRFTlRfUkVDT05ORUNUX0FMQVJNIGFjdGlvbiBpcyBhIGRpZmZlcmVudCBzdHJpbmcuCiAgICAgLy8gRG8gY29uc2lkZXIgdGVjaG5vbG9neSBjaGFuZ2VzIGlmIGl0IGlzIHByb21vdGVkLgogICAgIEJyb2FkY2FzdFJlY2VpdmVyIG1JbnRlbnRSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlciAoKQpAQCAtNDIwLDcgKzQyMCw3IEBACiAgICAgICAgIENkbWFEYXRhQ29ubmVjdGlvbiBjb25uID0gZmluZEZyZWVEYXRhQ29ubmVjdGlvbigpOwogCiAgICAgICAgIGlmIChjb25uID09IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChEQkcpIGxvZygic2V0dXBEYXRhOiBObyBmcmVlIENkbWFEYXRhQ29ubmVjdGlvbmZvdW5kISIpOworICAgICAgICAgICAgaWYgKERCRykgbG9nKCJzZXR1cERhdGE6IE5vIGZyZWUgQ2RtYURhdGFDb25uZWN0aW9uIGZvdW5kISIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTY0Niw3ICs2NDYsNyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIEBvdmVycmlkZSBjb20uYW5kcm9pZC5pbnRlbnJhbC50ZWxlcGhvbnkuRGF0YUNvbm5lY3Rpb25UcmFja2VyCisgICAgICogQG92ZXJyaWRlIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5EYXRhQ29ubmVjdGlvblRyYWNrZXIKICAgICAgKi8KICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgdm9pZCBvbkVuYWJsZU5ld0FwbigpIHsKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFNbWlDb2RlLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hTW1pQ29kZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDhjMmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hTW1pQ29kZS5qYXZhCkBAIC0wLDAgKzEsMjk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuY2RtYTsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkNvbW1hbmRFeGNlcHRpb247CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255Lk1taUNvZGU7CisKK2ltcG9ydCBhbmRyb2lkLm9zLkFzeW5jUmVzdWx0OworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOworaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOworCisvKioKKyAqIFRoaXMgY2xhc3MgY2FuIGhhbmRsZSBQdWsgY29kZSBNbWkKKyAqCisgKiB7QGhpZGV9CisgKgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQ2RtYU1taUNvZGUgIGV4dGVuZHMgSGFuZGxlciBpbXBsZW1lbnRzIE1taUNvZGUgeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9HX1RBRyA9ICJDRE1BX01NSSI7CisKKyAgICAvLyBDb25zdGFudHMKKworICAgIC8vIEZyb20gVFMgMjIuMDMwIDYuNS4yCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fUkVHSVNURVIgPSAiKioiOworCisgICAgLy8gU3VwcCBTZXJ2aWNlIGNvZGVzIGZyb20gVFMgMjIuMDMwIEFubmV4IEIKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFNDX1BVSyAgICAgICAgICA9ICIwNSI7CisKKyAgICAvLyBFdmVudCBDb25zdGFudAorCisgICAgc3RhdGljIGZpbmFsIGludCBFVkVOVF9TRVRfQ09NUExFVEUgPSAxOworCisgICAgLy8gSW5zdGFuY2UgVmFyaWFibGVzCisKKyAgICBDRE1BUGhvbmUgcGhvbmU7CisgICAgQ29udGV4dCBjb250ZXh0OworCisgICAgU3RyaW5nIGFjdGlvbjsgICAgICAgICAgICAgIC8vIEFDVElPTl9SRUdJU1RFUgorICAgIFN0cmluZyBzYzsgICAgICAgICAgICAgICAgICAvLyBTZXJ2aWNlIENvZGUKKyAgICBTdHJpbmcgc2lhLCBzaWIsIHNpYzsgICAgICAgLy8gU2VydmljZSBJbmZvIGEsYixjCisgICAgU3RyaW5nIHBvdW5kU3RyaW5nOyAgICAgICAgIC8vIEVudGlyZSBNTUkgc3RyaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgIworICAgIFN0cmluZyBkaWFsaW5nTnVtYmVyOworICAgIFN0cmluZyBwd2Q7ICAgICAgICAgICAgICAgICAvLyBGb3IgcGFzc3dvcmQgcmVnaXN0cmF0aW9uCisKKyAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlLlBFTkRJTkc7CisgICAgQ2hhclNlcXVlbmNlIG1lc3NhZ2U7CisKKyAgICAvLyBDbGFzcyBWYXJpYWJsZXMKKworICAgIHN0YXRpYyBQYXR0ZXJuIHNQYXR0ZXJuU3VwcFNlcnZpY2UgPSBQYXR0ZXJuLmNvbXBpbGUoCisgICAgICAgICIoKFxcKnwjfFxcKiN8XFwqXFwqfCMjKShcXGR7MiwzfSkoXFwqKFteKiNdKikoXFwqKFteKiNdKikoXFwqKFteKiNdKikoXFwqKFteKiNdKikpPyk/KT8pPyMpKC4qKSIpOworLyogICAgICAgMSAgMiAgICAgICAgICAgICAgICAgICAgMyAgICAgICAgICA0ICA1ICAgICAgIDYgICA3ICAgICAgICAgOCAgICA5ICAgICAxMCAgMTEgICAgICAgICAgICAgMTIKKworICAgICAgICAgMSA9IEZ1bGwgc3RyaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgIworICAgICAgICAgMiA9IGFjdGlvbgorICAgICAgICAgMyA9IHNlcnZpY2UgY29kZQorICAgICAgICAgNSA9IFNJQQorICAgICAgICAgNyA9IFNJQgorICAgICAgICAgOSA9IFNJQworICAgICAgICAgMTAgPSBkaWFsaW5nIG51bWJlcgorKi8KKworICAgIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfR1JPVVBfUE9VTkRfU1RSSU5HID0gMTsKKyAgICBzdGF0aWMgZmluYWwgaW50IE1BVENIX0dST1VQX0FDVElPTiA9IDI7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVRDSF9HUk9VUF9TRVJWSUNFX0NPREUgPSAzOworICAgIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfR1JPVVBfU0lBID0gNTsKKyAgICBzdGF0aWMgZmluYWwgaW50IE1BVENIX0dST1VQX1NJQiA9IDc7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVRDSF9HUk9VUF9TSUMgPSA5OworICAgIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfR1JPVVBfUFdEX0NPTkZJUk0gPSAxMTsKKyAgICBzdGF0aWMgZmluYWwgaW50IE1BVENIX0dST1VQX0RJQUxJTkdfTlVNQkVSID0gMTI7CisKKworICAgIC8vIFB1YmxpYyBDbGFzcyBtZXRob2RzCisKKyAgICAvKioKKyAgICAgKiBDaGVjayBpZiBwcm92aWRlZCBzdHJpbmcgY29udGFpbnMgTW1pIGNvZGUgaW4gaXQgYW5kIGNyZWF0ZSBjb3JyZXNwb25kaW5nCisgICAgICogTW1pIGlmIGl0IGRvZXMKKyAgICAgKi8KKworICAgIHB1YmxpYyBzdGF0aWMgQ2RtYU1taUNvZGUKKyAgICBuZXdGcm9tRGlhbFN0cmluZyhTdHJpbmcgZGlhbFN0cmluZywgQ0RNQVBob25lIHBob25lKSB7CisgICAgICAgIE1hdGNoZXIgbTsKKyAgICAgICAgQ2RtYU1taUNvZGUgcmV0ID0gbnVsbDsKKworICAgICAgICBtID0gc1BhdHRlcm5TdXBwU2VydmljZS5tYXRjaGVyKGRpYWxTdHJpbmcpOworCisgICAgICAgIC8vIElzIHRoaXMgZm9ybWF0dGVkIGxpa2UgYSBzdGFuZGFyZCBzdXBwbGVtZW50YXJ5IHNlcnZpY2UgY29kZT8KKyAgICAgICAgaWYgKG0ubWF0Y2hlcygpKSB7CisgICAgICAgICAgICByZXQgPSBuZXcgQ2RtYU1taUNvZGUocGhvbmUpOworICAgICAgICAgICAgcmV0LnBvdW5kU3RyaW5nID0gbWFrZUVtcHR5TnVsbChtLmdyb3VwKE1BVENIX0dST1VQX1BPVU5EX1NUUklORykpOworICAgICAgICAgICAgcmV0LmFjdGlvbiA9IG1ha2VFbXB0eU51bGwobS5ncm91cChNQVRDSF9HUk9VUF9BQ1RJT04pKTsKKyAgICAgICAgICAgIHJldC5zYyA9IG1ha2VFbXB0eU51bGwobS5ncm91cChNQVRDSF9HUk9VUF9TRVJWSUNFX0NPREUpKTsKKyAgICAgICAgICAgIHJldC5zaWEgPSBtYWtlRW1wdHlOdWxsKG0uZ3JvdXAoTUFUQ0hfR1JPVVBfU0lBKSk7CisgICAgICAgICAgICByZXQuc2liID0gbWFrZUVtcHR5TnVsbChtLmdyb3VwKE1BVENIX0dST1VQX1NJQikpOworICAgICAgICAgICAgcmV0LnNpYyA9IG1ha2VFbXB0eU51bGwobS5ncm91cChNQVRDSF9HUk9VUF9TSUMpKTsKKyAgICAgICAgICAgIHJldC5wd2QgPSBtYWtlRW1wdHlOdWxsKG0uZ3JvdXAoTUFUQ0hfR1JPVVBfUFdEX0NPTkZJUk0pKTsKKyAgICAgICAgICAgIHJldC5kaWFsaW5nTnVtYmVyID0gbWFrZUVtcHR5TnVsbChtLmdyb3VwKE1BVENIX0dST1VQX0RJQUxJTkdfTlVNQkVSKSk7CisKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZSBDbGFzcyBtZXRob2RzCisKKyAgICAvKiogbWFrZSBlbXB0eSBzdHJpbmdzIGJlIG51bGwuCisgICAgICogIFJlZ2V4cCByZXR1cm5zIGVtcHR5IHN0cmluZ3MgZm9yIGVtcHR5IGdyb3VwcworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZworICAgIG1ha2VFbXB0eU51bGwgKFN0cmluZyBzKSB7CisgICAgICAgIGlmIChzICE9IG51bGwgJiYgcy5sZW5ndGgoKSA9PSAwKSByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gczsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3RvcgorCisgICAgQ2RtYU1taUNvZGUgKENETUFQaG9uZSBwaG9uZSkgeworICAgICAgICBzdXBlcihwaG9uZS5nZXRIYW5kbGVyKCkuZ2V0TG9vcGVyKCkpOworICAgICAgICB0aGlzLnBob25lID0gcGhvbmU7CisgICAgICAgIHRoaXMuY29udGV4dCA9IHBob25lLmdldENvbnRleHQoKTsKKyAgICB9CisKKyAgICAvLyBNbWlDb2RlIGltcGxlbWVudGF0aW9uCisKKyAgICBwdWJsaWMgU3RhdGUKKyAgICBnZXRTdGF0ZSgpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0KKworICAgIHB1YmxpYyBDaGFyU2VxdWVuY2UKKyAgICBnZXRNZXNzYWdlKCkgeworICAgICAgICByZXR1cm4gbWVzc2FnZTsKKyAgICB9CisKKyAgICAvLyBpbmhlcml0ZWQgamF2YWRvYyBzdWZmaWNlcworICAgIHB1YmxpYyB2b2lkCisgICAgY2FuY2VsKCkgeworICAgICAgICAvLyBDb21wbGV0ZSBvciBmYWlsZWQgY2Fubm90IGJlIGNhbmNlbGxlZAorICAgICAgICBpZiAoc3RhdGUgPT0gU3RhdGUuQ09NUExFVEUgfHwgc3RhdGUgPT0gU3RhdGUuRkFJTEVEKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzdGF0ZSA9IFN0YXRlLkNBTkNFTExFRDsKKyAgICAgICAgcGhvbmUub25NTUlEb25lICh0aGlzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0NhbmNlbGFibGUoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBJbnN0YW5jZSBNZXRob2RzCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIFNlcnZpY2UgQ29kZSBpcyBQSU4vUElOMi9QVUsvUFVLMi1yZWxhdGVkCisgICAgICovCisgICAgYm9vbGVhbiBpc1B1a0NvbW1hbmQoKSB7CisgICAgICAgIHJldHVybiBzYyAhPSBudWxsICYmIHNjLmVxdWFscyhTQ19QVUspOworICAgICB9CisKKyAgICBib29sZWFuIGlzUmVnaXN0ZXIoKSB7CisgICAgICAgIHJldHVybiBhY3Rpb24gIT0gbnVsbCAmJiBhY3Rpb24uZXF1YWxzKEFDVElPTl9SRUdJU1RFUik7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNVc3NkUmVxdWVzdCgpIHsKKyAgICAgICAgTG9nLncoTE9HX1RBRywgImlzVXNzZFJlcXVlc3QgaXMgbm90IGltcGxlbWVudGVkIGluIENkbWFNbWlDb2RlIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKiogUHJvY2VzcyBhIE1NSSBQVUsgY29kZSAqLworICAgIHZvaWQKKyAgICBwcm9jZXNzQ29kZSAoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoaXNQdWtDb21tYW5kKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBzaWEgPSBvbGQgUFVLCisgICAgICAgICAgICAgICAgLy8gc2liID0gbmV3IFBJTgorICAgICAgICAgICAgICAgIC8vIHNpYyA9IG5ldyBQSU4KKyAgICAgICAgICAgICAgICBTdHJpbmcgb2xkUGluT3JQdWsgPSBzaWE7CisgICAgICAgICAgICAgICAgU3RyaW5nIG5ld1BpbiA9IHNpYjsKKyAgICAgICAgICAgICAgICBpbnQgcGluTGVuID0gbmV3UGluLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChpc1JlZ2lzdGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXdQaW4uZXF1YWxzKHNpYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhc3N3b3JkIG1pc21hdGNoOyByZXR1cm4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVBhc3N3b3JkRXJyb3IoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubWlzbWF0Y2hQaW4pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBpbkxlbiA8IDQgfHwgcGluTGVuID4gOCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludmFsaWQgbGVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVQYXNzd29yZEVycm9yKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmludmFsaWRQaW4pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmUubUNNLnN1cHBseUljY1B1ayhvbGRQaW5PclB1aywgbmV3UGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnRhaW5NZXNzYWdlKEVWRU5UX1NFVF9DT01QTEVURSwgdGhpcykpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24gKCJJbnZhbGlkIG9yIFVuc3VwcG9ydGVkIE1NSSBDb2RlIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbiAoIkludmFsaWQgb3IgVW5zdXBwb3J0ZWQgTU1JIENvZGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleGMpIHsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGUuRkFJTEVEOworICAgICAgICAgICAgbWVzc2FnZSA9IGNvbnRleHQuZ2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5tbWlFcnJvcik7CisgICAgICAgICAgICBwaG9uZS5vbk1NSURvbmUodGhpcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlUGFzc3dvcmRFcnJvcihpbnQgcmVzKSB7CisgICAgICAgIHN0YXRlID0gU3RhdGUuRkFJTEVEOworICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoZ2V0U2NTdHJpbmcoKSk7CisgICAgICAgIHNiLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dChyZXMpKTsKKyAgICAgICAgbWVzc2FnZSA9IHNiOworICAgICAgICBwaG9uZS5vbk1NSURvbmUodGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQKKyAgICBoYW5kbGVNZXNzYWdlIChNZXNzYWdlIG1zZykgeworICAgICAgICBBc3luY1Jlc3VsdCBhcjsKKworICAgICAgICBpZiAobXNnLndoYXQgPT0gRVZFTlRfU0VUX0NPTVBMRVRFKSB7CisgICAgICAgICAgICBhciA9IChBc3luY1Jlc3VsdCkgKG1zZy5vYmopOworICAgICAgICAgICAgb25TZXRDb21wbGV0ZShhcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cuZShMT0dfVEFHLCAiVW5leHBlY3RlZCByZXBseSIpOworICAgICAgICB9CisgICAgfQorICAgIC8vIFByaXZhdGUgaW5zdGFuY2UgbWV0aG9kcworCisgICAgcHJpdmF0ZSBDaGFyU2VxdWVuY2UgZ2V0U2NTdHJpbmcoKSB7CisgICAgICAgIGlmIChzYyAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoaXNQdWtDb21tYW5kKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLlBpbk1taSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkCisgICAgb25TZXRDb21wbGV0ZShBc3luY1Jlc3VsdCBhcil7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcihnZXRTY1N0cmluZygpKTsKKyAgICAgICAgc2IuYXBwZW5kKCJcbiIpOworCisgICAgICAgIGlmIChhci5leGNlcHRpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZS5GQUlMRUQ7CisgICAgICAgICAgICBpZiAoYXIuZXhjZXB0aW9uIGluc3RhbmNlb2YgQ29tbWFuZEV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIENvbW1hbmRFeGNlcHRpb24uRXJyb3IgZXJyID0gKChDb21tYW5kRXhjZXB0aW9uKShhci5leGNlcHRpb24pKS5nZXRDb21tYW5kRXJyb3IoKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyID09IENvbW1hbmRFeGNlcHRpb24uRXJyb3IuUEFTU1dPUkRfSU5DT1JSRUNUKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1B1a0NvbW1hbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuYmFkUHVrKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoY29udGV4dC5nZXRUZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5wYXNzd29yZEluY29ycmVjdCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5tbWlFcnJvcikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLm1taUVycm9yKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoaXNSZWdpc3RlcigpKSB7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlLkNPTVBMRVRFOworICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuc2VydmljZVJlZ2lzdGVyZWQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGUuRkFJTEVEOworICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRXJyb3IpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lc3NhZ2UgPSBzYjsKKyAgICAgICAgcGhvbmUub25NTUlEb25lKHRoaXMpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYVNlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFTZXJ2aWNlU3RhdGVUcmFja2VyLmphdmEKaW5kZXggMzlmZTAwNy4uMmNhZDZjYyAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYVNlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hU2VydmljZVN0YXRlVHJhY2tlci5qYXZhCkBAIC02Niw3ICs2Niw3IEBACiAgICAgQ2RtYUNlbGxMb2NhdGlvbiBjZWxsTG9jOwogICAgIENkbWFDZWxsTG9jYXRpb24gbmV3Q2VsbExvYzsKIAotICAgICAvKiogaWYgdGltZSBiZXR3ZWVuIE5USVogdXBkYXRlcyBpcyBsZXNzIHRoYW4gbU5pdHpVcGRhdGVTcGFjaW5nIHRoZSB1cGRhdGUgbWF5IGJlIGlnbm9yZWQuICovCisgICAgIC8qKiBpZiB0aW1lIGJldHdlZW4gTklUWiB1cGRhdGVzIGlzIGxlc3MgdGhhbiBtTml0elVwZGF0ZVNwYWNpbmcgdGhlIHVwZGF0ZSBtYXkgYmUgaWdub3JlZC4gKi8KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTklUWl9VUERBVEVfU1BBQ0lOR19ERUZBVUxUID0gMTAwMCAqIDYwICogMTA7CiAgICAgcHJpdmF0ZSBpbnQgbU5pdHpVcGRhdGVTcGFjaW5nID0gU3lzdGVtUHJvcGVydGllcy5nZXRJbnQoInJvLm5pdHpfdXBkYXRlX3NwYWNpbmciLAogICAgICAgICAgICAgTklUWl9VUERBVEVfU1BBQ0lOR19ERUZBVUxUKTsKQEAgLTM5NSw3ICszOTUsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBSZWxlYXNlIGFueSB0ZW1wb3JhcnkgY2VsbCBsb2NrLCB3aGljaCBjb3VsZCBoYXZlIGJlZW4KLSAgICAgICAgICAgIC8vIGFxdWlyZWQgdG8gYWxsb3cgYSBzaW5nbGUtc2hvdCBsb2NhdGlvbiB1cGRhdGUuCisgICAgICAgICAgICAvLyBhY3F1aXJlZCB0byBhbGxvdyBhIHNpbmdsZS1zaG90IGxvY2F0aW9uIHVwZGF0ZS4KICAgICAgICAgICAgIGRpc2FibGVTaW5nbGVMb2NhdGlvblVwZGF0ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTU5MSw3ICs1OTEsNyBAQAogICAgICAgICBib29sZWFuIHNob3dQbG1uID0gZmFsc2U7CiAgICAgICAgIGludCBydWxlID0gMDsKICAgICAgICAgaWYgKGNtLmdldFJhZGlvU3RhdGUoKS5pc1JVSU1SZWFkeSgpKSB7Ci0gICAgICAgICAgICAvLyBUT0RPIFJVSU0gU1BOIGlzIG5vdCBpbXBsZW1udGVkLCBFRl9TUE4gaGFzIHRvIGJlIHJlYWQgYW5kIERpc3BsYXkgQ29uZGl0aW9uCisgICAgICAgICAgICAvLyBUT0RPIFJVSU0gU1BOIGlzIG5vdCBpbXBsZW1lbnRlZCwgRUZfU1BOIGhhcyB0byBiZSByZWFkIGFuZCBEaXNwbGF5IENvbmRpdGlvbgogICAgICAgICAgICAgLy8gICBDaGFyYWN0ZXIgRW5jb2RpbmcsIExhbmd1YWdlIEluZGljYXRvciBhbmQgU1BOIGhhcyB0byBiZSBzZXQKICAgICAgICAgICAgIC8vIHJ1bGUgPSBwaG9uZS5tUnVpbVJlY29yZHMuZ2V0RGlzcGxheVJ1bGUoc3MuZ2V0T3BlcmF0b3JOdW1lcmljKCkpOwogICAgICAgICAgICAgLy8gc3BuID0gcGhvbmUubVNJTVJlY29yZHMuZ2V0U2VydmljZVByb3ZpZGVOYW1lKCk7CkBAIC04NzIsNyArODcyLDYgQEAKICAgICAgKiBhbmQgc3RhcnQgb3ZlciBhZ2FpbiBpZiB0aGUgcmFkaW8gbm90aWZpZXMgdXMgdGhhdCBzb21lCiAgICAgICogZXZlbnQgaGFzIGNoYW5nZWQKICAgICAgKi8KLQogICAgIHByaXZhdGUgdm9pZAogICAgIHBvbGxTdGF0ZSgpIHsKICAgICAgICAgcG9sbGluZ0NvbnRleHQgPSBuZXcgaW50WzFdOwpAQCAtOTQ1LDYgKzk0NCw5IEBACiAgICAgICAgIGNhc2UgREFUQV9BQ0NFU1NfQ0RNQV9FdkRvX0E6CiAgICAgICAgICAgICByZXQgPSAiQ0RNQSAtIEV2RG8gcmV2LiBBIjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERBVEFfQUNDRVNTX0NETUFfRXZEb19COgorICAgICAgICAgICAgcmV0ID0gIkNETUEgLSBFdkRvIHJldi4gQiI7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChEQkcpIHsKICAgICAgICAgICAgICAgICBMb2cuZShMT0dfVEFHLCAiV3JvbmcgbmV0d29yay4gQ2FuIG5vdCByZXR1cm4gYSBzdHJpbmcuIik7CkBAIC0xMjM3LDYgKzEyMzksNyBAQAogICAgICAgICBjYXNlIDY6IC8vIFJBRElPX1RFQ0hOT0xPR1lfMXhSVFQKICAgICAgICAgY2FzZSA3OiAvLyBSQURJT19URUNITk9MT0dZX0VWRE9fMAogICAgICAgICBjYXNlIDg6IC8vIFJBRElPX1RFQ0hOT0xPR1lfRVZET19BCisgICAgICAgIGNhc2UgMTI6IC8vIFJBRElPX1RFQ0hOT0xPR1lfRVZET19CCiAgICAgICAgICAgICByZXRWYWwgPSBTZXJ2aWNlU3RhdGUuU1RBVEVfSU5fU0VSVklDRTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMTI1Niw3ICsxMjU5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlU3RhdGUuU1RBVEVfSU5fU0VSVklDRTsKICAgICAgICAgY2FzZSAyOiAvLyAyIGlzICJzZWFyY2hpbmciLCBmYWxsIHRocm91Z2gKICAgICAgICAgY2FzZSAzOiAvLyAzIGlzICJyZWdpc3RyYXRpb24gZGVuaWVkIiwgZmFsbCB0aHJvdWdoCi0gICAgICAgIGNhc2UgNDogLy8gNCBpcyAidW5rbm93biIgbm8gdmFpbGQgaW4gY3VycmVudCBiYXNlYmFuZAorICAgICAgICBjYXNlIDQ6IC8vIDQgaXMgInVua25vd24iLCBub3QgdmFsaWQgaW4gY3VycmVudCBiYXNlYmFuZAogICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VTdGF0ZS5TVEFURV9PVVRfT0ZfU0VSVklDRTsKICAgICAgICAgY2FzZSA1Oi8vIDUgaXMgIlJlZ2lzdGVyZWQsIHJvYW1pbmciCiAgICAgICAgICAgICByZXR1cm4gU2VydmljZVN0YXRlLlNUQVRFX0lOX1NFUlZJQ0U7CkBAIC0xMjk1LDEyICsxMjk4LDEyIEBACiAgICAgICovCiAgICAgcHJpdmF0ZSBib29sZWFuIGlzUm9hbUluZEZvckhvbWVTeXN0ZW0oU3RyaW5nIHJvYW1JbmQpIHsKICAgICAgICAgLy8gcmV0cmlldmUgdGhlIGNhcnJpZXItc3BlY2lmaWVkIGxpc3Qgb2YgRVJJcyBmb3IgaG9tZSBzeXN0ZW0KLSAgICAgICAgU3RyaW5nIGhvbWVSb2FtSW5kY2F0b3JzID0gU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLmNkbWEuaG9tZXN5c3RlbSIpOworICAgICAgICBTdHJpbmcgaG9tZVJvYW1JbmRpY2F0b3JzID0gU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLmNkbWEuaG9tZXN5c3RlbSIpOwogCi0gICAgICAgIGlmICghVGV4dFV0aWxzLmlzRW1wdHkoaG9tZVJvYW1JbmRjYXRvcnMpKSB7CisgICAgICAgIGlmICghVGV4dFV0aWxzLmlzRW1wdHkoaG9tZVJvYW1JbmRpY2F0b3JzKSkgewogICAgICAgICAgICAgLy8gc2VhcmNoZXMgdGhyb3VnaCB0aGUgY29tbWEtc2VwYXJhdGVkIGxpc3QgZm9yIGEgbWF0Y2gsCiAgICAgICAgICAgICAvLyByZXR1cm4gdHJ1ZSBpZiBvbmUgaXMgZm91bmQuCi0gICAgICAgICAgICBmb3IgKFN0cmluZyBob21lUm9hbUluZCA6IGhvbWVSb2FtSW5kY2F0b3JzLnNwbGl0KCIsIikpIHsKKyAgICAgICAgICAgIGZvciAoU3RyaW5nIGhvbWVSb2FtSW5kIDogaG9tZVJvYW1JbmRpY2F0b3JzLnNwbGl0KCIsIikpIHsKICAgICAgICAgICAgICAgICBpZiAoaG9tZVJvYW1JbmQuZXF1YWxzKHJvYW1JbmQpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL1Ntc01lc3NhZ2UuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL1Ntc01lc3NhZ2UuamF2YQppbmRleCA0MDNiN2ExLi5iNTA1MDJjIDEwMDc1NQotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9TbXNNZXNzYWdlLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvU21zTWVzc2FnZS5qYXZhCkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBHZXQgYW4gU01TLVNVQk1JVCBQRFUgZm9yIGEgZGF0YSBtZXNzYWdlIHRvIGEgZGVzdGluYXRpb24gYWRkcmVzcyAmYW1wOyBwb3J0CisgICAgICogR2V0IGFuIFNNUy1TVUJNSVQgUERVIGZvciBhIGRhdGEgbWVzc2FnZSB0byBhIGRlc3RpbmF0aW9uIGFkZHJlc3MgYW5kIHBvcnQuCiAgICAgICoKICAgICAgKiBAcGFyYW0gc2NBZGRyIFNlcnZpY2UgQ2VudHJlIGFkZHJlc3MuIG51bGwgPT0gdXNlIGRlZmF1bHQKICAgICAgKiBAcGFyYW0gZGVzdEFkZHIgdGhlIGFkZHJlc3Mgb2YgdGhlIGRlc3RpbmF0aW9uIGZvciB0aGUgbWVzc2FnZQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvVHR5SW50ZW50LmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9UdHlJbnRlbnQuamF2YQppbmRleCAzODEzYjFkLi40OTA3YWE5IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9UdHlJbnRlbnQuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9UdHlJbnRlbnQuamF2YQpAQCAtNTYsMTAgKzU2LDEwIEBACiAgICAgLyoqCiAgICAgICogVGhlIGxvb2t1cCBrZXkgZm9yIGFuIGludCB0aGF0IGluZGljYXRlcyBwcmVmZXJyZWQgVFRZIG1vZGUuCiAgICAgICogVmFsaWQgbW9kZXMgYXJlOgotICAgICAqIC0ge0BsaW5rIFBob25lLlRUWV9NT0RFX09GRn0KLSAgICAgKiAtIHtAbGluayBQaG9uZS5UVFlfTU9ERV9GVUxMfQotICAgICAqIC0ge0BsaW5rIFBob25lLlRUWV9NT0RFX0hDT30KLSAgICAgKiAtIHtAbGluayBQaG9uZS5UVFlfTU9ERV9WQ099CisgICAgICogLSB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlBob25lI1RUWV9NT0RFX09GRn0KKyAgICAgKiAtIHtAbGluayBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmUjVFRZX01PREVfRlVMTH0KKyAgICAgKiAtIHtAbGluayBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmUjVFRZX01PREVfSENPfQorICAgICAqIC0ge0BsaW5rIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZSNUVFlfTU9ERV9WQ099CiAgICAgICoKICAgICAgKiB7QGhpZGV9CiAgICAgICovCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0NhbGxGYWlsQ2F1c2UuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vQ2FsbEZhaWxDYXVzZS5qYXZhCmluZGV4IGU3ZmJmNmIuLmFmMmFkNDggMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vQ2FsbEZhaWxDYXVzZS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vQ2FsbEZhaWxDYXVzZS5qYXZhCkBAIC0yNSw2ICsyNSw5IEBACiAgKgogICovCiBwdWJsaWMgaW50ZXJmYWNlIENhbGxGYWlsQ2F1c2UgeworICAgIC8vIFVuYXNzaWduZWQvVW5vYnRhaW5hYmxlIG51bWJlcgorICAgIHN0YXRpYyBmaW5hbCBpbnQgVU5PQlRBSU5BQkxFX05VTUJFUiA9IDE7CisKICAgICBzdGF0aWMgZmluYWwgaW50IE5PUk1BTF9DTEVBUklORyAgICAgPSAxNjsKICAgICAvLyBCdXN5IFRvbmUKICAgICBzdGF0aWMgZmluYWwgaW50IFVTRVJfQlVTWSAgICAgICAgICAgPSAxNzsKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR1NNUGhvbmUuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR1NNUGhvbmUuamF2YQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDJiYjc5NjguLmM3YjFlNWMKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9HU01QaG9uZS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR1NNUGhvbmUuamF2YQpAQCAtNjcsNiArNjcsNyBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZVByb3h5OwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZVN1YkluZm87CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueVByb3BlcnRpZXM7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlVVU0luZm87CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmdzbS5zdGsuU3RrU2VydmljZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkudGVzdC5TaW11bGF0ZWRSYWRpb0NvbnRyb2w7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkljY1ZtTm90U3VwcG9ydGVkRXhjZXB0aW9uOwpAQCAtNzExLDcgKzcxMiwxMiBAQAogICAgIH0KIAogICAgIHB1YmxpYyBDb25uZWN0aW9uCi0gICAgZGlhbCAoU3RyaW5nIGRpYWxTdHJpbmcpIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb24geworICAgIGRpYWwoU3RyaW5nIGRpYWxTdHJpbmcpIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb24geworICAgICAgICByZXR1cm4gZGlhbChkaWFsU3RyaW5nLCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ29ubmVjdGlvbgorICAgIGRpYWwgKFN0cmluZyBkaWFsU3RyaW5nLCBVVVNJbmZvIHV1c0luZm8pIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb24gewogICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSBkaWFsU3RyaW5nIGdldHMgcGFyc2VkIHByb3Blcmx5CiAgICAgICAgIFN0cmluZyBuZXdEaWFsU3RyaW5nID0gUGhvbmVOdW1iZXJVdGlscy5zdHJpcFNlcGFyYXRvcnMoZGlhbFN0cmluZyk7CiAKQEAgLTcyNyw5ICs3MzMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWFsaW5nIHcvIG1taSAnIiArIG1taSArICInLi4uIik7CiAKICAgICAgICAgaWYgKG1taSA9PSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNULmRpYWwobmV3RGlhbFN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gbUNULmRpYWwobmV3RGlhbFN0cmluZywgdXVzSW5mbyk7CiAgICAgICAgIH0gZWxzZSBpZiAobW1pLmlzVGVtcG9yYXJ5TW9kZUNMSVIoKSkgewotICAgICAgICAgICAgcmV0dXJuIG1DVC5kaWFsKG1taS5kaWFsaW5nTnVtYmVyLCBtbWkuZ2V0Q0xJUk1vZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gbUNULmRpYWwobW1pLmRpYWxpbmdOdW1iZXIsIG1taS5nZXRDTElSTW9kZSgpLCB1dXNJbmZvKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1QZW5kaW5nTU1Jcy5hZGQobW1pKTsKICAgICAgICAgICAgIG1NbWlSZWdpc3RyYW50cy5ub3RpZnlSZWdpc3RyYW50cyhuZXcgQXN5bmNSZXN1bHQobnVsbCwgbW1pLCBudWxsKSk7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbUNhbGxUcmFja2VyLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbUNhbGxUcmFja2VyLmphdmEKaW5kZXggODc1MzBlNC4uMDZmMzEwYyAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21DYWxsVHJhY2tlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtQ2FsbFRyYWNrZXIuamF2YQpAQCAtMzcsNiArMzcsNyBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5FdmVudExvZ1RhZ3M7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlBob25lOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5UZWxlcGhvbnlQcm9wZXJ0aWVzOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5VVVNJbmZvOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uQ2FsbEZhaWxDYXVzZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuZ3NtLkdTTVBob25lOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uR3NtQ2FsbDsKQEAgLTY1LDcgKzY2LDcgQEAKICAgICBSZWdpc3RyYW50TGlzdCB2b2ljZUNhbGxTdGFydGVkUmVnaXN0cmFudHMgPSBuZXcgUmVnaXN0cmFudExpc3QoKTsKIAogCi0gICAgLy8gY29ubmVjdGlvbnMgZHJvcHBlZCBkdXJpbiBsYXN0IHBvbGwKKyAgICAvLyBjb25uZWN0aW9ucyBkcm9wcGVkIGR1cmluZyBsYXN0IHBvbGwKICAgICBBcnJheUxpc3Q8R3NtQ29ubmVjdGlvbj4gZHJvcHBlZER1cmluZ1BvbGwKICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PEdzbUNvbm5lY3Rpb24+KE1BWF9DT05ORUNUSU9OUyk7CiAKQEAgLTE2Nyw3ICsxNjgsNyBAQAogICAgICAqIGNsaXJNb2RlIGlzIG9uZSBvZiB0aGUgQ0xJUl8gY29uc3RhbnRzCiAgICAgICovCiAgICAgQ29ubmVjdGlvbgotICAgIGRpYWwgKFN0cmluZyBkaWFsU3RyaW5nLCBpbnQgY2xpck1vZGUpIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb24geworICAgIGRpYWwgKFN0cmluZyBkaWFsU3RyaW5nLCBpbnQgY2xpck1vZGUsIFVVU0luZm8gdXVzSW5mbykgdGhyb3dzIENhbGxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIC8vIG5vdGUgdGhhdCB0aGlzIHRyaWdnZXJzIGNhbGwgc3RhdGUgY2hhbmdlZCBub3RpZgogICAgICAgICBjbGVhckRpc2Nvbm5lY3RlZCgpOwogCkBAIC0yMTMsNyArMjE0LDcgQEAKICAgICAgICAgICAgIC8vIEFsd2F5cyB1bm11dGUgd2hlbiBpbml0aWF0aW5nIGEgbmV3IGNhbGwKICAgICAgICAgICAgIHNldE11dGUoZmFsc2UpOwogCi0gICAgICAgICAgICBjbS5kaWFsKHBlbmRpbmdNTy5hZGRyZXNzLCBjbGlyTW9kZSwgb2J0YWluQ29tcGxldGVNZXNzYWdlKCkpOworICAgICAgICAgICAgY20uZGlhbChwZW5kaW5nTU8uYWRkcmVzcywgY2xpck1vZGUsIHV1c0luZm8sIG9idGFpbkNvbXBsZXRlTWVzc2FnZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHVwZGF0ZVBob25lU3RhdGUoKTsKQEAgLTIyMiwxMCArMjIzLDE5IEBACiAgICAgICAgIHJldHVybiBwZW5kaW5nTU87CiAgICAgfQogCisgICAgQ29ubmVjdGlvbgorICAgIGRpYWwoU3RyaW5nIGRpYWxTdHJpbmcpIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb24geworICAgICAgICByZXR1cm4gZGlhbChkaWFsU3RyaW5nLCBDb21tYW5kc0ludGVyZmFjZS5DTElSX0RFRkFVTFQsIG51bGwpOworICAgIH0KIAogICAgIENvbm5lY3Rpb24KLSAgICBkaWFsIChTdHJpbmcgZGlhbFN0cmluZykgdGhyb3dzIENhbGxTdGF0ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIHJldHVybiBkaWFsKGRpYWxTdHJpbmcsIENvbW1hbmRzSW50ZXJmYWNlLkNMSVJfREVGQVVMVCk7CisgICAgZGlhbChTdHJpbmcgZGlhbFN0cmluZywgVVVTSW5mbyB1dXNJbmZvKSB0aHJvd3MgQ2FsbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGRpYWwoZGlhbFN0cmluZywgQ29tbWFuZHNJbnRlcmZhY2UuQ0xJUl9ERUZBVUxULCB1dXNJbmZvKTsKKyAgICB9CisKKyAgICBDb25uZWN0aW9uCisgICAgZGlhbChTdHJpbmcgZGlhbFN0cmluZywgaW50IGNsaXJNb2RlKSB0aHJvd3MgQ2FsbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGRpYWwoZGlhbFN0cmluZywgY2xpck1vZGUsIG51bGwpOwogICAgIH0KIAogICAgIHZvaWQKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtQ29ubmVjdGlvbi5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21Db25uZWN0aW9uLmphdmEKaW5kZXggNDc4OGEwMS4uN2RjMjUwNCAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21Db25uZWN0aW9uLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21Db25uZWN0aW9uLmphdmEKQEAgLTczLDYgKzczLDcgQEAKICAgICBEaXNjb25uZWN0Q2F1c2UgY2F1c2UgPSBEaXNjb25uZWN0Q2F1c2UuTk9UX0RJU0NPTk5FQ1RFRDsKICAgICBQb3N0RGlhbFN0YXRlIHBvc3REaWFsU3RhdGUgPSBQb3N0RGlhbFN0YXRlLk5PVF9TVEFSVEVEOwogICAgIGludCBudW1iZXJQcmVzZW50YXRpb24gPSBDb25uZWN0aW9uLlBSRVNFTlRBVElPTl9BTExPV0VEOworICAgIFVVU0luZm8gdXVzSW5mbzsKIAogICAgIEhhbmRsZXIgaDsKIApAQCAtMTI2LDYgKzEyNyw3IEBACiAgICAgICAgIGlzSW5jb21pbmcgPSBkYy5pc01UOwogICAgICAgICBjcmVhdGVUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CiAgICAgICAgIG51bWJlclByZXNlbnRhdGlvbiA9IGRjLm51bWJlclByZXNlbnRhdGlvbjsKKyAgICAgICAgdXVzSW5mbyA9IGRjLnV1c0luZm87CiAKICAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4OwogCkBAIC0zNTYsNiArMzU4LDkgQEAKICAgICAgICAgICAgIGNhc2UgQ2FsbEZhaWxDYXVzZS5GRE5fQkxPQ0tFRDoKICAgICAgICAgICAgICAgICByZXR1cm4gRGlzY29ubmVjdENhdXNlLkZETl9CTE9DS0VEOwogCisgICAgICAgICAgICBjYXNlIENhbGxGYWlsQ2F1c2UuVU5PQlRBSU5BQkxFX05VTUJFUjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzY29ubmVjdENhdXNlLlVOT0JUQUlOQUJMRV9OVU1CRVI7CisKICAgICAgICAgICAgIGNhc2UgQ2FsbEZhaWxDYXVzZS5FUlJPUl9VTlNQRUNJRklFRDoKICAgICAgICAgICAgIGNhc2UgQ2FsbEZhaWxDYXVzZS5OT1JNQUxfQ0xFQVJJTkc6CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtNzI4LDQgKzczMyw5IEBACiAgICAgcHVibGljIGludCBnZXROdW1iZXJQcmVzZW50YXRpb24oKSB7CiAgICAgICAgIHJldHVybiBudW1iZXJQcmVzZW50YXRpb247CiAgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFVVU0luZm8gZ2V0VVVTSW5mbygpIHsKKyAgICAgICAgcmV0dXJuIHV1c0luZm87CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21EYXRhQ29ubmVjdGlvbi5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21EYXRhQ29ubmVjdGlvbi5qYXZhCmluZGV4IGQ4OTNlYzQuLjA5ZDQ2ZGQgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtRGF0YUNvbm5lY3Rpb24uamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbURhdGFDb25uZWN0aW9uLmphdmEKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICAgICAgICAgICAgIGNhdXNlID0gRmFpbENhdXNlLklOU1VGRklDSUVOVF9SRVNPVVJDRVM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBEUF9GQUlMX01JU1NJTkdfVUtOT1dOX0FQTjoKLSAgICAgICAgICAgICAgICBjYXVzZSA9IEZhaWxDYXVzZS5NSVNTSU5HX1VLTk9XTl9BUE47CisgICAgICAgICAgICAgICAgY2F1c2UgPSBGYWlsQ2F1c2UuTUlTU0lOR19VTktOT1dOX0FQTjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUERQX0ZBSUxfVU5LTk9XTl9QRFBfQUREUkVTU19UWVBFOgogICAgICAgICAgICAgICAgIGNhdXNlID0gRmFpbENhdXNlLlVOS05PV05fUERQX0FERFJFU1M7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbURhdGFDb25uZWN0aW9uVHJhY2tlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21EYXRhQ29ubmVjdGlvblRyYWNrZXIuamF2YQppbmRleCA2MjdkOTRkLi5mNmQ0NDkxIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbURhdGFDb25uZWN0aW9uVHJhY2tlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtRGF0YUNvbm5lY3Rpb25UcmFja2VyLmphdmEKQEAgLTQ1LDcgKzQ1LDYgQEAKIGltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5TZXJ2aWNlU3RhdGU7CiBpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5nc20uR3NtQ2VsbExvY2F0aW9uOwotaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkV2ZW50TG9nOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiAKQEAgLTE1MSw5ICsxNTAsOSBAQAogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVBOX0lEID0gImFwbl9pZCI7CiAgICAgcHJpdmF0ZSBib29sZWFuIGNhblNldFByZWZlckFwbiA9IGZhbHNlOwogCi0gICAgLy8gZm9yIHRyYWNraW5nIHJldHJ5cyBvbiB0aGUgZGVmYXVsdCBBUE4KKyAgICAvLyBmb3IgdHJhY2tpbmcgcmV0cmllcyBvbiB0aGUgZGVmYXVsdCBBUE4KICAgICBwcml2YXRlIFJldHJ5TWFuYWdlciBtRGVmYXVsdFJldHJ5TWFuYWdlcjsKLSAgICAvLyBmb3IgdHJhY2tpbmcgcmV0cnlzIG9uIGEgc2Vjb25kYXJ5IEFQTgorICAgIC8vIGZvciB0cmFja2luZyByZXRyaWVzIG9uIGEgc2Vjb25kYXJ5IEFQTgogICAgIHByaXZhdGUgUmV0cnlNYW5hZ2VyIG1TZWNvbmRhcnlSZXRyeU1hbmFnZXI7CiAKICAgICBCcm9hZGNhc3RSZWNlaXZlciBtSW50ZW50UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIgKCkKQEAgLTE5MCw4ICsxODksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgV2lmaU1hbmFnZXIuV0lGSV9TVEFURV9VTktOT1dOKSA9PSBXaWZpTWFuYWdlci5XSUZJX1NUQVRFX0VOQUJMRUQ7CiAKICAgICAgICAgICAgICAgICBpZiAoIWVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB3aWZpIGdvdCBkaXNhYmVsZWQsIHRoZSBORVRXT1JLX1NUQVRFX0NIQU5HRURfQUNUSU9OCi0gICAgICAgICAgICAgICAgICAgIC8vIHF1aXQgYW5kIHdvbnQgcmVwb3J0IGRpc2Nvbm5lY3RlZCB0aWwgbmV4dCBlbmFsYmluZy4KKyAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB3aWZpIGdvdCBkaXNhYmxlZCwgdGhlIE5FVFdPUktfU1RBVEVfQ0hBTkdFRF9BQ1RJT04KKyAgICAgICAgICAgICAgICAgICAgLy8gcXVpdCBhbmQgd29uJ3QgcmVwb3J0IGRpc2Nvbm5lY3RlZCB0aWwgbmV4dCBlbmFibGluZy4KICAgICAgICAgICAgICAgICAgICAgbUlzV2lmaUNvbm5lY3RlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQ1Miw3ICs0NTEsNyBAQAogICAgICAgICAgICAgICAgIHdhaXRpbmdBcG5zID0gYnVpbGRXYWl0aW5nQXBucygpOwogICAgICAgICAgICAgICAgIGlmICh3YWl0aW5nQXBucy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKERCRykgbG9nKCJObyBBUE4gZm91bmQiKTsKLSAgICAgICAgICAgICAgICAgICAgbm90aWZ5Tm9EYXRhKEdzbURhdGFDb25uZWN0aW9uLkZhaWxDYXVzZS5NSVNTSU5HX1VLTk9XTl9BUE4pOworICAgICAgICAgICAgICAgICAgICBub3RpZnlOb0RhdGEoR3NtRGF0YUNvbm5lY3Rpb24uRmFpbENhdXNlLk1JU1NJTkdfVU5LTk9XTl9BUE4pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbG9nICgiQ3JlYXRlIGZyb20gYWxsQXBucyA6ICIgKyBhcG5MaXN0VG9TdHJpbmcoYWxsQXBucykpOwpAQCAtMTEzMCw3ICsxMTI5LDcgQEAKICAgICAgICAgICAgIGlmIChpc0FwblR5cGVBY3RpdmUoUGhvbmUuQVBOX1RZUEVfREVGQVVMVCkpIHsKICAgICAgICAgICAgICAgICBTeXN0ZW1Qcm9wZXJ0aWVzLnNldCgiZ3NtLmRlZmF1bHRwZHBjb250ZXh0LmFjdGl2ZSIsICJ0cnVlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuU2V0UHJlZmVyQXBuICYmIHByZWZlcnJlZEFwbiA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoTE9HX1RBRywgIlBSRUZFUkVEIEFQTiBpcyBudWxsIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoTE9HX1RBRywgIlBSRUZFUlJFRCBBUE4gaXMgbnVsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZlcnJlZEFwbiA9IG1BY3RpdmVBcG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJlZmVycmVkQXBuKHByZWZlcnJlZEFwbi5pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMjgwLDcgKzEyNzksNyBAQAogICAgICAgICBpZiAoYWxsQXBucy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChEQkcpIGxvZygiTm8gQVBOIGZvdW5kIGZvciBjYXJyaWVyOiAiICsgb3BlcmF0b3IpOwogICAgICAgICAgICAgcHJlZmVycmVkQXBuID0gbnVsbDsKLSAgICAgICAgICAgIG5vdGlmeU5vRGF0YShHc21EYXRhQ29ubmVjdGlvbi5GYWlsQ2F1c2UuTUlTU0lOR19VS05PV05fQVBOKTsKKyAgICAgICAgICAgIG5vdGlmeU5vRGF0YShHc21EYXRhQ29ubmVjdGlvbi5GYWlsQ2F1c2UuTUlTU0lOR19VTktOT1dOX0FQTik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwcmVmZXJyZWRBcG4gPSBnZXRQcmVmZXJyZWRBcG4oKTsKICAgICAgICAgICAgIExvZy5kKExPR19UQUcsICJHZXQgUHJlZmVycmVkQVBOIik7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbU1taUNvZGUuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtTW1pQ29kZS5qYXZhCmluZGV4IGJjYmQxMjcuLmFhMTZmYTMgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtTW1pQ29kZS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtTW1pQ29kZS5qYXZhCkBAIC0zOSw3ICszOSw3IEBACiAgKiB7QGhpZGV9CiAgKgogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgR3NtTW1pQ29kZSAgZXh0ZW5kcyBIYW5kbGVyIGltcGxlbWVudHMgTW1pQ29kZSB7CitwdWJsaWMgZmluYWwgY2xhc3MgR3NtTW1pQ29kZSBleHRlbmRzIEhhbmRsZXIgaW1wbGVtZW50cyBNbWlDb2RlIHsKICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIExPR19UQUcgPSAiR1NNIjsKIAogICAgIC8vKioqKiogQ29uc3RhbnRzCkBAIC01MSw3ICs1MSw3IEBACiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fUkVHSVNURVIgPSAiKioiOwogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX0VSQVNVUkUgPSAiIyMiOwogCi0gICAgLy8gU3VwcCBTZXJ2aWNlIGNvY2RlcyBmcm9tIFRTIDIyLjAzMCBBbm5leCBCCisgICAgLy8gU3VwcCBTZXJ2aWNlIGNvZGVzIGZyb20gVFMgMjIuMDMwIEFubmV4IEIKIAogICAgIC8vQ2FsbGVkIGxpbmUgcHJlc2VudGF0aW9uCiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBTQ19DTElQICAgID0gIjMwIjsKQEAgLTE1NCw3ICsxNTQsNyBAQAogCiAgICAgLyoqCiAgICAgICogU29tZSBkaWFsIHN0cmluZ3MgaW4gR1NNIGFyZSBkZWZpbmVkIHRvIGRvIG5vbi1jYWxsIHNldHVwCi0gICAgICogdGhpbmdzLCBzdWNoIGFzIG1vZGlmeSBvciBxdWVyeSBzdXBwbGVtZW50cnkgc2VydmljZSBzZXR0aW5ncyAoZWcsIGNhbGwKKyAgICAgKiB0aGluZ3MsIHN1Y2ggYXMgbW9kaWZ5IG9yIHF1ZXJ5IHN1cHBsZW1lbnRhcnkgc2VydmljZSBzZXR0aW5ncyAoZWcsIGNhbGwKICAgICAgKiBmb3J3YXJkaW5nKS4gVGhlc2UgYXJlIGdlbmVyYWxseSByZWZlcnJlZCB0byBhcyAiTU1JIGNvZGVzIi4KICAgICAgKiBXZSBsb29rIHRvIHNlZSBpZiB0aGUgZGlhbCBzdHJpbmcgY29udGFpbnMgYSB2YWxpZCBNTUkgY29kZSAocG90ZW50aWFsbHkKICAgICAgKiB3aXRoIGEgZGlhbCBzdHJpbmcgYXQgdGhlIGVuZCBhcyB3ZWxsKSBhbmQgcmV0dXJuIGluZm8gaGVyZS4KQEAgLTQ1NywxMiArNDU3LDEzIEBACiAgICAgICAgICAgICAgICAgJiYgIVBob25lTnVtYmVyVXRpbHMuaXNFbWVyZ2VuY3lOdW1iZXIoZGlhbFN0cmluZykKICAgICAgICAgICAgICAgICAmJiAocGhvbmUuaXNJbkNhbGwoKQogICAgICAgICAgICAgICAgICAgICB8fCAhKChkaWFsU3RyaW5nLmxlbmd0aCgpID09IDIgJiYgZGlhbFN0cmluZy5jaGFyQXQoMCkgPT0gJzEnKQotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdoaWxlIGNvbnRyYXJ5IHRvIFRTIDIyLjAzMCwgdGhlcmUgaXMgc3Ryb25nIHByZWNlbmRlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgLyogV2hpbGUgY29udHJhcnkgdG8gVFMgMjIuMDMwLCB0aGVyZSBpcyBzdHJvbmcgcHJlY2VkZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZvciB0cmVhdGluZyAiMCIgYW5kICIwMCIgYXMgY2FsbCBzZXR1cCBzdHJpbmdzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRpYWxTdHJpbmcuZXF1YWxzKCIwIikKICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkaWFsU3RyaW5nLmVxdWFscygiMDAiKSkpKTsKICAgICB9CisKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIFNlcnZpY2UgQ29kZSBpcyBQSU4vUElOMi9QVUsvUFVLMi1yZWxhdGVkCiAgICAgICovCkBAIC00NzIsMTMgKzQ3MywxMiBAQAogICAgICB9CiAKICAgICAvKioKLSAgICAgKiAqU2VlIFRTIDIyLjAzMCBBbm5leCBCCisgICAgICogU2VlIFRTIDIyLjAzMCBBbm5leCBCLgogICAgICAqIEluIHRlbXBvcmFyeSBtb2RlLCB0byBzdXBwcmVzcyBDTElSIGZvciBhIHNpbmdsZSBjYWxsLCBlbnRlcjoKLSAgICAgKiAgICAgICIgKiAzMSAjIDxjYWxsZWQgbnVtYmVyPiBTRU5EICIKKyAgICAgKiAgICAgICIgKiAzMSAjIFtjYWxsZWQgbnVtYmVyXSBTRU5EICIKICAgICAgKiAgSW4gdGVtcG9yYXJ5IG1vZGUsIHRvIGludm9rZSBDTElSIGZvciBhIHNpbmdsZSBjYWxsIGVudGVyOgotICAgICAqICAgICAgICIgIyAzMSAjIDxjYWxsZWQgbnVtYmVyPiBTRU5EICIKKyAgICAgKiAgICAgICAiICMgMzEgIyBbY2FsbGVkIG51bWJlcl0gU0VORCAiCiAgICAgICovCi0KICAgICBib29sZWFuCiAgICAgaXNUZW1wb3JhcnlNb2RlQ0xJUigpIHsKICAgICAgICAgcmV0dXJuIHNjICE9IG51bGwgJiYgc2MuZXF1YWxzKFNDX0NMSVIpICYmIGRpYWxpbmdOdW1iZXIgIT0gbnVsbApAQCAtNzc5LDcgKzc3OSw3IEBACiAgICAgICAgIC8vIE5vdGUgdGhhdCB1bmxpa2UgbW9zdCBldmVyeXRoaW5nIGVsc2UsIHRoZSBVU1NEIGNvbXBsZXRlCiAgICAgICAgIC8vIHJlc3BvbnNlIGRvZXMgbm90IGNvbXBsZXRlIHRoaXMgTU1JIGNvZGUuLi53ZSB3YWl0IGZvcgogICAgICAgICAvLyBhbiB1bnNvbGljaXRlZCBVU1NEICJOb3RpZnkiIG9yICJSZXF1ZXN0Ii4KLSAgICAgICAgLy8gVGhlIG1hdGNoaW5nIHVwIG9mIHRoaXMgaXMgZG9lbmUgaW4gR1NNUGhvbmUuCisgICAgICAgIC8vIFRoZSBtYXRjaGluZyB1cCBvZiB0aGlzIGlzIGRvbmUgaW4gR1NNUGhvbmUuCiAKICAgICAgICAgcGhvbmUubUNNLnNlbmRVU1NEKHVzc2RNZXNzYWdlLAogICAgICAgICAgICAgb2J0YWluTWVzc2FnZShFVkVOVF9VU1NEX0NPTVBMRVRFLCB0aGlzKSk7CkBAIC04MzIsOCArODMyLDcgQEAKIAogICAgICAgICAgICAgICAgIGlmIChhci5leGNlcHRpb24gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlLkZBSUxFRDsKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGNvbnRleHQuZ2V0VGV4dCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRXJyb3IpOworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlKGFyKTsKIAogICAgICAgICAgICAgICAgICAgICBwaG9uZS5vbk1NSURvbmUodGhpcyk7CiAgICAgICAgICAgICAgICAgfQpAQCAtODUyLDYgKzg1MSwxOSBAQAogICAgIH0KICAgICAvLyoqKioqIFByaXZhdGUgaW5zdGFuY2UgbWV0aG9kcwogCisgICAgcHJpdmF0ZSBDaGFyU2VxdWVuY2UgZ2V0RXJyb3JNZXNzYWdlKEFzeW5jUmVzdWx0IGFyKSB7CisKKyAgICAgICAgaWYgKGFyLmV4Y2VwdGlvbiBpbnN0YW5jZW9mIENvbW1hbmRFeGNlcHRpb24pIHsKKyAgICAgICAgICAgIENvbW1hbmRFeGNlcHRpb24uRXJyb3IgZXJyID0gKChDb21tYW5kRXhjZXB0aW9uKShhci5leGNlcHRpb24pKS5nZXRDb21tYW5kRXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gQ29tbWFuZEV4Y2VwdGlvbi5FcnJvci5GRE5fQ0hFQ0tfRkFJTFVSRSkgeworICAgICAgICAgICAgICAgIExvZy5pKExPR19UQUcsICJGRE5fQ0hFQ0tfRkFJTFVSRSIpOworICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRmRuRXJyb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5tbWlFcnJvcik7CisgICAgfQorCiAgICAgcHJpdmF0ZSBDaGFyU2VxdWVuY2UgZ2V0U2NTdHJpbmcoKSB7CiAgICAgICAgIGlmIChzYyAhPSBudWxsKSB7CiAgICAgICAgICAgICBpZiAoaXNTZXJ2aWNlQ29kZUNhbGxCYXJyaW5nKHNjKSkgewpAQCAtOTA0LDYgKzkxNiw5IEBACiAgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5uZWVkUHVrMikpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyID09IENvbW1hbmRFeGNlcHRpb24uRXJyb3IuRkROX0NIRUNLX0ZBSUxVUkUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmkoTE9HX1RBRywgIkZETl9DSEVDS19GQUlMVVJFIik7CisgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRmRuRXJyb3IpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoY29udGV4dC5nZXRUZXh0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLm1taUVycm9yKSk7CkBAIC05NTMsNyArOTY4LDcgQEAKIAogICAgICAgICBpZiAoYXIuZXhjZXB0aW9uICE9IG51bGwpIHsKICAgICAgICAgICAgIHN0YXRlID0gU3RhdGUuRkFJTEVEOwotICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5tbWlFcnJvcikpOworICAgICAgICAgICAgc2IuYXBwZW5kKGdldEVycm9yTWVzc2FnZShhcikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaW50IGNsaXJBcmdzW107CiAKQEAgLTExMjMsNyArMTEzOCw3IEBACiAKICAgICAgICAgaWYgKGFyLmV4Y2VwdGlvbiAhPSBudWxsKSB7CiAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlLkZBSUxFRDsKLSAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRXJyb3IpKTsKKyAgICAgICAgICAgIHNiLmFwcGVuZChnZXRFcnJvck1lc3NhZ2UoYXIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENhbGxGb3J3YXJkSW5mbyBpbmZvc1tdOwogCkBAIC0xMTQxLDcgKzExNTYsNyBAQAogCiAgICAgICAgICAgICAgICAgLy8gRWFjaCBiaXQgaW4gdGhlIHNlcnZpY2UgY2xhc3MgZ2V0cyBpdHMgb3duIHJlc3VsdCBsaW5lCiAgICAgICAgICAgICAgICAgLy8gVGhlIHNlcnZpY2UgY2xhc3NlcyBtYXkgYmUgc3BsaXQgdXAgb3ZlciBtdWx0aXBsZQotICAgICAgICAgICAgICAgIC8vIENhbGxGb3J3YXJkSW5mb3MuIFNvLCBmb3IgZWFjaCBzZXJ2aWNlIGNsYXNzcywgZmluZCBvdXQKKyAgICAgICAgICAgICAgICAvLyBDYWxsRm9yd2FyZEluZm9zLiBTbywgZm9yIGVhY2ggc2VydmljZSBjbGFzcywgZmluZCBvdXQKICAgICAgICAgICAgICAgICAvLyB3aGljaCBDYWxsRm9yd2FyZEluZm8gcmVwcmVzZW50cyBpdCBhbmQgdGhlbiBidWlsZAogICAgICAgICAgICAgICAgIC8vIHRoZSByZXNwb25zZSB0ZXh0IGJhc2VkIG9uIHRoYXQKIApAQCAtMTE3NSw3ICsxMTkwLDcgQEAKIAogICAgICAgICBpZiAoYXIuZXhjZXB0aW9uICE9IG51bGwpIHsKICAgICAgICAgICAgIHN0YXRlID0gU3RhdGUuRkFJTEVEOwotICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5tbWlFcnJvcikpOworICAgICAgICAgICAgc2IuYXBwZW5kKGdldEVycm9yTWVzc2FnZShhcikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaW50W10gaW50cyA9IChpbnRbXSlhci5yZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtU01TRGlzcGF0Y2hlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21TTVNEaXNwYXRjaGVyLmphdmEKaW5kZXggNmFlMzE2ZC4uZDcyMDUxNiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21TTVNEaXNwYXRjaGVyLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21TTVNEaXNwYXRjaGVyLmphdmEKQEAgLTk0LDYgKzk0LDEzIEBACiAgICAgICAgIFNtc01lc3NhZ2Ugc21zID0gKFNtc01lc3NhZ2UpIHNtc2I7CiAgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IGZhbHNlOwogCisgICAgICAgIGlmIChzbXMuaXNUeXBlWmVybygpKSB7CisgICAgICAgICAgICAvLyBBcyBwZXIgM0dQUCBUUyAyMy4wNDAgOS4yLjMuOSwgVHlwZSBaZXJvIG1lc3NhZ2VzIHNob3VsZCBub3QgYmUKKyAgICAgICAgICAgIC8vIERpc3BsYXllZC9TdG9yZWQvTm90aWZpZWQuIFRoZXkgc2hvdWxkIG9ubHkgYmUgYWNrbm93bGVkZ2VkLgorICAgICAgICAgICAgTG9nLmQoVEFHLCAiUmVjZWl2ZWQgc2hvcnQgbWVzc2FnZSB0eXBlIDAsIERvbnQgZGlzcGxheSBvciBzdG9yZSBpdC4gU2VuZCBBY2siKTsKKyAgICAgICAgICAgIHJldHVybiBJbnRlbnRzLlJFU1VMVF9TTVNfSEFORExFRDsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbWVzc2FnZSB3YWl0aW5nIGluZGljYXRvciBtZXNzYWdlcwogICAgICAgICBpZiAoc21zLmlzTVdJU2V0TWVzc2FnZSgpKSB7CiAgICAgICAgICAgICBtR3NtUGhvbmUudXBkYXRlTWVzc2FnZVdhaXRpbmdJbmRpY2F0b3IodHJ1ZSk7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbVNlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtU2VydmljZVN0YXRlVHJhY2tlci5qYXZhCmluZGV4IDUwYjhlYmEuLmQ1MzlmNmYxIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbVNlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbVNlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YQpAQCAtNDAsNyArNDAsNiBAQAogaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuVGVsZXBob255LkludGVudHM7CiBpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlOwogaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlNpZ25hbFN0cmVuZ3RoOwotaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlRlbGVwaG9ueU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuZ3NtLkdzbUNlbGxMb2NhdGlvbjsKIGltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Db25maWc7CkBAIC0xMzAsNyArMTI5LDcgQEAKICAgICAgKi8KICAgICBwcml2YXRlIGJvb2xlYW4gbU5lZWRUb1JlZ0ZvclNpbUxvYWRlZDsKIAotICAgIC8qKiBTdGFydGVkIHRoZSByZWNoZWNrIHByb2Nlc3MgYWZ0ZXIgZmluZGluZyBncHJzIHNob3VsZCByZWdpc3RlcmQgYnV0IG5vdC4gKi8KKyAgICAvKiogU3RhcnRlZCB0aGUgcmVjaGVjayBwcm9jZXNzIGFmdGVyIGZpbmRpbmcgZ3BycyBzaG91bGQgcmVnaXN0ZXJlZCBidXQgbm90LiAqLwogICAgIHByaXZhdGUgYm9vbGVhbiBtU3RhcnRlZEdwcnNSZWdDaGVjayA9IGZhbHNlOwogCiAgICAgLyoqIEFscmVhZHkgc2VudCB0aGUgZXZlbnQtbG9nIGZvciBubyBncHJzIHJlZ2lzdGVyLiAqLwpAQCAtNDE1LDcgKzQxNCw3IEBACiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gUmVsZWFzZSBhbnkgdGVtcG9yYXJ5IGNlbGwgbG9jaywgd2hpY2ggY291bGQgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgICAgLy8gYXF1aXJlZCB0byBhbGxvdyBhIHNpbmdsZS1zaG90IGxvY2F0aW9uIHVwZGF0ZS4KKyAgICAgICAgICAgICAgICAvLyBhY3F1aXJlZCB0byBhbGxvdyBhIHNpbmdsZS1zaG90IGxvY2F0aW9uIHVwZGF0ZS4KICAgICAgICAgICAgICAgICBkaXNhYmxlU2luZ2xlTG9jYXRpb25VcGRhdGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTAwLDkgKzQ5OSw5IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgRVZFTlRfQ0hFQ0tfUkVQT1JUX0dQUlM6Ci0gICAgICAgICAgICAgICAgaWYgKHNzICE9IG51bGwgJiYgIWlzR3Byc0NvbnNpc3RhbnQoZ3Byc1N0YXRlLCBzcy5nZXRTdGF0ZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChzcyAhPSBudWxsICYmICFpc0dwcnNDb25zaXN0ZW50KGdwcnNTdGF0ZSwgc3MuZ2V0U3RhdGUoKSkpIHsKIAotICAgICAgICAgICAgICAgICAgICAvLyBDYW4ndCByZWdpc3RlciBkYXRhIHNldmljZSB3aGlsZSB2b2ljZSBzZXJ2aWNlIGlzIG9rCisgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IHJlZ2lzdGVyIGRhdGEgc2VydmljZSB3aGlsZSB2b2ljZSBzZXJ2aWNlIGlzIG9rCiAgICAgICAgICAgICAgICAgICAgIC8vIGkuZS4gQ1JFRyBpcyBvayB3aGlsZSBDR1JFRyBpcyBub3QKICAgICAgICAgICAgICAgICAgICAgLy8gcG9zc2libGUgYSBuZXR3b3JrIG9yIGJhc2ViYW5kIHNpZGUgZXJyb3IKICAgICAgICAgICAgICAgICAgICAgR3NtQ2VsbExvY2F0aW9uIGxvYyA9ICgoR3NtQ2VsbExvY2F0aW9uKXBob25lLmdldENlbGxMb2NhdGlvbigpKTsKQEAgLTEwMjcsNyArMTAyNiw3IEBACiAgICAgICAgICAgICBwaG9uZS5ub3RpZnlMb2NhdGlvbkNoYW5nZWQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghIGlzR3Byc0NvbnNpc3RhbnQoZ3Byc1N0YXRlLCBzcy5nZXRTdGF0ZSgpKSkgeworICAgICAgICBpZiAoISBpc0dwcnNDb25zaXN0ZW50KGdwcnNTdGF0ZSwgc3MuZ2V0U3RhdGUoKSkpIHsKICAgICAgICAgICAgIGlmICghbVN0YXJ0ZWRHcHJzUmVnQ2hlY2sgJiYgIW1SZXBvcnRlZEdwcnNOb1JlZykgewogICAgICAgICAgICAgICAgIG1TdGFydGVkR3Byc1JlZ0NoZWNrID0gdHJ1ZTsKIApAQCAtMTA0NCwxMyArMTA0MywxMyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIENoZWNrIGlmIEdQUlMgZ290IHJlZ2lzdHJlZCB3aGlsZSB2b2ljZSBpcyByZWdpc3RlcmVkCisgICAgICogQ2hlY2sgaWYgR1BSUyBnb3QgcmVnaXN0ZXJlZCB3aGlsZSB2b2ljZSBpcyByZWdpc3RlcmVkLgogICAgICAqCiAgICAgICogQHBhcmFtIGdwcnNTdGF0ZSBmb3IgR1BSUyByZWdpc3RyYXRpb24gc3RhdGUsIGkuZS4gQ0dSRUcgaW4gR1NNCiAgICAgICogQHBhcmFtIHNlcnZpY2VTdGF0ZSBmb3Igdm9pY2UgcmVnaXN0cmF0aW9uIHN0YXRlLCBpLmUuIENSRUcgaW4gR1NNCiAgICAgICogQHJldHVybiBmYWxzZSBpZiBkZXZpY2Ugb25seSByZWdpc3RlciB0byB2b2ljZSBidXQgbm90IGdwcnMKICAgICAgKi8KLSAgICBwcml2YXRlIGJvb2xlYW4gaXNHcHJzQ29uc2lzdGFudCAoaW50IGdwcnNTdGF0ZSwgaW50IHNlcnZpY2VTdGF0ZSkgeworICAgIHByaXZhdGUgYm9vbGVhbiBpc0dwcnNDb25zaXN0ZW50KGludCBncHJzU3RhdGUsIGludCBzZXJ2aWNlU3RhdGUpIHsKICAgICAgICAgcmV0dXJuICEoKHNlcnZpY2VTdGF0ZSA9PSBTZXJ2aWNlU3RhdGUuU1RBVEVfSU5fU0VSVklDRSkgJiYKICAgICAgICAgICAgICAgICAoZ3Byc1N0YXRlICE9IFNlcnZpY2VTdGF0ZS5TVEFURV9JTl9TRVJWSUNFKSk7CiAgICAgfQpAQCAtMTEwNSwxMyArMTEwNCwxMyBAQAogCiAgICAgICAgIGxvbmcgbmV4dFRpbWU7CiAKLSAgICAgICAgLy8gVE9ETyBEb25lJ3QgcG9sbCBzaWduYWwgc3RyZW5ndGggaWYgc2NyZWVuIGlzIG9mZgorICAgICAgICAvLyBUT0RPIERvbid0IHBvbGwgc2lnbmFsIHN0cmVuZ3RoIGlmIHNjcmVlbiBpcyBvZmYKICAgICAgICAgc2VuZE1lc3NhZ2VEZWxheWVkKG1zZywgUE9MTF9QRVJJT0RfTUlMTElTKTsKICAgICB9CiAKICAgICAvKioKLSAgICAgKiAgc2VuZCBzaWduYWwtc3RyZW5ndGgtY2hhbmdlZCBub3RpZmljYXRpb24gaWYgY2hhbmdlZAotICAgICAqICBDYWxsZWQgYm90aCBmb3Igc29saWNpdGVkIGFuZCB1bnNvbGljaXRlZCBzaWduYWwgc3Rlbmd0aCB1cGRhdGVzCisgICAgICogIFNlbmQgc2lnbmFsLXN0cmVuZ3RoLWNoYW5nZWQgbm90aWZpY2F0aW9uIGlmIGNoYW5nZWQuCisgICAgICogIENhbGxlZCBib3RoIGZvciBzb2xpY2l0ZWQgYW5kIHVuc29saWNpdGVkIHNpZ25hbCBzdHJlbmd0aCB1cGRhdGVzLgogICAgICAqLwogICAgIHByaXZhdGUgdm9pZCBvblNpZ25hbFN0cmVuZ3RoUmVzdWx0KEFzeW5jUmVzdWx0IGFyKSB7CiAgICAgICAgIFNpZ25hbFN0cmVuZ3RoIG9sZFNpZ25hbFN0cmVuZ3RoID0gbVNpZ25hbFN0cmVuZ3RoOwpAQCAtMTMzMiw3ICsxMzMxLDcgQEAKIAogICAgIC8qKgogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBwaG9uZSBpcyBjYW1waW5nIG9uIGEgdGVjaG5vbG9neSAoZWcgVU1UUykKLSAgICAgKiB0aGF0IGNvdWxkIHN1cHBvcnQgdm9pY2UgYW5kIGRhdGEgc2ltdWx0YW5pb3VzbHkuCisgICAgICogdGhhdCBjb3VsZCBzdXBwb3J0IHZvaWNlIGFuZCBkYXRhIHNpbXVsdGFuZW91c2x5LgogICAgICAqLwogICAgIGJvb2xlYW4gaXNDb25jdXJyZW50Vm9pY2VBbmREYXRhKCkgewogICAgICAgICByZXR1cm4gKG5ldHdvcmtUeXBlID49IERBVEFfQUNDRVNTX1VNVFMpOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9TbXNNZXNzYWdlLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL1Ntc01lc3NhZ2UuamF2YQppbmRleCBkNjI3YmFmLi4xMmM2Yjg4IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL1Ntc01lc3NhZ2UuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL1Ntc01lc3NhZ2UuamF2YQpAQCAtMTExLDYgKzExMSwxNCBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIDNHUFAgVFMgMjMuMDQwIDkuMi4zLjkgc3BlY2lmaWVzIHRoYXQgVHlwZSBaZXJvIG1lc3NhZ2VzIGFyZSBpbmRpY2F0ZWQKKyAgICAgKiBieSBUUF9QSUQgZmllbGQgc2V0IHRvIHZhbHVlIDB4NDAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc1R5cGVaZXJvKCkgeworICAgICAgICByZXR1cm4gKHByb3RvY29sSWRlbnRpZmllciA9PSAweDQwKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBUUyAyNy4wMDUgMy40LjEgbGluZXNbMF0gYW5kIGxpbmVzWzFdIGFyZSB0aGUgdHdvIGxpbmVzIHJlYWQgZnJvbSB0aGUKICAgICAgKiArQ01UIHVuc29saWNpdGVkIHJlc3BvbnNlIChQRFUgbW9kZSwgb2YgY291cnNlKQogICAgICAqICArQ01UOiBbJmx0O2FscGhhPl0sPGxlbmd0aD48Q1I+PExGPjxwZHU+CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvdGVzdC9TaW11bGF0ZWRDb21tYW5kcy5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L3Rlc3QvU2ltdWxhdGVkQ29tbWFuZHMuamF2YQppbmRleCAxMWIzZmQ2Li5hMTIwZjUyIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvdGVzdC9TaW11bGF0ZWRDb21tYW5kcy5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS90ZXN0L1NpbXVsYXRlZENvbW1hbmRzLmphdmEKQEAgLTI5LDYgKzI5LDcgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuRGF0YUNhbGxTdGF0ZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmU7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlVVU0luZm87CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmdzbS5DYWxsRmFpbENhdXNlOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uU21zQnJvYWRjYXN0Q29uZmlnSW5mbzsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuZ3NtLlN1cHBTZXJ2aWNlTm90aWZpY2F0aW9uOwpAQCAtNDk2LDYgKzQ5NywyMyBAQAogICAgICAqICByZXRNc2cub2JqID0gQXN5bmNSZXN1bHQgYXIKICAgICAgKiAgYXIuZXhjZXB0aW9uIGNhcnJpZXMgZXhjZXB0aW9uIG9uIGZhaWx1cmUKICAgICAgKiAgYXIudXNlck9iamVjdCBjb250YWlucyB0aGUgb3JpZ25hbCB2YWx1ZSBvZiByZXN1bHQub2JqCisgICAgICogIGFyLnJlc3VsdCBpcyBudWxsIG9uIHN1Y2Nlc3MgYW5kIGZhaWx1cmUKKyAgICAgKgorICAgICAqIENMSVJfREVGQVVMVCAgICAgPT0gb24gInVzZSBzdWJzY3JpcHRpb24gZGVmYXVsdCB2YWx1ZSIKKyAgICAgKiBDTElSX1NVUFBSRVNTSU9OID09IG9uICJDTElSIHN1cHByZXNzaW9uIiAoYWxsb3cgQ0xJIHByZXNlbnRhdGlvbikKKyAgICAgKiBDTElSX0lOVk9DQVRJT04gID09IG9uICJDTElSIGludm9jYXRpb24iIChyZXN0cmljdCBDTEkgcHJlc2VudGF0aW9uKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRpYWwoU3RyaW5nIGFkZHJlc3MsIGludCBjbGlyTW9kZSwgVVVTSW5mbyB1dXNJbmZvLCBNZXNzYWdlIHJlc3VsdCkgeworICAgICAgICBzaW11bGF0ZWRDYWxsU3RhdGUub25EaWFsKGFkZHJlc3MpOworCisgICAgICAgIHJlc3VsdFN1Y2Nlc3MocmVzdWx0LCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiAgcmV0dXJuZWQgbWVzc2FnZQorICAgICAqICByZXRNc2cub2JqID0gQXN5bmNSZXN1bHQgYXIKKyAgICAgKiAgYXIuZXhjZXB0aW9uIGNhcnJpZXMgZXhjZXB0aW9uIG9uIGZhaWx1cmUKKyAgICAgKiAgYXIudXNlck9iamVjdCBjb250YWlucyB0aGUgb3JpZ25hbCB2YWx1ZSBvZiByZXN1bHQub2JqCiAgICAgICogIGFyLnJlc3VsdCBpcyBTdHJpbmcgY29udGFpbmluZyBJTVNJIG9uIHN1Y2Nlc3MKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBnZXRJTVNJKE1lc3NhZ2UgcmVzdWx0KSB7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2FuZHJvaWQvdGVsZXBob255L1Bob25lTnVtYmVyVXRpbHNUZXN0LmphdmEgYi90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2FuZHJvaWQvdGVsZXBob255L1Bob25lTnVtYmVyVXRpbHNUZXN0LmphdmEKaW5kZXggMDI1OTBkMy4uYTc0YzVjMiAxMDA2NDQKLS0tIGEvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9hbmRyb2lkL3RlbGVwaG9ueS9QaG9uZU51bWJlclV0aWxzVGVzdC5qYXZhCisrKyBiL3RlbGVwaG9ueS90ZXN0cy90ZWxlcGhvbnl0ZXN0cy9zcmMvYW5kcm9pZC90ZWxlcGhvbnkvUGhvbmVOdW1iZXJVdGlsc1Rlc3QuamF2YQpAQCAtMTYsMTMgKzE2LDE2IEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255OwogCitpbXBvcnQgYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0Q2FzZTsKIGltcG9ydCBhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLmFubm90YXRpb24uU21hbGxUZXN0OwogaW1wb3J0IGFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyOwogaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlBob25lTnVtYmVyVXRpbHM7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIAogaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKIAotcHVibGljIGNsYXNzIFBob25lTnVtYmVyVXRpbHNUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworcHVibGljIGNsYXNzIFBob25lTnVtYmVyVXRpbHNUZXN0IGV4dGVuZHMgQW5kcm9pZFRlc3RDYXNlIHsKIAogICAgIEBTbWFsbFRlc3QKICAgICBwdWJsaWMgdm9pZCB0ZXN0RXh0cmFjdE5ldHdvcmtQb3J0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CkBAIC04Miw2ICs4NSwxNiBAQAogICAgICAgICBhc3NlcnRFcXVhbHMoIjE3MDA1NTUwMDIwIiwKICAgICAgICAgICAgIFBob25lTnVtYmVyVXRpbHMuY2FsbGVkUGFydHlCQ0RUb1N0cmluZyhiLCAwLCA3KSk7CiAKKyAgICAgICAgYlswXSA9IChieXRlKSAweDgwOyBiWzFdID0gKGJ5dGUpIDB4NzE7IGJbMl0gPSAoYnl0ZSkgMHgwMDsgYlszXSA9IChieXRlKSAweDU1OworICAgICAgICBiWzRdID0gKGJ5dGUpIDB4MDU7IGJbNV0gPSAoYnl0ZSkgMHgyMDsgYls2XSA9IChieXRlKSAweEYwOworICAgICAgICBhc3NlcnRFcXVhbHMoIjE3MDA1NTUwMDIwIiwKKyAgICAgICAgICAgIFBob25lTnVtYmVyVXRpbHMuY2FsbGVkUGFydHlCQ0RUb1N0cmluZyhiLCAwLCA3KSk7CisKKyAgICAgICAgYlswXSA9IChieXRlKSAweDkwOyBiWzFdID0gKGJ5dGUpIDB4NzE7IGJbMl0gPSAoYnl0ZSkgMHgwMDsgYlszXSA9IChieXRlKSAweDU1OworICAgICAgICBiWzRdID0gKGJ5dGUpIDB4MDU7IGJbNV0gPSAoYnl0ZSkgMHgyMDsgYls2XSA9IChieXRlKSAweEYwOworICAgICAgICBhc3NlcnRFcXVhbHMoIisxNzAwNTU1MDAyMCIsCisgICAgICAgICAgICBQaG9uZU51bWJlclV0aWxzLmNhbGxlZFBhcnR5QkNEVG9TdHJpbmcoYiwgMCwgNykpOworCiAgICAgICAgIGJbMF0gPSAoYnl0ZSkgMHg5MTsgYlsxXSA9IChieXRlKSAweDcxOyBiWzJdID0gKGJ5dGUpIDB4MDA7IGJbM10gPSAoYnl0ZSkgMHg1NTsKICAgICAgICAgYls0XSA9IChieXRlKSAweDA1OyBiWzVdID0gKGJ5dGUpIDB4MjA7IGJbNl0gPSAoYnl0ZSkgMHhGMDsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCIrMTcwMDU1NTAwMjAiLApAQCAtNDcyLDQgKzQ4NSwyMCBAQAogICAgICAgICAgICAgICAgIFBob25lTnVtYmVyVXRpbHMuY2RtYUNoZWNrQW5kUHJvY2Vzc1BsdXNDb2RlQnlOdW1iZXJGb3JtYXQoIisxODQ3NTc5NzAwMCIsCiAgICAgICAgICAgICAgICAgUGhvbmVOdW1iZXJVdGlscy5GT1JNQVRfVU5LTk9XTixQaG9uZU51bWJlclV0aWxzLkZPUk1BVF9VTktOT1dOKSk7CiAgICAgfQorCisgICAgLyoqCisgICAgICogQmFzaWMgY2hlY2tzIGZvciB0aGUgVm9pY2VNYWlsIG51bWJlci4KKyAgICAgKi8KKyAgICBAU21hbGxUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFdpdGhOdW1iZXJOb3RFcXVhbFRvVm9pY2VNYWlsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGFzc2VydEZhbHNlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIoIjkxMSIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UoUGhvbmVOdW1iZXJVdGlscy5pc1ZvaWNlTWFpbE51bWJlcigidGVsOjkxMSIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UoUGhvbmVOdW1iZXJVdGlscy5pc1ZvaWNlTWFpbE51bWJlcigiKzE4MDAxMjM0NTY3IikpOworICAgICAgICBhc3NlcnRGYWxzZShQaG9uZU51bWJlclV0aWxzLmlzVm9pY2VNYWlsTnVtYmVyKCIiKSk7CisgICAgICAgIGFzc2VydEZhbHNlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIobnVsbCkpOworICAgICAgICBUZWxlcGhvbnlNYW5hZ2VyIG1UZWxlcGhvbnlNYW5hZ2VyID0KKyAgICAgICAgICAgIChUZWxlcGhvbnlNYW5hZ2VyKWdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpOworICAgICAgICBTdHJpbmcgbVZvaWNlTWFpbE51bWJlciA9IG1UZWxlcGhvbnlNYW5hZ2VyLmdldERlZmF1bHQoKS5nZXRWb2ljZU1haWxOdW1iZXIoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShQaG9uZU51bWJlclV0aWxzLmlzVm9pY2VNYWlsTnVtYmVyKG1Wb2ljZU1haWxOdW1iZXIpKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9DYWxsZXJJbmZvVGVzdC5qYXZhIGIvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ2FsbGVySW5mb1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTVkYWZiCi0tLSAvZGV2L251bGwKKysrIGIvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ2FsbGVySW5mb1Rlc3QuamF2YQpAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255OworCitpbXBvcnQgYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0Q2FzZTsKK2ltcG9ydCBhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLmFubm90YXRpb24uU21hbGxUZXN0OworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuQ2FsbGVySW5mbzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuQ2FsbGVySW5mb0FzeW5jUXVlcnk7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLm9zLkxvb3BlcjsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU3RyaW5nQnVpbGRlclByaW50ZXI7CisKKy8qCisgKiBDaGVjayB0aGUgQ2FsbGVySW5mbyB1dGlsaXR5IGNsYXNzIHdvcmtzIGFzIGV4cGVjdGVkLgorICoKKyAqLworCitwdWJsaWMgY2xhc3MgQ2FsbGVySW5mb1Rlc3QgZXh0ZW5kcyBBbmRyb2lkVGVzdENhc2UgeworICAgIHByaXZhdGUgQ2FsbGVySW5mbyBtSW5mbzsKKyAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcga0VtZXJnZW5jeU51bWJlciA9ICJFbWVyZ2VuY3kgTnVtYmVyIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga1Rva2VuID0gMHhkZWFkYmVlZjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkNhbGxlckluZm9Vbml0VGVzdCI7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBzdXBlci5zZXRVcCgpOworICAgICAgICBtQ29udGV4dCA9IG5ldyBNb2NrQ29udGV4dCgpOworICAgICAgICBtSW5mbyA9IG5ldyBDYWxsZXJJbmZvKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgdGVhckRvd24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIudGVhckRvd24oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVja3MgdGhlIGNhbGxlciBpbmZvIGluc3RhbmNlIGlzIGZsYWdnZWQgYXMgYW4gZW1lcmdlbmN5IGlmCisgICAgICogdGhlIG51bWJlciBpcyBhbiBlbWVyZ2VuY3kgb25lLiBUaGVyZSBpcyBubyB0ZXN0IGZvciB0aGUKKyAgICAgKiBjb250YWN0IGJhc2VkIGNvbnN0cnVjdG9ycyBiZWNhdXNlIGVtZXJnZW5jeSBudW1iZXIgYXJlIG5vdCBpbgorICAgICAqIHRoZSBjb250YWN0IERCLgorICAgICAqLworICAgIEBTbWFsbFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RW1lcmdlbmN5SXNQcm9wZXJseVNldCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5pc0VtZXJnZW5jeU51bWJlcigpKTsKKworICAgICAgICBtSW5mbyA9IENhbGxlckluZm8uZ2V0Q2FsbGVySW5mbyhtQ29udGV4dCwgIjkxMSIpOworICAgICAgICBhc3NlcnRJc1ZhbGlkRW1lcmdlbmN5Q2FsbGVySW5mbygpOworCisgICAgICAgIG1JbmZvID0gQ2FsbGVySW5mby5nZXRDYWxsZXJJbmZvKG1Db250ZXh0LCAidGVsOjkxMSIpOworICAgICAgICBhc3NlcnRJc1ZhbGlkRW1lcmdlbmN5Q2FsbGVySW5mbygpOworCisKKyAgICAgICAgLy8gVGhpcyBvbmUgaGl0cyB0aGUgY29udGVudCByZXNvbHZlci4KKyAgICAgICAgbUluZm8gPSBDYWxsZXJJbmZvLmdldENhbGxlckluZm8obUNvbnRleHQsICIxODAwMTIzNDU2NyIpOworICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5pc0VtZXJnZW5jeU51bWJlcigpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTYW1lIGFzIHRlc3RFbWVyZ2VuY3lJc1Byb3Blcmx5U2V0IGJ1dCB1c2VzIHRoZSBhc3luYyBxdWVyeSBhcGkuCisgICAgICovCisgICAgQFNtYWxsVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RFbWVyZ2VuY3lJc1Byb3Blcmx5U2V0VXNpbmdBc3luY1F1ZXJ5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFF1ZXJ5UnVubmVyIHF1ZXJ5OworCisgICAgICAgIHF1ZXJ5ID0gbmV3IFF1ZXJ5UnVubmVyKCI5MTEiKTsKKyAgICAgICAgcXVlcnkucnVuQW5kQ2hlY2tDb21wbGV0aW9uKCk7CisgICAgICAgIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCk7CisKKyAgICAgICAgcXVlcnkgPSBuZXcgUXVlcnlSdW5uZXIoInRlbDo5MTEiKTsKKyAgICAgICAgcXVlcnkucnVuQW5kQ2hlY2tDb21wbGV0aW9uKCk7CisgICAgICAgIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCk7CisKKyAgICAgICAgcXVlcnkgPSBuZXcgUXVlcnlSdW5uZXIoIjE4MDAxMjM0NTY3Iik7CisgICAgICAgIHF1ZXJ5LnJ1bkFuZENoZWNrQ29tcGxldGlvbigpOworICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5pc0VtZXJnZW5jeU51bWJlcigpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3IgZW1lcmdlbmN5IGNhbGxlciBpbmZvLCBwaG9uZU51bWJlciBzaG91bGQgYmUgc2V0IHRvIHRoZQorICAgICAqIHN0cmluZyBlbWVyZ2VuY3lfY2FsbF9kaWFsb2dfbnVtYmVyX2Zvcl9kaXNwbGF5IGFuZCB0aGUKKyAgICAgKiBwaG90b1Jlc291cmNlIHNob3VsZCBiZSBzZXQgdG8gdGhlIHBpY3R1cmVfZW1lcmdlbmN5IGRyYXdhYmxlLgorICAgICAqLworICAgIEBTbWFsbFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RW1lcmdlbmN5TnVtYmVyQW5kUGhvdG9BcmVTZXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbUluZm8gPSBDYWxsZXJJbmZvLmdldENhbGxlckluZm8obUNvbnRleHQsICI5MTEiKTsKKworICAgICAgICBhc3NlcnRJc1ZhbGlkRW1lcmdlbmN5Q2FsbGVySW5mbygpOworICAgIH0KKworICAgIC8vIFRPRE86IEFkZCBtb3JlIHRlc3RzOgorICAgIC8qKgorICAgICAqIENoZWNrIGlmIHRoZSB2b2ljZSBtYWlsIG51bWJlciBjYW5ub3QgYmUgcmV0cmlldmVkIHRoYXQgdGhlCisgICAgICogb3JpZ2luYWwgcGhvbmUgbnVtYmVyIGlzIHByZXNlcnZlZC4KKyAgICAgKi8KKyAgICAvKioKKyAgICAgKiBDaGVjayB0aGUgbWFya0FzKiBtZXRob2RzIHdvcmsuCisgICAgICovCisKKworICAgIC8vCisgICAgLy8gSGVscGVycworICAgIC8vCisKKyAgICAvLyBQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIE1vY2tSZXNvdXJjZXMuCisgICAgcHVibGljIGNsYXNzIE1vY2tSZXNvdXJjZXMgZXh0ZW5kcyBhbmRyb2lkLnRlc3QubW9jay5Nb2NrUmVzb3VyY2VzCisgICAgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRTdHJpbmcoaW50IHJlc0lkKSB0aHJvd3MgUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzSWQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmVtZXJnZW5jeV9jYWxsX2RpYWxvZ19udW1iZXJfZm9yX2Rpc3BsYXk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBrRW1lcmdlbmN5TnVtYmVyOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiTWlzc2luZyBoYW5kbGluZyBmb3IgcmVzaWQgIiArIHJlc0lkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgTW9ja0NvbnRleHQuCisgICAgcHVibGljIGNsYXNzIE1vY2tDb250ZXh0IGV4dGVuZHMgYW5kcm9pZC50ZXN0Lm1vY2suTW9ja0NvbnRleHQgeworICAgICAgICBwcml2YXRlIENvbnRlbnRSZXNvbHZlciBtUmVzb2x2ZXI7CisgICAgICAgIHByaXZhdGUgUmVzb3VyY2VzIG1SZXNvdXJjZXM7CisKKyAgICAgICAgcHVibGljIE1vY2tDb250ZXh0KCkgeworICAgICAgICAgICAgbVJlc29sdmVyID0gbmV3IGFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgICAgIG1SZXNvdXJjZXMgPSBuZXcgTW9ja1Jlc291cmNlcygpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBDb250ZW50UmVzb2x2ZXIgZ2V0Q29udGVudFJlc29sdmVyKCkgeworICAgICAgICAgICAgcmV0dXJuIG1SZXNvbHZlcjsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgUmVzb3VyY2VzIGdldFJlc291cmNlcygpIHsKKyAgICAgICAgICAgIHJldHVybiBtUmVzb3VyY2VzOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xhc3MgdG8gcnVuIGEgQ2FsbGVySW5mb0FzeW5jUXVlcnkgaW4gYSBzZXBhcmF0ZSB0aHJlYWQsIHdpdGgKKyAgICAgKiBpdHMgb3duIExvb3Blci4gV2UgY2Fubm90IHVzZSB0aGUgbWFpbiBMb29wZXIgYmVjYXVzZSBvbiB0aGUKKyAgICAgKiAxc3QgcXVpdCB0aGUgdGhyZWFkIGlzIG1ha2VkIGRlYWQsIGllIG5vIGZ1cnRoZXIgdGVzdCBjYW4gdXNlCisgICAgICogaXQuIEFsc28gdGhlcmUgaXMgbm90IHdheSB0byBpbmplY3QgYSBMb29wZXIgaW5zdGFuY2UgaW4gdGhlCisgICAgICogcXVlcnksIHNvIHdlIGhhdmUgdG8gdXNlIGEgdGhyZWFkIHdpdGggaXRzIG93biBsb29wZXIuCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBRdWVyeVJ1bm5lciBleHRlbmRzIFRocmVhZAorICAgICAgICAgICAgaW1wbGVtZW50cyBDYWxsZXJJbmZvQXN5bmNRdWVyeS5PblF1ZXJ5Q29tcGxldGVMaXN0ZW5lciB7CisgICAgICAgIHByaXZhdGUgTG9vcGVyIG1Mb29wZXI7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIG1OdW1iZXI7CisgICAgICAgIHByaXZhdGUgYm9vbGVhbiBtQXN5bmNDb21wbGV0ZWQ7CisKKyAgICAgICAgcHVibGljIFF1ZXJ5UnVubmVyKFN0cmluZyBudW1iZXIpIHsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICBtTnVtYmVyID0gbnVtYmVyOworICAgICAgICB9CisKKyAgICAgICAgLy8gUnVuIHRoZSBxdWVyeSBpbiB0aGUgdGhyZWFkLCB3YWl0IGZvciBjb21wbGV0aW9uLgorICAgICAgICBwdWJsaWMgdm9pZCBydW5BbmRDaGVja0NvbXBsZXRpb24oKSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24geworICAgICAgICAgICAgc3RhcnQoKTsKKyAgICAgICAgICAgIGpvaW4oKTsKKyAgICAgICAgICAgIGFzc2VydFRydWUobUFzeW5jQ29tcGxldGVkKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBMb29wZXIucHJlcGFyZSgpOworICAgICAgICAgICAgbUxvb3BlciA9IExvb3Blci5teUxvb3BlcigpOworICAgICAgICAgICAgbUFzeW5jQ29tcGxldGVkID0gZmFsc2U7CisgICAgICAgICAgICAvLyBUaGUgcXVlcnkgd2lsbCBwaWNrIHRoZSB0aHJlYWQgbG9jYWwgbG9vcGVyIHdlJ3ZlIGp1c3QgcHJlcGFyZWQuCisgICAgICAgICAgICBDYWxsZXJJbmZvQXN5bmNRdWVyeS5zdGFydFF1ZXJ5KGtUb2tlbiwgbUNvbnRleHQsIG1OdW1iZXIsIHRoaXMsIG51bGwpOworICAgICAgICAgICAgbUxvb3Blci5sb29wKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBRdWl0IHRoZSBMb29wZXIgb24gdGhlIDFzdCBjYWxsYmFjaworICAgICAgICAvLyAoRVZFTlRfRU1FUkdFTkNZX05VTUJFUikuIFRoZXJlIGlzIGFub3RoZXIgbWVzc2FnZQorICAgICAgICAvLyAoRVZFTlRfRU5EX09GX1FVRVVFKSB0aGF0IHdpbGwgbmV2ZXIgYmUgZGVsaXZlcmVkIGJlY2F1c2UKKyAgICAgICAgLy8gdGhlIHRlc3QgaGFzIGV4aXRlZC4gVGhlIGNvcnJlc3BvbmRpbmcgc3RhY2sgdHJhY2UKKyAgICAgICAgLy8gIkhhbmRsZXJ7eHh4eHh9IHNlbmRpbmcgbWVzc2FnZSB0byBhIEhhbmRsZXIgb24gYSBkZWFkCisgICAgICAgIC8vIHRocmVhZCIgY2FuIGJlIGlnbm9yZWQuCisgICAgICAgIHB1YmxpYyB2b2lkIG9uUXVlcnlDb21wbGV0ZShpbnQgdG9rZW4sIE9iamVjdCBjb29raWUsIENhbGxlckluZm8gaW5mbykgeworICAgICAgICAgICAgbUFzeW5jQ29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG1JbmZvID0gaW5mbzsKKyAgICAgICAgICAgIG1Mb29wZXIucXVpdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRmFpbCBpZiBtSW5mbyBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQgZW1lcmdlbmN5IENhbGxlckluZm8gaW5zdGFuY2UuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGFzc2VydFRydWUobUluZm8uaXNFbWVyZ2VuY3lOdW1iZXIoKSk7CisKKyAgICAgICAgLy8gRm9yIGVtZXJnZW5jeSBjYWxsZXIgaW5mbywgcGhvbmVOdW1iZXIgc2hvdWxkIGJlIHNldCB0byB0aGUKKyAgICAgICAgLy8gc3RyaW5nIGVtZXJnZW5jeV9jYWxsX2RpYWxvZ19udW1iZXJfZm9yX2Rpc3BsYXkgYW5kIHRoZQorICAgICAgICAvLyBwaG90b1Jlc291cmNlIHNob3VsZCBiZSBzZXQgdG8gdGhlIHBpY3R1cmVfZW1lcmdlbmN5IGRyYXdhYmxlLgorICAgICAgICBhc3NlcnRFcXVhbHMoa0VtZXJnZW5jeU51bWJlciwgbUluZm8ucGhvbmVOdW1iZXIpOworICAgICAgICBhc3NlcnRFcXVhbHMoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5waWN0dXJlX2VtZXJnZW5jeSwgbUluZm8ucGhvdG9SZXNvdXJjZSk7CisKKyAgICAgICAgLy8gVGhlIG5hbWUgc2hvdWxkIGJlIG51bGwKKyAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5uYW1lKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1JbmZvLm5hbWVQcmVzZW50YXRpb24pOworICAgICAgICBhc3NlcnROdWxsKG1JbmZvLmNuYXBOYW1lKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1JbmZvLm51bWJlclByZXNlbnRhdGlvbik7CisKKyAgICAgICAgYXNzZXJ0RmFsc2UobUluZm8uY29udGFjdEV4aXN0cyk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCBtSW5mby5wZXJzb25faWQpOworICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5uZWVkVXBkYXRlKTsKKyAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5jb250YWN0UmVmVXJpKTsKKworICAgICAgICBhc3NlcnROdWxsKG1JbmZvLnBob25lTGFiZWwpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUluZm8ubnVtYmVyVHlwZSk7CisgICAgICAgIGFzc2VydE51bGwobUluZm8ubnVtYmVyTGFiZWwpOworCisgICAgICAgIGFzc2VydE51bGwobUluZm8uY29udGFjdFJpbmd0b25lVXJpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UobUluZm8uc2hvdWxkU2VuZFRvVm9pY2VtYWlsKTsKKworICAgICAgICBhc3NlcnROdWxsKG1JbmZvLmNhY2hlZFBob3RvKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UobUluZm8uaXNDYWNoZWRQaG90b0N1cnJlbnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS90ZXN0cy90ZWxlcGhvbnl0ZXN0cy9zcmMvY29tL2FuZHJvaWQvdGVsZXBob255dGVzdC91bml0L0NhbGxlckluZm9Vbml0VGVzdC5qYXZhIGIvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9jb20vYW5kcm9pZC90ZWxlcGhvbnl0ZXN0L3VuaXQvQ2FsbGVySW5mb1VuaXRUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMjRmMTUuLjAwMDAwMDAKLS0tIGEvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9jb20vYW5kcm9pZC90ZWxlcGhvbnl0ZXN0L3VuaXQvQ2FsbGVySW5mb1VuaXRUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQudGVsZXBob255dGVzdC51bml0OwotaW1wb3J0IGFuZHJvaWQudGVzdC5BbmRyb2lkVGVzdENhc2U7Ci1pbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLlNtYWxsVGVzdDsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkNhbGxlckluZm87Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkNhbGxlckluZm9Bc3luY1F1ZXJ5OwotaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7Ci1pbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7Ci1pbXBvcnQgYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2U7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlN0cmluZ0J1aWxkZXJQcmludGVyOwotCi0vKgotICogQ2hlY2sgdGhlIENhbGxlckluZm8gdXRpbGl0eSBjbGFzcyB3b3JrcyBhcyBleHBlY3RlZC4KLSAqCi0gKi8KLQotcHVibGljIGNsYXNzIENhbGxlckluZm9Vbml0VGVzdCBleHRlbmRzIEFuZHJvaWRUZXN0Q2FzZSB7Ci0gICAgcHJpdmF0ZSBDYWxsZXJJbmZvIG1JbmZvOwotICAgIHByaXZhdGUgQ29udGV4dCBtQ29udGV4dDsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBrRW1lcmdlbmN5TnVtYmVyID0gIkVtZXJnZW5jeSBOdW1iZXIiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrVG9rZW4gPSAweGRlYWRiZWVmOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQ2FsbGVySW5mb1VuaXRUZXN0IjsKLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIHN1cGVyLnNldFVwKCk7Ci0gICAgICAgIG1Db250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KCk7Ci0gICAgICAgIG1JbmZvID0gbmV3IENhbGxlckluZm8oKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci50ZWFyRG93bigpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIENoZWNrcyB0aGUgY2FsbGVyIGluZm8gaW5zdGFuY2UgaXMgZmxhZ2dlZCBhcyBhbiBlbWVyZ2VuY3kgaWYKLSAgICAgKiB0aGUgbnVtYmVyIGlzIGFuIGVtZXJnZW5jeSBvbmUuIFRoZXJlIGlzIG5vIHRlc3QgZm9yIHRoZQotICAgICAqIGNvbnRhY3QgYmFzZWQgY29uc3RydWN0b3JzIGJlY2F1c2UgZW1lcmdlbmN5IG51bWJlciBhcmUgbm90IGluCi0gICAgICogdGhlIGNvbnRhY3QgREIuCi0gICAgICovCi0gICAgQFNtYWxsVGVzdAotICAgIHB1YmxpYyB2b2lkIHRlc3RFbWVyZ2VuY3lJc1Byb3Blcmx5U2V0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLmlzRW1lcmdlbmN5TnVtYmVyKCkpOwotCi0gICAgICAgIG1JbmZvID0gQ2FsbGVySW5mby5nZXRDYWxsZXJJbmZvKG1Db250ZXh0LCAiOTExIik7Ci0gICAgICAgIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCk7Ci0KLSAgICAgICAgbUluZm8gPSBDYWxsZXJJbmZvLmdldENhbGxlckluZm8obUNvbnRleHQsICJ0ZWw6OTExIik7Ci0gICAgICAgIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCk7Ci0KLQotICAgICAgICAvLyBUaGlzIG9uZSBoaXRzIHRoZSBjb250ZW50IHJlc29sdmVyLgotICAgICAgICBtSW5mbyA9IENhbGxlckluZm8uZ2V0Q2FsbGVySW5mbyhtQ29udGV4dCwgIjE4MDAxMjM0NTY3Iik7Ci0gICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLmlzRW1lcmdlbmN5TnVtYmVyKCkpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFNhbWUgYXMgdGVzdEVtZXJnZW5jeUlzUHJvcGVybHlTZXQgYnV0IHVzZXMgdGhlIGFzeW5jIHF1ZXJ5IGFwaS4KLSAgICAgKi8KLSAgICBAU21hbGxUZXN0Ci0gICAgcHVibGljIHZvaWQgdGVzdEVtZXJnZW5jeUlzUHJvcGVybHlTZXRVc2luZ0FzeW5jUXVlcnkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgUXVlcnlSdW5uZXIgcXVlcnk7Ci0KLSAgICAgICAgcXVlcnkgPSBuZXcgUXVlcnlSdW5uZXIoIjkxMSIpOwotICAgICAgICBxdWVyeS5ydW5BbmRDaGVja0NvbXBsZXRpb24oKTsKLSAgICAgICAgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKTsKLQotICAgICAgICBxdWVyeSA9IG5ldyBRdWVyeVJ1bm5lcigidGVsOjkxMSIpOwotICAgICAgICBxdWVyeS5ydW5BbmRDaGVja0NvbXBsZXRpb24oKTsKLSAgICAgICAgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKTsKLQotICAgICAgICBxdWVyeSA9IG5ldyBRdWVyeVJ1bm5lcigiMTgwMDEyMzQ1NjciKTsKLSAgICAgICAgcXVlcnkucnVuQW5kQ2hlY2tDb21wbGV0aW9uKCk7Ci0gICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLmlzRW1lcmdlbmN5TnVtYmVyKCkpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEZvciBlbWVyZ2VuY3kgY2FsbGVyIGluZm8sIHBob25lTnVtYmVyIHNob3VsZCBiZSBzZXQgdG8gdGhlCi0gICAgICogc3RyaW5nIGVtZXJnZW5jeV9jYWxsX2RpYWxvZ19udW1iZXJfZm9yX2Rpc3BsYXkgYW5kIHRoZQotICAgICAqIHBob3RvUmVzb3VyY2Ugc2hvdWxkIGJlIHNldCB0byB0aGUgcGljdHVyZV9lbWVyZ2VuY3kgZHJhd2FibGUuCi0gICAgICovCi0gICAgQFNtYWxsVGVzdAotICAgIHB1YmxpYyB2b2lkIHRlc3RFbWVyZ2VuY3lOdW1iZXJBbmRQaG90b0FyZVNldCgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBtSW5mbyA9IENhbGxlckluZm8uZ2V0Q2FsbGVySW5mbyhtQ29udGV4dCwgIjkxMSIpOwotCi0gICAgICAgIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCk7Ci0gICAgfQotCi0gICAgLy8gVE9ETzogQWRkIG1vcmUgdGVzdHM6Ci0gICAgLyoqCi0gICAgICogQ2hlY2sgaWYgdGhlIHZvaWNlIG1haWwgbnVtYmVyIGNhbm5vdCBiZSByZXRyaWV2ZWQgdGhhdCB0aGUKLSAgICAgKiBvcmlnaW5hbCBwaG9uZSBudW1iZXIgaXMgcHJlc2VydmVkLgotICAgICAqLwotICAgIC8qKgotICAgICAqIENoZWNrIHRoZSBtYXJrQXMqIG1ldGhvZHMgd29yay4KLSAgICAgKi8KLQotCi0gICAgLy8KLSAgICAvLyBIZWxwZXJzCi0gICAgLy8KLQotICAgIC8vIFBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgTW9ja1Jlc291cmNlcy4KLSAgICBwdWJsaWMgY2xhc3MgTW9ja1Jlc291cmNlcyBleHRlbmRzIGFuZHJvaWQudGVzdC5tb2NrLk1vY2tSZXNvdXJjZXMKLSAgICB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFN0cmluZyhpbnQgcmVzSWQpIHRocm93cyBSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24gewotICAgICAgICAgICAgc3dpdGNoIChyZXNJZCkgewotICAgICAgICAgICAgICAgIGNhc2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZW1lcmdlbmN5X2NhbGxfZGlhbG9nX251bWJlcl9mb3JfZGlzcGxheToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtFbWVyZ2VuY3lOdW1iZXI7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJNaXNzaW5nIGhhbmRsaW5nIGZvciByZXNpZCAiICsgcmVzSWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBNb2NrQ29udGV4dC4KLSAgICBwdWJsaWMgY2xhc3MgTW9ja0NvbnRleHQgZXh0ZW5kcyBhbmRyb2lkLnRlc3QubW9jay5Nb2NrQ29udGV4dCB7Ci0gICAgICAgIHByaXZhdGUgQ29udGVudFJlc29sdmVyIG1SZXNvbHZlcjsKLSAgICAgICAgcHJpdmF0ZSBSZXNvdXJjZXMgbVJlc291cmNlczsKLQotICAgICAgICBwdWJsaWMgTW9ja0NvbnRleHQoKSB7Ci0gICAgICAgICAgICBtUmVzb2x2ZXIgPSBuZXcgYW5kcm9pZC50ZXN0Lm1vY2suTW9ja0NvbnRlbnRSZXNvbHZlcigpOwotICAgICAgICAgICAgbVJlc291cmNlcyA9IG5ldyBNb2NrUmVzb3VyY2VzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIENvbnRlbnRSZXNvbHZlciBnZXRDb250ZW50UmVzb2x2ZXIoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbVJlc29sdmVyOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBSZXNvdXJjZXMgZ2V0UmVzb3VyY2VzKCkgewotICAgICAgICAgICAgcmV0dXJuIG1SZXNvdXJjZXM7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDbGFzcyB0byBydW4gYSBDYWxsZXJJbmZvQXN5bmNRdWVyeSBpbiBhIHNlcGFyYXRlIHRocmVhZCwgd2l0aAotICAgICAqIGl0cyBvd24gTG9vcGVyLiBXZSBjYW5ub3QgdXNlIHRoZSBtYWluIExvb3BlciBiZWNhdXNlIG9uIHRoZQotICAgICAqIDFzdCBxdWl0IHRoZSB0aHJlYWQgaXMgbWFrZWQgZGVhZCwgaWUgbm8gZnVydGhlciB0ZXN0IGNhbiB1c2UKLSAgICAgKiBpdC4gQWxzbyB0aGVyZSBpcyBub3Qgd2F5IHRvIGluamVjdCBhIExvb3BlciBpbnN0YW5jZSBpbiB0aGUKLSAgICAgKiBxdWVyeSwgc28gd2UgaGF2ZSB0byB1c2UgYSB0aHJlYWQgd2l0aCBpdHMgb3duIGxvb3Blci4KLSAgICAgKi8KLSAgICBwcml2YXRlIGNsYXNzIFF1ZXJ5UnVubmVyIGV4dGVuZHMgVGhyZWFkCi0gICAgICAgICAgICBpbXBsZW1lbnRzIENhbGxlckluZm9Bc3luY1F1ZXJ5Lk9uUXVlcnlDb21wbGV0ZUxpc3RlbmVyIHsKLSAgICAgICAgcHJpdmF0ZSBMb29wZXIgbUxvb3BlcjsKLSAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbU51bWJlcjsKLSAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1Bc3luY0NvbXBsZXRlZDsKLQotICAgICAgICBwdWJsaWMgUXVlcnlSdW5uZXIoU3RyaW5nIG51bWJlcikgewotICAgICAgICAgICAgc3VwZXIoKTsKLSAgICAgICAgICAgIG1OdW1iZXIgPSBudW1iZXI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSdW4gdGhlIHF1ZXJ5IGluIHRoZSB0aHJlYWQsIHdhaXQgZm9yIGNvbXBsZXRpb24uCi0gICAgICAgIHB1YmxpYyB2b2lkIHJ1bkFuZENoZWNrQ29tcGxldGlvbigpIHRocm93cyBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBzdGFydCgpOwotICAgICAgICAgICAgam9pbigpOwotICAgICAgICAgICAgYXNzZXJ0VHJ1ZShtQXN5bmNDb21wbGV0ZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgIExvb3Blci5wcmVwYXJlKCk7Ci0gICAgICAgICAgICBtTG9vcGVyID0gTG9vcGVyLm15TG9vcGVyKCk7Ci0gICAgICAgICAgICBtQXN5bmNDb21wbGV0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIC8vIFRoZSBxdWVyeSB3aWxsIHBpY2sgdGhlIHRocmVhZCBsb2NhbCBsb29wZXIgd2UndmUganVzdCBwcmVwYXJlZC4KLSAgICAgICAgICAgIENhbGxlckluZm9Bc3luY1F1ZXJ5LnN0YXJ0UXVlcnkoa1Rva2VuLCBtQ29udGV4dCwgbU51bWJlciwgdGhpcywgbnVsbCk7Ci0gICAgICAgICAgICBtTG9vcGVyLmxvb3AoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFF1aXQgdGhlIExvb3BlciBvbiB0aGUgMXN0IGNhbGxiYWNrCi0gICAgICAgIC8vIChFVkVOVF9FTUVSR0VOQ1lfTlVNQkVSKS4gVGhlcmUgaXMgYW5vdGhlciBtZXNzYWdlCi0gICAgICAgIC8vIChFVkVOVF9FTkRfT0ZfUVVFVUUpIHRoYXQgd2lsbCBuZXZlciBiZSBkZWxpdmVyZWQgYmVjYXVzZQotICAgICAgICAvLyB0aGUgdGVzdCBoYXMgZXhpdGVkLiBUaGUgY29ycmVzcG9uZGluZyBzdGFjayB0cmFjZQotICAgICAgICAvLyAiSGFuZGxlcnt4eHh4eH0gc2VuZGluZyBtZXNzYWdlIHRvIGEgSGFuZGxlciBvbiBhIGRlYWQKLSAgICAgICAgLy8gdGhyZWFkIiBjYW4gYmUgaWdub3JlZC4KLSAgICAgICAgcHVibGljIHZvaWQgb25RdWVyeUNvbXBsZXRlKGludCB0b2tlbiwgT2JqZWN0IGNvb2tpZSwgQ2FsbGVySW5mbyBpbmZvKSB7Ci0gICAgICAgICAgICBtQXN5bmNDb21wbGV0ZWQgPSB0cnVlOwotICAgICAgICAgICAgbUluZm8gPSBpbmZvOwotICAgICAgICAgICAgbUxvb3Blci5xdWl0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBGYWlsIGlmIG1JbmZvIGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBlbWVyZ2VuY3kgQ2FsbGVySW5mbyBpbnN0YW5jZS4KLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgYXNzZXJ0VHJ1ZShtSW5mby5pc0VtZXJnZW5jeU51bWJlcigpKTsKLQotICAgICAgICAvLyBGb3IgZW1lcmdlbmN5IGNhbGxlciBpbmZvLCBwaG9uZU51bWJlciBzaG91bGQgYmUgc2V0IHRvIHRoZQotICAgICAgICAvLyBzdHJpbmcgZW1lcmdlbmN5X2NhbGxfZGlhbG9nX251bWJlcl9mb3JfZGlzcGxheSBhbmQgdGhlCi0gICAgICAgIC8vIHBob3RvUmVzb3VyY2Ugc2hvdWxkIGJlIHNldCB0byB0aGUgcGljdHVyZV9lbWVyZ2VuY3kgZHJhd2FibGUuCi0gICAgICAgIGFzc2VydEVxdWFscyhrRW1lcmdlbmN5TnVtYmVyLCBtSW5mby5waG9uZU51bWJlcik7Ci0gICAgICAgIGFzc2VydEVxdWFscyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnBpY3R1cmVfZW1lcmdlbmN5LCBtSW5mby5waG90b1Jlc291cmNlKTsKLQotICAgICAgICAvLyBUaGUgbmFtZSBzaG91bGQgYmUgbnVsbAotICAgICAgICBhc3NlcnROdWxsKG1JbmZvLm5hbWUpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUluZm8ubmFtZVByZXNlbnRhdGlvbik7Ci0gICAgICAgIGFzc2VydE51bGwobUluZm8uY25hcE5hbWUpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUluZm8ubnVtYmVyUHJlc2VudGF0aW9uKTsKLQotICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5jb250YWN0RXhpc3RzKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1JbmZvLnBlcnNvbl9pZCk7Ci0gICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLm5lZWRVcGRhdGUpOwotICAgICAgICBhc3NlcnROdWxsKG1JbmZvLmNvbnRhY3RSZWZVcmkpOwotCi0gICAgICAgIGFzc2VydE51bGwobUluZm8ucGhvbmVMYWJlbCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBtSW5mby5udW1iZXJUeXBlKTsKLSAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5udW1iZXJMYWJlbCk7Ci0KLSAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5jb250YWN0UmluZ3RvbmVVcmkpOwotICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5zaG91bGRTZW5kVG9Wb2ljZW1haWwpOwotCi0gICAgICAgIGFzc2VydE51bGwobUluZm8uY2FjaGVkUGhvdG8pOwotICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5pc0NhY2hlZFBob3RvQ3VycmVudCk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9jb20vYW5kcm9pZC90ZWxlcGhvbnl0ZXN0L3VuaXQvUGhvbmVOdW1iZXJVdGlsc1VuaXRUZXN0LmphdmEgYi90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2NvbS9hbmRyb2lkL3RlbGVwaG9ueXRlc3QvdW5pdC9QaG9uZU51bWJlclV0aWxzVW5pdFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQzYzU0OC4uMDAwMDAwMAotLS0gYS90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2NvbS9hbmRyb2lkL3RlbGVwaG9ueXRlc3QvdW5pdC9QaG9uZU51bWJlclV0aWxzVW5pdFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnRlbGVwaG9ueXRlc3QudW5pdDsKLWltcG9ydCBhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlOwotaW1wb3J0IGFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuYW5ub3RhdGlvbi5TbWFsbFRlc3Q7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKLQotaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlBob25lTnVtYmVyVXRpbHM7Ci1pbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKLQotLyoKLSAqIENoZWNrIHRoZSBQaG9uZU51bWJlclV0aWxzIHV0aWxpdHkgY2xhc3Mgd29ya3MgYXMgZXhwZWN0ZWQuCi0gKgotICovCi0KLXB1YmxpYyBjbGFzcyBQaG9uZU51bWJlclV0aWxzVW5pdFRlc3QgZXh0ZW5kcyBBbmRyb2lkVGVzdENhc2UgewotICAgIHByaXZhdGUgU3RyaW5nIG1Wb2ljZU1haWxOdW1iZXI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJQaG9uZU51bWJlclV0aWxzVW5pdFRlc3QiOwotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgc3VwZXIuc2V0VXAoKTsKLSAgICAgICAgLy8gRklYTUU6IFdoeSBhcmUgd2UgZ2V0dGluZyBhIHNlY3VyaXR5IGV4Y2VwdGlvbiBoZXJlPyBUaGUKLSAgICAgICAgLy8gcGVybWlzc2lvbiBpcyBkZWNsYXJlZCBpbiB0aGUgbWFuaWZlc3QuLi4uCi0gICAgICAgIC8vIG1Wb2ljZU1haWxOdW1iZXIgPSBUZWxlcGhvbnlNYW5hZ2VyLmdldERlZmF1bHQoKS5nZXRWb2ljZU1haWxOdW1iZXIoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci50ZWFyRG93bigpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEJhc2ljIGNoZWNrcyBmb3IgdGhlIFZvaWNlTWFpbCBudW1iZXIuCi0gICAgICogQXNzdW1lcyBSRUFEX1BIT05FX1NUQVRFIHBlcm1pc3Npb24gYW5kIHdlIGRvbid0IGhhdmUgaXQuCi0gICAgICovCi0gICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgd2UgZG9uJ3QgaGF2ZSB0aGUgcGVybWlzc2lvbiBkZWNsYXJlZCBpbiB0aGUgbWFuaWZlc3QuCi0gICAgQFNtYWxsVGVzdAotICAgIHB1YmxpYyB2b2lkIHRlc3RXaXRoTnVtYmVyTm90RXF1YWxUb1ZvaWNlTWFpbCgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBhc3NlcnRGYWxzZShQaG9uZU51bWJlclV0aWxzLmlzVm9pY2VNYWlsTnVtYmVyKCI5MTEiKSk7Ci0gICAgICAgIGFzc2VydEZhbHNlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIoInRlbDo5MTEiKSk7Ci0gICAgICAgIGFzc2VydEZhbHNlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIoIisxODAwMTIzNDU2NyIpKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UoUGhvbmVOdW1iZXJVdGlscy5pc1ZvaWNlTWFpbE51bWJlcigiIikpOwotICAgICAgICBhc3NlcnRGYWxzZShQaG9uZU51bWJlclV0aWxzLmlzVm9pY2VNYWlsTnVtYmVyKG51bGwpKTsKLSAgICAgICAgLy8gRklYTUU6Ci0gICAgICAgIC8vIGFzc2VydFRydWUoUGhvbmVOdW1iZXJVdGlscy5pc1ZvaWNlTWFpbE51bWJlcihtVm9pY2VNYWlsTnVtYmVyKSk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS90ZXN0LXJ1bm5lci9zcmMvYW5kcm9pZC90ZXN0L1NlcnZpY2VUZXN0Q2FzZS5qYXZhIGIvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9TZXJ2aWNlVGVzdENhc2UuamF2YQppbmRleCBmY2I5ZDU1Li5kOTI2MmY2IDEwMDY0NAotLS0gYS90ZXN0LXJ1bm5lci9zcmMvYW5kcm9pZC90ZXN0L1NlcnZpY2VUZXN0Q2FzZS5qYXZhCisrKyBiL3Rlc3QtcnVubmVyL3NyYy9hbmRyb2lkL3Rlc3QvU2VydmljZVRlc3RDYXNlLmphdmEKQEAgLTE0Nyw5ICsxNDcsNiBAQAogICAgICAqIEBwYXJhbSBpbnRlbnQgVGhlIEludGVudCBhcyBpZiBzdXBwbGllZCB0byB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkNvbnRleHQjc3RhcnRTZXJ2aWNlfS4KICAgICAgKi8KICAgICBwcm90ZWN0ZWQgdm9pZCBzdGFydFNlcnZpY2UoSW50ZW50IGludGVudCkgewotICAgICAgICBhc3NlcnRGYWxzZShtU2VydmljZVN0YXJ0ZWQpOwotICAgICAgICBhc3NlcnRGYWxzZShtU2VydmljZUJvdW5kKTsKLSAgICAgICAgCiAgICAgICAgIGlmICghbVNlcnZpY2VBdHRhY2hlZCkgewogICAgICAgICAgICAgc2V0dXBTZXJ2aWNlKCk7CiAgICAgICAgIH0KQEAgLTE1OSw3ICsxNTYsNyBAQAogICAgICAgICAgICAgbVNlcnZpY2Uub25DcmVhdGUoKTsKICAgICAgICAgICAgIG1TZXJ2aWNlQ3JlYXRlZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgbVNlcnZpY2Uub25TdGFydChpbnRlbnQsIG1TZXJ2aWNlSWQpOworICAgICAgICBtU2VydmljZS5vblN0YXJ0Q29tbWFuZChpbnRlbnQsIDAsIG1TZXJ2aWNlSWQpOwogICAgICAgICAKICAgICAgICAgbVNlcnZpY2VTdGFydGVkID0gdHJ1ZTsKICAgICB9CkBAIC0xODMsOSArMTgwLDYgQEAKICAgICAgKiBAcmV0dXJuIFJldHVybiBhbiBJQmluZGVyIGZvciBtYWtpbmcgZnVydGhlciBjYWxscyBpbnRvIHRoZSBTZXJ2aWNlLgogICAgICAqLwogICAgIHByb3RlY3RlZCBJQmluZGVyIGJpbmRTZXJ2aWNlKEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgYXNzZXJ0RmFsc2UobVNlcnZpY2VTdGFydGVkKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UobVNlcnZpY2VCb3VuZCk7Ci0gICAgICAgIAogICAgICAgICBpZiAoIW1TZXJ2aWNlQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHNldHVwU2VydmljZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS90ZXN0LXJ1bm5lci9zcmMvYW5kcm9pZC90ZXN0L21vY2svTW9ja1BhY2thZ2VNYW5hZ2VyLmphdmEgYi90ZXN0LXJ1bm5lci9zcmMvYW5kcm9pZC90ZXN0L21vY2svTW9ja1BhY2thZ2VNYW5hZ2VyLmphdmEKaW5kZXggNDk2NGYwMy4uM2U3N2I5YiAxMDA2NDQKLS0tIGEvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9tb2NrL01vY2tQYWNrYWdlTWFuYWdlci5qYXZhCisrKyBiL3Rlc3QtcnVubmVyL3NyYy9hbmRyb2lkL3Rlc3QvbW9jay9Nb2NrUGFja2FnZU1hbmFnZXIuamF2YQpAQCAtMjY3LDYgKzI2NywyNiBAQAogICAgIHB1YmxpYyBEcmF3YWJsZSBnZXRBcHBsaWNhdGlvbkljb24oU3RyaW5nIHBhY2thZ2VOYW1lKSB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIHsKICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7CiAgICAgfQorICAgIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBEcmF3YWJsZSBnZXRBY3Rpdml0eUxvZ28oQ29tcG9uZW50TmFtZSBhY3Rpdml0eU5hbWUpIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgRHJhd2FibGUgZ2V0QWN0aXZpdHlMb2dvKEludGVudCBpbnRlbnQpIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgRHJhd2FibGUgZ2V0QXBwbGljYXRpb25Mb2dvKEFwcGxpY2F0aW9uSW5mbyBpbmZvKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBEcmF3YWJsZSBnZXRBcHBsaWNhdGlvbkxvZ28oU3RyaW5nIHBhY2thZ2VOYW1lKSB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7CisgICAgfQogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIENoYXJTZXF1ZW5jZSBnZXRUZXh0KFN0cmluZyBwYWNrYWdlTmFtZSwgaW50IHJlc2lkLCBBcHBsaWNhdGlvbkluZm8gYXBwSW5mbykgewpkaWZmIC0tZ2l0IGEvdGVzdHMvRHBpVGVzdC9BbmRyb2lkLm1rIGIvdGVzdHMvRHBpVGVzdC9BbmRyb2lkLm1rCmluZGV4IDM1OTZjMzkuLjU0NjNhMTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL0RwaVRlc3QvQW5kcm9pZC5taworKysgYi90ZXN0cy9EcGlUZXN0L0FuZHJvaWQubWsKQEAgLTcsNCArNyw2IEBACiAKIExPQ0FMX01PRFVMRV9UQUdTIDo9IHRlc3RzCiAKK0xPQ0FMX0FBUFRfRkxBR1MgPSAtYyAxMjBkcGkgLWMgMjQwZHBpIC1jIDE2MGRwaQorCiBpbmNsdWRlICQoQlVJTERfUEFDS0FHRSkKZGlmZiAtLWdpdCBhL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2UtbG9uZy9zdHJpbmdzLnhtbCBiL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2UtbG9uZy9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmFiNjYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvRHBpVGVzdC9yZXMvdmFsdWVzLXhsYXJnZS1sb25nL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzPgorICAgIDxzdHJpbmcgbmFtZT0iYWN0X3RpdGxlIj5EcGlUZXN0OiBYTGFyZ2UgTG9uZzwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS90ZXN0cy9EcGlUZXN0L3Jlcy92YWx1ZXMteGxhcmdlLW5vdGxvbmcvc3RyaW5ncy54bWwgYi90ZXN0cy9EcGlUZXN0L3Jlcy92YWx1ZXMteGxhcmdlLW5vdGxvbmcvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVlYmJmNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2Utbm90bG9uZy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcz4KKyAgICA8c3RyaW5nIG5hbWU9ImFjdF90aXRsZSI+RHBpVGVzdDogWExhcmdlIE5vdExvbmc8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvdGVzdHMvRHBpVGVzdC9yZXMvdmFsdWVzLXhsYXJnZS9zdHJpbmdzLnhtbCBiL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2Uvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U1ZDRiMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2Uvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxyZXNvdXJjZXM+CisgICAgPHN0cmluZyBuYW1lPSJhY3RfdGl0bGUiPkRwaVRlc3Q6IFhMYXJnZTwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS90ZXN0cy9EcGlUZXN0L3NyYy9jb20vZ29vZ2xlL2FuZHJvaWQvdGVzdC9kcGkvRHBpVGVzdEFjdGl2aXR5LmphdmEgYi90ZXN0cy9EcGlUZXN0L3NyYy9jb20vZ29vZ2xlL2FuZHJvaWQvdGVzdC9kcGkvRHBpVGVzdEFjdGl2aXR5LmphdmEKaW5kZXggY2RlMmM3MS4uNjE5MmEzYyAxMDA2NDQKLS0tIGEvdGVzdHMvRHBpVGVzdC9zcmMvY29tL2dvb2dsZS9hbmRyb2lkL3Rlc3QvZHBpL0RwaVRlc3RBY3Rpdml0eS5qYXZhCisrKyBiL3Rlc3RzL0RwaVRlc3Qvc3JjL2NvbS9nb29nbGUvYW5kcm9pZC90ZXN0L2RwaS9EcGlUZXN0QWN0aXZpdHkuamF2YQpAQCAtNTYsNyArNTYsOCBAQAogICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvIGFpID0gYXBwLmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0QXBwbGljYXRpb25JbmZvKAogICAgICAgICAgICAgICAgICAgICAiY29tLmdvb2dsZS5hbmRyb2lkLnRlc3QuZHBpIiwgMCk7CiAgICAgICAgICAgICBpZiAobm9Db21wYXQpIHsKLSAgICAgICAgICAgICAgICBhaS5mbGFncyB8PSBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TCisgICAgICAgICAgICAgICAgYWkuZmxhZ3MgfD0gQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlMKKyAgICAgICAgICAgICAgICAgICAgfCBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TCiAgICAgICAgICAgICAgICAgICAgIHwgQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfTk9STUFMX1NDUkVFTlMKICAgICAgICAgICAgICAgICAgICAgfCBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19TTUFMTF9TQ1JFRU5TCiAgICAgICAgICAgICAgICAgICAgIHwgQXBwbGljYXRpb25JbmZvLkZMQUdfUkVTSVpFQUJMRV9GT1JfU0NSRUVOUwpkaWZmIC0tZ2l0IGEvdGVzdHMvRml4VmlicmF0ZVNldHRpbmcvQW5kcm9pZC5tayBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE4OGU1YQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL0FuZHJvaWQubWsKQEAgLTAsMCArMSwxMSBAQAorTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQoY2FsbCBhbGwtc3ViZGlyLWphdmEtZmlsZXMpCisKK0xPQ0FMX1BBQ0tBR0VfTkFNRSA6PSBGaXhWaWJyYXRlU2V0dGluZworTE9DQUxfQ0VSVElGSUNBVEUgOj0gcGxhdGZvcm0KKworaW5jbHVkZSAkKEJVSUxEX1BBQ0tBR0UpCmRpZmYgLS1naXQgYS90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9BbmRyb2lkTWFuaWZlc3QueG1sIGIvdGVzdHMvRml4VmlicmF0ZVNldHRpbmcvQW5kcm9pZE1hbmlmZXN0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDdkNjgyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvRml4VmlicmF0ZVNldHRpbmcvQW5kcm9pZE1hbmlmZXN0LnhtbApAQCAtMCwwICsxLDE0IEBACis8bWFuaWZlc3QgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5maXh2aWJyYXRlc2V0dGluZyI+CisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5WSUJSQVRFIiAvPgorCisgICAgPGFwcGxpY2F0aW9uPgorICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJGaXhWaWJyYXRlU2V0dGluZyIgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9hcHBfbGFiZWwiPgorICAgICAgICAgICAgPGludGVudC1maWx0ZXI+CisgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOIiAvPgorICAgICAgICAgICAgICAgIDxjYXRlZ29yeSBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkRFRkFVTFQiIC8+CisgICAgICAgICAgICAgICAgPGNhdGVnb3J5IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTEFVTkNIRVIiIC8+CisgICAgICAgICAgICA8L2ludGVudC1maWx0ZXI+CisgICAgICAgIDwvYWN0aXZpdHk+CisgICAgPC9hcHBsaWNhdGlvbj4KKzwvbWFuaWZlc3Q+CmRpZmYgLS1naXQgYS90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193YXJuaW5nLnBuZyBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dhcm5pbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3Yzg4NTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193YXJuaW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193YXJuaW5nLnBuZyBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dhcm5pbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMDBmNDcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193YXJuaW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvbGF5b3V0L2ZpeF92aWJyYXRlLnhtbCBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3Jlcy9sYXlvdXQvZml4X3ZpYnJhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MDVlNjUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvbGF5b3V0L2ZpeF92aWJyYXRlLnhtbApAQCAtMCwwICsxLDQ2IEBACis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgorICAgID4KKworICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2N1cnJlbnRfc2V0dGluZyIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImxlZnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iMzBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSI1MGRwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI4ZHAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iNGRwIgorICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIyMHNwIgorICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmZmZmZmZmIgorICAgICAgICAvPgorCisgICAgPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlciIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKKyAgICAgICAgPgorICAgICAgICA8QnV0dG9uIGFuZHJvaWQ6aWQ9IkAraWQvZml4IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2ZpeCIKKyAgICAgICAgICAgIC8+CisKKyAgICAgICAgPEJ1dHRvbiBhbmRyb2lkOmlkPSJAK2lkL3VuZml4IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3VuZml4IgorICAgICAgICAgICAgLz4KKyAgICA8L0xpbmVhckxheW91dD4KKworICAgIDxCdXR0b24gYW5kcm9pZDppZD0iQCtpZC90ZXN0IgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvdGVzdCIKKyAgICAgICAgLz4KKworPC9MaW5lYXJMYXlvdXQ+CisKZGlmZiAtLWdpdCBhL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWNlZjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwX2xhYmVsIj5GaXggVmlicmF0ZTwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idGl0bGUiPkZpeCB2aWJyYXRlIHNldHRpbmc8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImN1cnJlbnRfc2V0dGluZyI+IlJpbmdlcjogJTEkc1xuTm90aWZpY2F0aW9uOiAlMiRzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZml4Ij5GaXggdGhlIHNldHRpbmc8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZml4Ij5CcmVhayB0aGUgc2V0dGluZzwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idGVzdCI+VGVzdCB0aGUgc2V0dGluZzwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CisKZGlmZiAtLWdpdCBhL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3NyYy9jb20vYW5kcm9pZC9maXh2aWJyYXRlc2V0dGluZy9GaXhWaWJyYXRlU2V0dGluZy5qYXZhIGIvdGVzdHMvRml4VmlicmF0ZVNldHRpbmcvc3JjL2NvbS9hbmRyb2lkL2ZpeHZpYnJhdGVzZXR0aW5nL0ZpeFZpYnJhdGVTZXR0aW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3ZWE3OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3NyYy9jb20vYW5kcm9pZC9maXh2aWJyYXRlc2V0dGluZy9GaXhWaWJyYXRlU2V0dGluZy5qYXZhCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5maXh2aWJyYXRlc2V0dGluZzsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb25NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworCitwdWJsaWMgY2xhc3MgRml4VmlicmF0ZVNldHRpbmcgZXh0ZW5kcyBBY3Rpdml0eSBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyCit7CisgICAgQXVkaW9NYW5hZ2VyIG1BdWRpb01hbmFnZXI7CisgICAgTm90aWZpY2F0aW9uTWFuYWdlciBtTm90aWZpY2F0aW9uTWFuYWdlcjsKKyAgICBUZXh0VmlldyBtQ3VycmVudFNldHRpbmc7CisgICAgVmlldyBtRml4OworICAgIFZpZXcgbVVuZml4OworICAgIFZpZXcgbVRlc3Q7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZShCdW5kbGUgaWNpY2xlKSB7CisgICAgICAgIHN1cGVyLm9uQ3JlYXRlKGljaWNsZSk7CisKKyAgICAgICAgc2V0Q29udGVudFZpZXcoUi5sYXlvdXQuZml4X3ZpYnJhdGUpOworCisgICAgICAgIG1BdWRpb01hbmFnZXIgPSAoQXVkaW9NYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoQVVESU9fU0VSVklDRSk7CisgICAgICAgIG1Ob3RpZmljYXRpb25NYW5hZ2VyID0gKE5vdGlmaWNhdGlvbk1hbmFnZXIpZ2V0U3lzdGVtU2VydmljZShOT1RJRklDQVRJT05fU0VSVklDRSk7CisKKyAgICAgICAgbUN1cnJlbnRTZXR0aW5nID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChSLmlkLmN1cnJlbnRfc2V0dGluZyk7CisKKyAgICAgICAgbUZpeCA9IGZpbmRWaWV3QnlJZChSLmlkLmZpeCk7CisgICAgICAgIG1GaXguc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworCisgICAgICAgIG1VbmZpeCA9IGZpbmRWaWV3QnlJZChSLmlkLnVuZml4KTsKKyAgICAgICAgbVVuZml4LnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKworICAgICAgICBtVGVzdCA9IGZpbmRWaWV3QnlJZChSLmlkLnRlc3QpOworICAgICAgICBtVGVzdC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIHN1cGVyLm9uUmVzdW1lKCk7CisKKyAgICAgICAgdXBkYXRlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0U2V0dGluZ1ZhbHVlKGludCB2aWJyYXRlVHlwZSkgeworICAgICAgICBpbnQgc2V0dGluZyA9IG1BdWRpb01hbmFnZXIuZ2V0VmlicmF0ZVNldHRpbmcodmlicmF0ZVR5cGUpOworICAgICAgICBzd2l0Y2ggKHNldHRpbmcpIHsKKyAgICAgICAgICAgIGNhc2UgQXVkaW9NYW5hZ2VyLlZJQlJBVEVfU0VUVElOR19PRkY6CisgICAgICAgICAgICAgICAgcmV0dXJuICJvZmYiOworICAgICAgICAgICAgY2FzZSBBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX09OOgorICAgICAgICAgICAgICAgIHJldHVybiAib24iOworICAgICAgICAgICAgY2FzZSBBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX09OTFlfU0lMRU5UOgorICAgICAgICAgICAgICAgIHJldHVybiAic2lsZW50LW9ubHkiOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gInVua25vd24iOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgaWYgKHYgPT0gbUZpeCkgeworICAgICAgICAgICAgZml4KCk7CisgICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgfSBlbHNlIGlmICh2ID09IG1VbmZpeCkgeworICAgICAgICAgICAgdW5maXgoKTsKKyAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVRlc3QpIHsKKyAgICAgICAgICAgIHRlc3QoKTsKKyAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZSgpIHsKKyAgICAgICAgU3RyaW5nIHJpbmdlciA9IGdldFNldHRpbmdWYWx1ZShBdWRpb01hbmFnZXIuVklCUkFURV9UWVBFX1JJTkdFUik7CisgICAgICAgIFN0cmluZyBub3RpZmljYXRpb24gPSBnZXRTZXR0aW5nVmFsdWUoQXVkaW9NYW5hZ2VyLlZJQlJBVEVfVFlQRV9OT1RJRklDQVRJT04pOworICAgICAgICBTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhSLnN0cmluZy5jdXJyZW50X3NldHRpbmcsIHJpbmdlciwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgbUN1cnJlbnRTZXR0aW5nLnNldFRleHQodGV4dCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGZpeCgpIHsKKyAgICAgICAgbUF1ZGlvTWFuYWdlci5zZXRWaWJyYXRlU2V0dGluZyhBdWRpb01hbmFnZXIuVklCUkFURV9UWVBFX05PVElGSUNBVElPTiwKKyAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX09OKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdW5maXgoKSB7CisgICAgICAgIG1BdWRpb01hbmFnZXIuc2V0VmlicmF0ZVNldHRpbmcoQXVkaW9NYW5hZ2VyLlZJQlJBVEVfVFlQRV9OT1RJRklDQVRJT04sCisgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLlZJQlJBVEVfU0VUVElOR19PRkYpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0KCkgeworICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oUi5kcmF3YWJsZS5zdGF0X3N5c193YXJuaW5nLCAiVGVzdCBub3RpZmljYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCh0aGlzLCBGaXhWaWJyYXRlU2V0dGluZy5jbGFzcyk7CisgICAgICAgIFBlbmRpbmdJbnRlbnQgcGVuZGluZyA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkodGhpcywgMCwgaW50ZW50LCAwKTsKKyAgICAgICAgbi5zZXRMYXRlc3RFdmVudEluZm8odGhpcywgIlRlc3Qgbm90aWZpY2F0aW9uIiwgIlRlc3Qgbm90aWZpY2F0aW9uIiwgcGVuZGluZyk7CisKKyAgICAgICAgbi52aWJyYXRlID0gbmV3IGxvbmdbXSB7IDAsIDcwMCwgNTAwLCAxMDAwIH07CisgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUw7CisgICAgICAgIG1Ob3RpZmljYXRpb25NYW5hZ2VyLm5vdGlmeSgxLCBuKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3Rlc3RzL1N0YXR1c0Jhci9BbmRyb2lkLm1rIGIvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWQubWsKaW5kZXggMThmY2FkMC4uNTAyNjU3ZiAxMDA2NDQKLS0tIGEvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWQubWsKKysrIGIvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWQubWsKQEAgLTgsNCArOCw2IEBACiBMT0NBTF9QQUNLQUdFX05BTUUgOj0gU3RhdHVzQmFyVGVzdAogTE9DQUxfQ0VSVElGSUNBVEUgOj0gcGxhdGZvcm0KIAorTE9DQUxfUFJPR1VBUkRfRU5BQkxFRCA6PSBkaXNhYmxlZAorCiBpbmNsdWRlICQoQlVJTERfUEFDS0FHRSkKZGlmZiAtLWdpdCBhL3Rlc3RzL1N0YXR1c0Jhci9BbmRyb2lkTWFuaWZlc3QueG1sIGIvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWRNYW5pZmVzdC54bWwKaW5kZXggMjFmYjk1MS4uYzFjYTYxOCAxMDA2NDQKLS0tIGEvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWRNYW5pZmVzdC54bWwKKysrIGIvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTM1LDUgKzM1LDcgQEAKICAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUiIgLz4KICAgICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KICAgICAgICAgPC9hY3Rpdml0eT4KKyAgICAgICAgPGFjdGl2aXR5IGFuZHJvaWQ6bmFtZT0iVGVzdEFsZXJ0QWN0aXZpdHkiIGFuZHJvaWQ6dGhlbWU9IkBhbmRyb2lkOnN0eWxlL1RoZW1lLkRpYWxvZyI+CisgICAgICAgIDwvYWN0aXZpdHk+CiAgICAgPC9hcHBsaWNhdGlvbj4KIDwvbWFuaWZlc3Q+CmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcGhvbmUucG5nIGIvdGVzdHMvU3RhdHVzQmFyL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Bob25lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODE1NTUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvU3RhdHVzQmFyL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Bob25lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcGhvbmUucG5nIGIvdGVzdHMvU3RhdHVzQmFyL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Bob25lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDJhYmM3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvU3RhdHVzQmFyL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Bob25lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvcmVzL2xheW91dC90ZXN0X2FsZXJ0LnhtbCBiL3Rlc3RzL1N0YXR1c0Jhci9yZXMvbGF5b3V0L3Rlc3RfYWxlcnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNTE0NmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9TdGF0dXNCYXIvcmVzL2xheW91dC90ZXN0X2FsZXJ0LnhtbApAQCAtMCwwICsxLDU3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPExpbmVhckxheW91dAorICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIj4KKworICAgIDxMaW5lYXJMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlciIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfaG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgID4KKworICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9hbGVydFRpdGxlIgorICAgICAgICAgICAgc3R5bGU9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VMYXJnZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZz0iNWRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJlbmQiCisgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlciIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIgLz4KKworICAgICAgICA8TGluZWFyTGF5b3V0CisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBzdHlsZT0iQGFuZHJvaWQ6c3R5bGUvQnV0dG9uQmFyIj4KKworICAgICAgICAgICAgPEJ1dHRvbgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc25vb3plIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIzIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6b25DbGljaz0iZGlzbWlzcyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IlNub296ZSIgLz4KKworICAgICAgICAgICAgPCEtLSBibGFuayBzdHJldGNoYWJsZSB2aWV3IC0tPgorICAgICAgICAgICAgPFZpZXcKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMmRpcCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjJkaXAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iZmlsbF9ob3Jpem9udGFsIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIvPgorCisgICAgICAgICAgICA8QnV0dG9uCisgICAgICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9kaXNtaXNzIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIzIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6b25DbGljaz0iZGlzbWlzcyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkRpc21pc3MiIC8+CisKKyAgICAgICAgPC9MaW5lYXJMYXlvdXQ+CisKKyAgICA8L0xpbmVhckxheW91dD4KKworPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvc3JjL2NvbS9hbmRyb2lkL3N0YXR1c2JhcnRlc3QvTm90aWZpY2F0aW9uVGVzdExpc3QuamF2YSBiL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9Ob3RpZmljYXRpb25UZXN0TGlzdC5qYXZhCmluZGV4IGY1NDgxNDUuLjRkMDcxZTMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9Ob3RpZmljYXRpb25UZXN0TGlzdC5qYXZhCisrKyBiL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9Ob3RpZmljYXRpb25UZXN0TGlzdC5qYXZhCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyOwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwogaW1wb3J0IGFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb247CkBAIC00Myw2ICs0NCw3IEBACiAgICAgVmlicmF0b3IgbVZpYnJhdG9yID0gbmV3IFZpYnJhdG9yKCk7CiAgICAgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7CiAKKyAgICBsb25nIG1BY3Rpdml0eUNyZWF0ZVRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKICAgICBsb25nIG1DaHJvbm9tZXRlckJhc2UgPSAwOwogCiAgICAgQE92ZXJyaWRlCkBAIC02MCw3ICs2Miw3IEBACiAgICAgcHJpdmF0ZSBUZXN0W10gbVRlc3RzID0gbmV3IFRlc3RbXSB7CiAgICAgICAgIG5ldyBUZXN0KCJPZmYgYW5kIHNvdW5kIikgewogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgIFBvd2VyTWFuYWdlciBwbSA9IChQb3dlck1hbmFnZXIpTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcy5nZXRTeXN0ZW1TZXJ2aWNlKCJwb3dlciIpOworICAgICAgICAgICAgICAgIFBvd2VyTWFuYWdlciBwbSA9IChQb3dlck1hbmFnZXIpTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcy5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuUE9XRVJfU0VSVklDRSk7CiAgICAgICAgICAgICAgICAgUG93ZXJNYW5hZ2VyLldha2VMb2NrIHdsID0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG0ubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLCAic291bmQiKTsKICAgICAgICAgICAgICAgICB3bC5hY3F1aXJlKCk7CkBAIC0xMjEsMTkgKzEyMyw0OSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9LAogCi0gICAgICAgIG5ldyBUZXN0KCJCYWQgcmVzb3VyY2UgIzIiKSB7Ci0gICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb25UZXN0TGlzdC50aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIuZHJhd2FibGUuaWNfc3RhdHVzYmFyX21pc3NlZGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCktKDEwMDAqNjAqNjAqMjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoNDUzKSAxMjMtMjMyOCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsIG51bGwpOwotICAgICAgICAgICAgICAgIG4uY29udGVudFZpZXcuc2V0SW50KDEgLypib2d1cyovLCAiYm9ndXMgbWV0aG9kIiwgNjY2KTsKLSAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDIsIG4pOworICAgICAgICBuZXcgVGVzdCgiQmFkIEljb24gIzEgKHdoZW49Y3JlYXRlKSIpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oUi5sYXlvdXQuY2hyb25vX25vdGlmaWNhdGlvbiAvKiBub3QgYW4gaWNvbiAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1BY3Rpdml0eUNyZWF0ZVRpbWUpOworICAgICAgICAgICAgICAgIG4uc2V0TGF0ZXN0RXZlbnRJbmZvKE5vdGlmaWNhdGlvblRlc3RMaXN0LnRoaXMsICJQZXJzaXN0ZW50ICMxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBpcyB0aGUgc2FtZSBub3RpZmljYXRpb24hISEiLCBtYWtlSW50ZW50KCkpOworICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKKyAgICAgICAgbmV3IFRlc3QoIkJhZCBJY29uICMxICh3aGVuPW5vdykiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBuZXcgTm90aWZpY2F0aW9uKFIubGF5b3V0LmNocm9ub19ub3RpZmljYXRpb24gLyogbm90IGFuIGljb24gKi8sCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7CisgICAgICAgICAgICAgICAgbi5zZXRMYXRlc3RFdmVudEluZm8oTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcywgIlBlcnNpc3RlbnQgIzEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIHRoZSBzYW1lIG5vdGlmaWNhdGlvbiEhISIsIG1ha2VJbnRlbnQoKSk7CisgICAgICAgICAgICAgICAgbU5NLm5vdGlmeSgxLCBuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBuZXcgVGVzdCgiQmFkIHJlc291cmNlICMxICh3aGVuPWNyZWF0ZSkiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBuZXcgTm90aWZpY2F0aW9uKFIuZHJhd2FibGUuaWNvbjIsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtQWN0aXZpdHlDcmVhdGVUaW1lKTsKKyAgICAgICAgICAgICAgICBuLnNldExhdGVzdEV2ZW50SW5mbyhOb3RpZmljYXRpb25UZXN0TGlzdC50aGlzLCAiUGVyc2lzdGVudCAjMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgdGhlIHNhbWUgbm90aWZpY2F0aW9uISEhIiwgbWFrZUludGVudCgpKTsKKyAgICAgICAgICAgICAgICBuLmNvbnRlbnRWaWV3LnNldEludCgxIC8qYm9ndXMqLywgImJvZ3VzIG1ldGhvZCIsIDY2Nik7CisgICAgICAgICAgICAgICAgbU5NLm5vdGlmeSgxLCBuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBuZXcgVGVzdCgiQmFkIHJlc291cmNlICMxICh3aGVuPW5vdykiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBuZXcgTm90aWZpY2F0aW9uKFIuZHJhd2FibGUuaWNvbjIsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7CisgICAgICAgICAgICAgICAgbi5zZXRMYXRlc3RFdmVudEluZm8oTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcywgIlBlcnNpc3RlbnQgIzEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIHRoZSBzYW1lIG5vdGlmaWNhdGlvbiEhISIsIG1ha2VJbnRlbnQoKSk7CisgICAgICAgICAgICAgICAgbi5jb250ZW50Vmlldy5zZXRJbnQoMSAvKmJvZ3VzKi8sICJib2d1cyBtZXRob2QiLCA2NjYpOworICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKwogICAgICAgICBuZXcgVGVzdCgiQmFkIHJlc291cmNlICMzIikgewogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkKICAgICAgICAgICAgIHsKQEAgLTE4MCw3ICsyMTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljb240LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSwgIlN0cmVzcyAtIExhdGVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3RpZnkgbWUhISEiLCBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfT05HT0lOR19FVkVOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vbi5mbGFncyB8PSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOwogICAgICAgICAgICAgICAgICAgICAgICAgbU5NLm5vdGlmeSgxLCBuKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTIwNSw2ICsyMzcsOCBAQAogICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbigpOwogICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfU0hPV19MSUdIVFM7CiAgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHhmZjAwMDBmZjsKKyAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAxOworICAgICAgICAgICAgICAgIG4ubGVkT2ZmTVMgPSAwOwogICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBAIC0yMTUsNiArMjQ5LDggQEAKICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKICAgICAgICAgICAgICAgICBuLmZsYWdzIHw9IE5vdGlmaWNhdGlvbi5GTEFHX1NIT1dfTElHSFRTOwogICAgICAgICAgICAgICAgIG4ubGVkQVJHQiA9IDB4ZmZmZjAwMDA7CisgICAgICAgICAgICAgICAgbi5sZWRPbk1TID0gMTsKKyAgICAgICAgICAgICAgICBuLmxlZE9mZk1TID0gMDsKICAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDEsIG4pOwogICAgICAgICAgICAgfQogICAgICAgICB9LApAQCAtMjI1LDYgKzI2MSwyMCBAQAogICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbigpOwogICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfU0hPV19MSUdIVFM7CiAgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHhmZmZmZmYwMDsKKyAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAxOworICAgICAgICAgICAgICAgIG4ubGVkT2ZmTVMgPSAwOworICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFRlc3QoIkxpZ2h0cyBvZmYiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfU0hPV19MSUdIVFM7CisgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAwOworICAgICAgICAgICAgICAgIG4ubGVkT2ZmTVMgPSAwOwogICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBAIC0yMzQsNyArMjg0LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKICAgICAgICAgICAgICAgICBuLmZsYWdzIHw9IE5vdGlmaWNhdGlvbi5GTEFHX1NIT1dfTElHSFRTOwotICAgICAgICAgICAgICAgIG4ubGVkQVJHQiA9IDB4ZmZmZmZmMDA7CisgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHhmZjAwMDBmZjsKICAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAxMzAwOwogICAgICAgICAgICAgICAgIG4ubGVkT2ZmTVMgPSAxMzAwOwogICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CkBAIC0yNDYsNyArMjk2LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKICAgICAgICAgICAgICAgICBuLmZsYWdzIHw9IE5vdGlmaWNhdGlvbi5GTEFHX1NIT1dfTElHSFRTOwotICAgICAgICAgICAgICAgIG4ubGVkQVJHQiA9IDB4ZmZmZmZmMDA7CisgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHhmZjAwMDBmZjsKICAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAzMDA7CiAgICAgICAgICAgICAgICAgbi5sZWRPZmZNUyA9IDMwMDsKICAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDEsIG4pOwpAQCAtMzkyLDcgKzQ0Miw3IEBACiAgICAgICAgIG5ldyBUZXN0KCJQZXJzaXN0ZW50ICMxIikgewogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewogICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbihSLmRyYXdhYmxlLmljb24xLCAidGljayB0aWNrIHRpY2siLAotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5Q3JlYXRlVGltZSk7CiAgICAgICAgICAgICAgICAgbi5zZXRMYXRlc3RFdmVudEluZm8oTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcywgIlBlcnNpc3RlbnQgIzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGEgbm90aWZpY2F0aW9uISEhIiwgbWFrZUludGVudCgpKTsKICAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDEsIG4pOwpAQCAtNDUyLDYgKzUwMiwxNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9LAogCisgICAgICAgIG5ldyBUZXN0KCJQZXJzaXN0ZW50ICMxIC0gZGlmZmVyZW50IGljb24iKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBuZXcgTm90aWZpY2F0aW9uKFIuZHJhd2FibGUuaWNvbjIsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlDcmVhdGVUaW1lKTsKKyAgICAgICAgICAgICAgICBuLnNldExhdGVzdEV2ZW50SW5mbyhOb3RpZmljYXRpb25UZXN0TGlzdC50aGlzLCAiUGVyc2lzdGVudCAjMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgdGhlIHNhbWUgbm90aWZpY2F0aW9uISEhIiwgbWFrZUludGVudCgpKTsKKyAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDEsIG4pOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCiAgICAgICAgIG5ldyBUZXN0KCJDaHJvbm9tZXRlciBTdGFydCIpIHsKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oUi5kcmF3YWJsZS5pY29uMiwgIm1lIG1lIG1lIG1lIiwKQEAgLTU4MSw3ICs2NDEsNyBAQAogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBQb3dlck1hbmFnZXIuV2FrZUxvY2sgd2wKLSAgICAgICAgICAgICAgICAgICAgICAgID0gKChQb3dlck1hbmFnZXIpTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcy5nZXRTeXN0ZW1TZXJ2aWNlKCJwb3dlciIpKQorICAgICAgICAgICAgICAgICAgICAgICAgPSAoKFBvd2VyTWFuYWdlcilOb3RpZmljYXRpb25UZXN0TGlzdC50aGlzLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5QT1dFUl9TRVJWSUNFKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLCAiY3Jhc2hlciIpOwogICAgICAgICAgICAgICAgIHdsLmFjcXVpcmUoKTsKICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChuZXcgUnVubmFibGUoKSB7CkBAIC02MDQsOSArNjY0LDcgQEAKIAogICAgIHByaXZhdGUgUGVuZGluZ0ludGVudCBtYWtlSW50ZW50KCkgewogICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX01BSU4pOwotICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KG5ldyBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSgKLSAgICAgICAgICAgICAgICAgICAgImNvbS5hbmRyb2lkLmNvbnRhY3RzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbS5hbmRyb2lkLmNvbnRhY3RzLkNvbnRhY3RzQWN0aXZpdHkiKSk7CisgICAgICAgIGludGVudC5hZGRDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfSE9NRSk7CiAgICAgICAgIHJldHVybiBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KHRoaXMsIDAsIGludGVudCwgMCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvc3JjL2NvbS9hbmRyb2lkL3N0YXR1c2JhcnRlc3QvU3RhdHVzQmFyVGVzdC5qYXZhIGIvdGVzdHMvU3RhdHVzQmFyL3NyYy9jb20vYW5kcm9pZC9zdGF0dXNiYXJ0ZXN0L1N0YXR1c0JhclRlc3QuamF2YQppbmRleCAwNjUwNmZiLi5iNjY1ZDJmIDEwMDY0NAotLS0gYS90ZXN0cy9TdGF0dXNCYXIvc3JjL2NvbS9hbmRyb2lkL3N0YXR1c2JhcnRlc3QvU3RhdHVzQmFyVGVzdC5qYXZhCisrKyBiL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9TdGF0dXNCYXJUZXN0LmphdmEKQEAgLTIzLDYgKzIzLDcgQEAKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0VmlldzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uOwogaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbk1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuU3RhdHVzQmFyTWFuYWdlcjsKQEAgLTM1LDYgKzM2LDggQEAKIGltcG9ydCBhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3czsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5Ub2FzdDsKIGltcG9ydCBhbmRyb2lkLm9zLlBvd2VyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOwogCiBwdWJsaWMgY2xhc3MgU3RhdHVzQmFyVGVzdCBleHRlbmRzIFRlc3RBY3Rpdml0eQogewpAQCAtNTcsNiArNjAsNTYgQEAKICAgICB9CiAKICAgICBwcml2YXRlIFRlc3RbXSBtVGVzdHMgPSBuZXcgVGVzdFtdIHsKKyAgICAgICAgbmV3IFRlc3QoIkhpZGUiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgV2luZG93IHdpbiA9IGdldFdpbmRvdygpOworICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIHdpblBhcmFtcyA9IHdpbi5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgd2luUGFyYW1zLmZsYWdzIHw9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRlVMTFNDUkVFTjsKKyAgICAgICAgICAgICAgICB3aW4uc2V0QXR0cmlidXRlcyh3aW5QYXJhbXMpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBuZXcgVGVzdCgiU2hvdyIpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBXaW5kb3cgd2luID0gZ2V0V2luZG93KCk7CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgd2luUGFyYW1zID0gd2luLmdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgICAgICB3aW5QYXJhbXMuZmxhZ3MgJj0gfldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRlVMTFNDUkVFTjsKKyAgICAgICAgICAgICAgICB3aW4uc2V0QXR0cmlidXRlcyh3aW5QYXJhbXMpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBuZXcgVGVzdCgiSW1tZXJzaXZlOiBFbnRlciIpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBzZXRJbW1lcnNpdmUodHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIG5ldyBUZXN0KCJJbW1lcnNpdmU6IEV4aXQiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgc2V0SW1tZXJzaXZlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgbmV3IFRlc3QoIlByaW9yaXR5IG5vdGlmaWNhdGlvbiIpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbm90ID0gbmV3IE5vdGlmaWNhdGlvbihTdGF0dXNCYXJUZXN0LnRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcGhvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvbWluZyBjYWxsIGZyb206IEltcGVyaW91cyBMZWFkZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKS0oMTAwMCo2MCo2MCoyNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbXBlcmlvdXMgTGVhZGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIig4ODgpIDU1NS01MDM4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIG5vdC5mbGFncyB8PSBOb3RpZmljYXRpb24uRkxBR19ISUdIX1BSSU9SSVRZOworICAgICAgICAgICAgICAgIEludGVudCBmdWxsU2NyZWVuSW50ZW50ID0gbmV3IEludGVudChTdGF0dXNCYXJUZXN0LnRoaXMsIFRlc3RBbGVydEFjdGl2aXR5LmNsYXNzKTsKKyAgICAgICAgICAgICAgICBpbnQgaWQgPSAoaW50KVN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOyAvLyBYWFggSEFYCisgICAgICAgICAgICAgICAgZnVsbFNjcmVlbkludGVudC5wdXRFeHRyYSgiaWQiLCBpZCk7CisgICAgICAgICAgICAgICAgbm90LmZ1bGxTY3JlZW5JbnRlbnQgPSBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KAorICAgICAgICAgICAgICAgICAgICBTdGF0dXNCYXJUZXN0LnRoaXMsCisgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgIGZ1bGxTY3JlZW5JbnRlbnQsCisgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVCk7CisgICAgICAgICAgICAgICAgLy8gaWYgeW91IHRhcCBvbiBpdCB5b3Ugc2hvdWxkIGdldCB0aGUgb3JpZ2luYWwgYWxlcnQgYm94CisgICAgICAgICAgICAgICAgbm90LmNvbnRlbnRJbnRlbnQgPSBub3QuZnVsbFNjcmVlbkludGVudDsKKyAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uTWFuYWdlci5ub3RpZnkoaWQsIG5vdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCiAgICAgICAgIG5ldyBUZXN0KCJEaXNhYmxlIEFsZXJ0cyIpIHsKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlci5kaXNhYmxlKFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fQUxFUlRTKTsKQEAgLTEzNCwxMyArMTg3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgIG5ldyBUZXN0KCJFeHBhbmQgaW4gMyBzZWMuIikgeworICAgICAgICBuZXcgVGVzdCgiRXhwYW5kIikgewogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnBvc3REZWxheWVkKG5ldyBSdW5uYWJsZSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlci5leHBhbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CisgICAgICAgICAgICAgICAgbVN0YXR1c0Jhck1hbmFnZXIuZXhwYW5kKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgIG5ldyBUZXN0KCJFeHBhbmQgaW4gMyBzZWMuIikgewpAQCAtMTYxLDEzICsyMTAsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgIG5ldyBUZXN0KCJUb2dnbGUgaW4gMyBzZWMuIikgeworICAgICAgICBuZXcgVGVzdCgiTW9yZSBpY29ucyIpIHsKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChuZXcgUnVubmFibGUoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhck1hbmFnZXIudG9nZ2xlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0sIDMwMDApOworICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIHNsb3Q6IG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5bmNfZmFpbGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsdWV0b290aCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWFrZXJwaG9uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11dGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWZpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxhcm1fY2xvY2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWN1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgfSkgeworICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlci5zZXRJY29uVmlzaWJpbGl0eShzbG90LCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgfTsKZGlmZiAtLWdpdCBhL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9UZXN0QWxlcnRBY3Rpdml0eS5qYXZhIGIvdGVzdHMvU3RhdHVzQmFyL3NyYy9jb20vYW5kcm9pZC9zdGF0dXNiYXJ0ZXN0L1Rlc3RBbGVydEFjdGl2aXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU4NzZkMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9UZXN0QWxlcnRBY3Rpdml0eS5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3RhdHVzYmFydGVzdDsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbk1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworCitwdWJsaWMgY2xhc3MgVGVzdEFsZXJ0QWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eSB7CisgICAgaW50IG1JZDsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICBzdXBlci5vblJlc3VtZSgpOworICAgICAgICBMb2cuZCgiU3RhdHVzQmFyVGVzdCIsICJUZXN0QWxlcnRBY3Rpdml0eS5vblJlc3VtZSIpOworICAgICAgICBJbnRlbnQgaW50ZW50ID0gZ2V0SW50ZW50KCk7CisgICAgICAgIG1JZCA9IGludGVudC5nZXRJbnRFeHRyYSgiaWQiLCAtMSk7CisgICAgICAgIExvZy5kKCJTdGF0dXNCYXJUZXN0IiwgIlJlbWVtYmVyaW5nIG5vdGlmaWNhdGlvbiBpZD0iICsgbUlkKTsKKyAgICAgICAgc2V0Q29udGVudFZpZXcoUi5sYXlvdXQudGVzdF9hbGVydCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKyAgICAgICAgc3VwZXIub25QYXVzZSgpOworICAgICAgICBMb2cuZCgiU3RhdHVzQmFyVGVzdCIsICJvblBhdXNlOiBDYW5jZWxpbmcgbm90aWZpY2F0aW9uIGlkPSIgKyBtSWQpOworICAgICAgICBOb3RpZmljYXRpb25NYW5hZ2VyIG5tID0gKE5vdGlmaWNhdGlvbk1hbmFnZXIpIGdldFN5c3RlbVNlcnZpY2UoTk9USUZJQ0FUSU9OX1NFUlZJQ0UpOworICAgICAgICBubS5jYW5jZWwobUlkKTsKKyAgICAgICAgZmluaXNoKCk7CisgICAgfQorCisgICAgQFN1cHByZXNzV2FybmluZ3MoeyJVbnVzZWREZWNsYXJhdGlvbiJ9KQorICAgIHB1YmxpYyB2b2lkIGRpc21pc3MoVmlldyB2KSB7CisgICAgICAgIExvZy5kKCJTdGF0dXNCYXJUZXN0IiwgIlRlc3RBbGVydEFjdGl2aXR5LmRpc21pc3MiKTsKKyAgICAgICAgZmluaXNoKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvYXBwd2lkZ2V0cy9BcHBXaWRnZXRQcm92aWRlclRlc3QvcmVzL2xheW91dC90ZXN0X2FwcHdpZGdldDIueG1sIGIvdGVzdHMvYXBwd2lkZ2V0cy9BcHBXaWRnZXRQcm92aWRlclRlc3QvcmVzL2xheW91dC90ZXN0X2FwcHdpZGdldDIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYzZmNTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9hcHB3aWRnZXRzL0FwcFdpZGdldFByb3ZpZGVyVGVzdC9yZXMvbGF5b3V0L3Rlc3RfYXBwd2lkZ2V0Mi54bWwKQEAgLTAsMCArMSwyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDA2IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxUZXh0VmlldyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDppZD0iQCtpZC9vaF9oYWlfdGV4dCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMTUwZHAiCisgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIxNTBkcCIKKyAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvYXBwd2lkZ2V0X3ZpZXdfdGl0bGUiCisgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSIjOGZmZiIKKyAgICBhbmRyb2lkOnRleHRDb2xvcj0iIzAwMCIKKyAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKKy8+CisKZGlmZiAtLWdpdCBhL3Rlc3RzL2FwcHdpZGdldHMvQXBwV2lkZ2V0UHJvdmlkZXJUZXN0L3NyYy9jb20vYW5kcm9pZC90ZXN0cy9hcHB3aWRnZXRwcm92aWRlci9UZXN0QXBwV2lkZ2V0UHJvdmlkZXIuamF2YSBiL3Rlc3RzL2FwcHdpZGdldHMvQXBwV2lkZ2V0UHJvdmlkZXJUZXN0L3NyYy9jb20vYW5kcm9pZC90ZXN0cy9hcHB3aWRnZXRwcm92aWRlci9UZXN0QXBwV2lkZ2V0UHJvdmlkZXIuamF2YQppbmRleCA0MThiZTY1Li5kOWMwMTEwIDEwMDY0NAotLS0gYS90ZXN0cy9hcHB3aWRnZXRzL0FwcFdpZGdldFByb3ZpZGVyVGVzdC9zcmMvY29tL2FuZHJvaWQvdGVzdHMvYXBwd2lkZ2V0cHJvdmlkZXIvVGVzdEFwcFdpZGdldFByb3ZpZGVyLmphdmEKKysrIGIvdGVzdHMvYXBwd2lkZ2V0cy9BcHBXaWRnZXRQcm92aWRlclRlc3Qvc3JjL2NvbS9hbmRyb2lkL3Rlc3RzL2FwcHdpZGdldHByb3ZpZGVyL1Rlc3RBcHBXaWRnZXRQcm92aWRlci5qYXZhCkBAIC00MSw2ICs0MSw3IEBACiAgICAgICAgICAgICBMb2cuZChUQUcsICJESVNBQkxFRCIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKEFwcFdpZGdldE1hbmFnZXIuQUNUSU9OX0FQUFdJREdFVF9VUERBVEUuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgIGlmICh0cnVlKSByZXR1cm47CiAgICAgICAgICAgICBMb2cuZChUQUcsICJVUERBVEUiKTsKICAgICAgICAgICAgIEJ1bmRsZSBleHRyYXMgPSBpbnRlbnQuZ2V0RXh0cmFzKCk7CiAgICAgICAgICAgICBpbnRbXSBhcHBXaWRnZXRJZHMgPSBleHRyYXMuZ2V0SW50QXJyYXkoQXBwV2lkZ2V0TWFuYWdlci5FWFRSQV9BUFBXSURHRVRfSURTKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9SRUFETUUgYi90ZXN0cy9mcmFtZXdvcmstdGVzdHMvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjQ2YjI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoaXMgcGFja2FnZSBjb250YWlucyB0ZXN0cyB3aGljaCBuZWVkIHRvIGFjY2VzcyBwYWNrYWdlLXByaXZhdGUgbWVtYmVycyBpbiB0aGUgZnJhbWV3b3JrIGNvZGUuCi1UbyBkbyB0aGlzLCB0aGUgdGVzdHMgbXVzdCBiZSBsb2FkZWQgaW4gdGhlIHNhbWUgY2xhc3MgbG9hZGVyIGFzIHRoZSBjbGFzc2VzIHdoaWNoIHRoZXkgYXJlCi10ZXN0aW5nLiBUaGlzIHBhY2thZ2UgaXMgbG9hZGVkIGluIHRoZSBib290IGNsYXNzcGF0aC4KLQotUnVuIHRoZXNlIHRlc3RzIHZpYSBBbmRyb2lkVGVzdHMgLT4gRnJhbWV3b3JrVGVzdHMuCmRpZmYgLS1naXQgYS90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL0FuZHJvaWQubWsgYi90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL0FuZHJvaWQubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZTMzYTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9BbmRyb2lkLm1rCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQotaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi0KLUxPQ0FMX1NSQ19GSUxFUyA6PSAkKGNhbGwgYWxsLXN1YmRpci1qYXZhLWZpbGVzKQotCi1MT0NBTF9NT0RVTEUgOj0gZnJhbWV3b3JrLXRlc3RzCi0KLUxPQ0FMX0pBVkFfTElCUkFSSUVTIDo9IGFuZHJvaWQucG9saWN5X3Bob25lIGFuZHJvaWQudGVzdC5ydW5uZXIKLQotaW5jbHVkZSAkKEJVSUxEX0pBVkFfTElCUkFSWSkKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvYW5kcm9pZC90ZXN0L0ZyYW1ld29ya1Rlc3RzLmphdmEgYi90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL2FuZHJvaWQvdGVzdC9GcmFtZXdvcmtUZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjNmNDkzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvYW5kcm9pZC90ZXN0L0ZyYW1ld29ya1Rlc3RzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBhbmRyb2lkLnRlc3Q7Ci0KLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5Mb2dnaW5nUHJpbnRTdHJlYW1UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuaHR0cC5tdWx0aXBhcnQuTXVsdGlwYXJ0VGVzdDsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5Mb2NrUGF0dGVybktleWd1YXJkVmlld1Rlc3Q7Ci0KLS8qKgotICogVGVzdHMgdGhhdCBhcmUgbG9hZGVkIGluIHRoZSBib290IGNsYXNzcGF0aCBhbG9uZyB3aXRoIHRoZSBBbmRyb2lkIGZyYW1ld29yawotICogY2xhc3Nlcy4gVGhpcyBlbmFibGVzIHlvdSB0byBhY2Nlc3MgcGFja2FnZS1wcml2YXRlIG1lbWJlcnMgaW4gdGhlIGZyYW1ld29yawotICogY2xhc3NlczsgZG9pbmcgc28gaXMgbm90IHBvc3NpYmxlIHdoZW4gdGhlIHRlc3QgY2xhc3NlcyBhcmUgbG9hZGVkIGluIGFuCi0gKiBhcHBsaWNhdGlvbiBjbGFzc2xvYWRlci4KLSAqLwotcHVibGljIGNsYXNzIEZyYW1ld29ya1Rlc3RzIHsKLSAgICBwdWJsaWMgc3RhdGljIFRlc3RTdWl0ZSBzdWl0ZSgpIHsKLSAgICAgICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZShGcmFtZXdvcmtUZXN0cy5jbGFzcy5nZXROYW1lKCkpOwotCi0gICAgICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShNdWx0aXBhcnRUZXN0LmNsYXNzKTsKLSAgICAgICAgc3VpdGUuYWRkVGVzdFN1aXRlKExvZ2dpbmdQcmludFN0cmVhbVRlc3QuY2xhc3MpOwotICAgICAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0LmNsYXNzKTsKLQotICAgICAgICByZXR1cm4gc3VpdGU7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvUGFja2VkSW50VmVjdG9yVGVzdC5qYXZhIGIvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvUGFja2VkSW50VmVjdG9yVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGNkZWU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvYW5kcm9pZC90ZXh0L1BhY2tlZEludFZlY3RvclRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBhbmRyb2lkLnRleHQ7Ci0KLWltcG9ydCBhbmRyb2lkLnRleHQuUGFja2VkSW50VmVjdG9yOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotLyoqCi0gKiBQYWNrZWRJbnRWZWN0b3JUZXN0IHRlc3RzIHRoZSBmZWF0dXJlcyBvZiBhbmRyb2lkLnV0aWwuUGFja2VkSW50VmVjdG9yLgotICovCi1wdWJsaWMgY2xhc3MgUGFja2VkSW50VmVjdG9yVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKLSAKLSAgICBwdWJsaWMgdm9pZCB0ZXN0QmFzaWMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZm9yIChpbnQgd2lkdGggPSAwOyB3aWR0aCA8IDEwOyB3aWR0aCsrKSB7Ci0gICAgICAgICAgICBQYWNrZWRJbnRWZWN0b3IgcCA9IG5ldyBQYWNrZWRJbnRWZWN0b3Iod2lkdGgpOwotICAgICAgICAgICAgaW50W10gaW5zID0gbmV3IGludFt3aWR0aF07Ci0KLSAgICAgICAgICAgIGZvciAoaW50IGhlaWdodCA9IHdpZHRoICogMjsgaGVpZ2h0IDwgd2lkdGggKiA0OyBoZWlnaHQrKykgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLndpZHRoKCksIHdpZHRoKTsKLQotICAgICAgICAgICAgICAgIC8vIFRlc3QgYWRkaW5nIHJvd3MuCi0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBhdDsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoaSAlIDIgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBwLnNpemUoKSAtIGk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluc1tqXSA9IGkgKyBqOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaGVpZ2h0IC8gMikgewotICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBdChhdCwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwLmluc2VydEF0KGF0LCBpbnMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuc2l6ZSgpLCBpICsgMSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBoZWlnaHQgLyAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHAuZ2V0VmFsdWUoYXQsIGopKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoYXQsIGopLCBpICsgaik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBUZXN0IHNldHRpbmcgdmFsdWVzLgotCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHAuc2V0VmFsdWUoaSwgaiwgaSAqIGopOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocC5nZXRWYWx1ZShpLCBqKSwgaSAqIGopOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gVGVzdCBvZmZzZXR0aW5nIHZhbHVlcy4KLQotICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgewotICAgICAgICAgICAgICAgICAgICBwLmFkanVzdFZhbHVlc0JlbG93KGogKiAyLCBqLCBqICsgMjcpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ID0gaSAqIGo7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID49IGogKiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ICs9IGogKyAyNzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIGV4cGVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgcC5hZGp1c3RWYWx1ZXNCZWxvdyhqLCBqLCBqICogaiArIDE0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4cGVjdCA9IGkgKiBqOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSBqICogMikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCArPSBqICsgMjc7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSBqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ICs9IGogKiBqICsgMTQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGksIGopLCBleHBlY3QpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gVGVzdCB1bmRvaW5nIG9mZnNldHMuCi0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgcC5hZGp1c3RWYWx1ZXNCZWxvdyhqICogMiwgaiwgLShqICsgMjcpKTsKLSAgICAgICAgICAgICAgICAgICAgcC5hZGp1c3RWYWx1ZXNCZWxvdyhqLCBqLCAtKGogKiBqICsgMTQpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIGkgKiBqKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFRlc3QgZGVsZXRpbmcgcm93cy4KLQotICAgICAgICAgICAgICAgIHdoaWxlIChwLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IG9zaXplID0gcC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBkZWwgPSBvc2l6ZSAvIDM7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlbCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWwgPSAxOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaW50IGF0ID0gKG9zaXplIC0gZGVsKSAvIDI7Ci0gICAgICAgICAgICAgICAgICAgIHAuZGVsZXRlQXQoYXQsIGRlbCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuc2l6ZSgpLCBvc2l6ZSAtIGRlbCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocC5nZXRWYWx1ZShpLCBqKSwgaSAqIGopOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IGF0OyBpIDwgcC5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIChpICsgaGVpZ2h0IC0gcC5zaXplKCkpICogaik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgcC5zaXplKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlld1Rlc3QuamF2YSBiL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNTdiZDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlld1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NDYXJkOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKLWltcG9ydCBhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKLWltcG9ydCBjb20uZ29vZ2xlLmFuZHJvaWQuY29sbGVjdC5MaXN0czsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi0vKioKLSAqIFRlc3RzIGZvciB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuTG9ja1BhdHRlcm5LZXlndWFyZFZpZXd9LAotICogd2hpY2ggaGFuZGxlcyB0aGUgbWFuYWdlbWVudCBvZiBzY3JlZW5zIHdoaWxlIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLgotICovCi1wdWJsaWMgY2xhc3MgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0IGV4dGVuZHMgQW5kcm9pZFRlc3RDYXNlIHsKLSAgICBwcml2YXRlIE1vY2tVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOwotICAgIHByaXZhdGUgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKLSAgICBwcml2YXRlIFRlc3RhYmxlTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcgbUxQS1Y7Ci0gICAgcHJpdmF0ZSBNb2NrS2V5Z3VhcmRDYWxsYmFjayBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2s7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrVXBkYXRlTW9uaXRvciBleHRlbmRzIEtleWd1YXJkVXBkYXRlTW9uaXRvciB7Ci0KLSAgICAgICAgcHVibGljIEljY0NhcmQuU3RhdGUgc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOwotCi0gICAgICAgIHByaXZhdGUgTW9ja1VwZGF0ZU1vbml0b3IoQ29udGV4dCBjb250ZXh0KSB7Ci0gICAgICAgICAgICBzdXBlcihjb250ZXh0KTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgSWNjQ2FyZC5TdGF0ZSBnZXRTaW1TdGF0ZSgpIHsKLSAgICAgICAgICAgIHJldHVybiBzaW1TdGF0ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIE1vY2tMb2NrUGF0dGVyblV0aWxzIGV4dGVuZHMgTG9ja1BhdHRlcm5VdGlscyB7Ci0gICAgICAgIGJvb2xlYW4gaXNMb2NrUGF0dGVybkVuYWJsZWQgPSB0cnVlOwotICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1Blcm1hbmVudGx5TG9ja2VkID0gZmFsc2U7Ci0KLSAgICAgICAgcHVibGljIE1vY2tMb2NrUGF0dGVyblV0aWxzKCkgewotICAgICAgICAgICAgc3VwZXIobnVsbCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIGJvb2xlYW4gaXNMb2NrUGF0dGVybkVuYWJsZWQoKSB7Ci0gICAgICAgICAgICByZXR1cm4gaXNMb2NrUGF0dGVybkVuYWJsZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgc2V0TG9ja1BhdHRlcm5FbmFibGVkKGJvb2xlYW4gbG9ja1BhdHRlcm5FbmFibGVkKSB7Ci0gICAgICAgICAgICBpc0xvY2tQYXR0ZXJuRW5hYmxlZCA9IGxvY2tQYXR0ZXJuRW5hYmxlZDsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1Blcm1hbmVudGx5TG9ja2VkKCkgewotICAgICAgICAgICAgcmV0dXJuIGlzUGVybWFuZW50bHlMb2NrZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBzZXRQZXJtYW5lbnRseUxvY2tlZChib29sZWFuIHBlcm1hbmVudGx5TG9ja2VkKSB7Ci0gICAgICAgICAgICBpc1Blcm1hbmVudGx5TG9ja2VkID0gcGVybWFuZW50bHlMb2NrZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrS2V5Z3VhcmRTY3JlZW4gZXh0ZW5kcyBWaWV3IGltcGxlbWVudHMgS2V5Z3VhcmRTY3JlZW4gewotCi0gICAgICAgIHByaXZhdGUgaW50IG1PblBhdXNlQ291bnQgPSAwOwotICAgICAgICBwcml2YXRlIGludCBtT25SZXN1bWVDb3VudCA9IDA7Ci0gICAgICAgIHByaXZhdGUgaW50IG1DbGVhbnVwQ291bnQgPSAwOwotCi0gICAgICAgIHByaXZhdGUgTW9ja0tleWd1YXJkU2NyZWVuKENvbnRleHQgY29udGV4dCkgewotICAgICAgICAgICAgc3VwZXIoY29udGV4dCk7Ci0gICAgICAgICAgICBzZXRGb2N1c2FibGUodHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioge0Bpbmhlcml0RG9jfSAqLwotICAgICAgICBwdWJsaWMgYm9vbGVhbiBuZWVkc0lucHV0KCkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KLSAgICAgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKLSAgICAgICAgICAgIG1PblBhdXNlQ291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKiB7QGluaGVyaXREb2N9ICovCi0gICAgICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgewotICAgICAgICAgICAgbU9uUmVzdW1lQ291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKiB7QGluaGVyaXREb2N9ICovCi0gICAgICAgIHB1YmxpYyB2b2lkIGNsZWFuVXAoKSB7Ci0gICAgICAgICAgICBtQ2xlYW51cENvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGdldE9uUGF1c2VDb3VudCgpIHsKLSAgICAgICAgICAgIHJldHVybiBtT25QYXVzZUNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRPblJlc3VtZUNvdW50KCkgewotICAgICAgICAgICAgcmV0dXJuIG1PblJlc3VtZUNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRDbGVhbnVwQ291bnQoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNsZWFudXBDb3VudDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIEFsbG93cyB1cyB0byBpbmplY3QgdGhlIGxvY2sgYW5kIHVubG9jayB2aWV3cyB0byBzaW11bGF0ZSB0aGVpciBiZWhhdmlvcgotICAgICAqIGFuZCBkZXRlY3QgdGhlaXIgY3JlYXRpb24uCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyBleHRlbmRzIExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3IHsKLSAgICAgICAgcHJpdmF0ZSBMaXN0PE1vY2tLZXlndWFyZFNjcmVlbj4gbUluamVjdGVkTG9ja1NjcmVlbnM7Ci0gICAgICAgIHByaXZhdGUgTGlzdDxNb2NrS2V5Z3VhcmRTY3JlZW4+IG1JbmplY3RlZFVubG9ja1NjcmVlbnM7Ci0KLQotCi0gICAgICAgIHByaXZhdGUgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyhDb250ZXh0IGNvbnRleHQsIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLAotICAgICAgICAgICAgICAgIExvY2tQYXR0ZXJuVXRpbHMgbG9ja1BhdHRlcm5VdGlscywgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHVwZGF0ZU1vbml0b3IsIGxvY2tQYXR0ZXJuVXRpbHMsIGNvbnRyb2xsZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIFZpZXcgY3JlYXRlTG9ja1NjcmVlbigpIHsKLSAgICAgICAgICAgIGZpbmFsIE1vY2tLZXlndWFyZFNjcmVlbiBuZXdWaWV3ID0gbmV3IE1vY2tLZXlndWFyZFNjcmVlbihnZXRDb250ZXh0KCkpOwotICAgICAgICAgICAgaWYgKG1JbmplY3RlZExvY2tTY3JlZW5zID09IG51bGwpIG1JbmplY3RlZExvY2tTY3JlZW5zID0gTGlzdHMubmV3QXJyYXlMaXN0KCk7Ci0gICAgICAgICAgICBtSW5qZWN0ZWRMb2NrU2NyZWVucy5hZGQobmV3Vmlldyk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3VmlldzsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBWaWV3IGNyZWF0ZVVubG9ja1NjcmVlbkZvcihVbmxvY2tNb2RlIHVubG9ja01vZGUpIHsKLSAgICAgICAgICAgIGZpbmFsIE1vY2tLZXlndWFyZFNjcmVlbiBuZXdWaWV3ID0gbmV3IE1vY2tLZXlndWFyZFNjcmVlbihnZXRDb250ZXh0KCkpOwotICAgICAgICAgICAgaWYgKG1JbmplY3RlZFVubG9ja1NjcmVlbnMgPT0gbnVsbCkgIG1JbmplY3RlZFVubG9ja1NjcmVlbnMgPSBMaXN0cy5uZXdBcnJheUxpc3QoKTsKLSAgICAgICAgICAgIG1JbmplY3RlZFVubG9ja1NjcmVlbnMuYWRkKG5ld1ZpZXcpOwotICAgICAgICAgICAgcmV0dXJuIG5ld1ZpZXc7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgTGlzdDxNb2NrS2V5Z3VhcmRTY3JlZW4+IGdldEluamVjdGVkTG9ja1NjcmVlbnMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUluamVjdGVkTG9ja1NjcmVlbnM7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgTGlzdDxNb2NrS2V5Z3VhcmRTY3JlZW4+IGdldEluamVjdGVkVW5sb2NrU2NyZWVucygpIHsKLSAgICAgICAgICAgIHJldHVybiBtSW5qZWN0ZWRVbmxvY2tTY3JlZW5zOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTW9ja0tleWd1YXJkQ2FsbGJhY2sgaW1wbGVtZW50cyBLZXlndWFyZFZpZXdDYWxsYmFjayB7Ci0KLSAgICAgICAgcHJpdmF0ZSBpbnQgbVBva2VXYWtlbG9ja0NvdW50ID0gMDsKLSAgICAgICAgcHJpdmF0ZSBpbnQgbUtleWd1YXJkRG9uZUNvdW50ID0gMDsKLQotICAgICAgICBwdWJsaWMgdm9pZCBwb2tlV2FrZWxvY2soKSB7Ci0gICAgICAgICAgICBtUG9rZVdha2Vsb2NrQ291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyB2b2lkIHBva2VXYWtlbG9jayhpbnQgbWlsbGlzKSB7Ci0gICAgICAgICAgICBtUG9rZVdha2Vsb2NrQ291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyB2b2lkIGtleWd1YXJkRG9uZShib29sZWFuIGF1dGhlbnRpY2F0ZWQpIHsKLSAgICAgICAgICAgIG1LZXlndWFyZERvbmVDb3VudCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQga2V5Z3VhcmREb25lRHJhd2luZygpIHsKLQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRQb2tlV2FrZWxvY2tDb3VudCgpIHsKLSAgICAgICAgICAgIHJldHVybiBtUG9rZVdha2Vsb2NrQ291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGdldEtleWd1YXJkRG9uZUNvdW50KCkgewotICAgICAgICAgICAgcmV0dXJuIG1LZXlndWFyZERvbmVDb3VudDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIHN1cGVyLnNldFVwKCk7Ci0gICAgICAgIG1VcGRhdGVNb25pdG9yID0gbmV3IE1vY2tVcGRhdGVNb25pdG9yKGdldENvbnRleHQoKSk7Ci0gICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbmV3IE1vY2tMb2NrUGF0dGVyblV0aWxzKCk7Ci0KLSAgICAgICAgbUxQS1YgPSBuZXcgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyhnZXRDb250ZXh0KCksIG1VcGRhdGVNb25pdG9yLAotICAgICAgICAgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLCBuZXcgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyKCkgewotICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0TmVlZHNJbnB1dChib29sZWFuIG5lZWRzSW5wdXQpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIG1LZXlndWFyZFZpZXdDYWxsYmFjayA9IG5ldyBNb2NrS2V5Z3VhcmRDYWxsYmFjaygpOwotICAgICAgICBtTFBLVi5zZXRDYWxsYmFjayhtS2V5Z3VhcmRWaWV3Q2FsbGJhY2spOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHRlc3RTdGF0ZUFmdGVyQ3JlYXRlZFdoaWxlU2NyZWVuT2ZmKCkgewotCi0gICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLnNpemUoKSk7Ci0KLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOwotCi0gICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldE9uUGF1c2VDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25SZXN1bWVDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0Q2xlYW51cENvdW50KCkpOwotCi0gICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0Q2xlYW51cENvdW50KCkpOwotCi0gICAgICAgIGFzc2VydEVxdWFscygwLCBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2suZ2V0UG9rZVdha2Vsb2NrQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2suZ2V0S2V5Z3VhcmREb25lQ291bnQoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdFdva2VuQnlOb25NZW51S2V5KCkgewotICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoMCk7Ci0KLSAgICAgICAgLy8gc2hvdWxkIGhhdmUgcG9rZWQgdGhlIHdha2Vsb2NrIHRvIHR1cm4gb24gdGhlIHNjcmVlbgotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUtleWd1YXJkVmlld0NhbGxiYWNrLmdldFBva2VXYWtlbG9ja0NvdW50KCkpOwotCi0gICAgICAgIC8vIHNob3VsZG4ndCBiZSBhbnkgYWRkaXRpb25hbCB2aWV3cyBjcmVhdGVkCi0gICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLnNpemUoKSk7Ci0gICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiBsb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgwKTsKLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIHVubG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLmdldCgwKTsKLQotICAgICAgICAvLyBsb2NrIHNjcmVlbiBzaG91bGQgYmUgb25seSB2aXNpYmxlIG9uZQotICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5WSVNJQkxFLCBsb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscyhWaWV3LkdPTkUsIHVubG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOwotCi0gICAgICAgIC8vIG9uIHJlc3VtZSBub3QgY2FsbGVkIHVudGlsIHNjcmVlbiB0dXJucyBvbgotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldENsZWFudXBDb3VudCgpKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldE9uUGF1c2VDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldENsZWFudXBDb3VudCgpKTsKLQotICAgICAgICAvLyBzaW11bGF0ZSBzY3JlZW4gdHVybmluZyBvbgotICAgICAgICBtTFBLVi5vblNjcmVlblR1cm5lZE9uKCk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRDbGVhbnVwQ291bnQoKSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0T25SZXN1bWVDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRDbGVhbnVwQ291bnQoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdFdva2VuQnlNZW51S2V5V2hlblBhdHRlcm5TZXQoKSB7Ci0gICAgICAgIGFzc2VydEVxdWFscyh0cnVlLCBtTG9ja1BhdHRlcm5VdGlscy5pc0xvY2tQYXR0ZXJuRW5hYmxlZCgpKTsKLQotICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoS2V5RXZlbnQuS0VZQ09ERV9NRU5VKTsKLQotICAgICAgICAvLyBzaG91bGQgaGF2ZSBwb2tlZCB0aGUgd2FrZWxvY2sgdG8gdHVybiBvbiB0aGUgc2NyZWVuCi0gICAgICAgIGFzc2VydEVxdWFscygxLCBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2suZ2V0UG9rZVdha2Vsb2NrQ291bnQoKSk7Ci0KLSAgICAgICAgLy8gc2hvdWxkbid0IGJlIGFueSBhZGRpdGlvbmFsIHZpZXdzIGNyZWF0ZWQKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOwotCi0gICAgICAgIC8vIHVubG9jayBzY3JlZW4gc2hvdWxkIGJlIG9ubHkgdmlzaWJsZSBvbmUKLSAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuR09ORSwgbG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5WSVNJQkxFLCB1bmxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB0ZXN0U2NyZWVuUmVxdWVzdHNSZWNyZWF0aW9uKCkgewotICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoMCk7Ci0gICAgICAgIG1MUEtWLm9uU2NyZWVuVHVybmVkT24oKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOwotCi0gICAgICAgIC8vIHNpbXVsYXRlIHNjcmVlbiBhc2tpbmcgdG8gYmUgcmVjcmVhdGVkCi0gICAgICAgIG1MUEtWLm1LZXlndWFyZFNjcmVlbkNhbGxiYWNrLnJlY3JlYXRlTWUobmV3IENvbmZpZ3VyYXRpb24oKSk7Ci0KLSAgICAgICAgLy8gc2hvdWxkIGhhdmUgYmVlbiByZWNyZWF0ZWQKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMiwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLQotICAgICAgICAvLyBib3RoIG9sZCBzY3JlZW5zIHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCB1cAotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgwKS5nZXRDbGVhbnVwQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCkuZ2V0Q2xlYW51cENvdW50KCkpOwotCi0gICAgICAgIC8vIG9sZCBsb2NrIHNjcmVlbiBzaG91bGQgaGF2ZSBiZWVuIHBhdXNlZAotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgwKS5nZXRPblBhdXNlQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCkuZ2V0T25QYXVzZUNvdW50KCkpOwotCi0gICAgICAgIC8vIG5ldyBsb2NrIHNjcmVlbiBzaG91bGQgaGF2ZSBiZWVuIHJlc3VtZWQKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMSkuZ2V0T25SZXN1bWVDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLmdldCgxKS5nZXRPblJlc3VtZUNvdW50KCkpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHRlc3RNZW51RG9lc250R29Ub1VubG9ja1NjcmVlbk9uV2FrZVdoZW5QdWtMb2NrZWQoKSB7Ci0gICAgICAgIC8vIFBVSyBsb2NrZWQKLSAgICAgICAgbVVwZGF0ZU1vbml0b3Iuc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlBVS19SRVFVSVJFRDsKLQotICAgICAgICAvLyB3YWtlIGJ5IG1lbnUKLSAgICAgICAgbUxQS1Yud2FrZVdoZW5SZWFkeVRxKEtleUV2ZW50LktFWUNPREVfTUVOVSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOwotCi0gICAgICAgIC8vIGxvY2sgc2NyZWVuIHNob3VsZCBiZSBvbmx5IHZpc2libGUgb25lCi0gICAgICAgIGFzc2VydEVxdWFscyhWaWV3LlZJU0lCTEUsIGxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuR09ORSwgdW5sb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdE1lbnVHb2VzVG9Mb2NrU2NyZWVuV2hlbkRldmljZU5vdFNlY3VyZSgpIHsKLSAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMuc2V0TG9ja1BhdHRlcm5FbmFibGVkKGZhbHNlKTsKLQotICAgICAgICAvLyB3YWtlIGJ5IG1lbnUKLSAgICAgICAgbUxQS1Yud2FrZVdoZW5SZWFkeVRxKEtleUV2ZW50LktFWUNPREVfTUVOVSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOwotCi0gICAgICAgIC8vIGxvY2sgc2NyZWVuIHNob3VsZCBiZSBvbmx5IHZpc2libGUgb25lCi0gICAgICAgIGFzc2VydEVxdWFscyhWaWV3LlZJU0lCTEUsIGxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuR09ORSwgdW5sb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvYWFwdC9BYXB0QXNzZXRzLmNwcCBiL3Rvb2xzL2FhcHQvQWFwdEFzc2V0cy5jcHAKaW5kZXggZWZjOTYxOS4uZDZjZmIxMiAxMDA2NDQKLS0tIGEvdG9vbHMvYWFwdC9BYXB0QXNzZXRzLmNwcAorKysgYi90b29scy9hYXB0L0FhcHRBc3NldHMuY3BwCkBAIC03NjYsNiArNzY2LDExIEBACiAgICAgICAgICAgICAgICAgKG91dC0+c2NyZWVuTGF5b3V0Jn5SZXNUYWJsZV9jb25maWc6Ok1BU0tfU0NSRUVOU0laRSkKICAgICAgICAgICAgICAgICB8IFJlc1RhYmxlX2NvbmZpZzo6U0NSRUVOU0laRV9MQVJHRTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInhsYXJnZSIpID09IDApIHsKKyAgICAgICAgaWYgKG91dCkgb3V0LT5zY3JlZW5MYXlvdXQgPQorICAgICAgICAgICAgICAgIChvdXQtPnNjcmVlbkxheW91dCZ+UmVzVGFibGVfY29uZmlnOjpNQVNLX1NDUkVFTlNJWkUpCisgICAgICAgICAgICAgICAgfCBSZXNUYWJsZV9jb25maWc6OlNDUkVFTlNJWkVfWExBUkdFOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS90b29scy9hYXB0L1Jlc291cmNlVGFibGUuY3BwIGIvdG9vbHMvYWFwdC9SZXNvdXJjZVRhYmxlLmNwcAppbmRleCBhMmYwODVhLi43NTViOTNiIDEwMDY0NAotLS0gYS90b29scy9hYXB0L1Jlc291cmNlVGFibGUuY3BwCisrKyBiL3Rvb2xzL2FhcHQvUmVzb3VyY2VUYWJsZS5jcHAKQEAgLTU3Myw2ICs1NzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nMTYmIHBhcmVudElkZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nMTYmIGl0ZW1JZGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY3VyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHNldWRvbG9jYWxpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG92ZXJ3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVGFibGUqIG91dFRhYmxlKQpAQCAtNTgzLDcgKzU4NCw3IEBACiAgICAgU3RyaW5nMTYgc3RyOwogICAgIFZlY3RvcjxTdHJpbmdQb29sOjplbnRyeV9zdHlsZV9zcGFuPiBzcGFuczsKICAgICBlcnIgPSBwYXJzZVN0eWxlZFN0cmluZyhidW5kbGUsIGluLT5nZXRQcmludGFibGVTb3VyY2UoKS5zdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywgaXRlbTE2LCAmc3RyLCAmc3BhbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIGl0ZW0xNiwgJnN0ciwgJnNwYW5zLCBpc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9sb2NhbGl6ZSk7CiAgICAgaWYgKGVyciAhPSBOT19FUlJPUikgewogICAgICAgICByZXR1cm4gZXJyOwpAQCAtNjE2LDYgKzYxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcxNiYgY3VyVGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdXJJc1N0eWxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY3VyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHNldWRvbG9jYWxpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG92ZXJ3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVGFibGUqIG91dFRhYmxlKQpAQCAtNjI2LDcgKzYyOCw3IEBACiAgICAgVmVjdG9yPFN0cmluZ1Bvb2w6OmVudHJ5X3N0eWxlX3NwYW4+IHNwYW5zOwogICAgIGVyciA9IHBhcnNlU3R5bGVkU3RyaW5nKGJ1bmRsZSwgaW4tPmdldFByaW50YWJsZVNvdXJjZSgpLnN0cmluZygpLCBibG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJUYWcsICZzdHIsIGN1cklzU3R5bGVkID8gJnNwYW5zIDogTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9sb2NhbGl6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb3JtYXR0ZWQsIHBzZXVkb2xvY2FsaXplKTsKIAogICAgIGlmIChlcnIgPCBOT19FUlJPUikgeyAKICAgICAgICAgcmV0dXJuIGVycjsKQEAgLTcwOSwxMiArNzExLDE4IEBACiAgICAgLy8gdXNlZnVsIGF0dHJpYnV0ZSBuYW1lcyBhbmQgc3BlY2lhbCB2YWx1ZXMKICAgICBjb25zdCBTdHJpbmcxNiBuYW1lMTYoIm5hbWUiKTsKICAgICBjb25zdCBTdHJpbmcxNiB0cmFuc2xhdGFibGUxNigidHJhbnNsYXRhYmxlIik7CisgICAgY29uc3QgU3RyaW5nMTYgZm9ybWF0dGVkMTYoImZvcm1hdHRlZCIpOwogICAgIGNvbnN0IFN0cmluZzE2IGZhbHNlMTYoImZhbHNlIik7CiAKICAgICBjb25zdCBTdHJpbmcxNiBteVBhY2thZ2UoYXNzZXRzLT5nZXRQYWNrYWdlKCkpOwogCiAgICAgYm9vbCBoYXNFcnJvcnMgPSBmYWxzZTsKLSAgICAKKworICAgIGJvb2wgZmlsZUlzVHJhbnNsYXRhYmxlID0gdHJ1ZTsKKyAgICBpZiAoc3Ryc3RyKGluLT5nZXRQcmludGFibGVTb3VyY2UoKS5zdHJpbmcoKSwgImRvbm90dHJhbnNsYXRlIikgIT0gTlVMTCkgeworICAgICAgICBmaWxlSXNUcmFuc2xhdGFibGUgPSBmYWxzZTsKKyAgICB9CisKICAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8U3RyaW5nMTYsIHVpbnQzMl90PiBuZXh0UHVibGljSWQoMCk7CiAKICAgICBSZXNYTUxUcmVlOjpldmVudF9jb2RlX3QgY29kZTsKQEAgLTc1MSw2ICs3NTksNyBAQAogICAgICAgICAgICAgYm9vbCBjdXJJc0JhZ1JlcGxhY2VPbk92ZXJ3cml0ZSA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbCBjdXJJc1N0eWxlZCA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbCBjdXJJc1BzZXVkb2xvY2FsaXphYmxlID0gZmFsc2U7CisgICAgICAgICAgICBib29sIGN1cklzRm9ybWF0dGVkID0gZmlsZUlzVHJhbnNsYXRhYmxlOwogICAgICAgICAgICAgYm9vbCBsb2NhbEhhc0Vycm9ycyA9IGZhbHNlOwogCiAgICAgICAgICAgICBpZiAoc3RyY21wMTYoYmxvY2suZ2V0RWxlbWVudE5hbWUoJmxlbiksIHNraXAxNi5zdHJpbmcoKSkgPT0gMCkgewpAQCAtMTEzNiw2ICsxMTQ1LDcgQEAKICAgICAgICAgICAgICAgICBTdHJpbmc4IGxvY2FsZShyYXdMb2NhbGUpOwogICAgICAgICAgICAgICAgIFN0cmluZzE2IG5hbWU7CiAgICAgICAgICAgICAgICAgU3RyaW5nMTYgdHJhbnNsYXRhYmxlOworICAgICAgICAgICAgICAgIFN0cmluZzE2IGZvcm1hdHRlZDsKIAogICAgICAgICAgICAgICAgIHNpemVfdCBuID0gYmxvY2suZ2V0QXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47IGkrKykgewpAQCAtMTE0NSwxMSArMTE1NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zZXRUbyhibG9jay5nZXRBdHRyaWJ1dGVTdHJpbmdWYWx1ZShpLCAmbGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wMTYoYXR0ciwgdHJhbnNsYXRhYmxlMTYuc3RyaW5nKCkpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0YWJsZS5zZXRUbyhibG9jay5nZXRBdHRyaWJ1dGVTdHJpbmdWYWx1ZShpLCAmbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wMTYoYXR0ciwgZm9ybWF0dGVkMTYuc3RyaW5nKCkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZC5zZXRUbyhibG9jay5nZXRBdHRyaWJ1dGVTdHJpbmdWYWx1ZShpLCAmbGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG5hbWUuc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRhYmxlID09IGZhbHNlMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cklzRm9ybWF0dGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbnRyYW5zbGF0YWJsZSBzdHJpbmdzIG11c3Qgb25seSBleGlzdCBpbiB0aGUgZGVmYXVsdCBbZW1wdHldIGxvY2FsZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZS5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJhYXB0OiB3YXJuaW5nOiBzdHJpbmcgJyVzJyBpbiAlcyBtYXJrZWQgdW50cmFuc2xhdGFibGUgYnV0IGV4aXN0cyIKQEAgLTExNjcsNiArMTE4MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgb3V0VGFibGUtPmFkZExvY2FsaXphdGlvbihuYW1lLCBsb2NhbGUpOwogICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlZCA9PSBmYWxzZTE2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJJc0Zvcm1hdHRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgY3VyVGFnID0gJnN0cmluZzE2OwpAQCAtMTM1Niw3ICsxMzczLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmdldFBvc2l0aW9uKCZwYXJzZXJQb3NpdGlvbik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlQW5kQWRkQmFnKGJ1bmRsZSwgaW4sICZibG9jaywgY3VyUGFyYW1zLCBteVBhY2thZ2UsIGN1clR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50LCBwYXJlbnRJZGVudCwgaXRlbUlkZW50LCBjdXJGb3JtYXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudCwgcGFyZW50SWRlbnQsIGl0ZW1JZGVudCwgY3VyRm9ybWF0LCBjdXJJc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIG92ZXJ3cml0ZSwgb3V0VGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciA9PSBOT19FUlJPUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJJc1BzZXVkb2xvY2FsaXphYmxlICYmIGxvY2FsZUlzRGVmaW5lZChjdXJQYXJhbXMpCkBAIC0xMzY1LDggKzEzODIsOCBAQAogI2lmIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suc2V0UG9zaXRpb24ocGFyc2VyUG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBwYXJzZUFuZEFkZEJhZyhidW5kbGUsIGluLCAmYmxvY2ssIHBzZXVkb1BhcmFtcywgbXlQYWNrYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clR5cGUsIGlkZW50LCBwYXJlbnRJZGVudCwgaXRlbUlkZW50LCBjdXJGb3JtYXQsIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlLCBvdXRUYWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyVHlwZSwgaWRlbnQsIHBhcmVudElkZW50LCBpdGVtSWRlbnQsIGN1ckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJc0Zvcm1hdHRlZCwgdHJ1ZSwgb3ZlcndyaXRlLCBvdXRUYWJsZSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9IApAQCAtMTM4OSw3ICsxNDA2LDggQEAKICAgICAgICAgICAgICAgICBibG9jay5nZXRQb3NpdGlvbigmcGFyc2VyUG9zaXRpb24pOwogCiAgICAgICAgICAgICAgICAgZXJyID0gcGFyc2VBbmRBZGRFbnRyeShidW5kbGUsIGluLCAmYmxvY2ssIGN1clBhcmFtcywgbXlQYWNrYWdlLCBjdXJUeXBlLCBpZGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICpjdXJUYWcsIGN1cklzU3R5bGVkLCBjdXJGb3JtYXQsIGZhbHNlLCBvdmVyd3JpdGUsIG91dFRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpjdXJUYWcsIGN1cklzU3R5bGVkLCBjdXJGb3JtYXQsIGN1cklzRm9ybWF0dGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIG92ZXJ3cml0ZSwgb3V0VGFibGUpOwogCiAgICAgICAgICAgICAgICAgaWYgKGVyciA8IE5PX0VSUk9SKSB7IC8vIFdoeSBlcnIgPCBOT19FUlJPUiBpbnN0ZWFkIG9mIGVyciAhPSBOT19FUlJPUj8KICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gbG9jYWxIYXNFcnJvcnMgPSB0cnVlOwpAQCAtMTQwMCw3ICsxNDE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBzZXVkb2xvY2FsaXplIGhlcmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnNldFBvc2l0aW9uKHBhcnNlclBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlQW5kQWRkRW50cnkoYnVuZGxlLCBpbiwgJmJsb2NrLCBwc2V1ZG9QYXJhbXMsIG15UGFja2FnZSwgY3VyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQsICpjdXJUYWcsIGN1cklzU3R5bGVkLCBjdXJGb3JtYXQsIHRydWUsIG92ZXJ3cml0ZSwgb3V0VGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudCwgKmN1clRhZywgY3VySXNTdHlsZWQsIGN1ckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySXNGb3JtYXR0ZWQsIHRydWUsIG92ZXJ3cml0ZSwgb3V0VGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSBOT19FUlJPUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IGxvY2FsSGFzRXJyb3JzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2FhcHQvWE1MTm9kZS5jcHAgYi90b29scy9hYXB0L1hNTE5vZGUuY3BwCmluZGV4IDRjNTkyODguLjU3ZmY0N2EgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2FhcHQvWE1MTm9kZS5jcHAKKysrIGIvdG9vbHMvYWFwdC9YTUxOb2RlLmNwcApAQCAtNjgsMTIgKzY4LDExOCBAQAogICAgIHJldHVybiBTdHJpbmcxNihuYW1lc3BhY2VVcmksIG5hbWVzcGFjZVVyaS5zaXplKCktcHJlZml4U2l6ZSwgcHJlZml4U2l6ZSk7CiB9CiAKK3N0YXR1c190IGhhc1N1YnN0aXR1dGlvbkVycm9ycyhjb25zdCBjaGFyKiBmaWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNYTUxUcmVlKiBpblhtbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcxNiBzdHIxNikKK3sKKyAgICBjb25zdCBjaGFyMTZfdCogc3RyID0gc3RyMTYuc3RyaW5nKCk7CisgICAgY29uc3QgY2hhcjE2X3QqIHAgPSBzdHI7CisgICAgY29uc3QgY2hhcjE2X3QqIGVuZCA9IHN0ciArIHN0cjE2LnNpemUoKTsKKworICAgIGJvb2wgbm9ucG9zaXRpb25hbCA9IGZhbHNlOworICAgIGludCBhcmdDb3VudCA9IDA7CisKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICAvKgorICAgICAgICAgKiBMb29rIGZvciB0aGUgc3RhcnQgb2YgYSBKYXZhLXN0eWxlIHN1YnN0aXR1dGlvbiBzZXF1ZW5jZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICgqcCA9PSAnJScgJiYgcCArIDEgPCBlbmQpIHsKKyAgICAgICAgICAgIHArKzsKKworICAgICAgICAgICAgLy8gQSBsaXRlcmFsIHBlcmNlbnQgc2lnbiByZXByZXNlbnRlZCBieSAlJQorICAgICAgICAgICAgaWYgKCpwID09ICclJykgeworICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXJnQ291bnQrKzsKKworICAgICAgICAgICAgaWYgKCpwID49ICcwJyAmJiAqcCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICB9IHdoaWxlICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgIT0gJyQnKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBhIHNpemUgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgICAgICBub25wb3NpdGlvbmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpwID09ICc8JykgeworICAgICAgICAgICAgICAgIC8vIFJldXNpbmcgbGFzdCBhcmd1bWVudDsgYmFkIGlkZWEgc2luY2UgaXQgY2FuIGJlIHJlLWFycmFuZ2VkLgorICAgICAgICAgICAgICAgIG5vbnBvc2l0aW9uYWwgPSB0cnVlOworICAgICAgICAgICAgICAgIHArKzsKKworICAgICAgICAgICAgICAgIC8vIE9wdGlvbmFsbHkgJyQnIGNhbiBiZSBzcGVjaWZpZWQgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICBpZiAocCA8IGVuZCAmJiAqcCA9PSAnJCcpIHsKKyAgICAgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbm9ucG9zaXRpb25hbCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElnbm9yZSBmbGFncyBhbmQgd2lkdGhzCisgICAgICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAoKnAgPT0gJy0nIHx8CisgICAgICAgICAgICAgICAgICAgICpwID09ICcjJyB8fAorICAgICAgICAgICAgICAgICAgICAqcCA9PSAnKycgfHwKKyAgICAgICAgICAgICAgICAgICAgKnAgPT0gJyAnIHx8CisgICAgICAgICAgICAgICAgICAgICpwID09ICcsJyB8fAorICAgICAgICAgICAgICAgICAgICAqcCA9PSAnKCcgfHwKKyAgICAgICAgICAgICAgICAgICAgKCpwID49ICcwJyAmJiAqcCA8PSAnOScpKSkgeworICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBkZXRlY3Qgc3RyaW5ncyB0aGF0IGFyZSBnb2luZyB0byBUaW1lLmZvcm1hdCgpCisgICAgICAgICAgICAgKiBpbnN0ZWFkIG9mIFN0cmluZy5mb3JtYXQoKQorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIENvbXBhcmlzb24gb2YgU3RyaW5nLmZvcm1hdCgpIGFuZCBUaW1lLmZvcm1hdCgpIGFyZ3M6CisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogU3RyaW5nOiBBQkMgRSBHSCAgU1QgWCBhYmNkZWZnaCAgbm9zdCB4CisgICAgICAgICAgICAgKiAgIFRpbWU6ICAgIERFRkdIS01TIFcgWmEgIGQgICBoa20gIHMgdyB5egorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIFRoZXJlZm9yZSB3ZSBrbm93IGl0J3MgZGVmaW5pdGVseSBUaW1lIGlmIHdlIGhhdmU6CisgICAgICAgICAgICAgKiAgICAgREZLTVdaa213eXoKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHAgPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnRCc6CisgICAgICAgICAgICAgICAgY2FzZSAnRic6CisgICAgICAgICAgICAgICAgY2FzZSAnSyc6CisgICAgICAgICAgICAgICAgY2FzZSAnTSc6CisgICAgICAgICAgICAgICAgY2FzZSAnVyc6CisgICAgICAgICAgICAgICAgY2FzZSAnWic6CisgICAgICAgICAgICAgICAgY2FzZSAnayc6CisgICAgICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgY2FzZSAndyc6CisgICAgICAgICAgICAgICAgY2FzZSAneSc6CisgICAgICAgICAgICAgICAgY2FzZSAneic6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwKys7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBJZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgc3Vic3RpdHV0aW9uIGluIHRoaXMgc3RyaW5nIGFuZCBhbnkgb2YgdGhlbQorICAgICAqIGFyZSBub3QgaW4gcG9zaXRpb25hbCBmb3JtLCBnaXZlIHRoZSB1c2VyIGFuIGVycm9yLgorICAgICAqLworICAgIGlmIChhcmdDb3VudCA+IDEgJiYgbm9ucG9zaXRpb25hbCkgeworICAgICAgICBTb3VyY2VQb3MoU3RyaW5nOChmaWxlTmFtZSksIGluWG1sLT5nZXRMaW5lTnVtYmVyKCkpLmVycm9yKAorICAgICAgICAgICAgICAgICJNdWx0aXBsZSBzdWJzdGl0dXRpb25zIHNwZWNpZmllZCBpbiBub24tcG9zaXRpb25hbCBmb3JtYXQ7ICIKKyAgICAgICAgICAgICAgICAiZGlkIHlvdSBtZWFuIHRvIGFkZCB0aGUgZm9ybWF0dGVkPVwidHJ1ZVwiIGF0dHJpYnV0ZT9cbiIpOworICAgICAgICByZXR1cm4gTk9UX0VOT1VHSF9EQVRBOworICAgIH0KKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKwogc3RhdHVzX3QgcGFyc2VTdHlsZWRTdHJpbmcoQnVuZGxlKiBidW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc1hNTFRyZWUqIGluWG1sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nMTYmIGVuZFRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzE2KiBvdXRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nUG9vbDo6ZW50cnlfc3R5bGVfc3Bhbj4qIG91dFNwYW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHNldWRvbG9jYWxpemUpCiB7CiAgICAgVmVjdG9yPFN0cmluZ1Bvb2w6OmVudHJ5X3N0eWxlX3NwYW4+IHNwYW5TdGFjazsKQEAgLTEwMSw3ICsyMDcsMTEgQEAKICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwc2V1ZG8gPSBwc2V1ZG9sb2NhbGl6ZV9zdHJpbmcob3JpZyk7CiAgICAgICAgICAgICAgICAgY3VyU3RyaW5nLmFwcGVuZChTdHJpbmcxNihTdHJpbmc4KHBzZXVkby5jX3N0cigpKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjdXJTdHJpbmcuYXBwZW5kKHRleHQpOworICAgICAgICAgICAgICAgIGlmIChpc0Zvcm1hdHRlZCAmJiBoYXNTdWJzdGl0dXRpb25FcnJvcnMoZmlsZU5hbWUsIGluWG1sLCB0ZXh0KSAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjdXJTdHJpbmcuYXBwZW5kKHRleHQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IFJlc1hNTFRyZWU6OlNUQVJUX1RBRykgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nMTYgZWxlbWVudDE2KGluWG1sLT5nZXRFbGVtZW50TmFtZSgmbGVuKSk7CmRpZmYgLS1naXQgYS90b29scy9hYXB0L1hNTE5vZGUuaCBiL3Rvb2xzL2FhcHQvWE1MTm9kZS5oCmluZGV4IGU5YTI2M2IuLjA1NjI0YjcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2FhcHQvWE1MTm9kZS5oCisrKyBiL3Rvb2xzL2FhcHQvWE1MTm9kZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcxNiYgZW5kVGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nMTYqIG91dFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmdQb29sOjplbnRyeV9zdHlsZV9zcGFuPiogb3V0U3BhbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRm9ybWF0dGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1BzZXVkb2xvY2FsaXphYmxlKTsKIAogdm9pZCBwcmludFhNTEJsb2NrKFJlc1hNTFRyZWUqIGJsb2NrKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2FpZGwvYWlkbC5jcHAgYi90b29scy9haWRsL2FpZGwuY3BwCmluZGV4IGZjNjU4ZjUuLmYxN2Y2NmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2FpZGwvYWlkbC5jcHAKKysrIGIvdG9vbHMvYWlkbC9haWRsLmNwcApAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICAgICAgcHJpbnRmKCJwYXJjZWxhYmxlICVzICVzO1xuIiwgYi0+cGFja2FnZSwgYi0+bmFtZS5kYXRhKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHByaW50ZigiVU5LTk9XTiBkPTB4JTA4eCBkLT5pdGVtX3R5cGU9JWxkXG4iLCAobG9uZylkLCBkLT5pdGVtX3R5cGUpOworICAgICAgICAgICAgcHJpbnRmKCJVTktOT1dOIGQ9MHglMDhseCBkLT5pdGVtX3R5cGU9JWRcbiIsIChsb25nKWQsIGQtPml0ZW1fdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgZCA9IGQtPm5leHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGF5b3V0bGliL2JyaWRnZS9zcmMvY29tL2FuZHJvaWQvbGF5b3V0bGliL2JyaWRnZS9CcmlkZ2UuamF2YSBiL3Rvb2xzL2xheW91dGxpYi9icmlkZ2Uvc3JjL2NvbS9hbmRyb2lkL2xheW91dGxpYi9icmlkZ2UvQnJpZGdlLmphdmEKaW5kZXggNDIwMWU4MC4uZjkxZjYwMSAxMDA2NDQKLS0tIGEvdG9vbHMvbGF5b3V0bGliL2JyaWRnZS9zcmMvY29tL2FuZHJvaWQvbGF5b3V0bGliL2JyaWRnZS9CcmlkZ2UuamF2YQorKysgYi90b29scy9sYXlvdXRsaWIvYnJpZGdlL3NyYy9jb20vYW5kcm9pZC9sYXlvdXRsaWIvYnJpZGdlL0JyaWRnZS5qYXZhCkBAIC00Niw2ICs0Niw3IEBACiBpbXBvcnQgYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5UeXBlZFZhbHVlOwogaW1wb3J0IGFuZHJvaWQudmlldy5CcmlkZ2VJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSW5wdXRDaGFubmVsOwogaW1wb3J0IGFuZHJvaWQudmlldy5JV2luZG93OwogaW1wb3J0IGFuZHJvaWQudmlldy5JV2luZG93U2Vzc2lvbjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CkBAIC05OTAsMTMgKzk5MSwyMSBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIFdpbmRvd1Nlc3Npb24gaW1wbGVtZW50cyBJV2luZG93U2Vzc2lvbiB7CiAKICAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCi0gICAgICAgIHB1YmxpYyBpbnQgYWRkKElXaW5kb3cgYXJnMCwgTGF5b3V0UGFyYW1zIGFyZzEsIGludCBhcmcyLCBSZWN0IGFyZzMpCisgICAgICAgIHB1YmxpYyBpbnQgYWRkKElXaW5kb3cgYXJnMCwgTGF5b3V0UGFyYW1zIGFyZzEsIGludCBhcmcyLCBSZWN0IGFyZzMsCisgICAgICAgICAgICAgICAgSW5wdXRDaGFubmVsIG91dElucHV0Y2hhbm5lbCkKICAgICAgICAgICAgICAgICB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKICAgICAgICAgICAgIC8vIHBhc3MgZm9yIG5vdy4KICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKICAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyBpbnQgYWRkV2l0aG91dElucHV0Q2hhbm5lbChJV2luZG93IGFyZzAsIExheW91dFBhcmFtcyBhcmcxLCBpbnQgYXJnMiwgUmVjdCBhcmczKQorICAgICAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworICAgICAgICAgICAgLy8gcGFzcyBmb3Igbm93LgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQogICAgICAgICBwdWJsaWMgdm9pZCBmaW5pc2hEcmF3aW5nKElXaW5kb3cgYXJnMCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CiAgICAgICAgICAgICAvLyBwYXNzIGZvciBub3cuCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Zwbi9qYXZhL2FuZHJvaWQvbmV0L3Zwbi9WcG5NYW5hZ2VyLmphdmEgYi92cG4vamF2YS9hbmRyb2lkL25ldC92cG4vVnBuTWFuYWdlci5qYXZhCmluZGV4IGNlNTIyYzguLmNlNDBiNWQgMTAwNjQ0Ci0tLSBhL3Zwbi9qYXZhL2FuZHJvaWQvbmV0L3Zwbi9WcG5NYW5hZ2VyLmphdmEKKysrIGIvdnBuL2phdmEvYW5kcm9pZC9uZXQvdnBuL1Zwbk1hbmFnZXIuamF2YQpAQCAtODUsNyArODUsOCBAQAogCiAgICAgLy8gVE9ETyhvYW0pOiBUZXN0IFZQTiB3aGVuIEVGUyBpcyBlbmFibGVkICh3aWxsIGRvIGxhdGVyKS4uLgogICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFByb2ZpbGVQYXRoKCkgewotICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuZ2V0RGF0YURpcmVjdG9yeSgpLmdldFBhdGgoKSArIFBST0ZJTEVTX1BBVEg7CisgICAgICAgIC8vIFRoaXMgY2FsbCB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBwYXRoIGlmIEVuY3J5cHRlZCBGUyBpcyBlbmFibGVkIG9yIG5vdC4KKyAgICAgICAgcmV0dXJuIEVudmlyb25tZW50LmdldFNlY3VyZURhdGFEaXJlY3RvcnkoKS5nZXRQYXRoKCkgKyBQUk9GSUxFU19QQVRIOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvSVdpZmlNYW5hZ2VyLmFpZGwgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9JV2lmaU1hbmFnZXIuYWlkbAppbmRleCA1ZmQ0NGIxLi42ZTBiYzlkIDEwMDY0NAotLS0gYS93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9JV2lmaU1hbmFnZXIuYWlkbAorKysgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9JV2lmaU1hbmFnZXIuYWlkbApAQCAtODMsNSArODMsNyBAQAogICAgIGludCBnZXRXaWZpQXBFbmFibGVkU3RhdGUoKTsKIAogICAgIFdpZmlDb25maWd1cmF0aW9uIGdldFdpZmlBcENvbmZpZ3VyYXRpb24oKTsKKworICAgIHZvaWQgc2V0V2lmaUFwQ29uZmlndXJhdGlvbihpbiBXaWZpQ29uZmlndXJhdGlvbiB3aWZpQ29uZmlnKTsKIH0KIApkaWZmIC0tZ2l0IGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvV2lmaU1hbmFnZXIuamF2YSBiL3dpZmkvamF2YS9hbmRyb2lkL25ldC93aWZpL1dpZmlNYW5hZ2VyLmphdmEKaW5kZXggOTcwZDVmYy4uNGEyMmI2OCAxMDA2NDQKLS0tIGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvV2lmaU1hbmFnZXIuamF2YQorKysgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9XaWZpTWFuYWdlci5qYXZhCkBAIC04MjQsNiArODI0LDIxIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogU2V0cyB0aGUgV2ktRmkgQVAgQ29uZmlndXJhdGlvbi4KKyAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCwge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKKyAgICAgKgorICAgICAqIEBoaWRlIERvbnQgb3BlbiB5ZXQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBzZXRXaWZpQXBDb25maWd1cmF0aW9uKFdpZmlDb25maWd1cmF0aW9uIHdpZmlDb25maWcpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldFdpZmlBcENvbmZpZ3VyYXRpb24od2lmaUNvbmZpZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgogICAgICAqIEFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byBrZWVwIHRoZSBXaS1GaSByYWRpbyBhd2FrZS4KICAgICAgKiBOb3JtYWxseSB0aGUgV2ktRmkgcmFkaW8gbWF5IHR1cm4gb2ZmIHdoZW4gdGhlIHVzZXIgaGFzIG5vdCB1c2VkIHRoZSBkZXZpY2UgaW4gYSB3aGlsZS4KICAgICAgKiBBY3F1aXJpbmcgYSBXaWZpTG9jayB3aWxsIGtlZXAgdGhlIHJhZGlvIG9uIHVudGlsIHRoZSBsb2NrIGlzIHJlbGVhc2VkLiAgTXVsdGlwbGUgCmRpZmYgLS1naXQgYS93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9XaWZpU3RhdGVUcmFja2VyLmphdmEgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9XaWZpU3RhdGVUcmFja2VyLmphdmEKaW5kZXggMzgxMzAxNS4uOGIyY2ZjNiAxMDA2NDQKLS0tIGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvV2lmaVN0YXRlVHJhY2tlci5qYXZhCisrKyBiL3dpZmkvamF2YS9hbmRyb2lkL25ldC93aWZpL1dpZmlTdGF0ZVRyYWNrZXIuamF2YQpAQCAtMTQ4MywxOCArMTQ4MywxOSBAQAogICAgICAqIGRpc2Nvbm5lY3Qgb3Igc3RvcCBjb21tYW5kIHdhcyBpbml0aWF0ZWQuCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIGRpc2Nvbm5lY3RBbmRTdG9wKCkgeworICAgICAgICBib29sZWFuIHJldCA9IHRydWU7OwogICAgICAgICBpZiAobVJ1blN0YXRlICE9IFJVTl9TVEFURV9TVE9QUElORyAmJiBtUnVuU3RhdGUgIT0gUlVOX1NUQVRFX1NUT1BQRUQpIHsKICAgICAgICAgICAgIC8vIFRha2UgZG93biBhbnkgb3BlbiBuZXR3b3JrIG5vdGlmaWNhdGlvbnMKICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvblZpc2libGUoZmFsc2UsIDAsIGZhbHNlLCAwKTsKIAotICAgICAgICAgICAgbVJ1blN0YXRlID0gUlVOX1NUQVRFX1NUT1BQSU5HOwogICAgICAgICAgICAgaWYgKG1XaWZpSW5mby5nZXRTdXBwbGljYW50U3RhdGUoKSA9PSBTdXBwbGljYW50U3RhdGUuRE9STUFOVCkgewotICAgICAgICAgICAgICAgIHJldHVybiBzdG9wRHJpdmVyKCk7CisgICAgICAgICAgICAgICAgcmV0ID0gc3RvcERyaXZlcigpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZGlzY29ubmVjdCgpOworICAgICAgICAgICAgICAgIHJldCA9IGRpc2Nvbm5lY3QoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1SdW5TdGF0ZSA9IFJVTl9TVEFURV9TVE9QUElORzsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAKICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gcmVzdGFydCgpIHsKQEAgLTE2MDUsNyArMTYwNiw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc2Nhbihib29sZWFuIGZvcmNlQWN0aXZlKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuc2NhbkNvbW1hbmQoZm9yY2VBY3RpdmUpOwpAQCAtMTYyMSw3ICsxNjIyLDcgQEAKICAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLCB7QGNvZGUgZmFsc2V9IG90aGVyd2lzZQogICAgICAqLwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBzZXRTY2FuUmVzdWx0SGFuZGxpbmcoaW50IG1vZGUpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5zZXRTY2FuUmVzdWx0SGFuZGxpbmdDb21tYW5kKG1vZGUpOwpAQCAtMTYzNSw3ICsxNjM2LDcgQEAKICAgICAgKiAwMDpiYjpjYzpkZDpjYzpmZiAgICAgICAyNDEyICAgIDE2NSAgICAgW1dQQS1FQVAtVEtJUF1bV1BBMi1FQVAtQ0NNUF0gICBOZXQyCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBTdHJpbmcgc2NhblJlc3VsdHMoKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5zY2FuUmVzdWx0c0NvbW1hbmQoKTsKQEAgLTE2NDcsNyArMTY0OCw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc2V0U2Nhbk1vZGUoYm9vbGVhbiBpc1NjYW5Nb2RlQWN0aXZlKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1Jc1NjYW5Nb2RlQWN0aXZlICE9IGlzU2Nhbk1vZGVBY3RpdmUpIHsKQEAgLTE2NjIsNyArMTY2Myw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gZGlzY29ubmVjdCgpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5kaXNjb25uZWN0Q29tbWFuZCgpOwpAQCAtMTY3NCw3ICsxNjc1LDcgQEAKICAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLCB7QGNvZGUgZmFsc2V9IG90aGVyd2lzZQogICAgICAqLwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiByZWNvbm5lY3RDb21tYW5kKCkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBXaWZpTmF0aXZlLnJlY29ubmVjdENvbW1hbmQoKTsKQEAgLTE3MzgsNyArMTczOSw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gcmVhc3NvY2lhdGUoKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUucmVhc3NvY2lhdGVDb21tYW5kKCk7CkBAIC0xODM3LDcgKzE4MzgsNyBAQAogICAgICAqIEByZXR1cm4gUlNTSSB2YWx1ZSwgLTEgb24gZmFpbHVyZQogICAgICAqLwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGdldFJzc2koKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuZ2V0UnNzaUFwcHJveENvbW1hbmQoKTsKQEAgLTE4NDksNyArMTg1MCw3IEBACiAgICAgICogQHJldHVybiBSU1NJIHZhbHVlLCAtMSBvbiBmYWlsdXJlCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgZ2V0UnNzaUFwcHJveCgpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5nZXRSc3NpQXBwcm94Q29tbWFuZCgpOwpAQCAtMTg2MSw3ICsxODYyLDcgQEAKICAgICAgKiBAcmV0dXJuIGxpbmsgc3BlZWQsIC0xIG9uIGZhaWx1cmUKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBnZXRMaW5rU3BlZWQoKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuZ2V0TGlua1NwZWVkQ29tbWFuZCgpOwpAQCAtMTg3Myw3ICsxODc0LDcgQEAKICAgICAgKiBAcmV0dXJuIE1BQyBhZGRyZXNzLCBudWxsIG9uIGZhaWx1cmUKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIFN0cmluZyBnZXRNYWNBZGRyZXNzKCkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuZ2V0TWFjQWRkcmVzc0NvbW1hbmQoKTsKQEAgLTE4OTcsNyArMTg5OCw5IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc3RvcERyaXZlcigpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEKSB7CisgICAgICAgIC8qIERyaXZlciBzdG9wIHNob3VsZCBub3QgaGFwcGVuIG9ubHkgd2hlbiBzdXBwbGljYW50IGV2ZW50CisgICAgICAgICAqIERSSVZFUl9TVE9QUEVEIGhhcyBhbHJlYWR5IGJlZW4gaGFuZGxlZCAqLworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgbVJ1blN0YXRlID09IFJVTl9TVEFURV9TVE9QUEVEKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuc3RvcERyaXZlckNvbW1hbmQoKTsKQEAgLTE5MDksNyArMTkxMiw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc3RhcnRQYWNrZXRGaWx0ZXJpbmcoKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuc3RhcnRQYWNrZXRGaWx0ZXJpbmcoKTsKQEAgLTE5MjEsNyArMTkyNCw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc3RvcFBhY2tldEZpbHRlcmluZygpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5zdG9wUGFja2V0RmlsdGVyaW5nKCk7CkBAIC0xOTM1LDcgKzE5MzgsNyBAQAogICAgICAqIEByZXR1cm4ge0Bjb2RlIHRydWV9IGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMsIHtAY29kZSBmYWxzZX0gb3RoZXJ3aXNlCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIHNldFBvd2VyTW9kZShpbnQgbW9kZSkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBXaWZpTmF0aXZlLnNldFBvd2VyTW9kZUNvbW1hbmQobW9kZSk7CkBAIC0xOTQ4LDcgKzE5NTEsNyBAQAogICAgICAqIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgaW52YWxpZC4KICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc2V0TnVtQWxsb3dlZENoYW5uZWxzKCkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHRyeSB7CkBAIC0xOTczLDcgKzE5NzYsNyBAQAogICAgICAqIHtAY29kZSBudW1DaGFubmVsc30gaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UuCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIHNldE51bUFsbG93ZWRDaGFubmVscyhpbnQgbnVtQ2hhbm5lbHMpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBtTnVtQWxsb3dlZENoYW5uZWxzID0gbnVtQ2hhbm5lbHM7CkBAIC0xOTg2LDcgKzE5ODksNyBAQAogICAgICAqIEByZXR1cm4gY2hhbm5lbCBjb3VudCwgLTEgb24gZmFpbHVyZQogICAgICAqLwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGdldE51bUFsbG93ZWRDaGFubmVscygpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5nZXROdW1BbGxvd2VkQ2hhbm5lbHNDb21tYW5kKCk7CkBAIC0yMDAyLDcgKzIwMDUsNyBAQAogICAgICAqIEByZXR1cm4ge0Bjb2RlIHRydWV9IGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMsIHtAY29kZSBmYWxzZX0gb3RoZXJ3aXNlCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIHNldEJsdWV0b290aENvZXhpc3RlbmNlTW9kZShpbnQgbW9kZSkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBXaWZpTmF0aXZlLnNldEJsdWV0b290aENvZXhpc3RlbmNlTW9kZUNvbW1hbmQobW9kZSk7CkBAIC0yMDE2LDcgKzIwMTksNyBAQAogICAgICAqIEBwYXJhbSBpc0JsdWV0b290aFBsYXlpbmcgd2hldGhlciB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIG1vZGUKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0Qmx1ZXRvb3RoU2Nhbk1vZGUoYm9vbGVhbiBpc0JsdWV0b290aFBsYXlpbmcpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBXaWZpTmF0aXZlLnNldEJsdWV0b290aENvZXhpc3RlbmNlU2Nhbk1vZGVDb21tYW5kKGlzQmx1ZXRvb3RoUGxheWluZyk7CkBAIC0yMzIzLDcgKzIzMjYsNyBAQAogICAgICAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdG8gZGlzYWJsZSBjb2V4aXN0ZW5jZSBtb2RlLgogICAgICAgICAgKi8KICAgICAgICAgcHJpdmF0ZSBib29sZWFuIHNob3VsZERpc2FibGVDb2V4aXN0ZW5jZU1vZGUoKSB7Ci0gICAgICAgICAgICBpbnQgc3RhdGUgPSBtQmx1ZXRvb3RoSGVhZHNldC5nZXRTdGF0ZSgpOworICAgICAgICAgICAgaW50IHN0YXRlID0gbUJsdWV0b290aEhlYWRzZXQuZ2V0U3RhdGUobUJsdWV0b290aEhlYWRzZXQuZ2V0Q3VycmVudEhlYWRzZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGUgPT0gQmx1ZXRvb3RoSGVhZHNldC5TVEFURV9ESVNDT05ORUNURUQ7CiAgICAgICAgIH0KICAgICB9Cg==